zend_optimize_cfg:
 1703|      1|{
 1704|      1|	zend_cfg cfg;
 1705|      1|	zend_basic_block *blocks, *end, *b;
 1706|      1|	int pass;
 1707|      1|	uint32_t bitset_len;
 1708|      1|	zend_bitset usage;
 1709|      1|	void *checkpoint;
 1710|      1|	zend_op **Tsource;
 1711|      1|	uint32_t opt_count;
 1712|      1|	int *jmp_hitlist;
 1713|       |
 1714|       |    /* Build CFG */
 1715|      1|	checkpoint = zend_arena_checkpoint(ctx->arena);
 1716|      1|	zend_build_cfg(&ctx->arena, op_array, 0, &cfg);
 1717|       |
 1718|      1|	if (cfg.blocks_count * (op_array->last_var + op_array->T) > 64 * 1024 * 1024) {
  ------------------
  |  Branch (1718:6): [True: 0, False: 1]
  ------------------
 1719|      0|		zend_arena_release(&ctx->arena, checkpoint);
 1720|      0|		return;
 1721|      0|	}
 1722|       |
 1723|      1|	if (ctx->debug_level & ZEND_DUMP_BEFORE_BLOCK_PASS) {
  ------------------
  |  |   70|      1|#define ZEND_DUMP_BEFORE_BLOCK_PASS (1<<18)
  ------------------
  |  Branch (1723:6): [True: 0, False: 1]
  ------------------
 1724|      0|		zend_dump_op_array(op_array, ZEND_DUMP_CFG, "before block pass", &cfg);
  ------------------
  |  |   27|      0|#define ZEND_DUMP_CFG                  (1<<2)
  ------------------
 1725|      0|	}
 1726|       |
 1727|      1|	bitset_len = zend_bitset_len(op_array->last_var + op_array->T);
 1728|      1|	Tsource = zend_arena_calloc(&ctx->arena, op_array->last_var + op_array->T, sizeof(zend_op *));
 1729|      1|	usage = zend_arena_alloc(&ctx->arena, bitset_len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
 1730|      1|	jmp_hitlist = zend_arena_alloc(&ctx->arena, cfg.blocks_count * sizeof(int));
 1731|       |
 1732|      1|	blocks = cfg.blocks;
 1733|      1|	end = blocks + cfg.blocks_count;
 1734|      1|	for (pass = 0; pass < PASSES; pass++) {
  ------------------
  |  | 1700|      1|#define PASSES 3
  ------------------
  |  Branch (1734:17): [True: 1, False: 0]
  ------------------
 1735|      1|		opt_count = 0;
 1736|       |
 1737|       |		/* Compute data dependencies */
 1738|      1|		zend_bitset_clear(usage, bitset_len);
 1739|      1|		zend_t_usage(&cfg, op_array, usage, ctx);
 1740|       |
 1741|       |		/* optimize each basic block separately */
 1742|      2|		for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (1742:20): [True: 1, False: 1]
  ------------------
 1743|      1|			if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1743:8): [True: 0, False: 1]
  ------------------
 1744|      0|				continue;
 1745|      0|			}
 1746|       |			/* we track data dependencies only inside a single basic block */
 1747|      1|			if (!(b->flags & ZEND_BB_FOLLOW) ||
  ------------------
  |  |   22|      1|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  |  Branch (1747:8): [True: 1, False: 0]
  ------------------
 1748|      1|			    (b->flags & ZEND_BB_TARGET)) {
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
  |  Branch (1748:8): [True: 0, False: 0]
  ------------------
 1749|       |				/* Skip continuation of "extended" BB */
 1750|      1|				memset(Tsource, 0, (op_array->last_var + op_array->T) * sizeof(zend_op *));
 1751|      1|			}
 1752|      1|			zend_optimize_block(b, op_array, usage, &cfg, Tsource, &opt_count);
 1753|      1|		}
 1754|       |
 1755|       |		/* Eliminate NOPs */
 1756|      2|		for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (1756:20): [True: 1, False: 1]
  ------------------
 1757|      1|			if (b->flags & ZEND_BB_UNREACHABLE_FREE) {
  ------------------
  |  |   30|      1|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  |  Branch (1757:8): [True: 0, False: 1]
  ------------------
 1758|       |				/* In unreachable_free blocks only preserve loop var frees. */
 1759|      0|				for (uint32_t i = b->start; i < b->start + b->len; i++) {
  ------------------
  |  Branch (1759:33): [True: 0, False: 0]
  ------------------
 1760|      0|					zend_op *opline = &op_array->opcodes[i];
 1761|      0|					if (!zend_optimizer_is_loop_var_free(opline)) {
  ------------------
  |  Branch (1761:10): [True: 0, False: 0]
  ------------------
 1762|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1763|      0|					}
 1764|      0|				}
 1765|      0|			}
 1766|      1|			if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
              			if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   30|      1|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  |  Branch (1766:8): [True: 1, False: 0]
  ------------------
 1767|      1|				strip_nops(op_array, b);
 1768|      1|			}
 1769|      1|		}
 1770|       |
 1771|      1|		opt_count = 0;
 1772|       |
 1773|       |		/* Jump optimization for each block */
 1774|      2|		for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (1774:20): [True: 1, False: 1]
  ------------------
 1775|      1|			if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1775:8): [True: 1, False: 0]
  ------------------
 1776|      1|				zend_jmp_optimization(b, op_array, &cfg, jmp_hitlist, &opt_count);
 1777|      1|			}
 1778|      1|		}
 1779|       |
 1780|       |		/* Eliminate unreachable basic blocks */
 1781|      1|		zend_cfg_remark_reachable_blocks(op_array, &cfg);
 1782|       |
 1783|       |		/* Merge Blocks */
 1784|      1|		zend_merge_blocks(op_array, &cfg, &opt_count);
 1785|       |
 1786|      1|		if (opt_count == 0) {
  ------------------
  |  Branch (1786:7): [True: 1, False: 0]
  ------------------
 1787|      1|			break;
 1788|      1|		}
 1789|      1|	}
 1790|       |
 1791|      1|	assemble_code_blocks(&cfg, op_array, ctx);
 1792|       |
 1793|      1|	if (ctx->debug_level & ZEND_DUMP_AFTER_BLOCK_PASS) {
  ------------------
  |  |   71|      1|#define ZEND_DUMP_AFTER_BLOCK_PASS  (1<<19)
  ------------------
  |  Branch (1793:6): [True: 0, False: 1]
  ------------------
 1794|      0|		zend_dump_op_array(op_array, ZEND_DUMP_CFG | ZEND_DUMP_HIDE_UNREACHABLE, "after block pass", &cfg);
  ------------------
  |  |   27|      0|#define ZEND_DUMP_CFG                  (1<<2)
  ------------------
              		zend_dump_op_array(op_array, ZEND_DUMP_CFG | ZEND_DUMP_HIDE_UNREACHABLE, "after block pass", &cfg);
  ------------------
  |  |   25|      0|#define ZEND_DUMP_HIDE_UNREACHABLE     (1<<0)
  ------------------
 1795|      0|	}
 1796|       |
 1797|       |	/* Destroy CFG */
 1798|      1|	zend_arena_release(&ctx->arena, checkpoint);
 1799|      1|}
block_pass.c:zend_t_usage:
 1440|      1|{
 1441|      1|	uint32_t n;
 1442|      1|	zend_basic_block *block, *next_block;
 1443|      1|	uint32_t var_num;
 1444|      1|	uint32_t bitset_len;
 1445|      1|	zend_bitset usage;
 1446|      1|	zend_bitset defined_here;
 1447|      1|	void *checkpoint;
 1448|      1|	zend_op *opline, *end;
 1449|       |
 1450|       |
 1451|      1|	if (op_array->T == 0) {
  ------------------
  |  Branch (1451:6): [True: 1, False: 0]
  ------------------
 1452|       |		/* shortcut - if no Ts, nothing to do */
 1453|      1|		return;
 1454|      1|	}
 1455|       |
 1456|      0|	checkpoint = zend_arena_checkpoint(ctx->arena);
 1457|      0|	bitset_len = zend_bitset_len(op_array->last_var + op_array->T);
 1458|      0|	defined_here = zend_arena_alloc(&ctx->arena, bitset_len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
 1459|       |
 1460|      0|	zend_bitset_clear(defined_here, bitset_len);
 1461|      0|	for (n = 1; n < cfg->blocks_count; n++) {
  ------------------
  |  Branch (1461:14): [True: 0, False: 0]
  ------------------
 1462|      0|		block = cfg->blocks + n;
 1463|       |
 1464|      0|		if (!(block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1464:7): [True: 0, False: 0]
  ------------------
 1465|      0|			continue;
 1466|      0|		}
 1467|       |
 1468|      0|		opline = op_array->opcodes + block->start;
 1469|      0|		end = opline + block->len;
 1470|      0|		if (!(block->flags & ZEND_BB_FOLLOW) ||
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  |  Branch (1470:7): [True: 0, False: 0]
  ------------------
 1471|      0|		    (block->flags & ZEND_BB_TARGET)) {
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
  |  Branch (1471:7): [True: 0, False: 0]
  ------------------
 1472|       |			/* Skip continuation of "extended" BB */
 1473|      0|			zend_bitset_clear(defined_here, bitset_len);
 1474|      0|		}
 1475|       |
 1476|      0|		while (opline<end) {
  ------------------
  |  Branch (1476:10): [True: 0, False: 0]
  ------------------
 1477|      0|			if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1477:8): [True: 0, False: 0]
  ------------------
 1478|      0|				var_num = VAR_NUM(opline->op1.var);
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1479|      0|				if (!zend_bitset_in(defined_here, var_num)) {
  ------------------
  |  Branch (1479:9): [True: 0, False: 0]
  ------------------
 1480|      0|					zend_bitset_incl(used_ext, var_num);
 1481|      0|				}
 1482|      0|			}
 1483|      0|			if (opline->op2_type == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (1483:8): [True: 0, False: 0]
  ------------------
 1484|      0|				var_num = VAR_NUM(opline->op2.var);
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1485|      0|				if (opline->opcode == ZEND_FE_FETCH_R ||
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (1485:9): [True: 0, False: 0]
  ------------------
 1486|      0|				    opline->opcode == ZEND_FE_FETCH_RW) {
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (1486:9): [True: 0, False: 0]
  ------------------
 1487|       |					/* these opcode use the op2 as result */
 1488|      0|					zend_bitset_incl(defined_here, var_num);
 1489|      0|				} else if (!zend_bitset_in(defined_here, var_num)) {
  ------------------
  |  Branch (1489:16): [True: 0, False: 0]
  ------------------
 1490|      0|					zend_bitset_incl(used_ext, var_num);
 1491|      0|				}
 1492|      0|			} else if (opline->op2_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1492:15): [True: 0, False: 0]
  ------------------
 1493|      0|				var_num = VAR_NUM(opline->op2.var);
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1494|      0|				if (!zend_bitset_in(defined_here, var_num)) {
  ------------------
  |  Branch (1494:9): [True: 0, False: 0]
  ------------------
 1495|      0|					zend_bitset_incl(used_ext, var_num);
 1496|      0|				}
 1497|      0|			}
 1498|       |
 1499|      0|			if (opline->result_type == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (1499:8): [True: 0, False: 0]
  ------------------
 1500|      0|				var_num = VAR_NUM(opline->result.var);
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1501|      0|				zend_bitset_incl(defined_here, var_num);
 1502|      0|			} else if (opline->result_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1502:15): [True: 0, False: 0]
  ------------------
 1503|      0|				var_num = VAR_NUM(opline->result.var);
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1504|      0|				switch (opline->opcode) {
 1505|      0|					case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (1505:6): [True: 0, False: 0]
  ------------------
 1506|      0|					case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (1506:6): [True: 0, False: 0]
  ------------------
 1507|      0|					case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      0|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (1507:6): [True: 0, False: 0]
  ------------------
 1508|       |						/* these opcodes use the result as argument */
 1509|      0|						if (!zend_bitset_in(defined_here, var_num)) {
  ------------------
  |  Branch (1509:11): [True: 0, False: 0]
  ------------------
 1510|      0|							zend_bitset_incl(used_ext, var_num);
 1511|      0|						}
 1512|      0|						break;
 1513|      0|					default :
  ------------------
  |  Branch (1513:6): [True: 0, False: 0]
  ------------------
 1514|      0|						zend_bitset_incl(defined_here, var_num);
 1515|      0|				}
 1516|      0|			}
 1517|      0|			opline++;
 1518|      0|		}
 1519|      0|	}
 1520|       |
 1521|      0|	if (ctx->debug_level & ZEND_DUMP_BLOCK_PASS_VARS) {
  ------------------
  |  |   72|      0|#define ZEND_DUMP_BLOCK_PASS_VARS   (1<<20)
  ------------------
  |  Branch (1521:6): [True: 0, False: 0]
  ------------------
 1522|      0|		bool printed = false;
 1523|      0|		uint32_t i;
 1524|       |
 1525|      0|		for (i = op_array->last_var; i< op_array->T; i++) {
  ------------------
  |  Branch (1525:32): [True: 0, False: 0]
  ------------------
 1526|      0|			if (zend_bitset_in(used_ext, i)) {
  ------------------
  |  Branch (1526:8): [True: 0, False: 0]
  ------------------
 1527|      0|				if (!printed) {
  ------------------
  |  Branch (1527:9): [True: 0, False: 0]
  ------------------
 1528|      0|					fprintf(stderr, "NON-LOCAL-VARS: %d", i);
 1529|      0|					printed = true;
 1530|      0|				} else {
 1531|      0|					fprintf(stderr, ", %d", i);
 1532|      0|				}
 1533|      0|			}
 1534|      0|		}
 1535|      0|		if (printed) {
  ------------------
  |  Branch (1535:7): [True: 0, False: 0]
  ------------------
 1536|      0|			fprintf(stderr, "\n");
 1537|      0|		}
 1538|      0|	}
 1539|       |
 1540|      0|	usage = defined_here;
 1541|      0|	next_block = NULL;
 1542|      0|	for (n = cfg->blocks_count; n > 0;) {
  ------------------
  |  Branch (1542:30): [True: 0, False: 0]
  ------------------
 1543|      0|		block = cfg->blocks + (--n);
 1544|       |
 1545|      0|		if (!(block->flags & ZEND_BB_REACHABLE) || block->len == 0) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1545:7): [True: 0, False: 0]
  |  Branch (1545:46): [True: 0, False: 0]
  ------------------
 1546|      0|			continue;
 1547|      0|		}
 1548|       |
 1549|      0|		end = op_array->opcodes + block->start;
 1550|      0|		opline = end + block->len - 1;
 1551|      0|		if (!next_block ||
  ------------------
  |  Branch (1551:7): [True: 0, False: 0]
  ------------------
 1552|      0|		    !(next_block->flags & ZEND_BB_FOLLOW) ||
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  |  Branch (1552:7): [True: 0, False: 0]
  ------------------
 1553|      0|		    (next_block->flags & ZEND_BB_TARGET)) {
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
  |  Branch (1553:7): [True: 0, False: 0]
  ------------------
 1554|       |			/* Skip continuation of "extended" BB */
 1555|      0|			zend_bitset_copy(usage, used_ext, bitset_len);
 1556|      0|		} else if (block->successors_count > 1) {
  ------------------
  |  Branch (1556:14): [True: 0, False: 0]
  ------------------
 1557|      0|			zend_bitset_union(usage, used_ext, bitset_len);
 1558|      0|		}
 1559|      0|		next_block = block;
 1560|       |
 1561|      0|		while (opline >= end) {
  ------------------
  |  Branch (1561:10): [True: 0, False: 0]
  ------------------
 1562|       |			/* usage checks */
 1563|      0|			if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1563:8): [True: 0, False: 0]
  ------------------
 1564|      0|				if (!zend_bitset_in(usage, VAR_NUM(opline->result.var))) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1564:9): [True: 0, False: 0]
  ------------------
 1565|      0|					switch (opline->opcode) {
  ------------------
  |  Branch (1565:14): [True: 0, False: 0]
  ------------------
 1566|      0|						case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1566:7): [True: 0, False: 0]
  ------------------
 1567|      0|						case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (1567:7): [True: 0, False: 0]
  ------------------
 1568|      0|						case ZEND_ASSIGN_OBJ_OP:
  ------------------
  |  |  152|      0|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (1568:7): [True: 0, False: 0]
  ------------------
 1569|      0|						case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|      0|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (1569:7): [True: 0, False: 0]
  ------------------
 1570|      0|						case ZEND_PRE_INC:
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (1570:7): [True: 0, False: 0]
  ------------------
 1571|      0|						case ZEND_PRE_DEC:
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (1571:7): [True: 0, False: 0]
  ------------------
 1572|      0|						case ZEND_ASSIGN:
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (1572:7): [True: 0, False: 0]
  ------------------
 1573|      0|						case ZEND_ASSIGN_REF:
  ------------------
  |  |  154|      0|#define ZEND_ASSIGN_REF                      30
  ------------------
  |  Branch (1573:7): [True: 0, False: 0]
  ------------------
 1574|      0|						case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (1574:7): [True: 0, False: 0]
  ------------------
 1575|      0|						case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (1575:7): [True: 0, False: 0]
  ------------------
 1576|      0|						case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (1576:7): [True: 0, False: 0]
  ------------------
 1577|      0|						case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (1577:7): [True: 0, False: 0]
  ------------------
 1578|      0|							opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 1579|      0|							break;
 1580|      0|						case ZEND_POST_INC:
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (1580:7): [True: 0, False: 0]
  ------------------
 1581|      0|						case ZEND_POST_DEC:
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (1581:7): [True: 0, False: 0]
  ------------------
 1582|      0|						case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      0|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (1582:7): [True: 0, False: 0]
  ------------------
 1583|      0|						case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      0|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (1583:7): [True: 0, False: 0]
  ------------------
 1584|      0|						case ZEND_POST_INC_STATIC_PROP:
  ------------------
  |  |  164|      0|#define ZEND_POST_INC_STATIC_PROP            40
  ------------------
  |  Branch (1584:7): [True: 0, False: 0]
  ------------------
 1585|      0|						case ZEND_POST_DEC_STATIC_PROP:
  ------------------
  |  |  165|      0|#define ZEND_POST_DEC_STATIC_PROP            41
  ------------------
  |  Branch (1585:7): [True: 0, False: 0]
  ------------------
 1586|      0|							opline->opcode -= 2;
 1587|      0|							opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 1588|      0|							break;
 1589|      0|						case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (1589:7): [True: 0, False: 0]
  ------------------
 1590|      0|						case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (1590:7): [True: 0, False: 0]
  ------------------
 1591|      0|						case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (1591:7): [True: 0, False: 0]
  ------------------
 1592|      0|							zend_optimizer_convert_to_free_op1(op_array, opline);
 1593|      0|							break;
 1594|      0|						case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (1594:7): [True: 0, False: 0]
  ------------------
 1595|      0|						case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (1595:7): [True: 0, False: 0]
  ------------------
 1596|      0|							opline->opcode -= 3;
 1597|      0|							SET_UNUSED(opline->result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1598|      0|							break;
 1599|      0|						case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (1599:7): [True: 0, False: 0]
  ------------------
 1600|      0|						case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (1600:7): [True: 0, False: 0]
  ------------------
 1601|      0|						case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      0|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (1601:7): [True: 0, False: 0]
  ------------------
 1602|      0|							zend_bitset_incl(usage, VAR_NUM(opline->result.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1603|      0|							break;
 1604|      0|					}
 1605|      0|				} else {
 1606|      0|					switch (opline->opcode) {
 1607|      0|						case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (1607:7): [True: 0, False: 0]
  ------------------
 1608|      0|						case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (1608:7): [True: 0, False: 0]
  ------------------
 1609|      0|						case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      0|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (1609:7): [True: 0, False: 0]
  ------------------
 1610|      0|							break;
 1611|      0|						default:
  ------------------
  |  Branch (1611:7): [True: 0, False: 0]
  ------------------
 1612|      0|							zend_bitset_excl(usage, VAR_NUM(opline->result.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1613|      0|							break;
 1614|      0|					}
 1615|      0|				}
 1616|      0|			}
 1617|       |
 1618|      0|			if (opline->op2_type == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (1618:8): [True: 0, False: 0]
  ------------------
 1619|      0|				switch (opline->opcode) {
 1620|      0|					case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (1620:6): [True: 0, False: 0]
  ------------------
 1621|      0|					case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (1621:6): [True: 0, False: 0]
  ------------------
 1622|      0|						zend_bitset_excl(usage, VAR_NUM(opline->op2.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1623|      0|						break;
 1624|      0|					default:
  ------------------
  |  Branch (1624:6): [True: 0, False: 0]
  ------------------
 1625|      0|						zend_bitset_incl(usage, VAR_NUM(opline->op2.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1626|      0|						break;
 1627|      0|				}
 1628|      0|			} else if (opline->op2_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1628:15): [True: 0, False: 0]
  ------------------
 1629|      0|				zend_bitset_incl(usage, VAR_NUM(opline->op2.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1630|      0|			}
 1631|       |
 1632|      0|			if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1632:8): [True: 0, False: 0]
  ------------------
 1633|      0|				zend_bitset_incl(usage, VAR_NUM(opline->op1.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1634|      0|			}
 1635|       |
 1636|      0|			opline--;
 1637|      0|		}
 1638|      0|	}
 1639|       |
 1640|      0|	zend_arena_release(&ctx->arena, checkpoint);
 1641|      0|}
block_pass.c:zend_optimize_block:
  133|      1|{
  134|      1|	zend_op *opline, *src;
  135|      1|	zend_op *end, *last_op = NULL;
  136|       |
  137|      1|	if (block->len == 0) {
  ------------------
  |  Branch (137:6): [True: 0, False: 1]
  ------------------
  138|      0|		return;
  139|      0|	}
  140|       |
  141|      1|	if (op_array->opcodes[block->start].opcode == ZEND_NOP) {
  ------------------
  |  |  124|      1|#define ZEND_NOP                              0
  ------------------
  |  Branch (141:6): [True: 0, False: 1]
  ------------------
  142|       |		/* remove leading NOPs */
  143|      0|		strip_leading_nops(op_array, block);
  144|      0|	}
  145|       |
  146|      1|	opline = op_array->opcodes + block->start;
  147|      1|	end = opline + block->len;
  148|      2|	while (opline < end) {
  ------------------
  |  Branch (148:9): [True: 1, False: 1]
  ------------------
  149|       |		/* Constant Propagation: strip X = QM_ASSIGN(const) */
  150|      1|		if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (150:7): [True: 0, False: 1]
  ------------------
  151|      0|		    opline->opcode != ZEND_FREE) {
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (151:7): [True: 0, False: 0]
  ------------------
  152|      0|			src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|      0|			if (src &&
  ------------------
  |  Branch (153:8): [True: 0, False: 0]
  ------------------
  154|      0|			    src->opcode == ZEND_QM_ASSIGN &&
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (154:8): [True: 0, False: 0]
  ------------------
  155|      0|			    src->op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (155:8): [True: 0, False: 0]
  ------------------
  156|      0|			) {
  157|      0|				znode_op op1 = opline->op1;
  158|      0|				if (opline->opcode == ZEND_VERIFY_RETURN_TYPE) {
  ------------------
  |  |  246|      0|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
  |  Branch (158:9): [True: 0, False: 0]
  ------------------
  159|      0|					COPY_NODE(opline->result, opline->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  160|      0|					COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  161|      0|					VAR_SOURCE(op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|      0|					MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  163|      0|					++(*opt_count);
  164|      0|				} else {
  165|      0|					zval c;
  166|      0|					ZVAL_COPY(&c, &ZEND_OP1_LITERAL(src));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  167|      0|					if (opline->opcode != ZEND_CASE
  ------------------
  |  |  171|      0|#define ZEND_CASE                            48
  ------------------
  |  Branch (167:10): [True: 0, False: 0]
  ------------------
  168|      0|					 && opline->opcode != ZEND_CASE_STRICT
  ------------------
  |  |  318|      0|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (168:10): [True: 0, False: 0]
  ------------------
  169|      0|					 && opline->opcode != ZEND_FETCH_LIST_R
  ------------------
  |  |  220|      0|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (169:10): [True: 0, False: 0]
  ------------------
  170|      0|					 && opline->opcode != ZEND_SWITCH_LONG
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (170:10): [True: 0, False: 0]
  ------------------
  171|      0|					 && opline->opcode != ZEND_SWITCH_STRING
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (171:10): [True: 0, False: 0]
  ------------------
  172|      0|					 && opline->opcode != ZEND_MATCH
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (172:10): [True: 0, False: 0]
  ------------------
  173|      0|					 && opline->opcode != ZEND_MATCH_ERROR
  ------------------
  |  |  319|      0|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (173:10): [True: 0, False: 0]
  ------------------
  174|      0|					 && zend_optimizer_update_op1_const(op_array, opline, &c)) {
  ------------------
  |  Branch (174:10): [True: 0, False: 0]
  ------------------
  175|      0|						VAR_SOURCE(op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|      0|						if (opline->opcode != ZEND_JMP_NULL
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (176:11): [True: 0, False: 0]
  ------------------
  177|      0|						 && !zend_bitset_in(used_ext, VAR_NUM(src->result.var))
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (177:11): [True: 0, False: 0]
  ------------------
  178|       |						 /* FETCH_W with ZEND_FETCH_GLOBAL_LOCK does not free op1, which will be used again. */
  179|      0|						 && !(opline->opcode == ZEND_FETCH_W && (opline->extended_value & ZEND_FETCH_GLOBAL_LOCK))) {
  ------------------
  |  |  205|      0|#define ZEND_FETCH_W                         83
  ------------------
              						 && !(opline->opcode == ZEND_FETCH_W && (opline->extended_value & ZEND_FETCH_GLOBAL_LOCK))) {
  ------------------
  |  | 1092|      0|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (179:13): [True: 0, False: 0]
  |  Branch (179:47): [True: 0, False: 0]
  ------------------
  180|      0|							literal_dtor(&ZEND_OP1_LITERAL(src));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  181|      0|							MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  182|      0|						}
  183|      0|						++(*opt_count);
  184|      0|					} else {
  185|      0|						zval_ptr_dtor_nogc(&c);
  186|      0|					}
  187|      0|				}
  188|      0|			}
  189|      0|		}
  190|       |
  191|       |		/* Constant Propagation: strip X = QM_ASSIGN(const) */
  192|      1|		if (opline->op2_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (192:7): [True: 0, False: 1]
  ------------------
  193|      0|			src = VAR_SOURCE(opline->op2);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|      0|			if (src &&
  ------------------
  |  Branch (194:8): [True: 0, False: 0]
  ------------------
  195|      0|			    src->opcode == ZEND_QM_ASSIGN &&
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (195:8): [True: 0, False: 0]
  ------------------
  196|      0|			    src->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (196:8): [True: 0, False: 0]
  ------------------
  197|       |
  198|      0|				znode_op op2 = opline->op2;
  199|      0|				zval c;
  200|       |
  201|      0|				ZVAL_COPY(&c, &ZEND_OP1_LITERAL(src));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  202|      0|				if (zend_optimizer_update_op2_const(op_array, opline, &c)) {
  ------------------
  |  Branch (202:9): [True: 0, False: 0]
  ------------------
  203|      0|					VAR_SOURCE(op2) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|      0|					if (!zend_bitset_in(used_ext, VAR_NUM(src->result.var))) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (204:10): [True: 0, False: 0]
  ------------------
  205|      0|						literal_dtor(&ZEND_OP1_LITERAL(src));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  206|      0|						MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  207|      0|					}
  208|      0|					++(*opt_count);
  209|      0|				} else {
  210|      0|					zval_ptr_dtor_nogc(&c);
  211|      0|				}
  212|      0|			}
  213|      0|		}
  214|       |
  215|      1|		switch (opline->opcode) {
  ------------------
  |  Branch (215:11): [True: 1, False: 0]
  ------------------
  216|      0|			case ZEND_ECHO:
  ------------------
  |  |  258|      0|#define ZEND_ECHO                           136
  ------------------
  |  Branch (216:4): [True: 0, False: 1]
  ------------------
  217|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (217:9): [True: 0, False: 0]
  ------------------
  218|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|      0|					if (src &&
  ------------------
  |  Branch (219:10): [True: 0, False: 0]
  ------------------
  220|      0|					    src->opcode == ZEND_CAST &&
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (220:10): [True: 0, False: 0]
  ------------------
  221|      0|					    src->extended_value == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (221:10): [True: 0, False: 0]
  ------------------
  222|       |						/* T = CAST(X, String), ECHO(T) => NOP, ECHO(X) */
  223|      0|						VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|      0|						COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  225|      0|						MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  226|      0|						++(*opt_count);
  227|      0|					}
  228|      0|				} else if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (228:16): [True: 0, False: 0]
  ------------------
  229|      0|				           Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_DOUBLE) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				           Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (229:16): [True: 0, False: 0]
  ------------------
  230|      0|					if (last_op == opline - 1) {
  ------------------
  |  Branch (230:10): [True: 0, False: 0]
  ------------------
  231|       |						/* compress consecutive ECHO's.
  232|       |						 * Float to string conversion may be affected by current
  233|       |						 * locale setting.
  234|       |						 */
  235|      0|						size_t l, old_len;
  236|       |
  237|      0|						if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (237:11): [True: 0, False: 0]
  ------------------
  238|      0|							convert_to_string(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  239|      0|						}
  240|      0|						if (Z_TYPE(ZEND_OP1_LITERAL(last_op)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						if (Z_TYPE(ZEND_OP1_LITERAL(last_op)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (240:11): [True: 0, False: 0]
  ------------------
  241|      0|							convert_to_string(&ZEND_OP1_LITERAL(last_op));
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  242|      0|						}
  243|      0|						old_len = Z_STRLEN(ZEND_OP1_LITERAL(last_op));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  244|      0|						l = old_len + Z_STRLEN(ZEND_OP1_LITERAL(opline));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  245|      0|						if (!Z_REFCOUNTED(ZEND_OP1_LITERAL(last_op))) {
  ------------------
  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  |  Branch (245:11): [True: 0, False: 0]
  ------------------
  246|      0|							zend_string *tmp = zend_string_alloc(l, 0);
  247|      0|							memcpy(ZSTR_VAL(tmp), Z_STRVAL(ZEND_OP1_LITERAL(last_op)), old_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							memcpy(ZSTR_VAL(tmp), Z_STRVAL(ZEND_OP1_LITERAL(last_op)), old_len);
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
  248|      0|							Z_STR(ZEND_OP1_LITERAL(last_op)) = tmp;
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  249|      0|						} else {
  250|      0|							Z_STR(ZEND_OP1_LITERAL(last_op)) = zend_string_extend(Z_STR(ZEND_OP1_LITERAL(last_op)), l, 0);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
              							Z_STR(ZEND_OP1_LITERAL(last_op)) = zend_string_extend(Z_STR(ZEND_OP1_LITERAL(last_op)), l, 0);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  251|      0|						}
  252|      0|						Z_TYPE_INFO(ZEND_OP1_LITERAL(last_op)) = IS_STRING_EX;
  ------------------
  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              						Z_TYPE_INFO(ZEND_OP1_LITERAL(last_op)) = IS_STRING_EX;
  ------------------
  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
  253|      0|						memcpy(Z_STRVAL(ZEND_OP1_LITERAL(last_op)) + old_len, Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)));
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              						memcpy(Z_STRVAL(ZEND_OP1_LITERAL(last_op)) + old_len, Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)));
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              						memcpy(Z_STRVAL(ZEND_OP1_LITERAL(last_op)) + old_len, Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  254|      0|						Z_STRVAL(ZEND_OP1_LITERAL(last_op))[l] = '\0';
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
  255|      0|						zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  256|      0|						ZVAL_STR(&ZEND_OP1_LITERAL(opline), zend_new_interned_string(Z_STR(ZEND_OP1_LITERAL(last_op))));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  257|      0|						ZVAL_NULL(&ZEND_OP1_LITERAL(last_op));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  258|      0|						MAKE_NOP(last_op);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  259|      0|						++(*opt_count);
  260|      0|					}
  261|      0|					last_op = opline;
  262|      0|				}
  263|      0|				break;
  264|       |
  265|      0|			case ZEND_MATCH_ERROR:
  ------------------
  |  |  319|      0|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (265:4): [True: 0, False: 1]
  ------------------
  266|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (266:9): [True: 0, False: 0]
  ------------------
  267|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  268|      0|					VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|      0|				}
  270|      0|				break;
  271|       |
  272|      0|			case ZEND_FREE:
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (272:4): [True: 0, False: 1]
  ------------------
  273|       |				/* Note: Only remove the source if the source is local to this block.
  274|       |				 * If it's not local, then the other blocks successors must also eventually either FREE or consume the temporary,
  275|       |				 * hence removing the temporary is not safe in the general case, especially when other consumers are not FREE.
  276|       |				 * A FREE may not be removed without also removing the source's result, because otherwise that would cause a memory leak. */
  277|      0|				if (opline->extended_value == ZEND_FREE_VOID_CAST) {
  ------------------
  |  | 1114|      0|#define ZEND_FREE_VOID_CAST     (1<<2)
  ------------------
  |  Branch (277:9): [True: 0, False: 0]
  ------------------
  278|       |					/* Keep the ZEND_FREE opcode alive. */
  279|      0|				} else if (opline->op1_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (279:16): [True: 0, False: 0]
  ------------------
  280|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  281|      0|					if (src) {
  ------------------
  |  Branch (281:10): [True: 0, False: 0]
  ------------------
  282|      0|						switch (src->opcode) {
  283|      0|							case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (283:8): [True: 0, False: 0]
  ------------------
  284|      0|							case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (284:8): [True: 0, False: 0]
  ------------------
  285|       |								/* T = BOOL(X), FREE(T) => T = BOOL(X) */
  286|       |								/* The remaining BOOL is removed by a separate optimization */
  287|       |								/* The source is a bool, no source removals take place, so this may be done non-locally. */
  288|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  289|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  290|      0|								++(*opt_count);
  291|      0|								break;
  292|      0|							case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (292:8): [True: 0, False: 0]
  ------------------
  293|      0|								if (src < op_array->opcodes + block->start) {
  ------------------
  |  Branch (293:13): [True: 0, False: 0]
  ------------------
  294|      0|									break;
  295|      0|								}
  296|      0|								src->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  297|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  298|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  299|      0|								++(*opt_count);
  300|      0|								if (src->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              								if (src->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (300:13): [True: 0, False: 0]
  ------------------
  301|      0|									src->opcode = ZEND_FREE;
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  302|      0|								} else if (src->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (302:20): [True: 0, False: 0]
  ------------------
  303|      0|									MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  304|      0|								} else if (src->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (304:20): [True: 0, False: 0]
  ------------------
  305|      0|									src->opcode = ZEND_CHECK_VAR;
  ------------------
  |  |  172|      0|#define ZEND_CHECK_VAR                       49
  ------------------
  306|      0|									SET_UNUSED(src->result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  307|      0|								}
  308|      0|								break;
  309|      0|							default:
  ------------------
  |  Branch (309:8): [True: 0, False: 0]
  ------------------
  310|      0|								if (!zend_op_may_elide_result(src->opcode)) {
  ------------------
  |  Branch (310:13): [True: 0, False: 0]
  ------------------
  311|      0|									break;
  312|      0|								}
  313|      0|								if (src < op_array->opcodes + block->start) {
  ------------------
  |  Branch (313:13): [True: 0, False: 0]
  ------------------
  314|      0|									break;
  315|      0|								}
  316|      0|								src->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  317|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  319|      0|								++(*opt_count);
  320|      0|								break;
  321|      0|						}
  322|      0|					}
  323|      0|				} else if (opline->op1_type == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (323:16): [True: 0, False: 0]
  ------------------
  324|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  325|       |					/* V = OP, FREE(V) => OP. NOP */
  326|      0|					if (src >= op_array->opcodes + block->start &&
  ------------------
  |  Branch (326:10): [True: 0, False: 0]
  ------------------
  327|      0|					    src->opcode != ZEND_FETCH_R &&
  ------------------
  |  |  202|      0|#define ZEND_FETCH_R                         80
  ------------------
  |  Branch (327:10): [True: 0, False: 0]
  ------------------
  328|      0|					    src->opcode != ZEND_FETCH_STATIC_PROP_R &&
  ------------------
  |  |  295|      0|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
  |  Branch (328:10): [True: 0, False: 0]
  ------------------
  329|      0|					    src->opcode != ZEND_FETCH_DIM_R &&
  ------------------
  |  |  203|      0|#define ZEND_FETCH_DIM_R                     81
  ------------------
  |  Branch (329:10): [True: 0, False: 0]
  ------------------
  330|      0|					    src->opcode != ZEND_FETCH_OBJ_R &&
  ------------------
  |  |  204|      0|#define ZEND_FETCH_OBJ_R                     82
  ------------------
  |  Branch (330:10): [True: 0, False: 0]
  ------------------
  331|      0|					    src->opcode != ZEND_NEW &&
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (331:10): [True: 0, False: 0]
  ------------------
  332|      0|					    src->opcode != ZEND_FETCH_THIS) {
  ------------------
  |  |  306|      0|#define ZEND_FETCH_THIS                     184
  ------------------
  |  Branch (332:10): [True: 0, False: 0]
  ------------------
  333|      0|						src->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  334|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  335|      0|						++(*opt_count);
  336|      0|						if (src->opcode == ZEND_QM_ASSIGN) {
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (336:11): [True: 0, False: 0]
  ------------------
  337|      0|							if (src->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              							if (src->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (337:12): [True: 0, False: 0]
  ------------------
  338|      0|								src->opcode = ZEND_FREE;
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  339|      0|							} else {
  340|      0|								MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  341|      0|							}
  342|      0|						}
  343|      0|					}
  344|      0|				}
  345|      0|				break;
  346|       |
  347|      0|			case ZEND_FETCH_LIST_R:
  ------------------
  |  |  220|      0|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (347:4): [True: 0, False: 1]
  ------------------
  348|      0|			case ZEND_FETCH_LIST_W:
  ------------------
  |  |  277|      0|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (348:4): [True: 0, False: 1]
  ------------------
  349|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (349:9): [True: 0, False: 0]
  ------------------
  350|       |					/* LIST variable will be deleted later by FREE */
  351|      0|					Tsource[VAR_NUM(opline->op1.var)] = NULL;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  352|      0|				}
  353|      0|				break;
  354|       |
  355|      0|			case ZEND_SWITCH_LONG:
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (355:4): [True: 0, False: 1]
  ------------------
  356|      0|			case ZEND_SWITCH_STRING:
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (356:4): [True: 0, False: 1]
  ------------------
  357|      0|			case ZEND_MATCH:
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (357:4): [True: 0, False: 1]
  ------------------
  358|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (358:9): [True: 0, False: 0]
  ------------------
  359|       |					/* SWITCH variable will be deleted later by FREE, so we can't optimize it */
  360|      0|					Tsource[VAR_NUM(opline->op1.var)] = NULL;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|      0|					break;
  362|      0|				}
  363|      0|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (363:9): [True: 0, False: 0]
  ------------------
  364|      0|					uint32_t target = get_const_switch_target(cfg, op_array, block, opline, &ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  365|      0|					literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  366|      0|					literal_dtor(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  367|      0|					opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  368|      0|					opline->op1_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  369|      0|					opline->op2_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  370|      0|					block->successors_count = 1;
  371|      0|					block->successors[0] = target;
  372|      0|				}
  373|      0|				break;
  374|       |
  375|      0|			case ZEND_EXT_STMT:
  ------------------
  |  |  223|      0|#define ZEND_EXT_STMT                       101
  ------------------
  |  Branch (375:4): [True: 0, False: 1]
  ------------------
  376|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (376:9): [True: 0, False: 0]
  ------------------
  377|       |					/* Variable will be deleted later by FREE, so we can't optimize it */
  378|      0|					Tsource[VAR_NUM(opline->op1.var)] = NULL;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|      0|					break;
  380|      0|				}
  381|      0|				break;
  382|       |
  383|      0|			case ZEND_CASE:
  ------------------
  |  |  171|      0|#define ZEND_CASE                            48
  ------------------
  |  Branch (383:4): [True: 0, False: 1]
  ------------------
  384|      0|			case ZEND_CASE_STRICT:
  ------------------
  |  |  318|      0|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (384:4): [True: 0, False: 1]
  ------------------
  385|      0|			case ZEND_COPY_TMP:
  ------------------
  |  |  289|      0|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (385:4): [True: 0, False: 1]
  ------------------
  386|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (386:9): [True: 0, False: 0]
  ------------------
  387|       |					/* Variable will be deleted later by FREE, so we can't optimize it */
  388|      0|					Tsource[VAR_NUM(opline->op1.var)] = NULL;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|      0|					break;
  390|      0|				}
  391|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (391:9): [True: 0, False: 0]
  ------------------
  392|      0|				    opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (392:9): [True: 0, False: 0]
  ------------------
  393|      0|					goto optimize_constant_binary_op;
  394|      0|				}
  395|       |		        /*
  396|       |		         * CASE(TRUE, X)       => BOOL(X)
  397|       |		         * CASE(FALSE, X)      => BOOL_NOT(X)
  398|       |		         */
  399|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (399:9): [True: 0, False: 0]
  ------------------
  400|      0|					(Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_FALSE ||
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					(Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_FALSE ||
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (400:7): [True: 0, False: 0]
  ------------------
  401|      0|					 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_TRUE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_TRUE)) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (401:7): [True: 0, False: 0]
  ------------------
  402|       |					/* Optimization of comparison with "null" is not safe,
  403|       |					 * because ("0" == null) is not equal to !("0")
  404|       |					 */
  405|      0|					opline->opcode =
  406|      0|						((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP1_LITERAL(opline))) == IS_TRUE)) ?
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
              						((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP1_LITERAL(opline))) == IS_TRUE)) ?
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP1_LITERAL(opline))) == IS_TRUE)) ?
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (406:7): [True: 0, False: 0]
  ------------------
  407|      0|						ZEND_BOOL : ZEND_BOOL_NOT;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
              						ZEND_BOOL : ZEND_BOOL_NOT;
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  408|      0|					COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  409|      0|					SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  410|      0|					++(*opt_count);
  411|      0|					goto optimize_bool;
  412|      0|				} else if (opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (412:16): [True: 0, False: 0]
  ------------------
  413|      0|				           (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_FALSE ||
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				           (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_FALSE ||
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (413:17): [True: 0, False: 0]
  ------------------
  414|      0|				            Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_TRUE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				            Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_TRUE)) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (414:17): [True: 0, False: 0]
  ------------------
  415|       |					/* Optimization of comparison with "null" is not safe,
  416|       |					 * because ("0" == null) is not equal to !("0")
  417|       |					 */
  418|      0|					opline->opcode =
  419|      0|						((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP2_LITERAL(opline))) == IS_TRUE)) ?
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
              						((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP2_LITERAL(opline))) == IS_TRUE)) ?
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						((opline->opcode != ZEND_IS_NOT_EQUAL) == ((Z_TYPE(ZEND_OP2_LITERAL(opline))) == IS_TRUE)) ?
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (419:7): [True: 0, False: 0]
  ------------------
  420|      0|						ZEND_BOOL : ZEND_BOOL_NOT;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
              						ZEND_BOOL : ZEND_BOOL_NOT;
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  421|      0|					SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  422|      0|					++(*opt_count);
  423|      0|					goto optimize_bool;
  424|      0|				}
  425|      0|				break;
  426|       |
  427|      0|			case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (427:4): [True: 0, False: 1]
  ------------------
  428|      0|			case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (428:4): [True: 0, False: 1]
  ------------------
  429|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (429:9): [True: 0, False: 0]
  ------------------
  430|      0|					opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (430:6): [True: 0, False: 0]
  ------------------
  431|      0|					goto optimize_constant_binary_op;
  432|      0|				}
  433|       |				/* IS_EQ(TRUE, X)      => BOOL(X)
  434|       |				 * IS_EQ(FALSE, X)     => BOOL_NOT(X)
  435|       |				 * IS_NOT_EQ(TRUE, X)  => BOOL_NOT(X)
  436|       |				 * IS_NOT_EQ(FALSE, X) => BOOL(X)
  437|       |				 * Those optimizations are not safe if the other operand ends up being NAN
  438|       |				 * as BOOL/BOOL_NOT will warn, while IS_EQUAL/IS_NOT_EQUAL do not.
  439|       |				 */
  440|      0|				break;
  441|      0|			case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (441:4): [True: 0, False: 1]
  ------------------
  442|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (442:9): [True: 0, False: 0]
  ------------------
  443|      0|					opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (443:6): [True: 0, False: 0]
  ------------------
  444|      0|					goto optimize_constant_binary_op;
  445|      0|				}
  446|       |
  447|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (447:9): [True: 0, False: 0]
  ------------------
  448|      0|					(Z_TYPE(ZEND_OP1_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP1_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					(Z_TYPE(ZEND_OP1_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP1_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
              					(Z_TYPE(ZEND_OP1_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP1_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					(Z_TYPE(ZEND_OP1_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP1_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (448:7): [True: 0, False: 0]
  |  Branch (448:54): [True: 0, False: 0]
  ------------------
  449|       |					/* IS_IDENTICAL(TRUE, T)  => TYPE_CHECK(T, TRUE)
  450|       |					 * IS_IDENTICAL(FALSE, T) => TYPE_CHECK(T, FALSE)
  451|       |					 * IS_IDENTICAL(NULL, T)  => TYPE_CHECK(T, NULL)
  452|       |					 */
  453|      0|					opline->opcode = ZEND_TYPE_CHECK;
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  454|      0|					opline->extended_value = (1 << Z_TYPE(ZEND_OP1_LITERAL(opline)));
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
  455|      0|					COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  456|      0|					SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  457|      0|					++(*opt_count);
  458|      0|					goto optimize_type_check;
  459|      0|				} else if (opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (459:16): [True: 0, False: 0]
  ------------------
  460|      0|					(Z_TYPE(ZEND_OP2_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP2_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					(Z_TYPE(ZEND_OP2_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP2_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
              					(Z_TYPE(ZEND_OP2_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP2_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					(Z_TYPE(ZEND_OP2_LITERAL(opline)) <= IS_TRUE && Z_TYPE(ZEND_OP2_LITERAL(opline)) >= IS_NULL)) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (460:7): [True: 0, False: 0]
  |  Branch (460:54): [True: 0, False: 0]
  ------------------
  461|       |					/* IS_IDENTICAL(T, TRUE)  => TYPE_CHECK(T, TRUE)
  462|       |					 * IS_IDENTICAL(T, FALSE) => TYPE_CHECK(T, FALSE)
  463|       |					 * IS_IDENTICAL(T, NULL)  => TYPE_CHECK(T, NULL)
  464|       |					 */
  465|      0|					opline->opcode = ZEND_TYPE_CHECK;
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  466|      0|					opline->extended_value = (1 << Z_TYPE(ZEND_OP2_LITERAL(opline)));
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
  467|      0|					SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  468|      0|					++(*opt_count);
  469|      0|					goto optimize_type_check;
  470|      0|				}
  471|      0|				break;
  472|      0|			case ZEND_TYPE_CHECK:
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (472:4): [True: 0, False: 1]
  ------------------
  473|      0|optimize_type_check:
  474|      0|				if (opline->extended_value == (1 << IS_TRUE) || opline->extended_value == (1 << IS_FALSE)) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
              				if (opline->extended_value == (1 << IS_TRUE) || opline->extended_value == (1 << IS_FALSE)) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (474:9): [True: 0, False: 0]
  |  Branch (474:53): [True: 0, False: 0]
  ------------------
  475|      0|					if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (475:10): [True: 0, False: 0]
  ------------------
  476|      0|						!zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (476:7): [True: 0, False: 0]
  ------------------
  477|      0|						src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  478|       |
  479|      0|						if (src) {
  ------------------
  |  Branch (479:11): [True: 0, False: 0]
  ------------------
  480|      0|							switch (src->opcode) {
  ------------------
  |  Branch (480:16): [True: 0, False: 0]
  ------------------
  481|      0|								case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (481:9): [True: 0, False: 0]
  ------------------
  482|      0|								case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (482:9): [True: 0, False: 0]
  ------------------
  483|       |									/* T = BOOL(X)     + TYPE_CHECK(T, TRUE)  -> BOOL(X), NOP
  484|       |									 * T = BOOL(X)     + TYPE_CHECK(T, FALSE) -> BOOL_NOT(X), NOP
  485|       |									 * T = BOOL_NOT(X) + TYPE_CHECK(T, TRUE)  -> BOOL_NOT(X), NOP
  486|       |									 * T = BOOL_NOT(X) + TYPE_CHECK(T, FALSE) -> BOOL(X), NOP
  487|       |									 */
  488|      0|									src->opcode =
  489|      0|										((src->opcode == ZEND_BOOL) == (opline->extended_value == (1 << IS_TRUE))) ?
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
              										((src->opcode == ZEND_BOOL) == (opline->extended_value == (1 << IS_TRUE))) ?
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (489:11): [True: 0, False: 0]
  ------------------
  490|      0|										ZEND_BOOL : ZEND_BOOL_NOT;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
              										ZEND_BOOL : ZEND_BOOL_NOT;
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  491|      0|									COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  492|      0|									SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  493|      0|									MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  494|      0|									++(*opt_count);
  495|      0|									break;
  496|      0|							}
  497|      0|						}
  498|      0|					}
  499|      0|				}
  500|      0|				break;
  501|       |	
  502|      0|			case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (502:4): [True: 0, False: 1]
  ------------------
  503|      0|			case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (503:4): [True: 0, False: 1]
  ------------------
  504|      0|			optimize_bool:
  505|      0|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (505:9): [True: 0, False: 0]
  ------------------
  506|      0|					goto optimize_const_unary_op;
  507|      0|				}
  508|      0|				if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (508:9): [True: 0, False: 0]
  ------------------
  509|      0|				    !zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (509:9): [True: 0, False: 0]
  ------------------
  510|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      0|					if (src) {
  ------------------
  |  Branch (511:10): [True: 0, False: 0]
  ------------------
  512|      0|						switch (src->opcode) {
  ------------------
  |  Branch (512:15): [True: 0, False: 0]
  ------------------
  513|      0|							case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (513:8): [True: 0, False: 0]
  ------------------
  514|       |								/* T = BOOL_NOT(X) + BOOL(T) -> NOP, BOOL_NOT(X) */
  515|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  516|      0|								COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  517|      0|								opline->opcode = (opline->opcode == ZEND_BOOL) ? ZEND_BOOL_NOT : ZEND_BOOL;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
              								opline->opcode = (opline->opcode == ZEND_BOOL) ? ZEND_BOOL_NOT : ZEND_BOOL;
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
              								opline->opcode = (opline->opcode == ZEND_BOOL) ? ZEND_BOOL_NOT : ZEND_BOOL;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (517:26): [True: 0, False: 0]
  ------------------
  518|      0|								MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  519|      0|								++(*opt_count);
  520|      0|								goto optimize_bool;
  521|      0|							case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (521:8): [True: 0, False: 0]
  ------------------
  522|       |								/* T = BOOL(X) + BOOL(T) -> NOP, BOOL(X) */
  523|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  524|      0|								COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  525|      0|								MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  526|      0|								++(*opt_count);
  527|      0|								goto optimize_bool;
  528|      0|							case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (528:8): [True: 0, False: 0]
  ------------------
  529|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (529:13): [True: 0, False: 0]
  ------------------
  530|      0|									src->opcode = ZEND_IS_NOT_EQUAL;
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  531|      0|								}
  532|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  533|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  534|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  535|      0|								++(*opt_count);
  536|      0|								break;
  537|      0|							case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (537:8): [True: 0, False: 0]
  ------------------
  538|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (538:13): [True: 0, False: 0]
  ------------------
  539|      0|									src->opcode = ZEND_IS_EQUAL;
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  540|      0|								}
  541|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  542|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  544|      0|								++(*opt_count);
  545|      0|								break;
  546|      0|							case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (546:8): [True: 0, False: 0]
  ------------------
  547|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (547:13): [True: 0, False: 0]
  ------------------
  548|      0|									src->opcode = ZEND_IS_NOT_IDENTICAL;
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  549|      0|								}
  550|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  551|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  553|      0|								++(*opt_count);
  554|      0|								break;
  555|      0|							case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (555:8): [True: 0, False: 0]
  ------------------
  556|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (556:13): [True: 0, False: 0]
  ------------------
  557|      0|									src->opcode = ZEND_IS_IDENTICAL;
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  558|      0|								}
  559|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  560|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  561|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  562|      0|								++(*opt_count);
  563|      0|								break;
  564|      0|							case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (564:8): [True: 0, False: 0]
  ------------------
  565|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (565:13): [True: 0, False: 0]
  ------------------
  566|      0|									uint8_t tmp_type;
  567|      0|									uint32_t tmp;
  568|       |
  569|      0|									src->opcode = ZEND_IS_SMALLER_OR_EQUAL;
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  570|      0|									tmp_type = src->op1_type;
  571|      0|									src->op1_type = src->op2_type;
  572|      0|									src->op2_type = tmp_type;
  573|      0|									tmp = src->op1.num;
  574|      0|									src->op1.num = src->op2.num;
  575|      0|									src->op2.num = tmp;
  576|      0|								}
  577|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  578|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  580|      0|								++(*opt_count);
  581|      0|								break;
  582|      0|							case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (582:8): [True: 0, False: 0]
  ------------------
  583|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (583:13): [True: 0, False: 0]
  ------------------
  584|      0|									uint8_t tmp_type;
  585|      0|									uint32_t tmp;
  586|       |
  587|      0|									src->opcode = ZEND_IS_SMALLER;
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  588|      0|									tmp_type = src->op1_type;
  589|      0|									src->op1_type = src->op2_type;
  590|      0|									src->op2_type = tmp_type;
  591|      0|									tmp = src->op1.num;
  592|      0|									src->op1.num = src->op2.num;
  593|      0|									src->op2.num = tmp;
  594|      0|								}
  595|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  596|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  597|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  598|      0|								++(*opt_count);
  599|      0|								break;
  600|      0|							case ZEND_ISSET_ISEMPTY_CV:
  ------------------
  |  |  276|      0|#define ZEND_ISSET_ISEMPTY_CV               154
  ------------------
  |  Branch (600:8): [True: 0, False: 0]
  ------------------
  601|      0|							case ZEND_ISSET_ISEMPTY_VAR:
  ------------------
  |  |  236|      0|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
  |  Branch (601:8): [True: 0, False: 0]
  ------------------
  602|      0|							case ZEND_ISSET_ISEMPTY_DIM_OBJ:
  ------------------
  |  |  237|      0|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
  |  Branch (602:8): [True: 0, False: 0]
  ------------------
  603|      0|							case ZEND_ISSET_ISEMPTY_PROP_OBJ:
  ------------------
  |  |  270|      0|#define ZEND_ISSET_ISEMPTY_PROP_OBJ         148
  ------------------
  |  Branch (603:8): [True: 0, False: 0]
  ------------------
  604|      0|							case ZEND_ISSET_ISEMPTY_STATIC_PROP:
  ------------------
  |  |  302|      0|#define ZEND_ISSET_ISEMPTY_STATIC_PROP      180
  ------------------
  |  Branch (604:8): [True: 0, False: 0]
  ------------------
  605|      0|							case ZEND_INSTANCEOF:
  ------------------
  |  |  260|      0|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (605:8): [True: 0, False: 0]
  ------------------
  606|      0|							case ZEND_TYPE_CHECK:
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (606:8): [True: 0, False: 0]
  ------------------
  607|      0|							case ZEND_DEFINED:
  ------------------
  |  |  244|      0|#define ZEND_DEFINED                        122
  ------------------
  |  Branch (607:8): [True: 0, False: 0]
  ------------------
  608|      0|							case ZEND_IN_ARRAY:
  ------------------
  |  |  311|      0|#define ZEND_IN_ARRAY                       189
  ------------------
  |  Branch (608:8): [True: 0, False: 0]
  ------------------
  609|      0|							case ZEND_ARRAY_KEY_EXISTS:
  ------------------
  |  |  316|      0|#define ZEND_ARRAY_KEY_EXISTS               194
  ------------------
  |  Branch (609:8): [True: 0, False: 0]
  ------------------
  610|      0|								if (opline->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (610:13): [True: 0, False: 0]
  ------------------
  611|      0|									break;
  612|      0|								}
  613|      0|								COPY_NODE(src->result, opline->result);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  614|      0|								SET_VAR_SOURCE(src);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|      0|								MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  616|      0|								++(*opt_count);
  617|      0|								break;
  618|      0|						}
  619|      0|					}
  620|      0|				}
  621|      0|				break;
  622|       |
  623|      0|			case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (623:4): [True: 0, False: 1]
  ------------------
  624|      0|			case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (624:4): [True: 0, False: 1]
  ------------------
  625|      0|			    while (1) {
  ------------------
  |  Branch (625:15): [True: 0, Folded]
  ------------------
  626|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (626:10): [True: 0, False: 0]
  ------------------
  627|      0|						++(*opt_count);
  628|      0|						block->successors_count = 1;
  629|      0|						if (zend_is_true(&ZEND_OP1_LITERAL(opline)) ==
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (629:11): [True: 0, False: 0]
  ------------------
  630|      0|						    (opline->opcode == ZEND_JMPZ)) {
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  631|       |
  632|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  633|      0|							block->successors[0] = block->successors[1];
  634|      0|							block->len--;
  635|      0|							cfg->blocks[block->successors[0]].flags |= ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  636|      0|							break;
  637|      0|						} else {
  638|      0|							zend_basic_block *next = cfg->blocks + block->successors[1];
  639|       |
  640|      0|							next->flags &= ~ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  641|      0|							if (!(next->flags & (ZEND_BB_TARGET|ZEND_BB_PROTECTED))) {
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
              							if (!(next->flags & (ZEND_BB_TARGET|ZEND_BB_PROTECTED))) {
  ------------------
  |  |   38|      0|#define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   25|      0|#define ZEND_BB_ENTRY            (1<<4)  /* stackless entry        */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   31|      0|#define ZEND_BB_RECV_ENTRY       (1<<12) /* RECV entry             */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   26|      0|#define ZEND_BB_TRY              (1<<5)  /* start of try block     */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   27|      0|#define ZEND_BB_CATCH            (1<<6)  /* start of catch block   */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   28|      0|#define ZEND_BB_FINALLY          (1<<7)  /* start of finally block */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BB_FINALLY_END      (1<<8)  /* end of finally block   */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   30|      0|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  |  |  ------------------
  ------------------
  |  Branch (641:12): [True: 0, False: 0]
  ------------------
  642|      0|								next->flags &= ~ZEND_BB_REACHABLE;
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  643|      0|							}
  644|      0|							opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  645|      0|							COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  646|      0|							break;
  647|      0|						}
  648|      0|					} else if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (648:17): [True: 0, False: 0]
  ------------------
  649|      0|					           !zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (649:17): [True: 0, False: 0]
  ------------------
  650|      0|						src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  651|      0|						if (src) {
  ------------------
  |  Branch (651:11): [True: 0, False: 0]
  ------------------
  652|      0|							if (src->opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (652:12): [True: 0, False: 0]
  ------------------
  653|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  654|      0|								COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  655|       |								/* T = BOOL_NOT(X) + JMPZ(T) -> NOP, JMPNZ(X) */
  656|      0|								opline->opcode = INV_COND(opline->opcode);
  ------------------
  |  |   36|      0|#define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  168|      0|#define ZEND_JMPNZ                           44
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |  |  Branch (36:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  657|      0|								MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  658|      0|								++(*opt_count);
  659|      0|								continue;
  660|      0|							} else if (src->opcode == ZEND_BOOL ||
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (660:19): [True: 0, False: 0]
  ------------------
  661|      0|							           src->opcode == ZEND_QM_ASSIGN) {
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (661:19): [True: 0, False: 0]
  ------------------
  662|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  663|      0|								COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  664|      0|								MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  665|      0|								++(*opt_count);
  666|      0|								continue;
  667|      0|							}
  668|      0|						}
  669|      0|					}
  670|      0|					break;
  671|      0|				}
  672|      0|				break;
  673|       |
  674|      0|			case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (674:4): [True: 0, False: 1]
  ------------------
  675|      0|			case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (675:4): [True: 0, False: 1]
  ------------------
  676|      0|				while (1) {
  ------------------
  |  Branch (676:12): [True: 0, Folded]
  ------------------
  677|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (677:10): [True: 0, False: 0]
  ------------------
  678|      0|						bool is_jmpz_ex = opline->opcode == ZEND_JMPZ_EX;
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  679|      0|						if (zend_is_true(&ZEND_OP1_LITERAL(opline)) == is_jmpz_ex) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (679:11): [True: 0, False: 0]
  ------------------
  680|       |
  681|      0|							++(*opt_count);
  682|      0|							opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  683|      0|							zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  684|      0|							ZVAL_BOOL(&ZEND_OP1_LITERAL(opline), is_jmpz_ex);
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  685|      0|							opline->op2.num = 0;
  686|      0|							block->successors_count = 1;
  687|      0|							block->successors[0] = block->successors[1];
  688|      0|							cfg->blocks[block->successors[0]].flags |= ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  689|      0|							break;
  690|      0|						}
  691|      0|					} else if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (691:17): [True: 0, False: 0]
  ------------------
  692|      0|					           (!zend_bitset_in(used_ext, VAR_NUM(opline->op1.var)) ||
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (692:18): [True: 0, False: 0]
  ------------------
  693|      0|					            opline->result.var == opline->op1.var)) {
  ------------------
  |  Branch (693:18): [True: 0, False: 0]
  ------------------
  694|      0|						src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|      0|						if (src) {
  ------------------
  |  Branch (695:11): [True: 0, False: 0]
  ------------------
  696|      0|							if (src->opcode == ZEND_BOOL ||
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (696:12): [True: 0, False: 0]
  ------------------
  697|      0|							    src->opcode == ZEND_QM_ASSIGN) {
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (697:12): [True: 0, False: 0]
  ------------------
  698|      0|								VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  699|      0|								COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  700|      0|								MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  701|      0|								++(*opt_count);
  702|      0|								continue;
  703|      0|							}
  704|      0|						}
  705|      0|					}
  706|      0|					break;
  707|      0|				}
  708|      0|				break;
  709|       |
  710|      0|			case ZEND_CONCAT:
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (710:4): [True: 0, False: 1]
  ------------------
  711|      0|			case ZEND_FAST_CONCAT:
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (711:4): [True: 0, False: 1]
  ------------------
  712|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (712:9): [True: 0, False: 0]
  ------------------
  713|      0|				    opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (713:9): [True: 0, False: 0]
  ------------------
  714|      0|					goto optimize_constant_binary_op;
  715|      0|				}
  716|       |
  717|      0|				if (opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (717:9): [True: 0, False: 0]
  ------------------
  718|      0|				    opline->op1_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (718:9): [True: 0, False: 0]
  ------------------
  719|       |
  720|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  721|      0|				    if (src &&
  ------------------
  |  Branch (721:13): [True: 0, False: 0]
  ------------------
  722|      0|					    (src->opcode == ZEND_CONCAT ||
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (722:11): [True: 0, False: 0]
  ------------------
  723|      0|					     src->opcode == ZEND_FAST_CONCAT) &&
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (723:11): [True: 0, False: 0]
  ------------------
  724|      0|					    src->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (724:10): [True: 0, False: 0]
  ------------------
  725|       |						/* compress consecutive CONCATs */
  726|      0|						size_t l, old_len;
  727|       |
  728|      0|						if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (728:11): [True: 0, False: 0]
  ------------------
  729|      0|							convert_to_string(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  730|      0|						}
  731|      0|						if (Z_TYPE(ZEND_OP2_LITERAL(src)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						if (Z_TYPE(ZEND_OP2_LITERAL(src)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (731:11): [True: 0, False: 0]
  ------------------
  732|      0|							convert_to_string(&ZEND_OP2_LITERAL(src));
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  733|      0|						}
  734|       |
  735|      0|						VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  736|      0|						COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  737|      0|						old_len = Z_STRLEN(ZEND_OP2_LITERAL(src));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  738|      0|						l = old_len + Z_STRLEN(ZEND_OP2_LITERAL(opline));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  739|      0|						if (!Z_REFCOUNTED(ZEND_OP2_LITERAL(src))) {
  ------------------
  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  |  Branch (739:11): [True: 0, False: 0]
  ------------------
  740|      0|							zend_string *tmp = zend_string_alloc(l, 0);
  741|      0|							memcpy(ZSTR_VAL(tmp), Z_STRVAL(ZEND_OP2_LITERAL(src)), old_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							memcpy(ZSTR_VAL(tmp), Z_STRVAL(ZEND_OP2_LITERAL(src)), old_len);
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
  742|      0|							Z_STR(ZEND_OP2_LITERAL(src)) = tmp;
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  743|      0|						} else {
  744|      0|							Z_STR(ZEND_OP2_LITERAL(src)) = zend_string_extend(Z_STR(ZEND_OP2_LITERAL(src)), l, 0);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
              							Z_STR(ZEND_OP2_LITERAL(src)) = zend_string_extend(Z_STR(ZEND_OP2_LITERAL(src)), l, 0);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  745|      0|						}
  746|      0|						Z_TYPE_INFO(ZEND_OP2_LITERAL(src)) = IS_STRING_EX;
  ------------------
  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              						Z_TYPE_INFO(ZEND_OP2_LITERAL(src)) = IS_STRING_EX;
  ------------------
  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
  747|      0|						memcpy(Z_STRVAL(ZEND_OP2_LITERAL(src)) + old_len, Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)));
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              						memcpy(Z_STRVAL(ZEND_OP2_LITERAL(src)) + old_len, Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)));
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              						memcpy(Z_STRVAL(ZEND_OP2_LITERAL(src)) + old_len, Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  748|      0|						Z_STRVAL(ZEND_OP2_LITERAL(src))[l] = '\0';
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
  749|      0|						zval_ptr_dtor_str(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   30|      0|#define ZEND_OP2_LITERAL(opline)		(op_array)->literals[(opline)->op2.constant]
  ------------------
  750|      0|						ZVAL_STR(&ZEND_OP2_LITERAL(opline), zend_new_interned_string(Z_STR(ZEND_OP2_LITERAL(src))));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  751|      0|						ZVAL_NULL(&ZEND_OP2_LITERAL(src));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  752|      0|						MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  753|      0|						++(*opt_count);
  754|      0|					}
  755|      0|				}
  756|       |
  757|      0|				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (757:9): [True: 0, False: 0]
  ------------------
  758|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  759|      0|					if (src &&
  ------------------
  |  Branch (759:10): [True: 0, False: 0]
  ------------------
  760|      0|					    src->opcode == ZEND_CAST &&
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (760:10): [True: 0, False: 0]
  ------------------
  761|      0|					    src->extended_value == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (761:10): [True: 0, False: 0]
  ------------------
  762|      0|					    src->op1_type != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (762:10): [True: 0, False: 0]
  ------------------
  763|       |						/* convert T1 = CAST(STRING, X), T2 = CONCAT(T1, Y) to T2 = CONCAT(X,Y) */
  764|      0|						VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  765|      0|						COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  766|      0|						MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  767|      0|						++(*opt_count);
  768|      0|					}
  769|      0|	            }
  770|      0|				if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (770:9): [True: 0, False: 0]
  ------------------
  771|      0|					src = VAR_SOURCE(opline->op2);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  772|      0|					if (src &&
  ------------------
  |  Branch (772:10): [True: 0, False: 0]
  ------------------
  773|      0|					    src->opcode == ZEND_CAST &&
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (773:10): [True: 0, False: 0]
  ------------------
  774|      0|					    src->extended_value == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (774:10): [True: 0, False: 0]
  ------------------
  775|      0|					    src->op1_type != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (775:10): [True: 0, False: 0]
  ------------------
  776|       |						/* convert T1 = CAST(STRING, X), T2 = CONCAT(Y, T1) to T2 = CONCAT(Y,X) */
  777|      0|						VAR_SOURCE(opline->op2) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  778|      0|						COPY_NODE(opline->op2, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  779|      0|						MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  780|      0|						++(*opt_count);
  781|      0|					}
  782|      0|				}
  783|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (783:9): [True: 0, False: 0]
  ------------------
  784|      0|				    Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				    Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (784:9): [True: 0, False: 0]
  ------------------
  785|      0|				    Z_STRLEN(ZEND_OP1_LITERAL(opline)) == 0) {
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  |  Branch (785:9): [True: 0, False: 0]
  ------------------
  786|       |					/* convert CONCAT('', X) => CAST(STRING, X) */
  787|      0|					literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  788|      0|					opline->opcode = ZEND_CAST;
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  789|      0|					opline->extended_value = IS_STRING;
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  790|      0|					COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  791|      0|					opline->op2_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  792|      0|					opline->op2.var = 0;
  793|      0|					++(*opt_count);
  794|      0|				} else if (opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (794:16): [True: 0, False: 0]
  ------------------
  795|      0|			           Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			           Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (795:15): [True: 0, False: 0]
  ------------------
  796|      0|			           Z_STRLEN(ZEND_OP2_LITERAL(opline)) == 0) {
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  |  Branch (796:15): [True: 0, False: 0]
  ------------------
  797|       |					/* convert CONCAT(X, '') => CAST(STRING, X) */
  798|      0|					literal_dtor(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  799|      0|					opline->opcode = ZEND_CAST;
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  800|      0|					opline->extended_value = IS_STRING;
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  801|      0|					opline->op2_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  802|      0|					opline->op2.var = 0;
  803|      0|					++(*opt_count);
  804|      0|				} else if (opline->opcode == ZEND_CONCAT &&
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (804:16): [True: 0, False: 0]
  ------------------
  805|      0|				           (opline->op1_type == IS_CONST ||
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (805:17): [True: 0, False: 0]
  ------------------
  806|      0|				            (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (806:18): [True: 0, False: 0]
  ------------------
  807|      0|				             VAR_SOURCE(opline->op1) &&
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (60:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  808|      0|				             (VAR_SOURCE(opline->op1)->opcode == ZEND_FAST_CONCAT ||
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				             (VAR_SOURCE(opline->op1)->opcode == ZEND_FAST_CONCAT ||
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (808:19): [True: 0, False: 0]
  ------------------
  809|      0|				              VAR_SOURCE(opline->op1)->opcode == ZEND_ROPE_END ||
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				              VAR_SOURCE(opline->op1)->opcode == ZEND_ROPE_END ||
  ------------------
  |  |  179|      0|#define ZEND_ROPE_END                        56
  ------------------
  |  Branch (809:19): [True: 0, False: 0]
  ------------------
  810|      0|				              VAR_SOURCE(opline->op1)->opcode == ZEND_FETCH_CONSTANT ||
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				              VAR_SOURCE(opline->op1)->opcode == ZEND_FETCH_CONSTANT ||
  ------------------
  |  |  221|      0|#define ZEND_FETCH_CONSTANT                  99
  ------------------
  |  Branch (810:19): [True: 0, False: 0]
  ------------------
  811|      0|				              VAR_SOURCE(opline->op1)->opcode == ZEND_FETCH_CLASS_CONSTANT))) &&
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				              VAR_SOURCE(opline->op1)->opcode == ZEND_FETCH_CLASS_CONSTANT))) &&
  ------------------
  |  |  303|      0|#define ZEND_FETCH_CLASS_CONSTANT           181
  ------------------
  |  Branch (811:19): [True: 0, False: 0]
  ------------------
  812|      0|				           (opline->op2_type == IS_CONST ||
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (812:17): [True: 0, False: 0]
  ------------------
  813|      0|				            (opline->op2_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (813:18): [True: 0, False: 0]
  ------------------
  814|      0|				             VAR_SOURCE(opline->op2) &&
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (60:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  815|      0|				             (VAR_SOURCE(opline->op2)->opcode == ZEND_FAST_CONCAT ||
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				             (VAR_SOURCE(opline->op2)->opcode == ZEND_FAST_CONCAT ||
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (815:19): [True: 0, False: 0]
  ------------------
  816|      0|				              VAR_SOURCE(opline->op2)->opcode == ZEND_ROPE_END ||
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				              VAR_SOURCE(opline->op2)->opcode == ZEND_ROPE_END ||
  ------------------
  |  |  179|      0|#define ZEND_ROPE_END                        56
  ------------------
  |  Branch (816:19): [True: 0, False: 0]
  ------------------
  817|      0|				              VAR_SOURCE(opline->op2)->opcode == ZEND_FETCH_CONSTANT ||
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				              VAR_SOURCE(opline->op2)->opcode == ZEND_FETCH_CONSTANT ||
  ------------------
  |  |  221|      0|#define ZEND_FETCH_CONSTANT                  99
  ------------------
  |  Branch (817:19): [True: 0, False: 0]
  ------------------
  818|      0|				              VAR_SOURCE(opline->op2)->opcode == ZEND_FETCH_CLASS_CONSTANT)))) {
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				              VAR_SOURCE(opline->op2)->opcode == ZEND_FETCH_CLASS_CONSTANT)))) {
  ------------------
  |  |  303|      0|#define ZEND_FETCH_CLASS_CONSTANT           181
  ------------------
  |  Branch (818:19): [True: 0, False: 0]
  ------------------
  819|      0|					opline->opcode = ZEND_FAST_CONCAT;
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  820|      0|					++(*opt_count);
  821|      0|				}
  822|      0|				break;
  823|       |
  824|      0|			case ZEND_ADD:
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (824:4): [True: 0, False: 1]
  ------------------
  825|      0|			case ZEND_SUB:
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (825:4): [True: 0, False: 1]
  ------------------
  826|      0|			case ZEND_MUL:
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (826:4): [True: 0, False: 1]
  ------------------
  827|      0|			case ZEND_DIV:
  ------------------
  |  |  128|      0|#define ZEND_DIV                              4
  ------------------
  |  Branch (827:4): [True: 0, False: 1]
  ------------------
  828|      0|			case ZEND_MOD:
  ------------------
  |  |  129|      0|#define ZEND_MOD                              5
  ------------------
  |  Branch (828:4): [True: 0, False: 1]
  ------------------
  829|      0|			case ZEND_SL:
  ------------------
  |  |  130|      0|#define ZEND_SL                               6
  ------------------
  |  Branch (829:4): [True: 0, False: 1]
  ------------------
  830|      0|			case ZEND_SR:
  ------------------
  |  |  131|      0|#define ZEND_SR                               7
  ------------------
  |  Branch (830:4): [True: 0, False: 1]
  ------------------
  831|      0|			case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (831:4): [True: 0, False: 1]
  ------------------
  832|      0|			case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (832:4): [True: 0, False: 1]
  ------------------
  833|      0|			case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (833:4): [True: 0, False: 1]
  ------------------
  834|      0|			case ZEND_BOOL_XOR:
  ------------------
  |  |  139|      0|#define ZEND_BOOL_XOR                        15
  ------------------
  |  Branch (834:4): [True: 0, False: 1]
  ------------------
  835|      0|			case ZEND_BW_OR:
  ------------------
  |  |  133|      0|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (835:4): [True: 0, False: 1]
  ------------------
  836|      0|			case ZEND_BW_AND:
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
  |  Branch (836:4): [True: 0, False: 1]
  ------------------
  837|      0|			case ZEND_BW_XOR:
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (837:4): [True: 0, False: 1]
  ------------------
  838|      0|				if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (838:9): [True: 0, False: 0]
  ------------------
  839|      0|				    opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (839:9): [True: 0, False: 0]
  ------------------
  840|       |					/* evaluate constant expressions */
  841|      0|					zval result;
  842|       |
  843|      0|optimize_constant_binary_op:
  844|      0|					if (zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
              					if (zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   30|      0|#define ZEND_OP2_LITERAL(opline)		(op_array)->literals[(opline)->op2.constant]
  ------------------
  |  Branch (844:10): [True: 0, False: 0]
  ------------------
  845|      0|						literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  846|      0|						literal_dtor(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  847|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  848|      0|						SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  849|      0|						zend_optimizer_update_op1_const(op_array, opline, &result);
  850|      0|						++(*opt_count);
  851|      0|					}
  852|      0|				}
  853|      0|				break;
  854|       |
  855|      0|			case ZEND_BW_NOT:
  ------------------
  |  |  137|      0|#define ZEND_BW_NOT                          13
  ------------------
  |  Branch (855:4): [True: 0, False: 1]
  ------------------
  856|      0|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (856:9): [True: 0, False: 0]
  ------------------
  857|       |					/* evaluate constant unary ops */
  858|      0|					zval result;
  859|       |
  860|      0|optimize_const_unary_op:
  861|      0|					if (zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (861:10): [True: 0, False: 0]
  ------------------
  862|      0|						literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  863|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  864|      0|						zend_optimizer_update_op1_const(op_array, opline, &result);
  865|      0|						++(*opt_count);
  866|      0|					}
  867|      0|				}
  868|      0|				break;
  869|       |
  870|      0|			case ZEND_CAST:
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (870:4): [True: 0, False: 1]
  ------------------
  871|      0|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (871:9): [True: 0, False: 0]
  ------------------
  872|       |					/* cast of constant operand */
  873|      0|					zval result;
  874|       |
  875|      0|					if (zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (875:10): [True: 0, False: 0]
  ------------------
  876|      0|						literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  877|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  878|      0|						opline->extended_value = 0;
  879|      0|						zend_optimizer_update_op1_const(op_array, opline, &result);
  880|      0|						++(*opt_count);
  881|      0|					}
  882|      0|				}
  883|      0|				break;
  884|       |
  885|      0|			case ZEND_STRLEN:
  ------------------
  |  |  243|      0|#define ZEND_STRLEN                         121
  ------------------
  |  Branch (885:4): [True: 0, False: 1]
  ------------------
  886|      0|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (886:9): [True: 0, False: 0]
  ------------------
  887|      0|					zval result;
  888|       |
  889|      0|					if (zend_optimizer_eval_strlen(&result, &ZEND_OP1_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (889:10): [True: 0, False: 0]
  ------------------
  890|      0|						literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  891|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  892|      0|						zend_optimizer_update_op1_const(op_array, opline, &result);
  893|      0|						++(*opt_count);
  894|      0|					}
  895|      0|				}
  896|      0|				break;
  897|       |
  898|      1|			case ZEND_RETURN:
  ------------------
  |  |  185|      1|#define ZEND_RETURN                          62
  ------------------
  |  Branch (898:4): [True: 1, False: 0]
  ------------------
  899|      1|				if (opline->op1_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (899:9): [True: 0, False: 1]
  ------------------
  900|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  901|      0|					if (src && src->opcode == ZEND_QM_ASSIGN) {
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (901:10): [True: 0, False: 0]
  |  Branch (901:17): [True: 0, False: 0]
  ------------------
  902|      0|						zend_op *op = src + 1;
  903|      0|						bool optimize = true;
  904|       |
  905|      0|						while (op < opline) {
  ------------------
  |  Branch (905:14): [True: 0, False: 0]
  ------------------
  906|      0|							if ((op->op1_type == opline->op1_type
  ------------------
  |  Branch (906:13): [True: 0, False: 0]
  ------------------
  907|      0|							  && op->op1.var == opline->op1.var)
  ------------------
  |  Branch (907:13): [True: 0, False: 0]
  ------------------
  908|      0|							 || (op->op2_type == opline->op1_type
  ------------------
  |  Branch (908:13): [True: 0, False: 0]
  ------------------
  909|      0|							  && op->op2.var == opline->op1.var)) {
  ------------------
  |  Branch (909:13): [True: 0, False: 0]
  ------------------
  910|      0|								optimize = false;
  911|      0|								break;
  912|      0|							}
  913|      0|							op++;
  914|      0|						}
  915|       |
  916|      0|						if (optimize) {
  ------------------
  |  Branch (916:11): [True: 0, False: 0]
  ------------------
  917|       |							/* T = QM_ASSIGN(X), RETURN(T) to NOP, RETURN(X) */
  918|      0|							VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  919|      0|							COPY_NODE(opline->op1, src->op1);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  920|      0|							MAKE_NOP(src);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  921|      0|							++(*opt_count);
  922|      0|						}
  923|      0|					}
  924|      0|				}
  925|      1|				break;
  926|       |
  927|      0|			case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (927:4): [True: 0, False: 1]
  ------------------
  928|      0|				if (opline->op1_type == opline->result_type &&
  ------------------
  |  Branch (928:9): [True: 0, False: 0]
  ------------------
  929|      0|				    opline->op1.var == opline->result.var) {
  ------------------
  |  Branch (929:9): [True: 0, False: 0]
  ------------------
  930|       |					/* strip T = QM_ASSIGN(T) */
  931|      0|					MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  932|      0|					++(*opt_count);
  933|      0|				} else if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (933:16): [True: 0, False: 0]
  ------------------
  934|      0|				           opline->result_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (934:16): [True: 0, False: 0]
  ------------------
  935|      0|				           !zend_bitset_in(used_ext, VAR_NUM(opline->op1.var))) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (935:16): [True: 0, False: 0]
  ------------------
  936|       |					/* T1 = ..., T2 = QM_ASSIGN(T1) to T2 = ..., NOP */
  937|      0|					src = VAR_SOURCE(opline->op1);
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  938|      0|					if (src &&
  ------------------
  |  Branch (938:10): [True: 0, False: 0]
  ------------------
  939|      0|						src->opcode != ZEND_COPY_TMP &&
  ------------------
  |  |  289|      0|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (939:7): [True: 0, False: 0]
  ------------------
  940|       |						/* See gh20628_borked_live_range_calc.phpt. */
  941|      0|						src->opcode != ZEND_NEW &&
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (941:7): [True: 0, False: 0]
  ------------------
  942|      0|						src->opcode != ZEND_ADD_ARRAY_ELEMENT &&
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (942:7): [True: 0, False: 0]
  ------------------
  943|      0|						src->opcode != ZEND_ADD_ARRAY_UNPACK &&
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (943:7): [True: 0, False: 0]
  ------------------
  944|      0|						(src->opcode != ZEND_DECLARE_LAMBDA_FUNCTION ||
  ------------------
  |  |  264|      0|#define ZEND_DECLARE_LAMBDA_FUNCTION        142
  ------------------
  |  Branch (944:8): [True: 0, False: 0]
  ------------------
  945|      0|						 src == opline -1)) {
  ------------------
  |  Branch (945:8): [True: 0, False: 0]
  ------------------
  946|      0|						src->result.var = opline->result.var;
  947|      0|						VAR_SOURCE(opline->op1) = NULL;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  948|      0|						VAR_SOURCE(opline->result) = src;
  ------------------
  |  |   60|      0|#define VAR_SOURCE(op) Tsource[VAR_NUM(op.var)]
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  949|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  950|      0|						++(*opt_count);
  951|      0|					}
  952|      0|				}
  953|      0|				break;
  954|      1|		}
  955|       |
  956|       |		/* get variable source */
  957|      1|		if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (957:7): [True: 0, False: 1]
  ------------------
  958|      0|			SET_VAR_SOURCE(opline);
  ------------------
  |  |   61|      0|#define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline
  |  |  ------------------
  |  |  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  959|      0|		}
  960|      1|		opline++;
  961|      1|	}
  962|      1|}
block_pass.c:strip_nops:
   74|      1|{
   75|      1|	uint32_t i, j;
   76|       |
   77|      1|	if (b->len == 0) {
  ------------------
  |  Branch (77:6): [True: 0, False: 1]
  ------------------
   78|      0|		return;
   79|      0|	}
   80|       |
   81|      1|	if (op_array->opcodes[b->start].opcode == ZEND_NOP) {
  ------------------
  |  |  124|      1|#define ZEND_NOP                              0
  ------------------
  |  Branch (81:6): [True: 0, False: 1]
  ------------------
   82|      0|		strip_leading_nops(op_array, b);
   83|      0|	}
   84|       |
   85|      1|	if (b->len == 0) {
  ------------------
  |  Branch (85:6): [True: 0, False: 1]
  ------------------
   86|      0|		return;
   87|      0|	}
   88|       |
   89|       |	/* strip the inside NOPs */
   90|      1|	i = j = b->start + 1;
   91|      1|	while (i < b->start + b->len) {
  ------------------
  |  Branch (91:9): [True: 0, False: 1]
  ------------------
   92|      0|		if (op_array->opcodes[i].opcode != ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (92:7): [True: 0, False: 0]
  ------------------
   93|      0|			if (i != j) {
  ------------------
  |  Branch (93:8): [True: 0, False: 0]
  ------------------
   94|      0|				op_array->opcodes[j] = op_array->opcodes[i];
   95|      0|			}
   96|      0|			j++;
   97|      0|		}
   98|      0|		i++;
   99|      0|	}
  100|      1|	b->len = j - b->start;
  101|      1|	while (j < i) {
  ------------------
  |  Branch (101:9): [True: 0, False: 1]
  ------------------
  102|      0|		MAKE_NOP(op_array->opcodes + j);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  103|      0|		j++;
  104|      0|	}
  105|      1|}
block_pass.c:zend_jmp_optimization:
 1213|      1|{
 1214|       |	/* last_op is the last opcode of the current block */
 1215|      1|	zend_basic_block *target_block, *follow_block, *next_block;
 1216|      1|	zend_op *last_op, *target;
 1217|      1|	int next, jmp_hitlist_count;
 1218|       |
 1219|      1|	if (block->len == 0) {
  ------------------
  |  Branch (1219:6): [True: 0, False: 1]
  ------------------
 1220|      0|		return;
 1221|      0|	}
 1222|       |
 1223|      1|	last_op = op_array->opcodes + block->start + block->len - 1;
 1224|      1|	switch (last_op->opcode) {
  ------------------
  |  Branch (1224:10): [True: 0, False: 1]
  ------------------
 1225|      0|		case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1225:3): [True: 0, False: 1]
  ------------------
 1226|      0|			jmp_hitlist_count = 0;
 1227|       |
 1228|      0|			target_block = get_target_block(cfg, block, 0, opt_count);
 1229|      0|			while (target_block->len == 1) {
  ------------------
  |  Branch (1229:11): [True: 0, False: 0]
  ------------------
 1230|      0|				target = op_array->opcodes + target_block->start;
 1231|      0|				if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1231:9): [True: 0, False: 0]
  ------------------
 1232|       |					/* JMP L, L: JMP L1 -> JMP L1 */
 1233|      0|					next = target_block->successors[0];
 1234|      0|				} else {
 1235|      0|					break;
 1236|      0|				}
 1237|      0|				CHECK_LOOP(next);
  ------------------
  |  | 1206|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1207|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  | 1208|      0|	} else { \
  |  | 1209|      0|		break; \
  |  | 1210|      0|	}
  ------------------
 1238|      0|				block->successors[0] = next;
 1239|      0|				++(*opt_count);
 1240|      0|				target_block = get_target_block(cfg, block, 0, opt_count);
 1241|      0|			}
 1242|       |
 1243|      0|			next_block = get_next_block(cfg, block);
 1244|      0|			if (target_block == next_block) {
  ------------------
  |  Branch (1244:8): [True: 0, False: 0]
  ------------------
 1245|       |				/* JMP(next) -> NOP */
 1246|      0|				MAKE_NOP(last_op);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1247|      0|				++(*opt_count);
 1248|      0|				block->len--;
 1249|      0|			} else if (target_block->len == 1) {
  ------------------
  |  Branch (1249:15): [True: 0, False: 0]
  ------------------
 1250|      0|				target = op_array->opcodes + target_block->start;
 1251|      0|				if ((target->opcode == ZEND_RETURN ||
  ------------------
  |  |  185|      0|#define ZEND_RETURN                          62
  ------------------
  |  Branch (1251:10): [True: 0, False: 0]
  ------------------
 1252|      0|				            target->opcode == ZEND_RETURN_BY_REF ||
  ------------------
  |  |  233|      0|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (1252:17): [True: 0, False: 0]
  ------------------
 1253|      0|				            target->opcode == ZEND_GENERATOR_RETURN) &&
  ------------------
  |  |  283|      0|#define ZEND_GENERATOR_RETURN               161
  ------------------
  |  Branch (1253:17): [True: 0, False: 0]
  ------------------
 1254|      0|				           !(op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)) {
  ------------------
  |  |  361|      0|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (1254:16): [True: 0, False: 0]
  ------------------
 1255|       |					/* JMP L, L: RETURN to immediate RETURN */
 1256|      0|					*last_op = *target;
 1257|      0|					if (last_op->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1257:10): [True: 0, False: 0]
  ------------------
 1258|      0|						zval zv;
 1259|      0|						ZVAL_COPY(&zv, &ZEND_OP1_LITERAL(last_op));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1260|      0|						last_op->op1.constant = zend_optimizer_add_literal(op_array, &zv);
 1261|      0|					}
 1262|      0|					block->successors_count = 0;
 1263|      0|					++(*opt_count);
 1264|      0|				}
 1265|      0|			}
 1266|      0|			break;
 1267|       |
 1268|      0|		case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (1268:3): [True: 0, False: 1]
  ------------------
 1269|      0|		case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (1269:3): [True: 0, False: 1]
  ------------------
 1270|      0|		case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (1270:3): [True: 0, False: 1]
  ------------------
 1271|      0|			jmp_hitlist_count = 0;
 1272|       |
 1273|      0|			target_block = get_target_block(cfg, block, 0, opt_count);
 1274|      0|			while (target_block->len == 1) {
  ------------------
  |  Branch (1274:11): [True: 0, False: 0]
  ------------------
 1275|      0|				target = op_array->opcodes + target_block->start;
 1276|       |
 1277|      0|				if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1277:9): [True: 0, False: 0]
  ------------------
 1278|       |					/* JMP_SET(X, L), L: JMP(L2) -> JMP_SET(X, L2) */
 1279|      0|					next = target_block->successors[0];
 1280|      0|					CHECK_LOOP(next);
  ------------------
  |  | 1206|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1207|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  | 1208|      0|	} else { \
  |  | 1209|      0|		break; \
  |  | 1210|      0|	}
  ------------------
 1281|      0|					block->successors[0] = next;
 1282|      0|					++(*opt_count);
 1283|      0|				} else {
 1284|      0|					break;
 1285|      0|				}
 1286|      0|				target_block = get_target_block(cfg, block, 0, opt_count);
 1287|      0|			}
 1288|      0|			break;
 1289|       |
 1290|      0|		case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (1290:3): [True: 0, False: 1]
  ------------------
 1291|      0|		case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (1291:3): [True: 0, False: 1]
  ------------------
 1292|      0|			jmp_hitlist_count = 0;
 1293|       |
 1294|      0|			target_block = get_target_block(cfg, block, 0, opt_count);
 1295|      0|			while (target_block->len == 1) {
  ------------------
  |  Branch (1295:11): [True: 0, False: 0]
  ------------------
 1296|      0|				target = op_array->opcodes + target_block->start;
 1297|       |
 1298|      0|				if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1298:9): [True: 0, False: 0]
  ------------------
 1299|       |					/* JMPZ(X, L), L: JMP(L2) -> JMPZ(X, L2) */
 1300|      0|					next = target_block->successors[0];
 1301|      0|				} else if (target->opcode == last_op->opcode &&
  ------------------
  |  Branch (1301:16): [True: 0, False: 0]
  ------------------
 1302|      0|				           SAME_VAR(target->op1, last_op->op1)) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1303|       |					/* JMPZ(X, L), L: JMPZ(X, L2) -> JMPZ(X, L2) */
 1304|      0|					next = target_block->successors[0];
 1305|      0|				} else if (target->opcode == INV_COND(last_op->opcode) &&
  ------------------
  |  |   36|      0|#define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  168|      0|#define ZEND_JMPNZ                           44
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |  |  Branch (36:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1305:16): [True: 0, False: 0]
  ------------------
 1306|      0|				           SAME_VAR(target->op1, last_op->op1)) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1307|       |					/* JMPZ(X, L), L: JMPNZ(X, L2) -> JMPZ(X, L+1) */
 1308|      0|					next = target_block->successors[1];
 1309|      0|				} else {
 1310|      0|					break;
 1311|      0|				}
 1312|      0|				CHECK_LOOP(next);
  ------------------
  |  | 1206|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1207|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  | 1208|      0|	} else { \
  |  | 1209|      0|		break; \
  |  | 1210|      0|	}
  ------------------
 1313|      0|				block->successors[0] = next;
 1314|      0|				++(*opt_count);
 1315|      0|				target_block = get_target_block(cfg, block, 0, opt_count);
 1316|      0|			}
 1317|       |
 1318|      0|			follow_block = get_follow_block(cfg, block, 1, opt_count);
 1319|      0|			if (target_block == follow_block) {
  ------------------
  |  Branch (1319:8): [True: 0, False: 0]
  ------------------
 1320|       |				/* L: JMP[N]Z(X, L+1) -> NOP or FREE(X) */
 1321|      0|				zend_optimizer_convert_to_free_op1(op_array, last_op);
 1322|      0|				if (last_op->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (1322:9): [True: 0, False: 0]
  ------------------
 1323|      0|					block->len--;
 1324|      0|				}
 1325|      0|				block->successors_count = 1;
 1326|      0|				++(*opt_count);
 1327|      0|			} else if (follow_block->len == 1) {
  ------------------
  |  Branch (1327:15): [True: 0, False: 0]
  ------------------
 1328|      0|				target = op_array->opcodes + follow_block->start;
 1329|      0|				if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1329:9): [True: 0, False: 0]
  ------------------
 1330|      0|				    if (block->successors[0] == follow_block->successors[0]) {
  ------------------
  |  Branch (1330:13): [True: 0, False: 0]
  ------------------
 1331|       |						/* JMPZ(X,L1), JMP(L1) -> NOP, JMP(L1) */
 1332|      0|						zend_optimizer_convert_to_free_op1(op_array, last_op);
 1333|      0|						if (last_op->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (1333:11): [True: 0, False: 0]
  ------------------
 1334|      0|							block->len--;
 1335|      0|						}
 1336|      0|						block->successors[0] = follow_block - cfg->blocks;
 1337|      0|						block->successors_count = 1;
 1338|      0|						++(*opt_count);
 1339|      0|						break;
 1340|      0|					} else if (!(follow_block->flags & (ZEND_BB_TARGET | ZEND_BB_PROTECTED))) {
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
              					} else if (!(follow_block->flags & (ZEND_BB_TARGET | ZEND_BB_PROTECTED))) {
  ------------------
  |  |   38|      0|#define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   25|      0|#define ZEND_BB_ENTRY            (1<<4)  /* stackless entry        */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   31|      0|#define ZEND_BB_RECV_ENTRY       (1<<12) /* RECV entry             */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   26|      0|#define ZEND_BB_TRY              (1<<5)  /* start of try block     */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   27|      0|#define ZEND_BB_CATCH            (1<<6)  /* start of catch block   */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   28|      0|#define ZEND_BB_FINALLY          (1<<7)  /* start of finally block */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BB_FINALLY_END      (1<<8)  /* end of finally block   */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   30|      0|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  |  |  ------------------
  ------------------
  |  Branch (1340:17): [True: 0, False: 0]
  ------------------
 1341|      0|						next_block = get_next_block(cfg, follow_block);
 1342|       |
 1343|      0|						if (target_block == next_block) {
  ------------------
  |  Branch (1343:11): [True: 0, False: 0]
  ------------------
 1344|       |							/* JMPZ(X,L1) JMP(L2) L1: -> JMPNZ(X,L2) NOP*/
 1345|       |
 1346|      0|							last_op->opcode = INV_COND(last_op->opcode);
  ------------------
  |  |   36|      0|#define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  168|      0|#define ZEND_JMPNZ                           44
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |  |  Branch (36:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1347|       |
 1348|      0|							block->successors[0] = follow_block->successors[0];
 1349|      0|							block->successors[1] = next_block - cfg->blocks;
 1350|       |
 1351|      0|							follow_block->flags &= ~ZEND_BB_REACHABLE;
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
 1352|      0|							MAKE_NOP(target);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1353|      0|							follow_block->len = 0;
 1354|       |
 1355|      0|							next_block->flags |= ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
 1356|       |
 1357|      0|							break;
 1358|      0|						}
 1359|      0|					}
 1360|      0|				}
 1361|      0|			}
 1362|      0|			break;
 1363|       |
 1364|      0|		case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (1364:3): [True: 0, False: 1]
  ------------------
 1365|      0|		case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (1365:3): [True: 0, False: 1]
  ------------------
 1366|      0|			jmp_hitlist_count = 0;
 1367|       |
 1368|      0|			target_block = get_target_block(cfg, block, 0, opt_count);
 1369|      0|			while (target_block->len == 1) {
  ------------------
  |  Branch (1369:11): [True: 0, False: 0]
  ------------------
 1370|      0|				target = op_array->opcodes + target_block->start;
 1371|       |
 1372|      0|				if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1372:9): [True: 0, False: 0]
  ------------------
 1373|       |					/* T = JMPZ_EX(X, L), L: JMP(L2) -> T = JMPZ(X, L2) */
 1374|      0|					next = target_block->successors[0];
 1375|      0|				} else if (target->opcode == last_op->opcode-3 &&
  ------------------
  |  Branch (1375:16): [True: 0, False: 0]
  ------------------
 1376|      0|				           (SAME_VAR(target->op1, last_op->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1377|      0|				            SAME_VAR(target->op1, last_op->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1378|       |					/* T = JMPZ_EX(X, L1), L1: JMPZ({X|T}, L2) -> T = JMPZ_EX(X, L2) */
 1379|      0|					next = target_block->successors[0];
 1380|      0|				} else if (target->opcode == last_op->opcode &&
  ------------------
  |  Branch (1380:16): [True: 0, False: 0]
  ------------------
 1381|      0|				           target->result.var == last_op->result.var &&
  ------------------
  |  Branch (1381:16): [True: 0, False: 0]
  ------------------
 1382|      0|				           (SAME_VAR(target->op1, last_op->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1383|      0|				            SAME_VAR(target->op1, last_op->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1384|       |					/* T = JMPZ_EX(X, L1), L1: T = JMPZ_EX({X|T}, L2) -> T = JMPZ_EX(X, L2) */
 1385|      0|					next = target_block->successors[0];
 1386|      0|				} else if (target->opcode == INV_EX_COND(last_op->opcode) &&
  ------------------
  |  |   37|      0|#define INV_EX_COND(op)    ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  |  |  ------------------
  |  |               #define INV_EX_COND(op)    ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  168|      0|#define ZEND_JMPNZ                           44
  |  |  ------------------
  |  |               #define INV_EX_COND(op)    ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |  |  Branch (37:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1386:16): [True: 0, False: 0]
  ------------------
 1387|      0|				           (SAME_VAR(target->op1, last_op->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1388|      0|				            SAME_VAR(target->op1, last_op->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1389|       |					/* T = JMPZ_EX(X, L1), L1: JMPNZ({X|T1}, L2) -> T = JMPZ_EX(X, L1+1) */
 1390|      0|					next = target_block->successors[1];
 1391|      0|				} else if (target->opcode == INV_EX_COND_EX(last_op->opcode) &&
  ------------------
  |  |   39|      0|#define INV_EX_COND_EX(op) ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ_EX : ZEND_JMPZ_EX)
  |  |  ------------------
  |  |  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  |  |  ------------------
  |  |               #define INV_EX_COND_EX(op) ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ_EX : ZEND_JMPZ_EX)
  |  |  ------------------
  |  |  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  |  |  ------------------
  |  |               #define INV_EX_COND_EX(op) ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ_EX : ZEND_JMPZ_EX)
  |  |  ------------------
  |  |  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  |  |  ------------------
  |  |  |  Branch (39:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1391:16): [True: 0, False: 0]
  ------------------
 1392|      0|				           target->result.var == last_op->result.var &&
  ------------------
  |  Branch (1392:16): [True: 0, False: 0]
  ------------------
 1393|      0|				           (SAME_VAR(target->op1, last_op->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1394|      0|				            SAME_VAR(target->op1, last_op->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1395|       |					/* T = JMPZ_EX(X, L1), L1: T = JMPNZ_EX({X|T}, L2) -> T = JMPZ_EX(X, L1+1) */
 1396|      0|					next = target_block->successors[1];
 1397|      0|				} else if (target->opcode == ZEND_BOOL &&
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (1397:16): [True: 0, False: 0]
  ------------------
 1398|      0|				           (SAME_VAR(target->op1, last_op->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1399|      0|				            SAME_VAR(target->op1, last_op->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1400|       |					/* convert Y = JMPZ_EX(X,L1), L1: Z = BOOL(Y) to
 1401|       |					   Z = JMPZ_EX(X,L1+1) */
 1402|       |
 1403|       |					/* NOTE: This optimization pattern is not safe, but works, */
 1404|       |					/*       because result of JMPZ_EX instruction             */
 1405|       |					/*       is not used on the following path and             */
 1406|       |					/*       should be used once on the branch path.           */
 1407|       |					/*                                                         */
 1408|       |					/*       The pattern works well only if jumps processed in */
 1409|       |					/*       direct order, otherwise it breaks JMPZ_EX         */
 1410|       |					/*       sequences too early.                              */
 1411|      0|					last_op->result.var = target->result.var;
 1412|      0|					next = target_block->successors[0];
 1413|      0|				} else {
 1414|      0|					break;
 1415|      0|				}
 1416|      0|				CHECK_LOOP(next);
  ------------------
  |  | 1206|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1207|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  | 1208|      0|	} else { \
  |  | 1209|      0|		break; \
  |  | 1210|      0|	}
  ------------------
 1417|      0|				block->successors[0] = next;
 1418|      0|				++(*opt_count);
 1419|      0|				target_block = get_target_block(cfg, block, 0, opt_count);
 1420|      0|			}
 1421|       |
 1422|      0|			follow_block = get_follow_block(cfg, block, 1, opt_count);
 1423|      0|			if (target_block == follow_block) {
  ------------------
  |  Branch (1423:8): [True: 0, False: 0]
  ------------------
 1424|       |				/* L: T = JMP[N]Z_EX(X, L+1) -> T = BOOL(X) */
 1425|      0|				last_op->opcode = ZEND_BOOL;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
 1426|      0|				last_op->op2.num = 0;
 1427|      0|				block->successors_count = 1;
 1428|      0|				++(*opt_count);
 1429|      0|				break;
 1430|      0|			}
 1431|      0|			break;
 1432|      1|	}
 1433|      1|}
block_pass.c:zend_merge_blocks:
 1644|      1|{
 1645|      1|	zend_basic_block *b, *bb;
 1646|      1|	zend_basic_block *prev = NULL;
 1647|       |
 1648|      2|	for (uint32_t i = 0; i < cfg->blocks_count; i++) {
  ------------------
  |  Branch (1648:23): [True: 1, False: 1]
  ------------------
 1649|      1|		b = cfg->blocks + i;
 1650|      1|		if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1650:7): [True: 1, False: 0]
  ------------------
 1651|      1|			if ((b->flags & ZEND_BB_FOLLOW) &&
  ------------------
  |  |   22|      1|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
  |  Branch (1651:8): [True: 0, False: 1]
  ------------------
 1652|      0|			    !(b->flags & (ZEND_BB_TARGET | ZEND_BB_PROTECTED)) &&
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
              			    !(b->flags & (ZEND_BB_TARGET | ZEND_BB_PROTECTED)) &&
  ------------------
  |  |   38|      0|#define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   25|      0|#define ZEND_BB_ENTRY            (1<<4)  /* stackless entry        */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   31|      0|#define ZEND_BB_RECV_ENTRY       (1<<12) /* RECV entry             */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   26|      0|#define ZEND_BB_TRY              (1<<5)  /* start of try block     */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   27|      0|#define ZEND_BB_CATCH            (1<<6)  /* start of catch block   */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   28|      0|#define ZEND_BB_FINALLY          (1<<7)  /* start of finally block */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BB_FINALLY_END      (1<<8)  /* end of finally block   */
  |  |  ------------------
  |  |               #define ZEND_BB_PROTECTED        (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
  |  |  ------------------
  |  |  |  |   30|      0|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  |  |  ------------------
  ------------------
  |  Branch (1652:8): [True: 0, False: 0]
  ------------------
 1653|      0|			    prev && prev->successors_count == 1 && prev->successors[0] == i)
  ------------------
  |  Branch (1653:8): [True: 0, False: 0]
  |  Branch (1653:16): [True: 0, False: 0]
  |  Branch (1653:47): [True: 0, False: 0]
  ------------------
 1654|      0|			{
 1655|      0|				zend_op *last_op = op_array->opcodes + prev->start + prev->len - 1;
 1656|      0|				if (prev->len != 0 && last_op->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1656:9): [True: 0, False: 0]
  |  Branch (1656:27): [True: 0, False: 0]
  ------------------
 1657|      0|					MAKE_NOP(last_op);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1658|      0|				}
 1659|       |
 1660|      0|				for (bb = prev + 1; bb != b; bb++) {
  ------------------
  |  Branch (1660:25): [True: 0, False: 0]
  ------------------
 1661|      0|					zend_op *op = op_array->opcodes + bb->start;
 1662|      0|					const zend_op *end = op + bb->len;
 1663|      0|					while (op < end) {
  ------------------
  |  Branch (1663:13): [True: 0, False: 0]
  ------------------
 1664|      0|						if (op->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1664:11): [True: 0, False: 0]
  ------------------
 1665|      0|							literal_dtor(&ZEND_OP1_LITERAL(op));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1666|      0|						}
 1667|      0|						if (op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1667:11): [True: 0, False: 0]
  ------------------
 1668|      0|							literal_dtor(&ZEND_OP2_LITERAL(op));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1669|      0|						}
 1670|      0|						MAKE_NOP(op);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1671|      0|						op++;
 1672|      0|					}
 1673|       |					/* make block empty */
 1674|      0|					bb->len = 0;
 1675|      0|				}
 1676|       |
 1677|       |				/* re-link */
 1678|      0|				prev->flags |= (b->flags & ZEND_BB_EXIT);
  ------------------
  |  |   24|      0|#define ZEND_BB_EXIT             (1<<3)  /* without successors     */
  ------------------
 1679|      0|				prev->len = b->start + b->len - prev->start;
 1680|      0|				prev->successors_count = b->successors_count;
 1681|      0|				if (b->successors != b->successors_storage) {
  ------------------
  |  Branch (1681:9): [True: 0, False: 0]
  ------------------
 1682|      0|					prev->successors = b->successors;
 1683|      0|					b->successors = b->successors_storage;
 1684|      0|				} else {
 1685|      0|					memcpy(prev->successors, b->successors, b->successors_count * sizeof(int));
 1686|      0|				}
 1687|       |
 1688|       |				/* unlink & make block empty and unreachable */
 1689|      0|				b->flags = 0;
 1690|      0|				b->len = 0;
 1691|      0|				b->successors_count = 0;
 1692|      0|				++(*opt_count);
 1693|      1|			} else {
 1694|      1|				prev = b;
 1695|      1|			}
 1696|      1|		}
 1697|      1|	}
 1698|      1|}
block_pass.c:assemble_code_blocks:
  966|      1|{
  967|      1|	zend_basic_block *blocks = cfg->blocks;
  968|      1|	const zend_basic_block *end = blocks + cfg->blocks_count;
  969|      1|	zend_basic_block *b;
  970|      1|	zend_op *new_opcodes;
  971|      1|	zend_op *opline;
  972|      1|	uint32_t len = 0;
  973|       |
  974|      2|	for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (974:19): [True: 1, False: 1]
  ------------------
  975|      1|		if (b->len == 0) {
  ------------------
  |  Branch (975:7): [True: 0, False: 1]
  ------------------
  976|      0|			continue;
  977|      0|		}
  978|      1|		if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
              		if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   30|      1|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  |  Branch (978:7): [True: 1, False: 0]
  ------------------
  979|      1|			opline = op_array->opcodes + b->start + b->len - 1;
  980|      1|			if (opline->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      1|#define ZEND_JMP                             42
  ------------------
  |  Branch (980:8): [True: 0, False: 1]
  ------------------
  981|      0|				const zend_basic_block *next = b + 1;
  982|       |
  983|      0|				while (next < end && !(next->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (983:12): [True: 0, False: 0]
  |  Branch (983:26): [True: 0, False: 0]
  ------------------
  984|      0|					next++;
  985|      0|				}
  986|      0|				if (next < end && next == blocks + b->successors[0]) {
  ------------------
  |  Branch (986:9): [True: 0, False: 0]
  |  Branch (986:23): [True: 0, False: 0]
  ------------------
  987|       |					/* JMP to the next block - strip it */
  988|      0|					MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  989|      0|					b->len--;
  990|      0|				}
  991|      1|			} else if (b->len == 1 && opline->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      1|#define ZEND_NOP                              0
  ------------------
  |  Branch (991:15): [True: 1, False: 0]
  |  Branch (991:30): [True: 0, False: 1]
  ------------------
  992|       |				/* skip empty block */
  993|      0|				b->len--;
  994|      0|			}
  995|      1|			len += b->len;
  996|      1|		} else {
  997|       |			/* this block will not be used, delete all constants there */
  998|      0|			const zend_op *op = op_array->opcodes + b->start;
  999|      0|			const zend_op *last_op = op + b->len;
 1000|      0|			for (; op < last_op; op++) {
  ------------------
  |  Branch (1000:11): [True: 0, False: 0]
  ------------------
 1001|      0|				if (op->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1001:9): [True: 0, False: 0]
  ------------------
 1002|      0|					literal_dtor(&ZEND_OP1_LITERAL(op));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1003|      0|				}
 1004|      0|				if (op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1004:9): [True: 0, False: 0]
  ------------------
 1005|      0|					literal_dtor(&ZEND_OP2_LITERAL(op));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1006|      0|				}
 1007|      0|			}
 1008|      0|		}
 1009|      1|	}
 1010|       |
 1011|      1|	new_opcodes = emalloc(len * sizeof(zend_op));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1012|      1|	opline = new_opcodes;
 1013|       |
 1014|       |	/* Copy code of reachable blocks into a single buffer */
 1015|      2|	for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (1015:19): [True: 1, False: 1]
  ------------------
 1016|      1|		if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
              		if (b->flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   30|      1|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  |  Branch (1016:7): [True: 1, False: 0]
  ------------------
 1017|      1|			memcpy(opline, op_array->opcodes + b->start, b->len * sizeof(zend_op));
 1018|      1|			b->start = opline - new_opcodes;
 1019|      1|			opline += b->len;
 1020|      1|		}
 1021|      1|	}
 1022|       |
 1023|       |	/* adjust jump targets */
 1024|      1|	efree(op_array->opcodes);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1025|      1|	op_array->opcodes = new_opcodes;
 1026|      1|	op_array->last = len;
 1027|       |
 1028|      2|	for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (1028:19): [True: 1, False: 1]
  ------------------
 1029|      1|		if (!(b->flags & ZEND_BB_REACHABLE) || b->len == 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1029:7): [True: 0, False: 1]
  |  Branch (1029:42): [True: 0, False: 1]
  ------------------
 1030|      0|			continue;
 1031|      0|		}
 1032|      1|		opline = op_array->opcodes + b->start + b->len - 1;
 1033|      1|		switch (opline->opcode) {
  ------------------
  |  Branch (1033:11): [True: 0, False: 1]
  ------------------
 1034|      0|			case ZEND_FAST_CALL:
  ------------------
  |  |  284|      0|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (1034:4): [True: 0, False: 1]
  ------------------
 1035|      0|			case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (1035:4): [True: 0, False: 1]
  ------------------
 1036|      0|				ZEND_SET_OP_JMP_ADDR(opline, opline->op1, new_opcodes + blocks[b->successors[0]].start);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1037|      0|				break;
 1038|      0|			case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (1038:4): [True: 0, False: 1]
  ------------------
 1039|      0|			case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (1039:4): [True: 0, False: 1]
  ------------------
 1040|      0|			case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (1040:4): [True: 0, False: 1]
  ------------------
 1041|      0|			case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (1041:4): [True: 0, False: 1]
  ------------------
 1042|      0|			case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      0|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (1042:4): [True: 0, False: 1]
  ------------------
 1043|      0|			case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (1043:4): [True: 0, False: 1]
  ------------------
 1044|      0|			case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (1044:4): [True: 0, False: 1]
  ------------------
 1045|      0|			case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (1045:4): [True: 0, False: 1]
  ------------------
 1046|      0|			case ZEND_ASSERT_CHECK:
  ------------------
  |  |  273|      0|#define ZEND_ASSERT_CHECK                   151
  ------------------
  |  Branch (1046:4): [True: 0, False: 1]
  ------------------
 1047|      0|			case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (1047:4): [True: 0, False: 1]
  ------------------
 1048|      0|			case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (1048:4): [True: 0, False: 1]
  ------------------
 1049|      0|			case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (1049:4): [True: 0, False: 1]
  ------------------
 1050|      0|				ZEND_SET_OP_JMP_ADDR(opline, opline->op2, new_opcodes + blocks[b->successors[0]].start);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1051|      0|				break;
 1052|      0|			case ZEND_CATCH:
  ------------------
  |  |  229|      0|#define ZEND_CATCH                          107
  ------------------
  |  Branch (1052:4): [True: 0, False: 1]
  ------------------
 1053|      0|				if (!(opline->extended_value & ZEND_LAST_CATCH)) {
  ------------------
  |  | 1110|      0|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  |  Branch (1053:9): [True: 0, False: 0]
  ------------------
 1054|      0|					ZEND_SET_OP_JMP_ADDR(opline, opline->op2, new_opcodes + blocks[b->successors[0]].start);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1055|      0|				}
 1056|      0|				break;
 1057|      0|			case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (1057:4): [True: 0, False: 1]
  ------------------
 1058|      0|			case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (1058:4): [True: 0, False: 1]
  ------------------
 1059|      0|				opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[0]].start);
  ------------------
  |  |  762|      0|	((char*)(target) - (char*)(opline))
  ------------------
 1060|      0|				break;
 1061|      0|			case ZEND_SWITCH_LONG:
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (1061:4): [True: 0, False: 1]
  ------------------
 1062|      0|			case ZEND_SWITCH_STRING:
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (1062:4): [True: 0, False: 1]
  ------------------
 1063|      0|			case ZEND_MATCH:
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (1063:4): [True: 0, False: 1]
  ------------------
 1064|      0|			{
 1065|      0|				const HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1066|      0|				zval *zv;
 1067|      0|				uint32_t s = 0;
 1068|      0|				ZEND_ASSERT(b->successors_count == (opline->opcode == ZEND_MATCH ? 1 : 2) + zend_hash_num_elements(jumptable));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1068:5): [True: 0, False: 0]
  |  Branch (1068:5): [True: 0, False: 0]
  |  Branch (1068:5): [True: 0, False: 0]
  |  Branch (1068:5): [True: 0, False: 0]
  ------------------
 1069|       |
 1070|      0|				ZEND_HASH_FOREACH_VAL(jumptable, zv) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 1071|      0|					Z_LVAL_P(zv) = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[s++]].start);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              					Z_LVAL_P(zv) = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[s++]].start);
  ------------------
  |  |  762|      0|	((char*)(target) - (char*)(opline))
  ------------------
 1072|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1073|      0|				opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[s++]].start);
  ------------------
  |  |  762|      0|	((char*)(target) - (char*)(opline))
  ------------------
 1074|      0|				break;
 1075|      0|			}
 1076|      1|		}
 1077|      1|	}
 1078|       |
 1079|       |	/* adjust exception jump targets & remove unused try_catch_array entries */
 1080|      1|	if (op_array->last_try_catch) {
  ------------------
  |  Branch (1080:6): [True: 0, False: 1]
  ------------------
 1081|      0|		uint32_t i, j;
 1082|      0|		uint32_t *map;
 1083|      0|		ALLOCA_FLAG(use_heap);
 1084|       |
 1085|      0|		map = (uint32_t *)do_alloca(sizeof(uint32_t) * op_array->last_try_catch, use_heap);
  ------------------
  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1086|      0|		for (i = 0, j = 0; i< op_array->last_try_catch; i++) {
  ------------------
  |  Branch (1086:22): [True: 0, False: 0]
  ------------------
 1087|      0|			if (blocks[cfg->map[op_array->try_catch_array[i].try_op]].flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1087:8): [True: 0, False: 0]
  ------------------
 1088|      0|				map[i] = j;
 1089|      0|				op_array->try_catch_array[j].try_op = blocks[cfg->map[op_array->try_catch_array[i].try_op]].start;
 1090|      0|				if (op_array->try_catch_array[i].catch_op) {
  ------------------
  |  Branch (1090:9): [True: 0, False: 0]
  ------------------
 1091|      0|					op_array->try_catch_array[j].catch_op = blocks[cfg->map[op_array->try_catch_array[i].catch_op]].start;
 1092|      0|				} else {
 1093|      0|					op_array->try_catch_array[j].catch_op =  0;
 1094|      0|				}
 1095|      0|				if (op_array->try_catch_array[i].finally_op) {
  ------------------
  |  Branch (1095:9): [True: 0, False: 0]
  ------------------
 1096|      0|					op_array->try_catch_array[j].finally_op = blocks[cfg->map[op_array->try_catch_array[i].finally_op]].start;
 1097|      0|				} else {
 1098|      0|					op_array->try_catch_array[j].finally_op =  0;
 1099|      0|				}
 1100|      0|				if (!op_array->try_catch_array[i].finally_end) {
  ------------------
  |  Branch (1100:9): [True: 0, False: 0]
  ------------------
 1101|      0|					op_array->try_catch_array[j].finally_end = 0;
 1102|      0|				} else {
 1103|      0|					op_array->try_catch_array[j].finally_end = blocks[cfg->map[op_array->try_catch_array[i].finally_end]].start;
 1104|      0|				}
 1105|      0|				j++;
 1106|      0|			}
 1107|      0|		}
 1108|      0|		if (i != j) {
  ------------------
  |  Branch (1108:7): [True: 0, False: 0]
  ------------------
 1109|      0|			op_array->last_try_catch = j;
 1110|      0|			if (j == 0) {
  ------------------
  |  Branch (1110:8): [True: 0, False: 0]
  ------------------
 1111|      0|				efree(op_array->try_catch_array);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1112|      0|				op_array->try_catch_array = NULL;
 1113|      0|			}
 1114|       |
 1115|      0|			if (op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK) {
  ------------------
  |  |  361|      0|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (1115:8): [True: 0, False: 0]
  ------------------
 1116|      0|				zend_op *finally_opline = new_opcodes;
 1117|      0|				const zend_op *last_finally_op = finally_opline + len;
 1118|      0|				while (finally_opline < last_finally_op) {
  ------------------
  |  Branch (1118:12): [True: 0, False: 0]
  ------------------
 1119|      0|					if (finally_opline->opcode == ZEND_FAST_RET &&
  ------------------
  |  |  285|      0|#define ZEND_FAST_RET                       163
  ------------------
  |  Branch (1119:10): [True: 0, False: 0]
  ------------------
 1120|      0|					    finally_opline->op2.num != (uint32_t)-1 &&
  ------------------
  |  Branch (1120:10): [True: 0, False: 0]
  ------------------
 1121|      0|					    finally_opline->op2.num < j) {
  ------------------
  |  Branch (1121:10): [True: 0, False: 0]
  ------------------
 1122|      0|						finally_opline->op2.num = map[finally_opline->op2.num];
 1123|      0|					}
 1124|      0|					finally_opline++;
 1125|      0|				}
 1126|      0|			}
 1127|      0|		}
 1128|      0|		free_alloca(map, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1129|      0|	}
 1130|       |
 1131|       |	/* rebuild map (just for printing) */
 1132|      1|	memset(cfg->map, -1, sizeof(int) * op_array->last);
 1133|      2|	for (uint32_t n = 0; n < cfg->blocks_count; n++) {
  ------------------
  |  Branch (1133:23): [True: 1, False: 1]
  ------------------
 1134|      1|		if (cfg->blocks[n].flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
              		if (cfg->blocks[n].flags & (ZEND_BB_REACHABLE|ZEND_BB_UNREACHABLE_FREE)) {
  ------------------
  |  |   30|      1|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  |  Branch (1134:7): [True: 1, False: 0]
  ------------------
 1135|      1|			cfg->map[cfg->blocks[n].start] = n;
 1136|      1|		}
 1137|      1|	}
 1138|      1|}

zend_optimizer_compact_literals:
  109|      1|{
  110|      1|	zend_op *opline, *end;
  111|      1|	int n, *map;
  112|      1|	uint32_t cache_size;
  113|      1|	zval zv, *pos;
  114|      1|	literal_info *info;
  115|      1|	int l_null = -1;
  116|      1|	int l_false = -1;
  117|      1|	int l_true = -1;
  118|      1|	int l_empty_arr = -1;
  119|      1|	HashTable hash;
  120|      1|	zend_string *key = NULL;
  121|      1|	void *checkpoint = zend_arena_checkpoint(ctx->arena);
  122|      1|	int *const_slot, *class_slot, *func_slot, *bind_var_slot, *property_slot, *method_slot, *jmp_slot;
  123|       |
  124|      1|	if (op_array->last_literal) {
  ------------------
  |  Branch (124:6): [True: 1, False: 0]
  ------------------
  125|      1|		uint32_t j;
  126|      1|		info = (literal_info*)zend_arena_calloc(&ctx->arena, op_array->last_literal, sizeof(literal_info));
  127|       |
  128|       |	    /* Mark literals of specific types */
  129|      1|		opline = op_array->opcodes;
  130|      1|		end = opline + op_array->last;
  131|      2|		while (opline < end) {
  ------------------
  |  Branch (131:10): [True: 1, False: 1]
  ------------------
  132|      1|			switch (opline->opcode) {
  133|      0|				case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (133:5): [True: 0, False: 1]
  ------------------
  134|      0|					LITERAL_INFO(opline->op1.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  135|      0|					break;
  136|      0|				case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      0|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (136:5): [True: 0, False: 1]
  ------------------
  137|      0|					LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  138|      0|					break;
  139|      0|				case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (139:5): [True: 0, False: 1]
  ------------------
  140|      0|					LITERAL_INFO(opline->op2.constant, 3);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  141|      0|					break;
  142|      0|				case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|      0|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (142:5): [True: 0, False: 1]
  ------------------
  143|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (143:10): [True: 0, False: 0]
  ------------------
  144|      0|						LITERAL_INFO(opline->op1.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  145|      0|					}
  146|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (146:10): [True: 0, False: 0]
  ------------------
  147|      0|						LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  148|      0|					}
  149|      0|					break;
  150|      0|				case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|      0|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (150:5): [True: 0, False: 1]
  ------------------
  151|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (151:10): [True: 0, False: 0]
  ------------------
  152|      0|						LITERAL_INFO(opline->op1.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  153|      0|					}
  154|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (154:10): [True: 0, False: 0]
  ------------------
  155|      0|						LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  156|      0|					}
  157|      0|					break;
  158|      0|				case ZEND_INIT_PARENT_PROPERTY_HOOK_CALL:
  ------------------
  |  |  331|      0|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (158:5): [True: 0, False: 1]
  ------------------
  159|      0|					LITERAL_INFO(opline->op1.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  160|      0|					break;
  161|      0|				case ZEND_CATCH:
  ------------------
  |  |  229|      0|#define ZEND_CATCH                          107
  ------------------
  |  Branch (161:5): [True: 0, False: 1]
  ------------------
  162|      0|					LITERAL_INFO(opline->op1.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  163|      0|					break;
  164|      0|				case ZEND_FETCH_CONSTANT:
  ------------------
  |  |  221|      0|#define ZEND_FETCH_CONSTANT                  99
  ------------------
  |  Branch (164:5): [True: 0, False: 1]
  ------------------
  165|      0|					if (opline->op1.num & IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE) {
  ------------------
  |  | 1149|      0|#define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800
  ------------------
  |  Branch (165:10): [True: 0, False: 0]
  ------------------
  166|      0|						LITERAL_INFO(opline->op2.constant, 3);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  167|      0|					} else {
  168|      0|						LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  169|      0|					}
  170|      0|					break;
  171|      0|				case ZEND_FETCH_CLASS_CONSTANT:
  ------------------
  |  |  303|      0|#define ZEND_FETCH_CLASS_CONSTANT           181
  ------------------
  |  Branch (171:5): [True: 0, False: 1]
  ------------------
  172|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (172:10): [True: 0, False: 0]
  ------------------
  173|      0|						LITERAL_INFO(opline->op1.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  174|      0|					}
  175|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (175:10): [True: 0, False: 0]
  ------------------
  176|      0|						LITERAL_INFO(opline->op2.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  177|      0|					}
  178|      0|					break;
  179|      0|				case ZEND_ASSIGN_STATIC_PROP:
  ------------------
  |  |  149|      0|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
  |  Branch (179:5): [True: 0, False: 1]
  ------------------
  180|      0|				case ZEND_ASSIGN_STATIC_PROP_REF:
  ------------------
  |  |  157|      0|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
  |  Branch (180:5): [True: 0, False: 1]
  ------------------
  181|      0|				case ZEND_FETCH_STATIC_PROP_R:
  ------------------
  |  |  295|      0|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
  |  Branch (181:5): [True: 0, False: 1]
  ------------------
  182|      0|				case ZEND_FETCH_STATIC_PROP_W:
  ------------------
  |  |  296|      0|#define ZEND_FETCH_STATIC_PROP_W            174
  ------------------
  |  Branch (182:5): [True: 0, False: 1]
  ------------------
  183|      0|				case ZEND_FETCH_STATIC_PROP_RW:
  ------------------
  |  |  297|      0|#define ZEND_FETCH_STATIC_PROP_RW           175
  ------------------
  |  Branch (183:5): [True: 0, False: 1]
  ------------------
  184|      0|				case ZEND_FETCH_STATIC_PROP_IS:
  ------------------
  |  |  298|      0|#define ZEND_FETCH_STATIC_PROP_IS           176
  ------------------
  |  Branch (184:5): [True: 0, False: 1]
  ------------------
  185|      0|				case ZEND_FETCH_STATIC_PROP_UNSET:
  ------------------
  |  |  300|      0|#define ZEND_FETCH_STATIC_PROP_UNSET        178
  ------------------
  |  Branch (185:5): [True: 0, False: 1]
  ------------------
  186|      0|				case ZEND_FETCH_STATIC_PROP_FUNC_ARG:
  ------------------
  |  |  299|      0|#define ZEND_FETCH_STATIC_PROP_FUNC_ARG     177
  ------------------
  |  Branch (186:5): [True: 0, False: 1]
  ------------------
  187|      0|				case ZEND_UNSET_STATIC_PROP:
  ------------------
  |  |  301|      0|#define ZEND_UNSET_STATIC_PROP              179
  ------------------
  |  Branch (187:5): [True: 0, False: 1]
  ------------------
  188|      0|				case ZEND_ISSET_ISEMPTY_STATIC_PROP:
  ------------------
  |  |  302|      0|#define ZEND_ISSET_ISEMPTY_STATIC_PROP      180
  ------------------
  |  Branch (188:5): [True: 0, False: 1]
  ------------------
  189|      0|				case ZEND_PRE_INC_STATIC_PROP:
  ------------------
  |  |  162|      0|#define ZEND_PRE_INC_STATIC_PROP             38
  ------------------
  |  Branch (189:5): [True: 0, False: 1]
  ------------------
  190|      0|				case ZEND_PRE_DEC_STATIC_PROP:
  ------------------
  |  |  163|      0|#define ZEND_PRE_DEC_STATIC_PROP             39
  ------------------
  |  Branch (190:5): [True: 0, False: 1]
  ------------------
  191|      0|				case ZEND_POST_INC_STATIC_PROP:
  ------------------
  |  |  164|      0|#define ZEND_POST_INC_STATIC_PROP            40
  ------------------
  |  Branch (191:5): [True: 0, False: 1]
  ------------------
  192|      0|				case ZEND_POST_DEC_STATIC_PROP:
  ------------------
  |  |  165|      0|#define ZEND_POST_DEC_STATIC_PROP            41
  ------------------
  |  Branch (192:5): [True: 0, False: 1]
  ------------------
  193|      0|				case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|      0|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (193:5): [True: 0, False: 1]
  ------------------
  194|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (194:10): [True: 0, False: 0]
  ------------------
  195|      0|						LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  196|      0|					}
  197|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (197:10): [True: 0, False: 0]
  ------------------
  198|      0|						LITERAL_INFO(opline->op1.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  199|      0|					}
  200|      0|					break;
  201|      0|				case ZEND_FETCH_CLASS:
  ------------------
  |  |  231|      0|#define ZEND_FETCH_CLASS                    109
  ------------------
  |  Branch (201:5): [True: 0, False: 1]
  ------------------
  202|      0|				case ZEND_INSTANCEOF:
  ------------------
  |  |  260|      0|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (202:5): [True: 0, False: 1]
  ------------------
  203|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (203:10): [True: 0, False: 0]
  ------------------
  204|      0|						LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  205|      0|					}
  206|      0|					break;
  207|      0|				case ZEND_NEW:
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (207:5): [True: 0, False: 1]
  ------------------
  208|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (208:10): [True: 0, False: 0]
  ------------------
  209|      0|						LITERAL_INFO(opline->op1.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  210|      0|					}
  211|      0|					break;
  212|      0|				case ZEND_DECLARE_CLASS:
  ------------------
  |  |  266|      0|#define ZEND_DECLARE_CLASS                  144
  ------------------
  |  Branch (212:5): [True: 0, False: 1]
  ------------------
  213|      0|				case ZEND_DECLARE_CLASS_DELAYED:
  ------------------
  |  |  267|      0|#define ZEND_DECLARE_CLASS_DELAYED          145
  ------------------
  |  Branch (213:5): [True: 0, False: 1]
  ------------------
  214|      0|					LITERAL_INFO(opline->op1.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  215|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (215:10): [True: 0, False: 0]
  ------------------
  216|      0|						LITERAL_INFO(opline->op2.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  217|      0|					}
  218|      0|					break;
  219|      0|				case ZEND_ISSET_ISEMPTY_DIM_OBJ:
  ------------------
  |  |  237|      0|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
  |  Branch (219:5): [True: 0, False: 1]
  ------------------
  220|      0|				case ZEND_ASSIGN_DIM:
  ------------------
  |  |  147|      0|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (220:5): [True: 0, False: 1]
  ------------------
  221|      0|				case ZEND_UNSET_DIM:
  ------------------
  |  |  198|      0|#define ZEND_UNSET_DIM                       75
  ------------------
  |  Branch (221:5): [True: 0, False: 1]
  ------------------
  222|      0|				case ZEND_FETCH_DIM_R:
  ------------------
  |  |  203|      0|#define ZEND_FETCH_DIM_R                     81
  ------------------
  |  Branch (222:5): [True: 0, False: 1]
  ------------------
  223|      0|				case ZEND_FETCH_DIM_W:
  ------------------
  |  |  206|      0|#define ZEND_FETCH_DIM_W                     84
  ------------------
  |  Branch (223:5): [True: 0, False: 1]
  ------------------
  224|      0|				case ZEND_FETCH_DIM_RW:
  ------------------
  |  |  209|      0|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (224:5): [True: 0, False: 1]
  ------------------
  225|      0|				case ZEND_FETCH_DIM_IS:
  ------------------
  |  |  212|      0|#define ZEND_FETCH_DIM_IS                    90
  ------------------
  |  Branch (225:5): [True: 0, False: 1]
  ------------------
  226|      0|				case ZEND_FETCH_DIM_FUNC_ARG:
  ------------------
  |  |  215|      0|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (226:5): [True: 0, False: 1]
  ------------------
  227|      0|				case ZEND_FETCH_DIM_UNSET:
  ------------------
  |  |  218|      0|#define ZEND_FETCH_DIM_UNSET                 96
  ------------------
  |  Branch (227:5): [True: 0, False: 1]
  ------------------
  228|      0|				case ZEND_FETCH_LIST_R:
  ------------------
  |  |  220|      0|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (228:5): [True: 0, False: 1]
  ------------------
  229|      0|				case ZEND_FETCH_LIST_W:
  ------------------
  |  |  277|      0|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (229:5): [True: 0, False: 1]
  ------------------
  230|      0|				case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (230:5): [True: 0, False: 1]
  ------------------
  231|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (231:10): [True: 0, False: 0]
  ------------------
  232|      0|						LITERAL_INFO(opline->op1.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  233|      0|					}
  234|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (234:10): [True: 0, False: 0]
  ------------------
  235|      0|						if (Z_EXTRA(op_array->literals[opline->op2.constant]) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
              						if (Z_EXTRA(op_array->literals[opline->op2.constant]) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (235:11): [True: 0, False: 0]
  ------------------
  236|      0|							LITERAL_INFO(opline->op2.constant, 2);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  237|      0|						} else {
  238|      0|							LITERAL_INFO(opline->op2.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  239|      0|						}
  240|      0|					}
  241|      0|					break;
  242|      1|				default:
  ------------------
  |  Branch (242:5): [True: 1, False: 0]
  ------------------
  243|      1|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (243:10): [True: 1, False: 0]
  ------------------
  244|      1|						LITERAL_INFO(opline->op1.constant, 1);
  ------------------
  |  |   40|      1|#define LITERAL_INFO(n, related) do { \
  |  |   41|      1|		info[n].num_related = (related); \
  |  |   42|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  245|      1|					}
  246|      1|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (246:10): [True: 0, False: 1]
  ------------------
  247|      0|						LITERAL_INFO(opline->op2.constant, 1);
  ------------------
  |  |   40|      0|#define LITERAL_INFO(n, related) do { \
  |  |   41|      0|		info[n].num_related = (related); \
  |  |   42|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  248|      0|					}
  249|      1|					break;
  250|      1|			}
  251|      1|			opline++;
  252|      1|		}
  253|       |
  254|       |#if DEBUG_COMPACT_LITERALS
  255|       |		{
  256|       |			fprintf(stderr, "File %s func %s\n", op_array->filename->val,
  257|       |					op_array->function_name ? op_array->function_name->val : "main");
  258|       |			fprintf(stderr, "Literals table size %d\n", op_array->last_literal);
  259|       |
  260|       |			for (uint32_t i = 0; i < op_array->last_literal; i++) {
  261|       |				zend_string *str = zval_get_string(op_array->literals + i);
  262|       |				fprintf(stderr, "Literal %" PRIu32 ", val (%zu):%s\n", i, ZSTR_LEN(str), ZSTR_VAL(str));
  263|       |				zend_string_release(str);
  264|       |			}
  265|       |			fflush(stderr);
  266|       |		}
  267|       |#endif
  268|       |
  269|       |		/* Merge equal constants */
  270|      1|		j = 0;
  271|      1|		zend_hash_init(&hash, op_array->last_literal, NULL, NULL, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  272|      1|		map = (int*)zend_arena_alloc(&ctx->arena, op_array->last_literal * sizeof(int));
  273|      1|		memset(map, 0, op_array->last_literal * sizeof(int));
  274|      2|		for (uint32_t i = 0; i < op_array->last_literal; i++) {
  ------------------
  |  Branch (274:24): [True: 1, False: 1]
  ------------------
  275|      1|			if (!info[i].num_related) {
  ------------------
  |  Branch (275:8): [True: 0, False: 1]
  ------------------
  276|       |				/* unset literal */
  277|      0|				zval_ptr_dtor_nogc(&op_array->literals[i]);
  278|      0|				continue;
  279|      0|			}
  280|      1|			switch (Z_TYPE(op_array->literals[i])) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
  281|      0|				case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (281:5): [True: 0, False: 1]
  ------------------
  282|      0|					ZEND_ASSERT(info[i].num_related == 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (282:6): [True: 0, False: 0]
  |  Branch (282:6): [True: 0, False: 0]
  ------------------
  283|      0|					if (l_null < 0) {
  ------------------
  |  Branch (283:10): [True: 0, False: 0]
  ------------------
  284|      0|						l_null = j;
  285|      0|						if (i != j) {
  ------------------
  |  Branch (285:11): [True: 0, False: 0]
  ------------------
  286|      0|							op_array->literals[j] = op_array->literals[i];
  287|      0|							info[j] = info[i];
  288|      0|						}
  289|      0|						j++;
  290|      0|					}
  291|      0|					map[i] = l_null;
  292|      0|					break;
  293|      0|				case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (293:5): [True: 0, False: 1]
  ------------------
  294|      0|					ZEND_ASSERT(info[i].num_related == 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (294:6): [True: 0, False: 0]
  |  Branch (294:6): [True: 0, False: 0]
  ------------------
  295|      0|					if (l_false < 0) {
  ------------------
  |  Branch (295:10): [True: 0, False: 0]
  ------------------
  296|      0|						l_false = j;
  297|      0|						if (i != j) {
  ------------------
  |  Branch (297:11): [True: 0, False: 0]
  ------------------
  298|      0|							op_array->literals[j] = op_array->literals[i];
  299|      0|							info[j] = info[i];
  300|      0|						}
  301|      0|						j++;
  302|      0|					}
  303|      0|					map[i] = l_false;
  304|      0|					break;
  305|      0|				case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (305:5): [True: 0, False: 1]
  ------------------
  306|      0|					ZEND_ASSERT(info[i].num_related == 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (306:6): [True: 0, False: 0]
  |  Branch (306:6): [True: 0, False: 0]
  ------------------
  307|      0|					if (l_true < 0) {
  ------------------
  |  Branch (307:10): [True: 0, False: 0]
  ------------------
  308|      0|						l_true = j;
  309|      0|						if (i != j) {
  ------------------
  |  Branch (309:11): [True: 0, False: 0]
  ------------------
  310|      0|							op_array->literals[j] = op_array->literals[i];
  311|      0|							info[j] = info[i];
  312|      0|						}
  313|      0|						j++;
  314|      0|					}
  315|      0|					map[i] = l_true;
  316|      0|					break;
  317|      1|				case IS_LONG:
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (317:5): [True: 1, False: 0]
  ------------------
  318|      1|					if (info[i].num_related == 1) {
  ------------------
  |  Branch (318:10): [True: 1, False: 0]
  ------------------
  319|      1|						if ((pos = zend_hash_index_find(&hash, Z_LVAL(op_array->literals[i]))) != NULL) {
  ------------------
  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (319:11): [True: 0, False: 1]
  ------------------
  320|      0|							map[i] = Z_LVAL_P(pos);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  321|      1|						} else {
  322|      1|							map[i] = j;
  323|      1|							ZVAL_LONG(&zv, j);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  324|      1|							zend_hash_index_add_new(&hash, Z_LVAL(op_array->literals[i]), &zv);
  ------------------
  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  325|      1|							if (i != j) {
  ------------------
  |  Branch (325:12): [True: 0, False: 1]
  ------------------
  326|      0|								op_array->literals[j] = op_array->literals[i];
  327|      0|								info[j] = info[i];
  328|      0|							}
  329|      1|							j++;
  330|      1|						}
  331|      1|					} else {
  332|      0|						ZEND_ASSERT(info[i].num_related == 2);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (332:7): [True: 0, False: 0]
  |  Branch (332:7): [True: 0, False: 0]
  ------------------
  333|      0|						key = zend_string_init(Z_STRVAL(op_array->literals[i+1]), Z_STRLEN(op_array->literals[i+1]), 0);
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              						key = zend_string_init(Z_STRVAL(op_array->literals[i+1]), Z_STRLEN(op_array->literals[i+1]), 0);
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  334|      0|						bias_key(key, 100 + info[i].num_related - 1);
  335|      0|						if ((pos = zend_hash_find(&hash, key)) != NULL) {
  ------------------
  |  Branch (335:11): [True: 0, False: 0]
  ------------------
  336|      0|							ZEND_ASSERT(info[Z_LVAL_P(pos)].num_related == 2);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (336:8): [True: 0, False: 0]
  |  Branch (336:8): [True: 0, False: 0]
  ------------------
  337|      0|							map[i] = Z_LVAL_P(pos);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  338|      0|							zval_ptr_dtor_nogc(&op_array->literals[i+1]);
  339|      0|						} else {
  340|      0|							map[i] = j;
  341|      0|							ZVAL_LONG(&zv, j);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  342|      0|							zend_hash_add_new(&hash, key, &zv);
  343|      0|							if (i != j) {
  ------------------
  |  Branch (343:12): [True: 0, False: 0]
  ------------------
  344|      0|								op_array->literals[j] = op_array->literals[i];
  345|      0|								info[j] = info[i];
  346|      0|								op_array->literals[j+1] = op_array->literals[i+1];
  347|      0|								info[j+1] = info[i+1];
  348|      0|							}
  349|      0|							j += 2;
  350|      0|						}
  351|      0|						zend_string_release_ex(key, 0);
  352|      0|						i++;
  353|      0|					}
  354|      1|					break;
  355|      1|				case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (355:5): [True: 0, False: 1]
  ------------------
  356|      0|					ZEND_ASSERT(info[i].num_related == 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (356:6): [True: 0, False: 0]
  |  Branch (356:6): [True: 0, False: 0]
  ------------------
  357|      0|					key = zend_string_init((char*)&Z_DVAL(op_array->literals[i]), sizeof(double), 0);
  ------------------
  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  ------------------
  358|      0|					bias_key(key, 200);
  359|      0|					if ((pos = zend_hash_find(&hash, key))) {
  ------------------
  |  Branch (359:10): [True: 0, False: 0]
  ------------------
  360|      0|						map[i] = Z_LVAL_P(pos);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  361|      0|					} else {
  362|      0|						map[i] = j;
  363|      0|						ZVAL_LONG(&zv, j);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  364|      0|						zend_hash_add_new(&hash, key, &zv);
  365|      0|						if (i != j) {
  ------------------
  |  Branch (365:11): [True: 0, False: 0]
  ------------------
  366|      0|							op_array->literals[j] = op_array->literals[i];
  367|      0|							info[j] = info[i];
  368|      0|						}
  369|      0|						j++;
  370|      0|					}
  371|      0|					zend_string_release_ex(key, 0);
  372|      0|					break;
  373|      0|				case IS_STRING: {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (373:5): [True: 0, False: 1]
  ------------------
  374|      0|					key = create_str_cache_key(&op_array->literals[i], info[i].num_related);
  375|      0|					if ((pos = zend_hash_find(&hash, key)) != NULL) {
  ------------------
  |  Branch (375:10): [True: 0, False: 0]
  ------------------
  376|      0|						ZEND_ASSERT(Z_TYPE(op_array->literals[Z_LVAL_P(pos)]) == IS_STRING &&
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (376:7): [True: 0, False: 0]
  |  Branch (376:7): [True: 0, False: 0]
  |  Branch (376:7): [True: 0, False: 0]
  |  Branch (376:7): [True: 0, False: 0]
  ------------------
  377|      0|							info[i].num_related == info[Z_LVAL_P(pos)].num_related);
  378|      0|						zend_string_release_ex(key, 0);
  379|      0|						map[i] = Z_LVAL_P(pos);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  380|      0|						zval_ptr_dtor_nogc(&op_array->literals[i]);
  381|      0|						n = info[i].num_related;
  382|      0|						while (n > 1) {
  ------------------
  |  Branch (382:14): [True: 0, False: 0]
  ------------------
  383|      0|							i++;
  384|      0|							zval_ptr_dtor_nogc(&op_array->literals[i]);
  385|      0|							n--;
  386|      0|						}
  387|      0|					} else {
  388|      0|						map[i] = j;
  389|      0|						ZVAL_LONG(&zv, j);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  390|      0|						zend_hash_add_new(&hash, key, &zv);
  391|      0|						zend_string_release_ex(key, 0);
  392|      0|						if (i != j) {
  ------------------
  |  Branch (392:11): [True: 0, False: 0]
  ------------------
  393|      0|							op_array->literals[j] = op_array->literals[i];
  394|      0|							info[j] = info[i];
  395|      0|						}
  396|      0|						j++;
  397|      0|						n = info[i].num_related;
  398|      0|						while (n > 1) {
  ------------------
  |  Branch (398:14): [True: 0, False: 0]
  ------------------
  399|      0|							i++;
  400|      0|							if (i != j) op_array->literals[j] = op_array->literals[i];
  ------------------
  |  Branch (400:12): [True: 0, False: 0]
  ------------------
  401|      0|							j++;
  402|      0|							n--;
  403|      0|						}
  404|      0|					}
  405|      0|					break;
  406|      0|				}
  407|      0|				case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (407:5): [True: 0, False: 1]
  ------------------
  408|      0|					ZEND_ASSERT(info[i].num_related == 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (408:6): [True: 0, False: 0]
  |  Branch (408:6): [True: 0, False: 0]
  ------------------
  409|      0|					if (zend_hash_num_elements(Z_ARRVAL(op_array->literals[i])) == 0) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (409:10): [True: 0, False: 0]
  ------------------
  410|      0|						if (l_empty_arr < 0) {
  ------------------
  |  Branch (410:11): [True: 0, False: 0]
  ------------------
  411|      0|							l_empty_arr = j;
  412|      0|							if (i != j) {
  ------------------
  |  Branch (412:12): [True: 0, False: 0]
  ------------------
  413|      0|								op_array->literals[j] = op_array->literals[i];
  414|      0|								info[j] = info[i];
  415|      0|							}
  416|      0|							j++;
  417|      0|						} else {
  418|      0|							zval_ptr_dtor_nogc(&op_array->literals[i]);
  419|      0|						}
  420|      0|						map[i] = l_empty_arr;
  421|      0|						break;
  422|      0|					}
  423|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  424|      0|				default:
  ------------------
  |  Branch (424:5): [True: 0, False: 1]
  ------------------
  425|       |					/* don't merge other types */
  426|      0|					ZEND_ASSERT(info[i].num_related == 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (426:6): [True: 0, False: 0]
  |  Branch (426:6): [True: 0, False: 0]
  ------------------
  427|      0|					map[i] = j;
  428|      0|					if (i != j) {
  ------------------
  |  Branch (428:10): [True: 0, False: 0]
  ------------------
  429|      0|						op_array->literals[j] = op_array->literals[i];
  430|      0|						info[j] = info[i];
  431|      0|					}
  432|      0|					j++;
  433|      0|					break;
  434|      1|			}
  435|      1|		}
  436|       |
  437|       |		/* Only clean "hash", as it will be reused in the loop below. */
  438|      1|		zend_hash_clean(&hash);
  439|      1|		op_array->last_literal = j;
  440|       |
  441|      1|		const_slot = zend_arena_alloc(&ctx->arena, j * 7 * sizeof(int));
  442|      1|		memset(const_slot, -1, j * 7 * sizeof(int));
  443|      1|		class_slot = const_slot + j;
  444|      1|		func_slot = class_slot + j;
  445|      1|		bind_var_slot = func_slot + j;
  446|      1|		property_slot = bind_var_slot + j;
  447|      1|		method_slot = property_slot + j;
  448|      1|		jmp_slot = method_slot + j;
  449|       |
  450|       |		/* Update opcodes to use new literals table */
  451|      1|		cache_size = zend_op_array_extension_handles * sizeof(void*);
  452|      1|		opline = op_array->opcodes;
  453|      1|		end = opline + op_array->last;
  454|      2|		while (opline < end) {
  ------------------
  |  Branch (454:10): [True: 1, False: 1]
  ------------------
  455|      1|			if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (455:8): [True: 1, False: 0]
  ------------------
  456|      1|				opline->op1.constant = map[opline->op1.constant];
  457|      1|			}
  458|      1|			if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (458:8): [True: 0, False: 1]
  ------------------
  459|      0|				opline->op2.constant = map[opline->op2.constant];
  460|      0|			}
  461|      1|			switch (opline->opcode) {
  ------------------
  |  Branch (461:12): [True: 0, False: 1]
  ------------------
  462|      0|				case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|      0|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (462:5): [True: 0, False: 1]
  ------------------
  463|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (463:10): [True: 0, False: 0]
  ------------------
  464|       |						// op1 static property
  465|      0|						if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (465:11): [True: 0, False: 0]
  ------------------
  466|      0|							(opline+1)->extended_value = add_static_slot(&hash, op_array,
  467|      0|								opline->op2.constant,
  468|      0|								opline->op1.constant,
  469|      0|								LITERAL_STATIC_PROPERTY,
  ------------------
  |  |   34|      0|#define LITERAL_STATIC_PROPERTY 3
  ------------------
  470|      0|								&cache_size);
  471|      0|						} else {
  472|      0|							(opline+1)->extended_value = cache_size;
  473|      0|							cache_size += 3 * sizeof(void *);
  474|      0|						}
  475|      0|					} else if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (475:17): [True: 0, False: 0]
  ------------------
  476|       |						// op2 class
  477|      0|						if (class_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (477:11): [True: 0, False: 0]
  ------------------
  478|      0|							(opline+1)->extended_value = class_slot[opline->op2.constant];
  479|      0|						} else {
  480|      0|							(opline+1)->extended_value = cache_size;
  481|      0|							class_slot[opline->op2.constant] = cache_size;
  482|      0|							cache_size += sizeof(void *);
  483|      0|						}
  484|      0|					}
  485|      0|					break;
  486|      0|				case ZEND_ASSIGN_OBJ_OP:
  ------------------
  |  |  152|      0|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (486:5): [True: 0, False: 1]
  ------------------
  487|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (487:10): [True: 0, False: 0]
  ------------------
  488|       |						// op2 property
  489|      0|						if (opline->op1_type == IS_UNUSED &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (489:11): [True: 0, False: 0]
  ------------------
  490|      0|						    property_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (490:11): [True: 0, False: 0]
  ------------------
  491|      0|							(opline+1)->extended_value = property_slot[opline->op2.constant];
  492|      0|						} else {
  493|      0|							(opline+1)->extended_value = cache_size;
  494|      0|							cache_size += 3 * sizeof(void *);
  495|      0|							if (opline->op1_type == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (495:12): [True: 0, False: 0]
  ------------------
  496|      0|								property_slot[opline->op2.constant] = (opline+1)->extended_value;
  497|      0|							}
  498|      0|						}
  499|      0|					}
  500|      0|					break;
  501|      0|				case ZEND_ASSIGN_OBJ:
  ------------------
  |  |  148|      0|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (501:5): [True: 0, False: 1]
  ------------------
  502|      0|				case ZEND_ASSIGN_OBJ_REF:
  ------------------
  |  |  156|      0|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (502:5): [True: 0, False: 1]
  ------------------
  503|      0|				case ZEND_FETCH_OBJ_R:
  ------------------
  |  |  204|      0|#define ZEND_FETCH_OBJ_R                     82
  ------------------
  |  Branch (503:5): [True: 0, False: 1]
  ------------------
  504|      0|				case ZEND_FETCH_OBJ_W:
  ------------------
  |  |  207|      0|#define ZEND_FETCH_OBJ_W                     85
  ------------------
  |  Branch (504:5): [True: 0, False: 1]
  ------------------
  505|      0|				case ZEND_FETCH_OBJ_RW:
  ------------------
  |  |  210|      0|#define ZEND_FETCH_OBJ_RW                    88
  ------------------
  |  Branch (505:5): [True: 0, False: 1]
  ------------------
  506|      0|				case ZEND_FETCH_OBJ_IS:
  ------------------
  |  |  213|      0|#define ZEND_FETCH_OBJ_IS                    91
  ------------------
  |  Branch (506:5): [True: 0, False: 1]
  ------------------
  507|      0|				case ZEND_FETCH_OBJ_UNSET:
  ------------------
  |  |  219|      0|#define ZEND_FETCH_OBJ_UNSET                 97
  ------------------
  |  Branch (507:5): [True: 0, False: 1]
  ------------------
  508|      0|				case ZEND_FETCH_OBJ_FUNC_ARG:
  ------------------
  |  |  216|      0|#define ZEND_FETCH_OBJ_FUNC_ARG              94
  ------------------
  |  Branch (508:5): [True: 0, False: 1]
  ------------------
  509|      0|				case ZEND_UNSET_OBJ:
  ------------------
  |  |  199|      0|#define ZEND_UNSET_OBJ                       76
  ------------------
  |  Branch (509:5): [True: 0, False: 1]
  ------------------
  510|      0|				case ZEND_PRE_INC_OBJ:
  ------------------
  |  |  254|      0|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (510:5): [True: 0, False: 1]
  ------------------
  511|      0|				case ZEND_PRE_DEC_OBJ:
  ------------------
  |  |  255|      0|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (511:5): [True: 0, False: 1]
  ------------------
  512|      0|				case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      0|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (512:5): [True: 0, False: 1]
  ------------------
  513|      0|				case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      0|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (513:5): [True: 0, False: 1]
  ------------------
  514|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (514:10): [True: 0, False: 0]
  ------------------
  515|       |						// op2 property
  516|      0|						if (opline->op1_type == IS_UNUSED &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (516:11): [True: 0, False: 0]
  ------------------
  517|      0|						    property_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (517:11): [True: 0, False: 0]
  ------------------
  518|      0|							opline->extended_value = property_slot[opline->op2.constant] | (opline->extended_value & ZEND_FETCH_OBJ_FLAGS);
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  519|      0|						} else {
  520|      0|							opline->extended_value = cache_size | (opline->extended_value & ZEND_FETCH_OBJ_FLAGS);
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  521|      0|							cache_size += 3 * sizeof(void *);
  522|      0|							if (opline->op1_type == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (522:12): [True: 0, False: 0]
  ------------------
  523|      0|								property_slot[opline->op2.constant] = opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS;
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  524|      0|							}
  525|      0|						}
  526|      0|					}
  527|      0|					break;
  528|      0|				case ZEND_ISSET_ISEMPTY_PROP_OBJ:
  ------------------
  |  |  270|      0|#define ZEND_ISSET_ISEMPTY_PROP_OBJ         148
  ------------------
  |  Branch (528:5): [True: 0, False: 1]
  ------------------
  529|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (529:10): [True: 0, False: 0]
  ------------------
  530|       |						// op2 property
  531|      0|						if (opline->op1_type == IS_UNUSED &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (531:11): [True: 0, False: 0]
  ------------------
  532|      0|						    property_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (532:11): [True: 0, False: 0]
  ------------------
  533|      0|							opline->extended_value = property_slot[opline->op2.constant] | (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  534|      0|						} else {
  535|      0|							opline->extended_value = cache_size | (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  536|      0|							cache_size += 3 * sizeof(void *);
  537|      0|							if (opline->op1_type == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (537:12): [True: 0, False: 0]
  ------------------
  538|      0|								property_slot[opline->op2.constant] = opline->extended_value & ~ZEND_ISEMPTY;
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  539|      0|							}
  540|      0|						}
  541|      0|					}
  542|      0|					break;
  543|      0|				case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (543:5): [True: 0, False: 1]
  ------------------
  544|      0|				case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      0|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (544:5): [True: 0, False: 1]
  ------------------
  545|      0|				case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (545:5): [True: 0, False: 1]
  ------------------
  546|       |					// op2 func
  547|      0|					if (func_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (547:10): [True: 0, False: 0]
  ------------------
  548|      0|						opline->result.num = func_slot[opline->op2.constant];
  549|      0|					} else {
  550|      0|						opline->result.num = cache_size;
  551|      0|						cache_size += sizeof(void *);
  552|      0|						func_slot[opline->op2.constant] = opline->result.num;
  553|      0|					}
  554|      0|					break;
  555|      0|				case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|      0|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (555:5): [True: 0, False: 1]
  ------------------
  556|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (556:10): [True: 0, False: 0]
  ------------------
  557|       |						// op2 method
  558|      0|						if (opline->op1_type == IS_UNUSED &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (558:11): [True: 0, False: 0]
  ------------------
  559|      0|						    method_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (559:11): [True: 0, False: 0]
  ------------------
  560|      0|							opline->result.num = method_slot[opline->op2.constant];
  561|      0|						} else {
  562|      0|							opline->result.num = cache_size;
  563|      0|							cache_size += 2 * sizeof(void *);
  564|      0|							if (opline->op1_type == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (564:12): [True: 0, False: 0]
  ------------------
  565|      0|								method_slot[opline->op2.constant] = opline->result.num;
  566|      0|							}
  567|      0|						}
  568|      0|					}
  569|      0|					break;
  570|      0|				case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|      0|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (570:5): [True: 0, False: 1]
  ------------------
  571|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (571:10): [True: 0, False: 0]
  ------------------
  572|       |						// op2 static method
  573|      0|						if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (573:11): [True: 0, False: 0]
  ------------------
  574|      0|							opline->result.num = add_static_slot(&hash, op_array,
  575|      0|								opline->op1.constant,
  576|      0|								opline->op2.constant,
  577|      0|								LITERAL_STATIC_METHOD,
  ------------------
  |  |   33|      0|#define LITERAL_STATIC_METHOD 2
  ------------------
  578|      0|								&cache_size);
  579|      0|						} else {
  580|      0|							opline->result.num = cache_size;
  581|      0|							cache_size += 2 * sizeof(void *);
  582|      0|						}
  583|      0|					} else if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (583:17): [True: 0, False: 0]
  ------------------
  584|       |						// op1 class
  585|      0|						if (class_slot[opline->op1.constant] >= 0) {
  ------------------
  |  Branch (585:11): [True: 0, False: 0]
  ------------------
  586|      0|							opline->result.num = class_slot[opline->op1.constant];
  587|      0|						} else {
  588|      0|							opline->result.num = cache_size;
  589|      0|							cache_size += sizeof(void *);
  590|      0|							class_slot[opline->op1.constant] = opline->result.num;
  591|      0|						}
  592|      0|					}
  593|      0|					break;
  594|      0|				case ZEND_DEFINED:
  ------------------
  |  |  244|      0|#define ZEND_DEFINED                        122
  ------------------
  |  Branch (594:5): [True: 0, False: 1]
  ------------------
  595|       |					// op1 const
  596|      0|					if (const_slot[opline->op1.constant] >= 0) {
  ------------------
  |  Branch (596:10): [True: 0, False: 0]
  ------------------
  597|      0|						opline->extended_value = const_slot[opline->op1.constant];
  598|      0|					} else {
  599|      0|						opline->extended_value = cache_size;
  600|      0|						cache_size += sizeof(void *);
  601|      0|						const_slot[opline->op1.constant] = opline->extended_value;
  602|      0|					}
  603|      0|					break;
  604|      0|				case ZEND_FETCH_CONSTANT:
  ------------------
  |  |  221|      0|#define ZEND_FETCH_CONSTANT                  99
  ------------------
  |  Branch (604:5): [True: 0, False: 1]
  ------------------
  605|       |					// op2 const
  606|      0|					if (const_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (606:10): [True: 0, False: 0]
  ------------------
  607|      0|						opline->extended_value = const_slot[opline->op2.constant];
  608|      0|					} else {
  609|      0|						opline->extended_value = cache_size;
  610|      0|						cache_size += sizeof(void *);
  611|      0|						const_slot[opline->op2.constant] = opline->extended_value;
  612|      0|					}
  613|      0|					break;
  614|      0|				case ZEND_FETCH_CLASS_CONSTANT:
  ------------------
  |  |  303|      0|#define ZEND_FETCH_CLASS_CONSTANT           181
  ------------------
  |  Branch (614:5): [True: 0, False: 1]
  ------------------
  615|      0|					if (opline->op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (615:10): [True: 0, False: 0]
  ------------------
  616|      0|						&& opline->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (616:10): [True: 0, False: 0]
  ------------------
  617|      0|						&& Z_TYPE(op_array->literals[opline->op2.constant]) == IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						&& Z_TYPE(op_array->literals[opline->op2.constant]) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (617:10): [True: 0, False: 0]
  ------------------
  618|       |						// op1/op2 class_const
  619|      0|						opline->extended_value = add_static_slot(&hash, op_array,
  620|      0|							opline->op1.constant,
  621|      0|							opline->op2.constant,
  622|      0|							LITERAL_CLASS_CONST,
  ------------------
  |  |   32|      0|#define LITERAL_CLASS_CONST 1
  ------------------
  623|      0|							&cache_size);
  624|      0|					} else {
  625|      0|						opline->extended_value = cache_size;
  626|      0|						cache_size += 2 * sizeof(void *);
  627|      0|					}
  628|      0|					break;
  629|      0|				case ZEND_ASSIGN_STATIC_PROP:
  ------------------
  |  |  149|      0|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
  |  Branch (629:5): [True: 0, False: 1]
  ------------------
  630|      0|				case ZEND_ASSIGN_STATIC_PROP_REF:
  ------------------
  |  |  157|      0|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
  |  Branch (630:5): [True: 0, False: 1]
  ------------------
  631|      0|				case ZEND_FETCH_STATIC_PROP_R:
  ------------------
  |  |  295|      0|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
  |  Branch (631:5): [True: 0, False: 1]
  ------------------
  632|      0|				case ZEND_FETCH_STATIC_PROP_W:
  ------------------
  |  |  296|      0|#define ZEND_FETCH_STATIC_PROP_W            174
  ------------------
  |  Branch (632:5): [True: 0, False: 1]
  ------------------
  633|      0|				case ZEND_FETCH_STATIC_PROP_RW:
  ------------------
  |  |  297|      0|#define ZEND_FETCH_STATIC_PROP_RW           175
  ------------------
  |  Branch (633:5): [True: 0, False: 1]
  ------------------
  634|      0|				case ZEND_FETCH_STATIC_PROP_IS:
  ------------------
  |  |  298|      0|#define ZEND_FETCH_STATIC_PROP_IS           176
  ------------------
  |  Branch (634:5): [True: 0, False: 1]
  ------------------
  635|      0|				case ZEND_FETCH_STATIC_PROP_UNSET:
  ------------------
  |  |  300|      0|#define ZEND_FETCH_STATIC_PROP_UNSET        178
  ------------------
  |  Branch (635:5): [True: 0, False: 1]
  ------------------
  636|      0|				case ZEND_FETCH_STATIC_PROP_FUNC_ARG:
  ------------------
  |  |  299|      0|#define ZEND_FETCH_STATIC_PROP_FUNC_ARG     177
  ------------------
  |  Branch (636:5): [True: 0, False: 1]
  ------------------
  637|      0|				case ZEND_UNSET_STATIC_PROP:
  ------------------
  |  |  301|      0|#define ZEND_UNSET_STATIC_PROP              179
  ------------------
  |  Branch (637:5): [True: 0, False: 1]
  ------------------
  638|      0|				case ZEND_ISSET_ISEMPTY_STATIC_PROP:
  ------------------
  |  |  302|      0|#define ZEND_ISSET_ISEMPTY_STATIC_PROP      180
  ------------------
  |  Branch (638:5): [True: 0, False: 1]
  ------------------
  639|      0|				case ZEND_PRE_INC_STATIC_PROP:
  ------------------
  |  |  162|      0|#define ZEND_PRE_INC_STATIC_PROP             38
  ------------------
  |  Branch (639:5): [True: 0, False: 1]
  ------------------
  640|      0|				case ZEND_PRE_DEC_STATIC_PROP:
  ------------------
  |  |  163|      0|#define ZEND_PRE_DEC_STATIC_PROP             39
  ------------------
  |  Branch (640:5): [True: 0, False: 1]
  ------------------
  641|      0|				case ZEND_POST_INC_STATIC_PROP:
  ------------------
  |  |  164|      0|#define ZEND_POST_INC_STATIC_PROP            40
  ------------------
  |  Branch (641:5): [True: 0, False: 1]
  ------------------
  642|      0|				case ZEND_POST_DEC_STATIC_PROP:
  ------------------
  |  |  165|      0|#define ZEND_POST_DEC_STATIC_PROP            41
  ------------------
  |  Branch (642:5): [True: 0, False: 1]
  ------------------
  643|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (643:10): [True: 0, False: 0]
  ------------------
  644|       |						// op1 static property
  645|      0|						if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (645:11): [True: 0, False: 0]
  ------------------
  646|      0|							opline->extended_value = add_static_slot(&hash, op_array,
  647|      0|								opline->op2.constant,
  648|      0|								opline->op1.constant,
  649|      0|								LITERAL_STATIC_PROPERTY,
  ------------------
  |  |   34|      0|#define LITERAL_STATIC_PROPERTY 3
  ------------------
  650|      0|								&cache_size) | (opline->extended_value & ZEND_FETCH_OBJ_FLAGS);
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  651|      0|						} else {
  652|      0|							opline->extended_value = cache_size | (opline->extended_value & ZEND_FETCH_OBJ_FLAGS);
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  653|      0|							cache_size += 3 * sizeof(void *);
  654|      0|						}
  655|      0|					} else if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (655:17): [True: 0, False: 0]
  ------------------
  656|       |						// op2 class
  657|      0|						if (class_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (657:11): [True: 0, False: 0]
  ------------------
  658|      0|							opline->extended_value = class_slot[opline->op2.constant] | (opline->extended_value & ZEND_FETCH_OBJ_FLAGS);
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  659|      0|						} else {
  660|      0|							opline->extended_value = cache_size | (opline->extended_value & ZEND_FETCH_OBJ_FLAGS);
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  661|      0|							class_slot[opline->op2.constant] = cache_size;
  662|      0|							cache_size += sizeof(void *);
  663|      0|						}
  664|      0|					}
  665|      0|					break;
  666|      0|				case ZEND_FETCH_CLASS:
  ------------------
  |  |  231|      0|#define ZEND_FETCH_CLASS                    109
  ------------------
  |  Branch (666:5): [True: 0, False: 1]
  ------------------
  667|      0|				case ZEND_INSTANCEOF:
  ------------------
  |  |  260|      0|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (667:5): [True: 0, False: 1]
  ------------------
  668|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (668:10): [True: 0, False: 0]
  ------------------
  669|       |						// op2 class
  670|      0|						if (class_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (670:11): [True: 0, False: 0]
  ------------------
  671|      0|							opline->extended_value = class_slot[opline->op2.constant];
  672|      0|						} else {
  673|      0|							opline->extended_value = cache_size;
  674|      0|							cache_size += sizeof(void *);
  675|      0|							class_slot[opline->op2.constant] = opline->extended_value;
  676|      0|						}
  677|      0|					}
  678|      0|					break;
  679|      0|				case ZEND_NEW:
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (679:5): [True: 0, False: 1]
  ------------------
  680|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (680:10): [True: 0, False: 0]
  ------------------
  681|       |						// op1 class
  682|      0|						if (class_slot[opline->op1.constant] >= 0) {
  ------------------
  |  Branch (682:11): [True: 0, False: 0]
  ------------------
  683|      0|							opline->op2.num = class_slot[opline->op1.constant];
  684|      0|						} else {
  685|      0|							opline->op2.num = cache_size;
  686|      0|							cache_size += sizeof(void *);
  687|      0|							class_slot[opline->op1.constant] = opline->op2.num;
  688|      0|						}
  689|      0|					}
  690|      0|					break;
  691|      0|				case ZEND_CATCH:
  ------------------
  |  |  229|      0|#define ZEND_CATCH                          107
  ------------------
  |  Branch (691:5): [True: 0, False: 1]
  ------------------
  692|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (692:10): [True: 0, False: 0]
  ------------------
  693|       |						// op1 class
  694|      0|						if (class_slot[opline->op1.constant] >= 0) {
  ------------------
  |  Branch (694:11): [True: 0, False: 0]
  ------------------
  695|      0|							opline->extended_value = class_slot[opline->op1.constant] | (opline->extended_value & ZEND_LAST_CATCH);
  ------------------
  |  | 1110|      0|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  696|      0|						} else {
  697|      0|							opline->extended_value = cache_size | (opline->extended_value & ZEND_LAST_CATCH);
  ------------------
  |  | 1110|      0|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  698|      0|							cache_size += sizeof(void *);
  699|      0|							class_slot[opline->op1.constant] = opline->extended_value & ~ZEND_LAST_CATCH;
  ------------------
  |  | 1110|      0|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  700|      0|						}
  701|      0|					}
  702|      0|					break;
  703|      0|				case ZEND_BIND_GLOBAL:
  ------------------
  |  |  290|      0|#define ZEND_BIND_GLOBAL                    168
  ------------------
  |  Branch (703:5): [True: 0, False: 1]
  ------------------
  704|       |					// op2 bind var
  705|      0|					if (bind_var_slot[opline->op2.constant] >= 0) {
  ------------------
  |  Branch (705:10): [True: 0, False: 0]
  ------------------
  706|      0|						opline->extended_value = bind_var_slot[opline->op2.constant];
  707|      0|					} else {
  708|      0|						opline->extended_value = cache_size;
  709|      0|						cache_size += sizeof(void *);
  710|      0|						bind_var_slot[opline->op2.constant] = opline->extended_value;
  711|      0|					}
  712|      0|					break;
  713|      0|				case ZEND_DECLARE_ANON_CLASS:
  ------------------
  |  |  268|      0|#define ZEND_DECLARE_ANON_CLASS             146
  ------------------
  |  Branch (713:5): [True: 0, False: 1]
  ------------------
  714|      0|				case ZEND_DECLARE_CLASS_DELAYED:
  ------------------
  |  |  267|      0|#define ZEND_DECLARE_CLASS_DELAYED          145
  ------------------
  |  Branch (714:5): [True: 0, False: 1]
  ------------------
  715|      0|					opline->extended_value = cache_size;
  716|      0|					cache_size += sizeof(void *);
  717|      0|					break;
  718|      0|				case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (718:5): [True: 0, False: 1]
  ------------------
  719|       |					// op1 func
  720|      0|					if (jmp_slot[opline->op1.constant] >= 0) {
  ------------------
  |  Branch (720:10): [True: 0, False: 0]
  ------------------
  721|      0|						opline->extended_value = jmp_slot[opline->op1.constant];
  722|      0|					} else {
  723|      0|						opline->extended_value = cache_size;
  724|      0|						cache_size += sizeof(void *);
  725|      0|						jmp_slot[opline->op1.constant] = opline->extended_value;
  726|      0|					}
  727|      0|					break;
  728|      0|				case ZEND_SEND_VAL:
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (728:5): [True: 0, False: 1]
  ------------------
  729|      0|				case ZEND_SEND_VAL_EX:
  ------------------
  |  |  238|      0|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (729:5): [True: 0, False: 1]
  ------------------
  730|      0|				case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (730:5): [True: 0, False: 1]
  ------------------
  731|      0|				case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (731:5): [True: 0, False: 1]
  ------------------
  732|      0|				case ZEND_SEND_VAR_NO_REF:
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  |  Branch (732:5): [True: 0, False: 1]
  ------------------
  733|      0|				case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|      0|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (733:5): [True: 0, False: 1]
  ------------------
  734|      0|				case ZEND_SEND_REF:
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (734:5): [True: 0, False: 1]
  ------------------
  735|      0|				case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      0|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (735:5): [True: 0, False: 1]
  ------------------
  736|      0|				case ZEND_CHECK_FUNC_ARG:
  ------------------
  |  |  222|      0|#define ZEND_CHECK_FUNC_ARG                 100
  ------------------
  |  Branch (736:5): [True: 0, False: 1]
  ------------------
  737|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (737:10): [True: 0, False: 0]
  ------------------
  738|      0|						opline->result.num = cache_size;
  739|      0|						cache_size += 2 * sizeof(void *);
  740|      0|					}
  741|      0|					break;
  742|      0|				case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (742:5): [True: 0, False: 1]
  ------------------
  743|      0|					if (opline->extended_value != (uint32_t)-1) {
  ------------------
  |  Branch (743:10): [True: 0, False: 0]
  ------------------
  744|      0|						opline->extended_value = cache_size;
  745|      0|						cache_size += sizeof(void *);
  746|      0|					}
  747|      0|					break;
  748|      1|			}
  749|      1|			opline++;
  750|      1|		}
  751|      1|		op_array->cache_size = cache_size;
  752|      1|		zend_hash_destroy(&hash);
  753|      1|		zend_arena_release(&ctx->arena, checkpoint);
  754|       |
  755|      1|		if (1) {
  ------------------
  |  Branch (755:7): [True: 1, Folded]
  ------------------
  756|      1|			opline = op_array->opcodes;
  757|      1|			while (1) {
  ------------------
  |  Branch (757:11): [True: 1, Folded]
  ------------------
  758|      1|				if (opline->opcode == ZEND_RECV_INIT) {
  ------------------
  |  |  187|      1|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (758:9): [True: 0, False: 1]
  ------------------
  759|      0|					zval *val = &op_array->literals[opline->op2.constant];
  760|       |
  761|      0|					if (Z_TYPE_P(val) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(val) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (761:10): [True: 0, False: 0]
  ------------------
  762|       |						/* Ensure zval is aligned to 8 bytes */
  763|      0|						op_array->cache_size = ZEND_MM_ALIGNED_SIZE_EX(op_array->cache_size, 8);
  ------------------
  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
  764|      0|						Z_CACHE_SLOT_P(val) = op_array->cache_size;
  ------------------
  |  |  684|      0|#define Z_CACHE_SLOT_P(zval_p)		Z_CACHE_SLOT(*(zval_p))
  |  |  ------------------
  |  |  |  |  683|      0|#define Z_CACHE_SLOT(zval)			(zval).u2.cache_slot
  |  |  ------------------
  ------------------
  765|      0|						op_array->cache_size += sizeof(zval);
  766|      0|					}
  767|      1|				} else if (opline->opcode != ZEND_RECV) {
  ------------------
  |  |  186|      1|#define ZEND_RECV                            63
  ------------------
  |  Branch (767:16): [True: 1, False: 0]
  ------------------
  768|      1|					break;
  769|      1|				}
  770|      0|				opline++;
  771|      0|			}
  772|      1|		}
  773|       |
  774|       |#if DEBUG_COMPACT_LITERALS
  775|       |		{
  776|       |			fprintf(stderr, "Optimized literals table size %d\n", op_array->last_literal);
  777|       |
  778|       |			for (uint32_t i = 0; i < op_array->last_literal; i++) {
  779|       |				zend_string *str = zval_get_string(op_array->literals + i);
  780|       |				fprintf(stderr, "Literal %" PRIu32 ", val (%zu):%s\n", i, ZSTR_LEN(str), ZSTR_VAL(str));
  781|       |				zend_string_release(str);
  782|       |			}
  783|       |			fflush(stderr);
  784|       |		}
  785|       |#endif
  786|      1|	}
  787|      1|}

zend_optimizer_compact_vars:
   23|      1|void zend_optimizer_compact_vars(zend_op_array *op_array) {
   24|      1|	int i;
   25|       |
   26|      1|	ALLOCA_FLAG(use_heap1);
   27|      1|	ALLOCA_FLAG(use_heap2);
   28|      1|	uint32_t used_vars_len = zend_bitset_len(op_array->last_var + op_array->T);
   29|      1|	zend_bitset used_vars = ZEND_BITSET_ALLOCA(used_vars_len, use_heap1);
  ------------------
  |  |   43|      1|	(zend_bitset)do_alloca((n) * ZEND_BITSET_ELM_SIZE, use_heap)
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   30|      1|	uint32_t *vars_map = do_alloca((op_array->last_var + op_array->T) * sizeof(uint32_t), use_heap2);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   31|      1|	uint32_t num_cvs, num_tmps;
   32|       |
   33|       |	/* Determine which CVs are used */
   34|      1|	zend_bitset_clear(used_vars, used_vars_len);
   35|      2|	for (i = 0; i < op_array->last; i++) {
  ------------------
  |  Branch (35:14): [True: 1, False: 1]
  ------------------
   36|      1|		zend_op *opline = &op_array->opcodes[i];
   37|      1|		if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (37:7): [True: 0, False: 1]
  ------------------
   38|      0|			zend_bitset_incl(used_vars, VAR_NUM(opline->op1.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   39|      0|		}
   40|      1|		if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (40:7): [True: 0, False: 1]
  ------------------
   41|      0|			zend_bitset_incl(used_vars, VAR_NUM(opline->op2.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|      0|		}
   43|      1|		if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (43:7): [True: 0, False: 1]
  ------------------
   44|      0|			zend_bitset_incl(used_vars, VAR_NUM(opline->result.var));
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   45|      0|			if (opline->opcode == ZEND_ROPE_INIT) {
  ------------------
  |  |  177|      0|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (45:8): [True: 0, False: 0]
  ------------------
   46|      0|				uint32_t num = ((opline->extended_value * sizeof(zend_string*)) + (sizeof(zval) - 1)) / sizeof(zval);
   47|      0|				while (num > 1) {
  ------------------
  |  Branch (47:12): [True: 0, False: 0]
  ------------------
   48|      0|					num--;
   49|      0|					zend_bitset_incl(used_vars, VAR_NUM(opline->result.var) + num);
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   50|      0|				}
   51|      0|			}
   52|      0|		}
   53|      1|	}
   54|       |
   55|      1|	num_cvs = 0;
   56|      1|	for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (56:14): [True: 0, False: 1]
  ------------------
   57|      0|		if (zend_bitset_in(used_vars, i)) {
  ------------------
  |  Branch (57:7): [True: 0, False: 0]
  ------------------
   58|      0|			vars_map[i] = num_cvs++;
   59|      0|		} else {
   60|      0|			vars_map[i] = (uint32_t) -1;
   61|      0|		}
   62|      0|	}
   63|       |
   64|      1|	num_tmps = 0;
   65|      1|	for (i = op_array->last_var; i < op_array->last_var + op_array->T; i++) {
  ------------------
  |  Branch (65:31): [True: 0, False: 1]
  ------------------
   66|      0|		if (zend_bitset_in(used_vars, i)) {
  ------------------
  |  Branch (66:7): [True: 0, False: 0]
  ------------------
   67|      0|			vars_map[i] = num_cvs + num_tmps++;
   68|      0|		} else {
   69|      0|			vars_map[i] = (uint32_t) -1;
   70|      0|		}
   71|      0|	}
   72|       |
   73|      1|	free_alloca(used_vars, use_heap1);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   74|      1|	if (num_cvs == op_array->last_var && num_tmps == op_array->T) {
  ------------------
  |  Branch (74:6): [True: 1, False: 0]
  |  Branch (74:39): [True: 1, False: 0]
  ------------------
   75|      1|		free_alloca(vars_map, use_heap2);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      1|		return;
   77|      1|	}
   78|       |
   79|      0|	ZEND_ASSERT(num_cvs <= op_array->last_var);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (79:2): [True: 0, False: 0]
  |  Branch (79:2): [True: 0, False: 0]
  ------------------
   80|      0|	ZEND_ASSERT(num_tmps <= op_array->T);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (80:2): [True: 0, False: 0]
  |  Branch (80:2): [True: 0, False: 0]
  ------------------
   81|       |
   82|       |	/* Update CV and TMP references in opcodes */
   83|      0|	for (i = 0; i < op_array->last; i++) {
  ------------------
  |  Branch (83:14): [True: 0, False: 0]
  ------------------
   84|      0|		zend_op *opline = &op_array->opcodes[i];
   85|      0|		if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (85:7): [True: 0, False: 0]
  ------------------
   86|      0|			opline->op1.var = NUM_VAR(vars_map[VAR_NUM(opline->op1.var)]);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|      0|		}
   88|      0|		if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (88:7): [True: 0, False: 0]
  ------------------
   89|      0|			opline->op2.var = NUM_VAR(vars_map[VAR_NUM(opline->op2.var)]);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|      0|		}
   91|      0|		if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (91:7): [True: 0, False: 0]
  ------------------
   92|      0|			opline->result.var = NUM_VAR(vars_map[VAR_NUM(opline->result.var)]);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|      0|		}
   94|      0|	}
   95|       |
   96|       |	/* Update CV name table */
   97|      0|	if (num_cvs != op_array->last_var) {
  ------------------
  |  Branch (97:6): [True: 0, False: 0]
  ------------------
   98|      0|		if (num_cvs) {
  ------------------
  |  Branch (98:7): [True: 0, False: 0]
  ------------------
   99|      0|			zend_string **names = safe_emalloc(sizeof(zend_string *), num_cvs, 0);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  100|      0|			for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (100:16): [True: 0, False: 0]
  ------------------
  101|      0|				if (vars_map[i] != (uint32_t) -1) {
  ------------------
  |  Branch (101:9): [True: 0, False: 0]
  ------------------
  102|      0|					names[vars_map[i]] = op_array->vars[i];
  103|      0|				} else {
  104|      0|					zend_string_release_ex(op_array->vars[i], 0);
  105|      0|				}
  106|      0|			}
  107|      0|			efree(op_array->vars);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|      0|			op_array->vars = names;
  109|      0|		} else {
  110|      0|			for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (110:16): [True: 0, False: 0]
  ------------------
  111|      0|				zend_string_release_ex(op_array->vars[i], 0);
  112|      0|			}
  113|      0|			efree(op_array->vars);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|      0|			op_array->vars = NULL;
  115|      0|		}
  116|      0|		op_array->last_var = num_cvs;
  117|      0|	}
  118|       |
  119|      0|	op_array->T = num_tmps + ZEND_OBSERVER_ENABLED; // reserve last temporary for observers if enabled
  ------------------
  |  |   46|      0|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  ------------------
  120|       |
  121|       |	free_alloca(vars_map, use_heap2);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|      0|}

dce_optimize_op_array:
  534|      1|int dce_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *optimizer_ctx, zend_ssa *ssa, bool reorder_dtor_effects) {
  535|      1|	int i;
  536|      1|	zend_ssa_phi *phi;
  537|      1|	int removed_ops = 0;
  538|       |
  539|       |	/* DCE of CV operations that changes arguments may affect vararg functions. */
  540|      1|	bool has_varargs = (ssa->cfg.flags & ZEND_FUNC_VARARG) != 0;
  ------------------
  |  |   25|      1|#define ZEND_FUNC_VARARG                   (1<<2)  /* uses func_get_args()        */
  ------------------
  541|       |
  542|      1|	context ctx;
  543|      1|	ctx.ssa = ssa;
  544|      1|	ctx.op_array = op_array;
  545|      1|	ctx.reorder_dtor_effects = reorder_dtor_effects;
  546|       |
  547|      1|	void *checkpoint = zend_arena_checkpoint(optimizer_ctx->arena);
  548|       |	/* We have no dedicated phi vector, so we use the whole ssa var vector instead */
  549|      1|	ctx.instr_worklist_len = zend_bitset_len(op_array->last);
  550|      1|	ctx.instr_worklist = zend_arena_calloc(&optimizer_ctx->arena, ctx.instr_worklist_len, sizeof(zend_ulong));
  551|      1|	ctx.phi_worklist_len = zend_bitset_len(ssa->vars_count);
  552|      1|	ctx.phi_worklist = zend_arena_calloc(&optimizer_ctx->arena, ctx.phi_worklist_len, sizeof(zend_ulong));
  553|      1|	ctx.phi_worklist_no_val = zend_arena_calloc(&optimizer_ctx->arena, ctx.phi_worklist_len, sizeof(zend_ulong));
  554|       |
  555|       |	/* Optimistically assume all instructions and phis to be dead */
  556|      1|	ctx.instr_dead = zend_arena_calloc(&optimizer_ctx->arena, ctx.instr_worklist_len, sizeof(zend_ulong));
  557|      1|	ctx.phi_dead = zend_arena_alloc(&optimizer_ctx->arena, ctx.phi_worklist_len * sizeof(zend_ulong));
  558|      1|	memset(ctx.phi_dead, 0xff, sizeof(zend_ulong) * ctx.phi_worklist_len);
  559|       |
  560|       |	/* Mark non-CV phis as live. Even if the result is unused, we generally cannot remove one
  561|       |	 * of the producing instructions, as it combines producing the result with control flow.
  562|       |	 * This can be made more precise if there are any cases where this is not the case. */
  563|      2|	FOREACH_PHI(phi) {
  ------------------
  |  |  293|      1|#define FOREACH_PHI(phi) do { \
  |  |  294|      2|	for (uint32_t _i = 0; _i < ssa->cfg.blocks_count; _i++) { \
  |  |  ------------------
  |  |  |  Branch (294:24): [True: 1, False: 1]
  |  |  ------------------
  |  |  295|      1|		phi = ssa->blocks[_i].phis; \
  |  |  296|      1|		for (; phi; phi = phi->next) {
  |  |  ------------------
  |  |  |  Branch (296:10): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  564|      2|		if (phi->var >= op_array->last_var
  ------------------
  |  Branch (564:7): [True: 0, False: 0]
  ------------------
  565|      0|				&& may_be_refcounted(ssa->var_info[phi->ssa_var].type)) {
  ------------------
  |  Branch (565:8): [True: 0, False: 0]
  ------------------
  566|      0|			zend_bitset_excl(ctx.phi_dead, phi->ssa_var);
  567|      0|			add_phi_sources_to_worklists(&ctx, phi, 0);
  568|      0|		}
  569|      2|	} FOREACH_PHI_END();
  ------------------
  |  |  298|      0|		} \
  |  |  299|      1|	} \
  |  |  300|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (300:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  570|       |
  571|       |	/* Mark reachable instruction without side effects as dead */
  572|      1|	uint32_t b = ssa->cfg.blocks_count;
  573|      2|	while (b > 0) {
  ------------------
  |  Branch (573:9): [True: 1, False: 1]
  ------------------
  574|      1|		int	op_data = -1;
  575|       |
  576|      1|		b--;
  577|      1|		const zend_basic_block *block = &ssa->cfg.blocks[b];
  578|      1|		if (!(block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (578:7): [True: 0, False: 1]
  ------------------
  579|      0|			continue;
  580|      0|		}
  581|      1|		i = block->start + block->len;
  582|      2|		while (i > block->start) {
  ------------------
  |  Branch (582:10): [True: 1, False: 1]
  ------------------
  583|      1|			i--;
  584|       |
  585|      1|			if (op_array->opcodes[i].opcode == ZEND_OP_DATA) {
  ------------------
  |  |  259|      1|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (585:8): [True: 0, False: 1]
  ------------------
  586|      0|				op_data = i;
  587|      0|				continue;
  588|      0|			}
  589|       |
  590|      1|			if (zend_bitset_in(ctx.instr_worklist, i)) {
  ------------------
  |  Branch (590:8): [True: 0, False: 1]
  ------------------
  591|      0|				zend_bitset_excl(ctx.instr_worklist, i);
  592|      0|				add_operands_to_worklists(&ctx, &op_array->opcodes[i], &ssa->ops[i], ssa, 0);
  593|      0|				if (op_data >= 0) {
  ------------------
  |  Branch (593:9): [True: 0, False: 0]
  ------------------
  594|      0|					add_operands_to_worklists(&ctx, &op_array->opcodes[op_data], &ssa->ops[op_data], ssa, 0);
  595|      0|				}
  596|      1|			} else if (may_have_side_effects(op_array, ssa, &op_array->opcodes[i], &ssa->ops[i], ctx.reorder_dtor_effects)
  ------------------
  |  Branch (596:15): [True: 1, False: 0]
  ------------------
  597|      0|					|| (zend_may_throw(&op_array->opcodes[i], &ssa->ops[i], op_array, ssa)
  ------------------
  |  Branch (597:10): [True: 0, False: 0]
  ------------------
  598|      0|						&& !may_throw_dce_exception(&op_array->opcodes[i]))
  ------------------
  |  Branch (598:10): [True: 0, False: 0]
  ------------------
  599|      1|					|| (has_varargs && may_break_varargs(op_array, ssa, &ssa->ops[i]))) {
  ------------------
  |  Branch (599:10): [True: 0, False: 0]
  |  Branch (599:25): [True: 0, False: 0]
  ------------------
  600|      1|				if (op_array->opcodes[i].opcode == ZEND_NEW
  ------------------
  |  |  191|      2|#define ZEND_NEW                             68
  ------------------
  |  Branch (600:9): [True: 0, False: 1]
  ------------------
  601|      0|						&& op_array->opcodes[i+1].opcode == ZEND_DO_FCALL
  ------------------
  |  |  183|      1|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (601:10): [True: 0, False: 0]
  ------------------
  602|      0|						&& ssa->ops[i].result_def >= 0
  ------------------
  |  Branch (602:10): [True: 0, False: 0]
  ------------------
  603|      0|						&& ssa->vars[ssa->ops[i].result_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (603:10): [True: 0, False: 0]
  ------------------
  604|      0|					zend_bitset_incl(ctx.instr_dead, i);
  605|      0|					zend_bitset_incl(ctx.instr_dead, i+1);
  606|      1|				} else {
  607|      1|					add_operands_to_worklists(&ctx, &op_array->opcodes[i], &ssa->ops[i], ssa, 0);
  608|      1|					if (op_data >= 0) {
  ------------------
  |  Branch (608:10): [True: 0, False: 1]
  ------------------
  609|      0|						add_operands_to_worklists(&ctx, &op_array->opcodes[op_data], &ssa->ops[op_data], ssa, 0);
  610|      0|					}
  611|      1|				}
  612|      1|			} else {
  613|      0|				zend_bitset_incl(ctx.instr_dead, i);
  614|      0|				if (op_data >= 0) {
  ------------------
  |  Branch (614:9): [True: 0, False: 0]
  ------------------
  615|      0|					zend_bitset_incl(ctx.instr_dead, op_data);
  616|      0|				}
  617|      0|			}
  618|      1|			op_data = -1;
  619|      1|		}
  620|      1|	}
  621|       |
  622|       |	/* Propagate liveness backwards to all definitions of used vars */
  623|      1|	while (!zend_bitset_empty(ctx.instr_worklist, ctx.instr_worklist_len)
  ------------------
  |  Branch (623:9): [True: 0, False: 1]
  ------------------
  624|      1|			|| !zend_bitset_empty(ctx.phi_worklist, ctx.phi_worklist_len)) {
  ------------------
  |  Branch (624:7): [True: 0, False: 1]
  ------------------
  625|      0|		while ((i = zend_bitset_pop_first(ctx.instr_worklist, ctx.instr_worklist_len)) >= 0) {
  ------------------
  |  Branch (625:10): [True: 0, False: 0]
  ------------------
  626|      0|			zend_bitset_excl(ctx.instr_dead, i);
  627|      0|			add_operands_to_worklists(&ctx, &op_array->opcodes[i], &ssa->ops[i], ssa, 1);
  628|      0|			if (i < op_array->last
  ------------------
  |  Branch (628:8): [True: 0, False: 0]
  ------------------
  629|      0|			 && (op_array->opcodes[i+1].opcode == ZEND_OP_DATA
  ------------------
  |  |  259|      0|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (629:9): [True: 0, False: 0]
  ------------------
  630|      0|			  || (op_array->opcodes[i].opcode == ZEND_NEW
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (630:10): [True: 0, False: 0]
  ------------------
  631|      0|			   && op_array->opcodes[i+1].opcode == ZEND_DO_FCALL))) {
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (631:10): [True: 0, False: 0]
  ------------------
  632|      0|				zend_bitset_excl(ctx.instr_dead, i+1);
  633|      0|				add_operands_to_worklists(&ctx, &op_array->opcodes[i+1], &ssa->ops[i+1], ssa, 1);
  634|      0|			}
  635|      0|		}
  636|      0|		while ((i = zend_bitset_pop_first(ctx.phi_worklist, ctx.phi_worklist_len)) >= 0) {
  ------------------
  |  Branch (636:10): [True: 0, False: 0]
  ------------------
  637|      0|			zend_bitset_excl(ctx.phi_dead, i);
  638|      0|			zend_bitset_excl(ctx.phi_worklist_no_val, i);
  639|      0|			add_phi_sources_to_worklists(&ctx, ssa->vars[i].definition_phi, 1);
  640|      0|		}
  641|      0|	}
  642|       |
  643|       |	/* Eliminate dead instructions */
  644|      2|	ZEND_BITSET_FOREACH(ctx.instr_dead, ctx.instr_worklist_len, i) {
  ------------------
  |  |  262|      1|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  263|      1|	zend_bitset _set = (set); \
  |  |  264|      1|	uint32_t _i, _len = (len); \
  |  |  265|      2|	for (_i = 0; _i < _len; _i++) { \
  |  |  ------------------
  |  |  |  Branch (265:15): [True: 1, False: 1]
  |  |  ------------------
  |  |  266|      1|		zend_ulong _x = _set[_i]; \
  |  |  267|      1|		if (_x) { \
  |  |  ------------------
  |  |  |  Branch (267:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  ------------------
  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  ------------------
  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  ------------------
  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  645|      0|		removed_ops += dce_instr(&ctx, &op_array->opcodes[i], &ssa->ops[i]);
  646|      0|	} ZEND_BITSET_FOREACH_END();
  ------------------
  |  |  284|      0|			} \
  |  |  285|      0|		} \
  |  |  286|      1|	} \
  |  |  287|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (287:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  647|       |
  648|       |	/* Improper uses don't count as "uses" for the purpose of instruction elimination,
  649|       |	 * but we have to retain phis defining them.
  650|       |	 * Propagate this information backwards, marking any phi with an improperly used
  651|       |	 * target as non-dead. */
  652|      1|	while ((i = zend_bitset_pop_first(ctx.phi_worklist_no_val, ctx.phi_worklist_len)) >= 0) {
  ------------------
  |  Branch (652:9): [True: 0, False: 1]
  ------------------
  653|      0|		zend_ssa_phi *phi = ssa->vars[i].definition_phi;
  654|      0|		int source;
  655|      0|		zend_bitset_excl(ctx.phi_dead, i);
  656|      0|		FOREACH_PHI_SOURCE(phi, source) {
  ------------------
  |  |  283|      0|#define FOREACH_PHI_SOURCE(phi, source) do { \
  |  |  284|      0|	zend_ssa_phi *_phi = (phi); \
  |  |  285|      0|	uint32_t _i, _end = NUM_PHI_SOURCES(phi); \
  |  |  ------------------
  |  |  |  |  262|      0|	((phi)->pi >= 0 ? 1 : (ssa->cfg.blocks[(phi)->block].predecessors_count))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (262:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  286|      0|	for (_i = 0; _i < _end; _i++) { \
  |  |  ------------------
  |  |  |  Branch (286:15): [True: 0, False: 0]
  |  |  ------------------
  |  |  287|      0|		ZEND_ASSERT(_phi->sources[_i] >= 0); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  288|      0|		source = _phi->sources[_i];
  ------------------
  |  Branch (656:3): [True: 0, False: 0]
  |  Branch (656:3): [True: 0, False: 0]
  ------------------
  657|      0|			add_to_phi_worklist_no_val(&ctx, source);
  658|      0|		} FOREACH_PHI_SOURCE_END();
  ------------------
  |  |  290|      0|	} \
  |  |  291|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (291:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  659|      0|	}
  660|       |
  661|       |	/* Now collect the actually dead phis */
  662|      2|	FOREACH_PHI(phi) {
  ------------------
  |  |  293|      1|#define FOREACH_PHI(phi) do { \
  |  |  294|      2|	for (uint32_t _i = 0; _i < ssa->cfg.blocks_count; _i++) { \
  |  |  ------------------
  |  |  |  Branch (294:24): [True: 1, False: 1]
  |  |  ------------------
  |  |  295|      1|		phi = ssa->blocks[_i].phis; \
  |  |  296|      1|		for (; phi; phi = phi->next) {
  |  |  ------------------
  |  |  |  Branch (296:10): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  663|      2|		if (zend_bitset_in(ctx.phi_dead, phi->ssa_var)) {
  ------------------
  |  Branch (663:7): [True: 0, False: 0]
  ------------------
  664|      0|			zend_ssa_remove_uses_of_var(ssa, phi->ssa_var);
  665|      0|			zend_ssa_remove_phi(ssa, phi);
  666|      0|		} else {
  667|       |			/* Remove trivial phis (phis with identical source operands) */
  668|      0|			try_remove_trivial_phi(&ctx, phi);
  669|      0|		}
  670|      2|	} FOREACH_PHI_END();
  ------------------
  |  |  298|      0|		} \
  |  |  299|      1|	} \
  |  |  300|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (300:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  671|       |
  672|      1|	zend_arena_release(&optimizer_ctx->arena, checkpoint);
  673|       |
  674|      1|	return removed_ops;
  675|      1|}
dce.c:add_operands_to_worklists:
  299|      1|static zend_always_inline void add_operands_to_worklists(const context *ctx, const zend_op *opline, const zend_ssa_op *ssa_op, const zend_ssa *ssa, int check) {
  300|      1|	if (ssa_op->result_use >= 0) {
  ------------------
  |  Branch (300:6): [True: 0, False: 1]
  ------------------
  301|      0|		add_to_worklists(ctx, ssa_op->result_use, check);
  302|      0|	}
  303|      1|	if (ssa_op->op1_use >= 0) {
  ------------------
  |  Branch (303:6): [True: 0, False: 1]
  ------------------
  304|      0|		if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op1_use)
  ------------------
  |  Branch (304:7): [True: 0, False: 0]
  ------------------
  305|      0|		 || (opline->opcode == ZEND_ASSIGN
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (305:8): [True: 0, False: 0]
  ------------------
  306|      0|		  && (ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF) != 0)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (306:8): [True: 0, False: 0]
  ------------------
  307|      0|			add_to_worklists(ctx, ssa_op->op1_use, check);
  308|      0|		} else {
  309|      0|			add_to_phi_worklist_no_val(ctx, ssa_op->op1_use);
  310|      0|		}
  311|      0|	}
  312|      1|	if (ssa_op->op2_use >= 0) {
  ------------------
  |  Branch (312:6): [True: 0, False: 1]
  ------------------
  313|      0|		if (!zend_ssa_is_no_val_use(opline, ssa_op, ssa_op->op2_use)
  ------------------
  |  Branch (313:7): [True: 0, False: 0]
  ------------------
  314|      0|		 || (opline->opcode == ZEND_FE_FETCH_R
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (314:8): [True: 0, False: 0]
  ------------------
  315|      0|		  && (ssa->var_info[ssa_op->op2_use].type & MAY_BE_REF) != 0)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (315:8): [True: 0, False: 0]
  ------------------
  316|      0|			add_to_worklists(ctx, ssa_op->op2_use, check);
  317|      0|		} else {
  318|      0|			add_to_phi_worklist_no_val(ctx, ssa_op->op2_use);
  319|      0|		}
  320|      0|	}
  321|      1|}
dce.c:may_have_side_effects:
   75|      1|		bool reorder_dtor_effects) {
   76|      1|	switch (opline->opcode) {
   77|      0|		case ZEND_NOP:
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (77:3): [True: 0, False: 1]
  ------------------
   78|      0|		case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (78:3): [True: 0, False: 1]
  ------------------
   79|      0|		case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (79:3): [True: 0, False: 1]
  ------------------
   80|      0|		case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (80:3): [True: 0, False: 1]
  ------------------
   81|      0|		case ZEND_FE_FREE:
  ------------------
  |  |  249|      0|#define ZEND_FE_FREE                        127
  ------------------
  |  Branch (81:3): [True: 0, False: 1]
  ------------------
   82|      0|		case ZEND_TYPE_CHECK:
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (82:3): [True: 0, False: 1]
  ------------------
   83|      0|		case ZEND_DEFINED:
  ------------------
  |  |  244|      0|#define ZEND_DEFINED                        122
  ------------------
  |  Branch (83:3): [True: 0, False: 1]
  ------------------
   84|      0|		case ZEND_ADD:
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (84:3): [True: 0, False: 1]
  ------------------
   85|      0|		case ZEND_SUB:
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (85:3): [True: 0, False: 1]
  ------------------
   86|      0|		case ZEND_MUL:
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (86:3): [True: 0, False: 1]
  ------------------
   87|      0|		case ZEND_POW:
  ------------------
  |  |  136|      0|#define ZEND_POW                             12
  ------------------
  |  Branch (87:3): [True: 0, False: 1]
  ------------------
   88|      0|		case ZEND_BW_OR:
  ------------------
  |  |  133|      0|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (88:3): [True: 0, False: 1]
  ------------------
   89|      0|		case ZEND_BW_AND:
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
  |  Branch (89:3): [True: 0, False: 1]
  ------------------
   90|      0|		case ZEND_BW_XOR:
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (90:3): [True: 0, False: 1]
  ------------------
   91|      0|		case ZEND_CONCAT:
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (91:3): [True: 0, False: 1]
  ------------------
   92|      0|		case ZEND_FAST_CONCAT:
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (92:3): [True: 0, False: 1]
  ------------------
   93|      0|		case ZEND_DIV:
  ------------------
  |  |  128|      0|#define ZEND_DIV                              4
  ------------------
  |  Branch (93:3): [True: 0, False: 1]
  ------------------
   94|      0|		case ZEND_MOD:
  ------------------
  |  |  129|      0|#define ZEND_MOD                              5
  ------------------
  |  Branch (94:3): [True: 0, False: 1]
  ------------------
   95|      0|		case ZEND_BOOL_XOR:
  ------------------
  |  |  139|      0|#define ZEND_BOOL_XOR                        15
  ------------------
  |  Branch (95:3): [True: 0, False: 1]
  ------------------
   96|      0|		case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (96:3): [True: 0, False: 1]
  ------------------
   97|      0|		case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (97:3): [True: 0, False: 1]
  ------------------
   98|      0|		case ZEND_BW_NOT:
  ------------------
  |  |  137|      0|#define ZEND_BW_NOT                          13
  ------------------
  |  Branch (98:3): [True: 0, False: 1]
  ------------------
   99|      0|		case ZEND_SL:
  ------------------
  |  |  130|      0|#define ZEND_SL                               6
  ------------------
  |  Branch (99:3): [True: 0, False: 1]
  ------------------
  100|      0|		case ZEND_SR:
  ------------------
  |  |  131|      0|#define ZEND_SR                               7
  ------------------
  |  Branch (100:3): [True: 0, False: 1]
  ------------------
  101|      0|		case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (101:3): [True: 0, False: 1]
  ------------------
  102|      0|		case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (102:3): [True: 0, False: 1]
  ------------------
  103|      0|		case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (103:3): [True: 0, False: 1]
  ------------------
  104|      0|		case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (104:3): [True: 0, False: 1]
  ------------------
  105|      0|		case ZEND_CASE:
  ------------------
  |  |  171|      0|#define ZEND_CASE                            48
  ------------------
  |  Branch (105:3): [True: 0, False: 1]
  ------------------
  106|      0|		case ZEND_CASE_STRICT:
  ------------------
  |  |  318|      0|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (106:3): [True: 0, False: 1]
  ------------------
  107|      0|		case ZEND_CAST:
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (107:3): [True: 0, False: 1]
  ------------------
  108|      0|		case ZEND_ROPE_INIT:
  ------------------
  |  |  177|      0|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (108:3): [True: 0, False: 1]
  ------------------
  109|      0|		case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      0|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (109:3): [True: 0, False: 1]
  ------------------
  110|      0|		case ZEND_INIT_ARRAY:
  ------------------
  |  |  194|      0|#define ZEND_INIT_ARRAY                      71
  ------------------
  |  Branch (110:3): [True: 0, False: 1]
  ------------------
  111|      0|		case ZEND_SPACESHIP:
  ------------------
  |  |  292|      0|#define ZEND_SPACESHIP                      170
  ------------------
  |  Branch (111:3): [True: 0, False: 1]
  ------------------
  112|      0|		case ZEND_STRLEN:
  ------------------
  |  |  243|      0|#define ZEND_STRLEN                         121
  ------------------
  |  Branch (112:3): [True: 0, False: 1]
  ------------------
  113|      0|		case ZEND_COUNT:
  ------------------
  |  |  312|      0|#define ZEND_COUNT                          190
  ------------------
  |  Branch (113:3): [True: 0, False: 1]
  ------------------
  114|      0|		case ZEND_GET_TYPE:
  ------------------
  |  |  315|      0|#define ZEND_GET_TYPE                       193
  ------------------
  |  Branch (114:3): [True: 0, False: 1]
  ------------------
  115|      0|		case ZEND_ISSET_ISEMPTY_THIS:
  ------------------
  |  |  308|      0|#define ZEND_ISSET_ISEMPTY_THIS             186
  ------------------
  |  Branch (115:3): [True: 0, False: 1]
  ------------------
  116|      0|		case ZEND_ISSET_ISEMPTY_DIM_OBJ:
  ------------------
  |  |  237|      0|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
  |  Branch (116:3): [True: 0, False: 1]
  ------------------
  117|      0|		case ZEND_FETCH_DIM_IS:
  ------------------
  |  |  212|      0|#define ZEND_FETCH_DIM_IS                    90
  ------------------
  |  Branch (117:3): [True: 0, False: 1]
  ------------------
  118|      0|		case ZEND_ISSET_ISEMPTY_CV:
  ------------------
  |  |  276|      0|#define ZEND_ISSET_ISEMPTY_CV               154
  ------------------
  |  Branch (118:3): [True: 0, False: 1]
  ------------------
  119|      0|		case ZEND_ISSET_ISEMPTY_VAR:
  ------------------
  |  |  236|      0|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
  |  Branch (119:3): [True: 0, False: 1]
  ------------------
  120|      0|		case ZEND_FETCH_IS:
  ------------------
  |  |  211|      0|#define ZEND_FETCH_IS                        89
  ------------------
  |  Branch (120:3): [True: 0, False: 1]
  ------------------
  121|      0|		case ZEND_IN_ARRAY:
  ------------------
  |  |  311|      0|#define ZEND_IN_ARRAY                       189
  ------------------
  |  Branch (121:3): [True: 0, False: 1]
  ------------------
  122|      0|		case ZEND_FUNC_NUM_ARGS:
  ------------------
  |  |  293|      0|#define ZEND_FUNC_NUM_ARGS                  171
  ------------------
  |  Branch (122:3): [True: 0, False: 1]
  ------------------
  123|      0|		case ZEND_FUNC_GET_ARGS:
  ------------------
  |  |  294|      0|#define ZEND_FUNC_GET_ARGS                  172
  ------------------
  |  Branch (123:3): [True: 0, False: 1]
  ------------------
  124|      0|		case ZEND_ARRAY_KEY_EXISTS:
  ------------------
  |  |  316|      0|#define ZEND_ARRAY_KEY_EXISTS               194
  ------------------
  |  Branch (124:3): [True: 0, False: 1]
  ------------------
  125|      0|		case ZEND_COPY_TMP:
  ------------------
  |  |  289|      0|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (125:3): [True: 0, False: 1]
  ------------------
  126|       |			/* No side effects */
  127|      0|			return false;
  128|      0|		case ZEND_FREE:
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (128:3): [True: 0, False: 1]
  ------------------
  129|      0|			return opline->extended_value == ZEND_FREE_VOID_CAST;
  ------------------
  |  | 1114|      0|#define ZEND_FREE_VOID_CAST     (1<<2)
  ------------------
  130|      0|		case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (130:3): [True: 0, False: 1]
  ------------------
  131|       |			/* TODO: We can't free two vars. Keep instruction alive. <?php [0, "$a" => "$b"]; */
  132|      0|			if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && (opline->op2_type & (IS_VAR|IS_TMP_VAR))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && (opline->op2_type & (IS_VAR|IS_TMP_VAR))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && (opline->op2_type & (IS_VAR|IS_TMP_VAR))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && (opline->op2_type & (IS_VAR|IS_TMP_VAR))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (132:8): [True: 0, False: 0]
  |  Branch (132:52): [True: 0, False: 0]
  ------------------
  133|      0|				return true;
  134|      0|			}
  135|      0|			return false;
  136|      0|		case ZEND_ROPE_END:
  ------------------
  |  |  179|      0|#define ZEND_ROPE_END                        56
  ------------------
  |  Branch (136:3): [True: 0, False: 1]
  ------------------
  137|       |			/* TODO: Rope dce optimization, see #76446 */
  138|      0|			return true;
  139|      0|		case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (139:3): [True: 0, False: 1]
  ------------------
  140|      0|		case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (140:3): [True: 0, False: 1]
  ------------------
  141|      0|		case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (141:3): [True: 0, False: 1]
  ------------------
  142|      0|		case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (142:3): [True: 0, False: 1]
  ------------------
  143|      0|		case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (143:3): [True: 0, False: 1]
  ------------------
  144|      0|		case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (144:3): [True: 0, False: 1]
  ------------------
  145|      0|		case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (145:3): [True: 0, False: 1]
  ------------------
  146|      0|		case ZEND_ASSERT_CHECK:
  ------------------
  |  |  273|      0|#define ZEND_ASSERT_CHECK                   151
  ------------------
  |  Branch (146:3): [True: 0, False: 1]
  ------------------
  147|      0|		case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (147:3): [True: 0, False: 1]
  ------------------
  148|      0|		case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (148:3): [True: 0, False: 1]
  ------------------
  149|      0|		case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (149:3): [True: 0, False: 1]
  ------------------
  150|       |			/* For our purposes a jumps and branches are side effects. */
  151|      0|			return true;
  152|      0|		case ZEND_BEGIN_SILENCE:
  ------------------
  |  |  180|      0|#define ZEND_BEGIN_SILENCE                   57
  ------------------
  |  Branch (152:3): [True: 0, False: 1]
  ------------------
  153|      0|		case ZEND_END_SILENCE:
  ------------------
  |  |  181|      0|#define ZEND_END_SILENCE                     58
  ------------------
  |  Branch (153:3): [True: 0, False: 1]
  ------------------
  154|      0|		case ZEND_ECHO:
  ------------------
  |  |  258|      0|#define ZEND_ECHO                           136
  ------------------
  |  Branch (154:3): [True: 0, False: 1]
  ------------------
  155|      0|		case ZEND_INCLUDE_OR_EVAL:
  ------------------
  |  |  196|      0|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (155:3): [True: 0, False: 1]
  ------------------
  156|      0|		case ZEND_THROW:
  ------------------
  |  |  230|      0|#define ZEND_THROW                          108
  ------------------
  |  Branch (156:3): [True: 0, False: 1]
  ------------------
  157|      0|		case ZEND_MATCH_ERROR:
  ------------------
  |  |  319|      0|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (157:3): [True: 0, False: 1]
  ------------------
  158|      0|		case ZEND_EXT_STMT:
  ------------------
  |  |  223|      0|#define ZEND_EXT_STMT                       101
  ------------------
  |  Branch (158:3): [True: 0, False: 1]
  ------------------
  159|      0|		case ZEND_EXT_FCALL_BEGIN:
  ------------------
  |  |  224|      0|#define ZEND_EXT_FCALL_BEGIN                102
  ------------------
  |  Branch (159:3): [True: 0, False: 1]
  ------------------
  160|      0|		case ZEND_EXT_FCALL_END:
  ------------------
  |  |  225|      0|#define ZEND_EXT_FCALL_END                  103
  ------------------
  |  Branch (160:3): [True: 0, False: 1]
  ------------------
  161|      0|		case ZEND_TICKS:
  ------------------
  |  |  227|      0|#define ZEND_TICKS                          105
  ------------------
  |  Branch (161:3): [True: 0, False: 1]
  ------------------
  162|      0|		case ZEND_YIELD:
  ------------------
  |  |  282|      0|#define ZEND_YIELD                          160
  ------------------
  |  Branch (162:3): [True: 0, False: 1]
  ------------------
  163|      0|		case ZEND_VERIFY_NEVER_TYPE:
  ------------------
  |  |  323|      0|#define ZEND_VERIFY_NEVER_TYPE              201
  ------------------
  |  Branch (163:3): [True: 0, False: 1]
  ------------------
  164|       |			/* Intrinsic side effects */
  165|      0|			return true;
  166|      0|		case ZEND_YIELD_FROM: {
  ------------------
  |  |  288|      0|#define ZEND_YIELD_FROM                     166
  ------------------
  |  Branch (166:3): [True: 0, False: 1]
  ------------------
  167|      0|			uint32_t t1 = OP1_INFO();
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
  168|      0|			if ((t1 & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_ARRAY && MAY_BE_EMPTY_ONLY(t1)) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if ((t1 & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_ARRAY && MAY_BE_EMPTY_ONLY(t1)) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			if ((t1 & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_ARRAY && MAY_BE_EMPTY_ONLY(t1)) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			if ((t1 & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_ARRAY && MAY_BE_EMPTY_ONLY(t1)) {
  ------------------
  |  |   71|      0|#define MAY_BE_EMPTY_ONLY(t)        (((t) & MAY_BE_ARRAY_KEY_ANY) == MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_EMPTY_ONLY(t)        (((t) & MAY_BE_ARRAY_KEY_ANY) == MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  |  |  |  Branch (71:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (168:8): [True: 0, False: 0]
  ------------------
  169|      0|				return false;
  170|      0|			}
  171|      0|			return true;
  172|      0|		}
  173|      0|		case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (173:3): [True: 0, False: 1]
  ------------------
  174|      0|		case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (174:3): [True: 0, False: 1]
  ------------------
  175|      0|		case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (175:3): [True: 0, False: 1]
  ------------------
  176|      0|		case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (176:3): [True: 0, False: 1]
  ------------------
  177|      0|		case ZEND_FRAMELESS_ICALL_0:
  ------------------
  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  ------------------
  |  Branch (177:3): [True: 0, False: 1]
  ------------------
  178|      0|		case ZEND_FRAMELESS_ICALL_1:
  ------------------
  |  |  327|      0|#define ZEND_FRAMELESS_ICALL_1              205
  ------------------
  |  Branch (178:3): [True: 0, False: 1]
  ------------------
  179|      0|		case ZEND_FRAMELESS_ICALL_2:
  ------------------
  |  |  328|      0|#define ZEND_FRAMELESS_ICALL_2              206
  ------------------
  |  Branch (179:3): [True: 0, False: 1]
  ------------------
  180|      0|		case ZEND_FRAMELESS_ICALL_3:
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (180:3): [True: 0, False: 1]
  ------------------
  181|       |			/* For now assume all calls have side effects */
  182|      0|			return true;
  183|      0|		case ZEND_RECV:
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (183:3): [True: 0, False: 1]
  ------------------
  184|      0|		case ZEND_RECV_INIT:
  ------------------
  |  |  187|      0|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (184:3): [True: 0, False: 1]
  ------------------
  185|       |			/* Even though RECV_INIT can be side-effect free, these cannot be simply dropped
  186|       |			 * due to the prologue skipping code. */
  187|      0|			return true;
  188|      0|		case ZEND_ASSIGN_REF:
  ------------------
  |  |  154|      0|#define ZEND_ASSIGN_REF                      30
  ------------------
  |  Branch (188:3): [True: 0, False: 1]
  ------------------
  189|      0|			return true;
  190|      0|		case ZEND_ASSIGN:
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (190:3): [True: 0, False: 1]
  ------------------
  191|      0|		{
  192|      0|			if (is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def)) {
  ------------------
  |  Branch (192:8): [True: 0, False: 0]
  ------------------
  193|      0|				return true;
  194|      0|			}
  195|      0|			if (!reorder_dtor_effects) {
  ------------------
  |  Branch (195:8): [True: 0, False: 0]
  ------------------
  196|      0|				if (opline->op2_type != IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (196:9): [True: 0, False: 0]
  ------------------
  197|      0|					&& (OP2_INFO() & MAY_HAVE_DTOR)
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              					&& (OP2_INFO() & MAY_HAVE_DTOR)
  ------------------
  |  |   34|      0|	(MAY_BE_OBJECT|MAY_BE_RESOURCE \
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(MAY_BE_OBJECT|MAY_BE_RESOURCE \
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|	|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_OBJECT|MAY_BE_ARRAY_OF_RESOURCE)
  |  |  ------------------
  |  |  |  |   52|      0|#define MAY_BE_ARRAY_OF_ARRAY		(MAY_BE_ARRAY    << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_ARRAY		(MAY_BE_ARRAY    << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_OBJECT|MAY_BE_ARRAY_OF_RESOURCE)
  |  |  ------------------
  |  |  |  |   53|      0|#define MAY_BE_ARRAY_OF_OBJECT		(MAY_BE_OBJECT   << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_OBJECT		(MAY_BE_OBJECT   << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_OBJECT|MAY_BE_ARRAY_OF_RESOURCE)
  |  |  ------------------
  |  |  |  |   54|      0|#define MAY_BE_ARRAY_OF_RESOURCE	(MAY_BE_RESOURCE << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_RESOURCE	(MAY_BE_RESOURCE << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (197:9): [True: 0, False: 0]
  ------------------
  198|      0|					&& ssa->vars[ssa_op->op2_use].escape_state != ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (198:9): [True: 0, False: 0]
  ------------------
  199|       |					/* DCE might shorten lifetime */
  200|      0|					return true;
  201|      0|				}
  202|      0|			}
  203|      0|			return false;
  204|      0|		}
  205|      0|		case ZEND_UNSET_VAR:
  ------------------
  |  |  197|      0|#define ZEND_UNSET_VAR                       74
  ------------------
  |  Branch (205:3): [True: 0, False: 1]
  ------------------
  206|      0|			return true;
  207|      0|		case ZEND_UNSET_CV:
  ------------------
  |  |  275|      0|#define ZEND_UNSET_CV                       153
  ------------------
  |  Branch (207:3): [True: 0, False: 1]
  ------------------
  208|      0|		{
  209|      0|			uint32_t t1 = OP1_INFO();
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
  210|      0|			if (t1 & MAY_BE_REF) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (210:8): [True: 0, False: 0]
  ------------------
  211|       |				/* We don't consider uses as the LHS of an assignment as real uses during DCE, so
  212|       |				 * an unset may be considered dead even if there is a later assignment to the
  213|       |				 * variable. Removing the unset in this case would not be correct if the variable
  214|       |				 * is a reference, because unset breaks references. */
  215|      0|				return true;
  216|      0|			}
  217|      0|			return false;
  218|      0|		}
  219|      0|		case ZEND_PRE_INC:
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (219:3): [True: 0, False: 1]
  ------------------
  220|      0|		case ZEND_POST_INC:
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (220:3): [True: 0, False: 1]
  ------------------
  221|      0|		case ZEND_PRE_DEC:
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (221:3): [True: 0, False: 1]
  ------------------
  222|      0|		case ZEND_POST_DEC:
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (222:3): [True: 0, False: 1]
  ------------------
  223|      0|			return is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def);
  224|      0|		case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (224:3): [True: 0, False: 1]
  ------------------
  225|      0|			return is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def)
  ------------------
  |  Branch (225:11): [True: 0, False: 0]
  ------------------
  226|      0|				|| ssa->vars[ssa_op->op1_def].escape_state != ESCAPE_STATE_NO_ESCAPE;
  ------------------
  |  Branch (226:8): [True: 0, False: 0]
  ------------------
  227|      0|		case ZEND_ASSIGN_DIM:
  ------------------
  |  |  147|      0|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (227:3): [True: 0, False: 1]
  ------------------
  228|      0|		case ZEND_ASSIGN_OBJ:
  ------------------
  |  |  148|      0|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (228:3): [True: 0, False: 1]
  ------------------
  229|      0|			if (is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def)
  ------------------
  |  Branch (229:8): [True: 0, False: 0]
  ------------------
  230|      0|				|| ssa->vars[ssa_op->op1_def].escape_state != ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (230:8): [True: 0, False: 0]
  ------------------
  231|      0|				return true;
  232|      0|			}
  233|      0|			if (!reorder_dtor_effects) {
  ------------------
  |  Branch (233:8): [True: 0, False: 0]
  ------------------
  234|      0|				opline++;
  235|      0|				ssa_op++;
  236|      0|				if (opline->op1_type != IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (236:9): [True: 0, False: 0]
  ------------------
  237|      0|					&& (OP1_INFO() & MAY_HAVE_DTOR)) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              					&& (OP1_INFO() & MAY_HAVE_DTOR)) {
  ------------------
  |  |   34|      0|	(MAY_BE_OBJECT|MAY_BE_RESOURCE \
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(MAY_BE_OBJECT|MAY_BE_RESOURCE \
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|	|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_OBJECT|MAY_BE_ARRAY_OF_RESOURCE)
  |  |  ------------------
  |  |  |  |   52|      0|#define MAY_BE_ARRAY_OF_ARRAY		(MAY_BE_ARRAY    << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_ARRAY		(MAY_BE_ARRAY    << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_OBJECT|MAY_BE_ARRAY_OF_RESOURCE)
  |  |  ------------------
  |  |  |  |   53|      0|#define MAY_BE_ARRAY_OF_OBJECT		(MAY_BE_OBJECT   << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_OBJECT		(MAY_BE_OBJECT   << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_OBJECT|MAY_BE_ARRAY_OF_RESOURCE)
  |  |  ------------------
  |  |  |  |   54|      0|#define MAY_BE_ARRAY_OF_RESOURCE	(MAY_BE_RESOURCE << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_RESOURCE	(MAY_BE_RESOURCE << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (237:9): [True: 0, False: 0]
  ------------------
  238|       |					/* DCE might shorten lifetime */
  239|      0|					return true;
  240|      0|				}
  241|      0|			}
  242|      0|			return false;
  243|      0|		case ZEND_PRE_INC_OBJ:
  ------------------
  |  |  254|      0|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (243:3): [True: 0, False: 1]
  ------------------
  244|      0|		case ZEND_PRE_DEC_OBJ:
  ------------------
  |  |  255|      0|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (244:3): [True: 0, False: 1]
  ------------------
  245|      0|		case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      0|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (245:3): [True: 0, False: 1]
  ------------------
  246|      0|		case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      0|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (246:3): [True: 0, False: 1]
  ------------------
  247|      0|			if (is_bad_mod(ssa, ssa_op->op1_use, ssa_op->op1_def)
  ------------------
  |  Branch (247:8): [True: 0, False: 0]
  ------------------
  248|      0|				|| ssa->vars[ssa_op->op1_def].escape_state != ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (248:8): [True: 0, False: 0]
  ------------------
  249|      0|				return true;
  250|      0|			}
  251|      0|			return false;
  252|      0|		case ZEND_BIND_STATIC:
  ------------------
  |  |  305|      0|#define ZEND_BIND_STATIC                    183
  ------------------
  |  Branch (252:3): [True: 0, False: 1]
  ------------------
  253|      0|			if (op_array->static_variables) {
  ------------------
  |  Branch (253:8): [True: 0, False: 0]
  ------------------
  254|       |				/* Implicit and Explicit bind static is effectively prologue of closure so
  255|       |				   report it has side effects like RECV, RECV_INIT; This allows us to
  256|       |				   reflect on the closure and discover used variable at runtime */
  257|      0|				if ((opline->extended_value & (ZEND_BIND_IMPLICIT|ZEND_BIND_EXPLICIT))) {
  ------------------
  |  | 1203|      0|#define ZEND_BIND_IMPLICIT 2
  ------------------
              				if ((opline->extended_value & (ZEND_BIND_IMPLICIT|ZEND_BIND_EXPLICIT))) {
  ------------------
  |  | 1204|      0|#define ZEND_BIND_EXPLICIT 4
  ------------------
  |  Branch (257:9): [True: 0, False: 0]
  ------------------
  258|      0|					return true;
  259|      0|				}
  260|       |				/* Modifies static variables which are observable through reflection */
  261|      0|				if ((opline->extended_value & ZEND_BIND_REF) && opline->op2_type != IS_UNUSED) {
  ------------------
  |  | 1202|      0|#define ZEND_BIND_REF      1
  ------------------
              				if ((opline->extended_value & ZEND_BIND_REF) && opline->op2_type != IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (261:9): [True: 0, False: 0]
  |  Branch (261:53): [True: 0, False: 0]
  ------------------
  262|      0|					return true;
  263|      0|				}
  264|      0|			}
  265|      0|			return false;
  266|      0|		case ZEND_CHECK_VAR:
  ------------------
  |  |  172|      0|#define ZEND_CHECK_VAR                       49
  ------------------
  |  Branch (266:3): [True: 0, False: 1]
  ------------------
  267|      0|			return (OP1_INFO() & MAY_BE_UNDEF) != 0;
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              			return (OP1_INFO() & MAY_BE_UNDEF) != 0;
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  268|      0|		case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      0|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (268:3): [True: 0, False: 1]
  ------------------
  269|      0|		case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (269:3): [True: 0, False: 1]
  ------------------
  270|       |			/* Model as not having side-effects -- let the side-effect be introduced by
  271|       |			 * FE_FETCH if the array is not known to be non-empty. */
  272|      0|			return (OP1_INFO() & MAY_BE_ANY) != MAY_BE_ARRAY;
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              			return (OP1_INFO() & MAY_BE_ANY) != MAY_BE_ARRAY;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return (OP1_INFO() & MAY_BE_ANY) != MAY_BE_ARRAY;
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
  273|      1|		default:
  ------------------
  |  Branch (273:3): [True: 1, False: 0]
  ------------------
  274|       |			/* For everything we didn't handle, assume a side-effect */
  275|       |			return true;
  276|      1|	}
  277|      1|}

zend_dfa_analyze_op_array:
   40|      1|{
   41|      1|	uint32_t build_flags;
   42|       |
   43|      1|	if (op_array->last_try_catch) {
  ------------------
  |  Branch (43:6): [True: 0, False: 1]
  ------------------
   44|       |		/* TODO: we can't analyze functions with try/catch/finally ??? */
   45|      0|		return FAILURE;
   46|      0|	}
   47|       |
   48|       |    /* Build SSA */
   49|      1|	memset(ssa, 0, sizeof(zend_ssa));
   50|       |
   51|      1|	zend_build_cfg(&ctx->arena, op_array, ZEND_CFG_NO_ENTRY_PREDECESSORS, &ssa->cfg);
  ------------------
  |  |   96|      1|#define ZEND_CFG_NO_ENTRY_PREDECESSORS (1<<25)
  ------------------
   52|       |
   53|      1|	if ((ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS)) {
  ------------------
  |  |   23|      1|#define ZEND_FUNC_INDIRECT_VAR_ACCESS      (1<<0)  /* accesses variables by name  */
  ------------------
  |  Branch (53:6): [True: 0, False: 1]
  ------------------
   54|       |		/* TODO: we can't analyze functions with indirect variable access ??? */
   55|      0|		return FAILURE;
   56|      0|	}
   57|       |
   58|      1|	zend_cfg_build_predecessors(&ctx->arena, &ssa->cfg);
   59|       |
   60|      1|	if (ctx->debug_level & ZEND_DUMP_DFA_CFG) {
  ------------------
  |  |   76|      1|#define ZEND_DUMP_DFA_CFG           (1<<23)
  ------------------
  |  Branch (60:6): [True: 0, False: 1]
  ------------------
   61|      0|		zend_dump_op_array(op_array, ZEND_DUMP_CFG, "dfa cfg", &ssa->cfg);
  ------------------
  |  |   27|      0|#define ZEND_DUMP_CFG                  (1<<2)
  ------------------
   62|      0|	}
   63|       |
   64|       |	/* Compute Dominators Tree */
   65|      1|	zend_cfg_compute_dominators_tree(op_array, &ssa->cfg);
   66|       |
   67|       |	/* Identify reducible and irreducible loops */
   68|      1|	zend_cfg_identify_loops(op_array, &ssa->cfg);
   69|       |
   70|      1|	if (ctx->debug_level & ZEND_DUMP_DFA_DOMINATORS) {
  ------------------
  |  |   77|      1|#define ZEND_DUMP_DFA_DOMINATORS    (1<<24)
  ------------------
  |  Branch (70:6): [True: 0, False: 1]
  ------------------
   71|      0|		zend_dump_dominators(op_array, &ssa->cfg);
   72|      0|	}
   73|       |
   74|      1|	build_flags = 0;
   75|      1|	if (ctx->debug_level & ZEND_DUMP_DFA_LIVENESS) {
  ------------------
  |  |   78|      1|#define ZEND_DUMP_DFA_LIVENESS      (1<<25)
  ------------------
  |  Branch (75:6): [True: 0, False: 1]
  ------------------
   76|      0|		build_flags |= ZEND_SSA_DEBUG_LIVENESS;
  ------------------
  |  |   93|      0|#define ZEND_SSA_DEBUG_LIVENESS        (1<<29)
  ------------------
   77|      0|	}
   78|      1|	if (ctx->debug_level & ZEND_DUMP_DFA_PHI) {
  ------------------
  |  |   79|      1|#define ZEND_DUMP_DFA_PHI           (1<<26)
  ------------------
  |  Branch (78:6): [True: 0, False: 1]
  ------------------
   79|      0|		build_flags |= ZEND_SSA_DEBUG_PHI_PLACEMENT;
  ------------------
  |  |   94|      0|#define ZEND_SSA_DEBUG_PHI_PLACEMENT   (1<<28)
  ------------------
   80|      0|	}
   81|      1|	if (zend_build_ssa(&ctx->arena, ctx->script, op_array, build_flags, ssa) == FAILURE) {
  ------------------
  |  Branch (81:6): [True: 0, False: 1]
  ------------------
   82|      0|		return FAILURE;
   83|      0|	}
   84|       |
   85|      1|	if (ctx->debug_level & ZEND_DUMP_DFA_SSA) {
  ------------------
  |  |   80|      1|#define ZEND_DUMP_DFA_SSA           (1<<27)
  ------------------
  |  Branch (85:6): [True: 0, False: 1]
  ------------------
   86|      0|		zend_dump_op_array(op_array, ZEND_DUMP_SSA, "dfa ssa", ssa);
  ------------------
  |  |   28|      0|#define ZEND_DUMP_SSA                  (1<<3)
  ------------------
   87|      0|	}
   88|       |
   89|       |
   90|      1|	zend_ssa_compute_use_def_chains(&ctx->arena, op_array, ssa);
   91|       |
   92|      1|	zend_ssa_find_false_dependencies(op_array, ssa);
   93|       |
   94|      1|	zend_ssa_find_sccs(op_array, ssa);
   95|       |
   96|      1|	if (zend_ssa_inference(&ctx->arena, op_array, ctx->script, ssa, ctx->optimization_level) == FAILURE) {
  ------------------
  |  Branch (96:6): [True: 0, False: 1]
  ------------------
   97|      0|		return FAILURE;
   98|      0|	}
   99|       |
  100|      1|	if (zend_ssa_escape_analysis(ctx->script, op_array, ssa) == FAILURE) {
  ------------------
  |  Branch (100:6): [True: 0, False: 1]
  ------------------
  101|      0|		return FAILURE;
  102|      0|	}
  103|       |
  104|      1|	if (ctx->debug_level & ZEND_DUMP_DFA_SSA_VARS) {
  ------------------
  |  |   81|      1|#define ZEND_DUMP_DFA_SSA_VARS      (1<<28)
  ------------------
  |  Branch (104:6): [True: 0, False: 1]
  ------------------
  105|      0|		zend_dump_ssa_variables(op_array, ssa, 0);
  106|      0|	}
  107|       |
  108|      1|	return SUCCESS;
  109|      1|}
zend_dfa_optimize_op_array:
 1033|      1|{
 1034|      1|	if (ctx->debug_level & ZEND_DUMP_BEFORE_DFA_PASS) {
  ------------------
  |  |   74|      1|#define ZEND_DUMP_BEFORE_DFA_PASS   (1<<21)
  ------------------
  |  Branch (1034:6): [True: 0, False: 1]
  ------------------
 1035|      0|		zend_dump_op_array(op_array, ZEND_DUMP_SSA, "before dfa pass", ssa);
  ------------------
  |  |   28|      0|#define ZEND_DUMP_SSA                  (1<<3)
  ------------------
 1036|      0|	}
 1037|       |
 1038|      1|	if (ssa->var_info) {
  ------------------
  |  Branch (1038:6): [True: 1, False: 0]
  ------------------
 1039|      1|		int op_1;
 1040|      1|		int v;
 1041|      1|		int remove_nops = 0;
 1042|      1|		zend_op *opline;
 1043|      1|		zend_ssa_op *ssa_op;
 1044|      1|		zval tmp;
 1045|       |
 1046|      1|#if ZEND_DEBUG_DFA
 1047|      1|		ssa_verify_integrity(op_array, ssa, "before dfa");
 1048|      1|#endif
 1049|       |
 1050|      1|		if (ZEND_OPTIMIZER_PASS_8 & ctx->optimization_level) {
  ------------------
  |  |   33|      1|#define ZEND_OPTIMIZER_PASS_8		(1<<7)   /* SCCP (constant propagation)  */
  ------------------
  |  Branch (1050:7): [True: 1, False: 0]
  ------------------
 1051|      1|			if (sccp_optimize_op_array(ctx, op_array, ssa, call_map)) {
  ------------------
  |  Branch (1051:8): [True: 0, False: 1]
  ------------------
 1052|      0|				remove_nops = 1;
 1053|      0|			}
 1054|       |
 1055|      1|			if (zend_dfa_optimize_jmps(op_array, ssa)) {
  ------------------
  |  Branch (1055:8): [True: 0, False: 1]
  ------------------
 1056|      0|				remove_nops = 1;
 1057|      0|			}
 1058|       |
 1059|      1|#if ZEND_DEBUG_DFA
 1060|      1|			ssa_verify_integrity(op_array, ssa, "after sccp");
 1061|      1|#endif
 1062|      1|			if (ZEND_FUNC_INFO(op_array)) {
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  |  |  ------------------
  |  |  |  Branch (46:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1063|      1|				if (zend_dfa_optimize_calls(op_array, ssa)) {
  ------------------
  |  Branch (1063:9): [True: 0, False: 1]
  ------------------
 1064|      0|					remove_nops = 1;
 1065|      0|				}
 1066|      1|			}
 1067|      1|			if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_8) {
  ------------------
  |  |   59|      1|#define ZEND_DUMP_AFTER_PASS_8		ZEND_OPTIMIZER_PASS_8
  |  |  ------------------
  |  |  |  |   33|      1|#define ZEND_OPTIMIZER_PASS_8		(1<<7)   /* SCCP (constant propagation)  */
  |  |  ------------------
  ------------------
  |  Branch (1067:8): [True: 0, False: 1]
  ------------------
 1068|      0|				zend_dump_op_array(op_array, ZEND_DUMP_SSA, "after sccp pass", ssa);
  ------------------
  |  |   28|      0|#define ZEND_DUMP_SSA                  (1<<3)
  ------------------
 1069|      0|			}
 1070|      1|#if ZEND_DEBUG_DFA
 1071|      1|			ssa_verify_integrity(op_array, ssa, "after calls");
 1072|      1|#endif
 1073|      1|		}
 1074|       |
 1075|      1|		if (ZEND_OPTIMIZER_PASS_14 & ctx->optimization_level) {
  ------------------
  |  |   39|      1|#define ZEND_OPTIMIZER_PASS_14		(1<<13)  /* DCE (dead code elimination) */
  ------------------
  |  Branch (1075:7): [True: 1, False: 0]
  ------------------
 1076|      1|			if (dce_optimize_op_array(op_array, ctx, ssa, 0)) {
  ------------------
  |  Branch (1076:8): [True: 0, False: 1]
  ------------------
 1077|      0|				remove_nops = 1;
 1078|      0|			}
 1079|      1|			if (zend_dfa_optimize_jmps(op_array, ssa)) {
  ------------------
  |  Branch (1079:8): [True: 0, False: 1]
  ------------------
 1080|      0|				remove_nops = 1;
 1081|      0|			}
 1082|      1|			if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_14) {
  ------------------
  |  |   65|      1|#define ZEND_DUMP_AFTER_PASS_14		ZEND_OPTIMIZER_PASS_14
  |  |  ------------------
  |  |  |  |   39|      1|#define ZEND_OPTIMIZER_PASS_14		(1<<13)  /* DCE (dead code elimination) */
  |  |  ------------------
  ------------------
  |  Branch (1082:8): [True: 0, False: 1]
  ------------------
 1083|      0|				zend_dump_op_array(op_array, ZEND_DUMP_SSA, "after dce pass", ssa);
  ------------------
  |  |   28|      0|#define ZEND_DUMP_SSA                  (1<<3)
  ------------------
 1084|      0|			}
 1085|      1|#if ZEND_DEBUG_DFA
 1086|      1|			ssa_verify_integrity(op_array, ssa, "after dce");
 1087|      1|#endif
 1088|      1|		}
 1089|       |
 1090|      1|		for (v = op_array->last_var; v < ssa->vars_count; v++) {
  ------------------
  |  Branch (1090:32): [True: 0, False: 1]
  ------------------
 1091|       |
 1092|      0|			op_1 = ssa->vars[v].definition;
 1093|       |
 1094|      0|			if (op_1 < 0) {
  ------------------
  |  Branch (1094:8): [True: 0, False: 0]
  ------------------
 1095|      0|				continue;
 1096|      0|			}
 1097|       |
 1098|      0|			opline = op_array->opcodes + op_1;
 1099|      0|			ssa_op = &ssa->ops[op_1];
 1100|       |
 1101|       |			/* Convert LONG constants to DOUBLE */
 1102|      0|			if (ssa->var_info[v].use_as_double) {
  ------------------
  |  Branch (1102:8): [True: 0, False: 0]
  ------------------
 1103|      0|				if (opline->opcode == ZEND_ASSIGN
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (1103:9): [True: 0, False: 0]
  ------------------
 1104|      0|				 && opline->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1104:9): [True: 0, False: 0]
  ------------------
 1105|      0|				 && ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1105:9): [True: 0, False: 0]
  ------------------
 1106|      0|				 && !RETURN_VALUE_USED(opline)
  ------------------
  |  |  112|      0|	((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  ------------------
  |  Branch (1106:9): [True: 0, False: 0]
  ------------------
 1107|      0|				) {
 1108|       |
 1109|       |// op_1: ASSIGN ? -> #v [use_as_double], long(?) => ASSIGN ? -> #v, double(?)
 1110|       |
 1111|      0|					zval *zv = CT_CONSTANT_EX(op_array, opline->op2.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1112|      0|					ZEND_ASSERT(Z_TYPE_INFO_P(zv) == IS_LONG);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1112:6): [True: 0, False: 0]
  |  Branch (1112:6): [True: 0, False: 0]
  ------------------
 1113|      0|					ZVAL_DOUBLE(&tmp, zval_get_double(zv));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1114|      0|					opline->op2.constant = zend_optimizer_add_literal(op_array, &tmp);
 1115|       |
 1116|      0|				} else if (opline->opcode == ZEND_QM_ASSIGN
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (1116:16): [True: 0, False: 0]
  ------------------
 1117|      0|				 && opline->op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1117:9): [True: 0, False: 0]
  ------------------
 1118|      0|				) {
 1119|       |
 1120|       |// op_1: QM_ASSIGN #v [use_as_double], long(?) => QM_ASSIGN #v, double(?)
 1121|       |
 1122|      0|					zval *zv = CT_CONSTANT_EX(op_array, opline->op1.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1123|      0|					ZEND_ASSERT(Z_TYPE_INFO_P(zv) == IS_LONG);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1123:6): [True: 0, False: 0]
  |  Branch (1123:6): [True: 0, False: 0]
  ------------------
 1124|      0|					ZVAL_DOUBLE(&tmp, zval_get_double(zv));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1125|      0|					opline->op1.constant = zend_optimizer_add_literal(op_array, &tmp);
 1126|      0|				}
 1127|       |
 1128|      0|			} else {
 1129|      0|				if (opline->opcode == ZEND_ADD
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1129:9): [True: 0, False: 0]
  ------------------
 1130|      0|				 || opline->opcode == ZEND_SUB
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (1130:9): [True: 0, False: 0]
  ------------------
 1131|      0|				 || opline->opcode == ZEND_MUL
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (1131:9): [True: 0, False: 0]
  ------------------
 1132|      0|				 || opline->opcode == ZEND_IS_EQUAL
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (1132:9): [True: 0, False: 0]
  ------------------
 1133|      0|				 || opline->opcode == ZEND_IS_NOT_EQUAL
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (1133:9): [True: 0, False: 0]
  ------------------
 1134|      0|				 || opline->opcode == ZEND_IS_SMALLER
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (1134:9): [True: 0, False: 0]
  ------------------
 1135|      0|				 || opline->opcode == ZEND_IS_SMALLER_OR_EQUAL
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (1135:9): [True: 0, False: 0]
  ------------------
 1136|      0|				) {
 1137|       |
 1138|      0|					if (opline->op1_type == IS_CONST && opline->op2_type != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (opline->op1_type == IS_CONST && opline->op2_type != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1138:10): [True: 0, False: 0]
  |  Branch (1138:42): [True: 0, False: 0]
  ------------------
 1139|      0|						zval *zv = CT_CONSTANT_EX(op_array, opline->op1.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1140|       |
 1141|      0|						if ((OP2_INFO() & MAY_BE_ANY) == MAY_BE_DOUBLE
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              						if ((OP2_INFO() & MAY_BE_ANY) == MAY_BE_DOUBLE
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						if ((OP2_INFO() & MAY_BE_ANY) == MAY_BE_DOUBLE
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1141:11): [True: 0, False: 0]
  ------------------
 1142|      0|						 && Z_TYPE_INFO_P(zv) == IS_LONG) {
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              						 && Z_TYPE_INFO_P(zv) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1142:11): [True: 0, False: 0]
  ------------------
 1143|       |
 1144|       |// op_1: #v.? = ADD long(?), #?.? [double] => #v.? = ADD double(?), #?.? [double]
 1145|       |
 1146|      0|							ZVAL_DOUBLE(&tmp, zval_get_double(zv));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1147|      0|							opline->op1.constant = zend_optimizer_add_literal(op_array, &tmp);
 1148|      0|							zv = CT_CONSTANT_EX(op_array, opline->op1.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1149|      0|						}
 1150|      0|						if (opline->opcode == ZEND_ADD) {
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1150:11): [True: 0, False: 0]
  ------------------
 1151|      0|							zv = CT_CONSTANT_EX(op_array, opline->op1.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1152|       |
 1153|      0|							if (((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              							if (((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							if (((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              							if (((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (1153:13): [True: 0, False: 0]
  ------------------
 1154|      0|							  && Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							  && Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1154:13): [True: 0, False: 0]
  ------------------
 1155|      0|							  && Z_LVAL_P(zv) == 0)
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1155:13): [True: 0, False: 0]
  ------------------
 1156|      0|							 || ((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              							 || ((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							 || ((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              							 || ((OP2_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1156:13): [True: 0, False: 0]
  ------------------
 1157|      0|							  && Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							  && Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (1157:13): [True: 0, False: 0]
  ------------------
 1158|      0|							  && Z_DVAL_P(zv) == 0.0)) {
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (1158:13): [True: 0, False: 0]
  ------------------
 1159|       |
 1160|       |// op_1: #v.? = ADD 0, #?.? [double,long] => #v.? = QM_ASSIGN #?.?
 1161|       |
 1162|      0|								opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
 1163|      0|								opline->op1_type = opline->op2_type;
 1164|      0|								opline->op1.var = opline->op2.var;
 1165|      0|								opline->op2_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 1166|      0|								opline->op2.num = 0;
 1167|      0|								ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use;
 1168|      0|								ssa->ops[op_1].op1_use_chain = ssa->ops[op_1].op2_use_chain;
 1169|      0|								ssa->ops[op_1].op2_use = -1;
 1170|      0|								ssa->ops[op_1].op2_use_chain = -1;
 1171|      0|							}
 1172|      0|						} else if (opline->opcode == ZEND_MUL
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (1172:18): [True: 0, False: 0]
  ------------------
 1173|      0|						 && (OP2_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              						 && (OP2_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						 && (OP2_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              						 && (OP2_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              						 && (OP2_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1173:11): [True: 0, False: 0]
  ------------------
 1174|      0|							zv = CT_CONSTANT_EX(op_array, opline->op1.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1175|       |
 1176|      0|							if ((Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							if ((Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1176:13): [True: 0, False: 0]
  ------------------
 1177|      0|							  && Z_LVAL_P(zv) == 2)
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1177:13): [True: 0, False: 0]
  ------------------
 1178|      0|							 || (Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							 || (Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (1178:13): [True: 0, False: 0]
  ------------------
 1179|      0|							  && Z_DVAL_P(zv) == 2.0
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (1179:13): [True: 0, False: 0]
  ------------------
 1180|      0|							  && !(OP2_INFO() & MAY_BE_LONG))) {
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              							  && !(OP2_INFO() & MAY_BE_LONG))) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (1180:13): [True: 0, False: 0]
  ------------------
 1181|       |
 1182|       |// op_1: #v.? = MUL 2, #x.? [double,long] => #v.? = ADD #x.?, #x.?
 1183|       |
 1184|      0|								opline->opcode = ZEND_ADD;
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
 1185|      0|								opline->op1_type = opline->op2_type;
 1186|      0|								opline->op1.var = opline->op2.var;
 1187|      0|								ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use;
 1188|      0|								ssa->ops[op_1].op1_use_chain = ssa->ops[op_1].op2_use_chain;
 1189|      0|							}
 1190|      0|						}
 1191|      0|					} else if (opline->op1_type != IS_CONST && opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (opline->op1_type != IS_CONST && opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1191:17): [True: 0, False: 0]
  |  Branch (1191:49): [True: 0, False: 0]
  ------------------
 1192|      0|						zval *zv = CT_CONSTANT_EX(op_array, opline->op2.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1193|       |
 1194|      0|						if ((OP1_INFO() & MAY_BE_ANY) == MAY_BE_DOUBLE
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              						if ((OP1_INFO() & MAY_BE_ANY) == MAY_BE_DOUBLE
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						if ((OP1_INFO() & MAY_BE_ANY) == MAY_BE_DOUBLE
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1194:11): [True: 0, False: 0]
  ------------------
 1195|      0|						 && Z_TYPE_INFO_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG) {
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              						 && Z_TYPE_INFO_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1195:11): [True: 0, False: 0]
  ------------------
 1196|       |
 1197|       |// op_1: #v.? = ADD #?.? [double], long(?) => #v.? = ADD #?.? [double], double(?)
 1198|       |
 1199|      0|							ZVAL_DOUBLE(&tmp, zval_get_double(zv));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1200|      0|							opline->op2.constant = zend_optimizer_add_literal(op_array, &tmp);
 1201|      0|							zv = CT_CONSTANT_EX(op_array, opline->op2.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1202|      0|						}
 1203|      0|						if (opline->opcode == ZEND_ADD || opline->opcode == ZEND_SUB) {
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
              						if (opline->opcode == ZEND_ADD || opline->opcode == ZEND_SUB) {
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (1203:11): [True: 0, False: 0]
  |  Branch (1203:41): [True: 0, False: 0]
  ------------------
 1204|      0|							if (((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							if (((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							if (((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              							if (((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_LONG
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (1204:13): [True: 0, False: 0]
  ------------------
 1205|      0|							  && Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							  && Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1205:13): [True: 0, False: 0]
  ------------------
 1206|      0|							  && Z_LVAL_P(zv) == 0)
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1206:13): [True: 0, False: 0]
  ------------------
 1207|      0|							 || ((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							 || ((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							 || ((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              							 || ((OP1_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF)) == MAY_BE_DOUBLE
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1207:13): [True: 0, False: 0]
  ------------------
 1208|      0|							  && Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							  && Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (1208:13): [True: 0, False: 0]
  ------------------
 1209|      0|							  && Z_DVAL_P(zv) == 0.0)) {
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (1209:13): [True: 0, False: 0]
  ------------------
 1210|       |
 1211|       |// op_1: #v.? = ADD #?.? [double,long], 0 => #v.? = QM_ASSIGN #?.?
 1212|       |
 1213|      0|								opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
 1214|      0|								opline->op2_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 1215|      0|								opline->op2.num = 0;
 1216|      0|							}
 1217|      0|						} else if (opline->opcode == ZEND_MUL
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (1217:18): [True: 0, False: 0]
  ------------------
 1218|      0|						 && (OP1_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              						 && (OP1_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						 && (OP1_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              						 && (OP1_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              						 && (OP1_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1218:11): [True: 0, False: 0]
  ------------------
 1219|      0|							zv = CT_CONSTANT_EX(op_array, opline->op2.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1220|       |
 1221|      0|							if ((Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							if ((Z_TYPE_INFO_P(zv) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1221:13): [True: 0, False: 0]
  ------------------
 1222|      0|							  && Z_LVAL_P(zv) == 2)
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1222:13): [True: 0, False: 0]
  ------------------
 1223|      0|							 || (Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              							 || (Z_TYPE_INFO_P(zv) == IS_DOUBLE
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (1223:13): [True: 0, False: 0]
  ------------------
 1224|      0|							  && Z_DVAL_P(zv) == 2.0
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (1224:13): [True: 0, False: 0]
  ------------------
 1225|      0|							  && !(OP1_INFO() & MAY_BE_LONG))) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							  && !(OP1_INFO() & MAY_BE_LONG))) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (1225:13): [True: 0, False: 0]
  ------------------
 1226|       |
 1227|       |// op_1: #v.? = MUL #x.? [double,long], 2 => #v.? = ADD #x.?, #x.?
 1228|       |
 1229|      0|								opline->opcode = ZEND_ADD;
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
 1230|      0|								opline->op2_type = opline->op1_type;
 1231|      0|								opline->op2.var = opline->op1.var;
 1232|      0|								ssa->ops[op_1].op2_use = ssa->ops[op_1].op1_use;
 1233|      0|								ssa->ops[op_1].op2_use_chain = ssa->ops[op_1].op1_use_chain;
 1234|      0|							}
 1235|      0|						}
 1236|      0|					}
 1237|      0|				} else if (opline->opcode == ZEND_CONCAT) {
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (1237:16): [True: 0, False: 0]
  ------------------
 1238|      0|					if (!(OP1_INFO() & MAY_BE_OBJECT)
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              					if (!(OP1_INFO() & MAY_BE_OBJECT)
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (1238:10): [True: 0, False: 0]
  ------------------
 1239|      0|					 && !(OP2_INFO() & MAY_BE_OBJECT)) {
  ------------------
  |  |  197|      0|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              					 && !(OP2_INFO() & MAY_BE_OBJECT)) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (1239:10): [True: 0, False: 0]
  ------------------
 1240|      0|						opline->opcode = ZEND_FAST_CONCAT;
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
 1241|      0|					}
 1242|      0|				} else if (opline->opcode == ZEND_VERIFY_RETURN_TYPE
  ------------------
  |  |  246|      0|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
  |  Branch (1242:16): [True: 0, False: 0]
  ------------------
 1243|      0|				 && opline->op1_type != IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1243:9): [True: 0, False: 0]
  ------------------
 1244|      0|				 && ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1244:9): [True: 0, False: 0]
  ------------------
 1245|      0|				 && ssa->ops[op_1].op1_use >= 0) {
  ------------------
  |  Branch (1245:9): [True: 0, False: 0]
  ------------------
 1246|      0|					int orig_var = ssa->ops[op_1].op1_use;
 1247|      0|					int ret = ssa->vars[v].use_chain;
 1248|       |
 1249|      0|					if (ssa->ops[op_1].op1_use_chain == -1
  ------------------
  |  Branch (1249:10): [True: 0, False: 0]
  ------------------
 1250|      0|					 && can_elide_return_type_check(ctx->script, op_array, ssa, &ssa->ops[op_1])) {
  ------------------
  |  Branch (1250:10): [True: 0, False: 0]
  ------------------
 1251|       |
 1252|       |// op_1: VERIFY_RETURN_TYPE #orig_var.? [T] -> #v.? [T] => NOP
 1253|       |
 1254|      0|						zend_ssa_unlink_use_chain(ssa, op_1, orig_var);
 1255|       |
 1256|      0|						if (ret >= 0) {
  ------------------
  |  Branch (1256:11): [True: 0, False: 0]
  ------------------
 1257|      0|							ssa->ops[ret].op1_use = orig_var;
 1258|      0|							ssa->ops[ret].op1_use_chain = ssa->vars[orig_var].use_chain;
 1259|      0|							ssa->vars[orig_var].use_chain = ret;
 1260|      0|						}
 1261|       |
 1262|      0|						ssa->vars[v].definition = -1;
 1263|      0|						ssa->vars[v].use_chain = -1;
 1264|       |
 1265|      0|						ssa->ops[op_1].op1_def = -1;
 1266|      0|						ssa->ops[op_1].op1_use = -1;
 1267|       |
 1268|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1269|      0|						remove_nops = 1;
 1270|      0|					} else if (ret >= 0
  ------------------
  |  Branch (1270:17): [True: 0, False: 0]
  ------------------
 1271|      0|					 && ssa->ops[ret].op1_use == v
  ------------------
  |  Branch (1271:10): [True: 0, False: 0]
  ------------------
 1272|      0|					 && ssa->ops[ret].op1_use_chain == -1
  ------------------
  |  Branch (1272:10): [True: 0, False: 0]
  ------------------
 1273|      0|					 && can_elide_return_type_check(ctx->script, op_array, ssa, &ssa->ops[op_1])) {
  ------------------
  |  Branch (1273:10): [True: 0, False: 0]
  ------------------
 1274|       |
 1275|       |// op_1: VERIFY_RETURN_TYPE #orig_var.? [T] -> #v.? [T] => NOP
 1276|       |
 1277|      0|						zend_ssa_replace_use_chain(ssa, op_1, ret, orig_var);
 1278|       |
 1279|      0|						ssa->ops[ret].op1_use = orig_var;
 1280|      0|						ssa->ops[ret].op1_use_chain = ssa->ops[op_1].op1_use_chain;
 1281|       |
 1282|      0|						ssa->vars[v].definition = -1;
 1283|      0|						ssa->vars[v].use_chain = -1;
 1284|       |
 1285|      0|						ssa->ops[op_1].op1_def = -1;
 1286|      0|						ssa->ops[op_1].op1_use = -1;
 1287|       |
 1288|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1289|      0|						remove_nops = 1;
 1290|      0|					}
 1291|      0|				}
 1292|      0|			}
 1293|       |
 1294|      0|			if (opline->opcode == ZEND_QM_ASSIGN
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (1294:8): [True: 0, False: 0]
  ------------------
 1295|      0|			 && ssa->ops[op_1].result_def == v
  ------------------
  |  Branch (1295:8): [True: 0, False: 0]
  ------------------
 1296|      0|			 && opline->op1_type & (IS_TMP_VAR|IS_VAR)
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			 && opline->op1_type & (IS_TMP_VAR|IS_VAR)
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (1296:8): [True: 0, False: 0]
  ------------------
 1297|      0|			 && !(ssa->var_info[v].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[v].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[v].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[v].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[v].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1297:8): [True: 0, False: 0]
  ------------------
 1298|      0|			) {
 1299|       |
 1300|      0|				int src_var = ssa->ops[op_1].op1_use;
 1301|       |
 1302|      0|				if (src_var >= 0
  ------------------
  |  Branch (1302:9): [True: 0, False: 0]
  ------------------
 1303|      0|				 && !(ssa->var_info[src_var].type & MAY_BE_REF)
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1303:9): [True: 0, False: 0]
  ------------------
 1304|      0|				 && (ssa->var_info[src_var].type & (MAY_BE_UNDEF|MAY_BE_ANY))
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              				 && (ssa->var_info[src_var].type & (MAY_BE_UNDEF|MAY_BE_ANY))
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1304:9): [True: 0, False: 0]
  ------------------
 1305|      0|				 && ssa->vars[src_var].definition >= 0
  ------------------
  |  Branch (1305:9): [True: 0, False: 0]
  ------------------
 1306|      0|				 && ssa->ops[ssa->vars[src_var].definition].result_def == src_var
  ------------------
  |  Branch (1306:9): [True: 0, False: 0]
  ------------------
 1307|      0|				 && ssa->ops[ssa->vars[src_var].definition].result_use < 0
  ------------------
  |  Branch (1307:9): [True: 0, False: 0]
  ------------------
 1308|      0|				 && ssa->vars[src_var].use_chain == op_1
  ------------------
  |  Branch (1308:9): [True: 0, False: 0]
  ------------------
 1309|      0|				 && ssa->ops[op_1].op1_use_chain < 0
  ------------------
  |  Branch (1309:9): [True: 0, False: 0]
  ------------------
 1310|      0|				 && !ssa->vars[src_var].phi_use_chain
  ------------------
  |  Branch (1310:9): [True: 0, False: 0]
  ------------------
 1311|      0|				 && !ssa->vars[src_var].sym_use_chain
  ------------------
  |  Branch (1311:9): [True: 0, False: 0]
  ------------------
 1312|      0|				 && opline_supports_assign_contraction(
  ------------------
  |  Branch (1312:9): [True: 0, False: 0]
  ------------------
 1313|      0|					 op_array, ssa, &op_array->opcodes[ssa->vars[src_var].definition],
 1314|      0|					 src_var, opline->result.var)
 1315|      0|				 && !variable_defined_or_used_in_range(ssa, EX_VAR_TO_NUM(opline->result.var),
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  |  Branch (1315:9): [True: 0, False: 0]
  ------------------
 1316|      0|						ssa->vars[src_var].definition+1, op_1)
 1317|      0|				) {
 1318|       |
 1319|      0|					int orig_var = ssa->ops[op_1].result_use;
 1320|      0|					int op_2 = ssa->vars[src_var].definition;
 1321|       |
 1322|       |// op_2: #src_var.T = OP ...                                        => #v.CV = OP ...
 1323|       |// op_1: QM_ASSIGN #src_var.T #orig_var.CV [undef,scalar] -> #v.CV,    NOP
 1324|       |
 1325|      0|					if (orig_var >= 0) {
  ------------------
  |  Branch (1325:10): [True: 0, False: 0]
  ------------------
 1326|      0|						zend_ssa_unlink_use_chain(ssa, op_1, orig_var);
 1327|      0|					}
 1328|       |
 1329|       |					/* Reconstruct SSA */
 1330|      0|					ssa->vars[v].definition = op_2;
 1331|      0|					ssa->ops[op_2].result_def = v;
 1332|       |
 1333|      0|					ssa->vars[src_var].definition = -1;
 1334|      0|					ssa->vars[src_var].use_chain = -1;
 1335|       |
 1336|      0|					ssa->ops[op_1].op1_use = -1;
 1337|      0|					ssa->ops[op_1].op1_def = -1;
 1338|      0|					ssa->ops[op_1].op1_use_chain = -1;
 1339|      0|					ssa->ops[op_1].result_use = -1;
 1340|      0|					ssa->ops[op_1].result_def = -1;
 1341|      0|					ssa->ops[op_1].res_use_chain = -1;
 1342|       |
 1343|       |					/* Update opcodes */
 1344|      0|					op_array->opcodes[op_2].result_type = opline->result_type;
 1345|      0|					op_array->opcodes[op_2].result.var = opline->result.var;
 1346|       |
 1347|      0|					MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1348|      0|					remove_nops = 1;
 1349|       |
 1350|      0|					if (op_array->opcodes[op_2].opcode == ZEND_SUB
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (1350:10): [True: 0, False: 0]
  ------------------
 1351|      0|					 && op_array->opcodes[op_2].op1_type == op_array->opcodes[op_2].result_type
  ------------------
  |  Branch (1351:10): [True: 0, False: 0]
  ------------------
 1352|      0|					 && op_array->opcodes[op_2].op1.var == op_array->opcodes[op_2].result.var
  ------------------
  |  Branch (1352:10): [True: 0, False: 0]
  ------------------
 1353|      0|					 && op_array->opcodes[op_2].op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1353:10): [True: 0, False: 0]
  ------------------
 1354|      0|					 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1354:10): [True: 0, False: 0]
  ------------------
 1355|      0|					 && Z_LVAL_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1355:10): [True: 0, False: 0]
  ------------------
 1356|      0|					 && ssa->ops[op_2].op1_use >= 0
  ------------------
  |  Branch (1356:10): [True: 0, False: 0]
  ------------------
 1357|      0|					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1357:10): [True: 0, False: 0]
  ------------------
 1358|       |
 1359|      0|						op_array->opcodes[op_2].opcode = ZEND_PRE_DEC;
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
 1360|      0|						SET_UNUSED(op_array->opcodes[op_2].op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1361|      0|						SET_UNUSED(op_array->opcodes[op_2].result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1362|       |
 1363|      0|						ssa->ops[op_2].result_def = -1;
 1364|      0|						ssa->ops[op_2].op1_def = v;
 1365|       |
 1366|      0|					} else if (op_array->opcodes[op_2].opcode == ZEND_ADD
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1366:17): [True: 0, False: 0]
  ------------------
 1367|      0|					 && op_array->opcodes[op_2].op1_type == op_array->opcodes[op_2].result_type
  ------------------
  |  Branch (1367:10): [True: 0, False: 0]
  ------------------
 1368|      0|					 && op_array->opcodes[op_2].op1.var == op_array->opcodes[op_2].result.var
  ------------------
  |  Branch (1368:10): [True: 0, False: 0]
  ------------------
 1369|      0|					 && op_array->opcodes[op_2].op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1369:10): [True: 0, False: 0]
  ------------------
 1370|      0|					 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1370:10): [True: 0, False: 0]
  ------------------
 1371|      0|					 && Z_LVAL_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1371:10): [True: 0, False: 0]
  ------------------
 1372|      0|					 && ssa->ops[op_2].op1_use >= 0
  ------------------
  |  Branch (1372:10): [True: 0, False: 0]
  ------------------
 1373|      0|					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1373:10): [True: 0, False: 0]
  ------------------
 1374|       |
 1375|      0|						op_array->opcodes[op_2].opcode = ZEND_PRE_INC;
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
 1376|      0|						SET_UNUSED(op_array->opcodes[op_2].op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1377|      0|						SET_UNUSED(op_array->opcodes[op_2].result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1378|       |
 1379|      0|						ssa->ops[op_2].result_def = -1;
 1380|      0|						ssa->ops[op_2].op1_def = v;
 1381|       |
 1382|      0|					} else if (op_array->opcodes[op_2].opcode == ZEND_ADD
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1382:17): [True: 0, False: 0]
  ------------------
 1383|      0|					 && op_array->opcodes[op_2].op2_type == op_array->opcodes[op_2].result_type
  ------------------
  |  Branch (1383:10): [True: 0, False: 0]
  ------------------
 1384|      0|					 && op_array->opcodes[op_2].op2.var == op_array->opcodes[op_2].result.var
  ------------------
  |  Branch (1384:10): [True: 0, False: 0]
  ------------------
 1385|      0|					 && op_array->opcodes[op_2].op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1385:10): [True: 0, False: 0]
  ------------------
 1386|      0|					 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op1.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op1.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1386:10): [True: 0, False: 0]
  ------------------
 1387|      0|					 && Z_LVAL_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op1.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1387:10): [True: 0, False: 0]
  ------------------
 1388|      0|					 && ssa->ops[op_2].op2_use >= 0
  ------------------
  |  Branch (1388:10): [True: 0, False: 0]
  ------------------
 1389|      0|					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              					 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1389:10): [True: 0, False: 0]
  ------------------
 1390|       |
 1391|      0|						op_array->opcodes[op_2].opcode = ZEND_PRE_INC;
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
 1392|      0|						op_array->opcodes[op_2].op1_type = op_array->opcodes[op_2].op2_type;
 1393|      0|						op_array->opcodes[op_2].op1.var = op_array->opcodes[op_2].op2.var;
 1394|      0|						SET_UNUSED(op_array->opcodes[op_2].op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1395|      0|						SET_UNUSED(op_array->opcodes[op_2].result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1396|       |
 1397|      0|						ssa->ops[op_2].result_def = -1;
 1398|      0|						ssa->ops[op_2].op1_def = v;
 1399|      0|						ssa->ops[op_2].op1_use = ssa->ops[op_2].op2_use;
 1400|      0|						ssa->ops[op_2].op1_use_chain = ssa->ops[op_2].op2_use_chain;
 1401|      0|						ssa->ops[op_2].op2_use = -1;
 1402|      0|						ssa->ops[op_2].op2_use_chain = -1;
 1403|      0|					}
 1404|      0|				}
 1405|      0|			}
 1406|       |
 1407|      0|			if (ssa->vars[v].var >= op_array->last_var) {
  ------------------
  |  Branch (1407:8): [True: 0, False: 0]
  ------------------
 1408|       |				/* skip TMP and VAR */
 1409|      0|				continue;
 1410|      0|			}
 1411|       |
 1412|      0|			if (ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1412:8): [True: 0, False: 0]
  ------------------
 1413|      0|			 && RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  112|      0|	((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (112:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1414|      0|				if (opline->opcode == ZEND_ASSIGN
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (1414:9): [True: 0, False: 0]
  ------------------
 1415|      0|				 || opline->opcode == ZEND_ASSIGN_OP
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1415:9): [True: 0, False: 0]
  ------------------
 1416|      0|				 || opline->opcode == ZEND_PRE_INC
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (1416:9): [True: 0, False: 0]
  ------------------
 1417|      0|				 || opline->opcode == ZEND_PRE_DEC) {
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (1417:9): [True: 0, False: 0]
  ------------------
 1418|      0|					zend_dfa_try_to_replace_result(op_array, ssa, op_1, v);
 1419|      0|				} else if (opline->opcode == ZEND_POST_INC) {
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (1419:16): [True: 0, False: 0]
  ------------------
 1420|      0|					int result_var = ssa->ops[op_1].result_def;
 1421|       |
 1422|      0|					if (result_var >= 0
  ------------------
  |  Branch (1422:10): [True: 0, False: 0]
  ------------------
 1423|      0|					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1423:10): [True: 0, False: 0]
  ------------------
 1424|      0|						int use = ssa->vars[result_var].use_chain;
 1425|       |
 1426|      0|						if (use >= 0 && op_array->opcodes[use].opcode == ZEND_IS_SMALLER
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (1426:11): [True: 0, False: 0]
  |  Branch (1426:23): [True: 0, False: 0]
  ------------------
 1427|      0|						 && ssa->ops[use].op1_use == result_var
  ------------------
  |  Branch (1427:11): [True: 0, False: 0]
  ------------------
 1428|      0|						 && zend_dfa_try_to_replace_result(op_array, ssa, op_1, v)) {
  ------------------
  |  Branch (1428:11): [True: 0, False: 0]
  ------------------
 1429|      0|							opline->opcode = ZEND_PRE_INC;
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
 1430|      0|							op_array->opcodes[use].opcode = ZEND_IS_SMALLER_OR_EQUAL;
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
 1431|      0|						}
 1432|      0|					}
 1433|      0|				} else if (opline->opcode == ZEND_POST_DEC) {
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (1433:16): [True: 0, False: 0]
  ------------------
 1434|      0|					int result_var = ssa->ops[op_1].result_def;
 1435|       |
 1436|      0|					if (result_var >= 0
  ------------------
  |  Branch (1436:10): [True: 0, False: 0]
  ------------------
 1437|      0|					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[result_var].type & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1437:10): [True: 0, False: 0]
  ------------------
 1438|      0|						int use = ssa->vars[result_var].use_chain;
 1439|       |
 1440|      0|						if (use >= 0 && op_array->opcodes[use].opcode == ZEND_IS_SMALLER
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (1440:11): [True: 0, False: 0]
  |  Branch (1440:23): [True: 0, False: 0]
  ------------------
 1441|      0|						 && ssa->ops[use].op2_use == result_var
  ------------------
  |  Branch (1441:11): [True: 0, False: 0]
  ------------------
 1442|      0|						 && zend_dfa_try_to_replace_result(op_array, ssa, op_1, v)) {
  ------------------
  |  Branch (1442:11): [True: 0, False: 0]
  ------------------
 1443|      0|							opline->opcode = ZEND_PRE_DEC;
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
 1444|      0|							op_array->opcodes[use].opcode = ZEND_IS_SMALLER_OR_EQUAL;
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
 1445|      0|						}
 1446|      0|					}
 1447|      0|				}
 1448|      0|			}
 1449|       |
 1450|      0|			if (opline->opcode == ZEND_ASSIGN
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (1450:8): [True: 0, False: 0]
  ------------------
 1451|      0|			 && ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1451:8): [True: 0, False: 0]
  ------------------
 1452|      0|			 && !RETURN_VALUE_USED(opline)
  ------------------
  |  |  112|      0|	((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  ------------------
  |  Branch (1452:8): [True: 0, False: 0]
  ------------------
 1453|      0|			) {
 1454|      0|				int orig_var = ssa->ops[op_1].op1_use;
 1455|       |
 1456|      0|				if (orig_var >= 0
  ------------------
  |  Branch (1456:9): [True: 0, False: 0]
  ------------------
 1457|      0|				 && !(ssa->var_info[orig_var].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              				 && !(ssa->var_info[orig_var].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              				 && !(ssa->var_info[orig_var].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              				 && !(ssa->var_info[orig_var].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              				 && !(ssa->var_info[orig_var].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1457:9): [True: 0, False: 0]
  ------------------
 1458|      0|				) {
 1459|      0|					int src_var = ssa->ops[op_1].op2_use;
 1460|       |
 1461|      0|					if ((opline->op2_type & (IS_TMP_VAR|IS_VAR))
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if ((opline->op2_type & (IS_TMP_VAR|IS_VAR))
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (1461:10): [True: 0, False: 0]
  ------------------
 1462|      0|					 && src_var >= 0
  ------------------
  |  Branch (1462:10): [True: 0, False: 0]
  ------------------
 1463|      0|					 && !(ssa->var_info[src_var].type & MAY_BE_REF)
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1463:10): [True: 0, False: 0]
  ------------------
 1464|      0|					 && (ssa->var_info[src_var].type & (MAY_BE_UNDEF|MAY_BE_ANY))
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              					 && (ssa->var_info[src_var].type & (MAY_BE_UNDEF|MAY_BE_ANY))
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1464:10): [True: 0, False: 0]
  ------------------
 1465|      0|					 && ssa->vars[src_var].definition >= 0
  ------------------
  |  Branch (1465:10): [True: 0, False: 0]
  ------------------
 1466|      0|					 && ssa->ops[ssa->vars[src_var].definition].result_def == src_var
  ------------------
  |  Branch (1466:10): [True: 0, False: 0]
  ------------------
 1467|      0|					 && ssa->ops[ssa->vars[src_var].definition].result_use < 0
  ------------------
  |  Branch (1467:10): [True: 0, False: 0]
  ------------------
 1468|      0|					 && ssa->vars[src_var].use_chain == op_1
  ------------------
  |  Branch (1468:10): [True: 0, False: 0]
  ------------------
 1469|      0|					 && ssa->ops[op_1].op2_use_chain < 0
  ------------------
  |  Branch (1469:10): [True: 0, False: 0]
  ------------------
 1470|      0|					 && !ssa->vars[src_var].phi_use_chain
  ------------------
  |  Branch (1470:10): [True: 0, False: 0]
  ------------------
 1471|      0|					 && !ssa->vars[src_var].sym_use_chain
  ------------------
  |  Branch (1471:10): [True: 0, False: 0]
  ------------------
 1472|      0|					 && opline_supports_assign_contraction(
  ------------------
  |  Branch (1472:10): [True: 0, False: 0]
  ------------------
 1473|      0|						 op_array, ssa, &op_array->opcodes[ssa->vars[src_var].definition],
 1474|      0|						 src_var, opline->op1.var)
 1475|      0|					 && !variable_defined_or_used_in_range(ssa, EX_VAR_TO_NUM(opline->op1.var),
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  |  Branch (1475:10): [True: 0, False: 0]
  ------------------
 1476|      0|							ssa->vars[src_var].definition+1, op_1)
 1477|      0|					) {
 1478|       |
 1479|      0|						int op_2 = ssa->vars[src_var].definition;
 1480|       |
 1481|       |// op_2: #src_var.T = OP ...                                     => #v.CV = OP ...
 1482|       |// op_1: ASSIGN #orig_var.CV [undef,scalar] -> #v.CV, #src_var.T    NOP
 1483|       |
 1484|      0|						zend_ssa_unlink_use_chain(ssa, op_1, orig_var);
 1485|       |						/* Reconstruct SSA */
 1486|      0|						ssa->vars[v].definition = op_2;
 1487|      0|						ssa->ops[op_2].result_def = v;
 1488|       |
 1489|      0|						ssa->vars[src_var].definition = -1;
 1490|      0|						ssa->vars[src_var].use_chain = -1;
 1491|       |
 1492|      0|						ssa->ops[op_1].op1_use = -1;
 1493|      0|						ssa->ops[op_1].op2_use = -1;
 1494|      0|						ssa->ops[op_1].op1_def = -1;
 1495|      0|						ssa->ops[op_1].op1_use_chain = -1;
 1496|       |
 1497|       |						/* Update opcodes */
 1498|      0|						op_array->opcodes[op_2].result_type = opline->op1_type;
 1499|      0|						op_array->opcodes[op_2].result.var = opline->op1.var;
 1500|       |
 1501|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1502|      0|						remove_nops = 1;
 1503|       |
 1504|      0|						if (op_array->opcodes[op_2].opcode == ZEND_SUB
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (1504:11): [True: 0, False: 0]
  ------------------
 1505|      0|						 && op_array->opcodes[op_2].op1_type == op_array->opcodes[op_2].result_type
  ------------------
  |  Branch (1505:11): [True: 0, False: 0]
  ------------------
 1506|      0|						 && op_array->opcodes[op_2].op1.var == op_array->opcodes[op_2].result.var
  ------------------
  |  Branch (1506:11): [True: 0, False: 0]
  ------------------
 1507|      0|						 && op_array->opcodes[op_2].op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1507:11): [True: 0, False: 0]
  ------------------
 1508|      0|						 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1508:11): [True: 0, False: 0]
  ------------------
 1509|      0|						 && Z_LVAL_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1509:11): [True: 0, False: 0]
  ------------------
 1510|      0|						 && ssa->ops[op_2].op1_use >= 0
  ------------------
  |  Branch (1510:11): [True: 0, False: 0]
  ------------------
 1511|      0|						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1511:11): [True: 0, False: 0]
  ------------------
 1512|       |
 1513|      0|							op_array->opcodes[op_2].opcode = ZEND_PRE_DEC;
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
 1514|      0|							SET_UNUSED(op_array->opcodes[op_2].op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1515|      0|							SET_UNUSED(op_array->opcodes[op_2].result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1516|       |
 1517|      0|							ssa->ops[op_2].result_def = -1;
 1518|      0|							ssa->ops[op_2].op1_def = v;
 1519|       |
 1520|      0|						} else if (op_array->opcodes[op_2].opcode == ZEND_ADD
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1520:18): [True: 0, False: 0]
  ------------------
 1521|      0|						 && op_array->opcodes[op_2].op1_type == op_array->opcodes[op_2].result_type
  ------------------
  |  Branch (1521:11): [True: 0, False: 0]
  ------------------
 1522|      0|						 && op_array->opcodes[op_2].op1.var == op_array->opcodes[op_2].result.var
  ------------------
  |  Branch (1522:11): [True: 0, False: 0]
  ------------------
 1523|      0|						 && op_array->opcodes[op_2].op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1523:11): [True: 0, False: 0]
  ------------------
 1524|      0|						 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1524:11): [True: 0, False: 0]
  ------------------
 1525|      0|						 && Z_LVAL_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op2.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1525:11): [True: 0, False: 0]
  ------------------
 1526|      0|						 && ssa->ops[op_2].op1_use >= 0
  ------------------
  |  Branch (1526:11): [True: 0, False: 0]
  ------------------
 1527|      0|						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1527:11): [True: 0, False: 0]
  ------------------
 1528|       |
 1529|      0|							op_array->opcodes[op_2].opcode = ZEND_PRE_INC;
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
 1530|      0|							SET_UNUSED(op_array->opcodes[op_2].op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1531|      0|							SET_UNUSED(op_array->opcodes[op_2].result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1532|       |
 1533|      0|							ssa->ops[op_2].result_def = -1;
 1534|      0|							ssa->ops[op_2].op1_def = v;
 1535|       |
 1536|      0|						} else if (op_array->opcodes[op_2].opcode == ZEND_ADD
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1536:18): [True: 0, False: 0]
  ------------------
 1537|      0|						 && op_array->opcodes[op_2].op2_type == op_array->opcodes[op_2].result_type
  ------------------
  |  Branch (1537:11): [True: 0, False: 0]
  ------------------
 1538|      0|						 && op_array->opcodes[op_2].op2.var == op_array->opcodes[op_2].result.var
  ------------------
  |  Branch (1538:11): [True: 0, False: 0]
  ------------------
 1539|      0|						 && op_array->opcodes[op_2].op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1539:11): [True: 0, False: 0]
  ------------------
 1540|      0|						 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op1.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op1.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1540:11): [True: 0, False: 0]
  ------------------
 1541|      0|						 && Z_LVAL_P(CT_CONSTANT_EX(op_array, op_array->opcodes[op_2].op1.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1541:11): [True: 0, False: 0]
  ------------------
 1542|      0|						 && ssa->ops[op_2].op2_use >= 0
  ------------------
  |  Branch (1542:11): [True: 0, False: 0]
  ------------------
 1543|      0|						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              						 && !(ssa->var_info[ssa->ops[op_2].op2_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1543:11): [True: 0, False: 0]
  ------------------
 1544|       |
 1545|      0|							op_array->opcodes[op_2].opcode = ZEND_PRE_INC;
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
 1546|      0|							op_array->opcodes[op_2].op1_type = op_array->opcodes[op_2].op2_type;
 1547|      0|							op_array->opcodes[op_2].op1.var = op_array->opcodes[op_2].op2.var;
 1548|      0|							SET_UNUSED(op_array->opcodes[op_2].op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1549|      0|							SET_UNUSED(op_array->opcodes[op_2].result);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1550|       |
 1551|      0|							ssa->ops[op_2].result_def = -1;
 1552|      0|							ssa->ops[op_2].op1_def = v;
 1553|      0|							ssa->ops[op_2].op1_use = ssa->ops[op_2].op2_use;
 1554|      0|							ssa->ops[op_2].op1_use_chain = ssa->ops[op_2].op2_use_chain;
 1555|      0|							ssa->ops[op_2].op2_use = -1;
 1556|      0|							ssa->ops[op_2].op2_use_chain = -1;
 1557|      0|						}
 1558|      0|					} else if (opline->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1558:17): [True: 0, False: 0]
  ------------------
 1559|      0|					 || ((opline->op2_type & (IS_TMP_VAR|IS_VAR|IS_CV))
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					 || ((opline->op2_type & (IS_TMP_VAR|IS_VAR|IS_CV))
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					 || ((opline->op2_type & (IS_TMP_VAR|IS_VAR|IS_CV))
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (1559:11): [True: 0, False: 0]
  ------------------
 1560|      0|					     && ssa->ops[op_1].op2_use >= 0
  ------------------
  |  Branch (1560:14): [True: 0, False: 0]
  ------------------
 1561|      0|					     && ssa->ops[op_1].op2_def < 0)
  ------------------
  |  Branch (1561:14): [True: 0, False: 0]
  ------------------
 1562|      0|					) {
 1563|       |
 1564|       |// op_1: ASSIGN #orig_var.CV [undef,scalar] -> #v.CV, CONST|TMPVAR => QM_ASSIGN v.CV, CONST|TMPVAR
 1565|       |
 1566|      0|						if (ssa->ops[op_1].op1_use != ssa->ops[op_1].op2_use) {
  ------------------
  |  Branch (1566:11): [True: 0, False: 0]
  ------------------
 1567|      0|							zend_ssa_unlink_use_chain(ssa, op_1, orig_var);
 1568|      0|						} else {
 1569|      0|							ssa->ops[op_1].op2_use_chain = ssa->ops[op_1].op1_use_chain;
 1570|      0|						}
 1571|       |
 1572|       |						/* Reconstruct SSA */
 1573|      0|						ssa->ops[op_1].result_def = v;
 1574|      0|						ssa->ops[op_1].op1_def = -1;
 1575|      0|						ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use;
 1576|      0|						ssa->ops[op_1].op1_use_chain = ssa->ops[op_1].op2_use_chain;
 1577|      0|						ssa->ops[op_1].op2_use = -1;
 1578|      0|						ssa->ops[op_1].op2_use_chain = -1;
 1579|       |
 1580|       |						/* Update opcode */
 1581|      0|						opline->result_type = opline->op1_type;
 1582|      0|						opline->result.var = opline->op1.var;
 1583|      0|						opline->op1_type = opline->op2_type;
 1584|      0|						opline->op1.var = opline->op2.var;
 1585|      0|						opline->op2_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 1586|      0|						opline->op2.var = 0;
 1587|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
 1588|      0|					}
 1589|      0|				}
 1590|       |
 1591|      0|			} else if (opline->opcode == ZEND_ASSIGN_OP
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1591:15): [True: 0, False: 0]
  ------------------
 1592|      0|			 && opline->extended_value == ZEND_ADD
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1592:8): [True: 0, False: 0]
  ------------------
 1593|      0|			 && ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1593:8): [True: 0, False: 0]
  ------------------
 1594|      0|			 && opline->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1594:8): [True: 0, False: 0]
  ------------------
 1595|      0|			 && Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			 && Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1595:8): [True: 0, False: 0]
  ------------------
 1596|      0|			 && Z_LVAL_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1596:8): [True: 0, False: 0]
  ------------------
 1597|      0|			 && ssa->ops[op_1].op1_use >= 0
  ------------------
  |  Branch (1597:8): [True: 0, False: 0]
  ------------------
 1598|      0|			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1598:8): [True: 0, False: 0]
  ------------------
 1599|       |
 1600|       |// op_1: ASSIGN_ADD #?.CV [undef,null,int,foat] ->#v.CV, int(1) => PRE_INC #?.CV ->#v.CV
 1601|       |
 1602|      0|				opline->opcode = ZEND_PRE_INC;
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
 1603|      0|				opline->extended_value = 0;
 1604|      0|				SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1605|       |
 1606|      0|			} else if (opline->opcode == ZEND_ASSIGN_OP
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1606:15): [True: 0, False: 0]
  ------------------
 1607|      0|			 && opline->extended_value == ZEND_SUB
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (1607:8): [True: 0, False: 0]
  ------------------
 1608|      0|			 && ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1608:8): [True: 0, False: 0]
  ------------------
 1609|      0|			 && opline->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1609:8): [True: 0, False: 0]
  ------------------
 1610|      0|			 && Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			 && Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1610:8): [True: 0, False: 0]
  ------------------
 1611|      0|			 && Z_LVAL_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) == 1
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1611:8): [True: 0, False: 0]
  ------------------
 1612|      0|			 && ssa->ops[op_1].op1_use >= 0
  ------------------
  |  Branch (1612:8): [True: 0, False: 0]
  ------------------
 1613|      0|			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1613:8): [True: 0, False: 0]
  ------------------
 1614|       |
 1615|       |// op_1: ASSIGN_SUB #?.CV [undef,null,int,foat] -> #v.CV, int(1) => PRE_DEC #?.CV ->#v.CV
 1616|       |
 1617|      0|				opline->opcode = ZEND_PRE_DEC;
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
 1618|      0|				opline->extended_value = 0;
 1619|      0|				SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1620|       |
 1621|      0|			} else if (ssa->ops[op_1].op1_def == v
  ------------------
  |  Branch (1621:15): [True: 0, False: 0]
  ------------------
 1622|      0|			 && !RETURN_VALUE_USED(opline)
  ------------------
  |  |  112|      0|	((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  ------------------
  |  Branch (1622:8): [True: 0, False: 0]
  ------------------
 1623|      0|			 && ssa->ops[op_1].op1_use >= 0
  ------------------
  |  Branch (1623:8): [True: 0, False: 0]
  ------------------
 1624|      0|			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              			 && !(ssa->var_info[ssa->ops[op_1].op1_use].type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1624:8): [True: 0, False: 0]
  ------------------
 1625|      0|			 && opline->opcode == ZEND_ASSIGN_OP
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1625:8): [True: 0, False: 0]
  ------------------
 1626|      0|			 && opline->extended_value != ZEND_CONCAT) {
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (1626:8): [True: 0, False: 0]
  ------------------
 1627|       |
 1628|       |// op_1: ASSIGN_OP #orig_var.CV [undef,null,bool,int,double] -> #v.CV, ? => #v.CV = ADD #orig_var.CV, ?
 1629|       |
 1630|       |				/* Reconstruct SSA */
 1631|      0|				ssa->ops[op_1].result_def = ssa->ops[op_1].op1_def;
 1632|      0|				ssa->ops[op_1].op1_def = -1;
 1633|       |
 1634|       |				/* Update opcode */
 1635|      0|				opline->opcode = opline->extended_value;
 1636|      0|				opline->extended_value = 0;
 1637|      0|				opline->result_type = opline->op1_type;
 1638|      0|				opline->result.var = opline->op1.var;
 1639|       |
 1640|      0|			}
 1641|      0|		}
 1642|       |
 1643|      1|#if ZEND_DEBUG_DFA
 1644|      1|		ssa_verify_integrity(op_array, ssa, "after dfa");
 1645|      1|#endif
 1646|       |
 1647|      1|		if (remove_nops) {
  ------------------
  |  Branch (1647:7): [True: 0, False: 1]
  ------------------
 1648|      0|			zend_ssa_remove_nops(op_array, ssa, ctx);
 1649|      0|#if ZEND_DEBUG_DFA
 1650|      0|			ssa_verify_integrity(op_array, ssa, "after nop");
 1651|      0|#endif
 1652|      0|		}
 1653|      1|	}
 1654|       |
 1655|      1|	if (ctx->debug_level & ZEND_DUMP_AFTER_DFA_PASS) {
  ------------------
  |  |   75|      1|#define ZEND_DUMP_AFTER_DFA_PASS    (1<<22)
  ------------------
  |  Branch (1655:6): [True: 0, False: 1]
  ------------------
 1656|      0|		zend_dump_op_array(op_array, ZEND_DUMP_SSA, "after dfa pass", ssa);
  ------------------
  |  |   28|      0|#define ZEND_DUMP_SSA                  (1<<3)
  ------------------
 1657|      0|	}
 1658|      1|}
dfa_pass.c:zend_dfa_optimize_jmps:
  680|      2|{
  681|      2|	int removed_ops = 0;
  682|      2|	uint32_t block_num = 0;
  683|       |
  684|      2|	for (block_num = 1; block_num < ssa->cfg.blocks_count; block_num++) {
  ------------------
  |  Branch (684:22): [True: 0, False: 2]
  ------------------
  685|      0|		zend_basic_block *block = &ssa->cfg.blocks[block_num];
  686|       |
  687|      0|		if (!(block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (687:7): [True: 0, False: 0]
  ------------------
  688|      0|			continue;
  689|      0|		}
  690|      0|		compress_block(op_array, block);
  691|      0|		if (block->len == 0) {
  ------------------
  |  Branch (691:7): [True: 0, False: 0]
  ------------------
  692|      0|			zend_ssa_unlink_block(op_array, ssa, block, block_num);
  693|      0|		}
  694|      0|	}
  695|       |
  696|      2|	block_num = 0;
  697|      2|	while (block_num < ssa->cfg.blocks_count
  ------------------
  |  Branch (697:9): [True: 2, False: 0]
  ------------------
  698|      2|		&& !(ssa->cfg.blocks[block_num].flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      2|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (698:6): [True: 0, False: 2]
  ------------------
  699|      0|		block_num++;
  700|      0|	}
  701|      4|	while (block_num < ssa->cfg.blocks_count) {
  ------------------
  |  Branch (701:9): [True: 2, False: 2]
  ------------------
  702|      2|		uint32_t next_block_num = block_num + 1;
  703|      2|		zend_basic_block *block = &ssa->cfg.blocks[block_num];
  704|      2|		uint32_t op_num;
  705|      2|		zend_op *opline;
  706|      2|		zend_ssa_op *ssa_op;
  707|      2|		bool can_follow = true;
  708|       |
  709|      2|		while (next_block_num < ssa->cfg.blocks_count
  ------------------
  |  Branch (709:10): [True: 0, False: 2]
  ------------------
  710|      0|			&& !(ssa->cfg.blocks[next_block_num].flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (710:7): [True: 0, False: 0]
  ------------------
  711|      0|			if (ssa->cfg.blocks[next_block_num].flags & ZEND_BB_UNREACHABLE_FREE) {
  ------------------
  |  |   30|      0|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  |  Branch (711:8): [True: 0, False: 0]
  ------------------
  712|      0|				can_follow = false;
  713|      0|			}
  714|      0|			next_block_num++;
  715|      0|		}
  716|       |
  717|      2|		if (block->len) {
  ------------------
  |  Branch (717:7): [True: 2, False: 0]
  ------------------
  718|      2|			op_num = block->start + block->len - 1;
  719|      2|			opline = op_array->opcodes + op_num;
  720|      2|			ssa_op = ssa->ops + op_num;
  721|       |
  722|      2|			switch (opline->opcode) {
  723|      0|				case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (723:5): [True: 0, False: 2]
  ------------------
  724|      0|optimize_jmp:
  725|      0|					if (block->successors[0] == next_block_num && can_follow) {
  ------------------
  |  Branch (725:10): [True: 0, False: 0]
  |  Branch (725:52): [True: 0, False: 0]
  ------------------
  726|      0|						MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  727|      0|						removed_ops++;
  728|      0|						goto optimize_nop;
  729|      0|					}
  730|      0|					break;
  731|      0|				case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (731:5): [True: 0, False: 2]
  ------------------
  732|      0|optimize_jmpz:
  733|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (733:10): [True: 0, False: 0]
  ------------------
  734|      0|						if (zend_is_true(CT_CONSTANT_EX(op_array, opline->op1.constant))) {
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  |  Branch (734:11): [True: 0, False: 0]
  ------------------
  735|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  736|      0|							removed_ops++;
  737|      0|							take_successor_1(ssa, block_num, block);
  738|      0|							goto optimize_nop;
  739|      0|						} else {
  740|      0|							opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  741|      0|							COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  742|      0|							take_successor_0(ssa, block_num, block);
  743|      0|							goto optimize_jmp;
  744|      0|						}
  745|      0|					} else {
  746|      0|						if (block->successors[0] == next_block_num && can_follow) {
  ------------------
  |  Branch (746:11): [True: 0, False: 0]
  |  Branch (746:53): [True: 0, False: 0]
  ------------------
  747|      0|							take_successor_0(ssa, block_num, block);
  748|      0|							if (opline->op1_type == IS_CV && (OP1_INFO() & MAY_BE_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (opline->op1_type == IS_CV && (OP1_INFO() & MAY_BE_UNDEF)) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							if (opline->op1_type == IS_CV && (OP1_INFO() & MAY_BE_UNDEF)) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (748:12): [True: 0, False: 0]
  |  Branch (748:41): [True: 0, False: 0]
  ------------------
  749|      0|								opline->opcode = ZEND_CHECK_VAR;
  ------------------
  |  |  172|      0|#define ZEND_CHECK_VAR                       49
  ------------------
  750|      0|								opline->op2.num = 0;
  751|      0|							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (751:19): [True: 0, False: 0]
  |  Branch (751:48): [True: 0, False: 0]
  ------------------
  752|      0|								zend_ssa_remove_instr(ssa, opline, ssa_op);
  753|      0|								removed_ops++;
  754|      0|								goto optimize_nop;
  755|      0|							} else {
  756|      0|								opline->opcode = ZEND_FREE;
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  757|      0|								opline->op2.num = 0;
  758|      0|							}
  759|      0|						}
  760|      0|					}
  761|      0|					break;
  762|      0|				case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (762:5): [True: 0, False: 2]
  ------------------
  763|      0|optimize_jmpnz:
  764|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (764:10): [True: 0, False: 0]
  ------------------
  765|      0|						if (zend_is_true(CT_CONSTANT_EX(op_array, opline->op1.constant))) {
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  |  Branch (765:11): [True: 0, False: 0]
  ------------------
  766|      0|							opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  767|      0|							COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  768|      0|							take_successor_0(ssa, block_num, block);
  769|      0|							goto optimize_jmp;
  770|      0|						} else {
  771|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  772|      0|							removed_ops++;
  773|      0|							take_successor_1(ssa, block_num, block);
  774|      0|							goto optimize_nop;
  775|      0|						}
  776|      0|					} else if (block->successors_count == 2) {
  ------------------
  |  Branch (776:17): [True: 0, False: 0]
  ------------------
  777|      0|						if (block->successors[0] == next_block_num && can_follow) {
  ------------------
  |  Branch (777:11): [True: 0, False: 0]
  |  Branch (777:53): [True: 0, False: 0]
  ------------------
  778|      0|							take_successor_0(ssa, block_num, block);
  779|      0|							if (opline->op1_type == IS_CV && (OP1_INFO() & MAY_BE_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (opline->op1_type == IS_CV && (OP1_INFO() & MAY_BE_UNDEF)) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							if (opline->op1_type == IS_CV && (OP1_INFO() & MAY_BE_UNDEF)) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (779:12): [True: 0, False: 0]
  |  Branch (779:41): [True: 0, False: 0]
  ------------------
  780|      0|								opline->opcode = ZEND_CHECK_VAR;
  ------------------
  |  |  172|      0|#define ZEND_CHECK_VAR                       49
  ------------------
  781|      0|								opline->op2.num = 0;
  782|      0|							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |  196|      0|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              							} else if (opline->op1_type == IS_CV || !(OP1_INFO() & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (782:19): [True: 0, False: 0]
  |  Branch (782:48): [True: 0, False: 0]
  ------------------
  783|      0|								zend_ssa_remove_instr(ssa, opline, ssa_op);
  784|      0|								removed_ops++;
  785|      0|								goto optimize_nop;
  786|      0|							} else {
  787|      0|								opline->opcode = ZEND_FREE;
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  788|      0|								opline->op2.num = 0;
  789|      0|							}
  790|      0|						}
  791|      0|					}
  792|      0|					break;
  793|      0|				case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (793:5): [True: 0, False: 2]
  ------------------
  794|      0|					if (ssa->vars[ssa_op->result_def].use_chain < 0
  ------------------
  |  Branch (794:10): [True: 0, False: 0]
  ------------------
  795|      0|							&& ssa->vars[ssa_op->result_def].phi_use_chain == NULL) {
  ------------------
  |  Branch (795:11): [True: 0, False: 0]
  ------------------
  796|      0|						opline->opcode = ZEND_JMPZ;
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  797|      0|						opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  798|      0|						zend_ssa_remove_result_def(ssa, ssa_op);
  799|      0|						goto optimize_jmpz;
  800|      0|					} else if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (800:17): [True: 0, False: 0]
  ------------------
  801|      0|						if (zend_is_true(CT_CONSTANT_EX(op_array, opline->op1.constant))) {
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  |  Branch (801:11): [True: 0, False: 0]
  ------------------
  802|      0|							opline->opcode = ZEND_BOOL;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  803|      0|							take_successor_1(ssa, block_num, block);
  804|      0|						}
  805|      0|					}
  806|      0|					break;
  807|      0|				case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (807:5): [True: 0, False: 2]
  ------------------
  808|      0|					if (ssa->vars[ssa_op->result_def].use_chain < 0
  ------------------
  |  Branch (808:10): [True: 0, False: 0]
  ------------------
  809|      0|							&& ssa->vars[ssa_op->result_def].phi_use_chain == NULL) {
  ------------------
  |  Branch (809:11): [True: 0, False: 0]
  ------------------
  810|      0|						opline->opcode = ZEND_JMPNZ;
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  811|      0|						opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  812|      0|						zend_ssa_remove_result_def(ssa, ssa_op);
  813|      0|						goto optimize_jmpnz;
  814|      0|					} else if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (814:17): [True: 0, False: 0]
  ------------------
  815|      0|						if (!zend_is_true(CT_CONSTANT_EX(op_array, opline->op1.constant))) {
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  |  Branch (815:11): [True: 0, False: 0]
  ------------------
  816|      0|							opline->opcode = ZEND_BOOL;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  817|      0|							take_successor_1(ssa, block_num, block);
  818|      0|						}
  819|      0|					}
  820|      0|					break;
  821|      0|				case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (821:5): [True: 0, False: 2]
  ------------------
  822|      0|					if (ssa->vars[ssa_op->result_def].use_chain < 0
  ------------------
  |  Branch (822:10): [True: 0, False: 0]
  ------------------
  823|      0|							&& ssa->vars[ssa_op->result_def].phi_use_chain == NULL) {
  ------------------
  |  Branch (823:11): [True: 0, False: 0]
  ------------------
  824|      0|						opline->opcode = ZEND_JMPNZ;
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  825|      0|						opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  826|      0|						zend_ssa_remove_result_def(ssa, ssa_op);
  827|      0|						goto optimize_jmpnz;
  828|      0|					} else if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (828:17): [True: 0, False: 0]
  ------------------
  829|      0|						if (!zend_is_true(CT_CONSTANT_EX(op_array, opline->op1.constant))) {
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  |  Branch (829:11): [True: 0, False: 0]
  ------------------
  830|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  831|      0|							removed_ops++;
  832|      0|							take_successor_1(ssa, block_num, block);
  833|      0|							zend_ssa_remove_result_def(ssa, ssa_op);
  834|      0|							goto optimize_nop;
  835|      0|						}
  836|      0|					}
  837|      0|					break;
  838|      0|				case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (838:5): [True: 0, False: 2]
  ------------------
  839|      0|				{
  840|      0|					zend_ssa_var *var = &ssa->vars[ssa_op->result_def];
  841|      0|					if (opline->op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (841:10): [True: 0, False: 0]
  ------------------
  842|      0|							&& var->use_chain < 0 && var->phi_use_chain == NULL) {
  ------------------
  |  Branch (842:11): [True: 0, False: 0]
  |  Branch (842:33): [True: 0, False: 0]
  ------------------
  843|      0|						if (Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op1.constant)) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op1.constant)) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (843:11): [True: 0, False: 0]
  ------------------
  844|      0|							zend_ssa_remove_result_def(ssa, ssa_op);
  845|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  846|      0|							removed_ops++;
  847|      0|							take_successor_1(ssa, block_num, block);
  848|      0|							goto optimize_nop;
  849|      0|						} else {
  850|      0|							opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  851|      0|							opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  852|      0|							zend_ssa_remove_result_def(ssa, ssa_op);
  853|      0|							COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  854|      0|							take_successor_0(ssa, block_num, block);
  855|      0|							goto optimize_jmp;
  856|      0|						}
  857|      0|					}
  858|      0|					break;
  859|      0|				}
  860|      0|				case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (860:5): [True: 0, False: 2]
  ------------------
  861|      0|				{
  862|      0|					zend_ssa_var *var = &ssa->vars[ssa_op->result_def];
  863|      0|					if (opline->op1_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (863:10): [True: 0, False: 0]
  ------------------
  864|      0|							&& var->use_chain < 0 && var->phi_use_chain == NULL) {
  ------------------
  |  Branch (864:11): [True: 0, False: 0]
  |  Branch (864:33): [True: 0, False: 0]
  ------------------
  865|      0|						if (Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op1.constant)) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op1.constant)) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (865:11): [True: 0, False: 0]
  ------------------
  866|      0|							opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  867|      0|							opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  868|      0|							zend_ssa_remove_result_def(ssa, ssa_op);
  869|      0|							COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  870|      0|							take_successor_0(ssa, block_num, block);
  871|      0|							goto optimize_jmp;
  872|      0|						} else {
  873|      0|							zend_ssa_remove_result_def(ssa, ssa_op);
  874|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  875|      0|							removed_ops++;
  876|      0|							take_successor_1(ssa, block_num, block);
  877|      0|							goto optimize_nop;
  878|      0|						}
  879|      0|					}
  880|      0|					break;
  881|      0|				}
  882|      0|				case ZEND_SWITCH_LONG:
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (882:5): [True: 0, False: 2]
  ------------------
  883|      0|				case ZEND_SWITCH_STRING:
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (883:5): [True: 0, False: 2]
  ------------------
  884|      0|				case ZEND_MATCH:
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (884:5): [True: 0, False: 2]
  ------------------
  885|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (885:10): [True: 0, False: 0]
  ------------------
  886|      0|						zval *zv = CT_CONSTANT_EX(op_array, opline->op1.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  887|      0|						uint8_t type = Z_TYPE_P(zv);
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  888|      0|						bool correct_type =
  889|      0|							(opline->opcode == ZEND_SWITCH_LONG && type == IS_LONG)
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
              							(opline->opcode == ZEND_SWITCH_LONG && type == IS_LONG)
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (889:9): [True: 0, False: 0]
  |  Branch (889:47): [True: 0, False: 0]
  ------------------
  890|      0|							|| (opline->opcode == ZEND_SWITCH_STRING && type == IS_STRING)
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
              							|| (opline->opcode == ZEND_SWITCH_STRING && type == IS_STRING)
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (890:12): [True: 0, False: 0]
  |  Branch (890:52): [True: 0, False: 0]
  ------------------
  891|      0|							|| (opline->opcode == ZEND_MATCH && (type == IS_LONG || type == IS_STRING));
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
              							|| (opline->opcode == ZEND_MATCH && (type == IS_LONG || type == IS_STRING));
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
              							|| (opline->opcode == ZEND_MATCH && (type == IS_LONG || type == IS_STRING));
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (891:12): [True: 0, False: 0]
  |  Branch (891:45): [True: 0, False: 0]
  |  Branch (891:64): [True: 0, False: 0]
  ------------------
  892|       |
  893|       |						/* Switch statements have a fallback chain for loose comparison. In those
  894|       |						 * cases the SWITCH_* instruction is a NOP. Match does strict comparison and
  895|       |						 * thus jumps to the default branch on mismatched types, so we need to
  896|       |						 * convert MATCH to a jmp. */
  897|      0|						if (!correct_type && opline->opcode != ZEND_MATCH) {
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (897:11): [True: 0, False: 0]
  |  Branch (897:28): [True: 0, False: 0]
  ------------------
  898|      0|							removed_ops++;
  899|      0|							MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  900|      0|							opline->extended_value = 0;
  901|      0|							take_successor_ex(ssa, block_num, block, block->successors[block->successors_count - 1]);
  902|      0|							goto optimize_nop;
  903|      0|						}
  904|       |
  905|      0|						uint32_t target;
  906|      0|						if (correct_type) {
  ------------------
  |  Branch (906:11): [True: 0, False: 0]
  ------------------
  907|      0|							HashTable *jmptable = Z_ARRVAL_P(CT_CONSTANT_EX(op_array, opline->op2.constant));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  908|      0|							zval *jmp_zv = type == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (908:23): [True: 0, False: 0]
  ------------------
  909|      0|								? zend_hash_index_find(jmptable, Z_LVAL_P(zv))
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  910|      0|								: zend_hash_find(jmptable, Z_STR_P(zv));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  911|       |
  912|      0|							if (jmp_zv) {
  ------------------
  |  Branch (912:12): [True: 0, False: 0]
  ------------------
  913|      0|								target = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(jmp_zv));
  ------------------
  |  |  771|      0|	(ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  914|      0|							} else {
  915|      0|								target = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value);
  ------------------
  |  |  771|      0|	(ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  916|      0|							}
  917|      0|						} else {
  918|      0|							ZEND_ASSERT(opline->opcode == ZEND_MATCH);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (918:8): [True: 0, False: 0]
  |  Branch (918:8): [True: 0, False: 0]
  ------------------
  919|      0|							target = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value);
  ------------------
  |  |  771|      0|	(ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  920|      0|						}
  921|      0|						opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  922|      0|						opline->extended_value = 0;
  923|      0|						SET_UNUSED(opline->op1);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  924|      0|						ZEND_SET_OP_JMP_ADDR(opline, opline->op1, op_array->opcodes + target);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  925|      0|						SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |   38|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  926|      0|						take_successor_ex(ssa, block_num, block, ssa->cfg.map[target]);
  927|      0|						goto optimize_jmp;
  928|      0|					}
  929|      0|					break;
  930|      0|				case ZEND_NOP:
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (930:5): [True: 0, False: 2]
  ------------------
  931|      0|optimize_nop:
  932|      0|					compress_block(op_array, block);
  933|      0|					if (block->len == 0) {
  ------------------
  |  Branch (933:10): [True: 0, False: 0]
  ------------------
  934|      0|						if (block_num > 0) {
  ------------------
  |  Branch (934:11): [True: 0, False: 0]
  ------------------
  935|      0|							zend_ssa_unlink_block(op_array, ssa, block, block_num);
  936|       |							/* backtrack to previous basic block */
  937|      0|							int backtracking_block_num = block_num;
  938|      0|							do {
  939|      0|								backtracking_block_num--;
  940|      0|							} while (backtracking_block_num >= 0
  ------------------
  |  Branch (940:17): [True: 0, False: 0]
  ------------------
  941|      0|								&& !(ssa->cfg.blocks[backtracking_block_num].flags & ZEND_BB_REACHABLE));
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (941:12): [True: 0, False: 0]
  ------------------
  942|      0|							if (backtracking_block_num >= 0) {
  ------------------
  |  Branch (942:12): [True: 0, False: 0]
  ------------------
  943|      0|								block_num = backtracking_block_num;
  944|      0|								continue;
  945|      0|							}
  946|      0|						}
  947|      0|					}
  948|      0|					break;
  949|      2|				default:
  ------------------
  |  Branch (949:5): [True: 2, False: 0]
  ------------------
  950|      2|					break;
  951|      2|			}
  952|      2|		}
  953|       |
  954|      2|		block_num = next_block_num;
  955|      2|	}
  956|       |
  957|      2|	return removed_ops;
  958|      2|}
dfa_pass.c:zend_dfa_optimize_calls:
  400|      1|{
  401|      1|	const zend_func_info *func_info = ZEND_FUNC_INFO(op_array);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
  402|      1|	uint32_t removed_ops = 0;
  403|       |
  404|      1|	if (func_info->callee_info) {
  ------------------
  |  Branch (404:6): [True: 0, False: 1]
  ------------------
  405|      0|		const zend_call_info *call_info = func_info->callee_info;
  406|       |
  407|      0|		do {
  408|      0|			zend_op *op = call_info->caller_init_opline;
  409|       |
  410|      0|			if ((op->opcode == ZEND_FRAMELESS_ICALL_2
  ------------------
  |  |  328|      0|#define ZEND_FRAMELESS_ICALL_2              206
  ------------------
  |  Branch (410:9): [True: 0, False: 0]
  ------------------
  411|      0|			  || (op->opcode == ZEND_FRAMELESS_ICALL_3 && (op + 1)->op1_type == IS_CONST))
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
              			  || (op->opcode == ZEND_FRAMELESS_ICALL_3 && (op + 1)->op1_type == IS_CONST))
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (411:10): [True: 0, False: 0]
  |  Branch (411:50): [True: 0, False: 0]
  ------------------
  412|      0|			 && call_info->callee_func
  ------------------
  |  Branch (412:8): [True: 0, False: 0]
  ------------------
  413|      0|			 && zend_string_equals_literal_ci(call_info->callee_func->common.function_name, "in_array")) {
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  414|      0|				bool strict = false;
  415|      0|				bool has_opdata = op->opcode == ZEND_FRAMELESS_ICALL_3;
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  416|      0|				ZEND_ASSERT(!call_info->is_prototype);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (416:5): [True: 0, False: 0]
  |  Branch (416:5): [True: 0, False: 0]
  ------------------
  417|       |
  418|      0|				if (has_opdata) {
  ------------------
  |  Branch (418:9): [True: 0, False: 0]
  ------------------
  419|      0|					if (zend_is_true(CT_CONSTANT_EX(op_array, (op + 1)->op1.constant))) {
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  |  Branch (419:10): [True: 0, False: 0]
  ------------------
  420|      0|						strict = true;
  421|      0|					}
  422|      0|				}
  423|       |
  424|      0|				if (op->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (424:9): [True: 0, False: 0]
  ------------------
  425|      0|				 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op->op2.constant)) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				 && Z_TYPE_P(CT_CONSTANT_EX(op_array, op->op2.constant)) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (425:9): [True: 0, False: 0]
  ------------------
  426|      0|					bool ok = true;
  427|       |
  428|      0|					const HashTable *src = Z_ARRVAL_P(CT_CONSTANT_EX(op_array, op->op2.constant));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|      0|					HashTable *dst;
  430|      0|					zval *val, tmp;
  431|      0|					zend_ulong idx;
  432|       |
  433|      0|					ZVAL_TRUE(&tmp);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  434|      0|					dst = zend_new_array(zend_hash_num_elements(src));
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
  435|      0|					if (strict) {
  ------------------
  |  Branch (435:10): [True: 0, False: 0]
  ------------------
  436|      0|						ZEND_HASH_FOREACH_VAL(src, val) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
  437|      0|							if (Z_TYPE_P(val) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							if (Z_TYPE_P(val) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (437:12): [True: 0, False: 0]
  ------------------
  438|      0|								zend_hash_add(dst, Z_STR_P(val), &tmp);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  439|      0|							} else if (Z_TYPE_P(val) == IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							} else if (Z_TYPE_P(val) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (439:19): [True: 0, False: 0]
  ------------------
  440|      0|								zend_hash_index_add(dst, Z_LVAL_P(val), &tmp);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  441|      0|							} else {
  442|      0|								zend_array_destroy(dst);
  443|      0|								ok = false;
  444|      0|								break;
  445|      0|							}
  446|      0|						} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  447|      0|					} else {
  448|      0|						ZEND_HASH_FOREACH_VAL(src, val) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
  449|      0|							if (Z_TYPE_P(val) != IS_STRING || ZEND_HANDLE_NUMERIC(Z_STR_P(val), idx)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							if (Z_TYPE_P(val) != IS_STRING || ZEND_HANDLE_NUMERIC(Z_STR_P(val), idx)) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
              							if (Z_TYPE_P(val) != IS_STRING || ZEND_HANDLE_NUMERIC(Z_STR_P(val), idx)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (449:12): [True: 0, False: 0]
  ------------------
  450|      0|								zend_array_destroy(dst);
  451|      0|								ok = false;
  452|      0|								break;
  453|      0|							}
  454|      0|							zend_hash_add(dst, Z_STR_P(val), &tmp);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  455|      0|						} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  456|      0|					}
  457|       |
  458|      0|					if (ok) {
  ------------------
  |  Branch (458:10): [True: 0, False: 0]
  ------------------
  459|      0|						ZVAL_ARR(&tmp, dst);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  460|       |
  461|       |						/* Update opcode */
  462|      0|						op->opcode = ZEND_IN_ARRAY;
  ------------------
  |  |  311|      0|#define ZEND_IN_ARRAY                       189
  ------------------
  463|      0|						op->extended_value = strict;
  464|      0|						op->op2.constant = zend_optimizer_add_literal(op_array, &tmp);
  465|      0|						if (has_opdata) {
  ------------------
  |  Branch (465:11): [True: 0, False: 0]
  ------------------
  466|      0|							MAKE_NOP(op + 1);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  467|      0|							removed_ops++;
  468|      0|						}
  469|      0|					}
  470|      0|				}
  471|      0|			}
  472|      0|			call_info = call_info->next_callee;
  473|      0|		} while (call_info);
  ------------------
  |  Branch (473:12): [True: 0, False: 0]
  ------------------
  474|      0|	}
  475|       |
  476|      1|	return removed_ops;
  477|      1|}

zend_ssa_escape_analysis:
  381|      1|{
  382|      1|	zend_ssa_var *ssa_vars = ssa->vars;
  383|      1|	int ssa_vars_count = ssa->vars_count;
  384|      1|	int i, root, use;
  385|      1|	int *ees;
  386|      1|	bool has_allocations;
  387|      1|	int num_non_escaped;
  388|      1|	ALLOCA_FLAG(use_heap)
  389|       |
  390|      1|	if (!ssa_vars) {
  ------------------
  |  Branch (390:6): [True: 0, False: 1]
  ------------------
  391|      0|		return SUCCESS;
  392|      0|	}
  393|       |
  394|      1|	has_allocations = false;
  395|      1|	for (i = op_array->last_var; i < ssa_vars_count; i++) {
  ------------------
  |  Branch (395:31): [True: 0, False: 1]
  ------------------
  396|      0|		if (ssa_vars[i].definition >= 0
  ------------------
  |  Branch (396:7): [True: 0, False: 0]
  ------------------
  397|      0|		  && (ssa->var_info[i].type & (MAY_BE_ARRAY|MAY_BE_OBJECT))
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              		  && (ssa->var_info[i].type & (MAY_BE_ARRAY|MAY_BE_OBJECT))
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (397:8): [True: 0, False: 0]
  ------------------
  398|      0|		  && is_allocation_def(op_array, ssa, ssa_vars[i].definition, i, script)) {
  ------------------
  |  Branch (398:8): [True: 0, False: 0]
  ------------------
  399|      0|			has_allocations = true;
  400|      0|			break;
  401|      0|		}
  402|      0|	}
  403|      1|	if (!has_allocations) {
  ------------------
  |  Branch (403:6): [True: 1, False: 0]
  ------------------
  404|      1|		return SUCCESS;
  405|      1|	}
  406|       |
  407|       |
  408|       |	/* 1. Build EES (Equi-Escape Sets) */
  409|      0|	ees = do_alloca(sizeof(int) * ssa_vars_count, use_heap);
  ------------------
  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  410|      0|	if (!ees) {
  ------------------
  |  Branch (410:6): [True: 0, False: 0]
  ------------------
  411|      0|		return FAILURE;
  412|      0|	}
  413|       |
  414|      0|	if (zend_build_equi_escape_sets(ees, op_array, ssa) == FAILURE) {
  ------------------
  |  Branch (414:6): [True: 0, False: 0]
  ------------------
  415|      0|		free_alloca(ees, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  416|      0|		return FAILURE;
  417|      0|	}
  418|       |
  419|       |	/* 2. Identify Allocations */
  420|      0|	num_non_escaped = 0;
  421|      0|	for (i = op_array->last_var; i < ssa_vars_count; i++) {
  ------------------
  |  Branch (421:31): [True: 0, False: 0]
  ------------------
  422|      0|		root = ees[i];
  423|      0|		if (ssa_vars[root].escape_state > ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (423:7): [True: 0, False: 0]
  ------------------
  424|       |			/* already escape. skip */
  425|      0|		} else if (ssa_vars[i].alias && (ssa->var_info[i].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (425:14): [True: 0, False: 0]
  |  Branch (425:35): [True: 0, False: 0]
  ------------------
  426|      0|			if (ssa_vars[root].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (426:8): [True: 0, False: 0]
  ------------------
  427|      0|				num_non_escaped--;
  428|      0|			}
  429|      0|			ssa_vars[root].escape_state = ESCAPE_STATE_GLOBAL_ESCAPE;
  430|      0|		} else if (ssa_vars[i].definition >= 0
  ------------------
  |  Branch (430:14): [True: 0, False: 0]
  ------------------
  431|      0|			 && (ssa->var_info[i].type & (MAY_BE_ARRAY|MAY_BE_OBJECT))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			 && (ssa->var_info[i].type & (MAY_BE_ARRAY|MAY_BE_OBJECT))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (431:8): [True: 0, False: 0]
  ------------------
  432|      0|			if (!is_local_def(op_array, ssa, ssa_vars[i].definition, i, script)) {
  ------------------
  |  Branch (432:8): [True: 0, False: 0]
  ------------------
  433|      0|				if (ssa_vars[root].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (433:9): [True: 0, False: 0]
  ------------------
  434|      0|					num_non_escaped--;
  435|      0|				}
  436|      0|				ssa_vars[root].escape_state = ESCAPE_STATE_GLOBAL_ESCAPE;
  437|      0|			} else if (ssa_vars[root].escape_state == ESCAPE_STATE_UNKNOWN
  ------------------
  |  Branch (437:15): [True: 0, False: 0]
  ------------------
  438|      0|			 && is_allocation_def(op_array, ssa, ssa_vars[i].definition, i, script)) {
  ------------------
  |  Branch (438:8): [True: 0, False: 0]
  ------------------
  439|      0|				ssa_vars[root].escape_state = ESCAPE_STATE_NO_ESCAPE;
  440|      0|				num_non_escaped++;
  441|      0|			}
  442|      0|		}
  443|      0|	}
  444|       |
  445|       |	/* 3. Mark escaped EES */
  446|      0|	if (num_non_escaped) {
  ------------------
  |  Branch (446:6): [True: 0, False: 0]
  ------------------
  447|      0|		for (i = 0; i < ssa_vars_count; i++) {
  ------------------
  |  Branch (447:15): [True: 0, False: 0]
  ------------------
  448|      0|			if (ssa_vars[i].use_chain >= 0) {
  ------------------
  |  Branch (448:8): [True: 0, False: 0]
  ------------------
  449|      0|				root = ees[i];
  450|      0|				if (ssa_vars[root].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (450:9): [True: 0, False: 0]
  ------------------
  451|      0|					FOREACH_USE(ssa_vars + i, use) {
  ------------------
  |  |  266|      0|#define FOREACH_USE(var, use) do { \
  |  |  267|      0|	int _var_num = (var) - ssa->vars, next; \
  |  |  268|      0|	for (use = (var)->use_chain; use >= 0; use = next) { \
  |  |  ------------------
  |  |  |  Branch (268:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|		next = zend_ssa_next_use(ssa->ops, _var_num, use);
  ------------------
  452|      0|						if (is_escape_use(op_array, ssa, use, i)) {
  ------------------
  |  Branch (452:11): [True: 0, False: 0]
  ------------------
  453|      0|							ssa_vars[root].escape_state = ESCAPE_STATE_GLOBAL_ESCAPE;
  454|      0|							num_non_escaped--;
  455|      0|							if (num_non_escaped == 0) {
  ------------------
  |  Branch (455:12): [True: 0, False: 0]
  ------------------
  456|      0|								i = ssa_vars_count;
  457|      0|							}
  458|      0|							break;
  459|      0|						}
  460|      0|					} FOREACH_USE_END();
  ------------------
  |  |  271|      0|	} \
  |  |  272|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (272:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  461|      0|				}
  462|      0|			}
  463|      0|		}
  464|      0|	}
  465|       |
  466|       |	/* 4. Process referential dependencies */
  467|      0|	if (num_non_escaped) {
  ------------------
  |  Branch (467:6): [True: 0, False: 0]
  ------------------
  468|      0|		bool changed;
  469|       |
  470|      0|		do {
  471|      0|			changed = false;
  472|      0|			for (i = 0; i < ssa_vars_count; i++) {
  ------------------
  |  Branch (472:16): [True: 0, False: 0]
  ------------------
  473|      0|				if (ssa_vars[i].use_chain >= 0) {
  ------------------
  |  Branch (473:9): [True: 0, False: 0]
  ------------------
  474|      0|					root = ees[i];
  475|      0|					if (ssa_vars[root].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (475:10): [True: 0, False: 0]
  ------------------
  476|      0|						FOREACH_USE(ssa_vars + i, use) {
  ------------------
  |  |  266|      0|#define FOREACH_USE(var, use) do { \
  |  |  267|      0|	int _var_num = (var) - ssa->vars, next; \
  |  |  268|      0|	for (use = (var)->use_chain; use >= 0; use = next) { \
  |  |  ------------------
  |  |  |  Branch (268:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|		next = zend_ssa_next_use(ssa->ops, _var_num, use);
  ------------------
  477|      0|							zend_ssa_op *op = ssa->ops + use;
  478|      0|							zend_op *opline = op_array->opcodes + use;
  479|      0|							int enclosing_root;
  480|       |
  481|      0|							if (opline->opcode == ZEND_OP_DATA &&
  ------------------
  |  |  259|      0|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (481:12): [True: 0, False: 0]
  ------------------
  482|      0|							    ((opline-1)->opcode == ZEND_ASSIGN_DIM ||
  ------------------
  |  |  147|      0|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (482:13): [True: 0, False: 0]
  ------------------
  483|      0|							     (opline-1)->opcode == ZEND_ASSIGN_OBJ ||
  ------------------
  |  |  148|      0|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (483:13): [True: 0, False: 0]
  ------------------
  484|      0|							     (opline-1)->opcode == ZEND_ASSIGN_OBJ_REF) &&
  ------------------
  |  |  156|      0|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (484:13): [True: 0, False: 0]
  ------------------
  485|      0|							    op->op1_use == i &&
  ------------------
  |  Branch (485:12): [True: 0, False: 0]
  ------------------
  486|      0|							    (op-1)->op1_use >= 0) {
  ------------------
  |  Branch (486:12): [True: 0, False: 0]
  ------------------
  487|      0|								enclosing_root = ees[(op-1)->op1_use];
  488|      0|							} else if ((opline->opcode == ZEND_INIT_ARRAY ||
  ------------------
  |  |  194|      0|#define ZEND_INIT_ARRAY                      71
  ------------------
  |  Branch (488:20): [True: 0, False: 0]
  ------------------
  489|      0|							     opline->opcode == ZEND_ADD_ARRAY_ELEMENT) &&
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (489:13): [True: 0, False: 0]
  ------------------
  490|      0|							    op->op1_use == i &&
  ------------------
  |  Branch (490:12): [True: 0, False: 0]
  ------------------
  491|      0|							    op->result_def >= 0) {
  ------------------
  |  Branch (491:12): [True: 0, False: 0]
  ------------------
  492|      0|								enclosing_root = ees[op->result_def];
  493|      0|							} else {
  494|      0|								continue;
  495|      0|							}
  496|       |
  497|      0|							if (ssa_vars[enclosing_root].escape_state == ESCAPE_STATE_UNKNOWN ||
  ------------------
  |  Branch (497:12): [True: 0, False: 0]
  ------------------
  498|      0|							    ssa_vars[enclosing_root].escape_state > ssa_vars[root].escape_state) {
  ------------------
  |  Branch (498:12): [True: 0, False: 0]
  ------------------
  499|      0|							    if (ssa_vars[enclosing_root].escape_state == ESCAPE_STATE_UNKNOWN) {
  ------------------
  |  Branch (499:16): [True: 0, False: 0]
  ------------------
  500|      0|									ssa_vars[root].escape_state = ESCAPE_STATE_GLOBAL_ESCAPE;
  501|      0|							    } else {
  502|      0|									ssa_vars[root].escape_state = ssa_vars[enclosing_root].escape_state;
  503|      0|								}
  504|      0|								if (ssa_vars[root].escape_state == ESCAPE_STATE_GLOBAL_ESCAPE) {
  ------------------
  |  Branch (504:13): [True: 0, False: 0]
  ------------------
  505|      0|									num_non_escaped--;
  506|      0|									if (num_non_escaped == 0) {
  ------------------
  |  Branch (506:14): [True: 0, False: 0]
  ------------------
  507|      0|										changed = false;
  508|      0|									} else {
  509|      0|										changed = true;
  510|      0|									}
  511|      0|									break;
  512|      0|								} else {
  513|      0|									changed = true;
  514|      0|								}
  515|      0|							}
  516|      0|						} FOREACH_USE_END();
  ------------------
  |  |  271|      0|	} \
  |  |  272|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (272:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  517|      0|					}
  518|      0|				}
  519|      0|			}
  520|      0|		} while (changed);
  ------------------
  |  Branch (520:12): [True: 0, False: 0]
  ------------------
  521|      0|	}
  522|       |
  523|       |	/* 5. Propagate values of escape sets to variables */
  524|      0|	for (i = 0; i < ssa_vars_count; i++) {
  ------------------
  |  Branch (524:14): [True: 0, False: 0]
  ------------------
  525|      0|		root = ees[i];
  526|      0|		if (i != root) {
  ------------------
  |  Branch (526:7): [True: 0, False: 0]
  ------------------
  527|      0|			ssa_vars[i].escape_state = ssa_vars[root].escape_state;
  528|      0|		}
  529|      0|	}
  530|       |
  531|      0|	free_alloca(ees, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|       |
  533|      0|	return SUCCESS;
  534|      0|}

zend_optimize_func_calls:
  152|      1|{
  153|      1|	zend_op *opline = op_array->opcodes;
  154|      1|	const zend_op *end = opline + op_array->last;
  155|      1|	int call = 0;
  156|      1|	void *checkpoint;
  157|      1|	optimizer_call_info *call_stack;
  158|       |
  159|      1|	if (op_array->last < 2) {
  ------------------
  |  Branch (159:6): [True: 1, False: 0]
  ------------------
  160|      1|		return;
  161|      1|	}
  162|       |
  163|      0|	checkpoint = zend_arena_checkpoint(ctx->arena);
  164|      0|	call_stack = zend_arena_calloc(&ctx->arena, op_array->last / 2, sizeof(optimizer_call_info));
  165|      0|	while (opline < end) {
  ------------------
  |  Branch (165:9): [True: 0, False: 0]
  ------------------
  166|      0|		switch (opline->opcode) {
  167|      0|			case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      0|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (167:4): [True: 0, False: 0]
  ------------------
  168|      0|			case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (168:4): [True: 0, False: 0]
  ------------------
  169|      0|			case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|      0|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (169:4): [True: 0, False: 0]
  ------------------
  170|      0|			case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|      0|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (170:4): [True: 0, False: 0]
  ------------------
  171|      0|			case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (171:4): [True: 0, False: 0]
  ------------------
  172|      0|			case ZEND_NEW:
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (172:4): [True: 0, False: 0]
  ------------------
  173|      0|			case ZEND_INIT_PARENT_PROPERTY_HOOK_CALL:
  ------------------
  |  |  331|      0|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (173:4): [True: 0, False: 0]
  ------------------
  174|       |				/* The argument passing optimizations are valid for prototypes as well,
  175|       |				 * as inheritance cannot change between ref <-> non-ref arguments. */
  176|      0|				call_stack[call].func = zend_optimizer_get_called_func(
  177|      0|					ctx->script, op_array, opline, &call_stack[call].is_prototype);
  178|      0|				call_stack[call].try_inline =
  179|      0|					!call_stack[call].is_prototype
  ------------------
  |  Branch (179:6): [True: 0, False: 0]
  ------------------
  180|      0|					&& opline->opcode != ZEND_NEW
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (180:9): [True: 0, False: 0]
  ------------------
  181|      0|					&& opline->opcode != ZEND_INIT_PARENT_PROPERTY_HOOK_CALL;
  ------------------
  |  |  331|      0|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (181:9): [True: 0, False: 0]
  ------------------
  182|      0|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  183|      0|			case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|      0|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (183:4): [True: 0, False: 0]
  ------------------
  184|      0|			case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|      0|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (184:4): [True: 0, False: 0]
  ------------------
  185|      0|				call_stack[call].opline = opline;
  186|      0|				call_stack[call].func_arg_num = (uint32_t)-1;
  187|      0|				call++;
  188|      0|				break;
  189|      0|			case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (189:4): [True: 0, False: 0]
  ------------------
  190|      0|			case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (190:4): [True: 0, False: 0]
  ------------------
  191|      0|			case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (191:4): [True: 0, False: 0]
  ------------------
  192|      0|			case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (192:4): [True: 0, False: 0]
  ------------------
  193|      0|			case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (193:4): [True: 0, False: 0]
  ------------------
  194|      0|				call--;
  195|      0|				if (call_stack[call].func && call_stack[call].opline) {
  ------------------
  |  Branch (195:9): [True: 0, False: 0]
  |  Branch (195:34): [True: 0, False: 0]
  ------------------
  196|      0|					zend_op *fcall = call_stack[call].opline;
  197|       |
  198|      0|					if (fcall->opcode == ZEND_INIT_FCALL) {
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (198:10): [True: 0, False: 0]
  ------------------
  199|       |						/* nothing to do */
  200|      0|					} else if (fcall->opcode == ZEND_INIT_FCALL_BY_NAME) {
  ------------------
  |  |  182|      0|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (200:17): [True: 0, False: 0]
  ------------------
  201|      0|						fcall->opcode = ZEND_INIT_FCALL;
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  202|      0|						fcall->op1.num = zend_vm_calc_used_stack(fcall->extended_value, call_stack[call].func);
  203|      0|						literal_dtor(&ZEND_OP2_LITERAL(fcall));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  204|      0|						fcall->op2.constant = fcall->op2.constant + 1;
  205|      0|					} else if (fcall->opcode == ZEND_INIT_NS_FCALL_BY_NAME) {
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (205:17): [True: 0, False: 0]
  ------------------
  206|      0|						fcall->opcode = ZEND_INIT_FCALL;
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  207|      0|						fcall->op1.num = zend_vm_calc_used_stack(fcall->extended_value, call_stack[call].func);
  208|      0|						literal_dtor(&op_array->literals[fcall->op2.constant]);
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  209|      0|						literal_dtor(&op_array->literals[fcall->op2.constant + 2]);
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  210|      0|						fcall->op2.constant = fcall->op2.constant + 1;
  211|      0|					} else if (fcall->opcode == ZEND_INIT_STATIC_METHOD_CALL
  ------------------
  |  |  235|      0|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (211:17): [True: 0, False: 0]
  ------------------
  212|      0|							|| fcall->opcode == ZEND_INIT_METHOD_CALL
  ------------------
  |  |  234|      0|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (212:11): [True: 0, False: 0]
  ------------------
  213|      0|							|| fcall->opcode == ZEND_INIT_PARENT_PROPERTY_HOOK_CALL
  ------------------
  |  |  331|      0|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (213:11): [True: 0, False: 0]
  ------------------
  214|      0|							|| fcall->opcode == ZEND_NEW) {
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (214:11): [True: 0, False: 0]
  ------------------
  215|       |						/* We don't have specialized opcodes for this, do nothing */
  216|      0|					} else {
  217|      0|						ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (217:7): [Folded, False: 0]
  |  Branch (217:7): [Folded, False: 0]
  ------------------
  218|      0|					}
  219|       |
  220|       |					/* If the INIT opcode changed the DO opcode can also change to
  221|       |					 * a more optimized one.
  222|       |					 *
  223|       |					 * At this point we also know whether or not the result of
  224|       |					 * the DO opcode is used, allowing to optimize calls to
  225|       |					 * ZEND_ACC_NODISCARD functions. */
  226|      0|					if (opline->opcode != ZEND_CALLABLE_CONVERT) {
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (226:10): [True: 0, False: 0]
  ------------------
  227|      0|						opline->opcode = zend_get_call_op(fcall, call_stack[call].func, !RESULT_UNUSED(opline));
  ------------------
  |  |   41|      0|#define RESULT_UNUSED(op)	(op->result_type == IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  ------------------
  228|      0|					}
  229|       |
  230|      0|					if ((ZEND_OPTIMIZER_PASS_16 & ctx->optimization_level)
  ------------------
  |  |   41|      0|#define ZEND_OPTIMIZER_PASS_16		(1<<15)  /* Inline functions */
  ------------------
  |  Branch (230:10): [True: 0, False: 0]
  ------------------
  231|      0|							&& call_stack[call].try_inline
  ------------------
  |  Branch (231:11): [True: 0, False: 0]
  ------------------
  232|      0|							&& opline->opcode != ZEND_CALLABLE_CONVERT) {
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (232:11): [True: 0, False: 0]
  ------------------
  233|      0|						zend_try_inline_call(op_array, fcall, opline, call_stack[call].func);
  234|      0|					}
  235|      0|				}
  236|      0|				call_stack[call].func = NULL;
  237|      0|				call_stack[call].opline = NULL;
  238|      0|				call_stack[call].try_inline = false;
  239|      0|				call_stack[call].func_arg_num = (uint32_t)-1;
  240|      0|				break;
  241|      0|			case ZEND_FETCH_FUNC_ARG:
  ------------------
  |  |  214|      0|#define ZEND_FETCH_FUNC_ARG                  92
  ------------------
  |  Branch (241:4): [True: 0, False: 0]
  ------------------
  242|      0|			case ZEND_FETCH_STATIC_PROP_FUNC_ARG:
  ------------------
  |  |  299|      0|#define ZEND_FETCH_STATIC_PROP_FUNC_ARG     177
  ------------------
  |  Branch (242:4): [True: 0, False: 0]
  ------------------
  243|      0|			case ZEND_FETCH_OBJ_FUNC_ARG:
  ------------------
  |  |  216|      0|#define ZEND_FETCH_OBJ_FUNC_ARG              94
  ------------------
  |  Branch (243:4): [True: 0, False: 0]
  ------------------
  244|      0|			case ZEND_FETCH_DIM_FUNC_ARG:
  ------------------
  |  |  215|      0|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (244:4): [True: 0, False: 0]
  ------------------
  245|      0|				if (call_stack[call - 1].func_arg_num != (uint32_t)-1
  ------------------
  |  Branch (245:9): [True: 0, False: 0]
  ------------------
  246|      0|						&& has_known_send_mode(&call_stack[call - 1], call_stack[call - 1].func_arg_num)) {
  ------------------
  |  Branch (246:10): [True: 0, False: 0]
  ------------------
  247|      0|					if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, call_stack[call - 1].func_arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  248|       |						/* There's no TMP specialization for FETCH_OBJ_W/FETCH_DIM_W. Avoid
  249|       |						 * converting it and error at runtime in the FUNC_ARG variant. */
  250|      0|						if ((opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG || opline->opcode == ZEND_FETCH_DIM_FUNC_ARG)
  ------------------
  |  |  216|      0|#define ZEND_FETCH_OBJ_FUNC_ARG              94
  ------------------
              						if ((opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG || opline->opcode == ZEND_FETCH_DIM_FUNC_ARG)
  ------------------
  |  |  215|      0|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (250:12): [True: 0, False: 0]
  |  Branch (250:57): [True: 0, False: 0]
  ------------------
  251|      0|						 && (opline->op1_type == IS_TMP_VAR || call_stack[call - 1].last_check_func_arg_opline == NULL)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (251:12): [True: 0, False: 0]
  |  Branch (251:46): [True: 0, False: 0]
  ------------------
  252|       |							/* Don't remove the associated CHECK_FUNC_ARG opcode. */
  253|      0|							call_stack[call - 1].last_check_func_arg_opline = NULL;
  254|      0|							break;
  255|      0|						}
  256|      0|						if (opline->opcode != ZEND_FETCH_STATIC_PROP_FUNC_ARG) {
  ------------------
  |  |  299|      0|#define ZEND_FETCH_STATIC_PROP_FUNC_ARG     177
  ------------------
  |  Branch (256:11): [True: 0, False: 0]
  ------------------
  257|      0|							opline->opcode -= 9;
  258|      0|						} else {
  259|      0|							opline->opcode = ZEND_FETCH_STATIC_PROP_W;
  ------------------
  |  |  296|      0|#define ZEND_FETCH_STATIC_PROP_W            174
  ------------------
  260|      0|						}
  261|      0|					} else {
  262|      0|						if (opline->opcode == ZEND_FETCH_DIM_FUNC_ARG
  ------------------
  |  |  215|      0|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (262:11): [True: 0, False: 0]
  ------------------
  263|      0|								&& opline->op2_type == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (263:12): [True: 0, False: 0]
  ------------------
  264|       |							/* FETCH_DIM_FUNC_ARG supports UNUSED op2, while FETCH_DIM_R does not.
  265|       |							 * Performing the replacement would create an invalid opcode. */
  266|      0|							call_stack[call - 1].try_inline = false;
  267|      0|							break;
  268|      0|						}
  269|       |
  270|      0|						if (opline->opcode != ZEND_FETCH_STATIC_PROP_FUNC_ARG) {
  ------------------
  |  |  299|      0|#define ZEND_FETCH_STATIC_PROP_FUNC_ARG     177
  ------------------
  |  Branch (270:11): [True: 0, False: 0]
  ------------------
  271|      0|							opline->opcode -= 12;
  272|      0|						} else {
  273|      0|							opline->opcode = ZEND_FETCH_STATIC_PROP_R;
  ------------------
  |  |  295|      0|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
  274|      0|						}
  275|      0|					}
  276|      0|				}
  277|      0|				break;
  278|      0|			case ZEND_SEND_VAL_EX:
  ------------------
  |  |  238|      0|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (278:4): [True: 0, False: 0]
  ------------------
  279|      0|				if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (279:9): [True: 0, False: 0]
  ------------------
  280|      0|					call_stack[call - 1].try_inline = false;
  281|      0|					break;
  282|      0|				}
  283|       |
  284|      0|				if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
  ------------------
  |  Branch (284:9): [True: 0, False: 0]
  ------------------
  285|      0|					if (!ARG_MUST_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  ------------------
  |  Branch (285:10): [True: 0, False: 0]
  ------------------
  286|      0|						opline->opcode = ZEND_SEND_VAL;
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  287|      0|					}
  288|      0|				}
  289|      0|				break;
  290|      0|			case ZEND_CHECK_FUNC_ARG:
  ------------------
  |  |  222|      0|#define ZEND_CHECK_FUNC_ARG                 100
  ------------------
  |  Branch (290:4): [True: 0, False: 0]
  ------------------
  291|      0|				if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (291:9): [True: 0, False: 0]
  ------------------
  292|      0|					call_stack[call - 1].try_inline = false;
  293|      0|					call_stack[call - 1].func_arg_num = (uint32_t)-1;
  294|      0|					break;
  295|      0|				}
  296|       |
  297|      0|				if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
  ------------------
  |  Branch (297:9): [True: 0, False: 0]
  ------------------
  298|      0|					call_stack[call - 1].func_arg_num = opline->op2.num;
  299|      0|					call_stack[call - 1].last_check_func_arg_opline = opline;
  300|      0|				}
  301|      0|				break;
  302|      0|			case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      0|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (302:4): [True: 0, False: 0]
  ------------------
  303|       |				/* Don't transform SEND_FUNC_ARG if any FETCH opcodes weren't transformed. */
  304|      0|				if (call_stack[call - 1].last_check_func_arg_opline == NULL) {
  ------------------
  |  Branch (304:9): [True: 0, False: 0]
  ------------------
  305|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (305:10): [True: 0, False: 0]
  ------------------
  306|      0|						call_stack[call - 1].try_inline = false;
  307|      0|					}
  308|      0|					break;
  309|      0|				}
  310|      0|				MAKE_NOP(call_stack[call - 1].last_check_func_arg_opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  311|      0|				call_stack[call - 1].last_check_func_arg_opline = NULL;
  312|      0|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  313|      0|			case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (313:4): [True: 0, False: 0]
  ------------------
  314|      0|				if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (314:9): [True: 0, False: 0]
  ------------------
  315|      0|					call_stack[call - 1].try_inline = false;
  316|      0|					break;
  317|      0|				}
  318|       |
  319|      0|				if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
  ------------------
  |  Branch (319:9): [True: 0, False: 0]
  ------------------
  320|      0|					call_stack[call - 1].func_arg_num = (uint32_t)-1;
  321|      0|					if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  322|      0|						opline->opcode = ZEND_SEND_REF;
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  323|      0|					} else {
  324|      0|						opline->opcode = ZEND_SEND_VAR;
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  325|      0|					}
  326|      0|				}
  327|      0|				break;
  328|      0|			case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|      0|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (328:4): [True: 0, False: 0]
  ------------------
  329|      0|				if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (329:9): [True: 0, False: 0]
  ------------------
  330|      0|					call_stack[call - 1].try_inline = false;
  331|      0|					break;
  332|      0|				}
  333|       |
  334|      0|				if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
  ------------------
  |  Branch (334:9): [True: 0, False: 0]
  ------------------
  335|      0|					if (ARG_MUST_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  336|      0|						opline->opcode = ZEND_SEND_VAR_NO_REF;
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  337|      0|					} else if (ARG_MAY_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
  ------------------
  |  | 1170|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1170:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  338|      0|						opline->opcode = ZEND_SEND_VAL;
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  339|      0|					} else {
  340|      0|						opline->opcode = ZEND_SEND_VAR;
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  341|      0|					}
  342|      0|				}
  343|      0|				break;
  344|      0|			case ZEND_SEND_VAL:
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (344:4): [True: 0, False: 0]
  ------------------
  345|      0|			case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (345:4): [True: 0, False: 0]
  ------------------
  346|      0|			case ZEND_SEND_REF:
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (346:4): [True: 0, False: 0]
  ------------------
  347|      0|				if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (347:9): [True: 0, False: 0]
  ------------------
  348|      0|					call_stack[call - 1].try_inline = false;
  349|      0|					break;
  350|      0|				}
  351|      0|				break;
  352|      0|			case ZEND_SEND_UNPACK:
  ------------------
  |  |  287|      0|#define ZEND_SEND_UNPACK                    165
  ------------------
  |  Branch (352:4): [True: 0, False: 0]
  ------------------
  353|      0|			case ZEND_SEND_USER:
  ------------------
  |  |  242|      0|#define ZEND_SEND_USER                      120
  ------------------
  |  Branch (353:4): [True: 0, False: 0]
  ------------------
  354|      0|			case ZEND_SEND_ARRAY:
  ------------------
  |  |  241|      0|#define ZEND_SEND_ARRAY                     119
  ------------------
  |  Branch (354:4): [True: 0, False: 0]
  ------------------
  355|      0|				call_stack[call - 1].try_inline = false;
  356|      0|				break;
  357|      0|			default:
  ------------------
  |  Branch (357:4): [True: 0, False: 0]
  ------------------
  358|      0|				break;
  359|      0|		}
  360|      0|		opline++;
  361|      0|	}
  362|       |
  363|      0|	zend_arena_release(&ctx->arena, checkpoint);
  364|      0|}

zend_optimize_temporary_variables:
   42|      1|{
   43|      1|	uint32_t T = op_array->T;
   44|      1|	int offset = op_array->last_var;
   45|      1|	uint32_t bitset_len;
   46|      1|	zend_bitset taken_T;	/* T index in use */
   47|      1|	zend_op **start_of_T;	/* opline where T is first used */
   48|      1|	int *map_T;				/* Map's the T to its new index */
   49|      1|	zend_op *opline, *end;
   50|      1|	int currT;
   51|      1|	int i;
   52|      1|	int max = -1;
   53|      1|	void *checkpoint = zend_arena_checkpoint(ctx->arena);
   54|       |
   55|      1|	bitset_len = zend_bitset_len(T);
   56|      1|	taken_T = (zend_bitset) zend_arena_alloc(&ctx->arena, bitset_len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
   57|      1|	start_of_T = (zend_op **) zend_arena_alloc(&ctx->arena, T * sizeof(zend_op *));
   58|      1|	map_T = (int *) zend_arena_alloc(&ctx->arena, T * sizeof(int));
   59|      1|	memset(map_T, 0xff, T * sizeof(int));
   60|       |
   61|      1|	end = op_array->opcodes;
   62|      1|	opline = &op_array->opcodes[op_array->last - 1];
   63|       |
   64|       |	/* Find T definition points */
   65|      2|	while (opline >= end) {
  ------------------
  |  Branch (65:9): [True: 1, False: 1]
  ------------------
   66|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (66:7): [True: 0, False: 1]
  ------------------
   67|      0|			start_of_T[VAR_NUM(opline->result.var) - offset] = opline;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   68|      0|		}
   69|      1|		opline--;
   70|      1|	}
   71|       |
   72|      1|	zend_bitset_clear(taken_T, bitset_len);
   73|       |
   74|      1|	end = op_array->opcodes;
   75|      1|	opline = &op_array->opcodes[op_array->last - 1];
   76|       |
   77|      2|	while (opline >= end) {
  ------------------
  |  Branch (77:9): [True: 1, False: 1]
  ------------------
   78|      1|		if ((opline->op1_type & (IS_VAR | IS_TMP_VAR))) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if ((opline->op1_type & (IS_VAR | IS_TMP_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (78:7): [True: 0, False: 1]
  ------------------
   79|      0|			currT = VAR_NUM(opline->op1.var) - offset;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|      0|			if (opline->opcode == ZEND_ROPE_END) {
  ------------------
  |  |  179|      0|#define ZEND_ROPE_END                        56
  ------------------
  |  Branch (80:8): [True: 0, False: 0]
  ------------------
   81|      0|				int num = (((opline->extended_value + 1) * sizeof(zend_string*)) + (sizeof(zval) - 1)) / sizeof(zval);
   82|      0|				int var;
   83|       |
   84|      0|				var = max;
   85|      0|				while (var >= 0 && !zend_bitset_in(taken_T, var)) {
  ------------------
  |  Branch (85:12): [True: 0, False: 0]
  |  Branch (85:24): [True: 0, False: 0]
  ------------------
   86|      0|					var--;
   87|      0|				}
   88|      0|				max = MAX(max, var + num);
  ------------------
  |  |  517|      0|#define MAX(a, b)  (((a)>(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (517:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   89|      0|				var = var + 1;
   90|      0|				map_T[currT] = var;
   91|      0|				zend_bitset_incl(taken_T, var);
   92|      0|				opline->op1.var = NUM_VAR(var + offset);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|      0|				while (num > 1) {
  ------------------
  |  Branch (93:12): [True: 0, False: 0]
  ------------------
   94|      0|					num--;
   95|      0|					zend_bitset_incl(taken_T, var + num);
   96|      0|				}
   97|      0|			} else {
   98|      0|				if (map_T[currT] == INVALID_VAR) {
  ------------------
  |  |   29|      0|#define INVALID_VAR ((uint32_t)-1)
  ------------------
  |  Branch (98:9): [True: 0, False: 0]
  ------------------
   99|      0|					int use_new_var = 0;
  100|       |
  101|       |					/* Code in "finally" blocks may modify temporary variables.
  102|       |					 * We allocate new temporaries for values that need to
  103|       |					 * relive FAST_CALLs.
  104|       |					 */
  105|      0|					if ((op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK) &&
  ------------------
  |  |  361|      0|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (105:10): [True: 0, False: 0]
  ------------------
  106|      0|					    (opline->opcode == ZEND_RETURN ||
  ------------------
  |  |  185|      0|#define ZEND_RETURN                          62
  ------------------
  |  Branch (106:11): [True: 0, False: 0]
  ------------------
  107|      0|					     opline->opcode == ZEND_GENERATOR_RETURN ||
  ------------------
  |  |  283|      0|#define ZEND_GENERATOR_RETURN               161
  ------------------
  |  Branch (107:11): [True: 0, False: 0]
  ------------------
  108|      0|					     opline->opcode == ZEND_RETURN_BY_REF ||
  ------------------
  |  |  233|      0|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (108:11): [True: 0, False: 0]
  ------------------
  109|      0|					     opline->opcode == ZEND_FREE ||
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (109:11): [True: 0, False: 0]
  ------------------
  110|      0|					     opline->opcode == ZEND_FE_FREE)) {
  ------------------
  |  |  249|      0|#define ZEND_FE_FREE                        127
  ------------------
  |  Branch (110:11): [True: 0, False: 0]
  ------------------
  111|      0|						zend_op *curr = opline;
  112|       |
  113|      0|						while (--curr >= end) {
  ------------------
  |  Branch (113:14): [True: 0, False: 0]
  ------------------
  114|      0|							if (curr->opcode == ZEND_FAST_CALL) {
  ------------------
  |  |  284|      0|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (114:12): [True: 0, False: 0]
  ------------------
  115|      0|								use_new_var = 1;
  116|      0|								break;
  117|      0|							} else if (curr->opcode != ZEND_FREE &&
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (117:19): [True: 0, False: 0]
  ------------------
  118|      0|							           curr->opcode != ZEND_FE_FREE &&
  ------------------
  |  |  249|      0|#define ZEND_FE_FREE                        127
  ------------------
  |  Branch (118:19): [True: 0, False: 0]
  ------------------
  119|      0|							           curr->opcode != ZEND_VERIFY_RETURN_TYPE &&
  ------------------
  |  |  246|      0|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
  |  Branch (119:19): [True: 0, False: 0]
  ------------------
  120|      0|							           curr->opcode != ZEND_DISCARD_EXCEPTION) {
  ------------------
  |  |  281|      0|#define ZEND_DISCARD_EXCEPTION              159
  ------------------
  |  Branch (120:19): [True: 0, False: 0]
  ------------------
  121|      0|								break;
  122|      0|							}
  123|      0|						}
  124|      0|					}
  125|      0|					if (use_new_var) {
  ------------------
  |  Branch (125:10): [True: 0, False: 0]
  ------------------
  126|      0|						i = ++max;
  127|      0|						zend_bitset_incl(taken_T, i);
  128|      0|					} else {
  129|      0|						GET_AVAILABLE_T();
  ------------------
  |  |   31|      0|	for (i = 0; i < T; i++) {				\
  |  |  ------------------
  |  |  |  Branch (31:14): [True: 0, False: 0]
  |  |  ------------------
  |  |   32|      0|		if (!zend_bitset_in(taken_T, i)) {	\
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      0|			break;							\
  |  |   34|      0|		}									\
  |  |   35|      0|	}										\
  |  |   36|      0|	zend_bitset_incl(taken_T, i);			\
  |  |   37|      0|	if (i > max) {							\
  |  |  ------------------
  |  |  |  Branch (37:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   38|      0|		max = i;							\
  |  |   39|      0|	}
  ------------------
  130|      0|					}
  131|      0|					map_T[currT] = i;
  132|      0|				}
  133|      0|				opline->op1.var = NUM_VAR(map_T[currT] + offset);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|      0|			}
  135|      0|		}
  136|       |
  137|      1|		if ((opline->op2_type & (IS_VAR | IS_TMP_VAR))) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if ((opline->op2_type & (IS_VAR | IS_TMP_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (137:7): [True: 0, False: 1]
  ------------------
  138|      0|			currT = VAR_NUM(opline->op2.var) - offset;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|      0|			if (map_T[currT] == INVALID_VAR) {
  ------------------
  |  |   29|      0|#define INVALID_VAR ((uint32_t)-1)
  ------------------
  |  Branch (139:8): [True: 0, False: 0]
  ------------------
  140|      0|				GET_AVAILABLE_T();
  ------------------
  |  |   31|      0|	for (i = 0; i < T; i++) {				\
  |  |  ------------------
  |  |  |  Branch (31:14): [True: 0, False: 0]
  |  |  ------------------
  |  |   32|      0|		if (!zend_bitset_in(taken_T, i)) {	\
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      0|			break;							\
  |  |   34|      0|		}									\
  |  |   35|      0|	}										\
  |  |   36|      0|	zend_bitset_incl(taken_T, i);			\
  |  |   37|      0|	if (i > max) {							\
  |  |  ------------------
  |  |  |  Branch (37:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   38|      0|		max = i;							\
  |  |   39|      0|	}
  ------------------
  141|      0|				map_T[currT] = i;
  142|      0|			}
  143|      0|			opline->op2.var = NUM_VAR(map_T[currT] + offset);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      0|		}
  145|       |
  146|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (146:7): [True: 0, False: 1]
  ------------------
  147|      0|			currT = VAR_NUM(opline->result.var) - offset;
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|      0|			if (map_T[currT] == INVALID_VAR) {
  ------------------
  |  |   29|      0|#define INVALID_VAR ((uint32_t)-1)
  ------------------
  |  Branch (148:8): [True: 0, False: 0]
  ------------------
  149|       |				/* As a result of DCE, an opcode may have an unused result. */
  150|      0|				GET_AVAILABLE_T();
  ------------------
  |  |   31|      0|	for (i = 0; i < T; i++) {				\
  |  |  ------------------
  |  |  |  Branch (31:14): [True: 0, False: 0]
  |  |  ------------------
  |  |   32|      0|		if (!zend_bitset_in(taken_T, i)) {	\
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      0|			break;							\
  |  |   34|      0|		}									\
  |  |   35|      0|	}										\
  |  |   36|      0|	zend_bitset_incl(taken_T, i);			\
  |  |   37|      0|	if (i > max) {							\
  |  |  ------------------
  |  |  |  Branch (37:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   38|      0|		max = i;							\
  |  |   39|      0|	}
  ------------------
  151|      0|				map_T[currT] = i;
  152|      0|			}
  153|      0|			opline->result.var = NUM_VAR(map_T[currT] + offset);
  ------------------
  |  |   34|      0|#define NUM_VAR(v) EX_NUM_TO_VAR(v)
  |  |  ------------------
  |  |  |  |  759|      0|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|      0|			if (start_of_T[currT] == opline) {
  ------------------
  |  Branch (154:8): [True: 0, False: 0]
  ------------------
  155|       |				/* ZEND_FAST_CALL can not share temporary var with others
  156|       |				 * since the fast_var could also be set by ZEND_HANDLE_EXCEPTION
  157|       |				 * which could be ahead of it */
  158|      0|				if (opline->opcode != ZEND_FAST_CALL) {
  ------------------
  |  |  284|      0|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (158:9): [True: 0, False: 0]
  ------------------
  159|      0|					zend_bitset_excl(taken_T, map_T[currT]);
  160|      0|				}
  161|      0|				if (opline->opcode == ZEND_ROPE_INIT) {
  ------------------
  |  |  177|      0|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (161:9): [True: 0, False: 0]
  ------------------
  162|      0|					uint32_t num = ((opline->extended_value * sizeof(zend_string*)) + (sizeof(zval) - 1)) / sizeof(zval);
  163|      0|					while (num > 1) {
  ------------------
  |  Branch (163:13): [True: 0, False: 0]
  ------------------
  164|      0|						num--;
  165|      0|						zend_bitset_excl(taken_T, map_T[currT]+num);
  166|      0|					}
  167|      0|				}
  168|      0|			}
  169|      0|		}
  170|       |
  171|      1|		opline--;
  172|      1|	}
  173|       |
  174|      1|	zend_arena_release(&ctx->arena, checkpoint);
  175|      1|	op_array->T = max + 1 + ZEND_OBSERVER_ENABLED; // reserve last temporary for observers if enabled
  ------------------
  |  |   46|      1|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  ------------------
  176|      1|}

zend_optimizer_pass1:
   59|      1|{
   60|      1|	zend_op *opline = op_array->opcodes;
   61|      1|	zend_op *end = opline + op_array->last;
   62|      1|	bool collect_constants = (ZEND_OPTIMIZER_PASS_15 & ctx->optimization_level)?
  ------------------
  |  |   40|      1|#define ZEND_OPTIMIZER_PASS_15		(1<<14)  /* (unsafe) Collect constants */
  ------------------
  |  Branch (62:27): [True: 0, False: 1]
  ------------------
   63|      1|		(op_array == &ctx->script->main_op_array) : 0;
   64|      1|	zval result;
   65|       |
   66|      2|	while (opline < end) {
  ------------------
  |  Branch (66:9): [True: 1, False: 1]
  ------------------
   67|      1|		switch (opline->opcode) {
  ------------------
  |  Branch (67:11): [True: 1, False: 0]
  ------------------
   68|      0|		case ZEND_CONCAT:
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (68:3): [True: 0, False: 1]
  ------------------
   69|      0|		case ZEND_FAST_CONCAT:
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (69:3): [True: 0, False: 1]
  ------------------
   70|      0|			if (opline->op1_type == IS_CONST && Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (opline->op1_type == IS_CONST && Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (opline->op1_type == IS_CONST && Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (70:8): [True: 0, False: 0]
  |  Branch (70:40): [True: 0, False: 0]
  ------------------
   71|      0|				TO_STRING_NOWARN(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   35|      0|#define TO_STRING_NOWARN(val) do { \
  |  |   36|      0|	if (Z_TYPE_P(val) < IS_ARRAY) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_TYPE_P(val) < IS_ARRAY) { \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |  |  Branch (36:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|		convert_to_string(val); \
  |  |  ------------------
  |  |  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|	} \
  |  |   39|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (39:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
   72|      0|			}
   73|      0|			if (opline->op2_type == IS_CONST && Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (opline->op2_type == IS_CONST && Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (opline->op2_type == IS_CONST && Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (73:8): [True: 0, False: 0]
  |  Branch (73:40): [True: 0, False: 0]
  ------------------
   74|      0|				TO_STRING_NOWARN(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   35|      0|#define TO_STRING_NOWARN(val) do { \
  |  |   36|      0|	if (Z_TYPE_P(val) < IS_ARRAY) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_TYPE_P(val) < IS_ARRAY) { \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |  |  Branch (36:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|		convert_to_string(val); \
  |  |  ------------------
  |  |  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|	} \
  |  |   39|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (39:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
   75|      0|			}
   76|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
   77|      0|		case ZEND_ADD:
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (77:3): [True: 0, False: 1]
  ------------------
   78|      0|		case ZEND_SUB:
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (78:3): [True: 0, False: 1]
  ------------------
   79|      0|		case ZEND_MUL:
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (79:3): [True: 0, False: 1]
  ------------------
   80|      0|		case ZEND_DIV:
  ------------------
  |  |  128|      0|#define ZEND_DIV                              4
  ------------------
  |  Branch (80:3): [True: 0, False: 1]
  ------------------
   81|      0|		case ZEND_POW:
  ------------------
  |  |  136|      0|#define ZEND_POW                             12
  ------------------
  |  Branch (81:3): [True: 0, False: 1]
  ------------------
   82|      0|		case ZEND_MOD:
  ------------------
  |  |  129|      0|#define ZEND_MOD                              5
  ------------------
  |  Branch (82:3): [True: 0, False: 1]
  ------------------
   83|      0|		case ZEND_SL:
  ------------------
  |  |  130|      0|#define ZEND_SL                               6
  ------------------
  |  Branch (83:3): [True: 0, False: 1]
  ------------------
   84|      0|		case ZEND_SR:
  ------------------
  |  |  131|      0|#define ZEND_SR                               7
  ------------------
  |  Branch (84:3): [True: 0, False: 1]
  ------------------
   85|      0|		case ZEND_BW_OR:
  ------------------
  |  |  133|      0|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (85:3): [True: 0, False: 1]
  ------------------
   86|      0|		case ZEND_BW_AND:
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
  |  Branch (86:3): [True: 0, False: 1]
  ------------------
   87|      0|		case ZEND_BW_XOR:
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (87:3): [True: 0, False: 1]
  ------------------
   88|      0|		case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (88:3): [True: 0, False: 1]
  ------------------
   89|      0|		case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (89:3): [True: 0, False: 1]
  ------------------
   90|      0|		case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (90:3): [True: 0, False: 1]
  ------------------
   91|      0|		case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (91:3): [True: 0, False: 1]
  ------------------
   92|      0|		case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (92:3): [True: 0, False: 1]
  ------------------
   93|      0|		case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (93:3): [True: 0, False: 1]
  ------------------
   94|      0|		case ZEND_BOOL_XOR:
  ------------------
  |  |  139|      0|#define ZEND_BOOL_XOR                        15
  ------------------
  |  Branch (94:3): [True: 0, False: 1]
  ------------------
   95|      0|		case ZEND_SPACESHIP:
  ------------------
  |  |  292|      0|#define ZEND_SPACESHIP                      170
  ------------------
  |  Branch (95:3): [True: 0, False: 1]
  ------------------
   96|      0|		case ZEND_CASE:
  ------------------
  |  |  171|      0|#define ZEND_CASE                            48
  ------------------
  |  Branch (96:3): [True: 0, False: 1]
  ------------------
   97|      0|		case ZEND_CASE_STRICT:
  ------------------
  |  |  318|      0|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (97:3): [True: 0, False: 1]
  ------------------
   98|      0|			if (opline->op1_type == IS_CONST && opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (opline->op1_type == IS_CONST && opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (98:8): [True: 0, False: 0]
  |  Branch (98:40): [True: 0, False: 0]
  ------------------
   99|      0|					zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
              					zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   30|      0|#define ZEND_OP2_LITERAL(opline)		(op_array)->literals[(opline)->op2.constant]
  ------------------
  |  Branch (99:6): [True: 0, False: 0]
  ------------------
  100|      0|				replace_by_const_or_qm_assign(op_array, opline, &result);
  101|      0|			}
  102|      0|			break;
  103|       |
  104|      0|		case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (104:3): [True: 0, False: 1]
  ------------------
  105|      0|			if (opline->extended_value == ZEND_CONCAT && opline->op2_type == IS_CONST
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
              			if (opline->extended_value == ZEND_CONCAT && opline->op2_type == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (105:8): [True: 0, False: 0]
  |  Branch (105:49): [True: 0, False: 0]
  ------------------
  106|      0|					&& Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					&& Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (106:9): [True: 0, False: 0]
  ------------------
  107|      0|				TO_STRING_NOWARN(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   35|      0|#define TO_STRING_NOWARN(val) do { \
  |  |   36|      0|	if (Z_TYPE_P(val) < IS_ARRAY) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_TYPE_P(val) < IS_ARRAY) { \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |  |  Branch (36:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   37|      0|		convert_to_string(val); \
  |  |  ------------------
  |  |  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|	} \
  |  |   39|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (39:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  108|      0|			}
  109|      0|			break;
  110|       |
  111|      0|		case ZEND_CAST:
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (111:3): [True: 0, False: 1]
  ------------------
  112|      0|			if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (112:8): [True: 0, False: 0]
  ------------------
  113|      0|					zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (113:6): [True: 0, False: 0]
  ------------------
  114|      0|				replace_by_const_or_qm_assign(op_array, opline, &result);
  115|      0|			}
  116|      0|			break;
  117|       |
  118|      0|		case ZEND_BW_NOT:
  ------------------
  |  |  137|      0|#define ZEND_BW_NOT                          13
  ------------------
  |  Branch (118:3): [True: 0, False: 1]
  ------------------
  119|      0|		case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (119:3): [True: 0, False: 1]
  ------------------
  120|      0|			if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (120:8): [True: 0, False: 0]
  ------------------
  121|      0|					zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (121:6): [True: 0, False: 0]
  ------------------
  122|      0|				replace_by_const_or_qm_assign(op_array, opline, &result);
  123|      0|			}
  124|      0|			break;
  125|       |
  126|      0|		case ZEND_FETCH_CONSTANT:
  ------------------
  |  |  221|      0|#define ZEND_FETCH_CONSTANT                  99
  ------------------
  |  Branch (126:3): [True: 0, False: 1]
  ------------------
  127|      0|			if (opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (127:8): [True: 0, False: 0]
  ------------------
  128|      0|				Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (128:5): [True: 0, False: 0]
  ------------------
  129|      0|				zend_string_equals_literal(Z_STR(ZEND_OP2_LITERAL(opline)), "__COMPILER_HALT_OFFSET__")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  130|       |				/* substitute __COMPILER_HALT_OFFSET__ constant */
  131|      0|				zend_execute_data *orig_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  132|      0|				zend_execute_data fake_execute_data;
  133|      0|				zval *offset;
  134|       |
  135|      0|				memset(&fake_execute_data, 0, sizeof(zend_execute_data));
  136|      0|				fake_execute_data.func = (zend_function*)op_array;
  137|      0|				EG(current_execute_data) = &fake_execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  138|      0|				if ((offset = zend_get_constant_str("__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFFSET__") - 1)) != NULL) {
  ------------------
  |  Branch (138:9): [True: 0, False: 0]
  ------------------
  139|       |
  140|      0|					literal_dtor(&ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  141|      0|					replace_by_const_or_qm_assign(op_array, opline, offset);
  142|      0|				}
  143|      0|				EG(current_execute_data) = orig_execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  144|      0|				break;
  145|      0|			}
  146|       |
  147|      0|			if (opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (147:8): [True: 0, False: 0]
  ------------------
  148|      0|				Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (148:5): [True: 0, False: 0]
  ------------------
  149|       |				/* substitute persistent constants */
  150|      0|				if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP2_LITERAL(opline)), &result, true)) {
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  |  Branch (150:9): [True: 0, False: 0]
  ------------------
  151|      0|					if (!ctx->constants || !zend_optimizer_get_collected_constant(ctx->constants, &ZEND_OP2_LITERAL(opline), &result)) {
  ------------------
  |  |   30|      0|#define ZEND_OP2_LITERAL(opline)		(op_array)->literals[(opline)->op2.constant]
  ------------------
  |  Branch (151:10): [True: 0, False: 0]
  |  Branch (151:29): [True: 0, False: 0]
  ------------------
  152|      0|						break;
  153|      0|					}
  154|      0|				}
  155|      0|				if (Z_TYPE(result) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(result) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (155:9): [True: 0, False: 0]
  ------------------
  156|      0|					break;
  157|      0|				}
  158|      0|				replace_by_const_or_qm_assign(op_array, opline, &result);
  159|      0|			}
  160|      0|			break;
  161|       |
  162|      0|		case ZEND_FETCH_CLASS_CONSTANT: {
  ------------------
  |  |  303|      0|#define ZEND_FETCH_CLASS_CONSTANT           181
  ------------------
  |  Branch (162:3): [True: 0, False: 1]
  ------------------
  163|      0|			bool is_prototype;
  164|      0|			const zend_class_constant *cc = zend_fetch_class_const_info(ctx->script, op_array, opline, &is_prototype);
  165|      0|			if (!cc || is_prototype) {
  ------------------
  |  Branch (165:8): [True: 0, False: 0]
  |  Branch (165:15): [True: 0, False: 0]
  ------------------
  166|      0|				break;
  167|      0|			}
  168|      0|			const zval *c = &cc->value;
  169|      0|			if (Z_TYPE_P(c) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(c) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (169:8): [True: 0, False: 0]
  ------------------
  170|      0|				zend_ast *ast = Z_ASTVAL_P(c);
  ------------------
  |  | 1041|      0|#define Z_ASTVAL_P(zval_p)			Z_ASTVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1040|      0|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1038|      0|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|      0|				if (ast->kind != ZEND_AST_CONSTANT
  ------------------
  |  Branch (171:9): [True: 0, False: 0]
  ------------------
  172|      0|				 || !zend_optimizer_get_persistent_constant(zend_ast_get_constant_name(ast), &result, true)
  ------------------
  |  Branch (172:9): [True: 0, False: 0]
  ------------------
  173|      0|				 || Z_TYPE(result) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				 || Z_TYPE(result) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (173:9): [True: 0, False: 0]
  ------------------
  174|      0|					break;
  175|      0|				}
  176|      0|			} else {
  177|      0|				ZVAL_COPY_OR_DUP(&result, c);
  ------------------
  |  | 1457|      0|	do {																\
  |  | 1458|      0|		zval *_z1 = (z);												\
  |  | 1459|      0|		const zval *_z2 = (v);											\
  |  | 1460|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  178|      0|			}
  179|      0|			replace_by_const_or_qm_assign(op_array, opline, &result);
  180|      0|			break;
  181|      0|		}
  182|       |
  183|      0|		case ZEND_DO_ICALL: {
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (183:3): [True: 0, False: 1]
  ------------------
  184|      0|			zend_op *send1_opline = opline - 1;
  185|      0|			zend_op *send2_opline = NULL;
  186|      0|			zend_op *init_opline = NULL;
  187|       |
  188|      0|			while (send1_opline->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (188:11): [True: 0, False: 0]
  ------------------
  189|      0|				send1_opline--;
  190|      0|			}
  191|      0|			if (send1_opline->opcode != ZEND_SEND_VAL ||
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (191:8): [True: 0, False: 0]
  ------------------
  192|      0|			    send1_opline->op1_type != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (192:8): [True: 0, False: 0]
  ------------------
  193|       |				/* don't collect constants after unknown function call */
  194|      0|				collect_constants = false;
  195|      0|				break;
  196|      0|			}
  197|      0|			if (send1_opline->op2.num == 2) {
  ------------------
  |  Branch (197:8): [True: 0, False: 0]
  ------------------
  198|      0|				send2_opline = send1_opline;
  199|      0|				send1_opline--;
  200|      0|				while (send1_opline->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (200:12): [True: 0, False: 0]
  ------------------
  201|      0|					send1_opline--;
  202|      0|				}
  203|      0|				if (send1_opline->opcode != ZEND_SEND_VAL ||
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (203:9): [True: 0, False: 0]
  ------------------
  204|      0|				    send1_opline->op1_type != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (204:9): [True: 0, False: 0]
  ------------------
  205|       |					/* don't collect constants after unknown function call */
  206|      0|					collect_constants = false;
  207|      0|					break;
  208|      0|				}
  209|      0|			}
  210|      0|			init_opline = send1_opline - 1;
  211|      0|			while (init_opline->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (211:11): [True: 0, False: 0]
  ------------------
  212|      0|				init_opline--;
  213|      0|			}
  214|      0|			if (init_opline->opcode != ZEND_INIT_FCALL ||
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (214:8): [True: 0, False: 0]
  ------------------
  215|      0|			    init_opline->op2_type != IS_CONST ||
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (215:8): [True: 0, False: 0]
  ------------------
  216|      0|			    Z_TYPE(ZEND_OP2_LITERAL(init_opline)) != IS_STRING) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			    Z_TYPE(ZEND_OP2_LITERAL(init_opline)) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (216:8): [True: 0, False: 0]
  ------------------
  217|       |				/* don't collect constants after unknown function call */
  218|      0|				collect_constants = false;
  219|      0|				break;
  220|      0|			}
  221|       |
  222|       |			/* define("name", scalar); */
  223|      0|			if (zend_string_equals_literal_ci(Z_STR(ZEND_OP2_LITERAL(init_opline)), "define")) {
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  224|       |
  225|      0|				if (Z_TYPE(ZEND_OP1_LITERAL(send1_opline)) == IS_STRING && send2_opline) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(ZEND_OP1_LITERAL(send1_opline)) == IS_STRING && send2_opline) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (225:9): [True: 0, False: 0]
  |  Branch (225:64): [True: 0, False: 0]
  ------------------
  226|       |
  227|      0|					if (collect_constants) {
  ------------------
  |  Branch (227:10): [True: 0, False: 0]
  ------------------
  228|      0|						zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(send1_opline), &ZEND_OP1_LITERAL(send2_opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
              						zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(send1_opline), &ZEND_OP1_LITERAL(send2_opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  229|      0|					}
  230|       |
  231|      0|					if (RESULT_UNUSED(opline) &&
  ------------------
  |  |   41|      0|#define RESULT_UNUSED(op)	(op->result_type == IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (41:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  232|      0|					    !zend_memnstr(Z_STRVAL(ZEND_OP1_LITERAL(send1_opline)), "::", sizeof("::") - 1, Z_STRVAL(ZEND_OP1_LITERAL(send1_opline)) + Z_STRLEN(ZEND_OP1_LITERAL(send1_opline)))) {
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              					    !zend_memnstr(Z_STRVAL(ZEND_OP1_LITERAL(send1_opline)), "::", sizeof("::") - 1, Z_STRVAL(ZEND_OP1_LITERAL(send1_opline)) + Z_STRLEN(ZEND_OP1_LITERAL(send1_opline)))) {
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              					    !zend_memnstr(Z_STRVAL(ZEND_OP1_LITERAL(send1_opline)), "::", sizeof("::") - 1, Z_STRVAL(ZEND_OP1_LITERAL(send1_opline)) + Z_STRLEN(ZEND_OP1_LITERAL(send1_opline)))) {
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  |  Branch (232:10): [True: 0, False: 0]
  ------------------
  233|       |
  234|      0|						opline->opcode = ZEND_DECLARE_CONST;
  ------------------
  |  |  265|      0|#define ZEND_DECLARE_CONST                  143
  ------------------
  235|      0|						opline->op1_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  236|      0|						opline->op2_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  237|      0|						opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  238|      0|						opline->op1.constant = send1_opline->op1.constant;
  239|      0|						opline->op2.constant = send2_opline->op1.constant;
  240|      0|						opline->result.num = 0;
  241|       |
  242|      0|						literal_dtor(&ZEND_OP2_LITERAL(init_opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  243|      0|						MAKE_NOP(init_opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  244|      0|						MAKE_NOP(send1_opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  245|      0|						MAKE_NOP(send2_opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  246|      0|					}
  247|      0|					break;
  248|      0|				}
  249|      0|			}
  250|       |
  251|      0|			if (!send2_opline && Z_TYPE(ZEND_OP1_LITERAL(send1_opline)) == IS_STRING &&
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (!send2_opline && Z_TYPE(ZEND_OP1_LITERAL(send1_opline)) == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (251:8): [True: 0, False: 0]
  |  Branch (251:25): [True: 0, False: 0]
  ------------------
  252|      0|					zend_optimizer_eval_special_func_call(&result, Z_STR(ZEND_OP2_LITERAL(init_opline)), Z_STR(ZEND_OP1_LITERAL(send1_opline))) == SUCCESS) {
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
              					zend_optimizer_eval_special_func_call(&result, Z_STR(ZEND_OP2_LITERAL(init_opline)), Z_STR(ZEND_OP1_LITERAL(send1_opline))) == SUCCESS) {
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  |  Branch (252:6): [True: 0, False: 0]
  ------------------
  253|      0|				literal_dtor(&ZEND_OP2_LITERAL(init_opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|      0|				MAKE_NOP(init_opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  255|      0|				literal_dtor(&ZEND_OP1_LITERAL(send1_opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  256|      0|				MAKE_NOP(send1_opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  257|      0|				replace_by_const_or_qm_assign(op_array, opline, &result);
  258|      0|				break;
  259|      0|			}
  260|       |
  261|       |			/* don't collect constants after any other function call */
  262|      0|			collect_constants = false;
  263|      0|			break;
  264|      0|		}
  265|      0|		case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (265:3): [True: 0, False: 1]
  ------------------
  266|      0|		case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (266:3): [True: 0, False: 1]
  ------------------
  267|      0|		case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (267:3): [True: 0, False: 1]
  ------------------
  268|      0|		case ZEND_FRAMELESS_ICALL_0:
  ------------------
  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  ------------------
  |  Branch (268:3): [True: 0, False: 1]
  ------------------
  269|      0|		case ZEND_FRAMELESS_ICALL_1:
  ------------------
  |  |  327|      0|#define ZEND_FRAMELESS_ICALL_1              205
  ------------------
  |  Branch (269:3): [True: 0, False: 1]
  ------------------
  270|      0|		case ZEND_FRAMELESS_ICALL_2:
  ------------------
  |  |  328|      0|#define ZEND_FRAMELESS_ICALL_2              206
  ------------------
  |  Branch (270:3): [True: 0, False: 1]
  ------------------
  271|      0|		case ZEND_FRAMELESS_ICALL_3:
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (271:3): [True: 0, False: 1]
  ------------------
  272|       |			/* don't collect constants after any UCALL/FCALL/FRAMELESS ICALL */
  273|      0|			collect_constants = 0;
  274|      0|			break;
  275|      0|		case ZEND_STRLEN:
  ------------------
  |  |  243|      0|#define ZEND_STRLEN                         121
  ------------------
  |  Branch (275:3): [True: 0, False: 1]
  ------------------
  276|      0|			if (opline->op1_type == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (276:8): [True: 0, False: 0]
  ------------------
  277|      0|					zend_optimizer_eval_strlen(&result, &ZEND_OP1_LITERAL(opline)) == SUCCESS) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (277:6): [True: 0, False: 0]
  ------------------
  278|      0|				replace_by_const_or_qm_assign(op_array, opline, &result);
  279|      0|			}
  280|      0|			break;
  281|      0|		case ZEND_DEFINED:
  ------------------
  |  |  244|      0|#define ZEND_DEFINED                        122
  ------------------
  |  Branch (281:3): [True: 0, False: 1]
  ------------------
  282|      0|			if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP1_LITERAL(opline)), &result, false)) {
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  |  Branch (282:8): [True: 0, False: 0]
  ------------------
  283|      0|				break;
  284|      0|			}
  285|      0|			ZVAL_TRUE(&result);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  286|      0|			literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  287|      0|			replace_by_const_or_qm_assign(op_array, opline, &result);
  288|      0|			break;
  289|      0|		case ZEND_DECLARE_CONST:
  ------------------
  |  |  265|      0|#define ZEND_DECLARE_CONST                  143
  ------------------
  |  Branch (289:3): [True: 0, False: 1]
  ------------------
  290|      0|			if (collect_constants &&
  ------------------
  |  Branch (290:8): [True: 0, False: 0]
  ------------------
  291|      0|			    Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			    Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING &&
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (291:8): [True: 0, False: 0]
  ------------------
  292|      0|			    Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_CONSTANT_AST) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			    Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (292:8): [True: 0, False: 0]
  ------------------
  293|      0|				zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
              				zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline));
  ------------------
  |  |   30|      0|#define ZEND_OP2_LITERAL(opline)		(op_array)->literals[(opline)->op2.constant]
  ------------------
  294|      0|			}
  295|      0|			break;
  296|       |
  297|      0|		case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (297:3): [True: 0, False: 1]
  ------------------
  298|      0|		case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (298:3): [True: 0, False: 1]
  ------------------
  299|       |			/* convert Ti = JMPZ_EX(C, L) => Ti = QM_ASSIGN(C)
  300|       |			   in case we know it wouldn't jump */
  301|      0|			if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (301:8): [True: 0, False: 0]
  ------------------
  302|      0|				if (zend_is_true(&ZEND_OP1_LITERAL(opline))) {
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  |  Branch (302:9): [True: 0, False: 0]
  ------------------
  303|      0|					if (opline->opcode == ZEND_JMPZ_EX) {
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (303:10): [True: 0, False: 0]
  ------------------
  304|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  305|      0|						zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  306|      0|						ZVAL_TRUE(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  307|      0|						opline->op2.num = 0;
  308|      0|						break;
  309|      0|					}
  310|      0|				} else {
  311|      0|					if (opline->opcode == ZEND_JMPNZ_EX) {
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (311:10): [True: 0, False: 0]
  ------------------
  312|      0|						opline->opcode = ZEND_QM_ASSIGN;
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  313|      0|						zval_ptr_dtor_nogc(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  314|      0|						ZVAL_FALSE(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  315|      0|						opline->op2.num = 0;
  316|      0|						break;
  317|      0|					}
  318|      0|				}
  319|      0|			}
  320|      0|			collect_constants = false;
  321|      0|			break;
  322|       |
  323|      0|		case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (323:3): [True: 0, False: 1]
  ------------------
  324|      0|		case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (324:3): [True: 0, False: 1]
  ------------------
  325|      0|			if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (325:8): [True: 0, False: 0]
  ------------------
  326|      0|				bool should_jmp = zend_is_true(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   28|      0|#define ZEND_OP1_LITERAL(opline)		(op_array)->literals[(opline)->op1.constant]
  ------------------
  327|       |
  328|      0|				if (opline->opcode == ZEND_JMPZ) {
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (328:9): [True: 0, False: 0]
  ------------------
  329|      0|					should_jmp = !should_jmp;
  330|      0|				}
  331|      0|				literal_dtor(&ZEND_OP1_LITERAL(opline));
  ------------------
  |  |   64|      0|#define literal_dtor(zv) do { \
  |  |   65|      0|		zval_ptr_dtor_nogc(zv); \
  |  |   66|      0|		ZVAL_NULL(zv); \
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (67:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  332|      0|				opline->op1_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  333|      0|				if (should_jmp) {
  ------------------
  |  Branch (333:9): [True: 0, False: 0]
  ------------------
  334|      0|					opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  335|      0|					COPY_NODE(opline->op1, opline->op2);
  ------------------
  |  |   69|      0|#define COPY_NODE(target, src) do { \
  |  |   70|      0|		target ## _type = src ## _type; \
  |  |   71|      0|		target = src; \
  |  |   72|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (72:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  336|      0|					opline->op2.num = 0;
  337|      0|				} else {
  338|      0|					MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  339|      0|					break;
  340|      0|				}
  341|      0|			}
  342|      0|			collect_constants = false;
  343|      0|			break;
  344|       |
  345|      1|		case ZEND_RETURN:
  ------------------
  |  |  185|      1|#define ZEND_RETURN                          62
  ------------------
  |  Branch (345:3): [True: 1, False: 0]
  ------------------
  346|      1|		case ZEND_RETURN_BY_REF:
  ------------------
  |  |  233|      1|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (346:3): [True: 0, False: 1]
  ------------------
  347|      1|		case ZEND_GENERATOR_RETURN:
  ------------------
  |  |  283|      1|#define ZEND_GENERATOR_RETURN               161
  ------------------
  |  Branch (347:3): [True: 0, False: 1]
  ------------------
  348|      1|		case ZEND_THROW:
  ------------------
  |  |  230|      1|#define ZEND_THROW                          108
  ------------------
  |  Branch (348:3): [True: 0, False: 1]
  ------------------
  349|      1|		case ZEND_MATCH_ERROR:
  ------------------
  |  |  319|      1|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (349:3): [True: 0, False: 1]
  ------------------
  350|      1|		case ZEND_CATCH:
  ------------------
  |  |  229|      1|#define ZEND_CATCH                          107
  ------------------
  |  Branch (350:3): [True: 0, False: 1]
  ------------------
  351|      1|		case ZEND_FAST_CALL:
  ------------------
  |  |  284|      1|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (351:3): [True: 0, False: 1]
  ------------------
  352|      1|		case ZEND_FAST_RET:
  ------------------
  |  |  285|      1|#define ZEND_FAST_RET                       163
  ------------------
  |  Branch (352:3): [True: 0, False: 1]
  ------------------
  353|      1|		case ZEND_JMP:
  ------------------
  |  |  166|      1|#define ZEND_JMP                             42
  ------------------
  |  Branch (353:3): [True: 0, False: 1]
  ------------------
  354|      1|		case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      1|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (354:3): [True: 0, False: 1]
  ------------------
  355|      1|		case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      1|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (355:3): [True: 0, False: 1]
  ------------------
  356|      1|		case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      1|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (356:3): [True: 0, False: 1]
  ------------------
  357|      1|		case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      1|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (357:3): [True: 0, False: 1]
  ------------------
  358|      1|		case ZEND_JMP_SET:
  ------------------
  |  |  274|      1|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (358:3): [True: 0, False: 1]
  ------------------
  359|      1|		case ZEND_COALESCE:
  ------------------
  |  |  291|      1|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (359:3): [True: 0, False: 1]
  ------------------
  360|      1|		case ZEND_ASSERT_CHECK:
  ------------------
  |  |  273|      1|#define ZEND_ASSERT_CHECK                   151
  ------------------
  |  Branch (360:3): [True: 0, False: 1]
  ------------------
  361|      1|		case ZEND_JMP_NULL:
  ------------------
  |  |  320|      1|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (361:3): [True: 0, False: 1]
  ------------------
  362|      1|		case ZEND_VERIFY_NEVER_TYPE:
  ------------------
  |  |  323|      1|#define ZEND_VERIFY_NEVER_TYPE              201
  ------------------
  |  Branch (362:3): [True: 0, False: 1]
  ------------------
  363|      1|		case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      1|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (363:3): [True: 0, False: 1]
  ------------------
  364|      1|		case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      1|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (364:3): [True: 0, False: 1]
  ------------------
  365|      1|			collect_constants = false;
  366|      1|			break;
  367|      1|		}
  368|      1|		opline++;
  369|      1|	}
  370|      1|}

zend_optimizer_pass3:
   52|      1|{
   53|      1|	zend_op *opline;
   54|      1|	zend_op *end;
   55|      1|	zend_op *target;
   56|      1|	zend_op **jmp_hitlist;
   57|      1|	int jmp_hitlist_count;
   58|      1|	ALLOCA_FLAG(use_heap);
   59|       |
   60|      1|	jmp_hitlist = (zend_op**)do_alloca(sizeof(zend_op*)*op_array->last, use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|      1|	opline = op_array->opcodes;
   62|      1|	end =  opline + op_array->last;
   63|       |
   64|      2|	while (opline < end) {
  ------------------
  |  Branch (64:9): [True: 1, False: 1]
  ------------------
   65|       |
   66|      1|		switch (opline->opcode) {
  ------------------
  |  Branch (66:11): [True: 0, False: 1]
  ------------------
   67|      0|			case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (67:4): [True: 0, False: 1]
  ------------------
   68|      0|				jmp_hitlist_count = 0;
   69|       |
   70|      0|				target = ZEND_OP1_JMP_ADDR(opline);
  ------------------
  |  |   29|      0|#define ZEND_OP1_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op1)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   71|      0|				while (1) {
  ------------------
  |  Branch (71:12): [True: 0, Folded]
  ------------------
   72|      0|					if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (72:10): [True: 0, False: 0]
  ------------------
   73|       |						/* convert JMP L1 ... L1: JMP L2 to JMP L2 .. L1: JMP L2 */
   74|      0|						target = ZEND_OP1_JMP_ADDR(target);
  ------------------
  |  |   29|      0|#define ZEND_OP1_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op1)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
   76|      0|					} else if (target->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (76:17): [True: 0, False: 0]
  ------------------
   77|      0|						target = target + 1;
   78|      0|					} else {
   79|      0|						break;
   80|      0|					}
   81|      0|					ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   82|      0|				}
   83|       |
   84|      0|				if (target == opline + 1) {
  ------------------
  |  Branch (84:9): [True: 0, False: 0]
  ------------------
   85|       |					/* convert L: JMP L+1 to NOP */
   86|      0|					MAKE_NOP(opline);
  ------------------
  |  |   40|      0|#define MAKE_NOP(opline) do { \
  |  |   41|      0|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      0|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      0|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      0|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      0|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      0|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
   87|      0|				} else if ((target->opcode == ZEND_RETURN ||
  ------------------
  |  |  185|      0|#define ZEND_RETURN                          62
  ------------------
  |  Branch (87:17): [True: 0, False: 0]
  ------------------
   88|      0|				            target->opcode == ZEND_RETURN_BY_REF ||
  ------------------
  |  |  233|      0|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (88:17): [True: 0, False: 0]
  ------------------
   89|      0|				            target->opcode == ZEND_GENERATOR_RETURN) &&
  ------------------
  |  |  283|      0|#define ZEND_GENERATOR_RETURN               161
  ------------------
  |  Branch (89:17): [True: 0, False: 0]
  ------------------
   90|      0|				           !(op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)) {
  ------------------
  |  |  361|      0|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (90:16): [True: 0, False: 0]
  ------------------
   91|       |					/* JMP L, L: RETURN to immediate RETURN */
   92|      0|					*opline = *target;
   93|      0|					if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (93:10): [True: 0, False: 0]
  ------------------
   94|      0|						zval zv;
   95|      0|						ZVAL_COPY(&zv, &ZEND_OP1_LITERAL(opline));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   96|      0|						opline->op1.constant = zend_optimizer_add_literal(op_array, &zv);
   97|      0|					}
   98|      0|				} else if (opline > op_array->opcodes &&
  ------------------
  |  Branch (98:16): [True: 0, False: 0]
  ------------------
   99|      0|				           ((opline-1)->opcode == ZEND_JMPZ ||
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (99:17): [True: 0, False: 0]
  ------------------
  100|      0|				            (opline-1)->opcode == ZEND_JMPNZ)) {
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (100:17): [True: 0, False: 0]
  ------------------
  101|      0|				    if (ZEND_OP2_JMP_ADDR(opline-1) == target) {
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (101:13): [True: 0, False: 0]
  ------------------
  102|       |						/* JMPZ(X,L1), JMP(L1) -> NOP, JMP(L1) */
  103|      0|						zend_optimizer_convert_to_free_op1(op_array, opline - 1);
  104|      0|				    }
  105|      0|				}
  106|      0|				break;
  107|       |
  108|      0|			case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (108:4): [True: 0, False: 1]
  ------------------
  109|      0|			case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (109:4): [True: 0, False: 1]
  ------------------
  110|      0|				jmp_hitlist_count = 0;
  111|       |
  112|      0|				target = ZEND_OP2_JMP_ADDR(opline);
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|      0|				while (1) {
  ------------------
  |  Branch (113:12): [True: 0, Folded]
  ------------------
  114|      0|					if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (114:10): [True: 0, False: 0]
  ------------------
  115|      0|						target = ZEND_OP1_JMP_ADDR(target);
  ------------------
  |  |   29|      0|#define ZEND_OP1_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op1)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  117|      0|					} else if (target->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (117:17): [True: 0, False: 0]
  ------------------
  118|      0|						target = target + 1;
  119|      0|					} else {
  120|      0|						break;
  121|      0|					}
  122|      0|					ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  123|      0|				}
  124|      0|				break;
  125|       |
  126|      0|			case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (126:4): [True: 0, False: 1]
  ------------------
  127|      0|			case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (127:4): [True: 0, False: 1]
  ------------------
  128|      0|				jmp_hitlist_count = 0;
  129|       |
  130|      0|				target = ZEND_OP2_JMP_ADDR(opline);
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  131|      0|				while (1) {
  ------------------
  |  Branch (131:12): [True: 0, Folded]
  ------------------
  132|      0|					if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (132:10): [True: 0, False: 0]
  ------------------
  133|       |						/* plain JMP */
  134|       |						/* JMPZ(X,L1), L1: JMP(L2) => JMPZ(X,L2), L1: JMP(L2) */
  135|      0|						target = ZEND_OP1_JMP_ADDR(target);
  ------------------
  |  |   29|      0|#define ZEND_OP1_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op1)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  137|      0|					} else if (target->opcode == opline->opcode &&
  ------------------
  |  Branch (137:17): [True: 0, False: 0]
  ------------------
  138|      0|					           SAME_VAR(opline->op1, target->op1)) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  139|       |						/* same opcode and same var as this opcode */
  140|       |						/* JMPZ(X,L1), L1: JMPZ(X,L2) => JMPZ(X,L2), L1: JMPZ(X,L2) */
  141|      0|						target = ZEND_OP2_JMP_ADDR(target);
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  143|      0|					} else if (target->opcode == INV_COND(opline->opcode) &&
  ------------------
  |  |   36|      0|#define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  168|      0|#define ZEND_JMPNZ                           44
  |  |  ------------------
  |  |               #define INV_COND(op)       ((op) == ZEND_JMPZ    ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |  |  Branch (36:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (143:17): [True: 0, False: 0]
  ------------------
  144|      0|					           SAME_VAR(opline->op1, target->op1)) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  145|       |						/* convert JMPZ(X,L1), L1: JMPNZ(X,L2) to
  146|       |						   JMPZ(X,L1+1) */
  147|      0|						target = target + 1;
  148|      0|					} else if (target->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (148:17): [True: 0, False: 0]
  ------------------
  149|      0|						target = target + 1;
  150|      0|					} else {
  151|      0|						break;
  152|      0|					}
  153|      0|					ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  154|      0|				}
  155|       |
  156|       |				/* convert L: JMPZ L+1 to NOP */
  157|      0|				if (target == opline + 1) {
  ------------------
  |  Branch (157:9): [True: 0, False: 0]
  ------------------
  158|      0|					zend_optimizer_convert_to_free_op1(op_array, opline);
  159|      0|				}
  160|      0|				break;
  161|       |
  162|      0|			case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (162:4): [True: 0, False: 1]
  ------------------
  163|      0|			case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (163:4): [True: 0, False: 1]
  ------------------
  164|      0|				jmp_hitlist_count = 0;
  165|       |
  166|      0|				target = ZEND_OP2_JMP_ADDR(opline);
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  167|      0|				while (1) {
  ------------------
  |  Branch (167:12): [True: 0, Folded]
  ------------------
  168|      0|					if (target->opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (168:10): [True: 0, False: 0]
  ------------------
  169|       |						/* plain JMP */
  170|       |						/* JMPZ_EX(X,L1), L1: JMP(L2) => JMPZ_EX(X,L2), L1: JMP(L2) */
  171|      0|						target = ZEND_OP1_JMP_ADDR(target);
  ------------------
  |  |   29|      0|#define ZEND_OP1_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op1)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  173|      0|					} else if (target->opcode == opline->opcode-3 &&
  ------------------
  |  Branch (173:17): [True: 0, False: 0]
  ------------------
  174|      0|					           (SAME_VAR(target->op1, opline->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  175|      0|					            SAME_VAR(target->op1, opline->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  176|       |						/* convert T=JMPZ_EX(X,L1), L1: JMPZ(T,L2) to
  177|       |						   JMPZ_EX(X,L2) */
  178|      0|						target = ZEND_OP2_JMP_ADDR(target);
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  180|      0|					} else if (target->opcode == opline->opcode &&
  ------------------
  |  Branch (180:17): [True: 0, False: 0]
  ------------------
  181|      0|					           target->result.var == opline->result.var &&
  ------------------
  |  Branch (181:17): [True: 0, False: 0]
  ------------------
  182|      0|					           (SAME_VAR(target->op1, opline->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  183|      0|					            SAME_VAR(target->op1, opline->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  184|       |						/* convert T=JMPZ_EX(X,L1), L1: T=JMPZ_EX(T,L2) to
  185|       |						   JMPZ_EX(X,L2) */
  186|      0|						target = ZEND_OP2_JMP_ADDR(target);
  ------------------
  |  |   31|      0|#define ZEND_OP2_JMP_ADDR(opline)		OP_JMP_ADDR(opline, (opline)->op2)
  |  |  ------------------
  |  |  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  |  |  ------------------
  |  |  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  188|      0|					} else if (target->opcode == INV_EX_COND(opline->opcode) &&
  ------------------
  |  |   37|      0|#define INV_EX_COND(op)    ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  |  |  ------------------
  |  |               #define INV_EX_COND(op)    ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  168|      0|#define ZEND_JMPNZ                           44
  |  |  ------------------
  |  |               #define INV_EX_COND(op)    ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ    : ZEND_JMPZ)
  |  |  ------------------
  |  |  |  |  167|      0|#define ZEND_JMPZ                            43
  |  |  ------------------
  |  |  |  Branch (37:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (188:17): [True: 0, False: 0]
  ------------------
  189|      0|					           (SAME_VAR(target->op1, opline->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  190|      0|					            SAME_VAR(target->op1, opline->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  191|       |					   /* convert T=JMPZ_EX(X,L1), L1: JMPNZ(T,L2) to
  192|       |						  JMPZ_EX(X,L1+1) */
  193|      0|						target = target + 1;
  194|      0|					} else if (target->opcode == INV_EX_COND_EX(opline->opcode) &&
  ------------------
  |  |   39|      0|#define INV_EX_COND_EX(op) ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ_EX : ZEND_JMPZ_EX)
  |  |  ------------------
  |  |  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  |  |  ------------------
  |  |               #define INV_EX_COND_EX(op) ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ_EX : ZEND_JMPZ_EX)
  |  |  ------------------
  |  |  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  |  |  ------------------
  |  |               #define INV_EX_COND_EX(op) ((op) == ZEND_JMPZ_EX ? ZEND_JMPNZ_EX : ZEND_JMPZ_EX)
  |  |  ------------------
  |  |  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  |  |  ------------------
  |  |  |  Branch (39:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (194:17): [True: 0, False: 0]
  ------------------
  195|      0|					           target->result.var == opline->result.var &&
  ------------------
  |  Branch (195:17): [True: 0, False: 0]
  ------------------
  196|      0|					           (SAME_VAR(target->op1, opline->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  197|      0|					            SAME_VAR(target->op1, opline->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|       |					   /* convert T=JMPZ_EX(X,L1), L1: T=JMPNZ_EX(T,L2) to
  199|       |						  JMPZ_EX(X,L1+1) */
  200|      0|						target = target + 1;
  201|      0|					} else if (target->opcode == ZEND_BOOL &&
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (201:17): [True: 0, False: 0]
  ------------------
  202|      0|					           (SAME_VAR(target->op1, opline->result) ||
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  203|      0|					            SAME_VAR(target->op1, opline->op1))) {
  ------------------
  |  |   42|      0|#define SAME_VAR(op1, op2)  (op1 ## _type == op2 ## _type && op1.var == op2.var)
  |  |  ------------------
  |  |  |  Branch (42:30): [True: 0, False: 0]
  |  |  |  Branch (42:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  204|       |						/* convert Y = JMPZ_EX(X,L1), L1: Z = BOOL(Y) to
  205|       |						   Z = JMPZ_EX(X,L1+1) */
  206|       |
  207|       |						/* NOTE: This optimization pattern is not safe, but works, */
  208|       |						/*       because result of JMPZ_EX instruction             */
  209|       |						/*       is not used on the following path and             */
  210|       |						/*       should be used once on the branch path.           */
  211|       |						/*                                                         */
  212|       |						/*       The pattern works well only if jumps processed in */
  213|       |						/*       direct order, otherwise it breaks JMPZ_EX         */
  214|       |						/*       sequences too early.                              */
  215|      0|						opline->result.var = target->result.var;
  216|      0|						target = target + 1;
  217|      0|						CHECK_LOOP(target);
  ------------------
  |  |   45|      0|	if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|		jmp_hitlist[jmp_hitlist_count++] = target;	\
  |  |   47|      0|	} else { \
  |  |   48|      0|		break; \
  |  |   49|      0|	}
  ------------------
  218|      0|					} else if (target->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (218:17): [True: 0, False: 0]
  ------------------
  219|      0|						target = target + 1;
  220|      0|					} else {
  221|      0|						break;
  222|      0|					}
  223|      0|					ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target);
  ------------------
  |  |  799|      0|# define ZEND_SET_OP_JMP_ADDR(opline, node, val) do { \
  |  |  800|      0|		(node).jmp_offset = ZEND_OPLINE_TO_OFFSET(opline, val); \
  |  |  ------------------
  |  |  |  |  762|      0|	((char*)(target) - (char*)(opline))
  |  |  ------------------
  |  |  801|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (801:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  224|      0|				}
  225|       |
  226|       |				/* convert L: T = JMPZ_EX X,L+1 to T = BOOL(X) */
  227|      0|				if (target == opline + 1) {
  ------------------
  |  Branch (227:9): [True: 0, False: 0]
  ------------------
  228|      0|					opline->opcode = ZEND_BOOL;
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  229|      0|					opline->op2.num = 0;
  230|      0|				}
  231|      0|				break;
  232|      1|		}
  233|      1|		opline++;
  234|      1|	}
  235|      1|	free_alloca(jmp_hitlist, use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|      1|}

sccp_optimize_op_array:
 2471|      1|{
 2472|      1|	sccp_ctx sccp;
 2473|      1|	uint32_t removed_ops = 0;
 2474|      1|	void *checkpoint = zend_arena_checkpoint(ctx->arena);
 2475|       |
 2476|      1|	sccp_context_init(ctx, &sccp, ssa, op_array, call_map);
 2477|       |
 2478|      1|	sccp.scdf.handlers.visit_instr = sccp_visit_instr;
 2479|      1|	sccp.scdf.handlers.visit_phi = sccp_visit_phi;
 2480|      1|	sccp.scdf.handlers.mark_feasible_successors = sccp_mark_feasible_successors;
 2481|       |
 2482|      1|	scdf_init(ctx, &sccp.scdf, op_array, ssa);
 2483|      1|	scdf_solve(&sccp.scdf, "SCCP");
 2484|       |
 2485|      1|	if (ctx->debug_level & ZEND_DUMP_SCCP) {
  ------------------
  |  |   82|      1|#define ZEND_DUMP_SCCP              (1<<29)
  ------------------
  |  Branch (2485:6): [True: 0, False: 1]
  ------------------
 2486|      0|		int i, first = 1;
 2487|       |
 2488|      0|		for (i = op_array->last_var; i < ssa->vars_count; i++) {
  ------------------
  |  Branch (2488:32): [True: 0, False: 0]
  ------------------
 2489|      0|			zval *zv = &sccp.values[i];
 2490|       |
 2491|      0|			if (IS_TOP(zv) || IS_BOT(zv)) {
  ------------------
  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  ------------------
  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (IS_TOP(zv) || IS_BOT(zv)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2492|      0|				continue;
 2493|      0|			}
 2494|      0|			if (first) {
  ------------------
  |  Branch (2494:8): [True: 0, False: 0]
  ------------------
 2495|      0|				first = 0;
 2496|      0|				fprintf(stderr, "\nSCCP Values for \"");
 2497|      0|				zend_dump_op_array_name(op_array);
 2498|      0|				fprintf(stderr, "\":\n");
 2499|      0|			}
 2500|      0|			fprintf(stderr, "    #%d.", i);
 2501|      0|			zend_dump_var(op_array, IS_CV, ssa->vars[i].var);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 2502|      0|			fprintf(stderr, " =");
 2503|      0|			scp_dump_value(zv);
 2504|      0|			fprintf(stderr, "\n");
 2505|      0|		}
 2506|      0|	}
 2507|       |
 2508|      1|	removed_ops += scdf_remove_unreachable_blocks(&sccp.scdf);
 2509|      1|	removed_ops += replace_constant_operands(&sccp);
 2510|       |
 2511|      1|	sccp_context_free(&sccp);
 2512|      1|	zend_arena_release(&ctx->arena, checkpoint);
 2513|       |
 2514|      1|	return removed_ops;
 2515|      1|}
sccp.c:sccp_context_init:
 2440|      1|		zend_ssa *ssa, zend_op_array *op_array, zend_call_info **call_map) {
 2441|      1|	int i;
 2442|      1|	sccp->call_map = call_map;
 2443|      1|	sccp->values = zend_arena_alloc(&ctx->arena, sizeof(zval) * ssa->vars_count);
 2444|       |
 2445|      1|	MAKE_TOP(&sccp->top);
  ------------------
  |  |   96|      1|#define MAKE_TOP(zv) (Z_TYPE_INFO_P(zv) = TOP)
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_TOP(zv) (Z_TYPE_INFO_P(zv) = TOP)
  |  |  ------------------
  |  |  |  |   84|      1|#define TOP ((uint8_t)-1)
  |  |  ------------------
  ------------------
 2446|      1|	MAKE_BOT(&sccp->bot);
  ------------------
  |  |   97|      1|#define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |   85|      1|#define BOT ((uint8_t)-2)
  |  |  ------------------
  ------------------
 2447|       |
 2448|      1|	i = 0;
 2449|      1|	for (; i < op_array->last_var; ++i) {
  ------------------
  |  Branch (2449:9): [True: 0, False: 1]
  ------------------
 2450|       |		/* These are all undefined variables, which we have to mark BOT.
 2451|       |		 * Otherwise the undefined variable warning might not be preserved. */
 2452|      0|		MAKE_BOT(&sccp->values[i]);
  ------------------
  |  |   97|      0|#define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  ------------------
 2453|      0|	}
 2454|      1|	for (; i < ssa->vars_count; ++i) {
  ------------------
  |  Branch (2454:9): [True: 0, False: 1]
  ------------------
 2455|      0|		if (ssa->vars[i].alias) {
  ------------------
  |  Branch (2455:7): [True: 0, False: 0]
  ------------------
 2456|      0|			MAKE_BOT(&sccp->values[i]);
  ------------------
  |  |   97|      0|#define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  ------------------
 2457|      0|		} else {
 2458|      0|			MAKE_TOP(&sccp->values[i]);
  ------------------
  |  |   96|      0|#define MAKE_TOP(zv) (Z_TYPE_INFO_P(zv) = TOP)
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_TOP(zv) (Z_TYPE_INFO_P(zv) = TOP)
  |  |  ------------------
  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  ------------------
  ------------------
 2459|      0|		}
 2460|      0|	}
 2461|      1|}
sccp.c:sccp_visit_instr:
  872|      1|static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_op) {
  873|      1|	sccp_ctx *ctx = (sccp_ctx *) scdf;
  874|      1|	zval *op1, *op2, zv; /* zv is a temporary to hold result values */
  875|       |
  876|      1|	op1 = get_op1_value(ctx, opline, ssa_op);
  877|      1|	op2 = get_op2_value(ctx, opline, ssa_op);
  878|       |
  879|      1|	switch (opline->opcode) {
  ------------------
  |  Branch (879:10): [True: 0, False: 1]
  ------------------
  880|      0|		case ZEND_ASSIGN:
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (880:3): [True: 0, False: 1]
  ------------------
  881|       |			/* The value of op1 is irrelevant here, because we are overwriting it
  882|       |			 * -- unless it can be a reference, in which case we propagate a BOT.
  883|       |			 * The result is also BOT in this case, because it might be a typed reference. */
  884|      0|			if (IS_BOT(op1) && (ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (IS_BOT(op1) && (ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (884:23): [True: 0, False: 0]
  ------------------
  885|      0|				SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  886|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  887|      0|			} else {
  888|      0|				SET_RESULT(op1, op2);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  889|      0|				SET_RESULT(result, op2);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  890|      0|			}
  891|      0|			return;
  892|      0|		case ZEND_ASSIGN_DIM:
  ------------------
  |  |  147|      0|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (892:3): [True: 0, False: 1]
  ------------------
  893|      0|		{
  894|      0|			zval *data = get_op1_value(ctx, opline+1, ssa_op+1);
  895|       |
  896|       |			/* If $a in $a[$b]=$c is UNDEF, treat it like NULL. There is no warning. */
  897|      0|			if ((ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_ANY) == 0) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (897:8): [True: 0, False: 0]
  ------------------
  898|      0|				op1 = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  899|      0|			}
  900|       |
  901|      0|			if (IS_BOT(op1)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  902|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  903|      0|				SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|      0|				return;
  905|      0|			}
  906|       |
  907|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  908|      0|			SKIP_IF_TOP(data);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  909|      0|			if (op2) {
  ------------------
  |  Branch (909:8): [True: 0, False: 0]
  ------------------
  910|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  911|      0|			}
  912|       |
  913|      0|			if (op2 && IS_BOT(op2)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (913:8): [True: 0, False: 0]
  ------------------
  914|       |				/* Update of unknown index */
  915|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  916|      0|				if (ssa_op->op1_def >= 0) {
  ------------------
  |  Branch (916:9): [True: 0, False: 0]
  ------------------
  917|      0|					empty_partial_array(&zv);
  918|      0|					SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  919|      0|					zval_ptr_dtor_nogc(&zv);
  920|      0|				} else {
  921|      0|					SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  922|      0|				}
  923|      0|				return;
  924|      0|			}
  925|       |
  926|      0|			if (IS_BOT(data)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  927|       |
  928|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  929|      0|				if ((IS_PARTIAL_ARRAY(op1)
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  930|      0|						|| Z_TYPE_P(op1) == IS_NULL
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						|| Z_TYPE_P(op1) == IS_NULL
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (930:10): [True: 0, False: 0]
  ------------------
  931|      0|						|| Z_TYPE_P(op1) == IS_FALSE
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						|| Z_TYPE_P(op1) == IS_FALSE
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (931:10): [True: 0, False: 0]
  ------------------
  932|      0|						|| Z_TYPE_P(op1) == IS_ARRAY)
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						|| Z_TYPE_P(op1) == IS_ARRAY)
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (932:10): [True: 0, False: 0]
  ------------------
  933|      0|					&& ssa_op->op1_def >= 0) {
  ------------------
  |  Branch (933:9): [True: 0, False: 0]
  ------------------
  934|       |
  935|      0|					if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
              					if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (935:10): [True: 0, False: 0]
  |  Branch (935:38): [True: 0, False: 0]
  ------------------
  936|      0|						empty_partial_array(&zv);
  937|      0|					} else {
  938|      0|						dup_partial_array(&zv, op1);
  939|      0|					}
  940|       |
  941|      0|					if (!op2) {
  ------------------
  |  Branch (941:10): [True: 0, False: 0]
  ------------------
  942|       |						/* We can't add NEXT element into partial array (skip it) */
  943|      0|						SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  944|      0|					} else if (ct_eval_del_array_elem(&zv, op2) == SUCCESS) {
  ------------------
  |  Branch (944:17): [True: 0, False: 0]
  ------------------
  945|      0|						SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  946|      0|					} else {
  947|      0|						SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  948|      0|					}
  949|       |
  950|      0|					zval_ptr_dtor_nogc(&zv);
  951|      0|				} else {
  952|      0|					SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  953|      0|				}
  954|       |
  955|      0|			} else {
  956|       |
  957|      0|				if (IS_PARTIAL_ARRAY(op1)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  958|      0|					dup_partial_array(&zv, op1);
  959|      0|				} else {
  960|      0|					ZVAL_COPY(&zv, op1);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  961|      0|				}
  962|       |
  963|      0|				if (!op2 && IS_PARTIAL_ARRAY(&zv)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (963:9): [True: 0, False: 0]
  ------------------
  964|       |					/* We can't add NEXT element into partial array (skip it) */
  965|      0|					SET_RESULT(result, data);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  966|      0|					SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  967|      0|				} else if (ct_eval_assign_dim(&zv, data, op2) == SUCCESS) {
  ------------------
  |  Branch (967:16): [True: 0, False: 0]
  ------------------
  968|       |					/* Mark array containing partial array as partial */
  969|      0|					if (IS_PARTIAL_ARRAY(data) || IS_PARTIAL_OBJECT(data)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					if (IS_PARTIAL_ARRAY(data) || IS_PARTIAL_OBJECT(data)) {
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  970|      0|						MAKE_PARTIAL_ARRAY(&zv);
  ------------------
  |  |   93|      0|#define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
  971|      0|					}
  972|      0|					SET_RESULT(result, data);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  973|      0|					SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  974|      0|				} else {
  975|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  976|      0|					SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  977|      0|				}
  978|       |
  979|      0|				zval_ptr_dtor_nogc(&zv);
  980|      0|			}
  981|      0|			return;
  982|      0|		}
  983|       |
  984|      0|		case ZEND_ASSIGN_OBJ:
  ------------------
  |  |  148|      0|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (984:3): [True: 0, False: 1]
  ------------------
  985|      0|			if (ssa_op->op1_def >= 0
  ------------------
  |  Branch (985:8): [True: 0, False: 0]
  ------------------
  986|      0|					&& ctx->scdf.ssa->vars[ssa_op->op1_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (986:9): [True: 0, False: 0]
  ------------------
  987|      0|				zval *data = get_op1_value(ctx, opline+1, ssa_op+1);
  988|      0|				zend_ssa_var_info *var_info = &ctx->scdf.ssa->var_info[ssa_op->op1_use];
  989|       |
  990|       |				/* Don't try to propagate assignments to (potentially) typed properties. We would
  991|       |				 * need to deal with errors and type conversions first. */
  992|       |				// TODO: Distinguish dynamic and declared property assignments here?
  993|      0|				if (!var_info->ce || (var_info->ce->ce_flags & ZEND_ACC_HAS_TYPE_HINTS) ||
  ------------------
  |  |  244|      0|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
  |  Branch (993:9): [True: 0, False: 0]
  |  Branch (993:26): [True: 0, False: 0]
  ------------------
  994|      0|						!(var_info->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (994:7): [True: 0, False: 0]
  ------------------
  995|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  996|      0|					SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  997|      0|					return;
  998|      0|				}
  999|       |
 1000|      0|				if (IS_BOT(op1)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1001|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1002|      0|					SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1003|      0|					return;
 1004|      0|				}
 1005|       |
 1006|      0|				SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1007|      0|				SKIP_IF_TOP(data);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1008|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1009|       |
 1010|      0|				if (IS_BOT(op2)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1011|       |					/* Update of unknown property */
 1012|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1013|      0|					empty_partial_object(&zv);
 1014|      0|					SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1015|      0|					zval_ptr_dtor_nogc(&zv);
 1016|      0|					return;
 1017|      0|				}
 1018|       |
 1019|      0|				if (IS_BOT(data)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1020|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1021|      0|					if (IS_PARTIAL_OBJECT(op1)
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1022|      0|							|| Z_TYPE_P(op1) == IS_NULL
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							|| Z_TYPE_P(op1) == IS_NULL
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (1022:11): [True: 0, False: 0]
  ------------------
 1023|      0|							|| Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							|| Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1023:11): [True: 0, False: 0]
  ------------------
 1024|       |
 1025|      0|						if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
              						if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1025:11): [True: 0, False: 0]
  |  Branch (1025:39): [True: 0, False: 0]
  ------------------
 1026|      0|							empty_partial_object(&zv);
 1027|      0|						} else {
 1028|      0|							dup_partial_object(&zv, op1);
 1029|      0|						}
 1030|       |
 1031|      0|						if (ct_eval_del_obj_prop(&zv, op2) == SUCCESS) {
  ------------------
  |  Branch (1031:11): [True: 0, False: 0]
  ------------------
 1032|      0|							SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1033|      0|						} else {
 1034|      0|							SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1035|      0|						}
 1036|      0|						zval_ptr_dtor_nogc(&zv);
 1037|      0|					} else {
 1038|      0|						SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1039|      0|					}
 1040|       |
 1041|      0|				} else {
 1042|       |
 1043|      0|					if (IS_PARTIAL_OBJECT(op1)) {
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1044|      0|						dup_partial_object(&zv, op1);
 1045|      0|					} else {
 1046|      0|						ZVAL_COPY(&zv, op1);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1047|      0|					}
 1048|       |
 1049|      0|					if (ct_eval_assign_obj(&zv, data, op2) == SUCCESS) {
  ------------------
  |  Branch (1049:10): [True: 0, False: 0]
  ------------------
 1050|      0|						SET_RESULT(result, data);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1051|      0|						SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1052|      0|					} else {
 1053|      0|						SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1054|      0|						SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1055|      0|					}
 1056|       |
 1057|      0|					zval_ptr_dtor_nogc(&zv);
 1058|      0|				}
 1059|      0|			} else {
 1060|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1061|      0|				SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1062|      0|			}
 1063|      0|			return;
 1064|       |
 1065|      0|		case ZEND_SEND_VAL:
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (1065:3): [True: 0, False: 1]
  ------------------
 1066|      0|		case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (1066:3): [True: 0, False: 1]
  ------------------
 1067|      0|		{
 1068|       |			/* If the value of a SEND for an ICALL changes, we need to reconsider the
 1069|       |			 * ICALL result value. Otherwise we can ignore the opcode. */
 1070|      0|			zend_call_info *call;
 1071|      0|			if (!ctx->call_map) {
  ------------------
  |  Branch (1071:8): [True: 0, False: 0]
  ------------------
 1072|      0|				return;
 1073|      0|			}
 1074|       |
 1075|      0|			call = ctx->call_map[opline - ctx->scdf.op_array->opcodes];
 1076|      0|			if (IS_TOP(op1) || !call || !call->caller_call_opline
  ------------------
  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  ------------------
  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1076:23): [True: 0, False: 0]
  |  Branch (1076:32): [True: 0, False: 0]
  ------------------
 1077|      0|					|| call->caller_call_opline->opcode != ZEND_DO_ICALL) {
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (1077:9): [True: 0, False: 0]
  ------------------
 1078|      0|				return;
 1079|      0|			}
 1080|       |
 1081|      0|			opline = call->caller_call_opline;
 1082|      0|			ssa_op = &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes];
 1083|      0|			break;
 1084|      0|		}
 1085|      0|		case ZEND_INIT_ARRAY:
  ------------------
  |  |  194|      0|#define ZEND_INIT_ARRAY                      71
  ------------------
  |  Branch (1085:3): [True: 0, False: 1]
  ------------------
 1086|      0|		case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (1086:3): [True: 0, False: 1]
  ------------------
 1087|      0|		{
 1088|      0|			zval *result = NULL;
 1089|       |
 1090|      0|			if (opline->opcode == ZEND_ADD_ARRAY_ELEMENT) {
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (1090:8): [True: 0, False: 0]
  ------------------
 1091|      0|				result = &ctx->values[ssa_op->result_use];
 1092|      0|				if (IS_BOT(result)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1093|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|      0|					SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1095|      0|					return;
 1096|      0|				}
 1097|      0|				SKIP_IF_TOP(result);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1098|      0|			}
 1099|       |
 1100|      0|			if (op1) {
  ------------------
  |  Branch (1100:8): [True: 0, False: 0]
  ------------------
 1101|      0|				SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1102|      0|			}
 1103|       |
 1104|      0|			if (op2) {
  ------------------
  |  Branch (1104:8): [True: 0, False: 0]
  ------------------
 1105|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1106|      0|				if (Z_TYPE_P(op2) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(op2) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (1106:9): [True: 0, False: 0]
  ------------------
 1107|       |					/* Emits deprecation at run-time. */
 1108|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|      0|					return;
 1110|      0|				}
 1111|      0|			}
 1112|       |
 1113|       |			/* We want to avoid keeping around intermediate arrays for each SSA variable in the
 1114|       |			 * ADD_ARRAY_ELEMENT chain. We do this by only keeping the array on the last opcode
 1115|       |			 * and use a NULL value everywhere else. */
 1116|      0|			if (result && Z_TYPE_P(result) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (result && Z_TYPE_P(result) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (1116:8): [True: 0, False: 0]
  |  Branch (1116:18): [True: 0, False: 0]
  ------------------
 1117|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1118|      0|				return;
 1119|      0|			}
 1120|       |
 1121|      0|			if (op2 && IS_BOT(op2)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1121:8): [True: 0, False: 0]
  ------------------
 1122|       |				/* Update of unknown index */
 1123|      0|				SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1124|      0|				if (ssa_op->result_def >= 0) {
  ------------------
  |  Branch (1124:9): [True: 0, False: 0]
  ------------------
 1125|      0|					empty_partial_array(&zv);
 1126|      0|					SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1127|      0|					zval_ptr_dtor_nogc(&zv);
 1128|      0|				} else {
 1129|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1130|      0|				}
 1131|      0|				return;
 1132|      0|			}
 1133|       |
 1134|      0|			if ((op1 && IS_BOT(op1))
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1134:9): [True: 0, False: 0]
  ------------------
 1135|      0|					|| (opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  | 1209|      0|#define ZEND_ARRAY_ELEMENT_REF		(1<<0)
  ------------------
  |  Branch (1135:9): [True: 0, False: 0]
  ------------------
 1136|       |
 1137|      0|				SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1138|      0|				if (ssa_op->result_def >= 0) {
  ------------------
  |  Branch (1138:9): [True: 0, False: 0]
  ------------------
 1139|      0|					if (!result) {
  ------------------
  |  Branch (1139:10): [True: 0, False: 0]
  ------------------
 1140|      0|						empty_partial_array(&zv);
 1141|      0|					} else {
 1142|      0|						MAKE_PARTIAL_ARRAY(result);
  ------------------
  |  |   93|      0|#define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
 1143|      0|						ZVAL_COPY_VALUE(&zv, result);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1144|      0|						ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1145|      0|					}
 1146|      0|					if (!op2) {
  ------------------
  |  Branch (1146:10): [True: 0, False: 0]
  ------------------
 1147|       |						/* We can't add NEXT element into partial array (skip it) */
 1148|      0|						SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1149|      0|					} else if (ct_eval_del_array_elem(&zv, op2) == SUCCESS) {
  ------------------
  |  Branch (1149:17): [True: 0, False: 0]
  ------------------
 1150|      0|						SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1151|      0|					} else {
 1152|      0|						SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1153|      0|					}
 1154|      0|					zval_ptr_dtor_nogc(&zv);
 1155|      0|				} else {
 1156|       |					/* If any operand is BOT, mark the result as BOT right away.
 1157|       |					 * Exceptions to this rule are handled above. */
 1158|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1159|      0|				}
 1160|       |
 1161|      0|			} else {
 1162|      0|				if (result) {
  ------------------
  |  Branch (1162:9): [True: 0, False: 0]
  ------------------
 1163|      0|					ZVAL_COPY_VALUE(&zv, result);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1164|      0|					ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1165|      0|				} else {
 1166|      0|					array_init(&zv);
 1167|      0|				}
 1168|       |
 1169|      0|				if (op1) {
  ------------------
  |  Branch (1169:9): [True: 0, False: 0]
  ------------------
 1170|      0|					if (!op2 && IS_PARTIAL_ARRAY(&zv)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1170:10): [True: 0, False: 0]
  ------------------
 1171|       |						/* We can't add NEXT element into partial array (skip it) */
 1172|      0|						SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1173|      0|					} else if (ct_eval_add_array_elem(&zv, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1173:17): [True: 0, False: 0]
  ------------------
 1174|      0|						if (IS_PARTIAL_ARRAY(op1) || IS_PARTIAL_OBJECT(op1)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              						if (IS_PARTIAL_ARRAY(op1) || IS_PARTIAL_OBJECT(op1)) {
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1175|      0|							MAKE_PARTIAL_ARRAY(&zv);
  ------------------
  |  |   93|      0|#define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define MAKE_PARTIAL_ARRAY(zv) (Z_TYPE_INFO_P(zv) = PARTIAL_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
 1176|      0|						}
 1177|      0|						SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1178|      0|					} else {
 1179|      0|						SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1180|      0|					}
 1181|      0|				} else {
 1182|      0|					SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1183|      0|				}
 1184|       |
 1185|      0|				zval_ptr_dtor_nogc(&zv);
 1186|      0|			}
 1187|      0|			return;
 1188|      0|		}
 1189|      0|		case ZEND_ADD_ARRAY_UNPACK: {
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (1189:3): [True: 0, False: 1]
  ------------------
 1190|      0|			zval *result = &ctx->values[ssa_op->result_use];
 1191|      0|			if (IS_BOT(result) || IS_BOT(op1)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (IS_BOT(result) || IS_BOT(op1)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1192|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1193|      0|				return;
 1194|      0|			}
 1195|      0|			SKIP_IF_TOP(result);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1196|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1197|       |
 1198|       |			/* See comment for ADD_ARRAY_ELEMENT. */
 1199|      0|			if (Z_TYPE_P(result) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(result) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (1199:8): [True: 0, False: 0]
  ------------------
 1200|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1201|      0|				return;
 1202|      0|			}
 1203|      0|			ZVAL_COPY_VALUE(&zv, result);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1204|      0|			ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1205|       |
 1206|      0|			if (ct_eval_add_array_unpack(&zv, op1) == SUCCESS) {
  ------------------
  |  Branch (1206:8): [True: 0, False: 0]
  ------------------
 1207|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1208|      0|			} else {
 1209|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1210|      0|			}
 1211|      0|			zval_ptr_dtor_nogc(&zv);
 1212|      0|			return;
 1213|      0|		}
 1214|      0|		case ZEND_NEW:
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (1214:3): [True: 0, False: 1]
  ------------------
 1215|      0|			if (ssa_op->result_def >= 0
  ------------------
  |  Branch (1215:8): [True: 0, False: 0]
  ------------------
 1216|      0|					&& ctx->scdf.ssa->vars[ssa_op->result_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (1216:9): [True: 0, False: 0]
  ------------------
 1217|      0|				empty_partial_object(&zv);
 1218|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1219|      0|				zval_ptr_dtor_nogc(&zv);
 1220|      0|			} else {
 1221|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1222|      0|			}
 1223|      0|			return;
 1224|      0|		case ZEND_ASSIGN_STATIC_PROP_REF:
  ------------------
  |  |  157|      0|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
  |  Branch (1224:3): [True: 0, False: 1]
  ------------------
 1225|      0|		case ZEND_ASSIGN_OBJ_REF:
  ------------------
  |  |  156|      0|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (1225:3): [True: 0, False: 1]
  ------------------
 1226|       |			/* Handled here because we also need to BOT the OP_DATA operand, while the generic
 1227|       |			 * code below will not do so. */
 1228|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1229|      0|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1230|      0|			SET_RESULT_BOT(op2);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1231|      0|			opline++;
 1232|      0|			ssa_op++;
 1233|      0|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1234|      0|			break;
 1235|      1|	}
 1236|       |
 1237|      1|	if ((op1 && IS_BOT(op1)) || (op2 && IS_BOT(op2))) {
  ------------------
  |  |   89|      1|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      1|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              	if ((op1 && IS_BOT(op1)) || (op2 && IS_BOT(op2))) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1237:7): [True: 1, False: 0]
  |  Branch (1237:31): [True: 0, False: 1]
  ------------------
 1238|       |		/* If any operand is BOT, mark the result as BOT right away.
 1239|       |		 * Exceptions to this rule are handled above. */
 1240|      0|		SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|      0|		SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1242|      0|		SET_RESULT_BOT(op2);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1243|      0|		return;
 1244|      0|	}
 1245|       |
 1246|      1|	switch (opline->opcode) {
 1247|      0|		case ZEND_ADD:
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (1247:3): [True: 0, False: 1]
  ------------------
 1248|      0|		case ZEND_SUB:
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (1248:3): [True: 0, False: 1]
  ------------------
 1249|      0|		case ZEND_MUL:
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (1249:3): [True: 0, False: 1]
  ------------------
 1250|      0|		case ZEND_DIV:
  ------------------
  |  |  128|      0|#define ZEND_DIV                              4
  ------------------
  |  Branch (1250:3): [True: 0, False: 1]
  ------------------
 1251|      0|		case ZEND_MOD:
  ------------------
  |  |  129|      0|#define ZEND_MOD                              5
  ------------------
  |  Branch (1251:3): [True: 0, False: 1]
  ------------------
 1252|      0|		case ZEND_POW:
  ------------------
  |  |  136|      0|#define ZEND_POW                             12
  ------------------
  |  Branch (1252:3): [True: 0, False: 1]
  ------------------
 1253|      0|		case ZEND_SL:
  ------------------
  |  |  130|      0|#define ZEND_SL                               6
  ------------------
  |  Branch (1253:3): [True: 0, False: 1]
  ------------------
 1254|      0|		case ZEND_SR:
  ------------------
  |  |  131|      0|#define ZEND_SR                               7
  ------------------
  |  Branch (1254:3): [True: 0, False: 1]
  ------------------
 1255|      0|		case ZEND_CONCAT:
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (1255:3): [True: 0, False: 1]
  ------------------
 1256|      0|		case ZEND_FAST_CONCAT:
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (1256:3): [True: 0, False: 1]
  ------------------
 1257|      0|		case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (1257:3): [True: 0, False: 1]
  ------------------
 1258|      0|		case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (1258:3): [True: 0, False: 1]
  ------------------
 1259|      0|		case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (1259:3): [True: 0, False: 1]
  ------------------
 1260|      0|		case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (1260:3): [True: 0, False: 1]
  ------------------
 1261|      0|		case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (1261:3): [True: 0, False: 1]
  ------------------
 1262|      0|		case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (1262:3): [True: 0, False: 1]
  ------------------
 1263|      0|		case ZEND_BW_OR:
  ------------------
  |  |  133|      0|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (1263:3): [True: 0, False: 1]
  ------------------
 1264|      0|		case ZEND_BW_AND:
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
  |  Branch (1264:3): [True: 0, False: 1]
  ------------------
 1265|      0|		case ZEND_BW_XOR:
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (1265:3): [True: 0, False: 1]
  ------------------
 1266|      0|		case ZEND_BOOL_XOR:
  ------------------
  |  |  139|      0|#define ZEND_BOOL_XOR                        15
  ------------------
  |  Branch (1266:3): [True: 0, False: 1]
  ------------------
 1267|      0|		case ZEND_CASE:
  ------------------
  |  |  171|      0|#define ZEND_CASE                            48
  ------------------
  |  Branch (1267:3): [True: 0, False: 1]
  ------------------
 1268|      0|		case ZEND_CASE_STRICT:
  ------------------
  |  |  318|      0|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (1268:3): [True: 0, False: 1]
  ------------------
 1269|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1270|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1271|       |
 1272|      0|			if (ct_eval_binary_op(&zv, opline->opcode, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1272:8): [True: 0, False: 0]
  ------------------
 1273|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1274|      0|				zval_ptr_dtor_nogc(&zv);
 1275|      0|				break;
 1276|      0|			}
 1277|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1278|      0|			break;
 1279|      0|		case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1279:3): [True: 0, False: 1]
  ------------------
 1280|      0|		case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (1280:3): [True: 0, False: 1]
  ------------------
 1281|      0|		case ZEND_ASSIGN_OBJ_OP:
  ------------------
  |  |  152|      0|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (1281:3): [True: 0, False: 1]
  ------------------
 1282|      0|		case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|      0|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (1282:3): [True: 0, False: 1]
  ------------------
 1283|      0|			if (op1) {
  ------------------
  |  Branch (1283:8): [True: 0, False: 0]
  ------------------
 1284|      0|				SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1285|      0|			}
 1286|      0|			if (op2) {
  ------------------
  |  Branch (1286:8): [True: 0, False: 0]
  ------------------
 1287|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1288|      0|			}
 1289|      0|			if (opline->opcode == ZEND_ASSIGN_OP) {
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (1289:8): [True: 0, False: 0]
  ------------------
 1290|      0|				if (ct_eval_binary_op(&zv, opline->extended_value, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1290:9): [True: 0, False: 0]
  ------------------
 1291|      0|					SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1292|      0|					SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1293|      0|					zval_ptr_dtor_nogc(&zv);
 1294|      0|					break;
 1295|      0|				}
 1296|      0|			} else if (opline->opcode == ZEND_ASSIGN_DIM_OP) {
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (1296:15): [True: 0, False: 0]
  ------------------
 1297|      0|				if ((IS_PARTIAL_ARRAY(op1) || Z_TYPE_P(op1) == IS_ARRAY)
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              				if ((IS_PARTIAL_ARRAY(op1) || Z_TYPE_P(op1) == IS_ARRAY)
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if ((IS_PARTIAL_ARRAY(op1) || Z_TYPE_P(op1) == IS_ARRAY)
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1297:35): [True: 0, False: 0]
  ------------------
 1298|      0|						&& ssa_op->op1_def >= 0 && op2) {
  ------------------
  |  Branch (1298:10): [True: 0, False: 0]
  |  Branch (1298:34): [True: 0, False: 0]
  ------------------
 1299|      0|					zval tmp;
 1300|      0|					zval *data = get_op1_value(ctx, opline+1, ssa_op+1);
 1301|       |
 1302|      0|					SKIP_IF_TOP(data);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1303|       |
 1304|      0|					if (ct_eval_fetch_dim(&tmp, op1, op2, 0) == SUCCESS) {
  ------------------
  |  Branch (1304:10): [True: 0, False: 0]
  ------------------
 1305|      0|						if (IS_BOT(data)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1306|      0|							dup_partial_array(&zv, op1);
 1307|      0|							ct_eval_del_array_elem(&zv, op2);
 1308|      0|							SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1309|      0|							SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1310|      0|							zval_ptr_dtor_nogc(&tmp);
 1311|      0|							zval_ptr_dtor_nogc(&zv);
 1312|      0|							break;
 1313|      0|						}
 1314|       |
 1315|      0|						if (ct_eval_binary_op(&tmp, opline->extended_value, &tmp, data) == FAILURE) {
  ------------------
  |  Branch (1315:11): [True: 0, False: 0]
  ------------------
 1316|      0|							SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|      0|							SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|      0|							zval_ptr_dtor_nogc(&tmp);
 1319|      0|							break;
 1320|      0|						}
 1321|       |
 1322|      0|						if (IS_PARTIAL_ARRAY(op1)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1323|      0|							dup_partial_array(&zv, op1);
 1324|      0|						} else {
 1325|      0|							ZVAL_COPY(&zv, op1);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1326|      0|						}
 1327|       |
 1328|      0|						if (ct_eval_assign_dim(&zv, &tmp, op2) == SUCCESS) {
  ------------------
  |  Branch (1328:11): [True: 0, False: 0]
  ------------------
 1329|      0|							SET_RESULT(result, &tmp);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1330|      0|							SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1331|      0|							zval_ptr_dtor_nogc(&tmp);
 1332|      0|							zval_ptr_dtor_nogc(&zv);
 1333|      0|							break;
 1334|      0|						}
 1335|       |
 1336|      0|						zval_ptr_dtor_nogc(&tmp);
 1337|      0|						zval_ptr_dtor_nogc(&zv);
 1338|      0|					}
 1339|      0|				}
 1340|      0|			} else if (opline->opcode == ZEND_ASSIGN_OBJ_OP) {
  ------------------
  |  |  152|      0|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (1340:15): [True: 0, False: 0]
  ------------------
 1341|      0|				if (op1 && IS_PARTIAL_OBJECT(op1)
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1341:9): [True: 0, False: 0]
  ------------------
 1342|      0|						&& ssa_op->op1_def >= 0
  ------------------
  |  Branch (1342:10): [True: 0, False: 0]
  ------------------
 1343|      0|						&& ctx->scdf.ssa->vars[ssa_op->op1_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (1343:10): [True: 0, False: 0]
  ------------------
 1344|      0|					zval tmp;
 1345|      0|					zval *data = get_op1_value(ctx, opline+1, ssa_op+1);
 1346|       |
 1347|      0|					SKIP_IF_TOP(data);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1348|       |
 1349|      0|					if (ct_eval_fetch_obj(&tmp, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1349:10): [True: 0, False: 0]
  ------------------
 1350|      0|						if (IS_BOT(data)) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1351|      0|							dup_partial_object(&zv, op1);
 1352|      0|							ct_eval_del_obj_prop(&zv, op2);
 1353|      0|							SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1354|      0|							SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1355|      0|							zval_ptr_dtor_nogc(&tmp);
 1356|      0|							zval_ptr_dtor_nogc(&zv);
 1357|      0|							break;
 1358|      0|						}
 1359|       |
 1360|      0|						if (ct_eval_binary_op(&tmp, opline->extended_value, &tmp, data) == FAILURE) {
  ------------------
  |  Branch (1360:11): [True: 0, False: 0]
  ------------------
 1361|      0|							SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1362|      0|							SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1363|      0|							zval_ptr_dtor_nogc(&tmp);
 1364|      0|							break;
 1365|      0|						}
 1366|       |
 1367|      0|						dup_partial_object(&zv, op1);
 1368|       |
 1369|      0|						if (ct_eval_assign_obj(&zv, &tmp, op2) == SUCCESS) {
  ------------------
  |  Branch (1369:11): [True: 0, False: 0]
  ------------------
 1370|      0|							SET_RESULT(result, &tmp);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1371|      0|							SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1372|      0|							zval_ptr_dtor_nogc(&tmp);
 1373|      0|							zval_ptr_dtor_nogc(&zv);
 1374|      0|							break;
 1375|      0|						}
 1376|       |
 1377|      0|						zval_ptr_dtor_nogc(&tmp);
 1378|      0|						zval_ptr_dtor_nogc(&zv);
 1379|      0|					}
 1380|      0|				}
 1381|      0|			}
 1382|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1383|      0|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1384|      0|			break;
 1385|      0|		case ZEND_PRE_INC_OBJ:
  ------------------
  |  |  254|      0|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (1385:3): [True: 0, False: 1]
  ------------------
 1386|      0|		case ZEND_PRE_DEC_OBJ:
  ------------------
  |  |  255|      0|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (1386:3): [True: 0, False: 1]
  ------------------
 1387|      0|		case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      0|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (1387:3): [True: 0, False: 1]
  ------------------
 1388|      0|		case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      0|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (1388:3): [True: 0, False: 1]
  ------------------
 1389|      0|			if (op1) {
  ------------------
  |  Branch (1389:8): [True: 0, False: 0]
  ------------------
 1390|      0|				SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1391|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1392|      0|				if (IS_PARTIAL_OBJECT(op1)
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1393|      0|						&& ssa_op->op1_def >= 0
  ------------------
  |  Branch (1393:10): [True: 0, False: 0]
  ------------------
 1394|      0|						&& ctx->scdf.ssa->vars[ssa_op->op1_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {
  ------------------
  |  Branch (1394:10): [True: 0, False: 0]
  ------------------
 1395|      0|					zval tmp1, tmp2;
 1396|       |
 1397|      0|					if (ct_eval_fetch_obj(&tmp1, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1397:10): [True: 0, False: 0]
  ------------------
 1398|      0|						if (ct_eval_incdec(&tmp2, opline->opcode, &tmp1) == SUCCESS) {
  ------------------
  |  Branch (1398:11): [True: 0, False: 0]
  ------------------
 1399|      0|							dup_partial_object(&zv, op1);
 1400|      0|							ct_eval_assign_obj(&zv, &tmp2, op2);
 1401|      0|							if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) {
  ------------------
  |  |  254|      0|#define ZEND_PRE_INC_OBJ                    132
  ------------------
              							if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) {
  ------------------
  |  |  255|      0|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (1401:12): [True: 0, False: 0]
  |  Branch (1401:50): [True: 0, False: 0]
  ------------------
 1402|      0|								SET_RESULT(result, &tmp2);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1403|      0|							} else {
 1404|      0|								SET_RESULT(result, &tmp1);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1405|      0|							}
 1406|      0|							zval_ptr_dtor_nogc(&tmp1);
 1407|      0|							zval_ptr_dtor_nogc(&tmp2);
 1408|      0|							SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1409|      0|							zval_ptr_dtor_nogc(&zv);
 1410|      0|							break;
 1411|      0|						}
 1412|      0|						zval_ptr_dtor_nogc(&tmp1);
 1413|      0|					}
 1414|      0|				}
 1415|      0|			}
 1416|      0|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1417|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|      0|			break;
 1419|      0|		case ZEND_PRE_INC:
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (1419:3): [True: 0, False: 1]
  ------------------
 1420|      0|		case ZEND_PRE_DEC:
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (1420:3): [True: 0, False: 1]
  ------------------
 1421|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1422|      0|			if (ct_eval_incdec(&zv, opline->opcode, op1) == SUCCESS) {
  ------------------
  |  Branch (1422:8): [True: 0, False: 0]
  ------------------
 1423|      0|				SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1424|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1425|      0|				zval_ptr_dtor_nogc(&zv);
 1426|      0|				break;
 1427|      0|			}
 1428|      0|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1429|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1430|      0|			break;
 1431|      0|		case ZEND_POST_INC:
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (1431:3): [True: 0, False: 1]
  ------------------
 1432|      0|		case ZEND_POST_DEC:
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (1432:3): [True: 0, False: 1]
  ------------------
 1433|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1434|      0|			SET_RESULT(result, op1);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1435|      0|			if (ct_eval_incdec(&zv, opline->opcode, op1) == SUCCESS) {
  ------------------
  |  Branch (1435:8): [True: 0, False: 0]
  ------------------
 1436|      0|				SET_RESULT(op1, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1437|      0|				zval_ptr_dtor_nogc(&zv);
 1438|      0|				break;
 1439|      0|			}
 1440|      0|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1441|      0|			break;
 1442|      0|		case ZEND_BW_NOT:
  ------------------
  |  |  137|      0|#define ZEND_BW_NOT                          13
  ------------------
  |  Branch (1442:3): [True: 0, False: 1]
  ------------------
 1443|      0|		case ZEND_BOOL_NOT:
  ------------------
  |  |  138|      0|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (1443:3): [True: 0, False: 1]
  ------------------
 1444|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1445|      0|			if (IS_PARTIAL_ARRAY(op1)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1446|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1447|      0|				break;
 1448|      0|			}
 1449|      0|			if (zend_optimizer_eval_unary_op(&zv, opline->opcode, op1) == SUCCESS) {
  ------------------
  |  Branch (1449:8): [True: 0, False: 0]
  ------------------
 1450|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1451|      0|				zval_ptr_dtor_nogc(&zv);
 1452|      0|				break;
 1453|      0|			}
 1454|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1455|      0|			break;
 1456|      0|		case ZEND_CAST:
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (1456:3): [True: 0, False: 1]
  ------------------
 1457|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1458|      0|			if (IS_PARTIAL_ARRAY(op1)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1459|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1460|      0|				break;
 1461|      0|			}
 1462|      0|			if (zend_optimizer_eval_cast(&zv, opline->extended_value, op1) == SUCCESS) {
  ------------------
  |  Branch (1462:8): [True: 0, False: 0]
  ------------------
 1463|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1464|      0|				zval_ptr_dtor_nogc(&zv);
 1465|      0|				break;
 1466|      0|			}
 1467|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1468|      0|			break;
 1469|      0|		case ZEND_BOOL:
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
  |  Branch (1469:3): [True: 0, False: 1]
  ------------------
 1470|      0|		case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (1470:3): [True: 0, False: 1]
  ------------------
 1471|      0|		case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (1471:3): [True: 0, False: 1]
  ------------------
 1472|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1473|      0|			if (ct_eval_bool_cast(&zv, op1) == SUCCESS) {
  ------------------
  |  Branch (1473:8): [True: 0, False: 0]
  ------------------
 1474|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1475|      0|				zval_ptr_dtor_nogc(&zv);
 1476|      0|				break;
 1477|      0|			}
 1478|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1479|      0|			break;
 1480|      0|		case ZEND_STRLEN:
  ------------------
  |  |  243|      0|#define ZEND_STRLEN                         121
  ------------------
  |  Branch (1480:3): [True: 0, False: 1]
  ------------------
 1481|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1482|      0|			if (zend_optimizer_eval_strlen(&zv, op1) == SUCCESS) {
  ------------------
  |  Branch (1482:8): [True: 0, False: 0]
  ------------------
 1483|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1484|      0|				zval_ptr_dtor_nogc(&zv);
 1485|      0|				break;
 1486|      0|			}
 1487|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1488|      0|			break;
 1489|      0|		case ZEND_YIELD_FROM:
  ------------------
  |  |  288|      0|#define ZEND_YIELD_FROM                     166
  ------------------
  |  Branch (1489:3): [True: 0, False: 1]
  ------------------
 1490|       |			// tmp = yield from [] -> tmp = null
 1491|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1492|      0|			if (Z_TYPE_P(op1) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(op1)) == 0) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(op1)) == 0) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              			if (Z_TYPE_P(op1) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(op1)) == 0) {
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (1492:8): [True: 0, False: 0]
  |  Branch (1492:37): [True: 0, False: 0]
  ------------------
 1493|      0|				ZVAL_NULL(&zv);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1494|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1495|      0|				break;
 1496|      0|			}
 1497|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1498|      0|			break;
 1499|      0|		case ZEND_COUNT:
  ------------------
  |  |  312|      0|#define ZEND_COUNT                          190
  ------------------
  |  Branch (1499:3): [True: 0, False: 1]
  ------------------
 1500|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1501|      0|			if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1501:8): [True: 0, False: 0]
  ------------------
 1502|      0|				ZVAL_LONG(&zv, zend_hash_num_elements(Z_ARRVAL_P(op1)));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1503|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1504|      0|				zval_ptr_dtor_nogc(&zv);
 1505|      0|				break;
 1506|      0|			}
 1507|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1508|      0|			break;
 1509|      0|		case ZEND_IN_ARRAY:
  ------------------
  |  |  311|      0|#define ZEND_IN_ARRAY                       189
  ------------------
  |  Branch (1509:3): [True: 0, False: 1]
  ------------------
 1510|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1511|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1512|      0|			if (ct_eval_in_array(&zv, opline->extended_value, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1512:8): [True: 0, False: 0]
  ------------------
 1513|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1514|      0|				zval_ptr_dtor_nogc(&zv);
 1515|      0|				break;
 1516|      0|			}
 1517|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1518|      0|			break;
 1519|      0|		case ZEND_ARRAY_KEY_EXISTS:
  ------------------
  |  |  316|      0|#define ZEND_ARRAY_KEY_EXISTS               194
  ------------------
  |  Branch (1519:3): [True: 0, False: 1]
  ------------------
 1520|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1521|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1522|      0|			if (ct_eval_array_key_exists(&zv, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1522:8): [True: 0, False: 0]
  ------------------
 1523|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1524|      0|				zval_ptr_dtor_nogc(&zv);
 1525|      0|				break;
 1526|      0|			}
 1527|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1528|      0|			break;
 1529|      0|		case ZEND_FETCH_DIM_R:
  ------------------
  |  |  203|      0|#define ZEND_FETCH_DIM_R                     81
  ------------------
  |  Branch (1529:3): [True: 0, False: 1]
  ------------------
 1530|      0|		case ZEND_FETCH_DIM_IS:
  ------------------
  |  |  212|      0|#define ZEND_FETCH_DIM_IS                    90
  ------------------
  |  Branch (1530:3): [True: 0, False: 1]
  ------------------
 1531|      0|		case ZEND_FETCH_LIST_R:
  ------------------
  |  |  220|      0|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (1531:3): [True: 0, False: 1]
  ------------------
 1532|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1533|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1534|       |
 1535|      0|			if (ct_eval_fetch_dim(&zv, op1, op2, (opline->opcode != ZEND_FETCH_LIST_R)) == SUCCESS) {
  ------------------
  |  |  220|      0|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (1535:8): [True: 0, False: 0]
  ------------------
 1536|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1537|      0|				zval_ptr_dtor_nogc(&zv);
 1538|      0|				break;
 1539|      0|			}
 1540|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1541|      0|			break;
 1542|      0|		case ZEND_ISSET_ISEMPTY_DIM_OBJ:
  ------------------
  |  |  237|      0|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
  |  Branch (1542:3): [True: 0, False: 1]
  ------------------
 1543|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1544|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1545|       |
 1546|      0|			if (ct_eval_isset_dim(&zv, opline->extended_value, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1546:8): [True: 0, False: 0]
  ------------------
 1547|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1548|      0|				zval_ptr_dtor_nogc(&zv);
 1549|      0|				break;
 1550|      0|			}
 1551|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1552|      0|			break;
 1553|      0|		case ZEND_FETCH_OBJ_R:
  ------------------
  |  |  204|      0|#define ZEND_FETCH_OBJ_R                     82
  ------------------
  |  Branch (1553:3): [True: 0, False: 1]
  ------------------
 1554|      0|		case ZEND_FETCH_OBJ_IS:
  ------------------
  |  |  213|      0|#define ZEND_FETCH_OBJ_IS                    91
  ------------------
  |  Branch (1554:3): [True: 0, False: 1]
  ------------------
 1555|      0|			if (op1) {
  ------------------
  |  Branch (1555:8): [True: 0, False: 0]
  ------------------
 1556|      0|				SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1557|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1558|       |
 1559|      0|				if (ct_eval_fetch_obj(&zv, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1559:9): [True: 0, False: 0]
  ------------------
 1560|      0|					SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1561|      0|					zval_ptr_dtor_nogc(&zv);
 1562|      0|					break;
 1563|      0|				}
 1564|      0|			}
 1565|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1566|      0|			break;
 1567|      0|		case ZEND_ISSET_ISEMPTY_PROP_OBJ:
  ------------------
  |  |  270|      0|#define ZEND_ISSET_ISEMPTY_PROP_OBJ         148
  ------------------
  |  Branch (1567:3): [True: 0, False: 1]
  ------------------
 1568|      0|			if (op1) {
  ------------------
  |  Branch (1568:8): [True: 0, False: 0]
  ------------------
 1569|      0|				SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1570|      0|				SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|       |
 1572|      0|				if (ct_eval_isset_obj(&zv, opline->extended_value, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1572:9): [True: 0, False: 0]
  ------------------
 1573|      0|					SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1574|      0|					zval_ptr_dtor_nogc(&zv);
 1575|      0|					break;
 1576|      0|				}
 1577|      0|			}
 1578|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1579|      0|			break;
 1580|      0|		case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (1580:3): [True: 0, False: 1]
  ------------------
 1581|      0|		case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (1581:3): [True: 0, False: 1]
  ------------------
 1582|      0|		case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (1582:3): [True: 0, False: 1]
  ------------------
 1583|      0|		case ZEND_COPY_TMP:
  ------------------
  |  |  289|      0|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (1583:3): [True: 0, False: 1]
  ------------------
 1584|      0|			SET_RESULT(result, op1);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1585|      0|			break;
 1586|      0|		case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (1586:3): [True: 0, False: 1]
  ------------------
 1587|      0|			switch (opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK) {
  ------------------
  |  |  448|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_MASK 0x3
  ------------------
 1588|      0|				case ZEND_SHORT_CIRCUITING_CHAIN_EXPR:
  ------------------
  |  |  449|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_EXPR 0
  ------------------
  |  Branch (1588:5): [True: 0, False: 0]
  ------------------
 1589|      0|					ZVAL_NULL(&zv);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1590|      0|					break;
 1591|      0|				case ZEND_SHORT_CIRCUITING_CHAIN_ISSET:
  ------------------
  |  |  450|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1
  ------------------
  |  Branch (1591:5): [True: 0, False: 0]
  ------------------
 1592|      0|					ZVAL_FALSE(&zv);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1593|      0|					break;
 1594|      0|				case ZEND_SHORT_CIRCUITING_CHAIN_EMPTY:
  ------------------
  |  |  451|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_EMPTY 2
  ------------------
  |  Branch (1594:5): [True: 0, False: 0]
  ------------------
 1595|      0|					ZVAL_TRUE(&zv);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1596|      0|					break;
 1597|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1597:5): [True: 0, False: 0]
  |  Branch (1597:14): [Folded, False: 0]
  |  Branch (1597:14): [Folded, False: 0]
  ------------------
 1598|      0|			}
 1599|      0|			SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1600|      0|			break;
 1601|      0|		case ZEND_FETCH_CLASS:
  ------------------
  |  |  231|      0|#define ZEND_FETCH_CLASS                    109
  ------------------
  |  Branch (1601:3): [True: 0, False: 1]
  ------------------
 1602|      0|			SET_RESULT(result, op2);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1603|      0|			break;
 1604|      0|		case ZEND_ISSET_ISEMPTY_CV:
  ------------------
  |  |  276|      0|#define ZEND_ISSET_ISEMPTY_CV               154
  ------------------
  |  Branch (1604:3): [True: 0, False: 1]
  ------------------
 1605|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1606|      0|			if (ct_eval_isset_isempty(&zv, opline->extended_value, op1) == SUCCESS) {
  ------------------
  |  Branch (1606:8): [True: 0, False: 0]
  ------------------
 1607|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1608|      0|				zval_ptr_dtor_nogc(&zv);
 1609|      0|				break;
 1610|      0|			}
 1611|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1612|      0|			break;
 1613|      0|		case ZEND_TYPE_CHECK:
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (1613:3): [True: 0, False: 1]
  ------------------
 1614|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1615|      0|			ct_eval_type_check(&zv, opline->extended_value, op1);
 1616|      0|			SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1617|      0|			zval_ptr_dtor_nogc(&zv);
 1618|      0|			break;
 1619|      0|		case ZEND_INSTANCEOF:
  ------------------
  |  |  260|      0|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (1619:3): [True: 0, False: 1]
  ------------------
 1620|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1621|      0|			ZVAL_FALSE(&zv);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1622|      0|			SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1623|      0|			break;
 1624|      0|		case ZEND_ROPE_INIT:
  ------------------
  |  |  177|      0|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (1624:3): [True: 0, False: 1]
  ------------------
 1625|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1626|      0|			if (IS_PARTIAL_ARRAY(op2)) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1627|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1628|      0|				break;
 1629|      0|			}
 1630|      0|			if (zend_optimizer_eval_cast(&zv, IS_STRING, op2) == SUCCESS) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (1630:8): [True: 0, False: 0]
  ------------------
 1631|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1632|      0|				zval_ptr_dtor_nogc(&zv);
 1633|      0|				break;
 1634|      0|			}
 1635|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1636|      0|			break;
 1637|      0|		case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      0|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (1637:3): [True: 0, False: 1]
  ------------------
 1638|      0|		case ZEND_ROPE_END:
  ------------------
  |  |  179|      0|#define ZEND_ROPE_END                        56
  ------------------
  |  Branch (1638:3): [True: 0, False: 1]
  ------------------
 1639|       |			// TODO The way this is currently implemented will result in quadratic runtime
 1640|       |			// This is not necessary, the way the algorithm works it's okay to reuse the same
 1641|       |			// string for all SSA vars with some extra checks
 1642|      0|			SKIP_IF_TOP(op1);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1643|      0|			SKIP_IF_TOP(op2);
  ------------------
  |  |  870|      0|#define SKIP_IF_TOP(op) if (IS_TOP(op)) return;
  |  |  ------------------
  |  |  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1644|      0|			if (ct_eval_binary_op(&zv, ZEND_CONCAT, op1, op2) == SUCCESS) {
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (1644:8): [True: 0, False: 0]
  ------------------
 1645|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1646|      0|				zval_ptr_dtor_nogc(&zv);
 1647|      0|				break;
 1648|      0|			}
 1649|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1650|      0|			break;
 1651|      0|		case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (1651:3): [True: 0, False: 1]
  ------------------
 1652|      0|		{
 1653|      0|			zend_call_info *call;
 1654|      0|			zval *name, *args[3] = {NULL};
 1655|       |
 1656|      0|			if (!ctx->call_map) {
  ------------------
  |  Branch (1656:8): [True: 0, False: 0]
  ------------------
 1657|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1658|      0|				break;
 1659|      0|			}
 1660|       |
 1661|      0|			call = ctx->call_map[opline - ctx->scdf.op_array->opcodes];
 1662|      0|			name = CT_CONSTANT_EX(ctx->scdf.op_array, call->caller_init_opline->op2.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
 1663|       |
 1664|       |			/* We already know it can't be evaluated, don't bother checking again */
 1665|      0|			if (ssa_op->result_def < 0 || IS_BOT(&ctx->values[ssa_op->result_def])) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1665:8): [True: 0, False: 0]
  ------------------
 1666|      0|				break;
 1667|      0|			}
 1668|       |
 1669|       |			/* We're only interested in functions with up to three arguments right now.
 1670|       |			 * Note that named arguments with the argument in declaration order will still work. */
 1671|      0|			if (call->num_args > 3 || call->send_unpack || call->is_prototype || call->named_args) {
  ------------------
  |  Branch (1671:8): [True: 0, False: 0]
  |  Branch (1671:30): [True: 0, False: 0]
  |  Branch (1671:51): [True: 0, False: 0]
  |  Branch (1671:73): [True: 0, False: 0]
  ------------------
 1672|      0|				SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1673|      0|				break;
 1674|      0|			}
 1675|       |
 1676|      0|			for (uint32_t i = 0; i < call->num_args; i++) {
  ------------------
  |  Branch (1676:25): [True: 0, False: 0]
  ------------------
 1677|      0|				zend_op *opline = call->arg_info[i].opline;
 1678|      0|				if (opline->opcode != ZEND_SEND_VAL && opline->opcode != ZEND_SEND_VAR) {
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
              				if (opline->opcode != ZEND_SEND_VAL && opline->opcode != ZEND_SEND_VAR) {
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (1678:9): [True: 0, False: 0]
  |  Branch (1678:44): [True: 0, False: 0]
  ------------------
 1679|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1680|      0|					return;
 1681|      0|				}
 1682|       |
 1683|      0|				args[i] = get_op1_value(ctx, opline,
 1684|      0|					&ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]);
 1685|      0|				if (args[i]) {
  ------------------
  |  Branch (1685:9): [True: 0, False: 0]
  ------------------
 1686|      0|					if (IS_BOT(args[i]) || IS_PARTIAL_ARRAY(args[i])) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					if (IS_BOT(args[i]) || IS_PARTIAL_ARRAY(args[i])) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1687|      0|						SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1688|      0|						return;
 1689|      0|					} else if (IS_TOP(args[i])) {
  ------------------
  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  ------------------
  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1690|      0|						return;
 1691|      0|					}
 1692|      0|				}
 1693|      0|			}
 1694|       |
 1695|       |			/* We didn't get a BOT argument, so value stays the same */
 1696|      0|			if (!IS_TOP(&ctx->values[ssa_op->result_def])) {
  ------------------
  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  ------------------
  ------------------
  |  Branch (1696:8): [True: 0, False: 0]
  ------------------
 1697|      0|				break;
 1698|      0|			}
 1699|       |
 1700|      0|			if (ct_eval_func_call(scdf->op_array, &zv, Z_STR_P(name), call->num_args, args) == SUCCESS) {
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (1700:8): [True: 0, False: 0]
  ------------------
 1701|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1702|      0|				zval_ptr_dtor_nogc(&zv);
 1703|      0|				break;
 1704|      0|			}
 1705|       |
 1706|       |#if 0
 1707|       |			/* sort out | uniq -c | sort -n */
 1708|       |			fprintf(stderr, "%s\n", Z_STRVAL_P(name));
 1709|       |			/*if (args[1]) {
 1710|       |				php_printf("%s %Z %Z\n", Z_STRVAL_P(name), args[0], args[1]);
 1711|       |			} else {
 1712|       |				php_printf("%s %Z\n", Z_STRVAL_P(name), args[0]);
 1713|       |			}*/
 1714|       |#endif
 1715|       |
 1716|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1717|      0|			break;
 1718|      0|		}
 1719|      0|		case ZEND_FRAMELESS_ICALL_0:
  ------------------
  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  ------------------
  |  Branch (1719:3): [True: 0, False: 1]
  ------------------
 1720|      0|		case ZEND_FRAMELESS_ICALL_1:
  ------------------
  |  |  327|      0|#define ZEND_FRAMELESS_ICALL_1              205
  ------------------
  |  Branch (1720:3): [True: 0, False: 1]
  ------------------
 1721|      0|		case ZEND_FRAMELESS_ICALL_2:
  ------------------
  |  |  328|      0|#define ZEND_FRAMELESS_ICALL_2              206
  ------------------
  |  Branch (1721:3): [True: 0, False: 1]
  ------------------
 1722|      0|		case ZEND_FRAMELESS_ICALL_3: {
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (1722:3): [True: 0, False: 1]
  ------------------
 1723|       |			/* We already know it can't be evaluated, don't bother checking again */
 1724|      0|			if (ssa_op->result_def < 0 || IS_BOT(&ctx->values[ssa_op->result_def])) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1724:8): [True: 0, False: 0]
  ------------------
 1725|      0|				break;
 1726|      0|			}
 1727|       |
 1728|      0|			zval *args[3] = {NULL};
 1729|      0|			zend_function *func = ZEND_FLF_FUNC(opline);
  ------------------
  |  |   38|      0|#define ZEND_FLF_FUNC(opline) (zend_flf_functions[(opline)->extended_value])
  ------------------
 1730|      0|			uint32_t num_args = ZEND_FLF_NUM_ARGS(opline->opcode);
  ------------------
  |  |   37|      0|#define ZEND_FLF_NUM_ARGS(opcode) ((opcode) - ZEND_FRAMELESS_ICALL_0)
  |  |  ------------------
  |  |  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  |  |  ------------------
  ------------------
 1731|       |
 1732|      0|			switch (num_args) {
  ------------------
  |  Branch (1732:12): [True: 0, False: 0]
  ------------------
 1733|      0|	 			case 3: {
  ------------------
  |  Branch (1733:6): [True: 0, False: 0]
  ------------------
 1734|      0|					zend_op *op_data = opline + 1;
 1735|      0|					args[2] = get_op1_value(ctx, op_data, &ctx->scdf.ssa->ops[op_data - ctx->scdf.op_array->opcodes]);
 1736|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1737|      0|				}
 1738|      0|				case 2:
  ------------------
  |  Branch (1738:5): [True: 0, False: 0]
  ------------------
 1739|      0|					args[1] = get_op2_value(ctx, opline, &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]);
 1740|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1741|      0|				case 1:
  ------------------
  |  Branch (1741:5): [True: 0, False: 0]
  ------------------
 1742|      0|					args[0] = get_op1_value(ctx, opline, &ctx->scdf.ssa->ops[opline - ctx->scdf.op_array->opcodes]);
 1743|      0|					break;
 1744|      0|			}
 1745|      0|			for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (1745:25): [True: 0, False: 0]
  ------------------
 1746|      0|				if (!args[i]) {
  ------------------
  |  Branch (1746:9): [True: 0, False: 0]
  ------------------
 1747|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1748|      0|					return;
 1749|      0|				} else if (IS_BOT(args[i]) || IS_PARTIAL_ARRAY(args[i])) {
  ------------------
  |  |   89|      0|#define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_BOT(zv) (Z_TYPE_P(zv) == BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  |  |  |  Branch (89:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              				} else if (IS_BOT(args[i]) || IS_PARTIAL_ARRAY(args[i])) {
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1750|      0|					SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1751|      0|					return;
 1752|      0|				} else if (IS_TOP(args[i])) {
  ------------------
  |  |   88|      0|#define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_TOP(zv) (Z_TYPE_P(zv) == TOP)
  |  |  ------------------
  |  |  |  |   84|      0|#define TOP ((uint8_t)-1)
  |  |  ------------------
  |  |  |  Branch (88:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1753|      0|					return;
 1754|      0|				}
 1755|      0|			}
 1756|      0|			if (ct_eval_func_call_ex(scdf->op_array, &zv, func, num_args, args) == SUCCESS) {
  ------------------
  |  Branch (1756:8): [True: 0, False: 0]
  ------------------
 1757|      0|				SET_RESULT(result, &zv);
  ------------------
  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  ------------------
  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  865|      0|	} \
  |  |  866|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1758|      0|				zval_ptr_dtor_nogc(&zv);
 1759|      0|				break;
 1760|      0|			}
 1761|      0|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      0|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      0|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      0|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1762|      0|			break;
 1763|      0|		}
 1764|      1|		default:
  ------------------
  |  Branch (1764:3): [True: 1, False: 0]
  ------------------
 1765|      1|		{
 1766|       |			/* If we have no explicit implementation return BOT */
 1767|      1|			SET_RESULT_BOT(result);
  ------------------
  |  |  867|      1|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      1|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      1|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1768|      1|			SET_RESULT_BOT(op1);
  ------------------
  |  |  867|      1|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      1|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      1|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1769|      1|			SET_RESULT_BOT(op2);
  ------------------
  |  |  867|      1|#define SET_RESULT_BOT(op) SET_RESULT(op, &ctx->bot)
  |  |  ------------------
  |  |  |  |  862|      1|#define SET_RESULT(op, zv) do { \
  |  |  |  |  863|      1|	if (ssa_op->op##_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (863:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  864|      0|		set_value(scdf, ctx, ssa_op->op##_def, zv); \
  |  |  |  |  865|      0|	} \
  |  |  |  |  866|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (866:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1770|      1|			break;
 1771|      0|		}
 1772|      1|	}
 1773|      1|}
sccp.c:get_op1_value:
  187|      1|static zval *get_op1_value(sccp_ctx *ctx, zend_op *opline, const zend_ssa_op *ssa_op) {
  188|      1|	if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (188:6): [True: 1, False: 0]
  ------------------
  189|      1|		return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op1.constant);
  ------------------
  |  |  817|      1|	((op_array)->literals + (num))
  ------------------
  190|      1|	} else if (ssa_op->op1_use != -1) {
  ------------------
  |  Branch (190:13): [True: 0, False: 0]
  ------------------
  191|      0|		return &ctx->values[ssa_op->op1_use];
  192|      0|	} else {
  193|       |		return NULL;
  194|      0|	}
  195|      1|}
sccp.c:get_op2_value:
  197|      1|static zval *get_op2_value(sccp_ctx *ctx, const zend_op *opline, const zend_ssa_op *ssa_op) {
  198|      1|	if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (198:6): [True: 0, False: 1]
  ------------------
  199|      0|		return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op2.constant);
  ------------------
  |  |  817|      0|	((op_array)->literals + (num))
  ------------------
  200|      1|	} else if (ssa_op->op2_use != -1) {
  ------------------
  |  Branch (200:13): [True: 0, False: 1]
  ------------------
  201|      0|		return &ctx->values[ssa_op->op2_use];
  202|      1|	} else {
  203|       |		return NULL;
  204|      1|	}
  205|      1|}
sccp.c:replace_constant_operands:
 2372|      1|static uint32_t replace_constant_operands(sccp_ctx *ctx) {
 2373|      1|	zend_ssa *ssa = ctx->scdf.ssa;
 2374|      1|	zend_op_array *op_array = ctx->scdf.op_array;
 2375|      1|	int i;
 2376|      1|	zval tmp;
 2377|      1|	uint32_t removed_ops = 0;
 2378|       |
 2379|       |	/* We iterate the variables backwards, so we can eliminate sequences like INIT_ROPE
 2380|       |	 * and INIT_ARRAY. */
 2381|      1|	for (i = ssa->vars_count - 1; i >= op_array->last_var; i--) {
  ------------------
  |  Branch (2381:32): [True: 0, False: 1]
  ------------------
 2382|      0|		zend_ssa_var *var = &ssa->vars[i];
 2383|      0|		zval *value;
 2384|      0|		int use;
 2385|       |
 2386|      0|		if (IS_PARTIAL_ARRAY(&ctx->values[i])
  ------------------
  |  |   90|      0|#define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_ARRAY(zv) (Z_TYPE_P(zv) == PARTIAL_ARRAY)
  |  |  ------------------
  |  |  |  |   86|      0|#define PARTIAL_ARRAY ((uint8_t)-3)
  |  |  ------------------
  |  |  |  Branch (90:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2387|      0|				|| IS_PARTIAL_OBJECT(&ctx->values[i])) {
  ------------------
  |  |   91|      0|#define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_PARTIAL_OBJECT(zv) (Z_TYPE_P(zv) == PARTIAL_OBJECT)
  |  |  ------------------
  |  |  |  |   87|      0|#define PARTIAL_OBJECT ((uint8_t)-4)
  |  |  ------------------
  |  |  |  Branch (91:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2388|      0|			if (!Z_DELREF(ctx->values[i])) {
  ------------------
  |  | 1283|      0|#define Z_DELREF(z)					Z_DELREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  |  |  ------------------
  ------------------
  |  Branch (2388:8): [True: 0, False: 0]
  ------------------
 2389|      0|				zend_array_destroy(Z_ARR(ctx->values[i]));
  ------------------
  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  ------------------
 2390|      0|			}
 2391|      0|			MAKE_BOT(&ctx->values[i]);
  ------------------
  |  |   97|      0|#define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAKE_BOT(zv) (Z_TYPE_INFO_P(zv) = BOT)
  |  |  ------------------
  |  |  |  |   85|      0|#define BOT ((uint8_t)-2)
  |  |  ------------------
  ------------------
 2392|      0|			if ((var->use_chain < 0 && var->phi_use_chain == NULL) || var->no_val) {
  ------------------
  |  Branch (2392:9): [True: 0, False: 0]
  |  Branch (2392:31): [True: 0, False: 0]
  |  Branch (2392:62): [True: 0, False: 0]
  ------------------
 2393|      0|				removed_ops += try_remove_definition(ctx, i, var, NULL);
 2394|      0|			}
 2395|      0|			continue;
 2396|      0|		} else if (value_known(&ctx->values[i])) {
  ------------------
  |  Branch (2396:14): [True: 0, False: 0]
  ------------------
 2397|      0|			value = &ctx->values[i];
 2398|      0|		} else {
 2399|      0|			value = value_from_type_and_range(ctx, i, &tmp);
 2400|      0|			if (!value) {
  ------------------
  |  Branch (2400:8): [True: 0, False: 0]
  ------------------
 2401|      0|				continue;
 2402|      0|			}
 2403|      0|		}
 2404|       |
 2405|      0|		FOREACH_USE(var, use) {
  ------------------
  |  |  266|      0|#define FOREACH_USE(var, use) do { \
  |  |  267|      0|	int _var_num = (var) - ssa->vars, next; \
  |  |  268|      0|	for (use = (var)->use_chain; use >= 0; use = next) { \
  |  |  ------------------
  |  |  |  Branch (268:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|		next = zend_ssa_next_use(ssa->ops, _var_num, use);
  ------------------
 2406|      0|			zend_op *opline = &op_array->opcodes[use];
 2407|      0|			zend_ssa_op *ssa_op = &ssa->ops[use];
 2408|      0|			if (try_replace_op1(ctx, opline, ssa_op, i, value)) {
  ------------------
  |  Branch (2408:8): [True: 0, False: 0]
  ------------------
 2409|      0|				if (opline->opcode == ZEND_NOP) {
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  |  Branch (2409:9): [True: 0, False: 0]
  ------------------
 2410|      0|					removed_ops++;
 2411|      0|				}
 2412|      0|				ZEND_ASSERT(ssa_op->op1_def == -1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2412:5): [True: 0, False: 0]
  |  Branch (2412:5): [True: 0, False: 0]
  ------------------
 2413|      0|				if (ssa_op->op1_use != ssa_op->op2_use) {
  ------------------
  |  Branch (2413:9): [True: 0, False: 0]
  ------------------
 2414|      0|					zend_ssa_unlink_use_chain(ssa, use, ssa_op->op1_use);
 2415|      0|				} else {
 2416|      0|					ssa_op->op2_use_chain = ssa_op->op1_use_chain;
 2417|      0|				}
 2418|      0|				ssa_op->op1_use = -1;
 2419|      0|				ssa_op->op1_use_chain = -1;
 2420|      0|			}
 2421|      0|			if (try_replace_op2(ctx, opline, ssa_op, i, value)) {
  ------------------
  |  Branch (2421:8): [True: 0, False: 0]
  ------------------
 2422|      0|				ZEND_ASSERT(ssa_op->op2_def == -1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2422:5): [True: 0, False: 0]
  |  Branch (2422:5): [True: 0, False: 0]
  ------------------
 2423|      0|				if (ssa_op->op2_use != ssa_op->op1_use) {
  ------------------
  |  Branch (2423:9): [True: 0, False: 0]
  ------------------
 2424|      0|					zend_ssa_unlink_use_chain(ssa, use, ssa_op->op2_use);
 2425|      0|				}
 2426|      0|				ssa_op->op2_use = -1;
 2427|      0|				ssa_op->op2_use_chain = -1;
 2428|      0|			}
 2429|      0|		} FOREACH_USE_END();
  ------------------
  |  |  271|      0|	} \
  |  |  272|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (272:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2430|       |
 2431|      0|		if (value_known(&ctx->values[i])) {
  ------------------
  |  Branch (2431:7): [True: 0, False: 0]
  ------------------
 2432|      0|			removed_ops += try_remove_definition(ctx, i, var, value);
 2433|      0|		}
 2434|      0|	}
 2435|       |
 2436|      1|	return removed_ops;
 2437|      1|}
sccp.c:sccp_context_free:
 2463|      1|static void sccp_context_free(sccp_ctx *sccp) {
 2464|      1|	int i;
 2465|      1|	for (i = sccp->scdf.op_array->last_var; i < sccp->scdf.ssa->vars_count; ++i) {
  ------------------
  |  Branch (2465:42): [True: 0, False: 1]
  ------------------
 2466|      0|		zval_ptr_dtor_nogc(&sccp->values[i]);
 2467|      0|	}
 2468|      1|}

scdf_init:
   79|      1|void scdf_init(zend_optimizer_ctx *ctx, scdf_ctx *scdf, zend_op_array *op_array, zend_ssa *ssa) {
   80|      1|	scdf->op_array = op_array;
   81|      1|	scdf->ssa = ssa;
   82|       |
   83|      1|	scdf->instr_worklist_len = zend_bitset_len(op_array->last);
   84|      1|	scdf->phi_var_worklist_len = zend_bitset_len(ssa->vars_count);
   85|      1|	scdf->block_worklist_len = zend_bitset_len(ssa->cfg.blocks_count);
   86|       |
   87|      1|	scdf->instr_worklist = zend_arena_calloc(&ctx->arena,
   88|      1|		scdf->instr_worklist_len + scdf->phi_var_worklist_len + 2 * scdf->block_worklist_len + zend_bitset_len(ssa->cfg.edges_count),
   89|      1|		sizeof(zend_ulong));
   90|       |
   91|      1|	scdf->phi_var_worklist = scdf->instr_worklist + scdf->instr_worklist_len;
   92|      1|	scdf->block_worklist = scdf->phi_var_worklist + scdf->phi_var_worklist_len;
   93|      1|	scdf->executable_blocks = scdf->block_worklist + scdf->block_worklist_len;
   94|      1|	scdf->feasible_edges = scdf->executable_blocks + scdf->block_worklist_len;
   95|       |
   96|      1|	zend_bitset_incl(scdf->block_worklist, 0);
   97|      1|	zend_bitset_incl(scdf->executable_blocks, 0);
   98|      1|}
scdf_solve:
  100|      1|void scdf_solve(scdf_ctx *scdf, const char *name) {
  101|      1|	const zend_ssa *ssa = scdf->ssa;
  102|      1|	DEBUG_PRINT("Start SCDF solve (%s)\n", name);
  103|      2|	while (!zend_bitset_empty(scdf->instr_worklist, scdf->instr_worklist_len)
  ------------------
  |  Branch (103:9): [True: 0, False: 2]
  ------------------
  104|      2|		|| !zend_bitset_empty(scdf->phi_var_worklist, scdf->phi_var_worklist_len)
  ------------------
  |  Branch (104:6): [True: 0, False: 2]
  ------------------
  105|      2|		|| !zend_bitset_empty(scdf->block_worklist, scdf->block_worklist_len)
  ------------------
  |  Branch (105:6): [True: 1, False: 1]
  ------------------
  106|      1|	) {
  107|      1|		int i;
  108|      1|		while ((i = zend_bitset_pop_first(scdf->phi_var_worklist, scdf->phi_var_worklist_len)) >= 0) {
  ------------------
  |  Branch (108:10): [True: 0, False: 1]
  ------------------
  109|      0|			const zend_ssa_phi *phi = ssa->vars[i].definition_phi;
  110|      0|			ZEND_ASSERT(phi);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (110:4): [True: 0, False: 0]
  |  Branch (110:4): [True: 0, False: 0]
  ------------------
  111|      0|			if (zend_bitset_in(scdf->executable_blocks, phi->block)) {
  ------------------
  |  Branch (111:8): [True: 0, False: 0]
  ------------------
  112|      0|				scdf->handlers.visit_phi(scdf, phi);
  113|      0|			}
  114|      0|		}
  115|       |
  116|      1|		while ((i = zend_bitset_pop_first(scdf->instr_worklist, scdf->instr_worklist_len)) >= 0) {
  ------------------
  |  Branch (116:10): [True: 0, False: 1]
  ------------------
  117|      0|			int block_num = ssa->cfg.map[i];
  118|      0|			if (zend_bitset_in(scdf->executable_blocks, block_num)) {
  ------------------
  |  Branch (118:8): [True: 0, False: 0]
  ------------------
  119|      0|				zend_basic_block *block = &ssa->cfg.blocks[block_num];
  120|      0|				zend_op *opline = &scdf->op_array->opcodes[i];
  121|      0|				zend_ssa_op *ssa_op = &ssa->ops[i];
  122|      0|				if (opline->opcode == ZEND_OP_DATA) {
  ------------------
  |  |  259|      0|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (122:9): [True: 0, False: 0]
  ------------------
  123|      0|					opline--;
  124|      0|					ssa_op--;
  125|      0|				}
  126|      0|				scdf->handlers.visit_instr(scdf, opline, ssa_op);
  127|      0|				if (i == block->start + block->len - 1) {
  ------------------
  |  Branch (127:9): [True: 0, False: 0]
  ------------------
  128|      0|					if (block->successors_count == 1) {
  ------------------
  |  Branch (128:10): [True: 0, False: 0]
  ------------------
  129|      0|						scdf_mark_edge_feasible(scdf, block_num, block->successors[0]);
  130|      0|					} else if (block->successors_count > 1) {
  ------------------
  |  Branch (130:17): [True: 0, False: 0]
  ------------------
  131|      0|						scdf->handlers.mark_feasible_successors(scdf, block_num, block, opline, ssa_op);
  132|      0|					}
  133|      0|				}
  134|      0|			}
  135|      0|		}
  136|       |
  137|      2|		while ((i = zend_bitset_pop_first(scdf->block_worklist, scdf->block_worklist_len)) >= 0) {
  ------------------
  |  Branch (137:10): [True: 1, False: 1]
  ------------------
  138|       |			/* This block is now live. Interpret phis and instructions in it. */
  139|      1|			zend_basic_block *block = &ssa->cfg.blocks[i];
  140|      1|			const zend_ssa_block *ssa_block = &ssa->blocks[i];
  141|       |
  142|      1|			DEBUG_PRINT("Pop block %d from worklist\n", i);
  143|      1|			zend_bitset_incl(scdf->executable_blocks, i);
  144|       |
  145|      1|			for (const zend_ssa_phi *phi = ssa_block->phis; phi; phi = phi->next) {
  ------------------
  |  Branch (145:52): [True: 0, False: 1]
  ------------------
  146|      0|				zend_bitset_excl(scdf->phi_var_worklist, phi->ssa_var);
  147|      0|				scdf->handlers.visit_phi(scdf, phi);
  148|      0|			}
  149|       |
  150|      1|			if (block->len == 0) {
  ------------------
  |  Branch (150:8): [True: 0, False: 1]
  ------------------
  151|       |				/* Zero length blocks don't have a last instruction that would normally do this */
  152|      0|				scdf_mark_edge_feasible(scdf, i, block->successors[0]);
  153|      1|			} else {
  154|      1|				zend_op *opline = NULL;
  155|      1|				uint32_t j, end = block->start + block->len;
  156|      2|				for (j = block->start; j < end; j++) {
  ------------------
  |  Branch (156:28): [True: 1, False: 1]
  ------------------
  157|      1|					opline = &scdf->op_array->opcodes[j];
  158|      1|					zend_bitset_excl(scdf->instr_worklist, j);
  159|      1|					if (opline->opcode != ZEND_OP_DATA) {
  ------------------
  |  |  259|      1|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (159:10): [True: 1, False: 0]
  ------------------
  160|      1|						scdf->handlers.visit_instr(scdf, opline, &ssa->ops[j]);
  161|      1|					}
  162|      1|				}
  163|      1|				if (block->successors_count == 1) {
  ------------------
  |  Branch (163:9): [True: 0, False: 1]
  ------------------
  164|      0|					scdf_mark_edge_feasible(scdf, i, block->successors[0]);
  165|      1|				} else if (block->successors_count > 1) {
  ------------------
  |  Branch (165:16): [True: 0, False: 1]
  ------------------
  166|      0|					ZEND_ASSERT(opline && "Should have opline in non-empty block");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (166:6): [True: 0, False: 0]
  |  Branch (166:6): [True: 0, False: 0]
  |  Branch (166:6): [True: 0, False: 0]
  |  Branch (166:6): [True: 0, False: 0]
  ------------------
  167|      0|					if (opline->opcode == ZEND_OP_DATA) {
  ------------------
  |  |  259|      0|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (167:10): [True: 0, False: 0]
  ------------------
  168|      0|						opline--;
  169|      0|						j--;
  170|      0|					}
  171|      0|					scdf->handlers.mark_feasible_successors(scdf, i, block, opline, &ssa->ops[j-1]);
  172|      0|				}
  173|      1|			}
  174|      1|		}
  175|      1|	}
  176|      1|}
scdf_remove_unreachable_blocks:
  253|      1|uint32_t scdf_remove_unreachable_blocks(const scdf_ctx *scdf) {
  254|      1|	zend_ssa *ssa = scdf->ssa;
  255|      1|	uint32_t removed_ops = 0;
  256|      2|	for (uint32_t i = 0; i < ssa->cfg.blocks_count; i++) {
  ------------------
  |  Branch (256:23): [True: 1, False: 1]
  ------------------
  257|      1|		const zend_basic_block *block = &ssa->cfg.blocks[i];
  258|      1|		if (!zend_bitset_in(scdf->executable_blocks, i) && (block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (258:7): [True: 0, False: 1]
  |  Branch (258:54): [True: 0, False: 0]
  ------------------
  259|      0|			if (!kept_alive_by_loop_var_free(scdf, block)) {
  ------------------
  |  Branch (259:8): [True: 0, False: 0]
  ------------------
  260|      0|				removed_ops += block->len;
  261|      0|				zend_ssa_remove_block(scdf->op_array, ssa, i);
  262|      0|			} else {
  263|      0|				removed_ops += cleanup_loop_var_free_block(scdf, block);
  264|      0|			}
  265|      0|		}
  266|      1|	}
  267|      1|	return removed_ops;
  268|      1|}

ssa_verify_integrity:
  113|      5|void ssa_verify_integrity(zend_op_array *op_array, zend_ssa *ssa, const char *extra) {
  114|      5|	zend_cfg *cfg = &ssa->cfg;
  115|      5|	zend_ssa_phi *phi;
  116|      5|	int i;
  117|      5|	zend_result status = SUCCESS;
  118|       |
  119|       |	/* Vars */
  120|      5|	for (i = 0; i < ssa->vars_count; i++) {
  ------------------
  |  Branch (120:14): [True: 0, False: 5]
  ------------------
  121|      0|		zend_ssa_var *var = &ssa->vars[i];
  122|      0|		int use;
  123|      0|		uint32_t type = ssa->var_info[i].type;
  124|       |
  125|      0|		if (var->definition < 0 && !var->definition_phi && i > op_array->last_var) {
  ------------------
  |  Branch (125:7): [True: 0, False: 0]
  |  Branch (125:30): [True: 0, False: 0]
  |  Branch (125:54): [True: 0, False: 0]
  ------------------
  126|      0|			if (var->use_chain >= 0) {
  ------------------
  |  Branch (126:8): [True: 0, False: 0]
  ------------------
  127|      0|				FAIL("var " VARFMT " without def has op uses\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  128|      0|			}
  129|      0|			if (var->phi_use_chain) {
  ------------------
  |  Branch (129:8): [True: 0, False: 0]
  ------------------
  130|      0|				FAIL("var " VARFMT " without def has phi uses\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  131|      0|			}
  132|      0|		}
  133|      0|		if (var->definition >= 0 && var->definition_phi) {
  ------------------
  |  Branch (133:7): [True: 0, False: 0]
  |  Branch (133:31): [True: 0, False: 0]
  ------------------
  134|      0|			FAIL("var " VARFMT " has both def and def_phi\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  135|      0|		}
  136|      0|		if (var->definition >= 0) {
  ------------------
  |  Branch (136:7): [True: 0, False: 0]
  ------------------
  137|      0|			if (!is_defined_by_op(ssa, var->definition, i)) {
  ------------------
  |  Branch (137:8): [True: 0, False: 0]
  ------------------
  138|      0|				FAIL("var " VARFMT " not defined by op " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  139|      0|						VAR(i), INSTR(var->definition));
  140|      0|			}
  141|      0|		}
  142|      0|		if (var->definition_phi) {
  ------------------
  |  Branch (142:7): [True: 0, False: 0]
  ------------------
  143|      0|			if (var->definition_phi->ssa_var != i) {
  ------------------
  |  Branch (143:8): [True: 0, False: 0]
  ------------------
  144|      0|				FAIL("var " VARFMT " not defined by given phi\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  145|      0|			}
  146|      0|		}
  147|       |
  148|       |		/* Floyd's cycle detection algorithm, applied for use chain. */
  149|      0|		use = var->use_chain;
  150|      0|		int second_use = use;
  151|      0|		while (use >= 0 && second_use >= 0) {
  ------------------
  |  Branch (151:10): [True: 0, False: 0]
  |  Branch (151:22): [True: 0, False: 0]
  ------------------
  152|      0|			use = zend_ssa_next_use(ssa->ops, var - ssa->vars, use);
  153|      0|			second_use = zend_ssa_next_use(ssa->ops, var - ssa->vars, second_use);
  154|      0|			if (second_use < 0) {
  ------------------
  |  Branch (154:8): [True: 0, False: 0]
  ------------------
  155|      0|				break;
  156|      0|			}
  157|      0|			second_use = zend_ssa_next_use(ssa->ops, var - ssa->vars, second_use);
  158|      0|			if (use == second_use) {
  ------------------
  |  Branch (158:8): [True: 0, False: 0]
  ------------------
  159|      0|				FAIL("cycle in uses of " VARFMT "\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  160|      0|				goto finish;
  161|      0|			}
  162|      0|		}
  163|       |
  164|      0|		FOREACH_USE(var, use) {
  ------------------
  |  |  266|      0|#define FOREACH_USE(var, use) do { \
  |  |  267|      0|	int _var_num = (var) - ssa->vars, next; \
  |  |  268|      0|	for (use = (var)->use_chain; use >= 0; use = next) { \
  |  |  ------------------
  |  |  |  Branch (268:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|		next = zend_ssa_next_use(ssa->ops, _var_num, use);
  ------------------
  165|      0|			if (!is_used_by_op(ssa, use, i)) {
  ------------------
  |  Branch (165:8): [True: 0, False: 0]
  ------------------
  166|      0|				fprintf(stderr, "var " VARFMT " not in uses of op %d\n", VAR(i), use);
  ------------------
  |  |  106|      0|	(i), (ssa->vars[i].var < op_array->last_var ? "CV $" : "TMP"), \
  |  |  ------------------
  |  |  |  Branch (106:8): [True: 0, False: 0]
  |  |  ------------------
  |  |  107|      0|	(ssa->vars[i].var < op_array->last_var ? ZSTR_VAL(op_array->vars[ssa->vars[i].var]) : "")
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (107:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  167|      0|			}
  168|      0|		} FOREACH_USE_END();
  ------------------
  |  |  271|      0|	} \
  |  |  272|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (272:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  169|       |
  170|       |		/* Floyd's cycle detection algorithm, applied for phi nodes. */
  171|      0|		phi = var->phi_use_chain;
  172|      0|		zend_ssa_phi *second_phi = phi;
  173|      0|		while (phi && second_phi) {
  ------------------
  |  Branch (173:10): [True: 0, False: 0]
  |  Branch (173:17): [True: 0, False: 0]
  ------------------
  174|      0|			phi = zend_ssa_next_use_phi(ssa, var - ssa->vars, phi);
  175|      0|			second_phi = zend_ssa_next_use_phi(ssa, var - ssa->vars, second_phi);
  176|      0|			if (!second_phi) {
  ------------------
  |  Branch (176:8): [True: 0, False: 0]
  ------------------
  177|      0|				break;
  178|      0|			}
  179|      0|			second_phi = zend_ssa_next_use_phi(ssa, var - ssa->vars, second_phi);
  180|      0|			if (phi == second_phi) {
  ------------------
  |  Branch (180:8): [True: 0, False: 0]
  ------------------
  181|      0|				FAIL("cycle in phi uses of " VARFMT "\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  182|      0|				goto finish;
  183|      0|			}
  184|      0|		}
  185|       |
  186|      0|		FOREACH_PHI_USE(var, phi) {
  ------------------
  |  |  274|      0|#define FOREACH_PHI_USE(var, phi) do { \
  |  |  275|      0|	int _var_num = (var) - ssa->vars; \
  |  |  276|      0|	zend_ssa_phi *next_phi; \
  |  |  277|      0|	for (phi = (var)->phi_use_chain; phi; phi = next_phi) { \
  |  |  ------------------
  |  |  |  Branch (277:35): [True: 0, False: 0]
  |  |  ------------------
  |  |  278|      0|		next_phi = zend_ssa_next_use_phi(ssa, _var_num, phi);
  ------------------
  187|      0|			if (!is_in_phi_sources(ssa, phi, i)) {
  ------------------
  |  Branch (187:8): [True: 0, False: 0]
  ------------------
  188|      0|				FAIL("var " VARFMT " not in phi sources of %d\n", VAR(i), phi->ssa_var);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  189|      0|			}
  190|      0|		} FOREACH_PHI_USE_END();
  ------------------
  |  |  280|      0|	} \
  |  |  281|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (281:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  191|       |
  192|      0|		if ((type & (MAY_BE_ARRAY_KEY_ANY-MAY_BE_ARRAY_EMPTY)) && !(type & MAY_BE_ARRAY_OF_ANY)) {
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              		if ((type & (MAY_BE_ARRAY_KEY_ANY-MAY_BE_ARRAY_EMPTY)) && !(type & MAY_BE_ARRAY_OF_ANY)) {
  ------------------
  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  ------------------
              		if ((type & (MAY_BE_ARRAY_KEY_ANY-MAY_BE_ARRAY_EMPTY)) && !(type & MAY_BE_ARRAY_OF_ANY)) {
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (192:7): [True: 0, False: 0]
  |  Branch (192:61): [True: 0, False: 0]
  ------------------
  193|      0|			FAIL("var " VARFMT " has array key type but not value type\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  194|      0|		}
  195|      0|		if ((type & MAY_BE_ARRAY_OF_ANY) && !(type & (MAY_BE_ARRAY_KEY_ANY-MAY_BE_ARRAY_EMPTY))) {
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if ((type & MAY_BE_ARRAY_OF_ANY) && !(type & (MAY_BE_ARRAY_KEY_ANY-MAY_BE_ARRAY_EMPTY))) {
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              		if ((type & MAY_BE_ARRAY_OF_ANY) && !(type & (MAY_BE_ARRAY_KEY_ANY-MAY_BE_ARRAY_EMPTY))) {
  ------------------
  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  ------------------
  |  Branch (195:7): [True: 0, False: 0]
  |  Branch (195:39): [True: 0, False: 0]
  ------------------
  196|      0|			FAIL("var " VARFMT " has array value type but not key type\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  197|      0|		}
  198|      0|		if ((type & MAY_BE_REF) && ssa->var_info[i].ce) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (198:7): [True: 0, False: 0]
  |  Branch (198:30): [True: 0, False: 0]
  ------------------
  199|      0|			FAIL("var " VARFMT " may be ref but has ce\n", VAR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  200|      0|		}
  201|      0|	}
  202|       |
  203|       |	/* Instructions */
  204|     25|	FOREACH_INSTR_NUM(i) {
  ------------------
  |  |  313|      5|#define FOREACH_INSTR_NUM(i) do { \
  |  |  314|      5|	zend_basic_block *_block; \
  |  |  315|      5|	FOREACH_BLOCK(_block) { \
  |  |  ------------------
  |  |  |  |  302|      5|#define FOREACH_BLOCK(block) do { \
  |  |  |  |  303|     10|	for (uint32_t _i = 0; _i < ssa->cfg.blocks_count; _i++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (303:24): [True: 5, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  304|      5|		(block) = &ssa->cfg.blocks[_i]; \
  |  |  |  |  305|      5|		if (!((block)->flags & ZEND_BB_REACHABLE)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      5|#define ZEND_BB_REACHABLE        (1U<<31)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (305:7): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  306|      0|			continue; \
  |  |  |  |  307|      0|		}
  |  |  ------------------
  |  |  316|      5|		uint32_t _end = _block->start + _block->len; \
  |  |  317|     10|		for ((i) = _block->start; (i) < _end; (i)++) {
  |  |  ------------------
  |  |  |  Branch (317:29): [True: 5, False: 5]
  |  |  ------------------
  ------------------
  205|     25|		zend_ssa_op *ssa_op = &ssa->ops[i];
  206|     25|		zend_op *opline = &op_array->opcodes[i];
  207|     25|		if (is_var_type(opline->op1_type)) {
  ------------------
  |  Branch (207:7): [True: 0, False: 5]
  ------------------
  208|      0|			if (ssa_op->op1_use < 0 && ssa_op->op1_def < 0) {
  ------------------
  |  Branch (208:8): [True: 0, False: 0]
  |  Branch (208:31): [True: 0, False: 0]
  ------------------
  209|      0|				FAIL("var op1 of " INSTRFMT " does not use/def an ssa var\n", INSTR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  210|      0|			}
  211|      5|		} else {
  212|      5|			if (ssa_op->op1_use >= 0 || ssa_op->op1_def >= 0) {
  ------------------
  |  Branch (212:8): [True: 0, False: 5]
  |  Branch (212:32): [True: 0, False: 5]
  ------------------
  213|      0|				FAIL("non-var op1 of " INSTRFMT " uses or defs an ssa var\n", INSTR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  214|      0|			}
  215|      5|		}
  216|     25|		if (is_var_type(opline->op2_type)) {
  ------------------
  |  Branch (216:7): [True: 0, False: 5]
  ------------------
  217|      0|			if (ssa_op->op2_use < 0 && ssa_op->op2_def < 0) {
  ------------------
  |  Branch (217:8): [True: 0, False: 0]
  |  Branch (217:31): [True: 0, False: 0]
  ------------------
  218|      0|				FAIL("var op2 of " INSTRFMT " does not use/def an ssa var\n", INSTR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  219|      0|			}
  220|      5|		} else {
  221|      5|			if (ssa_op->op2_use >= 0 || ssa_op->op2_def >= 0) {
  ------------------
  |  Branch (221:8): [True: 0, False: 5]
  |  Branch (221:32): [True: 0, False: 5]
  ------------------
  222|      0|				FAIL("non-var op2 of " INSTRFMT " uses or defs an ssa var\n", INSTR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  223|      0|			}
  224|      5|		}
  225|     25|		if (is_var_type(opline->result_type)) {
  ------------------
  |  Branch (225:7): [True: 0, False: 5]
  ------------------
  226|      0|			if (ssa_op->result_use < 0 && ssa_op->result_def < 0) {
  ------------------
  |  Branch (226:8): [True: 0, False: 0]
  |  Branch (226:34): [True: 0, False: 0]
  ------------------
  227|      0|				FAIL("var result of " INSTRFMT " does not use/def an ssa var\n", INSTR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  228|      0|			}
  229|      5|		} else {
  230|      5|			if (ssa_op->result_use >= 0 || ssa_op->result_def >= 0) {
  ------------------
  |  Branch (230:8): [True: 0, False: 5]
  |  Branch (230:35): [True: 0, False: 5]
  ------------------
  231|      0|				FAIL("non-var result of " INSTRFMT " uses or defs an ssa var\n", INSTR(i));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  232|      0|			}
  233|      5|		}
  234|       |
  235|     25|		if (ssa_op->op1_use >= 0) {
  ------------------
  |  Branch (235:7): [True: 0, False: 5]
  ------------------
  236|      0|			if (ssa_op->op1_use >= ssa->vars_count) {
  ------------------
  |  Branch (236:8): [True: 0, False: 0]
  ------------------
  237|      0|				FAIL("op1 use %d out of range\n", ssa_op->op1_use);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  238|      0|			}
  239|      0|			if (!is_defined(ssa, op_array, ssa_op->op1_use)) {
  ------------------
  |  Branch (239:8): [True: 0, False: 0]
  ------------------
  240|      0|				FAIL("op1 use of " VARFMT " in " INSTRFMT " is not defined\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  241|      0|						VAR(ssa_op->op1_use), INSTR(i));
  242|      0|			}
  243|      0|			if (!is_in_use_chain(ssa, ssa_op->op1_use, i)) {
  ------------------
  |  Branch (243:8): [True: 0, False: 0]
  ------------------
  244|      0|				FAIL("op1 use of " VARFMT " in " INSTRFMT " not in use chain\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  245|      0|						VAR(ssa_op->op1_use), INSTR(i));
  246|      0|			}
  247|      0|			if (VAR_NUM(opline->op1.var) != ssa->vars[ssa_op->op1_use].var) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (247:8): [True: 0, False: 0]
  ------------------
  248|      0|				FAIL("op1 use of " VARFMT " does not match op %d of " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  249|      0|						VAR(ssa_op->op1_use), VAR_NUM(opline->op1.var), INSTR(i));
  250|      0|			}
  251|      0|		}
  252|     25|		if (ssa_op->op2_use >= 0) {
  ------------------
  |  Branch (252:7): [True: 0, False: 5]
  ------------------
  253|      0|			if (ssa_op->op2_use >= ssa->vars_count) {
  ------------------
  |  Branch (253:8): [True: 0, False: 0]
  ------------------
  254|      0|				FAIL("op2 use %d out of range\n", ssa_op->op2_use);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  255|      0|			}
  256|      0|			if (!is_defined(ssa, op_array, ssa_op->op2_use)) {
  ------------------
  |  Branch (256:8): [True: 0, False: 0]
  ------------------
  257|      0|				FAIL("op2 use of " VARFMT " in " INSTRFMT " is not defined\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  258|      0|						VAR(ssa_op->op2_use), INSTR(i));
  259|      0|			}
  260|      0|			if (!is_in_use_chain(ssa, ssa_op->op2_use, i)) {
  ------------------
  |  Branch (260:8): [True: 0, False: 0]
  ------------------
  261|      0|				FAIL("op2 use of " VARFMT " in " INSTRFMT " not in use chain\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  262|      0|						VAR(ssa_op->op2_use), INSTR(i));
  263|      0|			}
  264|      0|			if (VAR_NUM(opline->op2.var) != ssa->vars[ssa_op->op2_use].var) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (264:8): [True: 0, False: 0]
  ------------------
  265|      0|				FAIL("op2 use of " VARFMT " does not match op %d of " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  266|      0|						VAR(ssa_op->op2_use), VAR_NUM(opline->op2.var), INSTR(i));
  267|      0|			}
  268|      0|		}
  269|     25|		if (ssa_op->result_use >= 0) {
  ------------------
  |  Branch (269:7): [True: 0, False: 5]
  ------------------
  270|      0|			if (ssa_op->result_use >= ssa->vars_count) {
  ------------------
  |  Branch (270:8): [True: 0, False: 0]
  ------------------
  271|      0|				FAIL("result use %d out of range\n", ssa_op->result_use);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  272|      0|			}
  273|      0|			if (!is_defined(ssa, op_array, ssa_op->result_use)) {
  ------------------
  |  Branch (273:8): [True: 0, False: 0]
  ------------------
  274|      0|				FAIL("result use of " VARFMT " in " INSTRFMT " is not defined\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  275|      0|						VAR(ssa_op->result_use), INSTR(i));
  276|      0|			}
  277|      0|			if (!is_in_use_chain(ssa, ssa_op->result_use, i)) {
  ------------------
  |  Branch (277:8): [True: 0, False: 0]
  ------------------
  278|      0|				FAIL("result use of " VARFMT " in " INSTRFMT " not in use chain\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  279|      0|					VAR(ssa_op->result_use), INSTR(i));
  280|      0|			}
  281|      0|			if (VAR_NUM(opline->result.var) != ssa->vars[ssa_op->result_use].var) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (281:8): [True: 0, False: 0]
  ------------------
  282|      0|				FAIL("result use of " VARFMT " does not match op %d of " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  283|      0|						VAR(ssa_op->result_use), VAR_NUM(opline->result.var), INSTR(i));
  284|      0|			}
  285|      0|		}
  286|     25|		if (ssa_op->op1_def >= 0) {
  ------------------
  |  Branch (286:7): [True: 0, False: 5]
  ------------------
  287|      0|			if (ssa_op->op1_def >= ssa->vars_count) {
  ------------------
  |  Branch (287:8): [True: 0, False: 0]
  ------------------
  288|      0|				FAIL("op1 def %d out of range\n", ssa_op->op1_def);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  289|      0|			}
  290|      0|			if (ssa->vars[ssa_op->op1_def].definition != i) {
  ------------------
  |  Branch (290:8): [True: 0, False: 0]
  ------------------
  291|      0|				FAIL("op1 def of " VARFMT " in " INSTRFMT " invalid\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  292|      0|						VAR(ssa_op->op1_def), INSTR(i));
  293|      0|			}
  294|      0|			if (VAR_NUM(opline->op1.var) != ssa->vars[ssa_op->op1_def].var) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (294:8): [True: 0, False: 0]
  ------------------
  295|      0|				FAIL("op1 def of " VARFMT " does not match op %d of " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  296|      0|						VAR(ssa_op->op1_def), VAR_NUM(opline->op1.var), INSTR(i));
  297|      0|			}
  298|      0|		}
  299|     25|		if (ssa_op->op2_def >= 0) {
  ------------------
  |  Branch (299:7): [True: 0, False: 5]
  ------------------
  300|      0|			if (ssa_op->op2_def >= ssa->vars_count) {
  ------------------
  |  Branch (300:8): [True: 0, False: 0]
  ------------------
  301|      0|				FAIL("op2 def %d out of range\n", ssa_op->op2_def);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  302|      0|			}
  303|      0|			if (ssa->vars[ssa_op->op2_def].definition != i) {
  ------------------
  |  Branch (303:8): [True: 0, False: 0]
  ------------------
  304|      0|				FAIL("op2 def of " VARFMT " in " INSTRFMT " invalid\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  305|      0|						VAR(ssa_op->op2_def), INSTR(i));
  306|      0|			}
  307|      0|			if (VAR_NUM(opline->op2.var) != ssa->vars[ssa_op->op2_def].var) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (307:8): [True: 0, False: 0]
  ------------------
  308|      0|				FAIL("op2 def of " VARFMT " does not match op %d of " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  309|      0|						VAR(ssa_op->op2_def), VAR_NUM(opline->op2.var), INSTR(i));
  310|      0|			}
  311|      0|		}
  312|     25|		if (ssa_op->result_def >= 0) {
  ------------------
  |  Branch (312:7): [True: 0, False: 5]
  ------------------
  313|      0|			if (ssa_op->result_def >= ssa->vars_count) {
  ------------------
  |  Branch (313:8): [True: 0, False: 0]
  ------------------
  314|      0|				FAIL("result def %d out of range\n", ssa_op->result_def);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  315|      0|			}
  316|      0|			if (ssa->vars[ssa_op->result_def].definition != i) {
  ------------------
  |  Branch (316:8): [True: 0, False: 0]
  ------------------
  317|      0|				FAIL("result def of " VARFMT " in " INSTRFMT " invalid\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  318|      0|						VAR(ssa_op->result_def), INSTR(i));
  319|      0|			}
  320|      0|			if (VAR_NUM(opline->result.var) != ssa->vars[ssa_op->result_def].var) {
  ------------------
  |  |   33|      0|#define VAR_NUM(v) EX_VAR_TO_NUM(v)
  |  |  ------------------
  |  |  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (320:8): [True: 0, False: 0]
  ------------------
  321|      0|				FAIL("result def of " VARFMT " does not match op %d of " INSTRFMT "\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  322|      0|						VAR(ssa_op->result_def), VAR_NUM(opline->result.var), INSTR(i));
  323|      0|			}
  324|      0|		}
  325|     25|	} FOREACH_INSTR_NUM_END();
  ------------------
  |  |  319|      5|		} \
  |  |  320|      5|	} FOREACH_BLOCK_END(); \
  |  |  ------------------
  |  |  |  |  309|      5|	} \
  |  |  |  |  310|      5|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (310:10): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  321|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (321:10): [Folded, False: 5]
  |  |  ------------------
  ------------------
  326|       |
  327|       |	/* Phis */
  328|     10|	FOREACH_PHI(phi) {
  ------------------
  |  |  293|      5|#define FOREACH_PHI(phi) do { \
  |  |  294|     10|	for (uint32_t _i = 0; _i < ssa->cfg.blocks_count; _i++) { \
  |  |  ------------------
  |  |  |  Branch (294:24): [True: 5, False: 5]
  |  |  ------------------
  |  |  295|      5|		phi = ssa->blocks[_i].phis; \
  |  |  296|      5|		for (; phi; phi = phi->next) {
  |  |  ------------------
  |  |  |  Branch (296:10): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  329|     10|		uint32_t num_sources = NUM_PHI_SOURCES(phi);
  ------------------
  |  |  262|      0|	((phi)->pi >= 0 ? 1 : (ssa->cfg.blocks[(phi)->block].predecessors_count))
  |  |  ------------------
  |  |  |  Branch (262:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  330|     10|		for (i = 0; i < num_sources; i++) {
  ------------------
  |  Branch (330:15): [True: 0, False: 0]
  ------------------
  331|      0|			int source = phi->sources[i];
  332|      0|			if (source < 0) {
  ------------------
  |  Branch (332:8): [True: 0, False: 0]
  ------------------
  333|      0|				FAIL(VARFMT " negative source\n", VAR(phi->ssa_var));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  334|      0|			}
  335|      0|			if (!is_in_phi_use_chain(ssa, source, phi)) {
  ------------------
  |  Branch (335:8): [True: 0, False: 0]
  ------------------
  336|      0|				FAIL(VARFMT " not in phi use chain of %d\n", VAR(phi->ssa_var), source);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  337|      0|			}
  338|      0|			if (ssa->vars[source].var != ssa->vars[phi->ssa_var].var) {
  ------------------
  |  Branch (338:8): [True: 0, False: 0]
  ------------------
  339|      0|				FAIL(VARFMT " source of phi for " VARFMT "\n", VAR(source), VAR(phi->ssa_var));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  340|      0|			}
  341|      0|			if (phi->use_chains[i]) {
  ------------------
  |  Branch (341:8): [True: 0, False: 0]
  ------------------
  342|      0|				int j;
  343|      0|				for (j = i + 1; j < num_sources; j++) {
  ------------------
  |  Branch (343:21): [True: 0, False: 0]
  ------------------
  344|      0|					if (phi->sources[j] == source && phi->use_chains[j]) {
  ------------------
  |  Branch (344:10): [True: 0, False: 0]
  |  Branch (344:39): [True: 0, False: 0]
  ------------------
  345|      0|						FAIL("use chain for source " VARFMT " of phi " VARFMT
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  346|      0|							" at %d despite earlier use\n", VAR(source), VAR(phi->ssa_var), j);
  347|      0|					}
  348|      0|				}
  349|      0|			}
  350|      0|		}
  351|     10|		if (ssa->vars[phi->ssa_var].definition_phi != phi) {
  ------------------
  |  Branch (351:7): [True: 0, False: 0]
  ------------------
  352|      0|			FAIL(VARFMT " does not define this phi\n", VAR(phi->ssa_var));
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  ------------------
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  |  Branch (100:18): [True: 0, False: 0]
  |  |  ------------------
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  353|      0|		}
  354|     10|	} FOREACH_PHI_END();
  ------------------
  |  |  298|      0|		} \
  |  |  299|      5|	} \
  |  |  300|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (300:10): [Folded, False: 5]
  |  |  ------------------
  ------------------
  355|       |
  356|       |	/* Blocks */
  357|     10|	for (i = 0; i < cfg->blocks_count; i++) {
  ------------------
  |  Branch (357:14): [True: 5, False: 5]
  ------------------
  358|      5|		zend_basic_block *block = &cfg->blocks[i];
  359|      5|		int *predecessors = &cfg->predecessors[block->predecessor_offset];
  360|      5|		uint32_t j;
  361|       |
  362|      5|		if (i != 0 && block->start < (block-1)->start + (block-1)->len) {
  ------------------
  |  Branch (362:7): [True: 0, False: 5]
  |  Branch (362:17): [True: 0, False: 0]
  ------------------
  363|      0|			FAIL("Block %d start %d smaller previous end %d\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  364|      0|				i, block->start, (block-1)->start + (block-1)->len);
  365|      0|		}
  366|      5|		if (i != cfg->blocks_count-1 && block->start + block->len > (block+1)->start) {
  ------------------
  |  Branch (366:7): [True: 0, False: 5]
  |  Branch (366:35): [True: 0, False: 0]
  ------------------
  367|      0|			FAIL("Block %d end %d greater next start %d\n",
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  368|      0|				i, block->start + block->len, (block+1)->start);
  369|      0|		}
  370|       |
  371|     10|		for (j = block->start; j < block->start + block->len; j++) {
  ------------------
  |  Branch (371:26): [True: 5, False: 5]
  ------------------
  372|      5|			if (cfg->map[j] != i) {
  ------------------
  |  Branch (372:8): [True: 0, False: 5]
  ------------------
  373|      0|				FAIL("Instr " INSTRFMT " not associated with block %d\n", INSTR(j), i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  374|      0|			}
  375|      5|		}
  376|       |
  377|      5|		if (!(block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      5|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (377:7): [True: 0, False: 5]
  ------------------
  378|      0|			if (ssa->blocks[i].phis) {
  ------------------
  |  Branch (378:8): [True: 0, False: 0]
  ------------------
  379|      0|				FAIL("Unreachable block %d has phis\n", i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  380|      0|			}
  381|      0|			continue;
  382|      0|		}
  383|       |
  384|      5|		for (uint32_t s = 0; s < block->successors_count; s++) {
  ------------------
  |  Branch (384:24): [True: 0, False: 5]
  ------------------
  385|      0|			zend_basic_block *next_block;
  386|      0|			if (block->successors[s] < 0) {
  ------------------
  |  Branch (386:8): [True: 0, False: 0]
  ------------------
  387|      0|				FAIL("Successor number %d of %d negative", s, i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  388|      0|			}
  389|      0|			next_block = &cfg->blocks[block->successors[s]];
  390|      0|			if (!(next_block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (390:8): [True: 0, False: 0]
  ------------------
  391|      0|				FAIL("Successor %d of %d not reachable\n", block->successors[s], i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  392|      0|			}
  393|      0|			if (!is_in_predecessors(cfg, next_block, i)) {
  ------------------
  |  Branch (393:8): [True: 0, False: 0]
  ------------------
  394|      0|				FAIL("Block %d predecessors missing %d\n", block->successors[s], i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  395|      0|			}
  396|      0|		}
  397|       |
  398|      5|		for (j = 0; j < block->predecessors_count; j++) {
  ------------------
  |  Branch (398:15): [True: 0, False: 5]
  ------------------
  399|      0|			if (predecessors[j] >= 0) {
  ------------------
  |  Branch (399:8): [True: 0, False: 0]
  ------------------
  400|      0|				zend_basic_block *prev_block = &cfg->blocks[predecessors[j]];
  401|      0|				if (!(prev_block->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (401:9): [True: 0, False: 0]
  ------------------
  402|      0|					FAIL("Predecessor %d of %d not reachable\n", predecessors[j], i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  403|      0|				}
  404|      0|				if (!is_in_successors(prev_block, i)) {
  ------------------
  |  Branch (404:9): [True: 0, False: 0]
  ------------------
  405|      0|					FAIL("Block %d successors missing %d\n", predecessors[j], i);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  406|      0|				}
  407|      0|				for (uint32_t k = 0; k < block->predecessors_count; k++) {
  ------------------
  |  Branch (407:26): [True: 0, False: 0]
  ------------------
  408|      0|					if (k != j && predecessors[k] == predecessors[j]) {
  ------------------
  |  Branch (408:10): [True: 0, False: 0]
  |  Branch (408:20): [True: 0, False: 0]
  ------------------
  409|      0|						FAIL("Block %d has duplicate predecessor %d\n", i, predecessors[j]);
  ------------------
  |  |   94|      0|#define FAIL(...) do { \
  |  |   95|      0|	if (status == SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (95:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   96|      0|		fprintf(stderr, "\nIn function %s::%s (%s):\n", \
  |  |   97|      0|			op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (97:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|			op_array->function_name ? ZSTR_VAL(op_array->function_name) : "{main}", extra); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (98:4): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|	} \
  |  |  100|      0|	fprintf(stderr, __VA_ARGS__); \
  |  |  101|      0|	status = FAILURE; \
  |  |  102|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (102:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  410|      0|					}
  411|      0|				}
  412|      0|			}
  413|      0|		}
  414|      5|	}
  415|       |
  416|      5|finish:
  417|      5|	if (status == FAILURE) {
  ------------------
  |  Branch (417:6): [True: 0, False: 5]
  ------------------
  418|      0|		zend_dump_op_array(op_array, ZEND_DUMP_SSA, "at SSA integrity verification", ssa);
  ------------------
  |  |   28|      0|#define ZEND_DUMP_SSA                  (1<<3)
  ------------------
  419|       |		ZEND_ASSERT(0 && "SSA integrity verification failed");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (419:3): [Folded, False: 0]
  |  Branch (419:3): [True: 0, False: 0]
  |  Branch (419:3): [Folded, False: 0]
  |  Branch (419:3): [True: 0, False: 0]
  ------------------
  420|      0|	}
  421|      5|}
dfa_pass.c:is_var_type:
   85|     15|static inline bool is_var_type(uint8_t type) {
   86|     15|	return (type & (IS_CV|IS_VAR|IS_TMP_VAR)) != 0;
  ------------------
  |  |  867|     15|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	return (type & (IS_CV|IS_VAR|IS_TMP_VAR)) != 0;
  ------------------
  |  |  866|     15|#define IS_VAR		(1<<2)
  ------------------
              	return (type & (IS_CV|IS_VAR|IS_TMP_VAR)) != 0;
  ------------------
  |  |  865|     15|#define IS_TMP_VAR	(1<<1)
  ------------------
   87|     15|}

zend_analyze_calls:
   43|      1|{
   44|      1|	zend_op *opline = op_array->opcodes;
   45|      1|	zend_op *end = opline + op_array->last;
   46|      1|	zend_function *func;
   47|      1|	zend_call_info *call_info;
   48|      1|	int call = 0;
   49|      1|	zend_call_info **call_stack;
   50|      1|	ALLOCA_FLAG(use_heap);
   51|      1|	bool is_prototype;
   52|       |
   53|      1|	call_stack = do_alloca((op_array->last / 2) * sizeof(zend_call_info*), use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   54|      1|	call_info = NULL;
   55|      2|	while (opline != end) {
  ------------------
  |  Branch (55:9): [True: 1, False: 1]
  ------------------
   56|      1|		switch (opline->opcode) {
  ------------------
  |  Branch (56:11): [True: 0, False: 1]
  ------------------
   57|      0|			case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (57:4): [True: 0, False: 1]
  ------------------
   58|      0|			case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|      0|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (58:4): [True: 0, False: 1]
  ------------------
   59|      0|			case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|      0|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (59:4): [True: 0, False: 1]
  ------------------
   60|      0|			case ZEND_INIT_PARENT_PROPERTY_HOOK_CALL:
  ------------------
  |  |  331|      0|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (60:4): [True: 0, False: 1]
  ------------------
   61|      0|				call_stack[call] = call_info;
   62|      0|				func = zend_optimizer_get_called_func(
   63|      0|					script, op_array, opline, &is_prototype);
   64|      0|				if (func) {
  ------------------
  |  Branch (64:9): [True: 0, False: 0]
  ------------------
   65|      0|					call_info = zend_arena_calloc(arena, 1, sizeof(zend_call_info) + (sizeof(zend_send_arg_info) * ((int)opline->extended_value - 1)));
   66|      0|					call_info->caller_op_array = op_array;
   67|      0|					call_info->caller_init_opline = opline;
   68|      0|					call_info->caller_call_opline = NULL;
   69|      0|					call_info->callee_func = func;
   70|      0|					call_info->num_args = opline->extended_value;
   71|      0|					call_info->next_callee = func_info->callee_info;
   72|      0|					call_info->is_prototype = is_prototype;
   73|      0|					call_info->is_frameless = false;
   74|      0|					func_info->callee_info = call_info;
   75|       |
   76|      0|					if (build_flags & ZEND_CALL_TREE) {
  ------------------
  |  |   98|      0|#define ZEND_CALL_TREE                 (1<<23)
  ------------------
  |  Branch (76:10): [True: 0, False: 0]
  ------------------
   77|      0|						call_info->next_caller = NULL;
   78|      0|					} else if (func->type == ZEND_INTERNAL_FUNCTION
  ------------------
  |  Branch (78:17): [True: 0, False: 0]
  ------------------
   79|      0|					 || func->op_array.filename != script->filename) {
  ------------------
  |  Branch (79:10): [True: 0, False: 0]
  ------------------
   80|      0|						call_info->next_caller = NULL;
   81|      0|					} else {
   82|      0|						zend_func_info *callee_func_info = ZEND_FUNC_INFO(&func->op_array);
  ------------------
  |  |   46|      0|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
   83|      0|						if (callee_func_info) {
  ------------------
  |  Branch (83:11): [True: 0, False: 0]
  ------------------
   84|      0|							call_info->next_caller = callee_func_info->caller_info;
   85|      0|							callee_func_info->caller_info = call_info;
   86|      0|						} else {
   87|      0|							call_info->next_caller = NULL;
   88|      0|						}
   89|      0|					}
   90|      0|				} else {
   91|      0|					call_info = NULL;
   92|      0|				}
   93|      0|				call++;
   94|      0|				break;
   95|      0|			case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      0|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (95:4): [True: 0, False: 1]
  ------------------
   96|      0|			case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (96:4): [True: 0, False: 1]
  ------------------
   97|      0|			case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|      0|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (97:4): [True: 0, False: 1]
  ------------------
   98|      0|			case ZEND_NEW:
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (98:4): [True: 0, False: 1]
  ------------------
   99|      0|			case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|      0|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (99:4): [True: 0, False: 1]
  ------------------
  100|      0|				call_stack[call] = call_info;
  101|      0|				call_info = NULL;
  102|      0|				call++;
  103|      0|				break;
  104|      0|			case ZEND_FRAMELESS_ICALL_0:
  ------------------
  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  ------------------
  |  Branch (104:4): [True: 0, False: 1]
  ------------------
  105|      0|			case ZEND_FRAMELESS_ICALL_1:
  ------------------
  |  |  327|      0|#define ZEND_FRAMELESS_ICALL_1              205
  ------------------
  |  Branch (105:4): [True: 0, False: 1]
  ------------------
  106|      0|			case ZEND_FRAMELESS_ICALL_2:
  ------------------
  |  |  328|      0|#define ZEND_FRAMELESS_ICALL_2              206
  ------------------
  |  Branch (106:4): [True: 0, False: 1]
  ------------------
  107|      0|			case ZEND_FRAMELESS_ICALL_3: {
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (107:4): [True: 0, False: 1]
  ------------------
  108|      0|				func = ZEND_FLF_FUNC(opline);
  ------------------
  |  |   38|      0|#define ZEND_FLF_FUNC(opline) (zend_flf_functions[(opline)->extended_value])
  ------------------
  109|      0|				zend_call_info *call_info = zend_arena_calloc(arena, 1, sizeof(zend_call_info));
  110|      0|				call_info->caller_op_array = op_array;
  111|      0|				call_info->caller_init_opline = opline;
  112|      0|				call_info->caller_call_opline = NULL;
  113|      0|				call_info->callee_func = func;
  114|      0|				call_info->num_args = ZEND_FLF_NUM_ARGS(opline->opcode);
  ------------------
  |  |   37|      0|#define ZEND_FLF_NUM_ARGS(opcode) ((opcode) - ZEND_FRAMELESS_ICALL_0)
  |  |  ------------------
  |  |  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  |  |  ------------------
  ------------------
  115|      0|				call_info->next_callee = func_info->callee_info;
  116|      0|				call_info->is_prototype = false;
  117|      0|				call_info->is_frameless = true;
  118|      0|				call_info->next_caller = NULL;
  119|      0|				func_info->callee_info = call_info;
  120|      0|				break;
  121|      0|			}
  122|      0|			case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (122:4): [True: 0, False: 1]
  ------------------
  123|      0|			case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (123:4): [True: 0, False: 1]
  ------------------
  124|      0|			case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (124:4): [True: 0, False: 1]
  ------------------
  125|      0|			case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (125:4): [True: 0, False: 1]
  ------------------
  126|      0|			case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (126:4): [True: 0, False: 1]
  ------------------
  127|      0|				func_info->flags |= ZEND_FUNC_HAS_CALLS;
  ------------------
  |  |   24|      0|#define ZEND_FUNC_HAS_CALLS                (1<<1)
  ------------------
  128|      0|				if (call_info) {
  ------------------
  |  Branch (128:9): [True: 0, False: 0]
  ------------------
  129|      0|					call_info->caller_call_opline = opline;
  130|      0|				}
  131|      0|				call--;
  132|      0|				call_info = call_stack[call];
  133|      0|				break;
  134|      0|			case ZEND_SEND_VAL:
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (134:4): [True: 0, False: 1]
  ------------------
  135|      0|			case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (135:4): [True: 0, False: 1]
  ------------------
  136|      0|			case ZEND_SEND_VAL_EX:
  ------------------
  |  |  238|      0|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (136:4): [True: 0, False: 1]
  ------------------
  137|      0|			case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (137:4): [True: 0, False: 1]
  ------------------
  138|      0|			case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      0|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (138:4): [True: 0, False: 1]
  ------------------
  139|      0|			case ZEND_SEND_REF:
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (139:4): [True: 0, False: 1]
  ------------------
  140|      0|			case ZEND_SEND_VAR_NO_REF:
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  |  Branch (140:4): [True: 0, False: 1]
  ------------------
  141|      0|			case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|      0|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (141:4): [True: 0, False: 1]
  ------------------
  142|      0|			case ZEND_SEND_USER:
  ------------------
  |  |  242|      0|#define ZEND_SEND_USER                      120
  ------------------
  |  Branch (142:4): [True: 0, False: 1]
  ------------------
  143|      0|				if (call_info) {
  ------------------
  |  Branch (143:9): [True: 0, False: 0]
  ------------------
  144|      0|					if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (144:10): [True: 0, False: 0]
  ------------------
  145|      0|						call_info->named_args = true;
  146|      0|						break;
  147|      0|					}
  148|       |
  149|      0|					uint32_t num = opline->op2.num;
  150|      0|					if (num > 0) {
  ------------------
  |  Branch (150:10): [True: 0, False: 0]
  ------------------
  151|      0|						num--;
  152|      0|					}
  153|      0|					call_info->arg_info[num].opline = opline;
  154|      0|				}
  155|      0|				break;
  156|      0|			case ZEND_SEND_ARRAY:
  ------------------
  |  |  241|      0|#define ZEND_SEND_ARRAY                     119
  ------------------
  |  Branch (156:4): [True: 0, False: 1]
  ------------------
  157|      0|			case ZEND_SEND_UNPACK:
  ------------------
  |  |  287|      0|#define ZEND_SEND_UNPACK                    165
  ------------------
  |  Branch (157:4): [True: 0, False: 1]
  ------------------
  158|      0|				if (call_info) {
  ------------------
  |  Branch (158:9): [True: 0, False: 0]
  ------------------
  159|      0|					call_info->send_unpack = true;
  160|      0|				}
  161|      0|				break;
  162|      1|		}
  163|      1|		opline++;
  164|      1|	}
  165|      1|	free_alloca(call_stack, use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  166|      1|}
zend_build_call_graph:
  237|      1|{
  238|      1|	call_graph->op_arrays_count = 0;
  239|      1|	zend_foreach_op_array(script, zend_op_array_calc, call_graph);
  240|       |
  241|      1|	call_graph->op_arrays = (zend_op_array**)zend_arena_calloc(arena, call_graph->op_arrays_count, sizeof(zend_op_array*));
  242|      1|	call_graph->func_infos = (zend_func_info*)zend_arena_calloc(arena, call_graph->op_arrays_count, sizeof(zend_func_info));
  243|      1|	call_graph->op_arrays_count = 0;
  244|      1|	zend_foreach_op_array(script, zend_op_array_collect, call_graph);
  245|      1|}
zend_analyze_call_graph:
  249|      1|{
  250|      2|	for (uint32_t i = 0; i < call_graph->op_arrays_count; i++) {
  ------------------
  |  Branch (250:23): [True: 1, False: 1]
  ------------------
  251|      1|		zend_analyze_calls(arena, script, 0, call_graph->op_arrays[i], call_graph->func_infos + i);
  252|      1|	}
  253|      1|	zend_analyze_recursion(call_graph);
  254|      1|	zend_sort_op_arrays(call_graph);
  255|      1|}
zend_build_call_map:
  259|      1|{
  260|      1|	zend_call_info **map, *call;
  261|      1|	if (!info->callee_info) {
  ------------------
  |  Branch (261:6): [True: 1, False: 0]
  ------------------
  262|       |		/* Don't build call map if function contains no calls */
  263|      1|		return NULL;
  264|      1|	}
  265|       |
  266|      0|	map = zend_arena_calloc(arena, sizeof(zend_call_info *), op_array->last);
  267|      0|	for (call = info->callee_info; call; call = call->next_callee) {
  ------------------
  |  Branch (267:33): [True: 0, False: 0]
  ------------------
  268|      0|		map[call->caller_init_opline - op_array->opcodes] = call;
  269|      0|		if (call->caller_call_opline) {
  ------------------
  |  Branch (269:7): [True: 0, False: 0]
  ------------------
  270|      0|			map[call->caller_call_opline - op_array->opcodes] = call;
  271|      0|		}
  272|      0|		if (!call->is_frameless) {
  ------------------
  |  Branch (272:7): [True: 0, False: 0]
  ------------------
  273|      0|			for (uint32_t i = 0; i < call->num_args; i++) {
  ------------------
  |  Branch (273:25): [True: 0, False: 0]
  ------------------
  274|      0|				if (call->arg_info[i].opline) {
  ------------------
  |  Branch (274:9): [True: 0, False: 0]
  ------------------
  275|      0|					map[call->arg_info[i].opline - op_array->opcodes] = call;
  276|      0|				}
  277|      0|			}
  278|      0|		}
  279|      0|	}
  280|      0|	return map;
  281|      1|}
zend_call_graph.c:zend_op_array_calc:
   26|      1|{
   27|      1|	zend_call_graph *call_graph = context;
   28|      1|	call_graph->op_arrays_count++;
   29|      1|}
zend_call_graph.c:zend_op_array_collect:
   32|      1|{
   33|      1|	zend_call_graph *call_graph = context;
   34|      1|	zend_func_info *func_info = call_graph->func_infos + call_graph->op_arrays_count;
   35|       |
   36|      1|	ZEND_SET_FUNC_INFO(op_array, func_info);
  ------------------
  |  |   48|      1|#define ZEND_SET_FUNC_INFO(op_array, info) do { \
  |  |   49|      1|		zend_func_info** pinfo = (zend_func_info**)&(op_array)->reserved[zend_func_info_rid]; \
  |  |   50|      1|		*pinfo = info; \
  |  |   51|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (51:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
   37|      1|	call_graph->op_arrays[call_graph->op_arrays_count] = op_array;
   38|      1|	func_info->num = call_graph->op_arrays_count;
   39|      1|	call_graph->op_arrays_count++;
   40|      1|}
zend_call_graph.c:zend_analyze_recursion:
  195|      1|{
  196|      1|	const zend_op_array *op_array;
  197|      1|	zend_func_info *func_info;
  198|      1|	zend_call_info *call_info;
  199|      1|	uint32_t set_len = zend_bitset_len(call_graph->op_arrays_count);
  200|      1|	zend_bitset visited;
  201|      1|	ALLOCA_FLAG(use_heap);
  202|       |
  203|      1|	visited = ZEND_BITSET_ALLOCA(set_len, use_heap);
  ------------------
  |  |   43|      1|	(zend_bitset)do_alloca((n) * ZEND_BITSET_ELM_SIZE, use_heap)
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|      2|	for (uint32_t i = 0; i < call_graph->op_arrays_count; i++) {
  ------------------
  |  Branch (204:23): [True: 1, False: 1]
  ------------------
  205|      1|		op_array = call_graph->op_arrays[i];
  206|      1|		func_info = call_graph->func_infos + i;
  207|      1|		call_info = func_info->caller_info;
  208|      1|		for (; call_info; call_info = call_info->next_caller) {
  ------------------
  |  Branch (208:10): [True: 0, False: 1]
  ------------------
  209|      0|			if (call_info->is_prototype) {
  ------------------
  |  Branch (209:8): [True: 0, False: 0]
  ------------------
  210|       |				/* Might be calling an overridden child method and not actually recursive. */
  211|      0|				continue;
  212|      0|			}
  213|      0|			if (call_info->caller_op_array == op_array) {
  ------------------
  |  Branch (213:8): [True: 0, False: 0]
  ------------------
  214|      0|				call_info->recursive = true;
  215|      0|				func_info->flags |= ZEND_FUNC_RECURSIVE | ZEND_FUNC_RECURSIVE_DIRECTLY;
  ------------------
  |  |   29|      0|#define ZEND_FUNC_RECURSIVE                (1<<7)
  ------------------
              				func_info->flags |= ZEND_FUNC_RECURSIVE | ZEND_FUNC_RECURSIVE_DIRECTLY;
  ------------------
  |  |   30|      0|#define ZEND_FUNC_RECURSIVE_DIRECTLY       (1<<8)
  ------------------
  216|      0|			} else {
  217|      0|				memset(visited, 0, sizeof(zend_ulong) * set_len);
  218|      0|				if (zend_is_indirectly_recursive(op_array, call_info->caller_op_array, visited)) {
  ------------------
  |  Branch (218:9): [True: 0, False: 0]
  ------------------
  219|      0|					call_info->recursive = true;
  220|      0|					func_info->flags |= ZEND_FUNC_RECURSIVE | ZEND_FUNC_RECURSIVE_INDIRECTLY;
  ------------------
  |  |   29|      0|#define ZEND_FUNC_RECURSIVE                (1<<7)
  ------------------
              					func_info->flags |= ZEND_FUNC_RECURSIVE | ZEND_FUNC_RECURSIVE_INDIRECTLY;
  ------------------
  |  |   31|      0|#define ZEND_FUNC_RECURSIVE_INDIRECTLY     (1<<9)
  ------------------
  221|      0|				}
  222|      0|			}
  223|      0|		}
  224|      1|	}
  225|       |
  226|       |	free_alloca(visited, use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  227|      1|}
zend_call_graph.c:zend_sort_op_arrays:
  230|      1|{
  231|      1|	(void) call_graph;
  232|       |
  233|       |	// TODO: perform topological sort of cyclic call graph
  234|      1|}

zend_cfg_remark_reachable_blocks:
  229|      1|{
  230|      1|	zend_basic_block *blocks = cfg->blocks;
  231|      1|	uint32_t i;
  232|      1|	uint32_t start = 0;
  233|       |
  234|      1|	for (i = 0; i < cfg->blocks_count; i++) {
  ------------------
  |  Branch (234:14): [True: 1, False: 0]
  ------------------
  235|      1|		if (blocks[i].flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (235:7): [True: 1, False: 0]
  ------------------
  236|      1|			start = i;
  237|      1|			i++;
  238|      1|			break;
  239|      1|		}
  240|      1|	}
  241|       |
  242|       |	/* clear all flags */
  243|      2|	for (i = 0; i < cfg->blocks_count; i++) {
  ------------------
  |  Branch (243:14): [True: 1, False: 1]
  ------------------
  244|      1|		blocks[i].flags = 0;
  245|      1|	}
  246|       |
  247|      1|	zend_mark_reachable_blocks(op_array, cfg, start);
  248|      1|}
zend_build_cfg:
  270|      2|{
  271|      2|	uint32_t flags = 0;
  272|      2|	uint32_t i;
  273|      2|	uint32_t *block_map;
  274|      2|	zend_function *fn;
  275|      2|	int blocks_count = 0;
  276|      2|	zend_basic_block *blocks;
  277|      2|	zval *zv;
  278|      2|	bool extra_entry_block = false;
  279|       |
  280|      2|	cfg->flags = build_flags & (ZEND_CFG_STACKLESS|ZEND_CFG_RECV_ENTRY);
  ------------------
  |  |   92|      2|#define ZEND_CFG_STACKLESS             (1<<30)
  ------------------
              	cfg->flags = build_flags & (ZEND_CFG_STACKLESS|ZEND_CFG_RECV_ENTRY);
  ------------------
  |  |   97|      2|#define ZEND_CFG_RECV_ENTRY            (1<<24)
  ------------------
  281|       |
  282|      2|	cfg->map = block_map = zend_arena_calloc(arena, op_array->last, sizeof(uint32_t));
  283|       |
  284|       |	/* Build CFG, Step 1: Find basic blocks starts, calculate number of blocks */
  285|      2|	BB_START(0);
  ------------------
  |  |  264|      2|#define BB_START(i) do { \
  |  |  265|      2|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 2, False: 0]
  |  |  ------------------
  |  |  266|      2|		block_map[i]++; \
  |  |  267|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  286|      4|	for (i = 0; i < op_array->last; i++) {
  ------------------
  |  Branch (286:14): [True: 2, False: 2]
  ------------------
  287|      2|		zend_op *opline = op_array->opcodes + i;
  288|      2|		switch (opline->opcode) {
  ------------------
  |  Branch (288:11): [True: 2, False: 0]
  ------------------
  289|      0|			case ZEND_RECV:
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (289:4): [True: 0, False: 2]
  ------------------
  290|      0|			case ZEND_RECV_INIT:
  ------------------
  |  |  187|      0|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (290:4): [True: 0, False: 2]
  ------------------
  291|      0|				if (build_flags & ZEND_CFG_RECV_ENTRY) {
  ------------------
  |  |   97|      0|#define ZEND_CFG_RECV_ENTRY            (1<<24)
  ------------------
  |  Branch (291:9): [True: 0, False: 0]
  ------------------
  292|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  293|      0|				}
  294|      0|				break;
  295|      2|			case ZEND_RETURN:
  ------------------
  |  |  185|      2|#define ZEND_RETURN                          62
  ------------------
  |  Branch (295:4): [True: 2, False: 0]
  ------------------
  296|      2|			case ZEND_RETURN_BY_REF:
  ------------------
  |  |  233|      2|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (296:4): [True: 0, False: 2]
  ------------------
  297|      2|			case ZEND_GENERATOR_RETURN:
  ------------------
  |  |  283|      2|#define ZEND_GENERATOR_RETURN               161
  ------------------
  |  Branch (297:4): [True: 0, False: 2]
  ------------------
  298|      2|			case ZEND_VERIFY_NEVER_TYPE:
  ------------------
  |  |  323|      2|#define ZEND_VERIFY_NEVER_TYPE              201
  ------------------
  |  Branch (298:4): [True: 0, False: 2]
  ------------------
  299|      2|				if (i + 1 < op_array->last) {
  ------------------
  |  Branch (299:9): [True: 0, False: 2]
  ------------------
  300|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  301|      0|				}
  302|      2|				break;
  303|      0|			case ZEND_MATCH_ERROR:
  ------------------
  |  |  319|      0|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (303:4): [True: 0, False: 2]
  ------------------
  304|      0|			case ZEND_THROW:
  ------------------
  |  |  230|      0|#define ZEND_THROW                          108
  ------------------
  |  Branch (304:4): [True: 0, False: 2]
  ------------------
  305|       |				/* Don't treat THROW as terminator if it's used in expression context,
  306|       |				 * as we may lose live ranges when eliminating unreachable code. */
  307|      0|				if (opline->extended_value != ZEND_THROW_IS_EXPR && i + 1 < op_array->last) {
  ------------------
  |  | 1120|      0|#define ZEND_THROW_IS_EXPR 1u
  ------------------
  |  Branch (307:9): [True: 0, False: 0]
  |  Branch (307:57): [True: 0, False: 0]
  ------------------
  308|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  309|      0|				}
  310|      0|				break;
  311|      0|			case ZEND_INCLUDE_OR_EVAL:
  ------------------
  |  |  196|      0|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (311:4): [True: 0, False: 2]
  ------------------
  312|      0|				flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS;
  ------------------
  |  |   23|      0|#define ZEND_FUNC_INDIRECT_VAR_ACCESS      (1<<0)  /* accesses variables by name  */
  ------------------
  313|      0|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  314|      0|			case ZEND_GENERATOR_CREATE:
  ------------------
  |  |  261|      0|#define ZEND_GENERATOR_CREATE               139
  ------------------
  |  Branch (314:4): [True: 0, False: 2]
  ------------------
  315|      0|			case ZEND_YIELD:
  ------------------
  |  |  282|      0|#define ZEND_YIELD                          160
  ------------------
  |  Branch (315:4): [True: 0, False: 2]
  ------------------
  316|      0|			case ZEND_YIELD_FROM:
  ------------------
  |  |  288|      0|#define ZEND_YIELD_FROM                     166
  ------------------
  |  Branch (316:4): [True: 0, False: 2]
  ------------------
  317|      0|				if (build_flags & ZEND_CFG_STACKLESS) {
  ------------------
  |  |   92|      0|#define ZEND_CFG_STACKLESS             (1<<30)
  ------------------
  |  Branch (317:9): [True: 0, False: 0]
  ------------------
  318|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  319|      0|				}
  320|      0|				break;
  321|      0|			case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (321:4): [True: 0, False: 2]
  ------------------
  322|      0|			case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (322:4): [True: 0, False: 2]
  ------------------
  323|      0|			case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (323:4): [True: 0, False: 2]
  ------------------
  324|      0|				flags |= ZEND_FUNC_HAS_CALLS;
  ------------------
  |  |   24|      0|#define ZEND_FUNC_HAS_CALLS                (1<<1)
  ------------------
  325|      0|				if (build_flags & ZEND_CFG_STACKLESS) {
  ------------------
  |  |   92|      0|#define ZEND_CFG_STACKLESS             (1<<30)
  ------------------
  |  Branch (325:9): [True: 0, False: 0]
  ------------------
  326|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  327|      0|				}
  328|      0|				break;
  329|      0|			case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (329:4): [True: 0, False: 2]
  ------------------
  330|      0|				flags |= ZEND_FUNC_HAS_CALLS;
  ------------------
  |  |   24|      0|#define ZEND_FUNC_HAS_CALLS                (1<<1)
  ------------------
  331|      0|				break;
  332|      0|			case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (332:4): [True: 0, False: 2]
  ------------------
  333|      0|			case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (333:4): [True: 0, False: 2]
  ------------------
  334|      0|				zv = CRT_CONSTANT(opline->op2);
  ------------------
  |  |  109|      0|	CRT_CONSTANT_EX(op_array, opline, node)
  |  |  ------------------
  |  |  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  |  |  ------------------
  |  |  |  |  104|      0|	: \
  |  |  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  |  |  ------------------
  |  |  |  |  106|      0|	)
  |  |  ------------------
  ------------------
  335|      0|				if (opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME) {
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (335:9): [True: 0, False: 0]
  ------------------
  336|       |					/* The third literal is the lowercased unqualified name */
  337|      0|					zv += 2;
  338|      0|				}
  339|      0|				if ((fn = zend_hash_find_ptr(EG(function_table), Z_STR_P(zv))) != NULL) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              				if ((fn = zend_hash_find_ptr(EG(function_table), Z_STR_P(zv))) != NULL) {
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (339:9): [True: 0, False: 0]
  ------------------
  340|      0|					if (fn->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (340:10): [True: 0, False: 0]
  ------------------
  341|      0|						flags |= zend_optimizer_classify_function(
  342|      0|							Z_STR_P(zv), opline->extended_value);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  343|      0|					}
  344|      0|				}
  345|      0|				break;
  346|      0|			case ZEND_FAST_CALL:
  ------------------
  |  |  284|      0|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (346:4): [True: 0, False: 2]
  ------------------
  347|      0|				BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  348|      0|				BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  349|      0|				break;
  350|      0|			case ZEND_FAST_RET:
  ------------------
  |  |  285|      0|#define ZEND_FAST_RET                       163
  ------------------
  |  Branch (350:4): [True: 0, False: 2]
  ------------------
  351|      0|				if (i + 1 < op_array->last) {
  ------------------
  |  Branch (351:9): [True: 0, False: 0]
  ------------------
  352|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  353|      0|				}
  354|      0|				break;
  355|      0|			case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (355:4): [True: 0, False: 2]
  ------------------
  356|      0|				BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  357|      0|				if (i + 1 < op_array->last) {
  ------------------
  |  Branch (357:9): [True: 0, False: 0]
  ------------------
  358|      0|					BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  359|      0|				}
  360|      0|				break;
  361|      0|			case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (361:4): [True: 0, False: 2]
  ------------------
  362|      0|			case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (362:4): [True: 0, False: 2]
  ------------------
  363|      0|			case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (363:4): [True: 0, False: 2]
  ------------------
  364|      0|			case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (364:4): [True: 0, False: 2]
  ------------------
  365|      0|			case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (365:4): [True: 0, False: 2]
  ------------------
  366|      0|			case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (366:4): [True: 0, False: 2]
  ------------------
  367|      0|			case ZEND_ASSERT_CHECK:
  ------------------
  |  |  273|      0|#define ZEND_ASSERT_CHECK                   151
  ------------------
  |  Branch (367:4): [True: 0, False: 2]
  ------------------
  368|      0|			case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (368:4): [True: 0, False: 2]
  ------------------
  369|      0|			case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (369:4): [True: 0, False: 2]
  ------------------
  370|      0|			case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (370:4): [True: 0, False: 2]
  ------------------
  371|      0|				BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  372|      0|				BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  373|      0|				break;
  374|      0|			case ZEND_CATCH:
  ------------------
  |  |  229|      0|#define ZEND_CATCH                          107
  ------------------
  |  Branch (374:4): [True: 0, False: 2]
  ------------------
  375|      0|				if (!(opline->extended_value & ZEND_LAST_CATCH)) {
  ------------------
  |  | 1110|      0|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  |  Branch (375:9): [True: 0, False: 0]
  ------------------
  376|      0|					BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  377|      0|				}
  378|      0|				BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  379|      0|				break;
  380|      0|			case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (380:4): [True: 0, False: 2]
  ------------------
  381|      0|			case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (381:4): [True: 0, False: 2]
  ------------------
  382|      0|				BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  383|      0|				BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  384|      0|				break;
  385|      0|			case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      0|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (385:4): [True: 0, False: 2]
  ------------------
  386|      0|			case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (386:4): [True: 0, False: 2]
  ------------------
  387|      0|				BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  388|      0|				BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  389|      0|				break;
  390|      0|			case ZEND_SWITCH_LONG:
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (390:4): [True: 0, False: 2]
  ------------------
  391|      0|			case ZEND_SWITCH_STRING:
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (391:4): [True: 0, False: 2]
  ------------------
  392|      0|			case ZEND_MATCH:
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (392:4): [True: 0, False: 2]
  ------------------
  393|      0|			{
  394|      0|				HashTable *jumptable = Z_ARRVAL_P(CRT_CONSTANT(opline->op2));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (993:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  395|      0|				zval *zv;
  396|      0|				ZEND_HASH_FOREACH_VAL(jumptable, zv) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
  397|      0|					BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv)));
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  398|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  399|      0|				BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  400|      0|				BB_START(i + 1);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  401|      0|				break;
  402|      0|			}
  403|      0|			case ZEND_FETCH_R:
  ------------------
  |  |  202|      0|#define ZEND_FETCH_R                         80
  ------------------
  |  Branch (403:4): [True: 0, False: 2]
  ------------------
  404|      0|			case ZEND_FETCH_W:
  ------------------
  |  |  205|      0|#define ZEND_FETCH_W                         83
  ------------------
  |  Branch (404:4): [True: 0, False: 2]
  ------------------
  405|      0|			case ZEND_FETCH_RW:
  ------------------
  |  |  208|      0|#define ZEND_FETCH_RW                        86
  ------------------
  |  Branch (405:4): [True: 0, False: 2]
  ------------------
  406|      0|			case ZEND_FETCH_FUNC_ARG:
  ------------------
  |  |  214|      0|#define ZEND_FETCH_FUNC_ARG                  92
  ------------------
  |  Branch (406:4): [True: 0, False: 2]
  ------------------
  407|      0|			case ZEND_FETCH_IS:
  ------------------
  |  |  211|      0|#define ZEND_FETCH_IS                        89
  ------------------
  |  Branch (407:4): [True: 0, False: 2]
  ------------------
  408|      0|			case ZEND_FETCH_UNSET:
  ------------------
  |  |  217|      0|#define ZEND_FETCH_UNSET                     95
  ------------------
  |  Branch (408:4): [True: 0, False: 2]
  ------------------
  409|      0|			case ZEND_UNSET_VAR:
  ------------------
  |  |  197|      0|#define ZEND_UNSET_VAR                       74
  ------------------
  |  Branch (409:4): [True: 0, False: 2]
  ------------------
  410|      0|			case ZEND_ISSET_ISEMPTY_VAR:
  ------------------
  |  |  236|      0|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
  |  Branch (410:4): [True: 0, False: 2]
  ------------------
  411|      0|				if (opline->extended_value & ZEND_FETCH_LOCAL) {
  ------------------
  |  | 1091|      0|#define ZEND_FETCH_LOCAL		(1<<2)
  ------------------
  |  Branch (411:9): [True: 0, False: 0]
  ------------------
  412|      0|					flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS;
  ------------------
  |  |   23|      0|#define ZEND_FUNC_INDIRECT_VAR_ACCESS      (1<<0)  /* accesses variables by name  */
  ------------------
  413|      0|				} else if ((opline->extended_value & (ZEND_FETCH_GLOBAL | ZEND_FETCH_GLOBAL_LOCK)) &&
  ------------------
  |  | 1090|      0|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
              				} else if ((opline->extended_value & (ZEND_FETCH_GLOBAL | ZEND_FETCH_GLOBAL_LOCK)) &&
  ------------------
  |  | 1092|      0|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (413:16): [True: 0, False: 0]
  ------------------
  414|      0|				           !op_array->function_name) {
  ------------------
  |  Branch (414:16): [True: 0, False: 0]
  ------------------
  415|      0|					flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS;
  ------------------
  |  |   23|      0|#define ZEND_FUNC_INDIRECT_VAR_ACCESS      (1<<0)  /* accesses variables by name  */
  ------------------
  416|      0|				}
  417|      0|				break;
  418|      0|			case ZEND_FUNC_GET_ARGS:
  ------------------
  |  |  294|      0|#define ZEND_FUNC_GET_ARGS                  172
  ------------------
  |  Branch (418:4): [True: 0, False: 2]
  ------------------
  419|      0|				flags |= ZEND_FUNC_VARARG;
  ------------------
  |  |   25|      0|#define ZEND_FUNC_VARARG                   (1<<2)  /* uses func_get_args()        */
  ------------------
  420|      0|				break;
  421|      0|			case ZEND_EXT_STMT:
  ------------------
  |  |  223|      0|#define ZEND_EXT_STMT                       101
  ------------------
  |  Branch (421:4): [True: 0, False: 2]
  ------------------
  422|      0|				flags |= ZEND_FUNC_HAS_EXTENDED_STMT;
  ------------------
  |  |   33|      0|#define ZEND_FUNC_HAS_EXTENDED_STMT        (1<<11)
  ------------------
  423|      0|				break;
  424|      0|			case ZEND_EXT_FCALL_BEGIN:
  ------------------
  |  |  224|      0|#define ZEND_EXT_FCALL_BEGIN                102
  ------------------
  |  Branch (424:4): [True: 0, False: 2]
  ------------------
  425|      0|			case ZEND_EXT_FCALL_END:
  ------------------
  |  |  225|      0|#define ZEND_EXT_FCALL_END                  103
  ------------------
  |  Branch (425:4): [True: 0, False: 2]
  ------------------
  426|      0|				flags |= ZEND_FUNC_HAS_EXTENDED_FCALL;
  ------------------
  |  |   32|      0|#define ZEND_FUNC_HAS_EXTENDED_FCALL       (1<<10)
  ------------------
  427|      0|				break;
  428|      0|			case ZEND_FREE:
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (428:4): [True: 0, False: 2]
  ------------------
  429|      0|			case ZEND_FE_FREE:
  ------------------
  |  |  249|      0|#define ZEND_FE_FREE                        127
  ------------------
  |  Branch (429:4): [True: 0, False: 2]
  ------------------
  430|      0|				if (zend_optimizer_is_loop_var_free(opline)
  ------------------
  |  Branch (430:9): [True: 0, False: 0]
  ------------------
  431|      0|				 && ((opline-1)->opcode != ZEND_MATCH_ERROR
  ------------------
  |  |  319|      0|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (431:10): [True: 0, False: 0]
  ------------------
  432|      0|				  || (opline-1)->extended_value != ZEND_THROW_IS_EXPR)) {
  ------------------
  |  | 1120|      0|#define ZEND_THROW_IS_EXPR 1u
  ------------------
  |  Branch (432:10): [True: 0, False: 0]
  ------------------
  433|      0|					BB_START(i);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  434|      0|					flags |= ZEND_FUNC_FREE_LOOP_VAR;
  ------------------
  |  |   28|      0|#define ZEND_FUNC_FREE_LOOP_VAR            (1<<5)
  ------------------
  435|      0|				}
  436|      0|				break;
  437|      2|		}
  438|      2|	}
  439|       |
  440|       |	/* If the entry block has predecessors, we may need to split it */
  441|      2|	if ((build_flags & ZEND_CFG_NO_ENTRY_PREDECESSORS)
  ------------------
  |  |   96|      2|#define ZEND_CFG_NO_ENTRY_PREDECESSORS (1<<25)
  ------------------
  |  Branch (441:6): [True: 1, False: 1]
  ------------------
  442|      1|			&& op_array->last > 0 && block_map[0] > 1) {
  ------------------
  |  Branch (442:7): [True: 1, False: 0]
  |  Branch (442:29): [True: 0, False: 1]
  ------------------
  443|      0|		extra_entry_block = true;
  444|      0|	}
  445|       |
  446|      2|	if (op_array->last_try_catch) {
  ------------------
  |  Branch (446:6): [True: 0, False: 2]
  ------------------
  447|      0|		for (uint32_t j = 0; j < op_array->last_try_catch; j++) {
  ------------------
  |  Branch (447:24): [True: 0, False: 0]
  ------------------
  448|      0|			BB_START(op_array->try_catch_array[j].try_op);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  449|      0|			if (op_array->try_catch_array[j].catch_op) {
  ------------------
  |  Branch (449:8): [True: 0, False: 0]
  ------------------
  450|      0|				BB_START(op_array->try_catch_array[j].catch_op);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  451|      0|			}
  452|      0|			if (op_array->try_catch_array[j].finally_op) {
  ------------------
  |  Branch (452:8): [True: 0, False: 0]
  ------------------
  453|      0|				BB_START(op_array->try_catch_array[j].finally_op);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  454|      0|			}
  455|      0|			if (op_array->try_catch_array[j].finally_end) {
  ------------------
  |  Branch (455:8): [True: 0, False: 0]
  ------------------
  456|      0|				BB_START(op_array->try_catch_array[j].finally_end);
  ------------------
  |  |  264|      0|#define BB_START(i) do { \
  |  |  265|      0|		if (!block_map[i]) { blocks_count++;} \
  |  |  ------------------
  |  |  |  Branch (265:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		block_map[i]++; \
  |  |  267|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (267:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  457|      0|			}
  458|      0|		}
  459|      0|	}
  460|       |
  461|      2|	blocks_count += extra_entry_block;
  462|      2|	cfg->blocks_count = blocks_count;
  463|       |
  464|       |	/* Build CFG, Step 2: Build Array of Basic Blocks */
  465|      2|	cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count);
  466|       |
  467|      2|	blocks_count = -1;
  468|       |
  469|      2|	if (extra_entry_block) {
  ------------------
  |  Branch (469:6): [True: 0, False: 2]
  ------------------
  470|      0|		initialize_block(&blocks[0]);
  471|      0|		blocks[0].start = 0;
  472|      0|		blocks[0].len = 0;
  473|      0|		blocks_count++;
  474|      0|	}
  475|       |
  476|      4|	for (i = 0; i < op_array->last; i++) {
  ------------------
  |  Branch (476:14): [True: 2, False: 2]
  ------------------
  477|      2|		if (block_map[i]) {
  ------------------
  |  Branch (477:7): [True: 2, False: 0]
  ------------------
  478|      2|			if (blocks_count >= 0) {
  ------------------
  |  Branch (478:8): [True: 0, False: 2]
  ------------------
  479|      0|				blocks[blocks_count].len = i - blocks[blocks_count].start;
  480|      0|			}
  481|      2|			blocks_count++;
  482|      2|			initialize_block(&blocks[blocks_count]);
  483|      2|			blocks[blocks_count].start = i;
  484|      2|		}
  485|      2|		block_map[i] = blocks_count;
  486|      2|	}
  487|       |
  488|      2|	blocks[blocks_count].len = i - blocks[blocks_count].start;
  489|      2|	blocks_count++;
  490|       |
  491|       |	/* Build CFG, Step 3: Calculate successors */
  492|      4|	for (int j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (492:18): [True: 2, False: 2]
  ------------------
  493|      2|		zend_basic_block *block = &blocks[j];
  494|      2|		zend_op *opline;
  495|      2|		if (block->len == 0) {
  ------------------
  |  Branch (495:7): [True: 0, False: 2]
  ------------------
  496|      0|			block->successors_count = 1;
  497|      0|			block->successors[0] = j + 1;
  498|      0|			continue;
  499|      0|		}
  500|       |
  501|      2|		opline = op_array->opcodes + block->start + block->len - 1;
  502|      2|		switch (opline->opcode) {
  503|      0|			case ZEND_FAST_RET:
  ------------------
  |  |  285|      0|#define ZEND_FAST_RET                       163
  ------------------
  |  Branch (503:4): [True: 0, False: 2]
  ------------------
  504|      2|			case ZEND_RETURN:
  ------------------
  |  |  185|      2|#define ZEND_RETURN                          62
  ------------------
  |  Branch (504:4): [True: 2, False: 0]
  ------------------
  505|      2|			case ZEND_RETURN_BY_REF:
  ------------------
  |  |  233|      2|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (505:4): [True: 0, False: 2]
  ------------------
  506|      2|			case ZEND_GENERATOR_RETURN:
  ------------------
  |  |  283|      2|#define ZEND_GENERATOR_RETURN               161
  ------------------
  |  Branch (506:4): [True: 0, False: 2]
  ------------------
  507|      2|			case ZEND_THROW:
  ------------------
  |  |  230|      2|#define ZEND_THROW                          108
  ------------------
  |  Branch (507:4): [True: 0, False: 2]
  ------------------
  508|      2|			case ZEND_MATCH_ERROR:
  ------------------
  |  |  319|      2|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (508:4): [True: 0, False: 2]
  ------------------
  509|      2|			case ZEND_VERIFY_NEVER_TYPE:
  ------------------
  |  |  323|      2|#define ZEND_VERIFY_NEVER_TYPE              201
  ------------------
  |  Branch (509:4): [True: 0, False: 2]
  ------------------
  510|      2|				break;
  511|      0|			case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (511:4): [True: 0, False: 2]
  ------------------
  512|      0|				block->successors_count = 1;
  513|      0|				block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes];
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  514|      0|				break;
  515|      0|			case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (515:4): [True: 0, False: 2]
  ------------------
  516|      0|			case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (516:4): [True: 0, False: 2]
  ------------------
  517|      0|			case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (517:4): [True: 0, False: 2]
  ------------------
  518|      0|			case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (518:4): [True: 0, False: 2]
  ------------------
  519|      0|			case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (519:4): [True: 0, False: 2]
  ------------------
  520|      0|			case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (520:4): [True: 0, False: 2]
  ------------------
  521|      0|			case ZEND_ASSERT_CHECK:
  ------------------
  |  |  273|      0|#define ZEND_ASSERT_CHECK                   151
  ------------------
  |  Branch (521:4): [True: 0, False: 2]
  ------------------
  522|      0|			case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (522:4): [True: 0, False: 2]
  ------------------
  523|      0|			case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (523:4): [True: 0, False: 2]
  ------------------
  524|      0|			case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (524:4): [True: 0, False: 2]
  ------------------
  525|      0|				block->successors_count = 2;
  526|      0|				block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes];
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  527|      0|				block->successors[1] = j + 1;
  528|      0|				break;
  529|      0|			case ZEND_CATCH:
  ------------------
  |  |  229|      0|#define ZEND_CATCH                          107
  ------------------
  |  Branch (529:4): [True: 0, False: 2]
  ------------------
  530|      0|				if (!(opline->extended_value & ZEND_LAST_CATCH)) {
  ------------------
  |  | 1110|      0|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  |  Branch (530:9): [True: 0, False: 0]
  ------------------
  531|      0|					block->successors_count = 2;
  532|      0|					block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes];
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  533|      0|					block->successors[1] = j + 1;
  534|      0|				} else {
  535|      0|					block->successors_count = 1;
  536|      0|					block->successors[0] = j + 1;
  537|      0|				}
  538|      0|				break;
  539|      0|			case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (539:4): [True: 0, False: 2]
  ------------------
  540|      0|			case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (540:4): [True: 0, False: 2]
  ------------------
  541|      0|				block->successors_count = 2;
  542|      0|				block->successors[0] = block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)];
  ------------------
  |  |  771|      0|	(ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  543|      0|				block->successors[1] = j + 1;
  544|      0|				break;
  545|      0|			case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      0|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (545:4): [True: 0, False: 2]
  ------------------
  546|      0|			case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (546:4): [True: 0, False: 2]
  ------------------
  547|      0|				block->successors_count = 2;
  548|      0|				block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes];
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  549|      0|				block->successors[1] = j + 1;
  550|      0|				break;
  551|      0|			case ZEND_FAST_CALL:
  ------------------
  |  |  284|      0|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (551:4): [True: 0, False: 2]
  ------------------
  552|      0|				block->successors_count = 2;
  553|      0|				block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes];
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  554|      0|				block->successors[1] = j + 1;
  555|      0|				break;
  556|      0|			case ZEND_SWITCH_LONG:
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (556:4): [True: 0, False: 2]
  ------------------
  557|      0|			case ZEND_SWITCH_STRING:
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (557:4): [True: 0, False: 2]
  ------------------
  558|      0|			case ZEND_MATCH:
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (558:4): [True: 0, False: 2]
  ------------------
  559|      0|			{
  560|      0|				HashTable *jumptable = Z_ARRVAL_P(CRT_CONSTANT(opline->op2));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (993:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  561|      0|				zval *zv;
  562|      0|				uint32_t s = 0;
  563|       |
  564|      0|				block->successors_count = (opline->opcode == ZEND_MATCH ? 1 : 2) + zend_hash_num_elements(jumptable);
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (564:32): [True: 0, False: 0]
  ------------------
  565|      0|				block->successors = zend_arena_calloc(arena, block->successors_count, sizeof(int));
  566|       |
  567|      0|				ZEND_HASH_FOREACH_VAL(jumptable, zv) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
  568|      0|					block->successors[s++] = block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv))];
  ------------------
  |  |  771|      0|	(ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  569|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  570|       |
  571|      0|				block->successors[s++] = block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)];
  ------------------
  |  |  771|      0|	(ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  572|      0|				if (opline->opcode != ZEND_MATCH) {
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (572:9): [True: 0, False: 0]
  ------------------
  573|      0|					block->successors[s++] = j + 1;
  574|      0|				}
  575|      0|				break;
  576|      0|			}
  577|      0|			default:
  ------------------
  |  Branch (577:4): [True: 0, False: 2]
  ------------------
  578|      0|				block->successors_count = 1;
  579|      0|				block->successors[0] = j + 1;
  580|      0|				break;
  581|      2|		}
  582|      2|	}
  583|       |
  584|       |	/* Build CFG, Step 4, Mark Reachable Basic Blocks */
  585|      2|	cfg->flags |= flags;
  586|      2|	zend_mark_reachable_blocks(op_array, cfg, 0);
  587|      2|}
zend_cfg_build_predecessors:
  591|      1|{
  592|      1|	zend_basic_block *b;
  593|      1|	zend_basic_block *blocks = cfg->blocks;
  594|      1|	zend_basic_block *end = blocks + cfg->blocks_count;
  595|      1|	uint32_t edges = 0;
  596|      1|	int *predecessors;
  597|       |
  598|      2|	for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (598:19): [True: 1, False: 1]
  ------------------
  599|      1|		b->predecessors_count = 0;
  600|      1|	}
  601|      2|	for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (601:19): [True: 1, False: 1]
  ------------------
  602|      1|		if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (602:7): [True: 0, False: 1]
  ------------------
  603|      0|			b->successors_count = 0;
  604|      0|			b->predecessors_count = 0;
  605|      1|		} else {
  606|      1|			for (uint32_t s = 0; s < b->successors_count; s++) {
  ------------------
  |  Branch (606:25): [True: 0, False: 1]
  ------------------
  607|      0|				edges++;
  608|      0|				blocks[b->successors[s]].predecessors_count++;
  609|      0|			}
  610|      1|		}
  611|      1|	}
  612|       |
  613|      1|	cfg->edges_count = edges;
  614|      1|	cfg->predecessors = predecessors = (int*)zend_arena_calloc(arena, sizeof(int), edges);
  615|       |
  616|      1|	edges = 0;
  617|      2|	for (b = blocks; b < end; b++) {
  ------------------
  |  Branch (617:19): [True: 1, False: 1]
  ------------------
  618|      1|		if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (618:7): [True: 1, False: 0]
  ------------------
  619|      1|			b->predecessor_offset = edges;
  620|      1|			edges += b->predecessors_count;
  621|      1|			b->predecessors_count = 0;
  622|      1|		}
  623|      1|	}
  624|       |
  625|      2|	for (uint32_t j = 0; j < cfg->blocks_count; j++) {
  ------------------
  |  Branch (625:23): [True: 1, False: 1]
  ------------------
  626|      1|		if (blocks[j].flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (626:7): [True: 1, False: 0]
  ------------------
  627|       |			/* SWITCH_STRING/LONG may have few identical successors */
  628|      1|			for (uint32_t s = 0; s < blocks[j].successors_count; s++) {
  ------------------
  |  Branch (628:25): [True: 0, False: 1]
  ------------------
  629|      0|				int duplicate = 0;
  630|       |
  631|      0|				for (uint32_t p = 0; p < s; p++) {
  ------------------
  |  Branch (631:26): [True: 0, False: 0]
  ------------------
  632|      0|					if (blocks[j].successors[p] == blocks[j].successors[s]) {
  ------------------
  |  Branch (632:10): [True: 0, False: 0]
  ------------------
  633|      0|						duplicate = 1;
  634|      0|						break;
  635|      0|					}
  636|      0|				}
  637|      0|				if (!duplicate) {
  ------------------
  |  Branch (637:9): [True: 0, False: 0]
  ------------------
  638|      0|					zend_basic_block *b = blocks + blocks[j].successors[s];
  639|       |
  640|      0|					predecessors[b->predecessor_offset + b->predecessors_count] = j;
  641|      0|					b->predecessors_count++;
  642|      0|				}
  643|      0|			}
  644|      1|		}
  645|      1|	}
  646|      1|}
zend_cfg_compute_dominators_tree:
  669|      1|{
  670|      1|	zend_basic_block *blocks = cfg->blocks;
  671|      1|	uint32_t blocks_count = cfg->blocks_count;
  672|      1|	uint32_t j;
  673|      1|	int changed;
  674|       |
  675|      1|	if (cfg->blocks_count == 1) {
  ------------------
  |  Branch (675:6): [True: 1, False: 0]
  ------------------
  676|      1|		blocks[0].level = 0;
  677|      1|		return;
  678|      1|	}
  679|       |
  680|      0|	ALLOCA_FLAG(use_heap)
  681|      0|	int *postnum = do_alloca(sizeof(int) * cfg->blocks_count, use_heap);
  ------------------
  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  682|      0|	memset(postnum, -1, sizeof(int) * cfg->blocks_count);
  683|      0|	j = 0;
  684|      0|	compute_postnum_recursive(postnum, &j, cfg, 0);
  685|       |
  686|       |	/* FIXME: move declarations */
  687|      0|	blocks[0].idom = 0;
  688|      0|	do {
  689|      0|		changed = 0;
  690|       |		/* Iterating in RPO here would converge faster */
  691|      0|		for (j = 1; j < blocks_count; j++) {
  ------------------
  |  Branch (691:15): [True: 0, False: 0]
  ------------------
  692|      0|			int idom = -1;
  693|       |
  694|      0|			if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (694:8): [True: 0, False: 0]
  ------------------
  695|      0|				continue;
  696|      0|			}
  697|      0|			for (uint32_t k = 0; k < blocks[j].predecessors_count; k++) {
  ------------------
  |  Branch (697:25): [True: 0, False: 0]
  ------------------
  698|      0|				int pred = cfg->predecessors[blocks[j].predecessor_offset + k];
  699|       |
  700|      0|				if (blocks[pred].idom >= 0) {
  ------------------
  |  Branch (700:9): [True: 0, False: 0]
  ------------------
  701|      0|					if (idom < 0) {
  ------------------
  |  Branch (701:10): [True: 0, False: 0]
  ------------------
  702|      0|						idom = pred;
  703|      0|					} else {
  704|      0|						while (idom != pred) {
  ------------------
  |  Branch (704:14): [True: 0, False: 0]
  ------------------
  705|      0|							while (postnum[pred] < postnum[idom]) pred = blocks[pred].idom;
  ------------------
  |  Branch (705:15): [True: 0, False: 0]
  ------------------
  706|      0|							while (postnum[idom] < postnum[pred]) idom = blocks[idom].idom;
  ------------------
  |  Branch (706:15): [True: 0, False: 0]
  ------------------
  707|      0|						}
  708|      0|					}
  709|      0|				}
  710|      0|			}
  711|       |
  712|      0|			if (idom >= 0 && blocks[j].idom != idom) {
  ------------------
  |  Branch (712:8): [True: 0, False: 0]
  |  Branch (712:21): [True: 0, False: 0]
  ------------------
  713|      0|				blocks[j].idom = idom;
  714|      0|				changed = 1;
  715|      0|			}
  716|      0|		}
  717|      0|	} while (changed);
  ------------------
  |  Branch (717:11): [True: 0, False: 0]
  ------------------
  718|      0|	blocks[0].idom = -1;
  719|       |
  720|      0|	for (j = 1; j < blocks_count; j++) {
  ------------------
  |  Branch (720:14): [True: 0, False: 0]
  ------------------
  721|      0|		if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (721:7): [True: 0, False: 0]
  ------------------
  722|      0|			continue;
  723|      0|		}
  724|      0|		if (blocks[j].idom >= 0) {
  ------------------
  |  Branch (724:7): [True: 0, False: 0]
  ------------------
  725|       |			/* Sort by block number to traverse children in pre-order */
  726|      0|			if (blocks[blocks[j].idom].children < 0 ||
  ------------------
  |  Branch (726:8): [True: 0, False: 0]
  ------------------
  727|      0|			    j < blocks[blocks[j].idom].children) {
  ------------------
  |  Branch (727:8): [True: 0, False: 0]
  ------------------
  728|      0|				blocks[j].next_child = blocks[blocks[j].idom].children;
  729|      0|				blocks[blocks[j].idom].children = j;
  730|      0|			} else {
  731|      0|				int k = blocks[blocks[j].idom].children;
  732|      0|				while (blocks[k].next_child >=0 && j > blocks[k].next_child) {
  ------------------
  |  Branch (732:12): [True: 0, False: 0]
  |  Branch (732:40): [True: 0, False: 0]
  ------------------
  733|      0|					k = blocks[k].next_child;
  734|      0|				}
  735|      0|				blocks[j].next_child = blocks[k].next_child;
  736|      0|				blocks[k].next_child = j;
  737|      0|			}
  738|      0|		}
  739|      0|	}
  740|       |
  741|      0|	for (j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (741:14): [True: 0, False: 0]
  ------------------
  742|      0|		int idom = blocks[j].idom, level = 0;
  743|      0|		if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (743:7): [True: 0, False: 0]
  ------------------
  744|      0|			continue;
  745|      0|		}
  746|      0|		while (idom >= 0) {
  ------------------
  |  Branch (746:10): [True: 0, False: 0]
  ------------------
  747|      0|			level++;
  748|      0|			if (blocks[idom].level >= 0) {
  ------------------
  |  Branch (748:8): [True: 0, False: 0]
  ------------------
  749|      0|				level += blocks[idom].level;
  750|      0|				break;
  751|      0|			} else {
  752|      0|				idom = blocks[idom].idom;
  753|      0|			}
  754|      0|		}
  755|      0|		blocks[j].level = level;
  756|      0|	}
  757|       |
  758|       |	free_alloca(postnum, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  759|      0|}
zend_cfg_identify_loops:
  772|      1|{
  773|      1|	int i, j, n;
  774|      1|	int time;
  775|      1|	zend_basic_block *blocks = cfg->blocks;
  776|      1|	int *entry_times, *exit_times;
  777|      1|	zend_worklist work;
  778|      1|	int flag = ZEND_FUNC_NO_LOOPS;
  ------------------
  |  |   26|      1|#define ZEND_FUNC_NO_LOOPS                 (1<<3)
  ------------------
  779|      1|	int *sorted_blocks;
  780|      1|	ALLOCA_FLAG(list_use_heap)
  781|      1|	ALLOCA_FLAG(tree_use_heap)
  782|       |
  783|      1|	if (cfg->blocks_count == 1) {
  ------------------
  |  Branch (783:6): [True: 1, False: 0]
  ------------------
  784|      1|		cfg->flags |= flag;
  785|      1|		return;
  786|      1|	}
  787|       |
  788|      0|	ZEND_WORKLIST_ALLOCA(&work, cfg->blocks_count, list_use_heap);
  ------------------
  |  |   70|      0|#define ZEND_WORKLIST_ALLOCA(w, _len, use_heap) do { \
  |  |   71|      0|		(w)->stack.buf = (int*)do_alloca(ZEND_MM_ALIGNED_SIZE(sizeof(int) * _len) + sizeof(zend_ulong) * zend_bitset_len(_len), use_heap); \
  |  |  ------------------
  |  |  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|		(w)->stack.len = 0; \
  |  |   73|      0|		(w)->stack.capacity = _len; \
  |  |   74|      0|		(w)->visited = (zend_bitset)((char*)(w)->stack.buf + ZEND_MM_ALIGNED_SIZE(sizeof(int) * _len)); \
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|		memset((w)->visited, 0, sizeof(zend_ulong) * zend_bitset_len(_len)); \
  |  |   76|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (76:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  789|       |
  790|       |	/* We don't materialize the DJ spanning tree explicitly, as we are only interested in ancestor
  791|       |	 * queries. These are implemented by checking entry/exit times of the DFS search. */
  792|      0|	entry_times = do_alloca(3 * sizeof(int) * cfg->blocks_count, tree_use_heap);
  ------------------
  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|      0|	exit_times = entry_times + cfg->blocks_count;
  794|      0|	sorted_blocks = exit_times + cfg->blocks_count;
  795|      0|	memset(entry_times, -1, 2 * sizeof(int) * cfg->blocks_count);
  796|       |
  797|      0|	zend_worklist_push(&work, 0);
  798|      0|	time = 0;
  799|      0|	while (zend_worklist_len(&work)) {
  ------------------
  |  Branch (799:9): [True: 0, False: 0]
  ------------------
  800|      0|	next:
  801|      0|		i = zend_worklist_peek(&work);
  802|      0|		if (entry_times[i] == -1) {
  ------------------
  |  Branch (802:7): [True: 0, False: 0]
  ------------------
  803|      0|			entry_times[i] = time++;
  804|      0|		}
  805|       |		/* Visit blocks immediately dominated by i. */
  806|      0|		for (j = blocks[i].children; j >= 0; j = blocks[j].next_child) {
  ------------------
  |  Branch (806:32): [True: 0, False: 0]
  ------------------
  807|      0|			if (zend_worklist_push(&work, j)) {
  ------------------
  |  Branch (807:8): [True: 0, False: 0]
  ------------------
  808|      0|				goto next;
  809|      0|			}
  810|      0|		}
  811|       |		/* Visit join edges.  */
  812|      0|		for (j = 0; j < blocks[i].successors_count; j++) {
  ------------------
  |  Branch (812:15): [True: 0, False: 0]
  ------------------
  813|      0|			int succ = blocks[i].successors[j];
  814|      0|			if (blocks[succ].idom == i) {
  ------------------
  |  Branch (814:8): [True: 0, False: 0]
  ------------------
  815|      0|				continue;
  816|      0|			} else if (zend_worklist_push(&work, succ)) {
  ------------------
  |  Branch (816:15): [True: 0, False: 0]
  ------------------
  817|      0|				goto next;
  818|      0|			}
  819|      0|		}
  820|      0|		exit_times[i] = time++;
  821|      0|		zend_worklist_pop(&work);
  822|      0|	}
  823|       |
  824|       |	/* Sort blocks by level, which is the opposite order in which we want to process them */
  825|      0|	sorted_blocks[0] = 0;
  826|      0|	j = 0;
  827|      0|	n = 1;
  828|      0|	while (j != n) {
  ------------------
  |  Branch (828:9): [True: 0, False: 0]
  ------------------
  829|      0|		i = j;
  830|      0|		j = n;
  831|      0|		for (; i < j; i++) {
  ------------------
  |  Branch (831:10): [True: 0, False: 0]
  ------------------
  832|      0|			int child;
  833|      0|			for (child = blocks[sorted_blocks[i]].children; child >= 0; child = blocks[child].next_child) {
  ------------------
  |  Branch (833:52): [True: 0, False: 0]
  ------------------
  834|      0|				sorted_blocks[n++] = child;
  835|      0|			}
  836|      0|		}
  837|      0|	}
  838|       |
  839|       |	/* Identify loops. See Sreedhar et al, "Identifying Loops Using DJ Graphs". */
  840|      0|	while (n > 0) {
  ------------------
  |  Branch (840:9): [True: 0, False: 0]
  ------------------
  841|      0|		i = sorted_blocks[--n];
  842|       |
  843|      0|		if (blocks[i].predecessors_count < 2) {
  ------------------
  |  Branch (843:7): [True: 0, False: 0]
  ------------------
  844|       |		    /* loop header has at least two input edges */
  845|      0|			continue;
  846|      0|		}
  847|       |
  848|      0|		for (j = 0; j < blocks[i].predecessors_count; j++) {
  ------------------
  |  Branch (848:15): [True: 0, False: 0]
  ------------------
  849|      0|			int pred = cfg->predecessors[blocks[i].predecessor_offset + j];
  850|       |
  851|       |			/* A join edge is one for which the predecessor does not
  852|       |			   immediately dominate the successor. */
  853|      0|			if (blocks[i].idom == pred) {
  ------------------
  |  Branch (853:8): [True: 0, False: 0]
  ------------------
  854|      0|				continue;
  855|      0|			}
  856|       |
  857|       |			/* In a loop back-edge (back-join edge), the successor dominates
  858|       |			   the predecessor.  */
  859|      0|			if (dominates(blocks, i, pred)) {
  ------------------
  |  Branch (859:8): [True: 0, False: 0]
  ------------------
  860|      0|				blocks[i].flags |= ZEND_BB_LOOP_HEADER;
  ------------------
  |  |   33|      0|#define ZEND_BB_LOOP_HEADER      (1<<16)
  ------------------
  861|      0|				flag &= ~ZEND_FUNC_NO_LOOPS;
  ------------------
  |  |   26|      0|#define ZEND_FUNC_NO_LOOPS                 (1<<3)
  ------------------
  862|      0|				if (!zend_worklist_len(&work)) {
  ------------------
  |  Branch (862:9): [True: 0, False: 0]
  ------------------
  863|      0|					zend_bitset_clear(work.visited, zend_bitset_len(cfg->blocks_count));
  864|      0|				}
  865|      0|				zend_worklist_push(&work, pred);
  866|      0|			} else {
  867|       |				/* Otherwise it's a cross-join edge.  See if it's a branch
  868|       |				   to an ancestor on the DJ spanning tree.  */
  869|      0|				if (entry_times[pred] > entry_times[i] && exit_times[pred] < exit_times[i]) {
  ------------------
  |  Branch (869:9): [True: 0, False: 0]
  |  Branch (869:47): [True: 0, False: 0]
  ------------------
  870|      0|					blocks[i].flags |= ZEND_BB_IRREDUCIBLE_LOOP;
  ------------------
  |  |   34|      0|#define ZEND_BB_IRREDUCIBLE_LOOP (1<<17)
  ------------------
  871|      0|					flag |= ZEND_FUNC_IRREDUCIBLE;
  ------------------
  |  |   27|      0|#define ZEND_FUNC_IRREDUCIBLE              (1<<4)
  ------------------
  872|      0|					flag &= ~ZEND_FUNC_NO_LOOPS;
  ------------------
  |  |   26|      0|#define ZEND_FUNC_NO_LOOPS                 (1<<3)
  ------------------
  873|      0|				}
  874|      0|			}
  875|      0|		}
  876|      0|		while (zend_worklist_len(&work)) {
  ------------------
  |  Branch (876:10): [True: 0, False: 0]
  ------------------
  877|      0|			j = zend_worklist_pop(&work);
  878|      0|			while (blocks[j].loop_header >= 0) {
  ------------------
  |  Branch (878:11): [True: 0, False: 0]
  ------------------
  879|      0|				j = blocks[j].loop_header;
  880|      0|			}
  881|      0|			if (j != i) {
  ------------------
  |  Branch (881:8): [True: 0, False: 0]
  ------------------
  882|      0|				if (blocks[j].idom < 0 && j != 0) {
  ------------------
  |  Branch (882:9): [True: 0, False: 0]
  |  Branch (882:31): [True: 0, False: 0]
  ------------------
  883|       |					/* Ignore blocks that are unreachable or only abnormally reachable. */
  884|      0|					continue;
  885|      0|				}
  886|      0|				blocks[j].loop_header = i;
  887|      0|				for (uint32_t k = 0; k < blocks[j].predecessors_count; k++) {
  ------------------
  |  Branch (887:26): [True: 0, False: 0]
  ------------------
  888|      0|					zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]);
  889|      0|				}
  890|      0|			}
  891|      0|		}
  892|      0|	}
  893|       |
  894|      0|	free_alloca(entry_times, tree_use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  895|      0|	ZEND_WORKLIST_FREE_ALLOCA(&work, list_use_heap);
  ------------------
  |  |   79|      0|	free_alloca((w)->stack.buf, use_heap)
  |  |  ------------------
  |  |  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  896|       |
  897|      0|	cfg->flags |= flag;
  898|      0|}
zend_cfg.c:zend_mark_reachable_blocks:
  105|      3|{
  106|      3|	zend_basic_block *blocks = cfg->blocks;
  107|       |
  108|      3|	blocks[start].flags = ZEND_BB_START;
  ------------------
  |  |   21|      3|#define ZEND_BB_START            (1<<0)  /* first block            */
  ------------------
  109|      3|	zend_mark_reachable(op_array->opcodes, cfg, blocks + start);
  110|       |
  111|      3|	if (op_array->last_try_catch) {
  ------------------
  |  Branch (111:6): [True: 0, False: 3]
  ------------------
  112|      0|		zend_basic_block *b;
  113|      0|		int changed;
  114|      0|		uint32_t *block_map = cfg->map;
  115|       |
  116|      0|		do {
  117|      0|			changed = 0;
  118|       |
  119|       |			/* Add exception paths */
  120|      0|			for (uint32_t j = 0; j < op_array->last_try_catch; j++) {
  ------------------
  |  Branch (120:25): [True: 0, False: 0]
  ------------------
  121|       |
  122|       |				/* check for jumps into the middle of try block */
  123|      0|				b = blocks + block_map[op_array->try_catch_array[j].try_op];
  124|      0|				if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (124:9): [True: 0, False: 0]
  ------------------
  125|      0|					zend_basic_block *end;
  126|       |
  127|      0|					if (op_array->try_catch_array[j].catch_op) {
  ------------------
  |  Branch (127:10): [True: 0, False: 0]
  ------------------
  128|      0|						end = blocks + block_map[op_array->try_catch_array[j].catch_op];
  129|      0|						while (b != end) {
  ------------------
  |  Branch (129:14): [True: 0, False: 0]
  ------------------
  130|      0|							if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (130:12): [True: 0, False: 0]
  ------------------
  131|      0|								op_array->try_catch_array[j].try_op = b->start;
  132|      0|								break;
  133|      0|							}
  134|      0|							b++;
  135|      0|						}
  136|      0|					}
  137|      0|					b = blocks + block_map[op_array->try_catch_array[j].try_op];
  138|      0|					if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (138:10): [True: 0, False: 0]
  ------------------
  139|      0|						if (op_array->try_catch_array[j].finally_op) {
  ------------------
  |  Branch (139:11): [True: 0, False: 0]
  ------------------
  140|      0|							end = blocks + block_map[op_array->try_catch_array[j].finally_op];
  141|      0|							while (b != end) {
  ------------------
  |  Branch (141:15): [True: 0, False: 0]
  ------------------
  142|      0|								if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (142:13): [True: 0, False: 0]
  ------------------
  143|       |									/* In case we get here, there is no live try block but there is a live finally block.
  144|       |									 * If we do have catch_op set, we need to set it to the first catch block to satisfy
  145|       |									 * the constraint try_op <= catch_op <= finally_op */
  146|      0|									op_array->try_catch_array[j].try_op =
  147|      0|										op_array->try_catch_array[j].catch_op ? op_array->try_catch_array[j].catch_op : b->start;
  ------------------
  |  Branch (147:11): [True: 0, False: 0]
  ------------------
  148|      0|									changed = 1;
  149|      0|									zend_mark_reachable(op_array->opcodes, cfg, blocks + block_map[op_array->try_catch_array[j].try_op]);
  150|      0|									break;
  151|      0|								}
  152|      0|								b++;
  153|      0|							}
  154|      0|						}
  155|      0|					}
  156|      0|				}
  157|       |
  158|      0|				b = blocks + block_map[op_array->try_catch_array[j].try_op];
  159|      0|				if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (159:9): [True: 0, False: 0]
  ------------------
  160|      0|					b->flags |= ZEND_BB_TRY;
  ------------------
  |  |   26|      0|#define ZEND_BB_TRY              (1<<5)  /* start of try block     */
  ------------------
  161|      0|					if (op_array->try_catch_array[j].catch_op) {
  ------------------
  |  Branch (161:10): [True: 0, False: 0]
  ------------------
  162|      0|						b = blocks + block_map[op_array->try_catch_array[j].catch_op];
  163|      0|						b->flags |= ZEND_BB_CATCH;
  ------------------
  |  |   27|      0|#define ZEND_BB_CATCH            (1<<6)  /* start of catch block   */
  ------------------
  164|      0|						if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (164:11): [True: 0, False: 0]
  ------------------
  165|      0|							changed = 1;
  166|      0|							zend_mark_reachable(op_array->opcodes, cfg, b);
  167|      0|						}
  168|      0|					}
  169|      0|					if (op_array->try_catch_array[j].finally_op) {
  ------------------
  |  Branch (169:10): [True: 0, False: 0]
  ------------------
  170|      0|						b = blocks + block_map[op_array->try_catch_array[j].finally_op];
  171|      0|						b->flags |= ZEND_BB_FINALLY;
  ------------------
  |  |   28|      0|#define ZEND_BB_FINALLY          (1<<7)  /* start of finally block */
  ------------------
  172|      0|						if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (172:11): [True: 0, False: 0]
  ------------------
  173|      0|							changed = 1;
  174|      0|							zend_mark_reachable(op_array->opcodes, cfg, b);
  175|      0|						}
  176|      0|					}
  177|      0|					if (op_array->try_catch_array[j].finally_end) {
  ------------------
  |  Branch (177:10): [True: 0, False: 0]
  ------------------
  178|      0|						b = blocks + block_map[op_array->try_catch_array[j].finally_end];
  179|      0|						b->flags |= ZEND_BB_FINALLY_END;
  ------------------
  |  |   29|      0|#define ZEND_BB_FINALLY_END      (1<<8)  /* end of finally block   */
  ------------------
  180|      0|						if (!(b->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (180:11): [True: 0, False: 0]
  ------------------
  181|      0|							changed = 1;
  182|      0|							zend_mark_reachable(op_array->opcodes, cfg, b);
  183|      0|						}
  184|      0|					}
  185|      0|				} else {
  186|      0|					if (op_array->try_catch_array[j].catch_op) {
  ------------------
  |  Branch (186:10): [True: 0, False: 0]
  ------------------
  187|      0|						ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].catch_op]].flags & ZEND_BB_REACHABLE));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (187:7): [True: 0, False: 0]
  |  Branch (187:7): [True: 0, False: 0]
  ------------------
  188|      0|					}
  189|      0|					if (op_array->try_catch_array[j].finally_op) {
  ------------------
  |  Branch (189:10): [True: 0, False: 0]
  ------------------
  190|      0|						ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_op]].flags & ZEND_BB_REACHABLE));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (190:7): [True: 0, False: 0]
  |  Branch (190:7): [True: 0, False: 0]
  ------------------
  191|      0|					}
  192|      0|					if (op_array->try_catch_array[j].finally_end) {
  ------------------
  |  Branch (192:10): [True: 0, False: 0]
  ------------------
  193|      0|						ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_end]].flags & ZEND_BB_REACHABLE));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (193:7): [True: 0, False: 0]
  |  Branch (193:7): [True: 0, False: 0]
  ------------------
  194|      0|					}
  195|      0|				}
  196|      0|			}
  197|      0|		} while (changed);
  ------------------
  |  Branch (197:12): [True: 0, False: 0]
  ------------------
  198|      0|	}
  199|       |
  200|      3|	if (cfg->flags & ZEND_FUNC_FREE_LOOP_VAR) {
  ------------------
  |  |   28|      3|#define ZEND_FUNC_FREE_LOOP_VAR            (1<<5)
  ------------------
  |  Branch (200:6): [True: 0, False: 3]
  ------------------
  201|      0|		zend_basic_block *b;
  202|      0|		uint32_t *block_map = cfg->map;
  203|       |
  204|       |		/* Mark blocks that are unreachable, but free a loop var created in a reachable block. */
  205|      0|		for (b = blocks; b < blocks + cfg->blocks_count; b++) {
  ------------------
  |  Branch (205:20): [True: 0, False: 0]
  ------------------
  206|      0|			if (b->flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (206:8): [True: 0, False: 0]
  ------------------
  207|      0|				continue;
  208|      0|			}
  209|       |
  210|      0|			for (uint32_t j = b->start; j < b->start + b->len; j++) {
  ------------------
  |  Branch (210:32): [True: 0, False: 0]
  ------------------
  211|      0|				zend_op *opline = &op_array->opcodes[j];
  212|      0|				if (zend_optimizer_is_loop_var_free(opline)) {
  ------------------
  |  Branch (212:9): [True: 0, False: 0]
  ------------------
  213|      0|					zend_op *def_opline = zend_optimizer_get_loop_var_def(op_array, opline);
  214|      0|					if (def_opline) {
  ------------------
  |  Branch (214:10): [True: 0, False: 0]
  ------------------
  215|      0|						uint32_t def_block = block_map[def_opline - op_array->opcodes];
  216|      0|						if (blocks[def_block].flags & ZEND_BB_REACHABLE) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (216:11): [True: 0, False: 0]
  ------------------
  217|      0|							b->flags |= ZEND_BB_UNREACHABLE_FREE;
  ------------------
  |  |   30|      0|#define ZEND_BB_UNREACHABLE_FREE (1<<11) /* unreachable loop free  */
  ------------------
  218|      0|							break;
  219|      0|						}
  220|      0|					}
  221|      0|				}
  222|      0|			}
  223|      0|		}
  224|      0|	}
  225|      3|}
zend_cfg.c:zend_mark_reachable:
   26|      3|{
   27|      3|	zend_basic_block *blocks = cfg->blocks;
   28|       |
   29|      3|	zend_worklist work;
   30|      3|	ALLOCA_FLAG(list_use_heap)
   31|      3|	ZEND_WORKLIST_ALLOCA(&work, cfg->blocks_count, list_use_heap);
  ------------------
  |  |   70|      3|#define ZEND_WORKLIST_ALLOCA(w, _len, use_heap) do { \
  |  |   71|      3|		(w)->stack.buf = (int*)do_alloca(ZEND_MM_ALIGNED_SIZE(sizeof(int) * _len) + sizeof(zend_ulong) * zend_bitset_len(_len), use_heap); \
  |  |  ------------------
  |  |  |  |  247|      3|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      3|		(w)->stack.len = 0; \
  |  |   73|      3|		(w)->stack.capacity = _len; \
  |  |   74|      3|		(w)->visited = (zend_bitset)((char*)(w)->stack.buf + ZEND_MM_ALIGNED_SIZE(sizeof(int) * _len)); \
  |  |  ------------------
  |  |  |  |   34|      3|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      3|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      3|		memset((w)->visited, 0, sizeof(zend_ulong) * zend_bitset_len(_len)); \
  |  |   76|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (76:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
   32|       |
   33|      3|	zend_worklist_push(&work, b - cfg->blocks);
   34|       |
   35|      6|	while (zend_worklist_len(&work)) {
  ------------------
  |  Branch (35:9): [True: 3, False: 3]
  ------------------
   36|      3|		b = cfg->blocks + zend_worklist_pop(&work);
   37|       |
   38|      3|		b->flags |= ZEND_BB_REACHABLE;
  ------------------
  |  |   36|      3|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
   39|      3|		if (b->successors_count == 0) {
  ------------------
  |  Branch (39:7): [True: 3, False: 0]
  ------------------
   40|      3|			b->flags |= ZEND_BB_EXIT;
  ------------------
  |  |   24|      3|#define ZEND_BB_EXIT             (1<<3)  /* without successors     */
  ------------------
   41|      3|			continue;
   42|      3|		}
   43|       |
   44|      0|		for (uint32_t i = 0; i < b->successors_count; i++) {
  ------------------
  |  Branch (44:24): [True: 0, False: 0]
  ------------------
   45|      0|			zend_basic_block *succ = blocks + b->successors[i];
   46|       |
   47|      0|			if (b->len != 0) {
  ------------------
  |  Branch (47:8): [True: 0, False: 0]
  ------------------
   48|      0|				uint8_t opcode = opcodes[b->start + b->len - 1].opcode;
   49|      0|				if (opcode == ZEND_MATCH) {
  ------------------
  |  |  317|      0|#define ZEND_MATCH                          195
  ------------------
  |  Branch (49:9): [True: 0, False: 0]
  ------------------
   50|      0|					succ->flags |= ZEND_BB_TARGET;
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
   51|      0|				} else if (opcode == ZEND_SWITCH_LONG || opcode == ZEND_SWITCH_STRING) {
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
              				} else if (opcode == ZEND_SWITCH_LONG || opcode == ZEND_SWITCH_STRING) {
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (51:16): [True: 0, False: 0]
  |  Branch (51:46): [True: 0, False: 0]
  ------------------
   52|      0|					if (i == b->successors_count - 1) {
  ------------------
  |  Branch (52:10): [True: 0, False: 0]
  ------------------
   53|      0|						succ->flags |= ZEND_BB_FOLLOW | ZEND_BB_TARGET;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
              						succ->flags |= ZEND_BB_FOLLOW | ZEND_BB_TARGET;
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
   54|      0|					} else {
   55|      0|						succ->flags |= ZEND_BB_TARGET;
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
   56|      0|					}
   57|      0|				} else if (b->successors_count == 1) {
  ------------------
  |  Branch (57:16): [True: 0, False: 0]
  ------------------
   58|      0|					if (opcode == ZEND_JMP) {
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (58:10): [True: 0, False: 0]
  ------------------
   59|      0|						succ->flags |= ZEND_BB_TARGET;
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
   60|      0|					} else {
   61|      0|						succ->flags |= ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
   62|       |
   63|      0|						if ((cfg->flags & ZEND_CFG_STACKLESS)) {
  ------------------
  |  |   92|      0|#define ZEND_CFG_STACKLESS             (1<<30)
  ------------------
  |  Branch (63:11): [True: 0, False: 0]
  ------------------
   64|      0|							if (opcode == ZEND_INCLUDE_OR_EVAL ||
  ------------------
  |  |  196|      0|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (64:12): [True: 0, False: 0]
  ------------------
   65|      0|								opcode == ZEND_GENERATOR_CREATE ||
  ------------------
  |  |  261|      0|#define ZEND_GENERATOR_CREATE               139
  ------------------
  |  Branch (65:9): [True: 0, False: 0]
  ------------------
   66|      0|								opcode == ZEND_YIELD ||
  ------------------
  |  |  282|      0|#define ZEND_YIELD                          160
  ------------------
  |  Branch (66:9): [True: 0, False: 0]
  ------------------
   67|      0|								opcode == ZEND_YIELD_FROM ||
  ------------------
  |  |  288|      0|#define ZEND_YIELD_FROM                     166
  ------------------
  |  Branch (67:9): [True: 0, False: 0]
  ------------------
   68|      0|								opcode == ZEND_DO_FCALL ||
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (68:9): [True: 0, False: 0]
  ------------------
   69|      0|								opcode == ZEND_DO_UCALL ||
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (69:9): [True: 0, False: 0]
  ------------------
   70|      0|								opcode == ZEND_DO_FCALL_BY_NAME) {
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (70:9): [True: 0, False: 0]
  ------------------
   71|      0|								succ->flags |= ZEND_BB_ENTRY;
  ------------------
  |  |   25|      0|#define ZEND_BB_ENTRY            (1<<4)  /* stackless entry        */
  ------------------
   72|      0|							}
   73|      0|						}
   74|      0|						if ((cfg->flags & ZEND_CFG_RECV_ENTRY)) {
  ------------------
  |  |   97|      0|#define ZEND_CFG_RECV_ENTRY            (1<<24)
  ------------------
  |  Branch (74:11): [True: 0, False: 0]
  ------------------
   75|      0|							if (opcode == ZEND_RECV ||
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (75:12): [True: 0, False: 0]
  ------------------
   76|      0|								opcode == ZEND_RECV_INIT) {
  ------------------
  |  |  187|      0|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (76:9): [True: 0, False: 0]
  ------------------
   77|      0|								succ->flags |= ZEND_BB_RECV_ENTRY;
  ------------------
  |  |   31|      0|#define ZEND_BB_RECV_ENTRY       (1<<12) /* RECV entry             */
  ------------------
   78|      0|							}
   79|      0|						}
   80|      0|					}
   81|      0|				} else {
   82|      0|					ZEND_ASSERT(b->successors_count == 2);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (82:6): [True: 0, False: 0]
  |  Branch (82:6): [True: 0, False: 0]
  ------------------
   83|      0|					if (i == 0) {
  ------------------
  |  Branch (83:10): [True: 0, False: 0]
  ------------------
   84|      0|						succ->flags |= ZEND_BB_TARGET;
  ------------------
  |  |   23|      0|#define ZEND_BB_TARGET           (1<<2)  /* jump target            */
  ------------------
   85|      0|					} else {
   86|      0|						succ->flags |= ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
   87|      0|					}
   88|      0|				}
   89|      0|			} else {
   90|      0|				succ->flags |= ZEND_BB_FOLLOW;
  ------------------
  |  |   22|      0|#define ZEND_BB_FOLLOW           (1<<1)  /* follows the next block */
  ------------------
   91|      0|			}
   92|       |
   93|       |			/* Check reachability of successor */
   94|      0|			if (!(succ->flags & ZEND_BB_REACHABLE)) {
  ------------------
  |  |   36|      0|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (94:8): [True: 0, False: 0]
  ------------------
   95|      0|				zend_worklist_push(&work, succ - cfg->blocks);
   96|      0|			}
   97|      0|		}
   98|      0|	}
   99|       |
  100|      3|	ZEND_WORKLIST_FREE_ALLOCA(&work, list_use_heap);
  ------------------
  |  |   79|      3|	free_alloca((w)->stack.buf, use_heap)
  |  |  ------------------
  |  |  |  |  248|      3|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  101|      3|}
zend_cfg.c:initialize_block:
  251|      2|static void initialize_block(zend_basic_block *block) {
  252|      2|	block->flags = 0;
  253|      2|	block->successors = block->successors_storage;
  254|      2|	block->successors_count = 0;
  255|      2|	block->predecessors_count = 0;
  256|      2|	block->predecessor_offset = -1;
  257|      2|	block->idom = -1;
  258|      2|	block->loop_header = -1;
  259|      2|	block->level = -1;
  260|      2|	block->children = -1;
  261|      2|	block->next_child = -1;
  262|      2|}

zend_build_dfg:
  251|      1|{
  252|      1|	uint32_t set_size = dfg->size;
  253|      1|	zend_basic_block *blocks = cfg->blocks;
  254|      1|	uint32_t blocks_count = cfg->blocks_count;
  255|      1|	zend_bitset tmp, def, use, in, out;
  256|      1|	uint32_t j;
  257|       |
  258|      1|	tmp = dfg->tmp;
  259|      1|	def = dfg->def;
  260|      1|	use = dfg->use;
  261|      1|	in  = dfg->in;
  262|      1|	out = dfg->out;
  263|       |
  264|       |	/* Collect "def" and "use" sets */
  265|      2|	for (j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (265:14): [True: 1, False: 1]
  ------------------
  266|      1|		const zend_op *opline, *end;
  267|      1|		zend_bitset b_use, b_def;
  268|       |
  269|      1|		if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (269:7): [True: 0, False: 1]
  ------------------
  270|      0|			continue;
  271|      0|		}
  272|       |
  273|      1|		opline = op_array->opcodes + blocks[j].start;
  274|      1|		end = opline + blocks[j].len;
  275|      1|		b_use = DFG_BITSET(use, set_size, j);
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
  276|      1|		b_def = DFG_BITSET(def, set_size, j);
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
  277|      2|		for (; opline < end; opline++) {
  ------------------
  |  Branch (277:10): [True: 1, False: 1]
  ------------------
  278|      1|			if (opline->opcode != ZEND_OP_DATA) {
  ------------------
  |  |  259|      1|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (278:8): [True: 1, False: 0]
  ------------------
  279|      1|				zend_dfg_add_use_def_op_impl(op_array, opline, build_flags, b_use, b_def);
  280|      1|			}
  281|      1|		}
  282|      1|	}
  283|       |
  284|       |	/* Calculate "in" and "out" sets */
  285|      1|	{
  286|      1|		uint32_t worklist_len = zend_bitset_len(blocks_count);
  287|      1|		zend_bitset worklist;
  288|      1|		ALLOCA_FLAG(use_heap);
  289|      1|		worklist = ZEND_BITSET_ALLOCA(worklist_len, use_heap);
  ------------------
  |  |   43|      1|	(zend_bitset)do_alloca((n) * ZEND_BITSET_ELM_SIZE, use_heap)
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  290|      1|		memset(worklist, 0, worklist_len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  291|      2|		for (j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (291:15): [True: 1, False: 1]
  ------------------
  292|      1|			zend_bitset_incl(worklist, j);
  293|      1|		}
  294|      2|		while (!zend_bitset_empty(worklist, worklist_len)) {
  ------------------
  |  Branch (294:10): [True: 1, False: 1]
  ------------------
  295|       |			/* We use the last block on the worklist, because predecessors tend to be located
  296|       |			 * before the succeeding block, so this converges faster. */
  297|      1|			j = zend_bitset_last(worklist, worklist_len);
  298|      1|			zend_bitset_excl(worklist, j);
  299|       |
  300|      1|			if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (300:8): [True: 0, False: 1]
  ------------------
  301|      0|				continue;
  302|      0|			}
  303|      1|			if (blocks[j].successors_count != 0) {
  ------------------
  |  Branch (303:8): [True: 0, False: 1]
  ------------------
  304|      0|				zend_bitset_copy(DFG_BITSET(out, set_size, j), DFG_BITSET(in, set_size, blocks[j].successors[0]), set_size);
  ------------------
  |  |   34|      0|	((set) + ((block_num) * (set_size)))
  ------------------
              				zend_bitset_copy(DFG_BITSET(out, set_size, j), DFG_BITSET(in, set_size, blocks[j].successors[0]), set_size);
  ------------------
  |  |   34|      0|	((set) + ((block_num) * (set_size)))
  ------------------
  305|      0|				for (uint32_t k = 1; k < blocks[j].successors_count; k++) {
  ------------------
  |  Branch (305:26): [True: 0, False: 0]
  ------------------
  306|      0|					zend_bitset_union(DFG_BITSET(out, set_size, j), DFG_BITSET(in, set_size, blocks[j].successors[k]), set_size);
  ------------------
  |  |   34|      0|	((set) + ((block_num) * (set_size)))
  ------------------
              					zend_bitset_union(DFG_BITSET(out, set_size, j), DFG_BITSET(in, set_size, blocks[j].successors[k]), set_size);
  ------------------
  |  |   34|      0|	((set) + ((block_num) * (set_size)))
  ------------------
  307|      0|				}
  308|      1|			} else {
  309|      1|				zend_bitset_clear(DFG_BITSET(out, set_size, j), set_size);
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
  310|      1|			}
  311|      1|			zend_bitset_union_with_difference(tmp, DFG_BITSET(use, set_size, j), DFG_BITSET(out, set_size, j), DFG_BITSET(def, set_size, j), set_size);
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
              			zend_bitset_union_with_difference(tmp, DFG_BITSET(use, set_size, j), DFG_BITSET(out, set_size, j), DFG_BITSET(def, set_size, j), set_size);
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
              			zend_bitset_union_with_difference(tmp, DFG_BITSET(use, set_size, j), DFG_BITSET(out, set_size, j), DFG_BITSET(def, set_size, j), set_size);
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
  312|      1|			if (!zend_bitset_equal(DFG_BITSET(in, set_size, j), tmp, set_size)) {
  ------------------
  |  |   34|      1|	((set) + ((block_num) * (set_size)))
  ------------------
  |  Branch (312:8): [True: 0, False: 1]
  ------------------
  313|      0|				zend_bitset_copy(DFG_BITSET(in, set_size, j), tmp, set_size);
  ------------------
  |  |   34|      0|	((set) + ((block_num) * (set_size)))
  ------------------
  314|       |
  315|       |				/* Add predecessors of changed block to worklist */
  316|      0|				{
  317|      0|					const int *predecessors = &cfg->predecessors[blocks[j].predecessor_offset];
  318|      0|					for (uint32_t k = 0; k < blocks[j].predecessors_count; k++) {
  ------------------
  |  Branch (318:27): [True: 0, False: 0]
  ------------------
  319|      0|						zend_bitset_incl(worklist, predecessors[k]);
  320|      0|					}
  321|      0|				}
  322|      0|			}
  323|      1|		}
  324|       |
  325|       |		free_alloca(worklist, use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|      1|	}
  327|      1|}
zend_dfg.c:zend_dfg_add_use_def_op_impl:
   21|      1|{
   22|      1|	uint32_t var_num;
   23|      1|	const zend_op *next;
   24|       |
   25|      1|	if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (25:6): [True: 0, False: 1]
  ------------------
   26|      0|		var_num = EX_VAR_TO_NUM(opline->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   27|      0|		if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (27:7): [True: 0, False: 0]
  ------------------
   28|      0|			zend_bitset_incl(use, var_num);
   29|      0|		}
   30|      0|	}
   31|      1|	if (((opline->op2_type & (IS_VAR|IS_TMP_VAR)) != 0
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (((opline->op2_type & (IS_VAR|IS_TMP_VAR)) != 0
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (31:7): [True: 0, False: 1]
  ------------------
   32|      0|	  && opline->opcode != ZEND_FE_FETCH_R
  ------------------
  |  |  201|      1|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (32:7): [True: 0, False: 0]
  ------------------
   33|      0|	  && opline->opcode != ZEND_FE_FETCH_RW)
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (33:7): [True: 0, False: 0]
  ------------------
   34|      1|	 || (opline->op2_type == IS_CV)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (34:6): [True: 0, False: 1]
  ------------------
   35|      0|		var_num = EX_VAR_TO_NUM(opline->op2.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   36|      0|		if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (36:7): [True: 0, False: 0]
  ------------------
   37|      0|			zend_bitset_incl(use, var_num);
   38|      0|		}
   39|      0|	}
   40|      1|	if ((build_flags & ZEND_SSA_USE_CV_RESULTS)
  ------------------
  |  |   99|      1|#define ZEND_SSA_USE_CV_RESULTS        (1<<22)
  ------------------
  |  Branch (40:6): [True: 0, False: 1]
  ------------------
   41|      0|	 && opline->result_type == IS_CV
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41:6): [True: 0, False: 0]
  ------------------
   42|      0|	 && opline->opcode != ZEND_RECV) {
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (42:6): [True: 0, False: 0]
  ------------------
   43|      0|		var_num = EX_VAR_TO_NUM(opline->result.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   44|      0|		if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (44:7): [True: 0, False: 0]
  ------------------
   45|      0|			zend_bitset_incl(use, var_num);
   46|      0|		}
   47|      0|	}
   48|       |
   49|      1|	switch (opline->opcode) {
   50|      0|		case ZEND_ASSIGN:
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (50:3): [True: 0, False: 1]
  ------------------
   51|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op2_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (51:8): [True: 0, False: 0]
  |  Branch (51:49): [True: 0, False: 0]
  ------------------
   52|      0|				zend_bitset_incl(def, EX_VAR_TO_NUM(opline->op2.var));
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   53|      0|			}
   54|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (54:8): [True: 0, False: 0]
  ------------------
   55|      0|add_op1_def:
   56|      0|				zend_bitset_incl(def, EX_VAR_TO_NUM(opline->op1.var));
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   57|      0|			}
   58|      0|			break;
   59|      0|		case ZEND_ASSIGN_REF:
  ------------------
  |  |  154|      0|#define ZEND_ASSIGN_REF                      30
  ------------------
  |  Branch (59:3): [True: 0, False: 1]
  ------------------
   60|      0|			if (opline->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (60:8): [True: 0, False: 0]
  ------------------
   61|      0|				zend_bitset_incl(def, EX_VAR_TO_NUM(opline->op2.var));
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   62|      0|			}
   63|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (63:8): [True: 0, False: 0]
  ------------------
   64|      0|				goto add_op1_def;
   65|      0|			}
   66|      0|			break;
   67|      0|		case ZEND_ASSIGN_DIM:
  ------------------
  |  |  147|      0|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (67:3): [True: 0, False: 1]
  ------------------
   68|      0|		case ZEND_ASSIGN_OBJ:
  ------------------
  |  |  148|      0|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (68:3): [True: 0, False: 1]
  ------------------
   69|      0|			next = opline + 1;
   70|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (70:8): [True: 0, False: 0]
  ------------------
   71|      0|				var_num = EX_VAR_TO_NUM(next->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   72|      0|				if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (72:9): [True: 0, False: 0]
  ------------------
   73|      0|					zend_bitset_incl(use, var_num);
   74|      0|				}
   75|      0|				if (build_flags & ZEND_SSA_RC_INFERENCE && next->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              				if (build_flags & ZEND_SSA_RC_INFERENCE && next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (75:9): [True: 0, False: 0]
  |  Branch (75:48): [True: 0, False: 0]
  ------------------
   76|      0|					zend_bitset_incl(def, var_num);
   77|      0|				}
   78|      0|			}
   79|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (79:8): [True: 0, False: 0]
  ------------------
   80|      0|				goto add_op1_def;
   81|      0|			}
   82|      0|			break;
   83|      0|		case ZEND_ASSIGN_OBJ_REF:
  ------------------
  |  |  156|      0|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (83:3): [True: 0, False: 1]
  ------------------
   84|      0|			next = opline + 1;
   85|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (85:8): [True: 0, False: 0]
  ------------------
   86|      0|				var_num = EX_VAR_TO_NUM(next->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
   87|      0|				if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (87:9): [True: 0, False: 0]
  ------------------
   88|      0|					zend_bitset_incl(use, var_num);
   89|      0|				}
   90|      0|				if (next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (90:9): [True: 0, False: 0]
  ------------------
   91|      0|					zend_bitset_incl(def, var_num);
   92|      0|				}
   93|      0|			}
   94|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (94:8): [True: 0, False: 0]
  ------------------
   95|      0|				goto add_op1_def;
   96|      0|			}
   97|      0|			break;
   98|      0|		case ZEND_ASSIGN_STATIC_PROP:
  ------------------
  |  |  149|      0|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
  |  Branch (98:3): [True: 0, False: 1]
  ------------------
   99|      0|			next = opline + 1;
  100|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (100:8): [True: 0, False: 0]
  ------------------
  101|      0|				var_num = EX_VAR_TO_NUM(next->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  102|      0|				if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (102:9): [True: 0, False: 0]
  ------------------
  103|      0|					zend_bitset_incl(use, var_num);
  104|      0|				}
  105|      0|				if ((build_flags & ZEND_SSA_RC_INFERENCE) && next->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              				if ((build_flags & ZEND_SSA_RC_INFERENCE) && next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (105:9): [True: 0, False: 0]
  |  Branch (105:50): [True: 0, False: 0]
  ------------------
  106|      0|					zend_bitset_incl(def, var_num);
  107|      0|				}
  108|      0|			}
  109|      0|			break;
  110|      0|		case ZEND_ASSIGN_STATIC_PROP_REF:
  ------------------
  |  |  157|      0|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
  |  Branch (110:3): [True: 0, False: 1]
  ------------------
  111|      0|			next = opline + 1;
  112|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (112:8): [True: 0, False: 0]
  ------------------
  113|      0|				var_num = EX_VAR_TO_NUM(next->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  114|      0|				if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (114:9): [True: 0, False: 0]
  ------------------
  115|      0|					zend_bitset_incl(use, var_num);
  116|      0|				}
  117|      0|				if (next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (117:9): [True: 0, False: 0]
  ------------------
  118|      0|					zend_bitset_incl(def, var_num);
  119|      0|				}
  120|      0|			}
  121|      0|			break;
  122|      0|		case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|      0|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (122:3): [True: 0, False: 1]
  ------------------
  123|      0|		case ZEND_FRAMELESS_ICALL_3:
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (123:3): [True: 0, False: 1]
  ------------------
  124|      0|			next = opline + 1;
  125|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (125:8): [True: 0, False: 0]
  ------------------
  126|      0|				var_num = EX_VAR_TO_NUM(next->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  127|      0|				if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (127:9): [True: 0, False: 0]
  ------------------
  128|      0|					zend_bitset_incl(use, var_num);
  129|      0|				}
  130|      0|			}
  131|      0|			break;
  132|      0|		case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (132:3): [True: 0, False: 1]
  ------------------
  133|      0|		case ZEND_ASSIGN_OBJ_OP:
  ------------------
  |  |  152|      0|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (133:3): [True: 0, False: 1]
  ------------------
  134|      0|			next = opline + 1;
  135|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (135:8): [True: 0, False: 0]
  ------------------
  136|      0|				var_num = EX_VAR_TO_NUM(next->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  137|      0|				if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (137:9): [True: 0, False: 0]
  ------------------
  138|      0|					zend_bitset_incl(use, var_num);
  139|      0|				}
  140|      0|			}
  141|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (141:8): [True: 0, False: 0]
  ------------------
  142|      0|				goto add_op1_def;
  143|      0|			}
  144|      0|			break;
  145|      0|		case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (145:3): [True: 0, False: 1]
  ------------------
  146|      0|		case ZEND_PRE_INC:
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (146:3): [True: 0, False: 1]
  ------------------
  147|      0|		case ZEND_PRE_DEC:
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (147:3): [True: 0, False: 1]
  ------------------
  148|      0|		case ZEND_POST_INC:
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (148:3): [True: 0, False: 1]
  ------------------
  149|      0|		case ZEND_POST_DEC:
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (149:3): [True: 0, False: 1]
  ------------------
  150|      0|		case ZEND_BIND_GLOBAL:
  ------------------
  |  |  290|      0|#define ZEND_BIND_GLOBAL                    168
  ------------------
  |  Branch (150:3): [True: 0, False: 1]
  ------------------
  151|      0|		case ZEND_BIND_STATIC:
  ------------------
  |  |  305|      0|#define ZEND_BIND_STATIC                    183
  ------------------
  |  Branch (151:3): [True: 0, False: 1]
  ------------------
  152|      0|		case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (152:3): [True: 0, False: 1]
  ------------------
  153|      0|		case ZEND_SEND_VAR_NO_REF:
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  |  Branch (153:3): [True: 0, False: 1]
  ------------------
  154|      0|		case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|      0|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (154:3): [True: 0, False: 1]
  ------------------
  155|      0|		case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (155:3): [True: 0, False: 1]
  ------------------
  156|      0|		case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      0|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (156:3): [True: 0, False: 1]
  ------------------
  157|      0|		case ZEND_SEND_REF:
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (157:3): [True: 0, False: 1]
  ------------------
  158|      0|		case ZEND_SEND_UNPACK:
  ------------------
  |  |  287|      0|#define ZEND_SEND_UNPACK                    165
  ------------------
  |  Branch (158:3): [True: 0, False: 1]
  ------------------
  159|      0|		case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (159:3): [True: 0, False: 1]
  ------------------
  160|      0|		case ZEND_MAKE_REF:
  ------------------
  |  |  262|      0|#define ZEND_MAKE_REF                       140
  ------------------
  |  Branch (160:3): [True: 0, False: 1]
  ------------------
  161|      0|		case ZEND_PRE_INC_OBJ:
  ------------------
  |  |  254|      0|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (161:3): [True: 0, False: 1]
  ------------------
  162|      0|		case ZEND_PRE_DEC_OBJ:
  ------------------
  |  |  255|      0|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (162:3): [True: 0, False: 1]
  ------------------
  163|      0|		case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      0|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (163:3): [True: 0, False: 1]
  ------------------
  164|      0|		case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      0|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (164:3): [True: 0, False: 1]
  ------------------
  165|      0|		case ZEND_UNSET_DIM:
  ------------------
  |  |  198|      0|#define ZEND_UNSET_DIM                       75
  ------------------
  |  Branch (165:3): [True: 0, False: 1]
  ------------------
  166|      0|		case ZEND_UNSET_OBJ:
  ------------------
  |  |  199|      0|#define ZEND_UNSET_OBJ                       76
  ------------------
  |  Branch (166:3): [True: 0, False: 1]
  ------------------
  167|      0|		case ZEND_FETCH_DIM_W:
  ------------------
  |  |  206|      0|#define ZEND_FETCH_DIM_W                     84
  ------------------
  |  Branch (167:3): [True: 0, False: 1]
  ------------------
  168|      0|		case ZEND_FETCH_DIM_RW:
  ------------------
  |  |  209|      0|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (168:3): [True: 0, False: 1]
  ------------------
  169|      0|		case ZEND_FETCH_DIM_FUNC_ARG:
  ------------------
  |  |  215|      0|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (169:3): [True: 0, False: 1]
  ------------------
  170|      0|		case ZEND_FETCH_DIM_UNSET:
  ------------------
  |  |  218|      0|#define ZEND_FETCH_DIM_UNSET                 96
  ------------------
  |  Branch (170:3): [True: 0, False: 1]
  ------------------
  171|      0|		case ZEND_FETCH_LIST_W:
  ------------------
  |  |  277|      0|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (171:3): [True: 0, False: 1]
  ------------------
  172|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (172:8): [True: 0, False: 0]
  ------------------
  173|      0|				goto add_op1_def;
  174|      0|			}
  175|      0|			break;
  176|      0|		case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (176:3): [True: 0, False: 1]
  ------------------
  177|      0|		case ZEND_CAST:
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (177:3): [True: 0, False: 1]
  ------------------
  178|      0|		case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (178:3): [True: 0, False: 1]
  ------------------
  179|      0|		case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (179:3): [True: 0, False: 1]
  ------------------
  180|      0|		case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (180:3): [True: 0, False: 1]
  ------------------
  181|      0|		case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      0|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (181:3): [True: 0, False: 1]
  ------------------
  182|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (182:8): [True: 0, False: 0]
  |  Branch (182:49): [True: 0, False: 0]
  ------------------
  183|      0|				goto add_op1_def;
  184|      0|			}
  185|      0|			break;
  186|      0|		case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (186:3): [True: 0, False: 1]
  ------------------
  187|      0|			var_num = EX_VAR_TO_NUM(opline->result.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  188|      0|			if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (188:8): [True: 0, False: 0]
  ------------------
  189|      0|				zend_bitset_incl(use, var_num);
  190|      0|			}
  191|      0|			break;
  192|      0|		case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (192:3): [True: 0, False: 1]
  ------------------
  193|      0|			var_num = EX_VAR_TO_NUM(opline->result.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  194|      0|			if (!zend_bitset_in(def, var_num)) {
  ------------------
  |  Branch (194:8): [True: 0, False: 0]
  ------------------
  195|      0|				zend_bitset_incl(use, var_num);
  196|      0|			}
  197|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  198|      0|		case ZEND_INIT_ARRAY:
  ------------------
  |  |  194|      0|#define ZEND_INIT_ARRAY                      71
  ------------------
  |  Branch (198:3): [True: 0, False: 1]
  ------------------
  199|      0|			if (((build_flags & ZEND_SSA_RC_INFERENCE)
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (199:9): [True: 0, False: 0]
  ------------------
  200|      0|						|| (opline->extended_value & ZEND_ARRAY_ELEMENT_REF))
  ------------------
  |  | 1209|      0|#define ZEND_ARRAY_ELEMENT_REF		(1<<0)
  ------------------
  |  Branch (200:10): [True: 0, False: 0]
  ------------------
  201|      0|					&& opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (201:9): [True: 0, False: 0]
  ------------------
  202|      0|				goto add_op1_def;
  203|      0|			}
  204|      0|			break;
  205|      0|		case ZEND_YIELD:
  ------------------
  |  |  282|      0|#define ZEND_YIELD                          160
  ------------------
  |  Branch (205:3): [True: 0, False: 1]
  ------------------
  206|      0|			if (opline->op1_type == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (206:8): [True: 0, False: 0]
  ------------------
  207|      0|					&& ((op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  352|      0|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (207:10): [True: 0, False: 0]
  ------------------
  208|      0|						|| (build_flags & ZEND_SSA_RC_INFERENCE))) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (208:10): [True: 0, False: 0]
  ------------------
  209|      0|				goto add_op1_def;
  210|      0|			}
  211|      0|			break;
  212|      0|		case ZEND_UNSET_CV:
  ------------------
  |  |  275|      0|#define ZEND_UNSET_CV                       153
  ------------------
  |  Branch (212:3): [True: 0, False: 1]
  ------------------
  213|      0|			goto add_op1_def;
  214|      0|		case ZEND_VERIFY_RETURN_TYPE:
  ------------------
  |  |  246|      0|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
  |  Branch (214:3): [True: 0, False: 1]
  ------------------
  215|      0|			if (opline->op1_type & (IS_TMP_VAR|IS_VAR|IS_CV)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (opline->op1_type & (IS_TMP_VAR|IS_VAR|IS_CV)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (opline->op1_type & (IS_TMP_VAR|IS_VAR|IS_CV)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (215:8): [True: 0, False: 0]
  ------------------
  216|      0|				goto add_op1_def;
  217|      0|			}
  218|      0|			break;
  219|      0|		case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (219:3): [True: 0, False: 1]
  ------------------
  220|      0|		case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (220:3): [True: 0, False: 1]
  ------------------
  221|       |#if 0
  222|       |			/* This special case was handled above the switch */
  223|       |			if (opline->op2_type != IS_CV) {
  224|       |				op2_use = -1; /* not used */
  225|       |			}
  226|       |#endif
  227|      0|			zend_bitset_incl(def, EX_VAR_TO_NUM(opline->op2.var));
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  228|      0|			break;
  229|      0|		case ZEND_BIND_LEXICAL:
  ------------------
  |  |  304|      0|#define ZEND_BIND_LEXICAL                   182
  ------------------
  |  Branch (229:3): [True: 0, False: 1]
  ------------------
  230|      0|			if ((opline->extended_value & ZEND_BIND_REF) || (build_flags & ZEND_SSA_RC_INFERENCE)) {
  ------------------
  |  | 1202|      0|#define ZEND_BIND_REF      1
  ------------------
              			if ((opline->extended_value & ZEND_BIND_REF) || (build_flags & ZEND_SSA_RC_INFERENCE)) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (230:8): [True: 0, False: 0]
  |  Branch (230:52): [True: 0, False: 0]
  ------------------
  231|      0|				zend_bitset_incl(def, EX_VAR_TO_NUM(opline->op2.var));
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  232|      0|			}
  233|      0|			break;
  234|      1|		default:
  ------------------
  |  Branch (234:3): [True: 1, False: 0]
  ------------------
  235|      1|			break;
  236|      1|	}
  237|       |
  238|      1|	if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (238:6): [True: 0, False: 1]
  ------------------
  239|      0|		zend_bitset_incl(def, EX_VAR_TO_NUM(opline->result.var));
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  240|      0|	}
  241|      1|}

zend_func_info_startup:
  212|      2|{
  213|      2|	if (zend_func_info_rid == -1) {
  ------------------
  |  Branch (213:6): [True: 2, False: 0]
  ------------------
  214|      2|		zend_func_info_rid = zend_get_resource_handle("Zend Optimizer");
  215|      2|		if (zend_func_info_rid < 0) {
  ------------------
  |  Branch (215:7): [True: 0, False: 2]
  ------------------
  216|      0|			return FAILURE;
  217|      0|		}
  218|       |
  219|      2|		zend_hash_init(&func_info, sizeof(old_func_infos)/sizeof(func_info_t) + sizeof(func_infos)/sizeof(func_info_t), NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  220|       |
  221|      2|		zend_func_info_add(old_func_infos, sizeof(old_func_infos)/sizeof(func_info_t));
  222|      2|		zend_func_info_add(func_infos, sizeof(func_infos)/sizeof(func_info_t));
  223|      2|	}
  224|       |
  225|      2|	return SUCCESS;
  226|      2|}
zend_func_info.c:zend_func_info_add:
  199|      4|{
  200|  1.07k|	for (size_t i = 0; i < n; i++) {
  ------------------
  |  Branch (200:21): [True: 1.06k, False: 4]
  ------------------
  201|  1.06k|		zend_string *key = zend_string_init_interned(new_func_infos[i].name, new_func_infos[i].name_len, 1);
  202|       |
  203|  1.06k|		if (zend_hash_add_ptr(&func_info, key, (void**)&new_func_infos[i]) == NULL) {
  ------------------
  |  Branch (203:7): [True: 0, False: 1.06k]
  ------------------
  204|      0|			fprintf(stderr, "ERROR: Duplicate function info for \"%s\"\n", new_func_infos[i].name);
  205|      0|		}
  206|       |
  207|  1.06k|		zend_string_release_ex(key, 1);
  208|  1.06k|	}
  209|      4|}

zend_ssa_find_sccs:
  442|      1|{
  443|      1|	int index = 0;
  444|      1|	zend_worklist_stack stack, vstack;
  445|      1|	zend_scc_iterator *iterators;
  446|      1|	int j;
  447|      1|	ALLOCA_FLAG(stack_use_heap)
  448|      1|	ALLOCA_FLAG(vstack_use_heap)
  449|      1|	ALLOCA_FLAG(iterators_use_heap)
  450|       |
  451|      1|	iterators = do_alloca(sizeof(zend_scc_iterator) * ssa->vars_count, iterators_use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|      1|	ZEND_WORKLIST_STACK_ALLOCA(&vstack, ssa->vars_count, vstack_use_heap);
  ------------------
  |  |   29|      1|#define ZEND_WORKLIST_STACK_ALLOCA(s, _len, use_heap) do { \
  |  |   30|      1|		(s)->buf = (int*)do_alloca(sizeof(int) * _len, use_heap); \
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      1|		(s)->len = 0; \
  |  |   32|      1|		(s)->capacity = _len; \
  |  |   33|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (33:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  453|      1|	ZEND_WORKLIST_STACK_ALLOCA(&stack, ssa->vars_count, stack_use_heap);
  ------------------
  |  |   29|      1|#define ZEND_WORKLIST_STACK_ALLOCA(s, _len, use_heap) do { \
  |  |   30|      1|		(s)->buf = (int*)do_alloca(sizeof(int) * _len, use_heap); \
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      1|		(s)->len = 0; \
  |  |   32|      1|		(s)->capacity = _len; \
  |  |   33|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (33:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  454|       |
  455|       |	/* Find SCCs using Pearce's algorithm. */
  456|      1|	ssa->sccs = ssa->vars_count;
  457|      1|	for (j = 0; j < ssa->vars_count; j++) {
  ------------------
  |  Branch (457:14): [True: 0, False: 1]
  ------------------
  458|      0|		if (!ssa->vars[j].no_val && ssa->vars[j].scc < 0) {
  ------------------
  |  Branch (458:7): [True: 0, False: 0]
  |  Branch (458:31): [True: 0, False: 0]
  ------------------
  459|      0|			zend_ssa_check_scc_var(op_array, ssa, j, &index, &stack, &vstack, iterators);
  460|      0|		}
  461|      0|	}
  462|       |
  463|      1|	if (ssa->sccs) {
  ------------------
  |  Branch (463:6): [True: 0, False: 1]
  ------------------
  464|       |		/* Shift SCC indexes. */
  465|      0|		for (j = 0; j < ssa->vars_count; j++) {
  ------------------
  |  Branch (465:15): [True: 0, False: 0]
  ------------------
  466|      0|			if (ssa->vars[j].scc >= 0) {
  ------------------
  |  Branch (466:8): [True: 0, False: 0]
  ------------------
  467|      0|				ssa->vars[j].scc -= ssa->sccs;
  468|      0|			}
  469|      0|		}
  470|      0|	}
  471|      1|	ssa->sccs = ssa->vars_count - ssa->sccs;
  472|       |
  473|      1|	for (j = 0; j < ssa->vars_count; j++) {
  ------------------
  |  Branch (473:14): [True: 0, False: 1]
  ------------------
  474|      0|		if (ssa->vars[j].scc >= 0) {
  ------------------
  |  Branch (474:7): [True: 0, False: 0]
  ------------------
  475|      0|			int var = j;
  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  ------------------
  |  |  149|      0|	do { \
  |  |  150|      0|		zend_ssa_phi *p = ssa->vars[_var].phi_use_chain; \
  |  |  151|      0|		int use = ssa->vars[_var].use_chain; \
  |  |  152|      0|		while (use >= 0) { \
  |  |  ------------------
  |  |  |  Branch (152:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  153|      0|			FOR_EACH_DEFINED_VAR(use, MACRO); \
  |  |  ------------------
  |  |  |  |  113|      0|	do { \
  |  |  |  |  114|      0|		if (ssa->ops[line].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|			MACRO(ssa->ops[line].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|      0|		} \
  |  |  |  |  117|      0|		if (ssa->ops[line].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|			MACRO(ssa->ops[line].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  119|      0|		} \
  |  |  |  |  120|      0|		if (ssa->ops[line].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (120:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  121|      0|			MACRO(ssa->ops[line].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  122|      0|		} \
  |  |  |  |  123|      0|		if (op_array->opcodes[line].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (123:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  124|      0|			if (ssa->ops[line-1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (124:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  125|      0|				MACRO(ssa->ops[line-1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  126|      0|			} \
  |  |  |  |  127|      0|			if (ssa->ops[line-1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|				MACRO(ssa->ops[line-1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  129|      0|			} \
  |  |  |  |  130|      0|			if (ssa->ops[line-1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|      0|				MACRO(ssa->ops[line-1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  132|      0|			} \
  |  |  |  |  133|      0|		} else if ((uint32_t)line+1 < op_array->last && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  134|      0|		           op_array->opcodes[line+1].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  135|      0|			if (ssa->ops[line+1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (135:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  136|      0|				MACRO(ssa->ops[line+1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|			} \
  |  |  |  |  138|      0|			if (ssa->ops[line+1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (138:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  139|      0|				MACRO(ssa->ops[line+1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|      0|			} \
  |  |  |  |  141|      0|			if (ssa->ops[line+1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (141:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  142|      0|				MACRO(ssa->ops[line+1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  143|      0|			} \
  |  |  |  |  144|      0|		} \
  |  |  |  |  145|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|			use = zend_ssa_next_use(ssa->ops, _var, use); \
  |  |  155|      0|		} \
  |  |  156|      0|		p = ssa->vars[_var].phi_use_chain; \
  |  |  157|      0|		while (p) { \
  |  |  ------------------
  |  |  |  Branch (157:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  158|      0|			MACRO(p->ssa_var); \
  |  |  ------------------
  |  |  |  |  476|      0|			FOR_EACH_VAR_USAGE(var, CHECK_SCC_ENTRY);
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|	do { \
  |  |  |  |  |  |   90|      0|		if (ssa->vars[var2].scc != ssa->vars[var].scc) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (90:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   91|      0|			ssa->vars[var2].scc_entry = 1; \
  |  |  |  |  |  |   92|      0|		} \
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  159|      0|			p = zend_ssa_next_use_phi(ssa, _var, p); \
  |  |  160|      0|		} \
  |  |  161|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (161:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  477|      0|		}
  478|      0|	}
  479|       |
  480|      1|	ZEND_WORKLIST_STACK_FREE_ALLOCA(&stack, stack_use_heap);
  ------------------
  |  |   36|      1|	free_alloca((s)->buf, use_heap)
  |  |  ------------------
  |  |  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  481|      1|	ZEND_WORKLIST_STACK_FREE_ALLOCA(&vstack, vstack_use_heap);
  ------------------
  |  |   36|      1|	free_alloca((s)->buf, use_heap)
  |  |  ------------------
  |  |  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  482|       |	free_alloca(iterators, iterators_use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  483|      1|}
zend_ssa_find_false_dependencies:
  489|      1|{
  490|      1|	zend_ssa_var *ssa_vars = ssa->vars;
  491|      1|	const zend_ssa_op *ssa_ops = ssa->ops;
  492|      1|	int ssa_vars_count = ssa->vars_count;
  493|      1|	zend_bitset worklist;
  494|      1|	int i, use;
  495|      1|	const zend_ssa_phi *p;
  496|      1|	ALLOCA_FLAG(use_heap);
  497|       |
  498|      1|	if (!op_array->function_name || !ssa->vars || !ssa->ops) {
  ------------------
  |  Branch (498:6): [True: 1, False: 0]
  |  Branch (498:34): [True: 0, False: 0]
  |  Branch (498:48): [True: 0, False: 0]
  ------------------
  499|      1|		return;
  500|      1|	}
  501|       |
  502|      0|	worklist = do_alloca(sizeof(zend_ulong) * zend_bitset_len(ssa_vars_count), use_heap);
  ------------------
  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  503|      0|	memset(worklist, 0, sizeof(zend_ulong) * zend_bitset_len(ssa_vars_count));
  504|       |
  505|      0|	for (i = 0; i < ssa_vars_count; i++) {
  ------------------
  |  Branch (505:14): [True: 0, False: 0]
  ------------------
  506|      0|		ssa_vars[i].no_val = 1; /* mark as unused */
  507|      0|		use = ssa->vars[i].use_chain;
  508|      0|		while (use >= 0) {
  ------------------
  |  Branch (508:10): [True: 0, False: 0]
  ------------------
  509|      0|			if (!zend_ssa_is_no_val_use(&op_array->opcodes[use], &ssa->ops[use], i)) {
  ------------------
  |  Branch (509:8): [True: 0, False: 0]
  ------------------
  510|      0|				ssa_vars[i].no_val = 0; /* used directly */
  511|      0|				zend_bitset_incl(worklist, i);
  512|      0|				break;
  513|      0|			}
  514|      0|			use = zend_ssa_next_use(ssa_ops, i, use);
  515|      0|		}
  516|      0|	}
  517|       |
  518|      0|	WHILE_WORKLIST(worklist, zend_bitset_len(ssa_vars_count), i) {
  ------------------
  |  |   62|      0|#define WHILE_WORKLIST(worklist, len, i) do { \
  |  |   63|      0|	bool _done = 0; \
  |  |   64|      0|	while (!_done) { \
  |  |  ------------------
  |  |  |  Branch (64:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   65|      0|		_done = 1; \
  |  |   66|      0|		ZEND_BITSET_FOREACH(worklist, len, i) { \
  |  |  ------------------
  |  |  |  |  262|      0|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  |  |  263|      0|	zend_bitset _set = (set); \
  |  |  |  |  264|      0|	uint32_t _i, _len = (len); \
  |  |  |  |  265|      0|	for (_i = 0; _i < _len; _i++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (265:15): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  266|      0|		zend_ulong _x = _set[_i]; \
  |  |  |  |  267|      0|		if (_x) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (267:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  |  |  ------------------
  |  |  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|			zend_bitset_excl(worklist, i); \
  |  |   68|      0|			_done = 0;
  ------------------
  519|      0|		if (ssa_vars[i].definition_phi) {
  ------------------
  |  Branch (519:7): [True: 0, False: 0]
  ------------------
  520|       |			/* mark all possible sources as used */
  521|      0|			p = ssa_vars[i].definition_phi;
  522|      0|			if (p->pi >= 0) {
  ------------------
  |  Branch (522:8): [True: 0, False: 0]
  ------------------
  523|      0|				if (ssa_vars[p->sources[0]].no_val) {
  ------------------
  |  Branch (523:9): [True: 0, False: 0]
  ------------------
  524|      0|					ssa_vars[p->sources[0]].no_val = 0; /* used indirectly */
  525|      0|					zend_bitset_incl(worklist, p->sources[0]);
  526|      0|				}
  527|      0|			} else {
  528|      0|				for (uint32_t j = 0; j < ssa->cfg.blocks[p->block].predecessors_count; j++) {
  ------------------
  |  Branch (528:26): [True: 0, False: 0]
  ------------------
  529|      0|					ZEND_ASSERT(p->sources[j] >= 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (529:6): [True: 0, False: 0]
  |  Branch (529:6): [True: 0, False: 0]
  ------------------
  530|      0|					if (ssa->vars[p->sources[j]].no_val) {
  ------------------
  |  Branch (530:10): [True: 0, False: 0]
  ------------------
  531|      0|						ssa_vars[p->sources[j]].no_val = 0; /* used indirectly */
  532|      0|						zend_bitset_incl(worklist, p->sources[j]);
  533|      0|					}
  534|      0|				}
  535|      0|			}
  536|      0|		}
  537|      0|	} WHILE_WORKLIST_END();
  ------------------
  |  |   71|      0|		} ZEND_BITSET_FOREACH_END(); \
  |  |  ------------------
  |  |  |  |  284|      0|			} \
  |  |  |  |  285|      0|		} \
  |  |  |  |  286|      0|	} \
  |  |  |  |  287|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|	} \
  |  |   73|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (73:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  538|       |
  539|      0|	free_alloca(worklist, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  540|      0|}
zend_ssa_inference:
 4883|      1|{
 4884|      1|	zend_ssa_var_info *ssa_var_info;
 4885|      1|	int i;
 4886|       |
 4887|      1|	if (!ssa->var_info) {
  ------------------
  |  Branch (4887:6): [True: 1, False: 0]
  ------------------
 4888|      1|		ssa->var_info = zend_arena_calloc(arena, ssa->vars_count, sizeof(zend_ssa_var_info));
 4889|      1|	}
 4890|      1|	ssa_var_info = ssa->var_info;
 4891|       |
 4892|      1|	if (!op_array->function_name) {
  ------------------
  |  Branch (4892:6): [True: 1, False: 0]
  ------------------
 4893|      1|		for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (4893:15): [True: 0, False: 1]
  ------------------
 4894|      0|			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			ssa_var_info[i].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   56|      0|#define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4895|      0|			ssa_var_info[i].has_range = 0;
 4896|      0|		}
 4897|      1|	} else {
 4898|      0|		for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (4898:15): [True: 0, False: 0]
  ------------------
 4899|      0|			ssa_var_info[i].type = MAY_BE_UNDEF;
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
 4900|      0|			ssa_var_info[i].has_range = 0;
 4901|      0|			if (ssa->vars[i].alias) {
  ------------------
  |  Branch (4901:8): [True: 0, False: 0]
  ------------------
 4902|      0|				ssa_var_info[i].type |= get_ssa_alias_types(ssa->vars[i].alias);
 4903|      0|			}
 4904|      0|		}
 4905|      0|	}
 4906|      1|	for (i = op_array->last_var; i < ssa->vars_count; i++) {
  ------------------
  |  Branch (4906:31): [True: 0, False: 1]
  ------------------
 4907|      0|		ssa_var_info[i].type = 0;
 4908|      0|		ssa_var_info[i].has_range = 0;
 4909|      0|	}
 4910|       |
 4911|      1|	zend_mark_cv_references(op_array, script, ssa);
 4912|       |
 4913|      1|	zend_infer_ranges(op_array, ssa);
 4914|       |
 4915|      1|	if (zend_infer_types(op_array, script, ssa, optimization_level) == FAILURE) {
  ------------------
  |  Branch (4915:6): [True: 0, False: 1]
  ------------------
 4916|      0|		return FAILURE;
 4917|      0|	}
 4918|       |
 4919|      1|	return SUCCESS;
 4920|      1|}
zend_inference.c:zend_mark_cv_references:
 4745|      1|{
 4746|      1|	int var, def;
 4747|      1|	const zend_op *opline;
 4748|      1|	zend_arg_info *arg_info;
 4749|      1|	uint32_t worklist_len = zend_bitset_len(ssa->vars_count);
 4750|      1|	zend_bitset worklist;
 4751|      1|	ALLOCA_FLAG(use_heap);
 4752|       |
 4753|      1|	worklist = do_alloca(sizeof(zend_ulong) * worklist_len, use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4754|      1|	memset(worklist, 0, sizeof(zend_ulong) * worklist_len);
 4755|       |
 4756|       |	/* Collect SSA variables which definitions creates PHP reference */
 4757|      1|	for (var = 0; var < ssa->vars_count; var++) {
  ------------------
  |  Branch (4757:16): [True: 0, False: 1]
  ------------------
 4758|      0|		def = ssa->vars[var].definition;
 4759|      0|		if (def >= 0 && ssa->vars[var].var < op_array->last_var) {
  ------------------
  |  Branch (4759:7): [True: 0, False: 0]
  |  Branch (4759:19): [True: 0, False: 0]
  ------------------
 4760|      0|			opline = op_array->opcodes + def;
 4761|      0|			if (ssa->ops[def].result_def == var) {
  ------------------
  |  Branch (4761:8): [True: 0, False: 0]
  ------------------
 4762|      0|				switch (opline->opcode) {
 4763|      0|					case ZEND_RECV:
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (4763:6): [True: 0, False: 0]
  ------------------
 4764|      0|					case ZEND_RECV_INIT:
  ------------------
  |  |  187|      0|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (4764:6): [True: 0, False: 0]
  ------------------
 4765|      0|						arg_info = &op_array->arg_info[opline->op1.num-1];
 4766|      0|						if (!ZEND_ARG_SEND_MODE(arg_info)) {
  ------------------
  |  | 1130|      0|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|      0|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|      0|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4766:11): [True: 0, False: 0]
  ------------------
 4767|      0|							continue;
 4768|      0|						}
 4769|      0|						break;
 4770|      0|					default:
  ------------------
  |  Branch (4770:6): [True: 0, False: 0]
  ------------------
 4771|      0|						continue;
 4772|      0|				}
 4773|      0|			} else if (ssa->ops[def].op1_def == var) {
  ------------------
  |  Branch (4773:15): [True: 0, False: 0]
  ------------------
 4774|      0|				switch (opline->opcode) {
 4775|      0|					case ZEND_ASSIGN_REF:
  ------------------
  |  |  154|      0|#define ZEND_ASSIGN_REF                      30
  ------------------
  |  Branch (4775:6): [True: 0, False: 0]
  ------------------
 4776|      0|					case ZEND_MAKE_REF:
  ------------------
  |  |  262|      0|#define ZEND_MAKE_REF                       140
  ------------------
  |  Branch (4776:6): [True: 0, False: 0]
  ------------------
 4777|      0|					case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (4777:6): [True: 0, False: 0]
  ------------------
 4778|      0|					case ZEND_BIND_GLOBAL:
  ------------------
  |  |  290|      0|#define ZEND_BIND_GLOBAL                    168
  ------------------
  |  Branch (4778:6): [True: 0, False: 0]
  ------------------
 4779|      0|					case ZEND_SEND_REF:
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (4779:6): [True: 0, False: 0]
  ------------------
 4780|      0|					case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (4780:6): [True: 0, False: 0]
  ------------------
 4781|      0|					case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      0|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (4781:6): [True: 0, False: 0]
  ------------------
 4782|      0|					case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (4782:6): [True: 0, False: 0]
  ------------------
 4783|      0|						break;
 4784|      0|					case ZEND_INIT_ARRAY:
  ------------------
  |  |  194|      0|#define ZEND_INIT_ARRAY                      71
  ------------------
  |  Branch (4784:6): [True: 0, False: 0]
  ------------------
 4785|      0|					case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (4785:6): [True: 0, False: 0]
  ------------------
 4786|      0|						if (!(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  | 1209|      0|#define ZEND_ARRAY_ELEMENT_REF		(1<<0)
  ------------------
  |  Branch (4786:11): [True: 0, False: 0]
  ------------------
 4787|      0|							continue;
 4788|      0|						}
 4789|      0|						break;
 4790|      0|					case ZEND_BIND_STATIC:
  ------------------
  |  |  305|      0|#define ZEND_BIND_STATIC                    183
  ------------------
  |  Branch (4790:6): [True: 0, False: 0]
  ------------------
 4791|      0|						if (!(opline->extended_value & ZEND_BIND_REF)) {
  ------------------
  |  | 1202|      0|#define ZEND_BIND_REF      1
  ------------------
  |  Branch (4791:11): [True: 0, False: 0]
  ------------------
 4792|      0|							continue;
 4793|      0|						}
 4794|      0|						break;
 4795|      0|					case ZEND_YIELD:
  ------------------
  |  |  282|      0|#define ZEND_YIELD                          160
  ------------------
  |  Branch (4795:6): [True: 0, False: 0]
  ------------------
 4796|      0|						if (!(op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  352|      0|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (4796:11): [True: 0, False: 0]
  ------------------
 4797|      0|							continue;
 4798|      0|						}
 4799|      0|						break;
 4800|      0|					case ZEND_OP_DATA:
  ------------------
  |  |  259|      0|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (4800:6): [True: 0, False: 0]
  ------------------
 4801|      0|						switch ((opline-1)->opcode) {
 4802|      0|							case ZEND_ASSIGN_OBJ_REF:
  ------------------
  |  |  156|      0|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (4802:8): [True: 0, False: 0]
  ------------------
 4803|      0|							case ZEND_ASSIGN_STATIC_PROP_REF:
  ------------------
  |  |  157|      0|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
  |  Branch (4803:8): [True: 0, False: 0]
  ------------------
 4804|      0|								break;
 4805|      0|							default:
  ------------------
  |  Branch (4805:8): [True: 0, False: 0]
  ------------------
 4806|      0|								continue;
 4807|      0|						}
 4808|      0|						break;
 4809|      0|					default:
  ------------------
  |  Branch (4809:6): [True: 0, False: 0]
  ------------------
 4810|      0|						continue;
 4811|      0|				}
 4812|      0|			} else if (ssa->ops[def].op2_def == var) {
  ------------------
  |  Branch (4812:15): [True: 0, False: 0]
  ------------------
 4813|      0|				switch (opline->opcode) {
 4814|      0|					case ZEND_ASSIGN_REF:
  ------------------
  |  |  154|      0|#define ZEND_ASSIGN_REF                      30
  ------------------
  |  Branch (4814:6): [True: 0, False: 0]
  ------------------
 4815|      0|					case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (4815:6): [True: 0, False: 0]
  ------------------
 4816|      0|						break;
 4817|      0|					case ZEND_BIND_LEXICAL:
  ------------------
  |  |  304|      0|#define ZEND_BIND_LEXICAL                   182
  ------------------
  |  Branch (4817:6): [True: 0, False: 0]
  ------------------
 4818|      0|						if (!(opline->extended_value & ZEND_BIND_REF)) {
  ------------------
  |  | 1202|      0|#define ZEND_BIND_REF      1
  ------------------
  |  Branch (4818:11): [True: 0, False: 0]
  ------------------
 4819|      0|							continue;
 4820|      0|						}
 4821|      0|						break;
 4822|      0|					default:
  ------------------
  |  Branch (4822:6): [True: 0, False: 0]
  ------------------
 4823|      0|						continue;
 4824|      0|				}
 4825|      0|			} else {
 4826|      0|				ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4826:5): [Folded, False: 0]
  |  Branch (4826:5): [Folded, False: 0]
  ------------------
 4827|      0|			}
 4828|      0|			zend_bitset_incl(worklist, var);
 4829|      0|		} else if (ssa->var_info[var].type & MAY_BE_REF) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4829:14): [True: 0, False: 0]
  ------------------
 4830|      0|			zend_bitset_incl(worklist, var);
 4831|      0|		} else if (ssa->vars[var].alias == SYMTABLE_ALIAS) {
  ------------------
  |  Branch (4831:14): [True: 0, False: 0]
  ------------------
 4832|      0|			zend_bitset_incl(worklist, var);
 4833|      0|		}
 4834|      0|	}
 4835|       |
 4836|       |	/* Set and propagate MAY_BE_REF */
 4837|      3|	WHILE_WORKLIST(worklist, worklist_len, var) {
  ------------------
  |  |   62|      1|#define WHILE_WORKLIST(worklist, len, i) do { \
  |  |   63|      1|	bool _done = 0; \
  |  |   64|      2|	while (!_done) { \
  |  |  ------------------
  |  |  |  Branch (64:9): [True: 1, False: 1]
  |  |  ------------------
  |  |   65|      1|		_done = 1; \
  |  |   66|      1|		ZEND_BITSET_FOREACH(worklist, len, i) { \
  |  |  ------------------
  |  |  |  |  262|      1|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  |  |  263|      1|	zend_bitset _set = (set); \
  |  |  |  |  264|      1|	uint32_t _i, _len = (len); \
  |  |  |  |  265|      1|	for (_i = 0; _i < _len; _i++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (265:15): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  266|      0|		zend_ulong _x = _set[_i]; \
  |  |  |  |  267|      0|		if (_x) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (267:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  |  |  ------------------
  |  |  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|			zend_bitset_excl(worklist, i); \
  |  |   68|      0|			_done = 0;
  ------------------
 4838|       |
 4839|      3|		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
              		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		ssa->var_info[var].type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   56|      0|#define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4840|       |
 4841|      3|		if (ssa->vars[var].phi_use_chain) {
  ------------------
  |  Branch (4841:7): [True: 0, False: 0]
  ------------------
 4842|      0|			zend_ssa_phi *p = ssa->vars[var].phi_use_chain;
 4843|      0|			do {
 4844|      0|				if (!(ssa->var_info[p->ssa_var].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4844:9): [True: 0, False: 0]
  ------------------
 4845|      0|					zend_bitset_incl(worklist, p->ssa_var);
 4846|      0|				}
 4847|      0|				p = zend_ssa_next_use_phi(ssa, var, p);
 4848|      0|			} while (p);
  ------------------
  |  Branch (4848:13): [True: 0, False: 0]
  ------------------
 4849|      0|		}
 4850|       |
 4851|      3|		if (ssa->vars[var].use_chain >= 0) {
  ------------------
  |  Branch (4851:7): [True: 0, False: 0]
  ------------------
 4852|      0|			int use = ssa->vars[var].use_chain;
 4853|      0|			FOREACH_USE(&ssa->vars[var], use) {
  ------------------
  |  |  266|      0|#define FOREACH_USE(var, use) do { \
  |  |  267|      0|	int _var_num = (var) - ssa->vars, next; \
  |  |  268|      0|	for (use = (var)->use_chain; use >= 0; use = next) { \
  |  |  ------------------
  |  |  |  Branch (268:31): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|		next = zend_ssa_next_use(ssa->ops, _var_num, use);
  ------------------
 4854|      0|				zend_ssa_op *op = ssa->ops + use;
 4855|      0|				if (op->op1_use == var && op->op1_def >= 0) {
  ------------------
  |  Branch (4855:9): [True: 0, False: 0]
  |  Branch (4855:31): [True: 0, False: 0]
  ------------------
 4856|      0|					if (!(ssa->var_info[op->op1_def].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4856:10): [True: 0, False: 0]
  ------------------
 4857|       |						/* Unset breaks references (outside global scope). */
 4858|      0|						if (op_array->opcodes[use].opcode == ZEND_UNSET_CV
  ------------------
  |  |  275|      0|#define ZEND_UNSET_CV                       153
  ------------------
  |  Branch (4858:11): [True: 0, False: 0]
  ------------------
 4859|      0|								&& op_array->function_name) {
  ------------------
  |  Branch (4859:12): [True: 0, False: 0]
  ------------------
 4860|      0|							continue;
 4861|      0|						}
 4862|      0|						zend_bitset_incl(worklist, op->op1_def);
 4863|      0|					}
 4864|      0|				}
 4865|      0|				if (op->op2_use == var && op->op2_def >= 0) {
  ------------------
  |  Branch (4865:9): [True: 0, False: 0]
  |  Branch (4865:31): [True: 0, False: 0]
  ------------------
 4866|      0|					if (!(ssa->var_info[op->op2_def].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4866:10): [True: 0, False: 0]
  ------------------
 4867|      0|						zend_bitset_incl(worklist, op->op2_def);
 4868|      0|					}
 4869|      0|				}
 4870|      0|				if (op->result_use == var && op->result_def >= 0) {
  ------------------
  |  Branch (4870:9): [True: 0, False: 0]
  |  Branch (4870:34): [True: 0, False: 0]
  ------------------
 4871|      0|					if (!(ssa->var_info[op->result_def].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4871:10): [True: 0, False: 0]
  ------------------
 4872|      0|						zend_bitset_incl(worklist, op->result_def);
 4873|      0|					}
 4874|      0|				}
 4875|      0|			} FOREACH_USE_END();
  ------------------
  |  |  271|      0|	} \
  |  |  272|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (272:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4876|      0|		}
 4877|      3|	} WHILE_WORKLIST_END();
  ------------------
  |  |   71|      0|		} ZEND_BITSET_FOREACH_END(); \
  |  |  ------------------
  |  |  |  |  284|      0|			} \
  |  |  |  |  285|      0|		} \
  |  |  |  |  286|      0|	} \
  |  |  |  |  287|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      1|	} \
  |  |   73|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (73:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4878|       |
 4879|       |	free_alloca(worklist,  use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4880|      1|}
zend_inference.c:zend_infer_ranges:
 1825|      1|{
 1826|      1|	int worklist_len = zend_bitset_len(ssa->vars_count);
 1827|      1|	zend_bitset worklist;
 1828|      1|	int *next_scc_var;
 1829|      1|	int *scc_var;
 1830|      1|	zend_ssa_phi *p;
 1831|      1|	zend_ssa_range tmp;
 1832|      1|	int scc, j;
 1833|      1|	ALLOCA_FLAG(use_heap);
 1834|       |
 1835|      1|	worklist = do_alloca(
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1836|      1|		ZEND_MM_ALIGNED_SIZE(sizeof(zend_ulong) * worklist_len) +
 1837|      1|		ZEND_MM_ALIGNED_SIZE(sizeof(int) * ssa->vars_count) +
 1838|      1|		sizeof(int) * ssa->sccs, use_heap);
 1839|      1|	next_scc_var = (int*)((char*)worklist + ZEND_MM_ALIGNED_SIZE(sizeof(zend_ulong) * worklist_len));
  ------------------
  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1840|      1|	scc_var = (int*)((char*)next_scc_var + ZEND_MM_ALIGNED_SIZE(sizeof(int) * ssa->vars_count));
  ------------------
  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1841|       |
 1842|      1|	LOG_SSA_RANGE("Range Inference\n");
 1843|       |
 1844|       |	/* Create linked lists of SSA variables for each SCC */
 1845|      1|	memset(scc_var, -1, sizeof(int) * ssa->sccs);
 1846|      1|	for (j = 0; j < ssa->vars_count; j++) {
  ------------------
  |  Branch (1846:14): [True: 0, False: 1]
  ------------------
 1847|      0|		if (ssa->vars[j].scc >= 0) {
  ------------------
  |  Branch (1847:7): [True: 0, False: 0]
  ------------------
 1848|      0|			next_scc_var[j] = scc_var[ssa->vars[j].scc];
 1849|      0|			scc_var[ssa->vars[j].scc] = j;
 1850|      0|		}
 1851|      0|	}
 1852|       |
 1853|      1|	for (scc = 0; scc < ssa->sccs; scc++) {
  ------------------
  |  Branch (1853:16): [True: 0, False: 1]
  ------------------
 1854|      0|		j = scc_var[scc];
 1855|      0|		if (next_scc_var[j] < 0) {
  ------------------
  |  Branch (1855:7): [True: 0, False: 0]
  ------------------
 1856|       |			/* SCC with a single element */
 1857|      0|			if (ssa->var_info[j].type & MAY_BE_REF) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1857:8): [True: 0, False: 0]
  ------------------
 1858|       |				/* pass */
 1859|      0|			} else if (zend_inference_calc_range(op_array, ssa, j, 0, 1, &tmp)) {
  ------------------
  |  Branch (1859:15): [True: 0, False: 0]
  ------------------
 1860|      0|				zend_inference_init_range(op_array, ssa, j, tmp.underflow, tmp.min, tmp.max, tmp.overflow);
 1861|      0|			} else {
 1862|      0|				zend_inference_init_range(op_array, ssa, j, true, ZEND_LONG_MIN, ZEND_LONG_MAX, true);
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
              				zend_inference_init_range(op_array, ssa, j, true, ZEND_LONG_MIN, ZEND_LONG_MAX, true);
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
 1863|      0|			}
 1864|      0|		} else {
 1865|       |			/* Find SCC entry points */
 1866|      0|			memset(worklist, 0, sizeof(zend_ulong) * worklist_len);
 1867|      0|			do {
 1868|      0|				if (ssa->vars[j].scc_entry
  ------------------
  |  Branch (1868:9): [True: 0, False: 0]
  ------------------
 1869|      0|				 && !(ssa->var_info[j].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1869:9): [True: 0, False: 0]
  ------------------
 1870|      0|					zend_bitset_incl(worklist, j);
 1871|      0|				}
 1872|      0|				j = next_scc_var[j];
 1873|      0|			} while (j >= 0);
  ------------------
  |  Branch (1873:13): [True: 0, False: 0]
  ------------------
 1874|       |
 1875|      0|#if RANGE_WARMUP_PASSES > 0
 1876|      0|			zend_infer_ranges_warmup(op_array, ssa, scc_var, next_scc_var, scc);
 1877|      0|			j = scc_var[scc];
 1878|      0|			do {
 1879|      0|				if (!(ssa->var_info[j].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1879:9): [True: 0, False: 0]
  ------------------
 1880|      0|					zend_bitset_incl(worklist, j);
 1881|      0|				}
 1882|      0|				j = next_scc_var[j];
 1883|      0|			} while (j >= 0);
  ------------------
  |  Branch (1883:13): [True: 0, False: 0]
  ------------------
 1884|      0|#endif
 1885|       |
 1886|       |			/* widening */
 1887|      0|			WHILE_WORKLIST(worklist, worklist_len, j) {
  ------------------
  |  |   62|      0|#define WHILE_WORKLIST(worklist, len, i) do { \
  |  |   63|      0|	bool _done = 0; \
  |  |   64|      0|	while (!_done) { \
  |  |  ------------------
  |  |  |  Branch (64:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   65|      0|		_done = 1; \
  |  |   66|      0|		ZEND_BITSET_FOREACH(worklist, len, i) { \
  |  |  ------------------
  |  |  |  |  262|      0|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  |  |  263|      0|	zend_bitset _set = (set); \
  |  |  |  |  264|      0|	uint32_t _i, _len = (len); \
  |  |  |  |  265|      0|	for (_i = 0; _i < _len; _i++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (265:15): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  266|      0|		zend_ulong _x = _set[_i]; \
  |  |  |  |  267|      0|		if (_x) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (267:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  |  |  ------------------
  |  |  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|			zend_bitset_excl(worklist, i); \
  |  |   68|      0|			_done = 0;
  ------------------
 1888|      0|				if (zend_ssa_range_widening(op_array, ssa, j, scc)) {
  ------------------
  |  Branch (1888:9): [True: 0, False: 0]
  ------------------
 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  ------------------
  |  |  149|      0|	do { \
  |  |  150|      0|		zend_ssa_phi *p = ssa->vars[_var].phi_use_chain; \
  |  |  151|      0|		int use = ssa->vars[_var].use_chain; \
  |  |  152|      0|		while (use >= 0) { \
  |  |  ------------------
  |  |  |  Branch (152:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  153|      0|			FOR_EACH_DEFINED_VAR(use, MACRO); \
  |  |  ------------------
  |  |  |  |  113|      0|	do { \
  |  |  |  |  114|      0|		if (ssa->ops[line].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|			MACRO(ssa->ops[line].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|      0|		} \
  |  |  |  |  117|      0|		if (ssa->ops[line].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|			MACRO(ssa->ops[line].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  119|      0|		} \
  |  |  |  |  120|      0|		if (ssa->ops[line].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (120:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  121|      0|			MACRO(ssa->ops[line].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  122|      0|		} \
  |  |  |  |  123|      0|		if (op_array->opcodes[line].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (123:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  124|      0|			if (ssa->ops[line-1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (124:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  125|      0|				MACRO(ssa->ops[line-1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  126|      0|			} \
  |  |  |  |  127|      0|			if (ssa->ops[line-1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|				MACRO(ssa->ops[line-1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  129|      0|			} \
  |  |  |  |  130|      0|			if (ssa->ops[line-1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|      0|				MACRO(ssa->ops[line-1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  132|      0|			} \
  |  |  |  |  133|      0|		} else if ((uint32_t)line+1 < op_array->last && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  134|      0|		           op_array->opcodes[line+1].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  135|      0|			if (ssa->ops[line+1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (135:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  136|      0|				MACRO(ssa->ops[line+1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|			} \
  |  |  |  |  138|      0|			if (ssa->ops[line+1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (138:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  139|      0|				MACRO(ssa->ops[line+1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|      0|			} \
  |  |  |  |  141|      0|			if (ssa->ops[line+1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (141:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  142|      0|				MACRO(ssa->ops[line+1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  143|      0|			} \
  |  |  |  |  144|      0|		} \
  |  |  |  |  145|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|			use = zend_ssa_next_use(ssa->ops, _var, use); \
  |  |  155|      0|		} \
  |  |  156|      0|		p = ssa->vars[_var].phi_use_chain; \
  |  |  157|      0|		while (p) { \
  |  |  ------------------
  |  |  |  Branch (157:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  158|      0|			MACRO(p->ssa_var); \
  |  |  ------------------
  |  |  |  | 1889|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  159|      0|			p = zend_ssa_next_use_phi(ssa, _var, p); \
  |  |  160|      0|		} \
  |  |  161|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (161:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1890|      0|				}
 1891|      0|			} WHILE_WORKLIST_END();
  ------------------
  |  |   71|      0|		} ZEND_BITSET_FOREACH_END(); \
  |  |  ------------------
  |  |  |  |  284|      0|			} \
  |  |  |  |  285|      0|		} \
  |  |  |  |  286|      0|	} \
  |  |  |  |  287|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|	} \
  |  |   73|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (73:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1892|       |
 1893|       |			/* initialize missing ranges */
 1894|      0|			for (j = scc_var[scc]; j >= 0; j = next_scc_var[j]) {
  ------------------
  |  Branch (1894:27): [True: 0, False: 0]
  ------------------
 1895|      0|				if (!ssa->var_info[j].has_range
  ------------------
  |  Branch (1895:9): [True: 0, False: 0]
  ------------------
 1896|      0|				 && !(ssa->var_info[j].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1896:9): [True: 0, False: 0]
  ------------------
 1897|      0|					zend_inference_init_range(op_array, ssa, j, true, ZEND_LONG_MIN, ZEND_LONG_MAX,
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
              					zend_inference_init_range(op_array, ssa, j, true, ZEND_LONG_MIN, ZEND_LONG_MAX,
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
 1898|      0|								  true);
 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  ------------------
  |  |  149|      0|	do { \
  |  |  150|      0|		zend_ssa_phi *p = ssa->vars[_var].phi_use_chain; \
  |  |  151|      0|		int use = ssa->vars[_var].use_chain; \
  |  |  152|      0|		while (use >= 0) { \
  |  |  ------------------
  |  |  |  Branch (152:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  153|      0|			FOR_EACH_DEFINED_VAR(use, MACRO); \
  |  |  ------------------
  |  |  |  |  113|      0|	do { \
  |  |  |  |  114|      0|		if (ssa->ops[line].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|			MACRO(ssa->ops[line].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|      0|		} \
  |  |  |  |  117|      0|		if (ssa->ops[line].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|			MACRO(ssa->ops[line].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  119|      0|		} \
  |  |  |  |  120|      0|		if (ssa->ops[line].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (120:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  121|      0|			MACRO(ssa->ops[line].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  122|      0|		} \
  |  |  |  |  123|      0|		if (op_array->opcodes[line].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (123:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  124|      0|			if (ssa->ops[line-1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (124:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  125|      0|				MACRO(ssa->ops[line-1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  126|      0|			} \
  |  |  |  |  127|      0|			if (ssa->ops[line-1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|				MACRO(ssa->ops[line-1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  129|      0|			} \
  |  |  |  |  130|      0|			if (ssa->ops[line-1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|      0|				MACRO(ssa->ops[line-1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  132|      0|			} \
  |  |  |  |  133|      0|		} else if ((uint32_t)line+1 < op_array->last && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  134|      0|		           op_array->opcodes[line+1].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  135|      0|			if (ssa->ops[line+1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (135:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  136|      0|				MACRO(ssa->ops[line+1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|			} \
  |  |  |  |  138|      0|			if (ssa->ops[line+1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (138:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  139|      0|				MACRO(ssa->ops[line+1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|      0|			} \
  |  |  |  |  141|      0|			if (ssa->ops[line+1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (141:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  142|      0|				MACRO(ssa->ops[line+1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  143|      0|			} \
  |  |  |  |  144|      0|		} \
  |  |  |  |  145|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|			use = zend_ssa_next_use(ssa->ops, _var, use); \
  |  |  155|      0|		} \
  |  |  156|      0|		p = ssa->vars[_var].phi_use_chain; \
  |  |  157|      0|		while (p) { \
  |  |  ------------------
  |  |  |  Branch (157:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  158|      0|			MACRO(p->ssa_var); \
  |  |  ------------------
  |  |  |  | 1899|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  159|      0|			p = zend_ssa_next_use_phi(ssa, _var, p); \
  |  |  160|      0|		} \
  |  |  161|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (161:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1900|      0|				}
 1901|      0|			}
 1902|       |
 1903|       |			/* widening (second round) */
 1904|      0|			WHILE_WORKLIST(worklist, worklist_len, j) {
  ------------------
  |  |   62|      0|#define WHILE_WORKLIST(worklist, len, i) do { \
  |  |   63|      0|	bool _done = 0; \
  |  |   64|      0|	while (!_done) { \
  |  |  ------------------
  |  |  |  Branch (64:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   65|      0|		_done = 1; \
  |  |   66|      0|		ZEND_BITSET_FOREACH(worklist, len, i) { \
  |  |  ------------------
  |  |  |  |  262|      0|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  |  |  263|      0|	zend_bitset _set = (set); \
  |  |  |  |  264|      0|	uint32_t _i, _len = (len); \
  |  |  |  |  265|      0|	for (_i = 0; _i < _len; _i++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (265:15): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  266|      0|		zend_ulong _x = _set[_i]; \
  |  |  |  |  267|      0|		if (_x) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (267:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  |  |  ------------------
  |  |  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|			zend_bitset_excl(worklist, i); \
  |  |   68|      0|			_done = 0;
  ------------------
 1905|      0|				if (zend_ssa_range_widening(op_array, ssa, j, scc)) {
  ------------------
  |  Branch (1905:9): [True: 0, False: 0]
  ------------------
 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  ------------------
  |  |  149|      0|	do { \
  |  |  150|      0|		zend_ssa_phi *p = ssa->vars[_var].phi_use_chain; \
  |  |  151|      0|		int use = ssa->vars[_var].use_chain; \
  |  |  152|      0|		while (use >= 0) { \
  |  |  ------------------
  |  |  |  Branch (152:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  153|      0|			FOR_EACH_DEFINED_VAR(use, MACRO); \
  |  |  ------------------
  |  |  |  |  113|      0|	do { \
  |  |  |  |  114|      0|		if (ssa->ops[line].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|			MACRO(ssa->ops[line].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|      0|		} \
  |  |  |  |  117|      0|		if (ssa->ops[line].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|			MACRO(ssa->ops[line].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  119|      0|		} \
  |  |  |  |  120|      0|		if (ssa->ops[line].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (120:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  121|      0|			MACRO(ssa->ops[line].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  122|      0|		} \
  |  |  |  |  123|      0|		if (op_array->opcodes[line].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (123:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  124|      0|			if (ssa->ops[line-1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (124:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  125|      0|				MACRO(ssa->ops[line-1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  126|      0|			} \
  |  |  |  |  127|      0|			if (ssa->ops[line-1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|				MACRO(ssa->ops[line-1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  129|      0|			} \
  |  |  |  |  130|      0|			if (ssa->ops[line-1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|      0|				MACRO(ssa->ops[line-1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  132|      0|			} \
  |  |  |  |  133|      0|		} else if ((uint32_t)line+1 < op_array->last && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  134|      0|		           op_array->opcodes[line+1].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  135|      0|			if (ssa->ops[line+1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (135:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  136|      0|				MACRO(ssa->ops[line+1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|			} \
  |  |  |  |  138|      0|			if (ssa->ops[line+1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (138:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  139|      0|				MACRO(ssa->ops[line+1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|      0|			} \
  |  |  |  |  141|      0|			if (ssa->ops[line+1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (141:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  142|      0|				MACRO(ssa->ops[line+1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  143|      0|			} \
  |  |  |  |  144|      0|		} \
  |  |  |  |  145|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|			use = zend_ssa_next_use(ssa->ops, _var, use); \
  |  |  155|      0|		} \
  |  |  156|      0|		p = ssa->vars[_var].phi_use_chain; \
  |  |  157|      0|		while (p) { \
  |  |  ------------------
  |  |  |  Branch (157:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  158|      0|			MACRO(p->ssa_var); \
  |  |  ------------------
  |  |  |  | 1906|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  159|      0|			p = zend_ssa_next_use_phi(ssa, _var, p); \
  |  |  160|      0|		} \
  |  |  161|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (161:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1907|      0|				}
 1908|      0|			} WHILE_WORKLIST_END();
  ------------------
  |  |   71|      0|		} ZEND_BITSET_FOREACH_END(); \
  |  |  ------------------
  |  |  |  |  284|      0|			} \
  |  |  |  |  285|      0|		} \
  |  |  |  |  286|      0|	} \
  |  |  |  |  287|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|	} \
  |  |   73|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (73:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1909|       |
 1910|       |			/* Add all SCC entry variables into worklist for narrowing */
 1911|      0|			for (j = scc_var[scc]; j >= 0; j = next_scc_var[j]) {
  ------------------
  |  Branch (1911:27): [True: 0, False: 0]
  ------------------
 1912|      0|				if (ssa->vars[j].definition_phi
  ------------------
  |  Branch (1912:9): [True: 0, False: 0]
  ------------------
 1913|      0|				 && ssa->vars[j].definition_phi->pi < 0
  ------------------
  |  Branch (1913:9): [True: 0, False: 0]
  ------------------
 1914|      0|				 && !(ssa->var_info[j].type & MAY_BE_REF)) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (1914:9): [True: 0, False: 0]
  ------------------
 1915|       |					/* narrowing Phi functions first */
 1916|      0|					zend_ssa_range_narrowing(op_array, ssa, j, scc);
 1917|      0|				}
 1918|      0|				zend_bitset_incl(worklist, j);
 1919|      0|			}
 1920|       |
 1921|       |			/* narrowing */
 1922|      0|			WHILE_WORKLIST(worklist, worklist_len, j) {
  ------------------
  |  |   62|      0|#define WHILE_WORKLIST(worklist, len, i) do { \
  |  |   63|      0|	bool _done = 0; \
  |  |   64|      0|	while (!_done) { \
  |  |  ------------------
  |  |  |  Branch (64:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   65|      0|		_done = 1; \
  |  |   66|      0|		ZEND_BITSET_FOREACH(worklist, len, i) { \
  |  |  ------------------
  |  |  |  |  262|      0|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  |  |  263|      0|	zend_bitset _set = (set); \
  |  |  |  |  264|      0|	uint32_t _i, _len = (len); \
  |  |  |  |  265|      0|	for (_i = 0; _i < _len; _i++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (265:15): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  266|      0|		zend_ulong _x = _set[_i]; \
  |  |  |  |  267|      0|		if (_x) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (267:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  |  |  ------------------
  |  |  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|			zend_bitset_excl(worklist, i); \
  |  |   68|      0|			_done = 0;
  ------------------
 1923|      0|				if (zend_ssa_range_narrowing(op_array, ssa, j, scc)) {
  ------------------
  |  Branch (1923:9): [True: 0, False: 0]
  ------------------
 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  ------------------
  |  |  149|      0|	do { \
  |  |  150|      0|		zend_ssa_phi *p = ssa->vars[_var].phi_use_chain; \
  |  |  151|      0|		int use = ssa->vars[_var].use_chain; \
  |  |  152|      0|		while (use >= 0) { \
  |  |  ------------------
  |  |  |  Branch (152:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  153|      0|			FOR_EACH_DEFINED_VAR(use, MACRO); \
  |  |  ------------------
  |  |  |  |  113|      0|	do { \
  |  |  |  |  114|      0|		if (ssa->ops[line].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|			MACRO(ssa->ops[line].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|      0|		} \
  |  |  |  |  117|      0|		if (ssa->ops[line].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|			MACRO(ssa->ops[line].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  119|      0|		} \
  |  |  |  |  120|      0|		if (ssa->ops[line].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (120:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  121|      0|			MACRO(ssa->ops[line].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  122|      0|		} \
  |  |  |  |  123|      0|		if (op_array->opcodes[line].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (123:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  124|      0|			if (ssa->ops[line-1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (124:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  125|      0|				MACRO(ssa->ops[line-1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  126|      0|			} \
  |  |  |  |  127|      0|			if (ssa->ops[line-1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (127:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  128|      0|				MACRO(ssa->ops[line-1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  129|      0|			} \
  |  |  |  |  130|      0|			if (ssa->ops[line-1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|      0|				MACRO(ssa->ops[line-1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  132|      0|			} \
  |  |  |  |  133|      0|		} else if ((uint32_t)line+1 < op_array->last && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  134|      0|		           op_array->opcodes[line+1].opcode == ZEND_OP_DATA) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  259|      0|#define ZEND_OP_DATA                        137
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  135|      0|			if (ssa->ops[line+1].op1_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (135:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  136|      0|				MACRO(ssa->ops[line+1].op1_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|			} \
  |  |  |  |  138|      0|			if (ssa->ops[line+1].op2_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (138:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  139|      0|				MACRO(ssa->ops[line+1].op2_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  140|      0|			} \
  |  |  |  |  141|      0|			if (ssa->ops[line+1].result_def >= 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (141:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  142|      0|				MACRO(ssa->ops[line+1].result_def); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  143|      0|			} \
  |  |  |  |  144|      0|		} \
  |  |  |  |  145|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (145:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|			use = zend_ssa_next_use(ssa->ops, _var, use); \
  |  |  155|      0|		} \
  |  |  156|      0|		p = ssa->vars[_var].phi_use_chain; \
  |  |  157|      0|		while (p) { \
  |  |  ------------------
  |  |  |  Branch (157:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  158|      0|			MACRO(p->ssa_var); \
  |  |  ------------------
  |  |  |  | 1924|      0|					FOR_EACH_VAR_USAGE(j, ADD_SCC_VAR);
  |  |  |  |  ------------------
  |  |  |  |  |  |   96|      0|	do { \
  |  |  |  |  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  |  |  |  |  100|      0|		} \
  |  |  |  |  |  |  101|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  159|      0|			p = zend_ssa_next_use_phi(ssa, _var, p); \
  |  |  160|      0|		} \
  |  |  161|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (161:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1925|      0|#ifdef SYM_RANGE
 1926|       |					/* Process symbolic control-flow constraints */
 1927|      0|					p = ssa->vars[j].sym_use_chain;
 1928|      0|					while (p) {
  ------------------
  |  Branch (1928:13): [True: 0, False: 0]
  ------------------
 1929|      0|						ADD_SCC_VAR(p->ssa_var);
  ------------------
  |  |   96|      0|	do { \
  |  |   97|      0|		if (ssa->vars[_var].scc == scc && \
  |  |  ------------------
  |  |  |  Branch (97:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   98|      0|		    !(ssa->var_info[_var].type & MAY_BE_REF)) { \
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (98:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|			zend_bitset_incl(worklist, _var); \
  |  |  100|      0|		} \
  |  |  101|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (101:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1930|      0|						p = p->sym_use_chain;
 1931|      0|					}
 1932|      0|#endif
 1933|      0|				}
 1934|      0|			} WHILE_WORKLIST_END();
  ------------------
  |  |   71|      0|		} ZEND_BITSET_FOREACH_END(); \
  |  |  ------------------
  |  |  |  |  284|      0|			} \
  |  |  |  |  285|      0|		} \
  |  |  |  |  286|      0|	} \
  |  |  |  |  287|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|	} \
  |  |   73|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (73:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1935|      0|		}
 1936|      0|	}
 1937|       |
 1938|       |	free_alloca(worklist, use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1939|      1|}
zend_inference.c:zend_infer_types:
 4712|      1|{
 4713|      1|	int ssa_vars_count = ssa->vars_count;
 4714|      1|	int j;
 4715|      1|	zend_bitset worklist;
 4716|      1|	ALLOCA_FLAG(use_heap);
 4717|       |
 4718|      1|	worklist = do_alloca(sizeof(zend_ulong) * zend_bitset_len(ssa_vars_count), use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4719|      1|	memset(worklist, 0, sizeof(zend_ulong) * zend_bitset_len(ssa_vars_count));
 4720|       |
 4721|       |	/* Type Inference */
 4722|      1|	for (j = op_array->last_var; j < ssa_vars_count; j++) {
  ------------------
  |  Branch (4722:31): [True: 0, False: 1]
  ------------------
 4723|      0|		zend_bitset_incl(worklist, j);
 4724|      0|	}
 4725|       |
 4726|      1|	if (zend_infer_types_ex(op_array, script, ssa, worklist, optimization_level) == FAILURE) {
  ------------------
  |  Branch (4726:6): [True: 0, False: 1]
  ------------------
 4727|      0|		free_alloca(worklist,  use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4728|      0|		return FAILURE;
 4729|      0|	}
 4730|       |
 4731|      1|	if (optimization_level & ZEND_OPTIMIZER_NARROW_TO_DOUBLE) {
  ------------------
  |  |   45|      1|#define ZEND_OPTIMIZER_NARROW_TO_DOUBLE		(1<<17)  /* try to narrow long constant assignments to double */
  ------------------
  |  Branch (4731:6): [True: 1, False: 0]
  ------------------
 4732|       |		/* Narrowing integer initialization to doubles */
 4733|      1|		zend_type_narrowing(op_array, script, ssa, optimization_level);
 4734|      1|	}
 4735|       |
 4736|      1|	if (ZEND_FUNC_INFO(op_array)) {
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  |  |  ------------------
  |  |  |  Branch (46:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 4737|      1|		zend_func_return_info(op_array, script, 1, 0, &ZEND_FUNC_INFO(op_array)->return_info);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 4738|      1|	}
 4739|       |
 4740|       |	free_alloca(worklist,  use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4741|      1|	return SUCCESS;
 4742|      1|}
zend_inference.c:zend_infer_types_ex:
 4187|      1|{
 4188|      1|	const zend_basic_block *blocks = ssa->cfg.blocks;
 4189|      1|	zend_ssa_var *ssa_vars = ssa->vars;
 4190|      1|	zend_ssa_var_info *ssa_var_info = ssa->var_info;
 4191|      1|	int ssa_vars_count = ssa->vars_count;
 4192|      1|	int j;
 4193|      1|	uint32_t tmp, worklist_len = zend_bitset_len(ssa_vars_count);
 4194|      1|	bool update_worklist = 1;
 4195|      1|	const zend_op **ssa_opcodes = NULL;
 4196|       |
 4197|      1|	while (!zend_bitset_empty(worklist, worklist_len)) {
  ------------------
  |  Branch (4197:9): [True: 0, False: 1]
  ------------------
 4198|      0|		j = zend_bitset_first(worklist, worklist_len);
 4199|      0|		zend_bitset_excl(worklist, j);
 4200|      0|		if (ssa_vars[j].definition_phi) {
  ------------------
  |  Branch (4200:7): [True: 0, False: 0]
  ------------------
 4201|      0|			zend_ssa_phi *p = ssa_vars[j].definition_phi;
 4202|      0|			if (p->pi >= 0) {
  ------------------
  |  Branch (4202:8): [True: 0, False: 0]
  ------------------
 4203|      0|				zend_class_entry *ce = ssa_var_info[p->sources[0]].ce;
 4204|      0|				bool is_instanceof = ssa_var_info[p->sources[0]].is_instanceof;
 4205|      0|				tmp = get_ssa_var_info(ssa, p->sources[0]);
 4206|       |
 4207|      0|				if (!p->has_range_constraint) {
  ------------------
  |  Branch (4207:9): [True: 0, False: 0]
  ------------------
 4208|      0|					const zend_ssa_type_constraint *constraint = &p->constraint.type;
 4209|      0|					tmp &= constraint->type_mask;
 4210|      0|					if (!(tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              					if (!(tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              					if (!(tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              					if (!(tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
  |  Branch (4210:10): [True: 0, False: 0]
  ------------------
 4211|      0|						tmp &= ~(MAY_BE_RC1|MAY_BE_RCN);
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              						tmp &= ~(MAY_BE_RC1|MAY_BE_RCN);
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
 4212|      0|					}
 4213|      0|					if ((tmp & MAY_BE_OBJECT) && constraint->ce && ce != constraint->ce) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (4213:10): [True: 0, False: 0]
  |  Branch (4213:35): [True: 0, False: 0]
  |  Branch (4213:53): [True: 0, False: 0]
  ------------------
 4214|      0|						if (!ce) {
  ------------------
  |  Branch (4214:11): [True: 0, False: 0]
  ------------------
 4215|      0|							ce = constraint->ce;
 4216|      0|							is_instanceof = true;
 4217|      0|						} else if (is_instanceof && safe_instanceof(constraint->ce, ce)) {
  ------------------
  |  Branch (4217:18): [True: 0, False: 0]
  |  Branch (4217:35): [True: 0, False: 0]
  ------------------
 4218|      0|							ce = constraint->ce;
 4219|      0|						} else {
 4220|       |							/* Ignore the constraint (either ce instanceof constraint->ce or
 4221|       |							 * they are unrelated, as far as we can statically determine) */
 4222|      0|						}
 4223|      0|					}
 4224|      0|				}
 4225|       |
 4226|      0|				UPDATE_SSA_TYPE(tmp, j);
  ------------------
  |  | 1951|      0|	do {																\
  |  | 1952|      0|		uint32_t __type = (_type) & ~MAY_BE_GUARD;						\
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_GUARD                (1<<28) /* needs type guard */
  |  |  ------------------
  |  | 1953|      0|		int __var = (_var);												\
  |  | 1954|      0|		if (__type & MAY_BE_REF) {										\
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1954:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1955|      0|			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   56|      0|#define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1956|      0|		}																\
  |  | 1957|      0|		if (__var >= 0) {												\
  |  |  ------------------
  |  |  |  Branch (1957:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1958|      0|			zend_ssa_var *__ssa_var = &ssa_vars[__var];					\
  |  | 1959|      0|			if (__ssa_var->var < op_array->num_args) {					\
  |  |  ------------------
  |  |  |  Branch (1959:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1960|      0|				if (__type & MAY_BE_RC1) {                              \
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |  |  Branch (1960:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1961|      0|					/* TODO: may be captured by exception backtreace */ \
  |  | 1962|      0|					__type |= MAY_BE_RCN;                               \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1963|      0|				}                                                       \
  |  | 1964|      0|			}                                                           \
  |  | 1965|      0|			if (__ssa_var->var < op_array->last_var) {					\
  |  |  ------------------
  |  |  |  Branch (1965:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1966|      0|				if (__type & (MAY_BE_REF|MAY_BE_RCN)) {					\
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (__type & (MAY_BE_REF|MAY_BE_RCN)) {					\
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  |  |  Branch (1966:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1967|      0|					__type |= MAY_BE_RC1 | MAY_BE_RCN;					\
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               					__type |= MAY_BE_RC1 | MAY_BE_RCN;					\
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1968|      0|				}														\
  |  | 1969|      0|				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_STRING)) {\
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_STRING)) {\
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1969:9): [True: 0, False: 0]
  |  |  |  Branch (1969:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 1970|      0|					/* TODO: support for array keys and ($str . "")*/   \
  |  | 1971|      0|					__type |= MAY_BE_RCN;                               \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1972|      0|				}                                                       \
  |  | 1973|      0|				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_OBJECT)) {\
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_OBJECT)) {\
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1973:9): [True: 0, False: 0]
  |  |  |  Branch (1973:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 1974|      0|					/* TODO: object may be captured by magic handlers */\
  |  | 1975|      0|					__type |= MAY_BE_RCN;                               \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1976|      0|				}                                                       \
  |  | 1977|      0|				if (__ssa_var->alias) {									\
  |  |  ------------------
  |  |  |  Branch (1977:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1978|      0|					__type |= get_ssa_alias_types(__ssa_var->alias);	\
  |  | 1979|      0|				}														\
  |  | 1980|      0|			}															\
  |  | 1981|      0|			if (ssa_var_info[__var].type != __type) { 					\
  |  |  ------------------
  |  |  |  Branch (1981:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1982|      0|				ZEND_ASSERT(ssa_opcodes != NULL ||						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1983|      0|					__ssa_var->var >= op_array->last_var ||				\
  |  | 1984|      0|					(ssa_var_info[__var].type & MAY_BE_REF)				\
  |  | 1985|      0|						== (__type & MAY_BE_REF));						\
  |  | 1986|      0|				if (ssa_var_info[__var].type & ~__type) {				\
  |  |  ------------------
  |  |  |  Branch (1986:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1987|      0|					emit_type_narrowing_warning(op_array, ssa, __var);	\
  |  | 1988|      0|					return FAILURE;										\
  |  | 1989|      0|				}														\
  |  | 1990|      0|				ssa_var_info[__var].type = __type;						\
  |  | 1991|      0|				if (update_worklist) { 									\
  |  |  ------------------
  |  |  |  Branch (1991:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1992|      0|					add_usages(op_array, ssa, worklist, __var);			\
  |  | 1993|      0|				}														\
  |  | 1994|      0|			}															\
  |  | 1995|      0|			/*zend_bitset_excl(worklist, var);*/						\
  |  | 1996|      0|		}																\
  |  | 1997|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1997:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4226:5): [True: 0, False: 0]
  |  Branch (4226:5): [True: 0, False: 0]
  |  Branch (4226:5): [True: 0, False: 0]
  |  Branch (4226:5): [True: 0, False: 0]
  |  Branch (4226:5): [True: 0, False: 0]
  |  Branch (4226:5): [True: 0, False: 0]
  ------------------
 4227|      0|				if (tmp & MAY_BE_REF) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4227:9): [True: 0, False: 0]
  ------------------
 4228|      0|					UPDATE_SSA_OBJ_TYPE(NULL, 0, j);
  ------------------
  |  | 2000|      0|	do {                                                                \
  |  | 2001|      0|		if (var >= 0) {													\
  |  |  ------------------
  |  |  |  Branch (2001:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 2002|      0|			zend_class_entry *__ce = (_ce);								\
  |  | 2003|      0|			bool __is_instanceof = (_is_instanceof);					\
  |  | 2004|      0|			if (__ce && (__ce->ce_flags & ZEND_ACC_FINAL)) {			\
  |  |  ------------------
  |  |  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  |  |  ------------------
  |  |  |  Branch (2004:8): [True: 0, False: 0]
  |  |  |  Branch (2004:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 2005|      0|				__is_instanceof = false;								\
  |  | 2006|      0|			}															\
  |  | 2007|      0|			if (ssa_var_info[var].ce != __ce ||							\
  |  |  ------------------
  |  |  |  Branch (2007:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 2008|      0|			    ssa_var_info[var].is_instanceof != __is_instanceof) {	\
  |  |  ------------------
  |  |  |  Branch (2008:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 2009|      0|				ssa_var_info[var].ce = __ce;							\
  |  | 2010|      0|				ssa_var_info[var].is_instanceof = __is_instanceof;		\
  |  | 2011|      0|				if (update_worklist) { 									\
  |  |  ------------------
  |  |  |  Branch (2011:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 2012|      0|					add_usages(op_array, ssa, worklist, var);			\
  |  | 2013|      0|				}														\
  |  | 2014|      0|			}															\
  |  | 2015|      0|			/*zend_bitset_excl(worklist, var);*/						\
  |  | 2016|      0|		}																\
  |  | 2017|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2017:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4229|      0|				} else {
 4230|      0|					UPDATE_SSA_OBJ_TYPE(ce, is_instanceof, j);
  ------------------
  |  | 2000|      0|	do {                                                                \
  |  | 2001|      0|		if (var >= 0) {													\
  |  |  ------------------
  |  |  |  Branch (2001:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 2002|      0|			zend_class_entry *__ce = (_ce);								\
  |  | 2003|      0|			bool __is_instanceof = (_is_instanceof);					\
  |  | 2004|      0|			if (__ce && (__ce->ce_flags & ZEND_ACC_FINAL)) {			\
  |  |  ------------------
  |  |  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  |  |  ------------------
  |  |  |  Branch (2004:8): [True: 0, False: 0]
  |  |  |  Branch (2004:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 2005|      0|				__is_instanceof = false;								\
  |  | 2006|      0|			}															\
  |  | 2007|      0|			if (ssa_var_info[var].ce != __ce ||							\
  |  |  ------------------
  |  |  |  Branch (2007:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 2008|      0|			    ssa_var_info[var].is_instanceof != __is_instanceof) {	\
  |  |  ------------------
  |  |  |  Branch (2008:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 2009|      0|				ssa_var_info[var].ce = __ce;							\
  |  | 2010|      0|				ssa_var_info[var].is_instanceof = __is_instanceof;		\
  |  | 2011|      0|				if (update_worklist) { 									\
  |  |  ------------------
  |  |  |  Branch (2011:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 2012|      0|					add_usages(op_array, ssa, worklist, var);			\
  |  | 2013|      0|				}														\
  |  | 2014|      0|			}															\
  |  | 2015|      0|			/*zend_bitset_excl(worklist, var);*/						\
  |  | 2016|      0|		}																\
  |  | 2017|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2017:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4231|      0|				}
 4232|      0|			} else {
 4233|      0|				bool first = true;
 4234|      0|				bool is_instanceof = false;
 4235|      0|				zend_class_entry *ce = NULL;
 4236|      0|				uint32_t i;
 4237|       |
 4238|      0|				tmp = 0;
 4239|      0|				for (i = 0; i < blocks[p->block].predecessors_count; i++) {
  ------------------
  |  Branch (4239:17): [True: 0, False: 0]
  ------------------
 4240|      0|					tmp |= get_ssa_var_info(ssa, p->sources[i]);
 4241|      0|				}
 4242|      0|				UPDATE_SSA_TYPE(tmp, j);
  ------------------
  |  | 1951|      0|	do {																\
  |  | 1952|      0|		uint32_t __type = (_type) & ~MAY_BE_GUARD;						\
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_GUARD                (1<<28) /* needs type guard */
  |  |  ------------------
  |  | 1953|      0|		int __var = (_var);												\
  |  | 1954|      0|		if (__type & MAY_BE_REF) {										\
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1954:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1955|      0|			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			__type |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; \
  |  |  ------------------
  |  |  |  |   56|      0|#define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1956|      0|		}																\
  |  | 1957|      0|		if (__var >= 0) {												\
  |  |  ------------------
  |  |  |  Branch (1957:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1958|      0|			zend_ssa_var *__ssa_var = &ssa_vars[__var];					\
  |  | 1959|      0|			if (__ssa_var->var < op_array->num_args) {					\
  |  |  ------------------
  |  |  |  Branch (1959:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1960|      0|				if (__type & MAY_BE_RC1) {                              \
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |  |  Branch (1960:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1961|      0|					/* TODO: may be captured by exception backtreace */ \
  |  | 1962|      0|					__type |= MAY_BE_RCN;                               \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1963|      0|				}                                                       \
  |  | 1964|      0|			}                                                           \
  |  | 1965|      0|			if (__ssa_var->var < op_array->last_var) {					\
  |  |  ------------------
  |  |  |  Branch (1965:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1966|      0|				if (__type & (MAY_BE_REF|MAY_BE_RCN)) {					\
  |  |  ------------------
  |  |  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (__type & (MAY_BE_REF|MAY_BE_RCN)) {					\
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  |  |  Branch (1966:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1967|      0|					__type |= MAY_BE_RC1 | MAY_BE_RCN;					\
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               					__type |= MAY_BE_RC1 | MAY_BE_RCN;					\
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1968|      0|				}														\
  |  | 1969|      0|				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_STRING)) {\
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_STRING)) {\
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1969:9): [True: 0, False: 0]
  |  |  |  Branch (1969:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 1970|      0|					/* TODO: support for array keys and ($str . "")*/   \
  |  | 1971|      0|					__type |= MAY_BE_RCN;                               \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1972|      0|				}                                                       \
  |  | 1973|      0|				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_OBJECT)) {\
  |  |  ------------------
  |  |  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  |  |  ------------------
  |  |               				if ((__type & MAY_BE_RC1) && (__type & MAY_BE_OBJECT)) {\
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1973:9): [True: 0, False: 0]
  |  |  |  Branch (1973:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 1974|      0|					/* TODO: object may be captured by magic handlers */\
  |  | 1975|      0|					__type |= MAY_BE_RCN;                               \
  |  |  ------------------
  |  |  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  |  |  ------------------
  |  | 1976|      0|				}                                                       \
  |  | 1977|      0|				if (__ssa_var->alias) {									\
  |  |  ------------------
  |  |  |  Branch (1977:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1978|      0|					__type |= get_ssa_alias_types(__ssa_var->alias);	\
  |  | 1979|      0|				}														\
  |  | 1980|      0|			}															\
  |  | 1981|      0|			if (ssa_var_info[__var].type != __type) { 					\
  |  |  ------------------
  |  |  |  Branch (1981:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1982|      0|				ZEND_ASSERT(ssa_opcodes != NULL ||						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1983|      0|					__ssa_var->var >= op_array->last_var ||				\
  |  | 1984|      0|					(ssa_var_info[__var].type & MAY_BE_REF)				\
  |  | 1985|      0|						== (__type & MAY_BE_REF));						\
  |  | 1986|      0|				if (ssa_var_info[__var].type & ~__type) {				\
  |  |  ------------------
  |  |  |  Branch (1986:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1987|      0|					emit_type_narrowing_warning(op_array, ssa, __var);	\
  |  | 1988|      0|					return FAILURE;										\
  |  | 1989|      0|				}														\
  |  | 1990|      0|				ssa_var_info[__var].type = __type;						\
  |  | 1991|      0|				if (update_worklist) { 									\
  |  |  ------------------
  |  |  |  Branch (1991:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1992|      0|					add_usages(op_array, ssa, worklist, __var);			\
  |  | 1993|      0|				}														\
  |  | 1994|      0|			}															\
  |  | 1995|      0|			/*zend_bitset_excl(worklist, var);*/						\
  |  | 1996|      0|		}																\
  |  | 1997|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1997:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4242:5): [True: 0, False: 0]
  |  Branch (4242:5): [True: 0, False: 0]
  |  Branch (4242:5): [True: 0, False: 0]
  |  Branch (4242:5): [True: 0, False: 0]
  |  Branch (4242:5): [True: 0, False: 0]
  |  Branch (4242:5): [True: 0, False: 0]
  ------------------
 4243|      0|				for (i = 0; i < blocks[p->block].predecessors_count; i++) {
  ------------------
  |  Branch (4243:17): [True: 0, False: 0]
  ------------------
 4244|      0|					zend_ssa_var_info *info;
 4245|       |
 4246|      0|					ZEND_ASSERT(p->sources[i] >= 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4246:6): [True: 0, False: 0]
  |  Branch (4246:6): [True: 0, False: 0]
  ------------------
 4247|      0|					info = &ssa_var_info[p->sources[i]];
 4248|      0|					if (info->type & MAY_BE_OBJECT) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (4248:10): [True: 0, False: 0]
  ------------------
 4249|      0|						if (first) {
  ------------------
  |  Branch (4249:11): [True: 0, False: 0]
  ------------------
 4250|      0|							ce = info->ce;
 4251|      0|							is_instanceof = info->is_instanceof;
 4252|      0|							first = false;
 4253|      0|						} else {
 4254|      0|							is_instanceof |= info->is_instanceof;
 4255|      0|							ce = join_class_entries(ce, info->ce, &is_instanceof);
 4256|      0|						}
 4257|      0|					}
 4258|      0|				}
 4259|      0|				UPDATE_SSA_OBJ_TYPE(ce, ce ? is_instanceof : 0, j);
  ------------------
  |  | 2000|      0|	do {                                                                \
  |  | 2001|      0|		if (var >= 0) {													\
  |  |  ------------------
  |  |  |  Branch (2001:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 2002|      0|			zend_class_entry *__ce = (_ce);								\
  |  | 2003|      0|			bool __is_instanceof = (_is_instanceof);					\
  |  |  ------------------
  |  |  |  Branch (2003:28): [True: 0, False: 0]
  |  |  ------------------
  |  | 2004|      0|			if (__ce && (__ce->ce_flags & ZEND_ACC_FINAL)) {			\
  |  |  ------------------
  |  |  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  |  |  ------------------
  |  |  |  Branch (2004:8): [True: 0, False: 0]
  |  |  |  Branch (2004:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 2005|      0|				__is_instanceof = false;								\
  |  | 2006|      0|			}															\
  |  | 2007|      0|			if (ssa_var_info[var].ce != __ce ||							\
  |  |  ------------------
  |  |  |  Branch (2007:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 2008|      0|			    ssa_var_info[var].is_instanceof != __is_instanceof) {	\
  |  |  ------------------
  |  |  |  Branch (2008:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 2009|      0|				ssa_var_info[var].ce = __ce;							\
  |  | 2010|      0|				ssa_var_info[var].is_instanceof = __is_instanceof;		\
  |  | 2011|      0|				if (update_worklist) { 									\
  |  |  ------------------
  |  |  |  Branch (2011:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 2012|      0|					add_usages(op_array, ssa, worklist, var);			\
  |  | 2013|      0|				}														\
  |  | 2014|      0|			}															\
  |  | 2015|      0|			/*zend_bitset_excl(worklist, var);*/						\
  |  | 2016|      0|		}																\
  |  | 2017|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2017:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4260|      0|			}
 4261|      0|		} else if (ssa_vars[j].definition >= 0) {
  ------------------
  |  Branch (4261:14): [True: 0, False: 0]
  ------------------
 4262|      0|			int i = ssa_vars[j].definition;
 4263|      0|			if (_zend_update_type_info(op_array, ssa, script, worklist, op_array->opcodes + i, ssa->ops + i, NULL, optimization_level, true) == FAILURE) {
  ------------------
  |  Branch (4263:8): [True: 0, False: 0]
  ------------------
 4264|      0|				return FAILURE;
 4265|      0|			}
 4266|      0|		}
 4267|      0|	}
 4268|      1|	return SUCCESS;
 4269|      1|}
zend_inference.c:zend_type_narrowing:
 4442|      1|{
 4443|      1|	uint32_t bitset_len = zend_bitset_len(ssa->vars_count);
 4444|      1|	zend_bitset visited, worklist;
 4445|      1|	int i, v;
 4446|      1|	zend_op *opline;
 4447|      1|	bool narrowed = 0;
 4448|      1|	ALLOCA_FLAG(use_heap)
 4449|       |
 4450|      1|	visited = ZEND_BITSET_ALLOCA(2 * bitset_len, use_heap);
  ------------------
  |  |   43|      1|	(zend_bitset)do_alloca((n) * ZEND_BITSET_ELM_SIZE, use_heap)
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4451|      1|	worklist = visited + bitset_len;
 4452|       |
 4453|      1|	zend_bitset_clear(worklist, bitset_len);
 4454|       |
 4455|      1|	for (v = op_array->last_var; v < ssa->vars_count; v++) {
  ------------------
  |  Branch (4455:31): [True: 0, False: 1]
  ------------------
 4456|      0|		if ((ssa->var_info[v].type & (MAY_BE_REF | MAY_BE_ANY | MAY_BE_UNDEF)) != MAY_BE_LONG) continue;
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              		if ((ssa->var_info[v].type & (MAY_BE_REF | MAY_BE_ANY | MAY_BE_UNDEF)) != MAY_BE_LONG) continue;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if ((ssa->var_info[v].type & (MAY_BE_REF | MAY_BE_ANY | MAY_BE_UNDEF)) != MAY_BE_LONG) continue;
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              		if ((ssa->var_info[v].type & (MAY_BE_REF | MAY_BE_ANY | MAY_BE_UNDEF)) != MAY_BE_LONG) continue;
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (4456:7): [True: 0, False: 0]
  ------------------
 4457|      0|		if (ssa->vars[v].definition < 0) continue;
  ------------------
  |  Branch (4457:7): [True: 0, False: 0]
  ------------------
 4458|      0|		if (ssa->vars[v].no_val) continue;
  ------------------
  |  Branch (4458:7): [True: 0, False: 0]
  ------------------
 4459|      0|		opline = op_array->opcodes + ssa->vars[v].definition;
 4460|       |		/* Go through assignments of literal integers and check if they can be converted to
 4461|       |		 * doubles instead, in the hope that we'll narrow long|double to double. */
 4462|      0|		if (opline->opcode == ZEND_ASSIGN && opline->result_type == IS_UNUSED &&
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
              		if (opline->opcode == ZEND_ASSIGN && opline->result_type == IS_UNUSED &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (4462:7): [True: 0, False: 0]
  |  Branch (4462:40): [True: 0, False: 0]
  ------------------
 4463|      0|				opline->op1_type == IS_CV && opline->op2_type == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				opline->op1_type == IS_CV && opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (4463:5): [True: 0, False: 0]
  |  Branch (4463:34): [True: 0, False: 0]
  ------------------
 4464|      0|			zval *value = CRT_CONSTANT(opline->op2);
  ------------------
  |  |  109|      0|	CRT_CONSTANT_EX(op_array, opline, node)
  |  |  ------------------
  |  |  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  |  |  ------------------
  |  |  |  |  104|      0|	: \
  |  |  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  |  |  ------------------
  |  |  |  |  106|      0|	)
  |  |  ------------------
  ------------------
 4465|       |
 4466|      0|			zend_bitset_clear(visited, bitset_len);
 4467|      0|			if (can_convert_to_double(op_array, ssa, v, value, visited)) {
  ------------------
  |  Branch (4467:8): [True: 0, False: 0]
  ------------------
 4468|      0|				narrowed = 1;
 4469|      0|				ssa->var_info[v].use_as_double = 1;
 4470|       |				/* The "visited" vars are exactly those which may change their type due to
 4471|       |				 * narrowing. Reset their types and add them to the type inference worklist */
 4472|      0|				ZEND_BITSET_FOREACH(visited, bitset_len, i) {
  ------------------
  |  |  262|      0|#define ZEND_BITSET_FOREACH(set, len, bit) do { \
  |  |  263|      0|	zend_bitset _set = (set); \
  |  |  264|      0|	uint32_t _i, _len = (len); \
  |  |  265|      0|	for (_i = 0; _i < _len; _i++) { \
  |  |  ------------------
  |  |  |  Branch (265:15): [True: 0, False: 0]
  |  |  ------------------
  |  |  266|      0|		zend_ulong _x = _set[_i]; \
  |  |  267|      0|		if (_x) { \
  |  |  ------------------
  |  |  |  Branch (267:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  268|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  ------------------
  |  |  269|      0|			for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
  |  |  ------------------
  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  |  |  |  Branch (269:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  270|      0|				if (!(_x & Z_UL(1))) continue;
  |  |  ------------------
  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  |  |  |  Branch (270:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4473|      0|					ssa->var_info[i].type &= ~MAY_BE_ANY;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4474|      0|				} ZEND_BITSET_FOREACH_END();
  ------------------
  |  |  284|      0|			} \
  |  |  285|      0|		} \
  |  |  286|      0|	} \
  |  |  287|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (287:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4475|      0|				zend_bitset_union(worklist, visited, bitset_len);
 4476|      0|			}
 4477|      0|		}
 4478|      0|	}
 4479|       |
 4480|      1|	if (!narrowed) {
  ------------------
  |  Branch (4480:6): [True: 1, False: 0]
  ------------------
 4481|      1|		free_alloca(visited, use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4482|      1|		return SUCCESS;
 4483|      1|	}
 4484|       |
 4485|      0|	if (zend_infer_types_ex(op_array, script, ssa, worklist, optimization_level) == FAILURE) {
  ------------------
  |  Branch (4485:6): [True: 0, False: 0]
  ------------------
 4486|      0|		free_alloca(visited, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4487|      0|		return FAILURE;
 4488|      0|	}
 4489|       |
 4490|      0|	free_alloca(visited, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4491|      0|	return SUCCESS;
 4492|      0|}
zend_inference.c:zend_func_return_info:
 4560|      1|{
 4561|      1|	const zend_func_info *info = ZEND_FUNC_INFO(op_array);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 4562|      1|	const zend_ssa *ssa = &info->ssa;
 4563|      1|	uint32_t blocks_count = info->ssa.cfg.blocks_count;
 4564|      1|	const zend_basic_block *blocks = info->ssa.cfg.blocks;
 4565|      1|	uint32_t t1;
 4566|      1|	uint32_t tmp = 0;
 4567|      1|	zend_class_entry *tmp_ce = NULL;
 4568|      1|	int tmp_is_instanceof = -1;
 4569|      1|	zend_class_entry *arg_ce;
 4570|      1|	bool arg_is_instanceof;
 4571|      1|	zend_ssa_range tmp_range = {0, 0, 0, 0};
 4572|      1|	int tmp_has_range = -1;
 4573|       |
 4574|      1|	if (op_array->fn_flags & ZEND_ACC_GENERATOR) {
  ------------------
  |  |  387|      1|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
  |  Branch (4574:6): [True: 0, False: 1]
  ------------------
 4575|      0|		ret->type = MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              		ret->type = MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              		ret->type = MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
 4576|      0|		ret->ce = zend_ce_generator;
 4577|      0|		ret->is_instanceof = 0;
 4578|      0|		ret->range = tmp_range;
 4579|      0|		ret->has_range = 0;
 4580|      0|		return;
 4581|      0|	}
 4582|       |
 4583|      1|	if (!ret->type) {
  ------------------
  |  Branch (4583:6): [True: 1, False: 0]
  ------------------
 4584|       |		/* We will intersect the type later. */
 4585|      1|		ret->type = MAY_BE_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_KEY_ANY
  ------------------
  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		ret->type = MAY_BE_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_KEY_ANY
  ------------------
  |  |   55|      1|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      1|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		ret->type = MAY_BE_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_KEY_ANY
  ------------------
  |  |   56|      1|#define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      1|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		ret->type = MAY_BE_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_KEY_ANY
  ------------------
  |  |   65|      1|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      1|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      1|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      1|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      1|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
 4586|      1|			| MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF;
  ------------------
  |  |   76|      1|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              			| MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF;
  ------------------
  |  |   77|      1|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
              			| MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF;
  ------------------
  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
 4587|      1|	}
 4588|       |
 4589|      2|	for (uint32_t j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (4589:23): [True: 1, False: 1]
  ------------------
 4590|      1|		if ((blocks[j].flags & ZEND_BB_REACHABLE) && blocks[j].len != 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (4590:7): [True: 1, False: 0]
  |  Branch (4590:48): [True: 1, False: 0]
  ------------------
 4591|      1|			zend_op *opline = op_array->opcodes + blocks[j].start + blocks[j].len - 1;
 4592|       |
 4593|      1|			if (opline->opcode == ZEND_RETURN || opline->opcode == ZEND_RETURN_BY_REF) {
  ------------------
  |  |  185|      2|#define ZEND_RETURN                          62
  ------------------
              			if (opline->opcode == ZEND_RETURN || opline->opcode == ZEND_RETURN_BY_REF) {
  ------------------
  |  |  233|      0|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (4593:8): [True: 1, False: 0]
  |  Branch (4593:41): [True: 0, False: 0]
  ------------------
 4594|      1|				const zend_ssa_op *ssa_op = ssa->ops ? &ssa->ops[opline - op_array->opcodes] : NULL;
  ------------------
  |  Branch (4594:33): [True: 1, False: 0]
  ------------------
 4595|      1|				if (!recursive && ssa_op && info->ssa.var_info &&
  ------------------
  |  Branch (4595:9): [True: 0, False: 1]
  |  Branch (4595:23): [True: 0, False: 0]
  |  Branch (4595:33): [True: 0, False: 0]
  ------------------
 4596|      0|				    ssa_op->op1_use >= 0 &&
  ------------------
  |  Branch (4596:9): [True: 0, False: 0]
  ------------------
 4597|      0|				    info->ssa.var_info[ssa_op->op1_use].recursive) {
  ------------------
  |  Branch (4597:9): [True: 0, False: 0]
  ------------------
 4598|      0|					continue;
 4599|      0|				}
 4600|      1|				if (is_recursive_tail_call(op_array, opline)) {
  ------------------
  |  Branch (4600:9): [True: 0, False: 1]
  ------------------
 4601|      0|					continue;
 4602|      0|				}
 4603|      1|				t1 = OP1_INFO();
  ------------------
  |  |  196|      1|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
 4604|      1|				if (t1 & MAY_BE_UNDEF) {
  ------------------
  |  |   23|      1|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (4604:9): [True: 0, False: 1]
  ------------------
 4605|      0|					t1 |= MAY_BE_NULL;
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
 4606|      0|				}
 4607|      1|				if (opline->opcode == ZEND_RETURN) {
  ------------------
  |  |  185|      1|#define ZEND_RETURN                          62
  ------------------
  |  Branch (4607:9): [True: 1, False: 0]
  ------------------
 4608|      1|					if (t1 & MAY_BE_RC1) {
  ------------------
  |  |   76|      1|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
  |  Branch (4608:10): [True: 0, False: 1]
  ------------------
 4609|      0|						t1 |= MAY_BE_RCN;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
 4610|      0|					}
 4611|      1|					t1 &= ~(MAY_BE_UNDEF | MAY_BE_REF);
  ------------------
  |  |   23|      1|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              					t1 &= ~(MAY_BE_UNDEF | MAY_BE_REF);
  ------------------
  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
 4612|      1|				} else {
 4613|      0|					t1 |= MAY_BE_REF;
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
 4614|      0|					t1 &= ~(MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN);
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              					t1 &= ~(MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN);
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              					t1 &= ~(MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN);
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
 4615|      0|				}
 4616|      1|				tmp |= t1;
 4617|       |
 4618|      1|				if (ssa_op && info->ssa.var_info &&
  ------------------
  |  Branch (4618:9): [True: 1, False: 0]
  |  Branch (4618:19): [True: 1, False: 0]
  ------------------
 4619|      1|				    ssa_op->op1_use >= 0 && !(t1 & MAY_BE_REF) &&
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (4619:9): [True: 0, False: 1]
  |  Branch (4619:33): [True: 0, False: 0]
  ------------------
 4620|      0|				    info->ssa.var_info[ssa_op->op1_use].ce) {
  ------------------
  |  Branch (4620:9): [True: 0, False: 0]
  ------------------
 4621|      0|					arg_ce = info->ssa.var_info[ssa_op->op1_use].ce;
 4622|      0|					arg_is_instanceof = info->ssa.var_info[ssa_op->op1_use].is_instanceof;
 4623|      1|				} else {
 4624|      1|					arg_ce = NULL;
 4625|      1|					arg_is_instanceof = false;
 4626|      1|				}
 4627|       |
 4628|      1|				if (tmp_is_instanceof < 0) {
  ------------------
  |  Branch (4628:9): [True: 1, False: 0]
  ------------------
 4629|      1|					tmp_ce = arg_ce;
 4630|      1|					tmp_is_instanceof = arg_is_instanceof;
 4631|      1|				} else if (arg_ce && arg_ce == tmp_ce) {
  ------------------
  |  Branch (4631:16): [True: 0, False: 0]
  |  Branch (4631:26): [True: 0, False: 0]
  ------------------
 4632|      0|					if (tmp_is_instanceof != arg_is_instanceof) {
  ------------------
  |  Branch (4632:10): [True: 0, False: 0]
  ------------------
 4633|      0|						tmp_is_instanceof = 1;
 4634|      0|					}
 4635|      0|				} else {
 4636|      0|					tmp_ce = NULL;
 4637|      0|					tmp_is_instanceof = 0;
 4638|      0|				}
 4639|       |
 4640|      1|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (4640:9): [True: 1, False: 0]
  ------------------
 4641|      1|					const zval *zv = CRT_CONSTANT(opline->op1);
  ------------------
  |  |  109|      1|	CRT_CONSTANT_EX(op_array, opline, node)
  |  |  ------------------
  |  |  |  |  102|      1|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  390|      1|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (102:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  103|      1|		RT_CONSTANT(opline, (node)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  |  |  ------------------
  |  |  |  |  104|      1|	: \
  |  |  |  |  105|      1|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  817|      1|	((op_array)->literals + (num))
  |  |  |  |  ------------------
  |  |  |  |  106|      1|	)
  |  |  ------------------
  ------------------
 4642|       |
 4643|      1|					if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (4643:10): [True: 1, False: 0]
  ------------------
 4644|      1|						if (tmp_has_range < 0) {
  ------------------
  |  Branch (4644:11): [True: 1, False: 0]
  ------------------
 4645|      1|							tmp_has_range = 1;
 4646|      1|							tmp_range.underflow = 0;
 4647|      1|							tmp_range.min = Z_LVAL_P(zv);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 4648|      1|							tmp_range.max = Z_LVAL_P(zv);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 4649|      1|							tmp_range.overflow = 0;
 4650|      1|						} else if (tmp_has_range) {
  ------------------
  |  Branch (4650:18): [True: 0, False: 0]
  ------------------
 4651|      0|							if (!tmp_range.underflow) {
  ------------------
  |  Branch (4651:12): [True: 0, False: 0]
  ------------------
 4652|      0|								tmp_range.min = MIN(tmp_range.min, Z_LVAL_P(zv));
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4653|      0|							}
 4654|      0|							if (!tmp_range.overflow) {
  ------------------
  |  Branch (4654:12): [True: 0, False: 0]
  ------------------
 4655|      0|								tmp_range.max = MAX(tmp_range.max, Z_LVAL_P(zv));
  ------------------
  |  |  517|      0|#define MAX(a, b)  (((a)>(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (517:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4656|      0|							}
 4657|      0|						}
 4658|      1|					} else {
 4659|      0|						tmp_has_range = 0;
 4660|      0|					}
 4661|      1|				} else if (ssa_op && info->ssa.var_info && ssa_op->op1_use >= 0) {
  ------------------
  |  Branch (4661:16): [True: 0, False: 0]
  |  Branch (4661:26): [True: 0, False: 0]
  |  Branch (4661:48): [True: 0, False: 0]
  ------------------
 4662|      0|					if (info->ssa.var_info[ssa_op->op1_use].has_range) {
  ------------------
  |  Branch (4662:10): [True: 0, False: 0]
  ------------------
 4663|      0|						if (tmp_has_range < 0) {
  ------------------
  |  Branch (4663:11): [True: 0, False: 0]
  ------------------
 4664|      0|							tmp_has_range = 1;
 4665|      0|							tmp_range = info->ssa.var_info[ssa_op->op1_use].range;
 4666|      0|						} else if (tmp_has_range) {
  ------------------
  |  Branch (4666:18): [True: 0, False: 0]
  ------------------
 4667|       |							/* union */
 4668|      0|							if (info->ssa.var_info[ssa_op->op1_use].range.underflow) {
  ------------------
  |  Branch (4668:12): [True: 0, False: 0]
  ------------------
 4669|      0|								tmp_range.underflow = 1;
 4670|      0|								tmp_range.min = ZEND_LONG_MIN;
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
 4671|      0|							} else {
 4672|      0|								tmp_range.min = MIN(tmp_range.min, info->ssa.var_info[ssa_op->op1_use].range.min);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4673|      0|							}
 4674|      0|							if (info->ssa.var_info[ssa_op->op1_use].range.overflow) {
  ------------------
  |  Branch (4674:12): [True: 0, False: 0]
  ------------------
 4675|      0|								tmp_range.overflow = 1;
 4676|      0|								tmp_range.max = ZEND_LONG_MAX;
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
 4677|      0|							} else {
 4678|      0|								tmp_range.max = MAX(tmp_range.max, info->ssa.var_info[ssa_op->op1_use].range.max);
  ------------------
  |  |  517|      0|#define MAX(a, b)  (((a)>(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (517:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4679|      0|							}
 4680|      0|						}
 4681|      0|					} else if (!widening) {
  ------------------
  |  Branch (4681:17): [True: 0, False: 0]
  ------------------
 4682|      0|						tmp_has_range = 1;
 4683|      0|						tmp_range.underflow = 1;
 4684|      0|						tmp_range.min = ZEND_LONG_MIN;
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
 4685|      0|						tmp_range.max = ZEND_LONG_MAX;
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
 4686|      0|						tmp_range.overflow = 1;
 4687|      0|					}
 4688|      0|				} else {
 4689|      0|					tmp_has_range = 0;
 4690|      0|				}
 4691|      1|			}
 4692|      1|		}
 4693|      1|	}
 4694|       |
 4695|      1|	if (!(op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|      1|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (4695:6): [True: 1, False: 0]
  ------------------
 4696|      1|		if (tmp_is_instanceof < 0) {
  ------------------
  |  Branch (4696:7): [True: 0, False: 1]
  ------------------
 4697|      0|			tmp_is_instanceof = 0;
 4698|      0|			tmp_ce = NULL;
 4699|      0|		}
 4700|      1|		if (tmp_has_range < 0) {
  ------------------
  |  Branch (4700:7): [True: 0, False: 1]
  ------------------
 4701|      0|			tmp_has_range = 0;
 4702|      0|		}
 4703|      1|		ret->ce = tmp_ce;
 4704|      1|		ret->is_instanceof = tmp_is_instanceof;
 4705|      1|	}
 4706|      1|	ret->type &= tmp;
 4707|      1|	ret->range = tmp_range;
 4708|      1|	ret->has_range = tmp_has_range;
 4709|      1|}
zend_inference.c:is_recursive_tail_call:
 4495|      1|{
 4496|      1|	const zend_func_info *info = ZEND_FUNC_INFO(op_array);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 4497|       |
 4498|      1|	if (info->ssa.ops && info->ssa.vars && info->call_map &&
  ------------------
  |  Branch (4498:6): [True: 1, False: 0]
  |  Branch (4498:23): [True: 1, False: 0]
  |  Branch (4498:41): [True: 0, False: 1]
  ------------------
 4499|      0|	    info->ssa.ops[opline - op_array->opcodes].op1_use >= 0 &&
  ------------------
  |  Branch (4499:6): [True: 0, False: 0]
  ------------------
 4500|      0|	    info->ssa.vars[info->ssa.ops[opline - op_array->opcodes].op1_use].definition >= 0) {
  ------------------
  |  Branch (4500:6): [True: 0, False: 0]
  ------------------
 4501|       |
 4502|      0|		const zend_op *op = op_array->opcodes + info->ssa.vars[info->ssa.ops[opline - op_array->opcodes].op1_use].definition;
 4503|       |
 4504|      0|		if (op->opcode == ZEND_DO_UCALL) {
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (4504:7): [True: 0, False: 0]
  ------------------
 4505|      0|			const zend_call_info *call_info = info->call_map[op - op_array->opcodes];
 4506|      0|			if (call_info && op_array == &call_info->callee_func->op_array) {
  ------------------
  |  Branch (4506:8): [True: 0, False: 0]
  |  Branch (4506:21): [True: 0, False: 0]
  ------------------
 4507|      0|				return 1;
 4508|      0|			}
 4509|      0|		}
 4510|      0|	}
 4511|      1|	return 0;
 4512|      1|}

zend_inference.c:_const_op_type:
  146|      1|static zend_always_inline uint32_t _const_op_type(const zval *zv) {
  147|      1|	if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      1|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (147:6): [True: 0, False: 1]
  ------------------
  148|      0|		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|      1|	} else if (Z_TYPE_P(zv) == IS_ARRAY) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(zv) == IS_ARRAY) {
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (149:13): [True: 0, False: 1]
  ------------------
  150|      0|		return zend_array_type_info(zv);
  151|      1|	} else {
  152|      1|		uint32_t tmp = (1 << Z_TYPE_P(zv));
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  153|       |
  154|      1|		if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      0|			tmp |= MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              			tmp |= MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
  156|      1|		} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (156:14): [True: 0, False: 1]
  ------------------
  157|      0|			tmp |= MAY_BE_RCN;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
  158|      0|		}
  159|      1|		return tmp;
  160|      1|	}
  161|      1|}
zend_inference.c:_ssa_op1_info:
  174|      1|	{																		\
  175|      1|		if (opline->opN##_type == IS_CONST) {							\
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (175:7): [True: 1, False: 0]
  ------------------
  176|      1|			return _const_op_type(CRT_CONSTANT(opline->opN)); \
  ------------------
  |  |  109|      1|	CRT_CONSTANT_EX(op_array, opline, node)
  |  |  ------------------
  |  |  |  |  102|      1|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  390|      1|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (102:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  103|      1|		RT_CONSTANT(opline, (node)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  |  |  ------------------
  |  |  |  |  104|      1|	: \
  |  |  |  |  105|      1|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  817|      1|	((op_array)->literals + (num))
  |  |  |  |  ------------------
  |  |  |  |  106|      1|	)
  |  |  ------------------
  ------------------
  177|      1|		} else { \
  178|      0|			return get_ssa_var_info(ssa, ssa->var_info ? ssa_op->opN##_use : -1); \
  ------------------
  |  Branch (178:33): [True: 0, False: 0]
  ------------------
  179|      0|		} \
  180|      1|	} \
zend_optimizer.c:_ssa_op1_info:
  174|      1|	{																		\
  175|      1|		if (opline->opN##_type == IS_CONST) {							\
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (175:7): [True: 1, False: 0]
  ------------------
  176|      1|			return _const_op_type(CRT_CONSTANT(opline->opN)); \
  ------------------
  |  |  109|      1|	CRT_CONSTANT_EX(op_array, opline, node)
  |  |  ------------------
  |  |  |  |  102|      1|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  390|      1|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (102:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  103|      1|		RT_CONSTANT(opline, (node)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  |  |  ------------------
  |  |  |  |  104|      1|	: \
  |  |  |  |  105|      1|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  817|      1|	((op_array)->literals + (num))
  |  |  |  |  ------------------
  |  |  |  |  106|      1|	)
  |  |  ------------------
  ------------------
  177|      1|		} else { \
  178|      0|			return get_ssa_var_info(ssa, ssa->var_info ? ssa_op->opN##_use : -1); \
  ------------------
  |  Branch (178:33): [True: 0, False: 0]
  ------------------
  179|      0|		} \
  180|      1|	} \
zend_optimizer.c:_const_op_type:
  146|      1|static zend_always_inline uint32_t _const_op_type(const zval *zv) {
  147|      1|	if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      1|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (147:6): [True: 0, False: 1]
  ------------------
  148|      0|		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              		return MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY;
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|      1|	} else if (Z_TYPE_P(zv) == IS_ARRAY) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(zv) == IS_ARRAY) {
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (149:13): [True: 0, False: 1]
  ------------------
  150|      0|		return zend_array_type_info(zv);
  151|      1|	} else {
  152|      1|		uint32_t tmp = (1 << Z_TYPE_P(zv));
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  153|       |
  154|      1|		if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      0|			tmp |= MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   76|      0|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              			tmp |= MAY_BE_RC1 | MAY_BE_RCN;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
  156|      1|		} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (156:14): [True: 0, False: 1]
  ------------------
  157|      0|			tmp |= MAY_BE_RCN;
  ------------------
  |  |   77|      0|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
  158|      0|		}
  159|      1|		return tmp;
  160|      1|	}
  161|      1|}
zend_optimizer.c:get_ssa_var_info:
  164|      1|{
  165|      1|	if (ssa->var_info && ssa_var_num >= 0) {
  ------------------
  |  Branch (165:6): [True: 1, False: 0]
  |  Branch (165:23): [True: 0, False: 1]
  ------------------
  166|      0|		return ssa->var_info[ssa_var_num].type;
  167|      1|	} else {
  168|      1|		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   23|      1|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   76|      1|#define MAY_BE_RC1                  (1<<30) /* may be non-reference with refcount == 1 */
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   77|      1|#define MAY_BE_RCN                  (1u<<31) /* may be non-reference with refcount > 1  */
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   74|      1|#define MAY_BE_INDIRECT             (1<<25)
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   65|      1|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      1|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      1|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      1|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      1|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   55|      1|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      1|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		return MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_INDIRECT | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
  ------------------
  |  |   56|      1|#define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_REF			(MAY_BE_REF      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      1|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|      1|	}
  170|      1|}
zend_optimizer.c:_ssa_op2_info:
  174|      1|	{																		\
  175|      1|		if (opline->opN##_type == IS_CONST) {							\
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (175:7): [True: 0, False: 1]
  ------------------
  176|      0|			return _const_op_type(CRT_CONSTANT(opline->opN)); \
  ------------------
  |  |  109|      0|	CRT_CONSTANT_EX(op_array, opline, node)
  |  |  ------------------
  |  |  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  |  |  ------------------
  |  |  |  |  104|      0|	: \
  |  |  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  |  |  ------------------
  |  |  |  |  106|      0|	)
  |  |  ------------------
  ------------------
  177|      1|		} else { \
  178|      1|			return get_ssa_var_info(ssa, ssa->var_info ? ssa_op->opN##_use : -1); \
  ------------------
  |  Branch (178:33): [True: 1, False: 0]
  ------------------
  179|      1|		} \
  180|      1|	} \

zend_foreach_op_array:
 1536|      2|{
 1537|      2|	zval *zv;
 1538|      2|	zend_op_array *op_array;
 1539|       |
 1540|      2|	zend_foreach_op_array_helper(&script->main_op_array, func, context);
 1541|       |
 1542|      4|	ZEND_HASH_MAP_FOREACH_PTR(&script->function_table, op_array) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      2|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      2|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1542:2): [True: 0, False: 2]
  |  Branch (1542:2): [True: 2, False: 0]
  ------------------
 1543|      4|		zend_foreach_op_array_helper(op_array, func, context);
 1544|      4|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1545|       |
 1546|      4|	ZEND_HASH_MAP_FOREACH_VAL(&script->class_table, zv) {
  ------------------
  |  | 1325|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      2|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|      0|	_val = _z;
  ------------------
  |  Branch (1546:2): [True: 0, False: 2]
  |  Branch (1546:2): [True: 2, False: 0]
  ------------------
 1547|      4|		if (Z_TYPE_P(zv) == IS_ALIAS_PTR) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_ALIAS_PTR) {
  ------------------
  |  |  631|      0|#define IS_ALIAS_PTR				14
  ------------------
  |  Branch (1547:7): [True: 0, False: 0]
  ------------------
 1548|      0|			continue;
 1549|      0|		}
 1550|      0|		const zend_class_entry *ce = Z_CE_P(zv);
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 1551|      0|		ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, op_array) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1551:3): [True: 0, False: 0]
  |  Branch (1551:3): [True: 0, False: 0]
  ------------------
 1552|      0|			if (op_array->scope == ce
  ------------------
  |  Branch (1552:8): [True: 0, False: 0]
  ------------------
 1553|      0|					&& op_array->type == ZEND_USER_FUNCTION
  ------------------
  |  Branch (1553:9): [True: 0, False: 0]
  ------------------
 1554|      0|					&& !(op_array->fn_flags & ZEND_ACC_ABSTRACT)
  ------------------
  |  |  233|      0|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1554:9): [True: 0, False: 0]
  ------------------
 1555|      0|					&& !(op_array->fn_flags & ZEND_ACC_TRAIT_CLONE)) {
  ------------------
  |  |  378|      0|#define ZEND_ACC_TRAIT_CLONE             (1 << 20) /*     |  X  |     |     */
  ------------------
  |  Branch (1555:9): [True: 0, False: 0]
  ------------------
 1556|      0|				zend_foreach_op_array_helper(op_array, func, context);
 1557|      0|			}
 1558|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1559|       |
 1560|      0|		zend_property_info *property;
 1561|      0|		ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, property) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1561:3): [True: 0, False: 0]
  |  Branch (1561:3): [True: 0, False: 0]
  ------------------
 1562|      0|			zend_function **hooks = property->hooks;
 1563|      0|			if (property->ce == ce && property->hooks) {
  ------------------
  |  Branch (1563:8): [True: 0, False: 0]
  |  Branch (1563:30): [True: 0, False: 0]
  ------------------
 1564|      0|				for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|      0|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (1564:26): [True: 0, False: 0]
  ------------------
 1565|      0|					const zend_function *hook = hooks[i];
 1566|      0|					if (hook && hook->common.scope == ce && !(hooks[i]->op_array.fn_flags & ZEND_ACC_TRAIT_CLONE)) {
  ------------------
  |  |  378|      0|#define ZEND_ACC_TRAIT_CLONE             (1 << 20) /*     |  X  |     |     */
  ------------------
  |  Branch (1566:10): [True: 0, False: 0]
  |  Branch (1566:18): [True: 0, False: 0]
  |  Branch (1566:46): [True: 0, False: 0]
  ------------------
 1567|      0|						zend_foreach_op_array_helper(&hooks[i]->op_array, func, context);
 1568|      0|					}
 1569|      0|				}
 1570|      0|			}
 1571|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1572|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1573|      2|}
zend_optimize_script:
 1598|      1|{
 1599|      1|	zend_op_array *op_array;
 1600|      1|	zend_string *name;
 1601|      1|	zend_optimizer_ctx ctx;
 1602|      1|	zval *zv;
 1603|       |
 1604|      1|	ctx.arena = zend_arena_create(64 * 1024);
 1605|      1|	ctx.script = script;
 1606|      1|	ctx.constants = NULL;
 1607|      1|	ctx.optimization_level = optimization_level;
 1608|      1|	ctx.debug_level = debug_level;
 1609|       |
 1610|      1|	if ((ZEND_OPTIMIZER_PASS_6 & optimization_level) &&
  ------------------
  |  |   31|      1|#define ZEND_OPTIMIZER_PASS_6		(1<<5)   /* DFA based optimization       */
  ------------------
  |  Branch (1610:6): [True: 1, False: 0]
  ------------------
 1611|      1|	    (ZEND_OPTIMIZER_PASS_7 & optimization_level)) {
  ------------------
  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1611:6): [True: 1, False: 0]
  ------------------
 1612|       |		/* Optimize using call-graph */
 1613|      1|		zend_call_graph call_graph;
 1614|      1|		zend_build_call_graph(&ctx.arena, script, &call_graph);
 1615|       |
 1616|      1|		uint32_t i;
 1617|      1|		zend_func_info *func_info;
 1618|       |
 1619|      2|		for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1619:15): [True: 1, False: 1]
  ------------------
 1620|      1|			zend_revert_pass_two(call_graph.op_arrays[i]);
 1621|      1|			zend_optimize(call_graph.op_arrays[i], &ctx);
 1622|      1|		}
 1623|       |
 1624|      1|	    zend_analyze_call_graph(&ctx.arena, script, &call_graph);
 1625|       |
 1626|      2|		for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1626:15): [True: 1, False: 1]
  ------------------
 1627|      1|			func_info = ZEND_FUNC_INFO(call_graph.op_arrays[i]);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 1628|      1|			if (func_info) {
  ------------------
  |  Branch (1628:8): [True: 1, False: 0]
  ------------------
 1629|      1|				func_info->call_map = zend_build_call_map(&ctx.arena, func_info, call_graph.op_arrays[i]);
 1630|      1|				if (call_graph.op_arrays[i]->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      1|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (1630:9): [True: 0, False: 1]
  ------------------
 1631|      0|					zend_init_func_return_info(call_graph.op_arrays[i], script, &func_info->return_info);
 1632|      0|				}
 1633|      1|			}
 1634|      1|		}
 1635|       |
 1636|      2|		for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1636:15): [True: 1, False: 1]
  ------------------
 1637|      1|			func_info = ZEND_FUNC_INFO(call_graph.op_arrays[i]);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 1638|      1|			if (func_info) {
  ------------------
  |  Branch (1638:8): [True: 1, False: 0]
  ------------------
 1639|      1|				if (zend_dfa_analyze_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa) == SUCCESS) {
  ------------------
  |  Branch (1639:9): [True: 1, False: 0]
  ------------------
 1640|      1|					func_info->flags = func_info->ssa.cfg.flags;
 1641|      1|				} else {
 1642|      0|					ZEND_SET_FUNC_INFO(call_graph.op_arrays[i], NULL);
  ------------------
  |  |   48|      0|#define ZEND_SET_FUNC_INFO(op_array, info) do { \
  |  |   49|      0|		zend_func_info** pinfo = (zend_func_info**)&(op_array)->reserved[zend_func_info_rid]; \
  |  |   50|      0|		*pinfo = info; \
  |  |   51|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (51:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1643|      0|				}
 1644|      1|			}
 1645|      1|		}
 1646|       |
 1647|       |		//TODO: perform inner-script inference???
 1648|      2|		for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1648:15): [True: 1, False: 1]
  ------------------
 1649|      1|			func_info = ZEND_FUNC_INFO(call_graph.op_arrays[i]);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 1650|      1|			if (func_info) {
  ------------------
  |  Branch (1650:8): [True: 1, False: 0]
  ------------------
 1651|      1|				zend_dfa_optimize_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa, func_info->call_map);
 1652|      1|			}
 1653|      1|		}
 1654|       |
 1655|      1|		if (debug_level & ZEND_DUMP_AFTER_PASS_7) {
  ------------------
  |  |   58|      1|#define ZEND_DUMP_AFTER_PASS_7		ZEND_OPTIMIZER_PASS_7
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  |  |  ------------------
  ------------------
  |  Branch (1655:7): [True: 0, False: 1]
  ------------------
 1656|      0|			for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1656:16): [True: 0, False: 0]
  ------------------
 1657|      0|				zend_dump_op_array(call_graph.op_arrays[i], 0, "after pass 7", NULL);
 1658|      0|			}
 1659|      0|		}
 1660|       |
 1661|      1|		if (ZEND_OPTIMIZER_PASS_9 & optimization_level) {
  ------------------
  |  |   34|      1|#define ZEND_OPTIMIZER_PASS_9		(1<<8)   /* TMP VAR usage                */
  ------------------
  |  Branch (1661:7): [True: 1, False: 0]
  ------------------
 1662|      2|			for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1662:16): [True: 1, False: 1]
  ------------------
 1663|      1|				zend_optimize_temporary_variables(call_graph.op_arrays[i], &ctx);
 1664|      1|				if (debug_level & ZEND_DUMP_AFTER_PASS_9) {
  ------------------
  |  |   60|      1|#define ZEND_DUMP_AFTER_PASS_9		ZEND_OPTIMIZER_PASS_9
  |  |  ------------------
  |  |  |  |   34|      1|#define ZEND_OPTIMIZER_PASS_9		(1<<8)   /* TMP VAR usage                */
  |  |  ------------------
  ------------------
  |  Branch (1664:9): [True: 0, False: 1]
  ------------------
 1665|      0|					zend_dump_op_array(call_graph.op_arrays[i], 0, "after pass 9", NULL);
 1666|      0|				}
 1667|      1|			}
 1668|      1|		}
 1669|       |
 1670|      1|		if (ZEND_OPTIMIZER_PASS_11 & optimization_level) {
  ------------------
  |  |   36|      1|#define ZEND_OPTIMIZER_PASS_11		(1<<10)  /* Merge equal constants       */
  ------------------
  |  Branch (1670:7): [True: 1, False: 0]
  ------------------
 1671|      2|			for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1671:16): [True: 1, False: 1]
  ------------------
 1672|      1|				zend_optimizer_compact_literals(call_graph.op_arrays[i], &ctx);
 1673|      1|				if (debug_level & ZEND_DUMP_AFTER_PASS_11) {
  ------------------
  |  |   62|      1|#define ZEND_DUMP_AFTER_PASS_11		ZEND_OPTIMIZER_PASS_11
  |  |  ------------------
  |  |  |  |   36|      1|#define ZEND_OPTIMIZER_PASS_11		(1<<10)  /* Merge equal constants       */
  |  |  ------------------
  ------------------
  |  Branch (1673:9): [True: 0, False: 1]
  ------------------
 1674|      0|					zend_dump_op_array(call_graph.op_arrays[i], 0, "after pass 11", NULL);
 1675|      0|				}
 1676|      1|			}
 1677|      1|		}
 1678|       |
 1679|      1|		if (ZEND_OPTIMIZER_PASS_13 & optimization_level) {
  ------------------
  |  |   38|      1|#define ZEND_OPTIMIZER_PASS_13		(1<<12)  /* Remove unused variables     */
  ------------------
  |  Branch (1679:7): [True: 1, False: 0]
  ------------------
 1680|      2|			for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1680:16): [True: 1, False: 1]
  ------------------
 1681|      1|				zend_optimizer_compact_vars(call_graph.op_arrays[i]);
 1682|      1|				if (debug_level & ZEND_DUMP_AFTER_PASS_13) {
  ------------------
  |  |   64|      1|#define ZEND_DUMP_AFTER_PASS_13		ZEND_OPTIMIZER_PASS_13
  |  |  ------------------
  |  |  |  |   38|      1|#define ZEND_OPTIMIZER_PASS_13		(1<<12)  /* Remove unused variables     */
  |  |  ------------------
  ------------------
  |  Branch (1682:9): [True: 0, False: 1]
  ------------------
 1683|      0|					zend_dump_op_array(call_graph.op_arrays[i], 0, "after pass 13", NULL);
 1684|      0|				}
 1685|      1|			}
 1686|      1|		}
 1687|       |
 1688|      1|		if (ZEND_OPTIMIZER_PASS_12 & optimization_level) {
  ------------------
  |  |   37|      1|#define ZEND_OPTIMIZER_PASS_12		(1<<11)  /* Adjust used stack           */
  ------------------
  |  Branch (1688:7): [True: 1, False: 0]
  ------------------
 1689|      2|			for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1689:16): [True: 1, False: 1]
  ------------------
 1690|      1|				zend_adjust_fcall_stack_size_graph(call_graph.op_arrays[i]);
 1691|      1|			}
 1692|      1|		}
 1693|       |
 1694|      2|		for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1694:15): [True: 1, False: 1]
  ------------------
 1695|      1|			op_array = call_graph.op_arrays[i];
 1696|      1|			func_info = ZEND_FUNC_INFO(op_array);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 1697|      1|			if (func_info && func_info->ssa.var_info) {
  ------------------
  |  Branch (1697:8): [True: 1, False: 0]
  |  Branch (1697:21): [True: 1, False: 0]
  ------------------
 1698|      1|				zend_redo_pass_two_ex(op_array, &func_info->ssa);
 1699|      1|				if (op_array->live_range) {
  ------------------
  |  Branch (1699:9): [True: 0, False: 1]
  ------------------
 1700|      0|					zend_recalc_live_ranges(op_array, needs_live_range);
 1701|      0|				}
 1702|      1|			} else {
 1703|      0|				zend_redo_pass_two(op_array);
 1704|      0|				if (op_array->live_range) {
  ------------------
  |  Branch (1704:9): [True: 0, False: 0]
  ------------------
 1705|      0|					zend_recalc_live_ranges(op_array, NULL);
 1706|      0|				}
 1707|      0|			}
 1708|      1|		}
 1709|       |
 1710|      2|		for (i = 0; i < call_graph.op_arrays_count; i++) {
  ------------------
  |  Branch (1710:15): [True: 1, False: 1]
  ------------------
 1711|      1|			ZEND_SET_FUNC_INFO(call_graph.op_arrays[i], NULL);
  ------------------
  |  |   48|      1|#define ZEND_SET_FUNC_INFO(op_array, info) do { \
  |  |   49|      1|		zend_func_info** pinfo = (zend_func_info**)&(op_array)->reserved[zend_func_info_rid]; \
  |  |   50|      1|		*pinfo = info; \
  |  |   51|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (51:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1712|      1|		}
 1713|      1|	} else {
 1714|      0|		zend_foreach_op_array(script, step_optimize_op_array, &ctx);
 1715|       |
 1716|      0|		if (ZEND_OPTIMIZER_PASS_12 & optimization_level) {
  ------------------
  |  |   37|      0|#define ZEND_OPTIMIZER_PASS_12		(1<<11)  /* Adjust used stack           */
  ------------------
  |  Branch (1716:7): [True: 0, False: 0]
  ------------------
 1717|      0|			zend_foreach_op_array(script, step_adjust_fcall_stack_size, &ctx);
 1718|      0|		}
 1719|      0|	}
 1720|       |
 1721|      2|	ZEND_HASH_MAP_FOREACH_VAL(&script->class_table, zv) {
  ------------------
  |  | 1325|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|      0|	_val = _z;
  ------------------
  |  Branch (1721:2): [True: 0, False: 1]
  |  Branch (1721:2): [True: 1, False: 0]
  ------------------
 1722|      2|		if (Z_TYPE_P(zv) == IS_ALIAS_PTR) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_ALIAS_PTR) {
  ------------------
  |  |  631|      0|#define IS_ALIAS_PTR				14
  ------------------
  |  Branch (1722:7): [True: 0, False: 0]
  ------------------
 1723|      0|			continue;
 1724|      0|		}
 1725|      0|		const zend_class_entry *ce = Z_CE_P(zv);
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 1726|      0|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
  ------------------
  |  | 1448|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      0|	_key = _p->key; \
  |  | 1450|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1726:3): [True: 0, False: 0]
  |  Branch (1726:3): [True: 0, False: 0]
  ------------------
 1727|      0|			if (op_array->scope != ce && op_array->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (1727:8): [True: 0, False: 0]
  |  Branch (1727:33): [True: 0, False: 0]
  ------------------
 1728|      0|				const zend_op_array *orig_op_array =
 1729|      0|					zend_hash_find_ptr(&op_array->scope->function_table, name);
 1730|       |
 1731|      0|				ZEND_ASSERT(orig_op_array != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1731:5): [True: 0, False: 0]
  |  Branch (1731:5): [True: 0, False: 0]
  ------------------
 1732|      0|				if (orig_op_array != op_array) {
  ------------------
  |  Branch (1732:9): [True: 0, False: 0]
  ------------------
 1733|      0|					uint32_t fn_flags = op_array->fn_flags;
 1734|      0|					uint32_t fn_flags2 = op_array->fn_flags2;
 1735|      0|					zend_function *prototype = op_array->prototype;
 1736|      0|					HashTable *ht = op_array->static_variables;
 1737|       |
 1738|      0|					*op_array = *orig_op_array;
 1739|      0|					op_array->fn_flags = fn_flags;
 1740|      0|					op_array->fn_flags2 = fn_flags2;
 1741|      0|					op_array->prototype = prototype;
 1742|      0|					op_array->static_variables = ht;
 1743|      0|				}
 1744|      0|			}
 1745|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1746|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1747|       |
 1748|      1|	zend_optimizer_call_registered_passes(script, &ctx);
 1749|       |
 1750|      1|	if ((debug_level & ZEND_DUMP_AFTER_OPTIMIZER) &&
  ------------------
  |  |   68|      1|#define ZEND_DUMP_AFTER_OPTIMIZER   (1<<17)
  ------------------
  |  Branch (1750:6): [True: 0, False: 1]
  ------------------
 1751|      0|			(ZEND_OPTIMIZER_PASS_7 & optimization_level)) {
  ------------------
  |  |   32|      0|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1751:4): [True: 0, False: 0]
  ------------------
 1752|      0|		zend_foreach_op_array(script, step_dump_after_optimizer, NULL);
 1753|      0|	}
 1754|       |
 1755|      1|	if (ctx.constants) {
  ------------------
  |  Branch (1755:6): [True: 0, False: 1]
  ------------------
 1756|      0|		zend_hash_destroy(ctx.constants);
 1757|      0|	}
 1758|      1|	zend_arena_destroy(ctx.arena);
 1759|      1|}
zend_optimizer_startup:
 1783|      2|{
 1784|      2|	return zend_func_info_startup();
 1785|      2|}
zend_optimizer.c:zend_foreach_op_array_helper:
 1528|      2|		zend_op_array *op_array, zend_op_array_func_t func, void *context) {
 1529|      2|	func(op_array, context);
 1530|      2|	for (uint32_t i = 0; i < op_array->num_dynamic_func_defs; i++) {
  ------------------
  |  Branch (1530:23): [True: 0, False: 2]
  ------------------
 1531|      0|		zend_foreach_op_array_helper(op_array->dynamic_func_defs[i], func, context);
 1532|      0|	}
 1533|      2|}
zend_optimizer.c:zend_revert_pass_two:
 1170|      1|{
 1171|      1|	zend_op *opline;
 1172|       |
 1173|      1|	ZEND_ASSERT((op_array->fn_flags & ZEND_ACC_DONE_PASS_TWO) != 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1173:2): [True: 0, False: 1]
  |  Branch (1173:2): [True: 1, False: 0]
  ------------------
 1174|       |
 1175|      1|	opline = op_array->opcodes;
 1176|      1|	const zend_op *end = opline + op_array->last;
 1177|      2|	while (opline < end) {
  ------------------
  |  Branch (1177:9): [True: 1, False: 1]
  ------------------
 1178|      1|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1178:7): [True: 1, False: 0]
  ------------------
 1179|      1|			ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, opline->op1);
  ------------------
  |  |  853|      1|#define ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, node) do { \
  |  |  854|      1|		(node).constant = RT_CONSTANT(opline, node) - (op_array)->literals; \
  |  |  ------------------
  |  |  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  ------------------
  |  |  855|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (855:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1180|      1|		}
 1181|      1|		if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1181:7): [True: 0, False: 1]
  ------------------
 1182|      0|			ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, opline->op2);
  ------------------
  |  |  853|      0|#define ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, node) do { \
  |  |  854|      0|		(node).constant = RT_CONSTANT(opline, node) - (op_array)->literals; \
  |  |  ------------------
  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  ------------------
  |  |  855|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (855:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1183|      0|		}
 1184|       |		/* reset smart branch flags IS_SMART_BRANCH_JMP[N]Z */
 1185|      1|		opline->result_type &= (IS_TMP_VAR|IS_VAR|IS_CV|IS_CONST);
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		opline->result_type &= (IS_TMP_VAR|IS_VAR|IS_CV|IS_CONST);
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		opline->result_type &= (IS_TMP_VAR|IS_VAR|IS_CV|IS_CONST);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		opline->result_type &= (IS_TMP_VAR|IS_VAR|IS_CV|IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
 1186|      1|		opline++;
 1187|      1|	}
 1188|      1|#if !ZEND_USE_ABS_CONST_ADDR
 1189|      1|	if (op_array->literals) {
  ------------------
  |  Branch (1189:6): [True: 1, False: 0]
  ------------------
 1190|      1|		zval *literals = emalloc(sizeof(zval) * op_array->last_literal);
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1191|      1|		memcpy(literals, op_array->literals, sizeof(zval) * op_array->last_literal);
 1192|      1|		op_array->literals = literals;
 1193|      1|	}
 1194|      1|#endif
 1195|       |
 1196|      1|	op_array->fn_flags &= ~ZEND_ACC_DONE_PASS_TWO;
  ------------------
  |  |  390|      1|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  ------------------
 1197|      1|}
zend_optimizer.c:zend_optimize:
 1053|      1|{
 1054|      1|	if (op_array->type == ZEND_EVAL_CODE) {
  ------------------
  |  Branch (1054:6): [True: 0, False: 1]
  ------------------
 1055|      0|		return;
 1056|      0|	}
 1057|       |
 1058|      1|	if (ctx->debug_level & ZEND_DUMP_BEFORE_OPTIMIZER) {
  ------------------
  |  |   67|      1|#define ZEND_DUMP_BEFORE_OPTIMIZER  (1<<16)
  ------------------
  |  Branch (1058:6): [True: 0, False: 1]
  ------------------
 1059|      0|		zend_dump_op_array(op_array, ZEND_DUMP_LIVE_RANGES, "before optimizer", NULL);
  ------------------
  |  |   29|      0|#define ZEND_DUMP_LIVE_RANGES          (1<<4)
  ------------------
 1060|      0|	}
 1061|       |
 1062|       |	/* pass 1 (Simple local optimizations)
 1063|       |	 * - persistent constant substitution (true, false, null, etc)
 1064|       |	 * - constant casting (ADD expects numbers, CONCAT strings, etc)
 1065|       |	 * - constant expression evaluation
 1066|       |	 * - optimize constant conditional JMPs
 1067|       |	 * - pre-evaluate constant function calls
 1068|       |	 * - eliminate FETCH $GLOBALS followed by FETCH_DIM/UNSET_DIM/ISSET_ISEMPTY_DIM
 1069|       |	 */
 1070|      1|	if (ZEND_OPTIMIZER_PASS_1 & ctx->optimization_level) {
  ------------------
  |  |   26|      1|#define ZEND_OPTIMIZER_PASS_1		(1<<0)   /* Simple local optimizations   */
  ------------------
  |  Branch (1070:6): [True: 1, False: 0]
  ------------------
 1071|      1|		zend_optimizer_pass1(op_array, ctx);
 1072|      1|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_1) {
  ------------------
  |  |   52|      1|#define ZEND_DUMP_AFTER_PASS_1		ZEND_OPTIMIZER_PASS_1
  |  |  ------------------
  |  |  |  |   26|      1|#define ZEND_OPTIMIZER_PASS_1		(1<<0)   /* Simple local optimizations   */
  |  |  ------------------
  ------------------
  |  Branch (1072:7): [True: 0, False: 1]
  ------------------
 1073|      0|			zend_dump_op_array(op_array, 0, "after pass 1", NULL);
 1074|      0|		}
 1075|      1|	}
 1076|       |
 1077|       |	/* pass 3: (Jump optimization)
 1078|       |	 * - optimize series of JMPs
 1079|       |	 */
 1080|      1|	if (ZEND_OPTIMIZER_PASS_3 & ctx->optimization_level) {
  ------------------
  |  |   28|      1|#define ZEND_OPTIMIZER_PASS_3		(1<<2)   /* Jump optimization            */
  ------------------
  |  Branch (1080:6): [True: 1, False: 0]
  ------------------
 1081|      1|		zend_optimizer_pass3(op_array, ctx);
 1082|      1|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_3) {
  ------------------
  |  |   54|      1|#define ZEND_DUMP_AFTER_PASS_3		ZEND_OPTIMIZER_PASS_3
  |  |  ------------------
  |  |  |  |   28|      1|#define ZEND_OPTIMIZER_PASS_3		(1<<2)   /* Jump optimization            */
  |  |  ------------------
  ------------------
  |  Branch (1082:7): [True: 0, False: 1]
  ------------------
 1083|      0|			zend_dump_op_array(op_array, 0, "after pass 3", NULL);
 1084|      0|		}
 1085|      1|	}
 1086|       |
 1087|       |	/* pass 4:
 1088|       |	 * - INIT_FCALL_BY_NAME -> DO_FCALL
 1089|       |	 */
 1090|      1|	if (ZEND_OPTIMIZER_PASS_4 & ctx->optimization_level) {
  ------------------
  |  |   29|      1|#define ZEND_OPTIMIZER_PASS_4		(1<<3)   /* INIT_FCALL_BY_NAME -> DO_FCALL */
  ------------------
  |  Branch (1090:6): [True: 1, False: 0]
  ------------------
 1091|      1|		zend_optimize_func_calls(op_array, ctx);
 1092|      1|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_4) {
  ------------------
  |  |   55|      1|#define ZEND_DUMP_AFTER_PASS_4		ZEND_OPTIMIZER_PASS_4
  |  |  ------------------
  |  |  |  |   29|      1|#define ZEND_OPTIMIZER_PASS_4		(1<<3)   /* INIT_FCALL_BY_NAME -> DO_FCALL */
  |  |  ------------------
  ------------------
  |  Branch (1092:7): [True: 0, False: 1]
  ------------------
 1093|      0|			zend_dump_op_array(op_array, 0, "after pass 4", NULL);
 1094|      0|		}
 1095|      1|	}
 1096|       |
 1097|       |	/* pass 5:
 1098|       |	 * - CFG optimization
 1099|       |	 */
 1100|      1|	if (ZEND_OPTIMIZER_PASS_5 & ctx->optimization_level) {
  ------------------
  |  |   30|      1|#define ZEND_OPTIMIZER_PASS_5		(1<<4)   /* CFG based optimization       */
  ------------------
  |  Branch (1100:6): [True: 1, False: 0]
  ------------------
 1101|      1|		zend_optimize_cfg(op_array, ctx);
 1102|      1|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_5) {
  ------------------
  |  |   56|      1|#define ZEND_DUMP_AFTER_PASS_5		ZEND_OPTIMIZER_PASS_5
  |  |  ------------------
  |  |  |  |   30|      1|#define ZEND_OPTIMIZER_PASS_5		(1<<4)   /* CFG based optimization       */
  |  |  ------------------
  ------------------
  |  Branch (1102:7): [True: 0, False: 1]
  ------------------
 1103|      0|			zend_dump_op_array(op_array, 0, "after pass 5", NULL);
 1104|      0|		}
 1105|      1|	}
 1106|       |
 1107|       |	/* pass 6:
 1108|       |	 * - DFA optimization
 1109|       |	 */
 1110|      1|	if ((ZEND_OPTIMIZER_PASS_6 & ctx->optimization_level) &&
  ------------------
  |  |   31|      1|#define ZEND_OPTIMIZER_PASS_6		(1<<5)   /* DFA based optimization       */
  ------------------
  |  Branch (1110:6): [True: 1, False: 0]
  ------------------
 1111|      1|	    !(ZEND_OPTIMIZER_PASS_7 & ctx->optimization_level)) {
  ------------------
  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1111:6): [True: 0, False: 1]
  ------------------
 1112|      0|		zend_optimize_dfa(op_array, ctx);
 1113|      0|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_6) {
  ------------------
  |  |   57|      0|#define ZEND_DUMP_AFTER_PASS_6		ZEND_OPTIMIZER_PASS_6
  |  |  ------------------
  |  |  |  |   31|      0|#define ZEND_OPTIMIZER_PASS_6		(1<<5)   /* DFA based optimization       */
  |  |  ------------------
  ------------------
  |  Branch (1113:7): [True: 0, False: 0]
  ------------------
 1114|      0|			zend_dump_op_array(op_array, 0, "after pass 6", NULL);
 1115|      0|		}
 1116|      0|	}
 1117|       |
 1118|       |	/* pass 9:
 1119|       |	 * - Optimize temp variables usage
 1120|       |	 */
 1121|      1|	if ((ZEND_OPTIMIZER_PASS_9 & ctx->optimization_level) &&
  ------------------
  |  |   34|      1|#define ZEND_OPTIMIZER_PASS_9		(1<<8)   /* TMP VAR usage                */
  ------------------
  |  Branch (1121:6): [True: 1, False: 0]
  ------------------
 1122|      1|	    !(ZEND_OPTIMIZER_PASS_7 & ctx->optimization_level)) {
  ------------------
  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1122:6): [True: 0, False: 1]
  ------------------
 1123|      0|		zend_optimize_temporary_variables(op_array, ctx);
 1124|      0|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_9) {
  ------------------
  |  |   60|      0|#define ZEND_DUMP_AFTER_PASS_9		ZEND_OPTIMIZER_PASS_9
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_OPTIMIZER_PASS_9		(1<<8)   /* TMP VAR usage                */
  |  |  ------------------
  ------------------
  |  Branch (1124:7): [True: 0, False: 0]
  ------------------
 1125|      0|			zend_dump_op_array(op_array, 0, "after pass 9", NULL);
 1126|      0|		}
 1127|      0|	}
 1128|       |
 1129|       |	/* pass 10:
 1130|       |	 * - remove NOPs
 1131|       |	 */
 1132|      1|	if (((ZEND_OPTIMIZER_PASS_10|ZEND_OPTIMIZER_PASS_5) & ctx->optimization_level) == ZEND_OPTIMIZER_PASS_10) {
  ------------------
  |  |   35|      1|#define ZEND_OPTIMIZER_PASS_10		(1<<9)   /* NOP removal                 */
  ------------------
              	if (((ZEND_OPTIMIZER_PASS_10|ZEND_OPTIMIZER_PASS_5) & ctx->optimization_level) == ZEND_OPTIMIZER_PASS_10) {
  ------------------
  |  |   30|      1|#define ZEND_OPTIMIZER_PASS_5		(1<<4)   /* CFG based optimization       */
  ------------------
              	if (((ZEND_OPTIMIZER_PASS_10|ZEND_OPTIMIZER_PASS_5) & ctx->optimization_level) == ZEND_OPTIMIZER_PASS_10) {
  ------------------
  |  |   35|      1|#define ZEND_OPTIMIZER_PASS_10		(1<<9)   /* NOP removal                 */
  ------------------
  |  Branch (1132:6): [True: 0, False: 1]
  ------------------
 1133|      0|		zend_optimizer_nop_removal(op_array, ctx);
 1134|      0|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_10) {
  ------------------
  |  |   61|      0|#define ZEND_DUMP_AFTER_PASS_10		ZEND_OPTIMIZER_PASS_10
  |  |  ------------------
  |  |  |  |   35|      0|#define ZEND_OPTIMIZER_PASS_10		(1<<9)   /* NOP removal                 */
  |  |  ------------------
  ------------------
  |  Branch (1134:7): [True: 0, False: 0]
  ------------------
 1135|      0|			zend_dump_op_array(op_array, 0, "after pass 10", NULL);
 1136|      0|		}
 1137|      0|	}
 1138|       |
 1139|       |	/* pass 11:
 1140|       |	 * - Compact literals table
 1141|       |	 */
 1142|      1|	if ((ZEND_OPTIMIZER_PASS_11 & ctx->optimization_level) &&
  ------------------
  |  |   36|      1|#define ZEND_OPTIMIZER_PASS_11		(1<<10)  /* Merge equal constants       */
  ------------------
  |  Branch (1142:6): [True: 1, False: 0]
  ------------------
 1143|      1|	    (!(ZEND_OPTIMIZER_PASS_6 & ctx->optimization_level) ||
  ------------------
  |  |   31|      1|#define ZEND_OPTIMIZER_PASS_6		(1<<5)   /* DFA based optimization       */
  ------------------
  |  Branch (1143:7): [True: 0, False: 1]
  ------------------
 1144|      1|	     !(ZEND_OPTIMIZER_PASS_7 & ctx->optimization_level))) {
  ------------------
  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1144:7): [True: 0, False: 1]
  ------------------
 1145|      0|		zend_optimizer_compact_literals(op_array, ctx);
 1146|      0|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_11) {
  ------------------
  |  |   62|      0|#define ZEND_DUMP_AFTER_PASS_11		ZEND_OPTIMIZER_PASS_11
  |  |  ------------------
  |  |  |  |   36|      0|#define ZEND_OPTIMIZER_PASS_11		(1<<10)  /* Merge equal constants       */
  |  |  ------------------
  ------------------
  |  Branch (1146:7): [True: 0, False: 0]
  ------------------
 1147|      0|			zend_dump_op_array(op_array, 0, "after pass 11", NULL);
 1148|      0|		}
 1149|      0|	}
 1150|       |
 1151|      1|	if ((ZEND_OPTIMIZER_PASS_13 & ctx->optimization_level) &&
  ------------------
  |  |   38|      1|#define ZEND_OPTIMIZER_PASS_13		(1<<12)  /* Remove unused variables     */
  ------------------
  |  Branch (1151:6): [True: 1, False: 0]
  ------------------
 1152|      1|	    (!(ZEND_OPTIMIZER_PASS_6 & ctx->optimization_level) ||
  ------------------
  |  |   31|      1|#define ZEND_OPTIMIZER_PASS_6		(1<<5)   /* DFA based optimization       */
  ------------------
  |  Branch (1152:7): [True: 0, False: 1]
  ------------------
 1153|      1|	     !(ZEND_OPTIMIZER_PASS_7 & ctx->optimization_level))) {
  ------------------
  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1153:7): [True: 0, False: 1]
  ------------------
 1154|      0|		zend_optimizer_compact_vars(op_array);
 1155|      0|		if (ctx->debug_level & ZEND_DUMP_AFTER_PASS_13) {
  ------------------
  |  |   64|      0|#define ZEND_DUMP_AFTER_PASS_13		ZEND_OPTIMIZER_PASS_13
  |  |  ------------------
  |  |  |  |   38|      0|#define ZEND_OPTIMIZER_PASS_13		(1<<12)  /* Remove unused variables     */
  |  |  ------------------
  ------------------
  |  Branch (1155:7): [True: 0, False: 0]
  ------------------
 1156|      0|			zend_dump_op_array(op_array, 0, "after pass 13", NULL);
 1157|      0|		}
 1158|      0|	}
 1159|       |
 1160|      1|	if (ZEND_OPTIMIZER_PASS_7 & ctx->optimization_level) {
  ------------------
  |  |   32|      1|#define ZEND_OPTIMIZER_PASS_7		(1<<6)   /* CALL GRAPH optimization      */
  ------------------
  |  Branch (1160:6): [True: 1, False: 0]
  ------------------
 1161|      1|		return;
 1162|      1|	}
 1163|       |
 1164|      0|	if (ctx->debug_level & ZEND_DUMP_AFTER_OPTIMIZER) {
  ------------------
  |  |   68|      0|#define ZEND_DUMP_AFTER_OPTIMIZER   (1<<17)
  ------------------
  |  Branch (1164:6): [True: 0, False: 0]
  ------------------
 1165|       |		zend_dump_op_array(op_array, 0, "after optimizer", NULL);
 1166|      0|	}
 1167|      0|}
zend_optimizer.c:zend_adjust_fcall_stack_size_graph:
 1489|      1|{
 1490|      1|	const zend_func_info *func_info = ZEND_FUNC_INFO(op_array);
  ------------------
  |  |   46|      1|	((zend_func_info*)((op_array)->reserved[zend_func_info_rid]))
  ------------------
 1491|       |
 1492|      1|	if (func_info) {
  ------------------
  |  Branch (1492:6): [True: 1, False: 0]
  ------------------
 1493|      1|		const zend_call_info *call_info =func_info->callee_info;
 1494|       |
 1495|      1|		while (call_info) {
  ------------------
  |  Branch (1495:10): [True: 0, False: 1]
  ------------------
 1496|      0|			zend_op *opline = call_info->caller_init_opline;
 1497|       |
 1498|      0|			if (opline && call_info->callee_func && opline->opcode == ZEND_INIT_FCALL) {
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (1498:8): [True: 0, False: 0]
  |  Branch (1498:18): [True: 0, False: 0]
  |  Branch (1498:44): [True: 0, False: 0]
  ------------------
 1499|      0|				ZEND_ASSERT(!call_info->is_prototype);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1499:5): [True: 0, False: 0]
  |  Branch (1499:5): [True: 0, False: 0]
  ------------------
 1500|      0|				opline->op1.num = zend_vm_calc_used_stack(opline->extended_value, call_info->callee_func);
 1501|      0|			}
 1502|      0|			call_info = call_info->next_callee;
 1503|      0|		}
 1504|      1|	}
 1505|      1|}
zend_optimizer.c:zend_redo_pass_two_ex:
 1310|      1|{
 1311|      1|	zend_op *opline, *end;
 1312|       |#if ZEND_USE_ABS_JMP_ADDR && !ZEND_USE_ABS_CONST_ADDR
 1313|       |	zend_op *old_opcodes = op_array->opcodes;
 1314|       |#endif
 1315|       |
 1316|      1|	ZEND_ASSERT((op_array->fn_flags & ZEND_ACC_DONE_PASS_TWO) == 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1316:2): [True: 0, False: 1]
  |  Branch (1316:2): [True: 1, False: 0]
  ------------------
 1317|       |
 1318|      1|#if !ZEND_USE_ABS_CONST_ADDR
 1319|      1|	if (op_array->last_literal) {
  ------------------
  |  Branch (1319:6): [True: 1, False: 0]
  ------------------
 1320|      1|		op_array->opcodes = (zend_op *) erealloc(op_array->opcodes,
  ------------------
  |  |  158|      1|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1321|      1|			ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op) * op_array->last, 16) +
 1322|      1|			sizeof(zval) * op_array->last_literal);
 1323|      1|		memcpy(((char*)op_array->opcodes) + ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op) * op_array->last, 16),
  ------------------
  |  |   37|      1|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 1324|      1|			op_array->literals, sizeof(zval) * op_array->last_literal);
 1325|      1|		efree(op_array->literals);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1326|      1|		op_array->literals = (zval*)(((char*)op_array->opcodes) + ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op) * op_array->last, 16));
  ------------------
  |  |   37|      1|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 1327|      1|	} else {
 1328|      0|		if (op_array->literals) {
  ------------------
  |  Branch (1328:7): [True: 0, False: 0]
  ------------------
 1329|      0|			efree(op_array->literals);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1330|      0|		}
 1331|      0|		op_array->literals = NULL;
 1332|      0|	}
 1333|      1|#endif
 1334|       |
 1335|      1|	opline = op_array->opcodes;
 1336|      1|	end = opline + op_array->last;
 1337|      2|	while (opline < end) {
  ------------------
  |  Branch (1337:9): [True: 1, False: 1]
  ------------------
 1338|      1|		const zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes];
 1339|      1|		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |  196|      1|#define OP1_INFO()           (_ssa_op1_info(op_array, ssa, opline, ssa_op))
  ------------------
              		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   23|      1|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   55|      1|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      1|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   65|      1|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      1|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      1|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      1|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      1|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
  |  Branch (1339:23): [True: 0, False: 1]
  ------------------
 1340|      1|		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |  197|      1|#define OP2_INFO()           (_ssa_op2_info(op_array, ssa, opline, ssa_op))
  ------------------
              		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   23|      1|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   35|      1|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   55|      1|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      1|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      1|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      1|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      1|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      1|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      1|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      1|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY));
  ------------------
  |  |   65|      1|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      1|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      1|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      1|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      1|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
  |  Branch (1340:23): [True: 0, False: 1]
  ------------------
 1341|      1|		uint32_t res_info =
 1342|      1|			(opline->opcode == ZEND_PRE_INC ||
  ------------------
  |  |  158|      2|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (1342:5): [True: 0, False: 1]
  ------------------
 1343|      1|			 opline->opcode == ZEND_PRE_DEC ||
  ------------------
  |  |  159|      2|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (1343:5): [True: 0, False: 1]
  ------------------
 1344|      1|			 opline->opcode == ZEND_POST_INC ||
  ------------------
  |  |  160|      2|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (1344:5): [True: 0, False: 1]
  ------------------
 1345|      1|			 opline->opcode == ZEND_POST_DEC) ?
  ------------------
  |  |  161|      1|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (1345:5): [True: 0, False: 1]
  ------------------
 1346|      0|				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |  201|      0|#define OP1_DEF_INFO()       (_ssa_op1_def_info(op_array, ssa, opline, ssa_op))
  ------------------
              				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
              				((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)) : MAY_BE_ANY) :
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1346:6): [True: 0, False: 0]
  ------------------
 1347|      1|				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |  205|      0|#define RES_INFO()           (_ssa_result_def_info(op_array, ssa, opline, ssa_op))
  ------------------
              				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |   55|      0|#define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_OF_ANY			(MAY_BE_ANY      << MAY_BE_ARRAY_SHIFT)
  |  |  ------------------
  |  |  |  |   44|      0|#define MAY_BE_ARRAY_SHIFT          (IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_KEY_ANY)));
  ------------------
  |  |   65|      0|#define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   63|      0|#define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|#define MAY_BE_ARRAY_PACKED         (1<<21)
  |  |  |  |  ------------------
  |  |  |  |               #define MAY_BE_ARRAY_KEY_LONG       (MAY_BE_ARRAY_PACKED | MAY_BE_ARRAY_NUMERIC_HASH)
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define MAY_BE_ARRAY_NUMERIC_HASH   (1<<22) /* hash with numeric keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   64|      0|#define MAY_BE_ARRAY_KEY_STRING     MAY_BE_ARRAY_STRING_HASH
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define MAY_BE_ARRAY_STRING_HASH    (1<<23) /* hash with string keys */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ARRAY_KEY_ANY        (MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_EMPTY)
  |  |  ------------------
  |  |  |  |   61|      0|#define MAY_BE_ARRAY_EMPTY          (1<<29)
  |  |  ------------------
  ------------------
  |  Branch (1347:6): [True: 1, False: 0]
  ------------------
 1348|       |
 1349|      1|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1349:7): [True: 1, False: 0]
  ------------------
 1350|      1|			ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op1);
  ------------------
  |  |  844|      1|# define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, node) do { \
  |  |  845|      1|		(node).constant = \
  |  |  846|      1|			(((char*)CT_CONSTANT_EX(op_array, (node).constant)) - \
  |  |  ------------------
  |  |  |  |  817|      1|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  847|      1|			((char*)opline)); \
  |  |  848|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (848:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1351|      1|		}
 1352|      1|		if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1352:7): [True: 0, False: 1]
  ------------------
 1353|      0|			ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op2);
  ------------------
  |  |  844|      0|# define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, node) do { \
  |  |  845|      0|		(node).constant = \
  |  |  846|      0|			(((char*)CT_CONSTANT_EX(op_array, (node).constant)) - \
  |  |  ------------------
  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  847|      0|			((char*)opline)); \
  |  |  848|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (848:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1354|      0|		}
 1355|       |
 1356|       |		/* fix jumps to point to new array */
 1357|      1|		switch (opline->opcode) {
  ------------------
  |  Branch (1357:11): [True: 0, False: 1]
  ------------------
 1358|       |#if ZEND_USE_ABS_JMP_ADDR && !ZEND_USE_ABS_CONST_ADDR
 1359|       |			case ZEND_JMP:
 1360|       |			case ZEND_FAST_CALL:
 1361|       |				opline->op1.jmp_addr = &op_array->opcodes[opline->op1.jmp_addr - old_opcodes];
 1362|       |				break;
 1363|       |			case ZEND_JMPZ:
 1364|       |			case ZEND_JMPNZ:
 1365|       |			case ZEND_JMPZ_EX:
 1366|       |			case ZEND_JMPNZ_EX:
 1367|       |			case ZEND_JMP_SET:
 1368|       |			case ZEND_COALESCE:
 1369|       |			case ZEND_FE_RESET_R:
 1370|       |			case ZEND_FE_RESET_RW:
 1371|       |			case ZEND_ASSERT_CHECK:
 1372|       |			case ZEND_JMP_NULL:
 1373|       |			case ZEND_BIND_INIT_STATIC_OR_JMP:
 1374|       |			case ZEND_JMP_FRAMELESS:
 1375|       |				opline->op2.jmp_addr = &op_array->opcodes[opline->op2.jmp_addr - old_opcodes];
 1376|       |				break;
 1377|       |			case ZEND_CATCH:
 1378|       |				if (!(opline->extended_value & ZEND_LAST_CATCH)) {
 1379|       |					opline->op2.jmp_addr = &op_array->opcodes[opline->op2.jmp_addr - old_opcodes];
 1380|       |				}
 1381|       |				break;
 1382|       |			case ZEND_FE_FETCH_R:
 1383|       |			case ZEND_FE_FETCH_RW:
 1384|       |			case ZEND_SWITCH_LONG:
 1385|       |			case ZEND_SWITCH_STRING:
 1386|       |			case ZEND_MATCH:
 1387|       |				/* relative extended_value don't have to be changed */
 1388|       |				break;
 1389|       |#endif
 1390|      0|			case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (1390:4): [True: 0, False: 1]
  ------------------
 1391|      0|			case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (1391:4): [True: 0, False: 1]
  ------------------
 1392|      0|			case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (1392:4): [True: 0, False: 1]
  ------------------
 1393|      0|			case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (1393:4): [True: 0, False: 1]
  ------------------
 1394|      0|			case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (1394:4): [True: 0, False: 1]
  ------------------
 1395|      0|			case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (1395:4): [True: 0, False: 1]
  ------------------
 1396|      0|			case ZEND_CASE:
  ------------------
  |  |  171|      0|#define ZEND_CASE                            48
  ------------------
  |  Branch (1396:4): [True: 0, False: 1]
  ------------------
 1397|      0|			case ZEND_CASE_STRICT:
  ------------------
  |  |  318|      0|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (1397:4): [True: 0, False: 1]
  ------------------
 1398|      0|			case ZEND_ISSET_ISEMPTY_CV:
  ------------------
  |  |  276|      0|#define ZEND_ISSET_ISEMPTY_CV               154
  ------------------
  |  Branch (1398:4): [True: 0, False: 1]
  ------------------
 1399|      0|			case ZEND_ISSET_ISEMPTY_VAR:
  ------------------
  |  |  236|      0|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
  |  Branch (1399:4): [True: 0, False: 1]
  ------------------
 1400|      0|			case ZEND_ISSET_ISEMPTY_DIM_OBJ:
  ------------------
  |  |  237|      0|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
  |  Branch (1400:4): [True: 0, False: 1]
  ------------------
 1401|      0|			case ZEND_ISSET_ISEMPTY_PROP_OBJ:
  ------------------
  |  |  270|      0|#define ZEND_ISSET_ISEMPTY_PROP_OBJ         148
  ------------------
  |  Branch (1401:4): [True: 0, False: 1]
  ------------------
 1402|      0|			case ZEND_ISSET_ISEMPTY_STATIC_PROP:
  ------------------
  |  |  302|      0|#define ZEND_ISSET_ISEMPTY_STATIC_PROP      180
  ------------------
  |  Branch (1402:4): [True: 0, False: 1]
  ------------------
 1403|      0|			case ZEND_INSTANCEOF:
  ------------------
  |  |  260|      0|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (1403:4): [True: 0, False: 1]
  ------------------
 1404|      0|			case ZEND_TYPE_CHECK:
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (1404:4): [True: 0, False: 1]
  ------------------
 1405|      0|			case ZEND_DEFINED:
  ------------------
  |  |  244|      0|#define ZEND_DEFINED                        122
  ------------------
  |  Branch (1405:4): [True: 0, False: 1]
  ------------------
 1406|      0|			case ZEND_IN_ARRAY:
  ------------------
  |  |  311|      0|#define ZEND_IN_ARRAY                       189
  ------------------
  |  Branch (1406:4): [True: 0, False: 1]
  ------------------
 1407|      0|			case ZEND_ARRAY_KEY_EXISTS:
  ------------------
  |  |  316|      0|#define ZEND_ARRAY_KEY_EXISTS               194
  ------------------
  |  Branch (1407:4): [True: 0, False: 1]
  ------------------
 1408|      0|				if (opline->result_type & IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1408:9): [True: 0, False: 0]
  ------------------
 1409|       |					/* reinitialize result_type of smart branch instructions */
 1410|      0|					if (opline + 1 < end) {
  ------------------
  |  Branch (1410:10): [True: 0, False: 0]
  ------------------
 1411|      0|						if ((opline+1)->opcode == ZEND_JMPZ
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (1411:11): [True: 0, False: 0]
  ------------------
 1412|      0|						 && (opline+1)->op1_type == IS_TMP_VAR
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1412:11): [True: 0, False: 0]
  ------------------
 1413|      0|						 && (opline+1)->op1.var == opline->result.var) {
  ------------------
  |  Branch (1413:11): [True: 0, False: 0]
  ------------------
 1414|      0|							opline->result_type = IS_SMART_BRANCH_JMPZ | IS_TMP_VAR;
  ------------------
  |  |  870|      0|#define IS_SMART_BRANCH_JMPZ  (1<<4)
  ------------------
              							opline->result_type = IS_SMART_BRANCH_JMPZ | IS_TMP_VAR;
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
 1415|      0|						} else if ((opline+1)->opcode == ZEND_JMPNZ
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (1415:18): [True: 0, False: 0]
  ------------------
 1416|      0|						 && (opline+1)->op1_type == IS_TMP_VAR
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1416:11): [True: 0, False: 0]
  ------------------
 1417|      0|						 && (opline+1)->op1.var == opline->result.var) {
  ------------------
  |  Branch (1417:11): [True: 0, False: 0]
  ------------------
 1418|      0|							opline->result_type = IS_SMART_BRANCH_JMPNZ | IS_TMP_VAR;
  ------------------
  |  |  871|      0|#define IS_SMART_BRANCH_JMPNZ (1<<5)
  ------------------
              							opline->result_type = IS_SMART_BRANCH_JMPNZ | IS_TMP_VAR;
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
 1419|      0|						}
 1420|      0|					}
 1421|      0|				}
 1422|      0|				break;
 1423|      1|		}
 1424|       |#ifdef ZEND_VERIFY_TYPE_INFERENCE
 1425|       |		if (ssa_op->op1_use >= 0) {
 1426|       |			opline->op1_use_type = ssa->var_info[ssa_op->op1_use].type;
 1427|       |		}
 1428|       |		if (ssa_op->op2_use >= 0) {
 1429|       |			opline->op2_use_type = ssa->var_info[ssa_op->op2_use].type;
 1430|       |		}
 1431|       |		if (ssa_op->result_use >= 0) {
 1432|       |			opline->result_use_type = ssa->var_info[ssa_op->result_use].type;
 1433|       |		}
 1434|       |		if (ssa_op->op1_def >= 0) {
 1435|       |			opline->op1_def_type = ssa->var_info[ssa_op->op1_def].type;
 1436|       |		}
 1437|       |		if (ssa_op->op2_def >= 0) {
 1438|       |			opline->op2_def_type = ssa->var_info[ssa_op->op2_def].type;
 1439|       |		}
 1440|       |		if (ssa_op->result_def >= 0) {
 1441|       |			opline->result_def_type = ssa->var_info[ssa_op->result_def].type;
 1442|       |		}
 1443|       |#endif
 1444|      1|		zend_vm_set_opcode_handler_ex(opline, op1_info, op2_info, res_info);
 1445|      1|		opline++;
 1446|      1|	}
 1447|       |
 1448|      1|	op_array->fn_flags |= ZEND_ACC_DONE_PASS_TWO;
  ------------------
  |  |  390|      1|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  ------------------
 1449|      1|}
zend_optimizer.c:zend_optimizer_call_registered_passes:
 1587|      1|static void zend_optimizer_call_registered_passes(zend_script *script, void *ctx) {
 1588|      1|	for (int i = 0; i < zend_optimizer_registered_passes.last; i++) {
  ------------------
  |  Branch (1588:18): [True: 0, False: 1]
  ------------------
 1589|      0|		if (!zend_optimizer_registered_passes.pass[i]) {
  ------------------
  |  Branch (1589:7): [True: 0, False: 0]
  ------------------
 1590|      0|			continue;
 1591|      0|		}
 1592|       |
 1593|      0|		zend_optimizer_registered_passes.pass[i](script, ctx);
 1594|      0|	}
 1595|      1|}

zend_build_ssa:
  995|      1|{
  996|      1|	const zend_basic_block *blocks = ssa->cfg.blocks;
  997|      1|	zend_ssa_block *ssa_blocks;
  998|      1|	uint32_t blocks_count = ssa->cfg.blocks_count;
  999|      1|	uint32_t set_size;
 1000|      1|	zend_bitset def, in, phi;
 1001|      1|	int *var = NULL;
 1002|      1|	int i, j, changed;
 1003|      1|	zend_dfg dfg;
 1004|      1|	ALLOCA_FLAG(dfg_use_heap)
 1005|      1|	ALLOCA_FLAG(var_use_heap)
 1006|       |
 1007|      1|	if ((blocks_count * (op_array->last_var + op_array->T)) > 4 * 1024 * 1024) {
  ------------------
  |  Branch (1007:6): [True: 0, False: 1]
  ------------------
 1008|       |	    /* Don't build SSA for very big functions */
 1009|      0|		return FAILURE;
 1010|      0|	}
 1011|       |
 1012|      1|	ssa_blocks = zend_arena_calloc(arena, blocks_count, sizeof(zend_ssa_block));
 1013|      1|	ssa->blocks = ssa_blocks;
 1014|       |
 1015|       |	/* Compute Variable Liveness */
 1016|      1|	dfg.vars = op_array->last_var + op_array->T;
 1017|      1|	dfg.size = set_size = zend_bitset_len(dfg.vars);
 1018|      1|	dfg.tmp = do_alloca((set_size * sizeof(zend_ulong)) * (blocks_count * 4 + 1), dfg_use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1019|      1|	memset(dfg.tmp, 0, (set_size * sizeof(zend_ulong)) * (blocks_count * 4 + 1));
 1020|      1|	dfg.def = dfg.tmp + set_size;
 1021|      1|	dfg.use = dfg.def + set_size * blocks_count;
 1022|      1|	dfg.in  = dfg.use + set_size * blocks_count;
 1023|      1|	dfg.out = dfg.in  + set_size * blocks_count;
 1024|       |
 1025|      1|	zend_build_dfg(op_array, &ssa->cfg, &dfg, build_flags);
 1026|       |
 1027|      1|	if (build_flags & ZEND_SSA_DEBUG_LIVENESS) {
  ------------------
  |  |   93|      1|#define ZEND_SSA_DEBUG_LIVENESS        (1<<29)
  ------------------
  |  Branch (1027:6): [True: 0, False: 1]
  ------------------
 1028|      0|		zend_dump_dfg(op_array, &ssa->cfg, &dfg);
 1029|      0|	}
 1030|       |
 1031|      1|	def = dfg.def;
 1032|      1|	in  = dfg.in;
 1033|       |
 1034|       |	/* Reuse the "use" set, as we no longer need it */
 1035|      1|	phi = dfg.use;
 1036|      1|	zend_bitset_clear(phi, set_size * blocks_count);
 1037|       |
 1038|       |	/* Place e-SSA pis. This will add additional "def" points, so it must
 1039|       |	 * happen before def propagation. */
 1040|      1|	place_essa_pis(arena, script, op_array, build_flags, ssa, &dfg);
 1041|       |
 1042|       |	/* SSA construction, Step 1: Propagate "def" sets in merge points */
 1043|      1|	do {
 1044|      1|		changed = 0;
 1045|      2|		for (j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (1045:15): [True: 1, False: 1]
  ------------------
 1046|      1|			zend_bitset def_j = def + j * set_size, phi_j = phi + j * set_size;
 1047|      1|			if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1047:8): [True: 0, False: 1]
  ------------------
 1048|      0|				continue;
 1049|      0|			}
 1050|      1|			if (blocks[j].predecessors_count > 1) {
  ------------------
  |  Branch (1050:8): [True: 0, False: 1]
  ------------------
 1051|      0|				if (blocks[j].flags & ZEND_BB_IRREDUCIBLE_LOOP) {
  ------------------
  |  |   34|      0|#define ZEND_BB_IRREDUCIBLE_LOOP (1<<17)
  ------------------
  |  Branch (1051:9): [True: 0, False: 0]
  ------------------
 1052|       |					/* Prevent any values from flowing into irreducible loops by
 1053|       |					   replacing all incoming values with explicit phis.  The
 1054|       |					   register allocator depends on this property.  */
 1055|      0|					zend_bitset_union(phi_j, in + (j * set_size), set_size);
 1056|      0|				} else {
 1057|      0|					for (uint32_t k = 0; k < blocks[j].predecessors_count; k++) {
  ------------------
  |  Branch (1057:27): [True: 0, False: 0]
  ------------------
 1058|      0|						i = ssa->cfg.predecessors[blocks[j].predecessor_offset + k];
 1059|      0|						while (i != -1 && i != blocks[j].idom) {
  ------------------
  |  Branch (1059:14): [True: 0, False: 0]
  |  Branch (1059:25): [True: 0, False: 0]
  ------------------
 1060|      0|							zend_bitset_union_with_intersection(
 1061|      0|								phi_j, phi_j, def + (i * set_size), in + (j * set_size), set_size);
 1062|      0|							i = blocks[i].idom;
 1063|      0|						}
 1064|      0|					}
 1065|      0|				}
 1066|      0|				if (!zend_bitset_subset(phi_j, def_j, set_size)) {
  ------------------
  |  Branch (1066:9): [True: 0, False: 0]
  ------------------
 1067|      0|					zend_bitset_union(def_j, phi_j, set_size);
 1068|      0|					changed = 1;
 1069|      0|				}
 1070|      0|			}
 1071|      1|		}
 1072|      1|	} while (changed);
  ------------------
  |  Branch (1072:11): [True: 0, False: 1]
  ------------------
 1073|       |
 1074|       |	/* SSA construction, Step 2: Phi placement based on Dominance Frontiers */
 1075|      1|	var = do_alloca(sizeof(int) * (op_array->last_var + op_array->T), var_use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1076|      1|	if (!var) {
  ------------------
  |  Branch (1076:6): [True: 0, False: 1]
  ------------------
 1077|      0|		free_alloca(dfg.tmp, dfg_use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1078|      0|		return FAILURE;
 1079|      0|	}
 1080|       |
 1081|      2|	for (j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (1081:14): [True: 1, False: 1]
  ------------------
 1082|      1|		if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (1082:7): [True: 0, False: 1]
  ------------------
 1083|      0|			continue;
 1084|      0|		}
 1085|      1|		if (!zend_bitset_empty(phi + j * set_size, set_size)) {
  ------------------
  |  Branch (1085:7): [True: 0, False: 1]
  ------------------
 1086|      0|			ZEND_BITSET_REVERSE_FOREACH(phi + j * set_size, set_size, i) {
  ------------------
  |  |  272|      0|#define ZEND_BITSET_REVERSE_FOREACH(set, len, bit) do { \
  |  |  273|      0|	zend_bitset _set = (set); \
  |  |  274|      0|	uint32_t _i = (len); \
  |  |  275|      0|	zend_ulong _test = Z_UL(1) << (ZEND_BITSET_ELM_SIZE * 8 - 1); \
  |  |  ------------------
  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  |  |               	zend_ulong _test = Z_UL(1) << (ZEND_BITSET_ELM_SIZE * 8 - 1); \
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  ------------------
  |  |  276|      0|	while (_i-- > 0) { \
  |  |  ------------------
  |  |  |  Branch (276:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  277|      0|		zend_ulong _x = _set[_i]; \
  |  |  278|      0|		if (_x) { \
  |  |  ------------------
  |  |  |  Branch (278:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  279|      0|			(bit) = ZEND_BITSET_ELM_SIZE * 8 * (_i + 1) - 1; \
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  |  |  ------------------
  |  |  280|      0|			for (; _x != 0; _x <<= Z_UL(1), (bit)--) { \
  |  |  ------------------
  |  |  |  |   38|      0|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  |  |  |  Branch (280:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  281|      0|				if (!(_x & _test)) continue; \
  |  |  ------------------
  |  |  |  Branch (281:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1087|      0|				zend_ssa_phi *phi = zend_arena_calloc(arena, 1,
 1088|      0|					ZEND_MM_ALIGNED_SIZE(sizeof(zend_ssa_phi)) +
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|      0|					ZEND_MM_ALIGNED_SIZE(sizeof(int) * blocks[j].predecessors_count) +
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1090|      0|					sizeof(void*) * blocks[j].predecessors_count);
 1091|       |
 1092|      0|				phi->sources = (int*)(((char*)phi) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_ssa_phi)));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1093|      0|				memset(phi->sources, 0xff, sizeof(int) * blocks[j].predecessors_count);
 1094|      0|				phi->use_chains = (zend_ssa_phi**)(((char*)phi->sources) + ZEND_MM_ALIGNED_SIZE(sizeof(int) * ssa->cfg.blocks[j].predecessors_count));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1095|       |
 1096|      0|				phi->pi = -1;
 1097|      0|				phi->var = i;
 1098|      0|				phi->ssa_var = -1;
 1099|       |
 1100|       |				/* Place phis after pis */
 1101|      0|				{
 1102|      0|					zend_ssa_phi **pp = &ssa_blocks[j].phis;
 1103|      0|					while (*pp) {
  ------------------
  |  Branch (1103:13): [True: 0, False: 0]
  ------------------
 1104|      0|						if ((*pp)->pi < 0) {
  ------------------
  |  Branch (1104:11): [True: 0, False: 0]
  ------------------
 1105|      0|							break;
 1106|      0|						}
 1107|      0|						pp = &(*pp)->next;
 1108|      0|					}
 1109|      0|					phi->next = *pp;
 1110|      0|					*pp = phi;
 1111|      0|				}
 1112|      0|			} ZEND_BITSET_FOREACH_END();
  ------------------
  |  |  284|      0|			} \
  |  |  285|      0|		} \
  |  |  286|      0|	} \
  |  |  287|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (287:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1113|      0|		}
 1114|      1|	}
 1115|       |
 1116|      1|	if (build_flags & ZEND_SSA_DEBUG_PHI_PLACEMENT) {
  ------------------
  |  |   94|      1|#define ZEND_SSA_DEBUG_PHI_PLACEMENT   (1<<28)
  ------------------
  |  Branch (1116:6): [True: 0, False: 1]
  ------------------
 1117|      0|		zend_dump_phi_placement(op_array, ssa);
 1118|      0|	}
 1119|       |
 1120|       |	/* SSA construction, Step 3: Renaming */
 1121|      1|	ssa->ops = zend_arena_calloc(arena, op_array->last, sizeof(zend_ssa_op));
 1122|      1|	memset(ssa->ops, 0xff, op_array->last * sizeof(zend_ssa_op));
 1123|      1|	memset(var + op_array->last_var, 0xff, op_array->T * sizeof(int));
 1124|       |	/* Create uninitialized SSA variables for each CV */
 1125|      1|	for (j = 0; j < op_array->last_var; j++) {
  ------------------
  |  Branch (1125:14): [True: 0, False: 1]
  ------------------
 1126|      0|		var[j] = j;
 1127|      0|	}
 1128|      1|	ssa->vars_count = op_array->last_var;
 1129|      1|	if (zend_ssa_rename(op_array, build_flags, ssa, var, 0) == FAILURE) {
  ------------------
  |  Branch (1129:6): [True: 0, False: 1]
  ------------------
 1130|      0|		free_alloca(var, var_use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1131|      0|		free_alloca(dfg.tmp, dfg_use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1132|      0|		return FAILURE;
 1133|      0|	}
 1134|       |
 1135|      1|	free_alloca(var, var_use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1136|      1|	free_alloca(dfg.tmp, dfg_use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1137|       |
 1138|      1|	return SUCCESS;
 1139|      1|}
zend_ssa_compute_use_def_chains:
 1143|      1|{
 1144|      1|	zend_ssa_var *ssa_vars;
 1145|      1|	int i;
 1146|       |
 1147|      1|	if (!ssa->vars) {
  ------------------
  |  Branch (1147:6): [True: 1, False: 0]
  ------------------
 1148|      1|		ssa->vars = zend_arena_calloc(arena, ssa->vars_count, sizeof(zend_ssa_var));
 1149|      1|	}
 1150|      1|	ssa_vars = ssa->vars;
 1151|       |
 1152|      1|	for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (1152:14): [True: 0, False: 1]
  ------------------
 1153|      0|		ssa_vars[i].var = i;
 1154|      0|		ssa_vars[i].scc = -1;
 1155|      0|		ssa_vars[i].definition = -1;
 1156|      0|		ssa_vars[i].use_chain = -1;
 1157|      0|	}
 1158|      1|	for (i = op_array->last_var; i < ssa->vars_count; i++) {
  ------------------
  |  Branch (1158:31): [True: 0, False: 1]
  ------------------
 1159|      0|		ssa_vars[i].var = -1;
 1160|      0|		ssa_vars[i].scc = -1;
 1161|      0|		ssa_vars[i].definition = -1;
 1162|      0|		ssa_vars[i].use_chain = -1;
 1163|      0|	}
 1164|       |
 1165|      2|	for (i = op_array->last - 1; i >= 0; i--) {
  ------------------
  |  Branch (1165:31): [True: 1, False: 1]
  ------------------
 1166|      1|		zend_ssa_op *op = ssa->ops + i;
 1167|       |
 1168|      1|		if (op->op1_use >= 0) {
  ------------------
  |  Branch (1168:7): [True: 0, False: 1]
  ------------------
 1169|      0|			op->op1_use_chain = ssa_vars[op->op1_use].use_chain;
 1170|      0|			ssa_vars[op->op1_use].use_chain = i;
 1171|      0|		}
 1172|      1|		if (op->op2_use >= 0 && op->op2_use != op->op1_use) {
  ------------------
  |  Branch (1172:7): [True: 0, False: 1]
  |  Branch (1172:27): [True: 0, False: 0]
  ------------------
 1173|      0|			op->op2_use_chain = ssa_vars[op->op2_use].use_chain;
 1174|      0|			ssa_vars[op->op2_use].use_chain = i;
 1175|      0|		}
 1176|      1|		if (op->result_use >= 0 && op->result_use != op->op1_use && op->result_use != op->op2_use) {
  ------------------
  |  Branch (1176:7): [True: 0, False: 1]
  |  Branch (1176:30): [True: 0, False: 0]
  |  Branch (1176:63): [True: 0, False: 0]
  ------------------
 1177|      0|			op->res_use_chain = ssa_vars[op->result_use].use_chain;
 1178|      0|			ssa_vars[op->result_use].use_chain = i;
 1179|      0|		}
 1180|      1|		if (op->op1_def >= 0) {
  ------------------
  |  Branch (1180:7): [True: 0, False: 1]
  ------------------
 1181|      0|			ssa_vars[op->op1_def].var = EX_VAR_TO_NUM(op_array->opcodes[i].op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1182|      0|			ssa_vars[op->op1_def].definition = i;
 1183|      0|		}
 1184|      1|		if (op->op2_def >= 0) {
  ------------------
  |  Branch (1184:7): [True: 0, False: 1]
  ------------------
 1185|      0|			ssa_vars[op->op2_def].var = EX_VAR_TO_NUM(op_array->opcodes[i].op2.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1186|      0|			ssa_vars[op->op2_def].definition = i;
 1187|      0|		}
 1188|      1|		if (op->result_def >= 0) {
  ------------------
  |  Branch (1188:7): [True: 0, False: 1]
  ------------------
 1189|      0|			ssa_vars[op->result_def].var = EX_VAR_TO_NUM(op_array->opcodes[i].result.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1190|      0|			ssa_vars[op->result_def].definition = i;
 1191|      0|		}
 1192|      1|	}
 1193|       |
 1194|      2|	for (i = 0; i < ssa->cfg.blocks_count; i++) {
  ------------------
  |  Branch (1194:14): [True: 1, False: 1]
  ------------------
 1195|      1|		zend_ssa_phi *phi = ssa->blocks[i].phis;
 1196|      1|		while (phi) {
  ------------------
  |  Branch (1196:10): [True: 0, False: 1]
  ------------------
 1197|      0|			phi->block = i;
 1198|      0|			ssa_vars[phi->ssa_var].var = phi->var;
 1199|      0|			ssa_vars[phi->ssa_var].definition_phi = phi;
 1200|      0|			if (phi->pi >= 0) {
  ------------------
  |  Branch (1200:8): [True: 0, False: 0]
  ------------------
 1201|      0|				zend_ssa_phi *p;
 1202|       |
 1203|      0|				ZEND_ASSERT(phi->sources[0] >= 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1203:5): [True: 0, False: 0]
  |  Branch (1203:5): [True: 0, False: 0]
  ------------------
 1204|      0|				p = ssa_vars[phi->sources[0]].phi_use_chain;
 1205|      0|				while (p && p != phi) {
  ------------------
  |  Branch (1205:12): [True: 0, False: 0]
  |  Branch (1205:17): [True: 0, False: 0]
  ------------------
 1206|      0|					p = zend_ssa_next_use_phi(ssa, phi->sources[0], p);
 1207|      0|				}
 1208|      0|				if (!p) {
  ------------------
  |  Branch (1208:9): [True: 0, False: 0]
  ------------------
 1209|      0|					phi->use_chains[0] = ssa_vars[phi->sources[0]].phi_use_chain;
 1210|      0|					ssa_vars[phi->sources[0]].phi_use_chain = phi;
 1211|      0|				}
 1212|      0|				if (phi->has_range_constraint) {
  ------------------
  |  Branch (1212:9): [True: 0, False: 0]
  ------------------
 1213|       |					/* min and max variables can't be used together */
 1214|      0|					zend_ssa_range_constraint *constraint = &phi->constraint.range;
 1215|      0|					if (constraint->min_ssa_var >= 0) {
  ------------------
  |  Branch (1215:10): [True: 0, False: 0]
  ------------------
 1216|      0|						phi->sym_use_chain = ssa_vars[constraint->min_ssa_var].sym_use_chain;
 1217|      0|						ssa_vars[constraint->min_ssa_var].sym_use_chain = phi;
 1218|      0|					} else if (constraint->max_ssa_var >= 0) {
  ------------------
  |  Branch (1218:17): [True: 0, False: 0]
  ------------------
 1219|      0|						phi->sym_use_chain = ssa_vars[constraint->max_ssa_var].sym_use_chain;
 1220|      0|						ssa_vars[constraint->max_ssa_var].sym_use_chain = phi;
 1221|      0|					}
 1222|      0|				}
 1223|      0|			} else {
 1224|      0|				for (uint32_t j = 0; j < ssa->cfg.blocks[i].predecessors_count; j++) {
  ------------------
  |  Branch (1224:26): [True: 0, False: 0]
  ------------------
 1225|      0|					zend_ssa_phi *p;
 1226|       |
 1227|      0|					ZEND_ASSERT(phi->sources[j] >= 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1227:6): [True: 0, False: 0]
  |  Branch (1227:6): [True: 0, False: 0]
  ------------------
 1228|      0|					p = ssa_vars[phi->sources[j]].phi_use_chain;
 1229|      0|					while (p && p != phi) {
  ------------------
  |  Branch (1229:13): [True: 0, False: 0]
  |  Branch (1229:18): [True: 0, False: 0]
  ------------------
 1230|      0|						p = zend_ssa_next_use_phi(ssa, phi->sources[j], p);
 1231|      0|					}
 1232|      0|					if (!p) {
  ------------------
  |  Branch (1232:10): [True: 0, False: 0]
  ------------------
 1233|      0|						phi->use_chains[j] = ssa_vars[phi->sources[j]].phi_use_chain;
 1234|      0|						ssa_vars[phi->sources[j]].phi_use_chain = phi;
 1235|      0|					}
 1236|      0|				}
 1237|      0|			}
 1238|      0|			phi = phi->next;
 1239|      0|		}
 1240|      1|	}
 1241|       |
 1242|       |	/* Mark indirectly accessed variables */
 1243|      1|	for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (1243:14): [True: 0, False: 1]
  ------------------
 1244|      0|		if ((ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS)) {
  ------------------
  |  |   23|      0|#define ZEND_FUNC_INDIRECT_VAR_ACCESS      (1<<0)  /* accesses variables by name  */
  ------------------
  |  Branch (1244:7): [True: 0, False: 0]
  ------------------
 1245|      0|			ssa_vars[i].alias = SYMTABLE_ALIAS;
 1246|      0|		} else if (zend_string_equals_literal(op_array->vars[i], "http_response_header")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1247|      0|			ssa_vars[i].alias = HTTP_RESPONSE_HEADER_ALIAS;
 1248|      0|		}
 1249|      0|	}
 1250|      1|	for (i = op_array->last_var; i < ssa->vars_count; i++) {
  ------------------
  |  Branch (1250:31): [True: 0, False: 1]
  ------------------
 1251|      0|		if (ssa_vars[i].var < op_array->last_var) {
  ------------------
  |  Branch (1251:7): [True: 0, False: 0]
  ------------------
 1252|      0|			ssa_vars[i].alias = ssa_vars[ssa_vars[i].var].alias;
 1253|      0|		}
 1254|      0|	}
 1255|      1|}
zend_ssa.c:_zend_ssa_rename_op:
  542|      1|{
  543|      1|	const zend_op *next;
  544|       |
  545|      1|	if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (545:6): [True: 0, False: 1]
  ------------------
  546|      0|		ssa_ops[k].op1_use = var[EX_VAR_TO_NUM(opline->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  547|       |		//USE_SSA_VAR(op_array->last_var + opline->op1.var)
  548|      0|	}
  549|      1|	if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (549:6): [True: 0, False: 1]
  ------------------
  550|      0|		ssa_ops[k].op2_use = var[EX_VAR_TO_NUM(opline->op2.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  551|       |		//USE_SSA_VAR(op_array->last_var + opline->op2.var)
  552|      0|	}
  553|      1|	if ((build_flags & ZEND_SSA_USE_CV_RESULTS)
  ------------------
  |  |   99|      1|#define ZEND_SSA_USE_CV_RESULTS        (1<<22)
  ------------------
  |  Branch (553:6): [True: 0, False: 1]
  ------------------
  554|      0|	 && opline->result_type == IS_CV
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (554:6): [True: 0, False: 0]
  ------------------
  555|      0|	 && opline->opcode != ZEND_RECV) {
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (555:6): [True: 0, False: 0]
  ------------------
  556|      0|		ssa_ops[k].result_use = var[EX_VAR_TO_NUM(opline->result.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  557|       |		//USE_SSA_VAR(op_array->last_var + opline->result.var)
  558|      0|	}
  559|       |
  560|      1|	switch (opline->opcode) {
  561|      0|		case ZEND_ASSIGN:
  ------------------
  |  |  146|      0|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (561:3): [True: 0, False: 1]
  ------------------
  562|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op2_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (562:8): [True: 0, False: 0]
  |  Branch (562:49): [True: 0, False: 0]
  ------------------
  563|      0|				ssa_ops[k].op2_def = ssa_vars_count;
  564|      0|				var[EX_VAR_TO_NUM(opline->op2.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  565|      0|				ssa_vars_count++;
  566|       |				//NEW_SSA_VAR(opline->op2.var)
  567|      0|			}
  568|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (568:8): [True: 0, False: 0]
  ------------------
  569|      0|add_op1_def:
  570|      0|				ssa_ops[k].op1_def = ssa_vars_count;
  571|      0|				var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  572|      0|				ssa_vars_count++;
  573|       |				//NEW_SSA_VAR(opline->op1.var)
  574|      0|			}
  575|      0|			break;
  576|      0|		case ZEND_ASSIGN_REF:
  ------------------
  |  |  154|      0|#define ZEND_ASSIGN_REF                      30
  ------------------
  |  Branch (576:3): [True: 0, False: 1]
  ------------------
  577|      0|			if (opline->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (577:8): [True: 0, False: 0]
  ------------------
  578|      0|				ssa_ops[k].op2_def = ssa_vars_count;
  579|      0|				var[EX_VAR_TO_NUM(opline->op2.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  580|      0|				ssa_vars_count++;
  581|       |				//NEW_SSA_VAR(opline->op2.var)
  582|      0|			}
  583|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (583:8): [True: 0, False: 0]
  ------------------
  584|      0|				goto add_op1_def;
  585|      0|			}
  586|      0|			break;
  587|      0|		case ZEND_ASSIGN_DIM:
  ------------------
  |  |  147|      0|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (587:3): [True: 0, False: 1]
  ------------------
  588|      0|		case ZEND_ASSIGN_OBJ:
  ------------------
  |  |  148|      0|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (588:3): [True: 0, False: 1]
  ------------------
  589|      0|			next = opline + 1;
  590|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (590:8): [True: 0, False: 0]
  ------------------
  591|      0|				ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  592|       |				//USE_SSA_VAR(op_array->last_var + next->op1.var);
  593|      0|				if (build_flags & ZEND_SSA_RC_INFERENCE && next->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              				if (build_flags & ZEND_SSA_RC_INFERENCE && next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (593:9): [True: 0, False: 0]
  |  Branch (593:48): [True: 0, False: 0]
  ------------------
  594|      0|					ssa_ops[k + 1].op1_def = ssa_vars_count;
  595|      0|					var[EX_VAR_TO_NUM(next->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  596|      0|					ssa_vars_count++;
  597|       |					//NEW_SSA_VAR(next->op1.var)
  598|      0|				}
  599|      0|			}
  600|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (600:8): [True: 0, False: 0]
  ------------------
  601|      0|				ssa_ops[k].op1_def = ssa_vars_count;
  602|      0|				var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  603|      0|				ssa_vars_count++;
  604|       |				//NEW_SSA_VAR(opline->op1.var)
  605|      0|			}
  606|      0|			break;
  607|      0|		case ZEND_ASSIGN_OBJ_REF:
  ------------------
  |  |  156|      0|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (607:3): [True: 0, False: 1]
  ------------------
  608|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (608:8): [True: 0, False: 0]
  |  Branch (608:49): [True: 0, False: 0]
  ------------------
  609|      0|				ssa_ops[k].op1_def = ssa_vars_count;
  610|      0|				var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  611|      0|				ssa_vars_count++;
  612|       |				//NEW_SSA_VAR(opline->op1.var)
  613|      0|			}
  614|      0|			next = opline + 1;
  615|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (615:8): [True: 0, False: 0]
  ------------------
  616|      0|				ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  617|       |				//USE_SSA_VAR(op_array->last_var + next->op1.var);
  618|      0|				if (next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (618:9): [True: 0, False: 0]
  ------------------
  619|      0|					ssa_ops[k + 1].op1_def = ssa_vars_count;
  620|      0|					var[EX_VAR_TO_NUM(next->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  621|      0|					ssa_vars_count++;
  622|       |					//NEW_SSA_VAR(next->op1.var)
  623|      0|				}
  624|      0|			}
  625|      0|			break;
  626|      0|		case ZEND_ASSIGN_STATIC_PROP:
  ------------------
  |  |  149|      0|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
  |  Branch (626:3): [True: 0, False: 1]
  ------------------
  627|      0|			next = opline + 1;
  628|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (628:8): [True: 0, False: 0]
  ------------------
  629|      0|				ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  630|       |				//USE_SSA_VAR(op_array->last_var + next->op1.var);
  631|      0|				if ((build_flags & ZEND_SSA_RC_INFERENCE) && next->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              				if ((build_flags & ZEND_SSA_RC_INFERENCE) && next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (631:9): [True: 0, False: 0]
  |  Branch (631:50): [True: 0, False: 0]
  ------------------
  632|      0|					ssa_ops[k + 1].op1_def = ssa_vars_count;
  633|      0|					var[EX_VAR_TO_NUM(next->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  634|      0|					ssa_vars_count++;
  635|       |					//NEW_SSA_VAR(next->op1.var)
  636|      0|				}
  637|      0|			}
  638|      0|			break;
  639|      0|		case ZEND_ASSIGN_STATIC_PROP_REF:
  ------------------
  |  |  157|      0|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
  |  Branch (639:3): [True: 0, False: 1]
  ------------------
  640|      0|			next = opline + 1;
  641|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (641:8): [True: 0, False: 0]
  ------------------
  642|      0|				ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  643|       |				//USE_SSA_VAR(op_array->last_var + next->op1.var);
  644|      0|				if (next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (644:9): [True: 0, False: 0]
  ------------------
  645|      0|					ssa_ops[k + 1].op1_def = ssa_vars_count;
  646|      0|					var[EX_VAR_TO_NUM(next->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  647|      0|					ssa_vars_count++;
  648|       |					//NEW_SSA_VAR(next->op1.var)
  649|      0|				}
  650|      0|			}
  651|      0|			break;
  652|      0|		case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|      0|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (652:3): [True: 0, False: 1]
  ------------------
  653|      0|			next = opline + 1;
  654|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (654:8): [True: 0, False: 0]
  ------------------
  655|      0|				ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  656|       |				//USE_SSA_VAR(op_array->last_var + next->op1.var);
  657|      0|			}
  658|      0|			break;
  659|      0|		case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (659:3): [True: 0, False: 1]
  ------------------
  660|      0|		case ZEND_ASSIGN_OBJ_OP:
  ------------------
  |  |  152|      0|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (660:3): [True: 0, False: 1]
  ------------------
  661|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (661:8): [True: 0, False: 0]
  ------------------
  662|      0|				ssa_ops[k].op1_def = ssa_vars_count;
  663|      0|				var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  664|      0|				ssa_vars_count++;
  665|       |				//NEW_SSA_VAR(opline->op1.var)
  666|      0|			}
  667|      0|			next = opline + 1;
  668|      0|			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (668:8): [True: 0, False: 0]
  ------------------
  669|      0|				ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  670|       |				//USE_SSA_VAR(op_array->last_var + next->op1.var);
  671|      0|			}
  672|      0|			break;
  673|      0|		case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|      0|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (673:3): [True: 0, False: 1]
  ------------------
  674|      0|		case ZEND_PRE_INC:
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (674:3): [True: 0, False: 1]
  ------------------
  675|      0|		case ZEND_PRE_DEC:
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (675:3): [True: 0, False: 1]
  ------------------
  676|      0|		case ZEND_POST_INC:
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (676:3): [True: 0, False: 1]
  ------------------
  677|      0|		case ZEND_POST_DEC:
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (677:3): [True: 0, False: 1]
  ------------------
  678|      0|		case ZEND_BIND_GLOBAL:
  ------------------
  |  |  290|      0|#define ZEND_BIND_GLOBAL                    168
  ------------------
  |  Branch (678:3): [True: 0, False: 1]
  ------------------
  679|      0|		case ZEND_BIND_STATIC:
  ------------------
  |  |  305|      0|#define ZEND_BIND_STATIC                    183
  ------------------
  |  Branch (679:3): [True: 0, False: 1]
  ------------------
  680|      0|		case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|      0|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (680:3): [True: 0, False: 1]
  ------------------
  681|      0|		case ZEND_SEND_VAR_NO_REF:
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  |  Branch (681:3): [True: 0, False: 1]
  ------------------
  682|      0|		case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|      0|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (682:3): [True: 0, False: 1]
  ------------------
  683|      0|		case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (683:3): [True: 0, False: 1]
  ------------------
  684|      0|		case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      0|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (684:3): [True: 0, False: 1]
  ------------------
  685|      0|		case ZEND_SEND_REF:
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (685:3): [True: 0, False: 1]
  ------------------
  686|      0|		case ZEND_SEND_UNPACK:
  ------------------
  |  |  287|      0|#define ZEND_SEND_UNPACK                    165
  ------------------
  |  Branch (686:3): [True: 0, False: 1]
  ------------------
  687|      0|		case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|      0|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (687:3): [True: 0, False: 1]
  ------------------
  688|      0|		case ZEND_MAKE_REF:
  ------------------
  |  |  262|      0|#define ZEND_MAKE_REF                       140
  ------------------
  |  Branch (688:3): [True: 0, False: 1]
  ------------------
  689|      0|		case ZEND_PRE_INC_OBJ:
  ------------------
  |  |  254|      0|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (689:3): [True: 0, False: 1]
  ------------------
  690|      0|		case ZEND_PRE_DEC_OBJ:
  ------------------
  |  |  255|      0|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (690:3): [True: 0, False: 1]
  ------------------
  691|      0|		case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      0|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (691:3): [True: 0, False: 1]
  ------------------
  692|      0|		case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      0|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (692:3): [True: 0, False: 1]
  ------------------
  693|      0|		case ZEND_UNSET_DIM:
  ------------------
  |  |  198|      0|#define ZEND_UNSET_DIM                       75
  ------------------
  |  Branch (693:3): [True: 0, False: 1]
  ------------------
  694|      0|		case ZEND_UNSET_OBJ:
  ------------------
  |  |  199|      0|#define ZEND_UNSET_OBJ                       76
  ------------------
  |  Branch (694:3): [True: 0, False: 1]
  ------------------
  695|      0|		case ZEND_FETCH_DIM_W:
  ------------------
  |  |  206|      0|#define ZEND_FETCH_DIM_W                     84
  ------------------
  |  Branch (695:3): [True: 0, False: 1]
  ------------------
  696|      0|		case ZEND_FETCH_DIM_RW:
  ------------------
  |  |  209|      0|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (696:3): [True: 0, False: 1]
  ------------------
  697|      0|		case ZEND_FETCH_DIM_FUNC_ARG:
  ------------------
  |  |  215|      0|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (697:3): [True: 0, False: 1]
  ------------------
  698|      0|		case ZEND_FETCH_DIM_UNSET:
  ------------------
  |  |  218|      0|#define ZEND_FETCH_DIM_UNSET                 96
  ------------------
  |  Branch (698:3): [True: 0, False: 1]
  ------------------
  699|      0|		case ZEND_FETCH_LIST_W:
  ------------------
  |  |  277|      0|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (699:3): [True: 0, False: 1]
  ------------------
  700|      0|			if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (700:8): [True: 0, False: 0]
  ------------------
  701|      0|				goto add_op1_def;
  702|      0|			}
  703|      0|			break;
  704|      0|		case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (704:3): [True: 0, False: 1]
  ------------------
  705|      0|		case ZEND_CAST:
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
  |  Branch (705:3): [True: 0, False: 1]
  ------------------
  706|      0|		case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (706:3): [True: 0, False: 1]
  ------------------
  707|      0|		case ZEND_JMP_SET:
  ------------------
  |  |  274|      0|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (707:3): [True: 0, False: 1]
  ------------------
  708|      0|		case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (708:3): [True: 0, False: 1]
  ------------------
  709|      0|		case ZEND_FE_RESET_R:
  ------------------
  |  |  200|      0|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (709:3): [True: 0, False: 1]
  ------------------
  710|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (710:8): [True: 0, False: 0]
  |  Branch (710:49): [True: 0, False: 0]
  ------------------
  711|      0|				goto add_op1_def;
  712|      0|			}
  713|      0|			break;
  714|      0|		case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (714:3): [True: 0, False: 1]
  ------------------
  715|      0|			ssa_ops[k].result_use = var[EX_VAR_TO_NUM(opline->result.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  716|      0|			break;
  717|      0|		case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (717:3): [True: 0, False: 1]
  ------------------
  718|      0|			ssa_ops[k].result_use = var[EX_VAR_TO_NUM(opline->result.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  719|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  720|      0|		case ZEND_INIT_ARRAY:
  ------------------
  |  |  194|      0|#define ZEND_INIT_ARRAY                      71
  ------------------
  |  Branch (720:3): [True: 0, False: 1]
  ------------------
  721|      0|			if (((build_flags & ZEND_SSA_RC_INFERENCE)
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (721:9): [True: 0, False: 0]
  ------------------
  722|      0|						|| (opline->extended_value & ZEND_ARRAY_ELEMENT_REF))
  ------------------
  |  | 1209|      0|#define ZEND_ARRAY_ELEMENT_REF		(1<<0)
  ------------------
  |  Branch (722:10): [True: 0, False: 0]
  ------------------
  723|      0|					&& opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (723:9): [True: 0, False: 0]
  ------------------
  724|      0|				goto add_op1_def;
  725|      0|			}
  726|      0|			break;
  727|      0|		case ZEND_YIELD:
  ------------------
  |  |  282|      0|#define ZEND_YIELD                          160
  ------------------
  |  Branch (727:3): [True: 0, False: 1]
  ------------------
  728|      0|			if (opline->op1_type == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (728:8): [True: 0, False: 0]
  ------------------
  729|      0|					&& ((op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  352|      0|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (729:10): [True: 0, False: 0]
  ------------------
  730|      0|						|| (build_flags & ZEND_SSA_RC_INFERENCE))) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (730:10): [True: 0, False: 0]
  ------------------
  731|      0|				goto add_op1_def;
  732|      0|			}
  733|      0|			break;
  734|      0|		case ZEND_UNSET_CV:
  ------------------
  |  |  275|      0|#define ZEND_UNSET_CV                       153
  ------------------
  |  Branch (734:3): [True: 0, False: 1]
  ------------------
  735|      0|			goto add_op1_def;
  736|      0|		case ZEND_VERIFY_RETURN_TYPE:
  ------------------
  |  |  246|      0|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
  |  Branch (736:3): [True: 0, False: 1]
  ------------------
  737|      0|			if (opline->op1_type & (IS_TMP_VAR|IS_VAR|IS_CV)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (opline->op1_type & (IS_TMP_VAR|IS_VAR|IS_CV)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (opline->op1_type & (IS_TMP_VAR|IS_VAR|IS_CV)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (737:8): [True: 0, False: 0]
  ------------------
  738|      0|				goto add_op1_def;
  739|      0|			}
  740|      0|			break;
  741|      0|		case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (741:3): [True: 0, False: 1]
  ------------------
  742|      0|		case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|      0|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (742:3): [True: 0, False: 1]
  ------------------
  743|      0|			if (opline->op2_type != IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (743:8): [True: 0, False: 0]
  ------------------
  744|      0|				ssa_ops[k].op2_use = -1; /* not used */
  745|      0|			}
  746|      0|			ssa_ops[k].op2_def = ssa_vars_count;
  747|      0|			var[EX_VAR_TO_NUM(opline->op2.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  748|      0|			ssa_vars_count++;
  749|       |			//NEW_SSA_VAR(opline->op2.var)
  750|      0|			break;
  751|      0|		case ZEND_BIND_LEXICAL:
  ------------------
  |  |  304|      0|#define ZEND_BIND_LEXICAL                   182
  ------------------
  |  Branch (751:3): [True: 0, False: 1]
  ------------------
  752|      0|			if ((opline->extended_value & ZEND_BIND_REF) || (build_flags & ZEND_SSA_RC_INFERENCE)) {
  ------------------
  |  | 1202|      0|#define ZEND_BIND_REF      1
  ------------------
              			if ((opline->extended_value & ZEND_BIND_REF) || (build_flags & ZEND_SSA_RC_INFERENCE)) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (752:8): [True: 0, False: 0]
  |  Branch (752:52): [True: 0, False: 0]
  ------------------
  753|      0|				ssa_ops[k].op2_def = ssa_vars_count;
  754|      0|				var[EX_VAR_TO_NUM(opline->op2.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  755|      0|				ssa_vars_count++;
  756|       |				//NEW_SSA_VAR(opline->op2.var)
  757|      0|			}
  758|      0|			break;
  759|      0|		case ZEND_COPY_TMP:
  ------------------
  |  |  289|      0|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (759:3): [True: 0, False: 1]
  ------------------
  760|      0|			if (build_flags & ZEND_SSA_RC_INFERENCE) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
  |  Branch (760:8): [True: 0, False: 0]
  ------------------
  761|      0|				ssa_ops[k].op1_def = ssa_vars_count;
  762|      0|				var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  763|      0|				ssa_vars_count++;
  764|       |				//NEW_SSA_VAR(opline->op1.var)
  765|      0|			}
  766|      0|			break;
  767|      0|		case ZEND_FRAMELESS_ICALL_1:
  ------------------
  |  |  327|      0|#define ZEND_FRAMELESS_ICALL_1              205
  ------------------
  |  Branch (767:3): [True: 0, False: 1]
  ------------------
  768|      0|		case ZEND_FRAMELESS_ICALL_2:
  ------------------
  |  |  328|      0|#define ZEND_FRAMELESS_ICALL_2              206
  ------------------
  |  Branch (768:3): [True: 0, False: 1]
  ------------------
  769|      0|		case ZEND_FRAMELESS_ICALL_3: {
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (769:3): [True: 0, False: 1]
  ------------------
  770|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (770:8): [True: 0, False: 0]
  |  Branch (770:49): [True: 0, False: 0]
  ------------------
  771|      0|				ssa_ops[k].op1_def = ssa_vars_count;
  772|      0|				var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  773|      0|				ssa_vars_count++;
  774|       |				//NEW_SSA_VAR(opline->op1.var)
  775|      0|			}
  776|      0|			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op2_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              			if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (776:8): [True: 0, False: 0]
  |  Branch (776:49): [True: 0, False: 0]
  ------------------
  777|      0|				ssa_ops[k].op2_def = ssa_vars_count;
  778|      0|				var[EX_VAR_TO_NUM(opline->op2.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  779|      0|				ssa_vars_count++;
  780|       |				//NEW_SSA_VAR(opline->op2.var)
  781|      0|			}
  782|      0|			if (opline->opcode == ZEND_FRAMELESS_ICALL_3) {
  ------------------
  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  ------------------
  |  Branch (782:8): [True: 0, False: 0]
  ------------------
  783|      0|				next = opline + 1;
  784|      0|				if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (next->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (784:9): [True: 0, False: 0]
  ------------------
  785|      0|					ssa_ops[k + 1].op1_use = var[EX_VAR_TO_NUM(next->op1.var)];
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  786|       |					//USE_SSA_VAR(op_array->last_var + next->op1.var);
  787|      0|					if ((build_flags & ZEND_SSA_RC_INFERENCE) && next->op1_type == IS_CV) {
  ------------------
  |  |   95|      0|#define ZEND_SSA_RC_INFERENCE          (1<<27)
  ------------------
              					if ((build_flags & ZEND_SSA_RC_INFERENCE) && next->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (787:10): [True: 0, False: 0]
  |  Branch (787:51): [True: 0, False: 0]
  ------------------
  788|      0|						ssa_ops[k + 1].op1_def = ssa_vars_count;
  789|      0|						var[EX_VAR_TO_NUM(next->op1.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  790|      0|						ssa_vars_count++;
  791|       |						//NEW_SSA_VAR(next->op1.var)
  792|      0|					}
  793|      0|				}
  794|      0|			}
  795|      0|		}
  796|      1|		default:
  ------------------
  |  Branch (796:3): [True: 1, False: 0]
  ------------------
  797|      1|			break;
  798|      1|	}
  799|       |
  800|      1|	if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (800:6): [True: 0, False: 1]
  ------------------
  801|      0|		ssa_ops[k].result_def = ssa_vars_count;
  802|      0|		var[EX_VAR_TO_NUM(opline->result.var)] = ssa_vars_count;
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  803|      0|		ssa_vars_count++;
  804|       |		//NEW_SSA_VAR(op_array->last_var + opline->result.var)
  805|      0|	}
  806|       |
  807|      1|	return ssa_vars_count;
  808|      1|}
zend_ssa.c:place_essa_pis:
  241|      1|		uint32_t build_flags, const zend_ssa *ssa, const zend_dfg *dfg) /* {{{ */ {
  242|      1|	const zend_basic_block *blocks = ssa->cfg.blocks;
  243|      1|	uint32_t blocks_count = ssa->cfg.blocks_count;
  244|      2|	for (uint32_t j = 0; j < blocks_count; j++) {
  ------------------
  |  Branch (244:23): [True: 1, False: 1]
  ------------------
  245|      1|		zend_ssa_phi *pi;
  246|      1|		zend_op *opline = op_array->opcodes + blocks[j].start + blocks[j].len - 1;
  247|      1|		int bt; /* successor block number if a condition is true */
  248|      1|		int bf; /* successor block number if a condition is false */
  249|       |
  250|      1|		if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0 || blocks[j].len == 0) {
  ------------------
  |  |   36|      1|#define ZEND_BB_REACHABLE        (1U<<31)
  ------------------
  |  Branch (250:7): [True: 0, False: 1]
  |  Branch (250:53): [True: 0, False: 1]
  ------------------
  251|      0|			continue;
  252|      0|		}
  253|       |		/* the last instruction of basic block is conditional branch,
  254|       |		 * based on comparison of CV(s)
  255|       |		 */
  256|      1|		switch (opline->opcode) {
  257|      0|			case ZEND_JMPZ:
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (257:4): [True: 0, False: 1]
  ------------------
  258|      0|				bf = blocks[j].successors[0];
  259|      0|				bt = blocks[j].successors[1];
  260|      0|				break;
  261|      0|			case ZEND_JMPNZ:
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (261:4): [True: 0, False: 1]
  ------------------
  262|      0|				bt = blocks[j].successors[0];
  263|      0|				bf = blocks[j].successors[1];
  264|      0|				break;
  265|      0|			case ZEND_COALESCE:
  ------------------
  |  |  291|      0|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (265:4): [True: 0, False: 1]
  ------------------
  266|      0|				if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (266:9): [True: 0, False: 0]
  ------------------
  267|      0|					int var = EX_VAR_TO_NUM(opline->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  268|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, blocks[j].successors[0], var))) {
  ------------------
  |  Branch (268:10): [True: 0, False: 0]
  ------------------
  269|      0|						pi_not_type_mask(pi, MAY_BE_NULL);
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
  270|      0|					}
  271|      0|				}
  272|      0|				continue;
  273|      0|			case ZEND_JMP_NULL:
  ------------------
  |  |  320|      0|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (273:4): [True: 0, False: 1]
  ------------------
  274|      0|				if (opline->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (274:9): [True: 0, False: 0]
  ------------------
  275|      0|					int var = EX_VAR_TO_NUM(opline->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  276|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, blocks[j].successors[1], var))) {
  ------------------
  |  Branch (276:10): [True: 0, False: 0]
  ------------------
  277|      0|						pi_not_type_mask(pi, MAY_BE_NULL);
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
  278|      0|					}
  279|      0|				}
  280|      0|				continue;
  281|      1|			default:
  ------------------
  |  Branch (281:4): [True: 1, False: 0]
  ------------------
  282|      1|				continue;
  283|      1|		}
  284|       |
  285|       |		/* The following patterns all inspect the opline directly before the JMPZ opcode.
  286|       |		 * Make sure that it is part of the same block, otherwise it might not be a dominating
  287|       |		 * assignment. */
  288|      0|		if (blocks[j].len == 1) {
  ------------------
  |  Branch (288:7): [True: 0, False: 0]
  ------------------
  289|      0|			continue;
  290|      0|		}
  291|       |
  292|      0|		if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (292:7): [True: 0, False: 0]
  ------------------
  293|      0|		    ((opline-1)->opcode == ZEND_IS_EQUAL ||
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (293:8): [True: 0, False: 0]
  ------------------
  294|      0|		     (opline-1)->opcode == ZEND_IS_NOT_EQUAL ||
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (294:8): [True: 0, False: 0]
  ------------------
  295|      0|		     (opline-1)->opcode == ZEND_IS_SMALLER ||
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (295:8): [True: 0, False: 0]
  ------------------
  296|      0|		     (opline-1)->opcode == ZEND_IS_SMALLER_OR_EQUAL) &&
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (296:8): [True: 0, False: 0]
  ------------------
  297|      0|		    opline->op1.var == (opline-1)->result.var) {
  ------------------
  |  Branch (297:7): [True: 0, False: 0]
  ------------------
  298|      0|			int  var1 = -1;
  299|      0|			int  var2 = -1;
  300|      0|			zend_long val1 = 0;
  301|      0|			zend_long val2 = 0;
  302|       |//			long val = 0;
  303|       |
  304|      0|			if ((opline-1)->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (304:8): [True: 0, False: 0]
  ------------------
  305|      0|				var1 = EX_VAR_TO_NUM((opline-1)->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  306|      0|			} else if ((opline-1)->op1_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (306:15): [True: 0, False: 0]
  ------------------
  307|      0|				var1 = find_adjusted_tmp_var(
  308|      0|					op_array, build_flags, opline, (opline-1)->op1.var, &val2);
  309|      0|			}
  310|       |
  311|      0|			if ((opline-1)->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (311:8): [True: 0, False: 0]
  ------------------
  312|      0|				var2 = EX_VAR_TO_NUM((opline-1)->op2.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  313|      0|			} else if ((opline-1)->op2_type == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (313:15): [True: 0, False: 0]
  ------------------
  314|      0|				var2 = find_adjusted_tmp_var(
  315|      0|					op_array, build_flags, opline, (opline-1)->op2.var, &val1);
  316|      0|			}
  317|       |
  318|      0|			if (var1 >= 0 && var2 >= 0) {
  ------------------
  |  Branch (318:8): [True: 0, False: 0]
  |  Branch (318:21): [True: 0, False: 0]
  ------------------
  319|      0|				if (!zend_sub_will_overflow(val1, val2) && !zend_sub_will_overflow(val2, val1)) {
  ------------------
  |  Branch (319:9): [True: 0, False: 0]
  |  Branch (319:48): [True: 0, False: 0]
  ------------------
  320|      0|					zend_long tmp = val1;
  321|      0|					val1 -= val2;
  322|      0|					val2 -= tmp;
  323|      0|				} else {
  324|      0|					var1 = -1;
  325|      0|					var2 = -1;
  326|      0|				}
  327|      0|			} else if (var1 >= 0 && var2 < 0) {
  ------------------
  |  Branch (327:15): [True: 0, False: 0]
  |  Branch (327:28): [True: 0, False: 0]
  ------------------
  328|      0|				zend_long add_val2 = 0;
  329|      0|				if ((opline-1)->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (329:9): [True: 0, False: 0]
  ------------------
  330|      0|					zval *zv = CRT_CONSTANT_EX(op_array, (opline-1), (opline-1)->op2);
  ------------------
  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  ------------------
  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  ------------------
  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  ------------------
  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  ------------------
  |  |  104|      0|	: \
  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  ------------------
  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  106|      0|	)
  ------------------
  331|       |
  332|      0|					if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (332:10): [True: 0, False: 0]
  ------------------
  333|      0|						add_val2 = Z_LVAL_P(zv);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  334|      0|					} else {
  335|      0|						var1 = -1;
  336|      0|					}
  337|      0|				} else {
  338|      0|					var1 = -1;
  339|      0|				}
  340|      0|				if (!zend_add_will_overflow(val2, add_val2)) {
  ------------------
  |  Branch (340:9): [True: 0, False: 0]
  ------------------
  341|      0|					val2 += add_val2;
  342|      0|				} else {
  343|      0|					var1 = -1;
  344|      0|				}
  345|      0|			} else if (var1 < 0 && var2 >= 0) {
  ------------------
  |  Branch (345:15): [True: 0, False: 0]
  |  Branch (345:27): [True: 0, False: 0]
  ------------------
  346|      0|				zend_long add_val1 = 0;
  347|      0|				if ((opline-1)->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (347:9): [True: 0, False: 0]
  ------------------
  348|      0|					zval *zv = CRT_CONSTANT_EX(op_array, (opline-1), (opline-1)->op1);
  ------------------
  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  ------------------
  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  ------------------
  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  ------------------
  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  ------------------
  |  |  104|      0|	: \
  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  ------------------
  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  106|      0|	)
  ------------------
  349|      0|					if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (349:10): [True: 0, False: 0]
  ------------------
  350|      0|						add_val1 = Z_LVAL_P(CRT_CONSTANT_EX(op_array, (opline-1), (opline-1)->op1));
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (975:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|      0|					} else {
  352|      0|						var2 = -1;
  353|      0|					}
  354|      0|				} else {
  355|      0|					var2 = -1;
  356|      0|				}
  357|      0|				if (!zend_add_will_overflow(val1, add_val1)) {
  ------------------
  |  Branch (357:9): [True: 0, False: 0]
  ------------------
  358|      0|					val1 += add_val1;
  359|      0|				} else {
  360|      0|					var2 = -1;
  361|      0|				}
  362|      0|			}
  363|       |
  364|      0|			if (var1 >= 0) {
  ------------------
  |  Branch (364:8): [True: 0, False: 0]
  ------------------
  365|      0|				if ((opline-1)->opcode == ZEND_IS_EQUAL) {
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (365:9): [True: 0, False: 0]
  ------------------
  366|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var1))) {
  ------------------
  |  Branch (366:10): [True: 0, False: 0]
  ------------------
  367|      0|						pi_range_equals(pi, var2, val2);
  368|      0|					}
  369|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var1))) {
  ------------------
  |  Branch (369:10): [True: 0, False: 0]
  ------------------
  370|      0|						pi_range_not_equals(pi, var2, val2);
  371|      0|					}
  372|      0|				} else if ((opline-1)->opcode == ZEND_IS_NOT_EQUAL) {
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (372:16): [True: 0, False: 0]
  ------------------
  373|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var1))) {
  ------------------
  |  Branch (373:10): [True: 0, False: 0]
  ------------------
  374|      0|						pi_range_equals(pi, var2, val2);
  375|      0|					}
  376|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var1))) {
  ------------------
  |  Branch (376:10): [True: 0, False: 0]
  ------------------
  377|      0|						pi_range_not_equals(pi, var2, val2);
  378|      0|					}
  379|      0|				} else if ((opline-1)->opcode == ZEND_IS_SMALLER) {
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (379:16): [True: 0, False: 0]
  ------------------
  380|      0|					if (val2 > ZEND_LONG_MIN) {
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (380:10): [True: 0, False: 0]
  ------------------
  381|      0|						if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var1))) {
  ------------------
  |  Branch (381:11): [True: 0, False: 0]
  ------------------
  382|      0|							pi_range_max(pi, var2, val2-1);
  383|      0|						}
  384|      0|					}
  385|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var1))) {
  ------------------
  |  Branch (385:10): [True: 0, False: 0]
  ------------------
  386|      0|						pi_range_min(pi, var2, val2);
  387|      0|					}
  388|      0|				} else if ((opline-1)->opcode == ZEND_IS_SMALLER_OR_EQUAL) {
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (388:16): [True: 0, False: 0]
  ------------------
  389|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var1))) {
  ------------------
  |  Branch (389:10): [True: 0, False: 0]
  ------------------
  390|      0|						pi_range_max(pi, var2, val2);
  391|      0|					}
  392|      0|					if (val2 < ZEND_LONG_MAX) {
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (392:10): [True: 0, False: 0]
  ------------------
  393|      0|						if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var1))) {
  ------------------
  |  Branch (393:11): [True: 0, False: 0]
  ------------------
  394|      0|							pi_range_min(pi, var2, val2+1);
  395|      0|						}
  396|      0|					}
  397|      0|				}
  398|      0|			}
  399|      0|			if (var2 >= 0) {
  ------------------
  |  Branch (399:8): [True: 0, False: 0]
  ------------------
  400|      0|				if((opline-1)->opcode == ZEND_IS_EQUAL) {
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (400:8): [True: 0, False: 0]
  ------------------
  401|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var2))) {
  ------------------
  |  Branch (401:10): [True: 0, False: 0]
  ------------------
  402|      0|						pi_range_equals(pi, var1, val1);
  403|      0|					}
  404|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var2))) {
  ------------------
  |  Branch (404:10): [True: 0, False: 0]
  ------------------
  405|      0|						pi_range_not_equals(pi, var1, val1);
  406|      0|					}
  407|      0|				} else if ((opline-1)->opcode == ZEND_IS_NOT_EQUAL) {
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (407:16): [True: 0, False: 0]
  ------------------
  408|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var2))) {
  ------------------
  |  Branch (408:10): [True: 0, False: 0]
  ------------------
  409|      0|						pi_range_equals(pi, var1, val1);
  410|      0|					}
  411|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var2))) {
  ------------------
  |  Branch (411:10): [True: 0, False: 0]
  ------------------
  412|      0|						pi_range_not_equals(pi, var1, val1);
  413|      0|					}
  414|      0|				} else if ((opline-1)->opcode == ZEND_IS_SMALLER) {
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (414:16): [True: 0, False: 0]
  ------------------
  415|      0|					if (val1 < ZEND_LONG_MAX) {
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (415:10): [True: 0, False: 0]
  ------------------
  416|      0|						if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var2))) {
  ------------------
  |  Branch (416:11): [True: 0, False: 0]
  ------------------
  417|      0|							pi_range_min(pi, var1, val1+1);
  418|      0|						}
  419|      0|					}
  420|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var2))) {
  ------------------
  |  Branch (420:10): [True: 0, False: 0]
  ------------------
  421|      0|						pi_range_max(pi, var1, val1);
  422|      0|					}
  423|      0|				} else if ((opline-1)->opcode == ZEND_IS_SMALLER_OR_EQUAL) {
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (423:16): [True: 0, False: 0]
  ------------------
  424|      0|					if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var2))) {
  ------------------
  |  Branch (424:10): [True: 0, False: 0]
  ------------------
  425|      0|						pi_range_min(pi, var1, val1);
  426|      0|					}
  427|      0|					if (val1 > ZEND_LONG_MIN) {
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (427:10): [True: 0, False: 0]
  ------------------
  428|      0|						if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var2))) {
  ------------------
  |  Branch (428:11): [True: 0, False: 0]
  ------------------
  429|      0|							pi_range_max(pi, var1, val1-1);
  430|      0|						}
  431|      0|					}
  432|      0|				}
  433|      0|			}
  434|      0|		} else if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (434:14): [True: 0, False: 0]
  ------------------
  435|      0|		           ((opline-1)->opcode == ZEND_POST_INC ||
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (435:15): [True: 0, False: 0]
  ------------------
  436|      0|		            (opline-1)->opcode == ZEND_POST_DEC) &&
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (436:15): [True: 0, False: 0]
  ------------------
  437|      0|		           opline->op1.var == (opline-1)->result.var &&
  ------------------
  |  Branch (437:14): [True: 0, False: 0]
  ------------------
  438|      0|		           (opline-1)->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (438:14): [True: 0, False: 0]
  ------------------
  439|      0|			int var = EX_VAR_TO_NUM((opline-1)->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  440|       |
  441|      0|			if ((opline-1)->opcode == ZEND_POST_DEC) {
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (441:8): [True: 0, False: 0]
  ------------------
  442|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var))) {
  ------------------
  |  Branch (442:9): [True: 0, False: 0]
  ------------------
  443|      0|					pi_range_equals(pi, -1, -1);
  444|      0|				}
  445|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (445:9): [True: 0, False: 0]
  ------------------
  446|      0|					pi_range_not_equals(pi, -1, -1);
  447|      0|				}
  448|      0|			} else if ((opline-1)->opcode == ZEND_POST_INC) {
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (448:15): [True: 0, False: 0]
  ------------------
  449|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var))) {
  ------------------
  |  Branch (449:9): [True: 0, False: 0]
  ------------------
  450|      0|					pi_range_equals(pi, -1, 1);
  451|      0|				}
  452|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (452:9): [True: 0, False: 0]
  ------------------
  453|      0|					pi_range_not_equals(pi, -1, 1);
  454|      0|				}
  455|      0|			}
  456|      0|		} else if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (456:14): [True: 0, False: 0]
  ------------------
  457|      0|		           ((opline-1)->opcode == ZEND_PRE_INC ||
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (457:15): [True: 0, False: 0]
  ------------------
  458|      0|		            (opline-1)->opcode == ZEND_PRE_DEC) &&
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (458:15): [True: 0, False: 0]
  ------------------
  459|      0|		           opline->op1.var == (opline-1)->result.var &&
  ------------------
  |  Branch (459:14): [True: 0, False: 0]
  ------------------
  460|      0|		           (opline-1)->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (460:14): [True: 0, False: 0]
  ------------------
  461|      0|			int var = EX_VAR_TO_NUM((opline-1)->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  462|       |
  463|      0|			if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var))) {
  ------------------
  |  Branch (463:8): [True: 0, False: 0]
  ------------------
  464|      0|				pi_range_equals(pi, -1, 0);
  465|      0|			}
  466|       |			/* speculative */
  467|      0|			if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (467:8): [True: 0, False: 0]
  ------------------
  468|      0|				pi_range_not_equals(pi, -1, 0);
  469|      0|			}
  470|      0|		} else if (opline->op1_type == IS_TMP_VAR && (opline-1)->opcode == ZEND_TYPE_CHECK &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (opline->op1_type == IS_TMP_VAR && (opline-1)->opcode == ZEND_TYPE_CHECK &&
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (470:14): [True: 0, False: 0]
  |  Branch (470:48): [True: 0, False: 0]
  ------------------
  471|      0|				   opline->op1.var == (opline-1)->result.var && (opline-1)->op1_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (471:8): [True: 0, False: 0]
  |  Branch (471:53): [True: 0, False: 0]
  ------------------
  472|      0|			int var = EX_VAR_TO_NUM((opline-1)->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  473|      0|			uint32_t type = (opline-1)->extended_value;
  474|      0|			if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (474:8): [True: 0, False: 0]
  ------------------
  475|      0|				pi_type_mask(pi, mask_for_type_check(type));
  476|      0|			}
  477|      0|			if (type != MAY_BE_RESOURCE) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
  |  Branch (477:8): [True: 0, False: 0]
  ------------------
  478|       |				/* is_resource() may return false for closed resources */
  479|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var))) {
  ------------------
  |  Branch (479:9): [True: 0, False: 0]
  ------------------
  480|      0|					pi_not_type_mask(pi, mask_for_type_check(type));
  481|      0|				}
  482|      0|			}
  483|      0|		} else if (opline->op1_type == IS_TMP_VAR &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (483:14): [True: 0, False: 0]
  ------------------
  484|      0|				   ((opline-1)->opcode == ZEND_IS_IDENTICAL
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (484:9): [True: 0, False: 0]
  ------------------
  485|      0|					|| (opline-1)->opcode == ZEND_IS_NOT_IDENTICAL) &&
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (485:9): [True: 0, False: 0]
  ------------------
  486|      0|				   opline->op1.var == (opline-1)->result.var) {
  ------------------
  |  Branch (486:8): [True: 0, False: 0]
  ------------------
  487|      0|			int var;
  488|      0|			zval *val;
  489|      0|			uint32_t type_mask;
  490|      0|			if ((opline-1)->op1_type == IS_CV && (opline-1)->op2_type == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((opline-1)->op1_type == IS_CV && (opline-1)->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (490:8): [True: 0, False: 0]
  |  Branch (490:41): [True: 0, False: 0]
  ------------------
  491|      0|				var = EX_VAR_TO_NUM((opline-1)->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  492|      0|				val = CRT_CONSTANT_EX(op_array, (opline-1), (opline-1)->op2);
  ------------------
  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  ------------------
  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  ------------------
  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  ------------------
  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  ------------------
  |  |  104|      0|	: \
  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  ------------------
  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  106|      0|	)
  ------------------
  493|      0|			} else if ((opline-1)->op1_type == IS_CONST && (opline-1)->op2_type == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if ((opline-1)->op1_type == IS_CONST && (opline-1)->op2_type == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (493:15): [True: 0, False: 0]
  |  Branch (493:51): [True: 0, False: 0]
  ------------------
  494|      0|				var = EX_VAR_TO_NUM((opline-1)->op2.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  495|      0|				val = CRT_CONSTANT_EX(op_array, (opline-1), (opline-1)->op1);
  ------------------
  |  |  102|      0|	(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
  |  |  ------------------
  |  |  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  |  |  ------------------
  |  |  |  Branch (102:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  103|      0|		RT_CONSTANT(opline, (node)) \
  |  |  ------------------
  |  |  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  |  |  ------------------
  |  |  104|      0|	: \
  |  |  105|      0|		CT_CONSTANT_EX(op_array, (node).constant) \
  |  |  ------------------
  |  |  |  |  817|      0|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  106|      0|	)
  ------------------
  496|      0|			} else {
  497|      0|				continue;
  498|      0|			}
  499|       |
  500|       |			/* We're interested in === null/true/false comparisons here, because they eliminate
  501|       |			 * a type in the false-branch. Other === VAL comparisons are unlikely to be useful. */
  502|      0|			if (Z_TYPE_P(val) != IS_NULL && Z_TYPE_P(val) != IS_TRUE && Z_TYPE_P(val) != IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_NULL && Z_TYPE_P(val) != IS_TRUE && Z_TYPE_P(val) != IS_FALSE) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
              			if (Z_TYPE_P(val) != IS_NULL && Z_TYPE_P(val) != IS_TRUE && Z_TYPE_P(val) != IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_NULL && Z_TYPE_P(val) != IS_TRUE && Z_TYPE_P(val) != IS_FALSE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
              			if (Z_TYPE_P(val) != IS_NULL && Z_TYPE_P(val) != IS_TRUE && Z_TYPE_P(val) != IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_NULL && Z_TYPE_P(val) != IS_TRUE && Z_TYPE_P(val) != IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (502:8): [True: 0, False: 0]
  |  Branch (502:36): [True: 0, False: 0]
  |  Branch (502:64): [True: 0, False: 0]
  ------------------
  503|      0|				continue;
  504|      0|			}
  505|       |
  506|      0|			type_mask = _const_op_type(val);
  507|      0|			if ((opline-1)->opcode == ZEND_IS_IDENTICAL) {
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (507:8): [True: 0, False: 0]
  ------------------
  508|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (508:9): [True: 0, False: 0]
  ------------------
  509|      0|					pi_type_mask(pi, type_mask);
  510|      0|				}
  511|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var))) {
  ------------------
  |  Branch (511:9): [True: 0, False: 0]
  ------------------
  512|      0|					pi_not_type_mask(pi, type_mask);
  513|      0|				}
  514|      0|			} else {
  515|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bf, var))) {
  ------------------
  |  Branch (515:9): [True: 0, False: 0]
  ------------------
  516|      0|					pi_type_mask(pi, type_mask);
  517|      0|				}
  518|      0|				if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (518:9): [True: 0, False: 0]
  ------------------
  519|      0|					pi_not_type_mask(pi, type_mask);
  520|      0|				}
  521|      0|			}
  522|      0|		} else if (opline->op1_type == IS_TMP_VAR && (opline-1)->opcode == ZEND_INSTANCEOF &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (opline->op1_type == IS_TMP_VAR && (opline-1)->opcode == ZEND_INSTANCEOF &&
  ------------------
  |  |  260|      0|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (522:14): [True: 0, False: 0]
  |  Branch (522:48): [True: 0, False: 0]
  ------------------
  523|      0|				   opline->op1.var == (opline-1)->result.var && (opline-1)->op1_type == IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (523:8): [True: 0, False: 0]
  |  Branch (523:53): [True: 0, False: 0]
  ------------------
  524|      0|				   (opline-1)->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (524:8): [True: 0, False: 0]
  ------------------
  525|      0|			int var = EX_VAR_TO_NUM((opline-1)->op1.var);
  ------------------
  |  |  758|      0|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  526|      0|			zend_string *lcname = Z_STR_P(CRT_CONSTANT_EX(op_array, (opline-1), (opline-1)->op2) + 1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (981:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  527|      0|			zend_class_entry *ce = zend_optimizer_get_class_entry(script, op_array, lcname);
  528|      0|			if (!ce) {
  ------------------
  |  Branch (528:8): [True: 0, False: 0]
  ------------------
  529|      0|				continue;
  530|      0|			}
  531|       |
  532|      0|			if ((pi = add_pi(arena, op_array, dfg, ssa, j, bt, var))) {
  ------------------
  |  Branch (532:8): [True: 0, False: 0]
  ------------------
  533|      0|				pi_type_mask(pi, MAY_BE_OBJECT);
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  534|      0|				pi->constraint.type.ce = ce;
  535|      0|			}
  536|      0|		}
  537|      0|	}
  538|      1|}
zend_ssa.c:zend_ssa_rename:
  913|      1|{
  914|       |	/* The worklist contains block numbers, encoded as positive or negative value.
  915|       |	 * Positive values indicate that the variable rename still needs to happen for the block.
  916|       |	 * Negative values indicate the variable rename was done and all children were handled too.
  917|       |	 * In that case, we will clean up.
  918|       |	 * Because block 0 is valid, we bias the block numbers by adding 1 such that we can distinguish
  919|       |	 * positive and negative values in all cases. */
  920|      1|	zend_worklist_stack work;
  921|      1|	ALLOCA_FLAG(work_use_heap);
  922|      1|	ZEND_WORKLIST_STACK_ALLOCA(&work, ssa->cfg.blocks_count, work_use_heap);
  ------------------
  |  |   29|      1|#define ZEND_WORKLIST_STACK_ALLOCA(s, _len, use_heap) do { \
  |  |   30|      1|		(s)->buf = (int*)do_alloca(sizeof(int) * _len, use_heap); \
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      1|		(s)->len = 0; \
  |  |   32|      1|		(s)->capacity = _len; \
  |  |   33|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (33:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  923|      1|	zend_worklist_stack_push(&work, n + 1);
  924|       |
  925|       |	/* This is used to backtrack the right version of the renamed variables to use. */
  926|      1|	ALLOCA_FLAG(save_vars_use_heap);
  927|      1|	unsigned int save_vars_top = 0;
  928|      1|	int **save_vars = do_alloca(sizeof(int *) * (ssa->cfg.blocks_count + 1), save_vars_use_heap);
  ------------------
  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  929|      1|	save_vars[0] = var;
  930|       |
  931|      2|	while (work.len) {
  ------------------
  |  Branch (931:9): [True: 1, False: 1]
  ------------------
  932|      1|		n = zend_worklist_stack_pop(&work);
  933|       |
  934|       |		/* Enter state: perform SSA variable rename */
  935|      1|		if (n > 0) {
  ------------------
  |  Branch (935:7): [True: 1, False: 0]
  ------------------
  936|      1|			n--;
  937|       |
  938|       |			// FIXME: Can we optimize this copying out in some cases?
  939|      1|			int *new_var;
  940|      1|			if (ssa->cfg.blocks[n].next_child >= 0) {
  ------------------
  |  Branch (940:8): [True: 0, False: 1]
  ------------------
  941|      0|				new_var = emalloc(sizeof(int) * (op_array->last_var + op_array->T));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  942|      0|				memcpy(new_var, save_vars[save_vars_top], sizeof(int) * (op_array->last_var + op_array->T));
  943|      0|				save_vars[++save_vars_top] = new_var;
  944|      1|			} else {
  945|      1|				new_var = save_vars[save_vars_top];
  946|      1|			}
  947|       |
  948|      1|			zend_ssa_rename_in_block(op_array, build_flags, ssa, new_var, n);
  949|       |
  950|      1|			int j = ssa->cfg.blocks[n].children;
  951|      1|			if (j >= 0) {
  ------------------
  |  Branch (951:8): [True: 0, False: 1]
  ------------------
  952|       |				/* Push backtrack state */
  953|      0|				zend_worklist_stack_push(&work, -(n + 1));
  954|       |
  955|       |				/* Push children in enter state */
  956|      0|				unsigned int child_count = 0;
  957|      0|				int len_prior = work.len;
  958|      0|				do {
  959|      0|					zend_worklist_stack_push(&work, j + 1);
  960|      0|					j = ssa->cfg.blocks[j].next_child;
  961|      0|					child_count++;
  962|      0|				} while (j >= 0);
  ------------------
  |  Branch (962:14): [True: 0, False: 0]
  ------------------
  963|       |
  964|       |				/* Reverse block order to maintain SSA variable number order given in previous PHP versions,
  965|       |				 * but the data structure doesn't allow reverse dominator tree traversal. */
  966|      0|				for (unsigned int i = 0; i < child_count / 2; i++) {
  ------------------
  |  Branch (966:30): [True: 0, False: 0]
  ------------------
  967|      0|					int tmp = work.buf[len_prior + i];
  968|      0|					work.buf[len_prior + i] = work.buf[work.len - 1 - i];
  969|      0|					work.buf[work.len - 1 - i] = tmp;
  970|      0|				}
  971|      1|			} else {
  972|       |				/* Leafs jump directly to backtracking */
  973|      1|				goto backtrack;
  974|      1|			}
  975|      1|		}
  976|       |		/* Leave state: backtrack */
  977|      0|		else {
  978|      0|			n = -n;
  979|      0|			n--;
  980|      1|backtrack:;
  981|      1|			if (ssa->cfg.blocks[n].next_child >= 0) {
  ------------------
  |  Branch (981:8): [True: 0, False: 1]
  ------------------
  982|      0|				efree(save_vars[save_vars_top]);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  983|      0|				save_vars_top--;
  984|      0|			}
  985|      1|		}
  986|      1|	}
  987|       |
  988|      1|	free_alloca(save_vars, save_vars_use_heap);
  ------------------
  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  989|      1|	ZEND_WORKLIST_STACK_FREE_ALLOCA(&work, work_use_heap);
  ------------------
  |  |   36|      1|	free_alloca((s)->buf, use_heap)
  |  |  ------------------
  |  |  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  990|       |
  991|      1|	return SUCCESS;
  992|      1|}
zend_ssa.c:zend_ssa_rename_in_block:
  818|      1|{
  819|      1|	const zend_basic_block *blocks = ssa->cfg.blocks;
  820|      1|	const zend_ssa_block *ssa_blocks = ssa->blocks;
  821|      1|	zend_ssa_op *ssa_ops = ssa->ops;
  822|      1|	int ssa_vars_count = ssa->vars_count;
  823|      1|	const zend_op *opline, *end;
  824|       |
  825|      1|	if (ssa_blocks[n].phis) {
  ------------------
  |  Branch (825:6): [True: 0, False: 1]
  ------------------
  826|      0|		zend_ssa_phi *phi = ssa_blocks[n].phis;
  827|      0|		do {
  828|      0|			if (phi->ssa_var < 0) {
  ------------------
  |  Branch (828:8): [True: 0, False: 0]
  ------------------
  829|      0|				phi->ssa_var = ssa_vars_count;
  830|      0|				var[phi->var] = ssa_vars_count;
  831|      0|				ssa_vars_count++;
  832|      0|			} else {
  833|      0|				var[phi->var] = phi->ssa_var;
  834|      0|			}
  835|      0|			phi = phi->next;
  836|      0|		} while (phi);
  ------------------
  |  Branch (836:12): [True: 0, False: 0]
  ------------------
  837|      0|	}
  838|       |
  839|      1|	opline = op_array->opcodes + blocks[n].start;
  840|      1|	end = opline + blocks[n].len;
  841|      2|	for (; opline < end; opline++) {
  ------------------
  |  Branch (841:9): [True: 1, False: 1]
  ------------------
  842|      1|		uint32_t k = opline - op_array->opcodes;
  843|      1|		if (opline->opcode != ZEND_OP_DATA) {
  ------------------
  |  |  259|      1|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (843:7): [True: 1, False: 0]
  ------------------
  844|      1|			ssa_vars_count = _zend_ssa_rename_op(op_array, opline, k, build_flags, ssa_vars_count, ssa_ops, var);
  845|      1|		}
  846|      1|	}
  847|       |
  848|      1|	const zend_ssa_op *fe_fetch_ssa_op = blocks[n].len != 0
  ------------------
  |  Branch (848:39): [True: 1, False: 0]
  ------------------
  849|      1|			&& ((end-1)->opcode == ZEND_FE_FETCH_R || (end-1)->opcode == ZEND_FE_FETCH_RW)
  ------------------
  |  |  201|      2|#define ZEND_FE_FETCH_R                      78
  ------------------
              			&& ((end-1)->opcode == ZEND_FE_FETCH_R || (end-1)->opcode == ZEND_FE_FETCH_RW)
  ------------------
  |  |  248|      1|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (849:8): [True: 0, False: 1]
  |  Branch (849:46): [True: 0, False: 1]
  ------------------
  850|      0|			&& (end-1)->op2_type == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (850:7): [True: 0, False: 0]
  ------------------
  851|      1|		? &ssa_ops[blocks[n].start + blocks[n].len - 1] : NULL;
  852|      1|	for (uint32_t i = 0; i < blocks[n].successors_count; i++) {
  ------------------
  |  Branch (852:23): [True: 0, False: 1]
  ------------------
  853|      0|		int succ = blocks[n].successors[i];
  854|      0|		zend_ssa_phi *p;
  855|      0|		for (p = ssa_blocks[succ].phis; p; p = p->next) {
  ------------------
  |  Branch (855:35): [True: 0, False: 0]
  ------------------
  856|      0|			if (p->pi == n) {
  ------------------
  |  Branch (856:8): [True: 0, False: 0]
  ------------------
  857|       |				/* e-SSA Pi */
  858|      0|				if (p->has_range_constraint) {
  ------------------
  |  Branch (858:9): [True: 0, False: 0]
  ------------------
  859|      0|					if (p->constraint.range.min_var >= 0) {
  ------------------
  |  Branch (859:10): [True: 0, False: 0]
  ------------------
  860|      0|						p->constraint.range.min_ssa_var = var[p->constraint.range.min_var];
  861|      0|					}
  862|      0|					if (p->constraint.range.max_var >= 0) {
  ------------------
  |  Branch (862:10): [True: 0, False: 0]
  ------------------
  863|      0|						p->constraint.range.max_ssa_var = var[p->constraint.range.max_var];
  864|      0|					}
  865|      0|				}
  866|      0|				for (uint32_t j = 0; j < blocks[succ].predecessors_count; j++) {
  ------------------
  |  Branch (866:26): [True: 0, False: 0]
  ------------------
  867|      0|					p->sources[j] = var[p->var];
  868|      0|				}
  869|      0|				if (p->ssa_var < 0) {
  ------------------
  |  Branch (869:9): [True: 0, False: 0]
  ------------------
  870|      0|					p->ssa_var = ssa_vars_count;
  871|      0|					ssa_vars_count++;
  872|      0|				}
  873|      0|			} else if (p->pi < 0) {
  ------------------
  |  Branch (873:15): [True: 0, False: 0]
  ------------------
  874|       |				/* Normal Phi */
  875|      0|				uint32_t j;
  876|      0|				for (j = 0; j < blocks[succ].predecessors_count; j++)
  ------------------
  |  Branch (876:17): [True: 0, False: 0]
  ------------------
  877|      0|					if (ssa->cfg.predecessors[blocks[succ].predecessor_offset + j] == n) {
  ------------------
  |  Branch (877:10): [True: 0, False: 0]
  ------------------
  878|      0|						break;
  879|      0|					}
  880|      0|				ZEND_ASSERT(j < blocks[succ].predecessors_count);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (880:5): [True: 0, False: 0]
  |  Branch (880:5): [True: 0, False: 0]
  ------------------
  881|      0|				p->sources[j] = var[p->var];
  882|      0|				if (fe_fetch_ssa_op && i == 0 && p->sources[j] == fe_fetch_ssa_op->op2_def) {
  ------------------
  |  Branch (882:9): [True: 0, False: 0]
  |  Branch (882:28): [True: 0, False: 0]
  |  Branch (882:38): [True: 0, False: 0]
  ------------------
  883|       |					/* On the exit edge of an FE_FETCH, use the pre-modification value instead. */
  884|      0|					p->sources[j] = fe_fetch_ssa_op->op2_use;
  885|      0|				}
  886|      0|			}
  887|      0|		}
  888|      0|		for (p = ssa_blocks[succ].phis; p && (p->pi >= 0); p = p->next) {
  ------------------
  |  Branch (888:35): [True: 0, False: 0]
  |  Branch (888:40): [True: 0, False: 0]
  ------------------
  889|      0|			if (p->pi == n) {
  ------------------
  |  Branch (889:8): [True: 0, False: 0]
  ------------------
  890|      0|				zend_ssa_phi *q = p->next;
  891|      0|				while (q) {
  ------------------
  |  Branch (891:12): [True: 0, False: 0]
  ------------------
  892|      0|					if (q->pi < 0 && q->var == p->var) {
  ------------------
  |  Branch (892:10): [True: 0, False: 0]
  |  Branch (892:23): [True: 0, False: 0]
  ------------------
  893|      0|						uint32_t j;
  894|      0|						for (j = 0; j < blocks[succ].predecessors_count; j++) {
  ------------------
  |  Branch (894:19): [True: 0, False: 0]
  ------------------
  895|      0|							if (ssa->cfg.predecessors[blocks[succ].predecessor_offset + j] == n) {
  ------------------
  |  Branch (895:12): [True: 0, False: 0]
  ------------------
  896|      0|								break;
  897|      0|							}
  898|      0|						}
  899|      0|						ZEND_ASSERT(j < blocks[succ].predecessors_count);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (899:7): [True: 0, False: 0]
  |  Branch (899:7): [True: 0, False: 0]
  ------------------
  900|      0|						q->sources[j] = p->ssa_var;
  901|      0|					}
  902|      0|					q = q->next;
  903|      0|				}
  904|      0|			}
  905|      0|		}
  906|      0|	}
  907|       |
  908|      1|	ssa->vars_count = ssa_vars_count;
  909|      1|}

zend_cfg.c:zend_worklist_push:
   94|      3|{
   95|      3|	ZEND_ASSERT(i >= 0 && i < worklist->stack.capacity);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (95:2): [True: 0, False: 3]
  |  Branch (95:2): [True: 0, False: 0]
  |  Branch (95:2): [True: 3, False: 0]
  |  Branch (95:2): [True: 3, False: 0]
  ------------------
   96|       |
   97|      3|	if (zend_bitset_in(worklist->visited, i)) {
  ------------------
  |  Branch (97:6): [True: 0, False: 3]
  ------------------
   98|      0|		return false;
   99|      0|	}
  100|       |
  101|      3|	zend_bitset_incl(worklist->visited, i);
  102|      3|	zend_worklist_stack_push(&worklist->stack, i);
  103|       |	return true;
  104|      3|}
zend_cfg.c:zend_worklist_stack_push:
   48|      3|{
   49|      3|	ZEND_ASSERT(stack->len < stack->capacity);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (49:2): [True: 0, False: 3]
  |  Branch (49:2): [True: 3, False: 0]
  ------------------
   50|      3|	stack->buf[stack->len++] = i;
   51|      3|}
zend_cfg.c:zend_worklist_len:
   89|      6|{
   90|      6|	return worklist->stack.len;
   91|      6|}
zend_cfg.c:zend_worklist_pop:
  112|      3|{
  113|       |	/* Does not clear visited flag */
  114|      3|	return zend_worklist_stack_pop(&worklist->stack);
  115|      3|}
zend_cfg.c:zend_worklist_stack_pop:
   60|      3|{
   61|      3|	ZEND_ASSERT(stack->len);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (61:2): [True: 0, False: 3]
  |  Branch (61:2): [True: 3, False: 0]
  ------------------
   62|      3|	return stack->buf[--stack->len];
   63|      3|}
zend_ssa.c:zend_worklist_stack_push:
   48|      1|{
   49|      1|	ZEND_ASSERT(stack->len < stack->capacity);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (49:2): [True: 0, False: 1]
  |  Branch (49:2): [True: 1, False: 0]
  ------------------
   50|      1|	stack->buf[stack->len++] = i;
   51|      1|}
zend_ssa.c:zend_worklist_stack_pop:
   60|      1|{
   61|      1|	ZEND_ASSERT(stack->len);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (61:2): [True: 0, False: 1]
  |  Branch (61:2): [True: 1, False: 0]
  ------------------
   62|      1|	return stack->buf[--stack->len];
   63|      1|}

zend_vspprintf:
  286|  6.65M|{
  287|  6.65M|	smart_string buf = {0};
  288|       |
  289|       |	/* since there are places where (v)spprintf called without checking for null,
  290|       |	   a bit of defensive coding here */
  291|  6.65M|	if (!pbuf) {
  ------------------
  |  Branch (291:6): [True: 0, False: 6.65M]
  ------------------
  292|      0|		return 0;
  293|      0|	}
  294|       |
  295|  6.65M|	zend_printf_to_smart_string(&buf, format, ap);
  296|       |
  297|  6.65M|	if (max_len && buf.len > max_len) {
  ------------------
  |  Branch (297:6): [True: 0, False: 6.65M]
  |  Branch (297:17): [True: 0, False: 0]
  ------------------
  298|      0|		buf.len = max_len;
  299|      0|	}
  300|       |
  301|  6.65M|	smart_string_0(&buf);
  302|       |
  303|  6.65M|	if (buf.c) {
  ------------------
  |  Branch (303:6): [True: 6.65M, False: 0]
  ------------------
  304|  6.65M|		*pbuf = buf.c;
  305|  6.65M|		return buf.len;
  306|  6.65M|	} else {
  307|       |		*pbuf = estrndup("", 0);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  308|      0|		return 0;
  309|      0|	}
  310|  6.65M|}
zend_spprintf:
  314|  3.53k|{
  315|  3.53k|	va_list arg;
  316|  3.53k|	size_t len;
  317|       |
  318|  3.53k|	va_start(arg, format);
  319|  3.53k|	len = zend_vspprintf(message, max_len, format, arg);
  320|       |	va_end(arg);
  321|  3.53k|	return len;
  322|  3.53k|}
zend_vstrpprintf:
  338|  61.3k|{
  339|  61.3k|	smart_str buf = {0};
  340|       |
  341|  61.3k|	zend_printf_to_smart_str(&buf, format, ap);
  342|       |
  343|  61.3k|	if (!buf.s) {
  ------------------
  |  Branch (343:6): [True: 0, False: 61.3k]
  ------------------
  344|      0|		return ZSTR_EMPTY_ALLOC();
  345|      0|	}
  346|       |
  347|  61.3k|	if (max_len && ZSTR_LEN(buf.s) > max_len) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (347:6): [True: 0, False: 61.3k]
  |  Branch (347:17): [True: 0, False: 0]
  ------------------
  348|      0|		ZSTR_LEN(buf.s) = max_len;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  349|      0|	}
  350|       |
  351|  61.3k|	return smart_str_extract(&buf);
  352|  61.3k|}
zend_strpprintf:
  356|  1.37k|{
  357|  1.37k|	va_list arg;
  358|  1.37k|	zend_string *str;
  359|       |
  360|  1.37k|	va_start(arg, format);
  361|  1.37k|	str = zend_vstrpprintf(max_len, format, arg);
  362|       |	va_end(arg);
  363|  1.37k|	return str;
  364|  1.37k|}
zend_strpprintf_unchecked:
  368|  1.98k|{
  369|  1.98k|	va_list arg;
  370|  1.98k|	zend_string *str;
  371|       |
  372|  1.98k|	va_start(arg, format);
  373|  1.98k|	str = zend_vstrpprintf(max_len, format, arg);
  374|       |	va_end(arg);
  375|  1.98k|	return str;
  376|  1.98k|}
zend_print_zval_r_to_str:
  620|     40|{
  621|     40|	smart_str buf = {0};
  622|     40|	zend_print_zval_r_to_buf(&buf, expr, indent);
  623|     40|	smart_str_0(&buf);
  624|     40|	return buf.s;
  625|     40|}
zend_print_zval_r:
  629|     40|{
  630|     40|	zend_string *str = zend_print_zval_r_to_str(expr, indent);
  631|     40|	zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  632|     40|	zend_string_release_ex(str, 0);
  633|     40|}
zend_startup:
  919|      2|{
  920|       |#ifdef ZTS
  921|       |	zend_compiler_globals *compiler_globals;
  922|       |	zend_executor_globals *executor_globals;
  923|       |	extern ZEND_API ts_rsrc_id ini_scanner_globals_id;
  924|       |	extern ZEND_API ts_rsrc_id language_scanner_globals_id;
  925|       |#else
  926|      2|	extern zend_ini_scanner_globals ini_scanner_globals;
  927|      2|	extern zend_php_scanner_globals language_scanner_globals;
  928|      2|#endif
  929|       |
  930|      2|	zend_cpu_startup();
  931|       |
  932|       |#ifdef ZEND_WIN32
  933|       |	php_win32_cp_set_by_id(65001);
  934|       |#endif
  935|       |
  936|       |	/* Set up early utility functions. zend_mm depends on
  937|       |	 * zend_random_bytes_insecure */
  938|      2|	zend_random_bytes = utility_functions->random_bytes_function;
  939|      2|	zend_random_bytes_insecure = utility_functions->random_bytes_insecure_function;
  940|       |
  941|      2|	start_memory_manager();
  942|       |
  943|      2|	virtual_cwd_startup(); /* Could use shutdown to free the main cwd but it would just slow it down for CGI */
  944|       |
  945|       |#if defined(__FreeBSD__) || defined(__DragonFly__)
  946|       |	/* FreeBSD and DragonFly floating point precision fix */
  947|       |	fpsetmask(0);
  948|       |#endif
  949|       |
  950|      2|	zend_startup_hrtime();
  951|      2|	zend_startup_extensions_mechanism();
  952|       |
  953|       |	/* Set up utility functions and values */
  954|      2|	zend_error_cb = utility_functions->error_function;
  955|      2|	zend_printf = utility_functions->printf_function;
  956|      2|	zend_write = utility_functions->write_function;
  957|      2|	zend_fopen = utility_functions->fopen_function;
  958|      2|	if (!zend_fopen) {
  ------------------
  |  Branch (958:6): [True: 0, False: 2]
  ------------------
  959|      0|		zend_fopen = zend_fopen_wrapper;
  960|      0|	}
  961|      2|	zend_stream_open_function = utility_functions->stream_open_function;
  962|      2|	zend_message_dispatcher_p = utility_functions->message_handler;
  963|      2|	zend_get_configuration_directive_p = utility_functions->get_configuration_directive;
  964|      2|	zend_ticks_function = utility_functions->ticks_function;
  965|      2|	zend_on_timeout = utility_functions->on_timeout;
  966|      2|	zend_printf_to_smart_string = utility_functions->printf_to_smart_string_function;
  967|      2|	zend_printf_to_smart_str = utility_functions->printf_to_smart_str_function;
  968|      2|	zend_getenv = utility_functions->getenv_function;
  969|      2|	zend_resolve_path = utility_functions->resolve_path_function;
  970|       |
  971|      2|	zend_interrupt_function = NULL;
  972|       |
  973|       |#ifdef HAVE_DTRACE
  974|       |/* build with dtrace support */
  975|       |	{
  976|       |		char *tmp = getenv("USE_ZEND_DTRACE");
  977|       |
  978|       |		if (tmp && ZEND_ATOL(tmp)) {
  979|       |			zend_dtrace_enabled = 1;
  980|       |			zend_compile_file = dtrace_compile_file;
  981|       |			zend_execute_ex = dtrace_execute_ex;
  982|       |			zend_execute_internal = dtrace_execute_internal;
  983|       |
  984|       |			zend_observer_error_register(dtrace_error_notify_cb);
  985|       |		} else {
  986|       |			zend_compile_file = compile_file;
  987|       |			zend_execute_ex = execute_ex;
  988|       |			zend_execute_internal = NULL;
  989|       |		}
  990|       |	}
  991|       |#else
  992|      2|	zend_compile_file = compile_file;
  993|      2|	zend_execute_ex = execute_ex;
  994|      2|	zend_execute_internal = NULL;
  995|      2|#endif /* HAVE_DTRACE */
  996|      2|	zend_compile_string = compile_string;
  997|      2|	zend_throw_exception_hook = NULL;
  998|       |
  999|       |	/* Set up the default garbage collection implementation. */
 1000|      2|	gc_collect_cycles = zend_gc_collect_cycles;
 1001|       |
 1002|      2|	zend_vm_init();
 1003|       |
 1004|       |	/* set up version */
 1005|      2|	zend_version_info = strdup(ZEND_CORE_VERSION_INFO);
  ------------------
  |  |   80|      2|#define ZEND_CORE_VERSION_INFO	"Zend Engine v" ZEND_VERSION ", Copyright © Zend by Perforce\n"
  ------------------
 1006|      2|	zend_version_info_length = sizeof(ZEND_CORE_VERSION_INFO) - 1;
  ------------------
  |  |   80|      2|#define ZEND_CORE_VERSION_INFO	"Zend Engine v" ZEND_VERSION ", Copyright © Zend by Perforce\n"
  ------------------
 1007|       |
 1008|      2|	GLOBAL_FUNCTION_TABLE = (HashTable *) malloc(sizeof(HashTable));
  ------------------
  |  |   68|      2|# define GLOBAL_FUNCTION_TABLE		CG(function_table)
  |  |  ------------------
  |  |  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1009|      2|	GLOBAL_CLASS_TABLE = (HashTable *) malloc(sizeof(HashTable));
  ------------------
  |  |   69|      2|# define GLOBAL_CLASS_TABLE			CG(class_table)
  |  |  ------------------
  |  |  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1010|      2|	GLOBAL_AUTO_GLOBALS_TABLE = (HashTable *) malloc(sizeof(HashTable));
  ------------------
  |  |   70|      2|# define GLOBAL_AUTO_GLOBALS_TABLE	CG(auto_globals)
  |  |  ------------------
  |  |  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1011|      2|	GLOBAL_CONSTANTS_TABLE = (HashTable *) malloc(sizeof(HashTable));
  ------------------
  |  |   71|      2|# define GLOBAL_CONSTANTS_TABLE		EG(zend_constants)
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
 1012|       |
 1013|      2|	zend_hash_init(GLOBAL_FUNCTION_TABLE, 1024, NULL, ZEND_FUNCTION_DTOR, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1014|      2|	zend_hash_init(GLOBAL_CLASS_TABLE, 64, NULL, ZEND_CLASS_DTOR, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1015|      2|	zend_hash_init(GLOBAL_AUTO_GLOBALS_TABLE, 8, NULL, auto_global_dtor, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1016|      2|	zend_hash_init(GLOBAL_CONSTANTS_TABLE, 128, NULL, ZEND_CONSTANT_DTOR, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1017|       |
 1018|      2|	zend_hash_init(&module_registry, 32, NULL, module_destructor_zval, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1019|      2|	zend_init_rsrc_list_dtors();
 1020|       |
 1021|       |#ifdef ZTS
 1022|       |	ts_allocate_fast_id(&compiler_globals_id, &compiler_globals_offset, sizeof(zend_compiler_globals), (ts_allocate_ctor) compiler_globals_ctor, (ts_allocate_dtor) compiler_globals_dtor);
 1023|       |	ts_allocate_fast_id(&executor_globals_id, &executor_globals_offset, sizeof(zend_executor_globals), (ts_allocate_ctor) executor_globals_ctor, (ts_allocate_dtor) executor_globals_dtor);
 1024|       |	ts_allocate_fast_id(&language_scanner_globals_id, &language_scanner_globals_offset, sizeof(zend_php_scanner_globals), (ts_allocate_ctor) php_scanner_globals_ctor, NULL);
 1025|       |	ts_allocate_fast_id(&ini_scanner_globals_id, &ini_scanner_globals_offset, sizeof(zend_ini_scanner_globals), (ts_allocate_ctor) ini_scanner_globals_ctor, NULL);
 1026|       |	compiler_globals = ts_resource(compiler_globals_id);
 1027|       |	executor_globals = ts_resource(executor_globals_id);
 1028|       |
 1029|       |	compiler_globals_dtor(compiler_globals);
 1030|       |	compiler_globals->in_compilation = false;
 1031|       |	compiler_globals->function_table = (HashTable *) malloc(sizeof(HashTable));
 1032|       |	compiler_globals->class_table = (HashTable *) malloc(sizeof(HashTable));
 1033|       |
 1034|       |	*compiler_globals->function_table = *GLOBAL_FUNCTION_TABLE;
 1035|       |	*compiler_globals->class_table = *GLOBAL_CLASS_TABLE;
 1036|       |	compiler_globals->auto_globals = GLOBAL_AUTO_GLOBALS_TABLE;
 1037|       |
 1038|       |	zend_hash_destroy(executor_globals->zend_constants);
 1039|       |	*executor_globals->zend_constants = *GLOBAL_CONSTANTS_TABLE;
 1040|       |#else
 1041|      2|	ini_scanner_globals_ctor(&ini_scanner_globals);
 1042|      2|	php_scanner_globals_ctor(&language_scanner_globals);
 1043|      2|	zend_set_default_compile_time_values();
 1044|       |#ifdef ZEND_WIN32
 1045|       |	zend_get_windows_version_info(&EG(windows_version_info));
 1046|       |#endif
 1047|       |	/* Map region is going to be created and resized at run-time. */
 1048|      2|	CG(map_ptr_real_base) = NULL;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 1049|      2|	CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(NULL);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(NULL);
  ------------------
  |  |   71|      2|	((void*)(((uintptr_t)(real_base)) + zend_map_ptr_static_size * sizeof(void *) - 1))
  ------------------
 1050|      2|	CG(map_ptr_size) = 0;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 1051|      2|	CG(map_ptr_last) = 0;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 1052|      2|#endif /* ZTS */
 1053|      2|	EG(error_reporting) = E_ALL & ~E_NOTICE;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	EG(error_reporting) = E_ALL & ~E_NOTICE;
  ------------------
  |  |   42|      2|#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   22|      2|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   23|      2|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   24|      2|#define E_PARSE				(1<<2L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   25|      2|#define E_NOTICE			(1<<3L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   26|      2|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   27|      2|#define E_CORE_WARNING		(1<<5L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   29|      2|#define E_COMPILE_WARNING	(1<<7L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   30|      2|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   31|      2|#define E_USER_WARNING		(1<<9L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   32|      2|#define E_USER_NOTICE		(1<<10L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   35|      2|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   36|      2|#define E_DEPRECATED		(1<<13L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   37|      2|#define E_USER_DEPRECATED	(1<<14L)
  |  |  ------------------
  ------------------
              	EG(error_reporting) = E_ALL & ~E_NOTICE;
  ------------------
  |  |   25|      2|#define E_NOTICE			(1<<3L)
  ------------------
 1054|      2|	EG(fatal_error_backtrace_on) = false;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1055|      2|	ZVAL_UNDEF(&EG(last_fatal_error_backtrace));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1056|       |
 1057|      2|	zend_interned_strings_init();
 1058|      2|	zend_object_handlers_startup();
 1059|      2|	zend_startup_builtin_functions();
 1060|      2|	zend_register_standard_constants();
 1061|      2|	zend_register_auto_global(zend_string_init_interned("GLOBALS", sizeof("GLOBALS") - 1, 1), 1, php_auto_globals_create_globals);
 1062|       |
 1063|      2|#ifndef ZTS
 1064|      2|	zend_init_rsrc_plist();
 1065|      2|	zend_init_exception_op();
 1066|      2|	zend_init_call_trampoline_op();
 1067|      2|#endif
 1068|       |
 1069|      2|	zend_ini_startup();
 1070|       |
 1071|       |#ifdef ZEND_WIN32
 1072|       |	/* Uses INI settings, so needs to be run after it. */
 1073|       |	php_win32_cp_setup();
 1074|       |#endif
 1075|       |
 1076|      2|	zend_optimizer_startup();
 1077|       |
 1078|       |#ifdef ZTS
 1079|       |	tsrm_set_new_thread_end_handler(zend_new_thread_end_handler);
 1080|       |	tsrm_set_shutdown_handler(zend_interned_strings_dtor);
 1081|       |#endif
 1082|       |
 1083|      2|    zend_enum_startup();
 1084|      2|}
zend_register_standard_ini_entries:
 1088|      2|{
 1089|      2|	zend_register_ini_entries_ex(ini_entries, 0, MODULE_PERSISTENT);
  ------------------
  |  |   63|      2|#define MODULE_PERSISTENT 1
  ------------------
 1090|      2|}
zend_post_startup:
 1098|      2|{
 1099|       |#ifdef ZTS
 1100|       |	zend_encoding **script_encoding_list;
 1101|       |
 1102|       |	zend_compiler_globals *compiler_globals = ts_resource(compiler_globals_id);
 1103|       |	zend_executor_globals *executor_globals = ts_resource(executor_globals_id);
 1104|       |#endif
 1105|       |
 1106|      2|	startup_done = true;
 1107|       |
 1108|      2|	if (zend_post_startup_cb) {
  ------------------
  |  Branch (1108:6): [True: 2, False: 0]
  ------------------
 1109|      2|		zend_result (*cb)(void) = zend_post_startup_cb;
 1110|       |
 1111|      2|		zend_post_startup_cb = NULL;
 1112|      2|		if (cb() != SUCCESS) {
  ------------------
  |  Branch (1112:7): [True: 0, False: 2]
  ------------------
 1113|      0|			return FAILURE;
 1114|      0|		}
 1115|      2|	}
 1116|       |
 1117|       |#ifdef ZTS
 1118|       |	*GLOBAL_FUNCTION_TABLE = *compiler_globals->function_table;
 1119|       |	*GLOBAL_CLASS_TABLE = *compiler_globals->class_table;
 1120|       |	*GLOBAL_CONSTANTS_TABLE = *executor_globals->zend_constants;
 1121|       |	global_map_ptr_last = compiler_globals->map_ptr_last;
 1122|       |
 1123|       |	short_tags_default = CG(short_tags);
 1124|       |	compiler_options_default = CG(compiler_options);
 1125|       |
 1126|       |	zend_destroy_rsrc_list(&EG(persistent_list));
 1127|       |	free(compiler_globals->function_table);
 1128|       |	compiler_globals->function_table = NULL;
 1129|       |	free(compiler_globals->class_table);
 1130|       |	compiler_globals->class_table = NULL;
 1131|       |	if (compiler_globals->map_ptr_real_base) {
 1132|       |		free(compiler_globals->map_ptr_real_base);
 1133|       |	}
 1134|       |	compiler_globals->map_ptr_real_base = NULL;
 1135|       |	compiler_globals->map_ptr_base = ZEND_MAP_PTR_BIASED_BASE(NULL);
 1136|       |	if (compiler_globals->internal_run_time_cache) {
 1137|       |		pefree(compiler_globals->internal_run_time_cache, 1);
 1138|       |	}
 1139|       |	compiler_globals->internal_run_time_cache = NULL;
 1140|       |	if ((script_encoding_list = (zend_encoding **)compiler_globals->script_encoding_list)) {
 1141|       |		compiler_globals_ctor(compiler_globals);
 1142|       |		compiler_globals->script_encoding_list = (const zend_encoding **)script_encoding_list;
 1143|       |	} else {
 1144|       |		compiler_globals_ctor(compiler_globals);
 1145|       |	}
 1146|       |	free(EG(zend_constants));
 1147|       |	EG(zend_constants) = NULL;
 1148|       |
 1149|       |	executor_globals_ctor(executor_globals);
 1150|       |	global_persistent_list = &EG(persistent_list);
 1151|       |	zend_copy_ini_directives();
 1152|       |#else
 1153|      2|	global_map_ptr_last = CG(map_ptr_last);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 1154|      2|#endif
 1155|       |
 1156|      2|#ifdef ZEND_CHECK_STACK_LIMIT
 1157|      2|	zend_call_stack_init();
 1158|      2|#endif
 1159|      2|	gc_init();
 1160|       |
 1161|      2|	return SUCCESS;
 1162|      2|}
zend_set_utility_values:
 1240|      2|{
 1241|      2|	zend_uv = *utility_values;
 1242|      2|}
zenderror:
 1247|  2.09k|{
 1248|  2.09k|	CG(parse_error) = 0;
  ------------------
  |  |   35|  2.09k|# define CG(v) (compiler_globals.v)
  ------------------
 1249|       |
 1250|  2.09k|	if (EG(exception)) {
  ------------------
  |  |   45|  2.09k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 305, False: 1.79k]
  |  |  ------------------
  ------------------
 1251|       |		/* An exception was thrown in the lexer, don't throw another in the parser. */
 1252|    305|		return;
 1253|    305|	}
 1254|       |
 1255|  1.79k|	zend_throw_exception(zend_ce_parse_error, error, 0);
 1256|  1.79k|}
_zend_bailout:
 1260|  1.76k|{
 1261|       |
 1262|  1.76k|	if (!EG(bailout)) {
  ------------------
  |  |   45|  1.76k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1262:6): [True: 0, False: 1.76k]
  ------------------
 1263|      0|		zend_output_debug_string(1, "%s(%d) : Bailed out without a bailout address!", filename, lineno);
 1264|      0|		exit(-1);
 1265|      0|	}
 1266|  1.76k|	gc_protect(1);
 1267|  1.76k|	CG(unclean_shutdown) = 1;
  ------------------
  |  |   35|  1.76k|# define CG(v) (compiler_globals.v)
  ------------------
 1268|  1.76k|	CG(active_class_entry) = NULL;
  ------------------
  |  |   35|  1.76k|# define CG(v) (compiler_globals.v)
  ------------------
 1269|  1.76k|	CG(in_compilation) = 0;
  ------------------
  |  |   35|  1.76k|# define CG(v) (compiler_globals.v)
  ------------------
 1270|  1.76k|	CG(memoize_mode) = 0;
  ------------------
  |  |   35|  1.76k|# define CG(v) (compiler_globals.v)
  ------------------
 1271|  1.76k|	EG(current_execute_data) = NULL;
  ------------------
  |  |   45|  1.76k|# define EG(v) (executor_globals.v)
  ------------------
 1272|  1.76k|	LONGJMP(*EG(bailout), FAILURE);
  ------------------
  |  |  465|  1.76k|# define LONGJMP(a,b) siglongjmp(a, b)
  ------------------
 1273|  1.76k|}
zend_get_page_size:
 1277|      1|{
 1278|       |#ifdef _WIN32
 1279|       |	SYSTEM_INFO system_info;
 1280|       |	GetSystemInfo(&system_info);
 1281|       |	return system_info.dwPageSize;
 1282|       |#elif defined(__FreeBSD__) || defined(__APPLE__)
 1283|       |	/* This returns the value obtained from
 1284|       |	 * the auxv vector, avoiding a
 1285|       |	 * syscall (on FreeBSD)/function call (on macOS). */
 1286|       |	return getpagesize();
 1287|       |#else
 1288|       |	return (size_t) sysconf(_SC_PAGESIZE);
 1289|      1|#endif
 1290|      1|}
zend_append_version_info:
 1293|      2|{
 1294|      2|	char *new_info;
 1295|      2|	uint32_t new_info_length;
 1296|       |
 1297|      2|	new_info_length = (uint32_t)(sizeof("    with  v, , by \n")
 1298|      2|						+ strlen(extension->name)
 1299|      2|						+ strlen(extension->version)
 1300|      2|						+ strlen(extension->copyright)
 1301|      2|						+ strlen(extension->author));
 1302|       |
 1303|      2|	new_info = (char *) malloc(new_info_length + 1);
 1304|       |
 1305|      2|	snprintf(new_info, new_info_length, "    with %s v%s, %s, by %s\n", extension->name, extension->version, extension->copyright, extension->author);
  ------------------
  |  |   97|      2|#define snprintf ap_php_snprintf
  ------------------
 1306|       |
 1307|       |	zend_version_info = (char *) perealloc(zend_version_info, zend_version_info_length+new_info_length + 1, true);
  ------------------
  |  |  200|      2|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 2, Folded]
  |  |  ------------------
  ------------------
 1308|      2|	strncat(zend_version_info, new_info, new_info_length);
 1309|      2|	zend_version_info_length += new_info_length;
 1310|      2|	free(new_info);
 1311|      2|}
get_zend_version:
 1315|      1|{
 1316|      1|	return zend_version_info;
 1317|      1|}
zend_activate:
 1321|  33.5k|{
 1322|       |#ifdef ZTS
 1323|       |	virtual_cwd_activate();
 1324|       |#endif
 1325|  33.5k|	gc_reset();
 1326|  33.5k|	init_compiler();
 1327|  33.5k|	init_executor();
 1328|  33.5k|	startup_scanner();
 1329|  33.5k|	if (CG(map_ptr_last)) {
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1330|  33.5k|		memset((void **)CG(map_ptr_real_base) + zend_map_ptr_static_size, 0, CG(map_ptr_last) * sizeof(void*));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
              		memset((void **)CG(map_ptr_real_base) + zend_map_ptr_static_size, 0, CG(map_ptr_last) * sizeof(void*));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
 1331|  33.5k|	}
 1332|  33.5k|	zend_reset_internal_run_time_cache();
 1333|  33.5k|	zend_observer_activate();
 1334|  33.5k|}
zend_call_destructors:
 1338|  33.5k|{
 1339|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1340|  33.5k|		shutdown_destructors();
 1341|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1342|  33.5k|}
zend_deactivate:
 1346|  33.5k|{
 1347|       |	/* we're no longer executing anything */
 1348|  33.5k|	EG(current_execute_data) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1349|       |
 1350|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1351|  33.5k|		shutdown_scanner();
 1352|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1353|       |
 1354|       |	/* shutdown_executor() takes care of its own bailout handling */
 1355|  33.5k|	shutdown_executor();
 1356|       |
 1357|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1358|  33.5k|		zend_ini_deactivate();
 1359|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1360|       |
 1361|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1362|  33.5k|		shutdown_compiler();
 1363|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1364|       |
 1365|  33.5k|	zend_destroy_rsrc_list(&EG(regular_list));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1366|       |
 1367|       |	/* See GH-8646: https://github.com/php/php-src/issues/8646
 1368|       |	 *
 1369|       |	 * Interned strings that hold class entries can get a corresponding slot in map_ptr for the CE cache.
 1370|       |	 * map_ptr works like a bump allocator: there is a counter which increases to allocate the next slot in the map.
 1371|       |	 *
 1372|       |	 * For class name strings in non-opcache we have:
 1373|       |	 *   - on startup: permanent + interned
 1374|       |	 *   - on request: interned
 1375|       |	 * For class name strings in opcache we have:
 1376|       |	 *   - on startup: permanent + interned
 1377|       |	 *   - on request: either not interned at all, which we can ignore because they won't get a CE cache entry
 1378|       |	 *                 or they were already permanent + interned
 1379|       |	 *                 or we get a new permanent + interned string in the opcache persistence code
 1380|       |	 *
 1381|       |	 * Notice that the map_ptr layout always has the permanent strings first, and the request strings after.
 1382|       |	 * In non-opcache, a request string may get a slot in map_ptr, and that interned request string
 1383|       |	 * gets destroyed at the end of the request. The corresponding map_ptr slot can thereafter never be used again.
 1384|       |	 * This causes map_ptr to keep reallocating to larger and larger sizes.
 1385|       |	 *
 1386|       |	 * We solve it as follows:
 1387|       |	 * We can check whether we had any interned request strings, which only happens in non-opcache.
 1388|       |	 * If we have any, we reset map_ptr to the last permanent string.
 1389|       |	 * We can't lose any permanent strings because of map_ptr's layout.
 1390|       |	 */
 1391|  33.5k|	if (zend_hash_num_elements(&CG(interned_strings)) > 0) {
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1391:6): [True: 0, False: 33.5k]
  ------------------
 1392|      0|		zend_map_ptr_reset();
 1393|      0|	}
 1394|       |
 1395|       |#if GC_BENCH
 1396|       |	gc_bench_print();
 1397|       |#endif
 1398|  33.5k|}
zend_message_dispatcher:
 1402|    722|{
 1403|    722|	if (zend_message_dispatcher_p) {
  ------------------
  |  Branch (1403:6): [True: 722, False: 0]
  ------------------
 1404|    722|		zend_message_dispatcher_p(message, data);
 1405|    722|	}
 1406|    722|}
zend_get_configuration_directive:
 1410|    359|{
 1411|    359|	if (zend_get_configuration_directive_p) {
  ------------------
  |  Branch (1411:6): [True: 359, False: 0]
  ------------------
 1412|    359|		return zend_get_configuration_directive_p(name);
 1413|    359|	} else {
 1414|       |		return NULL;
 1415|      0|	}
 1416|    359|}
zend_error_zstr_at:
 1438|  52.8k|{
 1439|  52.8k|	zval params[4];
 1440|  52.8k|	zval retval;
 1441|  52.8k|	zval orig_user_error_handler;
 1442|  52.8k|	bool in_compilation;
 1443|  52.8k|	zend_class_entry *saved_class_entry = NULL;
 1444|  52.8k|	zend_stack loop_var_stack;
 1445|  52.8k|	zend_stack delayed_oplines_stack;
 1446|  52.8k|	int type = orig_type & E_ALL;
  ------------------
  |  |   42|  52.8k|#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   22|  52.8k|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   23|  52.8k|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   24|  52.8k|#define E_PARSE				(1<<2L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   25|  52.8k|#define E_NOTICE			(1<<3L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   26|  52.8k|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   27|  52.8k|#define E_CORE_WARNING		(1<<5L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   28|  52.8k|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   29|  52.8k|#define E_COMPILE_WARNING	(1<<7L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   30|  52.8k|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   31|  52.8k|#define E_USER_WARNING		(1<<9L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   32|  52.8k|#define E_USER_NOTICE		(1<<10L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   35|  52.8k|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   36|  52.8k|#define E_DEPRECATED		(1<<13L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   37|  52.8k|#define E_USER_DEPRECATED	(1<<14L)
  |  |  ------------------
  ------------------
 1447|  52.8k|	bool orig_record_errors;
 1448|  52.8k|	zend_err_buf orig_errors_buf;
 1449|  52.8k|	zend_result res;
 1450|       |
 1451|       |	/* If we're executing a function during SCCP, count any warnings that may be emitted,
 1452|       |	 * but don't perform any other error handling. */
 1453|  52.8k|	if (EG(capture_warnings_during_sccp)) {
  ------------------
  |  |   45|  52.8k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 52.8k]
  |  |  ------------------
  ------------------
 1454|      0|		ZEND_ASSERT(!(type & E_FATAL_ERRORS) && "Fatal error during SCCP");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1454:3): [True: 0, False: 0]
  |  Branch (1454:3): [True: 0, False: 0]
  |  Branch (1454:3): [True: 0, False: 0]
  |  Branch (1454:3): [True: 0, False: 0]
  ------------------
 1455|      0|		EG(capture_warnings_during_sccp)++;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1456|      0|		return;
 1457|      0|	}
 1458|       |
 1459|       |	/* Emit any delayed error before handling fatal error */
 1460|  52.8k|	if ((type & E_FATAL_ERRORS) && !(type & E_DONT_BAIL) && EG(errors).size) {
  ------------------
  |  |   46|  52.8k|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   22|  52.8k|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   26|  52.8k|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   28|  52.8k|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   30|  52.8k|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   35|  52.8k|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   24|  52.8k|#define E_PARSE				(1<<2L)
  |  |  ------------------
  ------------------
              	if ((type & E_FATAL_ERRORS) && !(type & E_DONT_BAIL) && EG(errors).size) {
  ------------------
  |  |   40|    685|#define E_DONT_BAIL			(1<<15L)
  ------------------
              	if ((type & E_FATAL_ERRORS) && !(type & E_DONT_BAIL) && EG(errors).size) {
  ------------------
  |  |   45|    685|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1460:6): [True: 685, False: 52.2k]
  |  Branch (1460:33): [True: 685, False: 0]
  |  Branch (1460:58): [True: 11, False: 674]
  ------------------
 1461|     11|		zend_err_buf errors_buf = EG(errors);
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1462|     11|		EG(errors).size = 0;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1463|       |
 1464|     11|		bool orig_record_errors = EG(record_errors);
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1465|     11|		EG(record_errors) = false;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1466|       |
 1467|       |		/* Disable user error handler before emitting delayed errors, as
 1468|       |		 * it's unsafe to execute user code after a fatal error. */
 1469|     11|		int orig_user_error_handler_error_reporting = EG(user_error_handler_error_reporting);
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1470|     11|		EG(user_error_handler_error_reporting) = 0;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1471|       |
 1472|     11|		zend_emit_recorded_errors_ex(errors_buf.size, errors_buf.errors);
 1473|       |
 1474|     11|		EG(user_error_handler_error_reporting) = orig_user_error_handler_error_reporting;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1475|     11|		EG(record_errors) = orig_record_errors;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1476|     11|		EG(errors) = errors_buf;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
 1477|     11|	}
 1478|       |
 1479|  52.8k|	if (EG(record_errors)) {
  ------------------
  |  |   45|  52.8k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 747, False: 52.1k]
  |  |  ------------------
  ------------------
 1480|    747|		zend_error_info *info = emalloc(sizeof(zend_error_info));
  ------------------
  |  |  150|    747|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    747|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    747|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    747|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    747|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1481|    747|		info->type = type;
 1482|    747|		info->lineno = error_lineno;
 1483|    747|		info->filename = zend_string_copy(error_filename);
 1484|    747|		info->message = zend_string_copy(message);
 1485|    747|		EG(errors).size++;
  ------------------
  |  |   45|    747|# define EG(v) (executor_globals.v)
  ------------------
 1486|    747|		if (EG(errors).size > EG(errors).capacity) {
  ------------------
  |  |   45|    747|# define EG(v) (executor_globals.v)
  ------------------
              		if (EG(errors).size > EG(errors).capacity) {
  ------------------
  |  |   45|    747|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1486:7): [True: 712, False: 35]
  ------------------
 1487|    712|			uint32_t capacity = EG(errors).capacity ? EG(errors).capacity + (EG(errors).capacity >> 1) : 2;
  ------------------
  |  |   45|    712|# define EG(v) (executor_globals.v)
  ------------------
              			uint32_t capacity = EG(errors).capacity ? EG(errors).capacity + (EG(errors).capacity >> 1) : 2;
  ------------------
  |  |   45|     25|# define EG(v) (executor_globals.v)
  ------------------
              			uint32_t capacity = EG(errors).capacity ? EG(errors).capacity + (EG(errors).capacity >> 1) : 2;
  ------------------
  |  |   45|     25|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1487:24): [True: 25, False: 687]
  ------------------
 1488|    712|			EG(errors).errors = erealloc(EG(errors).errors, sizeof(zend_error_info *) * capacity);
  ------------------
  |  |   45|    712|# define EG(v) (executor_globals.v)
  ------------------
              			EG(errors).errors = erealloc(EG(errors).errors, sizeof(zend_error_info *) * capacity);
  ------------------
  |  |  158|    712|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    712|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    712|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    712|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    712|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1489|    712|			EG(errors).capacity = capacity;
  ------------------
  |  |   45|    712|# define EG(v) (executor_globals.v)
  ------------------
 1490|    712|		}
 1491|    747|		EG(errors).errors[EG(errors).size - 1] = info;
  ------------------
  |  |   45|    747|# define EG(v) (executor_globals.v)
  ------------------
              		EG(errors).errors[EG(errors).size - 1] = info;
  ------------------
  |  |   45|    747|# define EG(v) (executor_globals.v)
  ------------------
 1492|       |
 1493|       |		/* Do not process non-fatal recorded error */
 1494|    747|		if (!(type & E_FATAL_ERRORS) || (type & E_DONT_BAIL)) {
  ------------------
  |  |   46|    747|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   22|    747|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   26|    747|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   28|    747|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   30|    747|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   35|    747|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   24|    747|#define E_PARSE				(1<<2L)
  |  |  ------------------
  ------------------
              		if (!(type & E_FATAL_ERRORS) || (type & E_DONT_BAIL)) {
  ------------------
  |  |   40|    614|#define E_DONT_BAIL			(1<<15L)
  ------------------
  |  Branch (1494:7): [True: 133, False: 614]
  |  Branch (1494:35): [True: 0, False: 614]
  ------------------
 1495|    133|			return;
 1496|    133|		}
 1497|    747|	}
 1498|       |
 1499|       |	// Always clear the last backtrace.
 1500|  52.7k|	zval_ptr_dtor(&EG(last_fatal_error_backtrace));
  ------------------
  |  |   45|  52.7k|# define EG(v) (executor_globals.v)
  ------------------
 1501|  52.7k|	ZVAL_UNDEF(&EG(last_fatal_error_backtrace));
  ------------------
  |  | 1055|  52.7k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  52.7k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  52.7k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  52.7k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  52.7k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  52.7k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 52.7k]
  |  |  ------------------
  ------------------
 1502|       |
 1503|       |	/* Report about uncaught exception in case of fatal errors */
 1504|  52.7k|	if (EG(exception)) {
  ------------------
  |  |   45|  52.7k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 29, False: 52.7k]
  |  |  ------------------
  ------------------
 1505|     29|		if (type & E_FATAL_ERRORS) {
  ------------------
  |  |   46|     29|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   22|     29|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   26|     29|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   28|     29|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   30|     29|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   35|     29|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   24|     29|#define E_PARSE				(1<<2L)
  |  |  ------------------
  ------------------
  |  Branch (1505:7): [True: 1, False: 28]
  ------------------
 1506|      1|			zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1507|      1|			const zend_op *opline = NULL;
 1508|       |
 1509|      2|			while (ex && (!ex->func || !ZEND_USER_CODE(ex->func->type))) {
  ------------------
  |  | 1081|      2|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (1509:11): [True: 2, False: 0]
  |  Branch (1509:18): [True: 0, False: 2]
  |  Branch (1509:31): [True: 1, False: 1]
  ------------------
 1510|      1|				ex = ex->prev_execute_data;
 1511|      1|			}
 1512|      1|			if (ex && ex->opline->opcode == ZEND_HANDLE_EXCEPTION &&
  ------------------
  |  |  271|      2|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (1512:8): [True: 1, False: 0]
  |  Branch (1512:14): [True: 0, False: 1]
  ------------------
 1513|      0|			    EG(opline_before_exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1514|      0|				opline = EG(opline_before_exception);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1515|      0|			}
 1516|      1|			zend_exception_error(EG(exception), E_WARNING);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              			zend_exception_error(EG(exception), E_WARNING);
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 1517|      1|			EG(exception) = NULL;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1518|      1|			if (opline) {
  ------------------
  |  Branch (1518:8): [True: 0, False: 1]
  ------------------
 1519|      0|				ex->opline = opline;
 1520|      0|			}
 1521|      1|		}
 1522|  52.7k|	} else if (EG(fatal_error_backtrace_on) && (type & E_FATAL_ERRORS)) {
  ------------------
  |  |   45|   105k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 52.7k, False: 0]
  |  |  ------------------
  ------------------
              	} else if (EG(fatal_error_backtrace_on) && (type & E_FATAL_ERRORS)) {
  ------------------
  |  |   46|  52.7k|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   22|  52.7k|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   26|  52.7k|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   28|  52.7k|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   30|  52.7k|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   35|  52.7k|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   24|  52.7k|#define E_PARSE				(1<<2L)
  |  |  ------------------
  ------------------
  |  Branch (1522:45): [True: 684, False: 52.0k]
  ------------------
 1523|    684|		zend_fetch_debug_backtrace(&EG(last_fatal_error_backtrace), 0, EG(exception_ignore_args) ? DEBUG_BACKTRACE_IGNORE_ARGS : 0, 0);
  ------------------
  |  |   45|    684|# define EG(v) (executor_globals.v)
  ------------------
              		zend_fetch_debug_backtrace(&EG(last_fatal_error_backtrace), 0, EG(exception_ignore_args) ? DEBUG_BACKTRACE_IGNORE_ARGS : 0, 0);
  ------------------
  |  |   45|    684|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 684]
  |  |  ------------------
  ------------------
              		zend_fetch_debug_backtrace(&EG(last_fatal_error_backtrace), 0, EG(exception_ignore_args) ? DEBUG_BACKTRACE_IGNORE_ARGS : 0, 0);
  ------------------
  |  |  459|      0|#define DEBUG_BACKTRACE_IGNORE_ARGS    (1<<1)
  ------------------
 1524|    684|	}
 1525|       |
 1526|  52.7k|	zend_observer_error_notify(type, error_filename, error_lineno, message);
 1527|       |
 1528|       |	/* if we don't have a user defined error handler */
 1529|  52.7k|	if (Z_TYPE(EG(user_error_handler)) == IS_UNDEF
  ------------------
  |  |  668|  52.7k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(EG(user_error_handler)) == IS_UNDEF
  ------------------
  |  |  606|   105k|#define IS_UNDEF					0
  ------------------
  |  Branch (1529:6): [True: 52.7k, False: 0]
  ------------------
 1530|      0|		|| !(EG(user_error_handler_error_reporting) & type)
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1530:6): [True: 0, False: 0]
  ------------------
 1531|  52.7k|		|| EG(error_handling) != EH_NORMAL) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1531:6): [True: 0, False: 0]
  ------------------
 1532|  52.7k|		zend_error_cb(orig_type, error_filename, error_lineno, message);
 1533|  52.7k|	} else switch (type) {
 1534|      0|		case E_ERROR:
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (1534:3): [True: 0, False: 0]
  ------------------
 1535|      0|		case E_PARSE:
  ------------------
  |  |   24|      0|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1535:3): [True: 0, False: 0]
  ------------------
 1536|      0|		case E_CORE_ERROR:
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
  |  Branch (1536:3): [True: 0, False: 0]
  ------------------
 1537|      0|		case E_CORE_WARNING:
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
  |  Branch (1537:3): [True: 0, False: 0]
  ------------------
 1538|      0|		case E_COMPILE_ERROR:
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (1538:3): [True: 0, False: 0]
  ------------------
 1539|      0|		case E_COMPILE_WARNING:
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
  |  Branch (1539:3): [True: 0, False: 0]
  ------------------
 1540|       |			/* The error may not be safe to handle in user-space */
 1541|      0|			zend_error_cb(orig_type, error_filename, error_lineno, message);
 1542|      0|			break;
 1543|      0|		default:
  ------------------
  |  Branch (1543:3): [True: 0, False: 0]
  ------------------
 1544|       |			/* Handle the error in user space */
 1545|      0|			ZVAL_STR_COPY(&params[1], message);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1546|      0|			ZVAL_LONG(&params[0], type);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1547|       |
 1548|      0|			if (error_filename) {
  ------------------
  |  Branch (1548:8): [True: 0, False: 0]
  ------------------
 1549|      0|				ZVAL_STR_COPY(&params[2], error_filename);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1550|      0|			} else {
 1551|      0|				ZVAL_NULL(&params[2]);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1552|      0|			}
 1553|       |
 1554|      0|			ZVAL_LONG(&params[3], error_lineno);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1555|       |
 1556|      0|			ZVAL_COPY_VALUE(&orig_user_error_handler, &EG(user_error_handler));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1557|      0|			ZVAL_UNDEF(&EG(user_error_handler));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1558|       |
 1559|       |			/* User error handler may include() additional PHP files.
 1560|       |			 * If an error was generated during compilation PHP will compile
 1561|       |			 * such scripts recursively, but some CG() variables may be
 1562|       |			 * inconsistent. */
 1563|       |
 1564|      0|			in_compilation = CG(in_compilation);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1565|      0|			if (in_compilation) {
  ------------------
  |  Branch (1565:8): [True: 0, False: 0]
  ------------------
 1566|      0|				saved_class_entry = CG(active_class_entry);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1567|      0|				CG(active_class_entry) = NULL;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1568|      0|				SAVE_STACK(loop_var_stack);
  ------------------
  |  | 1419|      0|#define SAVE_STACK(stack) do { \
  |  | 1420|      0|		if (CG(stack).top) { \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (1420:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1421|      0|			memcpy(&stack, &CG(stack), sizeof(zend_stack)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1422|      0|			CG(stack).top = CG(stack).max = 0; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |               			CG(stack).top = CG(stack).max = 0; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1423|      0|			CG(stack).elements = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1424|      0|		} else { \
  |  | 1425|      0|			stack.top = 0; \
  |  | 1426|      0|		} \
  |  | 1427|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1427:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1569|      0|				SAVE_STACK(delayed_oplines_stack);
  ------------------
  |  | 1419|      0|#define SAVE_STACK(stack) do { \
  |  | 1420|      0|		if (CG(stack).top) { \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (1420:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1421|      0|			memcpy(&stack, &CG(stack), sizeof(zend_stack)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1422|      0|			CG(stack).top = CG(stack).max = 0; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |               			CG(stack).top = CG(stack).max = 0; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1423|      0|			CG(stack).elements = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1424|      0|		} else { \
  |  | 1425|      0|			stack.top = 0; \
  |  | 1426|      0|		} \
  |  | 1427|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1427:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1570|      0|				CG(in_compilation) = 0;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1571|      0|			}
 1572|       |
 1573|      0|			orig_record_errors = EG(record_errors);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1574|      0|			EG(record_errors) = false;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1575|       |
 1576|      0|			orig_errors_buf = EG(errors);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1577|      0|			memset(&EG(errors), 0, sizeof(EG(errors)));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			memset(&EG(errors), 0, sizeof(EG(errors)));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1578|       |
 1579|      0|			res = call_user_function(CG(function_table), NULL, &orig_user_error_handler, &retval, 4, params);
  ------------------
  |  |  694|      0|	_call_user_function_impl(object, function_name, retval_ptr, param_count, params, NULL)
  ------------------
 1580|       |
 1581|      0|			EG(record_errors) = orig_record_errors;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1582|      0|			EG(errors) = orig_errors_buf;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1583|       |
 1584|      0|			if (res == SUCCESS) {
  ------------------
  |  Branch (1584:8): [True: 0, False: 0]
  ------------------
 1585|      0|				if (Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1585:9): [True: 0, False: 0]
  ------------------
 1586|      0|					if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1586:10): [True: 0, False: 0]
  ------------------
 1587|      0|						zend_error_cb(orig_type, error_filename, error_lineno, message);
 1588|      0|					}
 1589|      0|					zval_ptr_dtor(&retval);
 1590|      0|				}
 1591|      0|			} else if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1591:15): [True: 0, False: 0]
  ------------------
 1592|       |				/* The user error handler failed, use built-in error handler */
 1593|      0|				zend_error_cb(orig_type, error_filename, error_lineno, message);
 1594|      0|			}
 1595|       |
 1596|      0|			if (in_compilation) {
  ------------------
  |  Branch (1596:8): [True: 0, False: 0]
  ------------------
 1597|      0|				CG(active_class_entry) = saved_class_entry;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1598|      0|				RESTORE_STACK(loop_var_stack);
  ------------------
  |  | 1429|      0|#define RESTORE_STACK(stack) do { \
  |  | 1430|      0|		if (stack.top) { \
  |  |  ------------------
  |  |  |  Branch (1430:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1431|      0|			zend_stack_destroy(&CG(stack)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1432|      0|			memcpy(&CG(stack), &stack, sizeof(zend_stack)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1433|      0|		} \
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1599|      0|				RESTORE_STACK(delayed_oplines_stack);
  ------------------
  |  | 1429|      0|#define RESTORE_STACK(stack) do { \
  |  | 1430|      0|		if (stack.top) { \
  |  |  ------------------
  |  |  |  Branch (1430:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1431|      0|			zend_stack_destroy(&CG(stack)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1432|      0|			memcpy(&CG(stack), &stack, sizeof(zend_stack)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1433|      0|		} \
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1600|      0|				CG(in_compilation) = 1;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1601|      0|			}
 1602|       |
 1603|      0|			zval_ptr_dtor(&params[2]);
 1604|      0|			zval_ptr_dtor(&params[1]);
 1605|       |
 1606|      0|			if (Z_TYPE(EG(user_error_handler)) == IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EG(user_error_handler)) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1606:8): [True: 0, False: 0]
  ------------------
 1607|      0|				ZVAL_COPY_VALUE(&EG(user_error_handler), &orig_user_error_handler);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1608|      0|			} else {
 1609|      0|				zval_ptr_dtor(&orig_user_error_handler);
 1610|      0|			}
 1611|      0|			break;
 1612|      0|	}
 1613|       |
 1614|  52.7k|	if (type == E_PARSE) {
  ------------------
  |  |   24|  52.7k|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1614:6): [True: 0, False: 52.7k]
  ------------------
 1615|       |		/* eval() errors do not affect exit_status */
 1616|      0|		if (!(EG(current_execute_data) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1617|      0|			EG(current_execute_data)->func &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1617:4): [True: 0, False: 0]
  ------------------
 1618|      0|			ZEND_USER_CODE(EG(current_execute_data)->func->type) &&
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1619|      0|			EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL &&
  ------------------
  |  |  196|      0|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (1619:4): [True: 0, False: 0]
  ------------------
 1620|      0|			EG(current_execute_data)->opline->extended_value == ZEND_EVAL)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			EG(current_execute_data)->opline->extended_value == ZEND_EVAL)) {
  ------------------
  |  | 1083|      0|#define ZEND_EVAL				(1<<0)
  ------------------
  |  Branch (1620:4): [True: 0, False: 0]
  ------------------
 1621|      0|			EG(exit_status) = 255;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1622|      0|		}
 1623|      0|	}
 1624|  52.7k|}
zend_error_at:
 1678|     68|		int type, zend_string *filename, uint32_t lineno, const char *format, ...) {
 1679|     68|	va_list args;
 1680|       |
 1681|     68|	if (!filename) {
  ------------------
  |  Branch (1681:6): [True: 0, False: 68]
  ------------------
 1682|      0|		uint32_t dummy_lineno;
 1683|      0|		get_filename_lineno(type, &filename, &dummy_lineno);
 1684|      0|	}
 1685|       |
 1686|     68|	va_start(args, format);
 1687|     68|	zend_error_va_list(type, filename, lineno, format, args);
 1688|       |	va_end(args);
 1689|     68|}
zend_error:
 1701|  14.4k|ZEND_API ZEND_COLD void zend_error(int type, const char *format, ...) {
 1702|       |	zend_error_impl(type, format);
  ------------------
  |  | 1691|  14.4k|#define zend_error_impl(type, format) do { \
  |  | 1692|  14.4k|		zend_string *filename; \
  |  | 1693|  14.4k|		uint32_t lineno; \
  |  | 1694|  14.4k|		va_list args; \
  |  | 1695|  14.4k|		get_filename_lineno(type, &filename, &lineno); \
  |  | 1696|  14.4k|		va_start(args, format); \
  |  | 1697|  14.4k|		zend_error_va_list(type, filename, lineno, format, args); \
  |  | 1698|  14.4k|		va_end(args); \
  |  | 1699|  14.4k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1699:11): [Folded, False: 14.4k]
  |  |  ------------------
  ------------------
 1703|  14.4k|}
zend_error_unchecked:
 1705|  36.7k|ZEND_API ZEND_COLD void zend_error_unchecked(int type, const char *format, ...) {
 1706|       |	zend_error_impl(type, format);
  ------------------
  |  | 1691|  36.7k|#define zend_error_impl(type, format) do { \
  |  | 1692|  36.7k|		zend_string *filename; \
  |  | 1693|  36.7k|		uint32_t lineno; \
  |  | 1694|  36.7k|		va_list args; \
  |  | 1695|  36.7k|		get_filename_lineno(type, &filename, &lineno); \
  |  | 1696|  36.7k|		va_start(args, format); \
  |  | 1697|  36.7k|		zend_error_va_list(type, filename, lineno, format, args); \
  |  | 1698|  36.7k|		va_end(args); \
  |  | 1699|  36.7k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1699:11): [Folded, False: 36.7k]
  |  |  ------------------
  ------------------
 1707|  36.7k|}
zend_error_at_noreturn:
 1711|     13|{
 1712|     13|	va_list args;
 1713|       |
 1714|     13|	if (!filename) {
  ------------------
  |  Branch (1714:6): [True: 0, False: 13]
  ------------------
 1715|      0|		uint32_t dummy_lineno;
 1716|      0|		get_filename_lineno(type, &filename, &dummy_lineno);
 1717|      0|	}
 1718|       |
 1719|     13|	va_start(args, format);
 1720|     13|	zend_error_va_list(type, filename, lineno, format, args);
 1721|     13|	va_end(args);
 1722|       |	/* Should never reach this. */
 1723|     13|	abort();
 1724|     13|}
zend_error_noreturn:
 1739|    541|{
 1740|       |	zend_error_noreturn_impl(type, format);
  ------------------
  |  | 1726|    541|#define zend_error_noreturn_impl(type, format) do { \
  |  | 1727|    541|		zend_string *filename; \
  |  | 1728|    541|		uint32_t lineno; \
  |  | 1729|    541|		va_list args; \
  |  | 1730|    541|		get_filename_lineno(type, &filename, &lineno); \
  |  | 1731|    541|		va_start(args, format); \
  |  | 1732|    541|		zend_error_va_list(type, filename, lineno, format, args); \
  |  | 1733|    541|		va_end(args); \
  |  | 1734|    541|		/* Should never reach this. */ \
  |  | 1735|    541|		abort(); \
  |  | 1736|    541|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1736:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1741|    541|}
zend_error_noreturn_unchecked:
 1744|      4|{
 1745|       |	zend_error_noreturn_impl(type, format);
  ------------------
  |  | 1726|      4|#define zend_error_noreturn_impl(type, format) do { \
  |  | 1727|      4|		zend_string *filename; \
  |  | 1728|      4|		uint32_t lineno; \
  |  | 1729|      4|		va_list args; \
  |  | 1730|      4|		get_filename_lineno(type, &filename, &lineno); \
  |  | 1731|      4|		va_start(args, format); \
  |  | 1732|      4|		zend_error_va_list(type, filename, lineno, format, args); \
  |  | 1733|      4|		va_end(args); \
  |  | 1734|      4|		/* Should never reach this. */ \
  |  | 1735|      4|		abort(); \
  |  | 1736|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1736:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1746|      4|}
zend_error_zstr:
 1766|    961|ZEND_API ZEND_COLD void zend_error_zstr(int type, zend_string *message) {
 1767|    961|	zend_string *filename;
 1768|    961|	uint32_t lineno;
 1769|    961|	get_filename_lineno(type, &filename, &lineno);
 1770|    961|	zend_error_zstr_at(type, filename, lineno, message);
 1771|    961|}
zend_begin_record_errors:
 1774|  7.36k|{
 1775|  7.36k|	ZEND_ASSERT(!EG(record_errors) && "Error recording already enabled");
  ------------------
  |  |  112|  7.36k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1775:2): [True: 0, False: 7.36k]
  |  Branch (1775:2): [True: 0, False: 0]
  |  Branch (1775:2): [True: 7.36k, False: 0]
  |  Branch (1775:2): [True: 7.36k, False: 0]
  ------------------
 1776|  7.36k|	EG(record_errors) = true;
  ------------------
  |  |   45|  7.36k|# define EG(v) (executor_globals.v)
  ------------------
 1777|  7.36k|	EG(errors).size = 0;
  ------------------
  |  |   45|  7.36k|# define EG(v) (executor_globals.v)
  ------------------
 1778|  7.36k|}
zend_emit_recorded_errors_ex:
 1781|  33.2k|{
 1782|  33.4k|	for (uint32_t i = 0; i < num_errors; i++) {
  ------------------
  |  Branch (1782:23): [True: 133, False: 33.2k]
  ------------------
 1783|    133|		zend_error_info *error = errors[i];
 1784|    133|		zend_error_zstr_at(error->type, error->filename, error->lineno, error->message);
 1785|    133|	}
 1786|  33.2k|}
zend_emit_recorded_errors:
 1789|  6.72k|{
 1790|  6.72k|	EG(record_errors) = false;
  ------------------
  |  |   45|  6.72k|# define EG(v) (executor_globals.v)
  ------------------
 1791|  6.72k|	zend_emit_recorded_errors_ex(EG(errors).size, EG(errors).errors);
  ------------------
  |  |   45|  6.72k|# define EG(v) (executor_globals.v)
  ------------------
              	zend_emit_recorded_errors_ex(EG(errors).size, EG(errors).errors);
  ------------------
  |  |   45|  6.72k|# define EG(v) (executor_globals.v)
  ------------------
 1792|  6.72k|}
zend_free_recorded_errors:
 1795|  6.82k|{
 1796|  6.82k|	if (!EG(errors).size) {
  ------------------
  |  |   45|  6.82k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1796:6): [True: 6.64k, False: 173]
  ------------------
 1797|  6.64k|		return;
 1798|  6.64k|	}
 1799|       |
 1800|    385|	for (uint32_t i = 0; i < EG(errors).size; i++) {
  ------------------
  |  |   45|    385|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1800:23): [True: 212, False: 173]
  ------------------
 1801|    212|		zend_error_info *info = EG(errors).errors[i];
  ------------------
  |  |   45|    212|# define EG(v) (executor_globals.v)
  ------------------
 1802|    212|		zend_string_release(info->filename);
 1803|    212|		zend_string_release(info->message);
 1804|    212|		efree_size(info, sizeof(zend_error_info));
  ------------------
  |  |  138|    212|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|    212|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    212|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    212|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    212|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    212|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1805|    212|	}
 1806|    173|	efree(EG(errors).errors);
  ------------------
  |  |  154|    173|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    173|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    173|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    173|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    173|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1807|    173|	memset(&EG(errors), 0, sizeof(EG(errors)));
  ------------------
  |  |   45|    173|# define EG(v) (executor_globals.v)
  ------------------
              	memset(&EG(errors), 0, sizeof(EG(errors)));
  ------------------
  |  |   45|    173|# define EG(v) (executor_globals.v)
  ------------------
 1808|    173|}
zend_throw_error:
 1811|  2.40k|{
 1812|  2.40k|	va_list va;
 1813|  2.40k|	char *message = NULL;
 1814|       |
 1815|  2.40k|	if (!exception_ce) {
  ------------------
  |  Branch (1815:6): [True: 2.28k, False: 117]
  ------------------
 1816|  2.28k|		exception_ce = zend_ce_error;
 1817|  2.28k|	}
 1818|       |
 1819|       |	/* Marker used to disable exception generation during preloading. */
 1820|  2.40k|	if (EG(exception) == (void*)(uintptr_t)-1) {
  ------------------
  |  |   45|  2.40k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1820:6): [True: 0, False: 2.40k]
  ------------------
 1821|      0|		return;
 1822|      0|	}
 1823|       |
 1824|  2.40k|	va_start(va, format);
 1825|  2.40k|	zend_vspprintf(&message, 0, format, va);
 1826|       |
 1827|       |	//TODO: we can't convert compile-time errors to exceptions yet???
 1828|  2.40k|	if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   45|  4.80k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2.39k, False: 1]
  |  |  ------------------
  ------------------
              	if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   35|  2.39k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1828:34): [True: 2.39k, False: 0]
  ------------------
 1829|  2.39k|		zend_throw_exception(exception_ce, message, 0);
 1830|  2.39k|	} else {
 1831|      1|		zend_error_noreturn(E_ERROR, "%s", message);
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
 1832|      1|	}
 1833|       |
 1834|  2.39k|	efree(message);
  ------------------
  |  |  154|  2.39k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  2.39k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  2.39k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  2.39k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  2.39k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1835|       |	va_end(va);
 1836|  2.39k|}
zend_illegal_container_offset:
 1841|     15|{
 1842|     15|	switch (type) {
 1843|      0|		case BP_VAR_IS:
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (1843:3): [True: 0, False: 15]
  ------------------
 1844|      0|			zend_type_error("Cannot access offset of type %s in isset or empty",
 1845|      0|				zend_zval_type_name(offset));
 1846|      0|			return;
 1847|      2|		case BP_VAR_UNSET:
  ------------------
  |  | 1079|      2|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (1847:3): [True: 2, False: 13]
  ------------------
 1848|       |			/* Consistent error for when trying to unset a string offset */
 1849|      2|			if (zend_string_equals(container, ZSTR_KNOWN(ZEND_STR_STRING))) {
  ------------------
  |  Branch (1849:8): [True: 2, False: 0]
  ------------------
 1850|      2|				zend_throw_error(NULL, "Cannot unset string offsets");
 1851|      2|			} else {
 1852|      0|				zend_type_error("Cannot unset offset of type %s on %s", zend_zval_type_name(offset), ZSTR_VAL(container));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1853|      0|			}
 1854|      2|			return;
 1855|     13|		default:
  ------------------
  |  Branch (1855:3): [True: 13, False: 2]
  ------------------
 1856|     13|			zend_type_error("Cannot access offset of type %s on %s",
 1857|     13|				zend_zval_type_name(offset), ZSTR_VAL(container));
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1858|     13|			return;
 1859|     15|	}
 1860|     15|}
zend_type_error:
 1863|    147|{
 1864|    147|	va_list va;
 1865|    147|	char *message = NULL;
 1866|       |
 1867|    147|	va_start(va, format);
 1868|    147|	zend_vspprintf(&message, 0, format, va);
 1869|    147|	zend_throw_exception(zend_ce_type_error, message, 0);
 1870|    147|	efree(message);
  ------------------
  |  |  154|    147|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    147|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    147|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    147|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    147|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1871|       |	va_end(va);
 1872|    147|} /* }}} */
zend_argument_count_error:
 1875|     92|{
 1876|     92|	va_list va;
 1877|     92|	char *message = NULL;
 1878|       |
 1879|     92|	va_start(va, format);
 1880|     92|	zend_vspprintf(&message, 0, format, va);
 1881|     92|	zend_throw_exception(zend_ce_argument_count_error, message, 0);
 1882|     92|	efree(message);
  ------------------
  |  |  154|     92|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     92|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     92|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     92|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     92|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1883|       |
 1884|       |	va_end(va);
 1885|     92|} /* }}} */
zend_value_error:
 1888|     10|{
 1889|     10|	va_list va;
 1890|     10|	char *message = NULL;
 1891|       |
 1892|     10|	va_start(va, format);
 1893|     10|	zend_vspprintf(&message, 0, format, va);
 1894|     10|	zend_throw_exception(zend_ce_value_error, message, 0);
 1895|     10|	efree(message);
  ------------------
  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1896|       |	va_end(va);
 1897|     10|} /* }}} */
zend_user_exception_handler:
 1926|      2|{
 1927|      2|	zval orig_user_exception_handler;
 1928|      2|	zval params[1], retval2;
 1929|      2|	zend_object *old_exception;
 1930|       |
 1931|      2|	if (zend_is_unwind_exit(EG(exception))) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1931:6): [True: 0, False: 2]
  ------------------
 1932|      0|		return;
 1933|      0|	}
 1934|       |
 1935|      2|	old_exception = EG(exception);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1936|      2|	EG(exception) = NULL;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1937|      2|	ZVAL_OBJ(&params[0], old_exception);
  ------------------
  |  | 1140|      2|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      2|		zval *__z = (z);						\
  |  | 1142|      2|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1938|       |
 1939|      2|	ZVAL_COPY_VALUE(&orig_user_exception_handler, &EG(user_exception_handler));
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1940|      2|	zend_stack_push(&EG(user_exception_handlers), &orig_user_exception_handler);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1941|      2|	ZVAL_UNDEF(&EG(user_exception_handler));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1942|       |
 1943|      2|	if (call_user_function(CG(function_table), NULL, &orig_user_exception_handler, &retval2, 1, params) == SUCCESS) {
  ------------------
  |  |  694|      2|	_call_user_function_impl(object, function_name, retval_ptr, param_count, params, NULL)
  ------------------
  |  Branch (1943:6): [True: 1, False: 1]
  ------------------
 1944|      1|		zval_ptr_dtor(&retval2);
 1945|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1946|      0|			OBJ_RELEASE(EG(exception));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1947|      0|			EG(exception) = NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1948|      0|		}
 1949|      1|		OBJ_RELEASE(old_exception);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1950|      1|	} else {
 1951|      1|		EG(exception) = old_exception;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1952|      1|	}
 1953|       |
 1954|      2|	if (Z_TYPE(EG(user_exception_handler)) == IS_UNDEF) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(EG(user_exception_handler)) == IS_UNDEF) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (1954:6): [True: 1, False: 1]
  ------------------
 1955|      1|		zval *tmp = zend_stack_top(&EG(user_exception_handlers));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1956|      1|		if (tmp) {
  ------------------
  |  Branch (1956:7): [True: 1, False: 0]
  ------------------
 1957|      1|			ZVAL_COPY_VALUE(&EG(user_exception_handler), tmp);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1958|      1|			zend_stack_del_top(&EG(user_exception_handlers));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1959|      1|		}
 1960|      1|	}
 1961|      2|} /* }}} */
zend_make_compiled_string_description:
 2018|  3.44k|{
 2019|  3.44k|	const char *cur_filename;
 2020|  3.44k|	int cur_lineno;
 2021|  3.44k|	char *compiled_string_description;
 2022|       |
 2023|  3.44k|	if (zend_is_compiling()) {
  ------------------
  |  Branch (2023:6): [True: 0, False: 3.44k]
  ------------------
 2024|      0|		cur_filename = ZSTR_VAL(zend_get_compiled_filename());
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2025|      0|		cur_lineno = zend_get_compiled_lineno();
 2026|  3.44k|	} else if (zend_is_executing()) {
  ------------------
  |  Branch (2026:13): [True: 3.44k, False: 0]
  ------------------
 2027|  3.44k|		cur_filename = zend_get_executed_filename();
 2028|  3.44k|		cur_lineno = zend_get_executed_lineno();
 2029|  3.44k|	} else {
 2030|      0|		cur_filename = "Unknown";
 2031|      0|		cur_lineno = 0;
 2032|      0|	}
 2033|       |
 2034|  3.44k|	zend_spprintf(&compiled_string_description, 0, COMPILED_STRING_DESCRIPTION_FORMAT, cur_filename, cur_lineno, name);
  ------------------
  |  | 2015|  3.44k|#define COMPILED_STRING_DESCRIPTION_FORMAT "%s(%d) : %s"
  ------------------
 2035|  3.44k|	return compiled_string_description;
 2036|  3.44k|}
zend_map_ptr_new:
 2054|    398|{
 2055|    398|	void **ptr;
 2056|       |
 2057|    398|	if (CG(map_ptr_last) >= CG(map_ptr_size)) {
  ------------------
  |  |   35|    398|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(map_ptr_last) >= CG(map_ptr_size)) {
  ------------------
  |  |   35|    398|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2057:6): [True: 2, False: 396]
  ------------------
 2058|       |		/* Grow map_ptr table */
 2059|      2|		CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(CG(map_ptr_last) + 1, 4096);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(CG(map_ptr_last) + 1, 4096);
  ------------------
  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 2060|      2|		CG(map_ptr_real_base) = perealloc(CG(map_ptr_real_base), (zend_map_ptr_static_size + CG(map_ptr_size)) * sizeof(void*), 1);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(map_ptr_real_base) = perealloc(CG(map_ptr_real_base), (zend_map_ptr_static_size + CG(map_ptr_size)) * sizeof(void*), 1);
  ------------------
  |  |  200|      2|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2061|      2|		CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
  ------------------
  |  |   71|      2|	((void*)(((uintptr_t)(real_base)) + zend_map_ptr_static_size * sizeof(void *) - 1))
  ------------------
 2062|      2|	}
 2063|    398|	ptr = (void**)CG(map_ptr_real_base) + zend_map_ptr_static_size + CG(map_ptr_last);
  ------------------
  |  |   35|    398|# define CG(v) (compiler_globals.v)
  ------------------
              	ptr = (void**)CG(map_ptr_real_base) + zend_map_ptr_static_size + CG(map_ptr_last);
  ------------------
  |  |   35|    398|# define CG(v) (compiler_globals.v)
  ------------------
 2064|    398|	*ptr = NULL;
 2065|    398|	CG(map_ptr_last)++;
  ------------------
  |  |   35|    398|# define CG(v) (compiler_globals.v)
  ------------------
 2066|    398|	return ZEND_MAP_PTR_PTR2OFFSET(ptr);
  ------------------
  |  |   37|    398|	((void*)(((char*)(ptr)) - ((char*)CG(map_ptr_base))))
  |  |  ------------------
  |  |  |  |   35|    398|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 2067|    398|}
zend_map_ptr_extend:
 2091|      1|{
 2092|      1|	if (last > CG(map_ptr_last)) {
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2092:6): [True: 0, False: 1]
  ------------------
 2093|      0|		void **ptr;
 2094|       |
 2095|      0|		if (last >= CG(map_ptr_size)) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2095:7): [True: 0, False: 0]
  ------------------
 2096|       |			/* Grow map_ptr table */
 2097|      0|			CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(last, 4096);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(last, 4096);
  ------------------
  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 2098|      0|			CG(map_ptr_real_base) = perealloc(CG(map_ptr_real_base), (zend_map_ptr_static_size + CG(map_ptr_size)) * sizeof(void*), 1);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(map_ptr_real_base) = perealloc(CG(map_ptr_real_base), (zend_map_ptr_static_size + CG(map_ptr_size)) * sizeof(void*), 1);
  ------------------
  |  |  200|      0|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2099|      0|			CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
  ------------------
  |  |   71|      0|	((void*)(((uintptr_t)(real_base)) + zend_map_ptr_static_size * sizeof(void *) - 1))
  ------------------
 2100|      0|		}
 2101|      0|		ptr = (void**)CG(map_ptr_real_base) + zend_map_ptr_static_size + CG(map_ptr_last);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		ptr = (void**)CG(map_ptr_real_base) + zend_map_ptr_static_size + CG(map_ptr_last);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2102|      0|		memset(ptr, 0, (last - CG(map_ptr_last)) * sizeof(void*));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2103|      0|		CG(map_ptr_last) = last;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2104|      0|	}
 2105|      1|}
zend_alloc_ce_cache:
 2108|  2.90k|{
 2109|  2.90k|	if (ZSTR_HAS_CE_CACHE(type_name) || !ZSTR_IS_INTERNED(type_name)) {
  ------------------
  |  |  862|  5.81k|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|  2.90k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  2.90k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|  2.90k|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|  2.90k|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 540, False: 2.36k]
  |  |  ------------------
  ------------------
  |  Branch (2109:38): [True: 1.08k, False: 1.28k]
  ------------------
 2110|  1.62k|		return;
 2111|  1.62k|	}
 2112|       |
 2113|  1.28k|	if ((GC_FLAGS(type_name) & IS_STR_PERMANENT) && startup_done) {
  ------------------
  |  |  777|  1.28k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.28k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if ((GC_FLAGS(type_name) & IS_STR_PERMANENT) && startup_done) {
  ------------------
  |  |  840|  1.28k|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  ------------------
  |  Branch (2113:6): [True: 1.28k, False: 0]
  |  Branch (2113:50): [True: 934, False: 348]
  ------------------
 2114|       |		/* Don't allocate slot on permanent interned string outside module startup.
 2115|       |		 * The cache slot would no longer be valid on the next request. */
 2116|    934|		return;
 2117|    934|	}
 2118|       |
 2119|    348|	if (zend_string_equals_ci(type_name, ZSTR_KNOWN(ZEND_STR_SELF))
  ------------------
  |  |  401|    696|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    348|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    696|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 348]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2120|    348|			|| zend_string_equals_ci(type_name, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  |  401|    348|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    348|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    696|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 348]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2121|      0|		return;
 2122|      0|	}
 2123|       |
 2124|       |	/* We use the refcount to keep map_ptr of corresponding type */
 2125|    348|	uint32_t ret;
 2126|    350|	do {
 2127|    350|		ret = ZEND_MAP_PTR_NEW_OFFSET();
  ------------------
  |  |   50|    350|	((uint32_t)(uintptr_t)zend_map_ptr_new())
  ------------------
 2128|    350|	} while (ret <= 2);
  ------------------
  |  Branch (2128:11): [True: 2, False: 348]
  ------------------
 2129|    348|	GC_ADD_FLAGS(type_name, IS_STR_CLASS_NAME_MAP_PTR);
  ------------------
  |  |  780|    348|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    348|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    348|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    348|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    348|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 348]
  |  |  ------------------
  ------------------
 2130|    348|	GC_SET_REFCOUNT(type_name, ret);
  ------------------
  |  |  717|    348|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
 2131|    348|}
zend.c:zend_print_zval_r_to_buf:
  546|    168|{
  547|    168|	switch (Z_TYPE_P(expr)) {
  ------------------
  |  |  669|    168|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    168|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  548|     51|		case IS_ARRAY:
  ------------------
  |  |  613|     51|#define IS_ARRAY					7
  ------------------
  |  Branch (548:3): [True: 51, False: 117]
  ------------------
  549|     51|			smart_str_appends(buf, "Array\n");
  550|     51|			if (!(GC_FLAGS(Z_ARRVAL_P(expr)) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|     51|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     51|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(Z_ARRVAL_P(expr)) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|     51|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (550:8): [True: 50, False: 1]
  ------------------
  551|     50|				if (GC_IS_RECURSIVE(Z_ARRVAL_P(expr))) {
  ------------------
  |  |  887|     50|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|     50|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     50|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|     50|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 3, False: 47]
  |  |  ------------------
  ------------------
  552|      3|					smart_str_appends(buf, " *RECURSION*");
  553|      3|					return;
  554|      3|				}
  555|     47|				GC_PROTECT_RECURSION(Z_ARRVAL_P(expr));
  ------------------
  |  |  889|     47|#define GC_PROTECT_RECURSION(p) do { \
  |  |  890|     47|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  780|     47|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  781|     47|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     47|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     47|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  782|     47|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (782:11): [Folded, False: 47]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  891|     47|	} while (0)
  |  |  ------------------
  |  |  |  Branch (891:11): [Folded, False: 47]
  |  |  ------------------
  ------------------
  556|     47|			}
  557|     48|			print_hash(buf, Z_ARRVAL_P(expr), indent, false);
  ------------------
  |  |  997|     48|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     48|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     48|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  558|     48|			GC_TRY_UNPROTECT_RECURSION(Z_ARRVAL_P(expr));
  ------------------
  |  |  901|     48|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  902|     48|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  777|     48|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     48|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  801|     48|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  893|     47|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|     47|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|     47|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|     47|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     47|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|     47|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|     47|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 47]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|     47|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 47]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (902:7): [True: 47, False: 1]
  |  |  ------------------
  |  |  903|     48|	} while (0)
  |  |  ------------------
  |  |  |  Branch (903:11): [Folded, False: 48]
  |  |  ------------------
  ------------------
  559|     48|			break;
  560|     20|		case IS_OBJECT:
  ------------------
  |  |  614|     20|#define IS_OBJECT					8
  ------------------
  |  Branch (560:3): [True: 20, False: 148]
  ------------------
  561|     20|			{
  562|     20|				HashTable *properties;
  563|       |
  564|     20|				zend_object *zobj = Z_OBJ_P(expr);
  ------------------
  |  | 1000|     20|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     20|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  565|     20|				uint32_t *guard = zend_get_recursion_guard(zobj);
  566|     20|				zend_string *class_name = Z_OBJ_HANDLER_P(expr, get_class_name)(zobj);
  ------------------
  |  | 1006|     20|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|     20|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|     20|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|     20|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|       |				/* cut off on NULL byte ... class@anonymous */
  568|     20|				smart_str_appends(buf, ZSTR_VAL(class_name));
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  569|     20|				zend_string_release_ex(class_name, 0);
  570|       |
  571|     20|				if (!(zobj->ce->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|     20|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (571:9): [True: 14, False: 6]
  ------------------
  572|     14|					smart_str_appends(buf, " Object\n");
  573|     14|				} else {
  574|      6|					smart_str_appends(buf, " Enum");
  575|      6|					if (zobj->ce->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  606|      6|#define IS_UNDEF					0
  ------------------
  |  Branch (575:10): [True: 3, False: 3]
  ------------------
  576|      3|						smart_str_appendc(buf, ':');
  577|      3|						smart_str_appends(buf, zend_get_type_by_const(zobj->ce->enum_backing_type));
  578|      3|					}
  579|      6|					smart_str_appendc(buf, '\n');
  580|      6|				}
  581|       |
  582|     20|				if (ZEND_GUARD_OR_GC_IS_RECURSIVE(guard, DEBUG, zobj)) {
  ------------------
  |  |  913|     20|	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  654|      0|#define ZEND_GUARD_IS_RECURSIVE(pg, t)			((*pg & ZEND_GUARD_RECURSION_TYPE(t)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|      0|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  887|     20|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|     20|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|     20|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (913:2): [True: 0, False: 20]
  |  |  |  Branch (913:3): [True: 0, False: 20]
  |  |  ------------------
  ------------------
  583|      0|					smart_str_appends(buf, " *RECURSION*");
  584|      0|					return;
  585|      0|				}
  586|       |
  587|     20|				if ((properties = zend_get_properties_for(expr, ZEND_PROP_PURPOSE_DEBUG)) == NULL) {
  ------------------
  |  Branch (587:9): [True: 0, False: 20]
  ------------------
  588|      0|					print_hash(buf, (HashTable*) &zend_empty_array, indent, true);
  589|      0|					break;
  590|      0|				}
  591|       |
  592|     20|				ZEND_GUARD_OR_GC_PROTECT_RECURSION(guard, DEBUG, zobj);
  ------------------
  |  |  915|     20|#define ZEND_GUARD_OR_GC_PROTECT_RECURSION(pg, t, zobj) do { \
  |  |  916|     20|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (916:7): [True: 0, False: 20]
  |  |  ------------------
  |  |  917|      0|			ZEND_GUARD_PROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  655|      0|#define ZEND_GUARD_PROTECT_RECURSION(pg, t)		*pg |= ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|      0|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  918|     20|		} else { \
  |  |  919|     20|			GC_PROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  889|     20|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  890|     20|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  780|     20|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  781|     20|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  782|     20|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 20]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  891|     20|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (891:11): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  920|     20|		} \
  |  |  921|     20|	} while(0)
  |  |  ------------------
  |  |  |  Branch (921:10): [Folded, False: 20]
  |  |  ------------------
  ------------------
  593|     20|				print_hash(buf, properties, indent, true);
  594|     20|				ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(guard, DEBUG, zobj);
  ------------------
  |  |  923|     20|#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj) do { \
  |  |  924|     20|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (924:7): [True: 0, False: 20]
  |  |  ------------------
  |  |  925|      0|			ZEND_GUARD_UNPROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  656|      0|#define ZEND_GUARD_UNPROTECT_RECURSION(pg, t)	*pg &= ~ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|      0|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  926|     20|		} else { \
  |  |  927|     20|			GC_UNPROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  893|     20|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|     20|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|     20|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|     20|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|     20|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 20]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|     20|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|     20|		} \
  |  |  929|     20|	} while(0)
  |  |  ------------------
  |  |  |  Branch (929:10): [Folded, False: 20]
  |  |  ------------------
  ------------------
  595|       |
  596|     20|				zend_release_properties(properties);
  ------------------
  |  |  338|     20|#define zend_release_properties(ht) do { \
  |  |  339|     20|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 20, False: 0]
  |  |  ------------------
  |  |  340|     20|		zend_array_release(ht); \
  |  |  341|     20|	} \
  |  |  342|     20|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 20]
  |  |  ------------------
  ------------------
  597|     20|				break;
  598|     20|			}
  599|     35|		case IS_LONG:
  ------------------
  |  |  610|     35|#define IS_LONG						4
  ------------------
  |  Branch (599:3): [True: 35, False: 133]
  ------------------
  600|     35|			smart_str_append_long(buf, Z_LVAL_P(expr));
  ------------------
  |  |  976|     35|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     35|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  601|     35|			break;
  602|      8|		case IS_REFERENCE:
  ------------------
  |  |  616|      8|#define IS_REFERENCE				10
  ------------------
  |  Branch (602:3): [True: 8, False: 160]
  ------------------
  603|      8|			zend_print_zval_r_to_buf(buf, Z_REFVAL_P(expr), indent);
  ------------------
  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  604|      8|			break;
  605|     50|		case IS_STRING:
  ------------------
  |  |  612|     50|#define IS_STRING					6
  ------------------
  |  Branch (605:3): [True: 50, False: 118]
  ------------------
  606|     50|			smart_str_append(buf, Z_STR_P(expr));
  ------------------
  |  |  982|     50|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     50|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  607|     50|			break;
  608|      4|		default:
  ------------------
  |  Branch (608:3): [True: 4, False: 164]
  ------------------
  609|      4|			{
  610|      4|				zend_string *str = zval_get_string_func(expr);
  611|      4|				smart_str_append(buf, str);
  612|      4|				zend_string_release_ex(str, 0);
  613|      4|			}
  614|      4|			break;
  615|    168|	}
  616|    168|}
zend.c:print_hash:
  382|     68|{
  383|     68|	zval *tmp;
  384|     68|	zend_string *string_key;
  385|     68|	zend_ulong num_key;
  386|     68|	int i;
  387|       |
  388|    468|	for (i = 0; i < indent; i++) {
  ------------------
  |  Branch (388:14): [True: 400, False: 68]
  ------------------
  389|    400|		smart_str_appendc(buf, ' ');
  390|    400|	}
  391|     68|	smart_str_appends(buf, "(\n");
  392|     68|	indent += PRINT_ZVAL_INDENT;
  ------------------
  |  |   81|     68|#define PRINT_ZVAL_INDENT 4
  ------------------
  393|    325|	ZEND_HASH_FOREACH_KEY_VAL_IND(ht, num_key, string_key, tmp) {
  ------------------
  |  | 1218|    137|	ZEND_HASH_FOREACH(ht, 1); \
  |  |  ------------------
  |  |  |  | 1071|     68|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     68|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     68|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     68|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     68|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     68|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     68|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     68|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     68|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     68|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     68|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     68|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     68|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     68|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|    205|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 137, False: 68]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|    137|			zval *_z = __z; \
  |  |  |  |  |  | 1055|    137|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    137|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    137|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    137|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 65, False: 72]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|     65|				__z++; \
  |  |  |  |  |  | 1057|     65|				__h = _idx; \
  |  |  |  |  |  | 1058|     65|				_idx++; \
  |  |  |  |  |  | 1059|     72|			} else { \
  |  |  |  |  |  | 1060|     72|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     72|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     72|				__h = _p->h; \
  |  |  |  |  |  | 1063|     72|				__key = _p->key; \
  |  |  |  |  |  | 1064|     72|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|     72|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|     72|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    144|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [True: 72, Folded]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 21, False: 51]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|     21|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|     21|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|     21|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|     21|				} \
  |  |  |  |  |  | 1067|     72|			} \
  |  |  |  |  |  | 1068|    137|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|    137|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    137|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 17, False: 120]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1219|    120|	_h = __h; \
  |  | 1220|    120|	_key = __key; \
  |  | 1221|    120|	_val = _z;
  ------------------
  394|  1.33k|		for (i = 0; i < indent; i++) {
  ------------------
  |  Branch (394:15): [True: 1.21k, False: 120]
  ------------------
  395|  1.21k|			smart_str_appendc(buf, ' ');
  396|  1.21k|		}
  397|    325|		smart_str_appendc(buf, '[');
  398|    325|		if (string_key) {
  ------------------
  |  Branch (398:7): [True: 64, False: 56]
  ------------------
  399|     64|			if (is_object) {
  ------------------
  |  Branch (399:8): [True: 30, False: 34]
  ------------------
  400|     30|				const char *prop_name, *class_name;
  401|     30|				size_t prop_len;
  402|     30|				int mangled = zend_unmangle_property_name_ex(string_key, &class_name, &prop_name, &prop_len);
  403|       |
  404|     30|				smart_str_appendl(buf, prop_name, prop_len);
  405|     30|				if (class_name && mangled == SUCCESS) {
  ------------------
  |  Branch (405:9): [True: 0, False: 30]
  |  Branch (405:23): [True: 0, False: 0]
  ------------------
  406|      0|					if (class_name[0] == '*') {
  ------------------
  |  Branch (406:10): [True: 0, False: 0]
  ------------------
  407|      0|						smart_str_appends(buf, ":protected");
  408|      0|					} else {
  409|      0|						smart_str_appends(buf, ":");
  410|      0|						smart_str_appends(buf, class_name);
  411|      0|						smart_str_appends(buf, ":private");
  412|      0|					}
  413|      0|				}
  414|     34|			} else {
  415|     34|				smart_str_append(buf, string_key);
  416|     34|			}
  417|     64|		} else {
  418|     56|			smart_str_append_long(buf, num_key);
  419|     56|		}
  420|    325|		smart_str_appends(buf, "] => ");
  421|    325|		zend_print_zval_r_to_buf(buf, tmp, indent+PRINT_ZVAL_INDENT);
  ------------------
  |  |   81|    120|#define PRINT_ZVAL_INDENT 4
  ------------------
  422|    325|		smart_str_appends(buf, "\n");
  423|    325|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    120|		} \
  |  | 1102|     68|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 68]
  |  |  ------------------
  ------------------
  424|     68|	indent -= PRINT_ZVAL_INDENT;
  ------------------
  |  |   81|     68|#define PRINT_ZVAL_INDENT 4
  ------------------
  425|    468|	for (i = 0; i < indent; i++) {
  ------------------
  |  Branch (425:14): [True: 400, False: 68]
  ------------------
  426|    400|		smart_str_appendc(buf, ' ');
  427|    400|	}
  428|     68|	smart_str_appends(buf, ")\n");
  429|     68|}
zend.c:ini_scanner_globals_ctor:
  892|      2|{
  893|      2|	memset(scanner_globals_p, 0, sizeof(*scanner_globals_p));
  894|      2|}
zend.c:php_scanner_globals_ctor:
  898|      2|{
  899|      2|	memset(scanner_globals_p, 0, sizeof(*scanner_globals_p));
  900|      2|}
zend.c:zend_set_default_compile_time_values:
  654|      2|{
  655|       |	/* default compile-time values */
  656|      2|	CG(short_tags) = short_tags_default;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(short_tags) = short_tags_default;
  ------------------
  |  |  649|      2|# define short_tags_default			1
  ------------------
  657|      2|	CG(compiler_options) = compiler_options_default;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(compiler_options) = compiler_options_default;
  ------------------
  |  |  650|      2|# define compiler_options_default	ZEND_COMPILE_DEFAULT
  |  |  ------------------
  |  |  |  | 1316|      2|#define ZEND_COMPILE_DEFAULT					ZEND_COMPILE_HANDLE_OP_ARRAY
  |  |  |  |  ------------------
  |  |  |  |  |  | 1266|      2|#define ZEND_COMPILE_HANDLE_OP_ARRAY            (1<<2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  658|       |
  659|      2|	CG(rtd_key_counter) = 0;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  660|      2|}
zend.c:php_auto_globals_create_globals:
  911|      4|{
  912|       |	/* While we keep registering $GLOBALS as an auto-global, we do not create an
  913|       |	 * actual variable for it. Access to it handled specially by the compiler. */
  914|       |	return false;
  915|      4|}
zend.c:zend_init_exception_op:
  676|      2|{
  677|      2|	memset(EG(exception_op), 0, sizeof(EG(exception_op)));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	memset(EG(exception_op), 0, sizeof(EG(exception_op)));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  678|      2|	EG(exception_op)[0].opcode = ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	EG(exception_op)[0].opcode = ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |  271|      2|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  679|      2|	ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op));
  ------------------
  |  |   48|      2|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
  680|      2|	EG(exception_op)[1].opcode = ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	EG(exception_op)[1].opcode = ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |  271|      2|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  681|      2|	ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op)+1);
  ------------------
  |  |   48|      2|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
  682|      2|	EG(exception_op)[2].opcode = ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	EG(exception_op)[2].opcode = ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |  271|      2|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  683|      2|	ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op)+2);
  ------------------
  |  |   48|      2|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
  684|      2|}
zend.c:zend_init_call_trampoline_op:
  688|      2|{
  689|      2|	memset(&EG(call_trampoline_op), 0, sizeof(EG(call_trampoline_op)));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	memset(&EG(call_trampoline_op), 0, sizeof(EG(call_trampoline_op)));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  690|      2|	EG(call_trampoline_op).opcode = ZEND_CALL_TRAMPOLINE;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	EG(call_trampoline_op).opcode = ZEND_CALL_TRAMPOLINE;
  ------------------
  |  |  280|      2|#define ZEND_CALL_TRAMPOLINE                158
  ------------------
  691|      2|	ZEND_VM_SET_OPCODE_HANDLER(&EG(call_trampoline_op));
  ------------------
  |  |   48|      2|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
  692|      2|}
zend.c:OnUpdateErrorReporting:
  113|     22|{
  114|     22|	if (!new_value) {
  ------------------
  |  Branch (114:6): [True: 0, False: 22]
  ------------------
  115|      0|		EG(error_reporting) = E_ALL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		EG(error_reporting) = E_ALL;
  ------------------
  |  |   42|      0|#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   22|      0|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   24|      0|#define E_PARSE				(1<<2L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   25|      0|#define E_NOTICE			(1<<3L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   30|      0|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   31|      0|#define E_USER_WARNING		(1<<9L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   32|      0|#define E_USER_NOTICE		(1<<10L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   35|      0|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   37|      0|#define E_USER_DEPRECATED	(1<<14L)
  |  |  ------------------
  ------------------
  116|     22|	} else {
  117|     22|		EG(error_reporting) = atoi(ZSTR_VAL(new_value));
  ------------------
  |  |   45|     22|# define EG(v) (executor_globals.v)
  ------------------
              		EG(error_reporting) = atoi(ZSTR_VAL(new_value));
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  118|     22|	}
  119|     22|	return SUCCESS;
  120|     22|}
zend.c:OnUpdateAssertions:
  158|     10|{
  159|     10|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     10|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     10|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  160|       |
  161|     10|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  162|       |
  163|     10|	if (stage != ZEND_INI_STAGE_STARTUP &&
  ------------------
  |  |  223|     20|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  ------------------
  |  Branch (163:6): [True: 8, False: 2]
  ------------------
  164|      8|	    stage != ZEND_INI_STAGE_SHUTDOWN &&
  ------------------
  |  |  224|     18|#define ZEND_INI_STAGE_SHUTDOWN		(1<<1)
  ------------------
  |  Branch (164:6): [True: 8, False: 0]
  ------------------
  165|      8|	    *p != val &&
  ------------------
  |  Branch (165:6): [True: 6, False: 2]
  ------------------
  166|      6|	    (*p < 0 || val < 0)) {
  ------------------
  |  Branch (166:7): [True: 0, False: 6]
  |  Branch (166:17): [True: 0, False: 6]
  ------------------
  167|      0|		zend_error(E_WARNING, "zend.assertions may be completely enabled or disabled only in php.ini");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  168|      0|		return FAILURE;
  169|      0|	}
  170|       |
  171|     10|	*p = val;
  172|     10|	return SUCCESS;
  173|     10|}
zend.c:OnUpdateGCEnabled:
  124|     22|{
  125|     22|	bool val;
  126|       |
  127|     22|	val = zend_ini_parse_bool(new_value);
  128|     22|	gc_enable(val);
  129|       |
  130|     22|	return SUCCESS;
  131|     22|}
zend.c:zend_gc_enabled_displayer_cb:
  135|      2|{
  136|      2|	if (gc_enabled()) {
  ------------------
  |  Branch (136:6): [True: 2, False: 0]
  ------------------
  137|      2|		ZEND_PUTS("On");
  ------------------
  |  |  342|      2|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  138|      2|	} else {
  139|      0|		ZEND_PUTS("Off");
  ------------------
  |  |  342|      0|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  140|      0|	}
  141|      2|}
zend.c:OnUpdateScriptEncoding:
  146|      2|{
  147|      2|	if (!CG(multibyte)) {
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (147:6): [True: 2, False: 0]
  ------------------
  148|      2|		return FAILURE;
  149|      2|	}
  150|      0|	if (!zend_multibyte_get_functions()) {
  ------------------
  |  Branch (150:6): [True: 0, False: 0]
  ------------------
  151|      0|		return SUCCESS;
  152|      0|	}
  153|      0|	return zend_multibyte_set_script_encoding_by_string(new_value ? ZSTR_VAL(new_value) : NULL, new_value ? ZSTR_LEN(new_value) : 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	return zend_multibyte_set_script_encoding_by_string(new_value ? ZSTR_VAL(new_value) : NULL, new_value ? ZSTR_LEN(new_value) : 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (153:54): [True: 0, False: 0]
  |  Branch (153:94): [True: 0, False: 0]
  ------------------
  154|      0|}
zend.c:OnSetExceptionStringParamMaxLen:
  177|      2|{
  178|      2|	zend_long i = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      2|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  179|      2|	if (i >= 0 && i <= 1000000) {
  ------------------
  |  Branch (179:6): [True: 2, False: 0]
  |  Branch (179:16): [True: 2, False: 0]
  ------------------
  180|      2|		EG(exception_string_param_max_len) = i;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  181|      2|		return SUCCESS;
  182|      2|	} else {
  183|      0|		return FAILURE;
  184|      0|	}
  185|      2|}
zend.c:OnUpdateFiberStackSize:
  241|      6|{
  242|      6|	if (new_value) {
  ------------------
  |  Branch (242:6): [True: 2, False: 4]
  ------------------
  243|      2|		zend_long tmp = zend_ini_parse_quantity_warn(new_value, entry->name);
  244|      2|		if (tmp < 0) {
  ------------------
  |  Branch (244:7): [True: 1, False: 1]
  ------------------
  245|      1|			zend_error(E_WARNING, "fiber.stack_size must be a positive number");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  246|      1|			return FAILURE;
  247|      1|		}
  248|      1|		EG(fiber_stack_size) = tmp;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  249|      4|	} else {
  250|      4|		EG(fiber_stack_size) = ZEND_FIBER_DEFAULT_C_STACK_SIZE;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
              		EG(fiber_stack_size) = ZEND_FIBER_DEFAULT_C_STACK_SIZE;
  ------------------
  |  |   27|      4|#define ZEND_FIBER_DEFAULT_C_STACK_SIZE (4096 * (((sizeof(void *)) < 8) ? 256 : 512))
  |  |  ------------------
  |  |  |  Branch (27:50): [Folded, False: 4]
  |  |  ------------------
  ------------------
  251|      4|	}
  252|      5|	return SUCCESS;
  253|      6|}
zend.c:OnUpdateMaxAllowedStackSize:
  190|      2|{
  191|      2|	zend_long size = zend_ini_parse_quantity_warn(new_value, entry->name);
  192|       |
  193|      2|	if (size < ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED) {
  ------------------
  |  |   63|      2|# define ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED -1
  ------------------
  |  Branch (193:6): [True: 0, False: 2]
  ------------------
  194|      0|		zend_error(E_WARNING, "Invalid \"%s\" setting. Value must be >= %d, but got " ZEND_LONG_FMT,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Invalid \"%s\" setting. Value must be >= %d, but got " ZEND_LONG_FMT,
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
  195|      0|			ZSTR_VAL(entry->name), ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED, size);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(entry->name), ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED, size);
  ------------------
  |  |   63|      0|# define ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED -1
  ------------------
  196|      0|		return FAILURE;
  197|      0|	}
  198|       |
  199|      2|	EG(max_allowed_stack_size) = size;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  200|       |
  201|      2|	return SUCCESS;
  202|      2|}
zend.c:OnUpdateReservedStackSize:
  206|      2|{
  207|      2|	zend_ulong size = zend_ini_parse_uquantity_warn(new_value, entry->name);
  208|       |
  209|       |	/* Min value accounts for alloca, PCRE2 START_FRAMES_SIZE, and some buffer
  210|       |	 * for normal function calls.
  211|       |	 * We could reduce this on systems without alloca if we also add stack size
  212|       |	 * checks before pcre2_match(). */
  213|       |#ifdef ZEND_ALLOCA_MAX_SIZE
  214|       |	zend_ulong min = ZEND_ALLOCA_MAX_SIZE + 16*1024;
  215|       |#else
  216|      2|	zend_ulong min = 32*1024;
  217|      2|#endif
  218|       |
  219|       |#if defined(__SANITIZE_ADDRESS__) || __has_feature(memory_sanitizer)
  220|       |	/* AddressSanitizer and MemorySanitizer use more stack due to
  221|       |	 * instrumentation */
  222|       |	min *= 10;
  223|       |#endif
  224|       |
  225|      2|	if (size == 0) {
  ------------------
  |  Branch (225:6): [True: 2, False: 0]
  ------------------
  226|      2|		size = min;
  227|      2|	} else if (size < min) {
  ------------------
  |  Branch (227:13): [True: 0, False: 0]
  ------------------
  228|      0|		zend_error(E_WARNING, "Invalid \"%s\" setting. Value must be >= " ZEND_ULONG_FMT ", but got " ZEND_ULONG_FMT "\n",
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  229|      0|			ZSTR_VAL(entry->name), min, size);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  230|      0|		return FAILURE;
  231|      0|	}
  232|       |
  233|      2|	EG(reserved_stack_size) = size;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  234|       |
  235|      2|	return SUCCESS;
  236|      2|}
zend.c:get_filename_lineno:
 1636|  52.6k|static ZEND_COLD void get_filename_lineno(int type, zend_string **filename, uint32_t *lineno) {
 1637|       |	/* Obtain relevant filename and lineno */
 1638|  52.6k|	switch (type) {
 1639|      2|		case E_CORE_ERROR:
  ------------------
  |  |   26|      2|#define E_CORE_ERROR		(1<<4L)
  ------------------
  |  Branch (1639:3): [True: 2, False: 52.6k]
  ------------------
 1640|      2|		case E_CORE_WARNING:
  ------------------
  |  |   27|      2|#define E_CORE_WARNING		(1<<5L)
  ------------------
  |  Branch (1640:3): [True: 0, False: 52.6k]
  ------------------
 1641|      2|			*filename = NULL;
 1642|      2|			*lineno = 0;
 1643|      2|			break;
 1644|      0|		case E_PARSE:
  ------------------
  |  |   24|      0|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1644:3): [True: 0, False: 52.6k]
  ------------------
 1645|    553|		case E_COMPILE_ERROR:
  ------------------
  |  |   28|    553|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (1645:3): [True: 553, False: 52.1k]
  ------------------
 1646|    595|		case E_COMPILE_WARNING:
  ------------------
  |  |   29|    595|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
  |  Branch (1646:3): [True: 42, False: 52.6k]
  ------------------
 1647|    648|		case E_ERROR:
  ------------------
  |  |   22|    648|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (1647:3): [True: 53, False: 52.6k]
  ------------------
 1648|    705|		case E_NOTICE:
  ------------------
  |  |   25|    705|#define E_NOTICE			(1<<3L)
  ------------------
  |  Branch (1648:3): [True: 57, False: 52.6k]
  ------------------
 1649|  10.2k|		case E_DEPRECATED:
  ------------------
  |  |   36|  10.2k|#define E_DEPRECATED		(1<<13L)
  ------------------
  |  Branch (1649:3): [True: 9.56k, False: 43.1k]
  ------------------
 1650|  52.6k|		case E_WARNING:
  ------------------
  |  |   23|  52.6k|#define E_WARNING			(1<<1L)
  ------------------
  |  Branch (1650:3): [True: 42.3k, False: 10.2k]
  ------------------
 1651|  52.6k|		case E_USER_ERROR:
  ------------------
  |  |   30|  52.6k|#define E_USER_ERROR		(1<<8L)
  ------------------
  |  Branch (1651:3): [True: 0, False: 52.6k]
  ------------------
 1652|  52.6k|		case E_USER_WARNING:
  ------------------
  |  |   31|  52.6k|#define E_USER_WARNING		(1<<9L)
  ------------------
  |  Branch (1652:3): [True: 2, False: 52.6k]
  ------------------
 1653|  52.6k|		case E_USER_NOTICE:
  ------------------
  |  |   32|  52.6k|#define E_USER_NOTICE		(1<<10L)
  ------------------
  |  Branch (1653:3): [True: 0, False: 52.6k]
  ------------------
 1654|  52.6k|		case E_USER_DEPRECATED:
  ------------------
  |  |   37|  52.6k|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
  |  Branch (1654:3): [True: 18, False: 52.6k]
  ------------------
 1655|  52.6k|		case E_RECOVERABLE_ERROR:
  ------------------
  |  |   35|  52.6k|#define E_RECOVERABLE_ERROR	(1<<12L)
  ------------------
  |  Branch (1655:3): [True: 0, False: 52.6k]
  ------------------
 1656|  52.6k|			if (zend_is_compiling()) {
  ------------------
  |  Branch (1656:8): [True: 606, False: 52.0k]
  ------------------
 1657|    606|				*filename = zend_get_compiled_filename();
 1658|    606|				*lineno = zend_get_compiled_lineno();
 1659|  52.0k|			} else if (zend_is_executing()) {
  ------------------
  |  Branch (1659:15): [True: 52.0k, False: 0]
  ------------------
 1660|  52.0k|				*filename = zend_get_executed_filename_ex();
 1661|  52.0k|				*lineno = zend_get_executed_lineno();
 1662|  52.0k|			} else {
 1663|      0|				*filename = NULL;
 1664|      0|				*lineno = 0;
 1665|      0|			}
 1666|  52.6k|			break;
 1667|      0|		default:
  ------------------
  |  Branch (1667:3): [True: 0, False: 52.6k]
  ------------------
 1668|      0|			*filename = NULL;
 1669|      0|			*lineno = 0;
 1670|      0|			break;
 1671|  52.6k|	}
 1672|  52.6k|	if (!*filename) {
  ------------------
  |  Branch (1672:6): [True: 2, False: 52.6k]
  ------------------
 1673|      2|		*filename = ZSTR_KNOWN(ZEND_STR_UNKNOWN_CAPITALIZED);
 1674|      2|	}
 1675|  52.6k|}
zend.c:zend_error_va_list:
 1630|  51.7k|{
 1631|  51.7k|	zend_string *message = zend_vstrpprintf(0, format, args);
 1632|  51.7k|	zend_error_zstr_at(orig_type, error_filename, error_lineno, message);
 1633|  51.7k|	zend_string_release(message);
 1634|  51.7k|}

zend_wrong_property_read:
   89|    441|{
   90|    441|	zend_string *tmp_property_name;
   91|    441|	zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name);
   92|    441|	zend_error(E_WARNING, "Attempt to read property \"%s\" on %s", ZSTR_VAL(property_name), zend_zval_value_name(object));
  ------------------
  |  |   23|    441|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Attempt to read property \"%s\" on %s", ZSTR_VAL(property_name), zend_zval_value_name(object));
  ------------------
  |  |   67|    441|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   93|    441|	zend_tmp_string_release(tmp_property_name);
   94|    441|}
zend_get_type_by_const:
   98|    717|{
   99|    717|	switch(type) {
  100|      6|		case IS_FALSE:
  ------------------
  |  |  608|      6|#define IS_FALSE					2
  ------------------
  |  Branch (100:3): [True: 6, False: 711]
  ------------------
  101|     12|		case IS_TRUE:
  ------------------
  |  |  609|     12|#define IS_TRUE						3
  ------------------
  |  Branch (101:3): [True: 6, False: 711]
  ------------------
  102|     12|		case _IS_BOOL:
  ------------------
  |  |  635|     12|#define _IS_BOOL					18
  ------------------
  |  Branch (102:3): [True: 0, False: 717]
  ------------------
  103|     12|			return "bool";
  104|    140|		case IS_LONG:
  ------------------
  |  |  610|    140|#define IS_LONG						4
  ------------------
  |  Branch (104:3): [True: 140, False: 577]
  ------------------
  105|    140|			return "int";
  106|     40|		case IS_DOUBLE:
  ------------------
  |  |  611|     40|#define IS_DOUBLE					5
  ------------------
  |  Branch (106:3): [True: 40, False: 677]
  ------------------
  107|     40|			return "float";
  108|     83|		case IS_STRING:
  ------------------
  |  |  612|     83|#define IS_STRING					6
  ------------------
  |  Branch (108:3): [True: 83, False: 634]
  ------------------
  109|     83|			return "string";
  110|      0|		case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (110:3): [True: 0, False: 717]
  ------------------
  111|      0|			return "object";
  112|      2|		case IS_RESOURCE:
  ------------------
  |  |  615|      2|#define IS_RESOURCE					9
  ------------------
  |  Branch (112:3): [True: 2, False: 715]
  ------------------
  113|      2|			return "resource";
  114|    379|		case IS_NULL:
  ------------------
  |  |  607|    379|#define IS_NULL						1
  ------------------
  |  Branch (114:3): [True: 379, False: 338]
  ------------------
  115|    379|			return "null";
  116|      0|		case IS_CALLABLE:
  ------------------
  |  |  621|      0|#define IS_CALLABLE					12
  ------------------
  |  Branch (116:3): [True: 0, False: 717]
  ------------------
  117|      0|			return "callable";
  118|      0|		case IS_ITERABLE:
  ------------------
  |  |  622|      0|#define IS_ITERABLE					13
  ------------------
  |  Branch (118:3): [True: 0, False: 717]
  ------------------
  119|      0|			return "iterable";
  120|     61|		case IS_ARRAY:
  ------------------
  |  |  613|     61|#define IS_ARRAY					7
  ------------------
  |  Branch (120:3): [True: 61, False: 656]
  ------------------
  121|     61|			return "array";
  122|      0|		case IS_VOID:
  ------------------
  |  |  623|      0|#define IS_VOID						14
  ------------------
  |  Branch (122:3): [True: 0, False: 717]
  ------------------
  123|      0|			return "void";
  124|      0|		case IS_MIXED:
  ------------------
  |  |  625|      0|#define IS_MIXED					16
  ------------------
  |  Branch (124:3): [True: 0, False: 717]
  ------------------
  125|      0|			return "mixed";
  126|      0|		case _IS_NUMBER:
  ------------------
  |  |  636|      0|#define _IS_NUMBER					19
  ------------------
  |  Branch (126:3): [True: 0, False: 717]
  ------------------
  127|      0|			return "int|float";
  128|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (128:3): [True: 0, False: 717]
  |  Branch (128:12): [Folded, False: 0]
  |  Branch (128:12): [Folded, False: 0]
  ------------------
  129|    717|	}
  130|    717|}
zend_zval_value_name:
  134|    728|{
  135|    728|	ZVAL_DEREF(arg);
  ------------------
  |  | 1474|    728|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    728|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    728|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 8, False: 720]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      8|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      8|		}												\
  |  | 1478|    728|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 728]
  |  |  ------------------
  ------------------
  136|       |
  137|    728|	if (Z_ISUNDEF_P(arg)) {
  ------------------
  |  |  967|    728|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|    728|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    728|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|    728|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 179, False: 549]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|    179|		return "null";
  139|    179|	}
  140|       |
  141|    549|	if (Z_TYPE_P(arg) == IS_OBJECT) {
  ------------------
  |  |  669|    549|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    549|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(arg) == IS_OBJECT) {
  ------------------
  |  |  614|    549|#define IS_OBJECT					8
  ------------------
  |  Branch (141:6): [True: 19, False: 530]
  ------------------
  142|     19|		return ZSTR_VAL(Z_OBJCE_P(arg)->name);
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  143|    530|	} else if (Z_TYPE_P(arg) == IS_FALSE) {
  ------------------
  |  |  669|    530|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    530|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(arg) == IS_FALSE) {
  ------------------
  |  |  608|    530|#define IS_FALSE					2
  ------------------
  |  Branch (143:13): [True: 13, False: 517]
  ------------------
  144|     13|		return "false";
  145|    517|	} else if  (Z_TYPE_P(arg) == IS_TRUE) {
  ------------------
  |  |  669|    517|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    517|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if  (Z_TYPE_P(arg) == IS_TRUE) {
  ------------------
  |  |  609|    517|#define IS_TRUE						3
  ------------------
  |  Branch (145:14): [True: 4, False: 513]
  ------------------
  146|      4|		return "true";
  147|      4|	}
  148|       |
  149|    513|	return zend_get_type_by_const(Z_TYPE_P(arg));
  ------------------
  |  |  669|    513|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    513|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  150|    549|}
zend_zval_type_name:
  153|    211|{
  154|    211|	ZVAL_DEREF(arg);
  ------------------
  |  | 1474|    211|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    211|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    211|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 211]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|    211|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 211]
  |  |  ------------------
  ------------------
  155|       |
  156|    211|	if (Z_ISUNDEF_P(arg)) {
  ------------------
  |  |  967|    211|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|    211|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    211|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|    211|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 211]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|      0|		return "null";
  158|      0|	}
  159|       |
  160|    211|	if (Z_TYPE_P(arg) == IS_OBJECT) {
  ------------------
  |  |  669|    211|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    211|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(arg) == IS_OBJECT) {
  ------------------
  |  |  614|    211|#define IS_OBJECT					8
  ------------------
  |  Branch (160:6): [True: 21, False: 190]
  ------------------
  161|     21|		return ZSTR_VAL(Z_OBJCE_P(arg)->name);
  ------------------
  |  |   67|     21|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  162|     21|	}
  163|       |
  164|    190|	return zend_get_type_by_const(Z_TYPE_P(arg));
  ------------------
  |  |  669|    190|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    190|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  165|    211|}
zend_zval_get_legacy_type:
  170|      1|{
  171|      1|	switch (Z_TYPE_P(arg)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  172|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (172:3): [True: 0, False: 1]
  ------------------
  173|      0|			return ZSTR_KNOWN(ZEND_STR_NULL);
  174|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (174:3): [True: 0, False: 1]
  ------------------
  175|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (175:3): [True: 0, False: 1]
  ------------------
  176|      0|			return ZSTR_KNOWN(ZEND_STR_BOOLEAN);
  177|      1|		case IS_LONG:
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (177:3): [True: 1, False: 0]
  ------------------
  178|      1|			return ZSTR_KNOWN(ZEND_STR_INTEGER);
  179|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (179:3): [True: 0, False: 1]
  ------------------
  180|      0|			return ZSTR_KNOWN(ZEND_STR_DOUBLE);
  181|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (181:3): [True: 0, False: 1]
  ------------------
  182|      0|			return ZSTR_KNOWN(ZEND_STR_STRING);
  183|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (183:3): [True: 0, False: 1]
  ------------------
  184|      0|			return ZSTR_KNOWN(ZEND_STR_ARRAY);
  185|      0|		case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (185:3): [True: 0, False: 1]
  ------------------
  186|      0|			return ZSTR_KNOWN(ZEND_STR_OBJECT);
  187|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (187:3): [True: 0, False: 1]
  ------------------
  188|      0|			if (zend_rsrc_list_get_rsrc_type(Z_RES_P(arg))) {
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  |  Branch (188:8): [True: 0, False: 0]
  ------------------
  189|      0|				return ZSTR_KNOWN(ZEND_STR_RESOURCE);
  190|      0|			} else {
  191|      0|				return ZSTR_KNOWN(ZEND_STR_CLOSED_RESOURCE);
  192|      0|			}
  193|      0|		default:
  ------------------
  |  Branch (193:3): [True: 0, False: 1]
  ------------------
  194|       |			return NULL;
  195|      1|	}
  196|      1|}
zend_wrong_parameters_none_error:
  200|      4|{
  201|      4|	int num_args = ZEND_CALL_NUM_ARGS(EG(current_execute_data));
  ------------------
  |  |  712|      4|	(call)->This.u2.num_args
  ------------------
  202|      4|	zend_string *func_name = get_active_function_or_method_name();
  203|       |
  204|      4|	zend_argument_count_error("%s() expects exactly 0 arguments, %d given", ZSTR_VAL(func_name), num_args);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  205|       |
  206|      4|	zend_string_release(func_name);
  207|      4|}
zend_wrong_parameters_count_error:
  211|     57|{
  212|     57|	uint32_t num_args = ZEND_CALL_NUM_ARGS(EG(current_execute_data));
  ------------------
  |  |  712|     57|	(call)->This.u2.num_args
  ------------------
  213|     57|	zend_string *func_name = get_active_function_or_method_name();
  214|       |
  215|     57|	zend_argument_count_error(
  216|     57|		"%s() expects %s %d argument%s, %d given",
  217|     57|		ZSTR_VAL(func_name),
  ------------------
  |  |   67|     57|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  218|     57|		min_num_args == max_num_args ? "exactly" : num_args < min_num_args ? "at least" : "at most",
  ------------------
  |  Branch (218:3): [True: 40, False: 17]
  |  Branch (218:46): [True: 15, False: 2]
  ------------------
  219|     57|		num_args < min_num_args ? min_num_args : max_num_args,
  ------------------
  |  Branch (219:3): [True: 54, False: 3]
  ------------------
  220|     57|		(num_args < min_num_args ? min_num_args : max_num_args) == 1 ? "" : "s",
  ------------------
  |  Branch (220:3): [True: 34, False: 23]
  |  Branch (220:4): [True: 54, False: 3]
  ------------------
  221|     57|		num_args
  222|     57|	);
  223|       |
  224|     57|	zend_string_release(func_name);
  225|     57|}
zend_wrong_parameter_error:
  229|     92|{
  230|     92|	switch (error_code) {
  231|      3|		case ZPP_ERROR_WRONG_CALLBACK:
  ------------------
  |  | 1585|      3|#define ZPP_ERROR_WRONG_CALLBACK                2
  ------------------
  |  Branch (231:3): [True: 3, False: 89]
  ------------------
  232|      3|			zend_wrong_callback_error(num, name);
  233|      3|			break;
  234|      1|		case ZPP_ERROR_WRONG_CALLBACK_OR_NULL:
  ------------------
  |  | 1595|      1|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  ------------------
  |  Branch (234:3): [True: 1, False: 91]
  ------------------
  235|      1|			zend_wrong_callback_or_null_error(num, name);
  236|      1|			break;
  237|      1|		case ZPP_ERROR_WRONG_CLASS:
  ------------------
  |  | 1586|      1|#define ZPP_ERROR_WRONG_CLASS                   3
  ------------------
  |  Branch (237:3): [True: 1, False: 91]
  ------------------
  238|      1|			zend_wrong_parameter_class_error(num, name, arg);
  239|      1|			break;
  240|      0|		case ZPP_ERROR_WRONG_CLASS_OR_NULL:
  ------------------
  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  ------------------
  |  Branch (240:3): [True: 0, False: 92]
  ------------------
  241|      0|			zend_wrong_parameter_class_or_null_error(num, name, arg);
  242|      0|			break;
  243|      0|		case ZPP_ERROR_WRONG_CLASS_OR_STRING:
  ------------------
  |  | 1588|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING         5
  ------------------
  |  Branch (243:3): [True: 0, False: 92]
  ------------------
  244|      0|			zend_wrong_parameter_class_or_string_error(num, name, arg);
  245|      0|			break;
  246|      0|		case ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL:
  ------------------
  |  | 1589|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL 6
  ------------------
  |  Branch (246:3): [True: 0, False: 92]
  ------------------
  247|      0|			zend_wrong_parameter_class_or_string_or_null_error(num, name, arg);
  248|      0|			break;
  249|      0|		case ZPP_ERROR_WRONG_CLASS_OR_LONG:
  ------------------
  |  | 1590|      0|#define ZPP_ERROR_WRONG_CLASS_OR_LONG           7
  ------------------
  |  Branch (249:3): [True: 0, False: 92]
  ------------------
  250|      0|			zend_wrong_parameter_class_or_long_error(num, name, arg);
  251|      0|			break;
  252|      0|		case ZPP_ERROR_WRONG_CLASS_OR_LONG_OR_NULL:
  ------------------
  |  | 1591|      0|#define ZPP_ERROR_WRONG_CLASS_OR_LONG_OR_NULL   8
  ------------------
  |  Branch (252:3): [True: 0, False: 92]
  ------------------
  253|      0|			zend_wrong_parameter_class_or_long_or_null_error(num, name, arg);
  254|      0|			break;
  255|     30|		case ZPP_ERROR_WRONG_ARG:
  ------------------
  |  | 1592|     30|#define ZPP_ERROR_WRONG_ARG                     9
  ------------------
  |  Branch (255:3): [True: 30, False: 62]
  ------------------
  256|     30|			zend_wrong_parameter_type_error(num, expected_type, arg);
  257|     30|			break;
  258|      0|		case ZPP_ERROR_UNEXPECTED_EXTRA_NAMED:
  ------------------
  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  ------------------
  |  Branch (258:3): [True: 0, False: 92]
  ------------------
  259|      0|			zend_unexpected_extra_named_error();
  260|      0|			break;
  261|     57|		case ZPP_ERROR_FAILURE:
  ------------------
  |  | 1584|     57|#define ZPP_ERROR_FAILURE                       1
  ------------------
  |  Branch (261:3): [True: 57, False: 35]
  ------------------
  262|     57|			ZEND_ASSERT(EG(exception) && "Should have produced an error already");
  ------------------
  |  |  112|     57|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (262:4): [True: 0, False: 57]
  |  Branch (262:4): [True: 0, False: 0]
  |  Branch (262:4): [True: 57, False: 0]
  |  Branch (262:4): [True: 57, False: 0]
  ------------------
  263|     57|			break;
  264|     57|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (264:3): [True: 0, False: 92]
  |  Branch (264:12): [Folded, False: 0]
  |  Branch (264:12): [Folded, False: 0]
  ------------------
  265|     92|	}
  266|     92|}
zend_wrong_parameter_type_error:
  270|     30|{
  271|     30|	static const char * const expected_error[] = {
  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  ------------------
  |  | 1517|     30|	_(Z_EXPECTED_LONG,				"of type int") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1518|     30|	_(Z_EXPECTED_LONG_OR_NULL,		"of type ?int") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1519|     30|	_(Z_EXPECTED_BOOL,				"of type bool") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1520|     30|	_(Z_EXPECTED_BOOL_OR_NULL,		"of type ?bool") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     30|	_(Z_EXPECTED_STRING,			"of type string") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1522|     30|	_(Z_EXPECTED_STRING_OR_NULL,	"of type ?string") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1523|     30|	_(Z_EXPECTED_ARRAY,				"of type array") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1524|     30|	_(Z_EXPECTED_ARRAY_OR_NULL,		"of type ?array") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1525|     30|	_(Z_EXPECTED_ARRAY_OR_LONG,		"of type array|int") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1526|     30|	_(Z_EXPECTED_ARRAY_OR_LONG_OR_NULL, "of type array|int|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1527|     30|	_(Z_EXPECTED_ITERABLE,				"of type Traversable|array") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1528|     30|	_(Z_EXPECTED_ITERABLE_OR_NULL,		"of type Traversable|array|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1529|     30|	_(Z_EXPECTED_FUNC,				"a valid callback") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1530|     30|	_(Z_EXPECTED_FUNC_OR_NULL,		"a valid callback or null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1531|     30|	_(Z_EXPECTED_RESOURCE,			"of type resource") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1532|     30|	_(Z_EXPECTED_RESOURCE_OR_NULL,	"of type resource or null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1533|     30|	_(Z_EXPECTED_PATH,				"of type string") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1534|     30|	_(Z_EXPECTED_PATH_OR_NULL,		"of type ?string") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1535|     30|	_(Z_EXPECTED_OBJECT,			"of type object") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1536|     30|	_(Z_EXPECTED_OBJECT_OR_NULL,	"of type ?object") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1537|     30|	_(Z_EXPECTED_DOUBLE,			"of type float") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1538|     30|	_(Z_EXPECTED_DOUBLE_OR_NULL,	"of type ?float") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     30|	_(Z_EXPECTED_NUMBER,			"of type int|float") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|     30|	_(Z_EXPECTED_NUMBER_OR_NULL,	"of type int|float|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|     30|	_(Z_EXPECTED_NUMBER_OR_STRING,			"of type string|int|float") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1542|     30|	_(Z_EXPECTED_NUMBER_OR_STRING_OR_NULL,	"of type string|int|float|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1543|     30|	_(Z_EXPECTED_ARRAY_OR_STRING,	"of type array|string") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1544|     30|	_(Z_EXPECTED_ARRAY_OR_STRING_OR_NULL, "of type array|string|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1545|     30|	_(Z_EXPECTED_STRING_OR_LONG,	"of type string|int") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1546|     30|	_(Z_EXPECTED_STRING_OR_LONG_OR_NULL, "of type string|int|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1547|     30|	_(Z_EXPECTED_OBJECT_OR_CLASS_NAME,	"an object or a valid class name") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1548|     30|	_(Z_EXPECTED_OBJECT_OR_CLASS_NAME_OR_NULL, "an object, a valid class name, or null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1549|     30|	_(Z_EXPECTED_OBJECT_OR_STRING,	"of type object|string") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1550|     30|	_(Z_EXPECTED_OBJECT_OR_STRING_OR_NULL, "of type object|string|null") \
  |  |  ------------------
  |  |  |  |  272|     30|		Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1555|     30|#define Z_EXPECTED_TYPE_STR(id, str)  str,
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|     30|		NULL
  274|     30|	};
  275|       |
  276|     30|	if (EG(exception)) {
  ------------------
  |  |   45|     30|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 1, False: 29]
  |  |  ------------------
  ------------------
  277|      1|		return;
  278|      1|	}
  279|       |
  280|     29|	if ((expected_type == Z_EXPECTED_PATH || expected_type == Z_EXPECTED_PATH_OR_NULL)
  ------------------
  |  Branch (280:7): [True: 1, False: 28]
  |  Branch (280:43): [True: 0, False: 28]
  ------------------
  281|      1|			&& Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			&& Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (281:7): [True: 1, False: 0]
  ------------------
  282|      1|		zend_argument_value_error(num, "must not contain any null bytes");
  283|      1|		return;
  284|      1|	}
  285|       |
  286|     28|	zend_argument_type_error(num, "must be %s, %s given", expected_error[expected_type], zend_zval_value_name(arg));
  287|     28|}
zend_wrong_parameter_class_error:
  291|      1|{
  292|      1|	if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  293|      0|		return;
  294|      0|	}
  295|       |
  296|      1|	zend_argument_type_error(num, "must be of type %s, %s given", name, zend_zval_value_name(arg));
  297|      1|}
zend_wrong_callback_error:
  351|      3|{
  352|      3|	if (!EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (352:6): [True: 3, False: 0]
  ------------------
  353|      3|		zend_argument_type_error(num, "must be a valid callback, %s", error);
  354|      3|	}
  355|       |	efree(error);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|      3|}
zend_wrong_callback_or_null_error:
  360|      1|{
  361|      1|	if (!EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (361:6): [True: 0, False: 1]
  ------------------
  362|      0|		zend_argument_type_error(num, "must be a valid callback or null, %s", error);
  363|      0|	}
  364|       |	efree(error);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  365|      1|}
zend_argument_error_variadic:
  378|     84|{
  379|     84|	zend_string *func_name;
  380|     84|	const char *arg_name;
  381|     84|	char *message = NULL;
  382|     84|	if (EG(exception)) {
  ------------------
  |  |   45|     84|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 84]
  |  |  ------------------
  ------------------
  383|      0|		return;
  384|      0|	}
  385|       |
  386|     84|	func_name = get_active_function_or_method_name();
  387|     84|	arg_name = get_active_function_arg_name(arg_num);
  388|       |
  389|     84|	zend_vspprintf(&message, 0, format, va);
  390|     84|	zend_throw_error(error_ce, "%s(): Argument #%d%s%s%s %s",
  391|     84|		ZSTR_VAL(func_name), arg_num,
  ------------------
  |  |   67|     84|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  392|     84|		arg_name ? " ($" : "", arg_name ? arg_name : "", arg_name ? ")" : "", message
  ------------------
  |  Branch (392:3): [True: 78, False: 6]
  |  Branch (392:26): [True: 78, False: 6]
  |  Branch (392:52): [True: 78, False: 6]
  ------------------
  393|     84|	);
  394|       |	efree(message);
  ------------------
  |  |  154|     84|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     84|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     84|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     84|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     84|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  395|     84|	zend_string_release(func_name);
  396|     84|}
zend_argument_error:
  400|      3|{
  401|      3|	va_list va;
  402|       |
  403|      3|	va_start(va, format);
  404|      3|	zend_argument_error_variadic(error_ce, arg_num, format, va);
  405|       |	va_end(va);
  406|      3|}
zend_argument_type_error:
  410|     72|{
  411|     72|	va_list va;
  412|       |
  413|     72|	va_start(va, format);
  414|     72|	zend_argument_error_variadic(zend_ce_type_error, arg_num, format, va);
  415|       |	va_end(va);
  416|     72|}
zend_argument_value_error:
  420|      9|{
  421|      9|	va_list va;
  422|       |
  423|      9|	va_start(va, format);
  424|      9|	zend_argument_error_variadic(zend_ce_value_error, arg_num, format, va);
  425|       |	va_end(va);
  426|      9|}
zend_argument_must_not_be_empty_error:
  430|      2|{
  431|      2|	zend_argument_value_error(arg_num, "must not be empty");
  432|      2|}
zend_class_redeclaration_error_ex:
  435|     14|{
  436|     14|	if (old_ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (436:6): [True: 2, False: 12]
  ------------------
  437|      2|		zend_error(type, "Cannot redeclare %s %s",
  438|      2|			zend_get_object_type(old_ce),
  439|      2|			ZSTR_VAL(new_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  440|     12|	} else {
  441|     12|		zend_error(type, "Cannot redeclare %s %s (previously declared in %s:%d)",
  442|     12|			zend_get_object_type(old_ce),
  443|     12|			ZSTR_VAL(new_name),
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  444|     12|			ZSTR_VAL(old_ce->info.user.filename),
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  445|     12|			old_ce->info.user.line_start);
  446|     12|	}
  447|     14|}
zend_class_redeclaration_error:
  450|     11|{
  451|     11|	zend_class_redeclaration_error_ex(type, old_ce->name, old_ce);
  452|     11|}
zend_parse_arg_bool_weak:
  513|     44|{
  514|     44|	if (EXPECTED(Z_TYPE_P(arg) <= IS_STRING)) {
  ------------------
  |  |  456|     44|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 44, False: 0]
  |  |  ------------------
  ------------------
  515|     44|		if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("bool", arg_num)) {
  ------------------
  |  |  457|     88|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 44]
  |  |  ------------------
  ------------------
  |  Branch (515:47): [True: 0, False: 0]
  ------------------
  516|      0|			return ZPP_PARSE_BOOL_STATUS_ERROR;
  517|      0|		}
  518|     44|		return zend_is_true(arg);
  519|     44|	}
  520|      0|	return ZPP_PARSE_BOOL_STATUS_ERROR;
  521|     44|}
zend_parse_arg_bool_slow:
  525|     22|{
  526|     22|	if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|     88|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  Branch (457:52): [True: 22, False: 0]
  |  |  |  Branch (457:52): [True: 22, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 22]
  |  |  ------------------
  ------------------
  527|      0|		return ZPP_PARSE_BOOL_STATUS_ERROR;
  528|      0|	}
  529|     22|	return zend_parse_arg_bool_weak(arg, arg_num);
  530|     22|}
zend_parse_arg_long_weak:
  542|    321|{
  543|    321|	if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
  ------------------
  |  |  456|    321|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 303]
  |  |  ------------------
  ------------------
  544|     18|		if (UNEXPECTED(zend_isnan(Z_DVAL_P(arg)))) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 16]
  |  |  ------------------
  ------------------
  545|      2|			return 0;
  546|      2|		}
  547|     16|		if (UNEXPECTED(!ZEND_DOUBLE_FITS_LONG(Z_DVAL_P(arg)))) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 8]
  |  |  |  Branch (457:52): [True: 8, False: 8]
  |  |  |  Branch (457:52): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  548|      8|			return 0;
  549|      8|		} else {
  550|      8|			zend_long lval = zend_dval_to_lval(Z_DVAL_P(arg));
  ------------------
  |  |  979|      8|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      8|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  551|      8|			if (UNEXPECTED(!zend_is_long_compatible(Z_DVAL_P(arg), lval))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 5]
  |  |  ------------------
  ------------------
  552|       |				/* Check arg_num is not (uint32_t)-1, as otherwise its called by
  553|       |				 * zend_verify_weak_scalar_type_hint_no_sideeffect() */
  554|      3|				if (arg_num != (uint32_t)-1) {
  ------------------
  |  Branch (554:9): [True: 3, False: 0]
  ------------------
  555|      3|					zend_incompatible_double_to_long_error(Z_DVAL_P(arg));
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  556|      3|				}
  557|      3|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  558|      0|					return 0;
  559|      0|				}
  560|      3|			}
  561|      8|			*dest = lval;
  562|      8|		}
  563|    303|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    303|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 284]
  |  |  ------------------
  ------------------
  564|     19|		double d;
  565|     19|		uint8_t type;
  566|       |
  567|     19|		if (UNEXPECTED((type = is_numeric_str_function(Z_STR_P(arg), dest, &d)) != IS_LONG)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 9]
  |  |  ------------------
  ------------------
  568|     10|			if (EXPECTED(type != 0)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
  569|      1|				zend_long lval;
  570|      1|				if (UNEXPECTED(zend_isnan(d))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  571|      0|					return 0;
  572|      0|				}
  573|      1|				if (UNEXPECTED(!ZEND_DOUBLE_FITS_LONG(d))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  574|      0|					return 0;
  575|      0|				}
  576|       |
  577|      1|				lval = zend_dval_to_lval(d);
  578|       |				/* This only checks for a fractional part as if doesn't fit it already throws a TypeError */
  579|      1|				if (UNEXPECTED(!zend_is_long_compatible(d, lval))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  580|       |					/* Check arg_num is not (uint32_t)-1, as otherwise its called by
  581|       |					 * zend_verify_weak_scalar_type_hint_no_sideeffect() */
  582|      1|					if (arg_num != (uint32_t)-1) {
  ------------------
  |  Branch (582:10): [True: 0, False: 1]
  ------------------
  583|      0|						zend_incompatible_string_to_long_error(Z_STR_P(arg));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  584|      0|					}
  585|      1|					if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  586|      0|						return 0;
  587|      0|					}
  588|      1|				}
  589|      1|				*dest = lval;
  590|      9|			} else {
  591|      9|				return 0;
  592|      9|			}
  593|     10|		}
  594|    284|	} else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) {
  ------------------
  |  |  456|    284|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 266, False: 18]
  |  |  ------------------
  ------------------
  595|    266|		if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("int", arg_num)) {
  ------------------
  |  |  457|    532|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 254, False: 12]
  |  |  ------------------
  ------------------
  |  Branch (595:47): [True: 0, False: 254]
  ------------------
  596|      0|			return 0;
  597|      0|		}
  598|    266|		*dest = 0;
  599|    266|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|     18|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 4]
  |  |  ------------------
  ------------------
  600|     14|		*dest = 1;
  601|     14|	} else {
  602|      4|		return 0;
  603|      4|	}
  604|    298|	return 1;
  605|    321|}
zend_parse_arg_long_slow:
  609|    273|{
  610|    273|	if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|  1.09k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 273]
  |  |  |  Branch (457:52): [True: 273, False: 0]
  |  |  |  Branch (457:52): [True: 273, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 273]
  |  |  ------------------
  ------------------
  611|      0|		return 0;
  612|      0|	}
  613|    273|	return zend_parse_arg_long_weak(arg, dest, arg_num);
  614|    273|}
zend_parse_arg_double_weak:
  626|     14|{
  627|     14|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 4]
  |  |  ------------------
  ------------------
  628|     10|		return (double)Z_LVAL_P(arg);
  ------------------
  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  629|     10|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
  630|      3|		zend_long l;
  631|      3|		double dval;
  632|      3|		uint8_t type;
  633|       |
  634|      3|		if (UNEXPECTED((type = is_numeric_str_function(Z_STR_P(arg), &l, &dval)) != IS_DOUBLE)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  635|      3|			if (EXPECTED(type != 0)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  636|      0|				return (double)(l);
  637|      3|			} else {
  638|      3|				return NAN;
  639|      3|			}
  640|      3|		} else {
  641|      0|			return dval;
  642|      0|		}
  643|      3|	} else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  644|      1|		if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("float", arg_num)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (644:47): [True: 0, False: 1]
  ------------------
  645|      0|			return NAN;
  646|      0|		}
  647|      1|		return 0.0;
  648|      1|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  649|      0|		return 1.0;
  650|      0|	} else {
  651|       |		return NAN;
  652|      0|	}
  653|     14|}
zend_parse_arg_double_slow:
  657|     10|{
  658|     10|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 2]
  |  |  ------------------
  ------------------
  659|       |		/* SSTH Exception: IS_LONG may be accepted instead as IS_DOUBLE */
  660|      8|		return (double)Z_LVAL_P(arg);
  ------------------
  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  661|      8|	} else if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 2, False: 0]
  |  |  |  Branch (457:52): [True: 2, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  662|      0|		return NAN;
  663|      0|	}
  664|      2|	return zend_parse_arg_double_weak(arg, arg_num);
  665|     10|}
zend_parse_arg_number_slow:
  669|      3|{
  670|      3|	if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 3, False: 0]
  |  |  |  Branch (457:52): [True: 3, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  671|      0|		return 0;
  672|      0|	}
  673|      3|	if (Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (673:6): [True: 2, False: 1]
  ------------------
  674|      2|		zend_string *str = Z_STR_P(arg);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  675|      2|		zend_long lval;
  676|      2|		double dval;
  677|      2|		uint8_t type = is_numeric_str_function(str, &lval, &dval);
  678|      2|		if (type == IS_LONG) {
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
  |  Branch (678:7): [True: 0, False: 2]
  ------------------
  679|      0|			ZVAL_LONG(arg, lval);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  680|      2|		} else if (type == IS_DOUBLE) {
  ------------------
  |  |  611|      2|#define IS_DOUBLE					5
  ------------------
  |  Branch (680:14): [True: 1, False: 1]
  ------------------
  681|      1|			ZVAL_DOUBLE(arg, dval);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  682|      1|		} else {
  683|      1|			return 0;
  684|      1|		}
  685|      1|		zend_string_release(str);
  686|      1|	} else if (Z_TYPE_P(arg) < IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(arg) < IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (686:13): [True: 0, False: 1]
  ------------------
  687|      0|		if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("int|float", arg_num)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (687:47): [True: 0, False: 0]
  ------------------
  688|      0|			return 0;
  689|      0|		}
  690|      0|		ZVAL_LONG(arg, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  691|      1|	} else if (Z_TYPE_P(arg) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(arg) == IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (691:13): [True: 1, False: 0]
  ------------------
  692|      1|		ZVAL_LONG(arg, 1);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  693|      1|	} else {
  694|      0|		return 0;
  695|      0|	}
  696|      2|	*dest = arg;
  697|      2|	return 1;
  698|      3|}
zend_parse_arg_number_or_str_slow:
  703|      3|{
  704|      3|	if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 3, False: 0]
  |  |  |  Branch (457:52): [True: 3, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  705|      0|		return false;
  706|      0|	}
  707|      3|	if (Z_TYPE_P(arg) < IS_TRUE) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(arg) < IS_TRUE) {
  ------------------
  |  |  609|      3|#define IS_TRUE						3
  ------------------
  |  Branch (707:6): [True: 2, False: 1]
  ------------------
  708|      2|		if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("string|int|float", arg_num)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (708:47): [True: 0, False: 0]
  ------------------
  709|      0|			return false;
  710|      0|		}
  711|      2|		ZVAL_LONG(arg, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  712|      2|	} else if (Z_TYPE_P(arg) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(arg) == IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (712:13): [True: 1, False: 0]
  ------------------
  713|      1|		ZVAL_LONG(arg, 1);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  714|      1|	} else if (UNEXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  715|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  716|      0|		zval obj;
  717|      0|		if (zobj->handlers->cast_object(zobj, &obj, IS_STRING) == SUCCESS) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (717:7): [True: 0, False: 0]
  ------------------
  718|      0|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  719|      0|			ZVAL_COPY_VALUE(arg, &obj);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  720|      0|			*dest = arg;
  721|      0|			return true;
  722|      0|		}
  723|      0|		return false;
  724|      0|	} else {
  725|      0|		return false;
  726|      0|	}
  727|      3|	*dest = arg;
  728|       |	return true;
  729|      3|}
zend_parse_arg_str_weak:
  732|    635|{
  733|    635|	if (EXPECTED(Z_TYPE_P(arg) < IS_STRING)) {
  ------------------
  |  |  456|    635|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 623, False: 12]
  |  |  ------------------
  ------------------
  734|    623|		if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("string", arg_num)) {
  ------------------
  |  |  457|  1.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 212, False: 411]
  |  |  ------------------
  ------------------
  |  Branch (734:47): [True: 0, False: 212]
  ------------------
  735|      0|			return NULL;
  736|      0|		}
  737|    623|		convert_to_string(arg);
  ------------------
  |  |  390|    623|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|    623|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    623|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|    623|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 623, False: 0]
  |  |  ------------------
  ------------------
  738|    623|		return Z_STR_P(arg);
  ------------------
  |  |  982|    623|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    623|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  739|    623|	} else if (UNEXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 2]
  |  |  ------------------
  ------------------
  740|     10|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|     10|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  741|     10|		zval obj;
  742|     10|		if (zobj->handlers->cast_object(zobj, &obj, IS_STRING) == SUCCESS) {
  ------------------
  |  |  612|     10|#define IS_STRING					6
  ------------------
  |  Branch (742:7): [True: 3, False: 7]
  ------------------
  743|      3|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      3|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  744|      3|			ZVAL_COPY_VALUE(arg, &obj);
  ------------------
  |  | 1416|      3|	do {												\
  |  | 1417|      3|		zval *_z1 = (z);								\
  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  745|      3|			return Z_STR_P(arg);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  746|      3|		}
  747|      7|		return NULL;
  748|     10|	} else {
  749|       |		return NULL;
  750|      2|	}
  751|    635|}
zend_parse_arg_str_slow:
  755|    623|{
  756|    623|	if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|  2.49k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 622]
  |  |  |  Branch (457:52): [True: 623, False: 0]
  |  |  |  Branch (457:52): [True: 623, False: 0]
  |  |  |  Branch (457:52): [True: 1, False: 622]
  |  |  ------------------
  ------------------
  757|      1|		return NULL;
  758|      1|	}
  759|    622|	return zend_parse_arg_str_weak(arg, arg_num);
  760|    623|}
zend_parse_arg_str_or_long_slow:
  772|      1|{
  773|      1|	zend_string *str;
  774|      1|	if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  775|      0|		return 0;
  776|      0|	}
  777|      1|	if (zend_parse_arg_long_weak(arg, dest_long, arg_num)) {
  ------------------
  |  Branch (777:6): [True: 0, False: 1]
  ------------------
  778|      0|		*dest_str = NULL;
  779|      0|		return 1;
  780|      1|	} else if ((str = zend_parse_arg_str_weak(arg, arg_num)) != NULL) {
  ------------------
  |  Branch (780:13): [True: 0, False: 1]
  ------------------
  781|      0|		*dest_long = 0;
  782|      0|		*dest_str = str;
  783|      0|		return 1;
  784|      1|	} else {
  785|      1|		return 0;
  786|      1|	}
  787|      1|}
zend_parse_parameters_ex:
 1268|      6|{
 1269|      6|	va_list va;
 1270|      6|	zend_result retval;
 1271|       |
 1272|      6|	va_start(va, type_spec);
 1273|      6|	retval = zend_parse_va_args(num_args, type_spec, &va, flags);
 1274|      6|	va_end(va);
 1275|       |
 1276|      6|	return retval;
 1277|      6|}
zend_parse_parameters:
 1281|    396|{
 1282|    396|	va_list va;
 1283|    396|	zend_result retval;
 1284|    396|	int flags = 0;
 1285|       |
 1286|    396|	va_start(va, type_spec);
 1287|    396|	retval = zend_parse_va_args(num_args, type_spec, &va, flags);
 1288|    396|	va_end(va);
 1289|       |
 1290|    396|	return retval;
 1291|    396|}
zend_parse_method_parameters:
 1295|      1|{
 1296|      1|	va_list va;
 1297|      1|	zend_result retval;
 1298|      1|	int flags = 0;
 1299|      1|	const char *p = type_spec;
 1300|      1|	zval **object;
 1301|      1|	zend_class_entry *ce;
 1302|       |
 1303|       |	/* Just checking this_ptr is not enough, because fcall_common_helper does not set
 1304|       |	 * Z_OBJ(EG(This)) to NULL when calling an internal function with common.scope == NULL.
 1305|       |	 * In that case EG(This) would still be the $this from the calling code and we'd take the
 1306|       |	 * wrong branch here. */
 1307|      1|	bool is_method = EG(current_execute_data)->func->common.scope != NULL;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1308|       |
 1309|      1|	if (!is_method || !this_ptr || Z_TYPE_P(this_ptr) != IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (!is_method || !this_ptr || Z_TYPE_P(this_ptr) != IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (1309:6): [True: 0, False: 1]
  |  Branch (1309:20): [True: 0, False: 1]
  |  Branch (1309:33): [True: 0, False: 1]
  ------------------
 1310|      0|		va_start(va, type_spec);
 1311|      0|		retval = zend_parse_va_args(num_args, type_spec, &va, flags);
 1312|      0|		va_end(va);
 1313|      1|	} else {
 1314|      1|		p++;
 1315|       |
 1316|      1|		va_start(va, type_spec);
 1317|       |
 1318|      1|		object = va_arg(va, zval **);
 1319|      1|		ce = va_arg(va, zend_class_entry *);
 1320|      1|		*object = this_ptr;
 1321|       |
 1322|      1|		if (ce && !instanceof_function(Z_OBJCE_P(this_ptr), ce)) {
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1322:7): [True: 1, False: 0]
  |  Branch (1322:13): [True: 0, False: 1]
  ------------------
 1323|      0|			zend_error_noreturn(E_CORE_ERROR, "%s::%s() must be derived from %s::%s()",
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 1324|      0|				ZSTR_VAL(Z_OBJCE_P(this_ptr)->name), get_active_function_name(), ZSTR_VAL(ce->name), get_active_function_name());
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(Z_OBJCE_P(this_ptr)->name), get_active_function_name(), ZSTR_VAL(ce->name), get_active_function_name());
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1325|      0|		}
 1326|       |
 1327|      1|		retval = zend_parse_va_args(num_args, p, &va, flags);
 1328|      1|		va_end(va);
 1329|      1|	}
 1330|      1|	return retval;
 1331|      1|}
zend_separate_class_constants_table:
 1411|      1|{
 1412|      1|	zend_class_mutable_data *mutable_data;
 1413|      1|	HashTable *constants_table;
 1414|      1|	zend_string *key;
 1415|      1|	zend_class_constant *new_c, *c;
 1416|       |
 1417|      1|	constants_table = zend_arena_alloc(&CG(arena), sizeof(HashTable));
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1418|      1|	zend_hash_init(constants_table, zend_hash_num_elements(&class_type->constants_table), NULL, NULL, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1419|      1|	zend_hash_extend(constants_table, zend_hash_num_elements(&class_type->constants_table), 0);
 1420|       |
 1421|     10|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&class_type->constants_table, key, c) {
  ------------------
  |  | 1448|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      5|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      4|	_key = _p->key; \
  |  | 1450|      4|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1421:2): [True: 0, False: 1]
  |  Branch (1421:2): [True: 1, False: 0]
  ------------------
 1422|     10|		if (c->ce == class_type) {
  ------------------
  |  Branch (1422:7): [True: 4, False: 0]
  ------------------
 1423|      4|			if (Z_TYPE(c->value) == IS_CONSTANT_AST || (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(c->value) == IS_CONSTANT_AST || (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  617|      8|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
              			if (Z_TYPE(c->value) == IS_CONSTANT_AST || (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  498|      0|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			if (Z_TYPE(c->value) == IS_CONSTANT_AST || (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  258|      0|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (1423:8): [True: 4, False: 0]
  |  Branch (1423:47): [True: 0, False: 0]
  ------------------
 1424|      4|				new_c = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant));
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
 1425|      4|				memcpy(new_c, c, sizeof(zend_class_constant));
 1426|      4|				c = new_c;
 1427|      4|			}
 1428|      4|			Z_TRY_ADDREF(c->value);
  ------------------
  |  | 1299|      4|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      4|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      4|	zval *_pz = (pz);				\
  |  |  |  | 1287|      4|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      4|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      4|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1429|      4|		} else {
 1430|      0|			if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1430:8): [True: 0, False: 0]
  ------------------
 1431|      0|				c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(c->ce), key);
  ------------------
  |  |  334|      0|	zend_class_constants_table(ce)
  ------------------
 1432|      0|				ZEND_ASSERT(c);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1432:5): [True: 0, False: 0]
  |  Branch (1432:5): [True: 0, False: 0]
  ------------------
 1433|      0|			}
 1434|      0|		}
 1435|     10|		_zend_hash_append_ptr(constants_table, key, c);
 1436|      4|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1437|       |
 1438|      1|	ZEND_ASSERT(ZEND_MAP_PTR(class_type->mutable_data) != NULL);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1438:2): [True: 0, False: 1]
  |  Branch (1438:2): [True: 1, False: 0]
  ------------------
 1439|       |
 1440|      1|	mutable_data = ZEND_MAP_PTR_GET_IMM(class_type->mutable_data);
  ------------------
  |  |   58|      1|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      1|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1441|      1|	if (!mutable_data) {
  ------------------
  |  Branch (1441:6): [True: 1, False: 0]
  ------------------
 1442|      1|		mutable_data = zend_allocate_mutable_data(class_type);
 1443|      1|	}
 1444|       |
 1445|      1|	mutable_data->constants_table = constants_table;
 1446|       |
 1447|      1|	return constants_table;
 1448|      1|}
zend_update_class_constant:
 1472|    108|{
 1473|    108|	ZEND_ASSERT(Z_TYPE(c->value) == IS_CONSTANT_AST);
  ------------------
  |  |  112|    108|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1473:2): [True: 0, False: 108]
  |  Branch (1473:2): [True: 108, False: 0]
  ------------------
 1474|       |
 1475|    108|	if (EXPECTED(!ZEND_TYPE_IS_SET(c->type) || ZEND_TYPE_PURE_MASK(c->type) == MAY_BE_ANY)) {
  ------------------
  |  |  456|    114|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 102, False: 6]
  |  |  |  Branch (456:52): [True: 102, False: 6]
  |  |  |  Branch (456:52): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 1476|    102|		return zval_update_constant_ex(&c->value, scope);
 1477|    102|	}
 1478|       |
 1479|      6|	zval tmp;
 1480|       |
 1481|      6|	ZVAL_COPY(&tmp, &c->value);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1482|      6|	zend_result result = zval_update_constant_ex(&tmp, scope);
 1483|      6|	if (result == FAILURE) {
  ------------------
  |  Branch (1483:6): [True: 1, False: 5]
  ------------------
 1484|      1|		zval_ptr_dtor(&tmp);
 1485|      1|		return FAILURE;
 1486|      1|	}
 1487|       |
 1488|      5|	if (UNEXPECTED(!zend_verify_class_constant_type(c, name, &tmp))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 2]
  |  |  ------------------
  ------------------
 1489|      3|		zval_ptr_dtor(&tmp);
 1490|      3|		return FAILURE;
 1491|      3|	}
 1492|       |
 1493|      2|	zval_ptr_dtor(&c->value);
 1494|      2|	ZVAL_COPY_VALUE(&c->value, &tmp);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1495|       |
 1496|       |	/* may not return SUCCESS in case of an exception,
 1497|       |	 * should've returned FAILURE in zval_update_constant_ex! */
 1498|      2|	ZEND_ASSERT(!EG(exception));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1498:2): [True: 0, False: 2]
  |  Branch (1498:2): [True: 2, False: 0]
  ------------------
 1499|      2|	return SUCCESS;
 1500|      2|}
zend_update_class_constants:
 1503|     46|{
 1504|     46|	zend_class_mutable_data *mutable_data = NULL;
 1505|     46|	zval *default_properties_table = NULL;
 1506|     46|	zval *static_members_table = NULL;
 1507|     46|	zend_class_constant *c;
 1508|     46|	zval *val;
 1509|     46|	uint32_t ce_flags;
 1510|       |
 1511|     46|	ce_flags = class_type->ce_flags;
 1512|       |
 1513|     46|	if (ce_flags & ZEND_ACC_CONSTANTS_UPDATED) {
  ------------------
  |  |  298|     46|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
  |  Branch (1513:6): [True: 7, False: 39]
  ------------------
 1514|      7|		return SUCCESS;
 1515|      7|	}
 1516|       |
 1517|     46|	bool uses_mutable_data = ZEND_MAP_PTR(class_type->mutable_data) != NULL;
  ------------------
  |  |   31|     39|	ptr ## __ptr
  ------------------
 1518|     39|	if (uses_mutable_data) {
  ------------------
  |  Branch (1518:6): [True: 0, False: 39]
  ------------------
 1519|      0|		mutable_data = ZEND_MAP_PTR_GET_IMM(class_type->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1520|      0|		if (mutable_data) {
  ------------------
  |  Branch (1520:7): [True: 0, False: 0]
  ------------------
 1521|      0|			ce_flags = mutable_data->ce_flags;
 1522|      0|			if (ce_flags & ZEND_ACC_CONSTANTS_UPDATED) {
  ------------------
  |  |  298|      0|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
  |  Branch (1522:8): [True: 0, False: 0]
  ------------------
 1523|      0|				return SUCCESS;
 1524|      0|			}
 1525|      0|		} else {
 1526|      0|			mutable_data = zend_allocate_mutable_data(class_type);
 1527|      0|		}
 1528|      0|	}
 1529|       |
 1530|     39|	if (class_type->parent) {
  ------------------
  |  Branch (1530:6): [True: 5, False: 34]
  ------------------
 1531|      5|		if (UNEXPECTED(zend_update_class_constants(class_type->parent) != SUCCESS)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1532|      0|			return FAILURE;
 1533|      0|		}
 1534|      5|	}
 1535|       |
 1536|     39|	if (ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) {
  ------------------
  |  |  333|     39|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
  |  Branch (1536:6): [True: 20, False: 19]
  ------------------
 1537|     20|		HashTable *constants_table;
 1538|       |
 1539|     20|		if (uses_mutable_data) {
  ------------------
  |  Branch (1539:7): [True: 0, False: 20]
  ------------------
 1540|      0|			constants_table = mutable_data->constants_table;
 1541|      0|			if (!constants_table) {
  ------------------
  |  Branch (1541:8): [True: 0, False: 0]
  ------------------
 1542|      0|				constants_table = zend_separate_class_constants_table(class_type);
 1543|      0|			}
 1544|     20|		} else {
 1545|     20|			constants_table = &class_type->constants_table;
 1546|     20|		}
 1547|       |
 1548|     20|		zend_string *name;
 1549|     96|		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(constants_table, name, val) {
  ------------------
  |  | 1389|     28|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     20|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     20|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     20|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     20|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     20|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     20|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     45|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 28, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     28|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     28|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     28|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 28]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     28|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|     28|	_key = _p->key; \
  |  | 1391|     28|	_val = _z;
  ------------------
  |  Branch (1549:3): [True: 0, False: 20]
  |  Branch (1549:3): [True: 20, False: 0]
  ------------------
 1550|     96|			c = Z_PTR_P(val);
  ------------------
  |  | 1053|     28|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     28|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1551|     96|			if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|     28|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     28|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1551:8): [True: 28, False: 0]
  ------------------
 1552|     28|				if (c->ce != class_type) {
  ------------------
  |  Branch (1552:9): [True: 0, False: 28]
  ------------------
 1553|      0|					Z_PTR_P(val) = c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(c->ce), name);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
              					Z_PTR_P(val) = c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(c->ce), name);
  ------------------
  |  |  334|      0|	zend_class_constants_table(ce)
  ------------------
 1554|      0|					if (Z_TYPE(c->value) != IS_CONSTANT_AST) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					if (Z_TYPE(c->value) != IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1554:10): [True: 0, False: 0]
  ------------------
 1555|      0|						continue;
 1556|      0|					}
 1557|      0|				}
 1558|       |
 1559|     28|				val = &c->value;
 1560|     28|				if (UNEXPECTED(zend_update_class_constant(c, name, c->ce) != SUCCESS)) {
  ------------------
  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 25]
  |  |  ------------------
  ------------------
 1561|      3|					return FAILURE;
 1562|      3|				}
 1563|     28|			}
 1564|     96|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     28|		} \
  |  | 1102|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 1565|     20|	}
 1566|       |
 1567|     36|	if (class_type->default_static_members_count) {
  ------------------
  |  Branch (1567:6): [True: 4, False: 32]
  ------------------
 1568|      4|		static_members_table = CE_STATIC_MEMBERS(class_type);
  ------------------
  |  |  331|      4|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      4|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      4|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      4|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      4|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1569|      4|		if (!static_members_table) {
  ------------------
  |  Branch (1569:7): [True: 4, False: 0]
  ------------------
 1570|      4|			zend_class_init_statics(class_type);
 1571|      4|			static_members_table = CE_STATIC_MEMBERS(class_type);
  ------------------
  |  |  331|      4|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      4|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      4|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      4|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      4|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1572|      4|		}
 1573|      4|	}
 1574|       |
 1575|     36|	default_properties_table = class_type->default_properties_table;
 1576|     36|	if (uses_mutable_data && (ce_flags & ZEND_ACC_HAS_AST_PROPERTIES)) {
  ------------------
  |  |  334|      0|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
  |  Branch (1576:6): [True: 0, False: 36]
  |  Branch (1576:27): [True: 0, False: 0]
  ------------------
 1577|      0|		zval *src, *dst, *end;
 1578|       |
 1579|      0|		default_properties_table = mutable_data->default_properties_table;
 1580|      0|		if (!default_properties_table) {
  ------------------
  |  Branch (1580:7): [True: 0, False: 0]
  ------------------
 1581|      0|			default_properties_table = zend_arena_alloc(&CG(arena), sizeof(zval) * class_type->default_properties_count);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1582|      0|			src = class_type->default_properties_table;
 1583|      0|			dst = default_properties_table;
 1584|      0|			end = dst + class_type->default_properties_count;
 1585|      0|			do {
 1586|      0|				ZVAL_COPY_PROP(dst, src);
  ------------------
  |  | 1584|      0|	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1584:70): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1587|      0|				src++;
 1588|      0|				dst++;
 1589|      0|			} while (dst != end);
  ------------------
  |  Branch (1589:13): [True: 0, False: 0]
  ------------------
 1590|      0|			mutable_data->default_properties_table = default_properties_table;
 1591|      0|		}
 1592|      0|	}
 1593|       |
 1594|     36|	if (ce_flags & (ZEND_ACC_HAS_AST_PROPERTIES|ZEND_ACC_HAS_AST_STATICS)) {
  ------------------
  |  |  334|     36|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
              	if (ce_flags & (ZEND_ACC_HAS_AST_PROPERTIES|ZEND_ACC_HAS_AST_STATICS)) {
  ------------------
  |  |  335|     36|#define ZEND_ACC_HAS_AST_STATICS         (1 << 26) /*  X  |     |     |     */
  ------------------
  |  Branch (1594:6): [True: 19, False: 17]
  ------------------
 1595|     19|		zend_property_info *prop_info;
 1596|       |
 1597|       |		/* Use the default properties table to also update initializers of private properties
 1598|       |		 * that have been shadowed in a child class. */
 1599|     32|		for (uint32_t i = 0; i < class_type->default_properties_count; i++) {
  ------------------
  |  Branch (1599:24): [True: 18, False: 14]
  ------------------
 1600|     18|			prop_info = class_type->properties_info_table[i];
 1601|     18|			if (!prop_info) {
  ------------------
  |  Branch (1601:8): [True: 2, False: 16]
  ------------------
 1602|      2|				continue;
 1603|      2|			}
 1604|       |
 1605|     16|			val = &default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)];
  ------------------
  |  |  486|     16|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|     16|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 1606|     16|			if (Z_TYPE_P(val) == IS_CONSTANT_AST
  ------------------
  |  |  669|     16|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) == IS_CONSTANT_AST
  ------------------
  |  |  617|     32|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1606:8): [True: 15, False: 1]
  ------------------
 1607|     15|					&& UNEXPECTED(update_property(val, prop_info) != SUCCESS)) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 10]
  |  |  ------------------
  ------------------
 1608|      5|				return FAILURE;
 1609|      5|			}
 1610|     16|		}
 1611|       |
 1612|     14|		if (class_type->default_static_members_count) {
  ------------------
  |  Branch (1612:7): [True: 4, False: 10]
  ------------------
 1613|     16|			ZEND_HASH_MAP_FOREACH_PTR(&class_type->properties_info, prop_info) {
  ------------------
  |  | 1341|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      6|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      4|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1613:4): [True: 0, False: 4]
  |  Branch (1613:4): [True: 4, False: 0]
  ------------------
 1614|     16|				if (prop_info->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      4|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1614:9): [True: 4, False: 0]
  ------------------
 1615|      4|					val = static_members_table + prop_info->offset;
 1616|      4|					if (Z_TYPE_P(val) == IS_CONSTANT_AST
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(val) == IS_CONSTANT_AST
  ------------------
  |  |  617|      8|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1616:10): [True: 4, False: 0]
  ------------------
 1617|      4|							&& UNEXPECTED(update_property(val, prop_info) != SUCCESS)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 1618|      2|						return FAILURE;
 1619|      2|					}
 1620|      4|				}
 1621|     16|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1622|      4|		}
 1623|     14|	}
 1624|       |
 1625|     29|	if (class_type->type == ZEND_USER_CLASS && class_type->ce_flags & ZEND_ACC_ENUM && class_type->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  284|     58|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
              	if (class_type->type == ZEND_USER_CLASS && class_type->ce_flags & ZEND_ACC_ENUM && class_type->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  606|     16|#define IS_UNDEF					0
  ------------------
  |  Branch (1625:6): [True: 29, False: 0]
  |  Branch (1625:45): [True: 16, False: 13]
  |  Branch (1625:85): [True: 16, False: 0]
  ------------------
 1626|     16|		if (zend_enum_build_backed_enum_table(class_type) == FAILURE) {
  ------------------
  |  Branch (1626:7): [True: 0, False: 16]
  ------------------
 1627|      0|			return FAILURE;
 1628|      0|		}
 1629|     16|	}
 1630|       |
 1631|     29|	ce_flags |= ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|     29|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 1632|     29|	ce_flags &= ~ZEND_ACC_HAS_AST_CONSTANTS;
  ------------------
  |  |  333|     29|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
 1633|     29|	ce_flags &= ~ZEND_ACC_HAS_AST_PROPERTIES;
  ------------------
  |  |  334|     29|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
 1634|     29|	ce_flags &= ~ZEND_ACC_HAS_AST_STATICS;
  ------------------
  |  |  335|     29|#define ZEND_ACC_HAS_AST_STATICS         (1 << 26) /*  X  |     |     |     */
  ------------------
 1635|     29|	if (uses_mutable_data) {
  ------------------
  |  Branch (1635:6): [True: 0, False: 29]
  ------------------
 1636|      0|		mutable_data->ce_flags = ce_flags;
 1637|     29|	} else {
 1638|     29|		class_type->ce_flags = ce_flags;
 1639|     29|	}
 1640|       |
 1641|     29|	return SUCCESS;
 1642|     29|}
object_properties_init:
 1673|  21.1k|{
 1674|       |	object->properties = NULL;
 1675|  21.1k|	_object_properties_init(object, class_type);
 1676|  21.1k|}
object_init_ex:
 1841|  29.2k|{
 1842|       |	return _object_and_properties_init(arg, class_type, NULL);
 1843|  29.2k|}
object_init_with_constructor:
 1847|     73|{
 1848|     73|	zend_result status = _object_and_properties_init(arg, class_type, NULL);
 1849|     73|	if (UNEXPECTED(status == FAILURE)) {
  ------------------
  |  |  457|     73|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 73]
  |  |  ------------------
  ------------------
 1850|      0|		ZVAL_UNDEF(arg);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1851|      0|		return FAILURE;
 1852|      0|	}
 1853|     73|	zend_object *obj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|     73|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     73|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1854|     73|	zend_function *constructor = obj->handlers->get_constructor(obj);
 1855|     73|	if (constructor == NULL) {
  ------------------
  |  Branch (1855:6): [True: 2, False: 71]
  ------------------
 1856|       |		/* The constructor can be NULL for 2 different reasons:
 1857|       |		 * - It is not defined
 1858|       |		 * - We are not allowed to call the constructor (e.g. private, or internal opaque class)
 1859|       |		 *   and an exception has been thrown
 1860|       |		 * in the former case, we are (mostly) done and the object is initialized,
 1861|       |		 * in the latter we need to destroy the object as initialization failed
 1862|       |		 */
 1863|      2|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1864|      0|			zval_ptr_dtor(arg);
 1865|      0|			ZVAL_UNDEF(arg);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1866|      0|			return FAILURE;
 1867|      0|		}
 1868|       |
 1869|       |		/* Surprisingly, this is the only case where internal classes will allow to pass extra arguments
 1870|       |		 * However, if there are named arguments (and it is not empty),
 1871|       |		 * an Error must be thrown to be consistent with new ClassName() */
 1872|      2|		if (UNEXPECTED(named_params != NULL && zend_hash_num_elements(named_params) != 0)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  Branch (457:52): [True: 2, False: 0]
  |  |  |  Branch (457:52): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1873|       |			/* Throw standard Error */
 1874|      2|			zend_string *arg_name = NULL;
 1875|      2|			zend_hash_get_current_key(named_params, &arg_name, /* num_index */ NULL);
 1876|      2|			ZEND_ASSERT(arg_name != NULL);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1876:4): [True: 0, False: 2]
  |  Branch (1876:4): [True: 2, False: 0]
  ------------------
 1877|      2|			zend_throw_error(NULL, "Unknown named parameter $%s", ZSTR_VAL(arg_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1878|       |			/* Do not call destructor, free object, and set arg to IS_UNDEF */
 1879|      2|			zend_object_store_ctor_failed(obj);
 1880|      2|			zval_ptr_dtor(arg);
 1881|      2|			ZVAL_UNDEF(arg);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1882|      2|			return FAILURE;
 1883|      2|		} else {
 1884|      0|			return SUCCESS;
 1885|      0|		}
 1886|      2|	}
 1887|       |	/* A constructor should not return a value, however if an exception is thrown
 1888|       |	 * zend_call_known_function() will set the retval to IS_UNDEF */
 1889|     71|	zval retval;
 1890|     71|	zend_call_known_function(
 1891|     71|		constructor,
 1892|     71|		obj,
 1893|     71|		class_type,
 1894|     71|		&retval,
 1895|     71|		param_count,
 1896|     71|		params,
 1897|     71|		named_params
 1898|     71|	);
 1899|     71|	if (Z_TYPE(retval) == IS_UNDEF) {
  ------------------
  |  |  668|     71|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(retval) == IS_UNDEF) {
  ------------------
  |  |  606|     71|#define IS_UNDEF					0
  ------------------
  |  Branch (1899:6): [True: 6, False: 65]
  ------------------
 1900|       |		/* Do not call destructor, free object, and set arg to IS_UNDEF */
 1901|      6|		zend_object_store_ctor_failed(obj);
 1902|      6|		zval_ptr_dtor(arg);
 1903|      6|		ZVAL_UNDEF(arg);
  ------------------
  |  | 1055|      6|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      6|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1904|      6|		return FAILURE;
 1905|     65|	} else {
 1906|       |		/* Unlikely, but user constructors may return any value they want */
 1907|     65|		zval_ptr_dtor(&retval);
 1908|     65|		return SUCCESS;
 1909|     65|	}
 1910|     71|}
add_assoc_long_ex:
 1920|     15|{
 1921|     15|	zval tmp;
 1922|       |
 1923|     15|	ZVAL_LONG(&tmp, n);
  ------------------
  |  | 1076|     15|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     15|		zval *__z = (z);				\
  |  | 1078|     15|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     15|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     15|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     15|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     15|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1924|     15|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, &tmp);
  ------------------
  |  |  997|     15|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     15|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     15|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1925|     15|}
add_assoc_bool_ex:
 1938|      9|{
 1939|      9|	zval tmp;
 1940|       |
 1941|      9|	ZVAL_BOOL(&tmp, b);
  ------------------
  |  | 1071|      9|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      9|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      9|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     18|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 9]
  |  |  ------------------
  |  | 1074|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1942|      9|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, &tmp);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1943|      9|}
add_assoc_double_ex:
 1956|     12|{
 1957|     12|	zval tmp;
 1958|       |
 1959|     12|	ZVAL_DOUBLE(&tmp, d);
  ------------------
  |  | 1082|     12|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     12|		zval *__z = (z);				\
  |  | 1084|     12|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     12|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     12|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     12|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     12|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1960|     12|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, &tmp);
  ------------------
  |  |  997|     12|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     12|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     12|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1961|     12|}
add_assoc_str_ex:
 1965|      3|{
 1966|      3|	zval tmp;
 1967|       |
 1968|      3|	ZVAL_STR(&tmp, str);
  ------------------
  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      3|		zval *__z = (z);						\
  |  | 1090|      3|		zend_string *__s = (s);					\
  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      3|		/* interned strings support */			\
  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 3]
  |  |  ------------------
  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1969|      3|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, &tmp);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1970|      3|}
add_assoc_string_ex:
 1974|      9|{
 1975|      9|	zval tmp;
 1976|       |
 1977|      9|	ZVAL_STRING(&tmp, str);
  ------------------
  |  |  967|      9|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      9|		const char *_s = (s);					\
  |  |  969|      9|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      9|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      9|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      9|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      9|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      9|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      9|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      9|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      9|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      9|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      9|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1978|      9|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, &tmp);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1979|      9|}
add_assoc_object_ex:
 2001|      2|{
 2002|      2|	zval tmp;
 2003|       |
 2004|      2|	ZVAL_OBJ(&tmp, obj);
  ------------------
  |  | 1140|      2|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      2|		zval *__z = (z);						\
  |  | 1142|      2|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2005|      2|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, &tmp);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2006|      2|}
add_assoc_zval_ex:
 2019|      2|{
 2020|      2|	zend_symtable_str_update(Z_ARRVAL_P(arg), key, key_len, value);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2021|      2|}
add_index_long:
 2025|      9|{
 2026|      9|	zval tmp;
 2027|       |
 2028|      9|	ZVAL_LONG(&tmp, n);
  ------------------
  |  | 1076|      9|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      9|		zval *__z = (z);				\
  |  | 1078|      9|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      9|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      9|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      9|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      9|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 2029|      9|	zend_hash_index_update(Z_ARRVAL_P(arg), index, &tmp);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2030|      9|}
add_index_string:
 2079|      3|{
 2080|      3|	zval tmp;
 2081|       |
 2082|      3|	ZVAL_STRING(&tmp, str);
  ------------------
  |  |  967|      3|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      3|		const char *_s = (s);					\
  |  |  969|      3|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      3|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      3|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      3|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      3|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      3|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      3|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2083|      3|	zend_hash_index_update(Z_ARRVAL_P(arg), index, &tmp);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2084|      3|}
add_next_index_str:
 2169|  6.73k|{
 2170|  6.73k|	zval tmp;
 2171|       |
 2172|  6.73k|	ZVAL_STR(&tmp, str);
  ------------------
  |  | 1088|  6.73k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  6.73k|		zval *__z = (z);						\
  |  | 1090|  6.73k|		zend_string *__s = (s);					\
  |  | 1091|  6.73k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  6.73k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  6.73k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  6.73k|		/* interned strings support */			\
  |  | 1093|  6.73k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  6.73k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  6.73k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 6.73k, False: 0]
  |  |  ------------------
  |  | 1094|  6.73k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|  6.73k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  6.73k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  6.73k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  6.73k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  6.73k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 6.73k]
  |  |  ------------------
  ------------------
 2173|  6.73k|	return zend_hash_next_index_insert(Z_ARRVAL_P(arg), &tmp) ? SUCCESS : FAILURE;
  ------------------
  |  |  997|  6.73k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  6.73k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  6.73k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2173:9): [True: 6.73k, False: 0]
  ------------------
 2174|  6.73k|}
add_next_index_stringl:
 2187|      2|{
 2188|      2|	zval tmp;
 2189|       |
 2190|      2|	ZVAL_STRINGL(&tmp, str, length);
  ------------------
  |  |  963|      2|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      2|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2191|      2|	return zend_hash_next_index_insert(Z_ARRVAL_P(arg), &tmp) ? SUCCESS : FAILURE;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2191:9): [True: 2, False: 0]
  ------------------
 2192|      2|}
array_set_zval_key:
 2223|    202|{
 2224|    202|	zval *result;
 2225|       |
 2226|    202|	switch (Z_TYPE_P(key)) {
  ------------------
  |  |  669|    202|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    202|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2227|    200|		case IS_STRING:
  ------------------
  |  |  612|    200|#define IS_STRING					6
  ------------------
  |  Branch (2227:3): [True: 200, False: 2]
  ------------------
 2228|    200|			result = zend_symtable_update(ht, Z_STR_P(key), value);
  ------------------
  |  |  982|    200|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    200|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2229|    200|			break;
 2230|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (2230:3): [True: 0, False: 202]
  ------------------
 2231|      0|			zend_use_resource_as_offset(key);
 2232|      0|			result = zend_hash_index_update(ht, Z_RES_HANDLE_P(key), value);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2233|      0|			break;
 2234|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (2234:3): [True: 0, False: 202]
  ------------------
 2235|      0|			result = zend_hash_index_update(ht, 0, value);
 2236|      0|			break;
 2237|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (2237:3): [True: 0, False: 202]
  ------------------
 2238|      0|			result = zend_hash_index_update(ht, 1, value);
 2239|      0|			break;
 2240|      0|		case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (2240:3): [True: 0, False: 202]
  ------------------
 2241|      0|			result = zend_hash_index_update(ht, Z_LVAL_P(key), value);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2242|      0|			break;
 2243|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (2243:3): [True: 0, False: 202]
  ------------------
 2244|      0|			result = zend_hash_index_update(ht, zend_dval_to_lval_safe(Z_DVAL_P(key)), value);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2245|      0|			break;
 2246|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2246:3): [True: 0, False: 202]
  ------------------
 2247|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2248|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2249|      0|				return FAILURE;
 2250|      0|			}
 2251|      0|			result = zend_hash_update(ht, ZSTR_EMPTY_ALLOC(), value);
 2252|      0|			break;
 2253|      2|		default:
  ------------------
  |  Branch (2253:3): [True: 2, False: 200]
  ------------------
 2254|      2|			zend_illegal_container_offset(ZSTR_KNOWN(ZEND_STR_ARRAY), key, BP_VAR_W);
  ------------------
  |  | 1075|      2|#define BP_VAR_W			1
  ------------------
 2255|      2|			result = NULL;
 2256|    202|	}
 2257|       |
 2258|    202|	if (result) {
  ------------------
  |  Branch (2258:6): [True: 200, False: 2]
  ------------------
 2259|    200|		Z_TRY_ADDREF_P(result);
  ------------------
  |  | 1285|    200|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|    200|	zval *_pz = (pz);				\
  |  | 1287|    200|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|    200|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|    200|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|    200|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 198, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|    198|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|    198|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|    198|	}								\
  |  | 1290|    200|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 200]
  |  |  ------------------
  ------------------
 2260|    200|		return SUCCESS;
 2261|    200|	} else {
 2262|      2|		return FAILURE;
 2263|      2|	}
 2264|    202|}
add_property_null_ex:
 2286|  4.63k|{
 2287|  4.63k|	zval tmp;
 2288|       |
 2289|  4.63k|	ZVAL_NULL(&tmp);
  ------------------
  |  | 1059|  4.63k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  4.63k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  4.63k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.63k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  4.63k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  4.63k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4.63k]
  |  |  ------------------
  ------------------
 2290|  4.63k|	add_property_zval_ex(arg, key, key_len, &tmp);
 2291|  4.63k|}
add_property_resource_ex:
 2295|      2|{
 2296|      2|	zval tmp;
 2297|       |
 2298|      2|	ZVAL_RES(&tmp, r);
  ------------------
  |  | 1154|      2|#define ZVAL_RES(z, r) do {						\
  |  | 1155|      2|		zval *__z = (z);						\
  |  | 1156|      2|		Z_RES_P(__z) = (r);						\
  |  |  ------------------
  |  |  |  | 1018|      2|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1157|      2|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  831|      2|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      2|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1158|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1158:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2299|      2|	add_property_zval_ex(arg, key, key_len, &tmp);
 2300|      2|	zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
 2301|      2|}
add_property_string_ex:
 2324|      1|{
 2325|      1|	zval tmp;
 2326|       |
 2327|      1|	ZVAL_STRING(&tmp, str);
  ------------------
  |  |  967|      1|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      1|		const char *_s = (s);					\
  |  |  969|      1|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      1|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      1|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2328|      1|	add_property_zval_ex(arg, key, key_len, &tmp);
 2329|      1|	zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
 2330|      1|}
add_property_zval_ex:
 2374|  4.63k|{
 2375|  4.63k|	zend_string *str;
 2376|       |
 2377|  4.63k|	str = zend_string_init(key, key_len, 0);
 2378|  4.63k|	Z_OBJ_HANDLER_P(arg, write_property)(Z_OBJ_P(arg), str, value, NULL);
  ------------------
  |  | 1006|  4.63k|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|  4.63k|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|  4.63k|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|  4.63k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	Z_OBJ_HANDLER_P(arg, write_property)(Z_OBJ_P(arg), str, value, NULL);
  ------------------
  |  | 1000|  4.63k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  4.63k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2379|  4.63k|	zend_string_release_ex(str, 0);
 2380|  4.63k|}
zend_startup_module_ex:
 2384|     26|{
 2385|     26|	size_t name_len;
 2386|     26|	zend_string *lcname;
 2387|       |
 2388|     26|	if (module->module_started) {
  ------------------
  |  Branch (2388:6): [True: 0, False: 26]
  ------------------
 2389|      0|		return SUCCESS;
 2390|      0|	}
 2391|     26|	module->module_started = 1;
 2392|       |
 2393|       |	/* Check module dependencies */
 2394|     26|	if (module->deps) {
  ------------------
  |  Branch (2394:6): [True: 8, False: 18]
  ------------------
 2395|      8|		const zend_module_dep *dep = module->deps;
 2396|       |
 2397|     22|		while (dep->name) {
  ------------------
  |  Branch (2397:10): [True: 14, False: 8]
  ------------------
 2398|     14|			if (dep->type == MODULE_DEP_REQUIRED) {
  ------------------
  |  |  101|     14|#define MODULE_DEP_REQUIRED		1
  ------------------
  |  Branch (2398:8): [True: 10, False: 4]
  ------------------
 2399|     10|				zend_module_entry *req_mod;
 2400|       |
 2401|     10|				name_len = strlen(dep->name);
 2402|     10|				lcname = zend_string_alloc(name_len, 0);
 2403|     10|				zend_str_tolower_copy(ZSTR_VAL(lcname), dep->name, name_len);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2404|       |
 2405|     10|				if ((req_mod = zend_hash_find_ptr(&module_registry, lcname)) == NULL || !req_mod->module_started) {
  ------------------
  |  Branch (2405:9): [True: 0, False: 10]
  |  Branch (2405:77): [True: 0, False: 10]
  ------------------
 2406|      0|					zend_string_efree(lcname);
 2407|       |					/* TODO: Check version relationship */
 2408|      0|					zend_error(E_CORE_WARNING, "Cannot load module \"%s\" because required module \"%s\" is not loaded", module->name, dep->name);
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
 2409|      0|					module->module_started = 0;
 2410|      0|					return FAILURE;
 2411|      0|				}
 2412|     10|				zend_string_efree(lcname);
 2413|     10|			}
 2414|     14|			++dep;
 2415|     14|		}
 2416|      8|	}
 2417|       |
 2418|       |	/* Initialize module globals */
 2419|     26|	if (module->globals_size) {
  ------------------
  |  Branch (2419:6): [True: 12, False: 14]
  ------------------
 2420|       |#ifdef ZTS
 2421|       |		ts_allocate_id(module->globals_id_ptr, module->globals_size, (ts_allocate_ctor) module->globals_ctor, (ts_allocate_dtor) module->globals_dtor);
 2422|       |#else
 2423|     12|		if (module->globals_ctor) {
  ------------------
  |  Branch (2423:7): [True: 10, False: 2]
  ------------------
 2424|     10|			module->globals_ctor(module->globals_ptr);
 2425|     10|		}
 2426|     12|#endif
 2427|     12|	}
 2428|     26|	if (module->module_startup_func) {
  ------------------
  |  Branch (2428:6): [True: 26, False: 0]
  ------------------
 2429|     26|		EG(current_module) = module;
  ------------------
  |  |   45|     26|# define EG(v) (executor_globals.v)
  ------------------
 2430|     26|		if (module->module_startup_func(module->type, module->module_number)==FAILURE) {
  ------------------
  |  Branch (2430:7): [True: 0, False: 26]
  ------------------
 2431|      0|			zend_error_noreturn(E_CORE_ERROR,"Unable to start %s module", module->name);
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 2432|      0|		}
 2433|     26|		EG(current_module) = NULL;
  ------------------
  |  |   45|     26|# define EG(v) (executor_globals.v)
  ------------------
 2434|     26|	}
 2435|     26|	return SUCCESS;
 2436|     26|}
zend_collect_module_handlers:
 2483|      2|{
 2484|      2|	zend_module_entry *module;
 2485|      2|	int startup_count = 0;
 2486|      2|	int shutdown_count = 0;
 2487|      2|	int post_deactivate_count = 0;
 2488|      2|	int dl_loaded_count = 0;
 2489|      2|	zend_class_entry *ce;
 2490|      2|	int class_count = 0;
 2491|       |
 2492|       |	/* Collect extensions with request startup/shutdown handlers */
 2493|     56|	ZEND_HASH_MAP_FOREACH_PTR(&module_registry, module) {
  ------------------
  |  | 1341|     26|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     28|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 26, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     26|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     26|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     26|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 26]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     26|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     26|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2493:2): [True: 0, False: 2]
  |  Branch (2493:2): [True: 2, False: 0]
  ------------------
 2494|     56|		if (module->request_startup_func) {
  ------------------
  |  Branch (2494:7): [True: 16, False: 10]
  ------------------
 2495|     16|			startup_count++;
 2496|     16|		}
 2497|     56|		if (module->request_shutdown_func) {
  ------------------
  |  Branch (2497:7): [True: 8, False: 18]
  ------------------
 2498|      8|			shutdown_count++;
 2499|      8|		}
 2500|     56|		if (module->post_deactivate_func) {
  ------------------
  |  Branch (2500:7): [True: 6, False: 20]
  ------------------
 2501|      6|			post_deactivate_count++;
 2502|      6|		}
 2503|     56|		if (module->handle) {
  ------------------
  |  Branch (2503:7): [True: 0, False: 26]
  ------------------
 2504|      0|			dl_loaded_count++;
 2505|      0|		}
 2506|     56|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     26|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2507|      2|	module_request_startup_handlers = (zend_module_entry**)perealloc(
  ------------------
  |  |  200|      2|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2508|      2|		module_request_startup_handlers,
 2509|      2|	    sizeof(zend_module_entry*) *
 2510|      2|		(startup_count + 1 +
 2511|      2|		 shutdown_count + 1 +
 2512|      2|		 post_deactivate_count + 1), true);
 2513|      2|	module_request_startup_handlers[startup_count] = NULL;
 2514|      2|	module_request_shutdown_handlers = module_request_startup_handlers + startup_count + 1;
 2515|      2|	module_request_shutdown_handlers[shutdown_count] = NULL;
 2516|      2|	module_post_deactivate_handlers = module_request_shutdown_handlers + shutdown_count + 1;
 2517|      2|	module_post_deactivate_handlers[post_deactivate_count] = NULL;
 2518|       |	/* Cannot reuse module_request_startup_handlers because it is freed in zend_destroy_modules, which happens before zend_unload_modules. */
 2519|      2|	modules_dl_loaded = perealloc(modules_dl_loaded, sizeof(zend_module_entry*) * (dl_loaded_count + 1), true);
  ------------------
  |  |  200|      2|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2520|      2|	modules_dl_loaded[dl_loaded_count] = NULL;
 2521|      2|	startup_count = 0;
 2522|       |
 2523|     56|	ZEND_HASH_MAP_FOREACH_PTR(&module_registry, module) {
  ------------------
  |  | 1341|     26|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     28|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 26, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     26|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     26|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     26|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 26]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     26|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     26|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2523:2): [True: 0, False: 2]
  |  Branch (2523:2): [True: 2, False: 0]
  ------------------
 2524|     56|		if (module->request_startup_func) {
  ------------------
  |  Branch (2524:7): [True: 16, False: 10]
  ------------------
 2525|     16|			module_request_startup_handlers[startup_count++] = module;
 2526|     16|		}
 2527|     56|		if (module->request_shutdown_func) {
  ------------------
  |  Branch (2527:7): [True: 8, False: 18]
  ------------------
 2528|      8|			module_request_shutdown_handlers[--shutdown_count] = module;
 2529|      8|		}
 2530|     56|		if (module->post_deactivate_func) {
  ------------------
  |  Branch (2530:7): [True: 6, False: 20]
  ------------------
 2531|      6|			module_post_deactivate_handlers[--post_deactivate_count] = module;
 2532|      6|		}
 2533|     56|		if (module->handle) {
  ------------------
  |  Branch (2533:7): [True: 0, False: 26]
  ------------------
 2534|      0|			modules_dl_loaded[--dl_loaded_count] = module;
 2535|      0|		}
 2536|     56|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     26|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2537|       |
 2538|       |	/* Collect internal classes with static members */
 2539|    700|	ZEND_HASH_MAP_FOREACH_PTR(CG(class_table), ce) {
  ------------------
  |  | 1341|    348|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    350|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 348, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    348|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    348|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    348|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 348]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    348|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    348|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 348]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    348|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2539:2): [True: 0, False: 2]
  |  Branch (2539:2): [True: 2, False: 0]
  ------------------
 2540|    700|		if (ce->type == ZEND_INTERNAL_CLASS &&
  ------------------
  |  Branch (2540:7): [True: 348, False: 0]
  ------------------
 2541|    348|		    ce->default_static_members_count > 0) {
  ------------------
  |  Branch (2541:7): [True: 0, False: 348]
  ------------------
 2542|      0|		    class_count++;
 2543|      0|		}
 2544|    700|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    348|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2545|       |
 2546|      2|	class_cleanup_handlers = (zend_class_entry**)perealloc(
  ------------------
  |  |  200|      2|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 2, Folded]
  |  |  ------------------
  ------------------
 2547|      2|		class_cleanup_handlers,
 2548|      2|		sizeof(zend_class_entry*) *
 2549|      2|		(class_count + 1), true);
 2550|      2|	class_cleanup_handlers[class_count] = NULL;
 2551|       |
 2552|      2|	if (class_count) {
  ------------------
  |  Branch (2552:6): [True: 0, False: 2]
  ------------------
 2553|      0|		ZEND_HASH_MAP_FOREACH_PTR(CG(class_table), ce) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2553:3): [True: 0, False: 0]
  |  Branch (2553:3): [True: 0, False: 0]
  ------------------
 2554|      0|			if (ce->type == ZEND_INTERNAL_CLASS &&
  ------------------
  |  Branch (2554:8): [True: 0, False: 0]
  ------------------
 2555|      0|			    ce->default_static_members_count > 0) {
  ------------------
  |  Branch (2555:8): [True: 0, False: 0]
  ------------------
 2556|      0|			    class_cleanup_handlers[--class_count] = ce;
 2557|      0|			}
 2558|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2559|      0|	}
 2560|      2|}
zend_startup_modules:
 2564|      2|{
 2565|       |	zend_hash_sort_ex(&module_registry, zend_sort_modules, NULL, 0);
 2566|      2|	zend_hash_apply(&module_registry, zend_startup_module_zval);
 2567|      2|}
zend_register_module_ex:
 2581|     26|{
 2582|     26|	size_t name_len;
 2583|     26|	zend_string *lcname;
 2584|     26|	zend_module_entry *module_ptr;
 2585|       |
 2586|     26|	if (!module) {
  ------------------
  |  Branch (2586:6): [True: 0, False: 26]
  ------------------
 2587|      0|		return NULL;
 2588|      0|	}
 2589|       |
 2590|       |#if 0
 2591|       |	zend_printf("%s: Registering module %d\n", module->name, module->module_number);
 2592|       |#endif
 2593|       |
 2594|       |	/* Check module dependencies */
 2595|     26|	if (module->deps) {
  ------------------
  |  Branch (2595:6): [True: 8, False: 18]
  ------------------
 2596|      8|		const zend_module_dep *dep = module->deps;
 2597|       |
 2598|     22|		while (dep->name) {
  ------------------
  |  Branch (2598:10): [True: 14, False: 8]
  ------------------
 2599|     14|			if (dep->type == MODULE_DEP_CONFLICTS) {
  ------------------
  |  |  102|     14|#define MODULE_DEP_CONFLICTS	2
  ------------------
  |  Branch (2599:8): [True: 0, False: 14]
  ------------------
 2600|      0|				name_len = strlen(dep->name);
 2601|      0|				lcname = zend_string_alloc(name_len, 0);
 2602|      0|				zend_str_tolower_copy(ZSTR_VAL(lcname), dep->name, name_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2603|       |
 2604|      0|				if (zend_hash_exists(&module_registry, lcname) || zend_get_extension(dep->name)) {
  ------------------
  |  Branch (2604:9): [True: 0, False: 0]
  |  Branch (2604:55): [True: 0, False: 0]
  ------------------
 2605|      0|					zend_string_efree(lcname);
 2606|       |					/* TODO: Check version relationship */
 2607|      0|					zend_error(E_CORE_WARNING, "Cannot load module \"%s\" because conflicting module \"%s\" is already loaded", module->name, dep->name);
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
 2608|      0|					return NULL;
 2609|      0|				}
 2610|      0|				zend_string_efree(lcname);
 2611|      0|			}
 2612|     14|			++dep;
 2613|     14|		}
 2614|      8|	}
 2615|       |
 2616|     26|	name_len = strlen(module->name);
 2617|     26|	lcname = zend_string_alloc(name_len, module_type == MODULE_PERSISTENT);
  ------------------
  |  |   63|     26|#define MODULE_PERSISTENT 1
  ------------------
 2618|     26|	zend_str_tolower_copy(ZSTR_VAL(lcname), module->name, name_len);
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2619|       |
 2620|     26|	int module_number = zend_next_free_module();
 2621|       |
 2622|     26|	lcname = zend_new_interned_string(lcname);
 2623|     26|	if ((module_ptr = zend_hash_add_ptr(&module_registry, lcname, module)) == NULL) {
  ------------------
  |  Branch (2623:6): [True: 0, False: 26]
  ------------------
 2624|      0|		zend_error(E_CORE_WARNING, "Module \"%s\" is already loaded", module->name);
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
 2625|      0|		zend_string_release(lcname);
 2626|      0|		return NULL;
 2627|      0|	}
 2628|     26|	module = module_ptr;
 2629|     26|	EG(current_module) = module;
  ------------------
  |  |   45|     26|# define EG(v) (executor_globals.v)
  ------------------
 2630|       |
 2631|     26|	module->module_number = module_number;
 2632|     26|	module->type = module_type;
 2633|       |
 2634|     26|	if (module->functions && zend_register_functions(NULL, module->functions, NULL, module_type)==FAILURE) {
  ------------------
  |  Branch (2634:6): [True: 20, False: 6]
  |  Branch (2634:27): [True: 0, False: 20]
  ------------------
 2635|      0|		zend_hash_del(&module_registry, lcname);
 2636|      0|		zend_string_release(lcname);
 2637|      0|		EG(current_module) = NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2638|      0|		zend_error(E_CORE_WARNING,"%s: Unable to register functions, unable to load", module->name);
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
 2639|      0|		return NULL;
 2640|      0|	}
 2641|       |
 2642|     26|	EG(current_module) = NULL;
  ------------------
  |  |   45|     26|# define EG(v) (executor_globals.v)
  ------------------
 2643|     26|	zend_string_release(lcname);
 2644|     26|	return module;
 2645|     26|}
zend_register_internal_module:
 2649|     24|{
 2650|     24|	return zend_register_module_ex(module, MODULE_PERSISTENT);
  ------------------
  |  |   63|     24|#define MODULE_PERSISTENT 1
  ------------------
 2651|     24|}
zend_check_magic_method_implementation:
 2766|  2.56k|{
 2767|  2.56k|	if (ZSTR_VAL(lcname)[0] != '_'
  ------------------
  |  |   67|  2.56k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2767:6): [True: 1.96k, False: 608]
  ------------------
 2768|  1.96k|	 || ZSTR_VAL(lcname)[1] != '_') {
  ------------------
  |  |   67|    608|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2768:6): [True: 2, False: 606]
  ------------------
 2769|  1.96k|		return;
 2770|  1.96k|	}
 2771|       |
 2772|    606|	if (zend_string_equals_literal(lcname, ZEND_CONSTRUCTOR_FUNC_NAME)) {
  ------------------
  |  |  407|    606|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 207, False: 399]
  |  |  ------------------
  ------------------
 2773|    207|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2774|    207|		zend_check_magic_method_no_return_type(ce, fptr, error_type);
 2775|    399|	} else if (zend_string_equals_literal(lcname, ZEND_DESTRUCTOR_FUNC_NAME)) {
  ------------------
  |  |  407|    399|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 64, False: 335]
  |  |  ------------------
  ------------------
 2776|     64|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2777|     64|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2778|     64|		zend_check_magic_method_no_return_type(ce, fptr, error_type);
 2779|    335|	} else if (zend_string_equals_literal(lcname, ZEND_CLONE_FUNC_NAME)) {
  ------------------
  |  |  407|    335|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 31, False: 304]
  |  |  ------------------
  ------------------
 2780|     31|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2781|     31|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2782|     31|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_VOID);
  ------------------
  |  |   40|     31|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|     31|#define IS_VOID						14
  |  |  ------------------
  ------------------
 2783|    304|	} else if (zend_string_equals_literal(lcname, ZEND_GET_FUNC_NAME)) {
  ------------------
  |  |  407|    304|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 18, False: 286]
  |  |  ------------------
  ------------------
 2784|     18|		zend_check_magic_method_args(1, ce, fptr, error_type);
 2785|     18|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2786|     18|		zend_check_magic_method_public(ce, fptr);
 2787|     18|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|     18|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     18|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2788|    286|	} else if (zend_string_equals_literal(lcname, ZEND_SET_FUNC_NAME)) {
  ------------------
  |  |  407|    286|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 12, False: 274]
  |  |  ------------------
  ------------------
 2789|     12|		zend_check_magic_method_args(2, ce, fptr, error_type);
 2790|     12|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2791|     12|		zend_check_magic_method_public(ce, fptr);
 2792|     12|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|     12|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     12|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2793|     12|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_VOID);
  ------------------
  |  |   40|     12|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|     12|#define IS_VOID						14
  |  |  ------------------
  ------------------
 2794|    274|	} else if (zend_string_equals_literal(lcname, ZEND_UNSET_FUNC_NAME)) {
  ------------------
  |  |  407|    274|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 7, False: 267]
  |  |  ------------------
  ------------------
 2795|      7|		zend_check_magic_method_args(1, ce, fptr, error_type);
 2796|      7|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2797|      7|		zend_check_magic_method_public(ce, fptr);
 2798|      7|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|      7|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2799|      7|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_VOID);
  ------------------
  |  |   40|      7|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|      7|#define IS_VOID						14
  |  |  ------------------
  ------------------
 2800|    267|	} else if (zend_string_equals_literal(lcname, ZEND_ISSET_FUNC_NAME)) {
  ------------------
  |  |  407|    267|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 3, False: 264]
  |  |  ------------------
  ------------------
 2801|      3|		zend_check_magic_method_args(1, ce, fptr, error_type);
 2802|      3|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2803|      3|		zend_check_magic_method_public(ce, fptr);
 2804|      3|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|      3|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2805|      3|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_BOOL);
  ------------------
  |  |   27|      3|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|      3|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|      3|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2806|    264|	} else if (zend_string_equals_literal(lcname, ZEND_CALL_FUNC_NAME)) {
  ------------------
  |  |  407|    264|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 24, False: 240]
  |  |  ------------------
  ------------------
 2807|     24|		zend_check_magic_method_args(2, ce, fptr, error_type);
 2808|     24|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2809|     24|		zend_check_magic_method_public(ce, fptr);
 2810|     24|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|     24|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     24|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2811|     24|		zend_check_magic_method_arg_type(1, ce, fptr, error_type, MAY_BE_ARRAY);
  ------------------
  |  |   31|     24|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|     24|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2812|    240|	} else if (zend_string_equals_literal(lcname, ZEND_CALLSTATIC_FUNC_NAME)) {
  ------------------
  |  |  407|    240|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 10, False: 230]
  |  |  ------------------
  ------------------
 2813|     10|		zend_check_magic_method_args(2, ce, fptr, error_type);
 2814|     10|		zend_check_magic_method_static(ce, fptr, error_type);
 2815|     10|		zend_check_magic_method_public(ce, fptr);
 2816|     10|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|     10|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2817|     10|		zend_check_magic_method_arg_type(1, ce, fptr, error_type, MAY_BE_ARRAY);
  ------------------
  |  |   31|     10|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|     10|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2818|    230|	} else if (zend_string_equals_literal(lcname, ZEND_TOSTRING_FUNC_NAME)) {
  ------------------
  |  |  407|    230|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 56, False: 174]
  |  |  ------------------
  ------------------
 2819|     56|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2820|     56|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2821|     56|		zend_check_magic_method_public(ce, fptr);
 2822|     56|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_STRING);
  ------------------
  |  |   30|     56|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     56|#define IS_STRING					6
  |  |  ------------------
  ------------------
 2823|    174|	} else if (zend_string_equals_literal(lcname, ZEND_DEBUGINFO_FUNC_NAME)) {
  ------------------
  |  |  407|    174|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 42, False: 132]
  |  |  ------------------
  ------------------
 2824|     42|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2825|     42|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2826|     42|		zend_check_magic_method_public(ce, fptr);
 2827|     42|		zend_check_magic_method_return_type(ce, fptr, error_type, (MAY_BE_ARRAY | MAY_BE_NULL));
  ------------------
  |  |   31|     42|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|     42|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              		zend_check_magic_method_return_type(ce, fptr, error_type, (MAY_BE_ARRAY | MAY_BE_NULL));
  ------------------
  |  |   24|     42|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|     42|#define IS_NULL						1
  |  |  ------------------
  ------------------
 2828|     42|		if ((fptr->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) && ZEND_TYPE_PURE_MASK(fptr->common.arg_info[-1].type) & MAY_BE_NULL) {
  ------------------
  |  |  355|     42|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
              		if ((fptr->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) && ZEND_TYPE_PURE_MASK(fptr->common.arg_info[-1].type) & MAY_BE_NULL) {
  ------------------
  |  |  264|     35|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     35|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              		if ((fptr->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) && ZEND_TYPE_PURE_MASK(fptr->common.arg_info[-1].type) & MAY_BE_NULL) {
  ------------------
  |  |   24|     35|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|     35|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (2828:7): [True: 35, False: 7]
  |  Branch (2828:61): [True: 0, False: 35]
  ------------------
 2829|      0|			zend_error(E_DEPRECATED, "Returning null from %s::__debugInfo() is deprecated, make the return type non-nullable and return an empty array instead",
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2830|      0|				ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2831|      0|		}
 2832|    132|	} else if (zend_string_equals_literal(lcname, "__serialize")) {
  ------------------
  |  |  407|    132|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 43, False: 89]
  |  |  ------------------
  ------------------
 2833|     43|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2834|     43|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2835|     43|		zend_check_magic_method_public(ce, fptr);
 2836|     43|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_ARRAY);
  ------------------
  |  |   31|     43|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|     43|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2837|     89|	} else if (zend_string_equals_literal(lcname, "__unserialize")) {
  ------------------
  |  |  407|     89|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 43, False: 46]
  |  |  ------------------
  ------------------
 2838|     43|		zend_check_magic_method_args(1, ce, fptr, error_type);
 2839|     43|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2840|     43|		zend_check_magic_method_public(ce, fptr);
 2841|     43|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_ARRAY);
  ------------------
  |  |   31|     43|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|     43|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2842|     43|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_VOID);
  ------------------
  |  |   40|     43|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|     43|#define IS_VOID						14
  |  |  ------------------
  ------------------
 2843|     46|	} else if (zend_string_equals_literal(lcname, "__set_state")) {
  ------------------
  |  |  407|     46|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 12, False: 34]
  |  |  ------------------
  ------------------
 2844|     12|		zend_check_magic_method_args(1, ce, fptr, error_type);
 2845|     12|		zend_check_magic_method_static(ce, fptr, error_type);
 2846|     12|		zend_check_magic_method_public(ce, fptr);
 2847|     12|		zend_check_magic_method_arg_type(0, ce, fptr, error_type, MAY_BE_ARRAY);
  ------------------
  |  |   31|     12|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|     12|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2848|     12|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_OBJECT);
  ------------------
  |  |   32|     12|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|     12|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
 2849|     34|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE))) {
  ------------------
  |  Branch (2849:13): [True: 4, False: 30]
  ------------------
 2850|      4|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2851|      4|		zend_check_magic_method_public(ce, fptr);
 2852|     30|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_SLEEP))) {
  ------------------
  |  Branch (2852:13): [True: 3, False: 27]
  ------------------
 2853|      3|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2854|      3|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2855|      3|		zend_check_magic_method_public(ce, fptr);
 2856|      3|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_ARRAY);
  ------------------
  |  |   31|      3|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2857|     27|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_WAKEUP))) {
  ------------------
  |  Branch (2857:13): [True: 21, False: 6]
  ------------------
 2858|     21|		zend_check_magic_method_args(0, ce, fptr, error_type);
 2859|     21|		zend_check_magic_method_non_static(ce, fptr, error_type);
 2860|     21|		zend_check_magic_method_public(ce, fptr);
 2861|     21|		zend_check_magic_method_return_type(ce, fptr, error_type, MAY_BE_VOID);
  ------------------
  |  |   40|     21|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|     21|#define IS_VOID						14
  |  |  ------------------
  ------------------
 2862|     21|	}
 2863|    606|}
zend_add_magic_method:
 2867|  2.63k|{
 2868|  2.63k|	if (ZSTR_VAL(lcname)[0] != '_' || ZSTR_VAL(lcname)[1] != '_') {
  ------------------
  |  |   67|  2.63k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (ZSTR_VAL(lcname)[0] != '_' || ZSTR_VAL(lcname)[1] != '_') {
  ------------------
  |  |   67|    619|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2868:6): [True: 2.01k, False: 619]
  |  Branch (2868:36): [True: 2, False: 617]
  ------------------
 2869|       |		/* pass */
 2870|  2.01k|	} else if (zend_string_equals_literal(lcname, ZEND_CLONE_FUNC_NAME)) {
  ------------------
  |  |  407|    617|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 31, False: 586]
  |  |  ------------------
  ------------------
 2871|     31|		ce->clone = fptr;
 2872|    586|	} else if (zend_string_equals_literal(lcname, ZEND_CONSTRUCTOR_FUNC_NAME)) {
  ------------------
  |  |  407|    586|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 218, False: 368]
  |  |  ------------------
  ------------------
 2873|    218|		ce->constructor = fptr;
 2874|    218|		ce->constructor->common.fn_flags |= ZEND_ACC_CTOR;
  ------------------
  |  |  381|    218|#define ZEND_ACC_CTOR                    (1 << 21) /*     |  X  |     |     */
  ------------------
 2875|    368|	} else if (zend_string_equals_literal(lcname, ZEND_DESTRUCTOR_FUNC_NAME)) {
  ------------------
  |  |  407|    368|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 64, False: 304]
  |  |  ------------------
  ------------------
 2876|     64|		ce->destructor = fptr;
 2877|    304|	} else if (zend_string_equals_literal(lcname, ZEND_GET_FUNC_NAME)) {
  ------------------
  |  |  407|    304|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 18, False: 286]
  |  |  ------------------
  ------------------
 2878|     18|		ce->__get = fptr;
 2879|     18|		ce->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|     18|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
 2880|    286|	} else if (zend_string_equals_literal(lcname, ZEND_SET_FUNC_NAME)) {
  ------------------
  |  |  407|    286|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 12, False: 274]
  |  |  ------------------
  ------------------
 2881|     12|		ce->__set = fptr;
 2882|     12|		ce->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|     12|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
 2883|    274|	} else if (zend_string_equals_literal(lcname, ZEND_CALL_FUNC_NAME)) {
  ------------------
  |  |  407|    274|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 24, False: 250]
  |  |  ------------------
  ------------------
 2884|     24|		ce->__call = fptr;
 2885|    250|	} else if (zend_string_equals_literal(lcname, ZEND_UNSET_FUNC_NAME)) {
  ------------------
  |  |  407|    250|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 7, False: 243]
  |  |  ------------------
  ------------------
 2886|      7|		ce->__unset = fptr;
 2887|      7|		ce->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|      7|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
 2888|    243|	} else if (zend_string_equals_literal(lcname, ZEND_ISSET_FUNC_NAME)) {
  ------------------
  |  |  407|    243|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 3, False: 240]
  |  |  ------------------
  ------------------
 2889|      3|		ce->__isset = fptr;
 2890|      3|		ce->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|      3|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
 2891|    240|	} else if (zend_string_equals_literal(lcname, ZEND_CALLSTATIC_FUNC_NAME)) {
  ------------------
  |  |  407|    240|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 10, False: 230]
  |  |  ------------------
  ------------------
 2892|     10|		ce->__callstatic = fptr;
 2893|    230|	} else if (zend_string_equals_literal(lcname, ZEND_TOSTRING_FUNC_NAME)) {
  ------------------
  |  |  407|    230|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 56, False: 174]
  |  |  ------------------
  ------------------
 2894|     56|		ce->__tostring = fptr;
 2895|    174|	} else if (zend_string_equals_literal(lcname, ZEND_DEBUGINFO_FUNC_NAME)) {
  ------------------
  |  |  407|    174|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 42, False: 132]
  |  |  ------------------
  ------------------
 2896|     42|		ce->__debugInfo = fptr;
 2897|     42|		ce->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|     42|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
 2898|    132|	} else if (zend_string_equals_literal(lcname, "__serialize")) {
  ------------------
  |  |  407|    132|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 43, False: 89]
  |  |  ------------------
  ------------------
 2899|     43|		ce->__serialize = fptr;
 2900|     89|	} else if (zend_string_equals_literal(lcname, "__unserialize")) {
  ------------------
  |  |  407|     89|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 43, False: 46]
  |  |  ------------------
  ------------------
 2901|     43|		ce->__unserialize = fptr;
 2902|     43|	}
 2903|  2.63k|}
zend_convert_internal_arg_info:
 2991|  6.95k|{
 2992|  6.95k|	if (!is_return_info) {
  ------------------
  |  Branch (2992:6): [True: 3.57k, False: 3.38k]
  ------------------
 2993|  3.57k|		new_arg_info->name = zend_string_init_interned(arg_info->name, strlen(arg_info->name), persistent);
 2994|  3.57k|		if (arg_info->default_value) {
  ------------------
  |  Branch (2994:7): [True: 1.15k, False: 2.41k]
  ------------------
 2995|  1.15k|			new_arg_info->default_value = zend_string_init_interned(arg_info->default_value, strlen(arg_info->default_value), persistent);
 2996|  2.41k|		} else {
 2997|  2.41k|			new_arg_info->default_value = NULL;
 2998|  2.41k|		}
 2999|  3.57k|	} else {
 3000|  3.38k|		new_arg_info->name = NULL;
 3001|  3.38k|		new_arg_info->default_value = NULL;
 3002|  3.38k|	}
 3003|       |	new_arg_info->doc_comment = NULL;
 3004|  6.95k|	new_arg_info->type = arg_info->type;
 3005|  6.95k|	zend_convert_internal_arg_info_type(&new_arg_info->type, persistent);
 3006|  6.95k|}
zend_register_functions:
 3010|    268|{
 3011|    268|	const zend_function_entry *ptr = functions;
 3012|    268|	zend_function function;
 3013|    268|	zend_internal_function *reg_function, *internal_function = (zend_internal_function *)&function;
 3014|    268|	int count=0, unload=0;
 3015|    268|	HashTable *target_function_table = function_table;
 3016|    268|	int error_type;
 3017|    268|	zend_string *lowercase_name;
 3018|    268|	size_t fname_len;
 3019|    268|	const zend_internal_arg_info *internal_arg_info;
 3020|       |
 3021|    268|	if (type==MODULE_PERSISTENT) {
  ------------------
  |  |   63|    268|#define MODULE_PERSISTENT 1
  ------------------
  |  Branch (3021:6): [True: 268, False: 0]
  ------------------
 3022|    268|		error_type = E_CORE_WARNING;
  ------------------
  |  |   27|    268|#define E_CORE_WARNING		(1<<5L)
  ------------------
 3023|    268|	} else {
 3024|      0|		error_type = E_WARNING;
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 3025|      0|	}
 3026|       |
 3027|    268|	if (!target_function_table) {
  ------------------
  |  Branch (3027:6): [True: 20, False: 248]
  ------------------
 3028|     20|		target_function_table = CG(function_table);
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
 3029|     20|	}
 3030|    268|	internal_function->type = ZEND_INTERNAL_FUNCTION;
 3031|    268|	internal_function->module = EG(current_module);
  ------------------
  |  |   45|    268|# define EG(v) (executor_globals.v)
  ------------------
 3032|    268|	if (EG(active) && ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |   45|    536|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 268]
  |  |  ------------------
  ------------------
              	if (EG(active) && ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |   46|      0|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  ------------------
  |  |  |  Branch (46:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3033|       |		/* Add an observer temporary to store previous observed frames. This is
 3034|       |		 * normally handled by zend_observer_post_startup(), except for
 3035|       |		 * functions registered at runtime (EG(active)). */
 3036|      0|		internal_function->T = 1;
 3037|    268|	} else {
 3038|    268|		internal_function->T = 0;
 3039|    268|	}
 3040|    268|	memset(internal_function->reserved, 0, ZEND_MAX_RESERVED_RESOURCES * sizeof(void*));
  ------------------
  |  |  554|    268|#define ZEND_MAX_RESERVED_RESOURCES	6
  ------------------
 3041|       |
 3042|  3.64k|	while (ptr->fname) {
  ------------------
  |  Branch (3042:9): [True: 3.38k, False: 268]
  ------------------
 3043|  3.38k|		fname_len = strlen(ptr->fname);
 3044|  3.38k|		internal_function->handler = ptr->handler;
 3045|  3.38k|		internal_function->doc_comment = ptr->doc_comment ? zend_string_init_interned(ptr->doc_comment, strlen(ptr->doc_comment), 1) : NULL;
  ------------------
  |  Branch (3045:36): [True: 0, False: 3.38k]
  ------------------
 3046|  3.38k|		internal_function->function_name = zend_string_init_interned(ptr->fname, fname_len, 1);
 3047|  3.38k|		internal_function->scope = scope;
 3048|  3.38k|		internal_function->prototype = NULL;
 3049|  3.38k|		internal_function->prop_info = NULL;
 3050|  3.38k|		internal_function->attributes = NULL;
 3051|  3.38k|		internal_function->frameless_function_infos = ptr->frameless_function_infos;
 3052|  3.38k|		if (EG(active)) { // at run-time: this ought to only happen if registered with dl() or somehow temporarily at runtime
  ------------------
  |  |   45|  3.38k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 3.38k]
  |  |  ------------------
  ------------------
 3053|      0|			ZEND_MAP_PTR_INIT(internal_function->run_time_cache, zend_arena_calloc(&CG(arena), 1, zend_internal_run_time_cache_reserved_size()));
  ------------------
  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   40|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3054|  3.38k|		} else {
 3055|       |#ifdef ZTS
 3056|       |			ZEND_MAP_PTR_NEW_STATIC(internal_function->run_time_cache);
 3057|       |#else
 3058|  3.38k|			ZEND_MAP_PTR_INIT(internal_function->run_time_cache, NULL);
  ------------------
  |  |   38|  3.38k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  3.38k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  3.38k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  3.38k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 3.38k]
  |  |  ------------------
  ------------------
 3059|  3.38k|#endif
 3060|  3.38k|		}
 3061|  3.38k|		if (ptr->flags & UINT32_MAX) {
  ------------------
  |  Branch (3061:7): [True: 2.30k, False: 1.07k]
  ------------------
 3062|  2.30k|			if (!(ptr->flags & ZEND_ACC_PPP_MASK)) {
  ------------------
  |  |  421|  2.30k|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|  2.30k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|  2.30k|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|  2.30k|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (3062:8): [True: 370, False: 1.93k]
  ------------------
 3063|    370|				if (ptr->flags != ZEND_ACC_DEPRECATED && scope) {
  ------------------
  |  |  258|    740|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (3063:9): [True: 354, False: 16]
  |  Branch (3063:46): [True: 0, False: 354]
  ------------------
 3064|      0|					zend_error(error_type, "Invalid access level for %s::%s() - access must be exactly one of public, protected or private", ZSTR_VAL(scope->name), ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3065|      0|				}
 3066|    370|				internal_function->fn_flags = ZEND_ACC_PUBLIC | ptr->flags;
  ------------------
  |  |  219|    370|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 3067|  1.93k|			} else {
 3068|  1.93k|				internal_function->fn_flags = ptr->flags;
 3069|  1.93k|			}
 3070|  2.30k|		} else {
 3071|  1.07k|			internal_function->fn_flags = ZEND_ACC_PUBLIC;
  ------------------
  |  |  219|  1.07k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 3072|  1.07k|		}
 3073|  3.38k|		internal_function->fn_flags2 = ptr->flags >> 32;
 3074|       |
 3075|  3.38k|		if (ptr->arg_info) {
  ------------------
  |  Branch (3075:7): [True: 3.38k, False: 0]
  ------------------
 3076|  3.38k|			zend_internal_function_info *info = (zend_internal_function_info*)ptr->arg_info;
 3077|  3.38k|			internal_arg_info = ptr->arg_info+1;
 3078|  3.38k|			internal_function->num_args = ptr->num_args;
 3079|       |			/* Currently you cannot denote that the function can accept less arguments than num_args */
 3080|  3.38k|			if (info->required_num_args == (uintptr_t)-1) {
  ------------------
  |  Branch (3080:8): [True: 0, False: 3.38k]
  ------------------
 3081|      0|				internal_function->required_num_args = ptr->num_args;
 3082|  3.38k|			} else {
 3083|  3.38k|				internal_function->required_num_args = info->required_num_args;
 3084|  3.38k|			}
 3085|  3.38k|			if (ZEND_ARG_SEND_MODE(info)) {
  ------------------
  |  | 1130|  3.38k|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|  3.38k|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|  3.38k|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|  3.38k|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1130:2): [True: 0, False: 3.38k]
  |  |  ------------------
  ------------------
 3086|      0|				internal_function->fn_flags |= ZEND_ACC_RETURN_REFERENCE;
  ------------------
  |  |  352|      0|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
 3087|      0|			}
 3088|  3.38k|			if (ZEND_ARG_IS_VARIADIC(&ptr->arg_info[ptr->num_args])) {
  ------------------
  |  | 1132|  3.38k|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|  3.38k|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1126|  3.38k|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|  3.38k|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1132:2): [True: 92, False: 3.28k]
  |  |  ------------------
  ------------------
 3089|     92|				internal_function->fn_flags |= ZEND_ACC_VARIADIC;
  ------------------
  |  |  358|     92|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
 3090|       |				/* Don't count the variadic argument */
 3091|     92|				internal_function->num_args--;
 3092|     92|			}
 3093|  3.38k|			if (ZEND_TYPE_IS_SET(info->type)) {
  ------------------
  |  |  152|  3.38k|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|  3.38k|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 3.18k, False: 192]
  |  |  ------------------
  ------------------
 3094|  3.18k|				if (ZEND_TYPE_HAS_NAME(info->type)) {
  ------------------
  |  |  160|  3.18k|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|  3.18k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 0, False: 3.18k]
  |  |  ------------------
  ------------------
 3095|      0|					const char *type_name = ZEND_TYPE_LITERAL_NAME(info->type);
  ------------------
  |  |  187|      0|	((const char *) (t).ptr)
  ------------------
 3096|      0|					if (!scope && (!strcasecmp(type_name, "self") || !strcasecmp(type_name, "parent"))) {
  ------------------
  |  Branch (3096:10): [True: 0, False: 0]
  |  Branch (3096:21): [True: 0, False: 0]
  |  Branch (3096:55): [True: 0, False: 0]
  ------------------
 3097|      0|						zend_error_noreturn(E_CORE_ERROR, "Cannot declare a return type of %s outside of a class scope", type_name);
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 3098|      0|					}
 3099|      0|				}
 3100|       |
 3101|  3.18k|				internal_function->fn_flags |= ZEND_ACC_HAS_RETURN_TYPE;
  ------------------
  |  |  355|  3.18k|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
 3102|  3.18k|			}
 3103|  3.38k|		} else {
 3104|      0|			zend_error(E_CORE_WARNING, "Missing arginfo for %s%s%s()",
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
 3105|      0|				 scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3105:6): [True: 0, False: 0]
  |  Branch (3105:42): [True: 0, False: 0]
  ------------------
 3106|       |
 3107|      0|			internal_arg_info = NULL;
 3108|      0|			internal_function->num_args = 0;
 3109|      0|			internal_function->required_num_args = 0;
 3110|      0|		}
 3111|       |
 3112|       |		/* If not specified, add __toString() return type for compatibility with Stringable
 3113|       |		 * interface. */
 3114|  3.38k|		if (scope && zend_string_equals_literal_ci(internal_function->function_name, "__tostring") &&
  ------------------
  |  |  404|  5.31k|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|  1.93k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|    136|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    136|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 136, False: 1.80k]
  |  |  |  Branch (404:40): [True: 36, False: 100]
  |  |  ------------------
  ------------------
  |  Branch (3114:7): [True: 1.93k, False: 1.44k]
  ------------------
 3115|     36|				!(internal_function->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|     36|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (3115:5): [True: 0, False: 36]
  ------------------
 3116|      0|			zend_error(E_CORE_WARNING, "%s::__toString() implemented without string return type",
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
 3117|      0|				ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3118|      0|			internal_arg_info = (zend_internal_arg_info *) arg_info_toString + 1;
 3119|      0|			internal_function->fn_flags |= ZEND_ACC_HAS_RETURN_TYPE;
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
 3120|      0|			internal_function->num_args = internal_function->required_num_args = 0;
 3121|      0|		}
 3122|       |
 3123|  3.38k|		if (ptr->flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|  3.38k|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (3123:7): [True: 90, False: 3.29k]
  ------------------
 3124|     90|			if (scope) {
  ------------------
  |  Branch (3124:8): [True: 90, False: 0]
  ------------------
 3125|       |				/* This is a class that must be abstract itself. Here we set the check info. */
 3126|     90|				scope->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|     90|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 3127|     90|				if (!(scope->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|     90|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (3127:9): [True: 4, False: 86]
  ------------------
 3128|       |					/* Since the class is not an interface it needs to be declared as a abstract class. */
 3129|       |					/* Since here we are handling internal functions only we can add the keyword flag. */
 3130|       |					/* This time we set the flag for the keyword 'abstract'. */
 3131|      4|					scope->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  234|      4|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
 3132|      4|				}
 3133|     90|			}
 3134|     90|			if ((ptr->flags & ZEND_ACC_STATIC) && (!scope || !(scope->ce_flags & ZEND_ACC_INTERFACE))) {
  ------------------
  |  |  227|     90|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              			if ((ptr->flags & ZEND_ACC_STATIC) && (!scope || !(scope->ce_flags & ZEND_ACC_INTERFACE))) {
  ------------------
  |  |  281|      6|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (3134:8): [True: 6, False: 84]
  |  Branch (3134:43): [True: 0, False: 6]
  |  Branch (3134:53): [True: 0, False: 6]
  ------------------
 3135|      0|				zend_error(error_type, "Static function %s%s%s() cannot be abstract", scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3135:75): [True: 0, False: 0]
  |  Branch (3135:111): [True: 0, False: 0]
  ------------------
 3136|      0|			}
 3137|  3.29k|		} else {
 3138|  3.29k|			if (scope && (scope->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|  1.84k|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (3138:8): [True: 1.84k, False: 1.44k]
  |  Branch (3138:17): [True: 0, False: 1.84k]
  ------------------
 3139|      0|				zend_error(error_type, "Interface %s cannot contain non abstract method %s()", ZSTR_VAL(scope->name), ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3140|      0|				return FAILURE;
 3141|      0|			}
 3142|  3.29k|			if (!internal_function->handler) {
  ------------------
  |  Branch (3142:8): [True: 0, False: 3.29k]
  ------------------
 3143|      0|				zend_error(error_type, "Method %s%s%s() cannot be a NULL function", scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3143:73): [True: 0, False: 0]
  |  Branch (3143:109): [True: 0, False: 0]
  ------------------
 3144|      0|				zend_unregister_functions(functions, count, target_function_table);
 3145|      0|				return FAILURE;
 3146|      0|			}
 3147|  3.29k|		}
 3148|  3.38k|		lowercase_name = zend_string_tolower_ex(internal_function->function_name, type == MODULE_PERSISTENT);
  ------------------
  |  |   63|  3.38k|#define MODULE_PERSISTENT 1
  ------------------
 3149|  3.38k|		lowercase_name = zend_new_interned_string(lowercase_name);
 3150|  3.38k|		reg_function = pemalloc(sizeof(zend_internal_function), true);
  ------------------
  |  |  188|  3.38k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|  3.38k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.38k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|  3.38k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.38k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 3.38k, Folded]
  |  |  ------------------
  ------------------
 3151|  3.38k|		memcpy(reg_function, &function, sizeof(zend_internal_function));
 3152|  3.38k|		if (zend_hash_add_ptr(target_function_table, lowercase_name, reg_function) == NULL) {
  ------------------
  |  Branch (3152:7): [True: 0, False: 3.38k]
  ------------------
 3153|      0|			unload=1;
 3154|      0|			free(reg_function);
 3155|      0|			zend_string_release(lowercase_name);
 3156|      0|			break;
 3157|      0|		}
 3158|  3.38k|		if (reg_function->frameless_function_infos) {
  ------------------
  |  Branch (3158:7): [True: 40, False: 3.34k]
  ------------------
 3159|     40|			const zend_frameless_function_info *flf_info = reg_function->frameless_function_infos;
 3160|     98|			while (flf_info->handler) {
  ------------------
  |  Branch (3160:11): [True: 58, False: 40]
  ------------------
 3161|     58|				if (zend_flf_count == zend_flf_capacity) {
  ------------------
  |  Branch (3161:9): [True: 6, False: 52]
  ------------------
 3162|      6|					if (!zend_flf_capacity) {
  ------------------
  |  Branch (3162:10): [True: 2, False: 4]
  ------------------
 3163|      2|						zend_flf_capacity = 8;
 3164|      4|					} else {
 3165|      4|						zend_flf_capacity *= 2;
 3166|      4|					}
 3167|       |					/* +1 for NULL terminator */
 3168|      6|					zend_flf_handlers = perealloc(zend_flf_handlers, (zend_flf_capacity + 1) * sizeof(void *), true);
  ------------------
  |  |  200|      6|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 6, Folded]
  |  |  ------------------
  ------------------
 3169|      6|					zend_flf_functions = perealloc(zend_flf_functions, (zend_flf_capacity + 1) * sizeof(zend_function *), true);
  ------------------
  |  |  200|      6|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 6, Folded]
  |  |  ------------------
  ------------------
 3170|      6|				}
 3171|     58|				zend_flf_handlers[zend_flf_count] = flf_info->handler;
 3172|     58|				zend_flf_functions[zend_flf_count] = (zend_function *)reg_function;
 3173|     58|				zend_flf_count++;
 3174|     58|				flf_info++;
 3175|     58|			}
 3176|     40|			zend_flf_handlers[zend_flf_count] = NULL;
 3177|     40|			zend_flf_functions[zend_flf_count] = NULL;
 3178|     40|		}
 3179|       |
 3180|       |		/* Get parameter count including variadic parameter. */
 3181|  3.38k|		uint32_t num_args = reg_function->num_args;
 3182|  3.38k|		if (reg_function->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|  3.38k|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (3182:7): [True: 92, False: 3.28k]
  ------------------
 3183|     92|			num_args++;
 3184|     92|		}
 3185|       |
 3186|       |		/* If types of arguments have to be checked */
 3187|  3.38k|		if (internal_arg_info && num_args) {
  ------------------
  |  Branch (3187:7): [True: 3.38k, False: 0]
  |  Branch (3187:28): [True: 1.96k, False: 1.41k]
  ------------------
 3188|  1.96k|			uint32_t i;
 3189|  5.53k|			for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (3189:16): [True: 3.56k, False: 1.96k]
  ------------------
 3190|  3.56k|				const zend_internal_arg_info *arg_info = &internal_arg_info[i];
 3191|  3.56k|				ZEND_ASSERT(arg_info->name && "Parameter must have a name");
  ------------------
  |  |  112|  3.56k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3191:5): [True: 0, False: 3.56k]
  |  Branch (3191:5): [True: 0, False: 0]
  |  Branch (3191:5): [True: 3.56k, False: 0]
  |  Branch (3191:5): [True: 3.56k, False: 0]
  ------------------
 3192|  3.56k|				if (ZEND_TYPE_IS_SET(arg_info->type)) {
  ------------------
  |  |  152|  3.56k|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|  3.56k|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 3.18k, False: 380]
  |  |  ------------------
  ------------------
 3193|  3.18k|				    reg_function->fn_flags |= ZEND_ACC_HAS_TYPE_HINTS;
  ------------------
  |  |  244|  3.18k|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
 3194|  3.18k|				}
 3195|  3.56k|#if ZEND_DEBUG
 3196|  6.19k|				for (uint32_t j = 0; j < i; j++) {
  ------------------
  |  Branch (3196:26): [True: 2.62k, False: 3.56k]
  ------------------
 3197|  2.62k|					if (!strcmp(arg_info->name, internal_arg_info[j].name)) {
  ------------------
  |  Branch (3197:10): [True: 0, False: 2.62k]
  ------------------
 3198|      0|						zend_error_noreturn(E_CORE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 3199|      0|							"Duplicate parameter name $%s for function %s%s%s()", arg_info->name,
 3200|      0|							scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3200:8): [True: 0, False: 0]
  |  Branch (3200:44): [True: 0, False: 0]
  ------------------
 3201|      0|					}
 3202|  2.62k|				}
 3203|  3.56k|#endif
 3204|  3.56k|			}
 3205|  1.96k|		}
 3206|       |
 3207|       |		/* Convert zend_internal_arg_info to zend_arg_info */
 3208|  3.38k|		if (internal_arg_info) {
  ------------------
  |  Branch (3208:7): [True: 3.38k, False: 0]
  ------------------
 3209|  3.38k|			uint32_t i;
 3210|  3.38k|			const zend_internal_arg_info *arg_info = internal_arg_info - 1;
 3211|  3.38k|			zend_arg_info *new_arg_info;
 3212|       |
 3213|       |			/* Treat return type as an extra argument */
 3214|  3.38k|			num_args++;
 3215|  3.38k|			new_arg_info = pemalloc(sizeof(zend_arg_info) * num_args, true);
  ------------------
  |  |  188|  3.38k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|  3.38k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.38k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|  3.38k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.38k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 3.38k, Folded]
  |  |  ------------------
  ------------------
 3216|  3.38k|			reg_function->arg_info = new_arg_info + 1;
 3217|  10.3k|			for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (3217:16): [True: 6.94k, False: 3.38k]
  ------------------
 3218|  6.94k|				zend_convert_internal_arg_info(&new_arg_info[i], &arg_info[i],
 3219|  6.94k|						i == 0, true);
 3220|  6.94k|			}
 3221|  3.38k|		}
 3222|       |
 3223|  3.38k|		zend_set_function_arg_flags((zend_function*)reg_function);
 3224|       |
 3225|  3.38k|		if (scope) {
  ------------------
  |  Branch (3225:7): [True: 1.93k, False: 1.44k]
  ------------------
 3226|  1.93k|			zend_check_magic_method_implementation(
 3227|  1.93k|				scope, (zend_function *)reg_function, lowercase_name, E_CORE_ERROR);
  ------------------
  |  |   26|  1.93k|#define E_CORE_ERROR		(1<<4L)
  ------------------
 3228|  1.93k|			zend_add_magic_method(scope, (zend_function *)reg_function, lowercase_name);
 3229|  1.93k|		}
 3230|  3.38k|		ptr++;
 3231|  3.38k|		count++;
 3232|  3.38k|		zend_string_release(lowercase_name);
 3233|  3.38k|	}
 3234|    268|	if (unload) { /* before unloading, display all remaining bad function in the module */
  ------------------
  |  Branch (3234:6): [True: 0, False: 268]
  ------------------
 3235|      0|		while (ptr->fname) {
  ------------------
  |  Branch (3235:10): [True: 0, False: 0]
  ------------------
 3236|      0|			fname_len = strlen(ptr->fname);
 3237|      0|			lowercase_name = zend_string_alloc(fname_len, 0);
 3238|      0|			zend_str_tolower_copy(ZSTR_VAL(lowercase_name), ptr->fname, fname_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3239|      0|			if (zend_hash_exists(target_function_table, lowercase_name)) {
  ------------------
  |  Branch (3239:8): [True: 0, False: 0]
  ------------------
 3240|      0|				zend_error(error_type, "Function registration failed - duplicate name - %s%s%s", scope ? ZSTR_VAL(scope->name) : "", scope ? "::" : "", ptr->fname);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3240:86): [True: 0, False: 0]
  |  Branch (3240:122): [True: 0, False: 0]
  ------------------
 3241|      0|			}
 3242|      0|			zend_string_efree(lowercase_name);
 3243|      0|			ptr++;
 3244|      0|		}
 3245|      0|		zend_unregister_functions(functions, count, target_function_table);
 3246|      0|		return FAILURE;
 3247|      0|	}
 3248|    268|	return SUCCESS;
 3249|    268|}
zend_activate_modules:
 3400|  33.5k|{
 3401|  33.5k|	zend_module_entry **p = module_request_startup_handlers;
 3402|       |
 3403|   302k|	while (*p) {
  ------------------
  |  Branch (3403:9): [True: 268k, False: 33.5k]
  ------------------
 3404|   268k|		const zend_module_entry *module = *p;
 3405|       |
 3406|   268k|		if (module->request_startup_func(module->type, module->module_number)==FAILURE) {
  ------------------
  |  Branch (3406:7): [True: 0, False: 268k]
  ------------------
 3407|      0|			zend_error(E_WARNING, "request_startup() for %s module failed", module->name);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 3408|      0|			exit(1);
 3409|      0|		}
 3410|   268k|		p++;
 3411|   268k|	}
 3412|  33.5k|}
zend_deactivate_modules:
 3416|  33.5k|{
 3417|  33.5k|	EG(current_execute_data) = NULL; /* we're no longer executing anything */
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 3418|       |
 3419|  33.5k|	if (EG(full_tables_cleanup)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 3420|      0|		zend_module_entry *module;
 3421|       |
 3422|      0|		ZEND_HASH_MAP_REVERSE_FOREACH_PTR(&module_registry, module) {
  ------------------
  |  | 1349|      0|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|      0|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|      0|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|      0|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|      0|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|      0|		zval *_z; \
  |  |  |  | 1281|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|      0|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|      0|			_p--; \
  |  |  |  | 1284|      0|			_z = &_p->val; \
  |  |  |  | 1285|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 0]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1350|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3422:3): [True: 0, False: 0]
  |  Branch (3422:3): [True: 0, False: 0]
  ------------------
 3423|      0|			if (module->request_shutdown_func) {
  ------------------
  |  Branch (3423:8): [True: 0, False: 0]
  ------------------
 3424|      0|				zend_try {
  ------------------
  |  |  276|      0|	{															\
  |  |  277|      0|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      0|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      0|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      0|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      0|																\
  |  |  280|      0|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      0|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      0|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3425|      0|					module->request_shutdown_func(module->type, module->module_number);
 3426|      0|				} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|      0|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      0|	}
  ------------------
 3427|      0|			}
 3428|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3429|  33.5k|	} else {
 3430|  33.5k|		zend_module_entry **p = module_request_shutdown_handlers;
 3431|       |
 3432|   167k|		while (*p) {
  ------------------
  |  Branch (3432:10): [True: 134k, False: 33.5k]
  ------------------
 3433|   134k|			const zend_module_entry *module = *p;
 3434|   134k|			zend_try {
  ------------------
  |  |  276|   134k|	{															\
  |  |  277|   134k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|   134k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|   134k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|   134k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|   134k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|   134k|																\
  |  |  280|   134k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|   134k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|   134k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|   134k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 134k, False: 0]
  |  |  ------------------
  ------------------
 3435|   134k|				module->request_shutdown_func(module->type, module->module_number);
 3436|   134k|			} zend_end_try();
  ------------------
  |  |  288|   134k|		}														\
  |  |  289|   134k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|   134k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|   134k|	}
  ------------------
 3437|   134k|			p++;
 3438|   134k|		}
 3439|  33.5k|	}
 3440|  33.5k|}
zend_post_deactivate_modules:
 3456|  33.5k|{
 3457|  33.5k|	if (EG(full_tables_cleanup)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 3458|      0|		zend_module_entry *module;
 3459|      0|		zval *zv;
 3460|      0|		zend_string *key;
 3461|       |
 3462|      0|		ZEND_HASH_MAP_FOREACH_PTR(&module_registry, module) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3462:3): [True: 0, False: 0]
  |  Branch (3462:3): [True: 0, False: 0]
  ------------------
 3463|      0|			if (module->post_deactivate_func) {
  ------------------
  |  Branch (3463:8): [True: 0, False: 0]
  ------------------
 3464|      0|				module->post_deactivate_func();
 3465|      0|			}
 3466|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3467|      0|		ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL(&module_registry, key, zv) {
  ------------------
  |  | 1399|      0|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|      0|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|      0|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|      0|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|      0|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|      0|		zval *_z; \
  |  |  |  | 1281|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|      0|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|      0|			_p--; \
  |  |  |  | 1284|      0|			_z = &_p->val; \
  |  |  |  | 1285|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 0]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1400|      0|	_key = _p->key; \
  |  | 1401|      0|	_val = _z;
  ------------------
  |  Branch (3467:3): [True: 0, False: 0]
  |  Branch (3467:3): [True: 0, False: 0]
  ------------------
 3468|      0|			module = Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3469|      0|			if (module->type != MODULE_TEMPORARY) {
  ------------------
  |  |   64|      0|#define MODULE_TEMPORARY 2
  ------------------
  |  Branch (3469:8): [True: 0, False: 0]
  ------------------
 3470|      0|				break;
 3471|      0|			}
 3472|      0|			module_destructor(module);
 3473|      0|			if (module->handle) {
  ------------------
  |  Branch (3473:8): [True: 0, False: 0]
  ------------------
 3474|      0|				module_registry_unload(module);
 3475|      0|			}
 3476|      0|			zend_string_release_ex(key, 0);
 3477|      0|		} ZEND_HASH_MAP_FOREACH_END_DEL();
  ------------------
  |  | 1291|      0|			ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1292|      0|			__ht->nNumOfElements--; \
  |  | 1293|      0|			do { \
  |  | 1294|      0|				uint32_t j = HT_IDX_TO_HASH(_idx - 1); \
  |  |  ------------------
  |  |  |  |  460|      0|	(idx)
  |  |  ------------------
  |  | 1295|      0|				uint32_t nIndex = _p->h | __ht->nTableMask; \
  |  | 1296|      0|				uint32_t i = HT_HASH(__ht, nIndex); \
  |  |  ------------------
  |  |  |  |  470|      0|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|      0|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1297|      0|				if (UNEXPECTED(j != i)) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1298|      0|					Bucket *prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1299|      0|					while (Z_NEXT(prev->val) != j) { \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |  |  Branch (1299:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1300|      0|						i = Z_NEXT(prev->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1301|      0|						prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1302|      0|					} \
  |  | 1303|      0|					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |               					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1304|      0|				} else { \
  |  | 1305|      0|					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  470|      0|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|      0|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1306|      0|				} \
  |  | 1307|      0|			} while (0); \
  |  |  ------------------
  |  |  |  Branch (1307:13): [Folded, False: 0]
  |  |  ------------------
  |  | 1308|      0|		} \
  |  | 1309|      0|		__ht->nNumUsed = _idx; \
  |  | 1310|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1310:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3477:5): [True: 0, False: 0]
  |  Branch (3477:5): [True: 0, False: 0]
  ------------------
 3478|  33.5k|	} else {
 3479|  33.5k|		zend_module_entry **p = module_post_deactivate_handlers;
 3480|       |
 3481|   134k|		while (*p) {
  ------------------
  |  Branch (3481:10): [True: 100k, False: 33.5k]
  ------------------
 3482|   100k|			const zend_module_entry *module = *p;
 3483|       |
 3484|   100k|			module->post_deactivate_func();
 3485|   100k|			p++;
 3486|   100k|		}
 3487|  33.5k|	}
 3488|  33.5k|}
zend_next_free_module:
 3493|     26|{
 3494|     26|	return zend_hash_num_elements(&module_registry);
 3495|     26|}
zend_register_internal_class_with_flags:
 3544|    284|) {
 3545|    284|	zend_class_entry *register_class = do_register_internal_class(class_entry, ce_flags);
 3546|       |
 3547|    284|	if (parent_ce) {
  ------------------
  |  Branch (3547:6): [True: 158, False: 126]
  ------------------
 3548|    158|		zend_do_inheritance(register_class, parent_ce);
 3549|    158|		zend_build_properties_info_table(register_class);
 3550|    158|	}
 3551|       |
 3552|    284|	return register_class;
 3553|    284|}
zend_class_implements:
 3556|    130|{
 3557|    130|	zend_class_entry *interface_entry;
 3558|    130|	va_list interface_list;
 3559|    130|	va_start(interface_list, num_interfaces);
 3560|       |
 3561|    304|	while (num_interfaces--) {
  ------------------
  |  Branch (3561:9): [True: 174, False: 130]
  ------------------
 3562|    174|		interface_entry = va_arg(interface_list, zend_class_entry *);
 3563|    174|		if (interface_entry == zend_ce_stringable
  ------------------
  |  Branch (3563:7): [True: 10, False: 164]
  ------------------
 3564|     10|				&& zend_class_implements_interface(class_entry, zend_ce_stringable)) {
  ------------------
  |  Branch (3564:8): [True: 6, False: 4]
  ------------------
 3565|       |			/* Stringable is implemented automatically,
 3566|       |			 * silently ignore an explicit implementation. */
 3567|      6|			continue;
 3568|      6|		}
 3569|       |
 3570|    168|		zend_do_implement_interface(class_entry, interface_entry);
 3571|    168|	}
 3572|       |
 3573|       |	va_end(interface_list);
 3574|    130|}
zend_register_internal_class:
 3580|     24|{
 3581|     24|	return do_register_internal_class(orig_class_entry, 0);
 3582|     24|}
zend_register_internal_interface:
 3586|     40|{
 3587|     40|	return do_register_internal_class(orig_class_entry, ZEND_ACC_INTERFACE);
  ------------------
  |  |  281|     40|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
 3588|     40|}
zend_register_class_alias_ex:
 3592|     30|{
 3593|     30|	zend_string *lcname;
 3594|     30|	zval zv, *ret;
 3595|       |
 3596|       |	/* TODO: Move this out of here in 7.4. */
 3597|     30|	if (persistent && EG(current_module) && EG(current_module)->type == MODULE_TEMPORARY) {
  ------------------
  |  |   45|     30|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (persistent && EG(current_module) && EG(current_module)->type == MODULE_TEMPORARY) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              	if (persistent && EG(current_module) && EG(current_module)->type == MODULE_TEMPORARY) {
  ------------------
  |  |   64|      0|#define MODULE_TEMPORARY 2
  ------------------
  |  Branch (3597:6): [True: 0, False: 30]
  |  Branch (3597:42): [True: 0, False: 0]
  ------------------
 3598|      0|		persistent = false;
 3599|      0|	}
 3600|       |
 3601|     30|	if (name[0] == '\\') {
  ------------------
  |  Branch (3601:6): [True: 0, False: 30]
  ------------------
 3602|      0|		lcname = zend_string_alloc(name_len-1, persistent);
 3603|      0|		zend_str_tolower_copy(ZSTR_VAL(lcname), name+1, name_len-1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3604|     30|	} else {
 3605|     30|		lcname = zend_string_alloc(name_len, persistent);
 3606|     30|		zend_str_tolower_copy(ZSTR_VAL(lcname), name, name_len);
  ------------------
  |  |   67|     30|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3607|     30|	}
 3608|       |
 3609|     30|	zend_assert_valid_class_name(lcname, "a class alias");
 3610|       |
 3611|     30|	lcname = zend_new_interned_string(lcname);
 3612|       |
 3613|       |	/* We cannot increase the refcount of an internal class during request time.
 3614|       |	 * Instead of having to deal with differentiating between class types and lifetimes,
 3615|       |	 * we simply don't increase the refcount of a class entry for aliases.
 3616|       |	 */
 3617|     30|	ZVAL_ALIAS_PTR(&zv, ce);
  ------------------
  |  | 1266|     30|#define ZVAL_ALIAS_PTR(z, p) do {								\
  |  | 1267|     30|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     30|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     30|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1268|     30|		Z_TYPE_INFO_P(z) = IS_ALIAS_PTR;						\
  |  |  ------------------
  |  |  |  |  678|     30|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     30|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_ALIAS_PTR;						\
  |  |  ------------------
  |  |  |  |  631|     30|#define IS_ALIAS_PTR				14
  |  |  ------------------
  |  | 1269|     30|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1269:11): [Folded, False: 30]
  |  |  ------------------
  ------------------
 3618|       |
 3619|     30|	ret = zend_hash_add(CG(class_table), lcname, &zv);
  ------------------
  |  |   35|     30|# define CG(v) (compiler_globals.v)
  ------------------
 3620|     30|	zend_string_release_ex(lcname, 0);
 3621|     30|	if (ret) {
  ------------------
  |  Branch (3621:6): [True: 21, False: 9]
  ------------------
 3622|       |		// avoid notifying at MINIT time
 3623|     21|		if (ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (3623:7): [True: 17, False: 4]
  ------------------
 3624|     17|			zend_observer_class_linked_notify(ce, lcname);
 3625|     17|		}
 3626|     21|		return SUCCESS;
 3627|     21|	}
 3628|      9|	return FAILURE;
 3629|     30|}
zend_disable_functions:
 3648|      2|{
 3649|      2|	if (!function_list || !*function_list) {
  ------------------
  |  Branch (3649:6): [True: 0, False: 2]
  |  Branch (3649:24): [True: 0, False: 2]
  ------------------
 3650|      0|		return;
 3651|      0|	}
 3652|       |
 3653|      2|	const char *s = NULL, *e = function_list;
 3654|    668|	while (*e) {
  ------------------
  |  Branch (3654:9): [True: 666, False: 2]
  ------------------
 3655|    666|		switch (*e) {
 3656|      0|			case ' ':
  ------------------
  |  Branch (3656:4): [True: 0, False: 666]
  ------------------
 3657|     70|			case ',':
  ------------------
  |  Branch (3657:4): [True: 70, False: 596]
  ------------------
 3658|     70|				if (s) {
  ------------------
  |  Branch (3658:9): [True: 70, False: 0]
  ------------------
 3659|     70|					zend_disable_function(s, e - s);
 3660|     70|					s = NULL;
 3661|     70|				}
 3662|     70|				break;
 3663|    596|			default:
  ------------------
  |  Branch (3663:4): [True: 596, False: 70]
  ------------------
 3664|    596|				if (!s) {
  ------------------
  |  Branch (3664:9): [True: 72, False: 524]
  ------------------
 3665|     72|					s = e;
 3666|     72|				}
 3667|    596|				break;
 3668|    666|		}
 3669|    666|		e++;
 3670|    666|	}
 3671|      2|	if (s) {
  ------------------
  |  Branch (3671:6): [True: 2, False: 0]
  ------------------
 3672|      2|		zend_disable_function(s, e - s);
 3673|      2|	}
 3674|       |
 3675|       |	/* Rehash the function table after deleting functions. This ensures that all internal
 3676|       |	 * functions are contiguous, which means we don't need to perform full table cleanup
 3677|       |	 * on shutdown. */
 3678|      2|	zend_hash_rehash(CG(function_table));
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3679|      2|}
zend_release_fcall_info_cache:
 3784|  1.88k|ZEND_API void zend_release_fcall_info_cache(zend_fcall_info_cache *fcc) {
 3785|  1.88k|	if (fcc->function_handler &&
  ------------------
  |  Branch (3785:6): [True: 1.87k, False: 9]
  ------------------
 3786|  1.87k|		(fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  372|  1.87k|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (3786:3): [True: 28, False: 1.84k]
  ------------------
 3787|     28|		if (fcc->function_handler->common.function_name) {
  ------------------
  |  Branch (3787:7): [True: 28, False: 0]
  ------------------
 3788|     28|			zend_string_release_ex(fcc->function_handler->common.function_name, 0);
 3789|     28|		}
 3790|     28|		zend_free_trampoline(fcc->function_handler);
  ------------------
  |  |  344|     28|#define zend_free_trampoline(func) do { \
  |  |  345|     28|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|     28|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 22, False: 6]
  |  |  ------------------
  |  |  346|     22|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|     22|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|     22|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|     22|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|     22|		} else { \
  |  |  349|      6|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      6|		} \
  |  |  351|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 3791|       |		fcc->function_handler = NULL;
 3792|     28|	}
 3793|  1.88k|}
zend_get_callable_name_ex:
 4042|      9|{
 4043|      9|try_again:
 4044|      9|	switch (Z_TYPE_P(callable)) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 4045|      3|		case IS_STRING:
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (4045:3): [True: 3, False: 6]
  ------------------
 4046|      3|			if (object) {
  ------------------
  |  Branch (4046:8): [True: 0, False: 3]
  ------------------
 4047|      0|				return zend_create_member_string(object->ce->name, Z_STR_P(callable));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4048|      0|			}
 4049|      3|			return zend_string_copy(Z_STR_P(callable));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4050|       |
 4051|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (4051:3): [True: 0, False: 9]
  ------------------
 4052|      0|		{
 4053|      0|			const zval *method = NULL;
 4054|      0|			const zval *obj = NULL;
 4055|       |
 4056|      0|			if (zend_hash_num_elements(Z_ARRVAL_P(callable)) == 2) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4056:8): [True: 0, False: 0]
  ------------------
 4057|      0|				obj = zend_hash_index_find_deref(Z_ARRVAL_P(callable), 0);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4058|      0|				method = zend_hash_index_find_deref(Z_ARRVAL_P(callable), 1);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4059|      0|			}
 4060|       |
 4061|      0|			if (obj == NULL || method == NULL || Z_TYPE_P(method) != IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (obj == NULL || method == NULL || Z_TYPE_P(method) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (4061:8): [True: 0, False: 0]
  |  Branch (4061:23): [True: 0, False: 0]
  |  Branch (4061:41): [True: 0, False: 0]
  ------------------
 4062|      0|				return ZSTR_KNOWN(ZEND_STR_ARRAY_CAPITALIZED);
 4063|      0|			}
 4064|       |
 4065|      0|			if (Z_TYPE_P(obj) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(obj) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (4065:8): [True: 0, False: 0]
  ------------------
 4066|      0|				return zend_create_member_string(Z_STR_P(obj), Z_STR_P(method));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				return zend_create_member_string(Z_STR_P(obj), Z_STR_P(method));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4067|      0|			} else if (Z_TYPE_P(obj) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(obj) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (4067:15): [True: 0, False: 0]
  ------------------
 4068|      0|				return zend_create_member_string(Z_OBJCE_P(obj)->name, Z_STR_P(method));
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				return zend_create_member_string(Z_OBJCE_P(obj)->name, Z_STR_P(method));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4069|      0|			} else {
 4070|      0|				return ZSTR_KNOWN(ZEND_STR_ARRAY_CAPITALIZED);
 4071|      0|			}
 4072|      0|		}
 4073|      6|		case IS_OBJECT:
  ------------------
  |  |  614|      6|#define IS_OBJECT					8
  ------------------
  |  Branch (4073:3): [True: 6, False: 3]
  ------------------
 4074|      6|		{
 4075|      6|			const zend_class_entry *ce = Z_OBJCE_P(callable);
  ------------------
  |  | 1012|      6|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      6|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4076|       |
 4077|      6|			if (ce == zend_ce_closure) {
  ------------------
  |  Branch (4077:8): [True: 6, False: 0]
  ------------------
 4078|      6|				const zend_function *fn = zend_get_closure_method_def(Z_OBJ_P(callable));
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4079|       |
 4080|      6|				if ((fn->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) && fn->common.scope) {
  ------------------
  |  |  385|      6|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (4080:9): [True: 0, False: 6]
  |  Branch (4080:58): [True: 0, False: 0]
  ------------------
 4081|      0|					return zend_create_member_string(fn->common.scope->name, fn->common.function_name);
 4082|      0|				}
 4083|      6|				return zend_string_copy(fn->common.function_name);
 4084|      6|			}
 4085|       |
 4086|      0|			return zend_string_concat2(
 4087|      0|				ZSTR_VAL(ce->name), ZSTR_LEN(ce->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_LEN(ce->name),
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4088|      0|				"::__invoke", sizeof("::__invoke") - 1);
 4089|      6|		}
 4090|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (4090:3): [True: 0, False: 9]
  ------------------
 4091|      0|			callable = Z_REFVAL_P(callable);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4092|      0|			goto try_again;
 4093|      0|		default:
  ------------------
  |  Branch (4093:3): [True: 0, False: 9]
  ------------------
 4094|      0|			return zval_get_string_func(callable);
 4095|      9|	}
 4096|      9|}
zend_is_callable_at_frame:
 4108|  7.19k|{
 4109|  7.19k|	bool ret;
 4110|  7.19k|	zend_fcall_info_cache fcc_local;
 4111|  7.19k|	bool strict_class = false;
 4112|       |
 4113|  7.19k|	if (fcc == NULL) {
  ------------------
  |  Branch (4113:6): [True: 602, False: 6.59k]
  ------------------
 4114|    602|		fcc = &fcc_local;
 4115|    602|	}
 4116|  7.19k|	if (error) {
  ------------------
  |  Branch (4116:6): [True: 618, False: 6.57k]
  ------------------
 4117|    618|		*error = NULL;
 4118|    618|	}
 4119|       |
 4120|  7.19k|	fcc->calling_scope = NULL;
 4121|  7.19k|	fcc->called_scope = NULL;
 4122|  7.19k|	fcc->function_handler = NULL;
 4123|  7.19k|	fcc->object = NULL;
 4124|  7.19k|	fcc->closure = NULL;
 4125|       |
 4126|  7.19k|again:
 4127|  7.19k|	switch (Z_TYPE_P(callable)) {
  ------------------
  |  |  669|  7.19k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.19k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 4128|  6.42k|		case IS_STRING:
  ------------------
  |  |  612|  6.42k|#define IS_STRING					6
  ------------------
  |  Branch (4128:3): [True: 6.42k, False: 770]
  ------------------
 4129|  6.42k|			if (object) {
  ------------------
  |  Branch (4129:8): [True: 5.97k, False: 450]
  ------------------
 4130|  5.97k|				fcc->object = object;
 4131|  5.97k|				fcc->calling_scope = object->ce;
 4132|  5.97k|			}
 4133|       |
 4134|  6.42k|			if (check_flags & IS_CALLABLE_CHECK_SYNTAX_ONLY) {
  ------------------
  |  |  412|  6.42k|#define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0)
  ------------------
  |  Branch (4134:8): [True: 0, False: 6.42k]
  ------------------
 4135|      0|				fcc->called_scope = fcc->calling_scope;
 4136|      0|				return 1;
 4137|      0|			}
 4138|       |
 4139|  6.46k|check_func:
 4140|  6.46k|			ret = zend_is_callable_check_func(callable, frame, fcc, strict_class, error, check_flags & IS_CALLABLE_SUPPRESS_DEPRECATIONS);
  ------------------
  |  |  413|  6.46k|#define IS_CALLABLE_SUPPRESS_DEPRECATIONS (1<<1)
  ------------------
 4141|  6.46k|			if (fcc == &fcc_local) {
  ------------------
  |  Branch (4141:8): [True: 240, False: 6.22k]
  ------------------
 4142|    240|				zend_release_fcall_info_cache(fcc);
 4143|    240|			}
 4144|  6.46k|			return ret;
 4145|       |
 4146|     40|		case IS_ARRAY:
  ------------------
  |  |  613|     40|#define IS_ARRAY					7
  ------------------
  |  Branch (4146:3): [True: 40, False: 7.15k]
  ------------------
 4147|     40|			{
 4148|     40|				if (zend_hash_num_elements(Z_ARRVAL_P(callable)) != 2) {
  ------------------
  |  |  997|     40|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     40|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     40|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4148:9): [True: 0, False: 40]
  ------------------
 4149|      0|					if (error) *error = estrdup("array callback must have exactly two members");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4149:10): [True: 0, False: 0]
  ------------------
 4150|      0|					return 0;
 4151|      0|				}
 4152|       |
 4153|     40|				zval *obj = zend_hash_index_find(Z_ARRVAL_P(callable), 0);
  ------------------
  |  |  997|     40|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     40|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     40|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4154|     40|				zval *method = zend_hash_index_find(Z_ARRVAL_P(callable), 1);
  ------------------
  |  |  997|     40|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     40|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     40|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4155|     40|				if (!obj || !method) {
  ------------------
  |  Branch (4155:9): [True: 0, False: 40]
  |  Branch (4155:17): [True: 0, False: 40]
  ------------------
 4156|      0|					if (error) *error = estrdup("array callback has to contain indices 0 and 1");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4156:10): [True: 0, False: 0]
  ------------------
 4157|      0|					return 0;
 4158|      0|				}
 4159|       |
 4160|     40|				ZVAL_DEREF(obj);
  ------------------
  |  | 1474|     40|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     40|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
 4161|     40|				if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
  ------------------
  |  |  669|     40|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     40|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
  ------------------
  |  |  612|     80|#define IS_STRING					6
  ------------------
              				if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
  ------------------
  |  |  669|     32|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
  ------------------
  |  |  614|     32|#define IS_OBJECT					8
  ------------------
  |  Branch (4161:9): [True: 32, False: 8]
  |  Branch (4161:39): [True: 3, False: 29]
  ------------------
 4162|      3|					if (error) *error = estrdup("first array member is not a valid class name or object");
  ------------------
  |  |  163|      2|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4162:10): [True: 2, False: 1]
  ------------------
 4163|      3|					return 0;
 4164|      3|				}
 4165|       |
 4166|     37|				ZVAL_DEREF(method);
  ------------------
  |  | 1474|     37|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     37|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     37|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 37]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
 4167|     37|				if (Z_TYPE_P(method) != IS_STRING) {
  ------------------
  |  |  669|     37|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     37|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(method) != IS_STRING) {
  ------------------
  |  |  612|     37|#define IS_STRING					6
  ------------------
  |  Branch (4167:9): [True: 0, False: 37]
  ------------------
 4168|      0|					if (error) *error = estrdup("second array member is not a valid method");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4168:10): [True: 0, False: 0]
  ------------------
 4169|      0|					return 0;
 4170|      0|				}
 4171|       |
 4172|     37|				if (Z_TYPE_P(obj) == IS_STRING) {
  ------------------
  |  |  669|     37|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     37|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(obj) == IS_STRING) {
  ------------------
  |  |  612|     37|#define IS_STRING					6
  ------------------
  |  Branch (4172:9): [True: 8, False: 29]
  ------------------
 4173|      8|					if (check_flags & IS_CALLABLE_CHECK_SYNTAX_ONLY) {
  ------------------
  |  |  412|      8|#define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0)
  ------------------
  |  Branch (4173:10): [True: 0, False: 8]
  ------------------
 4174|      0|						return 1;
 4175|      0|					}
 4176|       |
 4177|      8|					if (!zend_is_callable_check_class(Z_STR_P(obj), get_scope(frame), frame, fcc, &strict_class, error, check_flags & IS_CALLABLE_SUPPRESS_DEPRECATIONS)) {
  ------------------
  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              					if (!zend_is_callable_check_class(Z_STR_P(obj), get_scope(frame), frame, fcc, &strict_class, error, check_flags & IS_CALLABLE_SUPPRESS_DEPRECATIONS)) {
  ------------------
  |  |  413|      8|#define IS_CALLABLE_SUPPRESS_DEPRECATIONS (1<<1)
  ------------------
  |  Branch (4177:10): [True: 0, False: 8]
  ------------------
 4178|      0|						return 0;
 4179|      0|					}
 4180|     29|				} else {
 4181|     29|					ZEND_ASSERT(Z_TYPE_P(obj) == IS_OBJECT);
  ------------------
  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4181:6): [True: 0, False: 29]
  |  Branch (4181:6): [True: 29, False: 0]
  ------------------
 4182|     29|					fcc->calling_scope = Z_OBJCE_P(obj); /* TBFixed: what if it's overloaded? */
  ------------------
  |  | 1012|     29|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     29|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     29|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4183|     29|					fcc->object = Z_OBJ_P(obj);
  ------------------
  |  | 1000|     29|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     29|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4184|       |
 4185|     29|					if (check_flags & IS_CALLABLE_CHECK_SYNTAX_ONLY) {
  ------------------
  |  |  412|     29|#define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0)
  ------------------
  |  Branch (4185:10): [True: 0, False: 29]
  ------------------
 4186|      0|						fcc->called_scope = fcc->calling_scope;
 4187|      0|						return 1;
 4188|      0|					}
 4189|     29|				}
 4190|       |
 4191|     37|				callable = method;
 4192|     37|				goto check_func;
 4193|     37|			}
 4194|      0|			return 0;
 4195|    726|		case IS_OBJECT:
  ------------------
  |  |  614|    726|#define IS_OBJECT					8
  ------------------
  |  Branch (4195:3): [True: 726, False: 6.46k]
  ------------------
 4196|    726|			if (Z_OBJ_HANDLER_P(callable, get_closure) && Z_OBJ_HANDLER_P(callable, get_closure)(Z_OBJ_P(callable), &fcc->calling_scope, &fcc->function_handler, &fcc->object, 1) == SUCCESS) {
  ------------------
  |  | 1006|    726|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|  1.45k|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|    726|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|    726|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1005:34): [True: 726, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HANDLER_P(callable, get_closure) && Z_OBJ_HANDLER_P(callable, get_closure)(Z_OBJ_P(callable), &fcc->calling_scope, &fcc->function_handler, &fcc->object, 1) == SUCCESS) {
  ------------------
  |  | 1006|    726|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|    726|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|    726|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|    726|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HANDLER_P(callable, get_closure) && Z_OBJ_HANDLER_P(callable, get_closure)(Z_OBJ_P(callable), &fcc->calling_scope, &fcc->function_handler, &fcc->object, 1) == SUCCESS) {
  ------------------
  |  | 1000|    726|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    726|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (4196:50): [True: 726, False: 0]
  ------------------
 4197|    726|				fcc->called_scope = fcc->calling_scope;
 4198|    726|				fcc->closure = Z_OBJ_P(callable);
  ------------------
  |  | 1000|    726|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    726|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4199|    726|				if (fcc == &fcc_local) {
  ------------------
  |  Branch (4199:9): [True: 359, False: 367]
  ------------------
 4200|    359|					zend_release_fcall_info_cache(fcc);
 4201|    359|				}
 4202|    726|				return 1;
 4203|    726|			}
 4204|      0|			if (error) *error = estrdup("no array or string given");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4204:8): [True: 0, False: 0]
  ------------------
 4205|      0|			return 0;
 4206|      1|		case IS_REFERENCE:
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (4206:3): [True: 1, False: 7.19k]
  ------------------
 4207|      1|			callable = Z_REFVAL_P(callable);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4208|      1|			goto again;
 4209|      3|		default:
  ------------------
  |  Branch (4209:3): [True: 3, False: 7.19k]
  ------------------
 4210|      3|			if (error) *error = estrdup("no array or string given");
  ------------------
  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4210:8): [True: 1, False: 2]
  ------------------
 4211|      3|			return 0;
 4212|  7.19k|	}
 4213|  7.19k|}
zend_is_callable_ex:
 4217|  7.19k|{
 4218|       |	/* Determine callability at the first parent user frame. */
 4219|  7.19k|	const zend_execute_data *frame = EG(current_execute_data);
  ------------------
  |  |   45|  7.19k|# define EG(v) (executor_globals.v)
  ------------------
 4220|  8.38k|	while (frame && (!frame->func || !ZEND_USER_CODE(frame->func->type))) {
  ------------------
  |  | 1081|  7.72k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (4220:9): [True: 7.72k, False: 664]
  |  Branch (4220:19): [True: 0, False: 7.72k]
  |  Branch (4220:35): [True: 1.19k, False: 6.52k]
  ------------------
 4221|  1.19k|		frame = frame->prev_execute_data;
 4222|  1.19k|	}
 4223|       |
 4224|  7.19k|	bool ret = zend_is_callable_at_frame(callable, object, frame, check_flags, fcc, error);
 4225|  7.19k|	if (callable_name) {
  ------------------
  |  Branch (4225:6): [True: 6, False: 7.18k]
  ------------------
 4226|      6|		*callable_name = zend_get_callable_name_ex(callable, object);
 4227|      6|	}
 4228|  7.19k|	return ret;
 4229|  7.19k|}
zend_is_callable:
 4232|    602|{
 4233|    602|	return zend_is_callable_ex(callable, NULL, check_flags, callable_name, NULL, NULL);
 4234|    602|}
zend_fcall_info_init:
 4238|    583|{
 4239|    583|	if (!zend_is_callable_ex(callable, NULL, check_flags, callable_name, fcc, error)) {
  ------------------
  |  Branch (4239:6): [True: 5, False: 578]
  ------------------
 4240|      5|		return FAILURE;
 4241|      5|	}
 4242|       |
 4243|    578|	fci->size = sizeof(*fci);
 4244|    578|	fci->object = fcc->object;
 4245|    578|	ZVAL_COPY_VALUE(&fci->function_name, callable);
  ------------------
  |  | 1416|    578|	do {												\
  |  | 1417|    578|		zval *_z1 = (z);								\
  |  | 1418|    578|		const zval *_z2 = (v);							\
  |  | 1419|    578|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    578|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    578|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    578|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    578|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    578|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    578|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    578|	do {												\
  |  |  |  | 1408|    578|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    578|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    578|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    578|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    578|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    578|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    578|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 578]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    578|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 578]
  |  |  ------------------
  ------------------
 4246|    578|	fci->retval = NULL;
 4247|    578|	fci->param_count = 0;
 4248|    578|	fci->params = NULL;
 4249|    578|	fci->named_params = NULL;
 4250|    578|	fci->consumed_args = 0;
 4251|       |
 4252|    578|	return SUCCESS;
 4253|    583|}
zend_declare_typed_property:
 4427|    835|{
 4428|    835|	zend_property_info *property_info, *property_info_ptr;
 4429|       |
 4430|    835|	if (ZEND_TYPE_IS_SET(type)) {
  ------------------
  |  |  152|    835|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    835|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 535, False: 300]
  |  |  ------------------
  ------------------
 4431|    535|		ce->ce_flags |= ZEND_ACC_HAS_TYPE_HINTS;
  ------------------
  |  |  244|    535|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
 4432|       |
 4433|    535|		if (access_type & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|    535|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (4433:7): [True: 241, False: 294]
  ------------------
 4434|    241|			ce->ce_flags |= ZEND_ACC_HAS_READONLY_PROPS;
  ------------------
  |  |  325|    241|#define ZEND_ACC_HAS_READONLY_PROPS      (1 << 21) /*  X  |     |     |     */
  ------------------
 4435|    241|		}
 4436|    535|	}
 4437|       |
 4438|    835|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (4438:6): [True: 148, False: 687]
  ------------------
 4439|    148|		property_info = pemalloc(sizeof(zend_property_info), 1);
  ------------------
  |  |  188|    148|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    148|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    148|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    148|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    148|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 148, Folded]
  |  |  ------------------
  ------------------
 4440|    687|	} else {
 4441|    687|		property_info = zend_arena_alloc(&CG(arena), sizeof(zend_property_info));
  ------------------
  |  |   35|    687|# define CG(v) (compiler_globals.v)
  ------------------
 4442|    687|		if (Z_TYPE_P(property) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|    687|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    687|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(property) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    687|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (4442:7): [True: 27, False: 660]
  ------------------
 4443|     27|			ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|     27|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 4444|     27|			if (access_type & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     27|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (4444:8): [True: 4, False: 23]
  ------------------
 4445|      4|				ce->ce_flags |= ZEND_ACC_HAS_AST_STATICS;
  ------------------
  |  |  335|      4|#define ZEND_ACC_HAS_AST_STATICS         (1 << 26) /*  X  |     |     |     */
  ------------------
 4446|     23|			} else {
 4447|     23|				ce->ce_flags |= ZEND_ACC_HAS_AST_PROPERTIES;
  ------------------
  |  |  334|     23|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
 4448|     23|			}
 4449|     27|		}
 4450|    687|	}
 4451|       |
 4452|    835|	if (Z_TYPE_P(property) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(property))) {
  ------------------
  |  |  669|    835|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    835|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(property) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(property))) {
  ------------------
  |  |  612|  1.67k|#define IS_STRING					6
  ------------------
              	if (Z_TYPE_P(property) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(property))) {
  ------------------
  |  |  982|     40|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     40|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (4452:6): [True: 40, False: 795]
  |  Branch (4452:41): [True: 21, False: 19]
  ------------------
 4453|     21|		zval_make_interned_string(property);
 4454|     21|	}
 4455|       |
 4456|    835|	if (!(access_type & ZEND_ACC_PPP_MASK)) {
  ------------------
  |  |  421|    835|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    835|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    835|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    835|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (4456:6): [True: 51, False: 784]
  ------------------
 4457|     51|		access_type |= ZEND_ACC_PUBLIC;
  ------------------
  |  |  219|     51|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 4458|     51|	}
 4459|       |	/* Add the protected(set) bit for public readonly properties with no set visibility. */
 4460|    835|	if ((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK)) == (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY)) {
  ------------------
  |  |  219|    835|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	if ((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK)) == (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY)) {
  ------------------
  |  |  237|    835|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	if ((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK)) == (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY)) {
  ------------------
  |  |  422|    835|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|    835|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|    835|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|    835|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
              	if ((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK)) == (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY)) {
  ------------------
  |  |  219|    835|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	if ((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK)) == (ZEND_ACC_PUBLIC|ZEND_ACC_READONLY)) {
  ------------------
  |  |  237|    835|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (4460:6): [True: 237, False: 598]
  ------------------
 4461|    237|		access_type |= ZEND_ACC_PROTECTED_SET;
  ------------------
  |  |  274|    237|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
 4462|    598|	} else if (UNEXPECTED(access_type & ZEND_ACC_PPP_SET_MASK)) {
  ------------------
  |  |  457|    598|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 19, False: 579]
  |  |  ------------------
  ------------------
 4463|     19|		if (!ZEND_TYPE_IS_SET(type)) {
  ------------------
  |  |  152|     19|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     19|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (4463:7): [True: 2, False: 17]
  ------------------
 4464|      2|			zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
              			zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (4464:24): [True: 0, False: 2]
  ------------------
 4465|      2|				"Property with asymmetric visibility %s::$%s must have type",
 4466|      2|				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4467|      2|		}
 4468|     17|		uint32_t get_visibility = zend_visibility_to_set_visibility(access_type & ZEND_ACC_PPP_MASK);
  ------------------
  |  |  421|     17|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|     17|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|     17|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|     17|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
 4469|     17|		uint32_t set_visibility = access_type & ZEND_ACC_PPP_SET_MASK;
  ------------------
  |  |  422|     17|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|     17|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|     17|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|     17|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
 4470|     17|		if (get_visibility > set_visibility) {
  ------------------
  |  Branch (4470:7): [True: 3, False: 14]
  ------------------
 4471|      3|			zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
              			zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (4471:24): [True: 0, False: 3]
  ------------------
 4472|      3|				"Visibility of property %s::$%s must not be weaker than set visibility",
 4473|      3|				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4474|      3|		}
 4475|       |		/* Remove equivalent set visibility. */
 4476|     14|		if (((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET)) == (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET))
  ------------------
  |  |  219|     14|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              		if (((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET)) == (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET))
  ------------------
  |  |  273|     14|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
              		if (((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET)) == (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET))
  ------------------
  |  |  219|     14|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              		if (((access_type & (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET)) == (ZEND_ACC_PUBLIC|ZEND_ACC_PUBLIC_SET))
  ------------------
  |  |  273|     14|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
  |  Branch (4476:7): [True: 1, False: 13]
  ------------------
 4477|     13|		 || ((access_type & (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET)) == (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET))
  ------------------
  |  |  220|     13|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              		 || ((access_type & (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET)) == (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET))
  ------------------
  |  |  274|     13|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
              		 || ((access_type & (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET)) == (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET))
  ------------------
  |  |  220|     13|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              		 || ((access_type & (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET)) == (ZEND_ACC_PROTECTED|ZEND_ACC_PROTECTED_SET))
  ------------------
  |  |  274|     13|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  |  Branch (4477:7): [True: 1, False: 12]
  ------------------
 4478|     12|		 || ((access_type & (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET)) == (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET))) {
  ------------------
  |  |  221|     12|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		 || ((access_type & (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET)) == (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET))) {
  ------------------
  |  |  275|     12|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
              		 || ((access_type & (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET)) == (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET))) {
  ------------------
  |  |  221|     12|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		 || ((access_type & (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET)) == (ZEND_ACC_PRIVATE|ZEND_ACC_PRIVATE_SET))) {
  ------------------
  |  |  275|     12|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  |  Branch (4478:7): [True: 1, False: 11]
  ------------------
 4479|      3|			access_type &= ~ZEND_ACC_PPP_SET_MASK;
  ------------------
  |  |  422|      3|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      3|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      3|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      3|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
 4480|      3|		}
 4481|       |		/* private(set) properties are implicitly final. */
 4482|     14|		if (access_type & ZEND_ACC_PRIVATE_SET) {
  ------------------
  |  |  275|     14|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  |  Branch (4482:7): [True: 7, False: 7]
  ------------------
 4483|      7|			access_type |= ZEND_ACC_FINAL;
  ------------------
  |  |  230|      7|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
 4484|      7|		}
 4485|     14|	}
 4486|       |
 4487|       |	/* Virtual properties have no backing storage, the offset should never be used. However, the
 4488|       |	 * virtual flag cannot be definitively determined at compile time. Allow using default values
 4489|       |	 * anyway, and assert after inheritance that the property is not actually virtual. */
 4490|    830|	if (access_type & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|    830|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (4490:6): [True: 124, False: 706]
  ------------------
 4491|    124|		if (Z_TYPE_P(property) == IS_UNDEF) {
  ------------------
  |  |  669|    124|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    124|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(property) == IS_UNDEF) {
  ------------------
  |  |  606|    124|#define IS_UNDEF					0
  ------------------
  |  Branch (4491:7): [True: 116, False: 8]
  ------------------
 4492|    116|			property_info->offset = (uint32_t)-1;
 4493|    116|			goto skip_property_storage;
 4494|    116|		}
 4495|    124|	}
 4496|    714|	if (access_type & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|    714|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (4496:6): [True: 76, False: 638]
  ------------------
 4497|     76|		if ((property_info_ptr = zend_hash_find_ptr(&ce->properties_info, name)) != NULL) {
  ------------------
  |  Branch (4497:7): [True: 0, False: 76]
  ------------------
 4498|      0|			ZEND_ASSERT(property_info_ptr->flags & ZEND_ACC_STATIC);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4498:4): [True: 0, False: 0]
  |  Branch (4498:4): [True: 0, False: 0]
  ------------------
 4499|      0|			property_info->offset = property_info_ptr->offset;
 4500|      0|			zval_ptr_dtor(&ce->default_static_members_table[property_info->offset]);
 4501|      0|			if (property_info_ptr->doc_comment && property_info_ptr->ce == ce) {
  ------------------
  |  Branch (4501:8): [True: 0, False: 0]
  |  Branch (4501:42): [True: 0, False: 0]
  ------------------
 4502|      0|				zend_string_release(property_info_ptr->doc_comment);
 4503|      0|			}
 4504|      0|			zend_hash_del(&ce->properties_info, name);
 4505|     76|		} else {
 4506|     76|			property_info->offset = ce->default_static_members_count++;
 4507|     76|			ce->default_static_members_table = perealloc(ce->default_static_members_table, sizeof(zval) * ce->default_static_members_count, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  200|     76|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     76|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     76|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     76|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     76|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     76|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 76]
  |  |  ------------------
  ------------------
 4508|     76|		}
 4509|     76|		ZVAL_COPY_VALUE(&ce->default_static_members_table[property_info->offset], property);
  ------------------
  |  | 1416|     76|	do {												\
  |  | 1417|     76|		zval *_z1 = (z);								\
  |  | 1418|     76|		const zval *_z2 = (v);							\
  |  | 1419|     76|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     76|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     76|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     76|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     76|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     76|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     76|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     76|	do {												\
  |  |  |  | 1408|     76|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     76|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     76|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     76|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     76|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     76|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     76|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 76]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     76|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 76]
  |  |  ------------------
  ------------------
 4510|     76|		if (!ZEND_MAP_PTR(ce->static_members_table)) {
  ------------------
  |  |   31|     76|	ptr ## __ptr
  ------------------
  |  Branch (4510:7): [True: 76, False: 0]
  ------------------
 4511|     76|			if (ce->type == ZEND_INTERNAL_CLASS &&
  ------------------
  |  Branch (4511:8): [True: 0, False: 76]
  ------------------
 4512|      0|					ce->info.internal.module->type == MODULE_PERSISTENT) {
  ------------------
  |  |   63|      0|#define MODULE_PERSISTENT 1
  ------------------
  |  Branch (4512:6): [True: 0, False: 0]
  ------------------
 4513|      0|				ZEND_MAP_PTR_NEW(ce->static_members_table);
  ------------------
  |  |   41|      0|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|      0|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   43|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4514|      0|			}
 4515|     76|		}
 4516|    638|	} else {
 4517|    638|		zval *property_default_ptr;
 4518|    638|		if ((property_info_ptr = zend_hash_find_ptr(&ce->properties_info, name)) != NULL) {
  ------------------
  |  Branch (4518:7): [True: 0, False: 638]
  ------------------
 4519|      0|			ZEND_ASSERT(!(property_info_ptr->flags & ZEND_ACC_STATIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4519:4): [True: 0, False: 0]
  |  Branch (4519:4): [True: 0, False: 0]
  ------------------
 4520|      0|			property_info->offset = property_info_ptr->offset;
 4521|      0|			zval_ptr_dtor(&ce->default_properties_table[OBJ_PROP_TO_NUM(property_info->offset)]);
  ------------------
  |  |  486|      0|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      0|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 4522|      0|			if (property_info_ptr->doc_comment && property_info_ptr->ce == ce) {
  ------------------
  |  Branch (4522:8): [True: 0, False: 0]
  |  Branch (4522:42): [True: 0, False: 0]
  ------------------
 4523|      0|				zend_string_release_ex(property_info_ptr->doc_comment, 1);
 4524|      0|			}
 4525|      0|			zend_hash_del(&ce->properties_info, name);
 4526|       |
 4527|      0|			ZEND_ASSERT(ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4527:4): [True: 0, False: 0]
  |  Branch (4527:4): [True: 0, False: 0]
  ------------------
 4528|      0|			ZEND_ASSERT(ce->properties_info_table != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4528:4): [True: 0, False: 0]
  |  Branch (4528:4): [True: 0, False: 0]
  ------------------
 4529|      0|			ce->properties_info_table[OBJ_PROP_TO_NUM(property_info->offset)] = property_info;
  ------------------
  |  |  486|      0|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      0|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 4530|    638|		} else {
 4531|    638|			property_info->offset = OBJ_PROP_TO_OFFSET(ce->default_properties_count);
  ------------------
  |  |  484|    638|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  ------------------
 4532|    638|			ce->default_properties_count++;
 4533|    638|			ce->default_properties_table = perealloc(ce->default_properties_table, sizeof(zval) * ce->default_properties_count, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  200|    638|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|    134|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    134|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|    134|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    134|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|    504|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    504|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    504|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    504|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    504|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 134, False: 504]
  |  |  ------------------
  ------------------
 4534|       |
 4535|       |			/* For user classes this is handled during linking */
 4536|    638|			if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (4536:8): [True: 134, False: 504]
  ------------------
 4537|    134|				ce->properties_info_table = perealloc(ce->properties_info_table, sizeof(zend_property_info *) * ce->default_properties_count, 1);
  ------------------
  |  |  200|    134|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|    134|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    134|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|    134|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    134|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 134, Folded]
  |  |  ------------------
  ------------------
 4538|    134|				ce->properties_info_table[ce->default_properties_count - 1] = property_info;
 4539|    134|			}
 4540|    638|		}
 4541|    638|		property_default_ptr = &ce->default_properties_table[OBJ_PROP_TO_NUM(property_info->offset)];
  ------------------
  |  |  486|    638|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|    638|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 4542|    638|		ZVAL_COPY_VALUE(property_default_ptr, property);
  ------------------
  |  | 1416|    638|	do {												\
  |  | 1417|    638|		zval *_z1 = (z);								\
  |  | 1418|    638|		const zval *_z2 = (v);							\
  |  | 1419|    638|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    638|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    638|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    638|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    638|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    638|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    638|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    638|	do {												\
  |  |  |  | 1408|    638|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    638|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    638|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    638|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    638|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    638|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    638|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 638]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    638|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 638]
  |  |  ------------------
  ------------------
 4543|    638|		Z_PROP_FLAG_P(property_default_ptr) = Z_ISUNDEF_P(property) ? IS_PROP_UNINIT : 0;
  ------------------
  |  | 1580|    638|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|    638|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    638|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_PROP_FLAG_P(property_default_ptr) = Z_ISUNDEF_P(property) ? IS_PROP_UNINIT : 0;
  ------------------
  |  |  967|    638|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|    638|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    638|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|    638|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 422, False: 216]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_PROP_FLAG_P(property_default_ptr) = Z_ISUNDEF_P(property) ? IS_PROP_UNINIT : 0;
  ------------------
  |  | 1577|    422|#define IS_PROP_UNINIT (1<<0)
  ------------------
 4544|    638|	}
 4545|    830|skip_property_storage:
 4546|    830|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (4546:6): [True: 148, False: 682]
  ------------------
 4547|       |		/* Must be interned to avoid ZTS data races */
 4548|    148|		if (is_persistent_class(ce)) {
  ------------------
  |  Branch (4548:7): [True: 148, False: 0]
  ------------------
 4549|    148|			name = zend_new_interned_string(zend_string_copy(name));
 4550|    148|		}
 4551|       |
 4552|    148|		if (Z_REFCOUNTED_P(property)) {
  ------------------
  |  |  942|    148|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|    148|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    148|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 148]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4553|      0|			zend_error_noreturn(E_CORE_ERROR, "Internal zvals cannot be refcounted");
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 4554|      0|		}
 4555|    148|	}
 4556|       |
 4557|    830|	if (access_type & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|    830|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4557:6): [True: 729, False: 101]
  ------------------
 4558|    729|		property_info->name = zend_string_copy(name);
 4559|    729|	} else if (access_type & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|    101|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4559:13): [True: 55, False: 46]
  ------------------
 4560|     55|		property_info->name = zend_mangle_property_name(ZSTR_VAL(ce->name), ZSTR_LEN(ce->name), ZSTR_VAL(name), ZSTR_LEN(name), is_persistent_class(ce));
  ------------------
  |  |   67|     55|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		property_info->name = zend_mangle_property_name(ZSTR_VAL(ce->name), ZSTR_LEN(ce->name), ZSTR_VAL(name), ZSTR_LEN(name), is_persistent_class(ce));
  ------------------
  |  |   68|     55|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		property_info->name = zend_mangle_property_name(ZSTR_VAL(ce->name), ZSTR_LEN(ce->name), ZSTR_VAL(name), ZSTR_LEN(name), is_persistent_class(ce));
  ------------------
  |  |   67|     55|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		property_info->name = zend_mangle_property_name(ZSTR_VAL(ce->name), ZSTR_LEN(ce->name), ZSTR_VAL(name), ZSTR_LEN(name), is_persistent_class(ce));
  ------------------
  |  |   68|     55|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4561|     55|	} else {
 4562|     46|		ZEND_ASSERT(access_type & ZEND_ACC_PROTECTED);
  ------------------
  |  |  112|     46|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4562:3): [True: 0, False: 46]
  |  Branch (4562:3): [True: 46, False: 0]
  ------------------
 4563|     46|		property_info->name = zend_mangle_property_name("*", 1, ZSTR_VAL(name), ZSTR_LEN(name), is_persistent_class(ce));
  ------------------
  |  |   67|     46|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		property_info->name = zend_mangle_property_name("*", 1, ZSTR_VAL(name), ZSTR_LEN(name), is_persistent_class(ce));
  ------------------
  |  |   68|     46|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4564|     46|	}
 4565|       |
 4566|    830|	property_info->name = zend_new_interned_string(property_info->name);
 4567|    830|	property_info->flags = access_type;
 4568|    830|	property_info->doc_comment = doc_comment;
 4569|    830|	property_info->attributes = NULL;
 4570|    830|	property_info->prototype = property_info;
 4571|    830|	property_info->hooks = NULL;
 4572|    830|	property_info->ce = ce;
 4573|    830|	property_info->type = type;
 4574|       |
 4575|    830|	if (is_persistent_class(ce)) {
  ------------------
  |  Branch (4575:6): [True: 148, False: 682]
  ------------------
 4576|    148|		zend_normalize_internal_type(&property_info->type);
 4577|    148|	}
 4578|       |
 4579|    830|	zend_hash_update_ptr(&ce->properties_info, name, property_info);
 4580|       |
 4581|    830|	return property_info;
 4582|    830|}
zend_declare_typed_class_constant:
 4780|    795|{
 4781|    795|	zend_class_constant *c;
 4782|       |
 4783|    795|	if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|    795|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (4783:6): [True: 50, False: 745]
  ------------------
 4784|     50|		if (!(flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|     50|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4784:7): [True: 0, False: 50]
  ------------------
 4785|      0|			zend_error_noreturn(E_COMPILE_ERROR, "Access type for interface constant %s::%s must be public", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Access type for interface constant %s::%s must be public", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Access type for interface constant %s::%s must be public", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4786|      0|		}
 4787|     50|	}
 4788|       |
 4789|    795|	if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_CLASS))) {
  ------------------
  |  |  401|    795|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    795|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  1.59k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 16, False: 779]
  |  |  |  Branch (401:35): [True: 1, False: 15]
  |  |  ------------------
  ------------------
 4790|      1|		zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
              		zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (4790:23): [True: 0, False: 1]
  ------------------
 4791|      1|				"A class constant must not be called 'class'; it is reserved for class name fetching");
 4792|      1|	}
 4793|       |
 4794|    794|	if (Z_TYPE_P(value) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(value))) {
  ------------------
  |  |  669|    794|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    794|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(value))) {
  ------------------
  |  |  612|  1.58k|#define IS_STRING					6
  ------------------
              	if (Z_TYPE_P(value) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(value))) {
  ------------------
  |  |  982|     59|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     59|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (4794:6): [True: 59, False: 735]
  |  Branch (4794:38): [True: 51, False: 8]
  ------------------
 4795|     51|		zval_make_interned_string(value);
 4796|     51|	}
 4797|       |
 4798|    794|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (4798:6): [True: 536, False: 258]
  ------------------
 4799|    536|		c = pemalloc(sizeof(zend_class_constant), 1);
  ------------------
  |  |  188|    536|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    536|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    536|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    536|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    536|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 536, Folded]
  |  |  ------------------
  ------------------
 4800|    536|		if (ZEND_TYPE_PURE_MASK(type) != MAY_BE_ANY) {
  ------------------
  |  |  264|    536|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    536|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              		if (ZEND_TYPE_PURE_MASK(type) != MAY_BE_ANY) {
  ------------------
  |  |   34|    536|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    536|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    536|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    536|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    536|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    536|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    536|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    536|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    536|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    536|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    536|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    536|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    536|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    536|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    536|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    536|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    536|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    536|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    536|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4800:7): [True: 536, False: 0]
  ------------------
 4801|    536|			ZEND_ASSERT(!ZEND_TYPE_CONTAINS_CODE(type, IS_RESOURCE) && "resource is not allowed in a zend_type");
  ------------------
  |  |  112|    536|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4801:4): [True: 0, False: 536]
  |  Branch (4801:4): [True: 0, False: 0]
  |  Branch (4801:4): [True: 536, False: 0]
  |  Branch (4801:4): [True: 536, False: 0]
  ------------------
 4802|    536|		}
 4803|    536|	} else {
 4804|    258|		c = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant));
  ------------------
  |  |   35|    258|# define CG(v) (compiler_globals.v)
  ------------------
 4805|    258|	}
 4806|    794|	ZVAL_COPY_VALUE(&c->value, value);
  ------------------
  |  | 1416|    794|	do {												\
  |  | 1417|    794|		zval *_z1 = (z);								\
  |  | 1418|    794|		const zval *_z2 = (v);							\
  |  | 1419|    794|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    794|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    794|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    794|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    794|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    794|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    794|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    794|	do {												\
  |  |  |  | 1408|    794|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    794|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    794|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    794|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    794|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    794|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    794|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 794]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    794|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 794]
  |  |  ------------------
  ------------------
 4807|    794|	ZEND_CLASS_CONST_FLAGS(c) = flags;
  ------------------
  |  |  498|    794|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    794|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
 4808|    794|	c->doc_comment = doc_comment;
 4809|    794|	c->attributes = NULL;
 4810|    794|	c->ce = ce;
 4811|    794|	c->type = type;
 4812|       |
 4813|    794|	if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|    794|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    794|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    794|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (4813:6): [True: 445, False: 349]
  ------------------
 4814|    445|		ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|    445|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 4815|    445|		ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
  ------------------
  |  |  333|    445|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
 4816|    445|		if (ce->type == ZEND_INTERNAL_CLASS && !ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|    288|	ptr ## __ptr
  ------------------
  |  Branch (4816:7): [True: 288, False: 157]
  |  Branch (4816:42): [True: 24, False: 264]
  ------------------
 4817|     24|			ZEND_MAP_PTR_NEW(ce->mutable_data);
  ------------------
  |  |   41|     24|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|     24|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|     24|	ptr ## __ptr
  |  |  ------------------
  |  |   43|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
 4818|     24|		}
 4819|    445|	}
 4820|       |
 4821|    794|	if (!zend_hash_add_ptr(&ce->constants_table, name, c)) {
  ------------------
  |  Branch (4821:6): [True: 0, False: 794]
  ------------------
 4822|      0|		zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
              		zend_error_noreturn(ce->type == ZEND_INTERNAL_CLASS ? E_CORE_ERROR : E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (4822:23): [True: 0, False: 0]
  ------------------
 4823|      0|			"Cannot redefine class constant %s::%s", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			"Cannot redefine class constant %s::%s", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4824|      0|	}
 4825|       |
 4826|    794|	return c;
 4827|    794|}
zend_declare_class_constant_ex:
 4830|    410|{
 4831|       |	return zend_declare_typed_class_constant(ce, name, value, flags, doc_comment, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|    410|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 4832|    410|}
zend_update_property_ex:
 4900|  27.1k|{
 4901|  27.1k|	const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|  27.1k|# define EG(v) (executor_globals.v)
  ------------------
 4902|       |
 4903|  27.1k|	EG(fake_scope) = scope;
  ------------------
  |  |   45|  27.1k|# define EG(v) (executor_globals.v)
  ------------------
 4904|       |
 4905|  27.1k|	object->handlers->write_property(object, name, value, NULL);
 4906|       |
 4907|  27.1k|	EG(fake_scope) = old_scope;
  ------------------
  |  |   45|  27.1k|# define EG(v) (executor_globals.v)
  ------------------
 4908|  27.1k|}
zend_update_property:
 4912|      5|{
 4913|      5|	zend_string *property;
 4914|      5|	const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 4915|       |
 4916|      5|	EG(fake_scope) = scope;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 4917|       |
 4918|      5|	property = zend_string_init(name, name_length, 0);
 4919|      5|	object->handlers->write_property(object, property, value, NULL);
 4920|      5|	zend_string_release_ex(property, 0);
 4921|       |
 4922|      5|	EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 4923|      5|}
zend_update_property_null:
 4927|      1|{
 4928|      1|	zval tmp;
 4929|       |
 4930|      1|	ZVAL_NULL(&tmp);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4931|      1|	zend_update_property(scope, object, name, name_length, &tmp);
 4932|      1|}
zend_read_property_ex:
 5108|   165k|{
 5109|   165k|	zval *value;
 5110|   165k|	const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|   165k|# define EG(v) (executor_globals.v)
  ------------------
 5111|       |
 5112|   165k|	EG(fake_scope) = scope;
  ------------------
  |  |   45|   165k|# define EG(v) (executor_globals.v)
  ------------------
 5113|       |
 5114|   165k|	value = object->handlers->read_property(object, name, silent?BP_VAR_IS:BP_VAR_R, NULL, rv);
  ------------------
  |  | 1077|   159k|#define BP_VAR_IS			3
  ------------------
              	value = object->handlers->read_property(object, name, silent?BP_VAR_IS:BP_VAR_R, NULL, rv);
  ------------------
  |  | 1074|  5.68k|#define BP_VAR_R			0
  ------------------
  |  Branch (5114:56): [True: 159k, False: 5.68k]
  ------------------
 5115|       |
 5116|   165k|	EG(fake_scope) = old_scope;
  ------------------
  |  |   45|   165k|# define EG(v) (executor_globals.v)
  ------------------
 5117|   165k|	return value;
 5118|   165k|}
zend_get_object_type_case:
 5181|     48|{
 5182|     48|	if (ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     48|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (5182:6): [True: 1, False: 47]
  ------------------
 5183|      1|		return upper_case ? "Trait" : "trait";
  ------------------
  |  Branch (5183:10): [True: 0, False: 1]
  ------------------
 5184|     47|	} else if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|     47|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (5184:13): [True: 10, False: 37]
  ------------------
 5185|     10|		return upper_case ? "Interface" : "interface";
  ------------------
  |  Branch (5185:10): [True: 3, False: 7]
  ------------------
 5186|     37|	} else if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|     37|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (5186:13): [True: 9, False: 28]
  ------------------
 5187|      9|		return upper_case ? "Enum" : "enum";
  ------------------
  |  Branch (5187:10): [True: 8, False: 1]
  ------------------
 5188|     28|	} else {
 5189|     28|		return upper_case ? "Class" : "class";
  ------------------
  |  Branch (5189:10): [True: 18, False: 10]
  ------------------
 5190|     28|	}
 5191|     48|}
zend_is_iterable:
 5195|      3|{
 5196|      3|	switch (Z_TYPE_P(iterable)) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 5197|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (5197:3): [True: 0, False: 3]
  ------------------
 5198|      0|			return 1;
 5199|      2|		case IS_OBJECT:
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (5199:3): [True: 2, False: 1]
  ------------------
 5200|      2|			return zend_class_implements_interface(Z_OBJCE_P(iterable), zend_ce_traversable);
  ------------------
  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5201|      1|		default:
  ------------------
  |  Branch (5201:3): [True: 1, False: 2]
  ------------------
 5202|      1|			return 0;
 5203|      3|	}
 5204|      3|}
zend_get_default_from_internal_arg_info:
 5274|     16|{
 5275|     16|	const zend_string *default_value = arg_info->default_value;
 5276|     16|	if (!default_value) {
  ------------------
  |  Branch (5276:6): [True: 0, False: 16]
  ------------------
 5277|      0|		return FAILURE;
 5278|      0|	}
 5279|       |
 5280|       |	/* Avoid going through the full AST machinery for some simple and common cases. */
 5281|     16|	zend_ulong lval;
 5282|     16|	if (zend_string_equals_literal(default_value, "null")) {
  ------------------
  |  |  407|     16|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 15, False: 1]
  |  |  ------------------
  ------------------
 5283|     15|		ZVAL_NULL(default_value_zval);
  ------------------
  |  | 1059|     15|#define ZVAL_NULL(z) do {				\
  |  | 1060|     15|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     15|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 5284|     15|		return SUCCESS;
 5285|     15|	} else if (zend_string_equals_literal(default_value, "true")) {
  ------------------
  |  |  407|      1|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 5286|      0|		ZVAL_TRUE(default_value_zval);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5287|      0|		return SUCCESS;
 5288|      1|	} else if (zend_string_equals_literal(default_value, "false")) {
  ------------------
  |  |  407|      1|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 5289|      0|		ZVAL_FALSE(default_value_zval);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5290|      0|		return SUCCESS;
 5291|      1|	} else if (ZSTR_LEN(default_value) >= 2
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (5291:13): [True: 1, False: 0]
  ------------------
 5292|      1|			&& (ZSTR_VAL(default_value)[0] == '\'' || ZSTR_VAL(default_value)[0] == '"')
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			&& (ZSTR_VAL(default_value)[0] == '\'' || ZSTR_VAL(default_value)[0] == '"')
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (5292:8): [True: 0, False: 1]
  |  Branch (5292:46): [True: 0, False: 1]
  ------------------
 5293|      0|			&& ZSTR_VAL(default_value)[ZSTR_LEN(default_value) - 1] == ZSTR_VAL(default_value)[0]) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			&& ZSTR_VAL(default_value)[ZSTR_LEN(default_value) - 1] == ZSTR_VAL(default_value)[0]) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			&& ZSTR_VAL(default_value)[ZSTR_LEN(default_value) - 1] == ZSTR_VAL(default_value)[0]) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (5293:7): [True: 0, False: 0]
  ------------------
 5294|      0|		zend_string *str = try_parse_string(
 5295|      0|			ZSTR_VAL(default_value) + 1, ZSTR_LEN(default_value) - 2, ZSTR_VAL(default_value)[0]);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(default_value) + 1, ZSTR_LEN(default_value) - 2, ZSTR_VAL(default_value)[0]);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			ZSTR_VAL(default_value) + 1, ZSTR_LEN(default_value) - 2, ZSTR_VAL(default_value)[0]);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5296|      0|		if (str) {
  ------------------
  |  Branch (5296:7): [True: 0, False: 0]
  ------------------
 5297|      0|			ZVAL_STR(default_value_zval, str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5298|      0|			return SUCCESS;
 5299|      0|		}
 5300|      1|	} else if (zend_string_equals_literal(default_value, "[]")) {
  ------------------
  |  |  407|      1|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 5301|      0|		ZVAL_EMPTY_ARRAY(default_value_zval);
  ------------------
  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      0|		zval *__z = (z);								\
  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5302|      0|		return SUCCESS;
 5303|      1|	} else if (ZEND_HANDLE_NUMERIC(default_value, lval)) {
  ------------------
  |  |  424|      1|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      1|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5304|      0|		ZVAL_LONG(default_value_zval, lval);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5305|      0|		return SUCCESS;
 5306|      0|	}
 5307|       |
 5308|       |#if 0
 5309|       |	fprintf(stderr, "Evaluating %s via AST\n", ZSTR_VAL(default_value));
 5310|       |#endif
 5311|      1|	return get_default_via_ast(default_value_zval, ZSTR_VAL(default_value));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5312|     16|}
zend_API.c:zend_null_arg_deprecated:
  483|    467|static ZEND_COLD bool zend_null_arg_deprecated(const char *fallback_type, uint32_t arg_num) {
  484|    467|	const zend_function *func = zend_active_function();
  485|    467|	ZEND_ASSERT(arg_num > 0);
  ------------------
  |  |  112|    467|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (485:2): [True: 0, False: 467]
  |  Branch (485:2): [True: 467, False: 0]
  ------------------
  486|    467|	uint32_t arg_offset = arg_num - 1;
  487|    467|	if (arg_offset >= func->common.num_args) {
  ------------------
  |  Branch (487:6): [True: 0, False: 467]
  ------------------
  488|      0|		ZEND_ASSERT(func->common.fn_flags & ZEND_ACC_VARIADIC);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (488:3): [True: 0, False: 0]
  |  Branch (488:3): [True: 0, False: 0]
  ------------------
  489|      0|		arg_offset = func->common.num_args;
  490|      0|	}
  491|       |
  492|    467|	const zend_arg_info *arg_info = &func->common.arg_info[arg_offset];
  493|    467|	zend_string *func_name = get_active_function_or_method_name();
  494|    467|	const char *arg_name = get_active_function_arg_name(arg_num);
  495|       |
  496|       |	/* If no type is specified in arginfo, use the specified fallback_type determined through
  497|       |	 * zend_parse_parameters instead. */
  498|    467|	zend_string *type_str = zend_type_to_string(arg_info->type);
  499|    467|	const char *type = type_str ? ZSTR_VAL(type_str) : fallback_type;
  ------------------
  |  |   67|    467|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (499:21): [True: 467, False: 0]
  ------------------
  500|    467|	zend_error(E_DEPRECATED,
  ------------------
  |  |   36|    467|#define E_DEPRECATED		(1<<13L)
  ------------------
  501|    467|		"%s(): Passing null to parameter #%" PRIu32 "%s%s%s of type %s is deprecated",
  502|    467|		ZSTR_VAL(func_name), arg_num,
  ------------------
  |  |   67|    467|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  503|    467|		arg_name ? " ($" : "", arg_name ? arg_name : "", arg_name ? ")" : "",
  ------------------
  |  Branch (503:3): [True: 467, False: 0]
  |  Branch (503:26): [True: 467, False: 0]
  |  Branch (503:52): [True: 467, False: 0]
  ------------------
  504|    467|		type);
  505|    467|	zend_string_release(func_name);
  506|    467|	if (type_str) {
  ------------------
  |  Branch (506:6): [True: 467, False: 0]
  ------------------
  507|    467|		zend_string_release(type_str);
  508|    467|	}
  509|    467|	return !EG(exception);
  ------------------
  |  |   45|    467|# define EG(v) (executor_globals.v)
  ------------------
  510|    467|}
zend_API.c:zend_parse_arg:
 1072|    242|{
 1073|    242|	const char *expected_type = NULL;
 1074|    242|	char *error = NULL;
 1075|       |
 1076|    242|	expected_type = zend_parse_arg_impl(arg, va, spec, &error, arg_num);
 1077|    242|	if (expected_type) {
  ------------------
  |  Branch (1077:6): [True: 8, False: 234]
  ------------------
 1078|      8|		if (EG(exception)) {
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 1079|      0|			return FAILURE;
 1080|      0|		}
 1081|      8|		if (!(flags & ZEND_PARSE_PARAMS_QUIET) && (*expected_type || error)) {
  ------------------
  |  |  366|      8|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  ------------------
  |  Branch (1081:7): [True: 8, False: 0]
  |  Branch (1081:46): [True: 7, False: 1]
  |  Branch (1081:64): [True: 1, False: 0]
  ------------------
 1082|      8|			if (error) {
  ------------------
  |  Branch (1082:8): [True: 1, False: 7]
  ------------------
 1083|      1|				if (strcmp(error, "must not contain any null bytes") == 0) {
  ------------------
  |  Branch (1083:9): [True: 0, False: 1]
  ------------------
 1084|      0|					zend_argument_value_error(arg_num, "%s", error);
 1085|      1|				} else {
 1086|      1|					zend_argument_type_error(arg_num, "%s", error);
 1087|      1|				}
 1088|      1|				efree(error);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|      7|			} else {
 1090|      7|				zend_argument_type_error(arg_num, "must be of type %s, %s given", expected_type, zend_zval_value_name(arg));
 1091|      7|			}
 1092|      8|		} else if (error) {
  ------------------
  |  Branch (1092:14): [True: 0, False: 0]
  ------------------
 1093|      0|			efree(error);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|      0|		}
 1095|       |
 1096|      8|		return FAILURE;
 1097|      8|	}
 1098|       |
 1099|    234|	return SUCCESS;
 1100|    242|}
zend_API.c:zend_parse_arg_impl:
  791|    242|{
  792|    242|	const char *spec_walk = *spec;
  793|    242|	char c = *spec_walk++;
  794|    242|	bool check_null = false;
  795|    242|	bool separate = false;
  796|    242|	zval *real_arg = arg;
  797|       |
  798|       |	/* scan through modifiers */
  799|    242|	ZVAL_DEREF(arg);
  ------------------
  |  | 1474|    242|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    242|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    242|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 241]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|    242|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 242]
  |  |  ------------------
  ------------------
  800|    249|	while (1) {
  ------------------
  |  Branch (800:9): [True: 249, Folded]
  ------------------
  801|    249|		if (*spec_walk == '/') {
  ------------------
  |  Branch (801:7): [True: 0, False: 249]
  ------------------
  802|      0|			SEPARATE_ZVAL_NOREF(arg);
  ------------------
  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  | 1546|      0|		zval *_zv = (zv);								\
  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  ------------------
  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1542|      0|		}												\
  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1550|      0|		}												\
  |  | 1551|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (802:4): [True: 0, False: 0]
  |  Branch (802:4): [True: 0, False: 0]
  ------------------
  803|      0|			real_arg = arg;
  804|      0|			separate = true;
  805|    249|		} else if (*spec_walk == '!') {
  ------------------
  |  Branch (805:14): [True: 7, False: 242]
  ------------------
  806|      7|			check_null = true;
  807|    242|		} else {
  808|    242|			break;
  809|    242|		}
  810|      7|		spec_walk++;
  811|      7|	}
  812|       |
  813|    242|	switch (c) {
  814|     30|		case 'l':
  ------------------
  |  Branch (814:3): [True: 30, False: 212]
  ------------------
  815|     30|			{
  816|     30|				zend_long *p = va_arg(*va, zend_long *);
  817|     30|				bool *is_null = NULL;
  818|       |
  819|     30|				if (check_null) {
  ------------------
  |  Branch (819:9): [True: 5, False: 25]
  ------------------
  820|      5|					is_null = va_arg(*va, bool *);
  821|      5|				}
  822|       |
  823|     30|				if (!zend_parse_arg_long(arg, p, is_null, check_null, arg_num)) {
  ------------------
  |  Branch (823:9): [True: 1, False: 29]
  ------------------
  824|      1|					return check_null ? "?int" : "int";
  ------------------
  |  Branch (824:13): [True: 0, False: 1]
  ------------------
  825|      1|				}
  826|     30|			}
  827|     29|			break;
  828|       |
  829|     29|		case 'd':
  ------------------
  |  Branch (829:3): [True: 0, False: 242]
  ------------------
  830|      0|			{
  831|      0|				double *p = va_arg(*va, double *);
  832|      0|				bool *is_null = NULL;
  833|       |
  834|      0|				if (check_null) {
  ------------------
  |  Branch (834:9): [True: 0, False: 0]
  ------------------
  835|      0|					is_null = va_arg(*va, bool *);
  836|      0|				}
  837|       |
  838|      0|				if (!zend_parse_arg_double(arg, p, is_null, check_null, arg_num)) {
  ------------------
  |  Branch (838:9): [True: 0, False: 0]
  ------------------
  839|      0|					return check_null ? "?float" : "float";
  ------------------
  |  Branch (839:13): [True: 0, False: 0]
  ------------------
  840|      0|				}
  841|      0|			}
  842|      0|			break;
  843|       |
  844|      0|		case 'n':
  ------------------
  |  Branch (844:3): [True: 0, False: 242]
  ------------------
  845|      0|			{
  846|      0|				zval **p = va_arg(*va, zval **);
  847|       |
  848|      0|				if (!zend_parse_arg_number(arg, p, check_null, arg_num)) {
  ------------------
  |  Branch (848:9): [True: 0, False: 0]
  ------------------
  849|      0|					return check_null ? "int|float|null" : "int|float";
  ------------------
  |  Branch (849:13): [True: 0, False: 0]
  ------------------
  850|      0|				}
  851|      0|			}
  852|      0|			break;
  853|       |
  854|      1|		case 's':
  ------------------
  |  Branch (854:3): [True: 1, False: 241]
  ------------------
  855|      1|			{
  856|      1|				char **p = va_arg(*va, char **);
  857|      1|				size_t *pl = va_arg(*va, size_t *);
  858|      1|				if (!zend_parse_arg_string(arg, p, pl, check_null, arg_num)) {
  ------------------
  |  Branch (858:9): [True: 0, False: 1]
  ------------------
  859|      0|					return check_null ? "?string" : "string";
  ------------------
  |  Branch (859:13): [True: 0, False: 0]
  ------------------
  860|      0|				}
  861|      1|			}
  862|      1|			break;
  863|       |
  864|      1|		case 'p':
  ------------------
  |  Branch (864:3): [True: 0, False: 242]
  ------------------
  865|      0|			{
  866|      0|				char **p = va_arg(*va, char **);
  867|      0|				size_t *pl = va_arg(*va, size_t *);
  868|      0|				if (!zend_parse_arg_path(arg, p, pl, check_null, arg_num)) {
  ------------------
  |  Branch (868:9): [True: 0, False: 0]
  ------------------
  869|      0|					if (Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (869:10): [True: 0, False: 0]
  ------------------
  870|      0|						zend_spprintf(error, 0, "must not contain any null bytes");
  871|      0|						return "";
  872|      0|					} else {
  873|      0|						return check_null ? "?string" : "string";
  ------------------
  |  Branch (873:14): [True: 0, False: 0]
  ------------------
  874|      0|					}
  875|      0|				}
  876|      0|			}
  877|      0|			break;
  878|       |
  879|      0|		case 'P':
  ------------------
  |  Branch (879:3): [True: 0, False: 242]
  ------------------
  880|      0|			{
  881|      0|				zend_string **str = va_arg(*va, zend_string **);
  882|      0|				if (!zend_parse_arg_path_str(arg, str, check_null, arg_num)) {
  ------------------
  |  Branch (882:9): [True: 0, False: 0]
  ------------------
  883|      0|					if (Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (883:10): [True: 0, False: 0]
  ------------------
  884|      0|						zend_spprintf(error, 0, "must not contain any null bytes");
  885|      0|						return "";
  886|      0|					} else {
  887|      0|						return check_null ? "?string" : "string";
  ------------------
  |  Branch (887:14): [True: 0, False: 0]
  ------------------
  888|      0|					}
  889|      0|				}
  890|      0|			}
  891|      0|			break;
  892|       |
  893|    111|		case 'S':
  ------------------
  |  Branch (893:3): [True: 111, False: 131]
  ------------------
  894|    111|			{
  895|    111|				zend_string **str = va_arg(*va, zend_string **);
  896|    111|				if (!zend_parse_arg_str(arg, str, check_null, arg_num)) {
  ------------------
  |  Branch (896:9): [True: 4, False: 107]
  ------------------
  897|      4|					return check_null ? "?string" : "string";
  ------------------
  |  Branch (897:13): [True: 0, False: 4]
  ------------------
  898|      4|				}
  899|    111|			}
  900|    107|			break;
  901|       |
  902|    107|		case 'b':
  ------------------
  |  Branch (902:3): [True: 10, False: 232]
  ------------------
  903|     10|			{
  904|     10|				bool *p = va_arg(*va, bool *);
  905|     10|				bool *is_null = NULL;
  906|       |
  907|     10|				if (check_null) {
  ------------------
  |  Branch (907:9): [True: 0, False: 10]
  ------------------
  908|      0|					is_null = va_arg(*va, bool *);
  909|      0|				}
  910|       |
  911|     10|				if (!zend_parse_arg_bool(arg, p, is_null, check_null, arg_num)) {
  ------------------
  |  Branch (911:9): [True: 0, False: 10]
  ------------------
  912|      0|					return check_null ? "?bool" : "bool";
  ------------------
  |  Branch (912:13): [True: 0, False: 0]
  ------------------
  913|      0|				}
  914|     10|			}
  915|     10|			break;
  916|       |
  917|     10|		case 'r':
  ------------------
  |  Branch (917:3): [True: 2, False: 240]
  ------------------
  918|      2|			{
  919|      2|				zval **p = va_arg(*va, zval **);
  920|       |
  921|      2|				if (!zend_parse_arg_resource(arg, p, check_null)) {
  ------------------
  |  Branch (921:9): [True: 0, False: 2]
  ------------------
  922|      0|					return check_null ? "resource or null" : "resource";
  ------------------
  |  Branch (922:13): [True: 0, False: 0]
  ------------------
  923|      0|				}
  924|      2|			}
  925|      2|			break;
  926|       |
  927|     15|		case 'A':
  ------------------
  |  Branch (927:3): [True: 15, False: 227]
  ------------------
  928|     15|		case 'a':
  ------------------
  |  Branch (928:3): [True: 0, False: 242]
  ------------------
  929|     15|			{
  930|     15|				zval **p = va_arg(*va, zval **);
  931|       |
  932|     15|				if (!zend_parse_arg_array(arg, p, check_null, c == 'A')) {
  ------------------
  |  Branch (932:9): [True: 2, False: 13]
  ------------------
  933|      2|					return check_null ? "?array" : "array";
  ------------------
  |  Branch (933:13): [True: 0, False: 2]
  ------------------
  934|      2|				}
  935|     15|			}
  936|     13|			break;
  937|       |
  938|     13|		case 'H':
  ------------------
  |  Branch (938:3): [True: 0, False: 242]
  ------------------
  939|      1|		case 'h':
  ------------------
  |  Branch (939:3): [True: 1, False: 241]
  ------------------
  940|      1|			{
  941|      1|				HashTable **p = va_arg(*va, HashTable **);
  942|       |
  943|      1|				if (!zend_parse_arg_array_ht(arg, p, check_null, c == 'H', separate)) {
  ------------------
  |  Branch (943:9): [True: 0, False: 1]
  ------------------
  944|      0|					return check_null ? "?array" : "array";
  ------------------
  |  Branch (944:13): [True: 0, False: 0]
  ------------------
  945|      0|				}
  946|      1|			}
  947|      1|			break;
  948|       |
  949|      5|		case 'o':
  ------------------
  |  Branch (949:3): [True: 5, False: 237]
  ------------------
  950|      5|			{
  951|      5|				zval **p = va_arg(*va, zval **);
  952|       |
  953|      5|				if (!zend_parse_arg_object(arg, p, NULL, check_null)) {
  ------------------
  |  Branch (953:9): [True: 0, False: 5]
  ------------------
  954|      0|					return check_null ? "?object" : "object";
  ------------------
  |  Branch (954:13): [True: 0, False: 0]
  ------------------
  955|      0|				}
  956|      5|			}
  957|      5|			break;
  958|       |
  959|     12|		case 'O':
  ------------------
  |  Branch (959:3): [True: 12, False: 230]
  ------------------
  960|     12|			{
  961|     12|				zval **p = va_arg(*va, zval **);
  962|     12|				zend_class_entry *ce = va_arg(*va, zend_class_entry *);
  963|       |
  964|     12|				if (!zend_parse_arg_object(arg, p, ce, check_null)) {
  ------------------
  |  Branch (964:9): [True: 0, False: 12]
  ------------------
  965|      0|					if (ce) {
  ------------------
  |  Branch (965:10): [True: 0, False: 0]
  ------------------
  966|      0|						if (check_null) {
  ------------------
  |  Branch (966:11): [True: 0, False: 0]
  ------------------
  967|      0|							zend_spprintf(error, 0, "must be of type ?%s, %s given", ZSTR_VAL(ce->name), zend_zval_value_name(arg));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  968|      0|							return "";
  969|      0|						} else {
  970|      0|							return ZSTR_VAL(ce->name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  971|      0|						}
  972|      0|					} else {
  973|      0|						return check_null ? "?object" : "object";
  ------------------
  |  Branch (973:14): [True: 0, False: 0]
  ------------------
  974|      0|					}
  975|      0|				}
  976|     12|			}
  977|     12|			break;
  978|       |
  979|     25|		case 'C':
  ------------------
  |  Branch (979:3): [True: 25, False: 217]
  ------------------
  980|     25|			{
  981|     25|				zend_class_entry *lookup, **pce = va_arg(*va, zend_class_entry **);
  982|     25|				zend_class_entry *ce_base = *pce;
  983|       |
  984|     25|				if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (984:9): [True: 0, False: 25]
  |  Branch (984:23): [True: 0, False: 0]
  ------------------
  985|      0|					*pce = NULL;
  986|      0|					break;
  987|      0|				}
  988|     25|				if (!try_convert_to_string(arg)) {
  ------------------
  |  Branch (988:9): [True: 0, False: 25]
  ------------------
  989|      0|					*pce = NULL;
  990|      0|					return ""; /* try_convert_to_string() throws an exception */
  991|      0|				}
  992|       |
  993|     25|				if ((lookup = zend_lookup_class(Z_STR_P(arg))) == NULL) {
  ------------------
  |  |  982|     25|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     25|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (993:9): [True: 0, False: 25]
  ------------------
  994|      0|					*pce = NULL;
  995|     25|				} else {
  996|     25|					*pce = lookup;
  997|     25|				}
  998|     25|				if (ce_base) {
  ------------------
  |  Branch (998:9): [True: 0, False: 25]
  ------------------
  999|      0|					if ((!*pce || !instanceof_function(*pce, ce_base))) {
  ------------------
  |  Branch (999:11): [True: 0, False: 0]
  |  Branch (999:20): [True: 0, False: 0]
  ------------------
 1000|      0|						zend_spprintf(error, 0, "must be a class name derived from %s%s, %s given",
 1001|      0|							ZSTR_VAL(ce_base->name), check_null ? " or null" : "", Z_STRVAL_P(arg));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							ZSTR_VAL(ce_base->name), check_null ? " or null" : "", Z_STRVAL_P(arg));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1001:33): [True: 0, False: 0]
  ------------------
 1002|      0|						*pce = NULL;
 1003|      0|						return "";
 1004|      0|					}
 1005|      0|				}
 1006|     25|				if (!*pce) {
  ------------------
  |  Branch (1006:9): [True: 0, False: 25]
  ------------------
 1007|      0|					zend_spprintf(error, 0, "must be a valid class name%s, %s given",
 1008|      0|						check_null ? " or null" : "", Z_STRVAL_P(arg));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1008:7): [True: 0, False: 0]
  ------------------
 1009|      0|					return "";
 1010|      0|				}
 1011|     25|				break;
 1012|       |
 1013|     25|			}
 1014|     25|			break;
 1015|       |
 1016|     25|		case 'F':
  ------------------
  |  Branch (1016:3): [True: 17, False: 225]
  ------------------
 1017|     17|		case 'f':
  ------------------
  |  Branch (1017:3): [True: 0, False: 242]
  ------------------
 1018|     17|			{
 1019|     17|				zend_fcall_info *fci = va_arg(*va, zend_fcall_info *);
 1020|     17|				zend_fcall_info_cache *fcc = va_arg(*va, zend_fcall_info_cache *);
 1021|     17|				char *is_callable_error = NULL;
 1022|       |
 1023|     17|				if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (1023:9): [True: 0, False: 17]
  |  Branch (1023:23): [True: 0, False: 0]
  ------------------
 1024|      0|					fci->size = 0;
 1025|      0|					fcc->function_handler = 0;
 1026|      0|					break;
 1027|      0|				}
 1028|       |
 1029|     17|				if (zend_fcall_info_init(arg, 0, fci, fcc, NULL, &is_callable_error) == SUCCESS) {
  ------------------
  |  Branch (1029:9): [True: 16, False: 1]
  ------------------
 1030|     16|					ZEND_ASSERT(!is_callable_error);
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1030:6): [True: 0, False: 16]
  |  Branch (1030:6): [True: 16, False: 0]
  ------------------
 1031|     16|					if (c == 'f') {
  ------------------
  |  Branch (1031:10): [True: 0, False: 16]
  ------------------
 1032|       |						/* Release call trampolines: The function may not get called, in which case
 1033|       |						 * the trampoline will leak. Force it to be refetched during
 1034|       |						 * zend_call_function instead. */
 1035|      0|						zend_release_fcall_info_cache(fcc);
 1036|      0|					}
 1037|     16|					break;
 1038|     16|				}
 1039|       |
 1040|      1|				if (is_callable_error) {
  ------------------
  |  Branch (1040:9): [True: 1, False: 0]
  ------------------
 1041|      1|					zend_spprintf(error, 0, "must be a valid callback%s, %s", check_null ? " or null" : "", is_callable_error);
  ------------------
  |  Branch (1041:64): [True: 0, False: 1]
  ------------------
 1042|      1|					efree(is_callable_error);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1043|      1|					return "";
 1044|      1|				} else {
 1045|      0|					return check_null ? "a valid callback or null" : "a valid callback";
  ------------------
  |  Branch (1045:13): [True: 0, False: 0]
  ------------------
 1046|      0|				}
 1047|      1|			}
 1048|       |
 1049|     13|		case 'z':
  ------------------
  |  Branch (1049:3): [True: 13, False: 229]
  ------------------
 1050|     13|			{
 1051|     13|				zval **p = va_arg(*va, zval **);
 1052|       |
 1053|     13|				zend_parse_arg_zval_deref(real_arg, p, check_null);
 1054|     13|			}
 1055|     13|			break;
 1056|       |
 1057|      0|		case 'Z': /* replace with 'z' */
  ------------------
  |  Branch (1057:3): [True: 0, False: 242]
  ------------------
 1058|      0|		case 'L': /* replace with 'l' */
  ------------------
  |  Branch (1058:3): [True: 0, False: 242]
  ------------------
 1059|      0|			ZEND_ASSERT(0 && "ZPP modifier no longer supported");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1059:4): [Folded, False: 0]
  |  Branch (1059:4): [True: 0, False: 0]
  |  Branch (1059:4): [Folded, False: 0]
  |  Branch (1059:4): [True: 0, False: 0]
  ------------------
 1060|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1061|      0|		default:
  ------------------
  |  Branch (1061:3): [True: 0, False: 242]
  ------------------
 1062|      0|			return "unknown";
 1063|    242|	}
 1064|       |
 1065|    234|	*spec = spec_walk;
 1066|       |
 1067|       |	return NULL;
 1068|    242|}
zend_API.c:zend_parse_va_args:
 1125|    403|{
 1126|    403|	const  char *spec_walk;
 1127|    403|	char c;
 1128|    403|	uint32_t i;
 1129|    403|	uint32_t min_num_args = 0;
 1130|    403|	uint32_t max_num_args = 0;
 1131|    403|	uint32_t post_varargs = 0;
 1132|    403|	zval *arg;
 1133|    403|	bool have_varargs = false;
 1134|    403|	bool have_optional_args = false;
 1135|    403|	zval **varargs = NULL;
 1136|    403|	uint32_t *n_varargs = NULL;
 1137|       |
 1138|  1.83k|	for (spec_walk = type_spec; *spec_walk; spec_walk++) {
  ------------------
  |  Branch (1138:30): [True: 1.43k, False: 403]
  ------------------
 1139|  1.43k|		c = *spec_walk;
 1140|  1.43k|		switch (c) {
 1141|    338|			case 'l': case 'd':
  ------------------
  |  Branch (1141:4): [True: 338, False: 1.09k]
  |  Branch (1141:14): [True: 0, False: 1.43k]
  ------------------
 1142|    353|			case 's': case 'b':
  ------------------
  |  Branch (1142:4): [True: 5, False: 1.43k]
  |  Branch (1142:14): [True: 10, False: 1.42k]
  ------------------
 1143|    355|			case 'r': case 'a':
  ------------------
  |  Branch (1143:4): [True: 2, False: 1.43k]
  |  Branch (1143:14): [True: 0, False: 1.43k]
  ------------------
 1144|    568|			case 'o': case 'O':
  ------------------
  |  Branch (1144:4): [True: 7, False: 1.42k]
  |  Branch (1144:14): [True: 206, False: 1.23k]
  ------------------
 1145|    582|			case 'z': case 'Z':
  ------------------
  |  Branch (1145:4): [True: 14, False: 1.42k]
  |  Branch (1145:14): [True: 0, False: 1.43k]
  ------------------
 1146|    612|			case 'C': case 'h':
  ------------------
  |  Branch (1146:4): [True: 29, False: 1.40k]
  |  Branch (1146:14): [True: 1, False: 1.43k]
  ------------------
 1147|    648|			case 'f': case 'F': case 'A':
  ------------------
  |  Branch (1147:4): [True: 0, False: 1.43k]
  |  Branch (1147:14): [True: 21, False: 1.41k]
  |  Branch (1147:24): [True: 15, False: 1.42k]
  ------------------
 1148|    648|			case 'H': case 'p':
  ------------------
  |  Branch (1148:4): [True: 0, False: 1.43k]
  |  Branch (1148:14): [True: 0, False: 1.43k]
  ------------------
 1149|    915|			case 'S': case 'P':
  ------------------
  |  Branch (1149:4): [True: 267, False: 1.16k]
  |  Branch (1149:14): [True: 0, False: 1.43k]
  ------------------
 1150|    915|			case 'L': case 'n':
  ------------------
  |  Branch (1150:4): [True: 0, False: 1.43k]
  |  Branch (1150:14): [True: 0, False: 1.43k]
  ------------------
 1151|    915|				max_num_args++;
 1152|    915|				break;
 1153|       |
 1154|    304|			case '|':
  ------------------
  |  Branch (1154:4): [True: 304, False: 1.13k]
  ------------------
 1155|    304|				min_num_args = max_num_args;
 1156|    304|				have_optional_args = true;
 1157|    304|				break;
 1158|       |
 1159|      0|			case '/':
  ------------------
  |  Branch (1159:4): [True: 0, False: 1.43k]
  ------------------
 1160|    201|			case '!':
  ------------------
  |  Branch (1160:4): [True: 201, False: 1.23k]
  ------------------
 1161|       |				/* Pass */
 1162|    201|				break;
 1163|       |
 1164|     16|			case '*':
  ------------------
  |  Branch (1164:4): [True: 16, False: 1.42k]
  ------------------
 1165|     16|			case '+':
  ------------------
  |  Branch (1165:4): [True: 0, False: 1.43k]
  ------------------
 1166|     16|				if (have_varargs) {
  ------------------
  |  Branch (1166:9): [True: 0, False: 16]
  ------------------
 1167|      0|					zend_parse_parameters_debug_error(
 1168|      0|						"only one varargs specifier (* or +) is permitted");
 1169|      0|					return FAILURE;
 1170|      0|				}
 1171|     16|				have_varargs = true;
 1172|       |				/* we expect at least one parameter in varargs */
 1173|     16|				if (c == '+') {
  ------------------
  |  Branch (1173:9): [True: 0, False: 16]
  ------------------
 1174|      0|					max_num_args++;
 1175|      0|				}
 1176|       |				/* mark the beginning of varargs */
 1177|     16|				post_varargs = max_num_args;
 1178|       |
 1179|     16|				if (ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  687|     16|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              				if (ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|     16|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (1179:9): [True: 0, False: 16]
  ------------------
 1180|      0|					zend_unexpected_extra_named_error();
 1181|      0|					return FAILURE;
 1182|      0|				}
 1183|     16|				break;
 1184|       |
 1185|     16|			default:
  ------------------
  |  Branch (1185:4): [True: 0, False: 1.43k]
  ------------------
 1186|      0|				zend_parse_parameters_debug_error("bad type specifier while parsing parameters");
 1187|      0|				return FAILURE;
 1188|  1.43k|		}
 1189|  1.43k|	}
 1190|       |
 1191|       |	/* with no optional arguments the minimum number of arguments must be the same as the maximum */
 1192|    403|	if (!have_optional_args) {
  ------------------
  |  Branch (1192:6): [True: 99, False: 304]
  ------------------
 1193|     99|		min_num_args = max_num_args;
 1194|     99|	}
 1195|       |
 1196|    403|	if (have_varargs) {
  ------------------
  |  Branch (1196:6): [True: 16, False: 387]
  ------------------
 1197|       |		/* calculate how many required args are at the end of the specifier list */
 1198|     16|		post_varargs = max_num_args - post_varargs;
 1199|     16|		max_num_args = UINT32_MAX;
 1200|     16|	}
 1201|       |
 1202|    403|	if (num_args < min_num_args || num_args > max_num_args) {
  ------------------
  |  Branch (1202:6): [True: 34, False: 369]
  |  Branch (1202:33): [True: 0, False: 369]
  ------------------
 1203|     34|		if (!(flags & ZEND_PARSE_PARAMS_QUIET)) {
  ------------------
  |  |  366|     34|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  ------------------
  |  Branch (1203:7): [True: 28, False: 6]
  ------------------
 1204|     28|			zend_string *func_name = get_active_function_or_method_name();
 1205|       |
 1206|     28|			zend_argument_count_error("%s() expects %s %d argument%s, %d given",
 1207|     28|				ZSTR_VAL(func_name),
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1208|     28|				min_num_args == max_num_args ? "exactly" : num_args < min_num_args ? "at least" : "at most",
  ------------------
  |  Branch (1208:5): [True: 14, False: 14]
  |  Branch (1208:48): [True: 14, False: 0]
  ------------------
 1209|     28|				num_args < min_num_args ? min_num_args : max_num_args,
  ------------------
  |  Branch (1209:5): [True: 28, False: 0]
  ------------------
 1210|     28|				(num_args < min_num_args ? min_num_args : max_num_args) == 1 ? "" : "s",
  ------------------
  |  Branch (1210:5): [True: 20, False: 8]
  |  Branch (1210:6): [True: 28, False: 0]
  ------------------
 1211|     28|				num_args
 1212|     28|			);
 1213|       |
 1214|     28|			zend_string_release(func_name);
 1215|     28|		}
 1216|     34|		return FAILURE;
 1217|     34|	}
 1218|       |
 1219|    369|	if (num_args > ZEND_CALL_NUM_ARGS(EG(current_execute_data))) {
  ------------------
  |  |  712|    369|	(call)->This.u2.num_args
  ------------------
  |  Branch (1219:6): [True: 0, False: 369]
  ------------------
 1220|      0|		zend_parse_parameters_debug_error("could not obtain parameters for parsing");
 1221|      0|		return FAILURE;
 1222|      0|	}
 1223|       |
 1224|    369|	i = 0;
 1225|    603|	while (num_args-- > 0) {
  ------------------
  |  Branch (1225:9): [True: 242, False: 361]
  ------------------
 1226|    242|		if (*type_spec == '|') {
  ------------------
  |  Branch (1226:7): [True: 93, False: 149]
  ------------------
 1227|     93|			type_spec++;
 1228|     93|		}
 1229|       |
 1230|    242|		if (*type_spec == '*' || *type_spec == '+') {
  ------------------
  |  Branch (1230:7): [True: 0, False: 242]
  |  Branch (1230:28): [True: 0, False: 242]
  ------------------
 1231|      0|			uint32_t num_varargs = num_args + 1 - post_varargs;
 1232|       |
 1233|       |			/* eat up the passed in storage even if it won't be filled in with varargs */
 1234|      0|			varargs = va_arg(*va, zval **);
 1235|      0|			n_varargs = va_arg(*va, uint32_t *);
 1236|      0|			type_spec++;
 1237|       |
 1238|      0|			if (num_varargs > 0) {
  ------------------
  |  Branch (1238:8): [True: 0, False: 0]
  ------------------
 1239|      0|				*n_varargs = num_varargs;
 1240|      0|				*varargs = ZEND_CALL_ARG(EG(current_execute_data), i + 1);
  ------------------
  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|       |				/* adjust how many args we have left and restart loop */
 1242|      0|				num_args += 1 - num_varargs;
 1243|      0|				i += num_varargs;
 1244|      0|				continue;
 1245|      0|			} else {
 1246|      0|				*varargs = NULL;
 1247|      0|				*n_varargs = 0;
 1248|      0|			}
 1249|      0|		}
 1250|       |
 1251|    242|		arg = ZEND_CALL_ARG(EG(current_execute_data), i + 1);
  ------------------
  |  |  728|    242|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|    242|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|    242|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1252|       |
 1253|    242|		if (zend_parse_arg(i+1, arg, va, &type_spec, flags) == FAILURE) {
  ------------------
  |  Branch (1253:7): [True: 8, False: 234]
  ------------------
 1254|       |			/* clean up varargs array if it was used */
 1255|      8|			if (varargs && *varargs) {
  ------------------
  |  Branch (1255:8): [True: 0, False: 8]
  |  Branch (1255:19): [True: 0, False: 0]
  ------------------
 1256|      0|				*varargs = NULL;
 1257|      0|			}
 1258|      8|			return FAILURE;
 1259|      8|		}
 1260|    234|		i++;
 1261|    234|	}
 1262|       |
 1263|    361|	return SUCCESS;
 1264|    369|}
zend_API.c:zend_allocate_mutable_data:
 1395|      1|{
 1396|      1|	zend_class_mutable_data *mutable_data;
 1397|       |
 1398|      1|	ZEND_ASSERT(ZEND_MAP_PTR(class_type->mutable_data) != NULL);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1398:2): [True: 0, False: 1]
  |  Branch (1398:2): [True: 1, False: 0]
  ------------------
 1399|      1|	ZEND_ASSERT(ZEND_MAP_PTR_GET_IMM(class_type->mutable_data) == NULL);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1399:2): [True: 0, False: 1]
  |  Branch (1399:2): [True: 1, False: 0]
  ------------------
 1400|       |
 1401|      1|	mutable_data = zend_arena_alloc(&CG(arena), sizeof(zend_class_mutable_data));
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1402|      1|	memset(mutable_data, 0, sizeof(zend_class_mutable_data));
 1403|      1|	mutable_data->ce_flags = class_type->ce_flags;
 1404|      1|	ZEND_MAP_PTR_SET_IMM(class_type->mutable_data, mutable_data);
  ------------------
  |  |   66|      1|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |   67|      1|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  ------------------
  |  |  |  |   35|      1|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      1|		*__p = (val); \
  |  |   69|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (69:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1405|       |
 1406|      1|	return mutable_data;
 1407|      1|}
zend_API.c:update_property:
 1450|     19|static zend_result update_property(zval *val, const zend_property_info *prop_info) {
 1451|     19|	if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     19|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     19|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 6, False: 13]
  |  |  ------------------
  ------------------
 1452|      6|		zval tmp;
 1453|       |
 1454|      6|		ZVAL_COPY(&tmp, val);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1455|      6|		if (UNEXPECTED(zval_update_constant_ex(&tmp, prop_info->ce) != SUCCESS)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
 1456|      1|			zval_ptr_dtor(&tmp);
 1457|      1|			return FAILURE;
 1458|      1|		}
 1459|      5|		/* property initializers must always be evaluated with strict types */;
 1460|      5|		if (UNEXPECTED(!zend_verify_property_type(prop_info, &tmp, /* strict */ 1))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 1461|      1|			zval_ptr_dtor(&tmp);
 1462|      1|			return FAILURE;
 1463|      1|		}
 1464|      4|		zval_ptr_dtor(val);
 1465|      4|		ZVAL_COPY_VALUE(val, &tmp);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1466|      4|		return SUCCESS;
 1467|      5|	}
 1468|     13|	return zval_update_constant_ex(val, prop_info->ce);
 1469|     19|}
zend_API.c:_object_properties_init:
 1646|  28.3k|{
 1647|  28.3k|	if (class_type->default_properties_count) {
  ------------------
  |  Branch (1647:6): [True: 20.6k, False: 7.72k]
  ------------------
 1648|  20.6k|		zval *src = CE_DEFAULT_PROPERTIES_TABLE(class_type);
  ------------------
  |  |  337|  20.6k|	zend_class_default_properties_table(ce)
  ------------------
 1649|  20.6k|		zval *dst = object->properties_table;
 1650|  20.6k|		zval *end = src + class_type->default_properties_count;
 1651|       |
 1652|  20.6k|		if (UNEXPECTED(class_type->type == ZEND_INTERNAL_CLASS)) {
  ------------------
  |  |  457|  20.6k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 20.4k, False: 243]
  |  |  ------------------
  ------------------
 1653|       |			/* We don't have to account for refcounting because
 1654|       |			 * zend_declare_typed_property() disallows refcounted defaults for internal classes. */
 1655|   134k|			do {
 1656|   134k|				ZEND_ASSERT(!Z_REFCOUNTED_P(src));
  ------------------
  |  |  112|   134k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1656:5): [True: 0, False: 134k]
  |  Branch (1656:5): [True: 134k, False: 0]
  ------------------
 1657|   134k|				ZVAL_COPY_VALUE_PROP(dst, src);
  ------------------
  |  | 1582|   134k|	do { *(z) = *(v); } while (0)
  |  |  ------------------
  |  |  |  Branch (1582:29): [Folded, False: 134k]
  |  |  ------------------
  ------------------
 1658|   134k|				src++;
 1659|   134k|				dst++;
 1660|   134k|			} while (src != end);
  ------------------
  |  Branch (1660:13): [True: 113k, False: 20.4k]
  ------------------
 1661|  20.4k|		} else {
 1662|    375|			do {
 1663|    375|				ZVAL_COPY_PROP(dst, src);
  ------------------
  |  | 1584|    375|	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1425|    375|	do {												\
  |  |  |  | 1426|    375|		zval *_z1 = (z);								\
  |  |  |  | 1427|    375|		const zval *_z2 = (v);							\
  |  |  |  | 1428|    375|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    375|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    375|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|    375|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    375|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    375|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|    375|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    375|	do {												\
  |  |  |  |  |  | 1408|    375|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    375|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    375|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    375|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    375|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    375|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    375|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 375]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|    375|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|    375|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|    375|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 16, False: 359]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|     16|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|     16|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|     16|		}												\
  |  |  |  | 1434|    375|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 375]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|    375|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|    375|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|    375|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|    375|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|    375|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|    375|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1584:70): [Folded, False: 375]
  |  |  ------------------
  ------------------
 1664|    375|				src++;
 1665|    375|				dst++;
 1666|    375|			} while (src != end);
  ------------------
  |  Branch (1666:13): [True: 132, False: 243]
  ------------------
 1667|    243|		}
 1668|  20.6k|	}
 1669|  28.3k|}
zend_API.c:_object_and_properties_init:
 1793|  29.3k|{
 1794|  29.3k|	if (UNEXPECTED(class_type->ce_flags & ZEND_ACC_UNINSTANTIABLE)) {
  ------------------
  |  |  457|  29.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 38, False: 29.2k]
  |  |  ------------------
  ------------------
 1795|     38|		if (class_type->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|     38|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (1795:7): [True: 1, False: 37]
  ------------------
 1796|      1|			zend_throw_error(NULL, "Cannot instantiate interface %s", ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1797|     37|		} else if (class_type->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     37|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (1797:14): [True: 2, False: 35]
  ------------------
 1798|      2|			zend_throw_error(NULL, "Cannot instantiate trait %s", ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1799|     35|		} else if (class_type->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|     35|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (1799:14): [True: 26, False: 9]
  ------------------
 1800|     26|			zend_throw_error(NULL, "Cannot instantiate enum %s", ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1801|     26|		} else {
 1802|      9|			ZEND_ASSERT(class_type->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS));
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1802:4): [True: 0, False: 9]
  |  Branch (1802:4): [True: 9, False: 0]
  ------------------
 1803|      9|			zend_throw_error(NULL, "Cannot instantiate abstract class %s", ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1804|      9|		}
 1805|     38|		ZVAL_NULL(arg);
  ------------------
  |  | 1059|     38|#define ZVAL_NULL(z) do {				\
  |  | 1060|     38|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     38|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     38|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     38|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     38|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 38]
  |  |  ------------------
  ------------------
 1806|     38|		Z_OBJ_P(arg) = NULL;
  ------------------
  |  | 1000|     38|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     38|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1807|     38|		return FAILURE;
 1808|     38|	}
 1809|       |
 1810|  29.2k|	if (UNEXPECTED(!(class_type->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
  ------------------
  |  |  457|  29.2k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 29.2k]
  |  |  ------------------
  ------------------
 1811|     16|		if (UNEXPECTED(zend_update_class_constants(class_type) != SUCCESS)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 10]
  |  |  ------------------
  ------------------
 1812|      6|			ZVAL_NULL(arg);
  ------------------
  |  | 1059|      6|#define ZVAL_NULL(z) do {				\
  |  | 1060|      6|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      6|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1813|      6|			Z_OBJ_P(arg) = NULL;
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1814|      6|			return FAILURE;
 1815|      6|		}
 1816|     16|	}
 1817|       |
 1818|  29.2k|	if (class_type->create_object == NULL) {
  ------------------
  |  Branch (1818:6): [True: 7.20k, False: 22.0k]
  ------------------
 1819|  7.20k|		zend_object *obj = zend_objects_new(class_type);
 1820|       |
 1821|  7.20k|		ZVAL_OBJ(arg, obj);
  ------------------
  |  | 1140|  7.20k|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|  7.20k|		zval *__z = (z);						\
  |  | 1142|  7.20k|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|  7.20k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  7.20k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|  7.20k|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|  7.20k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  7.20k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|  7.20k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  7.20k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  7.20k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  7.20k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  7.20k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  7.20k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|  7.20k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 7.20k]
  |  |  ------------------
  ------------------
 1822|  7.20k|		if (properties) {
  ------------------
  |  Branch (1822:7): [True: 0, False: 7.20k]
  ------------------
 1823|      0|			object_properties_init_ex(obj, properties);
 1824|  7.20k|		} else {
 1825|  7.20k|			_object_properties_init(obj, class_type);
 1826|  7.20k|		}
 1827|  22.0k|	} else {
 1828|  22.0k|		ZVAL_OBJ(arg, class_type->create_object(class_type));
  ------------------
  |  | 1140|  22.0k|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|  22.0k|		zval *__z = (z);						\
  |  | 1142|  22.0k|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|  22.0k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  22.0k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|  22.0k|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|  22.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  22.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|  22.0k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  22.0k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  22.0k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  22.0k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  22.0k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  22.0k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|  22.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 22.0k]
  |  |  ------------------
  ------------------
 1829|  22.0k|	}
 1830|  29.2k|	return SUCCESS;
 1831|  29.2k|}
zend_API.c:zend_sort_modules:
 2448|      2|{
 2449|      2|	Bucket *b1 = base;
 2450|      2|	Bucket *b2;
 2451|      2|	Bucket *end = b1 + count;
 2452|      2|	Bucket tmp;
 2453|      2|	zend_module_entry *m, *r;
 2454|       |
 2455|     28|	while (b1 < end) {
  ------------------
  |  Branch (2455:9): [True: 26, False: 2]
  ------------------
 2456|     34|try_again:
 2457|     34|		m = (zend_module_entry*)Z_PTR(b1->val);
  ------------------
  |  | 1052|     34|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
 2458|     34|		if (!m->module_started && m->deps) {
  ------------------
  |  Branch (2458:7): [True: 34, False: 0]
  |  Branch (2458:29): [True: 16, False: 18]
  ------------------
 2459|     16|			const zend_module_dep *dep = m->deps;
 2460|     32|			while (dep->name) {
  ------------------
  |  Branch (2460:11): [True: 24, False: 8]
  ------------------
 2461|     24|				if (dep->type == MODULE_DEP_REQUIRED || dep->type == MODULE_DEP_OPTIONAL) {
  ------------------
  |  |  101|     48|#define MODULE_DEP_REQUIRED		1
  ------------------
              				if (dep->type == MODULE_DEP_REQUIRED || dep->type == MODULE_DEP_OPTIONAL) {
  ------------------
  |  |  103|      4|#define MODULE_DEP_OPTIONAL		3
  ------------------
  |  Branch (2461:9): [True: 20, False: 4]
  |  Branch (2461:45): [True: 4, False: 0]
  ------------------
 2462|     24|					b2 = b1 + 1;
 2463|     82|					while (b2 < end) {
  ------------------
  |  Branch (2463:13): [True: 66, False: 16]
  ------------------
 2464|     66|						r = (zend_module_entry*)Z_PTR(b2->val);
  ------------------
  |  | 1052|     66|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
 2465|     66|						if (strcasecmp(dep->name, r->name) == 0) {
  ------------------
  |  Branch (2465:11): [True: 8, False: 58]
  ------------------
 2466|      8|							tmp = *b1;
 2467|      8|							*b1 = *b2;
 2468|      8|							*b2 = tmp;
 2469|      8|							goto try_again;
 2470|      8|						}
 2471|     58|						b2++;
 2472|     58|					}
 2473|     24|				}
 2474|     16|				dep++;
 2475|     16|			}
 2476|     16|		}
 2477|     26|		b1++;
 2478|     26|	}
 2479|      2|}
zend_API.c:zend_startup_module_zval:
 2440|     26|{
 2441|     26|	zend_module_entry *module = Z_PTR_P(zv);
  ------------------
  |  | 1053|     26|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     26|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 2442|       |
 2443|     26|	return (zend_startup_module_ex(module) == SUCCESS) ? ZEND_HASH_APPLY_KEEP : ZEND_HASH_APPLY_REMOVE;
  ------------------
  |  |  148|     26|#define ZEND_HASH_APPLY_KEEP				0
  ------------------
              	return (zend_startup_module_ex(module) == SUCCESS) ? ZEND_HASH_APPLY_KEEP : ZEND_HASH_APPLY_REMOVE;
  ------------------
  |  |  149|      0|#define ZEND_HASH_APPLY_REMOVE				1<<0
  ------------------
  |  Branch (2443:9): [True: 26, False: 0]
  ------------------
 2444|     26|}
zend_API.c:zend_check_magic_method_non_static:
 2726|    568|{
 2727|    568|	if (fptr->common.fn_flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|    568|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2727:6): [True: 6, False: 562]
  ------------------
 2728|      6|		zend_error(error_type, "Method %s::%s() cannot be static",
 2729|      6|			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2730|      6|	}
 2731|    568|}
zend_API.c:zend_check_magic_method_no_return_type:
 2754|    268|{
 2755|    268|	if (fptr->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|    268|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (2755:6): [True: 2, False: 266]
  ------------------
 2756|      2|		zend_error_noreturn(error_type, "Method %s::%s() cannot declare a return type",
 2757|      2|			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2758|      2|	}
 2759|       |
 2760|    266|	if (fptr->common.fn_flags & ZEND_ACC_NODISCARD) {
  ------------------
  |  |  410|    266|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  |  Branch (2760:6): [True: 1, False: 265]
  ------------------
 2761|      1|		zend_error_noreturn(error_type, "Method %s::%s cannot be #[\\NoDiscard]", ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_error_noreturn(error_type, "Method %s::%s cannot be #[\\NoDiscard]", ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2762|      1|	}
 2763|    266|}
zend_API.c:zend_check_magic_method_args:
 2656|    389|{
 2657|    389|	if (fptr->common.num_args != num_args) {
  ------------------
  |  Branch (2657:6): [True: 9, False: 380]
  ------------------
 2658|      9|		if (num_args == 0) {
  ------------------
  |  Branch (2658:7): [True: 7, False: 2]
  ------------------
 2659|      7|			zend_error(error_type, "Method %s::%s() cannot take arguments",
 2660|      7|				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2661|      7|		} else if (num_args == 1) {
  ------------------
  |  Branch (2661:14): [True: 1, False: 1]
  ------------------
 2662|      1|			zend_error(error_type, "Method %s::%s() must take exactly 1 argument",
 2663|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2664|      1|		} else {
 2665|      1|			zend_error(error_type, "Method %s::%s() must take exactly %" PRIu32 " arguments",
 2666|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name), num_args);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name), num_args);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2667|      1|		}
 2668|      9|		return;
 2669|      9|	}
 2670|    551|	for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (2670:23): [True: 172, False: 379]
  ------------------
 2671|    172|		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(fptr, i + 1)) {
  ------------------
  |  | 1193|    172|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|    172|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 1, False: 171]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2672|      1|			zend_error(error_type, "Method %s::%s() cannot take arguments by reference",
 2673|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2674|      1|			return;
 2675|      1|		}
 2676|    172|	}
 2677|    380|}
zend_API.c:zend_check_magic_method_return_type:
 2693|    257|{
 2694|    257|	if (return_type == MAY_BE_VOID) {
  ------------------
  |  |   40|    257|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|    257|#define IS_VOID						14
  |  |  ------------------
  ------------------
  |  Branch (2694:6): [True: 106, False: 151]
  ------------------
 2695|    106|		if (fptr->common.fn_flags & ZEND_ACC_NODISCARD) {
  ------------------
  |  |  410|    106|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  |  Branch (2695:7): [True: 1, False: 105]
  ------------------
 2696|      1|			zend_error_noreturn(error_type, "Method %s::%s cannot be #[\\NoDiscard]", ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error_noreturn(error_type, "Method %s::%s cannot be #[\\NoDiscard]", ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2697|      1|		}
 2698|    106|	}
 2699|       |
 2700|    256|	if (!(fptr->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|    256|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (2700:6): [True: 24, False: 232]
  ------------------
 2701|       |		/* For backwards compatibility reasons, do not enforce the return type if it is not set. */
 2702|     24|		return;
 2703|     24|	}
 2704|       |
 2705|    232|	if (ZEND_TYPE_PURE_MASK(fptr->common.arg_info[-1].type) & MAY_BE_NEVER) {
  ------------------
  |  |  264|    232|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    232|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_PURE_MASK(fptr->common.arg_info[-1].type) & MAY_BE_NEVER) {
  ------------------
  |  |   41|    232|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|    232|#define IS_NEVER					17
  |  |  ------------------
  ------------------
  |  Branch (2705:6): [True: 0, False: 232]
  ------------------
 2706|       |		/* It is always legal to specify the never type. */
 2707|      0|		return;
 2708|      0|	}
 2709|       |
 2710|    232|	bool is_complex_type = ZEND_TYPE_IS_COMPLEX(fptr->common.arg_info[-1].type);
  ------------------
  |  |  157|    232|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|    232|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    232|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    232|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|    232|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2711|    232|	uint32_t extra_types = ZEND_TYPE_PURE_MASK(fptr->common.arg_info[-1].type) & ~return_type;
  ------------------
  |  |  264|    232|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    232|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 2712|    232|	if (extra_types & MAY_BE_STATIC) {
  ------------------
  |  |   42|    232|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|    232|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (2712:6): [True: 0, False: 232]
  ------------------
 2713|      0|		extra_types &= ~MAY_BE_STATIC;
  ------------------
  |  |   42|      0|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|      0|#define IS_STATIC					15
  |  |  ------------------
  ------------------
 2714|      0|		is_complex_type = true;
 2715|      0|	}
 2716|       |
 2717|    232|	if (extra_types || (is_complex_type && return_type != MAY_BE_OBJECT)) {
  ------------------
  |  |   32|     12|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|     12|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (2717:6): [True: 8, False: 224]
  |  Branch (2717:22): [True: 12, False: 212]
  |  Branch (2717:41): [True: 2, False: 10]
  ------------------
 2718|     10|		zend_error(error_type, "%s::%s(): Return type must be %s when declared",
 2719|     10|			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name),
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name),
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2720|     10|			ZSTR_VAL(zend_type_to_string((zend_type) ZEND_TYPE_INIT_MASK(return_type))));
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2721|     10|	}
 2722|    232|}
zend_API.c:zend_check_magic_method_public:
 2744|    285|{
 2745|       |	// TODO: Remove this warning after adding proper visibility handling.
 2746|    285|	if (!(fptr->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|    285|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2746:6): [True: 5, False: 280]
  ------------------
 2747|      5|		zend_error(E_WARNING, "The magic method %s::%s() must have public visibility",
  ------------------
  |  |   23|      5|#define E_WARNING			(1<<1L)
  ------------------
 2748|      5|			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2749|      5|	}
 2750|    285|}
zend_API.c:zend_check_magic_method_arg_type:
 2680|    152|{
 2681|    152|		if (
 2682|    152|			ZEND_TYPE_IS_SET(fptr->common.arg_info[arg_num].type)
  ------------------
  |  |  152|    304|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    152|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 67, False: 85]
  |  |  ------------------
  ------------------
 2683|     67|			 && !(ZEND_TYPE_FULL_MASK(fptr->common.arg_info[arg_num].type) & arg_type)
  ------------------
  |  |  261|     67|	((t).type_mask)
  ------------------
  |  Branch (2683:8): [True: 8, False: 59]
  ------------------
 2684|    152|		) {
 2685|      8|			zend_error(error_type, "%s::%s(): Parameter #%d ($%s) must be of type %s when declared",
 2686|      8|				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name),
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name),
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2687|      8|				arg_num + 1, ZSTR_VAL(fptr->common.arg_info[arg_num].name),
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2688|      8|				ZSTR_VAL(zend_type_to_string((zend_type) ZEND_TYPE_INIT_MASK(arg_type))));
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2689|      8|		}
 2690|    152|}
zend_API.c:zend_check_magic_method_static:
 2735|     22|{
 2736|     22|	if (!(fptr->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|     22|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2736:6): [True: 2, False: 20]
  ------------------
 2737|      2|		zend_error(error_type, "Method %s::%s() must be static",
 2738|      2|			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2739|      2|	}
 2740|     22|}
zend_API.c:zend_convert_internal_arg_info_type:
 2934|  6.95k|{
 2935|  6.95k|	if (ZEND_TYPE_HAS_LITERAL_NAME(*type)) {
  ------------------
  |  |  163|  6.95k|	((((t).type_mask) & _ZEND_TYPE_LITERAL_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  135|  6.95k|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  ------------------
  |  |  |  Branch (163:2): [True: 470, False: 6.48k]
  |  |  ------------------
  ------------------
 2936|       |		// gen_stubs.php does not support codegen for compound types. As a
 2937|       |		// temporary workaround, we support union types by splitting
 2938|       |		// the type name on `|` characters if necessary.
 2939|    470|		const char *class_name = ZEND_TYPE_LITERAL_NAME(*type);
  ------------------
  |  |  187|    470|	((const char *) (t).ptr)
  ------------------
 2940|    470|		type->type_mask &= ~_ZEND_TYPE_LITERAL_NAME_BIT;
  ------------------
  |  |  135|    470|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  ------------------
 2941|       |
 2942|    470|		size_t num_types = 1;
 2943|    470|		const char *p = class_name;
 2944|    474|		while ((p = strchr(p, '|'))) {
  ------------------
  |  Branch (2944:10): [True: 4, False: 470]
  ------------------
 2945|      4|			num_types++;
 2946|      4|			p++;
 2947|      4|		}
 2948|       |
 2949|    470|		if (num_types == 1) {
  ------------------
  |  Branch (2949:7): [True: 466, False: 4]
  ------------------
 2950|       |			/* Simple class type */
 2951|    466|			zend_string *str = zend_string_init_interned(class_name, strlen(class_name), persistent);
 2952|    466|			zend_alloc_ce_cache(str);
 2953|    466|			ZEND_TYPE_SET_PTR(*type, str);
  ------------------
  |  |  247|    466|	((t).ptr = (_ptr))
  ------------------
 2954|    466|			type->type_mask |= _ZEND_TYPE_NAME_BIT;
  ------------------
  |  |  133|    466|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  ------------------
 2955|    466|		} else {
 2956|       |			/* Union type */
 2957|      4|			zend_type_list *list = pemalloc(ZEND_TYPE_LIST_SIZE(num_types), persistent);
  ------------------
  |  |  188|      4|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 2958|      4|			list->num_types = num_types;
 2959|      4|			ZEND_TYPE_SET_LIST(*type, list);
  ------------------
  |  |  256|      4|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|      4|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|      4|	(t).ptr = (_ptr); \
  |  |  |  |  251|      4|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      4|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|      4|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|      4|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|      4|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|      4|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2960|      4|			ZEND_TYPE_FULL_MASK(*type) |= _ZEND_TYPE_UNION_BIT;
  ------------------
  |  |  261|      4|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(*type) |= _ZEND_TYPE_UNION_BIT;
  ------------------
  |  |  145|      4|#define _ZEND_TYPE_UNION_BIT (1u << 18)
  ------------------
 2961|       |
 2962|      4|			const char *start = class_name;
 2963|      4|			uint32_t j = 0;
 2964|      8|			while (true) {
  ------------------
  |  Branch (2964:11): [True: 8, Folded]
  ------------------
 2965|      8|				const char *end = strchr(start, '|');
 2966|      8|				zend_string *str = zend_string_init_interned(start, end ? end - start : strlen(start), persistent);
  ------------------
  |  Branch (2966:57): [True: 4, False: 4]
  ------------------
 2967|      8|				zend_alloc_ce_cache(str);
 2968|      8|				list->types[j] = (zend_type) ZEND_TYPE_INIT_CLASS(str, 0, 0);
  ------------------
  |  |  310|      8|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      8|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      8|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2969|      8|				if (!end) {
  ------------------
  |  Branch (2969:9): [True: 4, False: 4]
  ------------------
 2970|      4|					break;
 2971|      4|				}
 2972|      4|				start = end + 1;
 2973|      4|				j++;
 2974|      4|			}
 2975|      4|		}
 2976|    470|	}
 2977|  6.95k|	if (ZEND_TYPE_IS_ITERABLE_FALLBACK(*type)) {
  ------------------
  |  |  169|  6.95k|	((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  139|  6.95k|#define _ZEND_TYPE_ITERABLE_BIT (1u << 21)
  |  |  ------------------
  |  |  |  Branch (169:2): [True: 0, False: 6.95k]
  |  |  ------------------
  ------------------
 2978|       |		/* Warning generated an extension load warning which is emitted for every test
 2979|       |		   zend_error(E_CORE_WARNING, "iterable type is now a compile time alias for array|Traversable,"
 2980|       |		   " regenerate the argument info via the php-src gen_stub build script");
 2981|       |		   */
 2982|      0|		zend_type legacy_iterable = ZEND_TYPE_INIT_CLASS_MASK(
  ------------------
  |  |  313|      0|	ZEND_TYPE_INIT_PTR_MASK(class_name, _ZEND_TYPE_NAME_BIT | (type_mask))
  |  |  ------------------
  |  |  |  |  301|      0|	_ZEND_TYPE_PREFIX { (void *) (ptr), (type_mask) }
  |  |  ------------------
  ------------------
 2983|      0|			ZSTR_KNOWN(ZEND_STR_TRAVERSABLE),
 2984|      0|			(type->type_mask | MAY_BE_ARRAY)
 2985|      0|		);
 2986|      0|		*type = legacy_iterable;
 2987|      0|	}
 2988|  6.95k|}
zend_API.c:do_register_internal_class:
 3499|    348|{
 3500|    348|	zend_class_entry *class_entry = pemalloc(sizeof(zend_class_entry), true);
  ------------------
  |  |  188|    348|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    348|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    348|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    348|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    348|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 348, Folded]
  |  |  ------------------
  ------------------
 3501|    348|	zend_string *lowercase_name;
 3502|    348|	*class_entry = *orig_class_entry;
 3503|       |
 3504|    348|	class_entry->type = ZEND_INTERNAL_CLASS;
 3505|    348|	zend_initialize_class_data(class_entry, 0);
 3506|    348|	zend_alloc_ce_cache(class_entry->name);
 3507|    348|	class_entry->ce_flags = orig_class_entry->ce_flags | ce_flags | ZEND_ACC_CONSTANTS_UPDATED | ZEND_ACC_LINKED | ZEND_ACC_RESOLVED_PARENT | ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  298|    348|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
              	class_entry->ce_flags = orig_class_entry->ce_flags | ce_flags | ZEND_ACC_CONSTANTS_UPDATED | ZEND_ACC_LINKED | ZEND_ACC_RESOLVED_PARENT | ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  287|    348|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
              	class_entry->ce_flags = orig_class_entry->ce_flags | ce_flags | ZEND_ACC_CONSTANTS_UPDATED | ZEND_ACC_LINKED | ZEND_ACC_RESOLVED_PARENT | ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  314|    348|#define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
  ------------------
              	class_entry->ce_flags = orig_class_entry->ce_flags | ce_flags | ZEND_ACC_CONSTANTS_UPDATED | ZEND_ACC_LINKED | ZEND_ACC_RESOLVED_PARENT | ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  317|    348|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
 3508|    348|	class_entry->info.internal.module = EG(current_module);
  ------------------
  |  |   45|    348|# define EG(v) (executor_globals.v)
  ------------------
 3509|       |
 3510|    348|	if (class_entry->info.internal.builtin_functions) {
  ------------------
  |  Branch (3510:6): [True: 224, False: 124]
  ------------------
 3511|    224|		zend_register_functions(class_entry, class_entry->info.internal.builtin_functions, &class_entry->function_table, EG(current_module)->type);
  ------------------
  |  |   45|    224|# define EG(v) (executor_globals.v)
  ------------------
 3512|    224|	}
 3513|       |
 3514|    348|	lowercase_name = zend_string_tolower_ex(orig_class_entry->name, EG(current_module)->type == MODULE_PERSISTENT);
  ------------------
  |  |   45|    348|# define EG(v) (executor_globals.v)
  ------------------
              	lowercase_name = zend_string_tolower_ex(orig_class_entry->name, EG(current_module)->type == MODULE_PERSISTENT);
  ------------------
  |  |   63|    348|#define MODULE_PERSISTENT 1
  ------------------
 3515|    348|	lowercase_name = zend_new_interned_string(lowercase_name);
 3516|    348|	zend_hash_update_ptr(CG(class_table), lowercase_name, class_entry);
  ------------------
  |  |   35|    348|# define CG(v) (compiler_globals.v)
  ------------------
 3517|    348|	zend_string_release_ex(lowercase_name, 1);
 3518|       |
 3519|    348|	if (class_entry->__tostring && !zend_string_equals_literal(class_entry->name, "Stringable")
  ------------------
  |  |  407|    384|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
  |  Branch (3519:6): [True: 36, False: 312]
  |  Branch (3519:33): [True: 34, False: 2]
  ------------------
 3520|     34|			&& !(class_entry->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  282|     34|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (3520:7): [True: 34, False: 0]
  ------------------
 3521|     34|		ZEND_ASSERT(zend_ce_stringable
  ------------------
  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3521:3): [True: 0, False: 34]
  |  Branch (3521:3): [True: 0, False: 0]
  |  Branch (3521:3): [True: 34, False: 0]
  |  Branch (3521:3): [True: 34, False: 0]
  ------------------
 3522|     34|			&& "Should be registered before first class using __toString()");
 3523|     34|		zend_do_implement_interface(class_entry, zend_ce_stringable);
 3524|     34|	}
 3525|    348|	return class_entry;
 3526|    348|}
zend_API.c:zend_disable_function:
 3635|     72|{
 3636|     72|	if (UNEXPECTED(
  ------------------
  |  |  457|    532|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 72]
  |  |  |  Branch (457:52): [True: 8, False: 64]
  |  |  |  Branch (457:52): [True: 0, False: 8]
  |  |  |  Branch (457:52): [True: 0, False: 72]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 20, False: 52]
  |  |  |  Branch (457:52): [True: 0, False: 20]
  |  |  ------------------
  ------------------
 3637|     72|		(function_name_length == strlen("exit") && !memcmp(function_name, "exit", strlen("exit")))
 3638|     72|		|| (function_name_length == strlen("die") && !memcmp(function_name, "die", strlen("die")))
 3639|     72|		|| (function_name_length == strlen("clone") && !memcmp(function_name, "clone", strlen("clone")))
 3640|     72|	)) {
 3641|      0|		zend_error(E_WARNING, "Cannot disable function %s()", function_name);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 3642|      0|		return;
 3643|      0|	}
 3644|     72|	zend_hash_str_del(CG(function_table), function_name, function_name_length);
  ------------------
  |  |   35|     72|# define CG(v) (compiler_globals.v)
  ------------------
 3645|     72|}
zend_API.c:zend_is_callable_check_func:
 3796|  6.46k|{
 3797|  6.46k|	zend_class_entry *ce_org = fcc->calling_scope;
 3798|  6.46k|	bool retval = false;
 3799|  6.46k|	zend_string *mname, *cname;
 3800|  6.46k|	zend_string *lmname;
 3801|  6.46k|	const char *colon;
 3802|  6.46k|	size_t clen;
 3803|  6.46k|	HashTable *ftable;
 3804|  6.46k|	int call_via_handler = 0;
 3805|  6.46k|	zend_class_entry *scope;
 3806|  6.46k|	zval *zv;
 3807|  6.46k|	ALLOCA_FLAG(use_heap)
 3808|       |
 3809|  6.46k|	fcc->calling_scope = NULL;
 3810|       |
 3811|  6.46k|	if (!ce_org) {
  ------------------
  |  Branch (3811:6): [True: 450, False: 6.01k]
  ------------------
 3812|    450|		zend_function *func;
 3813|    450|		zend_string *lmname;
 3814|       |
 3815|       |		/* Check if function with given name exists.
 3816|       |		 * This may be a compound name that includes namespace name */
 3817|    450|		if (UNEXPECTED(Z_STRVAL_P(callable)[0] == '\\')) {
  ------------------
  |  |  457|    450|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 450]
  |  |  ------------------
  ------------------
 3818|       |			/* Skip leading \ */
 3819|      0|			ZSTR_ALLOCA_ALLOC(lmname, Z_STRLEN_P(callable) - 1, use_heap);
  ------------------
  |  |  125|      0|#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap) do { \
  |  |  126|      0|	(str) = (zend_string *)do_alloca(ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(_len), 8), (use_heap)); \
  |  |  ------------------
  |  |  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|      0|	GC_SET_REFCOUNT(str, 1); \
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  |  128|      0|	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|      0|	ZSTR_H(str) = 0; \
  |  |  ------------------
  |  |  |  |   69|      0|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  130|      0|	ZSTR_LEN(str) = _len; \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  131|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (131:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3820|      0|			zend_str_tolower_copy(ZSTR_VAL(lmname), Z_STRVAL_P(callable) + 1, Z_STRLEN_P(callable) - 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lmname), Z_STRVAL_P(callable) + 1, Z_STRLEN_P(callable) - 1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lmname), Z_STRVAL_P(callable) + 1, Z_STRLEN_P(callable) - 1);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3821|      0|			func = zend_fetch_function(lmname);
 3822|      0|			ZSTR_ALLOCA_FREE(lmname, use_heap);
  ------------------
  |  |  139|      0|#define ZSTR_ALLOCA_FREE(str, use_heap) free_alloca(str, use_heap)
  |  |  ------------------
  |  |  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3823|    450|		} else {
 3824|    450|			lmname = Z_STR_P(callable);
  ------------------
  |  |  982|    450|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    450|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3825|    450|			func = zend_fetch_function(lmname);
 3826|    450|			if (!func) {
  ------------------
  |  Branch (3826:8): [True: 25, False: 425]
  ------------------
 3827|     25|				ZSTR_ALLOCA_ALLOC(lmname, Z_STRLEN_P(callable), use_heap);
  ------------------
  |  |  125|     25|#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap) do { \
  |  |  126|     25|	(str) = (zend_string *)do_alloca(ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(_len), 8), (use_heap)); \
  |  |  ------------------
  |  |  |  |  247|     25|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|     25|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|     25|	GC_SET_REFCOUNT(str, 1); \
  |  |  ------------------
  |  |  |  |  717|     25|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  |  128|     25|	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  775|     25|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  806|     25|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     25|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     25|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     25|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|     25|	ZSTR_H(str) = 0; \
  |  |  ------------------
  |  |  |  |   69|     25|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  130|     25|	ZSTR_LEN(str) = _len; \
  |  |  ------------------
  |  |  |  |   68|     25|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  131|     25|} while (0)
  |  |  ------------------
  |  |  |  Branch (131:10): [Folded, False: 25]
  |  |  ------------------
  ------------------
 3828|     25|				zend_str_tolower_copy(ZSTR_VAL(lmname), Z_STRVAL_P(callable), Z_STRLEN_P(callable));
  ------------------
  |  |   67|     25|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_str_tolower_copy(ZSTR_VAL(lmname), Z_STRVAL_P(callable), Z_STRLEN_P(callable));
  ------------------
  |  |  985|     25|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     25|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     25|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_str_tolower_copy(ZSTR_VAL(lmname), Z_STRVAL_P(callable), Z_STRLEN_P(callable));
  ------------------
  |  |  988|     25|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     25|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     25|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3829|     25|				func = zend_fetch_function(lmname);
 3830|     25|				ZSTR_ALLOCA_FREE(lmname, use_heap);
  ------------------
  |  |  139|     25|#define ZSTR_ALLOCA_FREE(str, use_heap) free_alloca(str, use_heap)
  |  |  ------------------
  |  |  |  |  248|     25|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     25|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3831|     25|			}
 3832|    450|		}
 3833|    450|		if (EXPECTED(func != NULL)) {
  ------------------
  |  |  456|    450|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 433, False: 17]
  |  |  ------------------
  ------------------
 3834|    433|			fcc->function_handler = func;
 3835|    433|			return 1;
 3836|    433|		}
 3837|    450|	}
 3838|       |
 3839|       |	/* Split name into class/namespace and method/function names */
 3840|  6.02k|	if ((colon = zend_memrchr(Z_STRVAL_P(callable), ':', Z_STRLEN_P(callable))) != NULL &&
  ------------------
  |  |  985|  6.02k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  6.02k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  6.02k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if ((colon = zend_memrchr(Z_STRVAL_P(callable), ':', Z_STRLEN_P(callable))) != NULL &&
  ------------------
  |  |  988|  6.02k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  6.02k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  6.02k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3840:6): [True: 8, False: 6.01k]
  ------------------
 3841|  6.02k|		colon > Z_STRVAL_P(callable) &&
  ------------------
  |  |  985|  6.02k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      8|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  6.03k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3841:3): [True: 8, False: 0]
  ------------------
 3842|      8|		*(colon-1) == ':'
  ------------------
  |  Branch (3842:3): [True: 8, False: 0]
  ------------------
 3843|  6.02k|	) {
 3844|      8|		size_t mlen;
 3845|       |
 3846|      8|		colon--;
 3847|      8|		clen = colon - Z_STRVAL_P(callable);
  ------------------
  |  |  985|      8|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      8|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3848|      8|		mlen = Z_STRLEN_P(callable) - clen - 2;
  ------------------
  |  |  988|      8|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      8|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3849|       |
 3850|      8|		if (colon == Z_STRVAL_P(callable)) {
  ------------------
  |  |  985|      8|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      8|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3850:7): [True: 0, False: 8]
  ------------------
 3851|      0|			if (error) *error = estrdup("invalid function name");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3851:8): [True: 0, False: 0]
  ------------------
 3852|      0|			return 0;
 3853|      0|		}
 3854|       |
 3855|       |		/* This is a compound name.
 3856|       |		 * Try to fetch class and then find static method. */
 3857|      8|		if (ce_org) {
  ------------------
  |  Branch (3857:7): [True: 0, False: 8]
  ------------------
 3858|      0|			scope = ce_org;
 3859|      8|		} else {
 3860|      8|			scope = get_scope(frame);
 3861|      8|		}
 3862|       |
 3863|      8|		cname = zend_string_init_interned(Z_STRVAL_P(callable), clen, 0);
  ------------------
  |  |  985|      8|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      8|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3864|      8|		if (ZSTR_HAS_CE_CACHE(cname) && ZSTR_GET_CE_CACHE(cname)) {
  ------------------
  |  |  862|     16|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|      8|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|      8|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|      8|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 8]
  |  |  ------------------
  ------------------
              		if (ZSTR_HAS_CE_CACHE(cname) && ZSTR_GET_CE_CACHE(cname)) {
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:2): [True: 0, False: 0]
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3865|      0|			fcc->calling_scope = ZSTR_GET_CE_CACHE(cname);
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3866|      0|			if (scope && !fcc->object) {
  ------------------
  |  Branch (3866:8): [True: 0, False: 0]
  |  Branch (3866:17): [True: 0, False: 0]
  ------------------
 3867|      0|				zend_object *object = zend_get_this_object(frame);
 3868|       |
 3869|      0|				if (object &&
  ------------------
  |  Branch (3869:9): [True: 0, False: 0]
  ------------------
 3870|      0|				    instanceof_function(object->ce, scope) &&
  ------------------
  |  Branch (3870:9): [True: 0, False: 0]
  ------------------
 3871|      0|				    instanceof_function(scope, fcc->calling_scope)) {
  ------------------
  |  Branch (3871:9): [True: 0, False: 0]
  ------------------
 3872|      0|					fcc->object = object;
 3873|      0|					fcc->called_scope = object->ce;
 3874|      0|				} else {
 3875|      0|					fcc->called_scope = fcc->calling_scope;
 3876|      0|				}
 3877|      0|			} else {
 3878|      0|				fcc->called_scope = fcc->object ? fcc->object->ce : fcc->calling_scope;
  ------------------
  |  Branch (3878:25): [True: 0, False: 0]
  ------------------
 3879|      0|			}
 3880|      0|			strict_class = true;
 3881|      8|		} else if (!zend_is_callable_check_class(cname, scope, frame, fcc, &strict_class, error, suppress_deprecation || ce_org != NULL)) {
  ------------------
  |  Branch (3881:14): [True: 2, False: 6]
  |  Branch (3881:92): [True: 4, False: 4]
  |  Branch (3881:116): [True: 0, False: 4]
  ------------------
 3882|      2|			zend_string_release_ex(cname, 0);
 3883|      2|			return 0;
 3884|      2|		}
 3885|      6|		zend_string_release_ex(cname, 0);
 3886|       |
 3887|      6|		ftable = &fcc->calling_scope->function_table;
 3888|      6|		if (ce_org && !instanceof_function(ce_org, fcc->calling_scope)) {
  ------------------
  |  Branch (3888:7): [True: 0, False: 6]
  |  Branch (3888:17): [True: 0, False: 0]
  ------------------
 3889|      0|			if (error) zend_spprintf(error, 0, "class %s is not a subclass of %s", ZSTR_VAL(ce_org->name), ZSTR_VAL(fcc->calling_scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			if (error) zend_spprintf(error, 0, "class %s is not a subclass of %s", ZSTR_VAL(ce_org->name), ZSTR_VAL(fcc->calling_scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3889:8): [True: 0, False: 0]
  ------------------
 3890|      0|			return 0;
 3891|      0|		}
 3892|      6|		if (ce_org && !suppress_deprecation) {
  ------------------
  |  Branch (3892:7): [True: 0, False: 6]
  |  Branch (3892:17): [True: 0, False: 0]
  ------------------
 3893|      0|			zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 3894|      0|				"Callables of the form [\"%s\", \"%s\"] are deprecated",
 3895|      0|				ZSTR_VAL(ce_org->name), Z_STRVAL_P(callable));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce_org->name), Z_STRVAL_P(callable));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3896|      0|		}
 3897|      6|		mname = zend_string_init(Z_STRVAL_P(callable) + clen + 2, mlen, 0);
  ------------------
  |  |  985|      6|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      6|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3898|  6.01k|	} else if (ce_org) {
  ------------------
  |  Branch (3898:13): [True: 6.01k, False: 9]
  ------------------
 3899|       |		/* Try to fetch find static method of given class. */
 3900|  6.01k|		mname = Z_STR_P(callable);
  ------------------
  |  |  982|  6.01k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  6.01k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3901|  6.01k|		zend_string_addref(mname);
 3902|  6.01k|		ftable = &ce_org->function_table;
 3903|  6.01k|		fcc->calling_scope = ce_org;
 3904|  6.01k|	} else {
 3905|       |		/* We already checked for plain function before. */
 3906|      9|		if (error) {
  ------------------
  |  Branch (3906:7): [True: 7, False: 2]
  ------------------
 3907|      7|			zend_spprintf(error, 0, "function \"%s\" not found or invalid function name", Z_STRVAL_P(callable));
  ------------------
  |  |  985|      7|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      7|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3908|      7|		}
 3909|      9|		return 0;
 3910|      9|	}
 3911|       |
 3912|  6.01k|	lmname = zend_string_tolower(mname);
 3913|  6.01k|	if (strict_class &&
  ------------------
  |  Branch (3913:6): [True: 14, False: 6.00k]
  ------------------
 3914|     14|	    fcc->calling_scope &&
  ------------------
  |  Branch (3914:6): [True: 14, False: 0]
  ------------------
 3915|     14|		zend_string_equals_literal(lmname, ZEND_CONSTRUCTOR_FUNC_NAME)) {
  ------------------
  |  |  407|     14|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 14]
  |  |  ------------------
  ------------------
 3916|      0|		fcc->function_handler = fcc->calling_scope->constructor;
 3917|      0|		if (fcc->function_handler) {
  ------------------
  |  Branch (3917:7): [True: 0, False: 0]
  ------------------
 3918|      0|			retval = true;
 3919|      0|		}
 3920|  6.01k|	} else if ((zv = zend_hash_find(ftable, lmname)) != NULL) {
  ------------------
  |  Branch (3920:13): [True: 4.66k, False: 1.35k]
  ------------------
 3921|  4.66k|		fcc->function_handler = Z_PTR_P(zv);
  ------------------
  |  | 1053|  4.66k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  4.66k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3922|  4.66k|		retval = true;
 3923|  4.66k|		if ((fcc->function_handler->op_array.fn_flags & ZEND_ACC_CHANGED) &&
  ------------------
  |  |  224|  4.66k|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
  |  Branch (3923:7): [True: 0, False: 4.66k]
  ------------------
 3924|      0|		    !strict_class) {
  ------------------
  |  Branch (3924:7): [True: 0, False: 0]
  ------------------
 3925|      0|			scope = get_scope(frame);
 3926|      0|			if (scope &&
  ------------------
  |  Branch (3926:8): [True: 0, False: 0]
  ------------------
 3927|      0|			    instanceof_function(fcc->function_handler->common.scope, scope)) {
  ------------------
  |  Branch (3927:8): [True: 0, False: 0]
  ------------------
 3928|       |
 3929|      0|				zv = zend_hash_find(&scope->function_table, lmname);
 3930|      0|				if (zv != NULL) {
  ------------------
  |  Branch (3930:9): [True: 0, False: 0]
  ------------------
 3931|      0|					zend_function *priv_fbc = Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3932|       |
 3933|      0|					if ((priv_fbc->common.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (3933:10): [True: 0, False: 0]
  ------------------
 3934|      0|					 && priv_fbc->common.scope == scope) {
  ------------------
  |  Branch (3934:10): [True: 0, False: 0]
  ------------------
 3935|      0|						fcc->function_handler = priv_fbc;
 3936|      0|					}
 3937|      0|				}
 3938|      0|			}
 3939|      0|		}
 3940|  4.66k|		if (!(fcc->function_handler->common.fn_flags & ZEND_ACC_PUBLIC) &&
  ------------------
  |  |  219|  4.66k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (3940:7): [True: 0, False: 4.66k]
  ------------------
 3941|      0|		    (fcc->calling_scope &&
  ------------------
  |  Branch (3941:8): [True: 0, False: 0]
  ------------------
 3942|      0|		     ((fcc->object && fcc->calling_scope->__call) ||
  ------------------
  |  Branch (3942:10): [True: 0, False: 0]
  |  Branch (3942:25): [True: 0, False: 0]
  ------------------
 3943|      0|		      (!fcc->object && fcc->calling_scope->__callstatic)))) {
  ------------------
  |  Branch (3943:10): [True: 0, False: 0]
  |  Branch (3943:26): [True: 0, False: 0]
  ------------------
 3944|      0|			scope = get_scope(frame);
 3945|      0|			ZEND_ASSERT(!(fcc->function_handler->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3945:4): [True: 0, False: 0]
  |  Branch (3945:4): [True: 0, False: 0]
  ------------------
 3946|      0|			if (!zend_check_method_accessible(fcc->function_handler, scope)) {
  ------------------
  |  Branch (3946:8): [True: 0, False: 0]
  ------------------
 3947|      0|				retval = false;
 3948|      0|				fcc->function_handler = NULL;
 3949|      0|				goto get_function_via_handler;
 3950|      0|			}
 3951|      0|		}
 3952|  4.66k|	} else {
 3953|  1.35k|get_function_via_handler:
 3954|  1.35k|		if (fcc->object && fcc->calling_scope == ce_org) {
  ------------------
  |  Branch (3954:7): [True: 1.35k, False: 0]
  |  Branch (3954:22): [True: 1.35k, False: 0]
  ------------------
 3955|  1.35k|			if (strict_class && ce_org->__call) {
  ------------------
  |  Branch (3955:8): [True: 0, False: 1.35k]
  |  Branch (3955:24): [True: 0, False: 0]
  ------------------
 3956|      0|				fcc->function_handler = zend_get_call_trampoline_func(ce_org->__call, mname);
 3957|      0|				call_via_handler = 1;
 3958|      0|				retval = true;
 3959|  1.35k|			} else {
 3960|  1.35k|				fcc->function_handler = fcc->object->handlers->get_method(&fcc->object, mname, NULL);
 3961|  1.35k|				if (fcc->function_handler) {
  ------------------
  |  Branch (3961:9): [True: 1.35k, False: 4]
  ------------------
 3962|  1.35k|					if (strict_class &&
  ------------------
  |  Branch (3962:10): [True: 0, False: 1.35k]
  ------------------
 3963|      0|					    (!fcc->function_handler->common.scope ||
  ------------------
  |  Branch (3963:11): [True: 0, False: 0]
  ------------------
 3964|      0|					     !instanceof_function(ce_org, fcc->function_handler->common.scope))) {
  ------------------
  |  Branch (3964:11): [True: 0, False: 0]
  ------------------
 3965|      0|						zend_release_fcall_info_cache(fcc);
 3966|  1.35k|					} else {
 3967|  1.35k|						retval = true;
 3968|  1.35k|						call_via_handler = (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) != 0;
  ------------------
  |  |  372|  1.35k|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
 3969|  1.35k|					}
 3970|  1.35k|				}
 3971|  1.35k|			}
 3972|  1.35k|		} else if (fcc->calling_scope) {
  ------------------
  |  Branch (3972:14): [True: 0, False: 0]
  ------------------
 3973|      0|			if (fcc->calling_scope->get_static_method) {
  ------------------
  |  Branch (3973:8): [True: 0, False: 0]
  ------------------
 3974|      0|				fcc->function_handler = fcc->calling_scope->get_static_method(fcc->calling_scope, mname);
 3975|      0|			} else {
 3976|      0|				fcc->function_handler = zend_std_get_static_method(fcc->calling_scope, mname, NULL);
 3977|      0|			}
 3978|      0|			if (fcc->function_handler) {
  ------------------
  |  Branch (3978:8): [True: 0, False: 0]
  ------------------
 3979|      0|				retval = true;
 3980|      0|				call_via_handler = (fcc->function_handler->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) != 0;
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
 3981|      0|				if (call_via_handler && !fcc->object) {
  ------------------
  |  Branch (3981:9): [True: 0, False: 0]
  |  Branch (3981:29): [True: 0, False: 0]
  ------------------
 3982|      0|					zend_object *object = zend_get_this_object(frame);
 3983|      0|					if (object &&
  ------------------
  |  Branch (3983:10): [True: 0, False: 0]
  ------------------
 3984|      0|					    instanceof_function(object->ce, fcc->calling_scope)) {
  ------------------
  |  Branch (3984:10): [True: 0, False: 0]
  ------------------
 3985|      0|						fcc->object = object;
 3986|      0|					}
 3987|      0|				}
 3988|      0|			}
 3989|      0|		}
 3990|  1.35k|	}
 3991|       |
 3992|  6.01k|	if (retval) {
  ------------------
  |  Branch (3992:6): [True: 6.01k, False: 4]
  ------------------
 3993|  6.01k|		if (fcc->calling_scope && !call_via_handler) {
  ------------------
  |  Branch (3993:7): [True: 6.01k, False: 0]
  |  Branch (3993:29): [True: 4.66k, False: 1.35k]
  ------------------
 3994|  4.66k|			if (fcc->function_handler->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|  4.66k|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (3994:8): [True: 0, False: 4.66k]
  ------------------
 3995|      0|				retval = false;
 3996|      0|				if (error) {
  ------------------
  |  Branch (3996:9): [True: 0, False: 0]
  ------------------
 3997|      0|					zend_spprintf(error, 0, "cannot call abstract method %s::%s()", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->function_handler->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					zend_spprintf(error, 0, "cannot call abstract method %s::%s()", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->function_handler->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3998|      0|				}
 3999|  4.66k|			} else if (!fcc->object && !(fcc->function_handler->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|     12|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (3999:15): [True: 12, False: 4.64k]
  |  Branch (3999:31): [True: 2, False: 10]
  ------------------
 4000|      2|				retval = false;
 4001|      2|				if (error) {
  ------------------
  |  Branch (4001:9): [True: 1, False: 1]
  ------------------
 4002|      1|					zend_spprintf(error, 0, "non-static method %s::%s() cannot be called statically", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->function_handler->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					zend_spprintf(error, 0, "non-static method %s::%s() cannot be called statically", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->function_handler->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4003|      1|				}
 4004|      2|			}
 4005|  4.66k|			if (retval
  ------------------
  |  Branch (4005:8): [True: 4.65k, False: 2]
  ------------------
 4006|  4.65k|			 && !(fcc->function_handler->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|  4.65k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4006:8): [True: 0, False: 4.65k]
  ------------------
 4007|      0|				scope = get_scope(frame);
 4008|      0|				ZEND_ASSERT(!(fcc->function_handler->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4008:5): [True: 0, False: 0]
  |  Branch (4008:5): [True: 0, False: 0]
  ------------------
 4009|      0|				if (!zend_check_method_accessible(fcc->function_handler, scope)) {
  ------------------
  |  Branch (4009:9): [True: 0, False: 0]
  ------------------
 4010|      0|					if (error) {
  ------------------
  |  Branch (4010:10): [True: 0, False: 0]
  ------------------
 4011|      0|						if (*error) {
  ------------------
  |  Branch (4011:11): [True: 0, False: 0]
  ------------------
 4012|      0|							efree(*error);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4013|      0|						}
 4014|      0|						zend_spprintf(error, 0, "cannot access %s method %s::%s()", zend_visibility_string(fcc->function_handler->common.fn_flags), ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->function_handler->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						zend_spprintf(error, 0, "cannot access %s method %s::%s()", zend_visibility_string(fcc->function_handler->common.fn_flags), ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(fcc->function_handler->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4015|      0|					}
 4016|      0|					retval = false;
 4017|      0|				}
 4018|      0|			}
 4019|  4.66k|		}
 4020|  6.01k|	} else if (error) {
  ------------------
  |  Branch (4020:13): [True: 2, False: 2]
  ------------------
 4021|      2|		if (fcc->calling_scope) {
  ------------------
  |  Branch (4021:7): [True: 2, False: 0]
  ------------------
 4022|      2|			zend_spprintf(error, 0, "class %s does not have a method \"%s\"", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(mname));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_spprintf(error, 0, "class %s does not have a method \"%s\"", ZSTR_VAL(fcc->calling_scope->name), ZSTR_VAL(mname));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4023|      2|		} else {
 4024|      0|			zend_spprintf(error, 0, "function %s() does not exist", ZSTR_VAL(mname));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4025|      0|		}
 4026|      2|	}
 4027|  6.01k|	zend_string_release_ex(lmname, 0);
 4028|  6.01k|	zend_string_release_ex(mname, 0);
 4029|       |
 4030|  6.01k|	if (fcc->object) {
  ------------------
  |  Branch (4030:6): [True: 6.00k, False: 12]
  ------------------
 4031|  6.00k|		fcc->called_scope = fcc->object->ce;
 4032|  6.00k|		if (fcc->function_handler
  ------------------
  |  Branch (4032:7): [True: 6.00k, False: 4]
  ------------------
 4033|  6.00k|		 && (fcc->function_handler->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|  6.00k|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (4033:7): [True: 0, False: 6.00k]
  ------------------
 4034|       |			fcc->object = NULL;
 4035|      0|		}
 4036|  6.00k|	}
 4037|  6.01k|	return retval;
 4038|  6.01k|}
zend_API.c:zend_is_callable_check_class:
 3688|     16|{
 3689|     16|	bool ret = false;
 3690|     16|	zend_class_entry *ce;
 3691|     16|	size_t name_len = ZSTR_LEN(name);
  ------------------
  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3692|     16|	zend_string *lcname;
 3693|     16|	ALLOCA_FLAG(use_heap);
 3694|       |
 3695|     16|	ZSTR_ALLOCA_ALLOC(lcname, name_len, use_heap);
  ------------------
  |  |  125|     16|#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap) do { \
  |  |  126|     16|	(str) = (zend_string *)do_alloca(ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(_len), 8), (use_heap)); \
  |  |  ------------------
  |  |  |  |  247|     16|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|     16|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|     16|	GC_SET_REFCOUNT(str, 1); \
  |  |  ------------------
  |  |  |  |  717|     16|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  |  128|     16|	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  775|     16|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  806|     16|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     16|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     16|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     16|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|     16|	ZSTR_H(str) = 0; \
  |  |  ------------------
  |  |  |  |   69|     16|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  130|     16|	ZSTR_LEN(str) = _len; \
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  131|     16|} while (0)
  |  |  ------------------
  |  |  |  Branch (131:10): [Folded, False: 16]
  |  |  ------------------
  ------------------
 3696|     16|	zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name), name_len);
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name), name_len);
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3697|       |
 3698|     16|	*strict_class = false;
 3699|     16|	if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  Branch (3699:6): [True: 0, False: 16]
  ------------------
 3700|      0|		if (!scope) {
  ------------------
  |  Branch (3700:7): [True: 0, False: 0]
  ------------------
 3701|      0|			if (error) *error = estrdup("cannot access \"self\" when no class scope is active");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3701:8): [True: 0, False: 0]
  ------------------
 3702|      0|		} else {
 3703|      0|			if (!suppress_deprecation) {
  ------------------
  |  Branch (3703:8): [True: 0, False: 0]
  ------------------
 3704|      0|				zend_error(E_DEPRECATED, "Use of \"self\" in callables is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 3705|      0|			}
 3706|      0|			fcc->called_scope = zend_get_called_scope(frame);
 3707|      0|			if (!fcc->called_scope || !instanceof_function(fcc->called_scope, scope)) {
  ------------------
  |  Branch (3707:8): [True: 0, False: 0]
  |  Branch (3707:30): [True: 0, False: 0]
  ------------------
 3708|      0|				fcc->called_scope = scope;
 3709|      0|			}
 3710|      0|			fcc->calling_scope = scope;
 3711|      0|			if (!fcc->object) {
  ------------------
  |  Branch (3711:8): [True: 0, False: 0]
  ------------------
 3712|      0|				fcc->object = zend_get_this_object(frame);
 3713|      0|			}
 3714|      0|			ret = true;
 3715|      0|		}
 3716|     16|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  Branch (3716:13): [True: 0, False: 16]
  ------------------
 3717|      0|		if (!scope) {
  ------------------
  |  Branch (3717:7): [True: 0, False: 0]
  ------------------
 3718|      0|			if (error) *error = estrdup("cannot access \"parent\" when no class scope is active");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3718:8): [True: 0, False: 0]
  ------------------
 3719|      0|		} else if (!scope->parent) {
  ------------------
  |  Branch (3719:14): [True: 0, False: 0]
  ------------------
 3720|      0|			if (error) *error = estrdup("cannot access \"parent\" when current class scope has no parent");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3720:8): [True: 0, False: 0]
  ------------------
 3721|      0|		} else {
 3722|      0|			if (!suppress_deprecation) {
  ------------------
  |  Branch (3722:8): [True: 0, False: 0]
  ------------------
 3723|      0|				zend_error(E_DEPRECATED, "Use of \"parent\" in callables is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 3724|      0|			}
 3725|      0|			fcc->called_scope = zend_get_called_scope(frame);
 3726|      0|			if (!fcc->called_scope || !instanceof_function(fcc->called_scope, scope->parent)) {
  ------------------
  |  Branch (3726:8): [True: 0, False: 0]
  |  Branch (3726:30): [True: 0, False: 0]
  ------------------
 3727|      0|				fcc->called_scope = scope->parent;
 3728|      0|			}
 3729|      0|			fcc->calling_scope = scope->parent;
 3730|      0|			if (!fcc->object) {
  ------------------
  |  Branch (3730:8): [True: 0, False: 0]
  ------------------
 3731|      0|				fcc->object = zend_get_this_object(frame);
 3732|      0|			}
 3733|      0|			*strict_class = true;
 3734|      0|			ret = true;
 3735|      0|		}
 3736|     16|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_STATIC))) {
  ------------------
  |  Branch (3736:13): [True: 0, False: 16]
  ------------------
 3737|      0|		zend_class_entry *called_scope = zend_get_called_scope(frame);
 3738|       |
 3739|      0|		if (!called_scope) {
  ------------------
  |  Branch (3739:7): [True: 0, False: 0]
  ------------------
 3740|      0|			if (error) *error = estrdup("cannot access \"static\" when no class scope is active");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3740:8): [True: 0, False: 0]
  ------------------
 3741|      0|		} else {
 3742|      0|			if (!suppress_deprecation) {
  ------------------
  |  Branch (3742:8): [True: 0, False: 0]
  ------------------
 3743|      0|				zend_error(E_DEPRECATED, "Use of \"static\" in callables is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 3744|      0|			}
 3745|      0|			fcc->called_scope = called_scope;
 3746|      0|			fcc->calling_scope = called_scope;
 3747|      0|			if (!fcc->object) {
  ------------------
  |  Branch (3747:8): [True: 0, False: 0]
  ------------------
 3748|      0|				fcc->object = zend_get_this_object(frame);
 3749|      0|			}
 3750|      0|			*strict_class = true;
 3751|      0|			ret = true;
 3752|      0|		}
 3753|     16|	} else if ((ce = zend_lookup_class(name)) != NULL) {
  ------------------
  |  Branch (3753:13): [True: 14, False: 2]
  ------------------
 3754|     14|		const zend_class_entry *frame_scope = get_scope(frame);
 3755|     14|		fcc->calling_scope = ce;
 3756|     14|		if (frame_scope && !fcc->object) {
  ------------------
  |  Branch (3756:7): [True: 2, False: 12]
  |  Branch (3756:22): [True: 2, False: 0]
  ------------------
 3757|      2|			zend_object *object = zend_get_this_object(frame);
 3758|       |
 3759|      2|			if (object &&
  ------------------
  |  Branch (3759:8): [True: 2, False: 0]
  ------------------
 3760|      2|			    instanceof_function(object->ce, frame_scope) &&
  ------------------
  |  Branch (3760:8): [True: 2, False: 0]
  ------------------
 3761|      2|			    instanceof_function(frame_scope, ce)) {
  ------------------
  |  Branch (3761:8): [True: 2, False: 0]
  ------------------
 3762|      2|				fcc->object = object;
 3763|      2|				fcc->called_scope = object->ce;
 3764|      2|			} else {
 3765|      0|				fcc->called_scope = ce;
 3766|      0|			}
 3767|     12|		} else {
 3768|     12|			fcc->called_scope = fcc->object ? fcc->object->ce : ce;
  ------------------
  |  Branch (3768:24): [True: 0, False: 12]
  ------------------
 3769|     12|		}
 3770|     14|		*strict_class = true;
 3771|     14|		ret = true;
 3772|     14|	} else {
 3773|      2|		if (error) zend_spprintf(error, 0, "class \"%.*s\" not found", (int)name_len, ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3773:7): [True: 1, False: 1]
  ------------------
 3774|      2|	}
 3775|     16|	ZSTR_ALLOCA_FREE(lcname, use_heap);
  ------------------
  |  |  139|     16|#define ZSTR_ALLOCA_FREE(str, use_heap) free_alloca(str, use_heap)
  |  |  ------------------
  |  |  |  |  248|     16|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     16|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3776|       |	/* User error handlers may throw from deprecations above; do not report callable as valid. */
 3777|     16|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 14]
  |  |  ------------------
  ------------------
 3778|      2|		return false;
 3779|      2|	}
 3780|     14|	return ret;
 3781|     16|}
zend_API.c:get_scope:
 3683|     30|{
 3684|     30|	return frame && frame->func ? frame->func->common.scope : NULL;
  ------------------
  |  Branch (3684:9): [True: 30, False: 0]
  |  Branch (3684:18): [True: 30, False: 0]
  ------------------
 3685|     30|}
zend_API.c:is_persistent_class:
 4422|  1.07k|static zend_always_inline bool is_persistent_class(const zend_class_entry *ce) {
 4423|  1.07k|	return ce->type == ZEND_INTERNAL_CLASS && ce->info.internal.module->type == MODULE_PERSISTENT;
  ------------------
  |  |   63|  1.40k|#define MODULE_PERSISTENT 1
  ------------------
  |  Branch (4423:9): [True: 330, False: 749]
  |  Branch (4423:44): [True: 330, False: 0]
  ------------------
 4424|  1.07k|}
zend_API.c:zend_normalize_internal_type:
 2908|    148|static zend_always_inline void zend_normalize_internal_type(zend_type *type) {
 2909|    148|	ZEND_ASSERT(!ZEND_TYPE_HAS_LITERAL_NAME(*type));
  ------------------
  |  |  112|    148|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2909:2): [True: 0, False: 148]
  |  Branch (2909:2): [True: 148, False: 0]
  ------------------
 2910|    148|	if (ZEND_TYPE_PURE_MASK(*type) != MAY_BE_ANY) {
  ------------------
  |  |  264|    148|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    148|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_PURE_MASK(*type) != MAY_BE_ANY) {
  ------------------
  |  |   34|    148|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    148|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    148|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    148|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    148|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    148|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    148|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    148|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    148|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    148|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    148|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    148|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    148|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    148|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    148|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    148|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    148|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    148|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    148|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2910:6): [True: 142, False: 6]
  ------------------
 2911|    142|		ZEND_ASSERT(!ZEND_TYPE_CONTAINS_CODE(*type, IS_RESOURCE) && "resource is not allowed in a zend_type");
  ------------------
  |  |  112|    142|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2911:3): [True: 0, False: 142]
  |  Branch (2911:3): [True: 0, False: 0]
  |  Branch (2911:3): [True: 142, False: 0]
  |  Branch (2911:3): [True: 142, False: 0]
  ------------------
 2912|    142|	}
 2913|    148|	zend_type *current;
 2914|    296|	ZEND_TYPE_FOREACH_MUTABLE(*type, current) {
  ------------------
  |  |  228|    148|#define ZEND_TYPE_FOREACH_MUTABLE(type, type_ptr) do { \
  |  |  229|    148|	zend_type *_cur; \
  |  |  230|    148|	const zend_type *_end; \
  |  |  231|    148|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|    148|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    148|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 0, False: 148]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  232|      0|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|      0|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  233|      0|		_cur = _list->types; \
  |  |  234|      0|		_end = _cur + _list->num_types; \
  |  |  235|    148|	} else { \
  |  |  236|    148|		_cur = &(type); \
  |  |  237|    148|		_end = _cur + 1; \
  |  |  238|    148|	} \
  |  |  239|    148|	do { \
  |  |  240|    148|		type_ptr = _cur;
  ------------------
 2915|    296|		if (ZEND_TYPE_HAS_NAME(*current)) {
  ------------------
  |  |  160|    148|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|    148|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 18, False: 130]
  |  |  ------------------
  ------------------
 2916|     18|			zend_string *name = zend_new_interned_string(ZEND_TYPE_NAME(*current));
  ------------------
  |  |  184|     18|	((zend_string *) (t).ptr)
  ------------------
 2917|     18|			zend_alloc_ce_cache(name);
 2918|     18|			ZEND_TYPE_SET_PTR(*current, name);
  ------------------
  |  |  247|     18|	((t).ptr = (_ptr))
  ------------------
 2919|    130|		} else if (ZEND_TYPE_HAS_LIST(*current)) {
  ------------------
  |  |  166|    130|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|    130|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 0, False: 130]
  |  |  ------------------
  ------------------
 2920|      0|			zend_type *inner;
 2921|      0|			ZEND_TYPE_FOREACH_MUTABLE(*current, inner) {
  ------------------
  |  |  228|      0|#define ZEND_TYPE_FOREACH_MUTABLE(type, type_ptr) do { \
  |  |  229|      0|	zend_type *_cur; \
  |  |  230|      0|	const zend_type *_end; \
  |  |  231|      0|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|      0|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  232|      0|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|      0|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  233|      0|		_cur = _list->types; \
  |  |  234|      0|		_end = _cur + _list->num_types; \
  |  |  235|      0|	} else { \
  |  |  236|      0|		_cur = &(type); \
  |  |  237|      0|		_end = _cur + 1; \
  |  |  238|      0|	} \
  |  |  239|      0|	do { \
  |  |  240|      0|		type_ptr = _cur;
  ------------------
 2922|      0|				ZEND_ASSERT(!ZEND_TYPE_HAS_LITERAL_NAME(*inner) && !ZEND_TYPE_HAS_LIST(*inner));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2922:5): [True: 0, False: 0]
  |  Branch (2922:5): [True: 0, False: 0]
  |  Branch (2922:5): [True: 0, False: 0]
  |  Branch (2922:5): [True: 0, False: 0]
  ------------------
 2923|      0|				if (ZEND_TYPE_HAS_NAME(*inner)) {
  ------------------
  |  |  160|      0|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|      0|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2924|      0|					zend_string *name = zend_new_interned_string(ZEND_TYPE_NAME(*inner));
  ------------------
  |  |  184|      0|	((zend_string *) (t).ptr)
  ------------------
 2925|      0|					zend_alloc_ce_cache(name);
 2926|      0|					ZEND_TYPE_SET_PTR(*inner, name);
  ------------------
  |  |  247|      0|	((t).ptr = (_ptr))
  ------------------
 2927|      0|				}
 2928|      0|			} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|      0|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  244|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2929|      0|		}
 2930|    296|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|    148|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 0, False: 148]
  |  |  ------------------
  |  |  244|    148|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 148]
  |  |  ------------------
  ------------------
 2931|    148|}
zend_API.c:get_default_via_ast:
 5224|      1|static zend_result get_default_via_ast(zval *default_value_zval, const char *default_value) {
 5225|      1|	zend_ast *ast;
 5226|      1|	zend_arena *ast_arena;
 5227|       |
 5228|      1|	zend_string *code = zend_string_concat3(
 5229|      1|		"<?php ", sizeof("<?php ") - 1, default_value, strlen(default_value), ";", 1);
 5230|       |
 5231|      1|	ast = zend_compile_string_to_ast(code, &ast_arena, ZSTR_EMPTY_ALLOC());
 5232|      1|	zend_string_release(code);
 5233|       |
 5234|      1|	if (!ast) {
  ------------------
  |  Branch (5234:6): [True: 0, False: 1]
  ------------------
 5235|      0|		return FAILURE;
 5236|      0|	}
 5237|       |
 5238|      1|	zend_ast_list *statement_list = zend_ast_get_list(ast);
 5239|      1|	zend_ast **const_expr_ast_ptr = &statement_list->child[0];
 5240|       |
 5241|      1|	zend_arena *original_ast_arena = CG(ast_arena);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5242|      1|	uint32_t original_compiler_options = CG(compiler_options);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5243|      1|	zend_file_context original_file_context;
 5244|      1|	CG(ast_arena) = ast_arena;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5245|       |	/* Disable constant substitution, to make getDefaultValueConstant() work. */
 5246|      1|	CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION | ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION | ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION;
  ------------------
  |  | 1280|      1|#define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION   (1<<6)
  ------------------
              	CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION | ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION;
  ------------------
  |  | 1283|      1|#define ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION	(1<<8)
  ------------------
 5247|      1|	zend_file_context_begin(&original_file_context);
 5248|      1|	zend_const_expr_to_zval(default_value_zval, const_expr_ast_ptr, /* allow_dynamic */ true);
 5249|      1|	CG(ast_arena) = original_ast_arena;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5250|      1|	CG(compiler_options) = original_compiler_options;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5251|      1|	zend_file_context_end(&original_file_context);
 5252|       |
 5253|      1|	zend_ast_destroy(ast);
 5254|      1|	zend_arena_destroy(ast_arena);
 5255|       |
 5256|      1|	return SUCCESS;
 5257|      1|}

php_date.c:zend_parse_arg_str:
 2329|    665|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    665|}
php_date.c:zend_parse_arg_str_ex:
 2312|    665|{
 2313|    665|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    665|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 653, False: 12]
  |  |  ------------------
  ------------------
 2314|    653|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    653|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    653|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    653|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 12]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|     12|	} else {
 2318|     12|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 12]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|     12|		} else {
 2321|     12|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|     12|		}
 2323|     12|		return *dest != NULL;
 2324|     12|	}
 2325|    653|	return true;
 2326|    665|}
php_date.c:zend_parse_arg_long:
 2266|      6|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|      6|}
php_date.c:zend_parse_arg_long_ex:
 2246|      6|{
 2247|      6|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 4, False: 2]
  ------------------
 2248|      4|		*is_null = 0;
 2249|      4|	}
 2250|      6|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
 2251|      5|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|      5|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 1]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      1|	} else {
 2256|      1|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 1]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      1|		} else {
 2259|      1|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      1|		}
 2261|      1|	}
 2262|      5|	return 1;
 2263|      6|}
php_date.c:zend_parse_arg_string:
 2334|    634|{
 2335|    634|	zend_string *str;
 2336|       |
 2337|    634|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 634]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|    634|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 634]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|    634|	} else {
 2344|    634|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|    634|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|    634|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|    634|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|    634|	}
 2347|    634|	return 1;
 2348|    634|}
php_date.c:zend_parse_arg_object:
 2451|     25|{
 2452|     25|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     50|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 25]
  |  |  ------------------
  ------------------
 2453|      0|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2453:7): [True: 0, False: 0]
  ------------------
 2454|      0|		*dest = arg;
 2455|     25|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|     25|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 25, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2455:13): [True: 25, False: 0]
  ------------------
 2456|     25|		*dest = NULL;
 2457|     25|	} else {
 2458|      0|		return 0;
 2459|      0|	}
 2460|     25|	return 1;
 2461|     25|}
php_date.c:zend_parse_arg_array_ht:
 2405|      1|{
 2406|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2407|      1|		*dest = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|      1|	} else if (or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2408:13): [True: 0, False: 0]
  ------------------
 2409|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2410|      0|		if (separate
  ------------------
  |  Branch (2410:7): [True: 0, False: 0]
  ------------------
 2411|      0|		 && zobj->properties
  ------------------
  |  Branch (2411:7): [True: 0, False: 0]
  ------------------
 2412|      0|		 && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2413|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2415|      0|			}
 2416|      0|			zobj->properties = zend_array_dup(zobj->properties);
 2417|      0|		}
 2418|      0|		*dest = zobj->handlers->get_properties(zobj);
 2419|      0|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2419:13): [True: 0, False: 0]
  ------------------
 2420|      0|		*dest = NULL;
 2421|      0|	} else {
 2422|      0|		return 0;
 2423|      0|	}
 2424|      1|	return 1;
 2425|      1|}
php_pcre.c:zend_try_array_init:
 1505|      1|{
 1506|      1|	return zend_try_array_init_size(zv, 0);
 1507|      1|}
php_pcre.c:zend_try_array_init_size:
 1486|      1|{
 1487|      1|	zend_array *arr = zend_new_array(size);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
 1488|       |
 1489|      1|	if (EXPECTED(Z_ISREF_P(zv))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1490|      1|		zend_reference *ref = Z_REF_P(zv);
  ------------------
  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 1491|      1|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1492|      0|			if (zend_try_assign_typed_ref_arr(ref, arr) == FAILURE) {
  ------------------
  |  Branch (1492:8): [True: 0, False: 0]
  ------------------
 1493|      0|				return NULL;
 1494|      0|			}
 1495|      0|			return &ref->val;
 1496|      0|		}
 1497|      1|		zv = &ref->val;
 1498|      1|	}
 1499|      1|	zval_ptr_safe_dtor(zv);
 1500|      1|	ZVAL_ARR(zv, arr);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1501|      1|	return zv;
 1502|      1|}
php_pcre.c:array_init_size:
  536|      2|{
  537|      2|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  538|      2|}
php_pcre.c:zend_parse_arg_str_ex:
 2312|    709|{
 2313|    709|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    709|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 708, False: 1]
  |  |  ------------------
  ------------------
 2314|    708|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    708|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    708|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    708|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 1]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      1|	} else {
 2318|      1|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 1]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      1|		} else {
 2321|      1|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      1|		}
 2323|      1|		return *dest != NULL;
 2324|      1|	}
 2325|    708|	return true;
 2326|    709|}
php_pcre.c:zend_parse_arg_array_ht_or_str:
 2544|     82|{
 2545|     82|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|     82|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 76, False: 6]
  |  |  ------------------
  ------------------
 2546|     76|		*dest_ht = NULL;
 2547|     76|		*dest_str = Z_STR_P(arg);
  ------------------
  |  |  982|     76|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     76|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2548|     76|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 2549|      0|		*dest_ht = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2550|      0|		*dest_str = NULL;
 2551|      6|	} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2551:13): [True: 0, False: 6]
  ------------------
 2552|      0|		*dest_ht = NULL;
 2553|      0|		*dest_str = NULL;
 2554|      6|	} else {
 2555|      6|		*dest_ht = NULL;
 2556|      6|		*dest_str = zend_parse_arg_str_slow(arg, arg_num);
 2557|      6|		return *dest_str != NULL;
 2558|      6|	}
 2559|     76|	return 1;
 2560|     82|}
php_pcre.c:zend_parse_arg_func:
 2512|      2|{
 2513|      2|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 0, False: 2]
  ------------------
 2514|      0|		dest_fci->size = 0;
 2515|      0|		dest_fcc->function_handler = NULL;
 2516|      0|		*error = NULL;
 2517|      2|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2518|      0|		return 0;
 2519|      0|	}
 2520|      2|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 2, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|      2|		zend_release_fcall_info_cache(dest_fcc);
 2525|      2|	}
 2526|      2|	return 1;
 2527|      2|}
php_pcre.c:zend_parse_arg_long:
 2266|      3|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|      3|}
php_pcre.c:zend_parse_arg_long_ex:
 2246|      3|{
 2247|      3|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 3]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|      3|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 2251|      3|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|      3|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 0]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      0|	} else {
 2256|      0|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 0]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      0|		} else {
 2259|      0|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      0|		}
 2261|      0|	}
 2262|      3|	return 1;
 2263|      3|}
php_pcre.c:zend_parse_arg_zval_deref:
 2538|      2|{
 2539|      2|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 2]
  ------------------
 2540|      2|}
php_pcre.c:zend_fci_consumed_arg:
  345|      2|static zend_always_inline uint32_t zend_fci_consumed_arg(uint32_t arg_index) {
  346|      2|	return arg_index < 32 ? (UINT32_C(1) << arg_index) : UINT32_C(0);
  ------------------
  |  Branch (346:9): [True: 2, False: 0]
  ------------------
  347|      2|}
php_pcre.c:zend_parse_arg_str:
 2329|    709|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    709|}
json.c:zend_parse_arg_zval_deref:
 2538|      2|{
 2539|      2|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 2]
  ------------------
 2540|      2|}
random.c:zend_parse_arg_long:
 2266|     12|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|     12|}
random.c:zend_parse_arg_long_ex:
 2246|     12|{
 2247|     12|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 12]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|     12|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 1]
  |  |  ------------------
  ------------------
 2251|     11|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     11|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     11|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|     11|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 1]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      1|	} else {
 2256|      1|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 1]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      1|		} else {
 2259|      1|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      1|		}
 2261|      1|	}
 2262|     11|	return 1;
 2263|     12|}
php_reflection.c:array_init:
  541|     40|{
  542|     40|	array_init_size(arg, 0);
  543|     40|}
php_reflection.c:array_init_size:
  536|     40|{
  537|     40|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|     40|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     40|		zend_array *__arr = (a);				\
  |  | 1127|     40|		zval *__z = (z);						\
  |  | 1128|     40|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     40|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     40|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     40|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     40|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     40|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     40|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     40|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     40|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     40|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
  538|     40|}
php_reflection.c:zend_parse_arg_obj_or_str:
 2602|    126|) {
 2603|    126|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|    126|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 22, False: 104]
  |  |  ------------------
  ------------------
 2604|     22|		if (!base_ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), base_ce))) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2604:7): [True: 12, False: 10]
  ------------------
 2605|     22|			*destination_object = Z_OBJ_P(arg);
  ------------------
  |  | 1000|     22|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     22|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2606|     22|			*destination_string = NULL;
 2607|     22|			return 1;
 2608|     22|		}
 2609|     22|	}
 2610|       |
 2611|    104|	*destination_object = NULL;
 2612|    104|	return zend_parse_arg_str(arg, destination_string, allow_null, arg_num);
 2613|    126|}
php_reflection.c:zend_call_known_fcc:
  855|      1|{
  856|      1|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|      1|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|      0|		zend_string_addref(func->op_array.function_name);
  862|      0|	}
  863|      1|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|      1|}
php_reflection.c:zend_parse_arg_zval_deref:
 2538|      3|{
 2539|      3|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 3]
  ------------------
 2540|      3|}
php_reflection.c:zend_parse_arg_str_or_long:
 2564|      2|{
 2565|      2|	if (allow_null) {
  ------------------
  |  Branch (2565:6): [True: 0, False: 2]
  ------------------
 2566|      0|		*is_null = 0;
 2567|      0|	}
 2568|      2|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2569|      2|		*dest_str = Z_STR_P(arg);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2570|      2|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2571|      0|		*dest_str = NULL;
 2572|      0|		*dest_long = Z_LVAL_P(arg);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2573|      0|	} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2573:13): [True: 0, False: 0]
  ------------------
 2574|      0|		*dest_str = NULL;
 2575|      0|		*is_null = 1;
 2576|      0|	} else {
 2577|      0|		return zend_parse_arg_str_or_long_slow(arg, dest_str, dest_long, arg_num);
 2578|      0|	}
 2579|      2|	return 1;
 2580|      2|}
php_reflection.c:zend_parse_arg_str:
 2329|    139|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    139|}
php_reflection.c:zend_parse_arg_str_ex:
 2312|    139|{
 2313|    139|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    139|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 138, False: 1]
  |  |  ------------------
  ------------------
 2314|    138|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    138|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    138|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    138|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 1, False: 0]
  |  Branch (2315:27): [True: 1, False: 0]
  ------------------
 2316|      1|		*dest = NULL;
 2317|      1|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|    139|	return true;
 2326|    139|}
php_reflection.c:zend_class_constants_table:
  451|     17|static zend_always_inline const HashTable *zend_class_constants_table(const zend_class_entry *ce) {
  452|     17|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  333|     17|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|     11|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  |  Branch (452:6): [True: 11, False: 6]
  ------------------
  453|      0|		const zend_class_mutable_data *mutable_data =
  454|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      0|		if (mutable_data && mutable_data->constants_table) {
  ------------------
  |  Branch (455:7): [True: 0, False: 0]
  |  Branch (455:23): [True: 0, False: 0]
  ------------------
  456|      0|			return mutable_data->constants_table;
  457|      0|		} else {
  458|      0|			return zend_separate_class_constants_table(ce);
  459|      0|		}
  460|     17|	} else {
  461|     17|		return &ce->constants_table;
  462|     17|	}
  463|     17|}
php_reflection.c:zend_parse_arg_obj:
 2464|     16|{
 2465|     16|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     32|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 2]
  |  |  ------------------
  ------------------
 2466|     14|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2466:7): [True: 14, False: 0]
  ------------------
 2467|     14|		*dest = Z_OBJ_P(arg);
  ------------------
  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2468|     14|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2468:13): [True: 2, False: 0]
  ------------------
 2469|      2|		*dest = NULL;
 2470|      2|	} else {
 2471|      0|		return 0;
 2472|      0|	}
 2473|     16|	return 1;
 2474|     16|}
php_reflection.c:zend_parse_arg_func:
 2512|      8|{
 2513|      8|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 0, False: 8]
  ------------------
 2514|      0|		dest_fci->size = 0;
 2515|      0|		dest_fcc->function_handler = NULL;
 2516|      0|		*error = NULL;
 2517|      8|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 2518|      0|		return 0;
 2519|      0|	}
 2520|      8|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 8, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|      8|		zend_release_fcall_info_cache(dest_fcc);
 2525|      8|	}
 2526|      8|	return 1;
 2527|      8|}
php_reflection.c:zend_parse_arg_object:
 2451|      8|{
 2452|      8|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 1]
  |  |  ------------------
  ------------------
 2453|      7|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2453:7): [True: 6, False: 1]
  ------------------
 2454|      7|		*dest = arg;
 2455|      7|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2455:13): [True: 0, False: 1]
  ------------------
 2456|      0|		*dest = NULL;
 2457|      1|	} else {
 2458|      1|		return 0;
 2459|      1|	}
 2460|      7|	return 1;
 2461|      8|}
php_reflection.c:add_assoc_str:
  583|      3|static zend_always_inline void add_assoc_str(zval *arg, const char *key, zend_string *str) {
  584|      3|	add_assoc_str_ex(arg, key, strlen(key), str);
  585|      3|}
php_reflection.c:add_next_index_zval:
  635|     21|{
  636|     21|	return zend_hash_next_index_insert(Z_ARRVAL_P(arg), value) ? SUCCESS : FAILURE;
  ------------------
  |  |  997|     21|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     21|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     21|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (636:9): [True: 21, False: 0]
  ------------------
  637|     21|}
php_spl.c:array_init:
  541|      2|{
  542|      2|	array_init_size(arg, 0);
  543|      2|}
php_spl.c:array_init_size:
  536|      2|{
  537|      2|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  538|      2|}
php_spl.c:zend_parse_arg_func:
 2512|     12|{
 2513|     12|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 12, False: 0]
  ------------------
 2514|      0|		dest_fci->size = 0;
 2515|      0|		dest_fcc->function_handler = NULL;
 2516|      0|		*error = NULL;
 2517|     12|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 2518|      0|		return 0;
 2519|      0|	}
 2520|     12|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 12, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|     12|		zend_release_fcall_info_cache(dest_fcc);
 2525|     12|	}
 2526|     12|	return 1;
 2527|     12|}
spl_array.c:array_init:
  541|     25|{
  542|     25|	array_init_size(arg, 0);
  543|     25|}
spl_array.c:array_init_size:
  536|     25|{
  537|     25|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|     25|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     25|		zend_array *__arr = (a);				\
  |  | 1127|     25|		zval *__z = (z);						\
  |  | 1128|     25|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     25|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     25|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     25|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     25|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     25|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     25|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     25|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     25|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     25|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
  538|     25|}
spl_iterators.c:zend_fcc_addref:
  779|      1|{
  780|      1|	ZEND_ASSERT(ZEND_FCC_INITIALIZED(*fcc) && "FCC Not initialized, possibly refetch trampoline freed by ZPP?");
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (780:2): [True: 0, False: 1]
  |  Branch (780:2): [True: 0, False: 0]
  |  Branch (780:2): [True: 1, False: 0]
  |  Branch (780:2): [True: 1, False: 0]
  ------------------
  781|       |	/* If the cached trampoline is set, free it */
  782|      1|	if (UNEXPECTED(fcc->function_handler == &EG(trampoline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  783|      0|		zend_function *copy = (zend_function*)emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  784|       |
  785|      0|		memcpy(copy, fcc->function_handler, sizeof(zend_function));
  786|      0|		fcc->function_handler->common.function_name = NULL;
  787|      0|		fcc->function_handler = copy;
  788|      0|	}
  789|      1|	if (fcc->object) {
  ------------------
  |  Branch (789:6): [True: 0, False: 1]
  ------------------
  790|      0|		GC_ADDREF(fcc->object);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  791|      0|	}
  792|      1|	if (fcc->closure) {
  ------------------
  |  Branch (792:6): [True: 1, False: 0]
  ------------------
  793|      1|		GC_ADDREF(fcc->closure);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  794|      1|	}
  795|      1|}
spl_iterators.c:zend_call_known_fcc:
  855|      1|{
  856|      1|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|      1|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|      0|		zend_string_addref(func->op_array.function_name);
  862|      0|	}
  863|      1|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|      1|}
spl_iterators.c:zend_parse_arg_iterable:
 2377|      3|{
 2378|      3|	if (EXPECTED(zend_is_iterable(arg))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 2379|      2|		*dest = arg;
 2380|      2|		return 1;
 2381|      2|	}
 2382|       |
 2383|      1|	if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2383:6): [True: 0, False: 1]
  ------------------
 2384|      0|		*dest = NULL;
 2385|      0|		return 1;
 2386|      0|	}
 2387|       |
 2388|      1|	return 0;
 2389|      1|}
spl_iterators.c:zend_parse_arg_bool:
 2241|      1|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|      1|}
spl_iterators.c:zend_parse_arg_bool_ex:
 2214|      1|{
 2215|      1|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 1]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2219|      0|		*dest = 1;
 2220|      1|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2221|      1|		*dest = 0;
 2222|      1|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 0]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|      0|	} else {
 2226|      0|		zpp_parse_bool_status result;
 2227|      0|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 0]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|      0|		} else {
 2230|      0|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|      0|		}
 2232|      0|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|      0|		*dest = result;
 2236|      0|	}
 2237|      1|	return 1;
 2238|      1|}
spl_iterators.c:array_init:
  541|      2|{
  542|      2|	array_init_size(arg, 0);
  543|      2|}
spl_iterators.c:array_init_size:
  536|      2|{
  537|      2|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  538|      2|}
spl_iterators.c:add_next_index_zval:
  635|      1|{
  636|      1|	return zend_hash_next_index_insert(Z_ARRVAL_P(arg), value) ? SUCCESS : FAILURE;
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (636:9): [True: 1, False: 0]
  ------------------
  637|      1|}
spl_iterators.c:zend_fcc_dtor:
  804|      1|{
  805|      1|	ZEND_ASSERT(fcc->function_handler);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (805:2): [True: 0, False: 1]
  |  Branch (805:2): [True: 1, False: 0]
  ------------------
  806|      1|	if (fcc->object) {
  ------------------
  |  Branch (806:6): [True: 0, False: 1]
  ------------------
  807|      0|		OBJ_RELEASE(fcc->object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  808|      0|	}
  809|       |	/* Need to free potential trampoline (__call/__callStatic) copied function handler before releasing the closure */
  810|      1|	zend_release_fcall_info_cache(fcc);
  811|      1|	if (fcc->closure) {
  ------------------
  |  Branch (811:6): [True: 1, False: 0]
  ------------------
  812|      1|		OBJ_RELEASE(fcc->closure);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  813|      1|	}
  814|      1|	*fcc = empty_fcall_info_cache;
  ------------------
  |  |  701|      1|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
  815|      1|}
array.c:zend_parse_arg_zval_deref:
 2538|     42|{
 2539|     42|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 42]
  ------------------
 2540|     42|}
array.c:zend_parse_arg_long:
 2266|    295|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|    295|}
array.c:zend_parse_arg_long_ex:
 2246|    295|{
 2247|    295|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 295]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|    295|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|    295|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 46, False: 249]
  |  |  ------------------
  ------------------
 2251|     46|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     46|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     46|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|    249|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 249]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|    249|	} else {
 2256|    249|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 249]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|    249|		} else {
 2259|    249|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|    249|		}
 2261|    249|	}
 2262|     46|	return 1;
 2263|    295|}
array.c:zend_parse_arg_array:
 2392|    449|{
 2393|    449|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY) ||
  ------------------
  |  |  456|    898|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 429, False: 20]
  |  |  ------------------
  ------------------
 2394|    440|		(or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT))) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2394:4): [True: 13, False: 7]
  ------------------
 2395|    440|		*dest = arg;
 2396|    440|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2396:13): [True: 0, False: 9]
  ------------------
 2397|      0|		*dest = NULL;
 2398|      9|	} else {
 2399|      9|		return 0;
 2400|      9|	}
 2401|    440|	return 1;
 2402|    449|}
array.c:zend_parse_arg_func:
 2512|    226|{
 2513|    226|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|    210|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 206]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 210, False: 16]
  ------------------
 2514|      4|		dest_fci->size = 0;
 2515|      4|		dest_fcc->function_handler = NULL;
 2516|      4|		*error = NULL;
 2517|    222|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|    222|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 219]
  |  |  ------------------
  ------------------
 2518|      3|		return 0;
 2519|      3|	}
 2520|    223|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 223, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|    223|		zend_release_fcall_info_cache(dest_fcc);
 2525|    223|	}
 2526|    223|	return 1;
 2527|    226|}
array.c:zend_parse_arg_bool_ex:
 2214|     25|{
 2215|     25|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 25]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|     25|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|     25|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 25, False: 0]
  |  |  ------------------
  ------------------
 2219|     25|		*dest = 1;
 2220|     25|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2221|      0|		*dest = 0;
 2222|      0|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 0]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|      0|	} else {
 2226|      0|		zpp_parse_bool_status result;
 2227|      0|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 0]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|      0|		} else {
 2230|      0|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|      0|		}
 2232|      0|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|      0|		*dest = result;
 2236|      0|	}
 2237|     25|	return 1;
 2238|     25|}
array.c:zend_forbid_dynamic_call:
  905|      9|{
  906|      9|	const zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|      9|# define EG(v) (executor_globals.v)
  ------------------
  907|      9|	ZEND_ASSERT(ex != NULL && ex->func != NULL);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (907:2): [True: 0, False: 9]
  |  Branch (907:2): [True: 0, False: 0]
  |  Branch (907:2): [True: 9, False: 0]
  |  Branch (907:2): [True: 9, False: 0]
  ------------------
  908|       |
  909|      9|	ZEND_ASSERT(ex->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (909:2): [True: 0, False: 9]
  |  Branch (909:2): [True: 9, False: 0]
  ------------------
  910|       |
  911|      9|	if (ZEND_CALL_INFO(ex) & ZEND_CALL_DYNAMIC) {
  ------------------
  |  |  687|      9|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ZEND_CALL_INFO(ex) & ZEND_CALL_DYNAMIC) {
  ------------------
  |  |  671|      9|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
  |  Branch (911:6): [True: 1, False: 8]
  ------------------
  912|      1|		zend_string *function_or_method_name = get_active_function_or_method_name();
  913|      1|		zend_throw_error(NULL, "Cannot call %.*s() dynamically",
  914|      1|			(int) ZSTR_LEN(function_or_method_name), ZSTR_VAL(function_or_method_name));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			(int) ZSTR_LEN(function_or_method_name), ZSTR_VAL(function_or_method_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  915|      1|		zend_string_release(function_or_method_name);
  916|      1|		return FAILURE;
  917|      1|	}
  918|       |
  919|      8|	return SUCCESS;
  920|      9|}
array.c:array_init_size:
  536|    503|{
  537|    503|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|    503|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|    503|		zend_array *__arr = (a);				\
  |  | 1127|    503|		zval *__z = (z);						\
  |  | 1128|    503|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|    503|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    503|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|    503|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|    503|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    503|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|    503|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    503|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    503|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    503|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    503|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    503|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|    503|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 503]
  |  |  ------------------
  ------------------
  538|    503|}
array.c:zend_parse_arg_number_or_str:
 2300|     62|{
 2301|     62|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG || Z_TYPE_P(arg) == IS_DOUBLE || Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    175|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 59, False: 3]
  |  |  |  Branch (456:52): [True: 33, False: 29]
  |  |  |  Branch (456:52): [True: 7, False: 22]
  |  |  |  Branch (456:52): [True: 19, False: 3]
  |  |  ------------------
  ------------------
 2302|     59|		*dest = arg;
 2303|     59|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2303:13): [True: 0, False: 3]
  ------------------
 2304|      0|		*dest = NULL;
 2305|      3|	} else {
 2306|      3|		return zend_parse_arg_number_or_str_slow(arg, dest, arg_num);
 2307|      3|	}
 2308|     59|	return true;
 2309|     62|}
array.c:zend_parse_arg_number:
 2288|      7|{
 2289|      7|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG || Z_TYPE_P(arg) == IS_DOUBLE)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 3]
  |  |  |  Branch (456:52): [True: 3, False: 4]
  |  |  |  Branch (456:52): [True: 1, False: 3]
  |  |  ------------------
  ------------------
 2290|      4|		*dest = arg;
 2291|      4|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2291:13): [True: 0, False: 3]
  ------------------
 2292|      0|		*dest = NULL;
 2293|      3|	} else {
 2294|      3|		return zend_parse_arg_number_slow(arg, dest, arg_num);
 2295|      3|	}
 2296|      4|	return 1;
 2297|      7|}
array.c:array_init:
  541|      7|{
  542|      7|	array_init_size(arg, 0);
  543|      7|}
array.c:zend_parse_arg_bool:
 2241|     25|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|     25|}
array.c:zend_parse_arg_array_ht:
 2405|     35|{
 2406|     35|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|     35|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 35, False: 0]
  |  |  ------------------
  ------------------
 2407|     35|		*dest = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|     35|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     35|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     35|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|     35|	} else if (or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2408:13): [True: 0, False: 0]
  ------------------
 2409|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2410|      0|		if (separate
  ------------------
  |  Branch (2410:7): [True: 0, False: 0]
  ------------------
 2411|      0|		 && zobj->properties
  ------------------
  |  Branch (2411:7): [True: 0, False: 0]
  ------------------
 2412|      0|		 && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2413|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2415|      0|			}
 2416|      0|			zobj->properties = zend_array_dup(zobj->properties);
 2417|      0|		}
 2418|      0|		*dest = zobj->handlers->get_properties(zobj);
 2419|      0|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2419:13): [True: 0, False: 0]
  ------------------
 2420|      0|		*dest = NULL;
 2421|      0|	} else {
 2422|      0|		return 0;
 2423|      0|	}
 2424|     35|	return 1;
 2425|     35|}
array.c:zend_fci_consumed_arg:
  345|      6|static zend_always_inline uint32_t zend_fci_consumed_arg(uint32_t arg_index) {
  346|      6|	return arg_index < 32 ? (UINT32_C(1) << arg_index) : UINT32_C(0);
  ------------------
  |  Branch (346:9): [True: 6, False: 0]
  ------------------
  347|      6|}
assert.c:zend_parse_arg_zval_deref:
 2538|    168|{
 2539|    168|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 168]
  ------------------
 2540|    168|}
assert.c:zend_parse_arg_obj_or_str:
 2602|    153|) {
 2603|    153|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|    153|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 153]
  |  |  ------------------
  ------------------
 2604|      0|		if (!base_ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), base_ce))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2604:7): [True: 0, False: 0]
  ------------------
 2605|      0|			*destination_object = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2606|      0|			*destination_string = NULL;
 2607|      0|			return 1;
 2608|      0|		}
 2609|      0|	}
 2610|       |
 2611|    153|	*destination_object = NULL;
 2612|    153|	return zend_parse_arg_str(arg, destination_string, allow_null, arg_num);
 2613|    153|}
assert.c:zend_parse_arg_str:
 2329|    153|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    153|}
assert.c:zend_parse_arg_str_ex:
 2312|    153|{
 2313|    153|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    153|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 152, False: 1]
  |  |  ------------------
  ------------------
 2314|    152|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    152|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    152|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    152|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 1, False: 0]
  |  Branch (2315:27): [True: 0, False: 1]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      1|	} else {
 2318|      1|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 1]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      1|		} else {
 2321|      1|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      1|		}
 2323|      1|		return *dest != NULL;
 2324|      1|	}
 2325|    152|	return true;
 2326|    153|}
assert.c:zend_parse_arg_long:
 2266|     14|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|     14|}
assert.c:zend_parse_arg_long_ex:
 2246|     14|{
 2247|     14|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 14]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|     14|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 0]
  |  |  ------------------
  ------------------
 2251|     14|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     14|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     14|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|     14|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 0]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      0|	} else {
 2256|      0|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 0]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      0|		} else {
 2259|      0|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      0|		}
 2261|      0|	}
 2262|     14|	return 1;
 2263|     14|}
basic_functions.c:zend_parse_arg_str:
 2329|  12.8k|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|  12.8k|}
basic_functions.c:zend_parse_arg_str_ex:
 2312|  12.8k|{
 2313|  12.8k|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|  12.8k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12.3k, False: 514]
  |  |  ------------------
  ------------------
 2314|  12.3k|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|  12.3k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  12.3k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|  12.3k|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 514]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|    514|	} else {
 2318|    514|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 514]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|    514|		} else {
 2321|    514|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|    514|		}
 2323|    514|		return *dest != NULL;
 2324|    514|	}
 2325|  12.3k|	return true;
 2326|  12.8k|}
basic_functions.c:zend_parse_arg_string:
 2334|  9.37k|{
 2335|  9.37k|	zend_string *str;
 2336|       |
 2337|  9.37k|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 9.37k]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|  9.37k|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 9.37k]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|  9.37k|	} else {
 2344|  9.37k|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|  9.37k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|  9.37k|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|  9.37k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|  9.37k|	}
 2347|  9.37k|	return 1;
 2348|  9.37k|}
basic_functions.c:zend_parse_arg_path:
 2360|      2|{
 2361|      2|	zend_string *str;
 2362|       |
 2363|      2|	if (!zend_parse_arg_path_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2363:6): [True: 0, False: 2]
  ------------------
 2364|      0|		return 0;
 2365|      0|	}
 2366|      2|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2366:6): [True: 2, False: 0]
  ------------------
 2367|      0|		*dest = NULL;
 2368|      0|		*dest_len = 0;
 2369|      2|	} else {
 2370|      2|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2371|      2|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2372|      2|	}
 2373|      2|	return 1;
 2374|      2|}
basic_functions.c:zend_parse_arg_long:
 2266|    533|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|    533|}
basic_functions.c:zend_parse_arg_long_ex:
 2246|    533|{
 2247|    533|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 533]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|    533|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|    533|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 525, False: 8]
  |  |  ------------------
  ------------------
 2251|    525|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|    525|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    525|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|    525|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 8]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      8|	} else {
 2256|      8|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 8]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      8|		} else {
 2259|      8|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      8|		}
 2261|      8|	}
 2262|    525|	return 1;
 2263|    533|}
basic_functions.c:zend_parse_arg_bool:
 2241|    538|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|    538|}
basic_functions.c:zend_parse_arg_bool_ex:
 2214|    538|{
 2215|    538|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 538]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|    538|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|    538|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 529, False: 9]
  |  |  ------------------
  ------------------
 2219|    529|		*dest = 1;
 2220|    529|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 5]
  |  |  ------------------
  ------------------
 2221|      4|		*dest = 0;
 2222|      5|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 5]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|      5|	} else {
 2226|      5|		zpp_parse_bool_status result;
 2227|      5|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 5]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|      5|		} else {
 2230|      5|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|      5|		}
 2232|      5|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|      5|		*dest = result;
 2236|      5|	}
 2237|    538|	return 1;
 2238|    538|}
basic_functions.c:array_init:
  541|  9.61k|{
  542|  9.61k|	array_init_size(arg, 0);
  543|  9.61k|}
basic_functions.c:array_init_size:
  536|  9.61k|{
  537|  9.61k|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|  9.61k|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|  9.61k|		zend_array *__arr = (a);				\
  |  | 1127|  9.61k|		zval *__z = (z);						\
  |  | 1128|  9.61k|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|  9.61k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  9.61k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|  9.61k|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|  9.61k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  9.61k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|  9.61k|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  9.61k|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  9.61k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  9.61k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  9.61k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  9.61k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|  9.61k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 9.61k]
  |  |  ------------------
  ------------------
  538|  9.61k|}
basic_functions.c:zend_parse_arg_zval_deref:
 2538|     96|{
 2539|     96|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 96]
  ------------------
 2540|     96|}
basic_functions.c:zend_parse_arg_path_str:
 2351|     13|{
 2352|     13|	if (!zend_parse_arg_str(arg, dest, check_null, arg_num) ||
  ------------------
  |  Branch (2352:6): [True: 0, False: 13]
  ------------------
 2353|     13|	    (*dest && UNEXPECTED(zend_str_has_nul_byte(*dest)))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (2353:7): [True: 13, False: 0]
  ------------------
 2354|      0|		return 0;
 2355|      0|	}
 2356|     13|	return 1;
 2357|     13|}
basic_functions.c:zend_str_has_nul_byte:
  955|     13|{
  956|     13|	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  957|     13|}
basic_functions.c:zend_parse_arg_func:
 2512|      8|{
 2513|      8|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 0, False: 8]
  ------------------
 2514|      0|		dest_fci->size = 0;
 2515|      0|		dest_fcc->function_handler = NULL;
 2516|      0|		*error = NULL;
 2517|      8|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  ------------------
  ------------------
 2518|      1|		return 0;
 2519|      1|	}
 2520|      7|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 7, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|      7|		zend_release_fcall_info_cache(dest_fcc);
 2525|      7|	}
 2526|      7|	return 1;
 2527|      8|}
basic_functions.c:zend_parse_arg_array_ht:
 2405|      1|{
 2406|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2407|      1|		*dest = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|      1|	} else if (or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2408:13): [True: 0, False: 0]
  ------------------
 2409|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2410|      0|		if (separate
  ------------------
  |  Branch (2410:7): [True: 0, False: 0]
  ------------------
 2411|      0|		 && zobj->properties
  ------------------
  |  Branch (2411:7): [True: 0, False: 0]
  ------------------
 2412|      0|		 && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2413|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2415|      0|			}
 2416|      0|			zobj->properties = zend_array_dup(zobj->properties);
 2417|      0|		}
 2418|      0|		*dest = zobj->handlers->get_properties(zobj);
 2419|      0|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2419:13): [True: 0, False: 0]
  ------------------
 2420|      0|		*dest = NULL;
 2421|      0|	} else {
 2422|      0|		return 0;
 2423|      0|	}
 2424|      1|	return 1;
 2425|      1|}
basic_functions.c:zend_call_known_fcc:
  855|     16|{
  856|     16|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|     16|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|      0|		zend_string_addref(func->op_array.function_name);
  862|      0|	}
  863|     16|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|     16|}
basic_functions.c:zend_fcc_addref:
  779|     15|{
  780|     15|	ZEND_ASSERT(ZEND_FCC_INITIALIZED(*fcc) && "FCC Not initialized, possibly refetch trampoline freed by ZPP?");
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (780:2): [True: 0, False: 15]
  |  Branch (780:2): [True: 0, False: 0]
  |  Branch (780:2): [True: 15, False: 0]
  |  Branch (780:2): [True: 15, False: 0]
  ------------------
  781|       |	/* If the cached trampoline is set, free it */
  782|     15|	if (UNEXPECTED(fcc->function_handler == &EG(trampoline))) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  ------------------
  ------------------
  783|      0|		zend_function *copy = (zend_function*)emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  784|       |
  785|      0|		memcpy(copy, fcc->function_handler, sizeof(zend_function));
  786|      0|		fcc->function_handler->common.function_name = NULL;
  787|      0|		fcc->function_handler = copy;
  788|      0|	}
  789|     15|	if (fcc->object) {
  ------------------
  |  Branch (789:6): [True: 3, False: 12]
  ------------------
  790|      3|		GC_ADDREF(fcc->object);
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  791|      3|	}
  792|     15|	if (fcc->closure) {
  ------------------
  |  Branch (792:6): [True: 10, False: 5]
  ------------------
  793|     10|		GC_ADDREF(fcc->closure);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  794|     10|	}
  795|     15|}
basic_functions.c:zend_fcc_dtor:
  804|     15|{
  805|     15|	ZEND_ASSERT(fcc->function_handler);
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (805:2): [True: 0, False: 15]
  |  Branch (805:2): [True: 15, False: 0]
  ------------------
  806|     15|	if (fcc->object) {
  ------------------
  |  Branch (806:6): [True: 3, False: 12]
  ------------------
  807|      3|		OBJ_RELEASE(fcc->object);
  ------------------
  |  |   44|      3|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  808|      3|	}
  809|       |	/* Need to free potential trampoline (__call/__callStatic) copied function handler before releasing the closure */
  810|     15|	zend_release_fcall_info_cache(fcc);
  811|     15|	if (fcc->closure) {
  ------------------
  |  Branch (811:6): [True: 10, False: 5]
  ------------------
  812|     10|		OBJ_RELEASE(fcc->closure);
  ------------------
  |  |   44|     10|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  813|     10|	}
  814|     15|	*fcc = empty_fcall_info_cache;
  ------------------
  |  |  701|     15|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
  815|     15|}
dir.c:zend_parse_arg_path:
 2360|      6|{
 2361|      6|	zend_string *str;
 2362|       |
 2363|      6|	if (!zend_parse_arg_path_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2363:6): [True: 1, False: 5]
  ------------------
 2364|      1|		return 0;
 2365|      1|	}
 2366|      5|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2366:6): [True: 0, False: 5]
  ------------------
 2367|      0|		*dest = NULL;
 2368|      0|		*dest_len = 0;
 2369|      5|	} else {
 2370|      5|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2371|      5|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2372|      5|	}
 2373|      5|	return 1;
 2374|      6|}
dir.c:zend_parse_arg_path_str:
 2351|      6|{
 2352|      6|	if (!zend_parse_arg_str(arg, dest, check_null, arg_num) ||
  ------------------
  |  Branch (2352:6): [True: 0, False: 6]
  ------------------
 2353|      6|	    (*dest && UNEXPECTED(zend_str_has_nul_byte(*dest)))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (2353:7): [True: 6, False: 0]
  ------------------
 2354|      1|		return 0;
 2355|      1|	}
 2356|      5|	return 1;
 2357|      6|}
dir.c:zend_parse_arg_str:
 2329|      6|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      6|}
dir.c:zend_parse_arg_str_ex:
 2312|      6|{
 2313|      6|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 2]
  |  |  ------------------
  ------------------
 2314|      4|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      4|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 2]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      2|	} else {
 2318|      2|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 2]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      2|		} else {
 2321|      2|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      2|		}
 2323|      2|		return *dest != NULL;
 2324|      2|	}
 2325|      4|	return true;
 2326|      6|}
dir.c:zend_str_has_nul_byte:
  955|      6|{
  956|      6|	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  957|      6|}
exec.c:zend_str_has_nul_byte:
  955|      2|{
  956|      2|	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  957|      2|}
exec.c:zend_parse_arg_path_str:
 2351|      1|{
 2352|      1|	if (!zend_parse_arg_str(arg, dest, check_null, arg_num) ||
  ------------------
  |  Branch (2352:6): [True: 0, False: 1]
  ------------------
 2353|      1|	    (*dest && UNEXPECTED(zend_str_has_nul_byte(*dest)))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2353:7): [True: 1, False: 0]
  ------------------
 2354|      0|		return 0;
 2355|      0|	}
 2356|      1|	return 1;
 2357|      1|}
exec.c:zend_parse_arg_str:
 2329|      1|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      1|}
exec.c:zend_parse_arg_str_ex:
 2312|      1|{
 2313|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2314|      1|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      1|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|      1|	return true;
 2326|      1|}
file.c:zend_parse_arg_long:
 2266|      3|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|      3|}
file.c:zend_parse_arg_long_ex:
 2246|      3|{
 2247|      3|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 3]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|      3|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 2251|      1|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|      2|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 2]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      2|	} else {
 2256|      2|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 2]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      2|		} else {
 2259|      2|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      2|		}
 2261|      2|	}
 2262|      1|	return 1;
 2263|      3|}
file.c:zend_parse_arg_path:
 2360|      4|{
 2361|      4|	zend_string *str;
 2362|       |
 2363|      4|	if (!zend_parse_arg_path_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2363:6): [True: 0, False: 4]
  ------------------
 2364|      0|		return 0;
 2365|      0|	}
 2366|      4|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2366:6): [True: 0, False: 4]
  ------------------
 2367|      0|		*dest = NULL;
 2368|      0|		*dest_len = 0;
 2369|      4|	} else {
 2370|      4|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2371|      4|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2372|      4|	}
 2373|      4|	return 1;
 2374|      4|}
file.c:zend_parse_arg_path_str:
 2351|      4|{
 2352|      4|	if (!zend_parse_arg_str(arg, dest, check_null, arg_num) ||
  ------------------
  |  Branch (2352:6): [True: 0, False: 4]
  ------------------
 2353|      4|	    (*dest && UNEXPECTED(zend_str_has_nul_byte(*dest)))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (2353:7): [True: 4, False: 0]
  ------------------
 2354|      0|		return 0;
 2355|      0|	}
 2356|      4|	return 1;
 2357|      4|}
file.c:zend_str_has_nul_byte:
  955|      4|{
  956|      4|	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  957|      4|}
file.c:array_init:
  541|      1|{
  542|      1|	array_init_size(arg, 0);
  543|      1|}
file.c:array_init_size:
  536|      1|{
  537|      1|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  538|      1|}
file.c:zend_parse_arg_resource:
 2500|      1|{
 2501|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_RESOURCE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2502|      0|		*dest = arg;
 2503|      1|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2503:13): [True: 1, False: 0]
  ------------------
 2504|      0|		*dest = NULL;
 2505|      1|	} else {
 2506|      1|		return 0;
 2507|      1|	}
 2508|      0|	return 1;
 2509|      1|}
file.c:zend_parse_arg_str:
 2329|      4|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      4|}
file.c:zend_parse_arg_str_ex:
 2312|      4|{
 2313|      4|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 2314|      3|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      3|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 1]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      1|	} else {
 2318|      1|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 1]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      1|		} else {
 2321|      1|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      1|		}
 2323|      1|		return *dest != NULL;
 2324|      1|	}
 2325|      3|	return true;
 2326|      4|}
formatted_print.c:zend_parse_arg_string:
 2334|      7|{
 2335|      7|	zend_string *str;
 2336|       |
 2337|      7|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 7]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|      7|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 7]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|      7|	} else {
 2344|      7|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|      7|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|      7|	}
 2347|      7|	return 1;
 2348|      7|}
formatted_print.c:zend_parse_arg_str:
 2329|      7|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      7|}
formatted_print.c:zend_parse_arg_str_ex:
 2312|      7|{
 2313|      7|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 0]
  |  |  ------------------
  ------------------
 2314|      7|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      7|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|      7|	return true;
 2326|      7|}
head.c:zend_parse_arg_string:
 2334|      1|{
 2335|      1|	zend_string *str;
 2336|       |
 2337|      1|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 1]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|      1|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 1]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|      1|	} else {
 2344|      1|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|      1|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|      1|	}
 2347|      1|	return 1;
 2348|      1|}
head.c:zend_parse_arg_str:
 2329|      1|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      1|}
head.c:zend_parse_arg_str_ex:
 2312|      1|{
 2313|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2314|      1|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      1|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|      1|	return true;
 2326|      1|}
head.c:zend_parse_arg_zval_deref:
 2538|      2|{
 2539|      2|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 2]
  ------------------
 2540|      2|}
html.c:zend_parse_arg_bool:
 2241|     15|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|     15|}
html.c:zend_parse_arg_bool_ex:
 2214|     15|{
 2215|     15|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 15]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|     15|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 15]
  |  |  ------------------
  ------------------
 2219|      0|		*dest = 1;
 2220|     15|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 14]
  |  |  ------------------
  ------------------
 2221|      1|		*dest = 0;
 2222|     14|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 14]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|     14|	} else {
 2226|     14|		zpp_parse_bool_status result;
 2227|     14|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 14]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|     14|		} else {
 2230|     14|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|     14|		}
 2232|     14|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|     14|		*dest = result;
 2236|     14|	}
 2237|     15|	return 1;
 2238|     15|}
html.c:zend_parse_arg_str:
 2329|    122|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    122|}
html.c:zend_parse_arg_str_ex:
 2312|    122|{
 2313|    122|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    122|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 64, False: 58]
  |  |  ------------------
  ------------------
 2314|     64|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|     64|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     64|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|     64|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|     58|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     58|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|     58|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 58, False: 0]
  |  Branch (2315:27): [True: 1, False: 57]
  ------------------
 2316|      1|		*dest = NULL;
 2317|     57|	} else {
 2318|     57|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 57]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|     57|		} else {
 2321|     57|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|     57|		}
 2323|     57|		return *dest != NULL;
 2324|     57|	}
 2325|     65|	return true;
 2326|    122|}
html.c:zend_parse_arg_long:
 2266|     63|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|     63|}
html.c:zend_parse_arg_long_ex:
 2246|     63|{
 2247|     63|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 63]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|     63|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     63|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 59, False: 4]
  |  |  ------------------
  ------------------
 2251|     59|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     59|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     59|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|     59|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 4]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      4|	} else {
 2256|      4|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 4]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      4|		} else {
 2259|      4|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      4|		}
 2261|      4|	}
 2262|     59|	return 1;
 2263|     63|}
image.c:zend_parse_arg_str:
 2329|     22|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|     22|}
image.c:zend_parse_arg_str_ex:
 2312|     22|{
 2313|     22|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|     22|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 22, False: 0]
  |  |  ------------------
  ------------------
 2314|     22|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|     22|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     22|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|     22|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|     22|	return true;
 2326|     22|}
image.c:array_init:
  541|      3|{
  542|      3|	array_init_size(arg, 0);
  543|      3|}
image.c:array_init_size:
  536|      3|{
  537|      3|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  538|      3|}
image.c:add_assoc_string:
  586|      9|static zend_always_inline void add_assoc_string(zval *arg, const char *key, const char *str) {
  587|      9|	add_assoc_string_ex(arg, key, strlen(key), str);
  588|      9|}
math.c:zend_parse_arg_double:
 2271|     16|{
 2272|     16|	if (check_null) {
  ------------------
  |  Branch (2272:6): [True: 0, False: 16]
  ------------------
 2273|      0|		*is_null = 0;
 2274|      0|	}
 2275|     16|	if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 10]
  |  |  ------------------
  ------------------
 2276|      6|		*dest = Z_DVAL_P(arg);
  ------------------
  |  |  979|      6|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      6|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2277|     10|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2277:13): [True: 0, False: 10]
  |  Branch (2277:27): [True: 0, False: 0]
  ------------------
 2278|      0|		*is_null = 1;
 2279|      0|		*dest = 0.0;
 2280|     10|	} else {
 2281|     10|		*dest = zend_parse_arg_double_slow(arg, arg_num);
 2282|     10|		return !zend_isnan(*dest);
  ------------------
  |  |  536|     10|# define zend_isnan(a) isnan(a)
  ------------------
 2283|     10|	}
 2284|      6|	return 1;
 2285|     16|}
md5.c:zend_parse_arg_str:
 2329|      2|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      2|}
md5.c:zend_parse_arg_str_ex:
 2312|      2|{
 2313|      2|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2314|      0|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      2|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 2]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      2|	} else {
 2318|      2|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 2]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      2|		} else {
 2321|      2|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      2|		}
 2323|      2|		return *dest != NULL;
 2324|      2|	}
 2325|      0|	return true;
 2326|      2|}
quot_print.c:zend_parse_arg_str:
 2329|     13|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|     13|}
quot_print.c:zend_parse_arg_str_ex:
 2312|     13|{
 2313|     13|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 0]
  |  |  ------------------
  ------------------
 2314|     13|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|     13|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     13|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|     13|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|     13|	return true;
 2326|     13|}
string.c:zend_parse_arg_str:
 2329|    528|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    528|}
string.c:zend_parse_arg_long:
 2266|     15|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|     15|}
string.c:zend_parse_arg_str_ex:
 2312|    528|{
 2313|    528|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    528|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 525, False: 3]
  |  |  ------------------
  ------------------
 2314|    525|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    525|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    525|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    525|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 3]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      3|	} else {
 2318|      3|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 3]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      3|		} else {
 2321|      3|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      3|		}
 2323|      3|		return *dest != NULL;
 2324|      3|	}
 2325|    525|	return true;
 2326|    528|}
string.c:zend_parse_arg_string:
 2334|      1|{
 2335|      1|	zend_string *str;
 2336|       |
 2337|      1|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 1]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|      1|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 1]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|      1|	} else {
 2344|      1|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|      1|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|      1|	}
 2347|      1|	return 1;
 2348|      1|}
string.c:array_init:
  541|      5|{
  542|      5|	array_init_size(arg, 0);
  543|      5|}
string.c:zend_parse_arg_array_ht_or_str:
 2544|     25|{
 2545|     25|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|     25|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 6]
  |  |  ------------------
  ------------------
 2546|     19|		*dest_ht = NULL;
 2547|     19|		*dest_str = Z_STR_P(arg);
  ------------------
  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2548|     19|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
 2549|      5|		*dest_ht = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2550|      5|		*dest_str = NULL;
 2551|      5|	} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2551:13): [True: 1, False: 0]
  ------------------
 2552|      0|		*dest_ht = NULL;
 2553|      0|		*dest_str = NULL;
 2554|      1|	} else {
 2555|      1|		*dest_ht = NULL;
 2556|      1|		*dest_str = zend_parse_arg_str_slow(arg, arg_num);
 2557|      1|		return *dest_str != NULL;
 2558|      1|	}
 2559|     24|	return 1;
 2560|     25|}
string.c:zend_parse_arg_long_ex:
 2246|     15|{
 2247|     15|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 4, False: 11]
  ------------------
 2248|      4|		*is_null = 0;
 2249|      4|	}
 2250|     15|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 2]
  |  |  ------------------
  ------------------
 2251|     13|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     13|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     13|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|     13|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 1, False: 1]
  |  Branch (2252:27): [True: 0, False: 1]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      2|	} else {
 2256|      2|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 2]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      2|		} else {
 2259|      2|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      2|		}
 2261|      2|	}
 2262|     13|	return 1;
 2263|     15|}
string.c:zend_parse_arg_zval_deref:
 2538|      1|{
 2539|      1|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 1]
  ------------------
 2540|      1|}
string.c:array_init_size:
  536|      5|{
  537|      5|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      5|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      5|		zend_array *__arr = (a);				\
  |  | 1127|      5|		zval *__z = (z);						\
  |  | 1128|      5|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      5|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      5|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      5|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  538|      5|}
type.c:zend_parse_arg_zval_deref:
 2538|      1|{
 2539|      1|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 1]
  ------------------
 2540|      1|}
user_filters.c:zend_parse_arg_str:
 2329|      6|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      6|}
user_filters.c:zend_parse_arg_str_ex:
 2312|      6|{
 2313|      6|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 2314|      6|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      6|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|      6|	return true;
 2326|      6|}
user_filters.c:add_property_string:
  672|      1|static zend_always_inline void add_property_string(zval *arg, const char *key, const char *str) {
  673|      1|	add_property_string_ex(arg, key, strlen(key), str);
  674|      1|}
user_filters.c:add_property_null:
  657|      1|static zend_always_inline void add_property_null(zval *arg, const char *key) {
  658|      1|	add_property_null_ex(arg, key, strlen(key));
  659|      1|}
var_unserializer.c:zend_call_known_instance_method_with_1_params:
  882|      1|{
  883|      1|	zend_call_known_instance_method(fn, object, retval_ptr, 1, param);
  884|      1|}
var_unserializer.c:zend_call_known_instance_method:
  870|      1|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|      1|}
var_unserializer.c:zend_class_constants_table:
  451|      3|static zend_always_inline const HashTable *zend_class_constants_table(const zend_class_entry *ce) {
  452|      3|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  333|      3|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|      3|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (452:6): [True: 3, False: 0]
  ------------------
  453|      0|		const zend_class_mutable_data *mutable_data =
  454|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      0|		if (mutable_data && mutable_data->constants_table) {
  ------------------
  |  Branch (455:7): [True: 0, False: 0]
  |  Branch (455:23): [True: 0, False: 0]
  ------------------
  456|      0|			return mutable_data->constants_table;
  457|      0|		} else {
  458|      0|			return zend_separate_class_constants_table(ce);
  459|      0|		}
  460|      3|	} else {
  461|      3|		return &ce->constants_table;
  462|      3|	}
  463|      3|}
var_unserializer.c:array_init_size:
  536|     11|{
  537|     11|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|     11|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     11|		zend_array *__arr = (a);				\
  |  | 1127|     11|		zval *__z = (z);						\
  |  | 1128|     11|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     11|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     11|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     11|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     11|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
  538|     11|}
var.c:zend_parse_arg_zval_deref:
 2538|     20|{
 2539|     20|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 20]
  ------------------
 2540|     20|}
var.c:zend_parse_arg_bool:
 2241|      2|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|      2|}
var.c:zend_parse_arg_bool_ex:
 2214|      2|{
 2215|      2|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 2]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|      2|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2219|      2|		*dest = 1;
 2220|      2|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2221|      0|		*dest = 0;
 2222|      0|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 0]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|      0|	} else {
 2226|      0|		zpp_parse_bool_status result;
 2227|      0|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 0]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|      0|		} else {
 2230|      0|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|      0|		}
 2232|      0|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|      0|		*dest = result;
 2236|      0|	}
 2237|      2|	return 1;
 2238|      2|}
var.c:zend_parse_arg_string:
 2334|     49|{
 2335|     49|	zend_string *str;
 2336|       |
 2337|     49|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 49]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|     49|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 49]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|     49|	} else {
 2344|     49|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|     49|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|     49|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|     49|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|     49|	}
 2347|     49|	return 1;
 2348|     49|}
var.c:zend_parse_arg_str:
 2329|     49|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|     49|}
var.c:zend_parse_arg_str_ex:
 2312|     49|{
 2313|     49|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|     49|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 49, False: 0]
  |  |  ------------------
  ------------------
 2314|     49|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|     49|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     49|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|     49|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 0]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      0|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|     49|	return true;
 2326|     49|}
var.c:zend_parse_arg_array_ht:
 2405|      1|{
 2406|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2407|      0|		*dest = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|      1|	} else if (or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2408:13): [True: 0, False: 1]
  ------------------
 2409|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2410|      0|		if (separate
  ------------------
  |  Branch (2410:7): [True: 0, False: 0]
  ------------------
 2411|      0|		 && zobj->properties
  ------------------
  |  Branch (2411:7): [True: 0, False: 0]
  ------------------
 2412|      0|		 && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2413|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2415|      0|			}
 2416|      0|			zobj->properties = zend_array_dup(zobj->properties);
 2417|      0|		}
 2418|      0|		*dest = zobj->handlers->get_properties(zobj);
 2419|      1|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2419:13): [True: 0, False: 1]
  ------------------
 2420|      0|		*dest = NULL;
 2421|      1|	} else {
 2422|      1|		return 0;
 2423|      1|	}
 2424|      0|	return 1;
 2425|      1|}
fopen_wrappers.c:zend_char_has_nul_byte:
  959|  5.36k|{
  960|  5.36k|	return known_length != strlen(s);
  961|  5.36k|}
output.c:zend_fci_consumed_arg:
  345|      6|static zend_always_inline uint32_t zend_fci_consumed_arg(uint32_t arg_index) {
  346|      6|	return arg_index < 32 ? (UINT32_C(1) << arg_index) : UINT32_C(0);
  ------------------
  |  Branch (346:9): [True: 6, False: 0]
  ------------------
  347|      6|}
php_variables.c:array_init:
  541|   134k|{
  542|   134k|	array_init_size(arg, 0);
  543|   134k|}
php_variables.c:array_init_size:
  536|   134k|{
  537|   134k|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|   134k|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|   134k|		zend_array *__arr = (a);				\
  |  | 1127|   134k|		zval *__z = (z);						\
  |  | 1128|   134k|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|   134k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|   134k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|   134k|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|   134k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   134k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|   134k|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   134k|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   134k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|   134k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|   134k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|   134k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|   134k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 134k]
  |  |  ------------------
  ------------------
  538|   134k|}
streams.c:array_init:
  541|      4|{
  542|      4|	array_init_size(arg, 0);
  543|      4|}
streams.c:array_init_size:
  536|      4|{
  537|      4|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  | 1127|      4|		zval *__z = (z);						\
  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  538|      4|}
userspace.c:add_property_resource:
  663|      2|static zend_always_inline void add_property_resource(zval *arg, const char *key, zend_resource *r) {
  664|      2|	add_property_resource_ex(arg, key, strlen(key), r);
  665|      2|}
userspace.c:add_property_null:
  657|  4.62k|static zend_always_inline void add_property_null(zval *arg, const char *key) {
  658|  4.62k|	add_property_null_ex(arg, key, strlen(key));
  659|  4.62k|}
zend_API.c:zend_get_object_type:
  925|     14|{
  926|       |	return zend_get_object_type_case(ce, false);
  927|     14|}
zend_API.c:zend_parse_arg_long:
 2266|     30|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|     30|}
zend_API.c:zend_parse_arg_long_ex:
 2246|     30|{
 2247|     30|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 5, False: 25]
  ------------------
 2248|      5|		*is_null = 0;
 2249|      5|	}
 2250|     30|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 26, False: 4]
  |  |  ------------------
  ------------------
 2251|     26|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     26|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     26|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|     26|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 4]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      4|	} else {
 2256|      4|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 4]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      4|		} else {
 2259|      4|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      4|		}
 2261|      4|	}
 2262|     26|	return 1;
 2263|     30|}
zend_API.c:zend_parse_arg_string:
 2334|      1|{
 2335|      1|	zend_string *str;
 2336|       |
 2337|      1|	if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
  ------------------
  |  Branch (2337:6): [True: 0, False: 1]
  ------------------
 2338|      0|		return 0;
 2339|      0|	}
 2340|      1|	if (check_null && UNEXPECTED(!str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:6): [True: 0, False: 1]
  ------------------
 2341|      0|		*dest = NULL;
 2342|      0|		*dest_len = 0;
 2343|      1|	} else {
 2344|      1|		*dest = ZSTR_VAL(str);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2345|      1|		*dest_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2346|      1|	}
 2347|      1|	return 1;
 2348|      1|}
zend_API.c:zend_parse_arg_str:
 2329|    112|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    112|}
zend_API.c:zend_parse_arg_str_ex:
 2312|    112|{
 2313|    112|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    112|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 100, False: 12]
  |  |  ------------------
  ------------------
 2314|    100|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    100|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    100|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    100|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 12]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|     12|	} else {
 2318|     12|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 12]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|     12|		} else {
 2321|     12|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|     12|		}
 2323|     12|		return *dest != NULL;
 2324|     12|	}
 2325|    100|	return true;
 2326|    112|}
zend_API.c:zend_parse_arg_bool:
 2241|     10|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|     10|}
zend_API.c:zend_parse_arg_bool_ex:
 2214|     10|{
 2215|     10|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 10]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|     10|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 2219|     10|		*dest = 1;
 2220|     10|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2221|      0|		*dest = 0;
 2222|      0|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 0]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|      0|	} else {
 2226|      0|		zpp_parse_bool_status result;
 2227|      0|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 0]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|      0|		} else {
 2230|      0|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|      0|		}
 2232|      0|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|      0|		*dest = result;
 2236|      0|	}
 2237|     10|	return 1;
 2238|     10|}
zend_API.c:zend_parse_arg_resource:
 2500|      2|{
 2501|      2|	if (EXPECTED(Z_TYPE_P(arg) == IS_RESOURCE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2502|      2|		*dest = arg;
 2503|      2|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2503:13): [True: 0, False: 0]
  ------------------
 2504|      0|		*dest = NULL;
 2505|      0|	} else {
 2506|      0|		return 0;
 2507|      0|	}
 2508|      2|	return 1;
 2509|      2|}
zend_API.c:zend_parse_arg_array:
 2392|     15|{
 2393|     15|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY) ||
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 2]
  |  |  ------------------
  ------------------
 2394|     13|		(or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2394:4): [True: 2, False: 0]
  ------------------
 2395|     13|		*dest = arg;
 2396|     13|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2396:13): [True: 0, False: 2]
  ------------------
 2397|      0|		*dest = NULL;
 2398|      2|	} else {
 2399|      2|		return 0;
 2400|      2|	}
 2401|     13|	return 1;
 2402|     15|}
zend_API.c:zend_parse_arg_array_ht:
 2405|      1|{
 2406|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2407|      1|		*dest = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|      1|	} else if (or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2408:13): [True: 0, False: 0]
  ------------------
 2409|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2410|      0|		if (separate
  ------------------
  |  Branch (2410:7): [True: 0, False: 0]
  ------------------
 2411|      0|		 && zobj->properties
  ------------------
  |  Branch (2411:7): [True: 0, False: 0]
  ------------------
 2412|      0|		 && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2413|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2415|      0|			}
 2416|      0|			zobj->properties = zend_array_dup(zobj->properties);
 2417|      0|		}
 2418|      0|		*dest = zobj->handlers->get_properties(zobj);
 2419|      0|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2419:13): [True: 0, False: 0]
  ------------------
 2420|      0|		*dest = NULL;
 2421|      0|	} else {
 2422|      0|		return 0;
 2423|      0|	}
 2424|      1|	return 1;
 2425|      1|}
zend_API.c:zend_parse_arg_object:
 2451|     17|{
 2452|     17|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     34|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 17, False: 0]
  |  |  ------------------
  ------------------
 2453|     17|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2453:7): [True: 5, False: 12]
  ------------------
 2454|     17|		*dest = arg;
 2455|     17|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2455:13): [True: 0, False: 0]
  ------------------
 2456|      0|		*dest = NULL;
 2457|      0|	} else {
 2458|      0|		return 0;
 2459|      0|	}
 2460|     17|	return 1;
 2461|     17|}
zend_API.c:zend_parse_arg_zval_deref:
 2538|     13|{
 2539|     13|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 13]
  ------------------
 2540|     13|}
zend_API.c:zend_class_default_properties_table:
  465|  20.6k|static zend_always_inline zval *zend_class_default_properties_table(const zend_class_entry *ce) {
  466|  20.6k|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_PROPERTIES) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  334|  20.6k|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_PROPERTIES) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (466:6): [True: 0, False: 20.6k]
  ------------------
  467|      0|		const zend_class_mutable_data *mutable_data =
  468|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  469|      0|		return mutable_data->default_properties_table;
  470|  20.6k|	} else {
  471|  20.6k|		return ce->default_properties_table;
  472|  20.6k|	}
  473|  20.6k|}
zend_ast.c:array_init:
  541|     24|{
  542|     24|	array_init_size(arg, 0);
  543|     24|}
zend_ast.c:array_init_size:
  536|     24|{
  537|     24|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|     24|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     24|		zend_array *__arr = (a);				\
  |  | 1127|     24|		zval *__z = (z);						\
  |  | 1128|     24|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     24|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     24|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     24|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     24|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     24|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     24|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
  538|     24|}
zend_ast.c:zend_call_known_instance_method:
  870|      2|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|      2|}
zend_attributes.c:zend_parse_arg_long:
 2266|      1|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|      1|}
zend_attributes.c:zend_parse_arg_long_ex:
 2246|      1|{
 2247|      1|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 1]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|      1|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2251|      1|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|      1|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 0]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      0|	} else {
 2256|      0|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 0]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      0|		} else {
 2259|      0|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      0|		}
 2261|      0|	}
 2262|      1|	return 1;
 2263|      1|}
zend_attributes.c:zend_parse_arg_zval_deref:
 2538|     29|{
 2539|     29|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 29]
  ------------------
 2540|     29|}
zend_attributes.c:zend_parse_arg_str:
 2329|     85|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|     85|}
zend_attributes.c:zend_parse_arg_str_ex:
 2312|     85|{
 2313|     85|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|     85|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 66, False: 19]
  |  |  ------------------
  ------------------
 2314|     66|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|     66|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     66|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|     66|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|     19|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     19|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|     19|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 19, False: 0]
  |  Branch (2315:27): [True: 14, False: 5]
  ------------------
 2316|     14|		*dest = NULL;
 2317|     14|	} else {
 2318|      5|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 5]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      5|		} else {
 2321|      5|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      5|		}
 2323|      5|		return *dest != NULL;
 2324|      5|	}
 2325|     80|	return true;
 2326|     85|}
zend_autoload.c:zend_call_known_fcc:
  855|     12|{
  856|     12|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|     12|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|      0|		zend_string_addref(func->op_array.function_name);
  862|      0|	}
  863|     12|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|     12|}
zend_autoload.c:zend_fcc_dtor:
  804|     12|{
  805|     12|	ZEND_ASSERT(fcc->function_handler);
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (805:2): [True: 0, False: 12]
  |  Branch (805:2): [True: 12, False: 0]
  ------------------
  806|     12|	if (fcc->object) {
  ------------------
  |  Branch (806:6): [True: 0, False: 12]
  ------------------
  807|      0|		OBJ_RELEASE(fcc->object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  808|      0|	}
  809|       |	/* Need to free potential trampoline (__call/__callStatic) copied function handler before releasing the closure */
  810|     12|	zend_release_fcall_info_cache(fcc);
  811|     12|	if (fcc->closure) {
  ------------------
  |  Branch (811:6): [True: 11, False: 1]
  ------------------
  812|     11|		OBJ_RELEASE(fcc->closure);
  ------------------
  |  |   44|     11|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  813|     11|	}
  814|     12|	*fcc = empty_fcall_info_cache;
  ------------------
  |  |  701|     12|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
  815|     12|}
zend_autoload.c:zend_fcc_addref:
  779|     12|{
  780|     12|	ZEND_ASSERT(ZEND_FCC_INITIALIZED(*fcc) && "FCC Not initialized, possibly refetch trampoline freed by ZPP?");
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (780:2): [True: 0, False: 12]
  |  Branch (780:2): [True: 0, False: 0]
  |  Branch (780:2): [True: 12, False: 0]
  |  Branch (780:2): [True: 12, False: 0]
  ------------------
  781|       |	/* If the cached trampoline is set, free it */
  782|     12|	if (UNEXPECTED(fcc->function_handler == &EG(trampoline))) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  783|      0|		zend_function *copy = (zend_function*)emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  784|       |
  785|      0|		memcpy(copy, fcc->function_handler, sizeof(zend_function));
  786|      0|		fcc->function_handler->common.function_name = NULL;
  787|      0|		fcc->function_handler = copy;
  788|      0|	}
  789|     12|	if (fcc->object) {
  ------------------
  |  Branch (789:6): [True: 0, False: 12]
  ------------------
  790|      0|		GC_ADDREF(fcc->object);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  791|      0|	}
  792|     12|	if (fcc->closure) {
  ------------------
  |  Branch (792:6): [True: 11, False: 1]
  ------------------
  793|     11|		GC_ADDREF(fcc->closure);
  ------------------
  |  |  718|     11|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  794|     11|	}
  795|     12|}
zend_builtin_functions.c:zend_parse_arg_obj:
 2464|      5|{
 2465|      5|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
 2466|      5|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2466:7): [True: 5, False: 0]
  ------------------
 2467|      5|		*dest = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2468|      5|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2468:13): [True: 0, False: 0]
  ------------------
 2469|      0|		*dest = NULL;
 2470|      0|	} else {
 2471|      0|		return 0;
 2472|      0|	}
 2473|      5|	return 1;
 2474|      5|}
zend_builtin_functions.c:zend_parse_arg_array_ht:
 2405|      4|{
 2406|      4|	if (EXPECTED(Z_TYPE_P(arg) == IS_ARRAY)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 2407|      2|		*dest = Z_ARRVAL_P(arg);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|      2|	} else if (or_object && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2408:13): [True: 0, False: 2]
  ------------------
 2409|      0|		zend_object *zobj = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2410|      0|		if (separate
  ------------------
  |  Branch (2410:7): [True: 0, False: 0]
  ------------------
 2411|      0|		 && zobj->properties
  ------------------
  |  Branch (2411:7): [True: 0, False: 0]
  ------------------
 2412|      0|		 && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2413|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2415|      0|			}
 2416|      0|			zobj->properties = zend_array_dup(zobj->properties);
 2417|      0|		}
 2418|      0|		*dest = zobj->handlers->get_properties(zobj);
 2419|      2|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2419:13): [True: 0, False: 2]
  ------------------
 2420|      0|		*dest = NULL;
 2421|      2|	} else {
 2422|      2|		return 0;
 2423|      2|	}
 2424|      2|	return 1;
 2425|      4|}
zend_builtin_functions.c:zend_parse_arg_str_or_long:
 2564|      7|{
 2565|      7|	if (allow_null) {
  ------------------
  |  Branch (2565:6): [True: 0, False: 7]
  ------------------
 2566|      0|		*is_null = 0;
 2567|      0|	}
 2568|      7|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 1]
  |  |  ------------------
  ------------------
 2569|      6|		*dest_str = Z_STR_P(arg);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2570|      6|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2571|      0|		*dest_str = NULL;
 2572|      0|		*dest_long = Z_LVAL_P(arg);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2573|      1|	} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2573:13): [True: 0, False: 1]
  ------------------
 2574|      0|		*dest_str = NULL;
 2575|      0|		*is_null = 1;
 2576|      1|	} else {
 2577|      1|		return zend_parse_arg_str_or_long_slow(arg, dest_str, dest_long, arg_num);
 2578|      1|	}
 2579|      6|	return 1;
 2580|      7|}
zend_builtin_functions.c:array_init_size:
  536|  25.0k|{
  537|  25.0k|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|  25.0k|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|  25.0k|		zend_array *__arr = (a);				\
  |  | 1127|  25.0k|		zval *__z = (z);						\
  |  | 1128|  25.0k|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|  25.0k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  25.0k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|  25.0k|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|  25.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  25.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|  25.0k|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  25.0k|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  25.0k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  25.0k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  25.0k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  25.0k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|  25.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 25.0k]
  |  |  ------------------
  ------------------
  538|  25.0k|}
zend_builtin_functions.c:zend_forbid_dynamic_call:
  905|      5|{
  906|      5|	const zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  907|      5|	ZEND_ASSERT(ex != NULL && ex->func != NULL);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (907:2): [True: 0, False: 5]
  |  Branch (907:2): [True: 0, False: 0]
  |  Branch (907:2): [True: 5, False: 0]
  |  Branch (907:2): [True: 5, False: 0]
  ------------------
  908|       |
  909|      5|	ZEND_ASSERT(ex->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (909:2): [True: 0, False: 5]
  |  Branch (909:2): [True: 5, False: 0]
  ------------------
  910|       |
  911|      5|	if (ZEND_CALL_INFO(ex) & ZEND_CALL_DYNAMIC) {
  ------------------
  |  |  687|      5|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ZEND_CALL_INFO(ex) & ZEND_CALL_DYNAMIC) {
  ------------------
  |  |  671|      5|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
  |  Branch (911:6): [True: 1, False: 4]
  ------------------
  912|      1|		zend_string *function_or_method_name = get_active_function_or_method_name();
  913|      1|		zend_throw_error(NULL, "Cannot call %.*s() dynamically",
  914|      1|			(int) ZSTR_LEN(function_or_method_name), ZSTR_VAL(function_or_method_name));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			(int) ZSTR_LEN(function_or_method_name), ZSTR_VAL(function_or_method_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  915|      1|		zend_string_release(function_or_method_name);
  916|      1|		return FAILURE;
  917|      1|	}
  918|       |
  919|      4|	return SUCCESS;
  920|      5|}
zend_builtin_functions.c:zend_parse_arg_str:
 2329|    168|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|    168|}
zend_builtin_functions.c:zend_parse_arg_long:
 2266|     26|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|     26|}
zend_builtin_functions.c:zend_parse_arg_long_ex:
 2246|     26|{
 2247|     26|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 26, False: 0]
  ------------------
 2248|     26|		*is_null = 0;
 2249|     26|	}
 2250|     26|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|     26|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 24, False: 2]
  |  |  ------------------
  ------------------
 2251|     24|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|     24|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     24|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|     24|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 2, False: 0]
  |  Branch (2252:27): [True: 0, False: 2]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      2|	} else {
 2256|      2|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 2]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      2|		} else {
 2259|      2|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      2|		}
 2261|      2|	}
 2262|     24|	return 1;
 2263|     26|}
zend_builtin_functions.c:zend_parse_arg_zval_deref:
 2538|     55|{
 2539|     55|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 55]
  ------------------
 2540|     55|}
zend_builtin_functions.c:zend_parse_arg_bool:
 2241|      3|{
 2242|       |	return zend_parse_arg_bool_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2243|      3|}
zend_builtin_functions.c:zend_parse_arg_obj_or_class_name:
 2584|      2|) {
 2585|      2|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2586|      2|		*destination = zend_lookup_class(Z_STR_P(arg));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2587|       |
 2588|      2|		return *destination != NULL;
 2589|      2|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2590|      0|		*destination = Z_OBJ_P(arg)->ce;
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2591|      0|	} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2591:13): [True: 0, False: 0]
  ------------------
 2592|      0|		*destination = NULL;
 2593|      0|	} else {
 2594|      0|		return 0;
 2595|      0|	}
 2596|       |
 2597|      0|	return 1;
 2598|      2|}
zend_builtin_functions.c:array_init:
  541|  13.8k|{
  542|  13.8k|	array_init_size(arg, 0);
  543|  13.8k|}
zend_builtin_functions.c:zend_class_default_properties_table:
  465|     10|static zend_always_inline zval *zend_class_default_properties_table(const zend_class_entry *ce) {
  466|     10|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_PROPERTIES) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  334|     10|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_PROPERTIES) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (466:6): [True: 0, False: 10]
  ------------------
  467|      0|		const zend_class_mutable_data *mutable_data =
  468|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  469|      0|		return mutable_data->default_properties_table;
  470|     10|	} else {
  471|     10|		return ce->default_properties_table;
  472|     10|	}
  473|     10|}
zend_builtin_functions.c:zend_parse_arg_str_ex:
 2312|    168|{
 2313|    168|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|    168|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 162, False: 6]
  |  |  ------------------
  ------------------
 2314|    162|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|    162|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    162|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|    162|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 0, False: 6]
  |  Branch (2315:27): [True: 0, False: 0]
  ------------------
 2316|      0|		*dest = NULL;
 2317|      6|	} else {
 2318|      6|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 6]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      6|		} else {
 2321|      6|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      6|		}
 2323|      6|		return *dest != NULL;
 2324|      6|	}
 2325|    162|	return true;
 2326|    168|}
zend_builtin_functions.c:zend_parse_arg_bool_ex:
 2214|      3|{
 2215|      3|	if (check_null) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 3]
  ------------------
 2216|      0|		*is_null = 0;
 2217|      0|	}
 2218|      3|	if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 2219|      0|		*dest = 1;
 2220|      3|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_FALSE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 2221|      0|		*dest = 0;
 2222|      3|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2222:13): [True: 0, False: 3]
  |  Branch (2222:27): [True: 0, False: 0]
  ------------------
 2223|      0|		*is_null = 1;
 2224|      0|		*dest = 0;
 2225|      3|	} else {
 2226|      3|		zpp_parse_bool_status result;
 2227|      3|		if (frameless) {
  ------------------
  |  Branch (2227:7): [True: 0, False: 3]
  ------------------
 2228|      0|			result = zend_flf_parse_arg_bool_slow(arg, arg_num);
 2229|      3|		} else {
 2230|      3|			result = zend_parse_arg_bool_slow(arg, arg_num);
 2231|      3|		}
 2232|      3|		if (UNEXPECTED(result == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 2233|      0|			return false;
 2234|      0|		}
 2235|      3|		*dest = result;
 2236|      3|	}
 2237|      3|	return 1;
 2238|      3|}
zend_builtin_functions.c:zend_parse_arg_func:
 2512|      7|{
 2513|      7|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 7, False: 0]
  ------------------
 2514|      1|		dest_fci->size = 0;
 2515|      1|		dest_fcc->function_handler = NULL;
 2516|      1|		*error = NULL;
 2517|      6|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 2518|      0|		return 0;
 2519|      0|	}
 2520|      7|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 7, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|      7|		zend_release_fcall_info_cache(dest_fcc);
 2525|      7|	}
 2526|      7|	return 1;
 2527|      7|}
zend_closures.c:zend_call_known_fcc:
  855|      8|{
  856|      8|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|      8|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|      0|		zend_string_addref(func->op_array.function_name);
  862|      0|	}
  863|      8|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|      8|}
zend_closures.c:zend_parse_arg_object:
 2451|     21|{
 2452|     21|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     42|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 3]
  |  |  ------------------
  ------------------
 2453|     18|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2453:7): [True: 17, False: 1]
  ------------------
 2454|     18|		*dest = arg;
 2455|     18|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2455:13): [True: 3, False: 0]
  ------------------
 2456|      2|		*dest = NULL;
 2457|      2|	} else {
 2458|      1|		return 0;
 2459|      1|	}
 2460|     20|	return 1;
 2461|     21|}
zend_closures.c:zend_parse_arg_obj_or_str:
 2602|      5|) {
 2603|      5|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 2604|      1|		if (!base_ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), base_ce))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2604:7): [True: 1, False: 0]
  ------------------
 2605|      1|			*destination_object = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2606|      1|			*destination_string = NULL;
 2607|      1|			return 1;
 2608|      1|		}
 2609|      1|	}
 2610|       |
 2611|      4|	*destination_object = NULL;
 2612|      4|	return zend_parse_arg_str(arg, destination_string, allow_null, arg_num);
 2613|      5|}
zend_closures.c:zend_parse_arg_str:
 2329|      4|{
 2330|       |	return zend_parse_arg_str_ex(arg, dest, check_null, arg_num, /* frameless */ false);
 2331|      4|}
zend_closures.c:zend_parse_arg_str_ex:
 2312|      4|{
 2313|      4|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 2314|      3|		*dest = Z_STR_P(arg);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2315|      3|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (2315:13): [True: 1, False: 0]
  |  Branch (2315:27): [True: 1, False: 0]
  ------------------
 2316|      1|		*dest = NULL;
 2317|      1|	} else {
 2318|      0|		if (frameless) {
  ------------------
  |  Branch (2318:7): [True: 0, False: 0]
  ------------------
 2319|      0|			*dest = zend_flf_parse_arg_str_slow(arg, arg_num);
 2320|      0|		} else {
 2321|      0|			*dest = zend_parse_arg_str_slow(arg, arg_num);
 2322|      0|		}
 2323|      0|		return *dest != NULL;
 2324|      0|	}
 2325|      4|	return true;
 2326|      4|}
zend_closures.c:zend_parse_arg_zval_deref:
 2538|     15|{
 2539|     15|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 15]
  ------------------
 2540|     15|}
zend_closures.c:array_init:
  541|     23|{
  542|     23|	array_init_size(arg, 0);
  543|     23|}
zend_closures.c:array_init_size:
  536|     23|{
  537|     23|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|     23|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     23|		zend_array *__arr = (a);				\
  |  | 1127|     23|		zval *__z = (z);						\
  |  | 1128|     23|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     23|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     23|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     23|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     23|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     23|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     23|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     23|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
  538|     23|}
zend_compile.c:array_init_size:
  536|    547|{
  537|    547|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|    547|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|    547|		zend_array *__arr = (a);				\
  |  | 1127|    547|		zval *__z = (z);						\
  |  | 1128|    547|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|    547|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    547|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|    547|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|    547|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    547|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|    547|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    547|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    547|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    547|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    547|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    547|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|    547|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 547]
  |  |  ------------------
  ------------------
  538|    547|}
zend_constants.c:zend_class_constants_table:
  451|     43|static zend_always_inline const HashTable *zend_class_constants_table(const zend_class_entry *ce) {
  452|     43|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  333|     43|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|     32|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 1, False: 31]
  |  |  ------------------
  ------------------
  |  Branch (452:6): [True: 32, False: 11]
  ------------------
  453|      1|		const zend_class_mutable_data *mutable_data =
  454|      1|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      1|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      1|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      1|		if (mutable_data && mutable_data->constants_table) {
  ------------------
  |  Branch (455:7): [True: 0, False: 1]
  |  Branch (455:23): [True: 0, False: 0]
  ------------------
  456|      0|			return mutable_data->constants_table;
  457|      1|		} else {
  458|      1|			return zend_separate_class_constants_table(ce);
  459|      1|		}
  460|     42|	} else {
  461|     42|		return &ce->constants_table;
  462|     42|	}
  463|     43|}
zend_enum.c:zend_class_set_backed_enum_table:
  476|     18|{
  477|     18|	if (ZEND_MAP_PTR(ce->mutable_data) && ce->type == ZEND_USER_CLASS) {
  ------------------
  |  |   31|     18|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (477:40): [True: 0, False: 0]
  ------------------
  478|      0|		zend_class_mutable_data *mutable_data = (zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  479|      0|		mutable_data->backed_enum_table = backed_enum_table;
  480|     18|	} else {
  481|     18|		ce->backed_enum_table = backed_enum_table;
  482|     18|	}
  483|     18|}
zend_enum.c:zend_class_constants_table:
  451|     24|static zend_always_inline const HashTable *zend_class_constants_table(const zend_class_entry *ce) {
  452|     24|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  333|     24|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|     19|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  |  Branch (452:6): [True: 19, False: 5]
  ------------------
  453|      0|		const zend_class_mutable_data *mutable_data =
  454|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      0|		if (mutable_data && mutable_data->constants_table) {
  ------------------
  |  Branch (455:7): [True: 0, False: 0]
  |  Branch (455:23): [True: 0, False: 0]
  ------------------
  456|      0|			return mutable_data->constants_table;
  457|      0|		} else {
  458|      0|			return zend_separate_class_constants_table(ce);
  459|      0|		}
  460|     24|	} else {
  461|     24|		return &ce->constants_table;
  462|     24|	}
  463|     24|}
zend_enum.c:zend_class_backed_enum_table:
  486|     11|{
  487|     11|	if (ZEND_MAP_PTR(ce->mutable_data) && ce->type == ZEND_USER_CLASS) {
  ------------------
  |  |   31|     11|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 2, False: 9]
  |  |  ------------------
  ------------------
  |  Branch (487:40): [True: 0, False: 2]
  ------------------
  488|      0|		const zend_class_mutable_data *mutable_data = (const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|      0|		return mutable_data->backed_enum_table;
  490|     11|	} else {
  491|     11|		return ce->backed_enum_table;
  492|     11|	}
  493|     11|}
zend_enum.c:array_init:
  541|      4|{
  542|      4|	array_init_size(arg, 0);
  543|      4|}
zend_enum.c:array_init_size:
  536|      4|{
  537|      4|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  | 1127|      4|		zval *__z = (z);						\
  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  538|      4|}
zend_enum.c:zend_parse_arg_long:
 2266|      4|{
 2267|       |	return zend_parse_arg_long_ex(arg, dest, is_null, check_null, arg_num, /* frameless */ false);
 2268|      4|}
zend_enum.c:zend_parse_arg_long_ex:
 2246|      4|{
 2247|      4|	if (check_null) {
  ------------------
  |  Branch (2247:6): [True: 0, False: 4]
  ------------------
 2248|      0|		*is_null = 0;
 2249|      0|	}
 2250|      4|	if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 2251|      4|		*dest = Z_LVAL_P(arg);
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2252|      4|	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2252:13): [True: 0, False: 0]
  |  Branch (2252:27): [True: 0, False: 0]
  ------------------
 2253|      0|		*is_null = 1;
 2254|      0|		*dest = 0;
 2255|      0|	} else {
 2256|      0|		if (frameless) {
  ------------------
  |  Branch (2256:7): [True: 0, False: 0]
  ------------------
 2257|      0|			return zend_flf_parse_arg_long_slow(arg, dest, arg_num);
 2258|      0|		} else {
 2259|      0|			return zend_parse_arg_long_slow(arg, dest, arg_num);
 2260|      0|		}
 2261|      0|	}
 2262|      4|	return 1;
 2263|      4|}
zend_enum.c:zend_parse_arg_str_or_long:
 2564|      3|{
 2565|      3|	if (allow_null) {
  ------------------
  |  Branch (2565:6): [True: 0, False: 3]
  ------------------
 2566|      0|		*is_null = 0;
 2567|      0|	}
 2568|      3|	if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 2569|      3|		*dest_str = Z_STR_P(arg);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2570|      3|	} else if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2571|      0|		*dest_str = NULL;
 2572|      0|		*dest_long = Z_LVAL_P(arg);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2573|      0|	} else if (allow_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2573:13): [True: 0, False: 0]
  ------------------
 2574|      0|		*dest_str = NULL;
 2575|      0|		*is_null = 1;
 2576|      0|	} else {
 2577|      0|		return zend_parse_arg_str_or_long_slow(arg, dest_str, dest_long, arg_num);
 2578|      0|	}
 2579|      3|	return 1;
 2580|      3|}
zend_exceptions.c:zend_get_object_type_uc:
  930|      2|{
  931|       |	return zend_get_object_type_case(ce, true);
  932|      2|}
zend_exceptions.c:zend_call_known_instance_method_with_0_params:
  876|    675|{
  877|       |	zend_call_known_instance_method(fn, object, retval_ptr, 0, NULL);
  878|    675|}
zend_exceptions.c:zend_call_known_instance_method:
  870|    675|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|    675|}
zend_execute_API.c:zend_fci_is_consumed_arg:
  348|     20|static zend_always_inline bool zend_fci_is_consumed_arg(uint32_t consumed_args, uint32_t arg_index) {
  349|     20|	return arg_index < 32 && (consumed_args & (UINT32_C(1) << arg_index));
  ------------------
  |  Branch (349:9): [True: 20, False: 0]
  |  Branch (349:27): [True: 14, False: 6]
  ------------------
  350|     20|}
zend_execute_API.c:zend_call_known_fcc:
  855|  5.97k|{
  856|  5.97k|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|  5.97k|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|  5.97k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.33k, False: 4.63k]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|  1.33k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  1.33k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  1.33k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  1.33k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  1.33k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|  1.33k|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|  1.33k|		zend_string_addref(func->op_array.function_name);
  862|  1.33k|	}
  863|  5.97k|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|  5.97k|}
zend_execute.c:zend_str_has_nul_byte:
  955|  3.37k|{
  956|  3.37k|	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   68|  3.37k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) != strlen(ZSTR_VAL(str));
  ------------------
  |  |   67|  3.37k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  957|  3.37k|}
zend_execute.c:array_init:
  541|     18|{
  542|     18|	array_init_size(arg, 0);
  543|     18|}
zend_execute.c:array_init_size:
  536|     45|{
  537|     45|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|     45|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     45|		zend_array *__arr = (a);				\
  |  | 1127|     45|		zval *__z = (z);						\
  |  | 1128|     45|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     45|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     45|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     45|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     45|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     45|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     45|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     45|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     45|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     45|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     45|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     45|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     45|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 45]
  |  |  ------------------
  ------------------
  538|     45|}
zend_execute.c:zend_class_constants_table:
  451|    107|static zend_always_inline const HashTable *zend_class_constants_table(const zend_class_entry *ce) {
  452|    107|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  333|    107|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_CONSTANTS) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|     85|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 85]
  |  |  ------------------
  ------------------
  |  Branch (452:6): [True: 85, False: 22]
  ------------------
  453|      0|		const zend_class_mutable_data *mutable_data =
  454|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      0|		if (mutable_data && mutable_data->constants_table) {
  ------------------
  |  Branch (455:7): [True: 0, False: 0]
  |  Branch (455:23): [True: 0, False: 0]
  ------------------
  456|      0|			return mutable_data->constants_table;
  457|      0|		} else {
  458|      0|			return zend_separate_class_constants_table(ce);
  459|      0|		}
  460|    107|	} else {
  461|    107|		return &ce->constants_table;
  462|    107|	}
  463|    107|}
zend_execute.c:zend_call_known_instance_method_with_0_params:
  876|      2|{
  877|       |	zend_call_known_instance_method(fn, object, retval_ptr, 0, NULL);
  878|      2|}
zend_execute.c:zend_call_known_instance_method:
  870|      2|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|      2|}
zend_fibers.c:zend_parse_arg_func:
 2512|    302|{
 2513|    302|	if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2513:6): [True: 0, False: 302]
  ------------------
 2514|      0|		dest_fci->size = 0;
 2515|      0|		dest_fcc->function_handler = NULL;
 2516|      0|		*error = NULL;
 2517|    302|	} else if (UNEXPECTED(zend_fcall_info_init(arg, 0, dest_fci, dest_fcc, NULL, error) != SUCCESS)) {
  ------------------
  |  |  457|    302|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 302]
  |  |  ------------------
  ------------------
 2518|      0|		return 0;
 2519|      0|	}
 2520|    302|	if (free_trampoline) {
  ------------------
  |  Branch (2520:6): [True: 302, False: 0]
  ------------------
 2521|       |		/* Release call trampolines: The function may not get called, in which case
 2522|       |		 * the trampoline will leak. Force it to be refetched during
 2523|       |		 * zend_call_function instead. */
 2524|    302|		zend_release_fcall_info_cache(dest_fcc);
 2525|    302|	}
 2526|    302|	return 1;
 2527|    302|}
zend_fibers.c:zend_parse_arg_zval_deref:
 2538|      7|{
 2539|      7|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 7]
  ------------------
 2540|      7|}
zend_fibers.c:zend_parse_arg_object:
 2451|      2|{
 2452|      2|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2453|      2|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2453:7): [True: 0, False: 2]
  ------------------
 2454|      2|		*dest = arg;
 2455|      2|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2455:13): [True: 0, False: 0]
  ------------------
 2456|      0|		*dest = NULL;
 2457|      0|	} else {
 2458|      0|		return 0;
 2459|      0|	}
 2460|      2|	return 1;
 2461|      2|}
zend_generators.c:zend_parse_arg_zval_deref:
 2538|     14|{
 2539|     14|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 14]
  ------------------
 2540|     14|}
zend_generators.c:zend_parse_arg_object:
 2451|      4|{
 2452|      4|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 2453|      4|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2453:7): [True: 0, False: 4]
  ------------------
 2454|      3|		*dest = arg;
 2455|      3|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2455:13): [True: 0, False: 1]
  ------------------
 2456|      0|		*dest = NULL;
 2457|      1|	} else {
 2458|      1|		return 0;
 2459|      1|	}
 2460|      3|	return 1;
 2461|      4|}
zend_generators.c:array_init:
  541|      2|{
  542|      2|	array_init_size(arg, 0);
  543|      2|}
zend_generators.c:array_init_size:
  536|      2|{
  537|      2|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  538|      2|}
zend_inheritance.c:zend_get_object_type:
  925|      1|{
  926|       |	return zend_get_object_type_case(ce, false);
  927|      1|}
zend_inheritance.c:zend_get_object_type_uc:
  930|     23|{
  931|       |	return zend_get_object_type_case(ce, true);
  932|     23|}
zend_interfaces.c:zend_call_known_instance_method_with_0_params:
  876|     40|{
  877|       |	zend_call_known_instance_method(fn, object, retval_ptr, 0, NULL);
  878|     40|}
zend_interfaces.c:zend_call_known_instance_method:
  870|     40|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|     40|}
zend_interfaces.c:zend_get_object_type_uc:
  930|      2|{
  931|       |	return zend_get_object_type_case(ce, true);
  932|      2|}
zend_lazy_objects.c:zend_fcc_dtor:
  804|      4|{
  805|      4|	ZEND_ASSERT(fcc->function_handler);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (805:2): [True: 0, False: 4]
  |  Branch (805:2): [True: 4, False: 0]
  ------------------
  806|      4|	if (fcc->object) {
  ------------------
  |  Branch (806:6): [True: 0, False: 4]
  ------------------
  807|      0|		OBJ_RELEASE(fcc->object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  808|      0|	}
  809|       |	/* Need to free potential trampoline (__call/__callStatic) copied function handler before releasing the closure */
  810|      4|	zend_release_fcall_info_cache(fcc);
  811|      4|	if (fcc->closure) {
  ------------------
  |  Branch (811:6): [True: 4, False: 0]
  ------------------
  812|      4|		OBJ_RELEASE(fcc->closure);
  ------------------
  |  |   44|      4|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  813|      4|	}
  814|      4|	*fcc = empty_fcall_info_cache;
  ------------------
  |  |  701|      4|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
  815|      4|}
zend_lazy_objects.c:zend_fcc_dup:
  798|      4|{
  799|      4|	memcpy(dest, src, sizeof(zend_fcall_info_cache));
  800|      4|	zend_fcc_addref(dest);
  801|      4|}
zend_lazy_objects.c:zend_fcc_addref:
  779|      4|{
  780|      4|	ZEND_ASSERT(ZEND_FCC_INITIALIZED(*fcc) && "FCC Not initialized, possibly refetch trampoline freed by ZPP?");
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (780:2): [True: 0, False: 4]
  |  Branch (780:2): [True: 0, False: 0]
  |  Branch (780:2): [True: 4, False: 0]
  |  Branch (780:2): [True: 4, False: 0]
  ------------------
  781|       |	/* If the cached trampoline is set, free it */
  782|      4|	if (UNEXPECTED(fcc->function_handler == &EG(trampoline))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  783|      0|		zend_function *copy = (zend_function*)emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  784|       |
  785|      0|		memcpy(copy, fcc->function_handler, sizeof(zend_function));
  786|      0|		fcc->function_handler->common.function_name = NULL;
  787|      0|		fcc->function_handler = copy;
  788|      0|	}
  789|      4|	if (fcc->object) {
  ------------------
  |  Branch (789:6): [True: 0, False: 4]
  ------------------
  790|      0|		GC_ADDREF(fcc->object);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  791|      0|	}
  792|      4|	if (fcc->closure) {
  ------------------
  |  Branch (792:6): [True: 4, False: 0]
  ------------------
  793|      4|		GC_ADDREF(fcc->closure);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  794|      4|	}
  795|      4|}
zend_lazy_objects.c:zend_class_default_properties_table:
  465|      4|static zend_always_inline zval *zend_class_default_properties_table(const zend_class_entry *ce) {
  466|      4|	if ((ce->ce_flags & ZEND_ACC_HAS_AST_PROPERTIES) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |  334|      4|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_HAS_AST_PROPERTIES) && ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (466:6): [True: 0, False: 4]
  ------------------
  467|      0|		const zend_class_mutable_data *mutable_data =
  468|      0|			(const zend_class_mutable_data*)ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  469|      0|		return mutable_data->default_properties_table;
  470|      4|	} else {
  471|      4|		return ce->default_properties_table;
  472|      4|	}
  473|      4|}
zend_lazy_objects.c:zend_call_known_fcc:
  855|      4|{
  856|      4|	zend_function *func = fcc->function_handler;
  857|       |	/* Need to copy trampolines as they get released after they are called */
  858|      4|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  859|       |		func = (zend_function*) emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|		memcpy(func, fcc->function_handler, sizeof(zend_function));
  861|      0|		zend_string_addref(func->op_array.function_name);
  862|      0|	}
  863|      4|	zend_call_known_function(func, fcc->object, fcc->called_scope, retval_ptr, param_count, params, named_params);
  864|      4|}
zend_object_handlers.c:zend_call_known_instance_method_with_0_params:
  876|  2.08k|{
  877|       |	zend_call_known_instance_method(fn, object, retval_ptr, 0, NULL);
  878|  2.08k|}
zend_object_handlers.c:zend_call_known_instance_method:
  870|  2.11k|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|  2.11k|}
zend_object_handlers.c:zend_call_known_instance_method_with_1_params:
  882|     28|{
  883|     28|	zend_call_known_instance_method(fn, object, retval_ptr, 1, param);
  884|     28|}
zend_object_handlers.c:zend_parse_arg_zval_deref:
 2538|      1|{
 2539|      1|	*dest = (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) ? NULL : arg;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2539:11): [True: 0, False: 1]
  ------------------
 2540|      1|}
zend_objects.c:zend_call_known_instance_method_with_0_params:
  876|  1.69k|{
  877|       |	zend_call_known_instance_method(fn, object, retval_ptr, 0, NULL);
  878|  1.69k|}
zend_objects.c:zend_call_known_instance_method:
  870|  1.69k|{
  871|       |	zend_call_known_function(fn, object, object->ce, retval_ptr, param_count, params, NULL);
  872|  1.69k|}
zend_weakrefs.c:zend_parse_arg_obj:
 2464|      5|{
 2465|      5|	if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT) &&
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
 2466|      5|	    (!ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), ce) != 0))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2466:7): [True: 5, False: 0]
  ------------------
 2467|      5|		*dest = Z_OBJ_P(arg);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2468|      5|	} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2468:13): [True: 0, False: 0]
  ------------------
 2469|      0|		*dest = NULL;
 2470|      0|	} else {
 2471|      0|		return 0;
 2472|      0|	}
 2473|      5|	return 1;
 2474|      5|}
zend_weakrefs.c:array_init:
  541|      2|{
  542|      2|	array_init_size(arg, 0);
  543|      2|}
zend_weakrefs.c:array_init_size:
  536|      2|{
  537|      2|	ZVAL_ARR(arg, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  538|      2|}
zend_weakrefs.c:add_assoc_object:
  595|      2|static zend_always_inline void add_assoc_object(zval *arg, const char *key, zend_object *obj) {
  596|      2|	add_assoc_object_ex(arg, key, strlen(key), obj);
  597|      2|}
zend_weakrefs.c:add_assoc_zval:
  601|      2|static zend_always_inline void add_assoc_zval(zval *arg, const char *key, zval *value) {
  602|      2|	add_assoc_zval_ex(arg, key, strlen(key), value);
  603|      2|}

zend_mm_shutdown:
 2433|  33.5k|{
 2434|  33.5k|	zend_mm_chunk *p;
 2435|  33.5k|	zend_mm_huge_list *list;
 2436|       |
 2437|  33.5k|#if ZEND_MM_CUSTOM
 2438|  33.5k|	if (heap->use_custom_heap) {
  ------------------
  |  Branch (2438:6): [True: 33.5k, False: 0]
  ------------------
 2439|  33.5k|		if (heap->custom_heap._malloc == tracked_malloc) {
  ------------------
  |  Branch (2439:7): [True: 33.5k, False: 0]
  ------------------
 2440|  33.5k|			if (silent) {
  ------------------
  |  Branch (2440:8): [True: 911, False: 32.6k]
  ------------------
 2441|    911|				tracked_free_all(heap);
 2442|    911|			}
 2443|  33.5k|			zend_hash_clean(heap->tracked_allocs);
 2444|  33.5k|			if (full) {
  ------------------
  |  Branch (2444:8): [True: 0, False: 33.5k]
  ------------------
 2445|      0|				zend_hash_destroy(heap->tracked_allocs);
 2446|      0|				free(heap->tracked_allocs);
 2447|       |				/* Make sure the heap free below does not use tracked_free(). */
 2448|      0|				heap->custom_heap._free = __zend_free;
 2449|      0|			}
 2450|  33.5k|#if ZEND_MM_STAT
 2451|  33.5k|			heap->size = 0;
 2452|  33.5k|			heap->real_size = 0;
 2453|  33.5k|#endif
 2454|  33.5k|		}
 2455|       |
 2456|  33.5k|		void (*shutdown)(bool, bool) = heap->custom_heap._shutdown;
 2457|       |
 2458|  33.5k|		if (full) {
  ------------------
  |  Branch (2458:7): [True: 0, False: 33.5k]
  ------------------
 2459|      0|			heap->custom_heap._free(heap ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC);
  ------------------
  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  ------------------
  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  ------------------
  ------------------
              			heap->custom_heap._free(heap ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC);
  ------------------
  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  ------------------
  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  ------------------
  ------------------
 2460|      0|		}
 2461|       |
 2462|  33.5k|		if (shutdown) {
  ------------------
  |  Branch (2462:7): [True: 0, False: 33.5k]
  ------------------
 2463|      0|			shutdown(full, silent);
 2464|      0|		}
 2465|       |
 2466|  33.5k|		return;
 2467|  33.5k|	}
 2468|      0|#endif
 2469|       |
 2470|      0|#if ZEND_DEBUG
 2471|      0|	if (!silent) {
  ------------------
  |  Branch (2471:6): [True: 0, False: 0]
  ------------------
 2472|      0|		char *tmp = getenv("ZEND_ALLOC_PRINT_LEAKS");
 2473|      0|		if (!tmp || ZEND_ATOL(tmp)) {
  ------------------
  |  |   67|      0|#  define ZEND_ATOL(s) atoll((s))
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2473:7): [True: 0, False: 0]
  ------------------
 2474|      0|			zend_mm_check_leaks(heap);
 2475|      0|		}
 2476|      0|	}
 2477|      0|#endif
 2478|       |
 2479|       |	/* free huge blocks */
 2480|      0|	list = heap->huge_list;
 2481|      0|	heap->huge_list = NULL;
 2482|      0|	while (list) {
  ------------------
  |  Branch (2482:9): [True: 0, False: 0]
  ------------------
 2483|      0|		zend_mm_huge_list *q = list;
 2484|      0|		list = list->next;
 2485|      0|		zend_mm_chunk_free(heap, q->ptr, q->size);
 2486|      0|	}
 2487|       |
 2488|       |	/* move all chunks except of the first one into the cache */
 2489|      0|	p = heap->main_chunk->next;
 2490|      0|	while (p != heap->main_chunk) {
  ------------------
  |  Branch (2490:9): [True: 0, False: 0]
  ------------------
 2491|      0|		zend_mm_chunk *q = p->next;
 2492|      0|		p->next = heap->cached_chunks;
 2493|      0|		heap->cached_chunks = p;
 2494|      0|		p = q;
 2495|      0|		heap->chunks_count--;
 2496|      0|		heap->cached_chunks_count++;
 2497|      0|	}
 2498|       |
 2499|      0|	if (full) {
  ------------------
  |  Branch (2499:6): [True: 0, False: 0]
  ------------------
 2500|       |		/* free all cached chunks */
 2501|      0|		while (heap->cached_chunks) {
  ------------------
  |  Branch (2501:10): [True: 0, False: 0]
  ------------------
 2502|      0|			p = heap->cached_chunks;
 2503|      0|			heap->cached_chunks = p->next;
 2504|      0|			zend_mm_chunk_free(heap, p, ZEND_MM_CHUNK_SIZE);
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2505|      0|		}
 2506|       |		/* free the first chunk */
 2507|      0|		zend_mm_chunk_free(heap, heap->main_chunk, ZEND_MM_CHUNK_SIZE);
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2508|      0|	} else {
 2509|       |		/* free some cached chunks to keep average count */
 2510|      0|		heap->avg_chunks_count = (heap->avg_chunks_count + (double)heap->peak_chunks_count) / 2.0;
 2511|      0|		while ((double)heap->cached_chunks_count + 0.9 > heap->avg_chunks_count &&
  ------------------
  |  Branch (2511:10): [True: 0, False: 0]
  ------------------
 2512|      0|		       heap->cached_chunks) {
  ------------------
  |  Branch (2512:10): [True: 0, False: 0]
  ------------------
 2513|      0|			p = heap->cached_chunks;
 2514|      0|			heap->cached_chunks = p->next;
 2515|      0|			zend_mm_chunk_free(heap, p, ZEND_MM_CHUNK_SIZE);
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2516|      0|			heap->cached_chunks_count--;
 2517|      0|		}
 2518|       |		/* clear cached chunks */
 2519|      0|		p = heap->cached_chunks;
 2520|      0|		while (p != NULL) {
  ------------------
  |  Branch (2520:10): [True: 0, False: 0]
  ------------------
 2521|      0|			zend_mm_chunk *q = p->next;
 2522|      0|			memset(p, 0, sizeof(zend_mm_chunk));
 2523|      0|			p->next = q;
 2524|      0|			p = q;
 2525|      0|		}
 2526|       |
 2527|       |		/* reinitialize the first chunk and heap */
 2528|      0|		p = heap->main_chunk;
 2529|      0|		p->heap = &p->heap_slot;
 2530|      0|		p->next = p;
 2531|      0|		p->prev = p;
 2532|      0|		p->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
  ------------------
  |  |   23|      0|#define ZEND_MM_PAGES      (ZEND_MM_CHUNK_SIZE / ZEND_MM_PAGE_SIZE)  /* 512 */
  |  |  ------------------
  |  |  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  |  |  ------------------
  |  |               #define ZEND_MM_PAGES      (ZEND_MM_CHUNK_SIZE / ZEND_MM_PAGE_SIZE)  /* 512 */
  |  |  ------------------
  |  |  |  |   22|      0|#define ZEND_MM_PAGE_SIZE  (4 * 1024)                      /* 4 KB  */
  |  |  ------------------
  ------------------
              		p->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
  ------------------
  |  |   24|      0|#define ZEND_MM_FIRST_PAGE (1)
  ------------------
 2533|      0|		p->free_tail = ZEND_MM_FIRST_PAGE;
  ------------------
  |  |   24|      0|#define ZEND_MM_FIRST_PAGE (1)
  ------------------
 2534|      0|		p->num = 0;
 2535|       |
 2536|      0|#if ZEND_MM_STAT
 2537|      0|		heap->size = heap->peak = 0;
 2538|      0|#endif
 2539|      0|		memset(heap->free_slot, 0, sizeof(heap->free_slot));
 2540|      0|#if ZEND_MM_STAT || ZEND_MM_LIMIT
 2541|      0|		heap->real_size = (heap->cached_chunks_count + 1) * ZEND_MM_CHUNK_SIZE;
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2542|      0|#endif
 2543|      0|#if ZEND_MM_STAT
 2544|      0|		heap->real_peak = (heap->cached_chunks_count + 1) * ZEND_MM_CHUNK_SIZE;
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2545|      0|#endif
 2546|      0|		heap->chunks_count = 1;
 2547|      0|		heap->peak_chunks_count = 1;
 2548|      0|		heap->last_chunks_delete_boundary = 0;
 2549|      0|		heap->last_chunks_delete_count = 0;
 2550|       |
 2551|      0|		memset(p->free_map, 0, sizeof(p->free_map) + sizeof(p->map));
 2552|      0|		p->free_map[0] = (1L << ZEND_MM_FIRST_PAGE) - 1;
  ------------------
  |  |   24|      0|#define ZEND_MM_FIRST_PAGE (1)
  ------------------
 2553|      0|		p->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
  ------------------
  |  |  212|      0|#define ZEND_MM_LRUN(count)              (ZEND_MM_IS_LRUN | ((count) << ZEND_MM_LRUN_PAGES_OFFSET))
  |  |  ------------------
  |  |  |  |  191|      0|#define ZEND_MM_IS_LRUN                  0x40000000
  |  |  ------------------
  |  |               #define ZEND_MM_LRUN(count)              (ZEND_MM_IS_LRUN | ((count) << ZEND_MM_LRUN_PAGES_OFFSET))
  |  |  ------------------
  |  |  |  |  195|      0|#define ZEND_MM_LRUN_PAGES_OFFSET        0
  |  |  ------------------
  ------------------
 2554|       |
 2555|      0|#if ZEND_DEBUG
 2556|      0|		ZEND_ASSERT(getpid() == heap->pid
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2556:3): [True: 0, False: 0]
  |  Branch (2556:3): [True: 0, False: 0]
  |  Branch (2556:3): [True: 0, False: 0]
  |  Branch (2556:3): [True: 0, False: 0]
  ------------------
 2557|      0|				&& "heap was re-used without calling zend_mm_refresh_key_child() after a fork");
 2558|      0|#endif
 2559|       |
 2560|      0|		zend_mm_refresh_key(heap);
 2561|      0|	}
 2562|      0|}
is_zend_mm:
 2624|      1|{
 2625|      1|#if ZEND_MM_CUSTOM
 2626|      1|	return !AG(mm_heap)->use_custom_heap;
  ------------------
  |  | 2619|      1|# define AG(v) (alloc_globals.v)
  ------------------
 2627|       |#else
 2628|       |	return true;
 2629|       |#endif
 2630|      1|}
_emalloc:
 2775|  8.46M|{
 2776|  8.46M|#if ZEND_MM_CUSTOM
 2777|  8.46M|	if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
  ------------------
  |  |  457|  8.46M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8.46M, False: 0]
  |  |  ------------------
  ------------------
 2778|  8.46M|		return AG(mm_heap)->custom_heap._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
  ------------------
  |  | 2619|  8.46M|# define AG(v) (alloc_globals.v)
  ------------------
              		return AG(mm_heap)->custom_heap._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
  ------------------
  |  |  479|  8.46M|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|  8.46M|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              		return AG(mm_heap)->custom_heap._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
  ------------------
  |  |  485|  8.46M|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|  8.46M|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2779|  8.46M|	}
 2780|      0|#endif
 2781|      0|	return zend_mm_alloc_heap(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|      0|# define AG(v) (alloc_globals.v)
  ------------------
              	return zend_mm_alloc_heap(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|      0|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|      0|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	return zend_mm_alloc_heap(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|      0|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|      0|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2782|  8.46M|}
_efree:
 2785|  8.57M|{
 2786|  8.57M|#if ZEND_MM_CUSTOM
 2787|  8.57M|	if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
  ------------------
  |  |  457|  8.57M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8.57M, False: 0]
  |  |  ------------------
  ------------------
 2788|  8.57M|		AG(mm_heap)->custom_heap._free(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|  8.57M|# define AG(v) (alloc_globals.v)
  ------------------
              		AG(mm_heap)->custom_heap._free(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|  8.57M|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|  8.57M|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              		AG(mm_heap)->custom_heap._free(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|  8.57M|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|  8.57M|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2789|  8.57M|		return;
 2790|  8.57M|	}
 2791|      0|#endif
 2792|      0|	zend_mm_free_heap(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|      0|# define AG(v) (alloc_globals.v)
  ------------------
              	zend_mm_free_heap(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|      0|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|      0|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	zend_mm_free_heap(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|      0|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|      0|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2793|      0|}
_erealloc:
 2796|   219k|{
 2797|   219k|#if ZEND_MM_CUSTOM
 2798|   219k|	if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
  ------------------
  |  |  457|   219k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 219k, False: 0]
  |  |  ------------------
  ------------------
 2799|   219k|		return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|   219k|# define AG(v) (alloc_globals.v)
  ------------------
              		return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|   219k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|   219k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              		return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|   219k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|   219k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2800|   219k|	}
 2801|      0|#endif
 2802|      0|	return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 0, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|      0|# define AG(v) (alloc_globals.v)
  ------------------
              	return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 0, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|      0|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|      0|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 0, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|      0|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|      0|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2803|   219k|}
_erealloc2:
 2806|    371|{
 2807|    371|#if ZEND_MM_CUSTOM
 2808|    371|	if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
  ------------------
  |  |  457|    371|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 371, False: 0]
  |  |  ------------------
  ------------------
 2809|    371|		return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|    371|# define AG(v) (alloc_globals.v)
  ------------------
              		return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|    371|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|    371|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              		return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|    371|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|    371|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2810|    371|	}
 2811|      0|#endif
 2812|      0|	return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 1, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  | 2619|      0|# define AG(v) (alloc_globals.v)
  ------------------
              	return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 1, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|      0|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|      0|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 1, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|      0|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|      0|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2813|    371|}
_safe_emalloc:
 2821|  1.45k|{
 2822|  1.45k|	return _emalloc(zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|  1.45k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|  1.45k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	return _emalloc(zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|  1.45k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|  1.45k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2823|  1.45k|}
_safe_erealloc:
 2831|  34.6k|{
 2832|  34.6k|	return _erealloc(ptr, zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|  34.6k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|  34.6k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	return _erealloc(ptr, zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|  34.6k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|  34.6k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2833|  34.6k|}
_ecalloc:
 2841|   283k|{
 2842|   283k|	void *p;
 2843|       |
 2844|   283k|	size = zend_safe_address_guarded(nmemb, size, 0);
 2845|   283k|	p = _emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|   283k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|   283k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	p = _emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|   283k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|   283k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2846|   283k|	memset(p, 0, size);
 2847|   283k|	return p;
 2848|   283k|}
_estrdup:
 2851|  36.2k|{
 2852|  36.2k|	size_t length;
 2853|  36.2k|	char *p;
 2854|       |
 2855|  36.2k|	length = strlen(s);
 2856|  36.2k|	if (UNEXPECTED(length + 1 == 0)) {
  ------------------
  |  |  457|  36.2k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 36.2k]
  |  |  ------------------
  ------------------
 2857|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (1 * %zu + 1)", length);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 2858|      0|	}
 2859|  36.2k|	p = (char *) _emalloc(length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|  36.2k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|  36.2k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	p = (char *) _emalloc(length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|  36.2k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|  36.2k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2860|  36.2k|	memcpy(p, s, length+1);
 2861|  36.2k|	return p;
 2862|  36.2k|}
_estrndup:
 2865|  60.0k|{
 2866|  60.0k|	char *p;
 2867|       |
 2868|  60.0k|	if (UNEXPECTED(length + 1 == 0)) {
  ------------------
  |  |  457|  60.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 60.0k]
  |  |  ------------------
  ------------------
 2869|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (1 * %zu + 1)", length);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 2870|      0|	}
 2871|  60.0k|	p = (char *) _emalloc(length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|  60.0k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|  60.0k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	p = (char *) _emalloc(length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|  60.0k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|  60.0k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 2872|  60.0k|	memcpy(p, s, length);
 2873|  60.0k|	p[length] = 0;
 2874|  60.0k|	return p;
 2875|  60.0k|}
zend_set_memory_limit:
 2898|  34.3k|{
 2899|  34.3k|#if ZEND_MM_LIMIT
 2900|  34.3k|	zend_mm_heap *heap = AG(mm_heap);
  ------------------
  |  | 2619|  34.3k|# define AG(v) (alloc_globals.v)
  ------------------
 2901|       |
 2902|  34.3k|	if (UNEXPECTED(memory_limit < heap->real_size)) {
  ------------------
  |  |  457|  34.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 34.3k]
  |  |  ------------------
  ------------------
 2903|     14|		if (memory_limit >= heap->real_size - heap->cached_chunks_count * ZEND_MM_CHUNK_SIZE) {
  ------------------
  |  |   21|     14|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
  |  Branch (2903:7): [True: 0, False: 14]
  ------------------
 2904|       |			/* free some cached chunks to fit into new memory limit */
 2905|      0|			do {
 2906|      0|				zend_mm_chunk *p = heap->cached_chunks;
 2907|      0|				heap->cached_chunks = p->next;
 2908|      0|				zend_mm_chunk_free(heap, p, ZEND_MM_CHUNK_SIZE);
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2909|      0|				heap->cached_chunks_count--;
 2910|      0|				heap->real_size -= ZEND_MM_CHUNK_SIZE;
  ------------------
  |  |   21|      0|#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024))    /* 2 MB  */
  ------------------
 2911|      0|			} while (memory_limit < heap->real_size);
  ------------------
  |  Branch (2911:13): [True: 0, False: 0]
  ------------------
 2912|      0|			return SUCCESS;
 2913|      0|		}
 2914|     14|		return FAILURE;
 2915|     14|	}
 2916|  34.3k|	AG(mm_heap)->limit = memory_limit;
  ------------------
  |  | 2619|  34.3k|# define AG(v) (alloc_globals.v)
  ------------------
 2917|  34.3k|#endif
 2918|  34.3k|	return SUCCESS;
 2919|  34.3k|}
zend_alloc_in_memory_limit_error_reporting:
 2922|  53.4k|{
 2923|  53.4k|#if ZEND_MM_LIMIT
 2924|  53.4k|	return AG(mm_heap)->overflow;
  ------------------
  |  | 2619|  53.4k|# define AG(v) (alloc_globals.v)
  ------------------
 2925|       |#else
 2926|       |	return false;
 2927|       |#endif
 2928|  53.4k|}
zend_memory_usage:
 2931|     14|{
 2932|     14|#if ZEND_MM_STAT
 2933|     14|	if (real_usage) {
  ------------------
  |  Branch (2933:6): [True: 14, False: 0]
  ------------------
 2934|     14|		return AG(mm_heap)->real_size;
  ------------------
  |  | 2619|     14|# define AG(v) (alloc_globals.v)
  ------------------
 2935|     14|	} else {
 2936|      0|		size_t usage = AG(mm_heap)->size;
  ------------------
  |  | 2619|      0|# define AG(v) (alloc_globals.v)
  ------------------
 2937|      0|		return usage;
 2938|      0|	}
 2939|      0|#endif
 2940|      0|	return 0;
 2941|     14|}
shutdown_memory_manager:
 2964|  33.5k|{
 2965|  33.5k|	zend_mm_shutdown(AG(mm_heap), full_shutdown, silent);
  ------------------
  |  | 2619|  33.5k|# define AG(v) (alloc_globals.v)
  ------------------
 2966|  33.5k|}
start_memory_manager:
 3329|      2|{
 3330|      2|#ifndef _WIN32
 3331|      2|#  if defined(_SC_PAGESIZE)
 3332|      2|	REAL_PAGE_SIZE = sysconf(_SC_PAGESIZE);
  ------------------
  |  |  103|      2|#    define REAL_PAGE_SIZE _real_page_size
  ------------------
 3333|       |#  elif defined(_SC_PAGE_SIZE)
 3334|       |	REAL_PAGE_SIZE = sysconf(_SC_PAGE_SIZE);
 3335|       |#  endif
 3336|      2|#endif
 3337|       |#ifdef ZTS
 3338|       |	ts_allocate_fast_id(&alloc_globals_id, &alloc_globals_offset, sizeof(zend_alloc_globals), (ts_allocate_ctor) alloc_globals_ctor, (ts_allocate_dtor) alloc_globals_dtor);
 3339|       |#else
 3340|      2|	alloc_globals_ctor(&alloc_globals);
 3341|      2|#endif
 3342|      2|}
__zend_malloc:
 3542|  23.4k|{
 3543|  23.4k|	void *tmp = malloc(len);
 3544|  23.4k|	if (EXPECTED(tmp || !len)) {
  ------------------
  |  |  456|  23.4k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 23.4k, False: 0]
  |  |  |  Branch (456:52): [True: 23.4k, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3545|  23.4k|		return tmp;
 3546|  23.4k|	}
 3547|      0|	zend_out_of_memory();
 3548|  23.4k|}
__zend_realloc:
 3561|   221k|{
 3562|   221k|	p = realloc(p, len);
 3563|   221k|	if (EXPECTED(p || !len)) {
  ------------------
  |  |  456|   221k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 221k, False: 0]
  |  |  |  Branch (456:52): [True: 221k, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3564|   221k|		return p;
 3565|   221k|	}
 3566|      0|	zend_out_of_memory();
 3567|   221k|}
zend_alloc.c:zend_mm_safe_error:
  402|     19|{
  403|       |
  404|     19|	heap->overflow = 1;
  405|     19|	zend_try {
  ------------------
  |  |  276|     19|	{															\
  |  |  277|     19|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|     19|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|     19|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|     19|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|     19|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|     19|																\
  |  |  280|     19|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|     19|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|     19|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|     19|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 19, False: 0]
  |  |  ------------------
  ------------------
  406|     19|		zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|     19|#define E_ERROR				(1<<0L)
  ------------------
  407|     19|			format,
  408|     19|			limit,
  409|     19|#if ZEND_DEBUG
  410|     19|			filename,
  411|     19|			lineno,
  412|     19|#endif
  413|     19|			size);
  414|     19|	} zend_catch {
  ------------------
  |  |  283|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|      0|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|     19|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|     19|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (414:4): [True: 0, False: 0]
  |  Branch (414:4): [True: 0, False: 0]
  |  Branch (414:4): [True: 0, False: 0]
  |  Branch (414:4): [True: 19, False: 18.4E]
  ------------------
  415|     19|	}  zend_end_try();
  ------------------
  |  |  288|     19|		}														\
  |  |  289|     19|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|     19|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|     19|	}
  ------------------
  416|     19|	heap->overflow = 0;
  417|     19|	zend_bailout();
  ------------------
  |  |  273|     19|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
  418|      0|	exit(1);
  419|     19|}
zend_alloc.c:tracked_malloc:
 3012|  8.46M|{
 3013|  8.46M|	zend_mm_heap *heap = AG(mm_heap);
  ------------------
  |  | 2619|  8.46M|# define AG(v) (alloc_globals.v)
  ------------------
 3014|  8.46M|	tracked_check_limit(heap, size);
 3015|       |
 3016|  8.46M|	void *ptr = malloc(size);
 3017|  8.46M|	if (!ptr) {
  ------------------
  |  Branch (3017:6): [True: 0, False: 8.46M]
  ------------------
 3018|      0|		zend_out_of_memory();
 3019|      0|	}
 3020|       |
 3021|  8.46M|	tracked_add(heap, ptr, size);
 3022|  8.46M|#if ZEND_MM_STAT
 3023|  8.46M|	heap->size += size;
 3024|  8.46M|	heap->real_size = heap->size;
 3025|  8.46M|#endif
 3026|  8.46M|	return ptr;
 3027|  8.46M|}
zend_alloc.c:tracked_check_limit:
 2995|  8.56M|static zend_always_inline void tracked_check_limit(zend_mm_heap *heap, size_t add_size) {
 2996|  8.56M|#if ZEND_MM_STAT
 2997|  8.56M|	if (add_size > heap->limit - heap->size && !heap->overflow) {
  ------------------
  |  Branch (2997:6): [True: 19, False: 8.56M]
  |  Branch (2997:45): [True: 19, False: 0]
  ------------------
 2998|     19|#if ZEND_DEBUG
 2999|     19|		zend_mm_safe_error(heap,
 3000|     19|			"Allowed memory size of %zu bytes exhausted at %s:%d (tried to allocate %zu bytes)",
 3001|     19|			heap->limit, "file", 0, add_size);
 3002|       |#else
 3003|       |		zend_mm_safe_error(heap,
 3004|       |			"Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)",
 3005|       |			heap->limit, add_size);
 3006|       |#endif
 3007|     19|	}
 3008|  8.56M|#endif
 3009|  8.56M|}
zend_alloc.c:tracked_add:
 2980|  8.68M|static zend_always_inline void tracked_add(zend_mm_heap *heap, void *ptr, size_t size) {
 2981|  8.68M|	zval size_zv;
 2982|  8.68M|	zend_ulong h = ((uintptr_t) ptr) >> ZEND_MM_ALIGNMENT_LOG2;
  ------------------
  |  | 2117|  8.68M|#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3
  ------------------
 2983|  8.68M|	ZEND_ASSERT((void *) (uintptr_t) (h << ZEND_MM_ALIGNMENT_LOG2) == ptr);
  ------------------
  |  |  112|  8.68M|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2983:2): [True: 0, False: 8.68M]
  |  Branch (2983:2): [True: 8.68M, False: 0]
  ------------------
 2984|  8.68M|	ZVAL_LONG(&size_zv, size);
  ------------------
  |  | 1076|  8.68M|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  8.68M|		zval *__z = (z);				\
  |  | 1078|  8.68M|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  8.68M|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  8.68M|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  8.68M|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  8.68M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  8.68M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  8.68M|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  8.68M|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 8.68M]
  |  |  ------------------
  ------------------
 2985|  8.68M|	zend_hash_index_add_new(heap->tracked_allocs, h, &size_zv);
 2986|  8.68M|}
zend_alloc.c:tracked_free_all:
 3071|    911|static void tracked_free_all(zend_mm_heap *heap) {
 3072|    911|	HashTable *tracked_allocs = heap->tracked_allocs;
 3073|    911|	zend_ulong h;
 3074|   197k|	ZEND_HASH_FOREACH_NUM_KEY(tracked_allocs, h) {
  ------------------
  |  | 1145|   163k|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|    911|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|    911|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|    911|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|    911|		zend_ulong __h; \
  |  |  |  |  |  | 1048|    911|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|    911|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|    911|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|    911|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    911|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    911|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    911|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|    911|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|    911|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    911|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|   163k|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 163k, False: 911]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|   163k|			zval *_z = __z; \
  |  |  |  |  |  | 1055|   163k|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|   163k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|   163k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|   163k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 163k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|   163k|			} else { \
  |  |  |  |  |  | 1060|   163k|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|   163k|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|   163k|				__h = _p->h; \
  |  |  |  |  |  | 1063|   163k|				__key = _p->key; \
  |  |  |  |  |  | 1064|   163k|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|   163k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 163k]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|   163k|			} \
  |  |  |  |  |  | 1068|   163k|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|   163k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|   163k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 129k, False: 33.6k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1146|  33.6k|	_h = __h;
  ------------------
 3075|   197k|		void *ptr = (void *) (uintptr_t) (h << ZEND_MM_ALIGNMENT_LOG2);
  ------------------
  |  | 2117|  33.6k|#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3
  ------------------
 3076|   197k|		free(ptr);
 3077|   197k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  33.6k|		} \
  |  | 1102|    911|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 911]
  |  |  ------------------
  ------------------
 3078|    911|}
zend_alloc.c:alloc_globals_ctor:
 3276|      2|{
 3277|      2|	char *tmp;
 3278|       |
 3279|      2|#if ZEND_MM_CUSTOM
 3280|      2|	tmp = getenv("USE_ZEND_ALLOC");
 3281|      2|	if (tmp && !ZEND_ATOL(tmp)) {
  ------------------
  |  |   67|      2|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  |  Branch (3281:6): [True: 2, False: 0]
  |  Branch (3281:13): [True: 2, False: 0]
  ------------------
 3282|      2|		bool tracked = (tmp = getenv("USE_TRACKED_ALLOC")) && ZEND_ATOL(tmp);
  ------------------
  |  |   67|      4|#  define ZEND_ATOL(s) atoll((s))
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3282:18): [True: 2, False: 0]
  ------------------
 3283|      2|		zend_mm_heap *mm_heap = alloc_globals->mm_heap = malloc(sizeof(zend_mm_heap));
 3284|      2|		memset(mm_heap, 0, sizeof(zend_mm_heap));
 3285|      2|		mm_heap->use_custom_heap = ZEND_MM_CUSTOM_HEAP_STD;
  ------------------
  |  |  272|      2|#define ZEND_MM_CUSTOM_HEAP_STD   1
  ------------------
 3286|      2|		mm_heap->limit = (size_t)Z_L(-1) >> 1;
  ------------------
  |  |   37|      2|# define Z_L(i) INT64_C(i)
  ------------------
 3287|      2|		mm_heap->overflow = 0;
 3288|       |
 3289|      2|		if (!tracked) {
  ------------------
  |  Branch (3289:7): [True: 0, False: 2]
  ------------------
 3290|       |			/* Use system allocator. */
 3291|      0|			mm_heap->custom_heap._malloc = __zend_malloc;
 3292|      0|			mm_heap->custom_heap._free = __zend_free;
 3293|      0|			mm_heap->custom_heap._realloc = __zend_realloc;
 3294|      2|		} else {
 3295|       |			/* Use system allocator and track allocations for auto-free. */
 3296|      2|			mm_heap->custom_heap._malloc = tracked_malloc;
 3297|      2|			mm_heap->custom_heap._free = tracked_free;
 3298|      2|			mm_heap->custom_heap._realloc = tracked_realloc;
 3299|      2|			mm_heap->tracked_allocs = malloc(sizeof(HashTable));
 3300|      2|			zend_hash_init(mm_heap->tracked_allocs, 1024, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 3301|      2|		}
 3302|      2|		return;
 3303|      2|	}
 3304|      0|#endif
 3305|       |
 3306|      0|	tmp = getenv("USE_ZEND_ALLOC_HUGE_PAGES");
 3307|      0|	if (tmp && ZEND_ATOL(tmp)) {
  ------------------
  |  |   67|      0|#  define ZEND_ATOL(s) atoll((s))
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3307:6): [True: 0, False: 0]
  ------------------
 3308|      0|		zend_mm_use_huge_pages = true;
 3309|      0|	}
 3310|      0|	alloc_globals->mm_heap = zend_mm_init();
 3311|       |
 3312|      0|#if ZEND_MM_CUSTOM
 3313|      0|	ZEND_ASSERT(!alloc_globals->mm_heap->tracked_allocs);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3313:2): [True: 0, False: 0]
  |  Branch (3313:2): [True: 0, False: 0]
  ------------------
 3314|      0|	tmp = getenv("ZEND_MM_DEBUG");
 3315|      0|	if (tmp) {
  ------------------
  |  Branch (3315:6): [True: 0, False: 0]
  ------------------
 3316|      0|		poison_enable(alloc_globals->mm_heap, tmp);
 3317|      0|	}
 3318|      0|#endif
 3319|      0|}
zend_alloc.c:tracked_free:
 3029|  8.57M|static void tracked_free(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) {
 3030|  8.57M|	if (!ptr) {
  ------------------
  |  Branch (3030:6): [True: 101k, False: 8.47M]
  ------------------
 3031|   101k|		return;
 3032|   101k|	}
 3033|       |
 3034|  8.47M|	zend_mm_heap *heap = AG(mm_heap);
  ------------------
  |  | 2619|  8.47M|# define AG(v) (alloc_globals.v)
  ------------------
 3035|  8.47M|	zval *size_zv = tracked_get_size_zv(heap, ptr);
 3036|  8.47M|#if ZEND_MM_STAT
 3037|  8.47M|	heap->size -= Z_LVAL_P(size_zv);
  ------------------
  |  |  976|  8.47M|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  8.47M|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 3038|  8.47M|	heap->real_size = heap->size;
 3039|  8.47M|#endif
 3040|  8.47M|	zend_hash_del_bucket(heap->tracked_allocs, (Bucket *) size_zv);
 3041|  8.47M|	free(ptr);
 3042|  8.47M|}
zend_alloc.c:tracked_get_size_zv:
 2988|  8.64M|static zend_always_inline zval *tracked_get_size_zv(zend_mm_heap *heap, void *ptr) {
 2989|  8.64M|	zend_ulong h = ((uintptr_t) ptr) >> ZEND_MM_ALIGNMENT_LOG2;
  ------------------
  |  | 2117|  8.64M|#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3
  ------------------
 2990|  8.64M|	zval *size_zv = zend_hash_index_find(heap->tracked_allocs, h);
 2991|  8.64M|	ZEND_ASSERT(size_zv && "Trying to free pointer not allocated through ZendMM");
  ------------------
  |  |  112|  8.64M|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2991:2): [True: 0, False: 8.64M]
  |  Branch (2991:2): [True: 0, False: 0]
  |  Branch (2991:2): [True: 8.64M, False: 0]
  |  Branch (2991:2): [True: 8.64M, False: 0]
  ------------------
 2992|  8.64M|	return size_zv;
 2993|  8.64M|}
zend_alloc.c:tracked_realloc:
 3044|   220k|static void *tracked_realloc(void *ptr, size_t new_size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) {
 3045|   220k|	zend_mm_heap *heap = AG(mm_heap);
  ------------------
  |  | 2619|   220k|# define AG(v) (alloc_globals.v)
  ------------------
 3046|   220k|	zval *old_size_zv = NULL;
 3047|   220k|	size_t old_size = 0;
 3048|   220k|	if (ptr) {
  ------------------
  |  Branch (3048:6): [True: 171k, False: 48.4k]
  ------------------
 3049|   171k|		old_size_zv = tracked_get_size_zv(heap, ptr);
 3050|   171k|		old_size = Z_LVAL_P(old_size_zv);
  ------------------
  |  |  976|   171k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|   171k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 3051|   171k|	}
 3052|       |
 3053|   220k|	if (new_size > old_size) {
  ------------------
  |  Branch (3053:6): [True: 98.4k, False: 121k]
  ------------------
 3054|  98.4k|		tracked_check_limit(heap, new_size - old_size);
 3055|  98.4k|	}
 3056|       |
 3057|       |	/* Delete information about old allocation only after checking the memory limit. */
 3058|   220k|	if (old_size_zv) {
  ------------------
  |  Branch (3058:6): [True: 171k, False: 48.4k]
  ------------------
 3059|   171k|		zend_hash_del_bucket(heap->tracked_allocs, (Bucket *) old_size_zv);
 3060|   171k|	}
 3061|       |
 3062|   220k|	ptr = __zend_realloc(ptr, new_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  479|   220k|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  ------------------
  |  |  |  |  478|   220k|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  ------------------
  ------------------
              	ptr = __zend_realloc(ptr, new_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
  ------------------
  |  |  485|   220k|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  ------------------
  |  |  |  |  484|   220k|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  ------------------
  ------------------
 3063|   220k|	tracked_add(heap, ptr, new_size);
 3064|   220k|#if ZEND_MM_STAT
 3065|   220k|	heap->size += new_size - old_size;
 3066|   220k|	heap->real_size = heap->size;
 3067|   220k|#endif
 3068|   220k|	return ptr;
 3069|   220k|}

main.c:zend_arena_destroy:
   44|  33.5k|{
   45|  33.5k|	do {
   46|  33.5k|		zend_arena *prev = arena->prev;
   47|  33.5k|		efree(arena);
  ------------------
  |  |  154|  33.5k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   48|  33.5k|		arena = prev;
   49|  33.5k|	} while (arena);
  ------------------
  |  Branch (49:11): [True: 0, False: 33.5k]
  ------------------
   50|  33.5k|}
block_pass.c:zend_arena_checkpoint:
   94|      1|{
   95|      1|	return arena->ptr;
   96|      1|}
block_pass.c:zend_arena_release:
   99|      1|{
  100|      1|	zend_arena *arena = *arena_ptr;
  101|       |
  102|      1|	while (UNEXPECTED((char*)checkpoint > arena->end) ||
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  103|      1|	       UNEXPECTED((char*)checkpoint <= (char*)arena)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  104|      0|		zend_arena *prev = arena->prev;
  105|      0|		efree(arena);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      0|		*arena_ptr = arena = prev;
  107|      0|	}
  108|      1|	ZEND_ASSERT((char*)checkpoint > (char*)arena && (char*)checkpoint <= arena->end);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (108:2): [True: 0, False: 1]
  |  Branch (108:2): [True: 0, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  ------------------
  109|      1|	arena->ptr = (char*)checkpoint;
  110|      1|}
block_pass.c:zend_arena_calloc:
   79|      1|{
   80|      1|	bool overflow;
   81|      1|	size_t size;
   82|      1|	void *ret;
   83|       |
   84|      1|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      1|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      1|	ret = zend_arena_alloc(arena_ptr, size);
   89|      1|	memset(ret, 0, size);
   90|      1|	return ret;
   91|      1|}
block_pass.c:zend_arena_alloc:
   53|      3|{
   54|      3|	zend_arena *arena = *arena_ptr;
   55|      3|	char *ptr = arena->ptr;
   56|       |
   57|      3|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      3|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      3|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      3|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
   60|      3|		arena->ptr = ptr + size;
   61|      3|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      3|	return (void*) ptr;
   76|      3|}
compact_literals.c:zend_arena_checkpoint:
   94|      1|{
   95|      1|	return arena->ptr;
   96|      1|}
compact_literals.c:zend_arena_calloc:
   79|      1|{
   80|      1|	bool overflow;
   81|      1|	size_t size;
   82|      1|	void *ret;
   83|       |
   84|      1|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      1|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      1|	ret = zend_arena_alloc(arena_ptr, size);
   89|      1|	memset(ret, 0, size);
   90|      1|	return ret;
   91|      1|}
compact_literals.c:zend_arena_alloc:
   53|      3|{
   54|      3|	zend_arena *arena = *arena_ptr;
   55|      3|	char *ptr = arena->ptr;
   56|       |
   57|      3|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      3|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      3|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      3|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
   60|      3|		arena->ptr = ptr + size;
   61|      3|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      3|	return (void*) ptr;
   76|      3|}
compact_literals.c:zend_arena_release:
   99|      1|{
  100|      1|	zend_arena *arena = *arena_ptr;
  101|       |
  102|      1|	while (UNEXPECTED((char*)checkpoint > arena->end) ||
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  103|      1|	       UNEXPECTED((char*)checkpoint <= (char*)arena)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  104|      0|		zend_arena *prev = arena->prev;
  105|      0|		efree(arena);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      0|		*arena_ptr = arena = prev;
  107|      0|	}
  108|      1|	ZEND_ASSERT((char*)checkpoint > (char*)arena && (char*)checkpoint <= arena->end);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (108:2): [True: 0, False: 1]
  |  Branch (108:2): [True: 0, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  ------------------
  109|      1|	arena->ptr = (char*)checkpoint;
  110|      1|}
dce.c:zend_arena_checkpoint:
   94|      1|{
   95|      1|	return arena->ptr;
   96|      1|}
dce.c:zend_arena_calloc:
   79|      4|{
   80|      4|	bool overflow;
   81|      4|	size_t size;
   82|      4|	void *ret;
   83|       |
   84|      4|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      4|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      4|	ret = zend_arena_alloc(arena_ptr, size);
   89|      4|	memset(ret, 0, size);
   90|      4|	return ret;
   91|      4|}
dce.c:zend_arena_alloc:
   53|      5|{
   54|      5|	zend_arena *arena = *arena_ptr;
   55|      5|	char *ptr = arena->ptr;
   56|       |
   57|      5|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      5|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      5|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      5|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      5|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      5|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
   60|      5|		arena->ptr = ptr + size;
   61|      5|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      5|	return (void*) ptr;
   76|      5|}
dce.c:zend_arena_release:
   99|      1|{
  100|      1|	zend_arena *arena = *arena_ptr;
  101|       |
  102|      1|	while (UNEXPECTED((char*)checkpoint > arena->end) ||
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  103|      1|	       UNEXPECTED((char*)checkpoint <= (char*)arena)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  104|      0|		zend_arena *prev = arena->prev;
  105|      0|		efree(arena);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      0|		*arena_ptr = arena = prev;
  107|      0|	}
  108|      1|	ZEND_ASSERT((char*)checkpoint > (char*)arena && (char*)checkpoint <= arena->end);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (108:2): [True: 0, False: 1]
  |  Branch (108:2): [True: 0, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  ------------------
  109|      1|	arena->ptr = (char*)checkpoint;
  110|      1|}
optimize_temp_vars_5.c:zend_arena_checkpoint:
   94|      1|{
   95|      1|	return arena->ptr;
   96|      1|}
optimize_temp_vars_5.c:zend_arena_alloc:
   53|      3|{
   54|      3|	zend_arena *arena = *arena_ptr;
   55|      3|	char *ptr = arena->ptr;
   56|       |
   57|      3|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      3|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      3|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      3|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
   60|      3|		arena->ptr = ptr + size;
   61|      3|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      3|	return (void*) ptr;
   76|      3|}
optimize_temp_vars_5.c:zend_arena_release:
   99|      1|{
  100|      1|	zend_arena *arena = *arena_ptr;
  101|       |
  102|      1|	while (UNEXPECTED((char*)checkpoint > arena->end) ||
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  103|      1|	       UNEXPECTED((char*)checkpoint <= (char*)arena)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  104|      0|		zend_arena *prev = arena->prev;
  105|      0|		efree(arena);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      0|		*arena_ptr = arena = prev;
  107|      0|	}
  108|      1|	ZEND_ASSERT((char*)checkpoint > (char*)arena && (char*)checkpoint <= arena->end);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (108:2): [True: 0, False: 1]
  |  Branch (108:2): [True: 0, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  ------------------
  109|      1|	arena->ptr = (char*)checkpoint;
  110|      1|}
sccp.c:zend_arena_checkpoint:
   94|      1|{
   95|      1|	return arena->ptr;
   96|      1|}
sccp.c:zend_arena_alloc:
   53|      1|{
   54|      1|	zend_arena *arena = *arena_ptr;
   55|      1|	char *ptr = arena->ptr;
   56|       |
   57|      1|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      1|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   60|      1|		arena->ptr = ptr + size;
   61|      1|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      1|	return (void*) ptr;
   76|      1|}
sccp.c:zend_arena_release:
   99|      1|{
  100|      1|	zend_arena *arena = *arena_ptr;
  101|       |
  102|      1|	while (UNEXPECTED((char*)checkpoint > arena->end) ||
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  103|      1|	       UNEXPECTED((char*)checkpoint <= (char*)arena)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  104|      0|		zend_arena *prev = arena->prev;
  105|      0|		efree(arena);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      0|		*arena_ptr = arena = prev;
  107|      0|	}
  108|      1|	ZEND_ASSERT((char*)checkpoint > (char*)arena && (char*)checkpoint <= arena->end);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (108:2): [True: 0, False: 1]
  |  Branch (108:2): [True: 0, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  |  Branch (108:2): [True: 1, False: 0]
  ------------------
  109|      1|	arena->ptr = (char*)checkpoint;
  110|      1|}
scdf.c:zend_arena_calloc:
   79|      1|{
   80|      1|	bool overflow;
   81|      1|	size_t size;
   82|      1|	void *ret;
   83|       |
   84|      1|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      1|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      1|	ret = zend_arena_alloc(arena_ptr, size);
   89|      1|	memset(ret, 0, size);
   90|      1|	return ret;
   91|      1|}
scdf.c:zend_arena_alloc:
   53|      1|{
   54|      1|	zend_arena *arena = *arena_ptr;
   55|      1|	char *ptr = arena->ptr;
   56|       |
   57|      1|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      1|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   60|      1|		arena->ptr = ptr + size;
   61|      1|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      1|	return (void*) ptr;
   76|      1|}
zend_call_graph.c:zend_arena_calloc:
   79|      2|{
   80|      2|	bool overflow;
   81|      2|	size_t size;
   82|      2|	void *ret;
   83|       |
   84|      2|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      2|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      2|	ret = zend_arena_alloc(arena_ptr, size);
   89|      2|	memset(ret, 0, size);
   90|      2|	return ret;
   91|      2|}
zend_call_graph.c:zend_arena_alloc:
   53|      2|{
   54|      2|	zend_arena *arena = *arena_ptr;
   55|      2|	char *ptr = arena->ptr;
   56|       |
   57|      2|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      2|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      2|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      2|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   60|      2|		arena->ptr = ptr + size;
   61|      2|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      2|	return (void*) ptr;
   76|      2|}
zend_cfg.c:zend_arena_calloc:
   79|      5|{
   80|      5|	bool overflow;
   81|      5|	size_t size;
   82|      5|	void *ret;
   83|       |
   84|      5|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      5|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      5|	ret = zend_arena_alloc(arena_ptr, size);
   89|      5|	memset(ret, 0, size);
   90|      5|	return ret;
   91|      5|}
zend_cfg.c:zend_arena_alloc:
   53|      5|{
   54|      5|	zend_arena *arena = *arena_ptr;
   55|      5|	char *ptr = arena->ptr;
   56|       |
   57|      5|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      5|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      5|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      5|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      5|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      5|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
   60|      5|		arena->ptr = ptr + size;
   61|      5|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      5|	return (void*) ptr;
   76|      5|}
zend_inference.c:zend_arena_calloc:
   79|      1|{
   80|      1|	bool overflow;
   81|      1|	size_t size;
   82|      1|	void *ret;
   83|       |
   84|      1|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      1|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      1|	ret = zend_arena_alloc(arena_ptr, size);
   89|      1|	memset(ret, 0, size);
   90|      1|	return ret;
   91|      1|}
zend_inference.c:zend_arena_alloc:
   53|      1|{
   54|      1|	zend_arena *arena = *arena_ptr;
   55|      1|	char *ptr = arena->ptr;
   56|       |
   57|      1|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      1|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   60|      1|		arena->ptr = ptr + size;
   61|      1|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      1|	return (void*) ptr;
   76|      1|}
zend_optimizer.c:zend_arena_create:
   34|      1|{
   35|      1|	zend_arena *arena = (zend_arena*)emalloc(size);
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|       |
   37|      1|	arena->ptr = (char*) arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|      1|	arena->end = (char*) arena + size;
   39|       |	arena->prev = NULL;
   40|      1|	return arena;
   41|      1|}
zend_optimizer.c:zend_arena_destroy:
   44|      1|{
   45|      1|	do {
   46|      1|		zend_arena *prev = arena->prev;
   47|      1|		efree(arena);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   48|      1|		arena = prev;
   49|      1|	} while (arena);
  ------------------
  |  Branch (49:11): [True: 0, False: 1]
  ------------------
   50|      1|}
zend_ssa.c:zend_arena_calloc:
   79|      3|{
   80|      3|	bool overflow;
   81|      3|	size_t size;
   82|      3|	void *ret;
   83|       |
   84|      3|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|      3|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|      3|	ret = zend_arena_alloc(arena_ptr, size);
   89|      3|	memset(ret, 0, size);
   90|      3|	return ret;
   91|      3|}
zend_ssa.c:zend_arena_alloc:
   53|      3|{
   54|      3|	zend_arena *arena = *arena_ptr;
   55|      3|	char *ptr = arena->ptr;
   56|       |
   57|      3|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|      3|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      3|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      3|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|      3|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
   60|      3|		arena->ptr = ptr + size;
   61|      3|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|      3|	return (void*) ptr;
   76|      3|}
zend_API.c:zend_arena_alloc:
   53|    951|{
   54|    951|	zend_arena *arena = *arena_ptr;
   55|    951|	char *ptr = arena->ptr;
   56|       |
   57|    951|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|    951|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|    951|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|    951|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|    951|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|    951|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|    951|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 951, False: 0]
  |  |  ------------------
  ------------------
   60|    951|		arena->ptr = ptr + size;
   61|    951|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|    951|	return (void*) ptr;
   76|    951|}
zend_API.c:zend_arena_destroy:
   44|      1|{
   45|      1|	do {
   46|      1|		zend_arena *prev = arena->prev;
   47|      1|		efree(arena);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   48|      1|		arena = prev;
   49|      1|	} while (arena);
  ------------------
  |  Branch (49:11): [True: 0, False: 1]
  ------------------
   50|      1|}
zend_ast.c:zend_arena_alloc:
   53|   124k|{
   54|   124k|	zend_arena *arena = *arena_ptr;
   55|   124k|	char *ptr = arena->ptr;
   56|       |
   57|   124k|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|   124k|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|   124k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|   124k|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|   124k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|   124k|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|   124k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 124k, False: 0]
  |  |  ------------------
  ------------------
   60|   124k|		arena->ptr = ptr + size;
   61|   124k|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|   124k|	return (void*) ptr;
   76|   124k|}
zend_closures.c:zend_arena_alloc:
   53|    230|{
   54|    230|	zend_arena *arena = *arena_ptr;
   55|    230|	char *ptr = arena->ptr;
   56|       |
   57|    230|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|    230|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|    230|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|    230|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|    230|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|    230|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|    230|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 230, False: 0]
  |  |  ------------------
  ------------------
   60|    230|		arena->ptr = ptr + size;
   61|    230|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|    230|	return (void*) ptr;
   76|    230|}
zend_compile.c:zend_arena_create:
   34|  33.5k|{
   35|  33.5k|	zend_arena *arena = (zend_arena*)emalloc(size);
  ------------------
  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|       |
   37|  33.5k|	arena->ptr = (char*) arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|  33.5k|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|  33.5k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|  33.5k|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|  33.5k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|  33.5k|	arena->end = (char*) arena + size;
   39|       |	arena->prev = NULL;
   40|  33.5k|	return arena;
   41|  33.5k|}
zend_compile.c:zend_arena_alloc:
   53|  3.60k|{
   54|  3.60k|	zend_arena *arena = *arena_ptr;
   55|  3.60k|	char *ptr = arena->ptr;
   56|       |
   57|  3.60k|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|  3.60k|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|  3.60k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|  3.60k|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|  3.60k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|  3.60k|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|  3.60k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3.60k, False: 0]
  |  |  ------------------
  ------------------
   60|  3.60k|		arena->ptr = ptr + size;
   61|  3.60k|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|  3.60k|	return (void*) ptr;
   76|  3.60k|}
zend_enum.c:zend_arena_calloc:
   79|    366|{
   80|    366|	bool overflow;
   81|    366|	size_t size;
   82|    366|	void *ret;
   83|       |
   84|    366|	size = zend_safe_address(unit_size, count, 0, &overflow);
   85|    366|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|    366|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 366]
  |  |  ------------------
  ------------------
   86|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in zend_arena_calloc() (%zu * %zu)", unit_size, count);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   87|      0|	}
   88|    366|	ret = zend_arena_alloc(arena_ptr, size);
   89|    366|	memset(ret, 0, size);
   90|    366|	return ret;
   91|    366|}
zend_enum.c:zend_arena_alloc:
   53|    366|{
   54|    366|	zend_arena *arena = *arena_ptr;
   55|    366|	char *ptr = arena->ptr;
   56|       |
   57|    366|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|    366|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|    366|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|    366|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|    366|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|    366|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|    366|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 366, False: 0]
  |  |  ------------------
  ------------------
   60|    366|		arena->ptr = ptr + size;
   61|    366|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|    366|	return (void*) ptr;
   76|    366|}
zend_execute.c:zend_arena_alloc:
   53|    672|{
   54|    672|	zend_arena *arena = *arena_ptr;
   55|    672|	char *ptr = arena->ptr;
   56|       |
   57|    672|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|    672|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|    672|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|    672|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|    672|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|    672|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|    672|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 672, False: 0]
  |  |  ------------------
  ------------------
   60|    672|		arena->ptr = ptr + size;
   61|    672|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|    672|	return (void*) ptr;
   76|    672|}
zend_inheritance.c:zend_arena_alloc:
   53|    886|{
   54|    886|	zend_arena *arena = *arena_ptr;
   55|    886|	char *ptr = arena->ptr;
   56|       |
   57|    886|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|    886|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|    886|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|    886|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|    886|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|    886|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|    886|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 886, False: 0]
  |  |  ------------------
  ------------------
   60|    886|		arena->ptr = ptr + size;
   61|    886|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|    886|	return (void*) ptr;
   76|    886|}
zend_interfaces.c:zend_arena_alloc:
   53|     15|{
   54|     15|	zend_arena *arena = *arena_ptr;
   55|     15|	char *ptr = arena->ptr;
   56|       |
   57|     15|	size = ZEND_MM_ALIGNED_SIZE(size);
  ------------------
  |  |   34|     15|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|     15|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|     15|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|     15|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|     15|	if (EXPECTED(size <= (size_t)(arena->end - ptr))) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 15, False: 0]
  |  |  ------------------
  ------------------
   60|     15|		arena->ptr = ptr + size;
   61|     15|	} else {
   62|      0|		size_t arena_size =
   63|      0|			UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ?
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|      0|				(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|      0|				(size_t)(arena->end - (char*) arena);
   66|      0|		zend_arena *new_arena = (zend_arena*)emalloc(arena_size);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|       |
   68|      0|		ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|		new_arena->ptr = (char*) new_arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)) + size;
  ------------------
  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|		new_arena->end = (char*) new_arena + arena_size;
   71|      0|		new_arena->prev = arena;
   72|      0|		*arena_ptr = new_arena;
   73|      0|	}
   74|       |
   75|     15|	return (void*) ptr;
   76|     15|}
zend_language_scanner.c:zend_arena_create:
   34|  7.07k|{
   35|  7.07k|	zend_arena *arena = (zend_arena*)emalloc(size);
  ------------------
  |  |  150|  7.07k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  7.07k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  7.07k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  7.07k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  7.07k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|       |
   37|  7.07k|	arena->ptr = (char*) arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena));
  ------------------
  |  |   34|  7.07k|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  | 2114|  7.07k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  ------------------
  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  ------------------
  |  |  |  |   32|  7.07k|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|  7.07k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|  7.07k|	arena->end = (char*) arena + size;
   39|       |	arena->prev = NULL;
   40|  7.07k|	return arena;
   41|  7.07k|}
zend_language_scanner.c:zend_arena_destroy:
   44|  6.55k|{
   45|  6.55k|	do {
   46|  6.55k|		zend_arena *prev = arena->prev;
   47|  6.55k|		efree(arena);
  ------------------
  |  |  154|  6.55k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  6.55k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.55k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  6.55k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.55k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   48|  6.55k|		arena = prev;
   49|  6.55k|	} while (arena);
  ------------------
  |  Branch (49:11): [True: 0, False: 6.55k]
  ------------------
   50|  6.55k|}

zend_ast_create_znode:
   45|    224|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_znode(const znode *node) {
   46|    224|	zend_ast_znode *ast;
   47|       |
   48|    224|	ast = zend_ast_alloc(sizeof(zend_ast_znode));
   49|    224|	ast->kind = ZEND_AST_ZNODE;
   50|    224|	ast->attr = 0;
   51|    224|	ast->lineno = CG(zend_lineno);
  ------------------
  |  |   35|    224|# define CG(v) (compiler_globals.v)
  ------------------
   52|    224|	ast->node = *node;
   53|    224|	return (zend_ast *) ast;
   54|    224|}
zend_ast_create_fcc:
   56|     76|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_fcc(zend_ast *args) {
   57|     76|	zend_ast_fcc *ast;
   58|       |
   59|     76|	ast = zend_ast_alloc(sizeof(zend_ast_fcc));
   60|     76|	ast->kind = ZEND_AST_CALLABLE_CONVERT;
   61|     76|	ast->attr = 0;
   62|     76|	ast->lineno = CG(zend_lineno);
  ------------------
  |  |   35|     76|# define CG(v) (compiler_globals.v)
  ------------------
   63|     76|	ast->args = args;
   64|     76|	ZEND_MAP_PTR_INIT(ast->fptr, NULL);
  ------------------
  |  |   38|     76|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|     76|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|     76|	ptr ## __ptr
  |  |  ------------------
  |  |   40|     76|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 76]
  |  |  ------------------
  ------------------
   65|       |
   66|     76|	return (zend_ast *) ast;
   67|     76|}
zend_ast_create_zval_with_lineno:
   80|  44.5k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_with_lineno(const zval *zv, uint32_t lineno) {
   81|  44.5k|	return zend_ast_create_zval_int(zv, 0, lineno);
   82|  44.5k|}
zend_ast_create_zval_ex:
   84|     15|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_ex(const zval *zv, zend_ast_attr attr) {
   85|     15|	return zend_ast_create_zval_int(zv, attr, CG(zend_lineno));
  ------------------
  |  |   35|     15|# define CG(v) (compiler_globals.v)
  ------------------
   86|     15|}
zend_ast_create_zval:
   88|  1.32k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval(const zval *zv) {
   89|  1.32k|	return zend_ast_create_zval_int(zv, 0, CG(zend_lineno));
  ------------------
  |  |   35|  1.32k|# define CG(v) (compiler_globals.v)
  ------------------
   90|  1.32k|}
zend_ast_create_zval_from_str:
   92|    238|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_from_str(zend_string *str) {
   93|    238|	zval zv;
   94|    238|	ZVAL_STR(&zv, str);
  ------------------
  |  | 1088|    238|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    238|		zval *__z = (z);						\
  |  | 1090|    238|		zend_string *__s = (s);					\
  |  | 1091|    238|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    238|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    238|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    238|		/* interned strings support */			\
  |  | 1093|    238|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    238|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    238|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 127, False: 111]
  |  |  ------------------
  |  | 1094|    238|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    127|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    127|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    238|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    349|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    111|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    111|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    111|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    238|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 238]
  |  |  ------------------
  ------------------
   95|    238|	return zend_ast_create_zval_int(&zv, 0, CG(zend_lineno));
  ------------------
  |  |   35|    238|# define CG(v) (compiler_globals.v)
  ------------------
   96|    238|}
zend_ast_create_zval_from_long:
   98|  1.25k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_from_long(zend_long lval) {
   99|  1.25k|	zval zv;
  100|  1.25k|	ZVAL_LONG(&zv, lval);
  ------------------
  |  | 1076|  1.25k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  1.25k|		zval *__z = (z);				\
  |  | 1078|  1.25k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  1.25k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  1.25k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  1.25k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  1.25k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.25k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  1.25k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  1.25k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1.25k]
  |  |  ------------------
  ------------------
  101|  1.25k|	return zend_ast_create_zval_int(&zv, 0, CG(zend_lineno));
  ------------------
  |  |   35|  1.25k|# define CG(v) (compiler_globals.v)
  ------------------
  102|  1.25k|}
zend_ast_create_constant:
  104|     97|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_constant(zend_string *name, zend_ast_attr attr) {
  105|     97|	zend_ast_zval *ast;
  106|       |
  107|     97|	ast = zend_ast_alloc(sizeof(zend_ast_zval));
  108|     97|	ast->kind = ZEND_AST_CONSTANT;
  109|     97|	ast->attr = attr;
  110|     97|	ZVAL_STR(&ast->val, name);
  ------------------
  |  | 1088|     97|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     97|		zval *__z = (z);						\
  |  | 1090|     97|		zend_string *__s = (s);					\
  |  | 1091|     97|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     97|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     97|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     97|		/* interned strings support */			\
  |  | 1093|     97|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     97|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     97|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 31, False: 66]
  |  |  ------------------
  |  | 1094|     97|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     31|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     31|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     97|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    163|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     66|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     66|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     66|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     97|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 97]
  |  |  ------------------
  ------------------
  111|     97|	Z_LINENO(ast->val) = CG(zend_lineno);
  ------------------
  |  |  686|     97|#define Z_LINENO(zval)				(zval).u2.lineno
  ------------------
              	Z_LINENO(ast->val) = CG(zend_lineno);
  ------------------
  |  |   35|     97|# define CG(v) (compiler_globals.v)
  ------------------
  112|     97|	return (zend_ast *) ast;
  113|     97|}
zend_ast_create_op_array:
  115|      3|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_op_array(zend_op_array *op_array) {
  116|      3|	zend_ast_op_array *ast;
  117|       |
  118|      3|	ast = zend_ast_alloc(sizeof(zend_ast_op_array));
  119|      3|	ast->kind = ZEND_AST_OP_ARRAY;
  120|      3|	ast->attr = 0;
  121|      3|	ast->lineno = CG(zend_lineno);
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
  122|      3|	ast->op_array = op_array;
  123|       |
  124|      3|	return (zend_ast *) ast;
  125|      3|}
zend_ast_create_class_const_or_name:
  127|    351|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_class_const_or_name(zend_ast *class_name, zend_ast *name) {
  128|    351|	zend_string *name_str = zend_ast_get_str(name);
  129|    351|	if (zend_string_equals_ci(name_str, ZSTR_KNOWN(ZEND_STR_CLASS))) {
  ------------------
  |  |  401|    351|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    351|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    702|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    124|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    124|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    124|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    124|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 124, False: 227]
  |  |  |  Branch (401:35): [True: 114, False: 10]
  |  |  ------------------
  ------------------
  130|    114|		zend_string_release(name_str);
  131|    114|		return zend_ast_create(ZEND_AST_CLASS_NAME, class_name);
  ------------------
  |  |  316|    114|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    114|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    114|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|    237|	} else {
  133|    237|		return zend_ast_create(ZEND_AST_CLASS_CONST, class_name, name);
  ------------------
  |  |  316|    237|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    237|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    237|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|    237|	}
  135|    351|}
zend_ast_create_decl:
  140|  3.53k|) {
  141|  3.53k|	zend_ast_decl *ast;
  142|       |
  143|  3.53k|	ast = zend_ast_alloc(sizeof(zend_ast_decl));
  144|  3.53k|	ast->kind = kind;
  145|  3.53k|	ast->attr = 0;
  146|  3.53k|	ast->start_lineno = start_lineno;
  147|  3.53k|	ast->end_lineno = CG(zend_lineno);
  ------------------
  |  |   35|  3.53k|# define CG(v) (compiler_globals.v)
  ------------------
  148|  3.53k|	ast->flags = flags;
  149|  3.53k|	ast->doc_comment = doc_comment;
  150|  3.53k|	ast->name = name;
  151|  3.53k|	ast->child[0] = child0;
  152|  3.53k|	ast->child[1] = child1;
  153|  3.53k|	ast->child[2] = child2;
  154|  3.53k|	ast->child[3] = child3;
  155|  3.53k|	ast->child[4] = child4;
  156|       |
  157|  3.53k|	return (zend_ast *) ast;
  158|  3.53k|}
zend_ast_create_0:
  167|    408|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_0(zend_ast_kind kind) {
  168|    408|	zend_ast *ast;
  169|       |
  170|    408|	ZEND_ASSERT(kind >> ZEND_AST_NUM_CHILDREN_SHIFT == 0);
  ------------------
  |  |  112|    408|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (170:2): [True: 0, False: 408]
  |  Branch (170:2): [True: 408, False: 0]
  ------------------
  171|    408|	ast = zend_ast_alloc(zend_ast_size(0));
  172|    408|	ast->kind = kind;
  173|    408|	ast->attr = 0;
  174|    408|	ast->lineno = CG(zend_lineno);
  ------------------
  |  |   35|    408|# define CG(v) (compiler_globals.v)
  ------------------
  175|       |
  176|    408|	return ast;
  177|    408|}
zend_ast_create_1:
  179|  19.9k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_1(zend_ast_kind kind, zend_ast *child) {
  180|  19.9k|	zend_ast *ast;
  181|  19.9k|	uint32_t lineno;
  182|       |
  183|  19.9k|	ZEND_ASSERT(kind >> ZEND_AST_NUM_CHILDREN_SHIFT == 1);
  ------------------
  |  |  112|  19.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (183:2): [True: 0, False: 19.9k]
  |  Branch (183:2): [True: 19.9k, False: 0]
  ------------------
  184|  19.9k|	ast = zend_ast_alloc(zend_ast_size(1));
  185|  19.9k|	ast->kind = kind;
  186|  19.9k|	ast->attr = 0;
  187|  19.9k|	ast->child[0] = child;
  188|  19.9k|	if (child) {
  ------------------
  |  Branch (188:6): [True: 19.8k, False: 44]
  ------------------
  189|  19.8k|		lineno = zend_ast_get_lineno(child);
  190|  19.8k|	} else {
  191|     44|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|     44|# define CG(v) (compiler_globals.v)
  ------------------
  192|     44|	}
  193|  19.9k|	ast->lineno = lineno;
  194|       |
  195|  19.9k|	return ast;
  196|  19.9k|}
zend_ast_create_2:
  198|  18.9k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_2(zend_ast_kind kind, zend_ast *child1, zend_ast *child2) {
  199|  18.9k|	zend_ast *ast;
  200|  18.9k|	uint32_t lineno;
  201|       |
  202|  18.9k|	ZEND_ASSERT(kind >> ZEND_AST_NUM_CHILDREN_SHIFT == 2);
  ------------------
  |  |  112|  18.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (202:2): [True: 0, False: 18.9k]
  |  Branch (202:2): [True: 18.9k, False: 0]
  ------------------
  203|  18.9k|	ast = zend_ast_alloc(zend_ast_size(2));
  204|  18.9k|	ast->kind = kind;
  205|  18.9k|	ast->attr = 0;
  206|  18.9k|	ast->child[0] = child1;
  207|  18.9k|	ast->child[1] = child2;
  208|  18.9k|	if (child1) {
  ------------------
  |  Branch (208:6): [True: 18.7k, False: 140]
  ------------------
  209|  18.7k|		lineno = zend_ast_get_lineno(child1);
  210|  18.7k|	} else if (child2) {
  ------------------
  |  Branch (210:13): [True: 50, False: 90]
  ------------------
  211|     50|		lineno = zend_ast_get_lineno(child2);
  212|     90|	} else {
  213|     90|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|     90|# define CG(v) (compiler_globals.v)
  ------------------
  214|     90|	}
  215|  18.9k|	ast->lineno = lineno;
  216|       |
  217|  18.9k|	return ast;
  218|  18.9k|}
zend_ast_create_3:
  220|  2.31k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_3(zend_ast_kind kind, zend_ast *child1, zend_ast *child2, zend_ast *child3) {
  221|  2.31k|	zend_ast *ast;
  222|  2.31k|	uint32_t lineno;
  223|       |
  224|  2.31k|	ZEND_ASSERT(kind >> ZEND_AST_NUM_CHILDREN_SHIFT == 3);
  ------------------
  |  |  112|  2.31k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (224:2): [True: 0, False: 2.31k]
  |  Branch (224:2): [True: 2.31k, False: 0]
  ------------------
  225|  2.31k|	ast = zend_ast_alloc(zend_ast_size(3));
  226|  2.31k|	ast->kind = kind;
  227|  2.31k|	ast->attr = 0;
  228|  2.31k|	ast->child[0] = child1;
  229|  2.31k|	ast->child[1] = child2;
  230|  2.31k|	ast->child[2] = child3;
  231|  2.31k|	if (child1) {
  ------------------
  |  Branch (231:6): [True: 2.00k, False: 313]
  ------------------
  232|  2.00k|		lineno = zend_ast_get_lineno(child1);
  233|  2.00k|	} else if (child2) {
  ------------------
  |  Branch (233:13): [True: 313, False: 0]
  ------------------
  234|    313|		lineno = zend_ast_get_lineno(child2);
  235|    313|	} else if (child3) {
  ------------------
  |  Branch (235:13): [True: 0, False: 0]
  ------------------
  236|      0|		lineno = zend_ast_get_lineno(child3);
  237|      0|	} else {
  238|      0|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  239|      0|	}
  240|  2.31k|	ast->lineno = lineno;
  241|       |
  242|  2.31k|	return ast;
  243|  2.31k|}
zend_ast_create_4:
  245|  1.26k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_4(zend_ast_kind kind, zend_ast *child1, zend_ast *child2, zend_ast *child3, zend_ast *child4) {
  246|  1.26k|	zend_ast *ast;
  247|  1.26k|	uint32_t lineno;
  248|       |
  249|  1.26k|	ZEND_ASSERT(kind >> ZEND_AST_NUM_CHILDREN_SHIFT == 4);
  ------------------
  |  |  112|  1.26k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (249:2): [True: 0, False: 1.26k]
  |  Branch (249:2): [True: 1.26k, False: 0]
  ------------------
  250|  1.26k|	ast = zend_ast_alloc(zend_ast_size(4));
  251|  1.26k|	ast->kind = kind;
  252|  1.26k|	ast->attr = 0;
  253|  1.26k|	ast->child[0] = child1;
  254|  1.26k|	ast->child[1] = child2;
  255|  1.26k|	ast->child[2] = child3;
  256|  1.26k|	ast->child[3] = child4;
  257|  1.26k|	if (child1) {
  ------------------
  |  Branch (257:6): [True: 1.18k, False: 82]
  ------------------
  258|  1.18k|		lineno = zend_ast_get_lineno(child1);
  259|  1.18k|	} else if (child2) {
  ------------------
  |  Branch (259:13): [True: 68, False: 14]
  ------------------
  260|     68|		lineno = zend_ast_get_lineno(child2);
  261|     68|	} else if (child3) {
  ------------------
  |  Branch (261:13): [True: 8, False: 6]
  ------------------
  262|      8|		lineno = zend_ast_get_lineno(child3);
  263|      8|	} else if (child4) {
  ------------------
  |  Branch (263:13): [True: 5, False: 1]
  ------------------
  264|      5|		lineno = zend_ast_get_lineno(child4);
  265|      5|	} else {
  266|      1|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  267|      1|	}
  268|  1.26k|	ast->lineno = lineno;
  269|       |
  270|  1.26k|	return ast;
  271|  1.26k|}
zend_ast_create_va:
  305|    846|		zend_ast_kind kind, zend_ast_attr attr, va_list *va) {
  306|    846|	uint32_t lineno = (uint32_t)-1;
  307|    846|	uint32_t children = kind >> ZEND_AST_NUM_CHILDREN_SHIFT;
  ------------------
  |  |   32|    846|#define ZEND_AST_NUM_CHILDREN_SHIFT 8
  ------------------
  308|    846|	zend_ast *ast = zend_ast_alloc(zend_ast_size(children));
  309|    846|	ast->kind = kind;
  310|    846|	ast->attr = attr;
  311|  5.92k|	for (uint32_t i = 0; i < children; i++) {
  ------------------
  |  Branch (311:23): [True: 5.07k, False: 846]
  ------------------
  312|  5.07k|		ast->child[i] = va_arg(*va, zend_ast *);
  313|  5.07k|		if (lineno == (uint32_t)-1 && ast->child[i]) {
  ------------------
  |  Branch (313:7): [True: 1.39k, False: 3.67k]
  |  Branch (313:33): [True: 846, False: 552]
  ------------------
  314|    846|			lineno = zend_ast_get_lineno(ast->child[i]);
  315|    846|		}
  316|  5.07k|	}
  317|    846|	if (lineno == (uint32_t)-1) {
  ------------------
  |  Branch (317:6): [True: 0, False: 846]
  ------------------
  318|      0|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  319|      0|	}
  320|    846|	ast->lineno = lineno;
  321|    846|	return ast;
  322|    846|}
zend_ast_create_n:
  324|     50|ZEND_API zend_ast * zend_ast_create_n(unsigned kind, ...) {
  325|     50|	va_list va;
  326|     50|	va_start(va, kind);
  327|     50|	zend_ast *ast = zend_ast_create_va(kind, 0, &va);
  328|       |	va_end(va);
  329|     50|	return ast;
  330|     50|}
zend_ast_create_ex_n:
  333|    796|		zend_ast_kind kind, unsigned attr, ...) {
  334|    796|	va_list va;
  335|    796|	va_start(va, attr);
  336|    796|	zend_ast *ast = zend_ast_create_va(kind, attr, &va);
  337|       |	va_end(va);
  338|    796|	return ast;
  339|    796|}
zend_ast_create_list_0:
  341|  15.1k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_list_0(zend_ast_kind kind) {
  342|  15.1k|	zend_ast *ast;
  343|  15.1k|	zend_ast_list *list;
  344|       |
  345|  15.1k|	ast = zend_ast_alloc(zend_ast_list_size(4));
  346|  15.1k|	list = (zend_ast_list *) ast;
  347|  15.1k|	list->kind = kind;
  348|  15.1k|	list->attr = 0;
  349|  15.1k|	list->lineno = CG(zend_lineno);
  ------------------
  |  |   35|  15.1k|# define CG(v) (compiler_globals.v)
  ------------------
  350|  15.1k|	list->children = 0;
  351|       |
  352|  15.1k|	return ast;
  353|  15.1k|}
zend_ast_create_list_1:
  355|  12.4k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_list_1(zend_ast_kind kind, zend_ast *child) {
  356|  12.4k|	zend_ast *ast;
  357|  12.4k|	zend_ast_list *list;
  358|  12.4k|	uint32_t lineno;
  359|       |
  360|  12.4k|	ast = zend_ast_alloc(zend_ast_list_size(4));
  361|  12.4k|	list = (zend_ast_list *) ast;
  362|  12.4k|	list->kind = kind;
  363|  12.4k|	list->attr = 0;
  364|  12.4k|	list->children = 1;
  365|  12.4k|	list->child[0] = child;
  366|  12.4k|	if (child) {
  ------------------
  |  Branch (366:6): [True: 12.2k, False: 229]
  ------------------
  367|  12.2k|		lineno = zend_ast_get_lineno(child);
  368|  12.2k|		if (lineno > CG(zend_lineno)) {
  ------------------
  |  |   35|  12.2k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (368:7): [True: 4, False: 12.2k]
  ------------------
  369|      4|			lineno = CG(zend_lineno);
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
  370|      4|		}
  371|  12.2k|	} else {
  372|    229|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|    229|# define CG(v) (compiler_globals.v)
  ------------------
  373|    229|	}
  374|  12.4k|	list->lineno = lineno;
  375|       |
  376|  12.4k|	return ast;
  377|  12.4k|}
zend_ast_create_list_2:
  379|    705|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_list_2(zend_ast_kind kind, zend_ast *child1, zend_ast *child2) {
  380|    705|	zend_ast *ast;
  381|    705|	zend_ast_list *list;
  382|    705|	uint32_t lineno;
  383|       |
  384|    705|	ast = zend_ast_alloc(zend_ast_list_size(4));
  385|    705|	list = (zend_ast_list *) ast;
  386|    705|	list->kind = kind;
  387|    705|	list->attr = 0;
  388|    705|	list->children = 2;
  389|    705|	list->child[0] = child1;
  390|    705|	list->child[1] = child2;
  391|    705|	if (child1) {
  ------------------
  |  Branch (391:6): [True: 705, False: 0]
  ------------------
  392|    705|		lineno = zend_ast_get_lineno(child1);
  393|    705|		if (lineno > CG(zend_lineno)) {
  ------------------
  |  |   35|    705|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (393:7): [True: 0, False: 705]
  ------------------
  394|      0|			lineno = CG(zend_lineno);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  395|      0|		}
  396|    705|	} else if (child2) {
  ------------------
  |  Branch (396:13): [True: 0, False: 0]
  ------------------
  397|      0|		lineno = zend_ast_get_lineno(child2);
  398|      0|		if (lineno > CG(zend_lineno)) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (398:7): [True: 0, False: 0]
  ------------------
  399|      0|			lineno = CG(zend_lineno);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  400|      0|		}
  401|      0|	} else {
  402|      0|		list->children = 0;
  403|      0|		lineno = CG(zend_lineno);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  404|      0|	}
  405|    705|	list->lineno = lineno;
  406|       |
  407|    705|	return ast;
  408|    705|}
zend_ast_create_arg_list_0:
  410|  1.35k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_arg_list_0(zend_ast_kind kind) {
  411|  1.35k|	return zend_ast_create_list(0, kind);
  ------------------
  |  |  320|  1.35k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.35k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.35k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  412|  1.35k|}
zend_ast_create_arg_list_1:
  414|  5.31k|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_arg_list_1(zend_ast_kind kind, zend_ast *arg) {
  415|  5.31k|	zend_ast *list = zend_ast_create_list(1, kind, arg);
  ------------------
  |  |  320|  5.31k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  5.31k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  5.31k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  416|       |
  417|  5.31k|	if (zend_ast_is_placeholder_arg(arg)) {
  ------------------
  |  Branch (417:6): [True: 74, False: 5.24k]
  ------------------
  418|     74|		return zend_ast_create_fcc(list);
  419|     74|	}
  420|       |
  421|  5.24k|	return list;
  422|  5.31k|}
zend_ast_create_arg_list_2:
  424|      4|ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_arg_list_2(zend_ast_kind kind, zend_ast *arg1, zend_ast *arg2) {
  425|      4|	zend_ast *list = zend_ast_create_list(2, kind, arg1, arg2);
  ------------------
  |  |  320|      4|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      4|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      4|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  426|       |
  427|      4|	if (zend_ast_is_placeholder_arg(arg1) || zend_ast_is_placeholder_arg(arg2)) {
  ------------------
  |  Branch (427:6): [True: 0, False: 4]
  |  Branch (427:43): [True: 0, False: 4]
  ------------------
  428|      0|		return zend_ast_create_fcc(list);
  429|      0|	}
  430|       |
  431|      4|	return list;
  432|      4|}
zend_ast_create_concat_op:
  549|    383|zend_ast *zend_ast_create_concat_op(zend_ast *op0, zend_ast *op1) {
  550|    383|	if (op0->kind == ZEND_AST_ZVAL && op1->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (550:6): [True: 137, False: 246]
  |  Branch (550:36): [True: 79, False: 58]
  ------------------
  551|     79|		zval *zv0 = zend_ast_get_zval(op0);
  552|     79|		zval *zv1 = zend_ast_get_zval(op1);
  553|     79|		if (!zend_binary_op_produces_error(ZEND_CONCAT, zv0, zv1) &&
  ------------------
  |  |  132|     79|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (553:7): [True: 79, False: 0]
  ------------------
  554|     79|				concat_function(zv0, zv0, zv1) == SUCCESS) {
  ------------------
  |  Branch (554:5): [True: 79, False: 0]
  ------------------
  555|     79|			zval_ptr_dtor_nogc(zv1);
  556|     79|			return zend_ast_create_zval(zv0);
  557|     79|		}
  558|     79|	}
  559|    304|	return zend_ast_create_binary_op(ZEND_CONCAT, op0, op1);
  ------------------
  |  |  132|    304|#define ZEND_CONCAT                           8
  ------------------
  560|    383|}
zend_ast_list_add:
  566|  25.9k|ZEND_ATTRIBUTE_NODISCARD ZEND_API zend_ast * ZEND_FASTCALL zend_ast_list_add(zend_ast *ast, zend_ast *op) {
  567|  25.9k|	zend_ast_list *list = zend_ast_get_list(ast);
  568|  25.9k|	if (list->children >= 4 && is_power_of_two(list->children)) {
  ------------------
  |  Branch (568:6): [True: 2.65k, False: 23.3k]
  |  Branch (568:29): [True: 1.28k, False: 1.36k]
  ------------------
  569|  1.28k|			list = zend_ast_realloc(list,
  570|  1.28k|			zend_ast_list_size(list->children), zend_ast_list_size(list->children * 2));
  571|  1.28k|	}
  572|  25.9k|	list->child[list->children++] = op;
  573|  25.9k|	return (zend_ast *) list;
  574|  25.9k|}
zend_ast_arg_list_add:
  577|  1.53k|{
  578|  1.53k|	if (list->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (578:6): [True: 4, False: 1.53k]
  ------------------
  579|      4|		zend_ast_fcc *fcc_ast = (zend_ast_fcc*)list;
  580|      4|		fcc_ast->args = zend_ast_list_add(fcc_ast->args, arg);
  581|      4|		return (zend_ast*)fcc_ast;
  582|      4|	}
  583|       |
  584|  1.53k|	ZEND_ASSERT(list->kind == ZEND_AST_ARG_LIST);
  ------------------
  |  |  112|  1.53k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (584:2): [True: 0, False: 1.53k]
  |  Branch (584:2): [True: 1.53k, False: 0]
  ------------------
  585|       |
  586|  1.53k|	if (zend_ast_is_placeholder_arg(arg)) {
  ------------------
  |  Branch (586:6): [True: 2, False: 1.53k]
  ------------------
  587|      2|		return zend_ast_create_fcc(zend_ast_list_add(list, arg));
  588|      2|	}
  589|       |
  590|  1.53k|	return zend_ast_list_add(list, arg);
  591|  1.53k|}
zend_ast_evaluate_ex:
  657|    404|) {
  658|    404|	zend_string *previous_filename;
  659|    404|	zend_long previous_lineno;
  660|    404|	if (scope) {
  ------------------
  |  Branch (660:6): [True: 209, False: 195]
  ------------------
  661|    209|		previous_filename = EG(filename_override);
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  662|    209|		previous_lineno = EG(lineno_override);
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  663|    209|		EG(filename_override) = scope->info.user.filename;
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  664|    209|		EG(lineno_override) = zend_ast_get_lineno(ast);
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  665|    209|	}
  666|    404|	zend_result r = zend_ast_evaluate_inner(result, ast, scope, short_circuited_ptr, ctx);
  667|    404|	if (scope) {
  ------------------
  |  Branch (667:6): [True: 209, False: 195]
  ------------------
  668|    209|		EG(filename_override) = previous_filename;
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  669|    209|		EG(lineno_override) = previous_lineno;
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  670|    209|	}
  671|    404|	return r;
  672|    404|}
zend_ast_copy:
 1449|    297|{
 1450|    297|	size_t tree_size;
 1451|    297|	zend_ast_ref *ref;
 1452|       |
 1453|    297|	ZEND_ASSERT(ast != NULL);
  ------------------
  |  |  112|    297|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1453:2): [True: 0, False: 297]
  |  Branch (1453:2): [True: 297, False: 0]
  ------------------
 1454|    297|	tree_size = zend_ast_tree_size(ast) + sizeof(zend_ast_ref);
 1455|    297|	ref = emalloc(tree_size);
  ------------------
  |  |  150|    297|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    297|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    297|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    297|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    297|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1456|    297|	zend_ast_tree_copy(ast, GC_AST(ref));
  ------------------
  |  | 1038|    297|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  ------------------
 1457|    297|	GC_SET_REFCOUNT(ref, 1);
  ------------------
  |  |  717|    297|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
 1458|    297|	GC_TYPE_INFO(ref) = GC_CONSTANT_AST;
  ------------------
  |  |  775|    297|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ref) = GC_CONSTANT_AST;
  ------------------
  |  |  811|    297|#define GC_CONSTANT_AST				(IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  617|    297|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  |  |               #define GC_CONSTANT_AST				(IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|    297|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_CONSTANT_AST				(IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|    297|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
 1459|    297|	return ref;
 1460|    297|}
zend_ast_destroy:
 1463|  70.9k|{
 1464|   134k|tail_call:
 1465|   134k|	if (!ast) {
  ------------------
  |  Branch (1465:6): [True: 23.4k, False: 111k]
  ------------------
 1466|  23.4k|		return;
 1467|  23.4k|	}
 1468|       |
 1469|   111k|	if (EXPECTED(ast->kind >= ZEND_AST_VAR)) {
  ------------------
  |  |  456|   111k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 41.5k, False: 69.6k]
  |  |  ------------------
  ------------------
 1470|  41.5k|		uint32_t i, children = zend_ast_get_num_children(ast);
 1471|       |
 1472|  71.0k|		for (i = 1; i < children; i++) {
  ------------------
  |  Branch (1472:15): [True: 29.4k, False: 41.5k]
  ------------------
 1473|  29.4k|			zend_ast_destroy(ast->child[i]);
 1474|  29.4k|		}
 1475|  41.5k|		ast = ast->child[0];
 1476|  41.5k|		goto tail_call;
 1477|  69.6k|	} else if (EXPECTED(ast->kind == ZEND_AST_ZVAL)) {
  ------------------
  |  |  456|  69.6k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 41.3k, False: 28.2k]
  |  |  ------------------
  ------------------
 1478|  41.3k|		zval_ptr_dtor_nogc(zend_ast_get_zval(ast));
 1479|  41.3k|	} else if (EXPECTED(zend_ast_is_list(ast))) {
  ------------------
  |  |  456|  28.2k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 24.8k, False: 3.42k]
  |  |  ------------------
  ------------------
 1480|  24.8k|		const zend_ast_list *list = zend_ast_get_list(ast);
 1481|  24.8k|		if (list->children) {
  ------------------
  |  Branch (1481:7): [True: 19.2k, False: 5.61k]
  ------------------
 1482|  19.2k|			uint32_t i;
 1483|       |
 1484|  35.4k|			for (i = 1; i < list->children; i++) {
  ------------------
  |  Branch (1484:16): [True: 16.2k, False: 19.2k]
  ------------------
 1485|  16.2k|				zend_ast_destroy(list->child[i]);
 1486|  16.2k|			}
 1487|  19.2k|			ast = list->child[0];
 1488|  19.2k|			goto tail_call;
 1489|  19.2k|		}
 1490|  24.8k|	} else if (EXPECTED(ast->kind == ZEND_AST_CONSTANT)) {
  ------------------
  |  |  456|  3.42k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 191, False: 3.23k]
  |  |  ------------------
  ------------------
 1491|    191|		zend_string_release_ex(zend_ast_get_constant_name(ast), 0);
 1492|  3.23k|	} else if (EXPECTED(ast->kind == ZEND_AST_OP_ARRAY)) {
  ------------------
  |  |  456|  3.23k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 3.22k]
  |  |  ------------------
  ------------------
 1493|      6|		destroy_op_array(zend_ast_get_op_array(ast)->op_array);
 1494|  3.22k|	} else if (EXPECTED(zend_ast_is_decl(ast))) {
  ------------------
  |  |  456|  3.22k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.79k, False: 435]
  |  |  ------------------
  ------------------
 1495|  2.79k|		const zend_ast_decl *decl = (const zend_ast_decl *) ast;
 1496|       |
 1497|  2.79k|		if (decl->name) {
  ------------------
  |  Branch (1497:7): [True: 2.47k, False: 321]
  ------------------
 1498|  2.47k|		    zend_string_release_ex(decl->name, 0);
 1499|  2.47k|		}
 1500|  2.79k|		if (decl->doc_comment) {
  ------------------
  |  Branch (1500:7): [True: 2, False: 2.79k]
  ------------------
 1501|      2|			zend_string_release_ex(decl->doc_comment, 0);
 1502|      2|		}
 1503|  2.79k|		zend_ast_destroy(decl->child[0]);
 1504|  2.79k|		zend_ast_destroy(decl->child[1]);
 1505|  2.79k|		zend_ast_destroy(decl->child[2]);
 1506|  2.79k|		zend_ast_destroy(decl->child[3]);
 1507|  2.79k|		ast = decl->child[4];
 1508|  2.79k|		goto tail_call;
 1509|  2.79k|	} else if (EXPECTED(ast->kind == ZEND_AST_CALLABLE_CONVERT)) {
  ------------------
  |  |  456|    435|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 81, False: 354]
  |  |  ------------------
  ------------------
 1510|     81|		zend_ast_fcc *fcc_ast = (zend_ast_fcc*) ast;
 1511|       |
 1512|     81|		ast = fcc_ast->args;
 1513|     81|		goto tail_call;
 1514|     81|	}
 1515|   111k|}
zend_ast_ref_destroy:
 1518|    293|{
 1519|    293|	zend_ast_destroy(GC_AST(ast));
  ------------------
  |  | 1038|    293|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  ------------------
 1520|       |	efree(ast);
  ------------------
  |  |  154|    293|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    293|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    293|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    293|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    293|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1521|    293|}
zend_ast_apply:
 1523|    736|ZEND_API void zend_ast_apply(zend_ast *ast, zend_ast_apply_func fn, void *context) {
 1524|    736|	if (zend_ast_is_list(ast)) {
  ------------------
  |  Branch (1524:6): [True: 157, False: 579]
  ------------------
 1525|    157|		zend_ast_list *list = zend_ast_get_list(ast);
 1526|    157|		uint32_t i;
 1527|    256|		for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (1527:15): [True: 99, False: 157]
  ------------------
 1528|     99|			fn(&list->child[i], context);
 1529|     99|		}
 1530|    579|	} else if (zend_ast_is_decl(ast)) {
  ------------------
  |  Branch (1530:13): [True: 0, False: 579]
  ------------------
 1531|       |		/* Not implemented. */
 1532|      0|		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1532:3): [Folded, False: 0]
  |  Branch (1532:3): [Folded, False: 0]
  ------------------
 1533|    579|	} else {
 1534|    579|		uint32_t i, children = zend_ast_get_num_children(ast);
 1535|  1.75k|		for (i = 0; i < children; ++i) {
  ------------------
  |  Branch (1535:15): [True: 1.17k, False: 579]
  ------------------
 1536|  1.17k|			fn(&ast->child[i], context);
 1537|  1.17k|		}
 1538|    579|	}
 1539|    736|}
zend_ast_export:
 3034|     99|{
 3035|     99|	smart_str str = {0};
 3036|       |
 3037|     99|	smart_str_appends(&str, prefix);
 3038|     99|	zend_ast_export_ex(&str, ast, 0, 0);
 3039|     99|	smart_str_appends(&str, suffix);
 3040|     99|	smart_str_0(&str);
 3041|     99|	return str.s;
 3042|     99|}
zend_ast_with_attributes:
 3045|    142|{
 3046|    142|	ZEND_ASSERT(attr->kind == ZEND_AST_ATTRIBUTE_LIST);
  ------------------
  |  |  112|    142|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3046:2): [True: 0, False: 142]
  |  Branch (3046:2): [True: 142, False: 0]
  ------------------
 3047|       |
 3048|    142|	switch (ast->kind) {
 3049|     21|	case ZEND_AST_FUNC_DECL:
  ------------------
  |  Branch (3049:2): [True: 21, False: 121]
  ------------------
 3050|     21|	case ZEND_AST_CLOSURE:
  ------------------
  |  Branch (3050:2): [True: 0, False: 142]
  ------------------
 3051|     36|	case ZEND_AST_METHOD:
  ------------------
  |  Branch (3051:2): [True: 15, False: 127]
  ------------------
 3052|     36|	case ZEND_AST_ARROW_FUNC:
  ------------------
  |  Branch (3052:2): [True: 0, False: 142]
  ------------------
 3053|     41|	case ZEND_AST_PROPERTY_HOOK:
  ------------------
  |  Branch (3053:2): [True: 5, False: 137]
  ------------------
 3054|     41|		((zend_ast_decl *) ast)->child[4] = attr;
 3055|     41|		break;
 3056|     60|	case ZEND_AST_CLASS:
  ------------------
  |  Branch (3056:2): [True: 60, False: 82]
  ------------------
 3057|     60|		((zend_ast_decl *) ast)->child[3] = attr;
 3058|     60|		break;
 3059|     10|	case ZEND_AST_PROP_GROUP:
  ------------------
  |  Branch (3059:2): [True: 10, False: 132]
  ------------------
 3060|     10|		ast->child[2] = attr;
 3061|     10|		break;
 3062|      9|	case ZEND_AST_PARAM:
  ------------------
  |  Branch (3062:2): [True: 9, False: 133]
  ------------------
 3063|     13|	case ZEND_AST_ENUM_CASE:
  ------------------
  |  Branch (3063:2): [True: 4, False: 138]
  ------------------
 3064|     13|		ast->child[3] = attr;
 3065|     13|		break;
 3066|      2|	case ZEND_AST_CLASS_CONST_GROUP:
  ------------------
  |  Branch (3066:2): [True: 2, False: 140]
  ------------------
 3067|      2|		ast->child[1] = attr;
 3068|      2|		break;
 3069|     16|	case ZEND_AST_CONST_DECL:
  ------------------
  |  Branch (3069:2): [True: 16, False: 126]
  ------------------
 3070|       |		/* Since constants are already stored in a list, just add the attributes
 3071|       |		 * to that list instead of storing them elsewhere;
 3072|       |		 * zend_compile_const_decl() checks the kind of the list elements. */
 3073|     16|		ast = zend_ast_list_add(ast, attr);
 3074|     16|		break;
 3075|      0|	default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3075:2): [True: 0, False: 142]
  |  Branch (3075:11): [Folded, False: 0]
  |  Branch (3075:11): [Folded, False: 0]
  ------------------
 3076|    142|	}
 3077|       |
 3078|    142|	return ast;
 3079|    142|}
zend_ast_call_get_args:
 3082|     19|{
 3083|     19|	if (ast->kind == ZEND_AST_CALL) {
  ------------------
  |  Branch (3083:6): [True: 16, False: 3]
  ------------------
 3084|     16|		return ast->child[1];
 3085|     16|	} else if (ast->kind == ZEND_AST_STATIC_CALL || ast->kind == ZEND_AST_METHOD_CALL) {
  ------------------
  |  Branch (3085:13): [True: 3, False: 0]
  |  Branch (3085:50): [True: 0, False: 0]
  ------------------
 3086|      3|		return ast->child[2];
 3087|      3|	}
 3088|       |
 3089|      0|	ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3089:2): [Folded, False: 0]
  |  Branch (3089:2): [Folded, False: 0]
  ------------------
 3090|      0|	return NULL;
 3091|      0|}
zend_ast.c:zend_ast_alloc:
   31|   124k|static inline void *zend_ast_alloc(size_t size) {
   32|   124k|	return zend_arena_alloc(&CG(ast_arena), size);
  ------------------
  |  |   35|   124k|# define CG(v) (compiler_globals.v)
  ------------------
   33|   124k|}
zend_ast.c:zend_ast_create_zval_int:
   69|  47.3k|static zend_always_inline zend_ast * zend_ast_create_zval_int(const zval *zv, uint32_t attr, uint32_t lineno) {
   70|  47.3k|	zend_ast_zval *ast;
   71|       |
   72|  47.3k|	ast = zend_ast_alloc(sizeof(zend_ast_zval));
   73|  47.3k|	ast->kind = ZEND_AST_ZVAL;
   74|  47.3k|	ast->attr = attr;
   75|  47.3k|	ZVAL_COPY_VALUE(&ast->val, zv);
  ------------------
  |  | 1416|  47.3k|	do {												\
  |  | 1417|  47.3k|		zval *_z1 = (z);								\
  |  | 1418|  47.3k|		const zval *_z2 = (v);							\
  |  | 1419|  47.3k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  47.3k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  47.3k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  47.3k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  47.3k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  47.3k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  47.3k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  47.3k|	do {												\
  |  |  |  | 1408|  47.3k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  47.3k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  47.3k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  47.3k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  47.3k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  47.3k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  47.3k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 47.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  47.3k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 47.3k]
  |  |  ------------------
  ------------------
   76|  47.3k|	Z_LINENO(ast->val) = lineno;
  ------------------
  |  |  686|  47.3k|#define Z_LINENO(zval)				(zval).u2.lineno
  ------------------
   77|  47.3k|	return (zend_ast *) ast;
   78|  47.3k|}
zend_ast.c:zend_ast_list_size:
   41|  30.9k|static inline size_t zend_ast_list_size(uint32_t children) {
   42|  30.9k|	return sizeof(zend_ast_list) - sizeof(zend_ast *) + sizeof(zend_ast *) * children;
   43|  30.9k|}
zend_ast.c:zend_ast_is_placeholder_arg:
  160|  6.85k|static bool zend_ast_is_placeholder_arg(zend_ast *arg) {
  161|  6.85k|	return arg->kind == ZEND_AST_PLACEHOLDER_ARG
  ------------------
  |  Branch (161:9): [True: 76, False: 6.78k]
  ------------------
  162|  6.78k|		|| (arg->kind == ZEND_AST_NAMED_ARG
  ------------------
  |  Branch (162:7): [True: 52, False: 6.73k]
  ------------------
  163|     52|				&& arg->child[1]->kind == ZEND_AST_PLACEHOLDER_ARG);
  ------------------
  |  Branch (163:8): [True: 0, False: 52]
  ------------------
  164|  6.85k|}
zend_ast.c:is_power_of_two:
  562|  2.65k|static inline bool is_power_of_two(uint32_t n) {
  563|  2.65k|	return ((n != 0) && (n == (n & (~n + 1))));
  ------------------
  |  Branch (563:10): [True: 2.65k, False: 0]
  |  Branch (563:22): [True: 1.28k, False: 1.36k]
  ------------------
  564|  2.65k|}
zend_ast.c:zend_ast_realloc:
   35|  1.28k|static inline void *zend_ast_realloc(const void *old, size_t old_size, size_t new_size) {
   36|  1.28k|	void *new = zend_ast_alloc(new_size);
   37|  1.28k|	memcpy(new, old, old_size);
   38|  1.28k|	return new;
   39|  1.28k|}
zend_ast.c:zend_ast_evaluate_inner:
  680|    404|) {
  681|    404|	zval op1, op2;
  682|    404|	zend_result ret = SUCCESS;
  683|    404|	bool short_circuited;
  684|    404|	*short_circuited_ptr = false;
  685|       |
  686|    404|	switch (ast->kind) {
  687|     19|		case ZEND_AST_BINARY_OP:
  ------------------
  |  Branch (687:3): [True: 19, False: 385]
  ------------------
  688|     19|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 13]
  |  |  ------------------
  ------------------
  689|      6|				ret = FAILURE;
  690|     13|			} else if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  691|      0|				zval_ptr_dtor_nogc(&op1);
  692|      0|				ret = FAILURE;
  693|     13|			} else {
  694|     13|				binary_op_type op = get_binary_op(ast->attr);
  695|     13|				op(result, &op1, &op2);
  696|     13|				zval_ptr_dtor_nogc(&op1);
  697|     13|				zval_ptr_dtor_nogc(&op2);
  698|     13|				ret = EG(exception) ? FAILURE : SUCCESS;
  ------------------
  |  |   45|     13|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 4, False: 9]
  |  |  ------------------
  ------------------
  699|     13|			}
  700|     19|			break;
  701|      2|		case ZEND_AST_GREATER:
  ------------------
  |  Branch (701:3): [True: 2, False: 402]
  ------------------
  702|      2|		case ZEND_AST_GREATER_EQUAL:
  ------------------
  |  Branch (702:3): [True: 0, False: 404]
  ------------------
  703|      2|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  704|      0|				ret = FAILURE;
  705|      2|			} else if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  706|      0|				zval_ptr_dtor_nogc(&op1);
  707|      0|				ret = FAILURE;
  708|      2|			} else {
  709|       |				/* op1 > op2 is the same as op2 < op1 */
  710|      2|				binary_op_type op = ast->kind == ZEND_AST_GREATER
  ------------------
  |  Branch (710:25): [True: 2, False: 0]
  ------------------
  711|      2|					? is_smaller_function : is_smaller_or_equal_function;
  712|      2|				op(result, &op2, &op1);
  713|      2|				zval_ptr_dtor_nogc(&op1);
  714|      2|				zval_ptr_dtor_nogc(&op2);
  715|      2|				ret = EG(exception) ? FAILURE : SUCCESS;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  716|      2|			}
  717|      2|			break;
  718|      2|		case ZEND_AST_UNARY_OP:
  ------------------
  |  Branch (718:3): [True: 2, False: 402]
  ------------------
  719|      2|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  720|      1|				ret = FAILURE;
  721|      1|			} else {
  722|      1|				unary_op_type op = get_unary_op(ast->attr);
  723|      1|				ret = op(result, &op1);
  724|      1|				zval_ptr_dtor_nogc(&op1);
  725|      1|			}
  726|      2|			break;
  727|    127|		case ZEND_AST_ZVAL:
  ------------------
  |  Branch (727:3): [True: 127, False: 277]
  ------------------
  728|    127|		{
  729|    127|			zval *zv = zend_ast_get_zval(ast);
  730|       |
  731|    127|			ZVAL_COPY(result, zv);
  ------------------
  |  | 1425|    127|	do {												\
  |  | 1426|    127|		zval *_z1 = (z);								\
  |  | 1427|    127|		const zval *_z2 = (v);							\
  |  | 1428|    127|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    127|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    127|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    127|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    127|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    127|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    127|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    127|	do {												\
  |  |  |  | 1408|    127|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    127|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    127|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    127|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    127|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    127|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    127|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 127]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    127|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    127|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    127|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 53, False: 74]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     53|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     53|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     53|		}												\
  |  | 1434|    127|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 127]
  |  |  ------------------
  ------------------
  732|    127|			break;
  733|      2|		}
  734|     33|		case ZEND_AST_CONSTANT:
  ------------------
  |  Branch (734:3): [True: 33, False: 371]
  ------------------
  735|     33|		{
  736|     33|			zend_string *name = zend_ast_get_constant_name(ast);
  737|     33|			zval *zv = zend_get_constant_ex(name, scope, ast->attr);
  738|       |
  739|     33|			if (UNEXPECTED(zv == NULL)) {
  ------------------
  |  |  457|     33|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 12]
  |  |  ------------------
  ------------------
  740|     21|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     21|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     21|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     21|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
  741|     21|				return FAILURE;
  742|     21|			}
  743|     12|			ZVAL_COPY_OR_DUP(result, zv);
  ------------------
  |  | 1457|     12|	do {																\
  |  | 1458|     12|		zval *_z1 = (z);												\
  |  | 1459|     12|		const zval *_z2 = (v);											\
  |  | 1460|     12|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     12|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     12|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     12|	do {												\
  |  |  |  | 1408|     12|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     12|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     12|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     12|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     12|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      2|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      2|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      2|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      2|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      2|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      2|		}																\
  |  | 1472|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
  744|     12|			break;
  745|     33|		}
  746|      0|		case ZEND_AST_CONSTANT_CLASS:
  ------------------
  |  Branch (746:3): [True: 0, False: 404]
  ------------------
  747|      0|			if (scope) {
  ------------------
  |  Branch (747:8): [True: 0, False: 0]
  ------------------
  748|      0|				ZVAL_STR_COPY(result, scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  749|      0|			} else {
  750|      0|				ZVAL_EMPTY_STRING(result);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  751|      0|			}
  752|      0|			break;
  753|      1|		case ZEND_AST_CLASS_NAME:
  ------------------
  |  Branch (753:3): [True: 1, False: 403]
  ------------------
  754|      1|			if (!scope) {
  ------------------
  |  Branch (754:8): [True: 0, False: 1]
  ------------------
  755|      0|				zend_throw_error(NULL, "Cannot use \"self\" when no class scope is active");
  756|      0|				return FAILURE;
  757|      0|			}
  758|      1|			if (ast->attr == ZEND_FETCH_CLASS_SELF) {
  ------------------
  |  | 1043|      1|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (758:8): [True: 1, False: 0]
  ------------------
  759|      1|				ZVAL_STR_COPY(result, scope->name);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 0]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  760|      1|			} else if (ast->attr == ZEND_FETCH_CLASS_PARENT) {
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (760:15): [True: 0, False: 0]
  ------------------
  761|      0|				if (!scope->parent) {
  ------------------
  |  Branch (761:9): [True: 0, False: 0]
  ------------------
  762|      0|					zend_throw_error(NULL,
  763|      0|						"Cannot use \"parent\" when current class scope has no parent");
  764|      0|					return FAILURE;
  765|      0|				}
  766|      0|				ZVAL_STR_COPY(result, scope->parent->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  767|      0|			} else {
  768|      0|				ZEND_ASSERT(0 && "Should have errored during compilation");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (768:5): [Folded, False: 0]
  |  Branch (768:5): [True: 0, False: 0]
  |  Branch (768:5): [Folded, False: 0]
  |  Branch (768:5): [True: 0, False: 0]
  ------------------
  769|      0|			}
  770|      1|			break;
  771|      3|		case ZEND_AST_AND:
  ------------------
  |  Branch (771:3): [True: 3, False: 401]
  ------------------
  772|      3|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  773|      0|				ret = FAILURE;
  774|      0|				break;
  775|      0|			}
  776|      3|			if (zend_is_true(&op1)) {
  ------------------
  |  Branch (776:8): [True: 3, False: 0]
  ------------------
  777|      3|				if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  778|      3|					zval_ptr_dtor_nogc(&op1);
  779|      3|					ret = FAILURE;
  780|      3|					break;
  781|      3|				}
  782|      0|				ZVAL_BOOL(result, zend_is_true(&op2));
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  783|      0|				zval_ptr_dtor_nogc(&op2);
  784|      0|			} else {
  785|      0|				ZVAL_FALSE(result);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  786|      0|			}
  787|      0|			zval_ptr_dtor_nogc(&op1);
  788|      0|			break;
  789|      0|		case ZEND_AST_CAST:
  ------------------
  |  Branch (789:3): [True: 0, False: 404]
  ------------------
  790|      0|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  791|      0|				ret = FAILURE;
  792|      0|				break;
  793|      0|			}
  794|      0|			if (ast->attr == Z_TYPE(op1)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
  |  Branch (794:8): [True: 0, False: 0]
  ------------------
  795|      0|				ZVAL_COPY_VALUE(result, &op1);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  796|      0|			} else {
  797|      0|				switch (ast->attr) {
  798|      0|					case _IS_BOOL:
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
  |  Branch (798:6): [True: 0, False: 0]
  ------------------
  799|      0|						ZVAL_BOOL(result, zend_is_true(&op1));
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  800|      0|						break;
  801|      0|					case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (801:6): [True: 0, False: 0]
  ------------------
  802|      0|						ZVAL_LONG(result, zval_get_long_func(&op1, false));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  803|      0|						break;
  804|      0|					case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (804:6): [True: 0, False: 0]
  ------------------
  805|      0|						ZVAL_DOUBLE(result, zval_get_double_func(&op1));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  806|      0|						break;
  807|      0|					case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (807:6): [True: 0, False: 0]
  ------------------
  808|      0|						ZVAL_STR(result, zval_get_string_func(&op1));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  809|      0|						break;
  810|      0|					case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (810:6): [True: 0, False: 0]
  ------------------
  811|      0|						zend_cast_zval_to_array(result, &op1, IS_VAR);
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  812|      0|						break;
  813|      0|					case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (813:6): [True: 0, False: 0]
  ------------------
  814|      0|						zend_cast_zval_to_object(result, &op1, IS_VAR);
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  815|      0|						break;
  816|      0|					default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (816:6): [True: 0, False: 0]
  |  Branch (816:15): [Folded, False: 0]
  |  Branch (816:15): [Folded, False: 0]
  ------------------
  817|      0|				}
  818|      0|				zval_ptr_dtor_nogc(&op1);
  819|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  820|      0|					ret = FAILURE;
  821|      0|				}
  822|      0|			}
  823|      0|			break;
  824|      2|		case ZEND_AST_OR:
  ------------------
  |  Branch (824:3): [True: 2, False: 402]
  ------------------
  825|      2|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  826|      2|				ret = FAILURE;
  827|      2|				break;
  828|      2|			}
  829|      0|			if (zend_is_true(&op1)) {
  ------------------
  |  Branch (829:8): [True: 0, False: 0]
  ------------------
  830|      0|				ZVAL_TRUE(result);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  831|      0|			} else {
  832|      0|				if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  833|      0|					zval_ptr_dtor_nogc(&op1);
  834|      0|					ret = FAILURE;
  835|      0|					break;
  836|      0|				}
  837|      0|				ZVAL_BOOL(result, zend_is_true(&op2));
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  838|      0|				zval_ptr_dtor_nogc(&op2);
  839|      0|			}
  840|      0|			zval_ptr_dtor_nogc(&op1);
  841|      0|			break;
  842|      0|		case ZEND_AST_CONDITIONAL:
  ------------------
  |  Branch (842:3): [True: 0, False: 404]
  ------------------
  843|      0|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  844|      0|				ret = FAILURE;
  845|      0|				break;
  846|      0|			}
  847|      0|			if (zend_is_true(&op1)) {
  ------------------
  |  Branch (847:8): [True: 0, False: 0]
  ------------------
  848|      0|				if (!ast->child[1]) {
  ------------------
  |  Branch (848:9): [True: 0, False: 0]
  ------------------
  849|      0|					*result = op1;
  850|      0|				} else {
  851|      0|					if (UNEXPECTED(zend_ast_evaluate_ex(result, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  852|      0|						zval_ptr_dtor_nogc(&op1);
  853|      0|						ret = FAILURE;
  854|      0|						break;
  855|      0|					}
  856|      0|					zval_ptr_dtor_nogc(&op1);
  857|      0|				}
  858|      0|			} else {
  859|      0|				if (UNEXPECTED(zend_ast_evaluate_ex(result, ast->child[2], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  860|      0|					zval_ptr_dtor_nogc(&op1);
  861|      0|					ret = FAILURE;
  862|      0|					break;
  863|      0|				}
  864|      0|				zval_ptr_dtor_nogc(&op1);
  865|      0|			}
  866|      0|			break;
  867|      0|		case ZEND_AST_COALESCE:
  ------------------
  |  Branch (867:3): [True: 0, False: 404]
  ------------------
  868|      0|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  869|      0|				ret = FAILURE;
  870|      0|				break;
  871|      0|			}
  872|      0|			if (Z_TYPE(op1) > IS_NULL) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(op1) > IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (872:8): [True: 0, False: 0]
  ------------------
  873|      0|				*result = op1;
  874|      0|			} else {
  875|      0|				if (UNEXPECTED(zend_ast_evaluate_ex(result, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  876|      0|					zval_ptr_dtor_nogc(&op1);
  877|      0|					ret = FAILURE;
  878|      0|					break;
  879|      0|				}
  880|      0|				zval_ptr_dtor_nogc(&op1);
  881|      0|			}
  882|      0|			break;
  883|      2|		case ZEND_AST_UNARY_PLUS:
  ------------------
  |  Branch (883:3): [True: 2, False: 402]
  ------------------
  884|      2|			if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  885|      0|				ret = FAILURE;
  886|      2|			} else {
  887|      2|				ZVAL_LONG(&op1, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  888|      2|				ret = add_function(result, &op1, &op2);
  889|      2|				zval_ptr_dtor_nogc(&op2);
  890|      2|			}
  891|      2|			break;
  892|      2|		case ZEND_AST_UNARY_MINUS:
  ------------------
  |  Branch (892:3): [True: 2, False: 402]
  ------------------
  893|      2|			if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  894|      1|				ret = FAILURE;
  895|      1|			} else {
  896|      1|				ZVAL_LONG(&op1, -1);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  897|      1|				ret = mul_function(result, &op1, &op2);
  898|      1|				zval_ptr_dtor_nogc(&op2);
  899|      1|			}
  900|      2|			break;
  901|     24|		case ZEND_AST_ARRAY:
  ------------------
  |  Branch (901:3): [True: 24, False: 380]
  ------------------
  902|     24|			{
  903|     24|				uint32_t i;
  904|     24|				zend_ast_list *list = zend_ast_get_list(ast);
  905|       |
  906|     24|				if (!list->children) {
  ------------------
  |  Branch (906:9): [True: 0, False: 24]
  ------------------
  907|      0|					ZVAL_EMPTY_ARRAY(result);
  ------------------
  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      0|		zval *__z = (z);								\
  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  908|      0|					break;
  909|      0|				}
  910|     24|				array_init(result);
  911|     33|				for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (911:17): [True: 30, False: 3]
  ------------------
  912|     30|					zend_ast *elem = list->child[i];
  913|     30|					if (elem->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (913:10): [True: 4, False: 26]
  ------------------
  914|      4|						if (UNEXPECTED(zend_ast_evaluate_ex(&op1, elem->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  915|      2|							zval_ptr_dtor_nogc(result);
  916|      2|							return FAILURE;
  917|      2|						}
  918|      2|						if (UNEXPECTED(zend_ast_add_unpacked_element(result, &op1) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  919|      2|							zval_ptr_dtor_nogc(&op1);
  920|      2|							zval_ptr_dtor_nogc(result);
  921|      2|							return FAILURE;
  922|      2|						}
  923|      0|						zval_ptr_dtor_nogc(&op1);
  924|      0|						continue;
  925|      2|					}
  926|     26|					if (elem->child[1]) {
  ------------------
  |  Branch (926:10): [True: 13, False: 13]
  ------------------
  927|     13|						if (UNEXPECTED(zend_ast_evaluate_ex(&op1, elem->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 8]
  |  |  ------------------
  ------------------
  928|      5|							zval_ptr_dtor_nogc(result);
  929|      5|							return FAILURE;
  930|      5|						}
  931|     13|					} else {
  932|     13|						ZVAL_UNDEF(&op1);
  ------------------
  |  | 1055|     13|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     13|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     13|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  933|     13|					}
  934|     21|					if (UNEXPECTED(zend_ast_evaluate_ex(&op2, elem->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 11]
  |  |  ------------------
  ------------------
  935|     10|						zval_ptr_dtor_nogc(&op1);
  936|     10|						zval_ptr_dtor_nogc(result);
  937|     10|						return FAILURE;
  938|     10|					}
  939|     11|					if (UNEXPECTED(zend_ast_add_array_element(result, &op1, &op2) != SUCCESS)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 9]
  |  |  ------------------
  ------------------
  940|      2|						zval_ptr_dtor_nogc(&op1);
  941|      2|						zval_ptr_dtor_nogc(&op2);
  942|      2|						zval_ptr_dtor_nogc(result);
  943|      2|						return FAILURE;
  944|      2|					}
  945|     11|				}
  946|     24|			}
  947|      3|			break;
  948|      8|		case ZEND_AST_DIM:
  ------------------
  |  Branch (948:3): [True: 8, False: 396]
  ------------------
  949|      8|			if (ast->child[1] == NULL) {
  ------------------
  |  Branch (949:8): [True: 0, False: 8]
  ------------------
  950|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot use [] for reading");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  951|      0|			}
  952|       |
  953|      8|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  ------------------
  ------------------
  954|      1|				ret = FAILURE;
  955|      1|				break;
  956|      1|			}
  957|      7|			if (short_circuited) {
  ------------------
  |  Branch (957:8): [True: 0, False: 7]
  ------------------
  958|      0|				*short_circuited_ptr = true;
  959|      0|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  960|      0|				return SUCCESS;
  961|      0|			}
  962|       |
  963|       |			// DIM on objects is disallowed because it allows executing arbitrary expressions
  964|      7|			if (Z_TYPE(op1) == IS_OBJECT) {
  ------------------
  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(op1) == IS_OBJECT) {
  ------------------
  |  |  614|      7|#define IS_OBJECT					8
  ------------------
  |  Branch (964:8): [True: 0, False: 7]
  ------------------
  965|      0|				zval_ptr_dtor_nogc(&op1);
  966|      0|				zend_throw_error(NULL, "Cannot use [] on objects in constant expression");
  967|      0|				ret = FAILURE;
  968|      0|				break;
  969|      0|			}
  970|       |
  971|      7|			if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
  972|      1|				zval_ptr_dtor_nogc(&op1);
  973|      1|				ret = FAILURE;
  974|      1|				break;
  975|      1|			}
  976|       |
  977|      6|			zend_fetch_dimension_const(result, &op1, &op2, (ast->attr & ZEND_DIM_IS) ? BP_VAR_IS : BP_VAR_R);
  ------------------
  |  | 1138|      6|#define ZEND_DIM_IS					(1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */
  ------------------
              			zend_fetch_dimension_const(result, &op1, &op2, (ast->attr & ZEND_DIM_IS) ? BP_VAR_IS : BP_VAR_R);
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
              			zend_fetch_dimension_const(result, &op1, &op2, (ast->attr & ZEND_DIM_IS) ? BP_VAR_IS : BP_VAR_R);
  ------------------
  |  | 1074|      6|#define BP_VAR_R			0
  ------------------
  |  Branch (977:51): [True: 0, False: 6]
  ------------------
  978|       |
  979|      6|			zval_ptr_dtor_nogc(&op1);
  980|      6|			zval_ptr_dtor_nogc(&op2);
  981|      6|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
  982|      1|				return FAILURE;
  983|      1|			}
  984|       |
  985|      5|			break;
  986|     87|		case ZEND_AST_CONST_ENUM_INIT:
  ------------------
  |  Branch (986:3): [True: 87, False: 317]
  ------------------
  987|     87|		{
  988|       |			// Preloading will attempt to resolve constants but objects can't be stored in shm
  989|       |			// Aborting here to store the const AST instead
  990|     87|			if (CG(in_compilation)) {
  ------------------
  |  |   35|     87|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 87]
  |  |  ------------------
  ------------------
  991|      0|				return FAILURE;
  992|      0|			}
  993|       |
  994|     87|			zend_ast *class_name_ast = ast->child[0];
  995|     87|			zend_string *class_name = zend_ast_get_str(class_name_ast);
  996|       |
  997|     87|			zend_ast *case_id_ast = ast->child[1];
  998|     87|			int case_id = (int)Z_LVAL_P(zend_ast_get_zval(case_id_ast));
  ------------------
  |  |  976|     87|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     87|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  999|       |
 1000|     87|			zend_ast *case_name_ast = ast->child[2];
 1001|     87|			zend_string *case_name = zend_ast_get_str(case_name_ast);
 1002|       |
 1003|     87|			zend_ast *case_value_ast = ast->child[3];
 1004|       |
 1005|     87|			zval case_value_zv;
 1006|     87|			ZVAL_UNDEF(&case_value_zv);
  ------------------
  |  | 1055|     87|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     87|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     87|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     87|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     87|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     87|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 87]
  |  |  ------------------
  ------------------
 1007|     87|			if (case_value_ast != NULL) {
  ------------------
  |  Branch (1007:8): [True: 30, False: 57]
  ------------------
 1008|     30|				if (UNEXPECTED(zend_ast_evaluate_ex(&case_value_zv, case_value_ast, scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 28]
  |  |  ------------------
  ------------------
 1009|      2|					return FAILURE;
 1010|      2|				}
 1011|     30|			}
 1012|       |
 1013|     85|			zend_class_entry *ce = zend_lookup_class(class_name);
 1014|     85|			zend_enum_new(result, ce, case_id, case_name, case_value_ast != NULL ? &case_value_zv : NULL);
  ------------------
  |  Branch (1014:50): [True: 28, False: 57]
  ------------------
 1015|     85|			zval_ptr_dtor_nogc(&case_value_zv);
 1016|     85|			break;
 1017|     87|		}
 1018|     45|		case ZEND_AST_CLASS_CONST:
  ------------------
  |  Branch (1018:3): [True: 45, False: 359]
  ------------------
 1019|     45|		{
 1020|     45|			zend_string *class_name = zend_ast_get_str(ast->child[0]);
 1021|     45|			if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     45|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 42]
  |  |  ------------------
  ------------------
 1022|      3|				return FAILURE;
 1023|      3|			}
 1024|     42|			if (UNEXPECTED(Z_TYPE(op2) != IS_STRING)) {
  ------------------
  |  |  457|     42|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 42]
  |  |  ------------------
  ------------------
 1025|      0|				zend_invalid_class_constant_type_error(Z_TYPE(op2));
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
 1026|      0|				zval_ptr_dtor_nogc(&op2);
 1027|      0|				return FAILURE;
 1028|      0|			}
 1029|     42|			zend_string *const_name = Z_STR(op2);
  ------------------
  |  |  981|     42|#define Z_STR(zval)					(zval).value.str
  ------------------
 1030|       |
 1031|     42|			zend_string *previous_filename;
 1032|     42|			zend_long previous_lineno;
 1033|     42|			if (scope) {
  ------------------
  |  Branch (1033:8): [True: 31, False: 11]
  ------------------
 1034|     31|				previous_filename = EG(filename_override);
  ------------------
  |  |   45|     31|# define EG(v) (executor_globals.v)
  ------------------
 1035|     31|				previous_lineno = EG(lineno_override);
  ------------------
  |  |   45|     31|# define EG(v) (executor_globals.v)
  ------------------
 1036|     31|				EG(filename_override) = scope->info.user.filename;
  ------------------
  |  |   45|     31|# define EG(v) (executor_globals.v)
  ------------------
 1037|     31|				EG(lineno_override) = zend_ast_get_lineno(ast);
  ------------------
  |  |   45|     31|# define EG(v) (executor_globals.v)
  ------------------
 1038|     31|			}
 1039|     42|			zval *zv = zend_get_class_constant_ex(class_name, const_name, scope, ast->attr);
 1040|     42|			if (scope) {
  ------------------
  |  Branch (1040:8): [True: 31, False: 11]
  ------------------
 1041|     31|				EG(filename_override) = previous_filename;
  ------------------
  |  |   45|     31|# define EG(v) (executor_globals.v)
  ------------------
 1042|     31|				EG(lineno_override) = previous_lineno;
  ------------------
  |  |   45|     31|# define EG(v) (executor_globals.v)
  ------------------
 1043|     31|			}
 1044|       |
 1045|     42|			if (UNEXPECTED(zv == NULL)) {
  ------------------
  |  |  457|     42|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 28]
  |  |  ------------------
  ------------------
 1046|     14|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     14|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     14|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     14|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1047|     14|				zval_ptr_dtor_nogc(&op2);
 1048|     14|				return FAILURE;
 1049|     14|			}
 1050|     28|			ZVAL_COPY_OR_DUP(result, zv);
  ------------------
  |  | 1457|     28|	do {																\
  |  | 1458|     28|		zval *_z1 = (z);												\
  |  | 1459|     28|		const zval *_z2 = (v);											\
  |  | 1460|     28|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     28|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     28|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     28|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     28|	do {												\
  |  |  |  | 1408|     28|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     28|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     28|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     28|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     28|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     28|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     28|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 20, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|     20|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|     20|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 20, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 20, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|     20|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|     20|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|     20|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|     20|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|     20|		}																\
  |  | 1472|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1051|     28|			zval_ptr_dtor_nogc(&op2);
 1052|     28|			break;
 1053|     42|		}
 1054|     12|		case ZEND_AST_NEW:
  ------------------
  |  Branch (1054:3): [True: 12, False: 392]
  ------------------
 1055|     12|		{
 1056|     12|			zend_class_entry *ce = zend_ast_fetch_class(ast->child[0], scope);
 1057|     12|			if (!ce) {
  ------------------
  |  Branch (1057:8): [True: 2, False: 10]
  ------------------
 1058|      2|				return FAILURE;
 1059|      2|			}
 1060|       |
 1061|     10|			if (object_init_ex(result, ce) != SUCCESS) {
  ------------------
  |  Branch (1061:8): [True: 0, False: 10]
  ------------------
 1062|      0|				return FAILURE;
 1063|      0|			}
 1064|       |
 1065|       |			/* Even if there is no constructor, the object can have cause side-effects in various ways (__toString(), __get(), __isset(), etc). */
 1066|     10|			ctx->had_side_effects = true;
 1067|       |
 1068|     10|			zend_ast_list *args_ast = zend_ast_get_list(ast->child[1]);
 1069|     10|			if (args_ast->attr) {
  ------------------
  |  Branch (1069:8): [True: 0, False: 10]
  ------------------
 1070|       |				/* Has named arguments. */
 1071|      0|				HashTable *args = zend_new_array(args_ast->children);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 1072|      0|				for (uint32_t i = 0; i < args_ast->children; i++) {
  ------------------
  |  Branch (1072:26): [True: 0, False: 0]
  ------------------
 1073|      0|					zend_ast *arg_ast = args_ast->child[i];
 1074|      0|					zend_string *name = NULL;
 1075|      0|					zval arg;
 1076|      0|					if (arg_ast->kind == ZEND_AST_NAMED_ARG) {
  ------------------
  |  Branch (1076:10): [True: 0, False: 0]
  ------------------
 1077|      0|						name = zend_ast_get_str(arg_ast->child[0]);
 1078|      0|						arg_ast = arg_ast->child[1];
 1079|      0|					}
 1080|      0|					if (zend_ast_evaluate_ex(&arg, arg_ast, scope, &short_circuited, ctx) == FAILURE) {
  ------------------
  |  Branch (1080:10): [True: 0, False: 0]
  ------------------
 1081|      0|						zend_array_destroy(args);
 1082|      0|						zval_ptr_dtor(result);
 1083|      0|						return FAILURE;
 1084|      0|					}
 1085|      0|					if (name) {
  ------------------
  |  Branch (1085:10): [True: 0, False: 0]
  ------------------
 1086|      0|						if (!zend_hash_add(args, name, &arg)) {
  ------------------
  |  Branch (1086:11): [True: 0, False: 0]
  ------------------
 1087|      0|							zend_throw_error(NULL,
 1088|      0|								"Named parameter $%s overwrites previous argument",
 1089|      0|								ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1090|      0|							zend_array_destroy(args);
 1091|      0|							zval_ptr_dtor(result);
 1092|      0|							return FAILURE;
 1093|      0|						}
 1094|      0|					} else {
 1095|      0|						zend_hash_next_index_insert(args, &arg);
 1096|      0|					}
 1097|      0|				}
 1098|       |
 1099|      0|				zend_function *ctor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_function *ctor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1100|      0|				if (ctor) {
  ------------------
  |  Branch (1100:9): [True: 0, False: 0]
  ------------------
 1101|      0|					zend_call_known_function(
 1102|      0|						ctor, Z_OBJ_P(result), Z_OBJCE_P(result), NULL, 0, NULL, args);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              						ctor, Z_OBJ_P(result), Z_OBJCE_P(result), NULL, 0, NULL, args);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1103|      0|				}
 1104|       |
 1105|      0|				zend_array_destroy(args);
 1106|     10|			} else {
 1107|     10|				ALLOCA_FLAG(use_heap)
 1108|     10|				zval *args = do_alloca(sizeof(zval) * args_ast->children, use_heap);
  ------------------
  |  |  247|     10|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|     10|				for (uint32_t i = 0; i < args_ast->children; i++) {
  ------------------
  |  Branch (1109:26): [True: 0, False: 10]
  ------------------
 1110|      0|					if (zend_ast_evaluate_ex(&args[i], args_ast->child[i], scope, &short_circuited, ctx) == FAILURE) {
  ------------------
  |  Branch (1110:10): [True: 0, False: 0]
  ------------------
 1111|      0|						for (uint32_t j = 0; j < i; j++) {
  ------------------
  |  Branch (1111:28): [True: 0, False: 0]
  ------------------
 1112|      0|							zval_ptr_dtor(&args[j]);
 1113|      0|						}
 1114|      0|						free_alloca(args, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1115|      0|						zval_ptr_dtor(result);
 1116|      0|						return FAILURE;
 1117|      0|					}
 1118|      0|				}
 1119|       |
 1120|     10|				zend_function *ctor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1003|     10|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|     10|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_function *ctor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1000|     10|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1121|     10|				if (ctor) {
  ------------------
  |  Branch (1121:9): [True: 2, False: 8]
  ------------------
 1122|      2|					zend_call_known_instance_method(
 1123|      2|						ctor, Z_OBJ_P(result), NULL, args_ast->children, args);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1124|      2|				}
 1125|       |
 1126|     10|				for (uint32_t i = 0; i < args_ast->children; i++) {
  ------------------
  |  Branch (1126:26): [True: 0, False: 10]
  ------------------
 1127|      0|					zval_ptr_dtor(&args[i]);
 1128|      0|				}
 1129|     10|				free_alloca(args, use_heap);
  ------------------
  |  |  248|     10|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1130|     10|			}
 1131|       |
 1132|     10|			if (EG(exception)) {
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 1133|      0|				zend_object_store_ctor_failed(Z_OBJ_P(result));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1134|      0|				zval_ptr_dtor(result);
 1135|      0|				return FAILURE;
 1136|      0|			}
 1137|     10|			return SUCCESS;
 1138|     10|		}
 1139|     15|		case ZEND_AST_CALL:
  ------------------
  |  Branch (1139:3): [True: 15, False: 389]
  ------------------
 1140|     18|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (1140:3): [True: 3, False: 401]
  ------------------
 1141|     18|		{
 1142|     18|			zend_function *fptr;
 1143|     18|			zend_class_entry *called_scope = NULL;
 1144|       |
 1145|     18|			zend_ast *args_ast = zend_ast_call_get_args(ast);
 1146|     18|			ZEND_ASSERT(args_ast->kind == ZEND_AST_CALLABLE_CONVERT);
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1146:4): [True: 0, False: 18]
  |  Branch (1146:4): [True: 18, False: 0]
  ------------------
 1147|       |
 1148|     18|			zend_ast_fcc *fcc_ast = (zend_ast_fcc*)args_ast;
 1149|       |
 1150|     18|			zend_ast_list *args = zend_ast_get_list(fcc_ast->args);
 1151|     18|			ZEND_ASSERT(args->children > 0);
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1151:4): [True: 0, False: 18]
  |  Branch (1151:4): [True: 18, False: 0]
  ------------------
 1152|     18|			if (args->children != 1 || args->child[0]->attr != ZEND_PLACEHOLDER_VARIADIC) {
  ------------------
  |  | 1234|     18|#define ZEND_PLACEHOLDER_VARIADIC (1<<0)
  ------------------
  |  Branch (1152:8): [True: 0, False: 18]
  |  Branch (1152:31): [True: 0, False: 18]
  ------------------
 1153|       |				/* TODO: PFAs */
 1154|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Constant expression contains invalid operations");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1155|      0|			}
 1156|       |
 1157|     18|			switch (ast->kind) {
 1158|     15|				case ZEND_AST_CALL: {
  ------------------
  |  Branch (1158:5): [True: 15, False: 3]
  ------------------
 1159|     15|					fptr = ZEND_MAP_PTR_GET(fcc_ast->fptr);
  ------------------
  |  |   54|     15|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|     15|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     15|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     15|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|     15|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|     15|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|     15|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|     15|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  ------------------
 1160|       |
 1161|     15|					if (!fptr) {
  ------------------
  |  Branch (1161:10): [True: 15, False: 0]
  ------------------
 1162|     15|						zend_string *function_name = zend_ast_get_str(ast->child[0]);
 1163|     15|						zend_string *function_name_lc = zend_string_tolower(function_name);
 1164|     15|						fptr = zend_fetch_function(function_name_lc);
 1165|     15|						if (!fptr && ast->child[0]->attr != ZEND_NAME_FQ) {
  ------------------
  |  | 1060|      5|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (1165:11): [True: 5, False: 10]
  |  Branch (1165:20): [True: 2, False: 3]
  ------------------
 1166|      2|							const char *backslash = zend_memrchr(ZSTR_VAL(function_name_lc), '\\', ZSTR_LEN(function_name_lc));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							const char *backslash = zend_memrchr(ZSTR_VAL(function_name_lc), '\\', ZSTR_LEN(function_name_lc));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1167|      2|							if (backslash) {
  ------------------
  |  Branch (1167:12): [True: 1, False: 1]
  ------------------
 1168|      1|								fptr = zend_fetch_function_str(backslash + 1, ZSTR_LEN(function_name_lc) - (backslash - ZSTR_VAL(function_name_lc) + 1));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              								fptr = zend_fetch_function_str(backslash + 1, ZSTR_LEN(function_name_lc) - (backslash - ZSTR_VAL(function_name_lc) + 1));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1169|      1|							}
 1170|      2|						}
 1171|     15|						zend_string_release(function_name_lc);
 1172|     15|						if (!fptr) {
  ------------------
  |  Branch (1172:11): [True: 4, False: 11]
  ------------------
 1173|      4|							zend_throw_error(NULL, "Call to undefined function %s()", ZSTR_VAL(function_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1174|      4|							return FAILURE;
 1175|      4|						}
 1176|       |
 1177|     11|						ZEND_MAP_PTR_SET(fcc_ast->fptr, fptr);
  ------------------
  |  |   59|     11|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|     11|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|     11|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     11|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|     11|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|     11|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|     11|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|     11|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|     11|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|     11|		*__p = (val); \
  |  |  |  |   69|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     11|		} else { \
  |  |   63|      0|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|		} \
  |  |   65|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1178|     11|					}
 1179|       |
 1180|     11|					break;
 1181|     15|				}
 1182|     11|				case ZEND_AST_STATIC_CALL: {
  ------------------
  |  Branch (1182:5): [True: 3, False: 15]
  ------------------
 1183|      3|					zend_class_entry *ce = zend_ast_fetch_class(ast->child[0], scope);
 1184|      3|					if (!ce) {
  ------------------
  |  Branch (1184:10): [True: 1, False: 2]
  ------------------
 1185|      1|						return FAILURE;
 1186|      1|					}
 1187|      2|					called_scope = ce;
 1188|       |
 1189|      2|					fptr = ZEND_MAP_PTR_GET(fcc_ast->fptr);
  ------------------
  |  |   54|      2|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      2|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      2|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      2|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      2|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      2|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      2|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  ------------------
 1190|       |
 1191|      2|					if (!fptr) {
  ------------------
  |  Branch (1191:10): [True: 2, False: 0]
  ------------------
 1192|      2|						zend_string *method_name = zend_ast_get_str(ast->child[1]);
 1193|      2|						if (ce->get_static_method) {
  ------------------
  |  Branch (1193:11): [True: 0, False: 2]
  ------------------
 1194|      0|							fptr = ce->get_static_method(ce, method_name);
 1195|      2|						} else {
 1196|      2|							fptr = zend_hash_find_ptr_lc(&ce->function_table, method_name);
 1197|      2|							if (fptr) {
  ------------------
  |  Branch (1197:12): [True: 1, False: 1]
  ------------------
 1198|      1|								if (!zend_check_method_accessible(fptr, scope)) {
  ------------------
  |  Branch (1198:13): [True: 0, False: 1]
  ------------------
 1199|      0|									if (ce->__callstatic) {
  ------------------
  |  Branch (1199:14): [True: 0, False: 0]
  ------------------
 1200|      0|										zend_throw_error(NULL, "Creating a callable for the magic __callStatic() method is not supported in constant expressions");
 1201|      0|									} else {
 1202|      0|										zend_bad_method_call(fptr, method_name, scope);
 1203|      0|									}
 1204|       |
 1205|      0|									return FAILURE;
 1206|      0|								}
 1207|      1|							} else {
 1208|      1|								if (ce->__callstatic) {
  ------------------
  |  Branch (1208:13): [True: 0, False: 1]
  ------------------
 1209|      0|									zend_throw_error(NULL, "Creating a callable for the magic __callStatic() method is not supported in constant expressions");
 1210|      1|								} else {
 1211|      1|									zend_undefined_method(ce, method_name);
 1212|      1|								}
 1213|       |
 1214|      1|								return FAILURE;
 1215|      1|							}
 1216|      2|						}
 1217|       |
 1218|      1|						if (!(fptr->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      1|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1218:11): [True: 0, False: 1]
  ------------------
 1219|      0|							zend_non_static_method_call(fptr);
 1220|       |
 1221|      0|							return FAILURE;
 1222|      0|						}
 1223|      1|						if ((fptr->common.fn_flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  233|      1|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1223:11): [True: 1, False: 0]
  ------------------
 1224|      1|							zend_abstract_method_call(fptr);
 1225|       |
 1226|      1|							return FAILURE;
 1227|      1|						} else if (fptr->common.scope->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|      0|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (1227:18): [True: 0, False: 0]
  ------------------
 1228|      0|							zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 1229|      0|								"Calling static trait method %s::%s is deprecated, "
 1230|      0|								"it should only be called on a class using the trait",
 1231|      0|								ZSTR_VAL(fptr->common.scope->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              								ZSTR_VAL(fptr->common.scope->name), ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1232|      0|							if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1233|      0|								return FAILURE;
 1234|      0|							}
 1235|      0|						}
 1236|       |
 1237|      0|						ZEND_MAP_PTR_SET(fcc_ast->fptr, fptr);
  ------------------
  |  |   59|      0|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|      0|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|		} else { \
  |  |   63|      0|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|		} \
  |  |   65|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1238|      0|					}
 1239|       |
 1240|      0|					break;
 1241|      2|				}
 1242|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1242:5): [True: 0, False: 18]
  |  Branch (1242:14): [Folded, False: 0]
  |  Branch (1242:14): [Folded, False: 0]
  ------------------
 1243|     18|			}
 1244|       |
 1245|     11|			zend_create_fake_closure(result, fptr, fptr->common.scope, called_scope, NULL);
 1246|       |
 1247|     11|			return SUCCESS;
 1248|     18|		}
 1249|      2|		case ZEND_AST_OP_ARRAY:
  ------------------
  |  Branch (1249:3): [True: 2, False: 402]
  ------------------
 1250|      2|		{
 1251|       |			// Preloading will attempt to resolve constants but objects can't be stored in shm
 1252|       |			// Aborting here to store the const AST instead
 1253|      2|			if (CG(in_compilation)) {
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1254|      0|				return FAILURE;
 1255|      0|			}
 1256|       |
 1257|      2|			zend_function *func = (zend_function *)zend_ast_get_op_array(ast)->op_array;
 1258|       |
 1259|      2|			zend_create_closure(result, func, scope, scope, NULL);
 1260|      2|			return SUCCESS;
 1261|      2|		}
 1262|     11|		case ZEND_AST_PROP:
  ------------------
  |  Branch (1262:3): [True: 11, False: 393]
  ------------------
 1263|     15|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (1263:3): [True: 4, False: 400]
  ------------------
 1264|     15|		{
 1265|     15|			if (UNEXPECTED(zend_ast_evaluate_ex(&op1, ast->child[0], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 14]
  |  |  ------------------
  ------------------
 1266|      1|				return FAILURE;
 1267|      1|			}
 1268|     14|			if (short_circuited) {
  ------------------
  |  Branch (1268:8): [True: 0, False: 14]
  ------------------
 1269|      0|				*short_circuited_ptr = true;
 1270|      0|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1271|      0|				return SUCCESS;
 1272|      0|			}
 1273|     14|			if (ast->kind == ZEND_AST_NULLSAFE_PROP && Z_TYPE(op1) == IS_NULL) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (ast->kind == ZEND_AST_NULLSAFE_PROP && Z_TYPE(op1) == IS_NULL) {
  ------------------
  |  |  607|      4|#define IS_NULL						1
  ------------------
  |  Branch (1273:8): [True: 4, False: 10]
  |  Branch (1273:47): [True: 1, False: 3]
  ------------------
 1274|      1|				*short_circuited_ptr = true;
 1275|      1|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1276|      1|				return SUCCESS;
 1277|      1|			}
 1278|       |
 1279|     13|			if (UNEXPECTED(zend_ast_evaluate_ex(&op2, ast->child[1], scope, &short_circuited, ctx) != SUCCESS)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 12]
  |  |  ------------------
  ------------------
 1280|      1|				zval_ptr_dtor_nogc(&op1);
 1281|      1|				return FAILURE;
 1282|      1|			}
 1283|       |
 1284|     12|			if (!try_convert_to_string(&op2)) {
  ------------------
  |  Branch (1284:8): [True: 1, False: 11]
  ------------------
 1285|      1|				zval_ptr_dtor_nogc(&op1);
 1286|      1|				zval_ptr_dtor_nogc(&op2);
 1287|      1|				return FAILURE;
 1288|      1|			}
 1289|       |
 1290|     11|			if (Z_TYPE(op1) != IS_OBJECT) {
  ------------------
  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(op1) != IS_OBJECT) {
  ------------------
  |  |  614|     11|#define IS_OBJECT					8
  ------------------
  |  Branch (1290:8): [True: 5, False: 6]
  ------------------
 1291|      5|				zend_wrong_property_read(&op1, &op2);
 1292|       |
 1293|      5|				zval_ptr_dtor_nogc(&op1);
 1294|      5|				zval_ptr_dtor_nogc(&op2);
 1295|       |
 1296|      5|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      5|#define ZVAL_NULL(z) do {				\
  |  | 1060|      5|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1297|      5|				return SUCCESS;
 1298|      5|			}
 1299|       |
 1300|      6|			zend_object *zobj = Z_OBJ(op1);
  ------------------
  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1301|      6|			if (!(zobj->ce->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|      6|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (1301:8): [True: 2, False: 4]
  ------------------
 1302|      2|				zend_throw_error(NULL, "Fetching properties on non-enums in constant expressions is not allowed");
 1303|      2|				zval_ptr_dtor_nogc(&op1);
 1304|      2|				zval_ptr_dtor_nogc(&op2);
 1305|      2|				return FAILURE;
 1306|      2|			}
 1307|       |
 1308|      4|			zend_string *name = Z_STR(op2);
  ------------------
  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  ------------------
 1309|      4|			zval *property_result = zend_read_property_ex(scope, zobj, name, 0, result);
 1310|      4|			if (EG(exception)) {
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1311|      0|				zval_ptr_dtor_nogc(&op1);
 1312|      0|				zval_ptr_dtor_nogc(&op2);
 1313|      0|				return FAILURE;
 1314|      0|			}
 1315|       |
 1316|      4|			if (result != property_result) {
  ------------------
  |  Branch (1316:8): [True: 4, False: 0]
  ------------------
 1317|      4|				ZVAL_COPY(result, property_result);
  ------------------
  |  | 1425|      4|	do {												\
  |  | 1426|      4|		zval *_z1 = (z);								\
  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1318|      4|			}
 1319|      4|			zval_ptr_dtor_nogc(&op1);
 1320|      4|			zval_ptr_dtor_nogc(&op2);
 1321|      4|			return SUCCESS;
 1322|      4|		}
 1323|      0|		default:
  ------------------
  |  Branch (1323:3): [True: 0, False: 404]
  ------------------
 1324|      0|			zend_throw_error(NULL, "Unsupported constant expression");
 1325|      0|			ret = FAILURE;
 1326|    404|	}
 1327|    295|	return ret;
 1328|    404|}
zend_ast.c:zend_ast_add_unpacked_element:
  613|      2|static zend_result zend_ast_add_unpacked_element(const zval *result, const zval *expr) {
  614|      2|	if (EXPECTED(Z_TYPE_P(expr) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  615|      0|		const HashTable *ht = Z_ARRVAL_P(expr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|      0|		zval *val;
  617|      0|		zend_string *key;
  618|       |
  619|      0|		ZEND_HASH_FOREACH_STR_KEY_VAL(ht, key, val) {
  ------------------
  |  | 1181|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|      0|	_key = __key; \
  |  | 1183|      0|	_val = _z;
  ------------------
  620|      0|			if (key) {
  ------------------
  |  Branch (620:8): [True: 0, False: 0]
  ------------------
  621|      0|				zend_hash_update(Z_ARRVAL_P(result), key, val);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  622|      0|			} else {
  623|      0|				if (!zend_hash_next_index_insert(Z_ARRVAL_P(result), val)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (623:9): [True: 0, False: 0]
  ------------------
  624|      0|					zend_throw_error(NULL,
  625|      0|						"Cannot add element to the array as the next element is already occupied");
  626|      0|					return FAILURE;
  627|      0|				}
  628|      0|			}
  629|      0|			Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  630|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  631|      0|		return SUCCESS;
  632|      0|	}
  633|       |
  634|      2|	zend_throw_error(NULL, "Only arrays can be unpacked in constant expression");
  635|      2|	return FAILURE;
  636|      2|}
zend_ast.c:zend_ast_add_array_element:
  594|     11|{
  595|     11|	if (Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|     11|#define IS_UNDEF					0
  ------------------
  |  Branch (595:6): [True: 7, False: 4]
  ------------------
  596|      7|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(result), expr)) {
  ------------------
  |  |  997|      7|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      7|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (596:7): [True: 0, False: 7]
  ------------------
  597|      0|			zend_throw_error(NULL,
  598|      0|				"Cannot add element to the array as the next element is already occupied");
  599|      0|			return FAILURE;
  600|      0|		}
  601|      7|		return SUCCESS;
  602|      7|	}
  603|       |
  604|      4|	if (array_set_zval_key(Z_ARRVAL_P(result), offset, expr) == FAILURE) {
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (604:6): [True: 2, False: 2]
  ------------------
  605|      2|		return FAILURE;
  606|      2|	}
  607|       |
  608|      2|	zval_ptr_dtor_nogc(offset);
  609|      2|	zval_ptr_dtor_nogc(expr);
  610|      2|	return SUCCESS;
  611|      4|}
zend_ast.c:zend_ast_fetch_class:
  639|     15|{
  640|     15|	return zend_fetch_class_with_scope(zend_ast_get_str(ast), (ast->attr >> ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT) | ZEND_FETCH_CLASS_EXCEPTION, scope);
  ------------------
  |  | 1065|     15|#define ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT 2
  ------------------
              	return zend_fetch_class_with_scope(zend_ast_get_str(ast), (ast->attr >> ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT) | ZEND_FETCH_CLASS_EXCEPTION, scope);
  ------------------
  |  | 1052|     15|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
  641|     15|}
zend_ast.c:zend_ast_tree_size:
 1338|  1.17k|{
 1339|  1.17k|	size_t size;
 1340|       |
 1341|  1.17k|	if (ast->kind == ZEND_AST_ZVAL || ast->kind == ZEND_AST_CONSTANT) {
  ------------------
  |  Branch (1341:6): [True: 624, False: 547]
  |  Branch (1341:36): [True: 97, False: 450]
  ------------------
 1342|    721|		size = sizeof(zend_ast_zval);
 1343|    721|	} else if (ast->kind == ZEND_AST_OP_ARRAY) {
  ------------------
  |  Branch (1343:13): [True: 3, False: 447]
  ------------------
 1344|      3|		size = sizeof(zend_ast_op_array);
 1345|    447|	} else if (ast->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (1345:13): [True: 20, False: 427]
  ------------------
 1346|     20|		zend_ast *args_ast = ((zend_ast_fcc*)ast)->args;
 1347|     20|		size = sizeof(zend_ast_fcc) + zend_ast_tree_size(args_ast);
 1348|    427|	} else if (zend_ast_is_list(ast)) {
  ------------------
  |  Branch (1348:13): [True: 69, False: 358]
  ------------------
 1349|     69|		uint32_t i;
 1350|     69|		const zend_ast_list *list = zend_ast_get_list(ast);
 1351|       |
 1352|     69|		size = zend_ast_list_size(list->children);
 1353|    142|		for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (1353:15): [True: 73, False: 69]
  ------------------
 1354|     73|			if (list->child[i]) {
  ------------------
  |  Branch (1354:8): [True: 73, False: 0]
  ------------------
 1355|     73|				size += zend_ast_tree_size(list->child[i]);
 1356|     73|			}
 1357|     73|		}
 1358|    358|	} else if (zend_ast_is_decl(ast)) {
  ------------------
  |  Branch (1358:13): [True: 0, False: 358]
  ------------------
 1359|       |		/* Not implemented. */
 1360|      0|		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1360:3): [Folded, False: 0]
  |  Branch (1360:3): [Folded, False: 0]
  ------------------
 1361|    358|	} else {
 1362|    358|		uint32_t i, children = zend_ast_get_num_children(ast);
 1363|       |
 1364|    358|		size = zend_ast_size(children);
 1365|  1.26k|		for (i = 0; i < children; i++) {
  ------------------
  |  Branch (1365:15): [True: 902, False: 358]
  ------------------
 1366|    902|			if (ast->child[i]) {
  ------------------
  |  Branch (1366:8): [True: 781, False: 121]
  ------------------
 1367|    781|				size += zend_ast_tree_size(ast->child[i]);
 1368|    781|			}
 1369|    902|		}
 1370|    358|	}
 1371|  1.17k|	return size;
 1372|  1.17k|}
zend_ast.c:zend_ast_tree_copy:
 1375|  1.17k|{
 1376|  1.17k|	if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (1376:6): [True: 624, False: 547]
  ------------------
 1377|    624|		zend_ast_zval *new = (zend_ast_zval*)buf;
 1378|    624|		new->kind = ZEND_AST_ZVAL;
 1379|    624|		new->attr = ast->attr;
 1380|    624|		ZVAL_COPY(&new->val, zend_ast_get_zval(ast));
  ------------------
  |  | 1425|    624|	do {												\
  |  | 1426|    624|		zval *_z1 = (z);								\
  |  | 1427|    624|		const zval *_z2 = (v);							\
  |  | 1428|    624|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    624|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    624|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    624|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    624|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    624|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    624|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    624|	do {												\
  |  |  |  | 1408|    624|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    624|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    624|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    624|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    624|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    624|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    624|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 624]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    624|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    624|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    624|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 378, False: 246]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    378|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    378|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    378|		}												\
  |  | 1434|    624|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 624]
  |  |  ------------------
  ------------------
 1381|    624|		Z_LINENO(new->val) = zend_ast_get_lineno(ast);
  ------------------
  |  |  686|    624|#define Z_LINENO(zval)				(zval).u2.lineno
  ------------------
 1382|    624|		buf = (void*)((char*)buf + sizeof(zend_ast_zval));
 1383|    624|	} else if (ast->kind == ZEND_AST_CONSTANT) {
  ------------------
  |  Branch (1383:13): [True: 97, False: 450]
  ------------------
 1384|     97|		zend_ast_zval *new = (zend_ast_zval*)buf;
 1385|     97|		new->kind = ZEND_AST_CONSTANT;
 1386|     97|		new->attr = ast->attr;
 1387|     97|		ZVAL_STR_COPY(&new->val, zend_ast_get_constant_name(ast));
  ------------------
  |  | 1112|     97|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     97|		zval *__z = (z);								\
  |  | 1114|     97|		zend_string *__s = (s);							\
  |  | 1115|     97|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     97|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     97|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     97|		/* interned strings support */					\
  |  | 1117|     97|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 31, False: 66]
  |  |  ------------------
  |  | 1118|     31|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     31|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     31|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     66|		} else {										\
  |  | 1120|     66|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     66|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     66|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     66|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     66|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     66|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     66|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     66|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     66|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     66|		}												\
  |  | 1123|     97|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 97]
  |  |  ------------------
  ------------------
 1388|     97|		Z_LINENO(new->val) = zend_ast_get_lineno(ast);
  ------------------
  |  |  686|     97|#define Z_LINENO(zval)				(zval).u2.lineno
  ------------------
 1389|     97|		buf = (void*)((char*)buf + sizeof(zend_ast_zval));
 1390|    450|	} else if (zend_ast_is_list(ast)) {
  ------------------
  |  Branch (1390:13): [True: 69, False: 381]
  ------------------
 1391|     69|		const zend_ast_list *list = zend_ast_get_list(ast);
 1392|     69|		zend_ast_list *new = (zend_ast_list*)buf;
 1393|     69|		uint32_t i;
 1394|     69|		new->kind = list->kind;
 1395|     69|		new->attr = list->attr;
 1396|     69|		new->children = list->children;
 1397|     69|		new->lineno = list->lineno;
 1398|     69|		buf = (void*)((char*)buf + zend_ast_list_size(list->children));
 1399|    142|		for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (1399:15): [True: 73, False: 69]
  ------------------
 1400|     73|			if (list->child[i]) {
  ------------------
  |  Branch (1400:8): [True: 73, False: 0]
  ------------------
 1401|     73|				new->child[i] = (zend_ast*)buf;
 1402|     73|				buf = zend_ast_tree_copy(list->child[i], buf);
 1403|     73|			} else {
 1404|      0|				new->child[i] = NULL;
 1405|      0|			}
 1406|     73|		}
 1407|    381|	} else if (ast->kind == ZEND_AST_OP_ARRAY) {
  ------------------
  |  Branch (1407:13): [True: 3, False: 378]
  ------------------
 1408|      3|		const zend_ast_op_array *old = zend_ast_get_op_array(ast);
 1409|      3|		zend_ast_op_array *new = (zend_ast_op_array*)buf;
 1410|      3|		new->kind = old->kind;
 1411|      3|		new->attr = old->attr;
 1412|      3|		new->lineno = old->lineno;
 1413|      3|		new->op_array = old->op_array;
 1414|      3|		function_add_ref((zend_function *)new->op_array);
 1415|      3|		buf = (void*)((char*)buf + sizeof(zend_ast_op_array));
 1416|    378|	} else if (ast->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (1416:13): [True: 20, False: 358]
  ------------------
 1417|     20|		const zend_ast_fcc *old = (zend_ast_fcc*)ast;
 1418|     20|		zend_ast_fcc *new = (zend_ast_fcc*)buf;
 1419|     20|		new->kind = old->kind;
 1420|     20|		new->attr = old->attr;
 1421|     20|		new->lineno = old->lineno;
 1422|     20|		ZEND_MAP_PTR_INIT(new->fptr, ZEND_MAP_PTR(old->fptr));
  ------------------
  |  |   38|     20|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|     20|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|     20|	ptr ## __ptr
  |  |  ------------------
  |  |   40|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1423|     20|		buf = (void*)((char*)buf + sizeof(zend_ast_fcc));
 1424|     20|		new->args = buf;
 1425|     20|		buf = zend_ast_tree_copy(old->args, buf);
 1426|    358|	} else if (zend_ast_is_decl(ast)) {
  ------------------
  |  Branch (1426:13): [True: 0, False: 358]
  ------------------
 1427|       |		/* Not implemented. */
 1428|      0|		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1428:3): [Folded, False: 0]
  |  Branch (1428:3): [Folded, False: 0]
  ------------------
 1429|    358|	} else {
 1430|    358|		uint32_t i, children = zend_ast_get_num_children(ast);
 1431|    358|		zend_ast *new = (zend_ast*)buf;
 1432|    358|		new->kind = ast->kind;
 1433|    358|		new->attr = ast->attr;
 1434|    358|		new->lineno = ast->lineno;
 1435|    358|		buf = (void*)((char*)buf + zend_ast_size(children));
 1436|  1.26k|		for (i = 0; i < children; i++) {
  ------------------
  |  Branch (1436:15): [True: 902, False: 358]
  ------------------
 1437|    902|			if (ast->child[i]) {
  ------------------
  |  Branch (1437:8): [True: 781, False: 121]
  ------------------
 1438|    781|				new->child[i] = (zend_ast*)buf;
 1439|    781|				buf = zend_ast_tree_copy(ast->child[i], buf);
 1440|    781|			} else {
 1441|    121|				new->child[i] = NULL;
 1442|    121|			}
 1443|    902|		}
 1444|    358|	}
 1445|  1.17k|	return buf;
 1446|  1.17k|}
zend_ast.c:zend_ast_export_ex:
 2146|    543|{
 2147|    543|	const zend_ast_decl *decl;
 2148|    543|	int p, pl, pr;
 2149|    543|	const char *op;
 2150|       |
 2151|    548|tail_call:
 2152|    548|	if (!ast) {
  ------------------
  |  Branch (2152:6): [True: 11, False: 537]
  ------------------
 2153|     11|		return;
 2154|     11|	}
 2155|    537|	switch (ast->kind) {
 2156|       |		/* special nodes */
 2157|     42|		case ZEND_AST_ZVAL:
  ------------------
  |  Branch (2157:3): [True: 42, False: 495]
  ------------------
 2158|     42|			zend_ast_export_zval(str, zend_ast_get_zval(ast), priority, indent);
 2159|     42|			break;
 2160|      7|		case ZEND_AST_CONSTANT: {
  ------------------
  |  Branch (2160:3): [True: 7, False: 530]
  ------------------
 2161|      7|			zend_string *name = zend_ast_get_constant_name(ast);
 2162|      7|			smart_str_append(str, name);
 2163|      7|			break;
 2164|      0|		}
 2165|      1|		case ZEND_AST_OP_ARRAY:
  ------------------
  |  Branch (2165:3): [True: 1, False: 536]
  ------------------
 2166|      1|			smart_str_appends(str, "Closure(");
 2167|      1|			smart_str_append(str, zend_ast_get_op_array(ast)->op_array->function_name);
 2168|      1|			smart_str_appendc(str, ')');
 2169|      1|			break;
 2170|      0|		case ZEND_AST_CONSTANT_CLASS:
  ------------------
  |  Branch (2170:3): [True: 0, False: 537]
  ------------------
 2171|      0|			smart_str_appendl(str, "__CLASS__", sizeof("__CLASS__")-1);
 2172|      0|			break;
 2173|      0|		case ZEND_AST_ZNODE:
  ------------------
  |  Branch (2173:3): [True: 0, False: 537]
  ------------------
 2174|       |			/* This AST kind is only used for temporary nodes during compilation */
 2175|      0|			ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2175:4): [Folded, False: 0]
  |  Branch (2175:4): [Folded, False: 0]
  ------------------
 2176|      0|			break;
 2177|       |
 2178|       |		/* declaration nodes */
 2179|      0|		case ZEND_AST_FUNC_DECL:
  ------------------
  |  Branch (2179:3): [True: 0, False: 537]
  ------------------
 2180|      4|		case ZEND_AST_CLOSURE:
  ------------------
  |  Branch (2180:3): [True: 4, False: 533]
  ------------------
 2181|      9|		case ZEND_AST_ARROW_FUNC:
  ------------------
  |  Branch (2181:3): [True: 5, False: 532]
  ------------------
 2182|     11|		case ZEND_AST_METHOD:
  ------------------
  |  Branch (2182:3): [True: 2, False: 535]
  ------------------
 2183|     11|			decl = (const zend_ast_decl *) ast;
 2184|     11|			if (decl->kind == ZEND_AST_ARROW_FUNC && (decl->attr & ZEND_PARENTHESIZED_ARROW_FUNC)) {
  ------------------
  |  | 1220|      5|#define ZEND_PARENTHESIZED_ARROW_FUNC 1
  ------------------
  |  Branch (2184:8): [True: 5, False: 6]
  |  Branch (2184:45): [True: 2, False: 3]
  ------------------
 2185|      2|				smart_str_appendc(str, '(');
 2186|      2|			}
 2187|     11|			if (decl->child[4]) {
  ------------------
  |  Branch (2187:8): [True: 0, False: 11]
  ------------------
 2188|      0|				bool newlines = !(ast->kind == ZEND_AST_CLOSURE || ast->kind == ZEND_AST_ARROW_FUNC);
  ------------------
  |  Branch (2188:23): [True: 0, False: 0]
  |  Branch (2188:56): [True: 0, False: 0]
  ------------------
 2189|      0|				zend_ast_export_attributes(str, decl->child[4], indent, newlines);
 2190|      0|			}
 2191|       |
 2192|     11|			zend_ast_export_visibility(str, decl->flags, ZEND_MODIFIER_TARGET_METHOD);
 2193|       |
 2194|     11|			if (decl->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     11|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2194:8): [True: 0, False: 11]
  ------------------
 2195|      0|				smart_str_appends(str, "static ");
 2196|      0|			}
 2197|     11|			if (decl->flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     11|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (2197:8): [True: 0, False: 11]
  ------------------
 2198|      0|				smart_str_appends(str, "abstract ");
 2199|      0|			}
 2200|     11|			if (decl->flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     11|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (2200:8): [True: 0, False: 11]
  ------------------
 2201|      0|				smart_str_appends(str, "final ");
 2202|      0|			}
 2203|     11|			if (decl->kind == ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (2203:8): [True: 5, False: 6]
  ------------------
 2204|      5|				smart_str_appends(str, "fn");
 2205|      6|			} else {
 2206|      6|				smart_str_appends(str, "function ");
 2207|      6|			}
 2208|     11|			if (decl->flags & ZEND_ACC_RETURN_REFERENCE) {
  ------------------
  |  |  352|     11|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (2208:8): [True: 0, False: 11]
  ------------------
 2209|      0|				smart_str_appendc(str, '&');
 2210|      0|			}
 2211|     11|			if (ast->kind != ZEND_AST_CLOSURE && ast->kind != ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (2211:8): [True: 7, False: 4]
  |  Branch (2211:41): [True: 2, False: 5]
  ------------------
 2212|      2|				smart_str_append(str, decl->name);
 2213|      2|			}
 2214|     11|			smart_str_appendc(str, '(');
 2215|     11|			zend_ast_export_ex(str, decl->child[0], 0, indent);
 2216|     11|			smart_str_appendc(str, ')');
 2217|     11|			zend_ast_export_ex(str, decl->child[1], 0, indent);
 2218|     11|			if (decl->child[3]) {
  ------------------
  |  Branch (2218:8): [True: 0, False: 11]
  ------------------
 2219|      0|				smart_str_appends(str, ": ");
 2220|      0|				zend_ast_export_type(str, decl->child[3], indent);
 2221|      0|			}
 2222|     11|			if (decl->child[2]) {
  ------------------
  |  Branch (2222:8): [True: 11, False: 0]
  ------------------
 2223|     11|				if (decl->kind == ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (2223:9): [True: 5, False: 6]
  ------------------
 2224|      5|					zend_ast *body = decl->child[2];
 2225|      5|					if (body->kind == ZEND_AST_RETURN) {
  ------------------
  |  Branch (2225:10): [True: 0, False: 5]
  ------------------
 2226|      0|						body = body->child[0];
 2227|      0|					}
 2228|      5|					smart_str_appends(str, " => ");
 2229|      5|					zend_ast_export_ex(str, body, 0, indent);
 2230|      5|					if (decl->attr & ZEND_PARENTHESIZED_ARROW_FUNC) {
  ------------------
  |  | 1220|      5|#define ZEND_PARENTHESIZED_ARROW_FUNC 1
  ------------------
  |  Branch (2230:10): [True: 2, False: 3]
  ------------------
 2231|      2|						smart_str_appendc(str, ')');
 2232|      2|					}
 2233|      5|					break;
 2234|      5|				}
 2235|       |
 2236|      6|				smart_str_appends(str, " {\n");
 2237|      6|				zend_ast_export_stmt(str, decl->child[2], indent + 1);
 2238|      6|				zend_ast_export_indent(str, indent);
 2239|      6|				smart_str_appendc(str, '}');
 2240|      6|				if (ast->kind != ZEND_AST_CLOSURE) {
  ------------------
  |  Branch (2240:9): [True: 2, False: 4]
  ------------------
 2241|      2|					smart_str_appendc(str, '\n');
 2242|      2|				}
 2243|      6|			} else {
 2244|      0|				smart_str_appends(str, ";\n");
 2245|      0|			}
 2246|      6|			break;
 2247|      6|		case ZEND_AST_CLASS:
  ------------------
  |  Branch (2247:3): [True: 1, False: 536]
  ------------------
 2248|      1|			decl = (const zend_ast_decl *) ast;
 2249|      1|			if (decl->child[3]) {
  ------------------
  |  Branch (2249:8): [True: 1, False: 0]
  ------------------
 2250|      1|				zend_ast_export_attributes(str, decl->child[3], indent, true);
 2251|      1|			}
 2252|      1|			if (decl->flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|      1|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (2252:8): [True: 0, False: 1]
  ------------------
 2253|      0|				smart_str_appends(str, "interface ");
 2254|      1|			} else if (decl->flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|      1|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (2254:15): [True: 0, False: 1]
  ------------------
 2255|      0|				smart_str_appends(str, "trait ");
 2256|      1|			} else if (decl->flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|      1|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (2256:15): [True: 0, False: 1]
  ------------------
 2257|      0|				smart_str_appends(str, "enum ");
 2258|      1|			} else {
 2259|      1|				if (decl->flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  234|      1|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (2259:9): [True: 0, False: 1]
  ------------------
 2260|      0|					smart_str_appends(str, "abstract ");
 2261|      0|				}
 2262|      1|				if (decl->flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      1|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (2262:9): [True: 0, False: 1]
  ------------------
 2263|      0|					smart_str_appends(str, "final ");
 2264|      0|				}
 2265|      1|				if (decl->flags & ZEND_ACC_READONLY_CLASS) {
  ------------------
  |  |  311|      1|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (2265:9): [True: 0, False: 1]
  ------------------
 2266|      0|					smart_str_appends(str, "readonly ");
 2267|      0|				}
 2268|      1|				smart_str_appends(str, "class ");
 2269|      1|			}
 2270|      1|			smart_str_append(str, decl->name);
 2271|      1|			if (decl->flags & ZEND_ACC_ENUM && decl->child[4]) {
  ------------------
  |  |  284|      2|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (2271:8): [True: 0, False: 1]
  |  Branch (2271:39): [True: 0, False: 0]
  ------------------
 2272|      0|				smart_str_appends(str, ": ");
 2273|      0|				zend_ast_export_type(str, decl->child[4], indent);
 2274|      0|			}
 2275|      1|			zend_ast_export_class_no_header(str, decl, indent);
 2276|      1|			smart_str_appendc(str, '\n');
 2277|      1|			break;
 2278|       |
 2279|       |		/* list nodes */
 2280|     64|		case ZEND_AST_ARG_LIST:
  ------------------
  |  Branch (2280:3): [True: 64, False: 473]
  ------------------
 2281|     64|		case ZEND_AST_EXPR_LIST:
  ------------------
  |  Branch (2281:3): [True: 0, False: 537]
  ------------------
 2282|     75|		case ZEND_AST_PARAM_LIST:
  ------------------
  |  Branch (2282:3): [True: 11, False: 526]
  ------------------
 2283|     79|simple_list:
 2284|     79|			zend_ast_export_list(str, zend_ast_get_list(ast), true, 20, indent);
 2285|     79|			break;
 2286|     10|		case ZEND_AST_ARRAY:
  ------------------
  |  Branch (2286:3): [True: 10, False: 527]
  ------------------
 2287|     10|			smart_str_appendc(str, '[');
 2288|     10|			zend_ast_export_list(str, zend_ast_get_list(ast), true, 20, indent);
 2289|     10|			smart_str_appendc(str, ']');
 2290|     10|			break;
 2291|     38|		case ZEND_AST_ENCAPS_LIST:
  ------------------
  |  Branch (2291:3): [True: 38, False: 499]
  ------------------
 2292|     38|			smart_str_appendc(str, '"');
 2293|     38|			zend_ast_export_encaps_list(str, '"', zend_ast_get_list(ast), indent);
 2294|     38|			smart_str_appendc(str, '"');
 2295|     38|			break;
 2296|      0|		case ZEND_AST_STMT_LIST:
  ------------------
  |  Branch (2296:3): [True: 0, False: 537]
  ------------------
 2297|      0|		case ZEND_AST_TRAIT_ADAPTATIONS:
  ------------------
  |  Branch (2297:3): [True: 0, False: 537]
  ------------------
 2298|      0|			zend_ast_export_stmt(str, ast, indent);
 2299|      0|			break;
 2300|      0|		case ZEND_AST_IF:
  ------------------
  |  Branch (2300:3): [True: 0, False: 537]
  ------------------
 2301|      0|			zend_ast_export_if_stmt(str, zend_ast_get_list(ast), indent);
 2302|      0|			break;
 2303|      0|		case ZEND_AST_SWITCH_LIST:
  ------------------
  |  Branch (2303:3): [True: 0, False: 537]
  ------------------
 2304|      0|		case ZEND_AST_CATCH_LIST:
  ------------------
  |  Branch (2304:3): [True: 0, False: 537]
  ------------------
 2305|      0|		case ZEND_AST_MATCH_ARM_LIST:
  ------------------
  |  Branch (2305:3): [True: 0, False: 537]
  ------------------
 2306|      0|			zend_ast_export_list(str, zend_ast_get_list(ast), false, 0, indent);
 2307|      0|			break;
 2308|      0|		case ZEND_AST_CLOSURE_USES:
  ------------------
  |  Branch (2308:3): [True: 0, False: 537]
  ------------------
 2309|      0|			smart_str_appends(str, " use(");
 2310|      0|			zend_ast_export_var_list(str, zend_ast_get_list(ast), indent);
 2311|      0|			smart_str_appendc(str, ')');
 2312|      0|			break;
 2313|      0|		case ZEND_AST_PROP_GROUP: {
  ------------------
  |  Branch (2313:3): [True: 0, False: 537]
  ------------------
 2314|      0|			zend_ast *type_ast = ast->child[0];
 2315|      0|			zend_ast *prop_ast = ast->child[1];
 2316|       |
 2317|      0|			if (ast->child[2]) {
  ------------------
  |  Branch (2317:8): [True: 0, False: 0]
  ------------------
 2318|      0|				zend_ast_export_attributes(str, ast->child[2], indent, true);
 2319|      0|			}
 2320|       |
 2321|      0|			zend_ast_export_visibility(str, ast->attr, ZEND_MODIFIER_TARGET_PROPERTY);
 2322|       |
 2323|      0|			if (ast->attr & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2323:8): [True: 0, False: 0]
  ------------------
 2324|      0|				smart_str_appends(str, "static ");
 2325|      0|			}
 2326|      0|			if (ast->attr & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (2326:8): [True: 0, False: 0]
  ------------------
 2327|      0|				smart_str_appends(str, "readonly ");
 2328|      0|			}
 2329|       |
 2330|      0|			if (type_ast) {
  ------------------
  |  Branch (2330:8): [True: 0, False: 0]
  ------------------
 2331|      0|				zend_ast_export_type(str, type_ast, indent);
 2332|      0|				smart_str_appendc(str, ' ');
 2333|      0|			}
 2334|       |
 2335|      0|			ast = prop_ast;
 2336|      0|			goto simple_list;
 2337|      0|		}
 2338|       |
 2339|      0|		case ZEND_AST_CONST_DECL: {
  ------------------
  |  Branch (2339:3): [True: 0, False: 537]
  ------------------
 2340|      0|			zend_ast_list *ast_list = zend_ast_get_list(ast);
 2341|       |			/* Attributes are stored at the end of the list if present. */
 2342|      0|			if (ast_list->child[ast_list->children - 1]->kind == ZEND_AST_ATTRIBUTE_LIST) {
  ------------------
  |  Branch (2342:8): [True: 0, False: 0]
  ------------------
 2343|      0|				zend_ast_export_attributes(
 2344|      0|					str,
 2345|      0|					ast_list->child[ast_list->children - 1],
 2346|      0|					indent,
 2347|      0|					true
 2348|      0|				);
 2349|       |				/* So that the list printing doesn't try to print the attributes,
 2350|       |				 * use zend_ast_export_list_ex() to override the number of children
 2351|       |				 * to print. */
 2352|      0|				smart_str_appends(str, "const ");
 2353|      0|				zend_ast_export_list_ex(str, ast_list, true, 20, indent, ast_list->children - 1);
 2354|      0|				break;
 2355|      0|			}
 2356|      0|			smart_str_appends(str, "const ");
 2357|      0|			goto simple_list;
 2358|      0|		}
 2359|      1|		case ZEND_AST_CLASS_CONST_GROUP:
  ------------------
  |  Branch (2359:3): [True: 1, False: 536]
  ------------------
 2360|      1|			if (ast->child[1]) {
  ------------------
  |  Branch (2360:8): [True: 0, False: 1]
  ------------------
 2361|      0|				zend_ast_export_attributes(str, ast->child[1], indent, true);
 2362|      0|			}
 2363|       |
 2364|      1|			zend_ast_export_visibility(str, ast->attr, ZEND_MODIFIER_TARGET_CONSTANT);
 2365|      1|			smart_str_appends(str, "const ");
 2366|      1|			if (ast->child[2]) {
  ------------------
  |  Branch (2366:8): [True: 1, False: 0]
  ------------------
 2367|      1|				zend_ast_export_type(str, ast->child[2], indent);
 2368|      1|				smart_str_appendc(str, ' ');
 2369|      1|			}
 2370|       |
 2371|      1|			ast = ast->child[0];
 2372|       |
 2373|      1|			goto simple_list;
 2374|      0|		case ZEND_AST_NAME_LIST:
  ------------------
  |  Branch (2374:3): [True: 0, False: 537]
  ------------------
 2375|      0|			zend_ast_export_name_list(str, zend_ast_get_list(ast), indent);
  ------------------
  |  | 1803|      0|#define zend_ast_export_name_list(s, l, i) zend_ast_export_name_list_ex(s, l, i, ", ")
  ------------------
 2376|      0|			break;
 2377|      0|		case ZEND_AST_USE:
  ------------------
  |  Branch (2377:3): [True: 0, False: 537]
  ------------------
 2378|      0|			smart_str_appends(str, "use ");
 2379|      0|			if (ast->attr == T_FUNCTION) {
  ------------------
  |  Branch (2379:8): [True: 0, False: 0]
  ------------------
 2380|      0|				smart_str_appends(str, "function ");
 2381|      0|			} else if (ast->attr == T_CONST) {
  ------------------
  |  Branch (2381:15): [True: 0, False: 0]
  ------------------
 2382|      0|				smart_str_appends(str, "const ");
 2383|      0|			}
 2384|      0|			goto simple_list;
 2385|       |
 2386|       |		/* 0 child nodes */
 2387|      0|		case ZEND_AST_MAGIC_CONST:
  ------------------
  |  Branch (2387:3): [True: 0, False: 537]
  ------------------
 2388|      0|			switch (ast->attr) {
 2389|      0|				case T_LINE:     APPEND_STR("__LINE__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2389:5): [True: 0, False: 0]
  ------------------
 2390|      0|				case T_FILE:     APPEND_STR("__FILE__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2390:5): [True: 0, False: 0]
  ------------------
 2391|      0|				case T_DIR:      APPEND_STR("__DIR__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2391:5): [True: 0, False: 0]
  ------------------
 2392|      0|				case T_TRAIT_C:  APPEND_STR("__TRAIT__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2392:5): [True: 0, False: 0]
  ------------------
 2393|      0|				case T_METHOD_C: APPEND_STR("__METHOD__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2393:5): [True: 0, False: 0]
  ------------------
 2394|      0|				case T_FUNC_C:   APPEND_STR("__FUNCTION__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2394:5): [True: 0, False: 0]
  ------------------
 2395|      0|				case T_PROPERTY_C: APPEND_STR("__PROPERTY__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2395:5): [True: 0, False: 0]
  ------------------
 2396|      0|				case T_NS_C:     APPEND_STR("__NAMESPACE__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2396:5): [True: 0, False: 0]
  ------------------
 2397|      0|				case T_CLASS_C:  APPEND_STR("__CLASS__");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2397:5): [True: 0, False: 0]
  ------------------
 2398|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2398:5): [True: 0, False: 0]
  |  Branch (2398:14): [Folded, False: 0]
  |  Branch (2398:14): [Folded, False: 0]
  ------------------
 2399|      0|			}
 2400|      0|			break;
 2401|      0|		case ZEND_AST_TYPE:
  ------------------
  |  Branch (2401:3): [True: 0, False: 537]
  ------------------
 2402|      0|			switch (ast->attr & ~ZEND_TYPE_NULLABLE) {
  ------------------
  |  | 1067|      0|#define ZEND_TYPE_NULLABLE (1<<8)
  ------------------
 2403|      0|				case IS_ARRAY:    APPEND_STR("array");
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              				case IS_ARRAY:    APPEND_STR("array");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2403:5): [True: 0, False: 0]
  ------------------
 2404|      0|				case IS_CALLABLE: APPEND_STR("callable");
  ------------------
  |  |  621|      0|#define IS_CALLABLE					12
  ------------------
              				case IS_CALLABLE: APPEND_STR("callable");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2404:5): [True: 0, False: 0]
  ------------------
 2405|      0|				case IS_STATIC:   APPEND_STR("static");
  ------------------
  |  |  624|      0|#define IS_STATIC					15
  ------------------
              				case IS_STATIC:   APPEND_STR("static");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2405:5): [True: 0, False: 0]
  ------------------
 2406|      0|				case IS_MIXED:    APPEND_STR("mixed");
  ------------------
  |  |  625|      0|#define IS_MIXED					16
  ------------------
              				case IS_MIXED:    APPEND_STR("mixed");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2406:5): [True: 0, False: 0]
  ------------------
 2407|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2407:5): [True: 0, False: 0]
  |  Branch (2407:14): [Folded, False: 0]
  |  Branch (2407:14): [Folded, False: 0]
  ------------------
 2408|      0|			}
 2409|      0|			break;
 2410|      3|		case ZEND_AST_PLACEHOLDER_ARG:
  ------------------
  |  Branch (2410:3): [True: 3, False: 534]
  ------------------
 2411|      3|			if (ast->attr == ZEND_PLACEHOLDER_VARIADIC) {
  ------------------
  |  | 1234|      3|#define ZEND_PLACEHOLDER_VARIADIC (1<<0)
  ------------------
  |  Branch (2411:8): [True: 3, False: 0]
  ------------------
 2412|      3|				APPEND_STR("...");
  ------------------
  |  | 2135|      3|#define APPEND_STR(_op) do { \
  |  | 2136|      3|		op = _op; \
  |  | 2137|      3|		goto append_str; \
  |  | 2138|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2413|      3|			} else  {
 2414|      0|				APPEND_STR("?");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2415|      0|			}
 2416|      0|			break;
 2417|       |
 2418|       |		/* 1 child node */
 2419|     58|		case ZEND_AST_VAR:
  ------------------
  |  Branch (2419:3): [True: 58, False: 479]
  ------------------
 2420|     58|			smart_str_appendc(str, '$');
 2421|     58|			zend_ast_export_var(str, ast->child[0], indent);
 2422|     58|			break;
 2423|     54|		case ZEND_AST_CONST:
  ------------------
  |  Branch (2423:3): [True: 54, False: 483]
  ------------------
 2424|     54|			zend_ast_export_ns_name(str, ast->child[0], 0, indent);
 2425|     54|			break;
 2426|      0|		case ZEND_AST_UNPACK:
  ------------------
  |  Branch (2426:3): [True: 0, False: 537]
  ------------------
 2427|      0|			smart_str_appends(str, "...");
 2428|      0|			ast = ast->child[0];
 2429|      0|			goto tail_call;
 2430|      0|		case ZEND_AST_UNARY_PLUS:  PREFIX_OP("+", 240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2430:3): [True: 0, False: 537]
  ------------------
 2431|      1|		case ZEND_AST_UNARY_MINUS: PREFIX_OP("-", 240, 241);
  ------------------
  |  | 2111|      1|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      1|		op = _op; \
  |  | 2113|      1|		p = _p; \
  |  | 2114|      1|		pl = _pl; \
  |  | 2115|      1|		goto prefix_op; \
  |  | 2116|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2431:3): [True: 1, False: 536]
  ------------------
 2432|      0|		case ZEND_AST_CAST:
  ------------------
  |  Branch (2432:3): [True: 0, False: 537]
  ------------------
 2433|      0|			switch (ast->attr) {
 2434|      0|				case IS_NULL:      PREFIX_OP("(unset)",  240, 241);
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
              				case IS_NULL:      PREFIX_OP("(unset)",  240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2434:5): [True: 0, False: 0]
  ------------------
 2435|      0|				case _IS_BOOL:     PREFIX_OP("(bool)",   240, 241);
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
              				case _IS_BOOL:     PREFIX_OP("(bool)",   240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2435:5): [True: 0, False: 0]
  ------------------
 2436|      0|				case IS_LONG:      PREFIX_OP("(int)",    240, 241);
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
              				case IS_LONG:      PREFIX_OP("(int)",    240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2436:5): [True: 0, False: 0]
  ------------------
 2437|      0|				case IS_DOUBLE:    PREFIX_OP("(float)", 240, 241);
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
              				case IS_DOUBLE:    PREFIX_OP("(float)", 240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2437:5): [True: 0, False: 0]
  ------------------
 2438|      0|				case IS_STRING:    PREFIX_OP("(string)", 240, 241);
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
              				case IS_STRING:    PREFIX_OP("(string)", 240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2438:5): [True: 0, False: 0]
  ------------------
 2439|      0|				case IS_ARRAY:     PREFIX_OP("(array)",  240, 241);
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              				case IS_ARRAY:     PREFIX_OP("(array)",  240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2439:5): [True: 0, False: 0]
  ------------------
 2440|      0|				case IS_OBJECT:    PREFIX_OP("(object)", 240, 241);
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              				case IS_OBJECT:    PREFIX_OP("(object)", 240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2440:5): [True: 0, False: 0]
  ------------------
 2441|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2441:5): [True: 0, False: 0]
  |  Branch (2441:14): [Folded, False: 0]
  |  Branch (2441:14): [Folded, False: 0]
  ------------------
 2442|      0|			}
 2443|      0|			break;
 2444|      1|		case ZEND_AST_CAST_VOID:
  ------------------
  |  Branch (2444:3): [True: 1, False: 536]
  ------------------
 2445|      1|			PREFIX_OP("(void)", 240, 241);
  ------------------
  |  | 2111|      1|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      1|		op = _op; \
  |  | 2113|      1|		p = _p; \
  |  | 2114|      1|		pl = _pl; \
  |  | 2115|      1|		goto prefix_op; \
  |  | 2116|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2446|      0|			break;
 2447|      0|		case ZEND_AST_EMPTY:
  ------------------
  |  Branch (2447:3): [True: 0, False: 537]
  ------------------
 2448|      0|			FUNC_OP("empty");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2449|      0|		case ZEND_AST_ISSET:
  ------------------
  |  Branch (2449:3): [True: 0, False: 537]
  ------------------
 2450|      0|			FUNC_OP("isset");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2451|     36|		case ZEND_AST_SILENCE:
  ------------------
  |  Branch (2451:3): [True: 36, False: 501]
  ------------------
 2452|     36|			PREFIX_OP("@", 240, 241);
  ------------------
  |  | 2111|     36|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|     36|		op = _op; \
  |  | 2113|     36|		p = _p; \
  |  | 2114|     36|		pl = _pl; \
  |  | 2115|     36|		goto prefix_op; \
  |  | 2116|     36|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2453|      1|		case ZEND_AST_SHELL_EXEC:
  ------------------
  |  Branch (2453:3): [True: 1, False: 536]
  ------------------
 2454|      1|			smart_str_appendc(str, '`');
 2455|      1|			if (ast->child[0]->kind == ZEND_AST_ENCAPS_LIST) {
  ------------------
  |  Branch (2455:8): [True: 0, False: 1]
  ------------------
 2456|      0|				zend_ast_export_encaps_list(str, '`', zend_ast_get_list(ast->child[0]), indent);
 2457|      1|			} else {
 2458|      1|				zval *zv;
 2459|      1|				ZEND_ASSERT(ast->child[0]->kind == ZEND_AST_ZVAL);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2459:5): [True: 0, False: 1]
  |  Branch (2459:5): [True: 1, False: 0]
  ------------------
 2460|      1|				zv = zend_ast_get_zval(ast->child[0]);
 2461|      1|				ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2461:5): [True: 0, False: 1]
  |  Branch (2461:5): [True: 1, False: 0]
  ------------------
 2462|      1|				zend_ast_export_qstr(str, '`', Z_STR_P(zv));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2463|      1|			}
 2464|      1|			smart_str_appendc(str, '`');
 2465|      1|			break;
 2466|      0|		case ZEND_AST_PRINT:
  ------------------
  |  Branch (2466:3): [True: 0, False: 537]
  ------------------
 2467|      0|			PREFIX_OP("print ", 60, 61);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2468|      0|		case ZEND_AST_INCLUDE_OR_EVAL:
  ------------------
  |  Branch (2468:3): [True: 0, False: 537]
  ------------------
 2469|      0|			switch (ast->attr) {
 2470|      0|				case ZEND_INCLUDE_ONCE: FUNC_OP("include_once");
  ------------------
  |  | 1085|      0|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
              				case ZEND_INCLUDE_ONCE: FUNC_OP("include_once");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2470:5): [True: 0, False: 0]
  ------------------
 2471|      0|				case ZEND_INCLUDE:      FUNC_OP("include");
  ------------------
  |  | 1084|      0|#define ZEND_INCLUDE			(1<<1)
  ------------------
              				case ZEND_INCLUDE:      FUNC_OP("include");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2471:5): [True: 0, False: 0]
  ------------------
 2472|      0|				case ZEND_REQUIRE_ONCE: FUNC_OP("require_once");
  ------------------
  |  | 1087|      0|#define ZEND_REQUIRE_ONCE		(1<<4)
  ------------------
              				case ZEND_REQUIRE_ONCE: FUNC_OP("require_once");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2472:5): [True: 0, False: 0]
  ------------------
 2473|      0|				case ZEND_REQUIRE:      FUNC_OP("require");
  ------------------
  |  | 1086|      0|#define ZEND_REQUIRE			(1<<3)
  ------------------
              				case ZEND_REQUIRE:      FUNC_OP("require");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2473:5): [True: 0, False: 0]
  ------------------
 2474|      0|				case ZEND_EVAL:         FUNC_OP("eval");
  ------------------
  |  | 1083|      0|#define ZEND_EVAL				(1<<0)
  ------------------
              				case ZEND_EVAL:         FUNC_OP("eval");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2474:5): [True: 0, False: 0]
  ------------------
 2475|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2475:5): [True: 0, False: 0]
  |  Branch (2475:14): [Folded, False: 0]
  |  Branch (2475:14): [Folded, False: 0]
  ------------------
 2476|      0|			}
 2477|      0|			break;
 2478|     54|		case ZEND_AST_UNARY_OP:
  ------------------
  |  Branch (2478:3): [True: 54, False: 483]
  ------------------
 2479|     54|			switch (ast->attr) {
 2480|     48|				case ZEND_BW_NOT:   PREFIX_OP("~", 240, 241);
  ------------------
  |  |  137|     48|#define ZEND_BW_NOT                          13
  ------------------
              				case ZEND_BW_NOT:   PREFIX_OP("~", 240, 241);
  ------------------
  |  | 2111|     48|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|     48|		op = _op; \
  |  | 2113|     48|		p = _p; \
  |  | 2114|     48|		pl = _pl; \
  |  | 2115|     48|		goto prefix_op; \
  |  | 2116|     48|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2480:5): [True: 48, False: 6]
  ------------------
 2481|      6|				case ZEND_BOOL_NOT: PREFIX_OP("!", 240, 241);
  ------------------
  |  |  138|      6|#define ZEND_BOOL_NOT                        14
  ------------------
              				case ZEND_BOOL_NOT: PREFIX_OP("!", 240, 241);
  ------------------
  |  | 2111|      6|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      6|		op = _op; \
  |  | 2113|      6|		p = _p; \
  |  | 2114|      6|		pl = _pl; \
  |  | 2115|      6|		goto prefix_op; \
  |  | 2116|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2481:5): [True: 6, False: 48]
  ------------------
 2482|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2482:5): [True: 0, False: 54]
  |  Branch (2482:14): [Folded, False: 0]
  |  Branch (2482:14): [Folded, False: 0]
  ------------------
 2483|     54|			}
 2484|      0|			break;
 2485|      0|		case ZEND_AST_PRE_INC:
  ------------------
  |  Branch (2485:3): [True: 0, False: 537]
  ------------------
 2486|      0|			PREFIX_OP("++", 240, 241);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2487|      2|		case ZEND_AST_PRE_DEC:
  ------------------
  |  Branch (2487:3): [True: 2, False: 535]
  ------------------
 2488|      2|			PREFIX_OP("--", 240, 241);
  ------------------
  |  | 2111|      2|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      2|		op = _op; \
  |  | 2113|      2|		p = _p; \
  |  | 2114|      2|		pl = _pl; \
  |  | 2115|      2|		goto prefix_op; \
  |  | 2116|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2489|      0|		case ZEND_AST_POST_INC:
  ------------------
  |  Branch (2489:3): [True: 0, False: 537]
  ------------------
 2490|      0|			POSTFIX_OP("++", 240, 241);
  ------------------
  |  | 2123|      0|#define POSTFIX_OP(_op, _p, _pl) do { \
  |  | 2124|      0|		op = _op; \
  |  | 2125|      0|		p = _p; \
  |  | 2126|      0|		pl = _pl; \
  |  | 2127|      0|		goto postfix_op; \
  |  | 2128|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2128:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2491|      0|		case ZEND_AST_POST_DEC:
  ------------------
  |  Branch (2491:3): [True: 0, False: 537]
  ------------------
 2492|      0|			POSTFIX_OP("--", 240, 241);
  ------------------
  |  | 2123|      0|#define POSTFIX_OP(_op, _p, _pl) do { \
  |  | 2124|      0|		op = _op; \
  |  | 2125|      0|		p = _p; \
  |  | 2126|      0|		pl = _pl; \
  |  | 2127|      0|		goto postfix_op; \
  |  | 2128|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2128:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2493|       |
 2494|      0|		case ZEND_AST_GLOBAL:
  ------------------
  |  Branch (2494:3): [True: 0, False: 537]
  ------------------
 2495|      0|			APPEND_NODE_1("global");
  ------------------
  |  | 2130|      0|#define APPEND_NODE_1(_op) do { \
  |  | 2131|      0|		op = _op; \
  |  | 2132|      0|		goto append_node_1; \
  |  | 2133|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2133:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2496|      0|		case ZEND_AST_UNSET:
  ------------------
  |  Branch (2496:3): [True: 0, False: 537]
  ------------------
 2497|      0|			FUNC_OP("unset");
  ------------------
  |  | 2118|      0|#define FUNC_OP(_op) do { \
  |  | 2119|      0|		op = _op; \
  |  | 2120|      0|		goto func_op; \
  |  | 2121|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2121:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2498|      1|		case ZEND_AST_RETURN:
  ------------------
  |  Branch (2498:3): [True: 1, False: 536]
  ------------------
 2499|      1|			APPEND_NODE_1("return");
  ------------------
  |  | 2130|      1|#define APPEND_NODE_1(_op) do { \
  |  | 2131|      1|		op = _op; \
  |  | 2132|      1|		goto append_node_1; \
  |  | 2133|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2133:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2500|      0|		case ZEND_AST_LABEL:
  ------------------
  |  Branch (2500:3): [True: 0, False: 537]
  ------------------
 2501|      0|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2502|      0|			smart_str_appendc(str, ':');
 2503|      0|			break;
 2504|      0|		case ZEND_AST_REF:
  ------------------
  |  Branch (2504:3): [True: 0, False: 537]
  ------------------
 2505|      0|			smart_str_appendc(str, '&');
 2506|      0|			ast = ast->child[0];
 2507|      0|			goto tail_call;
 2508|      0|		case ZEND_AST_HALT_COMPILER:
  ------------------
  |  Branch (2508:3): [True: 0, False: 537]
  ------------------
 2509|      0|			APPEND_STR("__HALT_COMPILER()");
  ------------------
  |  | 2135|      0|#define APPEND_STR(_op) do { \
  |  | 2136|      0|		op = _op; \
  |  | 2137|      0|		goto append_str; \
  |  | 2138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2510|      1|		case ZEND_AST_ECHO:
  ------------------
  |  Branch (2510:3): [True: 1, False: 536]
  ------------------
 2511|      1|			APPEND_NODE_1("echo");
  ------------------
  |  | 2130|      1|#define APPEND_NODE_1(_op) do { \
  |  | 2131|      1|		op = _op; \
  |  | 2132|      1|		goto append_node_1; \
  |  | 2133|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2133:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2512|      0|		case ZEND_AST_THROW:
  ------------------
  |  Branch (2512:3): [True: 0, False: 537]
  ------------------
 2513|      0|			APPEND_NODE_1("throw");
  ------------------
  |  | 2130|      0|#define APPEND_NODE_1(_op) do { \
  |  | 2131|      0|		op = _op; \
  |  | 2132|      0|		goto append_node_1; \
  |  | 2133|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2133:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2514|      0|		case ZEND_AST_GOTO:
  ------------------
  |  Branch (2514:3): [True: 0, False: 537]
  ------------------
 2515|      0|			smart_str_appends(str, "goto ");
 2516|      0|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2517|      0|			break;
 2518|      0|		case ZEND_AST_BREAK:
  ------------------
  |  Branch (2518:3): [True: 0, False: 537]
  ------------------
 2519|      0|			APPEND_NODE_1("break");
  ------------------
  |  | 2130|      0|#define APPEND_NODE_1(_op) do { \
  |  | 2131|      0|		op = _op; \
  |  | 2132|      0|		goto append_node_1; \
  |  | 2133|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2133:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2520|      0|		case ZEND_AST_CONTINUE:
  ------------------
  |  Branch (2520:3): [True: 0, False: 537]
  ------------------
 2521|      0|			APPEND_NODE_1("continue");
  ------------------
  |  | 2130|      0|#define APPEND_NODE_1(_op) do { \
  |  | 2131|      0|		op = _op; \
  |  | 2132|      0|		goto append_node_1; \
  |  | 2133|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2133:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2522|       |
 2523|       |		/* 2 child nodes */
 2524|      2|		case ZEND_AST_DIM:
  ------------------
  |  Branch (2524:3): [True: 2, False: 535]
  ------------------
 2525|      2|			zend_ast_export_ex(str, ast->child[0], 260, indent);
 2526|      2|			smart_str_appendc(str, '[');
 2527|      2|			if (ast->child[1]) {
  ------------------
  |  Branch (2527:8): [True: 2, False: 0]
  ------------------
 2528|      2|				zend_ast_export_ex(str, ast->child[1], 0, indent);
 2529|      2|			}
 2530|      2|			smart_str_appendc(str, ']');
 2531|      2|			break;
 2532|      2|		case ZEND_AST_PROP:
  ------------------
  |  Branch (2532:3): [True: 2, False: 535]
  ------------------
 2533|      2|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (2533:3): [True: 0, False: 537]
  ------------------
 2534|      2|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2535|      2|			smart_str_appends(str, ast->kind == ZEND_AST_NULLSAFE_PROP ? "?->" : "->");
  ------------------
  |  Branch (2535:27): [True: 0, False: 2]
  ------------------
 2536|      2|			zend_ast_export_var(str, ast->child[1], indent);
 2537|      2|			break;
 2538|      0|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (2538:3): [True: 0, False: 537]
  ------------------
 2539|      0|			zend_ast_export_ns_name(str, ast->child[0], 0, indent);
 2540|      0|			smart_str_appends(str, "::$");
 2541|      0|			zend_ast_export_var(str, ast->child[1], indent);
 2542|      0|			break;
 2543|     62|		case ZEND_AST_CALL: {
  ------------------
  |  Branch (2543:3): [True: 62, False: 475]
  ------------------
 2544|     62|			zend_ast *left = ast->child[0];
 2545|     62|			if (left->kind == ZEND_AST_ARROW_FUNC || left->kind == ZEND_AST_CLOSURE) {
  ------------------
  |  Branch (2545:8): [True: 0, False: 62]
  |  Branch (2545:45): [True: 1, False: 61]
  ------------------
 2546|      1|				smart_str_appendc(str, '(');
 2547|      1|				zend_ast_export_ns_name(str, left, 0, indent);
 2548|      1|				smart_str_appendc(str, ')');
 2549|     61|			} else {
 2550|     61|				zend_ast_export_ns_name(str, left, 0, indent);
 2551|     61|			}
 2552|     62|			smart_str_appendc(str, '(');
 2553|     62|			zend_ast_export_ex(str, ast->child[1], 0, indent);
 2554|     62|			smart_str_appendc(str, ')');
 2555|     62|			break;
 2556|      2|		}
 2557|      3|		case ZEND_AST_CALLABLE_CONVERT: {
  ------------------
  |  Branch (2557:3): [True: 3, False: 534]
  ------------------
 2558|      3|			zend_ast_fcc *fcc_ast = (zend_ast_fcc*)ast;
 2559|      3|			ast = fcc_ast->args;
 2560|      3|			goto simple_list;
 2561|      2|		}
 2562|      0|		case ZEND_AST_CLASS_CONST:
  ------------------
  |  Branch (2562:3): [True: 0, False: 537]
  ------------------
 2563|      0|			zend_ast_export_ns_name(str, ast->child[0], 0, indent);
 2564|      0|			smart_str_appends(str, "::");
 2565|      0|			zend_ast_export_name(str, ast->child[1], 0, indent);
 2566|      0|			break;
 2567|      0|		case ZEND_AST_CLASS_NAME:
  ------------------
  |  Branch (2567:3): [True: 0, False: 537]
  ------------------
 2568|      0|			if (ast->child[0] == NULL) {
  ------------------
  |  Branch (2568:8): [True: 0, False: 0]
  ------------------
 2569|       |				/* The const expr representation stores the fetch type instead. */
 2570|      0|				switch (ast->attr) {
 2571|      0|					case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (2571:6): [True: 0, False: 0]
  ------------------
 2572|      0|						smart_str_append(str, ZSTR_KNOWN(ZEND_STR_SELF));
 2573|      0|						break;
 2574|      0|					case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (2574:6): [True: 0, False: 0]
  ------------------
 2575|      0|						smart_str_append(str, ZSTR_KNOWN(ZEND_STR_PARENT));
 2576|      0|						break;
 2577|      0|					default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2577:6): [True: 0, False: 0]
  |  Branch (2577:15): [Folded, False: 0]
  |  Branch (2577:15): [Folded, False: 0]
  ------------------
 2578|      0|				}
 2579|      0|			} else {
 2580|      0|				zend_ast_export_ns_name(str, ast->child[0], 0, indent);
 2581|      0|			}
 2582|      0|			smart_str_appends(str, "::class");
 2583|      0|			break;
 2584|      0|		case ZEND_AST_ASSIGN:            BINARY_OP(" = ",   90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2584:3): [True: 0, False: 537]
  ------------------
 2585|      0|		case ZEND_AST_ASSIGN_REF:        BINARY_OP(" =& ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2585:3): [True: 0, False: 537]
  ------------------
 2586|      1|		case ZEND_AST_ASSIGN_OP:
  ------------------
  |  Branch (2586:3): [True: 1, False: 536]
  ------------------
 2587|      1|			switch (ast->attr) {
 2588|      0|				case ZEND_ADD:    BINARY_OP(" += ",  90, 91, 90);
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
              				case ZEND_ADD:    BINARY_OP(" += ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2588:5): [True: 0, False: 1]
  ------------------
 2589|      0|				case ZEND_SUB:    BINARY_OP(" -= ",  90, 91, 90);
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
              				case ZEND_SUB:    BINARY_OP(" -= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2589:5): [True: 0, False: 1]
  ------------------
 2590|      0|				case ZEND_MUL:    BINARY_OP(" *= ",  90, 91, 90);
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
              				case ZEND_MUL:    BINARY_OP(" *= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2590:5): [True: 0, False: 1]
  ------------------
 2591|      0|				case ZEND_DIV:    BINARY_OP(" /= ",  90, 91, 90);
  ------------------
  |  |  128|      0|#define ZEND_DIV                              4
  ------------------
              				case ZEND_DIV:    BINARY_OP(" /= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2591:5): [True: 0, False: 1]
  ------------------
 2592|      0|				case ZEND_MOD:    BINARY_OP(" %= ",  90, 91, 90);
  ------------------
  |  |  129|      0|#define ZEND_MOD                              5
  ------------------
              				case ZEND_MOD:    BINARY_OP(" %= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2592:5): [True: 0, False: 1]
  ------------------
 2593|      0|				case ZEND_SL:     BINARY_OP(" <<= ", 90, 91, 90);
  ------------------
  |  |  130|      0|#define ZEND_SL                               6
  ------------------
              				case ZEND_SL:     BINARY_OP(" <<= ", 90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2593:5): [True: 0, False: 1]
  ------------------
 2594|      0|				case ZEND_SR:     BINARY_OP(" >>= ", 90, 91, 90);
  ------------------
  |  |  131|      0|#define ZEND_SR                               7
  ------------------
              				case ZEND_SR:     BINARY_OP(" >>= ", 90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2594:5): [True: 0, False: 1]
  ------------------
 2595|      0|				case ZEND_CONCAT: BINARY_OP(" .= ",  90, 91, 90);
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
              				case ZEND_CONCAT: BINARY_OP(" .= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2595:5): [True: 0, False: 1]
  ------------------
 2596|      0|				case ZEND_BW_OR:  BINARY_OP(" |= ",  90, 91, 90);
  ------------------
  |  |  133|      0|#define ZEND_BW_OR                            9
  ------------------
              				case ZEND_BW_OR:  BINARY_OP(" |= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2596:5): [True: 0, False: 1]
  ------------------
 2597|      0|				case ZEND_BW_AND: BINARY_OP(" &= ",  90, 91, 90);
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
              				case ZEND_BW_AND: BINARY_OP(" &= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2597:5): [True: 0, False: 1]
  ------------------
 2598|      0|				case ZEND_BW_XOR: BINARY_OP(" ^= ",  90, 91, 90);
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
              				case ZEND_BW_XOR: BINARY_OP(" ^= ",  90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2598:5): [True: 0, False: 1]
  ------------------
 2599|      1|				case ZEND_POW:    BINARY_OP(" **= ", 90, 91, 90);
  ------------------
  |  |  136|      1|#define ZEND_POW                             12
  ------------------
              				case ZEND_POW:    BINARY_OP(" **= ", 90, 91, 90);
  ------------------
  |  | 2103|      1|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      1|		op = _op; \
  |  | 2105|      1|		p = _p; \
  |  | 2106|      1|		pl = _pl; \
  |  | 2107|      1|		pr = _pr; \
  |  | 2108|      1|		goto binary_op; \
  |  | 2109|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2599:5): [True: 1, False: 0]
  ------------------
 2600|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2600:5): [True: 0, False: 1]
  |  Branch (2600:14): [Folded, False: 0]
  |  Branch (2600:14): [Folded, False: 0]
  ------------------
 2601|      1|			}
 2602|      0|			break;
 2603|      0|		case ZEND_AST_ASSIGN_COALESCE: BINARY_OP(" \?\?= ", 90, 91, 90);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2603:3): [True: 0, False: 537]
  ------------------
 2604|     14|		case ZEND_AST_BINARY_OP:
  ------------------
  |  Branch (2604:3): [True: 14, False: 523]
  ------------------
 2605|     14|			switch (ast->attr) {
 2606|      2|				case ZEND_ADD:                 BINARY_OP(" + ",   200, 200, 201);
  ------------------
  |  |  125|      2|#define ZEND_ADD                              1
  ------------------
              				case ZEND_ADD:                 BINARY_OP(" + ",   200, 200, 201);
  ------------------
  |  | 2103|      2|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      2|		op = _op; \
  |  | 2105|      2|		p = _p; \
  |  | 2106|      2|		pl = _pl; \
  |  | 2107|      2|		pr = _pr; \
  |  | 2108|      2|		goto binary_op; \
  |  | 2109|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2606:5): [True: 2, False: 12]
  ------------------
 2607|      2|				case ZEND_SUB:                 BINARY_OP(" - ",   200, 200, 201);
  ------------------
  |  |  126|      2|#define ZEND_SUB                              2
  ------------------
              				case ZEND_SUB:                 BINARY_OP(" - ",   200, 200, 201);
  ------------------
  |  | 2103|      2|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      2|		op = _op; \
  |  | 2105|      2|		p = _p; \
  |  | 2106|      2|		pl = _pl; \
  |  | 2107|      2|		pr = _pr; \
  |  | 2108|      2|		goto binary_op; \
  |  | 2109|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2607:5): [True: 2, False: 12]
  ------------------
 2608|      2|				case ZEND_MUL:                 BINARY_OP(" * ",   210, 210, 211);
  ------------------
  |  |  127|      2|#define ZEND_MUL                              3
  ------------------
              				case ZEND_MUL:                 BINARY_OP(" * ",   210, 210, 211);
  ------------------
  |  | 2103|      2|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      2|		op = _op; \
  |  | 2105|      2|		p = _p; \
  |  | 2106|      2|		pl = _pl; \
  |  | 2107|      2|		pr = _pr; \
  |  | 2108|      2|		goto binary_op; \
  |  | 2109|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2608:5): [True: 2, False: 12]
  ------------------
 2609|      3|				case ZEND_DIV:                 BINARY_OP(" / ",   210, 210, 211);
  ------------------
  |  |  128|      3|#define ZEND_DIV                              4
  ------------------
              				case ZEND_DIV:                 BINARY_OP(" / ",   210, 210, 211);
  ------------------
  |  | 2103|      3|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      3|		op = _op; \
  |  | 2105|      3|		p = _p; \
  |  | 2106|      3|		pl = _pl; \
  |  | 2107|      3|		pr = _pr; \
  |  | 2108|      3|		goto binary_op; \
  |  | 2109|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2609:5): [True: 3, False: 11]
  ------------------
 2610|      2|				case ZEND_MOD:                 BINARY_OP(" % ",   210, 210, 211);
  ------------------
  |  |  129|      2|#define ZEND_MOD                              5
  ------------------
              				case ZEND_MOD:                 BINARY_OP(" % ",   210, 210, 211);
  ------------------
  |  | 2103|      2|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      2|		op = _op; \
  |  | 2105|      2|		p = _p; \
  |  | 2106|      2|		pl = _pl; \
  |  | 2107|      2|		pr = _pr; \
  |  | 2108|      2|		goto binary_op; \
  |  | 2109|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2610:5): [True: 2, False: 12]
  ------------------
 2611|      0|				case ZEND_SL:                  BINARY_OP(" << ",  190, 190, 191);
  ------------------
  |  |  130|      0|#define ZEND_SL                               6
  ------------------
              				case ZEND_SL:                  BINARY_OP(" << ",  190, 190, 191);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2611:5): [True: 0, False: 14]
  ------------------
 2612|      0|				case ZEND_SR:                  BINARY_OP(" >> ",  190, 190, 191);
  ------------------
  |  |  131|      0|#define ZEND_SR                               7
  ------------------
              				case ZEND_SR:                  BINARY_OP(" >> ",  190, 190, 191);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2612:5): [True: 0, False: 14]
  ------------------
 2613|      0|				case ZEND_CONCAT:              BINARY_OP(" . ",   185, 185, 186);
  ------------------
  |  |  132|      0|#define ZEND_CONCAT                           8
  ------------------
              				case ZEND_CONCAT:              BINARY_OP(" . ",   185, 185, 186);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2613:5): [True: 0, False: 14]
  ------------------
 2614|      1|				case ZEND_BW_OR:               BINARY_OP(" | ",   140, 140, 141);
  ------------------
  |  |  133|      1|#define ZEND_BW_OR                            9
  ------------------
              				case ZEND_BW_OR:               BINARY_OP(" | ",   140, 140, 141);
  ------------------
  |  | 2103|      1|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      1|		op = _op; \
  |  | 2105|      1|		p = _p; \
  |  | 2106|      1|		pl = _pl; \
  |  | 2107|      1|		pr = _pr; \
  |  | 2108|      1|		goto binary_op; \
  |  | 2109|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2614:5): [True: 1, False: 13]
  ------------------
 2615|      0|				case ZEND_BW_AND:              BINARY_OP(" & ",   160, 160, 161);
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
              				case ZEND_BW_AND:              BINARY_OP(" & ",   160, 160, 161);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2615:5): [True: 0, False: 14]
  ------------------
 2616|      0|				case ZEND_BW_XOR:              BINARY_OP(" ^ ",   150, 150, 151);
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
              				case ZEND_BW_XOR:              BINARY_OP(" ^ ",   150, 150, 151);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2616:5): [True: 0, False: 14]
  ------------------
 2617|      0|				case ZEND_IS_IDENTICAL:        BINARY_OP(" === ", 170, 171, 171);
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
              				case ZEND_IS_IDENTICAL:        BINARY_OP(" === ", 170, 171, 171);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2617:5): [True: 0, False: 14]
  ------------------
 2618|      0|				case ZEND_IS_NOT_IDENTICAL:    BINARY_OP(" !== ", 170, 171, 171);
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
              				case ZEND_IS_NOT_IDENTICAL:    BINARY_OP(" !== ", 170, 171, 171);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2618:5): [True: 0, False: 14]
  ------------------
 2619|      0|				case ZEND_IS_EQUAL:            BINARY_OP(" == ",  170, 171, 171);
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
              				case ZEND_IS_EQUAL:            BINARY_OP(" == ",  170, 171, 171);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2619:5): [True: 0, False: 14]
  ------------------
 2620|      0|				case ZEND_IS_NOT_EQUAL:        BINARY_OP(" != ",  170, 171, 171);
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
              				case ZEND_IS_NOT_EQUAL:        BINARY_OP(" != ",  170, 171, 171);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2620:5): [True: 0, False: 14]
  ------------------
 2621|      2|				case ZEND_IS_SMALLER:          BINARY_OP(" < ",   180, 181, 181);
  ------------------
  |  |  144|      2|#define ZEND_IS_SMALLER                      20
  ------------------
              				case ZEND_IS_SMALLER:          BINARY_OP(" < ",   180, 181, 181);
  ------------------
  |  | 2103|      2|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      2|		op = _op; \
  |  | 2105|      2|		p = _p; \
  |  | 2106|      2|		pl = _pl; \
  |  | 2107|      2|		pr = _pr; \
  |  | 2108|      2|		goto binary_op; \
  |  | 2109|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2621:5): [True: 2, False: 12]
  ------------------
 2622|      0|				case ZEND_IS_SMALLER_OR_EQUAL: BINARY_OP(" <= ",  180, 181, 181);
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
              				case ZEND_IS_SMALLER_OR_EQUAL: BINARY_OP(" <= ",  180, 181, 181);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2622:5): [True: 0, False: 14]
  ------------------
 2623|      0|				case ZEND_POW:                 BINARY_OP(" ** ",  250, 251, 250);
  ------------------
  |  |  136|      0|#define ZEND_POW                             12
  ------------------
              				case ZEND_POW:                 BINARY_OP(" ** ",  250, 251, 250);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2623:5): [True: 0, False: 14]
  ------------------
 2624|      0|				case ZEND_BOOL_XOR:            BINARY_OP(" xor ",  40,  40,  41);
  ------------------
  |  |  139|      0|#define ZEND_BOOL_XOR                        15
  ------------------
              				case ZEND_BOOL_XOR:            BINARY_OP(" xor ",  40,  40,  41);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2624:5): [True: 0, False: 14]
  ------------------
 2625|      0|				case ZEND_SPACESHIP:           BINARY_OP(" <=> ", 180, 181, 181);
  ------------------
  |  |  292|      0|#define ZEND_SPACESHIP                      170
  ------------------
              				case ZEND_SPACESHIP:           BINARY_OP(" <=> ", 180, 181, 181);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2625:5): [True: 0, False: 14]
  ------------------
 2626|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2626:5): [True: 0, False: 14]
  |  Branch (2626:14): [Folded, False: 0]
  |  Branch (2626:14): [Folded, False: 0]
  ------------------
 2627|     14|			}
 2628|      0|			break;
 2629|      1|		case ZEND_AST_GREATER:                 BINARY_OP(" > ",   180, 181, 181);
  ------------------
  |  | 2103|      1|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      1|		op = _op; \
  |  | 2105|      1|		p = _p; \
  |  | 2106|      1|		pl = _pl; \
  |  | 2107|      1|		pr = _pr; \
  |  | 2108|      1|		goto binary_op; \
  |  | 2109|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2629:3): [True: 1, False: 536]
  ------------------
 2630|      0|		case ZEND_AST_GREATER_EQUAL:           BINARY_OP(" >= ",  180, 181, 181);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2630:3): [True: 0, False: 537]
  ------------------
 2631|     13|		case ZEND_AST_AND:                     BINARY_OP(" && ",  130, 130, 131);
  ------------------
  |  | 2103|     13|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|     13|		op = _op; \
  |  | 2105|     13|		p = _p; \
  |  | 2106|     13|		pl = _pl; \
  |  | 2107|     13|		pr = _pr; \
  |  | 2108|     13|		goto binary_op; \
  |  | 2109|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2631:3): [True: 13, False: 524]
  ------------------
 2632|      0|		case ZEND_AST_OR:                      BINARY_OP(" || ",  120, 120, 121);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2632:3): [True: 0, False: 537]
  ------------------
 2633|      2|		case ZEND_AST_PIPE:                    BINARY_OP(" |> ",  183, 183, 184);
  ------------------
  |  | 2103|      2|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      2|		op = _op; \
  |  | 2105|      2|		p = _p; \
  |  | 2106|      2|		pl = _pl; \
  |  | 2107|      2|		pr = _pr; \
  |  | 2108|      2|		goto binary_op; \
  |  | 2109|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2633:3): [True: 2, False: 535]
  ------------------
 2634|     22|		case ZEND_AST_ARRAY_ELEM:
  ------------------
  |  Branch (2634:3): [True: 22, False: 515]
  ------------------
 2635|     22|			if (ast->child[1]) {
  ------------------
  |  Branch (2635:8): [True: 0, False: 22]
  ------------------
 2636|      0|				zend_ast_export_ex(str, ast->child[1], 80, indent);
 2637|      0|				smart_str_appends(str, " => ");
 2638|      0|			}
 2639|     22|			if (ast->attr)
  ------------------
  |  Branch (2639:8): [True: 0, False: 22]
  ------------------
 2640|      0|				smart_str_appendc(str, '&');
 2641|     22|			zend_ast_export_ex(str, ast->child[0], 80, indent);
 2642|     22|			break;
 2643|      8|		case ZEND_AST_NEW:
  ------------------
  |  Branch (2643:3): [True: 8, False: 529]
  ------------------
 2644|      8|			smart_str_appends(str, "new ");
 2645|      8|			if (ast->child[0]->kind == ZEND_AST_CLASS) {
  ------------------
  |  Branch (2645:8): [True: 8, False: 0]
  ------------------
 2646|      8|				const zend_ast_decl *decl = (const zend_ast_decl *) ast->child[0];
 2647|      8|				if (decl->child[3]) {
  ------------------
  |  Branch (2647:9): [True: 0, False: 8]
  ------------------
 2648|      0|					zend_ast_export_attributes(str, decl->child[3], indent, false);
 2649|      0|				}
 2650|      8|				smart_str_appends(str, "class");
 2651|      8|				if (!zend_ast_is_list(ast->child[1])
  ------------------
  |  Branch (2651:9): [True: 2, False: 6]
  ------------------
 2652|      6|						|| zend_ast_get_list(ast->child[1])->children) {
  ------------------
  |  Branch (2652:10): [True: 2, False: 4]
  ------------------
 2653|      4|					smart_str_appendc(str, '(');
 2654|      4|					zend_ast_export_ex(str, ast->child[1], 0, indent);
 2655|      4|					smart_str_appendc(str, ')');
 2656|      4|				}
 2657|      8|				zend_ast_export_class_no_header(str, decl, indent);
 2658|      8|			} else {
 2659|      0|				zend_ast_export_ns_name(str, ast->child[0], 0, indent);
 2660|      0|				smart_str_appendc(str, '(');
 2661|      0|				zend_ast_export_ex(str, ast->child[1], 0, indent);
 2662|      0|				smart_str_appendc(str, ')');
 2663|      0|			}
 2664|      8|			break;
 2665|      0|		case ZEND_AST_INSTANCEOF:
  ------------------
  |  Branch (2665:3): [True: 0, False: 537]
  ------------------
 2666|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2667|      0|			smart_str_appends(str, " instanceof ");
 2668|      0|			zend_ast_export_ns_name(str, ast->child[1], 0, indent);
 2669|      0|			break;
 2670|      1|		case ZEND_AST_YIELD:
  ------------------
  |  Branch (2670:3): [True: 1, False: 536]
  ------------------
 2671|      1|			if (priority > 70) smart_str_appendc(str, '(');
  ------------------
  |  Branch (2671:8): [True: 0, False: 1]
  ------------------
 2672|      1|			smart_str_appends(str, "yield ");
 2673|      1|			if (ast->child[0]) {
  ------------------
  |  Branch (2673:8): [True: 1, False: 0]
  ------------------
 2674|      1|				if (ast->child[1]) {
  ------------------
  |  Branch (2674:9): [True: 0, False: 1]
  ------------------
 2675|      0|					zend_ast_export_ex(str, ast->child[1], 70, indent);
 2676|      0|					smart_str_appends(str, " => ");
 2677|      0|				}
 2678|      1|				zend_ast_export_ex(str, ast->child[0], 70, indent);
 2679|      1|			}
 2680|      1|			if (priority > 70) smart_str_appendc(str, ')');
  ------------------
  |  Branch (2680:8): [True: 0, False: 1]
  ------------------
 2681|      1|			break;
 2682|      0|		case ZEND_AST_YIELD_FROM:
  ------------------
  |  Branch (2682:3): [True: 0, False: 537]
  ------------------
 2683|      0|			PREFIX_OP("yield from ", 85, 86);
  ------------------
  |  | 2111|      0|#define PREFIX_OP(_op, _p, _pl) do { \
  |  | 2112|      0|		op = _op; \
  |  | 2113|      0|		p = _p; \
  |  | 2114|      0|		pl = _pl; \
  |  | 2115|      0|		goto prefix_op; \
  |  | 2116|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2116:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2684|      0|		case ZEND_AST_COALESCE: BINARY_OP(" ?? ", 110, 111, 110);
  ------------------
  |  | 2103|      0|#define BINARY_OP(_op, _p, _pl, _pr) do { \
  |  | 2104|      0|		op = _op; \
  |  | 2105|      0|		p = _p; \
  |  | 2106|      0|		pl = _pl; \
  |  | 2107|      0|		pr = _pr; \
  |  | 2108|      0|		goto binary_op; \
  |  | 2109|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2109:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2684:3): [True: 0, False: 537]
  ------------------
 2685|      0|		case ZEND_AST_STATIC:
  ------------------
  |  Branch (2685:3): [True: 0, False: 537]
  ------------------
 2686|      0|			smart_str_appends(str, "static $");
 2687|      0|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2688|      0|			APPEND_DEFAULT_VALUE(1);
  ------------------
  |  | 2140|      0|#define APPEND_DEFAULT_VALUE(n) do { \
  |  | 2141|      0|		p = n; \
  |  | 2142|      0|		goto append_default_value; \
  |  | 2143|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2143:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2689|      0|		case ZEND_AST_WHILE:
  ------------------
  |  Branch (2689:3): [True: 0, False: 537]
  ------------------
 2690|      0|			smart_str_appends(str, "while (");
 2691|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2692|      0|			smart_str_appends(str, ") {\n");
 2693|      0|			zend_ast_export_stmt(str, ast->child[1], indent + 1);
 2694|      0|			zend_ast_export_indent(str, indent);
 2695|      0|			smart_str_appendc(str, '}');
 2696|      0|			break;
 2697|      0|		case ZEND_AST_DO_WHILE:
  ------------------
  |  Branch (2697:3): [True: 0, False: 537]
  ------------------
 2698|      0|			smart_str_appends(str, "do {\n");
 2699|      0|			zend_ast_export_stmt(str, ast->child[0], indent + 1);
 2700|      0|			zend_ast_export_indent(str, indent);
 2701|      0|			smart_str_appends(str, "} while (");
 2702|      0|			zend_ast_export_ex(str, ast->child[1], 0, indent);
 2703|      0|			smart_str_appendc(str, ')');
 2704|      0|			break;
 2705|       |
 2706|      0|		case ZEND_AST_IF_ELEM:
  ------------------
  |  Branch (2706:3): [True: 0, False: 537]
  ------------------
 2707|      0|			if (ast->child[0]) {
  ------------------
  |  Branch (2707:8): [True: 0, False: 0]
  ------------------
 2708|      0|				smart_str_appends(str, "if (");
 2709|      0|				zend_ast_export_ex(str, ast->child[0], 0, indent);
 2710|      0|				smart_str_appends(str, ") {\n");
 2711|      0|				zend_ast_export_stmt(str, ast->child[1], indent + 1);
 2712|      0|			} else {
 2713|      0|				smart_str_appends(str, "else {\n");
 2714|      0|				zend_ast_export_stmt(str, ast->child[1], indent + 1);
 2715|      0|			}
 2716|      0|			zend_ast_export_indent(str, indent);
 2717|      0|			smart_str_appendc(str, '}');
 2718|      0|			break;
 2719|      0|		case ZEND_AST_SWITCH:
  ------------------
  |  Branch (2719:3): [True: 0, False: 537]
  ------------------
 2720|      0|			smart_str_appends(str, "switch (");
 2721|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2722|      0|			smart_str_appends(str, ") {\n");
 2723|      0|			zend_ast_export_ex(str, ast->child[1], 0, indent + 1);
 2724|      0|			zend_ast_export_indent(str, indent);
 2725|      0|			smart_str_appendc(str, '}');
 2726|      0|			break;
 2727|      0|		case ZEND_AST_SWITCH_CASE:
  ------------------
  |  Branch (2727:3): [True: 0, False: 537]
  ------------------
 2728|      0|			zend_ast_export_indent(str, indent);
 2729|      0|			if (ast->child[0]) {
  ------------------
  |  Branch (2729:8): [True: 0, False: 0]
  ------------------
 2730|      0|				smart_str_appends(str, "case ");
 2731|      0|				zend_ast_export_ex(str, ast->child[0], 0, indent);
 2732|      0|				smart_str_appends(str, ":\n");
 2733|      0|			} else {
 2734|      0|				smart_str_appends(str, "default:\n");
 2735|      0|			}
 2736|      0|			zend_ast_export_stmt(str, ast->child[1], indent + 1);
 2737|      0|			break;
 2738|      0|		case ZEND_AST_MATCH:
  ------------------
  |  Branch (2738:3): [True: 0, False: 537]
  ------------------
 2739|      0|			smart_str_appends(str, "match (");
 2740|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2741|      0|			smart_str_appends(str, ") {\n");
 2742|      0|			zend_ast_export_ex(str, ast->child[1], 0, indent + 1);
 2743|      0|			zend_ast_export_indent(str, indent);
 2744|      0|			smart_str_appendc(str, '}');
 2745|      0|			break;
 2746|      0|		case ZEND_AST_MATCH_ARM:
  ------------------
  |  Branch (2746:3): [True: 0, False: 537]
  ------------------
 2747|      0|			zend_ast_export_indent(str, indent);
 2748|      0|			if (ast->child[0]) {
  ------------------
  |  Branch (2748:8): [True: 0, False: 0]
  ------------------
 2749|      0|				zend_ast_export_list(str, zend_ast_get_list(ast->child[0]), true, 0, indent);
 2750|      0|				smart_str_appends(str, " => ");
 2751|      0|			} else {
 2752|      0|				smart_str_appends(str, "default => ");
 2753|      0|			}
 2754|      0|			zend_ast_export_ex(str, ast->child[1], 0, 0);
 2755|      0|			smart_str_appends(str, ",\n");
 2756|      0|			break;
 2757|      0|		case ZEND_AST_DECLARE:
  ------------------
  |  Branch (2757:3): [True: 0, False: 537]
  ------------------
 2758|      0|			smart_str_appends(str, "declare(");
 2759|      0|			ZEND_ASSERT(ast->child[0]->kind == ZEND_AST_CONST_DECL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2759:4): [True: 0, False: 0]
  |  Branch (2759:4): [True: 0, False: 0]
  ------------------
 2760|      0|			zend_ast_export_list(str, zend_ast_get_list(ast->child[0]), true, 0, indent);
 2761|      0|			smart_str_appendc(str, ')');
 2762|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2762:8): [True: 0, False: 0]
  ------------------
 2763|      0|				smart_str_appends(str, " {\n");
 2764|      0|				zend_ast_export_stmt(str, ast->child[1], indent + 1);
 2765|      0|				zend_ast_export_indent(str, indent);
 2766|      0|				smart_str_appendc(str, '}');
 2767|      0|			} else {
 2768|      0|				smart_str_appendc(str, ';');
 2769|      0|			}
 2770|      0|			break;
 2771|      0|		case ZEND_AST_PROP_ELEM:
  ------------------
  |  Branch (2771:3): [True: 0, False: 537]
  ------------------
 2772|      0|			smart_str_appendc(str, '$');
 2773|      0|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2774|       |
 2775|      0|			zend_ast *default_value = ast->child[1];
 2776|      0|			if (default_value) {
  ------------------
  |  Branch (2776:8): [True: 0, False: 0]
  ------------------
 2777|      0|				smart_str_appends(str, " = ");
 2778|      0|				zend_ast_export_ex(str, default_value, 0, indent + 1);
 2779|      0|			}
 2780|       |
 2781|      0|			if (ast->child[3]) {
  ------------------
  |  Branch (2781:8): [True: 0, False: 0]
  ------------------
 2782|      0|				zend_ast_export_hook_list(str, zend_ast_get_list(ast->child[3]), indent);
 2783|      0|			}
 2784|      0|			break;
 2785|      1|		case ZEND_AST_CONST_ELEM:
  ------------------
  |  Branch (2785:3): [True: 1, False: 536]
  ------------------
 2786|      1|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2787|      1|			APPEND_DEFAULT_VALUE(1);
  ------------------
  |  | 2140|      1|#define APPEND_DEFAULT_VALUE(n) do { \
  |  | 2141|      1|		p = n; \
  |  | 2142|      1|		goto append_default_value; \
  |  | 2143|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2143:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2788|      0|		case ZEND_AST_USE_TRAIT:
  ------------------
  |  Branch (2788:3): [True: 0, False: 537]
  ------------------
 2789|      0|			smart_str_appends(str, "use ");
 2790|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2791|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2791:8): [True: 0, False: 0]
  ------------------
 2792|      0|				smart_str_appends(str, " {\n");
 2793|      0|				zend_ast_export_ex(str, ast->child[1], 0, indent + 1);
 2794|      0|				zend_ast_export_indent(str, indent);
 2795|      0|				smart_str_appendc(str, '}');
 2796|      0|			} else {
 2797|      0|				smart_str_appendc(str, ';');
 2798|      0|			}
 2799|      0|			break;
 2800|      0|		case ZEND_AST_TRAIT_PRECEDENCE:
  ------------------
  |  Branch (2800:3): [True: 0, False: 537]
  ------------------
 2801|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2802|      0|			smart_str_appends(str, " insteadof ");
 2803|      0|			zend_ast_export_ex(str, ast->child[1], 0, indent);
 2804|      0|			break;
 2805|      0|		case ZEND_AST_TRAIT_METHOD_REFERENCE:
  ------------------
  |  Branch (2805:3): [True: 0, False: 537]
  ------------------
 2806|      0|			if (ast->child[0]) {
  ------------------
  |  Branch (2806:8): [True: 0, False: 0]
  ------------------
 2807|      0|				zend_ast_export_name(str, ast->child[0], 0, indent);
 2808|      0|				smart_str_appends(str, "::");
 2809|      0|			}
 2810|      0|			zend_ast_export_name(str, ast->child[1], 0, indent);
 2811|      0|			break;
 2812|      0|		case ZEND_AST_NAMESPACE:
  ------------------
  |  Branch (2812:3): [True: 0, False: 537]
  ------------------
 2813|      0|			smart_str_appends(str, "namespace");
 2814|      0|			if (ast->child[0]) {
  ------------------
  |  Branch (2814:8): [True: 0, False: 0]
  ------------------
 2815|      0|				smart_str_appendc(str, ' ');
 2816|      0|				zend_ast_export_name(str, ast->child[0], 0, indent);
 2817|      0|			}
 2818|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2818:8): [True: 0, False: 0]
  ------------------
 2819|      0|				smart_str_appends(str, " {\n");
 2820|      0|				zend_ast_export_stmt(str, ast->child[1], indent + 1);
 2821|      0|				zend_ast_export_indent(str, indent);
 2822|      0|				smart_str_appends(str, "}\n");
 2823|      0|			} else {
 2824|      0|				smart_str_appendc(str, ';');
 2825|      0|			}
 2826|      0|			break;
 2827|      0|		case ZEND_AST_USE_ELEM:
  ------------------
  |  Branch (2827:3): [True: 0, False: 537]
  ------------------
 2828|      0|		case ZEND_AST_TRAIT_ALIAS:
  ------------------
  |  Branch (2828:3): [True: 0, False: 537]
  ------------------
 2829|      0|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2830|      0|			if (ast->attr & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2830:8): [True: 0, False: 0]
  ------------------
 2831|      0|				smart_str_appends(str, " as public");
 2832|      0|			} else if (ast->attr & ZEND_ACC_PROTECTED) {
  ------------------
  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2832:15): [True: 0, False: 0]
  ------------------
 2833|      0|				smart_str_appends(str, " as protected");
 2834|      0|			} else if (ast->attr & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2834:15): [True: 0, False: 0]
  ------------------
 2835|      0|				smart_str_appends(str, " as private");
 2836|      0|			} else if (ast->child[1]) {
  ------------------
  |  Branch (2836:15): [True: 0, False: 0]
  ------------------
 2837|      0|				smart_str_appends(str, " as");
 2838|      0|			}
 2839|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2839:8): [True: 0, False: 0]
  ------------------
 2840|      0|				smart_str_appendc(str, ' ');
 2841|      0|				zend_ast_export_name(str, ast->child[1], 0, indent);
 2842|      0|			}
 2843|      0|			break;
 2844|      2|		case ZEND_AST_NAMED_ARG:
  ------------------
  |  Branch (2844:3): [True: 2, False: 535]
  ------------------
 2845|      2|			smart_str_append(str, zend_ast_get_str(ast->child[0]));
 2846|      2|			smart_str_appends(str, ": ");
 2847|      2|			ast = ast->child[1];
 2848|      2|			goto tail_call;
 2849|       |
 2850|       |		/* 3 child nodes */
 2851|      0|		case ZEND_AST_METHOD_CALL:
  ------------------
  |  Branch (2851:3): [True: 0, False: 537]
  ------------------
 2852|      0|		case ZEND_AST_NULLSAFE_METHOD_CALL:
  ------------------
  |  Branch (2852:3): [True: 0, False: 537]
  ------------------
 2853|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2854|      0|			smart_str_appends(str, ast->kind == ZEND_AST_NULLSAFE_METHOD_CALL ? "?->" : "->");
  ------------------
  |  Branch (2854:27): [True: 0, False: 0]
  ------------------
 2855|      0|			zend_ast_export_var(str, ast->child[1], indent);
 2856|      0|			smart_str_appendc(str, '(');
 2857|      0|			zend_ast_export_ex(str, ast->child[2], 0, indent);
 2858|      0|			smart_str_appendc(str, ')');
 2859|      0|			break;
 2860|      0|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (2860:3): [True: 0, False: 537]
  ------------------
 2861|      0|			zend_ast_export_ns_name(str, ast->child[0], 0, indent);
 2862|      0|			smart_str_appends(str, "::");
 2863|      0|			zend_ast_export_var(str, ast->child[1], indent);
 2864|      0|			smart_str_appendc(str, '(');
 2865|      0|			zend_ast_export_ex(str, ast->child[2], 0, indent);
 2866|      0|			smart_str_appendc(str, ')');
 2867|      0|			break;
 2868|      3|		case ZEND_AST_CONDITIONAL:
  ------------------
  |  Branch (2868:3): [True: 3, False: 534]
  ------------------
 2869|      3|			if (priority > 100) smart_str_appendc(str, '(');
  ------------------
  |  Branch (2869:8): [True: 0, False: 3]
  ------------------
 2870|      3|			zend_ast_export_ex(str, ast->child[0], 100, indent);
 2871|      3|			if (ast->child[1]) {
  ------------------
  |  Branch (2871:8): [True: 0, False: 3]
  ------------------
 2872|      0|				smart_str_appends(str, " ? ");
 2873|      0|				zend_ast_export_ex(str, ast->child[1], 101, indent);
 2874|      0|				smart_str_appends(str, " : ");
 2875|      3|			} else {
 2876|      3|				smart_str_appends(str, " ?: ");
 2877|      3|			}
 2878|      3|			zend_ast_export_ex(str, ast->child[2], 101, indent);
 2879|      3|			if (priority > 100) smart_str_appendc(str, ')');
  ------------------
  |  Branch (2879:8): [True: 0, False: 3]
  ------------------
 2880|      3|			break;
 2881|       |
 2882|      0|		case ZEND_AST_TRY:
  ------------------
  |  Branch (2882:3): [True: 0, False: 537]
  ------------------
 2883|      0|			smart_str_appends(str, "try {\n");
 2884|      0|			zend_ast_export_stmt(str, ast->child[0], indent + 1);
 2885|      0|			zend_ast_export_indent(str, indent);
 2886|      0|			zend_ast_export_ex(str, ast->child[1], 0, indent);
 2887|      0|			if (ast->child[2]) {
  ------------------
  |  Branch (2887:8): [True: 0, False: 0]
  ------------------
 2888|      0|				smart_str_appends(str, "} finally {\n");
 2889|      0|				zend_ast_export_stmt(str, ast->child[2], indent + 1);
 2890|      0|				zend_ast_export_indent(str, indent);
 2891|      0|			}
 2892|      0|			smart_str_appendc(str, '}');
 2893|      0|			break;
 2894|      0|		case ZEND_AST_CATCH:
  ------------------
  |  Branch (2894:3): [True: 0, False: 537]
  ------------------
 2895|      0|			smart_str_appends(str, "} catch (");
 2896|      0|			zend_ast_export_catch_name_list(str, zend_ast_get_list(ast->child[0]), indent);
  ------------------
  |  | 1804|      0|#define zend_ast_export_catch_name_list(s, l, i) zend_ast_export_name_list_ex(s, l, i, "|")
  ------------------
 2897|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2897:8): [True: 0, False: 0]
  ------------------
 2898|      0|				smart_str_appends(str, " $");
 2899|      0|				zend_ast_export_var(str, ast->child[1], indent);
 2900|      0|			}
 2901|      0|			smart_str_appends(str, ") {\n");
 2902|      0|			zend_ast_export_stmt(str, ast->child[2], indent + 1);
 2903|      0|			zend_ast_export_indent(str, indent);
 2904|      0|			break;
 2905|      2|		case ZEND_AST_PARAM:
  ------------------
  |  Branch (2905:3): [True: 2, False: 535]
  ------------------
 2906|      2|			if (ast->child[3]) {
  ------------------
  |  Branch (2906:8): [True: 0, False: 2]
  ------------------
 2907|      0|				zend_ast_export_attributes(str, ast->child[3], indent, false);
 2908|      0|			}
 2909|      2|			zend_ast_export_visibility(str, ast->attr, ZEND_MODIFIER_TARGET_CPP);
 2910|      2|			if (ast->attr & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (2910:8): [True: 1, False: 1]
  ------------------
 2911|      1|				smart_str_appends(str, "final ");
 2912|      1|			}
 2913|      2|			if (ast->child[0]) {
  ------------------
  |  Branch (2913:8): [True: 1, False: 1]
  ------------------
 2914|      1|				zend_ast_export_type(str, ast->child[0], indent);
 2915|      1|				smart_str_appendc(str, ' ');
 2916|      1|			}
 2917|      2|			if (ast->attr & ZEND_PARAM_REF) {
  ------------------
  |  | 1057|      2|#define ZEND_PARAM_REF      (1<<3)
  ------------------
  |  Branch (2917:8): [True: 0, False: 2]
  ------------------
 2918|      0|				smart_str_appendc(str, '&');
 2919|      0|			}
 2920|      2|			if (ast->attr & ZEND_PARAM_VARIADIC) {
  ------------------
  |  | 1058|      2|#define ZEND_PARAM_VARIADIC (1<<4)
  ------------------
  |  Branch (2920:8): [True: 0, False: 2]
  ------------------
 2921|      0|				smart_str_appends(str, "...");
 2922|      0|			}
 2923|      2|			smart_str_appendc(str, '$');
 2924|      2|			zend_ast_export_name(str, ast->child[1], 0, indent);
 2925|      2|			if (ast->child[2]) {
  ------------------
  |  Branch (2925:8): [True: 0, False: 2]
  ------------------
 2926|      0|				smart_str_appends(str, " = ");
 2927|      0|				zend_ast_export_ex(str, ast->child[2], 0, indent);
 2928|      0|			}
 2929|      2|			if (ast->child[5]) {
  ------------------
  |  Branch (2929:8): [True: 0, False: 2]
  ------------------
 2930|      0|				zend_ast_export_hook_list(str, zend_ast_get_list(ast->child[5]), indent);
 2931|      0|			}
 2932|      2|			break;
 2933|      0|		case ZEND_AST_ENUM_CASE:
  ------------------
  |  Branch (2933:3): [True: 0, False: 537]
  ------------------
 2934|      0|			if (ast->child[3]) {
  ------------------
  |  Branch (2934:8): [True: 0, False: 0]
  ------------------
 2935|      0|				zend_ast_export_attributes(str, ast->child[3], indent, true);
 2936|      0|			}
 2937|      0|			smart_str_appends(str, "case ");
 2938|      0|			zend_ast_export_name(str, ast->child[0], 0, indent);
 2939|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2939:8): [True: 0, False: 0]
  ------------------
 2940|      0|				smart_str_appends(str, " = ");
 2941|      0|				zend_ast_export_ex(str, ast->child[1], 0, indent);
 2942|      0|			}
 2943|      0|			break;
 2944|       |
 2945|       |		/* 4 child nodes */
 2946|      0|		case ZEND_AST_FOR:
  ------------------
  |  Branch (2946:3): [True: 0, False: 537]
  ------------------
 2947|      0|			smart_str_appends(str, "for (");
 2948|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2949|      0|			smart_str_appendc(str, ';');
 2950|      0|			if (ast->child[1]) {
  ------------------
  |  Branch (2950:8): [True: 0, False: 0]
  ------------------
 2951|      0|				smart_str_appendc(str, ' ');
 2952|      0|				zend_ast_export_ex(str, ast->child[1], 0, indent);
 2953|      0|			}
 2954|      0|			smart_str_appendc(str, ';');
 2955|      0|			if (ast->child[2]) {
  ------------------
  |  Branch (2955:8): [True: 0, False: 0]
  ------------------
 2956|      0|				smart_str_appendc(str, ' ');
 2957|      0|				zend_ast_export_ex(str, ast->child[2], 0, indent);
 2958|      0|			}
 2959|      0|			smart_str_appends(str, ") {\n");
 2960|      0|			zend_ast_export_stmt(str, ast->child[3], indent + 1);
 2961|      0|			zend_ast_export_indent(str, indent);
 2962|      0|			smart_str_appendc(str, '}');
 2963|      0|			break;
 2964|      0|		case ZEND_AST_FOREACH:
  ------------------
  |  Branch (2964:3): [True: 0, False: 537]
  ------------------
 2965|      0|			smart_str_appends(str, "foreach (");
 2966|      0|			zend_ast_export_ex(str, ast->child[0], 0, indent);
 2967|      0|			smart_str_appends(str, " as ");
 2968|      0|			if (ast->child[2]) {
  ------------------
  |  Branch (2968:8): [True: 0, False: 0]
  ------------------
 2969|      0|				zend_ast_export_ex(str, ast->child[2], 0, indent);
 2970|      0|				smart_str_appends(str, " => ");
 2971|      0|			}
 2972|      0|			zend_ast_export_ex(str, ast->child[1], 0, indent);
 2973|      0|			smart_str_appends(str, ") {\n");
 2974|      0|			zend_ast_export_stmt(str, ast->child[3], indent + 1);
 2975|      0|			zend_ast_export_indent(str, indent);
 2976|      0|			smart_str_appendc(str, '}');
 2977|      0|			break;
 2978|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2978:3): [True: 0, False: 537]
  |  Branch (2978:12): [Folded, False: 0]
  |  Branch (2978:12): [Folded, False: 0]
  ------------------
 2979|    537|	}
 2980|    404|	return;
 2981|       |
 2982|    404|binary_op:
 2983|     31|	if (priority > p) smart_str_appendc(str, '(');
  ------------------
  |  Branch (2983:6): [True: 4, False: 27]
  ------------------
 2984|     31|	zend_ast_export_ex(str, ast->child[0], pl, indent);
 2985|     31|	smart_str_appends(str, op);
 2986|     31|	zend_ast_export_ex(str, ast->child[1], pr, indent);
 2987|     31|	if (priority > p) smart_str_appendc(str, ')');
  ------------------
  |  Branch (2987:6): [True: 4, False: 27]
  ------------------
 2988|     31|	return;
 2989|       |
 2990|     94|prefix_op:
 2991|     94|	if (priority > p) smart_str_appendc(str, '(');
  ------------------
  |  Branch (2991:6): [True: 34, False: 60]
  ------------------
 2992|     94|	smart_str_appends(str, op);
 2993|     94|	zend_ast_export_ex(str, ast->child[0], pl, indent);
 2994|     94|	if (priority > p) smart_str_appendc(str, ')');
  ------------------
  |  Branch (2994:6): [True: 34, False: 60]
  ------------------
 2995|     94|	return;
 2996|       |
 2997|      0|postfix_op:
 2998|      0|	if (priority > p) smart_str_appendc(str, '(');
  ------------------
  |  Branch (2998:6): [True: 0, False: 0]
  ------------------
 2999|      0|	zend_ast_export_ex(str, ast->child[0], pl, indent);
 3000|      0|	smart_str_appends(str, op);
 3001|      0|	if (priority > p) smart_str_appendc(str, ')');
  ------------------
  |  Branch (3001:6): [True: 0, False: 0]
  ------------------
 3002|      0|	return;
 3003|       |
 3004|      0|func_op:
 3005|      0|	smart_str_appends(str, op);
 3006|      0|	smart_str_appendc(str, '(');
 3007|      0|	zend_ast_export_ex(str, ast->child[0], 0, indent);
 3008|      0|	smart_str_appendc(str, ')');
 3009|      0|	return;
 3010|       |
 3011|      2|append_node_1:
 3012|      2|	smart_str_appends(str, op);
 3013|      2|	if (ast->child[0]) {
  ------------------
  |  Branch (3013:6): [True: 2, False: 0]
  ------------------
 3014|      2|		smart_str_appendc(str, ' ');
 3015|      2|		ast = ast->child[0];
 3016|      2|		goto tail_call;
 3017|      2|	}
 3018|      0|	return;
 3019|       |
 3020|      3|append_str:
 3021|      3|	smart_str_appends(str, op);
 3022|      3|	return;
 3023|       |
 3024|      1|append_default_value:
 3025|      1|	if (ast->child[p]) {
  ------------------
  |  Branch (3025:6): [True: 1, False: 0]
  ------------------
 3026|      1|		smart_str_appends(str, " = ");
 3027|      1|		ast = ast->child[p];
 3028|      1|		goto tail_call;
 3029|      1|	}
 3030|      0|	return;
 3031|      1|}
zend_ast.c:zend_ast_export_zval:
 1911|     46|{
 1912|     46|	ZVAL_DEREF(zv);
  ------------------
  |  | 1474|     46|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     46|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     46|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 46]
  |  |  ------------------
  ------------------
 1913|     46|	switch (Z_TYPE_P(zv)) {
  ------------------
  |  |  669|     46|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     46|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 1914|      1|		case IS_NULL:
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (1914:3): [True: 1, False: 45]
  ------------------
 1915|      1|			smart_str_appends(str, "null");
 1916|      1|			break;
 1917|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1917:3): [True: 0, False: 46]
  ------------------
 1918|      0|			smart_str_appends(str, "false");
 1919|      0|			break;
 1920|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (1920:3): [True: 0, False: 46]
  ------------------
 1921|      0|			smart_str_appends(str, "true");
 1922|      0|			break;
 1923|     23|		case IS_LONG:
  ------------------
  |  |  610|     23|#define IS_LONG						4
  ------------------
  |  Branch (1923:3): [True: 23, False: 23]
  ------------------
 1924|     23|			smart_str_append_long(str, Z_LVAL_P(zv));
  ------------------
  |  |  976|     23|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     23|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1925|     23|			break;
 1926|      3|		case IS_DOUBLE:
  ------------------
  |  |  611|      3|#define IS_DOUBLE					5
  ------------------
  |  Branch (1926:3): [True: 3, False: 43]
  ------------------
 1927|      3|			smart_str_append_double(
 1928|      3|				str, Z_DVAL_P(zv), (int) EG(precision), /* zero_fraction */ true);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              				str, Z_DVAL_P(zv), (int) EG(precision), /* zero_fraction */ true);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
 1929|      3|			break;
 1930|     11|		case IS_STRING:
  ------------------
  |  |  612|     11|#define IS_STRING					6
  ------------------
  |  Branch (1930:3): [True: 11, False: 35]
  ------------------
 1931|     11|			smart_str_appendc(str, '\'');
 1932|     11|			zend_ast_export_str(str, Z_STR_P(zv));
  ------------------
  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1933|     11|			smart_str_appendc(str, '\'');
 1934|     11|			break;
 1935|      8|		case IS_ARRAY: {
  ------------------
  |  |  613|      8|#define IS_ARRAY					7
  ------------------
  |  Branch (1935:3): [True: 8, False: 38]
  ------------------
 1936|      8|			zend_long idx;
 1937|      8|			zend_string *key;
 1938|      8|			zval *val;
 1939|      8|			bool first = true;
 1940|      8|			smart_str_appendc(str, '[');
 1941|     16|			ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(zv), idx, key, val) {
  ------------------
  |  | 1196|      4|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      8|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      8|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      8|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      8|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      8|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      8|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      8|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      8|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      8|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      8|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      8|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      8|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      8|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      8|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     12|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 4, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      4|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      4|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      4|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      4|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 4, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      4|				__z++; \
  |  |  |  |  |  | 1057|      4|				__h = _idx; \
  |  |  |  |  |  | 1058|      4|				_idx++; \
  |  |  |  |  |  | 1059|      4|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      4|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      4|	_h = __h; \
  |  | 1198|      4|	_key = __key; \
  |  | 1199|      4|	_val = _z;
  ------------------
 1942|     16|				if (first) {
  ------------------
  |  Branch (1942:9): [True: 3, False: 1]
  ------------------
 1943|      3|					first = false;
 1944|      3|				} else {
 1945|      1|					smart_str_appends(str, ", ");
 1946|      1|				}
 1947|     16|				if (key) {
  ------------------
  |  Branch (1947:9): [True: 0, False: 4]
  ------------------
 1948|      0|					smart_str_appendc(str, '\'');
 1949|      0|					zend_ast_export_str(str, key);
 1950|      0|					smart_str_appends(str, "' => ");
 1951|      4|				} else {
 1952|      4|					smart_str_append_long(str, idx);
 1953|      4|					smart_str_appends(str, " => ");
 1954|      4|				}
 1955|     16|				zend_ast_export_zval(str, val, 0, indent);
 1956|     16|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1957|      8|			smart_str_appendc(str, ']');
 1958|      8|			break;
 1959|      0|		}
 1960|      0|		case IS_CONSTANT_AST:
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1960:3): [True: 0, False: 46]
  ------------------
 1961|      0|			zend_ast_export_ex(str, Z_ASTVAL_P(zv), priority, indent);
  ------------------
  |  | 1041|      0|#define Z_ASTVAL_P(zval_p)			Z_ASTVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1040|      0|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1038|      0|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1962|      0|			break;
 1963|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1963:3): [True: 0, False: 46]
  |  Branch (1963:12): [Folded, False: 0]
  |  Branch (1963:12): [Folded, False: 0]
  ------------------
 1964|     46|	}
 1965|     46|}
zend_ast.c:zend_ast_export_str:
 1580|     11|{
 1581|     11|	size_t i;
 1582|       |
 1583|    428|	for (i = 0; i < ZSTR_LEN(s); i++) {
  ------------------
  |  |   68|    428|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1583:14): [True: 417, False: 11]
  ------------------
 1584|    417|		unsigned char c = ZSTR_VAL(s)[i];
  ------------------
  |  |   67|    417|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1585|    417|		if (c == '\'' || c == '\\') {
  ------------------
  |  Branch (1585:7): [True: 10, False: 407]
  |  Branch (1585:20): [True: 27, False: 380]
  ------------------
 1586|     37|			smart_str_appendc(str, '\\');
 1587|     37|			smart_str_appendc(str, c);
 1588|    380|		} else {
 1589|    380|			smart_str_appendc(str, c);
 1590|    380|		}
 1591|    417|	}
 1592|     11|}
zend_ast.c:zend_ast_export_attributes:
 2000|      1|static ZEND_COLD void zend_ast_export_attributes(smart_str *str, zend_ast *ast, int indent, bool newlines) {
 2001|      1|	const zend_ast_list *list = zend_ast_get_list(ast);
 2002|      1|	uint32_t i;
 2003|       |
 2004|      2|	for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (2004:14): [True: 1, False: 1]
  ------------------
 2005|      1|		smart_str_appends(str, "#[");
 2006|      1|		zend_ast_export_attribute_group(str, list->child[i], indent);
 2007|      1|		smart_str_appendc(str, ']');
 2008|       |
 2009|      1|		if (newlines) {
  ------------------
  |  Branch (2009:7): [True: 1, False: 0]
  ------------------
 2010|      1|			smart_str_appendc(str, '\n');
 2011|      1|			zend_ast_export_indent(str, indent);
 2012|      1|		} else {
 2013|      0|			smart_str_appendc(str, ' ');
 2014|      0|		}
 2015|      1|	}
 2016|      1|}
zend_ast.c:zend_ast_export_attribute_group:
 1982|      1|static ZEND_COLD void zend_ast_export_attribute_group(smart_str *str, zend_ast *ast, int indent) {
 1983|      1|	const zend_ast_list *list = zend_ast_get_list(ast);
 1984|      2|	for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (1984:23): [True: 1, False: 1]
  ------------------
 1985|      1|		const zend_ast *attr = list->child[i];
 1986|       |
 1987|      1|		if (i) {
  ------------------
  |  Branch (1987:7): [True: 0, False: 1]
  ------------------
 1988|      0|			smart_str_appends(str, ", ");
 1989|      0|		}
 1990|      1|		zend_ast_export_ns_name(str, attr->child[0], 0, indent);
 1991|       |
 1992|      1|		if (attr->child[1]) {
  ------------------
  |  Branch (1992:7): [True: 1, False: 0]
  ------------------
 1993|      1|			smart_str_appendc(str, '(');
 1994|      1|			zend_ast_export_ex(str, attr->child[1], 0, indent);
 1995|      1|			smart_str_appendc(str, ')');
 1996|      1|		}
 1997|      1|	}
 1998|      1|}
zend_ast.c:zend_ast_export_visibility:
 2018|     14|static ZEND_COLD void zend_ast_export_visibility(smart_str *str, uint32_t flags, zend_modifier_target target) {
 2019|     14|	if (flags & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|     14|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2019:6): [True: 5, False: 9]
  ------------------
 2020|      5|		smart_str_appends(str, "public ");
 2021|      9|	} else if (flags & ZEND_ACC_PROTECTED) {
  ------------------
  |  |  220|      9|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2021:13): [True: 0, False: 9]
  ------------------
 2022|      0|		smart_str_appends(str, "protected ");
 2023|      9|	} else if (flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      9|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2023:13): [True: 0, False: 9]
  ------------------
 2024|      0|		smart_str_appends(str, "private ");
 2025|      0|	}
 2026|       |
 2027|     14|	if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (2027:6): [True: 0, False: 14]
  |  Branch (2027:49): [True: 2, False: 12]
  ------------------
 2028|      2|		if (flags & ZEND_ACC_PRIVATE_SET) {
  ------------------
  |  |  275|      2|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  |  Branch (2028:7): [True: 0, False: 2]
  ------------------
 2029|      0|			smart_str_appends(str, "private(set) ");
 2030|      2|		} else if (flags & ZEND_ACC_PROTECTED_SET) {
  ------------------
  |  |  274|      2|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  |  Branch (2030:14): [True: 0, False: 2]
  ------------------
 2031|      0|			smart_str_appends(str, "protected(set) ");
 2032|      2|		} else if (flags & ZEND_ACC_PUBLIC_SET) {
  ------------------
  |  |  273|      2|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
  |  Branch (2032:14): [True: 0, False: 2]
  ------------------
 2033|      0|			smart_str_appends(str, "public(set) ");
 2034|      0|		}
 2035|      2|	}
 2036|     14|}
zend_ast.c:zend_ast_export_type:
 2038|      2|static ZEND_COLD void zend_ast_export_type(smart_str *str, zend_ast *ast, int indent) {
 2039|      2|	if (ast->kind == ZEND_AST_TYPE_UNION) {
  ------------------
  |  Branch (2039:6): [True: 0, False: 2]
  ------------------
 2040|      0|		const zend_ast_list *list = zend_ast_get_list(ast);
 2041|      0|		for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (2041:24): [True: 0, False: 0]
  ------------------
 2042|      0|			if (i != 0) {
  ------------------
  |  Branch (2042:8): [True: 0, False: 0]
  ------------------
 2043|      0|				smart_str_appendc(str, '|');
 2044|      0|			}
 2045|      0|			zend_ast_export_type(str, list->child[i], indent);
 2046|      0|		}
 2047|      0|		return;
 2048|      0|	}
 2049|      2|	if (ast->kind == ZEND_AST_TYPE_INTERSECTION) {
  ------------------
  |  Branch (2049:6): [True: 0, False: 2]
  ------------------
 2050|      0|		const zend_ast_list *list = zend_ast_get_list(ast);
 2051|      0|		for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (2051:24): [True: 0, False: 0]
  ------------------
 2052|      0|			if (i != 0) {
  ------------------
  |  Branch (2052:8): [True: 0, False: 0]
  ------------------
 2053|      0|				smart_str_appendc(str, '&');
 2054|      0|			}
 2055|      0|			zend_ast_export_type(str, list->child[i], indent);
 2056|      0|		}
 2057|      0|		return;
 2058|      0|	}
 2059|      2|	if (ast->attr & ZEND_TYPE_NULLABLE) {
  ------------------
  |  | 1067|      2|#define ZEND_TYPE_NULLABLE (1<<8)
  ------------------
  |  Branch (2059:6): [True: 0, False: 2]
  ------------------
 2060|      0|		smart_str_appendc(str, '?');
 2061|      0|	}
 2062|      2|	zend_ast_export_ns_name(str, ast, 0, indent);
 2063|      2|}
zend_ast.c:zend_ast_export_stmt:
 1824|     23|{
 1825|     23|	if (!ast) {
  ------------------
  |  Branch (1825:6): [True: 0, False: 23]
  ------------------
 1826|      0|		return;
 1827|      0|	}
 1828|       |
 1829|     23|	if (ast->kind == ZEND_AST_STMT_LIST ||
  ------------------
  |  Branch (1829:6): [True: 15, False: 8]
  ------------------
 1830|     15|	    ast->kind == ZEND_AST_TRAIT_ADAPTATIONS) {
  ------------------
  |  Branch (1830:6): [True: 0, False: 8]
  ------------------
 1831|     15|		const zend_ast_list *list = (const zend_ast_list*)ast;
 1832|     15|		uint32_t i = 0;
 1833|       |
 1834|     23|		while (i < list->children) {
  ------------------
  |  Branch (1834:10): [True: 8, False: 15]
  ------------------
 1835|      8|			ast = list->child[i];
 1836|      8|			zend_ast_export_stmt(str, ast, indent);
 1837|      8|			i++;
 1838|      8|		}
 1839|     15|	} else {
 1840|      8|		zend_ast_export_indent(str, indent);
 1841|      8|		zend_ast_export_ex(str, ast, 0, indent);
 1842|      8|		switch (ast->kind) {
 1843|      0|			case ZEND_AST_LABEL:
  ------------------
  |  Branch (1843:4): [True: 0, False: 8]
  ------------------
 1844|      0|			case ZEND_AST_IF:
  ------------------
  |  Branch (1844:4): [True: 0, False: 8]
  ------------------
 1845|      0|			case ZEND_AST_SWITCH:
  ------------------
  |  Branch (1845:4): [True: 0, False: 8]
  ------------------
 1846|      0|			case ZEND_AST_WHILE:
  ------------------
  |  Branch (1846:4): [True: 0, False: 8]
  ------------------
 1847|      0|			case ZEND_AST_TRY:
  ------------------
  |  Branch (1847:4): [True: 0, False: 8]
  ------------------
 1848|      0|			case ZEND_AST_FOR:
  ------------------
  |  Branch (1848:4): [True: 0, False: 8]
  ------------------
 1849|      0|			case ZEND_AST_FOREACH:
  ------------------
  |  Branch (1849:4): [True: 0, False: 8]
  ------------------
 1850|      0|			case ZEND_AST_FUNC_DECL:
  ------------------
  |  Branch (1850:4): [True: 0, False: 8]
  ------------------
 1851|      2|			case ZEND_AST_METHOD:
  ------------------
  |  Branch (1851:4): [True: 2, False: 6]
  ------------------
 1852|      3|			case ZEND_AST_CLASS:
  ------------------
  |  Branch (1852:4): [True: 1, False: 7]
  ------------------
 1853|      3|			case ZEND_AST_USE_TRAIT:
  ------------------
  |  Branch (1853:4): [True: 0, False: 8]
  ------------------
 1854|      3|			case ZEND_AST_NAMESPACE:
  ------------------
  |  Branch (1854:4): [True: 0, False: 8]
  ------------------
 1855|      3|			case ZEND_AST_DECLARE:
  ------------------
  |  Branch (1855:4): [True: 0, False: 8]
  ------------------
 1856|      3|				break;
 1857|      0|			case ZEND_AST_PROP_GROUP: {
  ------------------
  |  Branch (1857:4): [True: 0, False: 8]
  ------------------
 1858|      0|				const zend_ast *first_prop = zend_ast_get_list(ast->child[1])->child[0];
 1859|      0|				const zend_ast *hook_list = first_prop->child[3];
 1860|      0|				if (hook_list == NULL) {
  ------------------
  |  Branch (1860:9): [True: 0, False: 0]
  ------------------
 1861|      0|					smart_str_appendc(str, ';');
 1862|      0|				}
 1863|      0|				break;
 1864|      3|			}
 1865|      5|			default:
  ------------------
  |  Branch (1865:4): [True: 5, False: 3]
  ------------------
 1866|      5|				smart_str_appendc(str, ';');
 1867|      5|				break;
 1868|      8|		}
 1869|      8|		smart_str_appendc(str, '\n');
 1870|      8|	}
 1871|     23|}
zend_ast.c:zend_ast_export_indent:
 1640|     24|{
 1641|     36|	while (indent > 0) {
  ------------------
  |  Branch (1641:9): [True: 12, False: 24]
  ------------------
 1642|     12|		smart_str_appends(str, "    ");
 1643|     12|		indent--;
 1644|     12|	}
 1645|     24|}
zend_ast.c:zend_ast_export_class_no_header:
 1967|      9|static ZEND_COLD void zend_ast_export_class_no_header(smart_str *str, const zend_ast_decl *decl, int indent) {
 1968|      9|	if (decl->child[0]) {
  ------------------
  |  Branch (1968:6): [True: 1, False: 8]
  ------------------
 1969|      1|		smart_str_appends(str, " extends ");
 1970|      1|		zend_ast_export_ns_name(str, decl->child[0], 0, indent);
 1971|      1|	}
 1972|      9|	if (decl->child[1]) {
  ------------------
  |  Branch (1972:6): [True: 0, False: 9]
  ------------------
 1973|      0|		smart_str_appends(str, " implements ");
 1974|      0|		zend_ast_export_ex(str, decl->child[1], 0, indent);
 1975|      0|	}
 1976|      9|	smart_str_appends(str, " {\n");
 1977|      9|	zend_ast_export_stmt(str, decl->child[2], indent + 1);
 1978|      9|	zend_ast_export_indent(str, indent);
 1979|      9|	smart_str_appendc(str, '}');
 1980|      9|}
zend_ast.c:zend_ast_export_list:
 1757|     89|{
 1758|     89|	zend_ast_export_list_ex(str, list, separator, priority, indent, list->children);
 1759|     89|}
zend_ast.c:zend_ast_export_encaps_list:
 1762|     38|{
 1763|     38|	uint32_t i = 0;
 1764|     38|	zend_ast *ast;
 1765|       |
 1766|    173|	while (i < list->children) {
  ------------------
  |  Branch (1766:9): [True: 135, False: 38]
  ------------------
 1767|    135|		ast = list->child[i];
 1768|    135|		if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (1768:7): [True: 81, False: 54]
  ------------------
 1769|     81|			const zval *zv = zend_ast_get_zval(ast);
 1770|       |
 1771|     81|			ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|     81|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1771:4): [True: 0, False: 81]
  |  Branch (1771:4): [True: 81, False: 0]
  ------------------
 1772|     81|			zend_ast_export_qstr(str, quote, Z_STR_P(zv));
  ------------------
  |  |  982|     81|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     81|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1773|     81|		} else if (ast->kind == ZEND_AST_VAR &&
  ------------------
  |  Branch (1773:14): [True: 52, False: 2]
  ------------------
 1774|     52|		           ast->child[0]->kind == ZEND_AST_ZVAL &&
  ------------------
  |  Branch (1774:14): [True: 52, False: 0]
  ------------------
 1775|     52|		           (i + 1 == list->children ||
  ------------------
  |  Branch (1775:15): [True: 4, False: 48]
  ------------------
 1776|     48|		            list->child[i + 1]->kind != ZEND_AST_ZVAL ||
  ------------------
  |  Branch (1776:15): [True: 2, False: 46]
  ------------------
 1777|     46|		            !zend_ast_var_needs_braces(
  ------------------
  |  Branch (1777:15): [True: 46, False: 0]
  ------------------
 1778|     46|		                *Z_STRVAL_P(
  ------------------
  |  |  985|     46|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     46|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     46|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1779|     52|		                    zend_ast_get_zval(list->child[i + 1]))))) {
 1780|     52|			zend_ast_export_ex(str, ast, 0, indent);
 1781|     52|		} else {
 1782|      2|			smart_str_appendc(str, '{');
 1783|      2|			zend_ast_export_ex(str, ast, 0, indent);
 1784|      2|			smart_str_appendc(str, '}');
 1785|      2|		}
 1786|    135|		i++;
 1787|    135|	}
 1788|     38|}
zend_ast.c:zend_ast_var_needs_braces:
 1718|     46|{
 1719|     46|	return ch == '[' || zend_ast_valid_var_char(ch);
  ------------------
  |  Branch (1719:9): [True: 0, False: 46]
  |  Branch (1719:22): [True: 0, False: 46]
  ------------------
 1720|     46|}
zend_ast.c:zend_ast_valid_var_char:
 1679|     46|{
 1680|     46|	unsigned char c = (unsigned char)ch;
 1681|       |
 1682|     46|	if (c != '_' && c < 127 &&
  ------------------
  |  Branch (1682:6): [True: 46, False: 0]
  |  Branch (1682:18): [True: 46, False: 0]
  ------------------
 1683|     46|	    (c < '0' || c > '9') &&
  ------------------
  |  Branch (1683:7): [True: 40, False: 6]
  |  Branch (1683:18): [True: 6, False: 0]
  ------------------
 1684|     46|	    (c < 'A' || c > 'Z') &&
  ------------------
  |  Branch (1684:7): [True: 43, False: 3]
  |  Branch (1684:18): [True: 3, False: 0]
  ------------------
 1685|     46|	    (c < 'a' || c > 'z')) {
  ------------------
  |  Branch (1685:7): [True: 46, False: 0]
  |  Branch (1685:18): [True: 0, False: 0]
  ------------------
 1686|     46|		return false;
 1687|     46|	}
 1688|      0|	return true;
 1689|     46|}
zend_ast.c:zend_ast_export_list_ex:
 1743|     89|{
 1744|     89|	ZEND_ASSERT(children <= list->children);
  ------------------
  |  |  112|     89|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1744:2): [True: 0, False: 89]
  |  Branch (1744:2): [True: 89, False: 0]
  ------------------
 1745|     89|	uint32_t i = 0;
 1746|       |
 1747|    179|	while (i < children) {
  ------------------
  |  Branch (1747:9): [True: 90, False: 89]
  ------------------
 1748|     90|		if (i != 0 && separator) {
  ------------------
  |  Branch (1748:7): [True: 13, False: 77]
  |  Branch (1748:17): [True: 13, False: 0]
  ------------------
 1749|     13|			smart_str_appends(str, ", ");
 1750|     13|		}
 1751|     90|		zend_ast_export_ex(str, list->child[i], priority, indent);
 1752|     90|		i++;
 1753|     90|	}
 1754|     89|}
zend_ast.c:zend_ast_export_var:
 1723|     60|{
 1724|     60|	if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (1724:6): [True: 60, False: 0]
  ------------------
 1725|     60|		zval *zv = zend_ast_get_zval(ast);
 1726|     60|		if (Z_TYPE_P(zv) == IS_STRING &&
  ------------------
  |  |  669|     60|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     60|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_STRING &&
  ------------------
  |  |  612|    120|#define IS_STRING					6
  ------------------
  |  Branch (1726:7): [True: 60, False: 0]
  ------------------
 1727|     60|		    zend_ast_valid_var_name(Z_STRVAL_P(zv), Z_STRLEN_P(zv))) {
  ------------------
  |  |  985|     60|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     60|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     60|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		    zend_ast_valid_var_name(Z_STRVAL_P(zv), Z_STRLEN_P(zv))) {
  ------------------
  |  |  988|     60|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     60|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     60|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1727:7): [True: 60, False: 0]
  ------------------
 1728|     60|			smart_str_append(str, Z_STR_P(zv));
  ------------------
  |  |  982|     60|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     60|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1729|     60|			return;
 1730|     60|		}
 1731|     60|	} else if (ast->kind == ZEND_AST_VAR) {
  ------------------
  |  Branch (1731:13): [True: 0, False: 0]
  ------------------
 1732|      0|		zend_ast_export_ex(str, ast, 0, indent);
 1733|      0|		return;
 1734|      0|	}
 1735|      0|	smart_str_appendc(str, '{');
 1736|      0|	zend_ast_export_name(str, ast, 0, indent);
 1737|      0|	smart_str_appendc(str, '}');
 1738|      0|}
zend_ast.c:zend_ast_valid_var_name:
 1692|     60|{
 1693|     60|	unsigned char c;
 1694|     60|	size_t i;
 1695|       |
 1696|     60|	if (len == 0) {
  ------------------
  |  Branch (1696:6): [True: 0, False: 60]
  ------------------
 1697|      0|		return false;
 1698|      0|	}
 1699|     60|	c = (unsigned char)s[0];
 1700|     60|	if (c != '_' && c < 127 &&
  ------------------
  |  Branch (1700:6): [True: 60, False: 0]
  |  Branch (1700:18): [True: 27, False: 33]
  ------------------
 1701|     27|	    (c < 'A' || c > 'Z') &&
  ------------------
  |  Branch (1701:7): [True: 0, False: 27]
  |  Branch (1701:18): [True: 24, False: 3]
  ------------------
 1702|     24|	    (c < 'a' || c > 'z')) {
  ------------------
  |  Branch (1702:7): [True: 0, False: 24]
  |  Branch (1702:18): [True: 0, False: 24]
  ------------------
 1703|      0|		return false;
 1704|      0|	}
 1705|    389|	for (i = 1; i < len; i++) {
  ------------------
  |  Branch (1705:14): [True: 329, False: 60]
  ------------------
 1706|    329|		c = (unsigned char)s[i];
 1707|    329|		if (c != '_' && c < 127 &&
  ------------------
  |  Branch (1707:7): [True: 329, False: 0]
  |  Branch (1707:19): [True: 287, False: 42]
  ------------------
 1708|    287|		    (c < '0' || c > '9') &&
  ------------------
  |  Branch (1708:8): [True: 0, False: 287]
  |  Branch (1708:19): [True: 283, False: 4]
  ------------------
 1709|    283|		    (c < 'A' || c > 'Z') &&
  ------------------
  |  Branch (1709:8): [True: 0, False: 283]
  |  Branch (1709:19): [True: 47, False: 236]
  ------------------
 1710|     47|		    (c < 'a' || c > 'z')) {
  ------------------
  |  Branch (1710:8): [True: 0, False: 47]
  |  Branch (1710:19): [True: 0, False: 47]
  ------------------
 1711|      0|			return false;
 1712|      0|		}
 1713|    329|	}
 1714|     60|	return true;
 1715|     60|}
zend_ast.c:zend_ast_export_ns_name:
 1661|    120|{
 1662|    120|	if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (1662:6): [True: 113, False: 7]
  ------------------
 1663|    113|		const zval *zv = zend_ast_get_zval(ast);
 1664|       |
 1665|    113|		if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|    113|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    113|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|    113|#define IS_STRING					6
  ------------------
  |  Branch (1665:7): [True: 113, False: 0]
  ------------------
 1666|    113|		    if (ast->attr == ZEND_NAME_FQ) {
  ------------------
  |  | 1060|    113|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (1666:11): [True: 1, False: 112]
  ------------------
 1667|      1|				smart_str_appendc(str, '\\');
 1668|    112|		    } else if (ast->attr == ZEND_NAME_RELATIVE) {
  ------------------
  |  | 1062|    112|#define ZEND_NAME_RELATIVE 2
  ------------------
  |  Branch (1668:18): [True: 0, False: 112]
  ------------------
 1669|      0|				smart_str_appends(str, "namespace\\");
 1670|      0|		    }
 1671|    113|			smart_str_append(str, Z_STR_P(zv));
  ------------------
  |  |  982|    113|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    113|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1672|    113|			return;
 1673|    113|		}
 1674|    113|	}
 1675|      7|	zend_ast_export_ex(str, ast, priority, indent);
 1676|      7|}
zend_ast.c:zend_ast_export_qstr:
 1595|     82|{
 1596|     82|	size_t i;
 1597|       |
 1598|  3.36k|	for (i = 0; i < ZSTR_LEN(s); i++) {
  ------------------
  |  |   68|  3.36k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1598:14): [True: 3.27k, False: 82]
  ------------------
 1599|  3.27k|		unsigned char c = ZSTR_VAL(s)[i];
  ------------------
  |  |   67|  3.27k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1600|  3.27k|		if (c < ' ') {
  ------------------
  |  Branch (1600:7): [True: 1.16k, False: 2.11k]
  ------------------
 1601|  1.16k|			switch (c) {
 1602|     65|				case '\n':
  ------------------
  |  Branch (1602:5): [True: 65, False: 1.09k]
  ------------------
 1603|     65|					smart_str_appends(str, "\\n");
 1604|     65|					break;
 1605|      1|				case '\r':
  ------------------
  |  Branch (1605:5): [True: 1, False: 1.15k]
  ------------------
 1606|      1|					smart_str_appends(str, "\\r");
 1607|      1|					break;
 1608|     21|				case '\t':
  ------------------
  |  Branch (1608:5): [True: 21, False: 1.13k]
  ------------------
 1609|     21|					smart_str_appends(str, "\\t");
 1610|     21|					break;
 1611|     31|				case '\f':
  ------------------
  |  Branch (1611:5): [True: 31, False: 1.12k]
  ------------------
 1612|     31|					smart_str_appends(str, "\\f");
 1613|     31|					break;
 1614|    204|				case '\v':
  ------------------
  |  Branch (1614:5): [True: 204, False: 956]
  ------------------
 1615|    204|					smart_str_appends(str, "\\v");
 1616|    204|					break;
 1617|       |#ifdef ZEND_WIN32
 1618|       |				case VK_ESCAPE:
 1619|       |#else
 1620|      4|				case '\e':
  ------------------
  |  Branch (1620:5): [True: 4, False: 1.15k]
  ------------------
 1621|      4|#endif
 1622|      4|					smart_str_appends(str, "\\e");
 1623|      4|					break;
 1624|    834|				default:
  ------------------
  |  Branch (1624:5): [True: 834, False: 326]
  ------------------
 1625|    834|					smart_str_appends(str, "\\0");
 1626|    834|					smart_str_appendc(str, '0' + (c / 8));
 1627|    834|					smart_str_appendc(str, '0' + (c % 8));
 1628|    834|					break;
 1629|  1.16k|			}
 1630|  2.11k|		} else {
 1631|  2.11k|			if (c == quote || c == '$' || c == '\\') {
  ------------------
  |  Branch (1631:8): [True: 0, False: 2.11k]
  |  Branch (1631:22): [True: 21, False: 2.09k]
  |  Branch (1631:34): [True: 8, False: 2.09k]
  ------------------
 1632|     29|				smart_str_appendc(str, '\\');
 1633|     29|			}
 1634|  2.11k|			smart_str_appendc(str, c);
 1635|  2.11k|		}
 1636|  3.27k|	}
 1637|     82|}
zend_ast.c:zend_ast_export_name:
 1648|      3|{
 1649|      3|	if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (1649:6): [True: 3, False: 0]
  ------------------
 1650|      3|		const zval *zv = zend_ast_get_zval(ast);
 1651|       |
 1652|      3|		if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (1652:7): [True: 3, False: 0]
  ------------------
 1653|      3|			smart_str_append(str, Z_STR_P(zv));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1654|      3|			return;
 1655|      3|		}
 1656|      3|	}
 1657|      0|	zend_ast_export_ex(str, ast, priority, indent);
 1658|      0|}

zend_API.c:zend_ast_get_list:
  375|      1|static zend_always_inline zend_ast_list *zend_ast_get_list(zend_ast *ast) {
  376|      1|	ZEND_ASSERT(zend_ast_is_list(ast));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (376:2): [True: 0, False: 1]
  |  Branch (376:2): [True: 1, False: 0]
  ------------------
  377|      1|	return (zend_ast_list *) ast;
  378|      1|}
zend_API.c:zend_ast_is_list:
  372|      1|static zend_always_inline bool zend_ast_is_list(const zend_ast *ast) {
  373|      1|	return (ast->kind >> ZEND_AST_IS_LIST_SHIFT) & 1;
  ------------------
  |  |   31|      1|#define ZEND_AST_IS_LIST_SHIFT      7
  ------------------
  374|      1|}
zend_ast.c:zend_ast_get_str:
  384|    604|static zend_always_inline zend_string *zend_ast_get_str(zend_ast *ast) {
  385|    604|	const zval *zv = zend_ast_get_zval(ast);
  386|    604|	ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|    604|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (386:2): [True: 0, False: 604]
  |  Branch (386:2): [True: 604, False: 0]
  ------------------
  387|    604|	return Z_STR_P(zv);
  ------------------
  |  |  982|    604|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    604|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  388|    604|}
zend_ast.c:zend_ast_size:
  360|  44.3k|static zend_always_inline size_t zend_ast_size(uint32_t children) {
  361|       |	return offsetof(zend_ast, child) + (sizeof(zend_ast *) * children);
  362|  44.3k|}
zend_ast.c:zend_ast_get_lineno:
  407|  56.9k|static zend_always_inline uint32_t zend_ast_get_lineno(zend_ast *ast) {
  408|  56.9k|	if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (408:6): [True: 31.9k, False: 25.0k]
  ------------------
  409|  31.9k|		const zval *zv = zend_ast_get_zval(ast);
  410|  31.9k|		return Z_LINENO_P(zv);
  ------------------
  |  |  687|  31.9k|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|  31.9k|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  411|  31.9k|	} else if (ast->kind == ZEND_AST_CONSTANT) {
  ------------------
  |  Branch (411:13): [True: 102, False: 24.9k]
  ------------------
  412|    102|		const zval *zv = &((const zend_ast_zval *) ast)->val;
  413|    102|		return Z_LINENO_P(zv);
  ------------------
  |  |  687|    102|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|    102|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  414|  24.9k|	} else {
  415|  24.9k|		return ast->lineno;
  416|  24.9k|	}
  417|  56.9k|}
zend_ast.c:zend_ast_get_zval:
  380|  75.3k|static zend_always_inline zval *zend_ast_get_zval(zend_ast *ast) {
  381|  75.3k|	ZEND_ASSERT(ast->kind == ZEND_AST_ZVAL);
  ------------------
  |  |  112|  75.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (381:2): [True: 0, False: 75.3k]
  |  Branch (381:2): [True: 75.3k, False: 0]
  ------------------
  382|  75.3k|	return &((zend_ast_zval *) ast)->val;
  383|  75.3k|}
zend_ast.c:zend_ast_create_binary_op:
  419|    304|static zend_always_inline zend_ast *zend_ast_create_binary_op(uint32_t opcode, zend_ast *op0, zend_ast *op1) {
  420|    304|	return zend_ast_create_ex(ZEND_AST_BINARY_OP, opcode, op0, op1);
  ------------------
  |  |  318|    304|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    304|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    304|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  421|    304|}
zend_ast.c:zend_ast_create_ex_2:
  286|    304|static zend_always_inline zend_ast * zend_ast_create_ex_2(zend_ast_kind kind, zend_ast_attr attr, zend_ast *child1, zend_ast *child2) {
  287|    304|	zend_ast *ast = zend_ast_create_2(kind, child1, child2);
  288|    304|	ast->attr = attr;
  289|    304|	return ast;
  290|    304|}
zend_ast.c:zend_ast_get_list:
  375|  51.2k|static zend_always_inline zend_ast_list *zend_ast_get_list(zend_ast *ast) {
  376|  51.2k|	ZEND_ASSERT(zend_ast_is_list(ast));
  ------------------
  |  |  112|  51.2k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (376:2): [True: 0, False: 51.2k]
  |  Branch (376:2): [True: 51.2k, False: 0]
  ------------------
  377|  51.2k|	return (zend_ast_list *) ast;
  378|  51.2k|}
zend_ast.c:zend_ast_get_num_children:
  401|  42.8k|static zend_always_inline uint32_t zend_ast_get_num_children(const zend_ast *ast) {
  402|  42.8k|	ZEND_ASSERT(!zend_ast_is_list(ast));
  ------------------
  |  |  112|  42.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (402:2): [True: 0, False: 42.8k]
  |  Branch (402:2): [True: 42.8k, False: 0]
  ------------------
  403|  42.8k|	ZEND_ASSERT(!zend_ast_is_special(ast));
  ------------------
  |  |  112|  42.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (403:2): [True: 0, False: 42.8k]
  |  Branch (403:2): [True: 42.8k, False: 0]
  ------------------
  404|       |
  405|  42.8k|	return ast->kind >> ZEND_AST_NUM_CHILDREN_SHIFT;
  ------------------
  |  |   32|  42.8k|#define ZEND_AST_NUM_CHILDREN_SHIFT 8
  ------------------
  406|  42.8k|}
zend_ast.c:zend_ast_is_special:
  364|  47.3k|static zend_always_inline bool zend_ast_is_special(const zend_ast *ast) {
  365|  47.3k|	return (ast->kind >> ZEND_AST_SPECIAL_SHIFT) & 1;
  ------------------
  |  |   30|  47.3k|#define ZEND_AST_SPECIAL_SHIFT      6
  ------------------
  366|  47.3k|}
zend_ast.c:zend_ast_is_list:
  372|   124k|static zend_always_inline bool zend_ast_is_list(const zend_ast *ast) {
  373|   124k|	return (ast->kind >> ZEND_AST_IS_LIST_SHIFT) & 1;
  ------------------
  |  |   31|   124k|#define ZEND_AST_IS_LIST_SHIFT      7
  ------------------
  374|   124k|}
zend_ast.c:zend_ast_get_constant_name:
  395|    328|static zend_always_inline zend_string *zend_ast_get_constant_name(zend_ast *ast) {
  396|    328|	ZEND_ASSERT(ast->kind == ZEND_AST_CONSTANT);
  ------------------
  |  |  112|    328|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (396:2): [True: 0, False: 328]
  |  Branch (396:2): [True: 328, False: 0]
  ------------------
  397|    328|	ZEND_ASSERT(Z_TYPE(((zend_ast_zval *) ast)->val) == IS_STRING);
  ------------------
  |  |  112|    328|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (397:2): [True: 0, False: 328]
  |  Branch (397:2): [True: 328, False: 0]
  ------------------
  398|    328|	return Z_STR(((zend_ast_zval *) ast)->val);
  ------------------
  |  |  981|    328|#define Z_STR(zval)					(zval).value.str
  ------------------
  399|    328|}
zend_ast.c:zend_ast_get_op_array:
  390|     12|static zend_always_inline zend_ast_op_array *zend_ast_get_op_array(zend_ast *ast) {
  391|     12|	ZEND_ASSERT(ast->kind == ZEND_AST_OP_ARRAY);
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (391:2): [True: 0, False: 12]
  |  Branch (391:2): [True: 12, False: 0]
  ------------------
  392|     12|	return (zend_ast_op_array *) ast;
  393|     12|}
zend_ast.c:zend_ast_is_decl:
  368|  4.52k|static zend_always_inline bool zend_ast_is_decl(const zend_ast *ast) {
  369|  4.52k|	return zend_ast_is_special(ast) && ast->kind >= ZEND_AST_FUNC_DECL;
  ------------------
  |  Branch (369:9): [True: 2.79k, False: 1.73k]
  |  Branch (369:37): [True: 2.79k, False: 0]
  ------------------
  370|  4.52k|}
zend_compile.c:zend_ast_get_list:
  375|  29.8k|static zend_always_inline zend_ast_list *zend_ast_get_list(zend_ast *ast) {
  376|  29.8k|	ZEND_ASSERT(zend_ast_is_list(ast));
  ------------------
  |  |  112|  29.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (376:2): [True: 0, False: 29.8k]
  |  Branch (376:2): [True: 29.8k, False: 0]
  ------------------
  377|  29.8k|	return (zend_ast_list *) ast;
  378|  29.8k|}
zend_compile.c:zend_ast_is_list:
  372|  30.0k|static zend_always_inline bool zend_ast_is_list(const zend_ast *ast) {
  373|  30.0k|	return (ast->kind >> ZEND_AST_IS_LIST_SHIFT) & 1;
  ------------------
  |  |   31|  30.0k|#define ZEND_AST_IS_LIST_SHIFT      7
  ------------------
  374|  30.0k|}
zend_compile.c:zend_ast_get_zval:
  380|  86.0k|static zend_always_inline zval *zend_ast_get_zval(zend_ast *ast) {
  381|  86.0k|	ZEND_ASSERT(ast->kind == ZEND_AST_ZVAL);
  ------------------
  |  |  112|  86.0k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (381:2): [True: 0, False: 86.0k]
  |  Branch (381:2): [True: 86.0k, False: 0]
  ------------------
  382|  86.0k|	return &((zend_ast_zval *) ast)->val;
  383|  86.0k|}
zend_compile.c:zend_ast_get_str:
  384|  11.4k|static zend_always_inline zend_string *zend_ast_get_str(zend_ast *ast) {
  385|  11.4k|	const zval *zv = zend_ast_get_zval(ast);
  386|  11.4k|	ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|  11.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (386:2): [True: 0, False: 11.4k]
  |  Branch (386:2): [True: 11.4k, False: 0]
  ------------------
  387|  11.4k|	return Z_STR_P(zv);
  ------------------
  |  |  982|  11.4k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  11.4k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  388|  11.4k|}
zend_compile.c:zend_ast_get_lineno:
  407|  45.4k|static zend_always_inline uint32_t zend_ast_get_lineno(zend_ast *ast) {
  408|  45.4k|	if (ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (408:6): [True: 12.3k, False: 33.1k]
  ------------------
  409|  12.3k|		const zval *zv = zend_ast_get_zval(ast);
  410|  12.3k|		return Z_LINENO_P(zv);
  ------------------
  |  |  687|  12.3k|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|  12.3k|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  411|  33.1k|	} else if (ast->kind == ZEND_AST_CONSTANT) {
  ------------------
  |  Branch (411:13): [True: 0, False: 33.1k]
  ------------------
  412|      0|		const zval *zv = &((const zend_ast_zval *) ast)->val;
  413|      0|		return Z_LINENO_P(zv);
  ------------------
  |  |  687|      0|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|      0|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  414|  33.1k|	} else {
  415|  33.1k|		return ast->lineno;
  416|  33.1k|	}
  417|  45.4k|}
zend_compile.c:zend_ast_is_special:
  364|    429|static zend_always_inline bool zend_ast_is_special(const zend_ast *ast) {
  365|    429|	return (ast->kind >> ZEND_AST_SPECIAL_SHIFT) & 1;
  ------------------
  |  |   30|    429|#define ZEND_AST_SPECIAL_SHIFT      6
  ------------------
  366|    429|}
zend_compile.c:zend_ast_get_num_children:
  401|     38|static zend_always_inline uint32_t zend_ast_get_num_children(const zend_ast *ast) {
  402|     38|	ZEND_ASSERT(!zend_ast_is_list(ast));
  ------------------
  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (402:2): [True: 0, False: 38]
  |  Branch (402:2): [True: 38, False: 0]
  ------------------
  403|     38|	ZEND_ASSERT(!zend_ast_is_special(ast));
  ------------------
  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (403:2): [True: 0, False: 38]
  |  Branch (403:2): [True: 38, False: 0]
  ------------------
  404|       |
  405|     38|	return ast->kind >> ZEND_AST_NUM_CHILDREN_SHIFT;
  ------------------
  |  |   32|     38|#define ZEND_AST_NUM_CHILDREN_SHIFT 8
  ------------------
  406|     38|}
zend_enum.c:zend_ast_get_zval:
  380|  2.02k|static zend_always_inline zval *zend_ast_get_zval(zend_ast *ast) {
  381|  2.02k|	ZEND_ASSERT(ast->kind == ZEND_AST_ZVAL);
  ------------------
  |  |  112|  2.02k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (381:2): [True: 0, False: 2.02k]
  |  Branch (381:2): [True: 2.02k, False: 0]
  ------------------
  382|  2.02k|	return &((zend_ast_zval *) ast)->val;
  383|  2.02k|}
zend_enum.c:zend_ast_size:
  360|    576|static zend_always_inline size_t zend_ast_size(uint32_t children) {
  361|       |	return offsetof(zend_ast, child) + (sizeof(zend_ast *) * children);
  362|    576|}
zend_execute_API.c:zend_ast_get_constant_name:
  395|     33|static zend_always_inline zend_string *zend_ast_get_constant_name(zend_ast *ast) {
  396|     33|	ZEND_ASSERT(ast->kind == ZEND_AST_CONSTANT);
  ------------------
  |  |  112|     33|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (396:2): [True: 0, False: 33]
  |  Branch (396:2): [True: 33, False: 0]
  ------------------
  397|     33|	ZEND_ASSERT(Z_TYPE(((zend_ast_zval *) ast)->val) == IS_STRING);
  ------------------
  |  |  112|     33|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (397:2): [True: 0, False: 33]
  |  Branch (397:2): [True: 33, False: 0]
  ------------------
  398|     33|	return Z_STR(((zend_ast_zval *) ast)->val);
  ------------------
  |  |  981|     33|#define Z_STR(zval)					(zval).value.str
  ------------------
  399|     33|}
zend_inheritance.c:zend_ast_get_zval:
  380|      3|static zend_always_inline zval *zend_ast_get_zval(zend_ast *ast) {
  381|      3|	ZEND_ASSERT(ast->kind == ZEND_AST_ZVAL);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (381:2): [True: 0, False: 3]
  |  Branch (381:2): [True: 3, False: 0]
  ------------------
  382|      3|	return &((zend_ast_zval *) ast)->val;
  383|      3|}
zend_inheritance.c:zend_ast_get_str:
  384|      2|static zend_always_inline zend_string *zend_ast_get_str(zend_ast *ast) {
  385|      2|	const zval *zv = zend_ast_get_zval(ast);
  386|      2|	ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (386:2): [True: 0, False: 2]
  |  Branch (386:2): [True: 2, False: 0]
  ------------------
  387|      2|	return Z_STR_P(zv);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  388|      2|}
zend_language_parser.c:zend_ast_get_str:
  384|  3.19k|static zend_always_inline zend_string *zend_ast_get_str(zend_ast *ast) {
  385|  3.19k|	const zval *zv = zend_ast_get_zval(ast);
  386|  3.19k|	ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|  3.19k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (386:2): [True: 0, False: 3.19k]
  |  Branch (386:2): [True: 3.19k, False: 0]
  ------------------
  387|  3.19k|	return Z_STR_P(zv);
  ------------------
  |  |  982|  3.19k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  3.19k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  388|  3.19k|}
zend_language_parser.c:zend_ast_get_zval:
  380|  3.19k|static zend_always_inline zval *zend_ast_get_zval(zend_ast *ast) {
  381|  3.19k|	ZEND_ASSERT(ast->kind == ZEND_AST_ZVAL);
  ------------------
  |  |  112|  3.19k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (381:2): [True: 0, False: 3.19k]
  |  Branch (381:2): [True: 3.19k, False: 0]
  ------------------
  382|  3.19k|	return &((zend_ast_zval *) ast)->val;
  383|  3.19k|}
zend_language_parser.c:zend_ast_create_ex_2:
  286|  2.87k|static zend_always_inline zend_ast * zend_ast_create_ex_2(zend_ast_kind kind, zend_ast_attr attr, zend_ast *child1, zend_ast *child2) {
  287|  2.87k|	zend_ast *ast = zend_ast_create_2(kind, child1, child2);
  288|  2.87k|	ast->attr = attr;
  289|  2.87k|	return ast;
  290|  2.87k|}
zend_language_parser.c:zend_ast_create_ex_0:
  276|    345|static zend_always_inline zend_ast * zend_ast_create_ex_0(zend_ast_kind kind, zend_ast_attr attr) {
  277|    345|	zend_ast *ast = zend_ast_create_0(kind);
  278|    345|	ast->attr = attr;
  279|    345|	return ast;
  280|    345|}
zend_language_parser.c:zend_ast_create_assign_op:
  425|    330|static zend_always_inline zend_ast *zend_ast_create_assign_op(uint32_t opcode, zend_ast *op0, zend_ast *op1) {
  426|    330|	return zend_ast_create_ex(ZEND_AST_ASSIGN_OP, opcode, op0, op1);
  ------------------
  |  |  318|    330|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    330|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    330|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|    330|}
zend_language_parser.c:zend_ast_create_binary_op:
  419|  2.47k|static zend_always_inline zend_ast *zend_ast_create_binary_op(uint32_t opcode, zend_ast *op0, zend_ast *op1) {
  420|  2.47k|	return zend_ast_create_ex(ZEND_AST_BINARY_OP, opcode, op0, op1);
  ------------------
  |  |  318|  2.47k|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|  2.47k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  2.47k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  421|  2.47k|}
zend_language_parser.c:zend_ast_create_ex_1:
  281|  1.02k|static zend_always_inline zend_ast * zend_ast_create_ex_1(zend_ast_kind kind, zend_ast_attr attr, zend_ast *child) {
  282|  1.02k|	zend_ast *ast = zend_ast_create_1(kind, child);
  283|  1.02k|	ast->attr = attr;
  284|  1.02k|	return ast;
  285|  1.02k|}
zend_language_parser.c:zend_ast_create_cast:
  428|    111|static zend_always_inline zend_ast *zend_ast_create_cast(uint32_t type, zend_ast *op0) {
  429|    111|	return zend_ast_create_ex(ZEND_AST_CAST, type, op0);
  ------------------
  |  |  318|    111|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    111|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    111|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  430|    111|}
zend_language_parser.c:zend_ast_list_rtrim:
  431|  1.17k|static zend_always_inline zend_ast *zend_ast_list_rtrim(zend_ast *ast) {
  432|  1.17k|	zend_ast_list *list = zend_ast_get_list(ast);
  433|  1.17k|	if (list->children && list->child[list->children - 1] == NULL) {
  ------------------
  |  Branch (433:6): [True: 1.17k, False: 0]
  |  Branch (433:24): [True: 263, False: 907]
  ------------------
  434|    263|		list->children--;
  435|    263|	}
  436|  1.17k|	return ast;
  437|  1.17k|}
zend_language_parser.c:zend_ast_get_list:
  375|  1.17k|static zend_always_inline zend_ast_list *zend_ast_get_list(zend_ast *ast) {
  376|  1.17k|	ZEND_ASSERT(zend_ast_is_list(ast));
  ------------------
  |  |  112|  1.17k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (376:2): [True: 0, False: 1.17k]
  |  Branch (376:2): [True: 1.17k, False: 0]
  ------------------
  377|  1.17k|	return (zend_ast_list *) ast;
  378|  1.17k|}
zend_language_parser.c:zend_ast_is_list:
  372|  1.17k|static zend_always_inline bool zend_ast_is_list(const zend_ast *ast) {
  373|  1.17k|	return (ast->kind >> ZEND_AST_IS_LIST_SHIFT) & 1;
  ------------------
  |  |   31|  1.17k|#define ZEND_AST_IS_LIST_SHIFT      7
  ------------------
  374|  1.17k|}

zend_execute_API.c:zend_atomic_bool_exchange_ex:
  153|  1.56k|static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
  154|  1.56k|	return __c11_atomic_exchange(&obj->value, desired, __ATOMIC_SEQ_CST);
  155|  1.56k|}
zend_execute_API.c:zend_atomic_bool_store_ex:
  177|  67.1k|static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
  178|  67.1k|	__c11_atomic_store(&obj->value, desired, __ATOMIC_SEQ_CST);
  179|  67.1k|}
zend_execute.c:zend_atomic_bool_load_ex:
  169|  49.5k|static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) {
  170|  49.5k|	return __c11_atomic_load(&obj->value, __ATOMIC_SEQ_CST);
  171|  49.5k|}

zend_attribute_attribute_get_flags:
   41|      8|{
   42|       |	// TODO: More proper signature validation: Too many args, incorrect arg names.
   43|      8|	if (attr->argc > 0) {
  ------------------
  |  Branch (43:6): [True: 4, False: 4]
  ------------------
   44|      4|		zval flags;
   45|       |
   46|      4|		if (FAILURE == zend_get_attribute_value(&flags, attr, 0, scope)) {
  ------------------
  |  Branch (46:7): [True: 1, False: 3]
  ------------------
   47|      1|			ZEND_ASSERT(EG(exception));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (47:4): [True: 0, False: 1]
  |  Branch (47:4): [True: 1, False: 0]
  ------------------
   48|      1|			return 0;
   49|      1|		}
   50|       |
   51|      3|		if (Z_TYPE(flags) != IS_LONG) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(flags) != IS_LONG) {
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
  |  Branch (51:7): [True: 1, False: 2]
  ------------------
   52|      1|			zend_throw_error(NULL,
   53|      1|				"Attribute::__construct(): Argument #1 ($flags) must be of type int, %s given",
   54|      1|				zend_zval_value_name(&flags)
   55|      1|			);
   56|      1|			zval_ptr_dtor(&flags);
   57|      1|			return 0;
   58|      1|		}
   59|       |
   60|      2|		uint32_t flags_l = Z_LVAL(flags);
  ------------------
  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
   61|      2|		if (flags_l & ~ZEND_ATTRIBUTE_FLAGS) {
  ------------------
  |  |   34|      2|#define ZEND_ATTRIBUTE_FLAGS				((1<<8) - 1)
  ------------------
  |  Branch (61:7): [True: 0, False: 2]
  ------------------
   62|      0|			zend_throw_error(NULL, "Invalid attribute flags specified");
   63|      0|			return 0;
   64|      0|		}
   65|       |
   66|      2|		return flags_l;
   67|      2|	}
   68|       |
   69|      4|	return ZEND_ATTRIBUTE_TARGET_ALL;
  ------------------
  |  |   32|      4|#define ZEND_ATTRIBUTE_TARGET_ALL			((1<<7) - 1)
  ------------------
   70|      8|}
zim_Attribute___construct:
  132|      3|{
  133|      3|	zend_long flags = ZEND_ATTRIBUTE_TARGET_ALL;
  ------------------
  |  |   32|      3|#define ZEND_ATTRIBUTE_TARGET_ALL			((1<<7) - 1)
  ------------------
  134|       |
  135|      9|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|      9|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      3|	_optional = 1;
  ------------------
  137|      9|		Z_PARAM_LONG(flags)
  ------------------
  |  | 1905|      3|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      3|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      3|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      1|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (137:3): [True: 3, False: 0]
  |  Branch (137:3): [True: 0, False: 0]
  |  Branch (137:3): [True: 0, False: 3]
  |  Branch (137:3): [True: 3, False: 0]
  |  Branch (137:3): [True: 3, False: 0]
  |  Branch (137:3): [True: 0, False: 0]
  |  Branch (137:3): [True: 3, False: 0]
  |  Branch (137:3): [True: 0, False: 0]
  |  Branch (137:3): [True: 0, False: 0]
  |  Branch (137:3): [True: 0, False: 0]
  ------------------
  138|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (138:2): [True: 1, False: 0]
  |  Branch (138:2): [True: 0, False: 0]
  |  Branch (138:2): [True: 1, False: 0]
  |  Branch (138:2): [True: 0, False: 0]
  ------------------
  139|       |
  140|      3|	ZVAL_LONG(OBJ_PROP_NUM(Z_OBJ_P(ZEND_THIS), 0), flags);
  ------------------
  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      3|		zval *__z = (z);				\
  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  141|      3|}
zim_ReturnTypeWillChange___construct:
  144|      2|{
  145|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  146|      2|}
zim_AllowDynamicProperties___construct:
  149|      2|{
  150|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  151|      2|}
zim_SensitiveParameter___construct:
  154|      2|{
  155|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  156|      2|}
zim_SensitiveParameterValue___construct:
  159|     31|{
  160|     31|	zval *value;
  161|       |
  162|     91|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     31|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     31|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     31|		const int _flags = (flags); \
  |  |  |  | 1599|     31|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     31|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     31|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     31|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     31|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     31|		uint32_t _i = 0; \
  |  |  |  | 1603|     31|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     31|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     31|		char *_error = NULL; \
  |  |  |  | 1606|     31|		bool _dummy = 0; \
  |  |  |  | 1607|     31|		bool _optional = 0; \
  |  |  |  | 1608|     31|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     31|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     31|		((void)_i); \
  |  |  |  | 1610|     31|		((void)_real_arg); \
  |  |  |  | 1611|     31|		((void)_arg); \
  |  |  |  | 1612|     31|		((void)_expected_type); \
  |  |  |  | 1613|     31|		((void)_error); \
  |  |  |  | 1614|     31|		((void)_optional); \
  |  |  |  | 1615|     31|		((void)_dummy); \
  |  |  |  | 1616|     31|		\
  |  |  |  | 1617|     31|		do { \
  |  |  |  | 1618|     31|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 29]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     31|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|     31|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     31|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     31|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     29|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  163|    116|		Z_PARAM_ZVAL(value)
  ------------------
  |  | 2116|     29|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     29|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     29|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     29|	++_i; \
  |  |  |  |  |  |  |  | 1654|     29|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     29|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     29|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 29]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     29|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     29|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     29|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 29]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     29|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 29]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     29|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (163:3): [True: 29, False: 0]
  |  Branch (163:3): [True: 0, False: 0]
  |  Branch (163:3): [True: 29, False: 0]
  |  Branch (163:3): [True: 0, False: 0]
  |  Branch (163:3): [True: 29, False: 0]
  |  Branch (163:3): [True: 0, False: 0]
  |  Branch (163:3): [True: 0, False: 29]
  |  Branch (163:3): [True: 29, False: 0]
  |  Branch (163:3): [True: 0, False: 0]
  |  Branch (163:3): [True: 0, False: 0]
  ------------------
  164|    116|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     29|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     29|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     29|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 29]
  |  |  |  |  ------------------
  |  |  |  | 1641|     31|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 29]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     31|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (164:2): [True: 29, False: 0]
  |  Branch (164:2): [True: 0, False: 0]
  |  Branch (164:2): [True: 29, False: 0]
  |  Branch (164:2): [True: 0, False: 0]
  ------------------
  165|       |
  166|     29|	zend_update_property_ex(zend_ce_sensitive_parameter_value, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_VALUE), value);
  ------------------
  |  | 1000|     29|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     29|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  167|     29|}
zim_SensitiveParameterValue_getValue:
  170|      2|{
  171|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  172|       |
  173|      2|	ZVAL_COPY(return_value, OBJ_PROP_NUM(Z_OBJ_P(ZEND_THIS), 0));
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  174|      2|}
zim_Override___construct:
  189|      2|{
  190|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  191|      2|}
zim_Deprecated___construct:
  194|     49|{
  195|     49|	zend_string *message = NULL;
  196|     49|	zend_string *since = NULL;
  197|     49|	zval value;
  198|       |
  199|    147|	ZEND_PARSE_PARAMETERS_START(0, 2)
  ------------------
  |  | 1629|     49|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     49|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     49|		const int _flags = (flags); \
  |  |  |  | 1599|     49|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     49|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     49|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     49|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     49|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     49|		uint32_t _i = 0; \
  |  |  |  | 1603|     49|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     49|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     49|		char *_error = NULL; \
  |  |  |  | 1606|     49|		bool _dummy = 0; \
  |  |  |  | 1607|     49|		bool _optional = 0; \
  |  |  |  | 1608|     49|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     49|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     49|		((void)_i); \
  |  |  |  | 1610|     49|		((void)_real_arg); \
  |  |  |  | 1611|     49|		((void)_arg); \
  |  |  |  | 1612|     49|		((void)_expected_type); \
  |  |  |  | 1613|     49|		((void)_error); \
  |  |  |  | 1614|     49|		((void)_optional); \
  |  |  |  | 1615|     49|		((void)_dummy); \
  |  |  |  | 1616|     49|		\
  |  |  |  | 1617|     49|		do { \
  |  |  |  | 1618|     49|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     98|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     49|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     49|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     49|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     49|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     49|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|    147|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     49|	_optional = 1;
  ------------------
  201|    192|		Z_PARAM_STR_OR_NULL(message)
  ------------------
  |  | 2105|     49|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|     49|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     49|	++_i; \
  |  |  |  |  |  | 1654|     49|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     49|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     49|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 49, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     49|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 47]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     49|	} \
  |  |  |  |  |  | 1659|     49|	_real_arg++; \
  |  |  |  |  |  | 1660|     47|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     47|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 47]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     47|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 47]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     47|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     47|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 44]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      3|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      3|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      3|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      3|			break; \
  |  |  |  | 2099|      3|		}
  |  |  ------------------
  ------------------
  |  Branch (201:3): [True: 49, False: 0]
  |  Branch (201:3): [True: 0, False: 0]
  |  Branch (201:3): [True: 0, False: 49]
  |  Branch (201:3): [True: 49, False: 0]
  |  Branch (201:3): [True: 49, False: 0]
  |  Branch (201:3): [True: 0, False: 0]
  |  Branch (201:3): [True: 49, False: 0]
  |  Branch (201:3): [True: 0, False: 0]
  |  Branch (201:3): [True: 0, False: 0]
  |  Branch (201:3): [True: 0, False: 0]
  ------------------
  202|    196|		Z_PARAM_STR_OR_NULL(since)
  ------------------
  |  | 2105|     47|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|     44|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     44|	++_i; \
  |  |  |  |  |  | 1654|     44|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     44|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     44|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     44|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     44|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 44, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     44|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     44|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 12, False: 32]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     44|	} \
  |  |  |  |  |  | 1659|     44|	_real_arg++; \
  |  |  |  |  |  | 1660|     32|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     32|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     32|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     32|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     32|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (202:3): [True: 44, False: 0]
  |  Branch (202:3): [True: 0, False: 0]
  |  Branch (202:3): [True: 0, False: 44]
  |  Branch (202:3): [True: 44, False: 0]
  |  Branch (202:3): [True: 44, False: 0]
  |  Branch (202:3): [True: 0, False: 0]
  |  Branch (202:3): [True: 44, False: 0]
  |  Branch (202:3): [True: 0, False: 0]
  |  Branch (202:3): [True: 0, False: 0]
  |  Branch (202:3): [True: 0, False: 0]
  ------------------
  203|     49|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     32|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     32|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     32|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  |  | 1641|     49|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 46]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      3|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      3|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      3|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      3|			} \
  |  |  |  | 1645|      3|			failure; \
  |  |  |  | 1646|      3|		} \
  |  |  |  | 1647|     49|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (203:2): [True: 32, False: 0]
  |  Branch (203:2): [True: 0, False: 0]
  |  Branch (203:2): [True: 32, False: 0]
  |  Branch (203:2): [True: 0, False: 0]
  ------------------
  204|       |
  205|     46|	if (message) {
  ------------------
  |  Branch (205:6): [True: 30, False: 16]
  ------------------
  206|     30|		ZVAL_STR(&value, message);
  ------------------
  |  | 1088|     30|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     30|		zval *__z = (z);						\
  |  | 1090|     30|		zend_string *__s = (s);					\
  |  | 1091|     30|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     30|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     30|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     30|		/* interned strings support */			\
  |  | 1093|     30|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     30|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     30|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 29]
  |  |  ------------------
  |  | 1094|     30|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     30|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     59|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     29|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     29|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     29|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     30|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 30]
  |  |  ------------------
  ------------------
  207|     30|	} else {
  208|     16|		ZVAL_NULL(&value);
  ------------------
  |  | 1059|     16|#define ZVAL_NULL(z) do {				\
  |  | 1060|     16|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     16|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  209|     16|	}
  210|     46|	zend_update_property_ex(zend_ce_deprecated, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_MESSAGE), &value);
  ------------------
  |  | 1000|     46|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     46|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  211|       |
  212|       |	/* The assignment might fail due to 'readonly'. */
  213|     46|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 45]
  |  |  ------------------
  ------------------
  214|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (214:3): [True: 0, False: 1]
  |  Branch (214:3): [True: 1, False: 0]
  ------------------
  215|      1|	}
  216|       |
  217|     45|	if (since) {
  ------------------
  |  Branch (217:6): [True: 32, False: 13]
  ------------------
  218|     32|		ZVAL_STR(&value, since);
  ------------------
  |  | 1088|     32|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     32|		zval *__z = (z);						\
  |  | 1090|     32|		zend_string *__s = (s);					\
  |  | 1091|     32|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     32|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     32|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     32|		/* interned strings support */			\
  |  | 1093|     32|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 31, False: 1]
  |  |  ------------------
  |  | 1094|     32|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     31|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     31|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     32|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     33|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
  219|     32|	} else {
  220|     13|		ZVAL_NULL(&value);
  ------------------
  |  | 1059|     13|#define ZVAL_NULL(z) do {				\
  |  | 1060|     13|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     13|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  221|     13|	}
  222|     45|	zend_update_property_ex(zend_ce_deprecated, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_SINCE), &value);
  ------------------
  |  | 1000|     45|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     45|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  223|       |
  224|       |	/* The assignment might fail due to 'readonly'. */
  225|     45|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     45|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 45]
  |  |  ------------------
  ------------------
  226|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (226:3): [True: 0, False: 0]
  |  Branch (226:3): [True: 0, False: 0]
  ------------------
  227|      0|	}
  228|     45|}
zim_NoDiscard___construct:
  245|      8|{
  246|      8|	zend_string *message = NULL;
  247|      8|	zval value;
  248|       |
  249|     24|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     24|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      8|	_optional = 1;
  ------------------
  251|     28|		Z_PARAM_STR_OR_NULL(message)
  ------------------
  |  | 2105|      8|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|      8|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      8|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      8|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      6|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      1|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      1|			break; \
  |  |  |  | 2099|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (251:3): [True: 8, False: 0]
  |  Branch (251:3): [True: 0, False: 0]
  |  Branch (251:3): [True: 0, False: 8]
  |  Branch (251:3): [True: 8, False: 0]
  |  Branch (251:3): [True: 8, False: 0]
  |  Branch (251:3): [True: 0, False: 0]
  |  Branch (251:3): [True: 8, False: 0]
  |  Branch (251:3): [True: 0, False: 0]
  |  Branch (251:3): [True: 0, False: 0]
  |  Branch (251:3): [True: 0, False: 0]
  ------------------
  252|      8|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (252:2): [True: 5, False: 0]
  |  Branch (252:2): [True: 0, False: 0]
  |  Branch (252:2): [True: 5, False: 0]
  |  Branch (252:2): [True: 0, False: 0]
  ------------------
  253|       |
  254|      7|	if (message) {
  ------------------
  |  Branch (254:6): [True: 5, False: 2]
  ------------------
  255|      5|		ZVAL_STR(&value, message);
  ------------------
  |  | 1088|      5|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      5|		zval *__z = (z);						\
  |  | 1090|      5|		zend_string *__s = (s);					\
  |  | 1091|      5|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      5|		/* interned strings support */			\
  |  | 1093|      5|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 5]
  |  |  ------------------
  |  | 1094|      5|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      5|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  256|      5|	} else {
  257|      2|		ZVAL_NULL(&value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  258|      2|	}
  259|      7|	zend_update_property_ex(zend_ce_nodiscard, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_MESSAGE), &value);
  ------------------
  |  | 1000|      7|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  260|       |
  261|       |	/* The assignment might fail due to 'readonly'. */
  262|      7|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
  263|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (263:3): [True: 0, False: 1]
  |  Branch (263:3): [True: 1, False: 0]
  ------------------
  264|      1|	}
  265|      7|}
zend_get_attribute_str:
  303|    296|{
  304|    296|	return get_attribute_str(attributes, str, len, 0);
  305|    296|}
zend_get_parameter_attribute_str:
  313|  72.3k|{
  314|  72.3k|	return get_attribute_str(attributes, str, len, offset + 1);
  315|  72.3k|}
zend_get_attribute_value:
  318|     74|{
  319|     74|	if (i >= attr->argc) {
  ------------------
  |  Branch (319:6): [True: 0, False: 74]
  ------------------
  320|      0|		return FAILURE;
  321|      0|	}
  322|       |
  323|     74|	ZVAL_COPY_OR_DUP(ret, &attr->args[i].value);
  ------------------
  |  | 1457|     74|	do {																\
  |  | 1458|     74|		zval *_z1 = (z);												\
  |  | 1459|     74|		const zval *_z2 = (v);											\
  |  | 1460|     74|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     74|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     74|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     74|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     74|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     74|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     74|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     74|	do {												\
  |  |  |  | 1408|     74|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     74|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     74|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     74|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     74|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     74|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     74|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 74]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     74|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     74|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     74|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 31, False: 43]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|     31|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|     31|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|     50|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 12, False: 19]
  |  |  |  |  |  Branch (456:52): [True: 12, False: 19]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|     31|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|     12|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|     12|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|     19|			} else {													\
  |  | 1469|     19|				zval_copy_ctor_func(_z1);								\
  |  | 1470|     19|			}															\
  |  | 1471|     31|		}																\
  |  | 1472|     74|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 74]
  |  |  ------------------
  ------------------
  324|       |
  325|     74|	if (Z_TYPE_P(ret) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|     74|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     74|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(ret) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     74|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (325:6): [True: 7, False: 67]
  ------------------
  326|      7|		if (SUCCESS != zval_update_constant_ex(ret, scope)) {
  ------------------
  |  Branch (326:7): [True: 1, False: 6]
  ------------------
  327|      1|			zval_ptr_dtor(ret);
  328|      1|			return FAILURE;
  329|      1|		}
  330|      7|	}
  331|       |
  332|     73|	return SUCCESS;
  333|     74|}
zend_get_attribute_object:
  336|     51|{
  337|     51|	zend_execute_data *call = NULL;
  338|       |
  339|     51|	if (filename) {
  ------------------
  |  Branch (339:6): [True: 5, False: 46]
  ------------------
  340|       |		/* Set up dummy call frame that makes it look like the attribute was invoked
  341|       |		 * from where it occurs in the code. */
  342|      5|		zend_function dummy_func;
  343|      5|		zend_op *opline;
  344|       |
  345|      5|		memset(&dummy_func, 0, sizeof(zend_function));
  346|       |
  347|      5|		call = zend_vm_stack_push_call_frame_ex(
  348|      5|			ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_execute_data), sizeof(zval)) +
  ------------------
  |  |   37|      5|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
  349|      5|			ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op), sizeof(zval)) +
  ------------------
  |  |   37|      5|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
  350|      5|			ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_function), sizeof(zval)),
  ------------------
  |  |   37|      5|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
  351|      5|			0, &dummy_func, 0, NULL);
  352|       |
  353|      5|		opline = (zend_op*)(call + 1);
  354|      5|		memset(opline, 0, sizeof(zend_op));
  355|      5|		opline->opcode = ZEND_DO_FCALL;
  ------------------
  |  |  183|      5|#define ZEND_DO_FCALL                        60
  ------------------
  356|      5|		opline->lineno = attribute_data->lineno;
  357|       |
  358|      5|		call->opline = opline;
  359|      5|		call->call = NULL;
  360|      5|		call->return_value = NULL;
  361|      5|		call->func = (zend_function*)(call->opline + 1);
  362|      5|		call->prev_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  363|       |
  364|      5|		memset(call->func, 0, sizeof(zend_function));
  365|      5|		call->func->type = ZEND_USER_FUNCTION;
  366|      5|		call->func->op_array.fn_flags =
  367|      5|			attribute_data->flags & ZEND_ATTRIBUTE_STRICT_TYPES ? ZEND_ACC_STRICT_TYPES : 0;
  ------------------
  |  |   38|      5|#define ZEND_ATTRIBUTE_STRICT_TYPES (1<<1)
  ------------------
              			attribute_data->flags & ZEND_ATTRIBUTE_STRICT_TYPES ? ZEND_ACC_STRICT_TYPES : 0;
  ------------------
  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  ------------------
  |  Branch (367:4): [True: 0, False: 5]
  ------------------
  368|      5|		call->func->op_array.fn_flags |= ZEND_ACC_CALL_VIA_TRAMPOLINE;
  ------------------
  |  |  372|      5|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  369|      5|		call->func->op_array.filename = filename;
  370|       |
  371|      5|		EG(current_execute_data) = call;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  372|      5|	}
  373|       |
  374|     51|	zval *args = NULL;
  375|     51|	HashTable *named_params = NULL;
  376|       |
  377|     51|	zend_result result = FAILURE;
  378|       |
  379|     51|	uint32_t argc = 0;
  380|     51|	if (attribute_data->argc) {
  ------------------
  |  Branch (380:6): [True: 51, False: 0]
  ------------------
  381|     51|		args = emalloc(attribute_data->argc * sizeof(zval));
  ------------------
  |  |  150|     51|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     51|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     51|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     51|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     51|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  382|       |
  383|    121|		for (uint32_t i = 0; i < attribute_data->argc; i++) {
  ------------------
  |  Branch (383:24): [True: 70, False: 51]
  ------------------
  384|     70|			zval val;
  385|     70|			if (FAILURE == zend_get_attribute_value(&val, attribute_data, i, scope)) {
  ------------------
  |  Branch (385:8): [True: 0, False: 70]
  ------------------
  386|      0|				result = FAILURE;
  387|      0|				goto out;
  388|      0|			}
  389|     70|			if (attribute_data->args[i].name) {
  ------------------
  |  Branch (389:8): [True: 54, False: 16]
  ------------------
  390|     54|				if (!named_params) {
  ------------------
  |  Branch (390:9): [True: 37, False: 17]
  ------------------
  391|     37|					named_params = zend_new_array(0);
  ------------------
  |  |  342|     37|	_zend_new_array(size)
  ------------------
  392|     37|				}
  393|     54|				zend_hash_add_new(named_params, attribute_data->args[i].name, &val);
  394|     54|			} else {
  395|     16|				ZVAL_COPY_VALUE(&args[i], &val);
  ------------------
  |  | 1416|     16|	do {												\
  |  | 1417|     16|		zval *_z1 = (z);								\
  |  | 1418|     16|		const zval *_z2 = (v);							\
  |  | 1419|     16|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     16|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     16|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     16|	do {												\
  |  |  |  | 1408|     16|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     16|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  396|     16|				argc++;
  397|     16|			}
  398|     70|		}
  399|     51|	}
  400|       |
  401|     51|	result = object_init_with_constructor(obj, attribute_ce, argc, args, named_params);
  402|       |
  403|     51| out:
  404|     67|	for (uint32_t i = 0; i < argc; i++) {
  ------------------
  |  Branch (404:23): [True: 16, False: 51]
  ------------------
  405|     16|		zval_ptr_dtor(&args[i]);
  406|     16|	}
  407|       |
  408|     51|	efree(args);
  ------------------
  |  |  154|     51|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     51|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     51|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     51|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     51|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  409|       |
  410|     51|	if (named_params) {
  ------------------
  |  Branch (410:6): [True: 37, False: 14]
  ------------------
  411|     37|		zend_array_destroy(named_params);
  412|     37|	}
  413|       |
  414|     51|	if (filename) {
  ------------------
  |  Branch (414:6): [True: 5, False: 46]
  ------------------
  415|      5|		EG(current_execute_data) = call->prev_execute_data;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  416|      5|		zend_vm_stack_free_call_frame(call);
  417|      5|	}
  418|       |
  419|     51|	return result;
  420|     51|}
zend_get_attribute_target_names:
  433|     12|{
  434|     12|	smart_str str = { 0 };
  435|       |
  436|     96|	for (uint32_t i = 0; i < (sizeof(target_names) / sizeof(char *)); i++) {
  ------------------
  |  Branch (436:23): [True: 84, False: 12]
  ------------------
  437|     84|		if (flags & (1 << i)) {
  ------------------
  |  Branch (437:7): [True: 16, False: 68]
  ------------------
  438|     16|			if (smart_str_get_len(&str)) {
  ------------------
  |  Branch (438:8): [True: 4, False: 12]
  ------------------
  439|      4|				smart_str_appends(&str, ", ");
  440|      4|			}
  441|       |
  442|     16|			smart_str_appends(&str, target_names[i]);
  443|     16|		}
  444|     84|	}
  445|       |
  446|     12|	return smart_str_extract(&str);
  447|     12|}
zend_is_attribute_repeated:
  450|    103|{
  451|    103|	zend_attribute *other;
  452|       |
  453|    436|	ZEND_HASH_PACKED_FOREACH_PTR(attributes, other) {
  ------------------
  |  | 1502|    115|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|    103|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|    103|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|    103|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|    103|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|    103|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|    103|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|    103|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    103|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|    216|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 115, False: 101]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|    115|			(void) _idx; \
  |  |  |  |  |  | 1478|    115|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    115|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 115]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1503|    115|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    103|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    103|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (453:2): [True: 0, False: 103]
  |  Branch (453:2): [True: 103, False: 0]
  ------------------
  454|    436|		if (other != attr && other->offset == attr->offset) {
  ------------------
  |  Branch (454:7): [True: 12, False: 103]
  |  Branch (454:24): [True: 12, False: 0]
  ------------------
  455|     12|			if (zend_string_equals(other->lcname, attr->lcname)) {
  ------------------
  |  Branch (455:8): [True: 2, False: 10]
  ------------------
  456|      2|				return 1;
  457|      2|			}
  458|     12|		}
  459|    436|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    115|		} \
  |  | 1102|    103|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 101]
  |  |  ------------------
  ------------------
  460|       |
  461|    101|	return 0;
  462|    103|}
zend_add_attribute:
  490|    295|{
  491|    295|	bool persistent = flags & ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|    295|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  492|    295|	if (*attributes == NULL) {
  ------------------
  |  Branch (492:6): [True: 277, False: 18]
  ------------------
  493|    277|		*attributes = pemalloc(sizeof(HashTable), persistent);
  ------------------
  |  |  188|    277|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    142|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    142|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    142|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    142|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    135|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    135|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    135|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    135|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    135|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 142, False: 135]
  |  |  ------------------
  ------------------
  494|    277|		zend_hash_init(*attributes, 8, NULL, attr_free, persistent);
  ------------------
  |  |  111|    277|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  495|    277|	}
  496|       |
  497|    295|	zend_attribute *attr = pemalloc(ZEND_ATTRIBUTE_SIZE(argc), persistent);
  ------------------
  |  |  188|    295|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    144|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    144|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    144|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    144|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    151|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    151|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    151|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    151|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    151|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 144, False: 151]
  |  |  ------------------
  ------------------
  498|       |
  499|    295|	if (persistent == ((GC_FLAGS(name) & IS_STR_PERSISTENT) != 0)) {
  ------------------
  |  |  777|    295|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    295|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (persistent == ((GC_FLAGS(name) & IS_STR_PERSISTENT) != 0)) {
  ------------------
  |  |  839|    295|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|    295|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
  |  Branch (499:6): [True: 295, False: 0]
  ------------------
  500|    295|		attr->name = zend_string_copy(name);
  501|    295|	} else {
  502|      0|		attr->name = zend_string_dup(name, persistent);
  503|      0|	}
  504|       |
  505|    295|	attr->lcname = zend_string_tolower_ex(attr->name, persistent);
  506|    295|	attr->validation_error = NULL;
  507|    295|	attr->flags = flags;
  508|    295|	attr->lineno = lineno;
  509|    295|	attr->offset = offset;
  510|    295|	attr->argc = argc;
  511|       |
  512|       |	/* Initialize arguments to avoid partial initialization in case of fatal errors. */
  513|    544|	for (uint32_t i = 0; i < argc; i++) {
  ------------------
  |  Branch (513:23): [True: 249, False: 295]
  ------------------
  514|    249|		attr->args[i].name = NULL;
  515|    249|		ZVAL_UNDEF(&attr->args[i].value);
  ------------------
  |  | 1055|    249|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    249|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    249|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    249|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    249|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    249|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 249]
  |  |  ------------------
  ------------------
  516|    249|	}
  517|       |
  518|    295|	zend_hash_next_index_insert_ptr(*attributes, attr);
  519|       |
  520|    295|	return attr;
  521|    295|}
zend_mark_internal_attribute:
  529|     16|{
  530|     16|	zend_internal_attribute *internal_attr;
  531|     16|	zend_attribute *attr;
  532|       |
  533|     16|	if (ce->type != ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (533:6): [True: 0, False: 16]
  ------------------
  534|      0|		zend_error_noreturn(E_ERROR, "Only internal classes can be registered as compiler attribute");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  535|      0|	}
  536|       |
  537|     48|	ZEND_HASH_FOREACH_PTR(ce->attributes, attr) {
  ------------------
  |  | 1133|     16|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|     16|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|     16|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|     16|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|     16|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|     16|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|     16|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|     16|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     16|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 16, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|     16|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|     16|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     16|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  538|     48|		if (zend_string_equals(attr->name, zend_ce_attribute->name)) {
  ------------------
  |  Branch (538:7): [True: 16, False: 0]
  ------------------
  539|     16|			internal_attr = pemalloc(sizeof(zend_internal_attribute), 1);
  ------------------
  |  |  188|     16|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 16, Folded]
  |  |  ------------------
  ------------------
  540|     16|			internal_attr->ce = ce;
  541|     16|			internal_attr->flags = Z_LVAL(attr->args[0].value);
  ------------------
  |  |  975|     16|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  542|     16|			internal_attr->validator = NULL;
  543|       |
  544|     16|			zend_string *lcname = zend_string_tolower_ex(ce->name, 1);
  545|     16|			zend_hash_update_ptr(&internal_attributes, lcname, internal_attr);
  546|     16|			zend_string_release(lcname);
  547|       |
  548|     16|			return internal_attr;
  549|     16|		}
  550|     48|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     16|		} \
  |  | 1102|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  551|       |
  552|      0|	zend_error_noreturn(E_ERROR, "Classes must be first marked as attribute before being able to be registered as internal attribute class");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  553|     16|}
zend_internal_attribute_get:
  564|    293|{
  565|    293|	return zend_hash_find_ptr(&internal_attributes, lcname);
  566|    293|}
zend_register_attribute_ce:
  569|      2|{
  570|      2|	zend_internal_attribute *attr;
  571|       |
  572|      2|	zend_hash_init(&internal_attributes, 8, NULL, free_internal_attribute, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  573|       |
  574|      2|	zend_ce_attribute = register_class_Attribute();
  575|      2|	attr = zend_mark_internal_attribute(zend_ce_attribute);
  576|      2|	attr->validator = validate_attribute;
  577|       |
  578|      2|	zend_ce_return_type_will_change_attribute = register_class_ReturnTypeWillChange();
  579|      2|	zend_mark_internal_attribute(zend_ce_return_type_will_change_attribute);
  580|       |
  581|      2|	zend_ce_allow_dynamic_properties = register_class_AllowDynamicProperties();
  582|      2|	attr = zend_mark_internal_attribute(zend_ce_allow_dynamic_properties);
  583|      2|	attr->validator = validate_allow_dynamic_properties;
  584|       |
  585|      2|	zend_ce_sensitive_parameter = register_class_SensitiveParameter();
  586|      2|	zend_mark_internal_attribute(zend_ce_sensitive_parameter);
  587|       |
  588|      2|	memcpy(&attributes_object_handlers_sensitive_parameter_value, &std_object_handlers, sizeof(zend_object_handlers));
  589|      2|	attributes_object_handlers_sensitive_parameter_value.get_properties_for = attributes_sensitive_parameter_value_get_properties_for;
  590|       |
  591|       |	/* This is not an actual attribute, thus the zend_mark_internal_attribute() call is missing. */
  592|      2|	zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue();
  593|      2|	zend_ce_sensitive_parameter_value->default_object_handlers = &attributes_object_handlers_sensitive_parameter_value;
  594|       |
  595|      2|	zend_ce_override = register_class_Override();
  596|      2|	zend_mark_internal_attribute(zend_ce_override);
  597|       |
  598|      2|	zend_ce_deprecated = register_class_Deprecated();
  599|      2|	attr = zend_mark_internal_attribute(zend_ce_deprecated);
  600|      2|	attr->validator = validate_deprecated;
  601|       |
  602|      2|	zend_ce_nodiscard = register_class_NoDiscard();
  603|      2|	attr = zend_mark_internal_attribute(zend_ce_nodiscard);
  604|      2|	attr->validator = validate_nodiscard;
  605|       |
  606|      2|	zend_ce_delayed_target_validation = register_class_DelayedTargetValidation();
  607|      2|	attr = zend_mark_internal_attribute(zend_ce_delayed_target_validation);
  608|      2|}
zend_attributes.c:get_attribute_str:
  283|  72.6k|{
  284|  72.6k|	if (attributes) {
  ------------------
  |  Branch (284:6): [True: 323, False: 72.3k]
  ------------------
  285|    323|		zend_attribute *attr;
  286|       |
  287|  1.34k|		ZEND_HASH_PACKED_FOREACH_PTR(attributes, attr) {
  ------------------
  |  | 1502|    351|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|    323|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|    323|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|    323|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|    323|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|    323|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|    323|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|    323|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    323|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|    542|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 351, False: 191]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|    351|			(void) _idx; \
  |  |  |  |  |  | 1478|    351|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    351|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 351]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1503|    351|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    323|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    323|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (287:3): [True: 0, False: 323]
  |  Branch (287:3): [True: 323, False: 0]
  ------------------
  288|  1.34k|			if (attr->offset == offset && zend_string_equals_cstr(attr->lcname, str, len)) {
  ------------------
  |  Branch (288:8): [True: 348, False: 3]
  |  Branch (288:34): [True: 132, False: 216]
  ------------------
  289|    132|				return attr;
  290|    132|			}
  291|  1.34k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    351|		} \
  |  | 1102|    323|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 191]
  |  |  ------------------
  ------------------
  292|    323|	}
  293|       |
  294|  72.5k|	return NULL;
  295|  72.6k|}
zend_attributes.c:attr_free:
  465|    118|{
  466|    118|	zend_attribute *attr = Z_PTR_P(v);
  ------------------
  |  | 1053|    118|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    118|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  467|    118|	bool persistent = attr->flags & ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|    118|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  468|       |
  469|    118|	zend_string_release(attr->name);
  470|    118|	zend_string_release(attr->lcname);
  471|    118|	if (attr->validation_error != NULL) {
  ------------------
  |  Branch (471:6): [True: 0, False: 118]
  ------------------
  472|      0|		zend_string_release(attr->validation_error);
  473|      0|	}
  474|       |
  475|    162|	for (uint32_t i = 0; i < attr->argc; i++) {
  ------------------
  |  Branch (475:23): [True: 44, False: 118]
  ------------------
  476|     44|		if (attr->args[i].name) {
  ------------------
  |  Branch (476:7): [True: 8, False: 36]
  ------------------
  477|      8|			zend_string_release(attr->args[i].name);
  478|      8|		}
  479|     44|		if (persistent) {
  ------------------
  |  Branch (479:7): [True: 0, False: 44]
  ------------------
  480|      0|			zval_internal_ptr_dtor(&attr->args[i].value);
  481|     44|		} else {
  482|     44|			zval_ptr_dtor(&attr->args[i].value);
  483|     44|		}
  484|     44|	}
  485|       |
  486|       |	pefree(attr, persistent);
  ------------------
  |  |  190|    118|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    116|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    116|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    116|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    116|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    116|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 2, False: 116]
  |  |  ------------------
  ------------------
  487|    118|}
zend_attributes.c:validate_attribute:
   95|     16|{
   96|     16|	const char *msg = NULL;
   97|     16|	if (scope->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     16|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (97:6): [True: 1, False: 15]
  ------------------
   98|      1|		msg = "Cannot apply #[\\Attribute] to trait %s";
   99|     15|	} else if (scope->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|     15|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (99:13): [True: 1, False: 14]
  ------------------
  100|      1|		msg = "Cannot apply #[\\Attribute] to interface %s";
  101|     14|	} else if (scope->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|     14|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (101:13): [True: 1, False: 13]
  ------------------
  102|      1|		msg = "Cannot apply #[\\Attribute] to enum %s";
  103|     13|	} else if (scope->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  234|     13|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (103:13): [True: 1, False: 12]
  ------------------
  104|      1|		msg = "Cannot apply #[\\Attribute] to abstract class %s";
  105|      1|	}
  106|     16|	if (msg != NULL) {
  ------------------
  |  Branch (106:6): [True: 4, False: 12]
  ------------------
  107|      4|		return zend_strpprintf(0, msg, ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  108|      4|	}
  109|     12|	return NULL;
  110|     16|}
zend_attributes.c:validate_allow_dynamic_properties:
   74|     13|{
   75|     13|	ZEND_ASSERT(scope != NULL);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (75:2): [True: 0, False: 13]
  |  Branch (75:2): [True: 13, False: 0]
  ------------------
   76|     13|	const char *msg = NULL;
   77|     13|	if (scope->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     13|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (77:6): [True: 1, False: 12]
  ------------------
   78|      1|		msg = "Cannot apply #[\\AllowDynamicProperties] to trait %s";
   79|     12|	} else if (scope->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|     12|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (79:13): [True: 1, False: 11]
  ------------------
   80|      1|		msg = "Cannot apply #[\\AllowDynamicProperties] to interface %s";
   81|     11|	} else if (scope->ce_flags & ZEND_ACC_READONLY_CLASS) {
  ------------------
  |  |  311|     11|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (81:13): [True: 2, False: 9]
  ------------------
   82|      2|		msg = "Cannot apply #[\\AllowDynamicProperties] to readonly class %s";
   83|      9|	} else if (scope->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|      9|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (83:13): [True: 1, False: 8]
  ------------------
   84|      1|		msg = "Cannot apply #[\\AllowDynamicProperties] to enum %s";
   85|      1|	}
   86|     13|	if (msg != NULL) {
  ------------------
  |  Branch (86:6): [True: 5, False: 8]
  ------------------
   87|      5|		return zend_strpprintf(0, msg, ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   88|      5|	}
   89|      8|	scope->ce_flags |= ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES;
  ------------------
  |  |  308|      8|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
   90|       |	return NULL;
   91|     13|}
zend_attributes.c:attributes_sensitive_parameter_value_get_properties_for:
  184|      9|{
  185|       |	return NULL;
  186|      9|}
zend_attributes.c:validate_deprecated:
  116|     27|) {
  117|     27|	if (target != ZEND_ATTRIBUTE_TARGET_CLASS) {
  ------------------
  |  |   25|     27|#define ZEND_ATTRIBUTE_TARGET_CLASS			(1<<0)
  ------------------
  |  Branch (117:6): [True: 20, False: 7]
  ------------------
  118|       |		/* Being used for a method or something, validation does not apply */
  119|     20|		return NULL;
  120|     20|	}
  121|      7|	if (!(scope->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  282|      7|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (121:6): [True: 3, False: 4]
  ------------------
  122|      3|		const char *type = zend_get_object_type_case(scope, false);
  123|      3|		return zend_strpprintf(0, "Cannot apply #[\\Deprecated] to %s %s", type, ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|      3|	}
  125|       |
  126|      4|	scope->ce_flags |= ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|      4|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  127|      4|	return NULL;
  128|       |
  129|      7|}
zend_attributes.c:validate_nodiscard:
  232|      8|{
  233|      8|	ZEND_ASSERT(CG(in_compilation));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (233:2): [True: 0, False: 8]
  |  Branch (233:2): [True: 8, False: 0]
  ------------------
  234|      8|	const zend_string *prop_info_name = CG(context).active_property_info_name;
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
  235|      8|	if (prop_info_name != NULL) {
  ------------------
  |  Branch (235:6): [True: 1, False: 7]
  ------------------
  236|       |		// Applied to a hook
  237|      1|		return ZSTR_INIT_LITERAL("#[\\NoDiscard] is not supported for property hooks", 0);
  ------------------
  |  |  141|      1|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  238|      1|	}
  239|      7|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|      7|# define CG(v) (compiler_globals.v)
  ------------------
  240|      7|	op_array->fn_flags |= ZEND_ACC_NODISCARD;
  ------------------
  |  |  410|      7|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  241|       |	return NULL;
  242|      8|}

php_date.c:zend_add_function_attribute:
  110|     38|{
  111|     38|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|     38|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 38, False: 0]
  ------------------
  112|     38|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|     38|}
php_date.c:zend_add_global_constant_attribute:
  134|      8|{
  135|      8|	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   54|      8|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|      8|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   41|      8|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|     16|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (135:19): [True: 0, False: 8]
  ------------------
  136|      8|	return zend_add_attribute(&c->attributes, name, argc, flags, 0, 0);
  137|      8|}
php_date.c:zend_add_class_constant_attribute:
  128|      2|{
  129|      2|	uint32_t flags = ce->type != ZEND_USER_CLASS ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      2|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (129:19): [True: 2, False: 0]
  ------------------
  130|      2|	return zend_add_attribute(&c->attributes, name, argc, flags, 0, 0);
  131|      2|}
hash.c:zend_add_parameter_attribute:
  116|     14|{
  117|     14|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|     14|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (117:19): [True: 14, False: 0]
  ------------------
  118|     14|	return zend_add_attribute(&func->common.attributes, name, argc, flags, offset + 1, 0);
  119|     14|}
random.c:zend_add_function_attribute:
  110|      2|{
  111|      2|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      2|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 2, False: 0]
  ------------------
  112|      2|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|      2|}
random.c:zend_add_global_constant_attribute:
  134|      2|{
  135|      2|	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   54|      2|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|      2|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   41|      2|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|      4|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (135:19): [True: 0, False: 2]
  ------------------
  136|      2|	return zend_add_attribute(&c->attributes, name, argc, flags, 0, 0);
  137|      2|}
php_reflection.c:zend_add_function_attribute:
  110|     12|{
  111|     12|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|     12|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 12, False: 0]
  ------------------
  112|     12|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|     12|}
spl_directory.c:zend_add_function_attribute:
  110|      2|{
  111|      2|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      2|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 2, False: 0]
  ------------------
  112|      2|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|      2|}
spl_fixedarray.c:zend_add_function_attribute:
  110|      2|{
  111|      2|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      2|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 2, False: 0]
  ------------------
  112|      2|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|      2|}
spl_observer.c:zend_add_function_attribute:
  110|      6|{
  111|      6|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      6|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 6, False: 0]
  ------------------
  112|      6|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|      6|}
basic_functions.c:zend_add_parameter_attribute:
  116|      6|{
  117|      6|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      6|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (117:19): [True: 6, False: 0]
  ------------------
  118|      6|	return zend_add_attribute(&func->common.attributes, name, argc, flags, offset + 1, 0);
  119|      6|}
basic_functions.c:zend_add_function_attribute:
  110|     10|{
  111|     10|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|     10|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (111:19): [True: 10, False: 0]
  ------------------
  112|     10|	return zend_add_attribute(&func->common.attributes, name, argc, flags, 0, 0);
  113|     10|}
basic_functions.c:zend_add_global_constant_attribute:
  134|     10|{
  135|     10|	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   54|     10|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|     10|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   41|     10|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|     20|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (135:19): [True: 0, False: 10]
  ------------------
  136|     10|	return zend_add_attribute(&c->attributes, name, argc, flags, 0, 0);
  137|     10|}
basic_functions.c:zend_add_class_attribute:
  104|      2|{
  105|      2|	uint32_t flags = ce->type != ZEND_USER_CLASS ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      2|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (105:19): [True: 2, False: 0]
  ------------------
  106|      2|	return zend_add_attribute(&ce->attributes, name, argc, flags, 0, 0);
  107|      2|}
file.c:zend_add_global_constant_attribute:
  134|      4|{
  135|      4|	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   54|      4|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|      4|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   41|      4|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|      8|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (135:19): [True: 0, False: 4]
  ------------------
  136|      4|	return zend_add_attribute(&c->attributes, name, argc, flags, 0, 0);
  137|      4|}
php_uri.c:zend_add_parameter_attribute:
  116|      4|{
  117|      4|	uint32_t flags = func->common.type != ZEND_USER_FUNCTION ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      4|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (117:19): [True: 4, False: 0]
  ------------------
  118|      4|	return zend_add_attribute(&func->common.attributes, name, argc, flags, offset + 1, 0);
  119|      4|}
zend_attributes.c:zend_add_class_attribute:
  104|     16|{
  105|     16|	uint32_t flags = ce->type != ZEND_USER_CLASS ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|     16|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (105:19): [True: 16, False: 0]
  ------------------
  106|     16|	return zend_add_attribute(&ce->attributes, name, argc, flags, 0, 0);
  107|     16|}
zend_builtin_functions.c:zend_add_class_attribute:
  104|      2|{
  105|      2|	uint32_t flags = ce->type != ZEND_USER_CLASS ? ZEND_ATTRIBUTE_PERSISTENT : 0;
  ------------------
  |  |   37|      2|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (105:19): [True: 2, False: 0]
  ------------------
  106|      2|	return zend_add_attribute(&ce->attributes, name, argc, flags, 0, 0);
  107|      2|}
zend_constants.c:zend_add_global_constant_attribute:
  134|      2|{
  135|      2|	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   54|      2|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|      2|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   41|      2|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
              	uint32_t flags = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? 0 : ZEND_ATTRIBUTE_PERSISTENT;
  ------------------
  |  |   37|      4|#define ZEND_ATTRIBUTE_PERSISTENT   (1<<0)
  ------------------
  |  Branch (135:19): [True: 0, False: 2]
  ------------------
  136|      2|	return zend_add_attribute(&c->attributes, name, argc, flags, 0, 0);
  137|      2|}

zend_attributes.c:register_class_Attribute:
   90|      2|{
   91|      2|	zend_class_entry ce, *class_entry;
   92|       |
   93|      2|	INIT_CLASS_ENTRY(ce, "Attribute", class_Attribute_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   94|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
   95|       |
   96|      2|	zval const_TARGET_CLASS_value;
   97|      2|	ZVAL_LONG(&const_TARGET_CLASS_value, ZEND_ATTRIBUTE_TARGET_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   98|      2|	zend_string *const_TARGET_CLASS_name = zend_string_init_interned("TARGET_CLASS", sizeof("TARGET_CLASS") - 1, true);
   99|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_CLASS_name, &const_TARGET_CLASS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_CLASS_name, &const_TARGET_CLASS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  100|      2|	zend_string_release_ex(const_TARGET_CLASS_name, true);
  101|       |
  102|      2|	zval const_TARGET_FUNCTION_value;
  103|      2|	ZVAL_LONG(&const_TARGET_FUNCTION_value, ZEND_ATTRIBUTE_TARGET_FUNCTION);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  104|      2|	zend_string *const_TARGET_FUNCTION_name = zend_string_init_interned("TARGET_FUNCTION", sizeof("TARGET_FUNCTION") - 1, true);
  105|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_FUNCTION_name, &const_TARGET_FUNCTION_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_FUNCTION_name, &const_TARGET_FUNCTION_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  106|      2|	zend_string_release_ex(const_TARGET_FUNCTION_name, true);
  107|       |
  108|      2|	zval const_TARGET_METHOD_value;
  109|      2|	ZVAL_LONG(&const_TARGET_METHOD_value, ZEND_ATTRIBUTE_TARGET_METHOD);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  110|      2|	zend_string *const_TARGET_METHOD_name = zend_string_init_interned("TARGET_METHOD", sizeof("TARGET_METHOD") - 1, true);
  111|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_METHOD_name, &const_TARGET_METHOD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_METHOD_name, &const_TARGET_METHOD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  112|      2|	zend_string_release_ex(const_TARGET_METHOD_name, true);
  113|       |
  114|      2|	zval const_TARGET_PROPERTY_value;
  115|      2|	ZVAL_LONG(&const_TARGET_PROPERTY_value, ZEND_ATTRIBUTE_TARGET_PROPERTY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  116|      2|	zend_string *const_TARGET_PROPERTY_name = zend_string_init_interned("TARGET_PROPERTY", sizeof("TARGET_PROPERTY") - 1, true);
  117|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_PROPERTY_name, &const_TARGET_PROPERTY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_PROPERTY_name, &const_TARGET_PROPERTY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  118|      2|	zend_string_release_ex(const_TARGET_PROPERTY_name, true);
  119|       |
  120|      2|	zval const_TARGET_CLASS_CONSTANT_value;
  121|      2|	ZVAL_LONG(&const_TARGET_CLASS_CONSTANT_value, ZEND_ATTRIBUTE_TARGET_CLASS_CONST);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  122|      2|	zend_string *const_TARGET_CLASS_CONSTANT_name = zend_string_init_interned("TARGET_CLASS_CONSTANT", sizeof("TARGET_CLASS_CONSTANT") - 1, true);
  123|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_CLASS_CONSTANT_name, &const_TARGET_CLASS_CONSTANT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_CLASS_CONSTANT_name, &const_TARGET_CLASS_CONSTANT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  124|      2|	zend_string_release_ex(const_TARGET_CLASS_CONSTANT_name, true);
  125|       |
  126|      2|	zval const_TARGET_PARAMETER_value;
  127|      2|	ZVAL_LONG(&const_TARGET_PARAMETER_value, ZEND_ATTRIBUTE_TARGET_PARAMETER);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  128|      2|	zend_string *const_TARGET_PARAMETER_name = zend_string_init_interned("TARGET_PARAMETER", sizeof("TARGET_PARAMETER") - 1, true);
  129|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_PARAMETER_name, &const_TARGET_PARAMETER_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_PARAMETER_name, &const_TARGET_PARAMETER_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  130|      2|	zend_string_release_ex(const_TARGET_PARAMETER_name, true);
  131|       |
  132|      2|	zval const_TARGET_CONSTANT_value;
  133|      2|	ZVAL_LONG(&const_TARGET_CONSTANT_value, ZEND_ATTRIBUTE_TARGET_CONST);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  134|      2|	zend_string *const_TARGET_CONSTANT_name = zend_string_init_interned("TARGET_CONSTANT", sizeof("TARGET_CONSTANT") - 1, true);
  135|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_CONSTANT_name, &const_TARGET_CONSTANT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_CONSTANT_name, &const_TARGET_CONSTANT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  136|      2|	zend_string_release_ex(const_TARGET_CONSTANT_name, true);
  137|       |
  138|      2|	zval const_TARGET_ALL_value;
  139|      2|	ZVAL_LONG(&const_TARGET_ALL_value, ZEND_ATTRIBUTE_TARGET_ALL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  140|      2|	zend_string *const_TARGET_ALL_name = zend_string_init_interned("TARGET_ALL", sizeof("TARGET_ALL") - 1, true);
  141|      2|	zend_declare_typed_class_constant(class_entry, const_TARGET_ALL_name, &const_TARGET_ALL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TARGET_ALL_name, &const_TARGET_ALL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  142|      2|	zend_string_release_ex(const_TARGET_ALL_name, true);
  143|       |
  144|      2|	zval const_IS_REPEATABLE_value;
  145|      2|	ZVAL_LONG(&const_IS_REPEATABLE_value, ZEND_ATTRIBUTE_IS_REPEATABLE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  146|      2|	zend_string *const_IS_REPEATABLE_name = zend_string_init_interned("IS_REPEATABLE", sizeof("IS_REPEATABLE") - 1, true);
  147|      2|	zend_declare_typed_class_constant(class_entry, const_IS_REPEATABLE_name, &const_IS_REPEATABLE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_REPEATABLE_name, &const_IS_REPEATABLE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  148|      2|	zend_string_release_ex(const_IS_REPEATABLE_name, true);
  149|       |
  150|      2|	zval property_flags_default_value;
  151|      2|	ZVAL_UNDEF(&property_flags_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  152|      2|	zend_string *property_flags_name = zend_string_init("flags", sizeof("flags") - 1, true);
  153|      2|	zend_declare_typed_property(class_entry, property_flags_name, &property_flags_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_flags_name, &property_flags_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  154|      2|	zend_string_release_ex(property_flags_name, true);
  155|       |
  156|      2|	zend_string *attribute_name_Attribute_class_Attribute_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  157|      2|	zend_attribute *attribute_Attribute_class_Attribute_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_Attribute_0, 1);
  158|      2|	zend_string_release_ex(attribute_name_Attribute_class_Attribute_0, true);
  159|      2|	ZVAL_LONG(&attribute_Attribute_class_Attribute_0->args[0].value, ZEND_ATTRIBUTE_TARGET_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  160|       |
  161|      2|	return class_entry;
  162|      2|}
zend_attributes.c:register_class_ReturnTypeWillChange:
  165|      2|{
  166|      2|	zend_class_entry ce, *class_entry;
  167|       |
  168|      2|	INIT_CLASS_ENTRY(ce, "ReturnTypeWillChange", class_ReturnTypeWillChange_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  169|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  170|       |
  171|      2|	zend_string *attribute_name_Attribute_class_ReturnTypeWillChange_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  172|      2|	zend_attribute *attribute_Attribute_class_ReturnTypeWillChange_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_ReturnTypeWillChange_0, 1);
  173|      2|	zend_string_release_ex(attribute_name_Attribute_class_ReturnTypeWillChange_0, true);
  174|      2|	ZVAL_LONG(&attribute_Attribute_class_ReturnTypeWillChange_0->args[0].value, ZEND_ATTRIBUTE_TARGET_METHOD);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  175|       |
  176|      2|	return class_entry;
  177|      2|}
zend_attributes.c:register_class_AllowDynamicProperties:
  180|      2|{
  181|      2|	zend_class_entry ce, *class_entry;
  182|       |
  183|      2|	INIT_CLASS_ENTRY(ce, "AllowDynamicProperties", class_AllowDynamicProperties_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  184|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  185|       |
  186|      2|	zend_string *attribute_name_Attribute_class_AllowDynamicProperties_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  187|      2|	zend_attribute *attribute_Attribute_class_AllowDynamicProperties_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_AllowDynamicProperties_0, 1);
  188|      2|	zend_string_release_ex(attribute_name_Attribute_class_AllowDynamicProperties_0, true);
  189|      2|	ZVAL_LONG(&attribute_Attribute_class_AllowDynamicProperties_0->args[0].value, ZEND_ATTRIBUTE_TARGET_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  190|       |
  191|      2|	return class_entry;
  192|      2|}
zend_attributes.c:register_class_SensitiveParameter:
  195|      2|{
  196|      2|	zend_class_entry ce, *class_entry;
  197|       |
  198|      2|	INIT_CLASS_ENTRY(ce, "SensitiveParameter", class_SensitiveParameter_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  199|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  200|       |
  201|      2|	zend_string *attribute_name_Attribute_class_SensitiveParameter_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  202|      2|	zend_attribute *attribute_Attribute_class_SensitiveParameter_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_SensitiveParameter_0, 1);
  203|      2|	zend_string_release_ex(attribute_name_Attribute_class_SensitiveParameter_0, true);
  204|      2|	ZVAL_LONG(&attribute_Attribute_class_SensitiveParameter_0->args[0].value, ZEND_ATTRIBUTE_TARGET_PARAMETER);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  205|       |
  206|      2|	return class_entry;
  207|      2|}
zend_attributes.c:register_class_SensitiveParameterValue:
  210|      2|{
  211|      2|	zend_class_entry ce, *class_entry;
  212|       |
  213|      2|	INIT_CLASS_ENTRY(ce, "SensitiveParameterValue", class_SensitiveParameterValue_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  214|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
  215|       |
  216|      2|	zval property_value_default_value;
  217|      2|	ZVAL_UNDEF(&property_value_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  218|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_VALUE), &property_value_default_value, ZEND_ACC_PRIVATE|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_VALUE), &property_value_default_value, ZEND_ACC_PRIVATE|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_VALUE), &property_value_default_value, ZEND_ACC_PRIVATE|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  219|       |
  220|      2|	return class_entry;
  221|      2|}
zend_attributes.c:register_class_Override:
  224|      2|{
  225|      2|	zend_class_entry ce, *class_entry;
  226|       |
  227|      2|	INIT_CLASS_ENTRY(ce, "Override", class_Override_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  228|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  229|       |
  230|      2|	zend_string *attribute_name_Attribute_class_Override_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  231|      2|	zend_attribute *attribute_Attribute_class_Override_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_Override_0, 1);
  232|      2|	zend_string_release_ex(attribute_name_Attribute_class_Override_0, true);
  233|      2|	ZVAL_LONG(&attribute_Attribute_class_Override_0->args[0].value, ZEND_ATTRIBUTE_TARGET_METHOD | ZEND_ATTRIBUTE_TARGET_PROPERTY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  234|       |
  235|      2|	return class_entry;
  236|      2|}
zend_attributes.c:register_class_Deprecated:
  239|      2|{
  240|      2|	zend_class_entry ce, *class_entry;
  241|       |
  242|      2|	INIT_CLASS_ENTRY(ce, "Deprecated", class_Deprecated_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  243|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  244|       |
  245|      2|	zval property_message_default_value;
  246|      2|	ZVAL_UNDEF(&property_message_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  247|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  248|       |
  249|      2|	zval property_since_default_value;
  250|      2|	ZVAL_UNDEF(&property_since_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  251|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SINCE), &property_since_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SINCE), &property_since_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SINCE), &property_since_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  252|       |
  253|      2|	zend_string *attribute_name_Attribute_class_Deprecated_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  254|      2|	zend_attribute *attribute_Attribute_class_Deprecated_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_Deprecated_0, 1);
  255|      2|	zend_string_release_ex(attribute_name_Attribute_class_Deprecated_0, true);
  256|      2|	ZVAL_LONG(&attribute_Attribute_class_Deprecated_0->args[0].value, ZEND_ATTRIBUTE_TARGET_METHOD | ZEND_ATTRIBUTE_TARGET_FUNCTION | ZEND_ATTRIBUTE_TARGET_CLASS_CONST | ZEND_ATTRIBUTE_TARGET_CONST | ZEND_ATTRIBUTE_TARGET_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  257|       |
  258|      2|	return class_entry;
  259|      2|}
zend_attributes.c:register_class_NoDiscard:
  262|      2|{
  263|      2|	zend_class_entry ce, *class_entry;
  264|       |
  265|      2|	INIT_CLASS_ENTRY(ce, "NoDiscard", class_NoDiscard_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  266|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  267|       |
  268|      2|	zval property_message_default_value;
  269|      2|	ZVAL_UNDEF(&property_message_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  270|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  271|       |
  272|      2|	zend_string *attribute_name_Attribute_class_NoDiscard_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  273|      2|	zend_attribute *attribute_Attribute_class_NoDiscard_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_NoDiscard_0, 1);
  274|      2|	zend_string_release_ex(attribute_name_Attribute_class_NoDiscard_0, true);
  275|      2|	ZVAL_LONG(&attribute_Attribute_class_NoDiscard_0->args[0].value, ZEND_ATTRIBUTE_TARGET_METHOD | ZEND_ATTRIBUTE_TARGET_FUNCTION);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  276|       |
  277|      2|	return class_entry;
  278|      2|}
zend_attributes.c:register_class_DelayedTargetValidation:
  281|      2|{
  282|      2|	zend_class_entry ce, *class_entry;
  283|       |
  284|      2|	INIT_CLASS_ENTRY(ce, "DelayedTargetValidation", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  285|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  286|       |
  287|      2|	zend_string *attribute_name_Attribute_class_DelayedTargetValidation_0 = zend_string_init_interned("Attribute", sizeof("Attribute") - 1, true);
  288|      2|	zend_attribute *attribute_Attribute_class_DelayedTargetValidation_0 = zend_add_class_attribute(class_entry, attribute_name_Attribute_class_DelayedTargetValidation_0, 1);
  289|      2|	zend_string_release_ex(attribute_name_Attribute_class_DelayedTargetValidation_0, true);
  290|      2|	ZVAL_LONG(&attribute_Attribute_class_DelayedTargetValidation_0->args[0].value, ZEND_ATTRIBUTE_TARGET_ALL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  291|       |
  292|      2|	return class_entry;
  293|      2|}

zend_perform_class_autoload:
   47|    131|{
   48|    131|	if (!zend_class_autoload_functions) {
  ------------------
  |  Branch (48:6): [True: 119, False: 12]
  ------------------
   49|    119|		return NULL;
   50|    119|	}
   51|       |
   52|     12|	zval zname;
   53|     12|	ZVAL_STR(&zname, class_name);
  ------------------
  |  | 1088|     12|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     12|		zval *__z = (z);						\
  |  | 1090|     12|		zend_string *__s = (s);					\
  |  | 1091|     12|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     12|		/* interned strings support */			\
  |  | 1093|     12|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 10, False: 2]
  |  |  ------------------
  |  | 1094|     12|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     10|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     12|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     14|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
   54|       |
   55|     12|	const HashTable *class_autoload_functions = zend_class_autoload_functions;
   56|       |
   57|       |	/* Cannot use ZEND_HASH_MAP_FOREACH_PTR here as autoloaders may be
   58|       |	 * added/removed during autoloading. */
   59|     12|	HashPosition pos;
   60|     12|	zend_hash_internal_pointer_reset_ex(class_autoload_functions, &pos);
   61|     14|	while (true) {
  ------------------
  |  Branch (61:9): [True: 14, Folded]
  ------------------
   62|     14|		zend_fcall_info_cache *func_info = zend_hash_get_current_data_ptr_ex(class_autoload_functions, &pos);
   63|     14|		if (!func_info) {
  ------------------
  |  Branch (63:7): [True: 2, False: 12]
  ------------------
   64|      2|			break;
   65|      2|		}
   66|     12|		zend_call_known_fcc(func_info, /* retval */ NULL, /* param_count */ 1, /* params */ &zname, /* named_params */ NULL);
   67|       |
   68|     12|		if (EG(exception)) {
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 6, False: 6]
  |  |  ------------------
  ------------------
   69|      6|			return NULL;
   70|      6|		}
   71|      6|		if (ZSTR_HAS_CE_CACHE(class_name) && ZSTR_GET_CE_CACHE(class_name)) {
  ------------------
  |  |  862|     12|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|      6|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|      6|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|      6|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 6]
  |  |  ------------------
  ------------------
              		if (ZSTR_HAS_CE_CACHE(class_name) && ZSTR_GET_CE_CACHE(class_name)) {
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:2): [True: 0, False: 0]
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|      0|			return (zend_class_entry*)ZSTR_GET_CE_CACHE(class_name);
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|      0|		}
   74|       |
   75|      6|		zend_class_entry *ce = zend_hash_find_ptr(EG(class_table), lc_name);
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
   76|      6|		if (ce) {
  ------------------
  |  Branch (76:7): [True: 2, False: 4]
  ------------------
   77|      2|			return ce;
   78|      2|		}
   79|       |
   80|      4|		zend_hash_move_forward_ex(class_autoload_functions, &pos);
   81|      4|	}
   82|      4|	return NULL;
   83|     12|}
zend_autoload_register_class_loader:
   87|     12|{
   88|     12|	ZEND_ASSERT(ZEND_FCC_INITIALIZED(*fcc));
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (88:2): [True: 0, False: 12]
  |  Branch (88:2): [True: 12, False: 0]
  ------------------
   89|       |
   90|     12|	if (!zend_class_autoload_functions) {
  ------------------
  |  Branch (90:6): [True: 12, False: 0]
  ------------------
   91|     12|		ALLOC_HASHTABLE(zend_class_autoload_functions);
  ------------------
  |  |  232|     12|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|     12|		zend_hash_init(zend_class_autoload_functions, 1, NULL, zend_autoload_callback_zval_destroy, false);
  ------------------
  |  |  111|     12|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   93|       |		/* Initialize as non-packed hash table for prepend functionality. */
   94|     12|		zend_hash_real_init_mixed(zend_class_autoload_functions);
   95|     12|	}
   96|       |
   97|     12|	ZEND_ASSERT(
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (97:2): [True: 12, False: 0]
  |  Branch (97:2): [True: 0, False: 0]
  |  Branch (97:2): [True: 12, False: 0]
  |  Branch (97:2): [True: 0, False: 0]
  ------------------
   98|     12|		fcc->function_handler->type != ZEND_INTERNAL_FUNCTION
   99|     12|		|| !zend_string_equals_literal(fcc->function_handler->common.function_name, "spl_autoload_call")
  100|     12|	);
  101|       |
  102|       |	/* If function is already registered, don't do anything */
  103|     12|	if (autoload_find_registered_function(zend_class_autoload_functions, fcc)) {
  ------------------
  |  Branch (103:6): [True: 0, False: 12]
  ------------------
  104|       |		/* Release potential call trampoline */
  105|      0|		zend_release_fcall_info_cache(fcc);
  106|      0|		return;
  107|      0|	}
  108|       |
  109|     12|	zend_fcc_addref(fcc);
  110|     12|	zend_hash_next_index_insert_mem(zend_class_autoload_functions, fcc, sizeof(zend_fcall_info_cache));
  111|     12|	if (prepend && zend_hash_num_elements(zend_class_autoload_functions) > 1) {
  ------------------
  |  Branch (111:6): [True: 0, False: 12]
  |  Branch (111:17): [True: 0, False: 0]
  ------------------
  112|       |		/* Move the newly created element to the head of the hashtable */
  113|      0|		ZEND_ASSERT(!HT_IS_PACKED(zend_class_autoload_functions));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (113:3): [True: 0, False: 0]
  |  Branch (113:3): [True: 0, False: 0]
  ------------------
  114|      0|		Bucket tmp = zend_class_autoload_functions->arData[zend_class_autoload_functions->nNumUsed-1];
  115|      0|		memmove(zend_class_autoload_functions->arData + 1, zend_class_autoload_functions->arData, sizeof(Bucket) * (zend_class_autoload_functions->nNumUsed - 1));
  116|      0|		zend_class_autoload_functions->arData[0] = tmp;
  117|      0|		zend_hash_rehash(zend_class_autoload_functions);
  118|      0|	}
  119|     12|}
zend_autoload_shutdown:
  159|  33.5k|{
  160|  33.5k|	if (zend_class_autoload_functions) {
  ------------------
  |  Branch (160:6): [True: 12, False: 33.5k]
  ------------------
  161|     12|		zend_hash_destroy(zend_class_autoload_functions);
  162|     12|		FREE_HASHTABLE(zend_class_autoload_functions);
  ------------------
  |  |  235|     12|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     12|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     12|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  163|       |		zend_class_autoload_functions = NULL;
  164|     12|	}
  165|  33.5k|}
zend_autoload.c:zend_autoload_callback_zval_destroy:
   29|     12|{
   30|     12|	zend_fcall_info_cache *fcc = Z_PTR_P(element);
  ------------------
  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
   31|     12|	zend_fcc_dtor(fcc);
   32|       |	efree(fcc);
  ------------------
  |  |  154|     12|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   33|     12|}
zend_autoload.c:autoload_find_registered_function:
   36|     12|{
   37|     12|	zend_fcall_info_cache *current_function_entry;
   38|     24|	ZEND_HASH_MAP_FOREACH_PTR(autoloader_table, current_function_entry) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     12|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     12|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     12|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     12|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     12|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     12|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     12|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     12|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (38:2): [True: 0, False: 12]
  |  Branch (38:2): [True: 12, False: 0]
  ------------------
   39|     24|		if (zend_fcc_equals(current_function_entry, function_entry)) {
  ------------------
  |  Branch (39:7): [True: 0, False: 0]
  ------------------
   40|      0|			return _p;
   41|      0|		}
   42|     24|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
   43|     12|	return NULL;
   44|     12|}

block_pass.c:zend_bitset_len:
  124|      1|{
  125|      1|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      1|}
block_pass.c:zend_bitset_clear:
  144|      1|{
  145|      1|	memset(set, 0, len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  146|      1|}
compact_vars.c:zend_bitset_len:
  124|      1|{
  125|      1|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      1|}
compact_vars.c:zend_bitset_clear:
  144|      1|{
  145|      1|	memset(set, 0, len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  146|      1|}
dce.c:zend_bitset_len:
  124|      2|{
  125|      2|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      2|}
dce.c:zend_bitset_in:
  129|      1|{
  130|      1|	return ZEND_BIT_TEST(set, n);
  ------------------
  |  |  521|      1|	(((bits)[(bit) / (sizeof((bits)[0])*8)] >> ((bit) & (sizeof((bits)[0])*8-1))) & 1)
  ------------------
  131|      1|}
dce.c:zend_bitset_empty:
  149|      2|{
  150|      2|	uint32_t i;
  151|      3|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (151:14): [True: 1, False: 2]
  ------------------
  152|      1|		if (set[i]) {
  ------------------
  |  Branch (152:7): [True: 0, False: 1]
  ------------------
  153|      0|			return 0;
  154|      0|		}
  155|      1|	}
  156|      2|	return 1;
  157|      2|}
dce.c:zend_bitset_pop_first:
  289|      1|static inline int zend_bitset_pop_first(zend_bitset set, uint32_t len) {
  290|      1|	int i = zend_bitset_first(set, len);
  291|      1|	if (i >= 0) {
  ------------------
  |  Branch (291:6): [True: 0, False: 1]
  ------------------
  292|      0|		zend_bitset_excl(set, i);
  293|      0|	}
  294|      1|	return i;
  295|      1|}
dce.c:zend_bitset_first:
  232|      1|{
  233|      1|	uint32_t i;
  234|       |
  235|      1|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (235:14): [True: 0, False: 1]
  ------------------
  236|      0|		if (set[i]) {
  ------------------
  |  Branch (236:7): [True: 0, False: 0]
  ------------------
  237|      0|			return ZEND_BITSET_ELM_SIZE * 8 * i + zend_ulong_ntz(set[i]);
  ------------------
  |  |   29|      0|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  238|      0|		}
  239|      0|	}
  240|      1|	return -1; /* empty set */
  241|      1|}
optimize_temp_vars_5.c:zend_bitset_len:
  124|      1|{
  125|      1|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      1|}
optimize_temp_vars_5.c:zend_bitset_clear:
  144|      1|{
  145|      1|	memset(set, 0, len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  146|      1|}
scdf.c:zend_bitset_in:
  129|      1|{
  130|      1|	return ZEND_BIT_TEST(set, n);
  ------------------
  |  |  521|      1|	(((bits)[(bit) / (sizeof((bits)[0])*8)] >> ((bit) & (sizeof((bits)[0])*8-1))) & 1)
  ------------------
  131|      1|}
scdf.c:zend_bitset_incl:
  134|      3|{
  135|      3|	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   35|      3|# define ZEND_BITSET_ELM_NUM(n)		((n) >> 6)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   38|      3|# define Z_UL(i) UINT64_C(i)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   36|      3|# define ZEND_BITSET_BIT_NUM(n)		((zend_ulong)(n) & Z_UL(0x3f))
  |  |  ------------------
  |  |  |  |   38|      3|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  ------------------
  136|      3|}
scdf.c:zend_bitset_excl:
  139|      2|{
  140|      2|	set[ZEND_BITSET_ELM_NUM(n)] &= ~(Z_UL(1) << ZEND_BITSET_BIT_NUM(n));
  ------------------
  |  |   35|      2|# define ZEND_BITSET_ELM_NUM(n)		((n) >> 6)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] &= ~(Z_UL(1) << ZEND_BITSET_BIT_NUM(n));
  ------------------
  |  |   38|      2|# define Z_UL(i) UINT64_C(i)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] &= ~(Z_UL(1) << ZEND_BITSET_BIT_NUM(n));
  ------------------
  |  |   36|      2|# define ZEND_BITSET_BIT_NUM(n)		((zend_ulong)(n) & Z_UL(0x3f))
  |  |  ------------------
  |  |  |  |   38|      2|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  ------------------
  141|      2|}
scdf.c:zend_bitset_len:
  124|      4|{
  125|      4|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      4|}
scdf.c:zend_bitset_empty:
  149|      6|{
  150|      6|	uint32_t i;
  151|      9|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (151:14): [True: 4, False: 5]
  ------------------
  152|      4|		if (set[i]) {
  ------------------
  |  Branch (152:7): [True: 1, False: 3]
  ------------------
  153|      1|			return 0;
  154|      1|		}
  155|      4|	}
  156|      5|	return 1;
  157|      6|}
scdf.c:zend_bitset_pop_first:
  289|      4|static inline int zend_bitset_pop_first(zend_bitset set, uint32_t len) {
  290|      4|	int i = zend_bitset_first(set, len);
  291|      4|	if (i >= 0) {
  ------------------
  |  Branch (291:6): [True: 1, False: 3]
  ------------------
  292|      1|		zend_bitset_excl(set, i);
  293|      1|	}
  294|      4|	return i;
  295|      4|}
scdf.c:zend_bitset_first:
  232|      4|{
  233|      4|	uint32_t i;
  234|       |
  235|      6|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (235:14): [True: 3, False: 3]
  ------------------
  236|      3|		if (set[i]) {
  ------------------
  |  Branch (236:7): [True: 1, False: 2]
  ------------------
  237|      1|			return ZEND_BITSET_ELM_SIZE * 8 * i + zend_ulong_ntz(set[i]);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  238|      1|		}
  239|      3|	}
  240|      3|	return -1; /* empty set */
  241|      4|}
scdf.c:zend_ulong_ntz:
   47|      1|{
   48|      1|#if (defined(__GNUC__) || __has_builtin(__builtin_ctzl)) \
   49|      1|	&& SIZEOF_ZEND_LONG == SIZEOF_LONG && defined(PHP_HAVE_BUILTIN_CTZL)
   50|      1|	return __builtin_ctzl(num);
   51|       |#elif (defined(__GNUC__) || __has_builtin(__builtin_ctzll)) && defined(PHP_HAVE_BUILTIN_CTZLL)
   52|       |	return __builtin_ctzll(num);
   53|       |#elif defined(_WIN32)
   54|       |	unsigned long index;
   55|       |
   56|       |#if defined(_WIN64)
   57|       |	if (!BitScanForward64(&index, num)) {
   58|       |#else
   59|       |	if (!BitScanForward(&index, num)) {
   60|       |#endif
   61|       |		return SIZEOF_ZEND_LONG * 8;
   62|       |	}
   63|       |
   64|       |	return (int) index;
   65|       |#else
   66|       |	int n;
   67|       |
   68|       |	if (num == Z_UL(0)) return SIZEOF_ZEND_LONG * 8;
   69|       |
   70|       |	n = 1;
   71|       |#if SIZEOF_ZEND_LONG == 8
   72|       |	if ((num & 0xffffffff) == 0) {n += 32; num = num >> Z_UL(32);}
   73|       |#endif
   74|       |	if ((num & 0x0000ffff) == 0) {n += 16; num = num >> 16;}
   75|       |	if ((num & 0x000000ff) == 0) {n +=  8; num = num >>  8;}
   76|       |	if ((num & 0x0000000f) == 0) {n +=  4; num = num >>  4;}
   77|       |	if ((num & 0x00000003) == 0) {n +=  2; num = num >>  2;}
   78|       |	return n - (num & 1);
   79|       |#endif
   80|      1|}
zend_call_graph.c:zend_bitset_len:
  124|      1|{
  125|      1|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      1|}
zend_cfg.c:zend_bitset_len:
  124|      6|{
  125|      6|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      6|}
zend_cfg.c:zend_bitset_in:
  129|      3|{
  130|      3|	return ZEND_BIT_TEST(set, n);
  ------------------
  |  |  521|      3|	(((bits)[(bit) / (sizeof((bits)[0])*8)] >> ((bit) & (sizeof((bits)[0])*8-1))) & 1)
  ------------------
  131|      3|}
zend_cfg.c:zend_bitset_incl:
  134|      3|{
  135|      3|	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   35|      3|# define ZEND_BITSET_ELM_NUM(n)		((n) >> 6)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   38|      3|# define Z_UL(i) UINT64_C(i)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   36|      3|# define ZEND_BITSET_BIT_NUM(n)		((zend_ulong)(n) & Z_UL(0x3f))
  |  |  ------------------
  |  |  |  |   38|      3|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  ------------------
  136|      3|}
zend_dfg.c:zend_bitset_len:
  124|      1|{
  125|      1|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      1|}
zend_dfg.c:zend_bitset_incl:
  134|      1|{
  135|      1|	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   35|      1|# define ZEND_BITSET_ELM_NUM(n)		((n) >> 6)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] |= Z_UL(1) << ZEND_BITSET_BIT_NUM(n);
  ------------------
  |  |   36|      1|# define ZEND_BITSET_BIT_NUM(n)		((zend_ulong)(n) & Z_UL(0x3f))
  |  |  ------------------
  |  |  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  ------------------
  136|      1|}
zend_dfg.c:zend_bitset_empty:
  149|      2|{
  150|      2|	uint32_t i;
  151|      3|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (151:14): [True: 2, False: 1]
  ------------------
  152|      2|		if (set[i]) {
  ------------------
  |  Branch (152:7): [True: 1, False: 1]
  ------------------
  153|      1|			return 0;
  154|      1|		}
  155|      2|	}
  156|      1|	return 1;
  157|      2|}
zend_dfg.c:zend_bitset_last:
  244|      1|{
  245|      1|	uint32_t i = len;
  246|       |
  247|      1|	while (i > 0) {
  ------------------
  |  Branch (247:9): [True: 1, False: 0]
  ------------------
  248|      1|		i--;
  249|      1|		if (set[i]) {
  ------------------
  |  Branch (249:7): [True: 1, False: 0]
  ------------------
  250|      1|			int j = ZEND_BITSET_ELM_SIZE * 8 * i - 1;
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  251|      1|			zend_ulong x = set[i];
  252|      2|			while (x != Z_UL(0)) {
  ------------------
  |  |   38|      2|# define Z_UL(i) UINT64_C(i)
  ------------------
  |  Branch (252:11): [True: 1, False: 1]
  ------------------
  253|      1|				x = x >> Z_UL(1);
  ------------------
  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  ------------------
  254|      1|				j++;
  255|      1|			}
  256|      1|			return j;
  257|      1|		}
  258|      1|	}
  259|      0|	return -1; /* empty set */
  260|      1|}
zend_dfg.c:zend_bitset_excl:
  139|      1|{
  140|      1|	set[ZEND_BITSET_ELM_NUM(n)] &= ~(Z_UL(1) << ZEND_BITSET_BIT_NUM(n));
  ------------------
  |  |   35|      1|# define ZEND_BITSET_ELM_NUM(n)		((n) >> 6)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] &= ~(Z_UL(1) << ZEND_BITSET_BIT_NUM(n));
  ------------------
  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  ------------------
              	set[ZEND_BITSET_ELM_NUM(n)] &= ~(Z_UL(1) << ZEND_BITSET_BIT_NUM(n));
  ------------------
  |  |   36|      1|# define ZEND_BITSET_BIT_NUM(n)		((zend_ulong)(n) & Z_UL(0x3f))
  |  |  ------------------
  |  |  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  |  |  ------------------
  ------------------
  141|      1|}
zend_dfg.c:zend_bitset_clear:
  144|      1|{
  145|      1|	memset(set, 0, len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  146|      1|}
zend_dfg.c:zend_bitset_union_with_difference:
  211|      1|{
  212|      1|	uint32_t i;
  213|       |
  214|      1|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (214:14): [True: 0, False: 1]
  ------------------
  215|      0|		set1[i] = set2[i] | (set3[i] & ~set4[i]);
  216|      0|	}
  217|      1|}
zend_dfg.c:zend_bitset_equal:
  165|      1|{
  166|      1|    return memcmp(set1, set2, len * ZEND_BITSET_ELM_SIZE) == 0;
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  167|      1|}
zend_inference.c:zend_bitset_len:
  124|      6|{
  125|      6|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      6|}
zend_inference.c:zend_bitset_empty:
  149|      1|{
  150|      1|	uint32_t i;
  151|      1|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (151:14): [True: 0, False: 1]
  ------------------
  152|      0|		if (set[i]) {
  ------------------
  |  Branch (152:7): [True: 0, False: 0]
  ------------------
  153|      0|			return 0;
  154|      0|		}
  155|      0|	}
  156|      1|	return 1;
  157|      1|}
zend_inference.c:zend_bitset_clear:
  144|      1|{
  145|      1|	memset(set, 0, len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  146|      1|}
zend_ssa.c:zend_bitset_len:
  124|      1|{
  125|      1|	return (n + ((sizeof(zend_long) * 8) - 1)) / (sizeof(zend_long) * 8);
  126|      1|}
zend_ssa.c:zend_bitset_clear:
  144|      1|{
  145|      1|	memset(set, 0, len * ZEND_BITSET_ELM_SIZE);
  ------------------
  |  |   29|      1|#define ZEND_BITSET_ELM_SIZE sizeof(zend_ulong)
  ------------------
  146|      1|}
zend_ssa.c:zend_bitset_empty:
  149|      1|{
  150|      1|	uint32_t i;
  151|      1|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (151:14): [True: 0, False: 1]
  ------------------
  152|      0|		if (set[i]) {
  ------------------
  |  Branch (152:7): [True: 0, False: 0]
  ------------------
  153|      0|			return 0;
  154|      0|		}
  155|      0|	}
  156|      1|	return 1;
  157|      1|}

zm_startup_core:
   38|      2|ZEND_MINIT_FUNCTION(core) { /* {{{ */
   39|      2|	zend_autoload = zend_perform_class_autoload;
   40|      2|	zend_register_default_classes();
   41|       |
   42|      2|	zend_standard_class_def = register_class_stdClass();
   43|       |
   44|      2|	return SUCCESS;
   45|      2|}
zend_startup_builtin_functions:
   63|      2|{
   64|      2|	zend_module_entry *module;
   65|      2|	EG(current_module) = module = zend_register_module_ex(&zend_builtin_module, MODULE_PERSISTENT);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              	EG(current_module) = module = zend_register_module_ex(&zend_builtin_module, MODULE_PERSISTENT);
  ------------------
  |  |   63|      2|#define MODULE_PERSISTENT 1
  ------------------
   66|      2|	if (UNEXPECTED(module == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   67|      0|		return FAILURE;
   68|      0|	}
   69|      2|	ZEND_ASSERT(module->module_number == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (69:2): [True: 0, False: 2]
  |  Branch (69:2): [True: 2, False: 0]
  ------------------
   70|      2|	return SUCCESS;
   71|      2|}
zif_clone:
   75|      4|{
   76|      4|	zend_object *zobj;
   77|      4|	HashTable *with = (HashTable*)&zend_empty_array;
   78|       |
   79|     12|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|     16|		Z_PARAM_OBJ(zobj)
  ------------------
  |  | 1964|      4|	Z_PARAM_OBJ_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1956|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1957|      4|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1958|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1958:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1959|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1960|      0|			break; \
  |  |  |  | 1961|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (80:3): [True: 4, False: 0]
  |  Branch (80:3): [True: 0, False: 0]
  |  Branch (80:3): [True: 4, False: 0]
  |  Branch (80:3): [True: 0, False: 0]
  |  Branch (80:3): [True: 4, False: 0]
  |  Branch (80:3): [True: 0, False: 0]
  |  Branch (80:3): [True: 0, False: 4]
  |  Branch (80:3): [True: 4, False: 0]
  |  Branch (80:3): [True: 0, False: 0]
  |  Branch (80:3): [True: 0, False: 0]
  ------------------
   81|      4|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      4|	_optional = 1;
  ------------------
   82|     16|		Z_PARAM_ARRAY_HT(with)
  ------------------
  |  | 1861|      4|	Z_PARAM_ARRAY_HT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1858|      4|	Z_PARAM_ARRAY_HT_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1850|      4|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 4, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      4|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      4|	} \
  |  |  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1851|      4|		if (UNEXPECTED(!zend_parse_arg_array_ht(_arg, &dest, check_null, 0, separate))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1852|      2|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1852:21): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1853|      2|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      2|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1854|      2|			break; \
  |  |  |  |  |  | 1855|      2|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (82:3): [True: 4, False: 0]
  |  Branch (82:3): [True: 0, False: 0]
  |  Branch (82:3): [True: 0, False: 4]
  |  Branch (82:3): [True: 4, False: 0]
  |  Branch (82:3): [True: 4, False: 0]
  |  Branch (82:3): [True: 0, False: 0]
  |  Branch (82:3): [True: 4, False: 0]
  |  Branch (82:3): [True: 0, False: 0]
  |  Branch (82:3): [True: 0, False: 0]
  |  Branch (82:3): [True: 0, False: 0]
  ------------------
   83|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (83:2): [True: 2, False: 0]
  |  Branch (83:2): [True: 0, False: 0]
  |  Branch (83:2): [True: 2, False: 0]
  |  Branch (83:2): [True: 0, False: 0]
  ------------------
   84|       |
   85|       |	/* clone() also exists as the ZEND_CLONE OPcode and both implementations must be kept in sync. */
   86|       |
   87|      2|	const zend_class_entry *scope = zend_get_executed_scope();
   88|       |
   89|      2|	const zend_class_entry *ce = zobj->ce;
   90|      2|	const zend_function *clone = ce->clone;
   91|       |
   92|      2|	if (UNEXPECTED(zobj->handlers->clone_obj == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   93|      0|		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   94|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (94:3): [True: 0, False: 0]
  |  Branch (94:3): [True: 0, False: 0]
  ------------------
   95|      0|	}
   96|       |
   97|      2|	if (clone && !zend_check_method_accessible(clone, scope)) {
  ------------------
  |  Branch (97:6): [True: 0, False: 2]
  |  Branch (97:15): [True: 0, False: 0]
  ------------------
   98|      0|		zend_bad_method_call(clone, clone->common.function_name, scope);
   99|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (99:3): [True: 0, False: 0]
  |  Branch (99:3): [True: 0, False: 0]
  ------------------
  100|      0|	}
  101|       |
  102|      2|	zend_object *cloned;
  103|      2|	if (zend_hash_num_elements(with) > 0) {
  ------------------
  |  Branch (103:6): [True: 2, False: 0]
  ------------------
  104|      2|		if (UNEXPECTED(!zobj->handlers->clone_obj_with)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  105|      0|			zend_throw_error(NULL, "Cloning objects of class %s with updated properties is not supported", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  106|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (106:4): [True: 0, False: 0]
  |  Branch (106:4): [True: 0, False: 0]
  ------------------
  107|      0|		}
  108|       |
  109|      2|		cloned = zobj->handlers->clone_obj_with(zobj, scope, with);
  110|      2|	} else {
  111|      0|		cloned = zobj->handlers->clone_obj(zobj);
  112|      0|	}
  113|       |
  114|      2|	ZEND_ASSERT(cloned || EG(exception));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (114:2): [True: 2, False: 0]
  |  Branch (114:2): [True: 0, False: 0]
  |  Branch (114:2): [True: 2, False: 0]
  |  Branch (114:2): [True: 0, False: 0]
  ------------------
  115|      2|	if (EXPECTED(cloned)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  116|      2|		RETURN_OBJ(cloned);
  ------------------
  |  | 1063|      2|#define RETURN_OBJ(r)					do { RETVAL_OBJ(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1037|      2|#define RETVAL_OBJ(r)					ZVAL_OBJ(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1140|      2|#define ZVAL_OBJ(z, o) do {						\
  |  |  |  |  |  | 1141|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1142|      2|		Z_OBJ_P(__z) = (o);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1143|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1144|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1144:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1063:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
  117|      2|	}
  118|      2|}
zif_exit:
  121|     12|{
  122|     12|	zend_string *str = NULL;
  123|     12|	zend_long status = 0;
  124|       |
  125|     36|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|     12|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     12|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     12|		const int _flags = (flags); \
  |  |  |  | 1599|     12|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     12|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     12|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     12|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     12|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     12|		uint32_t _i = 0; \
  |  |  |  | 1603|     12|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     12|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     12|		char *_error = NULL; \
  |  |  |  | 1606|     12|		bool _dummy = 0; \
  |  |  |  | 1607|     12|		bool _optional = 0; \
  |  |  |  | 1608|     12|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     12|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     12|		((void)_i); \
  |  |  |  | 1610|     12|		((void)_real_arg); \
  |  |  |  | 1611|     12|		((void)_arg); \
  |  |  |  | 1612|     12|		((void)_expected_type); \
  |  |  |  | 1613|     12|		((void)_error); \
  |  |  |  | 1614|     12|		((void)_optional); \
  |  |  |  | 1615|     12|		((void)_dummy); \
  |  |  |  | 1616|     12|		\
  |  |  |  | 1617|     12|		do { \
  |  |  |  | 1618|     12|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     12|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     12|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     12|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     12|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     12|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|     36|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     12|	_optional = 1;
  ------------------
  127|     44|		Z_PARAM_STR_OR_LONG(str, status)
  ------------------
  |  | 2181|     12|	Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, _dummy, 0);
  |  |  ------------------
  |  |  |  | 2173|     12|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     12|	++_i; \
  |  |  |  |  |  | 1654|     12|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     12|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     12|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 12, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     12|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     12|	} \
  |  |  |  |  |  | 1659|     12|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2174|      7|	if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2175|      1|		_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2175:20): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2176|      1|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2177|      1|		break; \
  |  |  |  | 2178|      1|	}
  |  |  ------------------
  ------------------
  |  Branch (127:3): [True: 12, False: 0]
  |  Branch (127:3): [True: 0, False: 0]
  |  Branch (127:3): [True: 0, False: 12]
  |  Branch (127:3): [True: 12, False: 0]
  |  Branch (127:3): [True: 12, False: 0]
  |  Branch (127:3): [True: 0, False: 0]
  |  Branch (127:3): [True: 12, False: 0]
  |  Branch (127:3): [True: 0, False: 0]
  |  Branch (127:3): [True: 0, False: 0]
  |  Branch (127:3): [True: 0, False: 0]
  ------------------
  128|     44|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|     12|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (128:2): [True: 6, False: 0]
  |  Branch (128:2): [True: 0, False: 0]
  |  Branch (128:2): [True: 6, False: 0]
  |  Branch (128:2): [True: 0, False: 0]
  ------------------
  129|       |
  130|     11|	if (str) {
  ------------------
  |  Branch (130:6): [True: 6, False: 5]
  ------------------
  131|      6|		size_t len = ZSTR_LEN(str);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  132|      6|		if (len != 0) {
  ------------------
  |  Branch (132:7): [True: 6, False: 0]
  ------------------
  133|       |			/* An exception might be emitted by an output handler */
  134|      6|			zend_write(ZSTR_VAL(str), len);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  135|      6|			if (EG(exception)) {
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  136|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (136:5): [True: 0, False: 0]
  |  Branch (136:5): [True: 0, False: 0]
  ------------------
  137|      0|			}
  138|      6|		}
  139|      6|	} else {
  140|      5|		EG(exit_status) = status;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  141|      5|	}
  142|       |
  143|     11|	ZEND_ASSERT(!EG(exception));
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (143:2): [True: 0, False: 11]
  |  Branch (143:2): [True: 11, False: 0]
  ------------------
  144|     11|	zend_throw_unwind_exit();
  145|     11|}
zif_gc_collect_cycles:
  169|     31|{
  170|     31|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|     31|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|     31|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 31]
  |  |  ------------------
  ------------------
  171|       |
  172|     31|	RETURN_LONG(gc_collect_cycles());
  ------------------
  |  | 1048|     31|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|     31|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|     31|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|     31|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|     31|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|     31|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|     31|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|     31|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|     31|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|     31|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  173|     31|}
zif_gc_enabled:
  178|     13|{
  179|     13|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|     13|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|     13|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      1|			zend_wrong_parameters_none_error(); \
  |  | 1634|      1|			return; \
  |  | 1635|      1|		} \
  |  | 1636|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
  180|       |
  181|     12|	RETURN_BOOL(gc_enabled());
  ------------------
  |  | 1046|     12|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|     12|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|     12|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|     12|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|     12|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      7|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     17|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 7, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|     12|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  182|     12|}
zif_gc_enable:
  187|      5|{
  188|      5|	zend_string *key;
  189|       |
  190|      5|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      5|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      5|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  191|       |
  192|      5|	key = ZSTR_INIT_LITERAL("zend.enable_gc", 0);
  ------------------
  |  |  141|      5|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  193|      5|	zend_alter_ini_entry_chars(key, "1", sizeof("1")-1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
  ------------------
  |  |   23|      5|#define ZEND_INI_USER	(1<<0)
  ------------------
              	zend_alter_ini_entry_chars(key, "1", sizeof("1")-1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
  ------------------
  |  |  227|      5|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
  194|      5|	zend_string_release_ex(key, 0);
  195|      5|}
zif_gc_disable:
  200|      6|{
  201|      6|	zend_string *key;
  202|       |
  203|      6|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      6|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      6|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  204|       |
  205|      6|	key = ZSTR_INIT_LITERAL("zend.enable_gc", 0);
  ------------------
  |  |  141|      6|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  206|      6|	zend_alter_ini_entry_chars(key, "0", sizeof("0")-1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
  ------------------
  |  |   23|      6|#define ZEND_INI_USER	(1<<0)
  ------------------
              	zend_alter_ini_entry_chars(key, "0", sizeof("0")-1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
  ------------------
  |  |  227|      6|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
  207|      6|	zend_string_release_ex(key, 0);
  208|      6|}
zif_gc_status:
  213|      3|{
  214|      3|	zend_gc_status status;
  215|       |
  216|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  217|       |
  218|      3|	zend_gc_get_status(&status);
  219|       |
  220|      3|	array_init_size(return_value, 16);
  221|       |
  222|      3|	add_assoc_bool_ex(return_value, "running", sizeof("running")-1, status.active);
  223|      3|	add_assoc_bool_ex(return_value, "protected", sizeof("protected")-1, status.gc_protected);
  224|      3|	add_assoc_bool_ex(return_value, "full", sizeof("full")-1, status.full);
  225|      3|	add_assoc_long_ex(return_value, "runs", sizeof("runs")-1, (long)status.runs);
  226|      3|	add_assoc_long_ex(return_value, "collected", sizeof("collected")-1, (long)status.collected);
  227|      3|	add_assoc_long_ex(return_value, "threshold", sizeof("threshold")-1, (long)status.threshold);
  228|      3|	add_assoc_long_ex(return_value, "buffer_size", sizeof("buffer_size")-1, (long)status.buf_size);
  229|      3|	add_assoc_long_ex(return_value, "roots", sizeof("roots")-1, (long)status.num_roots);
  230|       |
  231|       |	/* Using double because zend_long may be too small on some platforms */
  232|      3|	add_assoc_double_ex(return_value, "application_time", sizeof("application_time")-1, (double) status.application_time / ZEND_NANO_IN_SEC);
  ------------------
  |  |   79|      3|#define ZEND_NANO_IN_SEC UINT64_C(1000000000)
  ------------------
  233|      3|	add_assoc_double_ex(return_value, "collector_time", sizeof("collector_time")-1, (double) status.collector_time / ZEND_NANO_IN_SEC);
  ------------------
  |  |   79|      3|#define ZEND_NANO_IN_SEC UINT64_C(1000000000)
  ------------------
  234|      3|	add_assoc_double_ex(return_value, "destructor_time", sizeof("destructor_time")-1, (double) status.dtor_time / ZEND_NANO_IN_SEC);
  ------------------
  |  |   79|      3|#define ZEND_NANO_IN_SEC UINT64_C(1000000000)
  ------------------
  235|       |	add_assoc_double_ex(return_value, "free_time", sizeof("free_time")-1, (double) status.free_time / ZEND_NANO_IN_SEC);
  ------------------
  |  |   79|      3|#define ZEND_NANO_IN_SEC UINT64_C(1000000000)
  ------------------
  236|      3|}
zif_func_get_arg:
  261|      1|{
  262|      1|	uint32_t arg_count, first_extra_arg;
  263|      1|	zval *arg;
  264|      1|	zend_long requested_offset;
  265|      1|	zend_execute_data *ex;
  266|       |
  267|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &requested_offset) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (267:6): [True: 0, False: 1]
  ------------------
  268|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  ------------------
  269|      0|	}
  270|       |
  271|      1|	if (requested_offset < 0) {
  ------------------
  |  Branch (271:6): [True: 0, False: 1]
  ------------------
  272|      0|		zend_argument_value_error(1, "must be greater than or equal to 0");
  273|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (273:3): [True: 0, False: 0]
  |  Branch (273:3): [True: 0, False: 0]
  ------------------
  274|      0|	}
  275|       |
  276|      1|	ex = EX(prev_execute_data);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
  277|      1|	if (ex && (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE)) {
  ------------------
  |  |  687|      1|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ex && (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE)) {
  ------------------
  |  |  661|      1|#define ZEND_CALL_CODE               (1 << 16)
  ------------------
  |  Branch (277:6): [True: 1, False: 0]
  |  Branch (277:12): [True: 0, False: 1]
  ------------------
  278|      0|		zend_throw_error(NULL, "func_get_arg() cannot be called from the global scope");
  279|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (279:3): [True: 0, False: 0]
  |  Branch (279:3): [True: 0, False: 0]
  ------------------
  280|      0|	}
  281|       |
  282|      1|	if (zend_forbid_dynamic_call() == FAILURE) {
  ------------------
  |  Branch (282:6): [True: 0, False: 1]
  ------------------
  283|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (283:3): [True: 0, False: 0]
  |  Branch (283:3): [True: 0, False: 0]
  ------------------
  284|      0|	}
  285|       |
  286|      1|	arg_count = ZEND_CALL_NUM_ARGS(ex);
  ------------------
  |  |  712|      1|	(call)->This.u2.num_args
  ------------------
  287|       |
  288|      1|	if ((zend_ulong)requested_offset >= arg_count) {
  ------------------
  |  Branch (288:6): [True: 0, False: 1]
  ------------------
  289|      0|		zend_argument_value_error(1, "must be less than the number of the arguments passed to the currently executed function");
  290|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (290:3): [True: 0, False: 0]
  |  Branch (290:3): [True: 0, False: 0]
  ------------------
  291|      0|	}
  292|       |
  293|      1|	first_extra_arg = ex->func->op_array.num_args;
  294|      1|	if ((zend_ulong)requested_offset >= first_extra_arg && (ZEND_CALL_NUM_ARGS(ex) > first_extra_arg)) {
  ------------------
  |  |  712|      1|	(call)->This.u2.num_args
  ------------------
  |  Branch (294:6): [True: 1, False: 0]
  |  Branch (294:57): [True: 1, False: 0]
  ------------------
  295|      1|		arg = ZEND_CALL_VAR_NUM(ex, ex->func->op_array.last_var + ex->func->op_array.T) + (requested_offset - first_extra_arg);
  ------------------
  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  296|      1|	} else {
  297|      0|		arg = ZEND_CALL_ARG(ex, requested_offset + 1);
  ------------------
  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  298|      0|	}
  299|      1|	if (EXPECTED(!Z_ISUNDEF_P(arg))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  300|      1|		RETURN_COPY_DEREF(arg);
  ------------------
  |  | 1067|      1|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      1|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      1|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      1|			} else {									\
  |  |  |  |  |  | 1517|      1|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      1|			}											\
  |  |  |  |  |  | 1519|      1|		}												\
  |  |  |  |  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  301|      1|	}
  302|      1|}
zif_func_get_args:
  307|      3|{
  308|      3|	zval *p, *q;
  309|      3|	uint32_t arg_count, first_extra_arg;
  310|      3|	uint32_t i;
  311|      3|	zend_execute_data *ex = EX(prev_execute_data);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
  312|       |
  313|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  314|       |
  315|      3|	if (ex && (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE)) {
  ------------------
  |  |  687|      3|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ex && (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE)) {
  ------------------
  |  |  661|      3|#define ZEND_CALL_CODE               (1 << 16)
  ------------------
  |  Branch (315:6): [True: 3, False: 0]
  |  Branch (315:12): [True: 3, False: 0]
  ------------------
  316|      3|		zend_throw_error(NULL, "func_get_args() cannot be called from the global scope");
  317|      3|		RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (317:3): [True: 0, False: 3]
  |  Branch (317:3): [True: 3, False: 0]
  ------------------
  318|      3|	}
  319|       |
  320|      0|	if (zend_forbid_dynamic_call() == FAILURE) {
  ------------------
  |  Branch (320:6): [True: 0, False: 0]
  ------------------
  321|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (321:3): [True: 0, False: 0]
  |  Branch (321:3): [True: 0, False: 0]
  ------------------
  322|      0|	}
  323|       |
  324|      0|	arg_count = ZEND_CALL_NUM_ARGS(ex);
  ------------------
  |  |  712|      0|	(call)->This.u2.num_args
  ------------------
  325|       |
  326|      0|	if (arg_count) {
  ------------------
  |  Branch (326:6): [True: 0, False: 0]
  ------------------
  327|      0|		array_init_size(return_value, arg_count);
  328|      0|		first_extra_arg = ex->func->op_array.num_args;
  329|      0|		zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|      0|		ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      0|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      0|		HashTable *__fill_ht = (ht); \
  |  | 1544|      0|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      0|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      0|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (330:3): [True: 0, False: 0]
  |  Branch (330:3): [True: 0, False: 0]
  ------------------
  331|      0|			i = 0;
  332|      0|			p = ZEND_CALL_ARG(ex, 1);
  ------------------
  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  333|      0|			if (arg_count > first_extra_arg) {
  ------------------
  |  Branch (333:8): [True: 0, False: 0]
  ------------------
  334|      0|				while (i < first_extra_arg) {
  ------------------
  |  Branch (334:12): [True: 0, False: 0]
  ------------------
  335|      0|					q = p;
  336|      0|					if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  337|      0|						ZVAL_DEREF(q);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  338|      0|						if (Z_OPT_REFCOUNTED_P(q)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  339|      0|							Z_ADDREF_P(q);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  340|      0|						}
  341|      0|						ZEND_HASH_FILL_SET(q);
  ------------------
  |  | 1559|      0|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|      0|					} else {
  343|      0|						ZEND_HASH_FILL_SET_NULL();
  ------------------
  |  | 1562|      0|		ZVAL_NULL(__fill_val)
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  344|      0|					}
  345|      0|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|      0|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|      0|		__fill_val++; \
  |  | 1581|      0|		__fill_idx++; \
  |  | 1582|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  346|      0|					p++;
  347|      0|					i++;
  348|      0|				}
  349|      0|				p = ZEND_CALL_VAR_NUM(ex, ex->func->op_array.last_var + ex->func->op_array.T);
  ------------------
  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  350|      0|			}
  351|      0|			while (i < arg_count) {
  ------------------
  |  Branch (351:11): [True: 0, False: 0]
  ------------------
  352|      0|				q = p;
  353|      0|				if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  354|      0|					ZVAL_DEREF(q);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  355|      0|					if (Z_OPT_REFCOUNTED_P(q)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|      0|						Z_ADDREF_P(q);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  357|      0|					}
  358|      0|					ZEND_HASH_FILL_SET(q);
  ------------------
  |  | 1559|      0|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|      0|				} else {
  360|      0|					ZEND_HASH_FILL_SET_NULL();
  ------------------
  |  | 1562|      0|		ZVAL_NULL(__fill_val)
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|      0|				}
  362|      0|				ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|      0|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|      0|		__fill_val++; \
  |  | 1581|      0|		__fill_idx++; \
  |  | 1582|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  363|      0|				p++;
  364|      0|				i++;
  365|      0|			}
  366|      0|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      0|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      0|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      0|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      0|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      0|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      0|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  367|      0|		Z_ARRVAL_P(return_value)->nNumOfElements = arg_count;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|      0|	} else {
  369|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
  370|      0|	}
  371|      0|}
zif_strlen:
  377|      8|{
  378|      8|	zend_string *s;
  379|       |
  380|     24|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|     32|		Z_PARAM_STR(s)
  ------------------
  |  | 2102|      8|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      8|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      8|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (381:3): [True: 8, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 8, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 8, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 8]
  |  Branch (381:3): [True: 8, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  ------------------
  382|      8|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      8|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      8|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      8|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (382:2): [True: 8, False: 0]
  |  Branch (382:2): [True: 0, False: 0]
  |  Branch (382:2): [True: 8, False: 0]
  |  Branch (382:2): [True: 0, False: 0]
  ------------------
  383|       |
  384|      8|	RETVAL_LONG(ZSTR_LEN(s));
  ------------------
  |  | 1022|      8|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  ------------------
  |  |  |  | 1076|      8|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|      8|		zval *__z = (z);				\
  |  |  |  | 1078|      8|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|      8|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      8|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|      8|}
zif_error_reporting:
  460|     29|{
  461|     29|	zend_long err;
  462|     29|	bool err_is_null = 1;
  463|     29|	int old_error_reporting;
  464|       |
  465|     87|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|     29|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     29|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     29|		const int _flags = (flags); \
  |  |  |  | 1599|     29|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     29|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     29|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     29|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     29|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     29|		uint32_t _i = 0; \
  |  |  |  | 1603|     29|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     29|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     29|		char *_error = NULL; \
  |  |  |  | 1606|     29|		bool _dummy = 0; \
  |  |  |  | 1607|     29|		bool _optional = 0; \
  |  |  |  | 1608|     29|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     29|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     29|		((void)_i); \
  |  |  |  | 1610|     29|		((void)_real_arg); \
  |  |  |  | 1611|     29|		((void)_arg); \
  |  |  |  | 1612|     29|		((void)_expected_type); \
  |  |  |  | 1613|     29|		((void)_error); \
  |  |  |  | 1614|     29|		((void)_optional); \
  |  |  |  | 1615|     29|		((void)_dummy); \
  |  |  |  | 1616|     29|		\
  |  |  |  | 1617|     29|		do { \
  |  |  |  | 1618|     29|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     58|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     29|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     29|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     29|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     29|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     29|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  466|     87|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     29|	_optional = 1;
  ------------------
  467|    110|		Z_PARAM_LONG_OR_NULL(err, err_is_null)
  ------------------
  |  | 1908|     29|	Z_PARAM_LONG_EX(dest, is_null, 1, 0)
  |  |  ------------------
  |  |  |  | 1897|     29|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     29|	++_i; \
  |  |  |  |  |  | 1654|     29|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     29|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     29|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 29, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     29|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 26]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     29|	} \
  |  |  |  |  |  | 1659|     29|	_real_arg++; \
  |  |  |  |  |  | 1660|     26|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     26|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     26|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|     26|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      1|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1900|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      1|			break; \
  |  |  |  | 1902|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (467:3): [True: 29, False: 0]
  |  Branch (467:3): [True: 0, False: 0]
  |  Branch (467:3): [True: 0, False: 29]
  |  Branch (467:3): [True: 29, False: 0]
  |  Branch (467:3): [True: 29, False: 0]
  |  Branch (467:3): [True: 0, False: 0]
  |  Branch (467:3): [True: 29, False: 0]
  |  Branch (467:3): [True: 0, False: 0]
  |  Branch (467:3): [True: 0, False: 0]
  |  Branch (467:3): [True: 0, False: 0]
  ------------------
  468|     29|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     26|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     25|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     25|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  |  | 1641|     29|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 28]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     29|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (468:2): [True: 25, False: 0]
  |  Branch (468:2): [True: 0, False: 0]
  |  Branch (468:2): [True: 25, False: 0]
  |  Branch (468:2): [True: 0, False: 0]
  ------------------
  469|       |
  470|     28|	old_error_reporting = EG(error_reporting);
  ------------------
  |  |   45|     28|# define EG(v) (executor_globals.v)
  ------------------
  471|       |
  472|     28|	if (!err_is_null && err != old_error_reporting) {
  ------------------
  |  Branch (472:6): [True: 25, False: 3]
  |  Branch (472:22): [True: 23, False: 2]
  ------------------
  473|     23|		zend_ini_entry *p = EG(error_reporting_ini_entry);
  ------------------
  |  |   45|     23|# define EG(v) (executor_globals.v)
  ------------------
  474|       |
  475|     23|		if (!p) {
  ------------------
  |  Branch (475:7): [True: 1, False: 22]
  ------------------
  476|      1|			zval *zv = zend_hash_find_known_hash(EG(ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  477|      1|			if (!zv) {
  ------------------
  |  Branch (477:8): [True: 0, False: 1]
  ------------------
  478|       |				/* Ini setting does not exist -- can this happen? */
  479|      0|				RETURN_LONG(old_error_reporting);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  480|      0|			}
  481|       |
  482|      1|			p = EG(error_reporting_ini_entry) = (zend_ini_entry*)Z_PTR_P(zv);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              			p = EG(error_reporting_ini_entry) = (zend_ini_entry*)Z_PTR_P(zv);
  ------------------
  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  483|      1|		}
  484|     23|		if (!p->modified) {
  ------------------
  |  Branch (484:7): [True: 20, False: 3]
  ------------------
  485|     20|			if (!EG(modified_ini_directives)) {
  ------------------
  |  |   45|     20|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (485:8): [True: 20, False: 0]
  ------------------
  486|     20|				ALLOC_HASHTABLE(EG(modified_ini_directives));
  ------------------
  |  |  232|     20|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     20|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  487|     20|				zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, 0);
  ------------------
  |  |  111|     20|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  488|     20|			}
  489|     20|			if (EXPECTED(zend_hash_add_ptr(EG(modified_ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING), p) != NULL)) {
  ------------------
  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20, False: 0]
  |  |  ------------------
  ------------------
  490|     20|				p->orig_value = p->value;
  491|     20|				p->orig_modifiable = p->modifiable;
  492|     20|				p->modified = 1;
  493|     20|			}
  494|     20|		} else if (p->orig_value != p->value) {
  ------------------
  |  Branch (494:14): [True: 3, False: 0]
  ------------------
  495|      3|			zend_string_release_ex(p->value, 0);
  496|      3|		}
  497|       |
  498|     23|		p->value = zend_long_to_str(err);
  499|     23|		EG(error_reporting) = err;
  ------------------
  |  |   45|     23|# define EG(v) (executor_globals.v)
  ------------------
  500|     23|	}
  501|       |
  502|     28|	RETURN_LONG(old_error_reporting);
  ------------------
  |  | 1048|     28|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|     28|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|     28|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|     28|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|     28|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|     28|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|     28|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|     28|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|     28|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|     28|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 28]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  503|     28|}
zif_define:
  558|     34|{
  559|     34|	zend_string *name;
  560|     34|	zval *val;
  561|     34|	bool non_cs = 0;
  562|     34|	zend_constant c;
  563|       |
  564|    102|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|     34|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     34|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     34|		const int _flags = (flags); \
  |  |  |  | 1599|     34|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     34|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     34|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     34|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     34|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     34|		uint32_t _i = 0; \
  |  |  |  | 1603|     34|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     34|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     34|		char *_error = NULL; \
  |  |  |  | 1606|     34|		bool _dummy = 0; \
  |  |  |  | 1607|     34|		bool _optional = 0; \
  |  |  |  | 1608|     34|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     34|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     34|		((void)_i); \
  |  |  |  | 1610|     34|		((void)_real_arg); \
  |  |  |  | 1611|     34|		((void)_arg); \
  |  |  |  | 1612|     34|		((void)_expected_type); \
  |  |  |  | 1613|     34|		((void)_error); \
  |  |  |  | 1614|     34|		((void)_optional); \
  |  |  |  | 1615|     34|		((void)_dummy); \
  |  |  |  | 1616|     34|		\
  |  |  |  | 1617|     34|		do { \
  |  |  |  | 1618|     34|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     68|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     34|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     34|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     34|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     34|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     34|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  565|    136|		Z_PARAM_STR(name)
  ------------------
  |  | 2102|     34|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     34|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     34|	++_i; \
  |  |  |  |  |  | 1654|     34|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     34|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     34|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     34|	_real_arg++; \
  |  |  |  |  |  | 1660|     34|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     34|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     34|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     34|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (565:3): [True: 34, False: 0]
  |  Branch (565:3): [True: 0, False: 0]
  |  Branch (565:3): [True: 34, False: 0]
  |  Branch (565:3): [True: 0, False: 0]
  |  Branch (565:3): [True: 34, False: 0]
  |  Branch (565:3): [True: 0, False: 0]
  |  Branch (565:3): [True: 0, False: 34]
  |  Branch (565:3): [True: 34, False: 0]
  |  Branch (565:3): [True: 0, False: 0]
  |  Branch (565:3): [True: 0, False: 0]
  ------------------
  566|    170|		Z_PARAM_ZVAL(val)
  ------------------
  |  | 2116|     34|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     34|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     34|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     34|	++_i; \
  |  |  |  |  |  |  |  | 1654|     34|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     34|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     34|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 34]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     34|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     34|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     34|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 34]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     34|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 34]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     34|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (566:3): [True: 34, False: 0]
  |  Branch (566:3): [True: 0, False: 0]
  |  Branch (566:3): [True: 34, False: 0]
  |  Branch (566:3): [True: 0, False: 0]
  |  Branch (566:3): [True: 34, False: 0]
  |  Branch (566:3): [True: 0, False: 0]
  |  Branch (566:3): [True: 0, False: 34]
  |  Branch (566:3): [True: 34, False: 0]
  |  Branch (566:3): [True: 0, False: 0]
  |  Branch (566:3): [True: 0, False: 0]
  ------------------
  567|    170|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     34|	_optional = 1;
  ------------------
  568|    170|		Z_PARAM_BOOL(non_cs)
  ------------------
  |  | 1735|     34|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     34|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     34|	++_i; \
  |  |  |  |  |  | 1654|     34|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     34|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     34|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 34, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     34|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 34, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     34|	} \
  |  |  |  |  |  | 1659|     34|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (568:3): [True: 34, False: 0]
  |  Branch (568:3): [True: 0, False: 0]
  |  Branch (568:3): [True: 0, False: 34]
  |  Branch (568:3): [True: 34, False: 0]
  |  Branch (568:3): [True: 34, False: 0]
  |  Branch (568:3): [True: 0, False: 0]
  |  Branch (568:3): [True: 34, False: 0]
  |  Branch (568:3): [True: 0, False: 0]
  |  Branch (568:3): [True: 0, False: 0]
  |  Branch (568:3): [True: 0, False: 0]
  ------------------
  569|     34|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     34|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     34|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (569:2): [True: 0, False: 0]
  |  Branch (569:2): [True: 0, False: 0]
  |  Branch (569:2): [True: 0, False: 0]
  |  Branch (569:2): [True: 0, False: 0]
  ------------------
  570|       |
  571|     34|	if (zend_memnstr(ZSTR_VAL(name), "::", sizeof("::") - 1, ZSTR_VAL(name) + ZSTR_LEN(name))) {
  ------------------
  |  |   67|     34|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (zend_memnstr(ZSTR_VAL(name), "::", sizeof("::") - 1, ZSTR_VAL(name) + ZSTR_LEN(name))) {
  ------------------
  |  |   67|     34|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (zend_memnstr(ZSTR_VAL(name), "::", sizeof("::") - 1, ZSTR_VAL(name) + ZSTR_LEN(name))) {
  ------------------
  |  |   68|     34|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (571:6): [True: 0, False: 34]
  ------------------
  572|      0|		zend_argument_value_error(1, "cannot be a class constant");
  573|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (573:3): [True: 0, False: 0]
  |  Branch (573:3): [True: 0, False: 0]
  ------------------
  574|      0|	}
  575|       |
  576|     34|	if (non_cs) {
  ------------------
  |  Branch (576:6): [True: 0, False: 34]
  ------------------
  577|      0|		zend_error(E_WARNING, "define(): Argument #3 ($case_insensitive) is ignored since declaration of case-insensitive constants is no longer supported");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  578|      0|	}
  579|       |
  580|     34|	if (Z_TYPE_P(val) == IS_ARRAY && Z_REFCOUNTED_P(val)) {
  ------------------
  |  |  669|     34|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     34|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) == IS_ARRAY && Z_REFCOUNTED_P(val)) {
  ------------------
  |  |  613|     68|#define IS_ARRAY					7
  ------------------
              	if (Z_TYPE_P(val) == IS_ARRAY && Z_REFCOUNTED_P(val)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (580:6): [True: 0, False: 34]
  ------------------
  581|      0|		if (!validate_constant_array_argument(Z_ARRVAL_P(val), 2)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (581:7): [True: 0, False: 0]
  ------------------
  582|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (582:4): [True: 0, False: 0]
  |  Branch (582:4): [True: 0, False: 0]
  ------------------
  583|      0|		} else {
  584|      0|			copy_constant_array(&c.value, val);
  585|      0|		}
  586|     34|	} else {
  587|     34|		ZVAL_COPY(&c.value, val);
  ------------------
  |  | 1425|     34|	do {												\
  |  | 1426|     34|		zval *_z1 = (z);								\
  |  | 1427|     34|		const zval *_z2 = (v);							\
  |  | 1428|     34|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     34|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     34|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     34|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     34|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     34|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     34|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     34|	do {												\
  |  |  |  | 1408|     34|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     34|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     34|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     34|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     34|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     34|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     34|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     34|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     34|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     34|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 9, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      9|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      9|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      9|		}												\
  |  | 1434|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
  588|     34|	}
  589|       |
  590|       |	/* non persistent */
  591|     34|	ZEND_CONSTANT_SET_FLAGS(&c, 0, PHP_USER_CONSTANT);
  ------------------
  |  |   56|     34|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|     34|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|     34|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|     34|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
  592|     34|	c.name = zend_string_copy(name);
  593|     34|	RETURN_BOOL(zend_register_constant(&c) != NULL);
  ------------------
  |  | 1046|     34|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|     34|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|     34|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|     34|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     34|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     34|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|     34|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|     31|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     37|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 31, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|     34|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  594|     34|}
zif_defined:
  600|      5|{
  601|      5|	zend_string *name;
  602|       |
  603|     15|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  604|     20|		Z_PARAM_STR(name)
  ------------------
  |  | 2102|      5|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      5|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (604:3): [True: 5, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 5, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 5, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 0, False: 5]
  |  Branch (604:3): [True: 5, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  ------------------
  605|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      5|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (605:2): [True: 5, False: 0]
  |  Branch (605:2): [True: 0, False: 0]
  |  Branch (605:2): [True: 5, False: 0]
  |  Branch (605:2): [True: 0, False: 0]
  ------------------
  606|       |
  607|      5|	RETURN_BOOL(zend_get_constant_ex(name, zend_get_executed_scope(), ZEND_FETCH_CLASS_SILENT));
  ------------------
  |  | 1046|      5|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      5|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      5|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      5|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      5|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      8|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 2, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  608|      5|}
zif_get_class:
  613|      5|{
  614|      5|	zval *obj = NULL;
  615|       |
  616|      5|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|o", &obj) == FAILURE) {
  ------------------
  |  |  529|      5|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (616:6): [True: 0, False: 5]
  ------------------
  617|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (617:3): [True: 0, False: 0]
  |  Branch (617:3): [True: 0, False: 0]
  ------------------
  618|      0|	}
  619|       |
  620|      5|	if (!obj) {
  ------------------
  |  Branch (620:6): [True: 0, False: 5]
  ------------------
  621|      0|		const zend_class_entry *scope = zend_get_executed_scope();
  622|       |
  623|      0|		if (scope) {
  ------------------
  |  Branch (623:7): [True: 0, False: 0]
  ------------------
  624|      0|			zend_error(E_DEPRECATED, "Calling get_class() without arguments is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  625|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  626|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (626:5): [True: 0, False: 0]
  |  Branch (626:5): [True: 0, False: 0]
  ------------------
  627|      0|			}
  628|      0|			RETURN_STR_COPY(scope->name);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
  629|      0|		} else {
  630|      0|			zend_throw_error(NULL, "get_class() without arguments must be called from within a class");
  631|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (631:4): [True: 0, False: 0]
  |  Branch (631:4): [True: 0, False: 0]
  ------------------
  632|      0|		}
  633|      0|	}
  634|       |
  635|      5|	RETURN_STR_COPY(Z_OBJCE_P(obj)->name);
  ------------------
  |  | 1053|      5|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      5|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      5|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      5|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      5|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      5|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      5|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      5|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 4, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      4|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      4|		} else {										\
  |  |  |  |  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      1|		}												\
  |  |  |  |  |  | 1123|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
  636|      5|}
zif_get_called_class:
  641|      1|{
  642|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      1|			zend_wrong_parameters_none_error(); \
  |  | 1634|      1|			return; \
  |  | 1635|      1|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  643|       |
  644|      0|	const zend_class_entry *called_scope = zend_get_called_scope(execute_data);
  645|      0|	if (!called_scope) {
  ------------------
  |  Branch (645:6): [True: 0, False: 0]
  ------------------
  646|      0|		zend_throw_error(NULL, "get_called_class() must be called from within a class");
  647|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (647:3): [True: 0, False: 0]
  |  Branch (647:3): [True: 0, False: 0]
  ------------------
  648|      0|	}
  649|       |
  650|      0|	RETURN_STR_COPY(called_scope->name);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
  651|      0|}
zif_get_class_vars:
  793|      5|{
  794|      5|	zend_class_entry *ce = NULL;
  795|       |
  796|      5|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "C", &ce) == FAILURE) {
  ------------------
  |  |  529|      5|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (796:6): [True: 0, False: 5]
  ------------------
  797|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (797:3): [True: 0, False: 0]
  |  Branch (797:3): [True: 0, False: 0]
  ------------------
  798|      0|	}
  799|       |
  800|      5|	array_init(return_value);
  801|      5|	if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  802|      0|		if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  803|      0|			return;
  804|      0|		}
  805|      0|	}
  806|       |
  807|      5|	const zend_class_entry *scope = zend_get_executed_scope();
  808|      5|	add_class_vars(scope, ce, false, return_value);
  809|       |	add_class_vars(scope, ce, true, return_value);
  810|      5|}
zif_get_object_vars:
  815|      1|{
  816|      1|	zval *value;
  817|      1|	HashTable *properties;
  818|      1|	zend_string *key;
  819|      1|	zend_object *zobj;
  820|      1|	zend_ulong num_key;
  821|       |
  822|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  823|      4|		Z_PARAM_OBJ(zobj)
  ------------------
  |  | 1964|      1|	Z_PARAM_OBJ_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1956|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1957|      1|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1958|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1958:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1959|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1960|      0|			break; \
  |  |  |  | 1961|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (823:3): [True: 1, False: 0]
  |  Branch (823:3): [True: 0, False: 0]
  |  Branch (823:3): [True: 1, False: 0]
  |  Branch (823:3): [True: 0, False: 0]
  |  Branch (823:3): [True: 1, False: 0]
  |  Branch (823:3): [True: 0, False: 0]
  |  Branch (823:3): [True: 0, False: 1]
  |  Branch (823:3): [True: 1, False: 0]
  |  Branch (823:3): [True: 0, False: 0]
  |  Branch (823:3): [True: 0, False: 0]
  ------------------
  824|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (824:2): [True: 1, False: 0]
  |  Branch (824:2): [True: 0, False: 0]
  |  Branch (824:2): [True: 1, False: 0]
  |  Branch (824:2): [True: 0, False: 0]
  ------------------
  825|       |
  826|      1|	zval obj_zv;
  827|      1|	ZVAL_OBJ(&obj_zv, zobj);
  ------------------
  |  | 1140|      1|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      1|		zval *__z = (z);						\
  |  | 1142|      1|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  828|      1|	properties = zend_get_properties_for(&obj_zv, ZEND_PROP_PURPOSE_GET_OBJECT_VARS);
  829|      1|	if (properties == NULL) {
  ------------------
  |  Branch (829:6): [True: 0, False: 1]
  ------------------
  830|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
  831|      0|	}
  832|       |
  833|      1|	if (!zobj->ce->default_properties_count && properties == zobj->properties && !GC_IS_RECURSIVE(properties)) {
  ------------------
  |  |  887|      1|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|      1|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  ------------------
  |  Branch (833:6): [True: 1, False: 0]
  |  Branch (833:45): [True: 1, False: 0]
  |  Branch (833:79): [True: 1, False: 0]
  ------------------
  834|       |		/* fast copy */
  835|      1|		bool always_duplicate = zobj->handlers != &std_object_handlers;
  836|      1|		RETVAL_ARR(zend_proptable_to_symtable(properties, always_duplicate));
  ------------------
  |  | 1035|      1|#define RETVAL_ARR(r)					ZVAL_ARR(return_value, r)
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  837|      1|	} else {
  838|      0|		array_init_size(return_value, zend_hash_num_elements(properties));
  839|       |
  840|      0|		ZEND_HASH_FOREACH_KEY_VAL(properties, num_key, key, value) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
  841|      0|			bool is_dynamic = 1;
  842|      0|			zval tmp;
  843|      0|			ZVAL_UNDEF(&tmp);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  844|      0|			if (Z_TYPE_P(value) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(value) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (844:8): [True: 0, False: 0]
  ------------------
  845|      0|				value = Z_INDIRECT_P(value);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  846|      0|				if (UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  847|      0|					continue;
  848|      0|				}
  849|       |
  850|      0|				is_dynamic = 0;
  851|      0|			} else if (Z_TYPE_P(value) == IS_PTR) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(value) == IS_PTR) {
  ------------------
  |  |  630|      0|#define IS_PTR						13
  ------------------
  |  Branch (851:15): [True: 0, False: 0]
  ------------------
  852|      0|				is_dynamic = 0;
  853|      0|			}
  854|       |
  855|      0|			if (key && zend_check_property_access(zobj, key, is_dynamic) == FAILURE) {
  ------------------
  |  Branch (855:8): [True: 0, False: 0]
  |  Branch (855:15): [True: 0, False: 0]
  ------------------
  856|      0|				continue;
  857|      0|			}
  858|       |
  859|      0|			if (Z_ISREF_P(value) && Z_REFCOUNT_P(value) == 1) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(value) && Z_REFCOUNT_P(value) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (859:28): [True: 0, False: 0]
  ------------------
  860|      0|				value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  861|      0|			}
  862|      0|			if (Z_TYPE_P(value) == IS_PTR) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(value) == IS_PTR) {
  ------------------
  |  |  630|      0|#define IS_PTR						13
  ------------------
  |  Branch (862:8): [True: 0, False: 0]
  ------------------
  863|       |				/* value is IS_PTR for properties with hooks. */
  864|      0|				zend_property_info *prop_info = Z_PTR_P(value);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  865|      0|				if ((prop_info->flags & ZEND_ACC_VIRTUAL) && !prop_info->hooks[ZEND_PROPERTY_HOOK_GET]) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (865:9): [True: 0, False: 0]
  |  Branch (865:50): [True: 0, False: 0]
  ------------------
  866|      0|					continue;
  867|      0|				}
  868|      0|				const char *unmangled_name_cstr = zend_get_unmangled_property_name(prop_info->name);
  869|      0|				zend_string *unmangled_name = zend_string_init(unmangled_name_cstr, strlen(unmangled_name_cstr), false);
  870|      0|				value = zend_read_property_ex(prop_info->ce, zobj, unmangled_name, /* silent */ true, &tmp);
  871|      0|				zend_string_release_ex(unmangled_name, false);
  872|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  873|      0|					zend_release_properties(properties);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  874|      0|					zval_ptr_dtor(return_value);
  875|      0|					ZVAL_UNDEF(return_value);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  876|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (876:6): [True: 0, False: 0]
  |  Branch (876:6): [True: 0, False: 0]
  ------------------
  877|      0|				}
  878|      0|			}
  879|      0|			Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  880|       |
  881|      0|			if (UNEXPECTED(!key)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  882|       |				/* This case is only possible due to loopholes, e.g. ArrayObject */
  883|      0|				zend_hash_index_add(Z_ARRVAL_P(return_value), num_key, value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|      0|			} else if (!is_dynamic && ZSTR_VAL(key)[0] == 0) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (884:15): [True: 0, False: 0]
  |  Branch (884:30): [True: 0, False: 0]
  ------------------
  885|      0|				const char *prop_name, *class_name;
  886|      0|				size_t prop_len;
  887|      0|				zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_len);
  888|       |				/* We assume here that a mangled property name is never
  889|       |				 * numeric. This is probably a safe assumption, but
  890|       |				 * theoretically someone might write an extension with
  891|       |				 * private, numeric properties. Well, too bad.
  892|       |				 */
  893|      0|				zend_hash_str_add_new(Z_ARRVAL_P(return_value), prop_name, prop_len, value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  894|      0|			} else {
  895|      0|				zend_symtable_add_new(Z_ARRVAL_P(return_value), key, value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  896|      0|			}
  897|      0|			zval_ptr_dtor(&tmp);
  898|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  899|      0|	}
  900|      1|	zend_release_properties(properties);
  ------------------
  |  |  338|      1|#define zend_release_properties(ht) do { \
  |  |  339|      1|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  340|      1|		zend_array_release(ht); \
  |  |  341|      1|	} \
  |  |  342|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  901|      1|}
zif_get_class_methods:
  930|      2|{
  931|      2|	zval method_name;
  932|      2|	zend_class_entry *ce = NULL;
  933|      2|	zend_function *mptr;
  934|       |
  935|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  936|     10|		Z_PARAM_OBJ_OR_CLASS_NAME(ce)
  ------------------
  |  | 1763|      2|	Z_PARAM_OBJ_OR_CLASS_NAME_EX(dest, 0);
  |  |  ------------------
  |  |  |  | 1755|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1756|      2|	if (UNEXPECTED(!zend_parse_arg_obj_or_class_name(_arg, &dest, allow_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1757|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_CLASS_NAME_OR_NULL : Z_EXPECTED_OBJECT_OR_CLASS_NAME; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1757:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1758|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1759|      0|		break; \
  |  |  |  | 1760|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (936:3): [True: 2, False: 0]
  |  Branch (936:3): [True: 0, False: 0]
  |  Branch (936:3): [True: 2, False: 0]
  |  Branch (936:3): [True: 0, False: 0]
  |  Branch (936:3): [True: 2, False: 0]
  |  Branch (936:3): [True: 0, False: 0]
  |  Branch (936:3): [True: 0, False: 2]
  |  Branch (936:3): [True: 2, False: 0]
  |  Branch (936:3): [True: 0, False: 0]
  |  Branch (936:3): [True: 0, False: 0]
  ------------------
  937|     10|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (937:2): [True: 2, False: 0]
  |  Branch (937:2): [True: 0, False: 0]
  |  Branch (937:2): [True: 2, False: 0]
  |  Branch (937:2): [True: 0, False: 0]
  ------------------
  938|       |
  939|      2|	array_init(return_value);
  940|      2|	const zend_class_entry *scope = zend_get_executed_scope();
  941|       |
  942|     12|	ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, mptr) {
  ------------------
  |  | 1341|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      6|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      4|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (942:2): [True: 0, False: 2]
  |  Branch (942:2): [True: 2, False: 0]
  ------------------
  943|     12|		if (zend_check_method_accessible(mptr, scope)) {
  ------------------
  |  Branch (943:7): [True: 4, False: 0]
  ------------------
  944|      4|			ZVAL_STR_COPY(&method_name, mptr->common.function_name);
  ------------------
  |  | 1112|      4|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      4|		zval *__z = (z);								\
  |  | 1114|      4|		zend_string *__s = (s);							\
  |  | 1115|      4|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      4|		/* interned strings support */					\
  |  | 1117|      4|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 4]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  945|      4|			zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  946|      4|		}
  947|     12|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  948|      2|}
zif_method_exists:
  953|     22|{
  954|     22|	zval *klass;
  955|     22|	zend_string *method_name;
  956|     22|	zend_string *lcname;
  957|     22|	zend_class_entry *ce;
  958|     22|	zend_function *func;
  959|       |
  960|       |	/* We do not use Z_PARAM_OBJ_OR_STR here to be able to exclude int, float, and bool which are bogus class names */
  961|     65|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|     22|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     22|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     22|		const int _flags = (flags); \
  |  |  |  | 1599|     22|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     22|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     22|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     22|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     22|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     22|		uint32_t _i = 0; \
  |  |  |  | 1603|     22|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     22|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     22|		char *_error = NULL; \
  |  |  |  | 1606|     22|		bool _dummy = 0; \
  |  |  |  | 1607|     22|		bool _optional = 0; \
  |  |  |  | 1608|     22|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     22|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     22|		((void)_i); \
  |  |  |  | 1610|     22|		((void)_real_arg); \
  |  |  |  | 1611|     22|		((void)_arg); \
  |  |  |  | 1612|     22|		((void)_expected_type); \
  |  |  |  | 1613|     22|		((void)_error); \
  |  |  |  | 1614|     22|		((void)_optional); \
  |  |  |  | 1615|     22|		((void)_dummy); \
  |  |  |  | 1616|     22|		\
  |  |  |  | 1617|     22|		do { \
  |  |  |  | 1618|     22|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     44|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     22|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|     22|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     22|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     22|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     21|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  962|     84|		Z_PARAM_ZVAL(klass)
  ------------------
  |  | 2116|     21|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     21|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     21|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     21|	++_i; \
  |  |  |  |  |  |  |  | 1654|     21|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     21|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     21|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 21]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     21|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     21|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     21|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 21]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     21|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 21]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     21|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (962:3): [True: 21, False: 0]
  |  Branch (962:3): [True: 0, False: 0]
  |  Branch (962:3): [True: 21, False: 0]
  |  Branch (962:3): [True: 0, False: 0]
  |  Branch (962:3): [True: 21, False: 0]
  |  Branch (962:3): [True: 0, False: 0]
  |  Branch (962:3): [True: 0, False: 21]
  |  Branch (962:3): [True: 21, False: 0]
  |  Branch (962:3): [True: 0, False: 0]
  |  Branch (962:3): [True: 0, False: 0]
  ------------------
  963|     84|		Z_PARAM_STR(method_name)
  ------------------
  |  | 2102|     21|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     21|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     21|	++_i; \
  |  |  |  |  |  | 1654|     21|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     21|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     21|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     21|	_real_arg++; \
  |  |  |  |  |  | 1660|     21|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     21|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     21|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     21|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (963:3): [True: 21, False: 0]
  |  Branch (963:3): [True: 0, False: 0]
  |  Branch (963:3): [True: 21, False: 0]
  |  Branch (963:3): [True: 0, False: 0]
  |  Branch (963:3): [True: 21, False: 0]
  |  Branch (963:3): [True: 0, False: 0]
  |  Branch (963:3): [True: 0, False: 21]
  |  Branch (963:3): [True: 21, False: 0]
  |  Branch (963:3): [True: 0, False: 0]
  |  Branch (963:3): [True: 0, False: 0]
  ------------------
  964|     22|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     21|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     21|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     21|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  |  | 1641|     22|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     22|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (964:2): [True: 21, False: 0]
  |  Branch (964:2): [True: 0, False: 0]
  |  Branch (964:2): [True: 21, False: 0]
  |  Branch (964:2): [True: 0, False: 0]
  ------------------
  965|       |
  966|     21|	if (Z_TYPE_P(klass) == IS_OBJECT) {
  ------------------
  |  |  669|     21|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     21|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(klass) == IS_OBJECT) {
  ------------------
  |  |  614|     21|#define IS_OBJECT					8
  ------------------
  |  Branch (966:6): [True: 6, False: 15]
  ------------------
  967|      6|		ce = Z_OBJCE_P(klass);
  ------------------
  |  | 1012|      6|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      6|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  968|     15|	} else if (Z_TYPE_P(klass) == IS_STRING) {
  ------------------
  |  |  669|     15|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     15|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(klass) == IS_STRING) {
  ------------------
  |  |  612|     15|#define IS_STRING					6
  ------------------
  |  Branch (968:13): [True: 14, False: 1]
  ------------------
  969|     14|		if ((ce = zend_lookup_class(Z_STR_P(klass))) == NULL) {
  ------------------
  |  |  982|     14|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     14|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (969:7): [True: 3, False: 11]
  ------------------
  970|      3|			RETURN_FALSE;
  ------------------
  |  | 1069|      3|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      3|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  971|      3|		}
  972|     14|	} else {
  973|      1|		zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(klass));
  974|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (974:3): [True: 0, False: 1]
  |  Branch (974:3): [True: 1, False: 0]
  ------------------
  975|      1|	}
  976|       |
  977|     17|	lcname = zend_string_tolower(method_name);
  978|     17|	func = zend_hash_find_ptr(&ce->function_table, lcname);
  979|     17|	zend_string_release_ex(lcname, 0);
  980|       |
  981|     17|	if (func) {
  ------------------
  |  Branch (981:6): [True: 2, False: 15]
  ------------------
  982|       |		/* Exclude shadow properties when checking a method on a specific class. Include
  983|       |		 * them when checking an object, as method_exists() generally ignores visibility.
  984|       |		 * TODO: Should we use EG(scope) for the object case instead? */
  985|      2|		RETURN_BOOL(Z_TYPE_P(klass) == IS_OBJECT
  ------------------
  |  | 1046|      2|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      2|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      6|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 2]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 2, False: 0]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  986|      2|			|| !(func->common.fn_flags & ZEND_ACC_PRIVATE) || func->common.scope == ce);
  987|      2|	}
  988|       |
  989|     15|	if (Z_TYPE_P(klass) == IS_OBJECT) {
  ------------------
  |  |  669|     15|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     15|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(klass) == IS_OBJECT) {
  ------------------
  |  |  614|     15|#define IS_OBJECT					8
  ------------------
  |  Branch (989:6): [True: 6, False: 9]
  ------------------
  990|      6|		zend_object *obj = Z_OBJ_P(klass);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  991|      6|		func = Z_OBJ_HT_P(klass)->get_method(&obj, method_name, NULL);
  ------------------
  |  | 1003|      6|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      6|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  992|      6|		if (func != NULL) {
  ------------------
  |  Branch (992:7): [True: 6, False: 0]
  ------------------
  993|      6|			if (func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      6|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (993:8): [True: 2, False: 4]
  ------------------
  994|       |				/* Returns true for the fake Closure's __invoke */
  995|      2|				RETVAL_BOOL(func->common.scope == zend_ce_closure
  ------------------
  |  | 1020|      2|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      8|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:5): [True: 2, False: 0]
  |  |  |  |  |  Branch (1073:5): [True: 2, False: 0]
  |  |  |  |  |  Branch (1073:5): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  996|      2|					&& zend_string_equals_literal_ci(method_name, ZEND_INVOKE_FUNC_NAME));
  997|       |
  998|      2|				zend_string_release_ex(func->common.function_name, 0);
  999|      2|				zend_free_trampoline(func);
  ------------------
  |  |  344|      2|#define zend_free_trampoline(func) do { \
  |  |  345|      2|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      2|		} else { \
  |  |  349|      2|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      2|		} \
  |  |  351|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1000|      2|				return;
 1001|      2|			}
 1002|      4|			RETURN_TRUE;
  ------------------
  |  | 1070|      4|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      4|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      4|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      4|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      4|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1003|      4|		}
 1004|      9|	} else {
 1005|       |	    /* Returns true for fake Closure::__invoke */
 1006|      9|	    if (ce == zend_ce_closure
  ------------------
  |  Branch (1006:10): [True: 7, False: 2]
  ------------------
 1007|      7|	        && zend_string_equals_literal_ci(method_name, ZEND_INVOKE_FUNC_NAME)) {
  ------------------
  |  |  404|      7|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 3, False: 4]
  |  |  |  Branch (404:40): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 1008|      2|	        RETURN_TRUE;
  ------------------
  |  | 1070|      2|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      2|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      2|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      2|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1009|      2|	    }
 1010|      9|	}
 1011|      7|	RETURN_FALSE;
  ------------------
  |  | 1069|      7|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      7|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      7|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      7|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      7|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1012|      7|}
zif_property_exists:
 1046|      1|{
 1047|      1|	zval *object;
 1048|      1|	zend_string *property;
 1049|       |
 1050|       |	/* We do not use Z_PARAM_OBJ_OR_STR here to be able to exclude int, float, and bool which are bogus class names */
 1051|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "zS", &object, &property) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1051:6): [True: 0, False: 1]
  ------------------
 1052|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1052:3): [True: 0, False: 0]
  |  Branch (1052:3): [True: 0, False: 0]
  ------------------
 1053|      0|	}
 1054|       |
 1055|      1|	_property_exists(return_value, object, property);
 1056|      1|}
zif_class_exists:
 1121|     10|{
 1122|     10|	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED, ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT);
  ------------------
  |  |  587|     10|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED, ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT);
  ------------------
  |  |  287|     10|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
              	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED, ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT);
  ------------------
  |  |  281|     10|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED, ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT);
  ------------------
  |  |  282|     10|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
 1123|     10|}
zif_interface_exists:
 1156|      2|{
 1157|      2|	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED|ZEND_ACC_INTERFACE, 0);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED|ZEND_ACC_INTERFACE, 0);
  ------------------
  |  |  287|      2|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
              	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED|ZEND_ACC_INTERFACE, 0);
  ------------------
  |  |  281|      2|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
 1158|      2|}
zif_trait_exists:
 1163|     10|{
 1164|     10|	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_TRAIT, 0);
  ------------------
  |  |  587|     10|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	class_exists_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_TRAIT, 0);
  ------------------
  |  |  282|     10|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
 1165|     10|}
zif_function_exists:
 1175|      2|{
 1176|      2|	zend_string *name;
 1177|      2|	bool exists;
 1178|      2|	zend_string *lcname;
 1179|       |
 1180|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1181|      8|		Z_PARAM_STR(name)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1181:3): [True: 2, False: 0]
  |  Branch (1181:3): [True: 0, False: 0]
  |  Branch (1181:3): [True: 2, False: 0]
  |  Branch (1181:3): [True: 0, False: 0]
  |  Branch (1181:3): [True: 2, False: 0]
  |  Branch (1181:3): [True: 0, False: 0]
  |  Branch (1181:3): [True: 0, False: 2]
  |  Branch (1181:3): [True: 2, False: 0]
  |  Branch (1181:3): [True: 0, False: 0]
  |  Branch (1181:3): [True: 0, False: 0]
  ------------------
 1182|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1182:2): [True: 2, False: 0]
  |  Branch (1182:2): [True: 0, False: 0]
  |  Branch (1182:2): [True: 2, False: 0]
  |  Branch (1182:2): [True: 0, False: 0]
  ------------------
 1183|       |
 1184|      2|	if (ZSTR_VAL(name)[0] == '\\') {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1184:6): [True: 0, False: 2]
  ------------------
 1185|       |		/* Ignore leading "\" */
 1186|      0|		lcname = zend_string_alloc(ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1187|      0|		zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1188|      2|	} else {
 1189|      2|		lcname = zend_string_tolower(name);
 1190|      2|	}
 1191|       |
 1192|      2|	exists = zend_hash_exists(EG(function_table), lcname);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1193|      2|	zend_string_release_ex(lcname, 0);
 1194|       |
 1195|      2|	RETURN_BOOL(exists);
  ------------------
  |  | 1046|      2|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      2|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1196|      2|}
zif_class_alias:
 1201|     38|{
 1202|     38|	zend_string *class_name;
 1203|     38|	zend_string *alias_name;
 1204|     38|	zend_class_entry *ce;
 1205|     38|	bool autoload = 1;
 1206|       |
 1207|    114|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|     38|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     38|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     38|		const int _flags = (flags); \
  |  |  |  | 1599|     38|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     38|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     38|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     38|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     38|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     38|		uint32_t _i = 0; \
  |  |  |  | 1603|     38|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     38|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     38|		char *_error = NULL; \
  |  |  |  | 1606|     38|		bool _dummy = 0; \
  |  |  |  | 1607|     38|		bool _optional = 0; \
  |  |  |  | 1608|     38|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     38|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     38|		((void)_i); \
  |  |  |  | 1610|     38|		((void)_real_arg); \
  |  |  |  | 1611|     38|		((void)_arg); \
  |  |  |  | 1612|     38|		((void)_expected_type); \
  |  |  |  | 1613|     38|		((void)_error); \
  |  |  |  | 1614|     38|		((void)_optional); \
  |  |  |  | 1615|     38|		((void)_dummy); \
  |  |  |  | 1616|     38|		\
  |  |  |  | 1617|     38|		do { \
  |  |  |  | 1618|     38|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     76|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     38|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     38|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     38|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     38|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     38|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1208|    152|		Z_PARAM_STR(class_name)
  ------------------
  |  | 2102|     38|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     38|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     38|	++_i; \
  |  |  |  |  |  | 1654|     38|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     38|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     38|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     38|	_real_arg++; \
  |  |  |  |  |  | 1660|     38|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     38|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     38|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     38|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1208:3): [True: 38, False: 0]
  |  Branch (1208:3): [True: 0, False: 0]
  |  Branch (1208:3): [True: 38, False: 0]
  |  Branch (1208:3): [True: 0, False: 0]
  |  Branch (1208:3): [True: 38, False: 0]
  |  Branch (1208:3): [True: 0, False: 0]
  |  Branch (1208:3): [True: 0, False: 38]
  |  Branch (1208:3): [True: 38, False: 0]
  |  Branch (1208:3): [True: 0, False: 0]
  |  Branch (1208:3): [True: 0, False: 0]
  ------------------
 1209|    190|		Z_PARAM_STR(alias_name)
  ------------------
  |  | 2102|     38|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     38|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     38|	++_i; \
  |  |  |  |  |  | 1654|     38|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     38|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     38|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     38|	_real_arg++; \
  |  |  |  |  |  | 1660|     38|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     38|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     38|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     38|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1209:3): [True: 38, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 38, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 38, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 0, False: 38]
  |  Branch (1209:3): [True: 38, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  ------------------
 1210|     38|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     38|	_optional = 1;
  ------------------
 1211|     82|		Z_PARAM_BOOL(autoload)
  ------------------
  |  | 1735|     38|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     38|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     38|	++_i; \
  |  |  |  |  |  | 1654|     38|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     38|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     38|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     38|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 35, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     38|	} \
  |  |  |  |  |  | 1659|     38|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      3|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1211:3): [True: 38, False: 0]
  |  Branch (1211:3): [True: 0, False: 0]
  |  Branch (1211:3): [True: 0, False: 38]
  |  Branch (1211:3): [True: 38, False: 0]
  |  Branch (1211:3): [True: 38, False: 0]
  |  Branch (1211:3): [True: 0, False: 0]
  |  Branch (1211:3): [True: 38, False: 0]
  |  Branch (1211:3): [True: 0, False: 0]
  |  Branch (1211:3): [True: 0, False: 0]
  |  Branch (1211:3): [True: 0, False: 0]
  ------------------
 1212|     38|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|     38|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     38|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1212:2): [True: 3, False: 0]
  |  Branch (1212:2): [True: 0, False: 0]
  |  Branch (1212:2): [True: 3, False: 0]
  |  Branch (1212:2): [True: 0, False: 0]
  ------------------
 1213|       |
 1214|     38|	ce = zend_lookup_class_ex(class_name, NULL, !autoload ? ZEND_FETCH_CLASS_NO_AUTOLOAD : 0);
  ------------------
  |  | 1050|      1|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  |  Branch (1214:46): [True: 1, False: 37]
  ------------------
 1215|       |
 1216|     38|	if (ce) {
  ------------------
  |  Branch (1216:6): [True: 30, False: 8]
  ------------------
 1217|     30|		if (zend_register_class_alias_ex(ZSTR_VAL(alias_name), ZSTR_LEN(alias_name), ce, false) == SUCCESS) {
  ------------------
  |  |   67|     30|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if (zend_register_class_alias_ex(ZSTR_VAL(alias_name), ZSTR_LEN(alias_name), ce, false) == SUCCESS) {
  ------------------
  |  |   68|     30|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1217:7): [True: 21, False: 9]
  ------------------
 1218|     21|			RETURN_TRUE;
  ------------------
  |  | 1070|     21|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|     21|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|     21|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|     21|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|     21|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|     21|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1219|     21|		} else {
 1220|      9|			zend_class_redeclaration_error_ex(E_WARNING, alias_name, ce);
  ------------------
  |  |   23|      9|#define E_WARNING			(1<<1L)
  ------------------
 1221|      9|			RETURN_FALSE;
  ------------------
  |  | 1069|      9|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      9|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      9|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      9|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      9|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      9|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1222|      9|		}
 1223|     30|	} else {
 1224|      8|		zend_error(E_WARNING, "Class \"%s\" not found", ZSTR_VAL(class_name));
  ------------------
  |  |   23|      8|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Class \"%s\" not found", ZSTR_VAL(class_name));
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1225|      8|		RETURN_FALSE;
  ------------------
  |  | 1069|      8|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      8|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      8|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      8|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      8|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      8|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1226|      8|	}
 1227|     38|}
zif_get_included_files:
 1232|      1|{
 1233|      1|	zend_string *entry;
 1234|       |
 1235|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1236|       |
 1237|      1|	array_init(return_value);
 1238|      2|	ZEND_HASH_MAP_FOREACH_STR_KEY(&EG(included_files), entry) {
  ------------------
  |  | 1361|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|      0|	_key = _p->key;
  ------------------
  |  Branch (1238:2): [True: 0, False: 1]
  |  Branch (1238:2): [True: 1, False: 0]
  ------------------
 1239|      2|		if (entry) {
  ------------------
  |  Branch (1239:7): [True: 0, False: 0]
  ------------------
 1240|      0|			add_next_index_str(return_value, zend_string_copy(entry));
 1241|      0|		}
 1242|      2|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1243|      1|}
zif_trigger_error:
 1248|      2|{
 1249|      2|	zend_long error_type = E_USER_NOTICE;
  ------------------
  |  |   32|      2|#define E_USER_NOTICE		(1<<10L)
  ------------------
 1250|      2|	zend_string *message;
 1251|       |
 1252|      2|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|l", &message, &error_type) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1252:6): [True: 0, False: 2]
  ------------------
 1253|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1253:3): [True: 0, False: 0]
  |  Branch (1253:3): [True: 0, False: 0]
  ------------------
 1254|      0|	}
 1255|       |
 1256|      2|	switch (error_type) {
 1257|      2|		case E_USER_ERROR:
  ------------------
  |  |   30|      2|#define E_USER_ERROR		(1<<8L)
  ------------------
  |  Branch (1257:3): [True: 2, False: 0]
  ------------------
 1258|      2|			zend_error(E_DEPRECATED, "Passing E_USER_ERROR to trigger_error() is deprecated since 8.4,"
  ------------------
  |  |   36|      2|#define E_DEPRECATED		(1<<13L)
  ------------------
 1259|      2|				" throw an exception or call exit with a string message instead");
 1260|      2|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1261|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1261:5): [True: 0, False: 0]
  |  Branch (1261:5): [True: 0, False: 0]
  ------------------
 1262|      0|			}
 1263|      2|		case E_USER_WARNING:
  ------------------
  |  |   31|      2|#define E_USER_WARNING		(1<<9L)
  ------------------
  |  Branch (1263:3): [True: 0, False: 2]
  ------------------
 1264|      2|		case E_USER_NOTICE:
  ------------------
  |  |   32|      2|#define E_USER_NOTICE		(1<<10L)
  ------------------
  |  Branch (1264:3): [True: 0, False: 2]
  ------------------
 1265|      2|		case E_USER_DEPRECATED:
  ------------------
  |  |   37|      2|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
  |  Branch (1265:3): [True: 0, False: 2]
  ------------------
 1266|      2|			break;
 1267|      0|		default:
  ------------------
  |  Branch (1267:3): [True: 0, False: 2]
  ------------------
 1268|      0|			zend_argument_value_error(2, "must be one of E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE,"
 1269|      0|				" or E_USER_DEPRECATED");
 1270|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1270:4): [True: 0, False: 0]
  |  Branch (1270:4): [True: 0, False: 0]
  ------------------
 1271|      0|			break;
 1272|      2|	}
 1273|       |
 1274|      2|	zend_error_zstr_at(error_type, zend_get_executed_filename_ex(), zend_get_executed_lineno(), message);
 1275|       |	// TODO Change to void
 1276|      2|	RETURN_TRUE;
  ------------------
  |  | 1070|      2|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      2|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      2|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      2|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1277|      2|}
zif_set_exception_handler:
 1350|      7|{
 1351|      7|	zend_fcall_info fci;
 1352|      7|	zend_fcall_info_cache fcc;
 1353|       |
 1354|     21|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      7|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      7|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      7|		const int _flags = (flags); \
  |  |  |  | 1599|      7|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      7|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      7|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      7|		uint32_t _i = 0; \
  |  |  |  | 1603|      7|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      7|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      7|		char *_error = NULL; \
  |  |  |  | 1606|      7|		bool _dummy = 0; \
  |  |  |  | 1607|      7|		bool _optional = 0; \
  |  |  |  | 1608|      7|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      7|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      7|		((void)_i); \
  |  |  |  | 1610|      7|		((void)_real_arg); \
  |  |  |  | 1611|      7|		((void)_arg); \
  |  |  |  | 1612|      7|		((void)_expected_type); \
  |  |  |  | 1613|      7|		((void)_error); \
  |  |  |  | 1614|      7|		((void)_optional); \
  |  |  |  | 1615|      7|		((void)_dummy); \
  |  |  |  | 1616|      7|		\
  |  |  |  | 1617|      7|		do { \
  |  |  |  | 1618|      7|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      7|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      7|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      7|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1355|     28|		Z_PARAM_FUNC_OR_NULL(fci, fcc)
  ------------------
  |  | 1839|      7|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 1, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      7|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (1355:3): [True: 7, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 7, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 7, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 7]
  |  Branch (1355:3): [True: 7, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  ------------------
 1356|      7|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      7|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      7|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1641|      7|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1356:2): [True: 7, False: 0]
  |  Branch (1356:2): [True: 0, False: 0]
  |  Branch (1356:2): [True: 7, False: 0]
  |  Branch (1356:2): [True: 0, False: 0]
  ------------------
 1357|       |
 1358|      7|	if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF) {
  ------------------
  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF) {
  ------------------
  |  |  606|      7|#define IS_UNDEF					0
  ------------------
  |  Branch (1358:6): [True: 1, False: 6]
  ------------------
 1359|      1|		ZVAL_COPY(return_value, &EG(user_exception_handler));
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1360|      1|	}
 1361|       |
 1362|      7|	zend_stack_push(&EG(user_exception_handlers), &EG(user_exception_handler));
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
              	zend_stack_push(&EG(user_exception_handlers), &EG(user_exception_handler));
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
 1363|       |
 1364|      7|	if (!ZEND_FCI_INITIALIZED(fci)) { /* unset user-defined handler */
  ------------------
  |  |  342|      7|#define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
  ------------------
  |  Branch (1364:6): [True: 1, False: 6]
  ------------------
 1365|      1|		ZVAL_UNDEF(&EG(user_exception_handler));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1366|      1|		return;
 1367|      1|	}
 1368|       |
 1369|      6|	ZVAL_COPY(&EG(user_exception_handler), &(fci.function_name));
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1370|      6|}
zif_get_declared_traits:
 1434|      4|{
 1435|      4|	get_declared_class_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED | ZEND_ACC_TRAIT);
  ------------------
  |  |  587|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	get_declared_class_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED | ZEND_ACC_TRAIT);
  ------------------
  |  |  287|      4|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
              	get_declared_class_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED | ZEND_ACC_TRAIT);
  ------------------
  |  |  282|      4|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
 1436|      4|}
zif_get_declared_classes:
 1441|      7|{
 1442|      7|	get_declared_class_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED);
  ------------------
  |  |  587|      7|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	get_declared_class_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_LINKED);
  ------------------
  |  |  287|      7|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
 1443|      7|}
zif_get_defined_functions:
 1455|      9|{
 1456|      9|	zval internal, user;
 1457|      9|	zend_string *key;
 1458|      9|	zend_function *func;
 1459|      9|	bool exclude_disabled = true;
 1460|       |
 1461|      9|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|b", &exclude_disabled) == FAILURE) {
  ------------------
  |  |  529|      9|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      9|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      9|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1461:6): [True: 0, False: 9]
  ------------------
 1462|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1462:3): [True: 0, False: 0]
  |  Branch (1462:3): [True: 0, False: 0]
  ------------------
 1463|      0|	}
 1464|       |
 1465|      9|	if (ZEND_NUM_ARGS() == 1) {
  ------------------
  |  |  529|      9|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      9|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      9|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1465:6): [True: 9, False: 0]
  ------------------
 1466|      9|		zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      9|#define E_DEPRECATED		(1<<13L)
  ------------------
 1467|      9|			"get_defined_functions(): The $exclude_disabled parameter has no effect since PHP 8.0");
 1468|      9|	}
 1469|       |
 1470|      9|	array_init(&internal);
 1471|      9|	array_init(&user);
 1472|      9|	array_init(return_value);
 1473|       |
 1474|  12.4k|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(EG(function_table), key, func) {
  ------------------
  |  | 1448|  6.21k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      9|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      9|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      9|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      9|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      9|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      9|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  6.21k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 6.21k, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  6.21k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  6.21k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  6.21k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 6.21k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  6.21k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  6.21k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6.21k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|  6.21k|	_key = _p->key; \
  |  | 1450|  6.21k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      9|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      9|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1474:2): [True: 0, False: 9]
  |  Branch (1474:2): [True: 9, False: 0]
  ------------------
 1475|  12.4k|		if (key && ZSTR_VAL(key)[0] != 0) {
  ------------------
  |  |   67|  6.21k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1475:7): [True: 6.21k, False: 0]
  |  Branch (1475:14): [True: 6.21k, False: 0]
  ------------------
 1476|  6.21k|			if (func->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (1476:8): [True: 6.21k, False: 0]
  ------------------
 1477|  6.21k|				add_next_index_str(&internal, zend_string_copy(key));
 1478|  6.21k|			} else if (func->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (1478:15): [True: 0, False: 0]
  ------------------
 1479|      0|				add_next_index_str(&user, zend_string_copy(key));
 1480|      0|			}
 1481|  6.21k|		}
 1482|  12.4k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  6.21k|		} \
  |  | 1102|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1483|       |
 1484|      9|	zend_hash_str_add_new(Z_ARRVAL_P(return_value), "internal", sizeof("internal")-1, &internal);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1485|      9|	zend_hash_add_new(Z_ARRVAL_P(return_value), ZSTR_KNOWN(ZEND_STR_USER), &user);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1486|      9|}
zif_get_defined_vars:
 1491|      4|{
 1492|      4|	zend_array *symbol_table;
 1493|       |
 1494|      4|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      4|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      4|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1495|       |
 1496|      4|	if (zend_forbid_dynamic_call() == FAILURE) {
  ------------------
  |  Branch (1496:6): [True: 1, False: 3]
  ------------------
 1497|      1|		return;
 1498|      1|	}
 1499|       |
 1500|      3|	symbol_table = zend_rebuild_symbol_table();
 1501|      3|	if (UNEXPECTED(symbol_table == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1502|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1503|      0|	}
 1504|       |
 1505|      3|	RETURN_ARR(zend_array_dup(symbol_table));
  ------------------
  |  | 1061|      3|#define RETURN_ARR(r)					do { RETVAL_ARR(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1035|      3|#define RETVAL_ARR(r)					ZVAL_ARR(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  |  |  |  |  | 1127|      3|		zval *__z = (z);						\
  |  |  |  |  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1130|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1061:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1506|      3|}
zif_debug_print_backtrace:
 1847|     13|{
 1848|     13|	zend_long options = 0;
 1849|     13|	zend_long limit = 0;
 1850|     13|	zval backtrace;
 1851|       |
 1852|     13|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|ll", &options, &limit) == FAILURE) {
  ------------------
  |  |  529|     13|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     13|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     13|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1852:6): [True: 0, False: 13]
  ------------------
 1853|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1853:3): [True: 0, False: 0]
  |  Branch (1853:3): [True: 0, False: 0]
  ------------------
 1854|      0|	}
 1855|       |
 1856|     13|	zend_fetch_debug_backtrace(&backtrace, 1, options, limit);
 1857|     13|	ZEND_ASSERT(Z_TYPE(backtrace) == IS_ARRAY);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1857:2): [True: 0, False: 13]
  |  Branch (1857:2): [True: 13, False: 0]
  ------------------
 1858|       |
 1859|     13|	zend_string *str = zend_trace_to_string(Z_ARRVAL(backtrace), /* include_main */ false);
  ------------------
  |  |  996|     13|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|     13|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1860|     13|	ZEND_WRITE(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |  340|     13|#define ZEND_WRITE(str, str_len)		zend_write((str), (str_len))
  ------------------
 1861|     13|	zend_string_release(str);
 1862|     13|	zval_ptr_dtor(&backtrace);
 1863|     13|}
zend_fetch_debug_backtrace:
 1868|  13.8k|{
 1869|  13.8k|	zend_execute_data *call, *last_call = NULL;
 1870|  13.8k|	zend_object *object;
 1871|  13.8k|	bool fake_frame = false;
 1872|  13.8k|	int frameno = 0;
 1873|  13.8k|	zend_function *func;
 1874|  13.8k|	zend_string *filename;
 1875|  13.8k|	zend_string *include_filename = NULL;
 1876|  13.8k|	zval tmp;
 1877|  13.8k|	HashTable *stack_frame, *prev_stack_frame = NULL;
 1878|       |
 1879|  13.8k|	array_init(return_value);
 1880|       |
 1881|  13.8k|	call = EG(current_execute_data);
  ------------------
  |  |   45|  13.8k|# define EG(v) (executor_globals.v)
  ------------------
 1882|  13.8k|	if (!call) {
  ------------------
  |  Branch (1882:6): [True: 513, False: 13.2k]
  ------------------
 1883|    513|		return;
 1884|    513|	}
 1885|       |
 1886|  13.2k|	if (EG(filename_override)) {
  ------------------
  |  |   45|  13.2k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 12, False: 13.2k]
  |  |  ------------------
  ------------------
 1887|       |		// Add the current execution point to the frame so we don't lose it
 1888|     12|		zend_string *filename_override = EG(filename_override);
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1889|     12|		zend_long lineno_override = EG(lineno_override);
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1890|     12|		EG(filename_override) = NULL;
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1891|     12|		EG(lineno_override) = -1;
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1892|       |
 1893|     12|		zend_string *executed_filename = zend_get_executed_filename_ex();
 1894|     12|		uint32_t lineno = zend_get_executed_lineno();
 1895|     12|		if (executed_filename && (!zend_string_equals(executed_filename, filename_override) || lineno != lineno_override)) {
  ------------------
  |  Branch (1895:7): [True: 12, False: 0]
  |  Branch (1895:29): [True: 0, False: 12]
  |  Branch (1895:90): [True: 10, False: 2]
  ------------------
 1896|     10|			stack_frame = zend_new_array(8);
  ------------------
  |  |  342|     10|	_zend_new_array(size)
  ------------------
 1897|     10|			zend_hash_real_init_mixed(stack_frame);
 1898|     10|			ZVAL_STR_COPY(&tmp, executed_filename);
  ------------------
  |  | 1112|     10|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     10|		zval *__z = (z);								\
  |  | 1114|     10|		zend_string *__s = (s);							\
  |  | 1115|     10|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     10|		/* interned strings support */					\
  |  | 1117|     10|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 10]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     10|		} else {										\
  |  | 1120|     10|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     10|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     10|		}												\
  |  | 1123|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1899|     10|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
 1900|     10|			ZVAL_LONG(&tmp, lineno);
  ------------------
  |  | 1076|     10|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     10|		zval *__z = (z);				\
  |  | 1078|     10|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     10|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     10|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1901|     10|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
 1902|     10|			ZVAL_STR_COPY(&tmp, ZSTR_KNOWN(ZEND_STR_CONST_EXPR_PLACEHOLDER));
  ------------------
  |  | 1112|     10|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     10|		zval *__z = (z);								\
  |  | 1114|     10|		zend_string *__s = (s);							\
  |  | 1115|     10|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     10|		/* interned strings support */					\
  |  | 1117|     10|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 10, False: 0]
  |  |  ------------------
  |  | 1118|     10|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     10|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     10|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1903|     10|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
 1904|     10|			ZVAL_ARR(&tmp, stack_frame);
  ------------------
  |  | 1125|     10|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     10|		zend_array *__arr = (a);				\
  |  | 1127|     10|		zval *__z = (z);						\
  |  | 1128|     10|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     10|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     10|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     10|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     10|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1905|     10|			zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1906|     10|		}
 1907|       |
 1908|     12|		EG(filename_override) = filename_override;
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1909|     12|		EG(lineno_override) = lineno_override;
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1910|     12|	}
 1911|       |
 1912|  13.2k|	if (skip_last) {
  ------------------
  |  Branch (1912:6): [True: 23, False: 13.2k]
  ------------------
 1913|       |		/* skip debug_backtrace() */
 1914|     23|		last_call = call;
 1915|     23|		call = call->prev_execute_data;
 1916|     23|	}
 1917|       |
 1918|  37.6k|	while (call && (limit == 0 || frameno < limit)) {
  ------------------
  |  Branch (1918:9): [True: 24.3k, False: 13.2k]
  |  Branch (1918:18): [True: 24.3k, False: 2]
  |  Branch (1918:32): [True: 1, False: 1]
  ------------------
 1919|  24.3k|		if (UNEXPECTED(!call->func)) {
  ------------------
  |  |  457|  24.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 24.3k]
  |  |  ------------------
  ------------------
 1920|       |			/* This is the fake frame inserted for nested generators. Normally,
 1921|       |			 * this frame is preceded by the actual generator frame and then
 1922|       |			 * replaced by zend_generator_check_placeholder_frame() below.
 1923|       |			 * However, the frame is popped before cleaning the stack frame,
 1924|       |			 * which is observable by destructors. */
 1925|      0|			call = zend_generator_check_placeholder_frame(call);
 1926|      0|			ZEND_ASSERT(call->func);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1926:4): [True: 0, False: 0]
  |  Branch (1926:4): [True: 0, False: 0]
  ------------------
 1927|      0|		}
 1928|       |
 1929|  24.3k|		zend_execute_data *prev = call->prev_execute_data;
 1930|       |
 1931|  24.3k|		if (!prev) {
  ------------------
  |  Branch (1931:7): [True: 13.2k, False: 11.0k]
  ------------------
 1932|       |			/* add frame for a handler call without {main} code */
 1933|  13.2k|			if (EXPECTED((ZEND_CALL_INFO(call) & ZEND_CALL_TOP_FUNCTION) == 0)) {
  ------------------
  |  |  456|  13.2k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 13.2k]
  |  |  ------------------
  ------------------
 1934|      3|				break;
 1935|      3|			}
 1936|  13.2k|		} else if (UNEXPECTED((ZEND_CALL_INFO(call) & ZEND_CALL_GENERATOR) != 0)) {
  ------------------
  |  |  457|  11.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 13, False: 11.0k]
  |  |  ------------------
  ------------------
 1937|     13|			prev = zend_generator_check_placeholder_frame(prev);
 1938|     13|		}
 1939|       |
 1940|       |		/* For frameless calls we add an additional frame for the call itself. */
 1941|  24.3k|		if (ZEND_USER_CODE(call->func->type)) {
  ------------------
  |  | 1081|  24.3k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 13.8k, False: 10.5k]
  |  |  ------------------
  ------------------
 1942|  13.8k|			const zend_op *opline = call->opline;
 1943|  13.8k|			if (!ZEND_OP_IS_FRAMELESS_ICALL(opline->opcode)) {
  ------------------
  |  |   36|  13.8k|#define ZEND_OP_IS_FRAMELESS_ICALL(opcode) ((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
  |  |  ------------------
  |  |  |  |  326|  27.6k|#define ZEND_FRAMELESS_ICALL_0              204
  |  |  ------------------
  |  |               #define ZEND_OP_IS_FRAMELESS_ICALL(opcode) ((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
  |  |  ------------------
  |  |  |  |  329|      1|#define ZEND_FRAMELESS_ICALL_3              207
  |  |  ------------------
  |  |  |  Branch (36:45): [True: 1, False: 13.8k]
  |  |  |  Branch (36:83): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1944|  13.8k|				goto not_frameless_call;
 1945|  13.8k|			}
 1946|      0|			int num_args = ZEND_FLF_NUM_ARGS(opline->opcode);
  ------------------
  |  |   37|      0|#define ZEND_FLF_NUM_ARGS(opcode) ((opcode) - ZEND_FRAMELESS_ICALL_0)
  |  |  ------------------
  |  |  |  |  326|      0|#define ZEND_FRAMELESS_ICALL_0              204
  |  |  ------------------
  ------------------
 1947|       |			/* Check if any args were already freed. Skip the frame in that case. */
 1948|      0|			if (num_args >= 1) {
  ------------------
  |  Branch (1948:8): [True: 0, False: 0]
  ------------------
 1949|      0|				zval *arg = zend_get_zval_ptr(opline, opline->op1_type, &opline->op1, call);
 1950|      0|				if (Z_TYPE_P(arg) == IS_UNDEF) goto not_frameless_call;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(arg) == IS_UNDEF) goto not_frameless_call;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1950:9): [True: 0, False: 0]
  ------------------
 1951|      0|			}
 1952|      0|			if (num_args >= 2) {
  ------------------
  |  Branch (1952:8): [True: 0, False: 0]
  ------------------
 1953|      0|				zval *arg = zend_get_zval_ptr(opline, opline->op2_type, &opline->op2, call);
 1954|      0|				if (Z_TYPE_P(arg) == IS_UNDEF) goto not_frameless_call;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(arg) == IS_UNDEF) goto not_frameless_call;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1954:9): [True: 0, False: 0]
  ------------------
 1955|      0|			}
 1956|      0|			if (num_args >= 3) {
  ------------------
  |  Branch (1956:8): [True: 0, False: 0]
  ------------------
 1957|      0|				const zend_op *op_data = opline + 1;
 1958|      0|				zval *arg = zend_get_zval_ptr(op_data, op_data->op1_type, &op_data->op1, call);
 1959|      0|				if (Z_TYPE_P(arg) == IS_UNDEF) goto not_frameless_call;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(arg) == IS_UNDEF) goto not_frameless_call;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1959:9): [True: 0, False: 0]
  ------------------
 1960|      0|			}
 1961|      0|			zend_function *frameless_func = ZEND_FLF_FUNC(opline);
  ------------------
  |  |   38|      0|#define ZEND_FLF_FUNC(opline) (zend_flf_functions[(opline)->extended_value])
  ------------------
 1962|       |			/* Assume frameless functions are not recursive with themselves.
 1963|       |			 * This condition may be true when observers are enabled:
 1964|       |			 * Observers will put a call frame on top of the frameless opcode. */
 1965|      0|			if (last_call && last_call->func == frameless_func) {
  ------------------
  |  Branch (1965:8): [True: 0, False: 0]
  |  Branch (1965:21): [True: 0, False: 0]
  ------------------
 1966|      0|				goto not_frameless_call;
 1967|      0|			}
 1968|      0|			stack_frame = zend_new_array(8);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 1969|      0|			zend_hash_real_init_mixed(stack_frame);
 1970|      0|			ZVAL_STR_COPY(&tmp, frameless_func->common.function_name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1971|      0|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
 1972|       |			/* Steal file and line from the previous frame. */
 1973|      0|			if (call->func && ZEND_USER_CODE(call->func->common.type)) {
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1973:8): [True: 0, False: 0]
  ------------------
 1974|      0|				uint32_t lineno;
 1975|       |
 1976|      0|				filename = call->func->op_array.filename;
 1977|      0|				if (call->opline->opcode == ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|      0|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (1977:9): [True: 0, False: 0]
  ------------------
 1978|      0|					if (EG(opline_before_exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1979|      0|						lineno = EG(opline_before_exception)->lineno;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1980|      0|					} else {
 1981|      0|						lineno = call->func->op_array.line_end;
 1982|      0|					}
 1983|      0|				} else {
 1984|      0|					lineno = call->opline->lineno;
 1985|      0|				}
 1986|      0|				ZVAL_STR_COPY(&tmp, filename);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1987|      0|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
 1988|      0|				ZVAL_LONG(&tmp, lineno);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1989|      0|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
 1990|      0|				if (prev_stack_frame) {
  ------------------
  |  Branch (1990:9): [True: 0, False: 0]
  ------------------
 1991|      0|					zend_hash_del(prev_stack_frame, ZSTR_KNOWN(ZEND_STR_FILE));
 1992|      0|					zend_hash_del(prev_stack_frame, ZSTR_KNOWN(ZEND_STR_LINE));
 1993|      0|				}
 1994|      0|			}
 1995|      0|			if ((options & DEBUG_BACKTRACE_IGNORE_ARGS) == 0) {
  ------------------
  |  |  459|      0|#define DEBUG_BACKTRACE_IGNORE_ARGS    (1<<1)
  ------------------
  |  Branch (1995:8): [True: 0, False: 0]
  ------------------
 1996|      0|				HashTable *args = zend_new_array(8);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 1997|      0|				zend_hash_real_init_mixed(args);
 1998|      0|				if (num_args >= 1) {
  ------------------
  |  Branch (1998:9): [True: 0, False: 0]
  ------------------
 1999|      0|					zval *arg = zend_get_zval_ptr(opline, opline->op1_type, &opline->op1, call);
 2000|      0|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2001|      0|					zend_hash_next_index_insert_new(args, arg);
 2002|      0|				}
 2003|      0|				if (num_args >= 2) {
  ------------------
  |  Branch (2003:9): [True: 0, False: 0]
  ------------------
 2004|      0|					zval *arg = zend_get_zval_ptr(opline, opline->op2_type, &opline->op2, call);
 2005|      0|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2006|      0|					zend_hash_next_index_insert_new(args, arg);
 2007|      0|				}
 2008|      0|				if (num_args >= 3) {
  ------------------
  |  Branch (2008:9): [True: 0, False: 0]
  ------------------
 2009|      0|					const zend_op *op_data = opline + 1;
 2010|      0|					zval *arg = zend_get_zval_ptr(op_data, op_data->op1_type, &op_data->op1, call);
 2011|      0|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2012|      0|					zend_hash_next_index_insert_new(args, arg);
 2013|      0|				}
 2014|      0|				ZVAL_ARR(&tmp, args);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2015|      0|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_ARGS), &tmp, 1);
 2016|      0|			}
 2017|      0|			ZVAL_ARR(&tmp, stack_frame);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2018|      0|			zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2019|      0|		}
 2020|  24.3k|not_frameless_call:
 2021|       |
 2022|       |		/* We use _zend_hash_append*() and the array must be preallocated */
 2023|  24.3k|		stack_frame = zend_new_array(8);
  ------------------
  |  |  342|  24.3k|	_zend_new_array(size)
  ------------------
 2024|  24.3k|		zend_hash_real_init_mixed(stack_frame);
 2025|       |
 2026|  24.3k|		if (prev && prev->func && ZEND_USER_CODE(prev->func->common.type)) {
  ------------------
  |  | 1081|  11.0k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 11.0k, False: 45]
  |  |  ------------------
  ------------------
  |  Branch (2026:7): [True: 11.0k, False: 13.2k]
  |  Branch (2026:15): [True: 11.0k, False: 0]
  ------------------
 2027|  11.0k|			uint32_t lineno;
 2028|       |
 2029|  11.0k|			filename = prev->func->op_array.filename;
 2030|  11.0k|			if (prev->opline->opcode == ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|  11.0k|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (2030:8): [True: 0, False: 11.0k]
  ------------------
 2031|      0|				if (EG(opline_before_exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2032|      0|					lineno = EG(opline_before_exception)->lineno;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2033|      0|				} else {
 2034|      0|					lineno = prev->func->op_array.line_end;
 2035|      0|				}
 2036|  11.0k|			} else {
 2037|  11.0k|				lineno = prev->opline->lineno;
 2038|  11.0k|			}
 2039|  11.0k|			ZVAL_STR_COPY(&tmp, filename);
  ------------------
  |  | 1112|  11.0k|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|  11.0k|		zval *__z = (z);								\
  |  | 1114|  11.0k|		zend_string *__s = (s);							\
  |  | 1115|  11.0k|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|  11.0k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  11.0k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|  11.0k|		/* interned strings support */					\
  |  | 1117|  11.0k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 11.0k]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|  11.0k|		} else {										\
  |  | 1120|  11.0k|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|  11.0k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|  11.0k|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|  11.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|  11.0k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  11.0k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  11.0k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  11.0k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|  11.0k|		}												\
  |  | 1123|  11.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 11.0k]
  |  |  ------------------
  ------------------
 2040|  11.0k|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
 2041|  11.0k|			ZVAL_LONG(&tmp, lineno);
  ------------------
  |  | 1076|  11.0k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  11.0k|		zval *__z = (z);				\
  |  | 1078|  11.0k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  11.0k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  11.0k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  11.0k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  11.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  11.0k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  11.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 11.0k]
  |  |  ------------------
  ------------------
 2042|  11.0k|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
 2043|       |
 2044|       |			/* try to fetch args only if an FCALL was just made - elsewise we're in the middle of a function
 2045|       |			 * and debug_backtrace() might have been called by the error_handler. in this case we don't
 2046|       |			 * want to pop anything of the argument-stack */
 2047|  13.3k|		} else {
 2048|  13.3k|			zend_execute_data *prev_call = prev;
 2049|       |
 2050|  13.3k|			while (prev_call) {
  ------------------
  |  Branch (2050:11): [True: 45, False: 13.2k]
  ------------------
 2051|     45|				zend_execute_data *prev;
 2052|       |
 2053|     45|				if (prev_call &&
  ------------------
  |  Branch (2053:9): [True: 45, False: 0]
  ------------------
 2054|     45|					prev_call->func &&
  ------------------
  |  Branch (2054:6): [True: 45, False: 0]
  ------------------
 2055|     45|					!ZEND_USER_CODE(prev_call->func->common.type) &&
  ------------------
  |  | 1081|     90|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (2055:6): [True: 45, False: 0]
  ------------------
 2056|     45|					!(prev_call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  372|     45|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (2056:6): [True: 44, False: 1]
  ------------------
 2057|     44|					break;
 2058|     44|				}
 2059|       |
 2060|      1|				prev = prev_call->prev_execute_data;
 2061|      1|				if (prev && prev->func && ZEND_USER_CODE(prev->func->common.type)) {
  ------------------
  |  | 1081|      1|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2061:9): [True: 1, False: 0]
  |  Branch (2061:17): [True: 1, False: 0]
  ------------------
 2062|      1|					ZVAL_STR_COPY(&tmp, prev->func->op_array.filename);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2063|      1|					_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FILE), &tmp, 1);
 2064|      1|					ZVAL_LONG(&tmp, prev->opline->lineno);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2065|      1|					_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_LINE), &tmp, 1);
 2066|      1|					break;
 2067|      1|				}
 2068|      0|				prev_call = prev;
 2069|      0|			}
 2070|  13.3k|			filename = NULL;
 2071|  13.3k|		}
 2072|       |
 2073|  24.3k|		func = call->func;
 2074|  24.3k|		if (!fake_frame && func->common.function_name) {
  ------------------
  |  Branch (2074:7): [True: 24.3k, False: 4]
  |  Branch (2074:22): [True: 11.9k, False: 12.3k]
  ------------------
 2075|  11.9k|			ZVAL_STR_COPY(&tmp, func->common.function_name);
  ------------------
  |  | 1112|  11.9k|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|  11.9k|		zval *__z = (z);								\
  |  | 1114|  11.9k|		zend_string *__s = (s);							\
  |  | 1115|  11.9k|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|  11.9k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  11.9k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|  11.9k|		/* interned strings support */					\
  |  | 1117|  11.9k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 10.5k, False: 1.41k]
  |  |  ------------------
  |  | 1118|  10.5k|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|  10.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  10.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|  10.5k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  10.5k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|  10.5k|		} else {										\
  |  | 1120|  1.41k|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|  1.41k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|  1.41k|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|  1.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|  1.41k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.41k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.41k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.41k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|  1.41k|		}												\
  |  | 1123|  11.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 11.9k]
  |  |  ------------------
  ------------------
 2076|  11.9k|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
 2077|       |
 2078|  11.9k|			if (Z_TYPE(call->This) == IS_OBJECT) {
  ------------------
  |  |  668|  11.9k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(call->This) == IS_OBJECT) {
  ------------------
  |  |  614|  11.9k|#define IS_OBJECT					8
  ------------------
  |  Branch (2078:8): [True: 2.02k, False: 9.92k]
  ------------------
 2079|  2.02k|				object = Z_OBJ(call->This);
  ------------------
  |  |  999|  2.02k|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 2080|       |				/* $this may be passed into regular internal functions */
 2081|  2.02k|				if (func->common.scope) {
  ------------------
  |  Branch (2081:9): [True: 2.02k, False: 0]
  ------------------
 2082|  2.02k|					ZVAL_STR_COPY(&tmp, func->common.scope->name);
  ------------------
  |  | 1112|  2.02k|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|  2.02k|		zval *__z = (z);								\
  |  | 1114|  2.02k|		zend_string *__s = (s);							\
  |  | 1115|  2.02k|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|  2.02k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  2.02k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|  2.02k|		/* interned strings support */					\
  |  | 1117|  2.02k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1.32k, False: 702]
  |  |  ------------------
  |  | 1118|  1.32k|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|  1.32k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.32k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|  1.32k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.32k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|  1.32k|		} else {										\
  |  | 1120|    702|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|    702|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|    702|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|    702|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    702|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|    702|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    702|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    702|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    702|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|    702|		}												\
  |  | 1123|  2.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2.02k]
  |  |  ------------------
  ------------------
 2083|  2.02k|				} else if (object->handlers->get_class_name == zend_std_get_class_name) {
  ------------------
  |  Branch (2083:16): [True: 0, False: 0]
  ------------------
 2084|      0|					ZVAL_STR_COPY(&tmp, object->ce->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2085|      0|				} else {
 2086|      0|					ZVAL_STR(&tmp, object->handlers->get_class_name(object));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2087|      0|				}
 2088|  2.02k|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_CLASS), &tmp, 1);
 2089|  2.02k|				if ((options & DEBUG_BACKTRACE_PROVIDE_OBJECT) != 0) {
  ------------------
  |  |  458|  2.02k|#define DEBUG_BACKTRACE_PROVIDE_OBJECT (1<<0)
  ------------------
  |  Branch (2089:9): [True: 2, False: 2.02k]
  ------------------
 2090|      2|					ZVAL_OBJ_COPY(&tmp, object);
  ------------------
  |  | 1146|      2|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      2|		zval *__z = (z);						\
  |  | 1148|      2|		zend_object *__o = (o);					\
  |  | 1149|      2|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      2|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2091|      2|					_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_OBJECT), &tmp, 1);
 2092|      2|				}
 2093|       |
 2094|  2.02k|				ZVAL_INTERNED_STR(&tmp, ZSTR_KNOWN(ZEND_STR_OBJECT_OPERATOR));
  ------------------
  |  | 1098|  2.02k|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|  2.02k|		zval *__z = (z);							\
  |  | 1100|  2.02k|		zend_string *__s = (s);						\
  |  | 1101|  2.02k|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|  2.02k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  2.02k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|  2.02k|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|  2.02k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.02k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|  2.02k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  2.02k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|  2.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 2.02k]
  |  |  ------------------
  ------------------
 2095|  2.02k|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_TYPE), &tmp, 1);
 2096|  9.92k|			} else if (func->common.scope) {
  ------------------
  |  Branch (2096:15): [True: 9, False: 9.91k]
  ------------------
 2097|      9|				ZVAL_STR_COPY(&tmp, func->common.scope->name);
  ------------------
  |  | 1112|      9|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      9|		zval *__z = (z);								\
  |  | 1114|      9|		zend_string *__s = (s);							\
  |  | 1115|      9|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      9|		/* interned strings support */					\
  |  | 1117|      9|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 5, False: 4]
  |  |  ------------------
  |  | 1118|      5|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      5|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      5|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 2098|      9|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_CLASS), &tmp, 1);
 2099|      9|				ZVAL_INTERNED_STR(&tmp, ZSTR_KNOWN(ZEND_STR_PAAMAYIM_NEKUDOTAYIM));
  ------------------
  |  | 1098|      9|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|      9|		zval *__z = (z);							\
  |  | 1100|      9|		zend_string *__s = (s);						\
  |  | 1101|      9|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|      9|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      9|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      9|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 2100|      9|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_TYPE), &tmp, 1);
 2101|      9|			}
 2102|       |
 2103|  11.9k|			if ((options & DEBUG_BACKTRACE_IGNORE_ARGS) == 0 &&
  ------------------
  |  |  459|  11.9k|#define DEBUG_BACKTRACE_IGNORE_ARGS    (1<<1)
  ------------------
  |  Branch (2103:8): [True: 11.9k, False: 1]
  ------------------
 2104|  11.9k|				func->type != ZEND_EVAL_CODE) {
  ------------------
  |  Branch (2104:5): [True: 11.9k, False: 0]
  ------------------
 2105|       |
 2106|  11.9k|				debug_backtrace_get_args(call, &tmp);
 2107|  11.9k|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_ARGS), &tmp, 1);
 2108|  11.9k|			}
 2109|  12.3k|		} else {
 2110|       |			/* i know this is kinda ugly, but i'm trying to avoid extra cycles in the main execution loop */
 2111|  12.3k|			bool build_filename_arg = true;
 2112|  12.3k|			zend_string *pseudo_function_name;
 2113|  12.3k|			uint32_t include_kind = 0;
 2114|  12.3k|			if (prev && prev->func && ZEND_USER_CODE(prev->func->common.type) && prev->opline->opcode == ZEND_INCLUDE_OR_EVAL) {
  ------------------
  |  | 1081|  12.4k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 12, False: 11]
  |  |  ------------------
  ------------------
              			if (prev && prev->func && ZEND_USER_CODE(prev->func->common.type) && prev->opline->opcode == ZEND_INCLUDE_OR_EVAL) {
  ------------------
  |  |  196|     12|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (2114:8): [True: 23, False: 12.3k]
  |  Branch (2114:16): [True: 23, False: 0]
  |  Branch (2114:73): [True: 12, False: 0]
  ------------------
 2115|     12|				include_kind = prev->opline->extended_value;
 2116|     12|			}
 2117|       |
 2118|  12.3k|			switch (include_kind) {
 2119|      8|				case ZEND_EVAL:
  ------------------
  |  | 1083|      8|#define ZEND_EVAL				(1<<0)
  ------------------
  |  Branch (2119:5): [True: 8, False: 12.3k]
  ------------------
 2120|      8|					pseudo_function_name = ZSTR_KNOWN(ZEND_STR_EVAL);
 2121|      8|					build_filename_arg = false;
 2122|      8|					break;
 2123|      0|				case ZEND_INCLUDE:
  ------------------
  |  | 1084|      0|#define ZEND_INCLUDE			(1<<1)
  ------------------
  |  Branch (2123:5): [True: 0, False: 12.3k]
  ------------------
 2124|      0|					pseudo_function_name = ZSTR_KNOWN(ZEND_STR_INCLUDE);
 2125|      0|					break;
 2126|      3|				case ZEND_REQUIRE:
  ------------------
  |  | 1086|      3|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (2126:5): [True: 3, False: 12.3k]
  ------------------
 2127|      3|					pseudo_function_name = ZSTR_KNOWN(ZEND_STR_REQUIRE);
 2128|      3|					break;
 2129|      0|				case ZEND_INCLUDE_ONCE:
  ------------------
  |  | 1085|      0|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (2129:5): [True: 0, False: 12.3k]
  ------------------
 2130|      0|					pseudo_function_name = ZSTR_KNOWN(ZEND_STR_INCLUDE_ONCE);
 2131|      0|					break;
 2132|      1|				case ZEND_REQUIRE_ONCE:
  ------------------
  |  | 1087|      1|#define ZEND_REQUIRE_ONCE		(1<<4)
  ------------------
  |  Branch (2132:5): [True: 1, False: 12.3k]
  ------------------
 2133|      1|					pseudo_function_name = ZSTR_KNOWN(ZEND_STR_REQUIRE_ONCE);
 2134|      1|					break;
 2135|  12.3k|				default:
  ------------------
  |  Branch (2135:5): [True: 12.3k, False: 12]
  ------------------
 2136|       |					/* Skip dummy frame unless it is needed to preserve filename/lineno info. */
 2137|  12.3k|					if (!filename) {
  ------------------
  |  Branch (2137:10): [True: 12.3k, False: 0]
  ------------------
 2138|  12.3k|						zend_array_destroy(stack_frame);
 2139|  12.3k|						goto skip_frame;
 2140|  12.3k|					}
 2141|       |
 2142|      0|					pseudo_function_name = ZSTR_KNOWN(ZEND_STR_UNKNOWN);
 2143|      0|					build_filename_arg = false;
 2144|      0|					break;
 2145|  12.3k|			}
 2146|       |
 2147|     12|			if (build_filename_arg && include_filename) {
  ------------------
  |  Branch (2147:8): [True: 4, False: 8]
  |  Branch (2147:30): [True: 0, False: 4]
  ------------------
 2148|      0|				zval arg_array;
 2149|       |
 2150|      0|				array_init(&arg_array);
 2151|       |
 2152|       |				/* include_filename always points to the last filename of the last last called-function.
 2153|       |				   if we have called include in the frame above - this is the file we have included.
 2154|       |				 */
 2155|       |
 2156|      0|				ZVAL_STR_COPY(&tmp, include_filename);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2157|      0|				zend_hash_next_index_insert_new(Z_ARRVAL(arg_array), &tmp);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2158|      0|				_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_ARGS), &arg_array, 1);
 2159|      0|			}
 2160|       |
 2161|     12|			ZVAL_INTERNED_STR(&tmp, pseudo_function_name);
  ------------------
  |  | 1098|     12|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|     12|		zval *__z = (z);							\
  |  | 1100|     12|		zend_string *__s = (s);						\
  |  | 1101|     12|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|     12|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     12|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     12|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 2162|     12|			_zend_hash_append_ex(stack_frame, ZSTR_KNOWN(ZEND_STR_FUNCTION), &tmp, 1);
 2163|     12|		}
 2164|       |
 2165|  11.9k|		ZVAL_ARR(&tmp, stack_frame);
  ------------------
  |  | 1125|  11.9k|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|  11.9k|		zend_array *__arr = (a);				\
  |  | 1127|  11.9k|		zval *__z = (z);						\
  |  | 1128|  11.9k|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|  11.9k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  11.9k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|  11.9k|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|  11.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|  11.9k|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  11.9k|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  11.9k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  11.9k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  11.9k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  11.9k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|  11.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 11.9k]
  |  |  ------------------
  ------------------
 2166|  11.9k|		zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|  11.9k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  11.9k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  11.9k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2167|  11.9k|		frameno++;
 2168|  11.9k|		prev_stack_frame = stack_frame;
 2169|       |
 2170|  24.3k|skip_frame:
 2171|  24.3k|		if (UNEXPECTED(ZEND_CALL_KIND(call) == ZEND_CALL_TOP_FUNCTION)
  ------------------
  |  |  457|  48.6k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.45k, False: 22.8k]
  |  |  ------------------
  ------------------
 2172|  1.45k|		 && !fake_frame
  ------------------
  |  Branch (2172:7): [True: 1.44k, False: 4]
  ------------------
 2173|  1.44k|		 && prev
  ------------------
  |  Branch (2173:7): [True: 524, False: 922]
  ------------------
 2174|    524|		 && prev->func
  ------------------
  |  Branch (2174:7): [True: 524, False: 0]
  ------------------
 2175|    524|		 && ZEND_USER_CODE(prev->func->common.type)
  ------------------
  |  | 1081|  24.8k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 490, False: 34]
  |  |  ------------------
  ------------------
 2176|    490|		 && prev->opline->opcode == ZEND_INCLUDE_OR_EVAL) {
  ------------------
  |  |  196|    490|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (2176:7): [True: 4, False: 486]
  ------------------
 2177|      4|			fake_frame = true;
 2178|  24.3k|		} else {
 2179|       |			fake_frame = false;
 2180|  24.3k|			include_filename = filename;
 2181|  24.3k|			last_call = call;
 2182|  24.3k|			call = prev;
 2183|  24.3k|		}
 2184|  24.3k|	}
 2185|  13.2k|}
zif_debug_backtrace:
 2190|     10|{
 2191|     10|	zend_long options = DEBUG_BACKTRACE_PROVIDE_OBJECT;
  ------------------
  |  |  458|     10|#define DEBUG_BACKTRACE_PROVIDE_OBJECT (1<<0)
  ------------------
 2192|     10|	zend_long limit = 0;
 2193|       |
 2194|     10|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|ll", &options, &limit) == FAILURE) {
  ------------------
  |  |  529|     10|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     10|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     10|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2194:6): [True: 0, False: 10]
  ------------------
 2195|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2195:3): [True: 0, False: 0]
  |  Branch (2195:3): [True: 0, False: 0]
  ------------------
 2196|      0|	}
 2197|       |
 2198|     10|	zend_fetch_debug_backtrace(return_value, 1, options, limit);
 2199|     10|}
zif_get_extension_funcs:
 2220|      4|{
 2221|      4|	zend_string *extension_name;
 2222|      4|	zend_string *lcname;
 2223|      4|	bool array;
 2224|      4|	zend_module_entry *module;
 2225|      4|	zend_function *zif;
 2226|       |
 2227|      4|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &extension_name) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2227:6): [True: 0, False: 4]
  ------------------
 2228|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2228:3): [True: 0, False: 0]
  |  Branch (2228:3): [True: 0, False: 0]
  ------------------
 2229|      0|	}
 2230|      4|	if (strncasecmp(ZSTR_VAL(extension_name), "zend", sizeof("zend"))) {
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2230:6): [True: 4, False: 0]
  ------------------
 2231|      4|		lcname = zend_string_tolower(extension_name);
 2232|      4|		module = zend_hash_find_ptr(&module_registry, lcname);
 2233|      4|		zend_string_release_ex(lcname, 0);
 2234|      4|	} else {
 2235|      0|		module = zend_hash_str_find_ptr(&module_registry, "core", sizeof("core") - 1);
 2236|      0|	}
 2237|       |
 2238|      4|	if (!module) {
  ------------------
  |  Branch (2238:6): [True: 3, False: 1]
  ------------------
 2239|      3|		RETURN_FALSE;
  ------------------
  |  | 1069|      3|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      3|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2240|      3|	}
 2241|       |
 2242|      1|	if (module->functions) {
  ------------------
  |  Branch (2242:6): [True: 1, False: 0]
  ------------------
 2243|       |		/* avoid BC break, if functions list is empty, will return an empty array */
 2244|      1|		array_init(return_value);
 2245|      1|		array = true;
 2246|      1|	} else {
 2247|      0|		array = false;
 2248|      0|	}
 2249|       |
 2250|  1.38k|	ZEND_HASH_MAP_FOREACH_PTR(CG(function_table), zif) {
  ------------------
  |  | 1341|    690|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    691|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 690, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    690|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    690|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    690|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 690]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    690|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    690|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 690]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    690|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2250:2): [True: 0, False: 1]
  |  Branch (2250:2): [True: 1, False: 0]
  ------------------
 2251|  1.38k|		if (zif->common.type == ZEND_INTERNAL_FUNCTION
  ------------------
  |  Branch (2251:7): [True: 690, False: 0]
  ------------------
 2252|    690|			&& zif->internal_function.module == module) {
  ------------------
  |  Branch (2252:7): [True: 514, False: 176]
  ------------------
 2253|    514|			if (!array) {
  ------------------
  |  Branch (2253:8): [True: 0, False: 514]
  ------------------
 2254|      0|				array_init(return_value);
 2255|      0|				array = true;
 2256|      0|			}
 2257|    514|			add_next_index_str(return_value, zend_string_copy(zif->common.function_name));
 2258|    514|		}
 2259|  1.38k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    690|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2260|       |
 2261|      1|	if (!array) {
  ------------------
  |  Branch (2261:6): [True: 0, False: 1]
  ------------------
 2262|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2263|      0|	}
 2264|      1|}
zend_builtin_functions.c:add_class_vars:
  744|     10|{
  745|     10|	zend_property_info *prop_info;
  746|     10|	zval *prop, prop_copy;
  747|     10|	zend_string *key;
  748|     10|	zval *default_properties_table = CE_DEFAULT_PROPERTIES_TABLE(ce);
  ------------------
  |  |  337|     10|	zend_class_default_properties_table(ce)
  ------------------
  749|       |
  750|     60|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&ce->properties_info, key, prop_info) {
  ------------------
  |  | 1448|     20|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     10|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     10|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     10|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     10|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     10|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     10|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     30|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 20, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     20|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     20|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     20|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 20]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     20|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 20]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     20|	_key = _p->key; \
  |  | 1450|     20|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (750:2): [True: 0, False: 10]
  |  Branch (750:2): [True: 10, False: 0]
  ------------------
  751|     60|		if (((prop_info->flags & ZEND_ACC_PROTECTED) &&
  ------------------
  |  |  220|     20|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (751:8): [True: 0, False: 20]
  ------------------
  752|      0|			 !zend_check_protected(prop_info->ce, scope)) ||
  ------------------
  |  Branch (752:5): [True: 0, False: 0]
  ------------------
  753|     20|			((prop_info->flags & ZEND_ACC_PRIVATE) &&
  ------------------
  |  |  221|     20|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (753:5): [True: 0, False: 20]
  ------------------
  754|      0|			  prop_info->ce != scope) ||
  ------------------
  |  Branch (754:6): [True: 0, False: 0]
  ------------------
  755|     20|			(prop_info->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|     20|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (755:4): [True: 2, False: 18]
  ------------------
  756|      2|			continue;
  757|      2|		}
  758|     18|		prop = NULL;
  759|     18|		if (statics && (prop_info->flags & ZEND_ACC_STATIC) != 0) {
  ------------------
  |  |  227|      9|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (759:7): [True: 9, False: 9]
  |  Branch (759:18): [True: 2, False: 7]
  ------------------
  760|      2|			prop = &ce->default_static_members_table[prop_info->offset];
  761|      2|			ZVAL_DEINDIRECT(prop);
  ------------------
  |  | 1480|      2|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      2|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  762|     16|		} else if (!statics && (prop_info->flags & ZEND_ACC_STATIC) == 0) {
  ------------------
  |  |  227|      9|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (762:14): [True: 9, False: 7]
  |  Branch (762:26): [True: 7, False: 2]
  ------------------
  763|      7|			prop = &default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)];
  ------------------
  |  |  486|      7|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      7|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
  764|      7|		}
  765|     18|		if (!prop) {
  ------------------
  |  Branch (765:7): [True: 9, False: 9]
  ------------------
  766|      9|			continue;
  767|      9|		}
  768|       |
  769|      9|		if (Z_ISUNDEF_P(prop)) {
  ------------------
  |  |  967|      9|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      9|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      9|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 2, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  770|       |			/* Return uninitialized typed properties as a null value */
  771|      2|			ZVAL_NULL(&prop_copy);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  772|      7|		} else {
  773|       |			/* copy: enforce read only access */
  774|      7|			ZVAL_COPY_OR_DUP(&prop_copy, prop);
  ------------------
  |  | 1457|      7|	do {																\
  |  | 1458|      7|		zval *_z1 = (z);												\
  |  | 1459|      7|		const zval *_z2 = (v);											\
  |  | 1460|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      7|	do {												\
  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      7|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      7|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      7|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      1|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      1|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 1, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      1|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      1|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      1|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      1|		}																\
  |  | 1472|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  775|      7|		}
  776|      9|		prop = &prop_copy;
  777|       |
  778|       |		/* this is necessary to make it able to work with default array
  779|       |		 * properties, returned to user */
  780|      9|		if (Z_OPT_TYPE_P(prop) == IS_CONSTANT_AST) {
  ------------------
  |  |  949|      9|#define Z_OPT_TYPE_P(zval_p)		Z_OPT_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  948|      9|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|      9|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_OPT_TYPE_P(prop) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      9|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (780:7): [True: 0, False: 9]
  ------------------
  781|      0|			if (UNEXPECTED(zval_update_constant_ex(prop, ce) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  782|      0|				return;
  783|      0|			}
  784|      0|		}
  785|       |
  786|      9|		zend_hash_add_new(Z_ARRVAL_P(return_value), key, prop);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  787|      9|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      9|		} \
  |  | 1102|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  788|     10|}
zend_builtin_functions.c:_property_exists:
 1016|      1|{
 1017|      1|	zend_class_entry *ce;
 1018|       |
 1019|      1|	if (Z_TYPE_P(object) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(object) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (1019:6): [True: 0, False: 1]
  ------------------
 1020|      0|		ce = zend_lookup_class(Z_STR_P(object));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1021|      0|		if (!ce) {
  ------------------
  |  Branch (1021:7): [True: 0, False: 0]
  ------------------
 1022|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1023|      0|		}
 1024|      1|	} else if (Z_TYPE_P(object) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(object) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (1024:13): [True: 1, False: 0]
  ------------------
 1025|      1|		ce = Z_OBJCE_P(object);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1026|      1|	} else {
 1027|      0|		zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(object));
 1028|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1028:3): [True: 0, False: 0]
  |  Branch (1028:3): [True: 0, False: 0]
  ------------------
 1029|      0|	}
 1030|       |
 1031|      1|	const zend_property_info *property_info = zend_hash_find_ptr(&ce->properties_info, property);
 1032|      1|	if (property_info != NULL
  ------------------
  |  Branch (1032:6): [True: 0, False: 1]
  ------------------
 1033|      0|	 && (!(property_info->flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1033:7): [True: 0, False: 0]
  ------------------
 1034|      0|	  || property_info->ce == ce)) {
  ------------------
  |  Branch (1034:7): [True: 0, False: 0]
  ------------------
 1035|      0|		RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1036|      0|	}
 1037|       |
 1038|      1|	RETURN_BOOL(
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:5): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1039|      1|		Z_TYPE_P(object) == IS_OBJECT &&
 1040|      1|		Z_OBJ_HANDLER_P(object, has_property)(Z_OBJ_P(object), property, ZEND_PROPERTY_EXISTS, NULL)
 1041|      1|	);
 1042|      1|}
zend_builtin_functions.c:class_exists_impl:
 1106|     22|{
 1107|     22|	zend_string *name;
 1108|     22|	bool autoload = true;
 1109|       |
 1110|     66|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     22|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     22|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     22|		const int _flags = (flags); \
  |  |  |  | 1599|     22|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     22|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     22|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     22|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     22|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     22|		uint32_t _i = 0; \
  |  |  |  | 1603|     22|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     22|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     22|		char *_error = NULL; \
  |  |  |  | 1606|     22|		bool _dummy = 0; \
  |  |  |  | 1607|     22|		bool _optional = 0; \
  |  |  |  | 1608|     22|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     22|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     22|		((void)_i); \
  |  |  |  | 1610|     22|		((void)_real_arg); \
  |  |  |  | 1611|     22|		((void)_arg); \
  |  |  |  | 1612|     22|		((void)_expected_type); \
  |  |  |  | 1613|     22|		((void)_error); \
  |  |  |  | 1614|     22|		((void)_optional); \
  |  |  |  | 1615|     22|		((void)_dummy); \
  |  |  |  | 1616|     22|		\
  |  |  |  | 1617|     22|		do { \
  |  |  |  | 1618|     22|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     44|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     22|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     22|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     22|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     22|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     22|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1111|     88|		Z_PARAM_STR(name)
  ------------------
  |  | 2102|     22|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     22|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     22|	++_i; \
  |  |  |  |  |  | 1654|     22|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     22|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     22|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     22|	_real_arg++; \
  |  |  |  |  |  | 1660|     22|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     22|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     22|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     22|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1111:3): [True: 22, False: 0]
  |  Branch (1111:3): [True: 0, False: 0]
  |  Branch (1111:3): [True: 22, False: 0]
  |  Branch (1111:3): [True: 0, False: 0]
  |  Branch (1111:3): [True: 22, False: 0]
  |  Branch (1111:3): [True: 0, False: 0]
  |  Branch (1111:3): [True: 0, False: 22]
  |  Branch (1111:3): [True: 22, False: 0]
  |  Branch (1111:3): [True: 0, False: 0]
  |  Branch (1111:3): [True: 0, False: 0]
  ------------------
 1112|     22|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     22|	_optional = 1;
  ------------------
 1113|     44|		Z_PARAM_BOOL(autoload)
  ------------------
  |  | 1735|     22|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     22|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     22|	++_i; \
  |  |  |  |  |  | 1654|     22|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     22|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     22|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 22, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     22|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 22, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     22|	} \
  |  |  |  |  |  | 1659|     22|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1113:3): [True: 22, False: 0]
  |  Branch (1113:3): [True: 0, False: 0]
  |  Branch (1113:3): [True: 0, False: 22]
  |  Branch (1113:3): [True: 22, False: 0]
  |  Branch (1113:3): [True: 22, False: 0]
  |  Branch (1113:3): [True: 0, False: 0]
  |  Branch (1113:3): [True: 22, False: 0]
  |  Branch (1113:3): [True: 0, False: 0]
  |  Branch (1113:3): [True: 0, False: 0]
  |  Branch (1113:3): [True: 0, False: 0]
  ------------------
 1114|     22|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     22|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     22|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1114:2): [True: 0, False: 0]
  |  Branch (1114:2): [True: 0, False: 0]
  |  Branch (1114:2): [True: 0, False: 0]
  |  Branch (1114:2): [True: 0, False: 0]
  ------------------
 1115|       |
 1116|     22|	_class_exists_impl(return_value, name, autoload, flags, skip_flags);
 1117|     22|}
zend_builtin_functions.c:_class_exists_impl:
 1075|     22|{
 1076|     22|	zend_string *lcname;
 1077|     22|	const zend_class_entry *ce;
 1078|       |
 1079|     22|	if (ZSTR_HAS_CE_CACHE(name)) {
  ------------------
  |  |  862|     22|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|     22|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     22|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|     22|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|     22|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 22]
  |  |  ------------------
  ------------------
 1080|      0|		ce = ZSTR_GET_CE_CACHE(name);
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1081|      0|		if (ce) {
  ------------------
  |  Branch (1081:7): [True: 0, False: 0]
  ------------------
 1082|      0|			RETURN_BOOL(((ce->ce_flags & flags) == flags) && !(ce->ce_flags & skip_flags));
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1083|      0|		}
 1084|      0|	}
 1085|       |
 1086|     22|	if (!autoload) {
  ------------------
  |  Branch (1086:6): [True: 0, False: 22]
  ------------------
 1087|      0|		if (ZSTR_VAL(name)[0] == '\\') {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1087:7): [True: 0, False: 0]
  ------------------
 1088|       |			/* Ignore leading "\" */
 1089|      0|			lcname = zend_string_alloc(ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1090|      0|			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1091|      0|		} else {
 1092|      0|			lcname = zend_string_tolower(name);
 1093|      0|		}
 1094|       |
 1095|      0|		ce = zend_hash_find_ptr(EG(class_table), lcname);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1096|      0|		zend_string_release_ex(lcname, 0);
 1097|     22|	} else {
 1098|     22|		ce = zend_lookup_class(name);
 1099|     22|	}
 1100|       |
 1101|     22|	RETURN_BOOL(ce && ((ce->ce_flags & flags) == flags) && !(ce->ce_flags & skip_flags));
  ------------------
  |  | 1046|     22|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|     22|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|     22|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|     22|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     22|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     22|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|     69|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      9|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     35|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:5): [True: 14, False: 8]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 11, False: 3]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 9, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|     22|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1102|     22|}
zend_builtin_functions.c:get_declared_class_impl:
 1404|     11|{
 1405|     11|	zend_string *key;
 1406|     11|	zval *zv;
 1407|       |
 1408|     11|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|     11|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|     11|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1409|       |
 1410|     11|	array_init(return_value);
 1411|     11|	zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|     11|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     11|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1412|     11|	ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|     11|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|     11|		HashTable *__fill_ht = (ht); \
  |  | 1544|     11|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|     11|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|     11|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (1412:2): [True: 0, False: 11]
  |  Branch (1412:2): [True: 11, False: 0]
  ------------------
 1413|  3.89k|		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EG(class_table), key, zv) {
  ------------------
  |  | 1389|  1.93k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     11|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     11|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     11|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     11|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     11|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     11|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.94k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 1.93k, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  1.93k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  1.93k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  1.93k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 1.93k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  1.93k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.93k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.93k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|  1.93k|	_key = _p->key; \
  |  | 1391|  1.93k|	_val = _z;
  ------------------
  |  Branch (1413:3): [True: 0, False: 11]
  |  Branch (1413:3): [True: 11, False: 0]
  ------------------
 1414|  3.89k|			const zend_class_entry *ce = Z_PTR_P(zv);
  ------------------
  |  | 1053|  1.93k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  1.93k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1415|  3.89k|			if ((ce->ce_flags & (ZEND_ACC_LINKED|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT)) == flags
  ------------------
  |  |  287|  1.93k|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & (ZEND_ACC_LINKED|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT)) == flags
  ------------------
  |  |  281|  1.93k|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & (ZEND_ACC_LINKED|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT)) == flags
  ------------------
  |  |  282|  1.93k|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (1415:8): [True: 1.08k, False: 850]
  ------------------
 1416|  1.08k|			 && key
  ------------------
  |  Branch (1416:8): [True: 1.08k, False: 0]
  ------------------
 1417|  1.08k|			 && ZSTR_VAL(key)[0] != 0) {
  ------------------
  |  |   67|  1.08k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1417:8): [True: 1.08k, False: 0]
  ------------------
 1418|  1.08k|				ZEND_HASH_FILL_GROW();
  ------------------
  |  | 1548|  1.08k|#define ZEND_HASH_FILL_GROW() do { \
  |  | 1549|  1.08k|		if (UNEXPECTED(__fill_idx >= __fill_ht->nTableSize)) { \
  |  |  ------------------
  |  |  |  |  457|  1.08k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 35, False: 1.05k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1550|     35|			__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  | 1551|     35|			__fill_ht->nNumUsed = __fill_idx; \
  |  | 1552|     35|			__fill_ht->nNextFreeElement = __fill_idx; \
  |  | 1553|     35|			zend_hash_packed_grow(__fill_ht); \
  |  | 1554|     35|			__fill_val = __fill_ht->arPacked + __fill_idx; \
  |  | 1555|     35|		} \
  |  | 1556|  1.08k|	} while (0);
  |  |  ------------------
  |  |  |  Branch (1556:11): [Folded, False: 1.08k]
  |  |  ------------------
  ------------------
 1419|  1.08k|				if (EXPECTED(Z_TYPE_P(zv) == IS_PTR)) {
  ------------------
  |  |  456|  1.08k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.08k, False: 2]
  |  |  ------------------
  ------------------
 1420|  1.08k|					ZEND_HASH_FILL_SET_STR_COPY(ce->name);
  ------------------
  |  | 1574|  1.08k|		ZVAL_STR_COPY(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1112|  1.08k|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  | 1113|  1.08k|		zval *__z = (z);								\
  |  |  |  | 1114|  1.08k|		zend_string *__s = (s);							\
  |  |  |  | 1115|  1.08k|		Z_STR_P(__z) = __s;								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  1.08k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  1.08k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1116|  1.08k|		/* interned strings support */					\
  |  |  |  | 1117|  1.08k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1117:7): [True: 1.08k, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1118|  1.08k|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.08k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.08k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|  1.08k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  1.08k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1119|  1.08k|		} else {										\
  |  |  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1122|      1|		}												\
  |  |  |  | 1123|  1.08k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1123:11): [Folded, False: 1.08k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1421|  1.08k|				} else {
 1422|      2|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_ALIAS_PTR);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1422:6): [True: 0, False: 2]
  |  Branch (1422:6): [True: 2, False: 0]
  ------------------
 1423|      2|					ZEND_HASH_FILL_SET_STR_COPY(key);
  ------------------
  |  | 1574|      2|		ZVAL_STR_COPY(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  | 1113|      2|		zval *__z = (z);								\
  |  |  |  | 1114|      2|		zend_string *__s = (s);							\
  |  |  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1116|      2|		/* interned strings support */					\
  |  |  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1117:7): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1119|      2|		} else {										\
  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1122|      0|		}												\
  |  |  |  | 1123|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1424|      2|				}
 1425|  1.08k|				ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|  1.08k|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|  1.08k|		__fill_val++; \
  |  | 1581|  1.08k|		__fill_idx++; \
  |  | 1582|  1.08k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 1.08k]
  |  |  ------------------
  ------------------
 1426|  1.08k|			}
 1427|  3.89k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  1.93k|		} \
  |  | 1102|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1428|     11|	} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|     11|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|     11|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|     11|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|     11|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|     11|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|     11|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1429|     11|}
zend_builtin_functions.c:debug_backtrace_get_args:
 1711|  11.9k|{
 1712|  11.9k|	uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|  11.9k|	(call)->This.u2.num_args
  ------------------
 1713|       |
 1714|  11.9k|	if (num_args) {
  ------------------
  |  Branch (1714:6): [True: 11.1k, False: 778]
  ------------------
 1715|  11.1k|		uint32_t i = 0;
 1716|  11.1k|		zval *p = ZEND_CALL_ARG(call, 1);
  ------------------
  |  |  728|  11.1k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|  11.1k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  11.1k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1717|       |
 1718|  11.1k|		array_init_size(arg_array, num_args);
 1719|  11.1k|		zend_hash_real_init_packed(Z_ARRVAL_P(arg_array));
  ------------------
  |  |  997|  11.1k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  11.1k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  11.1k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|  11.1k|		ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(arg_array)) {
  ------------------
  |  | 1542|  11.1k|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|  11.1k|		HashTable *__fill_ht = (ht); \
  |  | 1544|  11.1k|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|  11.1k|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|  11.1k|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|  11.1k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (1720:3): [True: 0, False: 11.1k]
  |  Branch (1720:3): [True: 11.1k, False: 0]
  ------------------
 1721|  11.1k|			if (call->func->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (1721:8): [True: 776, False: 10.3k]
  ------------------
 1722|    776|				uint32_t first_extra_arg = MIN(num_args, call->func->op_array.num_args);
  ------------------
  |  |  518|    776|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 1, False: 775]
  |  |  ------------------
  ------------------
 1723|       |
 1724|    776|				if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  457|    776|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 771]
  |  |  ------------------
  ------------------
 1725|       |					/* In case of attached symbol_table, values on stack may be invalid
 1726|       |					 * and we have to access them through symbol_table
 1727|       |					 * See: https://bugs.php.net/bug.php?id=73156
 1728|       |					 */
 1729|     13|					while (i < first_extra_arg) {
  ------------------
  |  Branch (1729:13): [True: 8, False: 5]
  ------------------
 1730|      8|						zend_string *arg_name = call->func->op_array.vars[i];
 1731|      8|						zval original_arg;
 1732|      8|						zval *arg = zend_hash_find_ex_ind(call->symbol_table, arg_name, 1);
 1733|      8|						bool is_sensitive = backtrace_is_arg_sensitive(call, i);
 1734|       |
 1735|      8|						if (arg) {
  ------------------
  |  Branch (1735:11): [True: 8, False: 0]
  ------------------
 1736|      8|							ZVAL_DEREF(arg);
  ------------------
  |  | 1474|      8|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      8|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      2|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      2|		}												\
  |  | 1478|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1737|      8|							ZVAL_COPY_VALUE(&original_arg, arg);
  ------------------
  |  | 1416|      8|	do {												\
  |  | 1417|      8|		zval *_z1 = (z);								\
  |  | 1418|      8|		const zval *_z2 = (v);							\
  |  | 1419|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      8|	do {												\
  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1738|      8|						} else {
 1739|      0|							ZVAL_NULL(&original_arg);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1740|      0|						}
 1741|       |
 1742|      8|						if (is_sensitive) {
  ------------------
  |  Branch (1742:11): [True: 1, False: 7]
  ------------------
 1743|      1|							zval redacted_arg;
 1744|      1|							object_init_with_constructor(&redacted_arg, zend_ce_sensitive_parameter_value, 1, &original_arg, NULL);
 1745|      1|							ZEND_HASH_FILL_SET(&redacted_arg);
  ------------------
  |  | 1559|      1|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1746|      7|						} else {
 1747|      7|							Z_TRY_ADDREF_P(&original_arg);
  ------------------
  |  | 1285|      7|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      7|	zval *_pz = (pz);				\
  |  | 1287|      7|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      7|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1748|      7|							ZEND_HASH_FILL_SET(&original_arg);
  ------------------
  |  | 1559|      7|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      7|	do {												\
  |  |  |  | 1417|      7|		zval *_z1 = (z);								\
  |  |  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      7|	do {												\
  |  |  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1749|      7|						}
 1750|       |
 1751|      8|						ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|      8|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|      8|		__fill_val++; \
  |  | 1581|      8|		__fill_idx++; \
  |  | 1582|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1752|      8|						i++;
 1753|      8|					}
 1754|    771|				} else {
 1755|  2.18k|					while (i < first_extra_arg) {
  ------------------
  |  Branch (1755:13): [True: 1.41k, False: 771]
  ------------------
 1756|  1.41k|						zval original_arg;
 1757|  1.41k|						bool is_sensitive = backtrace_is_arg_sensitive(call, i);
 1758|       |
 1759|  1.41k|						if (EXPECTED(Z_TYPE_INFO_P(p) != IS_UNDEF)) {
  ------------------
  |  |  456|  1.41k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.41k, False: 3]
  |  |  ------------------
  ------------------
 1760|  1.41k|							zval *arg = p;
 1761|  1.41k|							ZVAL_DEREF(arg);
  ------------------
  |  | 1474|  1.41k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.41k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.41k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 8, False: 1.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      8|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      8|		}												\
  |  | 1478|  1.41k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.41k]
  |  |  ------------------
  ------------------
 1762|  1.41k|							ZVAL_COPY_VALUE(&original_arg, arg);
  ------------------
  |  | 1416|  1.41k|	do {												\
  |  | 1417|  1.41k|		zval *_z1 = (z);								\
  |  | 1418|  1.41k|		const zval *_z2 = (v);							\
  |  | 1419|  1.41k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  1.41k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  1.41k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  1.41k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  1.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  1.41k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  1.41k|	do {												\
  |  |  |  | 1408|  1.41k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  1.41k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  1.41k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  1.41k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  1.41k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1.41k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  1.41k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1.41k]
  |  |  ------------------
  ------------------
 1763|  1.41k|						} else {
 1764|      3|							ZVAL_NULL(&original_arg);
  ------------------
  |  | 1059|      3|#define ZVAL_NULL(z) do {				\
  |  | 1060|      3|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1765|      3|						}
 1766|       |
 1767|  1.41k|						if (is_sensitive) {
  ------------------
  |  Branch (1767:11): [True: 4, False: 1.41k]
  ------------------
 1768|      4|							zval redacted_arg;
 1769|      4|							object_init_with_constructor(&redacted_arg, zend_ce_sensitive_parameter_value, 1, &original_arg, NULL);
 1770|      4|							ZEND_HASH_FILL_SET(&redacted_arg);
  ------------------
  |  | 1559|      4|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      4|	do {												\
  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1771|  1.41k|						} else {
 1772|  1.41k|							Z_TRY_ADDREF_P(&original_arg);
  ------------------
  |  | 1285|  1.41k|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  1.41k|	zval *_pz = (pz);				\
  |  | 1287|  1.41k|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  1.41k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  1.41k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  1.41k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 685, False: 728]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|    685|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|    685|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|    685|	}								\
  |  | 1290|  1.41k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1.41k]
  |  |  ------------------
  ------------------
 1773|  1.41k|							ZEND_HASH_FILL_SET(&original_arg);
  ------------------
  |  | 1559|  1.41k|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|  1.41k|	do {												\
  |  |  |  | 1417|  1.41k|		zval *_z1 = (z);								\
  |  |  |  | 1418|  1.41k|		const zval *_z2 = (v);							\
  |  |  |  | 1419|  1.41k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  1.41k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  1.41k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|  1.41k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|  1.41k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|  1.41k|	do {												\
  |  |  |  |  |  | 1408|  1.41k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  1.41k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  1.41k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|  1.41k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  1.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  1.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|  1.41k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1.41k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|  1.41k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1.41k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1774|  1.41k|						}
 1775|       |
 1776|  1.41k|						ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|  1.41k|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|  1.41k|		__fill_val++; \
  |  | 1581|  1.41k|		__fill_idx++; \
  |  | 1582|  1.41k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 1.41k]
  |  |  ------------------
  ------------------
 1777|  1.41k|						p++;
 1778|  1.41k|						i++;
 1779|  1.41k|					}
 1780|    771|				}
 1781|    776|				p = ZEND_CALL_VAR_NUM(call, call->func->op_array.last_var + call->func->op_array.T);
  ------------------
  |  |  725|    776|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|    776|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1782|    776|			}
 1783|       |
 1784|  82.1k|			while (i < num_args) {
  ------------------
  |  Branch (1784:11): [True: 70.9k, False: 11.1k]
  ------------------
 1785|  70.9k|				zval original_arg;
 1786|  70.9k|				bool is_sensitive = 0;
 1787|       |
 1788|  70.9k|				if (i < call->func->common.num_args || call->func->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|  60.4k|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (1788:9): [True: 10.5k, False: 60.4k]
  |  Branch (1788:44): [True: 60.4k, False: 33]
  ------------------
 1789|  70.9k|					is_sensitive = backtrace_is_arg_sensitive(call, MIN(i, call->func->common.num_args));
  ------------------
  |  |  518|  70.9k|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 10.5k, False: 60.4k]
  |  |  ------------------
  ------------------
 1790|  70.9k|				}
 1791|       |
 1792|  70.9k|				if (EXPECTED(Z_TYPE_INFO_P(p) != IS_UNDEF)) {
  ------------------
  |  |  456|  70.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 70.9k, False: 0]
  |  |  ------------------
  ------------------
 1793|  70.9k|					zval *arg = p;
 1794|  70.9k|					ZVAL_DEREF(arg);
  ------------------
  |  | 1474|  70.9k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  70.9k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  70.9k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 11, False: 70.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|     11|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|     11|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     11|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     11|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|     11|		}												\
  |  | 1478|  70.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 70.9k]
  |  |  ------------------
  ------------------
 1795|  70.9k|					ZVAL_COPY_VALUE(&original_arg, arg);
  ------------------
  |  | 1416|  70.9k|	do {												\
  |  | 1417|  70.9k|		zval *_z1 = (z);								\
  |  | 1418|  70.9k|		const zval *_z2 = (v);							\
  |  | 1419|  70.9k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  70.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  70.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  70.9k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  70.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  70.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  70.9k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  70.9k|	do {												\
  |  |  |  | 1408|  70.9k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  70.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  70.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  70.9k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  70.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  70.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  70.9k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 70.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  70.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 70.9k]
  |  |  ------------------
  ------------------
 1796|  70.9k|				} else {
 1797|      0|					ZVAL_NULL(&original_arg);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1798|      0|				}
 1799|       |
 1800|  70.9k|				if (is_sensitive) {
  ------------------
  |  Branch (1800:9): [True: 15, False: 70.9k]
  ------------------
 1801|     15|					zval redacted_arg;
 1802|     15|					object_init_with_constructor(&redacted_arg, zend_ce_sensitive_parameter_value, 1, &original_arg, NULL);
 1803|     15|					ZEND_HASH_FILL_SET(&redacted_arg);
  ------------------
  |  | 1559|     15|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|     15|	do {												\
  |  |  |  | 1417|     15|		zval *_z1 = (z);								\
  |  |  |  | 1418|     15|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     15|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     15|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     15|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     15|	do {												\
  |  |  |  |  |  | 1408|     15|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     15|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     15|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1804|  70.9k|				} else {
 1805|  70.9k|					Z_TRY_ADDREF_P(&original_arg);
  ------------------
  |  | 1285|  70.9k|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  70.9k|	zval *_pz = (pz);				\
  |  | 1287|  70.9k|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  70.9k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  70.9k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  70.9k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 10.3k, False: 60.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|  10.3k|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|  10.3k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|  10.3k|	}								\
  |  | 1290|  70.9k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 70.9k]
  |  |  ------------------
  ------------------
 1806|  70.9k|					ZEND_HASH_FILL_SET(&original_arg);
  ------------------
  |  | 1559|  70.9k|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|  70.9k|	do {												\
  |  |  |  | 1417|  70.9k|		zval *_z1 = (z);								\
  |  |  |  | 1418|  70.9k|		const zval *_z2 = (v);							\
  |  |  |  | 1419|  70.9k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  70.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  70.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|  70.9k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  70.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  70.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|  70.9k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|  70.9k|	do {												\
  |  |  |  |  |  | 1408|  70.9k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  70.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  70.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|  70.9k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  70.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  70.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|  70.9k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 70.9k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|  70.9k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 70.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1807|  70.9k|				}
 1808|       |
 1809|  70.9k|				ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|  70.9k|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|  70.9k|		__fill_val++; \
  |  | 1581|  70.9k|		__fill_idx++; \
  |  | 1582|  70.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 70.9k]
  |  |  ------------------
  ------------------
 1810|  70.9k|				p++;
 1811|  70.9k|				i++;
 1812|  70.9k|			}
 1813|  11.1k|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|  11.1k|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|  11.1k|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|  11.1k|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|  11.1k|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|  11.1k|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|  11.1k|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|  11.1k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 11.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|  11.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 11.1k]
  |  |  ------------------
  ------------------
 1814|  11.1k|		Z_ARRVAL_P(arg_array)->nNumOfElements = num_args;
  ------------------
  |  |  997|  11.1k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  11.1k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  11.1k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1815|  11.1k|	} else {
 1816|    778|		ZVAL_EMPTY_ARRAY(arg_array);
  ------------------
  |  |   89|    778|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|    778|		zval *__z = (z);								\
  |  |   91|    778|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|    778|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    778|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|    778|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|    778|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    778|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|    778|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|    778|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 778]
  |  |  ------------------
  ------------------
 1817|    778|	}
 1818|       |
 1819|  11.9k|	if ((ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)
  ------------------
  |  |  687|  11.9k|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|  11.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if ((ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)
  ------------------
  |  |  673|  11.9k|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (1819:6): [True: 5, False: 11.9k]
  ------------------
 1820|       |	 /* __call and __callStatic are non-variadic, potentially with
 1821|       |	  * HAS_EXTRA_NAMED_PARAMS set. Don't add extra args, as they're already
 1822|       |	  * contained in the 2nd param. */
 1823|      5|	 && (call->func->common.fn_flags & ZEND_ACC_VARIADIC)) {
  ------------------
  |  |  358|      5|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (1823:6): [True: 5, False: 0]
  ------------------
 1824|      5|		zend_string *name;
 1825|      5|		zval *arg;
 1826|       |
 1827|      5|		bool is_sensitive = backtrace_is_arg_sensitive(call, call->func->common.num_args);
 1828|       |
 1829|      5|		SEPARATE_ARRAY(arg_array);
  ------------------
  |  | 1536|      5|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      5|		zval *__zv = (zv);								\
  |  | 1538|      5|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      5|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      3|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      3|		zval *__z = (z);						\
  |  |  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      3|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      3|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      3|		}												\
  |  | 1543|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1830|     22|		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(call->extra_named_params, name, arg) {
  ------------------
  |  | 1389|      6|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      5|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      5|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      5|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      5|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      5|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     11|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 6, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      6|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      6|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      6|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 6]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      6|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      6|	_key = _p->key; \
  |  | 1391|      6|	_val = _z;
  ------------------
  |  Branch (1830:3): [True: 0, False: 5]
  |  Branch (1830:3): [True: 5, False: 0]
  ------------------
 1831|     22|			ZVAL_DEREF(arg);
  ------------------
  |  | 1474|      6|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      6|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1832|     22|			if (is_sensitive) {
  ------------------
  |  Branch (1832:8): [True: 2, False: 4]
  ------------------
 1833|      2|				zval redacted_arg;
 1834|      2|				object_init_with_constructor(&redacted_arg, zend_ce_sensitive_parameter_value, 1, arg, NULL);
 1835|      2|				zend_hash_add_new(Z_ARRVAL_P(arg_array), name, &redacted_arg);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1836|      4|			} else {
 1837|      4|				Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      4|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      4|	zval *_pz = (pz);				\
  |  | 1287|      4|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      4|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      4|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1838|      4|				zend_hash_add_new(Z_ARRVAL_P(arg_array), name, arg);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1839|      4|			}
 1840|     22|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      6|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1841|      5|	}
 1842|  11.9k|}
zend_builtin_functions.c:backtrace_is_arg_sensitive:
 1699|  72.3k|{
 1700|  72.3k|	const zend_attribute *attribute = zend_get_parameter_attribute_str(
 1701|  72.3k|		call->func->common.attributes,
 1702|  72.3k|		"sensitiveparameter",
 1703|  72.3k|		sizeof("sensitiveparameter") - 1,
 1704|  72.3k|		offset
 1705|  72.3k|	);
 1706|       |
 1707|       |	return attribute != NULL;
 1708|  72.3k|}

zend_builtin_functions.c:register_class_stdClass:
  400|      2|{
  401|      2|	zend_class_entry ce, *class_entry;
  402|       |
  403|      2|	INIT_CLASS_ENTRY(ce, "stdClass", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  404|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  308|      2|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  405|       |
  406|      2|	zend_string *attribute_name_AllowDynamicProperties_class_stdClass_0 = zend_string_init_interned("AllowDynamicProperties", sizeof("AllowDynamicProperties") - 1, true);
  407|      2|	zend_add_class_attribute(class_entry, attribute_name_AllowDynamicProperties_class_stdClass_0, 0);
  408|      2|	zend_string_release_ex(attribute_name_AllowDynamicProperties_class_stdClass_0, true);
  409|       |
  410|      2|	return class_entry;
  411|      2|}

zend_call_stack_init:
   82|      2|ZEND_API void zend_call_stack_init(void) {
   83|      2|	if (!zend_call_stack_get(&EG(call_stack))) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (83:6): [True: 0, False: 2]
  ------------------
   84|      0|		EG(call_stack) = (zend_call_stack){0};
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
   85|      0|	}
   86|       |
   87|      2|	switch (EG(max_allowed_stack_size)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   88|      2|		case ZEND_MAX_ALLOWED_STACK_SIZE_DETECT: {
  ------------------
  |  |   64|      2|# define ZEND_MAX_ALLOWED_STACK_SIZE_DETECT     0
  ------------------
  |  Branch (88:3): [True: 2, False: 0]
  ------------------
   89|      2|			void *base = EG(call_stack).base;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   90|      2|			size_t size = EG(call_stack).max_size;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   91|      2|			if (UNEXPECTED(base == (void*)0)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   92|      0|				base = zend_call_stack_position();
   93|      0|				size = zend_call_stack_default_size();
   94|       |				/* base is not the actual stack base */
   95|      0|				size -= 32 * 1024;
   96|      0|			}
   97|      2|			EG(stack_base) = base;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   98|      2|			EG(stack_limit) = zend_call_stack_limit(base, size, EG(reserved_stack_size));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              			EG(stack_limit) = zend_call_stack_limit(base, size, EG(reserved_stack_size));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   99|      2|			break;
  100|      0|		}
  101|      0|		case ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED: {
  ------------------
  |  |   63|      0|# define ZEND_MAX_ALLOWED_STACK_SIZE_UNCHECKED -1
  ------------------
  |  Branch (101:3): [True: 0, False: 2]
  ------------------
  102|      0|			EG(stack_base) = (void*)0;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  103|      0|			EG(stack_limit) = (void*)0;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  104|      0|			break;
  105|      0|		}
  106|      0|		default: {
  ------------------
  |  Branch (106:3): [True: 0, False: 2]
  ------------------
  107|      0|			ZEND_ASSERT(EG(max_allowed_stack_size) > 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (107:4): [True: 0, False: 0]
  |  Branch (107:4): [True: 0, False: 0]
  ------------------
  108|      0|			void *base = EG(call_stack).base;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  109|      0|			if (UNEXPECTED(base == (void*)0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  110|      0|				base = zend_call_stack_position();
  111|      0|			}
  112|      0|			EG(stack_base) = base;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  113|      0|			EG(stack_limit) = zend_call_stack_limit(base, EG(max_allowed_stack_size), EG(reserved_stack_size));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			EG(stack_limit) = zend_call_stack_limit(base, EG(max_allowed_stack_size), EG(reserved_stack_size));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			EG(stack_limit) = zend_call_stack_limit(base, EG(max_allowed_stack_size), EG(reserved_stack_size));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  114|      0|			break;
  115|      0|		}
  116|      2|	}
  117|      2|}
zend_call_stack_get:
  793|      2|{
  794|      2|	if (zend_call_stack_get_linux(stack)) {
  ------------------
  |  Branch (794:6): [True: 2, False: 0]
  ------------------
  795|      2|		return true;
  796|      2|	}
  797|       |
  798|      0|	if (zend_call_stack_get_freebsd(stack)) {
  ------------------
  |  Branch (798:6): [True: 0, False: 0]
  ------------------
  799|      0|		return true;
  800|      0|	}
  801|       |
  802|      0|	if (zend_call_stack_get_win32(stack)) {
  ------------------
  |  Branch (802:6): [True: 0, False: 0]
  ------------------
  803|      0|		return true;
  804|      0|	}
  805|       |
  806|      0|	if (zend_call_stack_get_macos(stack)) {
  ------------------
  |  Branch (806:6): [True: 0, False: 0]
  ------------------
  807|      0|		return true;
  808|      0|	}
  809|       |
  810|      0|	if (zend_call_stack_get_openbsd(stack)) {
  ------------------
  |  Branch (810:6): [True: 0, False: 0]
  ------------------
  811|      0|		return true;
  812|      0|	}
  813|       |
  814|      0|	if (zend_call_stack_get_netbsd(stack)) {
  ------------------
  |  Branch (814:6): [True: 0, False: 0]
  ------------------
  815|      0|		return true;
  816|      0|	}
  817|       |
  818|      0|	if (zend_call_stack_get_haiku(stack)) {
  ------------------
  |  Branch (818:6): [True: 0, False: 0]
  ------------------
  819|      0|		return true;
  820|      0|	}
  821|       |
  822|      0|	if (zend_call_stack_get_solaris(stack)) {
  ------------------
  |  Branch (822:6): [True: 0, False: 0]
  ------------------
  823|      0|		return true;
  824|      0|	}
  825|       |
  826|      0|	return false;
  827|      0|}
zend_call_stack.c:zend_call_stack_get_linux:
  265|      2|{
  266|      2|	if (zend_call_stack_is_main_thread()) {
  ------------------
  |  Branch (266:6): [True: 2, False: 0]
  ------------------
  267|      2|		return zend_call_stack_get_linux_proc_maps(stack);
  268|      2|	}
  269|       |
  270|      0|	return zend_call_stack_get_linux_pthread(stack);
  271|      2|}
zend_call_stack.c:zend_call_stack_is_main_thread:
  120|      4|static bool zend_call_stack_is_main_thread(void) {
  121|      4|# ifdef HAVE_GETTID
  122|      4|	return getpid() == gettid();
  123|       |# else
  124|       |	return getpid() == syscall(SYS_gettid);
  125|       |# endif
  126|      4|}
zend_call_stack.c:zend_call_stack_get_linux_proc_maps:
  181|      2|{
  182|      2|	FILE *f;
  183|      2|	char buffer[4096];
  184|      2|	uintptr_t addr_on_stack = (uintptr_t) zend_call_stack_position();
  185|      2|	uintptr_t start, end, prev_end = 0;
  186|      2|	size_t max_size;
  187|      2|	bool found = false;
  188|      2|	struct rlimit rlim;
  189|      2|	int error;
  190|       |
  191|       |	/* This method is relevant only for the main thread */
  192|      2|	ZEND_ASSERT(zend_call_stack_is_main_thread());
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (192:2): [True: 0, False: 2]
  |  Branch (192:2): [True: 2, False: 0]
  ------------------
  193|       |
  194|       |	/* Scan the process memory mappings to find the one containing the stack.
  195|       |	 *
  196|       |	 * The end of the stack mapping is the base of the stack. The start is
  197|       |	 * adjusted by the kernel as the stack grows. The maximum stack size is
  198|       |	 * determined by RLIMIT_STACK and the previous mapping.
  199|       |	 *
  200|       |	 *
  201|       |	 *                   ^ Higher addresses  ^
  202|       |	 *                   :                   :
  203|       |	 *                   :                   :
  204|       |	 *   Mapping end --> |-------------------| <-- Stack base (stack start)
  205|       |	 *                   |                   |   ^
  206|       |	 *                   | Stack Mapping     |   | Stack size
  207|       |	 *                   |                   |   v
  208|       |	 * Mapping start --> |-------------------| <-- Current stack end
  209|       |	 * (adjusted         :                   :
  210|       |	 *  downwards as the .                   .
  211|       |	 *  stack grows)     :                   :
  212|       |	 *                   |-------------------|
  213|       |	 *                   | Some Mapping      | The previous mapping may prevent
  214|       |	 *                   |-------------------| stack growth
  215|       |	 *                   :                   :
  216|       |	 *                   :                   :
  217|       |	 *                   v Lower addresses   v
  218|       |	 */
  219|       |
  220|      2|	f = fopen("/proc/self/maps", "r");
  221|      2|	if (!f) {
  ------------------
  |  Branch (221:6): [True: 0, False: 2]
  ------------------
  222|      0|		return false;
  223|      0|	}
  224|       |
  225|    136|	while (fgets(buffer, sizeof(buffer), f) && sscanf(buffer, "%" SCNxPTR "-%" SCNxPTR, &start, &end) == 2) {
  ------------------
  |  Branch (225:9): [True: 136, False: 0]
  |  Branch (225:45): [True: 136, False: 0]
  ------------------
  226|    136|		if (start <= addr_on_stack && end >= addr_on_stack) {
  ------------------
  |  Branch (226:7): [True: 136, False: 0]
  |  Branch (226:33): [True: 2, False: 134]
  ------------------
  227|      2|			found = true;
  228|      2|			break;
  229|      2|		}
  230|    134|		prev_end = end;
  231|    134|	}
  232|       |
  233|      2|	fclose(f);
  234|       |
  235|      2|	if (!found) {
  ------------------
  |  Branch (235:6): [True: 0, False: 2]
  ------------------
  236|      0|		return false;
  237|      0|	}
  238|       |
  239|      2|	error = getrlimit(RLIMIT_STACK, &rlim);
  240|      2|	if (error || rlim.rlim_cur == RLIM_INFINITY) {
  ------------------
  |  Branch (240:6): [True: 0, False: 2]
  |  Branch (240:15): [True: 0, False: 2]
  ------------------
  241|      0|		return false;
  242|      0|	}
  243|       |
  244|      2|	max_size = rlim.rlim_cur;
  245|       |
  246|       |#ifdef HAVE_VALGRIND
  247|       |	/* Under Valgrind, the last page is not useable */
  248|       |	if (RUNNING_ON_VALGRIND) {
  249|       |		max_size -= zend_get_page_size();
  250|       |	}
  251|       |#endif
  252|       |
  253|       |	/* Previous mapping may prevent the stack from growing */
  254|      2|	if (end - max_size < prev_end) {
  ------------------
  |  Branch (254:6): [True: 0, False: 2]
  ------------------
  255|      0|		max_size = prev_end - end;
  256|      0|	}
  257|       |
  258|      2|	stack->base = (void*)end;
  259|      2|	stack->max_size = max_size;
  260|       |
  261|       |	return true;
  262|      2|}

json_encoder.c:zend_call_stack_overflowed:
   58|      2|static zend_always_inline bool zend_call_stack_overflowed(void *stack_limit) {
   59|      2|	return (uintptr_t) zend_call_stack_position() <= (uintptr_t) stack_limit;
   60|      2|}
json_encoder.c:zend_call_stack_position:
   46|      2|static zend_always_inline void *zend_call_stack_position(void) {
   47|       |#ifdef _MSC_VER
   48|       |	return _AddressOfReturnAddress();
   49|       |#elif defined(PHP_HAVE_BUILTIN_FRAME_ADDRESS)
   50|       |	return __builtin_frame_address(0);
   51|       |#else
   52|       |	void *a;
   53|       |	void *pos = (void*)&a;
   54|       |	return pos;
   55|       |#endif
   56|      2|}
var.c:zend_call_stack_overflowed:
   58|  2.09M|static zend_always_inline bool zend_call_stack_overflowed(void *stack_limit) {
   59|  2.09M|	return (uintptr_t) zend_call_stack_position() <= (uintptr_t) stack_limit;
   60|  2.09M|}
var.c:zend_call_stack_position:
   46|  2.09M|static zend_always_inline void *zend_call_stack_position(void) {
   47|       |#ifdef _MSC_VER
   48|       |	return _AddressOfReturnAddress();
   49|       |#elif defined(PHP_HAVE_BUILTIN_FRAME_ADDRESS)
   50|       |	return __builtin_frame_address(0);
   51|       |#else
   52|       |	void *a;
   53|       |	void *pos = (void*)&a;
   54|       |	return pos;
   55|       |#endif
   56|  2.09M|}
zend_call_stack.c:zend_call_stack_position:
   46|      2|static zend_always_inline void *zend_call_stack_position(void) {
   47|       |#ifdef _MSC_VER
   48|       |	return _AddressOfReturnAddress();
   49|       |#elif defined(PHP_HAVE_BUILTIN_FRAME_ADDRESS)
   50|       |	return __builtin_frame_address(0);
   51|       |#else
   52|       |	void *a;
   53|       |	void *pos = (void*)&a;
   54|       |	return pos;
   55|       |#endif
   56|      2|}
zend_call_stack.c:zend_call_stack_limit:
   63|      2|{
   64|      2|	if (UNEXPECTED(size > (uintptr_t)base)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   65|      0|		return (void*)0;
   66|      0|	}
   67|       |
   68|      2|	base = (int8_t*)base - size;
   69|       |
   70|      2|	if (UNEXPECTED(UINTPTR_MAX - (uintptr_t)base < reserved_size)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   71|      0|		return (void*)UINTPTR_MAX;
   72|      0|	}
   73|       |
   74|      2|	return (int8_t*)base + reserved_size;
   75|      2|}
zend_compile.c:zend_call_stack_overflowed:
   58|  50.9k|static zend_always_inline bool zend_call_stack_overflowed(void *stack_limit) {
   59|  50.9k|	return (uintptr_t) zend_call_stack_position() <= (uintptr_t) stack_limit;
   60|  50.9k|}
zend_compile.c:zend_call_stack_position:
   46|  50.9k|static zend_always_inline void *zend_call_stack_position(void) {
   47|       |#ifdef _MSC_VER
   48|       |	return _AddressOfReturnAddress();
   49|       |#elif defined(PHP_HAVE_BUILTIN_FRAME_ADDRESS)
   50|       |	return __builtin_frame_address(0);
   51|       |#else
   52|       |	void *a;
   53|       |	void *pos = (void*)&a;
   54|       |	return pos;
   55|       |#endif
   56|  50.9k|}
zend_object_handlers.c:zend_call_stack_overflowed:
   58|     23|static zend_always_inline bool zend_call_stack_overflowed(void *stack_limit) {
   59|     23|	return (uintptr_t) zend_call_stack_position() <= (uintptr_t) stack_limit;
   60|     23|}
zend_object_handlers.c:zend_call_stack_position:
   46|     23|static zend_always_inline void *zend_call_stack_position(void) {
   47|       |#ifdef _MSC_VER
   48|       |	return _AddressOfReturnAddress();
   49|       |#elif defined(PHP_HAVE_BUILTIN_FRAME_ADDRESS)
   50|       |	return __builtin_frame_address(0);
   51|       |#else
   52|       |	void *a;
   53|       |	void *pos = (void*)&a;
   54|       |	return pos;
   55|       |#endif
   56|     23|}
fuzzer-execute.c:zend_call_stack_overflowed:
   58|  41.8k|static zend_always_inline bool zend_call_stack_overflowed(void *stack_limit) {
   59|  41.8k|	return (uintptr_t) zend_call_stack_position() <= (uintptr_t) stack_limit;
   60|  41.8k|}
fuzzer-execute.c:zend_call_stack_position:
   46|  41.8k|static zend_always_inline void *zend_call_stack_position(void) {
   47|       |#ifdef _MSC_VER
   48|       |	return _AddressOfReturnAddress();
   49|       |#elif defined(PHP_HAVE_BUILTIN_FRAME_ADDRESS)
   50|       |	return __builtin_frame_address(0);
   51|       |#else
   52|       |	void *a;
   53|       |	void *pos = (void*)&a;
   54|       |	return pos;
   55|       |#endif
   56|  41.8k|}

zim_Closure___invoke:
   45|      8|{
   46|      8|	zend_function *func = EX(func);
  ------------------
  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  ------------------
   47|      8|	zval *args;
   48|      8|	uint32_t num_args;
   49|      8|	HashTable *named_args;
   50|       |
   51|     24|	ZEND_PARSE_PARAMETERS_START(0, -1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   52|     24|		Z_PARAM_VARIADIC_WITH_NAMED(args, num_args, named_args)
  ------------------
  |  | 2142|      8|#define Z_PARAM_VARIADIC_WITH_NAMED(dest, dest_num, dest_named) do { \
  |  | 2143|      8|		uint32_t _num_varargs = _num_args - _i; \
  |  | 2144|      8|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  ------------------
  |  |  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 7, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2145|      7|			dest = _real_arg + 1; \
  |  | 2146|      7|			dest_num = _num_varargs; \
  |  | 2147|      7|		} else { \
  |  | 2148|      1|			dest = NULL; \
  |  | 2149|      1|			dest_num = 0; \
  |  | 2150|      1|		} \
  |  | 2151|      8|		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  687|      8|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  673|      8|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  |  |  ------------------
  |  |  |  Branch (2151:7): [True: 0, False: 8]
  |  |  ------------------
  |  | 2152|      0|			dest_named = execute_data->extra_named_params; \
  |  | 2153|      8|		} else { \
  |  | 2154|      8|			dest_named = NULL; \
  |  | 2155|      8|		} \
  |  | 2156|      8|	} while (0);
  |  |  ------------------
  |  |  |  Branch (2156:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
   53|     24|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      8|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      8|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      8|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (53:2): [True: 8, False: 0]
  |  Branch (53:2): [True: 0, False: 0]
  |  Branch (53:2): [True: 0, False: 8]
  |  Branch (53:2): [True: 8, False: 0]
  ------------------
   54|       |
   55|      8|	zend_fcall_info_cache fcc = {
   56|      8|		.closure = Z_OBJ_P(ZEND_THIS),
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
   57|      8|	};
   58|      8|	zend_closure_get_closure(Z_OBJ_P(ZEND_THIS), &fcc.calling_scope, &fcc.function_handler, &fcc.object, false);
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
   59|      8|	fcc.called_scope = fcc.calling_scope;
   60|      8|	zend_call_known_fcc(&fcc, return_value, num_args, args, named_args);
   61|       |
   62|       |	/* destruct the function also, then - we have allocated it in get_method */
   63|      8|	zend_string_release_ex(func->internal_function.function_name, 0);
   64|      8|	efree(func);
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|       |
   66|       |	/* Set the func pointer to NULL. Prior to PHP 8.3, this was only done for debug builds,
   67|       |	 * because debug builds check certain properties after the call and needed to know this
   68|       |	 * had been freed.
   69|       |	 * However, extensions can proxy zend_execute_internal, and it's a bit surprising to have
   70|       |	 * an invalid func pointer sitting on there, so this was changed in PHP 8.3.
   71|       |	 */
   72|       |	execute_data->func = NULL;
   73|      8|}
zim_Closure_call:
  128|      8|{
  129|      8|	zval *newthis, closure_result;
  130|      8|	zend_closure *closure;
  131|      8|	zend_fcall_info fci;
  132|      8|	zend_fcall_info_cache fci_cache;
  133|      8|	zend_object *newobj;
  134|      8|	zend_class_entry *newclass;
  135|       |
  136|      8|	fci.param_count = 0;
  137|      8|	fci.params = NULL;
  138|       |
  139|     24|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|     32|		Z_PARAM_OBJECT(newthis)
  ------------------
  |  | 1949|      8|	Z_PARAM_OBJECT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1941|      8|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1942|      8|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1943:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1944|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1945|      0|			break; \
  |  |  |  | 1946|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (140:3): [True: 8, False: 0]
  |  Branch (140:3): [True: 0, False: 0]
  |  Branch (140:3): [True: 8, False: 0]
  |  Branch (140:3): [True: 0, False: 0]
  |  Branch (140:3): [True: 8, False: 0]
  |  Branch (140:3): [True: 0, False: 0]
  |  Branch (140:3): [True: 0, False: 8]
  |  Branch (140:3): [True: 8, False: 0]
  |  Branch (140:3): [True: 0, False: 0]
  |  Branch (140:3): [True: 0, False: 0]
  ------------------
  141|      8|		Z_PARAM_VARIADIC_WITH_NAMED(fci.params, fci.param_count, fci.named_params)
  ------------------
  |  | 2142|      8|#define Z_PARAM_VARIADIC_WITH_NAMED(dest, dest_num, dest_named) do { \
  |  | 2143|      8|		uint32_t _num_varargs = _num_args - _i; \
  |  | 2144|      8|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  ------------------
  |  |  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2145|      0|			dest = _real_arg + 1; \
  |  | 2146|      0|			dest_num = _num_varargs; \
  |  | 2147|      8|		} else { \
  |  | 2148|      8|			dest = NULL; \
  |  | 2149|      8|			dest_num = 0; \
  |  | 2150|      8|		} \
  |  | 2151|      8|		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  687|      8|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  673|      8|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  |  |  ------------------
  |  |  |  Branch (2151:7): [True: 0, False: 8]
  |  |  ------------------
  |  | 2152|      0|			dest_named = execute_data->extra_named_params; \
  |  | 2153|      8|		} else { \
  |  | 2154|      8|			dest_named = NULL; \
  |  | 2155|      8|		} \
  |  | 2156|      8|	} while (0);
  |  |  ------------------
  |  |  |  Branch (2156:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  142|      8|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      8|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      8|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      8|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (142:2): [True: 8, False: 0]
  |  Branch (142:2): [True: 0, False: 0]
  |  Branch (142:2): [True: 0, False: 8]
  |  Branch (142:2): [True: 8, False: 0]
  ------------------
  143|       |
  144|      8|	closure = (zend_closure *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  145|       |
  146|      8|	newobj = Z_OBJ_P(newthis);
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  147|      8|	newclass = newobj->ce;
  148|       |
  149|      8|	if (!zend_valid_closure_binding(closure, newthis, newclass)) {
  ------------------
  |  Branch (149:6): [True: 2, False: 6]
  ------------------
  150|      2|		return;
  151|      2|	}
  152|       |
  153|      6|	fci_cache.called_scope = newclass;
  154|      6|	fci_cache.object = fci.object = newobj;
  155|       |
  156|      6|	fci.size = sizeof(fci);
  157|      6|	fci.consumed_args = 0;
  158|      6|	ZVAL_OBJ(&fci.function_name, &closure->std);
  ------------------
  |  | 1140|      6|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      6|		zval *__z = (z);						\
  |  | 1142|      6|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      6|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      6|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      6|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  159|      6|	ZVAL_UNDEF(&closure_result);
  ------------------
  |  | 1055|      6|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      6|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  160|      6|	fci.retval = &closure_result;
  161|       |
  162|      6|	if (closure->func.common.fn_flags & ZEND_ACC_GENERATOR) {
  ------------------
  |  |  387|      6|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
  |  Branch (162:6): [True: 1, False: 5]
  ------------------
  163|      1|		zval new_closure;
  164|      1|		zend_create_closure(&new_closure, &closure->func, newclass, closure->called_scope, newthis);
  165|      1|		closure = (zend_closure *) Z_OBJ(new_closure);
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  166|      1|		fci_cache.function_handler = &closure->func;
  167|       |
  168|      1|		zend_call_function(&fci, &fci_cache);
  169|       |
  170|       |		/* copied upon generator creation */
  171|      1|		GC_DELREF(&closure->std);
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  172|      5|	} else {
  173|      5|		zend_closure *fake_closure;
  174|      5|		zend_function *my_function;
  175|       |
  176|      5|		fake_closure = emalloc(sizeof(zend_closure));
  ------------------
  |  |  150|      5|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|      5|		memset(&fake_closure->std, 0, sizeof(fake_closure->std));
  178|      5|		fake_closure->std.gc.refcount = 1;
  179|      5|		fake_closure->std.gc.u.type_info = GC_NULL;
  ------------------
  |  |  805|      5|#define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      5|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
  180|      5|		ZVAL_UNDEF(&fake_closure->this_ptr);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  181|      5|		fake_closure->called_scope = NULL;
  182|      5|		my_function = &fake_closure->func;
  183|      5|		if (ZEND_USER_CODE(closure->func.type)) {
  ------------------
  |  | 1081|      5|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 4, False: 1]
  |  |  ------------------
  ------------------
  184|      4|			memcpy(my_function, &closure->func, sizeof(zend_op_array));
  185|      4|		} else {
  186|      1|			memcpy(my_function, &closure->func, sizeof(zend_internal_function));
  187|      1|		}
  188|       |		/* use scope of passed object */
  189|      5|		my_function->common.scope = newclass;
  190|      5|		if (closure->func.type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (190:7): [True: 1, False: 4]
  ------------------
  191|      1|			my_function->internal_function.handler = closure->orig_internal_handler;
  192|      1|		}
  193|      5|		fci_cache.function_handler = my_function;
  194|       |
  195|       |		/* Runtime cache relies on bound scope to be immutable, hence we need a separate rt cache in case scope changed */
  196|      5|		if (ZEND_USER_CODE(my_function->type)
  ------------------
  |  | 1081|     10|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 4, False: 1]
  |  |  ------------------
  ------------------
  197|      4|		 && (closure->func.common.scope != newclass
  ------------------
  |  Branch (197:8): [True: 4, False: 0]
  ------------------
  198|      4|		  || (closure->func.common.fn_flags & ZEND_ACC_HEAP_RT_CACHE))) {
  ------------------
  |  |  396|      0|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  |  Branch (198:8): [True: 0, False: 0]
  ------------------
  199|      4|			void *ptr;
  200|       |
  201|      4|			my_function->op_array.fn_flags |= ZEND_ACC_HEAP_RT_CACHE;
  ------------------
  |  |  396|      4|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  202|      4|			ptr = emalloc(my_function->op_array.cache_size);
  ------------------
  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|      4|			ZEND_MAP_PTR_INIT(my_function->op_array.run_time_cache, ptr);
  ------------------
  |  |   38|      4|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|      4|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  ------------------
  |  |   40|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  204|      4|			memset(ptr, 0, my_function->op_array.cache_size);
  205|      4|		}
  206|       |
  207|      5|		zend_call_function(&fci, &fci_cache);
  208|       |
  209|      5|		if (ZEND_USER_CODE(my_function->type)) {
  ------------------
  |  | 1081|      5|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 4, False: 1]
  |  |  ------------------
  ------------------
  210|      4|			if (fci_cache.function_handler->common.fn_flags & ZEND_ACC_HEAP_RT_CACHE) {
  ------------------
  |  |  396|      4|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  |  Branch (210:8): [True: 4, False: 0]
  ------------------
  211|      4|				efree(ZEND_MAP_PTR(my_function->op_array.run_time_cache));
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      4|			}
  213|      4|		}
  214|      5|		efree_size(fake_closure, sizeof(zend_closure));
  ------------------
  |  |  138|      5|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|      5|	}
  216|       |
  217|      6|	if (Z_TYPE(closure_result) != IS_UNDEF) {
  ------------------
  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(closure_result) != IS_UNDEF) {
  ------------------
  |  |  606|      6|#define IS_UNDEF					0
  ------------------
  |  Branch (217:6): [True: 5, False: 1]
  ------------------
  218|      5|		if (Z_ISREF(closure_result)) {
  ------------------
  |  |  963|      5|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  ------------------
  |  |  |  Branch (963:26): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  219|      0|			zend_unwrap_reference(&closure_result);
  220|      0|		}
  221|      5|		ZVAL_COPY_VALUE(return_value, &closure_result);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  222|      5|	}
  223|      6|}
zim_Closure_bind:
  259|      1|{
  260|      1|	zval *zclosure, *newthis;
  261|      1|	zend_object *scope_obj = NULL;
  262|      1|	zend_string *scope_str = ZSTR_KNOWN(ZEND_STR_STATIC);
  263|       |
  264|      3|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|      4|		Z_PARAM_OBJECT_OF_CLASS(zclosure, zend_ce_closure)
  ------------------
  |  | 1985|      1|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 0, 0)
  |  |  ------------------
  |  |  |  | 1971|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      1|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (265:3): [True: 1, False: 0]
  |  Branch (265:3): [True: 0, False: 0]
  |  Branch (265:3): [True: 1, False: 0]
  |  Branch (265:3): [True: 0, False: 0]
  |  Branch (265:3): [True: 1, False: 0]
  |  Branch (265:3): [True: 0, False: 0]
  |  Branch (265:3): [True: 0, False: 1]
  |  Branch (265:3): [True: 1, False: 0]
  |  Branch (265:3): [True: 0, False: 0]
  |  Branch (265:3): [True: 0, False: 0]
  ------------------
  266|      5|		Z_PARAM_OBJECT_OR_NULL(newthis)
  ------------------
  |  | 1952|      1|	Z_PARAM_OBJECT_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 1941|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1942|      1|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1943:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1944|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1945|      0|			break; \
  |  |  |  | 1946|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (266:3): [True: 1, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 1, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 1, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 0, False: 1]
  |  Branch (266:3): [True: 1, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  ------------------
  267|      1|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
  268|      5|		Z_PARAM_OBJ_OR_STR_OR_NULL(scope_obj, scope_str)
  ------------------
  |  | 1780|      1|	Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, 1);
  |  |  ------------------
  |  |  |  | 1769|      1|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1770|      1|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1771|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1771:20): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1772|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1773|      0|		break; \
  |  |  |  | 1774|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (268:3): [True: 1, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 1]
  |  Branch (268:3): [True: 1, False: 0]
  |  Branch (268:3): [True: 1, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 1, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  ------------------
  269|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (269:2): [True: 1, False: 0]
  |  Branch (269:2): [True: 0, False: 0]
  |  Branch (269:2): [True: 1, False: 0]
  |  Branch (269:2): [True: 0, False: 0]
  ------------------
  270|       |
  271|      1|	do_closure_bind(return_value, zclosure, newthis, scope_obj, scope_str);
  272|      1|}
zim_Closure_bindTo:
  276|     11|{
  277|     11|	zval *newthis;
  278|     11|	zend_object *scope_obj = NULL;
  279|     11|	zend_string *scope_str = ZSTR_KNOWN(ZEND_STR_STATIC);
  280|       |
  281|     33|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     11|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     11|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     11|		const int _flags = (flags); \
  |  |  |  | 1599|     11|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     11|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     11|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     11|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     11|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     11|		uint32_t _i = 0; \
  |  |  |  | 1603|     11|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     11|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     11|		char *_error = NULL; \
  |  |  |  | 1606|     11|		bool _dummy = 0; \
  |  |  |  | 1607|     11|		bool _optional = 0; \
  |  |  |  | 1608|     11|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     11|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     11|		((void)_i); \
  |  |  |  | 1610|     11|		((void)_real_arg); \
  |  |  |  | 1611|     11|		((void)_arg); \
  |  |  |  | 1612|     11|		((void)_expected_type); \
  |  |  |  | 1613|     11|		((void)_error); \
  |  |  |  | 1614|     11|		((void)_optional); \
  |  |  |  | 1615|     11|		((void)_dummy); \
  |  |  |  | 1616|     11|		\
  |  |  |  | 1617|     11|		do { \
  |  |  |  | 1618|     11|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     11|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     11|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     11|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     11|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  282|     44|		Z_PARAM_OBJECT_OR_NULL(newthis)
  ------------------
  |  | 1952|     11|	Z_PARAM_OBJECT_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 1941|     11|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     11|	++_i; \
  |  |  |  |  |  | 1654|     11|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     11|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     11|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     11|	_real_arg++; \
  |  |  |  |  |  | 1660|     11|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     11|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     11|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1942|     11|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|      1|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1943:21): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1944|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1945|      1|			break; \
  |  |  |  | 1946|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (282:3): [True: 11, False: 0]
  |  Branch (282:3): [True: 0, False: 0]
  |  Branch (282:3): [True: 11, False: 0]
  |  Branch (282:3): [True: 0, False: 0]
  |  Branch (282:3): [True: 11, False: 0]
  |  Branch (282:3): [True: 0, False: 0]
  |  Branch (282:3): [True: 0, False: 11]
  |  Branch (282:3): [True: 11, False: 0]
  |  Branch (282:3): [True: 0, False: 0]
  |  Branch (282:3): [True: 0, False: 0]
  ------------------
  283|     10|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     10|	_optional = 1;
  ------------------
  284|     32|		Z_PARAM_OBJ_OR_STR_OR_NULL(scope_obj, scope_str)
  ------------------
  |  | 1780|     10|	Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, 1);
  |  |  ------------------
  |  |  |  | 1769|     10|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     10|	++_i; \
  |  |  |  |  |  | 1654|     10|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     10|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     10|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     10|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 6, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     10|	} \
  |  |  |  |  |  | 1659|     10|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1770|      4|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1771|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1771:20): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1772|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1773|      0|		break; \
  |  |  |  | 1774|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (284:3): [True: 10, False: 0]
  |  Branch (284:3): [True: 0, False: 0]
  |  Branch (284:3): [True: 0, False: 10]
  |  Branch (284:3): [True: 10, False: 0]
  |  Branch (284:3): [True: 10, False: 0]
  |  Branch (284:3): [True: 0, False: 0]
  |  Branch (284:3): [True: 10, False: 0]
  |  Branch (284:3): [True: 0, False: 0]
  |  Branch (284:3): [True: 0, False: 0]
  |  Branch (284:3): [True: 0, False: 0]
  ------------------
  285|     32|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|     11|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (285:2): [True: 4, False: 0]
  |  Branch (285:2): [True: 0, False: 0]
  |  Branch (285:2): [True: 4, False: 0]
  |  Branch (285:2): [True: 0, False: 0]
  ------------------
  286|       |
  287|     10|	do_closure_bind(return_value, ZEND_THIS, newthis, scope_obj, scope_str);
  ------------------
  |  |  523|     10|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  288|     10|}
zim_Closure_fromCallable:
  410|     15|{
  411|     15|	zval *callable;
  412|     15|	char *error = NULL;
  413|       |
  414|     45|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     15|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     15|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     15|		const int _flags = (flags); \
  |  |  |  | 1599|     15|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     15|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     15|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     15|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     15|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     15|		uint32_t _i = 0; \
  |  |  |  | 1603|     15|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     15|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     15|		char *_error = NULL; \
  |  |  |  | 1606|     15|		bool _dummy = 0; \
  |  |  |  | 1607|     15|		bool _optional = 0; \
  |  |  |  | 1608|     15|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     15|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     15|		((void)_i); \
  |  |  |  | 1610|     15|		((void)_real_arg); \
  |  |  |  | 1611|     15|		((void)_arg); \
  |  |  |  | 1612|     15|		((void)_expected_type); \
  |  |  |  | 1613|     15|		((void)_error); \
  |  |  |  | 1614|     15|		((void)_optional); \
  |  |  |  | 1615|     15|		((void)_dummy); \
  |  |  |  | 1616|     15|		\
  |  |  |  | 1617|     15|		do { \
  |  |  |  | 1618|     15|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     15|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     15|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     15|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     15|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     15|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|     60|		Z_PARAM_ZVAL(callable)
  ------------------
  |  | 2116|     15|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     15|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     15|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     15|	++_i; \
  |  |  |  |  |  |  |  | 1654|     15|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     15|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     15|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     15|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     15|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     15|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     15|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     15|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (415:3): [True: 15, False: 0]
  |  Branch (415:3): [True: 0, False: 0]
  |  Branch (415:3): [True: 15, False: 0]
  |  Branch (415:3): [True: 0, False: 0]
  |  Branch (415:3): [True: 15, False: 0]
  |  Branch (415:3): [True: 0, False: 0]
  |  Branch (415:3): [True: 0, False: 15]
  |  Branch (415:3): [True: 15, False: 0]
  |  Branch (415:3): [True: 0, False: 0]
  |  Branch (415:3): [True: 0, False: 0]
  ------------------
  416|     60|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     15|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     15|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     15|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  |  | 1641|     15|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (416:2): [True: 15, False: 0]
  |  Branch (416:2): [True: 0, False: 0]
  |  Branch (416:2): [True: 15, False: 0]
  |  Branch (416:2): [True: 0, False: 0]
  ------------------
  417|       |
  418|     15|	if (Z_TYPE_P(callable) == IS_OBJECT && instanceof_function(Z_OBJCE_P(callable), zend_ce_closure)) {
  ------------------
  |  |  669|     15|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     15|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(callable) == IS_OBJECT && instanceof_function(Z_OBJCE_P(callable), zend_ce_closure)) {
  ------------------
  |  |  614|     30|#define IS_OBJECT					8
  ------------------
              	if (Z_TYPE_P(callable) == IS_OBJECT && instanceof_function(Z_OBJCE_P(callable), zend_ce_closure)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (418:6): [True: 0, False: 15]
  |  Branch (418:41): [True: 0, False: 0]
  ------------------
  419|       |		/* It's already a closure */
  420|      0|		RETURN_COPY(callable);
  ------------------
  |  | 1065|      0|#define RETURN_COPY(zv)					do { RETVAL_COPY(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1039|      0|#define RETVAL_COPY(zv)					ZVAL_COPY(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1425|      0|	do {												\
  |  |  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1433|      0|		}												\
  |  |  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1065:68): [Folded, False: 0]
  |  |  ------------------
  ------------------
  421|      0|	}
  422|       |
  423|     15|	if (zend_create_closure_from_callable(return_value, callable, &error) == FAILURE) {
  ------------------
  |  Branch (423:6): [True: 2, False: 13]
  ------------------
  424|      2|		if (error) {
  ------------------
  |  Branch (424:7): [True: 2, False: 0]
  ------------------
  425|      2|			zend_type_error("Failed to create closure from callable: %s", error);
  426|      2|			efree(error);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|      2|		} else {
  428|      0|			zend_type_error("Failed to create closure from callable");
  429|      0|		}
  430|      2|	}
  431|     15|}
zend_get_closure_invoke_method:
  499|     21|{
  500|     21|	zend_closure *closure = (zend_closure *)object;
  501|     21|	zend_function *invoke = (zend_function*)emalloc(sizeof(zend_function));
  ------------------
  |  |  150|     21|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     21|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     21|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     21|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     21|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  502|     21|	const uint32_t keep_flags =
  503|     21|		ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_VARIADIC | ZEND_ACC_HAS_RETURN_TYPE | ZEND_ACC_DEPRECATED;
  ------------------
  |  |  352|     21|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
              		ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_VARIADIC | ZEND_ACC_HAS_RETURN_TYPE | ZEND_ACC_DEPRECATED;
  ------------------
  |  |  358|     21|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
              		ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_VARIADIC | ZEND_ACC_HAS_RETURN_TYPE | ZEND_ACC_DEPRECATED;
  ------------------
  |  |  355|     21|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
              		ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_VARIADIC | ZEND_ACC_HAS_RETURN_TYPE | ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|     21|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  504|       |
  505|     21|	invoke->common = closure->func.common;
  506|       |	/* We return ZEND_INTERNAL_FUNCTION, but arg_info representation is the
  507|       |	 * same as for ZEND_USER_FUNCTION (uses zend_string* instead of char*).
  508|       |	 * This is not a problem, because ZEND_ACC_HAS_TYPE_HINTS is never set,
  509|       |	 * and we won't check arguments on internal function. We also set
  510|       |	 * ZEND_ACC_USER_ARG_INFO flag to prevent invalid usage by Reflection */
  511|     21|	invoke->type = ZEND_INTERNAL_FUNCTION;
  512|     21|	invoke->internal_function.fn_flags =
  513|     21|		ZEND_ACC_PUBLIC | ZEND_ACC_CALL_VIA_HANDLER | ZEND_ACC_NEVER_CACHE | (closure->func.common.fn_flags & keep_flags);
  ------------------
  |  |  219|     21|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              		ZEND_ACC_PUBLIC | ZEND_ACC_CALL_VIA_HANDLER | ZEND_ACC_NEVER_CACHE | (closure->func.common.fn_flags & keep_flags);
  ------------------
  |  |  438|     21|#define ZEND_ACC_CALL_VIA_HANDLER     ZEND_ACC_CALL_VIA_TRAMPOLINE
  |  |  ------------------
  |  |  |  |  372|     21|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  |  |  ------------------
  ------------------
              		ZEND_ACC_PUBLIC | ZEND_ACC_CALL_VIA_HANDLER | ZEND_ACC_NEVER_CACHE | (closure->func.common.fn_flags & keep_flags);
  ------------------
  |  |  375|     21|#define ZEND_ACC_NEVER_CACHE             (1 << 19) /*     |  X  |     |     */
  ------------------
  514|     21|	if (closure->func.type != ZEND_INTERNAL_FUNCTION || (closure->func.common.fn_flags & ZEND_ACC_USER_ARG_INFO)) {
  ------------------
  |  |  399|      1|#define ZEND_ACC_USER_ARG_INFO           (1 << 26) /*     |  X  |     |     */
  ------------------
  |  Branch (514:6): [True: 20, False: 1]
  |  Branch (514:54): [True: 0, False: 1]
  ------------------
  515|     20|		invoke->internal_function.fn_flags |=
  516|     20|			ZEND_ACC_USER_ARG_INFO;
  ------------------
  |  |  399|     20|#define ZEND_ACC_USER_ARG_INFO           (1 << 26) /*     |  X  |     |     */
  ------------------
  517|     20|	}
  518|     21|	invoke->internal_function.handler = ZEND_MN(Closure___invoke);
  ------------------
  |  |   72|     21|#define ZEND_MN(name) zim_##name
  ------------------
  519|       |	invoke->internal_function.doc_comment = NULL;
  520|     21|	invoke->internal_function.module = 0;
  521|     21|	invoke->internal_function.scope = zend_ce_closure;
  522|     21|	invoke->internal_function.function_name = ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE);
  523|     21|	return invoke;
  524|     21|}
zend_get_closure_method_def:
  528|     15|{
  529|     15|	zend_closure *closure = (zend_closure *) obj;
  530|     15|	return &closure->func;
  531|     15|}
zend_get_closure_this_ptr:
  535|      1|{
  536|      1|	zend_closure *closure = (zend_closure *)Z_OBJ_P(obj);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  537|      1|	return &closure->this_ptr;
  538|      1|}
zend_register_closure_ce:
  732|      2|{
  733|      2|	zend_ce_closure = register_class_Closure();
  734|      2|	zend_ce_closure->create_object = zend_closure_new;
  735|      2|	zend_ce_closure->default_object_handlers = &closure_handlers;
  736|       |
  737|      2|	memcpy(&closure_handlers, &std_object_handlers, sizeof(zend_object_handlers));
  738|      2|	closure_handlers.free_obj = zend_closure_free_storage;
  739|      2|	closure_handlers.get_constructor = zend_closure_get_constructor;
  740|      2|	closure_handlers.get_method = zend_closure_get_method;
  741|      2|	closure_handlers.compare = zend_closure_compare;
  742|      2|	closure_handlers.clone_obj = zend_closure_clone;
  743|      2|	closure_handlers.get_debug_info = zend_closure_get_debug_info;
  744|      2|	closure_handlers.get_closure = zend_closure_get_closure;
  745|      2|	closure_handlers.get_gc = zend_closure_get_gc;
  746|      2|}
zend_create_closure:
  863|    510|{
  864|    510|	zend_create_closure_ex(res, func, scope, called_scope, this_ptr,
  865|    510|		/* is_fake */ (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) != 0);
  ------------------
  |  |  385|    510|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  866|    510|}
zend_create_fake_closure:
  869|     52|{
  870|     52|	zend_closure *closure;
  871|       |
  872|     52|	zend_create_closure_ex(res, func, scope, called_scope, this_ptr, /* is_fake */ true);
  873|       |
  874|     52|	closure = (zend_closure *)Z_OBJ_P(res);
  ------------------
  |  | 1000|     52|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     52|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  875|     52|	closure->func.common.fn_flags |= ZEND_ACC_FAKE_CLOSURE;
  ------------------
  |  |  385|     52|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  876|     52|	if (Z_TYPE(closure->this_ptr) != IS_OBJECT) {
  ------------------
  |  |  668|     52|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(closure->this_ptr) != IS_OBJECT) {
  ------------------
  |  |  614|     52|#define IS_OBJECT					8
  ------------------
  |  Branch (876:6): [True: 41, False: 11]
  ------------------
  877|     41|		GC_ADD_FLAGS(&closure->std, GC_NOT_COLLECTABLE);
  ------------------
  |  |  780|     41|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     41|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     41|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     41|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     41|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 41]
  |  |  ------------------
  ------------------
  878|     41|	}
  879|     52|}
zend_closure_from_frame:
  882|     26|void zend_closure_from_frame(zval *return_value, const zend_execute_data *call) { /* {{{ */
  883|     26|	zval instance;
  884|     26|	zend_internal_function trampoline;
  885|     26|	zend_function *mptr = call->func;
  886|       |
  887|     26|	if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  687|     26|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  668|     26|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
  |  Branch (887:6): [True: 2, False: 24]
  ------------------
  888|      2|		RETURN_OBJ(ZEND_CLOSURE_OBJECT(mptr));
  ------------------
  |  | 1063|      2|#define RETURN_OBJ(r)					do { RETVAL_OBJ(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1037|      2|#define RETVAL_OBJ(r)					ZVAL_OBJ(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1140|      2|#define ZVAL_OBJ(z, o) do {						\
  |  |  |  |  |  | 1141|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1142|      2|		Z_OBJ_P(__z) = (o);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1143|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1144|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1144:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1063:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
  889|      2|	}
  890|       |
  891|     24|	if (mptr->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|     24|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (891:6): [True: 3, False: 21]
  ------------------
  892|      3|		if ((ZEND_CALL_INFO(call) & ZEND_CALL_HAS_THIS) &&
  ------------------
  |  |  687|      3|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if ((ZEND_CALL_INFO(call) & ZEND_CALL_HAS_THIS) &&
  ------------------
  |  |  657|      3|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      3|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      3|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (892:7): [True: 3, False: 0]
  ------------------
  893|      3|			(Z_OBJCE(call->This) == zend_ce_closure)
  ------------------
  |  | 1011|      3|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (893:4): [True: 1, False: 2]
  ------------------
  894|      1|			&& zend_string_equals(mptr->common.function_name, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE))) {
  ------------------
  |  Branch (894:7): [True: 1, False: 0]
  ------------------
  895|      1|	        zend_free_trampoline(mptr);
  ------------------
  |  |  344|      1|#define zend_free_trampoline(func) do { \
  |  |  345|      1|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      1|		} else { \
  |  |  349|      1|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      1|		} \
  |  |  351|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  896|      1|	        RETURN_OBJ_COPY(Z_OBJ(call->This));
  ------------------
  |  | 1064|      1|#define RETURN_OBJ_COPY(r)				do { RETVAL_OBJ_COPY(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1038|      1|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1146|      1|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  |  |  | 1147|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1148|      1|		zend_object *__o = (o);					\
  |  |  |  |  |  | 1149|      1|		GC_ADDREF(__o);							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1150|      1|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1151|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1152|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1152:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1064:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
  897|      1|	    }
  898|       |
  899|      2|		memset(&trampoline, 0, sizeof(zend_internal_function));
  900|      2|		trampoline.type = ZEND_INTERNAL_FUNCTION;
  901|      2|		trampoline.fn_flags = mptr->common.fn_flags & (ZEND_ACC_STATIC | ZEND_ACC_VARIADIC | ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_DEPRECATED);
  ------------------
  |  |  227|      2|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              		trampoline.fn_flags = mptr->common.fn_flags & (ZEND_ACC_STATIC | ZEND_ACC_VARIADIC | ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_DEPRECATED);
  ------------------
  |  |  358|      2|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
              		trampoline.fn_flags = mptr->common.fn_flags & (ZEND_ACC_STATIC | ZEND_ACC_VARIADIC | ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_DEPRECATED);
  ------------------
  |  |  352|      2|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
              		trampoline.fn_flags = mptr->common.fn_flags & (ZEND_ACC_STATIC | ZEND_ACC_VARIADIC | ZEND_ACC_RETURN_REFERENCE | ZEND_ACC_DEPRECATED);
  ------------------
  |  |  258|      2|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  902|      2|		trampoline.handler = zend_closure_call_magic;
  903|      2|		trampoline.function_name = mptr->common.function_name;
  904|      2|		trampoline.scope = mptr->common.scope;
  905|      2|		trampoline.doc_comment = NULL;
  906|      2|		trampoline.arg_info = mptr->common.arg_info;
  907|      2|		trampoline.attributes = mptr->common.attributes;
  908|       |
  909|      2|		zend_free_trampoline(mptr);
  ------------------
  |  |  344|      2|#define zend_free_trampoline(func) do { \
  |  |  345|      2|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 2, False: 0]
  |  |  ------------------
  |  |  346|      2|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      2|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      2|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  910|      2|		mptr = (zend_function *) &trampoline;
  911|      2|	}
  912|       |
  913|     23|	if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_THIS) {
  ------------------
  |  |  687|     23|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_THIS) {
  ------------------
  |  |  657|     23|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|     23|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     23|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     23|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     23|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (913:6): [True: 2, False: 21]
  ------------------
  914|      2|		ZVAL_OBJ(&instance, Z_OBJ(call->This));
  ------------------
  |  | 1140|      2|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      2|		zval *__z = (z);						\
  |  | 1142|      2|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  915|       |
  916|      2|		zend_create_fake_closure(return_value, mptr, mptr->common.scope, Z_OBJCE(instance), &instance);
  ------------------
  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  917|     21|	} else {
  918|     21|		zend_create_fake_closure(return_value, mptr, mptr->common.scope, Z_CE(call->This), NULL);
  ------------------
  |  | 1046|     21|#define Z_CE(zval)					(zval).value.ce
  ------------------
  919|     21|	}
  920|       |
  921|     23|	if (&mptr->internal_function == &trampoline) {
  ------------------
  |  Branch (921:6): [True: 2, False: 21]
  ------------------
  922|      2|		zend_string_release(mptr->common.function_name);
  923|      2|	}
  924|     23|} /* }}} */
zend_closure_bind_var_ex:
  935|     40|{
  936|     40|	zend_closure *closure = (zend_closure *) Z_OBJ_P(closure_zv);
  ------------------
  |  | 1000|     40|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     40|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  937|     40|	HashTable *static_variables = ZEND_MAP_PTR_GET(closure->func.op_array.static_variables_ptr);
  ------------------
  |  |   54|     40|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|     40|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     40|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     40|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|     40|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|     40|	ptr ## __ptr
  |  |  ------------------
  ------------------
  938|     40|	zval *var = (zval*)((char*)static_variables->arData + offset);
  939|     40|	zval_ptr_dtor(var);
  940|     40|	ZVAL_COPY_VALUE(var, val);
  ------------------
  |  | 1416|     40|	do {												\
  |  | 1417|     40|		zval *_z1 = (z);								\
  |  | 1418|     40|		const zval *_z2 = (v);							\
  |  | 1419|     40|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     40|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     40|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     40|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     40|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     40|	do {												\
  |  |  |  | 1408|     40|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     40|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     40|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     40|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     40|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
  941|     40|}
zend_closures.c:zend_valid_closure_binding:
   78|     17|{
   79|     17|	zend_function *func = &closure->func;
   80|     17|	bool is_fake_closure = (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) != 0;
  ------------------
  |  |  385|     17|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
   81|     17|	if (newthis) {
  ------------------
  |  Branch (81:6): [True: 15, False: 2]
  ------------------
   82|     15|		if (func->common.fn_flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     15|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (82:7): [True: 0, False: 15]
  ------------------
   83|      0|			zend_error(E_WARNING, "Cannot bind an instance to a static closure, this will be an error in PHP 9");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
   84|      0|			return false;
   85|      0|		}
   86|       |
   87|     15|		if (is_fake_closure && func->common.scope &&
  ------------------
  |  Branch (87:7): [True: 8, False: 7]
  |  Branch (87:26): [True: 4, False: 4]
  ------------------
   88|      4|				!instanceof_function(Z_OBJCE_P(newthis), func->common.scope)) {
  ------------------
  |  | 1012|      4|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      4|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (88:5): [True: 1, False: 3]
  ------------------
   89|       |			/* Binding incompatible $this to an internal method is not supported. */
   90|      1|			zend_error(E_WARNING, "Cannot bind method %s::%s() to object of class %s, this will be an error in PHP 9",
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
   91|      1|					ZSTR_VAL(func->common.scope->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   92|      1|					ZSTR_VAL(func->common.function_name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   93|      1|					ZSTR_VAL(Z_OBJCE_P(newthis)->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   94|      1|			return false;
   95|      1|		}
   96|     15|	} else if (is_fake_closure && func->common.scope
  ------------------
  |  Branch (96:13): [True: 0, False: 2]
  |  Branch (96:32): [True: 0, False: 0]
  ------------------
   97|      0|			&& !(func->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (97:7): [True: 0, False: 0]
  ------------------
   98|      0|		zend_error(E_WARNING, "Cannot unbind $this of method, this will be an error in PHP 9");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
   99|      0|		return false;
  100|      2|	} else if (!is_fake_closure && !Z_ISUNDEF(closure->this_ptr)
  ------------------
  |  |  966|      4|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (100:13): [True: 2, False: 0]
  |  Branch (100:33): [True: 0, False: 2]
  ------------------
  101|      0|			&& (func->common.fn_flags & ZEND_ACC_USES_THIS)) {
  ------------------
  |  |  368|      0|#define ZEND_ACC_USES_THIS               (1 << 17) /*     |  X  |     |     */
  ------------------
  |  Branch (101:7): [True: 0, False: 0]
  ------------------
  102|      0|		zend_error(E_WARNING, "Cannot unbind $this of closure using $this, this will be an error in PHP 9");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  103|      0|		return false;
  104|      0|	}
  105|       |
  106|     16|	if (scope && scope != func->common.scope && scope->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (106:6): [True: 11, False: 5]
  |  Branch (106:15): [True: 8, False: 3]
  |  Branch (106:46): [True: 0, False: 8]
  ------------------
  107|       |		/* rebinding to internal class is not allowed */
  108|      0|		zend_error(E_WARNING, "Cannot bind closure to scope of internal class %s, this will be an error in PHP 9",
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  109|      0|				ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  110|      0|		return false;
  111|      0|	}
  112|       |
  113|     16|	if (is_fake_closure && scope != func->common.scope) {
  ------------------
  |  Branch (113:6): [True: 7, False: 9]
  |  Branch (113:25): [True: 1, False: 6]
  ------------------
  114|      1|		if (func->common.scope == NULL) {
  ------------------
  |  Branch (114:7): [True: 1, False: 0]
  ------------------
  115|      1|			zend_error(E_WARNING, "Cannot rebind scope of closure created from function, this will be an error in PHP 9");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  116|      1|		} else {
  117|      0|			zend_error(E_WARNING, "Cannot rebind scope of closure created from method, this will be an error in PHP 9");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  118|      0|		}
  119|      1|		return false;
  120|      1|	}
  121|       |
  122|     15|	return true;
  123|     16|}
zend_closures.c:do_closure_bind:
  227|     11|{
  228|     11|	zend_class_entry *ce, *called_scope;
  229|     11|	zend_closure *closure = (zend_closure *) Z_OBJ_P(zclosure);
  ------------------
  |  | 1000|     11|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     11|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  230|       |
  231|     11|	if (scope_obj) {
  ------------------
  |  Branch (231:6): [True: 1, False: 10]
  ------------------
  232|      1|		ce = scope_obj->ce;
  233|     10|	} else if (scope_str) {
  ------------------
  |  Branch (233:13): [True: 9, False: 1]
  ------------------
  234|      9|		if (zend_string_equals(scope_str, ZSTR_KNOWN(ZEND_STR_STATIC))) {
  ------------------
  |  Branch (234:7): [True: 6, False: 3]
  ------------------
  235|      6|			ce = closure->func.common.scope;
  236|      6|		} else if ((ce = zend_lookup_class(scope_str)) == NULL) {
  ------------------
  |  Branch (236:14): [True: 2, False: 1]
  ------------------
  237|      2|			zend_error(E_WARNING, "Class \"%s\" not found", ZSTR_VAL(scope_str));
  ------------------
  |  |   23|      2|#define E_WARNING			(1<<1L)
  ------------------
              			zend_error(E_WARNING, "Class \"%s\" not found", ZSTR_VAL(scope_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  238|      2|			RETURN_NULL();
  ------------------
  |  | 1047|      2|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      2|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
  239|      2|		}
  240|      9|	} else {
  241|      1|		ce = NULL;
  242|      1|	}
  243|       |
  244|      9|	if (!zend_valid_closure_binding(closure, newthis, ce)) {
  ------------------
  |  Branch (244:6): [True: 0, False: 9]
  ------------------
  245|      0|		return;
  246|      0|	}
  247|       |
  248|      9|	if (newthis) {
  ------------------
  |  Branch (248:6): [True: 7, False: 2]
  ------------------
  249|      7|		called_scope = Z_OBJCE_P(newthis);
  ------------------
  |  | 1012|      7|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      7|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      7|	} else {
  251|      2|		called_scope = ce;
  252|      2|	}
  253|       |
  254|      9|	zend_create_closure(return_value, &closure->func, ce, called_scope, newthis);
  255|      9|}
zend_closures.c:zend_create_closure_from_callable:
  347|     15|static zend_result zend_create_closure_from_callable(zval *return_value, zval *callable, char **error) /* {{{ */ {
  348|     15|	zend_fcall_info_cache fcc;
  349|     15|	zend_function *mptr;
  350|     15|	zval instance;
  351|     15|	zend_internal_function call;
  352|       |
  353|     15|	if (!zend_is_callable_ex(callable, NULL, 0, NULL, &fcc, error)) {
  ------------------
  |  Branch (353:6): [True: 2, False: 13]
  ------------------
  354|      2|		return FAILURE;
  355|      2|	}
  356|       |
  357|     13|	mptr = fcc.function_handler;
  358|     13|	if (mptr->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|     13|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (358:6): [True: 4, False: 9]
  ------------------
  359|       |		/* For Closure::fromCallable([$closure, "__invoke"]) return $closure. */
  360|      4|		if (fcc.object && fcc.object->ce == zend_ce_closure
  ------------------
  |  Branch (360:7): [True: 4, False: 0]
  |  Branch (360:21): [True: 1, False: 3]
  ------------------
  361|      1|				&& zend_string_equals(mptr->common.function_name, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE))) {
  ------------------
  |  Branch (361:8): [True: 1, False: 0]
  ------------------
  362|      1|			RETVAL_OBJ_COPY(fcc.object);
  ------------------
  |  | 1038|      1|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  ------------------
  |  |  |  | 1146|      1|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  | 1147|      1|		zval *__z = (z);						\
  |  |  |  | 1148|      1|		zend_object *__o = (o);					\
  |  |  |  | 1149|      1|		GC_ADDREF(__o);							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1150|      1|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1151|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1152|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1152:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  363|      1|			zend_free_trampoline(mptr);
  ------------------
  |  |  344|      1|#define zend_free_trampoline(func) do { \
  |  |  345|      1|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      1|		} else { \
  |  |  349|      1|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      1|		} \
  |  |  351|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  364|      1|			return SUCCESS;
  365|      1|		}
  366|       |
  367|      3|		if (!mptr->common.scope) {
  ------------------
  |  Branch (367:7): [True: 0, False: 3]
  ------------------
  368|      0|			return FAILURE;
  369|      0|		}
  370|      3|		if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      3|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (370:7): [True: 0, False: 3]
  ------------------
  371|      0|			if (!mptr->common.scope->__callstatic) {
  ------------------
  |  Branch (371:8): [True: 0, False: 0]
  ------------------
  372|      0|				return FAILURE;
  373|      0|			}
  374|      3|		} else {
  375|      3|			if (!mptr->common.scope->__call) {
  ------------------
  |  Branch (375:8): [True: 0, False: 3]
  ------------------
  376|      0|				return FAILURE;
  377|      0|			}
  378|      3|		}
  379|       |
  380|      3|		memset(&call, 0, sizeof(zend_internal_function));
  381|      3|		call.type = ZEND_INTERNAL_FUNCTION;
  382|      3|		call.fn_flags = mptr->common.fn_flags & (ZEND_ACC_STATIC | ZEND_ACC_DEPRECATED);
  ------------------
  |  |  227|      3|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              		call.fn_flags = mptr->common.fn_flags & (ZEND_ACC_STATIC | ZEND_ACC_DEPRECATED);
  ------------------
  |  |  258|      3|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  383|      3|		call.handler = zend_closure_call_magic;
  384|      3|		call.function_name = mptr->common.function_name;
  385|      3|		call.scope = mptr->common.scope;
  386|      3|		call.doc_comment = NULL;
  387|      3|		call.attributes = mptr->common.attributes;
  388|       |
  389|      3|		zend_free_trampoline(mptr);
  ------------------
  |  |  344|      3|#define zend_free_trampoline(func) do { \
  |  |  345|      3|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 3, False: 0]
  |  |  ------------------
  |  |  346|      3|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      3|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      3|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  390|      3|		mptr = (zend_function *) &call;
  391|      3|	}
  392|       |
  393|     12|	if (fcc.object) {
  ------------------
  |  Branch (393:6): [True: 9, False: 3]
  ------------------
  394|      9|		ZVAL_OBJ(&instance, fcc.object);
  ------------------
  |  | 1140|      9|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      9|		zval *__z = (z);						\
  |  | 1142|      9|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      9|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      9|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      9|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      9|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
  395|      9|		zend_create_fake_closure(return_value, mptr, mptr->common.scope, fcc.called_scope, &instance);
  396|      9|	} else {
  397|      3|		zend_create_fake_closure(return_value, mptr, mptr->common.scope, fcc.called_scope, NULL);
  398|      3|	}
  399|       |
  400|     12|	if (&mptr->internal_function == &call) {
  ------------------
  |  Branch (400:6): [True: 3, False: 9]
  ------------------
  401|      3|		zend_string_release(mptr->common.function_name);
  402|      3|	}
  403|       |
  404|     12|	return SUCCESS;
  405|     13|}
zend_closures.c:zend_closure_get_closure:
  598|    977|{
  599|    977|	zend_closure *closure = (zend_closure*)obj;
  600|       |
  601|    977|	*fptr_ptr = &closure->func;
  602|    977|	*ce_ptr = closure->called_scope;
  603|       |
  604|    977|	if (Z_TYPE(closure->this_ptr) != IS_UNDEF) {
  ------------------
  |  |  668|    977|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(closure->this_ptr) != IS_UNDEF) {
  ------------------
  |  |  606|    977|#define IS_UNDEF					0
  ------------------
  |  Branch (604:6): [True: 14, False: 963]
  ------------------
  605|     14|		*obj_ptr = Z_OBJ(closure->this_ptr);
  ------------------
  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  606|    963|	} else {
  607|    963|		*obj_ptr = NULL;
  608|    963|	}
  609|       |
  610|    977|	return SUCCESS;
  611|    977|}
zend_closures.c:zend_closure_new:
  574|    564|{
  575|    564|	zend_closure *closure;
  576|       |
  577|    564|	closure = emalloc(sizeof(zend_closure));
  ------------------
  |  |  150|    564|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    564|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    564|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    564|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    564|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  578|    564|	memset(closure, 0, sizeof(zend_closure));
  579|       |
  580|    564|	zend_object_std_init(&closure->std, class_type);
  581|       |
  582|    564|	return (zend_object*)closure;
  583|    564|}
zend_closures.c:zend_closure_free_storage:
  552|    564|{
  553|    564|	zend_closure *closure = (zend_closure *)object;
  554|       |
  555|    564|	zend_object_std_dtor(&closure->std);
  556|       |
  557|    564|	if (closure->func.type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (557:6): [True: 522, False: 42]
  ------------------
  558|       |		/* We don't own the static variables of fake closures. */
  559|    522|		if (!(closure->func.op_array.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |  385|    522|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (559:7): [True: 505, False: 17]
  ------------------
  560|    505|			zend_destroy_static_vars(&closure->func.op_array);
  561|    505|		}
  562|    522|		destroy_op_array(&closure->func.op_array);
  563|    522|	} else if (closure->func.type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (563:13): [True: 40, False: 2]
  ------------------
  564|     40|		zend_string_release(closure->func.common.function_name);
  565|     40|	}
  566|       |
  567|    564|	if (Z_TYPE(closure->this_ptr) != IS_UNDEF) {
  ------------------
  |  |  668|    564|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(closure->this_ptr) != IS_UNDEF) {
  ------------------
  |  |  606|    564|#define IS_UNDEF					0
  ------------------
  |  Branch (567:6): [True: 24, False: 540]
  ------------------
  568|     24|		zval_ptr_dtor(&closure->this_ptr);
  569|     24|	}
  570|    564|}
zend_closures.c:zend_closure_get_constructor:
  452|      2|{
  453|      2|	zend_throw_error(NULL, "Instantiation of class Closure is not allowed");
  454|       |	return NULL;
  455|      2|}
zend_closures.c:zend_closure_get_method:
  542|     37|{
  543|     37|	if (zend_string_equals_literal_ci(method, ZEND_INVOKE_FUNC_NAME)) {
  ------------------
  |  |  404|     37|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     37|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 16, False: 21]
  |  |  |  Branch (404:40): [True: 14, False: 2]
  |  |  ------------------
  ------------------
  544|     14|		return zend_get_closure_invoke_method(*object);
  545|     14|	}
  546|       |
  547|     23|	return zend_std_get_method(object, method, key);
  548|     37|}
zend_closures.c:zend_closure_compare:
  460|      1|{
  461|      1|	ZEND_COMPARE_OBJECTS_FALLBACK(o1, o2);
  ------------------
  |  |  357|      1|	if (Z_TYPE_P(op1) != IS_OBJECT || \
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_TYPE_P(op1) != IS_OBJECT || \
  |  |  ------------------
  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  ------------------
  |  |  |  Branch (357:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  358|      1|			Z_TYPE_P(op2) != IS_OBJECT || \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_P(op2) != IS_OBJECT || \
  |  |  ------------------
  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  ------------------
  |  |  |  Branch (358:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  359|      1|			Z_OBJ_HT_P(op1)->compare != Z_OBJ_HT_P(op2)->compare) { \
  |  |  ------------------
  |  |  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_OBJ_HT_P(op1)->compare != Z_OBJ_HT_P(op2)->compare) { \
  |  |  ------------------
  |  |  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (359:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  360|      1|		return zend_std_compare_objects(op1, op2); \
  |  |  361|      1|	}
  ------------------
  462|       |
  463|      0|	zend_closure *lhs = (zend_closure*) Z_OBJ_P(o1);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  464|      0|	zend_closure *rhs = (zend_closure*) Z_OBJ_P(o2);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  465|       |
  466|      0|	if (!((lhs->func.common.fn_flags & ZEND_ACC_FAKE_CLOSURE) && (rhs->func.common.fn_flags & ZEND_ACC_FAKE_CLOSURE))) {
  ------------------
  |  |  385|      0|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
              	if (!((lhs->func.common.fn_flags & ZEND_ACC_FAKE_CLOSURE) && (rhs->func.common.fn_flags & ZEND_ACC_FAKE_CLOSURE))) {
  ------------------
  |  |  385|      0|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (466:8): [True: 0, False: 0]
  |  Branch (466:63): [True: 0, False: 0]
  ------------------
  467|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  468|      0|	}
  469|       |
  470|      0|	if (Z_TYPE(lhs->this_ptr) != Z_TYPE(rhs->this_ptr)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(lhs->this_ptr) != Z_TYPE(rhs->this_ptr)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
  |  Branch (470:6): [True: 0, False: 0]
  ------------------
  471|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  472|      0|	}
  473|       |
  474|      0|	if (Z_TYPE(lhs->this_ptr) == IS_OBJECT && Z_OBJ(lhs->this_ptr) != Z_OBJ(rhs->this_ptr)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(lhs->this_ptr) == IS_OBJECT && Z_OBJ(lhs->this_ptr) != Z_OBJ(rhs->this_ptr)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              	if (Z_TYPE(lhs->this_ptr) == IS_OBJECT && Z_OBJ(lhs->this_ptr) != Z_OBJ(rhs->this_ptr)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              	if (Z_TYPE(lhs->this_ptr) == IS_OBJECT && Z_OBJ(lhs->this_ptr) != Z_OBJ(rhs->this_ptr)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  |  Branch (474:6): [True: 0, False: 0]
  |  Branch (474:44): [True: 0, False: 0]
  ------------------
  475|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  476|      0|	}
  477|       |
  478|      0|	if (lhs->called_scope != rhs->called_scope) {
  ------------------
  |  Branch (478:6): [True: 0, False: 0]
  ------------------
  479|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  480|      0|	}
  481|       |
  482|      0|	if (lhs->func.type != rhs->func.type) {
  ------------------
  |  Branch (482:6): [True: 0, False: 0]
  ------------------
  483|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  484|      0|	}
  485|       |
  486|      0|	if (lhs->func.common.scope != rhs->func.common.scope) {
  ------------------
  |  Branch (486:6): [True: 0, False: 0]
  ------------------
  487|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  488|      0|	}
  489|       |
  490|      0|	if (!zend_string_equals(lhs->func.common.function_name, rhs->func.common.function_name)) {
  ------------------
  |  Branch (490:6): [True: 0, False: 0]
  ------------------
  491|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
  492|      0|	}
  493|       |
  494|      0|	return 0;
  495|      0|}
zend_closures.c:zend_closure_clone:
  587|      2|{
  588|      2|	zend_closure *closure = (zend_closure *)zobject;
  589|      2|	zval result;
  590|       |
  591|      2|	zend_create_closure(&result, &closure->func,
  592|      2|		closure->func.common.scope, closure->called_scope, &closure->this_ptr);
  593|      2|	return Z_OBJ(result);
  ------------------
  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  594|      2|}
zend_closures.c:zend_closure_get_debug_info:
  616|     28|{
  617|     28|	zend_closure *closure = (zend_closure *)object;
  618|     28|	zval val;
  619|     28|	struct _zend_arg_info *arg_info = closure->func.common.arg_info;
  620|     28|	HashTable *debug_info;
  621|       |
  622|     28|	*is_temp = 1;
  623|       |
  624|     28|	debug_info = zend_new_array(8);
  ------------------
  |  |  342|     28|	_zend_new_array(size)
  ------------------
  625|       |
  626|     28|	if (closure->func.op_array.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
  ------------------
  |  |  385|     28|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (626:6): [True: 18, False: 10]
  ------------------
  627|     18|		if (closure->func.common.scope) {
  ------------------
  |  Branch (627:7): [True: 0, False: 18]
  ------------------
  628|      0|			zend_string *class_name = closure->func.common.scope->name;
  629|      0|			zend_string *func_name = closure->func.common.function_name;
  630|      0|			zend_string *combined = zend_string_concat3(
  631|      0|				ZSTR_VAL(class_name), ZSTR_LEN(class_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(class_name), ZSTR_LEN(class_name),
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  632|      0|				"::", strlen("::"),
  633|      0|				ZSTR_VAL(func_name), ZSTR_LEN(func_name)
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(func_name), ZSTR_LEN(func_name)
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  634|      0|			);
  635|      0|			ZVAL_STR(&val, combined);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  636|     18|		} else {
  637|     18|			ZVAL_STR_COPY(&val, closure->func.common.function_name);
  ------------------
  |  | 1112|     18|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     18|		zval *__z = (z);								\
  |  | 1114|     18|		zend_string *__s = (s);							\
  |  | 1115|     18|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     18|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     18|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     18|		/* interned strings support */					\
  |  | 1117|     18|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 15, False: 3]
  |  |  ------------------
  |  | 1118|     15|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     15|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     15|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     15|		} else {										\
  |  | 1120|      3|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      3|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      3|		}												\
  |  | 1123|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
  638|     18|		}
  639|     18|		zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_FUNCTION), &val);
  640|     18|	} else {
  641|     10|		ZVAL_STR_COPY(&val, closure->func.common.function_name);
  ------------------
  |  | 1112|     10|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     10|		zval *__z = (z);								\
  |  | 1114|     10|		zend_string *__s = (s);							\
  |  | 1115|     10|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     10|		/* interned strings support */					\
  |  | 1117|     10|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 10]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     10|		} else {										\
  |  | 1120|     10|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     10|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     10|		}												\
  |  | 1123|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  642|     10|		zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_NAME), &val);
  643|       |
  644|     10|		ZVAL_STR_COPY(&val, closure->func.op_array.filename);
  ------------------
  |  | 1112|     10|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     10|		zval *__z = (z);								\
  |  | 1114|     10|		zend_string *__s = (s);							\
  |  | 1115|     10|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     10|		/* interned strings support */					\
  |  | 1117|     10|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 10]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     10|		} else {										\
  |  | 1120|     10|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     10|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     10|		}												\
  |  | 1123|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  645|     10|		zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_FILE), &val);
  646|       |
  647|     10|		ZVAL_LONG(&val, closure->func.op_array.line_start);
  ------------------
  |  | 1076|     10|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     10|		zval *__z = (z);				\
  |  | 1078|     10|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     10|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     10|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  648|     10|		zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_LINE), &val);
  649|     10|	}
  650|       |
  651|     28|	if (closure->func.type == ZEND_USER_FUNCTION && closure->func.op_array.static_variables) {
  ------------------
  |  Branch (651:6): [True: 13, False: 15]
  |  Branch (651:50): [True: 4, False: 9]
  ------------------
  652|      4|		zval *var;
  653|      4|		zend_string *key;
  654|      4|		HashTable *static_variables = ZEND_MAP_PTR_GET(closure->func.op_array.static_variables_ptr);
  ------------------
  |  |   54|      4|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      4|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      4|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      4|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  ------------------
  ------------------
  655|       |
  656|      4|		array_init(&val);
  657|       |
  658|     18|		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(static_variables, key, var) {
  ------------------
  |  | 1389|      7|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     11|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 7, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      7|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      7|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      7|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 7]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      7|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      3|	_key = _p->key; \
  |  | 1391|      3|	_val = _z;
  ------------------
  |  Branch (658:3): [True: 0, False: 4]
  |  Branch (658:3): [True: 4, False: 0]
  ------------------
  659|     18|			zval copy;
  660|       |
  661|     18|			if (Z_ISREF_P(var) && Z_REFCOUNT_P(var) == 1) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(var) && Z_REFCOUNT_P(var) == 1) {
  ------------------
  |  | 1275|      2|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (661:26): [True: 0, False: 2]
  ------------------
  662|      0|				var = Z_REFVAL_P(var);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  663|      0|			}
  664|     18|			ZVAL_COPY(&copy, var);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  665|       |
  666|     18|			zend_hash_add_new(Z_ARRVAL(val), key, &copy);
  ------------------
  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  667|     18|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  668|       |
  669|      4|		if (zend_hash_num_elements(Z_ARRVAL(val))) {
  ------------------
  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (669:7): [True: 3, False: 1]
  ------------------
  670|      3|			zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_STATIC), &val);
  671|      3|		} else {
  672|      1|			zval_ptr_dtor(&val);
  673|      1|		}
  674|      4|	}
  675|       |
  676|     28|	if (Z_TYPE(closure->this_ptr) != IS_UNDEF) {
  ------------------
  |  |  668|     28|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(closure->this_ptr) != IS_UNDEF) {
  ------------------
  |  |  606|     28|#define IS_UNDEF					0
  ------------------
  |  Branch (676:6): [True: 0, False: 28]
  ------------------
  677|      0|		Z_ADDREF(closure->this_ptr);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  678|      0|		zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_THIS), &closure->this_ptr);
  679|      0|	}
  680|       |
  681|     28|	if (arg_info &&
  ------------------
  |  Branch (681:6): [True: 19, False: 9]
  ------------------
  682|     19|		(closure->func.common.num_args ||
  ------------------
  |  Branch (682:4): [True: 19, False: 0]
  ------------------
  683|     19|		 (closure->func.common.fn_flags & ZEND_ACC_VARIADIC))) {
  ------------------
  |  |  358|      0|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (683:4): [True: 0, False: 0]
  ------------------
  684|     19|		uint32_t i, num_args, required = closure->func.common.required_num_args;
  685|       |
  686|     19|		array_init(&val);
  687|       |
  688|     19|		num_args = closure->func.common.num_args;
  689|     19|		if (closure->func.common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|     19|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (689:7): [True: 0, False: 19]
  ------------------
  690|      0|			num_args++;
  691|      0|		}
  692|     38|		for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (692:15): [True: 19, False: 19]
  ------------------
  693|     19|			zend_string *name;
  694|     19|			zval info;
  695|     19|			ZEND_ASSERT(arg_info->name && "Argument should have name");
  ------------------
  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (695:4): [True: 0, False: 19]
  |  Branch (695:4): [True: 0, False: 0]
  |  Branch (695:4): [True: 19, False: 0]
  |  Branch (695:4): [True: 19, False: 0]
  ------------------
  696|     19|			name = zend_strpprintf(0, "%s$%s",
  697|     19|					ZEND_ARG_SEND_MODE(arg_info) ? "&" : "",
  ------------------
  |  | 1130|     19|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|     19|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|     19|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     19|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1130:2): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  698|     19|					ZSTR_VAL(arg_info->name));
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  699|     19|			ZVAL_NEW_STR(&info, zend_strpprintf(0, "%s", i >= required ? "<optional>" : "<required>"));
  ------------------
  |  | 1105|     19|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     19|		zval *__z = (z);						\
  |  | 1107|     38|		zend_string *__s = (s);					\
  |  |  ------------------
  |  |  |  Branch (1107:23): [True: 2, False: 17]
  |  |  ------------------
  |  | 1108|     19|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     19|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     19|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     19|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     19|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     19|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
  700|     19|			zend_hash_update(Z_ARRVAL(val), name, &info);
  ------------------
  |  |  996|     19|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|     19|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  701|     19|			zend_string_release_ex(name, 0);
  702|     19|			arg_info++;
  703|     19|		}
  704|     19|		zend_hash_str_update(debug_info, "parameter", sizeof("parameter")-1, &val);
  705|     19|	}
  706|       |
  707|     28|	return debug_info;
  708|     28|}
zend_closures.c:zend_closure_get_gc:
  712|    775|{
  713|    775|	zend_closure *closure = (zend_closure *)obj;
  714|       |
  715|    775|	*table = Z_TYPE(closure->this_ptr) != IS_NULL ? &closure->this_ptr : NULL;
  ------------------
  |  |  668|    775|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	*table = Z_TYPE(closure->this_ptr) != IS_NULL ? &closure->this_ptr : NULL;
  ------------------
  |  |  607|    775|#define IS_NULL						1
  ------------------
  |  Branch (715:11): [True: 775, False: 0]
  ------------------
  716|    775|	*n = Z_TYPE(closure->this_ptr) != IS_NULL ? 1 : 0;
  ------------------
  |  |  668|    775|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	*n = Z_TYPE(closure->this_ptr) != IS_NULL ? 1 : 0;
  ------------------
  |  |  607|    775|#define IS_NULL						1
  ------------------
  |  Branch (716:7): [True: 775, False: 0]
  ------------------
  717|       |	/* Fake closures don't own the static variables they reference. */
  718|    775|	return (closure->func.type == ZEND_USER_FUNCTION
  ------------------
  |  Branch (718:10): [True: 761, False: 14]
  ------------------
  719|    761|			&& !(closure->func.op_array.fn_flags & ZEND_ACC_FAKE_CLOSURE)) ?
  ------------------
  |  |  385|    761|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (719:7): [True: 755, False: 6]
  ------------------
  720|    755|		ZEND_MAP_PTR_GET(closure->func.op_array.static_variables_ptr) : NULL;
  ------------------
  |  |   54|    755|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|    755|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    755|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 755]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|    755|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|    755|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|    755|	ptr ## __ptr
  |  |  ------------------
  ------------------
  721|    775|}
zend_closures.c:zend_create_closure_ex:
  761|    562|{
  762|    562|	zend_closure *closure;
  763|    562|	void *ptr;
  764|       |
  765|    562|	object_init_ex(res, zend_ce_closure);
  766|       |
  767|    562|	closure = (zend_closure *)Z_OBJ_P(res);
  ------------------
  |  | 1000|    562|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    562|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  768|       |
  769|    562|	if ((scope == NULL) && this_ptr && (Z_TYPE_P(this_ptr) != IS_UNDEF)) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if ((scope == NULL) && this_ptr && (Z_TYPE_P(this_ptr) != IS_UNDEF)) {
  ------------------
  |  |  606|      6|#define IS_UNDEF					0
  ------------------
  |  Branch (769:6): [True: 535, False: 27]
  |  Branch (769:25): [True: 6, False: 529]
  |  Branch (769:37): [True: 4, False: 2]
  ------------------
  770|       |		/* use dummy scope if we're binding an object without specifying a scope */
  771|       |		/* maybe it would be better to create one for this purpose */
  772|      4|		scope = zend_ce_closure;
  773|      4|	}
  774|       |
  775|    562|	if (func->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (775:6): [True: 522, False: 40]
  ------------------
  776|    522|		memcpy(&closure->func, func, sizeof(zend_op_array));
  777|    522|		closure->func.common.fn_flags |= ZEND_ACC_CLOSURE;
  ------------------
  |  |  384|    522|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  778|    522|		closure->func.common.fn_flags &= ~ZEND_ACC_IMMUTABLE;
  ------------------
  |  |  241|    522|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  779|       |
  780|    522|		zend_string_addref(closure->func.op_array.function_name);
  781|    522|		if (closure->func.op_array.refcount) {
  ------------------
  |  Branch (781:7): [True: 522, False: 0]
  ------------------
  782|    522|			(*closure->func.op_array.refcount)++;
  783|    522|		}
  784|       |
  785|       |		/* For fake closures, we want to reuse the static variables of the original function. */
  786|    522|		HashTable *ht = ZEND_MAP_PTR_GET(func->op_array.static_variables_ptr);
  ------------------
  |  |   54|    522|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|    522|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    522|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 522]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|    522|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|    522|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|    522|	ptr ## __ptr
  |  |  ------------------
  ------------------
  787|    522|		if (!is_fake) {
  ------------------
  |  Branch (787:7): [True: 505, False: 17]
  ------------------
  788|    505|			if (!ht) {
  ------------------
  |  Branch (788:8): [True: 502, False: 3]
  ------------------
  789|    502|				ht = closure->func.op_array.static_variables;
  790|    502|			}
  791|    505|			ZEND_MAP_PTR_INIT(closure->func.op_array.static_variables_ptr,
  ------------------
  |  |   38|    505|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  1.01k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|    505|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (39:24): [True: 34, False: 471]
  |  |  ------------------
  |  |   40|    505|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 505]
  |  |  ------------------
  ------------------
  792|    505|				ht ? zend_array_dup(ht) : NULL);
  793|    505|		} else if (func->op_array.static_variables) {
  ------------------
  |  Branch (793:14): [True: 7, False: 10]
  ------------------
  794|      7|			if (!ht) {
  ------------------
  |  Branch (794:8): [True: 4, False: 3]
  ------------------
  795|      4|				ht = zend_array_dup(func->op_array.static_variables);
  796|      4|				ZEND_MAP_PTR_SET(func->op_array.static_variables_ptr, ht);
  ------------------
  |  |   59|      4|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|      4|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|      4|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      4|		} else { \
  |  |   63|      4|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      4|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      4|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      4|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      4|		} \
  |  |   65|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  797|      4|			}
  798|      7|			ZEND_MAP_PTR_INIT(closure->func.op_array.static_variables_ptr, ht);
  ------------------
  |  |   38|      7|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|      7|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|      7|	ptr ## __ptr
  |  |  ------------------
  |  |   40|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  799|      7|		}
  800|       |
  801|       |		/* Runtime cache is scope-dependent, so we cannot reuse it if the scope changed */
  802|    522|		ptr = ZEND_MAP_PTR_GET(func->op_array.run_time_cache);
  ------------------
  |  |   54|    522|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|    522|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    522|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 522]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|    522|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|    522|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|    522|	ptr ## __ptr
  |  |  ------------------
  ------------------
  803|    522|		if (!ptr
  ------------------
  |  Branch (803:7): [True: 233, False: 289]
  ------------------
  804|    289|			|| func->common.scope != scope
  ------------------
  |  Branch (804:7): [True: 7, False: 282]
  ------------------
  805|    282|			|| (func->common.fn_flags & ZEND_ACC_HEAP_RT_CACHE)
  ------------------
  |  |  396|    282|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  |  Branch (805:7): [True: 0, False: 282]
  ------------------
  806|    522|		) {
  807|    240|			if (!ptr
  ------------------
  |  Branch (807:8): [True: 233, False: 7]
  ------------------
  808|    233|			 && (func->common.fn_flags & ZEND_ACC_CLOSURE)
  ------------------
  |  |  384|    233|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (808:8): [True: 230, False: 3]
  ------------------
  809|    230|			 && (func->common.scope == scope ||
  ------------------
  |  Branch (809:9): [True: 221, False: 9]
  ------------------
  810|    230|			     !(func->common.fn_flags & ZEND_ACC_IMMUTABLE))) {
  ------------------
  |  |  241|      9|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (810:9): [True: 9, False: 0]
  ------------------
  811|       |				/* If a real closure is used for the first time, we create a shared runtime cache
  812|       |				 * and remember which scope it is for. */
  813|    230|				if (func->common.scope != scope) {
  ------------------
  |  Branch (813:9): [True: 9, False: 221]
  ------------------
  814|      9|					func->common.scope = scope;
  815|      9|				}
  816|    230|				ptr = zend_arena_alloc(&CG(arena), func->op_array.cache_size);
  ------------------
  |  |   35|    230|# define CG(v) (compiler_globals.v)
  ------------------
  817|    230|				ZEND_MAP_PTR_SET(func->op_array.run_time_cache, ptr);
  ------------------
  |  |   59|    230|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|    230|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|    230|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    230|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 230]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|    230|		} else { \
  |  |   63|    230|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|    230|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|    230|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    230|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|    230|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 230]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|    230|		} \
  |  |   65|    230|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 230]
  |  |  ------------------
  ------------------
  818|    230|				closure->func.op_array.fn_flags &= ~ZEND_ACC_HEAP_RT_CACHE;
  ------------------
  |  |  396|    230|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  819|    230|			} else {
  820|       |				/* Otherwise, we use a non-shared runtime cache */
  821|     10|				ptr = emalloc(func->op_array.cache_size);
  ------------------
  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  822|     10|				closure->func.op_array.fn_flags |= ZEND_ACC_HEAP_RT_CACHE;
  ------------------
  |  |  396|     10|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  823|     10|			}
  824|    240|			memset(ptr, 0, func->op_array.cache_size);
  825|    240|		}
  826|    522|		ZEND_MAP_PTR_INIT(closure->func.op_array.run_time_cache, ptr);
  ------------------
  |  |   38|    522|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|    522|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|    522|	ptr ## __ptr
  |  |  ------------------
  |  |   40|    522|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 522]
  |  |  ------------------
  ------------------
  827|    522|	} else {
  828|     40|		memcpy(&closure->func, func, sizeof(zend_internal_function));
  829|     40|		closure->func.common.fn_flags |= ZEND_ACC_CLOSURE;
  ------------------
  |  |  384|     40|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  830|       |		/* wrap internal function handler to avoid memory leak */
  831|     40|		if (UNEXPECTED(closure->func.internal_function.handler == zend_closure_internal_handler)) {
  ------------------
  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 38]
  |  |  ------------------
  ------------------
  832|       |			/* avoid infinity recursion, by taking handler from nested closure */
  833|      2|			zend_closure *nested = ZEND_CONTAINER_OF(func, zend_closure, func);
  ------------------
  |  |  407|      2|	_Generic( \
  |  |  408|      2|		(ptr), \
  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  411|      2|	)
  ------------------
  834|      2|			ZEND_ASSERT(nested->std.ce == zend_ce_closure);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (834:4): [True: 0, False: 2]
  |  Branch (834:4): [True: 2, False: 0]
  ------------------
  835|      2|			closure->orig_internal_handler = nested->orig_internal_handler;
  836|     38|		} else {
  837|     38|			closure->orig_internal_handler = closure->func.internal_function.handler;
  838|     38|		}
  839|     40|		closure->func.internal_function.handler = zend_closure_internal_handler;
  840|     40|		zend_string_addref(closure->func.op_array.function_name);
  841|     40|		if (!func->common.scope) {
  ------------------
  |  Branch (841:7): [True: 29, False: 11]
  ------------------
  842|       |			/* if it's a free function, we won't set scope & this since they're meaningless */
  843|     29|			this_ptr = NULL;
  844|     29|			scope = NULL;
  845|     29|		}
  846|     40|	}
  847|       |
  848|    562|	ZVAL_UNDEF(&closure->this_ptr);
  ------------------
  |  | 1055|    562|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    562|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    562|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    562|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    562|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    562|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 562]
  |  |  ------------------
  ------------------
  849|       |	/* Invariant:
  850|       |	 * If the closure is unscoped or static, it has no bound object. */
  851|    562|	closure->func.common.scope = scope;
  852|    562|	closure->called_scope = called_scope;
  853|    562|	if (scope) {
  ------------------
  |  Branch (853:6): [True: 31, False: 531]
  ------------------
  854|     31|		closure->func.common.fn_flags |= ZEND_ACC_PUBLIC;
  ------------------
  |  |  219|     31|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  855|     31|		if (this_ptr && Z_TYPE_P(this_ptr) == IS_OBJECT && (closure->func.common.fn_flags & ZEND_ACC_STATIC) == 0) {
  ------------------
  |  |  669|     24|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (this_ptr && Z_TYPE_P(this_ptr) == IS_OBJECT && (closure->func.common.fn_flags & ZEND_ACC_STATIC) == 0) {
  ------------------
  |  |  614|     55|#define IS_OBJECT					8
  ------------------
              		if (this_ptr && Z_TYPE_P(this_ptr) == IS_OBJECT && (closure->func.common.fn_flags & ZEND_ACC_STATIC) == 0) {
  ------------------
  |  |  227|     24|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (855:7): [True: 24, False: 7]
  |  Branch (855:19): [True: 24, False: 0]
  |  Branch (855:54): [True: 24, False: 0]
  ------------------
  856|     24|			ZVAL_OBJ_COPY(&closure->this_ptr, Z_OBJ_P(this_ptr));
  ------------------
  |  | 1146|     24|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|     24|		zval *__z = (z);						\
  |  | 1148|     24|		zend_object *__o = (o);					\
  |  | 1149|     24|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|     24|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|     24|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|     24|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     24|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|     24|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     24|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     24|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     24|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
  857|     24|		}
  858|     31|	}
  859|    562|}
zend_closures.c:zend_closure_internal_handler:
  750|     20|{
  751|     20|	zend_closure *closure = (zend_closure*)ZEND_CLOSURE_OBJECT(EX(func));
  ------------------
  |  |   28|     20|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
  752|     20|	closure->orig_internal_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |  587|     20|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  753|     20|	ZEND_ASSERT(!(closure->func.common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS) || EG(exception));
  ------------------
  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (753:2): [True: 20, False: 0]
  |  Branch (753:2): [True: 0, False: 0]
  |  Branch (753:2): [True: 20, False: 0]
  |  Branch (753:2): [True: 0, False: 0]
  ------------------
  754|       |	// Assign to EX(this) so that it is released after observer checks etc.
  755|     20|	ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_RELEASE_THIS);
  ------------------
  |  |  703|     20|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|     20|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|     20|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|     20|		call_info |= (flag); \
  |  |  |  |  697|     20|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
  756|     20|	Z_OBJ(EX(This)) = &closure->std;
  ------------------
  |  |  999|     20|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  757|     20|}
zend_closures.c:zend_closure_call_magic:
  303|      2|static ZEND_NAMED_FUNCTION(zend_closure_call_magic) /* {{{ */ {
  304|      2|	zend_fcall_info fci;
  305|      2|	zend_fcall_info_cache fcc;
  306|      2|	zval params[2];
  307|       |
  308|      2|	memset(&fci, 0, sizeof(zend_fcall_info));
  309|      2|	memset(&fcc, 0, sizeof(zend_fcall_info_cache));
  310|       |
  311|      2|	fci.size = sizeof(zend_fcall_info);
  312|      2|	fci.retval = return_value;
  313|       |
  314|      2|	fcc.function_handler = (EX(func)->internal_function.fn_flags & ZEND_ACC_STATIC) ?
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
              	fcc.function_handler = (EX(func)->internal_function.fn_flags & ZEND_ACC_STATIC) ?
  ------------------
  |  |  227|      2|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (314:25): [True: 0, False: 2]
  ------------------
  315|      2|		EX(func)->internal_function.scope->__callstatic : EX(func)->internal_function.scope->__call;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		EX(func)->internal_function.scope->__callstatic : EX(func)->internal_function.scope->__call;
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
  316|      2|	fci.named_params = NULL;
  317|      2|	fci.params = params;
  318|      2|	fci.param_count = 2;
  319|      2|	ZVAL_STR(&fci.params[0], EX(func)->common.function_name);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  320|      2|	if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  732|      2|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|      2|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|      2|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (320:6): [True: 0, False: 2]
  ------------------
  321|      0|		zend_string *name;
  322|      0|		zval *named_param_zval;
  323|      0|		array_init_size(&fci.params[1], ZEND_NUM_ARGS() + zend_hash_num_elements(EX(extra_named_params)));
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		array_init_size(&fci.params[1], ZEND_NUM_ARGS() + zend_hash_num_elements(EX(extra_named_params)));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
  324|       |		/* Avoid conversion from packed to mixed later. */
  325|      0|		zend_hash_real_init_mixed(Z_ARRVAL(fci.params[1]));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  326|      0|		zend_copy_parameters_array(ZEND_NUM_ARGS(), Z_ARRVAL(fci.params[1]));
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		zend_copy_parameters_array(ZEND_NUM_ARGS(), Z_ARRVAL(fci.params[1]));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  327|      0|		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, named_param_zval) {
  ------------------
  |  | 1389|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      0|	_key = _p->key; \
  |  | 1391|      0|	_val = _z;
  ------------------
  |  Branch (327:3): [True: 0, False: 0]
  |  Branch (327:3): [True: 0, False: 0]
  ------------------
  328|      0|			Z_TRY_ADDREF_P(named_param_zval);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  329|      0|			zend_hash_add_new(Z_ARRVAL(fci.params[1]), name, named_param_zval);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  330|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  331|      2|	} else if (ZEND_NUM_ARGS()) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (712:2): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  332|      0|		array_init_size(&fci.params[1], ZEND_NUM_ARGS());
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  333|      0|		zend_copy_parameters_array(ZEND_NUM_ARGS(), Z_ARRVAL(fci.params[1]));
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		zend_copy_parameters_array(ZEND_NUM_ARGS(), Z_ARRVAL(fci.params[1]));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  334|      2|	} else {
  335|      2|		ZVAL_EMPTY_ARRAY(&fci.params[1]);
  ------------------
  |  |   89|      2|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      2|		zval *__z = (z);								\
  |  |   91|      2|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  336|      2|	}
  337|       |
  338|      2|	fcc.object = fci.object = Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  339|      2|	fcc.called_scope = zend_get_called_scope(EG(current_execute_data));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  340|       |
  341|      2|	zend_call_function(&fci, &fcc);
  342|      2|	zend_return_unwrap_ref(EG(current_execute_data), return_value);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  343|      2|	zval_ptr_dtor(&fci.params[1]);
  344|      2|}

zend_closures.c:register_class_Closure:
   48|      2|{
   49|      2|	zend_class_entry ce, *class_entry;
   50|       |
   51|      2|	INIT_CLASS_ENTRY(ce, "Closure", class_Closure_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   52|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
   53|       |
   54|      2|	return class_entry;
   55|      2|}

zend_assert_valid_class_name:
  245|  2.07k|{
  246|  2.07k|	if (zend_is_reserved_class_name(name)) {
  ------------------
  |  Branch (246:6): [True: 16, False: 2.05k]
  ------------------
  247|     16|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|     16|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  248|     16|			"Cannot use \"%s\" as %s as it is reserved", ZSTR_VAL(name), type);
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  249|     16|	}
  250|  2.05k|	if (zend_string_equals_literal(name, "_")) {
  ------------------
  |  |  407|  2.05k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 5, False: 2.05k]
  |  |  ------------------
  ------------------
  251|      5|		zend_error(E_DEPRECATED, "Using \"_\" as %s is deprecated since 8.4", type);
  ------------------
  |  |   36|      5|#define E_DEPRECATED		(1<<13L)
  ------------------
  252|      5|	}
  253|  2.05k|}
zend_oparray_context_begin:
  331|  6.57k|{
  332|  6.57k|	*prev_context = CG(context);
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  333|  6.57k|	CG(context).prev = CG(context).op_array ? prev_context : NULL;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(context).prev = CG(context).op_array ? prev_context : NULL;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (333:21): [True: 1.63k, False: 4.94k]
  ------------------
  334|  6.57k|	CG(context).op_array = op_array;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  335|  6.57k|	CG(context).opcodes_size = INITIAL_OP_ARRAY_SIZE;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(context).opcodes_size = INITIAL_OP_ARRAY_SIZE;
  ------------------
  |  |  952|  6.57k|#define INITIAL_OP_ARRAY_SIZE 64
  ------------------
  336|  6.57k|	CG(context).vars_size = 0;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  337|  6.57k|	CG(context).literals_size = 0;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  338|  6.57k|	CG(context).fast_call_var = -1;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  339|  6.57k|	CG(context).try_catch_offset = -1;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  340|  6.57k|	CG(context).current_brk_cont = -1;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  341|  6.57k|	CG(context).last_brk_cont = 0;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  342|  6.57k|	CG(context).has_assigned_to_http_response_header = false;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  343|  6.57k|	CG(context).brk_cont_array = NULL;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  344|  6.57k|	CG(context).labels = NULL;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  345|  6.57k|	CG(context).in_jmp_frameless_branch = false;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  346|  6.57k|	CG(context).active_property_info_name = NULL;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  347|  6.57k|	CG(context).active_property_hook_kind = (zend_property_hook_kind)-1;
  ------------------
  |  |   35|  6.57k|# define CG(v) (compiler_globals.v)
  ------------------
  348|  6.57k|}
zend_oparray_context_end:
  352|  5.89k|{
  353|  5.89k|	if (CG(context).brk_cont_array) {
  ------------------
  |  |   35|  5.89k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (353:6): [True: 454, False: 5.44k]
  ------------------
  354|    454|		efree(CG(context).brk_cont_array);
  ------------------
  |  |  154|    454|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    454|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    454|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    454|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    454|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|    454|		CG(context).brk_cont_array = NULL;
  ------------------
  |  |   35|    454|# define CG(v) (compiler_globals.v)
  ------------------
  356|    454|	}
  357|  5.89k|	if (CG(context).labels) {
  ------------------
  |  |   35|  5.89k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (357:6): [True: 31, False: 5.86k]
  ------------------
  358|     31|		zend_hash_destroy(CG(context).labels);
  ------------------
  |  |   35|     31|# define CG(v) (compiler_globals.v)
  ------------------
  359|     31|		FREE_HASHTABLE(CG(context).labels);
  ------------------
  |  |  235|     31|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     31|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     31|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     31|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     31|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     31|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     31|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|     31|		CG(context).labels = NULL;
  ------------------
  |  |   35|     31|# define CG(v) (compiler_globals.v)
  ------------------
  361|     31|	}
  362|  5.89k|	CG(context) = *prev_context;
  ------------------
  |  |   35|  5.89k|# define CG(v) (compiler_globals.v)
  ------------------
  363|  5.89k|}
zend_file_context_begin:
  401|  4.94k|{
  402|  4.94k|	*prev_context = CG(file_context);
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  403|  4.94k|	FC(imports) = NULL;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  404|  4.94k|	FC(imports_function) = NULL;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  405|  4.94k|	FC(imports_const) = NULL;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  406|  4.94k|	FC(current_namespace) = NULL;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  407|  4.94k|	FC(in_namespace) = 0;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  408|  4.94k|	FC(has_bracketed_namespaces) = 0;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  409|  4.94k|	FC(declarables).ticks = 0;
  ------------------
  |  |   60|  4.94k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  410|  4.94k|	zend_hash_init(&FC(seen_symbols), 8, NULL, NULL, 0);
  ------------------
  |  |  111|  4.94k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  411|  4.94k|}
zend_file_context_end:
  415|  4.43k|{
  416|  4.43k|	zend_end_namespace();
  417|  4.43k|	zend_hash_destroy(&FC(seen_symbols));
  ------------------
  |  |   60|  4.43k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.43k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  418|  4.43k|	CG(file_context) = *prev_context;
  ------------------
  |  |   35|  4.43k|# define CG(v) (compiler_globals.v)
  ------------------
  419|  4.43k|}
zend_init_compiler_data_structures:
  423|  34.0k|{
  424|  34.0k|	zend_stack_init(&CG(loop_var_stack), sizeof(zend_loop_var));
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  425|  34.0k|	zend_stack_init(&CG(delayed_oplines_stack), sizeof(zend_op));
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  426|  34.0k|	zend_stack_init(&CG(short_circuiting_opnums), sizeof(uint32_t));
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  427|  34.0k|	CG(active_class_entry) = NULL;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  428|  34.0k|	CG(in_compilation) = 0;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  429|  34.0k|	CG(skip_shebang) = 0;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  430|       |
  431|  34.0k|	CG(encoding_declared) = 0;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  432|  34.0k|	CG(memoized_exprs) = NULL;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  433|  34.0k|	CG(memoize_mode) = ZEND_MEMOIZE_NONE;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  434|  34.0k|}
init_compiler:
  454|  33.5k|{
  455|  33.5k|	CG(arena) = zend_arena_create(64 * 1024);
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  456|  33.5k|	CG(active_op_array) = NULL;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  457|  33.5k|	memset(&CG(context), 0, sizeof(CG(context)));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
              	memset(&CG(context), 0, sizeof(CG(context)));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  458|  33.5k|	zend_init_compiler_data_structures();
  459|  33.5k|	zend_init_rsrc_list();
  460|  33.5k|	zend_stream_init();
  461|  33.5k|	CG(unclean_shutdown) = 0;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  462|       |
  463|  33.5k|	CG(delayed_variance_obligations) = NULL;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  464|  33.5k|	CG(delayed_autoloads) = NULL;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  465|  33.5k|	CG(unlinked_uses) = NULL;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  466|  33.5k|	CG(current_linking_class) = NULL;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  467|  33.5k|}
shutdown_compiler:
  471|  34.0k|{
  472|       |	/* Reset filename before destroying the arena, as file cache may use arena allocated strings. */
  473|  34.0k|	zend_restore_compiled_filename(NULL);
  474|       |
  475|  34.0k|	zend_stack_destroy(&CG(loop_var_stack));
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  476|  34.0k|	zend_stack_destroy(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  477|  34.0k|	zend_stack_destroy(&CG(short_circuiting_opnums));
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  478|       |
  479|  34.0k|	if (CG(delayed_variance_obligations)) {
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 24, False: 34.0k]
  |  |  ------------------
  ------------------
  480|     24|		zend_hash_destroy(CG(delayed_variance_obligations));
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
  481|     24|		FREE_HASHTABLE(CG(delayed_variance_obligations));
  ------------------
  |  |  235|     24|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     24|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     24|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  482|     24|		CG(delayed_variance_obligations) = NULL;
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
  483|     24|	}
  484|  34.0k|	if (CG(delayed_autoloads)) {
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 24, False: 34.0k]
  |  |  ------------------
  ------------------
  485|     24|		zend_hash_destroy(CG(delayed_autoloads));
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
  486|     24|		FREE_HASHTABLE(CG(delayed_autoloads));
  ------------------
  |  |  235|     24|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     24|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     24|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  487|     24|		CG(delayed_autoloads) = NULL;
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
  488|     24|	}
  489|  34.0k|	if (CG(unlinked_uses)) {
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 9, False: 34.0k]
  |  |  ------------------
  ------------------
  490|      9|		zend_hash_destroy(CG(unlinked_uses));
  ------------------
  |  |   35|      9|# define CG(v) (compiler_globals.v)
  ------------------
  491|      9|		FREE_HASHTABLE(CG(unlinked_uses));
  ------------------
  |  |  235|      9|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      9|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  492|      9|		CG(unlinked_uses) = NULL;
  ------------------
  |  |   35|      9|# define CG(v) (compiler_globals.v)
  ------------------
  493|      9|	}
  494|  34.0k|	CG(current_linking_class) = NULL;
  ------------------
  |  |   35|  34.0k|# define CG(v) (compiler_globals.v)
  ------------------
  495|  34.0k|}
zend_set_compiled_filename:
  499|  10.4k|{
  500|  10.4k|	CG(compiled_filename) = zend_string_copy(new_compiled_filename);
  ------------------
  |  |   35|  10.4k|# define CG(v) (compiler_globals.v)
  ------------------
  501|  10.4k|	return new_compiled_filename;
  502|  10.4k|}
zend_restore_compiled_filename:
  506|  48.8k|{
  507|  48.8k|	if (CG(compiled_filename)) {
  ------------------
  |  |   35|  48.8k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 10.4k, False: 38.3k]
  |  |  ------------------
  ------------------
  508|  10.4k|		zend_string_release(CG(compiled_filename));
  ------------------
  |  |   35|  10.4k|# define CG(v) (compiler_globals.v)
  ------------------
  509|  10.4k|		CG(compiled_filename) = NULL;
  ------------------
  |  |   35|  10.4k|# define CG(v) (compiler_globals.v)
  ------------------
  510|  10.4k|	}
  511|  48.8k|	CG(compiled_filename) = original_compiled_filename;
  ------------------
  |  |   35|  48.8k|# define CG(v) (compiler_globals.v)
  ------------------
  512|  48.8k|}
zend_get_compiled_filename:
  516|  24.4k|{
  517|  24.4k|	return CG(compiled_filename);
  ------------------
  |  |   35|  24.4k|# define CG(v) (compiler_globals.v)
  ------------------
  518|  24.4k|}
zend_get_compiled_lineno:
  522|  12.3k|{
  523|  12.3k|	return CG(zend_lineno);
  ------------------
  |  |   35|  12.3k|# define CG(v) (compiler_globals.v)
  ------------------
  524|  12.3k|}
zend_is_compiling:
  528|  89.8k|{
  529|  89.8k|	return CG(in_compilation);
  ------------------
  |  |   35|  89.8k|# define CG(v) (compiler_globals.v)
  ------------------
  530|  89.8k|}
zval_make_interned_string:
  564|  31.2k|{
  565|  31.2k|	ZEND_ASSERT(Z_TYPE_P(zv) == IS_STRING);
  ------------------
  |  |  112|  31.2k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (565:2): [True: 0, False: 31.2k]
  |  Branch (565:2): [True: 31.2k, False: 0]
  ------------------
  566|  31.2k|	Z_STR_P(zv) = zend_new_interned_string(Z_STR_P(zv));
  ------------------
  |  |  982|  31.2k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  31.2k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              	Z_STR_P(zv) = zend_new_interned_string(Z_STR_P(zv));
  ------------------
  |  |  982|  31.2k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  31.2k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  567|  31.2k|	if (ZSTR_IS_INTERNED(Z_STR_P(zv))) {
  ------------------
  |  |  982|  31.2k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  31.2k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (567:6): [True: 18.0k, False: 13.2k]
  ------------------
  568|  18.0k|		Z_TYPE_FLAGS_P(zv) = 0;
  ------------------
  |  |  672|  18.0k|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|  18.0k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  569|  18.0k|	}
  570|  31.2k|	return Z_STR_P(zv);
  ------------------
  |  |  982|  31.2k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  31.2k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  571|  31.2k|}
zend_stop_lexing:
  704|      7|{
  705|      7|	if (LANG_SCNG(on_event)) {
  ------------------
  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  |  |  |  Branch (55:23): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  706|      0|		LANG_SCNG(on_event)(ON_STOP, END, 0, NULL, 0, LANG_SCNG(on_event_context));
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
              		LANG_SCNG(on_event)(ON_STOP, END, 0, NULL, 0, LANG_SCNG(on_event_context));
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  707|      0|	}
  708|       |
  709|      7|	LANG_SCNG(yy_cursor) = LANG_SCNG(yy_limit);
  ------------------
  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
              	LANG_SCNG(yy_cursor) = LANG_SCNG(yy_limit);
  ------------------
  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  710|      7|}
zend_op_may_elide_result:
  756|  7.61k|{
  757|  7.61k|	switch (opcode) {
  758|  2.62k|		case ZEND_ASSIGN:
  ------------------
  |  |  146|  2.62k|#define ZEND_ASSIGN                          22
  ------------------
  |  Branch (758:3): [True: 2.62k, False: 4.98k]
  ------------------
  759|  2.84k|		case ZEND_ASSIGN_DIM:
  ------------------
  |  |  147|  2.84k|#define ZEND_ASSIGN_DIM                      23
  ------------------
  |  Branch (759:3): [True: 213, False: 7.40k]
  ------------------
  760|  3.00k|		case ZEND_ASSIGN_OBJ:
  ------------------
  |  |  148|  3.00k|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (760:3): [True: 165, False: 7.45k]
  ------------------
  761|  3.03k|		case ZEND_ASSIGN_STATIC_PROP:
  ------------------
  |  |  149|  3.03k|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
  |  Branch (761:3): [True: 24, False: 7.59k]
  ------------------
  762|  3.09k|		case ZEND_ASSIGN_OP:
  ------------------
  |  |  150|  3.09k|#define ZEND_ASSIGN_OP                       26
  ------------------
  |  Branch (762:3): [True: 67, False: 7.55k]
  ------------------
  763|  3.12k|		case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|  3.12k|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (763:3): [True: 28, False: 7.58k]
  ------------------
  764|  3.14k|		case ZEND_ASSIGN_OBJ_OP:
  ------------------
  |  |  152|  3.14k|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
  |  Branch (764:3): [True: 16, False: 7.60k]
  ------------------
  765|  3.14k|		case ZEND_ASSIGN_STATIC_PROP_OP:
  ------------------
  |  |  153|  3.14k|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
  |  Branch (765:3): [True: 1, False: 7.61k]
  ------------------
  766|  3.14k|		case ZEND_PRE_INC_STATIC_PROP:
  ------------------
  |  |  162|  3.14k|#define ZEND_PRE_INC_STATIC_PROP             38
  ------------------
  |  Branch (766:3): [True: 0, False: 7.61k]
  ------------------
  767|  3.14k|		case ZEND_PRE_DEC_STATIC_PROP:
  ------------------
  |  |  163|  3.14k|#define ZEND_PRE_DEC_STATIC_PROP             39
  ------------------
  |  Branch (767:3): [True: 1, False: 7.61k]
  ------------------
  768|  3.14k|		case ZEND_PRE_INC_OBJ:
  ------------------
  |  |  254|  3.14k|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (768:3): [True: 2, False: 7.61k]
  ------------------
  769|  3.14k|		case ZEND_PRE_DEC_OBJ:
  ------------------
  |  |  255|  3.14k|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (769:3): [True: 1, False: 7.61k]
  ------------------
  770|  3.15k|		case ZEND_PRE_INC:
  ------------------
  |  |  158|  3.15k|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (770:3): [True: 3, False: 7.61k]
  ------------------
  771|  3.15k|		case ZEND_PRE_DEC:
  ------------------
  |  |  159|  3.15k|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (771:3): [True: 0, False: 7.61k]
  ------------------
  772|  6.65k|		case ZEND_DO_FCALL:
  ------------------
  |  |  183|  6.65k|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (772:3): [True: 3.50k, False: 4.11k]
  ------------------
  773|  6.65k|		case ZEND_DO_ICALL:
  ------------------
  |  |  251|  6.65k|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (773:3): [True: 0, False: 7.61k]
  ------------------
  774|  6.65k|		case ZEND_DO_UCALL:
  ------------------
  |  |  252|  6.65k|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (774:3): [True: 0, False: 7.61k]
  ------------------
  775|  6.65k|		case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|  6.65k|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (775:3): [True: 0, False: 7.61k]
  ------------------
  776|  6.73k|		case ZEND_YIELD:
  ------------------
  |  |  282|  6.73k|#define ZEND_YIELD                          160
  ------------------
  |  Branch (776:3): [True: 86, False: 7.53k]
  ------------------
  777|  6.75k|		case ZEND_YIELD_FROM:
  ------------------
  |  |  288|  6.75k|#define ZEND_YIELD_FROM                     166
  ------------------
  |  Branch (777:3): [True: 15, False: 7.60k]
  ------------------
  778|  6.87k|		case ZEND_INCLUDE_OR_EVAL:
  ------------------
  |  |  196|  6.87k|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (778:3): [True: 125, False: 7.49k]
  ------------------
  779|  6.87k|			return true;
  780|    738|		default:
  ------------------
  |  Branch (780:3): [True: 738, False: 6.87k]
  ------------------
  781|       |			return false;
  782|  7.61k|	}
  783|  7.61k|}
zend_modifier_token_to_flag:
  898|  1.24k|{
  899|  1.24k|	switch (token) {
  ------------------
  |  Branch (899:10): [True: 1.24k, False: 0]
  ------------------
  900|    818|		case T_PUBLIC:
  ------------------
  |  Branch (900:3): [True: 818, False: 426]
  ------------------
  901|    818|			if (target != ZEND_MODIFIER_TARGET_PROPERTY_HOOK) {
  ------------------
  |  Branch (901:8): [True: 817, False: 1]
  ------------------
  902|    817|				return ZEND_ACC_PUBLIC;
  ------------------
  |  |  219|    817|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  903|    817|			}
  904|      1|			break;
  905|     46|		case T_PROTECTED:
  ------------------
  |  Branch (905:3): [True: 46, False: 1.19k]
  ------------------
  906|     46|			if (target != ZEND_MODIFIER_TARGET_PROPERTY_HOOK) {
  ------------------
  |  Branch (906:8): [True: 45, False: 1]
  ------------------
  907|     45|				return ZEND_ACC_PROTECTED;
  ------------------
  |  |  220|     45|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  908|     45|			}
  909|      1|			break;
  910|     88|		case T_PRIVATE:
  ------------------
  |  Branch (910:3): [True: 88, False: 1.15k]
  ------------------
  911|     88|			if (target != ZEND_MODIFIER_TARGET_PROPERTY_HOOK) {
  ------------------
  |  Branch (911:8): [True: 88, False: 0]
  ------------------
  912|     88|				return ZEND_ACC_PRIVATE;
  ------------------
  |  |  221|     88|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  913|     88|			}
  914|      0|			break;
  915|     21|		case T_READONLY:
  ------------------
  |  Branch (915:3): [True: 21, False: 1.22k]
  ------------------
  916|     21|			if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (916:8): [True: 13, False: 8]
  |  Branch (916:51): [True: 5, False: 3]
  ------------------
  917|     18|				return ZEND_ACC_READONLY;
  ------------------
  |  |  237|     18|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  918|     18|			}
  919|      3|			break;
  920|     54|		case T_ABSTRACT:
  ------------------
  |  Branch (920:3): [True: 54, False: 1.19k]
  ------------------
  921|     54|			if (target == ZEND_MODIFIER_TARGET_METHOD || target == ZEND_MODIFIER_TARGET_PROPERTY) {
  ------------------
  |  Branch (921:8): [True: 36, False: 18]
  |  Branch (921:49): [True: 18, False: 0]
  ------------------
  922|     54|				return ZEND_ACC_ABSTRACT;
  ------------------
  |  |  233|     54|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  923|     54|			}
  924|      0|			break;
  925|     28|		case T_FINAL:
  ------------------
  |  Branch (925:3): [True: 28, False: 1.21k]
  ------------------
  926|     28|			return ZEND_ACC_FINAL;
  ------------------
  |  |  230|     28|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  927|    168|		case T_STATIC:
  ------------------
  |  Branch (927:3): [True: 168, False: 1.07k]
  ------------------
  928|    168|			if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_METHOD) {
  ------------------
  |  Branch (928:8): [True: 95, False: 73]
  |  Branch (928:51): [True: 71, False: 2]
  ------------------
  929|    166|				return ZEND_ACC_STATIC;
  ------------------
  |  |  227|    166|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  930|    166|			}
  931|      2|			break;
  932|      3|		case T_PUBLIC_SET:
  ------------------
  |  Branch (932:3): [True: 3, False: 1.24k]
  ------------------
  933|      3|			if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (933:8): [True: 2, False: 1]
  |  Branch (933:51): [True: 0, False: 1]
  ------------------
  934|      2|				return ZEND_ACC_PUBLIC_SET;
  ------------------
  |  |  273|      2|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
  935|      2|			}
  936|      1|			break;
  937|      8|		case T_PROTECTED_SET:
  ------------------
  |  Branch (937:3): [True: 8, False: 1.23k]
  ------------------
  938|      8|			if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (938:8): [True: 7, False: 1]
  |  Branch (938:51): [True: 1, False: 0]
  ------------------
  939|      8|				return ZEND_ACC_PROTECTED_SET;
  ------------------
  |  |  274|      8|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  940|      8|			}
  941|      0|			break;
  942|     10|		case T_PRIVATE_SET:
  ------------------
  |  Branch (942:3): [True: 10, False: 1.23k]
  ------------------
  943|     10|			if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (943:8): [True: 8, False: 2]
  |  Branch (943:51): [True: 2, False: 0]
  ------------------
  944|     10|				return ZEND_ACC_PRIVATE_SET;
  ------------------
  |  |  275|     10|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  945|     10|			}
  946|      0|			break;
  947|  1.24k|	}
  948|       |
  949|      8|	char *member;
  950|      8|	if (target == ZEND_MODIFIER_TARGET_PROPERTY) {
  ------------------
  |  Branch (950:6): [True: 0, False: 8]
  ------------------
  951|      0|		member = "property";
  952|      8|	} else if (target == ZEND_MODIFIER_TARGET_METHOD) {
  ------------------
  |  Branch (952:13): [True: 3, False: 5]
  ------------------
  953|      3|		member = "method";
  954|      5|	} else if (target == ZEND_MODIFIER_TARGET_CONSTANT) {
  ------------------
  |  Branch (954:13): [True: 1, False: 4]
  ------------------
  955|      1|		member = "class constant";
  956|      4|	} else if (target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (956:13): [True: 1, False: 3]
  ------------------
  957|      1|		member = "parameter";
  958|      3|	} else if (target == ZEND_MODIFIER_TARGET_PROPERTY_HOOK) {
  ------------------
  |  Branch (958:13): [True: 3, False: 0]
  ------------------
  959|      3|		member = "property hook";
  960|      3|	} else {
  961|      0|		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (961:3): [Folded, False: 0]
  |  Branch (961:3): [Folded, False: 0]
  ------------------
  962|      0|	}
  963|       |
  964|      8|	zend_throw_exception_ex(zend_ce_compile_error, 0,
  965|      8|		"Cannot use the %s modifier on a %s", zend_modifier_token_to_string(token), member);
  966|      8|	return 0;
  967|      8|}
zend_modifier_list_to_flags:
  970|  1.06k|{
  971|  1.06k|	uint32_t flags = 0;
  972|  1.06k|	const zend_ast_list *modifier_list = zend_ast_get_list(modifiers);
  973|       |
  974|  2.28k|	for (uint32_t i = 0; i < modifier_list->children; i++) {
  ------------------
  |  Branch (974:23): [True: 1.23k, False: 1.04k]
  ------------------
  975|  1.23k|		uint32_t token = (uint32_t) Z_LVAL_P(zend_ast_get_zval(modifier_list->child[i]));
  ------------------
  |  |  976|  1.23k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  1.23k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  976|  1.23k|		uint32_t new_flag = zend_modifier_token_to_flag(target, token);
  977|  1.23k|		if (!new_flag) {
  ------------------
  |  Branch (977:7): [True: 7, False: 1.22k]
  ------------------
  978|      7|			return 0;
  979|      7|		}
  980|       |		/* Don't error immediately for duplicate flags, we want to prioritize the errors from zend_add_member_modifier(). */
  981|  1.23k|		bool duplicate_flag = (flags & new_flag);
  982|  1.22k|		flags = zend_add_member_modifier(flags, new_flag, target);
  983|  1.22k|		if (!flags) {
  ------------------
  |  Branch (983:7): [True: 5, False: 1.22k]
  ------------------
  984|      5|			return 0;
  985|      5|		}
  986|  1.22k|		if (duplicate_flag) {
  ------------------
  |  Branch (986:7): [True: 5, False: 1.21k]
  ------------------
  987|      5|			zend_throw_exception_ex(zend_ce_compile_error, 0,
  988|      5|				"Multiple %s modifiers are not allowed", zend_modifier_token_to_string(token));
  989|      5|			return 0;
  990|      5|		}
  991|  1.22k|	}
  992|       |
  993|  1.04k|	return flags;
  994|  1.06k|}
zend_add_class_modifier:
  997|      5|{
  998|      5|	uint32_t new_flags = flags | new_flag;
  999|      5|	if ((flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) && (new_flag & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  234|      5|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
              	if ((flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) && (new_flag & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  234|      0|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (999:6): [True: 0, False: 5]
  |  Branch (999:52): [True: 0, False: 0]
  ------------------
 1000|      0|		zend_throw_exception(zend_ce_compile_error,
 1001|      0|			"Multiple abstract modifiers are not allowed", 0);
 1002|      0|		return 0;
 1003|      0|	}
 1004|      5|	if ((flags & ZEND_ACC_FINAL) && (new_flag & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|      5|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	if ((flags & ZEND_ACC_FINAL) && (new_flag & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|      4|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1004:6): [True: 4, False: 1]
  |  Branch (1004:34): [True: 2, False: 2]
  ------------------
 1005|      2|		zend_throw_exception(zend_ce_compile_error, "Multiple final modifiers are not allowed", 0);
 1006|      2|		return 0;
 1007|      2|	}
 1008|      3|	if ((flags & ZEND_ACC_READONLY_CLASS) && (new_flag & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|      3|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
              	if ((flags & ZEND_ACC_READONLY_CLASS) && (new_flag & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|      1|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (1008:6): [True: 1, False: 2]
  |  Branch (1008:43): [True: 1, False: 0]
  ------------------
 1009|      1|		zend_throw_exception(zend_ce_compile_error, "Multiple readonly modifiers are not allowed", 0);
 1010|      1|		return 0;
 1011|      1|	}
 1012|      2|	if ((new_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) && (new_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  234|      2|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
              	if ((new_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) && (new_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|      1|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1012:6): [True: 1, False: 1]
  |  Branch (1012:56): [True: 1, False: 0]
  ------------------
 1013|      1|		zend_throw_exception(zend_ce_compile_error,
 1014|      1|			"Cannot use the final modifier on an abstract class", 0);
 1015|      1|		return 0;
 1016|      1|	}
 1017|      1|	return new_flags;
 1018|      2|}
zend_add_anonymous_class_modifier:
 1022|      5|{
 1023|      5|	uint32_t new_flags = flags | new_flag;
 1024|      5|	if (new_flag & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  234|      5|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (1024:6): [True: 1, False: 4]
  ------------------
 1025|      1|		zend_throw_exception(zend_ce_compile_error,
 1026|      1|			"Cannot use the abstract modifier on an anonymous class", 0);
 1027|      1|		return 0;
 1028|      1|	}
 1029|      4|	if (new_flag & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      4|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1029:6): [True: 1, False: 3]
  ------------------
 1030|      1|		zend_throw_exception(zend_ce_compile_error, "Cannot use the final modifier on an anonymous class", 0);
 1031|      1|		return 0;
 1032|      1|	}
 1033|      3|	if ((flags & ZEND_ACC_READONLY_CLASS) && (new_flag & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|      3|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
              	if ((flags & ZEND_ACC_READONLY_CLASS) && (new_flag & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|      1|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (1033:6): [True: 1, False: 2]
  |  Branch (1033:43): [True: 1, False: 0]
  ------------------
 1034|      1|		zend_throw_exception(zend_ce_compile_error, "Multiple readonly modifiers are not allowed", 0);
 1035|      1|		return 0;
 1036|      1|	}
 1037|      2|	return new_flags;
 1038|      3|}
zend_add_member_modifier:
 1041|  1.22k|{
 1042|  1.22k|	uint32_t new_flags = flags | new_flag;
 1043|  1.22k|	if ((flags & ZEND_ACC_PPP_MASK) && (new_flag & ZEND_ACC_PPP_MASK)) {
  ------------------
  |  |  421|  1.22k|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|  1.22k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|  1.22k|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|  1.22k|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              	if ((flags & ZEND_ACC_PPP_MASK) && (new_flag & ZEND_ACC_PPP_MASK)) {
  ------------------
  |  |  421|    120|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    120|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    120|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    120|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (1043:6): [True: 120, False: 1.10k]
  |  Branch (1043:37): [True: 2, False: 118]
  ------------------
 1044|      2|		zend_throw_exception(zend_ce_compile_error,
 1045|      2|			"Multiple access type modifiers are not allowed", 0);
 1046|      2|		return 0;
 1047|      2|	}
 1048|  1.22k|	if ((new_flags & ZEND_ACC_ABSTRACT) && (new_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  233|  1.22k|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
              	if ((new_flags & ZEND_ACC_ABSTRACT) && (new_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|     74|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1048:6): [True: 74, False: 1.15k]
  |  Branch (1048:41): [True: 2, False: 72]
  ------------------
 1049|      2|		if (target == ZEND_MODIFIER_TARGET_METHOD) {
  ------------------
  |  Branch (1049:7): [True: 1, False: 1]
  ------------------
 1050|      1|			zend_throw_exception(zend_ce_compile_error,
 1051|      1|				"Cannot use the final modifier on an abstract method", 0);
 1052|      1|			return 0;
 1053|      1|		}
 1054|      1|		if (target == ZEND_MODIFIER_TARGET_PROPERTY) {
  ------------------
  |  Branch (1054:7): [True: 1, False: 0]
  ------------------
 1055|      1|			zend_throw_exception(zend_ce_compile_error,
 1056|      1|				"Cannot use the final modifier on an abstract property", 0);
 1057|      1|			return 0;
 1058|      1|		}
 1059|      1|	}
 1060|  1.22k|	if (target == ZEND_MODIFIER_TARGET_PROPERTY || target == ZEND_MODIFIER_TARGET_CPP) {
  ------------------
  |  Branch (1060:6): [True: 669, False: 556]
  |  Branch (1060:49): [True: 40, False: 516]
  ------------------
 1061|    709|		if ((flags & ZEND_ACC_PPP_SET_MASK) && (new_flag & ZEND_ACC_PPP_SET_MASK)) {
  ------------------
  |  |  422|    709|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|    709|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|    709|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|    709|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
              		if ((flags & ZEND_ACC_PPP_SET_MASK) && (new_flag & ZEND_ACC_PPP_SET_MASK)) {
  ------------------
  |  |  422|      1|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      1|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      1|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      1|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1061:7): [True: 1, False: 708]
  |  Branch (1061:42): [True: 1, False: 0]
  ------------------
 1062|      1|			zend_throw_exception(zend_ce_compile_error,
 1063|      1|				"Multiple access type modifiers are not allowed", 0);
 1064|      1|			return 0;
 1065|      1|		}
 1066|    709|	}
 1067|  1.22k|	return new_flags;
 1068|  1.22k|}
zend_create_member_string:
 1071|    105|ZEND_API zend_string *zend_create_member_string(const zend_string *class_name, const zend_string *member_name) {
 1072|    105|	return zend_string_concat3(
 1073|    105|		ZSTR_VAL(class_name), ZSTR_LEN(class_name),
  ------------------
  |  |   67|    105|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(class_name), ZSTR_LEN(class_name),
  ------------------
  |  |   68|    105|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1074|    105|		"::", sizeof("::") - 1,
 1075|    105|		ZSTR_VAL(member_name), ZSTR_LEN(member_name));
  ------------------
  |  |   67|    105|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(member_name), ZSTR_LEN(member_name));
  ------------------
  |  |   68|    105|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1076|    105|}
function_add_ref:
 1265|     45|{
 1266|     45|	if (function->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (1266:6): [True: 45, False: 0]
  ------------------
 1267|     45|		zend_op_array *op_array = &function->op_array;
 1268|     45|		if (op_array->refcount) {
  ------------------
  |  Branch (1268:7): [True: 45, False: 0]
  ------------------
 1269|     45|			(*op_array->refcount)++;
 1270|     45|		}
 1271|       |
 1272|     45|		ZEND_MAP_PTR_INIT(op_array->run_time_cache, NULL);
  ------------------
  |  |   38|     45|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|     45|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|     45|	ptr ## __ptr
  |  |  ------------------
  |  |   40|     45|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 45]
  |  |  ------------------
  ------------------
 1273|     45|		ZEND_MAP_PTR_INIT(op_array->static_variables_ptr, NULL);
  ------------------
  |  |   38|     45|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|     45|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|     45|	ptr ## __ptr
  |  |  ------------------
  |  |   40|     45|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 45]
  |  |  ------------------
  ------------------
 1274|     45|	}
 1275|       |
 1276|     45|	if (function->common.function_name) {
  ------------------
  |  Branch (1276:6): [True: 45, False: 0]
  ------------------
 1277|     45|		zend_string_addref(function->common.function_name);
 1278|     45|	}
 1279|     45|}
do_bind_function:
 1303|      4|{
 1304|      4|	zend_function *added_func = zend_hash_add_ptr(EG(function_table), Z_STR_P(lcname), func);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
              	zend_function *added_func = zend_hash_add_ptr(EG(function_table), Z_STR_P(lcname), func);
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1305|      4|	if (UNEXPECTED(!added_func)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1306|      0|		do_bind_function_error(Z_STR_P(lcname), &func->op_array, false);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1307|      0|		return FAILURE;
 1308|      0|	}
 1309|       |
 1310|      4|	if (func->op_array.refcount) {
  ------------------
  |  Branch (1310:6): [True: 4, False: 0]
  ------------------
 1311|      4|		++*func->op_array.refcount;
 1312|      4|	}
 1313|      4|	if (func->common.function_name) {
  ------------------
  |  Branch (1313:6): [True: 4, False: 0]
  ------------------
 1314|      4|		zend_string_addref(func->common.function_name);
 1315|      4|	}
 1316|      4|	zend_observer_function_declared_notify(&func->op_array, Z_STR_P(lcname));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1317|      4|	return SUCCESS;
 1318|      4|}
zend_bind_class_in_slot:
 1323|    358|{
 1324|    358|	zend_class_entry *ce = Z_PTR_P(class_table_slot);
  ------------------
  |  | 1053|    358|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    358|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1325|    358|	bool is_preloaded =
 1326|    358|		(ce->ce_flags & ZEND_ACC_PRELOADED) && !(CG(compiler_options) & ZEND_COMPILE_PRELOAD);
  ------------------
  |  |  250|    358|#define ZEND_ACC_PRELOADED               (1 << 10) /*  X  |  X  |     |     */
  ------------------
              		(ce->ce_flags & ZEND_ACC_PRELOADED) && !(CG(compiler_options) & ZEND_COMPILE_PRELOAD);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		(ce->ce_flags & ZEND_ACC_PRELOADED) && !(CG(compiler_options) & ZEND_COMPILE_PRELOAD);
  ------------------
  |  | 1304|      0|#define ZEND_COMPILE_PRELOAD                    (1<<15)
  ------------------
  |  Branch (1326:3): [True: 0, False: 358]
  |  Branch (1326:42): [True: 0, False: 0]
  ------------------
 1327|    358|	bool success;
 1328|    358|	if (EXPECTED(!is_preloaded)) {
  ------------------
  |  |  456|    358|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 358, False: 0]
  |  |  ------------------
  ------------------
 1329|    358|		success = zend_hash_set_bucket_key(EG(class_table), (Bucket*) class_table_slot, Z_STR_P(lcname)) != NULL;
  ------------------
  |  |   45|    358|# define EG(v) (executor_globals.v)
  ------------------
              		success = zend_hash_set_bucket_key(EG(class_table), (Bucket*) class_table_slot, Z_STR_P(lcname)) != NULL;
  ------------------
  |  |  982|    358|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    358|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1330|    358|	} else {
 1331|       |		/* If preloading is used, don't replace the existing bucket, add a new one. */
 1332|      0|		success = zend_hash_add_ptr(EG(class_table), Z_STR_P(lcname), ce) != NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		success = zend_hash_add_ptr(EG(class_table), Z_STR_P(lcname), ce) != NULL;
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1333|      0|	}
 1334|    358|	if (UNEXPECTED(!success)) {
  ------------------
  |  |  457|    358|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 348]
  |  |  ------------------
  ------------------
 1335|     10|		zend_class_entry *old_class = zend_hash_find_ptr(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  ------------------
              		zend_class_entry *old_class = zend_hash_find_ptr(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1336|     10|		ZEND_ASSERT(old_class);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1336:3): [True: 0, False: 10]
  |  Branch (1336:3): [True: 10, False: 0]
  ------------------
 1337|     10|		zend_class_redeclaration_error(E_COMPILE_ERROR, old_class);
  ------------------
  |  |   28|     10|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1338|     10|		return NULL;
 1339|     10|	}
 1340|       |
 1341|    348|	if (ce->ce_flags & ZEND_ACC_LINKED) {
  ------------------
  |  |  287|    348|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (1341:6): [True: 8, False: 340]
  ------------------
 1342|      8|		zend_observer_class_linked_notify(ce, Z_STR_P(lcname));
  ------------------
  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1343|      8|		return ce;
 1344|      8|	}
 1345|       |
 1346|    340|	ce = zend_do_link_class(ce, lc_parent_name, Z_STR_P(lcname));
  ------------------
  |  |  982|    340|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    340|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1347|    340|	if (ce) {
  ------------------
  |  Branch (1347:6): [True: 195, False: 145]
  ------------------
 1348|    195|		zend_observer_class_linked_notify(ce, Z_STR_P(lcname));
  ------------------
  |  |  982|    195|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    195|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1349|    195|		return ce;
 1350|    195|	}
 1351|       |
 1352|    145|	if (!is_preloaded) {
  ------------------
  |  Branch (1352:6): [True: 15, False: 130]
  ------------------
 1353|       |		/* Reload bucket pointer, the hash table may have been reallocated */
 1354|     15|		zval *zv = zend_hash_find(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |   45|     15|# define EG(v) (executor_globals.v)
  ------------------
              		zval *zv = zend_hash_find(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |  982|     15|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     15|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1355|     15|		zend_hash_set_bucket_key(EG(class_table), (Bucket *) zv, Z_STR_P(lcname + 1));
  ------------------
  |  |   45|     15|# define EG(v) (executor_globals.v)
  ------------------
              		zend_hash_set_bucket_key(EG(class_table), (Bucket *) zv, Z_STR_P(lcname + 1));
  ------------------
  |  |  982|     15|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     15|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1356|    130|	} else {
 1357|    130|		zend_hash_del(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |   45|    130|# define EG(v) (executor_globals.v)
  ------------------
              		zend_hash_del(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |  982|    130|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    130|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1358|    130|	}
 1359|       |	return NULL;
 1360|    340|}
do_bind_class:
 1363|    359|{
 1364|    359|	zval *rtd_key, *zv;
 1365|       |
 1366|    359|	rtd_key = lcname + 1;
 1367|       |
 1368|    359|	zv = zend_hash_find_known_hash(EG(class_table), Z_STR_P(rtd_key));
  ------------------
  |  |   45|    359|# define EG(v) (executor_globals.v)
  ------------------
              	zv = zend_hash_find_known_hash(EG(class_table), Z_STR_P(rtd_key));
  ------------------
  |  |  982|    359|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    359|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1369|       |
 1370|    359|	if (UNEXPECTED(!zv)) {
  ------------------
  |  |  457|    359|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 358]
  |  |  ------------------
  ------------------
 1371|      1|		const zend_class_entry *ce = zend_hash_find_ptr(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		const zend_class_entry *ce = zend_hash_find_ptr(EG(class_table), Z_STR_P(lcname));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1372|      1|		ZEND_ASSERT(ce);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1372:3): [True: 0, False: 1]
  |  Branch (1372:3): [True: 1, False: 0]
  ------------------
 1373|      1|		zend_class_redeclaration_error(E_COMPILE_ERROR, ce);
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1374|      1|		return FAILURE;
 1375|      1|	}
 1376|       |
 1377|       |	/* Register the derived class */
 1378|    358|	return zend_bind_class_in_slot(zv, lcname, lc_parent_name) ? SUCCESS : FAILURE;
  ------------------
  |  Branch (1378:9): [True: 203, False: 155]
  ------------------
 1379|    359|}
zend_type_to_string_resolved:
 1444|    924|zend_string *zend_type_to_string_resolved(const zend_type type, const zend_class_entry *scope) {
 1445|    924|	zend_string *str = NULL;
 1446|       |
 1447|       |	/* Pure intersection type */
 1448|    924|	if (ZEND_TYPE_IS_INTERSECTION(type)) {
  ------------------
  |  |  172|    924|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|    924|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 15, False: 909]
  |  |  ------------------
  ------------------
 1449|     15|		ZEND_ASSERT(!ZEND_TYPE_IS_UNION(type));
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1449:3): [True: 0, False: 15]
  |  Branch (1449:3): [True: 15, False: 0]
  ------------------
 1450|     15|		str = add_intersection_type(str, ZEND_TYPE_LIST(type), /* is_bracketed */ false);
  ------------------
  |  |  190|     15|	((zend_type_list *) (t).ptr)
  ------------------
 1451|    909|	} else if (ZEND_TYPE_HAS_LIST(type)) {
  ------------------
  |  |  166|    909|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|    909|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 15, False: 894]
  |  |  ------------------
  ------------------
 1452|       |		/* A union type might not be a list */
 1453|     15|		const zend_type *list_type;
 1454|     44|		ZEND_TYPE_LIST_FOREACH(ZEND_TYPE_LIST(type), list_type) {
  ------------------
  |  |  196|     15|#define ZEND_TYPE_LIST_FOREACH(list, type_ptr) do { \
  |  |  197|     15|	const zend_type *_list = (list)->types; \
  |  |  198|     15|	const zend_type *_end = _list + (list)->num_types; \
  |  |  199|     44|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (199:9): [True: 29, False: 15]
  |  |  ------------------
  |  |  200|     29|		type_ptr = _list;
  ------------------
 1455|     44|			if (ZEND_TYPE_IS_INTERSECTION(*list_type)) {
  ------------------
  |  |  172|     29|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|     29|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 5, False: 24]
  |  |  ------------------
  ------------------
 1456|      5|				str = add_intersection_type(str, ZEND_TYPE_LIST(*list_type), /* is_bracketed */ true);
  ------------------
  |  |  190|      5|	((zend_type_list *) (t).ptr)
  ------------------
 1457|      5|				continue;
 1458|      5|			}
 1459|     24|			ZEND_ASSERT(!ZEND_TYPE_HAS_LIST(*list_type));
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1459:4): [True: 0, False: 24]
  |  Branch (1459:4): [True: 24, False: 0]
  ------------------
 1460|     24|			ZEND_ASSERT(ZEND_TYPE_HAS_NAME(*list_type));
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1460:4): [True: 0, False: 24]
  |  Branch (1460:4): [True: 24, False: 0]
  ------------------
 1461|       |
 1462|     24|			zend_string *name = ZEND_TYPE_NAME(*list_type);
  ------------------
  |  |  184|     24|	((zend_string *) (t).ptr)
  ------------------
 1463|     24|			zend_string *resolved = resolve_class_name(name, scope);
 1464|     24|			str = add_type_string(str, resolved, /* is_intersection */ false);
 1465|     24|			zend_string_release(resolved);
 1466|     24|		} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|     24|	} \
  |  |  210|     15|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1467|    894|	} else if (ZEND_TYPE_HAS_NAME(type)) {
  ------------------
  |  |  160|    894|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|    894|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 115, False: 779]
  |  |  ------------------
  ------------------
 1468|    115|		str = resolve_class_name(ZEND_TYPE_NAME(type), scope);
  ------------------
  |  |  184|    115|	((zend_string *) (t).ptr)
  ------------------
 1469|    115|	}
 1470|       |
 1471|    924|	uint32_t type_mask = ZEND_TYPE_PURE_MASK(type);
  ------------------
  |  |  264|    924|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    924|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 1472|       |
 1473|    924|	if (type_mask == MAY_BE_ANY) {
  ------------------
  |  |   34|    924|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    924|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    924|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    924|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    924|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    924|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    924|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    924|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    924|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    924|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    924|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    924|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    924|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    924|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    924|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    924|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    924|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    924|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    924|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1473:6): [True: 13, False: 911]
  ------------------
 1474|     13|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_MIXED), /* is_intersection */ false);
 1475|       |
 1476|     13|		return str;
 1477|     13|	}
 1478|    911|	if (type_mask & MAY_BE_STATIC) {
  ------------------
  |  |   42|    911|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|    911|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (1478:6): [True: 5, False: 906]
  ------------------
 1479|      5|		zend_string *name = ZSTR_KNOWN(ZEND_STR_STATIC);
 1480|       |		// During compilation of eval'd code the called scope refers to the scope calling the eval
 1481|      5|		if (scope && !zend_is_compiling()) {
  ------------------
  |  Branch (1481:7): [True: 1, False: 4]
  |  Branch (1481:16): [True: 0, False: 1]
  ------------------
 1482|      0|			const zend_class_entry *called_scope = zend_get_called_scope(EG(current_execute_data));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1483|      0|			if (called_scope) {
  ------------------
  |  Branch (1483:8): [True: 0, False: 0]
  ------------------
 1484|      0|				name = called_scope->name;
 1485|      0|			}
 1486|      0|		}
 1487|      5|		str = add_type_string(str, name, /* is_intersection */ false);
 1488|      5|	}
 1489|    911|	if (type_mask & MAY_BE_CALLABLE) {
  ------------------
  |  |   39|    911|#define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
  |  |  ------------------
  |  |  |  |  621|    911|#define IS_CALLABLE					12
  |  |  ------------------
  ------------------
  |  Branch (1489:6): [True: 10, False: 901]
  ------------------
 1490|     10|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_CALLABLE), /* is_intersection */ false);
 1491|     10|	}
 1492|    911|	if (type_mask & MAY_BE_OBJECT) {
  ------------------
  |  |   32|    911|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|    911|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (1492:6): [True: 30, False: 881]
  ------------------
 1493|     30|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_OBJECT), /* is_intersection */ false);
 1494|     30|	}
 1495|    911|	if (type_mask & MAY_BE_ARRAY) {
  ------------------
  |  |   31|    911|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|    911|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
  |  Branch (1495:6): [True: 81, False: 830]
  ------------------
 1496|     81|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_ARRAY), /* is_intersection */ false);
 1497|     81|	}
 1498|    911|	if (type_mask & MAY_BE_STRING) {
  ------------------
  |  |   30|    911|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|    911|#define IS_STRING					6
  |  |  ------------------
  ------------------
  |  Branch (1498:6): [True: 275, False: 636]
  ------------------
 1499|    275|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_STRING), /* is_intersection */ false);
 1500|    275|	}
 1501|    911|	if (type_mask & MAY_BE_LONG) {
  ------------------
  |  |   28|    911|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|    911|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (1501:6): [True: 351, False: 560]
  ------------------
 1502|    351|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_INT), /* is_intersection */ false);
 1503|    351|	}
 1504|    911|	if (type_mask & MAY_BE_DOUBLE) {
  ------------------
  |  |   29|    911|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|    911|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (1504:6): [True: 8, False: 903]
  ------------------
 1505|      8|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_FLOAT), /* is_intersection */ false);
 1506|      8|	}
 1507|    911|	if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL) {
  ------------------
  |  |   27|    911|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|    911|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    911|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|    911|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    911|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL) {
  ------------------
  |  |   27|    911|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|    911|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    911|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|    911|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    911|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1507:6): [True: 27, False: 884]
  ------------------
 1508|     27|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_BOOL), /* is_intersection */ false);
 1509|    884|	} else if (type_mask & MAY_BE_FALSE) {
  ------------------
  |  |   25|    884|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|    884|#define IS_FALSE					2
  |  |  ------------------
  ------------------
  |  Branch (1509:13): [True: 16, False: 868]
  ------------------
 1510|     16|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_FALSE), /* is_intersection */ false);
 1511|    868|	} else if (type_mask & MAY_BE_TRUE) {
  ------------------
  |  |   26|    868|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|    868|#define IS_TRUE						3
  |  |  ------------------
  ------------------
  |  Branch (1511:13): [True: 2, False: 866]
  ------------------
 1512|      2|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_TRUE), /* is_intersection */ false);
 1513|      2|	}
 1514|    911|	if (type_mask & MAY_BE_VOID) {
  ------------------
  |  |   40|    911|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|    911|#define IS_VOID						14
  |  |  ------------------
  ------------------
  |  Branch (1514:6): [True: 19, False: 892]
  ------------------
 1515|     19|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_VOID), /* is_intersection */ false);
 1516|     19|	}
 1517|    911|	if (type_mask & MAY_BE_NEVER) {
  ------------------
  |  |   41|    911|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|    911|#define IS_NEVER					17
  |  |  ------------------
  ------------------
  |  Branch (1517:6): [True: 3, False: 908]
  ------------------
 1518|      3|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_NEVER), /* is_intersection */ false);
 1519|      3|	}
 1520|       |
 1521|    911|	if (type_mask & MAY_BE_NULL) {
  ------------------
  |  |   24|    911|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|    911|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (1521:6): [True: 41, False: 870]
  ------------------
 1522|     41|		bool is_union = !str || memchr(ZSTR_VAL(str), '|', ZSTR_LEN(str)) != NULL;
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		bool is_union = !str || memchr(ZSTR_VAL(str), '|', ZSTR_LEN(str)) != NULL;
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1522:19): [True: 1, False: 40]
  |  Branch (1522:27): [True: 8, False: 32]
  ------------------
 1523|     41|		bool has_intersection = !str || memchr(ZSTR_VAL(str), '&', ZSTR_LEN(str)) != NULL;
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		bool has_intersection = !str || memchr(ZSTR_VAL(str), '&', ZSTR_LEN(str)) != NULL;
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1523:27): [True: 1, False: 40]
  |  Branch (1523:35): [True: 1, False: 39]
  ------------------
 1524|     41|		if (!is_union && !has_intersection) {
  ------------------
  |  Branch (1524:7): [True: 32, False: 9]
  |  Branch (1524:20): [True: 31, False: 1]
  ------------------
 1525|     31|			zend_string *nullable_str = zend_string_concat2("?", 1, ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_string *nullable_str = zend_string_concat2("?", 1, ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1526|     31|			zend_string_release(str);
 1527|     31|			return nullable_str;
 1528|     31|		}
 1529|       |
 1530|     10|		str = add_type_string(str, ZSTR_KNOWN(ZEND_STR_NULL_LOWERCASE), /* is_intersection */ false);
 1531|     10|	}
 1532|    880|	return str;
 1533|    911|}
zend_type_to_string:
 1535|    712|ZEND_API zend_string *zend_type_to_string(zend_type type) {
 1536|       |	return zend_type_to_string_resolved(type, NULL);
 1537|    712|}
zend_mangle_property_name:
 1579|    108|{
 1580|    108|	size_t prop_name_length = 1 + src1_length + 1 + src2_length;
 1581|    108|	zend_string *prop_name = zend_string_alloc(prop_name_length, internal);
 1582|       |
 1583|    108|	ZSTR_VAL(prop_name)[0] = '\0';
  ------------------
  |  |   67|    108|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1584|    108|	memcpy(ZSTR_VAL(prop_name) + 1, src1, src1_length+1);
  ------------------
  |  |   67|    108|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1585|    108|	memcpy(ZSTR_VAL(prop_name) + 1 + src1_length + 1, src2, src2_length+1);
  ------------------
  |  |   67|    108|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1586|    108|	return prop_name;
 1587|    108|}
zend_unmangle_property_name_ex:
 1591|    365|{
 1592|    365|	size_t class_name_len;
 1593|    365|	size_t anonclass_src_len;
 1594|       |
 1595|    365|	*class_name = NULL;
 1596|       |
 1597|    365|	if (!ZSTR_LEN(name) || ZSTR_VAL(name)[0] != '\0') {
  ------------------
  |  |   68|    730|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	if (!ZSTR_LEN(name) || ZSTR_VAL(name)[0] != '\0') {
  ------------------
  |  |   67|    362|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1597:6): [True: 3, False: 362]
  |  Branch (1597:25): [True: 331, False: 31]
  ------------------
 1598|    334|		*prop_name = ZSTR_VAL(name);
  ------------------
  |  |   67|    334|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1599|    334|		if (prop_len) {
  ------------------
  |  Branch (1599:7): [True: 31, False: 303]
  ------------------
 1600|     31|			*prop_len = ZSTR_LEN(name);
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1601|     31|		}
 1602|    334|		return SUCCESS;
 1603|    334|	}
 1604|     31|	if (ZSTR_LEN(name) < 3 || ZSTR_VAL(name)[1] == '\0') {
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	if (ZSTR_LEN(name) < 3 || ZSTR_VAL(name)[1] == '\0') {
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1604:6): [True: 0, False: 31]
  |  Branch (1604:28): [True: 0, False: 31]
  ------------------
 1605|      0|		zend_error(E_NOTICE, "Illegal member variable name");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1606|      0|		*prop_name = ZSTR_VAL(name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1607|      0|		if (prop_len) {
  ------------------
  |  Branch (1607:7): [True: 0, False: 0]
  ------------------
 1608|      0|			*prop_len = ZSTR_LEN(name);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1609|      0|		}
 1610|      0|		return FAILURE;
 1611|      0|	}
 1612|       |
 1613|     31|	class_name_len = zend_strnlen(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 2);
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	class_name_len = zend_strnlen(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 2);
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1614|     31|	if (class_name_len >= ZSTR_LEN(name) - 2 || ZSTR_VAL(name)[class_name_len + 1] != '\0') {
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	if (class_name_len >= ZSTR_LEN(name) - 2 || ZSTR_VAL(name)[class_name_len + 1] != '\0') {
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1614:6): [True: 0, False: 31]
  |  Branch (1614:46): [True: 0, False: 31]
  ------------------
 1615|      0|		zend_error(E_NOTICE, "Corrupt member variable name");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1616|      0|		*prop_name = ZSTR_VAL(name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1617|      0|		if (prop_len) {
  ------------------
  |  Branch (1617:7): [True: 0, False: 0]
  ------------------
 1618|      0|			*prop_len = ZSTR_LEN(name);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1619|      0|		}
 1620|      0|		return FAILURE;
 1621|      0|	}
 1622|       |
 1623|     31|	*class_name = ZSTR_VAL(name) + 1;
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1624|     31|	anonclass_src_len = zend_strnlen(*class_name + class_name_len + 1, ZSTR_LEN(name) - class_name_len - 2);
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1625|     31|	if (class_name_len + anonclass_src_len + 2 != ZSTR_LEN(name)) {
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1625:6): [True: 3, False: 28]
  ------------------
 1626|      3|		class_name_len += anonclass_src_len + 1;
 1627|      3|	}
 1628|     31|	*prop_name = ZSTR_VAL(name) + class_name_len + 2;
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1629|     31|	if (prop_len) {
  ------------------
  |  Branch (1629:6): [True: 16, False: 15]
  ------------------
 1630|     16|		*prop_len = ZSTR_LEN(name) - class_name_len - 2;
  ------------------
  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1631|     16|	}
 1632|     31|	return SUCCESS;
 1633|     31|}
zend_get_class_fetch_type:
 1748|  6.87k|{
 1749|  6.87k|	if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  |  401|  6.87k|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  6.87k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  13.7k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    574|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    574|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    574|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    574|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 574, False: 6.30k]
  |  |  |  Branch (401:35): [True: 119, False: 455]
  |  |  ------------------
  ------------------
 1750|    119|		return ZEND_FETCH_CLASS_SELF;
  ------------------
  |  | 1043|    119|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
 1751|  6.75k|	} else if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  |  401|  6.75k|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  6.75k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  13.5k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    164|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    164|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    164|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    164|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 164, False: 6.59k]
  |  |  |  Branch (401:35): [True: 47, False: 117]
  |  |  ------------------
  ------------------
 1752|     47|		return ZEND_FETCH_CLASS_PARENT;
  ------------------
  |  | 1044|     47|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
 1753|  6.70k|	} else if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_STATIC))) {
  ------------------
  |  |  401|  6.70k|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  6.70k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  13.4k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    117|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    117|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    117|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    117|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 117, False: 6.59k]
  |  |  |  Branch (401:35): [True: 27, False: 90]
  |  |  ------------------
  ------------------
 1754|     27|		return ZEND_FETCH_CLASS_STATIC;
  ------------------
  |  | 1045|     27|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
 1755|  6.68k|	} else {
 1756|  6.68k|		return ZEND_FETCH_CLASS_DEFAULT;
  ------------------
  |  | 1042|  6.68k|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
 1757|  6.68k|	}
 1758|  6.87k|}
zend_is_auto_global:
 2002|  10.1k|{
 2003|  10.1k|	zend_auto_global *auto_global;
 2004|       |
 2005|  10.1k|	if ((auto_global = zend_hash_find_ptr(CG(auto_globals), name)) != NULL) {
  ------------------
  |  |   35|  10.1k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2005:6): [True: 30, False: 10.1k]
  ------------------
 2006|     30|		if (auto_global->armed) {
  ------------------
  |  Branch (2006:7): [True: 10, False: 20]
  ------------------
 2007|     10|			auto_global->armed = auto_global->auto_global_callback(auto_global->name);
 2008|     10|		}
 2009|     30|		return 1;
 2010|     30|	}
 2011|  10.1k|	return 0;
 2012|  10.1k|}
zend_register_auto_global:
 2016|     16|{
 2017|     16|	zend_auto_global auto_global;
 2018|     16|	zend_result retval;
 2019|       |
 2020|     16|	auto_global.name = name;
 2021|     16|	auto_global.auto_global_callback = auto_global_callback;
 2022|     16|	auto_global.jit = jit;
 2023|       |
 2024|     16|	retval = zend_hash_add_mem(CG(auto_globals), auto_global.name, &auto_global, sizeof(zend_auto_global)) != NULL ? SUCCESS : FAILURE;
  ------------------
  |  |   35|     16|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2024:11): [True: 16, False: 0]
  ------------------
 2025|       |
 2026|     16|	return retval;
 2027|     16|}
zend_activate_auto_globals:
 2031|  33.5k|{
 2032|  33.5k|	zend_auto_global *auto_global;
 2033|       |
 2034|   604k|	ZEND_HASH_MAP_FOREACH_PTR(CG(auto_globals), auto_global) {
  ------------------
  |  | 1341|   268k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  33.5k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  33.5k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  33.5k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  33.5k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  33.5k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|   302k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 268k, False: 33.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|   268k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|   268k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|   268k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 268k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|   268k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|   268k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 268k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|   268k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|  33.5k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  33.5k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2034:2): [True: 0, False: 33.5k]
  |  Branch (2034:2): [True: 33.5k, False: 0]
  ------------------
 2035|   604k|		auto_global->armed = auto_global->jit || auto_global->auto_global_callback;
  ------------------
  |  Branch (2035:24): [True: 134k, False: 134k]
  |  Branch (2035:44): [True: 134k, False: 0]
  ------------------
 2036|   604k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|   268k|		} \
  |  | 1102|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
 2037|       |
 2038|   604k|	ZEND_HASH_MAP_FOREACH_PTR(CG(auto_globals), auto_global) {
  ------------------
  |  | 1341|   268k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  33.5k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  33.5k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  33.5k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  33.5k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  33.5k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|   302k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 268k, False: 33.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|   268k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|   268k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|   268k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 268k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|   268k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|   268k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 268k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|   268k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|  33.5k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  33.5k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2038:2): [True: 0, False: 33.5k]
  |  Branch (2038:2): [True: 33.5k, False: 0]
  ------------------
 2039|   604k|		if (auto_global->armed && !auto_global->jit) {
  ------------------
  |  Branch (2039:7): [True: 268k, False: 0]
  |  Branch (2039:29): [True: 134k, False: 134k]
  ------------------
 2040|   134k|			auto_global->armed = auto_global->auto_global_callback(auto_global->name);
 2041|   134k|		}
 2042|   604k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|   268k|		} \
  |  | 1102|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
 2043|  33.5k|}
zendlex:
 2047|   142k|{
 2048|   142k|	zval zv;
 2049|   142k|	int ret;
 2050|       |
 2051|   142k|	if (CG(increment_lineno)) {
  ------------------
  |  |   35|   142k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 461, False: 142k]
  |  |  ------------------
  ------------------
 2052|    461|		CG(zend_lineno)++;
  ------------------
  |  |   35|    461|# define CG(v) (compiler_globals.v)
  ------------------
 2053|    461|		CG(increment_lineno) = 0;
  ------------------
  |  |   35|    461|# define CG(v) (compiler_globals.v)
  ------------------
 2054|    461|	}
 2055|       |
 2056|   142k|	ret = lex_scan(&zv, elem);
 2057|   142k|	ZEND_ASSERT(!EG(exception) || ret == T_ERROR);
  ------------------
  |  |  112|   142k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2057:2): [True: 142k, False: 0]
  |  Branch (2057:2): [True: 0, False: 0]
  |  Branch (2057:2): [True: 142k, False: 305]
  |  Branch (2057:2): [True: 305, False: 0]
  ------------------
 2058|   142k|	return ret;
 2059|       |
 2060|   142k|}
zend_initialize_class_data:
 2064|  2.08k|{
 2065|  2.08k|	bool persistent_hashes = ce->type == ZEND_INTERNAL_CLASS;
 2066|       |
 2067|  2.08k|	ce->refcount = 1;
 2068|  2.08k|	ce->ce_flags = ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|  2.08k|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 2069|  2.08k|	ce->ce_flags2 = 0;
 2070|       |
 2071|  2.08k|	if (CG(compiler_options) & ZEND_COMPILE_GUARDS) {
  ------------------
  |  |   35|  2.08k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_GUARDS) {
  ------------------
  |  | 1289|  2.08k|#define ZEND_COMPILE_GUARDS						(1<<10)
  ------------------
  |  Branch (2071:6): [True: 0, False: 2.08k]
  ------------------
 2072|      0|		ce->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
 2073|      0|	}
 2074|       |
 2075|  2.08k|	ce->default_properties_table = NULL;
 2076|  2.08k|	ce->default_static_members_table = NULL;
 2077|  2.08k|	zend_hash_init(&ce->properties_info, 8, NULL, NULL, persistent_hashes);
  ------------------
  |  |  111|  2.08k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 2078|  2.08k|	zend_hash_init(&ce->constants_table, 8, NULL, NULL, persistent_hashes);
  ------------------
  |  |  111|  2.08k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 2079|  2.08k|	zend_hash_init(&ce->function_table, 8, NULL, ZEND_FUNCTION_DTOR, persistent_hashes);
  ------------------
  |  |  111|  2.08k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 2080|       |
 2081|  2.08k|	ce->doc_comment = NULL;
 2082|       |
 2083|  2.08k|	ZEND_MAP_PTR_INIT(ce->static_members_table, NULL);
  ------------------
  |  |   38|  2.08k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  2.08k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  2.08k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  2.08k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 2.08k]
  |  |  ------------------
  ------------------
 2084|  2.08k|	ZEND_MAP_PTR_INIT(ce->mutable_data, NULL);
  ------------------
  |  |   38|  2.08k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  2.08k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  2.08k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  2.08k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 2.08k]
  |  |  ------------------
  ------------------
 2085|       |
 2086|  2.08k|	ce->default_object_handlers = &std_object_handlers;
 2087|  2.08k|	ce->default_properties_count = 0;
 2088|  2.08k|	ce->default_static_members_count = 0;
 2089|  2.08k|	ce->properties_info_table = NULL;
 2090|  2.08k|	ce->attributes = NULL;
 2091|  2.08k|	ce->enum_backing_type = IS_UNDEF;
  ------------------
  |  |  606|  2.08k|#define IS_UNDEF					0
  ------------------
 2092|  2.08k|	ce->backed_enum_table = NULL;
 2093|       |
 2094|  2.08k|	if (nullify_handlers) {
  ------------------
  |  Branch (2094:6): [True: 1.73k, False: 348]
  ------------------
 2095|  1.73k|		ce->constructor = NULL;
 2096|  1.73k|		ce->destructor = NULL;
 2097|  1.73k|		ce->clone = NULL;
 2098|  1.73k|		ce->__get = NULL;
 2099|  1.73k|		ce->__set = NULL;
 2100|  1.73k|		ce->__unset = NULL;
 2101|  1.73k|		ce->__isset = NULL;
 2102|  1.73k|		ce->__call = NULL;
 2103|  1.73k|		ce->__callstatic = NULL;
 2104|  1.73k|		ce->__tostring = NULL;
 2105|  1.73k|		ce->__serialize = NULL;
 2106|  1.73k|		ce->__unserialize = NULL;
 2107|  1.73k|		ce->__debugInfo = NULL;
 2108|  1.73k|		ce->create_object = NULL;
 2109|  1.73k|		ce->get_iterator = NULL;
 2110|  1.73k|		ce->iterator_funcs_ptr = NULL;
 2111|  1.73k|		ce->arrayaccess_funcs_ptr = NULL;
 2112|  1.73k|		ce->get_static_method = NULL;
 2113|  1.73k|		ce->parent = NULL;
 2114|  1.73k|		ce->parent_name = NULL;
 2115|  1.73k|		ce->num_interfaces = 0;
 2116|  1.73k|		ce->interfaces = NULL;
 2117|  1.73k|		ce->num_traits = 0;
 2118|  1.73k|		ce->num_hooked_props = 0;
 2119|  1.73k|		ce->num_hooked_prop_variance_checks = 0;
 2120|  1.73k|		ce->trait_names = NULL;
 2121|  1.73k|		ce->trait_aliases = NULL;
 2122|  1.73k|		ce->trait_precedences = NULL;
 2123|  1.73k|		ce->serialize = NULL;
 2124|  1.73k|		ce->unserialize = NULL;
 2125|  1.73k|		if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (2125:7): [True: 0, False: 1.73k]
  ------------------
 2126|      0|			ce->info.internal.module = NULL;
 2127|       |			ce->info.internal.builtin_functions = NULL;
 2128|      0|		}
 2129|  1.73k|	}
 2130|  2.08k|}
zend_negate_num_string:
 2161|      7|{
 2162|      7|	zval *zv = zend_ast_get_zval(ast);
 2163|      7|	if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_LONG) {
  ------------------
  |  |  610|      7|#define IS_LONG						4
  ------------------
  |  Branch (2163:6): [True: 7, False: 0]
  ------------------
 2164|      7|		if (Z_LVAL_P(zv) == 0) {
  ------------------
  |  |  976|      7|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      7|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (2164:7): [True: 0, False: 7]
  ------------------
 2165|      0|			ZVAL_NEW_STR(zv, ZSTR_INIT_LITERAL("-0", 0));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2166|      7|		} else {
 2167|      7|			ZEND_ASSERT(Z_LVAL_P(zv) > 0);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2167:4): [True: 0, False: 7]
  |  Branch (2167:4): [True: 7, False: 0]
  ------------------
 2168|      7|			Z_LVAL_P(zv) *= -1;
  ------------------
  |  |  976|      7|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      7|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2169|      7|		}
 2170|      7|	} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (2170:13): [True: 0, False: 0]
  ------------------
 2171|      0|		size_t orig_len = Z_STRLEN_P(zv);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2172|      0|		Z_STR_P(zv) = zend_string_extend(Z_STR_P(zv), orig_len + 1, 0);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		Z_STR_P(zv) = zend_string_extend(Z_STR_P(zv), orig_len + 1, 0);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2173|      0|		memmove(Z_STRVAL_P(zv) + 1, Z_STRVAL_P(zv), orig_len + 1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		memmove(Z_STRVAL_P(zv) + 1, Z_STRVAL_P(zv), orig_len + 1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2174|      0|		Z_STRVAL_P(zv)[0] = '-';
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2175|      0|	} else {
 2176|      0|		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2176:3): [Folded, False: 0]
  |  Branch (2176:3): [Folded, False: 0]
  ------------------
 2177|      0|	}
 2178|      7|	return ast;
 2179|      7|}
zend_dirname:
 2193|     40|{
 2194|     40|	char *end = path + len - 1;
 2195|     40|	unsigned int len_adjust = 0;
 2196|       |
 2197|       |#ifdef ZEND_WIN32
 2198|       |	/* Note that on Win32 CWD is per drive (heritage from CP/M).
 2199|       |	 * This means dirname("c:foo") maps to "c:." or "c:" - which means CWD on C: drive.
 2200|       |	 */
 2201|       |	if ((2 <= len) && isalpha((unsigned char)path[0]) && (':' == path[1])) {
 2202|       |		/* Skip over the drive spec (if any) so as not to change */
 2203|       |		path += 2;
 2204|       |		len_adjust += 2;
 2205|       |		if (2 == len) {
 2206|       |			/* Return "c:" on Win32 for dirname("c:").
 2207|       |			 * It would be more consistent to return "c:."
 2208|       |			 * but that would require making the string *longer*.
 2209|       |			 */
 2210|       |			return len;
 2211|       |		}
 2212|       |	}
 2213|       |#endif
 2214|       |
 2215|     40|	if (len == 0) {
  ------------------
  |  Branch (2215:6): [True: 0, False: 40]
  ------------------
 2216|       |		/* Illegal use of this function */
 2217|      0|		return 0;
 2218|      0|	}
 2219|       |
 2220|       |	/* Strip trailing slashes */
 2221|     40|	while (end >= path && IS_SLASH_P_EX(end, end == path)) {
  ------------------
  |  |  116|     40|#define IS_SLASH_P_EX(c, first_byte) IS_SLASH_P(c)
  |  |  ------------------
  |  |  |  |  115|     40|#define IS_SLASH_P(c)	(*(c) == '/')
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:23): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2221:9): [True: 40, False: 0]
  ------------------
 2222|      0|		end--;
 2223|      0|	}
 2224|     40|	if (end < path) {
  ------------------
  |  Branch (2224:6): [True: 0, False: 40]
  ------------------
 2225|       |		/* The path only contained slashes */
 2226|      0|		path[0] = DEFAULT_SLASH;
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
 2227|      0|		path[1] = '\0';
 2228|      0|		return 1 + len_adjust;
 2229|      0|	}
 2230|       |
 2231|       |	/* Strip filename */
 2232|    459|	while (end >= path && !IS_SLASH_P_EX(end, end == path)) {
  ------------------
  |  |  116|    459|#define IS_SLASH_P_EX(c, first_byte) IS_SLASH_P(c)
  |  |  ------------------
  |  |  |  |  115|    459|#define IS_SLASH_P(c)	(*(c) == '/')
  |  |  ------------------
  ------------------
  |  Branch (2232:9): [True: 459, False: 0]
  |  Branch (2232:24): [True: 419, False: 40]
  ------------------
 2233|    419|		end--;
 2234|    419|	}
 2235|     40|	if (end < path) {
  ------------------
  |  Branch (2235:6): [True: 0, False: 40]
  ------------------
 2236|       |		/* No slash found, therefore return '.' */
 2237|      0|		path[0] = '.';
 2238|      0|		path[1] = '\0';
 2239|      0|		return 1 + len_adjust;
 2240|      0|	}
 2241|       |
 2242|       |	/* Strip slashes which came before the file name */
 2243|     80|	while (end >= path && IS_SLASH_P_EX(end, end == path)) {
  ------------------
  |  |  116|     80|#define IS_SLASH_P_EX(c, first_byte) IS_SLASH_P(c)
  |  |  ------------------
  |  |  |  |  115|     80|#define IS_SLASH_P(c)	(*(c) == '/')
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:23): [True: 40, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2243:9): [True: 80, False: 0]
  ------------------
 2244|     40|		end--;
 2245|     40|	}
 2246|     40|	if (end < path) {
  ------------------
  |  Branch (2246:6): [True: 0, False: 40]
  ------------------
 2247|      0|		path[0] = DEFAULT_SLASH;
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
 2248|      0|		path[1] = '\0';
 2249|      0|		return 1 + len_adjust;
 2250|      0|	}
 2251|     40|	*(end+1) = '\0';
 2252|       |
 2253|     40|	return (size_t)(end + 1 - path) + len_adjust;
 2254|     40|}
zend_is_smart_branch:
 2377|  1.02k|{
 2378|  1.02k|	switch (opline->opcode) {
 2379|     30|		case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|     30|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (2379:3): [True: 30, False: 991]
  ------------------
 2380|     30|		case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|     30|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (2380:3): [True: 0, False: 1.02k]
  ------------------
 2381|     72|		case ZEND_IS_EQUAL:
  ------------------
  |  |  142|     72|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (2381:3): [True: 42, False: 979]
  ------------------
 2382|     81|		case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|     81|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (2382:3): [True: 9, False: 1.01k]
  ------------------
 2383|    129|		case ZEND_IS_SMALLER:
  ------------------
  |  |  144|    129|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (2383:3): [True: 48, False: 973]
  ------------------
 2384|    149|		case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|    149|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (2384:3): [True: 20, False: 1.00k]
  ------------------
 2385|    157|		case ZEND_CASE:
  ------------------
  |  |  171|    157|#define ZEND_CASE                            48
  ------------------
  |  Branch (2385:3): [True: 8, False: 1.01k]
  ------------------
 2386|    165|		case ZEND_CASE_STRICT:
  ------------------
  |  |  318|    165|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (2386:3): [True: 8, False: 1.01k]
  ------------------
 2387|    165|		case ZEND_ISSET_ISEMPTY_CV:
  ------------------
  |  |  276|    165|#define ZEND_ISSET_ISEMPTY_CV               154
  ------------------
  |  Branch (2387:3): [True: 0, False: 1.02k]
  ------------------
 2388|    165|		case ZEND_ISSET_ISEMPTY_VAR:
  ------------------
  |  |  236|    165|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
  |  Branch (2388:3): [True: 0, False: 1.02k]
  ------------------
 2389|    165|		case ZEND_ISSET_ISEMPTY_DIM_OBJ:
  ------------------
  |  |  237|    165|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
  |  Branch (2389:3): [True: 0, False: 1.02k]
  ------------------
 2390|    165|		case ZEND_ISSET_ISEMPTY_PROP_OBJ:
  ------------------
  |  |  270|    165|#define ZEND_ISSET_ISEMPTY_PROP_OBJ         148
  ------------------
  |  Branch (2390:3): [True: 0, False: 1.02k]
  ------------------
 2391|    165|		case ZEND_ISSET_ISEMPTY_STATIC_PROP:
  ------------------
  |  |  302|    165|#define ZEND_ISSET_ISEMPTY_STATIC_PROP      180
  ------------------
  |  Branch (2391:3): [True: 0, False: 1.02k]
  ------------------
 2392|    166|		case ZEND_INSTANCEOF:
  ------------------
  |  |  260|    166|#define ZEND_INSTANCEOF                     138
  ------------------
  |  Branch (2392:3): [True: 1, False: 1.02k]
  ------------------
 2393|    170|		case ZEND_TYPE_CHECK:
  ------------------
  |  |  245|    170|#define ZEND_TYPE_CHECK                     123
  ------------------
  |  Branch (2393:3): [True: 4, False: 1.01k]
  ------------------
 2394|    172|		case ZEND_DEFINED:
  ------------------
  |  |  244|    172|#define ZEND_DEFINED                        122
  ------------------
  |  Branch (2394:3): [True: 2, False: 1.01k]
  ------------------
 2395|    172|		case ZEND_IN_ARRAY:
  ------------------
  |  |  311|    172|#define ZEND_IN_ARRAY                       189
  ------------------
  |  Branch (2395:3): [True: 0, False: 1.02k]
  ------------------
 2396|    172|		case ZEND_ARRAY_KEY_EXISTS:
  ------------------
  |  |  316|    172|#define ZEND_ARRAY_KEY_EXISTS               194
  ------------------
  |  Branch (2396:3): [True: 0, False: 1.02k]
  ------------------
 2397|    172|			return 1;
 2398|    849|		default:
  ------------------
  |  Branch (2398:3): [True: 849, False: 172]
  ------------------
 2399|    849|			return 0;
 2400|  1.02k|	}
 2401|  1.02k|}
zend_emit_final_return:
 2710|  5.90k|{
 2711|  5.90k|	znode zn;
 2712|  5.90k|	zend_op *ret;
 2713|  5.90k|	bool returns_reference = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0;
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
              	bool returns_reference = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0;
  ------------------
  |  |  352|  5.90k|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
 2714|       |
 2715|  5.90k|	if ((CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
              	if ((CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)
  ------------------
  |  |  355|  5.90k|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (2715:6): [True: 293, False: 5.60k]
  ------------------
 2716|    293|			&& !(CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR)) {
  ------------------
  |  |   35|    293|# define CG(v) (compiler_globals.v)
  ------------------
              			&& !(CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR)) {
  ------------------
  |  |  387|    293|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
  |  Branch (2716:7): [True: 286, False: 7]
  ------------------
 2717|    286|		zend_arg_info *return_info = CG(active_op_array)->arg_info - 1;
  ------------------
  |  |   35|    286|# define CG(v) (compiler_globals.v)
  ------------------
 2718|       |
 2719|    286|		if (ZEND_TYPE_CONTAINS_CODE(return_info->type, IS_NEVER)) {
  ------------------
  |  |  273|    286|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 3, False: 283]
  |  |  ------------------
  ------------------
 2720|      3|			zend_emit_op(NULL, ZEND_VERIFY_NEVER_TYPE, NULL, NULL);
  ------------------
  |  |  323|      3|#define ZEND_VERIFY_NEVER_TYPE              201
  ------------------
 2721|      3|			return;
 2722|      3|		}
 2723|       |
 2724|    283|		zend_emit_return_type_check(NULL, return_info, true);
 2725|    283|	}
 2726|       |
 2727|  5.89k|	zn.op_type = IS_CONST;
  ------------------
  |  |  864|  5.89k|#define IS_CONST	(1<<0)
  ------------------
 2728|  5.89k|	if (return_one) {
  ------------------
  |  Branch (2728:6): [True: 4.40k, False: 1.49k]
  ------------------
 2729|  4.40k|		ZVAL_LONG(&zn.u.constant, 1);
  ------------------
  |  | 1076|  4.40k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  4.40k|		zval *__z = (z);				\
  |  | 1078|  4.40k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  4.40k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  4.40k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  4.40k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  4.40k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.40k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  4.40k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  4.40k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4.40k]
  |  |  ------------------
  ------------------
 2730|  4.40k|	} else {
 2731|  1.49k|		ZVAL_NULL(&zn.u.constant);
  ------------------
  |  | 1059|  1.49k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  1.49k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  1.49k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.49k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  1.49k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  1.49k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1.49k]
  |  |  ------------------
  ------------------
 2732|  1.49k|	}
 2733|       |
 2734|  5.89k|	ret = zend_emit_op(NULL, returns_reference ? ZEND_RETURN_BY_REF : ZEND_RETURN, &zn, NULL);
  ------------------
  |  |  233|     68|#define ZEND_RETURN_BY_REF                  111
  ------------------
              	ret = zend_emit_op(NULL, returns_reference ? ZEND_RETURN_BY_REF : ZEND_RETURN, &zn, NULL);
  ------------------
  |  |  185|  11.7k|#define ZEND_RETURN                          62
  ------------------
  |  Branch (2734:27): [True: 68, False: 5.83k]
  ------------------
 2735|  5.89k|	ret->extended_value = -1;
 2736|  5.89k|}
zend_get_call_op:
 3975|  6.68k|{
 3976|  6.68k|	uint32_t no_discard = result_used ? 0 : ZEND_ACC_NODISCARD;
  ------------------
  |  |  410|  13.3k|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  |  Branch (3976:24): [True: 0, False: 6.68k]
  ------------------
 3977|       |
 3978|  6.68k|	if (fbc && init_op->opcode != ZEND_NEW) {
  ------------------
  |  |  191|  4.75k|#define ZEND_NEW                             68
  ------------------
  |  Branch (3978:6): [True: 4.75k, False: 1.92k]
  |  Branch (3978:13): [True: 3.74k, False: 1.01k]
  ------------------
 3979|  3.74k|		ZEND_ASSERT(!(fbc->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE));
  ------------------
  |  |  112|  3.74k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3979:3): [True: 0, False: 3.74k]
  |  Branch (3979:3): [True: 3.74k, False: 0]
  ------------------
 3980|  3.74k|		if (fbc->type == ZEND_INTERNAL_FUNCTION && !(CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS)) {
  ------------------
  |  |   35|  3.26k|# define CG(v) (compiler_globals.v)
  ------------------
              		if (fbc->type == ZEND_INTERNAL_FUNCTION && !(CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS)) {
  ------------------
  |  | 1269|  3.26k|#define ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS  (1<<3)
  ------------------
  |  Branch (3980:7): [True: 3.26k, False: 480]
  |  Branch (3980:46): [True: 3.26k, False: 0]
  ------------------
 3981|  3.26k|			if (init_op->opcode == ZEND_INIT_FCALL && !zend_execute_internal) {
  ------------------
  |  |  184|  6.53k|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (3981:8): [True: 3.21k, False: 56]
  |  Branch (3981:46): [True: 0, False: 3.21k]
  ------------------
 3982|      0|				if (!(fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard))) {
  ------------------
  |  |  258|      0|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (3982:9): [True: 0, False: 0]
  ------------------
 3983|      0|					return ZEND_DO_ICALL;
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
 3984|      0|				} else {
 3985|      0|					return ZEND_DO_FCALL_BY_NAME;
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
 3986|      0|				}
 3987|      0|			}
 3988|  3.26k|		} else if (!(CG(compiler_options) & ZEND_COMPILE_IGNORE_USER_FUNCTIONS)){
  ------------------
  |  |   35|    480|# define CG(v) (compiler_globals.v)
  ------------------
              		} else if (!(CG(compiler_options) & ZEND_COMPILE_IGNORE_USER_FUNCTIONS)){
  ------------------
  |  | 1286|    480|#define ZEND_COMPILE_IGNORE_USER_FUNCTIONS      (1<<9)
  ------------------
  |  Branch (3988:14): [True: 480, False: 0]
  ------------------
 3989|    480|			if (zend_execute_ex == execute_ex) {
  ------------------
  |  Branch (3989:8): [True: 0, False: 480]
  ------------------
 3990|      0|				if (!(fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard))) {
  ------------------
  |  |  258|      0|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (3990:9): [True: 0, False: 0]
  ------------------
 3991|      0|					return ZEND_DO_UCALL;
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
 3992|      0|				} else {
 3993|      0|					return ZEND_DO_FCALL_BY_NAME;
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
 3994|      0|				}
 3995|      0|			}
 3996|    480|		}
 3997|  3.74k|	} else if (zend_execute_ex == execute_ex &&
  ------------------
  |  Branch (3997:13): [True: 0, False: 2.93k]
  ------------------
 3998|      0|	           !zend_execute_internal &&
  ------------------
  |  Branch (3998:13): [True: 0, False: 0]
  ------------------
 3999|      0|	           (init_op->opcode == ZEND_INIT_FCALL_BY_NAME ||
  ------------------
  |  |  182|      0|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (3999:14): [True: 0, False: 0]
  ------------------
 4000|      0|	            init_op->opcode == ZEND_INIT_NS_FCALL_BY_NAME)) {
  ------------------
  |  |  192|      0|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (4000:14): [True: 0, False: 0]
  ------------------
 4001|      0|		return ZEND_DO_FCALL_BY_NAME;
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
 4002|      0|	}
 4003|  6.68k|	return ZEND_DO_FCALL;
  ------------------
  |  |  183|  6.68k|#define ZEND_DO_FCALL                        60
  ------------------
 4004|  6.68k|}
zend_resolve_goto_label:
 6168|     40|{
 6169|     40|	zend_label *dest;
 6170|     40|	int remove_oplines = opline->op1.num;
 6171|     40|	zval *label;
 6172|     40|	uint32_t opnum = opline - op_array->opcodes;
 6173|       |
 6174|     40|	label = CT_CONSTANT_EX(op_array, opline->op2.constant);
  ------------------
  |  |  817|     40|	((op_array)->literals + (num))
  ------------------
 6175|     40|	if (CG(context).labels == NULL ||
  ------------------
  |  |   35|     40|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6175:6): [True: 1, False: 39]
  ------------------
 6176|     39|	    (dest = zend_hash_find_ptr(CG(context).labels, Z_STR_P(label))) == NULL
  ------------------
  |  |   35|     39|# define CG(v) (compiler_globals.v)
  ------------------
              	    (dest = zend_hash_find_ptr(CG(context).labels, Z_STR_P(label))) == NULL
  ------------------
  |  |  982|     39|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     39|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (6176:6): [True: 0, False: 39]
  ------------------
 6177|     40|	) {
 6178|      1|		CG(in_compilation) = 1;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 6179|      1|		CG(active_op_array) = op_array;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 6180|      1|		CG(zend_lineno) = opline->lineno;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 6181|      1|		zend_error_noreturn(E_COMPILE_ERROR, "'goto' to undefined label '%s'", Z_STRVAL_P(label));
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              		zend_error_noreturn(E_COMPILE_ERROR, "'goto' to undefined label '%s'", Z_STRVAL_P(label));
  ------------------
  |  |  985|      1|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      1|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6182|      1|	}
 6183|       |
 6184|     39|	zval_ptr_dtor_str(label);
 6185|     39|	ZVAL_NULL(label);
  ------------------
  |  | 1059|     39|#define ZVAL_NULL(z) do {				\
  |  | 1060|     39|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     39|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     39|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     39|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     39|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 39]
  |  |  ------------------
  ------------------
 6186|       |
 6187|     39|	uint32_t current = opline->extended_value;
 6188|     39|	for (; current != dest->brk_cont; current = CG(context).brk_cont_array[current].parent) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6188:9): [True: 3, False: 36]
  ------------------
 6189|      3|		if (current == -1) {
  ------------------
  |  Branch (6189:7): [True: 3, False: 0]
  ------------------
 6190|      3|			CG(in_compilation) = 1;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
 6191|      3|			CG(active_op_array) = op_array;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
 6192|      3|			CG(zend_lineno) = opline->lineno;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
 6193|      3|			zend_error_noreturn(E_COMPILE_ERROR, "'goto' into loop or switch statement is disallowed");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6194|      3|		}
 6195|      0|		if (CG(context).brk_cont_array[current].start >= 0) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6195:7): [True: 0, False: 0]
  ------------------
 6196|      0|			remove_oplines--;
 6197|      0|		}
 6198|      0|	}
 6199|       |
 6200|     41|	for (current = 0; current < op_array->last_try_catch; ++current) {
  ------------------
  |  Branch (6200:20): [True: 7, False: 34]
  ------------------
 6201|      7|		const zend_try_catch_element *elem = &op_array->try_catch_array[current];
 6202|      7|		if (elem->try_op > opnum) {
  ------------------
  |  Branch (6202:7): [True: 2, False: 5]
  ------------------
 6203|      2|			break;
 6204|      2|		}
 6205|      5|		if (elem->finally_op && opnum < elem->finally_op - 1
  ------------------
  |  Branch (6205:7): [True: 5, False: 0]
  |  Branch (6205:27): [True: 2, False: 3]
  ------------------
 6206|      2|			&& (dest->opline_num > elem->finally_end || dest->opline_num < elem->try_op)
  ------------------
  |  Branch (6206:8): [True: 0, False: 2]
  |  Branch (6206:48): [True: 1, False: 1]
  ------------------
 6207|      5|		) {
 6208|      1|			remove_oplines--;
 6209|      1|		}
 6210|      5|	}
 6211|       |
 6212|     36|	opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|     36|#define ZEND_JMP                             42
  ------------------
 6213|     36|	SET_UNUSED(opline->op1);
  ------------------
  |  |   35|     36|#define SET_UNUSED(op) do { \
  |  |   36|     36|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|     36|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|     36|	op.num = (uint32_t) -1; \
  |  |   38|     36|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 36]
  |  |  ------------------
  ------------------
 6214|     36|	SET_UNUSED(opline->op2);
  ------------------
  |  |   35|     36|#define SET_UNUSED(op) do { \
  |  |   36|     36|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|     36|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|     36|	op.num = (uint32_t) -1; \
  |  |   38|     36|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 36]
  |  |  ------------------
  ------------------
 6215|     36|	SET_UNUSED(opline->result);
  ------------------
  |  |   35|     36|#define SET_UNUSED(op) do { \
  |  |   36|     36|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|     36|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|     36|	op.num = (uint32_t) -1; \
  |  |   38|     36|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 36]
  |  |  ------------------
  ------------------
 6216|     36|	opline->op1.opline_num = dest->opline_num;
 6217|     36|	opline->extended_value = 0;
 6218|       |
 6219|     36|	ZEND_ASSERT(remove_oplines >= 0);
  ------------------
  |  |  112|     36|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6219:2): [True: 0, False: 36]
  |  Branch (6219:2): [True: 36, False: 0]
  ------------------
 6220|     40|	while (remove_oplines--) {
  ------------------
  |  Branch (6220:9): [True: 4, False: 36]
  ------------------
 6221|      4|		opline--;
 6222|      4|		MAKE_NOP(opline);
  ------------------
  |  |   40|      4|#define MAKE_NOP(opline) do { \
  |  |   41|      4|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      4|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      4|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      4|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      4|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      4|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      4|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      4|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      4|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      4|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      4|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      4|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      4|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      4|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 6223|      4|		ZEND_VM_SET_OPCODE_HANDLER(opline);
  ------------------
  |  |   48|      4|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
 6224|      4|	}
 6225|     36|}
zend_handle_encoding_declaration:
 7193|     60|{
 7194|     60|	const zend_ast_list *declares = zend_ast_get_list(ast);
 7195|     60|	uint32_t i;
 7196|    118|	for (i = 0; i < declares->children; ++i) {
  ------------------
  |  Branch (7196:14): [True: 60, False: 58]
  ------------------
 7197|     60|		const zend_ast *declare_ast = declares->child[i];
 7198|     60|		zend_ast *name_ast = declare_ast->child[0];
 7199|     60|		zend_ast *value_ast = declare_ast->child[1];
 7200|     60|		const zend_string *name = zend_ast_get_str(name_ast);
 7201|       |
 7202|     60|		if (zend_string_equals_literal_ci(name, "encoding")) {
  ------------------
  |  |  404|     60|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     60|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     25|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     25|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 25, False: 35]
  |  |  |  Branch (404:40): [True: 13, False: 12]
  |  |  ------------------
  ------------------
 7203|     13|			if (value_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (7203:8): [True: 2, False: 11]
  ------------------
 7204|      2|				zend_throw_exception(zend_ce_compile_error, "Encoding must be a literal", 0);
 7205|      2|				return false;
 7206|      2|			}
 7207|       |
 7208|     11|			if (CG(multibyte)) {
  ------------------
  |  |   35|     11|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 7209|      0|				zend_string *encoding_name = zval_get_string(zend_ast_get_zval(value_ast));
 7210|       |
 7211|      0|				const zend_encoding *new_encoding, *old_encoding;
 7212|      0|				zend_encoding_filter old_input_filter;
 7213|       |
 7214|      0|				CG(encoding_declared) = 1;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 7215|       |
 7216|      0|				new_encoding = zend_multibyte_fetch_encoding(ZSTR_VAL(encoding_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7217|      0|				if (!new_encoding) {
  ------------------
  |  Branch (7217:9): [True: 0, False: 0]
  ------------------
 7218|      0|					zend_error(E_COMPILE_WARNING, "Unsupported encoding [%s]", ZSTR_VAL(encoding_name));
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
              					zend_error(E_COMPILE_WARNING, "Unsupported encoding [%s]", ZSTR_VAL(encoding_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7219|      0|				} else {
 7220|      0|					old_input_filter = LANG_SCNG(input_filter);
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
 7221|      0|					old_encoding = LANG_SCNG(script_encoding);
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
 7222|      0|					zend_multibyte_set_filter(new_encoding);
 7223|       |
 7224|       |					/* need to re-scan if input filter changed */
 7225|      0|					if (old_input_filter != LANG_SCNG(input_filter) ||
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  |  Branch (7225:10): [True: 0, False: 0]
  ------------------
 7226|      0|						 (old_input_filter && new_encoding != old_encoding)) {
  ------------------
  |  Branch (7226:9): [True: 0, False: 0]
  |  Branch (7226:29): [True: 0, False: 0]
  ------------------
 7227|      0|						zend_multibyte_yyinput_again(old_input_filter, old_encoding);
 7228|      0|					}
 7229|      0|				}
 7230|       |
 7231|      0|				zend_string_release_ex(encoding_name, 0);
 7232|     11|			} else {
 7233|     11|				zend_error(E_COMPILE_WARNING, "declare(encoding=...) ignored because "
  ------------------
  |  |   29|     11|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
 7234|     11|					"Zend multibyte feature is turned off by settings");
 7235|     11|			}
 7236|     11|		}
 7237|     60|	}
 7238|       |
 7239|     58|	return true;
 7240|     60|}
zend_set_function_arg_flags:
 7340|  4.17k|{
 7341|  4.17k|	uint32_t i, n;
 7342|       |
 7343|  4.17k|	func->common.arg_flags[0] = 0;
 7344|  4.17k|	func->common.arg_flags[1] = 0;
 7345|  4.17k|	func->common.arg_flags[2] = 0;
 7346|  4.17k|	if (func->common.arg_info) {
  ------------------
  |  Branch (7346:6): [True: 4.17k, False: 0]
  ------------------
 7347|  4.17k|		n = MIN(func->common.num_args, MAX_ARG_FLAG_NUM);
  ------------------
  |  Branch (7347:7): [True: 4.17k, False: 0]
  ------------------
 7348|  4.17k|		i = 0;
 7349|  8.38k|		while (i < n) {
  ------------------
  |  Branch (7349:10): [True: 4.21k, False: 4.17k]
  ------------------
 7350|  4.21k|			ZEND_SET_ARG_FLAG(func, i + 1, ZEND_ARG_SEND_MODE(&func->common.arg_info[i]));
  ------------------
  |  | 1182|  4.21k|# define ZEND_SET_ARG_FLAG(zf, arg_num, mask) do { \
  |  | 1183|  4.21k|		(zf)->quick_arg_flags |= (((mask) << 6) << (arg_num) * 2); \
  |  | 1184|  4.21k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1184:11): [Folded, False: 4.21k]
  |  |  ------------------
  ------------------
 7351|  4.21k|			i++;
 7352|  4.21k|		}
 7353|  4.17k|		if (UNEXPECTED((func->common.fn_flags & ZEND_ACC_VARIADIC) && ZEND_ARG_SEND_MODE(&func->common.arg_info[i]))) {
  ------------------
  |  |  457|  4.30k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 4.16k]
  |  |  |  Branch (457:52): [True: 128, False: 4.04k]
  |  |  |  Branch (457:52): [True: 14, False: 114]
  |  |  ------------------
  ------------------
 7354|     14|			uint32_t pass_by_reference = ZEND_ARG_SEND_MODE(&func->common.arg_info[i]);
  ------------------
  |  | 1130|     14|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|     14|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|     14|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     14|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7355|    169|			while (i < MAX_ARG_FLAG_NUM) {
  ------------------
  |  | 1173|    169|#define MAX_ARG_FLAG_NUM 12
  ------------------
  |  Branch (7355:11): [True: 155, False: 14]
  ------------------
 7356|    155|				ZEND_SET_ARG_FLAG(func, i + 1, pass_by_reference);
  ------------------
  |  | 1182|    155|# define ZEND_SET_ARG_FLAG(zf, arg_num, mask) do { \
  |  | 1183|    155|		(zf)->quick_arg_flags |= (((mask) << 6) << (arg_num) * 2); \
  |  | 1184|    155|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1184:11): [Folded, False: 155]
  |  |  ------------------
  ------------------
 7357|    155|				i++;
 7358|    155|			}
 7359|     14|		}
 7360|  4.17k|	}
 7361|  4.17k|}
zend_get_property_hook_kind_from_name:
 8937|    161|zend_property_hook_kind zend_get_property_hook_kind_from_name(const zend_string *name) {
 8938|    161|	if (zend_string_equals_literal_ci(name, "get")) {
  ------------------
  |  |  404|    161|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    161|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|    160|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    160|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 160, False: 1]
  |  |  |  Branch (404:40): [True: 95, False: 65]
  |  |  ------------------
  ------------------
 8939|     95|		return ZEND_PROPERTY_HOOK_GET;
 8940|     95|	} else if (zend_string_equals_literal_ci(name, "set")) {
  ------------------
  |  |  404|     66|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     66|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     65|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     65|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 65, False: 1]
  |  |  |  Branch (404:40): [True: 64, False: 1]
  |  |  ------------------
  ------------------
 8941|     64|		return ZEND_PROPERTY_HOOK_SET;
 8942|     64|	} else {
 8943|      2|		return (zend_property_hook_kind)-1;
 8944|      2|	}
 8945|    161|}
zend_is_op_long_compatible:
10228|    689|{
10229|    689|	if (Z_TYPE_P(op) == IS_ARRAY) {
  ------------------
  |  |  669|    689|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    689|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_ARRAY) {
  ------------------
  |  |  613|    689|#define IS_ARRAY					7
  ------------------
  |  Branch (10229:6): [True: 2, False: 687]
  ------------------
10230|      2|		return false;
10231|      2|	}
10232|       |
10233|    687|	if (Z_TYPE_P(op) == IS_DOUBLE
  ------------------
  |  |  669|    687|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    687|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_DOUBLE
  ------------------
  |  |  611|  1.37k|#define IS_DOUBLE					5
  ------------------
  |  Branch (10233:6): [True: 200, False: 487]
  ------------------
10234|    200|		&& !zend_is_long_compatible(Z_DVAL_P(op), zend_dval_to_lval_silent(Z_DVAL_P(op)))) {
  ------------------
  |  |  979|    200|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    200|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              		&& !zend_is_long_compatible(Z_DVAL_P(op), zend_dval_to_lval_silent(Z_DVAL_P(op)))) {
  ------------------
  |  |  979|    200|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    200|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (10234:6): [True: 165, False: 35]
  ------------------
10235|    165|		return false;
10236|    165|	}
10237|       |
10238|    522|	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|    522|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    522|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|    522|#define IS_STRING					6
  ------------------
  |  Branch (10238:6): [True: 9, False: 513]
  ------------------
10239|      9|		double dval = 0;
10240|      9|		uint8_t is_num = is_numeric_str_function(Z_STR_P(op), NULL, &dval);
  ------------------
  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10241|      9|		if (is_num == 0 || (is_num == IS_DOUBLE && !zend_is_long_compatible(dval, zend_dval_to_lval_silent(dval)))) {
  ------------------
  |  |  611|     18|#define IS_DOUBLE					5
  ------------------
  |  Branch (10241:7): [True: 0, False: 9]
  |  Branch (10241:23): [True: 9, False: 0]
  |  Branch (10241:46): [True: 8, False: 1]
  ------------------
10242|      8|			return false;
10243|      8|		}
10244|      9|	}
10245|       |
10246|    514|	return true;
10247|    522|}
zend_binary_op_produces_error:
10250|  1.43k|{
10251|  1.43k|	if ((opcode == ZEND_CONCAT || opcode == ZEND_FAST_CONCAT)) {
  ------------------
  |  |  132|  2.86k|#define ZEND_CONCAT                           8
  ------------------
              	if ((opcode == ZEND_CONCAT || opcode == ZEND_FAST_CONCAT)) {
  ------------------
  |  |  176|  1.29k|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (10251:7): [True: 135, False: 1.29k]
  |  Branch (10251:32): [True: 0, False: 1.29k]
  ------------------
10252|       |		/* Array to string warning. */
10253|    135|		return Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY;
  ------------------
  |  |  669|    135|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    135|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		return Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY;
  ------------------
  |  |  613|    270|#define IS_ARRAY					7
  ------------------
              		return Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY;
  ------------------
  |  |  669|    135|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    135|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		return Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY;
  ------------------
  |  |  613|    270|#define IS_ARRAY					7
  ------------------
  |  Branch (10253:10): [True: 0, False: 135]
  |  Branch (10253:39): [True: 1, False: 134]
  ------------------
10254|    135|	}
10255|       |
10256|  1.29k|	if (!(opcode == ZEND_ADD || opcode == ZEND_SUB || opcode == ZEND_MUL || opcode == ZEND_DIV
  ------------------
  |  |  125|  2.59k|#define ZEND_ADD                              1
  ------------------
              	if (!(opcode == ZEND_ADD || opcode == ZEND_SUB || opcode == ZEND_MUL || opcode == ZEND_DIV
  ------------------
  |  |  126|  2.54k|#define ZEND_SUB                              2
  ------------------
              	if (!(opcode == ZEND_ADD || opcode == ZEND_SUB || opcode == ZEND_MUL || opcode == ZEND_DIV
  ------------------
  |  |  127|  2.40k|#define ZEND_MUL                              3
  ------------------
              	if (!(opcode == ZEND_ADD || opcode == ZEND_SUB || opcode == ZEND_MUL || opcode == ZEND_DIV
  ------------------
  |  |  128|  1.98k|#define ZEND_DIV                              4
  ------------------
  |  Branch (10256:8): [True: 47, False: 1.25k]
  |  Branch (10256:30): [True: 145, False: 1.10k]
  |  Branch (10256:52): [True: 418, False: 687]
  |  Branch (10256:74): [True: 129, False: 558]
  ------------------
10257|    558|               || opcode == ZEND_POW || opcode == ZEND_MOD || opcode == ZEND_SL || opcode == ZEND_SR
  ------------------
  |  |  136|  1.85k|#define ZEND_POW                             12
  ------------------
                             || opcode == ZEND_POW || opcode == ZEND_MOD || opcode == ZEND_SL || opcode == ZEND_SR
  ------------------
  |  |  129|  1.77k|#define ZEND_MOD                              5
  ------------------
                             || opcode == ZEND_POW || opcode == ZEND_MOD || opcode == ZEND_SL || opcode == ZEND_SR
  ------------------
  |  |  130|  1.67k|#define ZEND_SL                               6
  ------------------
                             || opcode == ZEND_POW || opcode == ZEND_MOD || opcode == ZEND_SL || opcode == ZEND_SR
  ------------------
  |  |  131|  1.61k|#define ZEND_SR                               7
  ------------------
  |  Branch (10257:19): [True: 83, False: 475]
  |  Branch (10257:41): [True: 98, False: 377]
  |  Branch (10257:63): [True: 58, False: 319]
  |  Branch (10257:84): [True: 8, False: 311]
  ------------------
10258|    311|               || opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)) {
  ------------------
  |  |  133|  1.60k|#define ZEND_BW_OR                            9
  ------------------
                             || opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)) {
  ------------------
  |  |  134|  1.59k|#define ZEND_BW_AND                          10
  ------------------
                             || opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)) {
  ------------------
  |  |  135|    232|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (10258:19): [True: 18, False: 293]
  |  Branch (10258:43): [True: 61, False: 232]
  |  Branch (10258:68): [True: 127, False: 105]
  ------------------
10259|       |		/* Only the numeric operations throw errors. */
10260|    105|		return 0;
10261|    105|	}
10262|       |
10263|  1.19k|	if (Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  669|  1.19k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.19k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  613|  2.38k|#define IS_ARRAY					7
  ------------------
              	if (Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  669|  1.18k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.18k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_ARRAY || Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  613|  1.18k|#define IS_ARRAY					7
  ------------------
  |  Branch (10263:6): [True: 11, False: 1.18k]
  |  Branch (10263:35): [True: 10, False: 1.17k]
  ------------------
10264|     21|		if (opcode == ZEND_ADD && Z_TYPE_P(op1) == IS_ARRAY && Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  125|     42|#define ZEND_ADD                              1
  ------------------
              		if (opcode == ZEND_ADD && Z_TYPE_P(op1) == IS_ARRAY && Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (opcode == ZEND_ADD && Z_TYPE_P(op1) == IS_ARRAY && Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  613|     24|#define IS_ARRAY					7
  ------------------
              		if (opcode == ZEND_ADD && Z_TYPE_P(op1) == IS_ARRAY && Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (opcode == ZEND_ADD && Z_TYPE_P(op1) == IS_ARRAY && Z_TYPE_P(op2) == IS_ARRAY) {
  ------------------
  |  |  613|      3|#define IS_ARRAY					7
  ------------------
  |  Branch (10264:7): [True: 3, False: 18]
  |  Branch (10264:29): [True: 3, False: 0]
  |  Branch (10264:58): [True: 0, False: 3]
  ------------------
10265|       |			/* Adding two arrays is allowed. */
10266|      0|			return 0;
10267|      0|		}
10268|       |
10269|       |		/* Numeric operators throw when one of the operands is an array. */
10270|     21|		return 1;
10271|     21|	}
10272|       |
10273|       |	/* While basic arithmetic operators always produce numeric string errors,
10274|       |	 * bitwise operators don't produce errors if both operands are strings */
10275|  1.17k|	if ((opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)
  ------------------
  |  |  133|  2.34k|#define ZEND_BW_OR                            9
  ------------------
              	if ((opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)
  ------------------
  |  |  134|  2.32k|#define ZEND_BW_AND                          10
  ------------------
              	if ((opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)
  ------------------
  |  |  135|  1.09k|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (10275:7): [True: 18, False: 1.15k]
  |  Branch (10275:31): [True: 61, False: 1.09k]
  |  Branch (10275:56): [True: 127, False: 965]
  ------------------
10276|    206|		&& Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|    206|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    206|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		&& Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|  1.37k|#define IS_STRING					6
  ------------------
              		&& Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		&& Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|     14|#define IS_STRING					6
  ------------------
  |  Branch (10276:6): [True: 14, False: 192]
  |  Branch (10276:36): [True: 13, False: 1]
  ------------------
10277|     13|		return 0;
10278|     13|	}
10279|       |
10280|  1.15k|	if (Z_TYPE_P(op1) == IS_STRING
  ------------------
  |  |  669|  1.15k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.15k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING
  ------------------
  |  |  612|  2.31k|#define IS_STRING					6
  ------------------
  |  Branch (10280:6): [True: 54, False: 1.10k]
  ------------------
10281|     54|		&& !is_numeric_string(Z_STRVAL_P(op1), Z_STRLEN_P(op1), NULL, NULL, 0)) {
  ------------------
  |  |  985|     54|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     54|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     54|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		&& !is_numeric_string(Z_STRVAL_P(op1), Z_STRLEN_P(op1), NULL, NULL, 0)) {
  ------------------
  |  |  988|     54|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     54|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     54|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10281:6): [True: 47, False: 7]
  ------------------
10282|     47|		return 1;
10283|     47|	}
10284|       |
10285|  1.11k|	if (Z_TYPE_P(op2) == IS_STRING
  ------------------
  |  |  669|  1.11k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.11k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op2) == IS_STRING
  ------------------
  |  |  612|  2.22k|#define IS_STRING					6
  ------------------
  |  Branch (10285:6): [True: 20, False: 1.09k]
  ------------------
10286|     20|		&& !is_numeric_string(Z_STRVAL_P(op2), Z_STRLEN_P(op2), NULL, NULL, 0)) {
  ------------------
  |  |  985|     20|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     20|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		&& !is_numeric_string(Z_STRVAL_P(op2), Z_STRLEN_P(op2), NULL, NULL, 0)) {
  ------------------
  |  |  988|     20|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     20|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10286:6): [True: 13, False: 7]
  ------------------
10287|     13|		return 1;
10288|     13|	}
10289|       |
10290|       |	/* Operation which cast float/float-strings to integers might produce incompatible float to int errors */
10291|  1.09k|	if (opcode == ZEND_SL || opcode == ZEND_SR || opcode == ZEND_BW_OR
  ------------------
  |  |  130|  2.19k|#define ZEND_SL                               6
  ------------------
              	if (opcode == ZEND_SL || opcode == ZEND_SR || opcode == ZEND_BW_OR
  ------------------
  |  |  131|  2.14k|#define ZEND_SR                               7
  ------------------
              	if (opcode == ZEND_SL || opcode == ZEND_SR || opcode == ZEND_BW_OR
  ------------------
  |  |  133|  2.13k|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (10291:6): [True: 55, False: 1.04k]
  |  Branch (10291:27): [True: 6, False: 1.03k]
  |  Branch (10291:48): [True: 18, False: 1.01k]
  ------------------
10292|  1.01k|			|| opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR) {
  ------------------
  |  |  134|  2.11k|#define ZEND_BW_AND                          10
  ------------------
              			|| opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR) {
  ------------------
  |  |  135|    961|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (10292:7): [True: 58, False: 961]
  |  Branch (10292:32): [True: 116, False: 845]
  ------------------
10293|    253|		if (!zend_is_op_long_compatible(op1) || !zend_is_op_long_compatible(op2)) {
  ------------------
  |  Branch (10293:7): [True: 25, False: 228]
  |  Branch (10293:43): [True: 59, False: 169]
  ------------------
10294|     84|			return 1;
10295|     84|		}
10296|    253|	}
10297|       |
10298|  1.01k|	if (opcode == ZEND_DIV && zval_get_double(op2) == 0.0) {
  ------------------
  |  |  128|  2.02k|#define ZEND_DIV                              4
  ------------------
  |  Branch (10298:6): [True: 125, False: 889]
  |  Branch (10298:28): [True: 10, False: 115]
  ------------------
10299|       |		/* Division by zero throws an error. */
10300|     10|		return 1;
10301|     10|	}
10302|       |
10303|       |	/* Mod is an operation that will cast float/float-strings to integers which might
10304|       |	   produce float to int incompatible errors, and also cannot be divided by 0 */
10305|  1.00k|	if (opcode == ZEND_MOD) {
  ------------------
  |  |  129|  1.00k|#define ZEND_MOD                              5
  ------------------
  |  Branch (10305:6): [True: 94, False: 910]
  ------------------
10306|     94|		if (!zend_is_op_long_compatible(op1) || !zend_is_op_long_compatible(op2) || zval_get_long(op2) == 0) {
  ------------------
  |  Branch (10306:7): [True: 63, False: 31]
  |  Branch (10306:43): [True: 9, False: 22]
  |  Branch (10306:79): [True: 1, False: 21]
  ------------------
10307|     73|			return 1;
10308|     73|		}
10309|     94|	}
10310|       |
10311|    931|	if ((opcode == ZEND_POW) && zval_get_double(op1) == 0 && zval_get_double(op2) < 0) {
  ------------------
  |  |  136|    931|#define ZEND_POW                             12
  ------------------
  |  Branch (10311:6): [True: 75, False: 856]
  |  Branch (10311:30): [True: 4, False: 71]
  |  Branch (10311:59): [True: 0, False: 4]
  ------------------
10312|       |		/* 0 ** (<0) throws a division by zero error. */
10313|      0|		return 1;
10314|      0|	}
10315|    931|	if ((opcode == ZEND_SL || opcode == ZEND_SR) && zval_get_long(op2) < 0) {
  ------------------
  |  |  130|  1.86k|#define ZEND_SL                               6
  ------------------
              	if ((opcode == ZEND_SL || opcode == ZEND_SR) && zval_get_long(op2) < 0) {
  ------------------
  |  |  131|    905|#define ZEND_SR                               7
  ------------------
  |  Branch (10315:7): [True: 26, False: 905]
  |  Branch (10315:28): [True: 3, False: 902]
  |  Branch (10315:50): [True: 1, False: 28]
  ------------------
10316|       |		/* Shift by negative number throws an error. */
10317|      1|		return 1;
10318|      1|	}
10319|       |
10320|    930|	return 0;
10321|    931|}
zend_unary_op_produces_error:
10337|    163|{
10338|    163|	if (opcode == ZEND_BW_NOT) {
  ------------------
  |  |  137|    163|#define ZEND_BW_NOT                          13
  ------------------
  |  Branch (10338:6): [True: 90, False: 73]
  ------------------
10339|       |		/* BW_NOT on string does not convert the string into an integer. */
10340|     90|		if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|     90|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     90|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|     90|#define IS_STRING					6
  ------------------
  |  Branch (10340:7): [True: 7, False: 83]
  ------------------
10341|      7|			return 0;
10342|      7|		}
10343|     83|		return Z_TYPE_P(op) <= IS_TRUE || !zend_is_op_long_compatible(op);
  ------------------
  |  |  669|     83|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     83|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		return Z_TYPE_P(op) <= IS_TRUE || !zend_is_op_long_compatible(op);
  ------------------
  |  |  609|    166|#define IS_TRUE						3
  ------------------
  |  Branch (10343:10): [True: 0, False: 83]
  |  Branch (10343:37): [True: 19, False: 64]
  ------------------
10344|     90|	}
10345|       |	/* Can happen when called from zend_optimizer_eval_unary_op() */
10346|     73|	if (opcode == ZEND_BOOL || opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  175|    146|#define ZEND_BOOL                            52
  ------------------
              	if (opcode == ZEND_BOOL || opcode == ZEND_BOOL_NOT) {
  ------------------
  |  |  138|     73|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (10346:6): [True: 0, False: 73]
  |  Branch (10346:29): [True: 73, False: 0]
  ------------------
10347|       |		/* ZEND_BOOL/ZEND_BOOL_NOT warns when casting NAN. */
10348|     73|		return Z_TYPE_P(op) == IS_DOUBLE;
  ------------------
  |  |  669|     73|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     73|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		return Z_TYPE_P(op) == IS_DOUBLE;
  ------------------
  |  |  611|     73|#define IS_DOUBLE					5
  ------------------
10349|     73|	}
10350|       |
10351|      0|	return 0;
10352|     73|}
zend_const_expr_to_zval:
11931|    777|{
11932|    777|	const_expr_context context;
11933|    777|	context.allow_dynamic = allow_dynamic;
11934|       |
11935|    777|	zend_eval_const_expr(ast_ptr);
11936|    777|	zend_compile_const_expr(ast_ptr, &context);
11937|    777|	if ((*ast_ptr)->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11937:6): [True: 297, False: 480]
  ------------------
11938|       |		/* Replace with compiled AST zval representation. */
11939|    297|		zval ast_zv;
11940|    297|		ZVAL_AST(&ast_zv, zend_ast_copy(*ast_ptr));
  ------------------
  |  | 1240|    297|#define ZVAL_AST(z, ast) do {									\
  |  | 1241|    297|		zval *__z = (z);										\
  |  | 1242|    297|		Z_AST_P(__z) = ast;										\
  |  |  ------------------
  |  |  |  | 1036|    297|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1035|    297|#define Z_AST(zval)					(zval).value.ast
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1243|    297|		Z_TYPE_INFO_P(__z) = IS_CONSTANT_AST_EX;				\
  |  |  ------------------
  |  |  |  |  678|    297|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    297|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_CONSTANT_AST_EX;				\
  |  |  ------------------
  |  |  |  |  834|    297|#define IS_CONSTANT_AST_EX			(IS_CONSTANT_AST   | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  617|    297|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  |  |  ------------------
  |  |  |  |               #define IS_CONSTANT_AST_EX			(IS_CONSTANT_AST   | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    297|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_CONSTANT_AST_EX			(IS_CONSTANT_AST   | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    297|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1244|    297|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1244:11): [Folded, False: 297]
  |  |  ------------------
  ------------------
11941|    297|		zend_ast_destroy(*ast_ptr);
11942|    297|		*ast_ptr = zend_ast_create_zval(&ast_zv);
11943|    297|	}
11944|    777|	ZVAL_COPY(result, zend_ast_get_zval(*ast_ptr));
  ------------------
  |  | 1425|    777|	do {												\
  |  | 1426|    777|		zval *_z1 = (z);								\
  |  | 1427|    777|		const zval *_z2 = (v);							\
  |  | 1428|    777|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    777|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    777|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    777|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    777|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    777|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    777|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    777|	do {												\
  |  |  |  | 1408|    777|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    777|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    777|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    777|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    777|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    777|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    777|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 777]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    777|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    777|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    777|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 410, False: 367]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    410|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    410|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    410|		}												\
  |  | 1434|    777|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 777]
  |  |  ------------------
  ------------------
11945|    777|}
zend_compile_top_stmt:
11950|  21.4k|{
11951|  21.4k|	if (!ast) {
  ------------------
  |  Branch (11951:6): [True: 2.81k, False: 18.6k]
  ------------------
11952|  2.81k|		return;
11953|  2.81k|	}
11954|       |
11955|  18.6k|	if (ast->kind == ZEND_AST_STMT_LIST) {
  ------------------
  |  Branch (11955:6): [True: 6.00k, False: 12.6k]
  ------------------
11956|  6.00k|		const zend_ast_list *list = zend_ast_get_list(ast);
11957|  6.00k|		uint32_t i;
11958|  22.4k|		for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (11958:15): [True: 16.4k, False: 6.00k]
  ------------------
11959|  16.4k|			zend_compile_top_stmt(list->child[i]);
11960|  16.4k|		}
11961|  6.00k|		return;
11962|  6.00k|	}
11963|       |
11964|  12.6k|	if (ast->kind == ZEND_AST_FUNC_DECL) {
  ------------------
  |  Branch (11964:6): [True: 551, False: 12.0k]
  ------------------
11965|    551|		CG(zend_lineno) = ast->lineno;
  ------------------
  |  |   35|    551|# define CG(v) (compiler_globals.v)
  ------------------
11966|    551|		zend_compile_func_decl(NULL, ast, FUNC_DECL_LEVEL_TOPLEVEL);
11967|    551|		CG(zend_lineno) = ((zend_ast_decl *) ast)->end_lineno;
  ------------------
  |  |   35|    551|# define CG(v) (compiler_globals.v)
  ------------------
11968|  12.0k|	} else if (ast->kind == ZEND_AST_CLASS) {
  ------------------
  |  Branch (11968:13): [True: 1.69k, False: 10.4k]
  ------------------
11969|  1.69k|		CG(zend_lineno) = ast->lineno;
  ------------------
  |  |   35|  1.69k|# define CG(v) (compiler_globals.v)
  ------------------
11970|  1.69k|		zend_compile_class_decl(NULL, ast, true);
11971|  1.69k|		CG(zend_lineno) = ((zend_ast_decl *) ast)->end_lineno;
  ------------------
  |  |   35|  1.69k|# define CG(v) (compiler_globals.v)
  ------------------
11972|  10.4k|	} else {
11973|  10.4k|		zend_compile_stmt(ast);
11974|  10.4k|	}
11975|  12.6k|	if (ast->kind != ZEND_AST_NAMESPACE && ast->kind != ZEND_AST_HALT_COMPILER) {
  ------------------
  |  Branch (11975:6): [True: 11.9k, False: 678]
  |  Branch (11975:41): [True: 11.9k, False: 6]
  ------------------
11976|  11.9k|		zend_verify_namespace();
11977|  11.9k|	}
11978|  12.6k|}
zend_try_ct_eval_cast:
12369|      6|{
12370|       |	/* NAN warns when casting */
12371|      6|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_DOUBLE && zend_isnan(Z_DVAL_P(op1)))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  Branch (457:52): [True: 3, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  ------------------
  ------------------
12372|      0|		return false;
12373|      0|	}
12374|      6|	switch (type) {
  ------------------
  |  Branch (12374:10): [True: 5, False: 1]
  ------------------
12375|      0|		case _IS_BOOL:
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
  |  Branch (12375:3): [True: 0, False: 6]
  ------------------
12376|      0|			ZVAL_BOOL(result, zend_is_true(op1));
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12377|      0|			return true;
12378|      0|		case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (12378:3): [True: 0, False: 6]
  ------------------
12379|      0|			if (Z_TYPE_P(op1) == IS_DOUBLE && !ZEND_DOUBLE_FITS_LONG(Z_DVAL_P((op1)))) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_DOUBLE && !ZEND_DOUBLE_FITS_LONG(Z_DVAL_P((op1)))) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
              			if (Z_TYPE_P(op1) == IS_DOUBLE && !ZEND_DOUBLE_FITS_LONG(Z_DVAL_P((op1)))) {
  ------------------
  |  |  114|      0|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 0, False: 0]
  |  |  |  Branch (114:70): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12379:8): [True: 0, False: 0]
  ------------------
12380|      0|				return false;
12381|      0|			}
12382|      0|			ZVAL_LONG(result, zval_get_long(op1));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12383|      0|			return true;
12384|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (12384:3): [True: 0, False: 6]
  ------------------
12385|      0|			ZVAL_DOUBLE(result, zval_get_double(op1));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12386|      0|			return true;
12387|      5|		case IS_STRING:
  ------------------
  |  |  612|      5|#define IS_STRING					6
  ------------------
  |  Branch (12387:3): [True: 5, False: 1]
  ------------------
12388|       |			/* Conversion from double to string takes into account run-time
12389|       |			   'precision' setting and cannot be evaluated at compile-time */
12390|      5|			if (Z_TYPE_P(op1) != IS_ARRAY && Z_TYPE_P(op1) != IS_DOUBLE) {
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) != IS_ARRAY && Z_TYPE_P(op1) != IS_DOUBLE) {
  ------------------
  |  |  613|     10|#define IS_ARRAY					7
  ------------------
              			if (Z_TYPE_P(op1) != IS_ARRAY && Z_TYPE_P(op1) != IS_DOUBLE) {
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) != IS_ARRAY && Z_TYPE_P(op1) != IS_DOUBLE) {
  ------------------
  |  |  611|      5|#define IS_DOUBLE					5
  ------------------
  |  Branch (12390:8): [True: 5, False: 0]
  |  Branch (12390:37): [True: 2, False: 3]
  ------------------
12391|      2|				ZVAL_STR(result, zval_get_string(op1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 1]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
12392|      2|				return true;
12393|      2|			}
12394|      3|			break;
12395|      3|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (12395:3): [True: 0, False: 6]
  ------------------
12396|      0|			ZVAL_COPY(result, op1);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12397|      0|			convert_to_array(result);
12398|      0|			return true;
12399|      6|	}
12400|      4|	return false;
12401|      6|}
zend_compile.c:zend_is_reserved_class_name:
  225|  2.13k|{
  226|  2.13k|	const struct reserved_class_name *reserved = reserved_class_names;
  227|       |
  228|  2.13k|	const char *uqname = ZSTR_VAL(name);
  ------------------
  |  |   67|  2.13k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  229|  2.13k|	size_t uqname_len = ZSTR_LEN(name);
  ------------------
  |  |   68|  2.13k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  230|  2.13k|	zend_get_unqualified_name(name, &uqname, &uqname_len);
  231|       |
  232|  38.1k|	for (; reserved->name; ++reserved) {
  ------------------
  |  Branch (232:9): [True: 35.9k, False: 2.11k]
  ------------------
  233|  35.9k|		if (uqname_len == reserved->len
  ------------------
  |  Branch (233:7): [True: 2.38k, False: 33.6k]
  ------------------
  234|  2.38k|			&& zend_binary_strcasecmp(uqname, uqname_len, reserved->name, reserved->len) == 0
  ------------------
  |  Branch (234:7): [True: 20, False: 2.36k]
  ------------------
  235|  35.9k|		) {
  236|     20|			return true;
  237|     20|		}
  238|  35.9k|	}
  239|       |
  240|  2.11k|	return false;
  241|  2.13k|}
zend_compile.c:zend_get_unqualified_name:
  185|  3.80k|{
  186|  3.80k|	const char *ns_separator = zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   67|  3.80k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	const char *ns_separator = zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   68|  3.80k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  187|  3.80k|	if (ns_separator != NULL) {
  ------------------
  |  Branch (187:6): [True: 287, False: 3.51k]
  ------------------
  188|    287|		*result = ns_separator + 1;
  189|    287|		*result_len = ZSTR_VAL(name) + ZSTR_LEN(name) - *result;
  ------------------
  |  |   67|    287|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		*result_len = ZSTR_VAL(name) + ZSTR_LEN(name) - *result;
  ------------------
  |  |   68|    287|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  190|    287|		return true;
  191|    287|	}
  192|       |
  193|  3.51k|	return false;
  194|  3.80k|}
zend_compile.c:zend_end_namespace:
  390|  4.45k|static void zend_end_namespace(void) /* {{{ */ {
  391|  4.45k|	FC(in_namespace) = 0;
  ------------------
  |  |   60|  4.45k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.45k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  392|  4.45k|	zend_reset_import_tables();
  393|  4.45k|	if (FC(current_namespace)) {
  ------------------
  |  |   60|  4.45k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.45k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 140, False: 4.31k]
  |  |  ------------------
  ------------------
  394|    140|		zend_string_release_ex(FC(current_namespace), 0);
  ------------------
  |  |   60|    140|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    140|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  395|    140|		FC(current_namespace) = NULL;
  ------------------
  |  |   60|    140|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    140|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  396|    140|	}
  397|  4.45k|}
zend_compile.c:zend_reset_import_tables:
  367|  4.62k|{
  368|  4.62k|	if (FC(imports)) {
  ------------------
  |  |   60|  4.62k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.62k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 27, False: 4.59k]
  |  |  ------------------
  ------------------
  369|     27|		zend_hash_destroy(FC(imports));
  ------------------
  |  |   60|     27|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     27|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  370|     27|		efree(FC(imports));
  ------------------
  |  |  154|     27|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     27|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     27|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     27|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     27|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  371|     27|		FC(imports) = NULL;
  ------------------
  |  |   60|     27|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     27|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  372|     27|	}
  373|       |
  374|  4.62k|	if (FC(imports_function)) {
  ------------------
  |  |   60|  4.62k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.62k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 6, False: 4.61k]
  |  |  ------------------
  ------------------
  375|      6|		zend_hash_destroy(FC(imports_function));
  ------------------
  |  |   60|      6|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  376|      6|		efree(FC(imports_function));
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  377|      6|		FC(imports_function) = NULL;
  ------------------
  |  |   60|      6|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  378|      6|	}
  379|       |
  380|  4.62k|	if (FC(imports_const)) {
  ------------------
  |  |   60|  4.62k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.62k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 8, False: 4.61k]
  |  |  ------------------
  ------------------
  381|      8|		zend_hash_destroy(FC(imports_const));
  ------------------
  |  |   60|      8|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      8|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  382|      8|		efree(FC(imports_const));
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  383|      8|		FC(imports_const) = NULL;
  ------------------
  |  |   60|      8|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      8|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  384|      8|	}
  385|       |
  386|  4.62k|	zend_hash_clean(&FC(seen_symbols));
  ------------------
  |  |   60|  4.62k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.62k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  387|  4.62k|}
zend_compile.c:zend_modifier_token_to_string:
  871|     13|{
  872|     13|	switch (token) {
  873|      1|		case T_PUBLIC:
  ------------------
  |  Branch (873:3): [True: 1, False: 12]
  ------------------
  874|      1|			return "public";
  875|      1|		case T_PROTECTED:
  ------------------
  |  Branch (875:3): [True: 1, False: 12]
  ------------------
  876|      1|			return "protected";
  877|      0|		case T_PRIVATE:
  ------------------
  |  Branch (877:3): [True: 0, False: 13]
  ------------------
  878|      0|			return "private";
  879|      3|		case T_STATIC:
  ------------------
  |  Branch (879:3): [True: 3, False: 10]
  ------------------
  880|      3|			return "static";
  881|      1|		case T_FINAL:
  ------------------
  |  Branch (881:3): [True: 1, False: 12]
  ------------------
  882|      1|			return "final";
  883|      4|		case T_READONLY:
  ------------------
  |  Branch (883:3): [True: 4, False: 9]
  ------------------
  884|      4|			return "readonly";
  885|      2|		case T_ABSTRACT:
  ------------------
  |  Branch (885:3): [True: 2, False: 11]
  ------------------
  886|      2|			return "abstract";
  887|      1|		case T_PUBLIC_SET:
  ------------------
  |  Branch (887:3): [True: 1, False: 12]
  ------------------
  888|      1|			return "public(set)";
  889|      0|		case T_PROTECTED_SET:
  ------------------
  |  Branch (889:3): [True: 0, False: 13]
  ------------------
  890|      0|			return "protected(set)";
  891|      0|		case T_PRIVATE_SET:
  ------------------
  |  Branch (891:3): [True: 0, False: 13]
  ------------------
  892|      0|			return "private(set)";
  893|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (893:3): [True: 0, False: 13]
  |  Branch (893:12): [Folded, False: 0]
  |  Branch (893:12): [Folded, False: 0]
  ------------------
  894|     13|	}
  895|     13|}
zend_compile.c:do_bind_function_error:
 1283|      3|{
 1284|      3|	const zval *zv = zend_hash_find_known_hash(compile_time ? CG(function_table) : EG(function_table), lcname);
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
              	const zval *zv = zend_hash_find_known_hash(compile_time ? CG(function_table) : EG(function_table), lcname);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1284:45): [True: 3, False: 0]
  ------------------
 1285|      3|	int error_level = compile_time ? E_COMPILE_ERROR : E_ERROR;
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              	int error_level = compile_time ? E_COMPILE_ERROR : E_ERROR;
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (1285:20): [True: 3, False: 0]
  ------------------
 1286|      3|	const zend_function *old_function;
 1287|       |
 1288|      3|	ZEND_ASSERT(zv != NULL);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1288:2): [True: 0, False: 3]
  |  Branch (1288:2): [True: 3, False: 0]
  ------------------
 1289|      3|	old_function = Z_PTR_P(zv);
  ------------------
  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1290|      3|	if (old_function->type == ZEND_USER_FUNCTION
  ------------------
  |  Branch (1290:6): [True: 2, False: 1]
  ------------------
 1291|      2|		&& old_function->op_array.last > 0) {
  ------------------
  |  Branch (1291:6): [True: 2, False: 0]
  ------------------
 1292|      2|		zend_error_noreturn(error_level, "Cannot redeclare function %s() (previously declared in %s:%d)",
 1293|      2|					op_array ? ZSTR_VAL(op_array->function_name) : ZSTR_VAL(old_function->common.function_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					op_array ? ZSTR_VAL(op_array->function_name) : ZSTR_VAL(old_function->common.function_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1293:6): [True: 2, False: 0]
  ------------------
 1294|      2|					ZSTR_VAL(old_function->op_array.filename),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1295|      2|					old_function->op_array.line_start);
 1296|      2|	} else {
 1297|      1|		zend_error_noreturn(error_level, "Cannot redeclare function %s()",
 1298|      1|			op_array ? ZSTR_VAL(op_array->function_name) : ZSTR_VAL(old_function->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			op_array ? ZSTR_VAL(op_array->function_name) : ZSTR_VAL(old_function->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1298:4): [True: 1, False: 0]
  ------------------
 1299|      1|	}
 1300|      3|}
zend_compile.c:add_intersection_type:
 1421|     20|{
 1422|     20|	const zend_type *single_type;
 1423|     20|	zend_string *intersection_str = NULL;
 1424|       |
 1425|     62|	ZEND_TYPE_LIST_FOREACH(intersection_type_list, single_type) {
  ------------------
  |  |  196|     20|#define ZEND_TYPE_LIST_FOREACH(list, type_ptr) do { \
  |  |  197|     20|	const zend_type *_list = (list)->types; \
  |  |  198|     20|	const zend_type *_end = _list + (list)->num_types; \
  |  |  199|     62|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (199:9): [True: 42, False: 20]
  |  |  ------------------
  |  |  200|     42|		type_ptr = _list;
  ------------------
 1426|     62|		ZEND_ASSERT(!ZEND_TYPE_HAS_LIST(*single_type));
  ------------------
  |  |  112|     42|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1426:3): [True: 0, False: 42]
  |  Branch (1426:3): [True: 42, False: 0]
  ------------------
 1427|     62|		ZEND_ASSERT(ZEND_TYPE_HAS_NAME(*single_type));
  ------------------
  |  |  112|     42|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1427:3): [True: 0, False: 42]
  |  Branch (1427:3): [True: 42, False: 0]
  ------------------
 1428|       |
 1429|     42|		intersection_str = add_type_string(intersection_str, ZEND_TYPE_NAME(*single_type), /* is_intersection */ true);
  ------------------
  |  |  184|     42|	((zend_string *) (t).ptr)
  ------------------
 1430|     42|	} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|     42|	} \
  |  |  210|     20|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1431|       |
 1432|     20|	ZEND_ASSERT(intersection_str);
  ------------------
  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1432:2): [True: 0, False: 20]
  |  Branch (1432:2): [True: 20, False: 0]
  ------------------
 1433|       |
 1434|     20|	if (is_bracketed) {
  ------------------
  |  Branch (1434:6): [True: 5, False: 15]
  ------------------
 1435|      5|		zend_string *result = zend_string_concat3("(", 1, ZSTR_VAL(intersection_str), ZSTR_LEN(intersection_str), ")", 1);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_string *result = zend_string_concat3("(", 1, ZSTR_VAL(intersection_str), ZSTR_LEN(intersection_str), ")", 1);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1436|      5|		zend_string_release(intersection_str);
 1437|      5|		intersection_str = result;
 1438|      5|	}
 1439|       |	str = add_type_string(str, intersection_str, /* is_intersection */ false);
 1440|     20|	zend_string_release(intersection_str);
 1441|     20|	return str;
 1442|     20|}
zend_compile.c:resolve_class_name:
 1400|    139|static zend_string *resolve_class_name(zend_string *name, const zend_class_entry *scope) {
 1401|    139|	if (scope) {
  ------------------
  |  Branch (1401:6): [True: 81, False: 58]
  ------------------
 1402|     81|		if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  |  401|     81|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     81|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    162|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 8, False: 73]
  |  |  |  Branch (401:35): [True: 4, False: 4]
  |  |  ------------------
  ------------------
 1403|      4|			name = scope->name;
 1404|     77|		} else if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_PARENT)) && scope->parent) {
  ------------------
  |  |  401|    154|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     77|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    154|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 4, False: 73]
  |  |  |  Branch (401:35): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (1404:74): [True: 0, False: 0]
  ------------------
 1405|      0|			name = scope->parent->name;
 1406|      0|		}
 1407|     81|	}
 1408|       |
 1409|       |	/* The resolved name for anonymous classes contains null bytes. Cut off everything after the
 1410|       |	 * null byte here, to avoid larger parts of the type being omitted by printing code later. */
 1411|    139|	size_t len = strlen(ZSTR_VAL(name));
  ------------------
  |  |   67|    139|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1412|    139|	if (len != ZSTR_LEN(name)) {
  ------------------
  |  |   68|    139|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1412:6): [True: 0, False: 139]
  ------------------
 1413|      0|		return zend_string_init(ZSTR_VAL(name), len, 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1414|      0|	}
 1415|    139|	return zend_string_copy(name);
 1416|    139|}
zend_compile.c:add_type_string:
 1382|    936|static zend_string *add_type_string(zend_string *type, zend_string *new_type, bool is_intersection) {
 1383|    936|	zend_string *result;
 1384|    936|	if (type == NULL) {
  ------------------
  |  Branch (1384:6): [True: 829, False: 107]
  ------------------
 1385|    829|		return zend_string_copy(new_type);
 1386|    829|	}
 1387|       |
 1388|    107|	if (is_intersection) {
  ------------------
  |  Branch (1388:6): [True: 22, False: 85]
  ------------------
 1389|     22|		result = zend_string_concat3(ZSTR_VAL(type), ZSTR_LEN(type),
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		result = zend_string_concat3(ZSTR_VAL(type), ZSTR_LEN(type),
  ------------------
  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1390|     22|			"&", 1, ZSTR_VAL(new_type), ZSTR_LEN(new_type));
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			"&", 1, ZSTR_VAL(new_type), ZSTR_LEN(new_type));
  ------------------
  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1391|     22|		zend_string_release(type);
 1392|     85|	} else {
 1393|     85|		result = zend_string_concat3(
 1394|     85|			ZSTR_VAL(type), ZSTR_LEN(type), "|", 1, ZSTR_VAL(new_type), ZSTR_LEN(new_type));
  ------------------
  |  |   67|     85|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(type), ZSTR_LEN(type), "|", 1, ZSTR_VAL(new_type), ZSTR_LEN(new_type));
  ------------------
  |  |   68|     85|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			ZSTR_VAL(type), ZSTR_LEN(type), "|", 1, ZSTR_VAL(new_type), ZSTR_LEN(new_type));
  ------------------
  |  |   67|     85|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(type), ZSTR_LEN(type), "|", 1, ZSTR_VAL(new_type), ZSTR_LEN(new_type));
  ------------------
  |  |   68|     85|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1395|     85|		zend_string_release(type);
 1396|     85|	}
 1397|    107|	return result;
 1398|    936|}
zend_compile.c:zend_emit_op:
 2305|  33.8k|{
 2306|  33.8k|	zend_op *opline = get_next_op();
 2307|  33.8k|	opline->opcode = opcode;
 2308|       |
 2309|  33.8k|	if (op1 != NULL) {
  ------------------
  |  Branch (2309:6): [True: 20.7k, False: 13.1k]
  ------------------
 2310|  20.7k|		SET_NODE(opline->op1, op1);
  ------------------
  |  |   42|  20.7k|#define SET_NODE(target, src) do { \
  |  |   43|  20.7k|		target ## _type = (src)->op_type; \
  |  |   44|  20.7k|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  20.7k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 11.4k, False: 9.30k]
  |  |  ------------------
  |  |   45|  11.4k|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|  11.4k|		} else { \
  |  |   47|  9.30k|			target = (src)->u.op; \
  |  |   48|  9.30k|		} \
  |  |   49|  20.7k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 20.7k]
  |  |  ------------------
  ------------------
 2311|  20.7k|	}
 2312|       |
 2313|  33.8k|	if (op2 != NULL) {
  ------------------
  |  Branch (2313:6): [True: 5.44k, False: 28.4k]
  ------------------
 2314|  5.44k|		SET_NODE(opline->op2, op2);
  ------------------
  |  |   42|  5.44k|#define SET_NODE(target, src) do { \
  |  |   43|  5.44k|		target ## _type = (src)->op_type; \
  |  |   44|  5.44k|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  5.44k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 4.20k, False: 1.24k]
  |  |  ------------------
  |  |   45|  4.20k|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|  4.20k|		} else { \
  |  |   47|  1.24k|			target = (src)->u.op; \
  |  |   48|  1.24k|		} \
  |  |   49|  5.44k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 5.44k]
  |  |  ------------------
  ------------------
 2315|  5.44k|	}
 2316|       |
 2317|  33.8k|	if (result) {
  ------------------
  |  Branch (2317:6): [True: 8.06k, False: 25.8k]
  ------------------
 2318|  8.06k|		zend_make_var_result(result, opline);
 2319|  8.06k|	}
 2320|  33.8k|	return opline;
 2321|  33.8k|}
zend_compile.c:get_next_op:
  151|  48.1k|{
  152|  48.1k|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|  48.1k|# define CG(v) (compiler_globals.v)
  ------------------
  153|  48.1k|	uint32_t next_op_num = op_array->last++;
  154|  48.1k|	zend_op *next_op;
  155|       |
  156|  48.1k|	if (UNEXPECTED(next_op_num >= CG(context).opcodes_size)) {
  ------------------
  |  |  457|  48.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 48.1k]
  |  |  ------------------
  ------------------
  157|      4|		CG(context).opcodes_size *= 4;
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
  158|      4|		op_array->opcodes = erealloc(op_array->opcodes, CG(context).opcodes_size * sizeof(zend_op));
  ------------------
  |  |  158|      4|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|      4|	}
  160|       |
  161|  48.1k|	next_op = &(op_array->opcodes[next_op_num]);
  162|       |
  163|  48.1k|	init_op(next_op);
  164|       |
  165|  48.1k|	return next_op;
  166|  48.1k|}
zend_compile.c:init_op:
  131|  50.0k|{
  132|  50.0k|	MAKE_NOP(op);
  ------------------
  |  |   40|  50.0k|#define MAKE_NOP(opline) do { \
  |  |   41|  50.0k|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|  50.0k|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|  50.0k|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|  50.0k|#define SET_UNUSED(op) do { \
  |  |  |  |   36|  50.0k|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|  50.0k|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|  50.0k|	op.num = (uint32_t) -1; \
  |  |  |  |   38|  50.0k|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 50.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|  50.0k|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|  50.0k|#define SET_UNUSED(op) do { \
  |  |  |  |   36|  50.0k|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|  50.0k|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|  50.0k|	op.num = (uint32_t) -1; \
  |  |  |  |   38|  50.0k|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 50.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|  50.0k|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|  50.0k|#define SET_UNUSED(op) do { \
  |  |  |  |   36|  50.0k|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|  50.0k|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|  50.0k|	op.num = (uint32_t) -1; \
  |  |  |  |   38|  50.0k|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 50.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|  50.0k|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 50.0k]
  |  |  ------------------
  ------------------
  133|  50.0k|	op->extended_value = 0;
  134|  50.0k|	op->lineno = CG(zend_lineno);
  ------------------
  |  |   35|  50.0k|# define CG(v) (compiler_globals.v)
  ------------------
  135|       |#ifdef ZEND_VERIFY_TYPE_INFERENCE
  136|       |	op->op1_use_type = 0;
  137|       |	op->op2_use_type = 0;
  138|       |	op->result_use_type = 0;
  139|       |	op->op1_def_type = 0;
  140|       |	op->op2_def_type = 0;
  141|       |	op->result_def_type = 0;
  142|       |#endif
  143|  50.0k|}
zend_compile.c:zend_add_literal:
  589|  30.3k|{
  590|  30.3k|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|  30.3k|# define CG(v) (compiler_globals.v)
  ------------------
  591|  30.3k|	uint32_t i = op_array->last_literal;
  592|  30.3k|	op_array->last_literal++;
  593|  30.3k|	if (i >= CG(context).literals_size) {
  ------------------
  |  |   35|  30.3k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (593:6): [True: 6.07k, False: 24.2k]
  ------------------
  594|  12.1k|		while (i >= CG(context).literals_size) {
  ------------------
  |  |   35|  12.1k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (594:10): [True: 6.07k, False: 6.07k]
  ------------------
  595|  6.07k|			CG(context).literals_size += 16; /* FIXME */
  ------------------
  |  |   35|  6.07k|# define CG(v) (compiler_globals.v)
  ------------------
  596|  6.07k|		}
  597|       |		op_array->literals = (zval*)erealloc(op_array->literals, CG(context).literals_size * sizeof(zval));
  ------------------
  |  |  158|  6.07k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  6.07k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.07k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  6.07k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.07k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  598|  6.07k|	}
  599|  30.3k|	zend_insert_literal(op_array, zv, i);
  600|  30.3k|	return i;
  601|  30.3k|}
zend_compile.c:zend_insert_literal:
  575|  30.3k|{
  576|  30.3k|	zval *lit = CT_CONSTANT_EX(op_array, literal_position);
  ------------------
  |  |  817|  30.3k|	((op_array)->literals + (num))
  ------------------
  577|  30.3k|	if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|  30.3k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  30.3k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|  30.3k|#define IS_STRING					6
  ------------------
  |  Branch (577:6): [True: 20.1k, False: 10.2k]
  ------------------
  578|  20.1k|		zval_make_interned_string(zv);
  579|  20.1k|	}
  580|  30.3k|	ZVAL_COPY_VALUE(lit, zv);
  ------------------
  |  | 1416|  30.3k|	do {												\
  |  | 1417|  30.3k|		zval *_z1 = (z);								\
  |  | 1418|  30.3k|		const zval *_z2 = (v);							\
  |  | 1419|  30.3k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  30.3k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  30.3k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  30.3k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  30.3k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  30.3k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  30.3k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  30.3k|	do {												\
  |  |  |  | 1408|  30.3k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  30.3k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  30.3k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  30.3k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  30.3k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  30.3k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  30.3k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 30.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  30.3k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 30.3k]
  |  |  ------------------
  ------------------
  581|  30.3k|	Z_EXTRA_P(lit) = 0;
  ------------------
  |  |  705|  30.3k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|  30.3k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
  582|  30.3k|}
zend_compile.c:zend_make_var_result:
 2289|  9.91k|{
 2290|  9.91k|	opline->result_type = IS_VAR;
  ------------------
  |  |  866|  9.91k|#define IS_VAR		(1<<2)
  ------------------
 2291|  9.91k|	opline->result.var = get_temporary_variable();
 2292|  9.91k|	GET_NODE(result, opline->result);
  ------------------
  |  |   51|  9.91k|#define GET_NODE(target, src) do { \
  |  |   52|  9.91k|		(target)->op_type = src ## _type; \
  |  |   53|  9.91k|		if ((target)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  9.91k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (53:7): [True: 0, False: 9.91k]
  |  |  ------------------
  |  |   54|      0|			ZVAL_COPY_VALUE(&(target)->u.constant, CT_CONSTANT(src)); \
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|  9.91k|		} else { \
  |  |   56|  9.91k|			(target)->u.op = src; \
  |  |   57|  9.91k|		} \
  |  |   58|  9.91k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (58:11): [Folded, False: 9.91k]
  |  |  ------------------
  ------------------
 2293|  9.91k|}
zend_compile.c:get_temporary_variable:
  534|  20.8k|{
  535|  20.8k|	return (uint32_t)CG(active_op_array)->T++;
  ------------------
  |  |   35|  20.8k|# define CG(v) (compiler_globals.v)
  ------------------
  536|  20.8k|}
zend_compile.c:zend_emit_return_type_check:
 2647|    380|{
 2648|    380|	zend_type type = return_info->type;
 2649|    380|	if (ZEND_TYPE_IS_SET(type)) {
  ------------------
  |  |  152|    380|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    380|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 380, False: 0]
  |  |  ------------------
  ------------------
 2650|    380|		zend_op *opline;
 2651|       |
 2652|       |		/* `return ...;` is illegal in a void function (but `return;` isn't) */
 2653|    380|		if (ZEND_TYPE_CONTAINS_CODE(type, IS_VOID)) {
  ------------------
  |  |  273|    380|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 93, False: 287]
  |  |  ------------------
  ------------------
 2654|     93|			if (expr) {
  ------------------
  |  Branch (2654:8): [True: 2, False: 91]
  ------------------
 2655|      2|				if (expr->op_type == IS_CONST && Z_TYPE(expr->u.constant) == IS_NULL) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              				if (expr->op_type == IS_CONST && Z_TYPE(expr->u.constant) == IS_NULL) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (expr->op_type == IS_CONST && Z_TYPE(expr->u.constant) == IS_NULL) {
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (2655:9): [True: 2, False: 0]
  |  Branch (2655:38): [True: 1, False: 1]
  ------------------
 2656|      1|					zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2657|      1|						"A void %s must not return a value "
 2658|      1|						"(did you mean \"return;\" instead of \"return null;\"?)",
 2659|      1|						CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2659:7): [True: 0, False: 1]
  ------------------
 2660|      1|				} else {
 2661|      1|					zend_error_noreturn(E_COMPILE_ERROR, "A void %s must not return a value",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2662|      1|					CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2662:6): [True: 1, False: 0]
  ------------------
 2663|      1|				}
 2664|      2|			}
 2665|       |			/* we don't need run-time check */
 2666|     91|			return;
 2667|     93|		}
 2668|       |
 2669|       |		/* `return` is illegal in a never-returning function */
 2670|    287|		if (ZEND_TYPE_CONTAINS_CODE(type, IS_NEVER)) {
  ------------------
  |  |  273|    287|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 2, False: 285]
  |  |  ------------------
  ------------------
 2671|       |			/* Implicit case handled separately using VERIFY_NEVER_TYPE opcode. */
 2672|      2|			ZEND_ASSERT(!implicit);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2672:4): [True: 0, False: 2]
  |  Branch (2672:4): [True: 2, False: 0]
  ------------------
 2673|      2|			zend_error_noreturn(E_COMPILE_ERROR, "A never-returning %s must not return",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2674|      2|				CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2674:5): [True: 1, False: 1]
  ------------------
 2675|      2|		}
 2676|       |
 2677|    285|		if (!expr && !implicit) {
  ------------------
  |  Branch (2677:7): [True: 195, False: 90]
  |  Branch (2677:16): [True: 2, False: 193]
  ------------------
 2678|      2|			if (ZEND_TYPE_ALLOW_NULL(type)) {
  ------------------
  |  |  276|      2|	(((t).type_mask & _ZEND_TYPE_NULLABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  149|      2|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  ------------------
  |  |  |  Branch (276:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2679|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2680|      1|					"A %s with return type must return a value "
 2681|      1|					"(did you mean \"return null;\" instead of \"return;\"?)",
 2682|      1|					CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2682:6): [True: 0, False: 1]
  ------------------
 2683|      1|			} else {
 2684|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2685|      1|					"A %s with return type must return a value",
 2686|      1|					CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2686:6): [True: 0, False: 1]
  ------------------
 2687|      1|			}
 2688|      2|		}
 2689|       |
 2690|    283|		if (expr && ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY) {
  ------------------
  |  |  264|     90|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     90|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              		if (expr && ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY) {
  ------------------
  |  |   34|     90|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|     90|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|     90|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|     90|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     90|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|     90|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|     90|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|     90|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|     90|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|     90|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|     90|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|     90|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     90|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|     90|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     90|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|     90|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     90|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|     90|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|     90|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2690:7): [True: 90, False: 193]
  |  Branch (2690:15): [True: 3, False: 87]
  ------------------
 2691|       |			/* we don't need run-time check for mixed return type */
 2692|      3|			return;
 2693|      3|		}
 2694|       |
 2695|    280|		if (expr && expr->op_type == IS_CONST && ZEND_TYPE_CONTAINS_CODE(type, Z_TYPE(expr->u.constant))) {
  ------------------
  |  |  864|    367|#define IS_CONST	(1<<0)
  ------------------
              		if (expr && expr->op_type == IS_CONST && ZEND_TYPE_CONTAINS_CODE(type, Z_TYPE(expr->u.constant))) {
  ------------------
  |  |  273|     33|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 25, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (2695:7): [True: 87, False: 193]
  |  Branch (2695:15): [True: 33, False: 54]
  ------------------
 2696|       |			/* we don't need run-time check */
 2697|     25|			return;
 2698|     25|		}
 2699|       |
 2700|    255|		opline = zend_emit_op(NULL, ZEND_VERIFY_RETURN_TYPE, expr, NULL);
  ------------------
  |  |  246|    255|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
 2701|    255|		if (expr && expr->op_type == IS_CONST) {
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2701:7): [True: 62, False: 193]
  |  Branch (2701:15): [True: 8, False: 54]
  ------------------
 2702|      8|			opline->result_type = expr->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
 2703|      8|			opline->result.var = expr->u.op.var = get_temporary_variable();
 2704|      8|		}
 2705|    255|	}
 2706|    380|}
zend_compile.c:zend_compile_const_expr:
11876|  1.83k|{
11877|  1.83k|	const const_expr_context *ctx = context;
11878|  1.83k|	zend_ast *ast = *ast_ptr;
11879|  1.83k|	if (ast == NULL || ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11879:6): [True: 121, False: 1.71k]
  |  Branch (11879:21): [True: 1.18k, False: 530]
  ------------------
11880|  1.30k|		return;
11881|  1.30k|	}
11882|       |
11883|    530|	if (!zend_is_allowed_in_const_expr(ast->kind)) {
  ------------------
  |  Branch (11883:6): [True: 1, False: 529]
  ------------------
11884|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Constant expression contains invalid operations");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11885|      1|	}
11886|       |
11887|    529|	switch (ast->kind) {
  ------------------
  |  Branch (11887:10): [True: 216, False: 313]
  ------------------
11888|     52|		case ZEND_AST_CLASS_CONST:
  ------------------
  |  Branch (11888:3): [True: 52, False: 477]
  ------------------
11889|     52|			zend_compile_const_expr_class_const(ast_ptr);
11890|     52|			break;
11891|      3|		case ZEND_AST_CLASS_NAME:
  ------------------
  |  Branch (11891:3): [True: 3, False: 526]
  ------------------
11892|      3|			zend_compile_const_expr_class_name(ast_ptr);
11893|      3|			break;
11894|     97|		case ZEND_AST_CONST:
  ------------------
  |  Branch (11894:3): [True: 97, False: 432]
  ------------------
11895|     97|			zend_compile_const_expr_const(ast_ptr);
11896|     97|			break;
11897|      0|		case ZEND_AST_MAGIC_CONST:
  ------------------
  |  Branch (11897:3): [True: 0, False: 529]
  ------------------
11898|      0|			zend_compile_const_expr_magic_const(ast_ptr);
11899|      0|			break;
11900|      1|		case ZEND_AST_CAST:
  ------------------
  |  Branch (11900:3): [True: 1, False: 528]
  ------------------
11901|      1|			if (ast->attr == IS_OBJECT && !ctx->allow_dynamic) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (11901:8): [True: 1, False: 0]
  |  Branch (11901:34): [True: 1, False: 0]
  ------------------
11902|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11903|      1|					"Object casts are not supported in this context");
11904|      1|			}
11905|      0|			break;
11906|     16|		case ZEND_AST_NEW:
  ------------------
  |  Branch (11906:3): [True: 16, False: 513]
  ------------------
11907|     16|			if (!ctx->allow_dynamic) {
  ------------------
  |  Branch (11907:8): [True: 0, False: 16]
  ------------------
11908|      0|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11909|      0|					"New expressions are not supported in this context");
11910|      0|			}
11911|     16|			zend_compile_const_expr_new(ast_ptr);
11912|     16|			break;
11913|     15|		case ZEND_AST_ARG_LIST:
  ------------------
  |  Branch (11913:3): [True: 15, False: 514]
  ------------------
11914|     15|			zend_compile_const_expr_args(ast_ptr);
11915|     15|			break;
11916|      5|		case ZEND_AST_CLOSURE:
  ------------------
  |  Branch (11916:3): [True: 5, False: 524]
  ------------------
11917|      5|			zend_compile_const_expr_closure(ast_ptr);
11918|       |			/* Return, because we do not want to traverse the children. */
11919|      5|			return;
11920|     23|		case ZEND_AST_CALL:
  ------------------
  |  Branch (11920:3): [True: 23, False: 506]
  ------------------
11921|     27|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (11921:3): [True: 4, False: 525]
  ------------------
11922|     27|			zend_compile_const_expr_fcc(ast_ptr);
11923|     27|			break;
11924|    529|	}
11925|       |
11926|    508|	zend_ast_apply(ast, zend_compile_const_expr, context);
11927|    508|}
zend_compile.c:zend_is_allowed_in_const_expr:
11615|    530|{
11616|    530|	return kind == ZEND_AST_ZVAL || kind == ZEND_AST_BINARY_OP
  ------------------
  |  Branch (11616:9): [True: 0, False: 530]
  |  Branch (11616:34): [True: 29, False: 501]
  ------------------
11617|    501|		|| kind == ZEND_AST_GREATER || kind == ZEND_AST_GREATER_EQUAL
  ------------------
  |  Branch (11617:6): [True: 3, False: 498]
  |  Branch (11617:34): [True: 0, False: 498]
  ------------------
11618|    498|		|| kind == ZEND_AST_AND || kind == ZEND_AST_OR
  ------------------
  |  Branch (11618:6): [True: 4, False: 494]
  |  Branch (11618:30): [True: 3, False: 491]
  ------------------
11619|    491|		|| kind == ZEND_AST_UNARY_OP
  ------------------
  |  Branch (11619:6): [True: 3, False: 488]
  ------------------
11620|    488|		|| kind == ZEND_AST_UNARY_PLUS || kind == ZEND_AST_UNARY_MINUS
  ------------------
  |  Branch (11620:6): [True: 5, False: 483]
  |  Branch (11620:37): [True: 7, False: 476]
  ------------------
11621|    476|		|| kind == ZEND_AST_CAST
  ------------------
  |  Branch (11621:6): [True: 1, False: 475]
  ------------------
11622|    475|		|| kind == ZEND_AST_CONDITIONAL || kind == ZEND_AST_DIM
  ------------------
  |  Branch (11622:6): [True: 0, False: 475]
  |  Branch (11622:38): [True: 12, False: 463]
  ------------------
11623|    463|		|| kind == ZEND_AST_ARRAY || kind == ZEND_AST_ARRAY_ELEM
  ------------------
  |  Branch (11623:6): [True: 35, False: 428]
  |  Branch (11623:32): [True: 47, False: 381]
  ------------------
11624|    381|		|| kind == ZEND_AST_UNPACK
  ------------------
  |  Branch (11624:6): [True: 6, False: 375]
  ------------------
11625|    375|		|| kind == ZEND_AST_CONST || kind == ZEND_AST_CLASS_CONST
  ------------------
  |  Branch (11625:6): [True: 97, False: 278]
  |  Branch (11625:32): [True: 52, False: 226]
  ------------------
11626|    226|		|| kind == ZEND_AST_CLASS_NAME
  ------------------
  |  Branch (11626:6): [True: 3, False: 223]
  ------------------
11627|    223|		|| kind == ZEND_AST_MAGIC_CONST || kind == ZEND_AST_COALESCE
  ------------------
  |  Branch (11627:6): [True: 0, False: 223]
  |  Branch (11627:38): [True: 0, False: 223]
  ------------------
11628|    223|		|| kind == ZEND_AST_CONST_ENUM_INIT
  ------------------
  |  Branch (11628:6): [True: 123, False: 100]
  ------------------
11629|    100|		|| kind == ZEND_AST_NEW || kind == ZEND_AST_ARG_LIST
  ------------------
  |  Branch (11629:6): [True: 16, False: 84]
  |  Branch (11629:30): [True: 15, False: 69]
  ------------------
11630|     69|		|| kind == ZEND_AST_NAMED_ARG
  ------------------
  |  Branch (11630:6): [True: 0, False: 69]
  ------------------
11631|     69|		|| kind == ZEND_AST_PROP || kind == ZEND_AST_NULLSAFE_PROP
  ------------------
  |  Branch (11631:6): [True: 11, False: 58]
  |  Branch (11631:31): [True: 5, False: 53]
  ------------------
11632|     53|		|| kind == ZEND_AST_CLOSURE
  ------------------
  |  Branch (11632:6): [True: 5, False: 48]
  ------------------
11633|     48|		|| kind == ZEND_AST_CALL || kind == ZEND_AST_STATIC_CALL || kind == ZEND_AST_CALLABLE_CONVERT;
  ------------------
  |  Branch (11633:6): [True: 23, False: 25]
  |  Branch (11633:31): [True: 4, False: 21]
  |  Branch (11633:63): [True: 20, False: 1]
  ------------------
11634|    530|}
zend_compile.c:zend_compile_const_expr_class_const:
11638|     52|{
11639|     52|	zend_ast *ast = *ast_ptr;
11640|     52|	zend_ast *class_ast = ast->child[0];
11641|     52|	zend_string *class_name;
11642|     52|	int fetch_type;
11643|       |
11644|     52|	if (class_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11644:6): [True: 2, False: 50]
  ------------------
11645|      2|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11646|      2|			"Dynamic class names are not allowed in compile-time class constant references");
11647|      2|	}
11648|     50|	if (Z_TYPE_P(zend_ast_get_zval(class_ast)) != IS_STRING) {
  ------------------
  |  |  669|     50|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     50|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zend_ast_get_zval(class_ast)) != IS_STRING) {
  ------------------
  |  |  612|     50|#define IS_STRING					6
  ------------------
  |  Branch (11648:6): [True: 1, False: 49]
  ------------------
11649|      1|		zend_throw_error(NULL, "Class name must be a valid object or a string");
11650|      1|	}
11651|       |
11652|     50|	class_name = zend_ast_get_str(class_ast);
11653|     50|	fetch_type = zend_get_class_fetch_type(class_name);
11654|       |
11655|     50|	if (ZEND_FETCH_CLASS_STATIC == fetch_type) {
  ------------------
  |  | 1045|     50|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (11655:6): [True: 1, False: 49]
  ------------------
11656|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11657|      1|			"\"static::\" is not allowed in compile-time constants");
11658|      1|	}
11659|       |
11660|     49|	if (ZEND_FETCH_CLASS_DEFAULT == fetch_type) {
  ------------------
  |  | 1042|     49|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (11660:6): [True: 31, False: 18]
  ------------------
11661|     31|		zend_string *tmp = zend_resolve_class_name_ast(class_ast);
11662|       |
11663|     31|		zend_string_release_ex(class_name, 0);
11664|     31|		if (tmp != class_name) {
  ------------------
  |  Branch (11664:7): [True: 1, False: 30]
  ------------------
11665|      1|			zval *zv = zend_ast_get_zval(class_ast);
11666|      1|			ZVAL_STR(zv, tmp);
  ------------------
  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      1|		zval *__z = (z);						\
  |  | 1090|      1|		zend_string *__s = (s);					\
  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      1|		/* interned strings support */			\
  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 1]
  |  |  ------------------
  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11667|      1|			class_ast->attr = ZEND_NAME_FQ;
  ------------------
  |  | 1060|      1|#define ZEND_NAME_FQ       0
  ------------------
11668|      1|		}
11669|     31|	}
11670|       |
11671|     49|	ast->attr |= ZEND_FETCH_CLASS_EXCEPTION;
  ------------------
  |  | 1052|     49|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
11672|     49|}
zend_compile.c:zend_resolve_class_name_ast:
 1225|  2.96k|{
 1226|  2.96k|	const zval *class_name = zend_ast_get_zval(ast);
 1227|  2.96k|	if (Z_TYPE_P(class_name) != IS_STRING) {
  ------------------
  |  |  669|  2.96k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.96k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(class_name) != IS_STRING) {
  ------------------
  |  |  612|  2.96k|#define IS_STRING					6
  ------------------
  |  Branch (1227:6): [True: 3, False: 2.96k]
  ------------------
 1228|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Illegal class name");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1229|      3|	}
 1230|  2.96k|	return zend_resolve_class_name(Z_STR_P(class_name), ast->attr);
  ------------------
  |  |  982|  2.96k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  2.96k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1231|  2.96k|}
zend_compile.c:zend_resolve_class_name:
 1162|  3.46k|{
 1163|  3.46k|	const char *compound;
 1164|       |
 1165|  3.46k|	if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type(name)) {
  ------------------
  |  | 1042|  3.46k|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (1165:6): [True: 24, False: 3.44k]
  ------------------
 1166|     24|		if (type == ZEND_NAME_FQ) {
  ------------------
  |  | 1060|     24|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (1166:7): [True: 1, False: 23]
  ------------------
 1167|      1|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1168|      1|				"'\\%s' is an invalid class name", ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1169|      1|		}
 1170|     23|		if (type == ZEND_NAME_RELATIVE) {
  ------------------
  |  | 1062|     23|#define ZEND_NAME_RELATIVE 2
  ------------------
  |  Branch (1170:7): [True: 0, False: 23]
  ------------------
 1171|      0|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1172|      0|				"'namespace\\%s' is an invalid class name", ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1173|      0|		}
 1174|     23|		ZEND_ASSERT(type == ZEND_NAME_NOT_FQ);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1174:3): [True: 0, False: 23]
  |  Branch (1174:3): [True: 23, False: 0]
  ------------------
 1175|     23|		return zend_string_copy(name);
 1176|     23|	}
 1177|       |
 1178|  3.44k|	if (type == ZEND_NAME_RELATIVE) {
  ------------------
  |  | 1062|  3.44k|#define ZEND_NAME_RELATIVE 2
  ------------------
  |  Branch (1178:6): [True: 8, False: 3.43k]
  ------------------
 1179|      8|		return zend_prefix_with_ns(name);
 1180|      8|	}
 1181|       |
 1182|  3.43k|	if (type == ZEND_NAME_FQ) {
  ------------------
  |  | 1060|  3.43k|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (1182:6): [True: 143, False: 3.29k]
  ------------------
 1183|    143|		if (ZSTR_VAL(name)[0] == '\\') {
  ------------------
  |  |   67|    143|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1183:7): [True: 0, False: 143]
  ------------------
 1184|       |			/* Remove \ prefix (only relevant if this is a string rather than a label) */
 1185|      0|			name = zend_string_init(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			name = zend_string_init(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1186|      0|			if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type(name)) {
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (1186:8): [True: 0, False: 0]
  ------------------
 1187|      0|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1188|      0|					"'\\%s' is an invalid class name", ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1189|      0|			}
 1190|      0|			return name;
 1191|      0|		}
 1192|       |
 1193|    143|		return zend_string_copy(name);
 1194|    143|	}
 1195|       |
 1196|  3.29k|	if (FC(imports)) {
  ------------------
  |  |   60|  3.29k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  3.29k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 19, False: 3.27k]
  |  |  ------------------
  ------------------
 1197|     19|		compound = memchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		compound = memchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1198|     19|		if (compound) {
  ------------------
  |  Branch (1198:7): [True: 1, False: 18]
  ------------------
 1199|       |			/* If the first part of a qualified name is an alias, substitute it. */
 1200|      1|			size_t len = compound - ZSTR_VAL(name);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1201|      1|			const zend_string *import_name =
 1202|      1|				zend_hash_str_find_ptr_lc(FC(imports), ZSTR_VAL(name), len);
  ------------------
  |  |   60|      1|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              				zend_hash_str_find_ptr_lc(FC(imports), ZSTR_VAL(name), len);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1203|       |
 1204|      1|			if (import_name) {
  ------------------
  |  Branch (1204:8): [True: 1, False: 0]
  ------------------
 1205|      1|				return zend_concat_names(
 1206|      1|					ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              					ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1207|      1|			}
 1208|     18|		} else {
 1209|       |			/* If an unqualified name is an alias, replace it. */
 1210|     18|			zend_string *import_name
 1211|     18|				= zend_hash_find_ptr_lc(FC(imports), name);
  ------------------
  |  |   60|     18|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     18|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1212|       |
 1213|     18|			if (import_name) {
  ------------------
  |  Branch (1213:8): [True: 10, False: 8]
  ------------------
 1214|     10|				return zend_string_copy(import_name);
 1215|     10|			}
 1216|     18|		}
 1217|     19|	}
 1218|       |
 1219|       |	/* If not fully qualified and not an alias, prepend the current namespace */
 1220|  3.28k|	return zend_prefix_with_ns(name);
 1221|  3.29k|}
zend_compile.c:zend_prefix_with_ns:
 1082|  11.3k|static zend_string *zend_prefix_with_ns(zend_string *name) {
 1083|  11.3k|	if (FC(current_namespace)) {
  ------------------
  |  |   60|  11.3k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  11.3k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 393, False: 10.9k]
  |  |  ------------------
  ------------------
 1084|    393|		const zend_string *ns = FC(current_namespace);
  ------------------
  |  |   60|    393|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    393|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1085|    393|		return zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   67|    393|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   68|    393|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		return zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   67|    393|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   68|    393|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1086|  10.9k|	} else {
 1087|  10.9k|		return zend_string_copy(name);
 1088|  10.9k|	}
 1089|  11.3k|}
zend_compile.c:zend_concat_names:
 1078|    409|static zend_string *zend_concat_names(const char *name1, size_t name1_len, const char *name2, size_t name2_len) {
 1079|    409|	return zend_string_concat3(name1, name1_len, "\\", 1, name2, name2_len);
 1080|    409|}
zend_compile.c:zend_compile_const_expr_class_name:
11676|      3|{
11677|      3|	zend_ast *ast = *ast_ptr;
11678|      3|	zend_ast *class_ast = ast->child[0];
11679|      3|	if (class_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11679:6): [True: 1, False: 2]
  ------------------
11680|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11681|      1|			"(expression)::class cannot be used in constant expressions");
11682|      1|	}
11683|       |
11684|      2|	zend_string *class_name = zend_ast_get_str(class_ast);
11685|      2|	uint32_t fetch_type = zend_get_class_fetch_type(class_name);
11686|       |
11687|      2|	switch (fetch_type) {
11688|      1|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      1|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (11688:3): [True: 1, False: 1]
  ------------------
11689|      1|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      1|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (11689:3): [True: 0, False: 2]
  ------------------
11690|       |			/* For the const-eval representation store the fetch type instead of the name. */
11691|      1|			zend_string_release(class_name);
11692|      1|			ast->child[0] = NULL;
11693|      1|			ast->attr = fetch_type;
11694|      1|			return;
11695|      1|		case ZEND_FETCH_CLASS_STATIC:
  ------------------
  |  | 1045|      1|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (11695:3): [True: 1, False: 1]
  ------------------
11696|      1|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11697|      1|				"static::class cannot be used for compile-time class name resolution");
11698|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11698:3): [True: 0, False: 2]
  |  Branch (11698:12): [Folded, False: 0]
  |  Branch (11698:12): [Folded, False: 0]
  ------------------
11699|      2|	}
11700|      2|}
zend_compile.c:zend_compile_const_expr_const:
11703|     97|{
11704|     97|	zend_ast *ast = *ast_ptr;
11705|     97|	zend_ast *name_ast = ast->child[0];
11706|     97|	zend_string *orig_name = zend_ast_get_str(name_ast);
11707|     97|	bool is_fully_qualified;
11708|     97|	zval result;
11709|     97|	zend_string *resolved_name;
11710|       |
11711|     97|	CG(zend_lineno) = zend_ast_get_lineno(ast);
  ------------------
  |  |   35|     97|# define CG(v) (compiler_globals.v)
  ------------------
11712|       |
11713|     97|	resolved_name = zend_resolve_const_name(
11714|     97|		orig_name, name_ast->attr, &is_fully_qualified);
11715|       |
11716|     97|	if (zend_try_ct_eval_const(&result, resolved_name, is_fully_qualified)) {
  ------------------
  |  Branch (11716:6): [True: 0, False: 97]
  ------------------
11717|      0|		zend_string_release_ex(resolved_name, 0);
11718|      0|		zend_ast_destroy(ast);
11719|      0|		*ast_ptr = zend_ast_create_zval(&result);
11720|      0|		return;
11721|      0|	}
11722|       |
11723|     97|	zend_ast_destroy(ast);
11724|     97|	*ast_ptr = zend_ast_create_constant(resolved_name,
11725|     97|		!is_fully_qualified && FC(current_namespace) ? IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE : 0);
  ------------------
  |  |   60|     86|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     86|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 6, False: 80]
  |  |  ------------------
  ------------------
              		!is_fully_qualified && FC(current_namespace) ? IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE : 0);
  ------------------
  |  | 1149|      6|#define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800
  ------------------
  |  Branch (11725:3): [True: 86, False: 11]
  ------------------
11726|     97|}
zend_compile.c:zend_resolve_const_name:
 1156|  1.50k|{
 1157|  1.50k|	return zend_resolve_non_class_name(
 1158|  1.50k|		name, type, is_fully_qualified, true, FC(imports_const));
  ------------------
  |  |   60|  1.50k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  1.50k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1159|  1.50k|}
zend_compile.c:zend_resolve_non_class_name:
 1094|  5.79k|) {
 1095|  5.79k|	const char *compound;
 1096|  5.79k|	*is_fully_qualified = false;
 1097|       |
 1098|  5.79k|	if (ZSTR_VAL(name)[0] == '\\') {
  ------------------
  |  |   67|  5.79k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1098:6): [True: 1, False: 5.79k]
  ------------------
 1099|       |		/* Remove \ prefix (only relevant if this is a string rather than a label) */
 1100|      1|		*is_fully_qualified = true;
 1101|      1|		return zend_string_init(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_string_init(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1102|      1|	}
 1103|       |
 1104|  5.79k|	if (type == ZEND_NAME_FQ) {
  ------------------
  |  | 1060|  5.79k|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (1104:6): [True: 114, False: 5.68k]
  ------------------
 1105|    114|		*is_fully_qualified = true;
 1106|    114|		return zend_string_copy(name);
 1107|    114|	}
 1108|       |
 1109|  5.68k|	if (type == ZEND_NAME_RELATIVE) {
  ------------------
  |  | 1062|  5.68k|#define ZEND_NAME_RELATIVE 2
  ------------------
  |  Branch (1109:6): [True: 15, False: 5.66k]
  ------------------
 1110|     15|		*is_fully_qualified = true;
 1111|     15|		return zend_prefix_with_ns(name);
 1112|     15|	}
 1113|       |
 1114|  5.66k|	if (current_import_sub) {
  ------------------
  |  Branch (1114:6): [True: 11, False: 5.65k]
  ------------------
 1115|       |		/* If an unqualified name is a function/const alias, replace it. */
 1116|     11|		zend_string *import_name;
 1117|     11|		if (case_sensitive) {
  ------------------
  |  Branch (1117:7): [True: 6, False: 5]
  ------------------
 1118|      6|			import_name = zend_hash_find_ptr(current_import_sub, name);
 1119|      6|		} else {
 1120|      5|			import_name = zend_hash_find_ptr_lc(current_import_sub, name);
 1121|      5|		}
 1122|       |
 1123|     11|		if (import_name) {
  ------------------
  |  Branch (1123:7): [True: 8, False: 3]
  ------------------
 1124|      8|			*is_fully_qualified = true;
 1125|      8|			return zend_string_copy(import_name);
 1126|      8|		}
 1127|     11|	}
 1128|       |
 1129|  5.66k|	compound = memchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   67|  5.66k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	compound = memchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   68|  5.66k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1130|  5.66k|	if (compound) {
  ------------------
  |  Branch (1130:6): [True: 26, False: 5.63k]
  ------------------
 1131|     26|		*is_fully_qualified = true;
 1132|     26|	}
 1133|       |
 1134|  5.66k|	if (compound && FC(imports)) {
  ------------------
  |  |   60|     26|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     26|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 11, False: 15]
  |  |  ------------------
  ------------------
  |  Branch (1134:6): [True: 26, False: 5.63k]
  ------------------
 1135|       |		/* If the first part of a qualified name is an alias, substitute it. */
 1136|     11|		size_t len = compound - ZSTR_VAL(name);
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1137|     11|		const zend_string *import_name = zend_hash_str_find_ptr_lc(FC(imports), ZSTR_VAL(name), len);
  ------------------
  |  |   60|     11|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     11|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              		const zend_string *import_name = zend_hash_str_find_ptr_lc(FC(imports), ZSTR_VAL(name), len);
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1138|       |
 1139|     11|		if (import_name) {
  ------------------
  |  Branch (1139:7): [True: 9, False: 2]
  ------------------
 1140|      9|			return zend_concat_names(
 1141|      9|				ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   68|      9|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              				ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(import_name), ZSTR_LEN(import_name), ZSTR_VAL(name) + len + 1, ZSTR_LEN(name) - len - 1);
  ------------------
  |  |   68|      9|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1142|      9|		}
 1143|     11|	}
 1144|       |
 1145|  5.65k|	return zend_prefix_with_ns(name);
 1146|  5.66k|}
zend_compile.c:zend_try_ct_eval_const:
 1687|  1.50k|{
 1688|       |	/* Substitute true, false and null (including unqualified usage in namespaces)
 1689|       |	 * before looking up the possibly namespaced name. */
 1690|  1.50k|	const char *lookup_name = ZSTR_VAL(name);
  ------------------
  |  |   67|  1.50k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1691|  1.50k|	size_t lookup_len = ZSTR_LEN(name);
  ------------------
  |  |   68|  1.50k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1692|       |
 1693|  1.50k|	if (!is_fully_qualified) {
  ------------------
  |  Branch (1693:6): [True: 1.43k, False: 70]
  ------------------
 1694|  1.43k|		zend_get_unqualified_name(name, &lookup_name, &lookup_len);
 1695|  1.43k|	}
 1696|       |
 1697|  1.50k|	zend_constant *c;
 1698|  1.50k|	if ((c = zend_get_special_const(lookup_name, lookup_len))) {
  ------------------
  |  Branch (1698:6): [True: 438, False: 1.06k]
  ------------------
 1699|    438|		ZVAL_COPY_VALUE(zv, &c->value);
  ------------------
  |  | 1416|    438|	do {												\
  |  | 1417|    438|		zval *_z1 = (z);								\
  |  | 1418|    438|		const zval *_z2 = (v);							\
  |  | 1419|    438|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    438|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    438|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    438|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    438|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    438|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    438|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    438|	do {												\
  |  |  |  | 1408|    438|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    438|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    438|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    438|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    438|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    438|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    438|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 438]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    438|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 438]
  |  |  ------------------
  ------------------
 1700|    438|		return true;
 1701|    438|	}
 1702|  1.06k|	c = zend_hash_find_ptr(EG(zend_constants), name);
  ------------------
  |  |   45|  1.06k|# define EG(v) (executor_globals.v)
  ------------------
 1703|  1.06k|	if (c && can_ct_eval_const(c)) {
  ------------------
  |  Branch (1703:6): [True: 192, False: 874]
  |  Branch (1703:11): [True: 66, False: 126]
  ------------------
 1704|     66|		ZVAL_COPY_OR_DUP(zv, &c->value);
  ------------------
  |  | 1457|     66|	do {																\
  |  | 1458|     66|		zval *_z1 = (z);												\
  |  | 1459|     66|		const zval *_z2 = (v);											\
  |  | 1460|     66|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     66|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     66|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     66|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     66|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     66|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     66|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     66|	do {												\
  |  |  |  | 1408|     66|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     66|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     66|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     66|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     66|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     66|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     66|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 66]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     66|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     66|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     66|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 65]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      1|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      1|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 1, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      1|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      1|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      1|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      1|		}																\
  |  | 1472|     66|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 66]
  |  |  ------------------
  ------------------
 1705|     66|		return true;
 1706|     66|	}
 1707|  1.00k|	return false;
 1708|  1.06k|}
zend_compile.c:can_ct_eval_const:
 1665|    192|static bool can_ct_eval_const(const zend_constant *c) {
 1666|    192|	if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
  ------------------
  |  |   51|    192|	(Z_CONSTANT_FLAGS((c)->value) & 0xff)
  |  |  ------------------
  |  |  |  |  701|    192|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
  ------------------
  |  |   27|    192|#define CONST_DEPRECATED		(1<<2)				/* Deprecated */
  ------------------
  |  Branch (1666:6): [True: 16, False: 176]
  ------------------
 1667|     16|		return false;
 1668|     16|	}
 1669|    176|	if ((ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT)
  ------------------
  |  |   51|    176|	(Z_CONSTANT_FLAGS((c)->value) & 0xff)
  |  |  ------------------
  |  |  |  |  701|    176|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if ((ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT)
  ------------------
  |  |   25|    176|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  |  Branch (1669:6): [True: 175, False: 1]
  ------------------
 1670|    175|			&& !(CG(compiler_options) & ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION)
  ------------------
  |  |   35|    175|# define CG(v) (compiler_globals.v)
  ------------------
              			&& !(CG(compiler_options) & ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION)
  ------------------
  |  | 1283|    175|#define ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION	(1<<8)
  ------------------
  |  Branch (1670:7): [True: 65, False: 110]
  ------------------
 1671|     65|			&& !((ZEND_CONSTANT_FLAGS(c) & CONST_NO_FILE_CACHE)
  ------------------
  |  |   51|     65|	(Z_CONSTANT_FLAGS((c)->value) & 0xff)
  |  |  ------------------
  |  |  |  |  701|     65|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			&& !((ZEND_CONSTANT_FLAGS(c) & CONST_NO_FILE_CACHE)
  ------------------
  |  |   26|     65|#define CONST_NO_FILE_CACHE		(1<<1)				/* Can't be saved in file cache */
  ------------------
  |  Branch (1671:9): [True: 0, False: 65]
  ------------------
 1672|     65|				&& (CG(compiler_options) & ZEND_COMPILE_WITH_FILE_CACHE))) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              				&& (CG(compiler_options) & ZEND_COMPILE_WITH_FILE_CACHE))) {
  ------------------
  |  | 1295|      0|#define ZEND_COMPILE_WITH_FILE_CACHE			(1<<12)
  ------------------
  |  Branch (1672:8): [True: 0, False: 0]
  ------------------
 1673|     65|		return true;
 1674|     65|	}
 1675|    111|	if (Z_TYPE(c->value) < IS_ARRAY
  ------------------
  |  |  668|    111|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(c->value) < IS_ARRAY
  ------------------
  |  |  613|    222|#define IS_ARRAY					7
  ------------------
  |  Branch (1675:6): [True: 111, False: 0]
  ------------------
 1676|    111|			&& !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)) {
  ------------------
  |  |   35|    111|# define CG(v) (compiler_globals.v)
  ------------------
              			&& !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)) {
  ------------------
  |  | 1280|    111|#define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION   (1<<6)
  ------------------
  |  Branch (1676:7): [True: 1, False: 110]
  ------------------
 1677|      1|		return 1;
 1678|    110|	} else if (Z_TYPE(c->value) == IS_ARRAY
  ------------------
  |  |  668|    110|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	} else if (Z_TYPE(c->value) == IS_ARRAY
  ------------------
  |  |  613|    220|#define IS_ARRAY					7
  ------------------
  |  Branch (1678:13): [True: 0, False: 110]
  ------------------
 1679|      0|			&& !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			&& !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)
  ------------------
  |  | 1280|      0|#define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION   (1<<6)
  ------------------
  |  Branch (1679:7): [True: 0, False: 0]
  ------------------
 1680|      0|			&& array_is_const(Z_ARR(c->value))) {
  ------------------
  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  |  Branch (1680:7): [True: 0, False: 0]
  ------------------
 1681|      0|		return 1;
 1682|      0|	}
 1683|    110|	return false;
 1684|    111|}
zend_compile.c:array_is_const:
 1660|      4|{
 1661|      4|	uint32_t max_checks = 50;
 1662|      4|	return array_is_const_ex(array, &max_checks);
 1663|      4|}
zend_compile.c:array_is_const_ex:
 1637|    154|{
 1638|    154|	if (zend_hash_num_elements(array) > *max_checks) {
  ------------------
  |  Branch (1638:6): [True: 3, False: 151]
  ------------------
 1639|      3|		return false;
 1640|      3|	}
 1641|    151|	*max_checks -= zend_hash_num_elements(array);
 1642|       |
 1643|    151|	zval *element;
 1644|    457|	ZEND_HASH_FOREACH_VAL(array, element) {
  ------------------
  |  | 1117|    153|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|    151|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|    151|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|    151|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|    151|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|    151|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    151|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|    151|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|    151|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|    151|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|    154|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      3|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 153, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1034|    153|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    153|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 153]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|    153|	_val = _z;
  ------------------
 1645|    457|		if (Z_TYPE_P(element) < IS_ARRAY) {
  ------------------
  |  |  669|    153|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    153|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(element) < IS_ARRAY) {
  ------------------
  |  |  613|    153|#define IS_ARRAY					7
  ------------------
  |  Branch (1645:7): [True: 3, False: 150]
  ------------------
 1646|      3|			continue;
 1647|    150|		} else if (Z_TYPE_P(element) == IS_ARRAY) {
  ------------------
  |  |  669|    150|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    150|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(element) == IS_ARRAY) {
  ------------------
  |  |  613|    150|#define IS_ARRAY					7
  ------------------
  |  Branch (1647:14): [True: 150, False: 0]
  ------------------
 1648|    150|			if (!array_is_const_ex(array, max_checks)) {
  ------------------
  |  Branch (1648:8): [True: 150, False: 0]
  ------------------
 1649|    150|				return false;
 1650|    150|			}
 1651|    150|		} else {
 1652|      0|			return false;
 1653|      0|		}
 1654|    457|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    153|		} \
  |  | 1102|    151|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1655|       |
 1656|      1|	return true;
 1657|    151|}
zend_compile.c:zend_compile_const_expr_new:
11766|     16|{
11767|     16|	zend_ast *class_ast = (*ast_ptr)->child[0];
11768|     16|	zend_compile_const_expr_class_reference(class_ast);
11769|       |
11770|     16|	const zend_ast *args_ast = (*ast_ptr)->child[1];
11771|     16|	if (args_ast->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (11771:6): [True: 1, False: 15]
  ------------------
11772|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot create Closure for new expression");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11773|      1|	}
11774|     16|}
zend_compile.c:zend_compile_const_expr_class_reference:
11742|     20|{
11743|     20|	if (class_ast->kind == ZEND_AST_CLASS) {
  ------------------
  |  Branch (11743:6): [True: 0, False: 20]
  ------------------
11744|      0|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11745|      0|			"Cannot use anonymous class in constant expression");
11746|      0|	}
11747|     20|	if (class_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11747:6): [True: 0, False: 20]
  ------------------
11748|      0|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11749|      0|			"Cannot use dynamic class name in constant expression");
11750|      0|	}
11751|       |
11752|     20|	zend_string *class_name = zend_resolve_class_name_ast(class_ast);
11753|     20|	int fetch_type = zend_get_class_fetch_type(class_name);
11754|     20|	if (ZEND_FETCH_CLASS_STATIC == fetch_type) {
  ------------------
  |  | 1045|     20|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (11754:6): [True: 0, False: 20]
  ------------------
11755|      0|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11756|      0|			"\"static\" is not allowed in compile-time constants");
11757|      0|	}
11758|       |
11759|     20|	zval *class_ast_zv = zend_ast_get_zval(class_ast);
11760|     20|	zval_ptr_dtor_nogc(class_ast_zv);
11761|     20|	ZVAL_STR(class_ast_zv, class_name);
  ------------------
  |  | 1088|     20|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     20|		zval *__z = (z);						\
  |  | 1090|     20|		zend_string *__s = (s);					\
  |  | 1091|     20|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     20|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     20|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     20|		/* interned strings support */			\
  |  | 1093|     20|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 7, False: 13]
  |  |  ------------------
  |  | 1094|     20|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      7|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     20|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     33|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     13|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     13|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     13|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
11762|     20|	class_ast->attr = fetch_type << ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT;
  ------------------
  |  | 1065|     20|#define ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT 2
  ------------------
11763|     20|}
zend_compile.c:zend_compile_const_expr_args:
11849|     15|{
11850|     15|	zend_ast_list *list = zend_ast_get_list(*ast_ptr);
11851|     15|	bool uses_named_args = false;
11852|     15|	for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (11852:23): [True: 1, False: 14]
  ------------------
11853|      1|		const zend_ast *arg = list->child[i];
11854|      1|		if (arg->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (11854:7): [True: 1, False: 0]
  ------------------
11855|      1|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11856|      1|				"Argument unpacking in constant expressions is not supported");
11857|      1|		}
11858|      0|		if (arg->kind == ZEND_AST_NAMED_ARG) {
  ------------------
  |  Branch (11858:7): [True: 0, False: 0]
  ------------------
11859|      0|			uses_named_args = true;
11860|      0|		} else if (uses_named_args) {
  ------------------
  |  Branch (11860:14): [True: 0, False: 0]
  ------------------
11861|      0|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11862|      0|				"Cannot use positional argument after named argument");
11863|      0|		}
11864|      0|	}
11865|     14|	if (uses_named_args) {
  ------------------
  |  Branch (11865:6): [True: 0, False: 14]
  ------------------
11866|      0|		list->attr = 1;
11867|      0|	}
11868|     14|}
zend_compile.c:zend_compile_const_expr_closure:
11777|      5|{
11778|      5|	zend_ast_decl *closure_ast = (zend_ast_decl *) *ast_ptr;
11779|      5|	const zend_ast *uses_ast = closure_ast->child[1];
11780|      5|	if (!(closure_ast->flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      5|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (11780:6): [True: 1, False: 4]
  ------------------
11781|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11782|      1|			"Closures in constant expressions must be static");
11783|      1|	}
11784|      4|	if (uses_ast) {
  ------------------
  |  Branch (11784:6): [True: 1, False: 3]
  ------------------
11785|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11786|      1|			"Cannot use(...) variables in constant expression");
11787|      1|	}
11788|       |
11789|      3|	znode node;
11790|      3|	zend_op_array *op = zend_compile_func_decl(&node, (zend_ast*)closure_ast, FUNC_DECL_LEVEL_CONSTEXPR);
11791|       |
11792|      3|	zend_ast_destroy(*ast_ptr);
11793|      3|	*ast_ptr = zend_ast_create_op_array(op);
11794|      3|}
zend_compile.c:zend_compile_const_expr_fcc:
11797|     27|{
11798|     27|	zend_ast **args_ast;
11799|     27|	switch ((*ast_ptr)->kind) {
11800|     23|		case ZEND_AST_CALL:
  ------------------
  |  Branch (11800:3): [True: 23, False: 4]
  ------------------
11801|     23|			args_ast = &(*ast_ptr)->child[1];
11802|     23|			break;
11803|      4|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (11803:3): [True: 4, False: 23]
  ------------------
11804|      4|			args_ast = &(*ast_ptr)->child[2];
11805|      4|			break;
11806|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11806:3): [True: 0, False: 27]
  |  Branch (11806:12): [Folded, False: 0]
  |  Branch (11806:12): [Folded, False: 0]
  ------------------
11807|     27|	}
11808|     27|	if ((*args_ast)->kind != ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (11808:6): [True: 3, False: 24]
  ------------------
11809|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Constant expression contains invalid operations");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11810|      3|	}
11811|     24|	ZEND_MAP_PTR_NEW(((zend_ast_fcc *)*args_ast)->fptr);
  ------------------
  |  |   41|     24|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|     24|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|     24|	ptr ## __ptr
  |  |  ------------------
  |  |   43|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
11812|       |
11813|     24|	switch ((*ast_ptr)->kind) {
11814|     20|		case ZEND_AST_CALL: {
  ------------------
  |  Branch (11814:3): [True: 20, False: 4]
  ------------------
11815|     20|			zend_ast *name_ast = (*ast_ptr)->child[0];
11816|     20|			if (name_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11816:8): [True: 3, False: 17]
  ------------------
11817|      3|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot use dynamic function name in constant expression");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11818|      3|			}
11819|     17|			zval *name_ast_zv = zend_ast_get_zval(name_ast);
11820|     17|			if (Z_TYPE_P(name_ast_zv) != IS_STRING) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(name_ast_zv) != IS_STRING) {
  ------------------
  |  |  612|     17|#define IS_STRING					6
  ------------------
  |  Branch (11820:8): [True: 1, False: 16]
  ------------------
11821|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Illegal function name");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11822|      1|			}
11823|     17|			bool is_fully_qualified;
11824|     16|			zend_string *name = zend_resolve_function_name(Z_STR_P(name_ast_zv), name_ast->attr, &is_fully_qualified);
  ------------------
  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11825|     16|			zval_ptr_dtor_nogc(name_ast_zv);
11826|     16|			ZVAL_STR(name_ast_zv, name);
  ------------------
  |  | 1088|     16|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     16|		zval *__z = (z);						\
  |  | 1090|     16|		zend_string *__s = (s);					\
  |  | 1091|     16|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     16|		/* interned strings support */			\
  |  | 1093|     16|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 16]
  |  |  ------------------
  |  | 1094|     16|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     16|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     32|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     16|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     16|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     16|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
11827|     16|			if (is_fully_qualified) {
  ------------------
  |  Branch (11827:8): [True: 5, False: 11]
  ------------------
11828|      5|				name_ast->attr = ZEND_NAME_FQ;
  ------------------
  |  | 1060|      5|#define ZEND_NAME_FQ       0
  ------------------
11829|      5|			}
11830|     16|			break;
11831|     17|		}
11832|      4|		case ZEND_AST_STATIC_CALL: {
  ------------------
  |  Branch (11832:3): [True: 4, False: 20]
  ------------------
11833|      4|			zend_ast *class_ast = (*ast_ptr)->child[0];
11834|      4|			zend_compile_const_expr_class_reference(class_ast);
11835|      4|			zend_ast *method_ast = (*ast_ptr)->child[1];
11836|      4|			if (method_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11836:8): [True: 0, False: 4]
  ------------------
11837|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot use dynamic method name in constant expression");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11838|      0|			}
11839|      4|			if (Z_TYPE_P(zend_ast_get_zval(method_ast)) != IS_STRING) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zend_ast_get_zval(method_ast)) != IS_STRING) {
  ------------------
  |  |  612|      4|#define IS_STRING					6
  ------------------
  |  Branch (11839:8): [True: 0, False: 4]
  ------------------
11840|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Illegal method name");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11841|      0|			}
11842|      4|			break;
11843|      4|		}
11844|      4|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11844:3): [True: 0, False: 24]
  |  Branch (11844:12): [Folded, False: 0]
  |  Branch (11844:12): [Folded, False: 0]
  ------------------
11845|     24|	}
11846|     24|}
zend_compile.c:zend_resolve_function_name:
 1150|  4.29k|{
 1151|  4.29k|	return zend_resolve_non_class_name(
 1152|  4.29k|		name, type, is_fully_qualified, false, FC(imports_function));
  ------------------
  |  |   60|  4.29k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.29k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1153|  4.29k|}
zend_compile.c:zend_compile_func_decl:
 8933|  1.50k|{
 8934|       |	return zend_compile_func_decl_ex(result, ast, level, /* property_info */ NULL, (zend_property_hook_kind)-1);
 8935|  1.50k|}
zend_compile.c:zend_compile_func_decl_ex:
 8735|  1.64k|) {
 8736|  1.64k|	zend_ast_decl *decl = (zend_ast_decl *) ast;
 8737|  1.64k|	zend_ast *params_ast = decl->child[0];
 8738|  1.64k|	zend_ast *uses_ast = decl->child[1];
 8739|  1.64k|	zend_ast *stmt_ast = decl->child[2];
 8740|  1.64k|	zend_ast *return_type_ast = decl->child[3];
 8741|  1.64k|	bool is_method = decl->kind == ZEND_AST_METHOD;
 8742|  1.64k|	zend_string *lcname = NULL;
 8743|  1.64k|	bool is_hook = decl->kind == ZEND_AST_PROPERTY_HOOK;
 8744|       |
 8745|  1.64k|	zend_class_entry *orig_class_entry = CG(active_class_entry);
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8746|  1.64k|	zend_op_array *orig_op_array = CG(active_op_array);
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8747|  1.64k|	zend_op_array *op_array = zend_arena_alloc(&CG(arena), sizeof(zend_op_array));
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8748|  1.64k|	zend_oparray_context orig_oparray_context;
 8749|  1.64k|	closure_info info;
 8750|       |
 8751|  1.64k|	init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE);
  ------------------
  |  |  952|  1.64k|#define INITIAL_OP_ARRAY_SIZE 64
  ------------------
 8752|       |
 8753|  1.64k|	if (CG(compiler_options) & ZEND_COMPILE_PRELOAD) {
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_PRELOAD) {
  ------------------
  |  | 1304|  1.64k|#define ZEND_COMPILE_PRELOAD                    (1<<15)
  ------------------
  |  Branch (8753:6): [True: 0, False: 1.64k]
  ------------------
 8754|      0|		op_array->fn_flags |= ZEND_ACC_PRELOADED;
  ------------------
  |  |  250|      0|#define ZEND_ACC_PRELOADED               (1 << 10) /*  X  |  X  |     |     */
  ------------------
 8755|      0|	}
 8756|       |
 8757|  1.64k|	op_array->fn_flags |= (orig_op_array->fn_flags & ZEND_ACC_STRICT_TYPES);
  ------------------
  |  |  413|  1.64k|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  ------------------
 8758|  1.64k|	op_array->fn_flags |= decl->flags;
 8759|  1.64k|	op_array->line_start = decl->start_lineno;
 8760|  1.64k|	op_array->line_end = decl->end_lineno;
 8761|  1.64k|	if (decl->doc_comment) {
  ------------------
  |  Branch (8761:6): [True: 0, False: 1.64k]
  ------------------
 8762|      0|		op_array->doc_comment = zend_string_copy(decl->doc_comment);
 8763|      0|	}
 8764|       |
 8765|  1.64k|	if (decl->kind == ZEND_AST_CLOSURE || decl->kind == ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (8765:6): [True: 246, False: 1.40k]
  |  Branch (8765:40): [True: 32, False: 1.36k]
  ------------------
 8766|    278|		op_array->fn_flags |= ZEND_ACC_CLOSURE;
  ------------------
  |  |  384|    278|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
 8767|    278|	}
 8768|       |
 8769|  1.64k|	if (is_hook) {
  ------------------
  |  Branch (8769:6): [True: 143, False: 1.50k]
  ------------------
 8770|    143|		zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    143|# define CG(v) (compiler_globals.v)
  ------------------
 8771|    143|		op_array->scope = ce;
 8772|    143|		op_array->function_name = zend_string_copy(decl->name);
 8773|  1.50k|	} else if (is_method) {
  ------------------
  |  Branch (8773:13): [True: 670, False: 834]
  ------------------
 8774|    670|		bool has_body = stmt_ast != NULL;
 8775|    670|		lcname = zend_begin_method_decl(op_array, decl->name, has_body);
 8776|    834|	} else {
 8777|    834|		lcname = zend_begin_func_decl(result, op_array, decl, level);
 8778|    834|		if (decl->kind == ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (8778:7): [True: 32, False: 802]
  ------------------
 8779|     32|			find_implicit_binds(&info, params_ast, stmt_ast);
 8780|     32|			compile_implicit_lexical_binds(&info, result, op_array);
 8781|    802|		} else if (uses_ast) {
  ------------------
  |  Branch (8781:14): [True: 35, False: 767]
  ------------------
 8782|     35|			zend_compile_closure_binding(result, op_array, uses_ast);
 8783|     35|		}
 8784|    834|	}
 8785|       |
 8786|  1.64k|	CG(active_op_array) = op_array;
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8787|       |
 8788|  1.64k|	zend_oparray_context_begin(&orig_oparray_context, op_array);
 8789|  1.64k|	CG(context).active_property_info_name = property_info_name;
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8790|  1.64k|	CG(context).active_property_hook_kind = hook_kind;
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8791|       |
 8792|  1.64k|	if (decl->child[4]) {
  ------------------
  |  Branch (8792:6): [True: 41, False: 1.60k]
  ------------------
 8793|     41|		int target = ZEND_ATTRIBUTE_TARGET_FUNCTION;
  ------------------
  |  |   26|     41|#define ZEND_ATTRIBUTE_TARGET_FUNCTION		(1<<1)
  ------------------
 8794|       |
 8795|     41|		if (is_method || is_hook) {
  ------------------
  |  Branch (8795:7): [True: 15, False: 26]
  |  Branch (8795:20): [True: 5, False: 21]
  ------------------
 8796|     20|			target = ZEND_ATTRIBUTE_TARGET_METHOD;
  ------------------
  |  |   27|     20|#define ZEND_ATTRIBUTE_TARGET_METHOD		(1<<2)
  ------------------
 8797|     20|		}
 8798|       |
 8799|     41|		zend_compile_attributes(&op_array->attributes, decl->child[4], 0, target, 0);
 8800|       |
 8801|     41|		const zend_attribute *override_attribute = zend_get_attribute_str(
 8802|     41|			op_array->attributes,
 8803|     41|			"override",
 8804|     41|			sizeof("override")-1
 8805|     41|		);
 8806|       |
 8807|     41|		if (override_attribute) {
  ------------------
  |  Branch (8807:7): [True: 13, False: 28]
  ------------------
 8808|     13|			op_array->fn_flags |= ZEND_ACC_OVERRIDE;
  ------------------
  |  |  261|     13|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
 8809|     13|		}
 8810|       |
 8811|     41|		const zend_attribute *deprecated_attribute = zend_get_attribute_str(
 8812|     41|			op_array->attributes,
 8813|     41|			"deprecated",
 8814|     41|			sizeof("deprecated")-1
 8815|     41|		);
 8816|       |
 8817|     41|		if (deprecated_attribute) {
  ------------------
  |  Branch (8817:7): [True: 9, False: 32]
  ------------------
 8818|      9|			op_array->fn_flags |= ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|      9|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
 8819|      9|		}
 8820|       |
 8821|       |		// ZEND_ACC_NODISCARD is added via an attribute validator
 8822|     41|	}
 8823|       |
 8824|       |	/* Do not leak the class scope into free standing functions, even if they are dynamically
 8825|       |	 * defined inside a class method. This is necessary for correct handling of magic constants.
 8826|       |	 * For example __CLASS__ should always be "" inside a free standing function. */
 8827|  1.64k|	if (decl->kind == ZEND_AST_FUNC_DECL) {
  ------------------
  |  Branch (8827:6): [True: 551, False: 1.09k]
  ------------------
 8828|    551|		CG(active_class_entry) = NULL;
  ------------------
  |  |   35|    551|# define CG(v) (compiler_globals.v)
  ------------------
 8829|    551|	}
 8830|       |
 8831|  1.64k|	if (level == FUNC_DECL_LEVEL_TOPLEVEL) {
  ------------------
  |  Branch (8831:6): [True: 546, False: 1.10k]
  ------------------
 8832|    546|		op_array->fn_flags |= ZEND_ACC_TOP_LEVEL;
  ------------------
  |  |  247|    546|#define ZEND_ACC_TOP_LEVEL               (1 <<  9) /*  X  |  X  |     |     */
  ------------------
 8833|    546|	}
 8834|       |
 8835|  1.64k|	{
 8836|       |		/* Push a separator to the loop variable stack */
 8837|  1.64k|		zend_loop_var dummy_var;
 8838|  1.64k|		dummy_var.opcode = ZEND_RETURN;
  ------------------
  |  |  185|  1.64k|#define ZEND_RETURN                          62
  ------------------
 8839|       |
 8840|  1.64k|		zend_stack_push(&CG(loop_var_stack), (void *) &dummy_var);
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8841|  1.64k|	}
 8842|       |
 8843|  1.64k|	zend_compile_params(params_ast, return_type_ast,
 8844|  1.64k|		is_method && zend_string_equals_literal(lcname, ZEND_TOSTRING_FUNC_NAME) ? IS_STRING : 0);
  ------------------
  |  |  407|    662|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 20, False: 642]
  |  |  ------------------
  ------------------
              		is_method && zend_string_equals_literal(lcname, ZEND_TOSTRING_FUNC_NAME) ? IS_STRING : 0);
  ------------------
  |  |  612|     20|#define IS_STRING					6
  ------------------
  |  Branch (8844:3): [True: 662, False: 985]
  ------------------
 8845|  1.64k|	if (CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) {
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) {
  ------------------
  |  |  387|  1.64k|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
  |  Branch (8845:6): [True: 107, False: 1.54k]
  ------------------
 8846|    107|		zend_mark_function_as_generator();
 8847|    107|		zend_emit_op(NULL, ZEND_GENERATOR_CREATE, NULL, NULL);
  ------------------
  |  |  261|    107|#define ZEND_GENERATOR_CREATE               139
  ------------------
 8848|    107|	}
 8849|  1.64k|	if (decl->kind == ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (8849:6): [True: 32, False: 1.61k]
  ------------------
 8850|     32|		zend_compile_implicit_closure_uses(&info);
 8851|     32|		zend_hash_destroy(&info.uses);
 8852|  1.61k|	} else if (uses_ast) {
  ------------------
  |  Branch (8852:13): [True: 32, False: 1.58k]
  ------------------
 8853|     32|		zend_compile_closure_uses(uses_ast);
 8854|     32|	}
 8855|       |
 8856|  1.64k|	if (ast->kind == ZEND_AST_ARROW_FUNC && decl->child[2]->kind != ZEND_AST_RETURN) {
  ------------------
  |  Branch (8856:6): [True: 32, False: 1.61k]
  |  Branch (8856:42): [True: 32, False: 0]
  ------------------
 8857|     32|		bool needs_return = true;
 8858|     32|		if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|     32|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (8858:7): [True: 0, False: 32]
  ------------------
 8859|      0|			const zend_arg_info *return_info = CG(active_op_array)->arg_info - 1;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 8860|      0|			needs_return = !ZEND_TYPE_CONTAINS_CODE(return_info->type, IS_NEVER);
  ------------------
  |  |  273|      0|	(((t).type_mask & (1u << (code))) != 0)
  ------------------
 8861|      0|		}
 8862|     32|		if (needs_return) {
  ------------------
  |  Branch (8862:7): [True: 32, False: 0]
  ------------------
 8863|     32|			stmt_ast = zend_ast_create(ZEND_AST_RETURN, stmt_ast);
  ------------------
  |  |  316|     32|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     32|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     32|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8864|     32|			decl->child[2] = stmt_ast;
 8865|     32|		}
 8866|     32|	}
 8867|       |
 8868|  1.64k|	if (op_array->fn_flags & ZEND_ACC_NODISCARD) {
  ------------------
  |  |  410|  1.64k|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  |  Branch (8868:6): [True: 7, False: 1.64k]
  ------------------
 8869|       |		/* ZEND_ACC_NODISCARD gets added by the attribute validator, but only
 8870|       |		 * if the method is not a hook; if it is a hook, then the validator
 8871|       |		 * will have returned an error message, even if the error message was
 8872|       |		 * delayed with #[\DelayedTargetValidation] that ZEND_ACC_NODISCARD
 8873|       |		 * flag should not have been added. */
 8874|      7|		ZEND_ASSERT(!is_hook);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (8874:3): [True: 0, False: 7]
  |  Branch (8874:3): [True: 7, False: 0]
  ------------------
 8875|       |
 8876|      7|		if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      7|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (8876:7): [True: 5, False: 2]
  ------------------
 8877|      5|			const zend_arg_info *return_info = CG(active_op_array)->arg_info - 1;
  ------------------
  |  |   35|      5|# define CG(v) (compiler_globals.v)
  ------------------
 8878|      5|			if (ZEND_TYPE_CONTAINS_CODE(return_info->type, IS_VOID)) {
  ------------------
  |  |  273|      5|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 8879|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8880|      1|					"A void %s does not return a value, but #[\\NoDiscard] requires a return value",
 8881|      1|					CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (8881:6): [True: 0, False: 1]
  ------------------
 8882|      1|			}
 8883|       |
 8884|      4|			if (ZEND_TYPE_CONTAINS_CODE(return_info->type, IS_NEVER)) {
  ------------------
  |  |  273|      4|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 1, False: 3]
  |  |  ------------------
  ------------------
 8885|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8886|      1|					"A never returning %s does not return a value, but #[\\NoDiscard] requires a return value",
 8887|      1|					CG(active_class_entry) != NULL ? "method" : "function");
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (8887:6): [True: 0, False: 1]
  ------------------
 8888|      1|			}
 8889|      4|		}
 8890|      7|	}
 8891|       |
 8892|  1.64k|	zend_compile_stmt(stmt_ast);
 8893|       |
 8894|  1.64k|	if (is_method) {
  ------------------
  |  Branch (8894:6): [True: 632, False: 1.01k]
  ------------------
 8895|    632|		CG(zend_lineno) = decl->start_lineno;
  ------------------
  |  |   35|    632|# define CG(v) (compiler_globals.v)
  ------------------
 8896|    632|		zend_check_magic_method_implementation(
 8897|    632|			CG(active_class_entry), (zend_function *) op_array, lcname, E_COMPILE_ERROR);
  ------------------
  |  |   35|    632|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(active_class_entry), (zend_function *) op_array, lcname, E_COMPILE_ERROR);
  ------------------
  |  |   28|    632|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8898|  1.01k|	} else if (level == FUNC_DECL_LEVEL_TOPLEVEL) {
  ------------------
  |  Branch (8898:13): [True: 465, False: 548]
  ------------------
 8899|       |		/* Only register the function after a successful compile */
 8900|    465|		if (UNEXPECTED(zend_hash_add_ptr(CG(function_table), lcname, op_array) == NULL)) {
  ------------------
  |  |  457|    465|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 462]
  |  |  ------------------
  ------------------
 8901|      3|			CG(zend_lineno) = decl->start_lineno;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
 8902|      3|			do_bind_function_error(lcname, op_array, true);
 8903|      3|		}
 8904|    465|	}
 8905|       |
 8906|       |	/* put the implicit return on the really last line */
 8907|  1.64k|	CG(zend_lineno) = decl->end_lineno;
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8908|       |
 8909|  1.64k|	zend_do_extended_stmt(NULL);
 8910|  1.64k|	zend_emit_final_return(false);
 8911|       |
 8912|  1.64k|	pass_two(CG(active_op_array));
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8913|  1.64k|	zend_oparray_context_end(&orig_oparray_context);
 8914|       |
 8915|       |	/* Pop the loop variable stack separator */
 8916|  1.64k|	zend_stack_del_top(&CG(loop_var_stack));
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8917|       |
 8918|  1.64k|	if (level == FUNC_DECL_LEVEL_TOPLEVEL) {
  ------------------
  |  Branch (8918:6): [True: 458, False: 1.18k]
  ------------------
 8919|    458|		zend_observer_function_declared_notify(op_array, lcname);
 8920|    458|	}
 8921|       |
 8922|  1.64k|	if (lcname != NULL) {
  ------------------
  |  Branch (8922:6): [True: 1.32k, False: 315]
  ------------------
 8923|  1.32k|		zend_string_release_ex(lcname, 0);
 8924|  1.32k|	}
 8925|       |
 8926|  1.64k|	CG(active_op_array) = orig_op_array;
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8927|  1.64k|	CG(active_class_entry) = orig_class_entry;
  ------------------
  |  |   35|  1.64k|# define CG(v) (compiler_globals.v)
  ------------------
 8928|       |
 8929|  1.64k|	return op_array;
 8930|  1.64k|}
zend_compile.c:zend_begin_method_decl:
 8541|    670|{
 8542|    670|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    670|# define CG(v) (compiler_globals.v)
  ------------------
 8543|    670|	bool in_interface = (ce->ce_flags & ZEND_ACC_INTERFACE) != 0;
  ------------------
  |  |  281|    670|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
 8544|    670|	uint32_t fn_flags = op_array->fn_flags;
 8545|       |
 8546|    670|	zend_string *lcname;
 8547|       |
 8548|    670|	if (fn_flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|    670|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (8548:6): [True: 0, False: 670]
  ------------------
 8549|      0|		zend_error(E_COMPILE_ERROR, "Cannot use 'readonly' as method modifier");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8550|      0|	}
 8551|       |
 8552|    670|	if ((fn_flags & ZEND_ACC_PRIVATE) && (fn_flags & ZEND_ACC_FINAL) && !zend_is_constructor(name)) {
  ------------------
  |  |  221|    670|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	if ((fn_flags & ZEND_ACC_PRIVATE) && (fn_flags & ZEND_ACC_FINAL) && !zend_is_constructor(name)) {
  ------------------
  |  |  230|     24|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (8552:6): [True: 24, False: 646]
  |  Branch (8552:39): [True: 0, False: 24]
  |  Branch (8552:70): [True: 0, False: 0]
  ------------------
 8553|      0|		zend_error(E_COMPILE_WARNING, "Private methods cannot be final as they are never overridden by other classes");
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
 8554|      0|	}
 8555|       |
 8556|    670|	if ((fn_flags & ZEND_ACC_ABSTRACT)
  ------------------
  |  |  233|    670|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (8556:6): [True: 32, False: 638]
  ------------------
 8557|     32|	 && !(ce->ce_flags & (ZEND_ACC_EXPLICIT_ABSTRACT_CLASS|ZEND_ACC_TRAIT))) {
  ------------------
  |  |  234|     32|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
              	 && !(ce->ce_flags & (ZEND_ACC_EXPLICIT_ABSTRACT_CLASS|ZEND_ACC_TRAIT))) {
  ------------------
  |  |  282|     32|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (8557:6): [True: 4, False: 28]
  ------------------
 8558|       |		// Don't say that the class should be declared abstract if it is
 8559|       |		// anonymous or an enum and can't be abstract
 8560|      4|		if (ce->ce_flags & ZEND_ACC_ANON_CLASS) {
  ------------------
  |  |  283|      4|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
  |  Branch (8560:7): [True: 1, False: 3]
  ------------------
 8561|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Anonymous class method %s() must not be abstract",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8562|      1|				ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8563|      3|		} else if (ce->ce_flags & (ZEND_ACC_ENUM|ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  284|      3|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
              		} else if (ce->ce_flags & (ZEND_ACC_ENUM|ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|      3|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (8563:14): [True: 2, False: 1]
  ------------------
 8564|      2|			zend_error_noreturn(E_COMPILE_ERROR, "%s method %s::%s() must not be abstract",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8565|      2|				zend_get_object_type_case(ce, true), ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_get_object_type_case(ce, true), ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8566|      2|		} else {
 8567|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Class %s declares abstract method %s() and must therefore be declared abstract",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8568|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8569|      1|		}
 8570|      4|	}
 8571|       |
 8572|    666|	if (in_interface) {
  ------------------
  |  Branch (8572:6): [True: 36, False: 630]
  ------------------
 8573|     36|		if (!(fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|     36|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (8573:7): [True: 0, False: 36]
  ------------------
 8574|      0|			zend_error_noreturn(E_COMPILE_ERROR, "Access type for interface method "
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8575|      0|				"%s::%s() must be public", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"%s::%s() must be public", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8576|      0|		}
 8577|     36|		if (fn_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     36|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (8577:7): [True: 1, False: 35]
  ------------------
 8578|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Interface method "
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8579|      1|				"%s::%s() must not be final", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"%s::%s() must not be final", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8580|      1|		}
 8581|     35|		op_array->fn_flags |= ZEND_ACC_ABSTRACT;
  ------------------
  |  |  233|     35|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
 8582|     35|	}
 8583|       |
 8584|    665|	if (op_array->fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|    665|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (8584:6): [True: 63, False: 602]
  ------------------
 8585|     63|		if ((op_array->fn_flags & ZEND_ACC_PRIVATE) && !(ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  221|     63|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		if ((op_array->fn_flags & ZEND_ACC_PRIVATE) && !(ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  282|      5|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (8585:7): [True: 5, False: 58]
  |  Branch (8585:50): [True: 1, False: 4]
  ------------------
 8586|      1|			zend_error_noreturn(E_COMPILE_ERROR, "%s function %s::%s() cannot be declared private",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8587|      1|				in_interface ? "Interface" : "Abstract", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				in_interface ? "Interface" : "Abstract", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (8587:5): [True: 0, False: 1]
  ------------------
 8588|      1|		}
 8589|       |
 8590|     62|		if (has_body) {
  ------------------
  |  Branch (8590:7): [True: 0, False: 62]
  ------------------
 8591|      0|			zend_error_noreturn(E_COMPILE_ERROR, "%s function %s::%s() cannot contain body",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8592|      0|				in_interface ? "Interface" : "Abstract", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				in_interface ? "Interface" : "Abstract", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (8592:5): [True: 0, False: 0]
  ------------------
 8593|      0|		}
 8594|       |
 8595|     62|		ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|     62|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 8596|    602|	} else if (!has_body) {
  ------------------
  |  Branch (8596:13): [True: 1, False: 601]
  ------------------
 8597|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Non-abstract method %s::%s() must contain body",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8598|      1|			ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8599|      1|	}
 8600|       |
 8601|    663|	op_array->scope = ce;
 8602|    663|	op_array->function_name = zend_string_copy(name);
 8603|       |
 8604|    663|	lcname = zend_string_tolower(name);
 8605|    663|	lcname = zend_new_interned_string(lcname);
 8606|       |
 8607|    663|	if (zend_hash_add_ptr(&ce->function_table, lcname, op_array) == NULL) {
  ------------------
  |  Branch (8607:6): [True: 1, False: 662]
  ------------------
 8608|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::%s()",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8609|      1|			ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8610|      1|	}
 8611|       |
 8612|    662|	zend_add_magic_method(ce, (zend_function *) op_array, lcname);
 8613|    662|	if (zend_string_equals_literal(lcname, ZEND_TOSTRING_FUNC_NAME)
  ------------------
  |  |  407|  1.32k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 20, False: 642]
  |  |  ------------------
  ------------------
 8614|     20|			&& !(ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  282|     20|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (8614:7): [True: 19, False: 1]
  ------------------
 8615|     19|		add_stringable_interface(ce);
 8616|     19|	}
 8617|       |
 8618|    662|	return lcname;
 8619|    663|}
zend_compile.c:zend_is_constructor:
 5553|    150|{
 5554|    150|	return zend_string_equals_literal_ci(name, ZEND_CONSTRUCTOR_FUNC_NAME);
  ------------------
  |  |  404|    150|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    150|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 28, False: 122]
  |  |  |  Branch (404:40): [True: 26, False: 2]
  |  |  ------------------
  ------------------
 5555|    150|}
zend_compile.c:add_stringable_interface:
 8522|     19|static void add_stringable_interface(zend_class_entry *ce) {
 8523|     20|	for (uint32_t i = 0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (8523:23): [True: 1, False: 19]
  ------------------
 8524|      1|		if (zend_string_equals_literal(ce->interface_names[i].lc_name, "stringable")) {
  ------------------
  |  |  407|      1|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8525|       |			/* Interface already explicitly implemented */
 8526|      0|			return;
 8527|      0|		}
 8528|      1|	}
 8529|       |
 8530|     19|	ce->num_interfaces++;
 8531|     19|	ce->interface_names =
 8532|     19|		erealloc(ce->interface_names, sizeof(zend_class_name) * ce->num_interfaces);
  ------------------
  |  |  158|     19|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     19|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     19|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     19|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     19|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8533|       |	// TODO: Add known interned strings instead?
 8534|     19|	ce->interface_names[ce->num_interfaces - 1].name =
 8535|     19|		ZSTR_INIT_LITERAL("Stringable", 0);
  ------------------
  |  |  141|     19|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 8536|     19|	ce->interface_names[ce->num_interfaces - 1].lc_name =
 8537|     19|		ZSTR_INIT_LITERAL("stringable", 0);
  ------------------
  |  |  141|     19|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 8538|     19|}
zend_compile.c:zend_begin_func_decl:
 8638|    834|{
 8639|    834|	zend_string *unqualified_name, *name, *lcname;
 8640|    834|	zend_op *opline;
 8641|       |
 8642|    834|	if (op_array->fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|    834|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (8642:6): [True: 278, False: 556]
  ------------------
 8643|    278|		zend_string *filename = op_array->filename;
 8644|    278|		uint32_t start_lineno = decl->start_lineno;
 8645|       |
 8646|    278|		zend_string *class = zend_empty_string;
 8647|    278|		zend_string *separator = zend_empty_string;
 8648|    278|		zend_string *function = filename;
 8649|    278|		const char *parens = "";
 8650|       |
 8651|    278|		if (CG(active_op_array) && CG(active_op_array)->function_name) {
  ------------------
  |  |   35|    556|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 278, False: 0]
  |  |  ------------------
  ------------------
              		if (CG(active_op_array) && CG(active_op_array)->function_name) {
  ------------------
  |  |   35|    278|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (8651:30): [True: 27, False: 251]
  ------------------
 8652|     27|			if (CG(active_op_array)->fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |   35|     27|# define CG(v) (compiler_globals.v)
  ------------------
              			if (CG(active_op_array)->fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|     27|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (8652:8): [True: 10, False: 17]
  ------------------
 8653|       |				/* If the parent function is a closure, don't redundantly
 8654|       |				 * add the classname and parentheses.
 8655|       |				 */
 8656|     10|				function = CG(active_op_array)->function_name;
  ------------------
  |  |   35|     10|# define CG(v) (compiler_globals.v)
  ------------------
 8657|     17|			} else {
 8658|     17|				function = CG(active_op_array)->function_name;
  ------------------
  |  |   35|     17|# define CG(v) (compiler_globals.v)
  ------------------
 8659|     17|				parens = "()";
 8660|       |
 8661|     17|				if (CG(active_class_entry) && CG(active_class_entry)->name) {
  ------------------
  |  |   35|     34|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 8, False: 9]
  |  |  ------------------
  ------------------
              				if (CG(active_class_entry) && CG(active_class_entry)->name) {
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (8661:35): [True: 8, False: 0]
  ------------------
 8662|      8|					class = CG(active_class_entry)->name;
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
 8663|      8|					separator = ZSTR_KNOWN(ZEND_STR_PAAMAYIM_NEKUDOTAYIM);
 8664|      8|				}
 8665|     17|			}
 8666|     27|		}
 8667|       |
 8668|    278|		unqualified_name = zend_strpprintf_unchecked(
 8669|    278|			0,
 8670|    278|			"{closure:%S%S%S%s:%" PRIu32 "}",
 8671|    278|			class,
 8672|    278|			separator,
 8673|    278|			function,
 8674|    278|			parens,
 8675|    278|			start_lineno
 8676|    278|		);
 8677|       |
 8678|    278|		op_array->function_name = name = unqualified_name;
 8679|    556|	} else {
 8680|    556|		unqualified_name = decl->name;
 8681|    556|		op_array->function_name = name = zend_prefix_with_ns(unqualified_name);
 8682|    556|	}
 8683|       |
 8684|    834|	lcname = zend_string_tolower(name);
 8685|       |
 8686|    834|	if (FC(imports_function)) {
  ------------------
  |  |   60|    834|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    834|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 2, False: 832]
  |  |  ------------------
  ------------------
 8687|      2|		const zend_string *import_name =
 8688|      2|			zend_hash_find_ptr_lc(FC(imports_function), unqualified_name);
  ------------------
  |  |   60|      2|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 8689|      2|		if (import_name && !zend_string_equals_ci(lcname, import_name)) {
  ------------------
  |  |  401|      2|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 2]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (8689:7): [True: 2, False: 0]
  ------------------
 8690|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare function %s() (previously declared as local import)",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8691|      2|				ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8692|      2|		}
 8693|      2|	}
 8694|       |
 8695|    832|	if (zend_string_equals_literal(lcname, "__autoload")) {
  ------------------
  |  |  407|    832|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 832]
  |  |  ------------------
  ------------------
 8696|      0|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8697|      0|			"__autoload() is no longer supported, use spl_autoload_register() instead");
 8698|      0|	}
 8699|       |
 8700|    832|	if (zend_string_equals_literal_ci(unqualified_name, "assert")) {
  ------------------
  |  |  404|    832|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    832|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     21|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     21|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 21, False: 811]
  |  |  |  Branch (404:40): [True: 1, False: 20]
  |  |  ------------------
  ------------------
 8701|      1|		zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8702|      1|			"Defining a custom assert() function is not allowed, "
 8703|      1|			"as the function has special semantics");
 8704|      1|	}
 8705|       |
 8706|    832|	zend_register_seen_symbol(lcname, ZEND_SYMBOL_FUNCTION);
  ------------------
  |  | 1224|    832|#define ZEND_SYMBOL_FUNCTION (1<<1)
  ------------------
 8707|    832|	switch (level) {
  ------------------
  |  Branch (8707:10): [True: 831, False: 1]
  ------------------
 8708|    280|		case FUNC_DECL_LEVEL_NESTED: {
  ------------------
  |  Branch (8708:3): [True: 280, False: 552]
  ------------------
 8709|    280|			uint32_t func_ref = zend_add_dynamic_func_def(op_array);
 8710|    280|			if (op_array->fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|    280|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (8710:8): [True: 275, False: 5]
  ------------------
 8711|    275|				opline = zend_emit_op_tmp(result, ZEND_DECLARE_LAMBDA_FUNCTION, NULL, NULL);
  ------------------
  |  |  264|    275|#define ZEND_DECLARE_LAMBDA_FUNCTION        142
  ------------------
 8712|    275|				opline->op2.num = func_ref;
 8713|    275|			} else {
 8714|      5|				opline = get_next_op();
 8715|      5|				opline->opcode = ZEND_DECLARE_FUNCTION;
  ------------------
  |  |  263|      5|#define ZEND_DECLARE_FUNCTION               141
  ------------------
 8716|      5|				opline->op1_type = IS_CONST;
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
 8717|      5|				LITERAL_STR(opline->op1, zend_string_copy(lcname));
  ------------------
  |  |  697|      5|#define LITERAL_STR(op, str) do { \
  |  |  698|      5|		zval _c; \
  |  |  699|      5|		ZVAL_STR(&_c, str); \
  |  |  ------------------
  |  |  |  | 1088|      5|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      5|		zval *__z = (z);						\
  |  |  |  | 1090|      5|		zend_string *__s = (s);					\
  |  |  |  | 1091|      5|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      5|		/* interned strings support */			\
  |  |  |  | 1093|      5|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 1, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1094|      5|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      5|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      9|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  700|      5|		op.constant = zend_add_literal(&_c); \
  |  |  701|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (701:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 8718|      5|				opline->op2.num = func_ref;
 8719|      5|			}
 8720|    280|			break;
 8721|      0|		}
 8722|      3|		case FUNC_DECL_LEVEL_CONSTEXPR:
  ------------------
  |  Branch (8722:3): [True: 3, False: 829]
  ------------------
 8723|    551|		case FUNC_DECL_LEVEL_TOPLEVEL:
  ------------------
  |  Branch (8723:3): [True: 548, False: 284]
  ------------------
 8724|       |			/* Nothing to do. */
 8725|    551|			break;
 8726|    832|	}
 8727|    831|	return lcname;
 8728|    832|}
zend_compile.c:zend_register_seen_symbol:
  437|  2.67k|static void zend_register_seen_symbol(zend_string *name, uint32_t kind) {
  438|  2.67k|	zval *zv = zend_hash_find(&FC(seen_symbols), name);
  ------------------
  |  |   60|  2.67k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  2.67k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  439|  2.67k|	if (zv) {
  ------------------
  |  Branch (439:6): [True: 30, False: 2.64k]
  ------------------
  440|     30|		Z_LVAL_P(zv) |= kind;
  ------------------
  |  |  976|     30|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     30|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  441|  2.64k|	} else {
  442|  2.64k|		zval tmp;
  443|  2.64k|		ZVAL_LONG(&tmp, kind);
  ------------------
  |  | 1076|  2.64k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  2.64k|		zval *__z = (z);				\
  |  | 1078|  2.64k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  2.64k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  2.64k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  2.64k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  2.64k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.64k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  2.64k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  2.64k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2.64k]
  |  |  ------------------
  ------------------
  444|  2.64k|		zend_hash_add_new(&FC(seen_symbols), name, &tmp);
  ------------------
  |  |   60|  2.64k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  2.64k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  445|  2.64k|	}
  446|  2.67k|}
zend_compile.c:zend_add_dynamic_func_def:
 8622|    280|static uint32_t zend_add_dynamic_func_def(zend_op_array *def) {
 8623|    280|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|    280|# define CG(v) (compiler_globals.v)
  ------------------
 8624|    280|	uint32_t def_offset = op_array->num_dynamic_func_defs++;
 8625|       |	op_array->dynamic_func_defs = erealloc(
  ------------------
  |  |  158|    280|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    280|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    280|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    280|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    280|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8626|    280|		op_array->dynamic_func_defs, op_array->num_dynamic_func_defs * sizeof(zend_op_array *));
 8627|    280|	op_array->dynamic_func_defs[def_offset] = def;
 8628|    280|	return def_offset;
 8629|    280|}
zend_compile.c:zend_emit_op_tmp:
 2325|  9.58k|{
 2326|  9.58k|	zend_op *opline = get_next_op();
 2327|  9.58k|	opline->opcode = opcode;
 2328|       |
 2329|  9.58k|	if (op1 != NULL) {
  ------------------
  |  Branch (2329:6): [True: 6.51k, False: 3.07k]
  ------------------
 2330|  6.51k|		SET_NODE(opline->op1, op1);
  ------------------
  |  |   42|  6.51k|#define SET_NODE(target, src) do { \
  |  |   43|  6.51k|		target ## _type = (src)->op_type; \
  |  |   44|  6.51k|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  6.51k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 815, False: 5.69k]
  |  |  ------------------
  |  |   45|    815|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|  5.69k|		} else { \
  |  |   47|  5.69k|			target = (src)->u.op; \
  |  |   48|  5.69k|		} \
  |  |   49|  6.51k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 6.51k]
  |  |  ------------------
  ------------------
 2331|  6.51k|	}
 2332|       |
 2333|  9.58k|	if (op2 != NULL) {
  ------------------
  |  Branch (2333:6): [True: 4.99k, False: 4.58k]
  ------------------
 2334|  4.99k|		SET_NODE(opline->op2, op2);
  ------------------
  |  |   42|  4.99k|#define SET_NODE(target, src) do { \
  |  |   43|  4.99k|		target ## _type = (src)->op_type; \
  |  |   44|  4.99k|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  4.99k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 2.52k, False: 2.47k]
  |  |  ------------------
  |  |   45|  2.52k|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|  2.52k|		} else { \
  |  |   47|  2.47k|			target = (src)->u.op; \
  |  |   48|  2.47k|		} \
  |  |   49|  4.99k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 4.99k]
  |  |  ------------------
  ------------------
 2335|  4.99k|	}
 2336|       |
 2337|  9.58k|	if (result) {
  ------------------
  |  Branch (2337:6): [True: 9.50k, False: 75]
  ------------------
 2338|  9.50k|		zend_make_tmp_result(result, opline);
 2339|  9.50k|	}
 2340|       |
 2341|  9.58k|	return opline;
 2342|  9.58k|}
zend_compile.c:zend_make_tmp_result:
 2297|  9.99k|{
 2298|  9.99k|	opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|  9.99k|#define IS_TMP_VAR	(1<<1)
  ------------------
 2299|  9.99k|	opline->result.var = get_temporary_variable();
 2300|  9.99k|	GET_NODE(result, opline->result);
  ------------------
  |  |   51|  9.99k|#define GET_NODE(target, src) do { \
  |  |   52|  9.99k|		(target)->op_type = src ## _type; \
  |  |   53|  9.99k|		if ((target)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  9.99k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (53:7): [True: 0, False: 9.99k]
  |  |  ------------------
  |  |   54|      0|			ZVAL_COPY_VALUE(&(target)->u.constant, CT_CONSTANT(src)); \
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|  9.99k|		} else { \
  |  |   56|  9.99k|			(target)->u.op = src; \
  |  |   57|  9.99k|		} \
  |  |   58|  9.99k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (58:11): [Folded, False: 9.99k]
  |  |  ------------------
  ------------------
 2301|  9.99k|}
zend_compile.c:find_implicit_binds:
 8435|     34|{
 8436|     34|	const zend_ast_list *param_list = zend_ast_get_list(params_ast);
 8437|     34|	uint32_t i;
 8438|       |
 8439|     34|	zend_hash_init(&info->uses, param_list->children, NULL, NULL, 0);
  ------------------
  |  |  111|     34|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 8440|     34|	info->varvars_used = false;
 8441|       |
 8442|     34|	find_implicit_binds_recursively(info, stmt_ast);
 8443|       |
 8444|       |	/* Remove variables that are parameters */
 8445|     41|	for (i = 0; i < param_list->children; i++) {
  ------------------
  |  Branch (8445:14): [True: 7, False: 34]
  ------------------
 8446|      7|		const zend_ast *param_ast = param_list->child[i];
 8447|      7|		zend_hash_del(&info->uses, zend_ast_get_str(param_ast->child[1]));
 8448|      7|	}
 8449|     34|}
zend_compile.c:find_implicit_binds_recursively:
 8373|    109|static void find_implicit_binds_recursively(closure_info *info, zend_ast *ast) {
 8374|    109|	if (!ast) {
  ------------------
  |  Branch (8374:6): [True: 4, False: 105]
  ------------------
 8375|      4|		return;
 8376|      4|	}
 8377|       |
 8378|    105|	if (ast->kind == ZEND_AST_VAR) {
  ------------------
  |  Branch (8378:6): [True: 16, False: 89]
  ------------------
 8379|     16|		zend_ast *name_ast = ast->child[0];
 8380|     16|		if (name_ast->kind == ZEND_AST_ZVAL && Z_TYPE_P(zend_ast_get_zval(name_ast)) == IS_STRING) {
  ------------------
  |  |  669|     15|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     15|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (name_ast->kind == ZEND_AST_ZVAL && Z_TYPE_P(zend_ast_get_zval(name_ast)) == IS_STRING) {
  ------------------
  |  |  612|     15|#define IS_STRING					6
  ------------------
  |  Branch (8380:7): [True: 15, False: 1]
  |  Branch (8380:42): [True: 14, False: 1]
  ------------------
 8381|     14|			zend_string *name = zend_ast_get_str(name_ast);
 8382|     14|			if (zend_is_auto_global(name)) {
  ------------------
  |  Branch (8382:8): [True: 1, False: 13]
  ------------------
 8383|       |				/* These is no need to explicitly import auto-globals. */
 8384|      1|				return;
 8385|      1|			}
 8386|       |
 8387|     13|			if (zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (8387:8): [True: 0, False: 13]
  ------------------
 8388|       |				/* $this does not need to be explicitly imported. */
 8389|      0|				return;
 8390|      0|			}
 8391|       |
 8392|     13|			zend_hash_add_empty_element(&info->uses, name);
 8393|     13|		} else {
 8394|      2|			info->varvars_used = true;
 8395|      2|			find_implicit_binds_recursively(info, name_ast);
 8396|      2|		}
 8397|     89|	} else if (zend_ast_is_list(ast)) {
  ------------------
  |  Branch (8397:13): [True: 11, False: 78]
  ------------------
 8398|     11|		const zend_ast_list *list = zend_ast_get_list(ast);
 8399|     11|		uint32_t i;
 8400|     19|		for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (8400:15): [True: 8, False: 11]
  ------------------
 8401|      8|			find_implicit_binds_recursively(info, list->child[i]);
 8402|      8|		}
 8403|     78|	} else if (ast->kind == ZEND_AST_CLOSURE) {
  ------------------
  |  Branch (8403:13): [True: 0, False: 78]
  ------------------
 8404|       |		/* For normal closures add the use() list. */
 8405|      0|		const zend_ast_decl *closure_ast = (const zend_ast_decl *) ast;
 8406|      0|		zend_ast *uses_ast = closure_ast->child[1];
 8407|      0|		if (uses_ast) {
  ------------------
  |  Branch (8407:7): [True: 0, False: 0]
  ------------------
 8408|      0|			const zend_ast_list *uses_list = zend_ast_get_list(uses_ast);
 8409|      0|			uint32_t i;
 8410|      0|			for (i = 0; i < uses_list->children; i++) {
  ------------------
  |  Branch (8410:16): [True: 0, False: 0]
  ------------------
 8411|      0|				zend_hash_add_empty_element(&info->uses, zend_ast_get_str(uses_list->child[i]));
 8412|      0|			}
 8413|      0|		}
 8414|     78|	} else if (ast->kind == ZEND_AST_ARROW_FUNC) {
  ------------------
  |  Branch (8414:13): [True: 2, False: 76]
  ------------------
 8415|       |		/* For arrow functions recursively check the expression. */
 8416|      2|		const zend_ast_decl *closure_ast = (const zend_ast_decl *) ast;
 8417|      2|		closure_info inner_info;
 8418|      2|		find_implicit_binds(&inner_info, closure_ast->child[0], closure_ast->child[2]);
 8419|      2|		if (inner_info.varvars_used) {
  ------------------
  |  Branch (8419:7): [True: 0, False: 2]
  ------------------
 8420|      0|			info->varvars_used = true;
 8421|      0|		}
 8422|      2|		if (zend_hash_num_elements(&inner_info.uses)) {
  ------------------
  |  Branch (8422:7): [True: 0, False: 2]
  ------------------
 8423|      0|			zend_hash_copy(&info->uses, &inner_info.uses, NULL);
 8424|      0|		}
 8425|      2|		zend_hash_destroy(&inner_info.uses);
 8426|     76|	} else if (!zend_ast_is_special(ast)) {
  ------------------
  |  Branch (8426:13): [True: 38, False: 38]
  ------------------
 8427|     38|		uint32_t i, children = zend_ast_get_num_children(ast);
 8428|    103|		for (i = 0; i < children; i++) {
  ------------------
  |  Branch (8428:15): [True: 65, False: 38]
  ------------------
 8429|     65|			find_implicit_binds_recursively(info, ast->child[i]);
 8430|     65|		}
 8431|     38|	}
 8432|    105|}
zend_compile.c:compile_implicit_lexical_binds:
 8453|     32|{
 8454|     32|	zend_string *var_name;
 8455|     32|	zend_op *opline;
 8456|       |
 8457|       |	/* TODO We might want to use a special binding mode if varvars_used is set. */
 8458|     32|	if (zend_hash_num_elements(&info->uses) == 0) {
  ------------------
  |  Branch (8458:6): [True: 28, False: 4]
  ------------------
 8459|     28|		return;
 8460|     28|	}
 8461|       |
 8462|      4|	if (!op_array->static_variables) {
  ------------------
  |  Branch (8462:6): [True: 4, False: 0]
  ------------------
 8463|      4|		op_array->static_variables = zend_new_array(8);
  ------------------
  |  |  342|      4|	_zend_new_array(size)
  ------------------
 8464|      4|	}
 8465|       |
 8466|     25|	ZEND_HASH_MAP_FOREACH_STR_KEY(&info->uses, var_name) {
  ------------------
  |  | 1361|      9|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     13|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 9, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      9|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      9|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      9|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 9]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      9|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|      8|	_key = _p->key;
  ------------------
  |  Branch (8466:2): [True: 0, False: 4]
  |  Branch (8466:2): [True: 4, False: 0]
  ------------------
 8467|     25|		zval *value = zend_hash_add(
 8468|     25|			op_array->static_variables, var_name, &EG(uninitialized_zval));
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  ------------------
 8469|     25|		uint32_t offset = (uint32_t)((char*)value - (char*)op_array->static_variables->arData);
 8470|       |
 8471|     25|		opline = zend_emit_op(NULL, ZEND_BIND_LEXICAL, closure, NULL);
  ------------------
  |  |  304|      8|#define ZEND_BIND_LEXICAL                   182
  ------------------
 8472|     25|		opline->op2_type = IS_CV;
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 8473|     25|		opline->op2.var = lookup_cv(var_name);
 8474|     25|		opline->extended_value = offset | ZEND_BIND_IMPLICIT;
  ------------------
  |  | 1203|      8|#define ZEND_BIND_IMPLICIT 2
  ------------------
 8475|     25|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 8476|      4|}
zend_compile.c:lookup_cv:
  539|  10.3k|static uint32_t lookup_cv(zend_string *name) /* {{{ */{
  540|  10.3k|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|  10.3k|# define CG(v) (compiler_globals.v)
  ------------------
  541|  10.3k|	int i = 0;
  542|  10.3k|	zend_ulong hash_value = zend_string_hash_val(name);
  543|       |
  544|  16.6k|	while (i < op_array->last_var) {
  ------------------
  |  Branch (544:9): [True: 11.0k, False: 5.53k]
  ------------------
  545|  11.0k|		if (ZSTR_H(op_array->vars[i]) == hash_value
  ------------------
  |  |   69|  11.0k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  |  Branch (545:7): [True: 4.82k, False: 6.27k]
  ------------------
  546|  4.82k|		 && zend_string_equals(op_array->vars[i], name)) {
  ------------------
  |  Branch (546:7): [True: 4.82k, False: 1]
  ------------------
  547|  4.82k|			return EX_NUM_TO_VAR(i);
  ------------------
  |  |  759|  4.82k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  4.82k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  548|  4.82k|		}
  549|  6.27k|		i++;
  550|  6.27k|	}
  551|  5.53k|	i = op_array->last_var;
  552|  5.53k|	op_array->last_var++;
  553|  5.53k|	if (op_array->last_var > CG(context).vars_size) {
  ------------------
  |  |   35|  5.53k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (553:6): [True: 3.27k, False: 2.25k]
  ------------------
  554|  3.27k|		CG(context).vars_size += 16; /* FIXME */
  ------------------
  |  |   35|  3.27k|# define CG(v) (compiler_globals.v)
  ------------------
  555|  3.27k|		op_array->vars = erealloc(op_array->vars, CG(context).vars_size * sizeof(zend_string*));
  ------------------
  |  |  158|  3.27k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.27k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.27k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.27k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.27k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  556|  3.27k|	}
  557|       |
  558|  5.53k|	op_array->vars[i] = zend_string_copy(name);
  559|  5.53k|	return EX_NUM_TO_VAR(i);
  ------------------
  |  |  759|  5.53k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  5.53k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  560|  10.3k|}
zend_compile.c:zend_compile_closure_binding:
 8322|     35|{
 8323|     35|	const zend_ast_list *list = zend_ast_get_list(uses_ast);
 8324|     35|	uint32_t i;
 8325|       |
 8326|     35|	if (!list->children) {
  ------------------
  |  Branch (8326:6): [True: 0, False: 35]
  ------------------
 8327|      0|		return;
 8328|      0|	}
 8329|       |
 8330|     35|	if (!op_array->static_variables) {
  ------------------
  |  Branch (8330:6): [True: 35, False: 0]
  ------------------
 8331|     35|		op_array->static_variables = zend_new_array(8);
  ------------------
  |  |  342|     35|	_zend_new_array(size)
  ------------------
 8332|     35|	}
 8333|       |
 8334|     73|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (8334:14): [True: 41, False: 32]
  ------------------
 8335|     41|		zend_ast *var_name_ast = list->child[i];
 8336|     41|		zend_string *var_name = zval_make_interned_string(zend_ast_get_zval(var_name_ast));
 8337|     41|		uint32_t mode = var_name_ast->attr;
 8338|     41|		zend_op *opline;
 8339|     41|		zval *value;
 8340|       |
 8341|     41|		if (zend_string_equals(var_name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (8341:7): [True: 1, False: 40]
  ------------------
 8342|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use $this as lexical variable");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8343|      1|		}
 8344|       |
 8345|     40|		if (zend_is_auto_global(var_name)) {
  ------------------
  |  Branch (8345:7): [True: 1, False: 39]
  ------------------
 8346|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use auto-global as lexical variable");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8347|      1|		}
 8348|       |
 8349|     39|		value = zend_hash_add(op_array->static_variables, var_name, &EG(uninitialized_zval));
  ------------------
  |  |   45|     39|# define EG(v) (executor_globals.v)
  ------------------
 8350|     39|		if (!value) {
  ------------------
  |  Branch (8350:7): [True: 1, False: 38]
  ------------------
 8351|      1|			zend_error_noreturn_unchecked(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8352|      1|				"Cannot use variable $%S twice", var_name);
 8353|      1|		}
 8354|       |
 8355|     38|		CG(zend_lineno) = zend_ast_get_lineno(var_name_ast);
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
 8356|       |
 8357|     38|		opline = zend_emit_op(NULL, ZEND_BIND_LEXICAL, closure, NULL);
  ------------------
  |  |  304|     38|#define ZEND_BIND_LEXICAL                   182
  ------------------
 8358|     38|		opline->op2_type = IS_CV;
  ------------------
  |  |  867|     38|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 8359|     38|		opline->op2.var = lookup_cv(var_name);
 8360|     38|		opline->extended_value =
 8361|     38|			(uint32_t)((char*)value - (char*)op_array->static_variables->arData) | mode;
 8362|     38|	}
 8363|     35|}
zend_compile.c:zend_compile_attributes:
 7789|    138|) /* {{{ */ {
 7790|    138|	zend_attribute *attr;
 7791|    138|	zend_internal_attribute *config;
 7792|       |
 7793|    138|	const zend_ast_list *list = zend_ast_get_list(ast);
 7794|    138|	uint32_t g, i, j;
 7795|       |
 7796|    138|	ZEND_ASSERT(ast->kind == ZEND_AST_ATTRIBUTE_LIST);
  ------------------
  |  |  112|    138|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7796:2): [True: 0, False: 138]
  |  Branch (7796:2): [True: 138, False: 0]
  ------------------
 7797|       |
 7798|    277|	for (g = 0; g < list->children; g++) {
  ------------------
  |  Branch (7798:14): [True: 145, False: 132]
  ------------------
 7799|    145|		const zend_ast_list *group = zend_ast_get_list(list->child[g]);
 7800|       |
 7801|    145|		ZEND_ASSERT(group->kind == ZEND_AST_ATTRIBUTE_GROUP);
  ------------------
  |  |  112|    145|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7801:3): [True: 0, False: 145]
  |  Branch (7801:3): [True: 145, False: 0]
  ------------------
 7802|       |
 7803|    293|		for (i = 0; i < group->children; i++) {
  ------------------
  |  Branch (7803:15): [True: 154, False: 139]
  ------------------
 7804|    154|			ZEND_ASSERT(group->child[i]->kind == ZEND_AST_ATTRIBUTE);
  ------------------
  |  |  112|    154|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7804:4): [True: 0, False: 154]
  |  Branch (7804:4): [True: 154, False: 0]
  ------------------
 7805|       |
 7806|    154|			const zend_ast *el = group->child[i];
 7807|       |
 7808|    154|			if (el->child[1] &&
  ------------------
  |  Branch (7808:8): [True: 44, False: 110]
  ------------------
 7809|     44|			    el->child[1]->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (7809:8): [True: 2, False: 42]
  ------------------
 7810|      2|			    zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7811|      2|			        "Cannot create Closure as attribute argument");
 7812|      2|			}
 7813|       |
 7814|    152|			zend_string *name = zend_resolve_class_name_ast(el->child[0]);
 7815|    152|			zend_string *lcname = zend_string_tolower_ex(name, false);
 7816|    152|			zend_ast_list *args = el->child[1] ? zend_ast_get_list(el->child[1]) : NULL;
  ------------------
  |  Branch (7816:26): [True: 42, False: 110]
  ------------------
 7817|       |
 7818|    152|			config = zend_internal_attribute_get(lcname);
 7819|    152|			zend_string_release(lcname);
 7820|       |
 7821|       |			/* Exclude internal attributes that do not match on promoted properties. */
 7822|    152|			if (config && !(target & (config->flags & ZEND_ATTRIBUTE_TARGET_ALL))) {
  ------------------
  |  |   32|    108|#define ZEND_ATTRIBUTE_TARGET_ALL			((1<<7) - 1)
  ------------------
  |  Branch (7822:8): [True: 108, False: 44]
  |  Branch (7822:18): [True: 8, False: 100]
  ------------------
 7823|      8|				if (promoted & (config->flags & ZEND_ATTRIBUTE_TARGET_ALL)) {
  ------------------
  |  |   32|      8|#define ZEND_ATTRIBUTE_TARGET_ALL			((1<<7) - 1)
  ------------------
  |  Branch (7823:9): [True: 1, False: 7]
  ------------------
 7824|      1|					zend_string_release(name);
 7825|      1|					continue;
 7826|      1|				}
 7827|      8|			}
 7828|       |
 7829|    151|			uint32_t flags = (CG(active_op_array)->fn_flags & ZEND_ACC_STRICT_TYPES)
  ------------------
  |  |   35|    151|# define CG(v) (compiler_globals.v)
  ------------------
              			uint32_t flags = (CG(active_op_array)->fn_flags & ZEND_ACC_STRICT_TYPES)
  ------------------
  |  |  413|    151|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  ------------------
  |  Branch (7829:21): [True: 1, False: 150]
  ------------------
 7830|    151|				? ZEND_ATTRIBUTE_STRICT_TYPES : 0;
  ------------------
  |  |   38|      1|#define ZEND_ATTRIBUTE_STRICT_TYPES (1<<1)
  ------------------
 7831|    151|			attr = zend_add_attribute(
 7832|    151|				attributes, name, args ? args->children : 0, flags, offset, el->lineno);
  ------------------
  |  Branch (7832:23): [True: 42, False: 109]
  ------------------
 7833|    151|			zend_string_release(name);
 7834|       |
 7835|       |			/* Populate arguments */
 7836|    151|			if (args) {
  ------------------
  |  Branch (7836:8): [True: 42, False: 109]
  ------------------
 7837|     42|				ZEND_ASSERT(args->kind == ZEND_AST_ARG_LIST);
  ------------------
  |  |  112|     42|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7837:5): [True: 0, False: 42]
  |  Branch (7837:5): [True: 42, False: 0]
  ------------------
 7838|       |
 7839|     42|				bool uses_named_args = false;
 7840|     93|				for (j = 0; j < args->children; j++) {
  ------------------
  |  Branch (7840:17): [True: 55, False: 38]
  ------------------
 7841|     55|					zend_ast **arg_ast_ptr = &args->child[j];
 7842|     55|					zend_ast *arg_ast = *arg_ast_ptr;
 7843|       |
 7844|     55|					if (arg_ast->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (7844:10): [True: 1, False: 54]
  ------------------
 7845|      1|						zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7846|      1|							"Cannot use unpacking in attribute argument list");
 7847|      1|					}
 7848|       |
 7849|     54|					if (arg_ast->kind == ZEND_AST_NAMED_ARG) {
  ------------------
  |  Branch (7849:10): [True: 12, False: 42]
  ------------------
 7850|     12|						attr->args[j].name = zend_string_copy(zend_ast_get_str(arg_ast->child[0]));
 7851|     12|						arg_ast_ptr = &arg_ast->child[1];
 7852|     12|						uses_named_args = true;
 7853|       |
 7854|     15|						for (uint32_t k = 0; k < j; k++) {
  ------------------
  |  Branch (7854:28): [True: 4, False: 11]
  ------------------
 7855|      4|							if (attr->args[k].name &&
  ------------------
  |  Branch (7855:12): [True: 2, False: 2]
  ------------------
 7856|      2|									zend_string_equals(attr->args[k].name, attr->args[j].name)) {
  ------------------
  |  Branch (7856:10): [True: 1, False: 1]
  ------------------
 7857|      1|								zend_error_noreturn(E_COMPILE_ERROR, "Duplicate named parameter $%s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7858|      1|									ZSTR_VAL(attr->args[j].name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7859|      1|							}
 7860|      4|						}
 7861|     42|					} else if (uses_named_args) {
  ------------------
  |  Branch (7861:17): [True: 2, False: 40]
  ------------------
 7862|      2|						zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7863|      2|							"Cannot use positional argument after named argument");
 7864|      2|					}
 7865|       |
 7866|     51|					zend_const_expr_to_zval(
 7867|     51|						&attr->args[j].value, arg_ast_ptr, /* allow_dynamic */ true);
 7868|     51|				}
 7869|     42|			}
 7870|    151|		}
 7871|    145|	}
 7872|       |
 7873|    132|	if (*attributes != NULL) {
  ------------------
  |  Branch (7873:6): [True: 127, False: 5]
  ------------------
 7874|       |		/* Allow delaying target validation for forward compatibility. */
 7875|    127|		const zend_attribute *delayed_target_validation = NULL;
 7876|    127|		if (target == ZEND_ATTRIBUTE_TARGET_PARAMETER) {
  ------------------
  |  |   30|    127|#define ZEND_ATTRIBUTE_TARGET_PARAMETER		(1<<5)
  ------------------
  |  Branch (7876:7): [True: 8, False: 119]
  ------------------
 7877|      8|			ZEND_ASSERT(offset >= 1);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7877:4): [True: 0, False: 8]
  |  Branch (7877:4): [True: 8, False: 0]
  ------------------
 7878|       |			/* zend_get_parameter_attribute_str will add 1 too */
 7879|      8|			delayed_target_validation = zend_get_parameter_attribute_str(
 7880|      8|				*attributes,
 7881|      8|				"delayedtargetvalidation",
 7882|      8|				strlen("delayedtargetvalidation"),
 7883|      8|				offset - 1
 7884|      8|			);
 7885|    119|		} else {
 7886|    119|			delayed_target_validation = zend_get_attribute_str(
 7887|    119|				*attributes,
 7888|    119|				"delayedtargetvalidation",
 7889|    119|				strlen("delayedtargetvalidation")
 7890|    119|			);
 7891|    119|		}
 7892|       |		/* Validate attributes in a secondary loop (needed to detect repeated attributes). */
 7893|    536|		ZEND_HASH_PACKED_FOREACH_PTR(*attributes, attr) {
  ------------------
  |  | 1502|    141|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|    127|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|    127|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|    127|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|    127|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|    127|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|    127|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|    127|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    127|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|    248|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 141, False: 107]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|    141|			(void) _idx; \
  |  |  |  |  |  | 1478|    141|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    141|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 141]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1503|    141|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    127|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    127|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7893:3): [True: 0, False: 127]
  |  Branch (7893:3): [True: 127, False: 0]
  ------------------
 7894|    536|			if (attr->offset != offset || NULL == (config = zend_internal_attribute_get(attr->lcname))) {
  ------------------
  |  Branch (7894:8): [True: 0, False: 141]
  |  Branch (7894:34): [True: 37, False: 104]
  ------------------
 7895|     37|				continue;
 7896|     37|			}
 7897|       |
 7898|    536|			bool run_validator = true;
 7899|    104|			if (!(target & (config->flags & ZEND_ATTRIBUTE_TARGET_ALL))) {
  ------------------
  |  |   32|    104|#define ZEND_ATTRIBUTE_TARGET_ALL			((1<<7) - 1)
  ------------------
  |  Branch (7899:8): [True: 6, False: 98]
  ------------------
 7900|      6|				if (delayed_target_validation == NULL) {
  ------------------
  |  Branch (7900:9): [True: 5, False: 1]
  ------------------
 7901|      5|					zend_string *location = zend_get_attribute_target_names(target);
 7902|      5|					zend_string *allowed = zend_get_attribute_target_names(config->flags);
 7903|       |
 7904|      5|					zend_error_noreturn(E_ERROR, "Attribute \"%s\" cannot target %s (allowed targets: %s)",
  ------------------
  |  |   22|      5|#define E_ERROR				(1<<0L)
  ------------------
 7905|      5|						ZSTR_VAL(attr->name), ZSTR_VAL(location), ZSTR_VAL(allowed)
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(attr->name), ZSTR_VAL(location), ZSTR_VAL(allowed)
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(attr->name), ZSTR_VAL(location), ZSTR_VAL(allowed)
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7906|      5|					);
 7907|      5|				}
 7908|      1|				run_validator = false;
 7909|      1|			}
 7910|       |
 7911|     99|			if (!(config->flags & ZEND_ATTRIBUTE_IS_REPEATABLE)) {
  ------------------
  |  |   33|     99|#define ZEND_ATTRIBUTE_IS_REPEATABLE		(1<<7)
  ------------------
  |  Branch (7911:8): [True: 99, False: 0]
  ------------------
 7912|     99|				if (zend_is_attribute_repeated(*attributes, attr)) {
  ------------------
  |  Branch (7912:9): [True: 2, False: 97]
  ------------------
 7913|      2|					zend_error_noreturn(E_ERROR, "Attribute \"%s\" must not be repeated", ZSTR_VAL(attr->name));
  ------------------
  |  |   22|      2|#define E_ERROR				(1<<0L)
  ------------------
              					zend_error_noreturn(E_ERROR, "Attribute \"%s\" must not be repeated", ZSTR_VAL(attr->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7914|      2|				}
 7915|     99|			}
 7916|       |
 7917|       |			/* Validators are not run if the target is already invalid */
 7918|     97|			if (run_validator && config->validator != NULL) {
  ------------------
  |  Branch (7918:8): [True: 97, False: 0]
  |  Branch (7918:25): [True: 64, False: 33]
  ------------------
 7919|     64|				zend_string *error = config->validator(attr, target, CG(active_class_entry));
  ------------------
  |  |   35|     64|# define CG(v) (compiler_globals.v)
  ------------------
 7920|     64|				if (error != NULL) {
  ------------------
  |  Branch (7920:9): [True: 13, False: 51]
  ------------------
 7921|     13|					if (delayed_target_validation == NULL) {
  ------------------
  |  Branch (7921:10): [True: 13, False: 0]
  ------------------
 7922|     13|						zend_error_noreturn(E_COMPILE_ERROR, "%s", ZSTR_VAL(error));
  ------------------
  |  |   28|     13|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              						zend_error_noreturn(E_COMPILE_ERROR, "%s", ZSTR_VAL(error));
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7923|     13|					} else {
 7924|      0|						attr->validation_error = error;
 7925|      0|					}
 7926|     13|				}
 7927|     64|			}
 7928|     97|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     97|		} \
  |  | 1102|    127|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 107]
  |  |  ------------------
  ------------------
 7929|    127|	}
 7930|    132|}
zend_compile.c:zend_compile_params:
 8011|  1.63k|{
 8012|  1.63k|	zend_ast_list *list = zend_ast_get_list(ast);
 8013|  1.63k|	uint32_t i;
 8014|  1.63k|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|  1.63k|# define CG(v) (compiler_globals.v)
  ------------------
 8015|  1.63k|	zend_arg_info *arg_infos;
 8016|       |
 8017|  1.63k|	if (return_type_ast || fallback_return_type) {
  ------------------
  |  Branch (8017:6): [True: 354, False: 1.27k]
  |  Branch (8017:25): [True: 15, False: 1.26k]
  ------------------
 8018|       |		/* Use op_array->arg_info[-1] for return type */
 8019|    369|		arg_infos = safe_emalloc(sizeof(zend_arg_info), list->children + 1, 0);
  ------------------
  |  |  153|    369|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    369|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    369|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    369|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    369|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8020|    369|		arg_infos->name = NULL;
 8021|    369|		if (return_type_ast) {
  ------------------
  |  Branch (8021:7): [True: 354, False: 15]
  ------------------
 8022|    354|			arg_infos->type = zend_compile_typename(return_type_ast);
 8023|    354|			ZEND_TYPE_FULL_MASK(arg_infos->type) |= _ZEND_ARG_INFO_FLAGS(
  ------------------
  |  |  261|    354|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(arg_infos->type) |= _ZEND_ARG_INFO_FLAGS(
  ------------------
  |  |  129|    354|	(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0) | ((is_tentative) ? _ZEND_IS_TENTATIVE_BIT : 0))
  |  |  ------------------
  |  |  |  | 1125|    354|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|    354|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0) | ((is_tentative) ? _ZEND_IS_TENTATIVE_BIT : 0))
  |  |  ------------------
  |  |  |  | 1126|      0|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0) | ((is_tentative) ? _ZEND_IS_TENTATIVE_BIT : 0))
  |  |  ------------------
  |  |  |  | 1128|      0|#define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (129:47): [Folded, False: 354]
  |  |  |  Branch (129:93): [Folded, False: 354]
  |  |  ------------------
  ------------------
 8024|    354|				(op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0, /* is_variadic */ 0, /* is_tentative */ 0);
 8025|    354|		} else {
 8026|     15|			arg_infos->type = (zend_type) ZEND_TYPE_INIT_CODE(fallback_return_type, 0, 0);
  ------------------
  |  |  293|     15|	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
  |  |  ------------------
  |  |  |  |  290|    120|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:29): [True: 0, False: 15]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 15]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 15]
  |  |  |  |  |  Branch (290:29): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|     15|		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
  ------------------
 8027|     15|		}
 8028|    369|		arg_infos->doc_comment = NULL;
 8029|    369|		arg_infos++;
 8030|    369|		op_array->fn_flags |= ZEND_ACC_HAS_RETURN_TYPE;
  ------------------
  |  |  355|    369|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
 8031|       |
 8032|    369|		if (ZEND_TYPE_CONTAINS_CODE(arg_infos[-1].type, IS_VOID)
  ------------------
  |  |  273|    738|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 94, False: 275]
  |  |  ------------------
  ------------------
 8033|     94|				&& (op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  352|     94|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (8033:8): [True: 2, False: 92]
  ------------------
 8034|      2|			zend_string *func_name = get_function_or_method_name((zend_function *) op_array);
 8035|      2|			zend_error(E_DEPRECATED, "%s(): Returning by reference from a void function is deprecated", ZSTR_VAL(func_name));
  ------------------
  |  |   36|      2|#define E_DEPRECATED		(1<<13L)
  ------------------
              			zend_error(E_DEPRECATED, "%s(): Returning by reference from a void function is deprecated", ZSTR_VAL(func_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8036|      2|			zend_string_release(func_name);
 8037|      2|		}
 8038|  1.26k|	} else {
 8039|  1.26k|		if (list->children == 0) {
  ------------------
  |  Branch (8039:7): [True: 759, False: 502]
  ------------------
 8040|    759|			return;
 8041|    759|		}
 8042|    502|		arg_infos = safe_emalloc(sizeof(zend_arg_info), list->children, 0);
  ------------------
  |  |  153|    502|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    502|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    502|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    502|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    502|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8043|    502|	}
 8044|       |
 8045|       |	/* Find last required parameter number for deprecation message. */
 8046|    871|	uint32_t last_required_param = (uint32_t) -1;
 8047|  1.67k|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (8047:14): [True: 807, False: 871]
  ------------------
 8048|    807|		zend_ast *param_ast = list->child[i];
 8049|    807|		zend_ast *default_ast_ptr = param_ast->child[2];
 8050|    807|		bool is_variadic = (param_ast->attr & ZEND_PARAM_VARIADIC) != 0;
  ------------------
  |  | 1058|    807|#define ZEND_PARAM_VARIADIC (1<<4)
  ------------------
 8051|    807|		if (!default_ast_ptr && !is_variadic) {
  ------------------
  |  Branch (8051:7): [True: 676, False: 131]
  |  Branch (8051:27): [True: 638, False: 38]
  ------------------
 8052|    638|			last_required_param = i;
 8053|    638|		}
 8054|    807|	}
 8055|       |
 8056|    871|	const uint32_t promotion_flags = ZEND_ACC_PPP_MASK | ZEND_ACC_PPP_SET_MASK | ZEND_ACC_READONLY | ZEND_ACC_FINAL;
  ------------------
  |  |  421|    871|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    871|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    871|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    871|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              	const uint32_t promotion_flags = ZEND_ACC_PPP_MASK | ZEND_ACC_PPP_SET_MASK | ZEND_ACC_READONLY | ZEND_ACC_FINAL;
  ------------------
  |  |  422|    871|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|    871|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|    871|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|    871|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
              	const uint32_t promotion_flags = ZEND_ACC_PPP_MASK | ZEND_ACC_PPP_SET_MASK | ZEND_ACC_READONLY | ZEND_ACC_FINAL;
  ------------------
  |  |  237|    871|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	const uint32_t promotion_flags = ZEND_ACC_PPP_MASK | ZEND_ACC_PPP_SET_MASK | ZEND_ACC_READONLY | ZEND_ACC_FINAL;
  ------------------
  |  |  230|    871|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
 8057|  1.65k|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (8057:14): [True: 803, False: 853]
  ------------------
 8058|    803|		zend_ast *param_ast = list->child[i];
 8059|    803|		zend_ast *type_ast = param_ast->child[0];
 8060|    803|		zend_ast *var_ast = param_ast->child[1];
 8061|    803|		zend_ast **default_ast_ptr = &param_ast->child[2];
 8062|    803|		zend_ast *attributes_ast = param_ast->child[3];
 8063|    803|		zend_ast *doc_comment_ast = param_ast->child[4];
 8064|    803|		zend_ast *hooks_ast = param_ast->child[5];
 8065|    803|		zend_string *name = zval_make_interned_string(zend_ast_get_zval(var_ast));
 8066|    803|		bool is_ref = (param_ast->attr & ZEND_PARAM_REF) != 0;
  ------------------
  |  | 1057|    803|#define ZEND_PARAM_REF      (1<<3)
  ------------------
 8067|    803|		bool is_variadic = (param_ast->attr & ZEND_PARAM_VARIADIC) != 0;
  ------------------
  |  | 1058|    803|#define ZEND_PARAM_VARIADIC (1<<4)
  ------------------
 8068|    803|		uint32_t property_flags = param_ast->attr & promotion_flags;
 8069|    803|		bool is_promoted = property_flags || hooks_ast;
  ------------------
  |  Branch (8069:22): [True: 23, False: 780]
  |  Branch (8069:40): [True: 1, False: 779]
  ------------------
 8070|       |
 8071|    803|		CG(zend_lineno) = param_ast->lineno;
  ------------------
  |  |   35|    803|# define CG(v) (compiler_globals.v)
  ------------------
 8072|       |
 8073|    803|		znode var_node, default_node;
 8074|    803|		uint8_t opcode;
 8075|    803|		zend_op *opline;
 8076|    803|		zend_arg_info *arg_info;
 8077|       |
 8078|    803|		if (zend_is_auto_global(name)) {
  ------------------
  |  Branch (8078:7): [True: 0, False: 803]
  ------------------
 8079|      0|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign auto-global variable %s",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8080|      0|				ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8081|      0|		}
 8082|       |
 8083|    803|		var_node.op_type = IS_CV;
  ------------------
  |  |  867|    803|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 8084|    803|		var_node.u.op.var = lookup_cv(name);
 8085|       |
 8086|    803|		if (EX_VAR_TO_NUM(var_node.u.op.var) != i) {
  ------------------
  |  |  758|    803|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|    803|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  |  Branch (8086:7): [True: 1, False: 802]
  ------------------
 8087|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Redefinition of parameter $%s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8088|      1|				ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8089|    802|		} else if (zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (8089:14): [True: 1, False: 801]
  ------------------
 8090|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use $this as parameter");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8091|    801|		} else if (zend_string_equals_literal(name, "http_response_header")) {
  ------------------
  |  |  407|    801|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 801]
  |  |  ------------------
  ------------------
 8092|      0|			CG(context).has_assigned_to_http_response_header = true;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 8093|      0|		}
 8094|       |
 8095|    801|		if (op_array->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|    801|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (8095:7): [True: 1, False: 800]
  ------------------
 8096|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Only the last parameter can be variadic");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8097|      1|		}
 8098|       |
 8099|    800|		if (is_variadic) {
  ------------------
  |  Branch (8099:7): [True: 39, False: 761]
  ------------------
 8100|     39|			opcode = ZEND_RECV_VARIADIC;
  ------------------
  |  |  286|     39|#define ZEND_RECV_VARIADIC                  164
  ------------------
 8101|     39|			default_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|     39|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 8102|     39|			op_array->fn_flags |= ZEND_ACC_VARIADIC;
  ------------------
  |  |  358|     39|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
 8103|       |
 8104|     39|			if (*default_ast_ptr) {
  ------------------
  |  Branch (8104:8): [True: 1, False: 38]
  ------------------
 8105|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8106|      1|					"Variadic parameter cannot have a default value");
 8107|      1|			}
 8108|    761|		} else if (*default_ast_ptr) {
  ------------------
  |  Branch (8108:14): [True: 128, False: 633]
  ------------------
 8109|       |			/* we cannot substitute constants here or it will break ReflectionParameter::getDefaultValueConstantName() and ReflectionParameter::isDefaultValueConstant() */
 8110|    128|			uint32_t cops = CG(compiler_options);
  ------------------
  |  |   35|    128|# define CG(v) (compiler_globals.v)
  ------------------
 8111|    128|			CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION | ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION;
  ------------------
  |  |   35|    128|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION | ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION;
  ------------------
  |  | 1280|    128|#define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION   (1<<6)
  ------------------
              			CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION | ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION;
  ------------------
  |  | 1283|    128|#define ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION	(1<<8)
  ------------------
 8112|    128|			opcode = ZEND_RECV_INIT;
  ------------------
  |  |  187|    128|#define ZEND_RECV_INIT                       64
  ------------------
 8113|    128|			default_node.op_type = IS_CONST;
  ------------------
  |  |  864|    128|#define IS_CONST	(1<<0)
  ------------------
 8114|    128|			zend_const_expr_to_zval(
 8115|    128|				&default_node.u.constant, default_ast_ptr, /* allow_dynamic */ true);
 8116|    128|			CG(compiler_options) = cops;
  ------------------
  |  |   35|    128|# define CG(v) (compiler_globals.v)
  ------------------
 8117|    633|		} else {
 8118|    633|			opcode = ZEND_RECV;
  ------------------
  |  |  186|    633|#define ZEND_RECV                            63
  ------------------
 8119|    633|			default_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|    633|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 8120|    633|			op_array->required_num_args = i + 1;
 8121|    633|		}
 8122|       |
 8123|    799|		arg_info = &arg_infos[i];
 8124|    799|		arg_info->name = zend_string_copy(name);
 8125|    799|		arg_info->type = (zend_type) ZEND_TYPE_INIT_NONE(0);
  ------------------
  |  |  287|    799|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 8126|    799|		arg_info->default_value = NULL;
 8127|    799|		arg_info->doc_comment = doc_comment_ast ? zend_string_copy(zend_ast_get_str(doc_comment_ast)) : NULL;
  ------------------
  |  Branch (8127:27): [True: 0, False: 799]
  ------------------
 8128|       |
 8129|    799|		if (attributes_ast) {
  ------------------
  |  Branch (8129:7): [True: 9, False: 790]
  ------------------
 8130|      9|			zend_compile_attributes(
 8131|      9|				&op_array->attributes, attributes_ast, i + 1, ZEND_ATTRIBUTE_TARGET_PARAMETER,
  ------------------
  |  |   30|      9|#define ZEND_ATTRIBUTE_TARGET_PARAMETER		(1<<5)
  ------------------
 8132|      9|				is_promoted ? ZEND_ATTRIBUTE_TARGET_PROPERTY : 0
  ------------------
  |  |   28|      1|#define ZEND_ATTRIBUTE_TARGET_PROPERTY		(1<<3)
  ------------------
  |  Branch (8132:5): [True: 1, False: 8]
  ------------------
 8133|      9|			);
 8134|      9|		}
 8135|       |
 8136|    799|		bool forced_allow_nullable = false;
 8137|    799|		if (type_ast) {
  ------------------
  |  Branch (8137:7): [True: 279, False: 520]
  ------------------
 8138|    279|			uint32_t default_type = *default_ast_ptr ? Z_TYPE(default_node.u.constant) : IS_UNDEF;
  ------------------
  |  |  668|     70|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			uint32_t default_type = *default_ast_ptr ? Z_TYPE(default_node.u.constant) : IS_UNDEF;
  ------------------
  |  |  606|    488|#define IS_UNDEF					0
  ------------------
  |  Branch (8138:28): [True: 70, False: 209]
  ------------------
 8139|    279|			bool force_nullable = default_type == IS_NULL && !is_promoted;
  ------------------
  |  |  607|    558|#define IS_NULL						1
  ------------------
  |  Branch (8139:26): [True: 26, False: 253]
  |  Branch (8139:53): [True: 26, False: 0]
  ------------------
 8140|       |
 8141|    279|			op_array->fn_flags |= ZEND_ACC_HAS_TYPE_HINTS;
  ------------------
  |  |  244|    279|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
 8142|    279|			arg_info->type = zend_compile_typename_ex(type_ast, force_nullable, &forced_allow_nullable);
 8143|    279|			if (forced_allow_nullable) {
  ------------------
  |  Branch (8143:8): [True: 15, False: 264]
  ------------------
 8144|     15|				zend_string *func_name = get_function_or_method_name((zend_function *) op_array);
 8145|     15|				zend_error(E_DEPRECATED,
  ------------------
  |  |   36|     15|#define E_DEPRECATED		(1<<13L)
  ------------------
 8146|     15|				   "%s(): Implicitly marking parameter $%s as nullable is deprecated, the explicit nullable type "
 8147|     15|				   "must be used instead", ZSTR_VAL(func_name), ZSTR_VAL(name));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				   "must be used instead", ZSTR_VAL(func_name), ZSTR_VAL(name));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8148|     15|				zend_string_release(func_name);
 8149|     15|			}
 8150|       |
 8151|    279|			if (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_VOID) {
  ------------------
  |  |  261|    279|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_VOID) {
  ------------------
  |  |   40|    279|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|    279|#define IS_VOID						14
  |  |  ------------------
  ------------------
  |  Branch (8151:8): [True: 1, False: 278]
  ------------------
 8152|      1|				zend_error_noreturn(E_COMPILE_ERROR, "void cannot be used as a parameter type");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8153|      1|			}
 8154|       |
 8155|    278|			if (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_NEVER) {
  ------------------
  |  |  261|    278|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_NEVER) {
  ------------------
  |  |   41|    278|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|    278|#define IS_NEVER					17
  |  |  ------------------
  ------------------
  |  Branch (8155:8): [True: 1, False: 277]
  ------------------
 8156|      1|				zend_error_noreturn(E_COMPILE_ERROR, "never cannot be used as a parameter type");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8157|      1|			}
 8158|       |
 8159|    277|			if (default_type != IS_UNDEF && default_type != IS_CONSTANT_AST && !force_nullable
  ------------------
  |  |  606|    554|#define IS_UNDEF					0
  ------------------
              			if (default_type != IS_UNDEF && default_type != IS_CONSTANT_AST && !force_nullable
  ------------------
  |  |  617|    346|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (8159:8): [True: 69, False: 208]
  |  Branch (8159:36): [True: 53, False: 16]
  |  Branch (8159:71): [True: 28, False: 25]
  ------------------
 8160|     28|					&& !zend_is_valid_default_value(arg_info->type, &default_node.u.constant)) {
  ------------------
  |  Branch (8160:9): [True: 3, False: 25]
  ------------------
 8161|      3|				zend_string *type_str = zend_type_to_string(arg_info->type);
 8162|      3|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8163|      3|					"Cannot use %s as default value for parameter $%s of type %s",
 8164|      3|					zend_get_type_by_const(default_type),
 8165|      3|					ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8166|      3|			}
 8167|    277|		}
 8168|    794|		if (last_required_param != (uint32_t) -1
  ------------------
  |  Branch (8168:7): [True: 673, False: 121]
  ------------------
 8169|    673|		 && i < last_required_param
  ------------------
  |  Branch (8169:7): [True: 137, False: 536]
  ------------------
 8170|    137|		 && default_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    137|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8170:7): [True: 21, False: 116]
  ------------------
 8171|       |			/* Ignore parameters of the form "Type $param = null".
 8172|       |			 * This is the PHP 5 style way of writing "?Type $param", so allow it for now. */
 8173|     21|			if (!forced_allow_nullable) {
  ------------------
  |  Branch (8173:8): [True: 14, False: 7]
  ------------------
 8174|     14|				zend_string *func_name = get_function_or_method_name((zend_function *) op_array);
 8175|     14|				zend_ast *required_param_ast = list->child[last_required_param];
 8176|     14|				zend_error(E_DEPRECATED,
  ------------------
  |  |   36|     14|#define E_DEPRECATED		(1<<13L)
  ------------------
 8177|     14|					"%s(): Optional parameter $%s declared before required parameter $%s "
 8178|     14|					"is implicitly treated as a required parameter",
 8179|     14|					ZSTR_VAL(func_name), ZSTR_VAL(name), ZSTR_VAL(zend_ast_get_str(required_param_ast->child[1])));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(func_name), ZSTR_VAL(name), ZSTR_VAL(zend_ast_get_str(required_param_ast->child[1])));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(func_name), ZSTR_VAL(name), ZSTR_VAL(zend_ast_get_str(required_param_ast->child[1])));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8180|     14|				zend_string_release(func_name);
 8181|     14|			}
 8182|       |
 8183|       |			/* Regardless of whether we issue a deprecation, convert this parameter into
 8184|       |			 * a required parameter without a default value. This ensures that it cannot be
 8185|       |			 * used as an optional parameter even with named parameters. */
 8186|     21|			opcode = ZEND_RECV;
  ------------------
  |  |  186|     21|#define ZEND_RECV                            63
  ------------------
 8187|     21|			default_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|     21|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 8188|     21|			zval_ptr_dtor(&default_node.u.constant);
 8189|     21|		}
 8190|       |
 8191|    794|		opline = zend_emit_op(NULL, opcode, NULL, &default_node);
 8192|    794|		SET_NODE(opline->result, &var_node);
  ------------------
  |  |   42|    794|#define SET_NODE(target, src) do { \
  |  |   43|    794|		target ## _type = (src)->op_type; \
  |  |   44|    794|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    794|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 794]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    794|		} else { \
  |  |   47|    794|			target = (src)->u.op; \
  |  |   48|    794|		} \
  |  |   49|    794|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 794]
  |  |  ------------------
  ------------------
 8193|    794|		opline->op1.num = i + 1;
 8194|       |
 8195|    794|		uint32_t arg_info_flags = _ZEND_ARG_INFO_FLAGS(is_ref, is_variadic, /* is_tentative */ 0)
  ------------------
  |  |  129|    794|	(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0) | ((is_tentative) ? _ZEND_IS_TENTATIVE_BIT : 0))
  |  |  ------------------
  |  |  |  | 1125|    794|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|    794|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0) | ((is_tentative) ? _ZEND_IS_TENTATIVE_BIT : 0))
  |  |  ------------------
  |  |  |  | 1126|     38|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     38|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0) | ((is_tentative) ? _ZEND_IS_TENTATIVE_BIT : 0))
  |  |  ------------------
  |  |  |  | 1128|      0|#define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (129:47): [True: 38, False: 756]
  |  |  |  Branch (129:93): [Folded, False: 794]
  |  |  ------------------
  ------------------
 8196|    794|			| (is_promoted ? _ZEND_IS_PROMOTED_BIT : 0);
  ------------------
  |  | 1127|     24|#define _ZEND_IS_PROMOTED_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 3))
  |  |  ------------------
  |  |  |  |  130|     24|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  ------------------
  ------------------
  |  Branch (8196:7): [True: 24, False: 770]
  ------------------
 8197|    794|		ZEND_TYPE_FULL_MASK(arg_info->type) |= arg_info_flags;
  ------------------
  |  |  261|    794|	((t).type_mask)
  ------------------
 8198|    794|		if (opcode == ZEND_RECV) {
  ------------------
  |  |  186|    794|#define ZEND_RECV                            63
  ------------------
  |  Branch (8198:7): [True: 646, False: 148]
  ------------------
 8199|    646|			opline->op2.num = type_ast ?
  ------------------
  |  Branch (8199:22): [True: 203, False: 443]
  ------------------
 8200|    443|				ZEND_TYPE_FULL_MASK(arg_info->type) : MAY_BE_ANY;
  ------------------
  |  |  261|    203|	((t).type_mask)
  ------------------
              				ZEND_TYPE_FULL_MASK(arg_info->type) : MAY_BE_ANY;
  ------------------
  |  |   34|  1.08k|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    443|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    443|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    443|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    443|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    443|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    443|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    443|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    443|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    443|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    443|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    443|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    443|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    443|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    443|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    443|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    443|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    443|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    443|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8201|    646|		}
 8202|       |
 8203|    794|		if (is_promoted) {
  ------------------
  |  Branch (8203:7): [True: 24, False: 770]
  ------------------
 8204|     24|			const zend_op_array *active_op_array = CG(active_op_array);
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
 8205|     24|			zend_class_entry *scope = active_op_array->scope;
 8206|       |
 8207|     24|			bool is_ctor =
 8208|     24|				scope && zend_is_constructor(active_op_array->function_name);
  ------------------
  |  Branch (8208:5): [True: 23, False: 1]
  |  Branch (8208:14): [True: 21, False: 2]
  ------------------
 8209|     24|			if (!is_ctor) {
  ------------------
  |  Branch (8209:8): [True: 3, False: 21]
  ------------------
 8210|      3|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8211|      3|					"Cannot declare promoted property outside a constructor");
 8212|      3|			}
 8213|     21|			if ((active_op_array->fn_flags & ZEND_ACC_ABSTRACT)
  ------------------
  |  |  233|     21|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (8213:8): [True: 1, False: 20]
  ------------------
 8214|     20|					|| (scope->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|     20|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (8214:9): [True: 0, False: 20]
  ------------------
 8215|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8216|      1|					"Cannot declare promoted property in an abstract constructor");
 8217|      1|			}
 8218|     20|			if (is_variadic) {
  ------------------
  |  Branch (8218:8): [True: 1, False: 19]
  ------------------
 8219|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8220|      1|					"Cannot declare variadic promoted property");
 8221|      1|			}
 8222|     19|			if (zend_hash_exists(&scope->properties_info, name)) {
  ------------------
  |  Branch (8222:8): [True: 1, False: 18]
  ------------------
 8223|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::$%s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8224|      1|					ZSTR_VAL(scope->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(scope->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8225|      1|			}
 8226|     18|			if (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_CALLABLE) {
  ------------------
  |  |  261|     18|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(arg_info->type) & MAY_BE_CALLABLE) {
  ------------------
  |  |   39|     18|#define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
  |  |  ------------------
  |  |  |  |  621|     18|#define IS_CALLABLE					12
  |  |  ------------------
  ------------------
  |  Branch (8226:8): [True: 1, False: 17]
  ------------------
 8227|      1|				zend_string *str = zend_type_to_string(arg_info->type);
 8228|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8229|      1|					"Property %s::$%s cannot have type %s",
 8230|      1|					ZSTR_VAL(scope->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(scope->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(scope->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8231|      1|			}
 8232|       |
 8233|     17|			if (!(property_flags & ZEND_ACC_READONLY) && (scope->ce_flags & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  237|     17|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              			if (!(property_flags & ZEND_ACC_READONLY) && (scope->ce_flags & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|     12|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (8233:8): [True: 12, False: 5]
  |  Branch (8233:49): [True: 2, False: 10]
  ------------------
 8234|      2|				property_flags |= ZEND_ACC_READONLY;
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
 8235|      2|			}
 8236|       |
 8237|       |			/* Recompile the type, as it has different memory management requirements. */
 8238|     17|			zend_type type = ZEND_TYPE_INIT_NONE(0);
  ------------------
  |  |  287|     17|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 8239|     17|			if (type_ast) {
  ------------------
  |  Branch (8239:8): [True: 11, False: 6]
  ------------------
 8240|     11|				type = zend_compile_typename(type_ast);
 8241|     11|			}
 8242|       |
 8243|       |			/* Don't give the property an explicit default value. For typed properties this means
 8244|       |			 * uninitialized, for untyped properties it means an implicit null default value.
 8245|       |			 * Properties with hooks get an implicit default value of undefined until inheritance,
 8246|       |			 * where it is changed to null only once we know it is not virtual. If we were to set it
 8247|       |			 * here, we couldn't verify that a true virtual property must not have an explicit
 8248|       |			 * default value. */
 8249|     17|			zval default_value;
 8250|     17|			if (ZEND_TYPE_IS_SET(type) || hooks_ast) {
  ------------------
  |  |  152|     34|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     17|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 11, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (8250:34): [True: 2, False: 4]
  ------------------
 8251|     13|				ZVAL_UNDEF(&default_value);
  ------------------
  |  | 1055|     13|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     13|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     13|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
 8252|     13|			} else {
 8253|      4|				if (property_flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|      4|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (8253:9): [True: 2, False: 2]
  ------------------
 8254|      2|					zend_error_noreturn(E_COMPILE_ERROR, "Readonly property %s::$%s must have type",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8255|      2|						ZSTR_VAL(scope->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(scope->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 8256|      2|				}
 8257|       |
 8258|      2|				ZVAL_NULL(&default_value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 8259|      2|			}
 8260|       |
 8261|     15|			zend_string *doc_comment =
 8262|     15|				doc_comment_ast ? zend_string_copy(zend_ast_get_str(doc_comment_ast)) : NULL;
  ------------------
  |  Branch (8262:5): [True: 0, False: 15]
  ------------------
 8263|     15|			zend_property_info *prop = zend_declare_typed_property(
 8264|     15|				scope, name, &default_value,
 8265|     15|				property_flags | (zend_property_is_virtual(scope, name, hooks_ast) ? ZEND_ACC_VIRTUAL : 0) | ZEND_ACC_PROMOTED,
  ------------------
  |  |  270|      1|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              				property_flags | (zend_property_is_virtual(scope, name, hooks_ast) ? ZEND_ACC_VIRTUAL : 0) | ZEND_ACC_PROMOTED,
  ------------------
  |  |  267|     15|#define ZEND_ACC_PROMOTED                (1 <<  8) /*     |     |  X  |     */
  ------------------
  |  Branch (8265:23): [True: 1, False: 14]
  ------------------
 8266|     15|				doc_comment, type);
 8267|     15|			if (hooks_ast) {
  ------------------
  |  Branch (8267:8): [True: 3, False: 12]
  ------------------
 8268|      3|				const zend_ast_list *hooks = zend_ast_get_list(hooks_ast);
 8269|      3|				zend_compile_property_hooks(prop, name, type_ast, hooks);
 8270|      3|			}
 8271|     15|			if (attributes_ast) {
  ------------------
  |  Branch (8271:8): [True: 1, False: 14]
  ------------------
 8272|      1|				zend_compile_attributes(
 8273|      1|					&prop->attributes, attributes_ast, 0, ZEND_ATTRIBUTE_TARGET_PROPERTY, ZEND_ATTRIBUTE_TARGET_PARAMETER);
  ------------------
  |  |   28|      1|#define ZEND_ATTRIBUTE_TARGET_PROPERTY		(1<<3)
  ------------------
              					&prop->attributes, attributes_ast, 0, ZEND_ATTRIBUTE_TARGET_PROPERTY, ZEND_ATTRIBUTE_TARGET_PARAMETER);
  ------------------
  |  |   30|      1|#define ZEND_ATTRIBUTE_TARGET_PARAMETER		(1<<5)
  ------------------
 8274|       |
 8275|      1|				zend_attribute *override_attribute = zend_get_attribute_str(prop->attributes, "override", sizeof("override")-1);
 8276|      1|				if (override_attribute) {
  ------------------
  |  Branch (8276:9): [True: 1, False: 0]
  ------------------
 8277|      1|					prop->flags |= ZEND_ACC_OVERRIDE;
  ------------------
  |  |  261|      1|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
 8278|      1|				}
 8279|      1|			}
 8280|     15|		}
 8281|    794|	}
 8282|       |
 8283|       |	/* These are assigned at the end to avoid uninitialized memory in case of an error */
 8284|    853|	op_array->num_args = list->children;
 8285|    853|	op_array->arg_info = arg_infos;
 8286|       |
 8287|       |	/* Don't count the variadic argument */
 8288|    853|	if (op_array->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|    853|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (8288:6): [True: 36, False: 817]
  ------------------
 8289|     36|		op_array->num_args--;
 8290|     36|	}
 8291|    853|	zend_set_function_arg_flags((zend_function*)op_array);
 8292|       |
 8293|  1.62k|	for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (8293:14): [True: 771, False: 853]
  ------------------
 8294|    771|		zend_ast *param_ast = list->child[i];
 8295|    771|		zend_ast *hooks_ast = param_ast->child[5];
 8296|    771|		bool is_ref = (param_ast->attr & ZEND_PARAM_REF) != 0;
  ------------------
  |  | 1057|    771|#define ZEND_PARAM_REF      (1<<3)
  ------------------
 8297|    771|		uint32_t flags = param_ast->attr & promotion_flags;
 8298|    771|		bool is_promoted = flags || hooks_ast;
  ------------------
  |  Branch (8298:22): [True: 11, False: 760]
  |  Branch (8298:31): [True: 1, False: 759]
  ------------------
 8299|    771|		if (!is_promoted) {
  ------------------
  |  Branch (8299:7): [True: 759, False: 12]
  ------------------
 8300|    759|			continue;
 8301|    759|		}
 8302|       |
 8303|     12|		CG(zend_lineno) = param_ast->lineno;
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
 8304|       |
 8305|       |		/* Emit $this->prop = $prop for promoted properties. */
 8306|     12|		zend_string *name = zend_ast_get_str(param_ast->child[1]);
 8307|     12|		znode name_node, value_node;
 8308|     12|		name_node.op_type = IS_CONST;
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
 8309|     12|		ZVAL_STR_COPY(&name_node.u.constant, name);
  ------------------
  |  | 1112|     12|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     12|		zval *__z = (z);								\
  |  | 1114|     12|		zend_string *__s = (s);							\
  |  | 1115|     12|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     12|		/* interned strings support */					\
  |  | 1117|     12|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 10]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     10|		} else {										\
  |  | 1120|     10|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     10|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     10|		}												\
  |  | 1123|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 8310|     12|		value_node.op_type = IS_CV;
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 8311|     12|		value_node.u.op.var = lookup_cv(name);
 8312|       |
 8313|     12|		zend_op *opline = zend_emit_op(NULL,
 8314|     12|			is_ref ? ZEND_ASSIGN_OBJ_REF : ZEND_ASSIGN_OBJ, NULL, &name_node);
  ------------------
  |  |  156|      1|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
              			is_ref ? ZEND_ASSIGN_OBJ_REF : ZEND_ASSIGN_OBJ, NULL, &name_node);
  ------------------
  |  |  148|     23|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (8314:4): [True: 1, False: 11]
  ------------------
 8315|     12|		opline->extended_value = zend_alloc_cache_slots(3);
 8316|     12|		zend_emit_op_data(&value_node);
 8317|     12|	}
 8318|    853|}
zend_compile.c:zend_compile_typename:
 7767|    669|{
 7768|    669|	bool forced_allow_null;
 7769|       |	return zend_compile_typename_ex(ast, false, &forced_allow_null);
 7770|    669|}
zend_compile.c:zend_compile_typename_ex:
 7539|    948|{
 7540|    948|	bool is_marked_nullable = ast->attr & ZEND_TYPE_NULLABLE;
  ------------------
  |  | 1067|    948|#define ZEND_TYPE_NULLABLE (1<<8)
  ------------------
 7541|    948|	zend_ast_attr orig_ast_attr = ast->attr;
 7542|    948|	zend_type type = ZEND_TYPE_INIT_NONE(0);
  ------------------
  |  |  287|    948|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 7543|       |
 7544|    948|	if (is_marked_nullable) {
  ------------------
  |  Branch (7544:6): [True: 50, False: 898]
  ------------------
 7545|     50|		ast->attr &= ~ZEND_TYPE_NULLABLE;
  ------------------
  |  | 1067|     50|#define ZEND_TYPE_NULLABLE (1<<8)
  ------------------
 7546|     50|	}
 7547|       |
 7548|    948|	if (ast->kind == ZEND_AST_TYPE_UNION) {
  ------------------
  |  Branch (7548:6): [True: 101, False: 847]
  ------------------
 7549|    101|		const zend_ast_list *list = zend_ast_get_list(ast);
 7550|    101|		zend_type_list *type_list;
 7551|    101|		bool is_composite = false;
 7552|    101|		bool has_only_iterable_class = true;
 7553|    101|		ALLOCA_FLAG(use_heap)
 7554|       |
 7555|    101|		type_list = do_alloca(ZEND_TYPE_LIST_SIZE(list->children), use_heap);
  ------------------
  |  |  247|    101|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|    101|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    101|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    101|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    101|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    101|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7556|    101|		type_list->num_types = 0;
 7557|       |
 7558|    320|		for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (7558:24): [True: 228, False: 92]
  ------------------
 7559|    228|			zend_ast *type_ast = list->child[i];
 7560|    228|			zend_type single_type;
 7561|    228|			uint32_t type_mask = ZEND_TYPE_FULL_MASK(type);
  ------------------
  |  |  261|    228|	((t).type_mask)
  ------------------
 7562|       |
 7563|    228|			if (type_ast->kind == ZEND_AST_TYPE_INTERSECTION) {
  ------------------
  |  Branch (7563:8): [True: 22, False: 206]
  ------------------
 7564|     22|				has_only_iterable_class = false;
 7565|     22|				is_composite = true;
 7566|       |				/* The first class type can be stored directly as the type ptr payload. */
 7567|     22|				if (ZEND_TYPE_IS_COMPLEX(type) && !ZEND_TYPE_HAS_LIST(type)) {
  ------------------
  |  |  157|     44|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|     22|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     22|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     22|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|     22|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 5, False: 17]
  |  |  ------------------
  ------------------
              				if (ZEND_TYPE_IS_COMPLEX(type) && !ZEND_TYPE_HAS_LIST(type)) {
  ------------------
  |  |  166|      5|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|      5|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  ------------------
  |  Branch (7567:39): [True: 1, False: 4]
  ------------------
 7568|       |					/* Switch from single name to name list. */
 7569|      1|					type_list->num_types = 1;
 7570|      1|					type_list->types[0] = type;
 7571|       |					/* Clear MAY_BE_* type flags */
 7572|      1|					ZEND_TYPE_FULL_MASK(type_list->types[0]) &= ~_ZEND_TYPE_MAY_BE_MASK;
  ------------------
  |  |  261|      1|	((t).type_mask)
  ------------------
              					ZEND_TYPE_FULL_MASK(type_list->types[0]) &= ~_ZEND_TYPE_MAY_BE_MASK;
  ------------------
  |  |  147|      1|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  ------------------
 7573|      1|				}
 7574|       |				/* Mark type as list type */
 7575|     22|				ZEND_TYPE_SET_LIST(type, type_list);
  ------------------
  |  |  256|     22|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|     22|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|     22|	(t).ptr = (_ptr); \
  |  |  |  |  251|     22|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     22|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|     22|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|     22|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|     22|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|     22|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|     22|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7576|       |
 7577|     22|				single_type = zend_compile_typename(type_ast);
 7578|     22|				ZEND_ASSERT(ZEND_TYPE_IS_INTERSECTION(single_type));
  ------------------
  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7578:5): [True: 0, False: 22]
  |  Branch (7578:5): [True: 22, False: 0]
  ------------------
 7579|       |
 7580|     22|				type_list->types[type_list->num_types++] = single_type;
 7581|       |
 7582|       |				/* Check for trivially redundant class types */
 7583|     27|				for (size_t i = 0; i < type_list->num_types - 1; i++) {
  ------------------
  |  Branch (7583:24): [True: 5, False: 22]
  ------------------
 7584|      5|					if (ZEND_TYPE_IS_INTERSECTION(type_list->types[i])) {
  ------------------
  |  |  172|      5|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      5|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 4, False: 1]
  |  |  ------------------
  ------------------
 7585|      4|						zend_are_intersection_types_redundant(single_type, type_list->types[i]);
 7586|      4|						continue;
 7587|      4|					}
 7588|       |					/* Type from type list is a simple type */
 7589|      1|					zend_is_intersection_type_redundant_by_single_type(single_type, type_list->types[i]);
 7590|      1|				}
 7591|     22|				continue;
 7592|     22|			}
 7593|       |
 7594|    206|			single_type = zend_compile_single_typename(type_ast);
 7595|    206|			uint32_t single_type_mask = ZEND_TYPE_PURE_MASK(single_type);
  ------------------
  |  |  264|    206|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    206|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 7596|       |
 7597|    206|			if (single_type_mask == MAY_BE_ANY) {
  ------------------
  |  |   34|    206|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    206|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    206|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    206|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    206|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    206|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    206|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    206|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    206|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    206|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    206|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    206|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    206|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    206|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    206|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    206|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    206|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    206|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    206|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7597:8): [True: 1, False: 205]
  ------------------
 7598|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Type mixed can only be used as a standalone type");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7599|      1|			}
 7600|    205|			if (ZEND_TYPE_IS_COMPLEX(single_type) && !ZEND_TYPE_IS_ITERABLE_FALLBACK(single_type)) {
  ------------------
  |  |  157|    410|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|    205|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    205|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    205|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|    205|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 83, False: 122]
  |  |  ------------------
  ------------------
              			if (ZEND_TYPE_IS_COMPLEX(single_type) && !ZEND_TYPE_IS_ITERABLE_FALLBACK(single_type)) {
  ------------------
  |  |  169|     83|	((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  139|     83|#define _ZEND_TYPE_ITERABLE_BIT (1u << 21)
  |  |  ------------------
  ------------------
  |  Branch (7600:45): [True: 70, False: 13]
  ------------------
 7601|     70|				has_only_iterable_class = false;
 7602|     70|			}
 7603|       |
 7604|    205|			uint32_t type_mask_overlap = ZEND_TYPE_PURE_MASK(type) & single_type_mask;
  ------------------
  |  |  264|    205|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    205|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 7605|    205|			if (type_mask_overlap) {
  ------------------
  |  Branch (7605:8): [True: 6, False: 199]
  ------------------
 7606|      6|				zend_type overlap_type = ZEND_TYPE_INIT_MASK(type_mask_overlap);
  ------------------
  |  |  290|      6|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 7607|      6|				zend_string *overlap_type_str = zend_type_to_string(overlap_type);
 7608|      6|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      6|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7609|      6|					"Duplicate type %s is redundant", ZSTR_VAL(overlap_type_str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7610|      6|			}
 7611|       |
 7612|    199|			if ( ((type_mask & MAY_BE_TRUE) && (single_type_mask == MAY_BE_FALSE))
  ------------------
  |  |   26|    199|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|    199|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              			if ( ((type_mask & MAY_BE_TRUE) && (single_type_mask == MAY_BE_FALSE))
  ------------------
  |  |   25|     20|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|     20|#define IS_FALSE					2
  |  |  ------------------
  ------------------
  |  Branch (7612:10): [True: 20, False: 179]
  |  Branch (7612:39): [True: 1, False: 19]
  ------------------
 7613|    198|					|| ((type_mask & MAY_BE_FALSE) && (single_type_mask == MAY_BE_TRUE)) ) {
  ------------------
  |  |   25|    198|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|    198|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              					|| ((type_mask & MAY_BE_FALSE) && (single_type_mask == MAY_BE_TRUE)) ) {
  ------------------
  |  |   26|     21|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|     21|#define IS_TRUE						3
  |  |  ------------------
  ------------------
  |  Branch (7613:10): [True: 21, False: 177]
  |  Branch (7613:40): [True: 1, False: 20]
  ------------------
 7614|      2|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7615|      2|					"Type contains both true and false, bool must be used instead");
 7616|      2|			}
 7617|    197|			ZEND_TYPE_FULL_MASK(type) |= ZEND_TYPE_PURE_MASK(single_type);
  ------------------
  |  |  261|    197|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= ZEND_TYPE_PURE_MASK(single_type);
  ------------------
  |  |  264|    197|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    197|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 7618|       |			/* Clear MAY_BE_* type flags */
 7619|    197|			ZEND_TYPE_FULL_MASK(single_type) &= ~_ZEND_TYPE_MAY_BE_MASK;
  ------------------
  |  |  261|    197|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(single_type) &= ~_ZEND_TYPE_MAY_BE_MASK;
  ------------------
  |  |  147|    197|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  ------------------
 7620|       |
 7621|    197|			if (ZEND_TYPE_IS_COMPLEX(single_type)) {
  ------------------
  |  |  157|    197|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|    197|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    197|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    197|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|    197|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 82, False: 115]
  |  |  ------------------
  ------------------
 7622|     82|				if (!ZEND_TYPE_IS_COMPLEX(type) && !is_composite) {
  ------------------
  |  |  157|    164|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|     82|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     82|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     82|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|     82|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7622:9): [True: 48, False: 34]
  |  Branch (7622:40): [True: 48, False: 0]
  ------------------
 7623|       |					/* The first class type can be stored directly as the type ptr payload. */
 7624|     48|					ZEND_TYPE_SET_PTR(type, ZEND_TYPE_NAME(single_type));
  ------------------
  |  |  247|     48|	((t).ptr = (_ptr))
  ------------------
 7625|     48|					ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_NAME_BIT;
  ------------------
  |  |  261|     48|	((t).type_mask)
  ------------------
              					ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_NAME_BIT;
  ------------------
  |  |  133|     48|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  ------------------
 7626|     48|				} else {
 7627|     34|					if (type_list->num_types == 0) {
  ------------------
  |  Branch (7627:10): [True: 22, False: 12]
  ------------------
 7628|       |						/* Switch from single name to name list. */
 7629|     22|						type_list->num_types = 1;
 7630|     22|						type_list->types[0] = type;
 7631|       |						/* Clear MAY_BE_* type flags */
 7632|     22|						ZEND_TYPE_FULL_MASK(type_list->types[0]) &= ~_ZEND_TYPE_MAY_BE_MASK;
  ------------------
  |  |  261|     22|	((t).type_mask)
  ------------------
              						ZEND_TYPE_FULL_MASK(type_list->types[0]) &= ~_ZEND_TYPE_MAY_BE_MASK;
  ------------------
  |  |  147|     22|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  ------------------
 7633|     22|						ZEND_TYPE_SET_LIST(type, type_list);
  ------------------
  |  |  256|     22|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|     22|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|     22|	(t).ptr = (_ptr); \
  |  |  |  |  251|     22|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     22|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|     22|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|     22|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|     22|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|     22|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|     22|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7634|     22|					}
 7635|       |
 7636|     34|					type_list->types[type_list->num_types++] = single_type;
 7637|       |
 7638|       |					/* Check for trivially redundant class types */
 7639|     34|					zend_is_type_list_redundant_by_single_type(type_list, single_type);
 7640|     34|				}
 7641|     82|			}
 7642|    197|		}
 7643|       |
 7644|     92|		if (type_list->num_types) {
  ------------------
  |  Branch (7644:7): [True: 32, False: 60]
  ------------------
 7645|     32|			zend_type_list *list = zend_arena_alloc(
 7646|     32|				&CG(arena), ZEND_TYPE_LIST_SIZE(type_list->num_types));
  ------------------
  |  |   35|     32|# define CG(v) (compiler_globals.v)
  ------------------
              				&CG(arena), ZEND_TYPE_LIST_SIZE(type_list->num_types));
  ------------------
  |  |  193|     32|	(sizeof(zend_type_list) + ((num_types) - 1) * sizeof(zend_type))
  ------------------
 7647|     32|			memcpy(list, type_list, ZEND_TYPE_LIST_SIZE(type_list->num_types));
  ------------------
  |  |  193|     32|	(sizeof(zend_type_list) + ((num_types) - 1) * sizeof(zend_type))
  ------------------
 7648|     32|			ZEND_TYPE_SET_LIST(type, list);
  ------------------
  |  |  256|     32|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|     32|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|     32|	(t).ptr = (_ptr); \
  |  |  |  |  251|     32|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     32|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|     32|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|     32|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|     32|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|     32|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|     32|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7649|     32|			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  261|     32|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  141|     32|#define _ZEND_TYPE_ARENA_BIT (1u << 20)
  ------------------
 7650|       |			/* Inform that the type list is a union type */
 7651|     32|			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_UNION_BIT;
  ------------------
  |  |  261|     32|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_UNION_BIT;
  ------------------
  |  |  145|     32|#define _ZEND_TYPE_UNION_BIT (1u << 18)
  ------------------
 7652|     32|		}
 7653|       |
 7654|     92|		free_alloca(type_list, use_heap);
  ------------------
  |  |  248|     92|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|     92|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     92|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     92|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     92|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     92|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7655|       |
 7656|     92|		uint32_t type_mask = ZEND_TYPE_FULL_MASK(type);
  ------------------
  |  |  261|     92|	((t).type_mask)
  ------------------
 7657|     92|		if ((type_mask & MAY_BE_OBJECT) &&
  ------------------
  |  |   32|     92|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|     92|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (7657:7): [True: 14, False: 78]
  ------------------
 7658|     14|				((!has_only_iterable_class && ZEND_TYPE_IS_COMPLEX(type)) || (type_mask & MAY_BE_STATIC))) {
  ------------------
  |  |  157|      3|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|      3|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      3|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      3|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      3|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              				((!has_only_iterable_class && ZEND_TYPE_IS_COMPLEX(type)) || (type_mask & MAY_BE_STATIC))) {
  ------------------
  |  |   42|     11|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|     11|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (7658:7): [True: 3, False: 11]
  |  Branch (7658:66): [True: 1, False: 10]
  ------------------
 7659|      4|			zend_string *type_str = zend_type_to_string(type);
 7660|      4|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7661|      4|				"Type %s contains both object and a class type, which is redundant",
 7662|      4|				ZSTR_VAL(type_str));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7663|      4|		}
 7664|    847|	} else if (ast->kind == ZEND_AST_TYPE_INTERSECTION) {
  ------------------
  |  Branch (7664:13): [True: 61, False: 786]
  ------------------
 7665|     61|		const zend_ast_list *list = zend_ast_get_list(ast);
 7666|     61|		zend_type_list *type_list;
 7667|       |
 7668|       |		/* Allocate the type list directly on the arena as it must be a type
 7669|       |		 * list of the same number of elements as the AST list has children */
 7670|     61|		type_list = zend_arena_alloc(&CG(arena), ZEND_TYPE_LIST_SIZE(list->children));
  ------------------
  |  |   35|     61|# define CG(v) (compiler_globals.v)
  ------------------
              		type_list = zend_arena_alloc(&CG(arena), ZEND_TYPE_LIST_SIZE(list->children));
  ------------------
  |  |  193|     61|	(sizeof(zend_type_list) + ((num_types) - 1) * sizeof(zend_type))
  ------------------
 7671|     61|		type_list->num_types = 0;
 7672|       |
 7673|     61|		ZEND_ASSERT(list->children > 1);
  ------------------
  |  |  112|     61|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7673:3): [True: 0, False: 61]
  |  Branch (7673:3): [True: 61, False: 0]
  ------------------
 7674|       |
 7675|    157|		for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (7675:24): [True: 111, False: 46]
  ------------------
 7676|    111|			zend_ast *type_ast = list->child[i];
 7677|    111|			zend_type single_type = zend_compile_single_typename(type_ast);
 7678|       |
 7679|       |			/* An intersection of union types cannot exist so invalidate it
 7680|       |			 * Currently only can happen with iterable getting canonicalized to Traversable|array */
 7681|    111|			if (ZEND_TYPE_IS_ITERABLE_FALLBACK(single_type)) {
  ------------------
  |  |  169|    111|	((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  139|    111|#define _ZEND_TYPE_ITERABLE_BIT (1u << 21)
  |  |  ------------------
  |  |  |  Branch (169:2): [True: 1, False: 110]
  |  |  ------------------
  ------------------
 7682|      1|				zend_string *standard_type_str = zend_type_to_string(single_type);
 7683|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7684|      1|					"Type %s cannot be part of an intersection type", ZSTR_VAL(standard_type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7685|      1|			}
 7686|       |			/* An intersection of standard types cannot exist so invalidate it */
 7687|    110|			if (ZEND_TYPE_IS_ONLY_MASK(single_type)) {
  ------------------
  |  |  181|    110|	(ZEND_TYPE_IS_SET(t) && (t).ptr == NULL)
  |  |  ------------------
  |  |  |  |  152|    220|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  131|    110|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (152:2): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (181:26): [True: 12, False: 98]
  |  |  ------------------
  ------------------
 7688|     12|				zend_string *standard_type_str = zend_type_to_string(single_type);
 7689|     12|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|     12|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7690|     12|					"Type %s cannot be part of an intersection type", ZSTR_VAL(standard_type_str));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7691|     12|			}
 7692|       |			/* Check for "self" and "parent" too */
 7693|     98|			if (
 7694|     98|				zend_string_equals_ci(ZEND_TYPE_NAME(single_type), ZSTR_KNOWN(ZEND_STR_SELF))
  ------------------
  |  |  401|    196|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     98|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    196|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 2, False: 96]
  |  |  |  Branch (401:35): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 7695|     97|				|| zend_string_equals_ci(ZEND_TYPE_NAME(single_type), ZSTR_KNOWN(ZEND_STR_PARENT))
  ------------------
  |  |  401|     97|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     97|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    194|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 2, False: 95]
  |  |  |  Branch (401:35): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 7696|     98|			) {
 7697|      2|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7698|      2|					"Type %s cannot be part of an intersection type", ZSTR_VAL(ZEND_TYPE_NAME(single_type)));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7699|      2|			}
 7700|       |
 7701|       |			/* Add type to the type list */
 7702|     96|			type_list->types[type_list->num_types++] = single_type;
 7703|       |
 7704|       |			/* Check for trivially redundant class types */
 7705|     96|			zend_is_type_list_redundant_by_single_type(type_list, single_type);
 7706|     96|		}
 7707|       |
 7708|     46|		ZEND_ASSERT(list->children == type_list->num_types);
  ------------------
  |  |  112|     46|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7708:3): [True: 0, False: 46]
  |  Branch (7708:3): [True: 44, False: 2]
  ------------------
 7709|       |
 7710|       |		/* An implicitly nullable intersection type needs to be converted to a DNF type */
 7711|     46|		if (force_allow_null) {
  ------------------
  |  Branch (7711:7): [True: 4, False: 40]
  ------------------
 7712|      4|			zend_type intersection_type = ZEND_TYPE_INIT_NONE(0);
  ------------------
  |  |  287|      4|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 7713|      4|			ZEND_TYPE_SET_LIST(intersection_type, type_list);
  ------------------
  |  |  256|      4|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|      4|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|      4|	(t).ptr = (_ptr); \
  |  |  |  |  251|      4|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      4|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|      4|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|      4|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|      4|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|      4|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7714|      4|			ZEND_TYPE_FULL_MASK(intersection_type) |= _ZEND_TYPE_INTERSECTION_BIT;
  ------------------
  |  |  261|      4|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(intersection_type) |= _ZEND_TYPE_INTERSECTION_BIT;
  ------------------
  |  |  143|      4|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  ------------------
 7715|      4|			ZEND_TYPE_FULL_MASK(intersection_type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  261|      4|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(intersection_type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  141|      4|#define _ZEND_TYPE_ARENA_BIT (1u << 20)
  ------------------
 7716|       |
 7717|      4|			zend_type_list *dnf_type_list = zend_arena_alloc(&CG(arena), ZEND_TYPE_LIST_SIZE(1));
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
              			zend_type_list *dnf_type_list = zend_arena_alloc(&CG(arena), ZEND_TYPE_LIST_SIZE(1));
  ------------------
  |  |  193|      4|	(sizeof(zend_type_list) + ((num_types) - 1) * sizeof(zend_type))
  ------------------
 7718|      4|			dnf_type_list->num_types = 1;
 7719|      4|			dnf_type_list->types[0] = intersection_type;
 7720|      4|			ZEND_TYPE_SET_LIST(type, dnf_type_list);
  ------------------
  |  |  256|      4|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|      4|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|      4|	(t).ptr = (_ptr); \
  |  |  |  |  251|      4|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      4|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|      4|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|      4|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|      4|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|      4|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7721|       |			/* Inform that the type list is a DNF type */
 7722|      4|			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_UNION_BIT;
  ------------------
  |  |  261|      4|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_UNION_BIT;
  ------------------
  |  |  145|      4|#define _ZEND_TYPE_UNION_BIT (1u << 18)
  ------------------
 7723|      4|			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  261|      4|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  141|      4|#define _ZEND_TYPE_ARENA_BIT (1u << 20)
  ------------------
 7724|     40|		} else {
 7725|     40|			ZEND_TYPE_SET_LIST(type, type_list);
  ------------------
  |  |  256|     40|	ZEND_TYPE_SET_PTR_AND_KIND(t, list, _ZEND_TYPE_LIST_BIT)
  |  |  ------------------
  |  |  |  |  249|     40|#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit) do { \
  |  |  |  |  250|     40|	(t).ptr = (_ptr); \
  |  |  |  |  251|     40|	(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     40|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  136|     40|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  133|     40|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  135|     40|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  252|     40|	(t).type_mask |= (kind_bit); \
  |  |  |  |  253|     40|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:10): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7726|       |			/* Inform that the type list is an intersection type */
 7727|     40|			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_INTERSECTION_BIT;
  ------------------
  |  |  261|     40|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_INTERSECTION_BIT;
  ------------------
  |  |  143|     40|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  ------------------
 7728|     40|			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  261|     40|	((t).type_mask)
  ------------------
              			ZEND_TYPE_FULL_MASK(type) |= _ZEND_TYPE_ARENA_BIT;
  ------------------
  |  |  141|     40|#define _ZEND_TYPE_ARENA_BIT (1u << 20)
  ------------------
 7729|     40|		}
 7730|    786|	} else {
 7731|    786|		type = zend_compile_single_typename(ast);
 7732|    786|	}
 7733|       |
 7734|    918|	uint32_t type_mask = ZEND_TYPE_PURE_MASK(type);
  ------------------
  |  |  264|    918|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    918|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 7735|       |
 7736|    918|	if (type_mask == MAY_BE_ANY && is_marked_nullable) {
  ------------------
  |  |   34|  1.83k|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    918|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    918|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    918|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    918|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    918|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    918|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    918|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    918|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    918|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    918|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    918|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    918|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    918|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    918|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    918|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    918|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    918|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    918|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7736:6): [True: 51, False: 867]
  |  Branch (7736:33): [True: 3, False: 48]
  ------------------
 7737|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Type mixed cannot be marked as nullable since mixed already includes null");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7738|      3|	}
 7739|       |
 7740|    915|	if ((type_mask & MAY_BE_NULL) && is_marked_nullable) {
  ------------------
  |  |   24|    915|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|    915|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (7740:6): [True: 63, False: 852]
  |  Branch (7740:35): [True: 1, False: 62]
  ------------------
 7741|      1|		zend_error_noreturn(E_COMPILE_ERROR, "null cannot be marked as nullable");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7742|      1|	}
 7743|       |
 7744|    914|	if (force_allow_null && !is_marked_nullable && !(type_mask & MAY_BE_NULL)) {
  ------------------
  |  |   24|     18|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|     18|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (7744:6): [True: 25, False: 889]
  |  Branch (7744:26): [True: 18, False: 7]
  |  Branch (7744:49): [True: 15, False: 3]
  ------------------
 7745|     15|		*forced_allow_null = true;
 7746|     15|	}
 7747|       |
 7748|    914|	if (is_marked_nullable || force_allow_null) {
  ------------------
  |  Branch (7748:6): [True: 61, False: 853]
  |  Branch (7748:28): [True: 18, False: 835]
  ------------------
 7749|     64|		ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL;
  ------------------
  |  |  261|     64|	((t).type_mask)
  ------------------
              		ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL;
  ------------------
  |  |   24|     64|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|     64|#define IS_NULL						1
  |  |  ------------------
  ------------------
 7750|     64|		type_mask = ZEND_TYPE_PURE_MASK(type);
  ------------------
  |  |  264|     64|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     64|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 7751|     64|	}
 7752|       |
 7753|    914|	if ((type_mask & MAY_BE_VOID) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_VOID)) {
  ------------------
  |  |   40|    914|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|    914|#define IS_VOID						14
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_VOID) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_VOID)) {
  ------------------
  |  |  157|    198|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|     99|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     99|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     99|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|     99|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 1, False: 98]
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_VOID) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_VOID)) {
  ------------------
  |  |   40|     98|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|     98|#define IS_VOID						14
  |  |  ------------------
  ------------------
  |  Branch (7753:6): [True: 99, False: 815]
  |  Branch (7753:66): [True: 1, False: 97]
  ------------------
 7754|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Void can only be used as a standalone type");
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7755|      2|	}
 7756|       |
 7757|    912|	if ((type_mask & MAY_BE_NEVER) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_NEVER)) {
  ------------------
  |  |   41|    912|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|    912|#define IS_NEVER					17
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_NEVER) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_NEVER)) {
  ------------------
  |  |  157|     18|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|      9|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      9|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      9|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      9|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 1, False: 8]
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_NEVER) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_NEVER)) {
  ------------------
  |  |   41|      8|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|      8|#define IS_NEVER					17
  |  |  ------------------
  ------------------
  |  Branch (7757:6): [True: 9, False: 903]
  |  Branch (7757:67): [True: 0, False: 8]
  ------------------
 7758|      1|		zend_error_noreturn(E_COMPILE_ERROR, "never can only be used as a standalone type");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7759|      1|	}
 7760|       |
 7761|    911|	ast->attr = orig_ast_attr;
 7762|    911|	return type;
 7763|    912|}
zend_compile.c:zend_are_intersection_types_redundant:
 7454|      4|{
 7455|      4|	ZEND_ASSERT(ZEND_TYPE_IS_INTERSECTION(left_type));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7455:2): [True: 0, False: 4]
  |  Branch (7455:2): [True: 4, False: 0]
  ------------------
 7456|      4|	ZEND_ASSERT(ZEND_TYPE_IS_INTERSECTION(right_type));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7456:2): [True: 0, False: 4]
  |  Branch (7456:2): [True: 4, False: 0]
  ------------------
 7457|      4|	const zend_type_list *l_type_list = ZEND_TYPE_LIST(left_type);
  ------------------
  |  |  190|      4|	((zend_type_list *) (t).ptr)
  ------------------
 7458|      4|	const zend_type_list *r_type_list = ZEND_TYPE_LIST(right_type);
  ------------------
  |  |  190|      4|	((zend_type_list *) (t).ptr)
  ------------------
 7459|      4|	const zend_type_list *smaller_type_list, *larger_type_list;
 7460|      4|	bool flipped = false;
 7461|       |
 7462|      4|	if (r_type_list->num_types < l_type_list->num_types) {
  ------------------
  |  Branch (7462:6): [True: 1, False: 3]
  ------------------
 7463|      1|		smaller_type_list = r_type_list;
 7464|      1|		larger_type_list = l_type_list;
 7465|      1|		flipped = true;
 7466|      3|	} else {
 7467|      3|		smaller_type_list = l_type_list;
 7468|      3|		larger_type_list = r_type_list;
 7469|      3|	}
 7470|       |
 7471|      4|	unsigned int sum = 0;
 7472|      4|	const zend_type *outer_type;
 7473|     12|	ZEND_TYPE_LIST_FOREACH(smaller_type_list, outer_type) {
  ------------------
  |  |  196|      4|#define ZEND_TYPE_LIST_FOREACH(list, type_ptr) do { \
  |  |  197|      4|	const zend_type *_list = (list)->types; \
  |  |  198|      4|	const zend_type *_end = _list + (list)->num_types; \
  |  |  199|     12|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (199:9): [True: 8, False: 4]
  |  |  ------------------
  |  |  200|      8|		type_ptr = _list;
  ------------------
 7474|     12|		const zend_type *inner_type;
 7475|     21|		ZEND_TYPE_LIST_FOREACH(larger_type_list, inner_type) {
  ------------------
  |  |  196|      8|#define ZEND_TYPE_LIST_FOREACH(list, type_ptr) do { \
  |  |  197|      8|	const zend_type *_list = (list)->types; \
  |  |  198|      8|	const zend_type *_end = _list + (list)->num_types; \
  |  |  199|     15|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (199:9): [True: 13, False: 2]
  |  |  ------------------
  |  |  200|     13|		type_ptr = _list;
  ------------------
 7476|     21|			if (zend_string_equals_ci(ZEND_TYPE_NAME(*inner_type), ZEND_TYPE_NAME(*outer_type))) {
  ------------------
  |  |  401|     13|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     26|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 13, False: 0]
  |  |  |  Branch (401:35): [True: 6, False: 7]
  |  |  ------------------
  ------------------
 7477|      6|				sum++;
 7478|      6|				break;
 7479|      6|			}
 7480|     21|		} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|     13|	} \
  |  |  210|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
 7481|     12|	} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|      8|	} \
  |  |  210|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 7482|       |
 7483|      4|	if (sum == smaller_type_list->num_types) {
  ------------------
  |  Branch (7483:6): [True: 2, False: 2]
  ------------------
 7484|      2|		zend_string *smaller_type_str;
 7485|      2|		zend_string *larger_type_str;
 7486|      2|		if (flipped) {
  ------------------
  |  Branch (7486:7): [True: 1, False: 1]
  ------------------
 7487|      1|			smaller_type_str = zend_type_to_string(right_type);
 7488|      1|			larger_type_str = zend_type_to_string(left_type);
 7489|      1|		} else {
 7490|      1|			smaller_type_str = zend_type_to_string(left_type);
 7491|      1|			larger_type_str = zend_type_to_string(right_type);
 7492|      1|		}
 7493|      2|		if (smaller_type_list->num_types == larger_type_list->num_types) {
  ------------------
  |  Branch (7493:7): [True: 1, False: 1]
  ------------------
 7494|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Type %s is redundant with type %s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7495|      1|				ZSTR_VAL(smaller_type_str), ZSTR_VAL(larger_type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(smaller_type_str), ZSTR_VAL(larger_type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7496|      1|		} else {
 7497|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Type %s is redundant as it is more restrictive than type %s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7498|      1|				ZSTR_VAL(larger_type_str), ZSTR_VAL(smaller_type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(larger_type_str), ZSTR_VAL(smaller_type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7499|      1|		}
 7500|      2|	}
 7501|      4|}
zend_compile.c:zend_is_intersection_type_redundant_by_single_type:
 7504|     12|{
 7505|     12|	ZEND_ASSERT(ZEND_TYPE_IS_INTERSECTION(intersection_type));
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7505:2): [True: 0, False: 12]
  |  Branch (7505:2): [True: 12, False: 0]
  ------------------
 7506|     12|	ZEND_ASSERT(!ZEND_TYPE_IS_INTERSECTION(single_type));
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7506:2): [True: 0, False: 12]
  |  Branch (7506:2): [True: 12, False: 0]
  ------------------
 7507|       |
 7508|     12|	const zend_type *single_intersection_type = NULL;
 7509|     35|	ZEND_TYPE_FOREACH(intersection_type, single_intersection_type) {
  ------------------
  |  |  214|     12|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|     12|	const zend_type *_cur, *_end; \
  |  |  216|     12|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|     12|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     12|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|     12|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|     12|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|     12|		_cur = _list->types; \
  |  |  219|     12|		_end = _cur + _list->num_types; \
  |  |  220|     12|	} else { \
  |  |  221|      0|		_cur = &(type); \
  |  |  222|      0|		_end = _cur + 1; \
  |  |  223|      0|	} \
  |  |  224|     23|	do { \
  |  |  225|     23|		type_ptr = _cur;
  ------------------
 7510|     35|		if (zend_string_equals_ci(ZEND_TYPE_NAME(*single_intersection_type), ZEND_TYPE_NAME(single_type))) {
  ------------------
  |  |  401|     23|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     23|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     46|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 17, False: 6]
  |  |  |  Branch (401:35): [True: 2, False: 15]
  |  |  ------------------
  ------------------
 7511|      2|			zend_string *single_type_str = zend_type_to_string(single_type);
 7512|      2|			zend_string *complete_type = zend_type_to_string(intersection_type);
 7513|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Type %s is redundant as it is more restrictive than type %s",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7514|      2|					ZSTR_VAL(complete_type), ZSTR_VAL(single_type_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(complete_type), ZSTR_VAL(single_type_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7515|      2|		}
 7516|     35|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|     23|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 11, False: 10]
  |  |  ------------------
  |  |  244|     12|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 10]
  |  |  ------------------
  ------------------
 7517|     12|}
zend_compile.c:zend_compile_single_typename:
 7365|  1.10k|{
 7366|  1.10k|	ZEND_ASSERT(!(ast->attr & ZEND_TYPE_NULLABLE));
  ------------------
  |  |  112|  1.10k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7366:2): [True: 0, False: 1.10k]
  |  Branch (7366:2): [True: 1.10k, False: 0]
  ------------------
 7367|  1.10k|	if (ast->kind == ZEND_AST_TYPE) {
  ------------------
  |  Branch (7367:6): [True: 172, False: 931]
  ------------------
 7368|    172|		if (ast->attr == IS_STATIC && !CG(active_class_entry) && zend_is_scope_known()) {
  ------------------
  |  |  624|    344|#define IS_STATIC					15
  ------------------
              		if (ast->attr == IS_STATIC && !CG(active_class_entry) && zend_is_scope_known()) {
  ------------------
  |  |   35|    183|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (7368:7): [True: 11, False: 161]
  |  Branch (7368:33): [True: 2, False: 9]
  |  Branch (7368:60): [True: 1, False: 1]
  ------------------
 7369|      1|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7370|      1|				"Cannot use \"static\" when no class scope is active");
 7371|      1|		}
 7372|       |
 7373|    171|		return (zend_type) ZEND_TYPE_INIT_CODE(ast->attr, 0, 0);
  ------------------
  |  |  293|    171|	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
  |  |  ------------------
  |  |  |  |  290|  1.36k|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:29): [True: 0, False: 171]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 171]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 171]
  |  |  |  |  |  Branch (290:29): [Folded, False: 171]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|    171|		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
  ------------------
 7374|    931|	} else {
 7375|    931|		zend_string *type_name = zend_ast_get_str(ast);
 7376|    931|		uint8_t type_code = zend_lookup_builtin_type_by_name(type_name);
 7377|       |
 7378|    931|		if (type_code != 0) {
  ------------------
  |  Branch (7378:7): [True: 557, False: 374]
  ------------------
 7379|    557|			if ((ast->attr & ZEND_NAME_NOT_FQ) != ZEND_NAME_NOT_FQ) {
  ------------------
  |  | 1061|    557|#define ZEND_NAME_NOT_FQ   1
  ------------------
              			if ((ast->attr & ZEND_NAME_NOT_FQ) != ZEND_NAME_NOT_FQ) {
  ------------------
  |  | 1061|    557|#define ZEND_NAME_NOT_FQ   1
  ------------------
  |  Branch (7379:8): [True: 1, False: 556]
  ------------------
 7380|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7381|      1|					"Type declaration '%s' must be unqualified",
 7382|      1|					ZSTR_VAL(zend_string_tolower(type_name)));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7383|      1|			}
 7384|       |
 7385|       |			/* Transform iterable into a type union alias */
 7386|    556|			if (type_code == IS_ITERABLE) {
  ------------------
  |  |  622|    556|#define IS_ITERABLE					13
  ------------------
  |  Branch (7386:8): [True: 15, False: 541]
  ------------------
 7387|       |				/* Set iterable bit for BC compat during Reflection and string representation of type */
 7388|     15|				zend_type iterable = (zend_type) ZEND_TYPE_INIT_CLASS_MASK(ZSTR_KNOWN(ZEND_STR_TRAVERSABLE),
  ------------------
  |  |  313|     15|	ZEND_TYPE_INIT_PTR_MASK(class_name, _ZEND_TYPE_NAME_BIT | (type_mask))
  |  |  ------------------
  |  |  |  |  301|     15|	_ZEND_TYPE_PREFIX { (void *) (ptr), (type_mask) }
  |  |  ------------------
  ------------------
 7389|     15|                	(MAY_BE_ARRAY|_ZEND_TYPE_ITERABLE_BIT));
 7390|     15|				return iterable;
 7391|     15|			}
 7392|       |
 7393|    541|			return (zend_type) ZEND_TYPE_INIT_CODE(type_code, 0, 0);
  ------------------
  |  |  293|    541|	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
  |  |  ------------------
  |  |  |  |  290|  4.26k|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:29): [True: 53, False: 472]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 525]
  |  |  |  |  |  Branch (290:29): [True: 16, False: 525]
  |  |  |  |  |  Branch (290:29): [Folded, False: 541]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|    541|		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
  ------------------
 7394|    556|		} else {
 7395|    374|			const char *correct_name;
 7396|    374|			uint32_t fetch_type = zend_get_class_fetch_type_ast(ast);
 7397|    374|			zend_string *class_name = type_name;
 7398|       |
 7399|    374|			if (fetch_type == ZEND_FETCH_CLASS_DEFAULT) {
  ------------------
  |  | 1042|    374|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (7399:8): [True: 336, False: 38]
  ------------------
 7400|    336|				class_name = zend_resolve_class_name_ast(ast);
 7401|    336|				zend_assert_valid_class_name(class_name, "a type name");
 7402|    336|			} else {
 7403|     38|				ZEND_ASSERT(fetch_type == ZEND_FETCH_CLASS_SELF || fetch_type == ZEND_FETCH_CLASS_PARENT);
  ------------------
  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7403:5): [True: 38, False: 0]
  |  Branch (7403:5): [True: 0, False: 0]
  |  Branch (7403:5): [True: 25, False: 13]
  |  Branch (7403:5): [True: 13, False: 0]
  ------------------
 7404|       |
 7405|     38|				zend_ensure_valid_class_fetch_type(fetch_type);
 7406|       |
 7407|     38|				bool substitute_self_parent = zend_is_scope_known()
  ------------------
  |  Branch (7407:35): [True: 17, False: 21]
  ------------------
 7408|     17|					&& !(CG(active_class_entry)->ce_flags & ZEND_ACC_ANON_CLASS);
  ------------------
  |  |   35|     17|# define CG(v) (compiler_globals.v)
  ------------------
              					&& !(CG(active_class_entry)->ce_flags & ZEND_ACC_ANON_CLASS);
  ------------------
  |  |  283|     17|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
  |  Branch (7408:9): [True: 16, False: 1]
  ------------------
 7409|       |
 7410|     38|				if (fetch_type == ZEND_FETCH_CLASS_SELF) {
  ------------------
  |  | 1043|     38|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (7410:9): [True: 24, False: 14]
  ------------------
 7411|       |					/* Scope might be unknown for unbound closures and traits */
 7412|     24|					if (substitute_self_parent) {
  ------------------
  |  Branch (7412:10): [True: 12, False: 12]
  ------------------
 7413|     12|						class_name = CG(active_class_entry)->name;
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
 7414|     12|						ZEND_ASSERT(class_name && "must know class name when resolving self type at compile time");
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7414:7): [True: 0, False: 12]
  |  Branch (7414:7): [True: 0, False: 0]
  |  Branch (7414:7): [True: 12, False: 0]
  |  Branch (7414:7): [True: 12, False: 0]
  ------------------
 7415|     12|					}
 7416|     24|				} else {
 7417|     14|					ZEND_ASSERT(fetch_type == ZEND_FETCH_CLASS_PARENT);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7417:6): [True: 0, False: 14]
  |  Branch (7417:6): [True: 11, False: 3]
  ------------------
 7418|       |					/* Scope might be unknown for unbound closures and traits */
 7419|     14|					if (substitute_self_parent) {
  ------------------
  |  Branch (7419:10): [True: 4, False: 7]
  ------------------
 7420|      4|						class_name = CG(active_class_entry)->parent_name;
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
 7421|      4|						ZEND_ASSERT(class_name && "must know class name when resolving parent type at compile time");
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7421:7): [True: 0, False: 4]
  |  Branch (7421:7): [True: 0, False: 0]
  |  Branch (7421:7): [True: 4, False: 0]
  |  Branch (7421:7): [True: 4, False: 0]
  ------------------
 7422|      4|					}
 7423|     11|				}
 7424|     38|				zend_string_addref(class_name);
 7425|     35|			}
 7426|       |
 7427|    374|			if (ast->attr == ZEND_NAME_NOT_FQ
  ------------------
  |  | 1061|    742|#define ZEND_NAME_NOT_FQ   1
  ------------------
  |  Branch (7427:8): [True: 356, False: 15]
  ------------------
 7428|    356|					&& zend_is_confusable_type(type_name, &correct_name)
  ------------------
  |  Branch (7428:9): [True: 0, False: 356]
  ------------------
 7429|      0|					&& zend_is_not_imported(type_name)) {
  ------------------
  |  Branch (7429:9): [True: 0, False: 0]
  ------------------
 7430|      0|				const char *extra =
 7431|      0|					FC(current_namespace) ? " or import the class with \"use\"" : "";
  ------------------
  |  |   60|      0|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7432|      0|				if (correct_name) {
  ------------------
  |  Branch (7432:9): [True: 0, False: 0]
  ------------------
 7433|      0|					zend_error(E_COMPILE_WARNING,
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
 7434|      0|						"\"%s\" will be interpreted as a class name. Did you mean \"%s\"? "
 7435|      0|						"Write \"\\%s\"%s to suppress this warning",
 7436|      0|						ZSTR_VAL(type_name), correct_name, ZSTR_VAL(class_name), extra);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(type_name), correct_name, ZSTR_VAL(class_name), extra);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7437|      0|				} else {
 7438|      0|					zend_error(E_COMPILE_WARNING,
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
 7439|      0|						"\"%s\" is not a supported builtin type "
 7440|      0|						"and will be interpreted as a class name. "
 7441|      0|						"Write \"\\%s\"%s to suppress this warning",
 7442|      0|						ZSTR_VAL(type_name), ZSTR_VAL(class_name), extra);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(type_name), ZSTR_VAL(class_name), extra);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7443|      0|				}
 7444|      0|			}
 7445|       |
 7446|    371|			class_name = zend_new_interned_string(class_name);
 7447|    371|			zend_alloc_ce_cache(class_name);
 7448|    371|			return (zend_type) ZEND_TYPE_INIT_CLASS(class_name, /* allow null */ false, 0);
  ------------------
  |  |  310|    371|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|    371|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|    371|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 371]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7449|    374|		}
 7450|    931|	}
 7451|  1.10k|}
zend_compile.c:zend_is_scope_known:
 1712|    156|{
 1713|    156|	if (!CG(active_op_array)) {
  ------------------
  |  |   35|    156|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1713:6): [True: 0, False: 156]
  ------------------
 1714|       |		/* This can only happen when evaluating a default value string. */
 1715|      0|		return false;
 1716|      0|	}
 1717|       |
 1718|    156|	if (CG(active_op_array)->fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |   35|    156|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|    156|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (1718:6): [True: 23, False: 133]
  ------------------
 1719|       |		/* Closures can be rebound to a different scope */
 1720|     23|		return false;
 1721|     23|	}
 1722|       |
 1723|    133|	if (!CG(active_class_entry)) {
  ------------------
  |  |   35|    133|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1723:6): [True: 10, False: 123]
  ------------------
 1724|       |		/* The scope is known if we're in a free function (no scope), but not if we're in
 1725|       |		 * a file/eval (which inherits including/eval'ing scope). */
 1726|     10|		return CG(active_op_array)->function_name != NULL;
  ------------------
  |  |   35|     10|# define CG(v) (compiler_globals.v)
  ------------------
 1727|     10|	}
 1728|       |
 1729|       |	/* For traits self etc refers to the using class, not the trait itself */
 1730|    123|	return (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT) == 0;
  ------------------
  |  |   35|    123|# define CG(v) (compiler_globals.v)
  ------------------
              	return (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT) == 0;
  ------------------
  |  |  282|    123|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
 1731|    133|}
zend_compile.c:zend_lookup_builtin_type_by_name:
  293|    931|{
  294|    931|	const builtin_type_info *info = &builtin_types[0];
  295|       |
  296|  8.21k|	for (; info->name; ++info) {
  ------------------
  |  Branch (296:9): [True: 7.84k, False: 374]
  ------------------
  297|  7.84k|		if (ZSTR_LEN(name) == info->name_len
  ------------------
  |  |   68|  7.84k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (297:7): [True: 1.35k, False: 6.48k]
  ------------------
  298|  1.35k|			&& zend_binary_strcasecmp(ZSTR_VAL(name), ZSTR_LEN(name), info->name, info->name_len) == 0
  ------------------
  |  |   67|  1.35k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			&& zend_binary_strcasecmp(ZSTR_VAL(name), ZSTR_LEN(name), info->name, info->name_len) == 0
  ------------------
  |  |   68|  1.35k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (298:7): [True: 557, False: 796]
  ------------------
  299|  7.84k|		) {
  300|    557|			return info->type;
  301|    557|		}
  302|  7.84k|	}
  303|       |
  304|    374|	return 0;
  305|    931|}
zend_compile.c:zend_get_class_fetch_type_ast:
 1762|  1.06k|{
 1763|       |	/* Fully qualified names are always default refs */
 1764|  1.06k|	if (name_ast->attr == ZEND_NAME_FQ) {
  ------------------
  |  | 1060|  1.06k|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (1764:6): [True: 27, False: 1.04k]
  ------------------
 1765|     27|		return ZEND_FETCH_CLASS_DEFAULT;
  ------------------
  |  | 1042|     27|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
 1766|     27|	}
 1767|       |
 1768|  1.04k|	return zend_get_class_fetch_type(zend_ast_get_str(name_ast));
 1769|  1.06k|}
zend_compile.c:zend_ensure_valid_class_fetch_type:
 1784|    167|{
 1785|    167|	if (fetch_type != ZEND_FETCH_CLASS_DEFAULT && zend_is_scope_known()) {
  ------------------
  |  | 1042|    334|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (1785:6): [True: 93, False: 74]
  |  Branch (1785:48): [True: 61, False: 32]
  ------------------
 1786|     61|		zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|     61|# define CG(v) (compiler_globals.v)
  ------------------
 1787|     61|		if (!ce) {
  ------------------
  |  Branch (1787:7): [True: 4, False: 57]
  ------------------
 1788|      4|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use \"%s\" when no class scope is active",
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1789|      4|				fetch_type == ZEND_FETCH_CLASS_SELF ? "self" :
  ------------------
  |  | 1043|      4|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (1789:5): [True: 3, False: 1]
  ------------------
 1790|      4|				fetch_type == ZEND_FETCH_CLASS_PARENT ? "parent" : "static");
  ------------------
  |  | 1044|      1|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (1790:5): [True: 1, False: 0]
  ------------------
 1791|     57|		} else if (fetch_type == ZEND_FETCH_CLASS_PARENT && !ce->parent_name) {
  ------------------
  |  | 1044|    114|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (1791:14): [True: 12, False: 45]
  |  Branch (1791:55): [True: 3, False: 9]
  ------------------
 1792|      3|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1793|      3|				"Cannot use \"parent\" when current class scope has no parent");
 1794|      3|		}
 1795|     61|	}
 1796|    167|}
zend_compile.c:zend_is_confusable_type:
  309|    356|{
  310|    356|	const confusable_type_info *info = confusable_types;
  311|       |
  312|       |	/* Intentionally using case-sensitive comparison here, because "integer" is likely intended
  313|       |	 * as a scalar type, while "Integer" is likely a class type. */
  314|  1.78k|	for (; info->name; ++info) {
  ------------------
  |  Branch (314:9): [True: 1.42k, False: 356]
  ------------------
  315|  1.42k|		if (zend_string_equals_cstr(name, info->name, info->name_len)) {
  ------------------
  |  Branch (315:7): [True: 0, False: 1.42k]
  ------------------
  316|      0|			*correct_name = info->correct_name;
  317|      0|			return 1;
  318|      0|		}
  319|  1.42k|	}
  320|       |
  321|    356|	return 0;
  322|    356|}
zend_compile.c:zend_is_type_list_redundant_by_single_type:
 7521|    130|{
 7522|    130|	ZEND_ASSERT(!ZEND_TYPE_IS_INTERSECTION(type));
  ------------------
  |  |  112|    130|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7522:2): [True: 0, False: 130]
  |  Branch (7522:2): [True: 130, False: 0]
  ------------------
 7523|    212|	for (size_t i = 0; i < type_list->num_types - 1; i++) {
  ------------------
  |  Branch (7523:21): [True: 88, False: 124]
  ------------------
 7524|     88|		if (ZEND_TYPE_IS_INTERSECTION(type_list->types[i])) {
  ------------------
  |  |  172|     88|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|     88|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 11, False: 77]
  |  |  ------------------
  ------------------
 7525|     11|			zend_is_intersection_type_redundant_by_single_type(type_list->types[i], type);
 7526|     11|			continue;
 7527|     11|		}
 7528|     77|		if (zend_string_equals_ci(ZEND_TYPE_NAME(type_list->types[i]), ZEND_TYPE_NAME(type))) {
  ------------------
  |  |  401|     77|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     77|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    154|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     55|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     55|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     55|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     55|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 55, False: 22]
  |  |  |  Branch (401:35): [True: 6, False: 49]
  |  |  ------------------
  ------------------
 7529|      6|			zend_string *single_type_str = zend_type_to_string(type);
 7530|      6|			zend_error_noreturn(E_COMPILE_ERROR, "Duplicate type %s is redundant", ZSTR_VAL(single_type_str));
  ------------------
  |  |   28|      6|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Duplicate type %s is redundant", ZSTR_VAL(single_type_str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7531|      6|		}
 7532|     77|	}
 7533|    130|}
zend_compile.c:zend_is_valid_default_value:
 7774|     75|{
 7775|     75|	ZEND_ASSERT(ZEND_TYPE_IS_SET(type));
  ------------------
  |  |  112|     75|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7775:2): [True: 0, False: 75]
  |  Branch (7775:2): [True: 75, False: 0]
  ------------------
 7776|     75|	if (ZEND_TYPE_CONTAINS_CODE(type, Z_TYPE_P(value))) {
  ------------------
  |  |  273|     75|	(((t).type_mask & (1u << (code))) != 0)
  |  |  ------------------
  |  |  |  Branch (273:2): [True: 63, False: 12]
  |  |  ------------------
  ------------------
 7777|     63|		return true;
 7778|     63|	}
 7779|     12|	if ((ZEND_TYPE_FULL_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  261|     12|	((t).type_mask)
  ------------------
              	if ((ZEND_TYPE_FULL_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |   29|     12|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|     12|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              	if ((ZEND_TYPE_FULL_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if ((ZEND_TYPE_FULL_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
  |  Branch (7779:6): [True: 3, False: 9]
  |  Branch (7779:53): [True: 1, False: 2]
  ------------------
 7780|       |		/* Integers are allowed as initializers for floating-point values. */
 7781|      1|		convert_to_double(value);
 7782|      1|		return true;
 7783|      1|	}
 7784|     11|	return false;
 7785|     12|}
zend_compile.c:zend_property_is_virtual:
 7988|    519|{
 7989|    519|	if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|    519|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (7989:6): [True: 13, False: 506]
  ------------------
 7990|     13|		return true;
 7991|     13|	}
 7992|    506|	if (!hooks_ast) {
  ------------------
  |  Branch (7992:6): [True: 386, False: 120]
  ------------------
 7993|    386|		return false;
 7994|    386|	}
 7995|       |
 7996|    506|	bool is_virtual = true;
 7997|       |
 7998|    120|	const zend_ast_list *hooks = zend_ast_get_list(hooks_ast);
 7999|    266|	for (uint32_t i = 0; i < hooks->children; i++) {
  ------------------
  |  Branch (7999:23): [True: 146, False: 120]
  ------------------
 8000|    146|		const zend_ast_decl *hook = (const zend_ast_decl *) hooks->child[i];
 8001|    146|		zend_ast *body = hook->child[2];
 8002|    146|		if (body && zend_property_hook_uses_property(property_name, hook->name, body)) {
  ------------------
  |  Branch (8002:7): [True: 126, False: 20]
  |  Branch (8002:15): [True: 26, False: 100]
  ------------------
 8003|     26|			is_virtual = false;
 8004|     26|		}
 8005|    146|	}
 8006|       |
 8007|    120|	return is_virtual;
 8008|    506|}
zend_compile.c:zend_property_hook_uses_property:
 7976|    126|{
 7977|    126|	if (zend_string_equals_literal_ci(hook_name, "set")
  ------------------
  |  |  404|    252|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    126|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|    125|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    125|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 125, False: 1]
  |  |  |  Branch (404:40): [True: 56, False: 69]
  |  |  ------------------
  ------------------
 7978|     56|	 && hook_ast->kind == ZEND_AST_PROPERTY_HOOK_SHORT_BODY) {
  ------------------
  |  Branch (7978:6): [True: 9, False: 47]
  ------------------
 7979|      9|		return true;
 7980|      9|	}
 7981|       |
 7982|    117|	find_property_usage_context context = { property_name, false };
 7983|    117|	zend_property_hook_find_property_usage(&hook_ast, &context);
 7984|    117|	return context.uses_property;
 7985|    126|}
zend_compile.c:zend_property_hook_find_property_usage:
 7943|    332|{
 7944|    332|	zend_ast *ast = *ast_ptr;
 7945|    332|	find_property_usage_context *context = (find_property_usage_context *) _context;
 7946|       |
 7947|    332|	if (ast == NULL) {
  ------------------
  |  Branch (7947:6): [True: 0, False: 332]
  ------------------
 7948|      0|		return;
 7949|    332|	} else if (ast->kind == ZEND_AST_PROP || ast->kind == ZEND_AST_NULLSAFE_PROP) {
  ------------------
  |  Branch (7949:13): [True: 21, False: 311]
  |  Branch (7949:43): [True: 0, False: 311]
  ------------------
 7950|     21|		const zend_ast *object_ast = ast->child[0];
 7951|     21|		zend_ast *property_ast = ast->child[1];
 7952|       |
 7953|     21|		if (object_ast->kind == ZEND_AST_VAR
  ------------------
  |  Branch (7953:7): [True: 21, False: 0]
  ------------------
 7954|     21|		 && object_ast->child[0]->kind == ZEND_AST_ZVAL
  ------------------
  |  Branch (7954:7): [True: 21, False: 0]
  ------------------
 7955|     21|		 && property_ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (7955:7): [True: 21, False: 0]
  ------------------
 7956|     21|			const zval *object = zend_ast_get_zval(object_ast->child[0]);
 7957|     21|			const zval *property = zend_ast_get_zval(property_ast);
 7958|     21|			if (Z_TYPE_P(object) == IS_STRING
  ------------------
  |  |  669|     21|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     21|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(object) == IS_STRING
  ------------------
  |  |  612|     42|#define IS_STRING					6
  ------------------
  |  Branch (7958:8): [True: 21, False: 0]
  ------------------
 7959|     21|				&& Z_TYPE_P(property) == IS_STRING
  ------------------
  |  |  669|     21|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     21|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				&& Z_TYPE_P(property) == IS_STRING
  ------------------
  |  |  612|     42|#define IS_STRING					6
  ------------------
  |  Branch (7959:8): [True: 21, False: 0]
  ------------------
 7960|     21|				&& zend_string_equals_literal(Z_STR_P(object), "this")
  ------------------
  |  |  407|     42|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 20, False: 1]
  |  |  ------------------
  ------------------
 7961|     20|				&& zend_string_equals(Z_STR_P(property), context->property_name)) {
  ------------------
  |  |  982|     20|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     20|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (7961:8): [True: 17, False: 3]
  ------------------
 7962|     17|				context->uses_property = true;
 7963|       |				/* No need to look for references in this branch. */
 7964|     17|				return;
 7965|     17|			}
 7966|     21|		}
 7967|     21|	}
 7968|       |
 7969|       |	/* Don't search across function/class boundaries. */
 7970|    315|	if (!zend_ast_is_special(ast)) {
  ------------------
  |  Branch (7970:6): [True: 228, False: 87]
  ------------------
 7971|    228|		zend_ast_apply(ast, zend_property_hook_find_property_usage, context);
 7972|    228|	}
 7973|    315|}
zend_compile.c:zend_compile_property_hooks:
 8950|    132|{
 8951|    132|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    132|# define CG(v) (compiler_globals.v)
  ------------------
 8952|       |
 8953|    132|	if (prop_info->flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|    132|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (8953:6): [True: 3, False: 129]
  ------------------
 8954|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Hooked properties cannot be readonly");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8955|      3|	}
 8956|       |
 8957|    129|	if (hooks->children == 0) {
  ------------------
  |  Branch (8957:6): [True: 1, False: 128]
  ------------------
 8958|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Property hook list must not be empty");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8959|      1|	}
 8960|       |
 8961|    268|	for (uint32_t i = 0; i < hooks->children; i++) {
  ------------------
  |  Branch (8961:23): [True: 155, False: 113]
  ------------------
 8962|    155|		zend_ast_decl *hook = (zend_ast_decl *) hooks->child[i];
 8963|    155|		zend_string *name = hook->name;
 8964|    155|		zend_ast *stmt_ast = hook->child[2];
 8965|    155|		zend_ast **return_type_ast_ptr = NULL;
 8966|    155|		zend_ast **value_type_ast_ptr = NULL;
 8967|    155|		CG(zend_lineno) = hook->start_lineno;
  ------------------
  |  |   35|    155|# define CG(v) (compiler_globals.v)
  ------------------
 8968|       |
 8969|       |		/* Non-private hooks are always public. This avoids having to copy the hook when inheriting
 8970|       |		 * hooks from protected properties to public ones. */
 8971|    155|		uint32_t hook_visibility = (prop_info->flags & ZEND_ACC_PPP_MASK) != ZEND_ACC_PRIVATE ? ZEND_ACC_PUBLIC : ZEND_ACC_PRIVATE;
  ------------------
  |  |  421|    155|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    155|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    155|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    155|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              		uint32_t hook_visibility = (prop_info->flags & ZEND_ACC_PPP_MASK) != ZEND_ACC_PRIVATE ? ZEND_ACC_PUBLIC : ZEND_ACC_PRIVATE;
  ------------------
  |  |  221|    155|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		uint32_t hook_visibility = (prop_info->flags & ZEND_ACC_PPP_MASK) != ZEND_ACC_PRIVATE ? ZEND_ACC_PUBLIC : ZEND_ACC_PRIVATE;
  ------------------
  |  |  219|    153|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              		uint32_t hook_visibility = (prop_info->flags & ZEND_ACC_PPP_MASK) != ZEND_ACC_PRIVATE ? ZEND_ACC_PUBLIC : ZEND_ACC_PRIVATE;
  ------------------
  |  |  221|    157|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (8971:30): [True: 153, False: 2]
  ------------------
 8972|    155|		hook->flags |= hook_visibility;
 8973|       |
 8974|    155|		if (prop_info->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|    155|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (8974:7): [True: 1, False: 154]
  ------------------
 8975|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare hooks for static property");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8976|      1|		}
 8977|    154|		if ((hook->flags & ZEND_ACC_FINAL) && (hook->flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  230|    154|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              		if ((hook->flags & ZEND_ACC_FINAL) && (hook->flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      3|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (8977:7): [True: 3, False: 151]
  |  Branch (8977:41): [True: 1, False: 2]
  ------------------
 8978|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Property hook cannot be both final and private");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8979|      1|		}
 8980|    153|		if ((ce->ce_flags & ZEND_ACC_INTERFACE)
  ------------------
  |  |  281|    153|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (8980:7): [True: 14, False: 139]
  ------------------
 8981|    139|		 || ((prop_info->flags & ZEND_ACC_ABSTRACT) && !stmt_ast)) {
  ------------------
  |  |  233|    139|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (8981:8): [True: 17, False: 122]
  |  Branch (8981:50): [True: 14, False: 3]
  ------------------
 8982|     28|			hook->flags |= ZEND_ACC_ABSTRACT;
  ------------------
  |  |  233|     28|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
 8983|       |
 8984|     28|			if (stmt_ast) {
  ------------------
  |  Branch (8984:8): [True: 0, False: 28]
  ------------------
 8985|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Abstract property hook cannot have body");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8986|      0|			}
 8987|     28|			if (hook->flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|     28|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (8987:8): [True: 1, False: 27]
  ------------------
 8988|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8989|      1|					"Property hook cannot be both abstract and private");
 8990|      1|			}
 8991|     27|			if (hook->flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     27|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (8991:8): [True: 1, False: 26]
  ------------------
 8992|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Property hook cannot be both abstract and final");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8993|      1|			}
 8994|    125|		} else if (!stmt_ast) {
  ------------------
  |  Branch (8994:14): [True: 1, False: 124]
  ------------------
 8995|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Non-abstract property hook must have a body");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8996|      1|		}
 8997|       |
 8998|    150|		zend_property_hook_kind hook_kind = zend_get_property_hook_kind_from_name(name);
 8999|    150|		if (hook_kind == (zend_property_hook_kind)-1) {
  ------------------
  |  Branch (8999:7): [True: 2, False: 148]
  ------------------
 9000|      2|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9001|      2|				"Unknown hook \"%s\" for property %s::$%s, expected \"get\" or \"set\"",
 9002|      2|				ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9003|      2|		}
 9004|       |
 9005|    148|		if (stmt_ast && stmt_ast->kind == ZEND_AST_PROPERTY_HOOK_SHORT_BODY) {
  ------------------
  |  Branch (9005:7): [True: 123, False: 25]
  |  Branch (9005:19): [True: 39, False: 84]
  ------------------
 9006|     39|			stmt_ast = stmt_ast->child[0];
 9007|     39|			if (hook_kind == ZEND_PROPERTY_HOOK_GET) {
  ------------------
  |  Branch (9007:8): [True: 32, False: 7]
  ------------------
 9008|     32|				stmt_ast = zend_ast_create(ZEND_AST_RETURN, stmt_ast);
  ------------------
  |  |  316|     32|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     32|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     32|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9009|     32|			} else {
 9010|      7|				ZEND_ASSERT(hook_kind == ZEND_PROPERTY_HOOK_SET);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9010:5): [True: 0, False: 7]
  |  Branch (9010:5): [True: 7, False: 0]
  ------------------
 9011|      7|				stmt_ast = zend_ast_create(ZEND_AST_ASSIGN,
  ------------------
  |  |  316|      7|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      7|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      7|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9012|      7|					zend_ast_create(ZEND_AST_PROP,
 9013|      7|						zend_ast_create(ZEND_AST_VAR, zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_THIS))),
 9014|      7|						zend_ast_create_zval_from_str(zend_copy_unmangled_prop_name(prop_info->name))),
 9015|      7|					stmt_ast);
 9016|      7|			}
 9017|     39|			stmt_ast = zend_ast_create_list(1, ZEND_AST_STMT_LIST, stmt_ast);
  ------------------
  |  |  320|     39|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     39|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     39|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9018|     39|			hook->child[2] = stmt_ast;
 9019|     39|		}
 9020|       |
 9021|    148|		if (hook_kind == ZEND_PROPERTY_HOOK_GET) {
  ------------------
  |  Branch (9021:7): [True: 86, False: 62]
  ------------------
 9022|     86|			if (hook->child[0]) {
  ------------------
  |  Branch (9022:8): [True: 1, False: 85]
  ------------------
 9023|      1|				zend_error_noreturn(E_COMPILE_ERROR, "get hook of property %s::$%s must not have a parameter list",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9024|      1|					ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9025|      1|			}
 9026|       |
 9027|     85|			hook->child[0] = zend_ast_create_list(0, ZEND_AST_PARAM_LIST);
  ------------------
  |  |  320|     85|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     85|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     85|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9028|       |
 9029|     85|			return_type_ast_ptr = &hook->child[3];
 9030|     85|			*return_type_ast_ptr = prop_type_ast;
 9031|     85|		} else if (hook_kind == ZEND_PROPERTY_HOOK_SET) {
  ------------------
  |  Branch (9031:14): [True: 62, False: 0]
  ------------------
 9032|     62|			if (hook->child[0]) {
  ------------------
  |  Branch (9032:8): [True: 12, False: 50]
  ------------------
 9033|     12|				const zend_ast_list *param_list = zend_ast_get_list(hook->child[0]);
 9034|     12|				if (param_list->children != 1) {
  ------------------
  |  Branch (9034:9): [True: 0, False: 12]
  ------------------
 9035|      0|					zend_error_noreturn(E_COMPILE_ERROR, "%s hook of property %s::$%s must accept exactly one parameters",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9036|      0|						ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9037|      0|				}
 9038|     12|				const zend_ast *value_param_ast = param_list->child[0];
 9039|     12|				if (value_param_ast->attr & ZEND_PARAM_REF) {
  ------------------
  |  | 1057|     12|#define ZEND_PARAM_REF      (1<<3)
  ------------------
  |  Branch (9039:9): [True: 1, False: 11]
  ------------------
 9040|      1|					zend_error_noreturn(E_COMPILE_ERROR, "Parameter $%s of %s hook %s::$%s must not be pass-by-reference",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9041|      1|						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9042|      1|				}
 9043|     11|				if (value_param_ast->attr & ZEND_PARAM_VARIADIC) {
  ------------------
  |  | 1058|     11|#define ZEND_PARAM_VARIADIC (1<<4)
  ------------------
  |  Branch (9043:9): [True: 1, False: 10]
  ------------------
 9044|      1|					zend_error_noreturn(E_COMPILE_ERROR, "Parameter $%s of %s hook %s::$%s must not be variadic",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9045|      1|						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9046|      1|				}
 9047|     10|				if (value_param_ast->child[2]) {
  ------------------
  |  Branch (9047:9): [True: 1, False: 9]
  ------------------
 9048|      1|					zend_error_noreturn(E_COMPILE_ERROR, "Parameter $%s of %s hook %s::$%s must not have a default value",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9049|      1|						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zend_ast_get_str(value_param_ast->child[1])), ZSTR_VAL(name), ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9050|      1|				}
 9051|      9|				if ((prop_type_ast != NULL) != (value_param_ast->child[0] != NULL)) {
  ------------------
  |  Branch (9051:9): [True: 1, False: 8]
  ------------------
 9052|      1|					zend_hooked_property_variance_error_ex(zend_ast_get_str(value_param_ast->child[1]), ce->name, prop_info->name);
 9053|      1|				}
 9054|     50|			} else {
 9055|     50|				zend_ast *param_name_ast = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_VALUE));
 9056|     50|				zend_ast *param = zend_ast_create(
  ------------------
  |  |  316|     50|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     50|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     50|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9057|     50|					ZEND_AST_PARAM, prop_type_ast, param_name_ast,
 9058|     50|					/* expr */ NULL, /* doc_comment */ NULL, /* attributes */ NULL,
 9059|     50|					/* hooks */ NULL);
 9060|     50|				value_type_ast_ptr = &param->child[0];
 9061|     50|				hook->child[0] = zend_ast_create_list(1, ZEND_AST_PARAM_LIST, param);
  ------------------
  |  |  320|     50|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     50|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     50|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9062|     50|			}
 9063|     58|			zend_ast *return_type = zend_ast_create(ZEND_AST_TYPE);
  ------------------
  |  |  316|     58|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     58|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     58|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9064|     58|			return_type->attr = IS_VOID;
  ------------------
  |  |  623|     58|#define IS_VOID						14
  ------------------
 9065|     58|			hook->child[3] = return_type;
 9066|     58|		} else {
 9067|      0|			ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9067:4): [Folded, False: 0]
  |  Branch (9067:4): [Folded, False: 0]
  ------------------
 9068|      0|		}
 9069|       |
 9070|    143|		hook->name = zend_strpprintf(0, "$%s::%s", ZSTR_VAL(prop_name), ZSTR_VAL(name));
  ------------------
  |  |   67|    143|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		hook->name = zend_strpprintf(0, "$%s::%s", ZSTR_VAL(prop_name), ZSTR_VAL(name));
  ------------------
  |  |   67|    143|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9071|       |
 9072|    143|		zend_function *func = (zend_function *) zend_compile_func_decl_ex(
 9073|    143|			NULL, (zend_ast *) hook, FUNC_DECL_LEVEL_NESTED, prop_info->name, hook_kind);
 9074|       |
 9075|    143|		func->common.prop_info = prop_info;
 9076|       |
 9077|    143|		if (!prop_info->hooks) {
  ------------------
  |  Branch (9077:7): [True: 111, False: 32]
  ------------------
 9078|    111|			prop_info->hooks = zend_arena_alloc(&CG(arena), ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |   35|    111|# define CG(v) (compiler_globals.v)
  ------------------
              			prop_info->hooks = zend_arena_alloc(&CG(arena), ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |  459|    111|#define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT)
  |  |  ------------------
  |  |  |  |  458|    111|#define ZEND_PROPERTY_HOOK_COUNT 2
  |  |  ------------------
  ------------------
 9079|    111|			memset(prop_info->hooks, 0, ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |  459|    111|#define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT)
  |  |  ------------------
  |  |  |  |  458|    111|#define ZEND_PROPERTY_HOOK_COUNT 2
  |  |  ------------------
  ------------------
 9080|    111|		}
 9081|       |
 9082|    143|		if (prop_info->hooks[hook_kind]) {
  ------------------
  |  Branch (9082:7): [True: 2, False: 141]
  ------------------
 9083|      2|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9084|      2|				"Cannot redeclare property hook \"%s\"", ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9085|      2|		}
 9086|    141|		prop_info->hooks[hook_kind] = func;
 9087|       |
 9088|    141|		if (hook_kind == ZEND_PROPERTY_HOOK_SET) {
  ------------------
  |  Branch (9088:7): [True: 56, False: 85]
  ------------------
 9089|     56|			switch (zend_verify_property_hook_variance(prop_info, func)) {
  ------------------
  |  Branch (9089:12): [True: 56, False: 0]
  ------------------
 9090|     51|				case INHERITANCE_SUCCESS:
  ------------------
  |  Branch (9090:5): [True: 51, False: 5]
  ------------------
 9091|     51|					break;
 9092|      4|				case INHERITANCE_UNRESOLVED:
  ------------------
  |  Branch (9092:5): [True: 4, False: 52]
  ------------------
 9093|      4|					ce->num_hooked_prop_variance_checks++;
 9094|      4|					break;
 9095|      1|				case INHERITANCE_ERROR:
  ------------------
  |  Branch (9095:5): [True: 1, False: 55]
  ------------------
 9096|      1|					zend_hooked_property_variance_error(prop_info);
 9097|      0|				case INHERITANCE_WARNING:
  ------------------
  |  Branch (9097:5): [True: 0, False: 56]
  ------------------
 9098|      0|					ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9098:6): [Folded, False: 0]
  |  Branch (9098:6): [Folded, False: 0]
  ------------------
 9099|     56|			}
 9100|     56|		}
 9101|       |
 9102|    140|		zend_string_release(name);
 9103|       |		/* Un-share type ASTs to avoid double-frees of zval nodes. */
 9104|    140|		if (return_type_ast_ptr) {
  ------------------
  |  Branch (9104:7): [True: 80, False: 60]
  ------------------
 9105|     80|			*return_type_ast_ptr = NULL;
 9106|     80|		}
 9107|    140|		if (value_type_ast_ptr) {
  ------------------
  |  Branch (9107:7): [True: 48, False: 92]
  ------------------
 9108|     48|			*value_type_ast_ptr = NULL;
 9109|     48|		}
 9110|    140|	}
 9111|       |
 9112|    113|	ce->num_hooked_props++;
 9113|       |
 9114|       |	/* See zend_link_hooked_object_iter(). */
 9115|    113|#ifndef ZEND_OPCACHE_SHM_REATTACHMENT
 9116|    113|	if (!ce->get_iterator) {
  ------------------
  |  Branch (9116:6): [True: 107, False: 6]
  ------------------
 9117|       |		/* Will be removed again, in case of Iterator or IteratorAggregate. */
 9118|    107|		ce->get_iterator = zend_hooked_object_get_iterator;
 9119|    107|	}
 9120|    113|#endif
 9121|       |
 9122|    113|	if (!prop_info->ce->parent_name) {
  ------------------
  |  Branch (9122:6): [True: 75, False: 38]
  ------------------
 9123|     75|		zend_verify_hooked_property(ce, prop_info, prop_name);
 9124|     75|	}
 9125|    113|}
zend_compile.c:zend_copy_unmangled_prop_name:
 5335|      7|{
 5336|      7|	if (ZSTR_VAL(prop_name)[0] != '\0') {
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (5336:6): [True: 7, False: 0]
  ------------------
 5337|      7|		return zend_string_copy(prop_name);
 5338|      7|	} else {
 5339|      0|		const char *unmangled = zend_get_unmangled_property_name(prop_name);
 5340|       |		return zend_string_init(unmangled, strlen(unmangled), /* persistent */ false);
 5341|      0|	}
 5342|      7|}
zend_compile.c:zend_alloc_cache_slots:
   69|  8.37k|static inline uint32_t zend_alloc_cache_slots(unsigned count) {
   70|  8.37k|	if (count == 0) {
  ------------------
  |  Branch (70:6): [True: 0, False: 8.37k]
  ------------------
   71|       |		/* Even if no cache slots are desired, the VM handler may still want to acquire
   72|       |		 * CACHE_ADDR() unconditionally. Returning zero makes sure that the address
   73|       |		 * calculation is still legal and ubsan does not complain. */
   74|      0|		return 0;
   75|      0|	}
   76|       |
   77|  8.37k|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|  8.37k|# define CG(v) (compiler_globals.v)
  ------------------
   78|  8.37k|	uint32_t ret = op_array->cache_size;
   79|  8.37k|	op_array->cache_size += count * sizeof(void*);
   80|  8.37k|	return ret;
   81|  8.37k|}
zend_compile.c:zend_emit_op_data:
 2362|    606|{
 2363|    606|	return zend_emit_op(NULL, ZEND_OP_DATA, value, NULL);
  ------------------
  |  |  259|    606|#define ZEND_OP_DATA                        137
  ------------------
 2364|    606|}
zend_compile.c:zend_mark_function_as_generator:
 1546|    231|{
 1547|    231|	if (!CG(active_op_array)->function_name) {
  ------------------
  |  |   35|    231|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1547:6): [True: 2, False: 229]
  ------------------
 1548|      2|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1549|      2|			"The \"yield\" expression can only be used inside a function");
 1550|      2|	}
 1551|       |
 1552|    229|	if (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |   35|    229|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|    229|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (1552:6): [True: 21, False: 208]
  ------------------
 1553|     21|		const zend_type return_type = CG(active_op_array)->arg_info[-1].type;
  ------------------
  |  |   35|     21|# define CG(v) (compiler_globals.v)
  ------------------
 1554|     21|		bool valid_type = (ZEND_TYPE_FULL_MASK(return_type) & MAY_BE_OBJECT) != 0;
  ------------------
  |  |  261|     21|	((t).type_mask)
  ------------------
              		bool valid_type = (ZEND_TYPE_FULL_MASK(return_type) & MAY_BE_OBJECT) != 0;
  ------------------
  |  |   32|     21|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|     21|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
 1555|     21|		if (!valid_type) {
  ------------------
  |  Branch (1555:7): [True: 21, False: 0]
  ------------------
 1556|     21|			const zend_type *single_type;
 1557|     46|			ZEND_TYPE_FOREACH(return_type, single_type) {
  ------------------
  |  |  214|     21|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|     21|	const zend_type *_cur, *_end; \
  |  |  216|     21|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|     21|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     21|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 7, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|      7|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|      7|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|      7|		_cur = _list->types; \
  |  |  219|      7|		_end = _cur + _list->num_types; \
  |  |  220|     14|	} else { \
  |  |  221|     14|		_cur = &(type); \
  |  |  222|     14|		_end = _cur + 1; \
  |  |  223|     14|	} \
  |  |  224|     25|	do { \
  |  |  225|     25|		type_ptr = _cur;
  ------------------
 1558|     46|				if (ZEND_TYPE_HAS_NAME(*single_type)
  ------------------
  |  |  160|     50|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|     25|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 24, False: 1]
  |  |  ------------------
  ------------------
 1559|     24|						&& is_generator_compatible_class_type(ZEND_TYPE_NAME(*single_type))) {
  ------------------
  |  |  184|     24|	((zend_string *) (t).ptr)
  ------------------
  |  Branch (1559:10): [True: 16, False: 8]
  ------------------
 1560|     16|					valid_type = true;
 1561|     16|					break;
 1562|     16|				}
 1563|     46|			} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|     25|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 4, False: 5]
  |  |  ------------------
  |  |  244|     21|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 21]
  |  |  ------------------
  ------------------
 1564|     21|		}
 1565|       |
 1566|     21|		if (!valid_type) {
  ------------------
  |  Branch (1566:7): [True: 5, False: 16]
  ------------------
 1567|      5|			zend_string *str = zend_type_to_string(return_type);
 1568|      5|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1569|      5|				"Generator return type must be a supertype of Generator, %s given",
 1570|      5|				ZSTR_VAL(str));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1571|      5|		}
 1572|     21|	}
 1573|       |
 1574|    224|	CG(active_op_array)->fn_flags |= ZEND_ACC_GENERATOR;
  ------------------
  |  |   35|    224|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(active_op_array)->fn_flags |= ZEND_ACC_GENERATOR;
  ------------------
  |  |  387|    224|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
 1575|    224|}
zend_compile.c:is_generator_compatible_class_type:
 1539|     24|static bool is_generator_compatible_class_type(const zend_string *name) {
 1540|     24|	return zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_TRAVERSABLE))
  ------------------
  |  |  401|     48|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     24|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     48|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 7, False: 17]
  |  |  |  Branch (401:35): [True: 4, False: 3]
  |  |  ------------------
  ------------------
 1541|     20|		|| zend_string_equals_literal_ci(name, "Iterator")
  ------------------
  |  |  404|     44|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 5, False: 15]
  |  |  |  Branch (404:40): [True: 2, False: 3]
  |  |  ------------------
  ------------------
 1542|     18|		|| zend_string_equals_literal_ci(name, "Generator");
  ------------------
  |  |  404|     42|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 11, False: 7]
  |  |  |  Branch (404:40): [True: 10, False: 1]
  |  |  ------------------
  ------------------
 1543|     24|}
zend_compile.c:zend_compile_implicit_closure_uses:
 8513|     32|{
 8514|     32|	zend_string *var_name;
 8515|     81|	ZEND_HASH_MAP_FOREACH_STR_KEY(&info->uses, var_name) {
  ------------------
  |  | 1361|      9|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     32|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     32|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     32|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     32|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     32|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     32|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     41|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 9, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      9|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      9|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      9|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 9]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      9|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|      8|	_key = _p->key;
  ------------------
  |  Branch (8515:2): [True: 0, False: 32]
  |  Branch (8515:2): [True: 32, False: 0]
  ------------------
 8516|     81|		zval zv;
 8517|     81|		ZVAL_NULL(&zv);
  ------------------
  |  | 1059|      8|#define ZVAL_NULL(z) do {				\
  |  | 1060|      8|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      8|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 8518|     81|		zend_compile_static_var_common(var_name, &zv, ZEND_BIND_IMPLICIT);
  ------------------
  |  | 1203|      8|#define ZEND_BIND_IMPLICIT 2
  ------------------
 8519|     81|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
 8520|     32|}
zend_compile.c:zend_compile_static_var_common:
 5757|     66|{
 5758|     66|	zend_op *opline;
 5759|     66|	if (!CG(active_op_array)->static_variables) {
  ------------------
  |  |   35|     66|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5759:6): [True: 0, False: 66]
  ------------------
 5760|      0|		if (CG(active_op_array)->scope) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5760:7): [True: 0, False: 0]
  ------------------
 5761|      0|			CG(active_op_array)->scope->ce_flags |= ZEND_HAS_STATIC_IN_METHODS;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(active_op_array)->scope->ce_flags |= ZEND_HAS_STATIC_IN_METHODS;
  ------------------
  |  |  304|      0|#define ZEND_HAS_STATIC_IN_METHODS       (1 << 14) /*  X  |     |     |     */
  ------------------
 5762|      0|		}
 5763|      0|		CG(active_op_array)->static_variables = zend_new_array(8);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(active_op_array)->static_variables = zend_new_array(8);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 5764|      0|	}
 5765|       |
 5766|     66|	value = zend_hash_update(CG(active_op_array)->static_variables, var_name, value);
  ------------------
  |  |   35|     66|# define CG(v) (compiler_globals.v)
  ------------------
 5767|       |
 5768|     66|	if (zend_string_equals(var_name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (5768:6): [True: 0, False: 66]
  ------------------
 5769|      0|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use $this as static variable");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5770|      0|	}
 5771|       |
 5772|     66|	opline = zend_emit_op(NULL, ZEND_BIND_STATIC, NULL, NULL);
  ------------------
  |  |  305|     66|#define ZEND_BIND_STATIC                    183
  ------------------
 5773|     66|	opline->op1_type = IS_CV;
  ------------------
  |  |  867|     66|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 5774|     66|	opline->op1.var = lookup_cv(var_name);
 5775|     66|	opline->extended_value = (uint32_t)((char*)value - (char*)CG(active_op_array)->static_variables->arData) | mode;
  ------------------
  |  |   35|     66|# define CG(v) (compiler_globals.v)
  ------------------
 5776|     66|}
zend_compile.c:zend_compile_closure_uses:
 8479|     32|{
 8480|     32|	const zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|     32|# define CG(v) (compiler_globals.v)
  ------------------
 8481|     32|	const zend_ast_list *list = zend_ast_get_list(ast);
 8482|     32|	uint32_t i;
 8483|       |
 8484|     68|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (8484:14): [True: 37, False: 31]
  ------------------
 8485|     37|		uint32_t mode = ZEND_BIND_EXPLICIT;
  ------------------
  |  | 1204|     37|#define ZEND_BIND_EXPLICIT 4
  ------------------
 8486|     37|		zend_ast *var_ast = list->child[i];
 8487|     37|		zend_string *var_name = zend_ast_get_str(var_ast);
 8488|     37|		zval zv;
 8489|     37|		ZVAL_NULL(&zv);
  ------------------
  |  | 1059|     37|#define ZVAL_NULL(z) do {				\
  |  | 1060|     37|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     37|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     37|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     37|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
 8490|       |
 8491|     37|		{
 8492|     37|			int i;
 8493|     58|			for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (8493:16): [True: 22, False: 36]
  ------------------
 8494|     22|				if (zend_string_equals(op_array->vars[i], var_name)) {
  ------------------
  |  Branch (8494:9): [True: 1, False: 21]
  ------------------
 8495|      1|					zend_error_noreturn_unchecked(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 8496|      1|						"Cannot use lexical variable $%S as a parameter name", var_name);
 8497|      1|				}
 8498|     22|			}
 8499|     37|		}
 8500|       |
 8501|     36|		CG(zend_lineno) = zend_ast_get_lineno(var_ast);
  ------------------
  |  |   35|     36|# define CG(v) (compiler_globals.v)
  ------------------
 8502|       |
 8503|     36|		if (var_ast->attr) {
  ------------------
  |  Branch (8503:7): [True: 18, False: 18]
  ------------------
 8504|     18|			mode |= ZEND_BIND_REF;
  ------------------
  |  | 1202|     18|#define ZEND_BIND_REF      1
  ------------------
 8505|     18|		}
 8506|       |
 8507|     36|		zend_compile_static_var_common(var_name, &zv, mode);
 8508|     36|	}
 8509|     32|}
zend_compile.c:zend_do_extended_stmt:
 1941|  1.73k|{
 1942|  1.73k|	zend_op *opline;
 1943|       |
 1944|  1.73k|	if (!(CG(compiler_options) & ZEND_COMPILE_EXTENDED_STMT)) {
  ------------------
  |  |   35|  1.73k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (!(CG(compiler_options) & ZEND_COMPILE_EXTENDED_STMT)) {
  ------------------
  |  | 1261|  1.73k|#define ZEND_COMPILE_EXTENDED_STMT              (1<<0)
  ------------------
  |  Branch (1944:6): [True: 1.73k, False: 0]
  ------------------
 1945|  1.73k|		return;
 1946|  1.73k|	}
 1947|       |
 1948|      0|	opline = get_next_op();
 1949|       |
 1950|      0|	opline->opcode = ZEND_EXT_STMT;
  ------------------
  |  |  223|      0|#define ZEND_EXT_STMT                       101
  ------------------
 1951|      0|	if (result) {
  ------------------
  |  Branch (1951:6): [True: 0, False: 0]
  ------------------
 1952|      0|		if (result->op_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1952:7): [True: 0, False: 0]
  ------------------
 1953|      0|			Z_TRY_ADDREF(result->u.constant);
  ------------------
  |  | 1299|      0|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      0|	zval *_pz = (pz);				\
  |  |  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1954|      0|		}
 1955|      0|		SET_NODE(opline->op1, result);
  ------------------
  |  |   42|      0|#define SET_NODE(target, src) do { \
  |  |   43|      0|		target ## _type = (src)->op_type; \
  |  |   44|      0|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      0|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|      0|		} else { \
  |  |   47|      0|			target = (src)->u.op; \
  |  |   48|      0|		} \
  |  |   49|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1956|      0|	}
 1957|      0|}
zend_compile.c:zend_compile_class_decl:
 9534|  1.75k|{
 9535|  1.75k|	const zend_ast_decl *decl = (const zend_ast_decl *) ast;
 9536|  1.75k|	zend_ast *extends_ast = decl->child[0];
 9537|  1.75k|	zend_ast *implements_ast = decl->child[1];
 9538|  1.75k|	zend_ast *stmt_ast = decl->child[2];
 9539|  1.75k|	zend_ast *enum_backing_type_ast = decl->child[4];
 9540|  1.75k|	zend_string *name, *lcname;
 9541|  1.75k|	zend_class_entry *ce = zend_arena_alloc(&CG(arena), sizeof(zend_class_entry));
  ------------------
  |  |   35|  1.75k|# define CG(v) (compiler_globals.v)
  ------------------
 9542|  1.75k|	zend_op *opline;
 9543|       |
 9544|  1.75k|	zend_class_entry *original_ce = CG(active_class_entry);
  ------------------
  |  |   35|  1.75k|# define CG(v) (compiler_globals.v)
  ------------------
 9545|       |
 9546|  1.75k|	if (EXPECTED((decl->flags & ZEND_ACC_ANON_CLASS) == 0)) {
  ------------------
  |  |  456|  1.75k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.71k, False: 40]
  |  |  ------------------
  ------------------
 9547|  1.71k|		zend_string *unqualified_name = decl->name;
 9548|       |
 9549|  1.71k|		if (CG(active_class_entry)) {
  ------------------
  |  |   35|  1.71k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 1, False: 1.71k]
  |  |  ------------------
  ------------------
 9550|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Class declarations may not be nested");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9551|      1|		}
 9552|       |
 9553|  1.71k|		const char *type = "a class name";
 9554|  1.71k|		if (decl->flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|  1.71k|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (9554:7): [True: 140, False: 1.57k]
  ------------------
 9555|    140|			type = "an enum name";
 9556|  1.57k|		} else if (decl->flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|  1.57k|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (9556:14): [True: 159, False: 1.41k]
  ------------------
 9557|    159|			type = "an interface name";
 9558|  1.41k|		} else if (decl->flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|  1.41k|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (9558:14): [True: 140, False: 1.27k]
  ------------------
 9559|    140|			type = "a trait name";
 9560|    140|		}
 9561|  1.71k|		zend_assert_valid_class_name(unqualified_name, type);
 9562|  1.71k|		name = zend_prefix_with_ns(unqualified_name);
 9563|  1.71k|		name = zend_new_interned_string(name);
 9564|  1.71k|		lcname = zend_string_tolower(name);
 9565|       |
 9566|  1.71k|		if (FC(imports)) {
  ------------------
  |  |   60|  1.71k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  1.71k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 6, False: 1.70k]
  |  |  ------------------
  ------------------
 9567|      6|			zend_string *import_name =
 9568|      6|				zend_hash_find_ptr_lc(FC(imports), unqualified_name);
  ------------------
  |  |   60|      6|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 9569|      6|			if (import_name && !zend_string_equals_ci(lcname, import_name)) {
  ------------------
  |  |  401|      3|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 2, False: 1]
  |  |  |  Branch (401:35): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (9569:8): [True: 3, False: 3]
  ------------------
 9570|      2|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare class %s "
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9571|      2|						"(previously declared as local import)", ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9572|      2|			}
 9573|      6|		}
 9574|       |
 9575|  1.70k|		zend_register_seen_symbol(lcname, ZEND_SYMBOL_CLASS);
  ------------------
  |  | 1223|  1.70k|#define ZEND_SYMBOL_CLASS    (1<<0)
  ------------------
 9576|  1.70k|	} else {
 9577|       |		/* Find an anon class name that is not in use yet. */
 9578|     40|		name = NULL;
 9579|     40|		lcname = NULL;
 9580|     40|		do {
 9581|     40|			zend_tmp_string_release(name);
 9582|     40|			zend_tmp_string_release(lcname);
 9583|     40|			name = zend_generate_anon_class_name(decl);
 9584|     40|			lcname = zend_string_tolower(name);
 9585|     40|		} while (zend_hash_exists(CG(class_table), lcname));
  ------------------
  |  |   35|     40|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (9585:12): [True: 0, False: 40]
  ------------------
 9586|     40|	}
 9587|  1.74k|	lcname = zend_new_interned_string(lcname);
 9588|       |
 9589|  1.74k|	ce->type = ZEND_USER_CLASS;
 9590|  1.74k|	ce->name = name;
 9591|  1.74k|	zend_initialize_class_data(ce, true);
 9592|  1.74k|	if (!(decl->flags & ZEND_ACC_ANON_CLASS)) {
  ------------------
  |  |  283|  1.74k|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
  |  Branch (9592:6): [True: 1.69k, False: 49]
  ------------------
 9593|  1.69k|		zend_alloc_ce_cache(ce->name);
 9594|  1.69k|	}
 9595|       |
 9596|  1.74k|	if (CG(compiler_options) & ZEND_COMPILE_PRELOAD) {
  ------------------
  |  |   35|  1.74k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_PRELOAD) {
  ------------------
  |  | 1304|  1.74k|#define ZEND_COMPILE_PRELOAD                    (1<<15)
  ------------------
  |  Branch (9596:6): [True: 0, False: 1.74k]
  ------------------
 9597|      0|		ce->ce_flags |= ZEND_ACC_PRELOADED;
  ------------------
  |  |  250|      0|#define ZEND_ACC_PRELOADED               (1 << 10) /*  X  |  X  |     |     */
  ------------------
 9598|      0|		ZEND_MAP_PTR_NEW(ce->static_members_table);
  ------------------
  |  |   41|      0|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|      0|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   43|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9599|      0|		ZEND_MAP_PTR_NEW(ce->mutable_data);
  ------------------
  |  |   41|      0|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|      0|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   43|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9600|      0|	}
 9601|       |
 9602|  1.74k|	ce->ce_flags |= decl->flags;
 9603|  1.74k|	ce->info.user.filename = zend_string_copy(zend_get_compiled_filename());
 9604|  1.74k|	ce->info.user.line_start = decl->start_lineno;
 9605|  1.74k|	ce->info.user.line_end = decl->end_lineno;
 9606|       |
 9607|  1.74k|	if (decl->doc_comment) {
  ------------------
  |  Branch (9607:6): [True: 0, False: 1.74k]
  ------------------
 9608|      0|		ce->doc_comment = zend_string_copy(decl->doc_comment);
 9609|      0|	}
 9610|       |
 9611|  1.74k|	if (UNEXPECTED((decl->flags & ZEND_ACC_ANON_CLASS))) {
  ------------------
  |  |  457|  1.74k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 40, False: 1.70k]
  |  |  ------------------
  ------------------
 9612|       |		/* Serialization is not supported for anonymous classes */
 9613|     40|		ce->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
  ------------------
  |  |  341|     40|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 9614|     40|	}
 9615|       |
 9616|  1.74k|	if (extends_ast) {
  ------------------
  |  Branch (9616:6): [True: 259, False: 1.48k]
  ------------------
 9617|    259|		ce->parent_name =
 9618|    259|			zend_resolve_const_class_name_reference(extends_ast, "class name");
 9619|    259|	}
 9620|       |
 9621|  1.74k|	CG(active_class_entry) = ce;
  ------------------
  |  |   35|  1.74k|# define CG(v) (compiler_globals.v)
  ------------------
 9622|       |
 9623|  1.74k|	if (decl->child[3]) {
  ------------------
  |  Branch (9623:6): [True: 57, False: 1.69k]
  ------------------
 9624|     57|		zend_compile_attributes(&ce->attributes, decl->child[3], 0, ZEND_ATTRIBUTE_TARGET_CLASS, 0);
  ------------------
  |  |   25|     57|#define ZEND_ATTRIBUTE_TARGET_CLASS			(1<<0)
  ------------------
 9625|     57|	}
 9626|       |
 9627|  1.74k|	if (implements_ast) {
  ------------------
  |  Branch (9627:6): [True: 83, False: 1.66k]
  ------------------
 9628|     83|		zend_compile_implements(implements_ast);
 9629|     83|	}
 9630|       |
 9631|  1.74k|	if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|  1.74k|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (9631:6): [True: 136, False: 1.61k]
  ------------------
 9632|    136|		if (enum_backing_type_ast != NULL) {
  ------------------
  |  Branch (9632:7): [True: 36, False: 100]
  ------------------
 9633|     36|			zend_compile_enum_backing_type(ce, enum_backing_type_ast);
 9634|     36|		}
 9635|    136|		zend_enum_add_interfaces(ce);
 9636|    136|		zend_enum_register_props(ce);
 9637|    136|	}
 9638|       |
 9639|  1.74k|	zend_compile_stmt(stmt_ast);
 9640|       |
 9641|       |	/* Reset lineno for final opcodes and errors */
 9642|  1.74k|	CG(zend_lineno) = ast->lineno;
  ------------------
  |  |   35|  1.74k|# define CG(v) (compiler_globals.v)
  ------------------
 9643|       |
 9644|  1.74k|	if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  291|  1.74k|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  281|  1.74k|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  282|  1.74k|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  234|  1.74k|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  291|  1.74k|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
  |  Branch (9644:6): [True: 2, False: 1.74k]
  ------------------
 9645|      2|		zend_verify_abstract_class(ce);
 9646|      2|	}
 9647|       |
 9648|  1.74k|	CG(active_class_entry) = original_ce;
  ------------------
  |  |   35|  1.74k|# define CG(v) (compiler_globals.v)
  ------------------
 9649|       |
 9650|  1.74k|	if (toplevel) {
  ------------------
  |  Branch (9650:6): [True: 1.50k, False: 245]
  ------------------
 9651|  1.50k|		ce->ce_flags |= ZEND_ACC_TOP_LEVEL;
  ------------------
  |  |  247|  1.50k|#define ZEND_ACC_TOP_LEVEL               (1 <<  9) /*  X  |  X  |     |     */
  ------------------
 9652|  1.50k|	}
 9653|       |
 9654|       |	/* We currently don't early-bind classes that implement interfaces or use traits */
 9655|  1.74k|	if (!ce->num_interfaces && !ce->num_traits && !ce->num_hooked_prop_variance_checks
  ------------------
  |  Branch (9655:6): [True: 1.34k, False: 405]
  |  Branch (9655:29): [True: 1.25k, False: 93]
  |  Branch (9655:48): [True: 1.24k, False: 4]
  ------------------
 9656|       |#ifdef ZEND_OPCACHE_SHM_REATTACHMENT
 9657|       |	 /* See zend_link_hooked_object_iter(). */
 9658|       |	 && !ce->num_hooked_props
 9659|       |#endif
 9660|  1.24k|	 && !(CG(compiler_options) & ZEND_COMPILE_WITHOUT_EXECUTION)) {
  ------------------
  |  |   35|  1.24k|# define CG(v) (compiler_globals.v)
  ------------------
              	 && !(CG(compiler_options) & ZEND_COMPILE_WITHOUT_EXECUTION)) {
  ------------------
  |  | 1301|  1.24k|#define ZEND_COMPILE_WITHOUT_EXECUTION          (1<<14)
  ------------------
  |  Branch (9660:6): [True: 1.24k, False: 0]
  ------------------
 9661|  1.24k|		if (toplevel) {
  ------------------
  |  Branch (9661:7): [True: 1.19k, False: 47]
  ------------------
 9662|  1.19k|			if (extends_ast) {
  ------------------
  |  Branch (9662:8): [True: 230, False: 969]
  ------------------
 9663|    230|				zend_class_entry *parent_ce = zend_lookup_class_ex(
 9664|    230|					ce->parent_name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|    230|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
 9665|       |
 9666|    230|				if (parent_ce
  ------------------
  |  Branch (9666:9): [True: 218, False: 12]
  ------------------
 9667|    218|				 && !zend_compile_ignore_class(parent_ce, ce->info.user.filename)) {
  ------------------
  |  Branch (9667:9): [True: 218, False: 0]
  ------------------
 9668|    218|					if (zend_try_early_bind(ce, parent_ce, lcname, NULL)) {
  ------------------
  |  Branch (9668:10): [True: 121, False: 97]
  ------------------
 9669|    121|						zend_string_release(lcname);
 9670|    121|						return;
 9671|    121|					}
 9672|    218|				}
 9673|    969|			} else if (EXPECTED(zend_hash_add_ptr(CG(class_table), lcname, ce) != NULL)) {
  ------------------
  |  |  456|    969|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 957, False: 12]
  |  |  ------------------
  ------------------
 9674|    957|				zend_string_release(lcname);
 9675|    957|				zend_build_properties_info_table(ce);
 9676|    957|				zend_inheritance_check_override(ce);
 9677|    957|				ce->ce_flags |= ZEND_ACC_LINKED;
  ------------------
  |  |  287|    957|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
 9678|    957|				zend_observer_class_linked_notify(ce, lcname);
 9679|    957|				return;
 9680|    957|			} else {
 9681|     12|				goto link_unbound;
 9682|     12|			}
 9683|  1.19k|		} else if (!extends_ast) {
  ------------------
  |  Branch (9683:14): [True: 39, False: 8]
  ------------------
 9684|     51|link_unbound:
 9685|       |			/* Link unbound simple class */
 9686|     51|			zend_build_properties_info_table(ce);
 9687|     51|			zend_inheritance_check_override(ce);
 9688|     51|			ce->ce_flags |= ZEND_ACC_LINKED;
  ------------------
  |  |  287|     51|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
 9689|     51|		}
 9690|  1.24k|	}
 9691|       |
 9692|    670|	opline = get_next_op();
 9693|       |
 9694|    670|	if (ce->parent_name) {
  ------------------
  |  Branch (9694:6): [True: 62, False: 608]
  ------------------
 9695|       |		/* Lowercased parent name */
 9696|     62|		zend_string *lc_parent_name = zend_string_tolower(ce->parent_name);
 9697|     62|		opline->op2_type = IS_CONST;
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
 9698|     62|		LITERAL_STR(opline->op2, lc_parent_name);
  ------------------
  |  |  697|     62|#define LITERAL_STR(op, str) do { \
  |  |  698|     62|		zval _c; \
  |  |  699|     62|		ZVAL_STR(&_c, str); \
  |  |  ------------------
  |  |  |  | 1088|     62|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|     62|		zval *__z = (z);						\
  |  |  |  | 1090|     62|		zend_string *__s = (s);					\
  |  |  |  | 1091|     62|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     62|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     62|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|     62|		/* interned strings support */			\
  |  |  |  | 1093|     62|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     62|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     62|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 3, False: 59]
  |  |  |  |  ------------------
  |  |  |  | 1094|     62|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|     62|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|    121|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     59|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     59|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     59|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|     62|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  700|     62|		op.constant = zend_add_literal(&_c); \
  |  |  701|     62|	} while (0)
  |  |  ------------------
  |  |  |  Branch (701:11): [Folded, False: 62]
  |  |  ------------------
  ------------------
 9699|     62|	}
 9700|       |
 9701|    670|	opline->op1_type = IS_CONST;
  ------------------
  |  |  864|    670|#define IS_CONST	(1<<0)
  ------------------
 9702|       |	/* It's possible that `lcname` is not an interned string because it was not yet in the interned string table.
 9703|       |	 * However, by this point another thread may have caused `lcname` to be added in the interned string table.
 9704|       |	 * This will cause `lcname` to get freed once it is found in the interned string table. If we were to use
 9705|       |	 * LITERAL_STR() here we would not change the `lcname` pointer to the new value, and it would point to the
 9706|       |	 * now-freed string. This will cause issues when we use `lcname` in the code below. We solve this by using
 9707|       |	 * zend_add_literal_string() which gives us the new value. */
 9708|    670|	opline->op1.constant = zend_add_literal_string(&lcname);
 9709|       |
 9710|    670|	if (decl->flags & ZEND_ACC_ANON_CLASS) {
  ------------------
  |  |  283|    670|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
  |  Branch (9710:6): [True: 38, False: 632]
  ------------------
 9711|     38|		opline->opcode = ZEND_DECLARE_ANON_CLASS;
  ------------------
  |  |  268|     38|#define ZEND_DECLARE_ANON_CLASS             146
  ------------------
 9712|     38|		opline->extended_value = zend_alloc_cache_slot();
 9713|     38|		zend_make_var_result(result, opline);
 9714|     38|		if (!zend_hash_add_ptr(CG(class_table), lcname, ce)) {
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (9714:7): [True: 0, False: 38]
  ------------------
 9715|       |			/* We checked above that the class name is not used. This really shouldn't happen. */
 9716|      0|			zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 9717|      0|				"Runtime definition key collision for %s. This is a bug", ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9718|      0|		}
 9719|    632|	} else {
 9720|       |		/* Generate RTD keys until we find one that isn't in use yet. */
 9721|    632|		zend_string *key = NULL;
 9722|    632|		do {
 9723|    632|			zend_tmp_string_release(key);
 9724|    632|			key = zend_build_runtime_definition_key(lcname, decl->start_lineno);
 9725|    632|		} while (!zend_hash_add_ptr(CG(class_table), key, ce));
  ------------------
  |  |   35|    632|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (9725:12): [True: 0, False: 632]
  ------------------
 9726|       |
 9727|       |		/* RTD key is placed after lcname literal in op1 */
 9728|    632|		zend_add_literal_string(&key);
 9729|       |
 9730|    632|		opline->opcode = ZEND_DECLARE_CLASS;
  ------------------
  |  |  266|    632|#define ZEND_DECLARE_CLASS                  144
  ------------------
 9731|    632|		if (toplevel
  ------------------
  |  Branch (9731:7): [True: 352, False: 280]
  ------------------
 9732|    352|			 && (CG(compiler_options) & ZEND_COMPILE_DELAYED_BINDING)
  ------------------
  |  |   35|    352|# define CG(v) (compiler_globals.v)
  ------------------
              			 && (CG(compiler_options) & ZEND_COMPILE_DELAYED_BINDING)
  ------------------
  |  | 1277|    352|#define ZEND_COMPILE_DELAYED_BINDING            (1<<5)
  ------------------
  |  Branch (9732:8): [True: 0, False: 352]
  ------------------
 9733|       |				/* We currently don't early-bind classes that implement interfaces or use traits */
 9734|      0|			 && !ce->num_interfaces && !ce->num_traits && !ce->num_hooked_prop_variance_checks
  ------------------
  |  Branch (9734:8): [True: 0, False: 0]
  |  Branch (9734:31): [True: 0, False: 0]
  |  Branch (9734:50): [True: 0, False: 0]
  ------------------
 9735|    632|		) {
 9736|      0|			if (!extends_ast) {
  ------------------
  |  Branch (9736:8): [True: 0, False: 0]
  ------------------
 9737|       |				/* Use empty string for classes without parents to avoid new handler, and special
 9738|       |				 * handling of zend_early_binding. */
 9739|      0|				opline->op2_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 9740|      0|				LITERAL_STR(opline->op2, ZSTR_EMPTY_ALLOC());
  ------------------
  |  |  697|      0|#define LITERAL_STR(op, str) do { \
  |  |  698|      0|		zval _c; \
  |  |  699|      0|		ZVAL_STR(&_c, str); \
  |  |  ------------------
  |  |  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      0|		zval *__z = (z);						\
  |  |  |  | 1090|      0|		zend_string *__s = (s);					\
  |  |  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      0|		/* interned strings support */			\
  |  |  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  700|      0|		op.constant = zend_add_literal(&_c); \
  |  |  701|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (701:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9741|      0|			}
 9742|      0|			CG(active_op_array)->fn_flags |= ZEND_ACC_EARLY_BINDING;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(active_op_array)->fn_flags |= ZEND_ACC_EARLY_BINDING;
  ------------------
  |  |  365|      0|#define ZEND_ACC_EARLY_BINDING           (1 << 16) /*     |  X  |     |     */
  ------------------
 9743|      0|			opline->opcode = ZEND_DECLARE_CLASS_DELAYED;
  ------------------
  |  |  267|      0|#define ZEND_DECLARE_CLASS_DELAYED          145
  ------------------
 9744|      0|			opline->extended_value = zend_alloc_cache_slot();
 9745|      0|			opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 9746|      0|			opline->result.opline_num = -1;
 9747|      0|		}
 9748|    632|	}
 9749|    670|}
zend_compile.c:zend_generate_anon_class_name:
 9494|     40|{
 9495|     40|	zend_string *filename = CG(active_op_array)->filename;
  ------------------
  |  |   35|     40|# define CG(v) (compiler_globals.v)
  ------------------
 9496|     40|	uint32_t start_lineno = decl->start_lineno;
 9497|       |
 9498|       |	/* Use parent or first interface as prefix. */
 9499|     40|	zend_string *prefix = ZSTR_KNOWN(ZEND_STR_CLASS);
 9500|     40|	if (decl->child[0]) {
  ------------------
  |  Branch (9500:6): [True: 4, False: 36]
  ------------------
 9501|      4|		prefix = zend_resolve_const_class_name_reference(decl->child[0], "class name");
 9502|     36|	} else if (decl->child[1]) {
  ------------------
  |  Branch (9502:13): [True: 3, False: 33]
  ------------------
 9503|      3|		const zend_ast_list *list = zend_ast_get_list(decl->child[1]);
 9504|      3|		prefix = zend_resolve_const_class_name_reference(list->child[0], "interface name");
 9505|      3|	}
 9506|       |
 9507|     40|	zend_string *result = zend_strpprintf(0, "%s@anonymous%c%s:%" PRIu32 "$%" PRIx32,
 9508|     40|		ZSTR_VAL(prefix), '\0', ZSTR_VAL(filename), start_lineno, CG(rtd_key_counter)++);
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(prefix), '\0', ZSTR_VAL(filename), start_lineno, CG(rtd_key_counter)++);
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(prefix), '\0', ZSTR_VAL(filename), start_lineno, CG(rtd_key_counter)++);
  ------------------
  |  |   35|     40|# define CG(v) (compiler_globals.v)
  ------------------
 9509|     40|	zend_string_release(prefix);
 9510|     40|	return zend_new_interned_string(result);
 9511|     40|}
zend_compile.c:zend_resolve_const_class_name_reference:
 1773|    505|{
 1774|    505|	zend_string *class_name = zend_ast_get_str(ast);
 1775|    505|	if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type_ast(ast)) {
  ------------------
  |  | 1042|    505|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (1775:6): [True: 2, False: 503]
  ------------------
 1776|      2|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1777|      2|			"Cannot use \"%s\" as %s, as it is reserved",
 1778|      2|			ZSTR_VAL(class_name), type);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1779|      2|	}
 1780|    503|	return zend_resolve_class_name(class_name, ast->attr);
 1781|    505|}
zend_compile.c:zend_compile_implements:
 9473|     83|{
 9474|     83|	const zend_ast_list *list = zend_ast_get_list(ast);
 9475|     83|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|     83|# define CG(v) (compiler_globals.v)
  ------------------
 9476|     83|	zend_class_name *interface_names;
 9477|     83|	uint32_t i;
 9478|       |
 9479|     83|	interface_names = emalloc(sizeof(zend_class_name) * list->children);
  ------------------
  |  |  150|     83|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     83|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     83|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     83|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     83|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9480|       |
 9481|    182|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (9481:14): [True: 99, False: 83]
  ------------------
 9482|     99|		zend_ast *class_ast = list->child[i];
 9483|     99|		interface_names[i].name =
 9484|     99|			zend_resolve_const_class_name_reference(class_ast, "interface name");
 9485|     99|		interface_names[i].lc_name = zend_string_tolower(interface_names[i].name);
 9486|     99|	}
 9487|       |
 9488|     83|	ce->num_interfaces = list->children;
 9489|     83|	ce->interface_names = interface_names;
 9490|     83|}
zend_compile.c:zend_compile_enum_backing_type:
 9514|     36|{
 9515|     36|	ZEND_ASSERT(ce->ce_flags & ZEND_ACC_ENUM);
  ------------------
  |  |  112|     36|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9515:2): [True: 0, False: 36]
  |  Branch (9515:2): [True: 36, False: 0]
  ------------------
 9516|     36|	zend_type type = zend_compile_typename(enum_backing_type_ast);
 9517|     36|	uint32_t type_mask = ZEND_TYPE_PURE_MASK(type);
  ------------------
  |  |  264|     36|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     36|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 9518|     36|	if (ZEND_TYPE_IS_COMPLEX(type) || (type_mask != MAY_BE_LONG && type_mask != MAY_BE_STRING)) {
  ------------------
  |  |  157|     72|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|     36|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     36|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     36|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|     36|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 1, False: 35]
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_COMPLEX(type) || (type_mask != MAY_BE_LONG && type_mask != MAY_BE_STRING)) {
  ------------------
  |  |   28|     70|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|     35|#define IS_LONG						4
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_COMPLEX(type) || (type_mask != MAY_BE_LONG && type_mask != MAY_BE_STRING)) {
  ------------------
  |  |   30|     14|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     14|#define IS_STRING					6
  |  |  ------------------
  ------------------
  |  Branch (9518:37): [True: 14, False: 21]
  |  Branch (9518:65): [True: 1, False: 13]
  ------------------
 9519|      2|		zend_string *type_string = zend_type_to_string(type);
 9520|      2|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9521|      2|			"Enum backing type must be int or string, %s given",
 9522|      2|			ZSTR_VAL(type_string));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9523|      2|	}
 9524|     34|	if (type_mask == MAY_BE_LONG) {
  ------------------
  |  |   28|     34|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|     34|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (9524:6): [True: 21, False: 13]
  ------------------
 9525|     21|		ce->enum_backing_type = IS_LONG;
  ------------------
  |  |  610|     21|#define IS_LONG						4
  ------------------
 9526|     21|	} else {
 9527|     13|		ZEND_ASSERT(type_mask == MAY_BE_STRING);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9527:3): [True: 0, False: 13]
  |  Branch (9527:3): [True: 13, False: 0]
  ------------------
 9528|     13|		ce->enum_backing_type = IS_STRING;
  ------------------
  |  |  612|     13|#define IS_STRING					6
  ------------------
 9529|     13|	}
 9530|     34|	zend_type_release(type, 0);
 9531|     34|}
zend_compile.c:zend_compile_ignore_class:
 4294|  1.81k|{
 4295|  1.81k|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (4295:6): [True: 1.26k, False: 552]
  ------------------
 4296|  1.26k|		return CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
  ------------------
  |  |   35|  1.26k|# define CG(v) (compiler_globals.v)
  ------------------
              		return CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
  ------------------
  |  | 1274|  1.26k|#define ZEND_COMPILE_IGNORE_INTERNAL_CLASSES    (1<<4)
  ------------------
 4297|  1.26k|	} else {
 4298|    552|		return (CG(compiler_options) & ZEND_COMPILE_IGNORE_OTHER_FILES)
  ------------------
  |  |   35|    552|# define CG(v) (compiler_globals.v)
  ------------------
              		return (CG(compiler_options) & ZEND_COMPILE_IGNORE_OTHER_FILES)
  ------------------
  |  | 1298|    552|#define ZEND_COMPILE_IGNORE_OTHER_FILES			(1<<13)
  ------------------
  |  Branch (4298:10): [True: 0, False: 552]
  ------------------
 4299|      0|			&& ce->info.user.filename != filename;
  ------------------
  |  Branch (4299:7): [True: 0, False: 0]
  ------------------
 4300|    552|	}
 4301|  1.81k|}
zend_compile.c:zend_add_literal_string:
  605|  8.99k|{
  606|  8.99k|	int ret;
  607|  8.99k|	zval zv;
  608|  8.99k|	ZVAL_STR(&zv, *str);
  ------------------
  |  | 1088|  8.99k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  8.99k|		zval *__z = (z);						\
  |  | 1090|  8.99k|		zend_string *__s = (s);					\
  |  | 1091|  8.99k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  8.99k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  8.99k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  8.99k|		/* interned strings support */			\
  |  | 1093|  8.99k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  8.99k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  8.99k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1.01k, False: 7.98k]
  |  |  ------------------
  |  | 1094|  8.99k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|  1.01k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.01k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  8.99k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  16.9k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  7.98k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  7.98k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  7.98k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  8.99k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 8.99k]
  |  |  ------------------
  ------------------
  609|  8.99k|	ret = zend_add_literal(&zv);
  610|  8.99k|	*str = Z_STR(zv);
  ------------------
  |  |  981|  8.99k|#define Z_STR(zval)					(zval).value.str
  ------------------
  611|  8.99k|	return ret;
  612|  8.99k|}
zend_compile.c:zend_alloc_cache_slot:
   83|  6.76k|static inline uint32_t zend_alloc_cache_slot(void) {
   84|  6.76k|	return zend_alloc_cache_slots(1);
   85|  6.76k|}
zend_compile.c:zend_build_runtime_definition_key:
  176|    370|{
  177|    370|	zend_string *filename = CG(active_op_array)->filename;
  ------------------
  |  |   35|    370|# define CG(v) (compiler_globals.v)
  ------------------
  178|    370|	zend_string *result = zend_strpprintf(0, "%c%s%s:%" PRIu32 "$%" PRIx32,
  179|    370|		'\0', ZSTR_VAL(name), ZSTR_VAL(filename), start_lineno, CG(rtd_key_counter)++);
  ------------------
  |  |   67|    370|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		'\0', ZSTR_VAL(name), ZSTR_VAL(filename), start_lineno, CG(rtd_key_counter)++);
  ------------------
  |  |   67|    370|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		'\0', ZSTR_VAL(name), ZSTR_VAL(filename), start_lineno, CG(rtd_key_counter)++);
  ------------------
  |  |   35|    370|# define CG(v) (compiler_globals.v)
  ------------------
  180|    370|	return zend_new_interned_string(result);
  181|    370|}
zend_compile.c:zend_verify_namespace:
 2183|  11.9k|{
 2184|  11.9k|	if (FC(has_bracketed_namespaces) && !FC(in_namespace)) {
  ------------------
  |  |   60|  23.9k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  11.9k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 56, False: 11.9k]
  |  |  ------------------
  ------------------
              	if (FC(has_bracketed_namespaces) && !FC(in_namespace)) {
  ------------------
  |  |   60|     56|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     56|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (2184:38): [True: 0, False: 56]
  ------------------
 2185|      0|		zend_error_noreturn(E_COMPILE_ERROR, "No code may exist outside of namespace {}");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2186|      0|	}
 2187|  11.9k|}
zend_compile.c:zend_compile_stmt:
11982|  18.8k|{
11983|  18.8k|	if (!ast) {
  ------------------
  |  Branch (11983:6): [True: 292, False: 18.5k]
  ------------------
11984|    292|		return;
11985|    292|	}
11986|       |
11987|  18.5k|	CG(zend_lineno) = ast->lineno;
  ------------------
  |  |   35|  18.5k|# define CG(v) (compiler_globals.v)
  ------------------
11988|       |
11989|  18.5k|	if ((CG(compiler_options) & ZEND_COMPILE_EXTENDED_STMT) && !zend_is_unticked_stmt(ast)) {
  ------------------
  |  |   35|  18.5k|# define CG(v) (compiler_globals.v)
  ------------------
              	if ((CG(compiler_options) & ZEND_COMPILE_EXTENDED_STMT) && !zend_is_unticked_stmt(ast)) {
  ------------------
  |  | 1261|  18.5k|#define ZEND_COMPILE_EXTENDED_STMT              (1<<0)
  ------------------
  |  Branch (11989:6): [True: 0, False: 18.5k]
  |  Branch (11989:61): [True: 0, False: 0]
  ------------------
11990|      0|		zend_do_extended_stmt(NULL);
11991|      0|	}
11992|       |
11993|  18.5k|	switch (ast->kind) {
11994|  4.28k|		case ZEND_AST_STMT_LIST:
  ------------------
  |  Branch (11994:3): [True: 4.28k, False: 14.3k]
  ------------------
11995|  4.28k|			zend_compile_stmt_list(ast);
11996|  4.28k|			break;
11997|     28|		case ZEND_AST_GLOBAL:
  ------------------
  |  Branch (11997:3): [True: 28, False: 18.5k]
  ------------------
11998|     28|			zend_compile_global_var(ast);
11999|     28|			break;
12000|     39|		case ZEND_AST_STATIC:
  ------------------
  |  Branch (12000:3): [True: 39, False: 18.5k]
  ------------------
12001|     39|			zend_compile_static_var(ast);
12002|     39|			break;
12003|    168|		case ZEND_AST_UNSET:
  ------------------
  |  Branch (12003:3): [True: 168, False: 18.4k]
  ------------------
12004|    168|			zend_compile_unset(ast);
12005|    168|			break;
12006|    348|		case ZEND_AST_RETURN:
  ------------------
  |  Branch (12006:3): [True: 348, False: 18.2k]
  ------------------
12007|    348|			zend_compile_return(ast);
12008|    348|			break;
12009|  2.27k|		case ZEND_AST_ECHO:
  ------------------
  |  Branch (12009:3): [True: 2.27k, False: 16.3k]
  ------------------
12010|  2.27k|			zend_compile_echo(ast);
12011|  2.27k|			break;
12012|     29|		case ZEND_AST_BREAK:
  ------------------
  |  Branch (12012:3): [True: 29, False: 18.5k]
  ------------------
12013|     30|		case ZEND_AST_CONTINUE:
  ------------------
  |  Branch (12013:3): [True: 1, False: 18.5k]
  ------------------
12014|     30|			zend_compile_break_continue(ast);
12015|     30|			break;
12016|     42|		case ZEND_AST_GOTO:
  ------------------
  |  Branch (12016:3): [True: 42, False: 18.5k]
  ------------------
12017|     42|			zend_compile_goto(ast);
12018|     42|			break;
12019|     68|		case ZEND_AST_LABEL:
  ------------------
  |  Branch (12019:3): [True: 68, False: 18.5k]
  ------------------
12020|     68|			zend_compile_label(ast);
12021|     68|			break;
12022|     16|		case ZEND_AST_WHILE:
  ------------------
  |  Branch (12022:3): [True: 16, False: 18.5k]
  ------------------
12023|     16|			zend_compile_while(ast);
12024|     16|			break;
12025|      3|		case ZEND_AST_DO_WHILE:
  ------------------
  |  Branch (12025:3): [True: 3, False: 18.5k]
  ------------------
12026|      3|			zend_compile_do_while(ast);
12027|      3|			break;
12028|    249|		case ZEND_AST_FOR:
  ------------------
  |  Branch (12028:3): [True: 249, False: 18.3k]
  ------------------
12029|    249|			zend_compile_for(ast);
12030|    249|			break;
12031|    197|		case ZEND_AST_FOREACH:
  ------------------
  |  Branch (12031:3): [True: 197, False: 18.3k]
  ------------------
12032|    197|			zend_compile_foreach(ast);
12033|    197|			break;
12034|     85|		case ZEND_AST_IF:
  ------------------
  |  Branch (12034:3): [True: 85, False: 18.4k]
  ------------------
12035|     85|			zend_compile_if(ast);
12036|     85|			break;
12037|     17|		case ZEND_AST_SWITCH:
  ------------------
  |  Branch (12037:3): [True: 17, False: 18.5k]
  ------------------
12038|     17|			zend_compile_switch(ast);
12039|     17|			break;
12040|    228|		case ZEND_AST_TRY:
  ------------------
  |  Branch (12040:3): [True: 228, False: 18.3k]
  ------------------
12041|    228|			zend_compile_try(ast);
12042|    228|			break;
12043|     46|		case ZEND_AST_DECLARE:
  ------------------
  |  Branch (12043:3): [True: 46, False: 18.5k]
  ------------------
12044|     46|			zend_compile_declare(ast);
12045|     46|			break;
12046|      5|		case ZEND_AST_FUNC_DECL:
  ------------------
  |  Branch (12046:3): [True: 5, False: 18.5k]
  ------------------
12047|    675|		case ZEND_AST_METHOD:
  ------------------
  |  Branch (12047:3): [True: 670, False: 17.9k]
  ------------------
12048|    675|			zend_compile_func_decl(NULL, ast, FUNC_DECL_LEVEL_NESTED);
12049|    675|			break;
12050|    126|		case ZEND_AST_ENUM_CASE:
  ------------------
  |  Branch (12050:3): [True: 126, False: 18.4k]
  ------------------
12051|    126|			zend_compile_enum_case(ast);
12052|    126|			break;
12053|    508|		case ZEND_AST_PROP_GROUP:
  ------------------
  |  Branch (12053:3): [True: 508, False: 18.0k]
  ------------------
12054|    508|			zend_compile_prop_group(ast);
12055|    508|			break;
12056|    141|		case ZEND_AST_CLASS_CONST_GROUP:
  ------------------
  |  Branch (12056:3): [True: 141, False: 18.4k]
  ------------------
12057|    141|			zend_compile_class_const_group(ast);
12058|    141|			break;
12059|    101|		case ZEND_AST_USE_TRAIT:
  ------------------
  |  Branch (12059:3): [True: 101, False: 18.4k]
  ------------------
12060|    101|			zend_compile_use_trait(ast);
12061|    101|			break;
12062|     21|		case ZEND_AST_CLASS:
  ------------------
  |  Branch (12062:3): [True: 21, False: 18.5k]
  ------------------
12063|     21|			zend_compile_class_decl(NULL, ast, false);
12064|     21|			break;
12065|      6|		case ZEND_AST_GROUP_USE:
  ------------------
  |  Branch (12065:3): [True: 6, False: 18.5k]
  ------------------
12066|      6|			zend_compile_group_use(ast);
12067|      6|			break;
12068|     75|		case ZEND_AST_USE:
  ------------------
  |  Branch (12068:3): [True: 75, False: 18.5k]
  ------------------
12069|     75|			zend_compile_use(ast);
12070|     75|			break;
12071|    158|		case ZEND_AST_CONST_DECL:
  ------------------
  |  Branch (12071:3): [True: 158, False: 18.4k]
  ------------------
12072|    158|			zend_compile_const_decl(ast);
12073|    158|			break;
12074|    171|		case ZEND_AST_NAMESPACE:
  ------------------
  |  Branch (12074:3): [True: 171, False: 18.4k]
  ------------------
12075|    171|			zend_compile_namespace(ast);
12076|    171|			break;
12077|      6|		case ZEND_AST_HALT_COMPILER:
  ------------------
  |  Branch (12077:3): [True: 6, False: 18.5k]
  ------------------
12078|      6|			zend_compile_halt_compiler(ast);
12079|      6|			break;
12080|     64|		case ZEND_AST_THROW:
  ------------------
  |  Branch (12080:3): [True: 64, False: 18.5k]
  ------------------
12081|     64|			zend_compile_expr(NULL, ast);
12082|     64|			break;
12083|      0|		case ZEND_AST_CAST_VOID:
  ------------------
  |  Branch (12083:3): [True: 0, False: 18.5k]
  ------------------
12084|      0|			zend_compile_void_cast(NULL, ast);
12085|      0|			break;
12086|  2.82k|		case ZEND_AST_ASSIGN: {
  ------------------
  |  Branch (12086:3): [True: 2.82k, False: 15.7k]
  ------------------
12087|  2.82k|			znode result;
12088|  2.82k|			zend_compile_assign(&result, ast, /* stmt */ true, BP_VAR_R);
  ------------------
  |  | 1074|  2.82k|#define BP_VAR_R			0
  ------------------
12089|  2.82k|			zend_do_free(&result);
12090|  2.82k|			return;
12091|      5|		}
12092|    236|		case ZEND_AST_ASSIGN_REF:
  ------------------
  |  Branch (12092:3): [True: 236, False: 18.3k]
  ------------------
12093|    236|			zend_compile_assign_ref(NULL, ast, BP_VAR_R);
  ------------------
  |  | 1074|    236|#define BP_VAR_R			0
  ------------------
12094|    236|			return;
12095|  5.34k|		default:
  ------------------
  |  Branch (12095:3): [True: 5.34k, False: 13.2k]
  ------------------
12096|  5.34k|		{
12097|  5.34k|			znode result;
12098|  5.34k|			zend_compile_expr(&result, ast);
12099|  5.34k|			zend_do_free(&result);
12100|  5.34k|		}
12101|  18.5k|	}
12102|       |
12103|  15.0k|	if (FC(declarables).ticks && !zend_is_unticked_stmt(ast)) {
  ------------------
  |  |   60|  15.0k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  15.0k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (12103:6): [True: 42, False: 14.9k]
  |  Branch (12103:31): [True: 25, False: 17]
  ------------------
12104|     25|		zend_emit_tick();
12105|     25|	}
12106|  15.0k|}
zend_compile.c:zend_is_unticked_stmt:
 2781|     42|{
 2782|     42|	return ast->kind == ZEND_AST_STMT_LIST || ast->kind == ZEND_AST_LABEL
  ------------------
  |  Branch (2782:9): [True: 14, False: 28]
  |  Branch (2782:44): [True: 1, False: 27]
  ------------------
 2783|     27|		|| ast->kind == ZEND_AST_PROP_DECL || ast->kind == ZEND_AST_CLASS_CONST_GROUP
  ------------------
  |  Branch (2783:6): [True: 0, False: 27]
  |  Branch (2783:41): [True: 0, False: 27]
  ------------------
 2784|     27|		|| ast->kind == ZEND_AST_USE_TRAIT || ast->kind == ZEND_AST_METHOD;
  ------------------
  |  Branch (2784:6): [True: 0, False: 27]
  |  Branch (2784:41): [True: 2, False: 25]
  ------------------
 2785|     42|}
zend_compile.c:zend_compile_stmt_list:
 7330|  4.28k|{
 7331|  4.28k|	const zend_ast_list *list = zend_ast_get_list(ast);
 7332|  4.28k|	uint32_t i;
 7333|  8.43k|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (7333:14): [True: 4.15k, False: 4.28k]
  ------------------
 7334|  4.15k|		zend_compile_stmt(list->child[i]);
 7335|  4.15k|	}
 7336|  4.28k|}
zend_compile.c:zend_compile_global_var:
 5720|     28|{
 5721|     28|	zend_ast *var_ast = ast->child[0];
 5722|     28|	zend_ast *name_ast = var_ast->child[0];
 5723|       |
 5724|     28|	znode name_node, result;
 5725|       |
 5726|     28|	zend_compile_expr(&name_node, name_ast);
 5727|     28|	if (name_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     28|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5727:6): [True: 19, False: 9]
  ------------------
 5728|     19|		convert_to_string(&name_node.u.constant);
  ------------------
  |  |  390|     19|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|     19|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     19|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|     19|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 19]
  |  |  ------------------
  ------------------
 5729|     19|	}
 5730|       |
 5731|       |	// TODO(GLOBALS) Forbid "global $GLOBALS"?
 5732|     28|	if (is_this_fetch(var_ast)) {
  ------------------
  |  Branch (5732:6): [True: 1, False: 27]
  ------------------
 5733|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use $this as global variable");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5734|     27|	} else if (zend_try_compile_cv(&result, var_ast, BP_VAR_R) == SUCCESS) {
  ------------------
  |  | 1074|     27|#define BP_VAR_R			0
  ------------------
  |  Branch (5734:13): [True: 18, False: 9]
  ------------------
 5735|     18|		zend_op *opline = zend_emit_op(NULL, ZEND_BIND_GLOBAL, &result, &name_node);
  ------------------
  |  |  290|     18|#define ZEND_BIND_GLOBAL                    168
  ------------------
 5736|     18|		opline->extended_value = zend_alloc_cache_slot();
 5737|     18|	} else {
 5738|       |		/* name_ast should be evaluated only. FETCH_GLOBAL_LOCK instructs FETCH_W
 5739|       |		 * to not free the name_node operand, so it can be reused in the following
 5740|       |		 * ASSIGN_REF, which then frees it. */
 5741|      9|		zend_op *opline = zend_emit_op(&result, ZEND_FETCH_W, &name_node, NULL);
  ------------------
  |  |  205|      9|#define ZEND_FETCH_W                         83
  ------------------
 5742|      9|		opline->extended_value = ZEND_FETCH_GLOBAL_LOCK;
  ------------------
  |  | 1092|      9|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
 5743|       |
 5744|      9|		if (name_node.op_type == IS_CONST) {
  ------------------
  |  |  864|      9|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5744:7): [True: 0, False: 9]
  ------------------
 5745|      0|			zend_string_addref(Z_STR(name_node.u.constant));
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 5746|      0|		}
 5747|       |
 5748|      9|		zend_emit_assign_ref_znode(
 5749|      9|			zend_ast_create(ZEND_AST_VAR, zend_ast_create_znode(&name_node)),
  ------------------
  |  |  316|      9|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      9|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      9|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5750|      9|			&result
 5751|      9|		);
 5752|      9|	}
 5753|     28|}
zend_compile.c:is_this_fetch:
 2989|  15.1k|{
 2990|  15.1k|	if (ast->kind == ZEND_AST_VAR && ast->child[0]->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (2990:6): [True: 14.1k, False: 1.03k]
  |  Branch (2990:35): [True: 13.2k, False: 920]
  ------------------
 2991|  13.2k|		const zval *name = zend_ast_get_zval(ast->child[0]);
 2992|  13.2k|		return Z_TYPE_P(name) == IS_STRING && zend_string_equals(Z_STR_P(name), ZSTR_KNOWN(ZEND_STR_THIS));
  ------------------
  |  |  669|  13.2k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  13.2k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		return Z_TYPE_P(name) == IS_STRING && zend_string_equals(Z_STR_P(name), ZSTR_KNOWN(ZEND_STR_THIS));
  ------------------
  |  |  612|  26.4k|#define IS_STRING					6
  ------------------
              		return Z_TYPE_P(name) == IS_STRING && zend_string_equals(Z_STR_P(name), ZSTR_KNOWN(ZEND_STR_THIS));
  ------------------
  |  |  982|  13.2k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  13.2k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2992:10): [True: 13.2k, False: 9]
  |  Branch (2992:41): [True: 116, False: 13.0k]
  ------------------
 2993|  13.2k|	}
 2994|       |
 2995|  1.95k|	return false;
 2996|  15.1k|}
zend_compile.c:zend_try_compile_cv:
 2911|  10.0k|{
 2912|  10.0k|	zend_ast *name_ast = ast->child[0];
 2913|  10.0k|	if (name_ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (2913:6): [True: 9.26k, False: 836]
  ------------------
 2914|  9.26k|		zval *zv = zend_ast_get_zval(name_ast);
 2915|  9.26k|		zend_string *name;
 2916|       |
 2917|  9.26k|		if (EXPECTED(Z_TYPE_P(zv) == IS_STRING)) {
  ------------------
  |  |  456|  9.26k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9.25k, False: 6]
  |  |  ------------------
  ------------------
 2918|  9.25k|			name = zval_make_interned_string(zv);
 2919|  9.25k|		} else {
 2920|      6|			name = zend_new_interned_string(zval_get_string_func(zv));
 2921|      6|		}
 2922|       |
 2923|  9.26k|		if (zend_is_auto_global(name)) {
  ------------------
  |  Branch (2923:7): [True: 13, False: 9.24k]
  ------------------
 2924|     13|			return FAILURE;
 2925|     13|		}
 2926|       |
 2927|  9.24k|		if (!CG(context).has_assigned_to_http_response_header && zend_string_equals_literal(name, "http_response_header")) {
  ------------------
  |  |   35|  9.24k|# define CG(v) (compiler_globals.v)
  ------------------
              		if (!CG(context).has_assigned_to_http_response_header && zend_string_equals_literal(name, "http_response_header")) {
  ------------------
  |  |  407|  9.24k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 9.24k]
  |  |  ------------------
  ------------------
  |  Branch (2927:7): [True: 9.24k, False: 0]
  ------------------
 2928|      0|			if (type == BP_VAR_R) {
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
  |  Branch (2928:8): [True: 0, False: 0]
  ------------------
 2929|      0|				zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2930|      0|					"The predefined locally scoped $http_response_header variable is deprecated,"
 2931|      0|					" call http_get_last_response_headers() instead");
 2932|      0|			} else if (type == BP_VAR_W) {
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  |  Branch (2932:15): [True: 0, False: 0]
  ------------------
 2933|      0|				CG(context).has_assigned_to_http_response_header = true;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2934|      0|			}
 2935|      0|		}
 2936|       |
 2937|  9.24k|		result->op_type = IS_CV;
  ------------------
  |  |  867|  9.24k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 2938|  9.24k|		result->u.op.var = lookup_cv(name);
 2939|       |
 2940|  9.24k|		if (UNEXPECTED(Z_TYPE_P(zv) != IS_STRING)) {
  ------------------
  |  |  457|  9.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 9.24k]
  |  |  ------------------
  ------------------
 2941|      6|			zend_string_release_ex(name, 0);
 2942|      6|		}
 2943|       |
 2944|  9.24k|		return SUCCESS;
 2945|  9.26k|	}
 2946|       |
 2947|    836|	return FAILURE;
 2948|  10.0k|}
zend_compile.c:zend_emit_assign_ref_znode:
 3677|     37|{
 3678|     37|	zend_ast *assign_ast = zend_ast_create(ZEND_AST_ASSIGN_REF, var_ast,
  ------------------
  |  |  316|     37|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     37|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     37|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3679|     37|		zend_ast_create_znode(value_node));
 3680|     37|	zend_compile_stmt(assign_ast);
 3681|     37|}
zend_compile.c:zend_compile_static_var:
 5780|     39|{
 5781|     39|	zend_ast *var_ast = ast->child[0];
 5782|     39|	zend_string *var_name = zend_ast_get_str(var_ast);
 5783|       |
 5784|     39|	if (zend_string_equals(var_name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (5784:6): [True: 1, False: 38]
  ------------------
 5785|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use $this as static variable");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5786|      1|	}
 5787|       |
 5788|     38|	if (!CG(active_op_array)->static_variables) {
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5788:6): [True: 34, False: 4]
  ------------------
 5789|     34|		if (CG(active_op_array)->scope) {
  ------------------
  |  |   35|     34|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5789:7): [True: 8, False: 26]
  ------------------
 5790|      8|			CG(active_op_array)->scope->ce_flags |= ZEND_HAS_STATIC_IN_METHODS;
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(active_op_array)->scope->ce_flags |= ZEND_HAS_STATIC_IN_METHODS;
  ------------------
  |  |  304|      8|#define ZEND_HAS_STATIC_IN_METHODS       (1 << 14) /*  X  |     |     |     */
  ------------------
 5791|      8|		}
 5792|     34|		CG(active_op_array)->static_variables = zend_new_array(8);
  ------------------
  |  |   35|     34|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(active_op_array)->static_variables = zend_new_array(8);
  ------------------
  |  |  342|     34|	_zend_new_array(size)
  ------------------
 5793|     34|	}
 5794|       |
 5795|     38|	if (zend_hash_exists(CG(active_op_array)->static_variables, var_name)) {
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5795:6): [True: 2, False: 36]
  ------------------
 5796|      2|		zend_error_noreturn_unchecked(E_COMPILE_ERROR, "Duplicate declaration of static variable $%S", var_name);
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5797|      2|	}
 5798|       |
 5799|     36|	zend_eval_const_expr(&ast->child[1]);
 5800|     36|	zend_ast *value_ast = ast->child[1];
 5801|       |
 5802|     36|	if (!value_ast || value_ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (5802:6): [True: 10, False: 26]
  |  Branch (5802:20): [True: 12, False: 14]
  ------------------
 5803|     22|		zval *value_zv = value_ast
  ------------------
  |  Branch (5803:20): [True: 12, False: 10]
  ------------------
 5804|     22|			? zend_ast_get_zval(value_ast)
 5805|     22|			: &EG(uninitialized_zval);
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  ------------------
 5806|     22|		Z_TRY_ADDREF_P(value_zv);
  ------------------
  |  | 1285|     22|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     22|	zval *_pz = (pz);				\
  |  | 1287|     22|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     22|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     22|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     22|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|     22|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 22]
  |  |  ------------------
  ------------------
 5807|     22|		zend_compile_static_var_common(var_name, value_zv, ZEND_BIND_REF);
  ------------------
  |  | 1202|     22|#define ZEND_BIND_REF      1
  ------------------
 5808|     22|	} else {
 5809|     14|		zend_op *opline;
 5810|       |
 5811|     14|		zval *placeholder_ptr = zend_hash_update(CG(active_op_array)->static_variables, var_name, &EG(uninitialized_zval));
  ------------------
  |  |   35|     14|# define CG(v) (compiler_globals.v)
  ------------------
              		zval *placeholder_ptr = zend_hash_update(CG(active_op_array)->static_variables, var_name, &EG(uninitialized_zval));
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
 5812|     14|		uint32_t placeholder_offset = (uint32_t)((char*)placeholder_ptr - (char*)CG(active_op_array)->static_variables->arData);
  ------------------
  |  |   35|     14|# define CG(v) (compiler_globals.v)
  ------------------
 5813|       |
 5814|     14|		uint32_t static_def_jmp_opnum = get_next_op_number();
 5815|     14|		opline = zend_emit_op(NULL, ZEND_BIND_INIT_STATIC_OR_JMP, NULL, NULL);
  ------------------
  |  |  325|     14|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
 5816|     14|		opline->op1_type = IS_CV;
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 5817|     14|		opline->op1.var = lookup_cv(var_name);
 5818|     14|		opline->extended_value = placeholder_offset;
 5819|       |
 5820|     14|		znode expr;
 5821|     14|		zend_compile_expr(&expr, value_ast);
 5822|       |
 5823|     14|		opline = zend_emit_op(NULL, ZEND_BIND_STATIC, NULL, &expr);
  ------------------
  |  |  305|     14|#define ZEND_BIND_STATIC                    183
  ------------------
 5824|     14|		opline->op1_type = IS_CV;
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
 5825|     14|		opline->op1.var = lookup_cv(var_name);
 5826|     14|		opline->extended_value = placeholder_offset | ZEND_BIND_REF;
  ------------------
  |  | 1202|     14|#define ZEND_BIND_REF      1
  ------------------
 5827|       |
 5828|     14|		zend_update_jump_target_to_next(static_def_jmp_opnum);
 5829|     14|	}
 5830|     36|}
zend_compile.c:get_next_op_number:
  146|  13.4k|{
  147|  13.4k|	return CG(active_op_array)->last;
  ------------------
  |  |   35|  13.4k|# define CG(v) (compiler_globals.v)
  ------------------
  148|  13.4k|}
zend_compile.c:zend_update_jump_target_to_next:
 2452|    831|{
 2453|    831|	zend_update_jump_target(opnum_jump, get_next_op_number());
 2454|    831|}
zend_compile.c:zend_update_jump_target:
 2429|    846|{
 2430|    846|	zend_op *opline = &CG(active_op_array)->opcodes[opnum_jump];
  ------------------
  |  |   35|    846|# define CG(v) (compiler_globals.v)
  ------------------
 2431|    846|	switch (opline->opcode) {
 2432|    608|		case ZEND_JMP:
  ------------------
  |  |  166|    608|#define ZEND_JMP                             42
  ------------------
  |  Branch (2432:3): [True: 608, False: 238]
  ------------------
 2433|    608|			opline->op1.opline_num = opnum_target;
 2434|    608|			break;
 2435|    105|		case ZEND_JMPZ:
  ------------------
  |  |  167|    105|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (2435:3): [True: 105, False: 741]
  ------------------
 2436|    147|		case ZEND_JMPNZ:
  ------------------
  |  |  168|    147|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (2436:3): [True: 42, False: 804]
  ------------------
 2437|    183|		case ZEND_JMPZ_EX:
  ------------------
  |  |  169|    183|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (2437:3): [True: 36, False: 810]
  ------------------
 2438|    190|		case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|    190|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (2438:3): [True: 7, False: 839]
  ------------------
 2439|    207|		case ZEND_JMP_SET:
  ------------------
  |  |  274|    207|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (2439:3): [True: 17, False: 829]
  ------------------
 2440|    225|		case ZEND_COALESCE:
  ------------------
  |  |  291|    225|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (2440:3): [True: 18, False: 828]
  ------------------
 2441|    225|		case ZEND_JMP_NULL:
  ------------------
  |  |  320|    225|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (2441:3): [True: 0, False: 846]
  ------------------
 2442|    238|		case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|    238|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (2442:3): [True: 13, False: 833]
  ------------------
 2443|    238|		case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|    238|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (2443:3): [True: 0, False: 846]
  ------------------
 2444|    238|			opline->op2.opline_num = opnum_target;
 2445|    238|			break;
 2446|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2446:3): [True: 0, False: 846]
  |  Branch (2446:12): [Folded, False: 0]
  |  Branch (2446:12): [Folded, False: 0]
  ------------------
 2447|    846|	}
 2448|    846|}
zend_compile.c:zend_compile_unset:
 5834|    168|{
 5835|    168|	zend_ast *var_ast = ast->child[0];
 5836|    168|	znode var_node;
 5837|    168|	zend_op *opline;
 5838|       |
 5839|    168|	zend_ensure_writable_variable(var_ast);
 5840|       |
 5841|    168|	if (is_global_var_fetch(var_ast)) {
  ------------------
  |  Branch (5841:6): [True: 7, False: 161]
  ------------------
 5842|      7|		if (!var_ast->child[1]) {
  ------------------
  |  Branch (5842:7): [True: 1, False: 6]
  ------------------
 5843|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use [] for unsetting");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5844|      1|		}
 5845|       |
 5846|      6|		zend_compile_expr(&var_node, var_ast->child[1]);
 5847|      6|		if (var_node.op_type == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5847:7): [True: 5, False: 1]
  ------------------
 5848|      5|			convert_to_string(&var_node.u.constant);
  ------------------
  |  |  390|      5|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 5849|      5|		}
 5850|       |
 5851|      6|		opline = zend_emit_op(NULL, ZEND_UNSET_VAR, &var_node, NULL);
  ------------------
  |  |  197|      6|#define ZEND_UNSET_VAR                       74
  ------------------
 5852|      6|		opline->extended_value = ZEND_FETCH_GLOBAL;
  ------------------
  |  | 1090|      6|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
 5853|      6|		return;
 5854|      7|	}
 5855|       |
 5856|    161|	switch (var_ast->kind) {
 5857|    106|		case ZEND_AST_VAR:
  ------------------
  |  Branch (5857:3): [True: 106, False: 55]
  ------------------
 5858|    106|			if (is_this_fetch(var_ast)) {
  ------------------
  |  Branch (5858:8): [True: 1, False: 105]
  ------------------
 5859|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot unset $this");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5860|    105|			} else if (zend_try_compile_cv(&var_node, var_ast, BP_VAR_UNSET) == SUCCESS) {
  ------------------
  |  | 1079|    105|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (5860:15): [True: 95, False: 10]
  ------------------
 5861|     95|				opline = zend_emit_op(NULL, ZEND_UNSET_CV, &var_node, NULL);
  ------------------
  |  |  275|     95|#define ZEND_UNSET_CV                       153
  ------------------
 5862|     95|			} else {
 5863|     10|				opline = zend_compile_simple_var_no_cv(NULL, var_ast, BP_VAR_UNSET, false);
  ------------------
  |  | 1079|     10|#define BP_VAR_UNSET		5
  ------------------
 5864|     10|				opline->opcode = ZEND_UNSET_VAR;
  ------------------
  |  |  197|     10|#define ZEND_UNSET_VAR                       74
  ------------------
 5865|     10|			}
 5866|    105|			return;
 5867|    105|		case ZEND_AST_DIM:
  ------------------
  |  Branch (5867:3): [True: 34, False: 127]
  ------------------
 5868|     34|			opline = zend_compile_dim(NULL, var_ast, BP_VAR_UNSET, /* by_ref */ false);
  ------------------
  |  | 1079|     34|#define BP_VAR_UNSET		5
  ------------------
 5869|     34|			opline->opcode = ZEND_UNSET_DIM;
  ------------------
  |  |  198|     34|#define ZEND_UNSET_DIM                       75
  ------------------
 5870|     34|			return;
 5871|     20|		case ZEND_AST_PROP:
  ------------------
  |  Branch (5871:3): [True: 20, False: 141]
  ------------------
 5872|     20|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (5872:3): [True: 0, False: 161]
  ------------------
 5873|     20|			opline = zend_compile_prop(NULL, var_ast, BP_VAR_UNSET, false);
  ------------------
  |  | 1079|     20|#define BP_VAR_UNSET		5
  ------------------
 5874|     20|			opline->opcode = ZEND_UNSET_OBJ;
  ------------------
  |  |  199|     20|#define ZEND_UNSET_OBJ                       76
  ------------------
 5875|     20|			return;
 5876|      0|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (5876:3): [True: 0, False: 161]
  ------------------
 5877|      0|			opline = zend_compile_static_prop(NULL, var_ast, BP_VAR_UNSET, false, false);
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
 5878|      0|			opline->opcode = ZEND_UNSET_STATIC_PROP;
  ------------------
  |  |  301|      0|#define ZEND_UNSET_STATIC_PROP              179
  ------------------
 5879|      0|			return;
 5880|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5880:3): [True: 0, False: 161]
  |  Branch (5880:12): [Folded, False: 0]
  |  Branch (5880:12): [Folded, False: 0]
  ------------------
 5881|    161|	}
 5882|    161|}
zend_compile.c:zend_ensure_writable_variable:
 3437|  4.52k|{
 3438|  4.52k|	if (ast->kind == ZEND_AST_CALL || ast->kind == ZEND_AST_PIPE) {
  ------------------
  |  Branch (3438:6): [True: 5, False: 4.51k]
  |  Branch (3438:36): [True: 1, False: 4.51k]
  ------------------
 3439|      6|		zend_error_noreturn(E_COMPILE_ERROR, "Can't use function return value in write context");
  ------------------
  |  |   28|      6|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3440|      6|	}
 3441|  4.51k|	if (
 3442|  4.51k|		ast->kind == ZEND_AST_METHOD_CALL
  ------------------
  |  Branch (3442:3): [True: 1, False: 4.51k]
  ------------------
 3443|  4.51k|		|| ast->kind == ZEND_AST_NULLSAFE_METHOD_CALL
  ------------------
  |  Branch (3443:6): [True: 0, False: 4.51k]
  ------------------
 3444|  4.51k|		|| ast->kind == ZEND_AST_STATIC_CALL
  ------------------
  |  Branch (3444:6): [True: 0, False: 4.51k]
  ------------------
 3445|  4.51k|	) {
 3446|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Can't use method return value in write context");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3447|      1|	}
 3448|  4.51k|	if (zend_ast_is_short_circuited(ast)) {
  ------------------
  |  Branch (3448:6): [True: 2, False: 4.51k]
  ------------------
 3449|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Can't use nullsafe operator in write context");
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3450|      2|	}
 3451|  4.51k|	if (is_globals_fetch(ast)) {
  ------------------
  |  Branch (3451:6): [True: 7, False: 4.50k]
  ------------------
 3452|      7|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      7|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3453|      7|			"$GLOBALS can only be modified using the $GLOBALS[$name] = $value syntax");
 3454|      7|	}
 3455|  4.51k|}
zend_compile.c:zend_ast_is_short_circuited:
 2522|  8.09k|{
 2523|  8.09k|	switch (ast->kind) {
 2524|    725|		case ZEND_AST_DIM:
  ------------------
  |  Branch (2524:3): [True: 725, False: 7.37k]
  ------------------
 2525|  1.21k|		case ZEND_AST_PROP:
  ------------------
  |  Branch (2525:3): [True: 489, False: 7.61k]
  ------------------
 2526|  1.29k|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (2526:3): [True: 79, False: 8.02k]
  ------------------
 2527|  1.29k|		case ZEND_AST_METHOD_CALL:
  ------------------
  |  Branch (2527:3): [True: 3, False: 8.09k]
  ------------------
 2528|  1.29k|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (2528:3): [True: 0, False: 8.09k]
  ------------------
 2529|  1.29k|			return zend_ast_is_short_circuited(ast->child[0]);
 2530|     18|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (2530:3): [True: 18, False: 8.08k]
  ------------------
 2531|     19|		case ZEND_AST_NULLSAFE_METHOD_CALL:
  ------------------
  |  Branch (2531:3): [True: 1, False: 8.09k]
  ------------------
 2532|     19|			return true;
 2533|  6.78k|		default:
  ------------------
  |  Branch (2533:3): [True: 6.78k, False: 1.31k]
  ------------------
 2534|       |			return false;
 2535|  8.09k|	}
 2536|  8.09k|}
zend_compile.c:is_globals_fetch:
 3000|  22.2k|{
 3001|  22.2k|	if (ast->kind == ZEND_AST_VAR && ast->child[0]->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (3001:6): [True: 15.8k, False: 6.34k]
  |  Branch (3001:35): [True: 14.8k, False: 1.06k]
  ------------------
 3002|  14.8k|		const zval *name = zend_ast_get_zval(ast->child[0]);
 3003|  14.8k|		return Z_TYPE_P(name) == IS_STRING && zend_string_equals_literal(Z_STR_P(name), "GLOBALS");
  ------------------
  |  |  669|  14.8k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  14.8k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		return Z_TYPE_P(name) == IS_STRING && zend_string_equals_literal(Z_STR_P(name), "GLOBALS");
  ------------------
  |  |  612|  29.6k|#define IS_STRING					6
  ------------------
              		return Z_TYPE_P(name) == IS_STRING && zend_string_equals_literal(Z_STR_P(name), "GLOBALS");
  ------------------
  |  |  407|  29.6k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 169, False: 14.6k]
  |  |  ------------------
  ------------------
  |  Branch (3003:10): [True: 14.8k, False: 10]
  ------------------
 3004|  14.8k|	}
 3005|       |
 3006|  7.41k|	return false;
 3007|  22.2k|}
zend_compile.c:is_global_var_fetch:
 3010|  4.01k|{
 3011|  4.01k|	return ast->kind == ZEND_AST_DIM && is_globals_fetch(ast->child[0]);
  ------------------
  |  Branch (3011:9): [True: 404, False: 3.61k]
  |  Branch (3011:38): [True: 46, False: 358]
  ------------------
 3012|  4.01k|}
zend_compile.c:zend_compile_simple_var_no_cv:
 2952|    831|{
 2953|    831|	zend_ast *name_ast = ast->child[0];
 2954|    831|	znode name_node;
 2955|    831|	zend_op *opline;
 2956|       |
 2957|    831|	zend_compile_expr(&name_node, name_ast);
 2958|    831|	if (name_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    831|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2958:6): [True: 21, False: 810]
  ------------------
 2959|     21|		convert_to_string(&name_node.u.constant);
  ------------------
  |  |  390|     21|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|     21|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     21|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|     21|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 3, False: 18]
  |  |  ------------------
  ------------------
 2960|     21|	}
 2961|       |
 2962|    831|	if (delayed) {
  ------------------
  |  Branch (2962:6): [True: 183, False: 648]
  ------------------
 2963|    183|		opline = zend_delayed_emit_op(result, ZEND_FETCH_R, &name_node, NULL);
  ------------------
  |  |  202|    183|#define ZEND_FETCH_R                         80
  ------------------
 2964|    648|	} else {
 2965|    648|		opline = zend_emit_op(result, ZEND_FETCH_R, &name_node, NULL);
  ------------------
  |  |  202|    648|#define ZEND_FETCH_R                         80
  ------------------
 2966|    648|	}
 2967|       |
 2968|    831|	if (name_node.op_type == IS_CONST &&
  ------------------
  |  |  864|  1.66k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2968:6): [True: 21, False: 810]
  ------------------
 2969|     21|	    zend_is_auto_global(Z_STR(name_node.u.constant))) {
  ------------------
  |  |  981|     21|#define Z_STR(zval)					(zval).value.str
  ------------------
  |  Branch (2969:6): [True: 8, False: 13]
  ------------------
 2970|       |
 2971|      8|		opline->extended_value = ZEND_FETCH_GLOBAL;
  ------------------
  |  | 1090|      8|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
 2972|    823|	} else {
 2973|    823|		if (name_node.op_type == IS_CONST
  ------------------
  |  |  864|  1.64k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2973:7): [True: 13, False: 810]
  ------------------
 2974|     13|			&& type == BP_VAR_R
  ------------------
  |  | 1074|    836|#define BP_VAR_R			0
  ------------------
  |  Branch (2974:7): [True: 11, False: 2]
  ------------------
 2975|     11|			&& zend_string_equals_literal(Z_STR(name_node.u.constant), "http_response_header")) {
  ------------------
  |  |  407|     11|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 2976|      0|			zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2977|      0|				"The predefined locally scoped $http_response_header variable is deprecated,"
 2978|      0|				" call http_get_last_response_headers() instead");
 2979|      0|		}
 2980|    823|		opline->extended_value = ZEND_FETCH_LOCAL;
  ------------------
  |  | 1091|    823|#define ZEND_FETCH_LOCAL		(1<<2)
  ------------------
 2981|    823|	}
 2982|       |
 2983|    831|	zend_adjust_for_fetch_type(opline, result, type);
 2984|    831|	return opline;
 2985|    831|}
zend_compile.c:zend_delayed_emit_op:
 2458|  1.87k|{
 2459|  1.87k|	zend_op tmp_opline;
 2460|       |
 2461|  1.87k|	init_op(&tmp_opline);
 2462|       |
 2463|  1.87k|	tmp_opline.opcode = opcode;
 2464|  1.87k|	if (op1 != NULL) {
  ------------------
  |  Branch (2464:6): [True: 1.87k, False: 0]
  ------------------
 2465|  1.87k|		SET_NODE(tmp_opline.op1, op1);
  ------------------
  |  |   42|  1.87k|#define SET_NODE(target, src) do { \
  |  |   43|  1.87k|		target ## _type = (src)->op_type; \
  |  |   44|  1.87k|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  1.87k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 140, False: 1.73k]
  |  |  ------------------
  |  |   45|    140|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|  1.73k|		} else { \
  |  |   47|  1.73k|			target = (src)->u.op; \
  |  |   48|  1.73k|		} \
  |  |   49|  1.87k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 1.87k]
  |  |  ------------------
  ------------------
 2466|  1.87k|	}
 2467|  1.87k|	if (op2 != NULL) {
  ------------------
  |  Branch (2467:6): [True: 1.58k, False: 287]
  ------------------
 2468|  1.58k|		SET_NODE(tmp_opline.op2, op2);
  ------------------
  |  |   42|  1.58k|#define SET_NODE(target, src) do { \
  |  |   43|  1.58k|		target ## _type = (src)->op_type; \
  |  |   44|  1.58k|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|  1.58k|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 1.19k, False: 388]
  |  |  ------------------
  |  |   45|  1.19k|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|  1.19k|		} else { \
  |  |   47|    388|			target = (src)->u.op; \
  |  |   48|    388|		} \
  |  |   49|  1.58k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 1.58k]
  |  |  ------------------
  ------------------
 2469|  1.58k|	}
 2470|  1.87k|	if (result) {
  ------------------
  |  Branch (2470:6): [True: 1.81k, False: 61]
  ------------------
 2471|  1.81k|		zend_make_var_result(result, &tmp_opline);
 2472|  1.81k|	}
 2473|       |
 2474|  1.87k|	zend_stack_push(&CG(delayed_oplines_stack), &tmp_opline);
  ------------------
  |  |   35|  1.87k|# define CG(v) (compiler_globals.v)
  ------------------
 2475|  1.87k|	return zend_stack_top(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|  1.87k|# define CG(v) (compiler_globals.v)
  ------------------
 2476|  1.87k|}
zend_compile.c:zend_adjust_for_fetch_type:
 2258|  2.59k|{
 2259|  2.59k|	uint_fast8_t factor = (opline->opcode == ZEND_FETCH_STATIC_PROP_R) ? 1 : 3;
  ------------------
  |  |  295|  2.59k|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
  |  Branch (2259:24): [True: 122, False: 2.46k]
  ------------------
 2260|       |
 2261|  2.59k|	switch (type) {
 2262|  1.14k|		case BP_VAR_R:
  ------------------
  |  | 1074|  1.14k|#define BP_VAR_R			0
  ------------------
  |  Branch (2262:3): [True: 1.14k, False: 1.44k]
  ------------------
 2263|  1.14k|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|  1.14k|#define IS_TMP_VAR	(1<<1)
  ------------------
 2264|  1.14k|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|  1.14k|#define IS_TMP_VAR	(1<<1)
  ------------------
 2265|  1.14k|			return;
 2266|    961|		case BP_VAR_W:
  ------------------
  |  | 1075|    961|#define BP_VAR_W			1
  ------------------
  |  Branch (2266:3): [True: 961, False: 1.63k]
  ------------------
 2267|    961|			opline->opcode += 1 * factor;
 2268|    961|			return;
 2269|    242|		case BP_VAR_RW:
  ------------------
  |  | 1076|    242|#define BP_VAR_RW			2
  ------------------
  |  Branch (2269:3): [True: 242, False: 2.34k]
  ------------------
 2270|    242|			opline->opcode += 2 * factor;
 2271|    242|			return;
 2272|    103|		case BP_VAR_IS:
  ------------------
  |  | 1077|    103|#define BP_VAR_IS			3
  ------------------
  |  Branch (2272:3): [True: 103, False: 2.48k]
  ------------------
 2273|    103|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|    103|#define IS_TMP_VAR	(1<<1)
  ------------------
 2274|    103|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|    103|#define IS_TMP_VAR	(1<<1)
  ------------------
 2275|    103|			opline->opcode += 3 * factor;
 2276|    103|			return;
 2277|     47|		case BP_VAR_FUNC_ARG:
  ------------------
  |  | 1078|     47|#define BP_VAR_FUNC_ARG		4
  ------------------
  |  Branch (2277:3): [True: 47, False: 2.54k]
  ------------------
 2278|     47|			opline->opcode += 4 * factor;
 2279|     47|			return;
 2280|     91|		case BP_VAR_UNSET:
  ------------------
  |  | 1079|     91|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (2280:3): [True: 91, False: 2.50k]
  ------------------
 2281|     91|			opline->opcode += 5 * factor;
 2282|     91|			return;
 2283|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2283:3): [True: 0, False: 2.59k]
  |  Branch (2283:12): [Folded, False: 0]
  |  Branch (2283:12): [Folded, False: 0]
  ------------------
 2284|  2.59k|	}
 2285|  2.59k|}
zend_compile.c:zend_compile_dim:
 3150|    401|{
 3151|    401|	uint32_t offset = zend_delayed_compile_begin();
 3152|    401|	zend_delayed_compile_dim(result, ast, type, by_ref);
 3153|    401|	return zend_delayed_compile_end(offset);
 3154|    401|}
zend_compile.c:zend_delayed_compile_begin:
 2480|  4.70k|{
 2481|  4.70k|	return zend_stack_count(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|  4.70k|# define CG(v) (compiler_globals.v)
  ------------------
 2482|  4.70k|}
zend_compile.c:zend_delayed_compile_dim:
 3087|    963|{
 3088|    963|	zend_ast *var_ast = ast->child[0];
 3089|    963|	zend_ast *dim_ast = ast->child[1];
 3090|    963|	zend_op *opline;
 3091|       |
 3092|    963|	znode var_node, dim_node;
 3093|       |
 3094|    963|	if (is_globals_fetch(var_ast)) {
  ------------------
  |  Branch (3094:6): [True: 55, False: 908]
  ------------------
 3095|     55|		if (dim_ast == NULL) {
  ------------------
  |  Branch (3095:7): [True: 1, False: 54]
  ------------------
 3096|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot append to $GLOBALS");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3097|      1|		}
 3098|       |
 3099|     54|		zend_compile_expr(&dim_node, dim_ast);
 3100|     54|		if (dim_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     54|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3100:7): [True: 50, False: 4]
  ------------------
 3101|     50|			convert_to_string(&dim_node.u.constant);
  ------------------
  |  |  390|     50|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|     50|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     50|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|     50|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 7, False: 43]
  |  |  ------------------
  ------------------
 3102|     50|		}
 3103|       |
 3104|     54|		opline = zend_delayed_emit_op(result, ZEND_FETCH_R, &dim_node, NULL);
  ------------------
  |  |  202|     54|#define ZEND_FETCH_R                         80
  ------------------
 3105|     54|		opline->extended_value = ZEND_FETCH_GLOBAL;
  ------------------
  |  | 1090|     54|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
 3106|     54|		zend_adjust_for_fetch_type(opline, result, type);
 3107|     54|		return opline;
 3108|    908|	} else {
 3109|    908|		zend_short_circuiting_mark_inner(var_ast);
 3110|    908|		opline = zend_delayed_compile_var(&var_node, var_ast, type, false);
 3111|    908|		if (opline) {
  ------------------
  |  Branch (3111:7): [True: 163, False: 745]
  ------------------
 3112|    163|			if (type == BP_VAR_W && (opline->opcode == ZEND_FETCH_STATIC_PROP_W || opline->opcode == ZEND_FETCH_OBJ_W)) {
  ------------------
  |  | 1075|    326|#define BP_VAR_W			1
  ------------------
              			if (type == BP_VAR_W && (opline->opcode == ZEND_FETCH_STATIC_PROP_W || opline->opcode == ZEND_FETCH_OBJ_W)) {
  ------------------
  |  |  296|    164|#define ZEND_FETCH_STATIC_PROP_W            174
  ------------------
              			if (type == BP_VAR_W && (opline->opcode == ZEND_FETCH_STATIC_PROP_W || opline->opcode == ZEND_FETCH_OBJ_W)) {
  ------------------
  |  |  207|     79|#define ZEND_FETCH_OBJ_W                     85
  ------------------
  |  Branch (3112:8): [True: 82, False: 81]
  |  Branch (3112:29): [True: 3, False: 79]
  |  Branch (3112:75): [True: 20, False: 59]
  ------------------
 3113|     23|				opline->extended_value |= ZEND_FETCH_DIM_WRITE;
  ------------------
  |  | 1098|     23|#define ZEND_FETCH_DIM_WRITE	2
  ------------------
 3114|    140|			} else if (opline->opcode == ZEND_FETCH_DIM_W
  ------------------
  |  |  206|    280|#define ZEND_FETCH_DIM_W                     84
  ------------------
  |  Branch (3114:15): [True: 45, False: 95]
  ------------------
 3115|     95|					|| opline->opcode == ZEND_FETCH_DIM_RW
  ------------------
  |  |  209|    235|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (3115:9): [True: 5, False: 90]
  ------------------
 3116|     90|					|| opline->opcode == ZEND_FETCH_DIM_FUNC_ARG
  ------------------
  |  |  215|    230|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (3116:9): [True: 6, False: 84]
  ------------------
 3117|     84|					|| opline->opcode == ZEND_FETCH_DIM_UNSET) {
  ------------------
  |  |  218|     84|#define ZEND_FETCH_DIM_UNSET                 96
  ------------------
  |  Branch (3117:9): [True: 6, False: 78]
  ------------------
 3118|     62|				opline->extended_value = ZEND_FETCH_DIM_DIM;
  ------------------
  |  | 1104|     62|#define ZEND_FETCH_DIM_DIM 2
  ------------------
 3119|     62|			}
 3120|    163|		}
 3121|    908|	}
 3122|       |
 3123|    908|	zend_separate_if_call_and_write(&var_node, var_ast, type);
 3124|       |
 3125|    908|	if (dim_ast == NULL) {
  ------------------
  |  Branch (3125:6): [True: 102, False: 806]
  ------------------
 3126|    102|		if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|    204|#define BP_VAR_R			0
  ------------------
              		if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|     99|#define BP_VAR_IS			3
  ------------------
  |  Branch (3126:7): [True: 3, False: 99]
  |  Branch (3126:27): [True: 1, False: 98]
  ------------------
 3127|      4|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use [] for reading");
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3128|      4|		}
 3129|     98|		if (type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|     98|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (3129:7): [True: 1, False: 97]
  ------------------
 3130|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use [] for unsetting");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3131|      1|		}
 3132|     97|		dim_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|     97|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 3133|    806|	} else {
 3134|    806|		zend_compile_expr(&dim_node, dim_ast);
 3135|    806|	}
 3136|       |
 3137|    903|	opline = zend_delayed_emit_op(result, ZEND_FETCH_DIM_R, &var_node, &dim_node);
  ------------------
  |  |  203|    903|#define ZEND_FETCH_DIM_R                     81
  ------------------
 3138|    903|	zend_adjust_for_fetch_type(opline, result, type);
 3139|    903|	if (by_ref) {
  ------------------
  |  Branch (3139:6): [True: 150, False: 753]
  ------------------
 3140|    150|		opline->extended_value = ZEND_FETCH_DIM_REF;
  ------------------
  |  | 1103|    150|#define ZEND_FETCH_DIM_REF 1
  ------------------
 3141|    150|	}
 3142|       |
 3143|    903|	if (dim_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    903|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3143:6): [True: 602, False: 301]
  ------------------
 3144|    602|		zend_handle_numeric_dim(opline, &dim_node);
 3145|    602|	}
 3146|    903|	return opline;
 3147|    908|}
zend_compile.c:zend_short_circuiting_mark_inner:
 2551|  2.40k|static void zend_short_circuiting_mark_inner(zend_ast *ast) {
 2552|  2.40k|	if (zend_ast_kind_is_short_circuited(ast->kind)) {
  ------------------
  |  Branch (2552:6): [True: 364, False: 2.04k]
  ------------------
 2553|    364|		ast->attr |= ZEND_SHORT_CIRCUITING_INNER;
  ------------------
  |  | 2549|    364|#define ZEND_SHORT_CIRCUITING_INNER 0x8000
  ------------------
 2554|    364|	}
 2555|  2.40k|}
zend_compile.c:zend_ast_kind_is_short_circuited:
 2506|  43.7k|{
 2507|  43.7k|	switch (ast_kind) {
 2508|    690|		case ZEND_AST_DIM:
  ------------------
  |  Branch (2508:3): [True: 690, False: 43.0k]
  ------------------
 2509|  1.15k|		case ZEND_AST_PROP:
  ------------------
  |  Branch (2509:3): [True: 464, False: 43.3k]
  ------------------
 2510|  1.27k|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (2510:3): [True: 116, False: 43.6k]
  ------------------
 2511|  1.38k|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (2511:3): [True: 112, False: 43.6k]
  ------------------
 2512|  2.35k|		case ZEND_AST_METHOD_CALL:
  ------------------
  |  Branch (2512:3): [True: 970, False: 42.8k]
  ------------------
 2513|  2.36k|		case ZEND_AST_NULLSAFE_METHOD_CALL:
  ------------------
  |  Branch (2513:3): [True: 8, False: 43.7k]
  ------------------
 2514|  2.64k|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (2514:3): [True: 288, False: 43.4k]
  ------------------
 2515|  2.64k|			return true;
 2516|  41.1k|		default:
  ------------------
  |  Branch (2516:3): [True: 41.1k, False: 2.64k]
  ------------------
 2517|       |			return false;
 2518|  43.7k|	}
 2519|  43.7k|}
zend_compile.c:zend_delayed_compile_var:
12343|  4.98k|{
12344|  4.98k|	zend_check_stack_limit();
12345|       |
12346|  4.98k|	switch (ast->kind) {
12347|  4.38k|		case ZEND_AST_VAR:
  ------------------
  |  Branch (12347:3): [True: 4.38k, False: 600]
  ------------------
12348|  4.38k|			return zend_compile_simple_var(result, ast, type, true);
12349|    266|		case ZEND_AST_DIM:
  ------------------
  |  Branch (12349:3): [True: 266, False: 4.71k]
  ------------------
12350|    266|			return zend_delayed_compile_dim(result, ast, type, by_ref);
12351|    140|		case ZEND_AST_PROP:
  ------------------
  |  Branch (12351:3): [True: 140, False: 4.84k]
  ------------------
12352|    146|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (12352:3): [True: 6, False: 4.97k]
  ------------------
12353|    146|		{
12354|    146|			zend_op *opline = zend_delayed_compile_prop(result, ast, type);
12355|    146|			if (by_ref) {
  ------------------
  |  Branch (12355:8): [True: 38, False: 108]
  ------------------
12356|     38|				opline->extended_value |= ZEND_FETCH_REF;
  ------------------
  |  | 1097|     38|#define ZEND_FETCH_REF			1
  ------------------
12357|     38|			}
12358|    146|			return opline;
12359|    140|		}
12360|     50|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (12360:3): [True: 50, False: 4.93k]
  ------------------
12361|     50|			return zend_compile_static_prop(result, ast, type, by_ref, true);
12362|    138|		default:
  ------------------
  |  Branch (12362:3): [True: 138, False: 4.84k]
  ------------------
12363|       |			return zend_compile_var(result, ast, type, false);
12364|  4.98k|	}
12365|  4.98k|}
zend_compile.c:zend_check_stack_limit:
  119|  50.9k|{
  120|  50.9k|	if (UNEXPECTED(zend_call_stack_overflowed(EG(stack_limit)))) {
  ------------------
  |  |  457|  50.9k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 50.9k]
  |  |  ------------------
  ------------------
  121|      0|		zend_stack_limit_error();
  122|      0|	}
  123|  50.9k|}
zend_compile.c:zend_compile_simple_var:
 3035|  9.60k|{
 3036|  9.60k|	if (is_this_fetch(ast)) {
  ------------------
  |  Branch (3036:6): [True: 28, False: 9.57k]
  ------------------
 3037|     28|		zend_op *opline = zend_emit_op(result, ZEND_FETCH_THIS, NULL, NULL);
  ------------------
  |  |  306|     28|#define ZEND_FETCH_THIS                     184
  ------------------
 3038|     28|		if ((type == BP_VAR_R) || (type == BP_VAR_IS)) {
  ------------------
  |  | 1074|     28|#define BP_VAR_R			0
  ------------------
              		if ((type == BP_VAR_R) || (type == BP_VAR_IS)) {
  ------------------
  |  | 1077|      3|#define BP_VAR_IS			3
  ------------------
  |  Branch (3038:7): [True: 25, False: 3]
  |  Branch (3038:29): [True: 0, False: 3]
  ------------------
 3039|     25|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     25|#define IS_TMP_VAR	(1<<1)
  ------------------
 3040|     25|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     25|#define IS_TMP_VAR	(1<<1)
  ------------------
 3041|     25|		}
 3042|     28|		CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |   35|     28|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |  368|     28|#define ZEND_ACC_USES_THIS               (1 << 17) /*     |  X  |     |     */
  ------------------
 3043|     28|		return opline;
 3044|  9.57k|	} else if (is_globals_fetch(ast)) {
  ------------------
  |  Branch (3044:13): [True: 31, False: 9.54k]
  ------------------
 3045|     31|		zend_op *opline = zend_emit_op(result, ZEND_FETCH_GLOBALS, NULL, NULL);
  ------------------
  |  |  322|     31|#define ZEND_FETCH_GLOBALS                  200
  ------------------
 3046|     31|		if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|     62|#define BP_VAR_R			0
  ------------------
              		if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (3046:7): [True: 31, False: 0]
  |  Branch (3046:27): [True: 0, False: 0]
  ------------------
 3047|     31|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     31|#define IS_TMP_VAR	(1<<1)
  ------------------
 3048|     31|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     31|#define IS_TMP_VAR	(1<<1)
  ------------------
 3049|     31|		}
 3050|     31|		return opline;
 3051|  9.54k|	} else if (zend_try_compile_cv(result, ast, type) == FAILURE) {
  ------------------
  |  Branch (3051:13): [True: 795, False: 8.74k]
  ------------------
 3052|    795|		return zend_compile_simple_var_no_cv(result, ast, type, delayed);
 3053|    795|	}
 3054|  8.74k|	return NULL;
 3055|  9.60k|}
zend_compile.c:zend_delayed_compile_prop:
 3158|    690|{
 3159|    690|	zend_ast *obj_ast = ast->child[0];
 3160|    690|	zend_ast *prop_ast = ast->child[1];
 3161|       |
 3162|    690|	znode obj_node, prop_node;
 3163|    690|	zend_op *opline;
 3164|    690|	bool nullsafe = ast->kind == ZEND_AST_NULLSAFE_PROP;
 3165|       |
 3166|    690|	if (is_this_fetch(obj_ast)) {
  ------------------
  |  Branch (3166:6): [True: 76, False: 614]
  ------------------
 3167|     76|		if (this_guaranteed_exists()) {
  ------------------
  |  Branch (3167:7): [True: 72, False: 4]
  ------------------
 3168|     72|			obj_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|     72|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 3169|     72|		} else {
 3170|      4|			opline = zend_emit_op(&obj_node, ZEND_FETCH_THIS, NULL, NULL);
  ------------------
  |  |  306|      4|#define ZEND_FETCH_THIS                     184
  ------------------
 3171|      4|			if ((type == BP_VAR_R) || (type == BP_VAR_IS)) {
  ------------------
  |  | 1074|      4|#define BP_VAR_R			0
  ------------------
              			if ((type == BP_VAR_R) || (type == BP_VAR_IS)) {
  ------------------
  |  | 1077|      2|#define BP_VAR_IS			3
  ------------------
  |  Branch (3171:8): [True: 2, False: 2]
  |  Branch (3171:30): [True: 0, False: 2]
  ------------------
 3172|      2|				opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
 3173|      2|				obj_node.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
 3174|      2|			}
 3175|      4|		}
 3176|     76|		CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |   35|     76|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |  368|     76|#define ZEND_ACC_USES_THIS               (1 << 17) /*     |  X  |     |     */
  ------------------
 3177|       |
 3178|       |		/* We will throw if $this doesn't exist, so there's no need to emit a JMP_NULL
 3179|       |		 * check for a nullsafe access. */
 3180|    614|	} else {
 3181|    614|		zend_short_circuiting_mark_inner(obj_ast);
 3182|    614|		opline = zend_delayed_compile_var(&obj_node, obj_ast, type, false);
 3183|    614|		if (opline && (opline->opcode == ZEND_FETCH_DIM_W
  ------------------
  |  |  206|    288|#define ZEND_FETCH_DIM_W                     84
  ------------------
  |  Branch (3183:7): [True: 144, False: 470]
  |  Branch (3183:18): [True: 16, False: 128]
  ------------------
 3184|    128|				|| opline->opcode == ZEND_FETCH_DIM_RW
  ------------------
  |  |  209|    272|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (3184:8): [True: 1, False: 127]
  ------------------
 3185|    127|				|| opline->opcode == ZEND_FETCH_DIM_FUNC_ARG
  ------------------
  |  |  215|    271|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (3185:8): [True: 2, False: 125]
  ------------------
 3186|    125|				|| opline->opcode == ZEND_FETCH_DIM_UNSET)) {
  ------------------
  |  |  218|    125|#define ZEND_FETCH_DIM_UNSET                 96
  ------------------
  |  Branch (3186:8): [True: 4, False: 121]
  ------------------
 3187|     23|			opline->extended_value = ZEND_FETCH_DIM_OBJ;
  ------------------
  |  | 1105|     23|#define ZEND_FETCH_DIM_OBJ 3
  ------------------
 3188|     23|		}
 3189|       |
 3190|    614|		zend_separate_if_call_and_write(&obj_node, obj_ast, type);
 3191|    614|		if (nullsafe) {
  ------------------
  |  Branch (3191:7): [True: 62, False: 552]
  ------------------
 3192|     62|			if (obj_node.op_type == IS_TMP_VAR) {
  ------------------
  |  |  865|     62|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (3192:8): [True: 34, False: 28]
  ------------------
 3193|       |				/* Flush delayed oplines */
 3194|     34|				zend_op *opline = NULL, *oplines = zend_stack_base(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|     34|# define CG(v) (compiler_globals.v)
  ------------------
 3195|     34|				uint32_t var = obj_node.u.op.var;
 3196|     34|				uint32_t count = zend_stack_count(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|     34|# define CG(v) (compiler_globals.v)
  ------------------
 3197|     34|				uint32_t i = count;
 3198|       |
 3199|     45|				while (i > 0 && oplines[i-1].result_type == IS_TMP_VAR && oplines[i-1].result.var == var) {
  ------------------
  |  |  865|     80|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (3199:12): [True: 35, False: 10]
  |  Branch (3199:21): [True: 34, False: 1]
  |  Branch (3199:63): [True: 34, False: 0]
  ------------------
 3200|     34|					i--;
 3201|     34|					if (oplines[i].op1_type == IS_TMP_VAR) {
  ------------------
  |  |  865|     34|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (3201:10): [True: 11, False: 23]
  ------------------
 3202|     11|						var = oplines[i].op1.var;
 3203|     23|					} else {
 3204|     23|						break;
 3205|     23|					}
 3206|     34|				}
 3207|     68|				for (; i < count; ++i) {
  ------------------
  |  Branch (3207:12): [True: 34, False: 34]
  ------------------
 3208|     34|					if (oplines[i].opcode != ZEND_NOP) {
  ------------------
  |  |  124|     34|#define ZEND_NOP                              0
  ------------------
  |  Branch (3208:10): [True: 30, False: 4]
  ------------------
 3209|     30|						opline = get_next_op();
 3210|     30|						memcpy(opline, &oplines[i], sizeof(zend_op));
 3211|     30|						oplines[i].opcode = ZEND_NOP;
  ------------------
  |  |  124|     30|#define ZEND_NOP                              0
  ------------------
 3212|     30|						oplines[i].extended_value = opline - CG(active_op_array)->opcodes;
  ------------------
  |  |   35|     30|# define CG(v) (compiler_globals.v)
  ------------------
 3213|     30|					}
 3214|     34|				}
 3215|     34|			}
 3216|     62|			zend_emit_jmp_null(&obj_node, type);
 3217|     62|		}
 3218|    614|	}
 3219|       |
 3220|    690|	zend_compile_expr(&prop_node, prop_ast);
 3221|       |
 3222|    690|	opline = zend_delayed_emit_op(result, ZEND_FETCH_OBJ_R, &obj_node, &prop_node);
  ------------------
  |  |  204|    690|#define ZEND_FETCH_OBJ_R                     82
  ------------------
 3223|    690|	if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|    690|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3223:6): [True: 594, False: 96]
  ------------------
 3224|    594|		convert_to_string(CT_CONSTANT(opline->op2));
  ------------------
  |  |  390|    594|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|    594|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    594|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|    594|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 6, False: 588]
  |  |  ------------------
  ------------------
 3225|    594|		zend_string_hash_val(Z_STR_P(CT_CONSTANT(opline->op2)));
  ------------------
  |  |  982|    594|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    594|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3226|    594|		opline->extended_value = zend_alloc_cache_slots(3);
 3227|    594|	}
 3228|       |
 3229|    690|	zend_adjust_for_fetch_type(opline, result, type);
 3230|       |
 3231|    690|	return opline;
 3232|    690|}
zend_compile.c:this_guaranteed_exists:
 3015|     80|{
 3016|     80|	const zend_oparray_context *ctx = &CG(context);
  ------------------
  |  |   35|     80|# define CG(v) (compiler_globals.v)
  ------------------
 3017|     83|	while (ctx) {
  ------------------
  |  Branch (3017:9): [True: 83, False: 0]
  ------------------
 3018|       |		/* Instance methods always have a $this.
 3019|       |		 * This also includes closures that have a scope and use $this. */
 3020|     83|		const zend_op_array *op_array = ctx->op_array;
 3021|     83|		if (op_array->fn_flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     83|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (3021:7): [True: 0, False: 83]
  ------------------
 3022|      0|			return false;
 3023|     83|		} else if (op_array->scope) {
  ------------------
  |  Branch (3023:14): [True: 74, False: 9]
  ------------------
 3024|     74|			return true;
 3025|     74|		} else if (!(op_array->fn_flags & ZEND_ACC_CLOSURE)) {
  ------------------
  |  |  384|      9|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (3025:14): [True: 6, False: 3]
  ------------------
 3026|      6|			return false;
 3027|      6|		}
 3028|      3|		ctx = ctx->prev;
 3029|      3|	}
 3030|      0|	return false;
 3031|     80|}
zend_compile.c:zend_emit_jmp_null:
 2591|     68|{
 2592|     68|	uint32_t jmp_null_opnum = get_next_op_number();
 2593|     68|	zend_op *opline = zend_emit_op(NULL, ZEND_JMP_NULL, obj_node, NULL);
  ------------------
  |  |  320|     68|#define ZEND_JMP_NULL                       198
  ------------------
 2594|     68|	if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|     68|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2594:6): [True: 8, False: 60]
  ------------------
 2595|      8|		Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
  ------------------
  |  | 1285|      8|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      8|	zval *_pz = (pz);				\
  |  | 1287|      8|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 5, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      5|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      5|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      5|	}								\
  |  | 1290|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
 2596|      8|	}
 2597|     68|	if (bp_type == BP_VAR_IS) {
  ------------------
  |  | 1077|     68|#define BP_VAR_IS			3
  ------------------
  |  Branch (2597:6): [True: 3, False: 65]
  ------------------
 2598|      3|		opline->extended_value |= ZEND_JMP_NULL_BP_VAR_IS;
  ------------------
  |  |  454|      3|#define ZEND_JMP_NULL_BP_VAR_IS 4
  ------------------
 2599|      3|	}
 2600|     68|	zend_stack_push(&CG(short_circuiting_opnums), &jmp_null_opnum);
  ------------------
  |  |   35|     68|# define CG(v) (compiler_globals.v)
  ------------------
 2601|     68|}
zend_compile.c:zend_compile_var:
12323|  11.3k|{
12324|  11.3k|	zend_check_stack_limit();
12325|       |
12326|  11.3k|	uint32_t checkpoint = zend_short_circuiting_checkpoint();
12327|  11.3k|	zend_op *opcode = zend_compile_var_inner(result, ast, type, by_ref);
12328|  11.3k|	zend_short_circuiting_commit(checkpoint, result, ast);
12329|  11.3k|#if ZEND_DEBUG
12330|  11.3k|	if (result
  ------------------
  |  Branch (12330:6): [True: 11.2k, False: 51]
  ------------------
12331|  11.2k|	 && (type == BP_VAR_R || type == BP_VAR_IS)
  ------------------
  |  | 1074|  22.5k|#define BP_VAR_R			0
  ------------------
              	 && (type == BP_VAR_R || type == BP_VAR_IS)
  ------------------
  |  | 1077|    969|#define BP_VAR_IS			3
  ------------------
  |  Branch (12331:7): [True: 10.2k, False: 969]
  |  Branch (12331:27): [True: 50, False: 919]
  ------------------
12332|       |	 /* Don't check memoized result, as it will force BP_VAR_W even for BP_VAR_IS. */
12333|  10.3k|	 && CG(memoize_mode) == ZEND_MEMOIZE_NONE
  ------------------
  |  |   35|  10.3k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (12333:6): [True: 10.3k, False: 28]
  ------------------
12334|  11.3k|	) {
12335|       |		/* BP_VAR_{R,IS} is not allowed to produce IS_VAR. */
12336|  10.3k|		ZEND_ASSERT(result->op_type != IS_VAR);
  ------------------
  |  |  112|  10.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12336:3): [True: 0, False: 10.3k]
  |  Branch (12336:3): [True: 10.3k, False: 0]
  ------------------
12337|  10.3k|	}
12338|  11.3k|#endif
12339|  11.3k|	return opcode;
12340|  11.3k|}
zend_compile.c:zend_short_circuiting_checkpoint:
 2558|  42.0k|{
 2559|  42.0k|	return zend_stack_count(&CG(short_circuiting_opnums));
  ------------------
  |  |   35|  42.0k|# define CG(v) (compiler_globals.v)
  ------------------
 2560|  42.0k|}
zend_compile.c:zend_compile_var_inner:
12264|  11.3k|{
12265|  11.3k|	CG(zend_lineno) = zend_ast_get_lineno(ast);
  ------------------
  |  |   35|  11.3k|# define CG(v) (compiler_globals.v)
  ------------------
12266|       |
12267|  11.3k|	if (CG(memoize_mode) != ZEND_MEMOIZE_NONE) {
  ------------------
  |  |   35|  11.3k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (12267:6): [True: 56, False: 11.2k]
  ------------------
12268|     56|		switch (ast->kind) {
  ------------------
  |  Branch (12268:11): [True: 14, False: 42]
  ------------------
12269|     14|			case ZEND_AST_CALL:
  ------------------
  |  Branch (12269:4): [True: 14, False: 42]
  ------------------
12270|     14|			case ZEND_AST_METHOD_CALL:
  ------------------
  |  Branch (12270:4): [True: 0, False: 56]
  ------------------
12271|     14|			case ZEND_AST_NULLSAFE_METHOD_CALL:
  ------------------
  |  Branch (12271:4): [True: 0, False: 56]
  ------------------
12272|     14|			case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (12272:4): [True: 0, False: 56]
  ------------------
12273|     14|				zend_compile_memoized_expr(result, ast, BP_VAR_W);
  ------------------
  |  | 1075|     14|#define BP_VAR_W			1
  ------------------
12274|       |				/* This might not actually produce an opcode, e.g. for expressions evaluated at comptime. */
12275|     14|				return NULL;
12276|     56|		}
12277|     56|	}
12278|       |
12279|  11.2k|	switch (ast->kind) {
12280|  5.21k|		case ZEND_AST_VAR:
  ------------------
  |  Branch (12280:3): [True: 5.21k, False: 6.07k]
  ------------------
12281|  5.21k|			return zend_compile_simple_var(result, ast, type, false);
12282|    352|		case ZEND_AST_DIM:
  ------------------
  |  Branch (12282:3): [True: 352, False: 10.9k]
  ------------------
12283|    352|			return zend_compile_dim(result, ast, type, by_ref);
12284|    244|		case ZEND_AST_PROP:
  ------------------
  |  Branch (12284:3): [True: 244, False: 11.0k]
  ------------------
12285|    300|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (12285:3): [True: 56, False: 11.2k]
  ------------------
12286|    300|			return zend_compile_prop(result, ast, type, by_ref);
12287|     57|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (12287:3): [True: 57, False: 11.2k]
  ------------------
12288|     57|			return zend_compile_static_prop(result, ast, type, by_ref, false);
12289|  4.47k|		case ZEND_AST_CALL:
  ------------------
  |  Branch (12289:3): [True: 4.47k, False: 6.81k]
  ------------------
12290|  4.47k|			zend_compile_call(result, ast, type);
12291|  4.47k|			return NULL;
12292|    555|		case ZEND_AST_METHOD_CALL:
  ------------------
  |  Branch (12292:3): [True: 555, False: 10.7k]
  ------------------
12293|    561|		case ZEND_AST_NULLSAFE_METHOD_CALL:
  ------------------
  |  Branch (12293:3): [True: 6, False: 11.2k]
  ------------------
12294|    561|			zend_compile_method_call(result, ast, type);
12295|    561|			return NULL;
12296|    162|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (12296:3): [True: 162, False: 11.1k]
  ------------------
12297|    162|			zend_compile_static_call(result, ast, type);
12298|    162|			return NULL;
12299|     23|		case ZEND_AST_PIPE:
  ------------------
  |  Branch (12299:3): [True: 23, False: 11.2k]
  ------------------
12300|     23|			zend_compile_pipe(result, ast, type);
12301|     23|			return NULL;
12302|     36|		case ZEND_AST_ZNODE:
  ------------------
  |  Branch (12302:3): [True: 36, False: 11.2k]
  ------------------
12303|     36|			*result = *zend_ast_get_znode(ast);
12304|     36|			return NULL;
12305|     15|		case ZEND_AST_ASSIGN_REF:
  ------------------
  |  Branch (12305:3): [True: 15, False: 11.2k]
  ------------------
12306|     15|			zend_compile_assign_ref(result, ast, type);
12307|     15|			return NULL;
12308|      3|		case ZEND_AST_ASSIGN:
  ------------------
  |  Branch (12308:3): [True: 3, False: 11.2k]
  ------------------
12309|      3|			zend_compile_assign(result, ast, false, type);
12310|      3|			return NULL;
12311|     92|		default:
  ------------------
  |  Branch (12311:3): [True: 92, False: 11.1k]
  ------------------
12312|     92|			if (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) {
  ------------------
  |  | 1075|    184|#define BP_VAR_W			1
  ------------------
              			if (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) {
  ------------------
  |  | 1076|    179|#define BP_VAR_RW			2
  ------------------
              			if (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|     86|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (12312:8): [True: 5, False: 87]
  |  Branch (12312:28): [True: 1, False: 86]
  |  Branch (12312:49): [True: 1, False: 85]
  ------------------
12313|      7|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      7|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
12314|      7|					"Cannot use temporary expression in write context");
12315|      7|			}
12316|       |
12317|     85|			zend_compile_expr(result, ast);
12318|       |			return NULL;
12319|  11.2k|	}
12320|  11.2k|}
zend_compile.c:zend_compile_memoized_expr:
 2606|     51|{
 2607|     51|	const zend_memoize_mode memoize_mode = CG(memoize_mode);
  ------------------
  |  |   35|     51|# define CG(v) (compiler_globals.v)
  ------------------
 2608|     51|	if (memoize_mode == ZEND_MEMOIZE_COMPILE) {
  ------------------
  |  Branch (2608:6): [True: 27, False: 24]
  ------------------
 2609|     27|		znode memoized_result;
 2610|       |
 2611|       |		/* Go through normal compilation */
 2612|     27|		CG(memoize_mode) = ZEND_MEMOIZE_NONE;
  ------------------
  |  |   35|     27|# define CG(v) (compiler_globals.v)
  ------------------
 2613|     27|		if (zend_is_variable_or_call(expr)) {
  ------------------
  |  Branch (2613:7): [True: 7, False: 20]
  ------------------
 2614|      7|			zend_compile_var(result, expr, type, /* by_ref */ false);
 2615|     20|		} else {
 2616|     20|			zend_compile_expr(result, expr);
 2617|     20|		}
 2618|     27|		CG(memoize_mode) = ZEND_MEMOIZE_COMPILE;
  ------------------
  |  |   35|     27|# define CG(v) (compiler_globals.v)
  ------------------
 2619|       |
 2620|     27|		if (result->op_type == IS_VAR) {
  ------------------
  |  |  866|     27|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (2620:7): [True: 6, False: 21]
  ------------------
 2621|      6|			zend_emit_op(&memoized_result, ZEND_COPY_TMP, result, NULL);
  ------------------
  |  |  289|      6|#define ZEND_COPY_TMP                       167
  ------------------
 2622|     21|		} else if (result->op_type == IS_TMP_VAR) {
  ------------------
  |  |  865|     21|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (2622:14): [True: 10, False: 11]
  ------------------
 2623|     10|			zend_emit_op_tmp(&memoized_result, ZEND_COPY_TMP, result, NULL);
  ------------------
  |  |  289|     10|#define ZEND_COPY_TMP                       167
  ------------------
 2624|     11|		} else {
 2625|     11|			if (result->op_type == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2625:8): [True: 11, False: 0]
  ------------------
 2626|     11|				Z_TRY_ADDREF(result->u.constant);
  ------------------
  |  | 1299|     11|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|     11|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|     11|	zval *_pz = (pz);				\
  |  |  |  | 1287|     11|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|     11|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|     11|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|     11|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 4, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      4|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      4|	}								\
  |  |  |  | 1290|     11|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2627|     11|			}
 2628|     11|			memoized_result = *result;
 2629|     11|		}
 2630|       |
 2631|     27|		zend_hash_index_update_mem(
 2632|     27|			CG(memoized_exprs), (uintptr_t) expr, &memoized_result, sizeof(znode));
  ------------------
  |  |   35|     27|# define CG(v) (compiler_globals.v)
  ------------------
 2633|     27|	} else if (memoize_mode == ZEND_MEMOIZE_FETCH) {
  ------------------
  |  Branch (2633:13): [True: 24, False: 0]
  ------------------
 2634|     24|		const znode *memoized_result = zend_hash_index_find_ptr(CG(memoized_exprs), (uintptr_t) expr);
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
 2635|     24|		*result = *memoized_result;
 2636|     24|		if (result->op_type == IS_CONST) {
  ------------------
  |  |  864|     24|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2636:7): [True: 9, False: 15]
  ------------------
 2637|      9|			Z_TRY_ADDREF(result->u.constant);
  ------------------
  |  | 1299|      9|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      9|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      9|	zval *_pz = (pz);				\
  |  |  |  | 1287|      9|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      9|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      9|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      9|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 4, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      4|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      4|	}								\
  |  |  |  | 1290|      9|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2638|      9|		}
 2639|     24|	} else {
 2640|       |		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2640:3): [Folded, False: 0]
  |  Branch (2640:3): [Folded, False: 0]
  ------------------
 2641|      0|	}
 2642|     51|}
zend_compile.c:zend_is_variable_or_call:
 2775|    371|{
 2776|    371|	return zend_is_variable(ast) || zend_is_call(ast);
  ------------------
  |  Branch (2776:9): [True: 317, False: 54]
  |  Branch (2776:34): [True: 15, False: 39]
  ------------------
 2777|    371|}
zend_compile.c:zend_is_variable:
 2740|  6.58k|{
 2741|  6.58k|	return ast->kind == ZEND_AST_VAR
  ------------------
  |  Branch (2741:9): [True: 1.96k, False: 4.62k]
  ------------------
 2742|  4.62k|		|| ast->kind == ZEND_AST_DIM
  ------------------
  |  Branch (2742:6): [True: 209, False: 4.41k]
  ------------------
 2743|  4.41k|		|| ast->kind == ZEND_AST_PROP
  ------------------
  |  Branch (2743:6): [True: 122, False: 4.29k]
  ------------------
 2744|  4.29k|		|| ast->kind == ZEND_AST_NULLSAFE_PROP
  ------------------
  |  Branch (2744:6): [True: 15, False: 4.27k]
  ------------------
 2745|  4.27k|		|| ast->kind == ZEND_AST_STATIC_PROP;
  ------------------
  |  Branch (2745:6): [True: 18, False: 4.25k]
  ------------------
 2746|  6.58k|}
zend_compile.c:zend_is_call:
 2765|  7.99k|{
 2766|  7.99k|	return ast->kind == ZEND_AST_CALL
  ------------------
  |  Branch (2766:9): [True: 576, False: 7.41k]
  ------------------
 2767|  7.41k|		|| ast->kind == ZEND_AST_METHOD_CALL
  ------------------
  |  Branch (2767:6): [True: 143, False: 7.27k]
  ------------------
 2768|  7.27k|		|| ast->kind == ZEND_AST_NULLSAFE_METHOD_CALL
  ------------------
  |  Branch (2768:6): [True: 3, False: 7.27k]
  ------------------
 2769|  7.27k|		|| ast->kind == ZEND_AST_STATIC_CALL
  ------------------
  |  Branch (2769:6): [True: 30, False: 7.24k]
  ------------------
 2770|  7.24k|		|| ast->kind == ZEND_AST_PIPE;
  ------------------
  |  Branch (2770:6): [True: 3, False: 7.23k]
  ------------------
 2771|  7.99k|}
zend_compile.c:zend_compile_call:
 5409|  4.47k|{
 5410|  4.47k|	zend_ast *name_ast = ast->child[0];
 5411|  4.47k|	zend_ast *args_ast = ast->child[1];
 5412|  4.47k|	bool is_callable_convert = args_ast->kind == ZEND_AST_CALLABLE_CONVERT;
 5413|       |
 5414|  4.47k|	znode name_node;
 5415|       |
 5416|  4.47k|	if (name_ast->kind != ZEND_AST_ZVAL || Z_TYPE_P(zend_ast_get_zval(name_ast)) != IS_STRING) {
  ------------------
  |  |  669|  4.27k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  4.27k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (name_ast->kind != ZEND_AST_ZVAL || Z_TYPE_P(zend_ast_get_zval(name_ast)) != IS_STRING) {
  ------------------
  |  |  612|  4.27k|#define IS_STRING					6
  ------------------
  |  Branch (5416:6): [True: 195, False: 4.27k]
  |  Branch (5416:41): [True: 3, False: 4.27k]
  ------------------
 5417|    198|		zend_compile_expr(&name_node, name_ast);
 5418|    198|		zend_compile_dynamic_call(result, &name_node, args_ast, ast->lineno, type);
 5419|    198|		return;
 5420|    198|	}
 5421|       |
 5422|  4.27k|	{
 5423|  4.27k|		bool runtime_resolution = zend_compile_function_name(&name_node, name_ast);
 5424|  4.27k|		if (runtime_resolution) {
  ------------------
  |  Branch (5424:7): [True: 180, False: 4.09k]
  ------------------
 5425|    180|			if (zend_string_equals_literal_ci(zend_ast_get_str(name_ast), "assert")
  ------------------
  |  |  404|    360|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    180|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 11, False: 169]
  |  |  |  Branch (404:40): [True: 5, False: 6]
  |  |  ------------------
  ------------------
 5426|      5|					&& !is_callable_convert) {
  ------------------
  |  Branch (5426:9): [True: 3, False: 2]
  ------------------
 5427|      3|				zend_compile_assert(result, zend_ast_get_list(args_ast), Z_STR(name_node.u.constant), NULL, ast->lineno, type);
  ------------------
  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  ------------------
 5428|    177|			} else {
 5429|    177|				zend_compile_ns_call(result, &name_node, args_ast, ast->lineno, type);
 5430|    177|			}
 5431|    180|			return;
 5432|    180|		}
 5433|  4.27k|	}
 5434|       |
 5435|  4.09k|	{
 5436|  4.09k|		const zval *name = &name_node.u.constant;
 5437|  4.09k|		zend_string *lcname = zend_string_tolower(Z_STR_P(name));
  ------------------
  |  |  982|  4.09k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  4.09k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5438|  4.09k|		zval *fbc_zv = zend_hash_find(CG(function_table), lcname);
  ------------------
  |  |   35|  4.09k|# define CG(v) (compiler_globals.v)
  ------------------
 5439|  4.09k|		const zend_function *fbc = fbc_zv ? Z_PTR_P(fbc_zv) : NULL;
  ------------------
  |  | 1053|  3.81k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  3.81k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  |  Branch (5439:30): [True: 3.81k, False: 282]
  ------------------
 5440|  4.09k|		zend_op *opline;
 5441|       |
 5442|       |		/* Special assert() handling should apply independently of compiler flags. */
 5443|  4.09k|		if (fbc && zend_string_equals_literal(lcname, "assert") && !is_callable_convert) {
  ------------------
  |  |  407|  7.90k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 91, False: 3.72k]
  |  |  ------------------
  ------------------
  |  Branch (5443:7): [True: 3.81k, False: 282]
  |  Branch (5443:62): [True: 91, False: 0]
  ------------------
 5444|     91|			zend_compile_assert(result, zend_ast_get_list(args_ast), lcname, fbc, ast->lineno, type);
 5445|     91|			zend_string_release(lcname);
 5446|     91|			zval_ptr_dtor(&name_node.u.constant);
 5447|     91|			return;
 5448|     91|		}
 5449|       |
 5450|  4.00k|		if (!fbc
  ------------------
  |  Branch (5450:7): [True: 282, False: 3.72k]
  ------------------
 5451|  3.72k|		 || !fbc_is_finalized(fbc)
  ------------------
  |  Branch (5451:7): [True: 0, False: 3.72k]
  ------------------
 5452|  3.72k|		 || zend_compile_ignore_function(fbc, CG(active_op_array)->filename)) {
  ------------------
  |  |   35|  3.72k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5452:7): [True: 0, False: 3.72k]
  ------------------
 5453|    282|			zend_string_release_ex(lcname, 0);
 5454|    282|			zend_compile_dynamic_call(result, &name_node, args_ast, ast->lineno, type);
 5455|    282|			return;
 5456|    282|		}
 5457|       |
 5458|  3.72k|		if (!is_callable_convert &&
  ------------------
  |  Branch (5458:7): [True: 3.70k, False: 20]
  ------------------
 5459|  3.70k|		    zend_try_compile_special_func(result, lcname,
  ------------------
  |  Branch (5459:7): [True: 109, False: 3.59k]
  ------------------
 5460|  3.70k|				zend_ast_get_list(args_ast), fbc, type, ast->lineno) == SUCCESS
 5461|  3.72k|		) {
 5462|    109|			zend_string_release_ex(lcname, 0);
 5463|    109|			zval_ptr_dtor(&name_node.u.constant);
 5464|    109|			return;
 5465|    109|		}
 5466|       |
 5467|  3.61k|		zval_ptr_dtor(&name_node.u.constant);
 5468|  3.61k|		ZVAL_STR(&name_node.u.constant, lcname);
  ------------------
  |  | 1088|  3.61k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  3.61k|		zval *__z = (z);						\
  |  | 1090|  3.61k|		zend_string *__s = (s);					\
  |  | 1091|  3.61k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  3.61k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  3.61k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  3.61k|		/* interned strings support */			\
  |  | 1093|  3.61k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  3.61k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.61k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 68, False: 3.54k]
  |  |  ------------------
  |  | 1094|  3.61k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     68|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     68|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  3.61k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  7.15k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  3.54k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  3.54k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  3.54k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  3.61k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 3.61k]
  |  |  ------------------
  ------------------
 5469|       |
 5470|  3.61k|		opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, &name_node);
  ------------------
  |  |  184|  3.61k|#define ZEND_INIT_FCALL                      61
  ------------------
 5471|  3.61k|		opline->result.num = zend_alloc_cache_slot();
 5472|       |
 5473|       |		/* Store offset to function from symbol table in op2.extra. */
 5474|  3.61k|		if (fbc->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (5474:7): [True: 3.14k, False: 466]
  ------------------
 5475|  3.14k|			const Bucket *fbc_bucket = ZEND_CONTAINER_OF(fbc_zv, Bucket, val);
  ------------------
  |  |  407|  3.14k|	_Generic( \
  |  |  408|  3.14k|		(ptr), \
  |  |  409|  3.14k|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  410|  3.14k|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  411|  3.14k|	)
  ------------------
 5476|  3.14k|			Z_EXTRA_P(CT_CONSTANT(opline->op2)) = fbc_bucket - CG(function_table)->arData;
  ------------------
  |  |  705|  3.14k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|  3.14k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			Z_EXTRA_P(CT_CONSTANT(opline->op2)) = fbc_bucket - CG(function_table)->arData;
  ------------------
  |  |   35|  3.14k|# define CG(v) (compiler_globals.v)
  ------------------
 5477|  3.14k|		}
 5478|       |
 5479|  3.61k|		zend_compile_call_common(result, args_ast, fbc, ast->lineno, type);
 5480|  3.61k|	}
 5481|  3.61k|}
zend_compile.c:zend_compile_dynamic_call:
 4094|    480|{
 4095|    480|	if (name_node->op_type == IS_CONST && Z_TYPE(name_node->u.constant) == IS_STRING) {
  ------------------
  |  |  864|    960|#define IS_CONST	(1<<0)
  ------------------
              	if (name_node->op_type == IS_CONST && Z_TYPE(name_node->u.constant) == IS_STRING) {
  ------------------
  |  |  668|    297|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (name_node->op_type == IS_CONST && Z_TYPE(name_node->u.constant) == IS_STRING) {
  ------------------
  |  |  612|    297|#define IS_STRING					6
  ------------------
  |  Branch (4095:6): [True: 297, False: 183]
  |  Branch (4095:40): [True: 290, False: 7]
  ------------------
 4096|    290|		const char *colon;
 4097|    290|		zend_string *str = Z_STR(name_node->u.constant);
  ------------------
  |  |  981|    290|#define Z_STR(zval)					(zval).value.str
  ------------------
 4098|    290|		if ((colon = zend_memrchr(ZSTR_VAL(str), ':', ZSTR_LEN(str))) != NULL && colon > ZSTR_VAL(str) && *(colon - 1) == ':') {
  ------------------
  |  |   67|    290|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if ((colon = zend_memrchr(ZSTR_VAL(str), ':', ZSTR_LEN(str))) != NULL && colon > ZSTR_VAL(str) && *(colon - 1) == ':') {
  ------------------
  |  |   68|    290|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		if ((colon = zend_memrchr(ZSTR_VAL(str), ':', ZSTR_LEN(str))) != NULL && colon > ZSTR_VAL(str) && *(colon - 1) == ':') {
  ------------------
  |  |   67|    293|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (4098:7): [True: 3, False: 287]
  |  Branch (4098:76): [True: 3, False: 0]
  |  Branch (4098:101): [True: 3, False: 0]
  ------------------
 4099|      3|			zend_string *class = zend_string_init(ZSTR_VAL(str), colon - ZSTR_VAL(str) - 1, 0);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_string *class = zend_string_init(ZSTR_VAL(str), colon - ZSTR_VAL(str) - 1, 0);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4100|      3|			zend_string *method = zend_string_init(colon + 1, ZSTR_LEN(str) - (colon - ZSTR_VAL(str)) - 1, 0);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			zend_string *method = zend_string_init(colon + 1, ZSTR_LEN(str) - (colon - ZSTR_VAL(str)) - 1, 0);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4101|      3|			zend_op *opline = get_next_op();
 4102|       |
 4103|      3|			opline->opcode = ZEND_INIT_STATIC_METHOD_CALL;
  ------------------
  |  |  235|      3|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
 4104|      3|			opline->op1_type = IS_CONST;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
 4105|      3|			opline->op1.constant = zend_add_class_name_literal(class);
 4106|      3|			opline->op2_type = IS_CONST;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
 4107|      3|			opline->op2.constant = zend_add_func_name_literal(method);
 4108|       |			/* 2 slots, for class and method */
 4109|      3|			opline->result.num = zend_alloc_cache_slots(2);
 4110|      3|			zval_ptr_dtor(&name_node->u.constant);
 4111|    287|		} else {
 4112|    287|			zend_op *opline = get_next_op();
 4113|       |
 4114|    287|			opline->opcode = ZEND_INIT_FCALL_BY_NAME;
  ------------------
  |  |  182|    287|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
 4115|    287|			opline->op2_type = IS_CONST;
  ------------------
  |  |  864|    287|#define IS_CONST	(1<<0)
  ------------------
 4116|    287|			opline->op2.constant = zend_add_func_name_literal(str);
 4117|    287|			opline->result.num = zend_alloc_cache_slot();
 4118|    287|		}
 4119|    290|	} else {
 4120|    190|		zend_emit_op(NULL, ZEND_INIT_DYNAMIC_CALL, NULL, name_node);
  ------------------
  |  |  250|    190|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
 4121|    190|	}
 4122|       |
 4123|       |	zend_compile_call_common(result, args_ast, NULL, lineno, type);
 4124|    480|}
zend_compile.c:zend_add_class_name_literal:
  652|  2.14k|{
  653|       |	/* Original name */
  654|  2.14k|	int ret = zend_add_literal_string(&name);
  655|       |
  656|       |	/* Lowercased name */
  657|  2.14k|	zend_string *lc_name = zend_string_tolower(name);
  658|  2.14k|	zend_add_literal_string(&lc_name);
  659|       |
  660|  2.14k|	return ret;
  661|  2.14k|}
zend_compile.c:zend_add_func_name_literal:
  616|    971|{
  617|       |	/* Original name */
  618|    971|	int ret = zend_add_literal_string(&name);
  619|       |
  620|       |	/* Lowercased name */
  621|    971|	zend_string *lc_name = zend_string_tolower(name);
  622|    971|	zend_add_literal_string(&lc_name);
  623|       |
  624|    971|	return ret;
  625|    971|}
zend_compile.c:zend_compile_function_name:
 4081|  4.27k|{
 4082|  4.27k|	zend_string *orig_name = zend_ast_get_str(name_ast);
 4083|  4.27k|	bool is_fully_qualified;
 4084|       |
 4085|  4.27k|	name_node->op_type = IS_CONST;
  ------------------
  |  |  864|  4.27k|#define IS_CONST	(1<<0)
  ------------------
 4086|  4.27k|	ZVAL_STR(&name_node->u.constant, zend_resolve_function_name(
  ------------------
  |  | 1088|  4.27k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  4.27k|		zval *__z = (z);						\
  |  | 1090|  4.27k|		zend_string *__s = (s);					\
  |  | 1091|  4.27k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  4.27k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  4.27k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  4.27k|		/* interned strings support */			\
  |  | 1093|  4.27k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  4.27k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.27k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 114, False: 4.16k]
  |  |  ------------------
  |  | 1094|  4.27k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    114|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    114|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  4.27k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  8.43k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  4.16k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  4.16k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  4.16k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  4.27k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 4.27k]
  |  |  ------------------
  ------------------
 4087|  4.27k|		orig_name, name_ast->attr, &is_fully_qualified));
 4088|       |
 4089|  4.27k|	return !is_fully_qualified && FC(current_namespace);
  ------------------
  |  |   60|  8.46k|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|  4.18k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 180, False: 4.00k]
  |  |  ------------------
  ------------------
  |  Branch (4089:9): [True: 4.18k, False: 88]
  ------------------
 4090|  4.27k|}
zend_compile.c:zend_compile_assert:
 4457|     94|{
 4458|     94|	if (EG(assertions) >= 0) {
  ------------------
  |  |   45|     94|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (4458:6): [True: 94, False: 0]
  ------------------
 4459|     94|		znode name_node;
 4460|     94|		zend_op *opline;
 4461|     94|		uint32_t check_op_number = get_next_op_number();
 4462|       |
 4463|     94|		zend_emit_op(NULL, ZEND_ASSERT_CHECK, NULL, NULL);
  ------------------
  |  |  273|     94|#define ZEND_ASSERT_CHECK                   151
  ------------------
 4464|       |
 4465|     94|		if (fbc && fbc_is_finalized(fbc)) {
  ------------------
  |  Branch (4465:7): [True: 91, False: 3]
  |  Branch (4465:14): [True: 91, False: 0]
  ------------------
 4466|     91|			name_node.op_type = IS_CONST;
  ------------------
  |  |  864|     91|#define IS_CONST	(1<<0)
  ------------------
 4467|     91|			ZVAL_STR_COPY(&name_node.u.constant, name);
  ------------------
  |  | 1112|     91|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     91|		zval *__z = (z);								\
  |  | 1114|     91|		zend_string *__s = (s);							\
  |  | 1115|     91|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     91|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     91|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     91|		/* interned strings support */					\
  |  | 1117|     91|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 91]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     91|		} else {										\
  |  | 1120|     91|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     91|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     91|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     91|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     91|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     91|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     91|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     91|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     91|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     91|		}												\
  |  | 1123|     91|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 91]
  |  |  ------------------
  ------------------
 4468|       |
 4469|     91|			opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, &name_node);
  ------------------
  |  |  184|     91|#define ZEND_INIT_FCALL                      61
  ------------------
 4470|     91|		} else {
 4471|      3|			opline = zend_emit_op(NULL, ZEND_INIT_NS_FCALL_BY_NAME, NULL, NULL);
  ------------------
  |  |  192|      3|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
 4472|      3|			opline->op2_type = IS_CONST;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
 4473|      3|			opline->op2.constant = zend_add_ns_func_name_literal(name);
 4474|      3|		}
 4475|     94|		opline->result.num = zend_alloc_cache_slot();
 4476|       |
 4477|     94|		if (args->children == 1) {
  ------------------
  |  Branch (4477:7): [True: 91, False: 3]
  ------------------
 4478|       |			/* add "assert(condition) as assertion message */
 4479|     91|			zend_ast *arg = zend_ast_create_zval_from_str(
 4480|     91|				zend_ast_export("assert(", args->child[0], ")"));
 4481|     91|			if (args->child[0]->kind == ZEND_AST_NAMED_ARG) {
  ------------------
  |  Branch (4481:8): [True: 1, False: 90]
  ------------------
 4482|       |				/* If the original argument was named, add the new argument as named as well,
 4483|       |				 * as mixing named and positional is not allowed. */
 4484|      1|				zend_ast *name = zend_ast_create_zval_from_str(
 4485|      1|					ZSTR_INIT_LITERAL("description", 0));
  ------------------
  |  |  141|      1|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 4486|      1|				arg = zend_ast_create(ZEND_AST_NAMED_ARG, name, arg);
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4487|      1|			}
 4488|     91|			args = (zend_ast_list *)zend_ast_list_add((zend_ast *) args, arg);
 4489|     91|		}
 4490|       |
 4491|     94|		zend_compile_call_common(result, (zend_ast*)args, fbc, lineno, type);
 4492|       |
 4493|     94|		opline = &CG(active_op_array)->opcodes[check_op_number];
  ------------------
  |  |   35|     94|# define CG(v) (compiler_globals.v)
  ------------------
 4494|     94|		opline->op2.opline_num = get_next_op_number();
 4495|     94|		SET_NODE(opline->result, result);
  ------------------
  |  |   42|     94|#define SET_NODE(target, src) do { \
  |  |   43|     94|		target ## _type = (src)->op_type; \
  |  |   44|     94|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     94|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 94]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     94|		} else { \
  |  |   47|     94|			target = (src)->u.op; \
  |  |   48|     94|		} \
  |  |   49|     94|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 94]
  |  |  ------------------
  ------------------
 4496|     94|	} else {
 4497|      0|		if (!fbc) {
  ------------------
  |  Branch (4497:7): [True: 0, False: 0]
  ------------------
 4498|      0|			zend_string_release_ex(name, 0);
 4499|      0|		}
 4500|      0|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 4501|      0|		ZVAL_TRUE(&result->u.constant);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4502|      0|	}
 4503|     94|}
zend_compile.c:zend_add_ns_func_name_literal:
  629|    180|{
  630|    180|	const char *unqualified_name;
  631|    180|	size_t unqualified_name_len;
  632|       |
  633|       |	/* Original name */
  634|    180|	int ret = zend_add_literal_string(&name);
  635|       |
  636|       |	/* Lowercased name */
  637|    180|	zend_string *lc_name = zend_string_tolower(name);
  638|    180|	zend_add_literal_string(&lc_name);
  639|       |
  640|       |	/* Lowercased unqualified name */
  641|    180|	if (zend_get_unqualified_name(name, &unqualified_name, &unqualified_name_len)) {
  ------------------
  |  Branch (641:6): [True: 180, False: 0]
  ------------------
  642|    180|		lc_name = zend_string_alloc(unqualified_name_len, 0);
  643|    180|		zend_str_tolower_copy(ZSTR_VAL(lc_name), unqualified_name, unqualified_name_len);
  ------------------
  |  |   67|    180|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  644|    180|		zend_add_literal_string(&lc_name);
  645|    180|	}
  646|       |
  647|    180|	return ret;
  648|    180|}
zend_compile.c:zend_compile_ns_call:
 4818|    177|{
 4819|    177|	int name_constants = zend_add_ns_func_name_literal(Z_STR(name_node->u.constant));
  ------------------
  |  |  981|    177|#define Z_STR(zval)					(zval).value.str
  ------------------
 4820|       |
 4821|       |	/* Find frameless function with same name. */
 4822|    177|	const zend_function *frameless_function = NULL;
 4823|    177|	if (args_ast->kind != ZEND_AST_CALLABLE_CONVERT
  ------------------
  |  Branch (4823:6): [True: 175, False: 2]
  ------------------
 4824|    175|	 && !zend_args_contain_unpack_or_named(zend_ast_get_list(args_ast))
  ------------------
  |  Branch (4824:6): [True: 175, False: 0]
  ------------------
 4825|       |	 /* Avoid blowing up op count with nested frameless branches. */
 4826|    175|	 && !CG(context).in_jmp_frameless_branch) {
  ------------------
  |  |   35|    175|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (4826:6): [True: 175, False: 0]
  ------------------
 4827|    175|		zend_string *lc_func_name = Z_STR_P(CT_CONSTANT_EX(CG(active_op_array), name_constants + 2));
  ------------------
  |  |  982|    175|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    175|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4828|    175|		frameless_function = zend_hash_find_ptr(CG(function_table), lc_func_name);
  ------------------
  |  |   35|    175|# define CG(v) (compiler_globals.v)
  ------------------
 4829|    175|	}
 4830|       |
 4831|       |	/* Check whether any frameless handler may actually be used. */
 4832|    177|	uint32_t jmp_fl_opnum = 0;
 4833|    177|	const zend_frameless_function_info *frameless_function_info = NULL;
 4834|    177|	if (frameless_function) {
  ------------------
  |  Branch (4834:6): [True: 147, False: 30]
  ------------------
 4835|    147|		frameless_function_info = find_frameless_function_info(zend_ast_get_list(args_ast), frameless_function, type);
 4836|    147|		if (frameless_function_info) {
  ------------------
  |  Branch (4836:7): [True: 0, False: 147]
  ------------------
 4837|      0|			CG(context).in_jmp_frameless_branch = true;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 4838|      0|			znode op1;
 4839|      0|			op1.op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 4840|      0|			ZVAL_COPY(&op1.u.constant, CT_CONSTANT_EX(CG(active_op_array), name_constants + 1));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4841|      0|			jmp_fl_opnum = get_next_op_number();
 4842|      0|			zend_emit_op(NULL, ZEND_JMP_FRAMELESS, &op1, NULL);
  ------------------
  |  |  330|      0|#define ZEND_JMP_FRAMELESS                  208
  ------------------
 4843|      0|		}
 4844|    147|	}
 4845|       |
 4846|       |	/* Compile ns call. */
 4847|    177|	zend_op *opline = get_next_op();
 4848|    177|	opline->opcode = ZEND_INIT_NS_FCALL_BY_NAME;
  ------------------
  |  |  192|    177|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
 4849|    177|	opline->op2_type = IS_CONST;
  ------------------
  |  |  864|    177|#define IS_CONST	(1<<0)
  ------------------
 4850|    177|	opline->op2.constant = name_constants;
 4851|    177|	opline->result.num = zend_alloc_cache_slot();
 4852|    177|	zend_compile_call_common(result, args_ast, NULL, lineno, type);
 4853|       |
 4854|       |	/* Compile frameless call. */
 4855|    177|	if (frameless_function_info) {
  ------------------
  |  Branch (4855:6): [True: 0, False: 177]
  ------------------
 4856|      0|		CG(zend_lineno) = lineno;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 4857|       |
 4858|      0|		uint32_t jmp_end_opnum = zend_emit_jump(0);
 4859|      0|		uint32_t jmp_fl_target = get_next_op_number();
 4860|       |
 4861|      0|		uint32_t flf_icall_opnum = zend_compile_frameless_icall_ex(NULL, zend_ast_get_list(args_ast), frameless_function, frameless_function_info, type);
 4862|       |
 4863|      0|		zend_op *jmp_fl = &CG(active_op_array)->opcodes[jmp_fl_opnum];
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 4864|      0|		jmp_fl->op2.opline_num = jmp_fl_target;
 4865|      0|		jmp_fl->extended_value = zend_alloc_cache_slot();
 4866|      0|		zend_op *flf_icall = &CG(active_op_array)->opcodes[flf_icall_opnum];
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 4867|      0|		SET_NODE(flf_icall->result, result);
  ------------------
  |  |   42|      0|#define SET_NODE(target, src) do { \
  |  |   43|      0|		target ## _type = (src)->op_type; \
  |  |   44|      0|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      0|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|      0|		} else { \
  |  |   47|      0|			target = (src)->u.op; \
  |  |   48|      0|		} \
  |  |   49|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4868|      0|		zend_update_jump_target_to_next(jmp_end_opnum);
 4869|       |
 4870|      0|		CG(context).in_jmp_frameless_branch = false;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 4871|      0|	}
 4872|    177|}
zend_compile.c:zend_args_contain_unpack_or_named:
 4128|  3.42k|{
 4129|  3.42k|	uint32_t i;
 4130|  7.94k|	for (i = 0; i < args->children; ++i) {
  ------------------
  |  Branch (4130:14): [True: 4.54k, False: 3.40k]
  ------------------
 4131|  4.54k|		const zend_ast *arg = args->child[i];
 4132|  4.54k|		if (arg->kind == ZEND_AST_UNPACK || arg->kind == ZEND_AST_NAMED_ARG) {
  ------------------
  |  Branch (4132:7): [True: 10, False: 4.53k]
  |  Branch (4132:39): [True: 10, False: 4.52k]
  ------------------
 4133|     20|			return true;
 4134|     20|		}
 4135|  4.54k|	}
 4136|  3.40k|	return false;
 4137|  3.42k|}
zend_compile.c:find_frameless_function_info:
 4737|  3.26k|{
 4738|  3.26k|	if (zend_execute_internal) {
  ------------------
  |  Branch (4738:6): [True: 3.26k, False: 0]
  ------------------
 4739|  3.26k|		return NULL;
 4740|  3.26k|	}
 4741|       |
 4742|      0|	if (ZEND_USER_CODE(fbc->type)) {
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4743|      0|		return NULL;
 4744|      0|	}
 4745|       |
 4746|      0|	const zend_frameless_function_info *frameless_function_info = fbc->internal_function.frameless_function_infos;
 4747|      0|	if (!frameless_function_info) {
  ------------------
  |  Branch (4747:6): [True: 0, False: 0]
  ------------------
 4748|      0|		return NULL;
 4749|      0|	}
 4750|       |
 4751|      0|	if (args->children > 3) {
  ------------------
  |  Branch (4751:6): [True: 0, False: 0]
  ------------------
 4752|      0|		return NULL;
 4753|      0|	}
 4754|       |
 4755|      0|	while (frameless_function_info->handler) {
  ------------------
  |  Branch (4755:9): [True: 0, False: 0]
  ------------------
 4756|      0|		if (frameless_function_info->num_args >= args->children
  ------------------
  |  Branch (4756:7): [True: 0, False: 0]
  ------------------
 4757|      0|		 && fbc->common.required_num_args <= args->children
  ------------------
  |  Branch (4757:7): [True: 0, False: 0]
  ------------------
 4758|      0|		 && (!(fbc->common.fn_flags & ZEND_ACC_VARIADIC)
  ------------------
  |  |  358|      0|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (4758:8): [True: 0, False: 0]
  ------------------
 4759|      0|		  || frameless_function_info->num_args == args->children)) {
  ------------------
  |  Branch (4759:8): [True: 0, False: 0]
  ------------------
 4760|      0|			uint32_t num_args = frameless_function_info->num_args;
 4761|      0|			uint32_t offset = find_frameless_function_offset(num_args, frameless_function_info->handler);
 4762|      0|			if (offset == (uint32_t)-1) {
  ------------------
  |  Branch (4762:8): [True: 0, False: 0]
  ------------------
 4763|      0|				continue;
 4764|      0|			}
 4765|      0|			return frameless_function_info;
 4766|      0|		}
 4767|      0|		frameless_function_info++;
 4768|      0|	}
 4769|       |
 4770|      0|	return NULL;
 4771|      0|}
zend_compile.c:zend_emit_jump:
 2368|    764|{
 2369|    764|	uint32_t opnum = get_next_op_number();
 2370|    764|	zend_op *opline = zend_emit_op(NULL, ZEND_JMP, NULL, NULL);
  ------------------
  |  |  166|    764|#define ZEND_JMP                             42
  ------------------
 2371|    764|	opline->op1.opline_num = opnum_target;
 2372|    764|	return opnum;
 2373|    764|}
zend_compile.c:fbc_is_finalized:
 4289|  3.82k|static bool fbc_is_finalized(const zend_function *fbc) {
 4290|  3.82k|	return !ZEND_USER_CODE(fbc->type) || (fbc->common.fn_flags & ZEND_ACC_DONE_PASS_TWO);
  ------------------
  |  | 1081|  7.64k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
              	return !ZEND_USER_CODE(fbc->type) || (fbc->common.fn_flags & ZEND_ACC_DONE_PASS_TWO);
  ------------------
  |  |  390|    471|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  ------------------
  |  Branch (4290:9): [True: 3.35k, False: 471]
  |  Branch (4290:39): [True: 471, False: 0]
  ------------------
 4291|  3.82k|}
zend_compile.c:zend_compile_ignore_function:
 4304|  3.73k|{
 4305|  3.73k|	if (fbc->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (4305:6): [True: 3.26k, False: 471]
  ------------------
 4306|  3.26k|		return CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS;
  ------------------
  |  |   35|  3.26k|# define CG(v) (compiler_globals.v)
  ------------------
              		return CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS;
  ------------------
  |  | 1269|  3.26k|#define ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS  (1<<3)
  ------------------
 4307|  3.26k|	} else {
 4308|    471|		return (CG(compiler_options) & ZEND_COMPILE_IGNORE_USER_FUNCTIONS)
  ------------------
  |  |   35|    471|# define CG(v) (compiler_globals.v)
  ------------------
              		return (CG(compiler_options) & ZEND_COMPILE_IGNORE_USER_FUNCTIONS)
  ------------------
  |  | 1286|    471|#define ZEND_COMPILE_IGNORE_USER_FUNCTIONS      (1<<9)
  ------------------
  |  Branch (4308:10): [True: 0, False: 471]
  ------------------
 4309|    471|			|| ((CG(compiler_options) & ZEND_COMPILE_IGNORE_OTHER_FILES)
  ------------------
  |  |   35|    471|# define CG(v) (compiler_globals.v)
  ------------------
              			|| ((CG(compiler_options) & ZEND_COMPILE_IGNORE_OTHER_FILES)
  ------------------
  |  | 1298|    471|#define ZEND_COMPILE_IGNORE_OTHER_FILES			(1<<13)
  ------------------
  |  Branch (4309:8): [True: 0, False: 471]
  ------------------
 4310|      0|				&& fbc->op_array.filename != filename);
  ------------------
  |  Branch (4310:8): [True: 0, False: 0]
  ------------------
 4311|    471|	}
 4312|  3.73k|}
zend_compile.c:zend_try_compile_special_func:
 5302|  3.70k|{
 5303|  3.70k|	if (CG(compiler_options) & ZEND_COMPILE_NO_BUILTINS) {
  ------------------
  |  |   35|  3.70k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_NO_BUILTINS) {
  ------------------
  |  | 1292|  3.70k|#define ZEND_COMPILE_NO_BUILTINS				(1<<11)
  ------------------
  |  Branch (5303:6): [True: 0, False: 3.70k]
  ------------------
 5304|      0|		return FAILURE;
 5305|      0|	}
 5306|       |
 5307|  3.70k|	if (fbc->type != ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (5307:6): [True: 458, False: 3.24k]
  ------------------
 5308|       |		/* If the function is part of disabled_functions, it may be redeclared as a userland
 5309|       |		 * function with a different implementation. Don't use the VM builtin in that case. */
 5310|    458|		return FAILURE;
 5311|    458|	}
 5312|       |
 5313|  3.24k|	if (zend_args_contain_unpack_or_named(args)) {
  ------------------
  |  Branch (5313:6): [True: 19, False: 3.22k]
  ------------------
 5314|     19|		return FAILURE;
 5315|     19|	}
 5316|       |
 5317|  3.22k|	if (zend_try_compile_special_func_ex(result, lcname, args, type, lineno) == SUCCESS) {
  ------------------
  |  Branch (5317:6): [True: 109, False: 3.11k]
  ------------------
 5318|    109|		return SUCCESS;
 5319|    109|	}
 5320|       |
 5321|  3.11k|	return zend_compile_frameless_icall(result, args, fbc, type) != (uint32_t)-1 ? SUCCESS : FAILURE;
  ------------------
  |  Branch (5321:9): [True: 0, False: 3.11k]
  ------------------
 5322|  3.22k|}
zend_compile.c:zend_try_compile_special_func_ex:
 5223|  3.22k|{
 5224|  3.22k|	if (zend_string_equals_literal(lcname, "strlen")) {
  ------------------
  |  |  407|  3.22k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 11, False: 3.21k]
  |  |  ------------------
  ------------------
 5225|     11|		return zend_compile_func_strlen(result, args);
 5226|  3.21k|	} else if (zend_string_equals_literal(lcname, "is_null")) {
  ------------------
  |  |  407|  3.21k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 3.21k]
  |  |  ------------------
  ------------------
 5227|      2|		return zend_compile_func_typecheck(result, args, IS_NULL);
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
 5228|  3.21k|	} else if (zend_string_equals_literal(lcname, "is_bool")) {
  ------------------
  |  |  407|  3.21k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.21k]
  |  |  ------------------
  ------------------
 5229|      0|		return zend_compile_func_typecheck(result, args, _IS_BOOL);
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
 5230|  3.21k|	} else if (zend_string_equals_literal(lcname, "is_long")
  ------------------
  |  |  407|  6.42k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.21k]
  |  |  ------------------
  ------------------
 5231|  3.21k|		|| zend_string_equals_literal(lcname, "is_int")
  ------------------
  |  |  407|  6.42k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.21k]
  |  |  ------------------
  ------------------
 5232|  3.21k|		|| zend_string_equals_literal(lcname, "is_integer")
  ------------------
  |  |  407|  3.21k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 3, False: 3.20k]
  |  |  ------------------
  ------------------
 5233|  3.21k|	) {
 5234|      3|		return zend_compile_func_typecheck(result, args, IS_LONG);
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
 5235|  3.20k|	} else if (zend_string_equals_literal(lcname, "is_float")
  ------------------
  |  |  407|  6.41k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 1, False: 3.20k]
  |  |  ------------------
  ------------------
 5236|  3.20k|		|| zend_string_equals_literal(lcname, "is_double")
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5237|  3.20k|	) {
 5238|      1|		return zend_compile_func_typecheck(result, args, IS_DOUBLE);
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
 5239|  3.20k|	} else if (zend_string_equals_literal(lcname, "is_string")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5240|      0|		return zend_compile_func_typecheck(result, args, IS_STRING);
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
 5241|  3.20k|	} else if (zend_string_equals_literal(lcname, "is_array")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 3, False: 3.20k]
  |  |  ------------------
  ------------------
 5242|      3|		return zend_compile_func_typecheck(result, args, IS_ARRAY);
  ------------------
  |  |  613|      3|#define IS_ARRAY					7
  ------------------
 5243|  3.20k|	} else if (zend_string_equals_literal(lcname, "is_object")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5244|      0|		return zend_compile_func_typecheck(result, args, IS_OBJECT);
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
 5245|  3.20k|	} else if (zend_string_equals_literal(lcname, "is_resource")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5246|      0|		return zend_compile_func_typecheck(result, args, IS_RESOURCE);
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
 5247|  3.20k|	} else if (zend_string_equals_literal(lcname, "is_scalar")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5248|      0|		return zend_compile_func_is_scalar(result, args);
 5249|  3.20k|	} else if (zend_string_equals_literal(lcname, "boolval")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5250|      0|		return zend_compile_func_cast(result, args, _IS_BOOL);
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
 5251|  3.20k|	} else if (zend_string_equals_literal(lcname, "intval")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5252|      0|		return zend_compile_func_cast(result, args, IS_LONG);
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
 5253|  3.20k|	} else if (zend_string_equals_literal(lcname, "floatval")
  ------------------
  |  |  407|  6.41k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 3.20k]
  |  |  ------------------
  ------------------
 5254|  3.20k|		|| zend_string_equals_literal(lcname, "doubleval")
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5255|  3.20k|	) {
 5256|      2|		return zend_compile_func_cast(result, args, IS_DOUBLE);
  ------------------
  |  |  611|      2|#define IS_DOUBLE					5
  ------------------
 5257|  3.20k|	} else if (zend_string_equals_literal(lcname, "strval")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 5258|      0|		return zend_compile_func_cast(result, args, IS_STRING);
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
 5259|  3.20k|	} else if (zend_string_equals_literal(lcname, "defined")) {
  ------------------
  |  |  407|  3.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 8, False: 3.19k]
  |  |  ------------------
  ------------------
 5260|      8|		return zend_compile_func_defined(result, args);
 5261|  3.19k|	} else if (zend_string_equals_literal(lcname, "chr") && type == BP_VAR_R) {
  ------------------
  |  |  407|  6.39k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.19k]
  |  |  ------------------
  ------------------
              	} else if (zend_string_equals_literal(lcname, "chr") && type == BP_VAR_R) {
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
  |  Branch (5261:58): [True: 0, False: 0]
  ------------------
 5262|      0|		return zend_compile_func_chr(result, args);
 5263|  3.19k|	} else if (zend_string_equals_literal(lcname, "ord") && type == BP_VAR_R) {
  ------------------
  |  |  407|  6.39k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 3.19k]
  |  |  ------------------
  ------------------
              	} else if (zend_string_equals_literal(lcname, "ord") && type == BP_VAR_R) {
  ------------------
  |  | 1074|      2|#define BP_VAR_R			0
  ------------------
  |  Branch (5263:58): [True: 2, False: 0]
  ------------------
 5264|      2|		return zend_compile_func_ord(result, args);
 5265|  3.19k|	} else if (zend_string_equals_literal(lcname, "call_user_func_array")) {
  ------------------
  |  |  407|  3.19k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 7, False: 3.18k]
  |  |  ------------------
  ------------------
 5266|      7|		return zend_compile_func_cufa(result, args, lcname, type);
 5267|  3.18k|	} else if (zend_string_equals_literal(lcname, "call_user_func")) {
  ------------------
  |  |  407|  3.18k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 16, False: 3.17k]
  |  |  ------------------
  ------------------
 5268|     16|		return zend_compile_func_cuf(result, args, lcname, type);
 5269|  3.17k|	} else if (zend_string_equals_literal(lcname, "in_array")) {
  ------------------
  |  |  407|  3.17k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 16, False: 3.15k]
  |  |  ------------------
  ------------------
 5270|     16|		return zend_compile_func_in_array(result, args);
 5271|  3.15k|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_COUNT))
  ------------------
  |  Branch (5271:13): [True: 13, False: 3.14k]
  ------------------
 5272|  3.14k|			|| zend_string_equals_literal(lcname, "sizeof")) {
  ------------------
  |  |  407|  3.14k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 1, False: 3.14k]
  |  |  ------------------
  ------------------
 5273|     14|		return zend_compile_func_count(result, args, lcname);
 5274|  3.14k|	} else if (zend_string_equals_literal(lcname, "get_class")) {
  ------------------
  |  |  407|  3.14k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 5, False: 3.13k]
  |  |  ------------------
  ------------------
 5275|      5|		return zend_compile_func_get_class(result, args);
 5276|  3.13k|	} else if (zend_string_equals_literal(lcname, "get_called_class")) {
  ------------------
  |  |  407|  3.13k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 3, False: 3.13k]
  |  |  ------------------
  ------------------
 5277|      3|		return zend_compile_func_get_called_class(result, args);
 5278|  3.13k|	} else if (zend_string_equals_literal(lcname, "gettype")) {
  ------------------
  |  |  407|  3.13k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 1, False: 3.13k]
  |  |  ------------------
  ------------------
 5279|      1|		return zend_compile_func_gettype(result, args);
 5280|  3.13k|	} else if (zend_string_equals_literal(lcname, "func_num_args")) {
  ------------------
  |  |  407|  3.13k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 3.13k]
  |  |  ------------------
  ------------------
 5281|      0|		return zend_compile_func_num_args(result, args);
 5282|  3.13k|	} else if (zend_string_equals_literal(lcname, "func_get_args")) {
  ------------------
  |  |  407|  3.13k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 5, False: 3.12k]
  |  |  ------------------
  ------------------
 5283|      5|		return zend_compile_func_get_args(result, args);
 5284|  3.12k|	} else if (zend_string_equals_literal(lcname, "array_slice")) {
  ------------------
  |  |  407|  3.12k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 1, False: 3.12k]
  |  |  ------------------
  ------------------
 5285|      1|		return zend_compile_func_array_slice(result, args);
 5286|  3.12k|	} else if (zend_string_equals_literal(lcname, "array_key_exists")) {
  ------------------
  |  |  407|  3.12k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 3.12k]
  |  |  ------------------
  ------------------
 5287|      2|		return zend_compile_func_array_key_exists(result, args);
 5288|  3.12k|	} else if (zend_string_equals_literal(lcname, "sprintf")) {
  ------------------
  |  |  407|  3.12k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 8, False: 3.11k]
  |  |  ------------------
  ------------------
 5289|      8|		return zend_compile_func_sprintf(result, args);
 5290|  3.11k|	} else if (zend_string_equals_literal(lcname, "printf")) {
  ------------------
  |  |  407|  3.11k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 5, False: 3.11k]
  |  |  ------------------
  ------------------
 5291|      5|		return zend_compile_func_printf(result, args);
 5292|  3.11k|	} else if (zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_CLONE))) {
  ------------------
  |  Branch (5292:13): [True: 33, False: 3.07k]
  ------------------
 5293|     33|		return zend_compile_func_clone(result, args);
 5294|  3.07k|	} else if (zend_string_equals_literal(lcname, "array_map")) {
  ------------------
  |  |  407|  3.07k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 8, False: 3.06k]
  |  |  ------------------
  ------------------
 5295|      8|		return zend_compile_func_array_map(result, args, lcname, lineno);
 5296|  3.06k|	} else {
 5297|  3.06k|		return FAILURE;
 5298|  3.06k|	}
 5299|  3.22k|}
zend_compile.c:zend_compile_func_strlen:
 4141|     11|{
 4142|     11|	znode arg_node;
 4143|       |
 4144|     11|	if (args->children != 1) {
  ------------------
  |  Branch (4144:6): [True: 0, False: 11]
  ------------------
 4145|      0|		return FAILURE;
 4146|      0|	}
 4147|       |
 4148|     11|	zend_compile_expr(&arg_node, args->child[0]);
 4149|     11|	if (arg_node.op_type == IS_CONST && Z_TYPE(arg_node.u.constant) == IS_STRING) {
  ------------------
  |  |  864|     22|#define IS_CONST	(1<<0)
  ------------------
              	if (arg_node.op_type == IS_CONST && Z_TYPE(arg_node.u.constant) == IS_STRING) {
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (arg_node.op_type == IS_CONST && Z_TYPE(arg_node.u.constant) == IS_STRING) {
  ------------------
  |  |  612|      5|#define IS_STRING					6
  ------------------
  |  Branch (4149:6): [True: 5, False: 6]
  |  Branch (4149:38): [True: 4, False: 1]
  ------------------
 4150|      4|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
 4151|      4|		ZVAL_LONG(&result->u.constant, Z_STRLEN(arg_node.u.constant));
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 4152|      4|		zval_ptr_dtor_str(&arg_node.u.constant);
 4153|      7|	} else {
 4154|      7|		zend_emit_op_tmp(result, ZEND_STRLEN, &arg_node, NULL);
  ------------------
  |  |  243|      7|#define ZEND_STRLEN                         121
  ------------------
 4155|      7|	}
 4156|     11|	return SUCCESS;
 4157|     11|}
zend_compile.c:zend_compile_func_typecheck:
 4161|      9|{
 4162|      9|	znode arg_node;
 4163|      9|	zend_op *opline;
 4164|       |
 4165|      9|	if (args->children != 1) {
  ------------------
  |  Branch (4165:6): [True: 1, False: 8]
  ------------------
 4166|      1|		return FAILURE;
 4167|      1|	}
 4168|       |
 4169|      8|	zend_compile_expr(&arg_node, args->child[0]);
 4170|      8|	opline = zend_emit_op_tmp(result, ZEND_TYPE_CHECK, &arg_node, NULL);
  ------------------
  |  |  245|      8|#define ZEND_TYPE_CHECK                     123
  ------------------
 4171|      8|	if (type != _IS_BOOL) {
  ------------------
  |  |  635|      8|#define _IS_BOOL					18
  ------------------
  |  Branch (4171:6): [True: 8, False: 0]
  ------------------
 4172|      8|		opline->extended_value = (1 << type);
 4173|      8|	} else {
 4174|      0|		opline->extended_value = (1 << IS_FALSE) | (1 << IS_TRUE);
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
              		opline->extended_value = (1 << IS_FALSE) | (1 << IS_TRUE);
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
 4175|      0|	}
 4176|      8|	return SUCCESS;
 4177|      9|}
zend_compile.c:zend_compile_func_cast:
 4196|      2|{
 4197|      2|	znode arg_node;
 4198|      2|	zend_op *opline;
 4199|       |
 4200|      2|	if (args->children != 1) {
  ------------------
  |  Branch (4200:6): [True: 0, False: 2]
  ------------------
 4201|      0|		return FAILURE;
 4202|      0|	}
 4203|       |
 4204|      2|	zend_compile_expr(&arg_node, args->child[0]);
 4205|      2|	if (type == _IS_BOOL) {
  ------------------
  |  |  635|      2|#define _IS_BOOL					18
  ------------------
  |  Branch (4205:6): [True: 0, False: 2]
  ------------------
 4206|      0|		opline = zend_emit_op_tmp(result, ZEND_BOOL, &arg_node, NULL);
  ------------------
  |  |  175|      0|#define ZEND_BOOL                            52
  ------------------
 4207|      2|	} else {
 4208|      2|		opline = zend_emit_op_tmp(result, ZEND_CAST, &arg_node, NULL);
  ------------------
  |  |  174|      2|#define ZEND_CAST                            51
  ------------------
 4209|      2|		opline->extended_value = type;
 4210|      2|	}
 4211|      2|	return SUCCESS;
 4212|      2|}
zend_compile.c:zend_compile_func_defined:
 4216|      8|{
 4217|      8|	zend_string *name;
 4218|      8|	zend_op *opline;
 4219|       |
 4220|      8|	if (args->children != 1 || args->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (4220:6): [True: 0, False: 8]
  |  Branch (4220:29): [True: 1, False: 7]
  ------------------
 4221|      1|		return FAILURE;
 4222|      1|	}
 4223|       |
 4224|      7|	name = zval_get_string(zend_ast_get_zval(args->child[0]));
 4225|      7|	if (zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name)) || zend_memrchr(ZSTR_VAL(name), ':', ZSTR_LEN(name))) {
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name)) || zend_memrchr(ZSTR_VAL(name), ':', ZSTR_LEN(name))) {
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	if (zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name)) || zend_memrchr(ZSTR_VAL(name), ':', ZSTR_LEN(name))) {
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name)) || zend_memrchr(ZSTR_VAL(name), ':', ZSTR_LEN(name))) {
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4225:6): [True: 2, False: 5]
  |  Branch (4225:60): [True: 2, False: 3]
  ------------------
 4226|      4|		zend_string_release_ex(name, 0);
 4227|      4|		return FAILURE;
 4228|      4|	}
 4229|       |
 4230|      3|	if (zend_try_ct_eval_const(&result->u.constant, name, false)) {
  ------------------
  |  Branch (4230:6): [True: 0, False: 3]
  ------------------
 4231|      0|		zend_string_release_ex(name, 0);
 4232|      0|		zval_ptr_dtor(&result->u.constant);
 4233|      0|		ZVAL_TRUE(&result->u.constant);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4234|      0|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 4235|      0|		return SUCCESS;
 4236|      0|	}
 4237|       |
 4238|      3|	opline = zend_emit_op_tmp(result, ZEND_DEFINED, NULL, NULL);
  ------------------
  |  |  244|      3|#define ZEND_DEFINED                        122
  ------------------
 4239|      3|	opline->op1_type = IS_CONST;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
 4240|      3|	LITERAL_STR(opline->op1, name);
  ------------------
  |  |  697|      3|#define LITERAL_STR(op, str) do { \
  |  |  698|      3|		zval _c; \
  |  |  699|      3|		ZVAL_STR(&_c, str); \
  |  |  ------------------
  |  |  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      3|		zval *__z = (z);						\
  |  |  |  | 1090|      3|		zend_string *__s = (s);					\
  |  |  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      3|		/* interned strings support */			\
  |  |  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      5|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  700|      3|		op.constant = zend_add_literal(&_c); \
  |  |  701|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (701:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 4241|      3|	opline->extended_value = zend_alloc_cache_slot();
 4242|       |
 4243|      3|	return SUCCESS;
 4244|      3|}
zend_compile.c:zend_compile_func_ord:
 4268|      2|{
 4269|      2|	zval *str;
 4270|      2|	if (
 4271|      2|		args->children == 1
  ------------------
  |  Branch (4271:3): [True: 2, False: 0]
  ------------------
 4272|      2|		&& args->child[0]->kind == ZEND_AST_ZVAL
  ------------------
  |  Branch (4272:6): [True: 1, False: 1]
  ------------------
 4273|      1|		&& (str = zend_ast_get_zval(args->child[0]))
  ------------------
  |  Branch (4273:6): [True: 1, False: 0]
  ------------------
 4274|      1|		&& Z_TYPE_P(str) == IS_STRING
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		&& Z_TYPE_P(str) == IS_STRING
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (4274:6): [True: 0, False: 1]
  ------------------
 4275|      0|		&& Z_STRLEN_P(str) == 1
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4275:6): [True: 0, False: 0]
  ------------------
 4276|      2|	) {
 4277|      0|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 4278|      0|		ZVAL_LONG(&result->u.constant, (unsigned char)Z_STRVAL_P(str)[0]);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4279|      0|		return SUCCESS;
 4280|      2|	} else {
 4281|      2|		return FAILURE;
 4282|      2|	}
 4283|      2|}
zend_compile.c:zend_compile_func_cufa:
 4366|      7|{
 4367|      7|	znode arg_node;
 4368|      7|	zend_op *opline;
 4369|       |
 4370|      7|	if (args->children != 2) {
  ------------------
  |  Branch (4370:6): [True: 1, False: 6]
  ------------------
 4371|      1|		return FAILURE;
 4372|      1|	}
 4373|       |
 4374|      6|	zend_compile_init_user_func(args->child[0], 0, lcname);
 4375|      6|	if (args->child[1]->kind == ZEND_AST_CALL
  ------------------
  |  Branch (4375:6): [True: 2, False: 4]
  ------------------
 4376|      2|	 && args->child[1]->child[0]->kind == ZEND_AST_ZVAL
  ------------------
  |  Branch (4376:6): [True: 2, False: 0]
  ------------------
 4377|      2|	 && Z_TYPE_P(zend_ast_get_zval(args->child[1]->child[0])) == IS_STRING
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	 && Z_TYPE_P(zend_ast_get_zval(args->child[1]->child[0])) == IS_STRING
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
  |  Branch (4377:6): [True: 2, False: 0]
  ------------------
 4378|      2|	 && args->child[1]->child[1]->kind == ZEND_AST_ARG_LIST) {
  ------------------
  |  Branch (4378:6): [True: 2, False: 0]
  ------------------
 4379|      2|		zend_string *orig_name = zend_ast_get_str(args->child[1]->child[0]);
 4380|      2|		zend_ast_list *list = zend_ast_get_list(args->child[1]->child[1]);
 4381|      2|		bool is_fully_qualified;
 4382|      2|		zend_string *name = zend_resolve_function_name(orig_name, args->child[1]->child[0]->attr, &is_fully_qualified);
 4383|       |
 4384|      2|		if (zend_string_equals_literal_ci(name, "array_slice")
  ------------------
  |  |  404|      4|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 2, False: 0]
  |  |  |  Branch (404:40): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 4385|      2|	     && !zend_args_contain_unpack_or_named(list)
  ------------------
  |  Branch (4385:10): [True: 1, False: 1]
  ------------------
 4386|      1|		 && list->children == 3
  ------------------
  |  Branch (4386:7): [True: 1, False: 0]
  ------------------
 4387|      1|		 && list->child[1]->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (4387:7): [True: 1, False: 0]
  ------------------
 4388|      1|			zval *zv = zend_ast_get_zval(list->child[1]);
 4389|       |
 4390|      1|			if (Z_TYPE_P(zv) == IS_LONG
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_LONG
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
  |  Branch (4390:8): [True: 1, False: 0]
  ------------------
 4391|      1|			 && Z_LVAL_P(zv) >= 0
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (4391:8): [True: 1, False: 0]
  ------------------
 4392|      1|			 && Z_LVAL_P(zv) <= 0x7fffffff) {
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (4392:8): [True: 1, False: 0]
  ------------------
 4393|      1|				zend_op *opline;
 4394|      1|				znode len_node;
 4395|       |
 4396|      1|				zend_compile_expr(&arg_node, list->child[0]);
 4397|      1|				zend_compile_expr(&len_node, list->child[2]);
 4398|      1|				opline = zend_emit_op(NULL, ZEND_SEND_ARRAY, &arg_node, &len_node);
  ------------------
  |  |  241|      1|#define ZEND_SEND_ARRAY                     119
  ------------------
 4399|      1|				opline->extended_value = Z_LVAL_P(zv);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 4400|      1|				opline = zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL);
  ------------------
  |  |  183|      1|#define ZEND_DO_FCALL                        60
  ------------------
 4401|      1|				if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|      2|#define BP_VAR_R			0
  ------------------
              				if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (4401:9): [True: 1, False: 0]
  |  Branch (4401:29): [True: 0, False: 0]
  ------------------
 4402|      1|					opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
 4403|      1|					result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
 4404|      1|				}
 4405|      1|				zend_string_release_ex(name, 0);
 4406|      1|				return SUCCESS;
 4407|      1|			}
 4408|      1|		}
 4409|      1|		zend_string_release_ex(name, 0);
 4410|      1|	}
 4411|      5|	zend_compile_expr(&arg_node, args->child[1]);
 4412|      5|	zend_emit_op(NULL, ZEND_SEND_ARRAY, &arg_node, NULL);
  ------------------
  |  |  241|      5|#define ZEND_SEND_ARRAY                     119
  ------------------
 4413|      5|	zend_emit_op(NULL, ZEND_CHECK_UNDEF_ARGS, NULL, NULL);
  ------------------
  |  |  321|      5|#define ZEND_CHECK_UNDEF_ARGS               199
  ------------------
 4414|      5|	opline = zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL);
  ------------------
  |  |  183|      5|#define ZEND_DO_FCALL                        60
  ------------------
 4415|      5|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|     10|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (4415:6): [True: 5, False: 0]
  |  Branch (4415:26): [True: 0, False: 0]
  ------------------
 4416|      4|		opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
 4417|      4|		result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
 4418|      4|	}
 4419|      5|	opline->extended_value = ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS;
  ------------------
  |  | 1122|      5|#define ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS 1
  ------------------
 4420|       |
 4421|      5|	return SUCCESS;
 4422|      6|}
zend_compile.c:zend_compile_init_user_func:
 4347|     22|{
 4348|     22|	zend_op *opline;
 4349|     22|	znode name_node;
 4350|       |
 4351|     22|	if (zend_try_compile_ct_bound_init_user_func(name_ast, num_args) == SUCCESS) {
  ------------------
  |  Branch (4351:6): [True: 9, False: 13]
  ------------------
 4352|      9|		return;
 4353|      9|	}
 4354|       |
 4355|     13|	zend_compile_expr(&name_node, name_ast);
 4356|       |
 4357|     13|	opline = zend_emit_op(NULL, ZEND_INIT_USER_CALL, NULL, &name_node);
  ------------------
  |  |  240|     13|#define ZEND_INIT_USER_CALL                 118
  ------------------
 4358|     13|	opline->op1_type = IS_CONST;
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
 4359|     13|	LITERAL_STR(opline->op1, zend_string_copy(orig_func_name));
  ------------------
  |  |  697|     13|#define LITERAL_STR(op, str) do { \
  |  |  698|     13|		zval _c; \
  |  |  699|     13|		ZVAL_STR(&_c, str); \
  |  |  ------------------
  |  |  |  | 1088|     13|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|     13|		zval *__z = (z);						\
  |  |  |  | 1090|     13|		zend_string *__s = (s);					\
  |  |  |  | 1091|     13|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     13|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     13|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|     13|		/* interned strings support */			\
  |  |  |  | 1093|     13|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 13]
  |  |  |  |  ------------------
  |  |  |  | 1094|     13|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|     13|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|     26|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     13|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     13|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     13|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|     13|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  700|     13|		op.constant = zend_add_literal(&_c); \
  |  |  701|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (701:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
 4360|     13|	opline->extended_value = num_args;
 4361|     13|}
zend_compile.c:zend_try_compile_ct_bound_init_user_func:
 4315|     22|{
 4316|     22|	zend_string *name, *lcname;
 4317|     22|	zend_function *fbc;
 4318|     22|	zend_op *opline;
 4319|       |
 4320|     22|	if (name_ast->kind != ZEND_AST_ZVAL || Z_TYPE_P(zend_ast_get_zval(name_ast)) != IS_STRING) {
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (name_ast->kind != ZEND_AST_ZVAL || Z_TYPE_P(zend_ast_get_zval(name_ast)) != IS_STRING) {
  ------------------
  |  |  612|     13|#define IS_STRING					6
  ------------------
  |  Branch (4320:6): [True: 9, False: 13]
  |  Branch (4320:41): [True: 0, False: 13]
  ------------------
 4321|      9|		return FAILURE;
 4322|      9|	}
 4323|       |
 4324|     13|	name = zend_ast_get_str(name_ast);
 4325|     13|	lcname = zend_string_tolower(name);
 4326|       |
 4327|     13|	fbc = zend_hash_find_ptr(CG(function_table), lcname);
  ------------------
  |  |   35|     13|# define CG(v) (compiler_globals.v)
  ------------------
 4328|     13|	if (!fbc
  ------------------
  |  Branch (4328:6): [True: 4, False: 9]
  ------------------
 4329|      9|	 || !fbc_is_finalized(fbc)
  ------------------
  |  Branch (4329:6): [True: 0, False: 9]
  ------------------
 4330|      9|	 || zend_compile_ignore_function(fbc, CG(active_op_array)->filename)) {
  ------------------
  |  |   35|      9|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (4330:6): [True: 0, False: 9]
  ------------------
 4331|      4|		zend_string_release_ex(lcname, 0);
 4332|      4|		return FAILURE;
 4333|      4|	}
 4334|       |
 4335|      9|	opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, NULL);
  ------------------
  |  |  184|      9|#define ZEND_INIT_FCALL                      61
  ------------------
 4336|      9|	opline->extended_value = num_args;
 4337|      9|	opline->op1.num = zend_vm_calc_used_stack(num_args, fbc);
 4338|      9|	opline->op2_type = IS_CONST;
  ------------------
  |  |  864|      9|#define IS_CONST	(1<<0)
  ------------------
 4339|      9|	LITERAL_STR(opline->op2, lcname);
  ------------------
  |  |  697|      9|#define LITERAL_STR(op, str) do { \
  |  |  698|      9|		zval _c; \
  |  |  699|      9|		ZVAL_STR(&_c, str); \
  |  |  ------------------
  |  |  |  | 1088|      9|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      9|		zval *__z = (z);						\
  |  |  |  | 1090|      9|		zend_string *__s = (s);					\
  |  |  |  | 1091|      9|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      9|		/* interned strings support */			\
  |  |  |  | 1093|      9|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  | 1094|      9|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      9|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|     18|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      9|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  700|      9|		op.constant = zend_add_literal(&_c); \
  |  |  701|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (701:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 4340|      9|	opline->result.num = zend_alloc_cache_slot();
 4341|       |
 4342|      9|	return SUCCESS;
 4343|     13|}
zend_compile.c:zend_compile_func_cuf:
 4427|     16|{
 4428|     16|	uint32_t i;
 4429|       |
 4430|     16|	if (args->children < 1) {
  ------------------
  |  Branch (4430:6): [True: 0, False: 16]
  ------------------
 4431|      0|		return FAILURE;
 4432|      0|	}
 4433|       |
 4434|     16|	zend_compile_init_user_func(args->child[0], args->children - 1, lcname);
 4435|     32|	for (i = 1; i < args->children; ++i) {
  ------------------
  |  Branch (4435:14): [True: 16, False: 16]
  ------------------
 4436|     16|		zend_ast *arg_ast = args->child[i];
 4437|     16|		znode arg_node;
 4438|     16|		zend_op *opline;
 4439|       |
 4440|     16|		zend_compile_expr(&arg_node, arg_ast);
 4441|       |
 4442|     16|		opline = zend_emit_op(NULL, ZEND_SEND_USER, &arg_node, NULL);
  ------------------
  |  |  242|     16|#define ZEND_SEND_USER                      120
  ------------------
 4443|     16|		opline->op2.num = i;
 4444|     16|		opline->result.var = EX_NUM_TO_VAR(i - 1);
  ------------------
  |  |  759|     16|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|     16|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 4445|     16|	}
 4446|     16|	zend_op *opline = zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL);
  ------------------
  |  |  183|     16|#define ZEND_DO_FCALL                        60
  ------------------
 4447|     16|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|     32|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|      1|#define BP_VAR_IS			3
  ------------------
  |  Branch (4447:6): [True: 15, False: 1]
  |  Branch (4447:26): [True: 0, False: 1]
  ------------------
 4448|     15|		opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     15|#define IS_TMP_VAR	(1<<1)
  ------------------
 4449|     15|		result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     15|#define IS_TMP_VAR	(1<<1)
  ------------------
 4450|     15|	}
 4451|       |
 4452|     16|	return SUCCESS;
 4453|     16|}
zend_compile.c:zend_compile_func_in_array:
 4507|     16|{
 4508|     16|	bool strict = false;
 4509|     16|	znode array, needly;
 4510|     16|	zend_op *opline;
 4511|       |
 4512|     16|	if (args->children == 3) {
  ------------------
  |  Branch (4512:6): [True: 12, False: 4]
  ------------------
 4513|     12|		if (args->child[2]->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (4513:7): [True: 0, False: 12]
  ------------------
 4514|      0|			strict = zend_is_true(zend_ast_get_zval(args->child[2]));
 4515|     12|		} else if (args->child[2]->kind == ZEND_AST_CONST) {
  ------------------
  |  Branch (4515:14): [True: 12, False: 0]
  ------------------
 4516|     12|			zval value;
 4517|     12|			zend_ast *name_ast = args->child[2]->child[0];
 4518|     12|			bool is_fully_qualified;
 4519|     12|			zend_string *resolved_name = zend_resolve_const_name(
 4520|     12|				zend_ast_get_str(name_ast), name_ast->attr, &is_fully_qualified);
 4521|       |
 4522|     12|			if (!zend_try_ct_eval_const(&value, resolved_name, is_fully_qualified)) {
  ------------------
  |  Branch (4522:8): [True: 2, False: 10]
  ------------------
 4523|      2|				zend_string_release_ex(resolved_name, 0);
 4524|      2|				return FAILURE;
 4525|      2|			}
 4526|       |
 4527|     10|			zend_string_release_ex(resolved_name, 0);
 4528|     10|			strict = zend_is_true(&value);
 4529|     10|			zval_ptr_dtor(&value);
 4530|     10|		} else {
 4531|      0|			return FAILURE;
 4532|      0|		}
 4533|     12|	} else if (args->children != 2) {
  ------------------
  |  Branch (4533:13): [True: 0, False: 4]
  ------------------
 4534|      0|		return FAILURE;
 4535|      0|	}
 4536|       |
 4537|     14|	if (args->child[1]->kind != ZEND_AST_ARRAY
  ------------------
  |  Branch (4537:6): [True: 13, False: 1]
  ------------------
 4538|     14|	 || !zend_try_ct_eval_array(&array.u.constant, args->child[1])) {
  ------------------
  |  Branch (4538:6): [True: 1, False: 0]
  ------------------
 4539|     14|		return FAILURE;
 4540|     14|	}
 4541|       |
 4542|      0|	if (zend_hash_num_elements(Z_ARRVAL(array.u.constant)) > 0) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (4542:6): [True: 0, False: 0]
  ------------------
 4543|      0|		bool ok = true;
 4544|      0|		zval *val, tmp;
 4545|      0|		HashTable *src = Z_ARRVAL(array.u.constant);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 4546|      0|		HashTable *dst = zend_new_array(zend_hash_num_elements(src));
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 4547|       |
 4548|      0|		ZVAL_TRUE(&tmp);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4549|       |
 4550|      0|		if (strict) {
  ------------------
  |  Branch (4550:7): [True: 0, False: 0]
  ------------------
 4551|      0|			ZEND_HASH_FOREACH_VAL(src, val) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 4552|      0|				if (Z_TYPE_P(val) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (4552:9): [True: 0, False: 0]
  ------------------
 4553|      0|					zend_hash_add(dst, Z_STR_P(val), &tmp);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4554|      0|				} else if (Z_TYPE_P(val) == IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(val) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (4554:16): [True: 0, False: 0]
  ------------------
 4555|      0|					zend_hash_index_add(dst, Z_LVAL_P(val), &tmp);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 4556|      0|				} else {
 4557|      0|					zend_array_destroy(dst);
 4558|      0|					ok = false;
 4559|      0|					break;
 4560|      0|				}
 4561|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4562|      0|		} else {
 4563|      0|			ZEND_HASH_FOREACH_VAL(src, val) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 4564|      0|				if (Z_TYPE_P(val) != IS_STRING
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) != IS_STRING
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (4564:9): [True: 0, False: 0]
  ------------------
 4565|      0|				 || is_numeric_string(Z_STRVAL_P(val), Z_STRLEN_P(val), NULL, NULL, 0)) {
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				 || is_numeric_string(Z_STRVAL_P(val), Z_STRLEN_P(val), NULL, NULL, 0)) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4565:9): [True: 0, False: 0]
  ------------------
 4566|      0|					zend_array_destroy(dst);
 4567|      0|					ok = false;
 4568|      0|					break;
 4569|      0|				}
 4570|      0|				zend_hash_add(dst, Z_STR_P(val), &tmp);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4571|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4572|      0|		}
 4573|       |
 4574|      0|		zend_array_destroy(src);
 4575|      0|		if (!ok) {
  ------------------
  |  Branch (4575:7): [True: 0, False: 0]
  ------------------
 4576|      0|			return FAILURE;
 4577|      0|		}
 4578|      0|		Z_ARRVAL(array.u.constant) = dst;
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 4579|      0|	}
 4580|      0|	array.op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 4581|       |
 4582|      0|	zend_compile_expr(&needly, args->child[0]);
 4583|       |
 4584|      0|	opline = zend_emit_op_tmp(result, ZEND_IN_ARRAY, &needly, &array);
  ------------------
  |  |  311|      0|#define ZEND_IN_ARRAY                       189
  ------------------
 4585|      0|	opline->extended_value = strict;
 4586|       |
 4587|      0|	return SUCCESS;
 4588|      0|}
zend_compile.c:zend_try_ct_eval_array:
10383|    983|{
10384|    983|	const zend_ast_list *list = zend_ast_get_list(ast);
10385|    983|	zend_ast *last_elem_ast = NULL;
10386|    983|	uint32_t i;
10387|    983|	bool is_constant = true;
10388|       |
10389|    983|	if (ast->attr == ZEND_ARRAY_SYNTAX_LIST) {
  ------------------
  |  | 1069|    983|#define ZEND_ARRAY_SYNTAX_LIST 1  /* list() */
  ------------------
  |  Branch (10389:6): [True: 1, False: 982]
  ------------------
10390|      1|		zend_error(E_COMPILE_ERROR, "Cannot use list() as standalone expression");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10391|      1|	}
10392|       |
10393|       |	/* First ensure that *all* child nodes are constant and by-val */
10394|  2.49k|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (10394:14): [True: 1.51k, False: 983]
  ------------------
10395|  1.51k|		zend_ast *elem_ast = list->child[i];
10396|       |
10397|  1.51k|		if (elem_ast == NULL) {
  ------------------
  |  Branch (10397:7): [True: 5, False: 1.50k]
  ------------------
10398|       |			/* Report error at line of last non-empty element */
10399|      5|			if (last_elem_ast) {
  ------------------
  |  Branch (10399:8): [True: 3, False: 2]
  ------------------
10400|      3|				CG(zend_lineno) = zend_ast_get_lineno(last_elem_ast);
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
10401|      3|			}
10402|      5|			zend_error(E_COMPILE_ERROR, "Cannot use empty array elements in arrays");
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10403|      5|		}
10404|       |
10405|  1.51k|		if (elem_ast->kind != ZEND_AST_UNPACK) {
  ------------------
  |  Branch (10405:7): [True: 1.47k, False: 36]
  ------------------
10406|  1.47k|			zend_eval_const_expr(&elem_ast->child[0]);
10407|  1.47k|			zend_eval_const_expr(&elem_ast->child[1]);
10408|       |
10409|  1.47k|			if (elem_ast->attr /* by_ref */ || elem_ast->child[0]->kind != ZEND_AST_ZVAL
  ------------------
  |  Branch (10409:8): [True: 24, False: 1.45k]
  |  Branch (10409:39): [True: 240, False: 1.21k]
  ------------------
10410|  1.21k|				|| (elem_ast->child[1] && elem_ast->child[1]->kind != ZEND_AST_ZVAL)
  ------------------
  |  Branch (10410:9): [True: 164, False: 1.04k]
  |  Branch (10410:31): [True: 7, False: 157]
  ------------------
10411|  1.47k|			) {
10412|    269|				is_constant = false;
10413|    269|			}
10414|  1.47k|		} else {
10415|     36|			zend_eval_const_expr(&elem_ast->child[0]);
10416|       |
10417|     36|			if (elem_ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (10417:8): [True: 13, False: 23]
  ------------------
10418|     13|				is_constant = false;
10419|     13|			}
10420|     36|		}
10421|       |
10422|  1.51k|		last_elem_ast = elem_ast;
10423|  1.51k|	}
10424|       |
10425|    983|	if (!is_constant) {
  ------------------
  |  Branch (10425:6): [True: 235, False: 748]
  ------------------
10426|    235|		return false;
10427|    235|	}
10428|       |
10429|    748|	if (!list->children) {
  ------------------
  |  Branch (10429:6): [True: 193, False: 555]
  ------------------
10430|    193|		ZVAL_EMPTY_ARRAY(result);
  ------------------
  |  |   89|    193|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|    193|		zval *__z = (z);								\
  |  |   91|    193|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|    193|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    193|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|    193|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|    193|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    193|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|    193|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|    193|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 193]
  |  |  ------------------
  ------------------
10431|    193|		return true;
10432|    193|	}
10433|       |
10434|    555|	array_init_size(result, list->children);
10435|  1.65k|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (10435:14): [True: 1.10k, False: 548]
  ------------------
10436|  1.10k|		const zend_ast *elem_ast = list->child[i];
10437|  1.10k|		zend_ast *value_ast = elem_ast->child[0];
10438|  1.10k|		zend_ast *key_ast;
10439|       |
10440|  1.10k|		zval *value = zend_ast_get_zval(value_ast);
10441|  1.10k|		if (elem_ast->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (10441:7): [True: 17, False: 1.08k]
  ------------------
10442|     17|			if (Z_TYPE_P(value) == IS_ARRAY) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(value) == IS_ARRAY) {
  ------------------
  |  |  613|     17|#define IS_ARRAY					7
  ------------------
  |  Branch (10442:8): [True: 16, False: 1]
  ------------------
10443|     16|				const HashTable *ht = Z_ARRVAL_P(value);
  ------------------
  |  |  997|     16|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     16|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     16|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10444|     16|				zval *val;
10445|     16|				zend_string *key;
10446|       |
10447|     88|				ZEND_HASH_FOREACH_STR_KEY_VAL(ht, key, val) {
  ------------------
  |  | 1181|     36|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     16|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     16|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     16|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     16|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     16|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     16|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     16|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     16|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     16|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     16|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     16|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     16|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     52|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 36, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     36|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     36|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     36|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     36|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     36|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 17, False: 19]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|     17|				__z++; \
  |  |  |  |  |  | 1057|     17|				__h = _idx; \
  |  |  |  |  |  | 1058|     17|				_idx++; \
  |  |  |  |  |  | 1059|     19|			} else { \
  |  |  |  |  |  | 1060|     19|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     19|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     19|				__h = _p->h; \
  |  |  |  |  |  | 1063|     19|				__key = _p->key; \
  |  |  |  |  |  | 1064|     19|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     19|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 19]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|     19|			} \
  |  |  |  |  |  | 1068|     36|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     36|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 36]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|     36|	_key = __key; \
  |  | 1183|     36|	_val = _z;
  ------------------
10448|     88|					if (key) {
  ------------------
  |  Branch (10448:10): [True: 12, False: 24]
  ------------------
10449|     12|						zend_hash_update(Z_ARRVAL_P(result), key, val);
  ------------------
  |  |  997|     12|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     12|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     12|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10450|     24|					} else if (!zend_hash_next_index_insert(Z_ARRVAL_P(result), val)) {
  ------------------
  |  |  997|     24|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     24|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     24|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10450:17): [True: 0, False: 24]
  ------------------
10451|      0|						zval_ptr_dtor(result);
10452|      0|						return 0;
10453|      0|					}
10454|     36|					Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|     36|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     36|	zval *_pz = (pz);				\
  |  | 1287|     36|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     36|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     36|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     36|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 36]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|     36|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 36]
  |  |  ------------------
  ------------------
10455|     36|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     36|		} \
  |  | 1102|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
10456|       |
10457|     16|				continue;
10458|     16|			} else {
10459|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Only arrays and Traversables can be unpacked, %s given", zend_zval_value_name(value));
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10460|      1|			}
10461|     17|		}
10462|       |
10463|  1.08k|		Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|  1.08k|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  1.08k|	zval *_pz = (pz);				\
  |  | 1287|  1.08k|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  1.08k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  1.08k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  1.08k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 254, False: 832]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|    254|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|    254|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|    254|	}								\
  |  | 1290|  1.08k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1.08k]
  |  |  ------------------
  ------------------
10464|       |
10465|  1.08k|		key_ast = elem_ast->child[1];
10466|  1.08k|		if (key_ast) {
  ------------------
  |  Branch (10466:7): [True: 151, False: 935]
  ------------------
10467|    151|			const zval *key = zend_ast_get_zval(key_ast);
10468|    151|			switch (Z_TYPE_P(key)) {
  ------------------
  |  |  669|    151|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    151|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
10469|     49|				case IS_LONG:
  ------------------
  |  |  610|     49|#define IS_LONG						4
  ------------------
  |  Branch (10469:5): [True: 49, False: 102]
  ------------------
10470|     49|					zend_hash_index_update(Z_ARRVAL_P(result), Z_LVAL_P(key), value);
  ------------------
  |  |  997|     49|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     49|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     49|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					zend_hash_index_update(Z_ARRVAL_P(result), Z_LVAL_P(key), value);
  ------------------
  |  |  976|     49|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     49|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
10471|     49|					break;
10472|     91|				case IS_STRING:
  ------------------
  |  |  612|     91|#define IS_STRING					6
  ------------------
  |  Branch (10472:5): [True: 91, False: 60]
  ------------------
10473|     91|					zend_symtable_update(Z_ARRVAL_P(result), Z_STR_P(key), value);
  ------------------
  |  |  997|     91|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     91|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     91|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					zend_symtable_update(Z_ARRVAL_P(result), Z_STR_P(key), value);
  ------------------
  |  |  982|     91|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     91|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10474|     91|					break;
10475|      3|				case IS_DOUBLE: {
  ------------------
  |  |  611|      3|#define IS_DOUBLE					5
  ------------------
  |  Branch (10475:5): [True: 3, False: 148]
  ------------------
10476|      3|					zend_long lval = zend_dval_to_lval_silent(Z_DVAL_P(key));
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
10477|       |					/* Incompatible float will generate an error, leave this to run-time */
10478|      3|					if (!zend_is_long_compatible(Z_DVAL_P(key), lval)) {
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (10478:10): [True: 3, False: 0]
  ------------------
10479|      3|						goto fail;
10480|      3|					}
10481|      0|					zend_hash_index_update(Z_ARRVAL_P(result), lval, value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10482|      0|					break;
10483|      3|				}
10484|      0|				case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (10484:5): [True: 0, False: 151]
  ------------------
10485|      0|					zend_hash_index_update(Z_ARRVAL_P(result), 0, value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10486|      0|					break;
10487|      5|				case IS_TRUE:
  ------------------
  |  |  609|      5|#define IS_TRUE						3
  ------------------
  |  Branch (10487:5): [True: 5, False: 146]
  ------------------
10488|      5|					zend_hash_index_update(Z_ARRVAL_P(result), 1, value);
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10489|      5|					break;
10490|      2|				case IS_NULL:
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (10490:5): [True: 2, False: 149]
  ------------------
10491|       |					/* Null key will generate a warning at run-time. */
10492|      2|					goto fail;
10493|      1|				default:
  ------------------
  |  Branch (10493:5): [True: 1, False: 150]
  ------------------
10494|      1|					zend_error_noreturn(E_COMPILE_ERROR, "Illegal offset type");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10495|    151|			}
10496|    935|		} else if (!zend_hash_next_index_insert(Z_ARRVAL_P(result), value)) {
  ------------------
  |  |  997|    935|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    935|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    935|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10496:14): [True: 0, False: 935]
  ------------------
10497|      5|fail:
10498|      5|			zval_ptr_dtor_nogc(value);
10499|      5|			zval_ptr_dtor(result);
10500|      5|			return 0;
10501|      0|		}
10502|  1.08k|	}
10503|       |
10504|    548|	return true;
10505|    555|}
zend_compile.c:zend_compile_func_count:
 4592|     14|{
 4593|     14|	znode arg_node;
 4594|     14|	zend_op *opline;
 4595|       |
 4596|     14|	if (args->children != 1) {
  ------------------
  |  Branch (4596:6): [True: 0, False: 14]
  ------------------
 4597|      0|		return FAILURE;
 4598|      0|	}
 4599|       |
 4600|     14|	zend_compile_expr(&arg_node, args->child[0]);
 4601|     14|	opline = zend_emit_op_tmp(result, ZEND_COUNT, &arg_node, NULL);
  ------------------
  |  |  312|     14|#define ZEND_COUNT                          190
  ------------------
 4602|     14|	opline->extended_value = zend_string_equals_literal(lcname, "sizeof");
  ------------------
  |  |  407|     14|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
 4603|       |
 4604|     14|	return SUCCESS;
 4605|     14|}
zend_compile.c:zend_compile_func_get_class:
 4609|      5|{
 4610|      5|	if (args->children == 0) {
  ------------------
  |  Branch (4610:6): [True: 0, False: 5]
  ------------------
 4611|      0|		zend_emit_op_tmp(result, ZEND_GET_CLASS, NULL, NULL);
  ------------------
  |  |  313|      0|#define ZEND_GET_CLASS                      191
  ------------------
 4612|      5|	} else {
 4613|      5|		znode arg_node;
 4614|       |
 4615|      5|		if (args->children != 1) {
  ------------------
  |  Branch (4615:7): [True: 0, False: 5]
  ------------------
 4616|      0|			return FAILURE;
 4617|      0|		}
 4618|       |
 4619|      5|		zend_compile_expr(&arg_node, args->child[0]);
 4620|      5|		zend_emit_op_tmp(result, ZEND_GET_CLASS, &arg_node, NULL);
  ------------------
  |  |  313|      5|#define ZEND_GET_CLASS                      191
  ------------------
 4621|      5|	}
 4622|      5|	return SUCCESS;
 4623|      5|}
zend_compile.c:zend_compile_func_get_called_class:
 4627|      3|{
 4628|      3|	if (args->children != 0) {
  ------------------
  |  Branch (4628:6): [True: 1, False: 2]
  ------------------
 4629|      1|		return FAILURE;
 4630|      1|	}
 4631|       |
 4632|      2|	zend_emit_op_tmp(result, ZEND_GET_CALLED_CLASS, NULL, NULL);
  ------------------
  |  |  314|      2|#define ZEND_GET_CALLED_CLASS               192
  ------------------
 4633|      2|	return SUCCESS;
 4634|      3|}
zend_compile.c:zend_compile_func_gettype:
 4638|      1|{
 4639|      1|	znode arg_node;
 4640|       |
 4641|      1|	if (args->children != 1) {
  ------------------
  |  Branch (4641:6): [True: 0, False: 1]
  ------------------
 4642|      0|		return FAILURE;
 4643|      0|	}
 4644|       |
 4645|      1|	zend_compile_expr(&arg_node, args->child[0]);
 4646|      1|	zend_emit_op_tmp(result, ZEND_GET_TYPE, &arg_node, NULL);
  ------------------
  |  |  315|      1|#define ZEND_GET_TYPE                       193
  ------------------
 4647|      1|	return SUCCESS;
 4648|      1|}
zend_compile.c:zend_compile_func_get_args:
 4663|      5|{
 4664|      5|	if (CG(active_op_array)->function_name && args->children == 0) {
  ------------------
  |  |   35|      5|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (4664:6): [True: 2, False: 3]
  |  Branch (4664:44): [True: 2, False: 0]
  ------------------
 4665|      2|		zend_emit_op_tmp(result, ZEND_FUNC_GET_ARGS, NULL, NULL);
  ------------------
  |  |  294|      2|#define ZEND_FUNC_GET_ARGS                  172
  ------------------
 4666|      2|		return SUCCESS;
 4667|      3|	} else {
 4668|      3|		return FAILURE;
 4669|      3|	}
 4670|      5|}
zend_compile.c:zend_compile_func_array_slice:
 4690|      1|{
 4691|      1|	if (CG(active_op_array)->function_name
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (4691:6): [True: 1, False: 0]
  ------------------
 4692|      1|	 && args->children == 2
  ------------------
  |  Branch (4692:6): [True: 1, False: 0]
  ------------------
 4693|      1|	 && args->child[0]->kind == ZEND_AST_CALL
  ------------------
  |  Branch (4693:6): [True: 1, False: 0]
  ------------------
 4694|      1|	 && args->child[0]->child[0]->kind == ZEND_AST_ZVAL
  ------------------
  |  Branch (4694:6): [True: 1, False: 0]
  ------------------
 4695|      1|	 && Z_TYPE_P(zend_ast_get_zval(args->child[0]->child[0])) == IS_STRING
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	 && Z_TYPE_P(zend_ast_get_zval(args->child[0]->child[0])) == IS_STRING
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (4695:6): [True: 1, False: 0]
  ------------------
 4696|      1|	 && args->child[0]->child[1]->kind == ZEND_AST_ARG_LIST
  ------------------
  |  Branch (4696:6): [True: 1, False: 0]
  ------------------
 4697|      1|	 && args->child[1]->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (4697:6): [True: 1, False: 0]
  ------------------
 4698|       |
 4699|      1|		zend_string *orig_name = zend_ast_get_str(args->child[0]->child[0]);
 4700|      1|		bool is_fully_qualified;
 4701|      1|		zend_string *name = zend_resolve_function_name(orig_name, args->child[0]->child[0]->attr, &is_fully_qualified);
 4702|      1|		const zend_ast_list *list = zend_ast_get_list(args->child[0]->child[1]);
 4703|      1|		const zval *zv = zend_ast_get_zval(args->child[1]);
 4704|      1|		znode first;
 4705|       |
 4706|      1|		if (zend_string_equals_literal_ci(name, "func_get_args")
  ------------------
  |  |  404|      2|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 1, False: 0]
  |  |  |  Branch (404:40): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 4707|      1|		 && list->children == 0
  ------------------
  |  Branch (4707:7): [True: 1, False: 0]
  ------------------
 4708|      1|		 && Z_TYPE_P(zv) == IS_LONG
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		 && Z_TYPE_P(zv) == IS_LONG
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
  |  Branch (4708:7): [True: 1, False: 0]
  ------------------
 4709|      1|		 && Z_LVAL_P(zv) >= 0) {
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (4709:7): [True: 1, False: 0]
  ------------------
 4710|      1|			first.op_type = IS_CONST;
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
 4711|      1|			ZVAL_LONG(&first.u.constant, Z_LVAL_P(zv));
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4712|      1|			zend_emit_op_tmp(result, ZEND_FUNC_GET_ARGS, &first, NULL);
  ------------------
  |  |  294|      1|#define ZEND_FUNC_GET_ARGS                  172
  ------------------
 4713|      1|			zend_string_release_ex(name, 0);
 4714|      1|			return SUCCESS;
 4715|      1|		}
 4716|      0|		zend_string_release_ex(name, 0);
 4717|      0|	}
 4718|      0|	return FAILURE;
 4719|      1|}
zend_compile.c:zend_compile_func_array_key_exists:
 4674|      2|{
 4675|      2|	znode subject, needle;
 4676|       |
 4677|      2|	if (args->children != 2) {
  ------------------
  |  Branch (4677:6): [True: 0, False: 2]
  ------------------
 4678|      0|		return FAILURE;
 4679|      0|	}
 4680|       |
 4681|      2|	zend_compile_expr(&needle, args->child[0]);
 4682|      2|	zend_compile_expr(&subject, args->child[1]);
 4683|       |
 4684|      2|	zend_emit_op_tmp(result, ZEND_ARRAY_KEY_EXISTS, &needle, &subject);
  ------------------
  |  |  316|      2|#define ZEND_ARRAY_KEY_EXISTS               194
  ------------------
 4685|      2|	return SUCCESS;
 4686|      2|}
zend_compile.c:zend_compile_func_sprintf:
 4880|     13|{
 4881|       |	/* Bail out if we do not have a format string. */
 4882|     13|	if (args->children < 1) {
  ------------------
  |  Branch (4882:6): [True: 0, False: 13]
  ------------------
 4883|      0|		return FAILURE;
 4884|      0|	}
 4885|       |
 4886|     13|	zend_eval_const_expr(&args->child[0]);
 4887|       |	/* Bail out if the format string is not constant. */
 4888|     13|	if (args->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (4888:6): [True: 2, False: 11]
  ------------------
 4889|      2|		return FAILURE;
 4890|      2|	}
 4891|       |
 4892|     11|	zval *format_string = zend_ast_get_zval(args->child[0]);
 4893|     11|	if (Z_TYPE_P(format_string) != IS_STRING) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(format_string) != IS_STRING) {
  ------------------
  |  |  612|     11|#define IS_STRING					6
  ------------------
  |  Branch (4893:6): [True: 0, False: 11]
  ------------------
 4894|      0|		return FAILURE;
 4895|      0|	}
 4896|     11|	if (Z_STRLEN_P(format_string) >= 256) {
  ------------------
  |  |  988|     11|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     11|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4896:6): [True: 0, False: 11]
  ------------------
 4897|      0|		return FAILURE;
 4898|      0|	}
 4899|       |
 4900|     11|	char *p;
 4901|     11|	char *end;
 4902|     11|	uint32_t placeholder_count;
 4903|       |
 4904|     11|	placeholder_count = 0;
 4905|     11|	p = Z_STRVAL_P(format_string);
  ------------------
  |  |  985|     11|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     11|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4906|     11|	end = p + Z_STRLEN_P(format_string);
  ------------------
  |  |  988|     11|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     11|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4907|       |
 4908|     32|	for (;;) {
 4909|     32|		p = memchr(p, '%', end - p);
 4910|     32|		if (!p) {
  ------------------
  |  Branch (4910:7): [True: 7, False: 25]
  ------------------
 4911|      7|			break;
 4912|      7|		}
 4913|       |
 4914|     25|		char *q = p + 1;
 4915|     25|		if (q == end) {
  ------------------
  |  Branch (4915:7): [True: 0, False: 25]
  ------------------
 4916|      0|			return FAILURE;
 4917|      0|		}
 4918|       |
 4919|     25|		switch (*q) {
 4920|      4|			case 's':
  ------------------
  |  Branch (4920:4): [True: 4, False: 21]
  ------------------
 4921|      6|			case 'd':
  ------------------
  |  Branch (4921:4): [True: 2, False: 23]
  ------------------
 4922|      6|				placeholder_count++;
 4923|      6|				break;
 4924|     15|			case '%':
  ------------------
  |  Branch (4924:4): [True: 15, False: 10]
  ------------------
 4925|     15|				break;
 4926|      4|			default:
  ------------------
  |  Branch (4926:4): [True: 4, False: 21]
  ------------------
 4927|      4|				return FAILURE;
 4928|     25|		}
 4929|       |
 4930|     21|		p = q;
 4931|     21|		p++;
 4932|     21|	}
 4933|       |
 4934|       |	/* Bail out if the number of placeholders does not match the number of values. */
 4935|      7|	if (placeholder_count != (args->children - 1)) {
  ------------------
  |  Branch (4935:6): [True: 0, False: 7]
  ------------------
 4936|      0|		return FAILURE;
 4937|      0|	}
 4938|       |
 4939|       |	/* Handle empty format strings. */
 4940|      7|	if (Z_STRLEN_P(format_string) == 0) {
  ------------------
  |  |  988|      7|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      7|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4940:6): [True: 0, False: 7]
  ------------------
 4941|      0|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 4942|      0|		ZVAL_EMPTY_STRING(&result->u.constant);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4943|       |
 4944|      0|		return SUCCESS;
 4945|      0|	}
 4946|       |
 4947|      7|	znode *elements = NULL;
 4948|       |
 4949|      7|	if (placeholder_count > 0) {
  ------------------
  |  Branch (4949:6): [True: 5, False: 2]
  ------------------
 4950|      5|		elements = safe_emalloc(sizeof(*elements), placeholder_count, 0);
  ------------------
  |  |  153|      5|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4951|      5|	}
 4952|       |
 4953|       |	/* Compile the value expressions first for error handling that is consistent
 4954|       |	 * with a function call: Values that fail to convert to a string may emit errors.
 4955|       |	 */
 4956|     13|	for (uint32_t i = 0; i < placeholder_count; i++) {
  ------------------
  |  Branch (4956:23): [True: 6, False: 7]
  ------------------
 4957|      6|		zend_compile_expr(elements + i, args->child[1 + i]);
 4958|      6|	}
 4959|       |
 4960|      7|	uint32_t rope_elements = 0;
 4961|      7|	uint32_t rope_init_lineno = -1;
 4962|      7|	zend_op *opline = NULL;
 4963|       |
 4964|      7|	placeholder_count = 0;
 4965|      7|	p = Z_STRVAL_P(format_string);
  ------------------
  |  |  985|      7|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      7|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4966|      7|	end = p + Z_STRLEN_P(format_string);
  ------------------
  |  |  988|      7|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      7|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4967|      7|	char *offset = p;
 4968|     14|	for (;;) {
 4969|     14|		p = memchr(p, '%', end - p);
 4970|     14|		if (!p) {
  ------------------
  |  Branch (4970:7): [True: 7, False: 7]
  ------------------
 4971|      7|			break;
 4972|      7|		}
 4973|       |
 4974|      7|		char *q = p + 1;
 4975|      7|		ZEND_ASSERT(q < end);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4975:3): [True: 0, False: 7]
  |  Branch (4975:3): [True: 7, False: 0]
  ------------------
 4976|      7|		ZEND_ASSERT(*q == 's' || *q == 'd' || *q == '%');
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4976:3): [True: 7, False: 0]
  |  Branch (4976:3): [True: 0, False: 0]
  |  Branch (4976:3): [True: 0, False: 0]
  |  Branch (4976:3): [True: 4, False: 3]
  |  Branch (4976:3): [True: 2, False: 1]
  |  Branch (4976:3): [True: 1, False: 0]
  ------------------
 4977|       |
 4978|      7|		if (*q == '%') {
  ------------------
  |  Branch (4978:7): [True: 1, False: 6]
  ------------------
 4979|       |			/* Optimization to not create a dedicated rope element for the literal '%':
 4980|       |			 * Include the first '%' within the "constant" part instead of dropping the
 4981|       |			 * full placeholder.
 4982|       |			 */
 4983|      1|			p++;
 4984|      1|		}
 4985|       |
 4986|      7|		if (p != offset) {
  ------------------
  |  Branch (4986:7): [True: 6, False: 1]
  ------------------
 4987|      6|			znode const_node;
 4988|      6|			const_node.op_type = IS_CONST;
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
 4989|      6|			ZVAL_STRINGL(&const_node.u.constant, offset, p - offset);
  ------------------
  |  |  963|      6|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      6|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      6|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      6|		zval *__z = (z);						\
  |  |  |  | 1107|      6|		zend_string *__s = (s);					\
  |  |  |  | 1108|      6|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      6|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 4990|      6|			if (rope_elements == 0) {
  ------------------
  |  Branch (4990:8): [True: 5, False: 1]
  ------------------
 4991|      5|				rope_init_lineno = get_next_op_number();
 4992|      5|			}
 4993|      6|			opline = zend_compile_rope_add(result, rope_elements++, &const_node);
 4994|      6|		}
 4995|       |
 4996|      7|		if (*q != '%') {
  ------------------
  |  Branch (4996:7): [True: 6, False: 1]
  ------------------
 4997|      6|			switch (*q) {
 4998|      4|				case 's':
  ------------------
  |  Branch (4998:5): [True: 4, False: 2]
  ------------------
 4999|       |					/* Perform the cast of constants when actually evaluating the corresponding placeholder
 5000|       |					 * for correct error reporting.
 5001|       |					 */
 5002|      4|					if (elements[placeholder_count].op_type == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5002:10): [True: 0, False: 4]
  ------------------
 5003|      0|						if (Z_TYPE(elements[placeholder_count].u.constant) == IS_ARRAY) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						if (Z_TYPE(elements[placeholder_count].u.constant) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (5003:11): [True: 0, False: 0]
  ------------------
 5004|      0|							zend_emit_op_tmp(&elements[placeholder_count], ZEND_CAST, &elements[placeholder_count], NULL)->extended_value = IS_STRING;
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
              							zend_emit_op_tmp(&elements[placeholder_count], ZEND_CAST, &elements[placeholder_count], NULL)->extended_value = IS_STRING;
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
 5005|      0|						} else {
 5006|      0|							convert_to_string(&elements[placeholder_count].u.constant);
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5007|      0|						}
 5008|      0|					}
 5009|      4|					break;
 5010|      2|				case 'd':
  ------------------
  |  Branch (5010:5): [True: 2, False: 4]
  ------------------
 5011|      2|					zend_emit_op_tmp(&elements[placeholder_count], ZEND_CAST, &elements[placeholder_count], NULL)->extended_value = IS_LONG;
  ------------------
  |  |  174|      2|#define ZEND_CAST                            51
  ------------------
              					zend_emit_op_tmp(&elements[placeholder_count], ZEND_CAST, &elements[placeholder_count], NULL)->extended_value = IS_LONG;
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
 5012|      2|					break;
 5013|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5013:5): [True: 0, False: 6]
  |  Branch (5013:14): [Folded, False: 0]
  |  Branch (5013:14): [Folded, False: 0]
  ------------------
 5014|      6|			}
 5015|       |
 5016|      6|			if (rope_elements == 0) {
  ------------------
  |  Branch (5016:8): [True: 1, False: 5]
  ------------------
 5017|      1|				rope_init_lineno = get_next_op_number();
 5018|      1|			}
 5019|      6|			opline = zend_compile_rope_add(result, rope_elements++, &elements[placeholder_count]);
 5020|       |
 5021|      6|			placeholder_count++;
 5022|      6|		}
 5023|       |
 5024|      7|		p = q;
 5025|      7|		p++;
 5026|      7|		offset = p;
 5027|      7|	}
 5028|      7|	if (end != offset) {
  ------------------
  |  Branch (5028:6): [True: 6, False: 1]
  ------------------
 5029|       |		/* Add the constant part after the last placeholder. */
 5030|      6|		znode const_node;
 5031|      6|		const_node.op_type = IS_CONST;
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
 5032|      6|		ZVAL_STRINGL(&const_node.u.constant, offset, end - offset);
  ------------------
  |  |  963|      6|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      6|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      6|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      6|		zval *__z = (z);						\
  |  |  |  | 1107|      6|		zend_string *__s = (s);					\
  |  |  |  | 1108|      6|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      6|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 5033|      6|		if (rope_elements == 0) {
  ------------------
  |  Branch (5033:7): [True: 1, False: 5]
  ------------------
 5034|      1|			rope_init_lineno = get_next_op_number();
 5035|      1|		}
 5036|      6|		opline = zend_compile_rope_add(result, rope_elements++, &const_node);
 5037|      6|	}
 5038|      7|	ZEND_ASSERT(opline != NULL);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5038:2): [True: 0, False: 7]
  |  Branch (5038:2): [True: 7, False: 0]
  ------------------
 5039|       |
 5040|      7|	zend_op *init_opline = CG(active_op_array)->opcodes + rope_init_lineno;
  ------------------
  |  |   35|      7|# define CG(v) (compiler_globals.v)
  ------------------
 5041|      7|	zend_compile_rope_finalize(result, rope_elements, init_opline, opline);
 5042|      7|	efree(elements);
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5043|       |
 5044|      7|	return SUCCESS;
 5045|      7|}
zend_compile.c:zend_compile_rope_add:
11446|    656|{
11447|    656|	zend_op *opline = get_next_op();
11448|       |
11449|    656|	if (num == 0) {
  ------------------
  |  Branch (11449:6): [True: 92, False: 564]
  ------------------
11450|     92|		result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     92|#define IS_TMP_VAR	(1<<1)
  ------------------
11451|     92|		result->u.op.var = -1;
11452|     92|		opline->opcode = ZEND_ROPE_INIT;
  ------------------
  |  |  177|     92|#define ZEND_ROPE_INIT                       54
  ------------------
11453|    564|	} else {
11454|    564|		opline->opcode = ZEND_ROPE_ADD;
  ------------------
  |  |  178|    564|#define ZEND_ROPE_ADD                        55
  ------------------
11455|    564|		SET_NODE(opline->op1, result);
  ------------------
  |  |   42|    564|#define SET_NODE(target, src) do { \
  |  |   43|    564|		target ## _type = (src)->op_type; \
  |  |   44|    564|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    564|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 564]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    564|		} else { \
  |  |   47|    564|			target = (src)->u.op; \
  |  |   48|    564|		} \
  |  |   49|    564|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 564]
  |  |  ------------------
  ------------------
11456|    564|	}
11457|    656|	SET_NODE(opline->op2, elem_node);
  ------------------
  |  |   42|    656|#define SET_NODE(target, src) do { \
  |  |   43|    656|		target ## _type = (src)->op_type; \
  |  |   44|    656|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    656|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 12, False: 644]
  |  |  ------------------
  |  |   45|     12|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    644|		} else { \
  |  |   47|    644|			target = (src)->u.op; \
  |  |   48|    644|		} \
  |  |   49|    656|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 656]
  |  |  ------------------
  ------------------
11458|    656|	SET_NODE(opline->result, result);
  ------------------
  |  |   42|    656|#define SET_NODE(target, src) do { \
  |  |   43|    656|		target ## _type = (src)->op_type; \
  |  |   44|    656|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    656|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 656]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    656|		} else { \
  |  |   47|    656|			target = (src)->u.op; \
  |  |   48|    656|		} \
  |  |   49|    656|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 656]
  |  |  ------------------
  ------------------
11459|    656|	opline->extended_value = num;
11460|    656|	return opline;
11461|    656|}
zend_compile.c:zend_compile_rope_finalize:
11465|    428|{
11466|    428|	if (rope_elements == 1) {
  ------------------
  |  Branch (11466:6): [True: 17, False: 411]
  ------------------
11467|     17|		if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11467:7): [True: 2, False: 15]
  ------------------
11468|      2|			GET_NODE(result, opline->op2);
  ------------------
  |  |   51|      2|#define GET_NODE(target, src) do { \
  |  |   52|      2|		(target)->op_type = src ## _type; \
  |  |   53|      2|		if ((target)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      2|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (53:7): [True: 2, False: 0]
  |  |  ------------------
  |  |   54|      2|			ZVAL_COPY_VALUE(&(target)->u.constant, CT_CONSTANT(src)); \
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      2|		} else { \
  |  |   56|      0|			(target)->u.op = src; \
  |  |   57|      0|		} \
  |  |   58|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (58:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
11469|      2|			ZVAL_UNDEF(CT_CONSTANT(opline->op2));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
11470|      2|			SET_UNUSED(opline->op2);
  ------------------
  |  |   35|      2|#define SET_UNUSED(op) do { \
  |  |   36|      2|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      2|	op.num = (uint32_t) -1; \
  |  |   38|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
11471|      2|			MAKE_NOP(opline);
  ------------------
  |  |   40|      2|#define MAKE_NOP(opline) do { \
  |  |   41|      2|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|      2|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|      2|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|      2|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      2|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      2|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      2|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|      2|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      2|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      2|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      2|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|      2|#define SET_UNUSED(op) do { \
  |  |  |  |   36|      2|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|      2|	op.num = (uint32_t) -1; \
  |  |  |  |   38|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
11472|     15|		} else {
11473|     15|			opline->opcode = ZEND_CAST;
  ------------------
  |  |  174|     15|#define ZEND_CAST                            51
  ------------------
11474|     15|			opline->extended_value = IS_STRING;
  ------------------
  |  |  612|     15|#define IS_STRING					6
  ------------------
11475|     15|			opline->op1_type = opline->op2_type;
11476|     15|			opline->op1 = opline->op2;
11477|     15|			SET_UNUSED(opline->op2);
  ------------------
  |  |   35|     15|#define SET_UNUSED(op) do { \
  |  |   36|     15|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|     15|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|     15|	op.num = (uint32_t) -1; \
  |  |   38|     15|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 15]
  |  |  ------------------
  ------------------
11478|     15|			zend_make_tmp_result(result, opline);
11479|     15|		}
11480|    411|	} else if (rope_elements == 2) {
  ------------------
  |  Branch (11480:13): [True: 67, False: 344]
  ------------------
11481|     67|		opline->opcode = ZEND_FAST_CONCAT;
  ------------------
  |  |  176|     67|#define ZEND_FAST_CONCAT                     53
  ------------------
11482|     67|		opline->extended_value = 0;
11483|     67|		opline->op1_type = init_opline->op2_type;
11484|     67|		opline->op1 = init_opline->op2;
11485|     67|		zend_make_tmp_result(result, opline);
11486|     67|		MAKE_NOP(init_opline);
  ------------------
  |  |   40|     67|#define MAKE_NOP(opline) do { \
  |  |   41|     67|	(opline)->opcode = ZEND_NOP; \
  |  |  ------------------
  |  |  |  |  124|     67|#define ZEND_NOP                              0
  |  |  ------------------
  |  |   42|     67|	SET_UNUSED((opline)->op1); \
  |  |  ------------------
  |  |  |  |   35|     67|#define SET_UNUSED(op) do { \
  |  |  |  |   36|     67|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|     67|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|     67|	op.num = (uint32_t) -1; \
  |  |  |  |   38|     67|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 67]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|     67|	SET_UNUSED((opline)->op2); \
  |  |  ------------------
  |  |  |  |   35|     67|#define SET_UNUSED(op) do { \
  |  |  |  |   36|     67|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|     67|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|     67|	op.num = (uint32_t) -1; \
  |  |  |  |   38|     67|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 67]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|     67|	SET_UNUSED((opline)->result); \
  |  |  ------------------
  |  |  |  |   35|     67|#define SET_UNUSED(op) do { \
  |  |  |  |   36|     67|	op ## _type = IS_UNUSED; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  863|     67|#define IS_UNUSED	0		/* Unused operand */
  |  |  |  |  ------------------
  |  |  |  |   37|     67|	op.num = (uint32_t) -1; \
  |  |  |  |   38|     67|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:10): [Folded, False: 67]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|     67|} while (0)
  |  |  ------------------
  |  |  |  Branch (45:10): [Folded, False: 67]
  |  |  ------------------
  ------------------
11487|    344|	} else {
11488|    344|		uint32_t var;
11489|       |
11490|    344|		init_opline->extended_value = rope_elements;
11491|    344|		opline->opcode = ZEND_ROPE_END;
  ------------------
  |  |  179|    344|#define ZEND_ROPE_END                        56
  ------------------
11492|    344|		zend_make_tmp_result(result, opline);
11493|    344|		var = opline->op1.var = get_temporary_variable();
11494|       |
11495|       |		/* Allocates the necessary number of zval slots to keep the rope */
11496|    344|		uint32_t i = ((rope_elements * sizeof(zend_string*)) + (sizeof(zval) - 1)) / sizeof(zval);
11497|    862|		while (i > 1) {
  ------------------
  |  Branch (11497:10): [True: 518, False: 344]
  ------------------
11498|    518|			get_temporary_variable();
11499|    518|			i--;
11500|    518|		}
11501|       |
11502|       |		/* Update all the previous opcodes to use the same variable */
11503|  1.46k|		while (opline != init_opline) {
  ------------------
  |  Branch (11503:10): [True: 1.11k, False: 344]
  ------------------
11504|  1.11k|			opline--;
11505|  1.11k|			if (opline->opcode == ZEND_ROPE_ADD &&
  ------------------
  |  |  178|  2.23k|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (11505:8): [True: 728, False: 389]
  ------------------
11506|    728|			    opline->result.var == (uint32_t)-1) {
  ------------------
  |  Branch (11506:8): [True: 726, False: 2]
  ------------------
11507|    726|				opline->op1.var = var;
11508|    726|				opline->result.var = var;
11509|    726|			} else if (opline->opcode == ZEND_ROPE_INIT &&
  ------------------
  |  |  177|    782|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (11509:15): [True: 346, False: 45]
  ------------------
11510|    346|			           opline->result.var == (uint32_t)-1) {
  ------------------
  |  Branch (11510:15): [True: 344, False: 2]
  ------------------
11511|    344|				opline->result.var = var;
11512|    344|			}
11513|  1.11k|		}
11514|    344|	}
11515|    428|}
zend_compile.c:zend_compile_func_printf:
 5048|      5|{
 5049|       |	/* Special case: printf with a single constant string argument and no format specifiers.
 5050|       |	 * In this case, just emit ECHO and return the string length if needed. */
 5051|      5|	if (args->children == 1) {
  ------------------
  |  Branch (5051:6): [True: 2, False: 3]
  ------------------
 5052|      2|		zend_eval_const_expr(&args->child[0]);
 5053|      2|		if (args->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (5053:7): [True: 0, False: 2]
  ------------------
 5054|      0|			return FAILURE;
 5055|      0|		}
 5056|      2|		zval *format_string = zend_ast_get_zval(args->child[0]);
 5057|      2|		if (Z_TYPE_P(format_string) != IS_STRING) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(format_string) != IS_STRING) {
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (5057:7): [True: 0, False: 2]
  ------------------
 5058|      0|			return FAILURE;
 5059|      0|		}
 5060|       |		/* Check if there are any format specifiers */
 5061|      2|		if (!memchr(Z_STRVAL_P(format_string), '%', Z_STRLEN_P(format_string))) {
  ------------------
  |  |  985|      2|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      2|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (!memchr(Z_STRVAL_P(format_string), '%', Z_STRLEN_P(format_string))) {
  ------------------
  |  |  988|      2|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      2|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5061:7): [True: 0, False: 2]
  ------------------
 5062|       |			/* No format specifiers - just emit ECHO and return string length */
 5063|      0|			znode format_node;
 5064|      0|			zend_compile_expr(&format_node, args->child[0]);
 5065|      0|			zend_emit_op(NULL, ZEND_ECHO, &format_node, NULL);
  ------------------
  |  |  258|      0|#define ZEND_ECHO                           136
  ------------------
 5066|       |
 5067|       |			/* Return the string length as a constant if the result is used */
 5068|      0|			result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 5069|      0|			ZVAL_LONG(&result->u.constant, Z_STRLEN_P(format_string));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5070|      0|			return SUCCESS;
 5071|      0|		}
 5072|      2|	}
 5073|       |
 5074|       |	/* Fall back to sprintf optimization for format strings with specifiers */
 5075|      5|	znode rope_result;
 5076|      5|	if (zend_compile_func_sprintf(&rope_result, args) != SUCCESS) {
  ------------------
  |  Branch (5076:6): [True: 1, False: 4]
  ------------------
 5077|      1|		return FAILURE;
 5078|      1|	}
 5079|       |
 5080|       |	/* printf() returns the amount of bytes written, so just an ECHO of the
 5081|       |	 * resulting sprintf() optimisation might not be enough. At this early
 5082|       |	 * stage we can't detect if the result is actually used, so we just emit
 5083|       |	 * the opcodes and let them be cleaned up by the dead code elimination
 5084|       |	 * pass in the Zend Optimizer if the result of the printf() is in fact
 5085|       |	 * unused */
 5086|      4|	znode copy;
 5087|      4|	if (rope_result.op_type != IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5087:6): [True: 3, False: 1]
  ------------------
 5088|       |		/* Note: ZEND_COPY_TMP is only valid for TMPVAR. */
 5089|      3|		ZEND_ASSERT(rope_result.op_type == IS_TMP_VAR);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5089:3): [True: 0, False: 3]
  |  Branch (5089:3): [True: 3, False: 0]
  ------------------
 5090|      3|		zend_emit_op_tmp(&copy, ZEND_COPY_TMP, &rope_result, NULL);
  ------------------
  |  |  289|      3|#define ZEND_COPY_TMP                       167
  ------------------
 5091|      3|		zend_emit_op(NULL, ZEND_ECHO, &rope_result, NULL);
  ------------------
  |  |  258|      3|#define ZEND_ECHO                           136
  ------------------
 5092|      3|		zend_emit_op_tmp(result, ZEND_STRLEN, &copy, NULL);
  ------------------
  |  |  243|      3|#define ZEND_STRLEN                         121
  ------------------
 5093|      3|	} else {
 5094|      1|		zend_emit_op(NULL, ZEND_ECHO, &rope_result, NULL);
  ------------------
  |  |  258|      1|#define ZEND_ECHO                           136
  ------------------
 5095|      1|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
 5096|      1|		ZVAL_LONG(&result->u.constant, Z_STRLEN(rope_result.u.constant));
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5097|      1|	}
 5098|       |
 5099|      4|	return SUCCESS;
 5100|      4|}
zend_compile.c:zend_compile_func_clone:
 5103|     33|{
 5104|     33|	znode arg_node;
 5105|       |
 5106|     33|	if (args->children != 1) {
  ------------------
  |  Branch (5106:6): [True: 4, False: 29]
  ------------------
 5107|      4|		return FAILURE;
 5108|      4|	}
 5109|       |
 5110|     29|	zend_compile_expr(&arg_node, args->child[0]);
 5111|     29|	zend_emit_op_tmp(result, ZEND_CLONE, &arg_node, NULL);
  ------------------
  |  |  232|     29|#define ZEND_CLONE                          110
  ------------------
 5112|       |
 5113|     29|	return SUCCESS;
 5114|     33|}
zend_compile.c:zend_compile_func_array_map:
 5117|      8|{
 5118|       |	/* Bail out if we do not have exactly two parameters. */
 5119|      8|	if (args->children != 2) {
  ------------------
  |  Branch (5119:6): [True: 2, False: 6]
  ------------------
 5120|      2|		return FAILURE;
 5121|      2|	}
 5122|       |
 5123|      6|	zend_ast *callback = args->child[0];
 5124|       |
 5125|       |	/* Bail out if the callback is not a FCC/PFA. */
 5126|      6|	zend_ast *args_ast;
 5127|      6|	switch (callback->kind) {
 5128|      1|		case ZEND_AST_CALL:
  ------------------
  |  Branch (5128:3): [True: 1, False: 5]
  ------------------
 5129|      1|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (5129:3): [True: 0, False: 6]
  ------------------
 5130|      1|			args_ast = zend_ast_call_get_args(callback);
 5131|      1|			if (args_ast->kind != ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (5131:8): [True: 0, False: 1]
  ------------------
 5132|      0|				return FAILURE;
 5133|      0|			}
 5134|       |
 5135|      1|			break;
 5136|      5|		default:
  ------------------
  |  Branch (5136:3): [True: 5, False: 1]
  ------------------
 5137|      5|			return FAILURE;
 5138|      6|	}
 5139|       |
 5140|       |	/* Bail out if the callback is assert() due to the AST stringification logic
 5141|       |	 * breaking for the generated call.
 5142|       |	 */
 5143|      1|	if (callback->kind == ZEND_AST_CALL
  ------------------
  |  Branch (5143:6): [True: 1, False: 0]
  ------------------
 5144|      1|	 && callback->child[0]->kind == ZEND_AST_ZVAL 
  ------------------
  |  Branch (5144:6): [True: 1, False: 0]
  ------------------
 5145|      1|	 && Z_TYPE_P(zend_ast_get_zval(callback->child[0])) == IS_STRING
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	 && Z_TYPE_P(zend_ast_get_zval(callback->child[0])) == IS_STRING
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (5145:6): [True: 1, False: 0]
  ------------------
 5146|      1|	 && zend_string_equals_literal_ci(zend_ast_get_str(callback->child[0]), "assert")) {
  ------------------
  |  |  404|      1|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 1]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5147|      0|		return FAILURE;
 5148|      0|	}
 5149|       |
 5150|      1|	zend_ast_list *callback_args = zend_ast_get_list(((zend_ast_fcc*)args_ast)->args);
 5151|      1|	if (callback_args->children != 1 || callback_args->child[0]->attr != ZEND_PLACEHOLDER_VARIADIC) {
  ------------------
  |  | 1234|      1|#define ZEND_PLACEHOLDER_VARIADIC (1<<0)
  ------------------
  |  Branch (5151:6): [True: 0, False: 1]
  |  Branch (5151:38): [True: 0, False: 1]
  ------------------
 5152|       |		/* Full PFA is not yet implemented, will fail in zend_compile_call_common(). */
 5153|      0|		return FAILURE;
 5154|      0|	}
 5155|       |
 5156|      1|	znode value;
 5157|      1|	value.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
 5158|      1|	value.u.op.var = get_temporary_variable();
 5159|      1|	zend_ast *call_args = zend_ast_create_list(1, ZEND_AST_ARG_LIST, zend_ast_create_znode(&value));
  ------------------
  |  |  320|      1|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5160|       |
 5161|      1|	zend_op *opline;
 5162|       |
 5163|      1|	znode array;
 5164|      1|	zend_compile_expr(&array, args->child[1]);
 5165|       |	/* array is an argument to both ZEND_TYPE_ASSERT and to ZEND_FE_RESET_R. */
 5166|      1|	if (array.op_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5166:6): [True: 1, False: 0]
  ------------------
 5167|      1|		Z_TRY_ADDREF(array.u.constant);
  ------------------
  |  | 1299|      1|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      1|	zval *_pz = (pz);				\
  |  |  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      1|	}								\
  |  |  |  | 1290|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5168|      1|	}
 5169|       |
 5170|       |	/* Verify that the input array actually is an array. */
 5171|      1|	znode name;
 5172|      1|	name.op_type = IS_CONST;
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
 5173|      1|	ZVAL_STR_COPY(&name.u.constant, lcname);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5174|      1|	opline = zend_emit_op(NULL, ZEND_TYPE_ASSERT, &name, &array);
  ------------------
  |  |  333|      1|#define ZEND_TYPE_ASSERT                    211
  ------------------
 5175|      1|	opline->lineno = lineno;
 5176|      1|	opline->extended_value = (2 << 16) | IS_ARRAY;
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
 5177|      1|	const zval *fbc_zv = zend_hash_find(CG(function_table), lcname);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5178|      1|	const Bucket *fbc_bucket = ZEND_CONTAINER_OF(fbc_zv, Bucket, val);
  ------------------
  |  |  407|      1|	_Generic( \
  |  |  408|      1|		(ptr), \
  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  411|      1|	)
  ------------------
 5179|      1|	Z_EXTRA_P(CT_CONSTANT(opline->op1)) = fbc_bucket - CG(function_table)->arData;
  ------------------
  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              	Z_EXTRA_P(CT_CONSTANT(opline->op1)) = fbc_bucket - CG(function_table)->arData;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5180|       |
 5181|       |	/* Initialize the result array. */
 5182|      1|	zend_emit_op_tmp(result, ZEND_INIT_ARRAY, NULL, NULL);
  ------------------
  |  |  194|      1|#define ZEND_INIT_ARRAY                      71
  ------------------
 5183|       |
 5184|       |	/* foreach loop starts here. */
 5185|      1|	znode key;
 5186|       |
 5187|      1|	uint32_t opnum_reset = get_next_op_number();
 5188|      1|	znode reset_node;
 5189|      1|	zend_emit_op(&reset_node, ZEND_FE_RESET_R, &array, NULL);
  ------------------
  |  |  200|      1|#define ZEND_FE_RESET_R                      77
  ------------------
 5190|      1|	zend_begin_loop(ZEND_FE_FREE, &reset_node, false);
  ------------------
  |  |  249|      1|#define ZEND_FE_FREE                        127
  ------------------
 5191|      1|	uint32_t opnum_fetch = get_next_op_number();
 5192|      1|	zend_emit_op_tmp(&key, ZEND_FE_FETCH_R, &reset_node, &value);
  ------------------
  |  |  201|      1|#define ZEND_FE_FETCH_R                      78
  ------------------
 5193|       |
 5194|       |	/* loop body */
 5195|      1|	znode call_result;
 5196|      1|	switch (callback->kind) {
  ------------------
  |  Branch (5196:10): [True: 1, False: 0]
  ------------------
 5197|      1|		case ZEND_AST_CALL:
  ------------------
  |  Branch (5197:3): [True: 1, False: 0]
  ------------------
 5198|      1|			zend_compile_expr(&call_result, zend_ast_create(ZEND_AST_CALL, callback->child[0], call_args));
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5199|      1|			break;
 5200|      0|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (5200:3): [True: 0, False: 1]
  ------------------
 5201|      0|			zend_compile_expr(&call_result, zend_ast_create(ZEND_AST_STATIC_CALL, callback->child[0], callback->child[1], call_args));
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5202|      0|			break;
 5203|      1|	}
 5204|      1|	opline = zend_emit_op(NULL, ZEND_ADD_ARRAY_ELEMENT, &call_result, &key);
  ------------------
  |  |  195|      1|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
 5205|      1|	SET_NODE(opline->result, result);
  ------------------
  |  |   42|      1|#define SET_NODE(target, src) do { \
  |  |   43|      1|		target ## _type = (src)->op_type; \
  |  |   44|      1|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      1|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 1]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|      1|		} else { \
  |  |   47|      1|			target = (src)->u.op; \
  |  |   48|      1|		} \
  |  |   49|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5206|       |	/* end loop body */
 5207|       |
 5208|      1|	zend_emit_jump(opnum_fetch);
 5209|       |
 5210|      1|	uint32_t opnum_loop_end = get_next_op_number();
 5211|      1|	opline = &CG(active_op_array)->opcodes[opnum_reset];
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5212|      1|	opline->op2.opline_num = opnum_loop_end;
 5213|      1|	opline = &CG(active_op_array)->opcodes[opnum_fetch];
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5214|      1|	opline->extended_value = opnum_loop_end;
 5215|       |
 5216|      1|	zend_end_loop(opnum_fetch, &reset_node);
 5217|      1|	zend_emit_op(NULL, ZEND_FE_FREE, &reset_node, NULL);
  ------------------
  |  |  249|      1|#define ZEND_FE_FREE                        127
  ------------------
 5218|       |
 5219|      1|	return SUCCESS;
 5220|      1|}
zend_compile.c:zend_begin_loop:
  714|    479|{
  715|    479|	zend_brk_cont_element *brk_cont_element;
  716|    479|	int parent = CG(context).current_brk_cont;
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
  717|    479|	zend_loop_var info = {0};
  718|       |
  719|    479|	CG(context).current_brk_cont = CG(context).last_brk_cont;
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(context).current_brk_cont = CG(context).last_brk_cont;
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
  720|    479|	brk_cont_element = get_next_brk_cont_element();
  721|    479|	brk_cont_element->parent = parent;
  722|    479|	brk_cont_element->is_switch = is_switch;
  723|       |
  724|    479|	if (loop_var && (loop_var->op_type & (IS_VAR|IS_TMP_VAR))) {
  ------------------
  |  |  866|    211|#define IS_VAR		(1<<2)
  ------------------
              	if (loop_var && (loop_var->op_type & (IS_VAR|IS_TMP_VAR))) {
  ------------------
  |  |  865|    211|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (724:6): [True: 211, False: 268]
  |  Branch (724:18): [True: 204, False: 7]
  ------------------
  725|    204|		uint32_t start = get_next_op_number();
  726|       |
  727|    204|		info.opcode = free_opcode;
  728|    204|		info.var_type = loop_var->op_type;
  729|    204|		info.var_num = loop_var->u.op.var;
  730|    204|		brk_cont_element->start = start;
  731|    275|	} else {
  732|    275|		info.opcode = ZEND_NOP;
  ------------------
  |  |  124|    275|#define ZEND_NOP                              0
  ------------------
  733|       |		/* The start field is used to free temporary variables in case of exceptions.
  734|       |		 * We won't try to free something of we don't have loop variable.  */
  735|    275|		brk_cont_element->start = -1;
  736|    275|	}
  737|       |
  738|    479|	zend_stack_push(&CG(loop_var_stack), &info);
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
  739|    479|}
zend_compile.c:get_next_brk_cont_element:
  169|    479|{
  170|    479|	CG(context).last_brk_cont++;
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
  171|    479|	CG(context).brk_cont_array = erealloc(CG(context).brk_cont_array, sizeof(zend_brk_cont_element) * CG(context).last_brk_cont);
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(context).brk_cont_array = erealloc(CG(context).brk_cont_array, sizeof(zend_brk_cont_element) * CG(context).last_brk_cont);
  ------------------
  |  |  158|    479|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    479|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    479|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    479|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    479|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|    479|	return &CG(context).brk_cont_array[CG(context).last_brk_cont-1];
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
              	return &CG(context).brk_cont_array[CG(context).last_brk_cont-1];
  ------------------
  |  |   35|    479|# define CG(v) (compiler_globals.v)
  ------------------
  173|    479|}
zend_compile.c:zend_end_loop:
  743|    468|{
  744|    468|	uint32_t end = get_next_op_number();
  745|    468|	zend_brk_cont_element *brk_cont_element
  746|    468|		= &CG(context).brk_cont_array[CG(context).current_brk_cont];
  ------------------
  |  |   35|    468|# define CG(v) (compiler_globals.v)
  ------------------
              		= &CG(context).brk_cont_array[CG(context).current_brk_cont];
  ------------------
  |  |   35|    468|# define CG(v) (compiler_globals.v)
  ------------------
  747|    468|	brk_cont_element->cont = cont_addr;
  748|    468|	brk_cont_element->brk = end;
  749|    468|	CG(context).current_brk_cont = brk_cont_element->parent;
  ------------------
  |  |   35|    468|# define CG(v) (compiler_globals.v)
  ------------------
  750|       |
  751|    468|	zend_stack_del_top(&CG(loop_var_stack));
  ------------------
  |  |   35|    468|# define CG(v) (compiler_globals.v)
  ------------------
  752|    468|}
zend_compile.c:zend_compile_frameless_icall:
 4808|  3.11k|{
 4809|  3.11k|	const zend_frameless_function_info *frameless_function_info = find_frameless_function_info(args, fbc, type);
 4810|  3.11k|	if (!frameless_function_info) {
  ------------------
  |  Branch (4810:6): [True: 3.11k, False: 0]
  ------------------
 4811|  3.11k|		return (uint32_t)-1;
 4812|  3.11k|	}
 4813|       |
 4814|      0|	return zend_compile_frameless_icall_ex(result, args, fbc, frameless_function_info, type);
 4815|  3.11k|}
zend_compile.c:zend_compile_call_common:
 4008|  6.74k|{
 4009|  6.74k|	zend_op *opline;
 4010|  6.74k|	uint32_t opnum_init = get_next_op_number() - 1;
 4011|       |
 4012|  6.74k|	if (args_ast->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (4012:6): [True: 40, False: 6.70k]
  ------------------
 4013|     40|		opline = &CG(active_op_array)->opcodes[opnum_init];
  ------------------
  |  |   35|     40|# define CG(v) (compiler_globals.v)
  ------------------
 4014|     40|		opline->extended_value = 0;
 4015|       |		/* opcode array may be reallocated, so don't access opcode field after zend_emit_op_tmp(). */
 4016|     40|		uint8_t opcode = opline->opcode;
 4017|       |
 4018|     40|		if (opcode == ZEND_NEW) {
  ------------------
  |  |  191|     40|#define ZEND_NEW                             68
  ------------------
  |  Branch (4018:7): [True: 3, False: 37]
  ------------------
 4019|      3|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot create Closure for new expression");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 4020|      3|		}
 4021|       |
 4022|     37|		zend_ast_list *args = zend_ast_get_list(((zend_ast_fcc*)args_ast)->args);
 4023|     37|		if (args->children != 1 || args->child[0]->attr != ZEND_PLACEHOLDER_VARIADIC) {
  ------------------
  |  | 1234|     36|#define ZEND_PLACEHOLDER_VARIADIC (1<<0)
  ------------------
  |  Branch (4023:7): [True: 1, False: 36]
  |  Branch (4023:30): [True: 2, False: 34]
  ------------------
 4024|      3|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot create a Closure for call expression with more than one argument, or non-variadic placeholders");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 4025|      3|		}
 4026|       |
 4027|     34|		if (opcode == ZEND_INIT_FCALL) {
  ------------------
  |  |  184|     34|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4027:7): [True: 20, False: 14]
  ------------------
 4028|     20|			opline->op1.num = zend_vm_calc_used_stack(0, fbc);
 4029|     20|		}
 4030|       |
 4031|     34|		zend_op *callable_convert_op = zend_emit_op_tmp(result, ZEND_CALLABLE_CONVERT, NULL, NULL);
  ------------------
  |  |  324|     34|#define ZEND_CALLABLE_CONVERT               202
  ------------------
 4032|     34|		if (opcode == ZEND_INIT_FCALL
  ------------------
  |  |  184|     68|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4032:7): [True: 20, False: 14]
  ------------------
 4033|     14|		 || opcode == ZEND_INIT_FCALL_BY_NAME
  ------------------
  |  |  182|     48|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (4033:7): [True: 0, False: 14]
  ------------------
 4034|     22|		 || opcode == ZEND_INIT_NS_FCALL_BY_NAME) {
  ------------------
  |  |  192|     14|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (4034:7): [True: 2, False: 12]
  ------------------
 4035|     22|			callable_convert_op->extended_value = zend_alloc_cache_slot();
 4036|     22|		} else {
 4037|     12|			callable_convert_op->extended_value = (uint32_t)-1;
 4038|     12|		}
 4039|     34|		return true;
 4040|     37|	}
 4041|       |
 4042|  6.74k|	bool may_have_extra_named_args;
 4043|  6.70k|	uint32_t arg_count = zend_compile_args(args_ast, fbc, &may_have_extra_named_args);
 4044|       |
 4045|  6.70k|	zend_do_extended_fcall_begin();
 4046|       |
 4047|  6.70k|	opline = &CG(active_op_array)->opcodes[opnum_init];
  ------------------
  |  |   35|  6.70k|# define CG(v) (compiler_globals.v)
  ------------------
 4048|  6.70k|	opline->extended_value = arg_count;
 4049|  6.70k|	uint8_t init_opcode = opline->opcode;
 4050|       |
 4051|  6.70k|	if (init_opcode == ZEND_INIT_FCALL) {
  ------------------
  |  |  184|  6.70k|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4051:6): [True: 3.66k, False: 3.03k]
  ------------------
 4052|  3.66k|		opline->op1.num = zend_vm_calc_used_stack(arg_count, fbc);
 4053|  3.66k|	}
 4054|       |
 4055|  6.70k|	uint8_t call_op = zend_get_call_op(
 4056|  6.70k|		opline,
 4057|  6.70k|		fbc,
 4058|       |		/* result_used: At this point we do not yet reliably
 4059|       |		 * know if the result is used. Deoptimize #[\NoDiscard]
 4060|       |		 * calls to be sure. The optimizer will fix this up.
 4061|       |		 */
 4062|  6.70k|		false
 4063|  6.70k|	);
 4064|  6.70k|	opline = zend_emit_op(result, call_op, NULL, NULL);
 4065|  6.70k|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|  13.4k|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|    127|#define BP_VAR_IS			3
  ------------------
  |  Branch (4065:6): [True: 6.57k, False: 127]
  |  Branch (4065:26): [True: 7, False: 120]
  ------------------
 4066|  6.56k|		if (init_opcode != ZEND_NEW && opline->result_type == IS_VAR) {
  ------------------
  |  |  191|  13.1k|#define ZEND_NEW                             68
  ------------------
              		if (init_opcode != ZEND_NEW && opline->result_type == IS_VAR) {
  ------------------
  |  |  866|  4.89k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (4066:7): [True: 4.89k, False: 1.66k]
  |  Branch (4066:34): [True: 4.89k, False: 0]
  ------------------
 4067|  4.89k|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|  4.89k|#define IS_TMP_VAR	(1<<1)
  ------------------
 4068|  4.89k|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|  4.89k|#define IS_TMP_VAR	(1<<1)
  ------------------
 4069|  4.89k|		}
 4070|  6.56k|	}
 4071|  6.70k|	if (may_have_extra_named_args) {
  ------------------
  |  Branch (4071:6): [True: 45, False: 6.66k]
  ------------------
 4072|     45|		opline->extended_value = ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS;
  ------------------
  |  | 1122|     45|#define ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS 1
  ------------------
 4073|     45|	}
 4074|  6.70k|	opline->lineno = lineno;
 4075|  6.70k|	zend_do_extended_fcall_end();
 4076|       |	return false;
 4077|  6.74k|}
zend_compile.c:zend_compile_args:
 3771|  6.70k|{
 3772|  6.70k|	const zend_ast_list *args = zend_ast_get_list(ast);
 3773|  6.70k|	uint32_t i;
 3774|  6.70k|	bool uses_arg_unpack = false;
 3775|  6.70k|	uint32_t arg_count = 0; /* number of arguments not including unpacks */
 3776|       |
 3777|       |	/* Whether named arguments are used syntactically, to enforce language level limitations.
 3778|       |	 * May not actually use named argument passing. */
 3779|  6.70k|	bool uses_named_args = false;
 3780|       |	/* Whether there may be any undef arguments due to the use of named arguments. */
 3781|  6.70k|	bool may_have_undef = false;
 3782|       |	/* Whether there may be any extra named arguments collected into a variadic. */
 3783|  6.70k|	*may_have_extra_named_args = false;
 3784|       |
 3785|  13.1k|	for (i = 0; i < args->children; ++i) {
  ------------------
  |  Branch (3785:14): [True: 6.48k, False: 6.70k]
  ------------------
 3786|  6.48k|		zend_ast *arg = args->child[i];
 3787|  6.48k|		zend_string *arg_name = NULL;
 3788|  6.48k|		uint32_t arg_num = i + 1;
 3789|       |
 3790|  6.48k|		znode arg_node;
 3791|  6.48k|		zend_op *opline;
 3792|  6.48k|		uint8_t opcode;
 3793|       |
 3794|  6.48k|		if (arg->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (3794:7): [True: 43, False: 6.43k]
  ------------------
 3795|     43|			if (uses_named_args) {
  ------------------
  |  Branch (3795:8): [True: 1, False: 42]
  ------------------
 3796|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3797|      1|					"Cannot use argument unpacking after named arguments");
 3798|      1|			}
 3799|       |
 3800|       |			/* Unpack may contain named arguments. */
 3801|     42|			may_have_undef = true;
 3802|     42|			if (!fbc || (fbc->common.fn_flags & ZEND_ACC_VARIADIC)) {
  ------------------
  |  |  358|     25|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (3802:8): [True: 17, False: 25]
  |  Branch (3802:16): [True: 20, False: 5]
  ------------------
 3803|     37|				*may_have_extra_named_args = true;
 3804|     37|			}
 3805|       |
 3806|     42|			uses_arg_unpack = true;
 3807|     42|			fbc = NULL;
 3808|       |
 3809|     42|			zend_compile_expr(&arg_node, arg->child[0]);
 3810|     42|			opline = zend_emit_op(NULL, ZEND_SEND_UNPACK, &arg_node, NULL);
  ------------------
  |  |  287|     42|#define ZEND_SEND_UNPACK                    165
  ------------------
 3811|     42|			opline->op2.num = arg_count;
 3812|     42|			opline->result.var = EX_NUM_TO_VAR(arg_count - 1);
  ------------------
  |  |  759|     42|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|     42|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 3813|       |
 3814|     42|			continue;
 3815|     43|		}
 3816|       |
 3817|  6.43k|		if (arg->kind == ZEND_AST_NAMED_ARG) {
  ------------------
  |  Branch (3817:7): [True: 38, False: 6.40k]
  ------------------
 3818|     38|			uses_named_args = true;
 3819|     38|			arg_name = zval_make_interned_string(zend_ast_get_zval(arg->child[0]));
 3820|     38|			arg = arg->child[1];
 3821|       |
 3822|     38|			if (fbc && !uses_arg_unpack) {
  ------------------
  |  Branch (3822:8): [True: 24, False: 14]
  |  Branch (3822:15): [True: 24, False: 0]
  ------------------
 3823|     24|				arg_num = zend_get_arg_num(fbc, arg_name);
 3824|     24|				if (arg_num == arg_count + 1 && !may_have_undef) {
  ------------------
  |  Branch (3824:9): [True: 6, False: 18]
  |  Branch (3824:37): [True: 5, False: 1]
  ------------------
 3825|       |					/* Using named arguments, but passing in order. */
 3826|      5|					arg_name = NULL;
 3827|      5|					arg_count++;
 3828|     19|				} else {
 3829|       |					// TODO: We could track which arguments were passed, even if out of order.
 3830|     19|					may_have_undef = true;
 3831|     19|					if (arg_num == (uint32_t) -1 && (fbc->common.fn_flags & ZEND_ACC_VARIADIC)) {
  ------------------
  |  |  358|     13|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (3831:10): [True: 13, False: 6]
  |  Branch (3831:38): [True: 12, False: 1]
  ------------------
 3832|     12|						*may_have_extra_named_args = true;
 3833|     12|					}
 3834|     19|				}
 3835|     24|			} else {
 3836|     14|				arg_num = (uint32_t) -1;
 3837|     14|				may_have_undef = true;
 3838|     14|				*may_have_extra_named_args = true;
 3839|     14|			}
 3840|  6.40k|		} else {
 3841|  6.40k|			if (uses_arg_unpack) {
  ------------------
  |  Branch (3841:8): [True: 1, False: 6.39k]
  ------------------
 3842|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3843|      1|					"Cannot use positional argument after argument unpacking");
 3844|      1|			}
 3845|       |
 3846|  6.39k|			if (uses_named_args) {
  ------------------
  |  Branch (3846:8): [True: 4, False: 6.39k]
  ------------------
 3847|      4|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3848|      4|					"Cannot use positional argument after named argument");
 3849|      4|			}
 3850|       |
 3851|  6.39k|			arg_count++;
 3852|  6.39k|		}
 3853|       |
 3854|       |		/* Treat passing of $GLOBALS the same as passing a call.
 3855|       |		 * This will error at runtime if the argument is by-ref. */
 3856|  6.43k|		if (zend_is_call(arg) || is_globals_fetch(arg)) {
  ------------------
  |  Branch (3856:7): [True: 660, False: 5.77k]
  |  Branch (3856:28): [True: 11, False: 5.76k]
  ------------------
 3857|    671|			uint32_t type = is_globals_fetch(arg) || (fbc && !ARG_SHOULD_BE_SENT_BY_REF(fbc, arg_num))
  ------------------
  |  | 1167|    574|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|    574|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|    574|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  ------------------
  |  Branch (3857:20): [True: 11, False: 660]
  |  Branch (3857:46): [True: 574, False: 86]
  |  Branch (3857:53): [True: 573, False: 1]
  ------------------
 3858|    671|				? BP_VAR_R : BP_VAR_FUNC_ARG;
  ------------------
  |  | 1074|    584|#define BP_VAR_R			0
  ------------------
              				? BP_VAR_R : BP_VAR_FUNC_ARG;
  ------------------
  |  | 1078|    758|#define BP_VAR_FUNC_ARG		4
  ------------------
 3859|    671|			zend_compile_var(&arg_node, arg, type, /* by_ref */ false);
 3860|    671|			if (arg_node.op_type & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|    671|#define IS_CONST	(1<<0)
  ------------------
              			if (arg_node.op_type & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|    671|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (3860:8): [True: 592, False: 79]
  ------------------
 3861|       |				/* Function call was converted into builtin instruction */
 3862|    592|				if (!fbc || ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1164|    582|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|    582|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 2, False: 580]
  |  |  ------------------
  ------------------
  |  Branch (3862:9): [True: 10, False: 582]
  ------------------
 3863|     12|					opcode = ZEND_SEND_VAL_EX;
  ------------------
  |  |  238|     12|#define ZEND_SEND_VAL_EX                    116
  ------------------
 3864|    580|				} else {
 3865|    580|					opcode = ZEND_SEND_VAL;
  ------------------
  |  |  188|    580|#define ZEND_SEND_VAL                        65
  ------------------
 3866|    580|				}
 3867|    592|			} else {
 3868|     79|				if (fbc && arg_num != (uint32_t) -1) {
  ------------------
  |  Branch (3868:9): [True: 0, False: 79]
  |  Branch (3868:16): [True: 0, False: 0]
  ------------------
 3869|      0|					if (ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3870|      0|						opcode = ZEND_SEND_VAR_NO_REF;
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
 3871|      0|					} else if (ARG_MAY_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1170|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1170:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3872|       |						/* For IS_VAR operands, SEND_VAL will pass through the operand without
 3873|       |						 * dereferencing, so it will use a by-ref pass if the call returned by-ref
 3874|       |						 * and a by-value pass if it returned by-value. */
 3875|      0|						opcode = ZEND_SEND_VAL;
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
 3876|      0|					} else {
 3877|      0|						opcode = ZEND_SEND_VAR;
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
 3878|      0|					}
 3879|     79|				} else {
 3880|     79|					opcode = ZEND_SEND_VAR_NO_REF_EX;
  ------------------
  |  |  173|     79|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
 3881|     79|				}
 3882|     79|			}
 3883|  5.76k|		} else if (zend_is_passable_by_ref(arg) && !zend_ast_is_short_circuited(arg)) {
  ------------------
  |  Branch (3883:14): [True: 1.65k, False: 4.11k]
  |  Branch (3883:46): [True: 1.64k, False: 9]
  ------------------
 3884|  1.64k|			if (fbc && arg_num != (uint32_t) -1) {
  ------------------
  |  Branch (3884:8): [True: 1.44k, False: 197]
  |  Branch (3884:15): [True: 1.44k, False: 2]
  ------------------
 3885|  1.44k|				if (ARG_SHOULD_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1167|  1.44k|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|  1.44k|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|  1.44k|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 94, False: 1.34k]
  |  |  ------------------
  ------------------
 3886|     94|					zend_compile_var(&arg_node, arg, BP_VAR_W, true);
  ------------------
  |  | 1075|     94|#define BP_VAR_W			1
  ------------------
 3887|     94|					opcode = ZEND_SEND_REF;
  ------------------
  |  |  190|     94|#define ZEND_SEND_REF                        67
  ------------------
 3888|  1.34k|				} else {
 3889|  1.34k|					zend_compile_var(&arg_node, arg, BP_VAR_R, false);
  ------------------
  |  | 1074|  1.34k|#define BP_VAR_R			0
  ------------------
 3890|  1.34k|					opcode = (arg_node.op_type == IS_TMP_VAR) ? ZEND_SEND_VAL : ZEND_SEND_VAR;
  ------------------
  |  |  865|  1.34k|#define IS_TMP_VAR	(1<<1)
  ------------------
              					opcode = (arg_node.op_type == IS_TMP_VAR) ? ZEND_SEND_VAL : ZEND_SEND_VAR;
  ------------------
  |  |  188|    194|#define ZEND_SEND_VAL                        65
  ------------------
              					opcode = (arg_node.op_type == IS_TMP_VAR) ? ZEND_SEND_VAL : ZEND_SEND_VAR;
  ------------------
  |  |  239|  2.50k|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (3890:15): [True: 194, False: 1.15k]
  ------------------
 3891|  1.34k|				}
 3892|  1.44k|			} else {
 3893|    199|				do {
 3894|    199|					if (arg->kind == ZEND_AST_VAR) {
  ------------------
  |  Branch (3894:10): [True: 172, False: 27]
  ------------------
 3895|    172|						CG(zend_lineno) = zend_ast_get_lineno(ast);
  ------------------
  |  |   35|    172|# define CG(v) (compiler_globals.v)
  ------------------
 3896|    172|						if (is_this_fetch(arg)) {
  ------------------
  |  Branch (3896:11): [True: 0, False: 172]
  ------------------
 3897|      0|							zend_emit_op(&arg_node, ZEND_FETCH_THIS, NULL, NULL);
  ------------------
  |  |  306|      0|#define ZEND_FETCH_THIS                     184
  ------------------
 3898|      0|							opcode = ZEND_SEND_VAR_EX;
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
 3899|      0|							CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              							CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |  368|      0|#define ZEND_ACC_USES_THIS               (1 << 17) /*     |  X  |     |     */
  ------------------
 3900|      0|							break;
 3901|    172|						} else if (zend_try_compile_cv(&arg_node, arg, BP_VAR_R) == SUCCESS) {
  ------------------
  |  | 1074|    172|#define BP_VAR_R			0
  ------------------
  |  Branch (3901:18): [True: 159, False: 13]
  ------------------
 3902|    159|							opcode = ZEND_SEND_VAR_EX;
  ------------------
  |  |  189|    159|#define ZEND_SEND_VAR_EX                     66
  ------------------
 3903|    159|							break;
 3904|    159|						}
 3905|    172|					}
 3906|     40|					opline = zend_emit_op(NULL, ZEND_CHECK_FUNC_ARG, NULL, NULL);
  ------------------
  |  |  222|     40|#define ZEND_CHECK_FUNC_ARG                 100
  ------------------
 3907|     40|					if (arg_name) {
  ------------------
  |  Branch (3907:10): [True: 3, False: 37]
  ------------------
 3908|      3|						opline->op2_type = IS_CONST;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
 3909|      3|						zend_string_addref(arg_name);
 3910|      3|						opline->op2.constant = zend_add_literal_string(&arg_name);
 3911|      3|						opline->result.num = zend_alloc_cache_slots(2);
 3912|     37|					} else {
 3913|     37|						opline->op2.num = arg_num;
 3914|     37|					}
 3915|     40|					zend_compile_var(&arg_node, arg, BP_VAR_FUNC_ARG, true);
  ------------------
  |  | 1078|     40|#define BP_VAR_FUNC_ARG		4
  ------------------
 3916|     40|					opcode = ZEND_SEND_FUNC_ARG;
  ------------------
  |  |  307|     40|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
 3917|     40|				} while (0);
  ------------------
  |  Branch (3917:14): [Folded, False: 40]
  ------------------
 3918|    199|			}
 3919|  4.12k|		} else {
 3920|  4.12k|			zend_compile_expr(&arg_node, arg);
 3921|  4.12k|			if (arg_node.op_type == IS_VAR) {
  ------------------
  |  |  866|  4.12k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (3921:8): [True: 0, False: 4.12k]
  ------------------
 3922|       |				/* pass ++$a or something similar */
 3923|      0|				if (fbc && arg_num != (uint32_t) -1) {
  ------------------
  |  Branch (3923:9): [True: 0, False: 0]
  |  Branch (3923:16): [True: 0, False: 0]
  ------------------
 3924|      0|					if (ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3925|      0|						opcode = ZEND_SEND_VAR_NO_REF;
  ------------------
  |  |  228|      0|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
 3926|      0|					} else if (ARG_MAY_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1170|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1170:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3927|      0|						opcode = ZEND_SEND_VAL;
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
 3928|      0|					} else {
 3929|      0|						opcode = ZEND_SEND_VAR;
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
 3930|      0|					}
 3931|      0|				} else {
 3932|      0|					opcode = ZEND_SEND_VAR_NO_REF_EX;
  ------------------
  |  |  173|      0|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
 3933|      0|				}
 3934|  4.12k|			} else if (arg_node.op_type == IS_CV) {
  ------------------
  |  |  867|  4.12k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (3934:15): [True: 0, False: 4.12k]
  ------------------
 3935|      0|				if (fbc && arg_num != (uint32_t) -1) {
  ------------------
  |  Branch (3935:9): [True: 0, False: 0]
  |  Branch (3935:16): [True: 0, False: 0]
  ------------------
 3936|      0|					if (ARG_SHOULD_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3937|      0|						opcode = ZEND_SEND_REF;
  ------------------
  |  |  190|      0|#define ZEND_SEND_REF                        67
  ------------------
 3938|      0|					} else {
 3939|      0|						opcode = ZEND_SEND_VAR;
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
 3940|      0|					}
 3941|      0|				} else {
 3942|      0|					opcode = ZEND_SEND_VAR_EX;
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
 3943|      0|				}
 3944|  4.12k|			} else {
 3945|       |				/* Delay "Only variables can be passed by reference" error to execution */
 3946|  4.12k|				if (fbc && arg_num != (uint32_t) -1 && !ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) {
  ------------------
  |  | 1164|  3.51k|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|  3.51k|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  ------------------
  |  Branch (3946:9): [True: 3.52k, False: 592]
  |  Branch (3946:16): [True: 3.51k, False: 10]
  |  Branch (3946:44): [True: 3.51k, False: 3]
  ------------------
 3947|  3.51k|					opcode = ZEND_SEND_VAL;
  ------------------
  |  |  188|  3.51k|#define ZEND_SEND_VAL                        65
  ------------------
 3948|  3.51k|				} else {
 3949|    605|					opcode = ZEND_SEND_VAL_EX;
  ------------------
  |  |  238|    605|#define ZEND_SEND_VAL_EX                    116
  ------------------
 3950|    605|				}
 3951|  4.12k|			}
 3952|  4.12k|		}
 3953|       |
 3954|  6.43k|		opline = zend_emit_op(NULL, opcode, &arg_node, NULL);
 3955|  6.43k|		if (arg_name) {
  ------------------
  |  Branch (3955:7): [True: 32, False: 6.40k]
  ------------------
 3956|     32|			opline->op2_type = IS_CONST;
  ------------------
  |  |  864|     32|#define IS_CONST	(1<<0)
  ------------------
 3957|     32|			zend_string_addref(arg_name);
 3958|     32|			opline->op2.constant = zend_add_literal_string(&arg_name);
 3959|     32|			opline->result.num = zend_alloc_cache_slots(2);
 3960|  6.40k|		} else {
 3961|  6.40k|			opline->op2.opline_num = arg_num;
 3962|  6.40k|			opline->result.var = EX_NUM_TO_VAR(arg_num - 1);
  ------------------
  |  |  759|  6.40k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  6.40k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 3963|  6.40k|		}
 3964|  6.43k|	}
 3965|       |
 3966|  6.70k|	if (may_have_undef) {
  ------------------
  |  Branch (3966:6): [True: 56, False: 6.64k]
  ------------------
 3967|     56|		zend_emit_op(NULL, ZEND_CHECK_UNDEF_ARGS, NULL, NULL);
  ------------------
  |  |  321|     56|#define ZEND_CHECK_UNDEF_ARGS               199
  ------------------
 3968|     56|	}
 3969|       |
 3970|  6.70k|	return arg_count;
 3971|  6.70k|}
zend_compile.c:zend_get_arg_num:
 3756|     24|static uint32_t zend_get_arg_num(const zend_function *fn, const zend_string *arg_name) {
 3757|       |	// TODO: Caching?
 3758|     39|	for (uint32_t i = 0; i < fn->common.num_args; i++) {
  ------------------
  |  Branch (3758:23): [True: 26, False: 13]
  ------------------
 3759|     26|		zend_arg_info *arg_info = &fn->op_array.arg_info[i];
 3760|     26|		if (zend_string_equals(arg_info->name, arg_name)) {
  ------------------
  |  Branch (3760:7): [True: 11, False: 15]
  ------------------
 3761|     11|			return i + 1;
 3762|     11|		}
 3763|     26|	}
 3764|       |
 3765|       |	/* Either an invalid argument name, or collected into a variadic argument. */
 3766|     13|	return (uint32_t) -1;
 3767|     24|}
zend_compile.c:zend_is_passable_by_ref:
 2752|  5.76k|{
 2753|  5.76k|	if (zend_is_variable(ast) || ast->kind == ZEND_AST_ASSIGN_REF) {
  ------------------
  |  Branch (2753:6): [True: 1.63k, False: 4.12k]
  |  Branch (2753:31): [True: 15, False: 4.11k]
  ------------------
 2754|  1.65k|		return true;
 2755|  1.65k|	}
 2756|  4.11k|	if (ast->kind == ZEND_AST_ASSIGN
  ------------------
  |  Branch (2756:6): [True: 133, False: 3.97k]
  ------------------
 2757|    133|	 && UNEXPECTED(ast->child[0]->kind == ZEND_AST_ARRAY)
  ------------------
  |  |  457|  4.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 132]
  |  |  ------------------
  ------------------
 2758|      1|	 && zend_propagate_list_refs(ast->child[0])) {
  ------------------
  |  Branch (2758:6): [True: 0, False: 1]
  ------------------
 2759|      0|		return true;
 2760|      0|	}
 2761|  4.11k|	return false;
 2762|  4.11k|}
zend_compile.c:zend_propagate_list_refs:
 3305|    107|static bool zend_propagate_list_refs(zend_ast *ast) { /* {{{ */
 3306|    107|	const zend_ast_list *list = zend_ast_get_list(ast);
 3307|    107|	bool has_refs = false;
 3308|    107|	uint32_t i;
 3309|       |
 3310|    278|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (3310:14): [True: 171, False: 107]
  ------------------
 3311|    171|		zend_ast *elem_ast = list->child[i];
 3312|       |
 3313|    171|		if (elem_ast) {
  ------------------
  |  Branch (3313:7): [True: 155, False: 16]
  ------------------
 3314|    155|			zend_ast *var_ast = elem_ast->child[0];
 3315|    155|			if (var_ast->kind == ZEND_AST_ARRAY) {
  ------------------
  |  Branch (3315:8): [True: 13, False: 142]
  ------------------
 3316|     13|				elem_ast->attr = zend_propagate_list_refs(var_ast);
 3317|     13|			}
 3318|    155|			has_refs |= elem_ast->attr;
 3319|    155|		}
 3320|    171|	}
 3321|       |
 3322|    107|	return has_refs;
 3323|    107|}
zend_compile.c:zend_do_extended_fcall_begin:
 1961|  6.81k|{
 1962|  6.81k|	zend_op *opline;
 1963|       |
 1964|  6.81k|	if (!(CG(compiler_options) & ZEND_COMPILE_EXTENDED_FCALL)) {
  ------------------
  |  |   35|  6.81k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (!(CG(compiler_options) & ZEND_COMPILE_EXTENDED_FCALL)) {
  ------------------
  |  | 1262|  6.81k|#define ZEND_COMPILE_EXTENDED_FCALL             (1<<1)
  ------------------
  |  Branch (1964:6): [True: 6.81k, False: 0]
  ------------------
 1965|  6.81k|		return;
 1966|  6.81k|	}
 1967|       |
 1968|      0|	opline = get_next_op();
 1969|       |
 1970|      0|	opline->opcode = ZEND_EXT_FCALL_BEGIN;
  ------------------
  |  |  224|      0|#define ZEND_EXT_FCALL_BEGIN                102
  ------------------
 1971|      0|}
zend_compile.c:zend_do_extended_fcall_end:
 1975|  6.81k|{
 1976|  6.81k|	zend_op *opline;
 1977|       |
 1978|  6.81k|	if (!(CG(compiler_options) & ZEND_COMPILE_EXTENDED_FCALL)) {
  ------------------
  |  |   35|  6.81k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (!(CG(compiler_options) & ZEND_COMPILE_EXTENDED_FCALL)) {
  ------------------
  |  | 1262|  6.81k|#define ZEND_COMPILE_EXTENDED_FCALL             (1<<1)
  ------------------
  |  Branch (1978:6): [True: 6.81k, False: 0]
  ------------------
 1979|  6.81k|		return;
 1980|  6.81k|	}
 1981|       |
 1982|      0|	opline = get_next_op();
 1983|       |
 1984|      0|	opline->opcode = ZEND_EXT_FCALL_END;
  ------------------
  |  |  225|      0|#define ZEND_EXT_FCALL_END                  103
  ------------------
 1985|      0|}
zend_compile.c:zend_compile_method_call:
 5485|    561|{
 5486|    561|	zend_ast *obj_ast = ast->child[0];
 5487|    561|	zend_ast *method_ast = ast->child[1];
 5488|    561|	zend_ast *args_ast = ast->child[2];
 5489|       |
 5490|    561|	znode obj_node, method_node;
 5491|    561|	zend_op *opline;
 5492|    561|	const zend_function *fbc = NULL;
 5493|    561|	bool nullsafe = ast->kind == ZEND_AST_NULLSAFE_METHOD_CALL;
 5494|    561|	uint32_t short_circuiting_checkpoint = zend_short_circuiting_checkpoint();
 5495|       |
 5496|    561|	if (is_this_fetch(obj_ast)) {
  ------------------
  |  Branch (5496:6): [True: 4, False: 557]
  ------------------
 5497|      4|		if (this_guaranteed_exists()) {
  ------------------
  |  Branch (5497:7): [True: 2, False: 2]
  ------------------
 5498|      2|			obj_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 5499|      2|		} else {
 5500|      2|			zend_emit_op_tmp(&obj_node, ZEND_FETCH_THIS, NULL, NULL);
  ------------------
  |  |  306|      2|#define ZEND_FETCH_THIS                     184
  ------------------
 5501|      2|		}
 5502|      4|		CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |  368|      4|#define ZEND_ACC_USES_THIS               (1 << 17) /*     |  X  |     |     */
  ------------------
 5503|       |
 5504|       |		/* We will throw if $this doesn't exist, so there's no need to emit a JMP_NULL
 5505|       |		 * check for a nullsafe access. */
 5506|    557|	} else {
 5507|    557|		zend_short_circuiting_mark_inner(obj_ast);
 5508|    557|		zend_compile_expr(&obj_node, obj_ast);
 5509|    557|		if (nullsafe) {
  ------------------
  |  Branch (5509:7): [True: 6, False: 551]
  ------------------
 5510|      6|			zend_emit_jmp_null(&obj_node, type);
 5511|      6|		}
 5512|    557|	}
 5513|       |
 5514|    561|	zend_compile_expr(&method_node, method_ast);
 5515|    561|	opline = zend_emit_op(NULL, ZEND_INIT_METHOD_CALL, &obj_node, NULL);
  ------------------
  |  |  234|    561|#define ZEND_INIT_METHOD_CALL               112
  ------------------
 5516|       |
 5517|    561|	if (method_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    561|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5517:6): [True: 560, False: 1]
  ------------------
 5518|    560|		if (Z_TYPE(method_node.u.constant) != IS_STRING) {
  ------------------
  |  |  668|    560|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(method_node.u.constant) != IS_STRING) {
  ------------------
  |  |  612|    560|#define IS_STRING					6
  ------------------
  |  Branch (5518:7): [True: 1, False: 559]
  ------------------
 5519|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Method name must be a string");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5520|      1|		}
 5521|       |
 5522|    559|		opline->op2_type = IS_CONST;
  ------------------
  |  |  864|    559|#define IS_CONST	(1<<0)
  ------------------
 5523|    559|		opline->op2.constant = zend_add_func_name_literal(
 5524|    559|			Z_STR(method_node.u.constant));
  ------------------
  |  |  981|    559|#define Z_STR(zval)					(zval).value.str
  ------------------
 5525|    559|		opline->result.num = zend_alloc_cache_slots(2);
 5526|    559|	} else {
 5527|      1|		SET_NODE(opline->op2, &method_node);
  ------------------
  |  |   42|      1|#define SET_NODE(target, src) do { \
  |  |   43|      1|		target ## _type = (src)->op_type; \
  |  |   44|      1|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      1|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 1]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|      1|		} else { \
  |  |   47|      1|			target = (src)->u.op; \
  |  |   48|      1|		} \
  |  |   49|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5528|      1|	}
 5529|       |
 5530|       |	/* Check if this calls a known method on $this */
 5531|    560|	if (opline->op1_type == IS_UNUSED && opline->op2_type == IS_CONST &&
  ------------------
  |  |  863|  1.12k|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (opline->op1_type == IS_UNUSED && opline->op2_type == IS_CONST &&
  ------------------
  |  |  864|    562|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5531:6): [True: 2, False: 558]
  |  Branch (5531:39): [True: 2, False: 0]
  ------------------
 5532|      2|			CG(active_class_entry) && zend_is_scope_known()) {
  ------------------
  |  |   35|    562|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5532:30): [True: 2, False: 0]
  ------------------
 5533|      2|		zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op2) + 1);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5534|      2|		fbc = zend_hash_find_ptr(&CG(active_class_entry)->function_table, lcname);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 5535|       |
 5536|       |		/* We only know the exact method that is being called if it is either private or final.
 5537|       |		 * Otherwise an overriding method in a child class may be called. */
 5538|      2|		if (fbc && !(fbc->common.fn_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_FINAL))) {
  ------------------
  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		if (fbc && !(fbc->common.fn_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_FINAL))) {
  ------------------
  |  |  230|      1|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (5538:7): [True: 1, False: 1]
  |  Branch (5538:14): [True: 1, False: 0]
  ------------------
 5539|      1|			fbc = NULL;
 5540|      1|		}
 5541|      2|	}
 5542|       |
 5543|    560|	if (zend_compile_call_common(result, args_ast, fbc, zend_ast_get_lineno(method_ast), type)) {
  ------------------
  |  Branch (5543:6): [True: 7, False: 553]
  ------------------
 5544|      7|		if (short_circuiting_checkpoint != zend_short_circuiting_checkpoint()) {
  ------------------
  |  Branch (5544:7): [True: 2, False: 5]
  ------------------
 5545|      2|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5546|      2|				"Cannot combine nullsafe operator with Closure creation");
 5547|      2|		}
 5548|      7|	}
 5549|    560|}
zend_compile.c:zend_compile_static_call:
 5587|    162|{
 5588|    162|	zend_ast *class_ast = ast->child[0];
 5589|    162|	zend_ast *method_ast = ast->child[1];
 5590|    162|	zend_ast *args_ast = ast->child[2];
 5591|       |
 5592|    162|	znode class_node, method_node;
 5593|    162|	zend_op *opline;
 5594|    162|	const zend_function *fbc = NULL;
 5595|       |
 5596|    162|	if (zend_compile_parent_property_hook_call(result, ast, type)) {
  ------------------
  |  Branch (5596:6): [True: 7, False: 155]
  ------------------
 5597|      7|		return;
 5598|      7|	}
 5599|       |
 5600|    155|	zend_short_circuiting_mark_inner(class_ast);
 5601|    155|	zend_compile_class_ref(&class_node, class_ast, ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    155|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 5602|       |
 5603|    155|	zend_compile_expr(&method_node, method_ast);
 5604|       |
 5605|    155|	if (method_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    155|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5605:6): [True: 128, False: 27]
  ------------------
 5606|    128|		zval *name = &method_node.u.constant;
 5607|    128|		if (Z_TYPE_P(name) != IS_STRING) {
  ------------------
  |  |  669|    128|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    128|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(name) != IS_STRING) {
  ------------------
  |  |  612|    128|#define IS_STRING					6
  ------------------
  |  Branch (5607:7): [True: 1, False: 127]
  ------------------
 5608|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Method name must be a string");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5609|      1|		}
 5610|    127|		if (zend_is_constructor(Z_STR_P(name))) {
  ------------------
  |  |  982|    127|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    127|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (5610:7): [True: 5, False: 122]
  ------------------
 5611|      5|			zval_ptr_dtor(name);
 5612|      5|			method_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 5613|      5|		}
 5614|    127|	}
 5615|       |
 5616|    154|	opline = get_next_op();
 5617|    154|	opline->opcode = ZEND_INIT_STATIC_METHOD_CALL;
  ------------------
  |  |  235|    154|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
 5618|       |
 5619|    154|	zend_set_class_name_op1(opline, &class_node);
 5620|       |
 5621|    154|	if (method_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    154|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5621:6): [True: 122, False: 32]
  ------------------
 5622|    122|		opline->op2_type = IS_CONST;
  ------------------
  |  |  864|    122|#define IS_CONST	(1<<0)
  ------------------
 5623|    122|		opline->op2.constant = zend_add_func_name_literal(
 5624|    122|			Z_STR(method_node.u.constant));
  ------------------
  |  |  981|    122|#define Z_STR(zval)					(zval).value.str
  ------------------
 5625|    122|		opline->result.num = zend_alloc_cache_slots(2);
 5626|    122|	} else {
 5627|     32|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|     32|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5627:7): [True: 14, False: 18]
  ------------------
 5628|     14|			opline->result.num = zend_alloc_cache_slot();
 5629|     14|		}
 5630|     32|		SET_NODE(opline->op2, &method_node);
  ------------------
  |  |   42|     32|#define SET_NODE(target, src) do { \
  |  |   43|     32|		target ## _type = (src)->op_type; \
  |  |   44|     32|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     32|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 32]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     32|		} else { \
  |  |   47|     32|			target = (src)->u.op; \
  |  |   48|     32|		} \
  |  |   49|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
 5631|     32|	}
 5632|       |
 5633|       |	/* Check if we already know which method we're calling */
 5634|    154|	if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|    154|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5634:6): [True: 122, False: 32]
  ------------------
 5635|    122|		zend_class_entry *ce = NULL;
 5636|    122|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|    122|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5636:7): [True: 112, False: 10]
  ------------------
 5637|    112|			zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op1) + 1);
  ------------------
  |  |  982|    112|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    112|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5638|    112|			ce = zend_hash_find_ptr(CG(class_table), lcname);
  ------------------
  |  |   35|    112|# define CG(v) (compiler_globals.v)
  ------------------
 5639|    112|			if (ce) {
  ------------------
  |  Branch (5639:8): [True: 90, False: 22]
  ------------------
 5640|     90|				if (zend_compile_ignore_class(ce, CG(active_op_array)->filename)) {
  ------------------
  |  |   35|     90|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5640:9): [True: 0, False: 90]
  ------------------
 5641|      0|					ce = NULL;
 5642|      0|				}
 5643|     90|			} else if (CG(active_class_entry)
  ------------------
  |  |   35|     44|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 22]
  |  |  ------------------
  ------------------
 5644|      0|					&& zend_string_equals_ci(CG(active_class_entry)->name, lcname)) {
  ------------------
  |  |  401|      0|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 0]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5645|      0|				ce = CG(active_class_entry);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 5646|      0|			}
 5647|    112|		} else if (opline->op1_type == IS_UNUSED
  ------------------
  |  |  863|     20|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (5647:14): [True: 0, False: 10]
  ------------------
 5648|      0|				&& (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              				&& (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF
  ------------------
  |  | 1043|     10|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (5648:8): [True: 0, False: 0]
  ------------------
 5649|      0|				&& zend_is_scope_known()) {
  ------------------
  |  Branch (5649:8): [True: 0, False: 0]
  ------------------
 5650|      0|			ce = CG(active_class_entry);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 5651|      0|		}
 5652|    122|		if (ce) {
  ------------------
  |  Branch (5652:7): [True: 90, False: 32]
  ------------------
 5653|     90|			zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op2) + 1);
  ------------------
  |  |  982|     90|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     90|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5654|     90|			fbc = zend_get_compatible_func_or_null(ce, lcname);
 5655|     90|		}
 5656|    122|	}
 5657|       |
 5658|    154|	zend_compile_call_common(result, args_ast, fbc, zend_ast_get_lineno(method_ast), type);
 5659|    154|}
zend_compile.c:zend_compile_parent_property_hook_call:
 5345|    162|{
 5346|    162|	ZEND_ASSERT(ast->kind == ZEND_AST_STATIC_CALL);
  ------------------
  |  |  112|    162|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5346:2): [True: 0, False: 162]
  |  Branch (5346:2): [True: 162, False: 0]
  ------------------
 5347|       |
 5348|    162|	const zend_ast *class_ast = ast->child[0];
 5349|    162|	zend_ast *method_ast = ast->child[1];
 5350|       |
 5351|       |	/* Recognize parent::$prop::get() pattern. */
 5352|    162|	if (class_ast->kind != ZEND_AST_STATIC_PROP
  ------------------
  |  Branch (5352:6): [True: 145, False: 17]
  ------------------
 5353|     17|	 || (class_ast->attr & ZEND_PARENTHESIZED_STATIC_PROP)
  ------------------
  |  | 1217|     17|#define ZEND_PARENTHESIZED_STATIC_PROP 1
  ------------------
  |  Branch (5353:6): [True: 0, False: 17]
  ------------------
 5354|     17|	 || class_ast->child[0]->kind != ZEND_AST_ZVAL
  ------------------
  |  Branch (5354:6): [True: 3, False: 14]
  ------------------
 5355|     14|	 || Z_TYPE_P(zend_ast_get_zval(class_ast->child[0])) != IS_STRING
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	 || Z_TYPE_P(zend_ast_get_zval(class_ast->child[0])) != IS_STRING
  ------------------
  |  |  612|    176|#define IS_STRING					6
  ------------------
  |  Branch (5355:6): [True: 0, False: 14]
  ------------------
 5356|     14|	 || zend_get_class_fetch_type(zend_ast_get_str(class_ast->child[0])) != ZEND_FETCH_CLASS_PARENT
  ------------------
  |  | 1044|    176|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (5356:6): [True: 1, False: 13]
  ------------------
 5357|     13|	 || class_ast->child[1]->kind != ZEND_AST_ZVAL
  ------------------
  |  Branch (5357:6): [True: 0, False: 13]
  ------------------
 5358|     13|	 || method_ast->kind != ZEND_AST_ZVAL
  ------------------
  |  Branch (5358:6): [True: 0, False: 13]
  ------------------
 5359|     13|	 || Z_TYPE_P(zend_ast_get_zval(method_ast)) != IS_STRING
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	 || Z_TYPE_P(zend_ast_get_zval(method_ast)) != IS_STRING
  ------------------
  |  |  612|    175|#define IS_STRING					6
  ------------------
  |  Branch (5359:6): [True: 0, False: 13]
  ------------------
 5360|     13|	 || (!zend_string_equals_literal_ci(zend_ast_get_str(method_ast), "get")
  ------------------
  |  |  404|     26|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 13, False: 0]
  |  |  |  Branch (404:40): [True: 10, False: 3]
  |  |  ------------------
  ------------------
 5361|    150|	  && !zend_string_equals_literal_ci(zend_ast_get_str(method_ast), "set"))) {
  ------------------
  |  |  404|      3|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 3, False: 0]
  |  |  |  Branch (404:40): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 5362|    150|		return false;
 5363|    150|	}
 5364|       |
 5365|     12|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
 5366|     12|	if (!ce) {
  ------------------
  |  Branch (5366:6): [True: 1, False: 11]
  ------------------
 5367|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use \"parent\" when no class scope is active");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5368|      1|	}
 5369|       |
 5370|     11|	zend_ast *args_ast = ast->child[2];
 5371|     11|	if (args_ast->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (5371:6): [True: 0, False: 11]
  ------------------
 5372|      0|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot create Closure for parent property hook call");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5373|      0|	}
 5374|       |
 5375|     11|	zval *property_hook_name_zv = zend_ast_get_zval(class_ast->child[1]);
 5376|     11|	zend_string *property_name = zval_get_string(property_hook_name_zv);
 5377|     11|	zend_string *hook_name = zend_ast_get_str(method_ast);
 5378|     11|	zend_property_hook_kind hook_kind = zend_get_property_hook_kind_from_name(hook_name);
 5379|     11|	ZEND_ASSERT(hook_kind != (uint32_t)-1);
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5379:2): [True: 0, False: 11]
  |  Branch (5379:2): [True: 11, False: 0]
  ------------------
 5380|       |
 5381|     11|	const zend_string *prop_info_name = CG(context).active_property_info_name;
  ------------------
  |  |   35|     11|# define CG(v) (compiler_globals.v)
  ------------------
 5382|     11|	if (!prop_info_name) {
  ------------------
  |  Branch (5382:6): [True: 1, False: 10]
  ------------------
 5383|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Must not use parent::$%s::%s() outside a property hook",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5384|      1|			ZSTR_VAL(property_name), ZSTR_VAL(hook_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(property_name), ZSTR_VAL(hook_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5385|      1|	}
 5386|       |
 5387|     10|	const char *unmangled_prop_name = zend_get_unmangled_property_name(prop_info_name);
 5388|     10|	if (!zend_string_equals_cstr(property_name, unmangled_prop_name, strlen(unmangled_prop_name))) {
  ------------------
  |  Branch (5388:6): [True: 2, False: 8]
  ------------------
 5389|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Must not use parent::$%s::%s() in a different property ($%s)",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5390|      2|			ZSTR_VAL(property_name), ZSTR_VAL(hook_name), unmangled_prop_name);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(property_name), ZSTR_VAL(hook_name), unmangled_prop_name);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5391|      2|	}
 5392|      8|	if (hook_kind != CG(context).active_property_hook_kind) {
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5392:6): [True: 1, False: 7]
  ------------------
 5393|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Must not use parent::$%s::%s() in a different property hook (%s)",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 5394|      1|			ZSTR_VAL(property_name), ZSTR_VAL(hook_name), zend_get_cstring_from_property_hook_kind(CG(context).active_property_hook_kind));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(property_name), ZSTR_VAL(hook_name), zend_get_cstring_from_property_hook_kind(CG(context).active_property_hook_kind));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(property_name), ZSTR_VAL(hook_name), zend_get_cstring_from_property_hook_kind(CG(context).active_property_hook_kind));
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5395|      1|	}
 5396|       |
 5397|      7|	zend_op *opline = get_next_op();
 5398|      7|	opline->opcode = ZEND_INIT_PARENT_PROPERTY_HOOK_CALL;
  ------------------
  |  |  331|      7|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
 5399|      7|	opline->op1_type = IS_CONST;
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
 5400|      7|	opline->op1.constant = zend_add_literal_string(&property_name);
 5401|      7|	opline->op2.num = hook_kind;
 5402|       |
 5403|      7|	zend_compile_call_common(result, args_ast, NULL, zend_ast_get_lineno(method_ast), BP_VAR_R);
  ------------------
  |  | 1074|      7|#define BP_VAR_R			0
  ------------------
 5404|       |
 5405|       |	return true;
 5406|      8|}
zend_compile.c:zend_get_cstring_from_property_hook_kind:
 5324|      1|static const char *zend_get_cstring_from_property_hook_kind(zend_property_hook_kind kind) {
 5325|      1|	switch (kind) {
 5326|      0|		case ZEND_PROPERTY_HOOK_GET:
  ------------------
  |  Branch (5326:3): [True: 0, False: 1]
  ------------------
 5327|      0|			return "get";
 5328|      1|		case ZEND_PROPERTY_HOOK_SET:
  ------------------
  |  Branch (5328:3): [True: 1, False: 0]
  ------------------
 5329|      1|			return "set";
 5330|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5330:3): [True: 0, False: 1]
  |  Branch (5330:12): [Folded, False: 0]
  |  Branch (5330:12): [Folded, False: 0]
  ------------------
 5331|      1|	}
 5332|      1|}
zend_compile.c:zend_compile_class_ref:
 2856|  2.08k|{
 2857|  2.08k|	uint32_t fetch_type;
 2858|       |
 2859|  2.08k|	if (name_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (2859:6): [True: 101, False: 1.98k]
  ------------------
 2860|    101|		znode name_node;
 2861|       |
 2862|    101|		zend_compile_expr(&name_node, name_ast);
 2863|       |
 2864|    101|		if (name_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    101|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2864:7): [True: 1, False: 100]
  ------------------
 2865|      1|			zend_string *name;
 2866|       |
 2867|      1|			if (Z_TYPE(name_node.u.constant) != IS_STRING) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(name_node.u.constant) != IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (2867:8): [True: 1, False: 0]
  ------------------
 2868|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Illegal class name");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2869|      1|			}
 2870|       |
 2871|      0|			name = Z_STR(name_node.u.constant);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 2872|      0|			fetch_type = zend_get_class_fetch_type(name);
 2873|       |
 2874|      0|			if (fetch_type == ZEND_FETCH_CLASS_DEFAULT) {
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (2874:8): [True: 0, False: 0]
  ------------------
 2875|      0|				result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 2876|      0|				ZVAL_STR(&result->u.constant, zend_resolve_class_name(name, ZEND_NAME_FQ));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2877|      0|			} else {
 2878|      0|				zend_ensure_valid_class_fetch_type(fetch_type);
 2879|      0|				result->op_type = IS_UNUSED;
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 2880|      0|				result->u.op.num = fetch_type | fetch_flags;
 2881|      0|			}
 2882|       |
 2883|      0|			zend_string_release_ex(name, 0);
 2884|    100|		} else {
 2885|    100|			zend_op *opline = zend_emit_op(result, ZEND_FETCH_CLASS, NULL, &name_node);
  ------------------
  |  |  231|    100|#define ZEND_FETCH_CLASS                    109
  ------------------
 2886|    100|			opline->op1.num = ZEND_FETCH_CLASS_DEFAULT | fetch_flags;
  ------------------
  |  | 1042|    100|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
 2887|    100|		}
 2888|    100|		return;
 2889|    101|	}
 2890|       |
 2891|       |	/* Fully qualified names are always default refs */
 2892|  1.98k|	if (name_ast->attr == ZEND_NAME_FQ) {
  ------------------
  |  | 1060|  1.98k|#define ZEND_NAME_FQ       0
  ------------------
  |  Branch (2892:6): [True: 42, False: 1.94k]
  ------------------
 2893|     42|		result->op_type = IS_CONST;
  ------------------
  |  |  864|     42|#define IS_CONST	(1<<0)
  ------------------
 2894|     42|		ZVAL_STR(&result->u.constant, zend_resolve_class_name_ast(name_ast));
  ------------------
  |  | 1088|     42|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     42|		zval *__z = (z);						\
  |  | 1090|     42|		zend_string *__s = (s);					\
  |  | 1091|     42|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     42|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     42|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     42|		/* interned strings support */			\
  |  | 1093|     42|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     42|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     42|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 6, False: 36]
  |  |  ------------------
  |  | 1094|     42|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      6|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     42|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     78|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     36|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     36|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     36|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     42|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 42]
  |  |  ------------------
  ------------------
 2895|     42|		return;
 2896|     42|	}
 2897|       |
 2898|  1.94k|	fetch_type = zend_get_class_fetch_type(zend_ast_get_str(name_ast));
 2899|  1.94k|	if (ZEND_FETCH_CLASS_DEFAULT == fetch_type) {
  ------------------
  |  | 1042|  1.94k|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (2899:6): [True: 1.91k, False: 34]
  ------------------
 2900|  1.91k|		result->op_type = IS_CONST;
  ------------------
  |  |  864|  1.91k|#define IS_CONST	(1<<0)
  ------------------
 2901|  1.91k|		ZVAL_STR(&result->u.constant, zend_resolve_class_name_ast(name_ast));
  ------------------
  |  | 1088|  1.91k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  1.91k|		zval *__z = (z);						\
  |  | 1090|  1.91k|		zend_string *__s = (s);					\
  |  | 1091|  1.91k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  1.91k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  1.91k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  1.91k|		/* interned strings support */			\
  |  | 1093|  1.91k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  1.91k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.91k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 209, False: 1.70k]
  |  |  ------------------
  |  | 1094|  1.91k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    209|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    209|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  1.91k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  3.61k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.70k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.70k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.70k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  1.91k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1.91k]
  |  |  ------------------
  ------------------
 2902|  1.91k|	} else {
 2903|     34|		zend_ensure_valid_class_fetch_type(fetch_type);
 2904|     34|		result->op_type = IS_UNUSED;
  ------------------
  |  |  863|     34|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 2905|     34|		result->u.op.num = fetch_type | fetch_flags;
 2906|     34|	}
 2907|  1.94k|}
zend_compile.c:zend_set_class_name_op1:
 2844|  1.97k|{
 2845|  1.97k|	if (class_node->op_type == IS_CONST) {
  ------------------
  |  |  864|  1.97k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (2845:6): [True: 1.86k, False: 109]
  ------------------
 2846|  1.86k|		opline->op1_type = IS_CONST;
  ------------------
  |  |  864|  1.86k|#define IS_CONST	(1<<0)
  ------------------
 2847|  1.86k|		opline->op1.constant = zend_add_class_name_literal(
 2848|  1.86k|			Z_STR(class_node->u.constant));
  ------------------
  |  |  981|  1.86k|#define Z_STR(zval)					(zval).value.str
  ------------------
 2849|  1.86k|	} else {
 2850|    109|		SET_NODE(opline->op1, class_node);
  ------------------
  |  |   42|    109|#define SET_NODE(target, src) do { \
  |  |   43|    109|		target ## _type = (src)->op_type; \
  |  |   44|    109|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    109|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 109]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    109|		} else { \
  |  |   47|    109|			target = (src)->u.op; \
  |  |   48|    109|		} \
  |  |   49|    109|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 109]
  |  |  ------------------
  ------------------
 2851|    109|	}
 2852|  1.97k|}
zend_compile.c:zend_get_compatible_func_or_null:
 5575|     90|{
 5576|     90|	const zend_function *fbc = zend_hash_find_ptr(&ce->function_table, lcname);
 5577|       |
 5578|     90|	if (!fbc || is_func_accessible(fbc)) {
  ------------------
  |  Branch (5578:6): [True: 8, False: 82]
  |  Branch (5578:14): [True: 82, False: 0]
  ------------------
 5579|     90|		return fbc;
 5580|     90|	}
 5581|       |
 5582|      0|	return NULL;
 5583|     90|}
zend_compile.c:is_func_accessible:
 5559|  1.09k|{
 5560|  1.09k|	if ((fbc->common.fn_flags & ZEND_ACC_PUBLIC) || fbc->common.scope == CG(active_class_entry)) {
  ------------------
  |  |  219|  1.09k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	if ((fbc->common.fn_flags & ZEND_ACC_PUBLIC) || fbc->common.scope == CG(active_class_entry)) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5560:6): [True: 1.09k, False: 0]
  |  Branch (5560:50): [True: 0, False: 0]
  ------------------
 5561|  1.09k|		return true;
 5562|  1.09k|	}
 5563|       |
 5564|      0|	if (!(fbc->common.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (5564:6): [True: 0, False: 0]
  ------------------
 5565|      0|		&& (fbc->common.scope->ce_flags & ZEND_ACC_LINKED)
  ------------------
  |  |  287|      0|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (5565:6): [True: 0, False: 0]
  ------------------
 5566|      0|		&& (!CG(active_class_entry) || (CG(active_class_entry)->ce_flags & ZEND_ACC_LINKED))
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		&& (!CG(active_class_entry) || (CG(active_class_entry)->ce_flags & ZEND_ACC_LINKED))
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		&& (!CG(active_class_entry) || (CG(active_class_entry)->ce_flags & ZEND_ACC_LINKED))
  ------------------
  |  |  287|      0|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (5566:7): [True: 0, False: 0]
  |  Branch (5566:34): [True: 0, False: 0]
  ------------------
 5567|      0|		&& zend_check_protected(zend_get_function_root_class(fbc), CG(active_class_entry))) {
  ------------------
  |  |  243|      0|	((fbc)->common.prototype ? (fbc)->common.prototype->common.scope : (fbc)->common.scope)
  |  |  ------------------
  |  |  |  Branch (243:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		&& zend_check_protected(zend_get_function_root_class(fbc), CG(active_class_entry))) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5567:6): [True: 0, False: 0]
  ------------------
 5568|      0|		return true;
 5569|      0|	}
 5570|       |
 5571|      0|	return false;
 5572|      0|}
zend_compile.c:zend_compile_pipe:
 6774|     23|{
 6775|     23|	zend_ast *operand_ast = ast->child[0];
 6776|     23|	zend_ast *callable_ast = ast->child[1];
 6777|       |
 6778|     23|	if (callable_ast->kind == ZEND_AST_ARROW_FUNC && !(callable_ast->attr & ZEND_PARENTHESIZED_ARROW_FUNC)) {
  ------------------
  |  | 1220|      6|#define ZEND_PARENTHESIZED_ARROW_FUNC 1
  ------------------
  |  Branch (6778:6): [True: 6, False: 17]
  |  Branch (6778:51): [True: 1, False: 5]
  ------------------
 6779|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Arrow functions on the right hand side of |> must be parenthesized");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6780|      1|	}
 6781|       |
 6782|       |	/* Compile the left hand side down to a value first. */
 6783|     22|	znode operand_result;
 6784|     22|	zend_compile_expr(&operand_result, operand_ast);
 6785|       |
 6786|       |	/* Wrap simple values in a ZEND_QM_ASSIGN opcode to ensure references
 6787|       |	 * always fail. They will already fail in complex cases like arrays,
 6788|       |	 * so those don't need a wrapper. */
 6789|     22|	znode wrapped_operand_result;
 6790|     22|	if (operand_result.op_type & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (operand_result.op_type & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|     22|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (6790:6): [True: 3, False: 19]
  ------------------
 6791|      3|		zend_emit_op_tmp(&wrapped_operand_result, ZEND_QM_ASSIGN, &operand_result, NULL);
  ------------------
  |  |  155|      3|#define ZEND_QM_ASSIGN                       31
  ------------------
 6792|     19|	} else {
 6793|     19|		wrapped_operand_result = operand_result;
 6794|     19|	}
 6795|       |
 6796|       |	/* Turn the operand into a function parameter list. */
 6797|     22|	zend_ast *arg_list_ast = zend_ast_create_list(1, ZEND_AST_ARG_LIST, zend_ast_create_znode(&wrapped_operand_result));
  ------------------
  |  |  320|     22|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     22|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     22|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6798|       |
 6799|     22|	zend_ast *fcall_ast;
 6800|     22|	znode callable_result;
 6801|       |
 6802|       |	/* Turn $foo |> bar(...) into bar($foo). */
 6803|     22|	if (callable_ast->kind == ZEND_AST_CALL
  ------------------
  |  Branch (6803:6): [True: 8, False: 14]
  ------------------
 6804|      8|		&& callable_ast->child[1]->kind == ZEND_AST_CALLABLE_CONVERT
  ------------------
  |  Branch (6804:6): [True: 7, False: 1]
  ------------------
 6805|      7|		&& zend_is_pipe_optimizable_callable_name(callable_ast->child[0])) {
  ------------------
  |  Branch (6805:6): [True: 6, False: 1]
  ------------------
 6806|      6|		fcall_ast = zend_ast_create(ZEND_AST_CALL,
  ------------------
  |  |  316|      6|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6807|      6|				callable_ast->child[0], arg_list_ast);
 6808|       |	/* Turn $foo |> bar::baz(...) into bar::baz($foo). */
 6809|     16|	} else if (callable_ast->kind == ZEND_AST_STATIC_CALL
  ------------------
  |  Branch (6809:13): [True: 0, False: 16]
  ------------------
 6810|      0|			&& callable_ast->child[2]->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (6810:7): [True: 0, False: 0]
  ------------------
 6811|      0|		fcall_ast = zend_ast_create(ZEND_AST_STATIC_CALL,
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6812|      0|			callable_ast->child[0], callable_ast->child[1], arg_list_ast);
 6813|       |	/* Turn $foo |> $bar->baz(...) into $bar->baz($foo). */
 6814|     16|	} else if (callable_ast->kind == ZEND_AST_METHOD_CALL
  ------------------
  |  Branch (6814:13): [True: 0, False: 16]
  ------------------
 6815|      0|			&& callable_ast->child[2]->kind == ZEND_AST_CALLABLE_CONVERT) {
  ------------------
  |  Branch (6815:7): [True: 0, False: 0]
  ------------------
 6816|      0|		fcall_ast = zend_ast_create(ZEND_AST_METHOD_CALL,
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6817|      0|			callable_ast->child[0], callable_ast->child[1], arg_list_ast);
 6818|       |	/* Turn $foo |> $expr into ($expr)($foo) */
 6819|     16|	} else {
 6820|     16|		zend_compile_expr(&callable_result, callable_ast);
 6821|     16|		callable_ast = zend_ast_create_znode(&callable_result);
 6822|     16|		fcall_ast = zend_ast_create(ZEND_AST_CALL,
  ------------------
  |  |  316|     16|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     16|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     16|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6823|     16|			callable_ast, arg_list_ast);
 6824|     16|	}
 6825|       |
 6826|     22|	zend_do_extended_stmt(&operand_result);
 6827|       |
 6828|       |	zend_compile_var(result, fcall_ast, type, /* by_ref */ false);
 6829|     22|}
zend_compile.c:zend_is_pipe_optimizable_callable_name:
 6761|      7|{
 6762|      7|	if (ast->kind == ZEND_AST_ZVAL && Z_TYPE_P(zend_ast_get_zval(ast)) == IS_STRING) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (ast->kind == ZEND_AST_ZVAL && Z_TYPE_P(zend_ast_get_zval(ast)) == IS_STRING) {
  ------------------
  |  |  612|      7|#define IS_STRING					6
  ------------------
  |  Branch (6762:6): [True: 7, False: 0]
  |  Branch (6762:36): [True: 7, False: 0]
  ------------------
 6763|       |		/* Assert compilation adds a message operand, but this is incompatible with the
 6764|       |		 * pipe optimization that uses a temporary znode for the reference elimination.
 6765|       |		 * Therefore, disable the optimization for assert.
 6766|       |		 * Note that "assert" as a name is always treated as fully qualified. */
 6767|      7|		return !zend_string_equals_literal_ci(zend_ast_get_str(ast), "assert");
  ------------------
  |  |  404|      7|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 2, False: 5]
  |  |  |  Branch (404:40): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 6768|      7|	}
 6769|       |
 6770|      0|	return true;
 6771|      7|}
zend_compile.c:zend_short_circuiting_commit:
 2563|  41.3k|{
 2564|  41.3k|	bool is_short_circuited = zend_ast_kind_is_short_circuited(ast->kind)
  ------------------
  |  Branch (2564:28): [True: 2.28k, False: 39.0k]
  ------------------
 2565|  39.0k|		|| ast->kind == ZEND_AST_ISSET || ast->kind == ZEND_AST_EMPTY;
  ------------------
  |  Branch (2565:6): [True: 59, False: 39.0k]
  |  Branch (2565:37): [True: 3, False: 39.0k]
  ------------------
 2566|  41.3k|	if (!is_short_circuited) {
  ------------------
  |  Branch (2566:6): [True: 39.0k, False: 2.34k]
  ------------------
 2567|  39.0k|		ZEND_ASSERT(zend_stack_count(&CG(short_circuiting_opnums)) == checkpoint
  ------------------
  |  |  112|  39.0k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2567:3): [True: 0, False: 39.0k]
  |  Branch (2567:3): [True: 0, False: 0]
  |  Branch (2567:3): [True: 39.0k, False: 0]
  |  Branch (2567:3): [True: 39.0k, False: 0]
  ------------------
 2568|  39.0k|			&& "Short circuiting stack should be empty");
 2569|  39.0k|		return;
 2570|  39.0k|	}
 2571|       |
 2572|  2.34k|	if (ast->attr & ZEND_SHORT_CIRCUITING_INNER) {
  ------------------
  |  | 2549|  2.34k|#define ZEND_SHORT_CIRCUITING_INNER 0x8000
  ------------------
  |  Branch (2572:6): [True: 99, False: 2.24k]
  ------------------
 2573|       |		/* Outer-most node will commit. */
 2574|     99|		return;
 2575|     99|	}
 2576|       |
 2577|  2.31k|	while (zend_stack_count(&CG(short_circuiting_opnums)) != checkpoint) {
  ------------------
  |  |   35|  2.31k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (2577:9): [True: 66, False: 2.24k]
  ------------------
 2578|     66|		uint32_t opnum = *(uint32_t *) zend_stack_top(&CG(short_circuiting_opnums));
  ------------------
  |  |   35|     66|# define CG(v) (compiler_globals.v)
  ------------------
 2579|     66|		zend_op *opline = &CG(active_op_array)->opcodes[opnum];
  ------------------
  |  |   35|     66|# define CG(v) (compiler_globals.v)
  ------------------
 2580|     66|		opline->op2.opline_num = get_next_op_number();
 2581|     66|		SET_NODE(opline->result, result);
  ------------------
  |  |   42|     66|#define SET_NODE(target, src) do { \
  |  |   43|     66|		target ## _type = (src)->op_type; \
  |  |   44|     66|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     66|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 66]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     66|		} else { \
  |  |   47|     66|			target = (src)->u.op; \
  |  |   48|     66|		} \
  |  |   49|     66|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 66]
  |  |  ------------------
  ------------------
 2582|     66|		opline->extended_value |=
 2583|     66|			ast->kind == ZEND_AST_ISSET ? ZEND_SHORT_CIRCUITING_CHAIN_ISSET :
  ------------------
  |  |  450|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1
  ------------------
  |  Branch (2583:4): [True: 0, False: 66]
  ------------------
 2584|     66|			ast->kind == ZEND_AST_EMPTY ? ZEND_SHORT_CIRCUITING_CHAIN_EMPTY :
  ------------------
  |  |  451|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_EMPTY 2
  ------------------
  |  Branch (2584:4): [True: 0, False: 66]
  ------------------
 2585|     66|			                              ZEND_SHORT_CIRCUITING_CHAIN_EXPR;
  ------------------
  |  |  449|    132|#define ZEND_SHORT_CIRCUITING_CHAIN_EXPR 0
  ------------------
 2586|     66|		zend_stack_del_top(&CG(short_circuiting_opnums));
  ------------------
  |  |   35|     66|# define CG(v) (compiler_globals.v)
  ------------------
 2587|     66|	}
 2588|  2.24k|}
zend_compile.c:zend_separate_if_call_and_write:
 3059|  1.58k|{
 3060|  1.58k|	if (type != BP_VAR_R
  ------------------
  |  | 1074|  3.17k|#define BP_VAR_R			0
  ------------------
  |  Branch (3060:6): [True: 1.08k, False: 502]
  ------------------
 3061|  1.08k|	 && type != BP_VAR_IS
  ------------------
  |  | 1077|  2.67k|#define BP_VAR_IS			3
  ------------------
  |  Branch (3061:6): [True: 1.00k, False: 79]
  ------------------
 3062|       |	 /* Whether a FUNC_ARG is R may only be determined at runtime. */
 3063|  1.00k|	 && type != BP_VAR_FUNC_ARG
  ------------------
  |  | 1078|  2.59k|#define BP_VAR_FUNC_ARG		4
  ------------------
  |  Branch (3063:6): [True: 979, False: 27]
  ------------------
 3064|    979|	 && zend_is_call(ast)) {
  ------------------
  |  Branch (3064:6): [True: 26, False: 953]
  ------------------
 3065|     26|		if (node->op_type == IS_VAR) {
  ------------------
  |  |  866|     26|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (3065:7): [True: 25, False: 1]
  ------------------
 3066|     25|			zend_op *opline = zend_emit_op(NULL, ZEND_SEPARATE, node, NULL);
  ------------------
  |  |  278|     25|#define ZEND_SEPARATE                       156
  ------------------
 3067|     25|			opline->result_type = IS_VAR;
  ------------------
  |  |  866|     25|#define IS_VAR		(1<<2)
  ------------------
 3068|     25|			opline->result.var = opline->op1.var;
 3069|     25|		} else {
 3070|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use result of built-in function in write context");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3071|      1|		}
 3072|     26|	}
 3073|  1.58k|}
zend_compile.c:zend_handle_numeric_dim:
 2825|    719|{
 2826|    719|	if (Z_TYPE(dim_node->u.constant) == IS_STRING) {
  ------------------
  |  |  668|    719|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(dim_node->u.constant) == IS_STRING) {
  ------------------
  |  |  612|    719|#define IS_STRING					6
  ------------------
  |  Branch (2826:6): [True: 118, False: 601]
  ------------------
 2827|    118|		zend_ulong index;
 2828|       |
 2829|    118|		if (ZEND_HANDLE_NUMERIC(Z_STR(dim_node->u.constant), index)) {
  ------------------
  |  |  424|    118|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|    118|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 3, False: 115]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2830|       |			/* For numeric indexes we also keep the original value to use by ArrayAccess
 2831|       |			 * See bug #63217
 2832|       |			 */
 2833|      3|			int c = zend_add_literal(&dim_node->u.constant);
 2834|      3|			ZEND_ASSERT(opline->op2.constant + 1 == c);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2834:4): [True: 0, False: 3]
  |  Branch (2834:4): [True: 3, False: 0]
  ------------------
 2835|      3|			ZVAL_LONG(CT_CONSTANT(opline->op2), index);
  ------------------
  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      3|		zval *__z = (z);				\
  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2836|      3|			Z_EXTRA_P(CT_CONSTANT(opline->op2)) = ZEND_EXTRA_VALUE;
  ------------------
  |  |  705|      3|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      3|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			Z_EXTRA_P(CT_CONSTANT(opline->op2)) = ZEND_EXTRA_VALUE;
  ------------------
  |  |  873|      3|#define ZEND_EXTRA_VALUE 1
  ------------------
 2837|      3|			return;
 2838|      3|		}
 2839|    118|	}
 2840|    719|}
zend_compile.c:zend_delayed_compile_end:
 2486|  4.67k|{
 2487|  4.67k|	zend_op *opline = NULL, *oplines = zend_stack_base(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|  4.67k|# define CG(v) (compiler_globals.v)
  ------------------
 2488|  4.67k|	uint32_t i, count = zend_stack_count(&CG(delayed_oplines_stack));
  ------------------
  |  |   35|  4.67k|# define CG(v) (compiler_globals.v)
  ------------------
 2489|       |
 2490|  4.67k|	ZEND_ASSERT(count >= offset);
  ------------------
  |  |  112|  4.67k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2490:2): [True: 0, False: 4.67k]
  |  Branch (2490:2): [True: 4.67k, False: 0]
  ------------------
 2491|  6.54k|	for (i = offset; i < count; ++i) {
  ------------------
  |  Branch (2491:19): [True: 1.87k, False: 4.67k]
  ------------------
 2492|  1.87k|		if (EXPECTED(oplines[i].opcode != ZEND_NOP)) {
  ------------------
  |  |  456|  1.87k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.84k, False: 30]
  |  |  ------------------
  ------------------
 2493|  1.84k|			opline = get_next_op();
 2494|  1.84k|			memcpy(opline, &oplines[i], sizeof(zend_op));
 2495|  1.84k|		} else {
 2496|     30|			opline = CG(active_op_array)->opcodes + oplines[i].extended_value;
  ------------------
  |  |   35|     30|# define CG(v) (compiler_globals.v)
  ------------------
 2497|     30|		}
 2498|  1.87k|	}
 2499|       |
 2500|  4.67k|	CG(delayed_oplines_stack).top = offset;
  ------------------
  |  |   35|  4.67k|# define CG(v) (compiler_globals.v)
  ------------------
 2501|  4.67k|	return opline;
 2502|  4.67k|}
zend_compile.c:zend_compile_prop:
 3236|    344|{
 3237|    344|	uint32_t offset = zend_delayed_compile_begin();
 3238|    344|	zend_op *opline = zend_delayed_compile_prop(result, ast, type);
 3239|    344|	if (by_ref) { /* shared with cache_slot */
  ------------------
  |  Branch (3239:6): [True: 62, False: 282]
  ------------------
 3240|     62|		opline->extended_value |= ZEND_FETCH_REF;
  ------------------
  |  | 1097|     62|#define ZEND_FETCH_REF			1
  ------------------
 3241|     62|	}
 3242|    344|	return zend_delayed_compile_end(offset);
 3243|    344|}
zend_compile.c:zend_compile_static_prop:
 3247|    124|{
 3248|    124|	zend_ast *class_ast = ast->child[0];
 3249|    124|	zend_ast *prop_ast = ast->child[1];
 3250|       |
 3251|    124|	znode class_node, prop_node;
 3252|    124|	zend_op *opline;
 3253|       |
 3254|    124|	zend_short_circuiting_mark_inner(class_ast);
 3255|    124|	zend_compile_class_ref(&class_node, class_ast, ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    124|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 3256|       |
 3257|    124|	zend_compile_expr(&prop_node, prop_ast);
 3258|       |
 3259|    124|	if (delayed) {
  ------------------
  |  Branch (3259:6): [True: 50, False: 74]
  ------------------
 3260|     50|		opline = zend_delayed_emit_op(result, ZEND_FETCH_STATIC_PROP_R, &prop_node, NULL);
  ------------------
  |  |  295|     50|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
 3261|     74|	} else {
 3262|     74|		opline = zend_emit_op(result, ZEND_FETCH_STATIC_PROP_R, &prop_node, NULL);
  ------------------
  |  |  295|     74|#define ZEND_FETCH_STATIC_PROP_R            173
  ------------------
 3263|     74|	}
 3264|    124|	if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|    124|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3264:6): [True: 119, False: 5]
  ------------------
 3265|    119|		convert_to_string(CT_CONSTANT(opline->op1));
  ------------------
  |  |  390|    119|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|    119|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    119|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|    119|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 119]
  |  |  ------------------
  ------------------
 3266|    119|		opline->extended_value = zend_alloc_cache_slots(3);
 3267|    119|	}
 3268|    124|	if (class_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    124|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3268:6): [True: 65, False: 59]
  ------------------
 3269|     65|		opline->op2_type = IS_CONST;
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
 3270|     65|		opline->op2.constant = zend_add_class_name_literal(
 3271|     65|			Z_STR(class_node.u.constant));
  ------------------
  |  |  981|     65|#define Z_STR(zval)					(zval).value.str
  ------------------
 3272|     65|		if (opline->op1_type != IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3272:7): [True: 2, False: 63]
  ------------------
 3273|      2|			opline->extended_value = zend_alloc_cache_slot();
 3274|      2|		}
 3275|     65|	} else {
 3276|     59|		SET_NODE(opline->op2, &class_node);
  ------------------
  |  |   42|     59|#define SET_NODE(target, src) do { \
  |  |   43|     59|		target ## _type = (src)->op_type; \
  |  |   44|     59|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     59|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 59]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     59|		} else { \
  |  |   47|     59|			target = (src)->u.op; \
  |  |   48|     59|		} \
  |  |   49|     59|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 59]
  |  |  ------------------
  ------------------
 3277|     59|	}
 3278|       |
 3279|    124|	if (by_ref && (type == BP_VAR_W || type == BP_VAR_FUNC_ARG)) { /* shared with cache_slot */
  ------------------
  |  | 1075|     30|#define BP_VAR_W			1
  ------------------
              	if (by_ref && (type == BP_VAR_W || type == BP_VAR_FUNC_ARG)) { /* shared with cache_slot */
  ------------------
  |  | 1078|      4|#define BP_VAR_FUNC_ARG		4
  ------------------
  |  Branch (3279:6): [True: 15, False: 109]
  |  Branch (3279:17): [True: 11, False: 4]
  |  Branch (3279:37): [True: 4, False: 0]
  ------------------
 3280|     15|		opline->extended_value |= ZEND_FETCH_REF;
  ------------------
  |  | 1097|     15|#define ZEND_FETCH_REF			1
  ------------------
 3281|     15|	}
 3282|       |
 3283|    124|	zend_adjust_for_fetch_type(opline, result, type);
 3284|    124|	return opline;
 3285|    124|}
zend_compile.c:zend_compile_return:
 5973|    348|{
 5974|    348|	zend_ast *expr_ast = ast->child[0];
 5975|    348|	bool is_generator = (CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) != 0;
  ------------------
  |  |   35|    348|# define CG(v) (compiler_globals.v)
  ------------------
              	bool is_generator = (CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) != 0;
  ------------------
  |  |  387|    348|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
 5976|    348|	bool by_ref = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0;
  ------------------
  |  |   35|    348|# define CG(v) (compiler_globals.v)
  ------------------
              	bool by_ref = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0;
  ------------------
  |  |  352|    348|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
 5977|       |
 5978|    348|	znode expr_node;
 5979|    348|	zend_op *opline;
 5980|       |
 5981|    348|	if (is_generator) {
  ------------------
  |  Branch (5981:6): [True: 6, False: 342]
  ------------------
 5982|       |		/* For generators the by-ref flag refers to yields, not returns */
 5983|      6|		by_ref = false;
 5984|      6|	}
 5985|       |
 5986|    348|	if (!expr_ast) {
  ------------------
  |  Branch (5986:6): [True: 18, False: 330]
  ------------------
 5987|     18|		expr_node.op_type = IS_CONST;
  ------------------
  |  |  864|     18|#define IS_CONST	(1<<0)
  ------------------
 5988|     18|		ZVAL_NULL(&expr_node.u.constant);
  ------------------
  |  | 1059|     18|#define ZVAL_NULL(z) do {				\
  |  | 1060|     18|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     18|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     18|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     18|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 5989|    330|	} else if (by_ref && zend_is_variable_or_call(expr_ast)) {
  ------------------
  |  Branch (5989:13): [True: 49, False: 281]
  |  Branch (5989:23): [True: 44, False: 5]
  ------------------
 5990|     44|		zend_assert_not_short_circuited(expr_ast);
 5991|     44|		zend_compile_var(&expr_node, expr_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|     44|#define BP_VAR_W			1
  ------------------
 5992|    286|	} else {
 5993|    286|		zend_compile_expr(&expr_node, expr_ast);
 5994|    286|	}
 5995|       |
 5996|    348|	if ((CG(active_op_array)->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)
  ------------------
  |  |   35|    348|# define CG(v) (compiler_globals.v)
  ------------------
              	if ((CG(active_op_array)->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)
  ------------------
  |  |  361|    348|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (5996:6): [True: 19, False: 329]
  ------------------
 5997|     19|	 && (expr_node.op_type == IS_CV || (by_ref && expr_node.op_type == IS_VAR))
  ------------------
  |  |  867|     38|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	 && (expr_node.op_type == IS_CV || (by_ref && expr_node.op_type == IS_VAR))
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (5997:7): [True: 11, False: 8]
  |  Branch (5997:38): [True: 1, False: 7]
  |  Branch (5997:48): [True: 1, False: 0]
  ------------------
 5998|     12|	 && zend_has_finally()) {
  ------------------
  |  Branch (5998:6): [True: 12, False: 0]
  ------------------
 5999|       |		/* Copy return value into temporary VAR to avoid modification in finally code */
 6000|     12|		if (by_ref) {
  ------------------
  |  Branch (6000:7): [True: 8, False: 4]
  ------------------
 6001|      8|			zend_emit_op(&expr_node, ZEND_MAKE_REF, &expr_node, NULL);
  ------------------
  |  |  262|      8|#define ZEND_MAKE_REF                       140
  ------------------
 6002|      8|		} else {
 6003|      4|			zend_emit_op_tmp(&expr_node, ZEND_QM_ASSIGN, &expr_node, NULL);
  ------------------
  |  |  155|      4|#define ZEND_QM_ASSIGN                       31
  ------------------
 6004|      4|		}
 6005|     12|	}
 6006|       |
 6007|       |	/* Generator return types are handled separately */
 6008|    348|	if (!is_generator && (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |   35|    335|# define CG(v) (compiler_globals.v)
  ------------------
              	if (!is_generator && (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|    335|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (6008:6): [True: 335, False: 13]
  |  Branch (6008:23): [True: 93, False: 242]
  ------------------
 6009|     93|		zend_emit_return_type_check(
 6010|     93|			expr_ast ? &expr_node : NULL, CG(active_op_array)->arg_info - 1, false);
  ------------------
  |  |   35|     93|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6010:4): [True: 89, False: 4]
  ------------------
 6011|     93|	}
 6012|       |
 6013|    348|	uint32_t opnum_before_finally = get_next_op_number();
 6014|       |
 6015|    348|	zend_handle_loops_and_finally((expr_node.op_type & (IS_TMP_VAR | IS_VAR)) ? &expr_node : NULL);
  ------------------
  |  |  865|    348|#define IS_TMP_VAR	(1<<1)
  ------------------
              	zend_handle_loops_and_finally((expr_node.op_type & (IS_TMP_VAR | IS_VAR)) ? &expr_node : NULL);
  ------------------
  |  |  866|    348|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (6015:32): [True: 153, False: 195]
  ------------------
 6016|       |
 6017|       |	/* Content of reference might have changed in finally, repeat type check. */
 6018|    348|	if (by_ref
  ------------------
  |  Branch (6018:6): [True: 48, False: 300]
  ------------------
 6019|       |	 /* Check if any opcodes were emitted since the last return type check. */
 6020|     48|	 && opnum_before_finally != get_next_op_number()
  ------------------
  |  Branch (6020:6): [True: 8, False: 40]
  ------------------
 6021|      8|	 && !is_generator
  ------------------
  |  Branch (6021:6): [True: 8, False: 0]
  ------------------
 6022|      8|	 && (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
              	 && (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|      8|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (6022:6): [True: 4, False: 4]
  ------------------
 6023|      4|		zend_emit_return_type_check(
 6024|      4|			expr_ast ? &expr_node : NULL, CG(active_op_array)->arg_info - 1, false);
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6024:4): [True: 4, False: 0]
  ------------------
 6025|      4|	}
 6026|       |
 6027|    348|	opline = zend_emit_op(NULL, by_ref ? ZEND_RETURN_BY_REF : ZEND_RETURN,
  ------------------
  |  |  233|     48|#define ZEND_RETURN_BY_REF                  111
  ------------------
              	opline = zend_emit_op(NULL, by_ref ? ZEND_RETURN_BY_REF : ZEND_RETURN,
  ------------------
  |  |  185|    648|#define ZEND_RETURN                          62
  ------------------
  |  Branch (6027:30): [True: 48, False: 300]
  ------------------
 6028|    348|		&expr_node, NULL);
 6029|       |
 6030|    348|	if (by_ref && expr_ast) {
  ------------------
  |  Branch (6030:6): [True: 48, False: 300]
  |  Branch (6030:16): [True: 47, False: 1]
  ------------------
 6031|     47|		if (zend_is_call(expr_ast)) {
  ------------------
  |  Branch (6031:7): [True: 3, False: 44]
  ------------------
 6032|      3|			opline->extended_value = ZEND_RETURNS_FUNCTION;
  ------------------
  |  | 1206|      3|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
 6033|     44|		} else if (!zend_is_variable(expr_ast) || zend_ast_is_short_circuited(expr_ast)) {
  ------------------
  |  Branch (6033:14): [True: 5, False: 39]
  |  Branch (6033:45): [True: 0, False: 39]
  ------------------
 6034|      5|			opline->extended_value = ZEND_RETURNS_VALUE;
  ------------------
  |  | 1207|      5|#define ZEND_RETURNS_VALUE    (1<<1)
  ------------------
 6035|      5|		}
 6036|     47|	}
 6037|    348|}
zend_compile.c:zend_assert_not_short_circuited:
 2539|    346|{
 2540|    346|	if (zend_ast_is_short_circuited(ast)) {
  ------------------
  |  Branch (2540:6): [True: 6, False: 340]
  ------------------
 2541|      6|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot take reference of a nullsafe chain");
  ------------------
  |  |   28|      6|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2542|      6|	}
 2543|    346|}
zend_compile.c:zend_has_finally:
 5967|     12|{
 5968|     12|	return zend_has_finally_ex(zend_stack_count(&CG(loop_var_stack)) + 1);
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
 5969|     12|}
zend_compile.c:zend_has_finally_ex:
 5941|     12|{
 5942|     12|	const zend_loop_var *base;
 5943|     12|	zend_loop_var *loop_var = zend_stack_top(&CG(loop_var_stack));
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
 5944|       |
 5945|     12|	if (!loop_var) {
  ------------------
  |  Branch (5945:6): [True: 0, False: 12]
  ------------------
 5946|      0|		return false;
 5947|      0|	}
 5948|     12|	base = zend_stack_base(&CG(loop_var_stack));
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
 5949|     12|	for (; loop_var >= base; loop_var--) {
  ------------------
  |  Branch (5949:9): [True: 12, False: 0]
  ------------------
 5950|     12|		if (loop_var->opcode == ZEND_FAST_CALL) {
  ------------------
  |  |  284|     12|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (5950:7): [True: 12, False: 0]
  ------------------
 5951|     12|			return 1;
 5952|     12|		} else if (loop_var->opcode == ZEND_DISCARD_EXCEPTION) {
  ------------------
  |  |  281|      0|#define ZEND_DISCARD_EXCEPTION              159
  ------------------
  |  Branch (5952:14): [True: 0, False: 0]
  ------------------
 5953|      0|		} else if (loop_var->opcode == ZEND_RETURN) {
  ------------------
  |  |  185|      0|#define ZEND_RETURN                          62
  ------------------
  |  Branch (5953:14): [True: 0, False: 0]
  ------------------
 5954|       |			/* Stack separator */
 5955|      0|			return 0;
 5956|      0|		} else if (depth <= 1) {
  ------------------
  |  Branch (5956:14): [True: 0, False: 0]
  ------------------
 5957|      0|			return 0;
 5958|      0|		} else {
 5959|      0|			depth--;
 5960|      0|	    }
 5961|     12|	}
 5962|      0|	return false;
 5963|     12|}
zend_compile.c:zend_handle_loops_and_finally:
 5935|    377|{
 5936|    377|	return zend_handle_loops_and_finally_ex(zend_stack_count(&CG(loop_var_stack)) + 1, return_value);
  ------------------
  |  |   35|    377|# define CG(v) (compiler_globals.v)
  ------------------
 5937|    377|}
zend_compile.c:zend_handle_loops_and_finally_ex:
 5886|    403|{
 5887|    403|	const zend_loop_var *base;
 5888|    403|	zend_loop_var *loop_var = zend_stack_top(&CG(loop_var_stack));
  ------------------
  |  |   35|    403|# define CG(v) (compiler_globals.v)
  ------------------
 5889|       |
 5890|    403|	if (!loop_var) {
  ------------------
  |  Branch (5890:6): [True: 39, False: 364]
  ------------------
 5891|     39|		return true;
 5892|     39|	}
 5893|    364|	base = zend_stack_base(&CG(loop_var_stack));
  ------------------
  |  |   35|    364|# define CG(v) (compiler_globals.v)
  ------------------
 5894|    403|	for (; loop_var >= base; loop_var--) {
  ------------------
  |  Branch (5894:9): [True: 393, False: 10]
  ------------------
 5895|    393|		if (loop_var->opcode == ZEND_FAST_CALL) {
  ------------------
  |  |  284|    393|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (5895:7): [True: 16, False: 377]
  ------------------
 5896|     16|			zend_op *opline = get_next_op();
 5897|       |
 5898|     16|			opline->opcode = ZEND_FAST_CALL;
  ------------------
  |  |  284|     16|#define ZEND_FAST_CALL                      162
  ------------------
 5899|     16|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     16|#define IS_TMP_VAR	(1<<1)
  ------------------
 5900|     16|			opline->result.var = loop_var->var_num;
 5901|     16|			if (return_value) {
  ------------------
  |  Branch (5901:8): [True: 14, False: 2]
  ------------------
 5902|     14|				SET_NODE(opline->op2, return_value);
  ------------------
  |  |   42|     14|#define SET_NODE(target, src) do { \
  |  |   43|     14|		target ## _type = (src)->op_type; \
  |  |   44|     14|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     14|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 14]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     14|		} else { \
  |  |   47|     14|			target = (src)->u.op; \
  |  |   48|     14|		} \
  |  |   49|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 5903|     14|			}
 5904|     16|			opline->op1.num = loop_var->try_catch_offset;
 5905|    377|		} else if (loop_var->opcode == ZEND_DISCARD_EXCEPTION) {
  ------------------
  |  |  281|    377|#define ZEND_DISCARD_EXCEPTION              159
  ------------------
  |  Branch (5905:14): [True: 9, False: 368]
  ------------------
 5906|      9|			zend_op *opline = get_next_op();
 5907|      9|			opline->opcode = ZEND_DISCARD_EXCEPTION;
  ------------------
  |  |  281|      9|#define ZEND_DISCARD_EXCEPTION              159
  ------------------
 5908|      9|			opline->op1_type = IS_TMP_VAR;
  ------------------
  |  |  865|      9|#define IS_TMP_VAR	(1<<1)
  ------------------
 5909|      9|			opline->op1.var = loop_var->var_num;
 5910|    368|		} else if (loop_var->opcode == ZEND_RETURN) {
  ------------------
  |  |  185|    368|#define ZEND_RETURN                          62
  ------------------
  |  Branch (5910:14): [True: 332, False: 36]
  ------------------
 5911|       |			/* Stack separator */
 5912|    332|			break;
 5913|    332|		} else if (depth <= 1) {
  ------------------
  |  Branch (5913:14): [True: 22, False: 14]
  ------------------
 5914|     22|			return 1;
 5915|     22|		} else if (loop_var->opcode == ZEND_NOP) {
  ------------------
  |  |  124|     14|#define ZEND_NOP                              0
  ------------------
  |  Branch (5915:14): [True: 6, False: 8]
  ------------------
 5916|       |			/* Loop doesn't have freeable variable */
 5917|      6|			depth--;
 5918|      8|		} else {
 5919|      8|			zend_op *opline;
 5920|       |
 5921|      8|			ZEND_ASSERT(loop_var->var_type & (IS_VAR|IS_TMP_VAR));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5921:4): [True: 0, False: 8]
  |  Branch (5921:4): [True: 8, False: 0]
  ------------------
 5922|      8|			opline = get_next_op();
 5923|      8|			opline->opcode = loop_var->opcode;
 5924|      8|			opline->op1_type = loop_var->var_type;
 5925|      8|			opline->op1.var = loop_var->var_num;
 5926|      8|			opline->extended_value = ZEND_FREE_ON_RETURN;
  ------------------
  |  | 1112|      8|#define ZEND_FREE_ON_RETURN     (1<<0)
  ------------------
 5927|      8|			depth--;
 5928|      8|	    }
 5929|    393|	}
 5930|    342|	return (depth == 0);
 5931|    364|}
zend_compile.c:zend_compile_echo:
 6061|  2.27k|{
 6062|  2.27k|	zend_op *opline;
 6063|  2.27k|	zend_ast *expr_ast = ast->child[0];
 6064|       |
 6065|  2.27k|	znode expr_node;
 6066|  2.27k|	zend_compile_expr(&expr_node, expr_ast);
 6067|       |
 6068|  2.27k|	opline = zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL);
  ------------------
  |  |  258|  2.27k|#define ZEND_ECHO                           136
  ------------------
 6069|  2.27k|	opline->extended_value = 0;
 6070|  2.27k|}
zend_compile.c:zend_compile_break_continue:
 6091|     30|{
 6092|     30|	zend_ast *depth_ast = ast->child[0];
 6093|       |
 6094|     30|	zend_op *opline;
 6095|     30|	zend_long depth;
 6096|       |
 6097|     30|	ZEND_ASSERT(ast->kind == ZEND_AST_BREAK || ast->kind == ZEND_AST_CONTINUE);
  ------------------
  |  |  112|     30|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6097:2): [True: 30, False: 0]
  |  Branch (6097:2): [True: 0, False: 0]
  |  Branch (6097:2): [True: 29, False: 1]
  |  Branch (6097:2): [True: 1, False: 0]
  ------------------
 6098|       |
 6099|     30|	if (depth_ast) {
  ------------------
  |  Branch (6099:6): [True: 8, False: 22]
  ------------------
 6100|      8|		const zval *depth_zv;
 6101|      8|		if (depth_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (6101:7): [True: 1, False: 7]
  ------------------
 6102|      1|			zend_error_noreturn(E_COMPILE_ERROR, "'%s' operator with non-integer operand "
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6103|      1|				"is no longer supported", ast->kind == ZEND_AST_BREAK ? "break" : "continue");
  ------------------
  |  Branch (6103:31): [True: 1, False: 0]
  ------------------
 6104|      1|		}
 6105|       |
 6106|      7|		depth_zv = zend_ast_get_zval(depth_ast);
 6107|      7|		if (Z_TYPE_P(depth_zv) != IS_LONG || Z_LVAL_P(depth_zv) < 1) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(depth_zv) != IS_LONG || Z_LVAL_P(depth_zv) < 1) {
  ------------------
  |  |  610|     14|#define IS_LONG						4
  ------------------
              		if (Z_TYPE_P(depth_zv) != IS_LONG || Z_LVAL_P(depth_zv) < 1) {
  ------------------
  |  |  976|      7|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      7|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (6107:7): [True: 0, False: 7]
  |  Branch (6107:40): [True: 1, False: 6]
  ------------------
 6108|      1|			zend_error_noreturn(E_COMPILE_ERROR, "'%s' operator accepts only positive integers",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6109|      1|				ast->kind == ZEND_AST_BREAK ? "break" : "continue");
  ------------------
  |  Branch (6109:5): [True: 1, False: 0]
  ------------------
 6110|      1|		}
 6111|       |
 6112|      6|		depth = Z_LVAL_P(depth_zv);
  ------------------
  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6113|     22|	} else {
 6114|     22|		depth = 1;
 6115|     22|	}
 6116|       |
 6117|     28|	if (CG(context).current_brk_cont == -1) {
  ------------------
  |  |   35|     28|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6117:6): [True: 2, False: 26]
  ------------------
 6118|      2|		zend_error_noreturn(E_COMPILE_ERROR, "'%s' not in the 'loop' or 'switch' context",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6119|      2|			ast->kind == ZEND_AST_BREAK ? "break" : "continue");
  ------------------
  |  Branch (6119:4): [True: 2, False: 0]
  ------------------
 6120|     26|	} else {
 6121|     26|		if (!zend_handle_loops_and_finally_ex(depth, NULL)) {
  ------------------
  |  Branch (6121:7): [True: 4, False: 22]
  ------------------
 6122|      4|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot '%s' " ZEND_LONG_FMT " level%s",
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6123|      4|				ast->kind == ZEND_AST_BREAK ? "break" : "continue",
  ------------------
  |  Branch (6123:5): [True: 4, False: 0]
  ------------------
 6124|      4|				depth, depth == 1 ? "" : "s");
  ------------------
  |  Branch (6124:12): [True: 0, False: 4]
  ------------------
 6125|      4|		}
 6126|     26|	}
 6127|       |
 6128|     22|	if (ast->kind == ZEND_AST_CONTINUE) {
  ------------------
  |  Branch (6128:6): [True: 1, False: 21]
  ------------------
 6129|      1|		int d, cur = CG(context).current_brk_cont;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 6130|      2|		for (d = depth - 1; d > 0; d--) {
  ------------------
  |  Branch (6130:23): [True: 1, False: 1]
  ------------------
 6131|      1|			cur = CG(context).brk_cont_array[cur].parent;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 6132|      1|			ZEND_ASSERT(cur != -1);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6132:4): [True: 0, False: 1]
  |  Branch (6132:4): [True: 1, False: 0]
  ------------------
 6133|      1|		}
 6134|       |
 6135|      1|		if (CG(context).brk_cont_array[cur].is_switch) {
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6135:7): [True: 0, False: 1]
  ------------------
 6136|      0|			if (depth == 1) {
  ------------------
  |  Branch (6136:8): [True: 0, False: 0]
  ------------------
 6137|      0|				if (CG(context).brk_cont_array[cur].parent == -1) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6137:9): [True: 0, False: 0]
  ------------------
 6138|      0|					zend_error(E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 6139|      0|						"\"continue\" targeting switch is equivalent to \"break\"");
 6140|      0|				} else {
 6141|      0|					zend_error(E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 6142|      0|						"\"continue\" targeting switch is equivalent to \"break\". " \
 6143|      0|						"Did you mean to use \"continue " ZEND_LONG_FMT "\"?",
 6144|      0|						depth + 1);
 6145|      0|				}
 6146|      0|			} else {
 6147|      0|				if (CG(context).brk_cont_array[cur].parent == -1) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6147:9): [True: 0, False: 0]
  ------------------
 6148|      0|					zend_error(E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 6149|      0|						"\"continue " ZEND_LONG_FMT "\" targeting switch is equivalent to \"break " ZEND_LONG_FMT "\"",
 6150|      0|						depth, depth);
 6151|      0|				} else {
 6152|      0|					zend_error(E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 6153|      0|						"\"continue " ZEND_LONG_FMT "\" targeting switch is equivalent to \"break " ZEND_LONG_FMT "\". " \
 6154|      0|						"Did you mean to use \"continue " ZEND_LONG_FMT "\"?",
 6155|      0|						depth, depth, depth + 1);
 6156|      0|				}
 6157|      0|			}
 6158|      0|		}
 6159|      1|	}
 6160|       |
 6161|     22|	opline = zend_emit_op(NULL, ast->kind == ZEND_AST_BREAK ? ZEND_BRK : ZEND_CONT, NULL, NULL);
  ------------------
  |  | 1238|     21|#define ZEND_BRK   254
  ------------------
              	opline = zend_emit_op(NULL, ast->kind == ZEND_AST_BREAK ? ZEND_BRK : ZEND_CONT, NULL, NULL);
  ------------------
  |  | 1239|     23|#define ZEND_CONT  255
  ------------------
  |  Branch (6161:30): [True: 21, False: 1]
  ------------------
 6162|     22|	opline->op1.num = CG(context).current_brk_cont;
  ------------------
  |  |   35|     22|# define CG(v) (compiler_globals.v)
  ------------------
 6163|     22|	opline->op2.num = depth;
 6164|     22|}
zend_compile.c:zend_compile_goto:
 6229|     42|{
 6230|     42|	zend_ast *label_ast = ast->child[0];
 6231|     42|	znode label_node;
 6232|     42|	zend_op *opline;
 6233|       |
 6234|     42|	zend_compile_expr(&label_node, label_ast);
 6235|       |
 6236|       |	/* Label resolution and unwinding adjustments happen in pass two. */
 6237|     42|	uint32_t opnum_start = get_next_op_number();
 6238|     42|	zend_handle_loops_and_finally(NULL);
 6239|     42|	opline = zend_emit_op(NULL, ZEND_GOTO, NULL, &label_node);
  ------------------
  |  | 1237|     42|#define ZEND_GOTO  253
  ------------------
 6240|     42|	opline->op1.num = get_next_op_number() - opnum_start - 1;
 6241|     42|	opline->extended_value = CG(context).current_brk_cont;
  ------------------
  |  |   35|     42|# define CG(v) (compiler_globals.v)
  ------------------
 6242|     42|}
zend_compile.c:zend_compile_label:
 6246|     68|{
 6247|     68|	zend_string *label = zend_ast_get_str(ast->child[0]);
 6248|     68|	zend_label dest;
 6249|       |
 6250|     68|	if (!CG(context).labels) {
  ------------------
  |  |   35|     68|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6250:6): [True: 40, False: 28]
  ------------------
 6251|     40|		ALLOC_HASHTABLE(CG(context).labels);
  ------------------
  |  |  232|     40|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     40|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     40|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     40|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     40|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     40|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6252|     40|		zend_hash_init(CG(context).labels, 8, NULL, label_ptr_dtor, 0);
  ------------------
  |  |  111|     40|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 6253|     40|	}
 6254|       |
 6255|     68|	dest.brk_cont = CG(context).current_brk_cont;
  ------------------
  |  |   35|     68|# define CG(v) (compiler_globals.v)
  ------------------
 6256|     68|	dest.opline_num = get_next_op_number();
 6257|       |
 6258|     68|	if (!zend_hash_add_mem(CG(context).labels, label, &dest, sizeof(zend_label))) {
  ------------------
  |  |   35|     68|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (6258:6): [True: 1, False: 67]
  ------------------
 6259|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Label '%s' already defined", ZSTR_VAL(label));
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              		zend_error_noreturn(E_COMPILE_ERROR, "Label '%s' already defined", ZSTR_VAL(label));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 6260|      1|	}
 6261|     68|}
zend_compile.c:label_ptr_dtor:
 1235|     57|{
 1236|       |	efree_size(Z_PTR_P(zv), sizeof(zend_label));
  ------------------
  |  |  138|     57|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|     57|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     57|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     57|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     57|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     57|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1237|     57|}
zend_compile.c:zend_compile_while:
 6265|     16|{
 6266|     16|	zend_ast *cond_ast = ast->child[0];
 6267|     16|	zend_ast *stmt_ast = ast->child[1];
 6268|     16|	znode cond_node;
 6269|     16|	uint32_t opnum_start, opnum_jmp, opnum_cond;
 6270|       |
 6271|     16|	opnum_jmp = zend_emit_jump(0);
 6272|       |
 6273|     16|	zend_begin_loop(ZEND_NOP, NULL, false);
  ------------------
  |  |  124|     16|#define ZEND_NOP                              0
  ------------------
 6274|       |
 6275|     16|	opnum_start = get_next_op_number();
 6276|     16|	zend_compile_stmt(stmt_ast);
 6277|       |
 6278|     16|	opnum_cond = get_next_op_number();
 6279|     16|	zend_update_jump_target(opnum_jmp, opnum_cond);
 6280|     16|	zend_compile_expr(&cond_node, cond_ast);
 6281|       |
 6282|     16|	zend_emit_cond_jump(ZEND_JMPNZ, &cond_node, opnum_start);
  ------------------
  |  |  168|     16|#define ZEND_JMPNZ                           44
  ------------------
 6283|       |
 6284|       |	zend_end_loop(opnum_cond, NULL);
 6285|     16|}
zend_compile.c:zend_emit_cond_jump:
 2405|    411|{
 2406|    411|	uint32_t opnum = get_next_op_number();
 2407|    411|	zend_op *opline;
 2408|       |
 2409|    411|	if (cond->op_type == IS_TMP_VAR && opnum > 0) {
  ------------------
  |  |  865|    822|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (2409:6): [True: 294, False: 117]
  |  Branch (2409:37): [True: 294, False: 0]
  ------------------
 2410|    294|		opline = CG(active_op_array)->opcodes + opnum - 1;
  ------------------
  |  |   35|    294|# define CG(v) (compiler_globals.v)
  ------------------
 2411|    294|		if (opline->result_type == IS_TMP_VAR
  ------------------
  |  |  865|    588|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (2411:7): [True: 294, False: 0]
  ------------------
 2412|    294|		 && opline->result.var == cond->u.op.var
  ------------------
  |  Branch (2412:7): [True: 294, False: 0]
  ------------------
 2413|    294|		 && zend_is_smart_branch(opline)) {
  ------------------
  |  Branch (2413:7): [True: 167, False: 127]
  ------------------
 2414|    167|			if (opcode == ZEND_JMPZ) {
  ------------------
  |  |  167|    167|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (2414:8): [True: 67, False: 100]
  ------------------
 2415|     67|				opline->result_type = IS_TMP_VAR | IS_SMART_BRANCH_JMPZ;
  ------------------
  |  |  865|     67|#define IS_TMP_VAR	(1<<1)
  ------------------
              				opline->result_type = IS_TMP_VAR | IS_SMART_BRANCH_JMPZ;
  ------------------
  |  |  870|     67|#define IS_SMART_BRANCH_JMPZ  (1<<4)
  ------------------
 2416|    100|			} else {
 2417|    100|				ZEND_ASSERT(opcode == ZEND_JMPNZ);
  ------------------
  |  |  112|    100|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2417:5): [True: 0, False: 100]
  |  Branch (2417:5): [True: 100, False: 0]
  ------------------
 2418|    100|				opline->result_type = IS_TMP_VAR | IS_SMART_BRANCH_JMPNZ;
  ------------------
  |  |  865|    100|#define IS_TMP_VAR	(1<<1)
  ------------------
              				opline->result_type = IS_TMP_VAR | IS_SMART_BRANCH_JMPNZ;
  ------------------
  |  |  871|    100|#define IS_SMART_BRANCH_JMPNZ (1<<5)
  ------------------
 2419|    100|			}
 2420|    167|		}
 2421|    294|	}
 2422|    411|	opline = zend_emit_op(NULL, opcode, cond, NULL);
 2423|    411|	opline->op2.opline_num = opnum_target;
 2424|    411|	return opnum;
 2425|    411|}
zend_compile.c:zend_compile_do_while:
 6289|      3|{
 6290|      3|	zend_ast *stmt_ast = ast->child[0];
 6291|      3|	zend_ast *cond_ast = ast->child[1];
 6292|       |
 6293|      3|	znode cond_node;
 6294|      3|	uint32_t opnum_start, opnum_cond;
 6295|       |
 6296|      3|	zend_begin_loop(ZEND_NOP, NULL, false);
  ------------------
  |  |  124|      3|#define ZEND_NOP                              0
  ------------------
 6297|       |
 6298|      3|	opnum_start = get_next_op_number();
 6299|      3|	zend_compile_stmt(stmt_ast);
 6300|       |
 6301|      3|	opnum_cond = get_next_op_number();
 6302|      3|	zend_compile_expr(&cond_node, cond_ast);
 6303|       |
 6304|      3|	zend_emit_cond_jump(ZEND_JMPNZ, &cond_node, opnum_start);
  ------------------
  |  |  168|      3|#define ZEND_JMPNZ                           44
  ------------------
 6305|       |
 6306|       |	zend_end_loop(opnum_cond, NULL);
 6307|      3|}
zend_compile.c:zend_compile_for:
 6339|    249|{
 6340|    249|	zend_ast *init_ast = ast->child[0];
 6341|    249|	zend_ast *cond_ast = ast->child[1];
 6342|    249|	zend_ast *loop_ast = ast->child[2];
 6343|    249|	zend_ast *stmt_ast = ast->child[3];
 6344|       |
 6345|    249|	znode result;
 6346|    249|	uint32_t opnum_start, opnum_jmp, opnum_loop;
 6347|       |
 6348|    249|	zend_compile_for_expr_list(&result, init_ast);
 6349|    249|	zend_do_free(&result);
 6350|       |
 6351|    249|	opnum_jmp = zend_emit_jump(0);
 6352|       |
 6353|    249|	zend_begin_loop(ZEND_NOP, NULL, false);
  ------------------
  |  |  124|    249|#define ZEND_NOP                              0
  ------------------
 6354|       |
 6355|    249|	opnum_start = get_next_op_number();
 6356|    249|	zend_compile_stmt(stmt_ast);
 6357|       |
 6358|    249|	opnum_loop = get_next_op_number();
 6359|    249|	zend_compile_for_expr_list(&result, loop_ast);
 6360|    249|	zend_do_free(&result);
 6361|       |
 6362|    249|	zend_update_jump_target_to_next(opnum_jmp);
 6363|    249|	zend_compile_for_expr_list(&result, cond_ast);
 6364|    249|	zend_do_extended_stmt(NULL);
 6365|       |
 6366|    249|	zend_emit_cond_jump(ZEND_JMPNZ, &result, opnum_start);
  ------------------
  |  |  168|    249|#define ZEND_JMPNZ                           44
  ------------------
 6367|       |
 6368|       |	zend_end_loop(opnum_loop, NULL);
 6369|    249|}
zend_compile.c:zend_compile_for_expr_list:
 6311|    741|{
 6312|    741|	const zend_ast_list *list;
 6313|    741|	uint32_t i;
 6314|       |
 6315|    741|	result->op_type = IS_CONST;
  ------------------
  |  |  864|    741|#define IS_CONST	(1<<0)
  ------------------
 6316|    741|	ZVAL_TRUE(&result->u.constant);
  ------------------
  |  | 1067|    741|#define ZVAL_TRUE(z) do {				\
  |  | 1068|    741|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|    741|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    741|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|    741|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|    741|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 741]
  |  |  ------------------
  ------------------
 6317|       |
 6318|    741|	if (!ast) {
  ------------------
  |  Branch (6318:6): [True: 100, False: 641]
  ------------------
 6319|    100|		return;
 6320|    100|	}
 6321|       |
 6322|    641|	list = zend_ast_get_list(ast);
 6323|  1.28k|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (6323:14): [True: 648, False: 641]
  ------------------
 6324|    648|		zend_ast *expr_ast = list->child[i];
 6325|       |
 6326|    648|		zend_do_free(result);
 6327|    648|		if (expr_ast->kind == ZEND_AST_CAST_VOID) {
  ------------------
  |  Branch (6327:7): [True: 0, False: 648]
  ------------------
 6328|      0|			zend_compile_void_cast(NULL, expr_ast);
 6329|      0|			result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 6330|      0|			ZVAL_NULL(&result->u.constant);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6331|    648|		} else {
 6332|    648|			zend_compile_expr(result, expr_ast);
 6333|    648|		}
 6334|    648|	}
 6335|    641|}
zend_compile.c:zend_compile_foreach:
 6373|    197|{
 6374|    197|	zend_ast *expr_ast = ast->child[0];
 6375|    197|	zend_ast *value_ast = ast->child[1];
 6376|    197|	zend_ast *key_ast = ast->child[2];
 6377|    197|	zend_ast *stmt_ast = ast->child[3];
 6378|    197|	bool by_ref = value_ast->kind == ZEND_AST_REF;
 6379|    197|	bool is_variable = (zend_is_variable(expr_ast) && zend_can_write_to_variable(expr_ast))
  ------------------
  |  Branch (6379:22): [True: 131, False: 66]
  |  Branch (6379:52): [True: 128, False: 3]
  ------------------
 6380|     69|		|| zend_is_call(expr_ast);
  ------------------
  |  Branch (6380:6): [True: 33, False: 36]
  ------------------
 6381|       |
 6382|    197|	znode expr_node, reset_node, value_node, key_node;
 6383|    197|	zend_op *opline;
 6384|    197|	uint32_t opnum_reset, opnum_fetch;
 6385|       |
 6386|    197|	if (key_ast) {
  ------------------
  |  Branch (6386:6): [True: 35, False: 162]
  ------------------
 6387|     35|		if (key_ast->kind == ZEND_AST_REF) {
  ------------------
  |  Branch (6387:7): [True: 1, False: 34]
  ------------------
 6388|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Key element cannot be a reference");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6389|      1|		}
 6390|     34|		if (key_ast->kind == ZEND_AST_ARRAY) {
  ------------------
  |  Branch (6390:7): [True: 1, False: 33]
  ------------------
 6391|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use list as key element");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6392|      1|		}
 6393|     34|	}
 6394|       |
 6395|    195|	if (by_ref) {
  ------------------
  |  Branch (6395:6): [True: 72, False: 123]
  ------------------
 6396|     72|		value_ast = value_ast->child[0];
 6397|     72|	}
 6398|       |
 6399|    195|	if (value_ast->kind == ZEND_AST_ARRAY && zend_propagate_list_refs(value_ast)) {
  ------------------
  |  Branch (6399:6): [True: 5, False: 190]
  |  Branch (6399:43): [True: 1, False: 4]
  ------------------
 6400|      1|		by_ref = true;
 6401|      1|	}
 6402|       |
 6403|    195|	if (by_ref && is_variable) {
  ------------------
  |  Branch (6403:6): [True: 73, False: 122]
  |  Branch (6403:16): [True: 66, False: 7]
  ------------------
 6404|     66|		zend_compile_var(&expr_node, expr_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|     66|#define BP_VAR_W			1
  ------------------
 6405|    129|	} else {
 6406|    129|		zend_compile_expr(&expr_node, expr_ast);
 6407|    129|	}
 6408|       |
 6409|    195|	if (by_ref) {
  ------------------
  |  Branch (6409:6): [True: 73, False: 122]
  ------------------
 6410|     73|		zend_separate_if_call_and_write(&expr_node, expr_ast, BP_VAR_W);
  ------------------
  |  | 1075|     73|#define BP_VAR_W			1
  ------------------
 6411|     73|	}
 6412|       |
 6413|    195|	opnum_reset = get_next_op_number();
 6414|    195|	opline = zend_emit_op(&reset_node, by_ref ? ZEND_FE_RESET_RW : ZEND_FE_RESET_R, &expr_node, NULL);
  ------------------
  |  |  247|     73|#define ZEND_FE_RESET_RW                    125
  ------------------
              	opline = zend_emit_op(&reset_node, by_ref ? ZEND_FE_RESET_RW : ZEND_FE_RESET_R, &expr_node, NULL);
  ------------------
  |  |  200|    317|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (6414:37): [True: 73, False: 122]
  ------------------
 6415|    195|	if (!by_ref) {
  ------------------
  |  Branch (6415:6): [True: 120, False: 75]
  ------------------
 6416|    120|		opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|    120|#define IS_TMP_VAR	(1<<1)
  ------------------
 6417|    120|		reset_node.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|    120|#define IS_TMP_VAR	(1<<1)
  ------------------
 6418|    120|	}
 6419|       |
 6420|    195|	zend_begin_loop(ZEND_FE_FREE, &reset_node, false);
  ------------------
  |  |  249|    195|#define ZEND_FE_FREE                        127
  ------------------
 6421|       |
 6422|    195|	opnum_fetch = get_next_op_number();
 6423|    195|	opline = zend_emit_op(NULL, by_ref ? ZEND_FE_FETCH_RW : ZEND_FE_FETCH_R, &reset_node, NULL);
  ------------------
  |  |  248|     73|#define ZEND_FE_FETCH_RW                    126
  ------------------
              	opline = zend_emit_op(NULL, by_ref ? ZEND_FE_FETCH_RW : ZEND_FE_FETCH_R, &reset_node, NULL);
  ------------------
  |  |  201|    317|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (6423:30): [True: 73, False: 122]
  ------------------
 6424|       |
 6425|    195|	if (is_this_fetch(value_ast)) {
  ------------------
  |  Branch (6425:6): [True: 1, False: 194]
  ------------------
 6426|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign $this");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6427|    194|	} else if (value_ast->kind == ZEND_AST_VAR &&
  ------------------
  |  Branch (6427:13): [True: 183, False: 11]
  ------------------
 6428|    183|		zend_try_compile_cv(&value_node, value_ast, BP_VAR_R) == SUCCESS) {
  ------------------
  |  | 1074|    183|#define BP_VAR_R			0
  ------------------
  |  Branch (6428:3): [True: 177, False: 6]
  ------------------
 6429|    177|		SET_NODE(opline->op2, &value_node);
  ------------------
  |  |   42|    177|#define SET_NODE(target, src) do { \
  |  |   43|    177|		target ## _type = (src)->op_type; \
  |  |   44|    177|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    177|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 177]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    177|		} else { \
  |  |   47|    177|			target = (src)->u.op; \
  |  |   48|    177|		} \
  |  |   49|    177|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 177]
  |  |  ------------------
  ------------------
 6430|    177|	} else {
 6431|     17|		opline->op2_type = by_ref ? IS_VAR : IS_TMP_VAR;
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
              		opline->op2_type = by_ref ? IS_VAR : IS_TMP_VAR;
  ------------------
  |  |  865|     29|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (6431:22): [True: 5, False: 12]
  ------------------
 6432|     17|		opline->op2.var = get_temporary_variable();
 6433|     17|		GET_NODE(&value_node, opline->op2);
  ------------------
  |  |   51|     17|#define GET_NODE(target, src) do { \
  |  |   52|     17|		(target)->op_type = src ## _type; \
  |  |   53|     17|		if ((target)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     17|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (53:7): [True: 0, False: 17]
  |  |  ------------------
  |  |   54|      0|			ZVAL_COPY_VALUE(&(target)->u.constant, CT_CONSTANT(src)); \
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     17|		} else { \
  |  |   56|     17|			(target)->u.op = src; \
  |  |   57|     17|		} \
  |  |   58|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (58:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 6434|     17|		if (value_ast->kind == ZEND_AST_ARRAY) {
  ------------------
  |  Branch (6434:7): [True: 5, False: 12]
  ------------------
 6435|      5|			zend_compile_list_assign(NULL, value_ast, &value_node, value_ast->attr, BP_VAR_R);
  ------------------
  |  | 1074|      5|#define BP_VAR_R			0
  ------------------
 6436|     12|		} else if (by_ref) {
  ------------------
  |  Branch (6436:14): [True: 4, False: 8]
  ------------------
 6437|      4|			zend_emit_assign_ref_znode(value_ast, &value_node);
 6438|      8|		} else {
 6439|      8|			zend_emit_assign_znode(value_ast, &value_node);
 6440|      8|		}
 6441|     17|	}
 6442|       |
 6443|    194|	if (key_ast) {
  ------------------
  |  Branch (6443:6): [True: 32, False: 162]
  ------------------
 6444|     32|		opline = &CG(active_op_array)->opcodes[opnum_fetch];
  ------------------
  |  |   35|     32|# define CG(v) (compiler_globals.v)
  ------------------
 6445|     32|		zend_make_tmp_result(&key_node, opline);
 6446|     32|		zend_emit_assign_znode(key_ast, &key_node);
 6447|     32|	}
 6448|       |
 6449|    194|	zend_compile_stmt(stmt_ast);
 6450|       |
 6451|       |	/* Place JMP and FE_FREE on the line where foreach starts. It would be
 6452|       |	 * better to use the end line, but this information is not available
 6453|       |	 * currently. */
 6454|    194|	CG(zend_lineno) = ast->lineno;
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
 6455|    194|	zend_emit_jump(opnum_fetch);
 6456|       |
 6457|    194|	opline = &CG(active_op_array)->opcodes[opnum_reset];
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
 6458|    194|	opline->op2.opline_num = get_next_op_number();
 6459|       |
 6460|    194|	opline = &CG(active_op_array)->opcodes[opnum_fetch];
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
 6461|    194|	opline->extended_value = get_next_op_number();
 6462|       |
 6463|    194|	zend_end_loop(opnum_fetch, &reset_node);
 6464|       |
 6465|    194|	opline = zend_emit_op(NULL, ZEND_FE_FREE, &reset_node, NULL);
  ------------------
  |  |  249|    194|#define ZEND_FE_FREE                        127
  ------------------
 6466|    194|}
zend_compile.c:zend_can_write_to_variable:
 2789|    259|{
 2790|    259|	while (
 2791|    287|		ast->kind == ZEND_AST_DIM
  ------------------
  |  Branch (2791:3): [True: 25, False: 262]
  ------------------
 2792|    262|		|| ast->kind == ZEND_AST_PROP
  ------------------
  |  Branch (2792:6): [True: 3, False: 259]
  ------------------
 2793|    259|	) {
 2794|     28|		ast = ast->child[0];
 2795|     28|	}
 2796|       |
 2797|    259|	return zend_is_variable_or_call(ast) && !zend_ast_is_short_circuited(ast);
  ------------------
  |  Branch (2797:9): [True: 255, False: 4]
  |  Branch (2797:42): [True: 253, False: 2]
  ------------------
 2798|    259|}
zend_compile.c:zend_compile_list_assign:
 3339|    100|{
 3340|    100|	zend_ast_list *list = zend_ast_get_list(ast);
 3341|    100|	uint32_t i;
 3342|    100|	bool has_elems = false;
 3343|    100|	bool is_keyed = list_is_keyed(list);
 3344|       |
 3345|    100|	if (list->children && expr_node->op_type == IS_CONST && Z_TYPE(expr_node->u.constant) == IS_STRING) {
  ------------------
  |  |  864|    199|#define IS_CONST	(1<<0)
  ------------------
              	if (list->children && expr_node->op_type == IS_CONST && Z_TYPE(expr_node->u.constant) == IS_STRING) {
  ------------------
  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (list->children && expr_node->op_type == IS_CONST && Z_TYPE(expr_node->u.constant) == IS_STRING) {
  ------------------
  |  |  612|     30|#define IS_STRING					6
  ------------------
  |  Branch (3345:6): [True: 99, False: 1]
  |  Branch (3345:24): [True: 30, False: 69]
  |  Branch (3345:58): [True: 5, False: 25]
  ------------------
 3346|      5|		zval_make_interned_string(&expr_node->u.constant);
 3347|      5|	}
 3348|       |
 3349|    261|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (3349:14): [True: 161, False: 100]
  ------------------
 3350|    161|		zend_ast *elem_ast = list->child[i];
 3351|    161|		zend_ast *var_ast, *key_ast;
 3352|    161|		znode fetch_result, dim_node;
 3353|    161|		zend_op *opline;
 3354|       |
 3355|    161|		if (elem_ast == NULL) {
  ------------------
  |  Branch (3355:7): [True: 16, False: 145]
  ------------------
 3356|     16|			if (is_keyed) {
  ------------------
  |  Branch (3356:8): [True: 1, False: 15]
  ------------------
 3357|      1|				zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3358|      1|					"Cannot use empty array entries in keyed array assignment");
 3359|     15|			} else {
 3360|     15|				continue;
 3361|     15|			}
 3362|     16|		}
 3363|       |
 3364|    146|		if (elem_ast->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (3364:7): [True: 2, False: 144]
  ------------------
 3365|      2|			zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3366|      2|					"Spread operator is not supported in assignments");
 3367|      2|		}
 3368|       |
 3369|    146|		var_ast = elem_ast->child[0];
 3370|    146|		key_ast = elem_ast->child[1];
 3371|    146|		has_elems = true;
 3372|       |
 3373|    146|		if (is_keyed) {
  ------------------
  |  Branch (3373:7): [True: 28, False: 118]
  ------------------
 3374|     28|			if (key_ast == NULL) {
  ------------------
  |  Branch (3374:8): [True: 1, False: 27]
  ------------------
 3375|      1|				zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3376|      1|					"Cannot mix keyed and unkeyed array entries in assignments");
 3377|      1|			}
 3378|       |
 3379|     28|			zend_compile_expr(&dim_node, key_ast);
 3380|    118|		} else {
 3381|    118|			if (key_ast != NULL) {
  ------------------
  |  Branch (3381:8): [True: 1, False: 117]
  ------------------
 3382|      1|				zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3383|      1|					"Cannot mix keyed and unkeyed array entries in assignments");
 3384|      1|			}
 3385|       |
 3386|    118|			dim_node.op_type = IS_CONST;
  ------------------
  |  |  864|    118|#define IS_CONST	(1<<0)
  ------------------
 3387|    118|			ZVAL_LONG(&dim_node.u.constant, i);
  ------------------
  |  | 1076|    118|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    118|		zval *__z = (z);				\
  |  | 1078|    118|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    118|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    118|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    118|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    118|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    118|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    118|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    118|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 118]
  |  |  ------------------
  ------------------
 3388|    118|		}
 3389|       |
 3390|    146|		if (expr_node->op_type == IS_CONST) {
  ------------------
  |  |  864|    146|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3390:7): [True: 30, False: 116]
  ------------------
 3391|     30|			Z_TRY_ADDREF(expr_node->u.constant);
  ------------------
  |  | 1299|     30|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|     30|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|     30|	zval *_pz = (pz);				\
  |  |  |  | 1287|     30|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|     30|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|     30|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|     30|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 16, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|     16|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|     16|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|     16|	}								\
  |  |  |  | 1290|     30|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3392|     30|		}
 3393|       |
 3394|    146|		zend_verify_list_assign_target(var_ast, array_style);
 3395|       |
 3396|    146|		opline = zend_emit_op(&fetch_result,
 3397|    146|			elem_ast->attr ? (expr_node->op_type == IS_CV ? ZEND_FETCH_DIM_W : ZEND_FETCH_LIST_W) : ZEND_FETCH_LIST_R, expr_node, &dim_node);
  ------------------
  |  |  867|     27|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			elem_ast->attr ? (expr_node->op_type == IS_CV ? ZEND_FETCH_DIM_W : ZEND_FETCH_LIST_W) : ZEND_FETCH_LIST_R, expr_node, &dim_node);
  ------------------
  |  |  206|      0|#define ZEND_FETCH_DIM_W                     84
  ------------------
              			elem_ast->attr ? (expr_node->op_type == IS_CV ? ZEND_FETCH_DIM_W : ZEND_FETCH_LIST_W) : ZEND_FETCH_LIST_R, expr_node, &dim_node);
  ------------------
  |  |  277|     27|#define ZEND_FETCH_LIST_W                   155
  ------------------
              			elem_ast->attr ? (expr_node->op_type == IS_CV ? ZEND_FETCH_DIM_W : ZEND_FETCH_LIST_W) : ZEND_FETCH_LIST_R, expr_node, &dim_node);
  ------------------
  |  |  220|    265|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (3397:4): [True: 27, False: 119]
  |  Branch (3397:22): [True: 0, False: 27]
  ------------------
 3398|    146|		if (opline->opcode == ZEND_FETCH_LIST_R) {
  ------------------
  |  |  220|    146|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (3398:7): [True: 109, False: 37]
  ------------------
 3399|    109|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|    109|#define IS_TMP_VAR	(1<<1)
  ------------------
 3400|    109|			fetch_result.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|    109|#define IS_TMP_VAR	(1<<1)
  ------------------
 3401|    109|		}
 3402|       |
 3403|    146|		if (dim_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    146|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3403:7): [True: 117, False: 29]
  ------------------
 3404|    117|			zend_handle_numeric_dim(opline, &dim_node);
 3405|    117|		}
 3406|       |
 3407|    146|		if (elem_ast->attr) {
  ------------------
  |  Branch (3407:7): [True: 27, False: 119]
  ------------------
 3408|     27|			zend_emit_op(&fetch_result, ZEND_MAKE_REF, &fetch_result, NULL);
  ------------------
  |  |  262|     27|#define ZEND_MAKE_REF                       140
  ------------------
 3409|     27|		}
 3410|    146|		if (var_ast->kind == ZEND_AST_ARRAY) {
  ------------------
  |  Branch (3410:7): [True: 11, False: 135]
  ------------------
 3411|     11|			zend_compile_list_assign(NULL, var_ast, &fetch_result, var_ast->attr, type);
 3412|    135|		} else if (elem_ast->attr) {
  ------------------
  |  Branch (3412:14): [True: 24, False: 111]
  ------------------
 3413|     24|			zend_emit_assign_ref_znode(var_ast, &fetch_result);
 3414|    111|		} else {
 3415|    111|			zend_emit_assign_znode(var_ast, &fetch_result);
 3416|    111|		}
 3417|    146|	}
 3418|       |
 3419|    100|	if (has_elems == 0) {
  ------------------
  |  Branch (3419:6): [True: 2, False: 98]
  ------------------
 3420|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use empty list");
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3421|      2|	}
 3422|       |
 3423|     98|	if (result) {
  ------------------
  |  Branch (3423:6): [True: 21, False: 77]
  ------------------
 3424|     21|		if ((type == BP_VAR_R || type == BP_VAR_IS) && expr_node->op_type == IS_VAR) {
  ------------------
  |  | 1074|     42|#define BP_VAR_R			0
  ------------------
              		if ((type == BP_VAR_R || type == BP_VAR_IS) && expr_node->op_type == IS_VAR) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
              		if ((type == BP_VAR_R || type == BP_VAR_IS) && expr_node->op_type == IS_VAR) {
  ------------------
  |  |  866|     21|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (3424:8): [True: 21, False: 0]
  |  Branch (3424:28): [True: 0, False: 0]
  |  Branch (3424:50): [True: 6, False: 15]
  ------------------
 3425|       |			/* Deref. */
 3426|      6|			zend_emit_op_tmp(result, ZEND_QM_ASSIGN, expr_node, NULL);
  ------------------
  |  |  155|      6|#define ZEND_QM_ASSIGN                       31
  ------------------
 3427|     15|		} else {
 3428|     15|			*result = *expr_node;
 3429|     15|		}
 3430|     77|	} else {
 3431|     77|		zend_do_free(expr_node);
 3432|     77|	}
 3433|     98|}
zend_compile.c:list_is_keyed:
 3327|    100|{
 3328|    115|	for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (3328:23): [True: 113, False: 2]
  ------------------
 3329|    113|		const zend_ast *child = list->child[i];
 3330|    113|		if (child) {
  ------------------
  |  Branch (3330:7): [True: 98, False: 15]
  ------------------
 3331|     98|			return child->kind == ZEND_AST_ARRAY_ELEM && child->child[1] != NULL;
  ------------------
  |  Branch (3331:11): [True: 97, False: 1]
  |  Branch (3331:49): [True: 16, False: 81]
  ------------------
 3332|     98|		}
 3333|    113|	}
 3334|      2|	return false;
 3335|    100|}
zend_compile.c:zend_verify_list_assign_target:
 3288|    141|static void zend_verify_list_assign_target(const zend_ast *var_ast, zend_ast_attr array_style) /* {{{ */ {
 3289|    141|	if (var_ast->kind == ZEND_AST_ARRAY) {
  ------------------
  |  Branch (3289:6): [True: 13, False: 128]
  ------------------
 3290|     13|		if (var_ast->attr == ZEND_ARRAY_SYNTAX_LONG) {
  ------------------
  |  | 1070|     13|#define ZEND_ARRAY_SYNTAX_LONG 2  /* array() */
  ------------------
  |  Branch (3290:7): [True: 1, False: 12]
  ------------------
 3291|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot assign to array(), use [] instead");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3292|      1|		}
 3293|     12|		if (array_style != var_ast->attr) {
  ------------------
  |  Branch (3293:7): [True: 1, False: 11]
  ------------------
 3294|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot mix [] and list()");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3295|      1|		}
 3296|    128|	} else if (!zend_can_write_to_variable(var_ast)) {
  ------------------
  |  Branch (3296:13): [True: 3, False: 125]
  ------------------
 3297|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Assignments can only happen to writable values");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3298|      3|	}
 3299|    141|}
zend_compile.c:zend_emit_assign_znode:
 3077|    139|{
 3078|    139|	znode dummy_node;
 3079|    139|	zend_ast *assign_ast = zend_ast_create(ZEND_AST_ASSIGN, var_ast,
  ------------------
  |  |  316|    139|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    139|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    139|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3080|    139|		zend_ast_create_znode(value_node));
 3081|    139|	zend_compile_expr(&dummy_node, assign_ast);
 3082|    139|	zend_do_free(&dummy_node);
 3083|    139|}
zend_compile.c:zend_compile_if:
 6470|     85|{
 6471|     85|	const zend_ast_list *list = zend_ast_get_list(ast);
 6472|     85|	uint32_t i;
 6473|     85|	uint32_t *jmp_opnums = NULL;
 6474|       |
 6475|     85|	if (list->children > 1) {
  ------------------
  |  Branch (6475:6): [True: 5, False: 80]
  ------------------
 6476|      5|		jmp_opnums = safe_emalloc(sizeof(uint32_t), list->children - 1, 0);
  ------------------
  |  |  153|      5|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6477|      5|	}
 6478|       |
 6479|    175|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (6479:14): [True: 90, False: 85]
  ------------------
 6480|     90|		const zend_ast *elem_ast = list->child[i];
 6481|     90|		zend_ast *cond_ast = elem_ast->child[0];
 6482|     90|		zend_ast *stmt_ast = elem_ast->child[1];
 6483|       |
 6484|     90|		if (cond_ast) {
  ------------------
  |  Branch (6484:7): [True: 85, False: 5]
  ------------------
 6485|     85|			znode cond_node;
 6486|     85|			uint32_t opnum_jmpz;
 6487|       |
 6488|     85|			if (i > 0) {
  ------------------
  |  Branch (6488:8): [True: 0, False: 85]
  ------------------
 6489|      0|				CG(zend_lineno) = cond_ast->lineno;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 6490|      0|				zend_do_extended_stmt(NULL);
 6491|      0|			}
 6492|       |
 6493|     85|			zend_compile_expr(&cond_node, cond_ast);
 6494|     85|			opnum_jmpz = zend_emit_cond_jump(ZEND_JMPZ, &cond_node, 0);
  ------------------
  |  |  167|     85|#define ZEND_JMPZ                            43
  ------------------
 6495|       |
 6496|     85|			zend_compile_stmt(stmt_ast);
 6497|       |
 6498|     85|			if (i != list->children - 1) {
  ------------------
  |  Branch (6498:8): [True: 5, False: 80]
  ------------------
 6499|       |				/* Set the lineno of JMP to the position of the if keyword, as we don't want to
 6500|       |				 * report the last line in the if branch as covered if it hasn't actually executed. */
 6501|      5|				CG(zend_lineno) = elem_ast->lineno;
  ------------------
  |  |   35|      5|# define CG(v) (compiler_globals.v)
  ------------------
 6502|      5|				jmp_opnums[i] = zend_emit_jump(0);
 6503|      5|			}
 6504|     85|			zend_update_jump_target_to_next(opnum_jmpz);
 6505|     85|		} else {
 6506|       |			/* "else" can only occur as last element. */
 6507|      5|			ZEND_ASSERT(i == list->children - 1);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6507:4): [True: 0, False: 5]
  |  Branch (6507:4): [True: 5, False: 0]
  ------------------
 6508|      5|			zend_compile_stmt(stmt_ast);
 6509|      5|		}
 6510|     90|	}
 6511|       |
 6512|     85|	if (list->children > 1) {
  ------------------
  |  Branch (6512:6): [True: 5, False: 80]
  ------------------
 6513|     10|		for (i = 0; i < list->children - 1; ++i) {
  ------------------
  |  Branch (6513:15): [True: 5, False: 5]
  ------------------
 6514|      5|			zend_update_jump_target_to_next(jmp_opnums[i]);
 6515|      5|		}
 6516|       |		efree(jmp_opnums);
  ------------------
  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6517|      5|	}
 6518|     85|}
zend_compile.c:zend_compile_switch:
 6578|     17|{
 6579|     17|	zend_ast *expr_ast = ast->child[0];
 6580|     17|	zend_ast_list *cases = zend_ast_get_list(ast->child[1]);
 6581|       |
 6582|     17|	uint32_t i;
 6583|     17|	bool has_default_case = false;
 6584|       |
 6585|     17|	znode expr_node, case_node;
 6586|     17|	zend_op *opline;
 6587|     17|	uint32_t *jmpnz_opnums, opnum_default_jmp, opnum_switch = (uint32_t)-1;
 6588|     17|	uint8_t jumptable_type;
 6589|     17|	HashTable *jumptable = NULL;
 6590|       |
 6591|     17|	zend_compile_expr(&expr_node, expr_ast);
 6592|       |
 6593|     17|	zend_begin_loop(ZEND_FREE, &expr_node, true);
  ------------------
  |  |  193|     17|#define ZEND_FREE                            70
  ------------------
 6594|       |
 6595|     17|	case_node.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
 6596|     17|	case_node.u.op.var = get_temporary_variable();
 6597|       |
 6598|     17|	jumptable_type = determine_switch_jumptable_type(cases);
 6599|     17|	if (jumptable_type != IS_UNDEF && should_use_jumptable(cases, jumptable_type)) {
  ------------------
  |  |  606|     34|#define IS_UNDEF					0
  ------------------
  |  Branch (6599:6): [True: 11, False: 6]
  |  Branch (6599:36): [True: 0, False: 11]
  ------------------
 6600|      0|		znode jumptable_op;
 6601|       |
 6602|      0|		ALLOC_HASHTABLE(jumptable);
  ------------------
  |  |  232|      0|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6603|      0|		zend_hash_init(jumptable, cases->children, NULL, NULL, 0);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 6604|      0|		jumptable_op.op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 6605|      0|		ZVAL_ARR(&jumptable_op.u.constant, jumptable);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6606|       |
 6607|      0|		opline = zend_emit_op(NULL,
 6608|      0|			jumptable_type == IS_LONG ? ZEND_SWITCH_LONG : ZEND_SWITCH_STRING,
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
              			jumptable_type == IS_LONG ? ZEND_SWITCH_LONG : ZEND_SWITCH_STRING,
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
              			jumptable_type == IS_LONG ? ZEND_SWITCH_LONG : ZEND_SWITCH_STRING,
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (6608:4): [True: 0, False: 0]
  ------------------
 6609|      0|			&expr_node, &jumptable_op);
 6610|      0|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6610:7): [True: 0, False: 0]
  ------------------
 6611|      0|			Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6612|      0|		}
 6613|      0|		opnum_switch = opline - CG(active_op_array)->opcodes;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 6614|      0|	}
 6615|       |
 6616|     17|	jmpnz_opnums = safe_emalloc(sizeof(uint32_t), cases->children, 0);
  ------------------
  |  |  153|     17|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6617|     35|	for (i = 0; i < cases->children; ++i) {
  ------------------
  |  Branch (6617:14): [True: 18, False: 17]
  ------------------
 6618|     18|		zend_ast *case_ast = cases->child[i];
 6619|     18|		zend_ast *cond_ast = case_ast->child[0];
 6620|     18|		znode cond_node;
 6621|       |
 6622|     18|		if (case_ast->attr == ZEND_ALT_CASE_SYNTAX) {
  ------------------
  |  | 1139|     18|#define ZEND_ALT_CASE_SYNTAX		(1 << 1) /* deprecated switch case terminated by semicolon */
  ------------------
  |  Branch (6622:7): [True: 0, False: 18]
  ------------------
 6623|      0|			CG(zend_lineno) = case_ast->lineno;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 6624|      0|			zend_error(E_DEPRECATED, "Case statements followed by a semicolon (;) are deprecated, use a colon (:) instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 6625|      0|		}
 6626|       |
 6627|     18|		if (!cond_ast) {
  ------------------
  |  Branch (6627:7): [True: 2, False: 16]
  ------------------
 6628|      2|			if (has_default_case) {
  ------------------
  |  Branch (6628:8): [True: 0, False: 2]
  ------------------
 6629|      0|				CG(zend_lineno) = case_ast->lineno;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 6630|      0|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6631|      0|					"Switch statements may only contain one default clause");
 6632|      0|			}
 6633|      2|			has_default_case = true;
 6634|      2|			continue;
 6635|      2|		}
 6636|       |
 6637|     16|		zend_compile_expr(&cond_node, cond_ast);
 6638|       |
 6639|     16|		if (expr_node.op_type == IS_CONST
  ------------------
  |  |  864|     32|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6639:7): [True: 3, False: 13]
  ------------------
 6640|      3|			&& Z_TYPE(expr_node.u.constant) == IS_FALSE) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			&& Z_TYPE(expr_node.u.constant) == IS_FALSE) {
  ------------------
  |  |  608|      3|#define IS_FALSE					2
  ------------------
  |  Branch (6640:7): [True: 0, False: 3]
  ------------------
 6641|      0|			jmpnz_opnums[i] = zend_emit_cond_jump(ZEND_JMPZ, &cond_node, 0);
  ------------------
  |  |  167|      0|#define ZEND_JMPZ                            43
  ------------------
 6642|     16|		} else if (expr_node.op_type == IS_CONST
  ------------------
  |  |  864|     32|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6642:14): [True: 3, False: 13]
  ------------------
 6643|      3|			&& Z_TYPE(expr_node.u.constant) == IS_TRUE) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			&& Z_TYPE(expr_node.u.constant) == IS_TRUE) {
  ------------------
  |  |  609|      3|#define IS_TRUE						3
  ------------------
  |  Branch (6643:7): [True: 0, False: 3]
  ------------------
 6644|      0|			jmpnz_opnums[i] = zend_emit_cond_jump(ZEND_JMPNZ, &cond_node, 0);
  ------------------
  |  |  168|      0|#define ZEND_JMPNZ                           44
  ------------------
 6645|     16|		} else {
 6646|     16|			opline = zend_emit_op(NULL,
 6647|     16|				(expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE : ZEND_IS_EQUAL,
  ------------------
  |  |  866|     16|#define IS_VAR		(1<<2)
  ------------------
              				(expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE : ZEND_IS_EQUAL,
  ------------------
  |  |  865|     16|#define IS_TMP_VAR	(1<<1)
  ------------------
              				(expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE : ZEND_IS_EQUAL,
  ------------------
  |  |  171|      8|#define ZEND_CASE                            48
  ------------------
              				(expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE : ZEND_IS_EQUAL,
  ------------------
  |  |  142|     24|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (6647:5): [True: 8, False: 8]
  ------------------
 6648|     16|				&expr_node, &cond_node);
 6649|     16|			SET_NODE(opline->result, &case_node);
  ------------------
  |  |   42|     16|#define SET_NODE(target, src) do { \
  |  |   43|     16|		target ## _type = (src)->op_type; \
  |  |   44|     16|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     16|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 16]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     16|		} else { \
  |  |   47|     16|			target = (src)->u.op; \
  |  |   48|     16|		} \
  |  |   49|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 6650|     16|			if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6650:8): [True: 3, False: 13]
  ------------------
 6651|      3|				Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
  ------------------
  |  | 1285|      3|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      3|	zval *_pz = (pz);				\
  |  | 1287|      3|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      3|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      3|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
 6652|      3|			}
 6653|       |
 6654|     16|			jmpnz_opnums[i] = zend_emit_cond_jump(ZEND_JMPNZ, &case_node, 0);
  ------------------
  |  |  168|     16|#define ZEND_JMPNZ                           44
  ------------------
 6655|     16|		}
 6656|     16|	}
 6657|       |
 6658|     17|	opnum_default_jmp = zend_emit_jump(0);
 6659|       |
 6660|     35|	for (i = 0; i < cases->children; ++i) {
  ------------------
  |  Branch (6660:14): [True: 18, False: 17]
  ------------------
 6661|     18|		zend_ast *case_ast = cases->child[i];
 6662|     18|		zend_ast *cond_ast = case_ast->child[0];
 6663|     18|		zend_ast *stmt_ast = case_ast->child[1];
 6664|       |
 6665|     18|		if (cond_ast) {
  ------------------
  |  Branch (6665:7): [True: 16, False: 2]
  ------------------
 6666|     16|			zend_update_jump_target_to_next(jmpnz_opnums[i]);
 6667|       |
 6668|     16|			if (jumptable) {
  ------------------
  |  Branch (6668:8): [True: 0, False: 16]
  ------------------
 6669|      0|				zval *cond_zv = zend_ast_get_zval(cond_ast);
 6670|      0|				zval jmp_target;
 6671|      0|				ZVAL_LONG(&jmp_target, get_next_op_number());
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6672|       |
 6673|      0|				ZEND_ASSERT(Z_TYPE_P(cond_zv) == jumptable_type);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6673:5): [True: 0, False: 0]
  |  Branch (6673:5): [True: 0, False: 0]
  ------------------
 6674|      0|				if (Z_TYPE_P(cond_zv) == IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(cond_zv) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (6674:9): [True: 0, False: 0]
  ------------------
 6675|      0|					zend_hash_index_add(jumptable, Z_LVAL_P(cond_zv), &jmp_target);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6676|      0|				} else {
 6677|      0|					ZEND_ASSERT(Z_TYPE_P(cond_zv) == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6677:6): [True: 0, False: 0]
  |  Branch (6677:6): [True: 0, False: 0]
  ------------------
 6678|      0|					zend_hash_add(jumptable, Z_STR_P(cond_zv), &jmp_target);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 6679|      0|				}
 6680|      0|			}
 6681|     16|		} else {
 6682|      2|			zend_update_jump_target_to_next(opnum_default_jmp);
 6683|       |
 6684|      2|			if (jumptable) {
  ------------------
  |  Branch (6684:8): [True: 0, False: 2]
  ------------------
 6685|      0|				ZEND_ASSERT(opnum_switch != (uint32_t)-1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6685:5): [True: 0, False: 0]
  |  Branch (6685:5): [True: 0, False: 0]
  ------------------
 6686|      0|				opline = &CG(active_op_array)->opcodes[opnum_switch];
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 6687|      0|				opline->extended_value = get_next_op_number();
 6688|      0|			}
 6689|      2|		}
 6690|       |
 6691|     18|		zend_compile_stmt(stmt_ast);
 6692|     18|	}
 6693|       |
 6694|     17|	if (!has_default_case) {
  ------------------
  |  Branch (6694:6): [True: 15, False: 2]
  ------------------
 6695|     15|		zend_update_jump_target_to_next(opnum_default_jmp);
 6696|       |
 6697|     15|		if (jumptable) {
  ------------------
  |  Branch (6697:7): [True: 0, False: 15]
  ------------------
 6698|      0|			opline = &CG(active_op_array)->opcodes[opnum_switch];
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 6699|      0|			opline->extended_value = get_next_op_number();
 6700|      0|		}
 6701|     15|	}
 6702|       |
 6703|     17|	zend_end_loop(get_next_op_number(), &expr_node);
 6704|       |
 6705|     17|	if (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              	if (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (6705:6): [True: 10, False: 7]
  ------------------
 6706|     10|		opline = zend_emit_op(NULL, ZEND_FREE, &expr_node, NULL);
  ------------------
  |  |  193|     10|#define ZEND_FREE                            70
  ------------------
 6707|     10|		opline->extended_value = ZEND_FREE_SWITCH;
  ------------------
  |  | 1113|     10|#define ZEND_FREE_SWITCH        (1<<1)
  ------------------
 6708|     10|	} else if (expr_node.op_type == IS_CONST) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6708:13): [True: 3, False: 4]
  ------------------
 6709|      3|		zval_ptr_dtor_nogc(&expr_node.u.constant);
 6710|      3|	}
 6711|       |
 6712|       |	efree(jmpnz_opnums);
  ------------------
  |  |  154|     17|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6713|     17|}
zend_compile.c:determine_switch_jumptable_type:
 6521|     17|static uint8_t determine_switch_jumptable_type(const zend_ast_list *cases) {
 6522|     17|	uint32_t i;
 6523|     17|	uint8_t common_type = IS_UNDEF;
  ------------------
  |  |  606|     17|#define IS_UNDEF					0
  ------------------
 6524|     30|	for (i = 0; i < cases->children; i++) {
  ------------------
  |  Branch (6524:14): [True: 17, False: 13]
  ------------------
 6525|     17|		zend_ast *case_ast = cases->child[i];
 6526|     17|		zend_ast **cond_ast = &case_ast->child[0];
 6527|     17|		const zval *cond_zv;
 6528|     17|		if (!case_ast->child[0]) {
  ------------------
  |  Branch (6528:7): [True: 2, False: 15]
  ------------------
 6529|       |			/* Skip default clause */
 6530|      2|			continue;
 6531|      2|		}
 6532|       |
 6533|     15|		zend_eval_const_expr(cond_ast);
 6534|     15|		if ((*cond_ast)->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (6534:7): [True: 1, False: 14]
  ------------------
 6535|       |			/* Non-constant case */
 6536|      1|			return IS_UNDEF;
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
 6537|      1|		}
 6538|       |
 6539|     14|		cond_zv = zend_ast_get_zval(case_ast->child[0]);
 6540|     14|		if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  610|     28|#define IS_LONG						4
  ------------------
              		if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  612|      9|#define IS_STRING					6
  ------------------
  |  Branch (6540:7): [True: 9, False: 5]
  |  Branch (6540:39): [True: 3, False: 6]
  ------------------
 6541|       |			/* We only optimize switched on integers and strings */
 6542|      3|			return IS_UNDEF;
  ------------------
  |  |  606|      3|#define IS_UNDEF					0
  ------------------
 6543|      3|		}
 6544|       |
 6545|     11|		if (common_type == IS_UNDEF) {
  ------------------
  |  |  606|     11|#define IS_UNDEF					0
  ------------------
  |  Branch (6545:7): [True: 11, False: 0]
  ------------------
 6546|     11|			common_type = Z_TYPE_P(cond_zv);
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 6547|     11|		} else if (common_type != Z_TYPE_P(cond_zv)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (6547:14): [True: 0, False: 0]
  ------------------
 6548|       |			/* Non-uniform case types */
 6549|      0|			return IS_UNDEF;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
 6550|      0|		}
 6551|       |
 6552|     11|		if (Z_TYPE_P(cond_zv) == IS_STRING
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(cond_zv) == IS_STRING
  ------------------
  |  |  612|     22|#define IS_STRING					6
  ------------------
  |  Branch (6552:7): [True: 6, False: 5]
  ------------------
 6553|      6|				&& is_numeric_string(Z_STRVAL_P(cond_zv), Z_STRLEN_P(cond_zv), NULL, NULL, 0)) {
  ------------------
  |  |  985|      6|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      6|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				&& is_numeric_string(Z_STRVAL_P(cond_zv), Z_STRLEN_P(cond_zv), NULL, NULL, 0)) {
  ------------------
  |  |  988|      6|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      6|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6553:8): [True: 0, False: 6]
  ------------------
 6554|       |			/* Numeric strings cannot be compared with a simple hash lookup */
 6555|      0|			return IS_UNDEF;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
 6556|      0|		}
 6557|     11|	}
 6558|       |
 6559|     13|	return common_type;
 6560|     17|}
zend_compile.c:should_use_jumptable:
 6562|     11|static bool should_use_jumptable(const zend_ast_list *cases, uint8_t jumptable_type) {
 6563|     11|	if (CG(compiler_options) & ZEND_COMPILE_NO_JUMPTABLES) {
  ------------------
  |  |   35|     11|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_NO_JUMPTABLES) {
  ------------------
  |  | 1307|     11|#define ZEND_COMPILE_NO_JUMPTABLES				(1<<16)
  ------------------
  |  Branch (6563:6): [True: 0, False: 11]
  ------------------
 6564|      0|		return false;
 6565|      0|	}
 6566|       |
 6567|       |	/* Thresholds are chosen based on when the average switch time for equidistributed
 6568|       |	 * input becomes smaller when using the jumptable optimization. */
 6569|     11|	if (jumptable_type == IS_LONG) {
  ------------------
  |  |  610|     11|#define IS_LONG						4
  ------------------
  |  Branch (6569:6): [True: 5, False: 6]
  ------------------
 6570|      5|		return cases->children >= 5;
 6571|      6|	} else {
 6572|      6|		ZEND_ASSERT(jumptable_type == IS_STRING);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6572:3): [True: 0, False: 6]
  |  Branch (6572:3): [True: 6, False: 0]
  ------------------
 6573|      6|		return cases->children >= 2;
 6574|      6|	}
 6575|     11|}
zend_compile.c:zend_compile_try:
 7018|    228|{
 7019|    228|	zend_ast *try_ast = ast->child[0];
 7020|    228|	const zend_ast_list *catches = zend_ast_get_list(ast->child[1]);
 7021|    228|	zend_ast *finally_ast = ast->child[2];
 7022|       |
 7023|    228|	uint32_t i, j;
 7024|    228|	zend_op *opline;
 7025|    228|	uint32_t try_catch_offset;
 7026|    228|	uint32_t *jmp_opnums = safe_emalloc(sizeof(uint32_t), catches->children, 0);
  ------------------
  |  |  153|    228|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    228|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    228|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    228|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    228|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7027|    228|	uint32_t orig_fast_call_var = CG(context).fast_call_var;
  ------------------
  |  |   35|    228|# define CG(v) (compiler_globals.v)
  ------------------
 7028|    228|	uint32_t orig_try_catch_offset = CG(context).try_catch_offset;
  ------------------
  |  |   35|    228|# define CG(v) (compiler_globals.v)
  ------------------
 7029|       |
 7030|    228|	if (catches->children == 0 && !finally_ast) {
  ------------------
  |  Branch (7030:6): [True: 39, False: 189]
  |  Branch (7030:32): [True: 3, False: 36]
  ------------------
 7031|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use try without catch or finally");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7032|      3|	}
 7033|       |
 7034|       |	/* label: try { } must not be equal to try { label: } */
 7035|    225|	if (CG(context).labels) {
  ------------------
  |  |   35|    225|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (7035:6): [True: 2, False: 223]
  ------------------
 7036|      2|		zend_label *label;
 7037|      2|		ZEND_HASH_MAP_REVERSE_FOREACH_PTR(CG(context).labels, label) {
  ------------------
  |  | 1349|      2|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|      2|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|      2|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|      2|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|      2|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|      2|		zval *_z; \
  |  |  |  | 1281|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|      2|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|      2|			_p--; \
  |  |  |  | 1284|      2|			_z = &_p->val; \
  |  |  |  | 1285|      2|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 2]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1350|      2|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7037:3): [True: 0, False: 2]
  |  Branch (7037:3): [True: 2, False: 0]
  ------------------
 7038|      2|			if (label->opline_num == get_next_op_number()) {
  ------------------
  |  Branch (7038:8): [True: 1, False: 1]
  ------------------
 7039|      1|				zend_emit_op(NULL, ZEND_NOP, NULL, NULL);
  ------------------
  |  |  124|      1|#define ZEND_NOP                              0
  ------------------
 7040|      1|			}
 7041|      2|			break;
 7042|      6|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 7043|      2|	}
 7044|       |
 7045|    225|	try_catch_offset = zend_add_try_element(get_next_op_number());
 7046|       |
 7047|    225|	if (finally_ast) {
  ------------------
  |  Branch (7047:6): [True: 38, False: 187]
  ------------------
 7048|     38|		zend_loop_var fast_call;
 7049|     38|		if (!(CG(active_op_array)->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)) {
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
              		if (!(CG(active_op_array)->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK)) {
  ------------------
  |  |  361|     38|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (7049:7): [True: 33, False: 5]
  ------------------
 7050|     33|			CG(active_op_array)->fn_flags |= ZEND_ACC_HAS_FINALLY_BLOCK;
  ------------------
  |  |   35|     33|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(active_op_array)->fn_flags |= ZEND_ACC_HAS_FINALLY_BLOCK;
  ------------------
  |  |  361|     33|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
 7051|     33|		}
 7052|     38|		CG(context).fast_call_var = get_temporary_variable();
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
 7053|       |
 7054|       |		/* Push FAST_CALL on unwind stack */
 7055|     38|		fast_call.opcode = ZEND_FAST_CALL;
  ------------------
  |  |  284|     38|#define ZEND_FAST_CALL                      162
  ------------------
 7056|     38|		fast_call.var_type = IS_TMP_VAR;
  ------------------
  |  |  865|     38|#define IS_TMP_VAR	(1<<1)
  ------------------
 7057|     38|		fast_call.var_num = CG(context).fast_call_var;
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
 7058|     38|		fast_call.try_catch_offset = try_catch_offset;
 7059|     38|		zend_stack_push(&CG(loop_var_stack), &fast_call);
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
 7060|     38|	}
 7061|       |
 7062|    225|	CG(context).try_catch_offset = try_catch_offset;
  ------------------
  |  |   35|    225|# define CG(v) (compiler_globals.v)
  ------------------
 7063|       |
 7064|    225|	zend_compile_stmt(try_ast);
 7065|       |
 7066|    225|	if (catches->children != 0) {
  ------------------
  |  Branch (7066:6): [True: 187, False: 38]
  ------------------
 7067|    187|		jmp_opnums[0] = zend_emit_jump(0);
 7068|    187|	}
 7069|       |
 7070|    411|	for (i = 0; i < catches->children; ++i) {
  ------------------
  |  Branch (7070:14): [True: 188, False: 223]
  ------------------
 7071|    188|		const zend_ast *catch_ast = catches->child[i];
 7072|    188|		const zend_ast_list *classes = zend_ast_get_list(catch_ast->child[0]);
 7073|    188|		zend_ast *var_ast = catch_ast->child[1];
 7074|    188|		zend_ast *stmt_ast = catch_ast->child[2];
 7075|    188|		zend_string *var_name = var_ast ? zval_make_interned_string(zend_ast_get_zval(var_ast)) : NULL;
  ------------------
  |  Branch (7075:27): [True: 156, False: 32]
  ------------------
 7076|    188|		bool is_last_catch = (i + 1 == catches->children);
 7077|       |
 7078|    188|		uint32_t *jmp_multicatch = safe_emalloc(sizeof(uint32_t), classes->children - 1, 0);
  ------------------
  |  |  153|    188|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    188|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    188|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    188|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    188|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7079|    188|		uint32_t opnum_catch = (uint32_t)-1;
 7080|       |
 7081|    188|		CG(zend_lineno) = catch_ast->lineno;
  ------------------
  |  |   35|    188|# define CG(v) (compiler_globals.v)
  ------------------
 7082|       |
 7083|    375|		for (j = 0; j < classes->children; j++) {
  ------------------
  |  Branch (7083:15): [True: 189, False: 186]
  ------------------
 7084|    189|			zend_ast *class_ast = classes->child[j];
 7085|    189|			bool is_last_class = (j + 1 == classes->children);
 7086|       |
 7087|    189|			if (!zend_is_const_default_class_ref(class_ast)) {
  ------------------
  |  Branch (7087:8): [True: 1, False: 188]
  ------------------
 7088|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Bad class name in the catch statement");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7089|      1|			}
 7090|       |
 7091|    188|			opnum_catch = get_next_op_number();
 7092|    188|			if (i == 0 && j == 0) {
  ------------------
  |  Branch (7092:8): [True: 187, False: 1]
  |  Branch (7092:18): [True: 186, False: 1]
  ------------------
 7093|    186|				CG(active_op_array)->try_catch_array[try_catch_offset].catch_op = opnum_catch;
  ------------------
  |  |   35|    186|# define CG(v) (compiler_globals.v)
  ------------------
 7094|    186|			}
 7095|       |
 7096|    188|			opline = get_next_op();
 7097|    188|			opline->opcode = ZEND_CATCH;
  ------------------
  |  |  229|    188|#define ZEND_CATCH                          107
  ------------------
 7098|    188|			opline->op1_type = IS_CONST;
  ------------------
  |  |  864|    188|#define IS_CONST	(1<<0)
  ------------------
 7099|    188|			opline->op1.constant = zend_add_class_name_literal(
 7100|    188|					zend_resolve_class_name_ast(class_ast));
 7101|    188|			opline->extended_value = zend_alloc_cache_slot();
 7102|       |
 7103|    188|			if (var_name && zend_string_equals(var_name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (7103:8): [True: 156, False: 32]
  |  Branch (7103:20): [True: 1, False: 155]
  ------------------
 7104|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign $this");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7105|      1|			}
 7106|       |
 7107|    187|			opline->result_type = var_name ? IS_CV : IS_UNUSED;
  ------------------
  |  |  867|    155|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			opline->result_type = var_name ? IS_CV : IS_UNUSED;
  ------------------
  |  |  863|    219|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (7107:26): [True: 155, False: 32]
  ------------------
 7108|    187|			opline->result.var = var_name ? lookup_cv(var_name) : -1;
  ------------------
  |  Branch (7108:25): [True: 155, False: 32]
  ------------------
 7109|       |
 7110|    187|			if (is_last_catch && is_last_class) {
  ------------------
  |  Branch (7110:8): [True: 186, False: 1]
  |  Branch (7110:25): [True: 185, False: 1]
  ------------------
 7111|    185|				opline->extended_value |= ZEND_LAST_CATCH;
  ------------------
  |  | 1110|    185|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
 7112|    185|			}
 7113|       |
 7114|    187|			if (!is_last_class) {
  ------------------
  |  Branch (7114:8): [True: 1, False: 186]
  ------------------
 7115|      1|				jmp_multicatch[j] = zend_emit_jump(0);
 7116|      1|				opline = &CG(active_op_array)->opcodes[opnum_catch];
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 7117|      1|				opline->op2.opline_num = get_next_op_number();
 7118|      1|			}
 7119|    187|		}
 7120|       |
 7121|    187|		for (j = 0; j < classes->children - 1; j++) {
  ------------------
  |  Branch (7121:15): [True: 1, False: 186]
  ------------------
 7122|      1|			zend_update_jump_target_to_next(jmp_multicatch[j]);
 7123|      1|		}
 7124|       |
 7125|    186|		efree(jmp_multicatch);
  ------------------
  |  |  154|    186|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    186|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    186|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    186|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    186|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7126|       |
 7127|    186|		zend_compile_stmt(stmt_ast);
 7128|       |
 7129|    186|		if (!is_last_catch) {
  ------------------
  |  Branch (7129:7): [True: 1, False: 185]
  ------------------
 7130|      1|			jmp_opnums[i + 1] = zend_emit_jump(0);
 7131|      1|		}
 7132|       |
 7133|    186|		ZEND_ASSERT(opnum_catch != (uint32_t)-1 && "Should have at least one class");
  ------------------
  |  |  112|    186|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7133:3): [True: 0, False: 186]
  |  Branch (7133:3): [True: 0, False: 0]
  |  Branch (7133:3): [True: 186, False: 0]
  |  Branch (7133:3): [True: 186, False: 0]
  ------------------
 7134|    186|		opline = &CG(active_op_array)->opcodes[opnum_catch];
  ------------------
  |  |   35|    186|# define CG(v) (compiler_globals.v)
  ------------------
 7135|    186|		if (!is_last_catch) {
  ------------------
  |  Branch (7135:7): [True: 1, False: 185]
  ------------------
 7136|      1|			opline->op2.opline_num = get_next_op_number();
 7137|      1|		}
 7138|    186|	}
 7139|       |
 7140|    409|	for (i = 0; i < catches->children; ++i) {
  ------------------
  |  Branch (7140:14): [True: 186, False: 223]
  ------------------
 7141|    186|		zend_update_jump_target_to_next(jmp_opnums[i]);
 7142|    186|	}
 7143|       |
 7144|    223|	if (finally_ast) {
  ------------------
  |  Branch (7144:6): [True: 37, False: 186]
  ------------------
 7145|     37|		zend_loop_var discard_exception;
 7146|     37|		uint32_t opnum_jmp = get_next_op_number() + 1;
 7147|       |
 7148|       |		/* Pop FAST_CALL from unwind stack */
 7149|     37|		zend_stack_del_top(&CG(loop_var_stack));
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7150|       |
 7151|       |		/* Push DISCARD_EXCEPTION on unwind stack */
 7152|     37|		discard_exception.opcode = ZEND_DISCARD_EXCEPTION;
  ------------------
  |  |  281|     37|#define ZEND_DISCARD_EXCEPTION              159
  ------------------
 7153|     37|		discard_exception.var_type = IS_TMP_VAR;
  ------------------
  |  |  865|     37|#define IS_TMP_VAR	(1<<1)
  ------------------
 7154|     37|		discard_exception.var_num = CG(context).fast_call_var;
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7155|     37|		zend_stack_push(&CG(loop_var_stack), &discard_exception);
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7156|       |
 7157|     37|		CG(zend_lineno) = finally_ast->lineno;
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7158|       |
 7159|     37|		opline = zend_emit_op(NULL, ZEND_FAST_CALL, NULL, NULL);
  ------------------
  |  |  284|     37|#define ZEND_FAST_CALL                      162
  ------------------
 7160|     37|		opline->op1.num = try_catch_offset;
 7161|     37|		opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     37|#define IS_TMP_VAR	(1<<1)
  ------------------
 7162|     37|		opline->result.var = CG(context).fast_call_var;
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7163|       |
 7164|     37|		zend_emit_op(NULL, ZEND_JMP, NULL, NULL);
  ------------------
  |  |  166|     37|#define ZEND_JMP                             42
  ------------------
 7165|       |
 7166|     37|		zend_compile_stmt(finally_ast);
 7167|       |
 7168|     37|		CG(active_op_array)->try_catch_array[try_catch_offset].finally_op = opnum_jmp + 1;
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7169|     37|		CG(active_op_array)->try_catch_array[try_catch_offset].finally_end
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7170|     37|			= get_next_op_number();
 7171|       |
 7172|     37|		opline = zend_emit_op(NULL, ZEND_FAST_RET, NULL, NULL);
  ------------------
  |  |  285|     37|#define ZEND_FAST_RET                       163
  ------------------
 7173|     37|		opline->op1_type = IS_TMP_VAR;
  ------------------
  |  |  865|     37|#define IS_TMP_VAR	(1<<1)
  ------------------
 7174|     37|		opline->op1.var = CG(context).fast_call_var;
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7175|     37|		opline->op2.num = orig_try_catch_offset;
 7176|       |
 7177|     37|		zend_update_jump_target_to_next(opnum_jmp);
 7178|       |
 7179|     37|		CG(context).fast_call_var = orig_fast_call_var;
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7180|       |
 7181|       |		/* Pop DISCARD_EXCEPTION from unwind stack */
 7182|     37|		zend_stack_del_top(&CG(loop_var_stack));
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 7183|     37|	}
 7184|       |
 7185|    223|	CG(context).try_catch_offset = orig_try_catch_offset;
  ------------------
  |  |   35|    223|# define CG(v) (compiler_globals.v)
  ------------------
 7186|       |
 7187|       |	efree(jmp_opnums);
  ------------------
  |  |  154|    223|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    223|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    223|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    223|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    223|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7188|    223|}
zend_compile.c:zend_add_try_element:
 1246|    225|{
 1247|    225|	zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|    225|# define CG(v) (compiler_globals.v)
  ------------------
 1248|    225|	uint32_t try_catch_offset = op_array->last_try_catch++;
 1249|    225|	zend_try_catch_element *elem;
 1250|       |
 1251|    225|	op_array->try_catch_array = safe_erealloc(
  ------------------
  |  |  160|    225|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    225|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    225|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    225|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    225|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1252|    225|		op_array->try_catch_array, sizeof(zend_try_catch_element), op_array->last_try_catch, 0);
 1253|       |
 1254|    225|	elem = &op_array->try_catch_array[try_catch_offset];
 1255|    225|	elem->try_op = try_op;
 1256|    225|	elem->catch_op = 0;
 1257|    225|	elem->finally_op = 0;
 1258|    225|	elem->finally_end = 0;
 1259|       |
 1260|    225|	return try_catch_offset;
 1261|    225|}
zend_compile.c:zend_is_const_default_class_ref:
 2802|    189|{
 2803|    189|	if (name_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (2803:6): [True: 0, False: 189]
  ------------------
 2804|      0|		return false;
 2805|      0|	}
 2806|       |
 2807|    189|	return ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type_ast(name_ast);
  ------------------
  |  | 1042|    189|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
 2808|    189|}
zend_compile.c:zend_compile_declare:
 7266|     46|{
 7267|     46|	const zend_ast_list *declares = zend_ast_get_list(ast->child[0]);
 7268|     46|	zend_ast *stmt_ast = ast->child[1];
 7269|     46|	zend_declarables orig_declarables = FC(declarables);
  ------------------
  |  |   60|     46|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     46|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 7270|     46|	uint32_t i;
 7271|       |
 7272|     86|	for (i = 0; i < declares->children; ++i) {
  ------------------
  |  Branch (7272:14): [True: 46, False: 40]
  ------------------
 7273|     46|		zend_ast *declare_ast = declares->child[i];
 7274|     46|		zend_ast *name_ast = declare_ast->child[0];
 7275|     46|		zend_ast **value_ast_ptr = &declare_ast->child[1];
 7276|     46|		zend_string *name = zend_ast_get_str(name_ast);
 7277|       |
 7278|     46|		if ((*value_ast_ptr)->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (7278:7): [True: 3, False: 43]
  ------------------
 7279|      3|			zend_error_noreturn(E_COMPILE_ERROR, "declare(%s) value must be a literal", ZSTR_VAL(name));
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "declare(%s) value must be a literal", ZSTR_VAL(name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7280|      3|		}
 7281|       |
 7282|     43|		if (zend_string_equals_literal_ci(name, "ticks")) {
  ------------------
  |  |  404|     43|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     43|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 11, False: 32]
  |  |  |  Branch (404:40): [True: 10, False: 1]
  |  |  ------------------
  ------------------
 7283|     10|			zval value_zv;
 7284|     10|			zend_const_expr_to_zval(&value_zv, value_ast_ptr, /* allow_dynamic */ false);
 7285|     10|			FC(declarables).ticks = zval_get_long(&value_zv);
  ------------------
  |  |   60|     10|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     10|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 7286|     10|			zval_ptr_dtor_nogc(&value_zv);
 7287|     33|		} else if (zend_string_equals_literal_ci(name, "encoding")) {
  ------------------
  |  |  404|     33|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     33|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 10, False: 23]
  |  |  |  Branch (404:40): [True: 4, False: 6]
  |  |  ------------------
  ------------------
 7288|       |
 7289|      4|			if (FAILURE == zend_is_first_statement(ast, /* allow_nop */ false)) {
  ------------------
  |  Branch (7289:8): [True: 1, False: 3]
  ------------------
 7290|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Encoding declaration pragma must be "
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7291|      1|					"the very first statement in the script");
 7292|      1|			}
 7293|     29|		} else if (zend_string_equals_literal_ci(name, "strict_types")) {
  ------------------
  |  |  404|     29|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     29|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 20, False: 9]
  |  |  |  Branch (404:40): [True: 14, False: 6]
  |  |  ------------------
  ------------------
 7294|     14|			zval value_zv;
 7295|       |
 7296|     14|			if (FAILURE == zend_is_first_statement(ast, /* allow_nop */ true)) {
  ------------------
  |  Branch (7296:8): [True: 1, False: 13]
  ------------------
 7297|      1|				zend_error_noreturn(E_COMPILE_ERROR, "strict_types declaration must be "
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7298|      1|					"the very first statement in the script");
 7299|      1|			}
 7300|       |
 7301|     13|			if (ast->child[1] != NULL) {
  ------------------
  |  Branch (7301:8): [True: 1, False: 12]
  ------------------
 7302|      1|				zend_error_noreturn(E_COMPILE_ERROR, "strict_types declaration must not "
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7303|      1|					"use block mode");
 7304|      1|			}
 7305|       |
 7306|     12|			zend_const_expr_to_zval(&value_zv, value_ast_ptr, /* allow_dynamic */ false);
 7307|       |
 7308|     12|			if (Z_TYPE(value_zv) != IS_LONG || (Z_LVAL(value_zv) != 0 && Z_LVAL(value_zv) != 1)) {
  ------------------
  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(value_zv) != IS_LONG || (Z_LVAL(value_zv) != 0 && Z_LVAL(value_zv) != 1)) {
  ------------------
  |  |  610|     24|#define IS_LONG						4
  ------------------
              			if (Z_TYPE(value_zv) != IS_LONG || (Z_LVAL(value_zv) != 0 && Z_LVAL(value_zv) != 1)) {
  ------------------
  |  |  975|     12|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
              			if (Z_TYPE(value_zv) != IS_LONG || (Z_LVAL(value_zv) != 0 && Z_LVAL(value_zv) != 1)) {
  ------------------
  |  |  975|     11|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (7308:8): [True: 0, False: 12]
  |  Branch (7308:40): [True: 11, False: 1]
  |  Branch (7308:65): [True: 0, False: 11]
  ------------------
 7309|      0|				zend_error_noreturn(E_COMPILE_ERROR, "strict_types declaration must have 0 or 1 as its value");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 7310|      0|			}
 7311|       |
 7312|     12|			if (Z_LVAL(value_zv) == 1) {
  ------------------
  |  |  975|     12|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (7312:8): [True: 11, False: 1]
  ------------------
 7313|     11|				CG(active_op_array)->fn_flags |= ZEND_ACC_STRICT_TYPES;
  ------------------
  |  |   35|     11|# define CG(v) (compiler_globals.v)
  ------------------
              				CG(active_op_array)->fn_flags |= ZEND_ACC_STRICT_TYPES;
  ------------------
  |  |  413|     11|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  ------------------
 7314|     11|			}
 7315|       |
 7316|     15|		} else {
 7317|     15|			zend_error(E_COMPILE_WARNING, "Unsupported declare '%s'", ZSTR_VAL(name));
  ------------------
  |  |   29|     15|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
              			zend_error(E_COMPILE_WARNING, "Unsupported declare '%s'", ZSTR_VAL(name));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7318|     15|		}
 7319|     43|	}
 7320|       |
 7321|     40|	if (stmt_ast) {
  ------------------
  |  Branch (7321:6): [True: 4, False: 36]
  ------------------
 7322|      4|		zend_compile_stmt(stmt_ast);
 7323|       |
 7324|      4|		FC(declarables) = orig_declarables;
  ------------------
  |  |   60|      4|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      4|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 7325|      4|	}
 7326|     40|}
zend_compile.c:zend_is_first_statement:
 7245|    174|{
 7246|    174|	uint32_t i = 0;
 7247|    174|	const zend_ast_list *file_ast = zend_ast_get_list(CG(ast));
  ------------------
  |  |   35|    174|# define CG(v) (compiler_globals.v)
  ------------------
 7248|       |
 7249|    191|	while (i < file_ast->children) {
  ------------------
  |  Branch (7249:9): [True: 191, False: 0]
  ------------------
 7250|    191|		if (file_ast->child[i] == ast) {
  ------------------
  |  Branch (7250:7): [True: 170, False: 21]
  ------------------
 7251|    170|			return SUCCESS;
 7252|    170|		} else if (file_ast->child[i] == NULL) {
  ------------------
  |  Branch (7252:14): [True: 2, False: 19]
  ------------------
 7253|      2|			if (!allow_nop) {
  ------------------
  |  Branch (7253:8): [True: 0, False: 2]
  ------------------
 7254|      0|				return FAILURE;
 7255|      0|			}
 7256|     19|		} else if (file_ast->child[i]->kind != ZEND_AST_DECLARE) {
  ------------------
  |  Branch (7256:14): [True: 4, False: 15]
  ------------------
 7257|      4|			return FAILURE;
 7258|      4|		}
 7259|     17|		i++;
 7260|     17|	}
 7261|      0|	return FAILURE;
 7262|    174|}
zend_compile.c:zend_compile_enum_case:
 9753|    126|{
 9754|    126|	zend_class_entry *enum_class = CG(active_class_entry);
  ------------------
  |  |   35|    126|# define CG(v) (compiler_globals.v)
  ------------------
 9755|    126|	if (!(enum_class->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|    126|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (9755:6): [True: 1, False: 125]
  ------------------
 9756|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Case can only be used in enums");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9757|      1|	}
 9758|       |
 9759|    125|	zend_string *enum_case_name = zval_make_interned_string(zend_ast_get_zval(ast->child[0]));
 9760|    125|	zend_string *enum_class_name = enum_class->name;
 9761|       |
 9762|    125|	zval class_name_zval;
 9763|    125|	ZVAL_STR_COPY(&class_name_zval, enum_class_name);
  ------------------
  |  | 1112|    125|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|    125|		zval *__z = (z);								\
  |  | 1114|    125|		zend_string *__s = (s);							\
  |  | 1115|    125|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|    125|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    125|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|    125|		/* interned strings support */					\
  |  | 1117|    125|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 8, False: 117]
  |  |  ------------------
  |  | 1118|      8|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      8|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|    117|		} else {										\
  |  | 1120|    117|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|    117|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|    117|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|    117|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    117|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|    117|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    117|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    117|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    117|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|    117|		}												\
  |  | 1123|    125|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 125]
  |  |  ------------------
  ------------------
 9764|    125|	zend_ast *class_name_ast = zend_ast_create_zval(&class_name_zval);
 9765|       |
 9766|    125|	zval case_id_zval;
 9767|    125|	int case_id = zend_enum_next_case_id(enum_class);
 9768|    125|	ZVAL_LONG(&case_id_zval, case_id);
  ------------------
  |  | 1076|    125|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    125|		zval *__z = (z);				\
  |  | 1078|    125|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    125|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    125|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    125|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    125|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    125|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    125|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    125|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 125]
  |  |  ------------------
  ------------------
 9769|    125|	zend_ast *case_id_ast = zend_ast_create_zval(&case_id_zval);
 9770|       |
 9771|    125|	zval case_name_zval;
 9772|    125|	ZVAL_STR_COPY(&case_name_zval, enum_case_name);
  ------------------
  |  | 1112|    125|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|    125|		zval *__z = (z);								\
  |  | 1114|    125|		zend_string *__s = (s);							\
  |  | 1115|    125|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|    125|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    125|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|    125|		/* interned strings support */					\
  |  | 1117|    125|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 123]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|    123|		} else {										\
  |  | 1120|    123|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|    123|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|    123|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|    123|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    123|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|    123|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    123|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    123|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    123|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|    123|		}												\
  |  | 1123|    125|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 125]
  |  |  ------------------
  ------------------
 9773|    125|	zend_ast *case_name_ast = zend_ast_create_zval(&case_name_zval);
 9774|       |
 9775|    125|	zend_ast *case_value_ast = ast->child[1];
 9776|       |	// Remove case_value_ast from the original AST to avoid freeing it, as it will be freed by zend_const_expr_to_zval
 9777|    125|	ast->child[1] = NULL;
 9778|    125|	if (enum_class->enum_backing_type != IS_UNDEF && case_value_ast == NULL) {
  ------------------
  |  |  606|    250|#define IS_UNDEF					0
  ------------------
  |  Branch (9778:6): [True: 38, False: 87]
  |  Branch (9778:51): [True: 1, False: 37]
  ------------------
 9779|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Case %s of backed enum %s must have a value",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9780|      1|			ZSTR_VAL(enum_case_name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9781|      1|			ZSTR_VAL(enum_class_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9782|    124|	} else if (enum_class->enum_backing_type == IS_UNDEF && case_value_ast != NULL) {
  ------------------
  |  |  606|    248|#define IS_UNDEF					0
  ------------------
  |  Branch (9782:13): [True: 87, False: 37]
  |  Branch (9782:58): [True: 1, False: 86]
  ------------------
 9783|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Case %s of non-backed enum %s must not have a value",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9784|      1|			ZSTR_VAL(enum_case_name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9785|      1|			ZSTR_VAL(enum_class_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9786|      1|	}
 9787|       |
 9788|    123|	zend_ast *const_enum_init_ast = zend_ast_create(ZEND_AST_CONST_ENUM_INIT,
  ------------------
  |  |  316|    123|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    123|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    123|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9789|    123|			class_name_ast, case_id_ast, case_name_ast, case_value_ast);
 9790|       |
 9791|    123|	zval value_zv;
 9792|    123|	zend_const_expr_to_zval(&value_zv, &const_enum_init_ast, /* allow_dynamic */ false);
 9793|       |
 9794|       |	/* Doc comment has been appended as second last element in ZEND_AST_ENUM ast - attributes are conventionally last */
 9795|    123|	zend_ast *doc_comment_ast = ast->child[2];
 9796|    123|	zend_string *doc_comment = NULL;
 9797|    123|	if (doc_comment_ast) {
  ------------------
  |  Branch (9797:6): [True: 0, False: 123]
  ------------------
 9798|      0|		doc_comment = zend_string_copy(zend_ast_get_str(doc_comment_ast));
 9799|      0|	}
 9800|       |
 9801|    123|	zend_class_constant *c = zend_declare_class_constant_ex(enum_class, enum_case_name, &value_zv, ZEND_ACC_PUBLIC, doc_comment);
  ------------------
  |  |  219|    123|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 9802|    123|	ZEND_CLASS_CONST_FLAGS(c) |= ZEND_CLASS_CONST_IS_CASE;
  ------------------
  |  |  498|    123|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    123|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	ZEND_CLASS_CONST_FLAGS(c) |= ZEND_CLASS_CONST_IS_CASE;
  ------------------
  |  |  255|    123|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
 9803|    123|	zend_ast_destroy(const_enum_init_ast);
 9804|       |
 9805|    123|	zend_ast *attr_ast = ast->child[3];
 9806|    123|	if (attr_ast) {
  ------------------
  |  Branch (9806:6): [True: 4, False: 119]
  ------------------
 9807|      4|		zend_compile_attributes(&c->attributes, attr_ast, 0, ZEND_ATTRIBUTE_TARGET_CLASS_CONST, 0);
  ------------------
  |  |   29|      4|#define ZEND_ATTRIBUTE_TARGET_CLASS_CONST	(1<<4)
  ------------------
 9808|       |
 9809|      4|		zend_attribute *deprecated = zend_get_attribute_str(c->attributes, "deprecated", sizeof("deprecated")-1);
 9810|       |
 9811|      4|		if (deprecated) {
  ------------------
  |  Branch (9811:7): [True: 3, False: 1]
  ------------------
 9812|      3|			ZEND_CLASS_CONST_FLAGS(c) |= ZEND_ACC_DEPRECATED;
  ------------------
  |  |  498|      3|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			ZEND_CLASS_CONST_FLAGS(c) |= ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|      3|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
 9813|      3|		}
 9814|      4|	}
 9815|    123|}
zend_compile.c:zend_compile_prop_group:
 9276|    508|{
 9277|    508|	zend_ast *type_ast = ast->child[0];
 9278|    508|	zend_ast *prop_ast = ast->child[1];
 9279|    508|	zend_ast *attr_ast = ast->child[2];
 9280|       |
 9281|    508|	zend_compile_prop_decl(prop_ast, type_ast, ast->attr, attr_ast);
 9282|    508|}
zend_compile.c:zend_compile_prop_decl:
 9128|    508|{
 9129|    508|	const zend_ast_list *list = zend_ast_get_list(ast);
 9130|    508|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    508|# define CG(v) (compiler_globals.v)
  ------------------
 9131|    508|	uint32_t i, children = list->children;
 9132|       |
 9133|    508|	if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|    508|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (9133:6): [True: 3, False: 505]
  ------------------
 9134|      3|		zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include properties", ZSTR_VAL(ce->name));
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              		zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include properties", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9135|      3|	}
 9136|       |
 9137|    505|	if ((flags & ZEND_ACC_FINAL) && (flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  230|    505|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	if ((flags & ZEND_ACC_FINAL) && (flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      5|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (9137:6): [True: 5, False: 500]
  |  Branch (9137:34): [True: 1, False: 4]
  ------------------
 9138|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Property cannot be both final and private");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9139|      1|	}
 9140|       |
 9141|    504|	if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|    504|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (9141:6): [True: 16, False: 488]
  ------------------
 9142|     16|		if (flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     16|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (9142:7): [True: 1, False: 15]
  ------------------
 9143|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Property in interface cannot be final");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9144|      1|		}
 9145|     15|		if (flags & (ZEND_ACC_PROTECTED|ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  220|     15|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              		if (flags & (ZEND_ACC_PROTECTED|ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|     15|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (9145:7): [True: 1, False: 14]
  ------------------
 9146|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Property in interface cannot be protected or private");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9147|      1|		}
 9148|     14|		if (flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     14|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (9148:7): [True: 1, False: 13]
  ------------------
 9149|      1|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9150|      1|				"Property in interface cannot be explicitly abstract. "
 9151|      1|				"All interface members are implicitly abstract");
 9152|      1|		}
 9153|     13|		flags |= ZEND_ACC_ABSTRACT;
  ------------------
  |  |  233|     13|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
 9154|     13|	}
 9155|       |
 9156|    990|	for (i = 0; i < children; ++i) {
  ------------------
  |  Branch (9156:14): [True: 504, False: 486]
  ------------------
 9157|    504|		zend_property_info *info;
 9158|    504|		zend_ast *prop_ast = list->child[i];
 9159|    504|		zend_ast *name_ast = prop_ast->child[0];
 9160|    504|		zend_ast **value_ast_ptr = &prop_ast->child[1];
 9161|    504|		zend_ast *doc_comment_ast = prop_ast->child[2];
 9162|    504|		zend_ast *hooks_ast = prop_ast->child[3];
 9163|    504|		zend_string *name = zval_make_interned_string(zend_ast_get_zval(name_ast));
 9164|    504|		zend_string *doc_comment = NULL;
 9165|    504|		zval value_zv;
 9166|    504|		zend_type type = ZEND_TYPE_INIT_NONE(0);
  ------------------
  |  |  287|    504|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 9167|    504|		flags |= zend_property_is_virtual(ce, name, hooks_ast) ? ZEND_ACC_VIRTUAL : 0;
  ------------------
  |  |  270|    108|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (9167:12): [True: 108, False: 396]
  ------------------
 9168|       |
 9169|    504|		zend_string *old_active_property_info_name = CG(context).active_property_info_name;
  ------------------
  |  |   35|    504|# define CG(v) (compiler_globals.v)
  ------------------
 9170|    504|		CG(context).active_property_info_name = name;
  ------------------
  |  |   35|    504|# define CG(v) (compiler_globals.v)
  ------------------
 9171|       |
 9172|    504|		if (!hooks_ast) {
  ------------------
  |  Branch (9172:7): [True: 375, False: 129]
  ------------------
 9173|    375|			if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|    375|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (9173:8): [True: 1, False: 374]
  ------------------
 9174|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9175|      1|					"Interfaces may only include hooked properties");
 9176|      1|			}
 9177|    374|			if (flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|    374|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (9177:8): [True: 1, False: 373]
  ------------------
 9178|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9179|      1|					"Only hooked properties may be declared abstract");
 9180|      1|			}
 9181|    374|		}
 9182|    502|		if ((flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  233|    502|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (9182:7): [True: 23, False: 479]
  ------------------
 9183|     23|			ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|     23|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 9184|     23|		}
 9185|       |
 9186|    502|		if (type_ast) {
  ------------------
  |  Branch (9186:7): [True: 224, False: 278]
  ------------------
 9187|    224|			type = zend_compile_typename(type_ast);
 9188|       |
 9189|    224|			if (ZEND_TYPE_FULL_MASK(type) & (MAY_BE_VOID|MAY_BE_NEVER|MAY_BE_CALLABLE)) {
  ------------------
  |  |  261|    224|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(type) & (MAY_BE_VOID|MAY_BE_NEVER|MAY_BE_CALLABLE)) {
  ------------------
  |  |   40|    224|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|    224|#define IS_VOID						14
  |  |  ------------------
  ------------------
              			if (ZEND_TYPE_FULL_MASK(type) & (MAY_BE_VOID|MAY_BE_NEVER|MAY_BE_CALLABLE)) {
  ------------------
  |  |   41|    224|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|    224|#define IS_NEVER					17
  |  |  ------------------
  ------------------
              			if (ZEND_TYPE_FULL_MASK(type) & (MAY_BE_VOID|MAY_BE_NEVER|MAY_BE_CALLABLE)) {
  ------------------
  |  |   39|    224|#define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
  |  |  ------------------
  |  |  |  |  621|    224|#define IS_CALLABLE					12
  |  |  ------------------
  ------------------
  |  Branch (9189:8): [True: 1, False: 223]
  ------------------
 9190|      1|				zend_string *str = zend_type_to_string(type);
 9191|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9192|      1|					"Property %s::$%s cannot have type %s",
 9193|      1|					ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9194|      1|			}
 9195|    224|		}
 9196|       |
 9197|       |		/* Doc comment has been appended as last element in ZEND_AST_PROP_ELEM ast */
 9198|    501|		if (doc_comment_ast) {
  ------------------
  |  Branch (9198:7): [True: 7, False: 494]
  ------------------
 9199|      7|			doc_comment = zend_string_copy(zend_ast_get_str(doc_comment_ast));
 9200|      7|		}
 9201|       |
 9202|    501|		if (zend_hash_exists(&ce->properties_info, name)) {
  ------------------
  |  Branch (9202:7): [True: 1, False: 500]
  ------------------
 9203|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::$%s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9204|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9205|      1|		}
 9206|       |
 9207|    500|		if (*value_ast_ptr) {
  ------------------
  |  Branch (9207:7): [True: 150, False: 350]
  ------------------
 9208|    150|			zend_const_expr_to_zval(&value_zv, value_ast_ptr, /* allow_dynamic */ false);
 9209|       |
 9210|    150|			if (ZEND_TYPE_IS_SET(type) && !Z_CONSTANT(value_zv)
  ------------------
  |  |  152|    300|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    150|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 38, False: 112]
  |  |  ------------------
  ------------------
              			if (ZEND_TYPE_IS_SET(type) && !Z_CONSTANT(value_zv)
  ------------------
  |  |  932|    188|#define Z_CONSTANT(zval)			(Z_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  668|     38|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_CONSTANT(zval)			(Z_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  617|     38|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  ------------------
  |  Branch (9210:34): [True: 32, False: 6]
  ------------------
 9211|     32|					&& !zend_is_valid_default_value(type, &value_zv)) {
  ------------------
  |  Branch (9211:9): [True: 6, False: 26]
  ------------------
 9212|      6|				zend_string *str = zend_type_to_string(type);
 9213|      6|				if (Z_TYPE(value_zv) == IS_NULL && !ZEND_TYPE_IS_INTERSECTION(type)) {
  ------------------
  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(value_zv) == IS_NULL && !ZEND_TYPE_IS_INTERSECTION(type)) {
  ------------------
  |  |  607|     12|#define IS_NULL						1
  ------------------
              				if (Z_TYPE(value_zv) == IS_NULL && !ZEND_TYPE_IS_INTERSECTION(type)) {
  ------------------
  |  |  172|      4|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      4|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  ------------------
  |  Branch (9213:9): [True: 4, False: 2]
  |  Branch (9213:40): [True: 3, False: 1]
  ------------------
 9214|      3|					ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL;
  ------------------
  |  |  261|      3|	((t).type_mask)
  ------------------
              					ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL;
  ------------------
  |  |   24|      3|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  ------------------
 9215|      3|					zend_string *nullable_str = zend_type_to_string(type);
 9216|       |
 9217|      3|					zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9218|      3|						"Default value for property of type %s may not be null. "
 9219|      3|						"Use the nullable type %s to allow null default value",
 9220|      3|						ZSTR_VAL(str), ZSTR_VAL(nullable_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(str), ZSTR_VAL(nullable_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9221|      3|				} else {
 9222|      3|					zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9223|      3|						"Cannot use %s as default value for property %s::$%s of type %s",
 9224|      3|						zend_zval_value_name(&value_zv),
 9225|      3|						ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9226|      3|				}
 9227|      6|			}
 9228|    350|		} else if (!ZEND_TYPE_IS_SET(type) && !hooks_ast) {
  ------------------
  |  |  152|    700|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    350|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (9228:14): [True: 166, False: 184]
  |  Branch (9228:41): [True: 85, False: 81]
  ------------------
 9229|     85|			ZVAL_NULL(&value_zv);
  ------------------
  |  | 1059|     85|#define ZVAL_NULL(z) do {				\
  |  | 1060|     85|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     85|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     85|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     85|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     85|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 85]
  |  |  ------------------
  ------------------
 9230|    265|		} else {
 9231|    265|			ZVAL_UNDEF(&value_zv);
  ------------------
  |  | 1055|    265|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    265|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    265|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    265|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    265|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    265|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 265]
  |  |  ------------------
  ------------------
 9232|    265|		}
 9233|       |
 9234|    494|		if ((ce->ce_flags & ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|    494|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (9234:7): [True: 5, False: 489]
  ------------------
 9235|      5|			flags |= ZEND_ACC_READONLY;
  ------------------
  |  |  237|      5|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
 9236|      5|		}
 9237|       |
 9238|    494|		if (flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|    494|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (9238:7): [True: 12, False: 482]
  ------------------
 9239|     12|			if (!ZEND_TYPE_IS_SET(type)) {
  ------------------
  |  |  152|     12|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     12|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (9239:8): [True: 2, False: 10]
  ------------------
 9240|      2|				zend_error_noreturn(E_COMPILE_ERROR, "Readonly property %s::$%s must have type",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9241|      2|					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9242|      2|			}
 9243|     10|			if (!Z_ISUNDEF(value_zv)) {
  ------------------
  |  |  966|     10|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|     10|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (9243:8): [True: 1, False: 9]
  ------------------
 9244|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9245|      1|					"Readonly property %s::$%s cannot have default value",
 9246|      1|					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9247|      1|			}
 9248|      9|			if (flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      9|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (9248:8): [True: 2, False: 7]
  ------------------
 9249|      2|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9250|      2|					"Static property %s::$%s cannot be readonly",
 9251|      2|					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9252|      2|			}
 9253|      9|		}
 9254|       |
 9255|    489|		info = zend_declare_typed_property(ce, name, &value_zv, flags, doc_comment, type);
 9256|       |
 9257|    489|		if (hooks_ast) {
  ------------------
  |  Branch (9257:7): [True: 129, False: 360]
  ------------------
 9258|    129|			zend_compile_property_hooks(info, name, type_ast, zend_ast_get_list(hooks_ast));
 9259|    129|		}
 9260|       |
 9261|    489|		if (attr_ast) {
  ------------------
  |  Branch (9261:7): [True: 10, False: 479]
  ------------------
 9262|     10|			zend_compile_attributes(&info->attributes, attr_ast, 0, ZEND_ATTRIBUTE_TARGET_PROPERTY, 0);
  ------------------
  |  |   28|     10|#define ZEND_ATTRIBUTE_TARGET_PROPERTY		(1<<3)
  ------------------
 9263|       |
 9264|     10|			const zend_attribute *override_attribute = zend_get_attribute_str(info->attributes, "override", sizeof("override")-1);
 9265|     10|			if (override_attribute) {
  ------------------
  |  Branch (9265:8): [True: 8, False: 2]
  ------------------
 9266|      8|				info->flags |= ZEND_ACC_OVERRIDE;
  ------------------
  |  |  261|      8|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
 9267|      8|			}
 9268|     10|		}
 9269|       |
 9270|    489|		CG(context).active_property_info_name = old_active_property_info_name;
  ------------------
  |  |   35|    489|# define CG(v) (compiler_globals.v)
  ------------------
 9271|    489|	}
 9272|    501|}
zend_compile.c:zend_compile_class_const_group:
 9360|    141|{
 9361|    141|	zend_ast *const_ast = ast->child[0];
 9362|    141|	zend_ast *attr_ast = ast->child[1];
 9363|    141|	zend_ast *type_ast = ast->child[2];
 9364|       |
 9365|    141|	zend_compile_class_const_decl(const_ast, ast->attr, attr_ast, type_ast);
 9366|    141|}
zend_compile.c:zend_compile_class_const_decl:
 9296|    141|{
 9297|    141|	const zend_ast_list *list = zend_ast_get_list(ast);
 9298|    141|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    141|# define CG(v) (compiler_globals.v)
  ------------------
 9299|    141|	uint32_t i, children = list->children;
 9300|       |
 9301|    280|	for (i = 0; i < children; ++i) {
  ------------------
  |  Branch (9301:14): [True: 143, False: 137]
  ------------------
 9302|    143|		zend_class_constant *c;
 9303|    143|		zend_ast *const_ast = list->child[i];
 9304|    143|		zend_ast *name_ast = const_ast->child[0];
 9305|    143|		zend_ast **value_ast_ptr = &const_ast->child[1];
 9306|    143|		zend_ast *doc_comment_ast = const_ast->child[2];
 9307|    143|		zend_string *name = zval_make_interned_string(zend_ast_get_zval(name_ast));
 9308|    143|		zend_string *doc_comment = doc_comment_ast ? zend_string_copy(zend_ast_get_str(doc_comment_ast)) : NULL;
  ------------------
  |  Branch (9308:30): [True: 1, False: 142]
  ------------------
 9309|    143|		zval value_zv;
 9310|    143|		zend_type type = ZEND_TYPE_INIT_NONE(0);
  ------------------
  |  |  287|    143|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
 9311|       |
 9312|    143|		if (type_ast) {
  ------------------
  |  Branch (9312:7): [True: 22, False: 121]
  ------------------
 9313|     22|			type = zend_compile_typename(type_ast);
 9314|       |
 9315|     22|			uint32_t type_mask = ZEND_TYPE_PURE_MASK(type);
  ------------------
  |  |  264|     22|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     22|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
 9316|       |
 9317|     22|			if (type_mask != MAY_BE_ANY && (type_mask & (MAY_BE_CALLABLE|MAY_BE_VOID|MAY_BE_NEVER))) {
  ------------------
  |  |   34|     44|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|     22|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|     22|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|     22|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     22|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|     22|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|     22|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|     22|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|     22|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|     22|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|     22|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|     22|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     22|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|     22|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     22|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|     22|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     22|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|     22|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|     22|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (type_mask != MAY_BE_ANY && (type_mask & (MAY_BE_CALLABLE|MAY_BE_VOID|MAY_BE_NEVER))) {
  ------------------
  |  |   39|     22|#define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
  |  |  ------------------
  |  |  |  |  621|     22|#define IS_CALLABLE					12
  |  |  ------------------
  ------------------
              			if (type_mask != MAY_BE_ANY && (type_mask & (MAY_BE_CALLABLE|MAY_BE_VOID|MAY_BE_NEVER))) {
  ------------------
  |  |   40|     22|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|     22|#define IS_VOID						14
  |  |  ------------------
  ------------------
              			if (type_mask != MAY_BE_ANY && (type_mask & (MAY_BE_CALLABLE|MAY_BE_VOID|MAY_BE_NEVER))) {
  ------------------
  |  |   41|     22|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|     22|#define IS_NEVER					17
  |  |  ------------------
  ------------------
  |  Branch (9317:8): [True: 22, False: 0]
  |  Branch (9317:35): [True: 1, False: 21]
  ------------------
 9318|      1|				zend_string *type_str = zend_type_to_string(type);
 9319|       |
 9320|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Class constant %s::%s cannot have type %s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9321|      1|					ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9322|      1|			}
 9323|     22|		}
 9324|       |
 9325|    142|		if (UNEXPECTED((flags & ZEND_ACC_PRIVATE) && (flags & ZEND_ACC_FINAL))) {
  ------------------
  |  |  457|    147|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 141]
  |  |  |  Branch (457:52): [True: 5, False: 137]
  |  |  |  Branch (457:52): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 9326|      1|			zend_error_noreturn(
 9327|      1|				E_COMPILE_ERROR, "Private constant %s::%s cannot be final as it is not visible to other classes",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9328|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9329|      1|			);
 9330|      1|		}
 9331|       |
 9332|    141|		zend_const_expr_to_zval(&value_zv, value_ast_ptr, /* allow_dynamic */ false);
 9333|       |
 9334|    141|		if (!Z_CONSTANT(value_zv) && ZEND_TYPE_IS_SET(type) && !zend_is_valid_default_value(type, &value_zv)) {
  ------------------
  |  |  932|    282|#define Z_CONSTANT(zval)			(Z_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  668|    141|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_CONSTANT(zval)			(Z_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  617|    141|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  ------------------
              		if (!Z_CONSTANT(value_zv) && ZEND_TYPE_IS_SET(type) && !zend_is_valid_default_value(type, &value_zv)) {
  ------------------
  |  |  152|    245|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    104|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 15, False: 89]
  |  |  ------------------
  ------------------
  |  Branch (9334:7): [True: 104, False: 37]
  |  Branch (9334:58): [True: 2, False: 13]
  ------------------
 9335|      2|			zend_string *type_str = zend_type_to_string(type);
 9336|       |
 9337|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use %s as value for class constant %s::%s of type %s",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9338|      2|				zend_zval_type_name(&value_zv), ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_zval_type_name(&value_zv), ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_zval_type_name(&value_zv), ZSTR_VAL(ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9339|      2|		}
 9340|       |
 9341|    139|		c = zend_declare_typed_class_constant(ce, name, &value_zv, flags, doc_comment, type);
 9342|       |
 9343|    139|		if (attr_ast) {
  ------------------
  |  Branch (9343:7): [True: 3, False: 136]
  ------------------
 9344|      3|			zend_compile_attributes(&c->attributes, attr_ast, 0, ZEND_ATTRIBUTE_TARGET_CLASS_CONST, 0);
  ------------------
  |  |   29|      3|#define ZEND_ATTRIBUTE_TARGET_CLASS_CONST	(1<<4)
  ------------------
 9345|       |
 9346|      3|			const zend_attribute *deprecated = zend_get_attribute_str(c->attributes, "deprecated", sizeof("deprecated")-1);
 9347|       |
 9348|      3|			if (deprecated) {
  ------------------
  |  Branch (9348:8): [True: 1, False: 2]
  ------------------
 9349|      1|				ZEND_CLASS_CONST_FLAGS(c) |= ZEND_ACC_DEPRECATED;
  ------------------
  |  |  498|      1|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      1|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              				ZEND_CLASS_CONST_FLAGS(c) |= ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|      1|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
 9350|       |				/* For deprecated constants, we need to flag the zval for recursion
 9351|       |				 * detection. Make sure the zval is separated out of shm. */
 9352|      1|				ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
  ------------------
  |  |  333|      1|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
 9353|      1|				ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      1|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 9354|      1|			}
 9355|      3|		}
 9356|    139|	}
 9357|    141|}
zend_compile.c:zend_compile_use_trait:
 9430|    101|{
 9431|    101|	const zend_ast_list *traits = zend_ast_get_list(ast->child[0]);
 9432|    101|	zend_ast_list *adaptations = ast->child[1] ? zend_ast_get_list(ast->child[1]) : NULL;
  ------------------
  |  Branch (9432:31): [True: 27, False: 74]
  ------------------
 9433|    101|	zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    101|# define CG(v) (compiler_globals.v)
  ------------------
 9434|    101|	uint32_t i;
 9435|       |
 9436|    101|	ce->trait_names = erealloc(ce->trait_names, sizeof(zend_class_name) * (ce->num_traits + traits->children));
  ------------------
  |  |  158|    101|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    101|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    101|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    101|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    101|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9437|       |
 9438|    215|	for (i = 0; i < traits->children; ++i) {
  ------------------
  |  Branch (9438:14): [True: 115, False: 100]
  ------------------
 9439|    115|		zend_ast *trait_ast = traits->child[i];
 9440|       |
 9441|    115|		if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|    115|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (9441:7): [True: 1, False: 114]
  ------------------
 9442|      1|			zend_string *name = zend_ast_get_str(trait_ast);
 9443|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use traits inside of interfaces. "
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9444|      1|				"%s is used in %s", ZSTR_VAL(name), ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"%s is used in %s", ZSTR_VAL(name), ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9445|      1|		}
 9446|       |
 9447|    114|		ce->trait_names[ce->num_traits].name =
 9448|    114|			zend_resolve_const_class_name_reference(trait_ast, "trait name");
 9449|    114|		ce->trait_names[ce->num_traits].lc_name = zend_string_tolower(ce->trait_names[ce->num_traits].name);
 9450|    114|		ce->num_traits++;
 9451|    114|	}
 9452|       |
 9453|    100|	if (!adaptations) {
  ------------------
  |  Branch (9453:6): [True: 72, False: 28]
  ------------------
 9454|     72|		return;
 9455|     72|	}
 9456|       |
 9457|     56|	for (i = 0; i < adaptations->children; ++i) {
  ------------------
  |  Branch (9457:14): [True: 30, False: 26]
  ------------------
 9458|     30|		const zend_ast *adaptation_ast = adaptations->child[i];
 9459|     30|		switch (adaptation_ast->kind) {
 9460|     11|			case ZEND_AST_TRAIT_PRECEDENCE:
  ------------------
  |  Branch (9460:4): [True: 11, False: 19]
  ------------------
 9461|     11|				zend_compile_trait_precedence(adaptation_ast);
 9462|     11|				break;
 9463|     19|			case ZEND_AST_TRAIT_ALIAS:
  ------------------
  |  Branch (9463:4): [True: 19, False: 11]
  ------------------
 9464|     19|				zend_compile_trait_alias(adaptation_ast);
 9465|     19|				break;
 9466|      0|			default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9466:4): [True: 0, False: 30]
  |  Branch (9466:13): [Folded, False: 0]
  |  Branch (9466:13): [Folded, False: 0]
  ------------------
 9467|     30|		}
 9468|     30|	}
 9469|     28|}
zend_compile.c:zend_compile_trait_precedence:
 9385|     11|{
 9386|     11|	const zend_ast *method_ref_ast = ast->child[0];
 9387|     11|	zend_ast *insteadof_ast = ast->child[1];
 9388|     11|	const zend_ast_list *insteadof_list = zend_ast_get_list(insteadof_ast);
 9389|     11|	uint32_t i;
 9390|       |
 9391|     11|	zend_trait_precedence *precedence = emalloc(sizeof(zend_trait_precedence) + (insteadof_list->children - 1) * sizeof(zend_string*));
  ------------------
  |  |  150|     11|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9392|     11|	zend_compile_method_ref(method_ref_ast, &precedence->trait_method);
 9393|     11|	precedence->num_excludes = insteadof_list->children;
 9394|       |
 9395|     22|	for (i = 0; i < insteadof_list->children; ++i) {
  ------------------
  |  Branch (9395:14): [True: 11, False: 11]
  ------------------
 9396|     11|		zend_ast *name_ast = insteadof_list->child[i];
 9397|     11|		precedence->exclude_class_names[i] =
 9398|     11|			zend_resolve_const_class_name_reference(name_ast, "trait name");
 9399|     11|	}
 9400|       |
 9401|     11|	zend_add_to_list(&CG(active_class_entry)->trait_precedences, precedence);
  ------------------
  |  |   35|     11|# define CG(v) (compiler_globals.v)
  ------------------
 9402|     11|}
zend_compile.c:zend_compile_method_ref:
 9370|     28|{
 9371|     28|	zend_ast *class_ast = ast->child[0];
 9372|     28|	zend_ast *method_ast = ast->child[1];
 9373|       |
 9374|     28|	method_ref->method_name = zend_string_copy(zend_ast_get_str(method_ast));
 9375|       |
 9376|     28|	if (class_ast) {
  ------------------
  |  Branch (9376:6): [True: 15, False: 13]
  ------------------
 9377|     15|		method_ref->class_name = zend_resolve_const_class_name_reference(class_ast, "trait name");
 9378|     15|	} else {
 9379|       |		method_ref->class_name = NULL;
 9380|     13|	}
 9381|     28|}
zend_compile.c:zend_add_to_list:
 1921|     28|{
 1922|     28|	void** list = *(void**)result;
 1923|     28|	size_t n = 0;
 1924|       |
 1925|     28|	if (list) {
  ------------------
  |  Branch (1925:6): [True: 3, False: 25]
  ------------------
 1926|      6|		while (list[n]) {
  ------------------
  |  Branch (1926:10): [True: 3, False: 3]
  ------------------
 1927|      3|			n++;
 1928|      3|		}
 1929|      3|	}
 1930|       |
 1931|     28|	list = erealloc(list, sizeof(void*) * (n+2));
  ------------------
  |  |  158|     28|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     28|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     28|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     28|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     28|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1932|       |
 1933|     28|	list[n]   = item;
 1934|     28|	list[n+1] = NULL;
 1935|       |
 1936|     28|	*(void**)result = list;
 1937|     28|}
zend_compile.c:zend_compile_trait_alias:
 9406|     19|{
 9407|     19|	const zend_ast *method_ref_ast = ast->child[0];
 9408|     19|	zend_ast *alias_ast = ast->child[1];
 9409|     19|	uint32_t modifiers = ast->attr;
 9410|       |
 9411|     19|	zend_trait_alias *alias;
 9412|       |
 9413|     19|	zend_check_trait_alias_modifiers(modifiers);
 9414|       |
 9415|     19|	alias = emalloc(sizeof(zend_trait_alias));
  ------------------
  |  |  150|     19|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     19|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     19|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     19|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     19|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9416|     19|	zend_compile_method_ref(method_ref_ast, &alias->trait_method);
 9417|     19|	alias->modifiers = modifiers;
 9418|       |
 9419|     19|	if (alias_ast) {
  ------------------
  |  Branch (9419:6): [True: 12, False: 7]
  ------------------
 9420|     12|		alias->alias = zend_string_copy(zend_ast_get_str(alias_ast));
 9421|     12|	} else {
 9422|      7|		alias->alias = NULL;
 9423|      7|	}
 9424|       |
 9425|     19|	zend_add_to_list(&CG(active_class_entry)->trait_aliases, alias);
  ------------------
  |  |   35|     19|# define CG(v) (compiler_globals.v)
  ------------------
 9426|     19|}
zend_compile.c:zend_check_trait_alias_modifiers:
 9286|     19|{
 9287|     19|	if (attr & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     19|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (9287:6): [True: 1, False: 18]
  ------------------
 9288|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use \"static\" as method modifier in trait alias");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9289|     18|	} else if (attr & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     18|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (9289:13): [True: 1, False: 17]
  ------------------
 9290|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use \"abstract\" as method modifier in trait alias");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9291|      1|	}
 9292|     19|}
zend_compile.c:zend_compile_group_use:
 9946|      6|{
 9947|      6|	uint32_t i;
 9948|      6|	const zend_string *ns = zend_ast_get_str(ast->child[0]);
 9949|      6|	const zend_ast_list *list = zend_ast_get_list(ast->child[1]);
 9950|       |
 9951|     12|	for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (9951:14): [True: 6, False: 6]
  ------------------
 9952|      6|		zend_ast *inline_use, *use = list->child[i];
 9953|      6|		zval *name_zval = zend_ast_get_zval(use->child[0]);
 9954|      6|		zend_string *name = Z_STR_P(name_zval);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 9955|      6|		zend_string *compound_ns = zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_string *compound_ns = zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		zend_string *compound_ns = zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_string *compound_ns = zend_concat_names(ZSTR_VAL(ns), ZSTR_LEN(ns), ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9956|      6|		zend_string_release_ex(name, 0);
 9957|      6|		ZVAL_STR(name_zval, compound_ns);
  ------------------
  |  | 1088|      6|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      6|		zval *__z = (z);						\
  |  | 1090|      6|		zend_string *__s = (s);					\
  |  | 1091|      6|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      6|		/* interned strings support */			\
  |  | 1093|      6|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 6]
  |  |  ------------------
  |  | 1094|      6|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      6|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     12|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 9958|      6|		inline_use = zend_ast_create_list(1, ZEND_AST_USE, use);
  ------------------
  |  |  320|      6|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9959|      6|		inline_use->attr = ast->attr ? ast->attr : use->attr;
  ------------------
  |  Branch (9959:22): [True: 1, False: 5]
  ------------------
 9960|      6|		zend_compile_use(inline_use);
 9961|      6|	}
 9962|      6|}
zend_compile.c:zend_compile_use:
 9873|     81|{
 9874|     81|	const zend_ast_list *list = zend_ast_get_list(ast);
 9875|     81|	uint32_t i;
 9876|     81|	zend_string *current_ns = FC(current_namespace);
  ------------------
  |  |   60|     81|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     81|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 9877|     81|	uint32_t type = ast->attr;
 9878|     81|	HashTable *current_import = zend_get_import_ht(type);
 9879|     81|	bool case_sensitive = type == ZEND_SYMBOL_CONST;
  ------------------
  |  | 1225|     81|#define ZEND_SYMBOL_CONST    (1<<2)
  ------------------
 9880|       |
 9881|    161|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (9881:14): [True: 88, False: 73]
  ------------------
 9882|     88|		const zend_ast *use_ast = list->child[i];
 9883|     88|		zend_ast *old_name_ast = use_ast->child[0];
 9884|     88|		zend_ast *new_name_ast = use_ast->child[1];
 9885|     88|		zend_string *old_name = zend_ast_get_str(old_name_ast);
 9886|     88|		zend_string *new_name, *lookup_name;
 9887|       |
 9888|     88|		if (new_name_ast) {
  ------------------
  |  Branch (9888:7): [True: 32, False: 56]
  ------------------
 9889|     32|			new_name = zend_string_copy(zend_ast_get_str(new_name_ast));
 9890|     56|		} else {
 9891|     56|			const char *unqualified_name;
 9892|     56|			size_t unqualified_name_len;
 9893|     56|			if (zend_get_unqualified_name(old_name, &unqualified_name, &unqualified_name_len)) {
  ------------------
  |  Branch (9893:8): [True: 33, False: 23]
  ------------------
 9894|       |				/* The form "use A\B" is equivalent to "use A\B as B" */
 9895|     33|				new_name = zend_string_init(unqualified_name, unqualified_name_len, 0);
 9896|     33|			} else {
 9897|     23|				new_name = zend_string_copy(old_name);
 9898|       |
 9899|     23|				if (!current_ns) {
  ------------------
  |  Branch (9899:9): [True: 19, False: 4]
  ------------------
 9900|     19|					zend_error(E_WARNING, "The use statement with non-compound name '%s' "
  ------------------
  |  |   23|     19|#define E_WARNING			(1<<1L)
  ------------------
 9901|     19|						"has no effect", ZSTR_VAL(new_name));
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9902|     19|				}
 9903|     23|			}
 9904|     56|		}
 9905|       |
 9906|     88|		if (case_sensitive) {
  ------------------
  |  Branch (9906:7): [True: 16, False: 72]
  ------------------
 9907|     16|			lookup_name = zend_string_copy(new_name);
 9908|     72|		} else {
 9909|     72|			lookup_name = zend_string_tolower(new_name);
 9910|     72|		}
 9911|       |
 9912|     88|		if (type == ZEND_SYMBOL_CLASS && zend_is_reserved_class_name(new_name)) {
  ------------------
  |  | 1223|    176|#define ZEND_SYMBOL_CLASS    (1<<0)
  ------------------
  |  Branch (9912:7): [True: 55, False: 33]
  |  Branch (9912:36): [True: 4, False: 51]
  ------------------
 9913|      4|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use %s as %s because '%s' "
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9914|      4|				"is a special class name", ZSTR_VAL(old_name), ZSTR_VAL(new_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"is a special class name", ZSTR_VAL(old_name), ZSTR_VAL(new_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"is a special class name", ZSTR_VAL(old_name), ZSTR_VAL(new_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9915|      4|		}
 9916|       |
 9917|     84|		if (current_ns) {
  ------------------
  |  Branch (9917:7): [True: 28, False: 56]
  ------------------
 9918|     28|			zend_string *ns_name = zend_string_alloc(ZSTR_LEN(current_ns) + 1 + ZSTR_LEN(new_name), 0);
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			zend_string *ns_name = zend_string_alloc(ZSTR_LEN(current_ns) + 1 + ZSTR_LEN(new_name), 0);
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9919|     28|			zend_str_tolower_copy(ZSTR_VAL(ns_name), ZSTR_VAL(current_ns), ZSTR_LEN(current_ns));
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(ns_name), ZSTR_VAL(current_ns), ZSTR_LEN(current_ns));
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(ns_name), ZSTR_VAL(current_ns), ZSTR_LEN(current_ns));
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9920|     28|			ZSTR_VAL(ns_name)[ZSTR_LEN(current_ns)] = '\\';
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ns_name)[ZSTR_LEN(current_ns)] = '\\';
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9921|     28|			memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name) + 1);
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name) + 1);
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name) + 1);
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(ns_name) + ZSTR_LEN(current_ns) + 1, ZSTR_VAL(lookup_name), ZSTR_LEN(lookup_name) + 1);
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9922|       |
 9923|     28|			if (zend_have_seen_symbol(ns_name, type)) {
  ------------------
  |  Branch (9923:8): [True: 3, False: 25]
  ------------------
 9924|      3|				zend_check_already_in_use(type, old_name, new_name, ns_name);
 9925|      3|			}
 9926|       |
 9927|     28|			zend_string_efree(ns_name);
 9928|     56|		} else if (zend_have_seen_symbol(lookup_name, type)) {
  ------------------
  |  Branch (9928:14): [True: 4, False: 52]
  ------------------
 9929|      4|			zend_check_already_in_use(type, old_name, new_name, lookup_name);
 9930|      4|		}
 9931|       |
 9932|     84|		zend_string_addref(old_name);
 9933|     84|		old_name = zend_new_interned_string(old_name);
 9934|     84|		if (!zend_hash_add_ptr(current_import, lookup_name, old_name)) {
  ------------------
  |  Branch (9934:7): [True: 4, False: 80]
  ------------------
 9935|      4|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use%s %s as %s because the name "
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9936|      4|				"is already in use", zend_get_use_type_str(type), ZSTR_VAL(old_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"is already in use", zend_get_use_type_str(type), ZSTR_VAL(old_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9937|      4|		}
 9938|       |
 9939|     80|		zend_string_release_ex(lookup_name, 0);
 9940|     80|		zend_string_release_ex(new_name, 0);
 9941|     80|	}
 9942|     81|}
zend_compile.c:zend_get_import_ht:
 9818|     81|{
 9819|     81|	switch (type) {
 9820|     54|		case ZEND_SYMBOL_CLASS:
  ------------------
  |  | 1223|     54|#define ZEND_SYMBOL_CLASS    (1<<0)
  ------------------
  |  Branch (9820:3): [True: 54, False: 27]
  ------------------
 9821|     54|			if (!FC(imports)) {
  ------------------
  |  |   60|     54|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     54|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (9821:8): [True: 39, False: 15]
  ------------------
 9822|     39|				FC(imports) = emalloc(sizeof(HashTable));
  ------------------
  |  |   60|     39|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     39|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              				FC(imports) = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|     39|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     39|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     39|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     39|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     39|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9823|     39|				zend_hash_init(FC(imports), 8, NULL, str_dtor, 0);
  ------------------
  |  |  111|     39|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 9824|     39|			}
 9825|     54|			return FC(imports);
  ------------------
  |  |   60|     54|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     54|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 9826|     13|		case ZEND_SYMBOL_FUNCTION:
  ------------------
  |  | 1224|     13|#define ZEND_SYMBOL_FUNCTION (1<<1)
  ------------------
  |  Branch (9826:3): [True: 13, False: 68]
  ------------------
 9827|     13|			if (!FC(imports_function)) {
  ------------------
  |  |   60|     13|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     13|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (9827:8): [True: 11, False: 2]
  ------------------
 9828|     11|				FC(imports_function) = emalloc(sizeof(HashTable));
  ------------------
  |  |   60|     11|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     11|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              				FC(imports_function) = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|     11|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9829|     11|				zend_hash_init(FC(imports_function), 8, NULL, str_dtor, 0);
  ------------------
  |  |  111|     11|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 9830|     11|			}
 9831|     13|			return FC(imports_function);
  ------------------
  |  |   60|     13|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     13|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 9832|     14|		case ZEND_SYMBOL_CONST:
  ------------------
  |  | 1225|     14|#define ZEND_SYMBOL_CONST    (1<<2)
  ------------------
  |  Branch (9832:3): [True: 14, False: 67]
  ------------------
 9833|     14|			if (!FC(imports_const)) {
  ------------------
  |  |   60|     14|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     14|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (9833:8): [True: 12, False: 2]
  ------------------
 9834|     12|				FC(imports_const) = emalloc(sizeof(HashTable));
  ------------------
  |  |   60|     12|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     12|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              				FC(imports_const) = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9835|     12|				zend_hash_init(FC(imports_const), 8, NULL, str_dtor, 0);
  ------------------
  |  |  111|     12|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 9836|     12|			}
 9837|     14|			return FC(imports_const);
  ------------------
  |  |   60|     14|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     14|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 9838|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9838:3): [True: 0, False: 81]
  |  Branch (9838:12): [Folded, False: 0]
  |  Branch (9838:12): [Folded, False: 0]
  ------------------
 9839|     81|	}
 9840|       |
 9841|      0|	return NULL;
 9842|     81|}
zend_compile.c:str_dtor:
 1240|     58|static void str_dtor(zval *zv)  /* {{{ */ {
 1241|     58|	zend_string_release_ex(Z_STR_P(zv), 0);
  ------------------
  |  |  982|     58|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     58|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1242|     58|}
zend_compile.c:zend_have_seen_symbol:
  448|     84|static bool zend_have_seen_symbol(zend_string *name, uint32_t kind) {
  449|     84|	const zval *zv = zend_hash_find(&FC(seen_symbols), name);
  ------------------
  |  |   60|     84|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     84|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  450|     84|	return zv && (Z_LVAL_P(zv) & kind) != 0;
  ------------------
  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (450:9): [True: 8, False: 76]
  |  Branch (450:15): [True: 7, False: 1]
  ------------------
  451|     84|}
zend_compile.c:zend_check_already_in_use:
 9862|      7|{
 9863|      7|	if (zend_string_equals_ci(old_name, check_name)) {
  ------------------
  |  |  401|      7|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 3, False: 4]
  |  |  |  Branch (401:35): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 9864|      2|		return;
 9865|      2|	}
 9866|       |
 9867|      5|	zend_error_noreturn(E_COMPILE_ERROR, "Cannot use%s %s as %s because the name "
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9868|      5|		"is already in use", zend_get_use_type_str(type), ZSTR_VAL(old_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		"is already in use", zend_get_use_type_str(type), ZSTR_VAL(old_name), ZSTR_VAL(new_name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9869|      7|}
zend_compile.c:zend_get_use_type_str:
 9846|      9|{
 9847|      9|	switch (type) {
 9848|      4|		case ZEND_SYMBOL_CLASS:
  ------------------
  |  | 1223|      4|#define ZEND_SYMBOL_CLASS    (1<<0)
  ------------------
  |  Branch (9848:3): [True: 4, False: 5]
  ------------------
 9849|      4|			return "";
 9850|      3|		case ZEND_SYMBOL_FUNCTION:
  ------------------
  |  | 1224|      3|#define ZEND_SYMBOL_FUNCTION (1<<1)
  ------------------
  |  Branch (9850:3): [True: 3, False: 6]
  ------------------
 9851|      3|			return " function";
 9852|      2|		case ZEND_SYMBOL_CONST:
  ------------------
  |  | 1225|      2|#define ZEND_SYMBOL_CONST    (1<<2)
  ------------------
  |  Branch (9852:3): [True: 2, False: 7]
  ------------------
 9853|      2|			return " const";
 9854|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9854:3): [True: 0, False: 9]
  |  Branch (9854:12): [Folded, False: 0]
  |  Branch (9854:12): [Folded, False: 0]
  ------------------
 9855|      9|	}
 9856|       |
 9857|      0|	return " unknown";
 9858|      9|}
zend_compile.c:zend_compile_const_decl:
 9966|    158|{
 9967|    158|	zend_ast_list *list = zend_ast_get_list(ast);
 9968|    158|	uint32_t i;
 9969|    158|	zend_ast *attributes_ast = NULL;
 9970|    158|	zend_op *last_op = NULL;
 9971|    329|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (9971:14): [True: 175, False: 154]
  ------------------
 9972|    175|		zend_ast *const_ast = list->child[i];
 9973|    175|		if (const_ast->kind == ZEND_AST_ATTRIBUTE_LIST) {
  ------------------
  |  Branch (9973:7): [True: 14, False: 161]
  ------------------
 9974|     14|			ZEND_ASSERT(i == list->children - 1);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9974:4): [True: 0, False: 14]
  |  Branch (9974:4): [True: 14, False: 0]
  ------------------
 9975|     14|			attributes_ast = const_ast;
 9976|     14|			continue;
 9977|     14|		}
 9978|    161|		ZEND_ASSERT(const_ast->kind == ZEND_AST_CONST_ELEM);
  ------------------
  |  |  112|    161|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9978:3): [True: 0, False: 161]
  |  Branch (9978:3): [True: 161, False: 0]
  ------------------
 9979|    161|		zend_ast *name_ast = const_ast->child[0];
 9980|    161|		zend_ast **value_ast_ptr = &const_ast->child[1];
 9981|    161|		zend_string *unqualified_name = zend_ast_get_str(name_ast);
 9982|       |
 9983|    161|		zend_string *name;
 9984|    161|		znode name_node, value_node;
 9985|    161|		zval *value_zv = &value_node.u.constant;
 9986|       |
 9987|    161|		value_node.op_type = IS_CONST;
  ------------------
  |  |  864|    161|#define IS_CONST	(1<<0)
  ------------------
 9988|    161|		zend_const_expr_to_zval(value_zv, value_ast_ptr, /* allow_dynamic */ true);
 9989|       |
 9990|    161|		if (zend_get_special_const(ZSTR_VAL(unqualified_name), ZSTR_LEN(unqualified_name))) {
  ------------------
  |  |   67|    161|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if (zend_get_special_const(ZSTR_VAL(unqualified_name), ZSTR_LEN(unqualified_name))) {
  ------------------
  |  |   68|    161|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (9990:7): [True: 2, False: 159]
  ------------------
 9991|      2|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 9992|      2|				"Cannot redeclare constant '%s'", ZSTR_VAL(unqualified_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 9993|      2|		}
 9994|       |
 9995|    159|		name = zend_prefix_with_ns(unqualified_name);
 9996|    159|		name = zend_new_interned_string(name);
 9997|       |
 9998|    159|		if (FC(imports_const)) {
  ------------------
  |  |   60|    159|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    159|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 2, False: 157]
  |  |  ------------------
  ------------------
 9999|      2|			zend_string *import_name = zend_hash_find_ptr(FC(imports_const), unqualified_name);
  ------------------
  |  |   60|      2|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      2|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
10000|      2|			if (import_name && !zend_string_equals(import_name, name)) {
  ------------------
  |  Branch (10000:8): [True: 2, False: 0]
  |  Branch (10000:23): [True: 2, False: 0]
  ------------------
10001|      2|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare const %s because "
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10002|      2|					"the name is already in use", ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
10003|      2|			}
10004|      2|		}
10005|       |
10006|    157|		name_node.op_type = IS_CONST;
  ------------------
  |  |  864|    157|#define IS_CONST	(1<<0)
  ------------------
10007|    157|		ZVAL_STR(&name_node.u.constant, name);
  ------------------
  |  | 1088|    157|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    157|		zval *__z = (z);						\
  |  | 1090|    157|		zend_string *__s = (s);					\
  |  | 1091|    157|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    157|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    157|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    157|		/* interned strings support */			\
  |  | 1093|    157|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    157|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    157|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 61, False: 96]
  |  |  ------------------
  |  | 1094|    157|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     61|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     61|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    157|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    253|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     96|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     96|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     96|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    157|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 157]
  |  |  ------------------
  ------------------
10008|       |
10009|    157|		last_op = zend_emit_op(NULL, ZEND_DECLARE_CONST, &name_node, &value_node);
  ------------------
  |  |  265|    157|#define ZEND_DECLARE_CONST                  143
  ------------------
10010|       |
10011|    157|		zend_register_seen_symbol(name, ZEND_SYMBOL_CONST);
  ------------------
  |  | 1225|    157|#define ZEND_SYMBOL_CONST    (1<<2)
  ------------------
10012|    157|	}
10013|    154|	if (attributes_ast == NULL) {
  ------------------
  |  Branch (10013:6): [True: 127, False: 27]
  ------------------
10014|    127|		return;
10015|    127|	}
10016|       |	/* Validate: attributes can only be applied to one constant at a time
10017|       |	 * Since we store the AST for the attributes in the list of children,
10018|       |	 * there should be exactly 2 children. */
10019|     27|	if (list->children > 2) {
  ------------------
  |  Branch (10019:6): [True: 1, False: 26]
  ------------------
10020|      1|		zend_error_noreturn(
10021|      1|			E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10022|      1|			"Cannot apply attributes to multiple constants at once"
10023|      1|		);
10024|      1|	}
10025|       |
10026|     26|	HashTable *attributes = NULL;
10027|     26|	zend_compile_attributes(&attributes, list->child[1], 0, ZEND_ATTRIBUTE_TARGET_CONST, 0);
  ------------------
  |  |   31|     26|#define ZEND_ATTRIBUTE_TARGET_CONST			(1<<6)
  ------------------
10028|       |
10029|     26|	ZEND_ASSERT(last_op != NULL);
  ------------------
  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10029:2): [True: 0, False: 26]
  |  Branch (10029:2): [True: 12, False: 14]
  ------------------
10030|     26|	last_op->opcode = ZEND_DECLARE_ATTRIBUTED_CONST;
  ------------------
  |  |  332|     12|#define ZEND_DECLARE_ATTRIBUTED_CONST       210
  ------------------
10031|     12|	znode attribs_node;
10032|     12|	attribs_node.op_type = IS_CONST;
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
10033|     12|	ZVAL_PTR(&attribs_node.u.constant, attributes);
  ------------------
  |  | 1251|     12|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     12|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     12|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     12|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
10034|     12|	zend_emit_op_data(&attribs_node);
10035|     12|	CG(active_op_array)->fn_flags |= ZEND_ACC_PTR_OPS;
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
              	CG(active_op_array)->fn_flags |= ZEND_ACC_PTR_OPS;
  ------------------
  |  |  407|     12|#define ZEND_ACC_PTR_OPS                 (1 << 28) /*     |  X  |     |     */
  ------------------
10036|     12|}
zend_compile.c:zend_compile_namespace:
10040|    171|{
10041|    171|	zend_ast *name_ast = ast->child[0];
10042|    171|	zend_ast *stmt_ast = ast->child[1];
10043|    171|	zend_string *name;
10044|    171|	bool with_bracket = stmt_ast != NULL;
10045|       |
10046|       |	/* handle mixed syntax declaration or nested namespaces */
10047|    171|	if (!FC(has_bracketed_namespaces)) {
  ------------------
  |  |   60|    171|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    171|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (10047:6): [True: 156, False: 15]
  ------------------
10048|    156|		if (FC(current_namespace)) {
  ------------------
  |  |   60|    156|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    156|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 0, False: 156]
  |  |  ------------------
  ------------------
10049|       |			/* previous namespace declarations were unbracketed */
10050|      0|			if (with_bracket) {
  ------------------
  |  Branch (10050:8): [True: 0, False: 0]
  ------------------
10051|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot mix bracketed namespace declarations "
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10052|      0|					"with unbracketed namespace declarations");
10053|      0|			}
10054|      0|		}
10055|    156|	} else {
10056|       |		/* previous namespace declarations were bracketed */
10057|     15|		if (!with_bracket) {
  ------------------
  |  Branch (10057:7): [True: 0, False: 15]
  ------------------
10058|      0|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot mix bracketed namespace declarations "
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10059|      0|				"with unbracketed namespace declarations");
10060|     15|		} else if (FC(current_namespace) || FC(in_namespace)) {
  ------------------
  |  |   60|     30|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     15|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 1, False: 14]
  |  |  ------------------
  ------------------
              		} else if (FC(current_namespace) || FC(in_namespace)) {
  ------------------
  |  |   60|     14|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     14|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 0, False: 14]
  |  |  ------------------
  ------------------
10061|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Namespace declarations cannot be nested");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10062|      1|		}
10063|     15|	}
10064|       |
10065|    171|	bool is_first_namespace = (!with_bracket && !FC(current_namespace))
  ------------------
  |  |   60|    131|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    131|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (10065:29): [True: 131, False: 39]
  |  Branch (10065:46): [True: 131, False: 0]
  ------------------
10066|     39|		|| (with_bracket && !FC(has_bracketed_namespaces));
  ------------------
  |  |   60|     39|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     39|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (10066:7): [True: 39, False: 0]
  |  Branch (10066:23): [True: 25, False: 14]
  ------------------
10067|    170|	if (is_first_namespace && FAILURE == zend_is_first_statement(ast, /* allow_nop */ true)) {
  ------------------
  |  Branch (10067:6): [True: 156, False: 14]
  |  Branch (10067:28): [True: 2, False: 154]
  ------------------
10068|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Namespace declaration statement has to be "
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10069|      2|			"the very first statement or after any declare call in the script");
10070|      2|	}
10071|       |
10072|    168|	if (FC(current_namespace)) {
  ------------------
  |  |   60|    168|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    168|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 0, False: 168]
  |  |  ------------------
  ------------------
10073|      0|		zend_string_release_ex(FC(current_namespace), 0);
  ------------------
  |  |   60|      0|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
10074|      0|	}
10075|       |
10076|    168|	if (name_ast) {
  ------------------
  |  Branch (10076:6): [True: 153, False: 15]
  ------------------
10077|    153|		name = zend_ast_get_str(name_ast);
10078|       |
10079|    153|		if (zend_string_equals_literal_ci(name, "namespace")) {
  ------------------
  |  |  404|    153|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    153|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 2, False: 151]
  |  |  |  Branch (404:40): [True: 1, False: 1]
  |  |  ------------------
  ------------------
10080|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use '%s' as namespace name", ZSTR_VAL(name));
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use '%s' as namespace name", ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
10081|      1|		}
10082|       |
10083|    152|		FC(current_namespace) = zend_string_copy(name);
  ------------------
  |  |   60|    152|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    152|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
10084|    152|	} else {
10085|     15|		FC(current_namespace) = NULL;
  ------------------
  |  |   60|     15|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     15|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
10086|     15|	}
10087|       |
10088|    167|	zend_reset_import_tables();
10089|       |
10090|    167|	FC(in_namespace) = 1;
  ------------------
  |  |   60|    167|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    167|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
10091|    167|	if (with_bracket) {
  ------------------
  |  Branch (10091:6): [True: 39, False: 128]
  ------------------
10092|     39|		FC(has_bracketed_namespaces) = 1;
  ------------------
  |  |   60|     39|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     39|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
10093|     39|	}
10094|       |
10095|    167|	if (stmt_ast) {
  ------------------
  |  Branch (10095:6): [True: 39, False: 128]
  ------------------
10096|     39|		zend_compile_top_stmt(stmt_ast);
10097|     39|		zend_end_namespace();
10098|     39|	}
10099|    167|}
zend_compile.c:zend_compile_halt_compiler:
10103|      6|{
10104|      6|	zend_ast *offset_ast = ast->child[0];
10105|      6|	zend_long offset = Z_LVAL_P(zend_ast_get_zval(offset_ast));
  ------------------
  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
10106|       |
10107|      6|	const char const_name[] = "__COMPILER_HALT_OFFSET__";
10108|       |
10109|      6|	if (FC(has_bracketed_namespaces) && FC(in_namespace)) {
  ------------------
  |  |   60|     12|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 1, False: 5]
  |  |  ------------------
  ------------------
              	if (FC(has_bracketed_namespaces) && FC(in_namespace)) {
  ------------------
  |  |   60|      1|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 0, False: 1]
  |  |  ------------------
  ------------------
10110|      0|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10111|      0|			"__HALT_COMPILER() can only be used from the outermost scope");
10112|      0|	}
10113|       |
10114|      6|	const zend_string *filename = zend_get_compiled_filename();
10115|      6|	zend_string *name = zend_mangle_property_name(const_name, sizeof(const_name) - 1,
10116|      6|		ZSTR_VAL(filename), ZSTR_LEN(filename), false);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(filename), ZSTR_LEN(filename), false);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10117|       |
10118|       |	/* Avoid repeated declaration of the __COMPILER_HALT_OFFSET__ constant in
10119|       |	 * case this file was already included. */
10120|      6|	if (!zend_hash_find(EG(zend_constants), name)) {
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (10120:6): [True: 6, False: 0]
  ------------------
10121|      6|		zend_register_long_constant(ZSTR_VAL(name), ZSTR_LEN(name), offset, 0, 0);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_register_long_constant(ZSTR_VAL(name), ZSTR_LEN(name), offset, 0, 0);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10122|      6|	}
10123|      6|	zend_string_release_ex(name, 0);
10124|      6|}
zend_compile.c:zend_compile_expr:
12249|  30.2k|{
12250|  30.2k|	zend_check_stack_limit();
12251|       |
12252|  30.2k|	uint32_t checkpoint = zend_short_circuiting_checkpoint();
12253|  30.2k|	zend_compile_expr_inner(result, ast);
12254|  30.2k|	zend_short_circuiting_commit(checkpoint, result, ast);
12255|  30.2k|#if ZEND_DEBUG
12256|  30.2k|	if (result) {
  ------------------
  |  Branch (12256:6): [True: 30.0k, False: 171]
  ------------------
12257|       |		/* BP_VAR_R is not allowed to produce IS_VAR. */
12258|       |		ZEND_ASSERT(result->op_type != IS_VAR);
  ------------------
  |  |  112|  30.0k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12258:3): [True: 0, False: 30.0k]
  |  Branch (12258:3): [True: 30.0k, False: 0]
  ------------------
12259|  30.0k|	}
12260|  30.2k|#endif
12261|  30.2k|}
zend_compile.c:zend_compile_expr_inner:
12110|  30.2k|{
12111|       |	/* CG(zend_lineno) = ast->lineno; */
12112|  30.2k|	CG(zend_lineno) = zend_ast_get_lineno(ast);
  ------------------
  |  |   35|  30.2k|# define CG(v) (compiler_globals.v)
  ------------------
12113|       |
12114|  30.2k|	if (CG(memoize_mode) != ZEND_MEMOIZE_NONE) {
  ------------------
  |  |   35|  30.2k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (12114:6): [True: 37, False: 30.1k]
  ------------------
12115|     37|		zend_compile_memoized_expr(result, ast, BP_VAR_R);
  ------------------
  |  | 1074|     37|#define BP_VAR_R			0
  ------------------
12116|     37|		return;
12117|     37|	}
12118|       |
12119|  30.1k|	switch (ast->kind) {
12120|  11.5k|		case ZEND_AST_ZVAL:
  ------------------
  |  Branch (12120:3): [True: 11.5k, False: 18.6k]
  ------------------
12121|  11.5k|			ZVAL_COPY(&result->u.constant, zend_ast_get_zval(ast));
  ------------------
  |  | 1425|  11.5k|	do {												\
  |  | 1426|  11.5k|		zval *_z1 = (z);								\
  |  | 1427|  11.5k|		const zval *_z2 = (v);							\
  |  | 1428|  11.5k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  11.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  11.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  11.5k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  11.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  11.5k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  11.5k|	do {												\
  |  |  |  | 1408|  11.5k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  11.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  11.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  11.5k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  11.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  11.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  11.5k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 11.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  11.5k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  11.5k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  11.5k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6.59k, False: 4.97k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|  6.59k|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|  6.59k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|  6.59k|		}												\
  |  | 1434|  11.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 11.5k]
  |  |  ------------------
  ------------------
12122|  11.5k|			result->op_type = IS_CONST;
  ------------------
  |  |  864|  11.5k|#define IS_CONST	(1<<0)
  ------------------
12123|  11.5k|			return;
12124|    180|		case ZEND_AST_ZNODE:
  ------------------
  |  Branch (12124:3): [True: 180, False: 30.0k]
  ------------------
12125|    180|			*result = *zend_ast_get_znode(ast);
12126|    180|			return;
12127|  3.46k|		case ZEND_AST_VAR:
  ------------------
  |  Branch (12127:3): [True: 3.46k, False: 26.7k]
  ------------------
12128|  3.61k|		case ZEND_AST_DIM:
  ------------------
  |  Branch (12128:3): [True: 153, False: 30.0k]
  ------------------
12129|  3.71k|		case ZEND_AST_PROP:
  ------------------
  |  Branch (12129:3): [True: 103, False: 30.0k]
  ------------------
12130|  3.77k|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (12130:3): [True: 53, False: 30.1k]
  ------------------
12131|  3.81k|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (12131:3): [True: 42, False: 30.1k]
  ------------------
12132|  7.72k|		case ZEND_AST_CALL:
  ------------------
  |  Branch (12132:3): [True: 3.91k, False: 26.2k]
  ------------------
12133|  8.12k|		case ZEND_AST_METHOD_CALL:
  ------------------
  |  Branch (12133:3): [True: 399, False: 29.7k]
  ------------------
12134|  8.12k|		case ZEND_AST_NULLSAFE_METHOD_CALL:
  ------------------
  |  Branch (12134:3): [True: 4, False: 30.1k]
  ------------------
12135|  8.25k|		case ZEND_AST_STATIC_CALL:
  ------------------
  |  Branch (12135:3): [True: 131, False: 30.0k]
  ------------------
12136|  8.27k|		case ZEND_AST_PIPE:
  ------------------
  |  Branch (12136:3): [True: 21, False: 30.1k]
  ------------------
12137|  8.27k|			zend_compile_var(result, ast, BP_VAR_R, false);
  ------------------
  |  | 1074|  8.27k|#define BP_VAR_R			0
  ------------------
12138|  8.27k|			return;
12139|    639|		case ZEND_AST_ASSIGN:
  ------------------
  |  Branch (12139:3): [True: 639, False: 29.5k]
  ------------------
12140|    639|			zend_compile_assign(result, ast, /* stmt */ false, BP_VAR_R);
  ------------------
  |  | 1074|    639|#define BP_VAR_R			0
  ------------------
12141|    639|			return;
12142|     27|		case ZEND_AST_ASSIGN_REF:
  ------------------
  |  Branch (12142:3): [True: 27, False: 30.1k]
  ------------------
12143|     27|			zend_compile_assign_ref(result, ast, BP_VAR_R);
  ------------------
  |  | 1074|     27|#define BP_VAR_R			0
  ------------------
12144|     27|			return;
12145|  1.67k|		case ZEND_AST_NEW:
  ------------------
  |  Branch (12145:3): [True: 1.67k, False: 28.5k]
  ------------------
12146|  1.67k|			zend_compile_new(result, ast);
12147|  1.67k|			return;
12148|    318|		case ZEND_AST_ASSIGN_OP:
  ------------------
  |  Branch (12148:3): [True: 318, False: 29.8k]
  ------------------
12149|    318|			zend_compile_compound_assign(result, ast);
12150|    318|			return;
12151|  2.26k|		case ZEND_AST_BINARY_OP:
  ------------------
  |  Branch (12151:3): [True: 2.26k, False: 27.9k]
  ------------------
12152|  2.26k|			zend_compile_binary_op(result, ast);
12153|  2.26k|			return;
12154|    118|		case ZEND_AST_GREATER:
  ------------------
  |  Branch (12154:3): [True: 118, False: 30.0k]
  ------------------
12155|    133|		case ZEND_AST_GREATER_EQUAL:
  ------------------
  |  Branch (12155:3): [True: 15, False: 30.1k]
  ------------------
12156|    133|			zend_compile_greater(result, ast);
12157|    133|			return;
12158|    700|		case ZEND_AST_UNARY_OP:
  ------------------
  |  Branch (12158:3): [True: 700, False: 29.4k]
  ------------------
12159|    700|			zend_compile_unary_op(result, ast);
12160|    700|			return;
12161|     70|		case ZEND_AST_UNARY_PLUS:
  ------------------
  |  Branch (12161:3): [True: 70, False: 30.1k]
  ------------------
12162|    282|		case ZEND_AST_UNARY_MINUS:
  ------------------
  |  Branch (12162:3): [True: 212, False: 29.9k]
  ------------------
12163|    282|			zend_compile_unary_pm(result, ast);
12164|    282|			return;
12165|     71|		case ZEND_AST_AND:
  ------------------
  |  Branch (12165:3): [True: 71, False: 30.1k]
  ------------------
12166|     86|		case ZEND_AST_OR:
  ------------------
  |  Branch (12166:3): [True: 15, False: 30.1k]
  ------------------
12167|     86|			zend_compile_short_circuiting(result, ast);
12168|     86|			return;
12169|    194|		case ZEND_AST_POST_INC:
  ------------------
  |  Branch (12169:3): [True: 194, False: 29.9k]
  ------------------
12170|    220|		case ZEND_AST_POST_DEC:
  ------------------
  |  Branch (12170:3): [True: 26, False: 30.1k]
  ------------------
12171|    220|			zend_compile_post_incdec(result, ast);
12172|    220|			return;
12173|     23|		case ZEND_AST_PRE_INC:
  ------------------
  |  Branch (12173:3): [True: 23, False: 30.1k]
  ------------------
12174|     31|		case ZEND_AST_PRE_DEC:
  ------------------
  |  Branch (12174:3): [True: 8, False: 30.1k]
  ------------------
12175|     31|			zend_compile_pre_incdec(result, ast);
12176|     31|			return;
12177|     96|		case ZEND_AST_CAST:
  ------------------
  |  Branch (12177:3): [True: 96, False: 30.0k]
  ------------------
12178|     96|			zend_compile_cast(result, ast);
12179|     96|			return;
12180|     41|		case ZEND_AST_CONDITIONAL:
  ------------------
  |  Branch (12180:3): [True: 41, False: 30.1k]
  ------------------
12181|     41|			zend_compile_conditional(result, ast);
12182|     41|			return;
12183|     20|		case ZEND_AST_COALESCE:
  ------------------
  |  Branch (12183:3): [True: 20, False: 30.1k]
  ------------------
12184|     20|			zend_compile_coalesce(result, ast);
12185|     20|			return;
12186|     21|		case ZEND_AST_ASSIGN_COALESCE:
  ------------------
  |  Branch (12186:3): [True: 21, False: 30.1k]
  ------------------
12187|     21|			zend_compile_assign_coalesce(result, ast);
12188|     21|			return;
12189|     53|		case ZEND_AST_PRINT:
  ------------------
  |  Branch (12189:3): [True: 53, False: 30.1k]
  ------------------
12190|     53|			zend_compile_print(result, ast);
12191|     53|			return;
12192|    106|		case ZEND_AST_YIELD:
  ------------------
  |  Branch (12192:3): [True: 106, False: 30.0k]
  ------------------
12193|    106|			zend_compile_yield(result, ast);
12194|    106|			return;
12195|     18|		case ZEND_AST_YIELD_FROM:
  ------------------
  |  Branch (12195:3): [True: 18, False: 30.1k]
  ------------------
12196|     18|			zend_compile_yield_from(result, ast);
12197|     18|			return;
12198|     24|		case ZEND_AST_INSTANCEOF:
  ------------------
  |  Branch (12198:3): [True: 24, False: 30.1k]
  ------------------
12199|     24|			zend_compile_instanceof(result, ast);
12200|     24|			return;
12201|    131|		case ZEND_AST_INCLUDE_OR_EVAL:
  ------------------
  |  Branch (12201:3): [True: 131, False: 30.0k]
  ------------------
12202|    131|			zend_compile_include_or_eval(result, ast);
12203|    131|			return;
12204|     63|		case ZEND_AST_ISSET:
  ------------------
  |  Branch (12204:3): [True: 63, False: 30.1k]
  ------------------
12205|     66|		case ZEND_AST_EMPTY:
  ------------------
  |  Branch (12205:3): [True: 3, False: 30.1k]
  ------------------
12206|     66|			zend_compile_isset_or_empty(result, ast);
12207|     66|			return;
12208|    180|		case ZEND_AST_SILENCE:
  ------------------
  |  Branch (12208:3): [True: 180, False: 30.0k]
  ------------------
12209|    180|			zend_compile_silence(result, ast);
12210|    180|			return;
12211|      1|		case ZEND_AST_SHELL_EXEC:
  ------------------
  |  Branch (12211:3): [True: 1, False: 30.1k]
  ------------------
12212|      1|			zend_compile_shell_exec(result, ast);
12213|      1|			return;
12214|    744|		case ZEND_AST_ARRAY:
  ------------------
  |  Branch (12214:3): [True: 744, False: 29.4k]
  ------------------
12215|    744|			zend_compile_array(result, ast);
12216|    744|			return;
12217|  1.10k|		case ZEND_AST_CONST:
  ------------------
  |  Branch (12217:3): [True: 1.10k, False: 29.0k]
  ------------------
12218|  1.10k|			zend_compile_const(result, ast);
12219|  1.10k|			return;
12220|    171|		case ZEND_AST_CLASS_CONST:
  ------------------
  |  Branch (12220:3): [True: 171, False: 30.0k]
  ------------------
12221|    171|			zend_compile_class_const(result, ast);
12222|    171|			return;
12223|    102|		case ZEND_AST_CLASS_NAME:
  ------------------
  |  Branch (12223:3): [True: 102, False: 30.0k]
  ------------------
12224|    102|			zend_compile_class_name(result, ast);
12225|    102|			return;
12226|    421|		case ZEND_AST_ENCAPS_LIST:
  ------------------
  |  Branch (12226:3): [True: 421, False: 29.7k]
  ------------------
12227|    421|			zend_compile_encaps_list(result, ast);
12228|    421|			return;
12229|    111|		case ZEND_AST_MAGIC_CONST:
  ------------------
  |  Branch (12229:3): [True: 111, False: 30.0k]
  ------------------
12230|    111|			zend_compile_magic_const(result, ast);
12231|    111|			return;
12232|    243|		case ZEND_AST_CLOSURE:
  ------------------
  |  Branch (12232:3): [True: 243, False: 29.9k]
  ------------------
12233|    275|		case ZEND_AST_ARROW_FUNC:
  ------------------
  |  Branch (12233:3): [True: 32, False: 30.1k]
  ------------------
12234|    275|			zend_compile_func_decl(result, ast, FUNC_DECL_LEVEL_NESTED);
12235|    275|			return;
12236|     66|		case ZEND_AST_THROW:
  ------------------
  |  Branch (12236:3): [True: 66, False: 30.1k]
  ------------------
12237|     66|			zend_compile_throw(result, ast);
12238|     66|			return;
12239|     32|		case ZEND_AST_MATCH:
  ------------------
  |  Branch (12239:3): [True: 32, False: 30.1k]
  ------------------
12240|     32|			zend_compile_match(result, ast);
12241|     32|			return;
12242|      0|		default:
  ------------------
  |  Branch (12242:3): [True: 0, False: 30.1k]
  ------------------
12243|       |			ZEND_ASSERT(0 /* not supported */);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12243:4): [Folded, False: 0]
  |  Branch (12243:4): [Folded, False: 0]
  ------------------
12244|  30.1k|	}
12245|  30.1k|}
zend_compile.c:zend_compile_new:
 5665|  1.67k|{
 5666|  1.67k|	zend_ast *class_ast = ast->child[0];
 5667|  1.67k|	zend_ast *args_ast = ast->child[1];
 5668|       |
 5669|  1.67k|	znode class_node, ctor_result;
 5670|  1.67k|	zend_op *opline;
 5671|       |
 5672|  1.67k|	if (class_ast->kind == ZEND_AST_CLASS) {
  ------------------
  |  Branch (5672:6): [True: 40, False: 1.63k]
  ------------------
 5673|       |		/* anon class declaration */
 5674|     40|		zend_compile_class_decl(&class_node, class_ast, false);
 5675|  1.63k|	} else {
 5676|  1.63k|		zend_compile_class_ref(&class_node, class_ast, ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|  1.63k|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 5677|  1.63k|	}
 5678|       |
 5679|  1.67k|	opline = zend_emit_op_tmp(result, ZEND_NEW, NULL, NULL);
  ------------------
  |  |  191|  1.67k|#define ZEND_NEW                             68
  ------------------
 5680|       |
 5681|  1.67k|	zend_set_class_name_op1(opline, &class_node);
 5682|       |
 5683|  1.67k|	if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|  1.67k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5683:6): [True: 1.60k, False: 68]
  ------------------
 5684|  1.60k|		opline->op2.num = zend_alloc_cache_slot();
 5685|  1.60k|	}
 5686|       |
 5687|  1.67k|	zend_class_entry *ce = NULL;
 5688|  1.67k|	if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|  1.67k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5688:6): [True: 1.60k, False: 68]
  ------------------
 5689|  1.60k|		zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op1) + 1);
  ------------------
  |  |  982|  1.60k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.60k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5690|  1.60k|		ce = zend_hash_find_ptr(CG(class_table), lcname);
  ------------------
  |  |   35|  1.60k|# define CG(v) (compiler_globals.v)
  ------------------
 5691|  1.60k|		if (ce) {
  ------------------
  |  Branch (5691:7): [True: 1.50k, False: 93]
  ------------------
 5692|  1.50k|			if (zend_compile_ignore_class(ce, CG(active_op_array)->filename)) {
  ------------------
  |  |   35|  1.50k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (5692:8): [True: 0, False: 1.50k]
  ------------------
 5693|      0|				ce = NULL;
 5694|      0|			}
 5695|  1.50k|		} else if (CG(active_class_entry)
  ------------------
  |  |   35|    186|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 16, False: 77]
  |  |  ------------------
  ------------------
 5696|     16|				&& zend_string_equals_ci(CG(active_class_entry)->name, lcname)) {
  ------------------
  |  |  401|     16|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     32|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 16, False: 0]
  |  |  |  Branch (401:35): [True: 16, False: 0]
  |  |  ------------------
  ------------------
 5697|     16|			ce = CG(active_class_entry);
  ------------------
  |  |   35|     16|# define CG(v) (compiler_globals.v)
  ------------------
 5698|     16|		}
 5699|  1.60k|	} else if (opline->op1_type == IS_UNUSED
  ------------------
  |  |  863|    136|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (5699:13): [True: 4, False: 64]
  ------------------
 5700|      4|			&& (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF
  ------------------
  |  | 1049|      4|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              			&& (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF
  ------------------
  |  | 1043|     72|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (5700:7): [True: 1, False: 3]
  ------------------
 5701|      1|			&& zend_is_scope_known()) {
  ------------------
  |  Branch (5701:7): [True: 1, False: 0]
  ------------------
 5702|      1|		ce = CG(active_class_entry);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 5703|      1|	}
 5704|       |
 5705|       |
 5706|  1.67k|	const zend_function *fbc = NULL;
 5707|  1.67k|	if (ce
  ------------------
  |  Branch (5707:6): [True: 1.52k, False: 144]
  ------------------
 5708|  1.52k|			&& ce->default_object_handlers->get_constructor == zend_std_get_constructor
  ------------------
  |  Branch (5708:7): [True: 1.52k, False: 2]
  ------------------
 5709|  1.52k|			&& ce->constructor
  ------------------
  |  Branch (5709:7): [True: 1.01k, False: 512]
  ------------------
 5710|  1.01k|			&& is_func_accessible(ce->constructor)) {
  ------------------
  |  Branch (5710:7): [True: 1.01k, False: 0]
  ------------------
 5711|  1.01k|		fbc = ce->constructor;
 5712|  1.01k|	}
 5713|       |
 5714|  1.67k|	zend_compile_call_common(&ctor_result, args_ast, fbc, ast->lineno, BP_VAR_R);
  ------------------
  |  | 1074|  1.67k|#define BP_VAR_R			0
  ------------------
 5715|  1.67k|	zend_do_free(&ctor_result);
 5716|  1.67k|}
zend_compile.c:zend_compile_compound_assign:
 3685|    318|{
 3686|    318|	zend_ast *var_ast = ast->child[0];
 3687|    318|	zend_ast *expr_ast = ast->child[1];
 3688|    318|	uint32_t opcode = ast->attr;
 3689|       |
 3690|    318|	znode var_node, expr_node;
 3691|    318|	zend_op *opline;
 3692|    318|	uint32_t offset, cache_slot;
 3693|       |
 3694|    318|	zend_ensure_writable_variable(var_ast);
 3695|       |
 3696|       |	/* Treat $GLOBALS['x'] assignment like assignment to variable. */
 3697|    318|	zend_ast_kind kind = is_global_var_fetch(var_ast) ? ZEND_AST_VAR : var_ast->kind;
  ------------------
  |  Branch (3697:23): [True: 0, False: 318]
  ------------------
 3698|    318|	switch (kind) {
 3699|    246|		case ZEND_AST_VAR:
  ------------------
  |  Branch (3699:3): [True: 246, False: 72]
  ------------------
 3700|    246|			offset = zend_delayed_compile_begin();
 3701|    246|			zend_delayed_compile_var(&var_node, var_ast, BP_VAR_RW, false);
  ------------------
  |  | 1076|    246|#define BP_VAR_RW			2
  ------------------
 3702|    246|			zend_compile_expr(&expr_node, expr_ast);
 3703|    246|			zend_delayed_compile_end(offset);
 3704|    246|			opline = zend_emit_op_tmp(result, ZEND_ASSIGN_OP, &var_node, &expr_node);
  ------------------
  |  |  150|    246|#define ZEND_ASSIGN_OP                       26
  ------------------
 3705|    246|			opline->extended_value = opcode;
 3706|    246|			return;
 3707|      1|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (3707:3): [True: 1, False: 317]
  ------------------
 3708|      1|			offset = zend_delayed_compile_begin();
 3709|      1|			zend_delayed_compile_var(result, var_ast, BP_VAR_RW, false);
  ------------------
  |  | 1076|      1|#define BP_VAR_RW			2
  ------------------
 3710|      1|			zend_compile_expr(&expr_node, expr_ast);
 3711|       |
 3712|      1|			opline = zend_delayed_compile_end(offset);
 3713|      1|			cache_slot = opline->extended_value;
 3714|      1|			opline->opcode = ZEND_ASSIGN_STATIC_PROP_OP;
  ------------------
  |  |  153|      1|#define ZEND_ASSIGN_STATIC_PROP_OP           29
  ------------------
 3715|      1|			opline->extended_value = opcode;
 3716|      1|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
 3717|      1|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
 3718|       |
 3719|      1|			opline = zend_emit_op_data(&expr_node);
 3720|      1|			opline->extended_value = cache_slot;
 3721|      1|			return;
 3722|     49|		case ZEND_AST_DIM:
  ------------------
  |  Branch (3722:3): [True: 49, False: 269]
  ------------------
 3723|     49|			offset = zend_delayed_compile_begin();
 3724|     49|			zend_delayed_compile_dim(result, var_ast, BP_VAR_RW, /* by_ref */ false);
  ------------------
  |  | 1076|     49|#define BP_VAR_RW			2
  ------------------
 3725|     49|			zend_compile_expr_with_potential_assign_to_self(&expr_node, expr_ast, var_ast);
 3726|       |
 3727|     49|			opline = zend_delayed_compile_end(offset);
 3728|     49|			opline->opcode = ZEND_ASSIGN_DIM_OP;
  ------------------
  |  |  151|     49|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
 3729|     49|			opline->extended_value = opcode;
 3730|     49|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     49|#define IS_TMP_VAR	(1<<1)
  ------------------
 3731|     49|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     49|#define IS_TMP_VAR	(1<<1)
  ------------------
 3732|       |
 3733|     49|			zend_emit_op_data(&expr_node);
 3734|     49|			return;
 3735|     19|		case ZEND_AST_PROP:
  ------------------
  |  Branch (3735:3): [True: 19, False: 299]
  ------------------
 3736|     19|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (3736:3): [True: 0, False: 318]
  ------------------
 3737|     19|			offset = zend_delayed_compile_begin();
 3738|     19|			zend_delayed_compile_prop(result, var_ast, BP_VAR_RW);
  ------------------
  |  | 1076|     19|#define BP_VAR_RW			2
  ------------------
 3739|     19|			zend_compile_expr(&expr_node, expr_ast);
 3740|       |
 3741|     19|			opline = zend_delayed_compile_end(offset);
 3742|     19|			cache_slot = opline->extended_value;
 3743|     19|			opline->opcode = ZEND_ASSIGN_OBJ_OP;
  ------------------
  |  |  152|     19|#define ZEND_ASSIGN_OBJ_OP                   28
  ------------------
 3744|     19|			opline->extended_value = opcode;
 3745|     19|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     19|#define IS_TMP_VAR	(1<<1)
  ------------------
 3746|     19|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     19|#define IS_TMP_VAR	(1<<1)
  ------------------
 3747|       |
 3748|     19|			opline = zend_emit_op_data(&expr_node);
 3749|     19|			opline->extended_value = cache_slot;
 3750|     19|			return;
 3751|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3751:3): [True: 0, False: 318]
  |  Branch (3751:12): [Folded, False: 0]
  |  Branch (3751:12): [Folded, False: 0]
  ------------------
 3752|    318|	}
 3753|    318|}
zend_compile.c:zend_compile_expr_with_potential_assign_to_self:
 3485|    310|		znode *expr_node, zend_ast *expr_ast, const zend_ast *var_ast) {
 3486|    310|	if (zend_is_assign_to_self(var_ast, expr_ast) && !is_this_fetch(expr_ast)) {
  ------------------
  |  Branch (3486:6): [True: 36, False: 274]
  |  Branch (3486:51): [True: 36, False: 0]
  ------------------
 3487|       |		/* $a[0] = $a should evaluate the right $a first */
 3488|     36|		znode cv_node;
 3489|       |
 3490|     36|		if (zend_try_compile_cv(&cv_node, expr_ast, BP_VAR_R) == FAILURE) {
  ------------------
  |  | 1074|     36|#define BP_VAR_R			0
  ------------------
  |  Branch (3490:7): [True: 0, False: 36]
  ------------------
 3491|      0|			zend_compile_simple_var_no_cv(expr_node, expr_ast, BP_VAR_R, false);
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
 3492|     36|		} else {
 3493|     36|			zend_emit_op_tmp(expr_node, ZEND_QM_ASSIGN, &cv_node, NULL);
  ------------------
  |  |  155|     36|#define ZEND_QM_ASSIGN                       31
  ------------------
 3494|     36|		}
 3495|    274|	} else {
 3496|    274|		zend_compile_expr(expr_node, expr_ast);
 3497|    274|	}
 3498|    310|}
zend_compile.c:zend_is_assign_to_self:
 3460|    310|{
 3461|    310|	if (expr_ast->kind != ZEND_AST_VAR || expr_ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (3461:6): [True: 239, False: 71]
  |  Branch (3461:40): [True: 2, False: 69]
  ------------------
 3462|    241|		return false;
 3463|    241|	}
 3464|       |
 3465|    148|	while (zend_is_variable(var_ast) && var_ast->kind != ZEND_AST_VAR) {
  ------------------
  |  Branch (3465:9): [True: 144, False: 4]
  |  Branch (3465:38): [True: 79, False: 65]
  ------------------
 3466|     79|		var_ast = var_ast->child[0];
 3467|     79|	}
 3468|       |
 3469|     69|	if (var_ast->kind != ZEND_AST_VAR || var_ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (3469:6): [True: 4, False: 65]
  |  Branch (3469:39): [True: 3, False: 62]
  ------------------
 3470|      7|		return false;
 3471|      7|	}
 3472|       |
 3473|     62|	{
 3474|     62|		zend_string *name1 = zval_get_string(zend_ast_get_zval(var_ast->child[0]));
 3475|     62|		zend_string *name2 = zval_get_string(zend_ast_get_zval(expr_ast->child[0]));
 3476|       |		bool result = zend_string_equals(name1, name2);
 3477|     62|		zend_string_release_ex(name1, 0);
 3478|     62|		zend_string_release_ex(name2, 0);
 3479|     62|		return result;
 3480|     69|	}
 3481|     69|}
zend_compile.c:zend_compile_binary_op:
10509|  2.26k|{
10510|  2.26k|	zend_ast *left_ast = ast->child[0];
10511|  2.26k|	zend_ast *right_ast = ast->child[1];
10512|  2.26k|	uint32_t opcode = ast->attr;
10513|       |
10514|  2.26k|	znode left_node, right_node;
10515|       |
10516|  2.26k|	zend_compile_expr(&left_node, left_ast);
10517|  2.26k|	zend_compile_expr(&right_node, right_ast);
10518|       |
10519|  2.26k|	if (left_node.op_type == IS_CONST && right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|  4.53k|#define IS_CONST	(1<<0)
  ------------------
              	if (left_node.op_type == IS_CONST && right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|  1.23k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10519:6): [True: 1.23k, False: 1.02k]
  |  Branch (10519:39): [True: 1.02k, False: 214]
  ------------------
10520|  1.02k|		if (zend_try_ct_eval_binary_op(&result->u.constant, opcode,
  ------------------
  |  Branch (10520:7): [True: 817, False: 208]
  ------------------
10521|  1.02k|				&left_node.u.constant, &right_node.u.constant)
10522|  1.02k|		) {
10523|    817|			result->op_type = IS_CONST;
  ------------------
  |  |  864|    817|#define IS_CONST	(1<<0)
  ------------------
10524|    817|			zval_ptr_dtor(&left_node.u.constant);
10525|    817|			zval_ptr_dtor(&right_node.u.constant);
10526|    817|			return;
10527|    817|		}
10528|  1.02k|	}
10529|       |
10530|  1.45k|	do {
10531|  1.45k|		if (opcode == ZEND_IS_IDENTICAL || opcode == ZEND_IS_NOT_IDENTICAL) {
  ------------------
  |  |  140|  2.90k|#define ZEND_IS_IDENTICAL                    16
  ------------------
              		if (opcode == ZEND_IS_IDENTICAL || opcode == ZEND_IS_NOT_IDENTICAL) {
  ------------------
  |  |  141|  1.39k|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (10531:7): [True: 57, False: 1.39k]
  |  Branch (10531:38): [True: 5, False: 1.38k]
  ------------------
10532|       |			/* convert $x === null to is_null($x) (i.e. ZEND_TYPE_CHECK opcode). Do the same thing for false/true. (covers IS_NULL, IS_FALSE, and IS_TRUE) */
10533|     52|			if (left_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     52|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10533:8): [True: 7, False: 45]
  ------------------
10534|      7|				if (Z_TYPE(left_node.u.constant) <= IS_TRUE && Z_TYPE(left_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(left_node.u.constant) <= IS_TRUE && Z_TYPE(left_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  609|     14|#define IS_TRUE						3
  ------------------
              				if (Z_TYPE(left_node.u.constant) <= IS_TRUE && Z_TYPE(left_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(left_node.u.constant) <= IS_TRUE && Z_TYPE(left_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (10534:9): [True: 0, False: 7]
  |  Branch (10534:52): [True: 0, False: 0]
  ------------------
10535|      0|					zend_op *opline = zend_emit_op_tmp(result, ZEND_TYPE_CHECK, &right_node, NULL);
  ------------------
  |  |  245|      0|#define ZEND_TYPE_CHECK                     123
  ------------------
10536|      0|					opline->extended_value =
10537|      0|						(opcode == ZEND_IS_IDENTICAL) ?
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (10537:7): [True: 0, False: 0]
  ------------------
10538|      0|							(1 << Z_TYPE(left_node.u.constant)) :
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
10539|      0|							(MAY_BE_ANY - (1 << Z_TYPE(left_node.u.constant)));
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							(MAY_BE_ANY - (1 << Z_TYPE(left_node.u.constant)));
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
10540|      0|					return;
10541|      0|				}
10542|     45|			} else if (right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     45|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10542:15): [True: 24, False: 21]
  ------------------
10543|     24|				if (Z_TYPE(right_node.u.constant) <= IS_TRUE && Z_TYPE(right_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(right_node.u.constant) <= IS_TRUE && Z_TYPE(right_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  609|     48|#define IS_TRUE						3
  ------------------
              				if (Z_TYPE(right_node.u.constant) <= IS_TRUE && Z_TYPE(right_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(right_node.u.constant) <= IS_TRUE && Z_TYPE(right_node.u.constant) >= IS_NULL) {
  ------------------
  |  |  607|      6|#define IS_NULL						1
  ------------------
  |  Branch (10543:9): [True: 6, False: 18]
  |  Branch (10543:53): [True: 6, False: 0]
  ------------------
10544|      6|					zend_op *opline = zend_emit_op_tmp(result, ZEND_TYPE_CHECK, &left_node, NULL);
  ------------------
  |  |  245|      6|#define ZEND_TYPE_CHECK                     123
  ------------------
10545|      6|					opline->extended_value =
10546|      6|						(opcode == ZEND_IS_IDENTICAL) ?
  ------------------
  |  |  140|      6|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (10546:7): [True: 2, False: 4]
  ------------------
10547|      2|							(1 << Z_TYPE(right_node.u.constant)) :
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
10548|      6|							(MAY_BE_ANY - (1 << Z_TYPE(right_node.u.constant)));
  ------------------
  |  |   34|      4|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      4|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      4|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      4|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      4|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      4|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      4|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      4|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      4|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      4|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      4|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      4|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      4|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							(MAY_BE_ANY - (1 << Z_TYPE(right_node.u.constant)));
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
10549|      6|					return;
10550|      6|				}
10551|     24|			}
10552|  1.39k|		} else if (opcode == ZEND_CONCAT) {
  ------------------
  |  |  132|  1.39k|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (10552:14): [True: 234, False: 1.16k]
  ------------------
10553|       |			/* convert constant operands to strings at compile-time */
10554|    234|			if (left_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    234|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10554:8): [True: 52, False: 182]
  ------------------
10555|     52|				if (Z_TYPE(left_node.u.constant) == IS_ARRAY) {
  ------------------
  |  |  668|     52|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(left_node.u.constant) == IS_ARRAY) {
  ------------------
  |  |  613|     52|#define IS_ARRAY					7
  ------------------
  |  Branch (10555:9): [True: 0, False: 52]
  ------------------
10556|      0|					zend_emit_op_tmp(&left_node, ZEND_CAST, &left_node, NULL)->extended_value = IS_STRING;
  ------------------
  |  |  174|      0|#define ZEND_CAST                            51
  ------------------
              					zend_emit_op_tmp(&left_node, ZEND_CAST, &left_node, NULL)->extended_value = IS_STRING;
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
10557|     52|				} else {
10558|     52|					convert_to_string(&left_node.u.constant);
  ------------------
  |  |  390|     52|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|     52|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     52|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|     52|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 2, False: 50]
  |  |  ------------------
  ------------------
10559|     52|				}
10560|     52|			}
10561|    234|			if (right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    234|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10561:8): [True: 131, False: 103]
  ------------------
10562|    131|				if (Z_TYPE(right_node.u.constant) == IS_ARRAY) {
  ------------------
  |  |  668|    131|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(right_node.u.constant) == IS_ARRAY) {
  ------------------
  |  |  613|    131|#define IS_ARRAY					7
  ------------------
  |  Branch (10562:9): [True: 2, False: 129]
  ------------------
10563|      2|					zend_emit_op_tmp(&right_node, ZEND_CAST, &right_node, NULL)->extended_value = IS_STRING;
  ------------------
  |  |  174|      2|#define ZEND_CAST                            51
  ------------------
              					zend_emit_op_tmp(&right_node, ZEND_CAST, &right_node, NULL)->extended_value = IS_STRING;
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
10564|    129|				} else {
10565|    129|					convert_to_string(&right_node.u.constant);
  ------------------
  |  |  390|    129|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|    129|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    129|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|    129|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 12, False: 117]
  |  |  ------------------
  ------------------
10566|    129|				}
10567|    131|			}
10568|    234|			if (left_node.op_type == IS_CONST && right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    468|#define IS_CONST	(1<<0)
  ------------------
              			if (left_node.op_type == IS_CONST && right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     52|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10568:8): [True: 52, False: 182]
  |  Branch (10568:41): [True: 0, False: 52]
  ------------------
10569|      0|				opcode = ZEND_FAST_CONCAT;
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
10570|      0|			}
10571|    234|		}
10572|  1.44k|		zend_emit_op_tmp(result, opcode, &left_node, &right_node);
10573|  1.44k|	} while (0);
  ------------------
  |  Branch (10573:11): [Folded, False: 1.44k]
  ------------------
10574|  1.45k|}
zend_compile.c:zend_try_ct_eval_binary_op:
10325|  1.35k|{
10326|  1.35k|	if (zend_binary_op_produces_error(opcode, op1, op2)) {
  ------------------
  |  Branch (10326:6): [True: 250, False: 1.10k]
  ------------------
10327|    250|		return false;
10328|    250|	}
10329|       |
10330|  1.10k|	const binary_op_type fn = get_binary_op(opcode);
10331|  1.10k|	fn(result, op1, op2);
10332|       |	return true;
10333|  1.35k|}
zend_compile.c:zend_compile_greater:
10580|    133|{
10581|    133|	zend_ast *left_ast = ast->child[0];
10582|    133|	zend_ast *right_ast = ast->child[1];
10583|    133|	znode left_node, right_node;
10584|       |
10585|    133|	ZEND_ASSERT(ast->kind == ZEND_AST_GREATER || ast->kind == ZEND_AST_GREATER_EQUAL);
  ------------------
  |  |  112|    133|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10585:2): [True: 133, False: 0]
  |  Branch (10585:2): [True: 0, False: 0]
  |  Branch (10585:2): [True: 118, False: 15]
  |  Branch (10585:2): [True: 15, False: 0]
  ------------------
10586|       |
10587|    133|	zend_compile_expr(&left_node, left_ast);
10588|    133|	zend_compile_expr(&right_node, right_ast);
10589|       |
10590|    133|	if (left_node.op_type == IS_CONST && right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    266|#define IS_CONST	(1<<0)
  ------------------
              	if (left_node.op_type == IS_CONST && right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     31|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10590:6): [True: 31, False: 102]
  |  Branch (10590:39): [True: 16, False: 15]
  ------------------
10591|     16|		result->op_type = IS_CONST;
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
10592|     16|		zend_ct_eval_greater(&result->u.constant, ast->kind,
10593|     16|			&left_node.u.constant, &right_node.u.constant);
10594|     16|		zval_ptr_dtor(&left_node.u.constant);
10595|     16|		zval_ptr_dtor(&right_node.u.constant);
10596|     16|		return;
10597|     16|	}
10598|       |
10599|    117|	zend_emit_op_tmp(result,
10600|    117|		ast->kind == ZEND_AST_GREATER ? ZEND_IS_SMALLER : ZEND_IS_SMALLER_OR_EQUAL,
  ------------------
  |  |  144|    102|#define ZEND_IS_SMALLER                      20
  ------------------
              		ast->kind == ZEND_AST_GREATER ? ZEND_IS_SMALLER : ZEND_IS_SMALLER_OR_EQUAL,
  ------------------
  |  |  145|    132|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (10600:3): [True: 102, False: 15]
  ------------------
10601|    117|		&right_node, &left_node);
10602|    117|}
zend_compile.c:zend_ct_eval_greater:
10375|     22|{
10376|     22|	const binary_op_type fn = kind == ZEND_AST_GREATER
  ------------------
  |  Branch (10376:28): [True: 22, False: 0]
  ------------------
10377|     22|		? is_smaller_function : is_smaller_or_equal_function;
10378|     22|	fn(result, op2, op1);
10379|     22|}
zend_compile.c:zend_compile_unary_op:
10606|    700|{
10607|    700|	zend_ast *expr_ast = ast->child[0];
10608|    700|	uint32_t opcode = ast->attr;
10609|       |
10610|    700|	znode expr_node;
10611|    700|	zend_compile_expr(&expr_node, expr_ast);
10612|       |
10613|    700|	if (expr_node.op_type == IS_CONST
  ------------------
  |  |  864|  1.40k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10613:6): [True: 136, False: 564]
  ------------------
10614|    136|			&& zend_try_ct_eval_unary_op(&result->u.constant, opcode, &expr_node.u.constant)) {
  ------------------
  |  Branch (10614:7): [True: 109, False: 27]
  ------------------
10615|    109|		result->op_type = IS_CONST;
  ------------------
  |  |  864|    109|#define IS_CONST	(1<<0)
  ------------------
10616|    109|		zval_ptr_dtor(&expr_node.u.constant);
10617|    109|		return;
10618|    109|	}
10619|       |
10620|    591|	zend_emit_op_tmp(result, opcode, &expr_node, NULL);
10621|    591|}
zend_compile.c:zend_try_ct_eval_unary_op:
10355|    163|{
10356|    163|	if (zend_unary_op_produces_error(opcode, op)) {
  ------------------
  |  Branch (10356:6): [True: 27, False: 136]
  ------------------
10357|     27|		return false;
10358|     27|	}
10359|       |
10360|    136|	const unary_op_type fn = get_unary_op(opcode);
10361|    136|	fn(result, op);
10362|       |	return true;
10363|    163|}
zend_compile.c:zend_compile_unary_pm:
10625|    282|{
10626|    282|	zend_ast *expr_ast = ast->child[0];
10627|    282|	znode expr_node, right_node;
10628|       |
10629|    282|	ZEND_ASSERT(ast->kind == ZEND_AST_UNARY_PLUS || ast->kind == ZEND_AST_UNARY_MINUS);
  ------------------
  |  |  112|    282|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10629:2): [True: 282, False: 0]
  |  Branch (10629:2): [True: 0, False: 0]
  |  Branch (10629:2): [True: 70, False: 212]
  |  Branch (10629:2): [True: 212, False: 0]
  ------------------
10630|       |
10631|    282|	zend_compile_expr(&expr_node, expr_ast);
10632|       |
10633|    282|	if (expr_node.op_type == IS_CONST
  ------------------
  |  |  864|    564|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10633:6): [True: 210, False: 72]
  ------------------
10634|    210|		&& zend_try_ct_eval_unary_pm(&result->u.constant, ast->kind, &expr_node.u.constant)) {
  ------------------
  |  Branch (10634:6): [True: 196, False: 14]
  ------------------
10635|    196|		result->op_type = IS_CONST;
  ------------------
  |  |  864|    196|#define IS_CONST	(1<<0)
  ------------------
10636|    196|		zval_ptr_dtor(&expr_node.u.constant);
10637|    196|		return;
10638|    196|	}
10639|       |
10640|     86|	right_node.op_type = IS_CONST;
  ------------------
  |  |  864|     86|#define IS_CONST	(1<<0)
  ------------------
10641|     86|	ZVAL_LONG(&right_node.u.constant, (ast->kind == ZEND_AST_UNARY_PLUS) ? 1 : -1);
  ------------------
  |  | 1076|     86|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     86|		zval *__z = (z);				\
  |  | 1078|    172|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     86|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     86|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1078:19): [True: 37, False: 49]
  |  |  ------------------
  |  | 1079|     86|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     86|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     86|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     86|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     86|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 86]
  |  |  ------------------
  ------------------
10642|     86|	zend_emit_op_tmp(result, ZEND_MUL, &expr_node, &right_node);
  ------------------
  |  |  127|     86|#define ZEND_MUL                              3
  ------------------
10643|     86|}
zend_compile.c:zend_try_ct_eval_unary_pm:
10367|    257|{
10368|    257|	zval right;
10369|    257|	ZVAL_LONG(&right, (kind == ZEND_AST_UNARY_PLUS) ? 1 : -1);
  ------------------
  |  | 1076|    257|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    257|		zval *__z = (z);				\
  |  | 1078|    514|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    257|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    257|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1078:19): [True: 53, False: 204]
  |  |  ------------------
  |  | 1079|    257|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    257|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    257|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    257|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    257|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 257]
  |  |  ------------------
  ------------------
10370|    257|	return zend_try_ct_eval_binary_op(result, ZEND_MUL, op, &right);
  ------------------
  |  |  127|    257|#define ZEND_MUL                              3
  ------------------
10371|    257|}
zend_compile.c:zend_compile_short_circuiting:
10647|     86|{
10648|     86|	zend_ast *left_ast = ast->child[0];
10649|     86|	zend_ast *right_ast = ast->child[1];
10650|       |
10651|     86|	znode left_node, right_node;
10652|     86|	zend_op *opline_jmpz, *opline_bool;
10653|     86|	uint32_t opnum_jmpz;
10654|       |
10655|     86|	ZEND_ASSERT(ast->kind == ZEND_AST_AND || ast->kind == ZEND_AST_OR);
  ------------------
  |  |  112|     86|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10655:2): [True: 86, False: 0]
  |  Branch (10655:2): [True: 0, False: 0]
  |  Branch (10655:2): [True: 71, False: 15]
  |  Branch (10655:2): [True: 15, False: 0]
  ------------------
10656|       |
10657|     86|	zend_compile_expr(&left_node, left_ast);
10658|       |
10659|     86|	if (left_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     86|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10659:6): [True: 43, False: 43]
  ------------------
10660|     43|		if ((ast->kind == ZEND_AST_AND && !zend_is_true(&left_node.u.constant))
  ------------------
  |  Branch (10660:8): [True: 35, False: 8]
  |  Branch (10660:37): [True: 20, False: 15]
  ------------------
10661|     26|		 || (ast->kind == ZEND_AST_OR && zend_is_true(&left_node.u.constant))) {
  ------------------
  |  Branch (10661:8): [True: 8, False: 15]
  |  Branch (10661:36): [True: 6, False: 2]
  ------------------
10662|     26|			result->op_type = IS_CONST;
  ------------------
  |  |  864|     26|#define IS_CONST	(1<<0)
  ------------------
10663|     26|			ZVAL_BOOL(&result->u.constant, zend_is_true(&left_node.u.constant));
  ------------------
  |  | 1071|     26|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     26|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     26|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      6|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     46|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 6, False: 20]
  |  |  ------------------
  |  | 1074|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
10664|     26|		} else {
10665|     17|			zend_compile_expr(&right_node, right_ast);
10666|       |
10667|     17|			if (right_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10667:8): [True: 12, False: 5]
  ------------------
10668|     12|				result->op_type = IS_CONST;
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
10669|     12|				ZVAL_BOOL(&result->u.constant, zend_is_true(&right_node.u.constant));
  ------------------
  |  | 1071|     12|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     12|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     12|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      7|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     17|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 7, False: 5]
  |  |  ------------------
  |  | 1074|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
10670|       |
10671|     12|				zval_ptr_dtor(&right_node.u.constant);
10672|     12|			} else {
10673|      5|				zend_emit_op_tmp(result, ZEND_BOOL, &right_node, NULL);
  ------------------
  |  |  175|      5|#define ZEND_BOOL                            52
  ------------------
10674|      5|			}
10675|     17|		}
10676|       |
10677|     43|		zval_ptr_dtor(&left_node.u.constant);
10678|     43|		return;
10679|     43|	}
10680|       |
10681|     43|	opnum_jmpz = get_next_op_number();
10682|     43|	opline_jmpz = zend_emit_op(NULL, ast->kind == ZEND_AST_AND ? ZEND_JMPZ_EX : ZEND_JMPNZ_EX,
  ------------------
  |  |  169|     36|#define ZEND_JMPZ_EX                         46
  ------------------
              	opline_jmpz = zend_emit_op(NULL, ast->kind == ZEND_AST_AND ? ZEND_JMPZ_EX : ZEND_JMPNZ_EX,
  ------------------
  |  |  170|     50|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (10682:35): [True: 36, False: 7]
  ------------------
10683|     43|		&left_node, NULL);
10684|       |
10685|     43|	if (left_node.op_type == IS_TMP_VAR) {
  ------------------
  |  |  865|     43|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (10685:6): [True: 37, False: 6]
  ------------------
10686|     37|		SET_NODE(opline_jmpz->result, &left_node);
  ------------------
  |  |   42|     37|#define SET_NODE(target, src) do { \
  |  |   43|     37|		target ## _type = (src)->op_type; \
  |  |   44|     37|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     37|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 37]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     37|		} else { \
  |  |   47|     37|			target = (src)->u.op; \
  |  |   48|     37|		} \
  |  |   49|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
10687|     37|		GET_NODE(result, opline_jmpz->result);
  ------------------
  |  |   51|     37|#define GET_NODE(target, src) do { \
  |  |   52|     37|		(target)->op_type = src ## _type; \
  |  |   53|     37|		if ((target)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     37|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (53:7): [True: 0, False: 37]
  |  |  ------------------
  |  |   54|      0|			ZVAL_COPY_VALUE(&(target)->u.constant, CT_CONSTANT(src)); \
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     37|		} else { \
  |  |   56|     37|			(target)->u.op = src; \
  |  |   57|     37|		} \
  |  |   58|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (58:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
10688|     37|	} else {
10689|      6|		zend_make_tmp_result(result, opline_jmpz);
10690|      6|	}
10691|       |
10692|     43|	zend_compile_expr(&right_node, right_ast);
10693|       |
10694|     43|	opline_bool = zend_emit_op(NULL, ZEND_BOOL, &right_node, NULL);
  ------------------
  |  |  175|     43|#define ZEND_BOOL                            52
  ------------------
10695|     43|	SET_NODE(opline_bool->result, result);
  ------------------
  |  |   42|     43|#define SET_NODE(target, src) do { \
  |  |   43|     43|		target ## _type = (src)->op_type; \
  |  |   44|     43|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     43|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 43]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     43|		} else { \
  |  |   47|     43|			target = (src)->u.op; \
  |  |   48|     43|		} \
  |  |   49|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
10696|       |
10697|     43|	zend_update_jump_target_to_next(opnum_jmpz);
10698|     43|}
zend_compile.c:zend_compile_post_incdec:
10702|    220|{
10703|    220|	zend_ast *var_ast = ast->child[0];
10704|    220|	ZEND_ASSERT(ast->kind == ZEND_AST_POST_INC || ast->kind == ZEND_AST_POST_DEC);
  ------------------
  |  |  112|    220|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10704:2): [True: 220, False: 0]
  |  Branch (10704:2): [True: 0, False: 0]
  |  Branch (10704:2): [True: 194, False: 26]
  |  Branch (10704:2): [True: 26, False: 0]
  ------------------
10705|       |
10706|    220|	zend_ensure_writable_variable(var_ast);
10707|       |
10708|    220|	if (var_ast->kind == ZEND_AST_PROP || var_ast->kind == ZEND_AST_NULLSAFE_PROP) {
  ------------------
  |  Branch (10708:6): [True: 9, False: 211]
  |  Branch (10708:40): [True: 0, False: 211]
  ------------------
10709|      9|		zend_op *opline = zend_compile_prop(NULL, var_ast, BP_VAR_RW, false);
  ------------------
  |  | 1076|      9|#define BP_VAR_RW			2
  ------------------
10710|      9|		opline->opcode = ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC_OBJ : ZEND_POST_DEC_OBJ;
  ------------------
  |  |  256|      7|#define ZEND_POST_INC_OBJ                   134
  ------------------
              		opline->opcode = ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC_OBJ : ZEND_POST_DEC_OBJ;
  ------------------
  |  |  257|     11|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (10710:20): [True: 7, False: 2]
  ------------------
10711|      9|		zend_make_tmp_result(result, opline);
10712|    211|	} else if (var_ast->kind == ZEND_AST_STATIC_PROP) {
  ------------------
  |  Branch (10712:13): [True: 15, False: 196]
  ------------------
10713|     15|		zend_op *opline = zend_compile_static_prop(NULL, var_ast, BP_VAR_RW, false, false);
  ------------------
  |  | 1076|     15|#define BP_VAR_RW			2
  ------------------
10714|     15|		opline->opcode = ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC_STATIC_PROP : ZEND_POST_DEC_STATIC_PROP;
  ------------------
  |  |  164|      2|#define ZEND_POST_INC_STATIC_PROP            40
  ------------------
              		opline->opcode = ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC_STATIC_PROP : ZEND_POST_DEC_STATIC_PROP;
  ------------------
  |  |  165|     28|#define ZEND_POST_DEC_STATIC_PROP            41
  ------------------
  |  Branch (10714:20): [True: 2, False: 13]
  ------------------
10715|     15|		zend_make_tmp_result(result, opline);
10716|    196|	} else {
10717|    196|		znode var_node;
10718|    196|		zend_op *opline = zend_compile_var(&var_node, var_ast, BP_VAR_RW, false);
  ------------------
  |  | 1076|    196|#define BP_VAR_RW			2
  ------------------
10719|    196|		if (opline && opline->opcode == ZEND_FETCH_DIM_RW) {
  ------------------
  |  |  209|     46|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (10719:7): [True: 46, False: 150]
  |  Branch (10719:17): [True: 4, False: 42]
  ------------------
10720|      4|			opline->extended_value = ZEND_FETCH_DIM_INCDEC;
  ------------------
  |  | 1106|      4|#define ZEND_FETCH_DIM_INCDEC 4
  ------------------
10721|      4|		}
10722|    196|		zend_emit_op_tmp(result, ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC : ZEND_POST_DEC,
  ------------------
  |  |  160|    185|#define ZEND_POST_INC                        36
  ------------------
              		zend_emit_op_tmp(result, ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC : ZEND_POST_DEC,
  ------------------
  |  |  161|    207|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (10722:28): [True: 185, False: 11]
  ------------------
10723|       |			&var_node, NULL);
10724|    196|	}
10725|    220|}
zend_compile.c:zend_compile_pre_incdec:
10729|     31|{
10730|     31|	zend_ast *var_ast = ast->child[0];
10731|     31|	ZEND_ASSERT(ast->kind == ZEND_AST_PRE_INC || ast->kind == ZEND_AST_PRE_DEC);
  ------------------
  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10731:2): [True: 31, False: 0]
  |  Branch (10731:2): [True: 0, False: 0]
  |  Branch (10731:2): [True: 23, False: 8]
  |  Branch (10731:2): [True: 8, False: 0]
  ------------------
10732|       |
10733|     31|	zend_ensure_writable_variable(var_ast);
10734|       |
10735|     31|	if (var_ast->kind == ZEND_AST_PROP || var_ast->kind == ZEND_AST_NULLSAFE_PROP) {
  ------------------
  |  Branch (10735:6): [True: 6, False: 25]
  |  Branch (10735:40): [True: 0, False: 25]
  ------------------
10736|      3|		zend_op *opline = zend_compile_prop(result, var_ast, BP_VAR_RW, false);
  ------------------
  |  | 1076|      3|#define BP_VAR_RW			2
  ------------------
10737|      3|		opline->opcode = ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC_OBJ : ZEND_PRE_DEC_OBJ;
  ------------------
  |  |  254|      2|#define ZEND_PRE_INC_OBJ                    132
  ------------------
              		opline->opcode = ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC_OBJ : ZEND_PRE_DEC_OBJ;
  ------------------
  |  |  255|      4|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (10737:20): [True: 2, False: 1]
  ------------------
10738|      3|		opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
10739|      3|		result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
10740|     28|	} else if (var_ast->kind == ZEND_AST_STATIC_PROP) {
  ------------------
  |  Branch (10740:13): [True: 1, False: 27]
  ------------------
10741|      1|		zend_op *opline = zend_compile_static_prop(result, var_ast, BP_VAR_RW, false, false);
  ------------------
  |  | 1076|      1|#define BP_VAR_RW			2
  ------------------
10742|      1|		opline->opcode = ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC_STATIC_PROP : ZEND_PRE_DEC_STATIC_PROP;
  ------------------
  |  |  162|      0|#define ZEND_PRE_INC_STATIC_PROP             38
  ------------------
              		opline->opcode = ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC_STATIC_PROP : ZEND_PRE_DEC_STATIC_PROP;
  ------------------
  |  |  163|      2|#define ZEND_PRE_DEC_STATIC_PROP             39
  ------------------
  |  Branch (10742:20): [True: 0, False: 1]
  ------------------
10743|      1|		opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
10744|      1|		result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
10745|     27|	} else {
10746|     27|		znode var_node;
10747|     27|		zend_op *opline = zend_compile_var(&var_node, var_ast, BP_VAR_RW, false);
  ------------------
  |  | 1076|     27|#define BP_VAR_RW			2
  ------------------
10748|     27|		if (opline && opline->opcode == ZEND_FETCH_DIM_RW) {
  ------------------
  |  |  209|      4|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (10748:7): [True: 4, False: 23]
  |  Branch (10748:17): [True: 2, False: 2]
  ------------------
10749|      2|			opline->extended_value = ZEND_FETCH_DIM_INCDEC;
  ------------------
  |  | 1106|      2|#define ZEND_FETCH_DIM_INCDEC 4
  ------------------
10750|      2|		}
10751|     27|		zend_emit_op_tmp(result, ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC : ZEND_PRE_DEC,
  ------------------
  |  |  158|     20|#define ZEND_PRE_INC                         34
  ------------------
              		zend_emit_op_tmp(result, ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC : ZEND_PRE_DEC,
  ------------------
  |  |  159|     34|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (10751:28): [True: 20, False: 7]
  ------------------
10752|       |			&var_node, NULL);
10753|     27|	}
10754|     31|}
zend_compile.c:zend_compile_cast:
10758|     96|{
10759|     96|	zend_ast *expr_ast = ast->child[0];
10760|     96|	znode expr_node;
10761|     96|	zend_op *opline;
10762|       |
10763|     96|	zend_compile_expr(&expr_node, expr_ast);
10764|       |
10765|     96|	if (ast->attr == _IS_BOOL) {
  ------------------
  |  |  635|     96|#define _IS_BOOL					18
  ------------------
  |  Branch (10765:6): [True: 1, False: 95]
  ------------------
10766|      1|		opline = zend_emit_op_tmp(result, ZEND_BOOL, &expr_node, NULL);
  ------------------
  |  |  175|      1|#define ZEND_BOOL                            52
  ------------------
10767|     95|	} else if (ast->attr == IS_NULL) {
  ------------------
  |  |  607|     95|#define IS_NULL						1
  ------------------
  |  Branch (10767:13): [True: 1, False: 94]
  ------------------
10768|      1|		zend_error(E_COMPILE_ERROR, "The (unset) cast is no longer supported");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10769|     94|	} else {
10770|     94|		opline = zend_emit_op_tmp(result, ZEND_CAST, &expr_node, NULL);
  ------------------
  |  |  174|     94|#define ZEND_CAST                            51
  ------------------
10771|     94|		opline->extended_value = ast->attr;
10772|     94|	}
10773|     96|}
zend_compile.c:zend_compile_conditional:
10802|     41|{
10803|     41|	zend_ast *cond_ast = ast->child[0];
10804|     41|	zend_ast *true_ast = ast->child[1];
10805|     41|	zend_ast *false_ast = ast->child[2];
10806|       |
10807|     41|	znode cond_node, true_node, false_node;
10808|     41|	zend_op *opline_qm_assign2;
10809|     41|	uint32_t opnum_jmpz, opnum_jmp;
10810|       |
10811|     41|	if (cond_ast->kind == ZEND_AST_CONDITIONAL
  ------------------
  |  Branch (10811:6): [True: 9, False: 32]
  ------------------
10812|      9|			&& cond_ast->attr != ZEND_PARENTHESIZED_CONDITIONAL) {
  ------------------
  |  | 1214|      9|#define ZEND_PARENTHESIZED_CONDITIONAL 1
  ------------------
  |  Branch (10812:7): [True: 8, False: 1]
  ------------------
10813|      8|		if (cond_ast->child[1]) {
  ------------------
  |  Branch (10813:7): [True: 2, False: 6]
  ------------------
10814|      2|			if (true_ast) {
  ------------------
  |  Branch (10814:8): [True: 1, False: 1]
  ------------------
10815|      1|				zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10816|      1|					"Unparenthesized `a ? b : c ? d : e` is not supported. "
10817|      1|					"Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`");
10818|      1|			} else {
10819|      1|				zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10820|      1|					"Unparenthesized `a ? b : c ?: d` is not supported. "
10821|      1|					"Use either `(a ? b : c) ?: d` or `a ? b : (c ?: d)`");
10822|      1|			}
10823|      6|		} else {
10824|      6|			if (true_ast) {
  ------------------
  |  Branch (10824:8): [True: 1, False: 5]
  ------------------
10825|      1|				zend_error(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10826|      1|					"Unparenthesized `a ?: b ? c : d` is not supported. "
10827|      1|					"Use either `(a ?: b) ? c : d` or `a ?: (b ? c : d)`");
10828|      5|			} else {
10829|       |				/* This case is harmless:  (a ?: b) ?: c always produces the same result
10830|       |				 * as a ?: (b ?: c). */
10831|      5|			}
10832|      6|		}
10833|      8|	}
10834|       |
10835|     41|	if (!true_ast) {
  ------------------
  |  Branch (10835:6): [True: 18, False: 23]
  ------------------
10836|     18|		zend_compile_shorthand_conditional(result, ast);
10837|     18|		return;
10838|     18|	}
10839|       |
10840|     23|	zend_compile_expr(&cond_node, cond_ast);
10841|       |
10842|     23|	opnum_jmpz = zend_emit_cond_jump(ZEND_JMPZ, &cond_node, 0);
  ------------------
  |  |  167|     23|#define ZEND_JMPZ                            43
  ------------------
10843|       |
10844|     23|	zend_compile_expr(&true_node, true_ast);
10845|       |
10846|     23|	zend_emit_op_tmp(result, ZEND_QM_ASSIGN, &true_node, NULL);
  ------------------
  |  |  155|     23|#define ZEND_QM_ASSIGN                       31
  ------------------
10847|       |
10848|     23|	opnum_jmp = zend_emit_jump(0);
10849|       |
10850|     23|	zend_update_jump_target_to_next(opnum_jmpz);
10851|       |
10852|     23|	zend_compile_expr(&false_node, false_ast);
10853|       |
10854|     23|	opline_qm_assign2 = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &false_node, NULL);
  ------------------
  |  |  155|     23|#define ZEND_QM_ASSIGN                       31
  ------------------
10855|     23|	SET_NODE(opline_qm_assign2->result, result);
  ------------------
  |  |   42|     23|#define SET_NODE(target, src) do { \
  |  |   43|     23|		target ## _type = (src)->op_type; \
  |  |   44|     23|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     23|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 23]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     23|		} else { \
  |  |   47|     23|			target = (src)->u.op; \
  |  |   48|     23|		} \
  |  |   49|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
10856|       |
10857|     23|	zend_update_jump_target_to_next(opnum_jmp);
10858|     23|}
zend_compile.c:zend_compile_shorthand_conditional:
10777|     18|{
10778|     18|	zend_ast *cond_ast = ast->child[0];
10779|     18|	zend_ast *false_ast = ast->child[2];
10780|       |
10781|     18|	znode cond_node, false_node;
10782|     18|	zend_op *opline_qm_assign;
10783|     18|	uint32_t opnum_jmp_set;
10784|       |
10785|     18|	ZEND_ASSERT(ast->child[1] == NULL);
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10785:2): [True: 0, False: 18]
  |  Branch (10785:2): [True: 18, False: 0]
  ------------------
10786|       |
10787|     18|	zend_compile_expr(&cond_node, cond_ast);
10788|       |
10789|     18|	opnum_jmp_set = get_next_op_number();
10790|     18|	zend_emit_op_tmp(result, ZEND_JMP_SET, &cond_node, NULL);
  ------------------
  |  |  274|     18|#define ZEND_JMP_SET                        152
  ------------------
10791|       |
10792|     18|	zend_compile_expr(&false_node, false_ast);
10793|       |
10794|     18|	opline_qm_assign = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &false_node, NULL);
  ------------------
  |  |  155|     18|#define ZEND_QM_ASSIGN                       31
  ------------------
10795|     18|	SET_NODE(opline_qm_assign->result, result);
  ------------------
  |  |   42|     18|#define SET_NODE(target, src) do { \
  |  |   43|     18|		target ## _type = (src)->op_type; \
  |  |   44|     18|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     18|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 18]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     18|		} else { \
  |  |   47|     18|			target = (src)->u.op; \
  |  |   48|     18|		} \
  |  |   49|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
10796|       |
10797|     18|	zend_update_jump_target_to_next(opnum_jmp_set);
10798|     18|}
zend_compile.c:zend_compile_coalesce:
10862|     20|{
10863|     20|	zend_ast *expr_ast = ast->child[0];
10864|     20|	zend_ast *default_ast = ast->child[1];
10865|       |
10866|     20|	znode expr_node, default_node;
10867|     20|	zend_op *opline;
10868|     20|	uint32_t opnum;
10869|       |
10870|     20|	zend_compile_var(&expr_node, expr_ast, BP_VAR_IS, false);
  ------------------
  |  | 1077|     20|#define BP_VAR_IS			3
  ------------------
10871|       |
10872|     20|	opnum = get_next_op_number();
10873|     20|	zend_emit_op_tmp(result, ZEND_COALESCE, &expr_node, NULL);
  ------------------
  |  |  291|     20|#define ZEND_COALESCE                       169
  ------------------
10874|       |
10875|     20|	zend_compile_expr(&default_node, default_ast);
10876|       |
10877|     20|	opline = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &default_node, NULL);
  ------------------
  |  |  155|     20|#define ZEND_QM_ASSIGN                       31
  ------------------
10878|     20|	SET_NODE(opline->result, result);
  ------------------
  |  |   42|     20|#define SET_NODE(target, src) do { \
  |  |   43|     20|		target ## _type = (src)->op_type; \
  |  |   44|     20|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     20|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 20]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     20|		} else { \
  |  |   47|     20|			target = (src)->u.op; \
  |  |   48|     20|		} \
  |  |   49|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
10879|       |
10880|     20|	opline = &CG(active_op_array)->opcodes[opnum];
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
10881|     20|	opline->op2.opline_num = get_next_op_number();
10882|     20|}
zend_compile.c:zend_compile_assign_coalesce:
10894|     21|{
10895|     21|	zend_ast *var_ast = ast->child[0];
10896|     21|	zend_ast *default_ast = ast->child[1];
10897|       |
10898|     21|	znode var_node_is, var_node_w, default_node, assign_node, *node;
10899|     21|	zend_op *opline;
10900|     21|	uint32_t coalesce_opnum;
10901|     21|	bool need_frees = false;
10902|       |
10903|       |	/* Remember expressions compiled during the initial BP_VAR_IS lookup,
10904|       |	 * to avoid double-evaluation when we compile again with BP_VAR_W. */
10905|     21|	HashTable *orig_memoized_exprs = CG(memoized_exprs);
  ------------------
  |  |   35|     21|# define CG(v) (compiler_globals.v)
  ------------------
10906|     21|	const zend_memoize_mode orig_memoize_mode = CG(memoize_mode);
  ------------------
  |  |   35|     21|# define CG(v) (compiler_globals.v)
  ------------------
10907|       |
10908|     21|	zend_ensure_writable_variable(var_ast);
10909|     21|	if (is_this_fetch(var_ast)) {
  ------------------
  |  Branch (10909:6): [True: 1, False: 20]
  ------------------
10910|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign $this");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
10911|      1|	}
10912|       |
10913|     20|	ALLOC_HASHTABLE(CG(memoized_exprs));
  ------------------
  |  |  232|     21|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     21|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10914|     20|	zend_hash_init(CG(memoized_exprs), 0, NULL, znode_dtor, 0);
  ------------------
  |  |  111|     20|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
10915|       |
10916|     20|	CG(memoize_mode) = ZEND_MEMOIZE_COMPILE;
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
10917|     20|	zend_compile_var(&var_node_is, var_ast, BP_VAR_IS, false);
  ------------------
  |  | 1077|     20|#define BP_VAR_IS			3
  ------------------
10918|       |
10919|     20|	coalesce_opnum = get_next_op_number();
10920|     20|	zend_emit_op_tmp(result, ZEND_COALESCE, &var_node_is, NULL);
  ------------------
  |  |  291|     20|#define ZEND_COALESCE                       169
  ------------------
10921|       |
10922|     20|	CG(memoize_mode) = ZEND_MEMOIZE_NONE;
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
10923|     20|	if (var_ast->kind == ZEND_AST_DIM) {
  ------------------
  |  Branch (10923:6): [True: 18, False: 2]
  ------------------
10924|     18|		zend_compile_expr_with_potential_assign_to_self(&default_node, default_ast, var_ast);
10925|     18|	} else {
10926|      2|		zend_compile_expr(&default_node, default_ast);
10927|      2|	}
10928|       |
10929|     20|	CG(memoize_mode) = ZEND_MEMOIZE_FETCH;
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
10930|     20|	zend_compile_var(&var_node_w, var_ast, BP_VAR_W, false);
  ------------------
  |  | 1075|     20|#define BP_VAR_W			1
  ------------------
10931|       |
10932|       |	/* Reproduce some of the zend_compile_assign() opcode fixup logic here. */
10933|     20|	opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
              	opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
  ------------------
  |  |   35|     20|# define CG(v) (compiler_globals.v)
  ------------------
10934|       |	/* Treat $GLOBALS['x'] assignment like assignment to variable. */
10935|     20|	zend_ast_kind kind = is_global_var_fetch(var_ast) ? ZEND_AST_VAR : var_ast->kind;
  ------------------
  |  Branch (10935:23): [True: 3, False: 17]
  ------------------
10936|     20|	switch (kind) {
10937|      4|		case ZEND_AST_VAR:
  ------------------
  |  Branch (10937:3): [True: 4, False: 16]
  ------------------
10938|      4|			zend_emit_op_tmp(&assign_node, ZEND_ASSIGN, &var_node_w, &default_node);
  ------------------
  |  |  146|      4|#define ZEND_ASSIGN                          22
  ------------------
10939|      4|			break;
10940|      0|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (10940:3): [True: 0, False: 20]
  ------------------
10941|      0|			opline->opcode = ZEND_ASSIGN_STATIC_PROP;
  ------------------
  |  |  149|      0|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
10942|      0|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
10943|      0|			var_node_w.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
10944|      0|			zend_emit_op_data(&default_node);
10945|      0|			assign_node = var_node_w;
10946|      0|			break;
10947|     13|		case ZEND_AST_DIM:
  ------------------
  |  Branch (10947:3): [True: 13, False: 7]
  ------------------
10948|     13|			opline->opcode = ZEND_ASSIGN_DIM;
  ------------------
  |  |  147|     13|#define ZEND_ASSIGN_DIM                      23
  ------------------
10949|     13|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     13|#define IS_TMP_VAR	(1<<1)
  ------------------
10950|     13|			var_node_w.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     13|#define IS_TMP_VAR	(1<<1)
  ------------------
10951|     13|			zend_emit_op_data(&default_node);
10952|     13|			assign_node = var_node_w;
10953|     13|			break;
10954|      1|		case ZEND_AST_PROP:
  ------------------
  |  Branch (10954:3): [True: 1, False: 19]
  ------------------
10955|      1|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (10955:3): [True: 0, False: 20]
  ------------------
10956|      1|			opline->opcode = ZEND_ASSIGN_OBJ;
  ------------------
  |  |  148|      1|#define ZEND_ASSIGN_OBJ                      24
  ------------------
10957|      1|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
10958|      1|			var_node_w.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
10959|      1|			zend_emit_op_data(&default_node);
10960|      1|			assign_node = var_node_w;
10961|      1|			break;
10962|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10962:3): [True: 0, False: 20]
  |  Branch (10962:12): [Folded, False: 0]
  |  Branch (10962:12): [Folded, False: 0]
  ------------------
10963|     20|	}
10964|       |
10965|     18|	opline = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &assign_node, NULL);
  ------------------
  |  |  155|     18|#define ZEND_QM_ASSIGN                       31
  ------------------
10966|     18|	SET_NODE(opline->result, result);
  ------------------
  |  |   42|     18|#define SET_NODE(target, src) do { \
  |  |   43|     18|		target ## _type = (src)->op_type; \
  |  |   44|     18|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     18|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 18]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     18|		} else { \
  |  |   47|     18|			target = (src)->u.op; \
  |  |   48|     18|		} \
  |  |   49|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
10967|       |
10968|     52|	ZEND_HASH_FOREACH_PTR(CG(memoized_exprs), node) {
  ------------------
  |  | 1133|     18|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|     18|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|     18|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|     18|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|     18|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|     18|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|     18|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     18|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     18|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|     18|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     24|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      6|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 17, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1034|     17|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|     18|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     18|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     18|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10969|     52|		if (node->op_type == IS_TMP_VAR || node->op_type == IS_VAR) {
  ------------------
  |  |  865|     34|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (node->op_type == IS_TMP_VAR || node->op_type == IS_VAR) {
  ------------------
  |  |  866|     12|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10969:7): [True: 5, False: 12]
  |  Branch (10969:38): [True: 6, False: 6]
  ------------------
10970|     11|			need_frees = true;
10971|     11|			break;
10972|     11|		}
10973|     52|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     17|		} \
  |  | 1102|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
10974|       |
10975|       |	/* Free DUPed expressions if there are any */
10976|     18|	if (need_frees) {
  ------------------
  |  Branch (10976:6): [True: 11, False: 7]
  ------------------
10977|     11|		uint32_t jump_opnum = zend_emit_jump(0);
10978|     11|		zend_update_jump_target_to_next(coalesce_opnum);
10979|     45|		ZEND_HASH_FOREACH_PTR(CG(memoized_exprs), node) {
  ------------------
  |  | 1133|     17|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|     11|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|     11|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|     11|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|     11|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|     11|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|     11|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     11|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     11|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|     11|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     28|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|     17|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 17, False: 11]
  |  |  |  |  ------------------
  |  |  |  | 1034|     17|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|     17|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     11|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     11|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10980|     45|			if (node->op_type == IS_TMP_VAR || node->op_type == IS_VAR) {
  ------------------
  |  |  865|     34|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (node->op_type == IS_TMP_VAR || node->op_type == IS_VAR) {
  ------------------
  |  |  866|      8|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10980:8): [True: 9, False: 8]
  |  Branch (10980:39): [True: 6, False: 2]
  ------------------
10981|     15|				zend_emit_op(NULL, ZEND_FREE, node, NULL);
  ------------------
  |  |  193|     15|#define ZEND_FREE                            70
  ------------------
10982|     15|			}
10983|     45|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     17|		} \
  |  | 1102|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
10984|     11|		zend_update_jump_target_to_next(jump_opnum);
10985|     11|	} else {
10986|      7|		zend_update_jump_target_to_next(coalesce_opnum);
10987|      7|	}
10988|       |
10989|     18|	zend_hash_destroy(CG(memoized_exprs));
  ------------------
  |  |   35|     18|# define CG(v) (compiler_globals.v)
  ------------------
10990|     18|	FREE_HASHTABLE(CG(memoized_exprs));
  ------------------
  |  |  235|     18|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     18|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     18|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     18|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     18|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     18|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     18|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10991|     18|	CG(memoized_exprs) = orig_memoized_exprs;
  ------------------
  |  |   35|     18|# define CG(v) (compiler_globals.v)
  ------------------
10992|     18|	CG(memoize_mode) = orig_memoize_mode;
  ------------------
  |  |   35|     18|# define CG(v) (compiler_globals.v)
  ------------------
10993|     18|}
zend_compile.c:znode_dtor:
10885|     23|static void znode_dtor(zval *zv) {
10886|     23|	znode *node = Z_PTR_P(zv);
  ------------------
  |  | 1053|     23|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     23|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
10887|     23|	if (node->op_type == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10887:6): [True: 8, False: 15]
  ------------------
10888|      8|		zval_ptr_dtor_nogc(&node->u.constant);
10889|      8|	}
10890|       |	efree(node);
  ------------------
  |  |  154|     23|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     23|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     23|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     23|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     23|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10891|     23|}
zend_compile.c:zend_compile_print:
10997|     53|{
10998|     53|	zend_op *opline;
10999|     53|	zend_ast *expr_ast = ast->child[0];
11000|       |
11001|     53|	znode expr_node;
11002|     53|	zend_compile_expr(&expr_node, expr_ast);
11003|       |
11004|     53|	opline = zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL);
  ------------------
  |  |  258|     53|#define ZEND_ECHO                           136
  ------------------
11005|     53|	opline->extended_value = 1;
11006|       |
11007|     53|	result->op_type = IS_CONST;
  ------------------
  |  |  864|     53|#define IS_CONST	(1<<0)
  ------------------
11008|     53|	ZVAL_LONG(&result->u.constant, 1);
  ------------------
  |  | 1076|     53|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     53|		zval *__z = (z);				\
  |  | 1078|     53|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     53|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     53|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     53|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     53|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     53|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     53|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     53|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 53]
  |  |  ------------------
  ------------------
11009|     53|}
zend_compile.c:zend_compile_yield:
11013|    106|{
11014|    106|	zend_ast *value_ast = ast->child[0];
11015|    106|	zend_ast *key_ast = ast->child[1];
11016|       |
11017|    106|	znode value_node, key_node;
11018|    106|	znode *value_node_ptr = NULL, *key_node_ptr = NULL;
11019|    106|	zend_op *opline;
11020|    106|	bool returns_by_ref = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0;
  ------------------
  |  |   35|    106|# define CG(v) (compiler_globals.v)
  ------------------
              	bool returns_by_ref = (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0;
  ------------------
  |  |  352|    106|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
11021|       |
11022|    106|	zend_mark_function_as_generator();
11023|       |
11024|    106|	if (key_ast) {
  ------------------
  |  Branch (11024:6): [True: 9, False: 97]
  ------------------
11025|      9|		zend_compile_expr(&key_node, key_ast);
11026|      9|		key_node_ptr = &key_node;
11027|      9|	}
11028|       |
11029|    106|	if (value_ast) {
  ------------------
  |  Branch (11029:6): [True: 64, False: 42]
  ------------------
11030|     64|		if (returns_by_ref && zend_is_variable_or_call(value_ast)) {
  ------------------
  |  Branch (11030:7): [True: 14, False: 50]
  |  Branch (11030:25): [True: 6, False: 8]
  ------------------
11031|      6|			zend_assert_not_short_circuited(value_ast);
11032|      6|			zend_compile_var(&value_node, value_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|      6|#define BP_VAR_W			1
  ------------------
11033|     58|		} else {
11034|     58|			zend_compile_expr(&value_node, value_ast);
11035|     58|		}
11036|     64|		value_node_ptr = &value_node;
11037|     64|	}
11038|       |
11039|    106|	opline = zend_emit_op_tmp(result, ZEND_YIELD, value_node_ptr, key_node_ptr);
  ------------------
  |  |  282|    106|#define ZEND_YIELD                          160
  ------------------
11040|       |
11041|    106|	if (value_ast && returns_by_ref && zend_is_call(value_ast)) {
  ------------------
  |  Branch (11041:6): [True: 63, False: 43]
  |  Branch (11041:19): [True: 13, False: 50]
  |  Branch (11041:37): [True: 1, False: 12]
  ------------------
11042|      1|		opline->extended_value = ZEND_RETURNS_FUNCTION;
  ------------------
  |  | 1206|      1|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
11043|      1|	}
11044|    106|}
zend_compile.c:zend_compile_yield_from:
11048|     18|{
11049|     18|	zend_ast *expr_ast = ast->child[0];
11050|     18|	znode expr_node;
11051|       |
11052|     18|	zend_mark_function_as_generator();
11053|       |
11054|     18|	if (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) {
  ------------------
  |  |   35|     18|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) {
  ------------------
  |  |  352|     18|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (11054:6): [True: 1, False: 17]
  ------------------
11055|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11056|      1|			"Cannot use \"yield from\" inside a by-reference generator");
11057|      1|	}
11058|       |
11059|     17|	zend_compile_expr(&expr_node, expr_ast);
11060|     17|	zend_emit_op_tmp(result, ZEND_YIELD_FROM, &expr_node, NULL);
  ------------------
  |  |  288|     17|#define ZEND_YIELD_FROM                     166
  ------------------
11061|     17|}
zend_compile.c:zend_compile_instanceof:
11065|     24|{
11066|     24|	zend_ast *obj_ast = ast->child[0];
11067|     24|	zend_ast *class_ast = ast->child[1];
11068|       |
11069|     24|	znode obj_node, class_node;
11070|     24|	zend_op *opline;
11071|       |
11072|     24|	zend_compile_expr(&obj_node, obj_ast);
11073|     24|	if (obj_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     24|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11073:6): [True: 1, False: 23]
  ------------------
11074|      1|		zend_do_free(&obj_node);
11075|      1|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
11076|      1|		ZVAL_FALSE(&result->u.constant);
  ------------------
  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11077|      1|		return;
11078|      1|	}
11079|       |
11080|     23|	zend_compile_class_ref(&class_node, class_ast,
11081|     23|		ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_EXCEPTION | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1050|     23|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
              		ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_EXCEPTION | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1052|     23|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
              		ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_EXCEPTION | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1051|     23|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
11082|       |
11083|     23|	opline = zend_emit_op_tmp(result, ZEND_INSTANCEOF, &obj_node, NULL);
  ------------------
  |  |  260|     23|#define ZEND_INSTANCEOF                     138
  ------------------
11084|       |
11085|     23|	if (class_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11085:6): [True: 20, False: 3]
  ------------------
11086|     20|		opline->op2_type = IS_CONST;
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
11087|     20|		opline->op2.constant = zend_add_class_name_literal(
11088|     20|			Z_STR(class_node.u.constant));
  ------------------
  |  |  981|     20|#define Z_STR(zval)					(zval).value.str
  ------------------
11089|     20|		opline->extended_value = zend_alloc_cache_slot();
11090|     20|	} else {
11091|      3|		SET_NODE(opline->op2, &class_node);
  ------------------
  |  |   42|      3|#define SET_NODE(target, src) do { \
  |  |   43|      3|		target ## _type = (src)->op_type; \
  |  |   44|      3|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      3|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 3]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|      3|		} else { \
  |  |   47|      3|			target = (src)->u.op; \
  |  |   48|      3|		} \
  |  |   49|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
11092|      3|	}
11093|     23|}
zend_compile.c:zend_compile_include_or_eval:
11097|    131|{
11098|    131|	zend_ast *expr_ast = ast->child[0];
11099|    131|	znode expr_node;
11100|    131|	zend_op *opline;
11101|       |
11102|    131|	zend_do_extended_fcall_begin();
11103|    131|	zend_compile_expr(&expr_node, expr_ast);
11104|       |
11105|    131|	opline = zend_emit_op_tmp(result, ZEND_INCLUDE_OR_EVAL, &expr_node, NULL);
  ------------------
  |  |  196|    131|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
11106|    131|	opline->extended_value = ast->attr;
11107|       |
11108|    131|	zend_do_extended_fcall_end();
11109|    131|}
zend_compile.c:zend_compile_isset_or_empty:
11113|     66|{
11114|     66|	zend_ast *var_ast = ast->child[0];
11115|       |
11116|     66|	znode var_node;
11117|     66|	zend_op *opline = NULL;
11118|       |
11119|     66|	ZEND_ASSERT(ast->kind == ZEND_AST_ISSET || ast->kind == ZEND_AST_EMPTY);
  ------------------
  |  |  112|     66|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11119:2): [True: 66, False: 0]
  |  Branch (11119:2): [True: 0, False: 0]
  |  Branch (11119:2): [True: 63, False: 3]
  |  Branch (11119:2): [True: 3, False: 0]
  ------------------
11120|       |
11121|     66|	if (!zend_is_variable(var_ast)) {
  ------------------
  |  Branch (11121:6): [True: 2, False: 64]
  ------------------
11122|      2|		if (ast->kind == ZEND_AST_EMPTY) {
  ------------------
  |  Branch (11122:7): [True: 0, False: 2]
  ------------------
11123|       |			/* empty(expr) can be transformed to !expr */
11124|      0|			zend_ast *not_ast = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, var_ast);
  ------------------
  |  |  318|      0|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11125|      0|			zend_compile_expr(result, not_ast);
11126|      0|			return;
11127|      2|		} else {
11128|      2|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11129|      2|				"Cannot use isset() on the result of an expression "
11130|      2|				"(you can use \"null !== expression\" instead)");
11131|      2|		}
11132|      2|	}
11133|       |
11134|     64|	if (is_globals_fetch(var_ast)) {
  ------------------
  |  Branch (11134:6): [True: 7, False: 57]
  ------------------
11135|      7|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
11136|      7|		ZVAL_BOOL(&result->u.constant, ast->kind == ZEND_AST_ISSET);
  ------------------
  |  | 1071|      7|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      7|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      7|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      7|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      7|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 7, False: 0]
  |  |  ------------------
  |  | 1074|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
11137|      7|		return;
11138|      7|	}
11139|       |
11140|     57|	if (is_global_var_fetch(var_ast)) {
  ------------------
  |  Branch (11140:6): [True: 4, False: 53]
  ------------------
11141|      4|		if (!var_ast->child[1]) {
  ------------------
  |  Branch (11141:7): [True: 1, False: 3]
  ------------------
11142|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use [] for reading");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11143|      1|		}
11144|       |
11145|      3|		zend_compile_expr(&var_node, var_ast->child[1]);
11146|      3|		if (var_node.op_type == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11146:7): [True: 2, False: 1]
  ------------------
11147|      2|			convert_to_string(&var_node.u.constant);
  ------------------
  |  |  390|      2|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 2, False: 0]
  |  |  ------------------
  ------------------
11148|      2|		}
11149|       |
11150|      3|		opline = zend_emit_op_tmp(result, ZEND_ISSET_ISEMPTY_VAR, &var_node, NULL);
  ------------------
  |  |  236|      3|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
11151|      3|		opline->extended_value =
11152|      3|			ZEND_FETCH_GLOBAL | (ast->kind == ZEND_AST_EMPTY ? ZEND_ISEMPTY : 0);
  ------------------
  |  | 1090|      3|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
              			ZEND_FETCH_GLOBAL | (ast->kind == ZEND_AST_EMPTY ? ZEND_ISEMPTY : 0);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (11152:25): [True: 0, False: 3]
  ------------------
11153|      3|		return;
11154|      4|	}
11155|       |
11156|     53|	zend_short_circuiting_mark_inner(var_ast);
11157|     53|	switch (var_ast->kind) {
11158|     25|		case ZEND_AST_VAR:
  ------------------
  |  Branch (11158:3): [True: 25, False: 28]
  ------------------
11159|     25|			if (is_this_fetch(var_ast)) {
  ------------------
  |  Branch (11159:8): [True: 1, False: 24]
  ------------------
11160|      1|				opline = zend_emit_op(result, ZEND_ISSET_ISEMPTY_THIS, NULL, NULL);
  ------------------
  |  |  308|      1|#define ZEND_ISSET_ISEMPTY_THIS             186
  ------------------
11161|      1|				CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              				CG(active_op_array)->fn_flags |= ZEND_ACC_USES_THIS;
  ------------------
  |  |  368|      1|#define ZEND_ACC_USES_THIS               (1 << 17) /*     |  X  |     |     */
  ------------------
11162|     24|			} else if (zend_try_compile_cv(&var_node, var_ast, BP_VAR_IS) == SUCCESS) {
  ------------------
  |  | 1077|     24|#define BP_VAR_IS			3
  ------------------
  |  Branch (11162:15): [True: 8, False: 16]
  ------------------
11163|      8|				opline = zend_emit_op(result, ZEND_ISSET_ISEMPTY_CV, &var_node, NULL);
  ------------------
  |  |  276|      8|#define ZEND_ISSET_ISEMPTY_CV               154
  ------------------
11164|     16|			} else {
11165|     16|				opline = zend_compile_simple_var_no_cv(result, var_ast, BP_VAR_IS, false);
  ------------------
  |  | 1077|     16|#define BP_VAR_IS			3
  ------------------
11166|     16|				opline->opcode = ZEND_ISSET_ISEMPTY_VAR;
  ------------------
  |  |  236|     16|#define ZEND_ISSET_ISEMPTY_VAR              114
  ------------------
11167|     16|			}
11168|     25|			break;
11169|     15|		case ZEND_AST_DIM:
  ------------------
  |  Branch (11169:3): [True: 15, False: 38]
  ------------------
11170|     15|			opline = zend_compile_dim(result, var_ast, BP_VAR_IS, /* by_ref */ false);
  ------------------
  |  | 1077|     15|#define BP_VAR_IS			3
  ------------------
11171|     15|			opline->opcode = ZEND_ISSET_ISEMPTY_DIM_OBJ;
  ------------------
  |  |  237|     15|#define ZEND_ISSET_ISEMPTY_DIM_OBJ          115
  ------------------
11172|     15|			break;
11173|     12|		case ZEND_AST_PROP:
  ------------------
  |  Branch (11173:3): [True: 12, False: 41]
  ------------------
11174|     12|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (11174:3): [True: 0, False: 53]
  ------------------
11175|     12|			opline = zend_compile_prop(result, var_ast, BP_VAR_IS, false);
  ------------------
  |  | 1077|     12|#define BP_VAR_IS			3
  ------------------
11176|     12|			opline->opcode = ZEND_ISSET_ISEMPTY_PROP_OBJ;
  ------------------
  |  |  270|     12|#define ZEND_ISSET_ISEMPTY_PROP_OBJ         148
  ------------------
11177|     12|			break;
11178|      1|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (11178:3): [True: 1, False: 52]
  ------------------
11179|      1|			opline = zend_compile_static_prop(result, var_ast, BP_VAR_IS, false, false);
  ------------------
  |  | 1077|      1|#define BP_VAR_IS			3
  ------------------
11180|      1|			opline->opcode = ZEND_ISSET_ISEMPTY_STATIC_PROP;
  ------------------
  |  |  302|      1|#define ZEND_ISSET_ISEMPTY_STATIC_PROP      180
  ------------------
11181|      1|			break;
11182|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11182:3): [True: 0, False: 53]
  |  Branch (11182:12): [Folded, False: 0]
  |  Branch (11182:12): [Folded, False: 0]
  ------------------
11183|     53|	}
11184|       |
11185|     52|	result->op_type = opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     52|#define IS_TMP_VAR	(1<<1)
  ------------------
11186|     52|	if (!(ast->kind == ZEND_AST_ISSET)) {
  ------------------
  |  Branch (11186:6): [True: 3, False: 49]
  ------------------
11187|      3|		opline->extended_value |= ZEND_ISEMPTY;
  ------------------
  |  | 1108|      3|#define ZEND_ISEMPTY			(1<<0)
  ------------------
11188|      3|	}
11189|     52|}
zend_compile.c:zend_compile_silence:
11193|    180|{
11194|    180|	zend_ast *expr_ast = ast->child[0];
11195|    180|	znode silence_node;
11196|       |
11197|    180|	zend_emit_op_tmp(&silence_node, ZEND_BEGIN_SILENCE, NULL, NULL);
  ------------------
  |  |  180|    180|#define ZEND_BEGIN_SILENCE                   57
  ------------------
11198|       |
11199|    180|	if (expr_ast->kind == ZEND_AST_VAR) {
  ------------------
  |  Branch (11199:6): [True: 10, False: 170]
  ------------------
11200|       |		/* For @$var we need to force a FETCH instruction, otherwise the CV access will
11201|       |		 * happen outside the silenced section. */
11202|     10|		zend_compile_simple_var_no_cv(result, expr_ast, BP_VAR_R, false );
  ------------------
  |  | 1074|     10|#define BP_VAR_R			0
  ------------------
11203|    170|	} else {
11204|    170|		zend_compile_expr(result, expr_ast);
11205|    170|	}
11206|       |
11207|    180|	zend_emit_op(NULL, ZEND_END_SILENCE, &silence_node, NULL);
  ------------------
  |  |  181|    180|#define ZEND_END_SILENCE                     58
  ------------------
11208|    180|}
zend_compile.c:zend_compile_shell_exec:
11212|      1|{
11213|      1|	zend_ast *expr_ast = ast->child[0];
11214|       |
11215|      1|	zval fn_name;
11216|      1|	zend_ast *name_ast, *args_ast, *call_ast;
11217|       |
11218|      1|	zend_error(E_DEPRECATED, "The backtick (`) operator is deprecated, use shell_exec() instead");
  ------------------
  |  |   36|      1|#define E_DEPRECATED		(1<<13L)
  ------------------
11219|       |
11220|      1|	ZVAL_STRING(&fn_name, "shell_exec");
  ------------------
  |  |  967|      1|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      1|		const char *_s = (s);					\
  |  |  969|      1|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      1|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      1|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11221|      1|	name_ast = zend_ast_create_zval(&fn_name);
11222|      1|	args_ast = zend_ast_create_list(1, ZEND_AST_ARG_LIST, expr_ast);
  ------------------
  |  |  320|      1|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11223|      1|	call_ast = zend_ast_create(ZEND_AST_CALL, name_ast, args_ast);
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11224|       |
11225|      1|	zend_compile_expr(result, call_ast);
11226|       |
11227|      1|	zval_ptr_dtor(&fn_name);
11228|      1|}
zend_compile.c:zend_compile_array:
11232|    744|{
11233|    744|	zend_ast_list *list = zend_ast_get_list(ast);
11234|    744|	zend_op *opline;
11235|    744|	uint32_t i, opnum_init = -1;
11236|    744|	bool packed = true;
11237|       |
11238|    744|	if (zend_try_ct_eval_array(&result->u.constant, ast)) {
  ------------------
  |  Branch (11238:6): [True: 544, False: 200]
  ------------------
11239|    544|		result->op_type = IS_CONST;
  ------------------
  |  |  864|    544|#define IS_CONST	(1<<0)
  ------------------
11240|    544|		return;
11241|    544|	}
11242|       |
11243|       |	/* Empty arrays are handled at compile-time */
11244|    200|	ZEND_ASSERT(list->children > 0);
  ------------------
  |  |  112|    200|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11244:2): [True: 0, False: 200]
  |  Branch (11244:2): [True: 192, False: 8]
  ------------------
11245|       |
11246|    526|	for (i = 0; i < list->children; ++i) {
  ------------------
  |  Branch (11246:14): [True: 334, False: 192]
  ------------------
11247|    334|		zend_ast *elem_ast = list->child[i];
11248|    334|		zend_ast *value_ast, *key_ast;
11249|    334|		bool by_ref;
11250|    334|		znode value_node, key_node, *key_node_ptr = NULL;
11251|       |
11252|    334|		if (elem_ast == NULL) {
  ------------------
  |  Branch (11252:7): [True: 0, False: 334]
  ------------------
11253|      0|			zend_error(E_COMPILE_ERROR, "Cannot use empty array elements in arrays");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11254|      0|		}
11255|       |
11256|    334|		value_ast = elem_ast->child[0];
11257|       |
11258|    334|		if (elem_ast->kind == ZEND_AST_UNPACK) {
  ------------------
  |  Branch (11258:7): [True: 8, False: 326]
  ------------------
11259|      8|			zend_compile_expr(&value_node, value_ast);
11260|      8|			if (i == 0) {
  ------------------
  |  Branch (11260:8): [True: 7, False: 1]
  ------------------
11261|      7|				opnum_init = get_next_op_number();
11262|      7|				opline = zend_emit_op_tmp(result, ZEND_INIT_ARRAY, NULL, NULL);
  ------------------
  |  |  194|      7|#define ZEND_INIT_ARRAY                      71
  ------------------
11263|      7|			}
11264|      8|			opline = zend_emit_op(NULL, ZEND_ADD_ARRAY_UNPACK, &value_node, NULL);
  ------------------
  |  |  269|      8|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
11265|      8|			SET_NODE(opline->result, result);
  ------------------
  |  |   42|      8|#define SET_NODE(target, src) do { \
  |  |   43|      8|		target ## _type = (src)->op_type; \
  |  |   44|      8|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|      8|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 8]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|      8|		} else { \
  |  |   47|      8|			target = (src)->u.op; \
  |  |   48|      8|		} \
  |  |   49|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
11266|      8|			continue;
11267|      8|		}
11268|       |
11269|    326|		key_ast = elem_ast->child[1];
11270|    326|		by_ref = elem_ast->attr;
11271|       |
11272|    326|		if (key_ast) {
  ------------------
  |  Branch (11272:7): [True: 44, False: 282]
  ------------------
11273|     44|			zend_compile_expr(&key_node, key_ast);
11274|     44|			zend_handle_numeric_op(&key_node);
11275|     44|			key_node_ptr = &key_node;
11276|     44|		}
11277|       |
11278|    326|		if (by_ref) {
  ------------------
  |  Branch (11278:7): [True: 20, False: 306]
  ------------------
11279|     20|			zend_ensure_writable_variable(value_ast);
11280|     20|			zend_compile_var(&value_node, value_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|     20|#define BP_VAR_W			1
  ------------------
11281|    306|		} else {
11282|    306|			zend_compile_expr(&value_node, value_ast);
11283|    306|		}
11284|       |
11285|    326|		if (i == 0) {
  ------------------
  |  Branch (11285:7): [True: 185, False: 141]
  ------------------
11286|    185|			opnum_init = get_next_op_number();
11287|    185|			opline = zend_emit_op_tmp(result, ZEND_INIT_ARRAY, &value_node, key_node_ptr);
  ------------------
  |  |  194|    185|#define ZEND_INIT_ARRAY                      71
  ------------------
11288|    185|			opline->extended_value = list->children << ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|    185|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
11289|    185|		} else {
11290|    141|			opline = zend_emit_op(NULL, ZEND_ADD_ARRAY_ELEMENT,
  ------------------
  |  |  195|    141|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
11291|    141|				&value_node, key_node_ptr);
11292|    141|			SET_NODE(opline->result, result);
  ------------------
  |  |   42|    141|#define SET_NODE(target, src) do { \
  |  |   43|    141|		target ## _type = (src)->op_type; \
  |  |   44|    141|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    141|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 141]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    141|		} else { \
  |  |   47|    141|			target = (src)->u.op; \
  |  |   48|    141|		} \
  |  |   49|    141|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 141]
  |  |  ------------------
  ------------------
11293|    141|		}
11294|    326|		opline->extended_value |= by_ref;
11295|       |
11296|    326|		if (key_ast && key_node.op_type == IS_CONST && Z_TYPE(key_node.u.constant) == IS_STRING) {
  ------------------
  |  |  864|    370|#define IS_CONST	(1<<0)
  ------------------
              		if (key_ast && key_node.op_type == IS_CONST && Z_TYPE(key_node.u.constant) == IS_STRING) {
  ------------------
  |  |  668|     26|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (key_ast && key_node.op_type == IS_CONST && Z_TYPE(key_node.u.constant) == IS_STRING) {
  ------------------
  |  |  612|     26|#define IS_STRING					6
  ------------------
  |  Branch (11296:7): [True: 44, False: 282]
  |  Branch (11296:18): [True: 26, False: 18]
  |  Branch (11296:50): [True: 9, False: 17]
  ------------------
11297|      9|			packed = false;
11298|      9|		}
11299|    326|	}
11300|       |
11301|       |	/* Add a flag to INIT_ARRAY if we know this array cannot be packed */
11302|    192|	if (!packed) {
  ------------------
  |  Branch (11302:6): [True: 9, False: 183]
  ------------------
11303|      9|		ZEND_ASSERT(opnum_init != (uint32_t)-1);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11303:3): [True: 0, False: 9]
  |  Branch (11303:3): [True: 9, False: 0]
  ------------------
11304|      9|		opline = &CG(active_op_array)->opcodes[opnum_init];
  ------------------
  |  |   35|      9|# define CG(v) (compiler_globals.v)
  ------------------
11305|      9|		opline->extended_value |= ZEND_ARRAY_NOT_PACKED;
  ------------------
  |  | 1210|      9|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
11306|      9|	}
11307|    192|}
zend_compile.c:zend_handle_numeric_op:
 2812|     44|{
 2813|     44|	if (node->op_type == IS_CONST && Z_TYPE(node->u.constant) == IS_STRING) {
  ------------------
  |  |  864|     88|#define IS_CONST	(1<<0)
  ------------------
              	if (node->op_type == IS_CONST && Z_TYPE(node->u.constant) == IS_STRING) {
  ------------------
  |  |  668|     26|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (node->op_type == IS_CONST && Z_TYPE(node->u.constant) == IS_STRING) {
  ------------------
  |  |  612|     26|#define IS_STRING					6
  ------------------
  |  Branch (2813:6): [True: 26, False: 18]
  |  Branch (2813:35): [True: 9, False: 17]
  ------------------
 2814|      9|		zend_ulong index;
 2815|       |
 2816|      9|		if (ZEND_HANDLE_NUMERIC(Z_STR(node->u.constant), index)) {
  ------------------
  |  |  424|      9|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      9|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2817|      0|			zval_ptr_dtor(&node->u.constant);
 2818|      0|			ZVAL_LONG(&node->u.constant, index);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2819|      0|		}
 2820|      9|	}
 2821|     44|}
zend_compile.c:zend_compile_const:
11311|  1.10k|{
11312|  1.10k|	zend_ast *name_ast = ast->child[0];
11313|       |
11314|  1.10k|	zend_op *opline;
11315|       |
11316|  1.10k|	bool is_fully_qualified;
11317|  1.10k|	zend_string *orig_name = zend_ast_get_str(name_ast);
11318|  1.10k|	zend_string *resolved_name = zend_resolve_const_name(orig_name, name_ast->attr, &is_fully_qualified);
11319|       |
11320|  1.10k|	if (zend_string_equals_literal(resolved_name, "__COMPILER_HALT_OFFSET__") || (name_ast->attr != ZEND_NAME_RELATIVE && zend_string_equals_literal(orig_name, "__COMPILER_HALT_OFFSET__"))) {
  ------------------
  |  |  407|  2.20k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 7, False: 1.09k]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(resolved_name, "__COMPILER_HALT_OFFSET__") || (name_ast->attr != ZEND_NAME_RELATIVE && zend_string_equals_literal(orig_name, "__COMPILER_HALT_OFFSET__"))) {
  ------------------
  |  | 1062|  2.18k|#define ZEND_NAME_RELATIVE 2
  ------------------
              	if (zend_string_equals_literal(resolved_name, "__COMPILER_HALT_OFFSET__") || (name_ast->attr != ZEND_NAME_RELATIVE && zend_string_equals_literal(orig_name, "__COMPILER_HALT_OFFSET__"))) {
  ------------------
  |  |  407|  1.08k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 1.08k]
  |  |  ------------------
  ------------------
  |  Branch (11320:80): [True: 1.08k, False: 5]
  ------------------
11321|      7|		zend_ast *last = CG(ast);
  ------------------
  |  |   35|      7|# define CG(v) (compiler_globals.v)
  ------------------
11322|       |
11323|     14|		while (last && last->kind == ZEND_AST_STMT_LIST) {
  ------------------
  |  Branch (11323:10): [True: 13, False: 1]
  |  Branch (11323:18): [True: 8, False: 5]
  ------------------
11324|      8|			const zend_ast_list *list = zend_ast_get_list(last);
11325|      8|			if (list->children == 0) {
  ------------------
  |  Branch (11325:8): [True: 1, False: 7]
  ------------------
11326|      1|				break;
11327|      1|			}
11328|      7|			last = list->child[list->children-1];
11329|      7|		}
11330|      7|		if (last && last->kind == ZEND_AST_HALT_COMPILER) {
  ------------------
  |  Branch (11330:7): [True: 6, False: 1]
  |  Branch (11330:15): [True: 4, False: 2]
  ------------------
11331|      4|			result->op_type = IS_CONST;
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
11332|      4|			ZVAL_LONG(&result->u.constant, Z_LVAL_P(zend_ast_get_zval(last->child[0])));
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
11333|      4|			zend_string_release_ex(resolved_name, 0);
11334|      4|			return;
11335|      4|		}
11336|      7|	}
11337|       |
11338|  1.09k|	if (zend_try_ct_eval_const(&result->u.constant, resolved_name, is_fully_qualified)) {
  ------------------
  |  Branch (11338:6): [True: 414, False: 682]
  ------------------
11339|    414|		result->op_type = IS_CONST;
  ------------------
  |  |  864|    414|#define IS_CONST	(1<<0)
  ------------------
11340|    414|		zend_string_release_ex(resolved_name, 0);
11341|    414|		return;
11342|    414|	}
11343|       |
11344|    682|	opline = zend_emit_op_tmp(result, ZEND_FETCH_CONSTANT, NULL, NULL);
  ------------------
  |  |  221|    682|#define ZEND_FETCH_CONSTANT                  99
  ------------------
11345|    682|	opline->op2_type = IS_CONST;
  ------------------
  |  |  864|    682|#define IS_CONST	(1<<0)
  ------------------
11346|       |
11347|    682|	if (is_fully_qualified || !FC(current_namespace)) {
  ------------------
  |  |   60|    635|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|    635|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (11347:6): [True: 47, False: 635]
  |  Branch (11347:28): [True: 590, False: 45]
  ------------------
11348|    637|		opline->op1.num = 0;
11349|    637|		opline->op2.constant = zend_add_const_name_literal(
11350|    637|			resolved_name, false);
11351|    637|	} else {
11352|     45|		opline->op1.num = IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE;
  ------------------
  |  | 1149|     45|#define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800
  ------------------
11353|     45|		opline->op2.constant = zend_add_const_name_literal(
11354|       |			resolved_name, true);
11355|     45|	}
11356|    682|	opline->extended_value = zend_alloc_cache_slot();
11357|    682|}
zend_compile.c:zend_add_const_name_literal:
  665|    682|{
  666|    682|	zend_string *tmp_name;
  667|       |
  668|    682|	int ret = zend_add_literal_string(&name);
  669|       |
  670|    682|	size_t ns_len = 0, after_ns_len = ZSTR_LEN(name);
  ------------------
  |  |   68|    682|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  671|    682|	const char *after_ns = zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   67|    682|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	const char *after_ns = zend_memrchr(ZSTR_VAL(name), '\\', ZSTR_LEN(name));
  ------------------
  |  |   68|    682|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  672|    682|	if (after_ns) {
  ------------------
  |  Branch (672:6): [True: 83, False: 599]
  ------------------
  673|     83|		after_ns += 1;
  674|     83|		ns_len = after_ns - ZSTR_VAL(name) - 1;
  ------------------
  |  |   67|     83|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  675|     83|		after_ns_len = ZSTR_LEN(name) - ns_len - 1;
  ------------------
  |  |   68|     83|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  676|       |
  677|       |		/* lowercased namespace name & original constant name */
  678|     83|		tmp_name = zend_string_init(ZSTR_VAL(name), ZSTR_LEN(name), 0);
  ------------------
  |  |   67|     83|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		tmp_name = zend_string_init(ZSTR_VAL(name), ZSTR_LEN(name), 0);
  ------------------
  |  |   68|     83|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  679|     83|		zend_str_tolower(ZSTR_VAL(tmp_name), ns_len);
  ------------------
  |  |   67|     83|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  680|     83|		zend_add_literal_string(&tmp_name);
  681|       |
  682|     83|		if (!unqualified) {
  ------------------
  |  Branch (682:7): [True: 38, False: 45]
  ------------------
  683|     38|			return ret;
  684|     38|		}
  685|    599|	} else {
  686|    599|		after_ns = ZSTR_VAL(name);
  ------------------
  |  |   67|    599|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  687|    599|	}
  688|       |
  689|       |	/* original unqualified constant name */
  690|    644|	tmp_name = zend_string_init(after_ns, after_ns_len, 0);
  691|    644|	zend_add_literal_string(&tmp_name);
  692|       |
  693|    644|	return ret;
  694|    682|}
zend_compile.c:zend_compile_class_const:
11361|    171|{
11362|    171|	zend_ast *class_ast;
11363|    171|	zend_ast *const_ast;
11364|    171|	znode class_node, const_node;
11365|    171|	zend_op *opline;
11366|       |
11367|    171|	zend_eval_const_expr(&ast->child[0]);
11368|    171|	zend_eval_const_expr(&ast->child[1]);
11369|       |
11370|    171|	class_ast = ast->child[0];
11371|    171|	const_ast = ast->child[1];
11372|       |
11373|    171|	if (class_ast->kind == ZEND_AST_ZVAL && const_ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11373:6): [True: 150, False: 21]
  |  Branch (11373:42): [True: 150, False: 0]
  ------------------
11374|    150|		zval *const_zv = zend_ast_get_zval(const_ast);
11375|    150|		if (Z_TYPE_P(const_zv) == IS_STRING) {
  ------------------
  |  |  669|    150|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    150|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(const_zv) == IS_STRING) {
  ------------------
  |  |  612|    150|#define IS_STRING					6
  ------------------
  |  Branch (11375:7): [True: 148, False: 2]
  ------------------
11376|    148|			zend_string *const_str = Z_STR_P(const_zv);
  ------------------
  |  |  982|    148|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    148|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11377|    148|			zend_string *resolved_name = zend_resolve_class_name_ast(class_ast);
11378|    148|			if (zend_try_ct_eval_class_const(&result->u.constant, resolved_name, const_str)) {
  ------------------
  |  Branch (11378:8): [True: 8, False: 140]
  ------------------
11379|      8|				result->op_type = IS_CONST;
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
11380|      8|				zend_string_release_ex(resolved_name, 0);
11381|      8|				return;
11382|      8|			}
11383|    140|			zend_string_release_ex(resolved_name, 0);
11384|    140|		}
11385|    150|	}
11386|       |
11387|    163|	zend_compile_class_ref(&class_node, class_ast, ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    163|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
11388|       |
11389|    163|	zend_compile_expr(&const_node, const_ast);
11390|       |
11391|    163|	opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_CONSTANT, NULL, &const_node);
  ------------------
  |  |  303|    163|#define ZEND_FETCH_CLASS_CONSTANT           181
  ------------------
11392|       |
11393|    163|	zend_set_class_name_op1(opline, &class_node);
11394|       |
11395|    163|	if (opline->op1_type == IS_CONST || opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|    326|#define IS_CONST	(1<<0)
  ------------------
              	if (opline->op1_type == IS_CONST || opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11395:6): [True: 142, False: 21]
  |  Branch (11395:38): [True: 21, False: 0]
  ------------------
11396|    159|		opline->extended_value = zend_alloc_cache_slots(2);
11397|    159|	}
11398|    163|}
zend_compile.c:zend_try_ct_eval_class_const:
 1879|    210|{
 1880|    210|	uint32_t fetch_type = zend_get_class_fetch_type(class_name);
 1881|    210|	zend_class_constant *cc;
 1882|    210|	zval *c;
 1883|       |
 1884|    210|	if (class_name_refers_to_active_ce(class_name, fetch_type)) {
  ------------------
  |  Branch (1884:6): [True: 21, False: 189]
  ------------------
 1885|     21|		cc = zend_hash_find_ptr(&CG(active_class_entry)->constants_table, name);
  ------------------
  |  |   35|     21|# define CG(v) (compiler_globals.v)
  ------------------
 1886|    189|	} else if (fetch_type == ZEND_FETCH_CLASS_DEFAULT && !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)) {
  ------------------
  |  | 1042|    378|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              	} else if (fetch_type == ZEND_FETCH_CLASS_DEFAULT && !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)) {
  ------------------
  |  |   35|    182|# define CG(v) (compiler_globals.v)
  ------------------
              	} else if (fetch_type == ZEND_FETCH_CLASS_DEFAULT && !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)) {
  ------------------
  |  | 1280|    182|#define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION   (1<<6)
  ------------------
  |  Branch (1886:13): [True: 182, False: 7]
  |  Branch (1886:55): [True: 82, False: 100]
  ------------------
 1887|     82|		const zend_class_entry *ce = zend_hash_find_ptr_lc(CG(class_table), class_name);
  ------------------
  |  |   35|     82|# define CG(v) (compiler_globals.v)
  ------------------
 1888|     82|		if (ce) {
  ------------------
  |  Branch (1888:7): [True: 23, False: 59]
  ------------------
 1889|     23|			cc = zend_hash_find_ptr(&ce->constants_table, name);
 1890|     59|		} else {
 1891|     59|			return 0;
 1892|     59|		}
 1893|    107|	} else {
 1894|    107|		return 0;
 1895|    107|	}
 1896|       |
 1897|     44|	if (CG(compiler_options) & ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION) {
  ------------------
  |  |   35|     44|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION) {
  ------------------
  |  | 1283|     44|#define ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION	(1<<8)
  ------------------
  |  Branch (1897:6): [True: 5, False: 39]
  ------------------
 1898|      5|		return false;
 1899|      5|	}
 1900|       |
 1901|     39|	if (!cc || !zend_verify_ct_const_access(cc, CG(active_class_entry))) {
  ------------------
  |  |   35|     29|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1901:6): [True: 10, False: 29]
  |  Branch (1901:13): [True: 1, False: 28]
  ------------------
 1902|     11|		return false;
 1903|     11|	}
 1904|       |
 1905|     28|	c = &cc->value;
 1906|       |
 1907|       |	/* Substitute case-sensitive (or lowercase) persistent class constants */
 1908|     28|	if (Z_TYPE_P(c) < IS_ARRAY) {
  ------------------
  |  |  669|     28|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     28|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(c) < IS_ARRAY) {
  ------------------
  |  |  613|     28|#define IS_ARRAY					7
  ------------------
  |  Branch (1908:6): [True: 11, False: 17]
  ------------------
 1909|     11|		ZVAL_COPY_OR_DUP(zv, c);
  ------------------
  |  | 1457|     11|	do {																\
  |  | 1458|     11|		zval *_z1 = (z);												\
  |  | 1459|     11|		const zval *_z2 = (v);											\
  |  | 1460|     11|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     11|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     11|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     11|	do {												\
  |  |  |  | 1408|     11|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     11|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     11|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     11|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     11|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      2|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      2|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      2|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      2|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      2|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      2|		}																\
  |  | 1472|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1910|     11|		return 1;
 1911|     17|	} else if (Z_TYPE_P(c) == IS_ARRAY && array_is_const(Z_ARR_P(c))) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(c) == IS_ARRAY && array_is_const(Z_ARR_P(c))) {
  ------------------
  |  |  613|     34|#define IS_ARRAY					7
  ------------------
              	} else if (Z_TYPE_P(c) == IS_ARRAY && array_is_const(Z_ARR_P(c))) {
  ------------------
  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (1911:13): [True: 4, False: 13]
  |  Branch (1911:40): [True: 1, False: 3]
  ------------------
 1912|      1|		ZVAL_COPY_OR_DUP(zv, c);
  ------------------
  |  | 1457|      1|	do {																\
  |  | 1458|      1|		zval *_z1 = (z);												\
  |  | 1459|      1|		const zval *_z2 = (v);											\
  |  | 1460|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      1|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      1|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 1, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      1|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      1|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      1|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      1|		}																\
  |  | 1472|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1913|      1|		return 1;
 1914|      1|	}
 1915|       |
 1916|     16|	return false;
 1917|     28|}
zend_compile.c:class_name_refers_to_active_ce:
 1735|    210|{
 1736|    210|	if (!CG(active_class_entry)) {
  ------------------
  |  |   35|    210|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1736:6): [True: 172, False: 38]
  ------------------
 1737|    172|		return false;
 1738|    172|	}
 1739|     38|	if (fetch_type == ZEND_FETCH_CLASS_SELF && zend_is_scope_known()) {
  ------------------
  |  | 1043|     76|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (1739:6): [True: 18, False: 20]
  |  Branch (1739:45): [True: 16, False: 2]
  ------------------
 1740|     16|		return true;
 1741|     16|	}
 1742|     22|	return fetch_type == ZEND_FETCH_CLASS_DEFAULT
  ------------------
  |  | 1042|     44|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (1742:9): [True: 18, False: 4]
  ------------------
 1743|     18|		&& zend_string_equals_ci(class_name, CG(active_class_entry)->name);
  ------------------
  |  |  401|     40|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     36|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 12, False: 6]
  |  |  |  Branch (401:35): [True: 5, False: 7]
  |  |  ------------------
  ------------------
 1744|     38|}
zend_compile.c:zend_verify_ct_const_access:
 1843|     29|{
 1844|     29|	if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED) {
  ------------------
  |  |  498|     29|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     29|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED) {
  ------------------
  |  |  258|     29|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (1844:6): [True: 0, False: 29]
  ------------------
 1845|      0|		return 0;
 1846|     29|	} else if (c->ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     29|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (1846:13): [True: 1, False: 28]
  ------------------
 1847|       |		/* This condition is only met on directly accessing trait constants,
 1848|       |		 * because the ce is replaced to the class entry of the composing class
 1849|       |		 * on binding. */
 1850|      1|		return 0;
 1851|     28|	} else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  498|     28|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     28|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	} else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|     28|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1851:13): [True: 28, False: 0]
  ------------------
 1852|     28|		return 1;
 1853|     28|	} else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  498|      0|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	} else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1853:13): [True: 0, False: 0]
  ------------------
 1854|      0|		return c->ce == scope;
 1855|      0|	} else {
 1856|      0|		zend_class_entry *ce = c->ce;
 1857|      0|		while (1) {
  ------------------
  |  Branch (1857:10): [True: 0, Folded]
  ------------------
 1858|      0|			if (ce == scope) {
  ------------------
  |  Branch (1858:8): [True: 0, False: 0]
  ------------------
 1859|      0|				return 1;
 1860|      0|			}
 1861|      0|			if (!ce->parent) {
  ------------------
  |  Branch (1861:8): [True: 0, False: 0]
  ------------------
 1862|      0|				break;
 1863|      0|			}
 1864|      0|			if (ce->ce_flags & ZEND_ACC_RESOLVED_PARENT) {
  ------------------
  |  |  314|      0|#define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
  ------------------
  |  Branch (1864:8): [True: 0, False: 0]
  ------------------
 1865|      0|				ce = ce->parent;
 1866|      0|			} else {
 1867|      0|				ce = zend_hash_find_ptr_lc(CG(class_table), ce->parent_name);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1868|      0|				if (!ce) {
  ------------------
  |  Branch (1868:9): [True: 0, False: 0]
  ------------------
 1869|      0|					break;
 1870|      0|				}
 1871|      0|			}
 1872|      0|		}
 1873|       |		/* Reverse case cannot be true during compilation */
 1874|      0|		return 0;
 1875|      0|	}
 1876|     29|}
zend_compile.c:zend_compile_class_name:
11402|    102|{
11403|    102|	zend_ast *class_ast = ast->child[0];
11404|       |
11405|    102|	if (zend_try_compile_const_expr_resolve_class_name(&result->u.constant, class_ast)) {
  ------------------
  |  Branch (11405:6): [True: 72, False: 30]
  ------------------
11406|     72|		result->op_type = IS_CONST;
  ------------------
  |  |  864|     72|#define IS_CONST	(1<<0)
  ------------------
11407|     72|		return;
11408|     72|	}
11409|       |
11410|     30|	if (class_ast->kind == ZEND_AST_ZVAL) {
  ------------------
  |  Branch (11410:6): [True: 13, False: 17]
  ------------------
11411|     13|		zend_op *opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, NULL, NULL);
  ------------------
  |  |  279|     13|#define ZEND_FETCH_CLASS_NAME               157
  ------------------
11412|     13|		opline->op1.num = zend_get_class_fetch_type(zend_ast_get_str(class_ast));
11413|     17|	} else {
11414|     17|		znode expr_node;
11415|     17|		zend_compile_expr(&expr_node, class_ast);
11416|     17|		if (expr_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11416:7): [True: 1, False: 16]
  ------------------
11417|       |			/* Unlikely case that happen if class_ast is constant folded.
11418|       |			 * Handle it here, to avoid needing a CONST specialization in the VM. */
11419|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot use \"::class\" on %s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
11420|      1|				zend_zval_value_name(&expr_node.u.constant));
11421|      1|		}
11422|       |
11423|     16|		zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, &expr_node, NULL);
  ------------------
  |  |  279|     16|#define ZEND_FETCH_CLASS_NAME               157
  ------------------
11424|     16|	}
11425|     30|}
zend_compile.c:zend_try_compile_const_expr_resolve_class_name:
 1800|    113|{
 1801|    113|	uint32_t fetch_type;
 1802|    113|	const zval *class_name;
 1803|       |
 1804|    113|	if (class_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (1804:6): [True: 17, False: 96]
  ------------------
 1805|     17|		return false;
 1806|     17|	}
 1807|       |
 1808|     96|	class_name = zend_ast_get_zval(class_ast);
 1809|       |
 1810|     96|	if (Z_TYPE_P(class_name) != IS_STRING) {
  ------------------
  |  |  669|     96|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     96|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(class_name) != IS_STRING) {
  ------------------
  |  |  612|     96|#define IS_STRING					6
  ------------------
  |  Branch (1810:6): [True: 1, False: 95]
  ------------------
 1811|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Illegal class name");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1812|      1|	}
 1813|       |
 1814|     95|	fetch_type = zend_get_class_fetch_type(Z_STR_P(class_name));
  ------------------
  |  |  982|     95|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     95|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1815|     95|	zend_ensure_valid_class_fetch_type(fetch_type);
 1816|       |
 1817|     95|	switch (fetch_type) {
 1818|      7|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      7|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (1818:3): [True: 7, False: 88]
  ------------------
 1819|      7|			if (CG(active_class_entry) && zend_is_scope_known()) {
  ------------------
  |  |   35|     14|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 4, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (1819:34): [True: 1, False: 3]
  ------------------
 1820|      1|				ZVAL_STR_COPY(zv, CG(active_class_entry)->name);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1821|      1|				return true;
 1822|      1|			}
 1823|      6|			return false;
 1824|      4|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      4|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (1824:3): [True: 4, False: 91]
  ------------------
 1825|      4|			if (CG(active_class_entry) && CG(active_class_entry)->parent_name
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 3, False: 1]
  |  |  ------------------
  ------------------
              			if (CG(active_class_entry) && CG(active_class_entry)->parent_name
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1825:34): [True: 1, False: 2]
  ------------------
 1826|      1|					&& zend_is_scope_known()) {
  ------------------
  |  Branch (1826:9): [True: 1, False: 0]
  ------------------
 1827|      1|				ZVAL_STR_COPY(zv, CG(active_class_entry)->parent_name);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1828|      1|				return true;
 1829|      1|			}
 1830|      3|			return false;
 1831|      8|		case ZEND_FETCH_CLASS_STATIC:
  ------------------
  |  | 1045|      8|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (1831:3): [True: 8, False: 87]
  ------------------
 1832|      8|			return false;
 1833|     74|		case ZEND_FETCH_CLASS_DEFAULT:
  ------------------
  |  | 1042|     74|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
  |  Branch (1833:3): [True: 74, False: 21]
  ------------------
 1834|     74|			ZVAL_STR(zv, zend_resolve_class_name_ast(class_ast));
  ------------------
  |  | 1088|     74|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     74|		zval *__z = (z);						\
  |  | 1090|     74|		zend_string *__s = (s);					\
  |  | 1091|     74|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     74|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     74|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     74|		/* interned strings support */			\
  |  | 1093|     74|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     74|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     74|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 16, False: 58]
  |  |  ------------------
  |  | 1094|     74|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     16|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     16|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     74|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    132|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     58|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     58|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     58|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     74|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 74]
  |  |  ------------------
  ------------------
 1835|     74|			return true;
 1836|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1836:3): [True: 0, False: 95]
  |  Branch (1836:12): [Folded, False: 0]
  |  Branch (1836:12): [Folded, False: 0]
  ------------------
 1837|     95|	}
 1838|     95|}
zend_compile.c:zend_compile_encaps_list:
11518|    421|{
11519|    421|	uint32_t i, j;
11520|    421|	uint32_t rope_init_lineno = -1;
11521|    421|	zend_op *opline = NULL, *init_opline;
11522|    421|	znode elem_node, last_const_node;
11523|    421|	zend_ast_list *list = zend_ast_get_list(ast);
11524|    421|	uint32_t reserved_op_number = -1;
11525|       |
11526|    421|	ZEND_ASSERT(list->children > 0);
  ------------------
  |  |  112|    421|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11526:2): [True: 0, False: 421]
  |  Branch (11526:2): [True: 421, False: 0]
  ------------------
11527|       |
11528|    421|	j = 0;
11529|    421|	last_const_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|    421|#define IS_UNUSED	0		/* Unused operand */
  ------------------
11530|  1.98k|	for (i = 0; i < list->children; i++) {
  ------------------
  |  Branch (11530:14): [True: 1.56k, False: 421]
  ------------------
11531|  1.56k|		zend_ast *encaps_var = list->child[i];
11532|       |
11533|  1.56k|		if (encaps_var->attr & (ZEND_ENCAPS_VAR_DOLLAR_CURLY|ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR)) {
  ------------------
  |  | 1144|  1.56k|#define ZEND_ENCAPS_VAR_DOLLAR_CURLY (1 << 0)
  ------------------
              		if (encaps_var->attr & (ZEND_ENCAPS_VAR_DOLLAR_CURLY|ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR)) {
  ------------------
  |  | 1145|  1.56k|#define ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR (1 << 1)
  ------------------
  |  Branch (11533:7): [True: 14, False: 1.54k]
  ------------------
11534|     14|			if ((encaps_var->kind == ZEND_AST_VAR || encaps_var->kind == ZEND_AST_DIM) && (encaps_var->attr & ZEND_ENCAPS_VAR_DOLLAR_CURLY)) {
  ------------------
  |  | 1144|     14|#define ZEND_ENCAPS_VAR_DOLLAR_CURLY (1 << 0)
  ------------------
  |  Branch (11534:9): [True: 14, False: 0]
  |  Branch (11534:45): [True: 0, False: 0]
  |  Branch (11534:82): [True: 4, False: 10]
  ------------------
11535|      4|				zend_error(E_DEPRECATED, "Using ${var} in strings is deprecated, use {$var} instead");
  ------------------
  |  |   36|      4|#define E_DEPRECATED		(1<<13L)
  ------------------
11536|     10|			} else if (encaps_var->kind == ZEND_AST_VAR && (encaps_var->attr & ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR)) {
  ------------------
  |  | 1145|     10|#define ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR (1 << 1)
  ------------------
  |  Branch (11536:15): [True: 10, False: 0]
  |  Branch (11536:51): [True: 10, False: 0]
  ------------------
11537|     10|				zend_error(E_DEPRECATED, "Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead");
  ------------------
  |  |   36|     10|#define E_DEPRECATED		(1<<13L)
  ------------------
11538|     10|			}
11539|     14|		}
11540|       |
11541|  1.56k|		zend_compile_expr(&elem_node, encaps_var);
11542|       |
11543|  1.56k|		if (elem_node.op_type == IS_CONST) {
  ------------------
  |  |  864|  1.56k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11543:7): [True: 924, False: 638]
  ------------------
11544|    924|			convert_to_string(&elem_node.u.constant);
  ------------------
  |  |  390|    924|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|    924|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    924|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|    924|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 924]
  |  |  ------------------
  ------------------
11545|       |
11546|    924|			if (Z_STRLEN(elem_node.u.constant) == 0) {
  ------------------
  |  |  987|    924|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|    924|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  |  Branch (11546:8): [True: 15, False: 909]
  ------------------
11547|     15|				zval_ptr_dtor(&elem_node.u.constant);
11548|    909|			} else if (last_const_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    909|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11548:15): [True: 0, False: 909]
  ------------------
11549|      0|				concat_function(&last_const_node.u.constant, &last_const_node.u.constant, &elem_node.u.constant);
11550|      0|				zval_ptr_dtor(&elem_node.u.constant);
11551|    909|			} else {
11552|    909|				last_const_node.op_type = IS_CONST;
  ------------------
  |  |  864|    909|#define IS_CONST	(1<<0)
  ------------------
11553|    909|				ZVAL_COPY_VALUE(&last_const_node.u.constant, &elem_node.u.constant);
  ------------------
  |  | 1416|    909|	do {												\
  |  | 1417|    909|		zval *_z1 = (z);								\
  |  | 1418|    909|		const zval *_z2 = (v);							\
  |  | 1419|    909|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    909|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    909|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    909|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    909|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    909|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    909|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    909|	do {												\
  |  |  |  | 1408|    909|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    909|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    909|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    909|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    909|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    909|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    909|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 909]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    909|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 909]
  |  |  ------------------
  ------------------
11554|       |				/* Reserve place for ZEND_ROPE_ADD instruction */
11555|    909|				reserved_op_number = get_next_op_number();
11556|    909|				opline = get_next_op();
11557|    909|				opline->opcode = ZEND_NOP;
  ------------------
  |  |  124|    909|#define ZEND_NOP                              0
  ------------------
11558|    909|			}
11559|    924|			continue;
11560|    924|		} else {
11561|    638|			if (j == 0) {
  ------------------
  |  Branch (11561:8): [True: 421, False: 217]
  ------------------
11562|    421|				if (last_const_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    421|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11562:9): [True: 336, False: 85]
  ------------------
11563|    336|					rope_init_lineno = reserved_op_number;
11564|    336|				} else {
11565|     85|					rope_init_lineno = get_next_op_number();
11566|     85|				}
11567|    421|			}
11568|    638|			if (last_const_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    638|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11568:8): [True: 538, False: 100]
  ------------------
11569|    538|				opline = &CG(active_op_array)->opcodes[reserved_op_number];
  ------------------
  |  |   35|    538|# define CG(v) (compiler_globals.v)
  ------------------
11570|    538|				zend_compile_rope_add_ex(opline, result, j++, &last_const_node);
11571|    538|				last_const_node.op_type = IS_UNUSED;
  ------------------
  |  |  863|    538|#define IS_UNUSED	0		/* Unused operand */
  ------------------
11572|    538|			}
11573|    638|			opline = zend_compile_rope_add(result, j++, &elem_node);
11574|    638|		}
11575|  1.56k|	}
11576|       |
11577|    421|	if (j == 0) {
  ------------------
  |  Branch (11577:6): [True: 0, False: 421]
  ------------------
11578|      0|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
11579|      0|		if (last_const_node.op_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11579:7): [True: 0, False: 0]
  ------------------
11580|      0|			ZVAL_COPY_VALUE(&result->u.constant, &last_const_node.u.constant);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11581|      0|		} else {
11582|      0|			ZVAL_EMPTY_STRING(&result->u.constant);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11583|       |			/* empty string */
11584|      0|		}
11585|      0|		CG(active_op_array)->last = reserved_op_number - 1;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
11586|      0|		return;
11587|    421|	} else if (last_const_node.op_type == IS_CONST) {
  ------------------
  |  |  864|    421|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11587:13): [True: 371, False: 50]
  ------------------
11588|    371|		opline = &CG(active_op_array)->opcodes[reserved_op_number];
  ------------------
  |  |   35|    371|# define CG(v) (compiler_globals.v)
  ------------------
11589|    371|		opline = zend_compile_rope_add_ex(opline, result, j++, &last_const_node);
11590|    371|	}
11591|    421|	init_opline = CG(active_op_array)->opcodes + rope_init_lineno;
  ------------------
  |  |   35|    421|# define CG(v) (compiler_globals.v)
  ------------------
11592|    421|	zend_compile_rope_finalize(result, j, init_opline, opline);
11593|    421|}
zend_compile.c:zend_compile_rope_add_ex:
11429|    909|{
11430|    909|	if (num == 0) {
  ------------------
  |  Branch (11430:6): [True: 336, False: 573]
  ------------------
11431|    336|		result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|    336|#define IS_TMP_VAR	(1<<1)
  ------------------
11432|    336|		result->u.op.var = -1;
11433|    336|		opline->opcode = ZEND_ROPE_INIT;
  ------------------
  |  |  177|    336|#define ZEND_ROPE_INIT                       54
  ------------------
11434|    573|	} else {
11435|    573|		opline->opcode = ZEND_ROPE_ADD;
  ------------------
  |  |  178|    573|#define ZEND_ROPE_ADD                        55
  ------------------
11436|    573|		SET_NODE(opline->op1, result);
  ------------------
  |  |   42|    573|#define SET_NODE(target, src) do { \
  |  |   43|    573|		target ## _type = (src)->op_type; \
  |  |   44|    573|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    573|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 573]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    573|		} else { \
  |  |   47|    573|			target = (src)->u.op; \
  |  |   48|    573|		} \
  |  |   49|    573|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 573]
  |  |  ------------------
  ------------------
11437|    573|	}
11438|    909|	SET_NODE(opline->op2, elem_node);
  ------------------
  |  |   42|    909|#define SET_NODE(target, src) do { \
  |  |   43|    909|		target ## _type = (src)->op_type; \
  |  |   44|    909|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    909|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 909, False: 0]
  |  |  ------------------
  |  |   45|    909|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    909|		} else { \
  |  |   47|      0|			target = (src)->u.op; \
  |  |   48|      0|		} \
  |  |   49|    909|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 909]
  |  |  ------------------
  ------------------
11439|    909|	SET_NODE(opline->result, result);
  ------------------
  |  |   42|    909|#define SET_NODE(target, src) do { \
  |  |   43|    909|		target ## _type = (src)->op_type; \
  |  |   44|    909|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|    909|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 909]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|    909|		} else { \
  |  |   47|    909|			target = (src)->u.op; \
  |  |   48|    909|		} \
  |  |   49|    909|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 909]
  |  |  ------------------
  ------------------
11440|    909|	opline->extended_value = num;
11441|    909|	return opline;
11442|    909|}
zend_compile.c:zend_compile_magic_const:
11597|    111|{
11598|    111|	zend_op *opline;
11599|       |
11600|    111|	if (zend_try_ct_eval_magic_const(&result->u.constant, ast)) {
  ------------------
  |  Branch (11600:6): [True: 110, False: 1]
  ------------------
11601|    110|		result->op_type = IS_CONST;
  ------------------
  |  |  864|    110|#define IS_CONST	(1<<0)
  ------------------
11602|    110|		return;
11603|    110|	}
11604|       |
11605|      1|	ZEND_ASSERT(ast->attr == T_CLASS_C &&
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11605:2): [True: 0, False: 1]
  |  Branch (11605:2): [True: 0, False: 0]
  |  Branch (11605:2): [True: 0, False: 0]
  |  Branch (11605:2): [True: 1, False: 0]
  |  Branch (11605:2): [True: 1, False: 0]
  |  Branch (11605:2): [True: 1, False: 0]
  ------------------
11606|      1|	            CG(active_class_entry) &&
11607|      1|	            (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT) != 0);
11608|       |
11609|      1|	opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, NULL, NULL);
  ------------------
  |  |  279|      1|#define ZEND_FETCH_CLASS_NAME               157
  ------------------
11610|      1|	opline->op1.num = ZEND_FETCH_CLASS_SELF;
  ------------------
  |  | 1043|      1|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
11611|      1|}
zend_compile.c:zend_try_ct_eval_magic_const:
10128|    128|{
10129|    128|	const zend_op_array *op_array = CG(active_op_array);
  ------------------
  |  |   35|    128|# define CG(v) (compiler_globals.v)
  ------------------
10130|    128|	const zend_class_entry *ce = CG(active_class_entry);
  ------------------
  |  |   35|    128|# define CG(v) (compiler_globals.v)
  ------------------
10131|       |
10132|    128|	switch (ast->attr) {
10133|      7|		case T_LINE:
  ------------------
  |  Branch (10133:3): [True: 7, False: 121]
  ------------------
10134|      7|			ZVAL_LONG(zv, ast->lineno);
  ------------------
  |  | 1076|      7|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      7|		zval *__z = (z);				\
  |  | 1078|      7|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      7|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      7|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      7|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      7|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
10135|      7|			break;
10136|     30|		case T_FILE:
  ------------------
  |  Branch (10136:3): [True: 30, False: 98]
  ------------------
10137|     30|			ZVAL_STR_COPY(zv, CG(compiled_filename));
  ------------------
  |  | 1112|     30|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     30|		zval *__z = (z);								\
  |  | 1114|     30|		zend_string *__s = (s);							\
  |  | 1115|     30|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     30|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     30|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     30|		/* interned strings support */					\
  |  | 1117|     30|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 30]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     30|		} else {										\
  |  | 1120|     30|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     30|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     30|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     30|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     30|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     30|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     30|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     30|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     30|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     30|		}												\
  |  | 1123|     30|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 30]
  |  |  ------------------
  ------------------
10138|     30|			break;
10139|     38|		case T_DIR:
  ------------------
  |  Branch (10139:3): [True: 38, False: 90]
  ------------------
10140|     38|		{
10141|     38|			const zend_string *filename = CG(compiled_filename);
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
10142|     38|			zend_string *dirname = zend_string_init(ZSTR_VAL(filename), ZSTR_LEN(filename), 0);
  ------------------
  |  |   67|     38|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_string *dirname = zend_string_init(ZSTR_VAL(filename), ZSTR_LEN(filename), 0);
  ------------------
  |  |   68|     38|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10143|       |#ifdef ZEND_WIN32
10144|       |			ZSTR_LEN(dirname) = php_win32_ioutil_dirname(ZSTR_VAL(dirname), ZSTR_LEN(dirname));
10145|       |#else
10146|     38|			ZSTR_LEN(dirname) = zend_dirname(ZSTR_VAL(dirname), ZSTR_LEN(dirname));
  ------------------
  |  |   68|     38|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			ZSTR_LEN(dirname) = zend_dirname(ZSTR_VAL(dirname), ZSTR_LEN(dirname));
  ------------------
  |  |   67|     38|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_LEN(dirname) = zend_dirname(ZSTR_VAL(dirname), ZSTR_LEN(dirname));
  ------------------
  |  |   68|     38|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10147|     38|#endif
10148|       |
10149|     38|			if (zend_string_equals_literal(dirname, ".")) {
  ------------------
  |  |  407|     38|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 38]
  |  |  ------------------
  ------------------
10150|      0|				dirname = zend_string_extend(dirname, MAXPATHLEN, 0);
10151|      0|#ifdef HAVE_GETCWD
10152|      0|				ZEND_IGNORE_VALUE(VCWD_GETCWD(ZSTR_VAL(dirname), MAXPATHLEN));
  ------------------
  |  |  142|      0|# define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
  ------------------
10153|       |#elif defined(HAVE_GETWD)
10154|       |				ZEND_IGNORE_VALUE(VCWD_GETWD(ZSTR_VAL(dirname)));
10155|       |#endif
10156|      0|				ZSTR_LEN(dirname) = strlen(ZSTR_VAL(dirname));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              				ZSTR_LEN(dirname) = strlen(ZSTR_VAL(dirname));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
10157|      0|			}
10158|       |
10159|     38|			ZVAL_STR(zv, dirname);
  ------------------
  |  | 1088|     38|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     38|		zval *__z = (z);						\
  |  | 1090|     38|		zend_string *__s = (s);					\
  |  | 1091|     38|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     38|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     38|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     38|		/* interned strings support */			\
  |  | 1093|     38|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     38|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     38|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 38]
  |  |  ------------------
  |  | 1094|     38|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     38|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     76|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     38|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     38|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     38|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     38|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 38]
  |  |  ------------------
  ------------------
10160|     38|			break;
10161|      0|		}
10162|      9|		case T_FUNC_C:
  ------------------
  |  Branch (10162:3): [True: 9, False: 119]
  ------------------
10163|      9|			if (op_array && op_array->function_name) {
  ------------------
  |  Branch (10163:8): [True: 9, False: 0]
  |  Branch (10163:20): [True: 8, False: 1]
  ------------------
10164|      8|				ZVAL_STR_COPY(zv, op_array->function_name);
  ------------------
  |  | 1112|      8|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      8|		zval *__z = (z);								\
  |  | 1114|      8|		zend_string *__s = (s);							\
  |  | 1115|      8|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      8|		/* interned strings support */					\
  |  | 1117|      8|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 8]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      8|		} else {										\
  |  | 1120|      8|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      8|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      8|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      8|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      8|		}												\
  |  | 1123|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
10165|      8|			} else {
10166|      1|				ZVAL_EMPTY_STRING(zv);
  ------------------
  |  |  972|      1|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      1|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      1|		zval *__z = (z);							\
  |  |  |  | 1100|      1|		zend_string *__s = (s);						\
  |  |  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
10167|      1|			}
10168|      9|			break;
10169|      1|		case T_PROPERTY_C: {
  ------------------
  |  Branch (10169:3): [True: 1, False: 127]
  ------------------
10170|      1|			zend_string *prop_info_name = CG(context).active_property_info_name;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
10171|      1|			if (prop_info_name) {
  ------------------
  |  Branch (10171:8): [True: 0, False: 1]
  ------------------
10172|      0|				ZVAL_STR(zv, zend_copy_unmangled_prop_name(prop_info_name));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10173|      1|			} else {
10174|      1|				ZVAL_EMPTY_STRING(zv);
  ------------------
  |  |  972|      1|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      1|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      1|		zval *__z = (z);							\
  |  |  |  | 1100|      1|		zend_string *__s = (s);						\
  |  |  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
10175|      1|			}
10176|      1|			break;
10177|      0|		}
10178|     15|		case T_METHOD_C:
  ------------------
  |  Branch (10178:3): [True: 15, False: 113]
  ------------------
10179|       |			/* Detect whether we are directly inside a class (e.g. a class constant) and treat
10180|       |			 * this as not being inside a function. */
10181|     15|			if (op_array && ce && !op_array->scope && !(op_array->fn_flags & ZEND_ACC_CLOSURE)) {
  ------------------
  |  |  384|      3|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (10181:8): [True: 15, False: 0]
  |  Branch (10181:20): [True: 13, False: 2]
  |  Branch (10181:26): [True: 3, False: 10]
  |  Branch (10181:46): [True: 3, False: 0]
  ------------------
10182|      3|				op_array = NULL;
10183|      3|			}
10184|     15|			if (op_array && op_array->function_name) {
  ------------------
  |  Branch (10184:8): [True: 12, False: 3]
  |  Branch (10184:20): [True: 10, False: 2]
  ------------------
10185|     10|				if (op_array->scope) {
  ------------------
  |  Branch (10185:9): [True: 10, False: 0]
  ------------------
10186|     10|					ZVAL_NEW_STR(zv,
  ------------------
  |  | 1105|     10|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     10|		zval *__z = (z);						\
  |  | 1107|     10|		zend_string *__s = (s);					\
  |  | 1108|     10|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     10|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
10187|     10|						zend_create_member_string(op_array->scope->name, op_array->function_name));
10188|     10|				} else {
10189|      0|					ZVAL_STR_COPY(zv, op_array->function_name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10190|      0|				}
10191|     10|			} else {
10192|      5|				ZVAL_EMPTY_STRING(zv);
  ------------------
  |  |  972|      5|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      5|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      5|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      5|		zval *__z = (z);							\
  |  |  |  | 1100|      5|		zend_string *__s = (s);						\
  |  |  |  | 1101|      5|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      5|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      5|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
10193|      5|			}
10194|     15|			break;
10195|      8|		case T_CLASS_C:
  ------------------
  |  Branch (10195:3): [True: 8, False: 120]
  ------------------
10196|      8|			if (ce) {
  ------------------
  |  Branch (10196:8): [True: 7, False: 1]
  ------------------
10197|      7|				if ((ce->ce_flags & ZEND_ACC_TRAIT) != 0) {
  ------------------
  |  |  282|      7|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (10197:9): [True: 1, False: 6]
  ------------------
10198|      1|					return 0;
10199|      6|				} else {
10200|      6|					ZVAL_STR_COPY(zv, ce->name);
  ------------------
  |  | 1112|      6|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      6|		zval *__z = (z);								\
  |  | 1114|      6|		zend_string *__s = (s);							\
  |  | 1115|      6|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      6|		/* interned strings support */					\
  |  | 1117|      6|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 4]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
10201|      6|				}
10202|      7|			} else {
10203|      1|				ZVAL_EMPTY_STRING(zv);
  ------------------
  |  |  972|      1|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      1|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      1|		zval *__z = (z);							\
  |  |  |  | 1100|      1|		zend_string *__s = (s);						\
  |  |  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
10204|      1|			}
10205|      7|			break;
10206|      7|		case T_TRAIT_C:
  ------------------
  |  Branch (10206:3): [True: 1, False: 127]
  ------------------
10207|      1|			if (ce && (ce->ce_flags & ZEND_ACC_TRAIT) != 0) {
  ------------------
  |  |  282|      0|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (10207:8): [True: 0, False: 1]
  |  Branch (10207:14): [True: 0, False: 0]
  ------------------
10208|      0|				ZVAL_STR_COPY(zv, ce->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10209|      1|			} else {
10210|      1|				ZVAL_EMPTY_STRING(zv);
  ------------------
  |  |  972|      1|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      1|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      1|		zval *__z = (z);							\
  |  |  |  | 1100|      1|		zend_string *__s = (s);						\
  |  |  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
10211|      1|			}
10212|      1|			break;
10213|     19|		case T_NS_C:
  ------------------
  |  Branch (10213:3): [True: 19, False: 109]
  ------------------
10214|     19|			if (FC(current_namespace)) {
  ------------------
  |  |   60|     19|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     19|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (60:20): [True: 9, False: 10]
  |  |  ------------------
  ------------------
10215|      9|				ZVAL_STR_COPY(zv, FC(current_namespace));
  ------------------
  |  | 1112|      9|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      9|		zval *__z = (z);								\
  |  | 1114|      9|		zend_string *__s = (s);							\
  |  | 1115|      9|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      9|		/* interned strings support */					\
  |  | 1117|      9|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 8]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      8|		} else {										\
  |  | 1120|      8|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      8|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      8|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      8|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      8|		}												\
  |  | 1123|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
10216|     10|			} else {
10217|     10|				ZVAL_EMPTY_STRING(zv);
  ------------------
  |  |  972|     10|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|     10|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|     10|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|     10|		zval *__z = (z);							\
  |  |  |  | 1100|     10|		zend_string *__s = (s);						\
  |  |  |  | 1101|     10|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|     10|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     10|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
10218|     10|			}
10219|     19|			break;
10220|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10220:3): [True: 0, False: 128]
  |  Branch (10220:12): [Folded, False: 0]
  |  Branch (10220:12): [Folded, False: 0]
  ------------------
10221|    128|	}
10222|       |
10223|    127|	return true;
10224|    128|}
zend_compile.c:zend_compile_throw:
 6074|     66|{
 6075|     66|	zend_ast *expr_ast = ast->child[0];
 6076|       |
 6077|     66|	znode expr_node;
 6078|     66|	zend_compile_expr(&expr_node, expr_ast);
 6079|       |
 6080|     66|	zend_op *opline = zend_emit_op(NULL, ZEND_THROW, &expr_node, NULL);
  ------------------
  |  |  230|     66|#define ZEND_THROW                          108
  ------------------
 6081|     66|	if (result) {
  ------------------
  |  Branch (6081:6): [True: 2, False: 64]
  ------------------
 6082|       |		/* Mark this as an "expression throw" for opcache. */
 6083|      2|		opline->extended_value = ZEND_THROW_IS_EXPR;
  ------------------
  |  | 1120|      2|#define ZEND_THROW_IS_EXPR 1u
  ------------------
 6084|      2|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
 6085|      2|		ZVAL_TRUE(&result->u.constant);
  ------------------
  |  | 1067|      2|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      2|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 6086|      2|	}
 6087|     66|}
zend_compile.c:zend_compile_match:
 6832|     32|{
 6833|     32|	zend_ast *expr_ast = ast->child[0];
 6834|     32|	zend_ast_list *arms = zend_ast_get_list(ast->child[1]);
 6835|     32|	bool has_default_arm = false;
 6836|     32|	uint32_t opnum_match = (uint32_t)-1;
 6837|       |
 6838|     32|	znode expr_node;
 6839|     32|	zend_compile_expr(&expr_node, expr_ast);
 6840|       |
 6841|     32|	znode case_node;
 6842|     32|	case_node.op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     32|#define IS_TMP_VAR	(1<<1)
  ------------------
 6843|     32|	case_node.u.op.var = get_temporary_variable();
 6844|       |
 6845|     32|	uint32_t num_conds = count_match_conds(arms);
 6846|     32|	uint8_t can_use_jumptable = can_match_use_jumptable(arms);
 6847|     32|	bool uses_jumptable = can_use_jumptable && num_conds >= 2;
  ------------------
  |  Branch (6847:24): [True: 20, False: 12]
  |  Branch (6847:45): [True: 11, False: 9]
  ------------------
 6848|     32|	HashTable *jumptable = NULL;
 6849|     32|	uint32_t *jmpnz_opnums = NULL;
 6850|       |
 6851|     84|	for (uint32_t i = 0; i < arms->children; ++i) {
  ------------------
  |  Branch (6851:23): [True: 53, False: 31]
  ------------------
 6852|     53|		zend_ast *arm_ast = arms->child[i];
 6853|       |
 6854|     53|		if (!arm_ast->child[0]) {
  ------------------
  |  Branch (6854:7): [True: 10, False: 43]
  ------------------
 6855|     10|			if (has_default_arm) {
  ------------------
  |  Branch (6855:8): [True: 1, False: 9]
  ------------------
 6856|      1|				CG(zend_lineno) = arm_ast->lineno;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 6857|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 6858|      1|					"Match expressions may only contain one default arm");
 6859|      1|			}
 6860|      9|			has_default_arm = true;
 6861|      9|		}
 6862|     53|	}
 6863|       |
 6864|     31|	if (uses_jumptable) {
  ------------------
  |  Branch (6864:6): [True: 10, False: 21]
  ------------------
 6865|     10|		znode jumptable_op;
 6866|       |
 6867|     10|		ALLOC_HASHTABLE(jumptable);
  ------------------
  |  |  232|     10|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6868|     10|		zend_hash_init(jumptable, num_conds, NULL, NULL, 0);
  ------------------
  |  |  111|     10|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 6869|     10|		jumptable_op.op_type = IS_CONST;
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
 6870|     10|		ZVAL_ARR(&jumptable_op.u.constant, jumptable);
  ------------------
  |  | 1125|     10|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     10|		zend_array *__arr = (a);				\
  |  | 1127|     10|		zval *__z = (z);						\
  |  | 1128|     10|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     10|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     10|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     10|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     10|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 6871|       |
 6872|     10|		zend_op *opline = zend_emit_op(NULL, ZEND_MATCH, &expr_node, &jumptable_op);
  ------------------
  |  |  317|     10|#define ZEND_MATCH                          195
  ------------------
 6873|     10|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6873:7): [True: 1, False: 9]
  ------------------
 6874|      1|			Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
  ------------------
  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      1|	zval *_pz = (pz);				\
  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6875|      1|		}
 6876|     10|		opnum_match = opline - CG(active_op_array)->opcodes;
  ------------------
  |  |   35|     10|# define CG(v) (compiler_globals.v)
  ------------------
 6877|     21|	} else {
 6878|     21|		jmpnz_opnums = safe_emalloc(sizeof(uint32_t), num_conds, 0);
  ------------------
  |  |  153|     21|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     21|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     21|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     21|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     21|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6879|     21|		uint32_t cond_count = 0;
 6880|     49|		for (uint32_t i = 0; i < arms->children; ++i) {
  ------------------
  |  Branch (6880:24): [True: 28, False: 21]
  ------------------
 6881|     28|			zend_ast *arm_ast = arms->child[i];
 6882|       |
 6883|     28|			if (!arm_ast->child[0]) {
  ------------------
  |  Branch (6883:8): [True: 4, False: 24]
  ------------------
 6884|      4|				continue;
 6885|      4|			}
 6886|       |
 6887|     24|			zend_ast_list *conds = zend_ast_get_list(arm_ast->child[0]);
 6888|     50|			for (uint32_t j = 0; j < conds->children; j++) {
  ------------------
  |  Branch (6888:25): [True: 26, False: 24]
  ------------------
 6889|     26|				zend_ast *cond_ast = conds->child[j];
 6890|       |
 6891|     26|				znode cond_node;
 6892|     26|				zend_compile_expr(&cond_node, cond_ast);
 6893|       |
 6894|     26|				uint32_t opcode = (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE_STRICT : ZEND_IS_IDENTICAL;
  ------------------
  |  |  866|     26|#define IS_VAR		(1<<2)
  ------------------
              				uint32_t opcode = (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE_STRICT : ZEND_IS_IDENTICAL;
  ------------------
  |  |  865|     26|#define IS_TMP_VAR	(1<<1)
  ------------------
              				uint32_t opcode = (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE_STRICT : ZEND_IS_IDENTICAL;
  ------------------
  |  |  318|      8|#define ZEND_CASE_STRICT                    196
  ------------------
              				uint32_t opcode = (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) ? ZEND_CASE_STRICT : ZEND_IS_IDENTICAL;
  ------------------
  |  |  140|     44|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (6894:23): [True: 8, False: 18]
  ------------------
 6895|     26|				zend_op *opline = zend_emit_op(NULL, opcode, &expr_node, &cond_node);
 6896|     26|				SET_NODE(opline->result, &case_node);
  ------------------
  |  |   42|     26|#define SET_NODE(target, src) do { \
  |  |   43|     26|		target ## _type = (src)->op_type; \
  |  |   44|     26|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     26|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 26]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     26|		} else { \
  |  |   47|     26|			target = (src)->u.op; \
  |  |   48|     26|		} \
  |  |   49|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
 6897|     26|				if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|     26|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6897:9): [True: 7, False: 19]
  ------------------
 6898|      7|					Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
  ------------------
  |  | 1285|      7|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      7|	zval *_pz = (pz);				\
  |  | 1287|      7|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      7|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
 6899|      7|				}
 6900|       |
 6901|     26|				jmpnz_opnums[cond_count] = zend_emit_cond_jump(ZEND_JMPNZ, &case_node, 0);
  ------------------
  |  |  168|     26|#define ZEND_JMPNZ                           44
  ------------------
 6902|       |
 6903|     26|				cond_count++;
 6904|     26|			}
 6905|     24|		}
 6906|     21|	}
 6907|       |
 6908|     31|	uint32_t opnum_default_jmp = 0;
 6909|     31|	if (!uses_jumptable) {
  ------------------
  |  Branch (6909:6): [True: 21, False: 10]
  ------------------
 6910|     21|		opnum_default_jmp = zend_emit_jump(0);
 6911|     21|	}
 6912|       |
 6913|     31|	bool is_first_case = true;
 6914|     31|	uint32_t cond_count = 0;
 6915|     31|	uint32_t *jmp_end_opnums = safe_emalloc(sizeof(uint32_t), arms->children, 0);
  ------------------
  |  |  153|     31|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     31|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     31|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     31|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     31|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6916|       |
 6917|       |	// The generated default arm is emitted first to avoid live range issues where the tmpvar
 6918|       |	// for the arm result is freed even though it has not been initialized yet.
 6919|     31|	if (!has_default_arm) {
  ------------------
  |  Branch (6919:6): [True: 23, False: 8]
  ------------------
 6920|     23|		if (!uses_jumptable) {
  ------------------
  |  Branch (6920:7): [True: 17, False: 6]
  ------------------
 6921|     17|			zend_update_jump_target_to_next(opnum_default_jmp);
 6922|     17|		}
 6923|       |
 6924|     23|		if (jumptable) {
  ------------------
  |  Branch (6924:7): [True: 6, False: 17]
  ------------------
 6925|      6|			zend_op *opline = &CG(active_op_array)->opcodes[opnum_match];
  ------------------
  |  |   35|      6|# define CG(v) (compiler_globals.v)
  ------------------
 6926|      6|			opline->extended_value = get_next_op_number();
 6927|      6|		}
 6928|       |
 6929|     23|		zend_op *opline = zend_emit_op(NULL, ZEND_MATCH_ERROR, &expr_node, NULL);
  ------------------
  |  |  319|     23|#define ZEND_MATCH_ERROR                    197
  ------------------
 6930|     23|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6930:7): [True: 5, False: 18]
  ------------------
 6931|      5|			Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
  ------------------
  |  | 1285|      5|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      5|	zval *_pz = (pz);				\
  |  | 1287|      5|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      5|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      5|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      5|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 5]
  |  |  ------------------
  ------------------
 6932|      5|		}
 6933|     23|		if (arms->children == 0) {
  ------------------
  |  Branch (6933:7): [True: 2, False: 21]
  ------------------
 6934|       |			/* Mark this as an "expression throw" for opcache. */
 6935|      2|			opline->extended_value = ZEND_THROW_IS_EXPR;
  ------------------
  |  | 1120|      2|#define ZEND_THROW_IS_EXPR 1u
  ------------------
 6936|      2|		}
 6937|     23|	}
 6938|       |
 6939|     80|	for (uint32_t i = 0; i < arms->children; ++i) {
  ------------------
  |  Branch (6939:23): [True: 49, False: 31]
  ------------------
 6940|     49|		zend_ast *arm_ast = arms->child[i];
 6941|     49|		zend_ast *body_ast = arm_ast->child[1];
 6942|       |
 6943|     49|		if (arm_ast->child[0] != NULL) {
  ------------------
  |  Branch (6943:7): [True: 41, False: 8]
  ------------------
 6944|     41|			zend_ast_list *conds = zend_ast_get_list(arm_ast->child[0]);
 6945|       |
 6946|    100|			for (uint32_t j = 0; j < conds->children; j++) {
  ------------------
  |  Branch (6946:25): [True: 59, False: 41]
  ------------------
 6947|     59|				zend_ast *cond_ast = conds->child[j];
 6948|       |
 6949|     59|				if (jmpnz_opnums != NULL) {
  ------------------
  |  Branch (6949:9): [True: 26, False: 33]
  ------------------
 6950|     26|					zend_update_jump_target_to_next(jmpnz_opnums[cond_count]);
 6951|     26|				}
 6952|       |
 6953|     59|				if (jumptable) {
  ------------------
  |  Branch (6953:9): [True: 33, False: 26]
  ------------------
 6954|     33|					zval *cond_zv = zend_ast_get_zval(cond_ast);
 6955|     33|					zval jmp_target;
 6956|     33|					ZVAL_LONG(&jmp_target, get_next_op_number());
  ------------------
  |  | 1076|     33|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     33|		zval *__z = (z);				\
  |  | 1078|     33|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     33|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     33|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     33|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     33|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     33|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     33|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     33|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 33]
  |  |  ------------------
  ------------------
 6957|       |
 6958|     33|					if (Z_TYPE_P(cond_zv) == IS_LONG) {
  ------------------
  |  |  669|     33|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     33|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(cond_zv) == IS_LONG) {
  ------------------
  |  |  610|     33|#define IS_LONG						4
  ------------------
  |  Branch (6958:10): [True: 25, False: 8]
  ------------------
 6959|     25|						zend_hash_index_add(jumptable, Z_LVAL_P(cond_zv), &jmp_target);
  ------------------
  |  |  976|     25|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     25|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6960|     25|					} else {
 6961|      8|						ZEND_ASSERT(Z_TYPE_P(cond_zv) == IS_STRING);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6961:7): [True: 0, False: 8]
  |  Branch (6961:7): [True: 8, False: 0]
  ------------------
 6962|      8|						zend_hash_add(jumptable, Z_STR_P(cond_zv), &jmp_target);
  ------------------
  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 6963|      8|					}
 6964|     33|				}
 6965|       |
 6966|     59|				cond_count++;
 6967|     59|			}
 6968|     41|		} else {
 6969|      8|			if (!uses_jumptable) {
  ------------------
  |  Branch (6969:8): [True: 4, False: 4]
  ------------------
 6970|      4|				zend_update_jump_target_to_next(opnum_default_jmp);
 6971|      4|			}
 6972|       |
 6973|      8|			if (jumptable) {
  ------------------
  |  Branch (6973:8): [True: 4, False: 4]
  ------------------
 6974|      4|				ZEND_ASSERT(opnum_match != (uint32_t)-1);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6974:5): [True: 0, False: 4]
  |  Branch (6974:5): [True: 4, False: 0]
  ------------------
 6975|      4|				zend_op *opline = &CG(active_op_array)->opcodes[opnum_match];
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
 6976|      4|				opline->extended_value = get_next_op_number();
 6977|      4|			}
 6978|      8|		}
 6979|       |
 6980|     49|		znode body_node;
 6981|     49|		zend_compile_expr(&body_node, body_ast);
 6982|       |
 6983|     49|		if (is_first_case) {
  ------------------
  |  Branch (6983:7): [True: 29, False: 20]
  ------------------
 6984|     29|			zend_emit_op_tmp(result, ZEND_QM_ASSIGN, &body_node, NULL);
  ------------------
  |  |  155|     29|#define ZEND_QM_ASSIGN                       31
  ------------------
 6985|     29|			is_first_case = false;
 6986|     29|		} else {
 6987|     20|			zend_op *opline_qm_assign = zend_emit_op(NULL, ZEND_QM_ASSIGN, &body_node, NULL);
  ------------------
  |  |  155|     20|#define ZEND_QM_ASSIGN                       31
  ------------------
 6988|     20|			SET_NODE(opline_qm_assign->result, result);
  ------------------
  |  |   42|     20|#define SET_NODE(target, src) do { \
  |  |   43|     20|		target ## _type = (src)->op_type; \
  |  |   44|     20|		if ((src)->op_type == IS_CONST) { \
  |  |  ------------------
  |  |  |  |  864|     20|#define IS_CONST	(1<<0)
  |  |  ------------------
  |  |  |  Branch (44:7): [True: 0, False: 20]
  |  |  ------------------
  |  |   45|      0|			target.constant = zend_add_literal(&(src)->u.constant); \
  |  |   46|     20|		} else { \
  |  |   47|     20|			target = (src)->u.op; \
  |  |   48|     20|		} \
  |  |   49|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (49:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 6989|     20|		}
 6990|       |
 6991|     49|		jmp_end_opnums[i] = zend_emit_jump(0);
 6992|     49|	}
 6993|       |
 6994|       |	// Initialize result in case there is no arm
 6995|     31|	if (arms->children == 0) {
  ------------------
  |  Branch (6995:6): [True: 2, False: 29]
  ------------------
 6996|      2|		result->op_type = IS_CONST;
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
 6997|      2|		ZVAL_NULL(&result->u.constant);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 6998|      2|	}
 6999|       |
 7000|     80|	for (uint32_t i = 0; i < arms->children; ++i) {
  ------------------
  |  Branch (7000:23): [True: 49, False: 31]
  ------------------
 7001|     49|		zend_update_jump_target_to_next(jmp_end_opnums[i]);
 7002|     49|	}
 7003|       |
 7004|     31|	if (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     31|#define IS_VAR		(1<<2)
  ------------------
              	if (expr_node.op_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     31|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (7004:6): [True: 12, False: 19]
  ------------------
 7005|     12|		zend_op *opline = zend_emit_op(NULL, ZEND_FREE, &expr_node, NULL);
  ------------------
  |  |  193|     12|#define ZEND_FREE                            70
  ------------------
 7006|     12|		opline->extended_value = ZEND_FREE_SWITCH;
  ------------------
  |  | 1113|     12|#define ZEND_FREE_SWITCH        (1<<1)
  ------------------
 7007|     19|	} else if (expr_node.op_type == IS_CONST) {
  ------------------
  |  |  864|     19|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7007:13): [True: 8, False: 11]
  ------------------
 7008|      8|		zval_ptr_dtor_nogc(&expr_node.u.constant);
 7009|      8|	}
 7010|       |
 7011|     31|	if (jmpnz_opnums != NULL) {
  ------------------
  |  Branch (7011:6): [True: 21, False: 10]
  ------------------
 7012|     21|		efree(jmpnz_opnums);
  ------------------
  |  |  154|     21|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     21|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     21|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     21|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     21|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7013|     21|	}
 7014|       |	efree(jmp_end_opnums);
  ------------------
  |  |  154|     31|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     31|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     31|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     31|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     31|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7015|     31|}
zend_compile.c:count_match_conds:
 6717|     32|{
 6718|     32|	uint32_t num_conds = 0;
 6719|       |
 6720|     85|	for (uint32_t i = 0; i < arms->children; i++) {
  ------------------
  |  Branch (6720:23): [True: 53, False: 32]
  ------------------
 6721|     53|		const zend_ast *arm_ast = arms->child[i];
 6722|     53|		if (arm_ast->child[0] == NULL) {
  ------------------
  |  Branch (6722:7): [True: 10, False: 43]
  ------------------
 6723|     10|			continue;
 6724|     10|		}
 6725|       |
 6726|     43|		const zend_ast_list *conds = zend_ast_get_list(arm_ast->child[0]);
 6727|     43|		num_conds += conds->children;
 6728|     43|	}
 6729|       |
 6730|     32|	return num_conds;
 6731|     32|}
zend_compile.c:can_match_use_jumptable:
 6733|     32|static bool can_match_use_jumptable(const zend_ast_list *arms) {
 6734|     67|	for (uint32_t i = 0; i < arms->children; i++) {
  ------------------
  |  Branch (6734:23): [True: 47, False: 20]
  ------------------
 6735|     47|		const zend_ast *arm_ast = arms->child[i];
 6736|     47|		if (!arm_ast->child[0]) {
  ------------------
  |  Branch (6736:7): [True: 9, False: 38]
  ------------------
 6737|       |			/* Skip default arm */
 6738|      9|			continue;
 6739|      9|		}
 6740|       |
 6741|     38|		zend_ast_list *conds = zend_ast_get_list(arm_ast->child[0]);
 6742|     81|		for (uint32_t j = 0; j < conds->children; j++) {
  ------------------
  |  Branch (6742:24): [True: 55, False: 26]
  ------------------
 6743|     55|			zend_ast **cond_ast = &conds->child[j];
 6744|       |
 6745|     55|			zend_eval_const_expr(cond_ast);
 6746|     55|			if ((*cond_ast)->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (6746:8): [True: 6, False: 49]
  ------------------
 6747|      6|				return false;
 6748|      6|			}
 6749|       |
 6750|     49|			const zval *cond_zv = zend_ast_get_zval(*cond_ast);
 6751|     49|			if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  669|     49|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     49|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  610|     98|#define IS_LONG						4
  ------------------
              			if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  669|     16|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) {
  ------------------
  |  |  612|     16|#define IS_STRING					6
  ------------------
  |  Branch (6751:8): [True: 16, False: 33]
  |  Branch (6751:40): [True: 6, False: 10]
  ------------------
 6752|      6|				return false;
 6753|      6|			}
 6754|     49|		}
 6755|     38|	}
 6756|       |
 6757|     20|	return true;
 6758|     32|}
zend_compile.c:zend_compile_assign:
 3501|  3.46k|{
 3502|  3.46k|	zend_ast *var_ast = ast->child[0];
 3503|  3.46k|	zend_ast *expr_ast = ast->child[1];
 3504|       |
 3505|  3.46k|	znode var_node, expr_node;
 3506|  3.46k|	zend_op *opline;
 3507|  3.46k|	uint32_t offset;
 3508|  3.46k|	if (is_this_fetch(var_ast)) {
  ------------------
  |  Branch (3508:6): [True: 2, False: 3.46k]
  ------------------
 3509|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign $this");
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3510|      2|	}
 3511|       |
 3512|  3.46k|	zend_ensure_writable_variable(var_ast);
 3513|       |
 3514|       |	/* Treat $GLOBALS['x'] assignment like assignment to variable. */
 3515|  3.46k|	zend_ast_kind kind = is_global_var_fetch(var_ast) ? ZEND_AST_VAR : var_ast->kind;
  ------------------
  |  Branch (3515:23): [True: 32, False: 3.43k]
  ------------------
 3516|  3.46k|	switch (kind) {
 3517|  2.91k|		case ZEND_AST_VAR:
  ------------------
  |  Branch (3517:3): [True: 2.91k, False: 552]
  ------------------
 3518|  2.91k|			offset = zend_delayed_compile_begin();
 3519|  2.91k|			zend_delayed_compile_var(&var_node, var_ast, BP_VAR_W, false);
  ------------------
  |  | 1075|  2.91k|#define BP_VAR_W			1
  ------------------
 3520|  2.91k|			zend_compile_expr(&expr_node, expr_ast);
 3521|  2.91k|			zend_delayed_compile_end(offset);
 3522|  2.91k|			CG(zend_lineno) = zend_ast_get_lineno(var_ast);
  ------------------
  |  |   35|  2.91k|# define CG(v) (compiler_globals.v)
  ------------------
 3523|  2.91k|			zend_emit_op_tmp(result, ZEND_ASSIGN, &var_node, &expr_node);
  ------------------
  |  |  146|  2.91k|#define ZEND_ASSIGN                          22
  ------------------
 3524|  2.91k|			return;
 3525|     28|		case ZEND_AST_STATIC_PROP:
  ------------------
  |  Branch (3525:3): [True: 28, False: 3.43k]
  ------------------
 3526|     28|			offset = zend_delayed_compile_begin();
 3527|     28|			zend_delayed_compile_var(result, var_ast, BP_VAR_W, false);
  ------------------
  |  | 1075|     28|#define BP_VAR_W			1
  ------------------
 3528|     28|			zend_compile_expr(&expr_node, expr_ast);
 3529|       |
 3530|     28|			opline = zend_delayed_compile_end(offset);
 3531|     28|			opline->opcode = ZEND_ASSIGN_STATIC_PROP;
  ------------------
  |  |  149|     28|#define ZEND_ASSIGN_STATIC_PROP              25
  ------------------
 3532|     28|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|     28|#define IS_TMP_VAR	(1<<1)
  ------------------
 3533|     28|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|     28|#define IS_TMP_VAR	(1<<1)
  ------------------
 3534|       |
 3535|     28|			zend_emit_op_data(&expr_node);
 3536|     28|			return;
 3537|    247|		case ZEND_AST_DIM:
  ------------------
  |  Branch (3537:3): [True: 247, False: 3.21k]
  ------------------
 3538|    247|			offset = zend_delayed_compile_begin();
 3539|    247|			zend_delayed_compile_dim(result, var_ast, BP_VAR_W, /* by_ref */ false);
  ------------------
  |  | 1075|    247|#define BP_VAR_W			1
  ------------------
 3540|    247|			zend_compile_expr_with_potential_assign_to_self(&expr_node, expr_ast, var_ast);
 3541|       |
 3542|    247|			opline = zend_delayed_compile_end(offset);
 3543|    247|			opline->opcode = ZEND_ASSIGN_DIM;
  ------------------
  |  |  147|    247|#define ZEND_ASSIGN_DIM                      23
  ------------------
 3544|    247|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|    247|#define IS_TMP_VAR	(1<<1)
  ------------------
 3545|    247|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|    247|#define IS_TMP_VAR	(1<<1)
  ------------------
 3546|       |
 3547|    247|			opline = zend_emit_op_data(&expr_node);
 3548|    247|			return;
 3549|    181|		case ZEND_AST_PROP:
  ------------------
  |  Branch (3549:3): [True: 181, False: 3.28k]
  ------------------
 3550|    181|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (3550:3): [True: 0, False: 3.46k]
  ------------------
 3551|    181|			offset = zend_delayed_compile_begin();
 3552|    181|			zend_delayed_compile_prop(result, var_ast, BP_VAR_W);
  ------------------
  |  | 1075|    181|#define BP_VAR_W			1
  ------------------
 3553|    181|			zend_compile_expr(&expr_node, expr_ast);
 3554|       |
 3555|    181|			opline = zend_delayed_compile_end(offset);
 3556|    181|			opline->opcode = ZEND_ASSIGN_OBJ;
  ------------------
  |  |  148|    181|#define ZEND_ASSIGN_OBJ                      24
  ------------------
 3557|    181|			opline->result_type = IS_TMP_VAR;
  ------------------
  |  |  865|    181|#define IS_TMP_VAR	(1<<1)
  ------------------
 3558|    181|			result->op_type = IS_TMP_VAR;
  ------------------
  |  |  865|    181|#define IS_TMP_VAR	(1<<1)
  ------------------
 3559|       |
 3560|    181|			zend_emit_op_data(&expr_node);
 3561|    181|			return;
 3562|     88|		case ZEND_AST_ARRAY:
  ------------------
  |  Branch (3562:3): [True: 88, False: 3.37k]
  ------------------
 3563|     88|			if (zend_propagate_list_refs(var_ast)) {
  ------------------
  |  Branch (3563:8): [True: 22, False: 66]
  ------------------
 3564|     22|				if (!zend_is_variable_or_call(expr_ast)) {
  ------------------
  |  Branch (3564:9): [True: 2, False: 20]
  ------------------
 3565|      2|					zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3566|      2|						"Cannot assign reference to non referenceable value");
 3567|     20|				} else {
 3568|     20|					zend_assert_not_short_circuited(expr_ast);
 3569|     20|				}
 3570|       |
 3571|     20|				zend_compile_var(&expr_node, expr_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|     20|#define BP_VAR_W			1
  ------------------
 3572|       |				/* MAKE_REF is usually not necessary for CVs. However, if there are
 3573|       |				 * self-assignments, this forces the RHS to evaluate first. */
 3574|     20|				zend_emit_op(&expr_node, ZEND_MAKE_REF, &expr_node, NULL);
  ------------------
  |  |  262|     20|#define ZEND_MAKE_REF                       140
  ------------------
 3575|     66|			} else {
 3576|     66|				if (expr_ast->kind == ZEND_AST_VAR) {
  ------------------
  |  Branch (3576:9): [True: 9, False: 57]
  ------------------
 3577|       |					/* list($a, $b) = $a should evaluate the right $a first */
 3578|      9|					znode cv_node;
 3579|       |
 3580|      9|					if (zend_try_compile_cv(&cv_node, expr_ast, BP_VAR_R) == FAILURE) {
  ------------------
  |  | 1074|      9|#define BP_VAR_R			0
  ------------------
  |  Branch (3580:10): [True: 0, False: 9]
  ------------------
 3581|      0|						zend_compile_simple_var_no_cv(&expr_node, expr_ast, BP_VAR_R, false);
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
 3582|      9|					} else {
 3583|      9|						zend_emit_op_tmp(&expr_node, ZEND_QM_ASSIGN, &cv_node, NULL);
  ------------------
  |  |  155|      9|#define ZEND_QM_ASSIGN                       31
  ------------------
 3584|      9|					}
 3585|     57|				} else {
 3586|     57|					zend_compile_expr(&expr_node, expr_ast);
 3587|     57|				}
 3588|     66|			}
 3589|       |
 3590|     86|			zend_compile_list_assign(!stmt ? result : NULL, var_ast, &expr_node, var_ast->attr, type);
  ------------------
  |  Branch (3590:29): [True: 21, False: 65]
  ------------------
 3591|     86|			if (stmt) {
  ------------------
  |  Branch (3591:8): [True: 49, False: 37]
  ------------------
 3592|     49|				result->op_type = IS_UNUSED;
  ------------------
  |  |  863|     49|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 3593|     49|			}
 3594|     86|			return;
 3595|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3595:3): [True: 0, False: 3.46k]
  |  Branch (3595:12): [Folded, False: 0]
  |  Branch (3595:12): [Folded, False: 0]
  ------------------
 3596|  3.46k|	}
 3597|  3.46k|}
zend_compile.c:zend_do_free:
  786|  11.0k|{
  787|  11.0k|	if (op1->op_type == IS_TMP_VAR) {
  ------------------
  |  |  865|  11.0k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (787:6): [True: 8.33k, False: 2.74k]
  ------------------
  788|  8.33k|		zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
  ------------------
  |  |   35|  8.33k|# define CG(v) (compiler_globals.v)
  ------------------
              		zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
  ------------------
  |  |   35|  8.33k|# define CG(v) (compiler_globals.v)
  ------------------
  789|       |
  790|  8.84k|		while (opline->opcode == ZEND_END_SILENCE ||
  ------------------
  |  |  181|  17.6k|#define ZEND_END_SILENCE                     58
  ------------------
  |  Branch (790:10): [True: 60, False: 8.78k]
  ------------------
  791|  8.78k|		       opline->opcode == ZEND_OP_DATA) {
  ------------------
  |  |  259|  8.78k|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (791:10): [True: 447, False: 8.33k]
  ------------------
  792|    507|			opline--;
  793|    507|		}
  794|       |
  795|  8.33k|		if (opline->result_type == IS_TMP_VAR && opline->result.var == op1->u.op.var) {
  ------------------
  |  |  865|  16.6k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (795:7): [True: 7.81k, False: 525]
  |  Branch (795:44): [True: 7.81k, False: 0]
  ------------------
  796|  7.81k|			switch (opline->opcode) {
  797|     15|				case ZEND_BOOL:
  ------------------
  |  |  175|     15|#define ZEND_BOOL                            52
  ------------------
  |  Branch (797:5): [True: 15, False: 7.79k]
  ------------------
  798|     76|				case ZEND_BOOL_NOT:
  ------------------
  |  |  138|     76|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (798:5): [True: 61, False: 7.75k]
  ------------------
  799|       |					/* boolean results don't have to be freed */
  800|     76|					return;
  801|      0|				case ZEND_POST_INC_STATIC_PROP:
  ------------------
  |  |  164|      0|#define ZEND_POST_INC_STATIC_PROP            40
  ------------------
  |  Branch (801:5): [True: 0, False: 7.81k]
  ------------------
  802|      0|				case ZEND_POST_DEC_STATIC_PROP:
  ------------------
  |  |  165|      0|#define ZEND_POST_DEC_STATIC_PROP            41
  ------------------
  |  Branch (802:5): [True: 0, False: 7.81k]
  ------------------
  803|      1|				case ZEND_POST_INC_OBJ:
  ------------------
  |  |  256|      1|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (803:5): [True: 1, False: 7.81k]
  ------------------
  804|      2|				case ZEND_POST_DEC_OBJ:
  ------------------
  |  |  257|      2|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (804:5): [True: 1, False: 7.81k]
  ------------------
  805|    116|				case ZEND_POST_INC:
  ------------------
  |  |  160|    116|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (805:5): [True: 114, False: 7.69k]
  ------------------
  806|    120|				case ZEND_POST_DEC:
  ------------------
  |  |  161|    120|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (806:5): [True: 4, False: 7.80k]
  ------------------
  807|       |					/* convert $i++ to ++$i */
  808|    120|					opline->opcode -= 2;
  809|    120|					SET_UNUSED(opline->result);
  ------------------
  |  |   35|    120|#define SET_UNUSED(op) do { \
  |  |   36|    120|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|    120|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|    120|	op.num = (uint32_t) -1; \
  |  |   38|    120|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 120]
  |  |  ------------------
  ------------------
  810|    120|					return;
  811|  7.61k|				default:
  ------------------
  |  Branch (811:5): [True: 7.61k, False: 196]
  ------------------
  812|  7.61k|					if (zend_op_may_elide_result(opline->opcode)) {
  ------------------
  |  Branch (812:10): [True: 6.87k, False: 738]
  ------------------
  813|  6.87k|						SET_UNUSED(opline->result);
  ------------------
  |  |   35|  6.87k|#define SET_UNUSED(op) do { \
  |  |   36|  6.87k|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|  6.87k|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|  6.87k|	op.num = (uint32_t) -1; \
  |  |   38|  6.87k|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 6.87k]
  |  |  ------------------
  ------------------
  814|  6.87k|						return;
  815|  6.87k|					}
  816|    738|					break;
  817|  7.81k|			}
  818|  7.81k|		}
  819|       |
  820|  1.26k|		zend_emit_op(NULL, ZEND_FREE, op1, NULL);
  ------------------
  |  |  193|  1.26k|#define ZEND_FREE                            70
  ------------------
  821|  2.74k|	} else if (op1->op_type == IS_VAR) {
  ------------------
  |  |  866|  2.74k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (821:13): [True: 1.68k, False: 1.06k]
  ------------------
  822|  1.68k|		zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
  ------------------
  |  |   35|  1.68k|# define CG(v) (compiler_globals.v)
  ------------------
              		zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
  ------------------
  |  |   35|  1.68k|# define CG(v) (compiler_globals.v)
  ------------------
  823|  1.68k|		while (opline->opcode == ZEND_END_SILENCE ||
  ------------------
  |  |  181|  3.36k|#define ZEND_END_SILENCE                     58
  ------------------
  |  Branch (823:10): [True: 0, False: 1.68k]
  ------------------
  824|  1.68k|				opline->opcode == ZEND_EXT_FCALL_END ||
  ------------------
  |  |  225|  3.36k|#define ZEND_EXT_FCALL_END                  103
  ------------------
  |  Branch (824:5): [True: 0, False: 1.68k]
  ------------------
  825|  1.68k|				opline->opcode == ZEND_OP_DATA) {
  ------------------
  |  |  259|  1.68k|#define ZEND_OP_DATA                        137
  ------------------
  |  Branch (825:5): [True: 0, False: 1.68k]
  ------------------
  826|      0|			opline--;
  827|      0|		}
  828|  1.68k|		if (opline->result_type == IS_VAR
  ------------------
  |  |  866|  3.36k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (828:7): [True: 1.66k, False: 16]
  ------------------
  829|  1.66k|			&& opline->result.var == op1->u.op.var) {
  ------------------
  |  Branch (829:7): [True: 1.66k, False: 0]
  ------------------
  830|  1.66k|			if (opline->opcode == ZEND_FETCH_THIS) {
  ------------------
  |  |  306|  1.66k|#define ZEND_FETCH_THIS                     184
  ------------------
  |  Branch (830:8): [True: 0, False: 1.66k]
  ------------------
  831|      0|				opline->opcode = ZEND_NOP;
  ------------------
  |  |  124|      0|#define ZEND_NOP                              0
  ------------------
  832|      0|			}
  833|  1.66k|			if (!ZEND_OP_IS_FRAMELESS_ICALL(opline->opcode)) {
  ------------------
  |  |   36|  1.66k|#define ZEND_OP_IS_FRAMELESS_ICALL(opcode) ((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
  |  |  ------------------
  |  |  |  |  326|  3.32k|#define ZEND_FRAMELESS_ICALL_0              204
  |  |  ------------------
  |  |               #define ZEND_OP_IS_FRAMELESS_ICALL(opcode) ((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
  |  |  ------------------
  |  |  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  |  |  ------------------
  |  |  |  Branch (36:45): [True: 0, False: 1.66k]
  |  |  |  Branch (36:83): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  834|  1.66k|				SET_UNUSED(opline->result);
  ------------------
  |  |   35|  1.66k|#define SET_UNUSED(op) do { \
  |  |   36|  1.66k|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|  1.66k|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|  1.66k|	op.num = (uint32_t) -1; \
  |  |   38|  1.66k|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 1.66k]
  |  |  ------------------
  ------------------
  835|  1.66k|			} else {
  836|       |				/* Frameless calls usually use the return value, so always emit a free. This should be
  837|       |				 * faster than checking RETURN_VALUE_USED inside the handler. */
  838|      0|				zend_emit_op(NULL, ZEND_FREE, op1, NULL);
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  839|      0|			}
  840|  1.66k|		} else {
  841|     73|			while (opline >= CG(active_op_array)->opcodes) {
  ------------------
  |  |   35|     73|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (841:11): [True: 73, False: 0]
  ------------------
  842|     73|				if ((opline->opcode == ZEND_FETCH_LIST_R ||
  ------------------
  |  |  220|    146|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (842:10): [True: 1, False: 72]
  ------------------
  843|     72|				     opline->opcode == ZEND_FETCH_LIST_W ||
  ------------------
  |  |  277|    145|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (843:10): [True: 17, False: 55]
  ------------------
  844|     55|				     opline->opcode == ZEND_EXT_STMT) &&
  ------------------
  |  |  223|     55|#define ZEND_EXT_STMT                       101
  ------------------
  |  Branch (844:10): [True: 0, False: 55]
  ------------------
  845|     18|				    opline->op1_type == IS_VAR &&
  ------------------
  |  |  866|     91|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (845:9): [True: 18, False: 0]
  ------------------
  846|     18|				    opline->op1.var == op1->u.op.var) {
  ------------------
  |  Branch (846:9): [True: 16, False: 2]
  ------------------
  847|     16|					zend_emit_op(NULL, ZEND_FREE, op1, NULL);
  ------------------
  |  |  193|     16|#define ZEND_FREE                            70
  ------------------
  848|     16|					return;
  849|     16|				}
  850|     57|				if (opline->result_type == IS_VAR
  ------------------
  |  |  866|    114|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (850:9): [True: 28, False: 29]
  ------------------
  851|     28|					&& opline->result.var == op1->u.op.var) {
  ------------------
  |  Branch (851:9): [True: 0, False: 28]
  ------------------
  852|      0|					if (opline->opcode == ZEND_NEW) {
  ------------------
  |  |  191|      0|#define ZEND_NEW                             68
  ------------------
  |  Branch (852:10): [True: 0, False: 0]
  ------------------
  853|      0|						zend_emit_op(NULL, ZEND_FREE, op1, NULL);
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  854|      0|					}
  855|      0|					break;
  856|      0|				}
  857|     57|				opline--;
  858|     57|			}
  859|     16|		}
  860|  1.68k|	} else if (op1->op_type == IS_CONST) {
  ------------------
  |  |  864|  1.06k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (860:13): [True: 973, False: 96]
  ------------------
  861|       |		/* Destroy value without using GC: When opcache moves arrays into SHM it will
  862|       |		 * free the zend_array structure, so references to it from outside the op array
  863|       |		 * become invalid. GC would cause such a reference in the root buffer. */
  864|    973|		zval_ptr_dtor_nogc(&op1->u.constant);
  865|    973|	}
  866|  11.0k|}
zend_compile.c:zend_compile_assign_ref:
 3601|    278|{
 3602|    278|	zend_ast *target_ast = ast->child[0];
 3603|    278|	zend_ast *source_ast = ast->child[1];
 3604|       |
 3605|    278|	znode target_node, source_node;
 3606|    278|	zend_op *opline;
 3607|    278|	uint32_t offset, flags;
 3608|       |
 3609|    278|	if (is_this_fetch(target_ast)) {
  ------------------
  |  Branch (3609:6): [True: 1, False: 277]
  ------------------
 3610|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot re-assign $this");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3611|      1|	}
 3612|    277|	zend_ensure_writable_variable(target_ast);
 3613|    277|	zend_assert_not_short_circuited(source_ast);
 3614|    277|	if (is_globals_fetch(source_ast)) {
  ------------------
  |  Branch (3614:6): [True: 1, False: 276]
  ------------------
 3615|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot acquire reference to $GLOBALS");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3616|      1|	}
 3617|       |
 3618|    276|	offset = zend_delayed_compile_begin();
 3619|    276|	zend_delayed_compile_var(&target_node, target_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|    276|#define BP_VAR_W			1
  ------------------
 3620|    276|	zend_compile_var(&source_node, source_ast, BP_VAR_W, true);
  ------------------
  |  | 1075|    276|#define BP_VAR_W			1
  ------------------
 3621|       |
 3622|    276|	if ((target_ast->kind != ZEND_AST_VAR
  ------------------
  |  Branch (3622:7): [True: 126, False: 150]
  ------------------
 3623|    150|	  || target_ast->child[0]->kind != ZEND_AST_ZVAL)
  ------------------
  |  Branch (3623:7): [True: 15, False: 135]
  ------------------
 3624|    139|	 && source_ast->kind != ZEND_AST_ZNODE
  ------------------
  |  Branch (3624:6): [True: 116, False: 23]
  ------------------
 3625|    116|	 && source_node.op_type != IS_CV) {
  ------------------
  |  |  867|    116|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (3625:6): [True: 63, False: 53]
  ------------------
 3626|       |		/* Both LHS and RHS expressions may modify the same data structure,
 3627|       |		 * and the modification during RHS evaluation may dangle the pointer
 3628|       |		 * to the result of the LHS evaluation.
 3629|       |		 * Use MAKE_REF instruction to replace direct pointer with REFERENCE.
 3630|       |		 * See: Bug #71539
 3631|       |		 */
 3632|     63|		zend_emit_op(&source_node, ZEND_MAKE_REF, &source_node, NULL);
  ------------------
  |  |  262|     63|#define ZEND_MAKE_REF                       140
  ------------------
 3633|     63|	}
 3634|       |
 3635|    276|	opline = zend_delayed_compile_end(offset);
 3636|       |
 3637|    276|	if (source_node.op_type != IS_VAR && zend_is_call(source_ast)) {
  ------------------
  |  |  866|    552|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (3637:6): [True: 126, False: 150]
  |  Branch (3637:39): [True: 1, False: 125]
  ------------------
 3638|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot use result of built-in function in write context");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3639|      1|	}
 3640|       |
 3641|    275|	flags = zend_is_call(source_ast) ? ZEND_RETURNS_FUNCTION : 0;
  ------------------
  |  | 1206|     16|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (3641:10): [True: 16, False: 259]
  ------------------
 3642|       |
 3643|    275|	if (opline && opline->opcode == ZEND_FETCH_OBJ_W) {
  ------------------
  |  |  207|    139|#define ZEND_FETCH_OBJ_W                     85
  ------------------
  |  Branch (3643:6): [True: 139, False: 136]
  |  Branch (3643:16): [True: 38, False: 101]
  ------------------
 3644|     38|		opline->opcode = ZEND_ASSIGN_OBJ_REF;
  ------------------
  |  |  156|     38|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
 3645|     38|		opline->extended_value &= ~ZEND_FETCH_REF;
  ------------------
  |  | 1097|     38|#define ZEND_FETCH_REF			1
  ------------------
 3646|     38|		opline->extended_value |= flags;
 3647|     38|		if (result) {
  ------------------
  |  Branch (3647:7): [True: 2, False: 36]
  ------------------
 3648|      2|			*result = target_node;
 3649|     36|		} else {
 3650|     36|			SET_UNUSED(opline->result);
  ------------------
  |  |   35|     36|#define SET_UNUSED(op) do { \
  |  |   36|     36|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|     36|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|     36|	op.num = (uint32_t) -1; \
  |  |   38|     36|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 36]
  |  |  ------------------
  ------------------
 3651|     36|		}
 3652|     38|		zend_emit_op_data(&source_node);
 3653|    237|	} else if (opline && opline->opcode == ZEND_FETCH_STATIC_PROP_W) {
  ------------------
  |  |  296|    101|#define ZEND_FETCH_STATIC_PROP_W            174
  ------------------
  |  Branch (3653:13): [True: 101, False: 136]
  |  Branch (3653:23): [True: 10, False: 91]
  ------------------
 3654|     10|		opline->opcode = ZEND_ASSIGN_STATIC_PROP_REF;
  ------------------
  |  |  157|     10|#define ZEND_ASSIGN_STATIC_PROP_REF          33
  ------------------
 3655|     10|		opline->extended_value &= ~ZEND_FETCH_REF;
  ------------------
  |  | 1097|     10|#define ZEND_FETCH_REF			1
  ------------------
 3656|     10|		opline->extended_value |= flags;
 3657|     10|		if (result) {
  ------------------
  |  Branch (3657:7): [True: 6, False: 4]
  ------------------
 3658|      6|			*result = target_node;
 3659|      6|		} else {
 3660|      4|			SET_UNUSED(opline->result);
  ------------------
  |  |   35|      4|#define SET_UNUSED(op) do { \
  |  |   36|      4|	op ## _type = IS_UNUSED; \
  |  |  ------------------
  |  |  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |   37|      4|	op.num = (uint32_t) -1; \
  |  |   38|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (38:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3661|      4|		}
 3662|     10|		zend_emit_op_data(&source_node);
 3663|    227|	} else {
 3664|    227|		opline = zend_emit_op(result, ZEND_ASSIGN_REF, &target_node, &source_node);
  ------------------
  |  |  154|    227|#define ZEND_ASSIGN_REF                      30
  ------------------
 3665|    227|		opline->extended_value = flags;
 3666|    227|	}
 3667|       |
 3668|    275|	if (result && (type == BP_VAR_R || type == BP_VAR_IS)) {
  ------------------
  |  | 1074|     84|#define BP_VAR_R			0
  ------------------
              	if (result && (type == BP_VAR_R || type == BP_VAR_IS)) {
  ------------------
  |  | 1077|      2|#define BP_VAR_IS			3
  ------------------
  |  Branch (3668:6): [True: 42, False: 233]
  |  Branch (3668:17): [True: 40, False: 2]
  |  Branch (3668:37): [True: 0, False: 2]
  ------------------
 3669|       |		/* Deref. */
 3670|     40|		znode tmp_result = *result;
 3671|     40|		zend_emit_op_tmp(result, ZEND_QM_ASSIGN, &tmp_result, NULL);
  ------------------
  |  |  155|     40|#define ZEND_QM_ASSIGN                       31
  ------------------
 3672|     40|	}
 3673|    275|}
zend_compile.c:zend_emit_tick:
 2346|     25|{
 2347|     25|	zend_op *opline;
 2348|       |
 2349|       |	/* This prevents a double TICK generated by the parser statement of "declare()" */
 2350|     25|	if (CG(active_op_array)->last && CG(active_op_array)->opcodes[CG(active_op_array)->last - 1].opcode == ZEND_TICKS) {
  ------------------
  |  |   35|     25|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->last && CG(active_op_array)->opcodes[CG(active_op_array)->last - 1].opcode == ZEND_TICKS) {
  ------------------
  |  |   35|     19|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->last && CG(active_op_array)->opcodes[CG(active_op_array)->last - 1].opcode == ZEND_TICKS) {
  ------------------
  |  |   35|     19|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(active_op_array)->last && CG(active_op_array)->opcodes[CG(active_op_array)->last - 1].opcode == ZEND_TICKS) {
  ------------------
  |  |  227|     19|#define ZEND_TICKS                          105
  ------------------
  |  Branch (2350:6): [True: 19, False: 6]
  |  Branch (2350:35): [True: 1, False: 18]
  ------------------
 2351|      1|		return;
 2352|      1|	}
 2353|       |
 2354|     24|	opline = get_next_op();
 2355|       |
 2356|     24|	opline->opcode = ZEND_TICKS;
  ------------------
  |  |  227|     24|#define ZEND_TICKS                          105
  ------------------
 2357|     24|	opline->extended_value = FC(declarables).ticks;
  ------------------
  |  |   60|     24|#define FC(member) (CG(file_context).member)
  |  |  ------------------
  |  |  |  |   35|     24|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 2358|     24|}
zend_compile.c:zend_eval_const_expr:
12404|  5.76k|{
12405|  5.76k|	zend_ast *ast = *ast_ptr;
12406|  5.76k|	zval result;
12407|       |
12408|  5.76k|	if (!ast) {
  ------------------
  |  Branch (12408:6): [True: 1.36k, False: 4.40k]
  ------------------
12409|  1.36k|		return;
12410|  1.36k|	}
12411|       |
12412|  4.40k|	zend_check_stack_limit();
12413|       |
12414|  4.40k|	switch (ast->kind) {
12415|    203|		case ZEND_AST_BINARY_OP:
  ------------------
  |  Branch (12415:3): [True: 203, False: 4.19k]
  ------------------
12416|    203|			zend_eval_const_expr(&ast->child[0]);
12417|    203|			zend_eval_const_expr(&ast->child[1]);
12418|    203|			if (ast->child[0]->kind != ZEND_AST_ZVAL || ast->child[1]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12418:8): [True: 112, False: 91]
  |  Branch (12418:48): [True: 20, False: 71]
  ------------------
12419|    132|				return;
12420|    132|			}
12421|       |
12422|     71|			if (!zend_try_ct_eval_binary_op(&result, ast->attr,
  ------------------
  |  Branch (12422:8): [True: 18, False: 53]
  ------------------
12423|     71|					zend_ast_get_zval(ast->child[0]), zend_ast_get_zval(ast->child[1]))
12424|     71|			) {
12425|     18|				return;
12426|     18|			}
12427|     53|			break;
12428|     53|		case ZEND_AST_GREATER:
  ------------------
  |  Branch (12428:3): [True: 16, False: 4.38k]
  ------------------
12429|     16|		case ZEND_AST_GREATER_EQUAL:
  ------------------
  |  Branch (12429:3): [True: 0, False: 4.40k]
  ------------------
12430|     16|			zend_eval_const_expr(&ast->child[0]);
12431|     16|			zend_eval_const_expr(&ast->child[1]);
12432|     16|			if (ast->child[0]->kind != ZEND_AST_ZVAL || ast->child[1]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12432:8): [True: 8, False: 8]
  |  Branch (12432:48): [True: 2, False: 6]
  ------------------
12433|     10|				return;
12434|     10|			}
12435|       |
12436|      6|			zend_ct_eval_greater(&result, ast->kind,
12437|      6|				zend_ast_get_zval(ast->child[0]), zend_ast_get_zval(ast->child[1]));
12438|      6|			break;
12439|     15|		case ZEND_AST_AND:
  ------------------
  |  Branch (12439:3): [True: 15, False: 4.38k]
  ------------------
12440|     18|		case ZEND_AST_OR:
  ------------------
  |  Branch (12440:3): [True: 3, False: 4.39k]
  ------------------
12441|     18|		{
12442|     18|			bool child0_is_true, child1_is_true;
12443|     18|			zend_eval_const_expr(&ast->child[0]);
12444|     18|			zend_eval_const_expr(&ast->child[1]);
12445|     18|			if (ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12445:8): [True: 7, False: 11]
  ------------------
12446|      7|				return;
12447|      7|			}
12448|       |
12449|     11|			child0_is_true = zend_is_true(zend_ast_get_zval(ast->child[0]));
12450|     11|			if (child0_is_true == (ast->kind == ZEND_AST_OR)) {
  ------------------
  |  Branch (12450:8): [True: 4, False: 7]
  ------------------
12451|      4|				ZVAL_BOOL(&result, ast->kind == ZEND_AST_OR);
  ------------------
  |  | 1071|      4|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      4|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      4|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      8|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 4]
  |  |  ------------------
  |  | 1074|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
12452|      4|				break;
12453|      4|			}
12454|       |
12455|      7|			if (ast->child[1]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12455:8): [True: 6, False: 1]
  ------------------
12456|      6|				return;
12457|      6|			}
12458|       |
12459|      1|			child1_is_true = zend_is_true(zend_ast_get_zval(ast->child[1]));
12460|      1|			if (ast->kind == ZEND_AST_OR) {
  ------------------
  |  Branch (12460:8): [True: 0, False: 1]
  ------------------
12461|      0|				ZVAL_BOOL(&result, child0_is_true || child1_is_true);
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:5): [True: 0, False: 0]
  |  |  |  Branch (1073:5): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12462|      1|			} else {
12463|      1|				ZVAL_BOOL(&result, child0_is_true && child1_is_true);
  ------------------
  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:5): [True: 1, False: 0]
  |  |  |  Branch (1073:5): [True: 0, False: 1]
  |  |  ------------------
  |  | 1074|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
12464|      1|			}
12465|      1|			break;
12466|      7|		}
12467|    409|		case ZEND_AST_UNARY_OP:
  ------------------
  |  Branch (12467:3): [True: 409, False: 3.99k]
  ------------------
12468|    409|			zend_eval_const_expr(&ast->child[0]);
12469|    409|			if (ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12469:8): [True: 382, False: 27]
  ------------------
12470|    382|				return;
12471|    382|			}
12472|       |
12473|     27|			if (!zend_try_ct_eval_unary_op(&result, ast->attr, zend_ast_get_zval(ast->child[0]))) {
  ------------------
  |  Branch (12473:8): [True: 0, False: 27]
  ------------------
12474|      0|				return;
12475|      0|			}
12476|     27|			break;
12477|     27|		case ZEND_AST_UNARY_PLUS:
  ------------------
  |  Branch (12477:3): [True: 25, False: 4.37k]
  ------------------
12478|     69|		case ZEND_AST_UNARY_MINUS:
  ------------------
  |  Branch (12478:3): [True: 44, False: 4.35k]
  ------------------
12479|     69|			zend_eval_const_expr(&ast->child[0]);
12480|     69|			if (ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12480:8): [True: 22, False: 47]
  ------------------
12481|     22|				return;
12482|     22|			}
12483|       |
12484|     47|			if (!zend_try_ct_eval_unary_pm(&result, ast->kind, zend_ast_get_zval(ast->child[0]))) {
  ------------------
  |  Branch (12484:8): [True: 10, False: 37]
  ------------------
12485|     10|				return;
12486|     10|			}
12487|     37|			break;
12488|     37|		case ZEND_AST_COALESCE:
  ------------------
  |  Branch (12488:3): [True: 2, False: 4.39k]
  ------------------
12489|       |			/* Set isset fetch indicator here, opcache disallows runtime altering of the AST */
12490|      2|			if (ast->child[0]->kind == ZEND_AST_DIM) {
  ------------------
  |  Branch (12490:8): [True: 1, False: 1]
  ------------------
12491|      1|				ast->child[0]->attr |= ZEND_DIM_IS;
  ------------------
  |  | 1138|      1|#define ZEND_DIM_IS					(1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */
  ------------------
12492|      1|			}
12493|      2|			zend_eval_const_expr(&ast->child[0]);
12494|       |
12495|      2|			if (ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12495:8): [True: 0, False: 2]
  ------------------
12496|       |				/* ensure everything was compile-time evaluated at least once */
12497|      0|				zend_eval_const_expr(&ast->child[1]);
12498|      0|				return;
12499|      0|			}
12500|       |
12501|      2|			if (Z_TYPE_P(zend_ast_get_zval(ast->child[0])) == IS_NULL) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zend_ast_get_zval(ast->child[0])) == IS_NULL) {
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (12501:8): [True: 1, False: 1]
  ------------------
12502|      1|				zend_eval_const_expr(&ast->child[1]);
12503|      1|				*ast_ptr = ast->child[1];
12504|      1|				ast->child[1] = NULL;
12505|      1|				zend_ast_destroy(ast);
12506|      1|			} else {
12507|      1|				*ast_ptr = ast->child[0];
12508|      1|				ast->child[0] = NULL;
12509|      1|				zend_ast_destroy(ast);
12510|      1|			}
12511|      2|			return;
12512|      3|		case ZEND_AST_CONDITIONAL:
  ------------------
  |  Branch (12512:3): [True: 3, False: 4.39k]
  ------------------
12513|      3|		{
12514|      3|			zend_ast **child, *child_ast;
12515|      3|			zend_eval_const_expr(&ast->child[0]);
12516|      3|			if (ast->child[0]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12516:8): [True: 3, False: 0]
  ------------------
12517|       |				/* ensure everything was compile-time evaluated at least once */
12518|      3|				if (ast->child[1]) {
  ------------------
  |  Branch (12518:9): [True: 2, False: 1]
  ------------------
12519|      2|					zend_eval_const_expr(&ast->child[1]);
12520|      2|				}
12521|      3|				zend_eval_const_expr(&ast->child[2]);
12522|      3|				return;
12523|      3|			}
12524|       |
12525|      0|			child = &ast->child[2 - zend_is_true(zend_ast_get_zval(ast->child[0]))];
12526|      0|			if (*child == NULL) {
  ------------------
  |  Branch (12526:8): [True: 0, False: 0]
  ------------------
12527|      0|				child--;
12528|      0|			}
12529|      0|			child_ast = *child;
12530|      0|			*child = NULL;
12531|      0|			zend_ast_destroy(ast);
12532|      0|			*ast_ptr = child_ast;
12533|      0|			zend_eval_const_expr(ast_ptr);
12534|      0|			return;
12535|      3|		}
12536|     35|		case ZEND_AST_DIM:
  ------------------
  |  Branch (12536:3): [True: 35, False: 4.36k]
  ------------------
12537|     35|		{
12538|       |			/* constant expression should be always read context ... */
12539|     35|			const zval *container, *dim;
12540|       |
12541|     35|			if (ast->child[1] == NULL) {
  ------------------
  |  Branch (12541:8): [True: 3, False: 32]
  ------------------
12542|      3|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot use [] for reading");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
12543|      3|			}
12544|       |
12545|       |			/* Set isset fetch indicator here, opcache disallows runtime altering of the AST */
12546|     32|			if ((ast->attr & ZEND_DIM_IS) && ast->child[0]->kind == ZEND_AST_DIM) {
  ------------------
  |  | 1138|     32|#define ZEND_DIM_IS					(1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */
  ------------------
  |  Branch (12546:8): [True: 0, False: 32]
  |  Branch (12546:37): [True: 0, False: 0]
  ------------------
12547|      0|				ast->child[0]->attr |= ZEND_DIM_IS;
  ------------------
  |  | 1138|      0|#define ZEND_DIM_IS					(1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */
  ------------------
12548|      0|			}
12549|       |
12550|     32|			zend_eval_const_expr(&ast->child[0]);
12551|     32|			zend_eval_const_expr(&ast->child[1]);
12552|     32|			if (ast->child[0]->kind != ZEND_AST_ZVAL || ast->child[1]->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12552:8): [True: 13, False: 19]
  |  Branch (12552:48): [True: 8, False: 11]
  ------------------
12553|     21|				return;
12554|     21|			}
12555|       |
12556|     11|			container = zend_ast_get_zval(ast->child[0]);
12557|     11|			dim = zend_ast_get_zval(ast->child[1]);
12558|       |
12559|     11|			if (Z_TYPE_P(container) == IS_ARRAY) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(container) == IS_ARRAY) {
  ------------------
  |  |  613|     11|#define IS_ARRAY					7
  ------------------
  |  Branch (12559:8): [True: 4, False: 7]
  ------------------
12560|      4|				zval *el;
12561|      4|				if (Z_TYPE_P(dim) == IS_LONG) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(dim) == IS_LONG) {
  ------------------
  |  |  610|      4|#define IS_LONG						4
  ------------------
  |  Branch (12561:9): [True: 1, False: 3]
  ------------------
12562|      1|					el = zend_hash_index_find(Z_ARR_P(container), Z_LVAL_P(dim));
  ------------------
  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
              					el = zend_hash_index_find(Z_ARR_P(container), Z_LVAL_P(dim));
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
12563|      1|					if (el) {
  ------------------
  |  Branch (12563:10): [True: 0, False: 1]
  ------------------
12564|      0|						ZVAL_COPY(&result, el);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12565|      1|					} else {
12566|      1|						return;
12567|      1|					}
12568|      3|				} else if (Z_TYPE_P(dim) == IS_STRING) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(dim) == IS_STRING) {
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (12568:16): [True: 2, False: 1]
  ------------------
12569|      2|					el = zend_symtable_find(Z_ARR_P(container), Z_STR_P(dim));
  ------------------
  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
              					el = zend_symtable_find(Z_ARR_P(container), Z_STR_P(dim));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12570|      2|					if (el) {
  ------------------
  |  Branch (12570:10): [True: 1, False: 1]
  ------------------
12571|      1|						ZVAL_COPY(&result, el);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
12572|      1|					} else {
12573|      1|						return;
12574|      1|					}
12575|      2|				} else {
12576|      1|					return; /* warning... handle at runtime */
12577|      1|				}
12578|      7|			} else if (Z_TYPE_P(container) == IS_STRING) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(container) == IS_STRING) {
  ------------------
  |  |  612|      7|#define IS_STRING					6
  ------------------
  |  Branch (12578:15): [True: 6, False: 1]
  ------------------
12579|      6|				zend_long offset;
12580|      6|				uint8_t c;
12581|      6|				if (Z_TYPE_P(dim) == IS_LONG) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(dim) == IS_LONG) {
  ------------------
  |  |  610|      6|#define IS_LONG						4
  ------------------
  |  Branch (12581:9): [True: 6, False: 0]
  ------------------
12582|      6|					offset = Z_LVAL_P(dim);
  ------------------
  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
12583|      6|				} else if (Z_TYPE_P(dim) != IS_STRING || is_numeric_string(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL, 1) != IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(dim) != IS_STRING || is_numeric_string(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL, 1) != IS_LONG) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
              				} else if (Z_TYPE_P(dim) != IS_STRING || is_numeric_string(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL, 1) != IS_LONG) {
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(dim) != IS_STRING || is_numeric_string(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL, 1) != IS_LONG) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(dim) != IS_STRING || is_numeric_string(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL, 1) != IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (12583:16): [True: 0, False: 0]
  |  Branch (12583:46): [True: 0, False: 0]
  ------------------
12584|      0|					return;
12585|      0|				}
12586|      6|				if (offset < 0 || (size_t)offset >= Z_STRLEN_P(container)) {
  ------------------
  |  |  988|      6|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      6|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12586:9): [True: 0, False: 6]
  |  Branch (12586:23): [True: 0, False: 6]
  ------------------
12587|      0|					return;
12588|      0|				}
12589|      6|				c = (uint8_t) Z_STRVAL_P(container)[offset];
  ------------------
  |  |  985|      6|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      6|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12590|      6|				ZVAL_CHAR(&result, c);
  ------------------
  |  |  989|      6|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      6|		char _c = (c);                          \
  |  |  991|      6|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      6|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      6|		zval *__z = (z);							\
  |  |  |  | 1100|      6|		zend_string *__s = (s);						\
  |  |  |  | 1101|      6|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      6|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      6|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
12591|      6|			} else if (Z_TYPE_P(container) <= IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(container) <= IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (12591:15): [True: 1, False: 0]
  ------------------
12592|      1|				return; /* warning... handle at runtime */
12593|      1|			} else {
12594|      0|				return;
12595|      0|			}
12596|      7|			break;
12597|     11|		}
12598|    238|		case ZEND_AST_ARRAY:
  ------------------
  |  Branch (12598:3): [True: 238, False: 4.16k]
  ------------------
12599|    238|			if (!zend_try_ct_eval_array(&result, ast)) {
  ------------------
  |  Branch (12599:8): [True: 47, False: 191]
  ------------------
12600|     47|				return;
12601|     47|			}
12602|    191|			break;
12603|    191|		case ZEND_AST_MAGIC_CONST:
  ------------------
  |  Branch (12603:3): [True: 17, False: 4.38k]
  ------------------
12604|     17|			if (!zend_try_ct_eval_magic_const(&result, ast)) {
  ------------------
  |  Branch (12604:8): [True: 0, False: 17]
  ------------------
12605|      0|				return;
12606|      0|			}
12607|     17|			break;
12608|    296|		case ZEND_AST_CONST:
  ------------------
  |  Branch (12608:3): [True: 296, False: 4.10k]
  ------------------
12609|    296|		{
12610|    296|			zend_ast *name_ast = ast->child[0];
12611|    296|			bool is_fully_qualified;
12612|    296|			zend_string *resolved_name = zend_resolve_const_name(
12613|    296|				zend_ast_get_str(name_ast), name_ast->attr, &is_fully_qualified);
12614|       |
12615|    296|			if (!zend_try_ct_eval_const(&result, resolved_name, is_fully_qualified)) {
  ------------------
  |  Branch (12615:8): [True: 216, False: 80]
  ------------------
12616|    216|				zend_string_release_ex(resolved_name, 0);
12617|    216|				return;
12618|    216|			}
12619|       |
12620|     80|			zend_string_release_ex(resolved_name, 0);
12621|     80|			break;
12622|    296|		}
12623|     84|		case ZEND_AST_CLASS_CONST:
  ------------------
  |  Branch (12623:3): [True: 84, False: 4.31k]
  ------------------
12624|     84|		{
12625|     84|			zend_ast *class_ast;
12626|     84|			zend_ast *name_ast;
12627|     84|			zend_string *resolved_name;
12628|       |
12629|     84|			zend_eval_const_expr(&ast->child[0]);
12630|     84|			zend_eval_const_expr(&ast->child[1]);
12631|       |
12632|     84|			if (UNEXPECTED(ast->child[1]->kind != ZEND_AST_ZVAL
  ------------------
  |  |  457|    163|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 78]
  |  |  |  Branch (457:52): [True: 5, False: 79]
  |  |  |  Branch (457:52): [True: 1, False: 78]
  |  |  ------------------
  ------------------
12633|     84|				|| Z_TYPE_P(zend_ast_get_zval(ast->child[1])) != IS_STRING)) {
12634|      6|				return;
12635|      6|			}
12636|       |
12637|     78|			class_ast = ast->child[0];
12638|     78|			name_ast = ast->child[1];
12639|       |
12640|     78|			if (class_ast->kind != ZEND_AST_ZVAL || name_ast->kind != ZEND_AST_ZVAL) {
  ------------------
  |  Branch (12640:8): [True: 14, False: 64]
  |  Branch (12640:44): [True: 0, False: 64]
  ------------------
12641|     14|				return;
12642|     14|			}
12643|       |
12644|     64|			resolved_name = zend_resolve_class_name_ast(class_ast);
12645|     64|			if (!zend_try_ct_eval_class_const(&result, resolved_name, zend_ast_get_str(name_ast))) {
  ------------------
  |  Branch (12645:8): [True: 59, False: 5]
  ------------------
12646|     59|				zend_string_release_ex(resolved_name, 0);
12647|     59|				return;
12648|     59|			}
12649|       |
12650|      5|			zend_string_release_ex(resolved_name, 0);
12651|      5|			break;
12652|     64|		}
12653|     11|		case ZEND_AST_CLASS_NAME:
  ------------------
  |  Branch (12653:3): [True: 11, False: 4.39k]
  ------------------
12654|     11|		{
12655|     11|			zend_ast *class_ast = ast->child[0];
12656|     11|			if (!zend_try_compile_const_expr_resolve_class_name(&result, class_ast)) {
  ------------------
  |  Branch (12656:8): [True: 5, False: 6]
  ------------------
12657|      5|				return;
12658|      5|			}
12659|      6|			break;
12660|     11|		}
12661|       |		// TODO: We should probably use zend_ast_apply to recursively walk nodes without
12662|       |		// special handling. It is required that all nodes that are part of a const expr
12663|       |		// are visited. Probably we should be distinguishing evaluation of const expr and
12664|       |		// normal exprs here.
12665|     69|		case ZEND_AST_ARG_LIST:
  ------------------
  |  Branch (12665:3): [True: 69, False: 4.33k]
  ------------------
12666|     69|		{
12667|     69|			zend_ast_list *list = zend_ast_get_list(ast);
12668|     74|			for (uint32_t i = 0; i < list->children; i++) {
  ------------------
  |  Branch (12668:25): [True: 5, False: 69]
  ------------------
12669|      5|				zend_eval_const_expr(&list->child[i]);
12670|      5|			}
12671|     69|			return;
12672|     11|		}
12673|     70|		case ZEND_AST_NEW:
  ------------------
  |  Branch (12673:3): [True: 70, False: 4.33k]
  ------------------
12674|     70|			zend_eval_const_expr(&ast->child[0]);
12675|     70|			zend_eval_const_expr(&ast->child[1]);
12676|     70|			return;
12677|      1|		case ZEND_AST_NAMED_ARG:
  ------------------
  |  Branch (12677:3): [True: 1, False: 4.40k]
  ------------------
12678|      1|			zend_eval_const_expr(&ast->child[1]);
12679|      1|			return;
12680|    123|		case ZEND_AST_CONST_ENUM_INIT:
  ------------------
  |  Branch (12680:3): [True: 123, False: 4.27k]
  ------------------
12681|    123|			zend_eval_const_expr(&ast->child[3]);
12682|    123|			return;
12683|     26|		case ZEND_AST_PROP:
  ------------------
  |  Branch (12683:3): [True: 26, False: 4.37k]
  ------------------
12684|     31|		case ZEND_AST_NULLSAFE_PROP:
  ------------------
  |  Branch (12684:3): [True: 5, False: 4.39k]
  ------------------
12685|     31|			zend_eval_const_expr(&ast->child[0]);
12686|     31|			zend_eval_const_expr(&ast->child[1]);
12687|     31|			return;
12688|     20|		case ZEND_AST_CAST:
  ------------------
  |  Branch (12688:3): [True: 20, False: 4.38k]
  ------------------
12689|     20|			if (ast->attr == IS_NULL) {
  ------------------
  |  |  607|     20|#define IS_NULL						1
  ------------------
  |  Branch (12689:8): [True: 1, False: 19]
  ------------------
12690|      1|				zend_error_noreturn(E_COMPILE_ERROR, "The (unset) cast is no longer supported");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
12691|      1|			}
12692|     19|			zend_eval_const_expr(&ast->child[0]);
12693|     19|			if (ast->child[0]->kind == ZEND_AST_ZVAL
  ------------------
  |  Branch (12693:8): [True: 6, False: 13]
  ------------------
12694|      6|			 && zend_try_ct_eval_cast(&result, ast->attr, zend_ast_get_zval(ast->child[0]))) {
  ------------------
  |  Branch (12694:8): [True: 2, False: 4]
  ------------------
12695|      2|				break;
12696|      2|			}
12697|     17|			return;
12698|  2.68k|		default:
  ------------------
  |  Branch (12698:3): [True: 2.68k, False: 1.71k]
  ------------------
12699|  2.68k|			return;
12700|  4.40k|	}
12701|       |
12702|    431|	zend_ast_destroy(ast);
12703|    431|	*ast_ptr = zend_ast_create_zval(&result);
12704|    431|}

var_unserializer.c:zend_get_unmangled_property_name:
  998|      1|static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) {
  999|      1|	const char *class_name, *prop_name;
 1000|       |	zend_unmangle_property_name(mangled_prop, &class_name, &prop_name);
  ------------------
  |  |  995|      1|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
 1001|      1|	return prop_name;
 1002|      1|}
zend_API.c:zend_visibility_to_set_visibility:
  425|     17|{
  426|     17|	switch (visibility) {
  427|     12|		case ZEND_ACC_PUBLIC:
  ------------------
  |  |  219|     12|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (427:3): [True: 12, False: 5]
  ------------------
  428|     12|			return ZEND_ACC_PUBLIC_SET;
  ------------------
  |  |  273|     12|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
  429|      1|		case ZEND_ACC_PROTECTED:
  ------------------
  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (429:3): [True: 1, False: 16]
  ------------------
  430|      1|			return ZEND_ACC_PROTECTED_SET;
  ------------------
  |  |  274|      1|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  431|      4|		case ZEND_ACC_PRIVATE:
  ------------------
  |  |  221|      4|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (431:3): [True: 4, False: 13]
  ------------------
  432|      4|			return ZEND_ACC_PRIVATE_SET;
  ------------------
  |  |  275|      4|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  433|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (433:3): [True: 0, False: 17]
  |  Branch (433:12): [Folded, False: 0]
  |  Branch (433:12): [Folded, False: 0]
  ------------------
  434|     17|	}
  435|     17|}
zend_compile.c:zend_get_unmangled_property_name:
  998|     10|static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) {
  999|     10|	const char *class_name, *prop_name;
 1000|       |	zend_unmangle_property_name(mangled_prop, &class_name, &prop_name);
  ------------------
  |  |  995|     10|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
 1001|     10|	return prop_name;
 1002|     10|}
zend_compile.c:zend_check_arg_send_type:
 1152|  6.11k|{
 1153|  6.11k|	arg_num--;
 1154|  6.11k|	if (UNEXPECTED(arg_num >= zf->common.num_args)) {
  ------------------
  |  |  457|  6.11k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 191, False: 5.92k]
  |  |  ------------------
  ------------------
 1155|    191|		if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) {
  ------------------
  |  |  456|    191|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 44, False: 147]
  |  |  ------------------
  ------------------
 1156|     44|			return 0;
 1157|     44|		}
 1158|    147|		arg_num = zf->common.num_args;
 1159|    147|	}
 1160|  6.07k|	return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0);
  ------------------
  |  |  457|  6.07k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
 1161|  6.11k|}
zend_compile.c:zend_ast_get_znode:
  101|    216|static zend_always_inline znode *zend_ast_get_znode(zend_ast *ast) {
  102|    216|	return &((zend_ast_znode *) ast)->node;
  103|    216|}
zend_execute_API.c:zend_check_arg_send_type:
 1152|  13.1k|{
 1153|  13.1k|	arg_num--;
 1154|  13.1k|	if (UNEXPECTED(arg_num >= zf->common.num_args)) {
  ------------------
  |  |  457|  13.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 12.8k, False: 261]
  |  |  ------------------
  ------------------
 1155|  12.8k|		if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) {
  ------------------
  |  |  456|  12.8k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10.8k, False: 2.01k]
  |  |  ------------------
  ------------------
 1156|  10.8k|			return 0;
 1157|  10.8k|		}
 1158|  2.01k|		arg_num = zf->common.num_args;
 1159|  2.01k|	}
 1160|  2.27k|	return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0);
  ------------------
  |  |  457|  2.27k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
 1161|  13.1k|}
zend_execute.c:zend_get_unmangled_property_name:
  998|     20|static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) {
  999|     20|	const char *class_name, *prop_name;
 1000|       |	zend_unmangle_property_name(mangled_prop, &class_name, &prop_name);
  ------------------
  |  |  995|     20|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
 1001|     20|	return prop_name;
 1002|     20|}
zend_execute.c:zend_check_arg_send_type:
 1152|  81.5k|{
 1153|  81.5k|	arg_num--;
 1154|  81.5k|	if (UNEXPECTED(arg_num >= zf->common.num_args)) {
  ------------------
  |  |  457|  81.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 81.4k, False: 24]
  |  |  ------------------
  ------------------
 1155|  81.4k|		if (EXPECTED((zf->common.fn_flags & ZEND_ACC_VARIADIC) == 0)) {
  ------------------
  |  |  456|  81.4k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 81.4k]
  |  |  ------------------
  ------------------
 1156|      1|			return 0;
 1157|      1|		}
 1158|  81.4k|		arg_num = zf->common.num_args;
 1159|  81.4k|	}
 1160|  81.5k|	return UNEXPECTED((ZEND_ARG_SEND_MODE(&zf->common.arg_info[arg_num]) & mask) != 0);
  ------------------
  |  |  457|  81.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
 1161|  81.5k|}
zend_inheritance.c:zend_get_unmangled_property_name:
  998|     33|static zend_always_inline const char *zend_get_unmangled_property_name(const zend_string *mangled_prop) {
  999|     33|	const char *class_name, *prop_name;
 1000|       |	zend_unmangle_property_name(mangled_prop, &class_name, &prop_name);
  ------------------
  |  |  995|     33|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
 1001|     33|	return prop_name;
 1002|     33|}
zend_inheritance.c:zend_visibility_to_set_visibility:
  425|      4|{
  426|      4|	switch (visibility) {
  427|      4|		case ZEND_ACC_PUBLIC:
  ------------------
  |  |  219|      4|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (427:3): [True: 4, False: 0]
  ------------------
  428|      4|			return ZEND_ACC_PUBLIC_SET;
  ------------------
  |  |  273|      4|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
  429|      0|		case ZEND_ACC_PROTECTED:
  ------------------
  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (429:3): [True: 0, False: 4]
  ------------------
  430|      0|			return ZEND_ACC_PROTECTED_SET;
  ------------------
  |  |  274|      0|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  431|      0|		case ZEND_ACC_PRIVATE:
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (431:3): [True: 0, False: 4]
  ------------------
  432|      0|			return ZEND_ACC_PRIVATE_SET;
  ------------------
  |  |  275|      0|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  433|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (433:3): [True: 0, False: 4]
  |  Branch (433:12): [Folded, False: 0]
  |  Branch (433:12): [Folded, False: 0]
  ------------------
  434|      4|	}
  435|      4|}

zend_register_standard_constants:
  130|      2|{
  131|      2|	register_zend_constants_symbols(0);
  132|       |
  133|      2|	true_const = zend_hash_str_find_ptr(EG(zend_constants), "TRUE", sizeof("TRUE")-1);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  134|      2|	false_const = zend_hash_str_find_ptr(EG(zend_constants), "FALSE", sizeof("FALSE")-1);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  135|      2|	null_const = zend_hash_str_find_ptr(EG(zend_constants), "NULL", sizeof("NULL")-1);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  136|      2|}
zend_register_null_constant:
  139|      2|{
  140|      2|	zend_constant c;
  141|       |
  142|      2|	ZVAL_NULL(&c.value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  143|      2|	ZEND_CONSTANT_SET_FLAGS(&c, flags, module_number);
  ------------------
  |  |   56|      2|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|      2|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|      2|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|      2|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  144|      2|	c.name = zend_string_init_interned(name, name_len, flags & CONST_PERSISTENT);
  ------------------
  |  |   25|      2|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  145|      2|	return zend_register_constant(&c);
  146|      2|}
zend_register_bool_constant:
  149|     14|{
  150|     14|	zend_constant c;
  151|       |
  152|     14|	ZVAL_BOOL(&c.value, bval);
  ------------------
  |  | 1071|     14|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     14|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     14|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      6|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     22|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 6, False: 8]
  |  |  ------------------
  |  | 1074|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  153|     14|	ZEND_CONSTANT_SET_FLAGS(&c, flags, module_number);
  ------------------
  |  |   56|     14|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|     14|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|     14|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|     14|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  154|     14|	c.name = zend_string_init_interned(name, name_len, flags & CONST_PERSISTENT);
  ------------------
  |  |   25|     14|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  155|     14|	return zend_register_constant(&c);
  156|     14|}
zend_register_long_constant:
  159|    952|{
  160|    952|	zend_constant c;
  161|       |
  162|    952|	ZVAL_LONG(&c.value, lval);
  ------------------
  |  | 1076|    952|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    952|		zval *__z = (z);				\
  |  | 1078|    952|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    952|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    952|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    952|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    952|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    952|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    952|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    952|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 952]
  |  |  ------------------
  ------------------
  163|    952|	ZEND_CONSTANT_SET_FLAGS(&c, flags, module_number);
  ------------------
  |  |   56|    952|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|    952|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|    952|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|    952|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|    952|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 952]
  |  |  ------------------
  ------------------
  164|    952|	c.name = zend_string_init_interned(name, name_len, flags & CONST_PERSISTENT);
  ------------------
  |  |   25|    952|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  165|    952|	return zend_register_constant(&c);
  166|    952|}
zend_register_double_constant:
  170|     44|{
  171|     44|	zend_constant c;
  172|       |
  173|     44|	ZVAL_DOUBLE(&c.value, dval);
  ------------------
  |  | 1082|     44|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     44|		zval *__z = (z);				\
  |  | 1084|     44|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     44|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     44|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     44|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     44|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     44|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     44|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     44|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 44]
  |  |  ------------------
  ------------------
  174|     44|	ZEND_CONSTANT_SET_FLAGS(&c, flags, module_number);
  ------------------
  |  |   56|     44|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|     44|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|     44|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|     44|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|     44|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 44]
  |  |  ------------------
  ------------------
  175|     44|	c.name = zend_string_init_interned(name, name_len, flags & CONST_PERSISTENT);
  ------------------
  |  |   25|     44|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  176|     44|	return zend_register_constant(&c);
  177|     44|}
zend_register_stringl_constant:
  181|     86|{
  182|     86|	zend_constant c;
  183|       |
  184|     86|	ZVAL_STR(&c.value, zend_string_init_interned(strval, strlen, flags & CONST_PERSISTENT));
  ------------------
  |  | 1088|     86|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     86|		zval *__z = (z);						\
  |  | 1090|     86|		zend_string *__s = (s);					\
  |  | 1091|     86|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     86|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     86|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     86|		/* interned strings support */			\
  |  | 1093|     86|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     86|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     86|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 86, False: 0]
  |  |  ------------------
  |  | 1094|     86|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     86|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     86|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     86|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     86|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     86|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 86]
  |  |  ------------------
  ------------------
  185|     86|	ZEND_CONSTANT_SET_FLAGS(&c, flags, module_number);
  ------------------
  |  |   56|     86|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|     86|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|     86|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|     86|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|     86|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 86]
  |  |  ------------------
  ------------------
  186|     86|	c.name = zend_string_init_interned(name, name_len, flags & CONST_PERSISTENT);
  ------------------
  |  |   25|     86|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  187|     86|	return zend_register_constant(&c);
  188|     86|}
zend_register_string_constant:
  192|     86|{
  193|     86|	return zend_register_stringl_constant(name, name_len, strval, strlen(strval), flags, module_number);
  194|     86|}
_zend_get_special_const:
  223|    848|{
  224|    848|	if (len == 4) {
  ------------------
  |  Branch (224:6): [True: 697, False: 151]
  ------------------
  225|    697|		if ((name[0] == 'n' || name[0] == 'N') &&
  ------------------
  |  Branch (225:8): [True: 188, False: 509]
  |  Branch (225:26): [True: 112, False: 397]
  ------------------
  226|    300|			(name[1] == 'u' || name[1] == 'U') &&
  ------------------
  |  Branch (226:5): [True: 188, False: 112]
  |  Branch (226:23): [True: 24, False: 88]
  ------------------
  227|    212|			(name[2] == 'l' || name[2] == 'L') &&
  ------------------
  |  Branch (227:5): [True: 188, False: 24]
  |  Branch (227:23): [True: 22, False: 2]
  ------------------
  228|    210|			(name[3] == 'l' || name[3] == 'L')
  ------------------
  |  Branch (228:5): [True: 183, False: 27]
  |  Branch (228:23): [True: 22, False: 5]
  ------------------
  229|    697|		) {
  230|    205|			return null_const;
  231|    205|		}
  232|    492|		if ((name[0] == 't' || name[0] == 'T') &&
  ------------------
  |  Branch (232:8): [True: 118, False: 374]
  |  Branch (232:26): [True: 56, False: 318]
  ------------------
  233|    174|			(name[1] == 'r' || name[1] == 'R') &&
  ------------------
  |  Branch (233:5): [True: 118, False: 56]
  |  Branch (233:23): [True: 47, False: 9]
  ------------------
  234|    165|			(name[2] == 'u' || name[2] == 'U') &&
  ------------------
  |  Branch (234:5): [True: 117, False: 48]
  |  Branch (234:23): [True: 48, False: 0]
  ------------------
  235|    165|			(name[3] == 'e' || name[3] == 'E')
  ------------------
  |  Branch (235:5): [True: 115, False: 50]
  |  Branch (235:23): [True: 47, False: 3]
  ------------------
  236|    492|		) {
  237|    162|			return true_const;
  238|    162|		}
  239|    492|	} else {
  240|    151|		if ((name[0] == 'f' || name[0] == 'F') &&
  ------------------
  |  Branch (240:8): [True: 76, False: 75]
  |  Branch (240:26): [True: 1, False: 74]
  ------------------
  241|     77|			(name[1] == 'a' || name[1] == 'A') &&
  ------------------
  |  Branch (241:5): [True: 76, False: 1]
  |  Branch (241:23): [True: 0, False: 1]
  ------------------
  242|     76|			(name[2] == 'l' || name[2] == 'L') &&
  ------------------
  |  Branch (242:5): [True: 75, False: 1]
  |  Branch (242:23): [True: 0, False: 1]
  ------------------
  243|     75|			(name[3] == 's' || name[3] == 'S') &&
  ------------------
  |  Branch (243:5): [True: 75, False: 0]
  |  Branch (243:23): [True: 0, False: 0]
  ------------------
  244|     75|			(name[4] == 'e' || name[4] == 'E')
  ------------------
  |  Branch (244:5): [True: 73, False: 2]
  |  Branch (244:23): [True: 0, False: 2]
  ------------------
  245|    151|		) {
  246|     73|			return false_const;
  247|     73|		}
  248|    151|	}
  249|    408|	return NULL;
  250|    848|}
zend_verify_const_access:
  254|    141|{
  255|    141|	if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  498|    141|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    141|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|    141|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (255:6): [True: 140, False: 1]
  ------------------
  256|    140|		return 1;
  257|    140|	} else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  498|      1|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      1|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	} else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (257:13): [True: 0, False: 1]
  ------------------
  258|      0|		return (c->ce == scope);
  259|      1|	} else {
  260|      1|		ZEND_ASSERT(ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PROTECTED);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (260:3): [True: 0, False: 1]
  |  Branch (260:3): [True: 1, False: 0]
  ------------------
  261|      1|		return zend_check_protected(c->ce, scope);
  262|      1|	}
  263|    141|}
zend_get_constant_str:
  282|      2|{
  283|      2|	zend_constant *c = zend_get_constant_str_impl(name, name_len);
  284|      2|	if (c) {
  ------------------
  |  Branch (284:6): [True: 1, False: 1]
  ------------------
  285|      1|		return &c->value;
  286|      1|	}
  287|      1|	return NULL;
  288|      2|}
zend_get_constant_ptr:
  291|  18.5k|{
  292|  18.5k|	zend_constant *c = zend_hash_find_ptr(EG(zend_constants), name);
  ------------------
  |  |   45|  18.5k|# define EG(v) (executor_globals.v)
  ------------------
  293|  18.5k|	if (c) {
  ------------------
  |  Branch (293:6): [True: 41, False: 18.4k]
  ------------------
  294|     41|		return c;
  295|     41|	}
  296|       |
  297|  18.4k|	c = zend_get_halt_offset_constant(ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   67|  18.4k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	c = zend_get_halt_offset_constant(ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   68|  18.4k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  298|  18.4k|	if (c) {
  ------------------
  |  Branch (298:6): [True: 0, False: 18.4k]
  ------------------
  299|      0|		return c;
  300|      0|	}
  301|       |
  302|  18.4k|	return zend_get_special_const(ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   67|  18.4k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	return zend_get_special_const(ZSTR_VAL(name), ZSTR_LEN(name));
  ------------------
  |  |   68|  18.4k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  303|  18.4k|}
zend_get_constant:
  306|  18.4k|{
  307|  18.4k|	zend_constant *c = zend_get_constant_ptr(name);
  308|  18.4k|	if (c) {
  ------------------
  |  Branch (308:6): [True: 0, False: 18.4k]
  ------------------
  309|      0|		return &c->value;
  310|      0|	}
  311|  18.4k|	return NULL;
  312|  18.4k|}
zend_get_class_constant_ex:
  315|     46|{
  316|     46|	const zend_class_entry *ce = NULL;
  317|     46|	zend_class_constant *c = NULL;
  318|     46|	zval *ret_constant = NULL;
  319|       |
  320|     46|	if (ZSTR_HAS_CE_CACHE(class_name)) {
  ------------------
  |  |  862|     46|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|     46|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     46|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|     46|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|     46|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 46]
  |  |  ------------------
  ------------------
  321|      0|		ce = ZSTR_GET_CE_CACHE(class_name);
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  322|      0|		if (!ce) {
  ------------------
  |  Branch (322:7): [True: 0, False: 0]
  ------------------
  323|      0|			ce = zend_fetch_class(class_name, flags);
  324|      0|		}
  325|     46|	} else if (zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  |  401|     46|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     46|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     92|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 16, False: 30]
  |  |  |  Branch (401:35): [True: 16, False: 0]
  |  |  ------------------
  ------------------
  326|     16|		if (UNEXPECTED(!scope)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  ------------------
  ------------------
  327|      0|			zend_throw_error(NULL, "Cannot access \"self\" when no class scope is active");
  328|      0|			goto failure;
  329|      0|		}
  330|     16|		ce = scope;
  331|     30|	} else if (zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  |  401|     30|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     30|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     60|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 3, False: 27]
  |  |  |  Branch (401:35): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  332|      2|		if (UNEXPECTED(!scope)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  333|      0|			zend_throw_error(NULL, "Cannot access \"parent\" when no class scope is active");
  334|      0|			goto failure;
  335|      2|		} else if (UNEXPECTED(!scope->parent)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  336|      1|			zend_throw_error(NULL, "Cannot access \"parent\" when current class scope has no parent");
  337|      1|			goto failure;
  338|      1|		} else {
  339|      1|			ce = scope->parent;
  340|      1|		}
  341|     28|	} else if (zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_STATIC))) {
  ------------------
  |  |  401|     28|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     56|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 1, False: 27]
  |  |  |  Branch (401:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  342|      0|		ce = zend_get_called_scope(EG(current_execute_data));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  343|      0|		if (UNEXPECTED(!ce)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  344|      0|			zend_throw_error(NULL, "Cannot access \"static\" when no class scope is active");
  345|      0|			goto failure;
  346|      0|		}
  347|     28|	} else {
  348|     28|		ce = zend_fetch_class(class_name, flags);
  349|     28|	}
  350|     45|	if (ce) {
  ------------------
  |  Branch (350:6): [True: 43, False: 2]
  ------------------
  351|     43|		c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), constant_name);
  ------------------
  |  |  334|     43|	zend_class_constants_table(ce)
  ------------------
  352|     43|		if (c == NULL) {
  ------------------
  |  Branch (352:7): [True: 6, False: 37]
  ------------------
  353|      6|			if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) {
  ------------------
  |  | 1051|      6|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
  |  Branch (353:8): [True: 6, False: 0]
  ------------------
  354|      6|				zend_throw_error(NULL, "Undefined constant %s::%s", ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "Undefined constant %s::%s", ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  355|      6|				goto failure;
  356|      6|			}
  357|      0|			ret_constant = NULL;
  358|     37|		} else {
  359|     37|			if (!zend_verify_const_access(c, scope)) {
  ------------------
  |  Branch (359:8): [True: 0, False: 37]
  ------------------
  360|      0|				if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) {
  ------------------
  |  | 1051|      0|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
  |  Branch (360:9): [True: 0, False: 0]
  ------------------
  361|      0|					zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |  498|      0|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              					zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  362|      0|				}
  363|      0|				goto failure;
  364|      0|			}
  365|       |
  366|     37|			if (UNEXPECTED(ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  457|     37|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 35]
  |  |  ------------------
  ------------------
  367|       |				/** Prevent accessing trait constants directly on cases like \defined() or \constant(), etc. */
  368|      2|				if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) {
  ------------------
  |  | 1051|      2|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
  |  Branch (368:9): [True: 1, False: 1]
  ------------------
  369|      1|					zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  370|      1|				}
  371|      2|				goto failure;
  372|      2|			}
  373|       |
  374|     35|			if (UNEXPECTED(ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
  375|      0|				if ((flags & ZEND_FETCH_CLASS_SILENT) == 0 && !CONST_IS_RECURSIVE(c)) {
  ------------------
  |  | 1051|      0|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
              				if ((flags & ZEND_FETCH_CLASS_SILENT) == 0 && !CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |   31|      0|#define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               #define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |   29|      0|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  ------------------
  |  Branch (375:9): [True: 0, False: 0]
  |  Branch (375:51): [True: 0, False: 0]
  ------------------
  376|      0|					if (c->ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (376:10): [True: 0, False: 0]
  ------------------
  377|       |						/* Recursion protection only applied to user constants, GH-18463 */
  378|      0|						CONST_PROTECT_RECURSION(c);
  ------------------
  |  |   33|      0|	do { \
  |  |   34|      0|		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      0|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   35|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (35:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  379|      0|					}
  380|      0|					zend_deprecated_class_constant(c, constant_name);
  381|      0|					if (c->ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (381:10): [True: 0, False: 0]
  ------------------
  382|      0|						CONST_UNPROTECT_RECURSION(c);
  ------------------
  |  |   37|      0|	do { \
  |  |   38|      0|		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      0|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   39|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (39:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  383|      0|					}
  384|      0|					if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  385|      0|						goto failure;
  386|      0|					}
  387|      0|				}
  388|      0|			}
  389|     35|			ret_constant = &c->value;
  390|     35|		}
  391|     43|	}
  392|       |
  393|     37|	if (ret_constant && Z_TYPE_P(ret_constant) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|     35|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     35|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (ret_constant && Z_TYPE_P(ret_constant) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     35|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (393:6): [True: 35, False: 2]
  |  Branch (393:22): [True: 17, False: 18]
  ------------------
  394|     17|		zend_result ret;
  395|       |
  396|     17|		if (IS_CONSTANT_VISITED(ret_constant)) {
  ------------------
  |  |   33|     17|#define IS_CONSTANT_VISITED(zv)     (Z_CONSTANT_FLAGS_P(zv) & IS_CONSTANT_VISITED_MARK)
  |  |  ------------------
  |  |  |  |  702|     17|#define Z_CONSTANT_FLAGS_P(zval_p)	Z_CONSTANT_FLAGS(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|     17|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_CONSTANT_VISITED(zv)     (Z_CONSTANT_FLAGS_P(zv) & IS_CONSTANT_VISITED_MARK)
  |  |  ------------------
  |  |  |  |   31|     17|#define IS_CONSTANT_VISITED_MARK    0x80
  |  |  ------------------
  |  |  |  Branch (33:37): [True: 2, False: 15]
  |  |  ------------------
  ------------------
  397|      2|			zend_throw_error(NULL, "Cannot declare self-referencing constant %s::%s", ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_throw_error(NULL, "Cannot declare self-referencing constant %s::%s", ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  398|      2|			ret_constant = NULL;
  399|      2|			goto failure;
  400|      2|		}
  401|       |
  402|     17|		MARK_CONSTANT_VISITED(ret_constant);
  ------------------
  |  |   34|     17|#define MARK_CONSTANT_VISITED(zv)   Z_CONSTANT_FLAGS_P(zv) |= IS_CONSTANT_VISITED_MARK
  |  |  ------------------
  |  |  |  |  702|     15|#define Z_CONSTANT_FLAGS_P(zval_p)	Z_CONSTANT_FLAGS(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|     15|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MARK_CONSTANT_VISITED(zv)   Z_CONSTANT_FLAGS_P(zv) |= IS_CONSTANT_VISITED_MARK
  |  |  ------------------
  |  |  |  |   31|     17|#define IS_CONSTANT_VISITED_MARK    0x80
  |  |  ------------------
  ------------------
  403|     15|		ret = zend_update_class_constant(c, constant_name, c->ce);
  404|     15|		RESET_CONSTANT_VISITED(ret_constant);
  ------------------
  |  |   35|     15|#define RESET_CONSTANT_VISITED(zv)  Z_CONSTANT_FLAGS_P(zv) &= ~IS_CONSTANT_VISITED_MARK
  |  |  ------------------
  |  |  |  |  702|     15|#define Z_CONSTANT_FLAGS_P(zval_p)	Z_CONSTANT_FLAGS(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  701|     15|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RESET_CONSTANT_VISITED(zv)  Z_CONSTANT_FLAGS_P(zv) &= ~IS_CONSTANT_VISITED_MARK
  |  |  ------------------
  |  |  |  |   31|     15|#define IS_CONSTANT_VISITED_MARK    0x80
  |  |  ------------------
  ------------------
  405|       |
  406|     15|		if (UNEXPECTED(ret != SUCCESS)) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 11]
  |  |  ------------------
  ------------------
  407|      4|			ret_constant = NULL;
  408|      4|			goto failure;
  409|      4|		}
  410|     15|	}
  411|     46|failure:
  412|     46|	return ret_constant;
  413|     37|}
zend_get_constant_ex:
  416|     78|{
  417|     78|	zend_constant *c;
  418|     78|	const char *colon;
  419|     78|	const char *name = ZSTR_VAL(cname);
  ------------------
  |  |   67|     78|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  420|     78|	size_t name_len = ZSTR_LEN(cname);
  ------------------
  |  |   68|     78|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  421|       |
  422|       |	/* Skip leading \\ */
  423|     78|	if (name[0] == '\\') {
  ------------------
  |  Branch (423:6): [True: 2, False: 76]
  ------------------
  424|      2|		name += 1;
  425|      2|		name_len -= 1;
  426|      2|		cname = NULL;
  427|      2|	}
  428|       |
  429|     78|	if ((colon = zend_memrchr(name, ':', name_len)) &&
  ------------------
  |  Branch (429:6): [True: 4, False: 74]
  ------------------
  430|      4|	    colon > name && (*(colon - 1) == ':')) {
  ------------------
  |  Branch (430:6): [True: 4, False: 0]
  |  Branch (430:22): [True: 4, False: 0]
  ------------------
  431|      4|		int class_name_len = colon - name - 1;
  432|      4|		size_t const_name_len = name_len - class_name_len - 2;
  433|      4|		zend_string *constant_name = zend_string_init(colon + 1, const_name_len, 0);
  434|      4|		zend_string *class_name = zend_string_init_interned(name, class_name_len, 0);
  435|      4|		zval *ret_constant = zend_get_class_constant_ex(class_name, constant_name, scope, flags);
  436|       |
  437|      4|		zend_string_release_ex(class_name, 0);
  438|      4|		zend_string_efree(constant_name);
  439|      4|		return ret_constant;
  440|      4|	}
  441|       |
  442|       |	/* non-class constant */
  443|     74|	if ((colon = zend_memrchr(name, '\\', name_len)) != NULL) {
  ------------------
  |  Branch (443:6): [True: 9, False: 65]
  ------------------
  444|       |		/* compound constant name */
  445|      9|		int prefix_len = colon - name;
  446|      9|		size_t const_name_len = name_len - prefix_len - 1;
  447|      9|		const char *constant_name = colon + 1;
  448|      9|		char *lcname;
  449|      9|		size_t lcname_len;
  450|      9|		ALLOCA_FLAG(use_heap)
  451|       |
  452|       |		/* Lowercase the namespace portion */
  453|      9|		lcname_len = prefix_len + 1 + const_name_len;
  454|      9|		lcname = do_alloca(lcname_len + 1, use_heap);
  ------------------
  |  |  247|      9|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      9|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|      9|		zend_str_tolower_copy(lcname, name, prefix_len);
  456|       |
  457|      9|		lcname[prefix_len] = '\\';
  458|      9|		memcpy(lcname + prefix_len + 1, constant_name, const_name_len + 1);
  459|       |
  460|      9|		c = zend_hash_str_find_ptr(EG(zend_constants), lcname, lcname_len);
  ------------------
  |  |   45|      9|# define EG(v) (executor_globals.v)
  ------------------
  461|      9|		free_alloca(lcname, use_heap);
  ------------------
  |  |  248|      9|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  462|       |
  463|      9|		if (!c) {
  ------------------
  |  Branch (463:7): [True: 6, False: 3]
  ------------------
  464|      6|			if (flags & IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE) {
  ------------------
  |  | 1149|      6|#define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800
  ------------------
  |  Branch (464:8): [True: 3, False: 3]
  ------------------
  465|       |				/* name requires runtime resolution, need to check non-namespaced name */
  466|      3|				c = zend_get_constant_str_impl(constant_name, const_name_len);
  467|      3|			}
  468|      6|		}
  469|     65|	} else {
  470|     65|		if (cname) {
  ------------------
  |  Branch (470:7): [True: 63, False: 2]
  ------------------
  471|     63|			c = zend_get_constant_ptr(cname);
  472|     63|		} else {
  473|      2|			c = zend_get_constant_str_impl(name, name_len);
  474|      2|		}
  475|     65|	}
  476|       |
  477|     74|	if (!c) {
  ------------------
  |  Branch (477:6): [True: 35, False: 39]
  ------------------
  478|     35|		if (!(flags & ZEND_FETCH_CLASS_SILENT)) {
  ------------------
  |  | 1051|     35|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
  |  Branch (478:7): [True: 33, False: 2]
  ------------------
  479|     33|			zend_throw_error(NULL, "Undefined constant \"%s\"", name);
  480|     33|		}
  481|     35|		return NULL;
  482|     35|	}
  483|       |
  484|     39|	if (!(flags & ZEND_FETCH_CLASS_SILENT) && (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED)) {
  ------------------
  |  | 1051|     39|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
              	if (!(flags & ZEND_FETCH_CLASS_SILENT) && (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED)) {
  ------------------
  |  |   51|     38|	(Z_CONSTANT_FLAGS((c)->value) & 0xff)
  |  |  ------------------
  |  |  |  |  701|     38|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (!(flags & ZEND_FETCH_CLASS_SILENT) && (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED)) {
  ------------------
  |  |   27|     38|#define CONST_DEPRECATED		(1<<2)				/* Deprecated */
  ------------------
  |  Branch (484:6): [True: 38, False: 1]
  |  Branch (484:44): [True: 4, False: 34]
  ------------------
  485|      4|		if (!CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |   31|      4|#define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |  701|      4|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               #define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |   29|      4|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  ------------------
  |  Branch (485:7): [True: 3, False: 1]
  ------------------
  486|      3|			CONST_PROTECT_RECURSION(c);
  ------------------
  |  |   33|      3|	do { \
  |  |   34|      3|		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      3|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   35|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (35:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  487|      3|			zend_deprecated_constant(c, c->name);
  488|      3|			CONST_UNPROTECT_RECURSION(c);
  ------------------
  |  |   37|      3|	do { \
  |  |   38|      3|		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      3|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   39|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (39:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  489|      3|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  490|      0|				return NULL;
  491|      0|			}
  492|      3|		}
  493|      4|	}
  494|     39|	return &c->value;
  495|     39|}
zend_register_constant:
  511|  1.22k|{
  512|  1.22k|	zend_string *lowercase_name = NULL;
  513|  1.22k|	zend_string *name;
  514|  1.22k|	zend_constant *ret = NULL;
  515|  1.22k|	bool persistent = (ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT) != 0;
  ------------------
  |  |   51|  1.22k|	(Z_CONSTANT_FLAGS((c)->value) & 0xff)
  |  |  ------------------
  |  |  |  |  701|  1.22k|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	bool persistent = (ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT) != 0;
  ------------------
  |  |   25|  1.22k|#define CONST_PERSISTENT		(1<<0)				/* Persistent */
  ------------------
  516|       |
  517|       |#if 0
  518|       |	printf("Registering constant for module %d\n", c->module_number);
  519|       |#endif
  520|       |
  521|  1.22k|	const char *slash = strrchr(ZSTR_VAL(c->name), '\\');
  ------------------
  |  |   67|  1.22k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  522|  1.22k|	if (slash) {
  ------------------
  |  Branch (522:6): [True: 22, False: 1.20k]
  ------------------
  523|     22|		lowercase_name = zend_string_init(ZSTR_VAL(c->name), ZSTR_LEN(c->name), persistent);
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		lowercase_name = zend_string_init(ZSTR_VAL(c->name), ZSTR_LEN(c->name), persistent);
  ------------------
  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  524|     22|		zend_str_tolower(ZSTR_VAL(lowercase_name), slash - ZSTR_VAL(c->name));
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_str_tolower(ZSTR_VAL(lowercase_name), slash - ZSTR_VAL(c->name));
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  525|     22|		lowercase_name = zend_new_interned_string(lowercase_name);
  526|     22|		name = lowercase_name;
  527|  1.20k|	} else {
  528|  1.20k|		name = c->name;
  529|  1.20k|	}
  530|       |
  531|  1.22k|	c->filename = NULL;
  532|  1.22k|	if (ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT) {
  ------------------
  |  |   54|  1.22k|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|  1.22k|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT) {
  ------------------
  |  |   41|  1.22k|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
  |  Branch (532:6): [True: 131, False: 1.09k]
  ------------------
  533|    131|		zend_string *filename = zend_get_executed_filename_ex();
  534|    131|		if (filename) {
  ------------------
  |  Branch (534:7): [True: 131, False: 0]
  ------------------
  535|    131|			c->filename = zend_string_copy(filename);
  536|    131|		}
  537|    131|	}
  538|       |
  539|  1.22k|	c->attributes = NULL;
  540|       |
  541|       |	/* Check if the user is trying to define any special constant */
  542|  1.22k|	if (zend_string_equals_literal(name, "__COMPILER_HALT_OFFSET__")
  ------------------
  |  |  407|  2.45k|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 1.22k]
  |  |  ------------------
  ------------------
  543|  1.22k|		|| (!persistent && zend_get_special_const(ZSTR_VAL(name), ZSTR_LEN(name)))
  ------------------
  |  |   67|    135|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		|| (!persistent && zend_get_special_const(ZSTR_VAL(name), ZSTR_LEN(name)))
  ------------------
  |  |   68|    135|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (543:7): [True: 135, False: 1.09k]
  |  Branch (543:22): [True: 0, False: 135]
  ------------------
  544|  1.22k|		|| (ret = zend_hash_add_constant(EG(zend_constants), name, c)) == NULL
  ------------------
  |  |   45|  1.22k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (544:6): [True: 8, False: 1.21k]
  ------------------
  545|  1.22k|	) {
  546|     10|		zend_error(E_WARNING, "Constant %s already defined, this will be an error in PHP 9", ZSTR_VAL(name));
  ------------------
  |  |   23|     10|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Constant %s already defined, this will be an error in PHP 9", ZSTR_VAL(name));
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  547|     10|		zend_string_release(c->name);
  548|     10|		if (c->filename) {
  ------------------
  |  Branch (548:7): [True: 10, False: 0]
  ------------------
  549|     10|			zend_string_release(c->filename);
  550|     10|			c->filename = NULL;
  551|     10|		}
  552|     10|		if (!persistent) {
  ------------------
  |  Branch (552:7): [True: 10, False: 0]
  ------------------
  553|     10|			zval_ptr_dtor_nogc(&c->value);
  554|     10|		}
  555|     10|	}
  556|  1.22k|	if (lowercase_name) {
  ------------------
  |  Branch (556:6): [True: 22, False: 1.20k]
  ------------------
  557|     22|		zend_string_release(lowercase_name);
  558|     22|	}
  559|  1.22k|	return ret;
  560|  1.22k|}
zend_constant_add_attributes:
  562|     12|void zend_constant_add_attributes(zend_constant *c, HashTable *attributes) {
  563|     12|	GC_TRY_ADDREF(attributes);
  ------------------
  |  |  722|     12|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
  564|     12|	c->attributes = attributes;
  565|       |
  566|     12|	zend_attribute *deprecated_attribute = zend_get_attribute_str(
  567|     12|		c->attributes,
  568|     12|		"deprecated",
  569|     12|		strlen("deprecated")
  570|     12|	);
  571|       |
  572|     12|	if (deprecated_attribute) {
  ------------------
  |  Branch (572:6): [True: 7, False: 5]
  ------------------
  573|      7|		ZEND_CONSTANT_SET_FLAGS(
  ------------------
  |  |   56|      7|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|      7|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|      7|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|      7|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  574|      7|			c,
  575|      7|			ZEND_CONSTANT_FLAGS(c) | CONST_DEPRECATED,
  576|      7|			ZEND_CONSTANT_MODULE_NUMBER(c)
  577|      7|		);
  578|      7|	}
  579|     12|}
zend_constants.c:zend_get_constant_str_impl:
  267|      7|{
  268|      7|	zend_constant *c = zend_hash_str_find_ptr(EG(zend_constants), name, name_len);
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  269|      7|	if (c) {
  ------------------
  |  Branch (269:6): [True: 3, False: 4]
  ------------------
  270|      3|		return c;
  271|      3|	}
  272|       |
  273|      4|	c = zend_get_halt_offset_constant(name, name_len);
  274|      4|	if (c) {
  ------------------
  |  Branch (274:6): [True: 0, False: 4]
  ------------------
  275|      0|		return c;
  276|      0|	}
  277|       |
  278|      4|	return zend_get_special_const(name, name_len);
  279|      4|}
zend_constants.c:zend_get_halt_offset_constant:
  197|  18.4k|{
  198|  18.4k|	zend_constant *c;
  199|  18.4k|	static const char haltoff[] = "__COMPILER_HALT_OFFSET__";
  200|       |
  201|  18.4k|	if (!EG(current_execute_data)) {
  ------------------
  |  |   45|  18.4k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (201:6): [True: 0, False: 18.4k]
  ------------------
  202|      0|		return NULL;
  203|  18.4k|	} else if (name_len == sizeof("__COMPILER_HALT_OFFSET__")-1 &&
  ------------------
  |  Branch (203:13): [True: 1, False: 18.4k]
  ------------------
  204|      1|	          !memcmp(name, "__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFFSET__")-1)) {
  ------------------
  |  Branch (204:12): [True: 1, False: 0]
  ------------------
  205|      1|		const char *cfilename;
  206|      1|		zend_string *haltname;
  207|      1|		size_t clen;
  208|       |
  209|      1|		cfilename = zend_get_executed_filename();
  210|      1|		clen = strlen(cfilename);
  211|       |		/* check for __COMPILER_HALT_OFFSET__ */
  212|      1|		haltname = zend_mangle_property_name(haltoff,
  213|      1|			sizeof("__COMPILER_HALT_OFFSET__") - 1, cfilename, clen, 0);
  214|      1|		c = zend_hash_find_ptr(EG(zend_constants), haltname);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  215|      1|		zend_string_efree(haltname);
  216|      1|		return c;
  217|  18.4k|	} else {
  218|       |		return NULL;
  219|  18.4k|	}
  220|  18.4k|}
zend_constants.c:zend_hash_add_constant:
  498|  1.22k|{
  499|  1.22k|	void *ret;
  500|  1.22k|	zend_constant *copy = pemalloc(sizeof(zend_constant), ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT);
  ------------------
  |  |  188|  1.22k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|  1.09k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  1.09k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|  1.09k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  1.09k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    135|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    135|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    135|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    135|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    135|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 1.09k, False: 135]
  |  |  ------------------
  ------------------
  501|       |
  502|  1.22k|	memcpy(copy, c, sizeof(zend_constant));
  503|  1.22k|	ret = zend_hash_add_ptr(ht, key, copy);
  504|  1.22k|	if (!ret) {
  ------------------
  |  Branch (504:6): [True: 8, False: 1.21k]
  ------------------
  505|       |		pefree(copy, ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT);
  ------------------
  |  |  190|      8|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  506|      8|	}
  507|  1.22k|	return ret;
  508|  1.22k|}

zend_compile.c:zend_get_special_const:
  108|  1.65k|		const char *name, size_t name_len) {
  109|  1.65k|	if (name_len == 4 || name_len == 5) {
  ------------------
  |  Branch (109:6): [True: 438, False: 1.21k]
  |  Branch (109:23): [True: 143, False: 1.07k]
  ------------------
  110|    581|		return _zend_get_special_const(name, name_len);
  111|    581|	}
  112|  1.07k|	return NULL;
  113|  1.65k|}
zend_constants.c:zend_get_special_const:
  108|  18.6k|		const char *name, size_t name_len) {
  109|  18.6k|	if (name_len == 4 || name_len == 5) {
  ------------------
  |  Branch (109:6): [True: 259, False: 18.3k]
  |  Branch (109:23): [True: 8, False: 18.3k]
  ------------------
  110|    267|		return _zend_get_special_const(name, name_len);
  111|    267|	}
  112|  18.3k|	return NULL;
  113|  18.6k|}

zend_constants.c:register_zend_constants_symbols:
    5|      2|{
    6|      2|	REGISTER_LONG_CONSTANT("E_ERROR", E_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    7|      2|	REGISTER_LONG_CONSTANT("E_WARNING", E_WARNING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    8|      2|	REGISTER_LONG_CONSTANT("E_PARSE", E_PARSE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    9|      2|	REGISTER_LONG_CONSTANT("E_NOTICE", E_NOTICE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   10|      2|	REGISTER_LONG_CONSTANT("E_CORE_ERROR", E_CORE_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   11|      2|	REGISTER_LONG_CONSTANT("E_CORE_WARNING", E_CORE_WARNING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   12|      2|	REGISTER_LONG_CONSTANT("E_COMPILE_ERROR", E_COMPILE_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   13|      2|	REGISTER_LONG_CONSTANT("E_COMPILE_WARNING", E_COMPILE_WARNING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   14|      2|	REGISTER_LONG_CONSTANT("E_USER_ERROR", E_USER_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   15|      2|	REGISTER_LONG_CONSTANT("E_USER_WARNING", E_USER_WARNING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   16|      2|	REGISTER_LONG_CONSTANT("E_USER_NOTICE", E_USER_NOTICE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   17|      2|	zend_constant *const_E_STRICT = REGISTER_LONG_CONSTANT("E_STRICT", E_STRICT, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   18|      2|	REGISTER_LONG_CONSTANT("E_RECOVERABLE_ERROR", E_RECOVERABLE_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   19|      2|	REGISTER_LONG_CONSTANT("E_DEPRECATED", E_DEPRECATED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   20|      2|	REGISTER_LONG_CONSTANT("E_USER_DEPRECATED", E_USER_DEPRECATED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   21|      2|	REGISTER_LONG_CONSTANT("E_ALL", E_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   22|      2|	REGISTER_LONG_CONSTANT("DEBUG_BACKTRACE_PROVIDE_OBJECT", DEBUG_BACKTRACE_PROVIDE_OBJECT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   23|      2|	REGISTER_LONG_CONSTANT("DEBUG_BACKTRACE_IGNORE_ARGS", DEBUG_BACKTRACE_IGNORE_ARGS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   24|      2|	REGISTER_BOOL_CONSTANT("ZEND_THREAD_SAFE", ZTS_V, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
   25|      2|	REGISTER_BOOL_CONSTANT("ZEND_DEBUG_BUILD", ZEND_DEBUG, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
   26|      2|	REGISTER_STRING_CONSTANT("ZEND_VM_KIND", zend_vm_kind_name[ZEND_VM_KIND], CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   27|      2|	REGISTER_BOOL_CONSTANT("TRUE", true, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
   28|      2|	REGISTER_BOOL_CONSTANT("FALSE", false, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
   29|      2|	REGISTER_NULL_CONSTANT("NULL", CONST_PERSISTENT);
  ------------------
  |  |   61|      2|#define REGISTER_NULL_CONSTANT(name, flags)  zend_register_null_constant((name), sizeof(name)-1, (flags), module_number)
  ------------------
   30|       |
   31|       |
   32|      2|	zend_attribute *attribute_Deprecated_const_E_STRICT_0 = zend_add_global_constant_attribute(const_E_STRICT, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
   33|      2|	ZVAL_STR(&attribute_Deprecated_const_E_STRICT_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_4));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   34|      2|	attribute_Deprecated_const_E_STRICT_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
   35|      2|	zend_string *attribute_Deprecated_const_E_STRICT_0_arg1_str = zend_string_init("the error level was removed", strlen("the error level was removed"), 1);
   36|      2|	ZVAL_STR(&attribute_Deprecated_const_E_STRICT_0->args[1].value, attribute_Deprecated_const_E_STRICT_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   37|      2|	attribute_Deprecated_const_E_STRICT_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
   38|      2|}

zend_cpu_startup:
  114|      2|{
  115|      2|	if (!cpuinfo.initialized) {
  ------------------
  |  Branch (115:6): [True: 2, False: 0]
  ------------------
  116|      2|		zend_cpu_info ebx;
  117|      2|		int max_feature;
  118|       |
  119|      2|		cpuinfo.initialized = 1;
  120|      2|		__zend_cpuid(0, 0, &cpuinfo);
  121|      2|		max_feature = cpuinfo.eax;
  122|      2|		if (max_feature == 0) {
  ------------------
  |  Branch (122:7): [True: 0, False: 2]
  ------------------
  123|      0|			return;
  124|      0|		}
  125|       |
  126|      2|		__zend_cpuid(1, 0, &cpuinfo);
  127|       |
  128|       |		/* for avx2 */
  129|      2|		if (max_feature >= 7) {
  ------------------
  |  Branch (129:7): [True: 2, False: 0]
  ------------------
  130|      2|			__zend_cpuid(7, 0, &ebx);
  131|      2|			cpuinfo.ebx = ebx.ebx;
  132|      2|		} else {
  133|      0|			cpuinfo.ebx = 0;
  134|      0|		}
  135|       |
  136|      2|		if (!is_avx_supported()) {
  ------------------
  |  Branch (136:7): [True: 0, False: 2]
  ------------------
  137|      0|			cpuinfo.edx &= ~ZEND_CPU_FEATURE_AVX;
  138|      0|			cpuinfo.ebx &= ~(ZEND_CPU_FEATURE_AVX2 & ~ZEND_CPU_EBX_MASK);
  ------------------
  |  |   23|      0|#define ZEND_CPU_EBX_MASK     (1<<30)
  ------------------
  139|      0|		}
  140|      2|	}
  141|      2|}
zend_cpuinfo.c:__zend_cpuid:
   33|      6|static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo) {
   34|       |	__cpuid_count(func, subfunc, cpuinfo->eax, cpuinfo->ebx, cpuinfo->ecx, cpuinfo->edx);
   35|      6|}
zend_cpuinfo.c:is_avx_supported:
   92|      2|static bool is_avx_supported(void) {
   93|      2|	if (!(cpuinfo.ecx & ZEND_CPU_FEATURE_AVX)) {
  ------------------
  |  Branch (93:6): [True: 0, False: 2]
  ------------------
   94|       |		/* No support for AVX */
   95|      0|		return false;
   96|      0|	}
   97|      2|	if (!(cpuinfo.ecx & ZEND_CPU_FEATURE_OSXSAVE)) {
  ------------------
  |  Branch (97:6): [True: 0, False: 2]
  ------------------
   98|       |		/* The operating system does not support XSAVE. */
   99|      0|		return false;
  100|      0|	}
  101|      2|	if ((get_xcr0_eax() & 0x6) != 0x6) {
  ------------------
  |  Branch (101:6): [True: 0, False: 2]
  ------------------
  102|       |		/* XCR0 SSE and AVX bits must be set. */
  103|      0|		return false;
  104|      0|	}
  105|      2|	return true;
  106|      2|}
zend_cpuinfo.c:get_xcr0_eax:
   77|      2|static unsigned get_xcr0_eax(void) {
   78|      2|# if defined(__GNUC__) || defined(__clang__)
   79|       |	// Check xgetbv; this uses a .byte sequence instead of the instruction
   80|       |	// directly because older assemblers do not include support for xgetbv and
   81|       |	// there is no easy way to conditionally compile based on the assembler used.
   82|      2|	unsigned eax, edx;
   83|      2|	__asm__(".byte 0x0f, 0x01, 0xd0" : "=a"(eax), "=d"(edx) : "c"(0));
   84|      2|	return eax;
   85|       |# elif defined(ZEND_WIN32) && defined(_XCR_XFEATURE_ENABLED_MASK)
   86|       |	return _xgetbv(_XCR_XFEATURE_ENABLED_MASK);
   87|       |# else
   88|       |	return 0;
   89|       |# endif
   90|      2|}

base64.c:zend_cpu_supports_avx512_vbmi:
  225|      4|static inline int zend_cpu_supports_avx512_vbmi(void) {
  226|      4|#ifdef PHP_HAVE_BUILTIN_CPU_INIT
  227|      4|	__builtin_cpu_init();
  228|      4|#endif
  229|      4|	return zend_cpu_supports_avx512() && __builtin_cpu_supports("avx512vbmi");
  ------------------
  |  Branch (229:9): [True: 0, False: 4]
  |  Branch (229:39): [True: 0, False: 0]
  ------------------
  230|      4|}
base64.c:zend_cpu_supports_avx512:
  213|      8|static inline int zend_cpu_supports_avx512(void) {
  214|      8|#ifdef PHP_HAVE_BUILTIN_CPU_INIT
  215|      8|	__builtin_cpu_init();
  216|      8|#endif
  217|      8|	return __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512dq")
  ------------------
  |  Branch (217:9): [True: 0, False: 8]
  |  Branch (217:46): [True: 0, False: 0]
  ------------------
  218|      0|		&& __builtin_cpu_supports("avx512cd") && __builtin_cpu_supports("avx512bw")
  ------------------
  |  Branch (218:6): [True: 0, False: 0]
  |  Branch (218:44): [True: 0, False: 0]
  ------------------
  219|      0|		&& __builtin_cpu_supports("avx512vl");
  ------------------
  |  Branch (219:6): [True: 0, False: 0]
  ------------------
  220|      8|}
base64.c:zend_cpu_supports_avx2:
  200|      4|static inline int zend_cpu_supports_avx2(void) {
  201|       |#ifdef __aarch64__
  202|       |	return 0;
  203|       |#else
  204|      4|#ifdef PHP_HAVE_BUILTIN_CPU_INIT
  205|      4|	__builtin_cpu_init();
  206|      4|#endif
  207|      4|	return __builtin_cpu_supports("avx2");
  208|      4|#endif
  209|      4|}
crc32_x86.c:zend_cpu_supports_sse42:
  176|      2|static inline int zend_cpu_supports_sse42(void) {
  177|       |#ifdef __aarch64__
  178|       |	return 0;
  179|       |#else
  180|      2|#ifdef PHP_HAVE_BUILTIN_CPU_INIT
  181|      2|	__builtin_cpu_init();
  182|      2|#endif
  183|      2|	return __builtin_cpu_supports("sse4.2");
  184|      2|#endif
  185|      2|}
crc32_x86.c:zend_cpu_supports_pclmul:
  280|      2|static inline int zend_cpu_supports_pclmul(void) {
  281|      2|#ifdef PHP_HAVE_BUILTIN_CPU_INIT
  282|      2|	__builtin_cpu_init();
  283|      2|#endif
  284|      2|	return __builtin_cpu_supports("pclmul");
  285|      2|}
string.c:zend_cpu_supports_sse42:
  176|      2|static inline int zend_cpu_supports_sse42(void) {
  177|       |#ifdef __aarch64__
  178|       |	return 0;
  179|       |#else
  180|      2|#ifdef PHP_HAVE_BUILTIN_CPU_INIT
  181|      2|	__builtin_cpu_init();
  182|      2|#endif
  183|      2|	return __builtin_cpu_supports("sse4.2");
  184|      2|#endif
  185|      2|}

zend_register_default_classes:
   32|      2|{
   33|      2|	zend_register_interfaces();
   34|      2|	zend_register_default_exception();
   35|      2|	zend_register_iterator_wrapper();
   36|      2|	zend_register_closure_ce();
   37|      2|	zend_register_generator_ce();
   38|      2|	zend_register_weakref_ce();
   39|      2|	zend_register_attribute_ce();
   40|      2|	zend_register_enum_ce();
   41|      2|	zend_register_fiber_ce();
   42|      2|}

zend_enum_new:
   43|     85|{
   44|     85|	zend_enum_obj *intern = zend_object_alloc(sizeof(*intern), ce);
   45|       |
   46|     85|	zend_object_std_init(&intern->std, ce);
   47|     85|	object_properties_init(&intern->std, ce);
   48|       |
   49|     85|	intern->case_id = case_id;
   50|       |
   51|     85|	zend_object *zobj = &intern->std;
   52|     85|	GC_ADD_FLAGS(zobj, GC_NOT_COLLECTABLE);
  ------------------
  |  |  780|     85|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     85|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     85|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     85|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     85|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 85]
  |  |  ------------------
  ------------------
   53|     85|	ZVAL_OBJ(result, zobj);
  ------------------
  |  | 1140|     85|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     85|		zval *__z = (z);						\
  |  | 1142|     85|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     85|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     85|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     85|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     85|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     85|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     85|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     85|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     85|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     85|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     85|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     85|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     85|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 85]
  |  |  ------------------
  ------------------
   54|       |
   55|     85|	zval *zname = OBJ_PROP_NUM(zobj, 0);
  ------------------
  |  |  482|     85|	(&(obj)->properties_table[(num)])
  ------------------
   56|     85|	ZVAL_STR_COPY(zname, case_name);
  ------------------
  |  | 1112|     85|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     85|		zval *__z = (z);								\
  |  | 1114|     85|		zend_string *__s = (s);							\
  |  | 1115|     85|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     85|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     85|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     85|		/* interned strings support */					\
  |  | 1117|     85|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 3, False: 82]
  |  |  ------------------
  |  | 1118|      3|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     82|		} else {										\
  |  | 1120|     82|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     82|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     82|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     82|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     82|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     82|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     82|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     82|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     82|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     82|		}												\
  |  | 1123|     85|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 85]
  |  |  ------------------
  ------------------
   57|       |	/* ZVAL_COPY does not set Z_PROP_FLAG, this needs to be cleared to avoid leaving IS_PROP_REINITABLE set */
   58|     85|	Z_PROP_FLAG_P(zname) = 0;
  ------------------
  |  | 1580|     85|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|     85|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|     85|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   59|       |
   60|     85|	if (backing_value_zv != NULL) {
  ------------------
  |  Branch (60:6): [True: 28, False: 57]
  ------------------
   61|     28|		zval *prop = OBJ_PROP_NUM(zobj, 1);
  ------------------
  |  |  482|     28|	(&(obj)->properties_table[(num)])
  ------------------
   62|       |
   63|     28|		ZVAL_COPY(prop, backing_value_zv);
  ------------------
  |  | 1425|     28|	do {												\
  |  | 1426|     28|		zval *_z1 = (z);								\
  |  | 1427|     28|		const zval *_z2 = (v);							\
  |  | 1428|     28|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     28|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     28|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     28|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     28|	do {												\
  |  |  |  | 1408|     28|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     28|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     28|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     28|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     28|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     28|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     28|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
   64|       |		/* ZVAL_COPY does not set Z_PROP_FLAG, this needs to be cleared to avoid leaving IS_PROP_REINITABLE set */
   65|     28|		Z_PROP_FLAG_P(prop) = 0;
  ------------------
  |  | 1580|     28|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|     28|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|     28|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   66|     28|	}
   67|       |
   68|     85|	return zobj;
   69|     85|}
zend_verify_enum:
  131|    113|{
  132|    113|	zend_verify_enum_properties(ce);
  133|    113|	zend_verify_enum_magic_methods(ce);
  134|    113|	zend_verify_enum_interfaces(ce);
  135|    113|}
zend_register_enum_ce:
  170|      2|{
  171|      2|	zend_ce_unit_enum = register_class_UnitEnum();
  172|      2|	zend_ce_unit_enum->interface_gets_implemented = zend_implement_unit_enum;
  173|       |
  174|      2|	zend_ce_backed_enum = register_class_BackedEnum(zend_ce_unit_enum);
  175|      2|	zend_ce_backed_enum->interface_gets_implemented = zend_implement_backed_enum;
  176|       |
  177|      2|	memcpy(&zend_enum_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
  178|      2|	zend_enum_object_handlers.offset = offsetof(zend_enum_obj, std);
  179|       |	zend_enum_object_handlers.clone_obj = NULL;
  180|      2|	zend_enum_object_handlers.compare = zend_objects_not_comparable;
  181|      2|}
zend_enum_add_interfaces:
  184|    134|{
  185|    134|	uint32_t num_interfaces_before = ce->num_interfaces;
  186|       |
  187|    134|	ce->num_interfaces++;
  188|    134|	if (ce->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  606|    134|#define IS_UNDEF					0
  ------------------
  |  Branch (188:6): [True: 34, False: 100]
  ------------------
  189|     34|		ce->num_interfaces++;
  190|     34|	}
  191|       |
  192|    134|	ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES));
  ------------------
  |  |  112|    134|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (192:2): [True: 0, False: 134]
  |  Branch (192:2): [True: 134, False: 0]
  ------------------
  193|       |
  194|    134|	ce->interface_names = erealloc(ce->interface_names, sizeof(zend_class_name) * ce->num_interfaces);
  ------------------
  |  |  158|    134|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    134|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    134|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    134|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    134|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|       |
  196|    134|	ce->interface_names[num_interfaces_before].name = zend_string_copy(zend_ce_unit_enum->name);
  197|    134|	ce->interface_names[num_interfaces_before].lc_name = ZSTR_INIT_LITERAL("unitenum", 0);
  ------------------
  |  |  141|    134|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  198|       |
  199|    134|	if (ce->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  606|    134|#define IS_UNDEF					0
  ------------------
  |  Branch (199:6): [True: 34, False: 100]
  ------------------
  200|     34|		ce->interface_names[num_interfaces_before + 1].name = zend_string_copy(zend_ce_backed_enum->name);
  201|     34|		ce->interface_names[num_interfaces_before + 1].lc_name = ZSTR_INIT_LITERAL("backedenum", 0);
  ------------------
  |  |  141|     34|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  202|     34|	}
  203|       |
  204|    134|	ce->default_object_handlers = &zend_enum_object_handlers;
  205|    134|}
zend_enum_build_backed_enum_table:
  208|     16|{
  209|     16|	ZEND_ASSERT(ce->ce_flags & ZEND_ACC_ENUM);
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (209:2): [True: 0, False: 16]
  |  Branch (209:2): [True: 16, False: 0]
  ------------------
  210|     16|	ZEND_ASSERT(ce->type == ZEND_USER_CLASS);
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (210:2): [True: 0, False: 16]
  |  Branch (210:2): [True: 16, False: 0]
  ------------------
  211|       |
  212|     16|	uint32_t backing_type = ce->enum_backing_type;
  213|     16|	ZEND_ASSERT(backing_type != IS_UNDEF);
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (213:2): [True: 0, False: 16]
  |  Branch (213:2): [True: 16, False: 0]
  ------------------
  214|       |
  215|     16|	HashTable *backed_enum_table = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|     16|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|     16|	zend_hash_init(backed_enum_table, 0, NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|     16|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  217|     16|	zend_class_set_backed_enum_table(ce, backed_enum_table);
  218|       |
  219|     16|	const zend_string *enum_class_name = ce->name;
  220|       |
  221|     16|	zend_string *name;
  222|     16|	zval *val;
  223|     78|	ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(CE_CONSTANTS_TABLE(ce), name, val) {
  ------------------
  |  | 1389|     23|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     16|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     16|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     16|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     16|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     16|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     16|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     39|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 23, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     23|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     23|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     23|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 23]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     23|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|     23|	_key = _p->key; \
  |  | 1391|     23|	_val = _z;
  ------------------
  |  Branch (223:2): [True: 0, False: 16]
  |  Branch (223:2): [True: 16, False: 0]
  ------------------
  224|     78|		zend_class_constant *c = Z_PTR_P(val);
  ------------------
  |  | 1053|     23|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     23|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  225|     78|		if ((ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE) == 0) {
  ------------------
  |  |  498|     23|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     23|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              		if ((ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE) == 0) {
  ------------------
  |  |  255|     23|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (225:7): [True: 0, False: 23]
  ------------------
  226|      0|			continue;
  227|      0|		}
  228|       |
  229|     23|		zval *c_value = &c->value;
  230|     23|		zval *case_name = zend_enum_fetch_case_name(Z_OBJ_P(c_value));
  ------------------
  |  | 1000|     23|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     23|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  231|     23|		zval *case_value = zend_enum_fetch_case_value(Z_OBJ_P(c_value));
  ------------------
  |  | 1000|     23|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     23|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  232|       |
  233|     23|		if (ce->enum_backing_type != Z_TYPE_P(case_value)) {
  ------------------
  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (233:7): [True: 0, False: 23]
  ------------------
  234|      0|			zend_type_error("Enum case type %s does not match enum backing type %s",
  235|      0|				zend_get_type_by_const(Z_TYPE_P(case_value)),
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  236|      0|				zend_get_type_by_const(ce->enum_backing_type));
  237|      0|			goto failure;
  238|      0|		}
  239|       |
  240|     23|		if (ce->enum_backing_type == IS_LONG) {
  ------------------
  |  |  610|     23|#define IS_LONG						4
  ------------------
  |  Branch (240:7): [True: 16, False: 7]
  ------------------
  241|     16|			zend_long long_key = Z_LVAL_P(case_value);
  ------------------
  |  |  976|     16|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     16|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  242|     16|			const zval *existing_case_name = zend_hash_index_find(backed_enum_table, long_key);
  243|     16|			if (existing_case_name) {
  ------------------
  |  Branch (243:8): [True: 0, False: 16]
  ------------------
  244|      0|				zend_throw_error(NULL, "Duplicate value in enum %s for cases %s and %s",
  245|      0|					ZSTR_VAL(enum_class_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  246|      0|					Z_STRVAL_P(existing_case_name),
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|      0|					ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  248|      0|				goto failure;
  249|      0|			}
  250|     16|			Z_TRY_ADDREF_P(case_name);
  ------------------
  |  | 1285|     16|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     16|	zval *_pz = (pz);				\
  |  | 1287|     16|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     16|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     16|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     16|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 16, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|     16|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|     16|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|     16|	}								\
  |  | 1290|     16|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 16]
  |  |  ------------------
  ------------------
  251|     16|			zend_hash_index_add_new(backed_enum_table, long_key, case_name);
  252|     16|		} else {
  253|      7|			ZEND_ASSERT(ce->enum_backing_type == IS_STRING);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (253:4): [True: 0, False: 7]
  |  Branch (253:4): [True: 7, False: 0]
  ------------------
  254|      7|			zend_string *string_key = Z_STR_P(case_value);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  255|      7|			const zval *existing_case_name = zend_hash_find(backed_enum_table, string_key);
  256|      7|			if (existing_case_name != NULL) {
  ------------------
  |  Branch (256:8): [True: 0, False: 7]
  ------------------
  257|      0|				zend_throw_error(NULL, "Duplicate value in enum %s for cases %s and %s",
  258|      0|					ZSTR_VAL(enum_class_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  259|      0|					Z_STRVAL_P(existing_case_name),
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|      0|					ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  261|      0|				goto failure;
  262|      0|			}
  263|      7|			Z_TRY_ADDREF_P(case_name);
  ------------------
  |  | 1285|      7|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      7|	zval *_pz = (pz);				\
  |  | 1287|      7|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      7|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      7|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      7|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      7|	}								\
  |  | 1290|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
  264|      7|			zend_hash_add_new(backed_enum_table, string_key, case_name);
  265|      7|		}
  266|     23|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     23|		} \
  |  | 1102|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  267|       |
  268|     16|	return SUCCESS;
  269|       |
  270|      0|failure:
  271|      0|	zend_hash_release(backed_enum_table);
  272|       |	zend_class_set_backed_enum_table(ce, NULL);
  273|      0|	return FAILURE;
  274|     16|}
zend_enum_get_case_by_value:
  301|      7|{
  302|      7|	if (ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  298|      7|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
  |  Branch (302:6): [True: 7, False: 0]
  |  Branch (302:37): [True: 3, False: 4]
  ------------------
  303|      3|		if (zend_update_class_constants(ce) == FAILURE) {
  ------------------
  |  Branch (303:7): [True: 0, False: 3]
  ------------------
  304|      0|			return FAILURE;
  305|      0|		}
  306|      3|	}
  307|       |
  308|      7|	const HashTable *backed_enum_table = CE_BACKED_ENUM_TABLE(ce);
  ------------------
  |  |  340|      7|	zend_class_backed_enum_table(ce)
  ------------------
  309|      7|	if (!backed_enum_table) {
  ------------------
  |  Branch (309:6): [True: 1, False: 6]
  ------------------
  310|      1|		goto not_found;
  311|      1|	}
  312|       |
  313|      6|	zval *case_name_zv;
  314|      6|	if (ce->enum_backing_type == IS_LONG) {
  ------------------
  |  |  610|      6|#define IS_LONG						4
  ------------------
  |  Branch (314:6): [True: 4, False: 2]
  ------------------
  315|      4|		case_name_zv = zend_hash_index_find(backed_enum_table, long_key);
  316|      4|	} else {
  317|      2|		ZEND_ASSERT(ce->enum_backing_type == IS_STRING);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (317:3): [True: 0, False: 2]
  |  Branch (317:3): [True: 2, False: 0]
  ------------------
  318|      2|		ZEND_ASSERT(string_key != NULL);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (318:3): [True: 0, False: 2]
  |  Branch (318:3): [True: 2, False: 0]
  ------------------
  319|      2|		case_name_zv = zend_hash_find(backed_enum_table, string_key);
  320|      2|	}
  321|       |
  322|      6|	if (case_name_zv == NULL) {
  ------------------
  |  Branch (322:6): [True: 2, False: 4]
  ------------------
  323|      3|not_found:
  324|      3|		if (try_from) {
  ------------------
  |  Branch (324:7): [True: 1, False: 2]
  ------------------
  325|      1|			*result = NULL;
  326|      1|			return SUCCESS;
  327|      1|		}
  328|       |
  329|      2|		if (ce->enum_backing_type == IS_LONG) {
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
  |  Branch (329:7): [True: 2, False: 0]
  ------------------
  330|      2|			zend_value_error(ZEND_LONG_FMT " is not a valid backing value for enum %s", long_key, ZSTR_VAL(ce->name));
  ------------------
  |  |   54|      2|# define ZEND_LONG_FMT "%" PRId64
  ------------------
              			zend_value_error(ZEND_LONG_FMT " is not a valid backing value for enum %s", long_key, ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  331|      2|		} else {
  332|      0|			ZEND_ASSERT(ce->enum_backing_type == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (332:4): [True: 0, False: 0]
  |  Branch (332:4): [True: 0, False: 0]
  ------------------
  333|      0|			zend_value_error("\"%s\" is not a valid backing value for enum %s", ZSTR_VAL(string_key), ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_value_error("\"%s\" is not a valid backing value for enum %s", ZSTR_VAL(string_key), ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  334|      0|		}
  335|      2|		return FAILURE;
  336|      2|	}
  337|       |
  338|       |	// TODO: We might want to store pointers to constants in backed_enum_table instead of names,
  339|       |	// to make this lookup more efficient.
  340|      4|	ZEND_ASSERT(Z_TYPE_P(case_name_zv) == IS_STRING);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (340:2): [True: 0, False: 4]
  |  Branch (340:2): [True: 4, False: 0]
  ------------------
  341|      4|	zend_class_constant *c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), Z_STR_P(case_name_zv));
  ------------------
  |  |  334|      4|	zend_class_constants_table(ce)
  ------------------
              	zend_class_constant *c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), Z_STR_P(case_name_zv));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  342|      4|	ZEND_ASSERT(c != NULL);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (342:2): [True: 0, False: 4]
  |  Branch (342:2): [True: 4, False: 0]
  ------------------
  343|      4|	zval *case_zv = &c->value;
  344|      4|	if (Z_TYPE_P(case_zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(case_zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      4|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (344:6): [True: 0, False: 4]
  ------------------
  345|      0|		if (zval_update_constant_ex(case_zv, c->ce) == FAILURE) {
  ------------------
  |  Branch (345:7): [True: 0, False: 0]
  ------------------
  346|      0|			return FAILURE;
  347|      0|		}
  348|      0|	}
  349|       |
  350|      4|	*result = Z_OBJ_P(case_zv);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  351|      4|	return SUCCESS;
  352|      4|}
zend_enum_register_funcs:
  451|    124|{
  452|    124|	const uint32_t fn_flags =
  453|    124|		ZEND_ACC_PUBLIC|ZEND_ACC_STATIC|ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_ARENA_ALLOCATED;
  ------------------
  |  |  219|    124|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              		ZEND_ACC_PUBLIC|ZEND_ACC_STATIC|ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_ARENA_ALLOCATED;
  ------------------
  |  |  227|    124|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              		ZEND_ACC_PUBLIC|ZEND_ACC_STATIC|ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_ARENA_ALLOCATED;
  ------------------
  |  |  355|    124|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
              		ZEND_ACC_PUBLIC|ZEND_ACC_STATIC|ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_ARENA_ALLOCATED;
  ------------------
  |  |  393|    124|#define ZEND_ACC_ARENA_ALLOCATED         (1 << 25) /*     |  X  |     |     */
  ------------------
  454|    124|	zend_internal_function *cases_function = zend_arena_calloc(&CG(arena), sizeof(zend_internal_function), 1);
  ------------------
  |  |   35|    124|# define CG(v) (compiler_globals.v)
  ------------------
  455|    124|	cases_function->handler = zend_enum_cases_func;
  456|    124|	cases_function->function_name = ZSTR_KNOWN(ZEND_STR_CASES);
  457|    124|	cases_function->fn_flags = fn_flags;
  458|    124|	cases_function->doc_comment = NULL;
  459|    124|	cases_function->arg_info = zarginfo_class_UnitEnum_cases + 1;
  460|    124|	zend_enum_register_func(ce, ZEND_STR_CASES, cases_function);
  461|       |
  462|    124|	if (ce->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  606|    124|#define IS_UNDEF					0
  ------------------
  |  Branch (462:6): [True: 30, False: 94]
  ------------------
  463|     30|		zend_internal_function *from_function = zend_arena_calloc(&CG(arena), sizeof(zend_internal_function), 1);
  ------------------
  |  |   35|     30|# define CG(v) (compiler_globals.v)
  ------------------
  464|     30|		from_function->handler = zend_enum_from_func;
  465|     30|		from_function->function_name = ZSTR_KNOWN(ZEND_STR_FROM);
  466|     30|		from_function->fn_flags = fn_flags;
  467|     30|		from_function->doc_comment = NULL;
  468|     30|		from_function->num_args = 1;
  469|     30|		from_function->required_num_args = 1;
  470|     30|		from_function->arg_info = zarginfo_class_BackedEnum_from + 1;
  471|     30|		zend_enum_register_func(ce, ZEND_STR_FROM, from_function);
  472|       |
  473|     30|		zend_internal_function *try_from_function = zend_arena_calloc(&CG(arena), sizeof(zend_internal_function), 1);
  ------------------
  |  |   35|     30|# define CG(v) (compiler_globals.v)
  ------------------
  474|     30|		try_from_function->handler = zend_enum_try_from_func;
  475|     30|		try_from_function->function_name = ZSTR_KNOWN(ZEND_STR_TRYFROM);
  476|     30|		try_from_function->fn_flags = fn_flags;
  477|       |		try_from_function->doc_comment = NULL;
  478|     30|		try_from_function->num_args = 1;
  479|     30|		try_from_function->required_num_args = 1;
  480|     30|		try_from_function->arg_info = zarginfo_class_BackedEnum_tryFrom + 1;
  481|     30|		zend_enum_register_func(ce, ZEND_STR_TRYFROM_LOWERCASE, try_from_function);
  482|     30|	}
  483|    124|}
zend_enum_register_props:
  486|    158|{
  487|    158|	ce->ce_flags |= ZEND_ACC_NO_DYNAMIC_PROPERTIES;
  ------------------
  |  |  301|    158|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  488|       |
  489|    158|	zval name_default_value;
  490|    158|	ZVAL_UNDEF(&name_default_value);
  ------------------
  |  | 1055|    158|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    158|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    158|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    158|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    158|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    158|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 158]
  |  |  ------------------
  ------------------
  491|    158|	zend_type name_type = ZEND_TYPE_INIT_CODE(IS_STRING, 0, 0);
  ------------------
  |  |  293|    158|	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
  |  |  ------------------
  |  |  |  |  290|  1.26k|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:29): [Folded, False: 158]
  |  |  |  |  |  Branch (290:29): [Folded, False: 158]
  |  |  |  |  |  Branch (290:29): [Folded, False: 158]
  |  |  |  |  |  Branch (290:29): [Folded, False: 158]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|    158|		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
  ------------------
  492|    158|	zend_declare_typed_property(ce, ZSTR_KNOWN(ZEND_STR_NAME), &name_default_value, ZEND_ACC_PUBLIC | ZEND_ACC_READONLY, NULL, name_type);
  ------------------
  |  |  219|    158|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(ce, ZSTR_KNOWN(ZEND_STR_NAME), &name_default_value, ZEND_ACC_PUBLIC | ZEND_ACC_READONLY, NULL, name_type);
  ------------------
  |  |  237|    158|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  493|       |
  494|    158|	if (ce->enum_backing_type != IS_UNDEF) {
  ------------------
  |  |  606|    158|#define IS_UNDEF					0
  ------------------
  |  Branch (494:6): [True: 36, False: 122]
  ------------------
  495|     36|		zval value_default_value;
  496|     36|		ZVAL_UNDEF(&value_default_value);
  ------------------
  |  | 1055|     36|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     36|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     36|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     36|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     36|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     36|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 36]
  |  |  ------------------
  ------------------
  497|     36|		zend_type value_type = ZEND_TYPE_INIT_CODE(ce->enum_backing_type, 0, 0);
  ------------------
  |  |  293|     36|	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
  |  |  ------------------
  |  |  |  |  290|    288|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:29): [True: 0, False: 36]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 36]
  |  |  |  |  |  Branch (290:29): [True: 0, False: 36]
  |  |  |  |  |  Branch (290:29): [Folded, False: 36]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|     36|		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
  ------------------
  498|     36|		zend_declare_typed_property(ce, ZSTR_KNOWN(ZEND_STR_VALUE), &value_default_value, ZEND_ACC_PUBLIC | ZEND_ACC_READONLY, NULL, value_type);
  ------------------
  |  |  219|     36|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              		zend_declare_typed_property(ce, ZSTR_KNOWN(ZEND_STR_VALUE), &value_default_value, ZEND_ACC_PUBLIC | ZEND_ACC_READONLY, NULL, value_type);
  ------------------
  |  |  237|     36|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  499|     36|	}
  500|    158|}
zend_register_internal_enum:
  516|     24|{
  517|     24|	ZEND_ASSERT(type == IS_UNDEF || type == IS_LONG || type == IS_STRING);
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (517:2): [True: 24, False: 0]
  |  Branch (517:2): [True: 0, False: 0]
  |  Branch (517:2): [True: 0, False: 0]
  |  Branch (517:2): [True: 22, False: 2]
  |  Branch (517:2): [True: 0, False: 2]
  |  Branch (517:2): [True: 2, False: 0]
  ------------------
  518|       |
  519|     24|	zend_class_entry tmp_ce;
  520|     24|	INIT_CLASS_ENTRY_EX(tmp_ce, name, strlen(name), functions);
  ------------------
  |  |  285|     24|	{															\
  |  |  286|     24|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  287|     24|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  288|     24|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  289|     24|		class_container.info.internal.builtin_functions = functions;	\
  |  |  290|     24|	}
  ------------------
  521|       |
  522|     24|	zend_class_entry *ce = zend_register_internal_class(&tmp_ce);
  523|     24|	ce->ce_flags |= ZEND_ACC_ENUM;
  ------------------
  |  |  284|     24|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  524|     24|	ce->enum_backing_type = type;
  525|     24|	if (type != IS_UNDEF) {
  ------------------
  |  |  606|     24|#define IS_UNDEF					0
  ------------------
  |  Branch (525:6): [True: 2, False: 22]
  ------------------
  526|      2|		HashTable *backed_enum_table = pemalloc(sizeof(HashTable), 1);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, Folded]
  |  |  ------------------
  ------------------
  527|      2|		zend_hash_init(backed_enum_table, 0, NULL, ZVAL_PTR_DTOR, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  528|      2|		zend_class_set_backed_enum_table(ce, backed_enum_table);
  529|      2|	}
  530|       |
  531|     24|	zend_enum_register_props(ce);
  532|     24|	if (type == IS_UNDEF) {
  ------------------
  |  |  606|     24|#define IS_UNDEF					0
  ------------------
  |  Branch (532:6): [True: 22, False: 2]
  ------------------
  533|     22|		zend_register_functions(
  534|     22|			ce, unit_enum_methods, &ce->function_table, EG(current_module)->type);
  ------------------
  |  |   45|     22|# define EG(v) (executor_globals.v)
  ------------------
  535|     22|		zend_class_implements(ce, 1, zend_ce_unit_enum);
  536|     22|	} else {
  537|      2|		zend_register_functions(
  538|      2|			ce, backed_enum_methods, &ce->function_table, EG(current_module)->type);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  539|      2|		zend_class_implements(ce, 1, zend_ce_backed_enum);
  540|      2|	}
  541|       |
  542|     24|	ce->default_object_handlers = &zend_enum_object_handlers;
  543|       |
  544|     24|	return ce;
  545|     24|}
zend_enum_next_case_id:
  599|    413|{
  600|    995|	ZEND_HASH_REVERSE_FOREACH_VAL(&enum_class->constants_table, zval *zv) {
  ------------------
  |  | 1121|    413|	_ZEND_HASH_REVERSE_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1036|    413|#define _ZEND_HASH_REVERSE_FOREACH_VAL(_ht) do { \
  |  |  |  | 1037|    413|		const HashTable *__ht = (_ht); \
  |  |  |  | 1038|    413|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1039|    413|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|    413|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|    413|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|    413|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|    413|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1040|    413|		zval *_z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    413|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  ------------------
  |  |  |  | 1041|    413|		for (;_idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1041:9): [True: 291, False: 122]
  |  |  |  |  ------------------
  |  |  |  | 1042|    291|			_z = ZEND_HASH_PREV_ELEMENT(_z, _size); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1026|    291|	((zval*)(((char*)(_el)) - (_size)))
  |  |  |  |  ------------------
  |  |  |  | 1043|    291|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    291|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 291]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|    291|	_val = _z;
  ------------------
  601|    995|		zend_class_constant *c = Z_PTR_P(zv);
  ------------------
  |  | 1053|    291|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    291|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  602|    995|		if (!(ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  498|    291|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    291|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              		if (!(ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  255|    291|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (602:7): [True: 0, False: 291]
  ------------------
  603|      0|			continue;
  604|      0|		}
  605|    291|		ZEND_ASSERT(Z_TYPE(c->value) == IS_CONSTANT_AST);
  ------------------
  |  |  112|    291|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (605:3): [True: 0, False: 291]
  |  Branch (605:3): [True: 291, False: 0]
  ------------------
  606|    291|		zend_ast *ast = Z_ASTVAL(c->value);
  ------------------
  |  | 1040|    291|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  ------------------
  |  |  |  | 1038|    291|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  ------------------
  ------------------
  607|       |
  608|    291|		ZEND_ASSERT(ast->kind == ZEND_AST_CONST_ENUM_INIT);
  ------------------
  |  |  112|    291|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (608:3): [True: 0, False: 291]
  |  Branch (608:3): [True: 291, False: 0]
  ------------------
  609|    291|		return Z_LVAL_P(zend_ast_get_zval(ast->child[1])) + 1;
  ------------------
  |  |  976|    291|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    291|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  610|    291|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    291|		} \
  |  | 1102|    413|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 122]
  |  |  ------------------
  ------------------
  611|       |
  612|    122|	return 1;
  613|    413|}
zend_enum_add_case:
  616|    288|{
  617|    288|	if (value) {
  ------------------
  |  Branch (617:6): [True: 4, False: 284]
  ------------------
  618|      4|		ZEND_ASSERT(ce->enum_backing_type == Z_TYPE_P(value));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (618:3): [True: 0, False: 4]
  |  Branch (618:3): [True: 4, False: 0]
  ------------------
  619|      4|		if (Z_TYPE_P(value) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(value))) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(value))) {
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
              		if (Z_TYPE_P(value) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR_P(value))) {
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (619:7): [True: 4, False: 0]
  |  Branch (619:39): [True: 4, False: 0]
  ------------------
  620|      4|			zval_make_interned_string(value);
  621|      4|		}
  622|       |
  623|      4|		HashTable *backed_enum_table = CE_BACKED_ENUM_TABLE(ce);
  ------------------
  |  |  340|      4|	zend_class_backed_enum_table(ce)
  ------------------
  624|       |
  625|      4|		zval case_name_zv;
  626|      4|		ZVAL_STR(&case_name_zv, case_name);
  ------------------
  |  | 1088|      4|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      4|		zval *__z = (z);						\
  |  | 1090|      4|		zend_string *__s = (s);					\
  |  | 1091|      4|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      4|		/* interned strings support */			\
  |  | 1093|      4|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 4, False: 0]
  |  |  ------------------
  |  | 1094|      4|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      4|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  627|      4|		if (Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  610|      4|#define IS_LONG						4
  ------------------
  |  Branch (627:7): [True: 0, False: 4]
  ------------------
  628|      0|			zend_hash_index_add_new(backed_enum_table, Z_LVAL_P(value), &case_name_zv);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  629|      4|		} else {
  630|      4|			zend_hash_add_new(backed_enum_table, Z_STR_P(value), &case_name_zv);
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  631|      4|		}
  632|    284|	} else {
  633|    284|		ZEND_ASSERT(ce->enum_backing_type == IS_UNDEF);
  ------------------
  |  |  112|    284|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (633:3): [True: 0, False: 284]
  |  Branch (633:3): [True: 284, False: 0]
  ------------------
  634|    284|	}
  635|       |
  636|    288|	int case_id = zend_enum_next_case_id(ce);
  637|       |
  638|    288|	zval ast_zv;
  639|    288|	Z_TYPE_INFO(ast_zv) = IS_CONSTANT_AST;
  ------------------
  |  |  677|    288|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              	Z_TYPE_INFO(ast_zv) = IS_CONSTANT_AST;
  ------------------
  |  |  617|    288|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  640|    288|	Z_AST(ast_zv) = create_enum_case_ast(ce->name, case_id, case_name, value);
  ------------------
  |  | 1035|    288|#define Z_AST(zval)					(zval).value.ast
  ------------------
  641|    288|	zend_class_constant *c = zend_declare_class_constant_ex(
  642|    288|		ce, case_name, &ast_zv, ZEND_ACC_PUBLIC, NULL);
  ------------------
  |  |  219|    288|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  643|    288|	ZEND_CLASS_CONST_FLAGS(c) |= ZEND_CLASS_CONST_IS_CASE;
  ------------------
  |  |  498|    288|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    288|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	ZEND_CLASS_CONST_FLAGS(c) |= ZEND_CLASS_CONST_IS_CASE;
  ------------------
  |  |  255|    288|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  644|    288|}
zend_enum_add_case_cstr:
  647|    288|{
  648|    288|	zend_string *name_str = zend_string_init_interned(name, strlen(name), 1);
  649|    288|	zend_enum_add_case(ce, name_str, value);
  650|    288|	zend_string_release(name_str);
  651|    288|}
zend_enum_startup:
  677|      2|{
  678|      4|	for (size_t i = 0; i < sizeof(zarginfo_class_UnitEnum_cases)/sizeof(zend_arg_info); i++) {
  ------------------
  |  Branch (678:21): [True: 2, False: 2]
  ------------------
  679|      2|		zend_convert_internal_arg_info(&zarginfo_class_UnitEnum_cases[i], &arginfo_class_UnitEnum_cases[i], i == 0, true);
  680|      2|	}
  681|      6|	for (size_t i = 0; i < sizeof(zarginfo_class_BackedEnum_from)/sizeof(zend_arg_info); i++) {
  ------------------
  |  Branch (681:21): [True: 4, False: 2]
  ------------------
  682|      4|		zend_convert_internal_arg_info(&zarginfo_class_BackedEnum_from[i], &arginfo_class_BackedEnum_from[i], i == 0, true);
  683|      4|	}
  684|      6|	for (size_t i = 0; i < sizeof(zarginfo_class_BackedEnum_tryFrom)/sizeof(zend_arg_info); i++) {
  ------------------
  |  Branch (684:21): [True: 4, False: 2]
  ------------------
  685|       |		zend_convert_internal_arg_info(&zarginfo_class_BackedEnum_tryFrom[i], &arginfo_class_BackedEnum_tryFrom[i], i == 0, true);
  686|      4|	}
  687|      2|}
zend_enum.c:zend_verify_enum_properties:
   72|    113|{
   73|    113|	const zend_property_info *property_info;
   74|       |
   75|    508|	ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, property_info) {
  ------------------
  |  | 1341|    141|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    113|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    113|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    113|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    113|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    113|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    113|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    113|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    254|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 141, False: 113]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    141|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    141|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    141|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 141]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    141|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    141|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 141]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    141|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    113|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    113|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (75:2): [True: 0, False: 113]
  |  Branch (75:2): [True: 113, False: 0]
  ------------------
   76|    508|		if (zend_string_equals(property_info->name, ZSTR_KNOWN(ZEND_STR_NAME))) {
  ------------------
  |  Branch (76:7): [True: 113, False: 28]
  ------------------
   77|    113|			continue;
   78|    113|		}
   79|     28|		if (
   80|     28|			ce->enum_backing_type != IS_UNDEF
  ------------------
  |  |  606|     56|#define IS_UNDEF					0
  ------------------
  |  Branch (80:4): [True: 28, False: 0]
  ------------------
   81|     28|			&& zend_string_equals(property_info->name, ZSTR_KNOWN(ZEND_STR_VALUE))
  ------------------
  |  Branch (81:7): [True: 28, False: 0]
  ------------------
   82|     28|		) {
   83|     28|			continue;
   84|     28|		}
   85|       |		// FIXME: File/line number for traits?
   86|      0|		zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include properties",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
   87|      0|			ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   88|     28|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     28|		} \
  |  | 1102|    113|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 113]
  |  |  ------------------
  ------------------
   89|    113|}
zend_enum.c:zend_verify_enum_magic_methods:
   92|    113|{
   93|       |	// Only __get, __call, __debugInfo and __invoke are allowed
   94|       |
   95|    113|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(constructor, "__construct");
  ------------------
  |  |   28|    113|	do { \
  |  |   29|    113|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 2, False: 111]
  |  |  ------------------
  |  |   30|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      2|		} \
  |  |   32|    113|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 111]
  |  |  ------------------
  ------------------
   96|    111|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(destructor, "__destruct");
  ------------------
  |  |   28|    111|	do { \
  |  |   29|    111|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 110]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    111|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 110]
  |  |  ------------------
  ------------------
   97|    110|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(clone, "__clone");
  ------------------
  |  |   28|    110|	do { \
  |  |   29|    110|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 109]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    110|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 109]
  |  |  ------------------
  ------------------
   98|    109|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__get, "__get");
  ------------------
  |  |   28|    109|	do { \
  |  |   29|    109|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 108]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    109|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 108]
  |  |  ------------------
  ------------------
   99|    108|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__set, "__set");
  ------------------
  |  |   28|    108|	do { \
  |  |   29|    108|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 107]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    108|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 107]
  |  |  ------------------
  ------------------
  100|    107|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__unset, "__unset");
  ------------------
  |  |   28|    107|	do { \
  |  |   29|    107|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 106]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    107|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 106]
  |  |  ------------------
  ------------------
  101|    106|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__isset, "__isset");
  ------------------
  |  |   28|    106|	do { \
  |  |   29|    106|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 105]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    106|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 105]
  |  |  ------------------
  ------------------
  102|    105|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__tostring, "__toString");
  ------------------
  |  |   28|    105|	do { \
  |  |   29|    105|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 104]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    105|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 104]
  |  |  ------------------
  ------------------
  103|    104|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__serialize, "__serialize");
  ------------------
  |  |   28|    104|	do { \
  |  |   29|    104|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 103]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    104|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 103]
  |  |  ------------------
  ------------------
  104|    103|	ZEND_ENUM_DISALLOW_MAGIC_METHOD(__unserialize, "__unserialize");
  ------------------
  |  |   28|    103|	do { \
  |  |   29|    103|		if (ce->propertyName) { \
  |  |  ------------------
  |  |  |  Branch (29:7): [True: 1, False: 102]
  |  |  ------------------
  |  |   30|      1|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |   31|      1|		} \
  |  |   32|    103|	} while (0);
  |  |  ------------------
  |  |  |  Branch (32:11): [Folded, False: 102]
  |  |  ------------------
  ------------------
  105|       |
  106|    102|	static const char *const forbidden_methods[] = {
  107|    102|		"__sleep",
  108|    102|		"__wakeup",
  109|    102|		"__set_state",
  110|    102|	};
  111|       |
  112|    102|	uint32_t forbidden_methods_length = sizeof(forbidden_methods) / sizeof(forbidden_methods[0]);
  113|    403|	for (uint32_t i = 0; i < forbidden_methods_length; ++i) {
  ------------------
  |  Branch (113:23): [True: 303, False: 100]
  ------------------
  114|    303|		const char *forbidden_method = forbidden_methods[i];
  115|       |
  116|    303|		if (zend_hash_str_exists(&ce->function_table, forbidden_method, strlen(forbidden_method))) {
  ------------------
  |  Branch (116:7): [True: 2, False: 301]
  ------------------
  117|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), forbidden_method);
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), forbidden_method);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  118|      2|		}
  119|    303|	}
  120|    102|}
zend_enum.c:zend_verify_enum_interfaces:
  123|    100|{
  124|    100|	if (zend_class_implements_interface(ce, zend_ce_serializable)) {
  ------------------
  |  Branch (124:6): [True: 0, False: 100]
  ------------------
  125|      0|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  126|      0|			"Enum %s cannot implement the Serializable interface", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  127|      0|	}
  128|    100|}
zend_enum.c:zend_implement_unit_enum:
  138|    141|{
  139|    141|	if (class_type->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|    141|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (139:6): [True: 138, False: 3]
  ------------------
  140|    138|		return SUCCESS;
  141|    138|	}
  142|       |
  143|      3|	zend_error_noreturn(E_ERROR, "Non-enum class %s cannot implement interface %s",
  ------------------
  |  |   22|      3|#define E_ERROR				(1<<0L)
  ------------------
  144|      3|		ZSTR_VAL(class_type->name),
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  145|      3|		ZSTR_VAL(interface->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  146|       |
  147|      0|	return FAILURE;
  148|    141|}
zend_enum.c:zend_implement_backed_enum:
  151|     31|{
  152|     31|	if (!(class_type->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|     31|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (152:6): [True: 0, False: 31]
  ------------------
  153|      0|		zend_error_noreturn(E_ERROR, "Non-enum class %s cannot implement interface %s",
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  154|      0|			ZSTR_VAL(class_type->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  155|      0|			ZSTR_VAL(interface->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  156|      0|		return FAILURE;
  157|      0|	}
  158|       |
  159|     31|	if (class_type->enum_backing_type == IS_UNDEF) {
  ------------------
  |  |  606|     31|#define IS_UNDEF					0
  ------------------
  |  Branch (159:6): [True: 1, False: 30]
  ------------------
  160|      1|		zend_error_noreturn(E_ERROR, "Non-backed enum %s cannot implement interface %s",
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
  161|      1|			ZSTR_VAL(class_type->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  162|      1|			ZSTR_VAL(interface->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  163|      0|		return FAILURE;
  164|      1|	}
  165|       |
  166|     30|	return SUCCESS;
  167|     31|}
zend_enum.c:zend_enum_cases_func:
  277|      4|{
  278|      4|	zend_class_entry *ce = execute_data->func->common.scope;
  279|      4|	zend_class_constant *c;
  280|       |
  281|      4|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      4|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      4|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  282|       |
  283|      4|	array_init(return_value);
  284|       |
  285|     28|	ZEND_HASH_MAP_FOREACH_PTR(CE_CONSTANTS_TABLE(ce), c) {
  ------------------
  |  | 1341|     10|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 10, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     10|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     10|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     10|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 10]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     10|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     10|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (285:2): [True: 0, False: 4]
  |  Branch (285:2): [True: 4, False: 0]
  ------------------
  286|     28|		if (!(ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  498|     10|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     10|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              		if (!(ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  255|     10|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (286:7): [True: 1, False: 9]
  ------------------
  287|      1|			continue;
  288|      1|		}
  289|      9|		zval *zv = &c->value;
  290|      9|		if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      9|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (290:7): [True: 9, False: 0]
  ------------------
  291|      9|			if (zval_update_constant_ex(zv, c->ce) == FAILURE) {
  ------------------
  |  Branch (291:8): [True: 0, False: 9]
  ------------------
  292|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (292:5): [True: 0, False: 0]
  |  Branch (292:5): [True: 0, False: 0]
  ------------------
  293|      0|			}
  294|      9|		}
  295|      9|		Z_ADDREF_P(zv);
  ------------------
  |  | 1277|      9|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  296|      9|		zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), zv);
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  297|      9|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      9|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  298|      4|}
zend_enum.c:zend_enum_register_func:
  426|    183|static void zend_enum_register_func(zend_class_entry *ce, zend_known_string_id name_id, zend_internal_function *zif) {
  427|    183|	zend_string *name = ZSTR_KNOWN(name_id);
  428|    183|	zif->type = ZEND_INTERNAL_FUNCTION;
  429|    183|	zif->module = EG(current_module);
  ------------------
  |  |   45|    183|# define EG(v) (executor_globals.v)
  ------------------
  430|    183|	zif->scope = ce;
  431|    183|	zif->T = ZEND_OBSERVER_ENABLED;
  ------------------
  |  |   46|    183|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  ------------------
  432|    183|	if (EG(active)) { // at run-time
  ------------------
  |  |   45|    183|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 183, False: 0]
  |  |  ------------------
  ------------------
  433|    183|		if (CG(compiler_options) & ZEND_COMPILE_PRELOAD) {
  ------------------
  |  |   35|    183|# define CG(v) (compiler_globals.v)
  ------------------
              		if (CG(compiler_options) & ZEND_COMPILE_PRELOAD) {
  ------------------
  |  | 1304|    183|#define ZEND_COMPILE_PRELOAD                    (1<<15)
  ------------------
  |  Branch (433:7): [True: 0, False: 183]
  ------------------
  434|      0|			zif->fn_flags |= ZEND_ACC_PRELOADED;
  ------------------
  |  |  250|      0|#define ZEND_ACC_PRELOADED               (1 << 10) /*  X  |  X  |     |     */
  ------------------
  435|      0|		}
  436|    183|		ZEND_MAP_PTR_INIT(zif->run_time_cache, zend_arena_calloc(&CG(arena), 1, zend_internal_run_time_cache_reserved_size()));
  ------------------
  |  |   38|    183|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|    183|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|    183|	ptr ## __ptr
  |  |  ------------------
  |  |   40|    183|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 183]
  |  |  ------------------
  ------------------
  437|    183|	} else {
  438|       |#ifdef ZTS
  439|       |		ZEND_MAP_PTR_NEW_STATIC(zif->run_time_cache);
  440|       |#else
  441|      0|		ZEND_MAP_PTR_INIT(zif->run_time_cache, NULL);
  ------------------
  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   40|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  442|      0|#endif
  443|      0|	}
  444|       |
  445|    183|	if (!zend_hash_add_ptr(&ce->function_table, name, zif)) {
  ------------------
  |  Branch (445:6): [True: 2, False: 181]
  ------------------
  446|      2|		zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              		zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  447|      2|	}
  448|    183|}
zend_enum.c:zend_enum_from_func:
  417|      5|{
  418|      5|	zend_enum_from_base(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  ------------------
  |  |  587|      5|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  419|      5|}
zend_enum.c:zend_enum_from_base:
  355|      7|{
  356|      7|	zend_class_entry *ce = execute_data->func->common.scope;
  357|      7|	bool release_string = false;
  358|      7|	zend_string *string_key = NULL;
  359|      7|	zend_long long_key = 0;
  360|       |
  361|      7|	if (ce->enum_backing_type == IS_LONG) {
  ------------------
  |  |  610|      7|#define IS_LONG						4
  ------------------
  |  Branch (361:6): [True: 4, False: 3]
  ------------------
  362|     12|		ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  363|     16|			Z_PARAM_LONG(long_key)
  ------------------
  |  | 1905|      4|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (363:4): [True: 4, False: 0]
  |  Branch (363:4): [True: 0, False: 0]
  |  Branch (363:4): [True: 4, False: 0]
  |  Branch (363:4): [True: 0, False: 0]
  |  Branch (363:4): [True: 4, False: 0]
  |  Branch (363:4): [True: 0, False: 0]
  |  Branch (363:4): [True: 0, False: 4]
  |  Branch (363:4): [True: 4, False: 0]
  |  Branch (363:4): [True: 0, False: 0]
  |  Branch (363:4): [True: 0, False: 0]
  ------------------
  364|      4|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (364:3): [True: 4, False: 0]
  |  Branch (364:3): [True: 0, False: 0]
  |  Branch (364:3): [True: 4, False: 0]
  |  Branch (364:3): [True: 0, False: 0]
  ------------------
  365|      4|	} else {
  366|      3|		ZEND_ASSERT(ce->enum_backing_type == IS_STRING);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (366:3): [True: 0, False: 3]
  |  Branch (366:3): [True: 3, False: 0]
  ------------------
  367|       |
  368|      3|		if (ZEND_ARG_USES_STRICT_TYPES()) {
  ------------------
  |  |  743|      3|	(EG(current_execute_data)->prev_execute_data && \
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (743:3): [True: 3, False: 0]
  |  |  ------------------
  |  |  744|      3|	 EG(current_execute_data)->prev_execute_data->func && \
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (744:3): [True: 3, False: 0]
  |  |  ------------------
  |  |  745|      3|	 ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data)->prev_execute_data))
  |  |  ------------------
  |  |  |  |  737|      3|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      3|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (737:2): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      0|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      0|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      0|		const int _flags = (flags); \
  |  |  |  | 1599|      0|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      0|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      0|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      0|		uint32_t _i = 0; \
  |  |  |  | 1603|      0|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      0|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      0|		char *_error = NULL; \
  |  |  |  | 1606|      0|		bool _dummy = 0; \
  |  |  |  | 1607|      0|		bool _optional = 0; \
  |  |  |  | 1608|      0|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      0|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      0|		((void)_i); \
  |  |  |  | 1610|      0|		((void)_real_arg); \
  |  |  |  | 1611|      0|		((void)_arg); \
  |  |  |  | 1612|      0|		((void)_expected_type); \
  |  |  |  | 1613|      0|		((void)_error); \
  |  |  |  | 1614|      0|		((void)_optional); \
  |  |  |  | 1615|      0|		((void)_dummy); \
  |  |  |  | 1616|      0|		\
  |  |  |  | 1617|      0|		do { \
  |  |  |  | 1618|      0|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      0|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      0|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|      0|				Z_PARAM_STR(string_key)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  |  Branch (370:5): [True: 0, False: 0]
  ------------------
  371|      0|			ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      0|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (371:4): [True: 0, False: 0]
  |  Branch (371:4): [True: 0, False: 0]
  |  Branch (371:4): [True: 0, False: 0]
  |  Branch (371:4): [True: 0, False: 0]
  ------------------
  372|      3|		} else {
  373|       |			// We allow long keys so that coercion to string doesn't happen implicitly. The JIT
  374|       |			// skips deallocation of params that don't require it. In the case of from/tryFrom
  375|       |			// passing int to from(int|string) looks like no coercion will happen, so the JIT
  376|       |			// won't emit a dtor call. Thus we allocate/free the string manually.
  377|      9|			ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  378|     15|				Z_PARAM_STR_OR_LONG(string_key, long_key)
  ------------------
  |  | 2181|      3|	Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, _dummy, 0);
  |  |  ------------------
  |  |  |  | 2173|      3|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2174|      3|	if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2175|      0|		_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2175:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2176|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2177|      0|		break; \
  |  |  |  | 2178|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (378:5): [True: 3, False: 0]
  |  Branch (378:5): [True: 0, False: 0]
  |  Branch (378:5): [True: 3, False: 0]
  |  Branch (378:5): [True: 0, False: 0]
  |  Branch (378:5): [True: 3, False: 0]
  |  Branch (378:5): [True: 0, False: 0]
  |  Branch (378:5): [True: 0, False: 3]
  |  Branch (378:5): [True: 3, False: 0]
  |  Branch (378:5): [True: 0, False: 0]
  |  Branch (378:5): [True: 0, False: 0]
  ------------------
  379|     15|			ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (379:4): [True: 3, False: 0]
  |  Branch (379:4): [True: 0, False: 0]
  |  Branch (379:4): [True: 3, False: 0]
  |  Branch (379:4): [True: 0, False: 0]
  ------------------
  380|       |
  381|      3|			if (string_key == NULL) {
  ------------------
  |  Branch (381:8): [True: 0, False: 3]
  ------------------
  382|      0|				release_string = true;
  383|      0|				string_key = zend_long_to_str(long_key);
  384|      0|			}
  385|      3|		}
  386|      3|	}
  387|       |
  388|      7|	zend_object *case_obj;
  389|      7|	if (zend_enum_get_case_by_value(&case_obj, ce, long_key, string_key, try_from) == FAILURE) {
  ------------------
  |  Branch (389:6): [True: 2, False: 5]
  ------------------
  390|      2|		goto throw;
  391|      2|	}
  392|       |
  393|      5|	if (case_obj == NULL) {
  ------------------
  |  Branch (393:6): [True: 1, False: 4]
  ------------------
  394|      1|		ZEND_ASSERT(try_from);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (394:3): [True: 0, False: 1]
  |  Branch (394:3): [True: 1, False: 0]
  ------------------
  395|      1|		goto return_null;
  396|      1|	}
  397|       |
  398|      4|	if (release_string) {
  ------------------
  |  Branch (398:6): [True: 0, False: 4]
  ------------------
  399|      0|		zend_string_release(string_key);
  400|      0|	}
  401|      4|	RETURN_OBJ_COPY(case_obj);
  ------------------
  |  | 1064|      4|#define RETURN_OBJ_COPY(r)				do { RETVAL_OBJ_COPY(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1038|      4|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1146|      4|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  |  |  | 1147|      4|		zval *__z = (z);						\
  |  |  |  |  |  | 1148|      4|		zend_object *__o = (o);					\
  |  |  |  |  |  | 1149|      4|		GC_ADDREF(__o);							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1150|      4|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1151|      4|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      4|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1152|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1152:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1064:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
  402|       |
  403|      2|throw:
  404|      2|	if (release_string) {
  ------------------
  |  Branch (404:6): [True: 0, False: 2]
  ------------------
  405|      0|		zend_string_release(string_key);
  406|      0|	}
  407|      2|	RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (407:2): [True: 0, False: 2]
  |  Branch (407:2): [True: 2, False: 0]
  ------------------
  408|       |
  409|      1|return_null:
  410|      1|	if (release_string) {
  ------------------
  |  Branch (410:6): [True: 0, False: 1]
  ------------------
  411|      0|		zend_string_release(string_key);
  412|      0|	}
  413|      1|	RETURN_NULL();
  ------------------
  |  | 1047|      1|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      1|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
  414|      1|}
zend_enum.c:zend_enum_try_from_func:
  422|      2|{
  423|      2|	zend_enum_from_base(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  424|      2|}
zend_enum.c:create_enum_case_ast:
  549|    288|		zval *value) {
  550|       |	// TODO: Use custom node type for enum cases?
  551|    288|	const size_t num_children = ZEND_AST_CONST_ENUM_INIT >> ZEND_AST_NUM_CHILDREN_SHIFT;
  ------------------
  |  |   32|    288|#define ZEND_AST_NUM_CHILDREN_SHIFT 8
  ------------------
  552|    288|	size_t size = sizeof(zend_ast_ref) + zend_ast_size(num_children)
  553|    288|		+ (value ? num_children : num_children-1) * sizeof(zend_ast_zval);
  ------------------
  |  Branch (553:6): [True: 4, False: 284]
  ------------------
  554|    288|	char *p = pemalloc(size, 1);
  ------------------
  |  |  188|    288|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    288|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    288|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    288|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    288|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 288, Folded]
  |  |  ------------------
  ------------------
  555|    288|	zend_ast_ref *ref = (zend_ast_ref *) p; p += sizeof(zend_ast_ref);
  556|    288|	GC_SET_REFCOUNT(ref, 1);
  ------------------
  |  |  717|    288|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  557|    288|	GC_TYPE_INFO(ref) = GC_CONSTANT_AST | GC_PERSISTENT | GC_IMMUTABLE;
  ------------------
  |  |  775|    288|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ref) = GC_CONSTANT_AST | GC_PERSISTENT | GC_IMMUTABLE;
  ------------------
  |  |  811|    288|#define GC_CONSTANT_AST				(IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  617|    288|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  |  |               #define GC_CONSTANT_AST				(IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|    288|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_CONSTANT_AST				(IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|    288|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ref) = GC_CONSTANT_AST | GC_PERSISTENT | GC_IMMUTABLE;
  ------------------
  |  |  802|    288|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  ------------------
              	GC_TYPE_INFO(ref) = GC_CONSTANT_AST | GC_PERSISTENT | GC_IMMUTABLE;
  ------------------
  |  |  801|    288|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  558|       |
  559|    288|	zend_ast *ast = (zend_ast *) p; p += zend_ast_size(num_children);
  560|    288|	ast->kind = ZEND_AST_CONST_ENUM_INIT;
  561|    288|	ast->attr = 0;
  562|    288|	ast->lineno = 0;
  563|       |
  564|    288|	ast->child[0] = (zend_ast *) p; p += sizeof(zend_ast_zval);
  565|    288|	ast->child[0]->kind = ZEND_AST_ZVAL;
  566|    288|	ast->child[0]->attr = 0;
  567|    288|	ZEND_ASSERT(ZSTR_IS_INTERNED(class_name));
  ------------------
  |  |  112|    288|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (567:2): [True: 0, False: 288]
  |  Branch (567:2): [True: 288, False: 0]
  ------------------
  568|    288|	ZVAL_STR(zend_ast_get_zval(ast->child[0]), class_name);
  ------------------
  |  | 1088|    288|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    288|		zval *__z = (z);						\
  |  | 1090|    288|		zend_string *__s = (s);					\
  |  | 1091|    288|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    288|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    288|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    288|		/* interned strings support */			\
  |  | 1093|    288|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    288|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    288|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 288, False: 0]
  |  |  ------------------
  |  | 1094|    288|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    288|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    288|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    288|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    288|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    288|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 288]
  |  |  ------------------
  ------------------
  569|    288|	Z_LINENO_P(zend_ast_get_zval(ast->child[0])) = 0;
  ------------------
  |  |  687|    288|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|    288|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  570|       |
  571|    288|	ast->child[1] = (zend_ast *) p; p += sizeof(zend_ast_zval);
  572|    288|	ast->child[1]->kind = ZEND_AST_ZVAL;
  573|    288|	ast->child[1]->attr = 0;
  574|    288|	ZVAL_LONG(zend_ast_get_zval(ast->child[1]), case_id);
  ------------------
  |  | 1076|    288|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    288|		zval *__z = (z);				\
  |  | 1078|    288|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    288|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    288|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    288|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    288|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    288|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    288|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    288|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 288]
  |  |  ------------------
  ------------------
  575|    288|	Z_LINENO_P(zend_ast_get_zval(ast->child[1])) = 0;
  ------------------
  |  |  687|    288|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|    288|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  576|       |
  577|    288|	ast->child[2] = (zend_ast *) p; p += sizeof(zend_ast_zval);
  578|    288|	ast->child[2]->kind = ZEND_AST_ZVAL;
  579|    288|	ast->child[2]->attr = 0;
  580|    288|	ZEND_ASSERT(ZSTR_IS_INTERNED(case_name));
  ------------------
  |  |  112|    288|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (580:2): [True: 0, False: 288]
  |  Branch (580:2): [True: 288, False: 0]
  ------------------
  581|    288|	ZVAL_STR(zend_ast_get_zval(ast->child[2]), case_name);
  ------------------
  |  | 1088|    288|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    288|		zval *__z = (z);						\
  |  | 1090|    288|		zend_string *__s = (s);					\
  |  | 1091|    288|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    288|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    288|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    288|		/* interned strings support */			\
  |  | 1093|    288|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    288|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    288|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 288, False: 0]
  |  |  ------------------
  |  | 1094|    288|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    288|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    288|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    288|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    288|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    288|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 288]
  |  |  ------------------
  ------------------
  582|    288|	Z_LINENO_P(zend_ast_get_zval(ast->child[2])) = 0;
  ------------------
  |  |  687|    288|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|    288|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  583|       |
  584|    288|	if (value) {
  ------------------
  |  Branch (584:6): [True: 4, False: 284]
  ------------------
  585|      4|		ast->child[3] = (zend_ast *) p; p += sizeof(zend_ast_zval);
  586|      4|		ast->child[3]->kind = ZEND_AST_ZVAL;
  587|      4|		ast->child[3]->attr = 0;
  588|      4|		ZEND_ASSERT(!Z_REFCOUNTED_P(value));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (588:3): [True: 0, False: 4]
  |  Branch (588:3): [True: 4, False: 0]
  ------------------
  589|      4|		ZVAL_COPY_VALUE(zend_ast_get_zval(ast->child[3]), value);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  590|      4|		Z_LINENO_P(zend_ast_get_zval(ast->child[3])) = 0;
  ------------------
  |  |  687|      4|#define Z_LINENO_P(zval_p)			Z_LINENO(*(zval_p))
  |  |  ------------------
  |  |  |  |  686|      4|#define Z_LINENO(zval)				(zval).u2.lineno
  |  |  ------------------
  ------------------
  591|    284|	} else {
  592|    284|		ast->child[3] = NULL;
  593|    284|	}
  594|       |
  595|    288|	return ref;
  596|    288|}

var.c:zend_enum_fetch_case_name:
   67|     39|{
   68|     39|	ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM);
  ------------------
  |  |  112|     39|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (68:2): [True: 0, False: 39]
  |  Branch (68:2): [True: 39, False: 0]
  ------------------
   69|       |
   70|     39|	zval *name = OBJ_PROP_NUM(zobj, 0);
  ------------------
  |  |  482|     39|	(&(obj)->properties_table[(num)])
  ------------------
   71|     39|	ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING);
  ------------------
  |  |  112|     39|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (71:2): [True: 0, False: 39]
  |  Branch (71:2): [True: 39, False: 0]
  ------------------
   72|     39|	return name;
   73|     39|}
zend_enum.c:zend_enum_fetch_case_name:
   67|     23|{
   68|     23|	ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (68:2): [True: 0, False: 23]
  |  Branch (68:2): [True: 23, False: 0]
  ------------------
   69|       |
   70|     23|	zval *name = OBJ_PROP_NUM(zobj, 0);
  ------------------
  |  |  482|     23|	(&(obj)->properties_table[(num)])
  ------------------
   71|     23|	ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (71:2): [True: 0, False: 23]
  |  Branch (71:2): [True: 23, False: 0]
  ------------------
   72|     23|	return name;
   73|     23|}
zend_enum.c:zend_enum_fetch_case_value:
   76|     23|{
   77|     23|	ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (77:2): [True: 0, False: 23]
  |  Branch (77:2): [True: 23, False: 0]
  ------------------
   78|     23|	ZEND_ASSERT(zobj->ce->enum_backing_type != IS_UNDEF);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (78:2): [True: 0, False: 23]
  |  Branch (78:2): [True: 23, False: 0]
  ------------------
   79|     23|	return OBJ_PROP_NUM(zobj, 1);
  ------------------
  |  |  482|     23|	(&(obj)->properties_table[(num)])
  ------------------
   80|     23|}
zend_smart_str.c:zend_enum_fetch_case_name:
   67|      1|{
   68|      1|	ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (68:2): [True: 0, False: 1]
  |  Branch (68:2): [True: 1, False: 0]
  ------------------
   69|       |
   70|      1|	zval *name = OBJ_PROP_NUM(zobj, 0);
  ------------------
  |  |  482|      1|	(&(obj)->properties_table[(num)])
  ------------------
   71|      1|	ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (71:2): [True: 0, False: 1]
  |  Branch (71:2): [True: 1, False: 0]
  ------------------
   72|      1|	return name;
   73|      1|}

zend_enum.c:register_class_UnitEnum:
   28|      2|{
   29|      2|	zend_class_entry ce, *class_entry;
   30|       |
   31|      2|	INIT_CLASS_ENTRY(ce, "UnitEnum", class_UnitEnum_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   32|      2|	class_entry = zend_register_internal_interface(&ce);
   33|       |
   34|      2|	return class_entry;
   35|      2|}
zend_enum.c:register_class_BackedEnum:
   38|      2|{
   39|      2|	zend_class_entry ce, *class_entry;
   40|       |
   41|      2|	INIT_CLASS_ENTRY(ce, "BackedEnum", class_BackedEnum_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   42|      2|	class_entry = zend_register_internal_interface(&ce);
   43|      2|	zend_class_implements(class_entry, 1, class_entry_UnitEnum);
   44|       |
   45|      2|	return class_entry;
   46|      2|}

zend_exception_set_previous:
  103|  19.1k|{
  104|  19.1k|	zval *previous, *ancestor, *ex;
  105|  19.1k|	zval  pv, zv, rv;
  106|  19.1k|	zend_class_entry *base_ce;
  107|       |
  108|  19.1k|	if (!exception || !add_previous) {
  ------------------
  |  Branch (108:6): [True: 0, False: 19.1k]
  |  Branch (108:20): [True: 12.3k, False: 6.85k]
  ------------------
  109|  12.3k|		return;
  110|  12.3k|	}
  111|       |
  112|  6.85k|	if (exception == add_previous || zend_is_unwind_exit(add_previous) || zend_is_graceful_exit(add_previous)) {
  ------------------
  |  Branch (112:6): [True: 0, False: 6.85k]
  |  Branch (112:35): [True: 0, False: 6.85k]
  |  Branch (112:72): [True: 3, False: 6.85k]
  ------------------
  113|      3|		OBJ_RELEASE(add_previous);
  ------------------
  |  |   44|      3|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  114|      3|		return;
  115|      3|	}
  116|       |
  117|  6.85k|	ZEND_ASSERT(instanceof_function(add_previous->ce, zend_ce_throwable)
  ------------------
  |  |  112|  6.85k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (117:2): [True: 0, False: 6.85k]
  |  Branch (117:2): [True: 0, False: 0]
  |  Branch (117:2): [True: 6.85k, False: 0]
  |  Branch (117:2): [True: 6.85k, False: 0]
  ------------------
  118|  6.85k|		&& "Previous exception must implement Throwable");
  119|       |
  120|  6.85k|	ZVAL_OBJ(&pv, add_previous);
  ------------------
  |  | 1140|  6.85k|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|  6.85k|		zval *__z = (z);						\
  |  | 1142|  6.85k|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|  6.85k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  6.85k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|  6.85k|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|  6.85k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  6.85k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|  6.85k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  6.85k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  6.85k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  6.85k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  6.85k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  6.85k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|  6.85k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 6.85k]
  |  |  ------------------
  ------------------
  121|  6.85k|	ZVAL_OBJ(&zv, exception);
  ------------------
  |  | 1140|  6.85k|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|  6.85k|		zval *__z = (z);						\
  |  | 1142|  6.85k|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|  6.85k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  6.85k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|  6.85k|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|  6.85k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  6.85k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|  6.85k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  6.85k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  6.85k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  6.85k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  6.85k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  6.85k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|  6.85k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 6.85k]
  |  |  ------------------
  ------------------
  122|  6.85k|	ex = &zv;
  123|  6.91k|	do {
  124|  6.91k|		ancestor = zend_read_property_ex(i_get_exception_base(add_previous), add_previous, ZSTR_KNOWN(ZEND_STR_PREVIOUS), 1, &rv);
  125|  6.91k|		ZVAL_DEREF(ancestor);
  ------------------
  |  | 1474|  6.91k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  6.91k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  6.91k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6.91k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  6.91k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 6.91k]
  |  |  ------------------
  ------------------
  126|   149k|		while (Z_TYPE_P(ancestor) == IS_OBJECT) {
  ------------------
  |  |  669|   149k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|   149k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		while (Z_TYPE_P(ancestor) == IS_OBJECT) {
  ------------------
  |  |  614|   149k|#define IS_OBJECT					8
  ------------------
  |  Branch (126:10): [True: 142k, False: 6.91k]
  ------------------
  127|   142k|			if (Z_OBJ_P(ancestor) == Z_OBJ_P(ex)) {
  ------------------
  |  | 1000|   142k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|   142k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_P(ancestor) == Z_OBJ_P(ex)) {
  ------------------
  |  | 1000|   142k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|   142k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (127:8): [True: 1, False: 142k]
  ------------------
  128|      1|				OBJ_RELEASE(add_previous);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  129|      1|				return;
  130|      1|			}
  131|   142k|			ancestor = zend_read_property_ex(i_get_exception_base(Z_OBJ_P(ancestor)), Z_OBJ_P(ancestor), ZSTR_KNOWN(ZEND_STR_PREVIOUS), 1, &rv);
  ------------------
  |  | 1000|   142k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|   142k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			ancestor = zend_read_property_ex(i_get_exception_base(Z_OBJ_P(ancestor)), Z_OBJ_P(ancestor), ZSTR_KNOWN(ZEND_STR_PREVIOUS), 1, &rv);
  ------------------
  |  | 1000|   142k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|   142k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  132|   142k|			ZVAL_DEREF(ancestor);
  ------------------
  |  | 1474|   142k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|   142k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|   142k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|   142k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 142k]
  |  |  ------------------
  ------------------
  133|   142k|		}
  134|  6.91k|		base_ce = i_get_exception_base(Z_OBJ_P(ex));
  ------------------
  |  | 1000|  6.91k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  6.91k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  135|  6.91k|		previous = zend_read_property_ex(base_ce, Z_OBJ_P(ex), ZSTR_KNOWN(ZEND_STR_PREVIOUS), 1, &rv);
  ------------------
  |  | 1000|  6.91k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  6.91k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  136|  6.91k|		ZVAL_DEREF(previous);
  ------------------
  |  | 1474|  6.91k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  6.91k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  6.91k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6.91k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  6.91k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 6.91k]
  |  |  ------------------
  ------------------
  137|  6.91k|		if (Z_TYPE_P(previous) == IS_NULL) {
  ------------------
  |  |  669|  6.91k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  6.91k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(previous) == IS_NULL) {
  ------------------
  |  |  607|  6.91k|#define IS_NULL						1
  ------------------
  |  Branch (137:7): [True: 6.85k, False: 59]
  ------------------
  138|  6.85k|			zend_update_property_ex(base_ce, Z_OBJ_P(ex), ZSTR_KNOWN(ZEND_STR_PREVIOUS), &pv);
  ------------------
  |  | 1000|  6.85k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  6.85k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  139|  6.85k|			GC_DELREF(add_previous);
  ------------------
  |  |  719|  6.85k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  140|  6.85k|			return;
  141|  6.85k|		}
  142|     59|		ex = previous;
  143|     59|	} while (Z_OBJ_P(ex) != add_previous);
  ------------------
  |  | 1000|     59|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     59|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (143:11): [True: 59, False: 0]
  ------------------
  144|  6.85k|}
zend_throw_exception_internal:
  156|  19.8k|{
  157|       |#ifdef HAVE_DTRACE
  158|       |	if (DTRACE_EXCEPTION_THROWN_ENABLED()) {
  159|       |		if (exception != NULL) {
  160|       |			DTRACE_EXCEPTION_THROWN(ZSTR_VAL(exception->ce->name));
  161|       |		} else {
  162|       |			DTRACE_EXCEPTION_THROWN(NULL);
  163|       |		}
  164|       |	}
  165|       |#endif /* HAVE_DTRACE */
  166|       |
  167|  19.8k|	if (exception != NULL) {
  ------------------
  |  Branch (167:6): [True: 19.1k, False: 672]
  ------------------
  168|  19.1k|		const zend_object *previous = EG(exception);
  ------------------
  |  |   45|  19.1k|# define EG(v) (executor_globals.v)
  ------------------
  169|  19.1k|		if (previous && zend_is_unwind_exit(previous)) {
  ------------------
  |  Branch (169:7): [True: 6.82k, False: 12.3k]
  |  Branch (169:19): [True: 0, False: 6.82k]
  ------------------
  170|       |			/* Don't replace unwinding exception with different exception. */
  171|      0|			OBJ_RELEASE(exception);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  172|      0|			return;
  173|      0|		}
  174|       |
  175|  19.1k|		zend_exception_set_previous(exception, EG(exception));
  ------------------
  |  |   45|  19.1k|# define EG(v) (executor_globals.v)
  ------------------
  176|  19.1k|		EG(exception) = exception;
  ------------------
  |  |   45|  19.1k|# define EG(v) (executor_globals.v)
  ------------------
  177|  19.1k|		if (previous) {
  ------------------
  |  Branch (177:7): [True: 6.82k, False: 12.3k]
  ------------------
  178|  6.82k|			return;
  179|  6.82k|		}
  180|  19.1k|	}
  181|  12.9k|	if (!EG(current_execute_data)) {
  ------------------
  |  |   45|  12.9k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (181:6): [True: 6.55k, False: 6.43k]
  ------------------
  182|  6.55k|		if (exception && (exception->ce == zend_ce_parse_error || exception->ce == zend_ce_compile_error)) {
  ------------------
  |  Branch (182:7): [True: 5.88k, False: 672]
  |  Branch (182:21): [True: 5.85k, False: 28]
  |  Branch (182:61): [True: 28, False: 0]
  ------------------
  183|  5.88k|			return;
  184|  5.88k|		}
  185|    672|		if (EG(exception)) {
  ------------------
  |  |   45|    672|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 672, False: 0]
  |  |  ------------------
  ------------------
  186|    672|			if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF
  ------------------
  |  |  668|    672|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF
  ------------------
  |  |  606|  1.34k|#define IS_UNDEF					0
  ------------------
  |  Branch (186:8): [True: 2, False: 670]
  ------------------
  187|      2|			 && !zend_is_unwind_exit(EG(exception))
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (187:8): [True: 2, False: 0]
  ------------------
  188|      2|			 && !zend_is_graceful_exit(EG(exception))) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (188:8): [True: 2, False: 0]
  ------------------
  189|      2|				zend_user_exception_handler();
  190|      2|				if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  191|      0|					zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  192|      0|				}
  193|      2|				return;
  194|    670|			} else {
  195|    670|				zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   45|    670|# define EG(v) (executor_globals.v)
  ------------------
              				zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   22|    670|#define E_ERROR				(1<<0L)
  ------------------
  196|    670|			}
  197|    672|			zend_bailout();
  ------------------
  |  |  273|    670|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
  198|    672|		}
  199|      0|		zend_error_noreturn(E_CORE_ERROR, "Exception thrown without a stack frame");
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
  200|    672|	}
  201|       |
  202|  6.43k|	if (zend_throw_exception_hook) {
  ------------------
  |  Branch (202:6): [True: 0, False: 6.43k]
  ------------------
  203|      0|		zend_throw_exception_hook(exception);
  204|      0|	}
  205|       |
  206|  6.43k|	if (is_handle_exception_set()) {
  ------------------
  |  Branch (206:6): [True: 3.92k, False: 2.51k]
  ------------------
  207|       |		/* no need to rethrow the exception */
  208|  3.92k|		return;
  209|  3.92k|	}
  210|  2.51k|	EG(opline_before_exception) = EG(current_execute_data)->opline;
  ------------------
  |  |   45|  2.51k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(opline_before_exception) = EG(current_execute_data)->opline;
  ------------------
  |  |   45|  2.51k|# define EG(v) (executor_globals.v)
  ------------------
  211|  2.51k|	EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|  2.51k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|  2.51k|# define EG(v) (executor_globals.v)
  ------------------
  212|  2.51k|}
zend_clear_exception:
  216|  7.49k|{
  217|  7.49k|	zend_object *exception;
  218|  7.49k|	if (!EG(exception)) {
  ------------------
  |  |   45|  7.49k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (218:6): [True: 659, False: 6.83k]
  ------------------
  219|    659|		return;
  220|    659|	}
  221|       |	/* exception may have destructor */
  222|  6.83k|	exception = EG(exception);
  ------------------
  |  |   45|  6.83k|# define EG(v) (executor_globals.v)
  ------------------
  223|  6.83k|	EG(exception) = NULL;
  ------------------
  |  |   45|  6.83k|# define EG(v) (executor_globals.v)
  ------------------
  224|  6.83k|	OBJ_RELEASE(exception);
  ------------------
  |  |   44|  6.83k|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  225|  6.83k|	if (EG(current_execute_data)) {
  ------------------
  |  |   45|  6.83k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 3.07k, False: 3.76k]
  |  |  ------------------
  ------------------
  226|  3.07k|		EG(current_execute_data)->opline = EG(opline_before_exception);
  ------------------
  |  |   45|  3.07k|# define EG(v) (executor_globals.v)
  ------------------
              		EG(current_execute_data)->opline = EG(opline_before_exception);
  ------------------
  |  |   45|  3.07k|# define EG(v) (executor_globals.v)
  ------------------
  227|  3.07k|	}
  228|  6.83k|#if ZEND_DEBUG
  229|  6.83k|	EG(opline_before_exception) = NULL;
  ------------------
  |  |   45|  6.83k|# define EG(v) (executor_globals.v)
  ------------------
  230|  6.83k|#endif
  231|  6.83k|}
zend_update_exception_properties:
  302|    162|{
  303|    162|	zval tmp, *object = ZEND_THIS;
  ------------------
  |  |  523|    162|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|    162|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  304|       |
  305|    162|	if (message) {
  ------------------
  |  Branch (305:6): [True: 36, False: 126]
  ------------------
  306|     36|		ZVAL_STR_COPY(&tmp, message);
  ------------------
  |  | 1112|     36|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     36|		zval *__z = (z);								\
  |  | 1114|     36|		zend_string *__s = (s);							\
  |  | 1115|     36|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     36|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     36|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     36|		/* interned strings support */					\
  |  | 1117|     36|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 5, False: 31]
  |  |  ------------------
  |  | 1118|      5|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      5|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     31|		} else {										\
  |  | 1120|     31|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     31|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     31|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     31|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     31|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     31|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     31|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     31|		}												\
  |  | 1123|     36|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 36]
  |  |  ------------------
  ------------------
  307|     36|		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_MESSAGE_OFF, ZSTR_KNOWN(ZEND_STR_MESSAGE), &tmp);
  ------------------
  |  | 1000|     36|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     36|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_MESSAGE_OFF, ZSTR_KNOWN(ZEND_STR_MESSAGE), &tmp);
  ------------------
  |  |   32|     36|#define ZEND_EXCEPTION_MESSAGE_OFF 0
  ------------------
  308|     36|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 36]
  |  |  ------------------
  ------------------
  309|      0|			return FAILURE;
  310|      0|		}
  311|     36|	}
  312|       |
  313|    162|	if (code) {
  ------------------
  |  Branch (313:6): [True: 3, False: 159]
  ------------------
  314|      3|		ZVAL_LONG(&tmp, code);
  ------------------
  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      3|		zval *__z = (z);				\
  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  315|      3|		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_CODE_OFF, ZSTR_KNOWN(ZEND_STR_CODE), &tmp);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_CODE_OFF, ZSTR_KNOWN(ZEND_STR_CODE), &tmp);
  ------------------
  |  |   33|      3|#define ZEND_EXCEPTION_CODE_OFF 2
  ------------------
  316|      3|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  317|      0|			return FAILURE;
  318|      0|		}
  319|      3|	}
  320|       |
  321|    162|	if (previous) {
  ------------------
  |  Branch (321:6): [True: 2, False: 160]
  ------------------
  322|      2|		Z_ADDREF_P(previous);
  ------------------
  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  323|      2|		zend_update_property_num_checked(zend_ce_exception, Z_OBJ_P(object), ZEND_EXCEPTION_PREVIOUS_OFF, ZSTR_KNOWN(ZEND_STR_PREVIOUS), previous);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_num_checked(zend_ce_exception, Z_OBJ_P(object), ZEND_EXCEPTION_PREVIOUS_OFF, ZSTR_KNOWN(ZEND_STR_PREVIOUS), previous);
  ------------------
  |  |   37|      2|#define ZEND_EXCEPTION_PREVIOUS_OFF 6
  ------------------
  324|      2|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  325|      0|			return FAILURE;
  326|      0|		}
  327|      2|	}
  328|       |
  329|    162|	return SUCCESS;
  330|    162|}
zim_Exception___construct:
  334|    161|{
  335|    161|	zend_string *message = NULL;
  336|    161|	zend_long   code = 0;
  337|    161|	zval *previous = NULL;
  338|       |
  339|    161|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|SlO!", &message, &code, &previous, zend_ce_throwable) == FAILURE) {
  ------------------
  |  |  529|    161|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|    161|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|    161|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (339:6): [True: 3, False: 158]
  ------------------
  340|      3|		RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (340:3): [True: 0, False: 3]
  |  Branch (340:3): [True: 3, False: 0]
  ------------------
  341|      3|	}
  342|       |
  343|    158|	if (zend_update_exception_properties(INTERNAL_FUNCTION_PARAM_PASSTHRU, message, code, previous) == FAILURE) {
  ------------------
  |  |  587|    158|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  |  Branch (343:6): [True: 0, False: 158]
  ------------------
  344|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (344:3): [True: 0, False: 0]
  |  Branch (344:3): [True: 0, False: 0]
  ------------------
  345|      0|	}
  346|    158|}
zim_Exception___wakeup:
  357|      1|{
  358|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  359|       |
  360|      1|	zval value, *pvalue;
  361|      1|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  362|      1|	CHECK_EXC_TYPE(ZEND_STR_MESSAGE, IS_STRING);
  ------------------
  |  |  351|      1|	pvalue = zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &value); \
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	pvalue = zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &value); \
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  352|      1|	if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  |               	if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (352:6): [True: 1, False: 0]
  |  |  |  Branch (352:37): [True: 0, False: 1]
  |  |  ------------------
  |  |  353|      0|		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  354|      0|	}
  ------------------
  363|      1|	CHECK_EXC_TYPE(ZEND_STR_CODE,    IS_LONG);
  ------------------
  |  |  351|      1|	pvalue = zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &value); \
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	pvalue = zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &value); \
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  352|      1|	if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  |               	if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (352:6): [True: 1, False: 0]
  |  |  |  Branch (352:37): [True: 0, False: 1]
  |  |  ------------------
  |  |  353|      0|		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               		zend_unset_property(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_VAL(ZSTR_KNOWN(id)), ZSTR_LEN(ZSTR_KNOWN(id))); \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  354|      0|	}
  ------------------
  364|       |	/* The type of all other properties is enforced through typed properties. */
  365|      1|}
zim_ErrorException___construct:
  370|      3|{
  371|      3|	zend_string *message = NULL, *filename = NULL;
  372|      3|	zend_long   code = 0, severity = E_ERROR, lineno;
  ------------------
  |  |   22|      3|#define E_ERROR				(1<<0L)
  ------------------
  373|      3|	bool lineno_is_null = true;
  374|      3|	zval   tmp, *object, *previous = NULL;
  375|       |
  376|      3|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|SllS!l!O!", &message, &code, &severity, &filename, &lineno, &lineno_is_null, &previous, zend_ce_throwable) == FAILURE) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (376:6): [True: 1, False: 2]
  ------------------
  377|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (377:3): [True: 0, False: 1]
  |  Branch (377:3): [True: 1, False: 0]
  ------------------
  378|      1|	}
  379|       |
  380|      2|	object = ZEND_THIS;
  ------------------
  |  |  523|      2|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  381|       |
  382|      2|	if (zend_update_exception_properties(INTERNAL_FUNCTION_PARAM_PASSTHRU, message, code, previous) == FAILURE) {
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  |  Branch (382:6): [True: 0, False: 2]
  ------------------
  383|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  ------------------
  384|      0|	}
  385|       |
  386|      2|	ZVAL_LONG(&tmp, severity);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  387|      2|	zend_update_property_ex(zend_ce_exception, Z_OBJ_P(object), ZSTR_KNOWN(ZEND_STR_SEVERITY), &tmp);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  388|      2|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  389|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (389:3): [True: 0, False: 0]
  |  Branch (389:3): [True: 0, False: 0]
  ------------------
  390|      0|	}
  391|       |
  392|      2|	if (filename) {
  ------------------
  |  Branch (392:6): [True: 0, False: 2]
  ------------------
  393|      0|		ZVAL_STR_COPY(&tmp, filename);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  394|      0|		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_FILE_OFF, ZSTR_KNOWN(ZEND_STR_FILE), &tmp);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_FILE_OFF, ZSTR_KNOWN(ZEND_STR_FILE), &tmp);
  ------------------
  |  |   34|      0|#define ZEND_EXCEPTION_FILE_OFF 3
  ------------------
  395|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  396|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (396:4): [True: 0, False: 0]
  |  Branch (396:4): [True: 0, False: 0]
  ------------------
  397|      0|		}
  398|      0|	}
  399|       |
  400|      2|	if (!lineno_is_null) {
  ------------------
  |  Branch (400:6): [True: 0, False: 2]
  ------------------
  401|      0|		ZVAL_LONG(&tmp, lineno);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  402|      0|		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_LINE_OFF, ZSTR_KNOWN(ZEND_STR_LINE), &tmp);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_LINE_OFF, ZSTR_KNOWN(ZEND_STR_LINE), &tmp);
  ------------------
  |  |   35|      0|#define ZEND_EXCEPTION_LINE_OFF 4
  ------------------
  403|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  404|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (404:4): [True: 0, False: 0]
  |  Branch (404:4): [True: 0, False: 0]
  ------------------
  405|      0|		}
  406|      2|	} else if (filename) {
  ------------------
  |  Branch (406:13): [True: 0, False: 2]
  ------------------
  407|      0|		ZVAL_LONG(&tmp, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  408|      0|		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_LINE_OFF, ZSTR_KNOWN(ZEND_STR_LINE), &tmp);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_num_checked(NULL, Z_OBJ_P(object), ZEND_EXCEPTION_LINE_OFF, ZSTR_KNOWN(ZEND_STR_LINE), &tmp);
  ------------------
  |  |   35|      0|#define ZEND_EXCEPTION_LINE_OFF 4
  ------------------
  409|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  410|       |			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (410:4): [True: 0, False: 0]
  |  Branch (410:4): [True: 0, False: 0]
  ------------------
  411|      0|		}
  412|      0|	}
  413|      2|}
zim_Exception_getFile:
  423|      2|{
  424|      2|	zval *prop, rv;
  425|       |
  426|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  427|       |
  428|      2|	prop = GET_PROPERTY(ZEND_THIS, ZEND_STR_FILE);
  ------------------
  |  |  417|      2|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|      2|	RETURN_STR(zval_get_string(prop));
  ------------------
  |  | 1050|      2|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  430|      2|}
zim_Exception_getLine:
  435|      2|{
  436|      2|	zval *prop, rv;
  437|       |
  438|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  439|       |
  440|      2|	prop = GET_PROPERTY(ZEND_THIS, ZEND_STR_LINE);
  ------------------
  |  |  417|      2|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|      2|	RETURN_LONG(zval_get_long(prop));
  ------------------
  |  | 1048|      2|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      2|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      2|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  442|      2|}
zim_Exception_getMessage:
  447|    112|{
  448|    112|	zval *prop, rv;
  449|       |
  450|    112|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|    112|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|    112|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|    112|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|    112|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 112]
  |  |  ------------------
  ------------------
  451|       |
  452|    112|	prop = GET_PROPERTY(ZEND_THIS, ZEND_STR_MESSAGE);
  ------------------
  |  |  417|    112|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|    112|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    112|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|    112|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    112|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  453|    112|	RETURN_STR(zval_get_string(prop));
  ------------------
  |  | 1050|    112|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|    112|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|    112|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|    112|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|    112|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|    112|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    112|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    112|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|    112|		/* interned strings support */			\
  |  |  |  |  |  | 1093|    112|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    112|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    112|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 2, False: 110]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|    112|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|    112|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    222|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    110|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    110|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    110|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|    112|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  454|    112|}
zim_Exception_getTrace:
  472|      3|{
  473|      3|	zval *prop, rv;
  474|       |
  475|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  476|       |
  477|      3|	prop = GET_PROPERTY(ZEND_THIS, ZEND_STR_TRACE);
  ------------------
  |  |  417|      3|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  478|      3|	ZVAL_DEREF(prop);
  ------------------
  |  | 1474|      3|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      3|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  479|      3|	ZVAL_COPY(return_value, prop);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      3|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      3|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  480|      3|}
zend_trace_to_string:
  648|  1.39k|ZEND_API zend_string *zend_trace_to_string(const HashTable *trace, bool include_main) {
  649|  1.39k|	zend_ulong index;
  650|  1.39k|	zval *frame;
  651|  1.39k|	uint32_t num = 0;
  652|  1.39k|	smart_str str = {0};
  653|       |
  654|  2.87k|	ZEND_HASH_FOREACH_NUM_KEY_VAL(trace, index, frame) {
  ------------------
  |  | 1171|    737|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|  1.39k|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|  1.39k|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|  1.39k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|  1.39k|		zend_ulong __h; \
  |  |  |  |  |  | 1048|  1.39k|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|  1.39k|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|  1.39k|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|  1.39k|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|  1.39k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|  1.39k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|  1.39k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|  1.39k|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|  1.39k|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  1.39k|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|  2.13k|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 737, False: 1.39k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|    737|			zval *_z = __z; \
  |  |  |  |  |  | 1055|    737|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    737|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    737|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    737|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 737, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|    737|				__z++; \
  |  |  |  |  |  | 1057|    737|				__h = _idx; \
  |  |  |  |  |  | 1058|    737|				_idx++; \
  |  |  |  |  |  | 1059|    737|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|    737|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|    737|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    737|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 737]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1172|    737|	_h = __h; \
  |  | 1173|    737|	_val = _z;
  ------------------
  655|  2.87k|		if (UNEXPECTED(Z_TYPE_P(frame) != IS_ARRAY)) {
  ------------------
  |  |  457|    737|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 737]
  |  |  ------------------
  ------------------
  656|      0|			zend_error(E_WARNING, "Expected array for frame " ZEND_ULONG_FMT, index);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              			zend_error(E_WARNING, "Expected array for frame " ZEND_ULONG_FMT, index);
  ------------------
  |  |   55|      0|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
  657|      0|			continue;
  658|      0|		}
  659|       |
  660|    737|		build_trace_string(&str, Z_ARRVAL_P(frame), num++);
  ------------------
  |  |  997|    737|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    737|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    737|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  661|    737|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    737|		} \
  |  | 1102|  1.39k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1.39k]
  |  |  ------------------
  ------------------
  662|       |
  663|  1.39k|	if (include_main) {
  ------------------
  |  Branch (663:6): [True: 1.38k, False: 13]
  ------------------
  664|  1.38k|		smart_str_appendc(&str, '#');
  665|  1.38k|		smart_str_append_long(&str, num);
  666|  1.38k|		smart_str_appends(&str, " {main}");
  667|  1.38k|	}
  668|       |
  669|  1.39k|	smart_str_0(&str);
  670|  1.39k|	return str.s ? str.s : ZSTR_EMPTY_ALLOC();
  ------------------
  |  Branch (670:9): [True: 1.39k, False: 1]
  ------------------
  671|  1.39k|}
zim_Exception_getTraceAsString:
  675|    702|{
  676|       |
  677|    702|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|    702|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|    702|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|    702|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 702]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|    702|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 702]
  |  |  ------------------
  ------------------
  678|       |
  679|    702|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|    702|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|    702|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  680|    702|	zend_class_entry *base_ce = i_get_exception_base(Z_OBJ_P(object));
  ------------------
  |  | 1000|    702|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    702|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  681|    702|	zval rv;
  682|    702|	const zval *trace = zend_read_property_ex(base_ce, Z_OBJ_P(object), ZSTR_KNOWN(ZEND_STR_TRACE), 1, &rv);
  ------------------
  |  | 1000|    702|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    702|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  683|    702|	if (EG(exception)) {
  ------------------
  |  |   45|    702|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 702]
  |  |  ------------------
  ------------------
  684|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (684:3): [True: 0, False: 0]
  |  Branch (684:3): [True: 0, False: 0]
  ------------------
  685|      0|	}
  686|       |
  687|    702|	ZVAL_DEREF(trace);
  ------------------
  |  | 1474|    702|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    702|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    702|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 702]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|    702|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 702]
  |  |  ------------------
  ------------------
  688|       |	/* Type should be guaranteed by property type. */
  689|    702|	ZEND_ASSERT(Z_TYPE_P(trace) == IS_ARRAY);
  ------------------
  |  |  112|    702|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (689:2): [True: 0, False: 702]
  |  Branch (689:2): [True: 702, False: 0]
  ------------------
  690|    702|	RETURN_NEW_STR(zend_trace_to_string(Z_ARRVAL_P(trace), /* include_main */ true));
  ------------------
  |  | 1052|    702|#define RETURN_NEW_STR(s)				do { RETVAL_NEW_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1026|    702|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    702|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    702|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    702|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    702|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    702|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    702|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    702|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    702|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    702|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    702|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    702|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    702|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    702|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    702|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 702]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1052:71): [Folded, False: 0]
  |  |  ------------------
  ------------------
  691|    702|}
zim_Exception___toString:
  706|  2.67k|{
  707|  2.67k|	zval trace, *exception;
  708|  2.67k|	zend_class_entry *base_ce;
  709|  2.67k|	zend_string *str;
  710|  2.67k|	zval rv, tmp;
  711|       |
  712|  2.67k|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|  2.67k|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|  2.67k|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|  2.67k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.67k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|  2.67k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2.67k]
  |  |  ------------------
  ------------------
  713|       |
  714|  2.67k|	str = ZSTR_EMPTY_ALLOC();
  715|       |
  716|  2.67k|	exception = ZEND_THIS;
  ------------------
  |  |  523|  2.67k|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|  2.67k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  717|  2.67k|	base_ce = i_get_exception_base(Z_OBJ_P(exception));
  ------------------
  |  | 1000|  2.67k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  2.67k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  718|       |
  719|       |	/* As getTraceAsString method is final we can grab it once */
  720|  2.67k|	zend_function *getTraceAsString = zend_hash_str_find_ptr(&base_ce->function_table, ZEND_STRL("gettraceasstring"));
  ------------------
  |  |  541|  2.67k|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  721|  2.67k|	ZEND_ASSERT(getTraceAsString && "Method getTraceAsString must exist");
  ------------------
  |  |  112|  2.67k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (721:2): [True: 0, False: 2.67k]
  |  Branch (721:2): [True: 0, False: 0]
  |  Branch (721:2): [True: 2.67k, False: 0]
  |  Branch (721:2): [True: 2.67k, False: 0]
  ------------------
  722|       |
  723|       |
  724|  2.67k|	zend_fcall_info fci;
  725|  2.67k|	fci.size = sizeof(fci);
  726|  2.67k|	ZVAL_UNDEF(&fci.function_name);
  ------------------
  |  | 1055|  2.67k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  2.67k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  2.67k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.67k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  2.67k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  2.67k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2.67k]
  |  |  ------------------
  ------------------
  727|  2.67k|	fci.retval = &trace;
  728|  2.67k|	fci.param_count = 0;
  729|  2.67k|	fci.params = NULL;
  730|  2.67k|	fci.object = NULL;
  731|  2.67k|	fci.named_params = NULL;
  732|       |
  733|  2.67k|	zend_fcall_info_cache fcc;
  734|  2.67k|	fcc.function_handler = getTraceAsString;
  735|  2.67k|	fcc.called_scope = base_ce;
  736|  2.67k|	fcc.closure = NULL;
  737|       |
  738|  5.35k|	while (exception && Z_TYPE_P(exception) == IS_OBJECT && instanceof_function(Z_OBJCE_P(exception), zend_ce_throwable)) {
  ------------------
  |  |  669|  3.37k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  3.37k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	while (exception && Z_TYPE_P(exception) == IS_OBJECT && instanceof_function(Z_OBJCE_P(exception), zend_ce_throwable)) {
  ------------------
  |  |  614|  8.73k|#define IS_OBJECT					8
  ------------------
              	while (exception && Z_TYPE_P(exception) == IS_OBJECT && instanceof_function(Z_OBJCE_P(exception), zend_ce_throwable)) {
  ------------------
  |  | 1012|  2.68k|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|  2.68k|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (738:9): [True: 3.37k, False: 1.98k]
  |  Branch (738:22): [True: 2.68k, False: 699]
  |  Branch (738:58): [True: 2.68k, False: 0]
  ------------------
  739|  2.68k|		zend_string *prev_str = str;
  740|  2.68k|		zend_string *message = zval_get_string(GET_PROPERTY(exception, ZEND_STR_MESSAGE));
  ------------------
  |  |  417|  2.68k|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  741|  2.68k|		zend_string *file = zval_get_string(GET_PROPERTY(exception, ZEND_STR_FILE));
  ------------------
  |  |  417|  2.68k|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  742|  2.68k|		zend_long line = zval_get_long(GET_PROPERTY(exception, ZEND_STR_LINE));
  ------------------
  |  |  417|  2.68k|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|       |
  744|  2.68k|		fcc.object = Z_OBJ_P(exception);
  ------------------
  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  745|  2.68k|		fcc.calling_scope = Z_OBJCE_P(exception);
  ------------------
  |  | 1012|  2.68k|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|  2.68k|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  746|  2.68k|		zend_call_function(&fci, &fcc);
  747|       |
  748|  2.68k|		if (Z_TYPE(trace) != IS_STRING) {
  ------------------
  |  |  668|  2.68k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(trace) != IS_STRING) {
  ------------------
  |  |  612|  2.68k|#define IS_STRING					6
  ------------------
  |  Branch (748:7): [True: 0, False: 2.68k]
  ------------------
  749|      0|			zval_ptr_dtor(&trace);
  750|      0|			ZVAL_UNDEF(&trace);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  751|      0|		}
  752|       |
  753|  2.68k|		if ((Z_OBJCE_P(exception) == zend_ce_type_error || Z_OBJCE_P(exception) == zend_ce_argument_count_error) && strstr(ZSTR_VAL(message), ", called in ")) {
  ------------------
  |  | 1012|  2.68k|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|  2.68k|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if ((Z_OBJCE_P(exception) == zend_ce_type_error || Z_OBJCE_P(exception) == zend_ce_argument_count_error) && strstr(ZSTR_VAL(message), ", called in ")) {
  ------------------
  |  | 1012|    697|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|    697|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    697|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if ((Z_OBJCE_P(exception) == zend_ce_type_error || Z_OBJCE_P(exception) == zend_ce_argument_count_error) && strstr(ZSTR_VAL(message), ", called in ")) {
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (753:8): [True: 1.98k, False: 697]
  |  Branch (753:54): [True: 1, False: 696]
  |  Branch (753:111): [True: 0, False: 4]
  ------------------
  754|      0|			zend_string *real_message = zend_strpprintf_unchecked(0, "%S and defined", message);
  755|      0|			zend_string_release_ex(message, 0);
  756|      0|			message = real_message;
  757|      0|		}
  758|       |
  759|  2.68k|		zend_string *tmp_trace = (Z_TYPE(trace) == IS_STRING && Z_STRLEN(trace))
  ------------------
  |  |  668|  2.68k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		zend_string *tmp_trace = (Z_TYPE(trace) == IS_STRING && Z_STRLEN(trace))
  ------------------
  |  |  612|  5.36k|#define IS_STRING					6
  ------------------
              		zend_string *tmp_trace = (Z_TYPE(trace) == IS_STRING && Z_STRLEN(trace))
  ------------------
  |  |  987|    700|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|    700|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:25): [True: 700, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (759:29): [True: 700, False: 1.98k]
  ------------------
  760|  2.68k|			? zend_string_copy(Z_STR(trace))
  ------------------
  |  |  981|    700|#define Z_STR(zval)					(zval).value.str
  ------------------
  761|  2.68k|			: ZSTR_INIT_LITERAL("#0 {main}\n", false);
  ------------------
  |  |  141|  1.98k|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  762|       |
  763|  2.68k|		zend_string *name = Z_OBJCE_P(exception)->name;
  ------------------
  |  | 1012|  2.68k|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|  2.68k|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  764|       |
  765|  2.68k|		if (ZSTR_LEN(message) > 0) {
  ------------------
  |  |   68|  2.68k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (765:7): [True: 697, False: 1.98k]
  ------------------
  766|    697|			zval message_zv;
  767|    697|			ZVAL_STR(&message_zv, message);
  ------------------
  |  | 1088|    697|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    697|		zval *__z = (z);						\
  |  | 1090|    697|		zend_string *__s = (s);					\
  |  | 1091|    697|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    697|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    697|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    697|		/* interned strings support */			\
  |  | 1093|    697|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    697|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    697|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 697]
  |  |  ------------------
  |  | 1094|    697|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    697|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  1.39k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    697|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    697|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    697|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    697|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 697]
  |  |  ------------------
  ------------------
  768|       |
  769|    697|			str = zend_strpprintf_unchecked(0, "%S: %S in %S:" ZEND_LONG_FMT "\nStack trace:\n%S%s%S",
  770|    697|				name, message, file, line,
  771|    697|				tmp_trace, ZSTR_LEN(prev_str) ? "\n\nNext " : "", prev_str);
  ------------------
  |  |   68|    697|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 1, False: 696]
  |  |  ------------------
  ------------------
  772|  1.98k|		} else {
  773|  1.98k|			str = zend_strpprintf_unchecked(0, "%S in %S:" ZEND_LONG_FMT "\nStack trace:\n%S%s%S",
  774|  1.98k|				name, file, line,
  775|  1.98k|				tmp_trace, ZSTR_LEN(prev_str) ? "\n\nNext " : "", prev_str);
  ------------------
  |  |   68|  1.98k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 1.98k]
  |  |  ------------------
  ------------------
  776|  1.98k|		}
  777|  2.68k|		zend_string_release_ex(tmp_trace, false);
  778|       |
  779|  2.68k|		zend_string_release_ex(prev_str, 0);
  780|  2.68k|		zend_string_release_ex(message, 0);
  781|  2.68k|		zend_string_release_ex(file, 0);
  782|  2.68k|		zval_ptr_dtor(&trace);
  783|       |
  784|  2.68k|		Z_PROTECT_RECURSION_P(exception);
  ------------------
  |  |  909|  2.68k|#define Z_PROTECT_RECURSION_P(zv)   Z_PROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  906|  2.68k|#define Z_PROTECT_RECURSION(zval)   GC_PROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  889|  2.68k|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  890|  2.68k|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  780|  2.68k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  781|  2.68k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|  2.68k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|  2.68k|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  782|  2.68k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 2.68k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  891|  2.68k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (891:11): [Folded, False: 2.68k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|  2.68k|		exception = GET_PROPERTY(exception, ZEND_STR_PREVIOUS);
  ------------------
  |  |  417|  2.68k|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|  2.68k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.68k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  786|  2.68k|		ZVAL_DEREF(exception);
  ------------------
  |  | 1474|  2.68k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.68k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.68k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.68k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  2.68k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.68k]
  |  |  ------------------
  ------------------
  787|  2.68k|		if (Z_TYPE_P(exception) == IS_OBJECT && Z_IS_RECURSIVE_P(exception)) {
  ------------------
  |  |  669|  2.68k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.68k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(exception) == IS_OBJECT && Z_IS_RECURSIVE_P(exception)) {
  ------------------
  |  |  614|  5.36k|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE_P(exception) == IS_OBJECT && Z_IS_RECURSIVE_P(exception)) {
  ------------------
  |  |  908|      1|#define Z_IS_RECURSIVE_P(zv)        Z_IS_RECURSIVE(*(zv))
  |  |  ------------------
  |  |  |  |  905|      1|#define Z_IS_RECURSIVE(zval)        GC_IS_RECURSIVE(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  887|      1|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  800|      1|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (887:2): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (787:7): [True: 1, False: 2.67k]
  ------------------
  788|      0|			break;
  789|      0|		}
  790|  2.68k|	}
  791|       |
  792|  2.67k|	exception = ZEND_THIS;
  ------------------
  |  |  523|  2.67k|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|  2.67k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  793|       |	/* Reset apply counts */
  794|  2.67k|	zend_class_entry *previous_base_ce;
  795|  3.37k|	while (Z_TYPE_P(exception) == IS_OBJECT && (previous_base_ce = i_get_exception_base(Z_OBJ_P(exception))) && instanceof_function(Z_OBJCE_P(exception), previous_base_ce)) {
  ------------------
  |  |  669|  3.37k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  3.37k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	while (Z_TYPE_P(exception) == IS_OBJECT && (previous_base_ce = i_get_exception_base(Z_OBJ_P(exception))) && instanceof_function(Z_OBJCE_P(exception), previous_base_ce)) {
  ------------------
  |  |  614|  6.75k|#define IS_OBJECT					8
  ------------------
              	while (Z_TYPE_P(exception) == IS_OBJECT && (previous_base_ce = i_get_exception_base(Z_OBJ_P(exception))) && instanceof_function(Z_OBJCE_P(exception), previous_base_ce)) {
  ------------------
  |  | 1000|    700|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    700|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	while (Z_TYPE_P(exception) == IS_OBJECT && (previous_base_ce = i_get_exception_base(Z_OBJ_P(exception))) && instanceof_function(Z_OBJCE_P(exception), previous_base_ce)) {
  ------------------
  |  | 1012|    700|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|    700|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    700|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (795:9): [True: 700, False: 2.67k]
  |  Branch (795:45): [True: 700, False: 0]
  |  Branch (795:110): [True: 700, False: 0]
  ------------------
  796|    700|		if (Z_IS_RECURSIVE_P(exception)) {
  ------------------
  |  |  908|    700|#define Z_IS_RECURSIVE_P(zv)        Z_IS_RECURSIVE(*(zv))
  |  |  ------------------
  |  |  |  |  905|    700|#define Z_IS_RECURSIVE(zval)        GC_IS_RECURSIVE(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  887|    700|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  777|    700|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|    700|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  800|    700|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (887:2): [True: 700, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  797|    700|			Z_UNPROTECT_RECURSION_P(exception);
  ------------------
  |  |  910|    700|#define Z_UNPROTECT_RECURSION_P(zv) Z_UNPROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  907|    700|#define Z_UNPROTECT_RECURSION(zval) GC_UNPROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|    700|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|    700|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|    700|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|    700|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|    700|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|    700|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|    700|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 700]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|    700|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 700]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|    700|		} else {
  799|      0|			break;
  800|      0|		}
  801|    700|		exception = GET_PROPERTY(exception, ZEND_STR_PREVIOUS);
  ------------------
  |  |  417|    700|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|    700|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    700|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|    700|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    700|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  802|    700|		ZVAL_DEREF(exception);
  ------------------
  |  | 1474|    700|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    700|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    700|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 700]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|    700|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 700]
  |  |  ------------------
  ------------------
  803|    700|	}
  804|       |
  805|       |	/* We store the result in the private property string so we can access
  806|       |	 * the result in uncaught exception handlers without memleaks. */
  807|  2.67k|	ZVAL_STR(&tmp, str);
  ------------------
  |  | 1088|  2.67k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  2.67k|		zval *__z = (z);						\
  |  | 1090|  2.67k|		zend_string *__s = (s);					\
  |  | 1091|  2.67k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  2.67k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  2.67k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  2.67k|		/* interned strings support */			\
  |  | 1093|  2.67k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  2.67k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.67k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2.67k]
  |  |  ------------------
  |  | 1094|  2.67k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  2.67k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  5.35k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  2.67k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  2.67k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  2.67k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  2.67k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2.67k]
  |  |  ------------------
  ------------------
  808|  2.67k|	zend_update_property_ex(base_ce, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_STRING), &tmp);
  ------------------
  |  | 1000|  2.67k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  2.67k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  809|       |
  810|  2.67k|	RETURN_STR(str);
  ------------------
  |  | 1050|  2.67k|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|  2.67k|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|  2.67k|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|  2.67k|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|  2.67k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|  2.67k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  2.67k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  2.67k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|  2.67k|		/* interned strings support */			\
  |  |  |  |  |  | 1093|  2.67k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  2.67k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  2.67k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2.67k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|  2.67k|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|  2.67k|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  5.35k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  2.67k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  2.67k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  2.67k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|  2.67k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 2.67k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  811|  2.67k|}
zend_register_default_exception:
  820|      2|{
  821|      2|	zend_ce_throwable = register_class_Throwable(zend_ce_stringable);
  822|      2|	zend_ce_throwable->interface_gets_implemented = zend_implement_throwable;
  823|       |
  824|      2|	memcpy(&default_exception_handlers, &std_object_handlers, sizeof(zend_object_handlers));
  825|      2|	default_exception_handlers.clone_obj = NULL;
  826|       |
  827|      2|	zend_ce_exception = register_class_Exception(zend_ce_throwable);
  828|      2|	zend_init_exception_class_entry(zend_ce_exception);
  829|       |
  830|      2|	zend_ce_error_exception = register_class_ErrorException(zend_ce_exception);
  831|      2|	zend_init_exception_class_entry(zend_ce_error_exception);
  832|       |
  833|      2|	zend_ce_error = register_class_Error(zend_ce_throwable);
  834|      2|	zend_init_exception_class_entry(zend_ce_error);
  835|       |
  836|      2|	zend_ce_compile_error = register_class_CompileError(zend_ce_error);
  837|      2|	zend_init_exception_class_entry(zend_ce_compile_error);
  838|       |
  839|      2|	zend_ce_parse_error = register_class_ParseError(zend_ce_compile_error);
  840|      2|	zend_init_exception_class_entry(zend_ce_parse_error);
  841|       |
  842|      2|	zend_ce_type_error = register_class_TypeError(zend_ce_error);
  843|      2|	zend_init_exception_class_entry(zend_ce_type_error);
  844|       |
  845|      2|	zend_ce_argument_count_error = register_class_ArgumentCountError(zend_ce_type_error);
  846|      2|	zend_init_exception_class_entry(zend_ce_argument_count_error);
  847|       |
  848|      2|	zend_ce_value_error = register_class_ValueError(zend_ce_error);
  849|      2|	zend_init_exception_class_entry(zend_ce_value_error);
  850|       |
  851|      2|	zend_ce_arithmetic_error = register_class_ArithmeticError(zend_ce_error);
  852|      2|	zend_init_exception_class_entry(zend_ce_arithmetic_error);
  853|       |
  854|      2|	zend_ce_division_by_zero_error = register_class_DivisionByZeroError(zend_ce_arithmetic_error);
  855|      2|	zend_init_exception_class_entry(zend_ce_division_by_zero_error);
  856|       |
  857|      2|	zend_ce_unhandled_match_error = register_class_UnhandledMatchError(zend_ce_error);
  858|      2|	zend_init_exception_class_entry(zend_ce_unhandled_match_error);
  859|       |
  860|      2|	zend_ce_request_parse_body_exception = register_class_RequestParseBodyException(zend_ce_exception);
  861|      2|	zend_init_exception_class_entry(zend_ce_request_parse_body_exception);
  862|       |
  863|      2|	INIT_CLASS_ENTRY(zend_ce_unwind_exit, "UnwindExit", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  864|       |
  865|      2|	INIT_CLASS_ENTRY(zend_ce_graceful_exit, "GracefulExit", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  866|      2|}
zend_throw_exception:
  898|  14.9k|{
  899|  14.9k|	zend_string *msg_str = message ? zend_string_init(message, strlen(message), 0) : NULL;
  ------------------
  |  Branch (899:25): [True: 14.9k, False: 0]
  ------------------
  900|  14.9k|	zend_object *ex = zend_throw_exception_zstr(exception_ce, msg_str, code);
  901|  14.9k|	if (msg_str) {
  ------------------
  |  Branch (901:6): [True: 14.9k, False: 0]
  ------------------
  902|  14.9k|		zend_string_release(msg_str);
  903|  14.9k|	}
  904|  14.9k|	return ex;
  905|  14.9k|}
zend_throw_exception_ex:
  909|  3.87k|{
  910|  3.87k|	va_list arg;
  911|  3.87k|	zend_object *obj;
  912|       |
  913|  3.87k|	va_start(arg, format);
  914|  3.87k|	zend_string *msg_str = zend_vstrpprintf(0, format, arg);
  915|       |	va_end(arg);
  916|  3.87k|	obj = zend_throw_exception_zstr(exception_ce, msg_str, code);
  917|  3.87k|	zend_string_release(msg_str);
  918|  3.87k|	return obj;
  919|  3.87k|}
zend_exception_error:
  948|    675|{
  949|    675|	zval exception, rv;
  950|    675|	zend_class_entry *ce_exception;
  951|    675|	zend_result result = FAILURE;
  952|       |
  953|    675|	ZVAL_OBJ(&exception, ex);
  ------------------
  |  | 1140|    675|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|    675|		zval *__z = (z);						\
  |  | 1142|    675|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|    675|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|    675|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    675|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|    675|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    675|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    675|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    675|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    675|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    675|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|    675|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 675]
  |  |  ------------------
  ------------------
  954|    675|	ce_exception = ex->ce;
  955|    675|	EG(exception) = NULL;
  ------------------
  |  |   45|    675|# define EG(v) (executor_globals.v)
  ------------------
  956|       |
  957|    675|	zval_ptr_dtor(&EG(last_fatal_error_backtrace));
  ------------------
  |  |   45|    675|# define EG(v) (executor_globals.v)
  ------------------
  958|    675|	ZVAL_UNDEF(&EG(last_fatal_error_backtrace));
  ------------------
  |  | 1055|    675|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    675|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    675|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    675|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    675|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    675|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 675]
  |  |  ------------------
  ------------------
  959|       |
  960|    675|	if (ce_exception == zend_ce_parse_error || ce_exception == zend_ce_compile_error) {
  ------------------
  |  Branch (960:6): [True: 0, False: 675]
  |  Branch (960:45): [True: 0, False: 675]
  ------------------
  961|      0|		zend_string *message = zval_get_string(GET_PROPERTY(&exception, ZEND_STR_MESSAGE));
  ------------------
  |  |  417|      0|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 0, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  962|      0|		zend_string *file = zval_get_string(GET_PROPERTY_SILENT(&exception, ZEND_STR_FILE));
  ------------------
  |  |  419|      0|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  963|      0|		zend_long line = zval_get_long(GET_PROPERTY_SILENT(&exception, ZEND_STR_LINE));
  ------------------
  |  |  419|      0|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  964|      0|		int type = (ce_exception == zend_ce_parse_error ? E_PARSE : E_COMPILE_ERROR) | E_DONT_BAIL;
  ------------------
  |  |   24|      0|#define E_PARSE				(1<<2L)
  ------------------
              		int type = (ce_exception == zend_ce_parse_error ? E_PARSE : E_COMPILE_ERROR) | E_DONT_BAIL;
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              		int type = (ce_exception == zend_ce_parse_error ? E_PARSE : E_COMPILE_ERROR) | E_DONT_BAIL;
  ------------------
  |  |   40|      0|#define E_DONT_BAIL			(1<<15L)
  ------------------
  |  Branch (964:15): [True: 0, False: 0]
  ------------------
  965|       |
  966|      0|		zend_observer_error_notify(type, file, line, message);
  967|      0|		zend_error_cb(type, file, line, message);
  968|       |
  969|      0|		zend_string_release_ex(file, 0);
  970|      0|		zend_string_release_ex(message, 0);
  971|    675|	} else if (instanceof_function(ce_exception, zend_ce_throwable)) {
  ------------------
  |  Branch (971:13): [True: 675, False: 0]
  ------------------
  972|    675|		zval tmp;
  973|    675|		zend_string *str, *file = NULL;
  974|    675|		zend_long line = 0;
  975|       |
  976|    675|		zend_call_known_instance_method_with_0_params(ex->ce->__tostring, ex, &tmp);
  977|    675|		if (!EG(exception)) {
  ------------------
  |  |   45|    675|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (977:7): [True: 673, False: 2]
  ------------------
  978|    673|			if (UNEXPECTED(Z_ISREF(tmp))) {
  ------------------
  |  |  457|    673|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 673]
  |  |  ------------------
  ------------------
  979|      0|				zend_unwrap_reference(&tmp);
  980|      0|			}
  981|    673|			if (Z_TYPE(tmp) != IS_STRING) {
  ------------------
  |  |  668|    673|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(tmp) != IS_STRING) {
  ------------------
  |  |  612|    673|#define IS_STRING					6
  ------------------
  |  Branch (981:8): [True: 0, False: 673]
  ------------------
  982|      0|				zend_error(E_WARNING, "%s::__toString() must return a string", ZSTR_VAL(ce_exception->name));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              				zend_error(E_WARNING, "%s::__toString() must return a string", ZSTR_VAL(ce_exception->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  983|    673|			} else {
  984|    673|				zend_update_property_ex(i_get_exception_base(ex), ex, ZSTR_KNOWN(ZEND_STR_STRING), &tmp);
  985|    673|			}
  986|    673|		}
  987|    675|		zval_ptr_dtor(&tmp);
  988|       |
  989|    675|		if (EG(exception)) {
  ------------------
  |  |   45|    675|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 675]
  |  |  ------------------
  ------------------
  990|      0|			zval zv;
  991|       |
  992|      0|			ZVAL_OBJ(&zv, EG(exception));
  ------------------
  |  | 1140|      0|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      0|		zval *__z = (z);						\
  |  | 1142|      0|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  993|       |			/* do the best we can to inform about the inner exception */
  994|      0|			if (instanceof_function(ce_exception, zend_ce_exception) || instanceof_function(ce_exception, zend_ce_error)) {
  ------------------
  |  Branch (994:8): [True: 0, False: 0]
  |  Branch (994:64): [True: 0, False: 0]
  ------------------
  995|      0|				file = zval_get_string(GET_PROPERTY_SILENT(&zv, ZEND_STR_FILE));
  ------------------
  |  |  419|      0|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  996|      0|				line = zval_get_long(GET_PROPERTY_SILENT(&zv, ZEND_STR_LINE));
  ------------------
  |  |  419|      0|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  997|      0|			}
  998|       |
  999|      0|			zend_error_va(E_WARNING, (file && ZSTR_LEN(file) > 0) ? file : NULL, line,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              			zend_error_va(E_WARNING, (file && ZSTR_LEN(file) > 0) ? file : NULL, line,
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (999:30): [True: 0, False: 0]
  |  Branch (999:38): [True: 0, False: 0]
  ------------------
 1000|      0|				"Uncaught %s in exception handling during call to %s::__toString()",
 1001|      0|				ZSTR_VAL(Z_OBJCE(zv)->name), ZSTR_VAL(ce_exception->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(Z_OBJCE(zv)->name), ZSTR_VAL(ce_exception->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1002|       |
 1003|      0|			if (file) {
  ------------------
  |  Branch (1003:8): [True: 0, False: 0]
  ------------------
 1004|      0|				zend_string_release_ex(file, 0);
 1005|      0|			}
 1006|      0|		}
 1007|       |
 1008|    675|		str = zval_get_string(GET_PROPERTY_SILENT(&exception, ZEND_STR_STRING));
  ------------------
  |  |  419|    675|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1009|    675|		file = zval_get_string(GET_PROPERTY_SILENT(&exception, ZEND_STR_FILE));
  ------------------
  |  |  419|    675|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1010|    675|		line = zval_get_long(GET_PROPERTY_SILENT(&exception, ZEND_STR_LINE));
  ------------------
  |  |  419|    675|	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	zend_read_property_ex(i_get_exception_base(Z_OBJ_P(object)), Z_OBJ_P(object), ZSTR_KNOWN(id), 1, &rv)
  |  |  ------------------
  |  |  |  | 1000|    675|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    675|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1011|       |
 1012|    675|		zend_error_va(severity | E_DONT_BAIL,
  ------------------
  |  |   40|    675|#define E_DONT_BAIL			(1<<15L)
  ------------------
 1013|    675|			(file && ZSTR_LEN(file) > 0) ? file : NULL, line,
  ------------------
  |  |   68|    673|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1013:5): [True: 673, False: 2]
  |  Branch (1013:13): [True: 673, False: 0]
  ------------------
 1014|    675|			"Uncaught %S\n  thrown", str);
 1015|       |
 1016|    675|		zend_string_release_ex(str, 0);
 1017|    675|		zend_string_release_ex(file, 0);
 1018|    675|	} else if (ce_exception == &zend_ce_unwind_exit || ce_exception == &zend_ce_graceful_exit) {
  ------------------
  |  Branch (1018:13): [True: 0, False: 0]
  |  Branch (1018:53): [True: 0, False: 0]
  ------------------
 1019|       |		/* We successfully unwound, nothing more to do.
 1020|       |		 * We still return FAILURE in this case, as further execution should still be aborted. */
 1021|      0|	} else {
 1022|      0|		zend_error(severity, "Uncaught exception %s", ZSTR_VAL(ce_exception->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1023|      0|	}
 1024|       |
 1025|    675|	OBJ_RELEASE(ex);
  ------------------
  |  |   44|    675|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1026|    675|	return result;
 1027|    675|}
zend_exception_uncaught_error:
 1030|      1|ZEND_NORETURN void zend_exception_uncaught_error(const char *format, ...) {
 1031|      1|	va_list va;
 1032|      1|	va_start(va, format);
 1033|      1|	zend_string *prefix = zend_vstrpprintf(0, format, va);
 1034|      1|	va_end(va);
 1035|       |
 1036|      1|	ZEND_ASSERT(EG(exception));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1036:2): [True: 0, False: 1]
  |  Branch (1036:2): [True: 1, False: 0]
  ------------------
 1037|      1|	zval exception_zv;
 1038|      1|	ZVAL_OBJ_COPY(&exception_zv, EG(exception));
  ------------------
  |  | 1146|      1|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      1|		zval *__z = (z);						\
  |  | 1148|      1|		zend_object *__o = (o);					\
  |  | 1149|      1|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      1|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1039|      1|	zend_clear_exception();
 1040|       |
 1041|      1|	zend_string *exception_str = zval_get_string(&exception_zv);
 1042|      1|	zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
 1043|      1|		"%s: Uncaught %s", ZSTR_VAL(prefix), ZSTR_VAL(exception_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		"%s: Uncaught %s", ZSTR_VAL(prefix), ZSTR_VAL(exception_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1044|      1|}
zend_throw_exception_object:
 1047|     53|{
 1048|     53|	if (exception == NULL || Z_TYPE_P(exception) != IS_OBJECT) {
  ------------------
  |  |  669|     53|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     53|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (exception == NULL || Z_TYPE_P(exception) != IS_OBJECT) {
  ------------------
  |  |  614|     53|#define IS_OBJECT					8
  ------------------
  |  Branch (1048:6): [True: 0, False: 53]
  |  Branch (1048:27): [True: 0, False: 53]
  ------------------
 1049|      0|		zend_error_noreturn(E_CORE_ERROR, "Need to supply an object when throwing an exception");
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 1050|      0|	}
 1051|       |
 1052|     53|	zend_class_entry *exception_ce = Z_OBJCE_P(exception);
  ------------------
  |  | 1012|     53|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     53|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     53|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1053|       |
 1054|     53|	if (!exception_ce || !instanceof_function(exception_ce, zend_ce_throwable)) {
  ------------------
  |  Branch (1054:6): [True: 0, False: 53]
  |  Branch (1054:23): [True: 1, False: 52]
  ------------------
 1055|      1|		zend_throw_error(NULL, "Cannot throw objects that do not implement Throwable");
 1056|      1|		zval_ptr_dtor(exception);
 1057|      1|		return;
 1058|      1|	}
 1059|       |
 1060|     52|	zend_throw_exception_internal(Z_OBJ_P(exception));
  ------------------
  |  | 1000|     52|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     52|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1061|     52|}
zend_create_unwind_exit:
 1065|     14|{
 1066|     14|	return zend_objects_new(&zend_ce_unwind_exit);
 1067|     14|}
zend_create_graceful_exit:
 1070|    275|{
 1071|    275|	return zend_objects_new(&zend_ce_graceful_exit);
 1072|    275|}
zend_throw_unwind_exit:
 1075|     14|{
 1076|     14|	ZEND_ASSERT(!EG(exception));
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1076:2): [True: 0, False: 14]
  |  Branch (1076:2): [True: 14, False: 0]
  ------------------
 1077|     14|	EG(exception) = zend_create_unwind_exit();
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
 1078|     14|	EG(opline_before_exception) = EG(current_execute_data)->opline;
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
              	EG(opline_before_exception) = EG(current_execute_data)->opline;
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
 1079|     14|	EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
              	EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
 1080|     14|}
zend_is_unwind_exit:
 1091|  14.1k|{
 1092|  14.1k|	return ex->ce == &zend_ce_unwind_exit;
 1093|  14.1k|}
zend_is_graceful_exit:
 1096|  7.42k|{
 1097|  7.42k|	return ex->ce == &zend_ce_graceful_exit;
 1098|  7.42k|}
zend_exceptions.c:i_get_exception_base:
   91|   245k|{
   92|   245k|	return instanceof_function(object->ce, zend_ce_exception) ? zend_ce_exception : zend_ce_error;
  ------------------
  |  Branch (92:9): [True: 7.28k, False: 237k]
  ------------------
   93|   245k|}
zend_exceptions.c:is_handle_exception_set:
  147|  6.43k|static zend_always_inline bool is_handle_exception_set(void) {
  148|  6.43k|	zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|  6.43k|# define EG(v) (executor_globals.v)
  ------------------
  149|  6.43k|	return !execute_data
  ------------------
  |  Branch (149:9): [True: 0, False: 6.43k]
  ------------------
  150|  6.43k|		|| !execute_data->func
  ------------------
  |  Branch (150:6): [True: 0, False: 6.43k]
  ------------------
  151|  6.43k|		|| !ZEND_USER_CODE(execute_data->func->common.type)
  ------------------
  |  | 1081|  12.8k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (151:6): [True: 3.92k, False: 2.51k]
  ------------------
  152|  2.51k|		|| execute_data->opline->opcode == ZEND_HANDLE_EXCEPTION;
  ------------------
  |  |  271|  8.95k|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (152:6): [True: 0, False: 2.51k]
  ------------------
  153|  6.43k|}
zend_exceptions.c:zend_update_property_num_checked:
  238|  56.9k|{
  239|  56.9k|	if (UNEXPECTED(object->ce->num_hooked_props > 0)) {
  ------------------
  |  |  457|  56.9k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 56.9k]
  |  |  ------------------
  ------------------
  240|       |		/* Property may have been overridden with a hook. */
  241|     10|		zend_update_property_ex(scope != NULL ? scope : object->ce, object, member, value);
  ------------------
  |  Branch (241:27): [True: 2, False: 8]
  ------------------
  242|     10|		zval_ptr_dtor(value);
  243|     10|		return;
  244|     10|	}
  245|  56.9k|#if ZEND_DEBUG
  246|  56.9k|	const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|  56.9k|# define EG(v) (executor_globals.v)
  ------------------
  247|  56.9k|	EG(fake_scope) = i_get_exception_base(object);
  ------------------
  |  |   45|  56.9k|# define EG(v) (executor_globals.v)
  ------------------
  248|  56.9k|	const zend_property_info *prop_info = zend_get_property_info(object->ce, member, true);
  249|  56.9k|	ZEND_ASSERT(OBJ_PROP_TO_NUM(prop_info->offset) == prop_num);
  ------------------
  |  |  112|  56.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (249:2): [True: 0, False: 56.9k]
  |  Branch (249:2): [True: 56.9k, False: 0]
  ------------------
  250|  56.9k|	EG(fake_scope) = old_scope;
  ------------------
  |  |   45|  56.9k|# define EG(v) (executor_globals.v)
  ------------------
  251|  56.9k|#endif
  252|  56.9k|	zval *zv = OBJ_PROP_NUM(object, prop_num);
  ------------------
  |  |  482|  56.9k|	(&(obj)->properties_table[(num)])
  ------------------
  253|  56.9k|	zval_ptr_safe_dtor(zv);
  254|  56.9k|	ZVAL_COPY_VALUE(zv, value);
  ------------------
  |  | 1416|  56.9k|	do {												\
  |  | 1417|  56.9k|		zval *_z1 = (z);								\
  |  | 1418|  56.9k|		const zval *_z2 = (v);							\
  |  | 1419|  56.9k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  56.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  56.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  56.9k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  56.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  56.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  56.9k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  56.9k|	do {												\
  |  |  |  | 1408|  56.9k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  56.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  56.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  56.9k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  56.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  56.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  56.9k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 56.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  56.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 56.9k]
  |  |  ------------------
  ------------------
  255|  56.9k|}
zend_exceptions.c:build_trace_args_list:
  543|    733|{
  544|    733|	if (UNEXPECTED(Z_TYPE_P(tmp) != IS_ARRAY)) {
  ------------------
  |  |  457|    733|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 733]
  |  |  ------------------
  ------------------
  545|       |		/* only happens w/ reflection abuse (Zend/tests/bug63762.phpt) */
  546|      0|		zend_error(E_WARNING, "args element is not an array");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  547|      0|		return;
  548|      0|	}
  549|       |
  550|    733|	bool first = true;
  551|  3.57k|	ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(tmp), zend_string *name, zval *arg) {
  ------------------
  |  | 1181|  1.42k|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|    733|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|    733|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|    733|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|    733|		zend_ulong __h; \
  |  |  |  |  |  | 1048|    733|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|    733|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|    733|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|    733|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    733|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    733|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    733|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|    733|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|    733|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    733|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|  2.15k|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 1.42k, False: 733]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|  1.42k|			zval *_z = __z; \
  |  |  |  |  |  | 1055|  1.42k|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.42k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|  1.42k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|  1.42k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 1.41k, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|  1.41k|				__z++; \
  |  |  |  |  |  | 1057|  1.41k|				__h = _idx; \
  |  |  |  |  |  | 1058|  1.41k|				_idx++; \
  |  |  |  |  |  | 1059|  1.41k|			} else { \
  |  |  |  |  |  | 1060|      3|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      3|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      3|				__h = _p->h; \
  |  |  |  |  |  | 1063|      3|				__key = _p->key; \
  |  |  |  |  |  | 1064|      3|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      3|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 3]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      3|			} \
  |  |  |  |  |  | 1068|  1.42k|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|  1.42k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.42k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|  1.42k|	_key = __key; \
  |  | 1183|  1.42k|	_val = _z;
  ------------------
  552|  3.57k|		if (!first) {
  ------------------
  |  Branch (552:7): [True: 705, False: 715]
  ------------------
  553|    705|			smart_str_appends(str, ", ");
  554|    705|		}
  555|  3.57k|		first = false;
  556|  3.57k|		if (name) {
  ------------------
  |  Branch (556:7): [True: 2, False: 1.41k]
  ------------------
  557|      2|			smart_str_append(str, name);
  558|      2|			smart_str_appends(str, ": ");
  559|      2|		}
  560|  3.57k|		build_trace_args(arg, str);
  561|  3.57k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  1.42k|		} \
  |  | 1102|    733|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 733]
  |  |  ------------------
  ------------------
  562|    733|}
zend_exceptions.c:build_trace_args:
  510|  1.42k|{
  511|       |	/* the trivial way would be to do
  512|       |	 * convert_to_string(arg);
  513|       |	 * append it and kill the now tmp arg.
  514|       |	 * but that could cause some E_NOTICE and also damn long lines.
  515|       |	 */
  516|       |
  517|  1.42k|	ZVAL_DEREF(arg);
  ------------------
  |  | 1474|  1.42k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.42k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.42k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  1.42k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.42k]
  |  |  ------------------
  ------------------
  518|       |
  519|  1.42k|	if (smart_str_append_zval(str, arg, EG(exception_string_param_max_len)) != SUCCESS) {
  ------------------
  |  |   45|  1.42k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (519:6): [True: 675, False: 745]
  ------------------
  520|    675|		switch (Z_TYPE_P(arg)) {
  ------------------
  |  |  669|    675|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    675|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (668:25): [True: 675, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      0|			case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (521:4): [True: 0, False: 675]
  ------------------
  522|      0|				smart_str_appends(str, "Resource id #");
  523|      0|				smart_str_append_long(str, Z_RES_HANDLE_P(arg));
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  524|      0|				break;
  525|    661|			case IS_ARRAY:
  ------------------
  |  |  613|    661|#define IS_ARRAY					7
  ------------------
  |  Branch (525:4): [True: 661, False: 14]
  ------------------
  526|    661|				smart_str_appends(str, "Array");
  527|    661|				break;
  528|     14|			case IS_OBJECT: {
  ------------------
  |  |  614|     14|#define IS_OBJECT					8
  ------------------
  |  Branch (528:4): [True: 14, False: 661]
  ------------------
  529|     14|				zend_string *class_name = Z_OBJ_HANDLER_P(arg, get_class_name)(Z_OBJ_P(arg));
  ------------------
  |  | 1006|     14|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|     14|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|     14|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_string *class_name = Z_OBJ_HANDLER_P(arg, get_class_name)(Z_OBJ_P(arg));
  ------------------
  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  530|     14|				smart_str_appends(str, "Object(");
  531|       |				/* cut off on NULL byte ... class@anonymous */
  532|     14|				smart_str_appends(str, ZSTR_VAL(class_name));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  533|     14|				smart_str_appends(str, ")");
  534|     14|				zend_string_release_ex(class_name, 0);
  535|     14|				break;
  536|      0|			}
  537|    675|		}
  538|    675|	}
  539|  1.42k|}
zend_exceptions.c:build_trace_string:
  566|    737|{
  567|    737|	zval *file, *tmp;
  568|       |
  569|    737|	smart_str_appendc(str, '#');
  570|    737|	smart_str_append_long(str, num);
  571|    737|	smart_str_appendc(str, ' ');
  572|       |
  573|    737|	file = zend_hash_find_known_hash(ht, ZSTR_KNOWN(ZEND_STR_FILE));
  574|    737|	if (file) {
  ------------------
  |  Branch (574:6): [True: 64, False: 673]
  ------------------
  575|     64|		if (UNEXPECTED(Z_TYPE_P(file) != IS_STRING)) {
  ------------------
  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 64]
  |  |  ------------------
  ------------------
  576|      0|			zend_error(E_WARNING, "File name is not a string");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  577|      0|			smart_str_appends(str, "[unknown file]: ");
  578|     64|		} else{
  579|     64|			zend_long line = 0;
  580|     64|			tmp = zend_hash_find_known_hash(ht, ZSTR_KNOWN(ZEND_STR_LINE));
  581|     64|			if (tmp) {
  ------------------
  |  Branch (581:8): [True: 64, False: 0]
  ------------------
  582|     64|				if (EXPECTED(Z_TYPE_P(tmp) == IS_LONG)) {
  ------------------
  |  |  456|     64|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 64, False: 0]
  |  |  ------------------
  ------------------
  583|     64|					line = Z_LVAL_P(tmp);
  ------------------
  |  |  976|     64|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     64|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  584|     64|				} else {
  585|      0|					zend_error(E_WARNING, "Line is not an int");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  586|      0|				}
  587|     64|			}
  588|     64|			smart_str_append(str, Z_STR_P(file));
  ------------------
  |  |  982|     64|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     64|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  589|     64|			smart_str_appendc(str, '(');
  590|     64|			smart_str_append_long(str, line);
  591|     64|			smart_str_appends(str, "): ");
  592|     64|		}
  593|    673|	} else {
  594|    673|		smart_str_appends(str, "[internal function]: ");
  595|    673|	}
  596|    737|	const zval *class_name = zend_hash_find(ht, ZSTR_KNOWN(ZEND_STR_CLASS));
  597|    737|	if (class_name) {
  ------------------
  |  Branch (597:6): [True: 690, False: 47]
  ------------------
  598|    690|		if (UNEXPECTED(Z_TYPE_P(class_name) != IS_STRING)) {
  ------------------
  |  |  457|    690|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 690]
  |  |  ------------------
  ------------------
  599|      0|			zend_error(E_WARNING, "Value for class is not a string");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  600|      0|			smart_str_appends(str, "[unknown]");
  601|    690|		} else {
  602|       |			/* cut off on NULL byte ... class@anonymous */
  603|    690|			smart_str_appends(str, Z_STRVAL_P(class_name));
  ------------------
  |  |  985|    690|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    690|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    690|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  604|    690|		}
  605|    690|	}
  606|    737|	TRACE_APPEND_KEY(ZSTR_KNOWN(ZEND_STR_TYPE));
  ------------------
  |  |  496|    737|#define TRACE_APPEND_KEY(key) do {                                          \
  |  |  497|    737|		tmp = zend_hash_find(ht, key);                                      \
  |  |  498|    737|		if (tmp) {                                                          \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 690, False: 47]
  |  |  ------------------
  |  |  499|    690|			if (UNEXPECTED(Z_TYPE_P(tmp) != IS_STRING)) {                   \
  |  |  ------------------
  |  |  |  |  457|    690|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 690]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  500|      0|				zend_error(E_WARNING, "Value for %s is not a string",       \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  501|      0|					ZSTR_VAL(key));                                         \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  502|      0|				smart_str_appends(str, "[unknown]");                        \
  |  |  503|    690|			} else {                                                        \
  |  |  504|    690|				smart_str_append(str, Z_STR_P(tmp));                        \
  |  |  ------------------
  |  |  |  |  982|    690|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    690|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  505|    690|			}                                                               \
  |  |  506|    690|		} \
  |  |  507|    737|	} while (0)
  |  |  ------------------
  |  |  |  Branch (507:11): [Folded, False: 737]
  |  |  ------------------
  ------------------
  607|    737|	TRACE_APPEND_KEY(ZSTR_KNOWN(ZEND_STR_FUNCTION));
  ------------------
  |  |  496|    737|#define TRACE_APPEND_KEY(key) do {                                          \
  |  |  497|    737|		tmp = zend_hash_find(ht, key);                                      \
  |  |  498|    737|		if (tmp) {                                                          \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 737, False: 0]
  |  |  ------------------
  |  |  499|    737|			if (UNEXPECTED(Z_TYPE_P(tmp) != IS_STRING)) {                   \
  |  |  ------------------
  |  |  |  |  457|    737|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 737]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  500|      0|				zend_error(E_WARNING, "Value for %s is not a string",       \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  501|      0|					ZSTR_VAL(key));                                         \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  502|      0|				smart_str_appends(str, "[unknown]");                        \
  |  |  503|    737|			} else {                                                        \
  |  |  504|    737|				smart_str_append(str, Z_STR_P(tmp));                        \
  |  |  ------------------
  |  |  |  |  982|    737|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    737|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  505|    737|			}                                                               \
  |  |  506|    737|		} \
  |  |  507|    737|	} while (0)
  |  |  ------------------
  |  |  |  Branch (507:11): [Folded, False: 737]
  |  |  ------------------
  ------------------
  608|    737|	smart_str_appendc(str, '(');
  609|    737|	tmp = zend_hash_find_known_hash(ht, ZSTR_KNOWN(ZEND_STR_ARGS));
  610|    737|	if (tmp) {
  ------------------
  |  Branch (610:6): [True: 733, False: 4]
  ------------------
  611|    733|		build_trace_args_list(tmp, str);
  612|    733|	}
  613|    737|	smart_str_appends(str, ")\n");
  614|    737|}
zend_exceptions.c:zend_implement_throwable:
   65|    108|{
   66|       |	/* zend_ce_exception and zend_ce_error may not be initialized yet when this is called (e.g when
   67|       |	 * implementing Throwable for Exception itself). Perform a manual inheritance check. */
   68|    108|	const zend_class_entry *root = class_type;
   69|    263|	while (root->parent) {
  ------------------
  |  Branch (69:9): [True: 155, False: 108]
  ------------------
   70|    155|		root = root->parent;
   71|    155|	}
   72|    108|	if (zend_string_equals_literal(root->name, "Exception")
  ------------------
  |  |  407|    216|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 69, False: 39]
  |  |  ------------------
  ------------------
   73|    106|			|| zend_string_equals_literal(root->name, "Error")) {
  ------------------
  |  |  407|     39|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 37, False: 2]
  |  |  ------------------
  ------------------
   74|    106|		return SUCCESS;
   75|    106|	}
   76|       |
   77|    108|	bool can_extend = (class_type->ce_flags & ZEND_ACC_ENUM) == 0;
  ------------------
  |  |  284|      2|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
   78|       |
   79|      2|	zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|      2|#define E_ERROR				(1<<0L)
  ------------------
   80|      2|		can_extend
  ------------------
  |  Branch (80:3): [True: 1, False: 1]
  ------------------
   81|      2|			? "%s %s cannot implement interface %s, extend Exception or Error instead"
   82|      2|			: "%s %s cannot implement interface %s",
   83|      2|		zend_get_object_type_uc(class_type),
   84|      2|		ZSTR_VAL(class_type->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   85|      2|		ZSTR_VAL(interface->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   86|      0|	return FAILURE;
   87|    108|}
zend_exceptions.c:zend_init_exception_class_entry:
  814|     24|static void zend_init_exception_class_entry(zend_class_entry *ce) {
  815|     24|	ce->create_object = zend_default_exception_new;
  816|     24|	ce->default_object_handlers = &default_exception_handlers;
  817|     24|}
zend_exceptions.c:zend_default_exception_new:
  258|  18.9k|{
  259|  18.9k|	zval tmp;
  260|  18.9k|	zval trace;
  261|  18.9k|	zend_string *filename;
  262|       |
  263|  18.9k|	zend_object *object = zend_objects_new(class_type);
  264|  18.9k|	object_properties_init(object, class_type);
  265|       |
  266|  18.9k|	if (EG(current_execute_data)) {
  ------------------
  |  |   45|  18.9k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 13.1k, False: 5.88k]
  |  |  ------------------
  ------------------
  267|  13.1k|		zend_fetch_debug_backtrace(&trace,
  268|  13.1k|			0,
  269|  13.1k|			EG(exception_ignore_args) ? DEBUG_BACKTRACE_IGNORE_ARGS : 0, 0);
  ------------------
  |  |   45|  13.1k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 1, False: 13.1k]
  |  |  ------------------
  ------------------
              			EG(exception_ignore_args) ? DEBUG_BACKTRACE_IGNORE_ARGS : 0, 0);
  ------------------
  |  |  459|      1|#define DEBUG_BACKTRACE_IGNORE_ARGS    (1<<1)
  ------------------
  270|  13.1k|	} else {
  271|  5.88k|		ZVAL_EMPTY_ARRAY(&trace);
  ------------------
  |  |   89|  5.88k|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|  5.88k|		zval *__z = (z);								\
  |  |   91|  5.88k|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|  5.88k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  5.88k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|  5.88k|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|  5.88k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  5.88k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|  5.88k|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|  5.88k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 5.88k]
  |  |  ------------------
  ------------------
  272|  5.88k|	}
  273|       |
  274|  18.9k|	zend_update_property_num_checked(i_get_exception_base(object), object, ZEND_EXCEPTION_TRACE_OFF, ZSTR_KNOWN(ZEND_STR_TRACE), &trace);
  ------------------
  |  |   36|  18.9k|#define ZEND_EXCEPTION_TRACE_OFF 5
  ------------------
  275|       |
  276|  18.9k|	if (EXPECTED((class_type != zend_ce_parse_error && class_type != zend_ce_compile_error)
  ------------------
  |  |  456|  56.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7.25k, False: 11.7k]
  |  |  |  Branch (456:52): [True: 3.51k, False: 15.4k]
  |  |  |  Branch (456:52): [True: 3.48k, False: 30]
  |  |  |  Branch (456:52): [True: 3.76k, False: 11.7k]
  |  |  ------------------
  ------------------
  277|  18.9k|			|| !(filename = zend_get_compiled_filename()))) {
  278|  7.25k|		ZVAL_STRING(&tmp, zend_get_executed_filename());
  ------------------
  |  |  967|  7.25k|#define ZVAL_STRING(z, s) do {					\
  |  |  968|  7.25k|		const char *_s = (s);					\
  |  |  969|  7.25k|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|  7.25k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|  7.25k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  7.25k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  7.25k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  7.25k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  7.25k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  7.25k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  7.25k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  7.25k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  7.25k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  7.25k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  7.25k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  7.25k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  7.25k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  7.25k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  7.25k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 7.25k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|  7.25k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 7.25k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|  7.25k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 7.25k]
  |  |  ------------------
  ------------------
  279|  7.25k|		zend_update_property_num_checked(NULL, object, ZEND_EXCEPTION_FILE_OFF, ZSTR_KNOWN(ZEND_STR_FILE), &tmp);
  ------------------
  |  |   34|  7.25k|#define ZEND_EXCEPTION_FILE_OFF 3
  ------------------
  280|  7.25k|		ZVAL_LONG(&tmp, zend_get_executed_lineno());
  ------------------
  |  | 1076|  7.25k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  7.25k|		zval *__z = (z);				\
  |  | 1078|  7.25k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  7.25k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  7.25k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  7.25k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  7.25k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  7.25k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  7.25k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  7.25k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 7.25k]
  |  |  ------------------
  ------------------
  281|  7.25k|		zend_update_property_num_checked(NULL, object, ZEND_EXCEPTION_LINE_OFF, ZSTR_KNOWN(ZEND_STR_LINE), &tmp);
  ------------------
  |  |   35|  7.25k|#define ZEND_EXCEPTION_LINE_OFF 4
  ------------------
  282|  11.7k|	} else {
  283|  11.7k|		ZVAL_STR_COPY(&tmp, filename);
  ------------------
  |  | 1112|  11.7k|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|  11.7k|		zval *__z = (z);								\
  |  | 1114|  11.7k|		zend_string *__s = (s);							\
  |  | 1115|  11.7k|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|  11.7k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  11.7k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|  11.7k|		/* interned strings support */					\
  |  | 1117|  11.7k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 11.7k]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|  11.7k|		} else {										\
  |  | 1120|  11.7k|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|  11.7k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|  11.7k|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|  11.7k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.7k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|  11.7k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  11.7k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  11.7k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  11.7k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|  11.7k|		}												\
  |  | 1123|  11.7k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 11.7k]
  |  |  ------------------
  ------------------
  284|  11.7k|		zend_update_property_num_checked(NULL, object, ZEND_EXCEPTION_FILE_OFF, ZSTR_KNOWN(ZEND_STR_FILE), &tmp);
  ------------------
  |  |   34|  11.7k|#define ZEND_EXCEPTION_FILE_OFF 3
  ------------------
  285|  11.7k|		ZVAL_LONG(&tmp, zend_get_compiled_lineno());
  ------------------
  |  | 1076|  11.7k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  11.7k|		zval *__z = (z);				\
  |  | 1078|  11.7k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  11.7k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  11.7k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  11.7k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  11.7k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.7k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  11.7k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  11.7k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 11.7k]
  |  |  ------------------
  ------------------
  286|  11.7k|		zend_update_property_num_checked(NULL, object, ZEND_EXCEPTION_LINE_OFF, ZSTR_KNOWN(ZEND_STR_LINE), &tmp);
  ------------------
  |  |   35|  11.7k|#define ZEND_EXCEPTION_LINE_OFF 4
  ------------------
  287|  11.7k|	}
  288|       |
  289|  18.9k|	return object;
  290|  18.9k|}
zend_exceptions.c:zend_throw_exception_zstr:
  870|  18.8k|{
  871|  18.8k|	zval ex, tmp;
  872|       |
  873|  18.8k|	if (!exception_ce) {
  ------------------
  |  Branch (873:6): [True: 4, False: 18.8k]
  ------------------
  874|      4|		exception_ce = zend_ce_exception;
  875|      4|	}
  876|       |
  877|  18.8k|	ZEND_ASSERT(instanceof_function(exception_ce, zend_ce_throwable)
  ------------------
  |  |  112|  18.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (877:2): [True: 0, False: 18.8k]
  |  Branch (877:2): [True: 0, False: 0]
  |  Branch (877:2): [True: 18.8k, False: 0]
  |  Branch (877:2): [True: 18.8k, False: 0]
  ------------------
  878|  18.8k|		&& "Exceptions must implement Throwable");
  879|       |
  880|  18.8k|	object_init_ex(&ex, exception_ce);
  881|       |
  882|  18.8k|	if (message) {
  ------------------
  |  Branch (882:6): [True: 18.8k, False: 0]
  ------------------
  883|  18.8k|		ZVAL_STR(&tmp, message);
  ------------------
  |  | 1088|  18.8k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  18.8k|		zval *__z = (z);						\
  |  | 1090|  18.8k|		zend_string *__s = (s);					\
  |  | 1091|  18.8k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  18.8k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  18.8k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  18.8k|		/* interned strings support */			\
  |  | 1093|  18.8k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  18.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  18.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 18.8k]
  |  |  ------------------
  |  | 1094|  18.8k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  18.8k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  37.6k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  18.8k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  18.8k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  18.8k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  18.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 18.8k]
  |  |  ------------------
  ------------------
  884|  18.8k|		zend_update_property_ex(exception_ce, Z_OBJ(ex), ZSTR_KNOWN(ZEND_STR_MESSAGE), &tmp);
  ------------------
  |  |  999|  18.8k|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  885|  18.8k|	}
  886|  18.8k|	if (code) {
  ------------------
  |  Branch (886:6): [True: 23, False: 18.7k]
  ------------------
  887|     23|		ZVAL_LONG(&tmp, code);
  ------------------
  |  | 1076|     23|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     23|		zval *__z = (z);				\
  |  | 1078|     23|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     23|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     23|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     23|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     23|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
  888|     23|		zend_update_property_ex(exception_ce, Z_OBJ(ex), ZSTR_KNOWN(ZEND_STR_CODE), &tmp);
  ------------------
  |  |  999|     23|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  889|     23|	}
  890|       |
  891|  18.8k|	zend_throw_exception_internal(Z_OBJ(ex));
  ------------------
  |  |  999|  18.8k|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  892|       |
  893|  18.8k|	return Z_OBJ(ex);
  ------------------
  |  |  999|  18.8k|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  894|  18.8k|}
zend_exceptions.c:zend_error_va:
  935|    673|{
  936|    673|	va_list args;
  937|    673|	va_start(args, format);
  938|    673|	zend_string *message = zend_vstrpprintf(0, format, args);
  939|    673|	zend_observer_error_notify(type, file, lineno, message);
  940|    673|	zend_error_cb(type, file, lineno, message);
  941|    673|	zend_string_release(message);
  942|       |	va_end(args);
  943|    673|}

zend_execute_API.c:zend_rethrow_exception:
   82|    170|{
   83|    170|	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  730|    170|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|    170|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (83:6): [True: 66, False: 104]
  ------------------
   84|     66|		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |   45|     66|# define EG(v) (executor_globals.v)
  ------------------
              		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |  730|     66|#define EX(element) 			((execute_data)->element)
  ------------------
   85|     66|		EX(opline) = EG(exception_op);
  ------------------
  |  |  730|     66|#define EX(element) 			((execute_data)->element)
  ------------------
              		EX(opline) = EG(exception_op);
  ------------------
  |  |   45|     66|# define EG(v) (executor_globals.v)
  ------------------
   86|     66|	}
   87|    170|}
zend_execute.c:zend_rethrow_exception:
   82|  1.29k|{
   83|  1.29k|	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  730|  1.29k|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|  1.29k|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (83:6): [True: 1.29k, False: 5]
  ------------------
   84|  1.29k|		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |   45|  1.29k|# define EG(v) (executor_globals.v)
  ------------------
              		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |  730|  1.29k|#define EX(element) 			((execute_data)->element)
  ------------------
   85|  1.29k|		EX(opline) = EG(exception_op);
  ------------------
  |  |  730|  1.29k|#define EX(element) 			((execute_data)->element)
  ------------------
              		EX(opline) = EG(exception_op);
  ------------------
  |  |   45|  1.29k|# define EG(v) (executor_globals.v)
  ------------------
   86|  1.29k|	}
   87|  1.29k|}
zend_fibers.c:zend_rethrow_exception:
   82|      2|{
   83|      2|	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|      2|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (83:6): [True: 2, False: 0]
  ------------------
   84|      2|		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
   85|      2|		EX(opline) = EG(exception_op);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
              		EX(opline) = EG(exception_op);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   86|      2|	}
   87|      2|}
zend_generators.c:zend_rethrow_exception:
   82|      4|{
   83|      4|	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|      4|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (83:6): [True: 4, False: 0]
  ------------------
   84|      4|		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
              		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
   85|      4|		EX(opline) = EG(exception_op);
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
              		EX(opline) = EG(exception_op);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
   86|      4|	}
   87|      4|}
zend_objects.c:zend_rethrow_exception:
   82|    283|{
   83|    283|	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  730|    283|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (EX(opline)->opcode != ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|    283|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (83:6): [True: 273, False: 10]
  ------------------
   84|    273|		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |   45|    273|# define EG(v) (executor_globals.v)
  ------------------
              		EG(opline_before_exception) = EX(opline);
  ------------------
  |  |  730|    273|#define EX(element) 			((execute_data)->element)
  ------------------
   85|    273|		EX(opline) = EG(exception_op);
  ------------------
  |  |  730|    273|#define EX(element) 			((execute_data)->element)
  ------------------
              		EX(opline) = EG(exception_op);
  ------------------
  |  |   45|    273|# define EG(v) (executor_globals.v)
  ------------------
   86|    273|	}
   87|    283|}

zend_exceptions.c:register_class_Throwable:
  146|      2|{
  147|      2|	zend_class_entry ce, *class_entry;
  148|       |
  149|      2|	INIT_CLASS_ENTRY(ce, "Throwable", class_Throwable_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  150|      2|	class_entry = zend_register_internal_interface(&ce);
  151|      2|	zend_class_implements(class_entry, 1, class_entry_Stringable);
  152|       |
  153|      2|	return class_entry;
  154|      2|}
zend_exceptions.c:register_class_Exception:
  157|      2|{
  158|      2|	zend_class_entry ce, *class_entry;
  159|       |
  160|      2|	INIT_CLASS_ENTRY(ce, "Exception", class_Exception_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  161|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  162|      2|	zend_class_implements(class_entry, 1, class_entry_Throwable);
  163|       |
  164|      2|	zval property_message_default_value;
  165|      2|	ZVAL_EMPTY_STRING(&property_message_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  166|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|      2|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
  167|       |
  168|      2|	zval property_string_default_value;
  169|      2|	ZVAL_EMPTY_STRING(&property_string_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  170|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_STRING), &property_string_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_STRING), &property_string_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  171|       |
  172|      2|	zval property_code_default_value;
  173|      2|	ZVAL_LONG(&property_code_default_value, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  174|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|      2|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
  175|       |
  176|      2|	zval property_file_default_value;
  177|      2|	ZVAL_EMPTY_STRING(&property_file_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  178|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_FILE), &property_file_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_FILE), &property_file_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  179|       |
  180|      2|	zval property_line_default_value;
  181|      2|	ZVAL_LONG(&property_line_default_value, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  182|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_LINE), &property_line_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_LINE), &property_line_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  183|       |
  184|      2|	zval property_trace_default_value;
  185|      2|	ZVAL_EMPTY_ARRAY(&property_trace_default_value);
  ------------------
  |  |   89|      2|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      2|		zval *__z = (z);								\
  |  |   91|      2|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  186|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  187|       |
  188|      2|	zval property_previous_default_value;
  189|      2|	ZVAL_NULL(&property_previous_default_value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  190|      2|	zend_string *property_previous_class_Throwable = zend_string_init("Throwable", sizeof("Throwable")-1, 1);
  191|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PREVIOUS), &property_previous_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previous_class_Throwable, 0, MAY_BE_NULL));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PREVIOUS), &property_previous_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previous_class_Throwable, 0, MAY_BE_NULL));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|       |
  193|      2|	return class_entry;
  194|      2|}
zend_exceptions.c:register_class_ErrorException:
  197|      2|{
  198|      2|	zend_class_entry ce, *class_entry;
  199|       |
  200|      2|	INIT_CLASS_ENTRY(ce, "ErrorException", class_ErrorException_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  201|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
  202|       |
  203|      2|	zval property_severity_default_value;
  204|      2|	ZVAL_LONG(&property_severity_default_value, E_ERROR);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  205|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SEVERITY), &property_severity_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SEVERITY), &property_severity_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  206|       |
  207|      2|	return class_entry;
  208|      2|}
zend_exceptions.c:register_class_Error:
  211|      2|{
  212|      2|	zend_class_entry ce, *class_entry;
  213|       |
  214|      2|	INIT_CLASS_ENTRY(ce, "Error", class_Error_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  215|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  216|      2|	zend_class_implements(class_entry, 1, class_entry_Throwable);
  217|       |
  218|      2|	zval property_message_default_value;
  219|      2|	ZVAL_EMPTY_STRING(&property_message_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  220|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|      2|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
  221|       |
  222|      2|	zval property_string_default_value;
  223|      2|	ZVAL_EMPTY_STRING(&property_string_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  224|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_STRING), &property_string_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_STRING), &property_string_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  225|       |
  226|      2|	zval property_code_default_value;
  227|      2|	ZVAL_LONG(&property_code_default_value, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  228|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|      2|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
  229|       |
  230|      2|	zval property_file_default_value;
  231|      2|	ZVAL_EMPTY_STRING(&property_file_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  232|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_FILE), &property_file_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_FILE), &property_file_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  233|       |
  234|      2|	zval property_line_default_value;
  235|      2|	ZVAL_UNDEF(&property_line_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  236|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_LINE), &property_line_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_LINE), &property_line_default_value, ZEND_ACC_PROTECTED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  237|       |
  238|      2|	zval property_trace_default_value;
  239|      2|	ZVAL_EMPTY_ARRAY(&property_trace_default_value);
  ------------------
  |  |   89|      2|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      2|		zval *__z = (z);								\
  |  |   91|      2|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  240|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TRACE), &property_trace_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  241|       |
  242|      2|	zval property_previous_default_value;
  243|      2|	ZVAL_NULL(&property_previous_default_value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  244|      2|	zend_string *property_previous_class_Throwable = zend_string_init("Throwable", sizeof("Throwable")-1, 1);
  245|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PREVIOUS), &property_previous_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previous_class_Throwable, 0, MAY_BE_NULL));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PREVIOUS), &property_previous_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previous_class_Throwable, 0, MAY_BE_NULL));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|       |
  247|      2|	return class_entry;
  248|      2|}
zend_exceptions.c:register_class_CompileError:
  251|      2|{
  252|      2|	zend_class_entry ce, *class_entry;
  253|       |
  254|      2|	INIT_CLASS_ENTRY(ce, "CompileError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  255|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, 0);
  256|       |
  257|      2|	return class_entry;
  258|      2|}
zend_exceptions.c:register_class_ParseError:
  261|      2|{
  262|      2|	zend_class_entry ce, *class_entry;
  263|       |
  264|      2|	INIT_CLASS_ENTRY(ce, "ParseError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  265|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_CompileError, 0);
  266|       |
  267|      2|	return class_entry;
  268|      2|}
zend_exceptions.c:register_class_TypeError:
  271|      2|{
  272|      2|	zend_class_entry ce, *class_entry;
  273|       |
  274|      2|	INIT_CLASS_ENTRY(ce, "TypeError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  275|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, 0);
  276|       |
  277|      2|	return class_entry;
  278|      2|}
zend_exceptions.c:register_class_ArgumentCountError:
  281|      2|{
  282|      2|	zend_class_entry ce, *class_entry;
  283|       |
  284|      2|	INIT_CLASS_ENTRY(ce, "ArgumentCountError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  285|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_TypeError, 0);
  286|       |
  287|      2|	return class_entry;
  288|      2|}
zend_exceptions.c:register_class_ValueError:
  291|      2|{
  292|      2|	zend_class_entry ce, *class_entry;
  293|       |
  294|      2|	INIT_CLASS_ENTRY(ce, "ValueError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  295|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, 0);
  296|       |
  297|      2|	return class_entry;
  298|      2|}
zend_exceptions.c:register_class_ArithmeticError:
  301|      2|{
  302|      2|	zend_class_entry ce, *class_entry;
  303|       |
  304|      2|	INIT_CLASS_ENTRY(ce, "ArithmeticError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  305|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, 0);
  306|       |
  307|      2|	return class_entry;
  308|      2|}
zend_exceptions.c:register_class_DivisionByZeroError:
  311|      2|{
  312|      2|	zend_class_entry ce, *class_entry;
  313|       |
  314|      2|	INIT_CLASS_ENTRY(ce, "DivisionByZeroError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  315|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ArithmeticError, 0);
  316|       |
  317|      2|	return class_entry;
  318|      2|}
zend_exceptions.c:register_class_UnhandledMatchError:
  321|      2|{
  322|      2|	zend_class_entry ce, *class_entry;
  323|       |
  324|      2|	INIT_CLASS_ENTRY(ce, "UnhandledMatchError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  325|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, 0);
  326|       |
  327|      2|	return class_entry;
  328|      2|}
zend_exceptions.c:register_class_RequestParseBodyException:
  331|      2|{
  332|      2|	zend_class_entry ce, *class_entry;
  333|       |
  334|      2|	INIT_CLASS_ENTRY(ce, "RequestParseBodyException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  335|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
  336|       |
  337|      2|	return class_entry;
  338|      2|}

zend_vm_stack_init:
  192|  33.5k|{
  193|  33.5k|	EG(vm_stack_page_size) = ZEND_VM_STACK_PAGE_SIZE;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(vm_stack_page_size) = ZEND_VM_STACK_PAGE_SIZE;
  ------------------
  |  |  185|  33.5k|#define ZEND_VM_STACK_PAGE_SIZE  (ZEND_VM_STACK_PAGE_SLOTS * sizeof(zval))
  |  |  ------------------
  |  |  |  |  183|  33.5k|#define ZEND_VM_STACK_PAGE_SLOTS (16 * 1024) /* should be a power of 2 */
  |  |  ------------------
  ------------------
  194|  33.5k|	EG(vm_stack) = zend_vm_stack_new_page(ZEND_VM_STACK_PAGE_SIZE, NULL);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(vm_stack) = zend_vm_stack_new_page(ZEND_VM_STACK_PAGE_SIZE, NULL);
  ------------------
  |  |  185|  33.5k|#define ZEND_VM_STACK_PAGE_SIZE  (ZEND_VM_STACK_PAGE_SLOTS * sizeof(zval))
  |  |  ------------------
  |  |  |  |  183|  33.5k|#define ZEND_VM_STACK_PAGE_SLOTS (16 * 1024) /* should be a power of 2 */
  |  |  ------------------
  ------------------
  195|  33.5k|	EG(vm_stack_top) = EG(vm_stack)->top;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(vm_stack_top) = EG(vm_stack)->top;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  196|  33.5k|	EG(vm_stack_end) = EG(vm_stack)->end;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(vm_stack_end) = EG(vm_stack)->end;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  197|  33.5k|}
zend_vm_stack_destroy:
  210|  33.8k|{
  211|  33.8k|	zend_vm_stack stack = EG(vm_stack);
  ------------------
  |  |   45|  33.8k|# define EG(v) (executor_globals.v)
  ------------------
  212|       |
  213|  67.7k|	while (stack != NULL) {
  ------------------
  |  Branch (213:9): [True: 33.8k, False: 33.8k]
  ------------------
  214|  33.8k|		zend_vm_stack p = stack->prev;
  215|       |		efree(stack);
  ------------------
  |  |  154|  33.8k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.8k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.8k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.8k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.8k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|  33.8k|		stack = p;
  217|  33.8k|	}
  218|  33.8k|}
zend_vm_stack_extend:
  221|      4|{
  222|      4|	zend_vm_stack stack;
  223|      4|	void *ptr;
  224|       |
  225|      4|	stack = EG(vm_stack);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  226|      4|	stack->top = EG(vm_stack_top);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  227|      4|	EG(vm_stack) = stack = zend_vm_stack_new_page(
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  228|      4|		EXPECTED(size < EG(vm_stack_page_size) - (ZEND_VM_STACK_HEADER_SLOTS * sizeof(zval))) ?
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  229|      4|			EG(vm_stack_page_size) : ZEND_VM_STACK_PAGE_ALIGNED_SIZE(size, EG(vm_stack_page_size)),
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			EG(vm_stack_page_size) : ZEND_VM_STACK_PAGE_ALIGNED_SIZE(size, EG(vm_stack_page_size)),
  ------------------
  |  |  188|      4|	(((size) + ZEND_VM_STACK_HEADER_SLOTS * sizeof(zval) \
  |  |  ------------------
  |  |  |  |  300|      4|	((sizeof(struct _zend_vm_stack) + sizeof(zval) - 1) / sizeof(zval))
  |  |  ------------------
  |  |  189|      4|	  + ((page_size) - 1)) & ~((page_size) - 1))
  ------------------
  230|      4|		stack);
  231|      4|	ptr = stack->top;
  232|      4|	EG(vm_stack_top) = (void*)(((char*)ptr) + size);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  233|      4|	EG(vm_stack_end) = stack->end;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  234|      4|	return ptr;
  235|      4|}
zend_cannot_pass_by_reference:
  608|      5|{
  609|      5|	const zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  610|      5|	zend_string *func_name = get_function_or_method_name(EX(call)->func);
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
  611|      5|	const char *param_name = get_function_arg_name(EX(call)->func, arg_num);
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
  612|       |
  613|      5|	zend_throw_error(NULL, "%s(): Argument #%d%s%s%s could not be passed by reference",
  614|      5|		ZSTR_VAL(func_name), arg_num, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : ""
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (614:33): [True: 4, False: 1]
  |  Branch (614:58): [True: 4, False: 1]
  |  Branch (614:88): [True: 4, False: 1]
  ------------------
  615|      5|	);
  616|       |
  617|      5|	zend_string_release(func_name);
  618|      5|}
zend_verify_arg_error:
  708|     25|{
  709|     25|	const zend_execute_data *ptr = EG(current_execute_data)->prev_execute_data;
  ------------------
  |  |   45|     25|# define EG(v) (executor_globals.v)
  ------------------
  710|     25|	const char *fname, *fsep, *fclass;
  711|     25|	zend_string *need_msg;
  712|     25|	const char *given_msg;
  713|       |
  714|     25|	zend_verify_type_error_common(
  715|     25|		zf, arg_info, value, &fname, &fsep, &fclass, &need_msg, &given_msg);
  716|       |
  717|     25|	ZEND_ASSERT(zf->common.type == ZEND_USER_FUNCTION
  ------------------
  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (717:2): [True: 0, False: 25]
  |  Branch (717:2): [True: 0, False: 0]
  |  Branch (717:2): [True: 25, False: 0]
  |  Branch (717:2): [True: 25, False: 0]
  ------------------
  718|     25|		&& "Arginfo verification is not performed for internal functions");
  719|     25|	if (ptr && ptr->func && ZEND_USER_CODE(ptr->func->common.type)) {
  ------------------
  |  | 1081|     24|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 23, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (719:6): [True: 24, False: 1]
  |  Branch (719:13): [True: 24, False: 0]
  ------------------
  720|     23|		zend_argument_type_error(arg_num, "must be of type %s, %s given, called in %s on line %d",
  721|     23|			ZSTR_VAL(need_msg), given_msg,
  ------------------
  |  |   67|     23|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  722|     23|			ZSTR_VAL(ptr->func->op_array.filename), ptr->opline->lineno
  ------------------
  |  |   67|     23|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  723|     23|		);
  724|     23|	} else {
  725|      2|		zend_argument_type_error(arg_num,
  726|      2|			"must be of type %s, %s given", ZSTR_VAL(need_msg), given_msg);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  727|      2|	}
  728|       |
  729|     25|	zend_string_release(need_msg);
  730|     25|}
zend_verify_scalar_type_hint:
  821|  1.03k|{
  822|  1.03k|	if (UNEXPECTED(strict)) {
  ------------------
  |  |  457|  1.03k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 1.02k]
  |  |  ------------------
  ------------------
  823|       |		/* SSTH Exception: IS_LONG may be accepted as IS_DOUBLE (converted) */
  824|      8|		if (!(type_mask & MAY_BE_DOUBLE) || Z_TYPE_P(arg) != IS_LONG) {
  ------------------
  |  |   29|      8|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      8|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              		if (!(type_mask & MAY_BE_DOUBLE) || Z_TYPE_P(arg) != IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (!(type_mask & MAY_BE_DOUBLE) || Z_TYPE_P(arg) != IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (824:7): [True: 8, False: 0]
  |  Branch (824:39): [True: 0, False: 0]
  ------------------
  825|      8|			return 0;
  826|      8|		}
  827|  1.02k|	} else if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
  ------------------
  |  |  457|  1.02k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 490, False: 538]
  |  |  ------------------
  ------------------
  828|       |		/* NULL may be accepted only by nullable hints (this is already checked).
  829|       |		 * As an exception for internal functions, null is allowed for scalar types in weak mode. */
  830|    490|		return is_internal_arg
  ------------------
  |  Branch (830:10): [True: 482, False: 8]
  ------------------
  831|    482|			&& (type_mask & (MAY_BE_TRUE|MAY_BE_FALSE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING));
  ------------------
  |  |   26|    482|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|    482|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              			&& (type_mask & (MAY_BE_TRUE|MAY_BE_FALSE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING));
  ------------------
  |  |   25|    482|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|    482|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              			&& (type_mask & (MAY_BE_TRUE|MAY_BE_FALSE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING));
  ------------------
  |  |   28|    482|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|    482|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			&& (type_mask & (MAY_BE_TRUE|MAY_BE_FALSE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING));
  ------------------
  |  |   29|    482|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|    482|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			&& (type_mask & (MAY_BE_TRUE|MAY_BE_FALSE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING));
  ------------------
  |  |   30|    482|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|    482|#define IS_STRING					6
  |  |  ------------------
  ------------------
  |  Branch (831:7): [True: 469, False: 13]
  ------------------
  832|    490|	}
  833|    538|#if ZEND_DEBUG
  834|    538|	if (is_internal_arg) {
  ------------------
  |  Branch (834:6): [True: 482, False: 56]
  ------------------
  835|    482|		return zend_verify_weak_scalar_type_hint_no_sideeffect(type_mask, arg);
  836|    482|	}
  837|     56|#endif
  838|     56|	return zend_verify_weak_scalar_type_hint(type_mask, arg);
  839|    538|}
zend_match_unhandled_error:
  887|      9|{
  888|      9|	zend_long max_len = EG(exception_string_param_max_len);
  ------------------
  |  |   45|      9|# define EG(v) (executor_globals.v)
  ------------------
  889|      9|	smart_str msg = {0};
  890|      9|	if (
  891|      9|		EG(exception_ignore_args)
  ------------------
  |  |   45|     18|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  892|      9|		|| (Z_TYPE_P(value) == IS_STRING && max_len == 0)
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		|| (Z_TYPE_P(value) == IS_STRING && max_len == 0)
  ------------------
  |  |  612|     18|#define IS_STRING					6
  ------------------
  |  Branch (892:7): [True: 0, False: 9]
  |  Branch (892:39): [True: 0, False: 0]
  ------------------
  893|      9|		|| smart_str_append_zval(&msg, value, max_len) != SUCCESS
  ------------------
  |  Branch (893:6): [True: 0, False: 9]
  ------------------
  894|      9|	) {
  895|      0|		smart_str_appendl(&msg, "of type ", sizeof("of type ")-1);
  896|      0|		smart_str_appends(&msg, zend_zval_type_name(value));
  897|      0|	}
  898|      9|	smart_str_0(&msg);
  899|       |
  900|      9|	zend_throw_exception_ex(
  901|      9|		zend_ce_unhandled_match_error, 0, "Unhandled match case %s", ZSTR_VAL(msg.s));
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  902|       |
  903|      9|	smart_str_free(&msg);
  904|      9|}
zend_readonly_property_modification_error:
  907|      5|		const zend_property_info *info) {
  908|      5|	zend_readonly_property_modification_error_ex(
  909|      5|		ZSTR_VAL(info->ce->name), zend_get_unmangled_property_name(info->name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  910|      5|}
zend_readonly_property_modification_error_ex:
  913|      5|		const char *class_name, const char *prop_name) {
  914|       |	zend_throw_error(NULL, "Cannot modify readonly property %s::$%s", class_name, prop_name);
  915|      5|}
zend_readonly_property_indirect_modification_error:
  918|      1|{
  919|      1|	zend_throw_error(NULL, "Cannot indirectly modify readonly property %s::$%s",
  920|      1|		ZSTR_VAL(info->ce->name), zend_get_unmangled_property_name(info->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  921|      1|}
zend_object_released_while_assigning_to_property_error:
  929|      2|{
  930|      2|	zend_throw_error(NULL, "Object was released while assigning to property %s::$%s",
  931|      2|		ZSTR_VAL(info->ce->name), zend_get_unmangled_property_name(info->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  932|      2|}
zend_verify_property_type:
 1069|  8.39k|ZEND_API bool zend_never_inline zend_verify_property_type(const zend_property_info *info, zval *property, bool strict) {
 1070|  8.39k|	return i_zend_verify_property_type(info, property, strict);
 1071|  8.39k|}
zend_internal_call_should_throw:
 1300|  23.5k|{
 1301|  23.5k|	if (fbc->internal_function.handler == ZEND_FN(pass) || (fbc->internal_function.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |   71|  23.5k|#define ZEND_FN(name) zif_##name
  ------------------
              	if (fbc->internal_function.handler == ZEND_FN(pass) || (fbc->internal_function.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |  385|  23.5k|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (1301:6): [True: 13, False: 23.5k]
  |  Branch (1301:57): [True: 21, False: 23.5k]
  ------------------
 1302|       |		/* Be lenient about the special pass function and about fake closures. */
 1303|     34|		return 0;
 1304|     34|	}
 1305|       |
 1306|  23.5k|	if (fbc->common.required_num_args > ZEND_CALL_NUM_ARGS(call)) {
  ------------------
  |  |  712|  23.5k|	(call)->This.u2.num_args
  ------------------
  |  Branch (1306:6): [True: 86, False: 23.4k]
  ------------------
 1307|       |		/* Required argument not passed. */
 1308|     86|		return 1;
 1309|     86|	}
 1310|       |
 1311|  23.4k|	if (fbc->common.num_args < ZEND_CALL_NUM_ARGS(call)
  ------------------
  |  |  712|  46.8k|	(call)->This.u2.num_args
  ------------------
  |  Branch (1311:6): [True: 182, False: 23.2k]
  ------------------
 1312|    182|			&& !(fbc->common.fn_flags & ZEND_ACC_VARIADIC)) {
  ------------------
  |  |  358|    182|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (1312:7): [True: 8, False: 174]
  ------------------
 1313|       |		/* Too many arguments passed. For internal functions (unlike userland functions),
 1314|       |		 * this should always throw. */
 1315|      8|		return 1;
 1316|      8|	}
 1317|       |
 1318|  23.4k|	if ((fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) &&
  ------------------
  |  |  244|  23.4k|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
  |  Branch (1318:6): [True: 19.5k, False: 3.84k]
  ------------------
 1319|  19.5k|			!zend_verify_internal_arg_types(fbc, call)) {
  ------------------
  |  Branch (1319:4): [True: 45, False: 19.5k]
  ------------------
 1320|     45|		zend_clear_exception();
 1321|     45|		return 1;
 1322|     45|	}
 1323|       |
 1324|  23.3k|	return 0;
 1325|  23.4k|}
zend_missing_arg_error:
 1399|      4|{
 1400|      4|	const zend_execute_data *ptr = EX(prev_execute_data);
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
 1401|       |
 1402|      4|	if (ptr && ptr->func && ZEND_USER_CODE(ptr->func->common.type)) {
  ------------------
  |  | 1081|      4|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1402:6): [True: 4, False: 0]
  |  Branch (1402:13): [True: 4, False: 0]
  ------------------
 1403|      4|		zend_throw_error(zend_ce_argument_count_error, "Too few arguments to function %s%s%s(), %d passed in %s on line %d and %s %d expected",
 1404|      4|			EX(func)->common.scope ? ZSTR_VAL(EX(func)->common.scope->name) : "",
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
              			EX(func)->common.scope ? ZSTR_VAL(EX(func)->common.scope->name) : "",
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1404:4): [True: 1, False: 3]
  ------------------
 1405|      4|			EX(func)->common.scope ? "::" : "",
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1405:4): [True: 1, False: 3]
  ------------------
 1406|      4|			ZSTR_VAL(EX(func)->common.function_name),
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1407|      4|			EX_NUM_ARGS(),
  ------------------
  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 1408|      4|			ZSTR_VAL(ptr->func->op_array.filename),
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1409|      4|			ptr->opline->lineno,
 1410|      4|			EX(func)->common.required_num_args == EX(func)->common.num_args ? "exactly" : "at least",
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
              			EX(func)->common.required_num_args == EX(func)->common.num_args ? "exactly" : "at least",
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1410:4): [True: 4, False: 0]
  ------------------
 1411|      4|			EX(func)->common.required_num_args);
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
 1412|      4|	} else {
 1413|      0|		zend_throw_error(zend_ce_argument_count_error, "Too few arguments to function %s%s%s(), %d passed and %s %d expected",
 1414|      0|			EX(func)->common.scope ? ZSTR_VAL(EX(func)->common.scope->name) : "",
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              			EX(func)->common.scope ? ZSTR_VAL(EX(func)->common.scope->name) : "",
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1414:4): [True: 0, False: 0]
  ------------------
 1415|      0|			EX(func)->common.scope ? "::" : "",
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1415:4): [True: 0, False: 0]
  ------------------
 1416|      0|			ZSTR_VAL(EX(func)->common.function_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1417|      0|			EX_NUM_ARGS(),
  ------------------
  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 1418|      0|			EX(func)->common.required_num_args == EX(func)->common.num_args ? "exactly" : "at least",
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              			EX(func)->common.required_num_args == EX(func)->common.num_args ? "exactly" : "at least",
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1418:4): [True: 0, False: 0]
  ------------------
 1419|      0|			EX(func)->common.required_num_args);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1420|      0|	}
 1421|      4|}
zend_verify_return_error:
 1424|     17|{
 1425|     17|	const zend_arg_info *arg_info = &zf->common.arg_info[-1];
 1426|     17|	const char *fname, *fsep, *fclass;
 1427|     17|	zend_string *need_msg;
 1428|     17|	const char *given_msg;
 1429|       |
 1430|     17|	zend_verify_type_error_common(
 1431|     17|		zf, arg_info, value, &fname, &fsep, &fclass, &need_msg, &given_msg);
 1432|       |
 1433|     17|	zend_type_error("%s%s%s(): Return value must be of type %s, %s returned",
 1434|     17|		fclass, fsep, fname, ZSTR_VAL(need_msg), given_msg);
  ------------------
  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1435|       |
 1436|     17|	zend_string_release(need_msg);
 1437|     17|}
zend_verify_never_error:
 1440|      1|{
 1441|      1|	zend_string *func_name = get_function_or_method_name(zf);
 1442|       |
 1443|      1|	zend_type_error("%s(): never-returning %s must not implicitly return",
 1444|      1|		ZSTR_VAL(func_name), zf->common.scope ? "method" : "function");
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1444:24): [True: 0, False: 1]
  ------------------
 1445|       |
 1446|      1|	zend_string_release(func_name);
 1447|      1|}
zend_verify_internal_return_type:
 1483|  19.2k|{
 1484|  19.2k|	const zend_arg_info *ret_info = zf->internal_function.arg_info - 1;
 1485|       |
 1486|  19.2k|	if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_VOID) {
  ------------------
  |  |  261|  19.2k|	((t).type_mask)
  ------------------
              	if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_VOID) {
  ------------------
  |  |   40|  19.2k|#define MAY_BE_VOID                 (1 << IS_VOID)
  |  |  ------------------
  |  |  |  |  623|  19.2k|#define IS_VOID						14
  |  |  ------------------
  ------------------
  |  Branch (1486:6): [True: 2.20k, False: 17.0k]
  ------------------
 1487|  2.20k|		if (UNEXPECTED(Z_TYPE_P(ret) != IS_NULL)) {
  ------------------
  |  |  457|  2.20k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.20k]
  |  |  ------------------
  ------------------
 1488|      0|			zend_verify_void_return_error(zf, zend_zval_value_name(ret), "");
 1489|      0|			return 0;
 1490|      0|		}
 1491|  2.20k|		return 1;
 1492|  2.20k|	}
 1493|       |
 1494|  17.0k|	if (UNEXPECTED(!zend_check_type(&ret_info->type, ret, true, /* is_internal */ true))) {
  ------------------
  |  |  457|  17.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 17.0k]
  |  |  ------------------
  ------------------
 1495|      0|		zend_verify_internal_return_error(zf, ret);
 1496|      0|		return 0;
 1497|      0|	}
 1498|       |
 1499|  17.0k|	return 1;
 1500|  17.0k|}
zend_verify_class_constant_type:
 1527|      5|{
 1528|      5|	if (!zend_check_class_constant_type(c, constant)) {
  ------------------
  |  Branch (1528:6): [True: 3, False: 2]
  ------------------
 1529|      3|		zend_verify_class_constant_type_error(c, name, constant);
 1530|      3|		return 0;
 1531|      3|	}
 1532|       |
 1533|      2|	return 1;
 1534|      5|}
zend_wrong_string_offset_error:
 1761|     12|{
 1762|     12|	const char *msg = NULL;
 1763|     12|	const zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
 1764|     12|	const zend_op *opline = execute_data->opline;
 1765|       |
 1766|     12|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 9]
  |  |  ------------------
  ------------------
 1767|      3|		return;
 1768|      3|	}
 1769|       |
 1770|      9|	switch (opline->opcode) {
 1771|      0|		case ZEND_ASSIGN_DIM_OP:
  ------------------
  |  |  151|      0|#define ZEND_ASSIGN_DIM_OP                   27
  ------------------
  |  Branch (1771:3): [True: 0, False: 9]
  ------------------
 1772|      0|			msg = "Cannot use assign-op operators with string offsets";
 1773|      0|			break;
 1774|      3|		case ZEND_FETCH_LIST_W:
  ------------------
  |  |  277|      3|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (1774:3): [True: 3, False: 6]
  ------------------
 1775|      3|			msg = "Cannot create references to/from string offsets";
 1776|      3|			break;
 1777|      5|		case ZEND_FETCH_DIM_W:
  ------------------
  |  |  206|      5|#define ZEND_FETCH_DIM_W                     84
  ------------------
  |  Branch (1777:3): [True: 5, False: 4]
  ------------------
 1778|      6|		case ZEND_FETCH_DIM_RW:
  ------------------
  |  |  209|      6|#define ZEND_FETCH_DIM_RW                    87
  ------------------
  |  Branch (1778:3): [True: 1, False: 8]
  ------------------
 1779|      6|		case ZEND_FETCH_DIM_FUNC_ARG:
  ------------------
  |  |  215|      6|#define ZEND_FETCH_DIM_FUNC_ARG              93
  ------------------
  |  Branch (1779:3): [True: 0, False: 9]
  ------------------
 1780|      6|		case ZEND_FETCH_DIM_UNSET:
  ------------------
  |  |  218|      6|#define ZEND_FETCH_DIM_UNSET                 96
  ------------------
  |  Branch (1780:3): [True: 0, False: 9]
  ------------------
 1781|      6|			switch (opline->extended_value) {
 1782|      5|				case ZEND_FETCH_DIM_REF:
  ------------------
  |  | 1103|      5|#define ZEND_FETCH_DIM_REF 1
  ------------------
  |  Branch (1782:5): [True: 5, False: 1]
  ------------------
 1783|      5|					msg = "Cannot create references to/from string offsets";
 1784|      5|					break;
 1785|      1|				case ZEND_FETCH_DIM_DIM:
  ------------------
  |  | 1104|      1|#define ZEND_FETCH_DIM_DIM 2
  ------------------
  |  Branch (1785:5): [True: 1, False: 5]
  ------------------
 1786|      1|					msg = "Cannot use string offset as an array";
 1787|      1|					break;
 1788|      0|				case ZEND_FETCH_DIM_OBJ:
  ------------------
  |  | 1105|      0|#define ZEND_FETCH_DIM_OBJ 3
  ------------------
  |  Branch (1788:5): [True: 0, False: 6]
  ------------------
 1789|      0|					msg = "Cannot use string offset as an object";
 1790|      0|					break;
 1791|      0|				case ZEND_FETCH_DIM_INCDEC:
  ------------------
  |  | 1106|      0|#define ZEND_FETCH_DIM_INCDEC 4
  ------------------
  |  Branch (1791:5): [True: 0, False: 6]
  ------------------
 1792|      0|					msg = "Cannot increment/decrement string offsets";
 1793|      0|					break;
 1794|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1794:5): [True: 0, False: 6]
  |  Branch (1794:14): [Folded, False: 0]
  |  Branch (1794:14): [Folded, False: 0]
  ------------------
 1795|      6|			}
 1796|      6|			break;
 1797|      6|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1797:3): [True: 0, False: 9]
  |  Branch (1797:12): [Folded, False: 0]
  |  Branch (1797:12): [Folded, False: 0]
  ------------------
 1798|      9|	}
 1799|      9|	ZEND_ASSERT(msg != NULL);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1799:2): [True: 0, False: 9]
  |  Branch (1799:2): [True: 9, False: 0]
  ------------------
 1800|      9|	zend_throw_error(NULL, "%s", msg);
 1801|      9|}
zend_deprecated_function:
 1869|     24|{
 1870|     24|	zend_string *message_suffix = ZSTR_EMPTY_ALLOC();
 1871|       |
 1872|     24|	if (get_deprecation_suffix_from_attribute(fbc->common.attributes, fbc->common.scope, &message_suffix) == FAILURE) {
  ------------------
  |  Branch (1872:6): [True: 3, False: 21]
  ------------------
 1873|      3|		return;
 1874|      3|	}
 1875|       |
 1876|     21|	int code = fbc->type == ZEND_INTERNAL_FUNCTION ? E_DEPRECATED : E_USER_DEPRECATED;
  ------------------
  |  |   36|     16|#define E_DEPRECATED		(1<<13L)
  ------------------
              	int code = fbc->type == ZEND_INTERNAL_FUNCTION ? E_DEPRECATED : E_USER_DEPRECATED;
  ------------------
  |  |   37|      5|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
  |  Branch (1876:13): [True: 16, False: 5]
  ------------------
 1877|       |
 1878|     21|	if (fbc->common.scope) {
  ------------------
  |  Branch (1878:6): [True: 2, False: 19]
  ------------------
 1879|      2|		zend_error_unchecked(code, "Method %s::%s() is deprecated%S",
 1880|      2|			ZSTR_VAL(fbc->common.scope->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1881|      2|			ZSTR_VAL(fbc->common.function_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1882|      2|			message_suffix
 1883|      2|		);
 1884|     19|	} else {
 1885|     19|		zend_error_unchecked(code, "Function %s() is deprecated%S",
 1886|     19|			ZSTR_VAL(fbc->common.function_name),
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1887|     19|			message_suffix
 1888|     19|		);
 1889|     19|	}
 1890|       |
 1891|     21|	zend_string_release(message_suffix);
 1892|     21|}
zend_nodiscard_function:
 1950|      5|{
 1951|      5|	zend_string *message_suffix = ZSTR_EMPTY_ALLOC();
 1952|       |
 1953|      5|	if (get_nodiscard_suffix_from_attribute(fbc->common.attributes, fbc->common.scope, &message_suffix) == FAILURE) {
  ------------------
  |  Branch (1953:6): [True: 1, False: 4]
  ------------------
 1954|      1|		return;
 1955|      1|	}
 1956|       |
 1957|      4|	int code = fbc->type == ZEND_INTERNAL_FUNCTION ? E_WARNING : E_USER_WARNING;
  ------------------
  |  |   23|      2|#define E_WARNING			(1<<1L)
  ------------------
              	int code = fbc->type == ZEND_INTERNAL_FUNCTION ? E_WARNING : E_USER_WARNING;
  ------------------
  |  |   31|      2|#define E_USER_WARNING		(1<<9L)
  ------------------
  |  Branch (1957:13): [True: 2, False: 2]
  ------------------
 1958|       |
 1959|      4|	if (fbc->common.scope) {
  ------------------
  |  Branch (1959:6): [True: 2, False: 2]
  ------------------
 1960|      2|		zend_error_unchecked(code, "The return value of method %s::%s() should either be used or intentionally ignored by casting it as (void)%S",
 1961|      2|			ZSTR_VAL(fbc->common.scope->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1962|      2|			ZSTR_VAL(fbc->common.function_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1963|      2|			message_suffix
 1964|      2|		);
 1965|      2|	} else {
 1966|      2|		zend_error_unchecked(code, "The return value of function %s() should either be used or intentionally ignored by casting it as (void)%S",
 1967|      2|			ZSTR_VAL(fbc->common.function_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1968|      2|			message_suffix
 1969|      2|		);
 1970|      2|	}
 1971|       |
 1972|      4|	zend_string_release(message_suffix);
 1973|      4|}
zend_deprecated_class_constant:
 1976|      3|{
 1977|      3|	zend_string *message_suffix = ZSTR_EMPTY_ALLOC();
 1978|       |
 1979|      3|	if (get_deprecation_suffix_from_attribute(c->attributes, c->ce, &message_suffix) == FAILURE) {
  ------------------
  |  Branch (1979:6): [True: 0, False: 3]
  ------------------
 1980|      0|		return;
 1981|      0|	}
 1982|       |
 1983|      3|	int code = c->ce->type == ZEND_INTERNAL_CLASS ? E_DEPRECATED : E_USER_DEPRECATED;
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
              	int code = c->ce->type == ZEND_INTERNAL_CLASS ? E_DEPRECATED : E_USER_DEPRECATED;
  ------------------
  |  |   37|      3|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
  |  Branch (1983:13): [True: 0, False: 3]
  ------------------
 1984|      3|	char *type = (ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE) ? "Enum case" : "Constant";
  ------------------
  |  |  498|      3|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	char *type = (ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE) ? "Enum case" : "Constant";
  ------------------
  |  |  255|      3|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (1984:15): [True: 3, False: 0]
  ------------------
 1985|       |
 1986|      3|	zend_error_unchecked(code, "%s %s::%s is deprecated%S",
 1987|      3|		type,
 1988|      3|		ZSTR_VAL(c->ce->name),
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1989|      3|		ZSTR_VAL(constant_name),
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1990|      3|		message_suffix
 1991|      3|	);
 1992|       |
 1993|      3|	zend_string_release(message_suffix);
 1994|      3|}
zend_deprecated_constant:
 1997|     21|{
 1998|     21|	zend_string *message_suffix = ZSTR_EMPTY_ALLOC();
 1999|       |
 2000|     21|	if (get_deprecation_suffix_from_attribute(c->attributes, NULL, &message_suffix) == FAILURE) {
  ------------------
  |  Branch (2000:6): [True: 0, False: 21]
  ------------------
 2001|      0|		return;
 2002|      0|	}
 2003|       |
 2004|     21|	int code = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? E_USER_DEPRECATED : E_DEPRECATED;
  ------------------
  |  |   54|     21|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|     21|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	int code = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? E_USER_DEPRECATED : E_DEPRECATED;
  ------------------
  |  |   41|     21|#define	PHP_USER_CONSTANT   0x7fffff /* a constant defined in user space */
  ------------------
              	int code = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? E_USER_DEPRECATED : E_DEPRECATED;
  ------------------
  |  |   37|      6|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
              	int code = ZEND_CONSTANT_MODULE_NUMBER(c) == PHP_USER_CONSTANT ? E_USER_DEPRECATED : E_DEPRECATED;
  ------------------
  |  |   36|     15|#define E_DEPRECATED		(1<<13L)
  ------------------
  |  Branch (2004:13): [True: 6, False: 15]
  ------------------
 2005|       |
 2006|     21|	zend_error_unchecked(code, "Constant %s is deprecated%S",
 2007|     21|		ZSTR_VAL(constant_name),
  ------------------
  |  |   67|     21|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2008|     21|		message_suffix
 2009|     21|	);
 2010|       |
 2011|     21|	zend_string_release(message_suffix);
 2012|     21|}
zend_use_of_deprecated_trait:
 2017|      4|) {
 2018|      4|	zend_string *message_suffix = ZSTR_EMPTY_ALLOC();
 2019|       |
 2020|      4|	if (get_deprecation_suffix_from_attribute(trait->attributes, trait, &message_suffix) == FAILURE) {
  ------------------
  |  Branch (2020:6): [True: 0, False: 4]
  ------------------
 2021|      0|		return;
 2022|      0|	}
 2023|       |
 2024|      4|	int code = trait->type == ZEND_INTERNAL_CLASS ? E_DEPRECATED : E_USER_DEPRECATED;
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
              	int code = trait->type == ZEND_INTERNAL_CLASS ? E_DEPRECATED : E_USER_DEPRECATED;
  ------------------
  |  |   37|      4|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
  |  Branch (2024:13): [True: 0, False: 4]
  ------------------
 2025|       |
 2026|      4|	zend_error_unchecked(code, "Trait %s used by %s is deprecated%S",
 2027|      4|		ZSTR_VAL(trait->name),
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2028|      4|		ZSTR_VAL(used_by),
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2029|      4|		message_suffix
 2030|      4|	);
 2031|       |
 2032|      4|	zend_string_release(message_suffix);
 2033|      4|}
zend_false_to_array_deprecated:
 2036|      2|{
 2037|      2|	zend_error(E_DEPRECATED, "Automatic conversion of false to array is deprecated");
  ------------------
  |  |   36|      2|#define E_DEPRECATED		(1<<13L)
  ------------------
 2038|      2|}
zend_undefined_offset_write:
 2509|     18|{
 2510|       |	/* The array may be destroyed while throwing the notice.
 2511|       |	 * Temporarily increase the refcount to detect this situation. */
 2512|     18|	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     18|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     18|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     18|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     18|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2512:6): [True: 18, False: 0]
  ------------------
 2513|     18|		GC_ADDREF(ht);
  ------------------
  |  |  718|     18|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2514|     18|	}
 2515|     18|	zend_undefined_offset(lval);
 2516|     18|	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  777|     18|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     18|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  844|     18|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     18|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  719|     18|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2516:6): [True: 18, False: 0]
  |  Branch (2516:46): [True: 0, False: 18]
  ------------------
 2517|      0|		if (!GC_REFCOUNT(ht)) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (2517:7): [True: 0, False: 0]
  ------------------
 2518|      0|			zend_array_destroy(ht);
 2519|      0|		}
 2520|      0|		return NULL;
 2521|      0|	}
 2522|     18|	if (EG(exception)) {
  ------------------
  |  |   45|     18|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 18]
  |  |  ------------------
  ------------------
 2523|      0|		return NULL;
 2524|      0|	}
 2525|     18|	return zend_hash_index_add_new(ht, lval, &EG(uninitialized_zval));
  ------------------
  |  |   45|     18|# define EG(v) (executor_globals.v)
  ------------------
 2526|     18|}
zend_undefined_index_write:
 2529|     10|{
 2530|     10|	zval *retval;
 2531|       |
 2532|       |	/* The array may be destroyed while throwing the notice.
 2533|       |	 * Temporarily increase the refcount to detect this situation. */
 2534|     10|	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     10|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2534:6): [True: 10, False: 0]
  ------------------
 2535|     10|		GC_ADDREF(ht);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2536|     10|	}
 2537|       |	/* Key may be released while throwing the undefined index warning. */
 2538|     10|	zend_string_addref(offset);
 2539|     10|	zend_undefined_index(offset);
 2540|     10|	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  844|     10|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  719|     10|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2540:6): [True: 10, False: 0]
  |  Branch (2540:46): [True: 0, False: 10]
  ------------------
 2541|      0|		if (!GC_REFCOUNT(ht)) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (2541:7): [True: 0, False: 0]
  ------------------
 2542|      0|			zend_array_destroy(ht);
 2543|      0|		}
 2544|      0|		retval = NULL;
 2545|     10|	} else if (EG(exception)) {
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 2546|      0|		retval = NULL;
 2547|     10|	} else {
 2548|     10|		retval = zend_hash_add_new(ht, offset, &EG(uninitialized_zval));
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  ------------------
 2549|     10|	}
 2550|     10|	zend_string_release(offset);
 2551|     10|	return retval;
 2552|     10|}
zend_undefined_method:
 2555|     15|{
 2556|     15|	zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(method));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(method));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2557|     15|}
zend_non_static_method_call:
 2566|      6|{
 2567|      6|	zend_throw_error(
 2568|      6|		zend_ce_error,
 2569|      6|		"Non-static method %s::%s() cannot be called statically",
 2570|      6|		ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2571|      6|}
zend_param_must_be_ref:
 2574|     33|{
 2575|     33|	const char *arg_name = get_function_arg_name(func, arg_num);
 2576|       |
 2577|     33|	zend_error(E_WARNING, "%s%s%s(): Argument #%d%s%s%s must be passed by reference, value given",
  ------------------
  |  |   23|     33|#define E_WARNING			(1<<1L)
  ------------------
 2578|     33|		func->common.scope ? ZSTR_VAL(func->common.scope->name) : "",
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2578:3): [True: 1, False: 32]
  ------------------
 2579|     33|		func->common.scope ? "::" : "",
  ------------------
  |  Branch (2579:3): [True: 1, False: 32]
  ------------------
 2580|     33|		ZSTR_VAL(func->common.function_name),
  ------------------
  |  |   67|     33|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2581|     33|		arg_num,
 2582|     33|		arg_name ? " ($" : "",
  ------------------
  |  Branch (2582:3): [True: 33, False: 0]
  ------------------
 2583|     33|		arg_name ? arg_name : "",
  ------------------
  |  Branch (2583:3): [True: 33, False: 0]
  ------------------
 2584|     33|		arg_name ? ")" : ""
  ------------------
  |  Branch (2584:3): [True: 33, False: 0]
  ------------------
 2585|     33|	);
 2586|     33|}
zend_cannot_add_element:
 2594|      2|{
 2595|       |	zend_throw_error(NULL, "Cannot add element to the array as the next element is already occupied");
 2596|      2|}
zend_fetch_dimension_const:
 3236|      6|{
 3237|      6|	zend_fetch_dimension_address_read(result, container, dim, IS_TMP_VAR, type, 0, 0 NO_EXECUTE_DATA_CC);
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              	zend_fetch_dimension_address_read(result, container, dim, IS_TMP_VAR, type, 0, 0 NO_EXECUTE_DATA_CC);
  ------------------
  |  |   90|      6|# define NO_EXECUTE_DATA_CC , NULL
  ------------------
 3238|      6|}
zend_throw_ref_type_error_zval:
 3916|      2|ZEND_API zend_never_inline ZEND_COLD void zend_throw_ref_type_error_zval(const zend_property_info *prop, const zval *zv) {
 3917|      2|	zend_string *type_str = zend_type_to_string(prop->type);
 3918|      2|	zend_type_error("Cannot assign %s to reference held by property %s::$%s of type %s",
 3919|      2|		zend_zval_value_name(zv),
 3920|      2|		ZSTR_VAL(prop->ce->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3921|      2|		zend_get_unmangled_property_name(prop->name),
 3922|      2|		ZSTR_VAL(type_str)
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3923|      2|	);
 3924|      2|	zend_string_release(type_str);
 3925|      2|}
zend_verify_ref_assignable_zval:
 3986|     20|{
 3987|     20|	const zend_property_info *prop;
 3988|       |
 3989|       |	/* The value must satisfy each property type, and coerce to the same value for each property
 3990|       |	 * type. Remember the first coerced type and value we've seen for this purpose. */
 3991|     20|	const zend_property_info *first_prop = NULL;
 3992|     20|	zval coerced_value;
 3993|     20|	ZVAL_UNDEF(&coerced_value);
  ------------------
  |  | 1055|     20|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     20|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     20|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 3994|       |
 3995|     20|	ZEND_ASSERT(Z_TYPE_P(zv) != IS_REFERENCE);
  ------------------
  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3995:2): [True: 0, False: 20]
  |  Branch (3995:2): [True: 20, False: 0]
  ------------------
 3996|     61|	ZEND_REF_FOREACH_TYPE_SOURCES(ref, prop) {
  ------------------
  |  |  597|     20|#define ZEND_REF_FOREACH_TYPE_SOURCES(ref, prop) do { \
  |  |  598|     20|		zend_property_info_source_list *_source_list = &ZEND_REF_TYPE_SOURCES(ref); \
  |  |  ------------------
  |  |  |  |  120|     20|	(ref)->sources
  |  |  ------------------
  |  |  599|     20|		zend_property_info **_prop, **_end; \
  |  |  600|     20|		zend_property_info_list *_list; \
  |  |  601|     20|		if (_source_list->ptr) { \
  |  |  ------------------
  |  |  |  Branch (601:7): [True: 20, False: 0]
  |  |  ------------------
  |  |  602|     20|			if (ZEND_PROPERTY_INFO_SOURCE_IS_LIST(_source_list->list)) { \
  |  |  ------------------
  |  |  |  |  592|     20|#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list) ((list) & 0x1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (592:49): [True: 1, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  603|      1|				_list = ZEND_PROPERTY_INFO_SOURCE_TO_LIST(_source_list->list); \
  |  |  ------------------
  |  |  |  |  591|      1|#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list) ((zend_property_info_list *) ((list) & ~0x1))
  |  |  ------------------
  |  |  604|      1|				_prop = _list->ptr; \
  |  |  605|      1|				_end = _list->ptr + _list->num; \
  |  |  606|     19|			} else { \
  |  |  607|     19|				_prop = &_source_list->ptr; \
  |  |  608|     19|				_end = _prop + 1; \
  |  |  609|     19|			} \
  |  |  610|     39|			for (; _prop < _end; _prop++) { \
  |  |  ------------------
  |  |  |  Branch (610:11): [True: 21, False: 18]
  |  |  ------------------
  |  |  611|     21|				prop = *_prop; \
  ------------------
 3997|     61|		int result = i_zend_verify_type_assignable_zval(prop, zv, strict);
 3998|     61|		if (result == 0) {
  ------------------
  |  Branch (3998:7): [True: 2, False: 19]
  ------------------
 3999|      2|type_error:
 4000|      2|			zend_throw_ref_type_error_zval(prop, zv);
 4001|      2|			zval_ptr_dtor(&coerced_value);
 4002|      2|			return 0;
 4003|      2|		}
 4004|       |
 4005|     19|		if (result < 0) {
  ------------------
  |  Branch (4005:7): [True: 6, False: 13]
  ------------------
 4006|      6|			if (!first_prop) {
  ------------------
  |  Branch (4006:8): [True: 5, False: 1]
  ------------------
 4007|      5|				first_prop = prop;
 4008|      5|				ZVAL_COPY(&coerced_value, zv);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 4009|      5|				if (!zend_verify_weak_scalar_type_hint(
  ------------------
  |  Branch (4009:9): [True: 0, False: 5]
  ------------------
 4010|      5|						ZEND_TYPE_FULL_MASK(prop->type), &coerced_value)) {
  ------------------
  |  |  261|      5|	((t).type_mask)
  ------------------
 4011|      0|					goto type_error;
 4012|      0|				}
 4013|      5|			} else if (Z_ISUNDEF(coerced_value)) {
  ------------------
  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 4014|       |				/* A previous property did not require coercion, but this one does,
 4015|       |				 * so they are incompatible. */
 4016|      0|				goto conflicting_coercion_error;
 4017|      1|			} else {
 4018|      1|				zval tmp;
 4019|      1|				ZVAL_COPY(&tmp, zv);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4020|      1|				if (!zend_verify_weak_scalar_type_hint(ZEND_TYPE_FULL_MASK(prop->type), &tmp)) {
  ------------------
  |  |  261|      1|	((t).type_mask)
  ------------------
  |  Branch (4020:9): [True: 0, False: 1]
  ------------------
 4021|      0|					zval_ptr_dtor(&tmp);
 4022|      0|					goto type_error;
 4023|      0|				}
 4024|      1|				if (!zend_is_identical(&coerced_value, &tmp)) {
  ------------------
  |  Branch (4024:9): [True: 0, False: 1]
  ------------------
 4025|      0|					zval_ptr_dtor(&tmp);
 4026|      0|					goto conflicting_coercion_error;
 4027|      0|				}
 4028|      1|				zval_ptr_dtor(&tmp);
 4029|      1|			}
 4030|     13|		} else {
 4031|     13|			if (!first_prop) {
  ------------------
  |  Branch (4031:8): [True: 13, False: 0]
  ------------------
 4032|     13|				first_prop = prop;
 4033|     13|			} else if (!Z_ISUNDEF(coerced_value)) {
  ------------------
  |  |  966|      0|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (4033:15): [True: 0, False: 0]
  ------------------
 4034|       |				/* A previous property required coercion, but this one doesn't,
 4035|       |				 * so they are incompatible. */
 4036|      0|conflicting_coercion_error:
 4037|      0|				zend_throw_conflicting_coercion_error(first_prop, prop, zv);
 4038|      0|				zval_ptr_dtor(&coerced_value);
 4039|      0|				return 0;
 4040|      0|			}
 4041|     13|		}
 4042|     19|	} ZEND_REF_FOREACH_TYPE_SOURCES_END();
  ------------------
  |  |  614|     19|			} \
  |  |  615|     20|		} \
  |  |  616|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (616:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 4043|       |
 4044|     18|	if (!Z_ISUNDEF(coerced_value)) {
  ------------------
  |  |  966|     18|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|     18|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|     18|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (4044:6): [True: 5, False: 13]
  ------------------
 4045|      5|		zval_ptr_dtor(zv);
 4046|      5|		ZVAL_COPY_VALUE(zv, &coerced_value);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 4047|      5|	}
 4048|       |
 4049|     18|	return 1;
 4050|     20|}
zend_assign_to_typed_ref_ex:
 4061|     14|{
 4062|     14|	bool ret;
 4063|     14|	zval value;
 4064|     14|	zend_refcounted *ref = NULL;
 4065|       |
 4066|     14|	if (Z_ISREF_P(orig_value)) {
  ------------------
  |  |  964|     14|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     14|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     14|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4067|      0|		ref = Z_COUNTED_P(orig_value);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 4068|      0|		orig_value = Z_REFVAL_P(orig_value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4069|      0|	}
 4070|       |
 4071|     14|	ZVAL_COPY(&value, orig_value);
  ------------------
  |  | 1425|     14|	do {												\
  |  | 1426|     14|		zval *_z1 = (z);								\
  |  | 1427|     14|		const zval *_z2 = (v);							\
  |  | 1428|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     14|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     14|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     14|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 3, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      3|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      3|		}												\
  |  | 1434|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 4072|     14|	ret = zend_verify_ref_assignable_zval(Z_REF_P(variable_ptr), &value, strict);
  ------------------
  |  | 1030|     14|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|     14|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 4073|     14|	variable_ptr = Z_REFVAL_P(variable_ptr);
  ------------------
  |  | 1033|     14|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     14|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     14|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4074|     14|	if (EXPECTED(ret)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 0]
  |  |  ------------------
  ------------------
 4075|     14|		if (Z_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  942|     14|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     14|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     14|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 6, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4076|      6|			*garbage_ptr = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 4077|      6|		}
 4078|     14|		ZVAL_COPY_VALUE(variable_ptr, &value);
  ------------------
  |  | 1416|     14|	do {												\
  |  | 1417|     14|		zval *_z1 = (z);								\
  |  | 1418|     14|		const zval *_z2 = (v);							\
  |  | 1419|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 4079|     14|	} else {
 4080|      0|		zval_ptr_dtor_nogc(&value);
 4081|      0|	}
 4082|     14|	if (value_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     14|#define IS_VAR		(1<<2)
  ------------------
              	if (value_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     14|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4082:6): [True: 7, False: 7]
  ------------------
 4083|      7|		if (UNEXPECTED(ref)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 4084|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4085|      0|				zval_ptr_dtor(orig_value);
 4086|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4087|      0|			}
 4088|      7|		} else {
 4089|      7|			i_zval_ptr_dtor_noref(orig_value);
 4090|      7|		}
 4091|      7|	}
 4092|     14|	return variable_ptr;
 4093|     14|}
zend_assign_to_typed_ref:
 4096|      9|{
 4097|      9|	zend_refcounted *garbage = NULL;
 4098|      9|	zval *result = zend_assign_to_typed_ref_ex(variable_ptr, orig_value, value_type, strict, &garbage);
 4099|      9|	if (garbage) {
  ------------------
  |  Branch (4099:6): [True: 2, False: 7]
  ------------------
 4100|      2|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      2|	do { \
  |  |  737|      2|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      2|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 1, False: 1]
  |  |  ------------------
  |  |  739|      1|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      1|		} else { \
  |  |  741|      1|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      1|		} \
  |  |  743|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4101|      2|	}
 4102|      9|	return result;
 4103|      9|}
zend_verify_prop_assignable_by_ref_ex:
 4105|     18|ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref_ex(const zend_property_info *prop_info, zval *orig_val, bool strict, zend_verify_prop_assignable_by_ref_context context) {
 4106|     18|	zval *val = orig_val;
 4107|     18|	if (Z_ISREF_P(val) && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(val))) {
  ------------------
  |  |  964|     18|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     36|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     18|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     18|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 4, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_ISREF_P(val) && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(val))) {
  ------------------
  |  |  123|      4|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      4|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 1, False: 3]
  |  |  ------------------
  ------------------
 4108|      1|		int result;
 4109|       |
 4110|      1|		val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4111|      1|		result = i_zend_verify_type_assignable_zval(prop_info, val, strict);
 4112|      1|		if (result > 0) {
  ------------------
  |  Branch (4112:7): [True: 1, False: 0]
  ------------------
 4113|      1|			return 1;
 4114|      1|		}
 4115|       |
 4116|      0|		if (result < 0) {
  ------------------
  |  Branch (4116:7): [True: 0, False: 0]
  ------------------
 4117|       |			/* This is definitely an error, but we still need to determined why: Either because
 4118|       |			 * the value is simply illegal for the type, or because or a conflicting coercion. */
 4119|      0|			zval tmp;
 4120|      0|			ZVAL_COPY(&tmp, val);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4121|      0|			if (zend_verify_weak_scalar_type_hint(ZEND_TYPE_FULL_MASK(prop_info->type), &tmp)) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
  |  Branch (4121:8): [True: 0, False: 0]
  ------------------
 4122|      0|				const zend_property_info *ref_prop = ZEND_REF_FIRST_SOURCE(Z_REF_P(orig_val));
  ------------------
  |  |  126|      0|	(ZEND_PROPERTY_INFO_SOURCE_IS_LIST((ref)->sources.list) \
  |  |  ------------------
  |  |  |  |  592|      0|#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list) ((list) & 0x1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (592:49): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|      0|		? ZEND_PROPERTY_INFO_SOURCE_TO_LIST((ref)->sources.list)->ptr[0] \
  |  |  ------------------
  |  |  |  |  591|      0|#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list) ((zend_property_info_list *) ((list) & ~0x1))
  |  |  ------------------
  |  |  128|      0|		: (ref)->sources.ptr)
  ------------------
 4123|      0|				zend_throw_ref_type_error_type(ref_prop, prop_info, val);
 4124|      0|				zval_ptr_dtor(&tmp);
 4125|      0|				return 0;
 4126|      0|			}
 4127|      0|			zval_ptr_dtor(&tmp);
 4128|      0|		}
 4129|     17|	} else {
 4130|     17|		ZVAL_DEREF(val);
  ------------------
  |  | 1474|     17|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     17|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      3|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      3|		}												\
  |  | 1478|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 4131|     17|		if (i_zend_check_property_type(prop_info, val, strict)) {
  ------------------
  |  Branch (4131:7): [True: 15, False: 2]
  ------------------
 4132|     15|			return 1;
 4133|     15|		}
 4134|     17|	}
 4135|       |
 4136|      2|	if (EXPECTED(context == ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_ASSIGNMENT)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 4137|      1|		zend_verify_property_type_error(prop_info, val);
 4138|      1|	} else {
 4139|      1|		ZEND_ASSERT(context == ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_MAGIC_GET);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4139:3): [True: 0, False: 1]
  |  Branch (4139:3): [True: 1, False: 0]
  ------------------
 4140|      1|		zend_magic_get_property_type_inconsistency_error(prop_info, val);
 4141|      1|	}
 4142|       |
 4143|      2|	return 0;
 4144|      2|}
zend_verify_prop_assignable_by_ref:
 4146|     16|ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref(const zend_property_info *prop_info, zval *orig_val, bool strict) {
 4147|     16|	return zend_verify_prop_assignable_by_ref_ex(prop_info, orig_val, strict, ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_ASSIGNMENT);
 4148|     16|}
zend_ref_add_type_source:
 4151|     21|{
 4152|     21|	zend_property_info_list *list;
 4153|     21|	if (source_list->ptr == NULL) {
  ------------------
  |  Branch (4153:6): [True: 20, False: 1]
  ------------------
 4154|     20|		source_list->ptr = prop;
 4155|     20|		return;
 4156|     20|	}
 4157|       |
 4158|      1|	list = ZEND_PROPERTY_INFO_SOURCE_TO_LIST(source_list->list);
  ------------------
  |  |  591|      1|#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list) ((zend_property_info_list *) ((list) & ~0x1))
  ------------------
 4159|      1|	if (!ZEND_PROPERTY_INFO_SOURCE_IS_LIST(source_list->list)) {
  ------------------
  |  |  592|      1|#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list) ((list) & 0x1)
  ------------------
  |  Branch (4159:6): [True: 1, False: 0]
  ------------------
 4160|      1|		list = emalloc(sizeof(zend_property_info_list) + (4 - 1) * sizeof(zend_property_info *));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4161|      1|		list->ptr[0] = source_list->ptr;
 4162|      1|		list->num_allocated = 4;
 4163|      1|		list->num = 1;
 4164|      1|	} else if (list->num_allocated == list->num) {
  ------------------
  |  Branch (4164:13): [True: 0, False: 0]
  ------------------
 4165|      0|		list->num_allocated = list->num * 2;
 4166|      0|		list = erealloc(list, sizeof(zend_property_info_list) + (list->num_allocated - 1) * sizeof(zend_property_info *));
  ------------------
  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4167|      0|	}
 4168|       |
 4169|      1|	list->ptr[list->num++] = prop;
 4170|      1|	source_list->list = ZEND_PROPERTY_INFO_SOURCE_FROM_LIST(list);
  ------------------
  |  |  590|      1|#define ZEND_PROPERTY_INFO_SOURCE_FROM_LIST(list) (0x1 | (uintptr_t) (list))
  ------------------
 4171|      1|}
zend_ref_del_type_source:
 4174|     21|{
 4175|     21|	zend_property_info_list *list = ZEND_PROPERTY_INFO_SOURCE_TO_LIST(source_list->list);
  ------------------
  |  |  591|     21|#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list) ((zend_property_info_list *) ((list) & ~0x1))
  ------------------
 4176|     21|	zend_property_info **ptr, **end;
 4177|       |
 4178|     21|	ZEND_ASSERT(prop);
  ------------------
  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4178:2): [True: 0, False: 21]
  |  Branch (4178:2): [True: 21, False: 0]
  ------------------
 4179|     21|	if (!ZEND_PROPERTY_INFO_SOURCE_IS_LIST(source_list->list)) {
  ------------------
  |  |  592|     21|#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list) ((list) & 0x1)
  ------------------
  |  Branch (4179:6): [True: 19, False: 2]
  ------------------
 4180|     19|		ZEND_ASSERT(source_list->ptr == prop);
  ------------------
  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4180:3): [True: 0, False: 19]
  |  Branch (4180:3): [True: 19, False: 0]
  ------------------
 4181|     19|		source_list->ptr = NULL;
 4182|     19|		return;
 4183|     19|	}
 4184|       |
 4185|      2|	if (list->num == 1) {
  ------------------
  |  Branch (4185:6): [True: 1, False: 1]
  ------------------
 4186|      1|		ZEND_ASSERT(*list->ptr == prop);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4186:3): [True: 0, False: 1]
  |  Branch (4186:3): [True: 1, False: 0]
  ------------------
 4187|      1|		efree(list);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4188|      1|		source_list->ptr = NULL;
 4189|      1|		return;
 4190|      1|	}
 4191|       |
 4192|       |	/* Checking against end here to get a more graceful failure mode if we missed adding a type
 4193|       |	 * source at some point. */
 4194|      1|	ptr = list->ptr;
 4195|      1|	end = ptr + list->num;
 4196|      1|	while (ptr < end && *ptr != prop) {
  ------------------
  |  Branch (4196:9): [True: 1, False: 0]
  |  Branch (4196:22): [True: 0, False: 1]
  ------------------
 4197|      0|		ptr++;
 4198|      0|	}
 4199|      1|	ZEND_ASSERT(*ptr == prop);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4199:2): [True: 0, False: 1]
  |  Branch (4199:2): [True: 1, False: 0]
  ------------------
 4200|       |
 4201|       |	/* Copy the last list element into the deleted slot. */
 4202|      1|	*ptr = list->ptr[--list->num];
 4203|       |
 4204|      1|	if (list->num >= 4 && list->num * 4 == list->num_allocated) {
  ------------------
  |  Branch (4204:6): [True: 0, False: 1]
  |  Branch (4204:24): [True: 0, False: 0]
  ------------------
 4205|      0|		list->num_allocated = list->num * 2;
 4206|      0|		source_list->list = ZEND_PROPERTY_INFO_SOURCE_FROM_LIST(erealloc(list, sizeof(zend_property_info_list) + (list->num_allocated - 1) * sizeof(zend_property_info *)));
  ------------------
  |  |  590|      0|#define ZEND_PROPERTY_INFO_SOURCE_FROM_LIST(list) (0x1 | (uintptr_t) (list))
  ------------------
 4207|      0|	}
 4208|      1|}
execute_internal:
 4278|  23.5k|{
 4279|  23.5k|	execute_data->func->internal_function.handler(execute_data, return_value);
 4280|  23.5k|}
zend_clean_and_cache_symbol_table:
 4283|    115|{
 4284|       |	/* Clean before putting into the cache, since clean could call dtors,
 4285|       |	 * which could use the cached hash. Also do this before the check for
 4286|       |	 * available cache slots, as those may be used by a dtor as well. */
 4287|    115|	zend_symtable_clean(symbol_table);
 4288|    115|	if (EG(symtable_cache_ptr) >= EG(symtable_cache_limit)) {
  ------------------
  |  |   45|    115|# define EG(v) (executor_globals.v)
  ------------------
              	if (EG(symtable_cache_ptr) >= EG(symtable_cache_limit)) {
  ------------------
  |  |   45|    115|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (4288:6): [True: 16, False: 99]
  ------------------
 4289|     16|		zend_array_destroy(symbol_table);
 4290|     99|	} else {
 4291|     99|		*(EG(symtable_cache_ptr)++) = symbol_table;
  ------------------
  |  |   45|     99|# define EG(v) (executor_globals.v)
  ------------------
 4292|     99|	}
 4293|    115|}
zend_free_compiled_variables:
 4309|     99|{
 4310|     99|	i_free_compiled_variables(execute_data);
 4311|     99|}
zend_fetch_function:
 4486|    519|{
 4487|    519|	zval *zv = zend_hash_find(EG(function_table), name);
  ------------------
  |  |   45|    519|# define EG(v) (executor_globals.v)
  ------------------
 4488|       |
 4489|    519|	if (EXPECTED(zv != NULL)) {
  ------------------
  |  |  456|    519|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 471, False: 48]
  |  |  ------------------
  ------------------
 4490|    471|		zend_function *fbc = Z_FUNC_P(zv);
  ------------------
  |  | 1050|    471|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|    471|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 4491|       |
 4492|    471|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|    942|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 427, False: 44]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|    854|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 406]
  |  |  |  Branch (457:52): [True: 0, False: 427]
  |  |  ------------------
  ------------------
 4493|     21|			init_func_run_time_cache_i(&fbc->op_array);
 4494|     21|		}
 4495|    471|		return fbc;
 4496|    471|	}
 4497|     48|	return NULL;
 4498|    519|} /* }}} */
zend_fetch_function_str:
 4501|      1|{
 4502|      1|	const zval *zv = zend_hash_str_find(EG(function_table), name, len);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 4503|       |
 4504|      1|	if (EXPECTED(zv != NULL)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 4505|      1|		zend_function *fbc = Z_FUNC_P(zv);
  ------------------
  |  | 1050|      1|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|      1|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 4506|       |
 4507|      1|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4508|      0|			init_func_run_time_cache_i(&fbc->op_array);
 4509|      0|		}
 4510|      1|		return fbc;
 4511|      1|	}
 4512|      0|	return NULL;
 4513|      1|} /* }}} */
zend_init_func_execute_data:
 4549|  8.33k|{
 4550|       |#if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4551|       |	zend_execute_data *orig_execute_data = execute_data;
 4552|       |#endif
 4553|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4554|       |	const zend_op *orig_opline = opline;
 4555|       |#endif
 4556|       |#if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4557|       |	execute_data = ex;
 4558|       |#else
 4559|  8.33k|	zend_execute_data *execute_data = ex;
 4560|  8.33k|#endif
 4561|       |
 4562|  8.33k|	EX(prev_execute_data) = EG(current_execute_data);
  ------------------
  |  |  730|  8.33k|#define EX(element) 			((execute_data)->element)
  ------------------
              	EX(prev_execute_data) = EG(current_execute_data);
  ------------------
  |  |   45|  8.33k|# define EG(v) (executor_globals.v)
  ------------------
 4563|  8.33k|	if (!RUN_TIME_CACHE(op_array)) {
  ------------------
  |  |  858|  8.33k|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|  8.33k|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|  8.33k|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|  8.33k|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 8.33k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|  8.33k|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|  8.33k|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|  8.33k|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4563:6): [True: 152, False: 8.18k]
  ------------------
 4564|    152|		init_func_run_time_cache(op_array);
 4565|    152|	}
 4566|  8.33k|	i_init_func_execute_data(op_array, return_value, 1 EXECUTE_DATA_CC);
  ------------------
  |  |   89|  8.33k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  8.33k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4567|       |
 4568|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4569|       |	EX(opline) = opline;
 4570|       |	opline = orig_opline;
 4571|       |#endif
 4572|       |#if defined(ZEND_VM_FP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4573|       |	execute_data = orig_execute_data;
 4574|       |#endif
 4575|  8.33k|}
zend_vm_stack_copy_call_frame:
 4596|      4|{
 4597|      4|	zend_execute_data *new_call;
 4598|      4|	int used_stack = (EG(vm_stack_top) - (zval*)call) + additional_args;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 4599|       |
 4600|       |	/* copy call frame into new stack segment */
 4601|      4|	new_call = zend_vm_stack_extend(used_stack * sizeof(zval));
 4602|      4|	*new_call = *call;
 4603|      4|	ZEND_ADD_CALL_FLAG(new_call, ZEND_CALL_ALLOCATED);
  ------------------
  |  |  703|      4|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      4|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      4|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      4|		call_info |= (flag); \
  |  |  |  |  697|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 4604|       |
 4605|      4|	if (passed_args) {
  ------------------
  |  Branch (4605:6): [True: 4, False: 0]
  ------------------
 4606|      4|		zval *src = ZEND_CALL_ARG(call, 1);
  ------------------
  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4607|      4|		zval *dst = ZEND_CALL_ARG(new_call, 1);
  ------------------
  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4608|  40.2k|		do {
 4609|  40.2k|			ZVAL_COPY_VALUE(dst, src);
  ------------------
  |  | 1416|  40.2k|	do {												\
  |  | 1417|  40.2k|		zval *_z1 = (z);								\
  |  | 1418|  40.2k|		const zval *_z2 = (v);							\
  |  | 1419|  40.2k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  40.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  40.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  40.2k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  40.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  40.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  40.2k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  40.2k|	do {												\
  |  |  |  | 1408|  40.2k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  40.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  40.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  40.2k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  40.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  40.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  40.2k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 40.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  40.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 40.2k]
  |  |  ------------------
  ------------------
 4610|  40.2k|			passed_args--;
 4611|  40.2k|			src++;
 4612|  40.2k|			dst++;
 4613|  40.2k|		} while (passed_args);
  ------------------
  |  Branch (4613:12): [True: 40.1k, False: 4]
  ------------------
 4614|      4|	}
 4615|       |
 4616|       |	/* delete old call_frame from previous stack segment */
 4617|      4|	EG(vm_stack)->prev->top = (zval*)call;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 4618|       |
 4619|       |	/* delete previous stack segment if it became empty */
 4620|      4|	if (UNEXPECTED(EG(vm_stack)->prev->top == ZEND_VM_STACK_ELEMENTS(EG(vm_stack)->prev))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 4621|      0|		zend_vm_stack r = EG(vm_stack)->prev;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 4622|       |
 4623|      0|		EG(vm_stack)->prev = r->prev;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 4624|      0|		efree(r);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4625|      0|	}
 4626|       |
 4627|      4|	return new_call;
 4628|      4|}
zend_unfinished_calls_gc:
 4642|      4|{
 4643|      4|	zend_op *opline = EX(func)->op_array.opcodes + op_num;
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
 4644|      4|	int level;
 4645|      4|	int do_exit;
 4646|      4|	uint32_t num_args;
 4647|       |
 4648|      4|	if (UNEXPECTED(opline->opcode == ZEND_INIT_FCALL ||
  ------------------
  |  |  457|     56|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 4649|      4|		opline->opcode == ZEND_INIT_FCALL_BY_NAME ||
 4650|      4|		opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME ||
 4651|      4|		opline->opcode == ZEND_INIT_DYNAMIC_CALL ||
 4652|      4|		opline->opcode == ZEND_INIT_USER_CALL ||
 4653|      4|		opline->opcode == ZEND_INIT_METHOD_CALL ||
 4654|      4|		opline->opcode == ZEND_INIT_STATIC_METHOD_CALL ||
 4655|      4|		opline->opcode == ZEND_NEW)) {
 4656|      0|		ZEND_ASSERT(op_num);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4656:3): [True: 0, False: 0]
  |  Branch (4656:3): [True: 0, False: 0]
  ------------------
 4657|      0|		opline--;
 4658|      0|	}
 4659|       |
 4660|      8|	do {
 4661|       |		/* find the number of actually passed arguments */
 4662|      8|		level = 0;
 4663|      8|		do_exit = 0;
 4664|      8|		num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|      8|	(call)->This.u2.num_args
  ------------------
 4665|     12|		do {
 4666|     12|			switch (opline->opcode) {
  ------------------
  |  Branch (4666:12): [True: 8, False: 4]
  ------------------
 4667|      0|				case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (4667:5): [True: 0, False: 12]
  ------------------
 4668|      0|				case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (4668:5): [True: 0, False: 12]
  ------------------
 4669|      0|				case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (4669:5): [True: 0, False: 12]
  ------------------
 4670|      0|				case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (4670:5): [True: 0, False: 12]
  ------------------
 4671|      0|				case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (4671:5): [True: 0, False: 12]
  ------------------
 4672|      0|					level++;
 4673|      0|					break;
 4674|      2|				case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      2|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4674:5): [True: 2, False: 10]
  ------------------
 4675|      2|				case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      2|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (4675:5): [True: 0, False: 12]
  ------------------
 4676|      2|				case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      2|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (4676:5): [True: 0, False: 12]
  ------------------
 4677|      2|				case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|      2|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (4677:5): [True: 0, False: 12]
  ------------------
 4678|      2|				case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|      2|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (4678:5): [True: 0, False: 12]
  ------------------
 4679|      2|				case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|      2|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (4679:5): [True: 0, False: 12]
  ------------------
 4680|      2|				case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|      2|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (4680:5): [True: 0, False: 12]
  ------------------
 4681|      2|				case ZEND_NEW:
  ------------------
  |  |  191|      2|#define ZEND_NEW                             68
  ------------------
  |  Branch (4681:5): [True: 0, False: 12]
  ------------------
 4682|      2|					if (level == 0) {
  ------------------
  |  Branch (4682:10): [True: 2, False: 0]
  ------------------
 4683|      2|						num_args = 0;
 4684|      2|						do_exit = 1;
 4685|      2|					}
 4686|      2|					level--;
 4687|      2|					break;
 4688|      0|				case ZEND_SEND_VAL:
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (4688:5): [True: 0, False: 12]
  ------------------
 4689|      2|				case ZEND_SEND_VAL_EX:
  ------------------
  |  |  238|      2|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (4689:5): [True: 2, False: 10]
  ------------------
 4690|      6|				case ZEND_SEND_VAR:
  ------------------
  |  |  239|      6|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (4690:5): [True: 4, False: 8]
  ------------------
 4691|      6|				case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      6|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (4691:5): [True: 0, False: 12]
  ------------------
 4692|      6|				case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|      6|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (4692:5): [True: 0, False: 12]
  ------------------
 4693|      6|				case ZEND_SEND_REF:
  ------------------
  |  |  190|      6|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (4693:5): [True: 0, False: 12]
  ------------------
 4694|      6|				case ZEND_SEND_VAR_NO_REF:
  ------------------
  |  |  228|      6|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  |  Branch (4694:5): [True: 0, False: 12]
  ------------------
 4695|      6|				case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|      6|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (4695:5): [True: 0, False: 12]
  ------------------
 4696|      6|				case ZEND_SEND_USER:
  ------------------
  |  |  242|      6|#define ZEND_SEND_USER                      120
  ------------------
  |  Branch (4696:5): [True: 0, False: 12]
  ------------------
 4697|      6|					if (level == 0) {
  ------------------
  |  Branch (4697:10): [True: 6, False: 0]
  ------------------
 4698|       |						/* For named args, the number of arguments is up to date. */
 4699|      6|						if (opline->op2_type != IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (4699:11): [True: 4, False: 2]
  ------------------
 4700|      4|							num_args = opline->op2.num;
 4701|      4|						}
 4702|      6|						do_exit = 1;
 4703|      6|					}
 4704|      6|					break;
 4705|      0|				case ZEND_SEND_ARRAY:
  ------------------
  |  |  241|      0|#define ZEND_SEND_ARRAY                     119
  ------------------
  |  Branch (4705:5): [True: 0, False: 12]
  ------------------
 4706|      0|				case ZEND_SEND_UNPACK:
  ------------------
  |  |  287|      0|#define ZEND_SEND_UNPACK                    165
  ------------------
  |  Branch (4706:5): [True: 0, False: 12]
  ------------------
 4707|      0|				case ZEND_CHECK_UNDEF_ARGS:
  ------------------
  |  |  321|      0|#define ZEND_CHECK_UNDEF_ARGS               199
  ------------------
  |  Branch (4707:5): [True: 0, False: 12]
  ------------------
 4708|      0|					if (level == 0) {
  ------------------
  |  Branch (4708:10): [True: 0, False: 0]
  ------------------
 4709|      0|						do_exit = 1;
 4710|      0|					}
 4711|      0|					break;
 4712|     12|			}
 4713|     12|			if (!do_exit) {
  ------------------
  |  Branch (4713:8): [True: 4, False: 8]
  ------------------
 4714|      4|				opline--;
 4715|      4|			}
 4716|     12|		} while (!do_exit);
  ------------------
  |  Branch (4716:12): [True: 4, False: 8]
  ------------------
 4717|      8|		if (call->prev_execute_data) {
  ------------------
  |  Branch (4717:7): [True: 4, False: 4]
  ------------------
 4718|       |			/* skip current call region */
 4719|      4|			level = 0;
 4720|      4|			do_exit = 0;
 4721|     10|			do {
 4722|     10|				switch (opline->opcode) {
  ------------------
  |  Branch (4722:13): [True: 4, False: 6]
  ------------------
 4723|      0|					case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (4723:6): [True: 0, False: 10]
  ------------------
 4724|      0|					case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (4724:6): [True: 0, False: 10]
  ------------------
 4725|      0|					case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (4725:6): [True: 0, False: 10]
  ------------------
 4726|      0|					case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (4726:6): [True: 0, False: 10]
  ------------------
 4727|      0|					case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (4727:6): [True: 0, False: 10]
  ------------------
 4728|      0|						level++;
 4729|      0|						break;
 4730|      4|					case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      4|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4730:6): [True: 4, False: 6]
  ------------------
 4731|      4|					case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      4|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (4731:6): [True: 0, False: 10]
  ------------------
 4732|      4|					case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      4|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (4732:6): [True: 0, False: 10]
  ------------------
 4733|      4|					case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|      4|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (4733:6): [True: 0, False: 10]
  ------------------
 4734|      4|					case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|      4|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (4734:6): [True: 0, False: 10]
  ------------------
 4735|      4|					case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|      4|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (4735:6): [True: 0, False: 10]
  ------------------
 4736|      4|					case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|      4|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (4736:6): [True: 0, False: 10]
  ------------------
 4737|      4|					case ZEND_NEW:
  ------------------
  |  |  191|      4|#define ZEND_NEW                             68
  ------------------
  |  Branch (4737:6): [True: 0, False: 10]
  ------------------
 4738|      4|						if (level == 0) {
  ------------------
  |  Branch (4738:11): [True: 4, False: 0]
  ------------------
 4739|      4|							do_exit = 1;
 4740|      4|						}
 4741|      4|						level--;
 4742|      4|						break;
 4743|     10|				}
 4744|     10|				opline--;
 4745|     10|			} while (!do_exit);
  ------------------
  |  Branch (4745:13): [True: 6, False: 4]
  ------------------
 4746|      4|		}
 4747|       |
 4748|      8|		if (EXPECTED(num_args > 0)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 4]
  |  |  ------------------
  ------------------
 4749|      4|			zval *p = ZEND_CALL_ARG(call, 1);
  ------------------
  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4750|      6|			do {
 4751|      6|				zend_get_gc_buffer_add_zval(buf, p);
 4752|      6|				p++;
 4753|      6|			} while (--num_args);
  ------------------
  |  Branch (4753:13): [True: 2, False: 4]
  ------------------
 4754|      4|		}
 4755|      8|		if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  687|      8|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|      8|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (4755:7): [True: 0, False: 8]
  ------------------
 4756|      0|			zend_get_gc_buffer_add_obj(buf, Z_OBJ(call->This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 4757|      0|		}
 4758|      8|		if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  687|      8|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|      8|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (4758:7): [True: 2, False: 6]
  ------------------
 4759|      2|			zval *val;
 4760|      6|			ZEND_HASH_FOREACH_VAL(call->extra_named_params, val) {
  ------------------
  |  | 1117|      2|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      2|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      2|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      2|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      2|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      4|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      2|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 2, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1034|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      2|	_val = _z;
  ------------------
 4761|      6|				zend_get_gc_buffer_add_zval(buf, val);
 4762|      6|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4763|      2|		}
 4764|      8|		if (call->func->common.fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|      8|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (4764:7): [True: 0, False: 8]
  ------------------
 4765|      0|			zend_get_gc_buffer_add_obj(buf, ZEND_CLOSURE_OBJECT(call->func));
  ------------------
  |  |   28|      0|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
 4766|      0|		}
 4767|       |
 4768|      8|		call = call->prev_execute_data;
 4769|      8|	} while (call);
  ------------------
  |  Branch (4769:11): [True: 4, False: 4]
  ------------------
 4770|      4|}
zend_cleanup_unfinished_execution:
 4974|     31|ZEND_API void zend_cleanup_unfinished_execution(zend_execute_data *execute_data, uint32_t op_num, uint32_t catch_op_num) {
 4975|     31|	cleanup_unfinished_calls(execute_data, op_num);
 4976|     31|	cleanup_live_vars(execute_data, op_num, catch_op_num);
 4977|     31|}
zend_unfinished_execution_gc_ex:
 4985|  1.68k|{
 4986|  1.68k|	if (!EX(func)) {
  ------------------
  |  |  730|  1.68k|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (4986:6): [True: 0, False: 1.68k]
  ------------------
 4987|      0|		return NULL;
 4988|      0|	}
 4989|       |
 4990|  1.68k|	if (EX_CALL_INFO() & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  732|  1.68k|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|  1.68k|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.68k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|  1.68k|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (4990:6): [True: 2, False: 1.67k]
  ------------------
 4991|      2|		zend_get_gc_buffer_add_obj(gc_buffer, Z_OBJ(execute_data->This));
  ------------------
  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 4992|      2|	}
 4993|       |
 4994|  1.68k|	if (EX_CALL_INFO() & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  732|  1.68k|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|  1.68k|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.68k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  668|  1.68k|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
  |  Branch (4994:6): [True: 552, False: 1.12k]
  ------------------
 4995|    552|		zend_get_gc_buffer_add_obj(gc_buffer, ZEND_CLOSURE_OBJECT(EX(func)));
  ------------------
  |  |   28|    552|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
 4996|    552|	}
 4997|       |
 4998|  1.68k|	if (!ZEND_USER_CODE(EX(func)->common.type)) {
  ------------------
  |  | 1081|  1.68k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (4998:6): [True: 1.09k, False: 588]
  ------------------
 4999|  1.09k|		ZEND_ASSERT(!(EX_CALL_INFO() & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)));
  ------------------
  |  |  112|  1.09k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4999:3): [True: 0, False: 1.09k]
  |  Branch (4999:3): [True: 1.09k, False: 0]
  ------------------
 5000|  1.09k|		return NULL;
 5001|  1.09k|	}
 5002|       |
 5003|    588|	const zend_op_array *op_array = &EX(func)->op_array;
  ------------------
  |  |  730|    588|#define EX(element) 			((execute_data)->element)
  ------------------
 5004|       |
 5005|    588|	if (!(EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  732|    588|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|    588|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    588|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!(EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  666|    588|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (5005:6): [True: 580, False: 8]
  ------------------
 5006|    580|		uint32_t i, num_cvs = EX(func)->op_array.last_var;
  ------------------
  |  |  730|    580|#define EX(element) 			((execute_data)->element)
  ------------------
 5007|    586|		for (i = 0; i < num_cvs; i++) {
  ------------------
  |  Branch (5007:15): [True: 6, False: 580]
  ------------------
 5008|      6|			zend_get_gc_buffer_add_zval(gc_buffer, EX_VAR_NUM(i));
  ------------------
  |  |  756|      6|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5009|      6|		}
 5010|    580|	}
 5011|       |
 5012|    588|	if (EX_CALL_INFO() & ZEND_CALL_FREE_EXTRA_ARGS) {
  ------------------
  |  |  732|    588|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|    588|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    588|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_FREE_EXTRA_ARGS) {
  ------------------
  |  |  665|    588|#define ZEND_CALL_FREE_EXTRA_ARGS    (1 << 19)
  ------------------
  |  Branch (5012:6): [True: 2, False: 586]
  ------------------
 5013|      2|		zval *zv = EX_VAR_NUM(op_array->last_var + op_array->T);
  ------------------
  |  |  756|      2|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5014|      2|		const zval *end = zv + (EX_NUM_ARGS() - op_array->num_args);
  ------------------
  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 5015|      6|		while (zv != end) {
  ------------------
  |  Branch (5015:10): [True: 4, False: 2]
  ------------------
 5016|      4|			zend_get_gc_buffer_add_zval(gc_buffer, zv++);
 5017|      4|		}
 5018|      2|	}
 5019|       |
 5020|    588|	if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  732|    588|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|    588|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    588|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|    588|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (5020:6): [True: 0, False: 588]
  ------------------
 5021|      0|		zval extra_named_params;
 5022|      0|		ZVAL_ARR(&extra_named_params, EX(extra_named_params));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5023|      0|		zend_get_gc_buffer_add_zval(gc_buffer, &extra_named_params);
 5024|      0|	}
 5025|       |
 5026|    588|	uint32_t op_num;
 5027|    588|	if (UNEXPECTED(execute_data->opline->opcode == ZEND_HANDLE_EXCEPTION)) {
  ------------------
  |  |  457|    588|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 588]
  |  |  ------------------
  ------------------
 5028|      0|		op_num = EG(opline_before_exception) - op_array->opcodes;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 5029|    588|	} else {
 5030|    588|		op_num = execute_data->opline - op_array->opcodes;
 5031|    588|	}
 5032|    588|	ZEND_ASSERT(op_num < op_array->last);
  ------------------
  |  |  112|    588|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5032:2): [True: 0, False: 588]
  |  Branch (5032:2): [True: 588, False: 0]
  ------------------
 5033|       |
 5034|    588|	if (call) {
  ------------------
  |  Branch (5034:6): [True: 4, False: 584]
  ------------------
 5035|      4|		zend_unfinished_calls_gc(execute_data, call, op_num, gc_buffer);
 5036|      4|	}
 5037|       |
 5038|    588|	if (execute_data->opline != op_array->opcodes) {
  ------------------
  |  Branch (5038:6): [True: 584, False: 4]
  ------------------
 5039|    584|		uint32_t i;
 5040|    594|		for (i = 0; i < op_array->last_live_range; i++) {
  ------------------
  |  Branch (5040:15): [True: 10, False: 584]
  ------------------
 5041|     10|			const zend_live_range *range = &op_array->live_range[i];
 5042|     10|			if (range->start > op_num) {
  ------------------
  |  Branch (5042:8): [True: 0, False: 10]
  ------------------
 5043|      0|				break;
 5044|     10|			} else if (op_num < range->end) {
  ------------------
  |  Branch (5044:15): [True: 2, False: 8]
  ------------------
 5045|      2|				uint32_t kind = range->var & ZEND_LIVE_MASK;
  ------------------
  |  |  184|      2|#define ZEND_LIVE_MASK    7
  ------------------
 5046|      2|				uint32_t var_num = range->var & ~ZEND_LIVE_MASK;
  ------------------
  |  |  184|      2|#define ZEND_LIVE_MASK    7
  ------------------
 5047|      2|				zval *var = EX_VAR(var_num);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5048|      2|				if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  179|      4|#define ZEND_LIVE_TMPVAR  0
  ------------------
              				if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  180|      0|#define ZEND_LIVE_LOOP    1
  ------------------
  |  Branch (5048:9): [True: 2, False: 0]
  |  Branch (5048:37): [True: 0, False: 0]
  ------------------
 5049|      2|					zend_get_gc_buffer_add_zval(gc_buffer, var);
 5050|      2|				}
 5051|      2|			}
 5052|     10|		}
 5053|    584|	}
 5054|       |
 5055|    588|	if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  732|    588|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|    588|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    588|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  666|    588|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (5055:6): [True: 8, False: 580]
  ------------------
 5056|      8|		return execute_data->symbol_table;
 5057|    580|	} else {
 5058|       |		return NULL;
 5059|    580|	}
 5060|    588|}
zend_handle_named_arg:
 5525|     75|		uint32_t *arg_num_ptr, void **cache_slot) {
 5526|     75|	zend_execute_data *call = *call_ptr;
 5527|     75|	const zend_function *fbc = call->func;
 5528|     75|	uint32_t arg_offset = zend_get_arg_offset_by_name(fbc, arg_name, cache_slot);
 5529|     75|	if (UNEXPECTED(arg_offset == (uint32_t) -1)) {
  ------------------
  |  |  457|     75|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 73]
  |  |  ------------------
  ------------------
 5530|      2|		zend_throw_error(NULL, "Unknown named parameter $%s", ZSTR_VAL(arg_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5531|      2|		return NULL;
 5532|      2|	}
 5533|       |
 5534|     73|	zval *arg;
 5535|     73|	if (UNEXPECTED(arg_offset == fbc->common.num_args)) {
  ------------------
  |  |  457|     73|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 63]
  |  |  ------------------
  ------------------
 5536|       |		/* Unknown named parameter that will be collected into a variadic. */
 5537|     10|		if (!(ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  687|     10|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if (!(ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  673|     10|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (5537:7): [True: 8, False: 2]
  ------------------
 5538|      8|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_HAS_EXTRA_NAMED_PARAMS);
  ------------------
  |  |  703|      8|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      8|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      8|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      8|		call_info |= (flag); \
  |  |  |  |  697|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 5539|      8|			call->extra_named_params = zend_new_array(0);
  ------------------
  |  |  342|      8|	_zend_new_array(size)
  ------------------
 5540|      8|		}
 5541|       |
 5542|     10|		arg = zend_hash_add_empty_element(call->extra_named_params, arg_name);
 5543|     10|		if (!arg) {
  ------------------
  |  Branch (5543:7): [True: 1, False: 9]
  ------------------
 5544|      1|			zend_throw_error(NULL, "Named parameter $%s overwrites previous argument",
 5545|      1|				ZSTR_VAL(arg_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5546|      1|			return NULL;
 5547|      1|		}
 5548|      9|		*arg_num_ptr = arg_offset + 1;
 5549|      9|		return arg;
 5550|     10|	}
 5551|       |
 5552|     63|	uint32_t current_num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|     63|	(call)->This.u2.num_args
  ------------------
 5553|       |	// TODO: We may wish to optimize the arg_offset == current_num_args case,
 5554|       |	// which is probably common (if the named parameters are in order of declaration).
 5555|     63|	if (arg_offset >= current_num_args) {
  ------------------
  |  Branch (5555:6): [True: 44, False: 19]
  ------------------
 5556|     44|		uint32_t new_num_args = arg_offset + 1;
 5557|     44|		ZEND_CALL_NUM_ARGS(call) = new_num_args;
  ------------------
  |  |  712|     44|	(call)->This.u2.num_args
  ------------------
 5558|       |
 5559|     44|		uint32_t num_extra_args = new_num_args - current_num_args;
 5560|     44|		zend_vm_stack_extend_call_frame(call_ptr, current_num_args, num_extra_args);
 5561|     44|		call = *call_ptr;
 5562|       |
 5563|     44|		arg = ZEND_CALL_VAR_NUM(call, arg_offset);
  ------------------
  |  |  725|     44|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|     44|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 5564|     44|		if (num_extra_args > 1) {
  ------------------
  |  Branch (5564:7): [True: 37, False: 7]
  ------------------
 5565|     37|			zval *zv = ZEND_CALL_VAR_NUM(call, current_num_args);
  ------------------
  |  |  725|     37|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|     37|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 5566|     38|			do {
 5567|     38|				ZVAL_UNDEF(zv);
  ------------------
  |  | 1055|     38|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     38|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     38|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     38|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     38|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     38|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 38]
  |  |  ------------------
  ------------------
 5568|     38|				zv++;
 5569|     38|			} while (zv != arg);
  ------------------
  |  Branch (5569:13): [True: 1, False: 37]
  ------------------
 5570|     37|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_MAY_HAVE_UNDEF);
  ------------------
  |  |  703|     37|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|     37|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|     37|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|     37|		call_info |= (flag); \
  |  |  |  |  697|     37|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 37]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
 5571|     37|		}
 5572|     44|	} else {
 5573|     19|		arg = ZEND_CALL_VAR_NUM(call, arg_offset);
  ------------------
  |  |  725|     19|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|     19|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 5574|     19|		if (UNEXPECTED(!Z_ISUNDEF_P(arg))) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 17]
  |  |  ------------------
  ------------------
 5575|      2|			zend_throw_error(NULL, "Named parameter $%s overwrites previous argument",
 5576|      2|				ZSTR_VAL(arg_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5577|      2|			return NULL;
 5578|      2|		}
 5579|     19|	}
 5580|       |
 5581|     61|	*arg_num_ptr = arg_offset + 1;
 5582|     61|	return arg;
 5583|     63|}
zend_handle_undef_args:
 5602|     36|ZEND_API zend_result ZEND_FASTCALL zend_handle_undef_args(zend_execute_data *call) {
 5603|     36|	zend_function *fbc = call->func;
 5604|     36|	if (fbc->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (5604:6): [True: 4, False: 32]
  ------------------
 5605|      4|		zend_op_array *op_array = &fbc->op_array;
 5606|      4|		uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|      4|	(call)->This.u2.num_args
  ------------------
 5607|      8|		for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (5607:24): [True: 7, False: 1]
  ------------------
 5608|      7|			zval *arg = ZEND_CALL_VAR_NUM(call, i);
  ------------------
  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 5609|      7|			if (!Z_ISUNDEF_P(arg)) {
  ------------------
  |  |  967|      7|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      7|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5609:8): [True: 3, False: 4]
  ------------------
 5610|      3|				continue;
 5611|      3|			}
 5612|       |
 5613|      4|			const zend_op *opline = &op_array->opcodes[i];
 5614|      4|			if (EXPECTED(opline->opcode == ZEND_RECV_INIT)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
 5615|      1|				zval *default_value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5616|      1|				if (Z_OPT_TYPE_P(default_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  949|      1|#define Z_OPT_TYPE_P(zval_p)		Z_OPT_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  948|      1|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|      1|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OPT_TYPE_P(default_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      1|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (5616:9): [True: 1, False: 0]
  ------------------
 5617|      1|					if (UNEXPECTED(!RUN_TIME_CACHE(op_array))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 5618|      1|						init_func_run_time_cache(op_array);
 5619|      1|					}
 5620|       |
 5621|      1|					void *run_time_cache = RUN_TIME_CACHE(op_array);
  ------------------
  |  |  858|      1|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      1|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      1|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      1|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      1|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5622|      1|					zval *cache_val =
 5623|      1|						(zval *) ((char *) run_time_cache + Z_CACHE_SLOT_P(default_value));
  ------------------
  |  |  684|      1|#define Z_CACHE_SLOT_P(zval_p)		Z_CACHE_SLOT(*(zval_p))
  |  |  ------------------
  |  |  |  |  683|      1|#define Z_CACHE_SLOT(zval)			(zval).u2.cache_slot
  |  |  ------------------
  ------------------
 5624|       |
 5625|      1|					if (Z_TYPE_P(cache_val) != IS_UNDEF) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(cache_val) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (5625:10): [True: 0, False: 1]
  ------------------
 5626|       |						/* We keep in cache only not refcounted values */
 5627|      0|						ZVAL_COPY_VALUE(arg, cache_val);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5628|      1|					} else {
 5629|       |						/* Update constant inside a temporary zval, to make sure the CONSTANT_AST
 5630|       |						 * value is not accessible through back traces. */
 5631|      1|						zval tmp;
 5632|      1|						ZVAL_COPY(&tmp, default_value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5633|      1|						zend_execute_data *old = start_fake_frame(call, opline);
 5634|      1|						zend_result ret = zval_update_constant_ex(&tmp, fbc->op_array.scope);
 5635|      1|						end_fake_frame(call, old);
 5636|      1|						if (UNEXPECTED(ret == FAILURE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 5637|      0|							zval_ptr_dtor_nogc(&tmp);
 5638|      0|							return FAILURE;
 5639|      0|						}
 5640|      1|						ZVAL_COPY_VALUE(arg, &tmp);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5641|      1|						if (!Z_REFCOUNTED(tmp)) {
  ------------------
  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  ------------------
  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  |  Branch (5641:11): [True: 1, False: 0]
  ------------------
 5642|      1|							ZVAL_COPY_VALUE(cache_val, &tmp);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5643|      1|						}
 5644|      1|					}
 5645|      1|				} else {
 5646|      0|					ZVAL_COPY(arg, default_value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5647|      0|				}
 5648|      3|			} else {
 5649|      3|				ZEND_ASSERT(opline->opcode == ZEND_RECV);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5649:5): [True: 0, False: 3]
  |  Branch (5649:5): [True: 3, False: 0]
  ------------------
 5650|      3|				zend_execute_data *old = start_fake_frame(call, opline);
 5651|      3|				zend_argument_error(zend_ce_argument_count_error, i + 1, "not passed");
 5652|      3|				end_fake_frame(call, old);
 5653|      3|				return FAILURE;
 5654|      3|			}
 5655|      4|		}
 5656|       |
 5657|      1|		return SUCCESS;
 5658|     32|	} else {
 5659|     32|		if (fbc->common.fn_flags & ZEND_ACC_USER_ARG_INFO) {
  ------------------
  |  |  399|     32|#define ZEND_ACC_USER_ARG_INFO           (1 << 26) /*     |  X  |     |     */
  ------------------
  |  Branch (5659:7): [True: 0, False: 32]
  ------------------
 5660|       |			/* Magic function, let it deal with it. */
 5661|      0|			return SUCCESS;
 5662|      0|		}
 5663|       |
 5664|     32|		uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|     32|	(call)->This.u2.num_args
  ------------------
 5665|     98|		for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (5665:24): [True: 66, False: 32]
  ------------------
 5666|     66|			zval *arg = ZEND_CALL_VAR_NUM(call, i);
  ------------------
  |  |  725|     66|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|     66|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 5667|     66|			if (!Z_ISUNDEF_P(arg)) {
  ------------------
  |  |  967|     66|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|     66|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     66|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|     66|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5667:8): [True: 50, False: 16]
  ------------------
 5668|     50|				continue;
 5669|     50|			}
 5670|       |
 5671|     16|			zend_arg_info *arg_info = &fbc->internal_function.arg_info[i];
 5672|     16|			if (i < fbc->common.required_num_args) {
  ------------------
  |  Branch (5672:8): [True: 0, False: 16]
  ------------------
 5673|      0|				zend_execute_data *old = start_fake_frame(call, NULL);
 5674|      0|				zend_argument_error(zend_ce_argument_count_error, i + 1, "not passed");
 5675|      0|				end_fake_frame(call, old);
 5676|      0|				return FAILURE;
 5677|      0|			}
 5678|       |
 5679|     16|			zval default_value;
 5680|     16|			if (zend_get_default_from_internal_arg_info(&default_value, arg_info) == FAILURE) {
  ------------------
  |  Branch (5680:8): [True: 0, False: 16]
  ------------------
 5681|      0|				zend_execute_data *old = start_fake_frame(call, NULL);
 5682|      0|				zend_argument_error(zend_ce_argument_count_error, i + 1,
 5683|      0|					"must be passed explicitly, because the default value is not known");
 5684|      0|				end_fake_frame(call, old);
 5685|      0|				return FAILURE;
 5686|      0|			}
 5687|       |
 5688|     16|			if (Z_TYPE(default_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(default_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     16|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (5688:8): [True: 1, False: 15]
  ------------------
 5689|      1|				zend_execute_data *old = start_fake_frame(call, NULL);
 5690|      1|				zend_result ret = zval_update_constant_ex(&default_value, fbc->common.scope);
 5691|      1|				end_fake_frame(call, old);
 5692|      1|				if (ret == FAILURE) {
  ------------------
  |  Branch (5692:9): [True: 0, False: 1]
  ------------------
 5693|      0|					return FAILURE;
 5694|      0|				}
 5695|      1|			}
 5696|       |
 5697|     16|			ZVAL_COPY_VALUE(arg, &default_value);
  ------------------
  |  | 1416|     16|	do {												\
  |  | 1417|     16|		zval *_z1 = (z);								\
  |  | 1418|     16|		const zval *_z2 = (v);							\
  |  | 1419|     16|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     16|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     16|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     16|	do {												\
  |  |  |  | 1408|     16|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     16|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 5698|     16|			if (ZEND_ARG_SEND_MODE(arg_info) & ZEND_SEND_BY_REF) {
  ------------------
  |  | 1130|     16|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|     16|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|     16|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     16|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (ZEND_ARG_SEND_MODE(arg_info) & ZEND_SEND_BY_REF) {
  ------------------
  |  | 1117|     16|#define ZEND_SEND_BY_REF     1u
  ------------------
  |  Branch (5698:8): [True: 0, False: 16]
  ------------------
 5699|      0|				ZVAL_NEW_REF(arg, arg);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5700|      0|			}
 5701|     16|		}
 5702|     32|	}
 5703|       |
 5704|     32|	return SUCCESS;
 5705|     36|}
zend_free_extra_named_params:
 5708|      8|{
 5709|       |	/* Extra named params may be shared. */
 5710|      8|	zend_array_release(extra_named_params);
 5711|      8|}
zend_get_user_opcode_handler:
 5934|    512|{
 5935|    512|	return zend_user_opcode_handlers[opcode];
 5936|    512|}
zend_return_unwrap_ref:
 5959|     70|{
 5960|     70|	if (!return_value || !Z_ISREF_P(return_value)) {
  ------------------
  |  |  964|     70|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     70|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     70|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     70|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5960:6): [True: 0, False: 70]
  |  Branch (5960:23): [True: 0, False: 70]
  ------------------
 5961|      0|		return;
 5962|      0|	}
 5963|       |
 5964|     70|	zend_execute_data *prev_ex = EX(prev_execute_data);
  ------------------
  |  |  730|     70|#define EX(element) 			((execute_data)->element)
  ------------------
 5965|     70|	if (!prev_ex || !prev_ex->func || !ZEND_USER_CODE(prev_ex->func->type)) {
  ------------------
  |  | 1081|     70|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (5965:6): [True: 0, False: 70]
  |  Branch (5965:18): [True: 0, False: 70]
  |  Branch (5965:36): [True: 12, False: 58]
  ------------------
 5966|     12|		return;
 5967|     12|	}
 5968|       |
 5969|     58|	const zend_op *do_opline = prev_ex->opline;
 5970|     58|	if (do_opline->result_type != IS_TMP_VAR) {
  ------------------
  |  |  865|     58|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (5970:6): [True: 24, False: 34]
  ------------------
 5971|     24|		return;
 5972|     24|	}
 5973|       |
 5974|     34|	if (do_opline->opcode != ZEND_DO_FCALL
  ------------------
  |  |  183|     68|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (5974:6): [True: 6, False: 28]
  ------------------
 5975|      6|	 && do_opline->opcode != ZEND_DO_FCALL_BY_NAME
  ------------------
  |  |  253|     40|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (5975:6): [True: 6, False: 0]
  ------------------
 5976|      6|	 && do_opline->opcode != ZEND_DO_ICALL
  ------------------
  |  |  251|     40|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (5976:6): [True: 6, False: 0]
  ------------------
 5977|      6|	 && do_opline->opcode != ZEND_DO_UCALL) {
  ------------------
  |  |  252|      6|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (5977:6): [True: 6, False: 0]
  ------------------
 5978|      6|		return;
 5979|      6|	}
 5980|       |
 5981|     28|	zend_unwrap_reference(return_value);
 5982|     28|}
zend_execute.c:zif_pass:
  135|     13|{
  136|     13|}
zend_execute.c:zend_verify_type_error_common:
  687|     42|{
  688|     42|	*fname = ZSTR_VAL(zf->common.function_name);
  ------------------
  |  |   67|     42|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  689|     42|	if (zf->common.scope) {
  ------------------
  |  Branch (689:6): [True: 8, False: 34]
  ------------------
  690|      8|		*fsep =  "::";
  691|      8|		*fclass = ZSTR_VAL(zf->common.scope->name);
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  692|     34|	} else {
  693|     34|		*fsep =  "";
  694|     34|		*fclass = "";
  695|     34|	}
  696|       |
  697|     42|	*need_msg = zend_type_to_string_resolved(arg_info->type, zf->common.scope);
  698|       |
  699|     42|	if (value) {
  ------------------
  |  Branch (699:6): [True: 38, False: 4]
  ------------------
  700|     38|		*given_kind = zend_zval_value_name(value);
  701|     38|	} else {
  702|      4|		*given_kind = "none";
  703|      4|	}
  704|     42|}
zend_execute.c:zend_verify_weak_scalar_type_hint_no_sideeffect:
  799|    482|{
  800|    482|	zend_long lval;
  801|       |
  802|       |	/* Pass (uint32_t)-1 as arg_num to indicate to ZPP not to emit any deprecation notice,
  803|       |	 * this is needed because the version with side effects also uses 0 (e.g. for typed properties) */
  804|    482|	if ((type_mask & MAY_BE_LONG) && zend_parse_arg_long_weak(arg, &lval, (uint32_t)-1)) {
  ------------------
  |  |   28|    482|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|    482|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (804:6): [True: 26, False: 456]
  |  Branch (804:35): [True: 18, False: 8]
  ------------------
  805|     18|		return true;
  806|     18|	}
  807|    464|	if ((type_mask & MAY_BE_DOUBLE) && !zend_isnan(zend_parse_arg_double_weak(arg, (uint32_t)-1))) {
  ------------------
  |  |   29|    464|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|    464|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_DOUBLE) && !zend_isnan(zend_parse_arg_double_weak(arg, (uint32_t)-1))) {
  ------------------
  |  |  536|     10|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (807:6): [True: 10, False: 454]
  |  Branch (807:37): [True: 8, False: 2]
  ------------------
  808|      8|		return true;
  809|      8|	}
  810|    456|	if ((type_mask & MAY_BE_STRING) && can_convert_to_string(arg)) {
  ------------------
  |  |   30|    456|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|    456|#define IS_STRING					6
  |  |  ------------------
  ------------------
  |  Branch (810:6): [True: 411, False: 45]
  |  Branch (810:37): [True: 403, False: 8]
  ------------------
  811|    403|		return true;
  812|    403|	}
  813|     53|	if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL && zend_parse_arg_bool_weak(arg, (uint32_t)-1) != ZPP_PARSE_BOOL_STATUS_ERROR) {
  ------------------
  |  |   27|     53|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|     53|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     53|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|     53|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|     53|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL && zend_parse_arg_bool_weak(arg, (uint32_t)-1) != ZPP_PARSE_BOOL_STATUS_ERROR) {
  ------------------
  |  |   27|    106|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|     53|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     53|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|     53|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|     53|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (813:6): [True: 22, False: 31]
  |  Branch (813:50): [True: 22, False: 0]
  ------------------
  814|     22|		return true;
  815|     22|	}
  816|     31|	return false;
  817|     53|}
zend_execute.c:can_convert_to_string:
  786|    411|static bool can_convert_to_string(const zval *zv) {
  787|       |	/* We don't call cast_object here, because this check must be side-effect free. As this
  788|       |	 * is only used for a sanity check of arginfo/zpp consistency, it's okay if we accept
  789|       |	 * more than actually allowed here. */
  790|    411|	if (Z_TYPE_P(zv) == IS_OBJECT) {
  ------------------
  |  |  669|    411|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    411|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_OBJECT) {
  ------------------
  |  |  614|    411|#define IS_OBJECT					8
  ------------------
  |  Branch (790:6): [True: 8, False: 403]
  ------------------
  791|      8|		return Z_OBJ_HT_P(zv)->cast_object != zend_std_cast_object_tostring
  ------------------
  |  | 1003|      8|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      8|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (791:10): [True: 0, False: 8]
  ------------------
  792|      8|			|| Z_OBJCE_P(zv)->__tostring;
  ------------------
  |  | 1012|      8|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      8|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (792:7): [True: 2, False: 6]
  ------------------
  793|      8|	}
  794|    403|	return Z_TYPE_P(zv) <= IS_STRING;
  ------------------
  |  |  669|    403|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    403|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	return Z_TYPE_P(zv) <= IS_STRING;
  ------------------
  |  |  612|    403|#define IS_STRING					6
  ------------------
  795|    411|}
zend_execute.c:zend_verify_weak_scalar_type_hint:
  733|     62|{
  734|     62|	zend_long lval;
  735|     62|	double dval;
  736|       |
  737|       |	/* Type preference order: int -> float -> string -> bool */
  738|     62|	if (type_mask & MAY_BE_LONG) {
  ------------------
  |  |   28|     62|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|     62|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (738:6): [True: 21, False: 41]
  ------------------
  739|       |		/* For an int|float union type and string value,
  740|       |		 * determine chosen type by is_numeric_string() semantics. */
  741|     21|		if ((type_mask & MAY_BE_DOUBLE) && Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |   29|     21|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|     21|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              		if ((type_mask & MAY_BE_DOUBLE) && Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((type_mask & MAY_BE_DOUBLE) && Z_TYPE_P(arg) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (741:7): [True: 0, False: 21]
  |  Branch (741:38): [True: 0, False: 0]
  ------------------
  742|      0|			uint8_t type = is_numeric_str_function(Z_STR_P(arg), &lval, &dval);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  743|      0|			if (type == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (743:8): [True: 0, False: 0]
  ------------------
  744|      0|				zend_string_release(Z_STR_P(arg));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  745|      0|				ZVAL_LONG(arg, lval);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  746|      0|				return true;
  747|      0|			}
  748|      0|			if (type == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (748:8): [True: 0, False: 0]
  ------------------
  749|      0|				zend_string_release(Z_STR_P(arg));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  750|      0|				ZVAL_DOUBLE(arg, dval);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  751|      0|				return true;
  752|      0|			}
  753|     21|		} else if (zend_parse_arg_long_weak(arg, &lval, 0)) {
  ------------------
  |  Branch (753:14): [True: 13, False: 8]
  ------------------
  754|     13|			zval_ptr_dtor(arg);
  755|     13|			ZVAL_LONG(arg, lval);
  ------------------
  |  | 1076|     13|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     13|		zval *__z = (z);				\
  |  | 1078|     13|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     13|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     13|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     13|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     13|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  756|     13|			return true;
  757|     13|		} else if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  758|      0|			return false;
  759|      0|		}
  760|     21|	}
  761|     49|	if (type_mask & MAY_BE_DOUBLE) {
  ------------------
  |  |   29|     49|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|     49|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (761:6): [True: 2, False: 47]
  ------------------
  762|      2|		dval = zend_parse_arg_double_weak(arg, 0);
  763|      2|		if (EXPECTED(!zend_isnan(dval))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  764|      2|			zval_ptr_dtor(arg);
  765|      2|			ZVAL_DOUBLE(arg, dval);
  ------------------
  |  | 1082|      2|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      2|		zval *__z = (z);				\
  |  | 1084|      2|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      2|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      2|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  766|      2|			return true;
  767|      2|		}
  768|      2|	}
  769|     47|	if ((type_mask & MAY_BE_STRING) && zend_parse_arg_str_weak(arg, 0)) {
  ------------------
  |  |   30|     47|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|     47|#define IS_STRING					6
  |  |  ------------------
  ------------------
  |  Branch (769:6): [True: 12, False: 35]
  |  Branch (769:37): [True: 12, False: 0]
  ------------------
  770|       |		/* on success "arg" is converted to IS_STRING */
  771|     12|		return true;
  772|     12|	}
  773|     35|	if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL) {
  ------------------
  |  |   27|     35|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|     35|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     35|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|     35|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|     35|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL) {
  ------------------
  |  |   27|     35|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|     35|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     35|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|     35|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|     35|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (773:6): [True: 0, False: 35]
  ------------------
  774|      0|		zpp_parse_bool_status bval = zend_parse_arg_bool_weak(arg, 0);
  775|      0|		if (UNEXPECTED(bval == ZPP_PARSE_BOOL_STATUS_ERROR)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  776|      0|			return false;
  777|      0|		}
  778|      0|		zval_ptr_dtor(arg);
  779|      0|		ZVAL_BOOL(arg, bval);
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  780|      0|		return true;
  781|      0|	}
  782|     35|	return false;
  783|     35|}
zend_execute.c:i_zend_verify_property_type:
 1060|  8.40k|{
 1061|  8.40k|	if (i_zend_check_property_type(info, property, strict)) {
  ------------------
  |  Branch (1061:6): [True: 8.40k, False: 7]
  ------------------
 1062|  8.40k|		return 1;
 1063|  8.40k|	}
 1064|       |
 1065|      7|	zend_verify_property_type_error(info, property);
 1066|      7|	return 0;
 1067|  8.40k|}
zend_execute.c:zend_check_type_slow:
 1157|  1.72k|{
 1158|  1.72k|	if (ZEND_TYPE_IS_COMPLEX(*type) && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  157|  3.44k|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|  1.72k|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|  1.72k|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.72k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|  1.72k|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 131, False: 1.59k]
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_COMPLEX(*type) && EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
  ------------------
  |  |  456|    131|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 115, False: 16]
  |  |  ------------------
  ------------------
 1159|    115|		zend_class_entry *ce;
 1160|    115|		if (UNEXPECTED(ZEND_TYPE_HAS_LIST(*type))) {
  ------------------
  |  |  457|    115|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 115]
  |  |  ------------------
  ------------------
 1161|      0|			if (ZEND_TYPE_IS_INTERSECTION(*type)) {
  ------------------
  |  |  172|      0|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      0|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1162|      0|				return zend_check_intersection_type_from_list(ZEND_TYPE_LIST(*type), Z_OBJCE_P(arg));
  ------------------
  |  |  190|      0|	((zend_type_list *) (t).ptr)
  ------------------
              				return zend_check_intersection_type_from_list(ZEND_TYPE_LIST(*type), Z_OBJCE_P(arg));
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1163|      0|			} else {
 1164|      0|				const zend_type *list_type;
 1165|      0|				ZEND_TYPE_LIST_FOREACH(ZEND_TYPE_LIST(*type), list_type) {
  ------------------
  |  |  196|      0|#define ZEND_TYPE_LIST_FOREACH(list, type_ptr) do { \
  |  |  197|      0|	const zend_type *_list = (list)->types; \
  |  |  198|      0|	const zend_type *_end = _list + (list)->num_types; \
  |  |  199|      0|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (199:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  200|      0|		type_ptr = _list;
  ------------------
 1166|      0|					if (ZEND_TYPE_IS_INTERSECTION(*list_type)) {
  ------------------
  |  |  172|      0|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      0|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1167|      0|						if (zend_check_intersection_type_from_list(ZEND_TYPE_LIST(*list_type), Z_OBJCE_P(arg))) {
  ------------------
  |  |  190|      0|	((zend_type_list *) (t).ptr)
  ------------------
              						if (zend_check_intersection_type_from_list(ZEND_TYPE_LIST(*list_type), Z_OBJCE_P(arg))) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1167:11): [True: 0, False: 0]
  ------------------
 1168|      0|							return true;
 1169|      0|						}
 1170|      0|					} else {
 1171|      0|						ZEND_ASSERT(!ZEND_TYPE_HAS_LIST(*list_type));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1171:7): [True: 0, False: 0]
  |  Branch (1171:7): [True: 0, False: 0]
  ------------------
 1172|      0|						ce = zend_fetch_ce_from_type(list_type);
 1173|       |						/* Instance of a single type part of a union is sufficient to pass the type check */
 1174|      0|						if (ce && instanceof_function(Z_OBJCE_P(arg), ce)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1174:11): [True: 0, False: 0]
  |  Branch (1174:17): [True: 0, False: 0]
  ------------------
 1175|      0|							return true;
 1176|      0|						}
 1177|      0|					}
 1178|      0|				} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|      0|	} \
  |  |  210|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1179|      0|			}
 1180|    115|		} else {
 1181|    115|			ce = zend_fetch_ce_from_type(type);
 1182|       |			/* If we have a CE we check if it satisfies the type constraint,
 1183|       |			 * otherwise it will check if a standard type satisfies it. */
 1184|    115|			if (ce && instanceof_function(Z_OBJCE_P(arg), ce)) {
  ------------------
  |  | 1012|    114|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|    114|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    114|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1184:8): [True: 114, False: 1]
  |  Branch (1184:14): [True: 111, False: 3]
  ------------------
 1185|    111|				return true;
 1186|    111|			}
 1187|    115|		}
 1188|    115|	}
 1189|       |
 1190|  1.61k|	const uint32_t type_mask = ZEND_TYPE_FULL_MASK(*type);
  ------------------
  |  |  261|  1.61k|	((t).type_mask)
  ------------------
 1191|  1.61k|	if ((type_mask & MAY_BE_CALLABLE) &&
  ------------------
  |  |   39|  1.61k|#define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
  |  |  ------------------
  |  |  |  |  621|  1.61k|#define IS_CALLABLE					12
  |  |  ------------------
  ------------------
  |  Branch (1191:6): [True: 602, False: 1.01k]
  ------------------
 1192|    602|		zend_is_callable(arg, is_internal ? IS_CALLABLE_SUPPRESS_DEPRECATIONS : 0, NULL)) {
  ------------------
  |  |  413|    592|#define IS_CALLABLE_SUPPRESS_DEPRECATIONS (1<<1)
  ------------------
  |  Branch (1192:3): [True: 594, False: 8]
  |  Branch (1192:25): [True: 592, False: 10]
  ------------------
 1193|    594|		return 1;
 1194|    594|	}
 1195|  1.01k|	if ((type_mask & MAY_BE_STATIC) && zend_value_instanceof_static(arg)) {
  ------------------
  |  |   42|  1.01k|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|  1.01k|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (1195:6): [True: 6, False: 1.01k]
  |  Branch (1195:37): [True: 6, False: 0]
  ------------------
 1196|      6|		return 1;
 1197|      6|	}
 1198|  1.01k|	if (ref && ZEND_REF_HAS_TYPE_SOURCES(ref)) {
  ------------------
  |  |  123|      8|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      8|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (1198:6): [True: 8, False: 1.00k]
  ------------------
 1199|       |		/* We cannot have conversions for typed refs. */
 1200|      0|		return 0;
 1201|      0|	}
 1202|  1.01k|	if (is_internal && is_return_type) {
  ------------------
  |  Branch (1202:6): [True: 965, False: 47]
  |  Branch (1202:21): [True: 0, False: 965]
  ------------------
 1203|       |		/* For internal returns, the type has to match exactly, because we're not
 1204|       |		 * going to check it for non-debug builds, and there will be no chance to
 1205|       |		 * apply coercions. */
 1206|      0|		return 0;
 1207|      0|	}
 1208|       |
 1209|  1.01k|	return zend_verify_scalar_type_hint(type_mask, arg,
 1210|  1.01k|		is_return_type ? ZEND_RET_USES_STRICT_TYPES() : ZEND_ARG_USES_STRICT_TYPES(),
  ------------------
  |  |  753|     15|	ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data))
  |  |  ------------------
  |  |  |  |  737|     15|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     15|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		is_return_type ? ZEND_RET_USES_STRICT_TYPES() : ZEND_ARG_USES_STRICT_TYPES(),
  ------------------
  |  |  743|  2.00k|	(EG(current_execute_data)->prev_execute_data && \
  |  |  ------------------
  |  |  |  |   45|    997|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (743:3): [True: 996, False: 1]
  |  |  ------------------
  |  |  744|    997|	 EG(current_execute_data)->prev_execute_data->func && \
  |  |  ------------------
  |  |  |  |   45|    996|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (744:3): [True: 996, False: 0]
  |  |  ------------------
  |  |  745|  2.00k|	 ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data)->prev_execute_data))
  |  |  ------------------
  |  |  |  |  737|    996|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    996|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (737:2): [True: 2, False: 994]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1210:3): [True: 15, False: 997]
  ------------------
 1211|  1.01k|		is_internal);
 1212|       |
 1213|       |	/* Special handling for IS_VOID is not necessary (for return types),
 1214|       |	 * because this case is already checked at compile-time. */
 1215|  1.01k|}
zend_execute.c:zend_fetch_ce_from_type:
 1115|    115|{
 1116|    115|	zend_string *name = ZEND_TYPE_NAME(*type);
  ------------------
  |  |  184|    115|	((zend_string *) (t).ptr)
  ------------------
 1117|    115|	zend_class_entry *ce;
 1118|    115|	if (ZSTR_HAS_CE_CACHE(name)) {
  ------------------
  |  |  862|    115|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|    115|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    115|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|    115|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|    115|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 96, False: 19]
  |  |  ------------------
  ------------------
 1119|     96|		ce = ZSTR_GET_CE_CACHE(name);
  ------------------
  |  |  863|     96|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|     96|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|     96|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|     96|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 96, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|     96|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|     96|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|     96|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 96]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1120|     96|		if (!ce) {
  ------------------
  |  Branch (1120:7): [True: 55, False: 41]
  ------------------
 1121|     55|			ce = zend_lookup_class_ex(name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|     55|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
 1122|     55|			if (UNEXPECTED(!ce)) {
  ------------------
  |  |  457|     55|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 55]
  |  |  ------------------
  ------------------
 1123|       |				/* Cannot resolve */
 1124|      0|				return NULL;
 1125|      0|			}
 1126|     55|		}
 1127|     96|	} else {
 1128|     19|		ce = zend_fetch_class(name,
 1129|     19|			ZEND_FETCH_CLASS_AUTO | ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1046|     19|#define ZEND_FETCH_CLASS_AUTO		4
  ------------------
              			ZEND_FETCH_CLASS_AUTO | ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1050|     19|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
              			ZEND_FETCH_CLASS_AUTO | ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1051|     19|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
 1130|     19|		if (UNEXPECTED(!ce)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 18]
  |  |  ------------------
  ------------------
 1131|      1|			return NULL;
 1132|      1|		}
 1133|     19|	}
 1134|    114|	return ce;
 1135|    115|}
zend_execute.c:zend_value_instanceof_static:
 1101|      6|static zend_always_inline bool zend_value_instanceof_static(const zval *zv) {
 1102|      6|	if (Z_TYPE_P(zv) != IS_OBJECT) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) != IS_OBJECT) {
  ------------------
  |  |  614|      6|#define IS_OBJECT					8
  ------------------
  |  Branch (1102:6): [True: 0, False: 6]
  ------------------
 1103|      0|		return 0;
 1104|      0|	}
 1105|       |
 1106|      6|	zend_class_entry *called_scope = zend_get_called_scope(EG(current_execute_data));
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
 1107|      6|	if (!called_scope) {
  ------------------
  |  Branch (1107:6): [True: 0, False: 6]
  ------------------
 1108|      0|		return 0;
 1109|      0|	}
 1110|      6|	return instanceof_function(Z_OBJCE_P(zv), called_scope);
  ------------------
  |  | 1012|      6|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      6|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1111|      6|}
zend_execute.c:zend_verify_internal_arg_types:
 1271|  19.5k|{
 1272|  19.5k|	uint32_t i;
 1273|  19.5k|	uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|  19.5k|	(call)->This.u2.num_args
  ------------------
 1274|  19.5k|	zval *arg = ZEND_CALL_ARG(call, 1);
  ------------------
  |  |  728|  19.5k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|  19.5k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  19.5k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1275|       |
 1276|  41.2k|	for (i = 0; i < num_args; ++i) {
  ------------------
  |  Branch (1276:14): [True: 21.7k, False: 19.5k]
  ------------------
 1277|  21.7k|		zend_arg_info *cur_arg_info;
 1278|  21.7k|		if (EXPECTED(i < fbc->common.num_args)) {
  ------------------
  |  |  456|  21.7k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 21.5k, False: 214]
  |  |  ------------------
  ------------------
 1279|  21.5k|			cur_arg_info = &fbc->common.arg_info[i];
 1280|  21.5k|		} else if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_VARIADIC)) {
  ------------------
  |  |  457|    214|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 214, False: 0]
  |  |  ------------------
  ------------------
 1281|    214|			cur_arg_info = &fbc->common.arg_info[fbc->common.num_args];
 1282|    214|		} else {
 1283|      0|			break;
 1284|      0|		}
 1285|       |
 1286|  21.7k|		if (ZEND_TYPE_IS_SET(cur_arg_info->type)
  ------------------
  |  |  152|  43.5k|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|  21.7k|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 21.7k, False: 37]
  |  |  ------------------
  ------------------
 1287|  21.7k|				&& UNEXPECTED(!zend_check_type(&cur_arg_info->type, arg, false, /* is_internal */ true))) {
  ------------------
  |  |  457|  21.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 45, False: 21.6k]
  |  |  ------------------
  ------------------
 1288|     45|			return 0;
 1289|     45|		}
 1290|  21.7k|		arg++;
 1291|  21.7k|	}
 1292|  19.5k|	return 1;
 1293|  19.5k|}
zend_execute.c:zend_check_type:
 1219|  38.8k|{
 1220|  38.8k|	const zend_reference *ref = NULL;
 1221|  38.8k|	ZEND_ASSERT(ZEND_TYPE_IS_SET(*type));
  ------------------
  |  |  112|  38.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1221:2): [True: 0, False: 38.8k]
  |  Branch (1221:2): [True: 38.8k, False: 0]
  ------------------
 1222|       |
 1223|  38.8k|	if (UNEXPECTED(Z_ISREF_P(arg))) {
  ------------------
  |  |  457|  38.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 420, False: 38.4k]
  |  |  ------------------
  ------------------
 1224|    420|		ref = Z_REF_P(arg);
  ------------------
  |  | 1030|    420|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|    420|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 1225|    420|		arg = Z_REFVAL_P(arg);
  ------------------
  |  | 1033|    420|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    420|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    420|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1226|    420|	}
 1227|       |
 1228|  38.8k|	if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(*type, Z_TYPE_P(arg)))) {
  ------------------
  |  |  456|  38.8k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 37.1k, False: 1.69k]
  |  |  ------------------
  ------------------
 1229|  37.1k|		return 1;
 1230|  37.1k|	}
 1231|       |
 1232|  1.69k|	return zend_check_type_slow(type, arg, ref, is_return_type, is_internal);
 1233|  38.8k|}
zend_execute.c:zend_check_class_constant_type:
 1510|      5|{
 1511|      5|	ZEND_ASSERT(!Z_ISREF_P(constant));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1511:2): [True: 0, False: 5]
  |  Branch (1511:2): [True: 5, False: 0]
  ------------------
 1512|      5|	if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(c->type, Z_TYPE_P(constant)))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1513|      0|		return 1;
 1514|      0|	}
 1515|       |
 1516|      5|	if (((ZEND_TYPE_PURE_MASK(c->type) & MAY_BE_STATIC) || ZEND_TYPE_IS_COMPLEX(c->type)) && Z_TYPE_P(constant) == IS_OBJECT
  ------------------
  |  |  264|      5|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|      5|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (((ZEND_TYPE_PURE_MASK(c->type) & MAY_BE_STATIC) || ZEND_TYPE_IS_COMPLEX(c->type)) && Z_TYPE_P(constant) == IS_OBJECT
  ------------------
  |  |   42|      5|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|      5|#define IS_STATIC					15
  |  |  ------------------
  ------------------
              	if (((ZEND_TYPE_PURE_MASK(c->type) & MAY_BE_STATIC) || ZEND_TYPE_IS_COMPLEX(c->type)) && Z_TYPE_P(constant) == IS_OBJECT
  ------------------
  |  |  157|      2|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|      2|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      2|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      2|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      2|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
              	if (((ZEND_TYPE_PURE_MASK(c->type) & MAY_BE_STATIC) || ZEND_TYPE_IS_COMPLEX(c->type)) && Z_TYPE_P(constant) == IS_OBJECT
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (((ZEND_TYPE_PURE_MASK(c->type) & MAY_BE_STATIC) || ZEND_TYPE_IS_COMPLEX(c->type)) && Z_TYPE_P(constant) == IS_OBJECT
  ------------------
  |  |  614|      9|#define IS_OBJECT					8
  ------------------
  |  Branch (1516:7): [True: 3, False: 2]
  |  Branch (1516:91): [True: 4, False: 0]
  ------------------
 1517|      4|		&& zend_check_and_resolve_property_or_class_constant_class_type(c->ce, c->type, Z_OBJCE_P(constant))) {
  ------------------
  |  | 1012|      4|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      4|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1517:6): [True: 2, False: 2]
  ------------------
 1518|      2|		return 1;
 1519|      2|	}
 1520|       |
 1521|      3|	uint32_t type_mask = ZEND_TYPE_FULL_MASK(c->type);
  ------------------
  |  |  261|      3|	((t).type_mask)
  ------------------
 1522|      3|	ZEND_ASSERT(!(type_mask & (MAY_BE_CALLABLE|MAY_BE_NEVER|MAY_BE_VOID)));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1522:2): [True: 0, False: 3]
  |  Branch (1522:2): [True: 3, False: 0]
  ------------------
 1523|      3|	return zend_verify_scalar_type_hint(type_mask, constant, true, false);
 1524|      3|}
zend_execute.c:zend_check_and_resolve_property_or_class_constant_class_type:
 1004|  6.87k|	const zend_class_entry *scope, const zend_type member_type, const zend_class_entry *value_ce) {
 1005|  6.87k|	if (ZEND_TYPE_HAS_LIST(member_type)) {
  ------------------
  |  |  166|  6.87k|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|  6.87k|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 2, False: 6.87k]
  |  |  ------------------
  ------------------
 1006|      2|		if (ZEND_TYPE_IS_INTERSECTION(member_type)) {
  ------------------
  |  |  172|      2|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      2|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1007|      0|			return zend_check_intersection_for_property_or_class_constant_class_type(
 1008|      0|				scope, ZEND_TYPE_LIST(member_type), value_ce);
  ------------------
  |  |  190|      0|	((zend_type_list *) (t).ptr)
  ------------------
 1009|      2|		} else {
 1010|      2|			const zend_type *list_type;
 1011|      6|			ZEND_TYPE_LIST_FOREACH(ZEND_TYPE_LIST(member_type), list_type) {
  ------------------
  |  |  196|      2|#define ZEND_TYPE_LIST_FOREACH(list, type_ptr) do { \
  |  |  197|      2|	const zend_type *_list = (list)->types; \
  |  |  198|      2|	const zend_type *_end = _list + (list)->num_types; \
  |  |  199|      5|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (199:9): [True: 4, False: 1]
  |  |  ------------------
  |  |  200|      4|		type_ptr = _list;
  ------------------
 1012|      6|				if (ZEND_TYPE_IS_INTERSECTION(*list_type)) {
  ------------------
  |  |  172|      4|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      4|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1013|      0|					if (zend_check_intersection_for_property_or_class_constant_class_type(
  ------------------
  |  Branch (1013:10): [True: 0, False: 0]
  ------------------
 1014|      0|							scope, ZEND_TYPE_LIST(*list_type), value_ce)) {
  ------------------
  |  |  190|      0|	((zend_type_list *) (t).ptr)
  ------------------
 1015|      0|						return true;
 1016|      0|					}
 1017|      0|					continue;
 1018|      0|				}
 1019|      4|				ZEND_ASSERT(!ZEND_TYPE_HAS_LIST(*list_type));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1019:5): [True: 0, False: 4]
  |  Branch (1019:5): [True: 4, False: 0]
  ------------------
 1020|      4|				const zend_class_entry *ce = zend_ce_from_type(scope, list_type);
 1021|      4|				if (ce && instanceof_function(value_ce, ce)) {
  ------------------
  |  Branch (1021:9): [True: 2, False: 2]
  |  Branch (1021:15): [True: 1, False: 1]
  ------------------
 1022|      1|					return true;
 1023|      1|				}
 1024|      4|			} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|      4|	} \
  |  |  210|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1025|       |
 1026|      1|			if ((ZEND_TYPE_PURE_MASK(member_type) & MAY_BE_STATIC)) {
  ------------------
  |  |  264|      1|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|      1|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              			if ((ZEND_TYPE_PURE_MASK(member_type) & MAY_BE_STATIC)) {
  ------------------
  |  |   42|      1|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|      1|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (1026:8): [True: 0, False: 1]
  ------------------
 1027|      0|				return value_ce == scope;
 1028|      0|			}
 1029|       |
 1030|      1|			return false;
 1031|      1|		}
 1032|  6.87k|	} else if ((ZEND_TYPE_PURE_MASK(member_type) & MAY_BE_STATIC) && value_ce == scope) {
  ------------------
  |  |  264|  6.87k|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|  6.87k|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	} else if ((ZEND_TYPE_PURE_MASK(member_type) & MAY_BE_STATIC) && value_ce == scope) {
  ------------------
  |  |   42|  6.87k|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|  6.87k|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (1032:13): [True: 2, False: 6.87k]
  |  Branch (1032:67): [True: 0, False: 2]
  ------------------
 1033|      0|		return true;
 1034|  6.87k|	} else if (ZEND_TYPE_HAS_NAME(member_type)) {
  ------------------
  |  |  160|  6.87k|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|  6.87k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 6.87k, False: 1]
  |  |  ------------------
  ------------------
 1035|  6.87k|		const zend_class_entry *ce = zend_ce_from_type(scope, &member_type);
 1036|  6.87k|		return ce && instanceof_function(value_ce, ce);
  ------------------
  |  Branch (1036:10): [True: 6.87k, False: 3]
  |  Branch (1036:16): [True: 6.87k, False: 0]
  ------------------
 1037|  6.87k|	}
 1038|       |
 1039|      1|	return false;
 1040|  6.87k|}
zend_execute.c:zend_ce_from_type:
  975|  6.88k|		const zend_class_entry *scope, const zend_type *type) {
  976|  6.88k|	ZEND_ASSERT(ZEND_TYPE_HAS_NAME(*type));
  ------------------
  |  |  112|  6.88k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (976:2): [True: 0, False: 6.88k]
  |  Branch (976:2): [True: 6.88k, False: 0]
  ------------------
  977|  6.88k|	zend_string *name = ZEND_TYPE_NAME(*type);
  ------------------
  |  |  184|  6.88k|	((zend_string *) (t).ptr)
  ------------------
  978|  6.88k|	if (ZSTR_HAS_CE_CACHE(name)) {
  ------------------
  |  |  862|  6.88k|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|  6.88k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  6.88k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|  6.88k|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|  6.88k|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 6.86k, False: 20]
  |  |  ------------------
  ------------------
  979|  6.86k|		zend_class_entry *ce = ZSTR_GET_CE_CACHE(name);
  ------------------
  |  |  863|  6.86k|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|  6.86k|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|  6.86k|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|  6.86k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 6.86k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|  6.86k|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|  6.86k|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|  6.86k|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 6.86k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  980|  6.86k|		if (!ce) {
  ------------------
  |  Branch (980:7): [True: 28, False: 6.83k]
  ------------------
  981|     28|			ce = zend_lookup_class_ex(name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|     28|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  982|     28|		}
  983|  6.86k|		return ce;
  984|  6.86k|	}
  985|     20|	return resolve_single_class_type(name, scope);
  986|  6.88k|}
zend_execute.c:resolve_single_class_type:
  964|     20|static const zend_class_entry *resolve_single_class_type(zend_string *name, const zend_class_entry *self_ce) {
  965|     20|	if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  |  401|     20|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 14, False: 6]
  |  |  |  Branch (401:35): [True: 0, False: 14]
  |  |  ------------------
  ------------------
  966|      0|		return self_ce;
  967|     20|	} else if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  |  401|     20|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 1, False: 19]
  |  |  |  Branch (401:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  968|      0|		return self_ce->parent;
  969|     20|	} else {
  970|     20|		return zend_lookup_class_ex(name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|     20|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  971|     20|	}
  972|     20|}
zend_execute.c:zend_verify_class_constant_type_error:
  842|      3|{
  843|      3|	zend_string *type_str = zend_type_to_string(c->type);
  844|       |
  845|      3|	zend_type_error("Cannot assign %s to class constant %s::%s of type %s",
  846|      3|		zend_zval_type_name(constant), ZSTR_VAL(c->ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_zval_type_name(constant), ZSTR_VAL(c->ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_zval_type_name(constant), ZSTR_VAL(c->ce->name), ZSTR_VAL(name), ZSTR_VAL(type_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  847|       |
  848|      3|	zend_string_release(type_str);
  849|      3|}
zend_execute.c:get_deprecation_suffix_from_attribute:
 1804|     52|{
 1805|     52|	*message_suffix = ZSTR_EMPTY_ALLOC();
 1806|       |
 1807|     52|	if (!attributes) {
  ------------------
  |  Branch (1807:6): [True: 0, False: 52]
  ------------------
 1808|      0|		return SUCCESS;
 1809|      0|	}
 1810|       |
 1811|     52|	zend_attribute *deprecated = zend_get_attribute_str(attributes, "deprecated", sizeof("deprecated")-1);
 1812|       |
 1813|     52|	if (!deprecated) {
  ------------------
  |  Branch (1813:6): [True: 0, False: 52]
  ------------------
 1814|      0|		return SUCCESS;
 1815|      0|	}
 1816|       |
 1817|     52|	if (deprecated->argc == 0) {
  ------------------
  |  Branch (1817:6): [True: 9, False: 43]
  ------------------
 1818|      9|		return SUCCESS;
 1819|      9|	}
 1820|       |
 1821|     43|	zend_result result = FAILURE;
 1822|       |
 1823|     43|	zend_string *message = ZSTR_EMPTY_ALLOC();
 1824|     43|	zend_string *since = ZSTR_EMPTY_ALLOC();
 1825|       |
 1826|     43|	zval obj;
 1827|     43|	ZVAL_UNDEF(&obj);
  ------------------
  |  | 1055|     43|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     43|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     43|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
 1828|     43|	zval *z;
 1829|       |
 1830|       |	/* Construct the Deprecated object to correctly handle parameter processing. */
 1831|     43|	if (FAILURE == zend_get_attribute_object(&obj, zend_ce_deprecated, deprecated, scope, NULL)) {
  ------------------
  |  Branch (1831:6): [True: 3, False: 40]
  ------------------
 1832|      3|		goto out;
 1833|      3|	}
 1834|       |
 1835|       |	/* Extract the $message property. */
 1836|     40|	z = zend_read_property_ex(zend_ce_deprecated, Z_OBJ_P(&obj), ZSTR_KNOWN(ZEND_STR_MESSAGE), false, NULL);
  ------------------
  |  | 1000|     40|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     40|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1837|     40|	ZEND_ASSERT(z != &EG(uninitialized_zval));
  ------------------
  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1837:2): [True: 0, False: 40]
  |  Branch (1837:2): [True: 40, False: 0]
  ------------------
 1838|     40|	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  669|     40|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     40|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  612|     40|#define IS_STRING					6
  ------------------
  |  Branch (1838:6): [True: 26, False: 14]
  ------------------
 1839|     26|		message = Z_STR_P(z);
  ------------------
  |  |  982|     26|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     26|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1840|     26|	}
 1841|       |
 1842|       |	/* Extract the $since property. */
 1843|     40|	z = zend_read_property_ex(zend_ce_deprecated, Z_OBJ_P(&obj), ZSTR_KNOWN(ZEND_STR_SINCE), false, NULL);
  ------------------
  |  | 1000|     40|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     40|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1844|     40|	ZEND_ASSERT(z != &EG(uninitialized_zval));
  ------------------
  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1844:2): [True: 0, False: 40]
  |  Branch (1844:2): [True: 40, False: 0]
  ------------------
 1845|     40|	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  669|     40|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     40|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  612|     40|#define IS_STRING					6
  ------------------
  |  Branch (1845:6): [True: 31, False: 9]
  ------------------
 1846|     31|		since = Z_STR_P(z);
  ------------------
  |  |  982|     31|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     31|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1847|     31|	}
 1848|       |
 1849|       |	/* Construct the suffix. */
 1850|     40|	*message_suffix = zend_strpprintf_unchecked(
 1851|     40|		0,
 1852|     40|		"%s%S%s%S",
 1853|     40|		ZSTR_LEN(since) > 0 ? " since " : "",
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1853:3): [True: 31, False: 9]
  ------------------
 1854|     40|		since,
 1855|     40|		ZSTR_LEN(message) > 0 ? ", " : "",
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1855:3): [True: 25, False: 15]
  ------------------
 1856|     40|		message
 1857|     40|	);
 1858|       |
 1859|     40|	result = SUCCESS;
 1860|       |
 1861|     43| out:
 1862|       |
 1863|     43|	zval_ptr_dtor(&obj);
 1864|       |
 1865|     43|	return result;
 1866|     40|}
zend_execute.c:get_nodiscard_suffix_from_attribute:
 1895|      5|{
 1896|      5|	*message_suffix = ZSTR_EMPTY_ALLOC();
 1897|       |
 1898|      5|	if (!attributes) {
  ------------------
  |  Branch (1898:6): [True: 0, False: 5]
  ------------------
 1899|      0|		return SUCCESS;
 1900|      0|	}
 1901|       |
 1902|      5|	zend_attribute *nodiscard = zend_get_attribute_str(attributes, "nodiscard", sizeof("nodiscard")-1);
 1903|       |
 1904|      5|	if (!nodiscard) {
  ------------------
  |  Branch (1904:6): [True: 0, False: 5]
  ------------------
 1905|      0|		return SUCCESS;
 1906|      0|	}
 1907|       |
 1908|      5|	if (nodiscard->argc == 0) {
  ------------------
  |  Branch (1908:6): [True: 2, False: 3]
  ------------------
 1909|      2|		return SUCCESS;
 1910|      2|	}
 1911|       |
 1912|      3|	zend_result result = FAILURE;
 1913|       |
 1914|      3|	zend_string *message = ZSTR_EMPTY_ALLOC();
 1915|       |
 1916|      3|	zval obj;
 1917|      3|	ZVAL_UNDEF(&obj);
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1918|      3|	zval *z;
 1919|       |
 1920|       |	/* Construct the NoDiscard object to correctly handle parameter processing. */
 1921|      3|	if (FAILURE == zend_get_attribute_object(&obj, zend_ce_nodiscard, nodiscard, scope, NULL)) {
  ------------------
  |  Branch (1921:6): [True: 1, False: 2]
  ------------------
 1922|      1|		goto out;
 1923|      1|	}
 1924|       |
 1925|       |	/* Extract the $message property. */
 1926|      2|	z = zend_read_property_ex(zend_ce_nodiscard, Z_OBJ_P(&obj), ZSTR_KNOWN(ZEND_STR_MESSAGE), false, NULL);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1927|      2|	ZEND_ASSERT(z != &EG(uninitialized_zval));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1927:2): [True: 0, False: 2]
  |  Branch (1927:2): [True: 2, False: 0]
  ------------------
 1928|      2|	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (1928:6): [True: 2, False: 0]
  ------------------
 1929|      2|		message = Z_STR_P(z);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1930|      2|	}
 1931|       |
 1932|       |	/* Construct the suffix. */
 1933|      2|	*message_suffix = zend_strpprintf_unchecked(
 1934|      2|		0,
 1935|      2|		"%s%S",
 1936|      2|		ZSTR_LEN(message) > 0 ? ", " : "",
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1936:3): [True: 2, False: 0]
  ------------------
 1937|      2|		message
 1938|      2|	);
 1939|       |
 1940|      2|	result = SUCCESS;
 1941|       |
 1942|      3| out:
 1943|       |
 1944|      3|	zval_ptr_dtor(&obj);
 1945|       |
 1946|      3|	return result;
 1947|      2|}
zend_execute.c:zend_undefined_offset:
 2499|     35|{
 2500|     35|	zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, lval);
  ------------------
  |  |   23|     35|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, lval);
  ------------------
  |  |   54|     35|# define ZEND_LONG_FMT "%" PRId64
  ------------------
 2501|     35|}
zend_execute.c:zend_undefined_index:
 2504|     33|{
 2505|     33|	zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(offset));
  ------------------
  |  |   23|     33|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(offset));
  ------------------
  |  |   67|     33|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2506|     33|}
zend_execute.c:zend_fetch_dimension_address_read:
 3058|    315|{
 3059|    315|	zval *retval;
 3060|       |
 3061|    315|	if (!slow) {
  ------------------
  |  Branch (3061:6): [True: 153, False: 162]
  ------------------
 3062|    153|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|    153|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 75, False: 78]
  |  |  ------------------
  ------------------
 3063|     77|try_array:
 3064|     77|			retval = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, dim_type, type EXECUTE_DATA_CC);
  ------------------
  |  |  997|     77|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     77|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     77|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			retval = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, dim_type, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|     77|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     77|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3065|     77|			ZVAL_COPY_DEREF(result, retval);
  ------------------
  |  | 1508|     77|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     77|		zval *_z3 = (v);								\
  |  | 1510|     77|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     77|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     77|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     77|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     77|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 23, False: 54]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     23|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      2|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      2|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      2|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      2|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      2|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      2|				}										\
  |  | 1516|     21|			} else {									\
  |  | 1517|     21|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     21|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     21|			}											\
  |  | 1519|     23|		}												\
  |  | 1520|     77|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     77|	do {												\
  |  |  |  | 1417|     77|		zval *_z1 = (z);								\
  |  |  |  | 1418|     77|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     77|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     77|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     77|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     77|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     77|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     77|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     77|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     77|	do {												\
  |  |  |  |  |  | 1408|     77|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     77|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     77|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     77|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     77|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     77|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     77|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 77]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     77|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     77|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 77]
  |  |  ------------------
  ------------------
 3066|     77|			return;
 3067|     78|		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|     78|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 68]
  |  |  ------------------
  ------------------
 3068|     10|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|     10|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     10|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3069|     10|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 8]
  |  |  ------------------
  ------------------
 3070|      2|				goto try_array;
 3071|      2|			}
 3072|     10|		}
 3073|    153|	}
 3074|    238|	if (!is_list && EXPECTED(Z_TYPE_P(container) == IS_STRING)) {
  ------------------
  |  |  456|    197|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 33, False: 164]
  |  |  ------------------
  ------------------
  |  Branch (3074:6): [True: 197, False: 41]
  ------------------
 3075|     33|		zend_string *str = Z_STR_P(container);
  ------------------
  |  |  982|     33|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     33|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3076|     33|		zend_long offset;
 3077|       |
 3078|     33|try_string_offset:
 3079|     33|		if (UNEXPECTED(Z_TYPE_P(dim) != IS_LONG)) {
  ------------------
  |  |  457|     33|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 13, False: 20]
  |  |  ------------------
  ------------------
 3080|     13|			switch (Z_TYPE_P(dim)) {
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 3081|      9|				case IS_STRING:
  ------------------
  |  |  612|      9|#define IS_STRING					6
  ------------------
  |  Branch (3081:5): [True: 9, False: 4]
  ------------------
 3082|      9|				{
 3083|      9|					bool trailing_data = false;
 3084|       |					/* For BC reasons we allow errors so that we can warn on leading numeric string */
 3085|      9|					if (IS_LONG == is_numeric_string_ex(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset,
  ------------------
  |  |  610|      9|#define IS_LONG						4
  ------------------
              					if (IS_LONG == is_numeric_string_ex(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset,
  ------------------
  |  |  985|      9|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      9|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (IS_LONG == is_numeric_string_ex(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset,
  ------------------
  |  |  988|      9|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      9|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      9|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3085:10): [True: 4, False: 5]
  ------------------
 3086|      9|							NULL, /* allow errors */ true, NULL, &trailing_data)) {
 3087|      4|						if (UNEXPECTED(trailing_data)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 3088|      3|							zend_error(E_WARNING, "Illegal string offset \"%s\"", Z_STRVAL_P(dim));
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
              							zend_error(E_WARNING, "Illegal string offset \"%s\"", Z_STRVAL_P(dim));
  ------------------
  |  |  985|      3|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      3|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3089|      3|						}
 3090|      4|						goto out;
 3091|      4|					}
 3092|      5|					if (type == BP_VAR_IS) {
  ------------------
  |  | 1077|      5|#define BP_VAR_IS			3
  ------------------
  |  Branch (3092:10): [True: 4, False: 1]
  ------------------
 3093|      4|						ZVAL_NULL(result);
  ------------------
  |  | 1059|      4|#define ZVAL_NULL(z) do {				\
  |  | 1060|      4|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3094|      4|						return;
 3095|      4|					}
 3096|      1|					zend_illegal_string_offset(dim, BP_VAR_R);
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
 3097|      1|					ZVAL_NULL(result);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3098|      1|					return;
 3099|      5|				}
 3100|      0|				case IS_UNDEF:
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3100:5): [True: 0, False: 13]
  ------------------
 3101|       |					/* The string may be destroyed while throwing the notice.
 3102|       |					 * Temporarily increase the refcount to detect this situation. */
 3103|      0|					if (!(GC_FLAGS(str) & IS_STR_INTERNED)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              					if (!(GC_FLAGS(str) & IS_STR_INTERNED)) {
  ------------------
  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (3103:10): [True: 0, False: 0]
  ------------------
 3104|      0|						GC_ADDREF(str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3105|      0|					}
 3106|      0|					ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3107|      0|					if (!(GC_FLAGS(str) & IS_STR_INTERNED) && UNEXPECTED(GC_DELREF(str) == 0)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              					if (!(GC_FLAGS(str) & IS_STR_INTERNED) && UNEXPECTED(GC_DELREF(str) == 0)) {
  ------------------
  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              					if (!(GC_FLAGS(str) & IS_STR_INTERNED) && UNEXPECTED(GC_DELREF(str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3107:10): [True: 0, False: 0]
  ------------------
 3108|      0|						zend_string_efree(str);
 3109|      0|						ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3110|      0|						return;
 3111|      0|					}
 3112|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 3113|      1|				case IS_DOUBLE:
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (3113:5): [True: 1, False: 12]
  ------------------
 3114|      1|				case IS_NULL:
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (3114:5): [True: 0, False: 13]
  ------------------
 3115|      1|				case IS_FALSE:
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (3115:5): [True: 0, False: 13]
  ------------------
 3116|      1|				case IS_TRUE:
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (3116:5): [True: 0, False: 13]
  ------------------
 3117|      1|					if (type != BP_VAR_IS) {
  ------------------
  |  | 1077|      1|#define BP_VAR_IS			3
  ------------------
  |  Branch (3117:10): [True: 1, False: 0]
  ------------------
 3118|       |						/* The string may be destroyed while throwing the notice.
 3119|       |						 * Temporarily increase the refcount to detect this situation. */
 3120|      1|						if (!(GC_FLAGS(str) & IS_STR_INTERNED)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              						if (!(GC_FLAGS(str) & IS_STR_INTERNED)) {
  ------------------
  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (3120:11): [True: 1, False: 0]
  ------------------
 3121|      1|							GC_ADDREF(str);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3122|      1|						}
 3123|      1|						zend_error(E_WARNING, "String offset cast occurred");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 3124|      1|						if (!(GC_FLAGS(str) & IS_STR_INTERNED) && UNEXPECTED(GC_DELREF(str) == 0)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              						if (!(GC_FLAGS(str) & IS_STR_INTERNED) && UNEXPECTED(GC_DELREF(str) == 0)) {
  ------------------
  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              						if (!(GC_FLAGS(str) & IS_STR_INTERNED) && UNEXPECTED(GC_DELREF(str) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3124:11): [True: 1, False: 0]
  ------------------
 3125|      0|							zend_string_efree(str);
 3126|      0|							ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3127|      0|							return;
 3128|      0|						}
 3129|      1|					}
 3130|       |					/* To prevent double warning */
 3131|      1|					if (Z_TYPE_P(dim) == IS_DOUBLE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(dim) == IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (3131:10): [True: 1, False: 0]
  ------------------
 3132|      1|						offset = zend_dval_to_lval_silent(Z_DVAL_P(dim));
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 3133|      1|						goto out;
 3134|      1|					}
 3135|      0|					break;
 3136|      0|				case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (3136:5): [True: 0, False: 13]
  ------------------
 3137|      0|					dim = Z_REFVAL_P(dim);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3138|      0|					goto try_string_offset;
 3139|      3|				default:
  ------------------
  |  Branch (3139:5): [True: 3, False: 10]
  ------------------
 3140|      3|					zend_illegal_string_offset(dim, BP_VAR_R);
  ------------------
  |  | 1074|      3|#define BP_VAR_R			0
  ------------------
 3141|      3|					ZVAL_NULL(result);
  ------------------
  |  | 1059|      3|#define ZVAL_NULL(z) do {				\
  |  | 1060|      3|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3142|      3|					return;
 3143|     13|			}
 3144|       |
 3145|      0|			offset = zval_get_long_func(dim, /* is_strict */ false);
 3146|     20|		} else {
 3147|     20|			offset = Z_LVAL_P(dim);
  ------------------
  |  |  976|     20|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     20|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 3148|     20|		}
 3149|     25|		out:
 3150|       |
 3151|     25|		if (UNEXPECTED(ZSTR_LEN(str) < ((offset < 0) ? -(size_t)offset : ((size_t)offset + 1)))) {
  ------------------
  |  |  457|     50|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 16]
  |  |  |  Branch (457:52): [True: 4, False: 21]
  |  |  ------------------
  ------------------
 3152|      9|			if (type != BP_VAR_IS) {
  ------------------
  |  | 1077|      9|#define BP_VAR_IS			3
  ------------------
  |  Branch (3152:8): [True: 8, False: 1]
  ------------------
 3153|      8|				zend_error(E_WARNING, "Uninitialized string offset " ZEND_LONG_FMT, offset);
  ------------------
  |  |   23|      8|#define E_WARNING			(1<<1L)
  ------------------
              				zend_error(E_WARNING, "Uninitialized string offset " ZEND_LONG_FMT, offset);
  ------------------
  |  |   54|      8|# define ZEND_LONG_FMT "%" PRId64
  ------------------
 3154|      8|				ZVAL_EMPTY_STRING(result);
  ------------------
  |  |  972|      8|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      8|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      8|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      8|		zval *__z = (z);							\
  |  |  |  | 1100|      8|		zend_string *__s = (s);						\
  |  |  |  | 1101|      8|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      8|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      8|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 3155|      8|			} else {
 3156|      1|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3157|      1|			}
 3158|     16|		} else {
 3159|     16|			zend_uchar c;
 3160|     16|			zend_long real_offset;
 3161|       |
 3162|     16|			real_offset = (UNEXPECTED(offset < 0)) /* Handle negative offset */
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
  |  Branch (3162:18): [True: 2, False: 14]
  ------------------
 3163|     16|				? (zend_long)ZSTR_LEN(str) + offset : offset;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3164|     16|			c = (zend_uchar)ZSTR_VAL(str)[real_offset];
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3165|       |
 3166|     16|			ZVAL_CHAR(result, c);
  ------------------
  |  |  989|     16|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|     16|		char _c = (c);                          \
  |  |  991|     16|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|     16|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|     16|		zval *__z = (z);							\
  |  |  |  | 1100|     16|		zend_string *__s = (s);						\
  |  |  |  | 1101|     16|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|     16|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     16|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     16|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 3167|     16|		}
 3168|    205|	} else if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|    205|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 195]
  |  |  ------------------
  ------------------
 3169|     10|		zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|     10|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3170|       |
 3171|     10|		GC_ADDREF(obj);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3172|     10|		if (ZEND_CONST_COND(dim_type == IS_CV, 1) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  420|     20|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 10, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 10]
  |  |  ------------------
  ------------------
              		if (ZEND_CONST_COND(dim_type == IS_CV, 1) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 3173|      0|			dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3174|      0|		}
 3175|     10|		if (dim_type == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              		if (dim_type == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              		if (dim_type == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      1|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (3175:7): [True: 1, False: 9]
  |  Branch (3175:31): [True: 0, False: 1]
  ------------------
 3176|      0|			dim++;
 3177|      0|		}
 3178|     10|		retval = obj->handlers->read_dimension(obj, dim, type, result);
 3179|       |
 3180|     10|		ZEND_ASSERT(result != NULL);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3180:3): [True: 0, False: 10]
  |  Branch (3180:3): [True: 10, False: 0]
  ------------------
 3181|     10|		if (retval) {
  ------------------
  |  Branch (3181:7): [True: 8, False: 2]
  ------------------
 3182|      8|			if (result != retval) {
  ------------------
  |  Branch (3182:8): [True: 8, False: 0]
  ------------------
 3183|      8|				ZVAL_COPY_DEREF(result, retval);
  ------------------
  |  | 1508|      8|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      8|		zval *_z3 = (v);								\
  |  | 1510|      8|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      8|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      8|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      8|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      8|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 5, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      5|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      2|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      2|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      2|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      2|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      3|			} else {									\
  |  | 1517|      3|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      3|			}											\
  |  | 1519|      5|		}												\
  |  | 1520|      8|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      8|	do {												\
  |  |  |  | 1417|      8|		zval *_z1 = (z);								\
  |  |  |  | 1418|      8|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      8|	do {												\
  |  |  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 3184|      8|			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3185|      0|				zend_unwrap_reference(result);
 3186|      0|			}
 3187|      8|		} else {
 3188|      2|			ZVAL_NULL(result);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3189|      2|		}
 3190|     10|		if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 3191|      0|			zend_objects_store_del(obj);
 3192|      0|		}
 3193|    195|	} else {
 3194|    195|		if (type != BP_VAR_IS && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  | 1077|    390|#define BP_VAR_IS			3
  ------------------
              		if (type != BP_VAR_IS && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|    174|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 128, False: 46]
  |  |  ------------------
  ------------------
  |  Branch (3194:7): [True: 174, False: 21]
  ------------------
 3195|    128|			container = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    128|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    128|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3196|    128|		}
 3197|    195|		if (ZEND_CONST_COND(dim_type == IS_CV, 1) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  420|    390|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 195, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 195]
  |  |  ------------------
  ------------------
              		if (ZEND_CONST_COND(dim_type == IS_CV, 1) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  457|    195|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 190]
  |  |  ------------------
  ------------------
 3198|      5|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      5|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3199|      5|		}
 3200|    195|		if (is_list && Z_TYPE_P(container) > IS_NULL) {
  ------------------
  |  |  669|     40|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     40|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (is_list && Z_TYPE_P(container) > IS_NULL) {
  ------------------
  |  |  607|     40|#define IS_NULL						1
  ------------------
  |  Branch (3200:7): [True: 40, False: 155]
  |  Branch (3200:18): [True: 27, False: 13]
  ------------------
 3201|     27|			zend_error(E_WARNING, "Cannot use %s as array", zend_zval_type_name(container));
  ------------------
  |  |   23|     27|#define E_WARNING			(1<<1L)
  ------------------
 3202|     27|		}
 3203|    195|		if (!is_list && type != BP_VAR_IS) {
  ------------------
  |  | 1077|    155|#define BP_VAR_IS			3
  ------------------
  |  Branch (3203:7): [True: 155, False: 40]
  |  Branch (3203:19): [True: 134, False: 21]
  ------------------
 3204|    134|			zend_error(E_WARNING, "Trying to access array offset on %s",
  ------------------
  |  |   23|    134|#define E_WARNING			(1<<1L)
  ------------------
 3205|    134|				zend_zval_value_name(container));
 3206|    134|		}
 3207|    195|		ZVAL_NULL(result);
  ------------------
  |  | 1059|    195|#define ZVAL_NULL(z) do {				\
  |  | 1060|    195|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    195|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    195|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    195|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    195|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 195]
  |  |  ------------------
  ------------------
 3208|    195|	}
 3209|    238|}
zend_execute.c:zend_fetch_dimension_address_inner:
 2804|  2.96k|{
 2805|  2.96k|	zval *retval = NULL;
 2806|  2.96k|	zend_string *offset_key;
 2807|  2.96k|	zend_ulong hval;
 2808|       |
 2809|  2.96k|try_again:
 2810|  2.96k|	if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
  ------------------
  |  |  456|  2.96k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.47k, False: 494]
  |  |  ------------------
  ------------------
 2811|  2.47k|		hval = Z_LVAL_P(dim);
  ------------------
  |  |  976|  2.47k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  2.47k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2812|  2.51k|num_index:
 2813|  2.51k|		if (type != BP_VAR_W) {
  ------------------
  |  | 1075|  2.51k|#define BP_VAR_W			1
  ------------------
  |  Branch (2813:7): [True: 460, False: 2.05k]
  ------------------
 2814|    460|			ZEND_HASH_INDEX_FIND(ht, hval, retval, num_undef);
  ------------------
  |  |  198|    460|#define ZEND_HASH_INDEX_FIND(_ht, _h, _ret, _not_found) do { \
  |  |  199|    460|		if (EXPECTED(HT_IS_PACKED(_ht))) { \
  |  |  ------------------
  |  |  |  |  456|    460|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 155, False: 305]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  200|    155|			if (EXPECTED((zend_ulong)(_h) < (zend_ulong)(_ht)->nNumUsed)) { \
  |  |  ------------------
  |  |  |  |  456|    155|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 146, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  201|    146|				_ret = &_ht->arPacked[_h]; \
  |  |  202|    146|				if (UNEXPECTED(Z_TYPE_P(_ret) == IS_UNDEF)) { \
  |  |  ------------------
  |  |  |  |  457|    146|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 143]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  203|      3|					goto _not_found; \
  |  |  204|      3|				} \
  |  |  205|    146|			} else { \
  |  |  206|      9|				goto _not_found; \
  |  |  207|      9|			} \
  |  |  208|    305|		} else { \
  |  |  209|    305|			_ret = _zend_hash_index_find(_ht, _h); \
  |  |  210|    305|			if (UNEXPECTED(_ret == NULL)) { \
  |  |  ------------------
  |  |  |  |  457|    305|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 25, False: 280]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|     25|				goto _not_found; \
  |  |  212|     25|			} \
  |  |  213|    305|		} \
  |  |  214|    460|	} while (0)
  |  |  ------------------
  |  |  |  Branch (214:11): [Folded, False: 423]
  |  |  ------------------
  ------------------
 2815|    423|			return retval;
 2816|     37|num_undef:
 2817|     37|			switch (type) {
  ------------------
  |  Branch (2817:12): [True: 37, False: 0]
  ------------------
 2818|     17|				case BP_VAR_R:
  ------------------
  |  | 1074|     17|#define BP_VAR_R			0
  ------------------
  |  Branch (2818:5): [True: 17, False: 20]
  ------------------
 2819|     17|					zend_undefined_offset(hval);
 2820|     17|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     17|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2821|     17|				case BP_VAR_UNSET:
  ------------------
  |  | 1079|     17|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (2821:5): [True: 0, False: 37]
  ------------------
 2822|     19|				case BP_VAR_IS:
  ------------------
  |  | 1077|     19|#define BP_VAR_IS			3
  ------------------
  |  Branch (2822:5): [True: 2, False: 35]
  ------------------
 2823|     19|					retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|     19|# define EG(v) (executor_globals.v)
  ------------------
 2824|     19|					break;
 2825|     18|				case BP_VAR_RW:
  ------------------
  |  | 1076|     18|#define BP_VAR_RW			2
  ------------------
  |  Branch (2825:5): [True: 18, False: 19]
  ------------------
 2826|     18|					retval = zend_undefined_offset_write(ht, hval);
 2827|     18|					break;
 2828|     37|				}
 2829|  2.05k|		} else {
 2830|  2.05k|			ZEND_HASH_INDEX_LOOKUP(ht, hval, retval);
  ------------------
  |  |  222|  2.05k|#define ZEND_HASH_INDEX_LOOKUP(_ht, _h, _ret) do { \
  |  |  223|  2.05k|		if (EXPECTED(HT_IS_PACKED(_ht))) { \
  |  |  ------------------
  |  |  |  |  456|  2.05k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 892, False: 1.15k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|    892|			if (EXPECTED((zend_ulong)(_h) < (zend_ulong)(_ht)->nNumUsed)) { \
  |  |  ------------------
  |  |  |  |  456|    892|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 492, False: 400]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|    492|				_ret = &_ht->arPacked[_h]; \
  |  |  226|    492|				if (EXPECTED(Z_TYPE_P(_ret) != IS_UNDEF)) { \
  |  |  ------------------
  |  |  |  |  456|    492|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 486, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  227|    486|					break; \
  |  |  228|    486|				} \
  |  |  229|    492|			} \
  |  |  230|    892|		} \
  |  |  231|  2.05k|		_ret = zend_hash_index_lookup(_ht, _h); \
  |  |  232|  1.56k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (232:11): [Folded, False: 1.56k]
  |  |  ------------------
  ------------------
 2831|  2.05k|		}
 2832|  2.51k|	} else if (EXPECTED(Z_TYPE_P(dim) == IS_STRING)) {
  ------------------
  |  |  456|    494|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 403, False: 91]
  |  |  ------------------
  ------------------
 2833|    403|		offset_key = Z_STR_P(dim);
  ------------------
  |  |  982|    403|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    403|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2834|    403|		if (ZEND_CONST_COND(dim_type != IS_CONST, 1)) {
  ------------------
  |  |  420|    403|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 403, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 403]
  |  |  ------------------
  ------------------
 2835|    403|			if (ZEND_HANDLE_NUMERIC(offset_key, hval)) {
  ------------------
  |  |  424|    403|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|    403|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 1, False: 402]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2836|      1|				goto num_index;
 2837|      1|			}
 2838|    403|		}
 2839|    451|str_index:
 2840|    451|		if (type != BP_VAR_W) {
  ------------------
  |  | 1075|    451|#define BP_VAR_W			1
  ------------------
  |  Branch (2840:7): [True: 81, False: 370]
  ------------------
 2841|     81|			retval = zend_hash_find_ex(ht, offset_key, ZEND_CONST_COND(dim_type == IS_CONST, 0));
  ------------------
  |  |  420|     81|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:3): [True: 0, False: 81]
  |  |  ------------------
  ------------------
 2842|     81|			if (!retval) {
  ------------------
  |  Branch (2842:8): [True: 33, False: 48]
  ------------------
 2843|     33|				switch (type) {
  ------------------
  |  Branch (2843:13): [True: 33, False: 0]
  ------------------
 2844|     23|					case BP_VAR_R:
  ------------------
  |  | 1074|     23|#define BP_VAR_R			0
  ------------------
  |  Branch (2844:6): [True: 23, False: 10]
  ------------------
 2845|     23|						zend_undefined_index(offset_key);
 2846|     23|						ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     23|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2847|     23|					case BP_VAR_UNSET:
  ------------------
  |  | 1079|     23|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (2847:6): [True: 0, False: 33]
  ------------------
 2848|     23|					case BP_VAR_IS:
  ------------------
  |  | 1077|     23|#define BP_VAR_IS			3
  ------------------
  |  Branch (2848:6): [True: 0, False: 33]
  ------------------
 2849|     23|						retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|     23|# define EG(v) (executor_globals.v)
  ------------------
 2850|     23|						break;
 2851|     10|					case BP_VAR_RW:
  ------------------
  |  | 1076|     10|#define BP_VAR_RW			2
  ------------------
  |  Branch (2851:6): [True: 10, False: 23]
  ------------------
 2852|     10|						retval = zend_undefined_index_write(ht, offset_key);
 2853|     10|						break;
 2854|     33|				}
 2855|     33|			}
 2856|    370|		} else {
 2857|    370|			retval = zend_hash_lookup(ht, offset_key);
 2858|    370|		}
 2859|    451|	} else if (EXPECTED(Z_TYPE_P(dim) == IS_REFERENCE)) {
  ------------------
  |  |  456|     91|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 91]
  |  |  ------------------
  ------------------
 2860|      0|		dim = Z_REFVAL_P(dim);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2861|      0|		goto try_again;
 2862|     91|	} else {
 2863|     91|		zend_value val;
 2864|     91|		uint8_t t;
 2865|       |
 2866|     91|		if (type != BP_VAR_W && type != BP_VAR_RW) {
  ------------------
  |  | 1075|    182|#define BP_VAR_W			1
  ------------------
              		if (type != BP_VAR_W && type != BP_VAR_RW) {
  ------------------
  |  | 1076|     45|#define BP_VAR_RW			2
  ------------------
  |  Branch (2866:7): [True: 45, False: 46]
  |  Branch (2866:27): [True: 33, False: 12]
  ------------------
 2867|     33|			t = slow_index_convert(ht, dim, &val EXECUTE_DATA_CC);
  ------------------
  |  |   89|     33|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     33|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2868|     58|		} else {
 2869|     58|			t = slow_index_convert_w(ht, dim, &val EXECUTE_DATA_CC);
  ------------------
  |  |   89|     58|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     58|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2870|     58|		}
 2871|     91|		if (t == IS_STRING) {
  ------------------
  |  |  612|     91|#define IS_STRING					6
  ------------------
  |  Branch (2871:7): [True: 49, False: 42]
  ------------------
 2872|     49|			offset_key = val.str;
 2873|     49|			goto str_index;
 2874|     49|		} else if (t == IS_LONG) {
  ------------------
  |  |  610|     42|#define IS_LONG						4
  ------------------
  |  Branch (2874:14): [True: 37, False: 5]
  ------------------
 2875|     37|			hval = val.lval;
 2876|     37|			goto num_index;
 2877|     37|		} else {
 2878|      5|			retval = (type == BP_VAR_W || type == BP_VAR_RW) ?
  ------------------
  |  | 1075|     10|#define BP_VAR_W			1
  ------------------
              			retval = (type == BP_VAR_W || type == BP_VAR_RW) ?
  ------------------
  |  | 1076|      3|#define BP_VAR_RW			2
  ------------------
  |  Branch (2878:14): [True: 2, False: 3]
  |  Branch (2878:34): [True: 2, False: 1]
  ------------------
 2879|      5|					NULL : &EG(uninitialized_zval);
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
 2880|      5|		}
 2881|     91|	}
 2882|  2.54k|	return retval;
 2883|  2.96k|}
zend_execute.c:slow_index_convert:
 2638|     33|{
 2639|     33|	switch (Z_TYPE_P(dim)) {
  ------------------
  |  |  669|     33|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     33|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2640|      5|		case IS_UNDEF: {
  ------------------
  |  |  606|      5|#define IS_UNDEF					0
  ------------------
  |  Branch (2640:3): [True: 5, False: 28]
  ------------------
 2641|       |			/* The array may be destroyed while throwing the notice.
 2642|       |			 * Temporarily increase the refcount to detect this situation. */
 2643|      5|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      5|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      5|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      5|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2643:8): [True: 5, False: 0]
  ------------------
 2644|      5|				GC_ADDREF(ht);
  ------------------
  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2645|      5|			}
 2646|      5|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      5|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2647|      5|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      5|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      5|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      5|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      5|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2647:8): [True: 5, False: 0]
  |  Branch (2647:48): [True: 0, False: 5]
  ------------------
 2648|      0|				zend_array_destroy(ht);
 2649|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2650|      0|			}
 2651|      5|			if (EG(exception)) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2652|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2653|      0|			}
 2654|      5|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      5|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2655|      5|		}
 2656|     14|		case IS_NULL:
  ------------------
  |  |  607|     14|#define IS_NULL						1
  ------------------
  |  Branch (2656:3): [True: 9, False: 24]
  ------------------
 2657|       |			/* The array may be destroyed while throwing the notice.
 2658|       |			 * Temporarily increase the refcount to detect this situation. */
 2659|     14|			GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|     14|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 2660|       |
 2661|     14|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|     14|#define E_DEPRECATED		(1<<13L)
  ------------------
 2662|       |
 2663|     14|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|     14|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     14|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|     14|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     14|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|     14|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2663:8): [True: 14, False: 0]
  |  Branch (2663:48): [True: 0, False: 14]
  ------------------
 2664|      0|				zend_array_destroy(ht);
 2665|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2666|      0|			}
 2667|       |
 2668|     14|			if (EG(exception)) {
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 14]
  |  |  ------------------
  ------------------
 2669|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2670|      0|			}
 2671|       |
 2672|     14|			value->str = ZSTR_EMPTY_ALLOC();
 2673|     14|			return IS_STRING;
  ------------------
  |  |  612|     14|#define IS_STRING					6
  ------------------
 2674|      7|		case IS_DOUBLE:
  ------------------
  |  |  611|      7|#define IS_DOUBLE					5
  ------------------
  |  Branch (2674:3): [True: 7, False: 26]
  ------------------
 2675|       |			/* The array may be destroyed while throwing the notice.
 2676|       |			 * Temporarily increase the refcount to detect this situation. */
 2677|      7|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      7|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      7|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      7|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2677:8): [True: 4, False: 3]
  ------------------
 2678|      4|				GC_ADDREF(ht);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2679|      4|			}
 2680|      7|			value->lval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
  ------------------
  |  |  979|      7|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      7|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2681|      7|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      7|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      7|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      7|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      4|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2681:8): [True: 4, False: 3]
  |  Branch (2681:48): [True: 0, False: 4]
  ------------------
 2682|      0|				zend_array_destroy(ht);
 2683|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2684|      0|			}
 2685|      7|			if (EG(exception)) {
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 2686|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2687|      0|			}
 2688|      7|			return IS_LONG;
  ------------------
  |  |  610|      7|#define IS_LONG						4
  ------------------
 2689|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (2689:3): [True: 0, False: 33]
  ------------------
 2690|       |			/* The array may be destroyed while throwing the notice.
 2691|       |			 * Temporarily increase the refcount to detect this situation. */
 2692|      0|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2692:8): [True: 0, False: 0]
  ------------------
 2693|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2694|      0|			}
 2695|      0|			zend_use_resource_as_offset(dim);
 2696|      0|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2696:8): [True: 0, False: 0]
  |  Branch (2696:48): [True: 0, False: 0]
  ------------------
 2697|      0|				zend_array_destroy(ht);
 2698|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2699|      0|			}
 2700|      0|			if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2701|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2702|      0|			}
 2703|      0|			value->lval = Z_RES_HANDLE_P(dim);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2704|      0|			return IS_LONG;
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
 2705|      9|		case IS_FALSE:
  ------------------
  |  |  608|      9|#define IS_FALSE					2
  ------------------
  |  Branch (2705:3): [True: 9, False: 24]
  ------------------
 2706|      9|			value->lval = 0;
 2707|      9|			return IS_LONG;
  ------------------
  |  |  610|      9|#define IS_LONG						4
  ------------------
 2708|      2|		case IS_TRUE:
  ------------------
  |  |  609|      2|#define IS_TRUE						3
  ------------------
  |  Branch (2708:3): [True: 2, False: 31]
  ------------------
 2709|      2|			value->lval = 1;
 2710|      2|			return IS_LONG;
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
 2711|      1|		default:
  ------------------
  |  Branch (2711:3): [True: 1, False: 32]
  ------------------
 2712|      1|			zend_illegal_array_offset_access(dim);
 2713|      1|			return IS_NULL;
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
 2714|     33|	}
 2715|     33|}
zend_execute.c:zend_illegal_array_offset_access:
 1542|      6|{
 1543|      6|	zend_illegal_container_offset(ZSTR_KNOWN(ZEND_STR_ARRAY), offset, BP_VAR_RW);
  ------------------
  |  | 1076|      6|#define BP_VAR_RW			2
  ------------------
 1544|      6|}
zend_execute.c:slow_index_convert_w:
 2718|     58|{
 2719|     58|	switch (Z_TYPE_P(dim)) {
  ------------------
  |  |  669|     58|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     58|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2720|     15|		case IS_UNDEF: {
  ------------------
  |  |  606|     15|#define IS_UNDEF					0
  ------------------
  |  Branch (2720:3): [True: 15, False: 43]
  ------------------
 2721|       |			/* The array may be destroyed while throwing the notice.
 2722|       |			 * Temporarily increase the refcount to detect this situation. */
 2723|     15|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     15|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     15|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     15|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     15|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2723:8): [True: 15, False: 0]
  ------------------
 2724|     15|				GC_ADDREF(ht);
  ------------------
  |  |  718|     15|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2725|     15|			}
 2726|     15|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|     15|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|     15|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2727|     15|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  777|     15|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     15|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  844|     15|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     15|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  719|     15|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2727:8): [True: 15, False: 0]
  |  Branch (2727:48): [True: 0, False: 15]
  ------------------
 2728|      0|				if (!GC_REFCOUNT(ht)) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (2728:9): [True: 0, False: 0]
  ------------------
 2729|      0|					zend_array_destroy(ht);
 2730|      0|				}
 2731|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2732|      0|			}
 2733|     15|			if (EG(exception)) {
  ------------------
  |  |   45|     15|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 15]
  |  |  ------------------
  ------------------
 2734|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2735|      0|			}
 2736|     15|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     15|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2737|     15|		}
 2738|     35|		case IS_NULL:
  ------------------
  |  |  607|     35|#define IS_NULL						1
  ------------------
  |  Branch (2738:3): [True: 20, False: 38]
  ------------------
 2739|       |			/* The array may be destroyed while throwing the notice.
 2740|       |			 * Temporarily increase the refcount to detect this situation. */
 2741|     35|			GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|     35|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 2742|       |
 2743|     35|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|     35|#define E_DEPRECATED		(1<<13L)
  ------------------
 2744|       |
 2745|     35|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  777|     35|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     35|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  844|     35|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     35|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  719|     35|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2745:8): [True: 35, False: 0]
  |  Branch (2745:48): [True: 0, False: 35]
  ------------------
 2746|      0|				if (!GC_REFCOUNT(ht)) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (2746:9): [True: 0, False: 0]
  ------------------
 2747|      0|					zend_array_destroy(ht);
 2748|      0|				}
 2749|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2750|      0|			}
 2751|     35|			if (EG(exception)) {
  ------------------
  |  |   45|     35|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 35]
  |  |  ------------------
  ------------------
 2752|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2753|      0|			}
 2754|     35|			value->str = ZSTR_EMPTY_ALLOC();
 2755|     35|			return IS_STRING;
  ------------------
  |  |  612|     35|#define IS_STRING					6
  ------------------
 2756|     10|		case IS_DOUBLE:
  ------------------
  |  |  611|     10|#define IS_DOUBLE					5
  ------------------
  |  Branch (2756:3): [True: 10, False: 48]
  ------------------
 2757|       |			/* The array may be destroyed while throwing the notice.
 2758|       |			 * Temporarily increase the refcount to detect this situation. */
 2759|     10|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     10|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2759:8): [True: 10, False: 0]
  ------------------
 2760|     10|				GC_ADDREF(ht);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2761|     10|			}
 2762|     10|			value->lval = zend_dval_to_lval_safe(Z_DVAL_P(dim));
  ------------------
  |  |  979|     10|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     10|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2763|     10|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  844|     10|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  719|     10|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2763:8): [True: 10, False: 0]
  |  Branch (2763:48): [True: 0, False: 10]
  ------------------
 2764|      0|				if (!GC_REFCOUNT(ht)) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (2764:9): [True: 0, False: 0]
  ------------------
 2765|      0|					zend_array_destroy(ht);
 2766|      0|				}
 2767|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2768|      0|			}
 2769|     10|			if (EG(exception)) {
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 2770|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2771|      0|			}
 2772|     10|			return IS_LONG;
  ------------------
  |  |  610|     10|#define IS_LONG						4
  ------------------
 2773|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (2773:3): [True: 0, False: 58]
  ------------------
 2774|       |			/* The array may be destroyed while throwing the notice.
 2775|       |			 * Temporarily increase the refcount to detect this situation. */
 2776|      0|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2776:8): [True: 0, False: 0]
  ------------------
 2777|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2778|      0|			}
 2779|      0|			zend_use_resource_as_offset(dim);
 2780|      0|			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && GC_DELREF(ht) != 1) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (2780:8): [True: 0, False: 0]
  |  Branch (2780:48): [True: 0, False: 0]
  ------------------
 2781|      0|				if (!GC_REFCOUNT(ht)) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (2781:9): [True: 0, False: 0]
  ------------------
 2782|      0|					zend_array_destroy(ht);
 2783|      0|				}
 2784|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2785|      0|			}
 2786|      0|			if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2787|      0|				return IS_NULL;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2788|      0|			}
 2789|      0|			value->lval = Z_RES_HANDLE_P(dim);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2790|      0|			return IS_LONG;
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
 2791|      3|		case IS_FALSE:
  ------------------
  |  |  608|      3|#define IS_FALSE					2
  ------------------
  |  Branch (2791:3): [True: 3, False: 55]
  ------------------
 2792|      3|			value->lval = 0;
 2793|      3|			return IS_LONG;
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
 2794|      6|		case IS_TRUE:
  ------------------
  |  |  609|      6|#define IS_TRUE						3
  ------------------
  |  Branch (2794:3): [True: 6, False: 52]
  ------------------
 2795|      6|			value->lval = 1;
 2796|      6|			return IS_LONG;
  ------------------
  |  |  610|      6|#define IS_LONG						4
  ------------------
 2797|      4|		default:
  ------------------
  |  Branch (2797:3): [True: 4, False: 54]
  ------------------
 2798|      4|			zend_illegal_array_offset_access(dim);
 2799|      4|			return IS_NULL;
  ------------------
  |  |  607|      4|#define IS_NULL						1
  ------------------
 2800|     58|	}
 2801|     58|}
zend_execute.c:zend_illegal_string_offset:
 1557|      7|{
 1558|      7|	zend_illegal_container_offset(ZSTR_KNOWN(ZEND_STR_STRING), offset, type);
 1559|      7|}
zend_execute.c:_zval_undefined_op2:
  290|  9.88k|{
  291|  9.88k|	return zval_undefined_cv(EX(opline)->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |  730|  9.88k|#define EX(element) 			((execute_data)->element)
  ------------------
              	return zval_undefined_cv(EX(opline)->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  9.88k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  9.88k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  292|  9.88k|}
zend_execute.c:zval_undefined_cv:
  276|  26.5k|{
  277|  26.5k|	if (EXPECTED(EG(exception) == NULL)) {
  ------------------
  |  |  456|  26.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 26.5k, False: 0]
  |  |  ------------------
  ------------------
  278|  26.5k|		zend_string *cv = CV_DEF_OF(EX_VAR_TO_NUM(var));
  ------------------
  |  |  181|  26.5k|#define CV_DEF_OF(i) (EX(func)->op_array.vars[i])
  |  |  ------------------
  |  |  |  |  730|  26.5k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  279|  26.5k|		zend_error_unchecked(E_WARNING, "Undefined variable $%S", cv);
  ------------------
  |  |   23|  26.5k|#define E_WARNING			(1<<1L)
  ------------------
  280|  26.5k|	}
  281|  26.5k|	return &EG(uninitialized_zval);
  ------------------
  |  |   45|  26.5k|# define EG(v) (executor_globals.v)
  ------------------
  282|  26.5k|}
zend_execute.c:_zval_undefined_op1:
  285|  16.1k|{
  286|  16.1k|	return zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |  730|  16.1k|#define EX(element) 			((execute_data)->element)
  ------------------
              	return zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  16.1k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  16.1k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  287|  16.1k|}
zend_execute.c:zend_fetch_static_property_address_ex:
 3735|     80|static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_property_info **prop_info, uint32_t cache_slot, int fetch_type OPLINE_DC EXECUTE_DATA_DC) {
 3736|     80|	zval *result;
 3737|     80|	zend_string *name;
 3738|     80|	zend_class_entry *ce;
 3739|     80|	zend_property_info *property_info;
 3740|       |
 3741|     80|	uint8_t op1_type = opline->op1_type, op2_type = opline->op2_type;
 3742|       |
 3743|     80|	if (EXPECTED(op2_type == IS_CONST)) {
  ------------------
  |  |  456|     80|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 56, False: 24]
  |  |  ------------------
  ------------------
 3744|     56|		zval *class_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     56|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 3745|       |
 3746|     56|		ZEND_ASSERT(op1_type != IS_CONST || CACHED_PTR(cache_slot) == NULL);
  ------------------
  |  |  112|     56|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3746:3): [True: 56, False: 0]
  |  Branch (3746:3): [True: 0, False: 0]
  |  Branch (3746:3): [True: 2, False: 54]
  |  Branch (3746:3): [True: 54, False: 0]
  ------------------
 3747|       |
 3748|     56|		if (EXPECTED((ce = CACHED_PTR(cache_slot)) == NULL)) {
  ------------------
  |  |  456|     56|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 56, False: 0]
  |  |  ------------------
  ------------------
 3749|     56|			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|     56|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     56|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|     56|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     56|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|     56|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|     56|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 3750|     56|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|     56|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 47]
  |  |  ------------------
  ------------------
 3751|      9|				FREE_OP(op1_type, opline->op1.var);
  ------------------
  |  |  177|      9|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      9|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      9|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 9]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 3752|      9|				return NULL;
 3753|      9|			}
 3754|     47|			if (UNEXPECTED(op1_type != IS_CONST)) {
  ------------------
  |  |  457|     47|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 46]
  |  |  ------------------
  ------------------
 3755|      1|				CACHE_PTR(cache_slot, ce);
  ------------------
  |  |  529|      1|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      1|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3756|      1|			}
 3757|     47|		}
 3758|     56|	} else {
 3759|     24|		if (EXPECTED(op2_type == IS_UNUSED)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 21, False: 3]
  |  |  ------------------
  ------------------
 3760|     21|			ce = zend_fetch_class(NULL, opline->op2.num);
 3761|     21|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  ------------------
  ------------------
 3762|      0|				FREE_OP(op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 3763|      0|				return NULL;
 3764|      0|			}
 3765|     21|		} else {
 3766|      3|			ce = Z_CE_P(EX_VAR(opline->op2.var));
  ------------------
  |  | 1047|      3|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      3|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3767|      3|		}
 3768|     24|		if (EXPECTED(op1_type == IS_CONST) && EXPECTED(CACHED_PTR(cache_slot) == ce)) {
  ------------------
  |  |  456|     48|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 24, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(op1_type == IS_CONST) && EXPECTED(CACHED_PTR(cache_slot) == ce)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 24]
  |  |  ------------------
  ------------------
 3769|      0|			result = CACHED_PTR(cache_slot + sizeof(void *));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3770|      0|			*prop_info = CACHED_PTR(cache_slot + sizeof(void *) * 2);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3771|      0|			return result;
 3772|      0|		}
 3773|     24|	}
 3774|       |
 3775|     71|	if (EXPECTED(op1_type == IS_CONST)) {
  ------------------
  |  |  456|     71|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 70, False: 1]
  |  |  ------------------
  ------------------
 3776|     70|		name = Z_STR_P(RT_CONSTANT(opline, opline->op1));
  ------------------
  |  |  982|     70|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     70|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3777|     70|		result = zend_std_get_static_property_with_info(ce, name, fetch_type, &property_info);
 3778|     70|	} else {
 3779|      1|		zend_string *tmp_name;
 3780|      1|		zval *varname = get_zval_ptr_undef(opline->op1_type, opline->op1, BP_VAR_R);
  ------------------
  |  |  122|      1|#define get_zval_ptr_undef(op_type, node, type) _get_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_zval_ptr_undef(op_type, node, type) _get_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3781|      1|		if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 3782|      1|			name = Z_STR_P(varname);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3783|      1|			tmp_name = NULL;
 3784|      1|		} else {
 3785|      0|			if (op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3785:8): [True: 0, False: 0]
  ------------------
 3786|      0|				zval_undefined_cv(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3787|      0|			}
 3788|      0|			name = zval_get_tmp_string(varname, &tmp_name);
 3789|      0|		}
 3790|      1|		result = zend_std_get_static_property_with_info(ce, name, fetch_type, &property_info);
 3791|       |
 3792|      1|		zend_tmp_string_release(tmp_name);
 3793|       |
 3794|      1|		FREE_OP(op1_type, opline->op1.var);
  ------------------
  |  |  177|      1|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 1]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 3795|      1|	}
 3796|       |
 3797|     71|	if (UNEXPECTED(result == NULL)) {
  ------------------
  |  |  457|     71|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 66]
  |  |  ------------------
  ------------------
 3798|      5|		return NULL;
 3799|      5|	}
 3800|       |
 3801|     66|	if (UNEXPECTED(Z_TYPE_P(result) == IS_UNDEF)
  ------------------
  |  |  457|    132|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 50]
  |  |  ------------------
  ------------------
 3802|     16|	 && (fetch_type == BP_VAR_IS || fetch_type == BP_VAR_UNSET)) {
  ------------------
  |  | 1077|     32|#define BP_VAR_IS			3
  ------------------
              	 && (fetch_type == BP_VAR_IS || fetch_type == BP_VAR_UNSET)) {
  ------------------
  |  | 1079|     15|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (3802:7): [True: 1, False: 15]
  |  Branch (3802:34): [True: 3, False: 12]
  ------------------
 3803|      4|		return NULL;
 3804|      4|	 }
 3805|       |
 3806|     62|	*prop_info = property_info;
 3807|       |
 3808|     62|	if (EXPECTED(op1_type == IS_CONST)
  ------------------
  |  |  456|    124|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 62, False: 0]
  |  |  ------------------
  ------------------
 3809|     62|			&& EXPECTED(!(property_info->ce->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|     62|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 62, False: 0]
  |  |  ------------------
  ------------------
 3810|     62|		CACHE_POLYMORPHIC_PTR(cache_slot, ce, result);
  ------------------
  |  |  538|     62|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|     62|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|     62|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|     62|		slot[0] = (ce); \
  |  |  541|     62|		slot[1] = (ptr); \
  |  |  542|     62|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 62]
  |  |  ------------------
  ------------------
 3811|     62|		CACHE_PTR(cache_slot + sizeof(void *) * 2, property_info);
  ------------------
  |  |  529|     62|#define CACHE_PTR(num, ptr) do { \
  |  |  530|     62|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|     62|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|     62|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 62]
  |  |  ------------------
  ------------------
 3812|     62|	}
 3813|       |
 3814|     62|	return result;
 3815|     66|}
zend_execute.c:_get_zval_ptr_undef:
  493|     40|{
  494|     40|	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     40|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (494:6): [True: 5, False: 35]
  ------------------
  495|      5|		if (!ZEND_DEBUG || op_type == IS_VAR) {
  ------------------
  |  | 2105|     10|#define ZEND_DEBUG 1
  ------------------
              		if (!ZEND_DEBUG || op_type == IS_VAR) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (495:7): [Folded, False: 5]
  |  Branch (495:22): [True: 0, False: 5]
  ------------------
  496|      0|			return _get_zval_ptr_var(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  497|      5|		} else {
  498|      5|			ZEND_ASSERT(op_type == IS_TMP_VAR);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (498:4): [True: 0, False: 5]
  |  Branch (498:4): [True: 5, False: 0]
  ------------------
  499|      5|			return _get_zval_ptr_tmp(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  500|      5|		}
  501|     35|	} else {
  502|     35|		if (op_type == IS_CONST) {
  ------------------
  |  |  864|     35|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (502:7): [True: 17, False: 18]
  ------------------
  503|     17|			return RT_CONSTANT(opline, node);
  ------------------
  |  |  841|     17|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  504|     18|		} else if (op_type == IS_CV) {
  ------------------
  |  |  867|     18|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (504:14): [True: 18, False: 0]
  ------------------
  505|     18|			return EX_VAR(node.var);
  ------------------
  |  |  755|     18|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     18|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  506|     18|		} else {
  507|       |			return NULL;
  508|      0|		}
  509|     35|	}
  510|     40|}
zend_execute.c:_get_zval_ptr_var:
  261|  14.6k|{
  262|  14.6k|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|  14.6k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  14.6k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  263|       |
  264|  14.6k|	return ret;
  265|  14.6k|}
zend_execute.c:_get_zval_ptr_tmp:
  252|  48.4k|{
  253|  48.4k|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|  48.4k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  48.4k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  254|       |
  255|  48.4k|	ZEND_ASSERT(Z_TYPE_P(ret) != IS_REFERENCE);
  ------------------
  |  |  112|  48.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (255:2): [True: 0, False: 48.4k]
  |  Branch (255:2): [True: 48.4k, False: 0]
  ------------------
  256|       |
  257|  48.4k|	return ret;
  258|  48.4k|}
zend_execute.c:zend_handle_fetch_obj_flags:
 3473|     11|{
 3474|     11|	switch (flags) {
 3475|      0|		case ZEND_FETCH_DIM_WRITE:
  ------------------
  |  | 1098|      0|#define ZEND_FETCH_DIM_WRITE	2
  ------------------
  |  Branch (3475:3): [True: 0, False: 11]
  ------------------
 3476|      0|			if (promotes_to_array(ptr)) {
  ------------------
  |  Branch (3476:8): [True: 0, False: 0]
  ------------------
 3477|      0|				if (!prop_info) {
  ------------------
  |  Branch (3477:9): [True: 0, False: 0]
  ------------------
 3478|      0|					break;
 3479|      0|				}
 3480|      0|				if (!check_type_array_assignable(prop_info->type)) {
  ------------------
  |  Branch (3480:9): [True: 0, False: 0]
  ------------------
 3481|      0|					zend_throw_auto_init_in_prop_error(prop_info);
 3482|      0|					if (result) ZVAL_ERROR(result);
  ------------------
  |  | 1271|      0|#define ZVAL_ERROR(z) do {				\
  |  | 1272|      0|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|      0|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3482:10): [True: 0, False: 0]
  ------------------
 3483|      0|					return 0;
 3484|      0|				}
 3485|      0|			}
 3486|      0|			break;
 3487|     11|		case ZEND_FETCH_REF:
  ------------------
  |  | 1097|     11|#define ZEND_FETCH_REF			1
  ------------------
  |  Branch (3487:3): [True: 11, False: 0]
  ------------------
 3488|     11|			if (Z_TYPE_P(ptr) != IS_REFERENCE) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(ptr) != IS_REFERENCE) {
  ------------------
  |  |  616|     11|#define IS_REFERENCE				10
  ------------------
  |  Branch (3488:8): [True: 11, False: 0]
  ------------------
 3489|     11|				if (!prop_info) {
  ------------------
  |  Branch (3489:9): [True: 0, False: 11]
  ------------------
 3490|      0|					break;
 3491|      0|				}
 3492|     11|				if (Z_TYPE_P(ptr) == IS_UNDEF) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(ptr) == IS_UNDEF) {
  ------------------
  |  |  606|     11|#define IS_UNDEF					0
  ------------------
  |  Branch (3492:9): [True: 2, False: 9]
  ------------------
 3493|      2|					if (!ZEND_TYPE_ALLOW_NULL(prop_info->type)) {
  ------------------
  |  |  276|      2|	(((t).type_mask & _ZEND_TYPE_NULLABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  149|      2|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  ------------------
  ------------------
  |  Branch (3493:10): [True: 1, False: 1]
  ------------------
 3494|      1|						zend_throw_access_uninit_prop_by_ref_error(prop_info);
 3495|      1|						if (result) ZVAL_ERROR(result);
  ------------------
  |  | 1271|      1|#define ZVAL_ERROR(z) do {				\
  |  | 1272|      1|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|      1|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3495:11): [True: 1, False: 0]
  ------------------
 3496|      1|						return 0;
 3497|      1|					}
 3498|      1|					ZVAL_NULL(ptr);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3499|      1|				}
 3500|       |
 3501|     10|				ZVAL_NEW_REF(ptr, ptr);
  ------------------
  |  | 1205|     10|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|     10|		zend_reference *_ref =									\
  |  | 1207|     10|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|     10|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|     10|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|     10|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     10|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     10|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     10|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|     10|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|     10|	do {												\
  |  |  |  | 1417|     10|		zval *_z1 = (z);								\
  |  |  |  | 1418|     10|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     10|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     10|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     10|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     10|	do {												\
  |  |  |  |  |  | 1408|     10|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     10|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     10|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|     10|		_ref->sources.ptr = NULL;									\
  |  | 1212|     10|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     10|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|     10|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|     10|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     10|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 3502|     10|				ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(ptr), prop_info);
  ------------------
  |  |  592|     10|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|     10|	(ref)->sources
  |  |  ------------------
  ------------------
 3503|     10|			}
 3504|     10|			break;
 3505|     10|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3505:3): [True: 0, False: 11]
  |  Branch (3505:12): [Folded, False: 0]
  |  Branch (3505:12): [Folded, False: 0]
  ------------------
 3506|     11|	}
 3507|     10|	return 1;
 3508|     11|}
zend_execute.c:zend_throw_access_uninit_prop_by_ref_error:
  641|      1|		const zend_property_info *prop) {
  642|      1|	zend_throw_error(NULL,
  643|      1|		"Cannot access uninitialized non-nullable property %s::$%s by reference",
  644|      1|		ZSTR_VAL(prop->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  645|      1|		zend_get_unmangled_property_name(prop->name));
  646|      1|}
zend_execute.c:i_zend_verify_type_assignable_zval:
 3945|     22|		const zend_property_info *info, const zval *zv, bool strict) {
 3946|     22|	zend_type type = info->type;
 3947|     22|	uint32_t type_mask;
 3948|     22|	uint8_t zv_type = Z_TYPE_P(zv);
  ------------------
  |  |  669|     22|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     22|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 3949|       |
 3950|     22|	if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(type, zv_type))) {
  ------------------
  |  |  456|     22|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 11]
  |  |  ------------------
  ------------------
 3951|     11|		return 1;
 3952|     11|	}
 3953|       |
 3954|     11|	if (ZEND_TYPE_IS_COMPLEX(type) && zv_type == IS_OBJECT
  ------------------
  |  |  157|     22|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|     11|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     11|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     11|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|     11|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 4, False: 7]
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_COMPLEX(type) && zv_type == IS_OBJECT
  ------------------
  |  |  614|     15|#define IS_OBJECT					8
  ------------------
  |  Branch (3954:36): [True: 3, False: 1]
  ------------------
 3955|      3|			&& zend_check_and_resolve_property_or_class_constant_class_type(info->ce, info->type, Z_OBJCE_P(zv))) {
  ------------------
  |  | 1012|      3|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      3|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3955:7): [True: 3, False: 0]
  ------------------
 3956|      3|		return 1;
 3957|      3|	}
 3958|       |
 3959|      8|	type_mask = ZEND_TYPE_FULL_MASK(type);
  ------------------
  |  |  261|      8|	((t).type_mask)
  ------------------
 3960|      8|	ZEND_ASSERT(!(type_mask & (MAY_BE_CALLABLE|MAY_BE_STATIC)));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3960:2): [True: 0, False: 8]
  |  Branch (3960:2): [True: 8, False: 0]
  ------------------
 3961|       |
 3962|       |	/* SSTH Exception: IS_LONG may be accepted as IS_DOUBLE (converted) */
 3963|      8|	if (strict) {
  ------------------
  |  Branch (3963:6): [True: 1, False: 7]
  ------------------
 3964|      1|		if ((type_mask & MAY_BE_DOUBLE) && zv_type == IS_LONG) {
  ------------------
  |  |   29|      1|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              		if ((type_mask & MAY_BE_DOUBLE) && zv_type == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (3964:7): [True: 0, False: 1]
  |  Branch (3964:38): [True: 0, False: 0]
  ------------------
 3965|      0|			return -1;
 3966|      0|		}
 3967|      1|		return 0;
 3968|      1|	}
 3969|       |
 3970|       |	/* NULL may be accepted only by nullable hints (this is already checked) */
 3971|      7|	if (zv_type == IS_NULL) {
  ------------------
  |  |  607|      7|#define IS_NULL						1
  ------------------
  |  Branch (3971:6): [True: 0, False: 7]
  ------------------
 3972|      0|		return 0;
 3973|      0|	}
 3974|       |
 3975|       |	/* Does not contain any type to which a coercion is possible */
 3976|      7|	if (!(type_mask & (MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING))
  ------------------
  |  |   28|      7|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      7|#define IS_LONG						4
  |  |  ------------------
  ------------------
              	if (!(type_mask & (MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING))
  ------------------
  |  |   29|      7|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      7|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              	if (!(type_mask & (MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING))
  ------------------
  |  |   30|      7|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  ------------------
  ------------------
  |  Branch (3976:6): [True: 1, False: 6]
  ------------------
 3977|      1|			&& (type_mask & MAY_BE_BOOL) != MAY_BE_BOOL) {
  ------------------
  |  |   27|      1|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			&& (type_mask & MAY_BE_BOOL) != MAY_BE_BOOL) {
  ------------------
  |  |   27|      1|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|      1|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|      1|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3977:7): [True: 1, False: 0]
  ------------------
 3978|      1|		return 0;
 3979|      1|	}
 3980|       |
 3981|       |	/* Coercion may be necessary, check separately */
 3982|      6|	return -1;
 3983|      7|}
zend_execute.c:i_zval_ptr_dtor_noref:
 4052|      7|static zend_always_inline void i_zval_ptr_dtor_noref(zval *zval_ptr) {
 4053|      7|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      7|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 3, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4054|      3|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 4055|      3|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) != IS_REFERENCE);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4055:3): [True: 0, False: 3]
  |  Branch (4055:3): [True: 3, False: 0]
  ------------------
 4056|      3|		GC_DTOR_NO_REF(ref);
  ------------------
  |  |  736|      3|	do { \
  |  |  737|      3|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      3|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 3]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      3|		} else { \
  |  |  741|      3|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      3|		} \
  |  |  743|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 4057|      3|	}
 4058|      7|}
zend_execute.c:i_zend_check_property_type:
 1043|  8.42k|{
 1044|  8.42k|	ZEND_ASSERT(!Z_ISREF_P(property));
  ------------------
  |  |  112|  8.42k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1044:2): [True: 0, False: 8.42k]
  |  Branch (1044:2): [True: 8.42k, False: 0]
  ------------------
 1045|  8.42k|	if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(info->type, Z_TYPE_P(property)))) {
  ------------------
  |  |  456|  8.42k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.53k, False: 6.89k]
  |  |  ------------------
  ------------------
 1046|  1.53k|		return 1;
 1047|  1.53k|	}
 1048|       |
 1049|  6.89k|	if (ZEND_TYPE_IS_COMPLEX(info->type) && Z_TYPE_P(property) == IS_OBJECT
  ------------------
  |  |  157|  13.7k|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|  6.89k|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|  6.89k|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  6.89k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|  6.89k|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 6.87k, False: 16]
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_COMPLEX(info->type) && Z_TYPE_P(property) == IS_OBJECT
  ------------------
  |  |  669|  6.87k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  6.87k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_COMPLEX(info->type) && Z_TYPE_P(property) == IS_OBJECT
  ------------------
  |  |  614|  13.7k|#define IS_OBJECT					8
  ------------------
  |  Branch (1049:42): [True: 6.87k, False: 2]
  ------------------
 1050|  6.87k|			&& zend_check_and_resolve_property_or_class_constant_class_type(info->ce, info->type, Z_OBJCE_P(property))) {
  ------------------
  |  | 1012|  6.87k|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|  6.87k|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  6.87k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1050:7): [True: 6.86k, False: 3]
  ------------------
 1051|  6.86k|		return 1;
 1052|  6.86k|	}
 1053|       |
 1054|     21|	uint32_t type_mask = ZEND_TYPE_FULL_MASK(info->type);
  ------------------
  |  |  261|     21|	((t).type_mask)
  ------------------
 1055|     21|	ZEND_ASSERT(!(type_mask & (MAY_BE_CALLABLE|MAY_BE_STATIC|MAY_BE_NEVER|MAY_BE_VOID)));
  ------------------
  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1055:2): [True: 0, False: 21]
  |  Branch (1055:2): [True: 21, False: 0]
  ------------------
 1056|     21|	return zend_verify_scalar_type_hint(type_mask, property, strict, false);
 1057|     21|}
zend_execute.c:zend_verify_property_type_error:
  852|      8|{
  853|      8|	zend_string *type_str;
  854|       |
  855|       |	/* we _may_ land here in case reading already errored and runtime cache thus has not been updated (i.e. it contains a valid but unrelated info) */
  856|      8|	if (EG(exception)) {
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  857|      0|		return;
  858|      0|	}
  859|       |
  860|      8|	type_str = zend_type_to_string(info->type);
  861|      8|	zend_type_error("Cannot assign %s to property %s::$%s of type %s",
  862|      8|		zend_zval_value_name(property),
  863|      8|		ZSTR_VAL(info->ce->name),
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  864|      8|		zend_get_unmangled_property_name(info->name),
  865|      8|		ZSTR_VAL(type_str));
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  866|      8|	zend_string_release(type_str);
  867|      8|}
zend_execute.c:zend_magic_get_property_type_inconsistency_error:
  870|      1|{
  871|       |	/* we _may_ land here in case reading already errored and runtime cache thus has not been updated (i.e. it contains a valid but unrelated info) */
  872|      1|	if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  873|      0|		return;
  874|      0|	}
  875|       |
  876|      1|	zend_string *type_str = zend_type_to_string(info->type);
  877|      1|	zend_type_error("Value of type %s returned from %s::__get() must be compatible with unset property %s::$%s of type %s",
  878|      1|		zend_zval_type_name(property),
  879|      1|		ZSTR_VAL(info->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  880|      1|		ZSTR_VAL(info->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  881|      1|		zend_get_unmangled_property_name(info->name),
  882|      1|		ZSTR_VAL(type_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  883|      1|	zend_string_release(type_str);
  884|      1|}
zend_execute.c:i_free_compiled_variables:
 4297|  3.24k|{
 4298|  3.24k|	zval *cv = EX_VAR_NUM(0);
  ------------------
  |  |  756|  3.24k|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|  3.24k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  3.24k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4299|  3.24k|	int count = EX(func)->op_array.last_var;
  ------------------
  |  |  730|  3.24k|#define EX(element) 			((execute_data)->element)
  ------------------
 4300|  6.08k|	while (EXPECTED(count != 0)) {
  ------------------
  |  |  456|  6.08k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.84k, False: 3.24k]
  |  |  ------------------
  ------------------
 4301|  2.84k|		i_zval_ptr_dtor(cv);
 4302|  2.84k|		cv++;
 4303|  2.84k|		count--;
 4304|  2.84k|	}
 4305|  3.24k|}
zend_execute.c:init_func_run_time_cache_i:
 4469|    672|{
 4470|    672|	void **run_time_cache;
 4471|       |
 4472|    672|	ZEND_ASSERT(RUN_TIME_CACHE(op_array) == NULL);
  ------------------
  |  |  112|    672|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4472:2): [True: 0, False: 672]
  |  Branch (4472:2): [True: 0, False: 672]
  |  Branch (4472:2): [True: 0, False: 672]
  |  Branch (4472:2): [True: 672, False: 0]
  ------------------
 4473|    672|	run_time_cache = zend_arena_alloc(&CG(arena), op_array->cache_size);
  ------------------
  |  |   35|    672|# define CG(v) (compiler_globals.v)
  ------------------
 4474|    672|	memset(run_time_cache, 0, op_array->cache_size);
 4475|    672|	ZEND_MAP_PTR_SET(op_array->run_time_cache, run_time_cache);
  ------------------
  |  |   59|    672|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|    672|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|    672|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    672|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 672]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|    672|		} else { \
  |  |   63|    672|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|    672|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|    672|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    672|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|    672|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 672]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|    672|		} \
  |  |   65|    672|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 672]
  |  |  ------------------
  ------------------
 4476|    672|}
zend_execute.c:init_func_run_time_cache:
 4480|    651|{
 4481|    651|	init_func_run_time_cache_i(op_array);
 4482|    651|}
zend_execute.c:i_init_func_execute_data:
 4431|  10.5k|{
 4432|  10.5k|	uint32_t first_extra_arg, num_args;
 4433|  10.5k|	ZEND_ASSERT(EX(func) == (zend_function*)op_array);
  ------------------
  |  |  112|  10.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4433:2): [True: 0, False: 10.5k]
  |  Branch (4433:2): [True: 10.5k, False: 0]
  ------------------
 4434|       |
 4435|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4436|       |	opline = op_array->opcodes;
 4437|       |#else
 4438|  10.5k|	EX(opline) = op_array->opcodes;
  ------------------
  |  |  730|  10.5k|#define EX(element) 			((execute_data)->element)
  ------------------
 4439|  10.5k|#endif
 4440|  10.5k|	EX(call) = NULL;
  ------------------
  |  |  730|  10.5k|#define EX(element) 			((execute_data)->element)
  ------------------
 4441|  10.5k|	EX(return_value) = return_value;
  ------------------
  |  |  730|  10.5k|#define EX(element) 			((execute_data)->element)
  ------------------
 4442|       |
 4443|       |	/* Handle arguments */
 4444|  10.5k|	first_extra_arg = op_array->num_args;
 4445|  10.5k|	num_args = EX_NUM_ARGS();
  ------------------
  |  |  734|  10.5k|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|  10.5k|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 4446|  10.5k|	if (UNEXPECTED(num_args > first_extra_arg)) {
  ------------------
  |  |  457|  10.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5.59k, False: 4.94k]
  |  |  ------------------
  ------------------
 4447|  5.59k|		if (!may_be_trampoline || EXPECTED(!(op_array->fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE))) {
  ------------------
  |  |  456|  5.59k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.92k, False: 670]
  |  |  ------------------
  ------------------
  |  Branch (4447:7): [True: 0, False: 5.59k]
  ------------------
 4448|  4.92k|			zend_copy_extra_args(EXECUTE_DATA_C);
  ------------------
  |  |   87|  4.92k|# define EXECUTE_DATA_C     execute_data
  ------------------
 4449|  4.92k|		}
 4450|  5.59k|	} else if (EXPECTED((op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS) == 0)) {
  ------------------
  |  |  456|  4.94k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.83k, False: 114]
  |  |  ------------------
  ------------------
 4451|       |		/* Skip useless ZEND_RECV and ZEND_RECV_INIT opcodes */
 4452|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4453|       |		opline += num_args;
 4454|       |#else
 4455|  4.83k|		EX(opline) += num_args;
  ------------------
  |  |  730|  4.83k|#define EX(element) 			((execute_data)->element)
  ------------------
 4456|  4.83k|#endif
 4457|  4.83k|	}
 4458|       |
 4459|       |	/* Initialize CV variables (skip arguments) */
 4460|  10.5k|	zend_init_cvs(num_args, op_array->last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  10.5k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  10.5k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4461|       |
 4462|  10.5k|	EX(run_time_cache) = RUN_TIME_CACHE(op_array);
  ------------------
  |  |  730|  10.5k|#define EX(element) 			((execute_data)->element)
  ------------------
              	EX(run_time_cache) = RUN_TIME_CACHE(op_array);
  ------------------
  |  |  858|  10.5k|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|  10.5k|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|  10.5k|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|  10.5k|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 10.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|  10.5k|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|  10.5k|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|  10.5k|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4463|       |
 4464|  10.5k|	EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|  10.5k|# define EG(v) (executor_globals.v)
  ------------------
 4465|  10.5k|}
zend_execute.c:zend_copy_extra_args:
 4372|  4.92k|{
 4373|  4.92k|	const zend_op_array *op_array = &EX(func)->op_array;
  ------------------
  |  |  730|  4.92k|#define EX(element) 			((execute_data)->element)
  ------------------
 4374|  4.92k|	uint32_t first_extra_arg = op_array->num_args;
 4375|  4.92k|	uint32_t num_args = EX_NUM_ARGS();
  ------------------
  |  |  734|  4.92k|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|  4.92k|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 4376|  4.92k|	zval *src;
 4377|  4.92k|	size_t delta;
 4378|  4.92k|	uint32_t count;
 4379|  4.92k|	uint32_t type_flags = 0;
 4380|       |
 4381|  4.92k|	if (EXPECTED((op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS) == 0)) {
  ------------------
  |  |  456|  4.92k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.91k, False: 9]
  |  |  ------------------
  ------------------
 4382|       |		/* Skip useless ZEND_RECV and ZEND_RECV_INIT opcodes */
 4383|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 4384|       |		opline += first_extra_arg;
 4385|       |#else
 4386|  4.91k|		EX(opline) += first_extra_arg;
  ------------------
  |  |  730|  4.91k|#define EX(element) 			((execute_data)->element)
  ------------------
 4387|  4.91k|#endif
 4388|       |
 4389|  4.91k|	}
 4390|       |
 4391|       |	/* move extra args into separate array after all CV and TMP vars */
 4392|  4.92k|	src = EX_VAR_NUM(num_args - 1);
  ------------------
  |  |  756|  4.92k|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|  4.92k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  4.92k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4393|  4.92k|	delta = op_array->last_var + op_array->T - first_extra_arg;
 4394|  4.92k|	count = num_args - first_extra_arg;
 4395|  4.92k|	if (EXPECTED(delta != 0)) {
  ------------------
  |  |  456|  4.92k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.24k, False: 675]
  |  |  ------------------
  ------------------
 4396|  4.24k|		delta *= sizeof(zval);
 4397|  89.6k|		do {
 4398|  89.6k|			type_flags |= Z_TYPE_INFO_P(src);
  ------------------
  |  |  678|  89.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|  89.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 4399|  89.6k|			ZVAL_COPY_VALUE((zval*)(((char*)src) + delta), src);
  ------------------
  |  | 1416|  89.6k|	do {												\
  |  | 1417|  89.6k|		zval *_z1 = (z);								\
  |  | 1418|  89.6k|		const zval *_z2 = (v);							\
  |  | 1419|  89.6k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  89.6k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  89.6k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  89.6k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  89.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  89.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  89.6k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  89.6k|	do {												\
  |  |  |  | 1408|  89.6k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  89.6k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  89.6k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  89.6k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  89.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  89.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  89.6k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 89.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  89.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 89.6k]
  |  |  ------------------
  ------------------
 4400|  89.6k|			ZVAL_UNDEF(src);
  ------------------
  |  | 1055|  89.6k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  89.6k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  89.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  89.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  89.6k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  89.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 89.6k]
  |  |  ------------------
  ------------------
 4401|  89.6k|			src--;
 4402|  89.6k|		} while (--count);
  ------------------
  |  Branch (4402:12): [True: 85.4k, False: 4.24k]
  ------------------
 4403|  4.24k|		if (Z_TYPE_INFO_REFCOUNTED(type_flags)) {
  ------------------
  |  |  820|  4.24k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  ------------------
  |  |  |  |  711|  4.24k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  ------------------
  |  |  |  Branch (820:36): [True: 3.99k, False: 255]
  |  |  ------------------
  ------------------
 4404|  3.99k|			ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_FREE_EXTRA_ARGS);
  ------------------
  |  |  703|  3.99k|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|  3.99k|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|  3.99k|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|  3.99k|		call_info |= (flag); \
  |  |  |  |  697|  3.99k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 3.99k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|  3.99k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 3.99k]
  |  |  ------------------
  ------------------
 4405|  3.99k|		}
 4406|  4.24k|	} else {
 4407|  2.01k|		do {
 4408|  2.01k|			if (Z_REFCOUNTED_P(src)) {
  ------------------
  |  |  942|  2.01k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  2.01k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  2.01k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 672, False: 1.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4409|    672|				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_FREE_EXTRA_ARGS);
  ------------------
  |  |  703|    672|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|    672|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|    672|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|    672|		call_info |= (flag); \
  |  |  |  |  697|    672|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 672]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|    672|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 672]
  |  |  ------------------
  ------------------
 4410|    672|				break;
 4411|    672|			}
 4412|  1.33k|			src--;
 4413|  1.33k|		} while (--count);
  ------------------
  |  Branch (4413:12): [True: 1.33k, False: 3]
  ------------------
 4414|    675|	}
 4415|  4.92k|}
zend_execute.c:zend_init_cvs:
 4418|  10.5k|{
 4419|  10.5k|	if (EXPECTED(first < last)) {
  ------------------
  |  |  456|  10.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.05k, False: 9.48k]
  |  |  ------------------
  ------------------
 4420|  1.05k|		uint32_t count = last - first;
 4421|  1.05k|		zval *var = EX_VAR_NUM(first);
  ------------------
  |  |  756|  1.05k|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|  1.05k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  1.05k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4422|       |
 4423|  1.28k|		do {
 4424|  1.28k|			ZVAL_UNDEF(var);
  ------------------
  |  | 1055|  1.28k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  1.28k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  1.28k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.28k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  1.28k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  1.28k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1.28k]
  |  |  ------------------
  ------------------
 4425|  1.28k|			var++;
 4426|  1.28k|		} while (--count);
  ------------------
  |  Branch (4426:12): [True: 226, False: 1.05k]
  ------------------
 4427|  1.05k|	}
 4428|  10.5k|}
zend_execute.c:i_init_code_execute_data:
 4523|  30.9k|{
 4524|  30.9k|	ZEND_ASSERT(EX(func) == (zend_function*)op_array);
  ------------------
  |  |  112|  30.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4524:2): [True: 0, False: 30.9k]
  |  Branch (4524:2): [True: 30.9k, False: 0]
  ------------------
 4525|       |
 4526|  30.9k|	EX(opline) = op_array->opcodes;
  ------------------
  |  |  730|  30.9k|#define EX(element) 			((execute_data)->element)
  ------------------
 4527|  30.9k|	EX(call) = NULL;
  ------------------
  |  |  730|  30.9k|#define EX(element) 			((execute_data)->element)
  ------------------
 4528|  30.9k|	EX(return_value) = return_value;
  ------------------
  |  |  730|  30.9k|#define EX(element) 			((execute_data)->element)
  ------------------
 4529|       |
 4530|  30.9k|	if (op_array->last_var) {
  ------------------
  |  Branch (4530:6): [True: 2.44k, False: 28.5k]
  ------------------
 4531|  2.44k|		zend_attach_symbol_table(execute_data);
 4532|  2.44k|	}
 4533|       |
 4534|  30.9k|	if (!ZEND_MAP_PTR(op_array->run_time_cache)) {
  ------------------
  |  |   31|  30.9k|	ptr ## __ptr
  ------------------
  |  Branch (4534:6): [True: 30.9k, False: 0]
  ------------------
 4535|  30.9k|		void *ptr;
 4536|       |
 4537|  30.9k|		ZEND_ASSERT(op_array->fn_flags & ZEND_ACC_HEAP_RT_CACHE);
  ------------------
  |  |  112|  30.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4537:3): [True: 0, False: 30.9k]
  |  Branch (4537:3): [True: 30.9k, False: 0]
  ------------------
 4538|  30.9k|		ptr = emalloc(op_array->cache_size);
  ------------------
  |  |  150|  30.9k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  30.9k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  30.9k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  30.9k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  30.9k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4539|  30.9k|		ZEND_MAP_PTR_INIT(op_array->run_time_cache, ptr);
  ------------------
  |  |   38|  30.9k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  30.9k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  30.9k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  30.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 30.9k]
  |  |  ------------------
  ------------------
 4540|  30.9k|		memset(ptr, 0, op_array->cache_size);
 4541|  30.9k|	}
 4542|  30.9k|	EX(run_time_cache) = RUN_TIME_CACHE(op_array);
  ------------------
  |  |  730|  30.9k|#define EX(element) 			((execute_data)->element)
  ------------------
              	EX(run_time_cache) = RUN_TIME_CACHE(op_array);
  ------------------
  |  |  858|  30.9k|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|  30.9k|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|  30.9k|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|  30.9k|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 30.9k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|  30.9k|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|  30.9k|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|  30.9k|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4543|       |
 4544|  30.9k|	EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  ------------------
 4545|  30.9k|}
zend_execute.c:cleanup_unfinished_calls:
 4774|  3.89k|{
 4775|  3.89k|	if (UNEXPECTED(EX(call))) {
  ------------------
  |  |  457|  3.89k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 170, False: 3.72k]
  |  |  ------------------
  ------------------
 4776|    170|		zend_execute_data *call = EX(call);
  ------------------
  |  |  730|    170|#define EX(element) 			((execute_data)->element)
  ------------------
 4777|    170|		zend_op *opline = EX(func)->op_array.opcodes + op_num;
  ------------------
  |  |  730|    170|#define EX(element) 			((execute_data)->element)
  ------------------
 4778|    170|		int level;
 4779|    170|		int do_exit;
 4780|       |
 4781|    170|		if (UNEXPECTED(opline->opcode == ZEND_INIT_FCALL ||
  ------------------
  |  |  457|  2.55k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 37, False: 133]
  |  |  |  Branch (457:52): [True: 0, False: 170]
  |  |  |  Branch (457:52): [True: 18, False: 152]
  |  |  |  Branch (457:52): [True: 0, False: 152]
  |  |  |  Branch (457:52): [True: 2, False: 150]
  |  |  |  Branch (457:52): [True: 1, False: 149]
  |  |  |  Branch (457:52): [True: 7, False: 142]
  |  |  |  Branch (457:52): [True: 2, False: 140]
  |  |  |  Branch (457:52): [True: 0, False: 140]
  |  |  |  Branch (457:52): [True: 7, False: 133]
  |  |  ------------------
  ------------------
 4782|    170|			opline->opcode == ZEND_INIT_FCALL_BY_NAME ||
 4783|    170|			opline->opcode == ZEND_INIT_NS_FCALL_BY_NAME ||
 4784|    170|			opline->opcode == ZEND_INIT_DYNAMIC_CALL ||
 4785|    170|			opline->opcode == ZEND_INIT_USER_CALL ||
 4786|    170|			opline->opcode == ZEND_INIT_METHOD_CALL ||
 4787|    170|			opline->opcode == ZEND_INIT_STATIC_METHOD_CALL ||
 4788|    170|			opline->opcode == ZEND_INIT_PARENT_PROPERTY_HOOK_CALL ||
 4789|    170|			opline->opcode == ZEND_NEW)) {
 4790|     37|			ZEND_ASSERT(op_num);
  ------------------
  |  |  112|     37|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4790:4): [True: 0, False: 37]
  |  Branch (4790:4): [True: 37, False: 0]
  ------------------
 4791|     37|			opline--;
 4792|     37|		}
 4793|       |
 4794|    187|		do {
 4795|       |			/* If the exception was thrown during a function call there might be
 4796|       |			 * arguments pushed to the stack that have to be dtor'ed. */
 4797|       |
 4798|       |			/* find the number of actually passed arguments */
 4799|    187|			level = 0;
 4800|    187|			do_exit = 0;
 4801|    546|			do {
 4802|    546|				switch (opline->opcode) {
  ------------------
  |  Branch (4802:13): [True: 375, False: 171]
  ------------------
 4803|     56|					case ZEND_DO_FCALL:
  ------------------
  |  |  183|     56|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (4803:6): [True: 56, False: 490]
  ------------------
 4804|     56|					case ZEND_DO_ICALL:
  ------------------
  |  |  251|     56|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (4804:6): [True: 0, False: 546]
  ------------------
 4805|     56|					case ZEND_DO_UCALL:
  ------------------
  |  |  252|     56|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (4805:6): [True: 0, False: 546]
  ------------------
 4806|     56|					case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|     56|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (4806:6): [True: 0, False: 546]
  ------------------
 4807|     56|					case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|     56|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (4807:6): [True: 0, False: 546]
  ------------------
 4808|     56|						level++;
 4809|     56|						break;
 4810|    170|					case ZEND_INIT_FCALL:
  ------------------
  |  |  184|    170|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4810:6): [True: 170, False: 376]
  ------------------
 4811|    173|					case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|    173|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (4811:6): [True: 3, False: 543]
  ------------------
 4812|    179|					case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|    179|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (4812:6): [True: 6, False: 540]
  ------------------
 4813|    183|					case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|    183|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (4813:6): [True: 4, False: 542]
  ------------------
 4814|    184|					case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|    184|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (4814:6): [True: 1, False: 545]
  ------------------
 4815|    193|					case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|    193|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (4815:6): [True: 9, False: 537]
  ------------------
 4816|    199|					case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|    199|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (4816:6): [True: 6, False: 540]
  ------------------
 4817|    199|					case ZEND_INIT_PARENT_PROPERTY_HOOK_CALL:
  ------------------
  |  |  331|    199|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (4817:6): [True: 0, False: 546]
  ------------------
 4818|    212|					case ZEND_NEW:
  ------------------
  |  |  191|    212|#define ZEND_NEW                             68
  ------------------
  |  Branch (4818:6): [True: 13, False: 533]
  ------------------
 4819|    212|						if (level == 0) {
  ------------------
  |  Branch (4819:11): [True: 156, False: 56]
  ------------------
 4820|    156|							ZEND_CALL_NUM_ARGS(call) = 0;
  ------------------
  |  |  712|    156|	(call)->This.u2.num_args
  ------------------
 4821|    156|							do_exit = 1;
 4822|    156|						}
 4823|    212|						level--;
 4824|    212|						break;
 4825|     63|					case ZEND_SEND_VAL:
  ------------------
  |  |  188|     63|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (4825:6): [True: 63, False: 483]
  ------------------
 4826|     79|					case ZEND_SEND_VAL_EX:
  ------------------
  |  |  238|     79|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (4826:6): [True: 16, False: 530]
  ------------------
 4827|     96|					case ZEND_SEND_VAR:
  ------------------
  |  |  239|     96|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (4827:6): [True: 17, False: 529]
  ------------------
 4828|     98|					case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|     98|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (4828:6): [True: 2, False: 544]
  ------------------
 4829|     98|					case ZEND_SEND_FUNC_ARG:
  ------------------
  |  |  307|     98|#define ZEND_SEND_FUNC_ARG                  185
  ------------------
  |  Branch (4829:6): [True: 0, False: 546]
  ------------------
 4830|    100|					case ZEND_SEND_REF:
  ------------------
  |  |  190|    100|#define ZEND_SEND_REF                        67
  ------------------
  |  Branch (4830:6): [True: 2, False: 544]
  ------------------
 4831|    100|					case ZEND_SEND_VAR_NO_REF:
  ------------------
  |  |  228|    100|#define ZEND_SEND_VAR_NO_REF                106
  ------------------
  |  Branch (4831:6): [True: 0, False: 546]
  ------------------
 4832|    100|					case ZEND_SEND_VAR_NO_REF_EX:
  ------------------
  |  |  173|    100|#define ZEND_SEND_VAR_NO_REF_EX              50
  ------------------
  |  Branch (4832:6): [True: 0, False: 546]
  ------------------
 4833|    100|					case ZEND_SEND_USER:
  ------------------
  |  |  242|    100|#define ZEND_SEND_USER                      120
  ------------------
  |  Branch (4833:6): [True: 0, False: 546]
  ------------------
 4834|    100|						if (level == 0) {
  ------------------
  |  Branch (4834:11): [True: 26, False: 74]
  ------------------
 4835|       |							/* For named args, the number of arguments is up to date. */
 4836|     26|							if (opline->op2_type != IS_CONST) {
  ------------------
  |  |  864|     26|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (4836:12): [True: 20, False: 6]
  ------------------
 4837|     20|								ZEND_CALL_NUM_ARGS(call) = opline->op2.num;
  ------------------
  |  |  712|     20|	(call)->This.u2.num_args
  ------------------
 4838|     20|							}
 4839|     26|							do_exit = 1;
 4840|     26|						}
 4841|    100|						break;
 4842|      2|					case ZEND_SEND_ARRAY:
  ------------------
  |  |  241|      2|#define ZEND_SEND_ARRAY                     119
  ------------------
  |  Branch (4842:6): [True: 2, False: 544]
  ------------------
 4843|      5|					case ZEND_SEND_UNPACK:
  ------------------
  |  |  287|      5|#define ZEND_SEND_UNPACK                    165
  ------------------
  |  Branch (4843:6): [True: 3, False: 543]
  ------------------
 4844|      7|					case ZEND_CHECK_UNDEF_ARGS:
  ------------------
  |  |  321|      7|#define ZEND_CHECK_UNDEF_ARGS               199
  ------------------
  |  Branch (4844:6): [True: 2, False: 544]
  ------------------
 4845|      7|						if (level == 0) {
  ------------------
  |  Branch (4845:11): [True: 5, False: 2]
  ------------------
 4846|      5|							do_exit = 1;
 4847|      5|						}
 4848|      7|						break;
 4849|    546|				}
 4850|    546|				if (!do_exit) {
  ------------------
  |  Branch (4850:9): [True: 359, False: 187]
  ------------------
 4851|    359|					opline--;
 4852|    359|				}
 4853|    546|			} while (!do_exit);
  ------------------
  |  Branch (4853:13): [True: 359, False: 187]
  ------------------
 4854|    187|			if (call->prev_execute_data) {
  ------------------
  |  Branch (4854:8): [True: 17, False: 170]
  ------------------
 4855|       |				/* skip current call region */
 4856|     17|				level = 0;
 4857|     17|				do_exit = 0;
 4858|     34|				do {
 4859|     34|					switch (opline->opcode) {
  ------------------
  |  Branch (4859:14): [True: 17, False: 17]
  ------------------
 4860|      0|						case ZEND_DO_FCALL:
  ------------------
  |  |  183|      0|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (4860:7): [True: 0, False: 34]
  ------------------
 4861|      0|						case ZEND_DO_ICALL:
  ------------------
  |  |  251|      0|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (4861:7): [True: 0, False: 34]
  ------------------
 4862|      0|						case ZEND_DO_UCALL:
  ------------------
  |  |  252|      0|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (4862:7): [True: 0, False: 34]
  ------------------
 4863|      0|						case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|      0|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (4863:7): [True: 0, False: 34]
  ------------------
 4864|      0|						case ZEND_CALLABLE_CONVERT:
  ------------------
  |  |  324|      0|#define ZEND_CALLABLE_CONVERT               202
  ------------------
  |  Branch (4864:7): [True: 0, False: 34]
  ------------------
 4865|      0|							level++;
 4866|      0|							break;
 4867|     13|						case ZEND_INIT_FCALL:
  ------------------
  |  |  184|     13|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (4867:7): [True: 13, False: 21]
  ------------------
 4868|     13|						case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|     13|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (4868:7): [True: 0, False: 34]
  ------------------
 4869|     13|						case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|     13|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (4869:7): [True: 0, False: 34]
  ------------------
 4870|     13|						case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|     13|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (4870:7): [True: 0, False: 34]
  ------------------
 4871|     13|						case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|     13|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (4871:7): [True: 0, False: 34]
  ------------------
 4872|     15|						case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|     15|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (4872:7): [True: 2, False: 32]
  ------------------
 4873|     16|						case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|     16|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (4873:7): [True: 1, False: 33]
  ------------------
 4874|     16|						case ZEND_INIT_PARENT_PROPERTY_HOOK_CALL:
  ------------------
  |  |  331|     16|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (4874:7): [True: 0, False: 34]
  ------------------
 4875|     17|						case ZEND_NEW:
  ------------------
  |  |  191|     17|#define ZEND_NEW                             68
  ------------------
  |  Branch (4875:7): [True: 1, False: 33]
  ------------------
 4876|     17|							if (level == 0) {
  ------------------
  |  Branch (4876:12): [True: 17, False: 0]
  ------------------
 4877|     17|								do_exit = 1;
 4878|     17|							}
 4879|     17|							level--;
 4880|     17|							break;
 4881|     34|					}
 4882|     34|					opline--;
 4883|     34|				} while (!do_exit);
  ------------------
  |  Branch (4883:14): [True: 17, False: 17]
  ------------------
 4884|     17|			}
 4885|       |
 4886|    187|			zend_vm_stack_free_args(EX(call));
  ------------------
  |  |  730|    187|#define EX(element) 			((execute_data)->element)
  ------------------
 4887|       |
 4888|    187|			if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  687|    187|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|    187|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|    187|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (4888:8): [True: 8, False: 179]
  ------------------
 4889|      8|				OBJ_RELEASE(Z_OBJ(call->This));
  ------------------
  |  |   44|      8|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 4890|      8|			}
 4891|    187|			if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  687|    187|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|    187|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|    187|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (4891:8): [True: 2, False: 185]
  ------------------
 4892|      2|				zend_free_extra_named_params(call->extra_named_params);
 4893|      2|			}
 4894|    187|			if (call->func->common.fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|    187|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (4894:8): [True: 5, False: 182]
  ------------------
 4895|      5|				zend_object_release(ZEND_CLOSURE_OBJECT(call->func));
  ------------------
  |  |   28|      5|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
 4896|    182|			} else if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|    182|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (4896:15): [True: 2, False: 180]
  ------------------
 4897|      2|				zend_string_release_ex(call->func->common.function_name, 0);
 4898|      2|				zend_free_trampoline(call->func);
  ------------------
  |  |  344|      2|#define zend_free_trampoline(func) do { \
  |  |  345|      2|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 1, False: 1]
  |  |  ------------------
  |  |  346|      1|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      1|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      1|		} else { \
  |  |  349|      1|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      1|		} \
  |  |  351|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4899|      2|			}
 4900|       |
 4901|    187|			EX(call) = call->prev_execute_data;
  ------------------
  |  |  730|    187|#define EX(element) 			((execute_data)->element)
  ------------------
 4902|    187|			zend_vm_stack_free_call_frame(call);
 4903|    187|			call = EX(call);
  ------------------
  |  |  730|    187|#define EX(element) 			((execute_data)->element)
  ------------------
 4904|    187|		} while (call);
  ------------------
  |  Branch (4904:12): [True: 17, False: 170]
  ------------------
 4905|    170|	}
 4906|  3.89k|}
zend_execute.c:cleanup_live_vars:
 4910|  4.03k|{
 4911|  6.42k|	for (uint32_t i = 0; i < EX(func)->op_array.last_live_range; i++) {
  ------------------
  |  |  730|  6.42k|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (4911:23): [True: 2.82k, False: 3.59k]
  ------------------
 4912|  2.82k|		const zend_live_range *range = &EX(func)->op_array.live_range[i];
  ------------------
  |  |  730|  2.82k|#define EX(element) 			((execute_data)->element)
  ------------------
 4913|  2.82k|		if (range->start > op_num) {
  ------------------
  |  Branch (4913:7): [True: 441, False: 2.38k]
  ------------------
 4914|       |			/* further blocks will not be relevant... */
 4915|    441|			break;
 4916|  2.38k|		} else if (op_num < range->end) {
  ------------------
  |  Branch (4916:14): [True: 1.30k, False: 1.08k]
  ------------------
 4917|  1.30k|			if (!catch_op_num || catch_op_num >= range->end) {
  ------------------
  |  Branch (4917:8): [True: 737, False: 564]
  |  Branch (4917:25): [True: 112, False: 452]
  ------------------
 4918|    849|				uint32_t kind = range->var & ZEND_LIVE_MASK;
  ------------------
  |  |  184|    849|#define ZEND_LIVE_MASK    7
  ------------------
 4919|    849|				uint32_t var_num = range->var & ~ZEND_LIVE_MASK;
  ------------------
  |  |  184|    849|#define ZEND_LIVE_MASK    7
  ------------------
 4920|    849|				zval *var = EX_VAR(var_num);
  ------------------
  |  |  755|    849|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    849|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4921|       |
 4922|       |				/* Handle the split range for loop vars */
 4923|    849|				if (catch_op_num) {
  ------------------
  |  Branch (4923:9): [True: 112, False: 737]
  ------------------
 4924|    112|					const zend_op *final_op = EX(func)->op_array.opcodes + range->end;
  ------------------
  |  |  730|    112|#define EX(element) 			((execute_data)->element)
  ------------------
 4925|    112|					if (final_op->extended_value & ZEND_FREE_ON_RETURN && (final_op->opcode == ZEND_FE_FREE || final_op->opcode == ZEND_FREE)) {
  ------------------
  |  | 1112|    224|#define ZEND_FREE_ON_RETURN     (1<<0)
  ------------------
              					if (final_op->extended_value & ZEND_FREE_ON_RETURN && (final_op->opcode == ZEND_FE_FREE || final_op->opcode == ZEND_FREE)) {
  ------------------
  |  |  249|      0|#define ZEND_FE_FREE                        127
  ------------------
              					if (final_op->extended_value & ZEND_FREE_ON_RETURN && (final_op->opcode == ZEND_FE_FREE || final_op->opcode == ZEND_FREE)) {
  ------------------
  |  |  193|      0|#define ZEND_FREE                            70
  ------------------
  |  Branch (4925:10): [True: 0, False: 112]
  |  Branch (4925:61): [True: 0, False: 0]
  |  Branch (4925:97): [True: 0, False: 0]
  ------------------
 4926|      0|						if (catch_op_num < range->end + final_op->op2.num) {
  ------------------
  |  Branch (4926:11): [True: 0, False: 0]
  ------------------
 4927|      0|							continue;
 4928|      0|						}
 4929|      0|					}
 4930|    112|				}
 4931|       |
 4932|    849|				if (kind == ZEND_LIVE_TMPVAR) {
  ------------------
  |  |  179|    849|#define ZEND_LIVE_TMPVAR  0
  ------------------
  |  Branch (4932:9): [True: 54, False: 795]
  ------------------
 4933|     54|					zval_ptr_dtor_nogc(var);
 4934|    795|				} else if (kind == ZEND_LIVE_NEW) {
  ------------------
  |  |  183|    795|#define ZEND_LIVE_NEW     4
  ------------------
  |  Branch (4934:16): [True: 698, False: 97]
  ------------------
 4935|    698|					zend_object *obj;
 4936|    698|					ZEND_ASSERT(Z_TYPE_P(var) == IS_OBJECT);
  ------------------
  |  |  112|    698|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4936:6): [True: 0, False: 698]
  |  Branch (4936:6): [True: 698, False: 0]
  ------------------
 4937|    698|					obj = Z_OBJ_P(var);
  ------------------
  |  | 1000|    698|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    698|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4938|    698|					zend_object_store_ctor_failed(obj);
 4939|    698|					OBJ_RELEASE(obj);
  ------------------
  |  |   44|    698|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 4940|    698|				} else if (kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  180|     97|#define ZEND_LIVE_LOOP    1
  ------------------
  |  Branch (4940:16): [True: 23, False: 74]
  ------------------
 4941|     23|					if (Z_TYPE_P(var) != IS_ARRAY && Z_FE_ITER_P(var) != (uint32_t)-1) {
  ------------------
  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(var) != IS_ARRAY && Z_FE_ITER_P(var) != (uint32_t)-1) {
  ------------------
  |  |  613|     46|#define IS_ARRAY					7
  ------------------
              					if (Z_TYPE_P(var) != IS_ARRAY && Z_FE_ITER_P(var) != (uint32_t)-1) {
  ------------------
  |  |  696|     13|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|     13|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
  |  Branch (4941:10): [True: 13, False: 10]
  |  Branch (4941:39): [True: 9, False: 4]
  ------------------
 4942|      9|						zend_hash_iterator_del(Z_FE_ITER_P(var));
  ------------------
  |  |  696|      9|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      9|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 4943|      9|					}
 4944|     23|					zval_ptr_dtor_nogc(var);
 4945|     74|				} else if (kind == ZEND_LIVE_ROPE) {
  ------------------
  |  |  182|     74|#define ZEND_LIVE_ROPE    3
  ------------------
  |  Branch (4945:16): [True: 1, False: 73]
  ------------------
 4946|      1|					zend_string **rope = (zend_string **)var;
 4947|      1|					const zend_op *last = EX(func)->op_array.opcodes + op_num;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 4948|      1|					while ((last->opcode != ZEND_ROPE_ADD && last->opcode != ZEND_ROPE_INIT)
  ------------------
  |  |  178|      2|#define ZEND_ROPE_ADD                        55
  ------------------
              					while ((last->opcode != ZEND_ROPE_ADD && last->opcode != ZEND_ROPE_INIT)
  ------------------
  |  |  177|      1|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (4948:14): [True: 1, False: 0]
  |  Branch (4948:47): [True: 0, False: 1]
  ------------------
 4949|      1|							|| last->result.var != var_num) {
  ------------------
  |  Branch (4949:11): [True: 0, False: 1]
  ------------------
 4950|      0|						ZEND_ASSERT(last >= EX(func)->op_array.opcodes);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4950:7): [True: 0, False: 0]
  |  Branch (4950:7): [True: 0, False: 0]
  ------------------
 4951|      0|						last--;
 4952|      0|					}
 4953|      1|					if (last->opcode == ZEND_ROPE_INIT) {
  ------------------
  |  |  177|      1|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (4953:10): [True: 1, False: 0]
  ------------------
 4954|      1|						zend_string_release_ex(*rope, 0);
 4955|      1|					} else {
 4956|      0|						uint32_t j = last->extended_value;
 4957|      0|						do {
 4958|      0|							zend_string_release_ex(rope[j], 0);
 4959|      0|						} while (j--);
  ------------------
  |  Branch (4959:16): [True: 0, False: 0]
  ------------------
 4960|      0|					}
 4961|     73|				} else if (kind == ZEND_LIVE_SILENCE) {
  ------------------
  |  |  181|     73|#define ZEND_LIVE_SILENCE 2
  ------------------
  |  Branch (4961:16): [True: 73, False: 0]
  ------------------
 4962|       |					/* restore previous error_reporting value */
 4963|     73|					if (E_HAS_ONLY_FATAL_ERRORS(EG(error_reporting))
  ------------------
  |  |   48|    146|#define E_HAS_ONLY_FATAL_ERRORS(mask) !((mask) & ~E_FATAL_ERRORS)
  |  |  ------------------
  |  |  |  |   46|     73|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|     73|#define E_ERROR				(1<<0L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     73|#define E_CORE_ERROR		(1<<4L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|     73|#define E_COMPILE_ERROR		(1<<6L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|     73|#define E_USER_ERROR		(1<<8L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|     73|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|     73|#define E_PARSE				(1<<2L)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (48:39): [True: 73, False: 0]
  |  |  ------------------
  ------------------
 4964|     73|							&& !E_HAS_ONLY_FATAL_ERRORS(Z_LVAL_P(var))) {
  ------------------
  |  |   48|     73|#define E_HAS_ONLY_FATAL_ERRORS(mask) !((mask) & ~E_FATAL_ERRORS)
  |  |  ------------------
  |  |  |  |   46|     73|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|     73|#define E_ERROR				(1<<0L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     73|#define E_CORE_ERROR		(1<<4L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|     73|#define E_COMPILE_ERROR		(1<<6L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|     73|#define E_USER_ERROR		(1<<8L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|     73|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|     73|#define E_PARSE				(1<<2L)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4964:11): [True: 0, False: 73]
  ------------------
 4965|      0|						EG(error_reporting) = Z_LVAL_P(var);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              						EG(error_reporting) = Z_LVAL_P(var);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 4966|      0|					}
 4967|     73|				}
 4968|    849|			}
 4969|  1.30k|		}
 4970|  2.82k|	}
 4971|  4.03k|}
zend_execute.c:zend_get_arg_offset_by_name:
 5483|     76|		const zend_function *fbc, const zend_string *arg_name, void **cache_slot) {
 5484|       |	/* Due to closures, the `fbc` address isn't unique if the memory address is reused.
 5485|       |	 * The argument info will be however and uniquely positions the arguments.
 5486|       |	 * We do support NULL arg_info, so we have to distinguish that from an uninitialized cache slot. */
 5487|     76|	void *unique_id = (void *) ((uintptr_t) fbc->common.arg_info | 1);
 5488|       |
 5489|     76|	if (EXPECTED(*cache_slot == unique_id)) {
  ------------------
  |  |  456|     76|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 76]
  |  |  ------------------
  ------------------
 5490|      0|		return *(uintptr_t *)(cache_slot + 1);
 5491|      0|	}
 5492|       |
 5493|       |	// TODO: Use a hash table?
 5494|     76|	uint32_t num_args = fbc->common.num_args;
 5495|    128|	for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (5495:23): [True: 115, False: 13]
  ------------------
 5496|    115|		const zend_arg_info *arg_info = &fbc->common.arg_info[i];
 5497|    115|		if (zend_string_equals(arg_name, arg_info->name)) {
  ------------------
  |  Branch (5497:7): [True: 63, False: 52]
  ------------------
 5498|     63|			if ((fbc->type == ZEND_USER_FUNCTION
  ------------------
  |  Branch (5498:9): [True: 10, False: 53]
  ------------------
 5499|     10|			  && (!fbc->op_array.refcount || !(fbc->op_array.fn_flags & ZEND_ACC_CLOSURE)))
  ------------------
  |  |  384|     10|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (5499:10): [True: 0, False: 10]
  |  Branch (5499:37): [True: 9, False: 1]
  ------------------
 5500|     54|			 || (fbc->type == ZEND_INTERNAL_FUNCTION
  ------------------
  |  Branch (5500:9): [True: 53, False: 1]
  ------------------
 5501|     60|			  && !(fbc->common.fn_flags & ZEND_ACC_NEVER_CACHE))) {
  ------------------
  |  |  375|     53|#define ZEND_ACC_NEVER_CACHE             (1 << 19) /*     |  X  |     |     */
  ------------------
  |  Branch (5501:9): [True: 51, False: 2]
  ------------------
 5502|     60|				*cache_slot = unique_id;
 5503|     60|				*(uintptr_t *)(cache_slot + 1) = i;
 5504|     60|			}
 5505|     63|			return i;
 5506|     63|		}
 5507|    115|	}
 5508|       |
 5509|     13|	if (fbc->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|     13|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (5509:6): [True: 11, False: 2]
  ------------------
 5510|     11|		if ((fbc->type == ZEND_USER_FUNCTION
  ------------------
  |  Branch (5510:8): [True: 3, False: 8]
  ------------------
 5511|      3|		  && (!fbc->op_array.refcount || !(fbc->op_array.fn_flags & ZEND_ACC_CLOSURE)))
  ------------------
  |  |  384|      3|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (5511:9): [True: 0, False: 3]
  |  Branch (5511:36): [True: 3, False: 0]
  ------------------
 5512|      8|		 || (fbc->type == ZEND_INTERNAL_FUNCTION
  ------------------
  |  Branch (5512:8): [True: 8, False: 0]
  ------------------
 5513|     11|		  && !(fbc->common.fn_flags & ZEND_ACC_NEVER_CACHE))) {
  ------------------
  |  |  375|      8|#define ZEND_ACC_NEVER_CACHE             (1 << 19) /*     |  X  |     |     */
  ------------------
  |  Branch (5513:8): [True: 8, False: 0]
  ------------------
 5514|     11|			*cache_slot = unique_id;
 5515|     11|			*(uintptr_t *)(cache_slot + 1) = fbc->common.num_args;
 5516|     11|		}
 5517|     11|		return fbc->common.num_args;
 5518|     11|	}
 5519|       |
 5520|      2|	return (uint32_t) -1;
 5521|     13|}
zend_execute.c:start_fake_frame:
 5585|      5|static zend_execute_data *start_fake_frame(zend_execute_data *call, const zend_op *opline) {
 5586|      5|	zend_execute_data *old_prev_execute_data = call->prev_execute_data;
 5587|      5|	call->prev_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 5588|      5|	call->opline = opline;
 5589|      5|	EG(current_execute_data) = call;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 5590|      5|	return old_prev_execute_data;
 5591|      5|}
zend_execute.c:end_fake_frame:
 5593|      5|static void end_fake_frame(zend_execute_data *call, zend_execute_data *old_prev_execute_data) {
 5594|      5|	zend_execute_data *prev_execute_data = call->prev_execute_data;
 5595|      5|	EG(current_execute_data) = prev_execute_data;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 5596|      5|	call->prev_execute_data = old_prev_execute_data;
 5597|      5|	if (UNEXPECTED(EG(exception)) && ZEND_USER_CODE(prev_execute_data->func->common.type)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 2]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(EG(exception)) && ZEND_USER_CODE(prev_execute_data->func->common.type)) {
  ------------------
  |  | 1081|      3|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 5598|      3|		zend_rethrow_exception(prev_execute_data);
 5599|      3|	}
 5600|      5|}
zend_execute.c:_get_zval_ptr_cv_BP_VAR_R:
  348|  1.21k|{
  349|  1.21k|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|  1.21k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.21k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  350|       |
  351|  1.21k|	if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.21k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 425, False: 789]
  |  |  ------------------
  ------------------
  352|    425|		return zval_undefined_cv(var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    425|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    425|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  353|    425|	}
  354|    789|	return ret;
  355|  1.21k|}
zend_execute.c:_get_zval_ptr_cv_deref_BP_VAR_R:
  358|    375|{
  359|    375|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|    375|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    375|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  360|       |
  361|    375|	if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) {
  ------------------
  |  |  457|    375|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 365]
  |  |  ------------------
  ------------------
  362|     10|		return zval_undefined_cv(var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  363|     10|	}
  364|    365|	ZVAL_DEREF(ret);
  ------------------
  |  | 1474|    365|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    365|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    365|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 179, False: 186]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|    179|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|    179|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|    179|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|    179|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|    179|		}												\
  |  | 1478|    365|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 365]
  |  |  ------------------
  ------------------
  365|    365|	return ret;
  366|    375|}
zend_execute.c:_get_zval_ptr_ptr_var:
  513|  9.27k|{
  514|  9.27k|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|  9.27k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  9.27k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  515|       |
  516|  9.27k|	if (EXPECTED(Z_TYPE_P(ret) == IS_INDIRECT)) {
  ------------------
  |  |  456|  9.27k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8.70k, False: 572]
  |  |  ------------------
  ------------------
  517|  8.70k|		ret = Z_INDIRECT_P(ret);
  ------------------
  |  | 1044|  8.70k|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|  8.70k|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  518|  8.70k|	}
  519|  9.27k|	return ret;
  520|  9.27k|}
zend_execute.c:zend_fetch_dimension_address_inner_W_CONST:
 2891|    107|{
 2892|    107|	return zend_fetch_dimension_address_inner(ht, dim, IS_CONST, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  |  864|    107|#define IS_CONST	(1<<0)
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_CONST, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  | 1075|    107|#define BP_VAR_W			1
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_CONST, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  |   89|    107|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    107|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2893|    107|}
zend_execute.c:zend_assign_to_object_dim:
 1562|     20|{
 1563|     20|	obj->handlers->write_dimension(obj, dim, value);
 1564|       |
 1565|     20|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 19]
  |  |  ------------------
  ------------------
 1566|      1|		ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1567|      1|	}
 1568|     20|}
zend_execute.c:zend_assign_to_string_offset:
 2041|     21|{
 2042|     21|	zend_uchar c;
 2043|     21|	size_t string_len;
 2044|     21|	zend_long offset;
 2045|     21|	zend_string *s;
 2046|       |
 2047|       |	/* separate string */
 2048|     21|	if (Z_REFCOUNTED_P(str) && Z_REFCOUNT_P(str) == 1) {
  ------------------
  |  |  942|     21|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     42|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     21|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 10, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(str) && Z_REFCOUNT_P(str) == 1) {
  ------------------
  |  | 1275|     10|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (2048:29): [True: 5, False: 5]
  ------------------
 2049|      5|		s = Z_STR_P(str);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2050|     16|	} else {
 2051|     16|		s = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  985|     16|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     16|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		s = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  988|     16|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     16|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2052|     16|		ZSTR_H(s) = ZSTR_H(Z_STR_P(str));
  ------------------
  |  |   69|     16|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
              		ZSTR_H(s) = ZSTR_H(Z_STR_P(str));
  ------------------
  |  |   69|     16|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 2053|     16|		if (Z_REFCOUNTED_P(str)) {
  ------------------
  |  |  942|     16|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     16|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     16|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 5, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2054|      5|			GC_DELREF(Z_STR_P(str));
  ------------------
  |  |  719|      5|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2055|      5|		}
 2056|     16|		ZVAL_NEW_STR(str, s);
  ------------------
  |  | 1105|     16|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     16|		zval *__z = (z);						\
  |  | 1107|     16|		zend_string *__s = (s);					\
  |  | 1108|     16|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     16|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     16|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     16|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     16|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     16|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 2057|     16|	}
 2058|       |
 2059|     21|	if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
  ------------------
  |  |  456|     21|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 2]
  |  |  ------------------
  ------------------
 2060|     19|		offset = Z_LVAL_P(dim);
  ------------------
  |  |  976|     19|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     19|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2061|     19|	} else {
 2062|       |		/* The string may be destroyed while throwing the notice.
 2063|       |		 * Temporarily increase the refcount to detect this situation. */
 2064|      2|		GC_ADDREF(s);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2065|      2|		offset = zend_check_string_offset(dim, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      2|#define BP_VAR_W			1
  ------------------
              		offset = zend_check_string_offset(dim, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2066|      2|		if (UNEXPECTED(GC_DELREF(s) == 0)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2067|      0|			zend_string_efree(s);
 2068|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2069|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2070|      0|			}
 2071|      0|			return;
 2072|      0|		}
 2073|       |		/* Illegal offset assignment */
 2074|      2|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2075|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2076|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2077|      0|			}
 2078|      0|			return;
 2079|      0|		}
 2080|      2|	}
 2081|       |
 2082|     21|	if (UNEXPECTED(offset < -(zend_long)ZSTR_LEN(s))) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 20]
  |  |  ------------------
  ------------------
 2083|       |		/* Error on negative offset */
 2084|      1|		zend_error(E_WARNING, "Illegal string offset " ZEND_LONG_FMT, offset);
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Illegal string offset " ZEND_LONG_FMT, offset);
  ------------------
  |  |   54|      1|# define ZEND_LONG_FMT "%" PRId64
  ------------------
 2085|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2086|      0|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2087|      0|		}
 2088|      1|		return;
 2089|      1|	}
 2090|       |
 2091|     20|	if (offset < 0) { /* Handle negative offset */
  ------------------
  |  Branch (2091:6): [True: 0, False: 20]
  ------------------
 2092|      0|		offset += (zend_long)ZSTR_LEN(s);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2093|      0|	}
 2094|       |
 2095|     20|	if (UNEXPECTED(Z_TYPE_P(value) != IS_STRING)) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 19]
  |  |  ------------------
  ------------------
 2096|      1|		zend_string *tmp;
 2097|       |
 2098|       |		/* The string may be destroyed while throwing the notice.
 2099|       |		 * Temporarily increase the refcount to detect this situation. */
 2100|      1|		GC_ADDREF(s);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2101|      1|		if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2102|      0|			zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2103|      0|		}
 2104|       |		/* Convert to string, just the time to pick the 1st byte */
 2105|      1|		tmp = zval_try_get_string_func(value);
 2106|      1|		if (UNEXPECTED(GC_DELREF(s) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2107|      0|			zend_string_efree(s);
 2108|      0|			if (tmp) {
  ------------------
  |  Branch (2108:8): [True: 0, False: 0]
  ------------------
 2109|      0|				zend_string_release_ex(tmp, 0);
 2110|      0|			}
 2111|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2112|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2113|      0|			}
 2114|      0|			return;
 2115|      0|		}
 2116|      1|		if (UNEXPECTED(!tmp)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2117|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2118|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2119|      0|			}
 2120|      0|			return;
 2121|      0|		}
 2122|       |
 2123|      1|		string_len = ZSTR_LEN(tmp);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2124|      1|		c = (zend_uchar)ZSTR_VAL(tmp)[0];
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2125|      1|		zend_string_release_ex(tmp, 0);
 2126|     19|	} else {
 2127|     19|		string_len = Z_STRLEN_P(value);
  ------------------
  |  |  988|     19|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     19|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2128|     19|		c = (zend_uchar)Z_STRVAL_P(value)[0];
  ------------------
  |  |  985|     19|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     19|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2129|     19|	}
 2130|       |
 2131|     20|	if (UNEXPECTED(string_len != 1)) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 18]
  |  |  ------------------
  ------------------
 2132|      2|		if (string_len == 0) {
  ------------------
  |  Branch (2132:7): [True: 1, False: 1]
  ------------------
 2133|       |			/* Error on empty input string */
 2134|      1|			zend_throw_error(NULL, "Cannot assign an empty string to a string offset");
 2135|      1|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2136|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2137|      0|			}
 2138|      1|			return;
 2139|      1|		}
 2140|       |
 2141|       |		/* The string may be destroyed while throwing the notice.
 2142|       |		 * Temporarily increase the refcount to detect this situation. */
 2143|      1|		GC_ADDREF(s);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2144|      1|		zend_error(E_WARNING, "Only the first byte will be assigned to the string offset");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 2145|      1|		if (UNEXPECTED(GC_DELREF(s) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2146|      0|			zend_string_efree(s);
 2147|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2148|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2149|      0|			}
 2150|      0|			return;
 2151|      0|		}
 2152|       |		/* Illegal offset assignment */
 2153|      1|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2154|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2155|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2156|      0|			}
 2157|      0|			return;
 2158|      0|		}
 2159|      1|	}
 2160|       |
 2161|     19|	if ((size_t)offset >= ZSTR_LEN(s)) {
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2161:6): [True: 10, False: 9]
  ------------------
 2162|       |		/* Extend string if needed */
 2163|     10|		zend_long old_len = ZSTR_LEN(s);
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2164|     10|		ZVAL_NEW_STR(str, zend_string_extend(s, (size_t)offset + 1, 0));
  ------------------
  |  | 1105|     10|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     10|		zval *__z = (z);						\
  |  | 1107|     10|		zend_string *__s = (s);					\
  |  | 1108|     10|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     10|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 2165|     10|		memset(Z_STRVAL_P(str) + old_len, ' ', offset - old_len);
  ------------------
  |  |  985|     10|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     10|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2166|     10|		Z_STRVAL_P(str)[offset+1] = 0;
  ------------------
  |  |  985|     10|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     10|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2167|     10|	} else {
 2168|      9|		zend_string_forget_hash_val(Z_STR_P(str));
  ------------------
  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2169|      9|	}
 2170|       |
 2171|     19|	Z_STRVAL_P(str)[offset] = c;
  ------------------
  |  |  985|     19|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     19|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2172|       |
 2173|     19|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 19]
  |  |  ------------------
  ------------------
 2174|       |		/* Return the new character */
 2175|      0|		ZVAL_CHAR(EX_VAR(opline->result.var), c);
  ------------------
  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      0|		char _c = (c);                          \
  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2176|      0|	}
 2177|     19|}
zend_execute.c:zend_check_string_offset:
 1716|     14|{
 1717|     14|	zend_long offset;
 1718|       |
 1719|     14|try_again:
 1720|     14|	switch(Z_TYPE_P(dim)) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 1721|      4|		case IS_LONG:
  ------------------
  |  |  610|      4|#define IS_LONG						4
  ------------------
  |  Branch (1721:3): [True: 4, False: 10]
  ------------------
 1722|      4|			return Z_LVAL_P(dim);
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1723|      5|		case IS_STRING:
  ------------------
  |  |  612|      5|#define IS_STRING					6
  ------------------
  |  Branch (1723:3): [True: 5, False: 9]
  ------------------
 1724|      5|		{
 1725|      5|			bool trailing_data = false;
 1726|       |			/* For BC reasons we allow errors so that we can warn on leading numeric string */
 1727|      5|			if (IS_LONG == is_numeric_string_ex(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL,
  ------------------
  |  |  610|      5|#define IS_LONG						4
  ------------------
              			if (IS_LONG == is_numeric_string_ex(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL,
  ------------------
  |  |  985|      5|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      5|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (IS_LONG == is_numeric_string_ex(Z_STRVAL_P(dim), Z_STRLEN_P(dim), &offset, NULL,
  ------------------
  |  |  988|      5|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      5|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1727:8): [True: 2, False: 3]
  ------------------
 1728|      5|					/* allow errors */ true, NULL, &trailing_data)) {
 1729|      2|				if (UNEXPECTED(trailing_data) && type != BP_VAR_UNSET) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              				if (UNEXPECTED(trailing_data) && type != BP_VAR_UNSET) {
  ------------------
  |  | 1079|      2|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (1729:38): [True: 2, False: 0]
  ------------------
 1730|      2|					zend_error(E_WARNING, "Illegal string offset \"%s\"", Z_STRVAL_P(dim));
  ------------------
  |  |   23|      2|#define E_WARNING			(1<<1L)
  ------------------
              					zend_error(E_WARNING, "Illegal string offset \"%s\"", Z_STRVAL_P(dim));
  ------------------
  |  |  985|      2|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      2|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1731|      2|				}
 1732|      2|				return offset;
 1733|      2|			}
 1734|      3|			zend_illegal_string_offset(dim, type);
 1735|      3|			return 0;
 1736|      5|		}
 1737|      1|		case IS_DOUBLE:
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (1737:3): [True: 1, False: 13]
  ------------------
 1738|       |			/* Suppress potential double warning */
 1739|      1|			zend_error(E_WARNING, "String offset cast occurred");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 1740|      1|			return zend_dval_to_lval_silent(Z_DVAL_P(dim));
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 1741|      0|		case IS_UNDEF:
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1741:3): [True: 0, False: 14]
  ------------------
 1742|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1743|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1744|      2|		case IS_NULL:
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (1744:3): [True: 2, False: 12]
  ------------------
 1745|      3|		case IS_FALSE:
  ------------------
  |  |  608|      3|#define IS_FALSE					2
  ------------------
  |  Branch (1745:3): [True: 1, False: 13]
  ------------------
 1746|      4|		case IS_TRUE:
  ------------------
  |  |  609|      4|#define IS_TRUE						3
  ------------------
  |  Branch (1746:3): [True: 1, False: 13]
  ------------------
 1747|      4|			zend_error(E_WARNING, "String offset cast occurred");
  ------------------
  |  |   23|      4|#define E_WARNING			(1<<1L)
  ------------------
 1748|      4|			break;
 1749|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (1749:3): [True: 0, False: 14]
  ------------------
 1750|      0|			dim = Z_REFVAL_P(dim);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1751|      0|			goto try_again;
 1752|      0|		default:
  ------------------
  |  Branch (1752:3): [True: 0, False: 14]
  ------------------
 1753|      0|			zend_illegal_string_offset(dim, type);
 1754|      0|			return 0;
 1755|     14|	}
 1756|       |
 1757|      4|	return zval_get_long_func(dim, /* is_strict */ false);
 1758|     14|}
zend_execute.c:zend_fetch_dimension_address_inner_W:
 2886|  1.00k|{
 2887|  1.00k|	return zend_fetch_dimension_address_inner(ht, dim, IS_TMP_VAR, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  |  865|  1.00k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_TMP_VAR, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  | 1075|  1.00k|#define BP_VAR_W			1
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_TMP_VAR, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.00k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.00k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2888|  1.00k|}
zend_execute.c:zend_use_new_element_for_string:
 2606|      5|{
 2607|       |	zend_throw_error(NULL, "[] operator not supported for strings");
 2608|      5|}
zend_execute.c:zend_throw_non_object_error:
  650|     21|{
  651|     21|	zend_string *tmp_property_name;
  652|     21|	zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name);
  653|       |
  654|     21|	if (opline->opcode == ZEND_PRE_INC_OBJ
  ------------------
  |  |  254|     42|#define ZEND_PRE_INC_OBJ                    132
  ------------------
  |  Branch (654:6): [True: 0, False: 21]
  ------------------
  655|     21|	 || opline->opcode == ZEND_PRE_DEC_OBJ
  ------------------
  |  |  255|     42|#define ZEND_PRE_DEC_OBJ                    133
  ------------------
  |  Branch (655:6): [True: 0, False: 21]
  ------------------
  656|     21|	 || opline->opcode == ZEND_POST_INC_OBJ
  ------------------
  |  |  256|     42|#define ZEND_POST_INC_OBJ                   134
  ------------------
  |  Branch (656:6): [True: 1, False: 20]
  ------------------
  657|     20|	 || opline->opcode == ZEND_POST_DEC_OBJ) {
  ------------------
  |  |  257|     20|#define ZEND_POST_DEC_OBJ                   135
  ------------------
  |  Branch (657:6): [True: 0, False: 20]
  ------------------
  658|      1|		zend_throw_error(NULL,
  659|      1|			"Attempt to increment/decrement property \"%s\" on %s",
  660|      1|			ZSTR_VAL(property_name), zend_zval_value_name(object)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  661|      1|		);
  662|     20|	} else if (opline->opcode == ZEND_FETCH_OBJ_W
  ------------------
  |  |  207|     40|#define ZEND_FETCH_OBJ_W                     85
  ------------------
  |  Branch (662:13): [True: 3, False: 17]
  ------------------
  663|     17|			|| opline->opcode == ZEND_FETCH_OBJ_RW
  ------------------
  |  |  210|     37|#define ZEND_FETCH_OBJ_RW                    88
  ------------------
  |  Branch (663:7): [True: 0, False: 17]
  ------------------
  664|     17|			|| opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG
  ------------------
  |  |  216|     37|#define ZEND_FETCH_OBJ_FUNC_ARG              94
  ------------------
  |  Branch (664:7): [True: 2, False: 15]
  ------------------
  665|     15|			|| opline->opcode == ZEND_ASSIGN_OBJ_REF) {
  ------------------
  |  |  156|     15|#define ZEND_ASSIGN_OBJ_REF                  32
  ------------------
  |  Branch (665:7): [True: 4, False: 11]
  ------------------
  666|      9|		zend_throw_error(NULL,
  667|      9|			"Attempt to modify property \"%s\" on %s",
  668|      9|			ZSTR_VAL(property_name), zend_zval_value_name(object)
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  669|      9|		);
  670|     11|	} else {
  671|     11|		zend_throw_error(NULL,
  672|     11|			"Attempt to assign property \"%s\" on %s",
  673|     11|			ZSTR_VAL(property_name), zend_zval_value_name(object)
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  674|     11|		);
  675|     11|	}
  676|     21|	zend_tmp_string_release(tmp_property_name);
  677|       |
  678|     21|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 13]
  |  |  ------------------
  ------------------
  679|      8|		ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      8|#define ZVAL_NULL(z) do {				\
  |  | 1060|      8|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      8|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  680|      8|	}
  681|     21|}
zend_execute.c:zend_assign_to_typed_prop:
 1074|     16|{
 1075|     16|	zval tmp;
 1076|       |
 1077|     16|	if (UNEXPECTED(info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  ------------------
  ------------------
 1078|      0|		if ((info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(property_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              		if ((info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(property_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if ((info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(property_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  |  Branch (1078:7): [True: 0, False: 0]
  |  Branch (1078:44): [True: 0, False: 0]
  ------------------
 1079|      0|			zend_readonly_property_modification_error(info);
 1080|      0|			return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1081|      0|		}
 1082|      0|		if (info->flags & ZEND_ACC_PPP_SET_MASK && !zend_asymmetric_property_has_set_access(info)) {
  ------------------
  |  |  422|      0|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      0|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      0|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      0|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1082:7): [True: 0, False: 0]
  |  Branch (1082:46): [True: 0, False: 0]
  ------------------
 1083|      0|			zend_asymmetric_visibility_property_modification_error(info, "modify");
 1084|      0|			return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1085|      0|		}
 1086|      0|	}
 1087|       |
 1088|     16|	ZVAL_DEREF(value);
  ------------------
  |  | 1474|     16|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     16|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 1089|     16|	ZVAL_COPY(&tmp, value);
  ------------------
  |  | 1425|     16|	do {												\
  |  | 1426|     16|		zval *_z1 = (z);								\
  |  | 1427|     16|		const zval *_z2 = (v);							\
  |  | 1428|     16|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     16|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     16|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     16|	do {												\
  |  |  |  | 1408|     16|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     16|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     16|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     16|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     16|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 1090|       |
 1091|     16|	if (UNEXPECTED(!i_zend_verify_property_type(info, &tmp, EX_USES_STRICT_TYPES()))) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 15]
  |  |  ------------------
  ------------------
 1092|      1|		zval_ptr_dtor(&tmp);
 1093|      1|		return &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1094|      1|	}
 1095|       |
 1096|     15|	Z_PROP_FLAG_P(property_val) &= ~IS_PROP_REINITABLE;
  ------------------
  |  | 1580|     15|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|     15|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|     15|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	Z_PROP_FLAG_P(property_val) &= ~IS_PROP_REINITABLE;
  ------------------
  |  | 1578|     15|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
 1097|       |
 1098|     15|	return zend_assign_to_variable_ex(property_val, &tmp, IS_TMP_VAR, EX_USES_STRICT_TYPES(), garbage_ptr);
  ------------------
  |  |  865|     15|#define IS_TMP_VAR	(1<<1)
  ------------------
              	return zend_assign_to_variable_ex(property_val, &tmp, IS_TMP_VAR, EX_USES_STRICT_TYPES(), garbage_ptr);
  ------------------
  |  |  740|     15|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     15|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     15|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1099|     16|}
zend_execute.c:zend_fetch_static_property_address:
 3818|    203|static zend_always_inline zval* zend_fetch_static_property_address(zend_property_info **prop_info, uint32_t cache_slot, int fetch_type, int flags OPLINE_DC EXECUTE_DATA_DC) {
 3819|    203|	zval *result;
 3820|    203|	zend_property_info *property_info;
 3821|       |
 3822|    203|	if (opline->op1_type == IS_CONST
  ------------------
  |  |  864|    406|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3822:6): [True: 201, False: 2]
  ------------------
 3823|    201|	 && (opline->op2_type == IS_CONST
  ------------------
  |  |  864|    402|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3823:7): [True: 81, False: 120]
  ------------------
 3824|    120|	  || (opline->op2_type == IS_UNUSED
  ------------------
  |  |  863|    240|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (3824:8): [True: 117, False: 3]
  ------------------
 3825|    117|	   && ((opline->op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF
  ------------------
  |  | 1049|    117|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              	   && ((opline->op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF
  ------------------
  |  | 1043|    234|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (3825:9): [True: 117, False: 0]
  ------------------
 3826|      0|	    || (opline->op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT)))
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              	    || (opline->op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT)))
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (3826:9): [True: 0, False: 0]
  ------------------
 3827|    198|	 && EXPECTED(CACHED_PTR(cache_slot + sizeof(void *)) != NULL)) {
  ------------------
  |  |  456|    198|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 123, False: 75]
  |  |  ------------------
  ------------------
 3828|    123|		result = CACHED_PTR(cache_slot + sizeof(void *));
  ------------------
  |  |  527|    123|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    123|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3829|    123|		property_info = CACHED_PTR(cache_slot + sizeof(void *) * 2);
  ------------------
  |  |  527|    123|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    123|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3830|       |
 3831|    123|		if ((fetch_type == BP_VAR_R || fetch_type == BP_VAR_RW)
  ------------------
  |  | 1074|    246|#define BP_VAR_R			0
  ------------------
              		if ((fetch_type == BP_VAR_R || fetch_type == BP_VAR_RW)
  ------------------
  |  | 1076|    123|#define BP_VAR_RW			2
  ------------------
  |  Branch (3831:8): [True: 0, False: 123]
  |  Branch (3831:34): [True: 110, False: 13]
  ------------------
 3832|    110|				&& UNEXPECTED(Z_TYPE_P(result) == IS_UNDEF)
  ------------------
  |  |  457|    233|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 110]
  |  |  ------------------
  ------------------
 3833|      0|				&& ZEND_TYPE_IS_SET(property_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3834|      0|			zend_throw_error(NULL, "Typed static property %s::$%s must not be accessed before initialization",
 3835|      0|				ZSTR_VAL(property_info->ce->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3836|      0|				zend_get_unmangled_property_name(property_info->name));
 3837|      0|			return NULL;
 3838|      0|		}
 3839|    123|	} else {
 3840|     80|		result = zend_fetch_static_property_address_ex(&property_info, cache_slot, fetch_type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     80|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     80|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		result = zend_fetch_static_property_address_ex(&property_info, cache_slot, fetch_type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     80|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     80|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3841|     80|		if (UNEXPECTED(!result)) {
  ------------------
  |  |  457|     80|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 18, False: 62]
  |  |  ------------------
  ------------------
 3842|     18|			return NULL;
 3843|     18|		}
 3844|     80|	}
 3845|       |
 3846|    185|	flags &= ZEND_FETCH_OBJ_FLAGS;
  ------------------
  |  | 1099|    185|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
 3847|    185|	if (flags && ZEND_TYPE_IS_SET(property_info->type)) {
  ------------------
  |  |  152|      7|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      7|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 1, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (3847:6): [True: 7, False: 178]
  ------------------
 3848|      1|		zend_handle_fetch_obj_flags(NULL, result, NULL, property_info, flags);
 3849|      1|	}
 3850|       |
 3851|    185|	if (prop_info) {
  ------------------
  |  Branch (3851:6): [True: 185, False: 0]
  ------------------
 3852|    185|		*prop_info = property_info;
 3853|    185|	}
 3854|       |
 3855|    185|	return result;
 3856|    203|}
zend_execute.c:zend_binary_assign_op_typed_ref:
 1676|      3|{
 1677|      3|	zval z_copy;
 1678|       |
 1679|       |	/* Make sure that in-place concatenation is used if the LHS is a string. */
 1680|      3|	if (opline->extended_value == ZEND_CONCAT && Z_TYPE(ref->val) == IS_STRING) {
  ------------------
  |  |  132|      6|#define ZEND_CONCAT                           8
  ------------------
              	if (opline->extended_value == ZEND_CONCAT && Z_TYPE(ref->val) == IS_STRING) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (opline->extended_value == ZEND_CONCAT && Z_TYPE(ref->val) == IS_STRING) {
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (1680:6): [True: 2, False: 1]
  |  Branch (1680:47): [True: 0, False: 2]
  ------------------
 1681|      0|		concat_function(&ref->val, &ref->val, value);
 1682|      0|		ZEND_ASSERT(Z_TYPE(ref->val) == IS_STRING && "Concat should return string");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1682:3): [True: 0, False: 0]
  |  Branch (1682:3): [True: 0, False: 0]
  |  Branch (1682:3): [True: 0, False: 0]
  |  Branch (1682:3): [True: 0, False: 0]
  ------------------
 1683|      0|		return;
 1684|      0|	}
 1685|       |
 1686|      3|	zend_binary_op(&z_copy, &ref->val, value OPLINE_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
 1687|      3|	if (EXPECTED(zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 1688|      2|		zval_ptr_dtor(&ref->val);
 1689|      2|		ZVAL_COPY_VALUE(&ref->val, &z_copy);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1690|      2|	} else {
 1691|      1|		zval_ptr_dtor(&z_copy);
 1692|      1|	}
 1693|      3|}
zend_execute.c:zend_binary_op:
 1619|  9.46k|{
 1620|  9.46k|	static const binary_op_type zend_binary_ops[] = {
 1621|  9.46k|		add_function,
 1622|  9.46k|		sub_function,
 1623|  9.46k|		mul_function,
 1624|  9.46k|		div_function,
 1625|  9.46k|		mod_function,
 1626|  9.46k|		shift_left_function,
 1627|  9.46k|		shift_right_function,
 1628|  9.46k|		concat_function,
 1629|  9.46k|		bitwise_or_function,
 1630|  9.46k|		bitwise_and_function,
 1631|  9.46k|		bitwise_xor_function,
 1632|  9.46k|		pow_function
 1633|  9.46k|	};
 1634|       |	/* size_t cast makes GCC to better optimize 64-bit PIC code */
 1635|  9.46k|	size_t opcode = (size_t)opline->extended_value;
 1636|       |
 1637|  9.46k|	return zend_binary_ops[opcode - ZEND_ADD](ret, op1, op2);
  ------------------
  |  |  125|  9.46k|#define ZEND_ADD                              1
  ------------------
 1638|  9.46k|}
zend_execute.c:_get_zval_ptr_cv_BP_VAR_RW:
  376|  6.57k|{
  377|  6.57k|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|  6.57k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  6.57k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  378|       |
  379|  6.57k|	if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) {
  ------------------
  |  |  457|  6.57k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 104, False: 6.46k]
  |  |  ------------------
  ------------------
  380|    104|		zval_undefined_cv(var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    104|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    104|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  381|    104|		ZVAL_NULL(ret);
  ------------------
  |  | 1059|    104|#define ZVAL_NULL(z) do {				\
  |  | 1060|    104|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    104|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    104|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    104|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    104|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 104]
  |  |  ------------------
  ------------------
  382|    104|		return ret;
  383|    104|	}
  384|  6.46k|	return ret;
  385|  6.57k|}
zend_execute.c:zend_fetch_dimension_address_inner_RW_CONST:
 2901|     23|{
 2902|     23|	return zend_fetch_dimension_address_inner(ht, dim, IS_CONST, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_CONST, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  | 1076|     23|#define BP_VAR_RW			2
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_CONST, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  |   89|     23|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     23|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2903|     23|}
zend_execute.c:_get_op_data_zval_ptr_r:
  433|     64|{
  434|     64|	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     64|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     64|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (434:6): [True: 32, False: 32]
  ------------------
  435|     32|		if (!ZEND_DEBUG || op_type == IS_VAR) {
  ------------------
  |  | 2105|     64|#define ZEND_DEBUG 1
  ------------------
              		if (!ZEND_DEBUG || op_type == IS_VAR) {
  ------------------
  |  |  866|     32|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (435:7): [Folded, False: 32]
  |  Branch (435:22): [True: 0, False: 32]
  ------------------
  436|      0|			return _get_zval_ptr_var(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  437|     32|		} else {
  438|     32|			ZEND_ASSERT(op_type == IS_TMP_VAR);
  ------------------
  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (438:4): [True: 0, False: 32]
  |  Branch (438:4): [True: 32, False: 0]
  ------------------
  439|     32|			return _get_zval_ptr_tmp(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     32|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     32|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  440|     32|		}
  441|     32|	} else {
  442|     32|		if (op_type == IS_CONST) {
  ------------------
  |  |  864|     32|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (442:7): [True: 22, False: 10]
  ------------------
  443|     22|			return RT_CONSTANT(opline + 1, node);
  ------------------
  |  |  841|     22|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  444|     22|		} else if (op_type == IS_CV) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (444:14): [True: 10, False: 0]
  ------------------
  445|     10|			return _get_zval_ptr_cv_BP_VAR_R(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  446|     10|		} else {
  447|       |			return NULL;
  448|      0|		}
  449|     32|	}
  450|     64|}
zend_execute.c:zend_binary_assign_op_dim_slow:
 2624|      1|{
 2625|      1|	if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2626|      1|		if (opline->op2_type == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (2626:7): [True: 1, False: 0]
  ------------------
 2627|      1|			zend_use_new_element_for_string();
 2628|      1|		} else {
 2629|      0|			zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
              			zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2630|      0|			zend_wrong_string_offset_error();
 2631|      0|		}
 2632|      1|	} else {
 2633|      0|		zend_use_scalar_as_array();
 2634|      0|	}
 2635|      1|}
zend_execute.c:zend_fetch_dimension_address_inner_RW:
 2896|     12|{
 2897|     12|	return zend_fetch_dimension_address_inner(ht, dim, IS_TMP_VAR, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_TMP_VAR, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  | 1076|     12|#define BP_VAR_RW			2
  ------------------
              	return zend_fetch_dimension_address_inner(ht, dim, IS_TMP_VAR, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2898|     12|}
zend_execute.c:zend_assign_op_overloaded_property:
 2431|      1|{
 2432|      1|	zval *z;
 2433|      1|	zval rv, res;
 2434|       |
 2435|      1|	GC_ADDREF(object);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2436|      1|	z = object->handlers->read_property(object, name, BP_VAR_R, cache_slot, &rv);
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
 2437|      1|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2438|      1|		OBJ_RELEASE(object);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2439|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2440|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2441|      0|		}
 2442|      1|		return;
 2443|      1|	}
 2444|      0|	if (zend_binary_op(&res, z, value OPLINE_CC) == SUCCESS) {
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
  |  Branch (2444:6): [True: 0, False: 0]
  ------------------
 2445|      0|		object->handlers->write_property(object, name, &res, cache_slot);
 2446|      0|	}
 2447|      0|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2448|      0|		ZVAL_COPY(EX_VAR(opline->result.var), &res);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2449|      0|	}
 2450|      0|	if (z == &rv) {
  ------------------
  |  Branch (2450:6): [True: 0, False: 0]
  ------------------
 2451|      0|		zval_ptr_dtor(z);
 2452|      0|	}
 2453|      0|	zval_ptr_dtor(&res);
 2454|      0|	OBJ_RELEASE(object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2455|      0|}
zend_execute.c:zend_wrong_assign_to_variable_reference:
  596|      8|{
  597|      8|	zend_error(E_NOTICE, "Only variables should be assigned by reference");
  ------------------
  |  |   25|      8|#define E_NOTICE			(1<<3L)
  ------------------
  598|      8|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  599|      0|		return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  600|      0|	}
  601|       |
  602|       |	/* Use IS_TMP_VAR instead of IS_VAR to avoid ISREF check */
  603|      8|	Z_TRY_ADDREF_P(value_ptr);
  ------------------
  |  | 1285|      8|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      8|	zval *_pz = (pz);				\
  |  | 1287|      8|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
  604|      8|	return zend_assign_to_variable_ex(variable_ptr, value_ptr, IS_TMP_VAR, EX_USES_STRICT_TYPES(), garbage_ptr);
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              	return zend_assign_to_variable_ex(variable_ptr, value_ptr, IS_TMP_VAR, EX_USES_STRICT_TYPES(), garbage_ptr);
  ------------------
  |  |  740|      8|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      8|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      8|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  605|      8|}
zend_execute.c:zend_assign_to_variable_reference:
  565|  1.21k|{
  566|  1.21k|	zend_reference *ref;
  567|       |
  568|  1.21k|	if (EXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  456|  1.21k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 142, False: 1.07k]
  |  |  ------------------
  ------------------
  569|    142|		ZVAL_NEW_REF(value_ptr, value_ptr);
  ------------------
  |  | 1205|    142|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|    142|		zend_reference *_ref =									\
  |  | 1207|    142|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|    142|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    142|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    142|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    142|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    142|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|    142|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|    142|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|    142|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|    142|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|    142|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    142|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|    142|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    142|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|    142|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|    142|	do {												\
  |  |  |  | 1417|    142|		zval *_z1 = (z);								\
  |  |  |  | 1418|    142|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    142|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    142|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    142|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    142|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    142|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    142|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    142|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    142|	do {												\
  |  |  |  |  |  | 1408|    142|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    142|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    142|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    142|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    142|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    142|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    142|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 142]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    142|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 142]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|    142|		_ref->sources.ptr = NULL;									\
  |  | 1212|    142|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|    142|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    142|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|    142|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|    142|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    142|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|    142|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    142|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    142|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    142|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    142|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    142|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|    142|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 142]
  |  |  ------------------
  ------------------
  570|  1.07k|	} else if (UNEXPECTED(variable_ptr == value_ptr)) {
  ------------------
  |  |  457|  1.07k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1.07k]
  |  |  ------------------
  ------------------
  571|      1|		return;
  572|      1|	}
  573|       |
  574|  1.21k|	ref = Z_REF_P(value_ptr);
  ------------------
  |  | 1030|  1.21k|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|  1.21k|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  575|  1.21k|	GC_ADDREF(ref);
  ------------------
  |  |  718|  1.21k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  576|  1.21k|	if (Z_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  942|  1.21k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  1.21k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  1.21k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 644, False: 571]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  577|    644|		*garbage_ptr = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|    644|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    644|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  578|    644|	}
  579|  1.21k|	ZVAL_REF(variable_ptr, ref);
  ------------------
  |  | 1189|  1.21k|#define ZVAL_REF(z, r) do {										\
  |  | 1190|  1.21k|		zval *__z = (z);										\
  |  | 1191|  1.21k|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|  1.21k|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|  1.21k|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|  1.21k|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|  1.21k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.21k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|  1.21k|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  1.21k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.21k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.21k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  1.21k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.21k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|  1.21k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 1.21k]
  |  |  ------------------
  ------------------
  580|  1.21k|}
zend_execute.c:_get_zval_ptr_cv_BP_VAR_W:
  388|  1.22k|{
  389|  1.22k|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|  1.22k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.22k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  390|       |
  391|  1.22k|	if (Z_TYPE_P(ret) == IS_UNDEF) {
  ------------------
  |  |  669|  1.22k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.22k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(ret) == IS_UNDEF) {
  ------------------
  |  |  606|  1.22k|#define IS_UNDEF					0
  ------------------
  |  Branch (391:6): [True: 105, False: 1.11k]
  ------------------
  392|    105|		ZVAL_NULL(ret);
  ------------------
  |  | 1059|    105|#define ZVAL_NULL(z) do {				\
  |  | 1060|    105|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    105|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    105|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    105|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    105|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 105]
  |  |  ------------------
  ------------------
  393|    105|	}
  394|  1.22k|	return ret;
  395|  1.22k|}
zend_execute.c:zend_assign_to_property_reference_var_const:
 3718|     31|{
 3719|     31|	zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_CONST, value_ptr
  ------------------
  |  |  866|     31|#define IS_VAR		(1<<2)
  ------------------
              	zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_CONST, value_ptr
  ------------------
  |  |  864|     31|#define IS_CONST	(1<<0)
  ------------------
 3720|     31|		OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     31|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     31|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     31|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     31|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3721|     31|}
zend_execute.c:zend_assign_to_property_reference:
 3673|     38|) {
 3674|     38|	zval variable, *variable_ptr = &variable;
 3675|     38|	void **cache_addr = (prop_op_type == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
  ------------------
  |  |  864|     38|#define IS_CONST	(1<<0)
  ------------------
              	void **cache_addr = (prop_op_type == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
  ------------------
  |  |  524|     35|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     35|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (3675:22): [True: 35, False: 3]
  ------------------
 3676|     38|	zend_refcounted *garbage = NULL;
 3677|     38|	zend_property_info *prop_info = NULL;
 3678|       |
 3679|     38|	zend_fetch_property_address(variable_ptr, container, container_op_type, prop_ptr, prop_op_type,
 3680|     38|		cache_addr, BP_VAR_W, 0, &prop_info OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|     38|#define BP_VAR_W			1
  ------------------
              		cache_addr, BP_VAR_W, 0, &prop_info OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     38|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     38|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		cache_addr, BP_VAR_W, 0, &prop_info OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     38|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     38|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3681|       |
 3682|     38|	if (EXPECTED(Z_TYPE_P(variable_ptr) == IS_INDIRECT)) {
  ------------------
  |  |  456|     38|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 31, False: 7]
  |  |  ------------------
  ------------------
 3683|     31|		variable_ptr = Z_INDIRECT_P(variable_ptr);
  ------------------
  |  | 1044|     31|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|     31|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 3684|     31|		if (/*OP_DATA_TYPE == IS_VAR &&*/
 3685|     31|				   (opline->extended_value & ZEND_RETURNS_FUNCTION) &&
  ------------------
  |  | 1206|     31|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (3685:8): [True: 1, False: 30]
  ------------------
 3686|      1|				   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 3687|       |
 3688|      1|			variable_ptr = zend_wrong_assign_to_variable_reference(
 3689|      1|				variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3690|     30|		} else if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      4|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      4|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3690:14): [True: 4, False: 26]
  ------------------
 3691|      4|			variable_ptr = zend_assign_to_typed_property_reference(prop_info, variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3692|     26|		} else {
 3693|     26|			zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage);
 3694|     26|		}
 3695|     31|	} else if (Z_ISERROR_P(variable_ptr)) {
  ------------------
  |  |  973|      7|#define Z_ISERROR_P(zval_p)			Z_ISERROR(*(zval_p))
  |  |  ------------------
  |  |  |  |  972|      7|#define Z_ISERROR(zval)				(Z_TYPE(zval) == _IS_ERROR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISERROR(zval)				(Z_TYPE(zval) == _IS_ERROR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  632|      7|#define _IS_ERROR					15
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (972:28): [True: 5, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3696|      5|		variable_ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 3697|      5|	} else {
 3698|      2|		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
 3699|      2|		zval_ptr_dtor(&variable);
 3700|      2|		variable_ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 3701|      2|	}
 3702|       |
 3703|     38|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 36]
  |  |  ------------------
  ------------------
 3704|      2|		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3705|      2|	}
 3706|     38|	if (garbage) {
  ------------------
  |  Branch (3706:6): [True: 1, False: 37]
  ------------------
 3707|      1|		GC_DTOR(garbage);
  ------------------
  |  |  726|      1|	do { \
  |  |  727|      1|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|      1|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  729|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|      1|		} else { \
  |  |  731|      1|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|      1|		} \
  |  |  733|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3708|      1|	}
 3709|     38|}
zend_execute.c:zend_fetch_property_address:
 3521|    163|) {
 3522|    163|	zval *ptr;
 3523|    163|	zend_object *zobj;
 3524|    163|	zend_string *name, *tmp_name;
 3525|    163|	void *_cache_slot[3] = {0};
 3526|    163|	if (prop_op_type != IS_CONST) {
  ------------------
  |  |  864|    163|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3526:6): [True: 14, False: 149]
  ------------------
 3527|     14|		cache_slot = _cache_slot;
 3528|    149|	} else {
 3529|    149|		ZEND_ASSERT(cache_slot);
  ------------------
  |  |  112|    149|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3529:3): [True: 0, False: 149]
  |  Branch (3529:3): [True: 149, False: 0]
  ------------------
 3530|    149|	}
 3531|       |
 3532|    163|	if (container_op_type != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  863|    326|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (container_op_type != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|    150|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 29, False: 121]
  |  |  ------------------
  ------------------
  |  Branch (3532:6): [True: 150, False: 13]
  ------------------
 3533|     29|		do {
 3534|     29|			if (Z_ISREF_P(container) && Z_TYPE_P(Z_REFVAL_P(container)) == IS_OBJECT) {
  ------------------
  |  |  964|     29|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     58|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     29|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     29|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 17, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(container) && Z_TYPE_P(Z_REFVAL_P(container)) == IS_OBJECT) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(container) && Z_TYPE_P(Z_REFVAL_P(container)) == IS_OBJECT) {
  ------------------
  |  |  614|     17|#define IS_OBJECT					8
  ------------------
  |  Branch (3534:32): [True: 14, False: 3]
  ------------------
 3535|     14|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|     14|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     14|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     14|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3536|     14|				break;
 3537|     14|			}
 3538|       |
 3539|     15|			if (container_op_type == IS_CV
  ------------------
  |  |  867|     30|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (3539:8): [True: 5, False: 10]
  ------------------
 3540|      5|			 && type != BP_VAR_W
  ------------------
  |  | 1075|     20|#define BP_VAR_W			1
  ------------------
  |  Branch (3540:8): [True: 2, False: 3]
  ------------------
 3541|      2|			 && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 3542|      2|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      2|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3543|      2|			}
 3544|       |
 3545|       |			/* this should modify object only if it's empty */
 3546|     15|			if (type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|     15|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (3546:8): [True: 6, False: 9]
  ------------------
 3547|      6|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      6|#define ZVAL_NULL(z) do {				\
  |  | 1060|      6|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      6|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 3548|      6|				return;
 3549|      6|			}
 3550|       |
 3551|      9|			zend_throw_non_object_error(container, prop_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      9|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      9|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(container, prop_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3552|      9|			ZVAL_ERROR(result);
  ------------------
  |  | 1271|      9|#define ZVAL_ERROR(z) do {				\
  |  | 1272|      9|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|      9|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 3553|      9|			return;
 3554|     15|		} while (0);
  ------------------
  |  Branch (3554:12): [Folded, False: 0]
  ------------------
 3555|     29|	}
 3556|       |
 3557|    148|	zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|    148|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    148|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3558|    148|	if (prop_op_type == IS_CONST &&
  ------------------
  |  |  864|    296|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3558:6): [True: 138, False: 10]
  ------------------
 3559|    138|	    EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|    138|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 135]
  |  |  ------------------
  ------------------
 3560|      3|		uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      3|	(slot)[0]
  ------------------
 3561|      3|		if (prop_info_p) {
  ------------------
  |  Branch (3561:7): [True: 0, False: 3]
  ------------------
 3562|      0|			*prop_info_p = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
 3563|      0|		}
 3564|       |
 3565|      3|		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 3566|      0|			ptr = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 3567|      0|			if (EXPECTED(Z_TYPE_P(ptr) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3568|      0|				ZVAL_INDIRECT(result, ptr);
  ------------------
  |  | 1246|      0|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      0|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      0|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3569|      0|				zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
 3570|      0|				if (prop_info) {
  ------------------
  |  Branch (3570:9): [True: 0, False: 0]
  ------------------
 3571|      0|					if (UNEXPECTED(prop_info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3572|      0|					 && ((prop_info->flags & ZEND_ACC_READONLY) || !zend_asymmetric_property_has_set_access(prop_info))) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (3572:11): [True: 0, False: 0]
  |  Branch (3572:53): [True: 0, False: 0]
  ------------------
 3573|       |						/* For objects, W/RW/UNSET fetch modes might not actually modify object.
 3574|       |						 * Similar as with magic __get() allow them, but return the value as a copy
 3575|       |						 * to make sure no actual modification is possible. */
 3576|      0|						ZEND_ASSERT(type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3576:7): [True: 0, False: 0]
  |  Branch (3576:7): [True: 0, False: 0]
  |  Branch (3576:7): [True: 0, False: 0]
  |  Branch (3576:7): [True: 0, False: 0]
  |  Branch (3576:7): [True: 0, False: 0]
  |  Branch (3576:7): [True: 0, False: 0]
  ------------------
 3577|      0|						if (Z_TYPE_P(ptr) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(ptr) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (3577:11): [True: 0, False: 0]
  ------------------
 3578|      0|							ZVAL_COPY(result, ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3579|      0|						} else {
 3580|      0|							if (prop_info->flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (3580:12): [True: 0, False: 0]
  ------------------
 3581|      0|								zend_readonly_property_indirect_modification_error(prop_info);
 3582|      0|							} else {
 3583|      0|								zend_asymmetric_visibility_property_modification_error(prop_info, "indirectly modify");
 3584|      0|							}
 3585|      0|							ZVAL_ERROR(result);
  ------------------
  |  | 1271|      0|#define ZVAL_ERROR(z) do {				\
  |  | 1272|      0|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|      0|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3586|      0|						}
 3587|      0|						return;
 3588|      0|					}
 3589|      0|					flags &= ZEND_FETCH_OBJ_FLAGS;
  ------------------
  |  | 1099|      0|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
 3590|      0|					if (flags) {
  ------------------
  |  Branch (3590:10): [True: 0, False: 0]
  ------------------
 3591|      0|						zend_handle_fetch_obj_flags(result, ptr, NULL, prop_info, flags);
 3592|      0|					}
 3593|      0|				}
 3594|      0|				return;
 3595|      0|			}
 3596|      3|		} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3597|       |			/* Fall through to read_property for hooks. */
 3598|      3|		} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 3599|      3|			ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3599:4): [True: 0, False: 3]
  |  Branch (3599:4): [True: 3, False: 0]
  ------------------
 3600|      3|			if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 3601|      3|				if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 3602|      3|					GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 3603|      3|				}
 3604|      3|				zobj->properties = zend_array_dup(zobj->properties);
 3605|      3|			}
 3606|      3|			ptr = zend_hash_find_known_hash(zobj->properties, Z_STR_P(prop_ptr));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3607|      3|			if (EXPECTED(ptr)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 3608|      3|				ZVAL_INDIRECT(result, ptr);
  ------------------
  |  | 1246|      3|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      3|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      3|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      3|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      3|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      3|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3609|      3|				return;
 3610|      3|			}
 3611|      3|		}
 3612|    145|	} else if (prop_op_type == IS_CONST) {
  ------------------
  |  |  864|    145|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3612:13): [True: 135, False: 10]
  ------------------
 3613|       |		/* CE mismatch, make cache slot consistent */
 3614|    135|		cache_slot[0] = cache_slot[1] = cache_slot[2] = NULL;
 3615|    135|	}
 3616|       |
 3617|       |	/* Pointer on property callback is required */
 3618|    145|	ZEND_ASSERT(zobj->handlers->get_property_ptr_ptr != NULL);
  ------------------
  |  |  112|    145|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3618:2): [True: 0, False: 145]
  |  Branch (3618:2): [True: 145, False: 0]
  ------------------
 3619|       |
 3620|    145|	if (prop_op_type == IS_CONST) {
  ------------------
  |  |  864|    145|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3620:6): [True: 135, False: 10]
  ------------------
 3621|    135|		name = Z_STR_P(prop_ptr);
  ------------------
  |  |  982|    135|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    135|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3622|    135|	} else {
 3623|     10|		name = zval_get_tmp_string(prop_ptr, &tmp_name);
 3624|     10|	}
 3625|    145|	ptr = zobj->handlers->get_property_ptr_ptr(zobj, name, type, cache_slot);
 3626|    145|	if (NULL == ptr) {
  ------------------
  |  Branch (3626:6): [True: 6, False: 139]
  ------------------
 3627|      6|		ptr = zobj->handlers->read_property(zobj, name, type, cache_slot, result);
 3628|      6|		if (ptr == result) {
  ------------------
  |  Branch (3628:7): [True: 4, False: 2]
  ------------------
 3629|      4|			if (UNEXPECTED(Z_ISREF_P(ptr) && Z_REFCOUNT_P(ptr) == 1)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 3, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 3630|      0|				ZVAL_UNREF(ptr);
  ------------------
  |  | 1499|      0|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      0|		zval *_z = (z);									\
  |  | 1501|      0|		zend_reference *ref;							\
  |  | 1502|      0|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      0|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      0|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      0|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3630:5): [True: 0, False: 0]
  |  Branch (3630:5): [True: 0, False: 0]
  ------------------
 3631|      0|			}
 3632|      4|			goto end;
 3633|      4|		}
 3634|      2|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 3635|      2|			ZVAL_ERROR(result);
  ------------------
  |  | 1271|      2|#define ZVAL_ERROR(z) do {				\
  |  | 1272|      2|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|      2|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3636|      2|			goto end;
 3637|      2|		}
 3638|    139|	} else if (UNEXPECTED(Z_ISERROR_P(ptr))) {
  ------------------
  |  |  457|    139|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 139]
  |  |  ------------------
  ------------------
 3639|      0|		ZVAL_ERROR(result);
  ------------------
  |  | 1271|      0|#define ZVAL_ERROR(z) do {				\
  |  | 1272|      0|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|      0|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3640|      0|		goto end;
 3641|    139|	} else if (type == BP_VAR_UNSET && UNEXPECTED(Z_TYPE_P(ptr) == IS_UNDEF)) {
  ------------------
  |  | 1079|    278|#define BP_VAR_UNSET		5
  ------------------
              	} else if (type == BP_VAR_UNSET && UNEXPECTED(Z_TYPE_P(ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (3641:13): [True: 5, False: 134]
  ------------------
 3642|      1|		ZVAL_NULL(result);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3643|      1|		goto end;
 3644|      1|	}
 3645|       |
 3646|    138|	ZVAL_INDIRECT(result, ptr);
  ------------------
  |  | 1246|    138|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|    138|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|    138|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|    138|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|    138|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|    138|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    138|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|    138|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|    138|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 138]
  |  |  ------------------
  ------------------
 3647|    138|	flags &= ZEND_FETCH_OBJ_FLAGS;
  ------------------
  |  | 1099|    138|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
 3648|    138|	if (flags) {
  ------------------
  |  Branch (3648:6): [True: 71, False: 67]
  ------------------
 3649|     71|		zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|     71|	(slot)[0]
  ------------------
 3650|     71|		if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     12|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     12|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 10, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (3650:7): [True: 12, False: 59]
  ------------------
 3651|     10|			if (UNEXPECTED(!zend_handle_fetch_obj_flags(result, ptr, NULL, prop_info, flags))) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
 3652|      1|				goto end;
 3653|      1|			}
 3654|     10|		}
 3655|     71|	}
 3656|       |
 3657|    145|end:
 3658|    145|	if (prop_info_p) {
  ------------------
  |  Branch (3658:6): [True: 34, False: 111]
  ------------------
 3659|     34|		*prop_info_p = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|     34|	(slot)[0]
  ------------------
 3660|     34|	}
 3661|    145|	if (prop_op_type != IS_CONST) {
  ------------------
  |  |  864|    145|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (3661:6): [True: 10, False: 135]
  ------------------
 3662|     10|		zend_tmp_string_release(tmp_name);
 3663|     10|	}
 3664|    145|}
zend_execute.c:zend_assign_to_typed_property_reference:
  583|     11|{
  584|     11|	if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
  ------------------
  |  |  740|     11|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     11|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     11|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (584:6): [True: 1, False: 10]
  ------------------
  585|      1|		return &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  586|      1|	}
  587|     10|	if (Z_ISREF_P(prop)) {
  ------------------
  |  |  964|     10|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     10|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     10|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      0|		ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
  ------------------
  |  |  595|      0|	zend_ref_del_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  589|      0|	}
  590|     10|	zend_assign_to_variable_reference(prop, value_ptr, garbage_ptr);
  591|     10|	ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
  ------------------
  |  |  592|     10|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|     10|	(ref)->sources
  |  |  ------------------
  ------------------
  592|     10|	return prop;
  593|     11|}
zend_execute.c:zend_assign_to_property_reference_var_var:
 3730|      3|{
 3731|      3|	zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_VAR, value_ptr
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_VAR, value_ptr
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
 3732|      3|		OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3733|      3|}
zend_execute.c:zend_assign_to_property_reference_this_const:
 3712|      4|{
 3713|      4|	zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_CONST, value_ptr
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_CONST, value_ptr
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
 3714|      4|		OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3715|      4|}
zend_execute.c:_get_zval_ptr_ptr:
  523|     10|{
  524|     10|	if (op_type == IS_CV) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (524:6): [True: 8, False: 2]
  ------------------
  525|      8|		return _get_zval_ptr_cv(node.var, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  526|      8|	} else /* if (op_type == IS_VAR) */ {
  527|      2|		ZEND_ASSERT(op_type == IS_VAR);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (527:3): [True: 0, False: 2]
  |  Branch (527:3): [True: 2, False: 0]
  ------------------
  528|      2|		return _get_zval_ptr_ptr_var(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  529|      2|	}
  530|     10|}
zend_execute.c:_get_zval_ptr_cv:
  318|     16|{
  319|     16|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|     16|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     16|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  320|       |
  321|     16|	if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 12]
  |  |  ------------------
  ------------------
  322|      4|		if (type == BP_VAR_W) {
  ------------------
  |  | 1075|      4|#define BP_VAR_W			1
  ------------------
  |  Branch (322:7): [True: 2, False: 2]
  ------------------
  323|      2|			ZVAL_NULL(ret);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  324|      2|		} else {
  325|      2|			return _get_zval_cv_lookup(ret, var, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  326|      2|		}
  327|      4|	}
  328|     14|	return ret;
  329|     16|}
zend_execute.c:_get_zval_cv_lookup:
  298|      2|{
  299|      2|	switch (type) {
  ------------------
  |  Branch (299:10): [True: 2, False: 0]
  ------------------
  300|      2|		case BP_VAR_R:
  ------------------
  |  | 1074|      2|#define BP_VAR_R			0
  ------------------
  |  Branch (300:3): [True: 2, False: 0]
  ------------------
  301|      2|		case BP_VAR_UNSET:
  ------------------
  |  | 1079|      2|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (301:3): [True: 0, False: 2]
  ------------------
  302|      2|			ptr = zval_undefined_cv(var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  303|      2|			break;
  304|      0|		case BP_VAR_IS:
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (304:3): [True: 0, False: 2]
  ------------------
  305|      0|			ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  306|      0|			break;
  307|      0|		case BP_VAR_RW:
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
  |  Branch (307:3): [True: 0, False: 2]
  ------------------
  308|      0|			zval_undefined_cv(var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  309|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  310|      0|		case BP_VAR_W:
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  |  Branch (310:3): [True: 0, False: 2]
  ------------------
  311|      0|			ZVAL_NULL(ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  312|      0|			break;
  313|      2|	}
  314|      2|	return ptr;
  315|      2|}
zend_execute.c:zend_incdec_typed_ref:
 2232|      3|{
 2233|      3|	zval tmp;
 2234|      3|	zval *var_ptr = &ref->val;
 2235|       |
 2236|      3|	if (!copy) {
  ------------------
  |  Branch (2236:6): [True: 3, False: 0]
  ------------------
 2237|      3|		copy = &tmp;
 2238|      3|	}
 2239|       |
 2240|      3|	ZVAL_COPY(copy, var_ptr);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2241|       |
 2242|      3|	if (ZEND_IS_INCREMENT(opline->opcode)) {
  ------------------
  |  | 1228|      3|#define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0)
  |  |  ------------------
  |  |  |  Branch (1228:35): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 2243|      3|		increment_function(var_ptr);
 2244|      3|	} else {
 2245|      0|		decrement_function(var_ptr);
 2246|      0|	}
 2247|       |
 2248|      3|	if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(copy) == IS_LONG) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(copy) == IS_LONG) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(copy) == IS_LONG) {
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (2248:52): [True: 0, False: 1]
  ------------------
 2249|      0|		zend_property_info *error_prop = zend_get_prop_not_accepting_double(ref);
 2250|      0|		if (UNEXPECTED(error_prop)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2251|      0|			zend_long val = zend_throw_incdec_ref_error(error_prop OPLINE_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
 2252|      0|			ZVAL_LONG(var_ptr, val);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2253|      0|		}
 2254|      3|	} else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 2255|      1|		zval_ptr_dtor(var_ptr);
 2256|      1|		ZVAL_COPY_VALUE(var_ptr, copy);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2257|      1|		ZVAL_UNDEF(copy);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2258|      2|	} else if (copy == &tmp) {
  ------------------
  |  Branch (2258:13): [True: 2, False: 0]
  ------------------
 2259|      2|		zval_ptr_dtor(&tmp);
 2260|      2|	}
 2261|      3|}
zend_execute.c:zend_pre_incdec_property_zval:
 2294|      2|{
 2295|      2|	if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2296|      0|		if (ZEND_IS_INCREMENT(opline->opcode)) {
  ------------------
  |  | 1228|      0|#define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0)
  |  |  ------------------
  |  |  |  Branch (1228:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2297|      0|			fast_long_increment_function(prop);
 2298|      0|		} else {
 2299|      0|			fast_long_decrement_function(prop);
 2300|      0|		}
 2301|      0|		if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && prop_info
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2301:48): [True: 0, False: 0]
  ------------------
 2302|      0|				&& !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
              				&& !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (2302:8): [True: 0, False: 0]
  ------------------
 2303|      0|			zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
 2304|      0|			ZVAL_LONG(prop, val);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2305|      0|		}
 2306|      2|	} else {
 2307|      2|		do {
 2308|      2|			if (Z_ISREF_P(prop)) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2309|      2|				zend_reference *ref = Z_REF_P(prop);
  ------------------
  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 2310|      2|				prop = Z_REFVAL_P(prop);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2311|      2|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2312|      0|					zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2313|      0|					break;
 2314|      0|				}
 2315|      2|			}
 2316|       |
 2317|      2|			if (prop_info) {
  ------------------
  |  Branch (2317:8): [True: 0, False: 2]
  ------------------
 2318|      0|				zend_incdec_typed_prop(prop_info, prop, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_prop(prop_info, prop, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2319|      2|			} else if (ZEND_IS_INCREMENT(opline->opcode)) {
  ------------------
  |  | 1228|      2|#define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0)
  |  |  ------------------
  |  |  |  Branch (1228:35): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2320|      1|				increment_function(prop);
 2321|      1|			} else {
 2322|      1|				decrement_function(prop);
 2323|      1|			}
 2324|      2|		} while (0);
  ------------------
  |  Branch (2324:12): [Folded, False: 2]
  ------------------
 2325|      2|	}
 2326|      2|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2327|      0|		ZVAL_COPY(EX_VAR(opline->result.var), prop);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2328|      0|	}
 2329|      2|}
zend_execute.c:zend_post_incdec_property_zval:
 2332|    124|{
 2333|    124|	if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) {
  ------------------
  |  |  456|    124|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 124, False: 0]
  |  |  ------------------
  ------------------
 2334|    124|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(prop));
  ------------------
  |  | 1076|    124|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    124|		zval *__z = (z);				\
  |  | 1078|    124|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    124|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    124|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    124|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    124|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    124|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    124|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    124|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 124]
  |  |  ------------------
  ------------------
 2335|    124|		if (ZEND_IS_INCREMENT(opline->opcode)) {
  ------------------
  |  | 1228|    124|#define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0)
  |  |  ------------------
  |  |  |  Branch (1228:35): [True: 2, False: 122]
  |  |  ------------------
  ------------------
 2336|      2|			fast_long_increment_function(prop);
 2337|    122|		} else {
 2338|    122|			fast_long_decrement_function(prop);
 2339|    122|		}
 2340|    124|		if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && prop_info
  ------------------
  |  |  457|    248|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 124]
  |  |  ------------------
  ------------------
  |  Branch (2340:48): [True: 0, False: 0]
  ------------------
 2341|      0|				&& !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
              				&& !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (2341:8): [True: 0, False: 0]
  ------------------
 2342|      0|			zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
 2343|      0|			ZVAL_LONG(prop, val);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2344|      0|		}
 2345|    124|	} else {
 2346|      0|		if (Z_ISREF_P(prop)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2347|      0|			zend_reference *ref = Z_REF_P(prop);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 2348|      0|			prop = Z_REFVAL_P(prop);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2349|      0|			if (ZEND_REF_HAS_TYPE_SOURCES(ref)) {
  ------------------
  |  |  123|      0|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2350|      0|				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2351|      0|				return;
 2352|      0|			}
 2353|      0|		}
 2354|       |
 2355|      0|		if (prop_info) {
  ------------------
  |  Branch (2355:7): [True: 0, False: 0]
  ------------------
 2356|      0|			zend_incdec_typed_prop(prop_info, prop, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              			zend_incdec_typed_prop(prop_info, prop, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_incdec_typed_prop(prop_info, prop, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2357|      0|		} else {
 2358|      0|			ZVAL_COPY(EX_VAR(opline->result.var), prop);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2359|      0|			if (ZEND_IS_INCREMENT(opline->opcode)) {
  ------------------
  |  | 1228|      0|#define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0)
  |  |  ------------------
  |  |  |  Branch (1228:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2360|      0|				increment_function(prop);
 2361|      0|			} else {
 2362|      0|				decrement_function(prop);
 2363|      0|			}
 2364|      0|		}
 2365|      0|	}
 2366|    124|}
zend_execute.c:zend_verify_internal_func_info:
 1339|  18.5k|static void zend_verify_internal_func_info(const zend_function *fn, const zval *retval) {
 1340|       |#if ZEND_VERIFY_FUNC_INFO
 1341|       |	zend_string *name = fn->common.function_name;
 1342|       |	const uint32_t type_mask = zend_get_internal_func_info(fn, NULL, NULL);
 1343|       |	if (!type_mask) {
 1344|       |		return;
 1345|       |	}
 1346|       |
 1347|       |	/* Always check refcount of arrays, as immutable arrays are RCN. */
 1348|       |	if (Z_REFCOUNTED_P(retval) || Z_TYPE_P(retval) == IS_ARRAY) {
 1349|       |		if (!(type_mask & MAY_BE_RC1)) {
 1350|       |			zend_error_noreturn(E_CORE_ERROR, "%s() missing rc1", ZSTR_VAL(name));
 1351|       |		}
 1352|       |		if (Z_REFCOUNT_P(retval) > 1 && !(type_mask & MAY_BE_RCN)) {
 1353|       |			zend_error_noreturn(E_CORE_ERROR, "%s() missing rcn", ZSTR_VAL(name));
 1354|       |		}
 1355|       |	}
 1356|       |
 1357|       |	const uint32_t type = 1u << Z_TYPE_P(retval);
 1358|       |	if (!(type_mask & type)) {
 1359|       |		zend_error_noreturn(E_CORE_ERROR, "%s() missing type %s",
 1360|       |			ZSTR_VAL(name), zend_get_type_by_const(Z_TYPE_P(retval)));
 1361|       |	}
 1362|       |
 1363|       |	if (Z_TYPE_P(retval) == IS_ARRAY) {
 1364|       |		const HashTable *ht = Z_ARRVAL_P(retval);
 1365|       |		uint32_t num_checked = 0;
 1366|       |		zend_string *str;
 1367|       |		zval *val;
 1368|       |		ZEND_HASH_FOREACH_STR_KEY_VAL(ht, str, val) {
 1369|       |			if (str) {
 1370|       |				if (!(type_mask & MAY_BE_ARRAY_KEY_STRING)) {
 1371|       |					zend_error_noreturn(E_CORE_ERROR,
 1372|       |						"%s() missing array_key_string", ZSTR_VAL(name));
 1373|       |				}
 1374|       |			} else {
 1375|       |				if (!(type_mask & MAY_BE_ARRAY_KEY_LONG)) {
 1376|       |					zend_error_noreturn(E_CORE_ERROR,
 1377|       |						"%s() missing array_key_long", ZSTR_VAL(name));
 1378|       |				}
 1379|       |			}
 1380|       |
 1381|       |			const uint32_t array_type = 1u << (Z_TYPE_P(val) + MAY_BE_ARRAY_SHIFT);
 1382|       |			if (!(type_mask & array_type)) {
 1383|       |				zend_error_noreturn(E_CORE_ERROR,
 1384|       |					"%s() missing array element type %s",
 1385|       |					ZSTR_VAL(name), zend_get_type_by_const(Z_TYPE_P(retval)));
 1386|       |			}
 1387|       |
 1388|       |			/* Don't check all elements of large arrays. */
 1389|       |			if (++num_checked > 16) {
 1390|       |				break;
 1391|       |			}
 1392|       |		} ZEND_HASH_FOREACH_END();
 1393|       |	}
 1394|       |#endif
 1395|  18.5k|}
zend_execute.c:zend_verify_recv_arg_type:
 1243|     70|{
 1244|     70|	const zend_arg_info *cur_arg_info;
 1245|       |
 1246|     70|	ZEND_ASSERT(arg_num <= zf->common.num_args);
  ------------------
  |  |  112|     70|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1246:2): [True: 0, False: 70]
  |  Branch (1246:2): [True: 70, False: 0]
  ------------------
 1247|     70|	cur_arg_info = &zf->common.arg_info[arg_num-1];
 1248|       |
 1249|     70|	if (ZEND_TYPE_IS_SET(cur_arg_info->type)
  ------------------
  |  |  152|    140|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     70|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 70, False: 0]
  |  |  ------------------
  ------------------
 1250|     70|			&& UNEXPECTED(!zend_check_type(&cur_arg_info->type, arg, false, false))) {
  ------------------
  |  |  457|     70|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 49]
  |  |  ------------------
  ------------------
 1251|     21|		zend_verify_arg_error(zf, cur_arg_info, arg_num, arg);
 1252|     21|		return 0;
 1253|     21|	}
 1254|       |
 1255|     49|	return 1;
 1256|     70|}
zend_execute.c:zend_include_or_eval:
 5304|  5.39k|{
 5305|  5.39k|	zend_op_array *new_op_array = NULL;
 5306|  5.39k|	zend_string *tmp_inc_filename;
 5307|  5.39k|	zend_string *inc_filename = zval_try_get_tmp_string(inc_filename_zv, &tmp_inc_filename);
 5308|  5.39k|	if (UNEXPECTED(!inc_filename)) {
  ------------------
  |  |  457|  5.39k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5.39k]
  |  |  ------------------
  ------------------
 5309|      1|		return NULL;
 5310|      1|	}
 5311|       |
 5312|  5.39k|	switch (type) {
 5313|      0|		case ZEND_INCLUDE_ONCE:
  ------------------
  |  | 1085|      0|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (5313:3): [True: 0, False: 5.39k]
  ------------------
 5314|  1.98k|		case ZEND_REQUIRE_ONCE: {
  ------------------
  |  | 1087|  1.98k|#define ZEND_REQUIRE_ONCE		(1<<4)
  ------------------
  |  Branch (5314:3): [True: 1.98k, False: 3.40k]
  ------------------
 5315|  1.98k|				zend_file_handle file_handle;
 5316|  1.98k|				zend_string *resolved_path;
 5317|       |
 5318|  1.98k|				resolved_path = zend_resolve_path(inc_filename);
 5319|  1.98k|				if (EXPECTED(resolved_path)) {
  ------------------
  |  |  456|  1.98k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1.98k]
  |  |  ------------------
  ------------------
 5320|      2|					if (zend_hash_exists(&EG(included_files), resolved_path)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (5320:10): [True: 0, False: 2]
  ------------------
 5321|      0|						new_op_array = ZEND_FAKE_OP_ARRAY;
  ------------------
  |  | 5301|      0|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
 5322|      0|						zend_string_release_ex(resolved_path, 0);
 5323|      0|						break;
 5324|      0|					}
 5325|  1.98k|				} else if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|  1.98k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.98k]
  |  |  ------------------
  ------------------
 5326|      0|					break;
 5327|  1.98k|				} else if (UNEXPECTED(zend_str_has_nul_byte(inc_filename))) {
  ------------------
  |  |  457|  1.98k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.98k]
  |  |  ------------------
  ------------------
 5328|      0|					zend_message_dispatcher(
 5329|      0|						(type == ZEND_INCLUDE_ONCE) ?
  ------------------
  |  | 1085|      0|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (5329:7): [True: 0, False: 0]
  ------------------
 5330|      0|							ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,
  ------------------
  |  |  430|      0|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              							ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,
  ------------------
  |  |  431|      0|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
 5331|      0|							ZSTR_VAL(inc_filename));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5332|      0|					break;
 5333|  1.98k|				} else {
 5334|  1.98k|					resolved_path = zend_string_copy(inc_filename);
 5335|  1.98k|				}
 5336|       |
 5337|  1.98k|				zend_stream_init_filename_ex(&file_handle, resolved_path);
 5338|  1.98k|				if (SUCCESS == zend_stream_open(&file_handle)) {
  ------------------
  |  Branch (5338:9): [True: 1, False: 1.98k]
  ------------------
 5339|       |
 5340|      1|					if (!file_handle.opened_path) {
  ------------------
  |  Branch (5340:10): [True: 0, False: 1]
  ------------------
 5341|      0|						file_handle.opened_path = zend_string_copy(resolved_path);
 5342|      0|					}
 5343|       |
 5344|      1|					if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (5344:10): [True: 1, False: 0]
  ------------------
 5345|      1|						new_op_array = zend_compile_file(&file_handle, (type==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
  ------------------
  |  | 1085|      1|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
              						new_op_array = zend_compile_file(&file_handle, (type==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
  ------------------
  |  | 1084|      0|#define ZEND_INCLUDE			(1<<1)
  ------------------
              						new_op_array = zend_compile_file(&file_handle, (type==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
  ------------------
  |  | 1086|      1|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (5345:55): [True: 0, False: 1]
  ------------------
 5346|      1|					} else {
 5347|      0|						new_op_array = ZEND_FAKE_OP_ARRAY;
  ------------------
  |  | 5301|      0|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
 5348|      0|					}
 5349|  1.98k|				} else if (!EG(exception)) {
  ------------------
  |  |   45|  1.98k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (5349:16): [True: 10, False: 1.97k]
  ------------------
 5350|     10|					zend_message_dispatcher(
 5351|     10|						(type == ZEND_INCLUDE_ONCE) ?
  ------------------
  |  | 1085|     10|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (5351:7): [True: 0, False: 10]
  ------------------
 5352|     10|							ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,
  ------------------
  |  |  430|      0|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              							ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,
  ------------------
  |  |  431|     10|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
 5353|     10|							ZSTR_VAL(inc_filename));
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5354|     10|				}
 5355|  1.98k|				zend_destroy_file_handle(&file_handle);
 5356|  1.98k|				zend_string_release_ex(resolved_path, 0);
 5357|  1.98k|			}
 5358|      0|			break;
 5359|     23|		case ZEND_INCLUDE:
  ------------------
  |  | 1084|     23|#define ZEND_INCLUDE			(1<<1)
  ------------------
  |  Branch (5359:3): [True: 23, False: 5.37k]
  ------------------
 5360|  3.36k|		case ZEND_REQUIRE:
  ------------------
  |  | 1086|  3.36k|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (5360:3): [True: 3.34k, False: 2.05k]
  ------------------
 5361|  3.36k|			if (UNEXPECTED(zend_str_has_nul_byte(inc_filename))) {
  ------------------
  |  |  457|  3.36k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 3.36k]
  |  |  ------------------
  ------------------
 5362|      4|				zend_message_dispatcher(
 5363|      4|					(type == ZEND_INCLUDE) ?
  ------------------
  |  | 1084|      4|#define ZEND_INCLUDE			(1<<1)
  ------------------
  |  Branch (5363:6): [True: 1, False: 3]
  ------------------
 5364|      3|						ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,
  ------------------
  |  |  430|      1|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              						ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,
  ------------------
  |  |  431|      3|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
 5365|      4|						ZSTR_VAL(inc_filename));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5366|      4|				break;
 5367|      4|			}
 5368|  3.36k|			new_op_array = compile_filename(type, inc_filename);
 5369|  3.36k|			break;
 5370|     38|		case ZEND_EVAL: {
  ------------------
  |  | 1083|     38|#define ZEND_EVAL				(1<<0)
  ------------------
  |  Branch (5370:3): [True: 38, False: 5.35k]
  ------------------
 5371|     38|				char *eval_desc = zend_make_compiled_string_description("eval()'d code");
 5372|     38|				new_op_array = zend_compile_string(inc_filename, eval_desc, ZEND_COMPILE_POSITION_AFTER_OPEN_TAG);
 5373|     38|				efree(eval_desc);
  ------------------
  |  |  154|     38|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     38|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     38|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     38|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     38|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5374|     38|			}
 5375|     38|			break;
 5376|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5376:3): [True: 0, False: 5.39k]
  |  Branch (5376:12): [Folded, False: 0]
  |  Branch (5376:12): [Folded, False: 0]
  ------------------
 5377|  5.39k|	}
 5378|       |
 5379|    767|	zend_tmp_string_release(tmp_inc_filename);
 5380|    767|	return new_op_array;
 5381|  5.39k|}
zend_execute.c:_get_zval_ptr:
  413|     12|{
  414|     12|	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     12|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (414:6): [True: 1, False: 11]
  ------------------
  415|      1|		if (!ZEND_DEBUG || op_type == IS_VAR) {
  ------------------
  |  | 2105|      2|#define ZEND_DEBUG 1
  ------------------
              		if (!ZEND_DEBUG || op_type == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (415:7): [Folded, False: 1]
  |  Branch (415:22): [True: 0, False: 1]
  ------------------
  416|      0|			return _get_zval_ptr_var(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  417|      1|		} else {
  418|      1|			ZEND_ASSERT(op_type == IS_TMP_VAR);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (418:4): [True: 0, False: 1]
  |  Branch (418:4): [True: 1, False: 0]
  ------------------
  419|      1|			return _get_zval_ptr_tmp(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  420|      1|		}
  421|     11|	} else {
  422|     11|		if (op_type == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (422:7): [True: 3, False: 8]
  ------------------
  423|      3|			return RT_CONSTANT(opline, node);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  424|      8|		} else if (op_type == IS_CV) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (424:14): [True: 8, False: 0]
  ------------------
  425|      8|			return _get_zval_ptr_cv(node.var, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  426|      8|		} else {
  427|       |			return NULL;
  428|      0|		}
  429|     11|	}
  430|     12|}
zend_execute.c:zend_get_target_symbol_table:
 2483|  17.2k|{
 2484|  17.2k|	HashTable *ht;
 2485|       |
 2486|  17.2k|	if (EXPECTED(fetch_type & (ZEND_FETCH_GLOBAL_LOCK | ZEND_FETCH_GLOBAL))) {
  ------------------
  |  |  456|  17.2k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 163, False: 17.1k]
  |  |  ------------------
  ------------------
 2487|    163|		ht = &EG(symbol_table);
  ------------------
  |  |   45|    163|# define EG(v) (executor_globals.v)
  ------------------
 2488|  17.1k|	} else {
 2489|  17.1k|		ZEND_ASSERT(fetch_type & ZEND_FETCH_LOCAL);
  ------------------
  |  |  112|  17.1k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2489:3): [True: 0, False: 17.1k]
  |  Branch (2489:3): [True: 17.1k, False: 0]
  ------------------
 2490|  17.1k|		if (!(EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  732|  17.1k|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|  17.1k|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  17.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (!(EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  666|  17.1k|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (2490:7): [True: 103, False: 17.0k]
  ------------------
 2491|    103|			zend_rebuild_symbol_table();
 2492|    103|		}
 2493|  17.1k|		ht = EX(symbol_table);
  ------------------
  |  |  730|  17.1k|#define EX(element) 			((execute_data)->element)
  ------------------
 2494|  17.1k|	}
 2495|  17.2k|	return ht;
 2496|  17.2k|}
zend_execute.c:zend_fe_reset_iterator:
 5385|     38|{
 5386|     38|	zend_class_entry *ce = Z_OBJCE_P(array_ptr);
  ------------------
  |  | 1012|     38|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     38|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     38|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5387|     38|	zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, by_ref);
 5388|     38|	bool is_empty;
 5389|       |
 5390|     38|	if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     76|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 35]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
 5391|      3|		if (iter) {
  ------------------
  |  Branch (5391:7): [True: 0, False: 3]
  ------------------
 5392|      0|			OBJ_RELEASE(&iter->std);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 5393|      0|		}
 5394|      3|		if (!EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (5394:7): [True: 0, False: 3]
  ------------------
 5395|      0|			zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5396|      0|		}
 5397|      3|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 5398|      3|		return 1;
 5399|      3|	}
 5400|       |
 5401|     35|	iter->index = 0;
 5402|     35|	if (iter->funcs->rewind) {
  ------------------
  |  Branch (5402:6): [True: 35, False: 0]
  ------------------
 5403|     35|		iter->funcs->rewind(iter);
 5404|     35|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 34]
  |  |  ------------------
  ------------------
 5405|      1|			OBJ_RELEASE(&iter->std);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 5406|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5407|      1|			return 1;
 5408|      1|		}
 5409|     35|	}
 5410|       |
 5411|     34|	is_empty = iter->funcs->valid(iter) != SUCCESS;
 5412|       |
 5413|     34|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  ------------------
  ------------------
 5414|      0|		OBJ_RELEASE(&iter->std);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 5415|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5416|      0|		return 1;
 5417|      0|	}
 5418|     34|	iter->index = -1; /* will be set to 0 before using next handler */
 5419|       |
 5420|     34|	ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
  ------------------
  |  | 1140|     34|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     34|		zval *__z = (z);						\
  |  | 1142|     34|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     34|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     34|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     34|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     34|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     34|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     34|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     34|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     34|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     34|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     34|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     34|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
 5421|     34|	Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|     34|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|     34|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5422|       |
 5423|     34|	return is_empty;
 5424|     34|}
zend_execute.c:zend_fetch_this_var:
 4211|      3|{
 4212|      3|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4213|       |
 4214|      3|	switch (type) {
 4215|      2|		case BP_VAR_R:
  ------------------
  |  | 1074|      2|#define BP_VAR_R			0
  ------------------
  |  Branch (4215:3): [True: 2, False: 1]
  ------------------
 4216|      2|			if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 4217|      1|				ZVAL_OBJ(result, Z_OBJ(EX(This)));
  ------------------
  |  | 1140|      1|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      1|		zval *__z = (z);						\
  |  | 1142|      1|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4218|      1|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4219|      1|			} else {
 4220|      1|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4221|      1|				zend_error_unchecked(E_WARNING, "Undefined variable $this");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 4222|      1|			}
 4223|      2|			break;
 4224|      0|		case BP_VAR_IS:
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (4224:3): [True: 0, False: 3]
  ------------------
 4225|      0|			if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4226|      0|				ZVAL_OBJ(result, Z_OBJ(EX(This)));
  ------------------
  |  | 1140|      0|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      0|		zval *__z = (z);						\
  |  | 1142|      0|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4227|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4228|      0|			} else {
 4229|      0|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4230|      0|			}
 4231|      0|			break;
 4232|      0|		case BP_VAR_RW:
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
  |  Branch (4232:3): [True: 0, False: 3]
  ------------------
 4233|      1|		case BP_VAR_W:
  ------------------
  |  | 1075|      1|#define BP_VAR_W			1
  ------------------
  |  Branch (4233:3): [True: 1, False: 2]
  ------------------
 4234|      1|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4235|      1|			zend_throw_error(NULL, "Cannot re-assign $this");
 4236|      1|			break;
 4237|      0|		case BP_VAR_UNSET:
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (4237:3): [True: 0, False: 3]
  ------------------
 4238|      0|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4239|      0|			zend_throw_error(NULL, "Cannot unset $this");
 4240|      0|			break;
 4241|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4241:3): [True: 0, False: 3]
  |  Branch (4241:12): [Folded, False: 0]
  |  Branch (4241:12): [Folded, False: 0]
  ------------------
 4242|      3|	}
 4243|      3|}
zend_execute.c:zend_fetch_dimension_address_read_R_slow:
 3218|    162|{
 3219|    162|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    162|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    162|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3220|    162|	zend_fetch_dimension_address_read(result, container, dim, IS_CV, BP_VAR_R, 0, 1 EXECUTE_DATA_CC);
  ------------------
  |  |  867|    162|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	zend_fetch_dimension_address_read(result, container, dim, IS_CV, BP_VAR_R, 0, 1 EXECUTE_DATA_CC);
  ------------------
  |  | 1074|    162|#define BP_VAR_R			0
  ------------------
              	zend_fetch_dimension_address_read(result, container, dim, IS_CV, BP_VAR_R, 0, 1 EXECUTE_DATA_CC);
  ------------------
  |  |   89|    162|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    162|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3221|    162|}
zend_execute.c:zend_fetch_dimension_address_read_R:
 3212|     20|{
 3213|     20|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     20|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     20|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3214|     20|	zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 0, 0 EXECUTE_DATA_CC);
  ------------------
  |  | 1074|     20|#define BP_VAR_R			0
  ------------------
              	zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 0, 0 EXECUTE_DATA_CC);
  ------------------
  |  |   89|     20|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     20|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3215|     20|}
zend_execute.c:zend_fetch_dimension_address_W:
 3040|  1.35k|{
 3041|  1.35k|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|  1.35k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.35k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3042|  1.35k|	zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  | 1075|  1.35k|#define BP_VAR_W			1
  ------------------
              	zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_W EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.35k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.35k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3043|  1.35k|}
zend_execute.c:zend_fetch_dimension_address:
 2906|  1.37k|{
 2907|  1.37k|	zval *retval;
 2908|       |
 2909|  1.37k|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|  1.37k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 890, False: 481]
  |  |  ------------------
  ------------------
 2910|  1.30k|try_array:
 2911|  1.30k|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|  1.30k|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|  1.30k|		zval *__zv = (zv);								\
  |  | 1538|  1.30k|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|  1.30k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  1.30k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|  1.30k|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|  1.30k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 189, False: 1.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|    189|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|    189|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|    189|		zend_array *__arr = (a);				\
  |  |  |  | 1127|    189|		zval *__z = (z);						\
  |  |  |  | 1128|    189|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    189|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|    189|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|    189|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    189|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    189|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|    189|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|    189|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|    189|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|    189|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|    189|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|    189|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|    189|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 189]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|    189|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|    189|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|    189|		}												\
  |  | 1543|  1.30k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1.30k]
  |  |  ------------------
  ------------------
 2912|  1.34k|fetch_from_array:
 2913|  1.34k|		if (dim == NULL) {
  ------------------
  |  Branch (2913:7): [True: 29, False: 1.31k]
  ------------------
 2914|     29|			retval = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
  ------------------
  |  |  997|     29|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     29|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     29|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			retval = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
  ------------------
  |  |   45|     29|# define EG(v) (executor_globals.v)
  ------------------
 2915|     29|			if (UNEXPECTED(retval == NULL)) {
  ------------------
  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  ------------------
  ------------------
 2916|      0|				zend_cannot_add_element();
 2917|      0|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2918|      0|				return;
 2919|      0|			}
 2920|  1.31k|		} else {
 2921|  1.31k|			retval = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, dim_type, type EXECUTE_DATA_CC);
  ------------------
  |  |  997|  1.31k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  1.31k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  1.31k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			retval = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, dim_type, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.31k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.31k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2922|  1.31k|			if (UNEXPECTED(!retval)) {
  ------------------
  |  |  457|  1.31k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1.31k]
  |  |  ------------------
  ------------------
 2923|       |				/* This may fail without throwing if the array was modified while throwing an
 2924|       |				 * undefined index error. */
 2925|      1|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2926|      1|				return;
 2927|      1|			}
 2928|  1.31k|		}
 2929|  1.34k|		ZVAL_INDIRECT(result, retval);
  ------------------
  |  | 1246|  1.34k|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|  1.34k|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|  1.34k|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|  1.34k|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|  1.34k|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|  1.34k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.34k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|  1.34k|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|  1.34k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 1.34k]
  |  |  ------------------
  ------------------
 2930|  1.34k|		return;
 2931|  1.34k|	} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|    481|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 433, False: 48]
  |  |  ------------------
  ------------------
 2932|    433|		zend_reference *ref = Z_REF_P(container);
  ------------------
  |  | 1030|    433|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|    433|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 2933|    433|		container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|    433|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    433|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    433|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2934|    433|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|    433|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 412, False: 21]
  |  |  ------------------
  ------------------
 2935|    412|			goto try_array;
 2936|    412|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|     21|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 3]
  |  |  ------------------
  ------------------
 2937|     18|			if (type != BP_VAR_UNSET) {
  ------------------
  |  | 1079|     18|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (2937:8): [True: 18, False: 0]
  ------------------
 2938|     18|				if (ZEND_REF_HAS_TYPE_SOURCES(ref)) {
  ------------------
  |  |  123|     18|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|     18|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 18]
  |  |  ------------------
  ------------------
 2939|      0|					if (UNEXPECTED(!zend_verify_ref_array_assignable(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2940|      0|						ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2941|      0|						return;
 2942|      0|					}
 2943|      0|				}
 2944|     18|				array_init(container);
 2945|     18|				goto fetch_from_array;
 2946|     18|			} else {
 2947|      0|				goto return_null;
 2948|      0|			}
 2949|     18|		}
 2950|    433|	}
 2951|     51|	if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
  ------------------
  |  |  457|     51|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 13, False: 38]
  |  |  ------------------
  ------------------
 2952|     13|		if (dim == NULL) {
  ------------------
  |  Branch (2952:7): [True: 1, False: 12]
  ------------------
 2953|      1|			zend_use_new_element_for_string();
 2954|     12|		} else {
 2955|     12|			zend_check_string_offset(dim, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2956|     12|			zend_wrong_string_offset_error();
 2957|     12|		}
 2958|     13|		ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     13|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     13|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     13|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
 2959|     38|	} else if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|     38|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 33]
  |  |  ------------------
  ------------------
 2960|      5|		zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2961|      5|		GC_ADDREF(obj);
  ------------------
  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2962|      5|		if (ZEND_CONST_COND(dim_type == IS_CV, dim != NULL) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  420|     10|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 5, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 5]
  |  |  ------------------
  ------------------
              		if (ZEND_CONST_COND(dim_type == IS_CV, dim != NULL) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2963|      0|			dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2964|      5|		} else if (dim_type == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              		} else if (dim_type == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      3|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      3|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              		} else if (dim_type == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      3|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (2964:14): [True: 3, False: 2]
  |  Branch (2964:38): [True: 0, False: 3]
  ------------------
 2965|      0|			dim++;
 2966|      0|		}
 2967|      5|		retval = obj->handlers->read_dimension(obj, dim, type, result);
 2968|       |
 2969|      5|		if (UNEXPECTED(retval == &EG(uninitialized_zval))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2970|      0|			zend_class_entry *ce = obj->ce;
 2971|       |
 2972|      0|			ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2973|      0|			zend_error(E_NOTICE, "Indirect modification of overloaded element of %s has no effect", ZSTR_VAL(ce->name));
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              			zend_error(E_NOTICE, "Indirect modification of overloaded element of %s has no effect", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2974|      5|		} else if (EXPECTED(retval && Z_TYPE_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  |  Branch (456:52): [True: 4, False: 1]
  |  |  |  Branch (456:52): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 2975|      4|			if (!Z_ISREF_P(retval)) {
  ------------------
  |  |  964|      4|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      4|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2975:8): [True: 2, False: 2]
  ------------------
 2976|      2|				if (result != retval) {
  ------------------
  |  Branch (2976:9): [True: 2, False: 0]
  ------------------
 2977|      2|					ZVAL_COPY(result, retval);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2978|      2|					retval = result;
 2979|      2|				}
 2980|      2|				if (Z_TYPE_P(retval) != IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(retval) != IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (2980:9): [True: 1, False: 1]
  ------------------
 2981|      1|					zend_class_entry *ce = obj->ce;
 2982|      1|					zend_error(E_NOTICE, "Indirect modification of overloaded element of %s has no effect", ZSTR_VAL(ce->name));
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
              					zend_error(E_NOTICE, "Indirect modification of overloaded element of %s has no effect", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2983|      1|				}
 2984|      2|			} else if (UNEXPECTED(Z_REFCOUNT_P(retval) == 1)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2985|      2|				ZVAL_UNREF(retval);
  ------------------
  |  | 1499|      2|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      2|		zval *_z = (z);									\
  |  | 1501|      2|		zend_reference *ref;							\
  |  | 1502|      2|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      2|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      2|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      2|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      2|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2985:5): [True: 0, False: 2]
  |  Branch (2985:5): [True: 2, False: 0]
  ------------------
 2986|      2|			}
 2987|      4|			if (result != retval) {
  ------------------
  |  Branch (2987:8): [True: 2, False: 2]
  ------------------
 2988|      2|				ZVAL_INDIRECT(result, retval);
  ------------------
  |  | 1246|      2|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      2|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      2|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      2|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      2|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2989|      2|			}
 2990|      4|		} else {
 2991|      1|			ZEND_ASSERT(EG(exception) && "read_dimension() returned NULL without exception");
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2991:4): [True: 0, False: 1]
  |  Branch (2991:4): [True: 0, False: 0]
  |  Branch (2991:4): [True: 1, False: 0]
  |  Branch (2991:4): [True: 1, False: 0]
  ------------------
 2992|      1|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2993|      1|		}
 2994|      5|		if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2995|      0|			zend_objects_store_del(obj);
 2996|      0|		}
 2997|     33|	} else {
 2998|     33|		if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|     33|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 33, False: 0]
  |  |  ------------------
  ------------------
 2999|     33|			if (type != BP_VAR_W && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  | 1075|     66|#define BP_VAR_W			1
  ------------------
              			if (type != BP_VAR_W && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (2999:8): [True: 9, False: 24]
  ------------------
 3000|      2|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      2|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3001|      2|			}
 3002|     33|			if (type != BP_VAR_UNSET) {
  ------------------
  |  | 1079|     33|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (3002:8): [True: 28, False: 5]
  ------------------
 3003|     28|				HashTable *ht = zend_new_array(0);
  ------------------
  |  |  342|     28|	_zend_new_array(size)
  ------------------
 3004|     28|				uint8_t old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|     28|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     28|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 3005|       |
 3006|     28|				ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|     28|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     28|		zend_array *__arr = (a);				\
  |  | 1127|     28|		zval *__z = (z);						\
  |  | 1128|     28|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     28|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     28|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     28|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     28|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     28|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     28|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     28|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     28|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     28|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 3007|     28|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  ------------------
  ------------------
 3008|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3009|      0|					zend_false_to_array_deprecated();
 3010|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3011|      0|						zend_array_destroy(ht);
 3012|      0|						goto return_null;
 3013|      0|					}
 3014|      0|				}
 3015|     28|				goto fetch_from_array;
 3016|     28|			} else {
 3017|      5|				if (UNEXPECTED(Z_TYPE_P(container) == IS_FALSE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 3018|      0|					zend_false_to_array_deprecated();
 3019|      0|				}
 3020|      5|return_null:
 3021|       |				/* for read-mode only */
 3022|      5|				if (ZEND_CONST_COND(dim_type == IS_CV, dim != NULL) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  420|     10|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 5, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 5]
  |  |  ------------------
  ------------------
              				if (ZEND_CONST_COND(dim_type == IS_CV, dim != NULL) && UNEXPECTED(Z_TYPE_P(dim) == IS_UNDEF)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
 3023|      2|					ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      2|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3024|      2|				}
 3025|      5|				ZVAL_NULL(result);
  ------------------
  |  | 1059|      5|#define ZVAL_NULL(z) do {				\
  |  | 1060|      5|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 3026|      5|			}
 3027|     33|		} else {
 3028|      0|			if (type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (3028:8): [True: 0, False: 0]
  ------------------
 3029|      0|				zend_throw_error(NULL, "Cannot unset offset in a non-array variable");
 3030|      0|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3031|      0|			} else {
 3032|      0|				zend_use_scalar_as_array();
 3033|      0|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3034|      0|			}
 3035|      0|		}
 3036|     33|	}
 3037|     51|}
zend_execute.c:zend_fetch_dimension_address_RW:
 3046|      9|{
 3047|      9|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      9|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      9|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3048|      9|	zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  | 1076|      9|#define BP_VAR_RW			2
  ------------------
              	zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_RW EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3049|      9|}
zend_execute.c:zend_fetch_dimension_address_read_IS:
 3224|     32|{
 3225|     32|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     32|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     32|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3226|     32|	zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_IS, 0, 0 EXECUTE_DATA_CC);
  ------------------
  |  | 1077|     32|#define BP_VAR_IS			3
  ------------------
              	zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_IS, 0, 0 EXECUTE_DATA_CC);
  ------------------
  |  |   89|     32|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     32|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3227|     32|}
zend_execute.c:_get_zval_ptr_cv_BP_VAR_IS:
  369|     20|{
  370|     20|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|     20|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     20|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  371|       |
  372|     20|	return ret;
  373|     20|}
zend_execute.c:zend_fetch_dimension_address_UNSET:
 3052|      8|{
 3053|      8|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3054|      8|	zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_UNSET EXECUTE_DATA_CC);
  ------------------
  |  | 1079|      8|#define BP_VAR_UNSET		5
  ------------------
              	zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_UNSET EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3055|      8|}
zend_execute.c:zend_fetch_dimension_address_LIST_r:
 3230|     95|{
 3231|     95|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     95|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     95|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3232|     95|	zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 1, 0 EXECUTE_DATA_CC);
  ------------------
  |  | 1074|     95|#define BP_VAR_R			0
  ------------------
              	zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 1, 0 EXECUTE_DATA_CC);
  ------------------
  |  |   89|     95|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     95|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3233|     95|}
zend_execute.c:zend_quick_get_constant:
 5472|    496|{
 5473|    496|	_zend_quick_get_constant(key, flags, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    496|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    496|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	_zend_quick_get_constant(key, flags, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    496|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    496|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5474|    496|} /* }}} */
zend_execute.c:_zend_quick_get_constant:
 5429|    499|{
 5430|    499|	zval *zv;
 5431|    499|	zend_constant *c = NULL;
 5432|       |
 5433|       |	/* null/true/false are resolved during compilation, so don't check for them here. */
 5434|    499|	zv = zend_hash_find_known_hash(EG(zend_constants), Z_STR_P(key));
  ------------------
  |  |   45|    499|# define EG(v) (executor_globals.v)
  ------------------
              	zv = zend_hash_find_known_hash(EG(zend_constants), Z_STR_P(key));
  ------------------
  |  |  982|    499|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    499|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5435|    499|	if (zv) {
  ------------------
  |  Branch (5435:6): [True: 159, False: 340]
  ------------------
 5436|    159|		c = (zend_constant*)Z_PTR_P(zv);
  ------------------
  |  | 1053|    159|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    159|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 5437|    340|	} else if (flags & IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE) {
  ------------------
  |  | 1149|    340|#define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800
  ------------------
  |  Branch (5437:13): [True: 19, False: 321]
  ------------------
 5438|     19|		key++;
 5439|     19|		zv = zend_hash_find_known_hash(EG(zend_constants), Z_STR_P(key));
  ------------------
  |  |   45|     19|# define EG(v) (executor_globals.v)
  ------------------
              		zv = zend_hash_find_known_hash(EG(zend_constants), Z_STR_P(key));
  ------------------
  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5440|     19|		if (zv) {
  ------------------
  |  Branch (5440:7): [True: 6, False: 13]
  ------------------
 5441|      6|			c = (zend_constant*)Z_PTR_P(zv);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 5442|      6|		}
 5443|     19|	}
 5444|       |
 5445|    499|	if (!c) {
  ------------------
  |  Branch (5445:6): [True: 334, False: 165]
  ------------------
 5446|    334|		if (!check_defined_only) {
  ------------------
  |  Branch (5446:7): [True: 332, False: 2]
  ------------------
 5447|    332|			zend_throw_error(NULL, "Undefined constant \"%s\"", Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
  ------------------
  |  |  985|    332|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    332|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    332|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5448|    332|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|    332|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    332|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    332|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    332|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    332|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    332|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 332]
  |  |  ------------------
  ------------------
 5449|    332|		}
 5450|    334|		return FAILURE;
 5451|    334|	}
 5452|       |
 5453|    165|	if (!check_defined_only) {
  ------------------
  |  Branch (5453:6): [True: 164, False: 1]
  ------------------
 5454|    164|		ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value);
  ------------------
  |  | 1457|    164|	do {																\
  |  | 1458|    164|		zval *_z1 = (z);												\
  |  | 1459|    164|		const zval *_z2 = (v);											\
  |  | 1460|    164|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|    164|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    164|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|    164|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|    164|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    164|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|    164|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|    164|	do {												\
  |  |  |  | 1408|    164|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    164|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    164|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    164|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    164|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    164|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    164|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 164]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|    164|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|    164|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    164|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 37, False: 127]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|     37|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|     37|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|     37|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 37, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 37, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|     37|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|     37|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|     37|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|     37|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|     37|		}																\
  |  | 1472|    164|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 164]
  |  |  ------------------
  ------------------
 5455|    164|		if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
  ------------------
  |  |   51|    164|	(Z_CONSTANT_FLAGS((c)->value) & 0xff)
  |  |  ------------------
  |  |  |  |  701|    164|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              		if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) {
  ------------------
  |  |   27|    164|#define CONST_DEPRECATED		(1<<2)				/* Deprecated */
  ------------------
  |  Branch (5455:7): [True: 18, False: 146]
  ------------------
 5456|     18|			if (!CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |   31|     18|#define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |  701|     18|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               #define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |   29|     18|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  ------------------
  |  Branch (5456:8): [True: 18, False: 0]
  ------------------
 5457|     18|				CONST_PROTECT_RECURSION(c);
  ------------------
  |  |   33|     18|	do { \
  |  |   34|     18|		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|     18|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|     18|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   35|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (35:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 5458|     18|				zend_deprecated_constant(c, c->name);
 5459|     18|				CONST_UNPROTECT_RECURSION(c);
  ------------------
  |  |   37|     18|	do { \
  |  |   38|     18|		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|     18|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|     18|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   39|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (39:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 5460|     18|			}
 5461|     18|			return SUCCESS;
 5462|     18|		}
 5463|    164|	}
 5464|       |
 5465|    147|	CACHE_PTR(opline->extended_value, c);
  ------------------
  |  |  529|    147|#define CACHE_PTR(num, ptr) do { \
  |  |  530|    147|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|    147|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|    147|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 147]
  |  |  ------------------
  ------------------
 5466|    147|	return SUCCESS;
 5467|    165|}
zend_execute.c:zend_invalid_method_call:
 2560|     10|{
 2561|     10|	zend_throw_error(NULL, "Call to a member function %s() on %s",
 2562|     10|		Z_STRVAL_P(function_name), zend_zval_value_name(object));
  ------------------
  |  |  985|     10|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     10|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2563|     10|}
zend_execute.c:zend_isset_dim_slow:
 3296|     13|{
 3297|     13|	if (/*OP2_TYPE == IS_CV &&*/ UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 3298|      0|		offset = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3299|      0|	}
 3300|       |
 3301|     13|	if (/*OP1_TYPE != IS_CONST &&*/ EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 3302|      0|		return Z_OBJ_HT_P(container)->has_dimension(Z_OBJ_P(container), offset, 0);
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		return Z_OBJ_HT_P(container)->has_dimension(Z_OBJ_P(container), offset, 0);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3303|     13|	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 10]
  |  |  ------------------
  ------------------
 3304|      3|		zend_long lval;
 3305|       |
 3306|      3|		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 3307|      2|			lval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 3308|      3|str_offset:
 3309|      3|			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 3310|      1|				lval += (zend_long)Z_STRLEN_P(container);
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3311|      1|			}
 3312|      3|			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
              			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
  ------------------
  |  |  988|      2|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      2|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3312:31): [True: 2, False: 0]
  ------------------
 3313|      2|				return 1;
 3314|      2|			} else {
 3315|      1|				return 0;
 3316|      1|			}
 3317|      3|		} else {
 3318|       |			/*if (OP2_TYPE & (IS_CV|IS_VAR)) {*/
 3319|      1|				ZVAL_DEREF(offset);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3320|       |			/*}*/
 3321|      1|			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (3321:8): [True: 0, False: 1]
  ------------------
 3322|      1|					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (3322:10): [True: 1, False: 0]
  ------------------
 3323|      1|						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
              						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
  ------------------
  |  |  985|      1|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      1|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3323:10): [True: 1, False: 0]
  ------------------
 3324|      1|				lval = zval_get_long_ex(offset, /* is_strict */ true);
 3325|      1|				goto str_offset;
 3326|      1|			}
 3327|      0|			return 0;
 3328|      1|		}
 3329|     10|	} else {
 3330|     10|		return 0;
 3331|     10|	}
 3332|     13|}
zend_execute.c:_get_zval_ptr_deref:
  453|     11|{
  454|     11|	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     11|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (454:6): [True: 10, False: 1]
  ------------------
  455|     10|		if (op_type == IS_TMP_VAR) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (455:7): [True: 10, False: 0]
  ------------------
  456|     10|			return _get_zval_ptr_tmp(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  457|     10|		} else {
  458|      0|			ZEND_ASSERT(op_type == IS_VAR);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (458:4): [True: 0, False: 0]
  |  Branch (458:4): [True: 0, False: 0]
  ------------------
  459|      0|			return _get_zval_ptr_var_deref(node.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  460|      0|		}
  461|     10|	} else {
  462|      1|		if (op_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (462:7): [True: 0, False: 1]
  ------------------
  463|      0|			return RT_CONSTANT(opline, node);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  464|      1|		} else if (op_type == IS_CV) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (464:14): [True: 1, False: 0]
  ------------------
  465|      1|			return _get_zval_ptr_cv_deref(node.var, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  466|      1|		} else {
  467|       |			return NULL;
  468|      0|		}
  469|      1|	}
  470|     11|}
zend_execute.c:_get_zval_ptr_cv_deref:
  332|      1|{
  333|      1|	zval *ret = EX_VAR(var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  334|       |
  335|      1|	if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  336|      0|		if (type == BP_VAR_W) {
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  |  Branch (336:7): [True: 0, False: 0]
  ------------------
  337|      0|			ZVAL_NULL(ret);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  338|      0|			return ret;
  339|      0|		} else {
  340|      0|			return _get_zval_cv_lookup(ret, var, type EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  341|      0|		}
  342|      0|	}
  343|      1|	ZVAL_DEREF(ret);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  344|      1|	return ret;
  345|      1|}
zend_execute.c:zend_quick_check_constant:
 5478|      3|{
 5479|      3|	return _zend_quick_get_constant(key, 0, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	return _zend_quick_get_constant(key, 0, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5480|      3|} /* }}} */
zend_execute.c:zend_verify_missing_return_type:
 1504|      4|{
 1505|       |	/* VERIFY_RETURN_TYPE is not emitted for "void" functions, so this is always an error. */
 1506|       |	zend_verify_return_error(zf, NULL);
 1507|      4|}
zend_execute.c:zend_init_dynamic_call_array:
 5213|     11|{
 5214|     11|	zend_function *fbc;
 5215|     11|	void *object_or_called_scope;
 5216|     11|	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  681|     11|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|     11|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|     11|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  671|     11|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
 5217|       |
 5218|     11|	if (zend_hash_num_elements(function) == 2) {
  ------------------
  |  Branch (5218:6): [True: 11, False: 0]
  ------------------
 5219|     11|		zval *obj;
 5220|     11|		zval *method;
 5221|     11|		obj = zend_hash_index_find(function, 0);
 5222|     11|		method = zend_hash_index_find(function, 1);
 5223|       |
 5224|     11|		if (UNEXPECTED(!obj) || UNEXPECTED(!method)) {
  ------------------
  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  ------------------
  ------------------
              		if (UNEXPECTED(!obj) || UNEXPECTED(!method)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
 5225|      2|			zend_throw_error(NULL, "Array callback has to contain indices 0 and 1");
 5226|      2|			return NULL;
 5227|      2|		}
 5228|       |
 5229|      9|		ZVAL_DEREF(obj);
  ------------------
  |  | 1474|      9|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      9|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 5230|      9|		if (UNEXPECTED(Z_TYPE_P(obj) != IS_STRING) && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 7]
  |  |  ------------------
  ------------------
              		if (UNEXPECTED(Z_TYPE_P(obj) != IS_STRING) && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 5231|      1|			zend_throw_error(NULL, "First array member is not a valid class name or object");
 5232|      1|			return NULL;
 5233|      1|		}
 5234|       |
 5235|      8|		ZVAL_DEREF(method);
  ------------------
  |  | 1474|      8|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      8|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 5236|      8|		if (UNEXPECTED(Z_TYPE_P(method) != IS_STRING)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 5237|      0|			zend_throw_error(NULL, "Second array member is not a valid method");
 5238|      0|			return NULL;
 5239|      0|		}
 5240|       |
 5241|      8|		if (Z_TYPE_P(obj) == IS_STRING) {
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(obj) == IS_STRING) {
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
  |  Branch (5241:7): [True: 7, False: 1]
  ------------------
 5242|      7|			zend_class_entry *called_scope = zend_fetch_class_by_name(Z_STR_P(obj), NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			zend_class_entry *called_scope = zend_fetch_class_by_name(Z_STR_P(obj), NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      7|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			zend_class_entry *called_scope = zend_fetch_class_by_name(Z_STR_P(obj), NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      7|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 5243|       |
 5244|      7|			if (UNEXPECTED(called_scope == NULL)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 5]
  |  |  ------------------
  ------------------
 5245|      2|				return NULL;
 5246|      2|			}
 5247|       |
 5248|      5|			if (called_scope->get_static_method) {
  ------------------
  |  Branch (5248:8): [True: 0, False: 5]
  ------------------
 5249|      0|				fbc = called_scope->get_static_method(called_scope, Z_STR_P(method));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5250|      5|			} else {
 5251|      5|				fbc = zend_std_get_static_method(called_scope, Z_STR_P(method), NULL);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5252|      5|			}
 5253|      5|			if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 5254|      1|				if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 5255|      1|					zend_undefined_method(called_scope, Z_STR_P(method));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5256|      1|				}
 5257|      1|				return NULL;
 5258|      1|			}
 5259|      4|			if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      4|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (5259:8): [True: 2, False: 2]
  ------------------
 5260|      2|				zend_non_static_method_call(fbc);
 5261|      2|				if (fbc->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      2|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (5261:9): [True: 2, False: 0]
  ------------------
 5262|      2|					zend_string_release_ex(fbc->common.function_name, 0);
 5263|      2|					zend_free_trampoline(fbc);
  ------------------
  |  |  344|      2|#define zend_free_trampoline(func) do { \
  |  |  345|      2|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 2, False: 0]
  |  |  ------------------
  |  |  346|      2|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      2|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      2|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 5264|      2|				}
 5265|      2|				return NULL;
 5266|      2|			}
 5267|      2|			object_or_called_scope = called_scope;
 5268|      2|		} else {
 5269|      1|			zend_object *object = Z_OBJ_P(obj);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5270|       |
 5271|      1|			fbc = Z_OBJ_HT_P(obj)->get_method(&object, Z_STR_P(method), NULL);
  ------------------
  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			fbc = Z_OBJ_HT_P(obj)->get_method(&object, Z_STR_P(method), NULL);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5272|      1|			if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 5273|      0|				if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5274|      0|					zend_undefined_method(object->ce, Z_STR_P(method));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 5275|      0|				}
 5276|      0|				return NULL;
 5277|      0|			}
 5278|       |
 5279|      1|			if ((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) {
  ------------------
  |  |  227|      1|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (5279:8): [True: 0, False: 1]
  ------------------
 5280|      0|				object_or_called_scope = object->ce;
 5281|      1|			} else {
 5282|      1|				call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  667|      1|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              				call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      1|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5283|      1|				GC_ADDREF(object); /* For $this pointer */
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 5284|      1|				object_or_called_scope = object;
 5285|      1|			}
 5286|      1|		}
 5287|      8|	} else {
 5288|      0|		zend_throw_error(NULL, "Array callback must have exactly two elements");
 5289|      0|		return NULL;
 5290|      0|	}
 5291|       |
 5292|      3|	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
              	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 5293|      1|		init_func_run_time_cache(&fbc->op_array);
 5294|      1|	}
 5295|       |
 5296|      3|	return zend_vm_stack_push_call_frame(call_info,
 5297|      3|		fbc, num_args, object_or_called_scope);
 5298|     11|}
zend_execute.c:zend_init_dynamic_call_string:
 5089|     18|{
 5090|     18|	zend_function *fbc;
 5091|     18|	zval *func;
 5092|     18|	zend_class_entry *called_scope;
 5093|     18|	zend_string *lcname;
 5094|     18|	const char *colon;
 5095|       |
 5096|     18|	if ((colon = zend_memrchr(ZSTR_VAL(function), ':', ZSTR_LEN(function))) != NULL &&
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if ((colon = zend_memrchr(ZSTR_VAL(function), ':', ZSTR_LEN(function))) != NULL &&
  ------------------
  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (5096:6): [True: 1, False: 17]
  ------------------
 5097|      1|		colon > ZSTR_VAL(function) &&
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (5097:3): [True: 1, False: 0]
  ------------------
 5098|      1|		*(colon-1) == ':'
  ------------------
  |  Branch (5098:3): [True: 1, False: 0]
  ------------------
 5099|     18|	) {
 5100|      1|		zend_string *mname;
 5101|      1|		size_t cname_length = colon - ZSTR_VAL(function) - 1;
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5102|      1|		size_t mname_length = ZSTR_LEN(function) - cname_length - (sizeof("::") - 1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5103|       |
 5104|      1|		lcname = zend_string_init(ZSTR_VAL(function), cname_length, 0);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5105|       |
 5106|      1|		called_scope = zend_fetch_class_by_name(lcname, NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      1|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              		called_scope = zend_fetch_class_by_name(lcname, NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      1|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 5107|      1|		if (UNEXPECTED(called_scope == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 5108|      1|			zend_string_release_ex(lcname, 0);
 5109|      1|			return NULL;
 5110|      1|		}
 5111|       |
 5112|      0|		mname = zend_string_init(ZSTR_VAL(function) + (cname_length + sizeof("::") - 1), mname_length, 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5113|       |
 5114|      0|		if (called_scope->get_static_method) {
  ------------------
  |  Branch (5114:7): [True: 0, False: 0]
  ------------------
 5115|      0|			fbc = called_scope->get_static_method(called_scope, mname);
 5116|      0|		} else {
 5117|      0|			fbc = zend_std_get_static_method(called_scope, mname, NULL);
 5118|      0|		}
 5119|      0|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5120|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5121|      0|				zend_undefined_method(called_scope, mname);
 5122|      0|			}
 5123|      0|			zend_string_release_ex(lcname, 0);
 5124|      0|			zend_string_release_ex(mname, 0);
 5125|      0|			return NULL;
 5126|      0|		}
 5127|       |
 5128|      0|		zend_string_release_ex(lcname, 0);
 5129|      0|		zend_string_release_ex(mname, 0);
 5130|       |
 5131|      0|		if (UNEXPECTED(!(fbc->common.fn_flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5132|      0|			zend_non_static_method_call(fbc);
 5133|      0|			if (fbc->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (5133:8): [True: 0, False: 0]
  ------------------
 5134|      0|				zend_string_release_ex(fbc->common.function_name, 0);
 5135|      0|				zend_free_trampoline(fbc);
  ------------------
  |  |  344|      0|#define zend_free_trampoline(func) do { \
  |  |  345|      0|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      0|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5136|      0|			}
 5137|      0|			return NULL;
 5138|      0|		}
 5139|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5140|      0|			init_func_run_time_cache(&fbc->op_array);
 5141|      0|		}
 5142|     17|	} else {
 5143|     17|		if (ZSTR_VAL(function)[0] == '\\') {
  ------------------
  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (5143:7): [True: 1, False: 16]
  ------------------
 5144|      1|			lcname = zend_string_alloc(ZSTR_LEN(function) - 1, 0);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5145|      1|			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(function) + 1, ZSTR_LEN(function) - 1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(function) + 1, ZSTR_LEN(function) - 1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(function) + 1, ZSTR_LEN(function) - 1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5146|     16|		} else {
 5147|     16|			lcname = zend_string_tolower(function);
 5148|     16|		}
 5149|     17|		if (UNEXPECTED((func = zend_hash_find(EG(function_table), lcname)) == NULL)) {
  ------------------
  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 15]
  |  |  ------------------
  ------------------
 5150|      2|			zend_throw_error(NULL, "Call to undefined function %s()", ZSTR_VAL(function));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5151|      2|			zend_string_release_ex(lcname, 0);
 5152|      2|			return NULL;
 5153|      2|		}
 5154|     15|		zend_string_release_ex(lcname, 0);
 5155|       |
 5156|     15|		fbc = Z_FUNC_P(func);
  ------------------
  |  | 1050|     15|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|     15|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 5157|     15|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 13]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 5158|      2|			init_func_run_time_cache(&fbc->op_array);
 5159|      2|		}
 5160|     15|		called_scope = NULL;
 5161|     15|	}
 5162|       |
 5163|     15|	return zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC,
  ------------------
  |  |  681|     15|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|     15|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|     15|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	return zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC,
  ------------------
  |  |  671|     15|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
 5164|     15|		fbc, num_args, called_scope);
 5165|     18|}
zend_execute.c:zend_init_dynamic_call_object:
 5169|    246|{
 5170|    246|	zend_function *fbc;
 5171|    246|	void *object_or_called_scope;
 5172|    246|	zend_class_entry *called_scope;
 5173|    246|	zend_object *object;
 5174|    246|	uint32_t call_info;
 5175|       |
 5176|    246|	if (EXPECTED(function->handlers->get_closure) &&
  ------------------
  |  |  456|    492|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 246, False: 0]
  |  |  ------------------
  ------------------
 5177|    246|	    EXPECTED(function->handlers->get_closure(function, &called_scope, &fbc, &object, 0) == SUCCESS)) {
  ------------------
  |  |  456|    246|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 245, False: 1]
  |  |  ------------------
  ------------------
 5178|       |
 5179|    245|		object_or_called_scope = called_scope;
 5180|    245|		if (EXPECTED(fbc->common.fn_flags & ZEND_ACC_CLOSURE)) {
  ------------------
  |  |  456|    245|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 242, False: 3]
  |  |  ------------------
  ------------------
 5181|       |			/* Delay closure destruction until its invocation */
 5182|    242|			GC_ADDREF(ZEND_CLOSURE_OBJECT(fbc));
  ------------------
  |  |  718|    242|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 5183|    242|			ZEND_ASSERT(ZEND_ACC_FAKE_CLOSURE == ZEND_CALL_FAKE_CLOSURE);
  ------------------
  |  |  112|    242|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5183:4): [True: 0, Folded]
  |  Branch (5183:4): [True: 242, Folded]
  ------------------
 5184|    242|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC | ZEND_CALL_CLOSURE |
  ------------------
  |  |  681|    242|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    242|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    242|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC | ZEND_CALL_CLOSURE |
  ------------------
  |  |  671|    242|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC | ZEND_CALL_CLOSURE |
  ------------------
  |  |  668|    242|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
 5185|    242|				(fbc->common.fn_flags & ZEND_ACC_FAKE_CLOSURE);
  ------------------
  |  |  385|    242|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
 5186|    242|			if (object) {
  ------------------
  |  Branch (5186:8): [True: 7, False: 235]
  ------------------
 5187|      7|				call_info |= ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      7|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      7|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      7|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5188|      7|				object_or_called_scope = object;
 5189|      7|			}
 5190|    242|		} else {
 5191|      3|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  681|      3|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      3|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      3|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  671|      3|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
 5192|      3|			if (object) {
  ------------------
  |  Branch (5192:8): [True: 3, False: 0]
  ------------------
 5193|      3|				call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  667|      3|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              				call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      3|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      3|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      3|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5194|      3|				GC_ADDREF(object); /* For $this pointer */
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 5195|      3|				object_or_called_scope = object;
 5196|      3|			}
 5197|      3|		}
 5198|    245|	} else {
 5199|      1|		zend_throw_error(NULL, "Object of type %s is not callable", ZSTR_VAL(function->ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5200|      1|		return NULL;
 5201|      1|	}
 5202|       |
 5203|    245|	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|    490|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 228, False: 17]
  |  |  ------------------
  ------------------
              	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|    456|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 225]
  |  |  |  Branch (457:52): [True: 0, False: 228]
  |  |  ------------------
  ------------------
 5204|      3|		init_func_run_time_cache(&fbc->op_array);
 5205|      3|	}
 5206|       |
 5207|    245|	return zend_vm_stack_push_call_frame(call_info,
 5208|    245|		fbc, num_args, object_or_called_scope);
 5209|    246|}
zend_execute.c:zend_post_incdec_overloaded_property:
 2369|      2|{
 2370|      2|	zval rv;
 2371|      2|	zval *z;
 2372|      2|	zval z_copy;
 2373|       |
 2374|      2|	GC_ADDREF(object);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2375|      2|	z =object->handlers->read_property(object, name, BP_VAR_R, cache_slot, &rv);
  ------------------
  |  | 1074|      2|#define BP_VAR_R			0
  ------------------
 2376|      2|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2377|      1|		OBJ_RELEASE(object);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2378|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2379|      1|		return;
 2380|      1|	}
 2381|       |
 2382|      1|	ZVAL_COPY_DEREF(&z_copy, z);
  ------------------
  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      1|		zval *_z3 = (v);								\
  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      1|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      1|		}												\
  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2383|      1|	ZVAL_COPY(EX_VAR(opline->result.var), &z_copy);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2384|      1|	if (ZEND_IS_INCREMENT(opline->opcode)) {
  ------------------
  |  | 1228|      1|#define ZEND_IS_INCREMENT(opcode) (((opcode) & 1) == 0)
  |  |  ------------------
  |  |  |  Branch (1228:35): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2385|      1|		increment_function(&z_copy);
 2386|      1|	} else {
 2387|      0|		decrement_function(&z_copy);
 2388|      0|	}
 2389|      1|	object->handlers->write_property(object, name, &z_copy, cache_slot);
 2390|      1|	OBJ_RELEASE(object);
  ------------------
  |  |   44|      1|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2391|      1|	zval_ptr_dtor(&z_copy);
 2392|      1|	if (z == &rv) {
  ------------------
  |  Branch (2392:6): [True: 1, False: 0]
  ------------------
 2393|      1|		zval_ptr_dtor(z);
 2394|      1|	}
 2395|      1|}
zend_execute.c:zend_get_running_generator:
 4632|    300|{
 4633|       |	/* The generator object is stored in EX(return_value) */
 4634|    300|	zend_generator *generator = (zend_generator *) EX(return_value);
  ------------------
  |  |  730|    300|#define EX(element) 			((execute_data)->element)
  ------------------
 4635|       |	/* However control may currently be delegated to another generator.
 4636|       |	 * That's the one we're interested in. */
 4637|    300|	return generator;
 4638|    300|}
zend_execute.c:zend_verify_variadic_arg_type:
 1260|     13|{
 1261|     13|	ZEND_ASSERT(ZEND_TYPE_IS_SET(arg_info->type));
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1261:2): [True: 0, False: 13]
  |  Branch (1261:2): [True: 13, False: 0]
  ------------------
 1262|     13|	if (UNEXPECTED(!zend_check_type(&arg_info->type, arg, false, false))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 9]
  |  |  ------------------
  ------------------
 1263|      4|		zend_verify_arg_error(zf, arg_info, arg_num, arg);
 1264|      4|		return 0;
 1265|      4|	}
 1266|       |
 1267|      9|	return 1;
 1268|     13|}
zend_execute.c:zend_array_key_exists_fast:
 3374|      2|{
 3375|      2|	zend_string *str;
 3376|      2|	zend_ulong hval;
 3377|       |
 3378|      2|try_again:
 3379|      2|	if (EXPECTED(Z_TYPE_P(key) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 3380|      1|		str = Z_STR_P(key);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3381|      1|		if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      1|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      1|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3382|      0|			goto num_key;
 3383|      0|		}
 3384|      1|str_key:
 3385|      1|		return zend_hash_exists(ht, str);
 3386|      1|	} else if (EXPECTED(Z_TYPE_P(key) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 3387|      1|		hval = Z_LVAL_P(key);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 3388|      1|num_key:
 3389|      1|		return zend_hash_index_exists(ht, hval);
 3390|      1|	} else if (EXPECTED(Z_ISREF_P(key))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3391|      0|		key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3392|      0|		goto try_again;
 3393|      0|	} else if (Z_TYPE_P(key) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(key) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (3393:13): [True: 0, False: 0]
  ------------------
 3394|       |		/* The array may be destroyed while throwing a warning in case the float is not representable as an int.
 3395|       |		 * Temporarily increase the refcount to detect this situation. */
 3396|      0|		GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      0|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 3397|      0|		hval = zend_dval_to_lval_safe(Z_DVAL_P(key));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 3398|      0|		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (3398:7): [True: 0, False: 0]
  |  Branch (3398:47): [True: 0, False: 0]
  ------------------
 3399|      0|			zend_array_destroy(ht);
 3400|      0|			return false;
 3401|      0|		}
 3402|      0|		if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3403|      0|			return false;
 3404|      0|		}
 3405|      0|		goto num_key;
 3406|      0|	} else if (Z_TYPE_P(key) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(key) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (3406:13): [True: 0, False: 0]
  ------------------
 3407|      0|		hval = 0;
 3408|      0|		goto num_key;
 3409|      0|	} else if (Z_TYPE_P(key) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(key) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (3409:13): [True: 0, False: 0]
  ------------------
 3410|      0|		hval = 1;
 3411|      0|		goto num_key;
 3412|      0|	} else if (Z_TYPE_P(key) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(key) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (3412:13): [True: 0, False: 0]
  ------------------
 3413|      0|		zend_use_resource_as_offset(key);
 3414|      0|		hval = Z_RES_HANDLE_P(key);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3415|      0|		goto num_key;
 3416|      0|	} else if (Z_TYPE_P(key) <= IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(key) <= IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (3416:13): [True: 0, False: 0]
  ------------------
 3417|      0|		if (UNEXPECTED(Z_TYPE_P(key) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3418|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3419|      0|		} else {
 3420|      0|			ZEND_ASSERT(Z_TYPE_P(key) == IS_NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3420:4): [True: 0, False: 0]
  |  Branch (3420:4): [True: 0, False: 0]
  ------------------
 3421|      0|			zend_error(E_DEPRECATED, "Using null as the key parameter for array_key_exists() is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 3422|      0|		}
 3423|      0|		str = ZSTR_EMPTY_ALLOC();
 3424|      0|		goto str_key;
 3425|      0|	} else {
 3426|      0|		zend_illegal_array_offset_access(key);
 3427|      0|		return 0;
 3428|      0|	}
 3429|      2|}
zend_execute.c:zend_swap_operands:
 5064|     88|{
 5065|     88|	znode_op     tmp;
 5066|     88|	uint8_t   tmp_type;
 5067|       |
 5068|     88|	tmp          = op->op1;
 5069|     88|	tmp_type     = op->op1_type;
 5070|     88|	op->op1      = op->op2;
 5071|     88|	op->op1_type = op->op2_type;
 5072|     88|	op->op2      = tmp;
 5073|     88|	op->op2_type = tmp_type;
 5074|       |
 5075|       |#ifdef ZEND_VERIFY_TYPE_INFERENCE
 5076|       |	uint32_t tmp_info;
 5077|       |	tmp_info = op->op1_use_type;
 5078|       |	op->op1_use_type = op->op2_use_type;
 5079|       |	op->op2_use_type = tmp_info;
 5080|       |	tmp_info = op->op1_def_type;
 5081|       |	op->op1_def_type = op->op2_def_type;
 5082|       |	op->op2_def_type = tmp_info;
 5083|       |#endif
 5084|     88|}

spl_fixedarray.c:zend_safe_assign_to_variable_noref:
  213|      2|static zend_always_inline void zend_safe_assign_to_variable_noref(zval *variable_ptr, const zval *value) {
  214|      2|	if (Z_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|      0|		ZEND_ASSERT(Z_TYPE_P(variable_ptr) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (215:3): [True: 0, False: 0]
  |  Branch (215:3): [True: 0, False: 0]
  ------------------
  216|      0|		zend_refcounted *ref = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  217|      0|		ZVAL_COPY_VALUE(variable_ptr, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  218|      0|		GC_DTOR_NO_REF(ref);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  219|      2|	} else {
  220|      2|		ZVAL_COPY_VALUE(variable_ptr, value);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  221|      2|	}
  222|      2|}
zend_API.c:zend_active_function:
  458|    467|{
  459|    467|	const zend_function *func = EG(current_execute_data)->func;
  ------------------
  |  |   45|    467|# define EG(v) (executor_globals.v)
  ------------------
  460|    467|	if (ZEND_USER_CODE(func->type)) {
  ------------------
  |  | 1081|    467|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 467]
  |  |  ------------------
  ------------------
  461|      0|		return zend_active_function_ex(EG(current_execute_data));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  462|    467|	} else {
  463|    467|		return func;
  464|    467|	}
  465|    467|}
zend_attributes.c:zend_vm_stack_push_call_frame_ex:
  344|      5|{
  345|      5|	zend_execute_data *call = (zend_execute_data*)EG(vm_stack_top);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  346|       |
  347|      5|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      5|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (347:2): [True: 0, False: 5]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 5, False: 0]
  |  Branch (347:2): [True: 5, False: 0]
  |  Branch (347:2): [True: 5, False: 0]
  ------------------
  348|       |
  349|      5|	if (UNEXPECTED(used_stack > (size_t)(((char*)EG(vm_stack_end)) - (char*)call))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  350|      0|		call = (zend_execute_data*)zend_vm_stack_extend(used_stack);
  351|      0|		ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      0|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  ------------------
  352|      0|		zend_vm_init_call_frame(call, call_info | ZEND_CALL_ALLOCATED, func, num_args, object_or_called_scope);
  ------------------
  |  |  664|      0|#define ZEND_CALL_ALLOCATED          (1 << 18)
  ------------------
  353|      0|		return call;
  354|      5|	} else {
  355|      5|		EG(vm_stack_top) = (zval*)((char*)call + used_stack);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  356|      5|		zend_vm_init_call_frame(call, call_info, func, num_args, object_or_called_scope);
  357|      5|		return call;
  358|      5|	}
  359|      5|}
zend_attributes.c:zend_vm_init_call_frame:
  335|      5|{
  336|      5|	ZEND_ASSERT(!func->common.scope || object_or_called_scope);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (336:2): [True: 5, False: 0]
  |  Branch (336:2): [True: 0, False: 0]
  |  Branch (336:2): [True: 5, False: 0]
  |  Branch (336:2): [True: 0, False: 0]
  ------------------
  337|      5|	call->func = func;
  338|      5|	Z_PTR(call->This) = object_or_called_scope;
  ------------------
  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  339|      5|	ZEND_CALL_INFO(call) = call_info;
  ------------------
  |  |  687|      5|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  340|      5|	ZEND_CALL_NUM_ARGS(call) = num_args;
  ------------------
  |  |  712|      5|	(call)->This.u2.num_args
  ------------------
  341|      5|}
zend_attributes.c:zend_vm_stack_free_call_frame:
  431|      5|{
  432|      5|	zend_vm_stack_free_call_frame_ex(ZEND_CALL_INFO(call), call);
  ------------------
  |  |  687|      5|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  433|      5|}
zend_attributes.c:zend_vm_stack_free_call_frame_ex:
  411|      5|{
  412|      5|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      5|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (412:2): [True: 0, False: 5]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 5, False: 0]
  |  Branch (412:2): [True: 5, False: 0]
  |  Branch (412:2): [True: 5, False: 0]
  ------------------
  413|       |
  414|      5|	if (UNEXPECTED(call_info & ZEND_CALL_ALLOCATED)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  415|      0|		zend_vm_stack p = EG(vm_stack);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  416|      0|		zend_vm_stack prev = p->prev;
  417|       |
  418|      0|		ZEND_ASSERT(call == (zend_execute_data*)ZEND_VM_STACK_ELEMENTS(EG(vm_stack)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (418:3): [True: 0, False: 0]
  |  Branch (418:3): [True: 0, False: 0]
  ------------------
  419|      0|		EG(vm_stack_top) = prev->top;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  420|      0|		EG(vm_stack_end) = prev->end;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  421|      0|		EG(vm_stack) = prev;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  422|      0|		efree(p);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|      5|	} else {
  424|      5|		EG(vm_stack_top) = (zval*)call;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  425|      5|	}
  426|       |
  427|      5|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      5|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (427:2): [True: 0, False: 5]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 5, False: 0]
  |  Branch (427:2): [True: 5, False: 0]
  |  Branch (427:2): [True: 5, False: 0]
  ------------------
  428|      5|}
zend_compile.c:zend_vm_calc_used_stack:
  362|  3.69k|{
  363|  3.69k|	uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args + func->common.T;
  ------------------
  |  |  719|  3.69k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
  364|       |
  365|  3.69k|	if (EXPECTED(ZEND_USER_CODE(func->type))) {
  ------------------
  |  |  456|  3.69k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 470, False: 3.22k]
  |  |  ------------------
  ------------------
  366|    470|		used_stack += func->op_array.last_var - MIN(func->op_array.num_args, num_args);
  ------------------
  |  |  518|    470|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 28, False: 442]
  |  |  ------------------
  ------------------
  367|    470|	}
  368|  3.69k|	return used_stack * sizeof(zval);
  369|  3.69k|}
zend_execute_API.c:zend_active_function:
  458|  1.21k|{
  459|  1.21k|	const zend_function *func = EG(current_execute_data)->func;
  ------------------
  |  |   45|  1.21k|# define EG(v) (executor_globals.v)
  ------------------
  460|  1.21k|	if (ZEND_USER_CODE(func->type)) {
  ------------------
  |  | 1081|  1.21k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 56, False: 1.16k]
  |  |  ------------------
  ------------------
  461|     56|		return zend_active_function_ex(EG(current_execute_data));
  ------------------
  |  |   45|     56|# define EG(v) (executor_globals.v)
  ------------------
  462|  1.16k|	} else {
  463|  1.16k|		return func;
  464|  1.16k|	}
  465|  1.21k|}
zend_execute_API.c:zend_vm_stack_push_call_frame:
  372|  11.8k|{
  373|  11.8k|	uint32_t used_stack = zend_vm_calc_used_stack(num_args, func);
  374|       |
  375|  11.8k|	return zend_vm_stack_push_call_frame_ex(used_stack, call_info,
  376|  11.8k|		func, num_args, object_or_called_scope);
  377|  11.8k|}
zend_execute_API.c:zend_vm_calc_used_stack:
  362|  11.8k|{
  363|  11.8k|	uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args + func->common.T;
  ------------------
  |  |  719|  11.8k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
  364|       |
  365|  11.8k|	if (EXPECTED(ZEND_USER_CODE(func->type))) {
  ------------------
  |  |  456|  11.8k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8.33k, False: 3.54k]
  |  |  ------------------
  ------------------
  366|  8.33k|		used_stack += func->op_array.last_var - MIN(func->op_array.num_args, num_args);
  ------------------
  |  |  518|  8.33k|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 5.54k, False: 2.78k]
  |  |  ------------------
  ------------------
  367|  8.33k|	}
  368|  11.8k|	return used_stack * sizeof(zval);
  369|  11.8k|}
zend_execute_API.c:zend_vm_stack_push_call_frame_ex:
  344|  11.8k|{
  345|  11.8k|	zend_execute_data *call = (zend_execute_data*)EG(vm_stack_top);
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  ------------------
  346|       |
  347|  11.8k|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|  11.8k|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|  11.8k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (347:2): [True: 0, False: 11.8k]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 11.8k, False: 0]
  |  Branch (347:2): [True: 11.8k, False: 0]
  |  Branch (347:2): [True: 11.8k, False: 0]
  ------------------
  348|       |
  349|  11.8k|	if (UNEXPECTED(used_stack > (size_t)(((char*)EG(vm_stack_end)) - (char*)call))) {
  ------------------
  |  |  457|  11.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  350|      0|		call = (zend_execute_data*)zend_vm_stack_extend(used_stack);
  351|      0|		ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      0|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  ------------------
  352|      0|		zend_vm_init_call_frame(call, call_info | ZEND_CALL_ALLOCATED, func, num_args, object_or_called_scope);
  ------------------
  |  |  664|      0|#define ZEND_CALL_ALLOCATED          (1 << 18)
  ------------------
  353|      0|		return call;
  354|  11.8k|	} else {
  355|  11.8k|		EG(vm_stack_top) = (zval*)((char*)call + used_stack);
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  ------------------
  356|  11.8k|		zend_vm_init_call_frame(call, call_info, func, num_args, object_or_called_scope);
  357|  11.8k|		return call;
  358|  11.8k|	}
  359|  11.8k|}
zend_execute_API.c:zend_vm_init_call_frame:
  335|  11.8k|{
  336|  11.8k|	ZEND_ASSERT(!func->common.scope || object_or_called_scope);
  ------------------
  |  |  112|  11.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (336:2): [True: 11.8k, False: 0]
  |  Branch (336:2): [True: 0, False: 0]
  |  Branch (336:2): [True: 594, False: 11.2k]
  |  Branch (336:2): [True: 11.2k, False: 0]
  ------------------
  337|  11.8k|	call->func = func;
  338|  11.8k|	Z_PTR(call->This) = object_or_called_scope;
  ------------------
  |  | 1052|  11.8k|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  339|  11.8k|	ZEND_CALL_INFO(call) = call_info;
  ------------------
  |  |  687|  11.8k|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|  11.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  340|  11.8k|	ZEND_CALL_NUM_ARGS(call) = num_args;
  ------------------
  |  |  712|  11.8k|	(call)->This.u2.num_args
  ------------------
  341|  11.8k|}
zend_execute_API.c:zend_vm_stack_free_args:
  397|  1.56k|{
  398|  1.56k|	uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|  1.56k|	(call)->This.u2.num_args
  ------------------
  399|       |
  400|  1.56k|	if (EXPECTED(num_args > 0)) {
  ------------------
  |  |  456|  1.56k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 80, False: 1.48k]
  |  |  ------------------
  ------------------
  401|     80|		zval *p = ZEND_CALL_ARG(call, 1);
  ------------------
  |  |  728|     80|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|     80|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|     80|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  402|       |
  403|    121|		do {
  404|    121|			zval_ptr_dtor_nogc(p);
  405|    121|			p++;
  406|    121|		} while (--num_args);
  ------------------
  |  Branch (406:12): [True: 41, False: 80]
  ------------------
  407|     80|	}
  408|  1.56k|}
zend_execute_API.c:zend_vm_stack_free_call_frame:
  431|  3.57k|{
  432|  3.57k|	zend_vm_stack_free_call_frame_ex(ZEND_CALL_INFO(call), call);
  ------------------
  |  |  687|  3.57k|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|  3.57k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  433|  3.57k|}
zend_execute_API.c:zend_vm_stack_free_call_frame_ex:
  411|  3.57k|{
  412|  3.57k|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|  3.57k|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|  3.57k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (412:2): [True: 0, False: 3.57k]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 3.57k, False: 0]
  |  Branch (412:2): [True: 3.57k, False: 0]
  |  Branch (412:2): [True: 3.57k, False: 0]
  ------------------
  413|       |
  414|  3.57k|	if (UNEXPECTED(call_info & ZEND_CALL_ALLOCATED)) {
  ------------------
  |  |  457|  3.57k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3.57k]
  |  |  ------------------
  ------------------
  415|      0|		zend_vm_stack p = EG(vm_stack);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  416|      0|		zend_vm_stack prev = p->prev;
  417|       |
  418|      0|		ZEND_ASSERT(call == (zend_execute_data*)ZEND_VM_STACK_ELEMENTS(EG(vm_stack)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (418:3): [True: 0, False: 0]
  |  Branch (418:3): [True: 0, False: 0]
  ------------------
  419|      0|		EG(vm_stack_top) = prev->top;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  420|      0|		EG(vm_stack_end) = prev->end;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  421|      0|		EG(vm_stack) = prev;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  422|      0|		efree(p);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|  3.57k|	} else {
  424|  3.57k|		EG(vm_stack_top) = (zval*)call;
  ------------------
  |  |   45|  3.57k|# define EG(v) (executor_globals.v)
  ------------------
  425|  3.57k|	}
  426|       |
  427|  3.57k|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|  3.57k|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|  3.57k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (427:2): [True: 0, False: 3.57k]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 3.57k, False: 0]
  |  Branch (427:2): [True: 3.57k, False: 0]
  |  Branch (427:2): [True: 3.57k, False: 0]
  ------------------
  428|  3.57k|}
zend_execute_API.c:zend_vm_stack_extend_call_frame:
  440|      6|{
  441|      6|	if (EXPECTED((uint32_t)(EG(vm_stack_end) - EG(vm_stack_top)) > additional_args)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  442|      6|		EG(vm_stack_top) += additional_args;
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
  443|      6|	} else {
  444|      0|		*call = zend_vm_stack_copy_call_frame(*call, passed_args, additional_args);
  445|      0|	}
  446|      6|}
zend_execute.c:zend_vm_stack_new_page:
  325|  33.5k|static zend_always_inline zend_vm_stack zend_vm_stack_new_page(size_t size, zend_vm_stack prev) {
  326|  33.5k|	zend_vm_stack page = (zend_vm_stack)emalloc(size);
  ------------------
  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|       |
  328|  33.5k|	page->top = ZEND_VM_STACK_ELEMENTS(page);
  ------------------
  |  |  303|  33.5k|	(((zval*)(stack)) + ZEND_VM_STACK_HEADER_SLOTS)
  |  |  ------------------
  |  |  |  |  300|  33.5k|	((sizeof(struct _zend_vm_stack) + sizeof(zval) - 1) / sizeof(zval))
  |  |  ------------------
  ------------------
  329|  33.5k|	page->end = (zval*)((char*)page + size);
  330|  33.5k|	page->prev = prev;
  331|  33.5k|	return page;
  332|  33.5k|}
zend_execute.c:zend_vm_stack_push_call_frame_ex:
  344|  52.1k|{
  345|  52.1k|	zend_execute_data *call = (zend_execute_data*)EG(vm_stack_top);
  ------------------
  |  |   45|  52.1k|# define EG(v) (executor_globals.v)
  ------------------
  346|       |
  347|  52.1k|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|  52.1k|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|  52.1k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (347:2): [True: 0, False: 52.1k]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 52.1k, False: 0]
  |  Branch (347:2): [True: 52.1k, False: 0]
  |  Branch (347:2): [True: 52.1k, False: 0]
  ------------------
  348|       |
  349|  52.1k|	if (UNEXPECTED(used_stack > (size_t)(((char*)EG(vm_stack_end)) - (char*)call))) {
  ------------------
  |  |  457|  52.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 52.1k]
  |  |  ------------------
  ------------------
  350|      0|		call = (zend_execute_data*)zend_vm_stack_extend(used_stack);
  351|      0|		ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      0|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  ------------------
  352|      0|		zend_vm_init_call_frame(call, call_info | ZEND_CALL_ALLOCATED, func, num_args, object_or_called_scope);
  ------------------
  |  |  664|      0|#define ZEND_CALL_ALLOCATED          (1 << 18)
  ------------------
  353|      0|		return call;
  354|  52.1k|	} else {
  355|  52.1k|		EG(vm_stack_top) = (zval*)((char*)call + used_stack);
  ------------------
  |  |   45|  52.1k|# define EG(v) (executor_globals.v)
  ------------------
  356|  52.1k|		zend_vm_init_call_frame(call, call_info, func, num_args, object_or_called_scope);
  357|  52.1k|		return call;
  358|  52.1k|	}
  359|  52.1k|}
zend_execute.c:zend_vm_init_call_frame:
  335|  52.1k|{
  336|  52.1k|	ZEND_ASSERT(!func->common.scope || object_or_called_scope);
  ------------------
  |  |  112|  52.1k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (336:2): [True: 52.1k, False: 0]
  |  Branch (336:2): [True: 0, False: 0]
  |  Branch (336:2): [True: 49.5k, False: 2.62k]
  |  Branch (336:2): [True: 2.62k, False: 0]
  ------------------
  337|  52.1k|	call->func = func;
  338|  52.1k|	Z_PTR(call->This) = object_or_called_scope;
  ------------------
  |  | 1052|  52.1k|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  339|  52.1k|	ZEND_CALL_INFO(call) = call_info;
  ------------------
  |  |  687|  52.1k|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|  52.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  340|  52.1k|	ZEND_CALL_NUM_ARGS(call) = num_args;
  ------------------
  |  |  712|  52.1k|	(call)->This.u2.num_args
  ------------------
  341|  52.1k|}
zend_execute.c:zend_vm_calc_used_stack:
  362|  35.4k|{
  363|  35.4k|	uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args + func->common.T;
  ------------------
  |  |  719|  35.4k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
  364|       |
  365|  35.4k|	if (EXPECTED(ZEND_USER_CODE(func->type))) {
  ------------------
  |  |  456|  35.4k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 32.7k, False: 2.62k]
  |  |  ------------------
  ------------------
  366|  32.7k|		used_stack += func->op_array.last_var - MIN(func->op_array.num_args, num_args);
  ------------------
  |  |  518|  32.7k|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 17, False: 32.7k]
  |  |  ------------------
  ------------------
  367|  32.7k|	}
  368|  35.4k|	return used_stack * sizeof(zval);
  369|  35.4k|}
zend_execute.c:zend_vm_stack_free_args:
  397|  19.9k|{
  398|  19.9k|	uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|  19.9k|	(call)->This.u2.num_args
  ------------------
  399|       |
  400|  19.9k|	if (EXPECTED(num_args > 0)) {
  ------------------
  |  |  456|  19.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18.5k, False: 1.38k]
  |  |  ------------------
  ------------------
  401|  18.5k|		zval *p = ZEND_CALL_ARG(call, 1);
  ------------------
  |  |  728|  18.5k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|  18.5k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  18.5k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  402|       |
  403|  21.3k|		do {
  404|  21.3k|			zval_ptr_dtor_nogc(p);
  405|  21.3k|			p++;
  406|  21.3k|		} while (--num_args);
  ------------------
  |  Branch (406:12): [True: 2.79k, False: 18.5k]
  ------------------
  407|  18.5k|	}
  408|  19.9k|}
zend_execute.c:zend_vm_stack_free_call_frame_ex:
  411|  51.3k|{
  412|  51.3k|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|  51.3k|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|  51.3k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (412:2): [True: 0, False: 51.3k]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 51.3k, False: 0]
  |  Branch (412:2): [True: 51.3k, False: 0]
  |  Branch (412:2): [True: 51.3k, False: 0]
  ------------------
  413|       |
  414|  51.3k|	if (UNEXPECTED(call_info & ZEND_CALL_ALLOCATED)) {
  ------------------
  |  |  457|  51.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 51.3k]
  |  |  ------------------
  ------------------
  415|      4|		zend_vm_stack p = EG(vm_stack);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  416|      4|		zend_vm_stack prev = p->prev;
  417|       |
  418|      4|		ZEND_ASSERT(call == (zend_execute_data*)ZEND_VM_STACK_ELEMENTS(EG(vm_stack)));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (418:3): [True: 0, False: 4]
  |  Branch (418:3): [True: 4, False: 0]
  ------------------
  419|      4|		EG(vm_stack_top) = prev->top;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  420|      4|		EG(vm_stack_end) = prev->end;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  421|      4|		EG(vm_stack) = prev;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  422|      4|		efree(p);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|  51.3k|	} else {
  424|  51.3k|		EG(vm_stack_top) = (zval*)call;
  ------------------
  |  |   45|  51.3k|# define EG(v) (executor_globals.v)
  ------------------
  425|  51.3k|	}
  426|       |
  427|  51.3k|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|  51.3k|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|  51.3k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (427:2): [True: 0, False: 51.3k]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 51.3k, False: 0]
  |  Branch (427:2): [True: 51.3k, False: 0]
  |  Branch (427:2): [True: 51.3k, False: 0]
  ------------------
  428|  51.3k|}
zend_execute.c:zend_vm_stack_extend_call_frame:
  440|     90|{
  441|     90|	if (EXPECTED((uint32_t)(EG(vm_stack_end) - EG(vm_stack_top)) > additional_args)) {
  ------------------
  |  |  456|     90|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 86, False: 4]
  |  |  ------------------
  ------------------
  442|     86|		EG(vm_stack_top) += additional_args;
  ------------------
  |  |   45|     86|# define EG(v) (executor_globals.v)
  ------------------
  443|     86|	} else {
  444|      4|		*call = zend_vm_stack_copy_call_frame(*call, passed_args, additional_args);
  445|      4|	}
  446|     90|}
zend_execute.c:zend_vm_stack_push_call_frame:
  372|  34.0k|{
  373|  34.0k|	uint32_t used_stack = zend_vm_calc_used_stack(num_args, func);
  374|       |
  375|  34.0k|	return zend_vm_stack_push_call_frame_ex(used_stack, call_info,
  376|  34.0k|		func, num_args, object_or_called_scope);
  377|  34.0k|}
zend_execute.c:zend_vm_stack_free_call_frame:
  431|  51.3k|{
  432|  51.3k|	zend_vm_stack_free_call_frame_ex(ZEND_CALL_INFO(call), call);
  ------------------
  |  |  687|  51.3k|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|  51.3k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  433|  51.3k|}
zend_execute.c:zend_assign_to_variable:
  165|  5.63k|{
  166|  5.63k|	do {
  167|  5.63k|		if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  457|  5.63k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 612, False: 5.01k]
  |  |  ------------------
  ------------------
  168|    612|			zend_refcounted *garbage;
  169|       |
  170|    612|			if (Z_ISREF_P(variable_ptr)) {
  ------------------
  |  |  964|    612|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    612|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    612|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    612|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 477, False: 135]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|    477|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(variable_ptr)))) {
  ------------------
  |  |  457|    477|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 468]
  |  |  ------------------
  ------------------
  172|      9|					return zend_assign_to_typed_ref(variable_ptr, value, value_type, strict);
  173|      9|				}
  174|       |
  175|    468|				variable_ptr = Z_REFVAL_P(variable_ptr);
  ------------------
  |  | 1033|    468|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    468|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    468|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|    468|				if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  456|    468|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 55, False: 413]
  |  |  ------------------
  ------------------
  177|     55|					break;
  178|     55|				}
  179|    468|			}
  180|    548|			garbage = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|    548|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    548|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  181|    548|			zend_copy_to_variable(variable_ptr, value, value_type);
  182|    548|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|    548|	do { \
  |  |  737|    548|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|    548|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 452, False: 96]
  |  |  ------------------
  |  |  739|    452|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|    452|		} else { \
  |  |  741|     96|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|     96|		} \
  |  |  743|    548|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 548]
  |  |  ------------------
  ------------------
  183|    548|			return variable_ptr;
  184|    612|		}
  185|  5.63k|	} while (0);
  ------------------
  |  Branch (185:11): [Folded, False: 5.01k]
  ------------------
  186|       |
  187|  5.07k|	zend_copy_to_variable(variable_ptr, value, value_type);
  188|  5.07k|	return variable_ptr;
  189|  5.63k|}
zend_execute.c:zend_copy_to_variable:
  138|  22.9k|{
  139|  22.9k|	zend_refcounted *ref = NULL;
  140|       |
  141|  22.9k|	if (ZEND_CONST_COND(value_type & (IS_VAR|IS_CV), 1) && Z_ISREF_P(value)) {
  ------------------
  |  |  420|  45.8k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 5.64k, False: 17.2k]
  |  |  |  Branch (420:3): [True: 17.2k, False: 5.62k]
  |  |  ------------------
  ------------------
              	if (ZEND_CONST_COND(value_type & (IS_VAR|IS_CV), 1) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|  5.64k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  5.64k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  5.64k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  5.64k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 144, False: 5.50k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|    144|		ref = Z_COUNTED_P(value);
  ------------------
  |  |  708|    144|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    144|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  143|    144|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|    144|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    144|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    144|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|    144|	}
  145|       |
  146|  22.9k|	ZVAL_COPY_VALUE(variable_ptr, value);
  ------------------
  |  | 1416|  22.9k|	do {												\
  |  | 1417|  22.9k|		zval *_z1 = (z);								\
  |  | 1418|  22.9k|		const zval *_z2 = (v);							\
  |  | 1419|  22.9k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  22.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  22.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  22.9k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  22.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  22.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  22.9k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  22.9k|	do {												\
  |  |  |  | 1408|  22.9k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  22.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  22.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  22.9k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  22.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  22.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  22.9k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 22.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  22.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 22.9k]
  |  |  ------------------
  ------------------
  147|  22.9k|	if (ZEND_CONST_COND(value_type  == IS_CONST, 0)) {
  ------------------
  |  |  420|  22.9k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 9.32k, False: 13.5k]
  |  |  |  Branch (420:3): [True: 17.2k, False: 5.62k]
  |  |  ------------------
  ------------------
  148|  9.32k|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  457|  9.32k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7.18k, False: 2.14k]
  |  |  ------------------
  ------------------
  149|  7.18k|			Z_ADDREF_P(variable_ptr);
  ------------------
  |  | 1277|  7.18k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  150|  7.18k|		}
  151|  13.5k|	} else if (value_type & (IS_CONST|IS_CV)) {
  ------------------
  |  |  864|  13.5k|#define IS_CONST	(1<<0)
  ------------------
              	} else if (value_type & (IS_CONST|IS_CV)) {
  ------------------
  |  |  867|  13.5k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (151:13): [True: 2.87k, False: 10.7k]
  ------------------
  152|  2.87k|		if (Z_OPT_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  955|  2.87k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|  2.87k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|  2.87k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|  2.87k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 960, False: 1.91k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|    960|			Z_ADDREF_P(variable_ptr);
  ------------------
  |  | 1277|    960|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  154|    960|		}
  155|  10.7k|	} else if (ZEND_CONST_COND(value_type == IS_VAR, 1) && UNEXPECTED(ref)) {
  ------------------
  |  |  420|  21.4k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 2.77k, False: 7.94k]
  |  |  |  Branch (420:3): [True: 7.94k, False: 2.77k]
  |  |  ------------------
  ------------------
              	} else if (ZEND_CONST_COND(value_type == IS_VAR, 1) && UNEXPECTED(ref)) {
  ------------------
  |  |  457|  2.77k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.77k]
  |  |  ------------------
  ------------------
  156|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  157|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|      0|		} else if (Z_OPT_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|      0|			Z_ADDREF_P(variable_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  160|      0|		}
  161|      0|	}
  162|  22.9k|}
zend_execute.c:zend_assign_to_variable_ex:
  192|  17.3k|{
  193|  17.3k|	do {
  194|  17.3k|		if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  457|  17.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11.9k, False: 5.38k]
  |  |  ------------------
  ------------------
  195|  11.9k|			if (Z_ISREF_P(variable_ptr)) {
  ------------------
  |  |  964|  11.9k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  11.9k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  11.9k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  11.9k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 35, False: 11.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|     35|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(variable_ptr)))) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 30]
  |  |  ------------------
  ------------------
  197|      5|					return zend_assign_to_typed_ref_ex(variable_ptr, value, value_type, strict, garbage_ptr);
  198|      5|				}
  199|       |
  200|     30|				variable_ptr = Z_REFVAL_P(variable_ptr);
  ------------------
  |  | 1033|     30|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     30|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     30|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|     30|				if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 22, False: 8]
  |  |  ------------------
  ------------------
  202|     22|					break;
  203|     22|				}
  204|     30|			}
  205|  11.8k|			*garbage_ptr = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|  11.8k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  11.8k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  206|  11.8k|		}
  207|  17.3k|	} while (0);
  ------------------
  |  Branch (207:11): [Folded, False: 17.2k]
  ------------------
  208|       |
  209|  17.2k|	zend_copy_to_variable(variable_ptr, value, value_type);
  210|  17.2k|	return variable_ptr;
  211|  17.3k|}
zend_execute.c:zend_cast_zval_to_array:
  249|      7|static zend_always_inline void zend_cast_zval_to_array(zval *result, zval *expr, uint8_t op1_type) {
  250|      7|	extern ZEND_API zend_class_entry *zend_ce_closure;
  251|      7|	if (op1_type == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              	if (op1_type == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (op1_type == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
  ------------------
  |  |  614|     14|#define IS_OBJECT					8
  ------------------
              	if (op1_type == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
  ------------------
  |  | 1012|      6|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      6|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (251:6): [True: 0, False: 7]
  |  Branch (251:30): [True: 1, False: 6]
  |  Branch (251:61): [True: 0, False: 6]
  ------------------
  252|      1|		if (Z_TYPE_P(expr) != IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(expr) != IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (252:7): [True: 0, False: 1]
  ------------------
  253|      0|			if (UNEXPECTED(Z_TYPE_P(expr) == IS_DOUBLE && zend_isnan(Z_DVAL_P(expr)))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  254|      0|				zend_nan_coerced_to_type_warning(IS_ARRAY);
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  255|      0|			}
  256|      0|			ZVAL_ARR(result, zend_new_array(1));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  257|      0|			expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|      0|			if (op1_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (258:8): [True: 0, False: 0]
  ------------------
  259|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  260|      0|			} else {
  261|      0|				if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  262|      0|			}
  263|      1|		} else {
  264|      1|			ZVAL_EMPTY_ARRAY(result);
  ------------------
  |  |   89|      1|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      1|		zval *__z = (z);								\
  |  |   91|      1|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  265|      1|		}
  266|      6|	} else if (ZEND_STD_BUILD_OBJECT_PROPERTIES_ARRAY_COMPATIBLE(expr)) {
  ------------------
  |  |  293|      6|#define ZEND_STD_BUILD_OBJECT_PROPERTIES_ARRAY_COMPATIBLE(object) (            \
  |  |  294|      6|		/* We can use zend_std_build_object_properties_array() for objects     \
  |  |  295|      6|		 * without properties ht and with standard handlers */                 \
  |  |  296|      6|		Z_OBJ_P(object)->properties == NULL                                    \
  |  |  ------------------
  |  |  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (296:3): [True: 1, False: 5]
  |  |  ------------------
  |  |  297|      6|		&& Z_OBJ_HT_P(object)->get_properties_for == NULL                      \
  |  |  ------------------
  |  |  |  | 1003|      6|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (297:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  298|      6|		&& Z_OBJ_HT_P(object)->get_properties == zend_std_get_properties       \
  |  |  ------------------
  |  |  |  | 1003|      6|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (298:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  299|      6|		/* For initialized proxies we need to forward to the real instance */  \
  |  |  300|      6|		&& (                                                                   \
  |  |  301|      1|			!zend_object_is_lazy_proxy(Z_OBJ_P(object))                        \
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (301:4): [True: 1, False: 0]
  |  |  ------------------
  |  |  302|      1|			|| !zend_lazy_object_initialized(Z_OBJ_P(object))                  \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (302:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  303|      1|		)                                                                      \
  |  |  304|      6|)
  ------------------
  267|       |		/* Optimized version without rebuilding properties HashTable */
  268|      1|		ZVAL_ARR(result, zend_std_build_object_properties_array(Z_OBJ_P(expr)));
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  269|      5|	} else {
  270|      5|		HashTable *obj_ht = zend_get_properties_for(expr, ZEND_PROP_PURPOSE_ARRAY_CAST);
  271|      5|		if (obj_ht) {
  ------------------
  |  Branch (271:7): [True: 5, False: 0]
  ------------------
  272|       |			/* fast copy */
  273|      5|			ZVAL_ARR(result, zend_proptable_to_symtable(obj_ht,
  ------------------
  |  | 1125|      5|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     18|		zend_array *__arr = (a);				\
  |  |  ------------------
  |  |  |  Branch (1126:24): [True: 1, False: 4]
  |  |  |  Branch (1126:24): [True: 0, False: 4]
  |  |  |  Branch (1126:24): [True: 0, False: 4]
  |  |  ------------------
  |  | 1127|      5|		zval *__z = (z);						\
  |  | 1128|      5|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      5|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      5|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      5|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  274|      5|				(Z_OBJCE_P(expr)->default_properties_count ||
  275|      5|				 Z_OBJ_P(expr)->handlers != &std_object_handlers ||
  276|      5|				 GC_IS_RECURSIVE(obj_ht))));
  277|      5|			zend_release_properties(obj_ht);
  ------------------
  |  |  338|      5|#define zend_release_properties(ht) do { \
  |  |  339|      5|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 5, False: 0]
  |  |  ------------------
  |  |  340|      5|		zend_array_release(ht); \
  |  |  341|      5|	} \
  |  |  342|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 5]
  |  |  ------------------
  ------------------
  278|      5|		} else {
  279|      0|			ZVAL_EMPTY_ARRAY(result);
  ------------------
  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      0|		zval *__z = (z);								\
  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  280|      0|		}
  281|      5|	}
  282|      7|}
zend_execute.c:zend_cast_zval_to_object:
  224|     25|static zend_always_inline void zend_cast_zval_to_object(zval *result, zval *expr, uint8_t op1_type) {
  225|     25|	HashTable *ht;
  226|       |
  227|     25|	ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
  ------------------
  |  | 1140|     25|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     25|		zval *__z = (z);						\
  |  | 1142|     25|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     25|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     25|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     25|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     25|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     25|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     25|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     25|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     25|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     25|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
  228|     25|	if (Z_TYPE_P(expr) == IS_ARRAY) {
  ------------------
  |  |  669|     25|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     25|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(expr) == IS_ARRAY) {
  ------------------
  |  |  613|     25|#define IS_ARRAY					7
  ------------------
  |  Branch (228:6): [True: 19, False: 6]
  ------------------
  229|     19|		ht = zend_symtable_to_proptable(Z_ARR_P(expr));
  ------------------
  |  |  994|     19|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|     19|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  230|     19|		if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
  ------------------
  |  |  777|     19|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     19|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
  ------------------
  |  |  844|     19|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     19|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (230:7): [True: 1, False: 18]
  ------------------
  231|       |			/* TODO: try not to duplicate immutable arrays as well ??? */
  232|      1|			ht = zend_array_dup(ht);
  233|      1|		}
  234|     19|		Z_OBJ_P(result)->properties = ht;
  ------------------
  |  | 1000|     19|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     19|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  235|     19|	} else if (Z_TYPE_P(expr) != IS_NULL) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(expr) != IS_NULL) {
  ------------------
  |  |  607|      6|#define IS_NULL						1
  ------------------
  |  Branch (235:13): [True: 4, False: 2]
  ------------------
  236|      4|		if (UNEXPECTED(Z_TYPE_P(expr) == IS_DOUBLE && zend_isnan(Z_DVAL_P(expr)))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  237|      0|			zend_nan_coerced_to_type_warning(IS_OBJECT);
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  238|      0|		}
  239|      4|		Z_OBJ_P(result)->properties = ht = zend_new_array(1);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_P(result)->properties = ht = zend_new_array(1);
  ------------------
  |  |  342|      4|	_zend_new_array(size)
  ------------------
  240|      4|		expr = zend_hash_add_new(ht, ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
  241|      4|		if (op1_type == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (241:7): [True: 4, False: 0]
  ------------------
  242|      4|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  243|      4|		} else {
  244|      0|			if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  245|      0|		}
  246|      4|	}
  247|     25|}
zend_execute.c:zend_vm_stack_free_extra_args_ex:
  380|    817|{
  381|    817|	if (UNEXPECTED(call_info & ZEND_CALL_FREE_EXTRA_ARGS)) {
  ------------------
  |  |  457|    817|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 702, False: 115]
  |  |  ------------------
  ------------------
  382|    702|		uint32_t count = ZEND_CALL_NUM_ARGS(call) - call->func->op_array.num_args;
  ------------------
  |  |  712|    702|	(call)->This.u2.num_args
  ------------------
  383|    702|		zval *p = ZEND_CALL_VAR_NUM(call, call->func->op_array.last_var + call->func->op_array.T);
  ------------------
  |  |  725|    702|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|    702|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  384|  22.7k|		do {
  385|  22.7k|			i_zval_ptr_dtor(p);
  386|  22.7k|			p++;
  387|  22.7k|		} while (--count);
  ------------------
  |  Branch (387:12): [True: 22.0k, False: 702]
  ------------------
  388|    702| 	}
  389|    817|}
zend_fibers.c:zend_vm_stack_new_page:
  325|    289|static zend_always_inline zend_vm_stack zend_vm_stack_new_page(size_t size, zend_vm_stack prev) {
  326|    289|	zend_vm_stack page = (zend_vm_stack)emalloc(size);
  ------------------
  |  |  150|    289|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    289|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    289|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    289|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    289|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|       |
  328|    289|	page->top = ZEND_VM_STACK_ELEMENTS(page);
  ------------------
  |  |  303|    289|	(((zval*)(stack)) + ZEND_VM_STACK_HEADER_SLOTS)
  |  |  ------------------
  |  |  |  |  300|    289|	((sizeof(struct _zend_vm_stack) + sizeof(zval) - 1) / sizeof(zval))
  |  |  ------------------
  ------------------
  329|    289|	page->end = (zval*)((char*)page + size);
  330|    289|	page->prev = prev;
  331|    289|	return page;
  332|    289|}
zend_generators.c:zend_vm_stack_push_call_frame:
  372|     11|{
  373|     11|	uint32_t used_stack = zend_vm_calc_used_stack(num_args, func);
  374|       |
  375|     11|	return zend_vm_stack_push_call_frame_ex(used_stack, call_info,
  376|     11|		func, num_args, object_or_called_scope);
  377|     11|}
zend_generators.c:zend_vm_calc_used_stack:
  362|     11|{
  363|     11|	uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args + func->common.T;
  ------------------
  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
  364|       |
  365|     11|	if (EXPECTED(ZEND_USER_CODE(func->type))) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 4]
  |  |  ------------------
  ------------------
  366|      7|		used_stack += func->op_array.last_var - MIN(func->op_array.num_args, num_args);
  ------------------
  |  |  518|      7|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 4, False: 3]
  |  |  ------------------
  ------------------
  367|      7|	}
  368|     11|	return used_stack * sizeof(zval);
  369|     11|}
zend_generators.c:zend_vm_stack_push_call_frame_ex:
  344|     11|{
  345|     11|	zend_execute_data *call = (zend_execute_data*)EG(vm_stack_top);
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
  346|       |
  347|     11|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|     11|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (347:2): [True: 0, False: 11]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 0, False: 0]
  |  Branch (347:2): [True: 11, False: 0]
  |  Branch (347:2): [True: 11, False: 0]
  |  Branch (347:2): [True: 11, False: 0]
  ------------------
  348|       |
  349|     11|	if (UNEXPECTED(used_stack > (size_t)(((char*)EG(vm_stack_end)) - (char*)call))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  350|      0|		call = (zend_execute_data*)zend_vm_stack_extend(used_stack);
  351|      0|		ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|      0|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  |  Branch (351:3): [True: 0, False: 0]
  ------------------
  352|      0|		zend_vm_init_call_frame(call, call_info | ZEND_CALL_ALLOCATED, func, num_args, object_or_called_scope);
  ------------------
  |  |  664|      0|#define ZEND_CALL_ALLOCATED          (1 << 18)
  ------------------
  353|      0|		return call;
  354|     11|	} else {
  355|     11|		EG(vm_stack_top) = (zval*)((char*)call + used_stack);
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
  356|     11|		zend_vm_init_call_frame(call, call_info, func, num_args, object_or_called_scope);
  357|     11|		return call;
  358|     11|	}
  359|     11|}
zend_generators.c:zend_vm_init_call_frame:
  335|     11|{
  336|     11|	ZEND_ASSERT(!func->common.scope || object_or_called_scope);
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (336:2): [True: 11, False: 0]
  |  Branch (336:2): [True: 0, False: 0]
  |  Branch (336:2): [True: 10, False: 1]
  |  Branch (336:2): [True: 1, False: 0]
  ------------------
  337|     11|	call->func = func;
  338|     11|	Z_PTR(call->This) = object_or_called_scope;
  ------------------
  |  | 1052|     11|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  339|     11|	ZEND_CALL_INFO(call) = call_info;
  ------------------
  |  |  687|     11|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  340|     11|	ZEND_CALL_NUM_ARGS(call) = num_args;
  ------------------
  |  |  712|     11|	(call)->This.u2.num_args
  ------------------
  341|     11|}
zend_generators.c:zend_vm_stack_free_call_frame:
  431|     11|{
  432|     11|	zend_vm_stack_free_call_frame_ex(ZEND_CALL_INFO(call), call);
  ------------------
  |  |  687|     11|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  433|     11|}
zend_generators.c:zend_vm_stack_free_call_frame_ex:
  411|     11|{
  412|     11|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|     11|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (412:2): [True: 0, False: 11]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 0, False: 0]
  |  Branch (412:2): [True: 11, False: 0]
  |  Branch (412:2): [True: 11, False: 0]
  |  Branch (412:2): [True: 11, False: 0]
  ------------------
  413|       |
  414|     11|	if (UNEXPECTED(call_info & ZEND_CALL_ALLOCATED)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  415|      0|		zend_vm_stack p = EG(vm_stack);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  416|      0|		zend_vm_stack prev = p->prev;
  417|       |
  418|      0|		ZEND_ASSERT(call == (zend_execute_data*)ZEND_VM_STACK_ELEMENTS(EG(vm_stack)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (418:3): [True: 0, False: 0]
  |  Branch (418:3): [True: 0, False: 0]
  ------------------
  419|      0|		EG(vm_stack_top) = prev->top;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  420|      0|		EG(vm_stack_end) = prev->end;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  421|      0|		EG(vm_stack) = prev;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  422|      0|		efree(p);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|     11|	} else {
  424|     11|		EG(vm_stack_top) = (zval*)call;
  ------------------
  |  |   45|     11|# define EG(v) (executor_globals.v)
  ------------------
  425|     11|	}
  426|       |
  427|     11|	ZEND_ASSERT_VM_STACK_GLOBAL;
  ------------------
  |  |  314|     11|# define ZEND_ASSERT_VM_STACK_GLOBAL ZEND_ASSERT(EG(vm_stack_top) > (zval *) EG(vm_stack) && EG(vm_stack_end) > (zval *) EG(vm_stack) && EG(vm_stack_top) <= EG(vm_stack_end))
  |  |  ------------------
  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (427:2): [True: 0, False: 11]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 0, False: 0]
  |  Branch (427:2): [True: 11, False: 0]
  |  Branch (427:2): [True: 11, False: 0]
  |  Branch (427:2): [True: 11, False: 0]
  ------------------
  428|     11|}
zend_generators.c:zend_vm_stack_free_extra_args:
  392|     98|{
  393|     98|	zend_vm_stack_free_extra_args_ex(ZEND_CALL_INFO(call), call);
  ------------------
  |  |  687|     98|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     98|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
  394|     98|}
zend_generators.c:zend_vm_stack_free_extra_args_ex:
  380|     98|{
  381|     98|	if (UNEXPECTED(call_info & ZEND_CALL_FREE_EXTRA_ARGS)) {
  ------------------
  |  |  457|     98|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 95]
  |  |  ------------------
  ------------------
  382|      3|		uint32_t count = ZEND_CALL_NUM_ARGS(call) - call->func->op_array.num_args;
  ------------------
  |  |  712|      3|	(call)->This.u2.num_args
  ------------------
  383|      3|		zval *p = ZEND_CALL_VAR_NUM(call, call->func->op_array.last_var + call->func->op_array.T);
  ------------------
  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  384|      4|		do {
  385|      4|			i_zval_ptr_dtor(p);
  386|      4|			p++;
  387|      4|		} while (--count);
  ------------------
  |  Branch (387:12): [True: 1, False: 3]
  ------------------
  388|      3| 	}
  389|     98|}
zend_object_handlers.c:zend_assign_to_variable_ex:
  192|  27.2k|{
  193|  27.2k|	do {
  194|  27.2k|		if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  457|  27.2k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 689, False: 26.5k]
  |  |  ------------------
  ------------------
  195|    689|			if (Z_ISREF_P(variable_ptr)) {
  ------------------
  |  |  964|    689|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    689|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    689|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    689|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 12, False: 677]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|     12|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(variable_ptr)))) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  197|      0|					return zend_assign_to_typed_ref_ex(variable_ptr, value, value_type, strict, garbage_ptr);
  198|      0|				}
  199|       |
  200|     12|				variable_ptr = Z_REFVAL_P(variable_ptr);
  ------------------
  |  | 1033|     12|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     12|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     12|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|     12|				if (EXPECTED(!Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 6]
  |  |  ------------------
  ------------------
  202|      6|					break;
  203|      6|				}
  204|     12|			}
  205|    683|			*garbage_ptr = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|    683|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    683|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  206|    683|		}
  207|  27.2k|	} while (0);
  ------------------
  |  Branch (207:11): [Folded, False: 27.2k]
  ------------------
  208|       |
  209|  27.2k|	zend_copy_to_variable(variable_ptr, value, value_type);
  210|  27.2k|	return variable_ptr;
  211|  27.2k|}
zend_object_handlers.c:zend_copy_to_variable:
  138|  27.2k|{
  139|  27.2k|	zend_refcounted *ref = NULL;
  140|       |
  141|  27.2k|	if (ZEND_CONST_COND(value_type & (IS_VAR|IS_CV), 1) && Z_ISREF_P(value)) {
  ------------------
  |  |  420|  54.4k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 27.2k]
  |  |  |  Branch (420:3): [True: 27.2k, False: 0]
  |  |  ------------------
  ------------------
              	if (ZEND_CONST_COND(value_type & (IS_VAR|IS_CV), 1) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|      0|		ref = Z_COUNTED_P(value);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  143|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      0|	}
  145|       |
  146|  27.2k|	ZVAL_COPY_VALUE(variable_ptr, value);
  ------------------
  |  | 1416|  27.2k|	do {												\
  |  | 1417|  27.2k|		zval *_z1 = (z);								\
  |  | 1418|  27.2k|		const zval *_z2 = (v);							\
  |  | 1419|  27.2k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  27.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  27.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  27.2k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  27.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  27.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  27.2k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  27.2k|	do {												\
  |  |  |  | 1408|  27.2k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  27.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  27.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  27.2k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  27.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  27.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  27.2k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 27.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  27.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 27.2k]
  |  |  ------------------
  ------------------
  147|  27.2k|	if (ZEND_CONST_COND(value_type  == IS_CONST, 0)) {
  ------------------
  |  |  420|  27.2k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 27.2k]
  |  |  |  Branch (420:3): [True: 27.2k, False: 0]
  |  |  ------------------
  ------------------
  148|      0|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  149|      0|			Z_ADDREF_P(variable_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  150|      0|		}
  151|  27.2k|	} else if (value_type & (IS_CONST|IS_CV)) {
  ------------------
  |  |  864|  27.2k|#define IS_CONST	(1<<0)
  ------------------
              	} else if (value_type & (IS_CONST|IS_CV)) {
  ------------------
  |  |  867|  27.2k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (151:13): [True: 0, False: 27.2k]
  ------------------
  152|      0|		if (Z_OPT_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|      0|			Z_ADDREF_P(variable_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  154|      0|		}
  155|  27.2k|	} else if (ZEND_CONST_COND(value_type == IS_VAR, 1) && UNEXPECTED(ref)) {
  ------------------
  |  |  420|  54.4k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 27.2k]
  |  |  |  Branch (420:3): [True: 27.2k, False: 0]
  |  |  ------------------
  ------------------
              	} else if (ZEND_CONST_COND(value_type == IS_VAR, 1) && UNEXPECTED(ref)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  156|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  157|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|      0|		} else if (Z_OPT_REFCOUNTED_P(variable_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|      0|			Z_ADDREF_P(variable_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  160|      0|		}
  161|      0|	}
  162|  27.2k|}

init_executor:
  128|  33.5k|{
  129|  33.5k|	zend_init_fpu();
  130|       |
  131|  33.5k|	ZVAL_NULL(&EG(uninitialized_zval));
  ------------------
  |  | 1059|  33.5k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  33.5k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  33.5k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  132|  33.5k|	ZVAL_ERROR(&EG(error_zval));
  ------------------
  |  | 1271|  33.5k|#define ZVAL_ERROR(z) do {				\
  |  | 1272|  33.5k|		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = _IS_ERROR;	\
  |  |  ------------------
  |  |  |  |  632|  33.5k|#define _IS_ERROR					15
  |  |  ------------------
  |  | 1273|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1273:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  133|       |/* destroys stack frame, therefore makes core dumps worthless */
  134|       |#if 0&&ZEND_DEBUG
  135|       |	original_sigsegv_handler = signal(SIGSEGV, zend_handle_sigsegv);
  136|       |#endif
  137|       |
  138|  33.5k|	ZVAL_UNDEF(&EG(last_fatal_error_backtrace));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  139|       |
  140|  33.5k|	EG(symtable_cache_ptr) = EG(symtable_cache);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(symtable_cache_ptr) = EG(symtable_cache);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  141|  33.5k|	EG(symtable_cache_limit) = EG(symtable_cache) + SYMTABLE_CACHE_SIZE;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(symtable_cache_limit) = EG(symtable_cache) + SYMTABLE_CACHE_SIZE;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(symtable_cache_limit) = EG(symtable_cache) + SYMTABLE_CACHE_SIZE;
  ------------------
  |  |   60|  33.5k|#define SYMTABLE_CACHE_SIZE 32
  ------------------
  142|  33.5k|	EG(no_extensions) = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  143|       |
  144|  33.5k|	EG(function_table) = CG(function_table);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(function_table) = CG(function_table);
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  145|  33.5k|	EG(class_table) = CG(class_table);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(class_table) = CG(class_table);
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  146|       |
  147|  33.5k|	EG(error_handling) = EH_NORMAL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  148|  33.5k|	EG(flags) = EG_FLAGS_INITIAL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(flags) = EG_FLAGS_INITIAL;
  ------------------
  |  |  332|  33.5k|#define EG_FLAGS_INITIAL				(0)
  ------------------
  149|       |
  150|  33.5k|	zend_vm_stack_init();
  151|       |
  152|  33.5k|	zend_hash_init(&EG(symbol_table), 64, NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  153|       |
  154|  33.5k|	zend_llist_apply(&zend_extensions, (llist_apply_func_t) zend_extension_activator);
  155|       |
  156|  33.5k|	zend_hash_init(&EG(included_files), 8, NULL, NULL, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  157|  33.5k|	zend_hash_init(&EG(autoload_current_classnames), 8, NULL, NULL, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  158|       |
  159|  33.5k|	EG(ticks_count) = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  160|       |
  161|  33.5k|	ZVAL_UNDEF(&EG(user_error_handler));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  162|  33.5k|	ZVAL_UNDEF(&EG(user_exception_handler));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  163|       |
  164|  33.5k|	EG(current_execute_data) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  165|       |
  166|  33.5k|	zend_stack_init(&EG(user_error_handlers_error_reporting), sizeof(int));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  167|  33.5k|	zend_stack_init(&EG(user_error_handlers), sizeof(zval));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  168|  33.5k|	zend_stack_init(&EG(user_exception_handlers), sizeof(zval));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  169|       |
  170|  33.5k|	zend_objects_store_init(&EG(objects_store), 1024);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  171|  33.5k|	zend_lazy_objects_init(&EG(lazy_objects_store));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  172|       |
  173|  33.5k|	EG(full_tables_cleanup) = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  174|  33.5k|	ZEND_ATOMIC_BOOL_INIT(&EG(vm_interrupt), false);
  ------------------
  |  |  147|  33.5k|#define ZEND_ATOMIC_BOOL_INIT(obj, desired) __c11_atomic_init(&(obj)->value, (desired))
  ------------------
  175|  33.5k|	ZEND_ATOMIC_BOOL_INIT(&EG(timed_out), false);
  ------------------
  |  |  147|  33.5k|#define ZEND_ATOMIC_BOOL_INIT(obj, desired) __c11_atomic_init(&(obj)->value, (desired))
  ------------------
  176|       |
  177|  33.5k|	EG(exception) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  178|       |
  179|  33.5k|	EG(fake_scope) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  180|  33.5k|	EG(trampoline).common.function_name = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  181|       |
  182|  33.5k|	EG(ht_iterators_count) = sizeof(EG(ht_iterators_slots)) / sizeof(HashTableIterator);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(ht_iterators_count) = sizeof(EG(ht_iterators_slots)) / sizeof(HashTableIterator);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  183|  33.5k|	EG(ht_iterators_used) = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  184|  33.5k|	EG(ht_iterators) = EG(ht_iterators_slots);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(ht_iterators) = EG(ht_iterators_slots);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  185|  33.5k|	memset(EG(ht_iterators), 0, sizeof(EG(ht_iterators_slots)));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	memset(EG(ht_iterators), 0, sizeof(EG(ht_iterators_slots)));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  186|       |
  187|  33.5k|	EG(persistent_constants_count) = EG(zend_constants)->nNumUsed;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(persistent_constants_count) = EG(zend_constants)->nNumUsed;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  188|  33.5k|	EG(persistent_functions_count) = EG(function_table)->nNumUsed;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(persistent_functions_count) = EG(function_table)->nNumUsed;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  189|  33.5k|	EG(persistent_classes_count)   = EG(class_table)->nNumUsed;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(persistent_classes_count)   = EG(class_table)->nNumUsed;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  190|       |
  191|  33.5k|	EG(get_gc_buffer).start = EG(get_gc_buffer).end = EG(get_gc_buffer).cur = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(get_gc_buffer).start = EG(get_gc_buffer).end = EG(get_gc_buffer).cur = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(get_gc_buffer).start = EG(get_gc_buffer).end = EG(get_gc_buffer).cur = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  192|       |
  193|  33.5k|	EG(record_errors) = false;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  194|  33.5k|	memset(&EG(errors), 0, sizeof(EG(errors)));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	memset(&EG(errors), 0, sizeof(EG(errors)));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  195|       |
  196|  33.5k|	EG(filename_override) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  197|  33.5k|	EG(lineno_override) = -1;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  198|       |
  199|  33.5k|	zend_max_execution_timer_init();
  200|  33.5k|	zend_fiber_init();
  201|  33.5k|	zend_weakrefs_init();
  202|       |
  203|  33.5k|	zend_hash_init(&EG(callable_convert_cache), 8, NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  204|       |
  205|  33.5k|	EG(active) = 1;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  206|  33.5k|}
shutdown_destructors:
  251|  33.5k|{
  252|  33.5k|	if (CG(unclean_shutdown)) {
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 903, False: 32.6k]
  |  |  ------------------
  ------------------
  253|    903|		EG(symbol_table).pDestructor = zend_unclean_zval_ptr_dtor;
  ------------------
  |  |   45|    903|# define EG(v) (executor_globals.v)
  ------------------
  254|    903|	}
  255|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  256|  33.5k|		uint32_t symbols;
  257|  34.1k|		do {
  258|  34.1k|			symbols = zend_hash_num_elements(&EG(symbol_table));
  ------------------
  |  |   45|  34.1k|# define EG(v) (executor_globals.v)
  ------------------
  259|  34.1k|			zend_hash_reverse_apply(&EG(symbol_table), (apply_func_t) zval_call_destructor);
  ------------------
  |  |   45|  34.1k|# define EG(v) (executor_globals.v)
  ------------------
  260|  34.1k|		} while (symbols != zend_hash_num_elements(&EG(symbol_table)));
  ------------------
  |  |   45|  34.1k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (260:12): [True: 582, False: 33.5k]
  ------------------
  261|  33.5k|		zend_objects_store_call_destructors(&EG(objects_store));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  262|  33.5k|	} zend_catch {
  ------------------
  |  |  283|  33.5k|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|  33.5k|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      7|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      7|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (262:4): [True: 0, False: 33.5k]
  |  Branch (262:4): [True: 33.5k, False: 7]
  |  Branch (262:4): [True: 0, False: 0]
  |  Branch (262:4): [True: 7, False: 18.4E]
  ------------------
  263|       |		/* if we couldn't destruct cleanly, mark all objects as destructed anyway */
  264|      7|		zend_objects_store_mark_destructed(&EG(objects_store));
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  265|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|      7|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  266|  33.5k|}
zend_shutdown_executor_values:
  271|  33.5k|{
  272|  33.5k|	EG(flags) |= EG_FLAGS_IN_RESOURCE_SHUTDOWN;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(flags) |= EG_FLAGS_IN_RESOURCE_SHUTDOWN;
  ------------------
  |  |  335|  33.5k|#define EG_FLAGS_IN_RESOURCE_SHUTDOWN	(1<<2)
  ------------------
  273|  33.5k|	zend_close_rsrc_list(&EG(regular_list));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  274|       |
  275|       |	/* No PHP callback functions should be called after this point. */
  276|  33.5k|	EG(active) = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  277|       |
  278|  33.5k|	if (!fast_shutdown) {
  ------------------
  |  Branch (278:6): [True: 33.5k, False: 0]
  ------------------
  279|  33.5k|		zval *zv;
  280|       |
  281|  33.5k|		zend_hash_graceful_reverse_destroy(&EG(symbol_table));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  282|       |
  283|       |		/* Constants may contain objects, destroy them before the object store. */
  284|  33.5k|		if (EG(full_tables_cleanup)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  285|      0|			zend_hash_reverse_apply(EG(zend_constants), clean_non_persistent_constant_full);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  286|  33.5k|		} else {
  287|  33.5k|			zend_string *key;
  288|   134k|			ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL(EG(zend_constants), key, zv) {
  ------------------
  |  | 1399|  33.7k|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|  33.5k|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|  33.5k|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|  33.5k|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|  33.5k|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|  33.5k|		zval *_z; \
  |  |  |  | 1281|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|  33.7k|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 33.7k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|  33.7k|			_p--; \
  |  |  |  | 1284|  33.7k|			_z = &_p->val; \
  |  |  |  | 1285|  33.7k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|  33.7k|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 33.7k]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|  33.7k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  33.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 33.7k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1400|  33.7k|	_key = _p->key; \
  |  | 1401|  33.7k|	_val = _z;
  ------------------
  |  Branch (288:4): [True: 0, False: 33.5k]
  |  Branch (288:4): [True: 33.5k, False: 0]
  ------------------
  289|   134k|				zend_constant *c = Z_PTR_P(zv);
  ------------------
  |  | 1053|  33.7k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  33.7k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  290|   134k|				if (_idx == EG(persistent_constants_count)) {
  ------------------
  |  |   45|  33.7k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (290:9): [True: 33.5k, False: 127]
  ------------------
  291|  33.5k|					break;
  292|  33.5k|				}
  293|    127|				zval_ptr_dtor_nogc(&c->value);
  294|    127|				if (c->name) {
  ------------------
  |  Branch (294:9): [True: 127, False: 0]
  ------------------
  295|    127|					zend_string_release_ex(c->name, 0);
  296|    127|				}
  297|    127|				if (c->filename) {
  ------------------
  |  Branch (297:9): [True: 121, False: 6]
  ------------------
  298|    121|					zend_string_release_ex(c->filename, 0);
  299|    121|				}
  300|    127|				if (c->attributes) {
  ------------------
  |  Branch (300:9): [True: 12, False: 115]
  ------------------
  301|     12|					zend_hash_release(c->attributes);
  302|     12|				}
  303|    127|				efree(c);
  ------------------
  |  |  154|    127|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    127|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    127|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    127|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    127|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|    127|				zend_string_release_ex(key, 0);
  305|    127|			} ZEND_HASH_MAP_FOREACH_END_DEL();
  ------------------
  |  | 1291|    127|			ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  ------------------
  |  |  |  |  112|    127|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1292|    127|			__ht->nNumOfElements--; \
  |  | 1293|    127|			do { \
  |  | 1294|    127|				uint32_t j = HT_IDX_TO_HASH(_idx - 1); \
  |  |  ------------------
  |  |  |  |  460|    127|	(idx)
  |  |  ------------------
  |  | 1295|    127|				uint32_t nIndex = _p->h | __ht->nTableMask; \
  |  | 1296|    127|				uint32_t i = HT_HASH(__ht, nIndex); \
  |  |  ------------------
  |  |  |  |  470|    127|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    127|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1297|    127|				if (UNEXPECTED(j != i)) { \
  |  |  ------------------
  |  |  |  |  457|    127|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 127]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1298|      0|					Bucket *prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1299|      0|					while (Z_NEXT(prev->val) != j) { \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |  |  Branch (1299:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1300|      0|						i = Z_NEXT(prev->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1301|      0|						prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1302|      0|					} \
  |  | 1303|      0|					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |               					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1304|    127|				} else { \
  |  | 1305|    127|					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  470|    127|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    127|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|    127|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1306|    127|				} \
  |  | 1307|    127|			} while (0); \
  |  |  ------------------
  |  |  |  Branch (1307:13): [Folded, False: 127]
  |  |  ------------------
  |  | 1308|    127|		} \
  |  | 1309|  33.5k|		__ht->nNumUsed = _idx; \
  |  | 1310|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1310:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  |  Branch (305:6): [True: 0, False: 127]
  |  Branch (305:6): [True: 127, False: 0]
  ------------------
  306|  33.5k|		}
  307|       |
  308|  33.5k|		zval_ptr_dtor(&EG(last_fatal_error_backtrace));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  309|  33.5k|		ZVAL_UNDEF(&EG(last_fatal_error_backtrace));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  310|       |
  311|       |		/* Release static properties and static variables prior to the final GC run,
  312|       |		 * as they may hold GC roots. */
  313|   135k|		ZEND_HASH_MAP_REVERSE_FOREACH_VAL(EG(function_table), zv) {
  ------------------
  |  | 1329|  34.0k|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|  33.5k|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|  33.5k|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|  33.5k|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|  33.5k|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|  33.5k|		zval *_z; \
  |  |  |  | 1281|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|  34.0k|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 34.0k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|  34.0k|			_p--; \
  |  |  |  | 1284|  34.0k|			_z = &_p->val; \
  |  |  |  | 1285|  34.0k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|  34.0k|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 34.0k]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|  34.0k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  34.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 34.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1330|  34.0k|	_val = _z;
  ------------------
  |  Branch (313:3): [True: 0, False: 33.5k]
  |  Branch (313:3): [True: 33.5k, False: 0]
  ------------------
  314|   135k|			zend_op_array *op_array = Z_PTR_P(zv);
  ------------------
  |  | 1053|  34.0k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  34.0k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  315|   135k|			if (op_array->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (315:8): [True: 33.5k, False: 466]
  ------------------
  316|  33.5k|				break;
  317|  33.5k|			}
  318|    466|			if (ZEND_MAP_PTR(op_array->static_variables_ptr)) {
  ------------------
  |  |   31|    466|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 16, False: 450]
  |  |  ------------------
  ------------------
  319|     16|				HashTable *ht = ZEND_MAP_PTR_GET(op_array->static_variables_ptr);
  ------------------
  |  |   54|     16|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|     16|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     16|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     16|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|     16|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|     16|	ptr ## __ptr
  |  |  ------------------
  ------------------
  320|     16|				if (ht) {
  ------------------
  |  Branch (320:9): [True: 16, False: 0]
  ------------------
  321|     16|					zend_array_destroy(ht);
  322|     16|					ZEND_MAP_PTR_SET(op_array->static_variables_ptr, NULL);
  ------------------
  |  |   59|     16|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|     16|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|     16|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     16|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     16|		} else { \
  |  |   63|     16|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|     16|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|     16|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     16|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|     16|		} \
  |  |   65|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  323|     16|				}
  324|     16|			}
  325|    466|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    466|		} \
  |  | 1102|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  326|  11.7M|		ZEND_HASH_MAP_REVERSE_FOREACH_VAL(EG(class_table), zv) {
  ------------------
  |  | 1329|  5.84M|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|  33.5k|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|  33.5k|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|  33.5k|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|  33.5k|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|  33.5k|		zval *_z; \
  |  |  |  | 1281|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|  5.88M|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 5.84M, False: 33.5k]
  |  |  |  |  ------------------
  |  |  |  | 1283|  5.84M|			_p--; \
  |  |  |  | 1284|  5.84M|			_z = &_p->val; \
  |  |  |  | 1285|  5.84M|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|  5.84M|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 5.84M]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|  5.84M|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  5.84M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5.84M]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1330|  5.84M|	_val = _z;
  ------------------
  |  Branch (326:3): [True: 0, False: 33.5k]
  |  Branch (326:3): [True: 33.5k, False: 0]
  ------------------
  327|  11.7M|			zend_class_entry *ce = Z_PTR_P(zv);
  ------------------
  |  | 1053|  5.84M|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  5.84M|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  328|       |
  329|  11.7M|			if (ce->default_static_members_count) {
  ------------------
  |  Branch (329:8): [True: 74, False: 5.84M]
  ------------------
  330|     74|				zend_cleanup_internal_class_data(ce);
  331|     74|			}
  332|       |
  333|  11.7M|			if (ZEND_MAP_PTR(ce->mutable_data)) {
  ------------------
  |  |   31|  5.84M|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 403k, False: 5.44M]
  |  |  ------------------
  ------------------
  334|   403k|				if (ZEND_MAP_PTR_GET_IMM(ce->mutable_data)) {
  ------------------
  |  |   58|   403k|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|   403k|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|   403k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (58:2): [True: 1, False: 403k]
  |  |  ------------------
  ------------------
  335|      1|					zend_cleanup_mutable_class_data(ce);
  336|      1|				}
  337|  5.44M|			} else if (ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_IMMUTABLE)) {
  ------------------
  |  |  241|  1.57k|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (337:15): [True: 1.57k, False: 5.44M]
  |  Branch (337:46): [True: 1.57k, False: 0]
  ------------------
  338|       |				/* Constants may contain objects, destroy the values before the object store. */
  339|  1.57k|				zend_class_constant *c;
  340|  3.94k|				ZEND_HASH_MAP_FOREACH_PTR(&ce->constants_table, c) {
  ------------------
  |  | 1341|    396|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  1.57k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  1.57k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  1.57k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  1.57k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  1.57k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  1.57k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.57k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.97k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 396, False: 1.57k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    396|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    396|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    396|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 396]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    396|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    396|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 396]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  1.57k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|  1.57k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  1.57k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (340:5): [True: 0, False: 1.57k]
  |  Branch (340:5): [True: 1.57k, False: 0]
  ------------------
  341|  3.94k|					if (c->ce == ce) {
  ------------------
  |  Branch (341:10): [True: 258, False: 138]
  ------------------
  342|    258|						zval_ptr_dtor_nogc(&c->value);
  343|    258|						ZVAL_UNDEF(&c->value);
  ------------------
  |  | 1055|    258|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    258|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    258|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    258|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    258|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    258|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 258]
  |  |  ------------------
  ------------------
  344|    258|					}
  345|  3.94k|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    396|		} \
  |  | 1102|  1.57k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1.57k]
  |  |  ------------------
  ------------------
  346|       |
  347|       |				/* properties may contain objects as well */
  348|  1.57k|				if (ce->default_properties_table) {
  ------------------
  |  Branch (348:9): [True: 459, False: 1.11k]
  ------------------
  349|    459|					zval *p = ce->default_properties_table;
  350|    459|					zval *end = p + ce->default_properties_count;
  351|       |
  352|  1.11k|					while (p != end) {
  ------------------
  |  Branch (352:13): [True: 657, False: 459]
  ------------------
  353|    657|						i_zval_ptr_dtor(p);
  354|    657|						ZVAL_UNDEF(p);
  ------------------
  |  | 1055|    657|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    657|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    657|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    657|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    657|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    657|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 657]
  |  |  ------------------
  ------------------
  355|    657|						p++;
  356|    657|					}
  357|    459|				}
  358|  1.57k|			}
  359|       |
  360|  11.7M|			if (ce->type == ZEND_USER_CLASS && ce->backed_enum_table) {
  ------------------
  |  Branch (360:8): [True: 1.57k, False: 5.84M]
  |  Branch (360:39): [True: 16, False: 1.56k]
  ------------------
  361|     16|				ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_IMMUTABLE));
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (361:5): [True: 0, False: 16]
  |  Branch (361:5): [True: 16, False: 0]
  ------------------
  362|     16|				zend_hash_release(ce->backed_enum_table);
  363|     16|				ce->backed_enum_table = NULL;
  364|     16|			}
  365|       |
  366|  5.84M|			if (ce->ce_flags & ZEND_HAS_STATIC_IN_METHODS) {
  ------------------
  |  |  304|  5.84M|#define ZEND_HAS_STATIC_IN_METHODS       (1 << 14) /*  X  |     |     |     */
  ------------------
  |  Branch (366:8): [True: 14, False: 5.84M]
  ------------------
  367|     14|				zend_op_array *op_array;
  368|     56|				ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, op_array) {
  ------------------
  |  | 1341|     14|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     14|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     14|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     14|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     14|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     14|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     14|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     28|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 14, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     14|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     14|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     14|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 14]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     14|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     14|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     14|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     14|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (368:5): [True: 0, False: 14]
  |  Branch (368:5): [True: 14, False: 0]
  ------------------
  369|     56|					if (op_array->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (369:10): [True: 14, False: 0]
  ------------------
  370|     14|						if (ZEND_MAP_PTR(op_array->static_variables_ptr)) {
  ------------------
  |  |   31|     14|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 5, False: 9]
  |  |  ------------------
  ------------------
  371|      5|							HashTable *ht = ZEND_MAP_PTR_GET(op_array->static_variables_ptr);
  ------------------
  |  |   54|      5|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      5|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      5|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      5|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      5|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      5|	ptr ## __ptr
  |  |  ------------------
  ------------------
  372|      5|							if (ht) {
  ------------------
  |  Branch (372:12): [True: 5, False: 0]
  ------------------
  373|      5|								zend_array_destroy(ht);
  374|      5|								ZEND_MAP_PTR_SET(op_array->static_variables_ptr, NULL);
  ------------------
  |  |   59|      5|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|      5|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|      5|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      5|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      5|		} else { \
  |  |   63|      5|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      5|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      5|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      5|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      5|		} \
  |  |   65|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  375|      5|							}
  376|      5|						}
  377|     14|					}
  378|     56|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     14|		} \
  |  | 1102|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  379|       |
  380|     14|				if (ce->num_hooked_props) {
  ------------------
  |  Branch (380:9): [True: 0, False: 14]
  ------------------
  381|      0|					zend_property_info *prop_info;
  382|      0|					ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop_info) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (382:6): [True: 0, False: 0]
  |  Branch (382:6): [True: 0, False: 0]
  ------------------
  383|      0|						if (prop_info->ce == ce) {
  ------------------
  |  Branch (383:11): [True: 0, False: 0]
  ------------------
  384|      0|							if (prop_info->hooks) {
  ------------------
  |  Branch (384:12): [True: 0, False: 0]
  ------------------
  385|      0|								for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|      0|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (385:30): [True: 0, False: 0]
  ------------------
  386|      0|									if (prop_info->hooks[i]) {
  ------------------
  |  Branch (386:14): [True: 0, False: 0]
  ------------------
  387|      0|										ZEND_ASSERT(ZEND_USER_CODE(prop_info->hooks[i]->type));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (387:11): [True: 0, False: 0]
  |  Branch (387:11): [True: 0, False: 0]
  ------------------
  388|      0|										op_array = &prop_info->hooks[i]->op_array;
  389|      0|										if (ZEND_MAP_PTR(op_array->static_variables_ptr)) {
  ------------------
  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  390|      0|											HashTable *ht = ZEND_MAP_PTR_GET(op_array->static_variables_ptr);
  ------------------
  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  ------------------
  391|      0|											if (ht) {
  ------------------
  |  Branch (391:16): [True: 0, False: 0]
  ------------------
  392|      0|												zend_array_destroy(ht);
  393|      0|												ZEND_MAP_PTR_SET(op_array->static_variables_ptr, NULL);
  ------------------
  |  |   59|      0|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|      0|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|		} else { \
  |  |   63|      0|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|		} \
  |  |   65|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  394|      0|											}
  395|      0|										}
  396|      0|									}
  397|      0|								}
  398|      0|							}
  399|      0|						}
  400|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  401|      0|				}
  402|     14|			}
  403|  5.84M|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  5.84M|		} \
  |  | 1102|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  404|       |
  405|       |		/* Also release error and exception handlers, which may hold objects. */
  406|  33.5k|		if (Z_TYPE(EG(user_error_handler)) != IS_UNDEF) {
  ------------------
  |  |  668|  33.5k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EG(user_error_handler)) != IS_UNDEF) {
  ------------------
  |  |  606|  33.5k|#define IS_UNDEF					0
  ------------------
  |  Branch (406:7): [True: 0, False: 33.5k]
  ------------------
  407|      0|			zval_ptr_dtor(&EG(user_error_handler));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  408|      0|			ZVAL_UNDEF(&EG(user_error_handler));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  409|      0|		}
  410|       |
  411|  33.5k|		if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF) {
  ------------------
  |  |  668|  33.5k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EG(user_exception_handler)) != IS_UNDEF) {
  ------------------
  |  |  606|  33.5k|#define IS_UNDEF					0
  ------------------
  |  Branch (411:7): [True: 4, False: 33.5k]
  ------------------
  412|      4|			zval_ptr_dtor(&EG(user_exception_handler));
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  413|      4|			ZVAL_UNDEF(&EG(user_exception_handler));
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  414|      4|		}
  415|       |
  416|  33.5k|		zend_stack_clean(&EG(user_error_handlers_error_reporting), NULL, 1);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  417|  33.5k|		zend_stack_clean(&EG(user_error_handlers), (void (*)(void *))ZVAL_PTR_DTOR, 1);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              		zend_stack_clean(&EG(user_error_handlers), (void (*)(void *))ZVAL_PTR_DTOR, 1);
  ------------------
  |  |   87|  33.5k|#define ZVAL_PTR_DTOR zval_ptr_dtor
  ------------------
  418|  33.5k|		zend_stack_clean(&EG(user_exception_handlers), (void (*)(void *))ZVAL_PTR_DTOR, 1);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              		zend_stack_clean(&EG(user_exception_handlers), (void (*)(void *))ZVAL_PTR_DTOR, 1);
  ------------------
  |  |   87|  33.5k|#define ZVAL_PTR_DTOR zval_ptr_dtor
  ------------------
  419|       |
  420|  33.5k|		zend_hash_clean(&EG(callable_convert_cache));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  421|       |
  422|  33.5k|#if ZEND_DEBUG
  423|  33.5k|		if (!CG(unclean_shutdown)) {
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (423:7): [True: 32.6k, False: 909]
  ------------------
  424|  32.6k|			gc_collect_cycles();
  425|  32.6k|		}
  426|  33.5k|#endif
  427|  33.5k|	} else {
  428|      0|		zend_hash_discard(EG(zend_constants), EG(persistent_constants_count));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		zend_hash_discard(EG(zend_constants), EG(persistent_constants_count));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  429|      0|	}
  430|       |
  431|  33.5k|	zend_objects_store_free_object_storage(&EG(objects_store), fast_shutdown);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  432|  33.5k|}
shutdown_executor:
  435|  33.5k|{
  436|  33.5k|#if ZEND_DEBUG
  437|  33.5k|	bool fast_shutdown = 0;
  438|       |#elif defined(__SANITIZE_ADDRESS__)
  439|       |	char *force_fast_shutdown = getenv("ZEND_ASAN_FORCE_FAST_SHUTDOWN");
  440|       |	bool fast_shutdown = (
  441|       |		is_zend_mm()
  442|       |		|| (force_fast_shutdown && ZEND_ATOL(force_fast_shutdown))
  443|       |	) && !EG(full_tables_cleanup);
  444|       |#else
  445|       |	bool fast_shutdown = is_zend_mm() && !EG(full_tables_cleanup);
  446|       |#endif
  447|       |
  448|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  449|  33.5k|		zend_stream_shutdown();
  450|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  451|       |
  452|  33.5k|	zend_shutdown_executor_values(fast_shutdown);
  453|       |
  454|  33.5k|	zend_weakrefs_shutdown();
  455|  33.5k|	zend_max_execution_timer_shutdown();
  456|  33.5k|	zend_fiber_shutdown();
  457|       |
  458|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  459|  33.5k|		zend_llist_apply(&zend_extensions, (llist_apply_func_t) zend_extension_deactivator);
  460|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  461|       |
  462|  33.5k|	if (fast_shutdown) {
  ------------------
  |  Branch (462:6): [True: 0, False: 33.5k]
  ------------------
  463|       |		/* Fast Request Shutdown
  464|       |		 * =====================
  465|       |		 * Zend Memory Manager frees memory by its own. We don't have to free
  466|       |		 * each allocated block separately.
  467|       |		 */
  468|      0|		zend_hash_discard(EG(function_table), EG(persistent_functions_count));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		zend_hash_discard(EG(function_table), EG(persistent_functions_count));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  469|      0|		zend_hash_discard(EG(class_table), EG(persistent_classes_count));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		zend_hash_discard(EG(class_table), EG(persistent_classes_count));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  470|  33.5k|	} else {
  471|  33.5k|		zend_vm_stack_destroy();
  472|       |
  473|  33.5k|		if (EG(full_tables_cleanup)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  474|      0|			zend_hash_reverse_apply(EG(function_table), clean_non_persistent_function_full);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  475|      0|			zend_hash_reverse_apply(EG(class_table), clean_non_persistent_class_full);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  476|  33.5k|		} else {
  477|  33.5k|			zend_string *key;
  478|  33.5k|			zval *zv;
  479|   135k|			ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL(EG(function_table), key, zv) {
  ------------------
  |  | 1399|  34.0k|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|  33.5k|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|  33.5k|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|  33.5k|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|  33.5k|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|  33.5k|		zval *_z; \
  |  |  |  | 1281|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|  34.0k|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 34.0k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|  34.0k|			_p--; \
  |  |  |  | 1284|  34.0k|			_z = &_p->val; \
  |  |  |  | 1285|  34.0k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|  34.0k|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 34.0k]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|  34.0k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  34.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 34.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1400|  34.0k|	_key = _p->key; \
  |  | 1401|  34.0k|	_val = _z;
  ------------------
  |  Branch (479:4): [True: 0, False: 33.5k]
  |  Branch (479:4): [True: 33.5k, False: 0]
  ------------------
  480|   135k|				zend_function *func = Z_PTR_P(zv);
  ------------------
  |  | 1053|  34.0k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  34.0k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  481|   135k|				if (_idx == EG(persistent_functions_count)) {
  ------------------
  |  |   45|  34.0k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (481:9): [True: 33.5k, False: 466]
  ------------------
  482|  33.5k|					break;
  483|  33.5k|				}
  484|    466|				destroy_op_array(&func->op_array);
  485|    466|				zend_string_release_ex(key, 0);
  486|    466|			} ZEND_HASH_MAP_FOREACH_END_DEL();
  ------------------
  |  | 1291|    466|			ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  ------------------
  |  |  |  |  112|    466|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1292|    466|			__ht->nNumOfElements--; \
  |  | 1293|    466|			do { \
  |  | 1294|    466|				uint32_t j = HT_IDX_TO_HASH(_idx - 1); \
  |  |  ------------------
  |  |  |  |  460|    466|	(idx)
  |  |  ------------------
  |  | 1295|    466|				uint32_t nIndex = _p->h | __ht->nTableMask; \
  |  | 1296|    466|				uint32_t i = HT_HASH(__ht, nIndex); \
  |  |  ------------------
  |  |  |  |  470|    466|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    466|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1297|    466|				if (UNEXPECTED(j != i)) { \
  |  |  ------------------
  |  |  |  |  457|    466|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 466]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1298|      0|					Bucket *prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1299|      0|					while (Z_NEXT(prev->val) != j) { \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |  |  Branch (1299:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1300|      0|						i = Z_NEXT(prev->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1301|      0|						prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1302|      0|					} \
  |  | 1303|      0|					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |               					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1304|    466|				} else { \
  |  | 1305|    466|					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  470|    466|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    466|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|    466|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1306|    466|				} \
  |  | 1307|    466|			} while (0); \
  |  |  ------------------
  |  |  |  Branch (1307:13): [Folded, False: 466]
  |  |  ------------------
  |  | 1308|    466|		} \
  |  | 1309|  33.5k|		__ht->nNumUsed = _idx; \
  |  | 1310|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1310:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  |  Branch (486:6): [True: 0, False: 466]
  |  Branch (486:6): [True: 466, False: 0]
  ------------------
  487|       |
  488|   137k|			ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL(EG(class_table), key, zv) {
  ------------------
  |  | 1399|  35.1k|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|  33.5k|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|  33.5k|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|  33.5k|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|  33.5k|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|  33.5k|		zval *_z; \
  |  |  |  | 1281|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|  35.1k|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 35.1k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|  35.1k|			_p--; \
  |  |  |  | 1284|  35.1k|			_z = &_p->val; \
  |  |  |  | 1285|  35.1k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|  35.1k|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 35.1k]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|  35.1k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  35.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 35.1k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1400|  35.1k|	_key = _p->key; \
  |  | 1401|  35.1k|	_val = _z;
  ------------------
  |  Branch (488:4): [True: 0, False: 33.5k]
  |  Branch (488:4): [True: 33.5k, False: 0]
  ------------------
  489|   137k|				if (_idx == EG(persistent_classes_count)) {
  ------------------
  |  |   45|  35.1k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (489:9): [True: 33.5k, False: 1.58k]
  ------------------
  490|  33.5k|					break;
  491|  33.5k|				}
  492|  1.58k|				destroy_zend_class(zv);
  493|  1.58k|				zend_string_release_ex(key, 0);
  494|  1.58k|			} ZEND_HASH_MAP_FOREACH_END_DEL();
  ------------------
  |  | 1291|  1.58k|			ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  ------------------
  |  |  |  |  112|  1.58k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1292|  1.58k|			__ht->nNumOfElements--; \
  |  | 1293|  1.58k|			do { \
  |  | 1294|  1.58k|				uint32_t j = HT_IDX_TO_HASH(_idx - 1); \
  |  |  ------------------
  |  |  |  |  460|  1.58k|	(idx)
  |  |  ------------------
  |  | 1295|  1.58k|				uint32_t nIndex = _p->h | __ht->nTableMask; \
  |  | 1296|  1.58k|				uint32_t i = HT_HASH(__ht, nIndex); \
  |  |  ------------------
  |  |  |  |  470|  1.58k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|  1.58k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1297|  1.58k|				if (UNEXPECTED(j != i)) { \
  |  |  ------------------
  |  |  |  |  457|  1.58k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.58k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1298|      0|					Bucket *prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1299|      0|					while (Z_NEXT(prev->val) != j) { \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |  |  Branch (1299:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1300|      0|						i = Z_NEXT(prev->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1301|      0|						prev = HT_HASH_TO_BUCKET(__ht, i); \
  |  |  ------------------
  |  |  |  |  546|      0|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  458|      0|	((data) + (idx))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1302|      0|					} \
  |  | 1303|      0|					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  |               					Z_NEXT(prev->val) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1304|  1.58k|				} else { \
  |  | 1305|  1.58k|					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  470|  1.58k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|  1.58k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               					HT_HASH(__ht, nIndex) = Z_NEXT(_p->val); \
  |  |  ------------------
  |  |  |  |  680|  1.58k|#define Z_NEXT(zval)				(zval).u2.next
  |  |  ------------------
  |  | 1306|  1.58k|				} \
  |  | 1307|  1.58k|			} while (0); \
  |  |  ------------------
  |  |  |  Branch (1307:13): [Folded, False: 1.58k]
  |  |  ------------------
  |  | 1308|  1.58k|		} \
  |  | 1309|  33.5k|		__ht->nNumUsed = _idx; \
  |  | 1310|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1310:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  |  Branch (494:6): [True: 0, False: 1.58k]
  |  Branch (494:6): [True: 1.58k, False: 0]
  ------------------
  495|  33.5k|		}
  496|       |
  497|  33.6k|		while (EG(symtable_cache_ptr) > EG(symtable_cache)) {
  ------------------
  |  |   45|  33.6k|# define EG(v) (executor_globals.v)
  ------------------
              		while (EG(symtable_cache_ptr) > EG(symtable_cache)) {
  ------------------
  |  |   45|  33.6k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (497:10): [True: 95, False: 33.5k]
  ------------------
  498|     95|			EG(symtable_cache_ptr)--;
  ------------------
  |  |   45|     95|# define EG(v) (executor_globals.v)
  ------------------
  499|     95|			zend_hash_destroy(*EG(symtable_cache_ptr));
  ------------------
  |  |   45|     95|# define EG(v) (executor_globals.v)
  ------------------
  500|     95|			FREE_HASHTABLE(*EG(symtable_cache_ptr));
  ------------------
  |  |  235|     95|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     95|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     95|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     95|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     95|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     95|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     95|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|     95|		}
  502|       |
  503|  33.5k|		zend_hash_destroy(&EG(included_files));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  504|  33.5k|		zend_hash_destroy(&EG(autoload_current_classnames));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  505|       |
  506|  33.5k|		zend_stack_destroy(&EG(user_error_handlers_error_reporting));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  507|  33.5k|		zend_stack_destroy(&EG(user_error_handlers));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  508|  33.5k|		zend_stack_destroy(&EG(user_exception_handlers));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  509|  33.5k|		zend_lazy_objects_destroy(&EG(lazy_objects_store));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  510|  33.5k|		zend_objects_store_destroy(&EG(objects_store));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  511|       |
  512|  33.5k|		if (EG(ht_iterators) != EG(ht_iterators_slots)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              		if (EG(ht_iterators) != EG(ht_iterators_slots)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (512:7): [True: 1, False: 33.5k]
  ------------------
  513|      1|			efree(EG(ht_iterators));
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  514|      1|		}
  515|       |
  516|  33.5k|		zend_hash_destroy(&EG(callable_convert_cache));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  517|  33.5k|	}
  518|       |
  519|  33.5k|#if ZEND_DEBUG
  520|  33.5k|	if (EG(ht_iterators_used) && !CG(unclean_shutdown)) {
  ------------------
  |  |   45|  67.1k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 6, False: 33.5k]
  |  |  ------------------
  ------------------
              	if (EG(ht_iterators_used) && !CG(unclean_shutdown)) {
  ------------------
  |  |   35|      6|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (520:31): [True: 0, False: 6]
  ------------------
  521|      0|		zend_error(E_WARNING, "Leaked %" PRIu32 " hashtable iterators", EG(ht_iterators_used));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Leaked %" PRIu32 " hashtable iterators", EG(ht_iterators_used));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  522|      0|	}
  523|  33.5k|#endif
  524|       |
  525|       |	/* Check whether anyone is hogging the trampoline. */
  526|  33.5k|	ZEND_ASSERT(EG(trampoline).common.function_name == NULL || CG(unclean_shutdown));
  ------------------
  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (526:2): [True: 33.5k, False: 0]
  |  Branch (526:2): [True: 0, False: 0]
  |  Branch (526:2): [True: 33.5k, False: 2]
  |  Branch (526:2): [True: 2, False: 0]
  ------------------
  527|       |
  528|  33.5k|	EG(ht_iterators_used) = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  529|       |
  530|  33.5k|	zend_shutdown_fpu();
  531|  33.5k|}
get_active_function_name:
  569|     10|{
  570|     10|	const zend_function *func;
  571|       |
  572|     10|	if (!zend_is_executing()) {
  ------------------
  |  Branch (572:6): [True: 0, False: 10]
  ------------------
  573|      0|		return NULL;
  574|      0|	}
  575|       |
  576|     10|	func = zend_active_function();
  577|       |
  578|     10|	switch (func->type) {
  579|      0|		case ZEND_USER_FUNCTION: {
  ------------------
  |  Branch (579:3): [True: 0, False: 10]
  ------------------
  580|      0|				const zend_string *function_name = func->common.function_name;
  581|       |
  582|      0|				if (function_name) {
  ------------------
  |  Branch (582:9): [True: 0, False: 0]
  ------------------
  583|      0|					return ZSTR_VAL(function_name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  584|      0|				} else {
  585|      0|					return "main";
  586|      0|				}
  587|      0|			}
  588|      0|			break;
  589|     10|		case ZEND_INTERNAL_FUNCTION:
  ------------------
  |  Branch (589:3): [True: 10, False: 0]
  ------------------
  590|     10|			return ZSTR_VAL(func->common.function_name);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  591|      0|			break;
  592|      0|		default:
  ------------------
  |  Branch (592:3): [True: 0, False: 10]
  ------------------
  593|       |			return NULL;
  594|     10|	}
  595|     10|}
zend_active_function_ex:
  599|     56|{
  600|     56|	const zend_function *func = EX(func);
  ------------------
  |  |  730|     56|#define EX(element) 			((execute_data)->element)
  ------------------
  601|       |
  602|       |	/* Resolve function if op is a frameless call. */
  603|     56|	if (ZEND_USER_CODE(func->type)) {
  ------------------
  |  | 1081|     56|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 56, False: 0]
  |  |  ------------------
  ------------------
  604|     56|		const zend_op *op = EX(opline);
  ------------------
  |  |  730|     56|#define EX(element) 			((execute_data)->element)
  ------------------
  605|     56|		if (ZEND_OP_IS_FRAMELESS_ICALL(op->opcode)) {
  ------------------
  |  |   36|     56|#define ZEND_OP_IS_FRAMELESS_ICALL(opcode) ((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
  |  |  ------------------
  |  |  |  |  326|    112|#define ZEND_FRAMELESS_ICALL_0              204
  |  |  ------------------
  |  |               #define ZEND_OP_IS_FRAMELESS_ICALL(opcode) ((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
  |  |  ------------------
  |  |  |  |  329|      0|#define ZEND_FRAMELESS_ICALL_3              207
  |  |  ------------------
  |  |  |  Branch (36:45): [True: 0, False: 56]
  |  |  |  Branch (36:83): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  606|      0|			func = ZEND_FLF_FUNC(op);
  ------------------
  |  |   38|      0|#define ZEND_FLF_FUNC(opline) (zend_flf_functions[(opline)->extended_value])
  ------------------
  607|      0|		}
  608|     56|	}
  609|       |
  610|     56|	return func;
  611|     56|}
get_active_function_or_method_name:
  614|    642|{
  615|    642|	ZEND_ASSERT(zend_is_executing());
  ------------------
  |  |  112|    642|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (615:2): [True: 0, False: 642]
  |  Branch (615:2): [True: 642, False: 0]
  ------------------
  616|       |
  617|    642|	return get_function_or_method_name(zend_active_function());
  618|    642|}
get_function_or_method_name:
  622|    679|{
  623|    679|	if (func->common.scope && func->common.function_name) {
  ------------------
  |  Branch (623:6): [True: 95, False: 584]
  |  Branch (623:28): [True: 95, False: 0]
  ------------------
  624|     95|		return zend_create_member_string(func->common.scope->name, func->common.function_name);
  625|     95|	}
  626|       |
  627|    584|	return func->common.function_name ? zend_string_copy(func->common.function_name) : ZSTR_INIT_LITERAL("main", 0);
  ------------------
  |  |  141|      0|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  |  Branch (627:9): [True: 584, False: 0]
  ------------------
  628|    679|}
get_active_function_arg_name:
  632|    565|{
  633|    565|	if (!zend_is_executing()) {
  ------------------
  |  Branch (633:6): [True: 0, False: 565]
  ------------------
  634|      0|		return NULL;
  635|      0|	}
  636|       |
  637|    565|	const zend_function *func = zend_active_function();
  638|       |
  639|    565|	return get_function_arg_name(func, arg_num);
  640|    565|}
get_function_arg_name:
  644|    603|{
  645|    603|	if (!func || arg_num == 0 || func->common.num_args < arg_num) {
  ------------------
  |  Branch (645:6): [True: 0, False: 603]
  |  Branch (645:15): [True: 0, False: 603]
  |  Branch (645:31): [True: 7, False: 596]
  ------------------
  646|      7|		return NULL;
  647|      7|	}
  648|       |
  649|    596|	return ZSTR_VAL(func->common.arg_info[arg_num - 1].name);
  ------------------
  |  |   67|    596|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  650|    603|}
zend_get_executed_filename:
  654|  10.6k|{
  655|  10.6k|	const zend_string *filename = zend_get_executed_filename_ex();
  656|  10.6k|	return filename != NULL ? ZSTR_VAL(filename) : "[no active file]";
  ------------------
  |  |   67|  6.93k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (656:9): [True: 6.93k, False: 3.76k]
  ------------------
  657|  10.6k|}
zend_get_executed_filename_ex:
  661|  69.1k|{
  662|  69.1k|	zend_string *filename_override = EG(filename_override);
  ------------------
  |  |   45|  69.1k|# define EG(v) (executor_globals.v)
  ------------------
  663|  69.1k|	if (filename_override != NULL) {
  ------------------
  |  Branch (663:6): [True: 14, False: 69.1k]
  ------------------
  664|     14|		return filename_override;
  665|     14|	}
  666|       |
  667|  69.1k|	const zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|  69.1k|# define EG(v) (executor_globals.v)
  ------------------
  668|       |
  669|  80.6k|	while (ex && (!ex->func || !ZEND_USER_CODE(ex->func->type))) {
  ------------------
  |  | 1081|  76.8k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (669:9): [True: 76.8k, False: 3.76k]
  |  Branch (669:16): [True: 0, False: 76.8k]
  |  Branch (669:29): [True: 11.4k, False: 65.3k]
  ------------------
  670|  11.4k|		ex = ex->prev_execute_data;
  671|  11.4k|	}
  672|  69.1k|	if (ex) {
  ------------------
  |  Branch (672:6): [True: 65.3k, False: 3.76k]
  ------------------
  673|  65.3k|		return ex->func->op_array.filename;
  674|  65.3k|	} else {
  675|       |		return NULL;
  676|  3.76k|	}
  677|  69.1k|}
zend_get_executed_lineno:
  681|  64.9k|{
  682|  64.9k|	zend_long lineno_override = EG(lineno_override);
  ------------------
  |  |   45|  64.9k|# define EG(v) (executor_globals.v)
  ------------------
  683|  64.9k|	if (lineno_override != -1) {
  ------------------
  |  Branch (683:6): [True: 14, False: 64.9k]
  ------------------
  684|     14|		return lineno_override;
  685|     14|	}
  686|       |
  687|  64.9k|	const zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|  64.9k|# define EG(v) (executor_globals.v)
  ------------------
  688|       |
  689|  76.4k|	while (ex && (!ex->func || !ZEND_USER_CODE(ex->func->type))) {
  ------------------
  |  | 1081|  72.6k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (689:9): [True: 72.6k, False: 3.76k]
  |  Branch (689:16): [True: 0, False: 72.6k]
  |  Branch (689:29): [True: 11.4k, False: 61.1k]
  ------------------
  690|  11.4k|		ex = ex->prev_execute_data;
  691|  11.4k|	}
  692|  64.9k|	if (ex) {
  ------------------
  |  Branch (692:6): [True: 61.1k, False: 3.76k]
  ------------------
  693|  61.1k|		if (!ex->opline) {
  ------------------
  |  Branch (693:7): [True: 0, False: 61.1k]
  ------------------
  694|       |			/* Missing SAVE_OPLINE()? Falling back to first line of function */
  695|      0|			return ex->func->op_array.opcodes[0].lineno;
  696|      0|		}
  697|  61.1k|		if (EG(exception) && ex->opline->opcode == ZEND_HANDLE_EXCEPTION &&
  ------------------
  |  |   45|   122k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 9, False: 61.1k]
  |  |  ------------------
  ------------------
              		if (EG(exception) && ex->opline->opcode == ZEND_HANDLE_EXCEPTION &&
  ------------------
  |  |  271|  61.1k|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (697:24): [True: 3, False: 6]
  ------------------
  698|      3|		    ex->opline->lineno == 0 && EG(opline_before_exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (698:7): [True: 3, False: 0]
  ------------------
  699|      3|			return EG(opline_before_exception)->lineno;
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  700|      3|		}
  701|  61.1k|		return ex->opline->lineno;
  702|  61.1k|	} else {
  703|  3.76k|		return 0;
  704|  3.76k|	}
  705|  64.9k|}
zend_get_executed_scope:
  709|     95|{
  710|     95|	const zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|     95|# define EG(v) (executor_globals.v)
  ------------------
  711|       |
  712|    116|	while (1) {
  ------------------
  |  Branch (712:9): [True: 116, Folded]
  ------------------
  713|    116|		if (!ex) {
  ------------------
  |  Branch (713:7): [True: 0, False: 116]
  ------------------
  714|      0|			return NULL;
  715|    116|		} else if (ex->func && (ZEND_USER_CODE(ex->func->type) || ex->func->common.scope)) {
  ------------------
  |  | 1081|    232|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 95, False: 21]
  |  |  ------------------
  ------------------
  |  Branch (715:14): [True: 116, False: 0]
  |  Branch (715:61): [True: 0, False: 21]
  ------------------
  716|     95|			return ex->func->common.scope;
  717|     95|		}
  718|     21|		ex = ex->prev_execute_data;
  719|     21|	}
  720|     95|}
zend_is_executing:
  724|  90.3k|{
  725|  90.3k|	return EG(current_execute_data) != 0;
  ------------------
  |  |   45|  90.3k|# define EG(v) (executor_globals.v)
  ------------------
  726|  90.3k|}
zval_update_constant_with_ctx:
  730|    231|{
  731|    231|	if (Z_TYPE_P(p) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|    231|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    231|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(p) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    231|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (731:6): [True: 231, False: 0]
  ------------------
  732|    231|		zend_ast *ast = Z_ASTVAL_P(p);
  ------------------
  |  | 1041|    231|#define Z_ASTVAL_P(zval_p)			Z_ASTVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1040|    231|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1038|    231|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  733|       |
  734|    231|		if (ast->kind == ZEND_AST_CONSTANT) {
  ------------------
  |  Branch (734:7): [True: 33, False: 198]
  ------------------
  735|     33|			zend_string *name = zend_ast_get_constant_name(ast);
  736|     33|			const zval *zv = zend_get_constant_ex(name, scope, ast->attr);
  737|     33|			if (UNEXPECTED(zv == NULL)) {
  ------------------
  |  |  457|     33|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 22]
  |  |  ------------------
  ------------------
  738|     11|				return FAILURE;
  739|     11|			}
  740|       |
  741|     22|			zval_ptr_dtor_nogc(p);
  742|     22|			ZVAL_COPY_OR_DUP(p, zv);
  ------------------
  |  | 1457|     22|	do {																\
  |  | 1458|     22|		zval *_z1 = (z);												\
  |  | 1459|     22|		const zval *_z2 = (v);											\
  |  | 1460|     22|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     22|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     22|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     22|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     22|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     22|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     22|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     22|	do {												\
  |  |  |  | 1408|     22|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     22|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     22|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     22|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     22|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     22|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     22|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     22|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     22|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     22|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 10, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|     10|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|     10|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 10, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|     10|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|     10|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|     10|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|     10|		}																\
  |  | 1472|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
  743|    198|		} else {
  744|    198|			zval tmp;
  745|    198|			bool short_circuited;
  746|       |
  747|       |			// Increase the refcount during zend_ast_evaluate to avoid releasing the ast too early
  748|       |			// on nested calls to zval_update_constant_ex which can happen when retriggering ast
  749|       |			// evaluation during autoloading.
  750|    198|			zend_ast_ref *ast_ref = Z_AST_P(p);
  ------------------
  |  | 1036|    198|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|    198|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  751|    198|			bool ast_is_refcounted = !(GC_FLAGS(ast_ref) & GC_IMMUTABLE);
  ------------------
  |  |  777|    198|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    198|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			bool ast_is_refcounted = !(GC_FLAGS(ast_ref) & GC_IMMUTABLE);
  ------------------
  |  |  801|    198|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  752|    198|			if (ast_is_refcounted) {
  ------------------
  |  Branch (752:8): [True: 197, False: 1]
  ------------------
  753|    197|				GC_ADDREF(ast_ref);
  ------------------
  |  |  718|    197|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  754|    197|			}
  755|    198|			zend_result result = zend_ast_evaluate_ex(&tmp, ast, scope, &short_circuited, ctx) != SUCCESS;
  756|    198|			if (ast_is_refcounted && !GC_DELREF(ast_ref)) {
  ------------------
  |  |  719|    197|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (756:8): [True: 197, False: 1]
  |  Branch (756:29): [True: 0, False: 197]
  ------------------
  757|      0|				rc_dtor_func((zend_refcounted *)ast_ref);
  758|      0|			}
  759|    198|			if (UNEXPECTED(result != SUCCESS)) {
  ------------------
  |  |  457|    198|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 59, False: 139]
  |  |  ------------------
  ------------------
  760|     59|				return FAILURE;
  761|     59|			}
  762|    139|			zval_ptr_dtor_nogc(p);
  763|    139|			ZVAL_COPY_VALUE(p, &tmp);
  ------------------
  |  | 1416|    139|	do {												\
  |  | 1417|    139|		zval *_z1 = (z);								\
  |  | 1418|    139|		const zval *_z2 = (v);							\
  |  | 1419|    139|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    139|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    139|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    139|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    139|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    139|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    139|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    139|	do {												\
  |  |  |  | 1408|    139|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    139|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    139|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    139|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    139|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    139|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    139|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 139]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    139|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 139]
  |  |  ------------------
  ------------------
  764|    139|		}
  765|    231|	}
  766|    161|	return SUCCESS;
  767|    231|}
zval_update_constant_ex:
  771|    207|{
  772|    207|	zend_ast_evaluate_ctx ctx = {0};
  773|    207|	return zval_update_constant_with_ctx(p, scope, &ctx);
  774|    207|}
_call_user_function_impl:
  783|      8|{
  784|      8|	zend_fcall_info fci;
  785|       |
  786|      8|	fci.size = sizeof(fci);
  787|      8|	if (object) {
  ------------------
  |  Branch (787:6): [True: 1, False: 7]
  ------------------
  788|      1|		ZEND_ASSERT(Z_TYPE_P(object) == IS_OBJECT);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (788:3): [True: 0, False: 1]
  |  Branch (788:3): [True: 1, False: 0]
  ------------------
  789|      1|		fci.object = Z_OBJ_P(object);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  790|      7|	} else {
  791|      7|		fci.object = NULL;
  792|      7|	}
  793|      8|	ZVAL_COPY_VALUE(&fci.function_name, function_name);
  ------------------
  |  | 1416|      8|	do {												\
  |  | 1417|      8|		zval *_z1 = (z);								\
  |  | 1418|      8|		const zval *_z2 = (v);							\
  |  | 1419|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      8|	do {												\
  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  794|      8|	fci.retval = retval_ptr;
  795|      8|	fci.param_count = param_count;
  796|      8|	fci.params = params;
  797|      8|	fci.named_params = named_params;
  798|      8|	fci.consumed_args = 0;
  799|       |
  800|       |	return zend_call_function(&fci, NULL);
  801|      8|}
zend_call_function:
  805|  11.8k|{
  806|  11.8k|	zend_execute_data *call;
  807|  11.8k|	zend_fcall_info_cache fci_cache_local;
  808|  11.8k|	zend_function *func;
  809|  11.8k|	uint32_t call_info;
  810|  11.8k|	void *object_or_called_scope;
  811|       |
  812|  11.8k|	ZVAL_UNDEF(fci->retval);
  ------------------
  |  | 1055|  11.8k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  11.8k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  11.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  11.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  11.8k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  11.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 11.8k]
  |  |  ------------------
  ------------------
  813|       |
  814|  11.8k|	if (!EG(active)) {
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (814:6): [True: 0, False: 11.8k]
  ------------------
  815|      0|		return FAILURE; /* executor is already inactive */
  816|      0|	}
  817|       |
  818|  11.8k|	if (EG(exception)) {
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 7, False: 11.8k]
  |  |  ------------------
  ------------------
  819|      7|		if (fci_cache) {
  ------------------
  |  Branch (819:7): [True: 7, False: 0]
  ------------------
  820|      7|			zend_release_fcall_info_cache(fci_cache);
  821|      7|		}
  822|      7|		return SUCCESS; /* we would result in an unstable executor otherwise */
  823|      7|	}
  824|       |
  825|  11.8k|	ZEND_ASSERT(ZEND_FCI_INITIALIZED(*fci));
  ------------------
  |  |  112|  11.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (825:2): [True: 0, False: 11.8k]
  |  Branch (825:2): [True: 11.8k, False: 0]
  ------------------
  826|       |
  827|  11.8k|	if (!fci_cache || !fci_cache->function_handler) {
  ------------------
  |  Branch (827:6): [True: 8, False: 11.8k]
  |  Branch (827:20): [True: 0, False: 11.8k]
  ------------------
  828|      8|		char *error = NULL;
  829|       |
  830|      8|		if (!fci_cache) {
  ------------------
  |  Branch (830:7): [True: 8, False: 0]
  ------------------
  831|      8|			fci_cache = &fci_cache_local;
  832|      8|		}
  833|       |
  834|      8|		if (!zend_is_callable_ex(&fci->function_name, fci->object, 0, NULL, fci_cache, &error)) {
  ------------------
  |  Branch (834:7): [True: 3, False: 5]
  ------------------
  835|      3|			ZEND_ASSERT(error && "Should have error if not callable");
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (835:4): [True: 0, False: 3]
  |  Branch (835:4): [True: 0, False: 0]
  |  Branch (835:4): [True: 3, False: 0]
  |  Branch (835:4): [True: 3, False: 0]
  ------------------
  836|      3|			zend_string *callable_name
  837|      3|				= zend_get_callable_name_ex(&fci->function_name, fci->object);
  838|      3|			zend_throw_error(NULL, "Invalid callback %s, %s", ZSTR_VAL(callable_name), error);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  839|      3|			efree(error);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  840|      3|			zend_string_release_ex(callable_name, 0);
  841|      3|			return SUCCESS;
  842|      3|		}
  843|       |
  844|      5|		ZEND_ASSERT(!error);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (844:3): [True: 0, False: 5]
  |  Branch (844:3): [True: 5, False: 0]
  ------------------
  845|      5|	}
  846|       |
  847|  11.8k|	func = fci_cache->function_handler;
  848|  11.8k|	if ((func->common.fn_flags & ZEND_ACC_STATIC) || !fci_cache->object) {
  ------------------
  |  |  227|  11.8k|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (848:6): [True: 4, False: 11.8k]
  |  Branch (848:51): [True: 594, False: 11.2k]
  ------------------
  849|    598|		object_or_called_scope = fci_cache->called_scope;
  850|    598|		call_info = ZEND_CALL_TOP_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  683|    598|#define ZEND_CALL_TOP_FUNCTION       (ZEND_CALL_TOP | ZEND_CALL_FUNCTION)
  |  |  ------------------
  |  |  |  |  663|    598|#define ZEND_CALL_TOP                (1 << 17)
  |  |  ------------------
  |  |               #define ZEND_CALL_TOP_FUNCTION       (ZEND_CALL_TOP | ZEND_CALL_FUNCTION)
  |  |  ------------------
  |  |  |  |  660|    598|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_TOP_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  671|    598|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
  851|  11.2k|	} else {
  852|  11.2k|		object_or_called_scope = fci_cache->object;
  853|  11.2k|		call_info = ZEND_CALL_TOP_FUNCTION | ZEND_CALL_DYNAMIC | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  683|  11.2k|#define ZEND_CALL_TOP_FUNCTION       (ZEND_CALL_TOP | ZEND_CALL_FUNCTION)
  |  |  ------------------
  |  |  |  |  663|  11.2k|#define ZEND_CALL_TOP                (1 << 17)
  |  |  ------------------
  |  |               #define ZEND_CALL_TOP_FUNCTION       (ZEND_CALL_TOP | ZEND_CALL_FUNCTION)
  |  |  ------------------
  |  |  |  |  660|  11.2k|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_TOP_FUNCTION | ZEND_CALL_DYNAMIC | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  671|  11.2k|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
              		call_info = ZEND_CALL_TOP_FUNCTION | ZEND_CALL_DYNAMIC | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|  11.2k|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|  11.2k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  11.2k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  11.2k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  11.2k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  11.2k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  11.2k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  854|  11.2k|	}
  855|       |
  856|  11.8k|	if (UNEXPECTED(func->common.fn_flags & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  457|  11.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  857|      0|		zend_deprecated_function(func);
  858|       |
  859|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  860|      0|			return SUCCESS;
  861|      0|		}
  862|      0|	}
  863|       |
  864|  11.8k|	call = zend_vm_stack_push_call_frame(call_info,
  865|  11.8k|		func, fci->param_count, object_or_called_scope);
  866|  11.8k|	uint32_t consumed_args = fci->param_count ? fci->consumed_args : 0;
  ------------------
  |  Branch (866:27): [True: 5.66k, False: 6.21k]
  ------------------
  867|       |
  868|  11.8k|	ZEND_ASSERT((consumed_args & (consumed_args - 1)) == 0);
  ------------------
  |  |  112|  11.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (868:2): [True: 0, False: 11.8k]
  |  Branch (868:2): [True: 11.8k, False: 0]
  ------------------
  869|       |
  870|  24.9k|	for (uint32_t i = 0; i < fci->param_count; i++) {
  ------------------
  |  Branch (870:23): [True: 13.0k, False: 11.8k]
  ------------------
  871|  13.0k|		zval *param = ZEND_CALL_ARG(call, i+1);
  ------------------
  |  |  728|  13.0k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|  13.0k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  13.0k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  872|  13.0k|		zval *arg = &fci->params[i];
  873|  13.0k|		bool must_wrap = false;
  874|  13.0k|		if (UNEXPECTED(Z_ISUNDEF_P(arg))) {
  ------------------
  |  |  457|  13.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13.0k]
  |  |  ------------------
  ------------------
  875|       |			/* Allow forwarding undef slots. This is only used by Closure::__invoke(). */
  876|      0|			ZVAL_UNDEF(param);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  877|      0|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_MAY_HAVE_UNDEF);
  ------------------
  |  |  703|      0|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      0|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      0|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      0|		call_info |= (flag); \
  |  |  |  |  697|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  878|      0|			continue;
  879|      0|		}
  880|       |
  881|  13.0k|		if (ARG_SHOULD_BE_SENT_BY_REF(func, i + 1)) {
  ------------------
  |  | 1167|  13.0k|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|  13.0k|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|  13.0k|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 73, False: 12.9k]
  |  |  ------------------
  ------------------
  882|     73|			if (UNEXPECTED(!Z_ISREF_P(arg))) {
  ------------------
  |  |  457|     73|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 24, False: 49]
  |  |  ------------------
  ------------------
  883|     24|				if (!ARG_MAY_BE_SENT_BY_REF(func, i + 1)) {
  ------------------
  |  | 1170|     24|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|     24|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  ------------------
  |  Branch (883:9): [True: 24, False: 0]
  ------------------
  884|       |					/* By-value send is not allowed -- emit a warning,
  885|       |					 * and perform the call with the value wrapped in a reference. */
  886|     24|					zend_param_must_be_ref(func, i + 1);
  887|     24|					must_wrap = true;
  888|     24|					if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 24]
  |  |  ------------------
  ------------------
  889|      0|						ZEND_CALL_NUM_ARGS(call) = i;
  ------------------
  |  |  712|      0|	(call)->This.u2.num_args
  ------------------
  890|      1|cleanup_args:
  891|      1|						zend_vm_stack_free_args(call);
  892|      1|						if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  687|      1|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              						if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|      1|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (892:11): [True: 0, False: 1]
  ------------------
  893|      0|							zend_free_extra_named_params(call->extra_named_params);
  894|      0|						}
  895|      1|						zend_vm_stack_free_call_frame(call);
  896|      1|						zend_release_fcall_info_cache(fci_cache);
  897|      1|						return SUCCESS;
  898|      0|					}
  899|     24|				}
  900|     24|			}
  901|  12.9k|		} else {
  902|  12.9k|			if (Z_ISREF_P(arg) &&
  ------------------
  |  |  964|  12.9k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  25.9k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  12.9k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  12.9k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 669, False: 12.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  903|    669|			    !(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  372|    669|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (903:8): [True: 669, False: 0]
  ------------------
  904|       |				/* don't separate references for __call */
  905|    669|				arg = Z_REFVAL_P(arg);
  ------------------
  |  | 1033|    669|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    669|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    669|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  906|    669|			}
  907|  12.9k|		}
  908|       |
  909|  13.0k|		if (EXPECTED(!must_wrap)) {
  ------------------
  |  |  456|  13.0k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13.0k, False: 24]
  |  |  ------------------
  ------------------
  910|  13.0k|			if (EXPECTED(consumed_args == 0)
  ------------------
  |  |  456|  26.0k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13.0k, False: 20]
  |  |  ------------------
  ------------------
  911|     20|					|| !zend_fci_is_consumed_arg(consumed_args, i)
  ------------------
  |  Branch (911:9): [True: 6, False: 14]
  ------------------
  912|  13.0k|					|| Z_ISREF_P(arg)
  ------------------
  |  |  964|     14|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  13.0k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     14|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  913|  13.0k|					|| arg != &fci->params[i]) {
  ------------------
  |  Branch (913:9): [True: 0, False: 14]
  ------------------
  914|  13.0k|				ZVAL_COPY(param, arg);
  ------------------
  |  | 1425|  13.0k|	do {												\
  |  | 1426|  13.0k|		zval *_z1 = (z);								\
  |  | 1427|  13.0k|		const zval *_z2 = (v);							\
  |  | 1428|  13.0k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  13.0k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  13.0k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  13.0k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  13.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  13.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  13.0k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  13.0k|	do {												\
  |  |  |  | 1408|  13.0k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  13.0k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  13.0k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  13.0k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  13.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  13.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  13.0k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 13.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  13.0k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  13.0k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  13.0k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5.41k, False: 7.59k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|  5.41k|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|  5.41k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|  5.41k|		}												\
  |  | 1434|  13.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 13.0k]
  |  |  ------------------
  ------------------
  915|  13.0k|			} else {
  916|     14|				ZVAL_COPY_VALUE(param, arg);
  ------------------
  |  | 1416|     14|	do {												\
  |  | 1417|     14|		zval *_z1 = (z);								\
  |  | 1418|     14|		const zval *_z2 = (v);							\
  |  | 1419|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  917|     14|				ZVAL_UNDEF(arg);
  ------------------
  |  | 1055|     14|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     14|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     14|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  918|     14|			}
  919|  13.0k|		} else {
  920|     24|			Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|     24|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     24|	zval *_pz = (pz);				\
  |  | 1287|     24|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     24|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     24|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     24|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|     24|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 24]
  |  |  ------------------
  ------------------
  921|     24|			ZVAL_NEW_REF(param, arg);
  ------------------
  |  | 1205|     24|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|     24|		zend_reference *_ref =									\
  |  | 1207|     24|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|     24|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|     24|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|     24|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|     24|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     24|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     24|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     24|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     24|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     24|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|     24|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|     24|	do {												\
  |  |  |  | 1417|     24|		zval *_z1 = (z);								\
  |  |  |  | 1418|     24|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     24|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     24|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     24|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     24|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     24|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     24|	do {												\
  |  |  |  |  |  | 1408|     24|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     24|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     24|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     24|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     24|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     24|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|     24|		_ref->sources.ptr = NULL;									\
  |  | 1212|     24|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     24|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     24|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|     24|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|     24|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     24|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     24|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
  922|     24|		}
  923|  13.0k|	}
  924|       |
  925|  11.8k|	if (fci->named_params) {
  ------------------
  |  Branch (925:6): [True: 39, False: 11.8k]
  ------------------
  926|     39|		zend_string *name;
  927|     39|		zval *arg;
  928|     39|		uint32_t arg_num = ZEND_CALL_NUM_ARGS(call) + 1;
  ------------------
  |  |  712|     39|	(call)->This.u2.num_args
  ------------------
  929|     39|		bool have_named_params = false;
  930|    159|		ZEND_HASH_FOREACH_STR_KEY_VAL(fci->named_params, name, arg) {
  ------------------
  |  | 1181|     60|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     39|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     39|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     39|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     39|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     39|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     39|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     39|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     39|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     39|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     39|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     39|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     39|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     39|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     39|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     98|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 60, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     60|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     60|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     60|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     60|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     60|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 6, False: 54]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      6|				__z++; \
  |  |  |  |  |  | 1057|      6|				__h = _idx; \
  |  |  |  |  |  | 1058|      6|				_idx++; \
  |  |  |  |  |  | 1059|     54|			} else { \
  |  |  |  |  |  | 1060|     54|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     54|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     54|				__h = _p->h; \
  |  |  |  |  |  | 1063|     54|				__key = _p->key; \
  |  |  |  |  |  | 1064|     54|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     54|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 54]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|     54|			} \
  |  |  |  |  |  | 1068|     60|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     60|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     60|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 60]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|     60|	_key = __key; \
  |  | 1183|     60|	_val = _z;
  ------------------
  931|    159|			bool must_wrap = false;
  932|    159|			zval *target;
  933|    159|			if (name) {
  ------------------
  |  Branch (933:8): [True: 54, False: 6]
  ------------------
  934|     54|				void *cache_slot[2] = {NULL, NULL};
  935|     54|				have_named_params = true;
  936|     54|				target = zend_handle_named_arg(&call, name, &arg_num, cache_slot);
  937|     54|				if (!target) {
  ------------------
  |  Branch (937:9): [True: 1, False: 53]
  ------------------
  938|      1|					goto cleanup_args;
  939|      1|				}
  940|     54|			} else {
  941|      6|				if (have_named_params) {
  ------------------
  |  Branch (941:9): [True: 0, False: 6]
  ------------------
  942|      0|					zend_throw_error(NULL,
  943|      0|						"Cannot use positional argument after named argument");
  944|      0|					goto cleanup_args;
  945|      0|				}
  946|       |
  947|      6|				zend_vm_stack_extend_call_frame(&call, arg_num - 1, 1);
  948|      6|				target = ZEND_CALL_ARG(call, arg_num);
  ------------------
  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  949|      6|			}
  950|       |
  951|     59|			if (ARG_SHOULD_BE_SENT_BY_REF(func, arg_num)) {
  ------------------
  |  | 1167|     59|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|     59|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|     59|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 3, False: 56]
  |  |  ------------------
  ------------------
  952|      3|				if (UNEXPECTED(!Z_ISREF_P(arg))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  953|      2|					if (!ARG_MAY_BE_SENT_BY_REF(func, arg_num)) {
  ------------------
  |  | 1170|      2|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      2|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  ------------------
  |  Branch (953:10): [True: 2, False: 0]
  ------------------
  954|       |						/* By-value send is not allowed -- emit a warning,
  955|       |						 * and perform the call with the value wrapped in a reference. */
  956|      2|						zend_param_must_be_ref(func, arg_num);
  957|      2|						must_wrap = true;
  958|      2|						if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  959|      0|							goto cleanup_args;
  960|      0|						}
  961|      2|					}
  962|      2|				}
  963|     56|			} else {
  964|     56|				if (Z_ISREF_P(arg) &&
  ------------------
  |  |  964|     56|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    112|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     56|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     56|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  965|      0|					!(func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (965:6): [True: 0, False: 0]
  ------------------
  966|       |					/* don't separate references for __call */
  967|      0|					arg = Z_REFVAL_P(arg);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  968|      0|				}
  969|     56|			}
  970|       |
  971|     59|			if (EXPECTED(!must_wrap)) {
  ------------------
  |  |  456|     59|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 57, False: 2]
  |  |  ------------------
  ------------------
  972|     57|				ZVAL_COPY(target, arg);
  ------------------
  |  | 1425|     57|	do {												\
  |  | 1426|     57|		zval *_z1 = (z);								\
  |  | 1427|     57|		const zval *_z2 = (v);							\
  |  | 1428|     57|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     57|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     57|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     57|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     57|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     57|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     57|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     57|	do {												\
  |  |  |  | 1408|     57|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     57|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     57|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     57|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     57|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     57|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     57|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 57]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     57|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     57|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     57|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 20, False: 37]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     20|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     20|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     20|		}												\
  |  | 1434|     57|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 57]
  |  |  ------------------
  ------------------
  973|     57|			} else {
  974|      2|				Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  975|      2|				ZVAL_NEW_REF(target, arg);
  ------------------
  |  | 1205|      2|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      2|		zend_reference *_ref =									\
  |  | 1207|      2|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      2|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      2|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      2|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      2|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      2|		_ref->sources.ptr = NULL;									\
  |  | 1212|      2|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      2|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      2|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  976|      2|			}
  977|     59|			if (!name) {
  ------------------
  |  Branch (977:8): [True: 6, False: 53]
  ------------------
  978|      6|				ZEND_CALL_NUM_ARGS(call)++;
  ------------------
  |  |  712|      6|	(call)->This.u2.num_args
  ------------------
  979|      6|				arg_num++;
  980|      6|			}
  981|     59|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     59|		} \
  |  | 1102|     39|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 38]
  |  |  ------------------
  ------------------
  982|     39|	}
  983|       |
  984|  11.8k|	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_MAY_HAVE_UNDEF)) {
  ------------------
  |  |  457|  11.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 34, False: 11.8k]
  |  |  ------------------
  ------------------
  985|       |		/* zend_handle_undef_args assumes prev_execute_data is initialized. */
  986|     34|		call->prev_execute_data = NULL;
  987|     34|		if (zend_handle_undef_args(call) == FAILURE) {
  ------------------
  |  Branch (987:7): [True: 2, False: 32]
  ------------------
  988|      2|			zend_vm_stack_free_args(call);
  989|      2|			zend_vm_stack_free_call_frame(call);
  990|      2|			return SUCCESS;
  991|      2|		}
  992|     34|	}
  993|       |
  994|  11.8k|	if (UNEXPECTED(func->op_array.fn_flags & ZEND_ACC_CLOSURE)) {
  ------------------
  |  |  457|  11.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 397, False: 11.4k]
  |  |  ------------------
  ------------------
  995|    397|		uint32_t call_info;
  996|       |
  997|    397|		GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |  718|    397|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  998|    397|		call_info = ZEND_CALL_CLOSURE;
  ------------------
  |  |  668|    397|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
  999|    397|		if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
  ------------------
  |  |  385|    397|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (999:7): [True: 4, False: 393]
  ------------------
 1000|      4|			call_info |= ZEND_CALL_FAKE_CLOSURE;
  ------------------
  |  |  669|      4|#define ZEND_CALL_FAKE_CLOSURE       (1 << 23) /* Same as ZEND_ACC_FAKE_CLOSURE */
  ------------------
 1001|      4|		}
 1002|    397|		ZEND_ADD_CALL_FLAG(call, call_info);
  ------------------
  |  |  703|    397|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|    397|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|    397|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|    397|		call_info |= (flag); \
  |  |  |  |  697|    397|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 397]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|    397|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 397]
  |  |  ------------------
  ------------------
 1003|    397|	}
 1004|       |
 1005|  11.8k|	if (func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|  11.8k|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (1005:6): [True: 1.33k, False: 10.5k]
  ------------------
 1006|  1.33k|		fci_cache->function_handler = NULL;
 1007|  1.33k|	}
 1008|       |
 1009|  11.8k|	const zend_class_entry *orig_fake_scope = EG(fake_scope);
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  ------------------
 1010|  11.8k|	EG(fake_scope) = NULL;
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  ------------------
 1011|  11.8k|	if (func->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (1011:6): [True: 8.33k, False: 3.54k]
  ------------------
 1012|  8.33k|		uint32_t orig_jit_trace_num = EG(jit_trace_num);
  ------------------
  |  |   45|  8.33k|# define EG(v) (executor_globals.v)
  ------------------
 1013|       |
 1014|  8.33k|		zend_init_func_execute_data(call, &func->op_array, fci->retval);
 1015|  8.33k|		ZEND_OBSERVER_FCALL_BEGIN(call);
  ------------------
  |  |   48|  8.33k|#define ZEND_OBSERVER_FCALL_BEGIN(execute_data) do { \
  |  |   49|  8.33k|		if (ZEND_OBSERVER_ENABLED) { \
  |  |  ------------------
  |  |  |  |   46|  8.33k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (46:31): [True: 0, False: 8.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|			zend_observer_fcall_begin(execute_data); \
  |  |   51|      0|		} \
  |  |   52|  8.33k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (52:11): [Folded, False: 8.33k]
  |  |  ------------------
  ------------------
 1016|  8.33k|		zend_execute_ex(call);
 1017|  8.33k|		EG(jit_trace_num) = orig_jit_trace_num;
  ------------------
  |  |   45|  8.33k|# define EG(v) (executor_globals.v)
  ------------------
 1018|  8.33k|	} else {
 1019|  3.54k|		ZEND_ASSERT(func->type == ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|  3.54k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1019:3): [True: 0, False: 3.54k]
  |  Branch (1019:3): [True: 3.54k, False: 0]
  ------------------
 1020|  3.54k|		ZVAL_NULL(fci->retval);
  ------------------
  |  | 1059|  3.54k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  3.54k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  3.54k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.54k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  3.54k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  3.54k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3.54k]
  |  |  ------------------
  ------------------
 1021|  3.54k|		call->prev_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|  3.54k|# define EG(v) (executor_globals.v)
  ------------------
 1022|  3.54k|		EG(current_execute_data) = call;
  ------------------
  |  |   45|  3.54k|# define EG(v) (executor_globals.v)
  ------------------
 1023|  3.54k|#if ZEND_DEBUG
 1024|  3.54k|		bool should_throw = zend_internal_call_should_throw(func, call);
 1025|  3.54k|#endif
 1026|  3.54k|		ZEND_OBSERVER_FCALL_BEGIN(call);
  ------------------
  |  |   48|  3.54k|#define ZEND_OBSERVER_FCALL_BEGIN(execute_data) do { \
  |  |   49|  3.54k|		if (ZEND_OBSERVER_ENABLED) { \
  |  |  ------------------
  |  |  |  |   46|  3.54k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (46:31): [True: 0, False: 3.54k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|			zend_observer_fcall_begin(execute_data); \
  |  |   51|      0|		} \
  |  |   52|  3.54k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (52:11): [Folded, False: 3.54k]
  |  |  ------------------
  ------------------
 1027|  3.54k|		if (EXPECTED(zend_execute_internal == NULL)) {
  ------------------
  |  |  456|  3.54k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3.54k]
  |  |  ------------------
  ------------------
 1028|       |			/* saves one function call if zend_execute_internal is not used */
 1029|      0|			func->internal_function.handler(call, fci->retval);
 1030|  3.54k|		} else {
 1031|  3.54k|			zend_execute_internal(call, fci->retval);
 1032|  3.54k|		}
 1033|       |
 1034|  3.54k|#if ZEND_DEBUG
 1035|  3.54k|		if (!EG(exception) && call->func) {
  ------------------
  |  |   45|  7.09k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1035:7): [True: 1.54k, False: 1.99k]
  |  Branch (1035:25): [True: 1.54k, False: 0]
  ------------------
 1036|  1.54k|			if (should_throw) {
  ------------------
  |  Branch (1036:8): [True: 0, False: 1.54k]
  ------------------
 1037|      0|				zend_internal_call_arginfo_violation(call->func);
 1038|      0|			}
 1039|  1.54k|			if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|  1.54k|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (1039:8): [True: 1.47k, False: 70]
  ------------------
 1040|  1.47k|				bool result = zend_verify_internal_return_type(call->func, fci->retval);
 1041|  1.47k|				ZEND_ASSERT(result);
  ------------------
  |  |  112|  1.47k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1041:5): [True: 0, False: 1.47k]
  |  Branch (1041:5): [True: 1.47k, False: 0]
  ------------------
 1042|  1.47k|			}
 1043|  1.54k|			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  112|  1.54k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1043:4): [True: 0, False: 1.54k]
  |  Branch (1043:4): [True: 0, False: 1.54k]
  |  Branch (1043:4): [True: 1, False: 1.54k]
  |  Branch (1043:4): [True: 1.54k, False: 0]
  ------------------
 1044|  1.54k|				? Z_ISREF_P(fci->retval) : !Z_ISREF_P(fci->retval));
 1045|  1.54k|			ZEND_ASSERT(!(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
  ------------------
  |  |  112|  1.54k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1045:4): [True: 0, False: 1.54k]
  |  Branch (1045:4): [True: 1.54k, False: 0]
  ------------------
 1046|  1.54k|		}
 1047|  3.54k|#endif
 1048|  3.54k|		ZEND_OBSERVER_FCALL_END(call, fci->retval);
  ------------------
  |  |   54|  3.54k|#define ZEND_OBSERVER_FCALL_END(execute_data, return_value) do { \
  |  |   55|  3.54k|		if (ZEND_OBSERVER_ENABLED) { \
  |  |  ------------------
  |  |  |  |   46|  3.54k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (46:31): [True: 0, False: 3.54k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|			zend_observer_fcall_end(execute_data, return_value); \
  |  |   57|      0|		} \
  |  |   58|  3.54k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (58:11): [Folded, False: 3.54k]
  |  |  ------------------
  ------------------
 1049|  3.54k|		EG(current_execute_data) = call->prev_execute_data;
  ------------------
  |  |   45|  3.54k|# define EG(v) (executor_globals.v)
  ------------------
 1050|  3.54k|		zend_vm_stack_free_args(call);
 1051|  3.54k|		if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|  3.54k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3.54k]
  |  |  ------------------
  ------------------
 1052|      0|			zend_array_release(call->extra_named_params);
 1053|      0|		}
 1054|       |
 1055|  3.54k|		if (EG(exception)) {
  ------------------
  |  |   45|  3.54k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 15, False: 3.53k]
  |  |  ------------------
  ------------------
 1056|     15|			zval_ptr_dtor(fci->retval);
 1057|     15|			ZVAL_UNDEF(fci->retval);
  ------------------
  |  | 1055|     15|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     15|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     15|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1058|     15|		}
 1059|       |
 1060|       |		/* This flag is regularly checked while running user functions, but not internal
 1061|       |		 * So see whether interrupt flag was set while the function was running... */
 1062|  3.54k|		if (zend_atomic_bool_exchange_ex(&EG(vm_interrupt), false)) {
  ------------------
  |  |   45|  3.54k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1062:7): [True: 0, False: 3.54k]
  ------------------
 1063|      0|			if (zend_atomic_bool_load_ex(&EG(timed_out))) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1063:8): [True: 0, False: 0]
  ------------------
 1064|      0|				zend_timeout();
 1065|      0|			} else if (zend_interrupt_function) {
  ------------------
  |  Branch (1065:15): [True: 0, False: 0]
  ------------------
 1066|      0|				zend_interrupt_function(EG(current_execute_data));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1067|      0|			}
 1068|      0|		}
 1069|       |
 1070|  3.54k|		if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
  ------------------
  |  |  457|  3.54k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 3.54k]
  |  |  ------------------
  ------------------
 1071|      3|			OBJ_RELEASE(Z_OBJ(call->This));
  ------------------
  |  |   44|      3|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1072|      3|		}
 1073|  3.54k|	}
 1074|  11.8k|	EG(fake_scope) = orig_fake_scope;
  ------------------
  |  |   45|  11.8k|# define EG(v) (executor_globals.v)
  ------------------
 1075|       |
 1076|  11.8k|	zend_vm_stack_free_call_frame(call);
 1077|       |
 1078|  11.8k|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|  11.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.13k, False: 10.7k]
  |  |  ------------------
  ------------------
 1079|  1.13k|		if (UNEXPECTED(!EG(current_execute_data))) {
  ------------------
  |  |  457|  1.13k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 672, False: 464]
  |  |  ------------------
  ------------------
 1080|    672|			zend_throw_exception_internal(NULL);
 1081|    672|		} else if (EG(current_execute_data)->func &&
  ------------------
  |  |   45|    464|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1081:14): [True: 464, False: 0]
  ------------------
 1082|    464|		           ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) {
  ------------------
  |  | 1081|    464|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 170, False: 294]
  |  |  ------------------
  ------------------
 1083|    170|			zend_rethrow_exception(EG(current_execute_data));
  ------------------
  |  |   45|    170|# define EG(v) (executor_globals.v)
  ------------------
 1084|    170|		}
 1085|  1.13k|	}
 1086|       |
 1087|  11.8k|	return SUCCESS;
 1088|  11.8k|}
zend_call_known_function:
 1094|  10.6k|{
 1095|  10.6k|	zval retval;
 1096|  10.6k|	zend_fcall_info fci;
 1097|  10.6k|	zend_fcall_info_cache fcic;
 1098|       |
 1099|  10.6k|	ZEND_ASSERT(fn && "zend_function must be passed!");
  ------------------
  |  |  112|  10.6k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1099:2): [True: 0, False: 10.6k]
  |  Branch (1099:2): [True: 0, False: 0]
  |  Branch (1099:2): [True: 10.6k, False: 0]
  |  Branch (1099:2): [True: 10.6k, False: 0]
  ------------------
 1100|       |
 1101|  10.6k|	fci.size = sizeof(fci);
 1102|  10.6k|	fci.object = object;
 1103|  10.6k|	fci.retval = retval_ptr ? retval_ptr : &retval;
  ------------------
  |  Branch (1103:15): [True: 8.85k, False: 1.75k]
  ------------------
 1104|  10.6k|	fci.param_count = param_count;
 1105|  10.6k|	fci.params = params;
 1106|  10.6k|	fci.named_params = named_params;
 1107|  10.6k|	fci.consumed_args = 0;
 1108|  10.6k|	ZVAL_UNDEF(&fci.function_name); /* Unused */
  ------------------
  |  | 1055|  10.6k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  10.6k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  10.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  10.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  10.6k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  10.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 10.6k]
  |  |  ------------------
  ------------------
 1109|       |
 1110|  10.6k|	fcic.function_handler = fn;
 1111|  10.6k|	fcic.object = object;
 1112|  10.6k|	fcic.called_scope = called_scope;
 1113|       |
 1114|  10.6k|	zend_result result = zend_call_function(&fci, &fcic);
 1115|  10.6k|	if (UNEXPECTED(result == FAILURE)) {
  ------------------
  |  |  457|  10.6k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10.6k]
  |  |  ------------------
  ------------------
 1116|      0|		if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1116:7): [True: 0, False: 0]
  ------------------
 1117|      0|			zend_error_noreturn(E_CORE_ERROR, "Couldn't execute method %s%s%s",
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
 1118|      0|				fn->common.scope ? ZSTR_VAL(fn->common.scope->name) : "",
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1118:5): [True: 0, False: 0]
  ------------------
 1119|      0|				fn->common.scope ? "::" : "", ZSTR_VAL(fn->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1119:5): [True: 0, False: 0]
  ------------------
 1120|      0|		}
 1121|      0|	}
 1122|       |
 1123|  10.6k|	if (!retval_ptr) {
  ------------------
  |  Branch (1123:6): [True: 248, False: 10.3k]
  ------------------
 1124|    248|		zval_ptr_dtor(&retval);
 1125|    248|	}
 1126|  10.6k|}
zend_call_method_if_exists:
 1140|  5.97k|{
 1141|  5.97k|	zval zval_method;
 1142|  5.97k|	zend_fcall_info_cache fcc;
 1143|       |
 1144|  5.97k|	ZVAL_STR(&zval_method, method_name);
  ------------------
  |  | 1088|  5.97k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  5.97k|		zval *__z = (z);						\
  |  | 1090|  5.97k|		zend_string *__s = (s);					\
  |  | 1091|  5.97k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  5.97k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  5.97k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  5.97k|		/* interned strings support */			\
  |  | 1093|  5.97k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  5.97k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  5.97k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 5.97k]
  |  |  ------------------
  |  | 1094|  5.97k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  5.97k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  11.9k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  5.97k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  5.97k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  5.97k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  5.97k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 5.97k]
  |  |  ------------------
  ------------------
 1145|       |
 1146|  5.97k|	if (UNEXPECTED(!zend_is_callable_ex(&zval_method, object, IS_CALLABLE_SUPPRESS_DEPRECATIONS, NULL, &fcc, NULL))) {
  ------------------
  |  |  457|  5.97k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5.97k]
  |  |  ------------------
  ------------------
 1147|      1|		ZVAL_UNDEF(retval);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1148|      1|		return FAILURE;
 1149|      1|	}
 1150|       |
 1151|  5.97k|	zend_call_known_fcc(&fcc, retval, param_count, params, NULL);
 1152|       |	/* Need to free potential trampoline (__call/__callStatic) copied function handler before releasing the closure */
 1153|  5.97k|	zend_release_fcall_info_cache(&fcc);
 1154|  5.97k|	return SUCCESS;
 1155|  5.97k|}
zend_is_valid_class_name:
 1169|     81|ZEND_API bool zend_is_valid_class_name(const zend_string *name) {
 1170|    506|	for (size_t i = 0; i < ZSTR_LEN(name); i++) {
  ------------------
  |  |   68|    506|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1170:21): [True: 431, False: 75]
  ------------------
 1171|    431|		unsigned char c = ZSTR_VAL(name)[i];
  ------------------
  |  |   67|    431|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1172|    431|		if (!ZEND_BIT_TEST(valid_chars, c)) {
  ------------------
  |  |  521|    431|	(((bits)[(bit) / (sizeof((bits)[0])*8)] >> ((bit) & (sizeof((bits)[0])*8-1))) & 1)
  ------------------
  |  Branch (1172:7): [True: 6, False: 425]
  ------------------
 1173|      6|			return 0;
 1174|      6|		}
 1175|    431|	}
 1176|     75|	return 1;
 1177|     81|}
zend_lookup_class_ex:
 1180|  4.23k|{
 1181|  4.23k|	zend_class_entry *ce = NULL;
 1182|  4.23k|	zval *zv;
 1183|  4.23k|	zend_string *lc_name;
 1184|  4.23k|	zend_string *autoload_name;
 1185|  4.23k|	uint32_t ce_cache = 0;
 1186|       |
 1187|  4.23k|	if (ZSTR_HAS_CE_CACHE(name) && ZSTR_VALID_CE_CACHE(name)) {
  ------------------
  |  |  862|  8.47k|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|  4.23k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  4.23k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|  4.23k|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|  4.23k|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 1.86k, False: 2.36k]
  |  |  ------------------
  ------------------
              	if (ZSTR_HAS_CE_CACHE(name) && ZSTR_VALID_CE_CACHE(name)) {
  ------------------
  |  |  866|  1.86k|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  ------------------
  |  |  |  |  456|  1.86k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1.86k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1188|  1.86k|		ce_cache = GC_REFCOUNT(name);
  ------------------
  |  |  716|  1.86k|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1189|  1.86k|		ce = GET_CE_CACHE(ce_cache);
  ------------------
  |  |  879|  1.86k|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  ------------------
  |  |  |  |   35|  1.86k|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  1.86k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1190|  1.86k|		if (EXPECTED(ce)) {
  ------------------
  |  |  456|  1.86k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 137, False: 1.72k]
  |  |  ------------------
  ------------------
 1191|    137|			return ce;
 1192|    137|		}
 1193|  1.86k|	}
 1194|       |
 1195|  4.09k|	if (key) {
  ------------------
  |  Branch (1195:6): [True: 2.34k, False: 1.75k]
  ------------------
 1196|  2.34k|		lc_name = key;
 1197|  2.34k|	} else {
 1198|  1.75k|		if (!ZSTR_LEN(name)) {
  ------------------
  |  |   68|  1.75k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1198:7): [True: 1, False: 1.75k]
  ------------------
 1199|      1|			return NULL;
 1200|      1|		}
 1201|       |
 1202|  1.75k|		if (ZSTR_VAL(name)[0] == '\\') {
  ------------------
  |  |   67|  1.75k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1202:7): [True: 4, False: 1.75k]
  ------------------
 1203|      4|			lc_name = zend_string_alloc(ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1204|      4|			zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1205|  1.75k|		} else {
 1206|  1.75k|			lc_name = zend_string_tolower(name);
 1207|  1.75k|		}
 1208|  1.75k|	}
 1209|       |
 1210|  4.09k|	zv = zend_hash_find(EG(class_table), lc_name);
  ------------------
  |  |   45|  4.09k|# define EG(v) (executor_globals.v)
  ------------------
 1211|  4.09k|	if (zv) {
  ------------------
  |  Branch (1211:6): [True: 3.53k, False: 558]
  ------------------
 1212|  3.53k|		if (!key) {
  ------------------
  |  Branch (1212:7): [True: 1.28k, False: 2.25k]
  ------------------
 1213|  1.28k|			zend_string_release_ex(lc_name, 0);
 1214|  1.28k|		}
 1215|  3.53k|		ce = (zend_class_entry*)Z_PTR_P(zv);
  ------------------
  |  | 1053|  3.53k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  3.53k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1216|  3.53k|		if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_LINKED))) {
  ------------------
  |  |  457|  3.53k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 33, False: 3.50k]
  |  |  ------------------
  ------------------
 1217|     33|			if ((flags & ZEND_FETCH_CLASS_ALLOW_UNLINKED) ||
  ------------------
  |  | 1053|     33|#define ZEND_FETCH_CLASS_ALLOW_UNLINKED 0x0400
  ------------------
  |  Branch (1217:8): [True: 29, False: 4]
  ------------------
 1218|      4|				((flags & ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED) &&
  ------------------
  |  | 1054|      4|#define ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED 0x0800
  ------------------
  |  Branch (1218:6): [True: 3, False: 1]
  ------------------
 1219|     29|					(ce->ce_flags & ZEND_ACC_NEARLY_LINKED))) {
  ------------------
  |  |  323|      3|#define ZEND_ACC_NEARLY_LINKED           (1 << 20) /*  X  |     |     |     */
  ------------------
  |  Branch (1219:6): [True: 0, False: 3]
  ------------------
 1220|     29|				if (!CG(unlinked_uses)) {
  ------------------
  |  |   35|     29|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1220:9): [True: 9, False: 20]
  ------------------
 1221|      9|					ALLOC_HASHTABLE(CG(unlinked_uses));
  ------------------
  |  |  232|      9|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      9|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1222|      9|					zend_hash_init(CG(unlinked_uses), 0, NULL, NULL, 0);
  ------------------
  |  |  111|      9|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1223|      9|				}
 1224|     29|				zend_hash_index_add_empty_element(CG(unlinked_uses), (zend_ulong)(uintptr_t)ce);
  ------------------
  |  |   35|     29|# define CG(v) (compiler_globals.v)
  ------------------
 1225|     29|				return ce;
 1226|     29|			}
 1227|      4|			return NULL;
 1228|     33|		}
 1229|       |		/* Don't populate CE_CACHE for mutable classes during compilation.
 1230|       |		 * The class may be freed while persisting. */
 1231|  3.50k|		if (ce_cache &&
  ------------------
  |  Branch (1231:7): [True: 1.72k, False: 1.77k]
  ------------------
 1232|  1.72k|				(!CG(in_compilation) || (ce->ce_flags & ZEND_ACC_IMMUTABLE))) {
  ------------------
  |  |   35|  3.45k|# define CG(v) (compiler_globals.v)
  ------------------
              				(!CG(in_compilation) || (ce->ce_flags & ZEND_ACC_IMMUTABLE))) {
  ------------------
  |  |  241|     21|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (1232:6): [True: 1.70k, False: 21]
  |  Branch (1232:29): [True: 0, False: 21]
  ------------------
 1233|  1.70k|			SET_CE_CACHE(ce_cache, ce);
  ------------------
  |  |  881|  1.70k|#define SET_CE_CACHE(ce_cache, ce) do { \
  |  |  882|  1.70k|		*((zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache)) = ce; \
  |  |  ------------------
  |  |  |  |   35|  1.70k|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|  1.70k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  883|  1.70k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (883:11): [Folded, False: 1.70k]
  |  |  ------------------
  ------------------
 1234|  1.70k|		}
 1235|  3.50k|		return ce;
 1236|  3.53k|	}
 1237|       |
 1238|       |	/* The compiler is not-reentrant. Make sure we autoload only during run-time. */
 1239|    558|	if ((flags & ZEND_FETCH_CLASS_NO_AUTOLOAD) || zend_is_compiling()) {
  ------------------
  |  | 1050|    558|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  |  Branch (1239:6): [True: 421, False: 137]
  |  Branch (1239:48): [True: 0, False: 137]
  ------------------
 1240|    421|		if (!key) {
  ------------------
  |  Branch (1240:7): [True: 404, False: 17]
  ------------------
 1241|    404|			zend_string_release_ex(lc_name, 0);
 1242|    404|		}
 1243|    421|		return NULL;
 1244|    421|	}
 1245|       |
 1246|    137|	if (!zend_autoload) {
  ------------------
  |  Branch (1246:6): [True: 0, False: 137]
  ------------------
 1247|      0|		if (!key) {
  ------------------
  |  Branch (1247:7): [True: 0, False: 0]
  ------------------
 1248|      0|			zend_string_release_ex(lc_name, 0);
 1249|      0|		}
 1250|      0|		return NULL;
 1251|      0|	}
 1252|       |
 1253|       |	/* Verify class name before passing it to the autoloader. */
 1254|    137|	if (!key && !ZSTR_HAS_CE_CACHE(name) && !zend_is_valid_class_name(name)) {
  ------------------
  |  |  862|    207|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|     70|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     70|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|     70|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|     70|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1254:6): [True: 70, False: 67]
  |  Branch (1254:14): [True: 70, False: 0]
  |  Branch (1254:42): [True: 6, False: 64]
  ------------------
 1255|      6|		zend_string_release_ex(lc_name, 0);
 1256|      6|		return NULL;
 1257|      6|	}
 1258|       |
 1259|    131|	if (zend_hash_add_empty_element(&EG(autoload_current_classnames), lc_name) == NULL) {
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1259:6): [True: 0, False: 131]
  ------------------
 1260|      0|		if (!key) {
  ------------------
  |  Branch (1260:7): [True: 0, False: 0]
  ------------------
 1261|      0|			zend_string_release_ex(lc_name, 0);
 1262|      0|		}
 1263|      0|		return NULL;
 1264|      0|	}
 1265|       |
 1266|    131|	if (ZSTR_VAL(name)[0] == '\\') {
  ------------------
  |  |   67|    131|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1266:6): [True: 2, False: 129]
  ------------------
 1267|      2|		autoload_name = zend_string_init(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		autoload_name = zend_string_init(ZSTR_VAL(name) + 1, ZSTR_LEN(name) - 1, 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1268|    129|	} else {
 1269|    129|		autoload_name = zend_string_copy(name);
 1270|    129|	}
 1271|       |
 1272|    131|	zend_string *previous_filename = EG(filename_override);
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1273|    131|	zend_long previous_lineno = EG(lineno_override);
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1274|    131|	EG(filename_override) = NULL;
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1275|    131|	EG(lineno_override) = -1;
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1276|    131|	ce = zend_autoload(autoload_name, lc_name);
 1277|    131|	EG(filename_override) = previous_filename;
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1278|    131|	EG(lineno_override) = previous_lineno;
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1279|       |
 1280|    131|	zend_string_release_ex(autoload_name, 0);
 1281|    131|	zend_hash_del(&EG(autoload_current_classnames), lc_name);
  ------------------
  |  |   45|    131|# define EG(v) (executor_globals.v)
  ------------------
 1282|       |
 1283|    131|	if (!key) {
  ------------------
  |  Branch (1283:6): [True: 64, False: 67]
  ------------------
 1284|     64|		zend_string_release_ex(lc_name, 0);
 1285|     64|	}
 1286|    131|	if (ce) {
  ------------------
  |  Branch (1286:6): [True: 2, False: 129]
  ------------------
 1287|      2|		ZEND_ASSERT(!CG(in_compilation));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1287:3): [True: 0, False: 2]
  |  Branch (1287:3): [True: 2, False: 0]
  ------------------
 1288|      2|		if (ce_cache) {
  ------------------
  |  Branch (1288:7): [True: 0, False: 2]
  ------------------
 1289|      0|			SET_CE_CACHE(ce_cache, ce);
  ------------------
  |  |  881|      0|#define SET_CE_CACHE(ce_cache, ce) do { \
  |  |  882|      0|		*((zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache)) = ce; \
  |  |  ------------------
  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  883|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (883:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1290|      0|		}
 1291|      2|	}
 1292|    131|	return ce;
 1293|    131|}
zend_lookup_class:
 1297|    296|{
 1298|       |	return zend_lookup_class_ex(name, NULL, 0);
 1299|    296|}
zend_get_called_scope:
 1303|  30.9k|{
 1304|  30.9k|	while (ex) {
  ------------------
  |  Branch (1304:9): [True: 13, False: 30.9k]
  ------------------
 1305|     13|		if (Z_TYPE(ex->This) == IS_OBJECT) {
  ------------------
  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(ex->This) == IS_OBJECT) {
  ------------------
  |  |  614|     13|#define IS_OBJECT					8
  ------------------
  |  Branch (1305:7): [True: 3, False: 10]
  ------------------
 1306|      3|			return Z_OBJCE(ex->This);
  ------------------
  |  | 1011|      3|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1307|     10|		} else if (Z_CE(ex->This)) {
  ------------------
  |  | 1046|     10|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  |  |  |  Branch (1046:24): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 1308|     10|			return Z_CE(ex->This);
  ------------------
  |  | 1046|     10|#define Z_CE(zval)					(zval).value.ce
  ------------------
 1309|     10|		} else if (ex->func) {
  ------------------
  |  Branch (1309:14): [True: 0, False: 0]
  ------------------
 1310|      0|			if (ex->func->type != ZEND_INTERNAL_FUNCTION || ex->func->common.scope) {
  ------------------
  |  Branch (1310:8): [True: 0, False: 0]
  |  Branch (1310:52): [True: 0, False: 0]
  ------------------
 1311|      0|				return NULL;
 1312|      0|			}
 1313|      0|		}
 1314|      0|		ex = ex->prev_execute_data;
 1315|      0|	}
 1316|  30.9k|	return NULL;
 1317|  30.9k|}
zend_get_this_object:
 1321|  30.9k|{
 1322|  30.9k|	while (ex) {
  ------------------
  |  Branch (1322:9): [True: 4, False: 30.9k]
  ------------------
 1323|      4|		if (Z_TYPE(ex->This) == IS_OBJECT) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(ex->This) == IS_OBJECT) {
  ------------------
  |  |  614|      4|#define IS_OBJECT					8
  ------------------
  |  Branch (1323:7): [True: 4, False: 0]
  ------------------
 1324|      4|			return Z_OBJ(ex->This);
  ------------------
  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1325|      4|		} else if (ex->func) {
  ------------------
  |  Branch (1325:14): [True: 0, False: 0]
  ------------------
 1326|      0|			if (ex->func->type != ZEND_INTERNAL_FUNCTION || ex->func->common.scope) {
  ------------------
  |  Branch (1326:8): [True: 0, False: 0]
  |  Branch (1326:52): [True: 0, False: 0]
  ------------------
 1327|      0|				return NULL;
 1328|      0|			}
 1329|      0|		}
 1330|      0|		ex = ex->prev_execute_data;
 1331|      0|	}
 1332|  30.9k|	return NULL;
 1333|  30.9k|}
zend_set_timeout:
 1650|  33.5k|{
 1651|       |
 1652|  33.5k|	EG(timeout_seconds) = seconds;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1653|  33.5k|	zend_set_timeout_ex(seconds, reset_signals);
 1654|  33.5k|	zend_atomic_bool_store_ex(&EG(timed_out), false);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1655|  33.5k|}
zend_unset_timeout:
 1659|  33.5k|{
 1660|       |#ifdef ZEND_WIN32
 1661|       |	if (NULL != tq_timer) {
 1662|       |		if (!DeleteTimerQueueTimer(NULL, tq_timer, INVALID_HANDLE_VALUE)) {
 1663|       |			zend_atomic_bool_store_ex(&EG(timed_out), false);
 1664|       |			tq_timer = NULL;
 1665|       |			zend_error_noreturn(E_ERROR, "Could not delete queued timer");
 1666|       |		}
 1667|       |		tq_timer = NULL;
 1668|       |	}
 1669|       |#elif defined(ZEND_MAX_EXECUTION_TIMERS)
 1670|       |	if (EG(timeout_seconds)) {
 1671|       |		zend_max_execution_timer_settime(0);
 1672|       |	}
 1673|       |#elif defined(HAVE_SETITIMER)
 1674|  33.5k|	if (EG(timeout_seconds)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 1675|      0|		struct itimerval no_timeout;
 1676|       |
 1677|      0|		no_timeout.it_value.tv_sec = no_timeout.it_value.tv_usec = no_timeout.it_interval.tv_sec = no_timeout.it_interval.tv_usec = 0;
 1678|       |
 1679|       |# if defined(__CYGWIN__) || defined(__PASE__) || (defined(__aarch64__) && defined(__APPLE__))
 1680|       |		setitimer(ITIMER_REAL, &no_timeout, NULL);
 1681|       |# else
 1682|      0|		setitimer(ITIMER_PROF, &no_timeout, NULL);
 1683|      0|# endif
 1684|      0|	}
 1685|  33.5k|#endif
 1686|  33.5k|	zend_atomic_bool_store_ex(&EG(timed_out), false);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1687|  33.5k|}
zend_fetch_class:
 1713|    369|{
 1714|    369|	zend_class_entry *ce, *scope;
 1715|    369|	uint32_t fetch_sub_type = fetch_type & ZEND_FETCH_CLASS_MASK;
  ------------------
  |  | 1049|    369|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
 1716|       |
 1717|    373|check_fetch_type:
 1718|    373|	switch (fetch_sub_type) {
  ------------------
  |  Branch (1718:10): [True: 54, False: 319]
  ------------------
 1719|     25|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|     25|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (1719:3): [True: 25, False: 348]
  ------------------
 1720|     25|			scope = zend_get_executed_scope();
 1721|     25|			if (UNEXPECTED(!scope)) {
  ------------------
  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 24]
  |  |  ------------------
  ------------------
 1722|      1|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"self\" when no class scope is active");
 1723|      1|			}
 1724|     25|			return scope;
 1725|      5|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      5|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (1725:3): [True: 5, False: 368]
  ------------------
 1726|      5|			scope = zend_get_executed_scope();
 1727|      5|			if (UNEXPECTED(!scope)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1728|      0|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"parent\" when no class scope is active");
 1729|      0|				return NULL;
 1730|      0|			}
 1731|      5|			if (UNEXPECTED(!scope->parent)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1732|      0|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"parent\" when current class scope has no parent");
 1733|      0|			}
 1734|      5|			return scope->parent;
 1735|      5|		case ZEND_FETCH_CLASS_STATIC:
  ------------------
  |  | 1045|      5|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (1735:3): [True: 5, False: 368]
  ------------------
 1736|      5|			ce = zend_get_called_scope(EG(current_execute_data));
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 1737|      5|			if (UNEXPECTED(!ce)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1738|      0|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"static\" when no class scope is active");
 1739|      0|				return NULL;
 1740|      0|			}
 1741|      5|			return ce;
 1742|     19|		case ZEND_FETCH_CLASS_AUTO: {
  ------------------
  |  | 1046|     19|#define ZEND_FETCH_CLASS_AUTO		4
  ------------------
  |  Branch (1742:3): [True: 19, False: 354]
  ------------------
 1743|     19|				fetch_sub_type = zend_get_class_fetch_type(class_name);
 1744|     19|				if (UNEXPECTED(fetch_sub_type != ZEND_FETCH_CLASS_DEFAULT)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 15]
  |  |  ------------------
  ------------------
 1745|      4|					goto check_fetch_type;
 1746|      4|				}
 1747|     19|			}
 1748|     15|			break;
 1749|    373|	}
 1750|       |
 1751|    334|	ce = zend_lookup_class_ex(class_name, NULL, fetch_type);
 1752|    334|	if (!ce) {
  ------------------
  |  Branch (1752:6): [True: 4, False: 330]
  ------------------
 1753|      4|		report_class_fetch_error(class_name, fetch_type);
 1754|      4|		return NULL;
 1755|      4|	}
 1756|    330|	return ce;
 1757|    334|}
zend_fetch_class_with_scope:
 1762|     15|{
 1763|     15|	zend_class_entry *ce;
 1764|     15|	switch (fetch_type & ZEND_FETCH_CLASS_MASK) {
  ------------------
  |  | 1049|     15|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
 1765|      0|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (1765:3): [True: 0, False: 15]
  ------------------
 1766|      0|			if (UNEXPECTED(!scope)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1767|      0|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"self\" when no class scope is active");
 1768|      0|			}
 1769|      0|			return scope;
 1770|      0|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (1770:3): [True: 0, False: 15]
  ------------------
 1771|      0|			if (UNEXPECTED(!scope)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1772|      0|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"parent\" when no class scope is active");
 1773|      0|				return NULL;
 1774|      0|			}
 1775|      0|			if (UNEXPECTED(!scope->parent)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1776|      0|				zend_throw_or_error(fetch_type, NULL, "Cannot access \"parent\" when current class scope has no parent");
 1777|      0|			}
 1778|      0|			return scope->parent;
 1779|     15|		case 0:
  ------------------
  |  Branch (1779:3): [True: 15, False: 0]
  ------------------
 1780|     15|			break;
 1781|       |		/* Other fetch types are not supported by this function. */
 1782|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1782:3): [True: 0, False: 15]
  |  Branch (1782:12): [Folded, False: 0]
  |  Branch (1782:12): [Folded, False: 0]
  ------------------
 1783|     15|	}
 1784|       |
 1785|     15|	ce = zend_lookup_class_ex(class_name, NULL, fetch_type);
 1786|     15|	if (!ce) {
  ------------------
  |  Branch (1786:6): [True: 3, False: 12]
  ------------------
 1787|      3|		report_class_fetch_error(class_name, fetch_type);
 1788|      3|		return NULL;
 1789|      3|	}
 1790|     12|	return ce;
 1791|     15|}
zend_fetch_class_by_name:
 1794|  2.42k|{
 1795|  2.42k|	zend_class_entry *ce = zend_lookup_class_ex(class_name, key, fetch_type);
 1796|  2.42k|	if (!ce) {
  ------------------
  |  Branch (1796:6): [True: 77, False: 2.34k]
  ------------------
 1797|     77|		report_class_fetch_error(class_name, fetch_type);
 1798|     77|		return NULL;
 1799|     77|	}
 1800|  2.34k|	return ce;
 1801|  2.42k|}
zend_rebuild_symbol_table:
 1811|    123|{
 1812|    123|	zend_execute_data *ex;
 1813|    123|	zend_array *symbol_table;
 1814|       |
 1815|       |	/* Search for last called user function */
 1816|    123|	ex = EG(current_execute_data);
  ------------------
  |  |   45|    123|# define EG(v) (executor_globals.v)
  ------------------
 1817|    134|	while (ex && (!ex->func || !ZEND_USER_CODE(ex->func->common.type))) {
  ------------------
  |  | 1081|    134|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (1817:9): [True: 134, False: 0]
  |  Branch (1817:16): [True: 0, False: 134]
  |  Branch (1817:29): [True: 11, False: 123]
  ------------------
 1818|     11|		ex = ex->prev_execute_data;
 1819|     11|	}
 1820|    123|	if (!ex) {
  ------------------
  |  Branch (1820:6): [True: 0, False: 123]
  ------------------
 1821|      0|		return NULL;
 1822|      0|	}
 1823|    123|	if (ZEND_CALL_INFO(ex) & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  687|    123|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|    123|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ZEND_CALL_INFO(ex) & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  666|    123|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (1823:6): [True: 4, False: 119]
  ------------------
 1824|      4|		return ex->symbol_table;
 1825|      4|	}
 1826|       |
 1827|    119|	ZEND_ADD_CALL_FLAG(ex, ZEND_CALL_HAS_SYMBOL_TABLE);
  ------------------
  |  |  703|    119|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|    119|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|    119|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|    119|		call_info |= (flag); \
  |  |  |  |  697|    119|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 119]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|    119|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 119]
  |  |  ------------------
  ------------------
 1828|    119|	if (EG(symtable_cache_ptr) > EG(symtable_cache)) {
  ------------------
  |  |   45|    119|# define EG(v) (executor_globals.v)
  ------------------
              	if (EG(symtable_cache_ptr) > EG(symtable_cache)) {
  ------------------
  |  |   45|    119|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1828:6): [True: 4, False: 115]
  ------------------
 1829|      4|		symbol_table = ex->symbol_table = *(--EG(symtable_cache_ptr));
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 1830|      4|		if (!ex->func->op_array.last_var) {
  ------------------
  |  Branch (1830:7): [True: 3, False: 1]
  ------------------
 1831|      3|			return symbol_table;
 1832|      3|		}
 1833|      1|		zend_hash_extend(symbol_table, ex->func->op_array.last_var, 0);
 1834|    115|	} else {
 1835|    115|		symbol_table = ex->symbol_table = zend_new_array(ex->func->op_array.last_var);
  ------------------
  |  |  342|    115|	_zend_new_array(size)
  ------------------
 1836|    115|		if (!ex->func->op_array.last_var) {
  ------------------
  |  Branch (1836:7): [True: 9, False: 106]
  ------------------
 1837|      9|			return symbol_table;
 1838|      9|		}
 1839|    106|		zend_hash_real_init_mixed(symbol_table);
 1840|       |		/*printf("Cache miss!  Initialized %x\n", EG(active_symbol_table));*/
 1841|    106|	}
 1842|    107|	if (EXPECTED(ex->func->op_array.last_var)) {
  ------------------
  |  |  456|    107|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 107, False: 0]
  |  |  ------------------
  ------------------
 1843|    107|		zend_string **str = ex->func->op_array.vars;
 1844|    107|		zend_string **end = str + ex->func->op_array.last_var;
 1845|    107|		zval *var = ZEND_CALL_VAR_NUM(ex, 0);
  ------------------
  |  |  725|    107|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|    107|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1846|       |
 1847|    121|		do {
 1848|    121|			_zend_hash_append_ind(symbol_table, *str, var);
 1849|    121|			str++;
 1850|    121|			var++;
 1851|    121|		} while (str != end);
  ------------------
  |  Branch (1851:12): [True: 14, False: 107]
  ------------------
 1852|    107|	}
 1853|    107|	return symbol_table;
 1854|    119|}
zend_attach_symbol_table:
 1858|  2.44k|{
 1859|  2.44k|	const zend_op_array *op_array = &execute_data->func->op_array;
 1860|  2.44k|	HashTable *ht = execute_data->symbol_table;
 1861|       |
 1862|       |	/* copy real values from symbol table into CV slots and create
 1863|       |	   INDIRECT references to CV in symbol table  */
 1864|  2.44k|	if (EXPECTED(op_array->last_var)) {
  ------------------
  |  |  456|  2.44k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.44k, False: 0]
  |  |  ------------------
  ------------------
 1865|  2.44k|		zend_string **str = op_array->vars;
 1866|  2.44k|		zend_string **end = str + op_array->last_var;
 1867|  2.44k|		zval *var = EX_VAR_NUM(0);
  ------------------
  |  |  756|  2.44k|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|  2.44k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  2.44k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1868|       |
 1869|  4.36k|		do {
 1870|  4.36k|			zval *zv = zend_hash_find_known_hash(ht, *str);
 1871|       |
 1872|  4.36k|			if (zv) {
  ------------------
  |  Branch (1872:8): [True: 3, False: 4.35k]
  ------------------
 1873|      3|				if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|      3|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1873:9): [True: 2, False: 1]
  ------------------
 1874|      2|					const zval *val = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      2|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      2|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1875|       |
 1876|      2|					ZVAL_COPY_VALUE(var, val);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1877|      2|				} else {
 1878|      1|					ZVAL_COPY_VALUE(var, zv);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1879|      1|				}
 1880|  4.35k|			} else {
 1881|  4.35k|				ZVAL_UNDEF(var);
  ------------------
  |  | 1055|  4.35k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  4.35k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  4.35k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.35k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  4.35k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  4.35k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4.35k]
  |  |  ------------------
  ------------------
 1882|  4.35k|				zv = zend_hash_add_new(ht, *str, var);
 1883|  4.35k|			}
 1884|  4.36k|			ZVAL_INDIRECT(zv, var);
  ------------------
  |  | 1246|  4.36k|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|  4.36k|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|  4.36k|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|  4.36k|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|  4.36k|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|  4.36k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.36k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|  4.36k|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|  4.36k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 4.36k]
  |  |  ------------------
  ------------------
 1885|  4.36k|			str++;
 1886|  4.36k|			var++;
 1887|  4.36k|		} while (str != end);
  ------------------
  |  Branch (1887:12): [True: 1.91k, False: 2.44k]
  ------------------
 1888|  2.44k|	}
 1889|  2.44k|}
zend_detach_symbol_table:
 1893|  2.21k|{
 1894|  2.21k|	const zend_op_array *op_array = &execute_data->func->op_array;
 1895|  2.21k|	HashTable *ht = execute_data->symbol_table;
 1896|       |
 1897|       |	/* copy real values from CV slots into symbol table */
 1898|  2.21k|	if (EXPECTED(op_array->last_var)) {
  ------------------
  |  |  456|  2.21k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.21k, False: 0]
  |  |  ------------------
  ------------------
 1899|  2.21k|		zend_string **str = op_array->vars;
 1900|  2.21k|		zend_string **end = str + op_array->last_var;
 1901|  2.21k|		zval *var = EX_VAR_NUM(0);
  ------------------
  |  |  756|  2.21k|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|  2.21k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  2.21k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1902|       |
 1903|  3.68k|		do {
 1904|  3.68k|			if (Z_TYPE_P(var) == IS_UNDEF) {
  ------------------
  |  |  669|  3.68k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  3.68k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(var) == IS_UNDEF) {
  ------------------
  |  |  606|  3.68k|#define IS_UNDEF					0
  ------------------
  |  Branch (1904:8): [True: 1.19k, False: 2.48k]
  ------------------
 1905|  1.19k|				zend_hash_del(ht, *str);
 1906|  2.48k|			} else {
 1907|  2.48k|				zend_hash_update(ht, *str, var);
 1908|  2.48k|				ZVAL_UNDEF(var);
  ------------------
  |  | 1055|  2.48k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  2.48k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  2.48k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.48k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  2.48k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  2.48k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2.48k]
  |  |  ------------------
  ------------------
 1909|  2.48k|			}
 1910|  3.68k|			str++;
 1911|  3.68k|			var++;
 1912|  3.68k|		} while (str != end);
  ------------------
  |  Branch (1912:12): [True: 1.46k, False: 2.21k]
  ------------------
 1913|  2.21k|	}
 1914|  2.21k|}
zend_execute_API.c:zend_extension_activator:
   91|  33.5k|{
   92|  33.5k|	if (extension->activate) {
  ------------------
  |  Branch (92:6): [True: 33.5k, False: 0]
  ------------------
   93|  33.5k|		extension->activate();
   94|  33.5k|	}
   95|  33.5k|}
zend_execute_API.c:zend_unclean_zval_ptr_dtor:
  223|  4.58k|{
  224|  4.58k|	if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|  4.58k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  4.58k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|  4.58k|#define IS_INDIRECT             	12
  ------------------
  |  Branch (224:6): [True: 679, False: 3.90k]
  ------------------
  225|    679|		zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|    679|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|    679|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  226|    679|	}
  227|  4.58k|	i_zval_ptr_dtor(zv);
  228|  4.58k|}
zend_execute_API.c:zval_call_destructor:
  210|   140k|{
  211|   140k|	if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|   140k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|   140k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|   140k|#define IS_INDIRECT             	12
  ------------------
  |  Branch (211:6): [True: 683, False: 139k]
  ------------------
  212|    683|		zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|    683|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|    683|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  213|    683|	}
  214|   140k|	if (Z_TYPE_P(zv) == IS_OBJECT && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  |  669|   140k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|   140k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_OBJECT && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  |  614|   281k|#define IS_OBJECT					8
  ------------------
              	if (Z_TYPE_P(zv) == IS_OBJECT && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  | 1275|    743|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (214:6): [True: 743, False: 139k]
  |  Branch (214:35): [True: 674, False: 69]
  ------------------
  215|    674|		return ZEND_HASH_APPLY_REMOVE;
  ------------------
  |  |  149|    674|#define ZEND_HASH_APPLY_REMOVE				1<<0
  ------------------
  216|   139k|	} else {
  217|   139k|		return ZEND_HASH_APPLY_KEEP;
  ------------------
  |  |  148|   139k|#define ZEND_HASH_APPLY_KEEP				0
  ------------------
  218|   139k|	}
  219|   140k|}
zend_execute_API.c:zend_extension_deactivator:
   99|  33.5k|{
  100|  33.5k|	if (extension->deactivate) {
  ------------------
  |  Branch (100:6): [True: 33.5k, False: 0]
  ------------------
  101|  33.5k|		extension->deactivate();
  102|  33.5k|	}
  103|  33.5k|}
zend_execute_API.c:zend_set_timeout_ex:
 1556|  33.5k|{
 1557|       |#ifdef ZEND_WIN32
 1558|       |	zend_executor_globals *eg;
 1559|       |
 1560|       |	if (!seconds) {
 1561|       |		return;
 1562|       |	}
 1563|       |
 1564|       |	/* Don't use ChangeTimerQueueTimer() as it will not restart an expired
 1565|       |	 * timer, so we could end up with just an ignored timeout. Instead
 1566|       |	 * delete and recreate. */
 1567|       |	if (NULL != tq_timer) {
 1568|       |		if (!DeleteTimerQueueTimer(NULL, tq_timer, INVALID_HANDLE_VALUE)) {
 1569|       |			tq_timer = NULL;
 1570|       |			zend_error_noreturn(E_ERROR, "Could not delete queued timer");
 1571|       |		}
 1572|       |		tq_timer = NULL;
 1573|       |	}
 1574|       |
 1575|       |	/* XXX passing NULL means the default timer queue provided by the system is used */
 1576|       |	eg = ZEND_MODULE_GLOBALS_BULK(executor);
 1577|       |	if (!CreateTimerQueueTimer(&tq_timer, NULL, (WAITORTIMERCALLBACK)tq_timer_cb, (VOID*)eg, seconds*1000, 0, WT_EXECUTEONLYONCE)) {
 1578|       |		tq_timer = NULL;
 1579|       |		zend_error_noreturn(E_ERROR, "Could not queue new timer");
 1580|       |	}
 1581|       |#elif defined(ZEND_MAX_EXECUTION_TIMERS)
 1582|       |	if (seconds > 0) {
 1583|       |		zend_max_execution_timer_settime(seconds);
 1584|       |	}
 1585|       |
 1586|       |	if (reset_signals) {
 1587|       |		sigset_t sigset;
 1588|       |		struct sigaction act;
 1589|       |
 1590|       |		act.sa_sigaction = zend_timeout_handler;
 1591|       |		sigemptyset(&act.sa_mask);
 1592|       |		act.sa_flags = SA_ONSTACK | SA_SIGINFO;
 1593|       |		sigaction(SIGRTMIN, &act, NULL);
 1594|       |		sigemptyset(&sigset);
 1595|       |		sigaddset(&sigset, SIGRTMIN);
 1596|       |		sigprocmask(SIG_UNBLOCK, &sigset, NULL);
 1597|       |	}
 1598|       |#elif defined(HAVE_SETITIMER)
 1599|       |	{
 1600|  33.5k|		struct itimerval t_r;		/* timeout requested */
 1601|  33.5k|		int signo;
 1602|       |
 1603|       |		// Prevent EINVAL error
 1604|  33.5k|		if (seconds < 0 || seconds > 999999999) {
  ------------------
  |  Branch (1604:7): [True: 0, False: 33.5k]
  |  Branch (1604:22): [True: 0, False: 33.5k]
  ------------------
 1605|      0|			seconds = 0;
 1606|      0|		}
 1607|       |
 1608|  33.5k|		if(seconds) {
  ------------------
  |  Branch (1608:6): [True: 0, False: 33.5k]
  ------------------
 1609|      0|			t_r.it_value.tv_sec = seconds;
 1610|      0|			t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0;
 1611|       |
 1612|       |# if defined(__CYGWIN__) || defined(__PASE__) || (defined(__aarch64__) && defined(__APPLE__))
 1613|       |			// ITIMER_PROF is broken in Apple Silicon system with MacOS >= 14
 1614|       |			// See https://openradar.appspot.com/radar?id=5583058442911744.
 1615|       |			setitimer(ITIMER_REAL, &t_r, NULL);
 1616|       |		}
 1617|       |		signo = SIGALRM;
 1618|       |# else
 1619|      0|			setitimer(ITIMER_PROF, &t_r, NULL);
 1620|      0|		}
 1621|  33.5k|		signo = SIGPROF;
 1622|  33.5k|# endif
 1623|       |
 1624|  33.5k|		if (reset_signals) {
  ------------------
  |  Branch (1624:7): [True: 33.5k, False: 0]
  ------------------
 1625|  33.5k|# ifdef ZEND_SIGNALS
 1626|  33.5k|			zend_signal(signo, zend_timeout_handler);
 1627|       |# else
 1628|       |			sigset_t sigset;
 1629|       |#  ifdef HAVE_SIGACTION
 1630|       |			struct sigaction act;
 1631|       |
 1632|       |			act.sa_handler = zend_timeout_handler;
 1633|       |			sigemptyset(&act.sa_mask);
 1634|       |			act.sa_flags = SA_ONSTACK | SA_RESETHAND | SA_NODEFER;
 1635|       |			sigaction(signo, &act, NULL);
 1636|       |#  else
 1637|       |			signal(signo, zend_timeout_handler);
 1638|       |#  endif /* HAVE_SIGACTION */
 1639|       |			sigemptyset(&sigset);
 1640|       |			sigaddset(&sigset, signo);
 1641|       |			sigprocmask(SIG_UNBLOCK, &sigset, NULL);
 1642|       |# endif /* ZEND_SIGNALS */
 1643|  33.5k|		}
 1644|  33.5k|	}
 1645|  33.5k|#endif /* HAVE_SETITIMER */
 1646|  33.5k|}
zend_execute_API.c:zend_throw_or_error:
  232|     67|{
  233|     67|	va_list va;
  234|     67|	char *message = NULL;
  235|       |
  236|     67|	va_start(va, format);
  237|     67|	zend_vspprintf(&message, 0, format, va);
  238|       |
  239|     67|	if (fetch_type & ZEND_FETCH_CLASS_EXCEPTION) {
  ------------------
  |  | 1052|     67|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
  |  Branch (239:6): [True: 67, False: 0]
  ------------------
  240|     67|		zend_throw_error(exception_ce, "%s", message);
  241|     67|	} else {
  242|      0|		zend_error_noreturn(E_ERROR, "%s", message);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  243|      0|	}
  244|       |
  245|     67|	efree(message);
  ------------------
  |  |  154|     67|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     67|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     67|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     67|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     67|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|       |	va_end(va);
  247|     67|}
zend_execute_API.c:report_class_fetch_error:
 1691|     84|{
 1692|     84|	if (fetch_type & ZEND_FETCH_CLASS_SILENT) {
  ------------------
  |  | 1051|     84|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
  |  Branch (1692:6): [True: 15, False: 69]
  ------------------
 1693|     15|		return;
 1694|     15|	}
 1695|       |
 1696|     69|	if (EG(exception)) {
  ------------------
  |  |   45|     69|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 3, False: 66]
  |  |  ------------------
  ------------------
 1697|      3|		if (!(fetch_type & ZEND_FETCH_CLASS_EXCEPTION)) {
  ------------------
  |  | 1052|      3|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
  |  Branch (1697:7): [True: 0, False: 3]
  ------------------
 1698|      0|			zend_exception_uncaught_error("During class fetch");
 1699|      0|		}
 1700|      3|		return;
 1701|      3|	}
 1702|       |
 1703|     66|	if ((fetch_type & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_INTERFACE) {
  ------------------
  |  | 1049|     66|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              	if ((fetch_type & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_INTERFACE) {
  ------------------
  |  | 1047|     66|#define ZEND_FETCH_CLASS_INTERFACE	5
  ------------------
  |  Branch (1703:6): [True: 3, False: 63]
  ------------------
 1704|      3|		zend_throw_or_error(fetch_type, NULL, "Interface \"%s\" not found", ZSTR_VAL(class_name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1705|     63|	} else if ((fetch_type & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_TRAIT) {
  ------------------
  |  | 1049|     63|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              	} else if ((fetch_type & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_TRAIT) {
  ------------------
  |  | 1048|     63|#define ZEND_FETCH_CLASS_TRAIT		6
  ------------------
  |  Branch (1705:13): [True: 3, False: 60]
  ------------------
 1706|      3|		zend_throw_or_error(fetch_type, NULL, "Trait \"%s\" not found", ZSTR_VAL(class_name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1707|     60|	} else {
 1708|     60|		zend_throw_or_error(fetch_type, NULL, "Class \"%s\" not found", ZSTR_VAL(class_name));
  ------------------
  |  |   67|     60|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1709|     60|	}
 1710|     66|}

zend_register_extension:
  150|      2|{
  151|      2|#if ZEND_EXTENSIONS_SUPPORT
  152|      2|	zend_extension extension;
  153|       |
  154|      2|	extension = *new_extension;
  155|      2|	extension.handle = handle;
  156|       |
  157|      2|	zend_extension_dispatch_message(ZEND_EXTMSG_NEW_EXTENSION, &extension);
  ------------------
  |  |  123|      2|#define ZEND_EXTMSG_NEW_EXTENSION		1
  ------------------
  158|       |
  159|      2|	zend_llist_add_element(&zend_extensions, &extension);
  160|       |
  161|      2|	if (extension.op_array_ctor) {
  ------------------
  |  Branch (161:6): [True: 0, False: 2]
  ------------------
  162|      0|		zend_extension_flags |= ZEND_EXTENSIONS_HAVE_OP_ARRAY_CTOR;
  ------------------
  |  |  137|      0|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_CTOR         (1<<0)
  ------------------
  163|      0|	}
  164|      2|	if (extension.op_array_dtor) {
  ------------------
  |  Branch (164:6): [True: 0, False: 2]
  ------------------
  165|      0|		zend_extension_flags |= ZEND_EXTENSIONS_HAVE_OP_ARRAY_DTOR;
  ------------------
  |  |  138|      0|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_DTOR         (1<<1)
  ------------------
  166|      0|	}
  167|      2|	if (extension.op_array_handler) {
  ------------------
  |  Branch (167:6): [True: 0, False: 2]
  ------------------
  168|      0|		zend_extension_flags |= ZEND_EXTENSIONS_HAVE_OP_ARRAY_HANDLER;
  ------------------
  |  |  139|      0|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_HANDLER      (1<<2)
  ------------------
  169|      0|	}
  170|      2|	if (extension.op_array_persist_calc) {
  ------------------
  |  Branch (170:6): [True: 0, False: 2]
  ------------------
  171|      0|		zend_extension_flags |= ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST_CALC;
  ------------------
  |  |  140|      0|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST_CALC (1<<3)
  ------------------
  172|      0|	}
  173|      2|	if (extension.op_array_persist) {
  ------------------
  |  Branch (173:6): [True: 0, False: 2]
  ------------------
  174|      0|		zend_extension_flags |= ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST;
  ------------------
  |  |  141|      0|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST      (1<<4)
  ------------------
  175|      0|	}
  176|       |	/*fprintf(stderr, "Loaded %s, version %s\n", extension.name, extension.version);*/
  177|      2|#endif
  178|      2|}
zend_startup_extensions_mechanism:
  206|      2|{
  207|       |	/* Startup extensions mechanism */
  208|      2|	zend_llist_init(&zend_extensions, sizeof(zend_extension), (void (*)(void *)) zend_extension_dtor, 1);
  209|      2|	zend_op_array_extension_handles = 0;
  210|      2|	zend_internal_function_extension_handles = 0;
  211|      2|	last_resource_number = 0;
  212|      2|}
zend_startup_extensions:
  216|      2|{
  217|      2|	zend_llist_apply_with_del(&zend_extensions, (int (*)(void *)) zend_extension_startup);
  218|      2|}
zend_extension_dispatch_message:
  253|      2|{
  254|      2|	zend_llist_apply_with_arguments(&zend_extensions, (llist_apply_with_args_func_t) zend_extension_message_dispatcher, 2, message, arg);
  255|      2|}
zend_get_resource_handle:
  259|      2|{
  260|      2|	if (last_resource_number<ZEND_MAX_RESERVED_RESOURCES) {
  ------------------
  |  |  554|      2|#define ZEND_MAX_RESERVED_RESOURCES	6
  ------------------
  |  Branch (260:6): [True: 2, False: 0]
  ------------------
  261|      2|		zend_add_system_entropy(module_name, "zend_get_resource_handle", &last_resource_number, sizeof(int));
  262|      2|		return last_resource_number++;
  263|      2|	} else {
  264|      0|		return -1;
  265|      0|	}
  266|      2|}
zend_internal_run_time_cache_reserved_size:
  320|    185|ZEND_API size_t zend_internal_run_time_cache_reserved_size(void) {
  321|    185|	return zend_internal_function_extension_handles * sizeof(void *);
  322|    185|}
zend_init_internal_run_time_cache:
  324|      2|ZEND_API void zend_init_internal_run_time_cache(void) {
  325|      2|	size_t rt_size = zend_internal_run_time_cache_reserved_size();
  326|      2|	if (rt_size) {
  ------------------
  |  Branch (326:6): [True: 0, False: 2]
  ------------------
  327|      0|		size_t functions = zend_hash_num_elements(CG(function_table));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  328|      0|		zend_class_entry *ce;
  329|      0|		ZEND_HASH_MAP_FOREACH_PTR(CG(class_table), ce) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (329:3): [True: 0, False: 0]
  |  Branch (329:3): [True: 0, False: 0]
  ------------------
  330|      0|			functions += zend_hash_num_elements(&ce->function_table);
  331|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  332|       |
  333|      0|		size_t alloc_size = functions * rt_size;
  334|      0|		char *ptr = pemalloc(alloc_size, 1);
  ------------------
  |  |  188|      0|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, Folded]
  |  |  ------------------
  ------------------
  335|       |
  336|      0|		CG(internal_run_time_cache) = ptr;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  337|      0|		CG(internal_run_time_cache_size) = alloc_size;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  338|       |
  339|      0|		zend_internal_function *zif;
  340|      0|		ZEND_HASH_MAP_FOREACH_PTR(CG(function_table), zif) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (340:3): [True: 0, False: 0]
  |  Branch (340:3): [True: 0, False: 0]
  ------------------
  341|      0|			if (!ZEND_USER_CODE(zif->type) && ZEND_MAP_PTR_GET(zif->run_time_cache) == NULL) {
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
              			if (!ZEND_USER_CODE(zif->type) && ZEND_MAP_PTR_GET(zif->run_time_cache) == NULL) {
  ------------------
  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  ------------------
  |  Branch (341:8): [True: 0, False: 0]
  |  Branch (341:38): [True: 0, False: 0]
  ------------------
  342|      0|				ZEND_MAP_PTR_SET(zif->run_time_cache, (void *)ptr);
  ------------------
  |  |   59|      0|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|      0|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|		} else { \
  |  |   63|      0|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|		} \
  |  |   65|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  343|      0|				ptr += rt_size;
  344|      0|			}
  345|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  346|      0|		ZEND_HASH_MAP_FOREACH_PTR(CG(class_table), ce) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (346:3): [True: 0, False: 0]
  |  Branch (346:3): [True: 0, False: 0]
  ------------------
  347|      0|			ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, zif) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (347:4): [True: 0, False: 0]
  |  Branch (347:4): [True: 0, False: 0]
  ------------------
  348|      0|				if (!ZEND_USER_CODE(zif->type) && ZEND_MAP_PTR_GET(zif->run_time_cache) == NULL) {
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
              				if (!ZEND_USER_CODE(zif->type) && ZEND_MAP_PTR_GET(zif->run_time_cache) == NULL) {
  ------------------
  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  ------------------
  |  Branch (348:9): [True: 0, False: 0]
  |  Branch (348:39): [True: 0, False: 0]
  ------------------
  349|      0|					ZEND_MAP_PTR_SET(zif->run_time_cache, (void *)ptr);
  ------------------
  |  |   59|      0|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|      0|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|		} else { \
  |  |   63|      0|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|      0|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|      0|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|		} \
  |  |   65|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  350|      0|					ptr += rt_size;
  351|      0|				}
  352|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  353|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  354|      0|	}
  355|      2|}
zend_reset_internal_run_time_cache:
  357|  33.5k|ZEND_API void zend_reset_internal_run_time_cache(void) {
  358|  33.5k|	if (CG(internal_run_time_cache)) {
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  359|      0|		memset(CG(internal_run_time_cache), 0, CG(internal_run_time_cache_size));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		memset(CG(internal_run_time_cache), 0, CG(internal_run_time_cache_size));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  360|      0|	}
  361|  33.5k|}
zend_get_extension:
  364|      1|{
  365|      1|	zend_llist_element *element;
  366|       |
  367|      2|	for (element = zend_extensions.head; element; element = element->next) {
  ------------------
  |  Branch (367:39): [True: 1, False: 1]
  ------------------
  368|      1|		zend_extension *extension = (zend_extension *) element->data;
  369|       |
  370|      1|		if (!strcmp(extension->name, extension_name)) {
  ------------------
  |  Branch (370:7): [True: 0, False: 1]
  ------------------
  371|      0|			return extension;
  372|      0|		}
  373|      1|	}
  374|      1|	return NULL;
  375|      1|}
zend_extensions_op_array_persist_calc:
  402|      1|{
  403|      1|	if (zend_extension_flags & ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST_CALC) {
  ------------------
  |  |  140|      1|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST_CALC (1<<3)
  ------------------
  |  Branch (403:6): [True: 0, False: 1]
  ------------------
  404|      0|		zend_extension_persist_data data;
  405|       |
  406|      0|		data.op_array = op_array;
  407|      0|		data.size = 0;
  408|      0|		data.mem  = NULL;
  409|      0|		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_op_array_persist_calc_handler, &data);
  410|      0|		return data.size;
  411|      0|	}
  412|      1|	return 0;
  413|      1|}
zend_extensions_op_array_persist:
  416|      1|{
  417|      1|	if (zend_extension_flags & ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST) {
  ------------------
  |  |  141|      1|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_PERSIST      (1<<4)
  ------------------
  |  Branch (417:6): [True: 0, False: 1]
  ------------------
  418|      0|		zend_extension_persist_data data;
  419|       |
  420|      0|		data.op_array = op_array;
  421|      0|		data.size = 0;
  422|      0|		data.mem  = mem;
  423|      0|		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_op_array_persist_handler, &data);
  424|      0|		return data.size;
  425|      0|	}
  426|      1|	return 0;
  427|      1|}
zend_extensions.c:zend_extension_startup:
  192|      2|{
  193|      2|#if ZEND_EXTENSIONS_SUPPORT
  194|      2|	if (extension->startup) {
  ------------------
  |  Branch (194:6): [True: 2, False: 0]
  ------------------
  195|      2|		if (extension->startup(extension)!=SUCCESS) {
  ------------------
  |  Branch (195:7): [True: 0, False: 2]
  ------------------
  196|      0|			return 1;
  197|      0|		}
  198|      2|		zend_append_version_info(extension);
  199|      2|	}
  200|      2|#endif
  201|      2|	return 0;
  202|      2|}

zend_fiber_stack_limit:
  338|    289|{
  339|    289|	zend_ulong reserve = EG(reserved_stack_size);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  340|       |
  341|       |#ifdef __APPLE__
  342|       |	/* On Apple Clang, the stack probing function ___chkstk_darwin incorrectly
  343|       |	 * probes a location that is twice the entered function's stack usage away
  344|       |	 * from the stack pointer, when using an alternative stack.
  345|       |	 * https://openradar.appspot.com/radar?id=5497722702397440
  346|       |	 */
  347|       |	reserve = reserve * 2;
  348|       |#endif
  349|       |
  350|       |	/* stack->pointer is the end of the stack */
  351|    289|	return (int8_t*)stack->pointer + reserve;
  352|    289|}
zend_fiber_stack_base:
  355|    289|{
  356|    289|	return (void*)((uintptr_t)stack->pointer + stack->size);
  357|    289|}
zend_fiber_switch_block:
  402|  33.6k|{
  403|  33.6k|	++zend_fiber_switch_blocking;
  404|  33.6k|}
zend_fiber_switch_unblock:
  407|     18|{
  408|     18|	ZEND_ASSERT(zend_fiber_switch_blocking && "Fiber switching was not blocked");
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (408:2): [True: 0, False: 18]
  |  Branch (408:2): [True: 0, False: 0]
  |  Branch (408:2): [True: 18, False: 0]
  |  Branch (408:2): [True: 18, False: 0]
  ------------------
  409|     18|	--zend_fiber_switch_blocking;
  410|     18|}
zend_fiber_switch_blocked:
  413|    580|{
  414|    580|	return zend_fiber_switch_blocking;
  415|    580|}
zend_fiber_init_context:
  418|    290|{
  419|    290|	context->stack = zend_fiber_stack_allocate(stack_size);
  420|       |
  421|    290|	if (UNEXPECTED(!context->stack)) {
  ------------------
  |  |  457|    290|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 289]
  |  |  ------------------
  ------------------
  422|      1|		return FAILURE;
  423|      1|	}
  424|       |
  425|       |#ifdef ZEND_FIBER_UCONTEXT
  426|       |	ucontext_t *handle = &context->stack->ucontext;
  427|       |
  428|       |	getcontext(handle);
  429|       |
  430|       |	handle->uc_stack.ss_size = context->stack->size;
  431|       |	handle->uc_stack.ss_sp = context->stack->pointer;
  432|       |	handle->uc_stack.ss_flags = 0;
  433|       |	handle->uc_link = NULL;
  434|       |
  435|       |	makecontext(handle, (void (*)(void)) zend_fiber_trampoline, 0);
  436|       |
  437|       |	context->handle = handle;
  438|       |#else
  439|       |	// Stack grows down, calculate the top of the stack. make_fcontext then shifts pointer to lower 16-byte boundary.
  440|    289|	void *stack = (void *) ((uintptr_t) context->stack->pointer + context->stack->size);
  441|       |
  442|       |#if BOOST_CONTEXT_SHADOW_STACK
  443|       |	// pass the shadow stack pointer to make_fcontext
  444|       |	// i.e., link the new shadow stack with the new fcontext
  445|       |	// TODO should be a better way?
  446|       |	*((unsigned long*) (stack - 8)) = (unsigned long)context->stack->ss_base + context->stack->ss_size;
  447|       |#endif
  448|       |
  449|    289|	context->handle = make_fcontext(stack, context->stack->size, zend_fiber_trampoline);
  450|    289|	ZEND_ASSERT(context->handle != NULL && "make_fcontext() never returns NULL");
  ------------------
  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (450:2): [True: 0, False: 289]
  |  Branch (450:2): [True: 0, False: 0]
  |  Branch (450:2): [True: 289, False: 0]
  |  Branch (450:2): [True: 289, False: 0]
  ------------------
  451|    289|#endif
  452|       |
  453|    289|	context->kind = kind;
  454|    289|	context->function = coroutine;
  455|       |
  456|       |	// Set status in case memory has not been zeroed.
  457|    289|	context->status = ZEND_FIBER_STATUS_INIT;
  458|       |
  459|    289|	zend_observer_fiber_init_notify(context);
  460|       |
  461|    289|	return SUCCESS;
  462|    289|}
zend_fiber_destroy_context:
  465|    289|{
  466|    289|	zend_observer_fiber_destroy_notify(context);
  467|       |
  468|    289|	if (context->cleanup) {
  ------------------
  |  Branch (468:6): [True: 289, False: 0]
  ------------------
  469|    289|		context->cleanup(context);
  470|    289|	}
  471|       |
  472|    289|	zend_fiber_stack_free(context->stack);
  473|    289|}
zend_fiber_switch_context:
  476|  1.13k|{
  477|  1.13k|	zend_fiber_context *from = EG(current_fiber_context);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  478|  1.13k|	zend_fiber_context *to = transfer->context;
  479|  1.13k|	zend_fiber_vm_state state;
  480|       |
  481|  1.13k|	ZEND_ASSERT(to && to->handle && to->status != ZEND_FIBER_STATUS_DEAD && "Invalid fiber context");
  ------------------
  |  |  112|  1.13k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (481:2): [True: 0, False: 1.13k]
  |  Branch (481:2): [True: 0, False: 0]
  |  Branch (481:2): [True: 0, False: 0]
  |  Branch (481:2): [True: 0, False: 0]
  |  Branch (481:2): [True: 1.13k, False: 0]
  |  Branch (481:2): [True: 1.13k, False: 0]
  |  Branch (481:2): [True: 1.13k, False: 0]
  |  Branch (481:2): [True: 1.13k, False: 0]
  ------------------
  482|  1.13k|	ZEND_ASSERT(from && "From fiber context must be present");
  ------------------
  |  |  112|  1.13k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (482:2): [True: 0, False: 1.13k]
  |  Branch (482:2): [True: 0, False: 0]
  |  Branch (482:2): [True: 1.13k, False: 0]
  |  Branch (482:2): [True: 1.13k, False: 0]
  ------------------
  483|  1.13k|	ZEND_ASSERT(to != from && "Cannot switch into the running fiber context");
  ------------------
  |  |  112|  1.13k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (483:2): [True: 0, False: 1.13k]
  |  Branch (483:2): [True: 0, False: 0]
  |  Branch (483:2): [True: 1.13k, False: 0]
  |  Branch (483:2): [True: 1.13k, False: 0]
  ------------------
  484|       |
  485|       |	/* Assert that all error transfers hold a Throwable value. */
  486|  1.13k|	ZEND_ASSERT((
  ------------------
  |  |  112|  1.13k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (486:2): [True: 0, False: 0]
  |  Branch (486:2): [True: 0, False: 0]
  |  Branch (486:2): [True: 0, False: 0]
  |  Branch (486:2): [True: 0, False: 0]
  |  Branch (486:2): [True: 1.13k, False: 0]
  |  Branch (486:2): [True: 0, False: 0]
  |  Branch (486:2): [True: 1, False: 283]
  |  Branch (486:2): [True: 275, False: 8]
  |  Branch (486:2): [True: 8, False: 0]
  |  Branch (486:2): [True: 284, False: 0]
  |  Branch (486:2): [True: 854, False: 284]
  |  Branch (486:2): [True: 1.13k, False: 0]
  ------------------
  487|  1.13k|		!(transfer->flags & ZEND_FIBER_TRANSFER_FLAG_ERROR) ||
  488|  1.13k|		(Z_TYPE(transfer->value) == IS_OBJECT && (
  489|  1.13k|			zend_is_unwind_exit(Z_OBJ(transfer->value)) ||
  490|  1.13k|			zend_is_graceful_exit(Z_OBJ(transfer->value)) ||
  491|  1.13k|			instanceof_function(Z_OBJCE(transfer->value), zend_ce_throwable)
  492|  1.13k|		))
  493|  1.13k|	) && "Error transfer requires a throwable value");
  494|       |
  495|  1.13k|	zend_observer_fiber_switch_notify(from, to);
  496|       |
  497|  1.13k|	zend_fiber_capture_vm_state(&state);
  498|       |
  499|  1.13k|	to->status = ZEND_FIBER_STATUS_RUNNING;
  500|       |
  501|  1.13k|	if (EXPECTED(from->status == ZEND_FIBER_STATUS_RUNNING)) {
  ------------------
  |  |  456|  1.13k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 849, False: 289]
  |  |  ------------------
  ------------------
  502|    849|		from->status = ZEND_FIBER_STATUS_SUSPENDED;
  503|    849|	}
  504|       |
  505|       |	/* Update transfer context with the current fiber before switching. */
  506|  1.13k|	transfer->context = from;
  507|       |
  508|  1.13k|	EG(current_fiber_context) = to;
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  509|       |
  510|       |#ifdef __SANITIZE_ADDRESS__
  511|       |	void *fake_stack = NULL;
  512|       |	__sanitizer_start_switch_fiber(
  513|       |		from->status != ZEND_FIBER_STATUS_DEAD ? &fake_stack : NULL,
  514|       |		to->stack->asan_pointer,
  515|       |		to->stack->asan_size);
  516|       |#endif
  517|       |
  518|       |#ifdef ZEND_FIBER_UCONTEXT
  519|       |	transfer_data = transfer;
  520|       |
  521|       |	swapcontext(from->handle, to->handle);
  522|       |
  523|       |	/* Copy transfer struct because it might live on the other fiber's stack that will eventually be destroyed. */
  524|       |	*transfer = *transfer_data;
  525|       |#else
  526|  1.13k|	boost_context_data data = jump_fcontext(to->handle, transfer);
  527|       |
  528|       |	/* Copy transfer struct because it might live on the other fiber's stack that will eventually be destroyed. */
  529|  1.13k|	*transfer = *data.transfer;
  530|  1.13k|#endif
  531|       |
  532|  1.13k|	to = transfer->context;
  533|       |
  534|  1.13k|#ifndef ZEND_FIBER_UCONTEXT
  535|       |	/* Get the context that resumed us and update its handle to allow for symmetric coroutines. */
  536|  1.13k|	to->handle = data.handle;
  537|  1.13k|#endif
  538|       |
  539|       |#ifdef __SANITIZE_ADDRESS__
  540|       |	__sanitizer_finish_switch_fiber(fake_stack, &to->stack->asan_pointer, &to->stack->asan_size);
  541|       |#endif
  542|       |
  543|  1.13k|	EG(current_fiber_context) = from;
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  544|       |
  545|  1.13k|	zend_fiber_restore_vm_state(&state);
  546|       |
  547|       |	/* Destroy prior context if it has been marked as dead. */
  548|  1.13k|	if (to->status == ZEND_FIBER_STATUS_DEAD) {
  ------------------
  |  Branch (548:6): [True: 289, False: 849]
  ------------------
  549|    289|		zend_fiber_destroy_context(to);
  550|    289|	}
  551|  1.13k|}
zim_Fiber___construct:
  872|    304|{
  873|    304|	zend_fcall_info fci;
  874|    304|	zend_fcall_info_cache fcc;
  875|       |
  876|    910|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|    304|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    304|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    304|		const int _flags = (flags); \
  |  |  |  | 1599|    304|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    304|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    304|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    304|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    304|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    304|		uint32_t _i = 0; \
  |  |  |  | 1603|    304|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    304|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    304|		char *_error = NULL; \
  |  |  |  | 1606|    304|		bool _dummy = 0; \
  |  |  |  | 1607|    304|		bool _optional = 0; \
  |  |  |  | 1608|    304|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    304|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    304|		((void)_i); \
  |  |  |  | 1610|    304|		((void)_real_arg); \
  |  |  |  | 1611|    304|		((void)_arg); \
  |  |  |  | 1612|    304|		((void)_expected_type); \
  |  |  |  | 1613|    304|		((void)_error); \
  |  |  |  | 1614|    304|		((void)_optional); \
  |  |  |  | 1615|    304|		((void)_dummy); \
  |  |  |  | 1616|    304|		\
  |  |  |  | 1617|    304|		do { \
  |  |  |  | 1618|    304|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    608|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    304|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    302|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|    304|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    304|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    304|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    302|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  877|  1.20k|		Z_PARAM_FUNC(fci, fcc)
  ------------------
  |  | 1833|    302|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|    302|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    302|	++_i; \
  |  |  |  |  |  | 1654|    302|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    302|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    302|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    302|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    302|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    302|	_real_arg++; \
  |  |  |  |  |  | 1660|    302|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    302|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    302|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|    302|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    302|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (877:3): [True: 302, False: 0]
  |  Branch (877:3): [True: 0, False: 0]
  |  Branch (877:3): [True: 302, False: 0]
  |  Branch (877:3): [True: 0, False: 0]
  |  Branch (877:3): [True: 302, False: 0]
  |  Branch (877:3): [True: 0, False: 0]
  |  Branch (877:3): [True: 0, False: 302]
  |  Branch (877:3): [True: 302, False: 0]
  |  Branch (877:3): [True: 0, False: 0]
  |  Branch (877:3): [True: 0, False: 0]
  ------------------
  878|    304|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|    302|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|    302|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    302|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|    302|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 302]
  |  |  |  |  ------------------
  |  |  |  | 1641|    304|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    304|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 302]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|    304|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 302]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (878:2): [True: 302, False: 0]
  |  Branch (878:2): [True: 0, False: 0]
  |  Branch (878:2): [True: 302, False: 0]
  |  Branch (878:2): [True: 0, False: 0]
  ------------------
  879|       |
  880|    302|	zend_fiber *fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|    302|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    302|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  881|       |
  882|    302|	if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_INIT || Z_TYPE(fiber->fci.function_name) != IS_UNDEF)) {
  ------------------
  |  |  457|    603|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 300]
  |  |  |  Branch (457:52): [True: 1, False: 301]
  |  |  |  Branch (457:52): [True: 1, False: 300]
  |  |  ------------------
  ------------------
  883|      2|		zend_throw_error(zend_ce_fiber_error, "Cannot call constructor twice");
  884|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (884:3): [True: 0, False: 2]
  |  Branch (884:3): [True: 2, False: 0]
  ------------------
  885|      2|	}
  886|       |
  887|    300|	fiber->fci = fci;
  888|    300|	fiber->fci_cache = fcc;
  889|       |
  890|       |	// Keep a reference to closures or callable objects while the fiber is running.
  891|    300|	Z_TRY_ADDREF(fiber->fci.function_name);
  ------------------
  |  | 1299|    300|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|    300|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|    300|	zval *_pz = (pz);				\
  |  |  |  | 1287|    300|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|    300|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|    300|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|    300|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 300, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|    300|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|    300|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|    300|	}								\
  |  |  |  | 1290|    300|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 300]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  892|    300|}
zim_Fiber_start:
  895|    291|{
  896|    291|	zend_fiber *fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|    291|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    291|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  897|       |
  898|    873|	ZEND_PARSE_PARAMETERS_START(0, -1)
  ------------------
  |  | 1629|    291|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    291|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    291|		const int _flags = (flags); \
  |  |  |  | 1599|    291|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    291|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    291|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    291|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    291|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    291|		uint32_t _i = 0; \
  |  |  |  | 1603|    291|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    291|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    291|		char *_error = NULL; \
  |  |  |  | 1606|    291|		bool _dummy = 0; \
  |  |  |  | 1607|    291|		bool _optional = 0; \
  |  |  |  | 1608|    291|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    291|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    291|		((void)_i); \
  |  |  |  | 1610|    291|		((void)_real_arg); \
  |  |  |  | 1611|    291|		((void)_arg); \
  |  |  |  | 1612|    291|		((void)_expected_type); \
  |  |  |  | 1613|    291|		((void)_error); \
  |  |  |  | 1614|    291|		((void)_optional); \
  |  |  |  | 1615|    291|		((void)_dummy); \
  |  |  |  | 1616|    291|		\
  |  |  |  | 1617|    291|		do { \
  |  |  |  | 1618|    291|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    582|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 291]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    291|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    291|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 291]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|    291|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    291|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    291|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    291|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  899|    873|		Z_PARAM_VARIADIC_WITH_NAMED(fiber->fci.params, fiber->fci.param_count, fiber->fci.named_params);
  ------------------
  |  | 2142|    291|#define Z_PARAM_VARIADIC_WITH_NAMED(dest, dest_num, dest_named) do { \
  |  | 2143|    291|		uint32_t _num_varargs = _num_args - _i; \
  |  | 2144|    291|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  ------------------
  |  |  |  |  456|    291|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 291]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2145|      0|			dest = _real_arg + 1; \
  |  | 2146|      0|			dest_num = _num_varargs; \
  |  | 2147|    291|		} else { \
  |  | 2148|    291|			dest = NULL; \
  |  | 2149|    291|			dest_num = 0; \
  |  | 2150|    291|		} \
  |  | 2151|    291|		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  687|    291|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    291|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  673|    291|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  |  |  ------------------
  |  |  |  Branch (2151:7): [True: 0, False: 291]
  |  |  ------------------
  |  | 2152|      0|			dest_named = execute_data->extra_named_params; \
  |  | 2153|    291|		} else { \
  |  | 2154|    291|			dest_named = NULL; \
  |  | 2155|    291|		} \
  |  | 2156|    291|	} while (0);
  |  |  ------------------
  |  |  |  Branch (2156:11): [Folded, False: 291]
  |  |  ------------------
  ------------------
  900|    873|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|    291|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|    291|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    291|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|    291|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 291]
  |  |  |  |  ------------------
  |  |  |  | 1641|    291|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    291|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 291]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|    291|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 291]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (900:2): [True: 291, False: 0]
  |  Branch (900:2): [True: 0, False: 0]
  |  Branch (900:2): [True: 0, False: 291]
  |  Branch (900:2): [True: 291, False: 0]
  ------------------
  901|       |
  902|    291|	if (UNEXPECTED(zend_fiber_switch_blocked())) {
  ------------------
  |  |  457|    291|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 291]
  |  |  ------------------
  ------------------
  903|      0|		zend_throw_error(zend_ce_fiber_error, "Cannot switch fibers in current execution context");
  904|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (904:3): [True: 0, False: 0]
  |  Branch (904:3): [True: 0, False: 0]
  ------------------
  905|      0|	}
  906|       |
  907|    291|	if (fiber->context.status != ZEND_FIBER_STATUS_INIT) {
  ------------------
  |  Branch (907:6): [True: 1, False: 290]
  ------------------
  908|      1|		zend_throw_error(zend_ce_fiber_error, "Cannot start a fiber that has already been started");
  909|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (909:3): [True: 0, False: 1]
  |  Branch (909:3): [True: 1, False: 0]
  ------------------
  910|      1|	}
  911|       |
  912|    290|	if (zend_fiber_init_context(&fiber->context, zend_ce_fiber, zend_fiber_execute, EG(fiber_stack_size)) == FAILURE) {
  ------------------
  |  |   45|    290|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (912:6): [True: 1, False: 289]
  ------------------
  913|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (913:3): [True: 0, False: 1]
  |  Branch (913:3): [True: 1, False: 0]
  ------------------
  914|      1|	}
  915|       |
  916|    289|	fiber->previous = &fiber->context;
  917|       |
  918|    289|	zend_fiber_transfer transfer = zend_fiber_resume_internal(fiber, NULL, false);
  919|       |
  920|    289|	zend_fiber_delegate_transfer_result(&transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |  587|    289|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  921|    289|}
zim_Fiber_suspend:
  924|    282|{
  925|    282|	zval *value = NULL;
  926|       |
  927|    846|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|    282|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    282|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    282|		const int _flags = (flags); \
  |  |  |  | 1599|    282|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    282|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    282|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    282|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    282|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    282|		uint32_t _i = 0; \
  |  |  |  | 1603|    282|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    282|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    282|		char *_error = NULL; \
  |  |  |  | 1606|    282|		bool _dummy = 0; \
  |  |  |  | 1607|    282|		bool _optional = 0; \
  |  |  |  | 1608|    282|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    282|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    282|		((void)_i); \
  |  |  |  | 1610|    282|		((void)_real_arg); \
  |  |  |  | 1611|    282|		((void)_arg); \
  |  |  |  | 1612|    282|		((void)_expected_type); \
  |  |  |  | 1613|    282|		((void)_error); \
  |  |  |  | 1614|    282|		((void)_optional); \
  |  |  |  | 1615|    282|		((void)_dummy); \
  |  |  |  | 1616|    282|		\
  |  |  |  | 1617|    282|		do { \
  |  |  |  | 1618|    282|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    564|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 282]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    282|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    282|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 282]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|    282|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    282|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    282|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    282|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  928|    846|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|    282|	_optional = 1;
  ------------------
  929|    846|		Z_PARAM_ZVAL(value);
  ------------------
  |  | 2116|      5|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|    282|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|    282|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|    282|	++_i; \
  |  |  |  |  |  |  |  | 1654|    282|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    282|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|    282|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    282|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|    282|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 282, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|    282|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|    282|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 277, False: 5]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|    282|	} \
  |  |  |  |  |  |  |  | 1659|    282|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      5|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (929:3): [True: 282, False: 0]
  |  Branch (929:3): [True: 0, False: 0]
  |  Branch (929:3): [True: 0, False: 282]
  |  Branch (929:3): [True: 282, False: 0]
  |  Branch (929:3): [True: 282, False: 0]
  |  Branch (929:3): [True: 0, False: 0]
  |  Branch (929:3): [True: 282, False: 0]
  |  Branch (929:3): [True: 0, False: 0]
  |  Branch (929:3): [True: 0, False: 0]
  |  Branch (929:3): [True: 0, False: 0]
  ------------------
  930|    574|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      5|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|    282|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    282|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 282]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|    282|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 282]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (930:2): [True: 5, False: 0]
  |  Branch (930:2): [True: 0, False: 0]
  |  Branch (930:2): [True: 5, False: 0]
  |  Branch (930:2): [True: 0, False: 0]
  ------------------
  931|       |
  932|    282|	zend_fiber *fiber = EG(active_fiber);
  ------------------
  |  |   45|    282|# define EG(v) (executor_globals.v)
  ------------------
  933|       |
  934|    282|	if (UNEXPECTED(!fiber)) {
  ------------------
  |  |  457|    282|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 281]
  |  |  ------------------
  ------------------
  935|      1|		zend_throw_error(zend_ce_fiber_error, "Cannot suspend outside of a fiber");
  936|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (936:3): [True: 0, False: 1]
  |  Branch (936:3): [True: 1, False: 0]
  ------------------
  937|      1|	}
  938|       |
  939|    281|	if (UNEXPECTED(fiber->flags & ZEND_FIBER_FLAG_DESTROYED)) {
  ------------------
  |  |  457|    281|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 280]
  |  |  ------------------
  ------------------
  940|      1|		zend_throw_error(zend_ce_fiber_error, "Cannot suspend in a force-closed fiber");
  941|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (941:3): [True: 0, False: 1]
  |  Branch (941:3): [True: 1, False: 0]
  ------------------
  942|      1|	}
  943|       |
  944|    280|	if (UNEXPECTED(zend_fiber_switch_blocked())) {
  ------------------
  |  |  457|    280|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 280]
  |  |  ------------------
  ------------------
  945|      0|		zend_throw_error(zend_ce_fiber_error, "Cannot switch fibers in current execution context");
  946|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (946:3): [True: 0, False: 0]
  |  Branch (946:3): [True: 0, False: 0]
  ------------------
  947|      0|	}
  948|       |
  949|    280|	ZEND_ASSERT(fiber->context.status == ZEND_FIBER_STATUS_RUNNING || fiber->context.status == ZEND_FIBER_STATUS_SUSPENDED);
  ------------------
  |  |  112|    280|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (949:2): [True: 280, False: 0]
  |  Branch (949:2): [True: 0, False: 0]
  |  Branch (949:2): [True: 280, False: 0]
  |  Branch (949:2): [True: 0, False: 0]
  ------------------
  950|       |
  951|    280|	fiber->stack_bottom->prev_execute_data = NULL;
  952|       |
  953|    280|	zend_fiber_transfer transfer = zend_fiber_suspend_internal(fiber, value);
  954|       |
  955|    280|	zend_fiber_delegate_transfer_result(&transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |  587|    280|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  956|    280|}
zim_Fiber_resume:
  959|      7|{
  960|      7|	zend_fiber *fiber;
  961|      7|	zval *value = NULL;
  962|       |
  963|     21|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      7|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      7|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      7|		const int _flags = (flags); \
  |  |  |  | 1599|      7|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      7|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      7|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      7|		uint32_t _i = 0; \
  |  |  |  | 1603|      7|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      7|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      7|		char *_error = NULL; \
  |  |  |  | 1606|      7|		bool _dummy = 0; \
  |  |  |  | 1607|      7|		bool _optional = 0; \
  |  |  |  | 1608|      7|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      7|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      7|		((void)_i); \
  |  |  |  | 1610|      7|		((void)_real_arg); \
  |  |  |  | 1611|      7|		((void)_arg); \
  |  |  |  | 1612|      7|		((void)_expected_type); \
  |  |  |  | 1613|      7|		((void)_error); \
  |  |  |  | 1614|      7|		((void)_optional); \
  |  |  |  | 1615|      7|		((void)_dummy); \
  |  |  |  | 1616|      7|		\
  |  |  |  | 1617|      7|		do { \
  |  |  |  | 1618|      7|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      7|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      7|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      7|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  964|     21|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      7|	_optional = 1;
  ------------------
  965|     21|		Z_PARAM_ZVAL(value);
  ------------------
  |  | 2116|      2|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      7|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      7|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 7, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      7|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      7|	} \
  |  |  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      2|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (965:3): [True: 7, False: 0]
  |  Branch (965:3): [True: 0, False: 0]
  |  Branch (965:3): [True: 0, False: 7]
  |  Branch (965:3): [True: 7, False: 0]
  |  Branch (965:3): [True: 7, False: 0]
  |  Branch (965:3): [True: 0, False: 0]
  |  Branch (965:3): [True: 7, False: 0]
  |  Branch (965:3): [True: 0, False: 0]
  |  Branch (965:3): [True: 0, False: 0]
  |  Branch (965:3): [True: 0, False: 0]
  ------------------
  966|     18|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      7|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (966:2): [True: 2, False: 0]
  |  Branch (966:2): [True: 0, False: 0]
  |  Branch (966:2): [True: 2, False: 0]
  |  Branch (966:2): [True: 0, False: 0]
  ------------------
  967|       |
  968|      7|	if (UNEXPECTED(zend_fiber_switch_blocked())) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  969|      0|		zend_throw_error(zend_ce_fiber_error, "Cannot switch fibers in current execution context");
  970|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (970:3): [True: 0, False: 0]
  |  Branch (970:3): [True: 0, False: 0]
  ------------------
  971|      0|	}
  972|       |
  973|      7|	fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      7|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  974|       |
  975|      7|	if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 4]
  |  |  |  Branch (457:52): [True: 3, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  976|      3|		zend_throw_error(zend_ce_fiber_error, "Cannot resume a fiber that is not suspended");
  977|      3|		RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (977:3): [True: 0, False: 3]
  |  Branch (977:3): [True: 3, False: 0]
  ------------------
  978|      3|	}
  979|       |
  980|      4|	fiber->stack_bottom->prev_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  981|       |
  982|      4|	zend_fiber_transfer transfer = zend_fiber_resume_internal(fiber, value, false);
  983|       |
  984|      4|	zend_fiber_delegate_transfer_result(&transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |  587|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  985|      4|}
zim_Fiber_throw:
  988|      2|{
  989|      2|	zend_fiber *fiber;
  990|      2|	zval *exception;
  991|       |
  992|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  993|      8|		Z_PARAM_OBJECT_OF_CLASS(exception, zend_ce_throwable)
  ------------------
  |  | 1985|      2|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 0, 0)
  |  |  ------------------
  |  |  |  | 1971|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      2|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (993:3): [True: 2, False: 0]
  |  Branch (993:3): [True: 0, False: 0]
  |  Branch (993:3): [True: 2, False: 0]
  |  Branch (993:3): [True: 0, False: 0]
  |  Branch (993:3): [True: 2, False: 0]
  |  Branch (993:3): [True: 0, False: 0]
  |  Branch (993:3): [True: 0, False: 2]
  |  Branch (993:3): [True: 2, False: 0]
  |  Branch (993:3): [True: 0, False: 0]
  |  Branch (993:3): [True: 0, False: 0]
  ------------------
  994|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (994:2): [True: 2, False: 0]
  |  Branch (994:2): [True: 0, False: 0]
  |  Branch (994:2): [True: 2, False: 0]
  |  Branch (994:2): [True: 0, False: 0]
  ------------------
  995|       |
  996|      2|	if (UNEXPECTED(zend_fiber_switch_blocked())) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  997|      0|		zend_throw_error(zend_ce_fiber_error, "Cannot switch fibers in current execution context");
  998|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (998:3): [True: 0, False: 0]
  |  Branch (998:3): [True: 0, False: 0]
  ------------------
  999|      0|	}
 1000|       |
 1001|      2|	fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1002|       |
 1003|      2|	if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  Branch (457:52): [True: 1, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1004|      1|		zend_throw_error(zend_ce_fiber_error, "Cannot resume a fiber that is not suspended");
 1005|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1005:3): [True: 0, False: 1]
  |  Branch (1005:3): [True: 1, False: 0]
  ------------------
 1006|      1|	}
 1007|       |
 1008|      1|	fiber->stack_bottom->prev_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1009|       |
 1010|      1|	zend_fiber_transfer transfer = zend_fiber_resume_internal(fiber, exception, true);
 1011|       |
 1012|      1|	zend_fiber_delegate_transfer_result(&transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |  587|      1|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1013|      1|}
zim_Fiber_isStarted:
 1016|      1|{
 1017|      1|	zend_fiber *fiber;
 1018|       |
 1019|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1020|       |
 1021|      1|	fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1022|       |
 1023|      1|	RETURN_BOOL(fiber->context.status != ZEND_FIBER_STATUS_INIT);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1024|      1|}
zim_Fiber_isTerminated:
 1049|      1|{
 1050|      1|	zend_fiber *fiber;
 1051|       |
 1052|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1053|       |
 1054|      1|	fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1055|       |
 1056|      1|	RETURN_BOOL(fiber->context.status == ZEND_FIBER_STATUS_DEAD);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1057|      1|}
zim_Fiber_getReturn:
 1060|      6|{
 1061|      6|	zend_fiber *fiber;
 1062|      6|	const char *message;
 1063|       |
 1064|      6|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      6|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      6|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1065|       |
 1066|      6|	fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1067|       |
 1068|      6|	if (fiber->context.status == ZEND_FIBER_STATUS_DEAD) {
  ------------------
  |  Branch (1068:6): [True: 4, False: 2]
  ------------------
 1069|      4|		if (fiber->flags & ZEND_FIBER_FLAG_THREW) {
  ------------------
  |  Branch (1069:7): [True: 1, False: 3]
  ------------------
 1070|      1|			message = "The fiber threw an exception";
 1071|      3|		} else if (fiber->flags & ZEND_FIBER_FLAG_BAILOUT) {
  ------------------
  |  Branch (1071:14): [True: 0, False: 3]
  ------------------
 1072|      0|			message = "The fiber exited with a fatal error";
 1073|      3|		} else {
 1074|      3|			RETURN_COPY_DEREF(&fiber->result);
  ------------------
  |  | 1067|      3|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      3|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      3|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      3|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      3|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      3|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      3|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      2|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      1|			} else {									\
  |  |  |  |  |  | 1517|      1|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      1|			}											\
  |  |  |  |  |  | 1519|      2|		}												\
  |  |  |  |  |  | 1520|      3|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      3|	do {												\
  |  |  |  |  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1075|      3|		}
 1076|      4|	} else if (fiber->context.status == ZEND_FIBER_STATUS_INIT) {
  ------------------
  |  Branch (1076:13): [True: 1, False: 1]
  ------------------
 1077|      1|		message = "The fiber has not been started";
 1078|      1|	} else {
 1079|      1|		message = "The fiber has not returned";
 1080|      1|	}
 1081|       |
 1082|      3|	zend_throw_error(zend_ce_fiber_error, "Cannot get fiber return value: %s", message);
 1083|       |	RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1083:2): [True: 0, False: 3]
  |  Branch (1083:2): [True: 3, False: 0]
  ------------------
 1084|      3|}
zim_Fiber_getCurrent:
 1087|      5|{
 1088|      5|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      5|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      5|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1089|       |
 1090|      5|	zend_fiber *fiber = EG(active_fiber);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 1091|       |
 1092|      5|	if (!fiber) {
  ------------------
  |  Branch (1092:6): [True: 1, False: 4]
  ------------------
 1093|      1|		RETURN_NULL();
  ------------------
  |  | 1047|      1|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      1|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1094|      1|	}
 1095|       |
 1096|      4|	RETURN_OBJ_COPY(&fiber->std);
  ------------------
  |  | 1064|      4|#define RETURN_OBJ_COPY(r)				do { RETVAL_OBJ_COPY(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1038|      4|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1146|      4|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  |  |  | 1147|      4|		zval *__z = (z);						\
  |  |  |  |  |  | 1148|      4|		zend_object *__o = (o);					\
  |  |  |  |  |  | 1149|      4|		GC_ADDREF(__o);							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1150|      4|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1151|      4|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      4|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1152|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1152:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1064:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1097|      4|}
zim_FiberError___construct:
 1100|      2|{
 1101|      2|	zend_throw_error(
 1102|      2|		NULL,
 1103|      2|		"The \"%s\" class is reserved for internal use and cannot be manually instantiated",
 1104|      2|		ZSTR_VAL(Z_OBJCE_P(ZEND_THIS)->name)
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1105|      2|	);
 1106|      2|}
zend_register_fiber_ce:
 1110|      2|{
 1111|      2|	zend_ce_fiber = register_class_Fiber();
 1112|      2|	zend_ce_fiber->create_object = zend_fiber_object_create;
 1113|      2|	zend_ce_fiber->default_object_handlers = &zend_fiber_handlers;
 1114|       |
 1115|      2|	zend_fiber_handlers = std_object_handlers;
 1116|      2|	zend_fiber_handlers.dtor_obj = zend_fiber_object_destroy;
 1117|      2|	zend_fiber_handlers.free_obj = zend_fiber_object_free;
 1118|      2|	zend_fiber_handlers.get_gc = zend_fiber_object_gc;
 1119|      2|	zend_fiber_handlers.clone_obj = NULL;
 1120|       |
 1121|      2|	zend_ce_fiber_error = register_class_FiberError(zend_ce_error);
 1122|      2|	zend_ce_fiber_error->create_object = zend_ce_error->create_object;
 1123|      2|}
zend_fiber_init:
 1126|  33.5k|{
 1127|  33.5k|	zend_fiber_context *context = ecalloc(1, sizeof(zend_fiber_context));
  ------------------
  |  |  157|  33.5k|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1128|       |
 1129|       |#if defined(__SANITIZE_ADDRESS__) || defined(ZEND_FIBER_UCONTEXT)
 1130|       |	// Main fiber stack is only needed if ASan or ucontext is enabled.
 1131|       |	context->stack = emalloc(sizeof(zend_fiber_stack));
 1132|       |
 1133|       |#ifdef ZEND_FIBER_UCONTEXT
 1134|       |	context->handle = &context->stack->ucontext;
 1135|       |#endif
 1136|       |#endif
 1137|       |
 1138|  33.5k|	context->status = ZEND_FIBER_STATUS_RUNNING;
 1139|       |
 1140|  33.5k|	EG(main_fiber_context) = context;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1141|  33.5k|	EG(current_fiber_context) = context;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1142|  33.5k|	EG(active_fiber) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1143|       |
 1144|  33.5k|	zend_fiber_switch_blocking = 0;
 1145|  33.5k|}
zend_fiber_shutdown:
 1148|  33.5k|{
 1149|       |#if defined(__SANITIZE_ADDRESS__) || defined(ZEND_FIBER_UCONTEXT)
 1150|       |	efree(EG(main_fiber_context)->stack);
 1151|       |#endif
 1152|       |
 1153|  33.5k|	efree(EG(main_fiber_context));
  ------------------
  |  |  154|  33.5k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1154|       |
 1155|  33.5k|	zend_fiber_switch_block();
 1156|  33.5k|}
zend_fibers.c:zend_fiber_stack_allocate:
  206|    290|{
  207|    290|	void *pointer;
  208|    290|	const size_t page_size = zend_fiber_get_page_size();
  209|    290|	const size_t minimum_stack_size = page_size + ZEND_FIBER_GUARD_PAGES * page_size
  ------------------
  |  |   25|    290|#define ZEND_FIBER_GUARD_PAGES 1
  ------------------
  210|       |#ifdef __SANITIZE_ADDRESS__
  211|       |	// necessary correction due to ASAN redzones
  212|       |	* 6
  213|       |#endif
  214|    290|	;
  215|       |
  216|    290|	if (size < minimum_stack_size) {
  ------------------
  |  Branch (216:6): [True: 1, False: 289]
  ------------------
  217|      1|		zend_throw_exception_ex(NULL, 0, "Fiber stack size is too small, it needs to be at least %zu bytes", minimum_stack_size);
  218|      1|		return NULL;
  219|      1|	}
  220|       |
  221|    289|	const size_t stack_size = (size + page_size - 1) / page_size * page_size;
  222|    289|	const size_t alloc_size = stack_size + ZEND_FIBER_GUARD_PAGES * page_size;
  ------------------
  |  |   25|    289|#define ZEND_FIBER_GUARD_PAGES 1
  ------------------
  223|       |
  224|       |#ifdef ZEND_WIN32
  225|       |	pointer = VirtualAlloc(0, alloc_size, MEM_COMMIT, PAGE_READWRITE);
  226|       |
  227|       |	if (!pointer) {
  228|       |		DWORD err = GetLastError();
  229|       |		char *errmsg = php_win32_error_to_msg(err);
  230|       |		zend_throw_exception_ex(NULL, 0, "Fiber stack allocate failed: VirtualAlloc failed: [0x%08lx] %s", err, errmsg[0] ? errmsg : "Unknown");
  231|       |		php_win32_error_msg_free(errmsg);
  232|       |		return NULL;
  233|       |	}
  234|       |
  235|       |# if ZEND_FIBER_GUARD_PAGES
  236|       |	DWORD protect;
  237|       |
  238|       |	if (!VirtualProtect(pointer, ZEND_FIBER_GUARD_PAGES * page_size, PAGE_READWRITE | PAGE_GUARD, &protect)) {
  239|       |		DWORD err = GetLastError();
  240|       |		char *errmsg = php_win32_error_to_msg(err);
  241|       |		zend_throw_exception_ex(NULL, 0, "Fiber stack protect failed: VirtualProtect failed: [0x%08lx] %s", err, errmsg[0] ? errmsg : "Unknown");
  242|       |		php_win32_error_msg_free(errmsg);
  243|       |		VirtualFree(pointer, 0, MEM_RELEASE);
  244|       |		return NULL;
  245|       |	}
  246|       |# endif
  247|       |#else
  248|    289|	pointer = mmap(NULL, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
  249|       |
  250|    289|	if (pointer == MAP_FAILED) {
  ------------------
  |  Branch (250:6): [True: 0, False: 289]
  ------------------
  251|      0|		zend_throw_exception_ex(NULL, 0, "Fiber stack allocate failed: mmap failed: %s (%d)", strerror(errno), errno);
  252|      0|		return NULL;
  253|      0|	}
  254|       |
  255|    289|#if defined(MADV_NOHUGEPAGE)
  256|       |	/* Multiple reasons to fail, ignore all errors only needed
  257|       |	 * for linux < 6.8 */
  258|    289|	(void) madvise(pointer, alloc_size, MADV_NOHUGEPAGE);
  259|    289|#endif
  260|       |
  261|    289|	zend_mmap_set_name(pointer, alloc_size, "zend_fiber_stack");
  262|       |
  263|    289|# if ZEND_FIBER_GUARD_PAGES
  264|    289|	if (mprotect(pointer, ZEND_FIBER_GUARD_PAGES * page_size, PROT_NONE) < 0) {
  ------------------
  |  |   25|    289|#define ZEND_FIBER_GUARD_PAGES 1
  ------------------
  |  Branch (264:6): [True: 0, False: 289]
  ------------------
  265|      0|		zend_throw_exception_ex(NULL, 0, "Fiber stack protect failed: mprotect failed: %s (%d)", strerror(errno), errno);
  266|      0|		munmap(pointer, alloc_size);
  267|      0|		return NULL;
  268|      0|	}
  269|    289|# endif
  270|    289|#endif
  271|       |
  272|    289|	zend_fiber_stack *stack = emalloc(sizeof(zend_fiber_stack));
  ------------------
  |  |  150|    289|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    289|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    289|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    289|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    289|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|    289|	stack->pointer = (void *) ((uintptr_t) pointer + ZEND_FIBER_GUARD_PAGES * page_size);
  ------------------
  |  |   25|    289|#define ZEND_FIBER_GUARD_PAGES 1
  ------------------
  275|    289|	stack->size = stack_size;
  276|       |
  277|       |#if !defined(ZEND_FIBER_UCONTEXT) && BOOST_CONTEXT_SHADOW_STACK
  278|       |	/* shadow stack saves ret address only, need less space */
  279|       |	stack->ss_size= stack_size >> 5;
  280|       |
  281|       |	/* align shadow stack to 8 bytes. */
  282|       |	stack->ss_size = (stack->ss_size + 7) & ~7;
  283|       |
  284|       |	/* issue syscall to create shadow stack for the new fcontext */
  285|       |	/* SHADOW_STACK_SET_TOKEN option will put "restore token" on the new shadow stack */
  286|       |	stack->ss_base = (void *)syscall(__NR_map_shadow_stack, 0, stack->ss_size, SHADOW_STACK_SET_TOKEN);
  287|       |
  288|       |	if (stack->ss_base == MAP_FAILED) {
  289|       |		zend_throw_exception_ex(NULL, 0, "Fiber shadow stack allocate failed: mmap failed: %s (%d)", strerror(errno), errno);
  290|       |		return NULL;
  291|       |	}
  292|       |#endif
  293|       |
  294|       |#ifdef VALGRIND_STACK_REGISTER
  295|       |	uintptr_t base = (uintptr_t) stack->pointer;
  296|       |	stack->valgrind_stack_id = VALGRIND_STACK_REGISTER(base, base + stack->size);
  297|       |#endif
  298|       |
  299|       |#ifdef __SANITIZE_ADDRESS__
  300|       |	stack->asan_pointer = stack->pointer;
  301|       |	stack->asan_size = stack->size;
  302|       |#endif
  303|       |
  304|    289|	return stack;
  305|    289|}
zend_fibers.c:zend_fiber_get_page_size:
  191|    579|{
  192|    579|	static size_t page_size = 0;
  193|       |
  194|    579|	if (!page_size) {
  ------------------
  |  Branch (194:6): [True: 1, False: 578]
  ------------------
  195|      1|		page_size = zend_get_page_size();
  196|      1|		if (!page_size || (page_size & (page_size - 1))) {
  ------------------
  |  Branch (196:7): [True: 0, False: 1]
  |  Branch (196:21): [True: 0, False: 1]
  ------------------
  197|       |			/* anyway, we have to return a valid result */
  198|      0|			page_size = ZEND_FIBER_DEFAULT_PAGE_SIZE;
  ------------------
  |  |  188|      0|#define ZEND_FIBER_DEFAULT_PAGE_SIZE 4096
  ------------------
  199|      0|		}
  200|      1|	}
  201|       |
  202|    579|	return page_size;
  203|    579|}
zend_fibers.c:zend_fiber_trampoline:
  365|    289|{
  366|       |	/* Initialize transfer struct with a copy of passed data. */
  367|       |#ifdef ZEND_FIBER_UCONTEXT
  368|       |	zend_fiber_transfer transfer = *transfer_data;
  369|       |#else
  370|    289|	zend_fiber_transfer transfer = *data.transfer;
  371|    289|#endif
  372|       |
  373|    289|	zend_fiber_context *from = transfer.context;
  374|       |
  375|       |#ifdef __SANITIZE_ADDRESS__
  376|       |	__sanitizer_finish_switch_fiber(NULL, &from->stack->asan_pointer, &from->stack->asan_size);
  377|       |#endif
  378|       |
  379|    289|#ifndef ZEND_FIBER_UCONTEXT
  380|       |	/* Get the context that resumed us and update its handle to allow for symmetric coroutines. */
  381|    289|	from->handle = data.handle;
  382|    289|#endif
  383|       |
  384|       |	/* Ensure that previous fiber will be cleaned up (needed by symmetric coroutines). */
  385|    289|	if (from->status == ZEND_FIBER_STATUS_DEAD) {
  ------------------
  |  Branch (385:6): [True: 0, False: 289]
  ------------------
  386|      0|		zend_fiber_destroy_context(from);
  387|      0|	}
  388|       |
  389|    289|	zend_fiber_context *context = EG(current_fiber_context);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  390|       |
  391|    289|	context->function(&transfer);
  392|    289|	context->status = ZEND_FIBER_STATUS_DEAD;
  393|       |
  394|       |	/* Final context switch, the fiber must not be resumed afterwards! */
  395|    289|	zend_fiber_switch_context(&transfer);
  396|       |
  397|       |	/* Abort here because we are in an inconsistent program state. */
  398|    289|	abort();
  399|    289|}
zend_fibers.c:zend_fiber_stack_free:
  308|    289|{
  309|       |#ifdef VALGRIND_STACK_DEREGISTER
  310|       |	VALGRIND_STACK_DEREGISTER(stack->valgrind_stack_id);
  311|       |#endif
  312|       |
  313|    289|	const size_t page_size = zend_fiber_get_page_size();
  314|       |
  315|    289|	void *pointer = (void *) ((uintptr_t) stack->pointer - ZEND_FIBER_GUARD_PAGES * page_size);
  ------------------
  |  |   25|    289|#define ZEND_FIBER_GUARD_PAGES 1
  ------------------
  316|       |
  317|       |#ifdef __SANITIZE_ADDRESS__
  318|       |	/* If another mmap happens after unmapping, it may trigger the stale stack red zones
  319|       |	 * so we have to unpoison it before unmapping. */
  320|       |	ASAN_UNPOISON_MEMORY_REGION(pointer, stack->size + ZEND_FIBER_GUARD_PAGES * page_size);
  321|       |#endif
  322|       |
  323|       |#ifdef ZEND_WIN32
  324|       |	VirtualFree(pointer, 0, MEM_RELEASE);
  325|       |#else
  326|    289|	munmap(pointer, stack->size + ZEND_FIBER_GUARD_PAGES * page_size);
  ------------------
  |  |   25|    289|#define ZEND_FIBER_GUARD_PAGES 1
  ------------------
  327|    289|#endif
  328|       |
  329|       |#if !defined(ZEND_FIBER_UCONTEXT) && BOOST_CONTEXT_SHADOW_STACK
  330|       |	munmap(stack->ss_base, stack->ss_size);
  331|       |#endif
  332|       |
  333|       |	efree(stack);
  ------------------
  |  |  154|    289|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    289|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    289|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    289|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    289|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  334|    289|}
zend_fibers.c:zend_fiber_capture_vm_state:
  123|  1.13k|{
  124|  1.13k|	state->vm_stack = EG(vm_stack);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  125|  1.13k|	state->vm_stack_top = EG(vm_stack_top);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  126|  1.13k|	state->vm_stack_end = EG(vm_stack_end);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  127|  1.13k|	state->vm_stack_page_size = EG(vm_stack_page_size);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  128|  1.13k|	state->current_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  129|  1.13k|	state->error_reporting = EG(error_reporting);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  130|  1.13k|	state->jit_trace_num = EG(jit_trace_num);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  131|  1.13k|	state->bailout = EG(bailout);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  132|  1.13k|	state->active_fiber = EG(active_fiber);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  133|  1.13k|#ifdef ZEND_CHECK_STACK_LIMIT
  134|  1.13k|	state->stack_base = EG(stack_base);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  135|  1.13k|	state->stack_limit = EG(stack_limit);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  136|  1.13k|#endif
  137|  1.13k|}
zend_fibers.c:zend_fiber_restore_vm_state:
  140|    849|{
  141|    849|	EG(vm_stack) = state->vm_stack;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  142|    849|	EG(vm_stack_top) = state->vm_stack_top;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  143|    849|	EG(vm_stack_end) = state->vm_stack_end;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  144|    849|	EG(vm_stack_page_size) = state->vm_stack_page_size;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  145|    849|	EG(current_execute_data) = state->current_execute_data;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  146|    849|	EG(error_reporting) = state->error_reporting;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  147|    849|	EG(jit_trace_num) = state->jit_trace_num;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  148|    849|	EG(bailout) = state->bailout;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  149|    849|	EG(active_fiber) = state->active_fiber;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  150|    849|#ifdef ZEND_CHECK_STACK_LIMIT
  151|    849|	EG(stack_base) = state->stack_base;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  152|    849|	EG(stack_limit) = state->stack_limit;
  ------------------
  |  |   45|    849|# define EG(v) (executor_globals.v)
  ------------------
  153|    849|#endif
  154|    849|}
zend_fibers.c:zend_fiber_execute:
  567|    289|{
  568|    289|	ZEND_ASSERT(Z_TYPE(transfer->value) == IS_NULL && "Initial transfer value to fiber context must be NULL");
  ------------------
  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (568:2): [True: 0, False: 289]
  |  Branch (568:2): [True: 0, False: 0]
  |  Branch (568:2): [True: 289, False: 0]
  |  Branch (568:2): [True: 289, False: 0]
  ------------------
  569|    289|	ZEND_ASSERT(!transfer->flags && "No flags should be set on initial transfer");
  ------------------
  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (569:2): [True: 0, False: 289]
  |  Branch (569:2): [True: 0, False: 0]
  |  Branch (569:2): [True: 289, False: 0]
  |  Branch (569:2): [True: 289, False: 0]
  ------------------
  570|       |
  571|    289|	zend_fiber *fiber = EG(active_fiber);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  572|       |
  573|       |	/* Determine the current error_reporting ini setting. */
  574|    289|	zend_long error_reporting = zend_ini_long_literal("error_reporting");
  ------------------
  |  |   98|    289|#define zend_ini_long_literal(name) zend_ini_long((name), sizeof("" name) - 1, false)
  ------------------
  575|       |	/* If error_reporting is 0 and not explicitly set to 0, zend_ini_str returns a null pointer. */
  576|    289|	if (!error_reporting && !zend_ini_str_literal("error_reporting")) {
  ------------------
  |  |  100|    289|#define zend_ini_str_literal(name) zend_ini_str((name), sizeof("" name) - 1, false)
  ------------------
  |  Branch (576:6): [True: 289, False: 0]
  |  Branch (576:26): [True: 0, False: 289]
  ------------------
  577|      0|		error_reporting = E_ALL;
  ------------------
  |  |   42|      0|#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   22|      0|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   24|      0|#define E_PARSE				(1<<2L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   25|      0|#define E_NOTICE			(1<<3L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   30|      0|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   31|      0|#define E_USER_WARNING		(1<<9L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   32|      0|#define E_USER_NOTICE		(1<<10L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   35|      0|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   37|      0|#define E_USER_DEPRECATED	(1<<14L)
  |  |  ------------------
  ------------------
  578|      0|	}
  579|       |
  580|    289|	EG(vm_stack) = NULL;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  581|       |
  582|    289|	zend_first_try {
  ------------------
  |  |  291|    289|#define zend_first_try		EG(bailout)=NULL;	zend_try
  |  |  ------------------
  |  |  |  |   45|    289|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |               #define zend_first_try		EG(bailout)=NULL;	zend_try
  |  |  ------------------
  |  |  |  |  276|    289|	{															\
  |  |  |  |  277|    289|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  466|    289|# define JMP_BUF sigjmp_buf
  |  |  |  |  ------------------
  |  |  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|    289|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  278|    289|		JMP_BUF __bailout;										\
  |  |  |  |  ------------------
  |  |  |  |  |  |  466|    289|# define JMP_BUF sigjmp_buf
  |  |  |  |  ------------------
  |  |  |  |  279|    289|																\
  |  |  |  |  280|    289|		EG(bailout) = &__bailout;								\
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|    289|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  281|    289|		if (SETJMP(__bailout)==0) {
  |  |  |  |  ------------------
  |  |  |  |  |  |  464|    289|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (281:7): [True: 289, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  583|    289|		zend_vm_stack stack = zend_vm_stack_new_page(ZEND_FIBER_VM_STACK_SIZE, NULL);
  ------------------
  |  |   28|    289|#define ZEND_FIBER_VM_STACK_SIZE (1024 * sizeof(zval))
  ------------------
  584|    289|		EG(vm_stack) = stack;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  585|    289|		EG(vm_stack_top) = stack->top + ZEND_CALL_FRAME_SLOT;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
              		EG(vm_stack_top) = stack->top + ZEND_CALL_FRAME_SLOT;
  ------------------
  |  |  719|    289|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
  586|    289|		EG(vm_stack_end) = stack->end;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  587|    289|		EG(vm_stack_page_size) = ZEND_FIBER_VM_STACK_SIZE;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
              		EG(vm_stack_page_size) = ZEND_FIBER_VM_STACK_SIZE;
  ------------------
  |  |   28|    289|#define ZEND_FIBER_VM_STACK_SIZE (1024 * sizeof(zval))
  ------------------
  588|       |
  589|    289|		fiber->execute_data = (zend_execute_data *) stack->top;
  590|    289|		fiber->stack_bottom = fiber->execute_data;
  591|       |
  592|    289|		memset(fiber->execute_data, 0, sizeof(zend_execute_data));
  593|       |
  594|    289|		fiber->execute_data->func = &zend_fiber_function;
  595|    289|		fiber->stack_bottom->prev_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  596|       |
  597|    289|		EG(current_execute_data) = fiber->execute_data;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  598|    289|		EG(jit_trace_num) = 0;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  599|    289|		EG(error_reporting) = error_reporting;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  600|       |
  601|    289|#ifdef ZEND_CHECK_STACK_LIMIT
  602|    289|		EG(stack_base) = zend_fiber_stack_base(fiber->context.stack);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  603|    289|		EG(stack_limit) = zend_fiber_stack_limit(fiber->context.stack);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  604|    289|#endif
  605|       |
  606|    289|		fiber->fci.retval = &fiber->result;
  607|       |
  608|    289|		zend_call_function(&fiber->fci, &fiber->fci_cache);
  609|       |
  610|       |		/* Cleanup callback and unset field to prevent GC / duplicate dtor issues. */
  611|    289|		zval_ptr_dtor(&fiber->fci.function_name);
  612|    289|		ZVAL_UNDEF(&fiber->fci.function_name);
  ------------------
  |  | 1055|    289|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    289|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    289|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    289|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    289|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    289|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 289]
  |  |  ------------------
  ------------------
  613|       |
  614|    289|		if (EG(exception)) {
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 280, False: 9]
  |  |  ------------------
  ------------------
  615|    280|			if (!(fiber->flags & ZEND_FIBER_FLAG_DESTROYED)
  ------------------
  |  Branch (615:8): [True: 5, False: 275]
  ------------------
  616|    275|				|| !(zend_is_graceful_exit(EG(exception)) || zend_is_unwind_exit(EG(exception)))
  ------------------
  |  |   45|    275|# define EG(v) (executor_globals.v)
  ------------------
              				|| !(zend_is_graceful_exit(EG(exception)) || zend_is_unwind_exit(EG(exception)))
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (616:10): [True: 272, False: 3]
  |  Branch (616:50): [True: 0, False: 3]
  ------------------
  617|    280|			) {
  618|      8|				fiber->flags |= ZEND_FIBER_FLAG_THREW;
  619|      8|				transfer->flags = ZEND_FIBER_TRANSFER_FLAG_ERROR;
  620|       |
  621|      8|				ZVAL_OBJ_COPY(&transfer->value, EG(exception));
  ------------------
  |  | 1146|      8|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      8|		zval *__z = (z);						\
  |  | 1148|      8|		zend_object *__o = (o);					\
  |  | 1149|      8|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      8|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      8|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      8|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      8|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      8|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      8|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  622|      8|			}
  623|       |
  624|    280|			zend_clear_exception();
  625|    280|		}
  626|    289|	} zend_catch {
  ------------------
  |  |  283|    289|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|    289|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      1|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (626:4): [True: 0, False: 289]
  |  Branch (626:4): [True: 288, False: 1]
  |  Branch (626:4): [True: 0, False: 0]
  |  Branch (626:4): [True: 1, False: 18.4E]
  ------------------
  627|      1|		fiber->flags |= ZEND_FIBER_FLAG_BAILOUT;
  628|      1|		transfer->flags = ZEND_FIBER_TRANSFER_FLAG_BAILOUT;
  629|    289|	} zend_end_try();
  ------------------
  |  |  288|      1|		}														\
  |  |  289|    289|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|    289|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|    289|	}
  ------------------
  630|       |
  631|    289|	fiber->context.cleanup = &zend_fiber_cleanup;
  632|    289|	fiber->vm_stack = EG(vm_stack);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  633|       |
  634|    289|	transfer->context = fiber->caller;
  635|    289|}
zend_fibers.c:zend_fiber_cleanup:
  554|    289|{
  555|    289|	zend_fiber *fiber = zend_fiber_from_context(context);
  556|       |
  557|    289|	zend_vm_stack current_stack = EG(vm_stack);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  558|    289|	EG(vm_stack) = fiber->vm_stack;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  559|    289|	zend_vm_stack_destroy();
  560|    289|	EG(vm_stack) = current_stack;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  561|    289|	fiber->execute_data = NULL;
  562|    289|	fiber->stack_bottom = NULL;
  563|       |	fiber->caller = NULL;
  564|    289|}
zend_fibers.c:zend_fiber_resume_internal:
  680|    569|{
  681|    569|	zend_fiber *previous = EG(active_fiber);
  ------------------
  |  |   45|    569|# define EG(v) (executor_globals.v)
  ------------------
  682|       |
  683|    569|	if (previous) {
  ------------------
  |  Branch (683:6): [True: 0, False: 569]
  ------------------
  684|      0|		previous->execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  685|      0|	}
  686|       |
  687|    569|	fiber->caller = EG(current_fiber_context);
  ------------------
  |  |   45|    569|# define EG(v) (executor_globals.v)
  ------------------
  688|    569|	EG(active_fiber) = fiber;
  ------------------
  |  |   45|    569|# define EG(v) (executor_globals.v)
  ------------------
  689|       |
  690|    569|	zend_fiber_transfer transfer = zend_fiber_switch_to(fiber->previous, value, exception);
  691|       |
  692|    569|	EG(active_fiber) = previous;
  ------------------
  |  |   45|    569|# define EG(v) (executor_globals.v)
  ------------------
  693|       |
  694|    569|	return transfer;
  695|    569|}
zend_fibers.c:zend_fiber_switch_to:
  656|    849|) {
  657|    849|	zend_fiber_transfer transfer = {
  658|    849|		.context = context,
  659|    849|		.flags = exception ? ZEND_FIBER_TRANSFER_FLAG_ERROR : 0,
  ------------------
  |  Branch (659:12): [True: 276, False: 573]
  ------------------
  660|    849|	};
  661|       |
  662|    849|	if (value) {
  ------------------
  |  Branch (662:6): [True: 282, False: 567]
  ------------------
  663|    282|		ZVAL_COPY(&transfer.value, value);
  ------------------
  |  | 1425|    282|	do {												\
  |  | 1426|    282|		zval *_z1 = (z);								\
  |  | 1427|    282|		const zval *_z2 = (v);							\
  |  | 1428|    282|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    282|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    282|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    282|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    282|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    282|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    282|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    282|	do {												\
  |  |  |  | 1408|    282|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    282|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    282|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    282|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    282|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    282|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    282|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 282]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    282|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    282|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    282|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 279, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    279|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    279|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    279|		}												\
  |  | 1434|    282|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 282]
  |  |  ------------------
  ------------------
  664|    567|	} else {
  665|    567|		ZVAL_NULL(&transfer.value);
  ------------------
  |  | 1059|    567|#define ZVAL_NULL(z) do {				\
  |  | 1060|    567|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    567|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    567|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    567|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    567|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 567]
  |  |  ------------------
  ------------------
  666|    567|	}
  667|       |
  668|    849|	zend_fiber_switch_context(&transfer);
  669|       |
  670|       |	/* Forward bailout into current fiber. */
  671|    849|	if (UNEXPECTED(transfer.flags & ZEND_FIBER_TRANSFER_FLAG_BAILOUT)) {
  ------------------
  |  |  457|    849|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 848]
  |  |  ------------------
  ------------------
  672|      1|		EG(active_fiber) = NULL;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  673|      1|		zend_bailout();
  ------------------
  |  |  273|      1|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
  674|      1|	}
  675|       |
  676|    848|	return transfer;
  677|    849|}
zend_fibers.c:zend_fiber_delegate_transfer_result:
  640|    573|) {
  641|    573|	if (transfer->flags & ZEND_FIBER_TRANSFER_FLAG_ERROR) {
  ------------------
  |  Branch (641:6): [True: 281, False: 292]
  ------------------
  642|       |		/* Use internal throw to skip the Throwable-check that would fail for (graceful) exit. */
  643|    281|		zend_throw_exception_internal(Z_OBJ(transfer->value));
  ------------------
  |  |  999|    281|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  644|    281|		RETURN_THROWS();
  ------------------
  |  | 1071|    281|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|    281|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (644:3): [True: 0, False: 281]
  |  Branch (644:3): [True: 281, False: 0]
  ------------------
  645|    281|	}
  646|       |
  647|    292|	if (return_value != NULL) {
  ------------------
  |  Branch (647:6): [True: 292, False: 0]
  ------------------
  648|    292|		RETURN_COPY_VALUE(&transfer->value);
  ------------------
  |  | 1066|    292|#define RETURN_COPY_VALUE(zv)			do { RETVAL_COPY_VALUE(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1040|    292|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|    292|	do {												\
  |  |  |  |  |  | 1417|    292|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|    292|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|    292|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    292|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    292|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|    292|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    292|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    292|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|    292|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|    292|	do {												\
  |  |  |  |  |  |  |  | 1408|    292|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|    292|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|    292|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|    292|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|    292|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|    292|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|    292|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 292]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|    292|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 292]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1066:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  649|    292|	} else {
  650|      0|		zval_ptr_dtor(&transfer->value);
  651|      0|	}
  652|    292|}
zend_fibers.c:zend_fiber_suspend_internal:
  698|    280|{
  699|    280|	ZEND_ASSERT(!(fiber->flags & ZEND_FIBER_FLAG_DESTROYED));
  ------------------
  |  |  112|    280|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (699:2): [True: 0, False: 280]
  |  Branch (699:2): [True: 280, False: 0]
  ------------------
  700|    280|	ZEND_ASSERT(fiber->context.status == ZEND_FIBER_STATUS_RUNNING || fiber->context.status == ZEND_FIBER_STATUS_SUSPENDED);
  ------------------
  |  |  112|    280|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (700:2): [True: 280, False: 0]
  |  Branch (700:2): [True: 0, False: 0]
  |  Branch (700:2): [True: 280, False: 0]
  |  Branch (700:2): [True: 0, False: 0]
  ------------------
  701|    280|	ZEND_ASSERT(fiber->caller != NULL);
  ------------------
  |  |  112|    280|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (701:2): [True: 0, False: 280]
  |  Branch (701:2): [True: 280, False: 0]
  ------------------
  702|       |
  703|    280|	zend_fiber_context *caller = fiber->caller;
  704|    280|	fiber->previous = EG(current_fiber_context);
  ------------------
  |  |   45|    280|# define EG(v) (executor_globals.v)
  ------------------
  705|    280|	fiber->caller = NULL;
  706|    280|	fiber->execute_data = EG(current_execute_data);
  ------------------
  |  |   45|    280|# define EG(v) (executor_globals.v)
  ------------------
  707|       |
  708|       |	return zend_fiber_switch_to(caller, value, false);
  709|    280|}
zend_fibers.c:zend_fiber_object_create:
  760|    302|{
  761|    302|	zend_fiber *fiber = emalloc(sizeof(zend_fiber));
  ------------------
  |  |  150|    302|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    302|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    302|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    302|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    302|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  762|    302|	memset(fiber, 0, sizeof(zend_fiber));
  763|       |
  764|    302|	zend_object_std_init(&fiber->std, ce);
  765|    302|	return &fiber->std;
  766|    302|}
zend_fibers.c:zend_fiber_object_destroy:
  769|    299|{
  770|    299|	zend_fiber *fiber = (zend_fiber *) object;
  771|       |
  772|    299|	if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED) {
  ------------------
  |  Branch (772:6): [True: 24, False: 275]
  ------------------
  773|     24|		return;
  774|     24|	}
  775|       |
  776|    275|	zend_object *exception = EG(exception);
  ------------------
  |  |   45|    275|# define EG(v) (executor_globals.v)
  ------------------
  777|    275|	EG(exception) = NULL;
  ------------------
  |  |   45|    275|# define EG(v) (executor_globals.v)
  ------------------
  778|       |
  779|    275|	zval graceful_exit;
  780|    275|	ZVAL_OBJ(&graceful_exit, zend_create_graceful_exit());
  ------------------
  |  | 1140|    275|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|    275|		zval *__z = (z);						\
  |  | 1142|    275|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|    275|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    275|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|    275|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|    275|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    275|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|    275|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    275|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    275|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    275|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    275|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    275|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|    275|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 275]
  |  |  ------------------
  ------------------
  781|       |
  782|    275|	fiber->flags |= ZEND_FIBER_FLAG_DESTROYED;
  783|       |
  784|    275|	zend_fiber_transfer transfer = zend_fiber_resume_internal(fiber, &graceful_exit, true);
  785|       |
  786|    275|	zval_ptr_dtor(&graceful_exit);
  787|       |
  788|    275|	if (transfer.flags & ZEND_FIBER_TRANSFER_FLAG_ERROR) {
  ------------------
  |  Branch (788:6): [True: 3, False: 272]
  ------------------
  789|      3|		EG(exception) = Z_OBJ(transfer.value);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
              		EG(exception) = Z_OBJ(transfer.value);
  ------------------
  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  790|       |
  791|      3|		if (!exception && EG(current_execute_data) && EG(current_execute_data)->func
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 1]
  |  |  ------------------
  ------------------
              		if (!exception && EG(current_execute_data) && EG(current_execute_data)->func
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (791:7): [True: 3, False: 0]
  |  Branch (791:49): [True: 2, False: 0]
  ------------------
  792|      2|				&& ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) {
  ------------------
  |  | 1081|      2|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  793|      2|			zend_rethrow_exception(EG(current_execute_data));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  794|      2|		}
  795|       |
  796|      3|		zend_exception_set_previous(EG(exception), exception);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  797|       |
  798|      3|		if (!EG(current_execute_data)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (798:7): [True: 1, False: 2]
  ------------------
  799|      1|			zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              			zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
  800|      1|		}
  801|    272|	} else {
  802|    272|		zval_ptr_dtor(&transfer.value);
  803|    272|		EG(exception) = exception;
  ------------------
  |  |   45|    272|# define EG(v) (executor_globals.v)
  ------------------
  804|    272|	}
  805|    275|}
zend_fibers.c:zend_fiber_object_free:
  808|    302|{
  809|    302|	zend_fiber *fiber = (zend_fiber *) object;
  810|       |
  811|    302|	zval_ptr_dtor(&fiber->fci.function_name);
  812|    302|	zval_ptr_dtor(&fiber->result);
  813|       |
  814|    302|	zend_object_std_dtor(&fiber->std);
  815|    302|}
zend_fibers.c:zend_fiber_object_gc:
  818|    596|{
  819|    596|	zend_fiber *fiber = (zend_fiber *) object;
  820|    596|	zend_get_gc_buffer *buf = zend_get_gc_buffer_create();
  821|       |
  822|    596|	zend_get_gc_buffer_add_zval(buf, &fiber->fci.function_name);
  823|    596|	zend_get_gc_buffer_add_zval(buf, &fiber->result);
  824|       |
  825|    596|	if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL) {
  ------------------
  |  Branch (825:6): [True: 50, False: 546]
  |  Branch (825:62): [True: 0, False: 546]
  ------------------
  826|     50|		zend_get_gc_buffer_use(buf, table, num);
  827|     50|		return NULL;
  828|     50|	}
  829|       |
  830|    546|	HashTable *lastSymTable = NULL;
  831|    546|	zend_execute_data *ex = fiber->execute_data;
  832|  2.19k|	for (; ex; ex = ex->prev_execute_data) {
  ------------------
  |  Branch (832:9): [True: 1.64k, False: 546]
  ------------------
  833|  1.64k|		HashTable *symTable;
  834|  1.64k|		if (ZEND_CALL_INFO(ex) & ZEND_CALL_GENERATOR) {
  ------------------
  |  |  687|  1.64k|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|  1.64k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if (ZEND_CALL_INFO(ex) & ZEND_CALL_GENERATOR) {
  ------------------
  |  |  670|  1.64k|#define ZEND_CALL_GENERATOR          (1 << 24)
  ------------------
  |  Branch (834:7): [True: 0, False: 1.64k]
  ------------------
  835|       |			/* The generator object is stored in ex->return_value */
  836|      0|			zend_generator *generator = (zend_generator*)ex->return_value;
  837|       |			/* There are two cases to consider:
  838|       |			 * - If the generator is currently running, the Generator's GC
  839|       |			 *   handler will ignore it because it is not collectable. However,
  840|       |			 *   in this context the generator is suspended in Fiber::suspend()
  841|       |			 *   and may be collectable, so we can inspect it.
  842|       |			 * - If the generator is not running, the Generator's GC handler
  843|       |			 *   will inspect it. In this case we have to skip the frame.
  844|       |			 */
  845|      0|			if (!(generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING)) {
  ------------------
  |  Branch (845:8): [True: 0, False: 0]
  ------------------
  846|      0|				continue;
  847|      0|			}
  848|      0|			symTable = zend_generator_frame_gc(buf, generator);
  849|  1.64k|		} else {
  850|  1.64k|			symTable = zend_unfinished_execution_gc_ex(ex, ex->func && ZEND_USER_CODE(ex->func->type) ? ex->call : NULL, buf, false);
  ------------------
  |  | 1081|  1.64k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 552, False: 1.09k]
  |  |  ------------------
  ------------------
  |  Branch (850:51): [True: 1.64k, False: 0]
  ------------------
  851|  1.64k|		}
  852|  1.64k|		if (symTable) {
  ------------------
  |  Branch (852:7): [True: 8, False: 1.63k]
  ------------------
  853|      8|			if (lastSymTable) {
  ------------------
  |  Branch (853:8): [True: 4, False: 4]
  ------------------
  854|      4|				zval *val;
  855|     20|				ZEND_HASH_FOREACH_VAL(lastSymTable, val) {
  ------------------
  |  | 1117|      8|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      4|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      4|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      4|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      4|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      4|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      4|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      4|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     12|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      8|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 8, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1034|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      8|	_val = _z;
  ------------------
  856|     20|					if (EXPECTED(Z_TYPE_P(val) == IS_INDIRECT)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 4]
  |  |  ------------------
  ------------------
  857|      4|						val = Z_INDIRECT_P(val);
  ------------------
  |  | 1044|      4|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      4|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  858|      4|					}
  859|     20|					zend_get_gc_buffer_add_zval(buf, val);
  860|     20|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  861|      4|			}
  862|      8|			lastSymTable = symTable;
  863|      8|		}
  864|  1.64k|	}
  865|       |
  866|    546|	zend_get_gc_buffer_use(buf, table, num);
  867|       |
  868|    546|	return lastSymTable;
  869|    596|}

zend_fibers.c:zend_fiber_from_context:
  154|    289|{
  155|    289|	ZEND_ASSERT(context->kind == zend_ce_fiber && "Fiber context does not belong to a Zend fiber");
  ------------------
  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (155:2): [True: 0, False: 289]
  |  Branch (155:2): [True: 0, False: 0]
  |  Branch (155:2): [True: 289, False: 0]
  |  Branch (155:2): [True: 289, False: 0]
  ------------------
  156|       |
  157|    289|	return ZEND_CONTAINER_OF(context, zend_fiber, context);
  ------------------
  |  |  407|    289|	_Generic( \
  |  |  408|    289|		(ptr), \
  |  |  409|    289|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  410|    289|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  411|    289|	)
  ------------------
  158|    289|}

zend_fibers.c:register_class_Fiber:
   74|      2|{
   75|      2|	zend_class_entry ce, *class_entry;
   76|       |
   77|      2|	INIT_CLASS_ENTRY(ce, "Fiber", class_Fiber_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   78|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
   79|       |
   80|      2|	return class_entry;
   81|      2|}
zend_fibers.c:register_class_FiberError:
   84|      2|{
   85|      2|	zend_class_entry ce, *class_entry;
   86|       |
   87|      2|	INIT_CLASS_ENTRY(ce, "FiberError", class_FiberError_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   88|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
   89|       |
   90|      2|	return class_entry;
   91|      2|}

zend_init_fpu:
   23|  33.5k|{
   24|       |#if XPFPA_HAVE_CW
   25|       |	XPFPA_DECLARE
   26|       |
   27|       |	if (!EG(saved_fpu_cw_ptr)) {
   28|       |		EG(saved_fpu_cw_ptr) = (void*)&EG(saved_fpu_cw);
   29|       |	}
   30|       |	XPFPA_STORE_CW(EG(saved_fpu_cw_ptr));
   31|       |	XPFPA_SWITCH_DOUBLE();
   32|       |#else
   33|  33.5k|	EG(saved_fpu_cw_ptr) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
   34|  33.5k|#endif
   35|  33.5k|}
zend_shutdown_fpu:
   39|  33.5k|{
   40|       |#if XPFPA_HAVE_CW
   41|       |	if (EG(saved_fpu_cw_ptr)) {
   42|       |		XPFPA_RESTORE_CW(EG(saved_fpu_cw_ptr));
   43|       |	}
   44|       |#endif
   45|  33.5k|	EG(saved_fpu_cw_ptr) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
   46|  33.5k|}

gc_globals_ctor:
  550|      2|{
  551|       |#ifdef ZTS
  552|       |	ts_allocate_fast_id(&gc_globals_id, &gc_globals_offset, sizeof(zend_gc_globals), (ts_allocate_ctor) gc_globals_ctor_ex, (ts_allocate_dtor) root_buffer_dtor);
  553|       |#else
  554|      2|	gc_globals_ctor_ex(&gc_globals);
  555|      2|#endif
  556|      2|}
gc_reset:
  566|  33.5k|{
  567|  33.5k|	if (GC_G(buf)) {
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (312:17): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  568|  33.5k|		GC_G(gc_active) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  569|  33.5k|		GC_G(gc_protected) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  570|  33.5k|		GC_G(gc_full) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  571|  33.5k|		GC_G(unused) = GC_INVALID;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(unused) = GC_INVALID;
  ------------------
  |  |  181|  33.5k|#define GC_INVALID           0
  ------------------
  572|  33.5k|		GC_G(first_unused) = GC_FIRST_ROOT;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(first_unused) = GC_FIRST_ROOT;
  ------------------
  |  |  182|  33.5k|#define GC_FIRST_ROOT        1
  ------------------
  573|  33.5k|		GC_G(num_roots) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  574|       |
  575|  33.5k|		GC_G(gc_runs) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  576|  33.5k|		GC_G(collected) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  577|       |
  578|  33.5k|		GC_G(collector_time) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  579|  33.5k|		GC_G(dtor_time) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  580|  33.5k|		GC_G(free_time) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  581|       |
  582|  33.5k|		GC_G(dtor_idx) = GC_FIRST_ROOT;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(dtor_idx) = GC_FIRST_ROOT;
  ------------------
  |  |  182|  33.5k|#define GC_FIRST_ROOT        1
  ------------------
  583|  33.5k|		GC_G(dtor_end) = 0;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  584|  33.5k|		GC_G(dtor_fiber) = NULL;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  585|  33.5k|		GC_G(dtor_fiber_running) = false;
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  586|       |
  587|       |#if GC_BENCH
  588|       |		GC_G(root_buf_length) = 0;
  589|       |		GC_G(root_buf_peak) = 0;
  590|       |		GC_G(zval_possible_root) = 0;
  591|       |		GC_G(zval_buffered) = 0;
  592|       |		GC_G(zval_remove_from_buffer) = 0;
  593|       |		GC_G(zval_marked_grey) = 0;
  594|       |#endif
  595|  33.5k|	}
  596|       |
  597|  33.5k|	GC_G(activated_at) = zend_hrtime();
  ------------------
  |  |  312|  33.5k|#define GC_G(v) (gc_globals.v)
  ------------------
  598|  33.5k|}
gc_enable:
  603|     24|{
  604|     24|	bool old_enabled = GC_G(gc_enabled);
  ------------------
  |  |  312|     24|#define GC_G(v) (gc_globals.v)
  ------------------
  605|     24|	GC_G(gc_enabled) = enable;
  ------------------
  |  |  312|     24|#define GC_G(v) (gc_globals.v)
  ------------------
  606|     24|	if (enable && !old_enabled && GC_G(buf) == NULL) {
  ------------------
  |  |  312|     10|#define GC_G(v) (gc_globals.v)
  ------------------
  |  Branch (606:6): [True: 16, False: 8]
  |  Branch (606:16): [True: 10, False: 6]
  |  Branch (606:32): [True: 2, False: 8]
  ------------------
  607|      2|		GC_G(buf) = (gc_root_buffer*) pemalloc(sizeof(gc_root_buffer) * GC_DEFAULT_BUF_SIZE, 1);
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(buf) = (gc_root_buffer*) pemalloc(sizeof(gc_root_buffer) * GC_DEFAULT_BUF_SIZE, 1);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, Folded]
  |  |  ------------------
  ------------------
  608|      2|		GC_G(buf)[0].ref = NULL;
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  ------------------
  609|      2|		GC_G(buf_size) = GC_DEFAULT_BUF_SIZE;
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(buf_size) = GC_DEFAULT_BUF_SIZE;
  ------------------
  |  |  184|      2|#define GC_DEFAULT_BUF_SIZE  (16 * 1024)
  ------------------
  610|      2|		GC_G(gc_threshold) = GC_THRESHOLD_DEFAULT;
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(gc_threshold) = GC_THRESHOLD_DEFAULT;
  ------------------
  |  |  190|      2|#define GC_THRESHOLD_DEFAULT (10000 + GC_FIRST_ROOT)
  |  |  ------------------
  |  |  |  |  182|      2|#define GC_FIRST_ROOT        1
  |  |  ------------------
  ------------------
  611|      2|		gc_reset();
  612|      2|	}
  613|     24|	return old_enabled;
  614|     24|}
gc_enabled:
  617|     14|{
  618|     14|	return GC_G(gc_enabled);
  ------------------
  |  |  312|     14|#define GC_G(v) (gc_globals.v)
  ------------------
  619|     14|}
gc_protect:
  623|  1.76k|{
  624|  1.76k|	bool old_protected = GC_G(gc_protected);
  ------------------
  |  |  312|  1.76k|#define GC_G(v) (gc_globals.v)
  ------------------
  625|  1.76k|	GC_G(gc_protected) = protect;
  ------------------
  |  |  312|  1.76k|#define GC_G(v) (gc_globals.v)
  ------------------
  626|  1.76k|	return old_protected;
  627|  1.76k|}
gc_possible_root:
  738|   138k|{
  739|   138k|	uint32_t idx;
  740|   138k|	gc_root_buffer *newRoot;
  741|       |
  742|   138k|	if (UNEXPECTED(GC_G(gc_protected))) {
  ------------------
  |  |  457|   138k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4.79k, False: 133k]
  |  |  ------------------
  ------------------
  743|  4.79k|		return;
  744|  4.79k|	}
  745|       |
  746|   133k|	GC_BENCH_INC(zval_possible_root);
  747|       |
  748|   133k|	if (EXPECTED(GC_HAS_UNUSED())) {
  ------------------
  |  |  456|   133k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 659, False: 133k]
  |  |  ------------------
  ------------------
  749|    659|		idx = GC_FETCH_UNUSED();
  ------------------
  |  |  240|    659|	gc_fetch_unused()
  ------------------
  750|   133k|	} else if (EXPECTED(GC_HAS_NEXT_UNUSED_UNDER_THRESHOLD())) {
  ------------------
  |  |  456|   133k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 133k, False: 0]
  |  |  ------------------
  ------------------
  751|   133k|		idx = GC_FETCH_NEXT_UNUSED();
  ------------------
  |  |  251|   133k|	gc_fetch_next_unused()
  ------------------
  752|   133k|	} else {
  753|      0|		gc_possible_root_when_full(ref);
  754|      0|		return;
  755|      0|	}
  756|       |
  757|   133k|	ZEND_ASSERT(GC_TYPE(ref) == IS_ARRAY || GC_TYPE(ref) == IS_OBJECT);
  ------------------
  |  |  112|   133k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (757:2): [True: 133k, False: 0]
  |  Branch (757:2): [True: 0, False: 0]
  |  Branch (757:2): [True: 131k, False: 2.28k]
  |  Branch (757:2): [True: 2.28k, False: 0]
  ------------------
  758|   133k|	ZEND_ASSERT(GC_INFO(ref) == 0);
  ------------------
  |  |  112|   133k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (758:2): [True: 0, False: 133k]
  |  Branch (758:2): [True: 133k, False: 0]
  ------------------
  759|       |
  760|   133k|	newRoot = GC_IDX2PTR(idx);
  ------------------
  |  |  172|   133k|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
  761|   133k|	newRoot->ref = ref; /* GC_ROOT tag is 0 */
  762|   133k|	GC_TRACE_SET_COLOR(ref, GC_PURPLE);
  763|       |
  764|   133k|	idx = gc_compress(idx);
  765|   133k|	GC_REF_SET_INFO(ref, idx | GC_PURPLE);
  ------------------
  |  |  123|   133k|#define GC_REF_SET_INFO(ref, info) do { \
  |  |  124|   133k|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|   133k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  125|   133k|			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  775|   133k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  757|   133k|#define GC_TYPE_MASK				0x0000000f
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  758|   133k|#define GC_FLAGS_MASK				0x000003f0
  |  |  ------------------
  |  |  126|   133k|			((info) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|   133k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  127|   133k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (127:11): [Folded, False: 133k]
  |  |  ------------------
  ------------------
  766|   133k|	GC_G(num_roots)++;
  ------------------
  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  ------------------
  767|       |
  768|   133k|	GC_BENCH_INC(zval_buffered);
  769|   133k|	GC_BENCH_INC(root_buf_length);
  770|   133k|	GC_BENCH_PEAK(root_buf_peak, root_buf_length);
  771|   133k|}
gc_remove_from_buffer:
  815|   132k|{
  816|   132k|	gc_root_buffer *root;
  817|   132k|	uint32_t idx = GC_REF_ADDRESS(ref);
  ------------------
  |  |  115|   132k|	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  775|   132k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |   89|   132k|#define GC_ADDRESS  0x0fffffu
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|   132k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|   132k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  818|       |
  819|   132k|	GC_BENCH_INC(zval_remove_from_buffer);
  820|       |
  821|   132k|	if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|   132k|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|   132k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|   132k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|   132k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|   132k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (821:6): [True: 132k, False: 26]
  ------------------
  822|   132k|		GC_TRACE_SET_COLOR(ref, GC_BLACK);
  823|   132k|	}
  824|   132k|	GC_REF_SET_INFO(ref, 0);
  ------------------
  |  |  123|   132k|#define GC_REF_SET_INFO(ref, info) do { \
  |  |  124|   132k|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|   132k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  125|   132k|			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  775|   132k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  757|   132k|#define GC_TYPE_MASK				0x0000000f
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  758|   132k|#define GC_FLAGS_MASK				0x000003f0
  |  |  ------------------
  |  |  126|   132k|			((info) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|   132k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  127|   132k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (127:11): [Folded, False: 132k]
  |  |  ------------------
  ------------------
  825|       |
  826|       |	/* Perform decompression only in case of large buffers */
  827|   132k|	if (UNEXPECTED(GC_G(first_unused) >= GC_MAX_UNCOMPRESSED)) {
  ------------------
  |  |  457|   132k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 132k]
  |  |  ------------------
  ------------------
  828|      0|		gc_remove_compressed(ref, idx);
  829|      0|		return;
  830|      0|	}
  831|       |
  832|   132k|	ZEND_ASSERT(idx);
  ------------------
  |  |  112|   132k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (832:2): [True: 0, False: 132k]
  |  Branch (832:2): [True: 132k, False: 0]
  ------------------
  833|   132k|	root = GC_IDX2PTR(idx);
  ------------------
  |  |  172|   132k|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|   132k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
  834|   132k|	gc_remove_from_roots(root);
  835|   132k|}
zend_gc_collect_cycles:
 1995|  99.8k|{
 1996|  99.8k|	int total_count = 0;
 1997|  99.8k|	bool should_rerun_gc = false;
 1998|  99.8k|	bool did_rerun_gc = false;
 1999|       |
 2000|  99.8k|	zend_hrtime_t start_time = zend_hrtime();
 2001|  99.8k|	if (GC_G(num_roots) && !GC_G(gc_active)) {
  ------------------
  |  |  312|   199k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (312:17): [True: 721, False: 99.1k]
  |  |  ------------------
  ------------------
              	if (GC_G(num_roots) && !GC_G(gc_active)) {
  ------------------
  |  |  312|    721|#define GC_G(v) (gc_globals.v)
  ------------------
  |  Branch (2001:25): [True: 721, False: 0]
  ------------------
 2002|    721|		zend_gc_remove_root_tmpvars();
 2003|    721|	}
 2004|       |
 2005|  99.8k|rerun_gc:
 2006|  99.8k|	if (GC_G(num_roots)) {
  ------------------
  |  |  312|  99.8k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (312:17): [True: 722, False: 99.1k]
  |  |  ------------------
  ------------------
 2007|    722|		int count;
 2008|    722|		gc_root_buffer *current, *last;
 2009|    722|		zend_refcounted *p;
 2010|    722|		uint32_t gc_flags = 0;
 2011|    722|		uint32_t idx, end;
 2012|    722|		gc_stack stack;
 2013|       |
 2014|    722|		stack.prev = NULL;
 2015|    722|		stack.next = NULL;
 2016|       |
 2017|    722|		if (GC_G(gc_active)) {
  ------------------
  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (312:17): [True: 0, False: 722]
  |  |  ------------------
  ------------------
 2018|      0|			GC_G(collector_time) += zend_hrtime() - start_time;
  ------------------
  |  |  312|      0|#define GC_G(v) (gc_globals.v)
  ------------------
 2019|      0|			return 0;
 2020|      0|		}
 2021|       |
 2022|    722|		GC_TRACE("Collecting cycles");
 2023|    722|		GC_G(gc_runs)++;
  ------------------
  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  ------------------
 2024|    722|		GC_G(gc_active) = 1;
  ------------------
  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  ------------------
 2025|       |
 2026|    722|		GC_TRACE("Marking roots");
 2027|    722|		gc_mark_roots(&stack);
 2028|    722|		GC_TRACE("Scanning roots");
 2029|    722|		gc_scan_roots(&stack);
 2030|       |
 2031|    722|		GC_TRACE("Collecting roots");
 2032|    722|		count = gc_collect_roots(&gc_flags, &stack);
 2033|       |
 2034|    722|		if (!GC_G(num_roots)) {
  ------------------
  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  ------------------
  |  Branch (2034:7): [True: 656, False: 66]
  ------------------
 2035|       |			/* nothing to free */
 2036|    656|			GC_TRACE("Nothing to free");
 2037|    656|			gc_stack_free(&stack);
 2038|    656|			GC_G(gc_active) = 0;
  ------------------
  |  |  312|    656|#define GC_G(v) (gc_globals.v)
  ------------------
 2039|    656|			goto finish;
 2040|    656|		}
 2041|       |
 2042|     66|		end = GC_G(first_unused);
  ------------------
  |  |  312|     66|#define GC_G(v) (gc_globals.v)
  ------------------
 2043|       |
 2044|     66|		if (gc_flags & GC_HAS_DESTRUCTORS) {
  ------------------
  |  |  196|     66|#define GC_HAS_DESTRUCTORS  (1<<0)
  ------------------
  |  Branch (2044:7): [True: 2, False: 64]
  ------------------
 2045|      2|			GC_TRACE("Calling destructors");
 2046|       |
 2047|       |			/* During a destructor call, new externally visible references to nested data may
 2048|       |			 * be introduced. These references can be introduced in a way that does not
 2049|       |			 * modify any refcounts, so we have no real way to detect this situation
 2050|       |			 * short of rerunning full GC tracing. What we do instead is to only run
 2051|       |			 * destructors at this point and automatically re-run GC afterwards. */
 2052|      2|			should_rerun_gc = true;
 2053|       |
 2054|       |			/* Mark all roots for which a dtor will be invoked as DTOR_GARBAGE. Additionally
 2055|       |			 * color them purple. This serves a double purpose: First, they should be
 2056|       |			 * considered new potential roots for the next GC run. Second, it will prevent
 2057|       |			 * their removal from the root buffer by nested data removal. */
 2058|      2|			idx = GC_FIRST_ROOT;
  ------------------
  |  |  182|      2|#define GC_FIRST_ROOT        1
  ------------------
 2059|      2|			current = GC_IDX2PTR(GC_FIRST_ROOT);
  ------------------
  |  |  172|      2|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 2060|      6|			while (idx != end) {
  ------------------
  |  Branch (2060:11): [True: 4, False: 2]
  ------------------
 2061|      4|				if (GC_IS_GARBAGE(current->ref)) {
  ------------------
  |  |  162|      4|	((((uintptr_t)(ptr)) & GC_BITS) == GC_GARBAGE)
  |  |  ------------------
  |  |  |  |  147|      4|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_GARBAGE)
  |  |  ------------------
  |  |  |  |  151|      4|#define GC_GARBAGE 0x2 /* garbage to delete                     */
  |  |  ------------------
  |  |  |  Branch (162:2): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 2062|      4|					p = GC_GET_PTR(current->ref);
  ------------------
  |  |  155|      4|	((void*)(((uintptr_t)(ptr)) & ~GC_BITS))
  |  |  ------------------
  |  |  |  |  147|      4|#define GC_BITS    0x3
  |  |  ------------------
  ------------------
 2063|      4|					if (GC_TYPE(p) == IS_OBJECT && !(OBJ_FLAGS(p) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  776|      4|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              					if (GC_TYPE(p) == IS_OBJECT && !(OBJ_FLAGS(p) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  614|      8|#define IS_OBJECT					8
  ------------------
              					if (GC_TYPE(p) == IS_OBJECT && !(OBJ_FLAGS(p) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  852|      2|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (GC_TYPE(p) == IS_OBJECT && !(OBJ_FLAGS(p) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  849|      2|#define IS_OBJ_DESTRUCTOR_CALLED	(1<<8)
  ------------------
  |  Branch (2063:10): [True: 2, False: 2]
  |  Branch (2063:37): [True: 2, False: 0]
  ------------------
 2064|      2|						zend_object *obj = (zend_object *) p;
 2065|      2|						if (obj->handlers->dtor_obj != zend_objects_destroy_object
  ------------------
  |  Branch (2065:11): [True: 0, False: 2]
  ------------------
 2066|      2|							|| obj->ce->destructor) {
  ------------------
  |  Branch (2066:11): [True: 2, False: 0]
  ------------------
 2067|      2|							current->ref = GC_MAKE_DTOR_GARBAGE(obj);
  ------------------
  |  |  169|      2|	((void*)(((uintptr_t)(ptr)) | GC_DTOR_GARBAGE))
  |  |  ------------------
  |  |  |  |  152|      2|#define GC_DTOR_GARBAGE 0x3 /* garbage on which only the dtor should be invoked */
  |  |  ------------------
  ------------------
 2068|      2|							GC_REF_SET_COLOR(obj, GC_PURPLE);
  ------------------
  |  |  129|      2|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      2|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      2|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      2|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      2|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2069|      2|						} else {
 2070|      0|							GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2071|      0|						}
 2072|      2|					}
 2073|      4|				}
 2074|      4|				current++;
 2075|      4|				idx++;
 2076|      4|			}
 2077|       |
 2078|       |			/* Remove nested data for objects on which a destructor will be called.
 2079|       |			 * This will not remove the objects themselves, as they have been colored
 2080|       |			 * purple. */
 2081|      2|			idx = GC_FIRST_ROOT;
  ------------------
  |  |  182|      2|#define GC_FIRST_ROOT        1
  ------------------
 2082|      2|			current = GC_IDX2PTR(GC_FIRST_ROOT);
  ------------------
  |  |  172|      2|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 2083|      6|			while (idx != end) {
  ------------------
  |  Branch (2083:11): [True: 4, False: 2]
  ------------------
 2084|      4|				if (GC_IS_DTOR_GARBAGE(current->ref)) {
  ------------------
  |  |  164|      4|	((((uintptr_t)(ptr)) & GC_BITS) == GC_DTOR_GARBAGE)
  |  |  ------------------
  |  |  |  |  147|      4|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_DTOR_GARBAGE)
  |  |  ------------------
  |  |  |  |  152|      4|#define GC_DTOR_GARBAGE 0x3 /* garbage on which only the dtor should be invoked */
  |  |  ------------------
  |  |  |  Branch (164:2): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 2085|      2|					p = GC_GET_PTR(current->ref);
  ------------------
  |  |  155|      2|	((void*)(((uintptr_t)(ptr)) & ~GC_BITS))
  |  |  ------------------
  |  |  |  |  147|      2|#define GC_BITS    0x3
  |  |  ------------------
  ------------------
 2086|      2|					count -= gc_remove_nested_data_from_buffer(p, current, &stack);
 2087|      2|				}
 2088|      4|				current++;
 2089|      4|				idx++;
 2090|      4|			}
 2091|       |
 2092|       |			/* Actually call destructors. */
 2093|      2|			zend_hrtime_t dtor_start_time = zend_hrtime();
 2094|      2|			if (EXPECTED(!EG(active_fiber))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2095|      2|				gc_call_destructors(GC_FIRST_ROOT, end, NULL);
  ------------------
  |  |  182|      2|#define GC_FIRST_ROOT        1
  ------------------
 2096|      2|			} else {
 2097|      0|				gc_call_destructors_in_fiber();
 2098|      0|			}
 2099|      2|			GC_G(dtor_time) += zend_hrtime() - dtor_start_time;
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  ------------------
 2100|       |
 2101|      2|			if (GC_G(gc_protected)) {
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (312:17): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2102|       |				/* something went wrong */
 2103|      0|				zend_get_gc_buffer_release();
 2104|      0|				GC_G(collector_time) += zend_hrtime() - start_time;
  ------------------
  |  |  312|      0|#define GC_G(v) (gc_globals.v)
  ------------------
 2105|      0|				return 0;
 2106|      0|			}
 2107|      2|		}
 2108|       |
 2109|     66|		gc_stack_free(&stack);
 2110|       |
 2111|       |		/* Destroy zvals. The root buffer may be reallocated. */
 2112|     66|		GC_TRACE("Destroying zvals");
 2113|     66|		zend_hrtime_t free_start_time = zend_hrtime();
 2114|     66|		idx = GC_FIRST_ROOT;
  ------------------
  |  |  182|     66|#define GC_FIRST_ROOT        1
  ------------------
 2115|    168|		while (idx != end) {
  ------------------
  |  Branch (2115:10): [True: 102, False: 66]
  ------------------
 2116|    102|			current = GC_IDX2PTR(idx);
  ------------------
  |  |  172|    102|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    102|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 2117|    102|			if (GC_IS_GARBAGE(current->ref)) {
  ------------------
  |  |  162|    102|	((((uintptr_t)(ptr)) & GC_BITS) == GC_GARBAGE)
  |  |  ------------------
  |  |  |  |  147|    102|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_GARBAGE)
  |  |  ------------------
  |  |  |  |  151|    102|#define GC_GARBAGE 0x2 /* garbage to delete                     */
  |  |  ------------------
  |  |  |  Branch (162:2): [True: 74, False: 28]
  |  |  ------------------
  ------------------
 2118|     74|				p = GC_GET_PTR(current->ref);
  ------------------
  |  |  155|     74|	((void*)(((uintptr_t)(ptr)) & ~GC_BITS))
  |  |  ------------------
  |  |  |  |  147|     74|#define GC_BITS    0x3
  |  |  ------------------
  ------------------
 2119|     74|				GC_TRACE_REF(p, "destroying");
 2120|     74|				if (GC_TYPE(p) == IS_OBJECT) {
  ------------------
  |  |  776|     74|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     74|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (GC_TYPE(p) == IS_OBJECT) {
  ------------------
  |  |  614|     74|#define IS_OBJECT					8
  ------------------
  |  Branch (2120:9): [True: 30, False: 44]
  ------------------
 2121|     30|					zend_object *obj = (zend_object*)p;
 2122|       |
 2123|     30|					EG(objects_store).object_buckets[obj->handle] = SET_OBJ_INVALID(obj);
  ------------------
  |  |   45|     30|# define EG(v) (executor_globals.v)
  ------------------
              					EG(objects_store).object_buckets[obj->handle] = SET_OBJ_INVALID(obj);
  ------------------
  |  |   31|     30|#define SET_OBJ_INVALID(o)			((zend_object*)((((uintptr_t)(o)) | OBJ_BUCKET_INVALID)))
  |  |  ------------------
  |  |  |  |   27|     30|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  ------------------
  ------------------
 2124|     30|					GC_TYPE_INFO(obj) = GC_NULL |
  ------------------
  |  |  775|     30|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              					GC_TYPE_INFO(obj) = GC_NULL |
  ------------------
  |  |  805|     30|#define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  607|     30|#define IS_NULL						1
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     30|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     30|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
 2125|     30|						(GC_TYPE_INFO(obj) & ~GC_TYPE_MASK);
  ------------------
  |  |  775|     30|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              						(GC_TYPE_INFO(obj) & ~GC_TYPE_MASK);
  ------------------
  |  |  757|     30|#define GC_TYPE_MASK				0x0000000f
  ------------------
 2126|       |					/* Modify current before calling free_obj (bug #78811: free_obj() can cause the root buffer (with current) to be reallocated.) */
 2127|     30|					current->ref = GC_MAKE_GARBAGE(((char*)obj) - obj->handlers->offset);
  ------------------
  |  |  167|     30|	((void*)(((uintptr_t)(ptr)) | GC_GARBAGE))
  |  |  ------------------
  |  |  |  |  151|     30|#define GC_GARBAGE 0x2 /* garbage to delete                     */
  |  |  ------------------
  ------------------
 2128|     30|					if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  852|     30|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|     30|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     30|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  850|     30|#define IS_OBJ_FREE_CALLED			(1<<9)
  ------------------
  |  Branch (2128:10): [True: 30, False: 0]
  ------------------
 2129|     30|						GC_ADD_FLAGS(obj, IS_OBJ_FREE_CALLED);
  ------------------
  |  |  780|     30|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     30|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     30|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     30|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     30|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 30]
  |  |  ------------------
  ------------------
 2130|     30|						GC_ADDREF(obj);
  ------------------
  |  |  718|     30|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2131|     30|						obj->handlers->free_obj(obj);
 2132|     30|						GC_DELREF(obj);
  ------------------
  |  |  719|     30|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2133|     30|					}
 2134|       |
 2135|     30|					ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(obj->handle);
  ------------------
  |  |   39|     30|#define ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(h) do { \
  |  |   40|     30|		SET_OBJ_BUCKET_NUMBER(EG(objects_store).object_buckets[(h)], EG(objects_store).free_list_head); \
  |  |  ------------------
  |  |  |  |   35|     30|#define SET_OBJ_BUCKET_NUMBER(o, n)	do { \
  |  |  |  |   36|     30|		(o) = (zend_object*)((((uintptr_t)(n)) << 1) | OBJ_BUCKET_INVALID); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     30|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |   37|     30|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:11): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|     30|		EG(objects_store).free_list_head = (h); \
  |  |  ------------------
  |  |  |  |   45|     30|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |   42|     30|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 30]
  |  |  ------------------
  ------------------
 2136|     44|				} else if (GC_TYPE(p) == IS_ARRAY) {
  ------------------
  |  |  776|     44|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     44|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				} else if (GC_TYPE(p) == IS_ARRAY) {
  ------------------
  |  |  613|     44|#define IS_ARRAY					7
  ------------------
  |  Branch (2136:16): [True: 44, False: 0]
  ------------------
 2137|     44|					zend_array *arr = (zend_array*)p;
 2138|       |
 2139|     44|					GC_TYPE_INFO(arr) = GC_NULL |
  ------------------
  |  |  775|     44|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              					GC_TYPE_INFO(arr) = GC_NULL |
  ------------------
  |  |  805|     44|#define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  607|     44|#define IS_NULL						1
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     44|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     44|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
 2140|     44|						(GC_TYPE_INFO(arr) & ~GC_TYPE_MASK);
  ------------------
  |  |  775|     44|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              						(GC_TYPE_INFO(arr) & ~GC_TYPE_MASK);
  ------------------
  |  |  757|     44|#define GC_TYPE_MASK				0x0000000f
  ------------------
 2141|       |
 2142|       |					/* GC may destroy arrays with rc>1. This is valid and safe. */
 2143|     44|					HT_ALLOW_COW_VIOLATION(arr);
  ------------------
  |  |   71|     44|# define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   52|     44|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               # define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   47|     44|#define HASH_FLAG_ALLOW_COW_VIOLATION (1<<6)
  |  |  ------------------
  ------------------
 2144|       |
 2145|     44|					zend_hash_destroy(arr);
 2146|     44|				}
 2147|     74|			}
 2148|    102|			idx++;
 2149|    102|		}
 2150|       |
 2151|       |		/* Free objects */
 2152|     66|		current = GC_IDX2PTR(GC_FIRST_ROOT);
  ------------------
  |  |  172|     66|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|     66|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 2153|     66|		last = GC_IDX2PTR(end);
  ------------------
  |  |  172|     66|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|     66|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 2154|    168|		while (current != last) {
  ------------------
  |  Branch (2154:10): [True: 102, False: 66]
  ------------------
 2155|    102|			if (GC_IS_GARBAGE(current->ref)) {
  ------------------
  |  |  162|    102|	((((uintptr_t)(ptr)) & GC_BITS) == GC_GARBAGE)
  |  |  ------------------
  |  |  |  |  147|    102|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_GARBAGE)
  |  |  ------------------
  |  |  |  |  151|    102|#define GC_GARBAGE 0x2 /* garbage to delete                     */
  |  |  ------------------
  |  |  |  Branch (162:2): [True: 74, False: 28]
  |  |  ------------------
  ------------------
 2156|     74|				p = GC_GET_PTR(current->ref);
  ------------------
  |  |  155|     74|	((void*)(((uintptr_t)(ptr)) & ~GC_BITS))
  |  |  ------------------
  |  |  |  |  147|     74|#define GC_BITS    0x3
  |  |  ------------------
  ------------------
 2157|     74|				GC_LINK_UNUSED(current);
  ------------------
  |  |  244|     74|	gc_link_unused(root)
  ------------------
 2158|     74|				GC_G(num_roots)--;
  ------------------
  |  |  312|     74|#define GC_G(v) (gc_globals.v)
  ------------------
 2159|     74|				efree(p);
  ------------------
  |  |  154|     74|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     74|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     74|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     74|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     74|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2160|     74|			}
 2161|    102|			current++;
 2162|    102|		}
 2163|       |
 2164|     66|		GC_G(free_time) += zend_hrtime() - free_start_time;
  ------------------
  |  |  312|     66|#define GC_G(v) (gc_globals.v)
  ------------------
 2165|       |
 2166|     66|		GC_TRACE("Collection finished");
 2167|     66|		GC_G(collected) += count;
  ------------------
  |  |  312|     66|#define GC_G(v) (gc_globals.v)
  ------------------
 2168|     66|		total_count += count;
 2169|     66|		GC_G(gc_active) = 0;
  ------------------
  |  |  312|     66|#define GC_G(v) (gc_globals.v)
  ------------------
 2170|     66|	}
 2171|       |
 2172|  99.2k|	gc_compact();
 2173|       |
 2174|       |	/* Objects with destructors were removed from this GC run. Rerun GC right away to clean them
 2175|       |	 * up. We do this only once: If we encounter more destructors on the second run, we'll not
 2176|       |	 * run GC another time. */
 2177|  99.2k|	if (should_rerun_gc && !did_rerun_gc) {
  ------------------
  |  Branch (2177:6): [True: 4, False: 99.2k]
  |  Branch (2177:25): [True: 2, False: 2]
  ------------------
 2178|      2|		did_rerun_gc = true;
 2179|      2|		goto rerun_gc;
 2180|      2|	}
 2181|       |
 2182|  99.8k|finish:
 2183|  99.8k|	zend_get_gc_buffer_release();
 2184|       |
 2185|       |	/* Prevent GC from running during zend_gc_check_root_tmpvars, before
 2186|       |	 * gc_threshold is adjusted, as this may result in unbounded recursion */
 2187|  99.8k|	GC_G(gc_active) = 1;
  ------------------
  |  |  312|  99.8k|#define GC_G(v) (gc_globals.v)
  ------------------
 2188|  99.8k|	zend_gc_check_root_tmpvars();
 2189|  99.8k|	GC_G(gc_active) = 0;
  ------------------
  |  |  312|  99.8k|#define GC_G(v) (gc_globals.v)
  ------------------
 2190|       |
 2191|  99.8k|	GC_G(collector_time) += zend_hrtime() - start_time;
  ------------------
  |  |  312|  99.8k|#define GC_G(v) (gc_globals.v)
  ------------------
 2192|  99.8k|	return total_count;
 2193|  99.2k|}
zend_gc_get_status:
 2196|      3|{
 2197|      3|	status->active = GC_G(gc_active);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2198|      3|	status->gc_protected = GC_G(gc_protected);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2199|      3|	status->full = GC_G(gc_full);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2200|      3|	status->runs = GC_G(gc_runs);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2201|      3|	status->collected = GC_G(collected);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2202|      3|	status->threshold = GC_G(gc_threshold);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2203|      3|	status->buf_size = GC_G(buf_size);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2204|      3|	status->num_roots = GC_G(num_roots);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2205|      3|	status->application_time = zend_hrtime() - GC_G(activated_at);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2206|      3|	status->collector_time = GC_G(collector_time);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2207|      3|	status->dtor_time = GC_G(dtor_time);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2208|      3|	status->free_time = GC_G(free_time);
  ------------------
  |  |  312|      3|#define GC_G(v) (gc_globals.v)
  ------------------
 2209|      3|}
zend_get_gc_buffer_create:
 2211|    701|ZEND_API zend_get_gc_buffer *zend_get_gc_buffer_create(void) {
 2212|       |	/* There can only be one get_gc() call active at a time,
 2213|       |	 * so there only needs to be one buffer. */
 2214|    701|	zend_get_gc_buffer *gc_buffer = &EG(get_gc_buffer);
  ------------------
  |  |   45|    701|# define EG(v) (executor_globals.v)
  ------------------
 2215|    701|	gc_buffer->cur = gc_buffer->start;
 2216|    701|	return gc_buffer;
 2217|    701|}
zend_get_gc_buffer_grow:
 2219|     49|ZEND_API void zend_get_gc_buffer_grow(zend_get_gc_buffer *gc_buffer) {
 2220|     49|	size_t old_capacity = gc_buffer->end - gc_buffer->start;
 2221|     49|	size_t new_capacity = old_capacity == 0 ? 64 : old_capacity * 2;
  ------------------
  |  Branch (2221:24): [True: 49, False: 0]
  ------------------
 2222|       |	gc_buffer->start = erealloc(gc_buffer->start, new_capacity * sizeof(zval));
  ------------------
  |  |  158|     49|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     49|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     49|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     49|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     49|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2223|     49|	gc_buffer->end = gc_buffer->start + new_capacity;
 2224|     49|	gc_buffer->cur = gc_buffer->start + old_capacity;
 2225|     49|}
gc_init:
 2362|      2|{
 2363|      2|	gc_destructor_fiber.function_name = zend_string_init_interned(
 2364|      2|			"gc_destructor_fiber",
 2365|      2|			strlen("gc_destructor_fiber"),
 2366|       |			true);
 2367|      2|}
zend_gc.c:gc_globals_ctor_ex:
  514|      2|{
  515|      2|	gc_globals->gc_enabled = false;
  516|      2|	gc_globals->gc_active = false;
  517|      2|	gc_globals->gc_protected = true;
  518|      2|	gc_globals->gc_full = false;
  519|       |
  520|      2|	gc_globals->buf = NULL;
  521|      2|	gc_globals->unused = GC_INVALID;
  ------------------
  |  |  181|      2|#define GC_INVALID           0
  ------------------
  522|      2|	gc_globals->first_unused = GC_INVALID;
  ------------------
  |  |  181|      2|#define GC_INVALID           0
  ------------------
  523|      2|	gc_globals->gc_threshold = GC_INVALID;
  ------------------
  |  |  181|      2|#define GC_INVALID           0
  ------------------
  524|      2|	gc_globals->buf_size = GC_INVALID;
  ------------------
  |  |  181|      2|#define GC_INVALID           0
  ------------------
  525|      2|	gc_globals->num_roots = 0;
  526|       |
  527|      2|	gc_globals->gc_runs = 0;
  528|      2|	gc_globals->collected = 0;
  529|      2|	gc_globals->collector_time = 0;
  530|      2|	gc_globals->dtor_time = 0;
  531|      2|	gc_globals->free_time = 0;
  532|      2|	gc_globals->activated_at = 0;
  533|       |
  534|      2|	gc_globals->dtor_idx = GC_FIRST_ROOT;
  ------------------
  |  |  182|      2|#define GC_FIRST_ROOT        1
  ------------------
  535|      2|	gc_globals->dtor_end = 0;
  536|      2|	gc_globals->dtor_fiber = NULL;
  537|      2|	gc_globals->dtor_fiber_running = false;
  538|       |
  539|       |#if GC_BENCH
  540|       |	gc_globals->root_buf_length = 0;
  541|       |	gc_globals->root_buf_peak = 0;
  542|       |	gc_globals->zval_possible_root = 0;
  543|       |	gc_globals->zval_buffered = 0;
  544|       |	gc_globals->zval_remove_from_buffer = 0;
  545|       |	gc_globals->zval_marked_grey = 0;
  546|       |#endif
  547|      2|}
zend_gc.c:gc_fetch_unused:
  435|    659|{
  436|    659|	uint32_t idx;
  437|    659|	gc_root_buffer *root;
  438|       |
  439|    659|	ZEND_ASSERT(GC_HAS_UNUSED());
  ------------------
  |  |  112|    659|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (439:2): [True: 0, False: 659]
  |  Branch (439:2): [True: 659, False: 0]
  ------------------
  440|    659|	idx = GC_G(unused);
  ------------------
  |  |  312|    659|#define GC_G(v) (gc_globals.v)
  ------------------
  441|    659|	root = GC_IDX2PTR(idx);
  ------------------
  |  |  172|    659|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    659|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
  442|    659|	ZEND_ASSERT(GC_IS_UNUSED(root->ref));
  ------------------
  |  |  112|    659|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (442:2): [True: 0, False: 659]
  |  Branch (442:2): [True: 659, False: 0]
  ------------------
  443|    659|	GC_G(unused) = GC_LIST2IDX(root->ref);
  ------------------
  |  |  312|    659|#define GC_G(v) (gc_globals.v)
  ------------------
              	GC_G(unused) = GC_LIST2IDX(root->ref);
  ------------------
  |  |  178|    659|#define GC_LIST2IDX(list)    (((uint32_t)(uintptr_t)(list)) / sizeof(void*))
  ------------------
  444|    659|	return idx;
  445|    659|}
zend_gc.c:gc_fetch_next_unused:
  455|   133k|{
  456|   133k|	uint32_t idx;
  457|       |
  458|   133k|	ZEND_ASSERT(GC_HAS_NEXT_UNUSED());
  ------------------
  |  |  112|   133k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (458:2): [True: 0, False: 133k]
  |  Branch (458:2): [True: 133k, False: 0]
  ------------------
  459|   133k|	idx = GC_G(first_unused);
  ------------------
  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  ------------------
  460|   133k|	GC_G(first_unused) = GC_G(first_unused) + 1;
  ------------------
  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  ------------------
              	GC_G(first_unused) = GC_G(first_unused) + 1;
  ------------------
  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  ------------------
  461|   133k|	return idx;
  462|   133k|}
zend_gc.c:gc_compress:
  404|   133k|{
  405|   133k|	if (EXPECTED(idx < GC_MAX_UNCOMPRESSED)) {
  ------------------
  |  |  456|   133k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 133k, False: 0]
  |  |  ------------------
  ------------------
  406|   133k|		return idx;
  407|   133k|	}
  408|      0|	return (idx % GC_MAX_UNCOMPRESSED) | GC_MAX_UNCOMPRESSED;
  ------------------
  |  |  187|      0|#define GC_MAX_UNCOMPRESSED  (512 * 1024)
  ------------------
              	return (idx % GC_MAX_UNCOMPRESSED) | GC_MAX_UNCOMPRESSED;
  ------------------
  |  |  187|      0|#define GC_MAX_UNCOMPRESSED  (512 * 1024)
  ------------------
  409|   133k|}
zend_gc.c:gc_remove_from_roots:
  499|   133k|{
  500|   133k|	GC_LINK_UNUSED(root);
  ------------------
  |  |  244|   133k|	gc_link_unused(root)
  ------------------
  501|   133k|	GC_G(num_roots)--;
  ------------------
  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  ------------------
  502|   133k|	GC_BENCH_DEC(root_buf_length);
  503|   133k|}
zend_gc.c:gc_mark_roots:
 1258|    722|{
 1259|    722|	gc_root_buffer *current, *last;
 1260|       |
 1261|    722|	gc_compact();
 1262|       |
 1263|    722|	current = GC_IDX2PTR(GC_FIRST_ROOT);
  ------------------
  |  |  172|    722|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1264|    722|	last = GC_IDX2PTR(GC_G(first_unused));
  ------------------
  |  |  172|    722|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1265|  1.89k|	while (current != last) {
  ------------------
  |  Branch (1265:9): [True: 1.17k, False: 722]
  ------------------
 1266|  1.17k|		if (GC_IS_ROOT(current->ref)) {
  ------------------
  |  |  158|  1.17k|	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  147|  1.17k|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  149|  1.17k|#define GC_ROOT    0x0 /* possible root of circular garbage     */
  |  |  ------------------
  |  |  |  Branch (158:2): [True: 1.17k, False: 0]
  |  |  ------------------
  ------------------
 1267|  1.17k|			if (GC_REF_CHECK_COLOR(current->ref, GC_PURPLE)) {
  ------------------
  |  |  121|  1.17k|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|  1.17k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|  1.17k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.17k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.17k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1.14k, False: 26]
  |  |  ------------------
  ------------------
 1268|  1.14k|				GC_REF_SET_COLOR(current->ref, GC_GREY);
  ------------------
  |  |  129|  1.14k|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|  1.14k|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|  1.14k|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|  1.14k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|  1.14k|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|  1.14k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|  1.14k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|  1.14k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|  1.14k|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|  1.14k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|  1.14k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 1.14k]
  |  |  ------------------
  ------------------
 1269|  1.14k|				gc_mark_grey(current->ref, stack);
 1270|  1.14k|			}
 1271|  1.17k|		}
 1272|  1.17k|		current++;
 1273|  1.17k|	}
 1274|    722|}
zend_gc.c:gc_mark_grey:
 1043|  1.14k|{
 1044|  1.14k|	HashTable *ht;
 1045|  1.14k|	Bucket *p;
 1046|  1.14k|	zval *zv;
 1047|  1.14k|	uint32_t n;
 1048|  1.14k|	GC_STACK_DCL(stack);
  ------------------
  |  |  343|  1.14k|	gc_stack *_stack = init; \
  |  |  344|  1.14k|	size_t    _top = 0;
  ------------------
 1049|       |
 1050|  1.93k|tail_call:
 1051|  1.93k|	GC_BENCH_INC(zval_marked_grey);
 1052|       |
 1053|  1.93k|	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  776|  1.93k|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.93k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  614|  1.93k|#define IS_OBJECT					8
  ------------------
  |  Branch (1053:6): [True: 1.21k, False: 723]
  ------------------
 1054|  1.21k|		zend_object *obj = (zend_object*)ref;
 1055|       |
 1056|  1.21k|		if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED))) {
  ------------------
  |  |  456|  1.21k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.21k, False: 0]
  |  |  ------------------
  ------------------
 1057|  1.21k|			zval *table;
 1058|  1.21k|			int len;
 1059|       |
 1060|  1.21k|			if (UNEXPECTED(GC_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)) {
  ------------------
  |  |  457|  1.21k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 1.20k]
  |  |  ------------------
  ------------------
 1061|      9|				zend_weakmap_get_object_key_entry_gc(obj, &table, &len);
 1062|      9|				n = len;
 1063|      9|				zv = table;
 1064|     18|				for (; n != 0; n-=2) {
  ------------------
  |  Branch (1064:12): [True: 9, False: 9]
  ------------------
 1065|      9|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1065:6): [True: 0, False: 9]
  |  Branch (1065:6): [True: 9, False: 0]
  ------------------
 1066|      9|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|      9|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      9|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1067|      9|					zval *weakmap = zv+1;
 1068|      9|					ZEND_ASSERT(Z_REFCOUNTED_P(weakmap));
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1068:6): [True: 0, False: 9]
  |  Branch (1068:6): [True: 9, False: 0]
  ------------------
 1069|      9|					if (Z_COLLECTABLE_P(entry)) {
  ------------------
  |  |  945|      9|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      9|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      9|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1070|      9|						GC_SET_FROM_WEAKMAP_KEY(entry);
  ------------------
  |  |  207|      9|#define GC_SET_FROM_WEAKMAP_KEY(zv) do {									   \
  |  |  208|      9|	zval *_z = (zv);														   \
  |  |  209|      9|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  199|      9|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      9|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  210|      9|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1071|      9|						ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1072|       |						/* Only DELREF if the contribution from the weakmap has
 1073|       |						 * not been cancelled yet */
 1074|      9|						if (!GC_FROM_WEAKMAP(entry)) {
  ------------------
  |  |  220|      9|	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  200|      9|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  714|      9|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  ------------------
  |  Branch (1074:11): [True: 2, False: 7]
  ------------------
 1075|      2|							GC_DELREF(ref);
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1076|      2|						}
 1077|      9|						if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|      9|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      9|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      9|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      9|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      9|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1077:11): [True: 1, False: 8]
  ------------------
 1078|      1|							GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|      1|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      1|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      1|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      1|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      1|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      1|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1079|      1|							GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      1|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1080|      1|						}
 1081|      9|					}
 1082|      9|					zv+=2;
 1083|      9|				}
 1084|      9|			}
 1085|       |
 1086|  1.21k|			if (UNEXPECTED(obj->handlers->get_gc == zend_weakmap_get_gc)) {
  ------------------
  |  |  457|  1.21k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 1.20k]
  |  |  ------------------
  ------------------
 1087|      7|				zend_weakmap_get_entry_gc(obj, &table, &len);
 1088|      7|				n = len;
 1089|      7|				zv = table;
 1090|     17|				for (; n != 0; n--) {
  ------------------
  |  Branch (1090:12): [True: 10, False: 7]
  ------------------
 1091|     10|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1091:6): [True: 0, False: 10]
  |  Branch (1091:6): [True: 10, False: 0]
  ------------------
 1092|     10|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1093|     10|					if (Z_COLLECTABLE_P(entry)) {
  ------------------
  |  |  945|     10|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     10|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     10|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|     10|						GC_SET_FROM_WEAKMAP(entry);
  ------------------
  |  |  222|     10|#define GC_SET_FROM_WEAKMAP(zv) do {									       \
  |  |  223|     10|	zval *_z = (zv);														   \
  |  |  224|     10|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  200|     10|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) | (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|     10|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  225|     10|} while (0)
  |  |  ------------------
  |  |  |  Branch (225:10): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1095|     10|						ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1096|       |						/* Only DELREF if the contribution from the weakmap key
 1097|       |						 * has not been cancelled yet */
 1098|     10|						if (!GC_FROM_WEAKMAP_KEY(entry)) {
  ------------------
  |  |  205|     10|	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  199|     10|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  714|     10|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  ------------------
  |  Branch (1098:11): [True: 8, False: 2]
  ------------------
 1099|      8|							GC_DELREF(ref);
  ------------------
  |  |  719|      8|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1100|      8|						}
 1101|     10|						if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     10|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     10|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     10|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     10|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1101:11): [True: 8, False: 2]
  ------------------
 1102|      8|							GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|      8|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      8|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      8|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      8|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      8|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      8|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      8|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      8|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1103|      8|							GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      8|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1104|      8|						}
 1105|     10|					}
 1106|     10|					zv++;
 1107|     10|				}
 1108|      7|				goto next;
 1109|      7|			}
 1110|       |
 1111|  1.20k|			ht = obj->handlers->get_gc(obj, &table, &len);
 1112|  1.20k|			n = len;
 1113|  1.20k|			zv = table;
 1114|  1.20k|			if (UNEXPECTED(ht)) {
  ------------------
  |  |  457|  1.20k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 248, False: 956]
  |  |  ------------------
  ------------------
 1115|    248|				GC_DELREF(ht);
  ------------------
  |  |  719|    248|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1116|    248|				if (!GC_REF_CHECK_COLOR(ht, GC_GREY)) {
  ------------------
  |  |  121|    248|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    248|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    248|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    248|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    248|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1116:9): [True: 245, False: 3]
  ------------------
 1117|    245|					GC_REF_SET_COLOR(ht, GC_GREY);
  ------------------
  |  |  129|    245|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|    245|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|    245|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|    245|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|    245|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|    245|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|    245|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|    245|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|    245|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|    245|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|    245|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 245]
  |  |  ------------------
  ------------------
 1118|    403|					for (; n != 0; n--) {
  ------------------
  |  Branch (1118:13): [True: 158, False: 245]
  ------------------
 1119|    158|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    158|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    158|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    158|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    158|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 47, False: 111]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1120|     47|							ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     47|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     47|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1121|     47|							GC_DELREF(ref);
  ------------------
  |  |  719|     47|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1122|     47|							if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     47|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     47|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     47|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     47|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     47|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1122:12): [True: 35, False: 12]
  ------------------
 1123|     35|								GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|     35|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     35|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     35|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     35|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     35|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     35|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     35|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     35|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     35|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     35|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     35|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 35]
  |  |  ------------------
  ------------------
 1124|     35|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     35|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1125|     35|							}
 1126|     47|						}
 1127|    158|						zv++;
 1128|    158|					}
 1129|    245|					goto handle_ht;
 1130|    245|				}
 1131|    248|			}
 1132|  1.26k|handle_zvals:
 1133|  2.11M|			for (; n != 0; n--) {
  ------------------
  |  Branch (1133:11): [True: 2.10M, False: 693]
  ------------------
 1134|  2.10M|				if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|  2.10M|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|  2.10M|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  2.10M|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  2.10M|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 620, False: 2.10M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1135|    620|					ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    620|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    620|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1136|    620|					GC_DELREF(ref);
  ------------------
  |  |  719|    620|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1137|    620|					if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|    620|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    620|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    620|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    620|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    620|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1137:10): [True: 572, False: 48]
  ------------------
 1138|    572|						GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|    572|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|    572|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|    572|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|    572|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|    572|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|    572|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|    572|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|    572|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|    572|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|    572|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|    572|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 572]
  |  |  ------------------
  ------------------
 1139|    572|						zv++;
 1140|  1.04k|						while (--n) {
  ------------------
  |  Branch (1140:14): [True: 471, False: 572]
  ------------------
 1141|    471|							if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    471|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    471|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    471|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    471|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 330, False: 141]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1142|    330|								zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    330|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    330|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1143|    330|								GC_DELREF(ref);
  ------------------
  |  |  719|    330|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1144|    330|								if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|    330|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    330|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    330|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    330|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    330|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1144:13): [True: 49, False: 281]
  ------------------
 1145|     49|									GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|     49|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     49|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     49|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     49|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     49|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     49|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     49|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     49|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     49|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     49|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     49|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 49]
  |  |  ------------------
  ------------------
 1146|     49|									GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     49|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1147|     49|								}
 1148|    330|							}
 1149|    471|							zv++;
 1150|    471|						}
 1151|    572|						goto tail_call;
 1152|    572|					}
 1153|    620|				}
 1154|  2.10M|				zv++;
 1155|  2.10M|			}
 1156|  1.26k|		}
 1157|  1.21k|	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  776|    723|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    723|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  613|    723|#define IS_ARRAY					7
  ------------------
  |  Branch (1157:13): [True: 585, False: 138]
  ------------------
 1158|    585|		ZEND_ASSERT(((zend_array*)ref) != &EG(symbol_table));
  ------------------
  |  |  112|    585|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1158:3): [True: 0, False: 585]
  |  Branch (1158:3): [True: 585, False: 0]
  ------------------
 1159|    585|		ht = (zend_array*)ref;
 1160|    830|handle_ht:
 1161|    830|		n = ht->nNumUsed;
 1162|    830|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|    830|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    830|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    830|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 306, False: 524]
  |  |  ------------------
  ------------------
 1163|    306|            zv = ht->arPacked;
 1164|    306|            goto handle_zvals;
 1165|    306|		}
 1166|       |
 1167|    524|		p = ht->arData;
 1168|  1.30k|		for (; n != 0; n--) {
  ------------------
  |  Branch (1168:10): [True: 875, False: 427]
  ------------------
 1169|    875|			zv = &p->val;
 1170|    875|			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|    875|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    875|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|    875|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1170:8): [True: 175, False: 700]
  ------------------
 1171|    175|				zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|    175|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|    175|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1172|    175|			}
 1173|    875|			if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    875|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    875|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    875|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    875|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 335, False: 540]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1174|    335|				ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    335|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    335|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1175|    335|				GC_DELREF(ref);
  ------------------
  |  |  719|    335|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1176|    335|				if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|    335|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    335|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    335|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    335|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    335|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1176:9): [True: 97, False: 238]
  ------------------
 1177|     97|					GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|     97|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     97|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     97|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     97|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     97|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     97|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     97|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     97|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     97|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     97|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     97|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 97]
  |  |  ------------------
  ------------------
 1178|     97|					p++;
 1179|    125|					while (--n) {
  ------------------
  |  Branch (1179:13): [True: 28, False: 97]
  ------------------
 1180|     28|						zv = &p->val;
 1181|     28|						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|     28|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     28|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|     28|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1181:11): [True: 3, False: 25]
  ------------------
 1182|      3|							zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      3|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      3|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1183|      3|						}
 1184|     28|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     28|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     28|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     28|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     28|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 21, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1185|     21|							zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     21|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     21|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1186|     21|							GC_DELREF(ref);
  ------------------
  |  |  719|     21|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1187|     21|							if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     21|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     21|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     21|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     21|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     21|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1187:12): [True: 12, False: 9]
  ------------------
 1188|     12|								GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|     12|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     12|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     12|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     12|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     12|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     12|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     12|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     12|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1189|     12|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     12|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1190|     12|							}
 1191|     21|						}
 1192|     28|						p++;
 1193|     28|					}
 1194|     97|					goto tail_call;
 1195|     97|				}
 1196|    335|			}
 1197|    778|			p++;
 1198|    778|		}
 1199|    524|	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  776|    138|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    138|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  616|    138|#define IS_REFERENCE				10
  ------------------
  |  Branch (1199:13): [True: 138, False: 0]
  ------------------
 1200|    138|		if (Z_COLLECTABLE(((zend_reference*)ref)->val)) {
  ------------------
  |  |  944|    138|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  671|    138|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  815|    138|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |  |  Branch (944:31): [True: 74, False: 64]
  |  |  ------------------
  ------------------
 1201|     74|			ref = Z_COUNTED(((zend_reference*)ref)->val);
  ------------------
  |  |  707|     74|#define Z_COUNTED(zval)				(zval).value.counted
  ------------------
 1202|     74|			GC_DELREF(ref);
  ------------------
  |  |  719|     74|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1203|     74|			if (!GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     74|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     74|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     74|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     74|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     74|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1203:8): [True: 16, False: 58]
  ------------------
 1204|     16|				GC_REF_SET_COLOR(ref, GC_GREY);
  ------------------
  |  |  129|     16|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     16|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     16|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     16|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     16|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     16|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     16|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     16|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     16|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     16|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 1205|     16|				goto tail_call;
 1206|     16|			}
 1207|     74|		}
 1208|    138|	}
 1209|       |
 1210|  1.24k|next:
 1211|  1.24k|	ref = GC_STACK_POP();
  ------------------
  |  |  350|  1.24k|	gc_stack_pop(&_stack, &_top)
  ------------------
 1212|  1.24k|	if (ref) {
  ------------------
  |  Branch (1212:6): [True: 105, False: 1.14k]
  ------------------
 1213|    105|		goto tail_call;
 1214|    105|	}
 1215|  1.24k|}
zend_gc.c:gc_stack_push:
  364|    277|{
  365|    277|	if (UNEXPECTED(*top == GC_STACK_SEGMENT_SIZE)) {
  ------------------
  |  |  457|    277|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 277]
  |  |  ------------------
  ------------------
  366|      0|		(*stack) = gc_stack_next(*stack);
  367|      0|		(*top) = 0;
  368|      0|	}
  369|    277|	(*stack)->data[(*top)++] = ref;
  370|    277|}
zend_gc.c:gc_stack_next:
  353|    659|{
  354|    659|	if (UNEXPECTED(!stack->next)) {
  ------------------
  |  |  457|    659|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 659, False: 0]
  |  |  ------------------
  ------------------
  355|    659|		gc_stack *segment = emalloc(sizeof(gc_stack));
  ------------------
  |  |  150|    659|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    659|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    659|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    659|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    659|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|    659|		segment->prev = stack;
  357|       |		segment->next = NULL;
  358|    659|		stack->next = segment;
  359|    659|	}
  360|    659|	return stack->next;
  361|    659|}
zend_gc.c:gc_stack_pop:
  373|  3.69k|{
  374|  3.69k|	if (UNEXPECTED((*top) == 0)) {
  ------------------
  |  |  457|  3.69k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3.41k, False: 277]
  |  |  ------------------
  ------------------
  375|  3.41k|		if (!(*stack)->prev) {
  ------------------
  |  Branch (375:7): [True: 3.41k, False: 0]
  ------------------
  376|  3.41k|			return NULL;
  377|  3.41k|		} else {
  378|      0|			(*stack) = (*stack)->prev;
  379|      0|			(*top) = GC_STACK_SEGMENT_SIZE - 1;
  ------------------
  |  |  331|      0|#define GC_STACK_SEGMENT_SIZE (((4096 - ZEND_MM_OVERHEAD) / sizeof(void*)) - 2)
  |  |  ------------------
  |  |  |  |   57|      0|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  380|      0|			return (*stack)->data[GC_STACK_SEGMENT_SIZE - 1];
  ------------------
  |  |  331|      0|#define GC_STACK_SEGMENT_SIZE (((4096 - ZEND_MM_OVERHEAD) / sizeof(void*)) - 2)
  |  |  ------------------
  |  |  |  |   57|      0|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      0|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   32|      0|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|      0|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|      0|		}
  382|  3.41k|	} else {
  383|    277|		return (*stack)->data[--(*top)];
  384|    277|	}
  385|  3.69k|}
zend_gc.c:gc_scan_roots:
 1435|    722|{
 1436|    722|	uint32_t idx, end;
 1437|    722|	gc_root_buffer *current;
 1438|       |
 1439|       |	/* Root buffer might be reallocated during gc_scan,
 1440|       |	 * make sure to reload pointers. */
 1441|    722|	idx = GC_FIRST_ROOT;
  ------------------
  |  |  182|    722|#define GC_FIRST_ROOT        1
  ------------------
 1442|    722|	end = GC_G(first_unused);
  ------------------
  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  ------------------
 1443|  1.89k|	while (idx != end) {
  ------------------
  |  Branch (1443:9): [True: 1.17k, False: 722]
  ------------------
 1444|  1.17k|		current = GC_IDX2PTR(idx);
  ------------------
  |  |  172|  1.17k|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|  1.17k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1445|  1.17k|		if (GC_IS_ROOT(current->ref)) {
  ------------------
  |  |  158|  1.17k|	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  147|  1.17k|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  149|  1.17k|#define GC_ROOT    0x0 /* possible root of circular garbage     */
  |  |  ------------------
  |  |  |  Branch (158:2): [True: 1.17k, False: 0]
  |  |  ------------------
  ------------------
 1446|  1.17k|			if (GC_REF_CHECK_COLOR(current->ref, GC_GREY)) {
  ------------------
  |  |  121|  1.17k|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|  1.17k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|  1.17k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.17k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.17k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1.14k, False: 24]
  |  |  ------------------
  ------------------
 1447|  1.14k|				GC_REF_SET_COLOR(current->ref, GC_WHITE);
  ------------------
  |  |  129|  1.14k|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|  1.14k|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|  1.14k|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|  1.14k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|  1.14k|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|  1.14k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|  1.14k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|  1.14k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|  1.14k|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|  1.14k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|  1.14k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 1.14k]
  |  |  ------------------
  ------------------
 1448|  1.14k|				gc_scan(current->ref, stack);
 1449|  1.14k|			}
 1450|  1.17k|		}
 1451|  1.17k|		idx++;
 1452|  1.17k|	}
 1453|       |
 1454|       |	/* Scan extra roots added during gc_scan */
 1455|    724|	while (idx != GC_G(first_unused)) {
  ------------------
  |  |  312|    724|#define GC_G(v) (gc_globals.v)
  ------------------
  |  Branch (1455:9): [True: 2, False: 722]
  ------------------
 1456|      2|		current = GC_IDX2PTR(idx);
  ------------------
  |  |  172|      2|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1457|      2|		if (GC_IS_ROOT(current->ref)) {
  ------------------
  |  |  158|      2|	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  147|      2|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  149|      2|#define GC_ROOT    0x0 /* possible root of circular garbage     */
  |  |  ------------------
  |  |  |  Branch (158:2): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1458|      2|			if (GC_REF_CHECK_COLOR(current->ref, GC_GREY)) {
  ------------------
  |  |  121|      2|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1459|      2|				GC_REF_SET_COLOR(current->ref, GC_WHITE);
  ------------------
  |  |  129|      2|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      2|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      2|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      2|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      2|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1460|      2|				gc_scan(current->ref, stack);
 1461|      2|			}
 1462|      2|		}
 1463|      2|		idx++;
 1464|      2|	}
 1465|    722|}
zend_gc.c:gc_scan:
 1281|  1.14k|{
 1282|  1.14k|	HashTable *ht;
 1283|  1.14k|	Bucket *p;
 1284|  1.14k|	zval *zv;
 1285|  1.14k|	uint32_t n;
 1286|  1.14k|	GC_STACK_DCL(stack);
  ------------------
  |  |  343|  1.14k|	gc_stack *_stack = init; \
  |  |  344|  1.14k|	size_t    _top = 0;
  ------------------
 1287|       |
 1288|  1.29k|tail_call:
 1289|  1.29k|	if (!GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|  1.29k|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|  1.29k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|  1.29k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.29k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.29k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1289:6): [True: 4, False: 1.29k]
  ------------------
 1290|      4|		goto next;
 1291|      4|	}
 1292|       |
 1293|  1.29k|	if (GC_REFCOUNT(ref) > 0) {
  ------------------
  |  |  716|  1.29k|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (1293:6): [True: 1.05k, False: 240]
  ------------------
 1294|  1.05k|		if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|  1.05k|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|  1.05k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|  1.05k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.05k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.05k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1294:7): [True: 1.05k, False: 0]
  ------------------
 1295|  1.05k|			GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|  1.05k|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|  1.05k|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|  1.05k|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|  1.05k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|  1.05k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|  1.05k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|  1.05k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 1.05k]
  |  |  ------------------
  ------------------
 1296|  1.05k|			if (UNEXPECTED(!_stack->next)) {
  ------------------
  |  |  457|  1.05k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 659, False: 392]
  |  |  ------------------
  ------------------
 1297|    659|				gc_stack_next(_stack);
 1298|    659|			}
 1299|       |			/* Split stack and reuse the tail */
 1300|  1.05k|			_stack->next->prev = NULL;
 1301|  1.05k|			gc_scan_black(ref, _stack->next);
 1302|  1.05k|			_stack->next->prev = _stack;
 1303|  1.05k|		}
 1304|  1.05k|		goto next;
 1305|  1.05k|	}
 1306|       |
 1307|    240|	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  776|    240|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    240|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  614|    240|#define IS_OBJECT					8
  ------------------
  |  Branch (1307:6): [True: 65, False: 175]
  ------------------
 1308|     65|		zend_object *obj = (zend_object*)ref;
 1309|     65|		if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED))) {
  ------------------
  |  |  456|     65|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 65, False: 0]
  |  |  ------------------
  ------------------
 1310|     65|			zval *table;
 1311|     65|			int len;
 1312|       |
 1313|     65|			if (UNEXPECTED(GC_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)) {
  ------------------
  |  |  457|     65|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 60]
  |  |  ------------------
  ------------------
 1314|      5|				zend_weakmap_get_object_entry_gc(obj, &table, &len);
 1315|      5|				n = len;
 1316|      5|				zv = table;
 1317|     10|				for (; n != 0; n--) {
  ------------------
  |  Branch (1317:12): [True: 5, False: 5]
  ------------------
 1318|      5|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1318:6): [True: 0, False: 5]
  |  Branch (1318:6): [True: 5, False: 0]
  ------------------
 1319|      5|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1320|      5|					if (Z_OPT_COLLECTABLE_P(entry)) {
  ------------------
  |  |  958|      5|#define Z_OPT_COLLECTABLE_P(zval_p)	Z_OPT_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  957|      5|#define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (957:34): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1321|      5|						ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1322|      5|						if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|      5|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      5|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 1323|      1|							GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|      1|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      1|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      1|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      1|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      1|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      1|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1324|      1|							GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      1|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1325|      1|						}
 1326|      5|					}
 1327|      5|					zv++;
 1328|      5|				}
 1329|      5|			}
 1330|       |
 1331|     65|			ht = obj->handlers->get_gc(obj, &table, &len);
 1332|     65|			n = len;
 1333|     65|			zv = table;
 1334|     65|			if (UNEXPECTED(ht)) {
  ------------------
  |  |  457|     65|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 44, False: 21]
  |  |  ------------------
  ------------------
 1335|     44|				if (GC_REF_CHECK_COLOR(ht, GC_GREY)) {
  ------------------
  |  |  121|     44|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     44|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     44|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     44|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     44|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 41, False: 3]
  |  |  ------------------
  ------------------
 1336|     41|					GC_REF_SET_COLOR(ht, GC_WHITE);
  ------------------
  |  |  129|     41|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     41|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     41|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     41|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     41|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     41|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     41|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     41|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     41|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     41|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     41|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 41]
  |  |  ------------------
  ------------------
 1337|     41|					GC_STACK_PUSH((zend_refcounted *) ht);
  ------------------
  |  |  347|     41|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1338|     54|					for (; n != 0; n--) {
  ------------------
  |  Branch (1338:13): [True: 13, False: 41]
  ------------------
 1339|     13|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     13|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     13|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     13|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     13|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 8, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1340|      8|							ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1341|      8|							if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|      8|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      8|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      8|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      8|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 7, False: 1]
  |  |  ------------------
  ------------------
 1342|      7|								GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|      7|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      7|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      7|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      7|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      7|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      7|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      7|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      7|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1343|      7|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      7|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1344|      7|							}
 1345|      8|						}
 1346|     13|						zv++;
 1347|     13|					}
 1348|     41|					goto handle_ht;
 1349|     41|				}
 1350|     44|			}
 1351|       |
 1352|     90|handle_zvals:
 1353|    137|			for (; n != 0; n--) {
  ------------------
  |  Branch (1353:11): [True: 100, False: 37]
  ------------------
 1354|    100|				if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    100|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    100|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    100|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    100|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 66, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1355|     66|					ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     66|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     66|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1356|     66|					if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     66|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     66|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     66|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     66|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     66|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 53, False: 13]
  |  |  ------------------
  ------------------
 1357|     53|						GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|     53|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     53|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     53|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     53|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     53|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     53|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     53|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     53|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     53|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     53|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     53|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 53]
  |  |  ------------------
  ------------------
 1358|     53|						zv++;
 1359|     72|						while (--n) {
  ------------------
  |  Branch (1359:14): [True: 19, False: 53]
  ------------------
 1360|     19|							if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     19|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     19|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     19|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     19|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 15, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1361|     15|								zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1362|     15|								if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     15|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     15|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     15|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     15|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     15|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 10, False: 5]
  |  |  ------------------
  ------------------
 1363|     10|									GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|     10|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     10|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     10|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     10|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     10|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     10|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     10|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     10|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1364|     10|									GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     10|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1365|     10|								}
 1366|     15|							}
 1367|     19|							zv++;
 1368|     19|						}
 1369|     53|						goto tail_call;
 1370|     53|					}
 1371|     66|				}
 1372|     47|				zv++;
 1373|     47|			}
 1374|     90|		}
 1375|    175|	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  776|    175|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    175|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  613|    175|#define IS_ARRAY					7
  ------------------
  |  Branch (1375:13): [True: 124, False: 51]
  ------------------
 1376|    124|		ht = (HashTable *)ref;
 1377|    124|		ZEND_ASSERT(ht != &EG(symbol_table));
  ------------------
  |  |  112|    124|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:3): [True: 0, False: 124]
  |  Branch (1377:3): [True: 124, False: 0]
  ------------------
 1378|       |
 1379|    165|handle_ht:
 1380|    165|		n = ht->nNumUsed;
 1381|    165|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|    165|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    165|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    165|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 66, False: 99]
  |  |  ------------------
  ------------------
 1382|     66|            zv = ht->arPacked;
 1383|     66|            goto handle_zvals;
 1384|     66|		}
 1385|       |
 1386|     99|		p = ht->arData;
 1387|    170|		for (; n != 0; n--) {
  ------------------
  |  Branch (1387:10): [True: 99, False: 71]
  ------------------
 1388|     99|			zv = &p->val;
 1389|     99|			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|     99|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     99|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|     99|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1389:8): [True: 7, False: 92]
  ------------------
 1390|      7|				zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      7|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      7|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1391|      7|			}
 1392|     99|			if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     99|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     99|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     99|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     99|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 79, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1393|     79|				ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     79|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     79|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1394|     79|				if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     79|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     79|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     79|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     79|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     79|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 28, False: 51]
  |  |  ------------------
  ------------------
 1395|     28|					GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|     28|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|     28|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|     28|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     28|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|     28|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|     28|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|     28|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|     28|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|     28|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     28|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1396|     28|					p++;
 1397|     36|					while (--n) {
  ------------------
  |  Branch (1397:13): [True: 8, False: 28]
  ------------------
 1398|      8|						zv = &p->val;
 1399|      8|						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|      8|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1399:11): [True: 0, False: 8]
  ------------------
 1400|      0|							zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1401|      0|						}
 1402|      8|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      8|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      8|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      8|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 6, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1403|      6|							zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1404|      6|							if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|      6|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      6|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      6|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      6|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 2, False: 4]
  |  |  ------------------
  ------------------
 1405|      2|								GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|      2|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      2|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      2|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      2|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      2|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1406|      2|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      2|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1407|      2|							}
 1408|      6|						}
 1409|      8|						p++;
 1410|      8|					}
 1411|     28|					goto tail_call;
 1412|     28|				}
 1413|     79|			}
 1414|     71|			p++;
 1415|     71|		}
 1416|     99|	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  776|     51|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     51|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  616|     51|#define IS_REFERENCE				10
  ------------------
  |  Branch (1416:13): [True: 51, False: 0]
  ------------------
 1417|     51|		if (Z_COLLECTABLE(((zend_reference*)ref)->val)) {
  ------------------
  |  |  944|     51|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  671|     51|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  815|     51|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |  |  Branch (944:31): [True: 46, False: 5]
  |  |  ------------------
  ------------------
 1418|     46|			ref = Z_COUNTED(((zend_reference*)ref)->val);
  ------------------
  |  |  707|     46|#define Z_COUNTED(zval)				(zval).value.counted
  ------------------
 1419|     46|			if (GC_REF_CHECK_COLOR(ref, GC_GREY)) {
  ------------------
  |  |  121|     46|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     46|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     46|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     46|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     46|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 5, False: 41]
  |  |  ------------------
  ------------------
 1420|      5|				GC_REF_SET_COLOR(ref, GC_WHITE);
  ------------------
  |  |  129|      5|#define GC_REF_SET_COLOR(ref, c) do { \
  |  |  130|      5|		GC_TRACE_SET_COLOR(ref, c); \
  |  |  131|      5|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  132|      5|			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |   90|      5|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & ~(GC_COLOR << GC_INFO_SHIFT)) | \
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  133|      5|			((c) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  134|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (134:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1421|      5|				goto tail_call;
 1422|      5|			}
 1423|     46|		}
 1424|     51|	}
 1425|       |
 1426|  1.20k|next:
 1427|  1.20k|	ref = GC_STACK_POP();
  ------------------
  |  |  350|  1.20k|	gc_stack_pop(&_stack, &_top)
  ------------------
 1428|  1.20k|	if (ref) {
  ------------------
  |  Branch (1428:6): [True: 61, False: 1.14k]
  ------------------
 1429|     61|		goto tail_call;
 1430|     61|	}
 1431|  1.20k|}
zend_gc.c:gc_scan_black:
  842|  1.05k|{
  843|  1.05k|	HashTable *ht;
  844|  1.05k|	Bucket *p;
  845|  1.05k|	zval *zv;
  846|  1.05k|	uint32_t n;
  847|  1.05k|	GC_STACK_DCL(stack);
  ------------------
  |  |  343|  1.05k|	gc_stack *_stack = init; \
  |  |  344|  1.05k|	size_t    _top = 0;
  ------------------
  848|       |
  849|  1.78k|tail_call:
  850|  1.78k|	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  776|  1.78k|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.78k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  614|  1.78k|#define IS_OBJECT					8
  ------------------
  |  Branch (850:6): [True: 1.16k, False: 624]
  ------------------
  851|  1.16k|		zend_object *obj = (zend_object*)ref;
  852|       |
  853|  1.16k|		if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED))) {
  ------------------
  |  |  456|  1.16k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.16k, False: 0]
  |  |  ------------------
  ------------------
  854|  1.16k|			zval *table;
  855|  1.16k|			int len;
  856|       |
  857|  1.16k|			if (UNEXPECTED(GC_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)) {
  ------------------
  |  |  457|  1.16k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 1.16k]
  |  |  ------------------
  ------------------
  858|      4|				zend_weakmap_get_object_key_entry_gc(obj, &table, &len);
  859|      4|				n = len;
  860|      4|				zv = table;
  861|      8|				for (; n != 0; n-=2) {
  ------------------
  |  Branch (861:12): [True: 4, False: 4]
  ------------------
  862|      4|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (862:6): [True: 0, False: 4]
  |  Branch (862:6): [True: 4, False: 0]
  ------------------
  863|      4|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  864|      4|					zval *weakmap = zv+1;
  865|      4|					ZEND_ASSERT(Z_REFCOUNTED_P(weakmap));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (865:6): [True: 0, False: 4]
  |  Branch (865:6): [True: 4, False: 0]
  ------------------
  866|      4|					if (Z_OPT_COLLECTABLE_P(entry)) {
  ------------------
  |  |  958|      4|#define Z_OPT_COLLECTABLE_P(zval_p)	Z_OPT_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  957|      4|#define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (957:34): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  867|      4|						GC_UNSET_FROM_WEAKMAP_KEY(entry);
  ------------------
  |  |  212|      4|#define GC_UNSET_FROM_WEAKMAP_KEY(zv) do {									   \
  |  |  213|      4|	zval *_z = (zv);														   \
  |  |  214|      4|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  199|      4|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      4|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  215|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (215:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
  868|      4|						if (GC_REF_CHECK_COLOR(Z_COUNTED_P(weakmap), GC_GREY)) {
  ------------------
  |  |  121|      4|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      4|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      4|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      4|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  869|       |							/* Weakmap was scanned in gc_mark_roots, we must
  870|       |							 * ensure that it's eventually scanned in
  871|       |							 * gc_scan_roots as well. */
  872|      1|							if (!GC_REF_ADDRESS(Z_COUNTED_P(weakmap))) {
  ------------------
  |  |  115|      1|	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |   89|      1|#define GC_ADDRESS  0x0fffffu
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (872:12): [True: 1, False: 0]
  ------------------
  873|      1|								gc_extra_root(Z_COUNTED_P(weakmap));
  ------------------
  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  874|      1|							}
  875|      3|						} else if (/* GC_REF_CHECK_COLOR(Z_COUNTED_P(weakmap), GC_BLACK) && */ !GC_FROM_WEAKMAP(entry)) {
  ------------------
  |  |  220|      3|	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  200|      3|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  714|      3|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  ------------------
  |  Branch (875:78): [True: 2, False: 1]
  ------------------
  876|       |							/* Both the entry weakmap and key are BLACK, so we
  877|       |							 * can mark the entry BLACK as well.
  878|       |							 * !GC_FROM_WEAKMAP(entry) means that the weakmap
  879|       |							 * was already scanned black (or will not be
  880|       |							 * scanned), so it's our responsibility to mark the
  881|       |							 * entry */
  882|      2|							ZEND_ASSERT(GC_REF_CHECK_COLOR(Z_COUNTED_P(weakmap), GC_BLACK));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (882:8): [True: 0, False: 2]
  |  Branch (882:8): [True: 2, False: 0]
  ------------------
  883|      2|							ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  884|      2|							GC_ADDREF(ref);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  885|      2|							if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|      2|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (885:12): [True: 0, False: 2]
  ------------------
  886|      0|								GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      0|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      0|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      0|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      0|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      0|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  887|      0|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      0|	gc_stack_push(&_stack, &_top, ref);
  ------------------
  888|      0|							}
  889|      2|						}
  890|      4|					}
  891|      4|					zv+=2;
  892|      4|				}
  893|      4|			}
  894|       |
  895|  1.16k|			if (UNEXPECTED(obj->handlers->get_gc == zend_weakmap_get_gc)) {
  ------------------
  |  |  457|  1.16k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 1.15k]
  |  |  ------------------
  ------------------
  896|      5|				zend_weakmap_get_key_entry_gc(obj, &table, &len);
  897|      5|				n = len;
  898|      5|				zv = table;
  899|     11|				for (; n != 0; n-=2) {
  ------------------
  |  Branch (899:12): [True: 6, False: 5]
  ------------------
  900|      6|					ZEND_ASSERT(Z_TYPE_P(zv+1) == IS_PTR);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (900:6): [True: 0, False: 6]
  |  Branch (900:6): [True: 6, False: 0]
  ------------------
  901|      6|					zval *key = zv;
  902|      6|					zval *entry = (zval*) Z_PTR_P(zv+1);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  903|      6|					if (Z_OPT_COLLECTABLE_P(entry)) {
  ------------------
  |  |  958|      6|#define Z_OPT_COLLECTABLE_P(zval_p)	Z_OPT_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  957|      6|#define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (957:34): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|      6|						GC_UNSET_FROM_WEAKMAP(entry);
  ------------------
  |  |  227|      6|#define GC_UNSET_FROM_WEAKMAP(zv) do {										   \
  |  |  228|      6|	zval *_z = (zv);														   \
  |  |  229|      6|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  200|      6|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      6|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  230|      6|} while (0)
  |  |  ------------------
  |  |  |  Branch (230:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
  905|      6|						if (GC_REF_CHECK_COLOR(Z_COUNTED_P(key), GC_GREY)) {
  ------------------
  |  |  121|      6|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      6|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      6|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      6|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 3, False: 3]
  |  |  ------------------
  ------------------
  906|       |							/* Key was scanned in gc_mark_roots, we must
  907|       |							 * ensure that it's eventually scanned in
  908|       |							 * gc_scan_roots as well. */
  909|      3|							if (!GC_REF_ADDRESS(Z_COUNTED_P(key))) {
  ------------------
  |  |  115|      3|	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |   89|      3|#define GC_ADDRESS  0x0fffffu
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      3|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      3|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (909:12): [True: 1, False: 2]
  ------------------
  910|      1|								gc_extra_root(Z_COUNTED_P(key));
  ------------------
  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  911|      1|							}
  912|      3|						} else if (/* GC_REF_CHECK_COLOR(Z_COUNTED_P(key), GC_BLACK) && */ !GC_FROM_WEAKMAP_KEY(entry)) {
  ------------------
  |  |  205|      3|	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  199|      3|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  714|      3|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  ------------------
  |  Branch (912:74): [True: 3, False: 0]
  ------------------
  913|       |							/* Both the entry weakmap and key are BLACK, so we
  914|       |							 * can mark the entry BLACK as well.
  915|       |							 * !GC_FROM_WEAKMAP_KEY(entry) means that the key
  916|       |							 * was already scanned black (or will not be
  917|       |							 * scanned), so it's our responsibility to mark the
  918|       |							 * entry */
  919|      3|							ZEND_ASSERT(GC_REF_CHECK_COLOR(Z_COUNTED_P(key), GC_BLACK));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (919:8): [True: 0, False: 3]
  |  Branch (919:8): [True: 3, False: 0]
  ------------------
  920|      3|							ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  921|      3|							GC_ADDREF(ref);
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  922|      3|							if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|      3|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      3|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      3|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      3|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (922:12): [True: 3, False: 0]
  ------------------
  923|      3|								GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      3|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      3|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      3|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      3|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      3|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  924|      3|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      3|	gc_stack_push(&_stack, &_top, ref);
  ------------------
  925|      3|							}
  926|      3|						}
  927|      6|					}
  928|      6|					zv += 2;
  929|      6|				}
  930|      5|				goto next;
  931|      5|			}
  932|       |
  933|  1.15k|			ht = obj->handlers->get_gc(obj, &table, &len);
  934|  1.15k|			n = len;
  935|  1.15k|			zv = table;
  936|  1.15k|			if (UNEXPECTED(ht)) {
  ------------------
  |  |  457|  1.15k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 216, False: 943]
  |  |  ------------------
  ------------------
  937|    216|				GC_ADDREF(ht);
  ------------------
  |  |  718|    216|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  938|    216|				if (!GC_REF_CHECK_COLOR(ht, GC_BLACK)) {
  ------------------
  |  |  121|    216|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    216|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    216|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    216|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    216|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (938:9): [True: 214, False: 2]
  ------------------
  939|    214|					GC_REF_SET_BLACK(ht);
  ------------------
  |  |  136|    214|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|    214|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|    214|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|    214|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|    214|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|    214|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|    214|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 214]
  |  |  ------------------
  ------------------
  940|    367|					for (; n != 0; n--) {
  ------------------
  |  Branch (940:13): [True: 153, False: 214]
  ------------------
  941|    153|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    153|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    153|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    153|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    153|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 45, False: 108]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  942|     45|							ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     45|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     45|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  943|     45|							GC_ADDREF(ref);
  ------------------
  |  |  718|     45|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  944|     45|							if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|     45|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     45|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     45|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     45|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     45|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (944:12): [True: 38, False: 7]
  ------------------
  945|     38|								GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     38|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     38|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     38|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     38|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     38|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     38|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     38|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 38]
  |  |  ------------------
  ------------------
  946|     38|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     38|	gc_stack_push(&_stack, &_top, ref);
  ------------------
  947|     38|							}
  948|     45|						}
  949|    153|						zv++;
  950|    153|					}
  951|    214|					goto handle_ht;
  952|    214|				}
  953|    216|			}
  954|       |
  955|  1.21k|handle_zvals:
  956|  2.11M|			for (; n != 0; n--) {
  ------------------
  |  Branch (956:11): [True: 2.10M, False: 673]
  ------------------
  957|  2.10M|				if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|  2.10M|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|  2.10M|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  2.10M|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  2.10M|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 574, False: 2.10M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  958|    574|					ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    574|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    574|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  959|    574|					GC_ADDREF(ref);
  ------------------
  |  |  718|    574|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  960|    574|					if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|    574|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    574|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    574|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    574|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    574|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (960:10): [True: 538, False: 36]
  ------------------
  961|    538|						GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|    538|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|    538|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|    538|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|    538|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|    538|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|    538|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|    538|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 538]
  |  |  ------------------
  ------------------
  962|    538|						zv++;
  963|    998|						while (--n) {
  ------------------
  |  Branch (963:14): [True: 460, False: 538]
  ------------------
  964|    460|							if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    460|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    460|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    460|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    460|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 320, False: 140]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  965|    320|								zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    320|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    320|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  966|    320|								GC_ADDREF(ref);
  ------------------
  |  |  718|    320|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  967|    320|								if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|    320|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    320|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    320|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    320|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    320|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (967:13): [True: 44, False: 276]
  ------------------
  968|     44|									GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     44|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     44|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     44|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     44|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     44|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     44|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     44|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 44]
  |  |  ------------------
  ------------------
  969|     44|									GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     44|	gc_stack_push(&_stack, &_top, ref);
  ------------------
  970|     44|								}
  971|    320|							}
  972|    460|							zv++;
  973|    460|						}
  974|    538|						goto tail_call;
  975|    538|					}
  976|    574|				}
  977|  2.10M|				zv++;
  978|  2.10M|			}
  979|  1.21k|		}
  980|  1.16k|	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  776|    624|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    624|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  613|    624|#define IS_ARRAY					7
  ------------------
  |  Branch (980:13): [True: 532, False: 92]
  ------------------
  981|    532|		ZEND_ASSERT((zend_array*)ref != &EG(symbol_table));
  ------------------
  |  |  112|    532|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (981:3): [True: 0, False: 532]
  |  Branch (981:3): [True: 532, False: 0]
  ------------------
  982|    532|		ht = (zend_array*)ref;
  983|    746|handle_ht:
  984|    746|		n = ht->nNumUsed;
  985|    746|		zv = ht->arPacked;
  986|    746|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|    746|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    746|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    746|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 266, False: 480]
  |  |  ------------------
  ------------------
  987|    266|			goto handle_zvals;
  988|    266|		}
  989|       |
  990|    480|		p = (Bucket*)zv;
  991|  1.22k|		for (; n != 0; n--) {
  ------------------
  |  Branch (991:10): [True: 823, False: 401]
  ------------------
  992|    823|			zv = &p->val;
  993|    823|			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|    823|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    823|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|    823|#define IS_INDIRECT             	12
  ------------------
  |  Branch (993:8): [True: 172, False: 651]
  ------------------
  994|    172|				zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|    172|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|    172|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  995|    172|			}
  996|    823|			if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    823|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    823|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    823|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    823|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 289, False: 534]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  997|    289|				ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    289|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    289|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  998|    289|				GC_ADDREF(ref);
  ------------------
  |  |  718|    289|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  999|    289|				if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|    289|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|    289|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|    289|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    289|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|    289|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (999:9): [True: 79, False: 210]
  ------------------
 1000|     79|					GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     79|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     79|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     79|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     79|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     79|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     79|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     79|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 79]
  |  |  ------------------
  ------------------
 1001|     79|					p++;
 1002|    105|					while (--n) {
  ------------------
  |  Branch (1002:13): [True: 26, False: 79]
  ------------------
 1003|     26|						zv = &p->val;
 1004|     26|						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|     26|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     26|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|     26|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1004:11): [True: 3, False: 23]
  ------------------
 1005|      3|							zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      3|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      3|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1006|      3|						}
 1007|     26|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     26|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     26|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     26|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     26|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 20, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1008|     20|							zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     20|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     20|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1009|     20|							GC_ADDREF(ref);
  ------------------
  |  |  718|     20|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1010|     20|							if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|     20|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     20|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     20|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     20|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1010:12): [True: 14, False: 6]
  ------------------
 1011|     14|								GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     14|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     14|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     14|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     14|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     14|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     14|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1012|     14|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|     14|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1013|     14|							}
 1014|     20|						}
 1015|     26|						p++;
 1016|     26|					}
 1017|     79|					goto tail_call;
 1018|     79|				}
 1019|    289|			}
 1020|    744|			p++;
 1021|    744|		}
 1022|    480|	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  776|     92|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     92|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  616|     92|#define IS_REFERENCE				10
  ------------------
  |  Branch (1022:13): [True: 92, False: 0]
  ------------------
 1023|     92|		if (Z_COLLECTABLE(((zend_reference*)ref)->val)) {
  ------------------
  |  |  944|     92|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  671|     92|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  815|     92|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |  |  Branch (944:31): [True: 28, False: 64]
  |  |  ------------------
  ------------------
 1024|     28|			ref = Z_COUNTED(((zend_reference*)ref)->val);
  ------------------
  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  ------------------
 1025|     28|			GC_ADDREF(ref);
  ------------------
  |  |  718|     28|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1026|     28|			if (!GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|     28|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     28|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     28|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     28|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     28|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1026:8): [True: 21, False: 7]
  ------------------
 1027|     21|				GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     21|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     21|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     21|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     21|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     21|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     21|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
 1028|     21|				goto tail_call;
 1029|     21|			}
 1030|     28|		}
 1031|     92|	}
 1032|       |
 1033|  1.15k|next:
 1034|  1.15k|	ref = GC_STACK_POP();
  ------------------
  |  |  350|  1.15k|	gc_stack_pop(&_stack, &_top)
  ------------------
 1035|  1.15k|	if (ref) {
  ------------------
  |  Branch (1035:6): [True: 99, False: 1.05k]
  ------------------
 1036|     99|		goto tail_call;
 1037|     99|	}
 1038|  1.15k|}
zend_gc.c:gc_extra_root:
  775|      2|{
  776|      2|	uint32_t idx;
  777|      2|	gc_root_buffer *newRoot;
  778|       |
  779|      2|	if (EXPECTED(GC_HAS_UNUSED())) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  780|      0|		idx = GC_FETCH_UNUSED();
  ------------------
  |  |  240|      0|	gc_fetch_unused()
  ------------------
  781|      2|	} else if (EXPECTED(GC_HAS_NEXT_UNUSED())) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  782|      2|		idx = GC_FETCH_NEXT_UNUSED();
  ------------------
  |  |  251|      2|	gc_fetch_next_unused()
  ------------------
  783|      2|	} else {
  784|      0|		gc_grow_root_buffer();
  785|      0|		if (UNEXPECTED(!GC_HAS_NEXT_UNUSED())) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  786|       |			/* TODO: can this really happen? */
  787|      0|			return;
  788|      0|		}
  789|      0|		idx = GC_FETCH_NEXT_UNUSED();
  ------------------
  |  |  251|      0|	gc_fetch_next_unused()
  ------------------
  790|      0|	}
  791|       |
  792|      2|	ZEND_ASSERT(GC_TYPE(ref) == IS_ARRAY || GC_TYPE(ref) == IS_OBJECT);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (792:2): [True: 2, False: 0]
  |  Branch (792:2): [True: 0, False: 0]
  |  Branch (792:2): [True: 0, False: 2]
  |  Branch (792:2): [True: 2, False: 0]
  ------------------
  793|      2|	ZEND_ASSERT(GC_REF_ADDRESS(ref) == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (793:2): [True: 0, False: 2]
  |  Branch (793:2): [True: 2, False: 0]
  ------------------
  794|       |
  795|      2|	newRoot = GC_IDX2PTR(idx);
  ------------------
  |  |  172|      2|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
  796|      2|	newRoot->ref = ref; /* GC_ROOT tag is 0 */
  797|       |
  798|      2|	idx = gc_compress(idx);
  799|      2|	GC_REF_SET_INFO(ref, idx | GC_REF_COLOR(ref));
  ------------------
  |  |  123|      2|#define GC_REF_SET_INFO(ref, info) do { \
  |  |  124|      2|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  125|      2|			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  757|      2|#define GC_TYPE_MASK				0x0000000f
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  758|      2|#define GC_FLAGS_MASK				0x000003f0
  |  |  ------------------
  |  |  126|      2|			((info) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  127|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (127:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  800|      2|	GC_G(num_roots)++;
  ------------------
  |  |  312|      2|#define GC_G(v) (gc_globals.v)
  ------------------
  801|       |
  802|      2|	GC_BENCH_INC(zval_buffered);
  803|      2|	GC_BENCH_INC(root_buf_length);
  804|      2|	GC_BENCH_PEAK(root_buf_peak, root_buf_length);
  805|      2|}
zend_gc.c:gc_collect_roots:
 1685|    722|{
 1686|    722|	uint32_t idx, end;
 1687|    722|	zend_refcounted *ref;
 1688|    722|	int count = 0;
 1689|    722|	gc_root_buffer *current = GC_IDX2PTR(GC_FIRST_ROOT);
  ------------------
  |  |  172|    722|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1690|    722|	gc_root_buffer *last = GC_IDX2PTR(GC_G(first_unused));
  ------------------
  |  |  172|    722|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1691|       |
 1692|       |	/* remove non-garbage from the list */
 1693|  1.89k|	while (current != last) {
  ------------------
  |  Branch (1693:9): [True: 1.17k, False: 722]
  ------------------
 1694|  1.17k|		if (GC_IS_ROOT(current->ref)) {
  ------------------
  |  |  158|  1.17k|	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  147|  1.17k|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_ROOT)
  |  |  ------------------
  |  |  |  |  149|  1.17k|#define GC_ROOT    0x0 /* possible root of circular garbage     */
  |  |  ------------------
  |  |  |  Branch (158:2): [True: 1.17k, False: 0]
  |  |  ------------------
  ------------------
 1695|  1.17k|			if (GC_REF_CHECK_COLOR(current->ref, GC_BLACK)) {
  ------------------
  |  |  121|  1.17k|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|  1.17k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|  1.17k|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.17k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|  1.17k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1.09k, False: 81]
  |  |  ------------------
  ------------------
 1696|  1.09k|				GC_REF_SET_INFO(current->ref, 0); /* reset GC_ADDRESS() and keep GC_BLACK */
  ------------------
  |  |  123|  1.09k|#define GC_REF_SET_INFO(ref, info) do { \
  |  |  124|  1.09k|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|  1.09k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  125|  1.09k|			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  775|  1.09k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  757|  1.09k|#define GC_TYPE_MASK				0x0000000f
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  758|  1.09k|#define GC_FLAGS_MASK				0x000003f0
  |  |  ------------------
  |  |  126|  1.09k|			((info) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|  1.09k|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  127|  1.09k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (127:11): [Folded, False: 1.09k]
  |  |  ------------------
  ------------------
 1697|  1.09k|				gc_remove_from_roots(current);
 1698|  1.09k|			}
 1699|  1.17k|		}
 1700|  1.17k|		current++;
 1701|  1.17k|	}
 1702|       |
 1703|    722|	gc_compact();
 1704|       |
 1705|       |	/* Root buffer might be reallocated during gc_collect_white,
 1706|       |	 * make sure to reload pointers. */
 1707|    722|	idx = GC_FIRST_ROOT;
  ------------------
  |  |  182|    722|#define GC_FIRST_ROOT        1
  ------------------
 1708|    722|	end = GC_G(first_unused);
  ------------------
  |  |  312|    722|#define GC_G(v) (gc_globals.v)
  ------------------
 1709|    803|	while (idx != end) {
  ------------------
  |  Branch (1709:9): [True: 81, False: 722]
  ------------------
 1710|     81|		current = GC_IDX2PTR(idx);
  ------------------
  |  |  172|     81|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|     81|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1711|     81|		ref = current->ref;
 1712|     81|		ZEND_ASSERT(GC_IS_ROOT(ref));
  ------------------
  |  |  112|     81|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1712:3): [True: 0, False: 81]
  |  Branch (1712:3): [True: 81, False: 0]
  ------------------
 1713|     81|		current->ref = GC_MAKE_GARBAGE(ref);
  ------------------
  |  |  167|     81|	((void*)(((uintptr_t)(ptr)) | GC_GARBAGE))
  |  |  ------------------
  |  |  |  |  151|     81|#define GC_GARBAGE 0x2 /* garbage to delete                     */
  |  |  ------------------
  ------------------
 1714|     81|		if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|     81|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     81|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     81|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     81|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     81|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 72, False: 9]
  |  |  ------------------
  ------------------
 1715|     72|			GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     72|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     72|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     72|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     72|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     72|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     72|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     72|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 72]
  |  |  ------------------
  ------------------
 1716|     72|			count += gc_collect_white(ref, flags, stack);
 1717|     72|		}
 1718|     81|		idx++;
 1719|     81|	}
 1720|       |
 1721|    722|	return count;
 1722|    722|}
zend_gc.c:gc_collect_white:
 1496|     72|{
 1497|     72|	int count = 0;
 1498|     72|	HashTable *ht;
 1499|     72|	Bucket *p;
 1500|     72|	zval *zv;
 1501|     72|	uint32_t n;
 1502|     72|	GC_STACK_DCL(stack);
  ------------------
  |  |  343|     72|	gc_stack *_stack = init; \
  |  |  344|     72|	size_t    _top = 0;
  ------------------
 1503|       |
 1504|    148|tail_call:
 1505|       |	/* don't count references for compatibility ??? */
 1506|    148|	if (GC_TYPE(ref) != IS_REFERENCE) {
  ------------------
  |  |  776|    148|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    148|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (GC_TYPE(ref) != IS_REFERENCE) {
  ------------------
  |  |  616|    148|#define IS_REFERENCE				10
  ------------------
  |  Branch (1506:6): [True: 102, False: 46]
  ------------------
 1507|    102|		count++;
 1508|    102|	}
 1509|       |
 1510|    148|	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  776|    148|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    148|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  614|    148|#define IS_OBJECT					8
  ------------------
  |  Branch (1510:6): [True: 47, False: 101]
  ------------------
 1511|     47|		zend_object *obj = (zend_object*)ref;
 1512|       |
 1513|     47|		if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED))) {
  ------------------
  |  |  456|     47|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 47, False: 0]
  |  |  ------------------
  ------------------
 1514|     47|			int len;
 1515|     47|			zval *table;
 1516|       |
 1517|       |			/* optimization: color is GC_BLACK (0) */
 1518|     47|			if (!GC_INFO(ref)) {
  ------------------
  |  |  778|     47|#define GC_INFO(p)					zval_gc_info(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     47|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
  |  Branch (1518:8): [True: 8, False: 39]
  ------------------
 1519|      8|				gc_add_garbage(ref);
 1520|      8|			}
 1521|     47|			if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)
  ------------------
  |  |  852|     47|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|     47|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     47|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)
  ------------------
  |  |  849|     47|#define IS_OBJ_DESTRUCTOR_CALLED	(1<<8)
  ------------------
  |  Branch (1521:8): [True: 14, False: 33]
  ------------------
 1522|     14|			 && (obj->handlers->dtor_obj != zend_objects_destroy_object
  ------------------
  |  Branch (1522:9): [True: 0, False: 14]
  ------------------
 1523|     14|			  || obj->ce->destructor != NULL)) {
  ------------------
  |  Branch (1523:9): [True: 2, False: 12]
  ------------------
 1524|      2|				*flags |= GC_HAS_DESTRUCTORS;
  ------------------
  |  |  196|      2|#define GC_HAS_DESTRUCTORS  (1<<0)
  ------------------
 1525|      2|			}
 1526|       |
 1527|     47|			if (UNEXPECTED(GC_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)) {
  ------------------
  |  |  457|     47|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 42]
  |  |  ------------------
  ------------------
 1528|      5|				zend_weakmap_get_object_entry_gc(obj, &table, &len);
 1529|      5|				n = len;
 1530|      5|				zv = table;
 1531|     10|				for (; n != 0; n--) {
  ------------------
  |  Branch (1531:12): [True: 5, False: 5]
  ------------------
 1532|      5|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1532:6): [True: 0, False: 5]
  |  Branch (1532:6): [True: 5, False: 0]
  ------------------
 1533|      5|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1534|      5|					if (Z_COLLECTABLE_P(entry) && GC_FROM_WEAKMAP_KEY(entry)) {
  ------------------
  |  |  945|      5|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     10|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      5|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_COLLECTABLE_P(entry) && GC_FROM_WEAKMAP_KEY(entry)) {
  ------------------
  |  |  205|      5|	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  199|      5|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  714|      5|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  |  Branch (205:2): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 1535|      1|						GC_UNSET_FROM_WEAKMAP_KEY(entry);
  ------------------
  |  |  212|      1|#define GC_UNSET_FROM_WEAKMAP_KEY(zv) do {									   \
  |  |  213|      1|	zval *_z = (zv);														   \
  |  |  214|      1|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  199|      1|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      1|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  215|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (215:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1536|      1|						GC_UNSET_FROM_WEAKMAP(entry);
  ------------------
  |  |  227|      1|#define GC_UNSET_FROM_WEAKMAP(zv) do {										   \
  |  |  228|      1|	zval *_z = (zv);														   \
  |  |  229|      1|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  200|      1|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      1|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  230|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (230:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1537|      1|						ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1538|      1|						GC_ADDREF(ref);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1539|      1|						if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|      1|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      1|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1540|      0|							GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      0|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      0|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      0|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      0|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      0|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1541|      0|							GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      0|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1542|      0|						}
 1543|      1|					}
 1544|      5|					zv++;
 1545|      5|				}
 1546|      5|			}
 1547|       |
 1548|     47|			if (UNEXPECTED(obj->handlers->get_gc == zend_weakmap_get_gc)) {
  ------------------
  |  |  457|     47|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 45]
  |  |  ------------------
  ------------------
 1549|      2|				zend_weakmap_get_entry_gc(obj, &table, &len);
 1550|      2|				n = len;
 1551|      2|				zv = table;
 1552|      6|				for (; n != 0; n--) {
  ------------------
  |  Branch (1552:12): [True: 4, False: 2]
  ------------------
 1553|      4|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1553:6): [True: 0, False: 4]
  |  Branch (1553:6): [True: 4, False: 0]
  ------------------
 1554|      4|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1555|      4|					if (Z_COLLECTABLE_P(entry) && GC_FROM_WEAKMAP(entry)) {
  ------------------
  |  |  945|      4|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      8|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      4|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_COLLECTABLE_P(entry) && GC_FROM_WEAKMAP(entry)) {
  ------------------
  |  |  220|      4|	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  200|      4|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	(Z_TYPE_INFO_P((zv)) & (Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT))
  |  |  ------------------
  |  |  |  |  714|      4|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  |  Branch (220:2): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 1556|      4|						GC_UNSET_FROM_WEAKMAP_KEY(entry);
  ------------------
  |  |  212|      4|#define GC_UNSET_FROM_WEAKMAP_KEY(zv) do {									   \
  |  |  213|      4|	zval *_z = (zv);														   \
  |  |  214|      4|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  199|      4|#define Z_FROM_WEAKMAP_KEY		(1<<0)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP_KEY << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      4|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  215|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (215:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1557|      4|						GC_UNSET_FROM_WEAKMAP(entry);
  ------------------
  |  |  227|      4|#define GC_UNSET_FROM_WEAKMAP(zv) do {										   \
  |  |  228|      4|	zval *_z = (zv);														   \
  |  |  229|      4|	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  200|      4|#define Z_FROM_WEAKMAP			(1<<1)
  |  |  ------------------
  |  |               	Z_TYPE_INFO_P(_z) = Z_TYPE_INFO_P(_z) & ~(Z_FROM_WEAKMAP << Z_TYPE_INFO_EXTRA_SHIFT); \
  |  |  ------------------
  |  |  |  |  714|      4|#define Z_TYPE_INFO_EXTRA_SHIFT		16
  |  |  ------------------
  |  |  230|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (230:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1558|      4|						ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1559|      4|						GC_ADDREF(ref);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1560|      4|						if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|      4|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      4|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      4|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      4|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 1561|      4|							GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      4|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      4|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      4|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      4|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      4|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1562|      4|							GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      4|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1563|      4|						}
 1564|      4|					}
 1565|      4|					zv++;
 1566|      4|				}
 1567|      2|				goto next;
 1568|      2|			}
 1569|       |
 1570|     45|			ht = obj->handlers->get_gc(obj, &table, &len);
 1571|     45|			n = len;
 1572|     45|			zv = table;
 1573|     45|			if (UNEXPECTED(ht)) {
  ------------------
  |  |  457|     45|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 32, False: 13]
  |  |  ------------------
  ------------------
 1574|     32|				GC_ADDREF(ht);
  ------------------
  |  |  718|     32|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1575|     32|				if (GC_REF_CHECK_COLOR(ht, GC_WHITE)) {
  ------------------
  |  |  121|     32|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     32|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     32|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     32|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     32|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 29, False: 3]
  |  |  ------------------
  ------------------
 1576|     29|					GC_REF_SET_BLACK(ht);
  ------------------
  |  |  136|     29|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     29|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     29|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     29|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     29|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     29|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     29|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 29]
  |  |  ------------------
  ------------------
 1577|     34|					for (; n != 0; n--) {
  ------------------
  |  Branch (1577:13): [True: 5, False: 29]
  ------------------
 1578|      5|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      5|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      5|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      5|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 2, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1579|      2|							ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1580|      2|							GC_ADDREF(ref);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1581|      2|							if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|      2|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1582|      1|								GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      1|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      1|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      1|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      1|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1583|      1|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      1|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1584|      1|							}
 1585|      2|						}
 1586|      5|						zv++;
 1587|      5|					}
 1588|     29|					goto handle_ht;
 1589|     29|				}
 1590|     32|			}
 1591|       |
 1592|     56|handle_zvals:
 1593|     73|			for (; n != 0; n--) {
  ------------------
  |  Branch (1593:11): [True: 53, False: 20]
  ------------------
 1594|     53|				if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     53|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     53|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     53|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     53|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 46, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1595|     46|					ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     46|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     46|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1596|     46|					GC_ADDREF(ref);
  ------------------
  |  |  718|     46|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1597|     46|					if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|     46|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     46|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     46|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     46|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     46|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 36, False: 10]
  |  |  ------------------
  ------------------
 1598|     36|						GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     36|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     36|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     36|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     36|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     36|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     36|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     36|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 36]
  |  |  ------------------
  ------------------
 1599|     36|						zv++;
 1600|     47|						while (--n) {
  ------------------
  |  Branch (1600:14): [True: 11, False: 36]
  ------------------
 1601|     11|							if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     11|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     11|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     11|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     11|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 10, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1602|     10|								zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1603|     10|								GC_ADDREF(ref);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1604|     10|								if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|     10|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     10|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     10|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     10|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 5, False: 5]
  |  |  ------------------
  ------------------
 1605|      5|									GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      5|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      5|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      5|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      5|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1606|      5|									GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      5|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1607|      5|								}
 1608|     10|							}
 1609|     11|							zv++;
 1610|     11|						}
 1611|     36|						goto tail_call;
 1612|     36|					}
 1613|     46|				}
 1614|     17|				zv++;
 1615|     17|			}
 1616|     56|		}
 1617|    101|	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  776|    101|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    101|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  613|    101|#define IS_ARRAY					7
  ------------------
  |  Branch (1617:13): [True: 55, False: 46]
  ------------------
 1618|       |		/* optimization: color is GC_BLACK (0) */
 1619|     55|		if (!GC_INFO(ref)) {
  ------------------
  |  |  778|     55|#define GC_INFO(p)					zval_gc_info(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     55|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
  |  Branch (1619:7): [True: 13, False: 42]
  ------------------
 1620|     13|			gc_add_garbage(ref);
 1621|     13|		}
 1622|     55|		ht = (zend_array*)ref;
 1623|       |
 1624|     84|handle_ht:
 1625|     84|		n = ht->nNumUsed;
 1626|     84|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     84|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     84|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     84|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 40, False: 44]
  |  |  ------------------
  ------------------
 1627|     40|			zv = ht->arPacked;
 1628|     40|			goto handle_zvals;
 1629|     40|		}
 1630|       |
 1631|     44|		p = ht->arData;
 1632|     68|		for (; n != 0; n--) {
  ------------------
  |  Branch (1632:10): [True: 47, False: 21]
  ------------------
 1633|     47|			zv = &p->val;
 1634|     47|			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|     47|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     47|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|     47|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1634:8): [True: 3, False: 44]
  ------------------
 1635|      3|				zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      3|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      3|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1636|      3|			}
 1637|     47|			if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     47|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     47|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     47|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     47|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 42, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1638|     42|				ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     42|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     42|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1639|     42|				GC_ADDREF(ref);
  ------------------
  |  |  718|     42|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1640|     42|				if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|     42|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     42|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     42|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     42|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     42|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 23, False: 19]
  |  |  ------------------
  ------------------
 1641|     23|					GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|     23|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|     23|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|     23|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     23|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|     23|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     23|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
 1642|     23|					p++;
 1643|     30|					while (--n) {
  ------------------
  |  Branch (1643:13): [True: 7, False: 23]
  ------------------
 1644|      7|						zv = &p->val;
 1645|      7|						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|      7|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1645:11): [True: 0, False: 7]
  ------------------
 1646|      0|							zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1647|      0|						}
 1648|      7|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      7|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      7|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 5, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1649|      5|							zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1650|      5|							GC_ADDREF(ref);
  ------------------
  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1651|      5|							if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|      5|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      5|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 2, False: 3]
  |  |  ------------------
  ------------------
 1652|      2|								GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      2|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      2|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      2|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1653|      2|								GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      2|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1654|      2|							}
 1655|      5|						}
 1656|      7|						p++;
 1657|      7|					}
 1658|     23|					goto tail_call;
 1659|     23|				}
 1660|     42|			}
 1661|     24|			p++;
 1662|     24|		}
 1663|     46|	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  776|     46|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     46|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  616|     46|#define IS_REFERENCE				10
  ------------------
  |  Branch (1663:13): [True: 46, False: 0]
  ------------------
 1664|     46|		if (Z_COLLECTABLE(((zend_reference*)ref)->val)) {
  ------------------
  |  |  944|     46|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  671|     46|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  815|     46|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |  |  Branch (944:31): [True: 46, False: 0]
  |  |  ------------------
  ------------------
 1665|     46|			ref = Z_COUNTED(((zend_reference*)ref)->val);
  ------------------
  |  |  707|     46|#define Z_COUNTED(zval)				(zval).value.counted
  ------------------
 1666|     46|			GC_ADDREF(ref);
  ------------------
  |  |  718|     46|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1667|     46|			if (GC_REF_CHECK_COLOR(ref, GC_WHITE)) {
  ------------------
  |  |  121|     46|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|     46|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|     46|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     46|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|     46|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 5, False: 41]
  |  |  ------------------
  ------------------
 1668|      5|				GC_REF_SET_BLACK(ref);
  ------------------
  |  |  136|      5|#define GC_REF_SET_BLACK(ref) do { \
  |  |  137|      5|		GC_TRACE_SET_COLOR(ref, GC_BLACK); \
  |  |  138|      5|		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |   90|      5|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               		GC_TYPE_INFO(ref) &= ~(GC_COLOR << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  139|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (139:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1669|      5|				goto tail_call;
 1670|      5|			}
 1671|     46|		}
 1672|     46|	}
 1673|       |
 1674|     84|next:
 1675|     84|	ref = GC_STACK_POP();
  ------------------
  |  |  350|     84|	gc_stack_pop(&_stack, &_top)
  ------------------
 1676|     84|	if (ref) {
  ------------------
  |  Branch (1676:6): [True: 12, False: 72]
  ------------------
 1677|     12|		goto tail_call;
 1678|     12|	}
 1679|       |
 1680|     72|	return count;
 1681|     84|}
zend_gc.c:gc_add_garbage:
 1470|     21|{
 1471|     21|	uint32_t idx;
 1472|     21|	gc_root_buffer *buf;
 1473|       |
 1474|     21|	if (GC_HAS_UNUSED()) {
  ------------------
  |  |  236|     21|	(GC_G(unused) != GC_INVALID)
  |  |  ------------------
  |  |  |  |  312|     21|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |               	(GC_G(unused) != GC_INVALID)
  |  |  ------------------
  |  |  |  |  181|     21|#define GC_INVALID           0
  |  |  ------------------
  |  |  |  Branch (236:2): [True: 0, False: 21]
  |  |  ------------------
  ------------------
 1475|      0|		idx = GC_FETCH_UNUSED();
  ------------------
  |  |  240|      0|	gc_fetch_unused()
  ------------------
 1476|     21|	} else if (GC_HAS_NEXT_UNUSED()) {
  ------------------
  |  |  249|     21|	(GC_G(first_unused) != GC_G(buf_size))
  |  |  ------------------
  |  |  |  |  312|     21|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |               	(GC_G(first_unused) != GC_G(buf_size))
  |  |  ------------------
  |  |  |  |  312|     21|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (249:2): [True: 21, False: 0]
  |  |  ------------------
  ------------------
 1477|     21|		idx = GC_FETCH_NEXT_UNUSED();
  ------------------
  |  |  251|     21|	gc_fetch_next_unused()
  ------------------
 1478|     21|	} else {
 1479|      0|		gc_grow_root_buffer();
 1480|      0|		if (UNEXPECTED(!GC_HAS_NEXT_UNUSED())) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1481|      0|			return;
 1482|      0|		}
 1483|      0|		idx = GC_FETCH_NEXT_UNUSED();
  ------------------
  |  |  251|      0|	gc_fetch_next_unused()
  ------------------
 1484|      0|	}
 1485|       |
 1486|     21|	buf = GC_IDX2PTR(idx);
  ------------------
  |  |  172|     21|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|     21|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1487|     21|	buf->ref = GC_MAKE_GARBAGE(ref);
  ------------------
  |  |  167|     21|	((void*)(((uintptr_t)(ptr)) | GC_GARBAGE))
  |  |  ------------------
  |  |  |  |  151|     21|#define GC_GARBAGE 0x2 /* garbage to delete                     */
  |  |  ------------------
  ------------------
 1488|       |
 1489|     21|	idx = gc_compress(idx);
 1490|     21|	GC_REF_SET_INFO(ref, idx | GC_BLACK);
  ------------------
  |  |  123|     21|#define GC_REF_SET_INFO(ref, info) do { \
  |  |  124|     21|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     21|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  125|     21|			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  775|     21|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  757|     21|#define GC_TYPE_MASK				0x0000000f
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  758|     21|#define GC_FLAGS_MASK				0x000003f0
  |  |  ------------------
  |  |  126|     21|			((info) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     21|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  127|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (127:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
 1491|     21|	GC_G(num_roots)++;
  ------------------
  |  |  312|     21|#define GC_G(v) (gc_globals.v)
  ------------------
 1492|     21|}
zend_gc.c:gc_stack_free:
  388|    722|{
  389|    722|	gc_stack *p = stack->next;
  390|       |
  391|  1.38k|	while (p) {
  ------------------
  |  Branch (391:9): [True: 659, False: 722]
  ------------------
  392|    659|		stack = p->next;
  393|       |		efree(p);
  ------------------
  |  |  154|    659|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    659|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    659|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    659|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    659|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  394|    659|		p = stack;
  395|    659|	}
  396|    722|}
zend_gc.c:gc_remove_nested_data_from_buffer:
 1725|      2|{
 1726|      2|	HashTable *ht;
 1727|      2|	Bucket *p;
 1728|      2|	zval *zv;
 1729|      2|	uint32_t n;
 1730|      2|	int count = 0;
 1731|      2|	GC_STACK_DCL(stack);
  ------------------
  |  |  343|      2|	gc_stack *_stack = init; \
  |  |  344|      2|	size_t    _top = 0;
  ------------------
 1732|       |
 1733|      7|tail_call:
 1734|      7|	if (root) {
  ------------------
  |  Branch (1734:6): [True: 2, False: 5]
  ------------------
 1735|      2|		root = NULL;
 1736|      2|		count++;
 1737|      5|	} else if (GC_REF_ADDRESS(ref) != 0
  ------------------
  |  |  115|      5|	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |   89|      5|#define GC_ADDRESS  0x0fffffu
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      5|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
  |  Branch (1737:13): [True: 2, False: 3]
  ------------------
 1738|      2|	 && GC_REF_CHECK_COLOR(ref, GC_BLACK)) {
  ------------------
  |  |  121|      2|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      2|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      2|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1739|      1|		GC_TRACE_REF(ref, "removing from buffer");
 1740|      1|		GC_REMOVE_FROM_BUFFER(ref);
  ------------------
  |  |   76|      1|#define GC_REMOVE_FROM_BUFFER(p) do { \
  |  |   77|      1|		zend_refcounted *_p = (zend_refcounted*)(p); \
  |  |   78|      1|		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  759|      1|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |  |  Branch (78:7): [True: 1, False: 0]
  |  |  ------------------
  |  |   79|      1|			gc_remove_from_buffer(_p); \
  |  |   80|      1|		} \
  |  |   81|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (81:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1741|      1|		count++;
 1742|      4|	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  776|      4|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_REFERENCE) {
  ------------------
  |  |  616|      4|#define IS_REFERENCE				10
  ------------------
  |  Branch (1742:13): [True: 2, False: 2]
  ------------------
 1743|      2|		if (Z_COLLECTABLE(((zend_reference*)ref)->val)) {
  ------------------
  |  |  944|      2|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  ------------------
  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |  |  Branch (944:31): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1744|      2|			ref = Z_COUNTED(((zend_reference*)ref)->val);
  ------------------
  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  ------------------
 1745|      2|			goto tail_call;
 1746|      2|		}
 1747|      0|		goto next;
 1748|      2|	} else {
 1749|      2|		goto next;
 1750|      2|	}
 1751|       |
 1752|      3|	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  776|      3|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (GC_TYPE(ref) == IS_OBJECT) {
  ------------------
  |  |  614|      3|#define IS_OBJECT					8
  ------------------
  |  Branch (1752:6): [True: 2, False: 1]
  ------------------
 1753|      2|		zend_object *obj = (zend_object*)ref;
 1754|       |
 1755|      2|		if (EXPECTED(!(OBJ_FLAGS(ref) & IS_OBJ_FREE_CALLED))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1756|      2|			int len;
 1757|      2|			zval *table;
 1758|       |
 1759|      2|			if (UNEXPECTED(GC_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1760|      0|				zend_weakmap_get_object_entry_gc(obj, &table, &len);
 1761|      0|				n = len;
 1762|      0|				zv = table;
 1763|      0|				for (; n != 0; n--) {
  ------------------
  |  Branch (1763:12): [True: 0, False: 0]
  ------------------
 1764|      0|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_PTR);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1764:6): [True: 0, False: 0]
  |  Branch (1764:6): [True: 0, False: 0]
  ------------------
 1765|      0|					zval *entry = (zval*) Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1766|      0|					if (Z_OPT_COLLECTABLE_P(entry)) {
  ------------------
  |  |  958|      0|#define Z_OPT_COLLECTABLE_P(zval_p)	Z_OPT_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  957|      0|#define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_COLLECTABLE(zval)		((Z_TYPE_INFO(zval) & (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (957:34): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1767|      0|						ref = Z_COUNTED_P(entry);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1768|      0|						GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      0|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1769|      0|					}
 1770|      0|					zv++;
 1771|      0|				}
 1772|      0|			}
 1773|       |
 1774|      2|			ht = obj->handlers->get_gc(obj, &table, &len);
 1775|      2|			n = len;
 1776|      2|			zv = table;
 1777|      2|			if (UNEXPECTED(ht)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1778|      1|				for (; n != 0; n--) {
  ------------------
  |  Branch (1778:12): [True: 0, False: 1]
  ------------------
 1779|      0|					if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1780|      0|						ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1781|      0|						GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      0|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1782|      0|					}
 1783|      0|					zv++;
 1784|      0|				}
 1785|      1|				if (GC_REF_ADDRESS(ht) != 0 && GC_REF_CHECK_COLOR(ht, GC_BLACK)) {
  ------------------
  |  |  115|      1|	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |   89|      1|#define GC_ADDRESS  0x0fffffu
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	(((GC_TYPE_INFO(ref)) & (GC_ADDRESS << GC_INFO_SHIFT)) >> GC_INFO_SHIFT)
  |  |  ------------------
  |  |  |  |  761|      1|#define GC_INFO_SHIFT				10
  |  |  ------------------
  ------------------
              				if (GC_REF_ADDRESS(ht) != 0 && GC_REF_CHECK_COLOR(ht, GC_BLACK)) {
  ------------------
  |  |  121|      0|	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |   90|      0|#define GC_COLOR    0x300000u
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      0|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |               	((GC_TYPE_INFO(ref) & (GC_COLOR << GC_INFO_SHIFT)) == ((color) << GC_INFO_SHIFT))
  |  |  ------------------
  |  |  |  |  761|      0|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  |  Branch (121:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1785:9): [True: 0, False: 1]
  ------------------
 1786|      0|					GC_TRACE_REF(ht, "removing from buffer");
 1787|      0|					GC_REMOVE_FROM_BUFFER(ht);
  ------------------
  |  |   76|      0|#define GC_REMOVE_FROM_BUFFER(p) do { \
  |  |   77|      0|		zend_refcounted *_p = (zend_refcounted*)(p); \
  |  |   78|      0|		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  759|      0|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |  |  Branch (78:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   79|      0|			gc_remove_from_buffer(_p); \
  |  |   80|      0|		} \
  |  |   81|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (81:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1788|      0|				}
 1789|      1|				goto handle_ht;
 1790|      1|			}
 1791|       |
 1792|      2|handle_zvals:
 1793|      2|			for (; n != 0; n--) {
  ------------------
  |  Branch (1793:11): [True: 2, False: 0]
  ------------------
 1794|      2|				if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      2|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      2|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1795|      2|					ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1796|      2|					zv++;
 1797|      2|					while (--n) {
  ------------------
  |  Branch (1797:13): [True: 0, False: 2]
  ------------------
 1798|      0|						if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1799|      0|							zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1800|      0|							GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      0|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1801|      0|						}
 1802|      0|						zv++;
 1803|      0|					}
 1804|      2|					goto tail_call;
 1805|      2|				}
 1806|      0|				zv++;
 1807|      0|			}
 1808|      2|		}
 1809|      2|	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  776|      1|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_TYPE(ref) == IS_ARRAY) {
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (1809:13): [True: 1, False: 0]
  ------------------
 1810|      1|		ht = (zend_array*)ref;
 1811|       |
 1812|      2|handle_ht:
 1813|      2|		n = ht->nNumUsed;
 1814|      2|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1815|      1|			zv = ht->arPacked;
 1816|      1|			goto handle_zvals;
 1817|      1|		}
 1818|       |
 1819|      1|		p = ht->arData;
 1820|      1|		for (; n != 0; n--) {
  ------------------
  |  Branch (1820:10): [True: 1, False: 0]
  ------------------
 1821|      1|			zv = &p->val;
 1822|      1|			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|      1|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1822:8): [True: 1, False: 0]
  ------------------
 1823|      1|				zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      1|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      1|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1824|      1|			}
 1825|      1|			if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      1|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      1|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1826|      1|				ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1827|      1|				p++;
 1828|      1|				while (--n) {
  ------------------
  |  Branch (1828:12): [True: 0, False: 1]
  ------------------
 1829|      0|					zv = &p->val;
 1830|      0|					if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1830:10): [True: 0, False: 0]
  ------------------
 1831|      0|						zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1832|      0|					}
 1833|      0|					if (Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1834|      0|						zend_refcounted *ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1835|      0|						GC_STACK_PUSH(ref);
  ------------------
  |  |  347|      0|	gc_stack_push(&_stack, &_top, ref);
  ------------------
 1836|      0|					}
 1837|      0|					p++;
 1838|      0|				}
 1839|      1|				goto tail_call;
 1840|      1|			}
 1841|      0|			p++;
 1842|      0|		}
 1843|      1|	}
 1844|       |
 1845|      2|next:
 1846|      2|	ref = GC_STACK_POP();
  ------------------
  |  |  350|      2|	gc_stack_pop(&_stack, &_top)
  ------------------
 1847|      2|	if (ref) {
  ------------------
  |  Branch (1847:6): [True: 0, False: 2]
  ------------------
 1848|      0|		goto tail_call;
 1849|      0|	}
 1850|       |
 1851|      2|	return count;
 1852|      2|}
zend_gc.c:gc_call_destructors:
 1872|      2|{
 1873|      2|	gc_root_buffer *current;
 1874|      2|	zend_refcounted *p;
 1875|       |
 1876|       |	/* The root buffer might be reallocated during destructors calls,
 1877|       |	 * make sure to reload pointers as necessary. */
 1878|      6|	while (idx != end) {
  ------------------
  |  Branch (1878:9): [True: 4, False: 2]
  ------------------
 1879|      4|		current = GC_IDX2PTR(idx);
  ------------------
  |  |  172|      4|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|      4|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1880|      4|		if (GC_IS_DTOR_GARBAGE(current->ref)) {
  ------------------
  |  |  164|      4|	((((uintptr_t)(ptr)) & GC_BITS) == GC_DTOR_GARBAGE)
  |  |  ------------------
  |  |  |  |  147|      4|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_DTOR_GARBAGE)
  |  |  ------------------
  |  |  |  |  152|      4|#define GC_DTOR_GARBAGE 0x3 /* garbage on which only the dtor should be invoked */
  |  |  ------------------
  |  |  |  Branch (164:2): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 1881|      2|			p = GC_GET_PTR(current->ref);
  ------------------
  |  |  155|      2|	((void*)(((uintptr_t)(ptr)) & ~GC_BITS))
  |  |  ------------------
  |  |  |  |  147|      2|#define GC_BITS    0x3
  |  |  ------------------
  ------------------
 1882|       |			/* Mark this is as a normal root for the next GC run */
 1883|      2|			current->ref = p;
 1884|       |			/* Double check that the destructor hasn't been called yet. It
 1885|       |			 * could have already been invoked indirectly by some other
 1886|       |			 * destructor. */
 1887|      2|			if (!(OBJ_FLAGS(p) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  852|      2|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(OBJ_FLAGS(p) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  849|      2|#define IS_OBJ_DESTRUCTOR_CALLED	(1<<8)
  ------------------
  |  Branch (1887:8): [True: 2, False: 0]
  ------------------
 1888|      2|				if (fiber != NULL) {
  ------------------
  |  Branch (1888:9): [True: 0, False: 2]
  ------------------
 1889|      0|					GC_G(dtor_idx) = idx;
  ------------------
  |  |  312|      0|#define GC_G(v) (gc_globals.v)
  ------------------
 1890|      0|				}
 1891|      2|				zend_object *obj = (zend_object*)p;
 1892|      2|				GC_TRACE_REF(obj, "calling destructor");
 1893|      2|				GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1894|      2|				GC_ADDREF(obj);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1895|      2|				obj->handlers->dtor_obj(obj);
 1896|      2|				GC_TRACE_REF(obj, "returned from destructor");
 1897|      2|				GC_DELREF(obj);
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1898|      2|				if (UNEXPECTED(fiber != NULL && GC_G(dtor_fiber) != fiber)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1899|       |					/* We resumed after suspension */
 1900|      0|					gc_check_possible_root((zend_refcounted*)&obj->gc);
 1901|      0|					return FAILURE;
 1902|      0|				}
 1903|      2|			}
 1904|      2|		}
 1905|      4|		idx++;
 1906|      4|	}
 1907|       |
 1908|      2|	return SUCCESS;
 1909|      2|}
zend_gc.c:gc_link_unused:
  449|   133k|{
  450|   133k|	root->ref = GC_IDX2LIST(GC_G(unused));
  ------------------
  |  |  176|   133k|#define GC_IDX2LIST(idx)     ((void*)(uintptr_t)(((idx) * sizeof(void*)) | GC_UNUSED))
  |  |  ------------------
  |  |  |  |  150|   133k|#define GC_UNUSED  0x1 /* part of linked list of unused buffers */
  |  |  ------------------
  ------------------
  451|   133k|	GC_G(unused) = GC_PTR2IDX(root);
  ------------------
  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  ------------------
              	GC_G(unused) = GC_PTR2IDX(root);
  ------------------
  |  |  173|   133k|#define GC_PTR2IDX(ptr)      ((ptr) - GC_G(buf))
  |  |  ------------------
  |  |  |  |  312|   133k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
  452|   133k|}
zend_gc.c:gc_compact:
 1219|   100k|{
 1220|   100k|	if (GC_G(num_roots) + GC_FIRST_ROOT != GC_G(first_unused)) {
  ------------------
  |  |  312|   100k|#define GC_G(v) (gc_globals.v)
  ------------------
              	if (GC_G(num_roots) + GC_FIRST_ROOT != GC_G(first_unused)) {
  ------------------
  |  |  182|   100k|#define GC_FIRST_ROOT        1
  ------------------
              	if (GC_G(num_roots) + GC_FIRST_ROOT != GC_G(first_unused)) {
  ------------------
  |  |  312|   100k|#define GC_G(v) (gc_globals.v)
  ------------------
  |  Branch (1220:6): [True: 34.3k, False: 66.2k]
  ------------------
 1221|  34.3k|		if (GC_G(num_roots)) {
  ------------------
  |  |  312|  34.3k|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  |  |  |  Branch (312:17): [True: 128, False: 34.2k]
  |  |  ------------------
  ------------------
 1222|    128|			gc_root_buffer *free = GC_IDX2PTR(GC_FIRST_ROOT);
  ------------------
  |  |  172|    128|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    128|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1223|    128|			gc_root_buffer *scan = GC_IDX2PTR(GC_G(first_unused) - 1);
  ------------------
  |  |  172|    128|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    128|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1224|    128|			gc_root_buffer *end  = GC_IDX2PTR(GC_G(num_roots));
  ------------------
  |  |  172|    128|#define GC_IDX2PTR(idx)      (GC_G(buf) + (idx))
  |  |  ------------------
  |  |  |  |  312|    128|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1225|    128|			uint32_t idx;
 1226|    128|			zend_refcounted *p;
 1227|       |
 1228|    265|			while (free < scan) {
  ------------------
  |  Branch (1228:11): [True: 165, False: 100]
  ------------------
 1229|    242|				while (!GC_IS_UNUSED(free->ref)) {
  ------------------
  |  |  160|    242|	((((uintptr_t)(ptr)) & GC_BITS) == GC_UNUSED)
  |  |  ------------------
  |  |  |  |  147|    242|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_UNUSED)
  |  |  ------------------
  |  |  |  |  150|    242|#define GC_UNUSED  0x1 /* part of linked list of unused buffers */
  |  |  ------------------
  ------------------
  |  Branch (1229:12): [True: 77, False: 165]
  ------------------
 1230|     77|					free++;
 1231|     77|				}
 1232|    351|				while (GC_IS_UNUSED(scan->ref)) {
  ------------------
  |  |  160|    351|	((((uintptr_t)(ptr)) & GC_BITS) == GC_UNUSED)
  |  |  ------------------
  |  |  |  |  147|    351|#define GC_BITS    0x3
  |  |  ------------------
  |  |               	((((uintptr_t)(ptr)) & GC_BITS) == GC_UNUSED)
  |  |  ------------------
  |  |  |  |  150|    351|#define GC_UNUSED  0x1 /* part of linked list of unused buffers */
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 186, False: 165]
  |  |  ------------------
  ------------------
 1233|    186|					scan--;
 1234|    186|				}
 1235|    165|				if (scan > free) {
  ------------------
  |  Branch (1235:9): [True: 69, False: 96]
  ------------------
 1236|     69|					p = scan->ref;
 1237|     69|					free->ref = p;
 1238|     69|					p = GC_GET_PTR(p);
  ------------------
  |  |  155|     69|	((void*)(((uintptr_t)(ptr)) & ~GC_BITS))
  |  |  ------------------
  |  |  |  |  147|     69|#define GC_BITS    0x3
  |  |  ------------------
  ------------------
 1239|     69|					idx = gc_compress(GC_PTR2IDX(free));
  ------------------
  |  |  173|     69|#define GC_PTR2IDX(ptr)      ((ptr) - GC_G(buf))
  |  |  ------------------
  |  |  |  |  312|     69|#define GC_G(v) (gc_globals.v)
  |  |  ------------------
  ------------------
 1240|     69|					GC_REF_SET_INFO(p, idx | GC_REF_COLOR(p));
  ------------------
  |  |  123|     69|#define GC_REF_SET_INFO(ref, info) do { \
  |  |  124|     69|		GC_TYPE_INFO(ref) = \
  |  |  ------------------
  |  |  |  |  775|     69|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  125|     69|			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  775|     69|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  757|     69|#define GC_TYPE_MASK				0x0000000f
  |  |  ------------------
  |  |               			(GC_TYPE_INFO(ref) & (GC_TYPE_MASK | GC_FLAGS_MASK)) | \
  |  |  ------------------
  |  |  |  |  758|     69|#define GC_FLAGS_MASK				0x000003f0
  |  |  ------------------
  |  |  126|     69|			((info) << GC_INFO_SHIFT); \
  |  |  ------------------
  |  |  |  |  761|     69|#define GC_INFO_SHIFT				10
  |  |  ------------------
  |  |  127|     69|	} while (0)
  |  |  ------------------
  |  |  |  Branch (127:11): [Folded, False: 69]
  |  |  ------------------
  ------------------
 1241|     69|					free++;
 1242|     69|					scan--;
 1243|     69|					if (scan <= end) {
  ------------------
  |  Branch (1243:10): [True: 28, False: 41]
  ------------------
 1244|     28|						break;
 1245|     28|					}
 1246|     69|				}
 1247|    165|			}
 1248|    128|		}
 1249|  34.3k|		GC_G(unused) = GC_INVALID;
  ------------------
  |  |  312|  34.3k|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(unused) = GC_INVALID;
  ------------------
  |  |  181|  34.3k|#define GC_INVALID           0
  ------------------
 1250|  34.3k|		GC_G(first_unused) = GC_G(num_roots) + GC_FIRST_ROOT;
  ------------------
  |  |  312|  34.3k|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(first_unused) = GC_G(num_roots) + GC_FIRST_ROOT;
  ------------------
  |  |  312|  34.3k|#define GC_G(v) (gc_globals.v)
  ------------------
              		GC_G(first_unused) = GC_G(num_roots) + GC_FIRST_ROOT;
  ------------------
  |  |  182|  34.3k|#define GC_FIRST_ROOT        1
  ------------------
 1251|  34.3k|	}
 1252|   100k|}
zend_gc.c:zend_get_gc_buffer_release:
 2227|  99.8k|static void zend_get_gc_buffer_release(void) {
 2228|  99.8k|	zend_get_gc_buffer *gc_buffer = &EG(get_gc_buffer);
  ------------------
  |  |   45|  99.8k|# define EG(v) (executor_globals.v)
  ------------------
 2229|  99.8k|	efree(gc_buffer->start);
  ------------------
  |  |  154|  99.8k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  99.8k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  99.8k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  99.8k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  99.8k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2230|       |	gc_buffer->start = gc_buffer->end = gc_buffer->cur = NULL;
 2231|  99.8k|}
zend_gc.c:zend_gc_check_root_tmpvars:
 2237|  99.8k|static void zend_gc_check_root_tmpvars(void) {
 2238|  99.8k|	zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|  99.8k|# define EG(v) (executor_globals.v)
  ------------------
 2239|  99.9k|	for (; ex; ex = ex->prev_execute_data) {
  ------------------
  |  Branch (2239:9): [True: 63, False: 99.8k]
  ------------------
 2240|     63|		zend_function *func = ex->func;
 2241|     63|		if (!func || !ZEND_USER_CODE(func->type)) {
  ------------------
  |  | 1081|     63|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (2241:7): [True: 0, False: 63]
  |  Branch (2241:16): [True: 31, False: 32]
  ------------------
 2242|     31|			continue;
 2243|     31|		}
 2244|       |
 2245|     32|		uint32_t op_num = ex->opline - ex->func->op_array.opcodes;
 2246|     67|		for (uint32_t i = 0; i < func->op_array.last_live_range; i++) {
  ------------------
  |  Branch (2246:24): [True: 38, False: 29]
  ------------------
 2247|     38|			const zend_live_range *range = &func->op_array.live_range[i];
 2248|     38|			if (range->start > op_num) {
  ------------------
  |  Branch (2248:8): [True: 3, False: 35]
  ------------------
 2249|      3|				break;
 2250|      3|			}
 2251|     35|			if (range->end <= op_num) {
  ------------------
  |  Branch (2251:8): [True: 32, False: 3]
  ------------------
 2252|     32|				continue;
 2253|     32|			}
 2254|       |
 2255|      3|			uint32_t kind = range->var & ZEND_LIVE_MASK;
  ------------------
  |  |  184|      3|#define ZEND_LIVE_MASK    7
  ------------------
 2256|      3|			if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  179|      6|#define ZEND_LIVE_TMPVAR  0
  ------------------
              			if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  180|      1|#define ZEND_LIVE_LOOP    1
  ------------------
  |  Branch (2256:8): [True: 2, False: 1]
  |  Branch (2256:36): [True: 1, False: 0]
  ------------------
 2257|      3|				uint32_t var_num = range->var & ~ZEND_LIVE_MASK;
  ------------------
  |  |  184|      3|#define ZEND_LIVE_MASK    7
  ------------------
 2258|      3|				zval *var = ZEND_CALL_VAR(ex, var_num);
  ------------------
  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
 2259|      3|				if (Z_COLLECTABLE_P(var)) {
  ------------------
  |  |  945|      3|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      3|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2260|      2|					gc_check_possible_root(Z_COUNTED_P(var));
  ------------------
  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 2261|      2|				}
 2262|      3|			}
 2263|      3|		}
 2264|     32|	}
 2265|  99.8k|}
zend_gc.c:zend_gc_remove_root_tmpvars:
 2267|    721|static void zend_gc_remove_root_tmpvars(void) {
 2268|    721|	zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|    721|# define EG(v) (executor_globals.v)
  ------------------
 2269|    770|	for (; ex; ex = ex->prev_execute_data) {
  ------------------
  |  Branch (2269:9): [True: 49, False: 721]
  ------------------
 2270|     49|		zend_function *func = ex->func;
 2271|     49|		if (!func || !ZEND_USER_CODE(func->type)) {
  ------------------
  |  | 1081|     49|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (2271:7): [True: 0, False: 49]
  |  Branch (2271:16): [True: 24, False: 25]
  ------------------
 2272|     24|			continue;
 2273|     24|		}
 2274|       |
 2275|     25|		uint32_t op_num = ex->opline - ex->func->op_array.opcodes;
 2276|     57|		for (uint32_t i = 0; i < func->op_array.last_live_range; i++) {
  ------------------
  |  Branch (2276:24): [True: 32, False: 25]
  ------------------
 2277|     32|			const zend_live_range *range = &func->op_array.live_range[i];
 2278|     32|			if (range->start > op_num) {
  ------------------
  |  Branch (2278:8): [True: 0, False: 32]
  ------------------
 2279|      0|				break;
 2280|      0|			}
 2281|     32|			if (range->end <= op_num) {
  ------------------
  |  Branch (2281:8): [True: 29, False: 3]
  ------------------
 2282|     29|				continue;
 2283|     29|			}
 2284|       |
 2285|      3|			uint32_t kind = range->var & ZEND_LIVE_MASK;
  ------------------
  |  |  184|      3|#define ZEND_LIVE_MASK    7
  ------------------
 2286|      3|			if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  179|      6|#define ZEND_LIVE_TMPVAR  0
  ------------------
              			if (kind == ZEND_LIVE_TMPVAR || kind == ZEND_LIVE_LOOP) {
  ------------------
  |  |  180|      1|#define ZEND_LIVE_LOOP    1
  ------------------
  |  Branch (2286:8): [True: 2, False: 1]
  |  Branch (2286:36): [True: 1, False: 0]
  ------------------
 2287|      3|				uint32_t var_num = range->var & ~ZEND_LIVE_MASK;
  ------------------
  |  |  184|      3|#define ZEND_LIVE_MASK    7
  ------------------
 2288|      3|				zval *var = ZEND_CALL_VAR(ex, var_num);
  ------------------
  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
 2289|      3|				if (Z_COLLECTABLE_P(var)) {
  ------------------
  |  |  945|      3|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      3|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (944:31): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2290|      2|					GC_REMOVE_FROM_BUFFER(Z_COUNTED_P(var));
  ------------------
  |  |   76|      2|#define GC_REMOVE_FROM_BUFFER(p) do { \
  |  |   77|      2|		zend_refcounted *_p = (zend_refcounted*)(p); \
  |  |   78|      2|		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  759|      2|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |  |  Branch (78:7): [True: 1, False: 1]
  |  |  ------------------
  |  |   79|      1|			gc_remove_from_buffer(_p); \
  |  |   80|      1|		} \
  |  |   81|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (81:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2291|      2|				}
 2292|      3|			}
 2293|      3|		}
 2294|     25|	}
 2295|    721|}

spl_iterators.c:zend_get_gc_buffer_add_zval:
  124|     42|		zend_get_gc_buffer *gc_buffer, zval *zv) {
  125|     42|	if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|     42|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     42|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     42|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 14, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|     14|		if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  ------------------
  ------------------
  127|      0|			zend_get_gc_buffer_grow(gc_buffer);
  128|      0|		}
  129|     14|		ZVAL_COPY_VALUE(gc_buffer->cur, zv);
  ------------------
  |  | 1416|     14|	do {												\
  |  | 1417|     14|		zval *_z1 = (z);								\
  |  | 1418|     14|		const zval *_z2 = (v);							\
  |  | 1419|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  130|     14|		gc_buffer->cur++;
  131|     14|	}
  132|     42|}
spl_iterators.c:zend_get_gc_buffer_add_obj:
  135|     14|		zend_get_gc_buffer *gc_buffer, zend_object *obj) {
  136|     14|	ZEND_ASSERT(obj != NULL);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (136:2): [True: 0, False: 14]
  |  Branch (136:2): [True: 14, False: 0]
  ------------------
  137|       |
  138|     14|	if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 7]
  |  |  ------------------
  ------------------
  139|      7|		zend_get_gc_buffer_grow(gc_buffer);
  140|      7|	}
  141|     14|	ZVAL_OBJ(gc_buffer->cur, obj);
  ------------------
  |  | 1140|     14|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     14|		zval *__z = (z);						\
  |  | 1142|     14|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     14|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     14|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     14|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     14|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     14|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     14|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     14|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  142|     14|	gc_buffer->cur++;
  143|     14|}
spl_iterators.c:zend_get_gc_buffer_use:
  167|     14|		zend_get_gc_buffer *gc_buffer, zval **table, int *n) {
  168|     14|	*table = gc_buffer->start;
  169|     14|	*n = gc_buffer->cur - gc_buffer->start;
  170|     14|}
var_unserializer.c:gc_check_possible_root:
   88|      1|{
   89|      1|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   90|      0|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|      0|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 0, False: 0]
  ------------------
   93|      0|			return;
   94|      0|		}
   95|      0|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      0|	}
   97|      1|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   98|      0|		gc_possible_root(ref);
   99|      0|	}
  100|      1|}
var.c:gc_check_possible_root_no_ref:
  103|    282|{
  104|    282|	ZEND_ASSERT(GC_TYPE_INFO(ref) != GC_REFERENCE);
  ------------------
  |  |  112|    282|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (104:2): [True: 0, False: 282]
  |  Branch (104:2): [True: 282, False: 0]
  ------------------
  105|    282|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|    282|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 257, False: 25]
  |  |  ------------------
  ------------------
  106|    257|		gc_possible_root(ref);
  107|    257|	}
  108|    282|}
var.c:gc_check_possible_root:
   88|      6|{
   89|      6|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
   90|      0|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|      0|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 0, False: 0]
  ------------------
   93|      0|			return;
   94|      0|		}
   95|      0|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      0|	}
   97|      6|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
   98|      5|		gc_possible_root(ref);
   99|      5|	}
  100|      6|}
zend_execute_API.c:gc_check_possible_root:
   88|    129|{
   89|    129|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|    129|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 16, False: 113]
  |  |  ------------------
  ------------------
   90|     16|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|     16|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     16|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     16|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     16|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     16|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 7, False: 9]
  ------------------
   93|      7|			return;
   94|      7|		}
   95|      9|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      9|	}
   97|    122|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|    122|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 106]
  |  |  ------------------
  ------------------
   98|     16|		gc_possible_root(ref);
   99|     16|	}
  100|    122|}
zend_execute.c:gc_check_possible_root_no_ref:
  103|  7.27k|{
  104|  7.27k|	ZEND_ASSERT(GC_TYPE_INFO(ref) != GC_REFERENCE);
  ------------------
  |  |  112|  7.27k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (104:2): [True: 0, False: 7.27k]
  |  Branch (104:2): [True: 7.27k, False: 0]
  ------------------
  105|  7.27k|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|  7.27k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 36, False: 7.24k]
  |  |  ------------------
  ------------------
  106|     36|		gc_possible_root(ref);
  107|     36|	}
  108|  7.27k|}
zend_execute.c:gc_check_possible_root:
   88|  3.81k|{
   89|  3.81k|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|  3.81k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.63k, False: 2.17k]
  |  |  ------------------
  ------------------
   90|  1.63k|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|  1.63k|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|  1.63k|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|  1.63k|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  1.63k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  1.63k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 1.00k, False: 628]
  ------------------
   93|  1.00k|			return;
   94|  1.00k|		}
   95|    628|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    628|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    628|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|    628|	}
   97|  2.80k|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|  2.80k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 202, False: 2.60k]
  |  |  ------------------
  ------------------
   98|    202|		gc_possible_root(ref);
   99|    202|	}
  100|  2.80k|}
zend_execute.c:zend_get_gc_buffer_add_zval:
  124|     20|		zend_get_gc_buffer *gc_buffer, zval *zv) {
  125|     20|	if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|     20|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     20|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     20|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 6, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      6|		if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
  127|      2|			zend_get_gc_buffer_grow(gc_buffer);
  128|      2|		}
  129|      6|		ZVAL_COPY_VALUE(gc_buffer->cur, zv);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  130|      6|		gc_buffer->cur++;
  131|      6|	}
  132|     20|}
zend_execute.c:zend_get_gc_buffer_add_obj:
  135|    554|		zend_get_gc_buffer *gc_buffer, zend_object *obj) {
  136|    554|	ZEND_ASSERT(obj != NULL);
  ------------------
  |  |  112|    554|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (136:2): [True: 0, False: 554]
  |  Branch (136:2): [True: 554, False: 0]
  ------------------
  137|       |
  138|    554|	if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|    554|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 553]
  |  |  ------------------
  ------------------
  139|      1|		zend_get_gc_buffer_grow(gc_buffer);
  140|      1|	}
  141|    554|	ZVAL_OBJ(gc_buffer->cur, obj);
  ------------------
  |  | 1140|    554|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|    554|		zval *__z = (z);						\
  |  | 1142|    554|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|    554|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    554|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|    554|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|    554|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    554|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|    554|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    554|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    554|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    554|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    554|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    554|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|    554|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 554]
  |  |  ------------------
  ------------------
  142|    554|	gc_buffer->cur++;
  143|    554|}
zend_fibers.c:zend_get_gc_buffer_add_zval:
  124|  1.20k|		zend_get_gc_buffer *gc_buffer, zval *zv) {
  125|  1.20k|	if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|  1.20k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  1.20k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  1.20k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 578, False: 622]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|    578|		if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|    578|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 23, False: 555]
  |  |  ------------------
  ------------------
  127|     23|			zend_get_gc_buffer_grow(gc_buffer);
  128|     23|		}
  129|    578|		ZVAL_COPY_VALUE(gc_buffer->cur, zv);
  ------------------
  |  | 1416|    578|	do {												\
  |  | 1417|    578|		zval *_z1 = (z);								\
  |  | 1418|    578|		const zval *_z2 = (v);							\
  |  | 1419|    578|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    578|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    578|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    578|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    578|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    578|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    578|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    578|	do {												\
  |  |  |  | 1408|    578|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    578|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    578|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    578|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    578|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    578|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    578|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 578]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    578|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 578]
  |  |  ------------------
  ------------------
  130|    578|		gc_buffer->cur++;
  131|    578|	}
  132|  1.20k|}
zend_fibers.c:zend_get_gc_buffer_use:
  167|    596|		zend_get_gc_buffer *gc_buffer, zval **table, int *n) {
  168|    596|	*table = gc_buffer->start;
  169|    596|	*n = gc_buffer->cur - gc_buffer->start;
  170|    596|}
zend_gc.c:gc_check_possible_root:
   88|      2|{
   89|      2|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
   90|      1|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|      1|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      1|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      1|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 0, False: 1]
  ------------------
   93|      0|			return;
   94|      0|		}
   95|      1|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      1|	}
   97|      2|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   98|      2|		gc_possible_root(ref);
   99|      2|	}
  100|      2|}
zend_generators.c:zend_get_gc_buffer_add_zval:
  124|    180|		zend_get_gc_buffer *gc_buffer, zval *zv) {
  125|    180|	if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|    180|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|    180|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    180|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 8, False: 172]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      8|		if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 4]
  |  |  ------------------
  ------------------
  127|      4|			zend_get_gc_buffer_grow(gc_buffer);
  128|      4|		}
  129|      8|		ZVAL_COPY_VALUE(gc_buffer->cur, zv);
  ------------------
  |  | 1416|      8|	do {												\
  |  | 1417|      8|		zval *_z1 = (z);								\
  |  | 1418|      8|		const zval *_z2 = (v);							\
  |  | 1419|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      8|	do {												\
  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  130|      8|		gc_buffer->cur++;
  131|      8|	}
  132|    180|}
zend_generators.c:zend_get_gc_buffer_add_obj:
  135|     14|		zend_get_gc_buffer *gc_buffer, zend_object *obj) {
  136|     14|	ZEND_ASSERT(obj != NULL);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (136:2): [True: 0, False: 14]
  |  Branch (136:2): [True: 14, False: 0]
  ------------------
  137|       |
  138|     14|	if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 10]
  |  |  ------------------
  ------------------
  139|      4|		zend_get_gc_buffer_grow(gc_buffer);
  140|      4|	}
  141|     14|	ZVAL_OBJ(gc_buffer->cur, obj);
  ------------------
  |  | 1140|     14|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     14|		zval *__z = (z);						\
  |  | 1142|     14|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     14|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     14|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     14|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     14|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     14|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     14|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     14|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  142|     14|	gc_buffer->cur++;
  143|     14|}
zend_generators.c:zend_get_gc_buffer_use:
  167|     48|		zend_get_gc_buffer *gc_buffer, zval **table, int *n) {
  168|     48|	*table = gc_buffer->start;
  169|     48|	*n = gc_buffer->cur - gc_buffer->start;
  170|     48|}
zend_hash.c:gc_check_possible_root:
   88|  24.3k|{
   89|  24.3k|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|  24.3k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 461, False: 23.9k]
  |  |  ------------------
  ------------------
   90|    461|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|    461|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    461|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    461|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    461|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    461|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 166, False: 295]
  ------------------
   93|    166|			return;
   94|    166|		}
   95|    295|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|    295|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    295|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|    295|	}
   97|  24.2k|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|  24.2k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 549, False: 23.6k]
  |  |  ------------------
  ------------------
   98|    549|		gc_possible_root(ref);
   99|    549|	}
  100|  24.2k|}
zend_lazy_objects.c:gc_check_possible_root:
   88|      4|{
   89|      4|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
   90|      0|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|      0|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 0, False: 0]
  ------------------
   93|      0|			return;
   94|      0|		}
   95|      0|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      0|	}
   97|      4|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
   98|      0|		gc_possible_root(ref);
   99|      0|	}
  100|      4|}
zend_lazy_objects.c:zend_get_gc_buffer_add_obj:
  135|      4|		zend_get_gc_buffer *gc_buffer, zend_object *obj) {
  136|      4|	ZEND_ASSERT(obj != NULL);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (136:2): [True: 0, False: 4]
  |  Branch (136:2): [True: 4, False: 0]
  ------------------
  137|       |
  138|      4|	if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  139|      2|		zend_get_gc_buffer_grow(gc_buffer);
  140|      2|	}
  141|      4|	ZVAL_OBJ(gc_buffer->cur, obj);
  ------------------
  |  | 1140|      4|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      4|		zval *__z = (z);						\
  |  | 1142|      4|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      4|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      4|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  142|      4|	gc_buffer->cur++;
  143|      4|}
zend_lazy_objects.c:zend_get_gc_buffer_use:
  167|      4|		zend_get_gc_buffer *gc_buffer, zval **table, int *n) {
  168|      4|	*table = gc_buffer->start;
  169|      4|	*n = gc_buffer->cur - gc_buffer->start;
  170|      4|}
zend_lazy_objects.c:zend_get_gc_buffer_add_zval:
  124|      8|		zend_get_gc_buffer *gc_buffer, zval *zv) {
  125|      8|	if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 4, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      4|		if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  127|      0|			zend_get_gc_buffer_grow(gc_buffer);
  128|      0|		}
  129|      4|		ZVAL_COPY_VALUE(gc_buffer->cur, zv);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  130|      4|		gc_buffer->cur++;
  131|      4|	}
  132|      8|}
zend_object_handlers.c:gc_check_possible_root_no_ref:
  103|    675|{
  104|    675|	ZEND_ASSERT(GC_TYPE_INFO(ref) != GC_REFERENCE);
  ------------------
  |  |  112|    675|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (104:2): [True: 0, False: 675]
  |  Branch (104:2): [True: 675, False: 0]
  ------------------
  105|    675|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|    675|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 675]
  |  |  ------------------
  ------------------
  106|      0|		gc_possible_root(ref);
  107|      0|	}
  108|    675|}
zend_objects.c:gc_check_possible_root:
   88|  10.5k|{
   89|  10.5k|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|  10.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 10.5k]
  |  |  ------------------
  ------------------
   90|     13|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|     13|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|     13|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|     13|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     13|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     13|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 11, False: 2]
  ------------------
   93|     11|			return;
   94|     11|		}
   95|      2|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      2|	}
   97|  10.5k|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|  10.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 10.5k]
  |  |  ------------------
  ------------------
   98|      7|		gc_possible_root(ref);
   99|      7|	}
  100|  10.5k|}
zend_opcode.c:gc_check_possible_root:
   88|      5|{
   89|      5|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
   90|      0|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|      0|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 0, False: 0]
  ------------------
   93|      0|			return;
   94|      0|		}
   95|      0|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      0|	}
   97|      5|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
   98|      1|		gc_possible_root(ref);
   99|      1|	}
  100|      5|}
zend_operators.c:gc_check_possible_root:
   88|  2.26k|{
   89|  2.26k|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|  2.26k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2.26k]
  |  |  ------------------
  ------------------
   90|      0|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|      0|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|      0|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|      0|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 0, False: 0]
  ------------------
   93|      0|			return;
   94|      0|		}
   95|      0|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|      0|	}
   97|  2.26k|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|  2.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2.25k]
  |  |  ------------------
  ------------------
   98|      2|		gc_possible_root(ref);
   99|      2|	}
  100|  2.26k|}
zend_operators.c:gc_check_possible_root_no_ref:
  103|     15|{
  104|     15|	ZEND_ASSERT(GC_TYPE_INFO(ref) != GC_REFERENCE);
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (104:2): [True: 0, False: 15]
  |  Branch (104:2): [True: 15, False: 0]
  ------------------
  105|     15|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 13, False: 2]
  |  |  ------------------
  ------------------
  106|     13|		gc_possible_root(ref);
  107|     13|	}
  108|     15|}
zend_variables.c:gc_check_possible_root:
   88|   140k|{
   89|   140k|	if (EXPECTED(GC_TYPE_INFO(ref) == GC_REFERENCE)) {
  ------------------
  |  |  456|   140k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 531, False: 140k]
  |  |  ------------------
  ------------------
   90|    531|		zval *zv = &((zend_reference*)ref)->val;
   91|       |
   92|    531|		if (!Z_COLLECTABLE_P(zv)) {
  ------------------
  |  |  945|    531|#define Z_COLLECTABLE_P(zval_p)		Z_COLLECTABLE(*(zval_p))
  |  |  ------------------
  |  |  |  |  944|    531|#define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    531|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |               #define Z_COLLECTABLE(zval)			((Z_TYPE_FLAGS(zval) & IS_TYPE_COLLECTABLE) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    531|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:7): [True: 482, False: 49]
  ------------------
   93|    482|			return;
   94|    482|		}
   95|     49|		ref = Z_COUNTED_P(zv);
  ------------------
  |  |  708|     49|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     49|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   96|     49|	}
   97|   140k|	if (UNEXPECTED(GC_MAY_LEAK(ref))) {
  ------------------
  |  |  457|   140k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 134k, False: 5.28k]
  |  |  ------------------
  ------------------
   98|   134k|		gc_possible_root(ref);
   99|   134k|	}
  100|   140k|}
zend_weakrefs.c:zend_get_gc_buffer_add_zval:
  124|      4|		zend_get_gc_buffer *gc_buffer, zval *zv) {
  125|      4|	if (Z_REFCOUNTED_P(zv)) {
  ------------------
  |  |  942|      4|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      4|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      4|		if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  127|      0|			zend_get_gc_buffer_grow(gc_buffer);
  128|      0|		}
  129|      4|		ZVAL_COPY_VALUE(gc_buffer->cur, zv);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  130|      4|		gc_buffer->cur++;
  131|      4|	}
  132|      4|}
zend_weakrefs.c:zend_get_gc_buffer_use:
  167|     39|		zend_get_gc_buffer *gc_buffer, zval **table, int *n) {
  168|     39|	*table = gc_buffer->start;
  169|     39|	*n = gc_buffer->cur - gc_buffer->start;
  170|     39|}
zend_weakrefs.c:zend_get_gc_buffer_add_obj:
  135|     19|		zend_get_gc_buffer *gc_buffer, zend_object *obj) {
  136|     19|	ZEND_ASSERT(obj != NULL);
  ------------------
  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (136:2): [True: 0, False: 19]
  |  Branch (136:2): [True: 19, False: 0]
  ------------------
  137|       |
  138|     19|	if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  139|      0|		zend_get_gc_buffer_grow(gc_buffer);
  140|      0|	}
  141|     19|	ZVAL_OBJ(gc_buffer->cur, obj);
  ------------------
  |  | 1140|     19|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     19|		zval *__z = (z);						\
  |  | 1142|     19|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     19|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     19|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     19|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     19|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     19|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     19|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     19|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     19|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     19|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
  142|     19|	gc_buffer->cur++;
  143|     19|}
zend_weakrefs.c:zend_get_gc_buffer_add_ptr:
  158|     43|		zend_get_gc_buffer *gc_buffer, void *ptr) {
  159|     43|	if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
  ------------------
  |  |  457|     43|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 37]
  |  |  ------------------
  ------------------
  160|      6|		zend_get_gc_buffer_grow(gc_buffer);
  161|      6|	}
  162|     43|	ZVAL_PTR(gc_buffer->cur, ptr);
  ------------------
  |  | 1251|     43|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     43|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     43|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     43|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     43|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     43|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
  163|     43|	gc_buffer->cur++;
  164|     43|}

zend_generator_restore_call_stack:
   37|      8|{
   38|      8|	zend_execute_data *call, *new_call, *prev_call = NULL;
   39|       |
   40|      8|	call = generator->frozen_call_stack;
   41|     11|	do {
   42|     11|		new_call = zend_vm_stack_push_call_frame(
   43|     11|			(ZEND_CALL_INFO(call) & ~ZEND_CALL_ALLOCATED),
  ------------------
  |  |  687|     11|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			(ZEND_CALL_INFO(call) & ~ZEND_CALL_ALLOCATED),
  ------------------
  |  |  664|     11|#define ZEND_CALL_ALLOCATED          (1 << 18)
  ------------------
   44|     11|			call->func,
   45|     11|			ZEND_CALL_NUM_ARGS(call),
  ------------------
  |  |  712|     11|	(call)->This.u2.num_args
  ------------------
   46|     11|			Z_PTR(call->This));
  ------------------
  |  | 1052|     11|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
   47|     11|		memcpy(((zval*)new_call) + ZEND_CALL_FRAME_SLOT, ((zval*)call) + ZEND_CALL_FRAME_SLOT, ZEND_CALL_NUM_ARGS(call) * sizeof(zval));
  ------------------
  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              		memcpy(((zval*)new_call) + ZEND_CALL_FRAME_SLOT, ((zval*)call) + ZEND_CALL_FRAME_SLOT, ZEND_CALL_NUM_ARGS(call) * sizeof(zval));
  ------------------
  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              		memcpy(((zval*)new_call) + ZEND_CALL_FRAME_SLOT, ((zval*)call) + ZEND_CALL_FRAME_SLOT, ZEND_CALL_NUM_ARGS(call) * sizeof(zval));
  ------------------
  |  |  712|     11|	(call)->This.u2.num_args
  ------------------
   48|     11|		new_call->extra_named_params = call->extra_named_params;
   49|     11|		new_call->prev_execute_data = prev_call;
   50|     11|		prev_call = new_call;
   51|       |
   52|     11|		call = call->prev_execute_data;
   53|     11|	} while (call);
  ------------------
  |  Branch (53:11): [True: 3, False: 8]
  ------------------
   54|      8|	generator->execute_data->call = prev_call;
   55|      8|	efree(generator->frozen_call_stack);
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   56|       |	generator->frozen_call_stack = NULL;
   57|      8|}
zend_generator_freeze_call_stack:
   61|      8|{
   62|      8|	size_t used_stack;
   63|      8|	zend_execute_data *call, *new_call, *prev_call = NULL;
   64|      8|	zval *stack;
   65|       |
   66|       |	/* calculate required stack size */
   67|      8|	used_stack = 0;
   68|      8|	call = EX(call);
  ------------------
  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  ------------------
   69|     11|	do {
   70|     11|		used_stack += ZEND_CALL_FRAME_SLOT + ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              		used_stack += ZEND_CALL_FRAME_SLOT + ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|     11|	(call)->This.u2.num_args
  ------------------
   71|     11|		call = call->prev_execute_data;
   72|     11|	} while (call);
  ------------------
  |  Branch (72:11): [True: 3, False: 8]
  ------------------
   73|       |
   74|      8|	stack = emalloc(used_stack * sizeof(zval));
  ------------------
  |  |  150|      8|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|       |
   76|       |	/* save stack, linking frames in reverse order */
   77|      8|	call = EX(call);
  ------------------
  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  ------------------
   78|     11|	do {
   79|     11|		size_t frame_size = ZEND_CALL_FRAME_SLOT + ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              		size_t frame_size = ZEND_CALL_FRAME_SLOT + ZEND_CALL_NUM_ARGS(call);
  ------------------
  |  |  712|     11|	(call)->This.u2.num_args
  ------------------
   80|       |
   81|     11|		new_call = (zend_execute_data*)(stack + used_stack - frame_size);
   82|     11|		memcpy(new_call, call, frame_size * sizeof(zval));
   83|     11|		used_stack -= frame_size;
   84|     11|		new_call->prev_execute_data = prev_call;
   85|     11|		prev_call = new_call;
   86|       |
   87|     11|		new_call = call->prev_execute_data;
   88|     11|		zend_vm_stack_free_call_frame(call);
   89|     11|		call = new_call;
   90|     11|	} while (call);
  ------------------
  |  Branch (90:11): [True: 3, False: 8]
  ------------------
   91|       |
   92|      8|	execute_data->call = NULL;
   93|      8|	ZEND_ASSERT(prev_call == (zend_execute_data*)stack);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (93:2): [True: 0, False: 8]
  |  Branch (93:2): [True: 8, False: 0]
  ------------------
   94|       |
   95|      8|	return prev_call;
   96|      8|}
zend_generator_close:
  134|    278|{
  135|    278|	if (EXPECTED(generator->execute_data)) {
  ------------------
  |  |  456|    278|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 99, False: 179]
  |  |  ------------------
  ------------------
  136|     99|		zend_execute_data *execute_data = generator->execute_data;
  137|       |		/* Null out execute_data early, to prevent double frees if GC runs while we're
  138|       |		 * already cleaning up execute_data. */
  139|     99|		generator->execute_data = NULL;
  140|       |
  141|     99|		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  732|     99|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|     99|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  666|     99|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (141:7): [True: 0, False: 99]
  ------------------
  142|      0|			zend_clean_and_cache_symbol_table(execute_data->symbol_table);
  143|      0|		}
  144|       |		/* always free the CV's, in the symtable are only not-free'd IS_INDIRECT's */
  145|     99|		zend_free_compiled_variables(execute_data);
  146|     99|		if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  732|     99|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|     99|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|     99|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (146:7): [True: 0, False: 99]
  ------------------
  147|      0|			zend_free_extra_named_params(execute_data->extra_named_params);
  148|      0|		}
  149|       |
  150|     99|		if (EX_CALL_INFO() & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  732|     99|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|     99|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (EX_CALL_INFO() & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|     99|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (150:7): [True: 3, False: 96]
  ------------------
  151|      3|			OBJ_RELEASE(Z_OBJ(execute_data->This));
  ------------------
  |  |   44|      3|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  152|      3|		}
  153|       |
  154|       |		/* A fatal error / die occurred during the generator execution.
  155|       |		 * Trying to clean up the stack may not be safe in this case. */
  156|     99|		if (UNEXPECTED(CG(unclean_shutdown))) {
  ------------------
  |  |  457|     99|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 98]
  |  |  ------------------
  ------------------
  157|      1|			generator->execute_data = NULL;
  158|      1|			return;
  159|      1|		}
  160|       |
  161|     98|		zend_vm_stack_free_extra_args(execute_data);
  162|       |
  163|       |		/* Some cleanups are only necessary if the generator was closed
  164|       |		 * before it could finish execution (reach a return statement). */
  165|     98|		if (UNEXPECTED(!finished_execution)) {
  ------------------
  |  |  457|     98|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 40, False: 58]
  |  |  ------------------
  ------------------
  166|     40|			zend_generator_cleanup_unfinished_execution(generator, execute_data, 0);
  167|     40|		}
  168|       |
  169|       |		efree(execute_data);
  ------------------
  |  |  154|     98|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     98|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     98|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     98|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     98|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|     98|	}
  171|    278|}
zend_generator_frame_gc:
  398|     36|{
  399|     36|	zend_execute_data *execute_data = generator->execute_data;
  400|     36|	zend_execute_data *call = NULL;
  401|       |
  402|     36|	zend_get_gc_buffer_add_zval(gc_buffer, &generator->value);
  403|     36|	zend_get_gc_buffer_add_zval(gc_buffer, &generator->key);
  404|     36|	zend_get_gc_buffer_add_zval(gc_buffer, &generator->retval);
  405|     36|	zend_get_gc_buffer_add_zval(gc_buffer, &generator->values);
  406|       |
  407|     36|	if (UNEXPECTED(generator->frozen_call_stack)) {
  ------------------
  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 32]
  |  |  ------------------
  ------------------
  408|       |		/* The frozen stack is linked in reverse order */
  409|      4|		call = zend_generator_revert_call_stack(generator->frozen_call_stack);
  410|      4|	}
  411|       |
  412|     36|	HashTable *ht = zend_unfinished_execution_gc_ex(execute_data, call, gc_buffer, true);
  413|       |
  414|     36|	if (UNEXPECTED(generator->frozen_call_stack)) {
  ------------------
  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 32]
  |  |  ------------------
  ------------------
  415|      4|		zend_generator_revert_call_stack(call);
  416|      4|	}
  417|       |
  418|     36|	if (generator->node.parent) {
  ------------------
  |  Branch (418:6): [True: 2, False: 34]
  ------------------
  419|      2|		zend_get_gc_buffer_add_obj(gc_buffer, &generator->node.parent->std);
  420|      2|	}
  421|       |
  422|     36|	return ht;
  423|     36|}
zend_generator_check_placeholder_frame:
  495|     13|{
  496|     13|	if (!ptr->func && Z_TYPE(ptr->This) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (!ptr->func && Z_TYPE(ptr->This) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (496:6): [True: 0, False: 13]
  |  Branch (496:20): [True: 0, False: 0]
  ------------------
  497|      0|		if (Z_OBJCE(ptr->This) == zend_ce_generator) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (497:7): [True: 0, False: 0]
  ------------------
  498|      0|			zend_generator *generator = (zend_generator *) Z_OBJ(ptr->This);
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  499|      0|			zend_execute_data *prev = ptr->prev_execute_data;
  500|      0|			ZEND_ASSERT(generator->node.parent && "Placeholder only used with delegation");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (500:4): [True: 0, False: 0]
  |  Branch (500:4): [True: 0, False: 0]
  |  Branch (500:4): [True: 0, False: 0]
  |  Branch (500:4): [True: 0, False: 0]
  ------------------
  501|      0|			while (generator->node.parent->node.parent) {
  ------------------
  |  Branch (501:11): [True: 0, False: 0]
  ------------------
  502|      0|				generator->execute_data->prev_execute_data = prev;
  503|      0|				prev = generator->execute_data;
  504|      0|				generator = generator->node.parent;
  505|      0|			}
  506|      0|			generator->execute_data->prev_execute_data = prev;
  507|      0|			ptr = generator->execute_data;
  508|      0|		}
  509|      0|	}
  510|     13|	return ptr;
  511|     13|}
zend_generator_yield_from:
  567|     12|{
  568|     12|	ZEND_ASSERT(!generator->node.parent && "Already has parent?");
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (568:2): [True: 0, False: 12]
  |  Branch (568:2): [True: 0, False: 0]
  |  Branch (568:2): [True: 12, False: 0]
  |  Branch (568:2): [True: 12, False: 0]
  ------------------
  569|     12|	zend_generator *leaf = clear_link_to_leaf(generator);
  570|     12|	if (leaf && !from->node.parent && !from->node.ptr.leaf) {
  ------------------
  |  Branch (570:6): [True: 0, False: 12]
  |  Branch (570:14): [True: 0, False: 0]
  |  Branch (570:36): [True: 0, False: 0]
  ------------------
  571|      0|		from->node.ptr.leaf = leaf;
  572|      0|		leaf->node.ptr.root = from;
  573|      0|	}
  574|     12|	generator->node.parent = from;
  575|     12|	zend_generator_add_child(from, generator);
  576|     12|	generator->flags |= ZEND_GENERATOR_DO_INIT;
  577|     12|}
zend_generator_update_root:
  580|     12|{
  581|     12|	zend_generator *root = generator->node.parent;
  582|     12|	while (root->node.parent) {
  ------------------
  |  Branch (582:9): [True: 0, False: 12]
  ------------------
  583|      0|		root = root->node.parent;
  584|      0|	}
  585|       |
  586|     12|	clear_link_to_leaf(root);
  587|     12|	root->node.ptr.leaf = generator;
  588|     12|	generator->node.ptr.root = root;
  589|     12|	return root;
  590|     12|}
zend_generator_update_current:
  612|      5|{
  613|      5|	zend_generator *old_root = generator->node.ptr.root;
  614|      5|	ZEND_ASSERT(!old_root->execute_data && "Nothing to update?");
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (614:2): [True: 0, False: 5]
  |  Branch (614:2): [True: 0, False: 0]
  |  Branch (614:2): [True: 5, False: 0]
  |  Branch (614:2): [True: 5, False: 0]
  ------------------
  615|       |
  616|      5|	zend_generator *new_root = get_new_root(generator, old_root);
  617|       |
  618|      5|	ZEND_ASSERT(old_root->node.ptr.leaf == generator);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (618:2): [True: 0, False: 5]
  |  Branch (618:2): [True: 5, False: 0]
  ------------------
  619|      5|	generator->node.ptr.root = new_root;
  620|      5|	new_root->node.ptr.leaf = generator;
  621|      5|	old_root->node.ptr.leaf = NULL;
  622|       |
  623|      5|	zend_generator *new_root_parent = new_root->node.parent;
  624|      5|	ZEND_ASSERT(new_root_parent);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (624:2): [True: 0, False: 5]
  |  Branch (624:2): [True: 5, False: 0]
  ------------------
  625|      5|	zend_generator_remove_child(&new_root_parent->node, new_root);
  626|       |
  627|      5|	if (EXPECTED(EG(exception) == NULL) && EXPECTED((OBJ_FLAGS(&generator->std) & IS_OBJ_DESTRUCTOR_CALLED) == 0)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
              	if (EXPECTED(EG(exception) == NULL) && EXPECTED((OBJ_FLAGS(&generator->std) & IS_OBJ_DESTRUCTOR_CALLED) == 0)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  628|      5|		zend_op *yield_from = (zend_op *) new_root->execute_data->opline;
  629|       |
  630|      5|		if (yield_from->opcode == ZEND_YIELD_FROM) {
  ------------------
  |  |  288|      5|#define ZEND_YIELD_FROM                     166
  ------------------
  |  Branch (630:7): [True: 5, False: 0]
  ------------------
  631|      5|			if (Z_ISUNDEF(new_root_parent->retval)) {
  ------------------
  |  |  966|      5|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  632|       |				/* Throw the exception in the context of the generator */
  633|      0|				zend_execute_data *original_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  634|      0|				EG(current_execute_data) = new_root->execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  635|       |
  636|      0|				if (new_root == generator) {
  ------------------
  |  Branch (636:9): [True: 0, False: 0]
  ------------------
  637|      0|					new_root->execute_data->prev_execute_data = original_execute_data;
  638|      0|				} else {
  639|      0|					new_root->execute_data->prev_execute_data = &generator->execute_fake;
  640|      0|					generator->execute_fake.prev_execute_data = original_execute_data;
  641|      0|				}
  642|       |
  643|      0|				zend_throw_exception(zend_ce_ClosedGeneratorException, "Generator yielded from aborted, no return value available", 0);
  644|       |
  645|      0|				EG(current_execute_data) = original_execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  646|       |
  647|      0|				if (!(old_root->flags & ZEND_GENERATOR_CURRENTLY_RUNNING)) {
  ------------------
  |  Branch (647:9): [True: 0, False: 0]
  ------------------
  648|      0|					new_root->node.parent = NULL;
  649|      0|					OBJ_RELEASE(&new_root_parent->std);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  650|      0|					zend_generator_resume(generator);
  651|      0|					return zend_generator_get_current(generator);
  652|      0|				}
  653|      5|			} else {
  654|      5|				zval_ptr_dtor(&new_root->value);
  655|      5|				ZVAL_COPY(&new_root->value, &new_root_parent->value);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  656|      5|				if (yield_from->result_type != IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (656:9): [True: 1, False: 4]
  ------------------
  657|      1|					ZVAL_COPY(ZEND_CALL_VAR(new_root->execute_data, yield_from->result.var), &new_root_parent->retval);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  658|      1|				}
  659|      5|			}
  660|      5|		}
  661|      5|	}
  662|       |
  663|      5|	new_root->node.parent = NULL;
  664|      5|	OBJ_RELEASE(&new_root_parent->std);
  ------------------
  |  |   44|      5|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  665|       |
  666|      5|	return new_root;
  667|      5|}
zend_generator_resume:
  763|    293|{
  764|    293|	zend_generator *generator = zend_generator_get_current(orig_generator);
  765|       |
  766|       |	/* The generator is already closed, thus can't resume */
  767|    293|	if (UNEXPECTED(!generator->execute_data)) {
  ------------------
  |  |  457|    293|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 290]
  |  |  ------------------
  ------------------
  768|      3|		return;
  769|      3|	}
  770|       |
  771|    312|try_again:
  772|    312|	if (generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING) {
  ------------------
  |  Branch (772:6): [True: 3, False: 309]
  ------------------
  773|      3|		zend_throw_error(NULL, "Cannot resume an already running generator");
  774|      3|		return;
  775|      3|	}
  776|       |
  777|    309|	if (UNEXPECTED((orig_generator->flags & ZEND_GENERATOR_DO_INIT) != 0 && !Z_ISUNDEF(generator->value))) {
  ------------------
  |  |  457|    321|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 304]
  |  |  |  Branch (457:52): [True: 12, False: 297]
  |  |  |  Branch (457:52): [True: 5, False: 7]
  |  |  ------------------
  ------------------
  778|       |		/* We must not advance Generator if we yield from a Generator being currently run */
  779|      5|		orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT;
  780|      5|		return;
  781|      5|	}
  782|       |
  783|    304|	if (EG(active_fiber)) {
  ------------------
  |  |   45|    304|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 302]
  |  |  ------------------
  ------------------
  784|      2|		orig_generator->flags |= ZEND_GENERATOR_IN_FIBER;
  785|      2|		generator->flags |= ZEND_GENERATOR_IN_FIBER;
  786|      2|	}
  787|       |
  788|       |	/* Drop the AT_FIRST_YIELD flag */
  789|    304|	orig_generator->flags &= ~ZEND_GENERATOR_AT_FIRST_YIELD;
  790|       |
  791|       |	/* Backup executor globals */
  792|    304|	zend_execute_data *original_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|    304|# define EG(v) (executor_globals.v)
  ------------------
  793|    304|	uint32_t original_jit_trace_num = EG(jit_trace_num);
  ------------------
  |  |   45|    304|# define EG(v) (executor_globals.v)
  ------------------
  794|       |
  795|       |	/* Set executor globals */
  796|    304|	EG(current_execute_data) = generator->execute_data;
  ------------------
  |  |   45|    304|# define EG(v) (executor_globals.v)
  ------------------
  797|    304|	EG(jit_trace_num) = 0;
  ------------------
  |  |   45|    304|# define EG(v) (executor_globals.v)
  ------------------
  798|       |
  799|       |	/* We want the backtrace to look as if the generator function was
  800|       |	 * called from whatever method we are current running (e.g. next()).
  801|       |	 * So we have to link generator call frame with caller call frame. */
  802|    304|	if (generator == orig_generator) {
  ------------------
  |  Branch (802:6): [True: 284, False: 20]
  ------------------
  803|    284|		generator->execute_data->prev_execute_data = original_execute_data;
  804|    284|	} else {
  805|       |		/* We need some execute_data placeholder in stacktrace to be replaced
  806|       |		 * by the real stack trace when needed */
  807|     20|		generator->execute_data->prev_execute_data = &orig_generator->execute_fake;
  808|     20|		orig_generator->execute_fake.prev_execute_data = original_execute_data;
  809|     20|	}
  810|       |
  811|    304|	generator->flags |= ZEND_GENERATOR_CURRENTLY_RUNNING;
  812|       |
  813|       |	/* Ensure this is run after executor_data swap to have a proper stack trace */
  814|    304|	if (UNEXPECTED(!Z_ISUNDEF(generator->values))) {
  ------------------
  |  |  457|    304|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 294]
  |  |  ------------------
  ------------------
  815|     10|		if (EXPECTED(zend_generator_get_next_delegated_value(generator) == SUCCESS)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 3]
  |  |  ------------------
  ------------------
  816|       |			/* Restore executor globals */
  817|      7|			EG(current_execute_data) = original_execute_data;
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  818|      7|			EG(jit_trace_num) = original_jit_trace_num;
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  819|       |
  820|      7|			orig_generator->flags &= ~(ZEND_GENERATOR_DO_INIT | ZEND_GENERATOR_IN_FIBER);
  821|      7|			generator->flags &= ~(ZEND_GENERATOR_CURRENTLY_RUNNING | ZEND_GENERATOR_IN_FIBER);
  822|      7|			return;
  823|      7|		}
  824|       |		/* If there are no more delegated values, resume the generator
  825|       |		 * after the "yield from" expression. */
  826|     10|	}
  827|       |
  828|    297|	if (UNEXPECTED(generator->frozen_call_stack)) {
  ------------------
  |  |  457|    297|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 293]
  |  |  ------------------
  ------------------
  829|       |		/* Restore frozen call-stack */
  830|      4|		zend_generator_restore_call_stack(generator);
  831|      4|	}
  832|       |
  833|       |	/* Resume execution */
  834|    297|	ZEND_ASSERT(generator->execute_data->opline->opcode == ZEND_GENERATOR_CREATE
  ------------------
  |  |  112|    297|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (834:2): [True: 297, False: 0]
  |  Branch (834:2): [True: 0, False: 0]
  |  Branch (834:2): [True: 0, False: 0]
  |  Branch (834:2): [True: 0, False: 0]
  |  Branch (834:2): [True: 0, False: 0]
  |  Branch (834:2): [True: 86, False: 211]
  |  Branch (834:2): [True: 200, False: 11]
  |  Branch (834:2): [True: 8, False: 3]
  |  Branch (834:2): [True: 2, False: 1]
  |  Branch (834:2): [True: 1, False: 0]
  ------------------
  835|    297|			|| generator->execute_data->opline->opcode == ZEND_YIELD
  836|    297|			|| generator->execute_data->opline->opcode == ZEND_YIELD_FROM
  837|       |			/* opline points to EG(exception_op), which is a sequence of
  838|       |			 * ZEND_HANDLE_EXCEPTION ops, so the following increment is safe */
  839|    297|			|| generator->execute_data->opline->opcode == ZEND_HANDLE_EXCEPTION
  840|       |			/* opline points to the start of a finally block minus one op to
  841|       |			 * account for the following increment */
  842|    297|			|| (generator->flags & ZEND_GENERATOR_FORCED_CLOSE));
  843|    297|	generator->execute_data->opline++;
  844|    297|	if (!ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |   46|    297|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  ------------------
  |  Branch (844:6): [True: 297, False: 0]
  ------------------
  845|    297|		zend_execute_ex(generator->execute_data);
  846|    297|	} else {
  847|      0|		zend_observer_generator_resume(generator->execute_data);
  848|      0|		zend_execute_ex(generator->execute_data);
  849|      0|		if (generator->execute_data) {
  ------------------
  |  Branch (849:7): [True: 0, False: 0]
  ------------------
  850|       |			/* On the final return, this will be called from ZEND_GENERATOR_RETURN */
  851|      0|			zend_observer_fcall_end(generator->execute_data, &generator->value);
  852|      0|		}
  853|      0|	}
  854|    297|	generator->flags &= ~(ZEND_GENERATOR_CURRENTLY_RUNNING | ZEND_GENERATOR_IN_FIBER);
  855|       |
  856|    297|	generator->frozen_call_stack = NULL;
  857|    297|	if (EXPECTED(generator->execute_data) &&
  ------------------
  |  |  456|    594|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 238, False: 59]
  |  |  ------------------
  ------------------
  858|    238|		UNEXPECTED(generator->execute_data->call)) {
  ------------------
  |  |  457|    238|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 230]
  |  |  ------------------
  ------------------
  859|       |		/* Frize call-stack */
  860|      8|		generator->frozen_call_stack = zend_generator_freeze_call_stack(generator->execute_data);
  861|      8|	}
  862|       |
  863|       |	/* Restore executor globals */
  864|    297|	EG(current_execute_data) = original_execute_data;
  ------------------
  |  |   45|    297|# define EG(v) (executor_globals.v)
  ------------------
  865|    297|	EG(jit_trace_num) = original_jit_trace_num;
  ------------------
  |  |   45|    297|# define EG(v) (executor_globals.v)
  ------------------
  866|       |
  867|       |	/* If an exception was thrown in the generator we have to internally
  868|       |	 * rethrow it in the parent scope.
  869|       |	 * In case we did yield from, the Exception must be rethrown into
  870|       |	 * its calling frame (see above in if (check_yield_from). */
  871|    297|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|    297|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 281]
  |  |  ------------------
  ------------------
  872|     16|		if (generator == orig_generator) {
  ------------------
  |  Branch (872:7): [True: 16, False: 0]
  ------------------
  873|     16|			zend_generator_close(generator, false);
  874|     16|			if (!EG(current_execute_data)) {
  ------------------
  |  |   45|     16|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (874:8): [True: 0, False: 16]
  ------------------
  875|      0|				zend_throw_exception_internal(NULL);
  876|     16|			} else if (EG(current_execute_data)->func &&
  ------------------
  |  |   45|     16|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (876:15): [True: 16, False: 0]
  ------------------
  877|     16|					ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) {
  ------------------
  |  | 1081|     16|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 4, False: 12]
  |  |  ------------------
  ------------------
  878|      4|				zend_rethrow_exception(EG(current_execute_data));
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  879|      4|			}
  880|     16|		} else {
  881|      0|			generator = zend_generator_get_current(orig_generator);
  882|      0|			zend_generator_throw_exception(generator, NULL);
  883|      0|			orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT;
  884|      0|			goto try_again;
  885|      0|		}
  886|     16|	}
  887|       |
  888|       |	/* yield from was used, try another resume. */
  889|    297|	if (UNEXPECTED((generator != orig_generator && !Z_ISUNDEF(generator->retval)) || (generator->execute_data && generator->execute_data->opline->opcode == ZEND_YIELD_FROM))) {
  ------------------
  |  |  457|  1.43k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 22, False: 275]
  |  |  |  Branch (457:52): [True: 18, False: 279]
  |  |  |  Branch (457:52): [True: 5, False: 13]
  |  |  |  Branch (457:52): [True: 238, False: 53]
  |  |  |  Branch (457:52): [True: 17, False: 221]
  |  |  ------------------
  ------------------
  890|     22|		generator = zend_generator_get_current(orig_generator);
  891|     22|		goto try_again;
  892|     22|	}
  893|       |
  894|    275|	orig_generator->flags &= ~(ZEND_GENERATOR_DO_INIT | ZEND_GENERATOR_IN_FIBER);
  895|    275|}
zim_Generator_rewind:
  919|      5|{
  920|      5|	zend_generator *generator;
  921|       |
  922|      5|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      5|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      5|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  923|       |
  924|      5|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  925|       |
  926|      5|	zend_generator_rewind(generator);
  927|      5|}
zim_Generator_valid:
  932|      5|{
  933|      5|	zend_generator *generator;
  934|       |
  935|      5|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      5|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      5|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  936|       |
  937|      5|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  938|       |
  939|      5|	zend_generator_ensure_initialized(generator);
  940|       |
  941|      5|	zend_generator_get_current(generator);
  942|       |
  943|      5|	RETURN_BOOL(EXPECTED(generator->execute_data != NULL));
  ------------------
  |  | 1046|      5|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      5|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      5|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      5|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      5|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      7|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 3, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  944|      5|}
zim_Generator_current:
  949|     13|{
  950|     13|	zend_generator *generator, *root;
  951|       |
  952|     13|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|     13|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|     13|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  953|       |
  954|     13|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|     13|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  955|       |
  956|     13|	zend_generator_ensure_initialized(generator);
  957|       |
  958|     13|	root = zend_generator_get_current(generator);
  959|     13|	if (EXPECTED(generator->execute_data != NULL && Z_TYPE(root->value) != IS_UNDEF)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 2]
  |  |  |  Branch (456:52): [True: 11, False: 2]
  |  |  |  Branch (456:52): [True: 11, False: 0]
  |  |  ------------------
  ------------------
  960|     11|		RETURN_COPY_DEREF(&root->value);
  ------------------
  |  | 1067|     11|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|     11|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|     11|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|     11|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|     11|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|     11|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|     11|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|     11|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|     11|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 8]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      3|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      3|			} else {									\
  |  |  |  |  |  | 1517|      3|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      3|			}											\
  |  |  |  |  |  | 1519|      3|		}												\
  |  |  |  |  |  | 1520|     11|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|     11|	do {												\
  |  |  |  |  |  |  |  | 1417|     11|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|     11|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|     11|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|     11|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|     11|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|     11|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|     11|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|     11|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|     11|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|     11|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|     11|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  961|     11|	}
  962|     13|}
zim_Generator_key:
  967|      3|{
  968|      3|	zend_generator *generator, *root;
  969|       |
  970|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  971|       |
  972|      3|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  973|       |
  974|      3|	zend_generator_ensure_initialized(generator);
  975|       |
  976|      3|	root = zend_generator_get_current(generator);
  977|      3|	if (EXPECTED(generator->execute_data != NULL && Z_TYPE(root->key) != IS_UNDEF)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  Branch (456:52): [True: 3, False: 0]
  |  |  |  Branch (456:52): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  978|      3|		RETURN_COPY_DEREF(&root->key);
  ------------------
  |  | 1067|      3|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      3|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      3|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      3|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      3|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      3|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      3|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      3|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      3|	do {												\
  |  |  |  |  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  979|      3|	}
  980|      3|}
zim_Generator_next:
  985|     15|{
  986|     15|	zend_generator *generator;
  987|       |
  988|     15|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|     15|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|     15|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
  989|       |
  990|     15|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|     15|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     15|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  991|       |
  992|     15|	zend_generator_ensure_initialized(generator);
  993|       |
  994|     15|	zend_generator_resume(generator);
  995|     15|}
zim_Generator_send:
 1000|     14|{
 1001|     14|	zval *value;
 1002|     14|	zend_generator *generator, *root;
 1003|       |
 1004|     42|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     14|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     14|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     14|		const int _flags = (flags); \
  |  |  |  | 1599|     14|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     14|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     14|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     14|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     14|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     14|		uint32_t _i = 0; \
  |  |  |  | 1603|     14|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     14|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     14|		char *_error = NULL; \
  |  |  |  | 1606|     14|		bool _dummy = 0; \
  |  |  |  | 1607|     14|		bool _optional = 0; \
  |  |  |  | 1608|     14|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     14|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     14|		((void)_i); \
  |  |  |  | 1610|     14|		((void)_real_arg); \
  |  |  |  | 1611|     14|		((void)_arg); \
  |  |  |  | 1612|     14|		((void)_expected_type); \
  |  |  |  | 1613|     14|		((void)_error); \
  |  |  |  | 1614|     14|		((void)_optional); \
  |  |  |  | 1615|     14|		((void)_dummy); \
  |  |  |  | 1616|     14|		\
  |  |  |  | 1617|     14|		do { \
  |  |  |  | 1618|     14|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     14|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     14|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     14|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     14|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     14|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1005|     56|		Z_PARAM_ZVAL(value)
  ------------------
  |  | 2116|     14|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     14|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     14|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     14|	++_i; \
  |  |  |  |  |  |  |  | 1654|     14|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     14|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     14|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     14|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     14|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     14|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     14|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     14|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1005:3): [True: 14, False: 0]
  |  Branch (1005:3): [True: 0, False: 0]
  |  Branch (1005:3): [True: 14, False: 0]
  |  Branch (1005:3): [True: 0, False: 0]
  |  Branch (1005:3): [True: 14, False: 0]
  |  Branch (1005:3): [True: 0, False: 0]
  |  Branch (1005:3): [True: 0, False: 14]
  |  Branch (1005:3): [True: 14, False: 0]
  |  Branch (1005:3): [True: 0, False: 0]
  |  Branch (1005:3): [True: 0, False: 0]
  ------------------
 1006|     56|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     14|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     14|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     14|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  |  | 1641|     14|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1006:2): [True: 14, False: 0]
  |  Branch (1006:2): [True: 0, False: 0]
  |  Branch (1006:2): [True: 14, False: 0]
  |  Branch (1006:2): [True: 0, False: 0]
  ------------------
 1007|       |
 1008|     14|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1009|       |
 1010|     14|	zend_generator_ensure_initialized(generator);
 1011|       |
 1012|       |	/* The generator is already closed, thus can't send anything */
 1013|     14|	if (UNEXPECTED(!generator->execute_data)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 13]
  |  |  ------------------
  ------------------
 1014|      1|		return;
 1015|      1|	}
 1016|       |
 1017|     13|	root = zend_generator_get_current(generator);
 1018|       |	/* Put sent value in the target VAR slot, if it is used */
 1019|     13|	if (root->send_target && !(root->flags & ZEND_GENERATOR_CURRENTLY_RUNNING)) {
  ------------------
  |  Branch (1019:6): [True: 11, False: 2]
  |  Branch (1019:27): [True: 8, False: 3]
  ------------------
 1020|      8|		ZVAL_COPY(root->send_target, value);
  ------------------
  |  | 1425|      8|	do {												\
  |  | 1426|      8|		zval *_z1 = (z);								\
  |  | 1427|      8|		const zval *_z2 = (v);							\
  |  | 1428|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      8|	do {												\
  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      8|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      8|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      8|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1021|      8|	}
 1022|       |
 1023|     13|	zend_generator_resume(generator);
 1024|       |
 1025|     13|	root = zend_generator_get_current(generator);
 1026|     13|	if (EXPECTED(generator->execute_data)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 9]
  |  |  ------------------
  ------------------
 1027|      4|		RETURN_COPY_DEREF(&root->value);
  ------------------
  |  | 1067|      4|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      4|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      4|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      4|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      4|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 3]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      1|			} else {									\
  |  |  |  |  |  | 1517|      1|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      1|			}											\
  |  |  |  |  |  | 1519|      1|		}												\
  |  |  |  |  |  | 1520|      4|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      4|	do {												\
  |  |  |  |  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1028|      4|	}
 1029|     13|}
zim_Generator_throw:
 1034|      4|{
 1035|      4|	zval *exception;
 1036|      4|	zend_generator *generator;
 1037|       |
 1038|     12|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1039|     16|		Z_PARAM_OBJECT_OF_CLASS(exception, zend_ce_throwable);
  ------------------
  |  | 1985|      4|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 0, 0)
  |  |  ------------------
  |  |  |  | 1971|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      4|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      1|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      1|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      1|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      2|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1976|      1|				break; \
  |  |  |  | 1977|      1|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (1039:3): [True: 4, False: 0]
  |  Branch (1039:3): [True: 0, False: 0]
  |  Branch (1039:3): [True: 4, False: 0]
  |  Branch (1039:3): [True: 0, False: 0]
  |  Branch (1039:3): [True: 4, False: 0]
  |  Branch (1039:3): [True: 0, False: 0]
  |  Branch (1039:3): [True: 0, False: 4]
  |  Branch (1039:3): [True: 4, False: 0]
  |  Branch (1039:3): [True: 0, False: 0]
  |  Branch (1039:3): [True: 0, False: 0]
  ------------------
 1040|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1040:2): [True: 3, False: 0]
  |  Branch (1040:2): [True: 0, False: 0]
  |  Branch (1040:2): [True: 3, False: 0]
  |  Branch (1040:2): [True: 0, False: 0]
  ------------------
 1041|       |
 1042|      3|	Z_TRY_ADDREF_P(exception);
  ------------------
  |  | 1285|      3|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      3|	zval *_pz = (pz);				\
  |  | 1287|      3|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      3|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      3|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      3|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      3|	}								\
  |  | 1290|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1043|       |
 1044|      3|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1045|       |
 1046|      3|	zend_generator_ensure_initialized(generator);
 1047|       |
 1048|      3|	if (generator->execute_data) {
  ------------------
  |  Branch (1048:6): [True: 2, False: 1]
  ------------------
 1049|      2|		zend_generator *root = zend_generator_get_current(generator);
 1050|       |
 1051|      2|		if (zend_generator_throw_exception(root, exception) == FAILURE) {
  ------------------
  |  Branch (1051:7): [True: 0, False: 2]
  ------------------
 1052|      0|			return;
 1053|      0|		}
 1054|       |
 1055|      2|		zend_generator_resume(generator);
 1056|       |
 1057|      2|		root = zend_generator_get_current(generator);
 1058|      2|		if (generator->execute_data) {
  ------------------
  |  Branch (1058:7): [True: 0, False: 2]
  ------------------
 1059|      0|			RETURN_COPY_DEREF(&root->value);
  ------------------
  |  | 1067|      0|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      0|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      0|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1060|      0|		}
 1061|      2|	} else {
 1062|       |		/* If the generator is already closed throw the exception in the
 1063|       |		 * current context */
 1064|      1|		zend_throw_exception_object(exception);
 1065|      1|	}
 1066|      3|}
zim_Generator_getReturn:
 1071|      1|{
 1072|      1|	zend_generator *generator;
 1073|       |
 1074|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1075|       |
 1076|      1|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1077|       |
 1078|      1|	zend_generator_ensure_initialized(generator);
 1079|      1|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1080|      0|		return;
 1081|      0|	}
 1082|       |
 1083|      1|	if (Z_ISUNDEF(generator->retval)) {
  ------------------
  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1084|       |		/* Generator hasn't returned yet -> error! */
 1085|      0|		zend_throw_exception(NULL,
 1086|      0|			"Cannot get return value of a generator that hasn't returned", 0);
 1087|      0|		return;
 1088|      0|	}
 1089|       |
 1090|      1|	ZVAL_COPY(return_value, &generator->retval);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1091|      1|}
zim_Generator___debugInfo:
 1095|      2|{
 1096|      2|	zend_generator *generator;
 1097|       |
 1098|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1099|       |
 1100|      2|	generator = (zend_generator *) Z_OBJ_P(ZEND_THIS);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1101|       |
 1102|      2|	array_init(return_value);
 1103|       |
 1104|      2|	zend_function *func = generator->func;
 1105|       |
 1106|      2|	zval val;
 1107|      2|	if (func->common.scope) {
  ------------------
  |  Branch (1107:6): [True: 1, False: 1]
  ------------------
 1108|      1|		zend_string *class_name = func->common.scope->name;
 1109|      1|		zend_string *func_name = func->common.function_name;
 1110|      1|		zend_string *combined = zend_string_concat3(
 1111|      1|			ZSTR_VAL(class_name), ZSTR_LEN(class_name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(class_name), ZSTR_LEN(class_name),
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1112|      1|			"::", strlen("::"),
 1113|      1|			ZSTR_VAL(func_name), ZSTR_LEN(func_name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(func_name), ZSTR_LEN(func_name)
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1114|      1|		);
 1115|      1|		ZVAL_NEW_STR(&val, combined);
  ------------------
  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      1|		zval *__z = (z);						\
  |  | 1107|      1|		zend_string *__s = (s);					\
  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1116|      1|	} else {
 1117|      1|		ZVAL_STR_COPY(&val, func->common.function_name);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1118|      1|	}
 1119|       |
 1120|      2|	zend_hash_update(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_FUNCTION), &val);
  ------------------
  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1121|      2|}
zend_register_generator_ce:
 1237|      2|{
 1238|      2|	zend_ce_generator = register_class_Generator(zend_ce_iterator);
 1239|      2|	zend_ce_generator->create_object = zend_generator_create;
 1240|       |	/* get_iterator has to be assigned *after* implementing the interface */
 1241|      2|	zend_ce_generator->get_iterator = zend_generator_get_iterator;
 1242|      2|	zend_ce_generator->default_object_handlers = &zend_generator_handlers;
 1243|       |
 1244|      2|	memcpy(&zend_generator_handlers, &std_object_handlers, sizeof(zend_object_handlers));
 1245|      2|	zend_generator_handlers.free_obj = zend_generator_free_storage;
 1246|      2|	zend_generator_handlers.dtor_obj = zend_generator_dtor_storage;
 1247|      2|	zend_generator_handlers.get_gc = zend_generator_get_gc;
 1248|      2|	zend_generator_handlers.clone_obj = NULL;
 1249|      2|	zend_generator_handlers.get_constructor = zend_generator_get_constructor;
 1250|       |
 1251|      2|	zend_ce_ClosedGeneratorException = register_class_ClosedGeneratorException(zend_ce_exception);
 1252|      2|}
zend_generators.c:zend_generator_cleanup_unfinished_execution:
  115|     41|{
  116|     41|	zend_op_array *op_array = &execute_data->func->op_array;
  117|     41|	if (execute_data->opline != op_array->opcodes) {
  ------------------
  |  Branch (117:6): [True: 31, False: 10]
  ------------------
  118|     31|		uint32_t op_num = execute_data->opline - op_array->opcodes;
  119|       |
  120|     31|		if (UNEXPECTED(generator->frozen_call_stack)) {
  ------------------
  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 27]
  |  |  ------------------
  ------------------
  121|       |			/* Temporarily restore generator->execute_data if it has been NULLed out already. */
  122|      4|			zend_execute_data *save_ex = generator->execute_data;
  123|      4|			generator->execute_data = execute_data;
  124|      4|			zend_generator_restore_call_stack(generator);
  125|      4|			generator->execute_data = save_ex;
  126|      4|		}
  127|       |
  128|     31|		zend_cleanup_unfinished_execution(execute_data, op_num, catch_op_num);
  129|     31|	}
  130|     41|}
zend_generators.c:zend_generator_revert_call_stack:
  100|      8|{
  101|      8|	zend_execute_data *prev = NULL;
  102|       |
  103|     16|	do {
  104|     16|		zend_execute_data *next = call->prev_execute_data;
  105|     16|		call->prev_execute_data = prev;
  106|     16|		prev = call;
  107|     16|		call = next;
  108|     16|	} while (call);
  ------------------
  |  Branch (108:11): [True: 8, False: 8]
  ------------------
  109|       |
  110|      8|	return prev;
  111|      8|}
zend_generators.c:clear_link_to_leaf:
  195|    119|static zend_always_inline zend_generator *clear_link_to_leaf(zend_generator *generator) {
  196|    119|	ZEND_ASSERT(!generator->node.parent);
  ------------------
  |  |  112|    119|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (196:2): [True: 0, False: 119]
  |  Branch (196:2): [True: 119, False: 0]
  ------------------
  197|    119|	zend_generator *leaf = generator->node.ptr.leaf;
  198|    119|	if (leaf) {
  ------------------
  |  Branch (198:6): [True: 5, False: 114]
  ------------------
  199|      5|		leaf->node.ptr.root = NULL;
  200|      5|		generator->node.ptr.leaf = NULL;
  201|      5|		return leaf;
  202|      5|	}
  203|    114|	return NULL;
  204|    119|}
zend_generators.c:zend_generator_add_child:
  546|     12|{
  547|     12|	zend_generator_node *node = &generator->node;
  548|       |
  549|     12|	if (node->children == 0) {
  ------------------
  |  Branch (549:6): [True: 12, False: 0]
  ------------------
  550|     12|		node->child.single = child;
  551|     12|	} else {
  552|      0|		if (node->children == 1) {
  ------------------
  |  Branch (552:7): [True: 0, False: 0]
  ------------------
  553|      0|			HashTable *ht = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  554|      0|			zend_hash_init(ht, 0, NULL, NULL, 0);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  555|      0|			zend_hash_index_add_new_ptr(ht,
  556|      0|				(zend_ulong) node->child.single, node->child.single);
  557|      0|			node->child.ht = ht;
  558|      0|		}
  559|       |
  560|      0|		zend_hash_index_add_new_ptr(node->child.ht, (zend_ulong)(uintptr_t) child, child);
  561|      0|	}
  562|       |
  563|     12|	++node->children;
  564|     12|}
zend_generators.c:get_new_root:
  593|      5|{
  594|     10|	while (!root->execute_data && root->node.children == 1) {
  ------------------
  |  Branch (594:9): [True: 5, False: 5]
  |  Branch (594:32): [True: 5, False: 0]
  ------------------
  595|      5|		root = root->node.child.single;
  596|      5|	}
  597|       |
  598|      5|	if (root->execute_data) {
  ------------------
  |  Branch (598:6): [True: 5, False: 0]
  ------------------
  599|      5|		return root;
  600|      5|	}
  601|       |
  602|       |	/* We have reached a multi-child node haven't found the root yet. We don't know which
  603|       |	 * child to follow, so perform the search from the other direction instead. */
  604|      0|	while (generator->node.parent->execute_data) {
  ------------------
  |  Branch (604:9): [True: 0, False: 0]
  ------------------
  605|      0|		generator = generator->node.parent;
  606|      0|	}
  607|       |
  608|      0|	return generator;
  609|      5|}
zend_generators.c:zend_generator_remove_child:
  175|     12|{
  176|     12|	ZEND_ASSERT(node->children >= 1);
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (176:2): [True: 0, False: 12]
  |  Branch (176:2): [True: 12, False: 0]
  ------------------
  177|     12|	if (node->children == 1) {
  ------------------
  |  Branch (177:6): [True: 12, False: 0]
  ------------------
  178|     12|		node->child.single = NULL;
  179|     12|	} else {
  180|      0|		HashTable *ht = node->child.ht;
  181|      0|		zend_hash_index_del(ht, (zend_ulong)(uintptr_t) child);
  182|      0|		if (node->children == 2) {
  ------------------
  |  Branch (182:7): [True: 0, False: 0]
  ------------------
  183|      0|			zend_generator *other_child;
  184|      0|			ZEND_HASH_FOREACH_PTR(ht, other_child) {
  ------------------
  |  | 1133|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|      0|				node->child.single = other_child;
  186|      0|				break;
  187|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  188|      0|			zend_hash_destroy(ht);
  189|       |			efree(ht);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|      0|		}
  191|      0|	}
  192|     12|	node->children--;
  193|     12|}
zend_generators.c:zend_generator_get_next_delegated_value:
  670|     10|{
  671|     10|	zval *value;
  672|     10|	if (Z_TYPE(generator->values) == IS_ARRAY) {
  ------------------
  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(generator->values) == IS_ARRAY) {
  ------------------
  |  |  613|     10|#define IS_ARRAY					7
  ------------------
  |  Branch (672:6): [True: 6, False: 4]
  ------------------
  673|      6|		HashTable *ht = Z_ARR(generator->values);
  ------------------
  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  674|      6|		HashPosition pos = Z_FE_POS(generator->values);
  ------------------
  |  |  692|      6|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  ------------------
  675|       |
  676|      6|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      6|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      6|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      6|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 5, False: 1]
  |  |  ------------------
  ------------------
  677|      5|			do {
  678|      5|				if (UNEXPECTED(pos >= ht->nNumUsed)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
  679|       |					/* Reached end of array */
  680|      1|					goto failure;
  681|      1|				}
  682|       |
  683|      4|				value = &ht->arPacked[pos];
  684|      4|				pos++;
  685|      5|			} while (Z_ISUNDEF_P(value));
  ------------------
  |  |  967|      4|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      4|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  686|       |
  687|      4|			zval_ptr_dtor(&generator->value);
  688|      4|			ZVAL_COPY(&generator->value, value);
  ------------------
  |  | 1425|      4|	do {												\
  |  | 1426|      4|		zval *_z1 = (z);								\
  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  689|       |
  690|      4|			zval_ptr_dtor(&generator->key);
  691|      4|			ZVAL_LONG(&generator->key, pos - 1);
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  692|      4|		} else {
  693|      1|			Bucket *p;
  694|       |
  695|      1|			do {
  696|      1|				if (UNEXPECTED(pos >= ht->nNumUsed)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  697|       |					/* Reached end of array */
  698|      1|					goto failure;
  699|      1|				}
  700|       |
  701|      0|				p = &ht->arData[pos];
  702|      0|				value = &p->val;
  703|      0|				pos++;
  704|      1|			} while (Z_ISUNDEF_P(value));
  ------------------
  |  |  967|      0|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      0|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  705|       |
  706|      0|			zval_ptr_dtor(&generator->value);
  707|      0|			ZVAL_COPY(&generator->value, value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  708|       |
  709|      0|			zval_ptr_dtor(&generator->key);
  710|      0|			if (p->key) {
  ------------------
  |  Branch (710:8): [True: 0, False: 0]
  ------------------
  711|      0|				ZVAL_STR_COPY(&generator->key, p->key);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  712|      0|			} else {
  713|      0|				ZVAL_LONG(&generator->key, p->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  714|      0|			}
  715|      0|		}
  716|      4|		Z_FE_POS(generator->values) = pos;
  ------------------
  |  |  692|      4|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  ------------------
  717|      4|	} else {
  718|      4|		zend_object_iterator *iter = (zend_object_iterator *) Z_OBJ(generator->values);
  ------------------
  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  719|       |
  720|      4|		if (iter->index++ > 0) {
  ------------------
  |  Branch (720:7): [True: 3, False: 1]
  ------------------
  721|      3|			iter->funcs->move_forward(iter);
  722|      3|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  723|      0|				goto failure;
  724|      0|			}
  725|      3|		}
  726|       |
  727|      4|		if (iter->funcs->valid(iter) == FAILURE) {
  ------------------
  |  Branch (727:7): [True: 1, False: 3]
  ------------------
  728|       |			/* reached end of iteration */
  729|      1|			goto failure;
  730|      1|		}
  731|       |
  732|      3|		value = iter->funcs->get_current_data(iter);
  733|      3|		if (UNEXPECTED(EG(exception) != NULL) || UNEXPECTED(!value)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
              		if (UNEXPECTED(EG(exception) != NULL) || UNEXPECTED(!value)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  734|      0|			goto failure;
  735|      0|		}
  736|       |
  737|      3|		zval_ptr_dtor(&generator->value);
  738|      3|		ZVAL_COPY(&generator->value, value);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  739|       |
  740|      3|		zval_ptr_dtor(&generator->key);
  741|      3|		if (iter->funcs->get_current_key) {
  ------------------
  |  Branch (741:7): [True: 3, False: 0]
  ------------------
  742|      3|			iter->funcs->get_current_key(iter, &generator->key);
  743|      3|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  744|      0|				ZVAL_UNDEF(&generator->key);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  745|      0|				goto failure;
  746|      0|			}
  747|      3|		} else {
  748|      0|			ZVAL_LONG(&generator->key, iter->index);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  749|      0|		}
  750|      3|	}
  751|       |
  752|      7|	return SUCCESS;
  753|       |
  754|      3|failure:
  755|      3|	zval_ptr_dtor(&generator->values);
  756|      3|	ZVAL_UNDEF(&generator->values);
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  757|       |
  758|      3|	return FAILURE;
  759|     10|}
zend_generators.c:zend_generator_throw_exception:
  514|      2|{
  515|      2|	if (generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING) {
  ------------------
  |  Branch (515:6): [True: 0, False: 2]
  ------------------
  516|      0|		zval_ptr_dtor(exception);
  517|      0|		zend_throw_error(NULL, "Cannot resume an already running generator");
  518|      0|		return FAILURE;
  519|      0|	}
  520|       |
  521|      2|	zend_execute_data *original_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  522|       |
  523|       |	/* Throw the exception in the context of the generator. Decrementing the opline
  524|       |	 * to pretend the exception happened during the YIELD opcode. */
  525|      2|	EG(current_execute_data) = generator->execute_data;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  526|      2|	generator->execute_data->prev_execute_data = original_execute_data;
  527|       |
  528|      2|	if (exception) {
  ------------------
  |  Branch (528:6): [True: 2, False: 0]
  ------------------
  529|      2|		zend_throw_exception_object(exception);
  530|      2|	} else {
  531|      0|		zend_rethrow_exception(EG(current_execute_data));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  532|      0|	}
  533|       |
  534|       |	/* if we don't stop an array/iterator yield from, the exception will only reach the generator after the values were all iterated over */
  535|      2|	if (UNEXPECTED(Z_TYPE(generator->values) != IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  536|      1|		zval_ptr_dtor(&generator->values);
  537|      1|		ZVAL_UNDEF(&generator->values);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  538|      1|	}
  539|       |
  540|      2|	EG(current_execute_data) = original_execute_data;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  541|       |
  542|      2|	return SUCCESS;
  543|      2|}
zend_generators.c:zend_generator_rewind:
  908|     36|{
  909|     36|	zend_generator_ensure_initialized(generator);
  910|       |
  911|     36|	if (!(generator->flags & ZEND_GENERATOR_AT_FIRST_YIELD)) {
  ------------------
  |  Branch (911:6): [True: 0, False: 36]
  ------------------
  912|       |		zend_throw_exception(NULL, "Cannot rewind a generator that was already run", 0);
  913|      0|	}
  914|     36|}
zend_generators.c:zend_generator_ensure_initialized:
  899|    684|{
  900|    684|	if (UNEXPECTED(Z_TYPE(generator->value) == IS_UNDEF) && EXPECTED(generator->execute_data) && EXPECTED(generator->node.parent == NULL)) {
  ------------------
  |  |  457|  1.36k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 89, False: 595]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(Z_TYPE(generator->value) == IS_UNDEF) && EXPECTED(generator->execute_data) && EXPECTED(generator->node.parent == NULL)) {
  ------------------
  |  |  456|    773|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 88, False: 1]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(Z_TYPE(generator->value) == IS_UNDEF) && EXPECTED(generator->execute_data) && EXPECTED(generator->node.parent == NULL)) {
  ------------------
  |  |  456|     88|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 79, False: 9]
  |  |  ------------------
  ------------------
  901|     79|		zend_generator_resume(generator);
  902|     79|		generator->flags |= ZEND_GENERATOR_AT_FIRST_YIELD;
  903|     79|	}
  904|    684|}
zend_generators.c:zend_generator_create:
  466|    102|{
  467|    102|	zend_generator *generator = emalloc(sizeof(zend_generator));
  ------------------
  |  |  150|    102|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    102|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    102|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    102|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    102|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  468|    102|	memset(generator, 0, sizeof(zend_generator));
  469|       |
  470|       |	/* The key will be incremented on first use, so it'll start at 0 */
  471|    102|	generator->largest_used_integer_key = -1;
  472|       |
  473|    102|	ZVAL_UNDEF(&generator->retval);
  ------------------
  |  | 1055|    102|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    102|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    102|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    102|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    102|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    102|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 102]
  |  |  ------------------
  ------------------
  474|    102|	ZVAL_UNDEF(&generator->values);
  ------------------
  |  | 1055|    102|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    102|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    102|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    102|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    102|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    102|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 102]
  |  |  ------------------
  ------------------
  475|       |
  476|       |	/* By default we have a tree of only one node */
  477|    102|	generator->node.parent = NULL;
  478|    102|	generator->node.children = 0;
  479|    102|	generator->node.ptr.root = NULL;
  480|       |
  481|    102|	zend_object_std_init(&generator->std, class_type);
  482|    102|	return (zend_object*)generator;
  483|    102|}
zend_generators.c:zend_generator_get_iterator:
 1212|     34|{
 1213|     34|	zend_object_iterator *iterator;
 1214|     34|	zend_generator *generator = (zend_generator*)Z_OBJ_P(object);
  ------------------
  |  | 1000|     34|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     34|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1215|       |
 1216|     34|	if (!generator->execute_data) {
  ------------------
  |  Branch (1216:6): [True: 0, False: 34]
  ------------------
 1217|      0|		zend_throw_exception(NULL, "Cannot traverse an already closed generator", 0);
 1218|      0|		return NULL;
 1219|      0|	}
 1220|       |
 1221|     34|	if (UNEXPECTED(by_ref) && !(generator->execute_data->func->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|     68|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 32]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(by_ref) && !(generator->execute_data->func->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  352|      2|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (1221:28): [True: 1, False: 1]
  ------------------
 1222|      1|		zend_throw_exception(NULL, "You can only iterate a generator by-reference if it declared that it yields by-reference", 0);
 1223|      1|		return NULL;
 1224|      1|	}
 1225|       |
 1226|     33|	iterator = emalloc(sizeof(zend_object_iterator));
  ------------------
  |  |  150|     33|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     33|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     33|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     33|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     33|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1227|     33|	zend_iterator_init(iterator);
 1228|       |
 1229|     33|	iterator->funcs = &zend_generator_iterator_functions;
 1230|     33|	ZVAL_OBJ_COPY(&iterator->data, Z_OBJ_P(object));
  ------------------
  |  | 1146|     33|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|     33|		zval *__z = (z);						\
  |  | 1148|     33|		zend_object *__o = (o);					\
  |  | 1149|     33|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|     33|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|     33|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|     33|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     33|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|     33|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     33|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     33|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     33|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     33|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     33|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     33|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     33|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     33|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|     33|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 33]
  |  |  ------------------
  ------------------
 1231|       |
 1232|     33|	return iterator;
 1233|     34|}
zend_generators.c:zend_generator_iterator_dtor:
 1126|     33|{
 1127|     33|	zval_ptr_dtor(&iterator->data);
 1128|     33|}
zend_generators.c:zend_generator_iterator_valid:
 1132|    208|{
 1133|    208|	zend_generator *generator = (zend_generator*)Z_OBJ(iterator->data);
  ------------------
  |  |  999|    208|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1134|       |
 1135|    208|	zend_generator_ensure_initialized(generator);
 1136|       |
 1137|    208|	zend_generator_get_current(generator);
 1138|       |
 1139|    208|	return generator->execute_data ? SUCCESS : FAILURE;
  ------------------
  |  Branch (1139:9): [True: 185, False: 23]
  ------------------
 1140|    208|}
zend_generators.c:zend_generator_iterator_get_data:
 1144|    185|{
 1145|    185|	zend_generator *generator = (zend_generator*)Z_OBJ(iterator->data), *root;
  ------------------
  |  |  999|    185|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1146|       |
 1147|    185|	zend_generator_ensure_initialized(generator);
 1148|       |
 1149|    185|	root = zend_generator_get_current(generator);
 1150|       |
 1151|    185|	return &root->value;
 1152|    185|}
zend_generators.c:zend_generator_iterator_get_key:
 1156|     18|{
 1157|     18|	zend_generator *generator = (zend_generator*)Z_OBJ(iterator->data), *root;
  ------------------
  |  |  999|     18|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1158|       |
 1159|     18|	zend_generator_ensure_initialized(generator);
 1160|       |
 1161|     18|	root = zend_generator_get_current(generator);
 1162|       |
 1163|     18|	if (EXPECTED(Z_TYPE(root->key) != IS_UNDEF)) {
  ------------------
  |  |  456|     18|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 0]
  |  |  ------------------
  ------------------
 1164|     18|		zval *zv = &root->key;
 1165|       |
 1166|     18|		ZVAL_COPY_DEREF(key, zv);
  ------------------
  |  | 1508|     18|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     18|		zval *_z3 = (v);								\
  |  | 1510|     18|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     18|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     18|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     18|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     18|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 18]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|     18|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     18|	do {												\
  |  |  |  | 1417|     18|		zval *_z1 = (z);								\
  |  |  |  | 1418|     18|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     18|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     18|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     18|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     18|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     18|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     18|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     18|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     18|	do {												\
  |  |  |  |  |  | 1408|     18|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     18|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     18|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     18|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     18|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     18|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     18|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     18|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 1167|     18|	} else {
 1168|      0|		ZVAL_NULL(key);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1169|      0|	}
 1170|     18|}
zend_generators.c:zend_generator_iterator_move_forward:
 1174|    183|{
 1175|    183|	zend_generator *generator = (zend_generator*)Z_OBJ(iterator->data);
  ------------------
  |  |  999|    183|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1176|       |
 1177|    183|	zend_generator_ensure_initialized(generator);
 1178|       |
 1179|    183|	zend_generator_resume(generator);
 1180|    183|}
zend_generators.c:zend_generator_iterator_rewind:
 1184|     31|{
 1185|     31|	zend_generator *generator = (zend_generator*)Z_OBJ(iterator->data);
  ------------------
  |  |  999|     31|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1186|       |
 1187|     31|	zend_generator_rewind(generator);
 1188|     31|}
zend_generators.c:zend_generator_iterator_get_gc:
 1193|      4|{
 1194|      4|	*table = &iterator->data;
 1195|      4|	*n = 1;
 1196|       |	return NULL;
 1197|      4|}
zend_generators.c:zend_generator_free_storage:
  371|    102|{
  372|    102|	zend_generator *generator = (zend_generator*) object;
  373|       |
  374|    102|	zend_generator_close(generator, false);
  375|       |
  376|    102|	if (generator->func && (generator->func->common.fn_flags & ZEND_ACC_CLOSURE)) {
  ------------------
  |  |  384|     99|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (376:6): [True: 99, False: 3]
  |  Branch (376:25): [True: 13, False: 86]
  ------------------
  377|     13|		OBJ_RELEASE(ZEND_CLOSURE_OBJECT(generator->func));
  ------------------
  |  |   44|     13|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  378|     13|	}
  379|       |
  380|       |	/* we can't immediately free them in zend_generator_close() else yield from won't be able to fetch it */
  381|    102|	zval_ptr_dtor(&generator->value);
  382|    102|	zval_ptr_dtor(&generator->key);
  383|       |
  384|    102|	if (EXPECTED(!Z_ISUNDEF(generator->retval))) {
  ------------------
  |  |  456|    102|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 41, False: 61]
  |  |  ------------------
  ------------------
  385|     41|		zval_ptr_dtor(&generator->retval);
  386|     41|	}
  387|       |
  388|    102|	if (UNEXPECTED(generator->node.children > 1)) {
  ------------------
  |  |  457|    102|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 102]
  |  |  ------------------
  ------------------
  389|      0|		zend_hash_destroy(generator->node.child.ht);
  390|      0|		efree(generator->node.child.ht);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  391|      0|	}
  392|       |
  393|    102|	zend_object_std_dtor(&generator->std);
  394|    102|}
zend_generators.c:zend_generator_dtor_storage:
  241|    102|{
  242|    102|	zend_generator *generator = (zend_generator*) object;
  243|    102|	zend_generator *current_generator = zend_generator_get_current(generator);
  244|    102|	zend_execute_data *ex = generator->execute_data;
  245|    102|	uint32_t op_num, try_catch_offset;
  246|       |
  247|       |	/* If current_generator is running in a fiber, there are 2 cases to consider:
  248|       |	 *  - If generator is also marked with ZEND_GENERATOR_IN_FIBER, then the
  249|       |	 *    entire path from current_generator to generator is executing in a
  250|       |	 *    fiber. Do not dtor now: These will be dtor when terminating the fiber.
  251|       |	 *  - If generator is not marked with ZEND_GENERATOR_IN_FIBER, and has a
  252|       |	 *    child marked with ZEND_GENERATOR_IN_FIBER, then this an intermediate
  253|       |	 *    node of case 1. Otherwise generator is not executing in a fiber and we
  254|       |	 *    can dtor.
  255|       |	 */
  256|    102|	if (current_generator->flags & ZEND_GENERATOR_IN_FIBER) {
  ------------------
  |  Branch (256:6): [True: 0, False: 102]
  ------------------
  257|      0|		if (check_node_running_in_fiber(generator)) {
  ------------------
  |  Branch (257:7): [True: 0, False: 0]
  ------------------
  258|       |			/* Prevent finally blocks from yielding */
  259|      0|			generator->flags |= ZEND_GENERATOR_FORCED_CLOSE;
  260|      0|			return;
  261|      0|		}
  262|      0|	}
  263|       |
  264|       |	/* leave yield from mode to properly allow finally execution */
  265|    102|	if (UNEXPECTED(Z_TYPE(generator->values) != IS_UNDEF)) {
  ------------------
  |  |  457|    102|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 101]
  |  |  ------------------
  ------------------
  266|      1|		zval_ptr_dtor(&generator->values);
  267|      1|		ZVAL_UNDEF(&generator->values);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  268|      1|	}
  269|       |
  270|    102|	zend_generator *parent = generator->node.parent;
  271|    102|	if (parent) {
  ------------------
  |  Branch (271:6): [True: 7, False: 95]
  ------------------
  272|      7|		zend_generator_remove_child(&parent->node, generator);
  273|      7|		clear_link_to_root(generator);
  274|      7|		generator->node.parent = NULL;
  275|      7|		OBJ_RELEASE(&parent->std);
  ------------------
  |  |   44|      7|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  276|     95|	} else {
  277|     95|		clear_link_to_leaf(generator);
  278|     95|	}
  279|       |
  280|    102|	if (EXPECTED(!ex) || EXPECTED(!(ex->func->op_array.fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK))
  ------------------
  |  |  456|    204|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 60, False: 42]
  |  |  ------------------
  ------------------
              	if (EXPECTED(!ex) || EXPECTED(!(ex->func->op_array.fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK))
  ------------------
  |  |  456|    144|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 41, False: 1]
  |  |  ------------------
  ------------------
  281|    101|			|| CG(unclean_shutdown)) {
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  282|    101|		zend_generator_close(generator, false);
  283|    101|		return;
  284|    101|	}
  285|       |
  286|      1|	op_num = ex->opline - ex->func->op_array.opcodes;
  287|      1|	try_catch_offset = -1;
  288|       |
  289|       |	/* Find the innermost try/catch that we are inside of. */
  290|      2|	for (uint32_t i = 0; i < ex->func->op_array.last_try_catch; i++) {
  ------------------
  |  Branch (290:23): [True: 1, False: 1]
  ------------------
  291|      1|		zend_try_catch_element *try_catch = &ex->func->op_array.try_catch_array[i];
  292|      1|		if (op_num < try_catch->try_op) {
  ------------------
  |  Branch (292:7): [True: 0, False: 1]
  ------------------
  293|      0|			break;
  294|      0|		}
  295|      1|		if (op_num < try_catch->catch_op || op_num < try_catch->finally_end) {
  ------------------
  |  Branch (295:7): [True: 0, False: 1]
  |  Branch (295:39): [True: 1, False: 0]
  ------------------
  296|      1|			try_catch_offset = i;
  297|      1|		}
  298|      1|	}
  299|       |
  300|       |	/* Walk try/catch/finally structures upwards, performing the necessary actions. */
  301|      1|	while (try_catch_offset != (uint32_t) -1) {
  ------------------
  |  Branch (301:9): [True: 1, False: 0]
  ------------------
  302|      1|		zend_try_catch_element *try_catch = &ex->func->op_array.try_catch_array[try_catch_offset];
  303|       |
  304|      1|		if (op_num < try_catch->finally_op) {
  ------------------
  |  Branch (304:7): [True: 1, False: 0]
  ------------------
  305|       |			/* Go to finally block */
  306|      1|			zval *fast_call =
  307|      1|				ZEND_CALL_VAR(ex, ex->func->op_array.opcodes[try_catch->finally_end].op1.var);
  ------------------
  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
  308|       |
  309|      1|			zend_generator_cleanup_unfinished_execution(generator, ex, try_catch->finally_op);
  310|       |
  311|      1|			zend_object *old_exception = NULL;
  312|      1|			const zend_op *old_opline_before_exception = NULL;
  313|      1|			if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  314|      0|				if (EG(current_execute_data)
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  315|      0|				 && EG(current_execute_data)->opline
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (315:9): [True: 0, False: 0]
  ------------------
  316|      0|				 && EG(current_execute_data)->opline->opcode == ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              				 && EG(current_execute_data)->opline->opcode == ZEND_HANDLE_EXCEPTION) {
  ------------------
  |  |  271|      0|#define ZEND_HANDLE_EXCEPTION               149
  ------------------
  |  Branch (316:9): [True: 0, False: 0]
  ------------------
  317|      0|					EG(current_execute_data)->opline = EG(opline_before_exception);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					EG(current_execute_data)->opline = EG(opline_before_exception);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  318|      0|					old_opline_before_exception = EG(opline_before_exception);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  319|      0|				}
  320|      0|				old_exception = EG(exception);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  321|      0|				EG(exception) = NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  322|      0|			}
  323|       |
  324|      1|			Z_OBJ_P(fast_call) = NULL;
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  325|      1|			Z_OPLINE_NUM_P(fast_call) = (uint32_t)-1;
  ------------------
  |  |  690|      1|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      1|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
  326|       |
  327|       |			/* -1 because zend_generator_resume() will increment it */
  328|      1|			ex->opline = &ex->func->op_array.opcodes[try_catch->finally_op] - 1;
  329|      1|			generator->flags |= ZEND_GENERATOR_FORCED_CLOSE;
  330|      1|			zend_generator_resume(generator);
  331|       |
  332|      1|			if (old_exception) {
  ------------------
  |  Branch (332:8): [True: 0, False: 1]
  ------------------
  333|      0|				if (old_opline_before_exception) {
  ------------------
  |  Branch (333:9): [True: 0, False: 0]
  ------------------
  334|      0|					EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  335|      0|					EG(opline_before_exception) = old_opline_before_exception;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  336|      0|				}
  337|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  338|      0|					zend_exception_set_previous(EG(exception), old_exception);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  339|      0|				} else {
  340|      0|					EG(exception) = old_exception;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  341|      0|				}
  342|      0|			}
  343|       |
  344|       |			/* TODO: If we hit another yield inside try/finally,
  345|       |			 * should we also jump to the next finally block? */
  346|      1|			break;
  347|      1|		} else if (op_num < try_catch->finally_end) {
  ------------------
  |  Branch (347:14): [True: 0, False: 0]
  ------------------
  348|      0|			zval *fast_call =
  349|      0|				ZEND_CALL_VAR(ex, ex->func->op_array.opcodes[try_catch->finally_end].op1.var);
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
  350|       |			/* Clean up incomplete return statement */
  351|      0|			if (Z_OPLINE_NUM_P(fast_call) != (uint32_t) -1) {
  ------------------
  |  |  690|      0|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      0|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
  |  Branch (351:8): [True: 0, False: 0]
  ------------------
  352|      0|				zend_op *retval_op = &ex->func->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)];
  ------------------
  |  |  690|      0|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      0|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
  353|      0|				if (retval_op->op2_type & (IS_TMP_VAR | IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (retval_op->op2_type & (IS_TMP_VAR | IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (353:9): [True: 0, False: 0]
  ------------------
  354|      0|					zval_ptr_dtor(ZEND_CALL_VAR(ex, retval_op->op2.var));
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
  355|      0|				}
  356|      0|			}
  357|       |			/* Clean up backed-up exception */
  358|      0|			if (Z_OBJ_P(fast_call)) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (999:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|      0|				OBJ_RELEASE(Z_OBJ_P(fast_call));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  360|      0|			}
  361|      0|		}
  362|       |
  363|      0|		try_catch_offset--;
  364|      0|	}
  365|       |
  366|       |	zend_generator_close(generator, false);
  367|      1|}
zend_generators.c:clear_link_to_root:
  206|      7|static zend_always_inline void clear_link_to_root(zend_generator *generator) {
  207|      7|	ZEND_ASSERT(generator->node.parent);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (207:2): [True: 0, False: 7]
  |  Branch (207:2): [True: 7, False: 0]
  ------------------
  208|      7|	if (generator->node.ptr.root) {
  ------------------
  |  Branch (208:6): [True: 7, False: 0]
  ------------------
  209|      7|		generator->node.ptr.root->node.ptr.leaf = NULL;
  210|       |		generator->node.ptr.root = NULL;
  211|      7|	}
  212|      7|}
zend_generators.c:zend_generator_get_gc:
  426|     93|{
  427|     93|	zend_generator *generator = (zend_generator*)object;
  428|     93|	zend_execute_data *execute_data = generator->execute_data;
  429|       |
  430|     93|	if (!execute_data) {
  ------------------
  |  Branch (430:6): [True: 57, False: 36]
  ------------------
  431|     57|		if (UNEXPECTED(generator->func->common.fn_flags & ZEND_ACC_CLOSURE)) {
  ------------------
  |  |  457|     57|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 12, False: 45]
  |  |  ------------------
  ------------------
  432|     12|			zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  433|     12|			zend_get_gc_buffer_add_zval(gc_buffer, &generator->value);
  434|     12|			zend_get_gc_buffer_add_zval(gc_buffer, &generator->key);
  435|     12|			zend_get_gc_buffer_add_zval(gc_buffer, &generator->retval);
  436|     12|			zend_get_gc_buffer_add_obj(gc_buffer, ZEND_CLOSURE_OBJECT(generator->func));
  ------------------
  |  |   28|     12|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
  437|     12|			zend_get_gc_buffer_use(gc_buffer, table, n);
  438|     45|		} else {
  439|       |			/* If the non-closure generator has been closed, it can only hold on to three values: The value, key
  440|       |			 * and retval. These three zvals are stored sequentially starting at &generator->value. */
  441|     45|			*table = &generator->value;
  442|     45|			*n = 3;
  443|     45|		}
  444|     57|		return NULL;
  445|     57|	}
  446|       |
  447|     36|	if (generator->flags & ZEND_GENERATOR_CURRENTLY_RUNNING) {
  ------------------
  |  Branch (447:6): [True: 0, False: 36]
  ------------------
  448|       |		/* If the generator is currently running, we certainly won't be able to GC any values it
  449|       |		 * holds on to. The execute_data state might be inconsistent during execution (e.g. because
  450|       |		 * GC has been triggered in the middle of a variable reassignment), so we should not try
  451|       |		 * to inspect it here. */
  452|      0|		*table = NULL;
  453|      0|		*n = 0;
  454|      0|		return NULL;
  455|      0|	}
  456|       |
  457|     36|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  458|     36|	HashTable *ht = zend_generator_frame_gc(gc_buffer, generator);
  459|     36|	zend_get_gc_buffer_use(gc_buffer, table, n);
  460|       |
  461|     36|	return ht;
  462|     36|}
zend_generators.c:zend_generator_get_constructor:
  487|      3|{
  488|      3|	zend_throw_error(NULL, "The \"Generator\" class is reserved for internal use and cannot be manually instantiated");
  489|       |
  490|       |	return NULL;
  491|      3|}

zend_execute.c:zend_generator_get_current:
  117|     13|{
  118|     13|	if (EXPECTED(generator->node.parent == NULL)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 0]
  |  |  ------------------
  ------------------
  119|       |		/* we're not in yield from mode */
  120|     13|		return generator;
  121|     13|	}
  122|       |
  123|      0|	zend_generator *root = generator->node.ptr.root;
  124|      0|	if (!root) {
  ------------------
  |  Branch (124:6): [True: 0, False: 0]
  ------------------
  125|      0|		root = zend_generator_update_root(generator);
  126|      0|	}
  127|       |
  128|      0|	if (EXPECTED(root->execute_data)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  129|       |		/* generator still running */
  130|      0|		return root;
  131|      0|	}
  132|       |
  133|      0|	return zend_generator_update_current(generator);
  134|      0|}
zend_generators.c:zend_generator_get_current:
  117|    879|{
  118|    879|	if (EXPECTED(generator->node.parent == NULL)) {
  ------------------
  |  |  456|    879|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 831, False: 48]
  |  |  ------------------
  ------------------
  119|       |		/* we're not in yield from mode */
  120|    831|		return generator;
  121|    831|	}
  122|       |
  123|     48|	zend_generator *root = generator->node.ptr.root;
  124|     48|	if (!root) {
  ------------------
  |  Branch (124:6): [True: 12, False: 36]
  ------------------
  125|     12|		root = zend_generator_update_root(generator);
  126|     12|	}
  127|       |
  128|     48|	if (EXPECTED(root->execute_data)) {
  ------------------
  |  |  456|     48|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 43, False: 5]
  |  |  ------------------
  ------------------
  129|       |		/* generator still running */
  130|     43|		return root;
  131|     43|	}
  132|       |
  133|      5|	return zend_generator_update_current(generator);
  134|     48|}

zend_generators.c:register_class_Generator:
   54|      2|{
   55|      2|	zend_class_entry ce, *class_entry;
   56|       |
   57|      2|	INIT_CLASS_ENTRY(ce, "Generator", class_Generator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   58|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
   59|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
   60|       |
   61|      2|	return class_entry;
   62|      2|}
zend_generators.c:register_class_ClosedGeneratorException:
   65|      2|{
   66|      2|	zend_class_entry ce, *class_entry;
   67|       |
   68|      2|	INIT_CLASS_ENTRY(ce, "ClosedGeneratorException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   69|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
   70|       |
   71|      2|	return class_entry;
   72|      2|}

zend_hash_str_find_ptr_lc:
   88|     17|ZEND_API void *zend_hash_str_find_ptr_lc(const HashTable *ht, const char *str, size_t len) {
   89|     17|	void *result;
   90|     17|	char *lc_str;
   91|       |
   92|       |	/* Stack allocate small strings to improve performance */
   93|     17|	ALLOCA_FLAG(use_heap)
   94|       |
   95|     17|	lc_str = zend_str_tolower_copy(do_alloca(len + 1, use_heap), str, len);
  ------------------
  |  |  247|     17|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|     17|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|     17|	result = zend_hash_str_find_ptr(ht, lc_str, len);
   97|     17|	free_alloca(lc_str, use_heap);
  ------------------
  |  |  248|     17|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|     17|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|       |
   99|     17|	return result;
  100|     17|}
zend_hash_find_ptr_lc:
  102|    140|ZEND_API void *zend_hash_find_ptr_lc(const HashTable *ht, zend_string *key) {
  103|    140|	void *result;
  104|    140|	zend_string *lc_key = zend_string_tolower(key);
  105|    140|	result = zend_hash_find_ptr(ht, lc_key);
  106|    140|	zend_string_release(lc_key);
  107|    140|	return result;
  108|    140|}
_zend_hash_init:
  276|   314k|{
  277|   314k|	_zend_hash_init_int(ht, nSize, pDestructor, persistent);
  278|   314k|}
_zend_new_array:
  288|   200k|{
  289|   200k|	HashTable *ht = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|   200k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|   200k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|   200k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|   200k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|   200k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  290|   200k|	_zend_hash_init_int(ht, nSize, ZVAL_PTR_DTOR, false);
  ------------------
  |  |   87|   200k|#define ZVAL_PTR_DTOR zval_ptr_dtor
  ------------------
  291|   200k|	return ht;
  292|   200k|}
zend_hash_packed_grow:
  310|    132|{
  311|    132|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    132|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    132|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    132|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (311:2): [True: 132, False: 0]
  |  Branch (311:2): [True: 0, False: 0]
  |  Branch (311:2): [True: 132, False: 0]
  |  Branch (311:2): [True: 0, False: 0]
  ------------------
  312|    132|	if (ht->nTableSize >= HT_MAX_SIZE) {
  ------------------
  |  |  456|    132|# define HT_MAX_SIZE 0x40000000
  ------------------
  |  Branch (312:6): [True: 0, False: 132]
  ------------------
  313|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%u * %zu + %zu)", ht->nTableSize * 2, sizeof(Bucket), sizeof(Bucket));
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  314|      0|	}
  315|    132|	uint32_t newTableSize = ht->nTableSize * 2;
  316|    132|	HT_SET_DATA_ADDR(ht, perealloc2(HT_GET_DATA_ADDR(ht), HT_PACKED_SIZE_EX(newTableSize, HT_MIN_MASK), HT_PACKED_USED_SIZE(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT));
  ------------------
  |  |  548|    132|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|    264|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|    132|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  |  Branch (549:37): [True: 0, False: 132]
  |  |  ------------------
  |  |  550|    132|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 132]
  |  |  ------------------
  ------------------
  317|    132|	ht->nTableSize = newTableSize;
  318|    132|}
zend_hash_real_init:
  321|    289|{
  322|    289|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    289|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
  323|       |
  324|    289|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    289|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    289|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (324:2): [True: 289, False: 0]
  |  Branch (324:2): [True: 0, False: 0]
  |  Branch (324:2): [True: 289, False: 0]
  |  Branch (324:2): [True: 0, False: 0]
  ------------------
  325|    289|	zend_hash_real_init_ex(ht, packed);
  326|    289|}
zend_hash_real_init_packed:
  329|  12.1k|{
  330|  12.1k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  12.1k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
  331|       |
  332|  12.1k|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  12.1k|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  12.1k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  12.1k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (332:2): [True: 12.1k, False: 0]
  |  Branch (332:2): [True: 0, False: 0]
  |  Branch (332:2): [True: 12.1k, False: 0]
  |  Branch (332:2): [True: 0, False: 0]
  ------------------
  333|  12.1k|	zend_hash_real_init_packed_ex(ht);
  334|  12.1k|}
zend_hash_real_init_mixed:
  337|  99.4k|{
  338|  99.4k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  99.4k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
  339|       |
  340|  99.4k|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  99.4k|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  99.4k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  99.4k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (340:2): [True: 99.4k, False: 0]
  |  Branch (340:2): [True: 0, False: 0]
  |  Branch (340:2): [True: 99.4k, False: 0]
  |  Branch (340:2): [True: 0, False: 0]
  ------------------
  341|  99.4k|	zend_hash_real_init_mixed_ex(ht);
  342|  99.4k|}
zend_hash_packed_to_hash:
  345|    218|{
  346|    218|	void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|    218|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|    218|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  347|    218|	zval *src = ht->arPacked;
  348|    218|	Bucket *dst;
  349|    218|	uint32_t i;
  350|    218|	uint32_t nSize = ht->nTableSize;
  351|       |
  352|    218|	ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);
  ------------------
  |  |  112|    218|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (352:2): [True: 0, False: 218]
  |  Branch (352:2): [True: 218, False: 0]
  ------------------
  353|       |
  354|    218|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    218|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    218|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    218|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (354:2): [True: 218, False: 0]
  |  Branch (354:2): [True: 0, False: 0]
  |  Branch (354:2): [True: 218, False: 0]
  |  Branch (354:2): [True: 0, False: 0]
  ------------------
  355|       |	// Alloc before assign to avoid inconsistencies on OOM
  356|    218|	new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|    218|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    218|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    218|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    218|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    218|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    218|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 218]
  |  |  ------------------
  ------------------
  357|    218|	HT_FLAGS(ht) &= ~HASH_FLAG_PACKED;
  ------------------
  |  |   52|    218|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(ht) &= ~HASH_FLAG_PACKED;
  ------------------
  |  |   43|    218|#define HASH_FLAG_PACKED           (1<<2)
  ------------------
  358|    218|	ht->nTableMask = HT_SIZE_TO_MASK(ht->nTableSize);
  ------------------
  |  |  473|    218|	((uint32_t)(-((nTableSize) + (nTableSize))))
  ------------------
  359|    218|	HT_SET_DATA_ADDR(ht, new_data);
  ------------------
  |  |  548|    218|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|    218|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|    218|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|    218|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 218]
  |  |  ------------------
  ------------------
  360|    218|	dst = ht->arData;
  361|    614|	for (i = 0; i < ht->nNumUsed; i++) {
  ------------------
  |  Branch (361:14): [True: 396, False: 218]
  ------------------
  362|    396|		ZVAL_COPY_VALUE(&dst->val, src);
  ------------------
  |  | 1416|    396|	do {												\
  |  | 1417|    396|		zval *_z1 = (z);								\
  |  | 1418|    396|		const zval *_z2 = (v);							\
  |  | 1419|    396|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    396|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    396|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    396|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    396|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    396|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    396|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    396|	do {												\
  |  |  |  | 1408|    396|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    396|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    396|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    396|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    396|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    396|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    396|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 396]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    396|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 396]
  |  |  ------------------
  ------------------
  363|    396|		dst->h = i;
  364|    396|		dst->key = NULL;
  365|    396|		dst++;
  366|    396|		src++;
  367|    396|	}
  368|       |	pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|    218|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    218|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    218|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    218|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    218|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    218|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 218]
  |  |  ------------------
  ------------------
  369|    218|	zend_hash_rehash(ht);
  370|    218|}
zend_hash_extend:
  395|    969|{
  396|    969|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    969|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    969|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    969|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (396:2): [True: 969, False: 0]
  |  Branch (396:2): [True: 0, False: 0]
  |  Branch (396:2): [True: 969, False: 0]
  |  Branch (396:2): [True: 0, False: 0]
  ------------------
  397|       |
  398|    969|	if (nSize == 0) return;
  ------------------
  |  Branch (398:6): [True: 228, False: 741]
  ------------------
  399|       |
  400|    741|	ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);
  ------------------
  |  |  112|    741|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (400:2): [True: 0, False: 741]
  |  Branch (400:2): [True: 741, False: 0]
  ------------------
  401|       |
  402|    741|	if (UNEXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |  457|    741|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 288, False: 453]
  |  |  ------------------
  ------------------
  403|    288|		if (nSize > ht->nTableSize) {
  ------------------
  |  Branch (403:7): [True: 100, False: 188]
  ------------------
  404|    100|			ht->nTableSize = zend_hash_check_size(nSize);
  405|    100|		}
  406|    288|		zend_hash_real_init(ht, packed);
  407|    453|	} else {
  408|    453|		if (packed) {
  ------------------
  |  Branch (408:7): [True: 1, False: 452]
  ------------------
  409|      1|			ZEND_ASSERT(HT_IS_PACKED(ht));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (409:4): [True: 0, False: 1]
  |  Branch (409:4): [True: 1, False: 0]
  ------------------
  410|      1|			if (nSize > ht->nTableSize) {
  ------------------
  |  Branch (410:8): [True: 1, False: 0]
  ------------------
  411|      1|				uint32_t newTableSize = zend_hash_check_size(nSize);
  412|      1|				HT_SET_DATA_ADDR(ht, perealloc2(HT_GET_DATA_ADDR(ht), HT_PACKED_SIZE_EX(newTableSize, HT_MIN_MASK), HT_PACKED_USED_SIZE(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT));
  ------------------
  |  |  548|      1|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      2|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      1|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  |  Branch (549:37): [True: 0, False: 1]
  |  |  ------------------
  |  |  550|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  413|      1|				ht->nTableSize = newTableSize;
  414|      1|			}
  415|    452|		} else {
  416|    452|			ZEND_ASSERT(!HT_IS_PACKED(ht));
  ------------------
  |  |  112|    452|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (416:4): [True: 0, False: 452]
  |  Branch (416:4): [True: 452, False: 0]
  ------------------
  417|    452|			if (nSize > ht->nTableSize) {
  ------------------
  |  Branch (417:8): [True: 91, False: 361]
  ------------------
  418|     91|				void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|     91|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|     91|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  419|     91|				Bucket *old_buckets = ht->arData;
  420|     91|				nSize = zend_hash_check_size(nSize);
  421|     91|				new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|     91|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     68|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     68|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     68|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     68|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     23|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     23|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     23|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     23|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     23|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 68, False: 23]
  |  |  ------------------
  ------------------
  422|     91|				ht->nTableSize = nSize;
  423|     91|				ht->nTableMask = HT_SIZE_TO_MASK(ht->nTableSize);
  ------------------
  |  |  473|     91|	((uint32_t)(-((nTableSize) + (nTableSize))))
  ------------------
  424|     91|				HT_SET_DATA_ADDR(ht, new_data);
  ------------------
  |  |  548|     91|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|     91|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|     91|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|     91|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 91]
  |  |  ------------------
  ------------------
  425|     91|				memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed);
  426|       |				pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|     91|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     23|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     23|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     23|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     23|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     23|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 68, False: 23]
  |  |  ------------------
  ------------------
  427|     91|				zend_hash_rehash(ht);
  428|     91|			}
  429|    452|		}
  430|    453|	}
  431|    741|}
zend_array_count:
  475|    308|{
  476|    308|	uint32_t num;
  477|    308|	if (UNEXPECTED(HT_FLAGS(ht) & HASH_FLAG_HAS_EMPTY_IND)) {
  ------------------
  |  |  457|    308|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 303]
  |  |  ------------------
  ------------------
  478|      5|		num = zend_array_recalc_elements(ht);
  479|      5|		if (UNEXPECTED(ht->nNumOfElements == num)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  480|      0|			HT_FLAGS(ht) &= ~HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              			HT_FLAGS(ht) &= ~HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      0|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
  481|      0|		}
  482|    303|	} else if (UNEXPECTED(ht == &EG(symbol_table))) {
  ------------------
  |  |  457|    303|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 303]
  |  |  ------------------
  ------------------
  483|      0|		num = zend_array_recalc_elements(ht);
  484|    303|	} else {
  485|    303|		num = zend_hash_num_elements(ht);
  486|    303|	}
  487|    308|	return num;
  488|    308|}
zend_hash_get_current_pos:
  511|     12|{
  512|     12|	return _zend_hash_get_current_pos(ht);
  513|     12|}
zend_hash_iterator_add:
  536|    227|{
  537|    227|	HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|    227|# define EG(v) (executor_globals.v)
  ------------------
  538|    227|	HashTableIterator *end  = iter + EG(ht_iterators_count);
  ------------------
  |  |   45|    227|# define EG(v) (executor_globals.v)
  ------------------
  539|    227|	uint32_t idx;
  540|       |
  541|    227|	if (EXPECTED(!HT_ITERATORS_OVERFLOW(ht))) {
  ------------------
  |  |  456|    227|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 227, False: 0]
  |  |  ------------------
  ------------------
  542|    227|		HT_INC_ITERATORS_COUNT(ht);
  ------------------
  |  |   83|    227|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) + 1)
  |  |  ------------------
  |  |  |  |   81|    227|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|    227|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 227]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    227|	}
  544|  2.46k|	while (iter != end) {
  ------------------
  |  Branch (544:9): [True: 2.45k, False: 7]
  ------------------
  545|  2.45k|		if (iter->ht == NULL) {
  ------------------
  |  Branch (545:7): [True: 220, False: 2.23k]
  ------------------
  546|    220|			iter->ht = ht;
  547|    220|			iter->pos = pos;
  548|    220|			idx = iter - EG(ht_iterators);
  ------------------
  |  |   45|    220|# define EG(v) (executor_globals.v)
  ------------------
  549|    220|			iter->next_copy = idx;
  550|    220|			if (idx + 1 > EG(ht_iterators_used)) {
  ------------------
  |  |   45|    220|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (550:8): [True: 220, False: 0]
  ------------------
  551|    220|				EG(ht_iterators_used) = idx + 1;
  ------------------
  |  |   45|    220|# define EG(v) (executor_globals.v)
  ------------------
  552|    220|			}
  553|    220|			return idx;
  554|    220|		}
  555|  2.23k|		iter++;
  556|  2.23k|	}
  557|      7|	if (EG(ht_iterators) == EG(ht_iterators_slots)) {
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
              	if (EG(ht_iterators) == EG(ht_iterators_slots)) {
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (557:6): [True: 1, False: 6]
  ------------------
  558|      1|		EG(ht_iterators) = emalloc(sizeof(HashTableIterator) * (EG(ht_iterators_count) + 8));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		EG(ht_iterators) = emalloc(sizeof(HashTableIterator) * (EG(ht_iterators_count) + 8));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  559|      1|		memcpy(EG(ht_iterators), EG(ht_iterators_slots), sizeof(HashTableIterator) * EG(ht_iterators_count));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		memcpy(EG(ht_iterators), EG(ht_iterators_slots), sizeof(HashTableIterator) * EG(ht_iterators_count));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		memcpy(EG(ht_iterators), EG(ht_iterators_slots), sizeof(HashTableIterator) * EG(ht_iterators_count));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  560|      6|	} else {
  561|      6|		EG(ht_iterators) = erealloc(EG(ht_iterators), sizeof(HashTableIterator) * (EG(ht_iterators_count) + 8));
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
              		EG(ht_iterators) = erealloc(EG(ht_iterators), sizeof(HashTableIterator) * (EG(ht_iterators_count) + 8));
  ------------------
  |  |  158|      6|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  562|      6|	}
  563|      7|	iter = EG(ht_iterators) + EG(ht_iterators_count);
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
              	iter = EG(ht_iterators) + EG(ht_iterators_count);
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  564|      7|	EG(ht_iterators_count) += 8;
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  565|      7|	iter->ht = ht;
  566|      7|	iter->pos = pos;
  567|      7|	memset(iter + 1, 0, sizeof(HashTableIterator) * 7);
  568|      7|	idx = iter - EG(ht_iterators);
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  569|      7|	iter->next_copy = idx;
  570|      7|	EG(ht_iterators_used) = idx + 1;
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  571|      7|	return idx;
  572|    227|}
zend_hash_iterator_pos:
  607|     33|{
  608|     33|	HashTableIterator *iter = EG(ht_iterators) + idx;
  ------------------
  |  |   45|     33|# define EG(v) (executor_globals.v)
  ------------------
  609|       |
  610|     33|	ZEND_ASSERT(idx != (uint32_t)-1);
  ------------------
  |  |  112|     33|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (610:2): [True: 0, False: 33]
  |  Branch (610:2): [True: 33, False: 0]
  ------------------
  611|     33|	if (UNEXPECTED(iter->ht != ht) && !zend_hash_iterator_find_copy_pos(idx, ht)) {
  ------------------
  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 22]
  |  |  ------------------
  ------------------
  |  Branch (611:36): [True: 0, False: 11]
  ------------------
  612|      0|		if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  613|      0|				&& EXPECTED(!HT_ITERATORS_OVERFLOW(iter->ht))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  614|      0|			HT_DEC_ITERATORS_COUNT(iter->ht);
  ------------------
  |  |   85|      0|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) - 1)
  |  |  ------------------
  |  |  |  |   81|      0|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|      0|		}
  616|      0|		if (EXPECTED(!HT_ITERATORS_OVERFLOW(ht))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  617|      0|			HT_INC_ITERATORS_COUNT(ht);
  ------------------
  |  |   83|      0|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) + 1)
  |  |  ------------------
  |  |  |  |   81|      0|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|      0|		}
  619|      0|		iter->ht = ht;
  620|      0|		iter->pos = _zend_hash_get_current_pos(ht);
  621|      0|	}
  622|     33|	return iter->pos;
  623|     33|}
zend_hash_iterator_pos_ex:
  626|  1.16k|{
  627|  1.16k|	HashTable *ht = Z_ARRVAL_P(array);
  ------------------
  |  |  997|  1.16k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  1.16k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  1.16k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  628|  1.16k|	HashTableIterator *iter = EG(ht_iterators) + idx;
  ------------------
  |  |   45|  1.16k|# define EG(v) (executor_globals.v)
  ------------------
  629|       |
  630|  1.16k|	ZEND_ASSERT(idx != (uint32_t)-1);
  ------------------
  |  |  112|  1.16k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (630:2): [True: 0, False: 1.16k]
  |  Branch (630:2): [True: 1.16k, False: 0]
  ------------------
  631|  1.16k|	if (UNEXPECTED(iter->ht != ht) && !zend_hash_iterator_find_copy_pos(idx, ht)) {
  ------------------
  |  |  457|  2.33k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 378, False: 790]
  |  |  ------------------
  ------------------
  |  Branch (631:36): [True: 377, False: 1]
  ------------------
  632|    377|		if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|    754|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 377, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|    754|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 377]
  |  |  ------------------
  ------------------
  633|      0|				&& EXPECTED(!HT_ITERATORS_OVERFLOW(ht))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  634|      0|			HT_DEC_ITERATORS_COUNT(iter->ht);
  ------------------
  |  |   85|      0|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) - 1)
  |  |  ------------------
  |  |  |  |   81|      0|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  635|      0|		}
  636|       |
  637|       |		/* Inlined SEPARATE_ARRAY() with updating of iterator when EG(ht_iterators) grows. */
  638|    377|		if (UNEXPECTED(GC_REFCOUNT(ht) > 1)) {
  ------------------
  |  |  457|    377|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 128, False: 249]
  |  |  ------------------
  ------------------
  639|    128|			ZVAL_ARR(array, zend_array_dup(ht));
  ------------------
  |  | 1125|    128|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|    128|		zend_array *__arr = (a);				\
  |  | 1127|    128|		zval *__z = (z);						\
  |  | 1128|    128|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|    128|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    128|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|    128|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|    128|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    128|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|    128|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    128|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    128|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    128|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    128|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    128|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|    128|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 128]
  |  |  ------------------
  ------------------
  640|    128|			GC_TRY_DELREF(ht);
  ------------------
  |  |  723|    128|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  ------------------
  641|    128|			iter = EG(ht_iterators) + idx;
  ------------------
  |  |   45|    128|# define EG(v) (executor_globals.v)
  ------------------
  642|    128|			ht = Z_ARRVAL_P(array);
  ------------------
  |  |  997|    128|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    128|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    128|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|    128|		}
  644|       |
  645|    377|		if (EXPECTED(!HT_ITERATORS_OVERFLOW(ht))) {
  ------------------
  |  |  456|    377|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 377, False: 0]
  |  |  ------------------
  ------------------
  646|    377|			HT_INC_ITERATORS_COUNT(ht);
  ------------------
  |  |   83|    377|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) + 1)
  |  |  ------------------
  |  |  |  |   81|    377|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|    377|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 377]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  647|    377|		}
  648|    377|		iter->ht = ht;
  649|    377|		iter->pos = _zend_hash_get_current_pos(ht);
  650|    377|	}
  651|  1.16k|	return iter->pos;
  652|  1.16k|}
zend_hash_iterator_del:
  655|    221|{
  656|    221|	HashTableIterator *iter = EG(ht_iterators) + idx;
  ------------------
  |  |   45|    221|# define EG(v) (executor_globals.v)
  ------------------
  657|       |
  658|    221|	ZEND_ASSERT(idx != (uint32_t)-1);
  ------------------
  |  |  112|    221|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (658:2): [True: 0, False: 221]
  |  Branch (658:2): [True: 221, False: 0]
  ------------------
  659|       |
  660|    221|	if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|    442|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 221, False: 0]
  |  |  ------------------
  ------------------
              	if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|    442|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 150, False: 71]
  |  |  ------------------
  ------------------
  661|    150|			&& EXPECTED(!HT_ITERATORS_OVERFLOW(iter->ht))) {
  ------------------
  |  |  456|    150|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 150, False: 0]
  |  |  ------------------
  ------------------
  662|    150|		ZEND_ASSERT(HT_ITERATORS_COUNT(iter->ht) != 0);
  ------------------
  |  |  112|    150|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (662:3): [True: 0, False: 150]
  |  Branch (662:3): [True: 150, False: 0]
  ------------------
  663|    150|		HT_DEC_ITERATORS_COUNT(iter->ht);
  ------------------
  |  |   85|    150|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) - 1)
  |  |  ------------------
  |  |  |  |   81|    150|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|    150|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 150]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  664|    150|	}
  665|    221|	iter->ht = NULL;
  666|       |
  667|    221|	if (UNEXPECTED(iter->next_copy != idx)) {
  ------------------
  |  |  457|    221|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 220]
  |  |  ------------------
  ------------------
  668|      1|		zend_hash_remove_iterator_copies(idx);
  669|      1|	}
  670|       |
  671|    221|	if (idx == EG(ht_iterators_used) - 1) {
  ------------------
  |  |   45|    221|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (671:6): [True: 219, False: 2]
  ------------------
  672|    221|		while (idx > 0 && EG(ht_iterators)[idx - 1].ht == NULL) {
  ------------------
  |  |   45|     91|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (672:10): [True: 91, False: 130]
  |  Branch (672:21): [True: 2, False: 89]
  ------------------
  673|      2|			idx--;
  674|      2|		}
  675|    219|		EG(ht_iterators_used) = idx;
  ------------------
  |  |   45|    219|# define EG(v) (executor_globals.v)
  ------------------
  676|    219|	}
  677|    221|}
zend_hash_iterators_lower_pos:
  700|    261|{
  701|    261|	const HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|    261|# define EG(v) (executor_globals.v)
  ------------------
  702|    261|	const HashTableIterator *end = iter + EG(ht_iterators_used);
  ------------------
  |  |   45|    261|# define EG(v) (executor_globals.v)
  ------------------
  703|    261|	HashPosition res = ht->nNumUsed;
  704|       |
  705|    522|	while (iter != end) {
  ------------------
  |  Branch (705:9): [True: 261, False: 261]
  ------------------
  706|    261|		if (iter->ht == ht) {
  ------------------
  |  Branch (706:7): [True: 261, False: 0]
  ------------------
  707|    261|			if (iter->pos >= start && iter->pos < res) {
  ------------------
  |  Branch (707:8): [True: 258, False: 3]
  |  Branch (707:30): [True: 3, False: 255]
  ------------------
  708|      3|				res = iter->pos;
  709|      3|			}
  710|    261|		}
  711|    261|		iter++;
  712|    261|	}
  713|    261|	return res;
  714|    261|}
_zend_hash_iterators_update:
  717|      4|{
  718|      4|	HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  719|      4|	const HashTableIterator *end = iter + EG(ht_iterators_used);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  720|       |
  721|      8|	while (iter != end) {
  ------------------
  |  Branch (721:9): [True: 4, False: 4]
  ------------------
  722|      4|		if (iter->ht == ht && iter->pos == from) {
  ------------------
  |  Branch (722:7): [True: 4, False: 0]
  |  Branch (722:25): [True: 4, False: 0]
  ------------------
  723|      4|			iter->pos = to;
  724|      4|		}
  725|      4|		iter++;
  726|      4|	}
  727|      4|}
zend_hash_iterators_advance:
  730|      1|{
  731|      1|	HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  732|      1|	const HashTableIterator *end = iter + EG(ht_iterators_used);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  733|       |
  734|      2|	while (iter != end) {
  ------------------
  |  Branch (734:9): [True: 1, False: 1]
  ------------------
  735|      1|		if (iter->ht == ht) {
  ------------------
  |  Branch (735:7): [True: 1, False: 0]
  ------------------
  736|      1|			iter->pos += step;
  737|      1|		}
  738|      1|		iter++;
  739|      1|	}
  740|      1|}
zend_hash_add:
  998|  37.1k|{
  999|  37.1k|	return _zend_hash_add_or_update_i(ht, key, pData, HASH_ADD);
  ------------------
  |  |   35|  37.1k|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
 1000|  37.1k|}
zend_hash_update:
 1003|   172k|{
 1004|   172k|	return _zend_hash_add_or_update_i(ht, key, pData, HASH_UPDATE);
  ------------------
  |  |   34|   172k|#define HASH_UPDATE 			(1<<0) /* Create new entry, or update the existing one. */
  ------------------
 1005|   172k|}
zend_hash_update_ind:
 1008|    183|{
 1009|    183|	return _zend_hash_add_or_update_i(ht, key, pData, HASH_UPDATE | HASH_UPDATE_INDIRECT);
  ------------------
  |  |   34|    183|#define HASH_UPDATE 			(1<<0) /* Create new entry, or update the existing one. */
  ------------------
              	return _zend_hash_add_or_update_i(ht, key, pData, HASH_UPDATE | HASH_UPDATE_INDIRECT);
  ------------------
  |  |   36|    183|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
 1010|    183|}
zend_hash_add_new:
 1013|  20.7k|{
 1014|  20.7k|	return _zend_hash_add_or_update_i(ht, key, pData, HASH_ADD_NEW);
  ------------------
  |  |   38|  20.7k|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
 1015|  20.7k|}
zend_hash_lookup:
 1018|    381|{
 1019|    381|	return _zend_hash_add_or_update_i(ht, key, NULL, HASH_LOOKUP);
  ------------------
  |  |   40|    381|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
 1020|    381|}
zend_hash_str_update:
 1037|    737|{
 1038|    737|	zend_ulong h = zend_hash_func(str, len);
 1039|       |
 1040|    737|	return _zend_hash_str_add_or_update_i(ht, str, len, h, pData, HASH_UPDATE);
  ------------------
  |  |   34|    737|#define HASH_UPDATE 			(1<<0) /* Create new entry, or update the existing one. */
  ------------------
 1041|    737|}
zend_hash_str_add:
 1051|     80|{
 1052|     80|	zend_ulong h = zend_hash_func(str, len);
 1053|       |
 1054|     80|	return _zend_hash_str_add_or_update_i(ht, str, len, h, pData, HASH_ADD);
  ------------------
  |  |   35|     80|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
 1055|     80|}
zend_hash_str_add_new:
 1058|      9|{
 1059|      9|	zend_ulong h = zend_hash_func(str, len);
 1060|       |
 1061|      9|	return _zend_hash_str_add_or_update_i(ht, str, len, h, pData, HASH_ADD_NEW);
  ------------------
  |  |   38|      9|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
 1062|      9|}
zend_hash_index_add_empty_element:
 1072|     29|{
 1073|     29|	zval dummy;
 1074|       |
 1075|     29|	ZVAL_NULL(&dummy);
  ------------------
  |  | 1059|     29|#define ZVAL_NULL(z) do {				\
  |  | 1060|     29|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     29|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     29|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     29|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     29|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 29]
  |  |  ------------------
  ------------------
 1076|     29|	return zend_hash_index_add(ht, h, &dummy);
 1077|     29|}
zend_hash_add_empty_element:
 1080|  26.8k|{
 1081|  26.8k|	zval dummy;
 1082|       |
 1083|  26.8k|	ZVAL_NULL(&dummy);
  ------------------
  |  | 1059|  26.8k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  26.8k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  26.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  26.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  26.8k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  26.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 26.8k]
  |  |  ------------------
  ------------------
 1084|  26.8k|	return zend_hash_add(ht, key, &dummy);
 1085|  26.8k|}
zend_hash_index_add:
 1225|  3.54k|{
 1226|  3.54k|	return _zend_hash_index_add_or_update_i(ht, h, pData, HASH_ADD);
  ------------------
  |  |   35|  3.54k|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
 1227|  3.54k|}
zend_hash_index_add_new:
 1230|  8.68M|{
 1231|  8.68M|	return _zend_hash_index_add_or_update_i(ht, h, pData, HASH_ADD | HASH_ADD_NEW);
  ------------------
  |  |   35|  8.68M|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
              	return _zend_hash_index_add_or_update_i(ht, h, pData, HASH_ADD | HASH_ADD_NEW);
  ------------------
  |  |   38|  8.68M|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
 1232|  8.68M|}
zend_hash_index_update:
 1235|  7.28k|{
 1236|  7.28k|	return _zend_hash_index_add_or_update_i(ht, h, pData, HASH_UPDATE);
  ------------------
  |  |   34|  7.28k|#define HASH_UPDATE 			(1<<0) /* Create new entry, or update the existing one. */
  ------------------
 1237|  7.28k|}
zend_hash_next_index_insert:
 1240|  2.10M|{
 1241|  2.10M|	return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEXT);
  ------------------
  |  |   35|  2.10M|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
              	return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEXT);
  ------------------
  |  |   39|  2.10M|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
 1242|  2.10M|}
zend_hash_next_index_insert_new:
 1245|  12.3k|{
 1246|  12.3k|	return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEW | HASH_ADD_NEXT);
  ------------------
  |  |   35|  12.3k|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
              	return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEW | HASH_ADD_NEXT);
  ------------------
  |  |   38|  12.3k|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              	return _zend_hash_index_add_or_update_i(ht, ht->nNextFreeElement, pData, HASH_ADD | HASH_ADD_NEW | HASH_ADD_NEXT);
  ------------------
  |  |   39|  12.3k|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
 1247|  12.3k|}
zend_hash_index_lookup:
 1250|  1.61k|{
 1251|  1.61k|	return _zend_hash_index_add_or_update_i(ht, h, NULL, HASH_LOOKUP);
  ------------------
  |  |   40|  1.61k|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
 1252|  1.61k|}
zend_hash_set_bucket_key:
 1255|    373|{
 1256|    373|	uint32_t nIndex;
 1257|    373|	uint32_t idx, i;
 1258|    373|	Bucket *p, *arData;
 1259|       |
 1260|    373|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    373|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1261|    373|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    373|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    373|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    373|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1261:2): [True: 373, False: 0]
  |  Branch (1261:2): [True: 0, False: 0]
  |  Branch (1261:2): [True: 373, False: 0]
  |  Branch (1261:2): [True: 0, False: 0]
  ------------------
 1262|    373|	ZEND_ASSERT(!HT_IS_PACKED(ht));
  ------------------
  |  |  112|    373|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1262:2): [True: 0, False: 373]
  |  Branch (1262:2): [True: 373, False: 0]
  ------------------
 1263|       |
 1264|    373|	(void)zend_string_hash_val(key);
 1265|    373|	p = zend_hash_find_bucket(ht, key);
 1266|    373|	if (UNEXPECTED(p)) {
  ------------------
  |  |  457|    373|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 363]
  |  |  ------------------
  ------------------
 1267|     10|		return (p == b) ? &p->val : NULL;
  ------------------
  |  Branch (1267:10): [True: 0, False: 10]
  ------------------
 1268|     10|	}
 1269|       |
 1270|    363|	if (!ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1270:6): [True: 215, False: 148]
  ------------------
 1271|    215|		zend_string_addref(key);
 1272|    215|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|    215|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|    215|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1273|    215|	}
 1274|       |
 1275|    363|	arData = ht->arData;
 1276|       |
 1277|       |	/* del from hash */
 1278|    363|	idx = HT_IDX_TO_HASH(b - arData);
  ------------------
  |  |  460|    363|	(idx)
  ------------------
 1279|    363|	nIndex = b->h | ht->nTableMask;
 1280|    363|	i = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  468|    363|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
 1281|    363|	if (i == idx) {
  ------------------
  |  Branch (1281:6): [True: 363, False: 0]
  ------------------
 1282|    363|		HT_HASH_EX(arData, nIndex) = Z_NEXT(b->val);
  ------------------
  |  |  468|    363|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
              		HT_HASH_EX(arData, nIndex) = Z_NEXT(b->val);
  ------------------
  |  |  680|    363|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1283|    363|	} else {
 1284|      0|		p = HT_HASH_TO_BUCKET_EX(arData, i);
  ------------------
  |  |  458|      0|	((data) + (idx))
  ------------------
 1285|      0|		while (Z_NEXT(p->val) != idx) {
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  |  Branch (1285:10): [True: 0, False: 0]
  ------------------
 1286|      0|			i = Z_NEXT(p->val);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1287|      0|			p = HT_HASH_TO_BUCKET_EX(arData, i);
  ------------------
  |  |  458|      0|	((data) + (idx))
  ------------------
 1288|      0|		}
 1289|      0|		Z_NEXT(p->val) = Z_NEXT(b->val);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              		Z_NEXT(p->val) = Z_NEXT(b->val);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1290|      0|	}
 1291|    363|	zend_string_release(b->key);
 1292|       |
 1293|       |	/* add to hash */
 1294|    363|	idx = b - arData;
 1295|    363|	b->key = key;
 1296|    363|	b->h = ZSTR_H(key);
  ------------------
  |  |   69|    363|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1297|    363|	nIndex = b->h | ht->nTableMask;
 1298|    363|	idx = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|    363|	(idx)
  ------------------
 1299|    363|	i = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  468|    363|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
 1300|    363|	if (i == HT_INVALID_IDX || i < idx) {
  ------------------
  |  |  435|    726|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (1300:6): [True: 294, False: 69]
  |  Branch (1300:29): [True: 69, False: 0]
  ------------------
 1301|    363|		Z_NEXT(b->val) = i;
  ------------------
  |  |  680|    363|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1302|    363|		HT_HASH_EX(arData, nIndex) = idx;
  ------------------
  |  |  468|    363|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
 1303|    363|	} else {
 1304|      0|		p = HT_HASH_TO_BUCKET_EX(arData, i);
  ------------------
  |  |  458|      0|	((data) + (idx))
  ------------------
 1305|      0|		while (Z_NEXT(p->val) != HT_INVALID_IDX && Z_NEXT(p->val) > idx) {
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              		while (Z_NEXT(p->val) != HT_INVALID_IDX && Z_NEXT(p->val) > idx) {
  ------------------
  |  |  435|      0|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
              		while (Z_NEXT(p->val) != HT_INVALID_IDX && Z_NEXT(p->val) > idx) {
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  |  Branch (1305:10): [True: 0, False: 0]
  |  Branch (1305:46): [True: 0, False: 0]
  ------------------
 1306|      0|			i = Z_NEXT(p->val);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1307|      0|			p = HT_HASH_TO_BUCKET_EX(arData, i);
  ------------------
  |  |  458|      0|	((data) + (idx))
  ------------------
 1308|      0|		}
 1309|      0|		Z_NEXT(b->val) = Z_NEXT(p->val);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              		Z_NEXT(b->val) = Z_NEXT(p->val);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1310|      0|		Z_NEXT(p->val) = idx;
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1311|      0|	}
 1312|    363|	return &b->val;
 1313|    373|}
zend_hash_rehash:
 1344|    621|{
 1345|    621|	Bucket *p;
 1346|    621|	uint32_t nIndex, i;
 1347|       |
 1348|    621|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    621|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1349|       |
 1350|    621|	if (UNEXPECTED(ht->nNumOfElements == 0)) {
  ------------------
  |  |  457|    621|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 620]
  |  |  ------------------
  ------------------
 1351|      1|		if (!(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		if (!(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |   44|      1|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  |  Branch (1351:7): [True: 1, False: 0]
  ------------------
 1352|      1|			ht->nNumUsed = 0;
 1353|      1|			HT_HASH_RESET(ht);
  ------------------
  |  |  507|      1|# define HT_HASH_RESET(ht) do { \
  |  |  508|      1|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|      1|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|      1|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|      1|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|      1|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|      1|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|      1|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|      1|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|      1|		do { \
  |  |  514|      1|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|      1|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|      1|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|      1|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|      1|			p += 64; \
  |  |  519|      1|			size -= 64; \
  |  |  520|      1|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 0, False: 1]
  |  |  ------------------
  |  |  521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1353:4): [True: 0, False: 1]
  |  Branch (1353:4): [True: 0, False: 0]
  |  Branch (1353:4): [True: 1, False: 0]
  |  Branch (1353:4): [True: 1, False: 0]
  ------------------
 1354|       |			/* Even if the array is empty, we still need to reset the iterator positions. */
 1355|      1|			ht->nInternalPointer = 0;
 1356|      1|			if (UNEXPECTED(HT_HAS_ITERATORS(ht))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1357|      1|				HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1358|      1|				HashTableIterator *end  = iter + EG(ht_iterators_used);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1359|      2|				while (iter != end) {
  ------------------
  |  Branch (1359:12): [True: 1, False: 1]
  ------------------
 1360|      1|					if (iter->ht == ht) {
  ------------------
  |  Branch (1360:10): [True: 1, False: 0]
  ------------------
 1361|      1|						iter->pos = 0;
 1362|      1|					}
 1363|      1|					iter++;
 1364|      1|				}
 1365|      1|			}
 1366|      1|		}
 1367|      1|		return;
 1368|      1|	}
 1369|       |
 1370|    620|	HT_HASH_RESET(ht);
  ------------------
  |  |  507|    620|# define HT_HASH_RESET(ht) do { \
  |  |  508|    620|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|    620|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    620|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|    620|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|    620|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|    620|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|    620|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|    620|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|    620|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|  33.7k|		do { \
  |  |  514|  33.7k|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|  33.7k|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|  33.7k|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|  33.7k|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|  33.7k|			p += 64; \
  |  |  519|  33.7k|			size -= 64; \
  |  |  520|  33.7k|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 33.1k, False: 620]
  |  |  ------------------
  |  |  521|    620|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 620]
  |  |  ------------------
  ------------------
  |  Branch (1370:2): [True: 0, False: 620]
  |  Branch (1370:2): [True: 0, False: 0]
  |  Branch (1370:2): [True: 620, False: 0]
  |  Branch (1370:2): [True: 620, False: 0]
  ------------------
 1371|    620|	i = 0;
 1372|    620|	p = ht->arData;
 1373|    620|	if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|    620|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 555, False: 65]
  |  |  ------------------
  ------------------
 1374|  16.6k|		do {
 1375|  16.6k|			nIndex = p->h | ht->nTableMask;
 1376|  16.6k|			Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|  16.6k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              			Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  16.6k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  16.6k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1377|  16.6k|			HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(i);
  ------------------
  |  |  470|  16.6k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  16.6k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              			HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(i);
  ------------------
  |  |  460|  16.6k|	(idx)
  ------------------
 1378|  16.6k|			p++;
 1379|  16.6k|		} while (++i < ht->nNumUsed);
  ------------------
  |  Branch (1379:12): [True: 16.1k, False: 555]
  ------------------
 1380|    555|	} else {
 1381|     65|		uint32_t old_num_used = ht->nNumUsed;
 1382|  27.4k|		do {
 1383|  27.4k|			if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) {
  ------------------
  |  |  457|  27.4k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 65, False: 27.3k]
  |  |  ------------------
  ------------------
 1384|     65|				uint32_t j = i;
 1385|     65|				Bucket *q = p;
 1386|       |
 1387|     65|				if (EXPECTED(!HT_HAS_ITERATORS(ht))) {
  ------------------
  |  |  456|     65|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 64, False: 1]
  |  |  ------------------
  ------------------
 1388|   198k|					while (++i < ht->nNumUsed) {
  ------------------
  |  Branch (1388:13): [True: 198k, False: 64]
  ------------------
 1389|   198k|						p++;
 1390|   198k|						if (EXPECTED(Z_TYPE_INFO(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|   198k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 17.0k, False: 181k]
  |  |  ------------------
  ------------------
 1391|  17.0k|							ZVAL_COPY_VALUE(&q->val, &p->val);
  ------------------
  |  | 1416|  17.0k|	do {												\
  |  | 1417|  17.0k|		zval *_z1 = (z);								\
  |  | 1418|  17.0k|		const zval *_z2 = (v);							\
  |  | 1419|  17.0k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  17.0k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  17.0k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  17.0k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  17.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  17.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  17.0k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  17.0k|	do {												\
  |  |  |  | 1408|  17.0k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  17.0k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  17.0k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  17.0k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  17.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  17.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  17.0k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 17.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  17.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 17.0k]
  |  |  ------------------
  ------------------
 1392|  17.0k|							q->h = p->h;
 1393|  17.0k|							nIndex = q->h | ht->nTableMask;
 1394|  17.0k|							q->key = p->key;
 1395|  17.0k|							Z_NEXT(q->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|  17.0k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              							Z_NEXT(q->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  17.0k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  17.0k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1396|  17.0k|							HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(j);
  ------------------
  |  |  470|  17.0k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  17.0k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              							HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(j);
  ------------------
  |  |  460|  17.0k|	(idx)
  ------------------
 1397|  17.0k|							if (UNEXPECTED(ht->nInternalPointer > j && ht->nInternalPointer <= i)) {
  ------------------
  |  |  457|  17.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 17.0k]
  |  |  |  Branch (457:52): [True: 0, False: 17.0k]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1398|      0|								ht->nInternalPointer = j;
 1399|      0|							}
 1400|  17.0k|							q++;
 1401|  17.0k|							j++;
 1402|  17.0k|						}
 1403|   198k|					}
 1404|     64|				} else {
 1405|      1|					uint32_t iter_pos = zend_hash_iterators_lower_pos(ht, i + 1);
 1406|       |
 1407|      5|					while (++i < ht->nNumUsed) {
  ------------------
  |  Branch (1407:13): [True: 4, False: 1]
  ------------------
 1408|      4|						p++;
 1409|      4|						if (EXPECTED(Z_TYPE_INFO(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 1410|      2|							ZVAL_COPY_VALUE(&q->val, &p->val);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1411|      2|							q->h = p->h;
 1412|      2|							nIndex = q->h | ht->nTableMask;
 1413|      2|							q->key = p->key;
 1414|      2|							Z_NEXT(q->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|      2|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              							Z_NEXT(q->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|      2|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      2|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1415|      2|							HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(j);
  ------------------
  |  |  470|      2|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      2|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              							HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(j);
  ------------------
  |  |  460|      2|	(idx)
  ------------------
 1416|      2|							if (UNEXPECTED(ht->nInternalPointer > j && ht->nInternalPointer <= i)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1417|      0|								ht->nInternalPointer = j;
 1418|      0|							}
 1419|      2|							if (UNEXPECTED(i >= iter_pos)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1420|      0|								do {
 1421|      0|									zend_hash_iterators_update(ht, iter_pos, j);
 1422|      0|									iter_pos = zend_hash_iterators_lower_pos(ht, iter_pos + 1);
 1423|      0|								} while (iter_pos < i);
  ------------------
  |  Branch (1423:18): [True: 0, False: 0]
  ------------------
 1424|      0|							}
 1425|      2|							q++;
 1426|      2|							j++;
 1427|      2|						}
 1428|      4|					}
 1429|      1|				}
 1430|     65|				ht->nNumUsed = j;
 1431|     65|				break;
 1432|     65|			}
 1433|  27.3k|			nIndex = p->h | ht->nTableMask;
 1434|  27.3k|			Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|  27.3k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              			Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  27.3k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  27.3k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1435|  27.3k|			HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(i);
  ------------------
  |  |  470|  27.3k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  27.3k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              			HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(i);
  ------------------
  |  |  460|  27.3k|	(idx)
  ------------------
 1436|  27.3k|			p++;
 1437|  27.3k|		} while (++i < ht->nNumUsed);
  ------------------
  |  Branch (1437:12): [True: 27.3k, False: 0]
  ------------------
 1438|       |
 1439|       |		/* Migrate pointer to one past the end of the array to the new one past the end, so that
 1440|       |		 * newly inserted elements are picked up correctly. */
 1441|     65|		if (UNEXPECTED(HT_HAS_ITERATORS(ht))) {
  ------------------
  |  |  457|     65|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 64]
  |  |  ------------------
  ------------------
 1442|      1|			_zend_hash_iterators_update(ht, old_num_used, ht->nNumUsed);
 1443|      1|		}
 1444|     65|	}
 1445|    620|}
zend_hash_packed_del_val:
 1533|    258|{
 1534|    258|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    258|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1535|    258|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    258|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    258|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    258|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1535:2): [True: 258, False: 0]
  |  Branch (1535:2): [True: 0, False: 0]
  |  Branch (1535:2): [True: 5, False: 253]
  |  Branch (1535:2): [True: 253, False: 0]
  ------------------
 1536|    258|	ZEND_ASSERT(HT_IS_PACKED(ht));
  ------------------
  |  |  112|    258|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1536:2): [True: 0, False: 258]
  |  Branch (1536:2): [True: 258, False: 0]
  ------------------
 1537|    258|	_zend_hash_packed_del_val(ht, HT_IDX_TO_HASH(zv - ht->arPacked), zv);
  ------------------
  |  |  460|    258|	(idx)
  ------------------
 1538|    258|}
zend_hash_del_bucket:
 1542|  8.64M|{
 1543|  8.64M|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  8.64M|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1544|  8.64M|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  8.64M|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  8.64M|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  8.64M|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1544:2): [True: 8.64M, False: 0]
  |  Branch (1544:2): [True: 0, False: 0]
  |  Branch (1544:2): [True: 8.64M, False: 0]
  |  Branch (1544:2): [True: 0, False: 0]
  ------------------
 1545|  8.64M|	ZEND_ASSERT(!HT_IS_PACKED(ht));
  ------------------
  |  |  112|  8.64M|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1545:2): [True: 0, False: 8.64M]
  |  Branch (1545:2): [True: 8.64M, False: 0]
  ------------------
 1546|  8.64M|	_zend_hash_del_el(ht, HT_IDX_TO_HASH(p - ht->arData), p);
  ------------------
  |  |  460|  8.64M|	(idx)
  ------------------
 1547|  8.64M|}
zend_hash_del:
 1550|  1.37k|{
 1551|  1.37k|	zend_ulong h;
 1552|  1.37k|	uint32_t nIndex;
 1553|  1.37k|	uint32_t idx;
 1554|  1.37k|	Bucket *p;
 1555|  1.37k|	Bucket *prev = NULL;
 1556|       |
 1557|  1.37k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  1.37k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1558|  1.37k|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  1.37k|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  1.37k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.37k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1558:2): [True: 1.37k, False: 0]
  |  Branch (1558:2): [True: 0, False: 0]
  |  Branch (1558:2): [True: 1.37k, False: 0]
  |  Branch (1558:2): [True: 0, False: 0]
  ------------------
 1559|       |
 1560|  1.37k|	h = zend_string_hash_val(key);
 1561|  1.37k|	nIndex = h | ht->nTableMask;
 1562|       |
 1563|  1.37k|	idx = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  1.37k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  1.37k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1564|  1.38k|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|  1.38k|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (1564:9): [True: 1.38k, False: 5]
  ------------------
 1565|  1.38k|		p = HT_HASH_TO_BUCKET(ht, idx);
  ------------------
  |  |  546|  1.38k|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|  1.38k|	((data) + (idx))
  |  |  ------------------
  ------------------
 1566|  1.38k|		if ((p->key == key) ||
  ------------------
  |  Branch (1566:7): [True: 1.36k, False: 14]
  ------------------
 1567|     14|			(p->h == h &&
  ------------------
  |  Branch (1567:5): [True: 2, False: 12]
  ------------------
 1568|      2|		     p->key &&
  ------------------
  |  Branch (1568:8): [True: 2, False: 0]
  ------------------
 1569|  1.36k|		     zend_string_equal_content(p->key, key))) {
  ------------------
  |  Branch (1569:8): [True: 1, False: 1]
  ------------------
 1570|  1.36k|			zend_string_release(p->key);
 1571|  1.36k|			p->key = NULL;
 1572|  1.36k|			_zend_hash_del_el_ex(ht, idx, p, prev);
 1573|  1.36k|			return SUCCESS;
 1574|  1.36k|		}
 1575|     13|		prev = p;
 1576|     13|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|     13|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1577|     13|	}
 1578|      5|	return FAILURE;
 1579|  1.37k|}
zend_hash_del_ind:
 1582|     19|{
 1583|     19|	zend_ulong h;
 1584|     19|	uint32_t nIndex;
 1585|     19|	uint32_t idx;
 1586|     19|	Bucket *p;
 1587|     19|	Bucket *prev = NULL;
 1588|       |
 1589|     19|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     19|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1590|     19|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|     19|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|     19|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1590:2): [True: 19, False: 0]
  |  Branch (1590:2): [True: 0, False: 0]
  |  Branch (1590:2): [True: 19, False: 0]
  |  Branch (1590:2): [True: 0, False: 0]
  ------------------
 1591|       |
 1592|     19|	h = zend_string_hash_val(key);
 1593|     19|	nIndex = h | ht->nTableMask;
 1594|       |
 1595|     19|	idx = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|     19|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|     19|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1596|     20|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|     20|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (1596:9): [True: 13, False: 7]
  ------------------
 1597|     13|		p = HT_HASH_TO_BUCKET(ht, idx);
  ------------------
  |  |  546|     13|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|     13|	((data) + (idx))
  |  |  ------------------
  ------------------
 1598|     13|		if ((p->key == key) ||
  ------------------
  |  Branch (1598:7): [True: 11, False: 2]
  ------------------
 1599|      2|			(p->h == h &&
  ------------------
  |  Branch (1599:5): [True: 1, False: 1]
  ------------------
 1600|      1|		     p->key &&
  ------------------
  |  Branch (1600:8): [True: 1, False: 0]
  ------------------
 1601|     12|		     zend_string_equal_content(p->key, key))) {
  ------------------
  |  Branch (1601:8): [True: 1, False: 0]
  ------------------
 1602|     12|			if (Z_TYPE(p->val) == IS_INDIRECT) {
  ------------------
  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(p->val) == IS_INDIRECT) {
  ------------------
  |  |  629|     12|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1602:8): [True: 6, False: 6]
  ------------------
 1603|      6|				zval *data = Z_INDIRECT(p->val);
  ------------------
  |  | 1043|      6|#define Z_INDIRECT(zval)			(zval).value.zv
  ------------------
 1604|       |
 1605|      6|				if (UNEXPECTED(Z_TYPE_P(data) == IS_UNDEF)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 1606|      0|					return FAILURE;
 1607|      6|				} else {
 1608|      6|					if (ht->pDestructor) {
  ------------------
  |  Branch (1608:10): [True: 6, False: 0]
  ------------------
 1609|      6|						zval tmp;
 1610|      6|						ZVAL_COPY_VALUE(&tmp, data);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1611|      6|						ZVAL_UNDEF(data);
  ------------------
  |  | 1055|      6|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      6|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1612|      6|						ht->pDestructor(&tmp);
 1613|      6|					} else {
 1614|      0|						ZVAL_UNDEF(data);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1615|      0|					}
 1616|      6|					HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      6|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              					HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      6|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
 1617|      6|				}
 1618|      6|			} else {
 1619|      6|				zend_string_release(p->key);
 1620|      6|				p->key = NULL;
 1621|      6|				_zend_hash_del_el_ex(ht, idx, p, prev);
 1622|      6|			}
 1623|     12|			return SUCCESS;
 1624|     12|		}
 1625|      1|		prev = p;
 1626|      1|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|      1|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1627|      1|	}
 1628|      7|	return FAILURE;
 1629|     19|}
zend_hash_str_del:
 1677|    734|{
 1678|    734|	zend_ulong h;
 1679|    734|	uint32_t nIndex;
 1680|    734|	uint32_t idx;
 1681|    734|	Bucket *p;
 1682|    734|	Bucket *prev = NULL;
 1683|       |
 1684|    734|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    734|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1685|    734|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    734|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    734|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    734|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1685:2): [True: 734, False: 0]
  |  Branch (1685:2): [True: 0, False: 0]
  |  Branch (1685:2): [True: 734, False: 0]
  |  Branch (1685:2): [True: 0, False: 0]
  ------------------
 1686|       |
 1687|    734|	h = zend_inline_hash_func(str, len);
 1688|    734|	nIndex = h | ht->nTableMask;
 1689|       |
 1690|    734|	idx = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|    734|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    734|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1691|    752|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|    752|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (1691:9): [True: 744, False: 8]
  ------------------
 1692|    744|		p = HT_HASH_TO_BUCKET(ht, idx);
  ------------------
  |  |  546|    744|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|    744|	((data) + (idx))
  |  |  ------------------
  ------------------
 1693|    744|		if ((p->h == h)
  ------------------
  |  Branch (1693:7): [True: 726, False: 18]
  ------------------
 1694|    726|			 && p->key
  ------------------
  |  Branch (1694:8): [True: 726, False: 0]
  ------------------
 1695|    726|			 && zend_string_equals_cstr(p->key, str, len)) {
  ------------------
  |  Branch (1695:8): [True: 726, False: 0]
  ------------------
 1696|    726|			zend_string_release(p->key);
 1697|    726|			p->key = NULL;
 1698|    726|			_zend_hash_del_el_ex(ht, idx, p, prev);
 1699|    726|			return SUCCESS;
 1700|    726|		}
 1701|     18|		prev = p;
 1702|     18|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|     18|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1703|     18|	}
 1704|      8|	return FAILURE;
 1705|    734|}
zend_hash_index_del:
 1708|    203|{
 1709|    203|	uint32_t nIndex;
 1710|    203|	uint32_t idx;
 1711|    203|	Bucket *p;
 1712|    203|	Bucket *prev = NULL;
 1713|       |
 1714|    203|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    203|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1715|    203|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    203|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    203|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    203|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1715:2): [True: 203, False: 0]
  |  Branch (1715:2): [True: 0, False: 0]
  |  Branch (1715:2): [True: 203, False: 0]
  |  Branch (1715:2): [True: 0, False: 0]
  ------------------
 1716|       |
 1717|    203|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|    203|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    203|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    203|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 62, False: 141]
  |  |  ------------------
  ------------------
 1718|     62|		if (h < ht->nNumUsed) {
  ------------------
  |  Branch (1718:7): [True: 59, False: 3]
  ------------------
 1719|     59|			zval *zv = ht->arPacked + h;
 1720|     59|			if (Z_TYPE_P(zv) != IS_UNDEF) {
  ------------------
  |  |  669|     59|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     59|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) != IS_UNDEF) {
  ------------------
  |  |  606|     59|#define IS_UNDEF					0
  ------------------
  |  Branch (1720:8): [True: 58, False: 1]
  ------------------
 1721|     58|				_zend_hash_packed_del_val(ht, HT_IDX_TO_HASH(h), zv);
  ------------------
  |  |  460|     58|	(idx)
  ------------------
 1722|     58|				return SUCCESS;
 1723|     58|			}
 1724|     59|		}
 1725|      4|		return FAILURE;
 1726|     62|	}
 1727|    141|	nIndex = h | ht->nTableMask;
 1728|       |
 1729|    141|	idx = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|    141|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    141|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1730|    151|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|    151|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (1730:9): [True: 147, False: 4]
  ------------------
 1731|    147|		p = HT_HASH_TO_BUCKET(ht, idx);
  ------------------
  |  |  546|    147|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|    147|	((data) + (idx))
  |  |  ------------------
  ------------------
 1732|    147|		if ((p->h == h) && (p->key == NULL)) {
  ------------------
  |  Branch (1732:7): [True: 137, False: 10]
  |  Branch (1732:22): [True: 137, False: 0]
  ------------------
 1733|    137|			_zend_hash_del_el_ex(ht, idx, p, prev);
 1734|    137|			return SUCCESS;
 1735|    137|		}
 1736|     10|		prev = p;
 1737|     10|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|     10|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1738|     10|	}
 1739|      4|	return FAILURE;
 1740|    141|}
zend_hash_destroy:
 1743|   245k|{
 1744|   245k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|   245k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1745|   245k|	HT_ASSERT(ht, GC_REFCOUNT(ht) <= 1);
  ------------------
  |  |   37|   245k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  ------------------
  |  |  |  |  112|   245k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (1745:2): [True: 245k, False: 0]
  |  Branch (1745:2): [True: 0, False: 0]
  |  Branch (1745:2): [True: 245k, False: 0]
  |  Branch (1745:2): [True: 0, False: 0]
  ------------------
 1746|       |
 1747|   245k|	if (ht->nNumUsed) {
  ------------------
  |  Branch (1747:6): [True: 28.6k, False: 216k]
  ------------------
 1748|  28.6k|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  28.6k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  28.6k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  28.6k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 177, False: 28.5k]
  |  |  ------------------
  ------------------
 1749|    177|			if (ht->pDestructor) {
  ------------------
  |  Branch (1749:8): [True: 171, False: 6]
  ------------------
 1750|    171|				zval *zv = ht->arPacked;
 1751|    171|				zval *end = zv + ht->nNumUsed;
 1752|       |
 1753|    171|				SET_INCONSISTENT(HT_IS_DESTROYING);
  ------------------
  |  |   75|    171|#define SET_INCONSISTENT(n) do { \
  |  |   76|    171|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    171|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    171|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|    171|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|    171|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 171]
  |  |  ------------------
  ------------------
 1754|    171|				if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|    171|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 169, False: 2]
  |  |  ------------------
  ------------------
 1755|    197|					do {
 1756|    197|						ht->pDestructor(zv);
 1757|    197|					} while (++zv != end);
  ------------------
  |  Branch (1757:15): [True: 28, False: 169]
  ------------------
 1758|    169|				} else {
 1759|      8|					do {
 1760|      8|						if (EXPECTED(Z_TYPE_P(zv) != IS_UNDEF)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 3]
  |  |  ------------------
  ------------------
 1761|      5|							ht->pDestructor(zv);
 1762|      5|						}
 1763|      8|					} while (++zv != end);
  ------------------
  |  Branch (1763:15): [True: 6, False: 2]
  ------------------
 1764|      2|				}
 1765|    171|				SET_INCONSISTENT(HT_DESTROYED);
  ------------------
  |  |   75|    171|#define SET_INCONSISTENT(n) do { \
  |  |   76|    171|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    171|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    171|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|    171|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|    171|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 171]
  |  |  ------------------
  ------------------
 1766|    171|			}
 1767|    177|			zend_hash_iterators_remove(ht);
 1768|  28.5k|		} else {
 1769|  28.5k|			Bucket *p = ht->arData;
 1770|  28.5k|			Bucket *end = p + ht->nNumUsed;
 1771|       |
 1772|  28.5k|			if (ht->pDestructor) {
  ------------------
  |  Branch (1772:8): [True: 965, False: 27.5k]
  ------------------
 1773|    965|				SET_INCONSISTENT(HT_IS_DESTROYING);
  ------------------
  |  |   75|    965|#define SET_INCONSISTENT(n) do { \
  |  |   76|    965|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    965|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    965|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|    965|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|    965|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 965]
  |  |  ------------------
  ------------------
 1774|       |
 1775|    965|				if (HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|    965|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|    965|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|    965|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|    965|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  |  |  |  Branch (68:2): [True: 438, False: 527]
  |  |  ------------------
  ------------------
 1776|    438|					if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|    438|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 438, False: 0]
  |  |  ------------------
  ------------------
 1777|    909|						do {
 1778|    909|							ht->pDestructor(&p->val);
 1779|    909|						} while (++p != end);
  ------------------
  |  Branch (1779:16): [True: 471, False: 438]
  ------------------
 1780|    438|					} else {
 1781|      0|						do {
 1782|      0|							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1783|      0|								ht->pDestructor(&p->val);
 1784|      0|							}
 1785|      0|						} while (++p != end);
  ------------------
  |  Branch (1785:16): [True: 0, False: 0]
  ------------------
 1786|      0|					}
 1787|    527|				} else if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|    527|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 527, False: 0]
  |  |  ------------------
  ------------------
 1788|    675|					do {
 1789|    675|						ht->pDestructor(&p->val);
 1790|    675|						if (EXPECTED(p->key)) {
  ------------------
  |  |  456|    675|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 674, False: 1]
  |  |  ------------------
  ------------------
 1791|    674|							zend_string_release(p->key);
 1792|    674|						}
 1793|    675|					} while (++p != end);
  ------------------
  |  Branch (1793:15): [True: 148, False: 527]
  ------------------
 1794|    527|				} else {
 1795|      0|					do {
 1796|      0|						if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1797|      0|							ht->pDestructor(&p->val);
 1798|      0|							if (EXPECTED(p->key)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1799|      0|								zend_string_release(p->key);
 1800|      0|							}
 1801|      0|						}
 1802|      0|					} while (++p != end);
  ------------------
  |  Branch (1802:15): [True: 0, False: 0]
  ------------------
 1803|      0|				}
 1804|       |
 1805|    965|				SET_INCONSISTENT(HT_DESTROYED);
  ------------------
  |  |   75|    965|#define SET_INCONSISTENT(n) do { \
  |  |   76|    965|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    965|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|    965|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|    965|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|    965|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 965]
  |  |  ------------------
  ------------------
 1806|  27.5k|			} else {
 1807|  27.5k|				if (!HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|  27.5k|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|  27.5k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|  27.5k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|  27.5k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  ------------------
  |  Branch (1807:9): [True: 498, False: 27.0k]
  ------------------
 1808|    707|					do {
 1809|    707|						if (EXPECTED(p->key)) {
  ------------------
  |  |  456|    707|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 706, False: 1]
  |  |  ------------------
  ------------------
 1810|    706|							zend_string_release(p->key);
 1811|    706|						}
 1812|    707|					} while (++p != end);
  ------------------
  |  Branch (1812:15): [True: 209, False: 498]
  ------------------
 1813|    498|				}
 1814|  27.5k|			}
 1815|  28.5k|			zend_hash_iterators_remove(ht);
 1816|  28.5k|		}
 1817|   216k|	} else if (EXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |  456|   216k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 214k, False: 2.03k]
  |  |  ------------------
  ------------------
 1818|   214k|		return;
 1819|   214k|	}
 1820|  30.7k|	pefree(HT_GET_DATA_ADDR(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|  30.7k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  30.7k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  30.7k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  30.7k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  30.7k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  30.7k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 3, False: 30.7k]
  |  |  ------------------
  ------------------
 1821|  30.7k|}
zend_array_destroy:
 1824|   200k|{
 1825|   200k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|   200k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1826|   200k|	HT_ASSERT(ht, GC_REFCOUNT(ht) <= 1);
  ------------------
  |  |   37|   200k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  ------------------
  |  |  |  |  112|   200k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (1826:2): [True: 200k, False: 0]
  |  Branch (1826:2): [True: 0, False: 0]
  |  Branch (1826:2): [True: 200k, False: 0]
  |  Branch (1826:2): [True: 0, False: 0]
  ------------------
 1827|       |
 1828|       |	/* break possible cycles */
 1829|   200k|	GC_REMOVE_FROM_BUFFER(ht);
  ------------------
  |  |   76|   200k|#define GC_REMOVE_FROM_BUFFER(p) do { \
  |  |   77|   200k|		zend_refcounted *_p = (zend_refcounted*)(p); \
  |  |   78|   200k|		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  775|   200k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  759|   200k|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |  |  Branch (78:7): [True: 131k, False: 69.2k]
  |  |  ------------------
  |  |   79|   131k|			gc_remove_from_buffer(_p); \
  |  |   80|   131k|		} \
  |  |   81|   200k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (81:11): [Folded, False: 200k]
  |  |  ------------------
  ------------------
 1830|   200k|	GC_TYPE_INFO(ht) = GC_NULL /*???| (GC_WHITE << 16)*/;
  ------------------
  |  |  775|   200k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ht) = GC_NULL /*???| (GC_WHITE << 16)*/;
  ------------------
  |  |  805|   200k|#define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  607|   200k|#define IS_NULL						1
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|   200k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_NULL						(IS_NULL         | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|   200k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
 1831|       |
 1832|   200k|	if (ht->nNumUsed) {
  ------------------
  |  Branch (1832:6): [True: 47.2k, False: 153k]
  ------------------
 1833|       |		/* In some rare cases destructors of regular arrays may be changed */
 1834|  47.2k|		if (UNEXPECTED(ht->pDestructor != ZVAL_PTR_DTOR)) {
  ------------------
  |  |  457|  47.2k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 47.1k]
  |  |  ------------------
  ------------------
 1835|     10|			zend_hash_destroy(ht);
 1836|     10|			goto free_ht;
 1837|     10|		}
 1838|       |
 1839|  47.1k|		SET_INCONSISTENT(HT_IS_DESTROYING);
  ------------------
  |  |   75|  47.1k|#define SET_INCONSISTENT(n) do { \
  |  |   76|  47.1k|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|  47.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|  47.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|  47.1k|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|  47.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 47.1k]
  |  |  ------------------
  ------------------
 1840|       |
 1841|  47.1k|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  47.1k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  47.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  47.1k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 24.6k, False: 22.5k]
  |  |  ------------------
  ------------------
 1842|  24.6k|			zval *zv = ht->arPacked;
 1843|  24.6k|			zval *end = zv + ht->nNumUsed;
 1844|       |
 1845|  2.30M|			do {
 1846|  2.30M|				i_zval_ptr_dtor(zv);
 1847|  2.30M|			} while (++zv != end);
  ------------------
  |  Branch (1847:13): [True: 2.28M, False: 24.6k]
  ------------------
 1848|  24.6k|		} else {
 1849|  22.5k|			Bucket *p = ht->arData;
 1850|  22.5k|			Bucket *end = p + ht->nNumUsed;
 1851|       |
 1852|  22.5k|			if (HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|  22.5k|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|  22.5k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|  22.5k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|  22.5k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  |  |  |  Branch (68:2): [True: 12.5k, False: 9.99k]
  |  |  ------------------
  ------------------
 1853|  52.9k|				do {
 1854|  52.9k|					i_zval_ptr_dtor(&p->val);
 1855|  52.9k|				} while (++p != end);
  ------------------
  |  Branch (1855:14): [True: 40.4k, False: 12.5k]
  ------------------
 1856|  12.5k|			} else if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|  9.99k|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 9.99k, False: 0]
  |  |  ------------------
  ------------------
 1857|  12.6k|				do {
 1858|  12.6k|					i_zval_ptr_dtor(&p->val);
 1859|  12.6k|					if (EXPECTED(p->key)) {
  ------------------
  |  |  456|  12.6k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12.1k, False: 461]
  |  |  ------------------
  ------------------
 1860|  12.1k|						zend_string_release_ex(p->key, 0);
 1861|  12.1k|					}
 1862|  12.6k|				} while (++p != end);
  ------------------
  |  Branch (1862:14): [True: 2.64k, False: 9.99k]
  ------------------
 1863|  9.99k|			} else {
 1864|      0|				do {
 1865|      0|					if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1866|      0|						i_zval_ptr_dtor(&p->val);
 1867|      0|						if (EXPECTED(p->key)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1868|      0|							zend_string_release_ex(p->key, 0);
 1869|      0|						}
 1870|      0|					}
 1871|      0|				} while (++p != end);
  ------------------
  |  Branch (1871:14): [True: 0, False: 0]
  ------------------
 1872|      0|			}
 1873|  22.5k|		}
 1874|   153k|	} else if (EXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |  456|   153k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 140k, False: 12.4k]
  |  |  ------------------
  ------------------
 1875|   140k|		goto free_ht;
 1876|   140k|	}
 1877|  59.6k|	SET_INCONSISTENT(HT_DESTROYED);
  ------------------
  |  |   75|  59.6k|#define SET_INCONSISTENT(n) do { \
  |  |   76|  59.6k|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|  59.6k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|  59.6k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|  59.6k|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|  59.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 59.6k]
  |  |  ------------------
  ------------------
 1878|  59.6k|	efree(HT_GET_DATA_ADDR(ht));
  ------------------
  |  |  154|  59.6k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  59.6k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  59.6k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  59.6k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  59.6k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1879|   200k|free_ht:
 1880|   200k|	zend_hash_iterators_remove(ht);
 1881|       |	FREE_HASHTABLE(ht);
  ------------------
  |  |  235|   200k|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|   200k|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|   200k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|   200k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|   200k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|   200k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|   200k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1882|   200k|}
zend_hash_clean:
 1885|  71.8k|{
 1886|  71.8k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  71.8k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1887|  71.8k|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  71.8k|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  71.8k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  71.8k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1887:2): [True: 71.8k, False: 0]
  |  Branch (1887:2): [True: 0, False: 0]
  |  Branch (1887:2): [True: 71.8k, False: 0]
  |  Branch (1887:2): [True: 0, False: 0]
  ------------------
 1888|       |
 1889|  71.8k|	if (ht->nNumUsed) {
  ------------------
  |  Branch (1889:6): [True: 2.46k, False: 69.3k]
  ------------------
 1890|  2.46k|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  2.46k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  2.46k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  2.46k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1, False: 2.46k]
  |  |  ------------------
  ------------------
 1891|      1|			zval *zv = ht->arPacked;
 1892|      1|			zval *end = zv + ht->nNumUsed;
 1893|       |
 1894|      1|			if (ht->pDestructor) {
  ------------------
  |  Branch (1894:8): [True: 0, False: 1]
  ------------------
 1895|      0|				if (HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|      0|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|      0|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  |  |  |  Branch (68:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1896|      0|					if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|      0|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1897|      0|						do {
 1898|      0|							ht->pDestructor(zv);
 1899|      0|						} while (++zv != end);
  ------------------
  |  Branch (1899:16): [True: 0, False: 0]
  ------------------
 1900|      0|					} else {
 1901|      0|						do {
 1902|      0|							if (EXPECTED(Z_TYPE_P(zv) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1903|      0|								ht->pDestructor(zv);
 1904|      0|							}
 1905|      0|						} while (++zv != end);
  ------------------
  |  Branch (1905:16): [True: 0, False: 0]
  ------------------
 1906|      0|					}
 1907|      0|				}
 1908|      0|			}
 1909|  2.46k|		} else {
 1910|  2.46k|			Bucket *p = ht->arData;
 1911|  2.46k|			Bucket *end = p + ht->nNumUsed;
 1912|       |
 1913|  2.46k|			if (ht->pDestructor) {
  ------------------
  |  Branch (1913:8): [True: 24, False: 2.43k]
  ------------------
 1914|     24|				if (HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|     24|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|     24|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|     24|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|     24|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  |  |  |  Branch (68:2): [True: 24, False: 0]
  |  |  ------------------
  ------------------
 1915|     24|					if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|     24|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 24, False: 0]
  |  |  ------------------
  ------------------
 1916|     27|						do {
 1917|     27|							ht->pDestructor(&p->val);
 1918|     27|						} while (++p != end);
  ------------------
  |  Branch (1918:16): [True: 3, False: 24]
  ------------------
 1919|     24|					} else {
 1920|      0|						do {
 1921|      0|							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1922|      0|								ht->pDestructor(&p->val);
 1923|      0|							}
 1924|      0|						} while (++p != end);
  ------------------
  |  Branch (1924:16): [True: 0, False: 0]
  ------------------
 1925|      0|					}
 1926|     24|				} else if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|      0|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1927|      0|					do {
 1928|      0|						ht->pDestructor(&p->val);
 1929|      0|						if (EXPECTED(p->key)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1930|      0|							zend_string_release(p->key);
 1931|      0|						}
 1932|      0|					} while (++p != end);
  ------------------
  |  Branch (1932:15): [True: 0, False: 0]
  ------------------
 1933|      0|				} else {
 1934|      0|					do {
 1935|      0|						if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1936|      0|							ht->pDestructor(&p->val);
 1937|      0|							if (EXPECTED(p->key)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1938|      0|								zend_string_release(p->key);
 1939|      0|							}
 1940|      0|						}
 1941|      0|					} while (++p != end);
  ------------------
  |  Branch (1941:15): [True: 0, False: 0]
  ------------------
 1942|      0|				}
 1943|  2.43k|			} else {
 1944|  2.43k|				if (!HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|  2.43k|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|  2.43k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|  2.43k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|  2.43k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  ------------------
  |  Branch (1944:9): [True: 1.42k, False: 1.01k]
  ------------------
 1945|  2.02k|					do {
 1946|  2.02k|						if (EXPECTED(p->key)) {
  ------------------
  |  |  456|  2.02k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.02k, False: 0]
  |  |  ------------------
  ------------------
 1947|  2.02k|							zend_string_release(p->key);
 1948|  2.02k|						}
 1949|  2.02k|					} while (++p != end);
  ------------------
  |  Branch (1949:15): [True: 599, False: 1.42k]
  ------------------
 1950|  1.42k|				}
 1951|  2.43k|			}
 1952|  2.46k|			HT_HASH_RESET(ht);
  ------------------
  |  |  507|  2.46k|# define HT_HASH_RESET(ht) do { \
  |  |  508|  2.46k|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|  2.46k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|  2.46k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|  2.46k|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|  2.46k|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|  2.46k|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|  2.46k|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|  2.46k|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|  2.46k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|   310k|		do { \
  |  |  514|   310k|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|   310k|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|   310k|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|   310k|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|   310k|			p += 64; \
  |  |  519|   310k|			size -= 64; \
  |  |  520|   310k|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 307k, False: 2.46k]
  |  |  ------------------
  |  |  521|  2.46k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 2.46k]
  |  |  ------------------
  ------------------
  |  Branch (1952:4): [True: 0, False: 2.46k]
  |  Branch (1952:4): [True: 0, False: 0]
  |  Branch (1952:4): [True: 2.46k, False: 0]
  |  Branch (1952:4): [True: 2.46k, False: 0]
  ------------------
 1953|  2.46k|		}
 1954|  2.46k|	}
 1955|  71.8k|	ht->nNumUsed = 0;
 1956|  71.8k|	ht->nNumOfElements = 0;
 1957|       |	ht->nNextFreeElement = ZEND_LONG_MIN;
  ------------------
  |  |   35|  71.8k|# define ZEND_LONG_MIN INT64_MIN
  ------------------
 1958|  71.8k|	ht->nInternalPointer = 0;
 1959|  71.8k|}
zend_symtable_clean:
 1962|    115|{
 1963|    115|	Bucket *p, *end;
 1964|       |
 1965|    115|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    115|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1966|    115|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    115|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    115|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    115|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1966:2): [True: 115, False: 0]
  |  Branch (1966:2): [True: 0, False: 0]
  |  Branch (1966:2): [True: 115, False: 0]
  |  Branch (1966:2): [True: 0, False: 0]
  ------------------
 1967|       |
 1968|    115|	if (ht->nNumUsed) {
  ------------------
  |  Branch (1968:6): [True: 105, False: 10]
  ------------------
 1969|    105|		ZEND_ASSERT(!HT_IS_PACKED(ht));
  ------------------
  |  |  112|    105|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1969:3): [True: 0, False: 105]
  |  Branch (1969:3): [True: 105, False: 0]
  ------------------
 1970|    105|		p = ht->arData;
 1971|    105|		end = p + ht->nNumUsed;
 1972|    105|		if (HT_HAS_STATIC_KEYS_ONLY(ht)) {
  ------------------
  |  |   68|    105|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|    105|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|    105|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|    105|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  |  |  |  Branch (68:2): [True: 94, False: 11]
  |  |  ------------------
  ------------------
 1973|    180|			do {
 1974|    180|				i_zval_ptr_dtor(&p->val);
 1975|    180|			} while (++p != end);
  ------------------
  |  Branch (1975:13): [True: 86, False: 94]
  ------------------
 1976|     94|		} else if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|     11|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 11, False: 0]
  |  |  ------------------
  ------------------
 1977|     28|			do {
 1978|     28|				i_zval_ptr_dtor(&p->val);
 1979|     28|				if (EXPECTED(p->key)) {
  ------------------
  |  |  456|     28|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 28, False: 0]
  |  |  ------------------
  ------------------
 1980|     28|					zend_string_release(p->key);
 1981|     28|				}
 1982|     28|			} while (++p != end);
  ------------------
  |  Branch (1982:13): [True: 17, False: 11]
  ------------------
 1983|     11|		} else {
 1984|      0|			do {
 1985|      0|				if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1986|      0|					i_zval_ptr_dtor(&p->val);
 1987|      0|					if (EXPECTED(p->key)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1988|      0|						zend_string_release(p->key);
 1989|      0|					}
 1990|      0|				}
 1991|      0|			} while (++p != end);
  ------------------
  |  Branch (1991:13): [True: 0, False: 0]
  ------------------
 1992|      0|		}
 1993|    105|		HT_HASH_RESET(ht);
  ------------------
  |  |  507|    105|# define HT_HASH_RESET(ht) do { \
  |  |  508|    105|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|    105|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    105|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|    105|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|    105|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|    105|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|    105|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|    105|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|    105|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|    105|		do { \
  |  |  514|    105|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|    105|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|    105|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|    105|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|    105|			p += 64; \
  |  |  519|    105|			size -= 64; \
  |  |  520|    105|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 0, False: 105]
  |  |  ------------------
  |  |  521|    105|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 105]
  |  |  ------------------
  ------------------
  |  Branch (1993:3): [True: 0, False: 105]
  |  Branch (1993:3): [True: 0, False: 0]
  |  Branch (1993:3): [True: 105, False: 0]
  |  Branch (1993:3): [True: 105, False: 0]
  ------------------
 1994|    105|	}
 1995|    115|	ht->nNumUsed = 0;
 1996|    115|	ht->nNumOfElements = 0;
 1997|       |	ht->nNextFreeElement = ZEND_LONG_MIN;
  ------------------
  |  |   35|    115|# define ZEND_LONG_MIN INT64_MIN
  ------------------
 1998|    115|	ht->nInternalPointer = 0;
 1999|    115|}
zend_hash_graceful_reverse_destroy:
 2031|  67.1k|{
 2032|  67.1k|	uint32_t idx;
 2033|       |
 2034|  67.1k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  67.1k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2035|  67.1k|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  67.1k|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  67.1k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  67.1k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2035:2): [True: 67.1k, False: 0]
  |  Branch (2035:2): [True: 0, False: 0]
  |  Branch (2035:2): [True: 67.1k, False: 0]
  |  Branch (2035:2): [True: 0, False: 0]
  ------------------
 2036|       |
 2037|  67.1k|	idx = ht->nNumUsed;
 2038|  67.1k|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  67.1k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  67.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  67.1k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 48, False: 67.1k]
  |  |  ------------------
  ------------------
 2039|     48|		zval *zv = ht->arPacked + ht->nNumUsed;
 2040|       |
 2041|    753|		while (idx > 0) {
  ------------------
  |  Branch (2041:10): [True: 705, False: 48]
  ------------------
 2042|    705|			idx--;
 2043|    705|			zv--;
 2044|    705|			if (UNEXPECTED(Z_TYPE_P(zv) == IS_UNDEF)) continue;
  ------------------
  |  |  457|    705|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 20, False: 685]
  |  |  ------------------
  ------------------
 2045|    685|			_zend_hash_packed_del_val(ht, HT_IDX_TO_HASH(idx), zv);
  ------------------
  |  |  460|    685|	(idx)
  ------------------
 2046|    685|		}
 2047|  67.1k|	} else {
 2048|  67.1k|		Bucket *p = ht->arData + ht->nNumUsed;
 2049|       |
 2050|   204k|		while (idx > 0) {
  ------------------
  |  Branch (2050:10): [True: 137k, False: 67.1k]
  ------------------
 2051|   137k|			idx--;
 2052|   137k|			p--;
 2053|   137k|			if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|   137k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 307, False: 137k]
  |  |  ------------------
  ------------------
 2054|   137k|			_zend_hash_del_el(ht, HT_IDX_TO_HASH(idx), p);
  ------------------
  |  |  460|   137k|	(idx)
  ------------------
 2055|   137k|		}
 2056|  67.1k|	}
 2057|       |
 2058|  67.1k|	if (!(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |   52|  67.1k|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	if (!(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |   44|  67.1k|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  |  Branch (2058:6): [True: 33.6k, False: 33.5k]
  ------------------
 2059|  33.6k|		pefree(HT_GET_DATA_ADDR(ht), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|  33.6k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  33.6k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  33.6k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  33.6k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  33.6k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  33.6k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 33.6k]
  |  |  ------------------
  ------------------
 2060|  33.6k|	}
 2061|       |
 2062|  67.1k|	SET_INCONSISTENT(HT_DESTROYED);
  ------------------
  |  |   75|  67.1k|#define SET_INCONSISTENT(n) do { \
  |  |   76|  67.1k|		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|  67.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   52|  67.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               		HT_FLAGS(ht) = (HT_FLAGS(ht) & ~HASH_FLAG_CONSISTENCY) | (n); \
  |  |  ------------------
  |  |  |  |   42|  67.1k|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  |  |  ------------------
  |  |   77|  67.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 67.1k]
  |  |  ------------------
  ------------------
 2063|  67.1k|}
zend_hash_apply:
 2075|      8|{
 2076|      8|	uint32_t idx;
 2077|      8|	int result;
 2078|       |
 2079|      8|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|      8|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2080|      8|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      8|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      8|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      8|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 6, False: 2]
  |  |  ------------------
  ------------------
 2081|     14|		for (idx = 0; idx < ht->nNumUsed; idx++) {
  ------------------
  |  Branch (2081:17): [True: 8, False: 6]
  ------------------
 2082|      8|			zval *zv = ht->arPacked + idx;
 2083|       |
 2084|      8|			if (UNEXPECTED(Z_TYPE_P(zv) == IS_UNDEF)) continue;
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 2085|      8|			result = apply_func(zv);
 2086|       |
 2087|      8|			if (result & ZEND_HASH_APPLY_REMOVE) {
  ------------------
  |  |  149|      8|#define ZEND_HASH_APPLY_REMOVE				1<<0
  ------------------
  |  Branch (2087:8): [True: 0, False: 8]
  ------------------
 2088|      0|				HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|      0|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|      0|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2088:5): [True: 0, False: 0]
  |  Branch (2088:5): [True: 0, False: 0]
  |  Branch (2088:5): [True: 0, False: 0]
  |  Branch (2088:5): [True: 0, False: 0]
  ------------------
 2089|      0|				_zend_hash_packed_del_val(ht, HT_IDX_TO_HASH(idx), zv);
  ------------------
  |  |  460|      0|	(idx)
  ------------------
 2090|      0|			}
 2091|      8|			if (result & ZEND_HASH_APPLY_STOP) {
  ------------------
  |  |  150|      8|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
  |  Branch (2091:8): [True: 0, False: 8]
  ------------------
 2092|      0|				break;
 2093|      0|			}
 2094|      8|		}
 2095|      6|	} else {
 2096|     28|		for (idx = 0; idx < ht->nNumUsed; idx++) {
  ------------------
  |  Branch (2096:17): [True: 26, False: 2]
  ------------------
 2097|     26|			Bucket *p = ht->arData + idx;
 2098|       |
 2099|     26|			if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  ------------------
  ------------------
 2100|     26|			result = apply_func(&p->val);
 2101|       |
 2102|     26|			if (result & ZEND_HASH_APPLY_REMOVE) {
  ------------------
  |  |  149|     26|#define ZEND_HASH_APPLY_REMOVE				1<<0
  ------------------
  |  Branch (2102:8): [True: 0, False: 26]
  ------------------
 2103|      0|				HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|      0|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|      0|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2103:5): [True: 0, False: 0]
  |  Branch (2103:5): [True: 0, False: 0]
  |  Branch (2103:5): [True: 0, False: 0]
  |  Branch (2103:5): [True: 0, False: 0]
  ------------------
 2104|      0|				_zend_hash_del_el(ht, HT_IDX_TO_HASH(idx), p);
  ------------------
  |  |  460|      0|	(idx)
  ------------------
 2105|      0|			}
 2106|     26|			if (result & ZEND_HASH_APPLY_STOP) {
  ------------------
  |  |  150|     26|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
  |  Branch (2106:8): [True: 0, False: 26]
  ------------------
 2107|      0|				break;
 2108|      0|			}
 2109|     26|		}
 2110|      2|	}
 2111|      8|}
zend_hash_reverse_apply:
 2208|  34.1k|{
 2209|  34.1k|	uint32_t idx;
 2210|  34.1k|	int result;
 2211|       |
 2212|  34.1k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  34.1k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2213|       |
 2214|  34.1k|	idx = ht->nNumUsed;
 2215|  34.1k|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  34.1k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  34.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  34.1k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 34.1k]
  |  |  ------------------
  ------------------
 2216|      0|		zval *zv;
 2217|       |
 2218|      0|		while (idx > 0) {
  ------------------
  |  Branch (2218:10): [True: 0, False: 0]
  ------------------
 2219|      0|			idx--;
 2220|      0|			zv = ht->arPacked + idx;
 2221|      0|			if (UNEXPECTED(Z_TYPE_P(zv) == IS_UNDEF)) continue;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2222|       |
 2223|      0|			result = apply_func(zv);
 2224|       |
 2225|      0|			if (result & ZEND_HASH_APPLY_REMOVE) {
  ------------------
  |  |  149|      0|#define ZEND_HASH_APPLY_REMOVE				1<<0
  ------------------
  |  Branch (2225:8): [True: 0, False: 0]
  ------------------
 2226|      0|				HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|      0|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|      0|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2226:5): [True: 0, False: 0]
  |  Branch (2226:5): [True: 0, False: 0]
  |  Branch (2226:5): [True: 0, False: 0]
  |  Branch (2226:5): [True: 0, False: 0]
  ------------------
 2227|      0|				_zend_hash_packed_del_val(ht, HT_IDX_TO_HASH(idx), zv);
  ------------------
  |  |  460|      0|	(idx)
  ------------------
 2228|      0|			}
 2229|      0|			if (result & ZEND_HASH_APPLY_STOP) {
  ------------------
  |  |  150|      0|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
  |  Branch (2229:8): [True: 0, False: 0]
  ------------------
 2230|      0|				break;
 2231|      0|			}
 2232|      0|		}
 2233|  34.1k|	} else {
 2234|  34.1k|		Bucket *p;
 2235|       |
 2236|   175k|		while (idx > 0) {
  ------------------
  |  Branch (2236:10): [True: 140k, False: 34.1k]
  ------------------
 2237|   140k|			idx--;
 2238|   140k|			p = ht->arData + idx;
 2239|   140k|			if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|   140k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 334, False: 140k]
  |  |  ------------------
  ------------------
 2240|       |
 2241|   140k|			result = apply_func(&p->val);
 2242|       |
 2243|   140k|			if (result & ZEND_HASH_APPLY_REMOVE) {
  ------------------
  |  |  149|   140k|#define ZEND_HASH_APPLY_REMOVE				1<<0
  ------------------
  |  Branch (2243:8): [True: 674, False: 139k]
  ------------------
 2244|    674|				HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    674|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    674|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    674|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2244:5): [True: 674, False: 0]
  |  Branch (2244:5): [True: 0, False: 0]
  |  Branch (2244:5): [True: 674, False: 0]
  |  Branch (2244:5): [True: 0, False: 0]
  ------------------
 2245|    674|				_zend_hash_del_el(ht, HT_IDX_TO_HASH(idx), p);
  ------------------
  |  |  460|    674|	(idx)
  ------------------
 2246|    674|			}
 2247|   140k|			if (result & ZEND_HASH_APPLY_STOP) {
  ------------------
  |  |  150|   140k|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
  |  Branch (2247:8): [True: 0, False: 140k]
  ------------------
 2248|      0|				break;
 2249|      0|			}
 2250|   140k|		}
 2251|  34.1k|	}
 2252|  34.1k|}
zend_hash_copy:
 2256|     23|{
 2257|     23|	uint32_t idx;
 2258|     23|	zval *new_entry, *data;
 2259|       |
 2260|     23|	IS_CONSISTENT(source);
  ------------------
  |  |   74|     23|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2261|     23|	IS_CONSISTENT(target);
  ------------------
  |  |   74|     23|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2262|     23|	HT_ASSERT_RC1(target);
  ------------------
  |  |   42|     23|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|     23|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2262:2): [True: 23, False: 0]
  |  Branch (2262:2): [True: 0, False: 0]
  |  Branch (2262:2): [True: 23, False: 0]
  |  Branch (2262:2): [True: 0, False: 0]
  ------------------
 2263|       |
 2264|     23|	if (HT_IS_PACKED(source)) {
  ------------------
  |  |   62|     23|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     23|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     23|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 23]
  |  |  ------------------
  ------------------
 2265|      0|		for (idx = 0; idx < source->nNumUsed; idx++) {
  ------------------
  |  Branch (2265:17): [True: 0, False: 0]
  ------------------
 2266|      0|			zval *zv = source->arPacked + idx;
 2267|      0|			if (UNEXPECTED(Z_TYPE_P(zv) == IS_UNDEF)) continue;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2268|       |
 2269|      0|			new_entry = zend_hash_index_update(target, idx, zv);
 2270|      0|			if (pCopyConstructor) {
  ------------------
  |  Branch (2270:8): [True: 0, False: 0]
  ------------------
 2271|      0|				pCopyConstructor(new_entry);
 2272|      0|			}
 2273|      0|		}
 2274|      0|		return;
 2275|      0|	}
 2276|       |
 2277|    168|	for (idx = 0; idx < source->nNumUsed; idx++) {
  ------------------
  |  Branch (2277:16): [True: 145, False: 23]
  ------------------
 2278|    145|		Bucket *p = source->arData + idx;
 2279|       |
 2280|    145|		if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|    145|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 145]
  |  |  ------------------
  ------------------
 2281|       |
 2282|       |		/* INDIRECT element may point to UNDEF-ined slots */
 2283|    145|		data = &p->val;
 2284|    145|		if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|    145|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    145|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|    145|#define IS_INDIRECT             	12
  ------------------
  |  Branch (2284:7): [True: 0, False: 145]
  ------------------
 2285|      0|			data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 2286|      0|			if (UNEXPECTED(Z_TYPE_P(data) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2287|      0|				continue;
 2288|      0|			}
 2289|      0|		}
 2290|    145|		if (p->key) {
  ------------------
  |  Branch (2290:7): [True: 145, False: 0]
  ------------------
 2291|    145|			new_entry = zend_hash_update(target, p->key, data);
 2292|    145|		} else {
 2293|      0|			new_entry = zend_hash_index_update(target, p->h, data);
 2294|      0|		}
 2295|    145|		if (pCopyConstructor) {
  ------------------
  |  Branch (2295:7): [True: 0, False: 145]
  ------------------
 2296|      0|			pCopyConstructor(new_entry);
 2297|      0|		}
 2298|    145|	}
 2299|     23|}
zend_array_dup:
 2454|    653|{
 2455|    653|	uint32_t idx;
 2456|    653|	HashTable *target;
 2457|       |
 2458|    653|	IS_CONSISTENT(source);
  ------------------
  |  |   74|    653|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2459|       |
 2460|    653|	ALLOC_HASHTABLE(target);
  ------------------
  |  |  232|    653|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|    653|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    653|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    653|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    653|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    653|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2461|    653|	GC_SET_REFCOUNT(target, 1);
  ------------------
  |  |  717|    653|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
 2462|    653|	GC_TYPE_INFO(target) = GC_ARRAY;
  ------------------
  |  |  775|    653|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(target) = GC_ARRAY;
  ------------------
  |  |  807|    653|#define GC_ARRAY					IS_ARRAY
  |  |  ------------------
  |  |  |  |  613|    653|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
 2463|       |
 2464|    653|	target->pDestructor = ZVAL_PTR_DTOR;
  ------------------
  |  |   87|    653|#define ZVAL_PTR_DTOR zval_ptr_dtor
  ------------------
 2465|       |
 2466|    653|	if (source->nNumOfElements == 0) {
  ------------------
  |  Branch (2466:6): [True: 74, False: 579]
  ------------------
 2467|     74|		HT_FLAGS(target) = HASH_FLAG_UNINITIALIZED;
  ------------------
  |  |   52|     74|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HASH_FLAG_UNINITIALIZED;
  ------------------
  |  |   44|     74|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
 2468|     74|		target->nTableMask = HT_MIN_MASK;
  ------------------
  |  |  437|     74|#define HT_MIN_MASK ((uint32_t) -2)
  ------------------
 2469|     74|		target->nNumUsed = 0;
 2470|     74|		target->nNumOfElements = 0;
 2471|     74|		target->nNextFreeElement = source->nNextFreeElement;
 2472|     74|		target->nInternalPointer = 0;
 2473|     74|		target->nTableSize = HT_MIN_SIZE;
  ------------------
  |  |  438|     74|#define HT_MIN_SIZE 8
  ------------------
 2474|     74|		HT_SET_DATA_ADDR(target, &uninitialized_bucket);
  ------------------
  |  |  548|     74|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|     74|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|     74|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|     74|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 74]
  |  |  ------------------
  ------------------
 2475|    579|	} else if (GC_FLAGS(source) & IS_ARRAY_IMMUTABLE) {
  ------------------
  |  |  777|    579|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    579|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	} else if (GC_FLAGS(source) & IS_ARRAY_IMMUTABLE) {
  ------------------
  |  |  844|    579|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|    579|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2475:13): [True: 0, False: 579]
  ------------------
 2476|      0|		ZEND_ASSERT(!(HT_FLAGS(source) & HASH_FLAG_HAS_EMPTY_IND));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2476:3): [True: 0, False: 0]
  |  Branch (2476:3): [True: 0, False: 0]
  ------------------
 2477|      0|		HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK;
  ------------------
  |  |   50|      0|#define HASH_FLAG_MASK 0xff
  ------------------
 2478|      0|		target->nTableMask = source->nTableMask;
 2479|      0|		target->nNumUsed = source->nNumUsed;
 2480|      0|		target->nNumOfElements = source->nNumOfElements;
 2481|      0|		target->nNextFreeElement = source->nNextFreeElement;
 2482|      0|		target->nTableSize = source->nTableSize;
 2483|      0|		if (HT_IS_PACKED(source)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2484|      0|			HT_SET_DATA_ADDR(target, emalloc(HT_PACKED_SIZE(target)));
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2485|      0|			target->nInternalPointer = source->nInternalPointer;
 2486|      0|			memcpy(HT_GET_DATA_ADDR(target), HT_GET_DATA_ADDR(source), HT_PACKED_USED_SIZE(source));
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
              			memcpy(HT_GET_DATA_ADDR(target), HT_GET_DATA_ADDR(source), HT_PACKED_USED_SIZE(source));
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
              			memcpy(HT_GET_DATA_ADDR(target), HT_GET_DATA_ADDR(source), HT_PACKED_USED_SIZE(source));
  ------------------
  |  |  491|      0|	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
 2487|      0|		} else {
 2488|      0|			HT_SET_DATA_ADDR(target, emalloc(HT_SIZE(target)));
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2489|      0|			target->nInternalPointer = source->nInternalPointer;
 2490|      0|			memcpy(HT_GET_DATA_ADDR(target), HT_GET_DATA_ADDR(source), HT_USED_SIZE(source));
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
              			memcpy(HT_GET_DATA_ADDR(target), HT_GET_DATA_ADDR(source), HT_USED_SIZE(source));
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
              			memcpy(HT_GET_DATA_ADDR(target), HT_GET_DATA_ADDR(source), HT_USED_SIZE(source));
  ------------------
  |  |  483|      0|	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(Bucket)))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
 2491|      0|		}
 2492|    579|	} else if (HT_IS_PACKED(source)) {
  ------------------
  |  |   62|    579|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    579|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    579|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 467, False: 112]
  |  |  ------------------
  ------------------
 2493|    467|		ZEND_ASSERT(!(HT_FLAGS(source) & HASH_FLAG_HAS_EMPTY_IND));
  ------------------
  |  |  112|    467|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2493:3): [True: 0, False: 467]
  |  Branch (2493:3): [True: 467, False: 0]
  ------------------
 2494|    467|		HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK;
  ------------------
  |  |   52|    467|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK;
  ------------------
  |  |   52|    467|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK;
  ------------------
  |  |   50|    467|#define HASH_FLAG_MASK 0xff
  ------------------
 2495|    467|		target->nTableMask = HT_MIN_MASK;
  ------------------
  |  |  437|    467|#define HT_MIN_MASK ((uint32_t) -2)
  ------------------
 2496|    467|		target->nNumUsed = source->nNumUsed;
 2497|    467|		target->nNumOfElements = source->nNumOfElements;
 2498|    467|		target->nNextFreeElement = source->nNextFreeElement;
 2499|    467|		target->nTableSize = source->nTableSize;
 2500|    467|		HT_SET_DATA_ADDR(target, emalloc(HT_PACKED_SIZE_EX(target->nTableSize, HT_MIN_MASK)));
  ------------------
  |  |  548|    467|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|    467|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|    467|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|    467|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 467]
  |  |  ------------------
  ------------------
 2501|    467|		target->nInternalPointer =
 2502|    467|			(source->nInternalPointer < source->nNumUsed) ?
  ------------------
  |  Branch (2502:4): [True: 467, False: 0]
  ------------------
 2503|    467|				source->nInternalPointer : 0;
 2504|       |
 2505|    467|		HT_HASH_RESET_PACKED(target);
  ------------------
  |  |  541|    467|#define HT_HASH_RESET_PACKED(ht) do { \
  |  |  542|    467|		HT_HASH(ht, -2) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  470|    467|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    467|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		HT_HASH(ht, -2) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  435|    467|#define HT_INVALID_IDX ((uint32_t) -1)
  |  |  ------------------
  |  |  543|    467|		HT_HASH(ht, -1) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  470|    467|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    467|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		HT_HASH(ht, -1) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  435|    467|#define HT_INVALID_IDX ((uint32_t) -1)
  |  |  ------------------
  |  |  544|    467|	} while (0)
  |  |  ------------------
  |  |  |  Branch (544:11): [Folded, False: 467]
  |  |  ------------------
  ------------------
 2506|       |
 2507|    467|		if (HT_IS_WITHOUT_HOLES(target)) {
  ------------------
  |  |   65|    467|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 458, False: 9]
  |  |  ------------------
  ------------------
 2508|    458|			zend_array_dup_packed_elements(source, target, false);
 2509|    458|		} else {
 2510|      9|			zend_array_dup_packed_elements(source, target, true);
 2511|      9|		}
 2512|    467|	} else {
 2513|       |		/* Indirects are removed during duplication, remove HASH_FLAG_HAS_EMPTY_IND accordingly. */
 2514|    112|		HT_FLAGS(target) = HT_FLAGS(source) & (HASH_FLAG_MASK & ~HASH_FLAG_HAS_EMPTY_IND);
  ------------------
  |  |   52|    112|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & (HASH_FLAG_MASK & ~HASH_FLAG_HAS_EMPTY_IND);
  ------------------
  |  |   52|    112|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & (HASH_FLAG_MASK & ~HASH_FLAG_HAS_EMPTY_IND);
  ------------------
  |  |   50|    112|#define HASH_FLAG_MASK 0xff
  ------------------
              		HT_FLAGS(target) = HT_FLAGS(source) & (HASH_FLAG_MASK & ~HASH_FLAG_HAS_EMPTY_IND);
  ------------------
  |  |   46|    112|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
 2515|    112|		target->nTableMask = source->nTableMask;
 2516|    112|		target->nNextFreeElement = source->nNextFreeElement;
 2517|    112|		target->nInternalPointer =
 2518|    112|			(source->nInternalPointer < source->nNumUsed) ?
  ------------------
  |  Branch (2518:4): [True: 112, False: 0]
  ------------------
 2519|    112|				source->nInternalPointer : 0;
 2520|       |
 2521|    112|		target->nTableSize = source->nTableSize;
 2522|    112|		HT_SET_DATA_ADDR(target, emalloc(HT_SIZE(target)));
  ------------------
  |  |  548|    112|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|    112|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|    112|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|    112|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 112]
  |  |  ------------------
  ------------------
 2523|    112|		HT_HASH_RESET(target);
  ------------------
  |  |  507|    112|# define HT_HASH_RESET(ht) do { \
  |  |  508|    112|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|    112|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|    112|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|    112|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|    112|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|    112|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|    112|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|    112|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|    112|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|    273|		do { \
  |  |  514|    273|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|    273|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|    273|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|    273|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|    273|			p += 64; \
  |  |  519|    273|			size -= 64; \
  |  |  520|    273|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 161, False: 112]
  |  |  ------------------
  |  |  521|    112|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 112]
  |  |  ------------------
  ------------------
  |  Branch (2523:3): [True: 0, False: 112]
  |  Branch (2523:3): [True: 0, False: 0]
  |  Branch (2523:3): [True: 112, False: 0]
  |  Branch (2523:3): [True: 112, False: 0]
  ------------------
 2524|       |
 2525|    112|		if (HT_HAS_STATIC_KEYS_ONLY(target)) {
  ------------------
  |  |   68|    112|	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   52|    112|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   43|    112|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
  |  |  ------------------
  |  |  |  |   45|    112|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  |  |  ------------------
  |  |  |  Branch (68:2): [True: 83, False: 29]
  |  |  ------------------
  ------------------
 2526|     83|			if (HT_IS_WITHOUT_HOLES(source)) {
  ------------------
  |  |   65|     83|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 83, False: 0]
  |  |  ------------------
  ------------------
 2527|     83|				idx = zend_array_dup_elements(source, target, true, false);
 2528|     83|			} else {
 2529|      0|				idx = zend_array_dup_elements(source, target, true, true);
 2530|      0|			}
 2531|     83|		} else {
 2532|     29|			if (HT_IS_WITHOUT_HOLES(source)) {
  ------------------
  |  |   65|     29|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 29, False: 0]
  |  |  ------------------
  ------------------
 2533|     29|				idx = zend_array_dup_elements(source, target, false, false);
 2534|     29|			} else {
 2535|      0|				idx = zend_array_dup_elements(source, target, false, true);
 2536|      0|			}
 2537|     29|		}
 2538|    112|		target->nNumUsed = idx;
 2539|    112|		target->nNumOfElements = idx;
 2540|    112|	}
 2541|    653|	return target;
 2542|    653|}
zend_hash_merge:
 2566|     10|{
 2567|     10|	uint32_t idx;
 2568|     10|	Bucket *p;
 2569|     10|	zval *t, *s;
 2570|       |
 2571|     10|	IS_CONSISTENT(source);
  ------------------
  |  |   74|     10|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2572|     10|	IS_CONSISTENT(target);
  ------------------
  |  |   74|     10|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2573|     10|	HT_ASSERT_RC1(target);
  ------------------
  |  |   42|     10|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|     10|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2573:2): [True: 10, False: 0]
  |  Branch (2573:2): [True: 0, False: 0]
  |  Branch (2573:2): [True: 10, False: 0]
  |  Branch (2573:2): [True: 0, False: 0]
  ------------------
 2574|       |
 2575|     10|	if (overwrite) {
  ------------------
  |  Branch (2575:6): [True: 0, False: 10]
  ------------------
 2576|      0|		if (HT_IS_PACKED(source)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2577|      0|			for (idx = 0; idx < source->nNumUsed; idx++) {
  ------------------
  |  Branch (2577:18): [True: 0, False: 0]
  ------------------
 2578|      0|				s = source->arPacked + idx;
 2579|      0|				if (UNEXPECTED(Z_TYPE_P(s) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2580|      0|					continue;
 2581|      0|				}
 2582|      0|				t = zend_hash_index_update(target, idx, s);
 2583|      0|				if (pCopyConstructor) {
  ------------------
  |  Branch (2583:9): [True: 0, False: 0]
  ------------------
 2584|      0|					pCopyConstructor(t);
 2585|      0|				}
 2586|      0|			}
 2587|      0|			return;
 2588|      0|		}
 2589|       |
 2590|      0|		for (idx = 0; idx < source->nNumUsed; idx++) {
  ------------------
  |  Branch (2590:17): [True: 0, False: 0]
  ------------------
 2591|      0|			p = source->arData + idx;
 2592|      0|			s = &p->val;
 2593|      0|			if (UNEXPECTED(Z_TYPE_P(s) == IS_INDIRECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2594|      0|				s = Z_INDIRECT_P(s);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 2595|      0|			}
 2596|      0|			if (UNEXPECTED(Z_TYPE_P(s) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2597|      0|				continue;
 2598|      0|			}
 2599|      0|			if (p->key) {
  ------------------
  |  Branch (2599:8): [True: 0, False: 0]
  ------------------
 2600|      0|				t = _zend_hash_add_or_update_i(target, p->key, s, HASH_UPDATE | HASH_UPDATE_INDIRECT);
  ------------------
  |  |   34|      0|#define HASH_UPDATE 			(1<<0) /* Create new entry, or update the existing one. */
  ------------------
              				t = _zend_hash_add_or_update_i(target, p->key, s, HASH_UPDATE | HASH_UPDATE_INDIRECT);
  ------------------
  |  |   36|      0|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
 2601|      0|				if (pCopyConstructor) {
  ------------------
  |  Branch (2601:9): [True: 0, False: 0]
  ------------------
 2602|      0|					pCopyConstructor(t);
 2603|      0|				}
 2604|      0|			} else {
 2605|      0|				t = zend_hash_index_update(target, p->h, s);
 2606|      0|				if (pCopyConstructor) {
  ------------------
  |  Branch (2606:9): [True: 0, False: 0]
  ------------------
 2607|      0|					pCopyConstructor(t);
 2608|      0|				}
 2609|      0|			}
 2610|      0|		}
 2611|     10|	} else {
 2612|     10|		if (HT_IS_PACKED(source)) {
  ------------------
  |  |   62|     10|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     10|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 4, False: 6]
  |  |  ------------------
  ------------------
 2613|     10|			for (idx = 0; idx < source->nNumUsed; idx++) {
  ------------------
  |  Branch (2613:18): [True: 6, False: 4]
  ------------------
 2614|      6|				s = source->arPacked + idx;
 2615|      6|				if (UNEXPECTED(Z_TYPE_P(s) == IS_UNDEF)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 2616|      0|					continue;
 2617|      0|				}
 2618|      6|				t = zend_hash_index_add(target, idx, s);
 2619|      6|				if (t && pCopyConstructor) {
  ------------------
  |  Branch (2619:9): [True: 2, False: 4]
  |  Branch (2619:14): [True: 2, False: 0]
  ------------------
 2620|      2|					pCopyConstructor(t);
 2621|      2|				}
 2622|      6|			}
 2623|      4|			return;
 2624|      4|		}
 2625|       |
 2626|     35|		for (idx = 0; idx < source->nNumUsed; idx++) {
  ------------------
  |  Branch (2626:17): [True: 29, False: 6]
  ------------------
 2627|     29|			p = source->arData + idx;
 2628|     29|			s = &p->val;
 2629|     29|			if (UNEXPECTED(Z_TYPE_P(s) == IS_INDIRECT)) {
  ------------------
  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  ------------------
  ------------------
 2630|      0|				s = Z_INDIRECT_P(s);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 2631|      0|			}
 2632|     29|			if (UNEXPECTED(Z_TYPE_P(s) == IS_UNDEF)) {
  ------------------
  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  ------------------
  ------------------
 2633|      0|				continue;
 2634|      0|			}
 2635|     29|			if (p->key) {
  ------------------
  |  Branch (2635:8): [True: 28, False: 1]
  ------------------
 2636|     28|				t = _zend_hash_add_or_update_i(target, p->key, s, HASH_ADD | HASH_UPDATE_INDIRECT);
  ------------------
  |  |   35|     28|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
              				t = _zend_hash_add_or_update_i(target, p->key, s, HASH_ADD | HASH_UPDATE_INDIRECT);
  ------------------
  |  |   36|     28|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
 2637|     28|				if (t && pCopyConstructor) {
  ------------------
  |  Branch (2637:9): [True: 23, False: 5]
  |  Branch (2637:14): [True: 23, False: 0]
  ------------------
 2638|     23|					pCopyConstructor(t);
 2639|     23|				}
 2640|     28|			} else {
 2641|      1|				t = zend_hash_index_add(target, p->h, s);
 2642|      1|				if (t && pCopyConstructor) {
  ------------------
  |  Branch (2642:9): [True: 0, False: 1]
  |  Branch (2642:14): [True: 0, False: 0]
  ------------------
 2643|      0|					pCopyConstructor(t);
 2644|      0|				}
 2645|      1|			}
 2646|     29|		}
 2647|      6|	}
 2648|     10|}
zend_hash_find:
 2687|   323k|{
 2688|   323k|	Bucket *p;
 2689|       |
 2690|   323k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|   323k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2691|       |
 2692|   323k|	(void)zend_string_hash_val(key);
 2693|   323k|	p = zend_hash_find_bucket(ht, key);
 2694|   323k|	return p ? &p->val : NULL;
  ------------------
  |  Branch (2694:9): [True: 279k, False: 44.1k]
  ------------------
 2695|   323k|}
zend_hash_find_known_hash:
 2698|  16.8k|{
 2699|  16.8k|	Bucket *p;
 2700|       |
 2701|  16.8k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  16.8k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2702|       |
 2703|  16.8k|	p = zend_hash_find_bucket(ht, key);
 2704|  16.8k|	return p ? &p->val : NULL;
  ------------------
  |  Branch (2704:9): [True: 6.48k, False: 10.3k]
  ------------------
 2705|  16.8k|}
zend_hash_str_find:
 2708|  63.1k|{
 2709|  63.1k|	zend_ulong h;
 2710|  63.1k|	Bucket *p;
 2711|       |
 2712|  63.1k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  63.1k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2713|       |
 2714|  63.1k|	h = zend_inline_hash_func(str, len);
 2715|  63.1k|	p = zend_hash_str_find_bucket(ht, str, len, h);
 2716|  63.1k|	return p ? &p->val : NULL;
  ------------------
  |  Branch (2716:9): [True: 61.7k, False: 1.39k]
  ------------------
 2717|  63.1k|}
zend_hash_index_find:
 2720|  8.92M|{
 2721|  8.92M|	Bucket *p;
 2722|       |
 2723|  8.92M|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  8.92M|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2724|       |
 2725|  8.92M|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  8.92M|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  8.92M|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  8.92M|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 845, False: 8.92M]
  |  |  ------------------
  ------------------
 2726|    845|		if (h < ht->nNumUsed) {
  ------------------
  |  Branch (2726:7): [True: 839, False: 6]
  ------------------
 2727|    839|			zval *zv = ht->arPacked + h;
 2728|       |
 2729|    839|			if (Z_TYPE_P(zv) != IS_UNDEF) {
  ------------------
  |  |  669|    839|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    839|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) != IS_UNDEF) {
  ------------------
  |  |  606|    839|#define IS_UNDEF					0
  ------------------
  |  Branch (2729:8): [True: 838, False: 1]
  ------------------
 2730|    838|				return zv;
 2731|    838|			}
 2732|    839|		}
 2733|      7|		return NULL;
 2734|    845|	}
 2735|       |
 2736|  8.92M|	p = zend_hash_index_find_bucket(ht, h);
 2737|  8.92M|	return p ? &p->val : NULL;
  ------------------
  |  Branch (2737:9): [True: 8.92M, False: 73]
  ------------------
 2738|  8.92M|}
_zend_hash_index_find:
 2741|    305|{
 2742|    305|	Bucket *p;
 2743|       |
 2744|    305|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    305|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2745|    305|	ZEND_ASSERT(!HT_IS_PACKED(ht));
  ------------------
  |  |  112|    305|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2745:2): [True: 0, False: 305]
  |  Branch (2745:2): [True: 305, False: 0]
  ------------------
 2746|       |
 2747|    305|	p = zend_hash_index_find_bucket(ht, h);
 2748|    305|	return p ? &p->val : NULL;
  ------------------
  |  Branch (2748:9): [True: 280, False: 25]
  ------------------
 2749|    305|}
zend_hash_internal_pointer_reset_ex:
 2752|     46|{
 2753|     46|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     46|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2754|     46|	HT_ASSERT(ht, &ht->nInternalPointer != pos || GC_REFCOUNT(ht) == 1);
  ------------------
  |  |   37|     46|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  ------------------
  |  |  |  |  112|     46|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2754:2): [True: 46, False: 0]
  |  Branch (2754:2): [True: 0, False: 0]
  |  Branch (2754:2): [True: 0, False: 0]
  |  Branch (2754:2): [True: 33, False: 13]
  |  Branch (2754:2): [True: 13, False: 0]
  |  Branch (2754:2): [True: 0, False: 0]
  ------------------
 2755|     46|	*pos = _zend_hash_get_valid_pos(ht, 0);
 2756|     46|}
zend_hash_internal_pointer_end_ex:
 2763|      6|{
 2764|      6|	uint32_t idx;
 2765|       |
 2766|      6|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|      6|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2767|      6|	HT_ASSERT(ht, &ht->nInternalPointer != pos || GC_REFCOUNT(ht) == 1);
  ------------------
  |  |   37|      6|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  ------------------
  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2767:2): [True: 6, False: 0]
  |  Branch (2767:2): [True: 0, False: 0]
  |  Branch (2767:2): [True: 0, False: 0]
  |  Branch (2767:2): [True: 0, False: 6]
  |  Branch (2767:2): [True: 6, False: 0]
  |  Branch (2767:2): [True: 0, False: 0]
  ------------------
 2768|       |
 2769|      6|	idx = ht->nNumUsed;
 2770|      6|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      6|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      6|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      6|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 5, False: 1]
  |  |  ------------------
  ------------------
 2771|      5|		while (idx > 0) {
  ------------------
  |  Branch (2771:10): [True: 5, False: 0]
  ------------------
 2772|      5|			idx--;
 2773|      5|			if (Z_TYPE(ht->arPacked[idx]) != IS_UNDEF) {
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(ht->arPacked[idx]) != IS_UNDEF) {
  ------------------
  |  |  606|      5|#define IS_UNDEF					0
  ------------------
  |  Branch (2773:8): [True: 5, False: 0]
  ------------------
 2774|      5|				*pos = idx;
 2775|      5|				return;
 2776|      5|			}
 2777|      5|		}
 2778|      5|	} else {
 2779|      1|		while (idx > 0) {
  ------------------
  |  Branch (2779:10): [True: 1, False: 0]
  ------------------
 2780|      1|			idx--;
 2781|      1|			if (Z_TYPE(ht->arData[idx].val) != IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(ht->arData[idx].val) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (2781:8): [True: 1, False: 0]
  ------------------
 2782|      1|				*pos = idx;
 2783|      1|				return;
 2784|      1|			}
 2785|      1|		}
 2786|      1|	}
 2787|      0|	*pos = ht->nNumUsed;
 2788|      0|}
zend_hash_move_forward_ex:
 2792|     52|{
 2793|     52|	uint32_t idx;
 2794|       |
 2795|     52|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     52|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2796|     52|	HT_ASSERT(ht, &ht->nInternalPointer != pos || GC_REFCOUNT(ht) == 1);
  ------------------
  |  |   37|     52|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  ------------------
  |  |  |  |  112|     52|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2796:2): [True: 52, False: 0]
  |  Branch (2796:2): [True: 0, False: 0]
  |  Branch (2796:2): [True: 0, False: 0]
  |  Branch (2796:2): [True: 45, False: 7]
  |  Branch (2796:2): [True: 7, False: 0]
  |  Branch (2796:2): [True: 0, False: 0]
  ------------------
 2797|       |
 2798|     52|	idx = _zend_hash_get_valid_pos(ht, *pos);
 2799|     52|	if (idx < ht->nNumUsed) {
  ------------------
  |  Branch (2799:6): [True: 52, False: 0]
  ------------------
 2800|     52|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     52|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     52|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     52|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 43, False: 9]
  |  |  ------------------
  ------------------
 2801|     43|			while (1) {
  ------------------
  |  Branch (2801:11): [True: 43, Folded]
  ------------------
 2802|     43|				idx++;
 2803|     43|				if (idx >= ht->nNumUsed) {
  ------------------
  |  Branch (2803:9): [True: 13, False: 30]
  ------------------
 2804|     13|					*pos = ht->nNumUsed;
 2805|     13|					return SUCCESS;
 2806|     13|				}
 2807|     30|				if (Z_TYPE(ht->arPacked[idx]) != IS_UNDEF) {
  ------------------
  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(ht->arPacked[idx]) != IS_UNDEF) {
  ------------------
  |  |  606|     30|#define IS_UNDEF					0
  ------------------
  |  Branch (2807:9): [True: 30, False: 0]
  ------------------
 2808|     30|					*pos = idx;
 2809|     30|					return SUCCESS;
 2810|     30|				}
 2811|     30|			}
 2812|     43|		} else {
 2813|      9|			while (1) {
  ------------------
  |  Branch (2813:11): [True: 9, Folded]
  ------------------
 2814|      9|				idx++;
 2815|      9|				if (idx >= ht->nNumUsed) {
  ------------------
  |  Branch (2815:9): [True: 9, False: 0]
  ------------------
 2816|      9|					*pos = ht->nNumUsed;
 2817|      9|					return SUCCESS;
 2818|      9|				}
 2819|      0|				if (Z_TYPE(ht->arData[idx].val) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(ht->arData[idx].val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (2819:9): [True: 0, False: 0]
  ------------------
 2820|      0|					*pos = idx;
 2821|      0|					return SUCCESS;
 2822|      0|				}
 2823|      0|			}
 2824|      9|		}
 2825|     52|	} else {
 2826|      0|		return FAILURE;
 2827|      0|	}
 2828|     52|}
zend_hash_move_backwards_ex:
 2831|      2|{
 2832|      2|	uint32_t idx = *pos;
 2833|       |
 2834|      2|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|      2|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2835|      2|	HT_ASSERT(ht, &ht->nInternalPointer != pos || GC_REFCOUNT(ht) == 1);
  ------------------
  |  |   37|      2|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2835:2): [True: 2, False: 0]
  |  Branch (2835:2): [True: 0, False: 0]
  |  Branch (2835:2): [True: 0, False: 0]
  |  Branch (2835:2): [True: 0, False: 2]
  |  Branch (2835:2): [True: 2, False: 0]
  |  Branch (2835:2): [True: 0, False: 0]
  ------------------
 2836|       |
 2837|      2|	if (idx < ht->nNumUsed) {
  ------------------
  |  Branch (2837:6): [True: 2, False: 0]
  ------------------
 2838|      2|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2839|      1|			while (idx > 0) {
  ------------------
  |  Branch (2839:11): [True: 1, False: 0]
  ------------------
 2840|      1|				idx--;
 2841|      1|				if (Z_TYPE(ht->arPacked[idx]) != IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(ht->arPacked[idx]) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (2841:9): [True: 1, False: 0]
  ------------------
 2842|      1|					*pos = idx;
 2843|      1|					return SUCCESS;
 2844|      1|				}
 2845|      1|			}
 2846|      1|		} else {
 2847|      1|			while (idx > 0) {
  ------------------
  |  Branch (2847:11): [True: 0, False: 1]
  ------------------
 2848|      0|				idx--;
 2849|      0|				if (Z_TYPE(ht->arData[idx].val) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(ht->arData[idx].val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (2849:9): [True: 0, False: 0]
  ------------------
 2850|      0|					*pos = idx;
 2851|      0|					return SUCCESS;
 2852|      0|				}
 2853|      0|			}
 2854|      1|		}
 2855|      1|		*pos = ht->nNumUsed;
 2856|      1|		return SUCCESS;
 2857|      2|	} else {
 2858|      0|		return FAILURE;
 2859|      0|	}
 2860|      2|}
zend_hash_get_current_key_ex:
 2864|     59|{
 2865|     59|	uint32_t idx;
 2866|     59|	Bucket *p;
 2867|       |
 2868|     59|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     59|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2869|     59|	idx = _zend_hash_get_valid_pos(ht, *pos);
 2870|     59|	if (idx < ht->nNumUsed) {
  ------------------
  |  Branch (2870:6): [True: 36, False: 23]
  ------------------
 2871|     36|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     36|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     36|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     36|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 36]
  |  |  ------------------
  ------------------
 2872|      0|			*num_index = idx;
 2873|      0|			return HASH_KEY_IS_LONG;
 2874|      0|		}
 2875|     36|		p = ht->arData + idx;
 2876|     36|		if (p->key) {
  ------------------
  |  Branch (2876:7): [True: 36, False: 0]
  ------------------
 2877|     36|			*str_index = p->key;
 2878|     36|			return HASH_KEY_IS_STRING;
 2879|     36|		} else {
 2880|      0|			*num_index = p->h;
 2881|      0|			return HASH_KEY_IS_LONG;
 2882|      0|		}
 2883|     36|	}
 2884|     23|	return HASH_KEY_NON_EXISTENT;
 2885|     59|}
zend_hash_get_current_key_zval_ex:
 2888|     49|{
 2889|     49|	uint32_t idx;
 2890|     49|	Bucket *p;
 2891|       |
 2892|     49|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     49|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2893|     49|	idx = _zend_hash_get_valid_pos(ht, *pos);
 2894|     49|	if (idx >= ht->nNumUsed) {
  ------------------
  |  Branch (2894:6): [True: 0, False: 49]
  ------------------
 2895|      0|		ZVAL_NULL(key);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2896|     49|	} else {
 2897|     49|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     49|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     49|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     49|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 46, False: 3]
  |  |  ------------------
  ------------------
 2898|     46|			ZVAL_LONG(key, idx);
  ------------------
  |  | 1076|     46|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     46|		zval *__z = (z);				\
  |  | 1078|     46|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     46|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     46|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     46|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     46|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     46|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     46|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     46|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 46]
  |  |  ------------------
  ------------------
 2899|     46|			return;
 2900|     46|		}
 2901|      3|		p = ht->arData + idx;
 2902|      3|		if (p->key) {
  ------------------
  |  Branch (2902:7): [True: 3, False: 0]
  ------------------
 2903|      3|			ZVAL_STR_COPY(key, p->key);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      3|		zend_string *__s = (s);							\
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 1]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2904|      3|		} else {
 2905|      0|			ZVAL_LONG(key, p->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2906|      0|		}
 2907|      3|	}
 2908|     49|}
zend_hash_get_current_key_type_ex:
 2911|     35|{
 2912|     35|	uint32_t idx;
 2913|     35|	Bucket *p;
 2914|       |
 2915|     35|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     35|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2916|     35|	idx = _zend_hash_get_valid_pos(ht, *pos);
 2917|     35|	if (idx < ht->nNumUsed) {
  ------------------
  |  Branch (2917:6): [True: 16, False: 19]
  ------------------
 2918|     16|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     16|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     16|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 16, False: 0]
  |  |  ------------------
  ------------------
 2919|     16|			return HASH_KEY_IS_LONG;
 2920|     16|		}
 2921|      0|		p = ht->arData + idx;
 2922|      0|		if (p->key) {
  ------------------
  |  Branch (2922:7): [True: 0, False: 0]
  ------------------
 2923|      0|			return HASH_KEY_IS_STRING;
 2924|      0|		} else {
 2925|      0|			return HASH_KEY_IS_LONG;
 2926|      0|		}
 2927|      0|	}
 2928|     19|	return HASH_KEY_NON_EXISTENT;
 2929|     35|}
zend_hash_get_current_data_ex:
 2933|     95|{
 2934|     95|	uint32_t idx;
 2935|     95|	Bucket *p;
 2936|       |
 2937|     95|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     95|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2938|     95|	idx = _zend_hash_get_valid_pos(ht, *pos);
 2939|     95|	if (idx < ht->nNumUsed) {
  ------------------
  |  Branch (2939:6): [True: 83, False: 12]
  ------------------
 2940|     83|		if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     83|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     83|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     83|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 57, False: 26]
  |  |  ------------------
  ------------------
 2941|     57|			return &ht->arPacked[idx];
 2942|     57|		}
 2943|     26|		p = ht->arData + idx;
 2944|     26|		return &p->val;
 2945|     83|	} else {
 2946|       |		return NULL;
 2947|     12|	}
 2948|     95|}
zend_hash_bucket_swap:
 2951|    690|{
 2952|    690|	zval val;
 2953|    690|	zend_ulong h;
 2954|    690|	zend_string *key;
 2955|       |
 2956|    690|	val = p->val;
 2957|    690|	h = p->h;
 2958|    690|	key = p->key;
 2959|       |
 2960|    690|	p->val = q->val;
 2961|    690|	p->h = q->h;
 2962|    690|	p->key = q->key;
 2963|       |
 2964|    690|	q->val = val;
 2965|    690|	q->h = h;
 2966|    690|	q->key = key;
 2967|    690|}
zend_hash_bucket_renum_swap:
 2970|    204|{
 2971|    204|	zval val;
 2972|       |
 2973|    204|	val = p->val;
 2974|    204|	p->val = q->val;
 2975|    204|	q->val = val;
 2976|    204|}
zend_hash_sort_ex:
 3086|      4|{
 3087|      4|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|      4|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|      4|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3087:2): [True: 4, False: 0]
  |  Branch (3087:2): [True: 0, False: 0]
  |  Branch (3087:2): [True: 4, False: 0]
  |  Branch (3087:2): [True: 0, False: 0]
  ------------------
 3088|      4|	zend_hash_sort_internal(ht, sort, compar, renumber);
 3089|      4|}
zend_array_sort_ex:
 3092|     35|{
 3093|     35|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|     35|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|     35|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3093:2): [True: 35, False: 0]
  |  Branch (3093:2): [True: 0, False: 0]
  |  Branch (3093:2): [True: 35, False: 0]
  |  Branch (3093:2): [True: 0, False: 0]
  ------------------
 3094|       |
 3095|       |	/* Unpack the array early to avoid RCn assertion failures. */
 3096|     35|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     35|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     35|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     35|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 31, False: 4]
  |  |  ------------------
  ------------------
 3097|     31|		zend_hash_packed_to_hash(ht);
 3098|     31|	}
 3099|       |
 3100|       |	/* Adding a refcount prevents the array from going away. */
 3101|     35|	GC_ADDREF(ht);
  ------------------
  |  |  718|     35|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3102|       |
 3103|     35|	zend_hash_sort_internal(ht, sort, compar, renumber);
 3104|       |
 3105|     35|	if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
 3106|      0|		zend_array_destroy(ht);
 3107|     35|	} else {
 3108|     35|		gc_check_possible_root((zend_refcounted *)ht);
 3109|     35|	}
 3110|     35|}
zend_hash_compare:
 3215|    182|{
 3216|    182|	int result;
 3217|    182|	IS_CONSISTENT(ht1);
  ------------------
  |  |   74|    182|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 3218|    182|	IS_CONSISTENT(ht2);
  ------------------
  |  |   74|    182|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 3219|       |
 3220|    182|	if (ht1 == ht2) {
  ------------------
  |  Branch (3220:6): [True: 0, False: 182]
  ------------------
 3221|      0|		return 0;
 3222|      0|	}
 3223|       |
 3224|       |	/* It's enough to protect only one of the arrays.
 3225|       |	 * The second one may be referenced from the first and this may cause
 3226|       |	 * false recursion detection.
 3227|       |	 */
 3228|    182|	if (UNEXPECTED(GC_IS_RECURSIVE(ht1))) {
  ------------------
  |  |  457|    182|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 179]
  |  |  ------------------
  ------------------
 3229|      3|		zend_throw_error(NULL, "Nesting level too deep - recursive dependency?");
 3230|      3|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      3|#define ZEND_UNCOMPARABLE 1
  ------------------
 3231|      3|	}
 3232|       |
 3233|    179|	GC_TRY_PROTECT_RECURSION(ht1);
  ------------------
  |  |  897|    179|#define GC_TRY_PROTECT_RECURSION(p) do { \
  |  |  898|    179|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  777|    179|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    179|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  801|    179|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  889|    178|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  890|    178|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  780|    178|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  781|    178|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|    178|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|    178|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  782|    178|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 178]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  891|    178|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (891:11): [Folded, False: 178]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (898:7): [True: 178, False: 1]
  |  |  ------------------
  |  |  899|    179|	} while (0)
  |  |  ------------------
  |  |  |  Branch (899:11): [Folded, False: 179]
  |  |  ------------------
  ------------------
 3234|    179|	result = zend_hash_compare_impl(ht1, ht2, compar, ordered);
 3235|    179|	GC_TRY_UNPROTECT_RECURSION(ht1);
  ------------------
  |  |  901|    179|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  902|    179|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  777|    179|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    179|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  801|    179|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  ------------------
  |  |  |  |  893|    178|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|    178|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|    178|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|    178|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|    178|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|    178|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|    178|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 178]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|    178|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 178]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (902:7): [True: 178, False: 1]
  |  |  ------------------
  |  |  903|    179|	} while (0)
  |  |  ------------------
  |  |  |  Branch (903:11): [Folded, False: 179]
  |  |  ------------------
  ------------------
 3236|       |
 3237|    179|	return result;
 3238|    182|}
_zend_handle_numeric_str_ex:
 3309|  12.2k|{
 3310|  12.2k|	const char *tmp = key;
 3311|       |
 3312|  12.2k|	const char *end = key + length;
 3313|       |
 3314|  12.2k|	if (*tmp == '-') {
  ------------------
  |  Branch (3314:6): [True: 112, False: 12.1k]
  ------------------
 3315|    112|		tmp++;
 3316|    112|	}
 3317|       |
 3318|  12.2k|	if ((*tmp == '0' && length > 1) /* numbers with leading zeros */
  ------------------
  |  Branch (3318:7): [True: 6.52k, False: 5.73k]
  |  Branch (3318:22): [True: 2.85k, False: 3.67k]
  ------------------
 3319|  9.40k|	 || (end - tmp > MAX_LENGTH_OF_LONG - 1) /* number too long */
  ------------------
  |  |   96|  9.40k|# define MAX_LENGTH_OF_LONG 20
  ------------------
  |  Branch (3319:6): [True: 1.82k, False: 7.57k]
  ------------------
 3320|      0|	 || (SIZEOF_ZEND_LONG == 4 &&
  ------------------
  |  |   39|      0|# define SIZEOF_ZEND_LONG 8
  ------------------
  |  Branch (3320:7): [Folded, False: 0]
  ------------------
 3321|      0|	     end - tmp == MAX_LENGTH_OF_LONG - 1 &&
  ------------------
  |  |   96|      0|# define MAX_LENGTH_OF_LONG 20
  ------------------
  |  Branch (3321:7): [True: 0, False: 0]
  ------------------
 3322|  4.67k|	     *tmp > '2')) { /* overflow */
  ------------------
  |  Branch (3322:7): [True: 0, False: 0]
  ------------------
 3323|  4.67k|		return 0;
 3324|  4.67k|	}
 3325|  7.57k|	*idx = (*tmp - '0');
 3326|  7.70k|	while (1) {
  ------------------
  |  Branch (3326:9): [True: 7.70k, Folded]
  ------------------
 3327|  7.70k|		++tmp;
 3328|  7.70k|		if (tmp == end) {
  ------------------
  |  Branch (3328:7): [True: 7.17k, False: 534]
  ------------------
 3329|  7.17k|			if (*key == '-') {
  ------------------
  |  Branch (3329:8): [True: 1, False: 7.17k]
  ------------------
 3330|      1|				if (*idx-1 > ZEND_LONG_MAX) { /* overflow */
  ------------------
  |  |   34|      1|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (3330:9): [True: 0, False: 1]
  ------------------
 3331|      0|					return 0;
 3332|      0|				}
 3333|      1|				*idx = 0 - *idx;
 3334|  7.17k|			} else if (*idx > ZEND_LONG_MAX) { /* overflow */
  ------------------
  |  |   34|  7.17k|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (3334:15): [True: 0, False: 7.17k]
  ------------------
 3335|      0|				return 0;
 3336|      0|			}
 3337|  7.17k|			return 1;
 3338|  7.17k|		}
 3339|    534|		if (*tmp <= '9' && *tmp >= '0') {
  ------------------
  |  Branch (3339:7): [True: 526, False: 8]
  |  Branch (3339:22): [True: 127, False: 399]
  ------------------
 3340|    127|			*idx = (*idx * 10) + (*tmp - '0');
 3341|    407|		} else {
 3342|    407|			return 0;
 3343|    407|		}
 3344|    534|	}
 3345|  7.57k|}
zend_symtable_to_proptable:
 3352|     19|{
 3353|     19|	zend_ulong num_key;
 3354|     19|	zend_string *str_key;
 3355|     19|	zval *zv;
 3356|       |
 3357|     19|	if (UNEXPECTED(HT_IS_PACKED(ht))) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 11]
  |  |  ------------------
  ------------------
 3358|      8|		goto convert;
 3359|      8|	}
 3360|       |
 3361|     56|	ZEND_HASH_MAP_FOREACH_STR_KEY(ht, str_key) {
  ------------------
  |  | 1361|     17|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     11|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     11|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     11|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     11|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     11|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     11|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     26|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 17, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     17|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     17|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     17|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 17]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     17|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 17]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|     17|	_key = _p->key;
  ------------------
  |  Branch (3361:2): [True: 0, False: 11]
  |  Branch (3361:2): [True: 11, False: 0]
  ------------------
 3362|     56|		if (!str_key) {
  ------------------
  |  Branch (3362:7): [True: 2, False: 15]
  ------------------
 3363|      2|			goto convert;
 3364|      2|		}
 3365|     56|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     17|		} \
  |  | 1102|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 3366|       |
 3367|      9|	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      9|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      9|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      9|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      9|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (3367:6): [True: 8, False: 1]
  ------------------
 3368|      8|		GC_ADDREF(ht);
  ------------------
  |  |  718|      8|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3369|      8|	}
 3370|       |
 3371|      9|	return ht;
 3372|       |
 3373|     10|convert:
 3374|     10|	{
 3375|     10|		HashTable *new_ht = zend_new_array(zend_hash_num_elements(ht));
  ------------------
  |  |  342|     10|	_zend_new_array(size)
  ------------------
 3376|       |
 3377|     66|		ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, str_key, zv) {
  ------------------
  |  | 1196|     28|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     10|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     10|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     10|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     10|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     10|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     10|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     10|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     10|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     10|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     10|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     10|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     10|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     38|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 28, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     28|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     28|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     28|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     28|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     28|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 24, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|     24|				__z++; \
  |  |  |  |  |  | 1057|     24|				__h = _idx; \
  |  |  |  |  |  | 1058|     24|				_idx++; \
  |  |  |  |  |  | 1059|     24|			} else { \
  |  |  |  |  |  | 1060|      4|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      4|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      4|				__h = _p->h; \
  |  |  |  |  |  | 1063|      4|				__key = _p->key; \
  |  |  |  |  |  | 1064|      4|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      4|			} \
  |  |  |  |  |  | 1068|     28|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     28|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|     28|	_h = __h; \
  |  | 1198|     28|	_key = __key; \
  |  | 1199|     28|	_val = _z;
  ------------------
 3378|     66|			if (!str_key) {
  ------------------
  |  Branch (3378:8): [True: 26, False: 2]
  ------------------
 3379|     26|				str_key = zend_long_to_str(num_key);
 3380|     26|				zend_string_delref(str_key);
 3381|     26|			}
 3382|     66|			do {
 3383|     28|				if (Z_OPT_REFCOUNTED_P(zv)) {
  ------------------
  |  |  955|     28|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|     28|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|     28|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|     28|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3384|      2|					if (Z_ISREF_P(zv) && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_ISREF_P(zv) && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (3384:27): [True: 0, False: 0]
  ------------------
 3385|      0|						zv = Z_REFVAL_P(zv);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3386|      0|						if (!Z_OPT_REFCOUNTED_P(zv)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3386:11): [True: 0, False: 0]
  ------------------
 3387|      0|							break;
 3388|      0|						}
 3389|      0|					}
 3390|      2|					Z_ADDREF_P(zv);
  ------------------
  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 3391|      2|				}
 3392|     28|			} while (0);
  ------------------
  |  Branch (3392:13): [Folded, False: 28]
  ------------------
 3393|     66|			zend_hash_update(new_ht, str_key, zv);
 3394|     66|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     28|		} \
  |  | 1102|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 3395|       |
 3396|     10|		return new_ht;
 3397|     11|	}
 3398|     11|}
zend_proptable_to_symtable:
 3405|     27|{
 3406|     27|	zend_ulong num_key;
 3407|     27|	zend_string *str_key;
 3408|     27|	zval *zv;
 3409|       |
 3410|     27|	if (!HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     27|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     27|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     27|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  ------------------
  |  Branch (3410:6): [True: 27, False: 0]
  ------------------
 3411|    320|		ZEND_HASH_MAP_FOREACH_STR_KEY(ht, str_key) {
  ------------------
  |  | 1361|    133|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     27|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     27|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     27|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     27|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     27|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     27|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     27|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    156|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 133, False: 23]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    133|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    133|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    133|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 133]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    133|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    133|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 133]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|    133|	_key = _p->key;
  ------------------
  |  Branch (3411:3): [True: 0, False: 27]
  |  Branch (3411:3): [True: 27, False: 0]
  ------------------
 3412|       |			/* The `str_key &&` here might seem redundant: property tables should
 3413|       |			 * only have string keys. Unfortunately, this isn't true, at the very
 3414|       |			 * least because of ArrayObject, which stores a symtable where the
 3415|       |			 * property table should be.
 3416|       |			 */
 3417|    320|			if (str_key && ZEND_HANDLE_NUMERIC(str_key, num_key)) {
  ------------------
  |  |  424|    133|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|    133|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 4, False: 129]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3417:8): [True: 133, False: 0]
  ------------------
 3418|      4|				goto convert;
 3419|      4|			}
 3420|    320|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    133|		} \
  |  | 1102|     27|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
 3421|     27|	}
 3422|       |
 3423|     23|	if (always_duplicate) {
  ------------------
  |  Branch (3423:6): [True: 21, False: 2]
  ------------------
 3424|     21|		return zend_array_dup(ht);
 3425|     21|	}
 3426|       |
 3427|      2|	if (EXPECTED(!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 3428|      2|		GC_ADDREF(ht);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3429|      2|	}
 3430|       |
 3431|      2|	return ht;
 3432|       |
 3433|      4|convert:
 3434|      4|	{
 3435|      4|		HashTable *new_ht = zend_new_array(zend_hash_num_elements(ht));
  ------------------
  |  |  342|      4|	_zend_new_array(size)
  ------------------
 3436|       |
 3437|     28|		ZEND_HASH_MAP_FOREACH_KEY_VAL_IND(ht, num_key, str_key, zv) {
  ------------------
  |  | 1426|     10|	ZEND_HASH_MAP_FOREACH(ht, 1); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 10, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     10|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     10|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|     10|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     20|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [True: 10, Folded]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 1, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      1|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      1|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      1|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      1|			} \
  |  |  |  |  |  | 1272|     10|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1427|     10|	_h = _p->h; \
  |  | 1428|     10|	_key = _p->key; \
  |  | 1429|     10|	_val = _z;
  ------------------
  |  Branch (3437:3): [True: 0, False: 4]
  |  Branch (3437:3): [True: 4, False: 0]
  ------------------
 3438|     28|			do {
 3439|     10|				if (Z_OPT_REFCOUNTED_P(zv)) {
  ------------------
  |  |  955|     10|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|     10|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|     10|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|     10|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3440|      3|					if (Z_ISREF_P(zv) && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_ISREF_P(zv) && Z_REFCOUNT_P(zv) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (3440:27): [True: 0, False: 0]
  ------------------
 3441|      0|						zv = Z_REFVAL_P(zv);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3442|      0|						if (!Z_OPT_REFCOUNTED_P(zv)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3442:11): [True: 0, False: 0]
  ------------------
 3443|      0|							break;
 3444|      0|						}
 3445|      0|					}
 3446|      3|					Z_ADDREF_P(zv);
  ------------------
  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 3447|      3|				}
 3448|     10|			} while (0);
  ------------------
  |  Branch (3448:13): [Folded, False: 10]
  ------------------
 3449|       |			/* Again, thank ArrayObject for `!str_key ||`. */
 3450|     28|			if (!str_key || ZEND_HANDLE_NUMERIC(str_key, num_key)) {
  ------------------
  |  |  424|     10|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|     10|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 8, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3450:8): [True: 0, False: 10]
  ------------------
 3451|      8|				zend_hash_index_update(new_ht, num_key, zv);
 3452|      8|			} else {
 3453|      2|				zend_hash_update(new_ht, str_key, zv);
 3454|      2|			}
 3455|     28|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     10|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3456|       |
 3457|      4|		return new_ht;
 3458|      4|	}
 3459|      4|}
zend_hash.c:_zend_hash_init_int:
  261|   515k|{
  262|   515k|	GC_SET_REFCOUNT(ht, 1);
  ------------------
  |  |  717|   515k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  263|   515k|	GC_TYPE_INFO(ht) = GC_ARRAY | (persistent ? ((GC_PERSISTENT|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT) : 0);
  ------------------
  |  |  775|   515k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ht) = GC_ARRAY | (persistent ? ((GC_PERSISTENT|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT) : 0);
  ------------------
  |  |  807|   515k|#define GC_ARRAY					IS_ARRAY
  |  |  ------------------
  |  |  |  |  613|   515k|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ht) = GC_ARRAY | (persistent ? ((GC_PERSISTENT|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT) : 0);
  ------------------
  |  |  802|  1.25k|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  ------------------
              	GC_TYPE_INFO(ht) = GC_ARRAY | (persistent ? ((GC_PERSISTENT|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT) : 0);
  ------------------
  |  |  799|  1.25k|#define GC_NOT_COLLECTABLE			(1<<4)
  ------------------
              	GC_TYPE_INFO(ht) = GC_ARRAY | (persistent ? ((GC_PERSISTENT|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT) : 0);
  ------------------
  |  |  760|  1.25k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (263:33): [True: 1.25k, False: 514k]
  ------------------
  264|   515k|	HT_FLAGS(ht) = HASH_FLAG_UNINITIALIZED;
  ------------------
  |  |   52|   515k|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(ht) = HASH_FLAG_UNINITIALIZED;
  ------------------
  |  |   44|   515k|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  265|   515k|	ht->nTableMask = HT_MIN_MASK;
  ------------------
  |  |  437|   515k|#define HT_MIN_MASK ((uint32_t) -2)
  ------------------
  266|   515k|	HT_SET_DATA_ADDR(ht, &uninitialized_bucket);
  ------------------
  |  |  548|   515k|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|   515k|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|   515k|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|   515k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 515k]
  |  |  ------------------
  ------------------
  267|   515k|	ht->nNumUsed = 0;
  268|   515k|	ht->nNumOfElements = 0;
  269|   515k|	ht->nInternalPointer = 0;
  270|       |	ht->nNextFreeElement = ZEND_LONG_MIN;
  ------------------
  |  |   35|   515k|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  271|   515k|	ht->pDestructor = pDestructor;
  272|   515k|	ht->nTableSize = zend_hash_check_size(nSize);
  273|   515k|}
zend_hash.c:zend_hash_real_init_packed_ex:
  148|  26.0k|{
  149|  26.0k|	void *data;
  150|       |
  151|  26.0k|	if (UNEXPECTED(GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)) {
  ------------------
  |  |  457|  26.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 144, False: 25.9k]
  |  |  ------------------
  ------------------
  152|    144|		data = pemalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK), 1);
  ------------------
  |  |  188|    144|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    144|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    144|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    144|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    144|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 144, Folded]
  |  |  ------------------
  ------------------
  153|  25.9k|	} else if (EXPECTED(ht->nTableSize == HT_MIN_SIZE)) {
  ------------------
  |  |  456|  25.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 25.8k, False: 30]
  |  |  ------------------
  ------------------
  154|       |		/* Use specialized API with constant allocation amount for a particularly common case. */
  155|  25.8k|		data = emalloc(HT_PACKED_SIZE_EX(HT_MIN_SIZE, HT_MIN_MASK));
  ------------------
  |  |  150|  25.8k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  25.8k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  25.8k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  25.8k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  25.8k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|  25.8k|	} else {
  157|     30|		data = emalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK));
  ------------------
  |  |  150|     30|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     30|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     30|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     30|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     30|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|     30|	}
  159|  26.0k|	HT_SET_DATA_ADDR(ht, data);
  ------------------
  |  |  548|  26.0k|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|  26.0k|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|  26.0k|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|  26.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 26.0k]
  |  |  ------------------
  ------------------
  160|       |	/* Don't overwrite iterator count. */
  161|  26.0k|	ht->u.v.flags = HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   43|  26.0k|#define HASH_FLAG_PACKED           (1<<2)
  ------------------
              	ht->u.v.flags = HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|  26.0k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
  162|  26.0k|	HT_HASH_RESET_PACKED(ht);
  ------------------
  |  |  541|  26.0k|#define HT_HASH_RESET_PACKED(ht) do { \
  |  |  542|  26.0k|		HT_HASH(ht, -2) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  470|  26.0k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|  26.0k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		HT_HASH(ht, -2) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  435|  26.0k|#define HT_INVALID_IDX ((uint32_t) -1)
  |  |  ------------------
  |  |  543|  26.0k|		HT_HASH(ht, -1) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  470|  26.0k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|  26.0k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		HT_HASH(ht, -1) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  435|  26.0k|#define HT_INVALID_IDX ((uint32_t) -1)
  |  |  ------------------
  |  |  544|  26.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (544:11): [Folded, False: 26.0k]
  |  |  ------------------
  ------------------
  163|  26.0k|}
zend_hash.c:_zend_is_inconsistent:
   54|  29.7M|{
   55|  29.7M|	if ((HT_FLAGS(ht) & HASH_FLAG_CONSISTENCY) == HT_OK) {
  ------------------
  |  |   52|  29.7M|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	if ((HT_FLAGS(ht) & HASH_FLAG_CONSISTENCY) == HT_OK) {
  ------------------
  |  |   42|  29.7M|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  ------------------
              	if ((HT_FLAGS(ht) & HASH_FLAG_CONSISTENCY) == HT_OK) {
  ------------------
  |  |   48|  29.7M|#define HT_OK					0x00
  ------------------
  |  Branch (55:6): [True: 29.7M, False: 0]
  ------------------
   56|  29.7M|		return;
   57|  29.7M|	}
   58|      0|	switch (HT_FLAGS(ht) & HASH_FLAG_CONSISTENCY) {
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	switch (HT_FLAGS(ht) & HASH_FLAG_CONSISTENCY) {
  ------------------
  |  |   42|      0|#define HASH_FLAG_CONSISTENCY      ((1<<0) | (1<<1))
  ------------------
   59|      0|		case HT_IS_DESTROYING:
  ------------------
  |  |   49|      0|#define HT_IS_DESTROYING		0x01
  ------------------
  |  Branch (59:3): [True: 0, False: 0]
  ------------------
   60|      0|			zend_output_debug_string(1, "%s(%d) : ht=%p is being destroyed", file, line, ht);
   61|      0|			break;
   62|      0|		case HT_DESTROYED:
  ------------------
  |  |   50|      0|#define HT_DESTROYED			0x02
  ------------------
  |  Branch (62:3): [True: 0, False: 0]
  ------------------
   63|      0|			zend_output_debug_string(1, "%s(%d) : ht=%p is already destroyed", file, line, ht);
   64|      0|			break;
   65|      0|		case HT_CLEANING:
  ------------------
  |  |   51|      0|#define HT_CLEANING				0x03
  ------------------
  |  Branch (65:3): [True: 0, False: 0]
  ------------------
   66|      0|			zend_output_debug_string(1, "%s(%d) : ht=%p is being cleaned", file, line, ht);
   67|      0|			break;
   68|      0|		default:
  ------------------
  |  Branch (68:3): [True: 0, False: 0]
  ------------------
   69|      0|			zend_output_debug_string(1, "%s(%d) : ht=%p is inconsistent", file, line, ht);
   70|      0|			break;
   71|      0|	}
   72|      0|	ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (72:2): [Folded, False: 0]
  |  Branch (72:2): [Folded, False: 0]
  ------------------
   73|      0|}
zend_hash.c:zend_hash_real_init_ex:
  233|    289|{
  234|    289|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    289|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    289|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (234:2): [True: 289, False: 0]
  |  Branch (234:2): [True: 0, False: 0]
  |  Branch (234:2): [True: 289, False: 0]
  |  Branch (234:2): [True: 0, False: 0]
  ------------------
  235|    289|	ZEND_ASSERT(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED);
  ------------------
  |  |  112|    289|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (235:2): [True: 0, False: 289]
  |  Branch (235:2): [True: 289, False: 0]
  ------------------
  236|    289|	if (packed) {
  ------------------
  |  Branch (236:6): [True: 2, False: 287]
  ------------------
  237|      2|		zend_hash_real_init_packed_ex(ht);
  238|    287|	} else {
  239|    287|		zend_hash_real_init_mixed_ex(ht);
  240|    287|	}
  241|    289|}
zend_hash.c:zend_hash_real_init_mixed_ex:
  166|  99.7k|{
  167|  99.7k|	void *data;
  168|  99.7k|	uint32_t nSize = ht->nTableSize;
  169|       |
  170|  99.7k|	ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);
  ------------------
  |  |  112|  99.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (170:2): [True: 0, False: 99.7k]
  |  Branch (170:2): [True: 99.7k, False: 0]
  ------------------
  171|       |
  172|  99.7k|	if (UNEXPECTED(GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)) {
  ------------------
  |  |  457|  99.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 649, False: 99.0k]
  |  |  ------------------
  ------------------
  173|    649|		data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), 1);
  ------------------
  |  |  188|    649|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    649|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    649|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    649|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    649|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 649, Folded]
  |  |  ------------------
  ------------------
  174|  99.0k|	} else if (EXPECTED(nSize == HT_MIN_SIZE)) {
  ------------------
  |  |  456|  99.0k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 65.4k, False: 33.6k]
  |  |  ------------------
  ------------------
  175|  65.4k|		data = emalloc(HT_SIZE_EX(HT_MIN_SIZE, HT_SIZE_TO_MASK(HT_MIN_SIZE)));
  ------------------
  |  |  150|  65.4k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  65.4k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  65.4k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  65.4k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  65.4k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|  65.4k|		ht->nTableMask = HT_SIZE_TO_MASK(HT_MIN_SIZE);
  ------------------
  |  |  473|  65.4k|	((uint32_t)(-((nTableSize) + (nTableSize))))
  ------------------
  177|  65.4k|		HT_SET_DATA_ADDR(ht, data);
  ------------------
  |  |  548|  65.4k|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|  65.4k|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|  65.4k|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|  65.4k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 65.4k]
  |  |  ------------------
  ------------------
  178|       |		/* Don't overwrite iterator count. */
  179|  65.4k|		ht->u.v.flags = HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|  65.4k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
  180|       |#if defined(__AVX2__)
  181|       |		do {
  182|       |			__m256i ymm0 = _mm256_setzero_si256();
  183|       |			ymm0 = _mm256_cmpeq_epi64(ymm0, ymm0);
  184|       |			_mm256_storeu_si256((__m256i*)&HT_HASH_EX(data,  0), ymm0);
  185|       |			_mm256_storeu_si256((__m256i*)&HT_HASH_EX(data,  8), ymm0);
  186|       |		} while(0);
  187|       |#elif defined (__SSE2__)
  188|  65.4k|		do {
  189|  65.4k|			__m128i xmm0 = _mm_setzero_si128();
  190|  65.4k|			xmm0 = _mm_cmpeq_epi8(xmm0, xmm0);
  191|  65.4k|			_mm_storeu_si128((__m128i*)&HT_HASH_EX(data,  0), xmm0);
  ------------------
  |  |  468|  65.4k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  192|  65.4k|			_mm_storeu_si128((__m128i*)&HT_HASH_EX(data,  4), xmm0);
  ------------------
  |  |  468|  65.4k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  193|  65.4k|			_mm_storeu_si128((__m128i*)&HT_HASH_EX(data,  8), xmm0);
  ------------------
  |  |  468|  65.4k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  194|  65.4k|			_mm_storeu_si128((__m128i*)&HT_HASH_EX(data, 12), xmm0);
  ------------------
  |  |  468|  65.4k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  195|  65.4k|		} while (0);
  ------------------
  |  Branch (195:12): [Folded, False: 65.4k]
  ------------------
  196|       |#elif defined(__aarch64__) || defined(_M_ARM64)
  197|       |		do {
  198|       |			int32x4_t t = vdupq_n_s32(-1);
  199|       |			vst1q_s32((int32_t*)&HT_HASH_EX(data,  0), t);
  200|       |			vst1q_s32((int32_t*)&HT_HASH_EX(data,  4), t);
  201|       |			vst1q_s32((int32_t*)&HT_HASH_EX(data,  8), t);
  202|       |			vst1q_s32((int32_t*)&HT_HASH_EX(data, 12), t);
  203|       |		} while (0);
  204|       |#else
  205|       |		HT_HASH_EX(data,  0) = -1;
  206|       |		HT_HASH_EX(data,  1) = -1;
  207|       |		HT_HASH_EX(data,  2) = -1;
  208|       |		HT_HASH_EX(data,  3) = -1;
  209|       |		HT_HASH_EX(data,  4) = -1;
  210|       |		HT_HASH_EX(data,  5) = -1;
  211|       |		HT_HASH_EX(data,  6) = -1;
  212|       |		HT_HASH_EX(data,  7) = -1;
  213|       |		HT_HASH_EX(data,  8) = -1;
  214|       |		HT_HASH_EX(data,  9) = -1;
  215|       |		HT_HASH_EX(data, 10) = -1;
  216|       |		HT_HASH_EX(data, 11) = -1;
  217|       |		HT_HASH_EX(data, 12) = -1;
  218|       |		HT_HASH_EX(data, 13) = -1;
  219|       |		HT_HASH_EX(data, 14) = -1;
  220|       |		HT_HASH_EX(data, 15) = -1;
  221|       |#endif
  222|  65.4k|		return;
  223|  65.4k|	} else {
  224|  33.6k|		data = emalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)));
  ------------------
  |  |  150|  33.6k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.6k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.6k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.6k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.6k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  33.6k|	}
  226|  34.2k|	ht->nTableMask = HT_SIZE_TO_MASK(nSize);
  ------------------
  |  |  473|  34.2k|	((uint32_t)(-((nTableSize) + (nTableSize))))
  ------------------
  227|  34.2k|	HT_SET_DATA_ADDR(ht, data);
  ------------------
  |  |  548|  34.2k|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|  34.2k|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|  34.2k|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|  34.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 34.2k]
  |  |  ------------------
  ------------------
  228|  34.2k|	HT_FLAGS(ht) = HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|  34.2k|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(ht) = HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|  34.2k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
  229|       |	HT_HASH_RESET(ht);
  ------------------
  |  |  507|  34.2k|# define HT_HASH_RESET(ht) do { \
  |  |  508|  34.2k|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|  34.2k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|  34.2k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|  34.2k|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|  34.2k|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|  34.2k|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|  34.2k|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|  34.2k|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|  34.2k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|   271k|		do { \
  |  |  514|   271k|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|   271k|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|   271k|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|   271k|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|   271k|			p += 64; \
  |  |  519|   271k|			size -= 64; \
  |  |  520|   271k|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 236k, False: 34.2k]
  |  |  ------------------
  |  |  521|  34.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 34.2k]
  |  |  ------------------
  ------------------
  |  Branch (229:2): [True: 0, False: 34.2k]
  |  Branch (229:2): [True: 0, False: 0]
  |  Branch (229:2): [True: 34.2k, False: 0]
  |  Branch (229:2): [True: 34.2k, False: 0]
  ------------------
  230|  34.2k|}
zend_hash.c:zend_hash_check_size:
  113|   515k|{
  114|       |#ifdef ZEND_WIN32
  115|       |	unsigned long index;
  116|       |#endif
  117|       |
  118|       |	/* Use big enough power of 2 */
  119|       |	/* size should be between HT_MIN_SIZE and HT_MAX_SIZE */
  120|   515k|	if (nSize <= HT_MIN_SIZE) {
  ------------------
  |  |  438|   515k|#define HT_MIN_SIZE 8
  ------------------
  |  Branch (120:6): [True: 448k, False: 67.4k]
  ------------------
  121|   448k|		return HT_MIN_SIZE;
  ------------------
  |  |  438|   448k|#define HT_MIN_SIZE 8
  ------------------
  122|   448k|	} else if (UNEXPECTED(nSize > HT_MAX_SIZE)) {
  ------------------
  |  |  457|  67.4k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 67.4k]
  |  |  ------------------
  ------------------
  123|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%u * %zu + %zu)", nSize, sizeof(Bucket), sizeof(Bucket));
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  124|      0|	}
  125|       |
  126|       |#ifdef ZEND_WIN32
  127|       |	if (BitScanReverse(&index, nSize - 1)) {
  128|       |		return 0x2u << ((31 - index) ^ 0x1f);
  129|       |	} else {
  130|       |		/* nSize is ensured to be in the valid range, fall back to it
  131|       |		   rather than using an undefined bis scan result. */
  132|       |		return nSize;
  133|       |	}
  134|       |#elif (defined(__GNUC__) || __has_builtin(__builtin_clz))  && defined(PHP_HAVE_BUILTIN_CLZ)
  135|  67.4k|	return 0x2u << (__builtin_clz(nSize - 1) ^ 0x1f);
  136|       |#else
  137|       |	nSize -= 1;
  138|       |	nSize |= (nSize >> 1);
  139|       |	nSize |= (nSize >> 2);
  140|       |	nSize |= (nSize >> 4);
  141|       |	nSize |= (nSize >> 8);
  142|       |	nSize |= (nSize >> 16);
  143|       |	return nSize + 1;
  144|       |#endif
  145|   515k|}
zend_hash.c:zend_array_recalc_elements:
  459|      5|{
  460|      5|	zval *val;
  461|      5|	uint32_t num = ht->nNumOfElements;
  462|       |
  463|     28|	ZEND_HASH_MAP_FOREACH_VAL(ht, val) {
  ------------------
  |  | 1325|      9|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      5|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      5|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      5|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      5|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      5|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 9, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      9|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      9|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      9|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 9]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      9|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|      9|	_val = _z;
  ------------------
  |  Branch (463:2): [True: 0, False: 5]
  |  Branch (463:2): [True: 5, False: 0]
  ------------------
  464|     28|		if (Z_TYPE_P(val) == IS_INDIRECT) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(val) == IS_INDIRECT) {
  ------------------
  |  |  629|      9|#define IS_INDIRECT             	12
  ------------------
  |  Branch (464:7): [True: 9, False: 0]
  ------------------
  465|      9|			if (UNEXPECTED(Z_TYPE_P(Z_INDIRECT_P(val)) == IS_UNDEF)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 1]
  |  |  ------------------
  ------------------
  466|      8|				num--;
  467|      8|			}
  468|      9|		}
  469|     28|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      9|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  470|      5|	return num;
  471|      5|}
zend_hash.c:_zend_hash_get_current_pos:
  506|    389|{
  507|    389|	return _zend_hash_get_valid_pos(ht, ht->nInternalPointer);
  508|    389|}
zend_hash.c:_zend_hash_get_valid_pos:
  492|    725|{
  493|    725|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|    725|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    725|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    725|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 593, False: 132]
  |  |  ------------------
  ------------------
  494|    596|		while (pos < ht->nNumUsed && Z_ISUNDEF(ht->arPacked[pos])) {
  ------------------
  |  |  966|    576|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|    576|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|    576|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 3, False: 573]
  |  |  ------------------
  ------------------
  |  Branch (494:10): [True: 576, False: 20]
  ------------------
  495|      3|			pos++;
  496|      3|		}
  497|    593|	} else {
  498|    146|		while (pos < ht->nNumUsed && Z_ISUNDEF(ht->arData[pos].val)) {
  ------------------
  |  |  966|    107|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|    107|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|    107|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 14, False: 93]
  |  |  ------------------
  ------------------
  |  Branch (498:10): [True: 107, False: 39]
  ------------------
  499|     14|			pos++;
  500|     14|		}
  501|    132|	}
  502|    725|	return pos;
  503|    725|}
zend_hash.c:zend_hash_iterator_find_copy_pos:
  575|    389|static zend_always_inline bool zend_hash_iterator_find_copy_pos(uint32_t idx, HashTable *ht) {
  576|    389|	HashTableIterator *iter = EG(ht_iterators) + idx;
  ------------------
  |  |   45|    389|# define EG(v) (executor_globals.v)
  ------------------
  577|       |
  578|    389|	uint32_t next_idx = iter->next_copy;
  579|    389|	if (EXPECTED(next_idx != idx)) {
  ------------------
  |  |  456|    389|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 377]
  |  |  ------------------
  ------------------
  580|     12|		HashTableIterator *copy_iter;
  581|     12|		while (next_idx != idx) {
  ------------------
  |  Branch (581:10): [True: 12, False: 0]
  ------------------
  582|     12|			copy_iter = EG(ht_iterators) + next_idx;
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
  583|     12|			if (copy_iter->ht == ht) {
  ------------------
  |  Branch (583:8): [True: 12, False: 0]
  ------------------
  584|       |				// We have found the hashtable we are actually iterating over
  585|       |				// Now clean any intermittent copies and replace the original index by the found one
  586|     12|				if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
              				if (EXPECTED(iter->ht) && EXPECTED(iter->ht != HT_POISONED_PTR)
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  587|     12|					&& EXPECTED(!HT_ITERATORS_OVERFLOW(iter->ht))) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  588|     12|					HT_DEC_ITERATORS_COUNT(iter->ht);
  ------------------
  |  |   85|     12|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) - 1)
  |  |  ------------------
  |  |  |  |   81|     12|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     12|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|     12|				}
  590|     12|				if (EXPECTED(!HT_ITERATORS_OVERFLOW(ht))) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  591|     12|					HT_INC_ITERATORS_COUNT(ht);
  ------------------
  |  |   83|     12|	HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) + 1)
  |  |  ------------------
  |  |  |  |   81|     12|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|     12|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:50): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|     12|				}
  593|     12|				iter->ht = copy_iter->ht;
  594|     12|				iter->pos = copy_iter->pos;
  595|     12|				zend_hash_remove_iterator_copies(idx);
  596|     12|				return true;
  597|     12|			}
  598|      0|			next_idx = copy_iter->next_copy;
  599|      0|		}
  600|      0|		zend_hash_remove_iterator_copies(idx);
  601|      0|	}
  602|       |
  603|    377|	return false;
  604|    389|}
zend_hash.c:zend_hash_remove_iterator_copies:
  520|     13|static void zend_hash_remove_iterator_copies(uint32_t idx) {
  521|     13|	HashTableIterator *iterators = EG(ht_iterators);
  ------------------
  |  |   45|     13|# define EG(v) (executor_globals.v)
  ------------------
  522|       |
  523|     13|	HashTableIterator *iter = iterators + idx;
  524|     13|	uint32_t next_idx = iter->next_copy;
  525|     90|	while (next_idx != idx) {
  ------------------
  |  Branch (525:9): [True: 77, False: 13]
  ------------------
  526|     77|		uint32_t cur_idx = next_idx;
  527|     77|		HashTableIterator *cur_iter = iterators + cur_idx;
  528|     77|		next_idx = cur_iter->next_copy;
  529|     77|		cur_iter->next_copy = cur_idx; // avoid recursion in zend_hash_iterator_del
  530|     77|		zend_hash_iterator_del(cur_idx);
  531|     77|	}
  532|     13|	iter->next_copy = idx;
  533|     13|}
zend_hash.c:_zend_hash_add_or_update_i:
  823|   231k|{
  824|   231k|	zend_ulong h;
  825|   231k|	uint32_t nIndex;
  826|   231k|	uint32_t idx;
  827|   231k|	Bucket *p, *arData;
  828|       |
  829|   231k|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|   231k|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
  830|   231k|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|   231k|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|   231k|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|   231k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (830:2): [True: 231k, False: 0]
  |  Branch (830:2): [True: 0, False: 0]
  |  Branch (830:2): [True: 231k, False: 0]
  |  Branch (830:2): [True: 0, False: 0]
  ------------------
  831|   231k|	zend_string_hash_val(key);
  832|       |
  833|   231k|	if (UNEXPECTED(HT_FLAGS(ht) & (HASH_FLAG_UNINITIALIZED|HASH_FLAG_PACKED))) {
  ------------------
  |  |  457|   231k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 74.6k, False: 156k]
  |  |  ------------------
  ------------------
  834|  74.6k|		if (EXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |  456|  74.6k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 74.4k, False: 162]
  |  |  ------------------
  ------------------
  835|  74.4k|			zend_hash_real_init_mixed(ht);
  836|  74.4k|			goto add_to_hash;
  837|  74.4k|		} else {
  838|    162|			zend_hash_packed_to_hash(ht);
  839|    162|		}
  840|   156k|	} else if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) {
  ------------------
  |  |   38|   156k|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              	} else if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) {
  ------------------
  |  | 2105|  13.8k|#define ZEND_DEBUG 1
  |  |  ------------------
  |  |  |  Branch (2105:20): [True: 13.8k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (840:13): [True: 142k, False: 13.8k]
  ------------------
  841|   156k|		p = zend_hash_find_bucket(ht, key);
  842|       |
  843|   156k|		if (p) {
  ------------------
  |  Branch (843:7): [True: 28.3k, False: 128k]
  ------------------
  844|  28.3k|			zval *data;
  845|       |
  846|  28.3k|			ZEND_ASSERT((flag & HASH_ADD_NEW) == 0);
  ------------------
  |  |  112|  28.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (846:4): [True: 0, False: 28.3k]
  |  Branch (846:4): [True: 28.3k, False: 0]
  ------------------
  847|  28.3k|			if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|  28.3k|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (847:8): [True: 5, False: 28.3k]
  ------------------
  848|      5|				return &p->val;
  849|  28.3k|			} else if (flag & HASH_ADD) {
  ------------------
  |  |   35|  28.3k|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
  |  Branch (849:15): [True: 70, False: 28.2k]
  ------------------
  850|     70|				if (!(flag & HASH_UPDATE_INDIRECT)) {
  ------------------
  |  |   36|     70|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
  |  Branch (850:9): [True: 65, False: 5]
  ------------------
  851|     65|					return NULL;
  852|     65|				}
  853|      5|				ZEND_ASSERT(&p->val != pData);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (853:5): [True: 0, False: 5]
  |  Branch (853:5): [True: 5, False: 0]
  ------------------
  854|      5|				data = &p->val;
  855|      5|				if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      5|#define IS_INDIRECT             	12
  ------------------
  |  Branch (855:9): [True: 0, False: 5]
  ------------------
  856|      0|					data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  857|      0|					if (Z_TYPE_P(data) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(data) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (857:10): [True: 0, False: 0]
  ------------------
  858|      0|						return NULL;
  859|      0|					}
  860|      5|				} else {
  861|      5|					return NULL;
  862|      5|				}
  863|  28.2k|			} else {
  864|  28.2k|				ZEND_ASSERT(&p->val != pData);
  ------------------
  |  |  112|  28.2k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (864:5): [True: 0, False: 28.2k]
  |  Branch (864:5): [True: 28.2k, False: 0]
  ------------------
  865|  28.2k|				data = &p->val;
  866|  28.2k|				if ((flag & HASH_UPDATE_INDIRECT) && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |   36|  28.2k|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
              				if ((flag & HASH_UPDATE_INDIRECT) && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if ((flag & HASH_UPDATE_INDIRECT) && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (866:9): [True: 0, False: 28.2k]
  |  Branch (866:42): [True: 0, False: 0]
  ------------------
  867|      0|					data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  868|      0|				}
  869|  28.2k|			}
  870|  28.2k|			if (ht->pDestructor) {
  ------------------
  |  Branch (870:8): [True: 28.2k, False: 0]
  ------------------
  871|  28.2k|				ht->pDestructor(data);
  872|  28.2k|			}
  873|  28.2k|			ZVAL_COPY_VALUE(data, pData);
  ------------------
  |  | 1416|  28.2k|	do {												\
  |  | 1417|  28.2k|		zval *_z1 = (z);								\
  |  | 1418|  28.2k|		const zval *_z2 = (v);							\
  |  | 1419|  28.2k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  28.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  28.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  28.2k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  28.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  28.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  28.2k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  28.2k|	do {												\
  |  |  |  | 1408|  28.2k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  28.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  28.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  28.2k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  28.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  28.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  28.2k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 28.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  28.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 28.2k]
  |  |  ------------------
  ------------------
  874|  28.2k|			return data;
  875|  28.3k|		}
  876|   156k|	}
  877|       |
  878|   128k|	ZEND_HASH_IF_FULL_DO_RESIZE(ht);		/* If the Hash table is full, resize it */
  ------------------
  |  |   84|   128k|	if ((ht)->nNumUsed >= (ht)->nTableSize) {		\
  |  |  ------------------
  |  |  |  Branch (84:6): [True: 229, False: 128k]
  |  |  ------------------
  |  |   85|    229|		zend_hash_do_resize(ht);					\
  |  |   86|    229|	}
  ------------------
  879|       |
  880|   202k|add_to_hash:
  881|   202k|	if (!ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (881:6): [True: 19.8k, False: 182k]
  ------------------
  882|  19.8k|		zend_string_addref(key);
  883|  19.8k|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|  19.8k|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|  19.8k|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
  884|  19.8k|	}
  885|   202k|	idx = ht->nNumUsed++;
  886|   202k|	ht->nNumOfElements++;
  887|   202k|	arData = ht->arData;
  888|   202k|	p = arData + idx;
  889|   202k|	p->key = key;
  890|   202k|	p->h = h = ZSTR_H(key);
  ------------------
  |  |   69|   202k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  891|   202k|	nIndex = h | ht->nTableMask;
  892|   202k|	Z_NEXT(p->val) = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  680|   202k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  468|   202k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  893|   202k|	HT_HASH_EX(arData, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  468|   202k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
              	HT_HASH_EX(arData, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|   202k|	(idx)
  ------------------
  894|   202k|	if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|   202k|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (894:6): [True: 376, False: 202k]
  ------------------
  895|    376|		ZVAL_NULL(&p->val);
  ------------------
  |  | 1059|    376|#define ZVAL_NULL(z) do {				\
  |  | 1060|    376|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    376|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    376|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    376|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    376|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 376]
  |  |  ------------------
  ------------------
  896|   202k|	} else {
  897|   202k|		ZVAL_COPY_VALUE(&p->val, pData);
  ------------------
  |  | 1416|   202k|	do {												\
  |  | 1417|   202k|		zval *_z1 = (z);								\
  |  | 1418|   202k|		const zval *_z2 = (v);							\
  |  | 1419|   202k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|   202k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|   202k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|   202k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|   202k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   202k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|   202k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|   202k|	do {												\
  |  |  |  | 1408|   202k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|   202k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|   202k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|   202k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|   202k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|   202k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|   202k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 202k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|   202k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 202k]
  |  |  ------------------
  ------------------
  898|   202k|	}
  899|       |
  900|   202k|	return &p->val;
  901|   128k|}
zend_hash.c:zend_hash_do_resize:
 1316|    301|{
 1317|       |
 1318|    301|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    301|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1319|    301|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    301|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    301|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    301|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1319:2): [True: 301, False: 0]
  |  Branch (1319:2): [True: 0, False: 0]
  |  Branch (1319:2): [True: 301, False: 0]
  |  Branch (1319:2): [True: 0, False: 0]
  ------------------
 1320|       |
 1321|    301|	ZEND_ASSERT(!HT_IS_PACKED(ht));
  ------------------
  |  |  112|    301|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1321:2): [True: 0, False: 301]
  |  Branch (1321:2): [True: 301, False: 0]
  ------------------
 1322|    301|	if (ht->nNumUsed > ht->nNumOfElements + (ht->nNumOfElements >> 5)) { /* additional term is there to amortize the cost of compaction */
  ------------------
  |  Branch (1322:6): [True: 43, False: 258]
  ------------------
 1323|     43|		zend_hash_rehash(ht);
 1324|    258|	} else if (ht->nTableSize < HT_MAX_SIZE) {	/* Let's double the table size */
  ------------------
  |  |  456|    258|# define HT_MAX_SIZE 0x40000000
  ------------------
  |  Branch (1324:13): [True: 258, False: 0]
  ------------------
 1325|    258|		void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|    258|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|    258|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
 1326|    258|		uint32_t nSize = ht->nTableSize + ht->nTableSize;
 1327|    258|		Bucket *old_buckets = ht->arData;
 1328|       |
 1329|    258|		ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);
  ------------------
  |  |  112|    258|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1329:3): [True: 0, False: 258]
  |  Branch (1329:3): [True: 258, False: 0]
  ------------------
 1330|       |
 1331|    258|		new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|    258|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    167|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    167|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    167|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    167|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     91|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     91|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     91|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     91|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     91|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 167, False: 91]
  |  |  ------------------
  ------------------
 1332|    258|		ht->nTableSize = nSize;
 1333|    258|		ht->nTableMask = HT_SIZE_TO_MASK(ht->nTableSize);
  ------------------
  |  |  473|    258|	((uint32_t)(-((nTableSize) + (nTableSize))))
  ------------------
 1334|    258|		HT_SET_DATA_ADDR(ht, new_data);
  ------------------
  |  |  548|    258|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|    258|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|    258|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|    258|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 258]
  |  |  ------------------
  ------------------
 1335|    258|		memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed);
 1336|    258|		pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|    258|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     91|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     91|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     91|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     91|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     91|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 167, False: 91]
  |  |  ------------------
  ------------------
 1337|    258|		zend_hash_rehash(ht);
 1338|    258|	} else {
 1339|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%u * %zu + %zu)", ht->nTableSize * 2, sizeof(Bucket) + sizeof(uint32_t), sizeof(Bucket));
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 1340|      0|	}
 1341|    301|}
zend_hash.c:_zend_hash_str_add_or_update_i:
  904|    826|{
  905|    826|	zend_string *key;
  906|    826|	uint32_t nIndex;
  907|    826|	uint32_t idx;
  908|    826|	Bucket *p;
  909|       |
  910|    826|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|    826|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
  911|    826|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|    826|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|    826|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    826|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (911:2): [True: 826, False: 0]
  |  Branch (911:2): [True: 0, False: 0]
  |  Branch (911:2): [True: 826, False: 0]
  |  Branch (911:2): [True: 0, False: 0]
  ------------------
  912|       |
  913|    826|	if (UNEXPECTED(HT_FLAGS(ht) & (HASH_FLAG_UNINITIALIZED|HASH_FLAG_PACKED))) {
  ------------------
  |  |  457|    826|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 104, False: 722]
  |  |  ------------------
  ------------------
  914|    104|		if (EXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
  ------------------
  |  |  456|    104|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 101, False: 3]
  |  |  ------------------
  ------------------
  915|    101|			zend_hash_real_init_mixed(ht);
  916|    101|			goto add_to_hash;
  917|    101|		} else {
  918|      3|			zend_hash_packed_to_hash(ht);
  919|      3|		}
  920|    722|	} else if ((flag & HASH_ADD_NEW) == 0) {
  ------------------
  |  |   38|    722|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
  |  Branch (920:13): [True: 722, False: 0]
  ------------------
  921|    722|		p = zend_hash_str_find_bucket(ht, str, len, h);
  922|       |
  923|    722|		if (p) {
  ------------------
  |  Branch (923:7): [True: 0, False: 722]
  ------------------
  924|      0|			zval *data;
  925|       |
  926|      0|			if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|      0|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (926:8): [True: 0, False: 0]
  ------------------
  927|      0|				return &p->val;
  928|      0|			} else if (flag & HASH_ADD) {
  ------------------
  |  |   35|      0|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
  |  Branch (928:15): [True: 0, False: 0]
  ------------------
  929|      0|				if (!(flag & HASH_UPDATE_INDIRECT)) {
  ------------------
  |  |   36|      0|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
  |  Branch (929:9): [True: 0, False: 0]
  ------------------
  930|      0|					return NULL;
  931|      0|				}
  932|      0|				ZEND_ASSERT(&p->val != pData);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (932:5): [True: 0, False: 0]
  |  Branch (932:5): [True: 0, False: 0]
  ------------------
  933|      0|				data = &p->val;
  934|      0|				if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (934:9): [True: 0, False: 0]
  ------------------
  935|      0|					data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  936|      0|					if (Z_TYPE_P(data) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(data) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (936:10): [True: 0, False: 0]
  ------------------
  937|      0|						return NULL;
  938|      0|					}
  939|      0|				} else {
  940|      0|					return NULL;
  941|      0|				}
  942|      0|			} else {
  943|      0|				ZEND_ASSERT(&p->val != pData);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (943:5): [True: 0, False: 0]
  |  Branch (943:5): [True: 0, False: 0]
  ------------------
  944|      0|				data = &p->val;
  945|      0|				if ((flag & HASH_UPDATE_INDIRECT) && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |   36|      0|#define HASH_UPDATE_INDIRECT	(1<<2) /* If the given ht entry is an indirect zval, unwrap it before writing to it. \
  ------------------
              				if ((flag & HASH_UPDATE_INDIRECT) && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if ((flag & HASH_UPDATE_INDIRECT) && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (945:9): [True: 0, False: 0]
  |  Branch (945:42): [True: 0, False: 0]
  ------------------
  946|      0|					data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  947|      0|				}
  948|      0|			}
  949|      0|			if (ht->pDestructor) {
  ------------------
  |  Branch (949:8): [True: 0, False: 0]
  ------------------
  950|      0|				ht->pDestructor(data);
  951|      0|			}
  952|      0|			ZVAL_COPY_VALUE(data, pData);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  953|      0|			return data;
  954|      0|		}
  955|    722|	}
  956|       |
  957|    725|	ZEND_HASH_IF_FULL_DO_RESIZE(ht);		/* If the Hash table is full, resize it */
  ------------------
  |  |   84|    725|	if ((ht)->nNumUsed >= (ht)->nTableSize) {		\
  |  |  ------------------
  |  |  |  Branch (84:6): [True: 0, False: 725]
  |  |  ------------------
  |  |   85|      0|		zend_hash_do_resize(ht);					\
  |  |   86|      0|	}
  ------------------
  958|       |
  959|    826|add_to_hash:
  960|    826|	idx = ht->nNumUsed++;
  961|    826|	ht->nNumOfElements++;
  962|    826|	p = ht->arData + idx;
  963|    826|	p->key = key = zend_string_init(str, len, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  777|    826|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    826|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	p->key = key = zend_string_init(str, len, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  845|    826|#define IS_ARRAY_PERSISTENT			GC_PERSISTENT
  |  |  ------------------
  |  |  |  |  802|    826|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
  964|       |#if ZEND_RC_DEBUG
  965|       |	if (GC_FLAGS(ht) & GC_PERSISTENT_LOCAL) {
  966|       |		GC_MAKE_PERSISTENT_LOCAL(key);
  967|       |	}
  968|       |#endif
  969|    826|	p->h = ZSTR_H(key) = h;
  ------------------
  |  |   69|    826|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  970|    826|	HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|    826|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|    826|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
  971|    826|	if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|    826|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (971:6): [True: 0, False: 826]
  ------------------
  972|      0|		ZVAL_NULL(&p->val);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  973|    826|	} else {
  974|    826|		ZVAL_COPY_VALUE(&p->val, pData);
  ------------------
  |  | 1416|    826|	do {												\
  |  | 1417|    826|		zval *_z1 = (z);								\
  |  | 1418|    826|		const zval *_z2 = (v);							\
  |  | 1419|    826|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    826|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    826|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    826|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    826|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    826|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    826|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    826|	do {												\
  |  |  |  | 1408|    826|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    826|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    826|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    826|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    826|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    826|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    826|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 826]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    826|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 826]
  |  |  ------------------
  ------------------
  975|    826|	}
  976|    826|	nIndex = h | ht->nTableMask;
  977|    826|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|    826|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|    826|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    826|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
  978|    826|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|    826|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    826|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|    826|	(idx)
  ------------------
  979|       |
  980|    826|	return &p->val;
  981|    725|}
zend_hash.c:_zend_hash_index_add_or_update_i:
 1096|  10.8M|{
 1097|  10.8M|	uint32_t nIndex;
 1098|  10.8M|	uint32_t idx;
 1099|  10.8M|	Bucket *p;
 1100|  10.8M|	zval *zv;
 1101|       |
 1102|  10.8M|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|  10.8M|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 1103|  10.8M|	HT_ASSERT_RC1(ht);
  ------------------
  |  |   42|  10.8M|#define HT_ASSERT_RC1(ht) HT_ASSERT(ht, GC_REFCOUNT(ht) == 1)
  |  |  ------------------
  |  |  |  |   37|  10.8M|	ZEND_ASSERT((expr) || (HT_FLAGS(ht) & HASH_FLAG_ALLOW_COW_VIOLATION))
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  10.8M|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1103:2): [True: 10.8M, False: 0]
  |  Branch (1103:2): [True: 0, False: 0]
  |  Branch (1103:2): [True: 10.8M, False: 0]
  |  Branch (1103:2): [True: 0, False: 0]
  ------------------
 1104|       |
 1105|  10.8M|	if ((flag & HASH_ADD_NEXT) && h == ZEND_LONG_MIN) {
  ------------------
  |  |   39|  10.8M|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
              	if ((flag & HASH_ADD_NEXT) && h == ZEND_LONG_MIN) {
  ------------------
  |  |   35|  2.11M|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (1105:6): [True: 2.11M, False: 8.69M]
  |  Branch (1105:32): [True: 13.1k, False: 2.10M]
  ------------------
 1106|  13.1k|		h = 0;
 1107|  13.1k|	}
 1108|       |
 1109|  10.8M|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|  10.8M|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  10.8M|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  10.8M|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 2.10M, False: 8.70M]
  |  |  ------------------
  ------------------
 1110|  2.10M|		if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)
  ------------------
  |  |   38|  2.10M|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              		if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)
  ------------------
  |  |   39|  2.10M|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
              		if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)
  ------------------
  |  |   38|  2.10M|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              		if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)
  ------------------
  |  |   39|  2.10M|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
  |  Branch (1110:7): [True: 2.10M, False: 138]
  ------------------
 1111|  2.10M|		 && h < ht->nNumUsed) {
  ------------------
  |  Branch (1111:7): [True: 2.99k, False: 2.10M]
  ------------------
 1112|  2.99k|			zv = ht->arPacked + h;
 1113|  2.99k|			if (flag & HASH_ADD_NEW) {
  ------------------
  |  |   38|  2.99k|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
  |  Branch (1113:8): [True: 2, False: 2.99k]
  ------------------
 1114|      2|				ZEND_ASSERT(Z_TYPE_P(zv) == IS_UNDEF);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1114:5): [True: 0, False: 2]
  |  Branch (1114:5): [True: 2, False: 0]
  ------------------
 1115|      2|				goto convert_to_hash;
 1116|  2.99k|			} else if (Z_TYPE_P(zv) != IS_UNDEF) {
  ------------------
  |  |  669|  2.99k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.99k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(zv) != IS_UNDEF) {
  ------------------
  |  |  606|  2.99k|#define IS_UNDEF					0
  ------------------
  |  Branch (1116:15): [True: 2.98k, False: 11]
  ------------------
 1117|  2.98k|				if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|  2.98k|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (1117:9): [True: 0, False: 2.98k]
  ------------------
 1118|      0|					return zv;
 1119|      0|				}
 1120|  8.75k|replace:
 1121|  8.75k|				if (flag & HASH_ADD) {
  ------------------
  |  |   35|  8.75k|#define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
  ------------------
  |  Branch (1121:9): [True: 2.52k, False: 6.22k]
  ------------------
 1122|  2.52k|					return NULL;
 1123|  2.52k|				}
 1124|  6.22k|				if (ht->pDestructor) {
  ------------------
  |  Branch (1124:9): [True: 6.22k, False: 0]
  ------------------
 1125|  6.22k|					ht->pDestructor(zv);
 1126|  6.22k|				}
 1127|  6.22k|				ZVAL_COPY_VALUE(zv, pData);
  ------------------
  |  | 1416|  6.22k|	do {												\
  |  | 1417|  6.22k|		zval *_z1 = (z);								\
  |  | 1418|  6.22k|		const zval *_z2 = (v);							\
  |  | 1419|  6.22k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  6.22k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  6.22k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  6.22k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  6.22k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  6.22k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  6.22k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  6.22k|	do {												\
  |  |  |  | 1408|  6.22k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  6.22k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  6.22k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  6.22k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  6.22k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  6.22k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  6.22k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6.22k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  6.22k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6.22k]
  |  |  ------------------
  ------------------
 1128|  6.22k|				return zv;
 1129|  8.75k|			} else { /* we have to keep the order :( */
 1130|     11|				goto convert_to_hash;
 1131|     11|			}
 1132|  2.10M|		} else if (EXPECTED(h < ht->nTableSize)) {
  ------------------
  |  |  456|  2.10M|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.10M, False: 106]
  |  |  ------------------
  ------------------
 1133|  2.12M|add_to_packed:
 1134|  2.12M|			zv = ht->arPacked + h;
 1135|       |			/* incremental initialization of empty Buckets */
 1136|  2.12M|			if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)) {
  ------------------
  |  |   38|  2.12M|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              			if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)) {
  ------------------
  |  |   39|  2.12M|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
              			if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)) {
  ------------------
  |  |   38|  2.12M|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              			if ((flag & (HASH_ADD_NEW|HASH_ADD_NEXT)) != (HASH_ADD_NEW|HASH_ADD_NEXT)) {
  ------------------
  |  |   39|  2.12M|#define HASH_ADD_NEXT			(1<<4) /* Append to an array. (e.g. $array[] = 42;) */
  ------------------
  |  Branch (1136:8): [True: 2.10M, False: 12.3k]
  ------------------
 1137|  2.10M|				if (h > ht->nNumUsed) {
  ------------------
  |  Branch (1137:9): [True: 460, False: 2.10M]
  ------------------
 1138|    460|					zval *q = ht->arPacked + ht->nNumUsed;
 1139|  2.23k|					while (q != zv) {
  ------------------
  |  Branch (1139:13): [True: 1.77k, False: 460]
  ------------------
 1140|  1.77k|						ZVAL_UNDEF(q);
  ------------------
  |  | 1055|  1.77k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  1.77k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  1.77k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.77k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  1.77k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  1.77k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1.77k]
  |  |  ------------------
  ------------------
 1141|  1.77k|						q++;
 1142|  1.77k|					}
 1143|    460|				}
 1144|  2.10M|			}
 1145|  2.12M|			ht->nNextFreeElement = ht->nNumUsed = h + 1;
 1146|  2.12M|			ht->nNumOfElements++;
 1147|  2.12M|			if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|  2.12M|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (1147:8): [True: 471, False: 2.11M]
  ------------------
 1148|    471|				ZVAL_NULL(zv);
  ------------------
  |  | 1059|    471|#define ZVAL_NULL(z) do {				\
  |  | 1060|    471|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    471|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    471|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    471|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    471|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 471]
  |  |  ------------------
  ------------------
 1149|  2.11M|			} else {
 1150|  2.11M|				ZVAL_COPY_VALUE(zv, pData);
  ------------------
  |  | 1416|  2.11M|	do {												\
  |  | 1417|  2.11M|		zval *_z1 = (z);								\
  |  | 1418|  2.11M|		const zval *_z2 = (v);							\
  |  | 1419|  2.11M|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  2.11M|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  2.11M|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  2.11M|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  2.11M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.11M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  2.11M|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  2.11M|	do {												\
  |  |  |  | 1408|  2.11M|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  2.11M|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  2.11M|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  2.11M|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  2.11M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  2.11M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  2.11M|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2.11M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  2.11M|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2.11M]
  |  |  ------------------
  ------------------
 1151|  2.11M|			}
 1152|       |
 1153|  2.12M|			return zv;
 1154|  2.10M|		} else if ((h >> 1) < ht->nTableSize &&
  ------------------
  |  Branch (1154:14): [True: 98, False: 8]
  ------------------
 1155|     98|		           (ht->nTableSize >> 1) < ht->nNumOfElements) {
  ------------------
  |  Branch (1155:14): [True: 97, False: 1]
  ------------------
 1156|     97|			zend_hash_packed_grow(ht);
 1157|     97|			goto add_to_packed;
 1158|     97|		} else {
 1159|      9|			if (ht->nNumUsed >= ht->nTableSize) {
  ------------------
  |  Branch (1159:8): [True: 0, False: 9]
  ------------------
 1160|      0|				ht->nTableSize += ht->nTableSize;
 1161|      0|			}
 1162|     22|convert_to_hash:
 1163|     22|			zend_hash_packed_to_hash(ht);
 1164|     22|		}
 1165|  8.70M|	} else if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) {
  ------------------
  |  |   52|  8.70M|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	} else if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) {
  ------------------
  |  |   44|  8.70M|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  |  Branch (1165:13): [True: 14.1k, False: 8.69M]
  ------------------
 1166|  14.1k|		if (h < ht->nTableSize) {
  ------------------
  |  Branch (1166:7): [True: 13.9k, False: 145]
  ------------------
 1167|  13.9k|			zend_hash_real_init_packed_ex(ht);
 1168|  13.9k|			goto add_to_packed;
 1169|  13.9k|		}
 1170|    145|		zend_hash_real_init_mixed(ht);
 1171|  8.69M|	} else {
 1172|  8.69M|		if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) {
  ------------------
  |  |   38|  8.69M|#define HASH_ADD_NEW			(1<<3) /* Used when the offset is known not to exist. */
  ------------------
              		if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) {
  ------------------
  |  | 2105|  8.68M|#define ZEND_DEBUG 1
  |  |  ------------------
  |  |  |  Branch (2105:20): [True: 8.68M, Folded]
  |  |  ------------------
  ------------------
  |  Branch (1172:7): [True: 8.29k, False: 8.68M]
  ------------------
 1173|  8.69M|			p = zend_hash_index_find_bucket(ht, h);
 1174|  8.69M|			if (p) {
  ------------------
  |  Branch (1174:8): [True: 6.31k, False: 8.68M]
  ------------------
 1175|  6.31k|				if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|  6.31k|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (1175:9): [True: 547, False: 5.77k]
  ------------------
 1176|    547|					return &p->val;
 1177|    547|				}
 1178|  5.77k|				ZEND_ASSERT((flag & HASH_ADD_NEW) == 0);
  ------------------
  |  |  112|  5.77k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1178:5): [True: 0, False: 5.77k]
  |  Branch (1178:5): [True: 5.77k, False: 0]
  ------------------
 1179|  5.77k|				zv = &p->val;
 1180|  5.77k|				goto replace;
 1181|  5.77k|			}
 1182|  8.69M|		}
 1183|  8.68M|		ZEND_HASH_IF_FULL_DO_RESIZE(ht);		/* If the Hash table is full, resize it */
  ------------------
  |  |   84|  8.68M|	if ((ht)->nNumUsed >= (ht)->nTableSize) {		\
  |  |  ------------------
  |  |  |  Branch (84:6): [True: 72, False: 8.68M]
  |  |  ------------------
  |  |   85|     72|		zend_hash_do_resize(ht);					\
  |  |   86|     72|	}
  ------------------
 1184|  8.68M|	}
 1185|       |
 1186|  8.68M|	idx = ht->nNumUsed++;
 1187|  8.68M|	nIndex = h | ht->nTableMask;
 1188|  8.68M|	p = ht->arData + idx;
 1189|  8.68M|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|  8.68M|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  8.68M|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  8.68M|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1190|  8.68M|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|  8.68M|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  8.68M|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|  8.68M|	(idx)
  ------------------
 1191|  8.68M|	if ((zend_long)h >= ht->nNextFreeElement) {
  ------------------
  |  Branch (1191:6): [True: 192k, False: 8.49M]
  ------------------
 1192|   192k|		ht->nNextFreeElement = (zend_long)h < ZEND_LONG_MAX ? h + 1 : ZEND_LONG_MAX;
  ------------------
  |  |   34|   192k|# define ZEND_LONG_MAX INT64_MAX
  ------------------
              		ht->nNextFreeElement = (zend_long)h < ZEND_LONG_MAX ? h + 1 : ZEND_LONG_MAX;
  ------------------
  |  |   34|   192k|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (1192:26): [True: 192k, False: 5]
  ------------------
 1193|   192k|	}
 1194|  8.68M|	ht->nNumOfElements++;
 1195|  8.68M|	p->h = h;
 1196|  8.68M|	p->key = NULL;
 1197|  8.68M|	if (flag & HASH_LOOKUP) {
  ------------------
  |  |   40|  8.68M|#define HASH_LOOKUP				(1<<5) /* Look up an existing entry, or create one with a NULL value. */
  ------------------
  |  Branch (1197:6): [True: 593, False: 8.68M]
  ------------------
 1198|    593|		ZVAL_NULL(&p->val);
  ------------------
  |  | 1059|    593|#define ZVAL_NULL(z) do {				\
  |  | 1060|    593|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    593|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    593|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    593|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    593|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 593]
  |  |  ------------------
  ------------------
 1199|  8.68M|	} else {
 1200|  8.68M|		ZVAL_COPY_VALUE(&p->val, pData);
  ------------------
  |  | 1416|  8.68M|	do {												\
  |  | 1417|  8.68M|		zval *_z1 = (z);								\
  |  | 1418|  8.68M|		const zval *_z2 = (v);							\
  |  | 1419|  8.68M|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  8.68M|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  8.68M|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  8.68M|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  8.68M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  8.68M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  8.68M|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  8.68M|	do {												\
  |  |  |  | 1408|  8.68M|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  8.68M|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  8.68M|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  8.68M|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  8.68M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  8.68M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  8.68M|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8.68M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  8.68M|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 8.68M]
  |  |  ------------------
  ------------------
 1201|  8.68M|	}
 1202|       |
 1203|  8.68M|	return &p->val;
 1204|  10.8M|}
zend_hash.c:zend_hash_find_bucket:
  744|   497k|{
  745|   497k|	uint32_t nIndex;
  746|   497k|	uint32_t idx;
  747|   497k|	Bucket *p, *arData;
  748|       |
  749|   497k|	ZEND_ASSERT(ZSTR_H(key) != 0 && "Hash must be known");
  ------------------
  |  |  112|   497k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (749:2): [True: 0, False: 497k]
  |  Branch (749:2): [True: 0, False: 0]
  |  Branch (749:2): [True: 497k, False: 0]
  |  Branch (749:2): [True: 497k, False: 0]
  ------------------
  750|       |
  751|   497k|	arData = ht->arData;
  752|   497k|	nIndex = ZSTR_H(key) | ht->nTableMask;
  ------------------
  |  |   69|   497k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  753|   497k|	idx = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  468|   497k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  754|       |
  755|   497k|	if (UNEXPECTED(idx == HT_INVALID_IDX)) {
  ------------------
  |  |  457|   497k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 164k, False: 332k]
  |  |  ------------------
  ------------------
  756|   164k|		return NULL;
  757|   164k|	}
  758|   332k|	p = HT_HASH_TO_BUCKET_EX(arData, idx);
  ------------------
  |  |  458|   332k|	((data) + (idx))
  ------------------
  759|   332k|	if (EXPECTED(p->key == key)) { /* check for the same interned string */
  ------------------
  |  |  456|   332k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 274k, False: 58.6k]
  |  |  ------------------
  ------------------
  760|   274k|		return p;
  761|   274k|	}
  762|       |
  763|  62.5k|	while (1) {
  ------------------
  |  Branch (763:9): [True: 62.5k, Folded]
  ------------------
  764|  62.5k|		if (p->h == ZSTR_H(key) &&
  ------------------
  |  |   69|   125k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  |  Branch (764:7): [True: 38.9k, False: 23.6k]
  ------------------
  765|  38.9k|		    EXPECTED(p->key) &&
  ------------------
  |  |  456|   101k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 38.9k, False: 0]
  |  |  ------------------
  ------------------
  766|  38.9k|		    zend_string_equal_content(p->key, key)) {
  ------------------
  |  Branch (766:7): [True: 38.9k, False: 4]
  ------------------
  767|  38.9k|			return p;
  768|  38.9k|		}
  769|  23.6k|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|  23.6k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  770|  23.6k|		if (idx == HT_INVALID_IDX) {
  ------------------
  |  |  435|  23.6k|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (770:7): [True: 18.2k, False: 5.42k]
  ------------------
  771|  18.2k|			return NULL;
  772|  18.2k|		}
  773|  5.42k|		p = HT_HASH_TO_BUCKET_EX(arData, idx);
  ------------------
  |  |  458|  5.42k|	((data) + (idx))
  ------------------
  774|  5.42k|		if (p->key == key) { /* check for the same interned string */
  ------------------
  |  Branch (774:7): [True: 1.50k, False: 3.91k]
  ------------------
  775|  1.50k|			return p;
  776|  1.50k|		}
  777|  5.42k|	}
  778|  58.6k|}
zend_hash.c:_zend_hash_packed_del_val:
 1462|  1.00k|{
 1463|  1.00k|	idx = HT_HASH_TO_IDX(idx);
  ------------------
  |  |  462|  1.00k|	(idx)
  ------------------
 1464|  1.00k|	ht->nNumOfElements--;
 1465|  1.00k|	if (ht->nNumUsed - 1 == idx) {
  ------------------
  |  Branch (1465:6): [True: 995, False: 6]
  ------------------
 1466|  1.08k|		do {
 1467|  1.08k|			ht->nNumUsed--;
 1468|  1.08k|		} while (ht->nNumUsed > 0 && (UNEXPECTED(Z_TYPE(ht->arPacked[ht->nNumUsed-1]) == IS_UNDEF)));
  ------------------
  |  |  457|    764|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
  |  Branch (1468:12): [True: 764, False: 319]
  |  Branch (1468:32): [True: 88, False: 676]
  ------------------
 1469|    995|		ht->nInternalPointer = MIN(ht->nInternalPointer, ht->nNumUsed);
  ------------------
  |  |  518|    995|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 676, False: 319]
  |  |  ------------------
  ------------------
 1470|    995|		zend_hash_iterators_clamp_max(ht, ht->nNumUsed);
 1471|    995|	}
 1472|  1.00k|	if (ht->pDestructor) {
  ------------------
  |  Branch (1472:6): [True: 1.00k, False: 0]
  ------------------
 1473|  1.00k|		zval tmp;
 1474|  1.00k|		ZVAL_COPY_VALUE(&tmp, zv);
  ------------------
  |  | 1416|  1.00k|	do {												\
  |  | 1417|  1.00k|		zval *_z1 = (z);								\
  |  | 1418|  1.00k|		const zval *_z2 = (v);							\
  |  | 1419|  1.00k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  1.00k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  1.00k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  1.00k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  1.00k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.00k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  1.00k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  1.00k|	do {												\
  |  |  |  | 1408|  1.00k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  1.00k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  1.00k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  1.00k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.00k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.00k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  1.00k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1.00k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  1.00k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1.00k]
  |  |  ------------------
  ------------------
 1475|  1.00k|		ZVAL_UNDEF(zv);
  ------------------
  |  | 1055|  1.00k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  1.00k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  1.00k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.00k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  1.00k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  1.00k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1.00k]
  |  |  ------------------
  ------------------
 1476|  1.00k|		ht->pDestructor(&tmp);
 1477|  1.00k|	} else {
 1478|      0|		ZVAL_UNDEF(zv);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1479|      0|	}
 1480|  1.00k|}
zend_hash.c:zend_hash_iterators_clamp_max:
 1448|  7.45M|{
 1449|  7.45M|	if (UNEXPECTED(HT_HAS_ITERATORS(ht))) {
  ------------------
  |  |  457|  7.45M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 378, False: 7.45M]
  |  |  ------------------
  ------------------
 1450|    378|		HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|    378|# define EG(v) (executor_globals.v)
  ------------------
 1451|    378|		const HashTableIterator *end = iter + EG(ht_iterators_used);
  ------------------
  |  |   45|    378|# define EG(v) (executor_globals.v)
  ------------------
 1452|    756|		while (iter != end) {
  ------------------
  |  Branch (1452:10): [True: 378, False: 378]
  ------------------
 1453|    378|			if (iter->ht == ht) {
  ------------------
  |  Branch (1453:8): [True: 378, False: 0]
  ------------------
 1454|    378|				iter->pos = MIN(iter->pos, max);
  ------------------
  |  |  518|    378|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 378]
  |  |  ------------------
  ------------------
 1455|    378|			}
 1456|    378|			iter++;
 1457|    378|		}
 1458|    378|	}
 1459|  7.45M|}
zend_hash.c:_zend_hash_del_el:
 1509|  8.78M|{
 1510|  8.78M|	Bucket *prev = NULL;
 1511|  8.78M|	uint32_t nIndex;
 1512|  8.78M|	uint32_t i;
 1513|       |
 1514|  8.78M|	nIndex = p->h | ht->nTableMask;
 1515|  8.78M|	i = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  8.78M|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  8.78M|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1516|       |
 1517|  8.78M|	if (i != idx) {
  ------------------
  |  Branch (1517:6): [True: 6.96k, False: 8.78M]
  ------------------
 1518|  6.96k|		prev = HT_HASH_TO_BUCKET(ht, i);
  ------------------
  |  |  546|  6.96k|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|  6.96k|	((data) + (idx))
  |  |  ------------------
  ------------------
 1519|  7.54k|		while (Z_NEXT(prev->val) != idx) {
  ------------------
  |  |  680|  7.54k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  |  Branch (1519:10): [True: 585, False: 6.96k]
  ------------------
 1520|    585|			i = Z_NEXT(prev->val);
  ------------------
  |  |  680|    585|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1521|    585|			prev = HT_HASH_TO_BUCKET(ht, i);
  ------------------
  |  |  546|    585|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|    585|	((data) + (idx))
  |  |  ------------------
  ------------------
 1522|    585|		}
 1523|  6.96k|	}
 1524|       |
 1525|  8.78M|	if (p->key) {
  ------------------
  |  Branch (1525:6): [True: 138k, False: 8.64M]
  ------------------
 1526|   138k|		zend_string_release(p->key);
 1527|       |		p->key = NULL;
 1528|   138k|	}
 1529|  8.78M|	_zend_hash_del_el_ex(ht, idx, p, prev);
 1530|  8.78M|}
zend_hash.c:_zend_hash_del_el_ex:
 1483|  8.78M|{
 1484|  8.78M|	if (prev) {
  ------------------
  |  Branch (1484:6): [True: 6.98k, False: 8.78M]
  ------------------
 1485|  6.98k|		Z_NEXT(prev->val) = Z_NEXT(p->val);
  ------------------
  |  |  680|  6.98k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              		Z_NEXT(prev->val) = Z_NEXT(p->val);
  ------------------
  |  |  680|  6.98k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1486|  8.78M|	} else {
 1487|  8.78M|		HT_HASH(ht, p->h | ht->nTableMask) = Z_NEXT(p->val);
  ------------------
  |  |  470|  8.78M|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  8.78M|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              		HT_HASH(ht, p->h | ht->nTableMask) = Z_NEXT(p->val);
  ------------------
  |  |  680|  8.78M|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
 1488|  8.78M|	}
 1489|  8.78M|	idx = HT_HASH_TO_IDX(idx);
  ------------------
  |  |  462|  8.78M|	(idx)
  ------------------
 1490|  8.78M|	ht->nNumOfElements--;
 1491|  8.78M|	if (ht->nNumUsed - 1 == idx) {
  ------------------
  |  Branch (1491:6): [True: 7.45M, False: 1.33M]
  ------------------
 1492|  8.47M|		do {
 1493|  8.47M|			ht->nNumUsed--;
 1494|  8.47M|		} while (ht->nNumUsed > 0 && (UNEXPECTED(Z_TYPE(ht->arData[ht->nNumUsed-1].val) == IS_UNDEF)));
  ------------------
  |  |  457|  8.41M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
  |  Branch (1494:12): [True: 8.41M, False: 67.2k]
  |  Branch (1494:32): [True: 1.02M, False: 7.38M]
  ------------------
 1495|  7.45M|		ht->nInternalPointer = MIN(ht->nInternalPointer, ht->nNumUsed);
  ------------------
  |  |  518|  7.45M|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 7.38M, False: 67.2k]
  |  |  ------------------
  ------------------
 1496|  7.45M|		zend_hash_iterators_clamp_max(ht, ht->nNumUsed);
 1497|  7.45M|	}
 1498|  8.78M|	if (ht->pDestructor) {
  ------------------
  |  Branch (1498:6): [True: 140k, False: 8.64M]
  ------------------
 1499|   140k|		zval tmp;
 1500|   140k|		ZVAL_COPY_VALUE(&tmp, &p->val);
  ------------------
  |  | 1416|   140k|	do {												\
  |  | 1417|   140k|		zval *_z1 = (z);								\
  |  | 1418|   140k|		const zval *_z2 = (v);							\
  |  | 1419|   140k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|   140k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|   140k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|   140k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|   140k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   140k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|   140k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|   140k|	do {												\
  |  |  |  | 1408|   140k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|   140k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|   140k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|   140k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|   140k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|   140k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|   140k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 140k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|   140k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 140k]
  |  |  ------------------
  ------------------
 1501|   140k|		ZVAL_UNDEF(&p->val);
  ------------------
  |  | 1055|   140k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|   140k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|   140k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   140k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|   140k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|   140k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 140k]
  |  |  ------------------
  ------------------
 1502|   140k|		ht->pDestructor(&tmp);
 1503|  8.64M|	} else {
 1504|  8.64M|		ZVAL_UNDEF(&p->val);
  ------------------
  |  | 1055|  8.64M|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  8.64M|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  8.64M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  8.64M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  8.64M|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  8.64M|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 8.64M]
  |  |  ------------------
  ------------------
 1505|  8.64M|	}
 1506|  8.78M|}
zend_hash.c:zend_hash_iterators_remove:
  693|   229k|{
  694|   229k|	if (UNEXPECTED(HT_HAS_ITERATORS(ht))) {
  ------------------
  |  |  457|   229k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 383, False: 228k]
  |  |  ------------------
  ------------------
  695|    383|		_zend_hash_iterators_remove(ht);
  696|    383|	}
  697|   229k|}
zend_hash.c:_zend_hash_iterators_remove:
  680|    383|{
  681|    383|	HashTableIterator *iter = EG(ht_iterators);
  ------------------
  |  |   45|    383|# define EG(v) (executor_globals.v)
  ------------------
  682|    383|	const HashTableIterator *end = iter + EG(ht_iterators_used);
  ------------------
  |  |   45|    383|# define EG(v) (executor_globals.v)
  ------------------
  683|       |
  684|  2.97k|	while (iter != end) {
  ------------------
  |  Branch (684:9): [True: 2.59k, False: 383]
  ------------------
  685|  2.59k|		if (iter->ht == ht) {
  ------------------
  |  Branch (685:7): [True: 448, False: 2.14k]
  ------------------
  686|    448|			iter->ht = HT_POISONED_PTR;
  ------------------
  |  |   44|    448|#define HT_POISONED_PTR ((HashTable *) (intptr_t) -1)
  ------------------
  687|    448|		}
  688|  2.59k|		iter++;
  689|  2.59k|	}
  690|    383|}
zend_hash.c:zend_array_dup_packed_elements:
 2381|    467|{
 2382|    467|	zval *p = source->arPacked;
 2383|    467|	zval *q = target->arPacked;
 2384|    467|	const zval *end = p + source->nNumUsed;
 2385|       |
 2386|    780|	do {
 2387|    780|		if (!zend_array_dup_value(source, p, q, true, with_holes)) {
  ------------------
  |  Branch (2387:7): [True: 14, False: 766]
  ------------------
 2388|     14|			if (with_holes) {
  ------------------
  |  Branch (2388:8): [True: 14, False: 0]
  ------------------
 2389|     14|				ZVAL_UNDEF(q);
  ------------------
  |  | 1055|     14|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     14|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     14|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2390|     14|			}
 2391|     14|		}
 2392|    780|		p++; q++;
 2393|    780|	} while (p != end);
  ------------------
  |  Branch (2393:11): [True: 313, False: 467]
  ------------------
 2394|       |
 2395|    467|	if (UNEXPECTED(HT_HAS_ITERATORS(source))) {
  ------------------
  |  |  457|    467|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 66, False: 401]
  |  |  ------------------
  ------------------
 2396|     66|		zend_array_dup_ht_iterators(source, target);
 2397|     66|	}
 2398|    467|}
zend_hash.c:zend_array_dup_value:
 2303|  1.06k|{
 2304|  1.06k|	if (with_holes) {
  ------------------
  |  Branch (2304:6): [True: 26, False: 1.03k]
  ------------------
 2305|     26|		if (!packed && Z_TYPE_INFO_P(data) == IS_INDIRECT) {
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if (!packed && Z_TYPE_INFO_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (2305:7): [True: 0, False: 26]
  |  Branch (2305:18): [True: 0, False: 0]
  ------------------
 2306|      0|			data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 2307|      0|		}
 2308|     26|		if (UNEXPECTED(Z_TYPE_INFO_P(data) == IS_UNDEF)) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 12]
  |  |  ------------------
  ------------------
 2309|     14|			return 0;
 2310|     14|		}
 2311|  1.03k|	} else if (!packed) {
  ------------------
  |  Branch (2311:13): [True: 284, False: 754]
  ------------------
 2312|       |		/* INDIRECT element may point to UNDEF-ined slots */
 2313|    284|		if (Z_TYPE_INFO_P(data) == IS_INDIRECT) {
  ------------------
  |  |  678|    284|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    284|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		if (Z_TYPE_INFO_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|    284|#define IS_INDIRECT             	12
  ------------------
  |  Branch (2313:7): [True: 42, False: 242]
  ------------------
 2314|     42|			data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|     42|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|     42|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 2315|     42|			if (UNEXPECTED(Z_TYPE_INFO_P(data) == IS_UNDEF)) {
  ------------------
  |  |  457|     42|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 25, False: 17]
  |  |  ------------------
  ------------------
 2316|     25|				return 0;
 2317|     25|			}
 2318|     42|		}
 2319|    284|	}
 2320|       |
 2321|  1.02k|	do {
 2322|  1.02k|		if (Z_OPT_REFCOUNTED_P(data)) {
  ------------------
  |  |  955|  1.02k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|  1.02k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|  1.02k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|  1.02k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 376, False: 649]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2323|    376|			if (Z_ISREF_P(data) && Z_REFCOUNT_P(data) == 1 &&
  ------------------
  |  |  964|    376|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    752|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    376|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    376|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 151, False: 225]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(data) && Z_REFCOUNT_P(data) == 1 &&
  ------------------
  |  | 1275|    151|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (2323:27): [True: 3, False: 148]
  ------------------
 2324|      3|			    (Z_TYPE_P(Z_REFVAL_P(data)) != IS_ARRAY ||
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			    (Z_TYPE_P(Z_REFVAL_P(data)) != IS_ARRAY ||
  ------------------
  |  |  613|      6|#define IS_ARRAY					7
  ------------------
  |  Branch (2324:9): [True: 1, False: 2]
  ------------------
 2325|      2|			      Z_ARRVAL_P(Z_REFVAL_P(data)) != source)) {
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2325:10): [True: 0, False: 2]
  ------------------
 2326|      1|				data = Z_REFVAL_P(data);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2327|      1|				if (!Z_OPT_REFCOUNTED_P(data)) {
  ------------------
  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2327:9): [True: 1, False: 0]
  ------------------
 2328|      1|					break;
 2329|      1|				}
 2330|      1|			}
 2331|    375|			Z_ADDREF_P(data);
  ------------------
  |  | 1277|    375|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 2332|    375|		}
 2333|  1.02k|	} while (0);
  ------------------
  |  Branch (2333:11): [Folded, False: 1.02k]
  ------------------
 2334|  1.02k|	ZVAL_COPY_VALUE(dest, data);
  ------------------
  |  | 1416|  1.02k|	do {												\
  |  | 1417|  1.02k|		zval *_z1 = (z);								\
  |  | 1418|  1.02k|		const zval *_z2 = (v);							\
  |  | 1419|  1.02k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  1.02k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  1.02k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  1.02k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  1.02k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.02k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  1.02k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  1.02k|	do {												\
  |  |  |  | 1408|  1.02k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  1.02k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  1.02k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  1.02k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.02k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.02k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  1.02k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1.02k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  1.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1.02k]
  |  |  ------------------
  ------------------
 2335|       |
 2336|  1.02k|	return 1;
 2337|  1.06k|}
zend_hash.c:zend_array_dup_ht_iterators:
 2362|     77|static void zend_array_dup_ht_iterators(const HashTable *source, HashTable *target) {
 2363|     77|	uint32_t iter_index = 0;
 2364|     77|	uint32_t end_index = EG(ht_iterators_used);
  ------------------
  |  |   45|     77|# define EG(v) (executor_globals.v)
  ------------------
 2365|       |
 2366|  2.29k|	while (iter_index != end_index) {
  ------------------
  |  Branch (2366:9): [True: 2.22k, False: 77]
  ------------------
 2367|  2.22k|		HashTableIterator *iter = &EG(ht_iterators)[iter_index];
  ------------------
  |  |   45|  2.22k|# define EG(v) (executor_globals.v)
  ------------------
 2368|  2.22k|		if (iter->ht == source) {
  ------------------
  |  Branch (2368:7): [True: 77, False: 2.14k]
  ------------------
 2369|     77|			uint32_t copy_idx = zend_hash_iterator_add(target, iter->pos);
 2370|       |			/* Refetch iter because the memory may be reallocated. */
 2371|     77|			iter = &EG(ht_iterators)[iter_index];
  ------------------
  |  |   45|     77|# define EG(v) (executor_globals.v)
  ------------------
 2372|     77|			HashTableIterator *copy_iter = EG(ht_iterators) + copy_idx;
  ------------------
  |  |   45|     77|# define EG(v) (executor_globals.v)
  ------------------
 2373|     77|			copy_iter->next_copy = iter->next_copy;
 2374|     77|			iter->next_copy = copy_idx;
 2375|     77|		}
 2376|  2.22k|		iter_index++;
 2377|  2.22k|	}
 2378|     77|}
zend_hash.c:zend_array_dup_elements:
 2401|    112|{
 2402|    112|	uint32_t idx = 0;
 2403|    112|	Bucket *p = source->arData;
 2404|    112|	Bucket *q = target->arData;
 2405|    112|	const Bucket *end = p + source->nNumUsed;
 2406|       |
 2407|    112|	if (UNEXPECTED(HT_HAS_ITERATORS(source))) {
  ------------------
  |  |  457|    112|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 101]
  |  |  ------------------
  ------------------
 2408|     11|		zend_array_dup_ht_iterators(source, target);
 2409|     11|	}
 2410|       |
 2411|    270|	do {
 2412|    270|		if (!zend_array_dup_element(source, target, idx, p, q, false, static_keys, with_holes)) {
  ------------------
  |  Branch (2412:7): [True: 17, False: 253]
  ------------------
 2413|     17|			uint32_t target_idx = idx;
 2414|       |
 2415|     17|			idx++; p++;
 2416|     17|			if (EXPECTED(!HT_HAS_ITERATORS(target))) {
  ------------------
  |  |  456|     17|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 17, False: 0]
  |  |  ------------------
  ------------------
 2417|     31|				while (p != end) {
  ------------------
  |  Branch (2417:12): [True: 14, False: 17]
  ------------------
 2418|     14|					if (zend_array_dup_element(source, target, target_idx, p, q, false, static_keys, with_holes)) {
  ------------------
  |  Branch (2418:10): [True: 6, False: 8]
  ------------------
 2419|      6|						if (source->nInternalPointer == idx) {
  ------------------
  |  Branch (2419:11): [True: 0, False: 6]
  ------------------
 2420|      0|							target->nInternalPointer = target_idx;
 2421|      0|						}
 2422|      6|						target_idx++; q++;
 2423|      6|					}
 2424|     14|					idx++; p++;
 2425|     14|				}
 2426|     17|			} else {
 2427|      0|				target->nNumUsed = source->nNumUsed;
 2428|      0|				uint32_t iter_pos = zend_hash_iterators_lower_pos(target, idx);
 2429|       |
 2430|      0|				while (p != end) {
  ------------------
  |  Branch (2430:12): [True: 0, False: 0]
  ------------------
 2431|      0|					if (zend_array_dup_element(source, target, target_idx, p, q, false, static_keys, with_holes)) {
  ------------------
  |  Branch (2431:10): [True: 0, False: 0]
  ------------------
 2432|      0|						if (source->nInternalPointer == idx) {
  ------------------
  |  Branch (2432:11): [True: 0, False: 0]
  ------------------
 2433|      0|							target->nInternalPointer = target_idx;
 2434|      0|						}
 2435|      0|						if (UNEXPECTED(idx >= iter_pos)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2436|      0|							do {
 2437|      0|								zend_hash_iterators_update(target, iter_pos, target_idx);
 2438|      0|								iter_pos = zend_hash_iterators_lower_pos(target, iter_pos + 1);
 2439|      0|							} while (iter_pos < idx);
  ------------------
  |  Branch (2439:17): [True: 0, False: 0]
  ------------------
 2440|      0|						}
 2441|      0|						target_idx++; q++;
 2442|      0|					}
 2443|      0|					idx++; p++;
 2444|      0|				}
 2445|      0|			}
 2446|     17|			return target_idx;
 2447|     17|		}
 2448|    253|		idx++; p++; q++;
 2449|    253|	} while (p != end);
  ------------------
  |  Branch (2449:11): [True: 158, False: 95]
  ------------------
 2450|     95|	return idx;
 2451|    112|}
zend_hash.c:zend_array_dup_element:
 2340|    284|{
 2341|    284|	if (!zend_array_dup_value(source, &p->val, &q->val, packed, with_holes)) {
  ------------------
  |  Branch (2341:6): [True: 25, False: 259]
  ------------------
 2342|     25|		return 0;
 2343|     25|	}
 2344|       |
 2345|    259|	if (!packed) {
  ------------------
  |  Branch (2345:6): [True: 259, False: 0]
  ------------------
 2346|    259|		uint32_t nIndex;
 2347|       |
 2348|    259|		q->h = p->h;
 2349|    259|		q->key = p->key;
 2350|    259|		if (!static_keys && q->key) {
  ------------------
  |  Branch (2350:7): [True: 74, False: 185]
  |  Branch (2350:23): [True: 71, False: 3]
  ------------------
 2351|     71|			zend_string_addref(q->key);
 2352|     71|		}
 2353|       |
 2354|    259|		nIndex = q->h | target->nTableMask;
 2355|    259|		Z_NEXT(q->val) = HT_HASH(target, nIndex);
  ------------------
  |  |  680|    259|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              		Z_NEXT(q->val) = HT_HASH(target, nIndex);
  ------------------
  |  |  470|    259|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    259|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 2356|    259|		HT_HASH(target, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|    259|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    259|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              		HT_HASH(target, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|    259|	(idx)
  ------------------
 2357|    259|	}
 2358|    259|	return 1;
 2359|    284|}
zend_hash.c:zend_hash_str_find_bucket:
  781|  63.9k|{
  782|  63.9k|	uint32_t nIndex;
  783|  63.9k|	uint32_t idx;
  784|  63.9k|	Bucket *p, *arData;
  785|       |
  786|  63.9k|	arData = ht->arData;
  787|  63.9k|	nIndex = h | ht->nTableMask;
  788|  63.9k|	idx = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  468|  63.9k|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  789|  70.9k|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|  70.9k|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (789:9): [True: 68.7k, False: 2.11k]
  ------------------
  790|  68.7k|		ZEND_ASSERT(idx < HT_IDX_TO_HASH(ht->nTableSize));
  ------------------
  |  |  112|  68.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (790:3): [True: 0, False: 68.7k]
  |  Branch (790:3): [True: 68.7k, False: 0]
  ------------------
  791|  68.7k|		p = HT_HASH_TO_BUCKET_EX(arData, idx);
  ------------------
  |  |  458|  68.7k|	((data) + (idx))
  ------------------
  792|  68.7k|		if ((p->h == h)
  ------------------
  |  Branch (792:7): [True: 61.7k, False: 6.98k]
  ------------------
  793|  61.7k|			 && p->key
  ------------------
  |  Branch (793:8): [True: 61.7k, False: 0]
  ------------------
  794|  61.7k|			 && zend_string_equals_cstr(p->key, str, len)) {
  ------------------
  |  Branch (794:8): [True: 61.7k, False: 0]
  ------------------
  795|  61.7k|			return p;
  796|  61.7k|		}
  797|  6.98k|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|  6.98k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  798|  6.98k|	}
  799|  2.11k|	return NULL;
  800|  63.9k|}
zend_hash.c:zend_hash_index_find_bucket:
  803|  17.6M|{
  804|  17.6M|	uint32_t nIndex;
  805|  17.6M|	uint32_t idx;
  806|  17.6M|	Bucket *p, *arData;
  807|       |
  808|  17.6M|	arData = ht->arData;
  809|  17.6M|	nIndex = h | ht->nTableMask;
  810|  17.6M|	idx = HT_HASH_EX(arData, nIndex);
  ------------------
  |  |  468|  17.6M|	((uint32_t*)(data))[(int32_t)(idx)]
  ------------------
  811|  18.0M|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|  18.0M|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (811:9): [True: 9.34M, False: 8.68M]
  ------------------
  812|  9.34M|		ZEND_ASSERT(idx < HT_IDX_TO_HASH(ht->nTableSize));
  ------------------
  |  |  112|  9.34M|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (812:3): [True: 0, False: 9.34M]
  |  Branch (812:3): [True: 9.34M, False: 0]
  ------------------
  813|  9.34M|		p = HT_HASH_TO_BUCKET_EX(arData, idx);
  ------------------
  |  |  458|  9.34M|	((data) + (idx))
  ------------------
  814|  9.34M|		if (p->h == h && !p->key) {
  ------------------
  |  Branch (814:7): [True: 8.92M, False: 416k]
  |  Branch (814:20): [True: 8.92M, False: 0]
  ------------------
  815|  8.92M|			return p;
  816|  8.92M|		}
  817|   416k|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|   416k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  818|   416k|	}
  819|  8.68M|	return NULL;
  820|  17.6M|}
zend_hash.c:zend_hash_sort_internal:
 2994|     39|{
 2995|     39|	Bucket *p;
 2996|     39|	uint32_t i, j;
 2997|       |
 2998|     39|	IS_CONSISTENT(ht);
  ------------------
  |  |   74|     39|#define IS_CONSISTENT(a) _zend_is_inconsistent(a, __FILE__, __LINE__);
  ------------------
 2999|       |
 3000|     39|	if (!(ht->nNumOfElements>1) && !(renumber && ht->nNumOfElements>0)) {
  ------------------
  |  Branch (3000:6): [True: 2, False: 37]
  |  Branch (3000:35): [True: 2, False: 0]
  |  Branch (3000:47): [True: 0, False: 2]
  ------------------
 3001|       |		/* Doesn't require sorting */
 3002|      2|		return;
 3003|      2|	}
 3004|       |
 3005|     37|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     37|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     37|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     37|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 37]
  |  |  ------------------
  ------------------
 3006|      0|		zend_hash_packed_to_hash(ht); // TODO: ???
 3007|      0|	}
 3008|       |
 3009|     37|	if (HT_IS_WITHOUT_HOLES(ht)) {
  ------------------
  |  |   65|     37|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 37, False: 0]
  |  |  ------------------
  ------------------
 3010|       |		/* Store original order of elements in extra space to allow stable sorting. */
 3011|    411|		for (i = 0; i < ht->nNumUsed; i++) {
  ------------------
  |  Branch (3011:15): [True: 374, False: 37]
  ------------------
 3012|    374|			Z_EXTRA(ht->arData[i].val) = i;
  ------------------
  |  |  704|    374|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
 3013|    374|		}
 3014|     37|	} else {
 3015|       |		/* Remove holes and store original order. */
 3016|      0|		for (j = 0, i = 0; j < ht->nNumUsed; j++) {
  ------------------
  |  Branch (3016:22): [True: 0, False: 0]
  ------------------
 3017|      0|			p = ht->arData + j;
 3018|      0|			if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3019|      0|			if (i != j) {
  ------------------
  |  Branch (3019:8): [True: 0, False: 0]
  ------------------
 3020|      0|				ht->arData[i] = *p;
 3021|      0|			}
 3022|      0|			Z_EXTRA(ht->arData[i].val) = i;
  ------------------
  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
 3023|      0|			i++;
 3024|      0|		}
 3025|      0|		ht->nNumUsed = i;
 3026|      0|	}
 3027|       |
 3028|     37|	if (!HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     37|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     37|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     37|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  ------------------
  |  Branch (3028:6): [True: 37, False: 0]
  ------------------
 3029|       |		/* We broke the hash collisions chains overriding Z_NEXT() by Z_EXTRA().
 3030|       |		 * Reset the hash headers table as well to avoid possible inconsistent
 3031|       |		 * access on recursive data structures.
 3032|       |	     *
 3033|       |	     * See Zend/tests/bug63882_2.phpt
 3034|       |		 */
 3035|     37|		HT_HASH_RESET(ht);
  ------------------
  |  |  507|     37|# define HT_HASH_RESET(ht) do { \
  |  |  508|     37|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|     37|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|     37|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|     37|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|     37|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|     37|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|     37|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|     37|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|     37|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|     85|		do { \
  |  |  514|     85|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|     85|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|     85|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|     85|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|     85|			p += 64; \
  |  |  519|     85|			size -= 64; \
  |  |  520|     85|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 48, False: 37]
  |  |  ------------------
  |  |  521|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
  |  Branch (3035:3): [True: 0, False: 37]
  |  Branch (3035:3): [True: 0, False: 0]
  |  Branch (3035:3): [True: 37, False: 0]
  |  Branch (3035:3): [True: 37, False: 0]
  ------------------
 3036|     37|	}
 3037|       |
 3038|     37|	sort((void *)ht->arData, ht->nNumUsed, sizeof(Bucket), (compare_func_t) compar,
 3039|     37|			(swap_func_t)(renumber? zend_hash_bucket_renum_swap :
  ------------------
  |  Branch (3039:18): [True: 28, False: 9]
  ------------------
 3040|     37|				(HT_IS_PACKED(ht) ? zend_hash_bucket_packed_swap : zend_hash_bucket_swap)));
  ------------------
  |  |   62|      9|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      9|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      9|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 3041|       |
 3042|     37|	ht->nInternalPointer = 0;
 3043|       |
 3044|     37|	if (renumber) {
  ------------------
  |  Branch (3044:6): [True: 28, False: 9]
  ------------------
 3045|    167|		for (j = 0; j < i; j++) {
  ------------------
  |  Branch (3045:15): [True: 139, False: 28]
  ------------------
 3046|    139|			p = ht->arData + j;
 3047|    139|			p->h = j;
 3048|    139|			if (p->key) {
  ------------------
  |  Branch (3048:8): [True: 4, False: 135]
  ------------------
 3049|      4|				zend_string_release(p->key);
 3050|      4|				p->key = NULL;
 3051|      4|			}
 3052|    139|		}
 3053|       |
 3054|     28|		ht->nNextFreeElement = i;
 3055|     28|	}
 3056|     37|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|     37|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     37|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     37|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 37]
  |  |  ------------------
  ------------------
 3057|      0|		if (!renumber) {
  ------------------
  |  Branch (3057:7): [True: 0, False: 0]
  ------------------
 3058|      0|			zend_hash_packed_to_hash(ht);
 3059|      0|		}
 3060|     37|	} else {
 3061|     37|		if (renumber) {
  ------------------
  |  Branch (3061:7): [True: 28, False: 9]
  ------------------
 3062|     28|			void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|     28|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|     28|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
 3063|     28|			Bucket *old_buckets = ht->arData;
 3064|     28|			zval *zv;
 3065|       |
 3066|     28|			new_data = pemalloc(HT_PACKED_SIZE_EX(ht->nTableSize, HT_MIN_MASK), (GC_FLAGS(ht) & IS_ARRAY_PERSISTENT));
  ------------------
  |  |  188|     28|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     28|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     28|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     28|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     28|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     28|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 28]
  |  |  ------------------
  ------------------
 3067|     28|			HT_FLAGS(ht) |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|     28|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              			HT_FLAGS(ht) |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   43|     28|#define HASH_FLAG_PACKED           (1<<2)
  ------------------
              			HT_FLAGS(ht) |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|     28|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 3068|     28|			ht->nTableMask = HT_MIN_MASK;
  ------------------
  |  |  437|     28|#define HT_MIN_MASK ((uint32_t) -2)
  ------------------
 3069|     28|			HT_SET_DATA_ADDR(ht, new_data);
  ------------------
  |  |  548|     28|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|     28|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|     28|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 3070|     28|			p = old_buckets;
 3071|     28|			zv = ht->arPacked;
 3072|    332|			for (i = 0; i < ht->nTableSize; i++) {
  ------------------
  |  Branch (3072:16): [True: 304, False: 28]
  ------------------
 3073|    304|				ZVAL_COPY_VALUE(zv, &p->val);
  ------------------
  |  | 1416|    304|	do {												\
  |  | 1417|    304|		zval *_z1 = (z);								\
  |  | 1418|    304|		const zval *_z2 = (v);							\
  |  | 1419|    304|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    304|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    304|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    304|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    304|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    304|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    304|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    304|	do {												\
  |  |  |  | 1408|    304|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    304|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    304|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    304|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    304|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    304|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    304|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 304]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    304|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 304]
  |  |  ------------------
  ------------------
 3074|    304|				zv++;
 3075|    304|				p++;
 3076|    304|			}
 3077|     28|			pefree(old_data, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|     28|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     28|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     28|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     28|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     28|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     28|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 28]
  |  |  ------------------
  ------------------
 3078|     28|			HT_HASH_RESET_PACKED(ht);
  ------------------
  |  |  541|     28|#define HT_HASH_RESET_PACKED(ht) do { \
  |  |  542|     28|		HT_HASH(ht, -2) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  470|     28|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|     28|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		HT_HASH(ht, -2) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  435|     28|#define HT_INVALID_IDX ((uint32_t) -1)
  |  |  ------------------
  |  |  543|     28|		HT_HASH(ht, -1) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  470|     28|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|     28|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		HT_HASH(ht, -1) = HT_INVALID_IDX; \
  |  |  ------------------
  |  |  |  |  435|     28|#define HT_INVALID_IDX ((uint32_t) -1)
  |  |  ------------------
  |  |  544|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (544:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 3079|     28|		} else {
 3080|      9|			zend_hash_rehash(ht);
 3081|      9|		}
 3082|     37|	}
 3083|     37|}
zend_hash.c:zend_hash_compare_impl:
 3112|    179|static zend_always_inline int zend_hash_compare_impl(const HashTable *ht1, const HashTable *ht2, compare_func_t compar, bool ordered) {
 3113|    179|	uint32_t idx1, idx2;
 3114|    179|	zend_string *key1, *key2;
 3115|    179|	zend_ulong h1, h2;
 3116|    179|	zval *pData1, *pData2;;
 3117|    179|	int result;
 3118|       |
 3119|    179|	if (ht1->nNumOfElements != ht2->nNumOfElements) {
  ------------------
  |  Branch (3119:6): [True: 159, False: 20]
  ------------------
 3120|    159|		return ht1->nNumOfElements > ht2->nNumOfElements ? 1 : -1;
  ------------------
  |  Branch (3120:10): [True: 157, False: 2]
  ------------------
 3121|    159|	}
 3122|       |
 3123|     39|	for (idx1 = 0, idx2 = 0; idx1 < ht1->nNumUsed; idx1++) {
  ------------------
  |  Branch (3123:27): [True: 30, False: 9]
  ------------------
 3124|     30|		if (HT_IS_PACKED(ht1)) {
  ------------------
  |  |   62|     30|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     30|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     30|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 30, False: 0]
  |  |  ------------------
  ------------------
 3125|     30|			pData1 = ht1->arPacked + idx1;
 3126|     30|			h1 = idx1;
 3127|     30|			key1 = NULL;
 3128|     30|		} else {
 3129|      0|			Bucket *p = ht1->arData + idx1;
 3130|      0|			pData1 = &p->val;
 3131|      0|			h1 = p->h;
 3132|      0|			key1 = p->key;
 3133|      0|		}
 3134|       |
 3135|     30|		if (Z_TYPE_P(pData1) == IS_UNDEF) continue;
  ------------------
  |  |  669|     30|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(pData1) == IS_UNDEF) continue;
  ------------------
  |  |  606|     30|#define IS_UNDEF					0
  ------------------
  |  Branch (3135:7): [True: 9, False: 21]
  ------------------
 3136|     21|		if (ordered) {
  ------------------
  |  Branch (3136:7): [True: 19, False: 2]
  ------------------
 3137|     19|			if (HT_IS_PACKED(ht2)) {
  ------------------
  |  |   62|     19|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     19|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     19|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 12, False: 7]
  |  |  ------------------
  ------------------
 3138|     13|				while (1) {
  ------------------
  |  Branch (3138:12): [True: 13, Folded]
  ------------------
 3139|     13|					ZEND_ASSERT(idx2 != ht2->nNumUsed);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3139:6): [True: 0, False: 13]
  |  Branch (3139:6): [True: 13, False: 0]
  ------------------
 3140|     13|					pData2 = ht2->arPacked + idx2;
 3141|     13|					h2 = idx2;
 3142|     13|					key2 = NULL;
 3143|     13|					if (Z_TYPE_P(pData2) != IS_UNDEF) break;
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(pData2) != IS_UNDEF) break;
  ------------------
  |  |  606|     13|#define IS_UNDEF					0
  ------------------
  |  Branch (3143:10): [True: 12, False: 1]
  ------------------
 3144|      1|					idx2++;
 3145|      1|				}
 3146|     12|			} else {
 3147|      7|				while (1) {
  ------------------
  |  Branch (3147:12): [True: 7, Folded]
  ------------------
 3148|      7|					Bucket *p;
 3149|      7|					ZEND_ASSERT(idx2 != ht2->nNumUsed);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3149:6): [True: 0, False: 7]
  |  Branch (3149:6): [True: 7, False: 0]
  ------------------
 3150|      7|					p = ht2->arData + idx2;
 3151|      7|					pData2 = &p->val;
 3152|      7|					h2 = p->h;
 3153|      7|					key2 = p->key;
 3154|      7|					if (Z_TYPE_P(pData2) != IS_UNDEF) break;
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(pData2) != IS_UNDEF) break;
  ------------------
  |  |  606|      7|#define IS_UNDEF					0
  ------------------
  |  Branch (3154:10): [True: 7, False: 0]
  ------------------
 3155|      0|					idx2++;
 3156|      0|				}
 3157|      7|			}
 3158|     19|			if (key1 == NULL && key2 == NULL) { /* numeric indices */
  ------------------
  |  Branch (3158:8): [True: 19, False: 0]
  |  Branch (3158:24): [True: 16, False: 3]
  ------------------
 3159|     16|				if (h1 != h2) {
  ------------------
  |  Branch (3159:9): [True: 4, False: 12]
  ------------------
 3160|      4|					return h1 > h2 ? 1 : -1;
  ------------------
  |  Branch (3160:13): [True: 0, False: 4]
  ------------------
 3161|      4|				}
 3162|     16|			} else if (key1 != NULL && key2 != NULL) { /* string indices */
  ------------------
  |  Branch (3162:15): [True: 0, False: 3]
  |  Branch (3162:31): [True: 0, False: 0]
  ------------------
 3163|      0|				if (ZSTR_LEN(key1) != ZSTR_LEN(key2)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              				if (ZSTR_LEN(key1) != ZSTR_LEN(key2)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (3163:9): [True: 0, False: 0]
  ------------------
 3164|      0|					return ZSTR_LEN(key1) > ZSTR_LEN(key2) ? 1 : -1;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              					return ZSTR_LEN(key1) > ZSTR_LEN(key2) ? 1 : -1;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (3164:13): [True: 0, False: 0]
  ------------------
 3165|      0|				}
 3166|       |
 3167|      0|				result = memcmp(ZSTR_VAL(key1), ZSTR_VAL(key2), ZSTR_LEN(key1));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				result = memcmp(ZSTR_VAL(key1), ZSTR_VAL(key2), ZSTR_LEN(key1));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				result = memcmp(ZSTR_VAL(key1), ZSTR_VAL(key2), ZSTR_LEN(key1));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3168|      0|				if (result != 0) {
  ------------------
  |  Branch (3168:9): [True: 0, False: 0]
  ------------------
 3169|      0|					return result;
 3170|      0|				}
 3171|      3|			} else {
 3172|       |				/* Mixed key types: A string key is considered as larger */
 3173|      3|				return key1 != NULL ? 1 : -1;
  ------------------
  |  Branch (3173:12): [True: 0, False: 3]
  ------------------
 3174|      3|			}
 3175|     12|			idx2++;
 3176|     12|		} else {
 3177|      2|			if (key1 == NULL) { /* numeric index */
  ------------------
  |  Branch (3177:8): [True: 2, False: 0]
  ------------------
 3178|      2|				pData2 = zend_hash_index_find(ht2, h1);
 3179|      2|				if (pData2 == NULL) {
  ------------------
  |  Branch (3179:9): [True: 0, False: 2]
  ------------------
 3180|      0|					return 1;
 3181|      0|				}
 3182|      2|			} else { /* string index */
 3183|      0|				pData2 = zend_hash_find(ht2, key1);
 3184|      0|				if (pData2 == NULL) {
  ------------------
  |  Branch (3184:9): [True: 0, False: 0]
  ------------------
 3185|      0|					return 1;
 3186|      0|				}
 3187|      0|			}
 3188|      2|		}
 3189|       |
 3190|     14|		if (Z_TYPE_P(pData1) == IS_INDIRECT) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(pData1) == IS_INDIRECT) {
  ------------------
  |  |  629|     14|#define IS_INDIRECT             	12
  ------------------
  |  Branch (3190:7): [True: 0, False: 14]
  ------------------
 3191|      0|			pData1 = Z_INDIRECT_P(pData1);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 3192|      0|		}
 3193|     14|		if (Z_TYPE_P(pData2) == IS_INDIRECT) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(pData2) == IS_INDIRECT) {
  ------------------
  |  |  629|     14|#define IS_INDIRECT             	12
  ------------------
  |  Branch (3193:7): [True: 0, False: 14]
  ------------------
 3194|      0|			pData2 = Z_INDIRECT_P(pData2);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 3195|      0|		}
 3196|       |
 3197|     14|		if (Z_TYPE_P(pData1) == IS_UNDEF) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(pData1) == IS_UNDEF) {
  ------------------
  |  |  606|     14|#define IS_UNDEF					0
  ------------------
  |  Branch (3197:7): [True: 0, False: 14]
  ------------------
 3198|      0|			if (Z_TYPE_P(pData2) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(pData2) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3198:8): [True: 0, False: 0]
  ------------------
 3199|      0|				return -1;
 3200|      0|			}
 3201|     14|		} else if (Z_TYPE_P(pData2) == IS_UNDEF) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(pData2) == IS_UNDEF) {
  ------------------
  |  |  606|     14|#define IS_UNDEF					0
  ------------------
  |  Branch (3201:14): [True: 0, False: 14]
  ------------------
 3202|      0|			return 1;
 3203|     14|		} else {
 3204|     14|			result = compar(pData1, pData2);
 3205|     14|			if (result != 0) {
  ------------------
  |  Branch (3205:8): [True: 4, False: 10]
  ------------------
 3206|      4|				return result;
 3207|      4|			}
 3208|     14|		}
 3209|     14|	}
 3210|       |
 3211|      9|	return 0;
 3212|     20|}

php_date.c:zend_hash_str_find_ptr:
  916|    392|{
  917|    392|	zval *zv;
  918|       |
  919|    392|	zv = zend_hash_str_find(ht, str, len);
  920|    392|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 49, False: 343]
  ------------------
  921|     49|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     49|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     49|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     49|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     49|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|    343|	} else {
  924|       |		return NULL;
  925|    343|	}
  926|    392|}
php_date.c:zend_hash_str_add_ptr:
  694|     80|{
  695|     80|	zval tmp, *zv;
  696|       |
  697|     80|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     80|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     80|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     80|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     80|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     80|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     80|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     80|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     80|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     80|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 80]
  |  |  ------------------
  ------------------
  698|     80|	zv = zend_hash_str_add(ht, str, len, &tmp);
  699|     80|	if (zv) {
  ------------------
  |  Branch (699:6): [True: 80, False: 0]
  ------------------
  700|     80|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     80|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (700:3): [True: 0, False: 80]
  |  Branch (700:3): [True: 80, False: 0]
  ------------------
  701|     80|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     80|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     80|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  702|     80|	} else {
  703|       |		return NULL;
  704|      0|	}
  705|     80|}
php_pcre.c:zend_hash_num_elements:
  319|    298|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    298|	return ht->nNumOfElements;
  321|    298|}
php_pcre.c:zend_hash_add_new_mem:
  755|    298|{
  756|    298|	zval tmp, *zv;
  757|       |
  758|    298|	ZVAL_PTR(&tmp, NULL);
  ------------------
  |  | 1251|    298|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    298|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    298|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    298|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    298|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    298|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    298|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    298|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    298|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 298]
  |  |  ------------------
  ------------------
  759|    298|	if ((zv = zend_hash_add_new(ht, key, &tmp))) {
  ------------------
  |  Branch (759:6): [True: 298, False: 0]
  ------------------
  760|    298|		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  | 1053|    298|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    298|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
              		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|    298|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    298|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    298|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    298|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    298|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 298, False: 0]
  |  |  ------------------
  ------------------
  761|    298|		memcpy(Z_PTR_P(zv), pData, size);
  ------------------
  |  | 1053|    298|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    298|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  762|    298|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    298|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    298|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  763|    298|	}
  764|      0|	return NULL;
  765|    298|}
exif.c:zend_hash_str_exists:
  241|      3|{
  242|       |	return zend_hash_str_find(ht, str, len) != NULL;
  243|      3|}
hash.c:zend_hash_add_ptr:
  666|    120|{
  667|    120|	zval tmp, *zv;
  668|       |
  669|    120|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    120|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    120|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    120|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    120|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    120|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    120|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    120|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    120|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    120|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 120]
  |  |  ------------------
  ------------------
  670|    120|	zv = zend_hash_add(ht, key, &tmp);
  671|    120|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 120, False: 0]
  ------------------
  672|    120|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    120|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 120]
  |  Branch (672:3): [True: 120, False: 0]
  ------------------
  673|    120|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    120|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    120|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|    120|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|    120|}
hash.c:zend_hash_str_find_ptr:
  916|     14|{
  917|     14|	zval *zv;
  918|       |
  919|     14|	zv = zend_hash_str_find(ht, str, len);
  920|     14|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 14, False: 0]
  ------------------
  921|     14|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     14|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     14|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     14|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     14|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|     14|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|     14|}
json_encoder.c:zend_array_release:
  375|      2|{
  376|      2|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      2|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      2|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (376:6): [True: 2, False: 0]
  ------------------
  377|      2|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (377:7): [True: 2, False: 0]
  ------------------
  378|      2|			zend_array_destroy(array);
  379|      2|		}
  380|      2|	}
  381|      2|}
json_encoder.c:zend_hash_num_elements:
  319|      2|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|      2|	return ht->nNumOfElements;
  321|      2|}
zend_accelerator_util_funcs.c:zend_hash_num_elements:
  319|  53.1k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  53.1k|	return ht->nNumOfElements;
  321|  53.1k|}
zend_shared_alloc.c:zend_hash_index_find_ptr:
  941|      2|{
  942|      2|	zval *zv;
  943|       |
  944|      2|	zv = zend_hash_index_find(ht, h);
  945|      2|	if (zv) {
  ------------------
  |  Branch (945:6): [True: 0, False: 2]
  ------------------
  946|      0|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      0|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  947|      0|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  948|      2|	} else {
  949|       |		return NULL;
  950|      2|	}
  951|      2|}
zend_shared_alloc.c:zend_hash_index_add_new_ptr:
  821|      5|{
  822|      5|	zval tmp, *zv;
  823|       |
  824|      5|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      5|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      5|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      5|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      5|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  825|      5|	zv = zend_hash_index_add_new(ht, h, &tmp);
  826|      5|	return zv ? Z_PTR_P(zv) : NULL;
  ------------------
  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  |  Branch (826:9): [True: 5, False: 0]
  ------------------
  827|      5|}
ZendAccelerator.c:zend_hash_next_free_element:
  323|  7.03k|static zend_always_inline zend_long zend_hash_next_free_element(const HashTable *ht) {
  324|  7.03k|	return ht->nNextFreeElement;
  325|  7.03k|}
ZendAccelerator.c:zend_hash_exists:
  236|      3|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|      3|}
ZendAccelerator.c:zend_hash_str_find_ptr:
  916|      4|{
  917|      4|	zval *zv;
  918|       |
  919|      4|	zv = zend_hash_str_find(ht, str, len);
  920|      4|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 2, False: 2]
  ------------------
  921|      2|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      2|	} else {
  924|       |		return NULL;
  925|      2|	}
  926|      4|}
random.c:zend_hash_str_find_ptr:
  916|      2|{
  917|      2|	zval *zv;
  918|       |
  919|      2|	zv = zend_hash_str_find(ht, str, len);
  920|      2|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 2, False: 0]
  ------------------
  921|      2|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      2|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      2|}
php_reflection.c:zend_hash_find_ptr:
  890|     31|{
  891|     31|	zval *zv;
  892|       |
  893|     31|	zv = zend_hash_find(ht, key);
  894|     31|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 21, False: 10]
  ------------------
  895|     21|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     21|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     21|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     21|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     21|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     21|	} else {
  898|       |		return NULL;
  899|     10|	}
  900|     31|}
php_reflection.c:zend_hash_exists:
  236|     18|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|     18|}
php_reflection.c:zend_hash_str_find_ptr:
  916|     16|{
  917|     16|	zval *zv;
  918|       |
  919|     16|	zv = zend_hash_str_find(ht, str, len);
  920|     16|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 14, False: 2]
  ------------------
  921|     14|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     14|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     14|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     14|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     14|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|     14|	} else {
  924|       |		return NULL;
  925|      2|	}
  926|     16|}
php_reflection.c:zend_hash_num_elements:
  319|    103|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    103|	return ht->nNumOfElements;
  321|    103|}
php_reflection.c:zend_symtable_update:
  499|     14|{
  500|     14|	zend_ulong idx;
  501|       |
  502|     14|	if (ZEND_HANDLE_NUMERIC(key, idx)) {
  ------------------
  |  |  424|     14|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|     14|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  503|      0|		return zend_hash_index_update(ht, idx, pData);
  504|     14|	} else {
  505|     14|		return zend_hash_update(ht, key, pData);
  506|     14|	}
  507|     14|}
php_reflection.c:_zend_handle_numeric_str:
  403|     14|{
  404|     14|	const char *tmp = key;
  405|       |
  406|     14|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 0]
  |  |  ------------------
  ------------------
  407|     14|		return 0;
  408|     14|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 0, False: 0]
  ------------------
  409|      0|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			return 0;
  411|      0|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|      0|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|     14|}
php_reflection.c:zend_array_is_list:
 1602|     16|{
 1603|     16|	zend_ulong expected_idx = 0;
 1604|     16|	zend_ulong num_idx;
 1605|     16|	zend_string* str_idx;
 1606|       |	/* Empty arrays are lists */
 1607|     16|	if (zend_hash_num_elements(array) == 0) {
  ------------------
  |  Branch (1607:6): [True: 1, False: 15]
  ------------------
 1608|      1|		return 1;
 1609|      1|	}
 1610|       |
 1611|       |	/* Packed arrays are lists */
 1612|     15|	if (HT_IS_PACKED(array)) {
  ------------------
  |  |   62|     15|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     15|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     15|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 12, False: 3]
  |  |  ------------------
  ------------------
 1613|     12|		if (HT_IS_WITHOUT_HOLES(array)) {
  ------------------
  |  |   65|     12|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 7, False: 5]
  |  |  ------------------
  ------------------
 1614|      7|			return 1;
 1615|      7|		}
 1616|       |		/* Check if the list could theoretically be repacked */
 1617|     35|		ZEND_HASH_PACKED_FOREACH_KEY(array, num_idx) {
  ------------------
  |  | 1510|     15|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      5|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      5|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      5|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      5|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      5|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      5|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|     15|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 15, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|     15|			(void) _idx; \
  |  |  |  |  |  | 1478|     15|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     10|	_h = _idx;
  ------------------
  |  Branch (1617:3): [True: 0, False: 5]
  |  Branch (1617:3): [True: 5, False: 0]
  ------------------
 1618|     35|			if (num_idx != expected_idx++) {
  ------------------
  |  Branch (1618:8): [True: 5, False: 5]
  ------------------
 1619|      5|				return 0;
 1620|      5|			}
 1621|     35|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     10|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1622|      5|	} else {
 1623|       |		/* Check if the list could theoretically be repacked */
 1624|     12|		ZEND_HASH_MAP_FOREACH_KEY(array, num_idx, str_idx) {
  ------------------
  |  | 1369|      3|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      3|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      3|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      3|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      3|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      3|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      3|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      3|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      3|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      3|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      3|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 3]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      3|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1370|      3|	_h = _p->h; \
  |  | 1371|      3|	_key = _p->key;
  ------------------
  |  Branch (1624:3): [True: 0, False: 3]
  |  Branch (1624:3): [True: 3, False: 0]
  ------------------
 1625|     12|			if (str_idx != NULL || num_idx != expected_idx++) {
  ------------------
  |  Branch (1625:8): [True: 2, False: 1]
  |  Branch (1625:27): [True: 1, False: 0]
  ------------------
 1626|      3|				return 0;
 1627|      3|			}
 1628|     12|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1629|      3|	}
 1630|       |
 1631|      0|	return 1;
 1632|     15|}
spl_array.c:_zend_handle_numeric_str:
  403|      1|{
  404|      1|	const char *tmp = key;
  405|       |
  406|      1|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  407|      1|		return 0;
  408|      1|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 0, False: 0]
  ------------------
  409|      0|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			return 0;
  411|      0|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|      0|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|      1|}
spl_array.c:zend_hash_str_find_ptr:
  916|     24|{
  917|     24|	zval *zv;
  918|       |
  919|     24|	zv = zend_hash_str_find(ht, str, len);
  920|     24|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 24, False: 0]
  ------------------
  921|     24|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     24|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     24|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     24|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     24|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|     24|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|     24|}
spl_array.c:zend_hash_find_ptr:
  890|      6|{
  891|      6|	zval *zv;
  892|       |
  893|      6|	zv = zend_hash_find(ht, key);
  894|      6|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 6, False: 0]
  ------------------
  895|      6|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      6|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      6|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|      6|	} else {
  898|       |		return NULL;
  899|      0|	}
  900|      6|}
spl_array.c:zend_hash_has_more_elements_ex:
  263|     31|static zend_always_inline zend_result zend_hash_has_more_elements_ex(const HashTable *ht, const HashPosition *pos) {
  264|     31|	return (zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS);
  ------------------
  |  Branch (264:10): [True: 15, False: 16]
  ------------------
  265|     31|}
spl_directory.c:zend_hash_str_find_ptr:
  916|      2|{
  917|      2|	zval *zv;
  918|       |
  919|      2|	zv = zend_hash_str_find(ht, str, len);
  920|      2|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 2, False: 0]
  ------------------
  921|      2|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      2|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      2|}
spl_fixedarray.c:zend_hash_str_find_ptr:
  916|      2|{
  917|      2|	zval *zv;
  918|       |
  919|      2|	zv = zend_hash_str_find(ht, str, len);
  920|      2|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 2, False: 0]
  ------------------
  921|      2|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      2|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      2|}
spl_iterators.c:zend_hash_find_ptr:
  890|      8|{
  891|      8|	zval *zv;
  892|       |
  893|      8|	zv = zend_hash_find(ht, key);
  894|      8|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 0, False: 8]
  ------------------
  895|      0|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      0|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      0|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|      8|	} else {
  898|       |		return NULL;
  899|      8|	}
  900|      8|}
spl_observer.c:zend_hash_str_find_ptr:
  916|      6|{
  917|      6|	zval *zv;
  918|       |
  919|      6|	zv = zend_hash_str_find(ht, str, len);
  920|      6|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 6, False: 0]
  ------------------
  921|      6|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      6|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      6|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      6|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      6|}
array.c:zend_hash_num_elements:
  319|    863|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    863|	return ht->nNumOfElements;
  321|    863|}
array.c:zend_array_sort:
  315|     35|static zend_always_inline void zend_array_sort(HashTable *ht, bucket_compare_func_t compare_func, bool renumber) {
  316|     35|	zend_array_sort_ex(ht, zend_sort, compare_func, renumber);
  317|     35|}
array.c:zend_hash_internal_pointer_end:
  290|      6|static zend_always_inline void zend_hash_internal_pointer_end(HashTable *ht) {
  291|      6|	zend_hash_internal_pointer_end_ex(ht, &ht->nInternalPointer);
  292|      6|}
array.c:zend_hash_move_backwards:
  272|      2|static zend_always_inline zend_result zend_hash_move_backwards(HashTable *ht) {
  273|      2|	return zend_hash_move_backwards_ex(ht, &ht->nInternalPointer);
  274|      2|}
array.c:zend_hash_move_forward:
  269|      3|static zend_always_inline zend_result zend_hash_move_forward(HashTable *ht) {
  270|      3|	return zend_hash_move_forward_ex(ht, &ht->nInternalPointer);
  271|      3|}
array.c:zend_hash_internal_pointer_reset:
  287|      9|static zend_always_inline void zend_hash_internal_pointer_reset(HashTable *ht) {
  288|      9|	zend_hash_internal_pointer_reset_ex(ht, &ht->nInternalPointer);
  289|      9|}
array.c:zend_hash_get_current_data:
  284|     26|static zend_always_inline zval* zend_hash_get_current_data(const HashTable *ht) {
  285|     26|	return zend_hash_get_current_data_ex(ht, &ht->nInternalPointer);
  286|     26|}
array.c:zend_hash_get_current_key_zval:
  278|      8|static zend_always_inline void zend_hash_get_current_key_zval(const HashTable *ht, zval *key) {
  279|      8|	zend_hash_get_current_key_zval_ex(ht, key, &ht->nInternalPointer);
  280|      8|}
array.c:zend_hash_find_ind:
  428|      3|{
  429|      3|	zval *zv;
  430|       |
  431|      3|	zv = zend_hash_find(ht, key);
  432|      3|	return (zv && Z_TYPE_P(zv) == IS_INDIRECT) ?
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	return (zv && Z_TYPE_P(zv) == IS_INDIRECT) ?
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (432:10): [True: 0, False: 3]
  |  Branch (432:16): [True: 0, False: 0]
  ------------------
  433|      3|		((Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF) ? Z_INDIRECT_P(zv) : NULL) : zv;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		((Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF) ? Z_INDIRECT_P(zv) : NULL) : zv;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
              		((Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF) ? Z_INDIRECT_P(zv) : NULL) : zv;
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  |  Branch (433:4): [True: 0, False: 0]
  ------------------
  434|      3|}
array.c:zend_symtable_add:
  477|      7|{
  478|      7|	zend_ulong idx;
  479|       |
  480|      7|	if (ZEND_HANDLE_NUMERIC(key, idx)) {
  ------------------
  |  |  424|      7|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      7|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 3, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  481|      3|		return zend_hash_index_add(ht, idx, pData);
  482|      4|	} else {
  483|      4|		return zend_hash_add(ht, key, pData);
  484|      4|	}
  485|      7|}
array.c:_zend_handle_numeric_str:
  403|      7|{
  404|      7|	const char *tmp = key;
  405|       |
  406|      7|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  407|      0|		return 0;
  408|      7|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 2, False: 5]
  ------------------
  409|      2|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 0, False: 2]
  ------------------
  410|      0|			return 0;
  411|      0|		}
  412|      2|		tmp++;
  413|      2|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 2]
  |  Branch (413:21): [True: 0, False: 2]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      2|	}
  417|      7|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|      7|}
array.c:zend_hash_iterators_update:
  367|      3|{
  368|      3|	if (UNEXPECTED(HT_HAS_ITERATORS(ht))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  369|      3|		_zend_hash_iterators_update(ht, from, to);
  370|      3|	}
  371|      3|}
array.c:_zend_hash_append:
 1658|      6|{
 1659|      6|	return _zend_hash_append_ex(ht, key, zv, 0);
 1660|      6|}
array.c:_zend_hash_append_ex:
 1636|      6|{
 1637|      6|	uint32_t idx = ht->nNumUsed++;
 1638|      6|	uint32_t nIndex;
 1639|      6|	Bucket *p = ht->arData + idx;
 1640|       |
 1641|      6|	ZVAL_COPY_VALUE(&p->val, zv);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1642|      6|	ZEND_ASSERT(!key_guaranteed_interned || ZSTR_IS_INTERNED(key));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1642:2): [True: 6, False: 0]
  |  Branch (1642:2): [True: 0, False: 0]
  |  Branch (1642:2): [True: 6, False: 0]
  |  Branch (1642:2): [True: 0, False: 0]
  ------------------
 1643|      6|	if (!key_guaranteed_interned && !ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1643:6): [True: 6, False: 0]
  |  Branch (1643:34): [True: 1, False: 5]
  ------------------
 1644|      1|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|      1|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1645|      1|		zend_string_addref(key);
 1646|      1|		zend_string_hash_val(key);
 1647|      1|	}
 1648|      6|	p->key = key;
 1649|      6|	p->h = ZSTR_H(key);
  ------------------
  |  |   69|      6|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1650|      6|	nIndex = (uint32_t)p->h | ht->nTableMask;
 1651|      6|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|      6|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|      6|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      6|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1652|      6|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|      6|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      6|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|      6|	(idx)
  ------------------
 1653|      6|	ht->nNumOfElements++;
 1654|      6|	return &p->val;
 1655|      6|}
basic_functions.c:zend_hash_str_find_ptr:
  916|     16|{
  917|     16|	zval *zv;
  918|       |
  919|     16|	zv = zend_hash_str_find(ht, str, len);
  920|     16|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 16, False: 0]
  ------------------
  921|     16|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     16|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     16|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     16|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|     16|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|     16|}
basic_functions.c:zend_hash_next_index_insert_mem:
  876|      8|{
  877|      8|	zval tmp;
  878|       |
  879|      8|	void *p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|      8|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      8|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  880|      8|	memcpy(p, pData, size);
  881|      8|	ZVAL_PTR(&tmp, p);
  ------------------
  |  | 1251|      8|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      8|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      8|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      8|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  882|      8|	if (!zend_hash_next_index_insert(ht, &tmp)) {
  ------------------
  |  Branch (882:6): [True: 0, False: 8]
  ------------------
  883|      0|		pefree(p, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  884|      0|		return NULL;
  885|      0|	}
  886|      8|	return p;
  887|      8|}
basic_functions.c:zend_symtable_update:
  499|  38.9k|{
  500|  38.9k|	zend_ulong idx;
  501|       |
  502|  38.9k|	if (ZEND_HANDLE_NUMERIC(key, idx)) {
  ------------------
  |  |  424|  38.9k|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|  38.9k|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 7.15k, False: 31.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  503|  7.15k|		return zend_hash_index_update(ht, idx, pData);
  504|  31.8k|	} else {
  505|  31.8k|		return zend_hash_update(ht, key, pData);
  506|  31.8k|	}
  507|  38.9k|}
basic_functions.c:_zend_handle_numeric_str:
  403|  38.9k|{
  404|  38.9k|	const char *tmp = key;
  405|       |
  406|  38.9k|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|  38.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7.42k, False: 31.5k]
  |  |  ------------------
  ------------------
  407|  7.42k|		return 0;
  408|  31.5k|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 19.4k, False: 12.1k]
  ------------------
  409|  19.4k|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 19.3k, False: 111]
  ------------------
  410|  19.3k|			return 0;
  411|  19.3k|		}
  412|    111|		tmp++;
  413|    111|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 1, False: 110]
  |  Branch (413:21): [True: 0, False: 110]
  ------------------
  414|      1|			return 0;
  415|      1|		}
  416|    111|	}
  417|  12.2k|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|  38.9k|}
info.c:zend_hash_num_elements:
  319|      4|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|      4|	return ht->nNumOfElements;
  321|      4|}
info.c:zend_hash_sort:
  308|      1|static zend_always_inline void ZEND_FASTCALL zend_hash_sort(HashTable *ht, bucket_compare_func_t compare_func, bool renumber) {
  309|      1|	zend_hash_sort_ex(ht, zend_sort, compare_func, renumber);
  310|      1|}
info.c:zend_hash_find_deref:
  963|      7|{
  964|      7|	zval *zv = zend_hash_find(ht, str);
  965|      7|	if (zv) {
  ------------------
  |  Branch (965:6): [True: 7, False: 0]
  ------------------
  966|      7|		ZVAL_DEREF(zv);
  ------------------
  |  | 1474|      7|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      7|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  967|      7|	}
  968|      7|	return zv;
  969|      7|}
password.c:zend_hash_add_ptr:
  666|      2|{
  667|      2|	zval tmp, *zv;
  668|       |
  669|      2|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      2|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      2|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      2|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      2|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  670|      2|	zv = zend_hash_add(ht, key, &tmp);
  671|      2|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 2, False: 0]
  ------------------
  672|      2|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 2]
  |  Branch (672:3): [True: 2, False: 0]
  ------------------
  673|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|      2|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|      2|}
url_scanner_ex.c:zend_hash_add_mem:
  742|     10|{
  743|     10|	zval tmp, *zv;
  744|       |
  745|     10|	ZVAL_PTR(&tmp, NULL);
  ------------------
  |  | 1251|     10|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     10|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     10|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     10|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  746|     10|	if ((zv = zend_hash_add(ht, key, &tmp))) {
  ------------------
  |  Branch (746:6): [True: 10, False: 0]
  ------------------
  747|     10|		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
              		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|     10|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  748|     10|		memcpy(Z_PTR_P(zv), pData, size);
  ------------------
  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  749|     10|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  750|     10|	}
  751|      0|	return NULL;
  752|     10|}
user_filters.c:zend_hash_add_ptr:
  666|      3|{
  667|      3|	zval tmp, *zv;
  668|       |
  669|      3|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      3|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      3|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      3|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      3|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  670|      3|	zv = zend_hash_add(ht, key, &tmp);
  671|      3|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 3, False: 0]
  ------------------
  672|      3|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 3]
  |  Branch (672:3): [True: 3, False: 0]
  ------------------
  673|      3|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|      3|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|      3|}
user_filters.c:zend_hash_str_find_ptr:
  916|      1|{
  917|      1|	zval *zv;
  918|       |
  919|      1|	zv = zend_hash_str_find(ht, str, len);
  920|      1|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 1, False: 0]
  ------------------
  921|      1|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      1|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      1|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      1|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      1|}
var_unserializer.c:zend_hash_find_ptr:
  890|     19|{
  891|     19|	zval *zv;
  892|       |
  893|     19|	zv = zend_hash_find(ht, key);
  894|     19|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 12, False: 7]
  ------------------
  895|     12|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     12|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     12|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     12|	} else {
  898|       |		return NULL;
  899|      7|	}
  900|     19|}
var_unserializer.c:zend_hash_num_elements:
  319|     21|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|     21|	return ht->nNumOfElements;
  321|     21|}
var_unserializer.c:zend_hash_exists:
  236|      5|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|      5|}
var_unserializer.c:zend_hash_index_update_ptr:
  830|      5|{
  831|      5|	zval tmp, *zv;
  832|       |
  833|      5|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      5|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      5|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      5|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      5|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  834|      5|	zv = zend_hash_index_update(ht, h, &tmp);
  835|      5|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (835:2): [True: 0, False: 5]
  |  Branch (835:2): [True: 5, False: 0]
  ------------------
  836|      5|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  837|      5|}
var_unserializer.c:_zend_handle_numeric_str:
  403|     10|{
  404|     10|	const char *tmp = key;
  405|       |
  406|     10|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  407|     10|		return 0;
  408|     10|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 0, False: 0]
  ------------------
  409|      0|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			return 0;
  411|      0|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|      0|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|     10|}
var.c:zend_hash_num_elements:
  319|    306|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    306|	return ht->nNumOfElements;
  321|    306|}
var.c:zend_array_release:
  375|    283|{
  376|    283|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|    283|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    283|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|    283|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|    283|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (376:6): [True: 283, False: 0]
  ------------------
  377|    283|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|    283|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (377:7): [True: 42, False: 241]
  ------------------
  378|     42|			zend_array_destroy(array);
  379|     42|		}
  380|    283|	}
  381|    283|}
php_uri.c:zend_hash_str_find_ptr:
  916|      4|{
  917|      4|	zval *zv;
  918|       |
  919|      4|	zv = zend_hash_str_find(ht, str, len);
  920|      4|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 4, False: 0]
  ------------------
  921|      4|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      4|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      4|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      4|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      4|}
php_uri.c:zend_hash_add_ptr:
  666|      6|{
  667|      6|	zval tmp, *zv;
  668|       |
  669|      6|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      6|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      6|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      6|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      6|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  670|      6|	zv = zend_hash_add(ht, key, &tmp);
  671|      6|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 6, False: 0]
  ------------------
  672|      6|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 6]
  |  Branch (672:3): [True: 6, False: 0]
  ------------------
  673|      6|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|      6|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|      6|}
main.c:zend_hash_str_find_ptr:
  916|      2|{
  917|      2|	zval *zv;
  918|       |
  919|      2|	zv = zend_hash_str_find(ht, str, len);
  920|      2|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 2, False: 0]
  ------------------
  921|      2|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      2|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      2|}
output.c:zend_hash_find_ptr:
  890|     22|{
  891|     22|	zval *zv;
  892|       |
  893|     22|	zv = zend_hash_find(ht, key);
  894|     22|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 0, False: 22]
  ------------------
  895|      0|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      0|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      0|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     22|	} else {
  898|       |		return NULL;
  899|     22|	}
  900|     22|}
php_variables.c:_zend_handle_numeric_str:
  403|    175|{
  404|    175|	const char *tmp = key;
  405|       |
  406|    175|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|    175|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 175, False: 0]
  |  |  ------------------
  ------------------
  407|    175|		return 0;
  408|    175|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 0, False: 0]
  ------------------
  409|      0|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			return 0;
  411|      0|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|      0|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|    175|}
php_variables.c:zend_hash_str_exists:
  241|      5|{
  242|       |	return zend_hash_str_find(ht, str, len) != NULL;
  243|      5|}
SAPI.c:zend_hash_add_mem:
  742|      4|{
  743|      4|	zval tmp, *zv;
  744|       |
  745|      4|	ZVAL_PTR(&tmp, NULL);
  ------------------
  |  | 1251|      4|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      4|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      4|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      4|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  746|      4|	if ((zv = zend_hash_add(ht, key, &tmp))) {
  ------------------
  |  Branch (746:6): [True: 4, False: 0]
  ------------------
  747|      4|		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
              		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|      4|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  748|      4|		memcpy(Z_PTR_P(zv), pData, size);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  749|      4|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  750|      4|	}
  751|      0|	return NULL;
  752|      4|}
filter.c:zend_hash_add_ptr:
  666|     15|{
  667|     15|	zval tmp, *zv;
  668|       |
  669|     15|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     15|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     15|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     15|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     15|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     15|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     15|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
  670|     15|	zv = zend_hash_add(ht, key, &tmp);
  671|     15|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 15, False: 0]
  ------------------
  672|     15|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 15]
  |  Branch (672:3): [True: 15, False: 0]
  ------------------
  673|     15|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     15|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     15|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|     15|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|     15|}
filter.c:zend_hash_num_elements:
  319|      3|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|      3|	return ht->nNumOfElements;
  321|      3|}
filter.c:zend_hash_str_find_ptr:
  916|      1|{
  917|      1|	zval *zv;
  918|       |
  919|      1|	zv = zend_hash_str_find(ht, str, len);
  920|      1|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 1, False: 0]
  ------------------
  921|      1|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      1|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|      1|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|      1|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|      1|}
stream_errors.c:zend_hash_str_find_ptr:
  916|  1.32k|{
  917|  1.32k|	zval *zv;
  918|       |
  919|  1.32k|	zv = zend_hash_str_find(ht, str, len);
  920|  1.32k|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 662, False: 662]
  ------------------
  921|    662|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|    662|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|    662|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    662|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    662|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|    662|	} else {
  924|       |		return NULL;
  925|    662|	}
  926|  1.32k|}
stream_errors.c:zend_hash_str_update_mem:
  803|    662|{
  804|    662|	void *p;
  805|       |
  806|       |	p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|    662|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    662|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 662]
  |  |  ------------------
  ------------------
  807|    662|	memcpy(p, pData, size);
  808|    662|	return zend_hash_str_update_ptr(ht, str, len, p);
  809|    662|}
stream_errors.c:zend_hash_str_update_ptr:
  732|    662|{
  733|    662|	zval tmp, *zv;
  734|       |
  735|    662|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    662|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    662|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    662|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    662|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    662|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    662|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    662|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    662|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    662|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 662]
  |  |  ------------------
  ------------------
  736|    662|	zv = zend_hash_str_update(ht, str, len, &tmp);
  737|    662|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    662|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (737:2): [True: 0, False: 662]
  |  Branch (737:2): [True: 662, False: 0]
  ------------------
  738|    662|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|    662|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    662|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  739|    662|}
streams.c:zend_hash_str_find_ptr:
  916|  6.63k|{
  917|  6.63k|	zval *zv;
  918|       |
  919|  6.63k|	zv = zend_hash_str_find(ht, str, len);
  920|  6.63k|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 6.62k, False: 6]
  ------------------
  921|  6.62k|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|  6.62k|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|  6.62k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  6.62k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  6.62k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|  6.62k|	} else {
  924|       |		return NULL;
  925|      6|	}
  926|  6.63k|}
streams.c:zend_hash_add_ptr:
  666|     31|{
  667|     31|	zval tmp, *zv;
  668|       |
  669|     31|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     31|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     31|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     31|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     31|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     31|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     31|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 31]
  |  |  ------------------
  ------------------
  670|     31|	zv = zend_hash_add(ht, key, &tmp);
  671|     31|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 31, False: 0]
  ------------------
  672|     31|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 31]
  |  Branch (672:3): [True: 31, False: 0]
  ------------------
  673|     31|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     31|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     31|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|     31|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|     31|}
streams.c:zend_hash_num_elements:
  319|     19|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|     19|	return ht->nNumOfElements;
  321|     19|}
streams.c:zend_hash_find_ex_ptr:
  903|      7|{
  904|      7|	zval *zv;
  905|       |
  906|      7|	zv = zend_hash_find_ex(ht, key, known_hash);
  907|      7|	if (zv) {
  ------------------
  |  Branch (907:6): [True: 7, False: 0]
  ------------------
  908|      7|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      7|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  909|      7|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      7|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      7|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  910|      7|	} else {
  911|       |		return NULL;
  912|      0|	}
  913|      7|}
streams.c:zend_hash_find_ex:
  190|      7|{
  191|      7|	if (known_hash) {
  ------------------
  |  Branch (191:6): [True: 7, False: 0]
  ------------------
  192|      7|		return zend_hash_find_known_hash(ht, key);
  193|      7|	} else {
  194|      0|		return zend_hash_find(ht, key);
  195|      0|	}
  196|      7|}
transports.c:zend_hash_update_ptr:
  722|      8|{
  723|      8|	zval tmp, *zv;
  724|       |
  725|      8|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      8|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      8|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      8|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      8|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  726|      8|	zv = zend_hash_update(ht, key, &tmp);
  727|      8|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (727:2): [True: 0, False: 8]
  |  Branch (727:2): [True: 8, False: 0]
  ------------------
  728|      8|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  729|      8|}
userspace.c:zend_hash_exists:
  236|      1|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|      1|}
zend_func_info.c:zend_hash_add_ptr:
  666|  1.06k|{
  667|  1.06k|	zval tmp, *zv;
  668|       |
  669|  1.06k|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|  1.06k|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|  1.06k|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|  1.06k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  1.06k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|  1.06k|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|  1.06k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.06k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|  1.06k|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|  1.06k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 1.06k]
  |  |  ------------------
  ------------------
  670|  1.06k|	zv = zend_hash_add(ht, key, &tmp);
  671|  1.06k|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 1.06k, False: 0]
  ------------------
  672|  1.06k|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|  1.06k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 1.06k]
  |  Branch (672:3): [True: 1.06k, False: 0]
  ------------------
  673|  1.06k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  1.06k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  1.06k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|  1.06k|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|  1.06k|}
zend_API.c:zend_hash_num_elements:
  319|     70|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|     70|	return ht->nNumOfElements;
  321|     70|}
zend_API.c:zend_hash_find_ptr:
  890|    724|{
  891|    724|	zval *zv;
  892|       |
  893|    724|	zv = zend_hash_find(ht, key);
  894|    724|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 10, False: 714]
  ------------------
  895|     10|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     10|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     10|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     10|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     10|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|    714|	} else {
  898|       |		return NULL;
  899|    714|	}
  900|    724|}
zend_API.c:_zend_hash_append_ptr:
 1685|      4|{
 1686|      4|	return _zend_hash_append_ptr_ex(ht, key, ptr, 0);
 1687|      4|}
zend_API.c:_zend_hash_append_ptr_ex:
 1663|      4|{
 1664|      4|	uint32_t idx = ht->nNumUsed++;
 1665|      4|	uint32_t nIndex;
 1666|      4|	Bucket *p = ht->arData + idx;
 1667|       |
 1668|      4|	ZVAL_PTR(&p->val, ptr);
  ------------------
  |  | 1251|      4|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      4|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      4|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      4|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1669|      4|	ZEND_ASSERT(!key_guaranteed_interned || ZSTR_IS_INTERNED(key));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1669:2): [True: 4, False: 0]
  |  Branch (1669:2): [True: 0, False: 0]
  |  Branch (1669:2): [True: 4, False: 0]
  |  Branch (1669:2): [True: 0, False: 0]
  ------------------
 1670|      4|	if (!key_guaranteed_interned && !ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1670:6): [True: 4, False: 0]
  |  Branch (1670:34): [True: 0, False: 4]
  ------------------
 1671|      0|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|      0|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1672|      0|		zend_string_addref(key);
 1673|      0|		zend_string_hash_val(key);
 1674|      0|	}
 1675|      4|	p->key = key;
 1676|      4|	p->h = ZSTR_H(key);
  ------------------
  |  |   69|      4|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1677|      4|	nIndex = (uint32_t)p->h | ht->nTableMask;
 1678|      4|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|      4|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|      4|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      4|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1679|      4|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|      4|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      4|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|      4|	(idx)
  ------------------
 1680|      4|	ht->nNumOfElements++;
 1681|      4|	return &p->val;
 1682|      4|}
zend_API.c:zend_hash_get_current_key:
  275|      2|static zend_always_inline zend_hash_key_type zend_hash_get_current_key(const HashTable *ht, zend_string **str_index, zend_ulong *num_index) {
  276|      2|	return zend_hash_get_current_key_ex(ht, str_index, num_index, &ht->nInternalPointer);
  277|      2|}
zend_API.c:zend_symtable_str_update:
  595|     52|{
  596|     52|	zend_ulong idx;
  597|       |
  598|     52|	if (ZEND_HANDLE_NUMERIC_STR(str, len, idx)) {
  ------------------
  |  |  421|     52|	_zend_handle_numeric_str(key, length, &idx)
  |  |  ------------------
  |  |  |  Branch (421:2): [True: 0, False: 52]
  |  |  ------------------
  ------------------
  599|      0|		return zend_hash_index_update(ht, idx, pData);
  600|     52|	} else {
  601|     52|		return zend_hash_str_update(ht, str, len, pData);
  602|     52|	}
  603|     52|}
zend_API.c:zend_symtable_update:
  499|    200|{
  500|    200|	zend_ulong idx;
  501|       |
  502|    200|	if (ZEND_HANDLE_NUMERIC(key, idx)) {
  ------------------
  |  |  424|    200|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|    200|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 200]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  503|      0|		return zend_hash_index_update(ht, idx, pData);
  504|    200|	} else {
  505|    200|		return zend_hash_update(ht, key, pData);
  506|    200|	}
  507|    200|}
zend_API.c:zend_hash_add_ptr:
  666|  4.20k|{
  667|  4.20k|	zval tmp, *zv;
  668|       |
  669|  4.20k|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|  4.20k|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|  4.20k|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|  4.20k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  4.20k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|  4.20k|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|  4.20k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.20k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|  4.20k|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|  4.20k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 4.20k]
  |  |  ------------------
  ------------------
  670|  4.20k|	zv = zend_hash_add(ht, key, &tmp);
  671|  4.20k|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 4.20k, False: 0]
  ------------------
  672|  4.20k|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|  4.20k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 4.20k]
  |  Branch (672:3): [True: 4.20k, False: 0]
  ------------------
  673|  4.20k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  4.20k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  4.20k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|  4.20k|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|  4.20k|}
zend_API.c:zend_hash_update_ptr:
  722|  1.17k|{
  723|  1.17k|	zval tmp, *zv;
  724|       |
  725|  1.17k|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|  1.17k|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|  1.17k|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|  1.17k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  1.17k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|  1.17k|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|  1.17k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.17k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|  1.17k|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|  1.17k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 1.17k]
  |  |  ------------------
  ------------------
  726|  1.17k|	zv = zend_hash_update(ht, key, &tmp);
  727|  1.17k|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|  1.17k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (727:2): [True: 0, False: 1.17k]
  |  Branch (727:2): [True: 1.17k, False: 0]
  ------------------
  728|  1.17k|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|  1.17k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  1.17k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  729|  1.17k|}
zend_API.c:_zend_handle_numeric_str:
  403|    253|{
  404|    253|	const char *tmp = key;
  405|       |
  406|    253|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|    253|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 253, False: 0]
  |  |  ------------------
  ------------------
  407|    253|		return 0;
  408|    253|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 0, False: 0]
  ------------------
  409|      0|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			return 0;
  411|      0|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|      0|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|    253|}
zend_attributes.c:zend_hash_next_index_insert_ptr:
  853|    295|{
  854|    295|	zval tmp, *zv;
  855|       |
  856|    295|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    295|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    295|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    295|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    295|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    295|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    295|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    295|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    295|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    295|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 295]
  |  |  ------------------
  ------------------
  857|    295|	zv = zend_hash_next_index_insert(ht, &tmp);
  858|    295|	if (zv) {
  ------------------
  |  Branch (858:6): [True: 295, False: 0]
  ------------------
  859|    295|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    295|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (859:3): [True: 0, False: 295]
  |  Branch (859:3): [True: 295, False: 0]
  ------------------
  860|    295|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    295|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    295|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  861|    295|	} else {
  862|       |		return NULL;
  863|      0|	}
  864|    295|}
zend_attributes.c:zend_hash_update_ptr:
  722|     16|{
  723|     16|	zval tmp, *zv;
  724|       |
  725|     16|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     16|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     16|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     16|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     16|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     16|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  726|     16|	zv = zend_hash_update(ht, key, &tmp);
  727|     16|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (727:2): [True: 0, False: 16]
  |  Branch (727:2): [True: 16, False: 0]
  ------------------
  728|     16|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|     16|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  729|     16|}
zend_attributes.c:zend_hash_find_ptr:
  890|    293|{
  891|    293|	zval *zv;
  892|       |
  893|    293|	zv = zend_hash_find(ht, key);
  894|    293|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 212, False: 81]
  ------------------
  895|    212|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|    212|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|    212|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    212|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    212|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|    212|	} else {
  898|       |		return NULL;
  899|     81|	}
  900|    293|}
zend_autoload.c:zend_hash_get_current_data_ptr_ex:
  992|     14|{
  993|     14|	zval *zv;
  994|       |
  995|     14|	zv = zend_hash_get_current_data_ex(ht, pos);
  996|     14|	if (zv) {
  ------------------
  |  Branch (996:6): [True: 12, False: 2]
  ------------------
  997|     12|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     12|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  998|     12|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  999|     12|	} else {
 1000|       |		return NULL;
 1001|      2|	}
 1002|     14|}
zend_autoload.c:zend_hash_find_ptr:
  890|      4|{
  891|      4|	zval *zv;
  892|       |
  893|      4|	zv = zend_hash_find(ht, key);
  894|      4|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 2, False: 2]
  ------------------
  895|      2|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      2|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|      2|	} else {
  898|       |		return NULL;
  899|      2|	}
  900|      4|}
zend_autoload.c:zend_hash_next_index_insert_mem:
  876|     12|{
  877|     12|	zval tmp;
  878|       |
  879|     12|	void *p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|     12|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  880|     12|	memcpy(p, pData, size);
  881|     12|	ZVAL_PTR(&tmp, p);
  ------------------
  |  | 1251|     12|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     12|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     12|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     12|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
  882|     12|	if (!zend_hash_next_index_insert(ht, &tmp)) {
  ------------------
  |  Branch (882:6): [True: 0, False: 12]
  ------------------
  883|      0|		pefree(p, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  884|      0|		return NULL;
  885|      0|	}
  886|     12|	return p;
  887|     12|}
zend_builtin_functions.c:zend_hash_num_elements:
  319|      2|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|      2|	return ht->nNumOfElements;
  321|      2|}
zend_builtin_functions.c:zend_hash_add_ptr:
  666|     20|{
  667|     20|	zval tmp, *zv;
  668|       |
  669|     20|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     20|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     20|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     20|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     20|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     20|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     20|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
  670|     20|	zv = zend_hash_add(ht, key, &tmp);
  671|     20|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 20, False: 0]
  ------------------
  672|     20|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 20]
  |  Branch (672:3): [True: 20, False: 0]
  ------------------
  673|     20|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     20|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     20|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|     20|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|     20|}
zend_builtin_functions.c:zend_array_release:
  375|      1|{
  376|      1|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      1|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (376:6): [True: 1, False: 0]
  ------------------
  377|      1|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (377:7): [True: 0, False: 1]
  ------------------
  378|      0|			zend_array_destroy(array);
  379|      0|		}
  380|      1|	}
  381|      1|}
zend_builtin_functions.c:zend_hash_find_ptr:
  890|     22|{
  891|     22|	zval *zv;
  892|       |
  893|     22|	zv = zend_hash_find(ht, key);
  894|     22|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 3, False: 19]
  ------------------
  895|      3|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      3|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      3|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     19|	} else {
  898|       |		return NULL;
  899|     19|	}
  900|     22|}
zend_builtin_functions.c:zend_hash_exists:
  236|      2|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|      2|}
zend_builtin_functions.c:_zend_hash_append_ex:
 1636|  49.9k|{
 1637|  49.9k|	uint32_t idx = ht->nNumUsed++;
 1638|  49.9k|	uint32_t nIndex;
 1639|  49.9k|	Bucket *p = ht->arData + idx;
 1640|       |
 1641|  49.9k|	ZVAL_COPY_VALUE(&p->val, zv);
  ------------------
  |  | 1416|  49.9k|	do {												\
  |  | 1417|  49.9k|		zval *_z1 = (z);								\
  |  | 1418|  49.9k|		const zval *_z2 = (v);							\
  |  | 1419|  49.9k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  49.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  49.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  49.9k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  49.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  49.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  49.9k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  49.9k|	do {												\
  |  |  |  | 1408|  49.9k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  49.9k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  49.9k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  49.9k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  49.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  49.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  49.9k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 49.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  49.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 49.9k]
  |  |  ------------------
  ------------------
 1642|  49.9k|	ZEND_ASSERT(!key_guaranteed_interned || ZSTR_IS_INTERNED(key));
  ------------------
  |  |  112|  49.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1642:2): [True: 49.9k, False: 0]
  |  Branch (1642:2): [True: 0, False: 0]
  |  Branch (1642:2): [True: 0, False: 49.9k]
  |  Branch (1642:2): [True: 49.9k, False: 0]
  ------------------
 1643|  49.9k|	if (!key_guaranteed_interned && !ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1643:6): [True: 0, False: 49.9k]
  |  Branch (1643:34): [True: 0, False: 0]
  ------------------
 1644|      0|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|      0|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1645|      0|		zend_string_addref(key);
 1646|      0|		zend_string_hash_val(key);
 1647|      0|	}
 1648|  49.9k|	p->key = key;
 1649|  49.9k|	p->h = ZSTR_H(key);
  ------------------
  |  |   69|  49.9k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1650|  49.9k|	nIndex = (uint32_t)p->h | ht->nTableMask;
 1651|  49.9k|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|  49.9k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  49.9k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  49.9k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1652|  49.9k|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|  49.9k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  49.9k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|  49.9k|	(idx)
  ------------------
 1653|  49.9k|	ht->nNumOfElements++;
 1654|  49.9k|	return &p->val;
 1655|  49.9k|}
zend_builtin_functions.c:zend_hash_find_ex_ind:
  438|      8|{
  439|      8|	zval *zv;
  440|       |
  441|      8|	zv = zend_hash_find_ex(ht, key, known_hash);
  442|      8|	return (zv && Z_TYPE_P(zv) == IS_INDIRECT) ?
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	return (zv && Z_TYPE_P(zv) == IS_INDIRECT) ?
  ------------------
  |  |  629|      8|#define IS_INDIRECT             	12
  ------------------
  |  Branch (442:10): [True: 8, False: 0]
  |  Branch (442:16): [True: 8, False: 0]
  ------------------
  443|      8|		((Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF) ? Z_INDIRECT_P(zv) : NULL) : zv;
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		((Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF) ? Z_INDIRECT_P(zv) : NULL) : zv;
  ------------------
  |  |  606|      8|#define IS_UNDEF					0
  ------------------
              		((Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF) ? Z_INDIRECT_P(zv) : NULL) : zv;
  ------------------
  |  | 1044|      8|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      8|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  |  Branch (443:4): [True: 8, False: 0]
  ------------------
  444|      8|}
zend_builtin_functions.c:zend_hash_find_ex:
  190|      8|{
  191|      8|	if (known_hash) {
  ------------------
  |  Branch (191:6): [True: 8, False: 0]
  ------------------
  192|      8|		return zend_hash_find_known_hash(ht, key);
  193|      8|	} else {
  194|      0|		return zend_hash_find(ht, key);
  195|      0|	}
  196|      8|}
zend_closures.c:zend_hash_num_elements:
  319|      4|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|      4|	return ht->nNumOfElements;
  321|      4|}
zend_compile.c:zend_hash_add_ptr:
  666|  2.58k|{
  667|  2.58k|	zval tmp, *zv;
  668|       |
  669|  2.58k|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|  2.58k|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|  2.58k|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|  2.58k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  2.58k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|  2.58k|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|  2.58k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.58k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|  2.58k|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|  2.58k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 2.58k]
  |  |  ------------------
  ------------------
  670|  2.58k|	zv = zend_hash_add(ht, key, &tmp);
  671|  2.58k|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 2.56k, False: 20]
  ------------------
  672|  2.56k|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|  2.56k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 2.56k]
  |  Branch (672:3): [True: 2.56k, False: 0]
  ------------------
  673|  2.56k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  2.56k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  2.56k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|  2.56k|	} else {
  675|       |		return NULL;
  676|     20|	}
  677|  2.58k|}
zend_compile.c:zend_hash_find_ptr:
  890|  13.3k|{
  891|  13.3k|	zval *zv;
  892|       |
  893|  13.3k|	zv = zend_hash_find(ht, key);
  894|  13.3k|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 2.15k, False: 11.1k]
  ------------------
  895|  2.15k|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|  2.15k|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|  2.15k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  2.15k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  2.15k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|  11.1k|	} else {
  898|       |		return NULL;
  899|  11.1k|	}
  900|  13.3k|}
zend_compile.c:zend_hash_add_mem:
  742|     84|{
  743|     84|	zval tmp, *zv;
  744|       |
  745|     84|	ZVAL_PTR(&tmp, NULL);
  ------------------
  |  | 1251|     84|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     84|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     84|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     84|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     84|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     84|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     84|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     84|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     84|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 84]
  |  |  ------------------
  ------------------
  746|     84|	if ((zv = zend_hash_add(ht, key, &tmp))) {
  ------------------
  |  Branch (746:6): [True: 83, False: 1]
  ------------------
  747|     83|		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  | 1053|     83|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     83|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
              		Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|     83|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     67|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     67|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     67|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     67|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     67|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 16, False: 67]
  |  |  ------------------
  ------------------
  748|     83|		memcpy(Z_PTR_P(zv), pData, size);
  ------------------
  |  | 1053|     83|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     83|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  749|     83|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     83|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     83|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  750|     83|	}
  751|      1|	return NULL;
  752|     84|}
zend_compile.c:zend_hash_num_elements:
  319|    339|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    339|	return ht->nNumOfElements;
  321|    339|}
zend_compile.c:zend_hash_exists:
  236|    598|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|    598|}
zend_compile.c:zend_hash_index_update_mem:
  867|     27|{
  868|     27|	void *p;
  869|       |
  870|       |	p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|     27|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     27|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     27|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     27|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     27|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     27|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 27]
  |  |  ------------------
  ------------------
  871|     27|	memcpy(p, pData, size);
  872|     27|	return zend_hash_index_update_ptr(ht, h, p);
  873|     27|}
zend_compile.c:zend_hash_index_update_ptr:
  830|     27|{
  831|     27|	zval tmp, *zv;
  832|       |
  833|     27|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     27|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     27|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     27|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     27|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     27|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     27|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     27|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     27|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     27|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 27]
  |  |  ------------------
  ------------------
  834|     27|	zv = zend_hash_index_update(ht, h, &tmp);
  835|     27|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     27|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (835:2): [True: 0, False: 27]
  |  Branch (835:2): [True: 27, False: 0]
  ------------------
  836|     27|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|     27|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     27|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  837|     27|}
zend_compile.c:zend_hash_index_find_ptr:
  941|     24|{
  942|     24|	zval *zv;
  943|       |
  944|     24|	zv = zend_hash_index_find(ht, h);
  945|     24|	if (zv) {
  ------------------
  |  Branch (945:6): [True: 24, False: 0]
  ------------------
  946|     24|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     24|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  947|     24|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     24|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     24|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  948|     24|	} else {
  949|       |		return NULL;
  950|      0|	}
  951|     24|}
zend_compile.c:zend_symtable_update:
  499|     91|{
  500|     91|	zend_ulong idx;
  501|       |
  502|     91|	if (ZEND_HANDLE_NUMERIC(key, idx)) {
  ------------------
  |  |  424|     91|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|     91|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 1, False: 90]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  503|      1|		return zend_hash_index_update(ht, idx, pData);
  504|     90|	} else {
  505|     90|		return zend_hash_update(ht, key, pData);
  506|     90|	}
  507|     91|}
zend_compile.c:_zend_handle_numeric_str:
  403|    220|{
  404|    220|	const char *tmp = key;
  405|       |
  406|    220|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|    220|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 175, False: 45]
  |  |  ------------------
  ------------------
  407|    175|		return 0;
  408|    175|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 32, False: 13]
  ------------------
  409|     32|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 32, False: 0]
  ------------------
  410|     32|			return 0;
  411|     32|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|     13|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|    220|}
zend_compile.c:zend_symtable_find:
  547|      2|{
  548|      2|	zend_ulong idx;
  549|       |
  550|      2|	if (ZEND_HANDLE_NUMERIC(key, idx)) {
  ------------------
  |  |  424|      2|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      2|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  551|      0|		return zend_hash_index_find(ht, idx);
  552|      2|	} else {
  553|      2|		return zend_hash_find(ht, key);
  554|      2|	}
  555|      2|}
zend_constants.c:zend_hash_str_find_ptr:
  916|     22|{
  917|     22|	zval *zv;
  918|       |
  919|     22|	zv = zend_hash_str_find(ht, str, len);
  920|     22|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 12, False: 10]
  ------------------
  921|     12|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     12|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     12|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|     12|	} else {
  924|       |		return NULL;
  925|     10|	}
  926|     22|}
zend_constants.c:zend_hash_find_ptr:
  890|  18.5k|{
  891|  18.5k|	zval *zv;
  892|       |
  893|  18.5k|	zv = zend_hash_find(ht, key);
  894|  18.5k|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 78, False: 18.4k]
  ------------------
  895|     78|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     78|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     78|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     78|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     78|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|  18.4k|	} else {
  898|       |		return NULL;
  899|  18.4k|	}
  900|  18.5k|}
zend_constants.c:zend_hash_add_ptr:
  666|  1.22k|{
  667|  1.22k|	zval tmp, *zv;
  668|       |
  669|  1.22k|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|  1.22k|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|  1.22k|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|  1.22k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  1.22k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|  1.22k|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|  1.22k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.22k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|  1.22k|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|  1.22k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 1.22k]
  |  |  ------------------
  ------------------
  670|  1.22k|	zv = zend_hash_add(ht, key, &tmp);
  671|  1.22k|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 1.21k, False: 8]
  ------------------
  672|  1.21k|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|  1.21k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 1.21k]
  |  Branch (672:3): [True: 1.21k, False: 0]
  ------------------
  673|  1.21k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  1.21k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  1.21k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|  1.21k|	} else {
  675|       |		return NULL;
  676|      8|	}
  677|  1.22k|}
zend_enum.c:zend_hash_str_exists:
  241|    303|{
  242|       |	return zend_hash_str_find(ht, str, len) != NULL;
  243|    303|}
zend_enum.c:zend_hash_find_ptr:
  890|      4|{
  891|      4|	zval *zv;
  892|       |
  893|      4|	zv = zend_hash_find(ht, key);
  894|      4|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 4, False: 0]
  ------------------
  895|      4|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      4|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      4|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|      4|	} else {
  898|       |		return NULL;
  899|      0|	}
  900|      4|}
zend_enum.c:zend_hash_add_ptr:
  666|    183|{
  667|    183|	zval tmp, *zv;
  668|       |
  669|    183|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    183|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    183|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    183|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    183|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    183|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    183|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    183|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    183|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    183|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 183]
  |  |  ------------------
  ------------------
  670|    183|	zv = zend_hash_add(ht, key, &tmp);
  671|    183|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 181, False: 2]
  ------------------
  672|    181|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    181|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 181]
  |  Branch (672:3): [True: 181, False: 0]
  ------------------
  673|    181|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    181|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    181|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|    181|	} else {
  675|       |		return NULL;
  676|      2|	}
  677|    183|}
zend_exceptions.c:zend_hash_str_find_ptr:
  916|  2.67k|{
  917|  2.67k|	zval *zv;
  918|       |
  919|  2.67k|	zv = zend_hash_str_find(ht, str, len);
  920|  2.67k|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 2.67k, False: 0]
  ------------------
  921|  2.67k|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|  2.67k|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|  2.67k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  2.67k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  2.67k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|  2.67k|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|  2.67k|}
zend_execute_API.c:zend_hash_num_elements:
  319|  68.3k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  68.3k|	return ht->nNumOfElements;
  321|  68.3k|}
zend_execute_API.c:zend_hash_release:
  385|     28|{
  386|     28|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     28|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     28|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     28|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     28|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (386:6): [True: 28, False: 0]
  ------------------
  387|     28|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|     28|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (387:7): [True: 28, False: 0]
  ------------------
  388|     28|			zend_hash_destroy(array);
  389|       |			pefree(array, GC_FLAGS(array) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|     28|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     28|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     28|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     28|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     28|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     28|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 28]
  |  |  ------------------
  ------------------
  390|     28|		}
  391|     28|	}
  392|     28|}
zend_execute_API.c:_zend_hash_append_ind:
 1690|    121|{
 1691|    121|	uint32_t idx = ht->nNumUsed++;
 1692|    121|	uint32_t nIndex;
 1693|    121|	Bucket *p = ht->arData + idx;
 1694|       |
 1695|    121|	ZVAL_INDIRECT(&p->val, ptr);
  ------------------
  |  | 1246|    121|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|    121|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|    121|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|    121|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|    121|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|    121|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    121|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|    121|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|    121|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 121]
  |  |  ------------------
  ------------------
 1696|    121|	if (!ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1696:6): [True: 15, False: 106]
  ------------------
 1697|     15|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|     15|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|     15|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1698|     15|		zend_string_addref(key);
 1699|     15|		zend_string_hash_val(key);
 1700|     15|	}
 1701|    121|	p->key = key;
 1702|    121|	p->h = ZSTR_H(key);
  ------------------
  |  |   69|    121|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1703|    121|	nIndex = (uint32_t)p->h | ht->nTableMask;
 1704|    121|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|    121|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|    121|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    121|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1705|    121|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|    121|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    121|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|    121|	(idx)
  ------------------
 1706|    121|	ht->nNumOfElements++;
 1707|    121|}
zend_execute.c:_zend_handle_numeric_str:
  403|    406|{
  404|    406|	const char *tmp = key;
  405|       |
  406|    406|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|    406|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 382, False: 24]
  |  |  ------------------
  ------------------
  407|    382|		return 0;
  408|    382|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 19, False: 5]
  ------------------
  409|     19|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 15, False: 4]
  ------------------
  410|     15|			return 0;
  411|     15|		}
  412|      4|		tmp++;
  413|      4|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 4, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      4|			return 0;
  415|      4|		}
  416|      4|	}
  417|      5|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|    406|}
zend_execute.c:zend_hash_find_ex:
  190|  17.3k|{
  191|  17.3k|	if (known_hash) {
  ------------------
  |  Branch (191:6): [True: 295, False: 17.0k]
  ------------------
  192|    295|		return zend_hash_find_known_hash(ht, key);
  193|  17.0k|	} else {
  194|  17.0k|		return zend_hash_find(ht, key);
  195|  17.0k|	}
  196|  17.3k|}
zend_execute.c:zend_array_release:
  375|     13|{
  376|     13|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     13|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     13|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     13|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     13|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (376:6): [True: 13, False: 0]
  ------------------
  377|     13|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|     13|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (377:7): [True: 8, False: 5]
  ------------------
  378|      8|			zend_array_destroy(array);
  379|      8|		}
  380|     13|	}
  381|     13|}
zend_execute.c:zend_hash_exists:
  236|      3|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|      3|}
zend_execute.c:zend_hash_find_ptr:
  890|      4|{
  891|      4|	zval *zv;
  892|       |
  893|      4|	zv = zend_hash_find(ht, key);
  894|      4|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 4, False: 0]
  ------------------
  895|      4|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      4|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|      4|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|      4|	} else {
  898|       |		return NULL;
  899|      0|	}
  900|      4|}
zend_execute.c:zend_hash_index_exists:
  246|      1|{
  247|       |	return zend_hash_index_find(ht, h) != NULL;
  248|      1|}
zend_execute.c:zend_hash_num_elements:
  319|    651|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    651|	return ht->nNumOfElements;
  321|    651|}
zend_hash.c:zend_hash_str_find_ptr:
  916|     17|{
  917|     17|	zval *zv;
  918|       |
  919|     17|	zv = zend_hash_str_find(ht, str, len);
  920|     17|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 15, False: 2]
  ------------------
  921|     15|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     15|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|     15|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     15|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     15|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|     15|	} else {
  924|       |		return NULL;
  925|      2|	}
  926|     17|}
zend_hash.c:zend_hash_find_ptr:
  890|    140|{
  891|    140|	zval *zv;
  892|       |
  893|    140|	zv = zend_hash_find(ht, key);
  894|    140|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 66, False: 74]
  ------------------
  895|     66|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     66|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     66|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     66|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     66|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     74|	} else {
  898|       |		return NULL;
  899|     74|	}
  900|    140|}
zend_hash.c:zend_hash_num_elements:
  319|    317|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|    317|	return ht->nNumOfElements;
  321|    317|}
zend_hash.c:_zend_handle_numeric_str:
  403|    143|{
  404|    143|	const char *tmp = key;
  405|       |
  406|    143|	if (EXPECTED(*tmp > '9')) {
  ------------------
  |  |  456|    143|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 123, False: 20]
  |  |  ------------------
  ------------------
  407|    123|		return 0;
  408|    123|	} else if (*tmp < '0') {
  ------------------
  |  Branch (408:13): [True: 8, False: 12]
  ------------------
  409|      8|		if (*tmp != '-') {
  ------------------
  |  Branch (409:7): [True: 8, False: 0]
  ------------------
  410|      8|			return 0;
  411|      8|		}
  412|      0|		tmp++;
  413|      0|		if (*tmp > '9' || *tmp < '0') {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  |  Branch (413:21): [True: 0, False: 0]
  ------------------
  414|      0|			return 0;
  415|      0|		}
  416|      0|	}
  417|     12|	return _zend_handle_numeric_str_ex(key, length, idx);
  418|    143|}
zend_inheritance.c:zend_hash_find_ptr:
  890|    137|{
  891|    137|	zval *zv;
  892|       |
  893|    137|	zv = zend_hash_find(ht, key);
  894|    137|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 75, False: 62]
  ------------------
  895|     75|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     75|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     75|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     75|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     75|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     75|	} else {
  898|       |		return NULL;
  899|     62|	}
  900|    137|}
zend_inheritance.c:zend_hash_add_ptr:
  666|    194|{
  667|    194|	zval tmp, *zv;
  668|       |
  669|    194|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    194|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    194|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    194|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    194|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    194|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    194|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    194|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    194|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    194|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 194]
  |  |  ------------------
  ------------------
  670|    194|	zv = zend_hash_add(ht, key, &tmp);
  671|    194|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 194, False: 0]
  ------------------
  672|    194|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    194|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 194]
  |  Branch (672:3): [True: 194, False: 0]
  ------------------
  673|    194|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    194|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    194|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|    194|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|    194|}
zend_inheritance.c:zend_hash_num_elements:
  319|  3.02k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  3.02k|	return ht->nNumOfElements;
  321|  3.02k|}
zend_inheritance.c:zend_hash_index_find_ptr:
  941|     49|{
  942|     49|	zval *zv;
  943|       |
  944|     49|	zv = zend_hash_index_find(ht, h);
  945|     49|	if (zv) {
  ------------------
  |  Branch (945:6): [True: 25, False: 24]
  ------------------
  946|     25|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     25|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  947|     25|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     25|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     25|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  948|     25|	} else {
  949|       |		return NULL;
  950|     24|	}
  951|     49|}
zend_inheritance.c:zend_hash_index_add_new_ptr:
  821|     24|{
  822|     24|	zval tmp, *zv;
  823|       |
  824|     24|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     24|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     24|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     24|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     24|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     24|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     24|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
  825|     24|	zv = zend_hash_index_add_new(ht, h, &tmp);
  826|     24|	return zv ? Z_PTR_P(zv) : NULL;
  ------------------
  |  | 1053|     24|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     24|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  |  Branch (826:9): [True: 24, False: 0]
  ------------------
  827|     24|}
zend_inheritance.c:zend_hash_next_index_insert_ptr:
  853|     26|{
  854|     26|	zval tmp, *zv;
  855|       |
  856|     26|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     26|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     26|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     26|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     26|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     26|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     26|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
  857|     26|	zv = zend_hash_next_index_insert(ht, &tmp);
  858|     26|	if (zv) {
  ------------------
  |  Branch (858:6): [True: 26, False: 0]
  ------------------
  859|     26|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (859:3): [True: 0, False: 26]
  |  Branch (859:3): [True: 26, False: 0]
  ------------------
  860|     26|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     26|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     26|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  861|     26|	} else {
  862|       |		return NULL;
  863|      0|	}
  864|     26|}
zend_inheritance.c:_zend_hash_append_ptr:
 1685|  3.75k|{
 1686|  3.75k|	return _zend_hash_append_ptr_ex(ht, key, ptr, 0);
 1687|  3.75k|}
zend_inheritance.c:_zend_hash_append_ptr_ex:
 1663|  3.75k|{
 1664|  3.75k|	uint32_t idx = ht->nNumUsed++;
 1665|  3.75k|	uint32_t nIndex;
 1666|  3.75k|	Bucket *p = ht->arData + idx;
 1667|       |
 1668|  3.75k|	ZVAL_PTR(&p->val, ptr);
  ------------------
  |  | 1251|  3.75k|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|  3.75k|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|  3.75k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  3.75k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|  3.75k|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|  3.75k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.75k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|  3.75k|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|  3.75k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 3.75k]
  |  |  ------------------
  ------------------
 1669|  3.75k|	ZEND_ASSERT(!key_guaranteed_interned || ZSTR_IS_INTERNED(key));
  ------------------
  |  |  112|  3.75k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1669:2): [True: 3.75k, False: 0]
  |  Branch (1669:2): [True: 0, False: 0]
  |  Branch (1669:2): [True: 3.75k, False: 0]
  |  Branch (1669:2): [True: 0, False: 0]
  ------------------
 1670|  3.75k|	if (!key_guaranteed_interned && !ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1670:6): [True: 3.75k, False: 0]
  |  Branch (1670:34): [True: 27, False: 3.73k]
  ------------------
 1671|     27|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|     27|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|     27|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1672|     27|		zend_string_addref(key);
 1673|     27|		zend_string_hash_val(key);
 1674|     27|	}
 1675|  3.75k|	p->key = key;
 1676|  3.75k|	p->h = ZSTR_H(key);
  ------------------
  |  |   69|  3.75k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1677|  3.75k|	nIndex = (uint32_t)p->h | ht->nTableMask;
 1678|  3.75k|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|  3.75k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|  3.75k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  3.75k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1679|  3.75k|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|  3.75k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  3.75k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|  3.75k|	(idx)
  ------------------
 1680|  3.75k|	ht->nNumOfElements++;
 1681|  3.75k|	return &p->val;
 1682|  3.75k|}
zend_inheritance.c:zend_hash_add_new_ptr:
  680|     78|{
  681|     78|	zval tmp, *zv;
  682|       |
  683|     78|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|     78|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     78|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     78|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     78|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     78|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     78|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     78|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     78|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     78|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 78]
  |  |  ------------------
  ------------------
  684|     78|	zv = zend_hash_add_new(ht, key, &tmp);
  685|     78|	if (zv) {
  ------------------
  |  Branch (685:6): [True: 78, False: 0]
  ------------------
  686|     78|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|     78|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (686:3): [True: 0, False: 78]
  |  Branch (686:3): [True: 78, False: 0]
  ------------------
  687|     78|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     78|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     78|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  688|     78|	} else {
  689|       |		return NULL;
  690|      0|	}
  691|     78|}
zend_inheritance.c:zend_hash_update_ptr:
  722|    118|{
  723|    118|	zval tmp, *zv;
  724|       |
  725|    118|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    118|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    118|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    118|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    118|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    118|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    118|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    118|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    118|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    118|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 118]
  |  |  ------------------
  ------------------
  726|    118|	zv = zend_hash_update(ht, key, &tmp);
  727|    118|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    118|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (727:2): [True: 0, False: 118]
  |  Branch (727:2): [True: 118, False: 0]
  ------------------
  728|    118|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|    118|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    118|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  729|    118|}
zend_inheritance.c:zend_hash_exists:
  236|     22|{
  237|       |	return zend_hash_find(ht, key) != NULL;
  238|     22|}
zend_ini.c:zend_hash_sort:
  308|      1|static zend_always_inline void ZEND_FASTCALL zend_hash_sort(HashTable *ht, bucket_compare_func_t compare_func, bool renumber) {
  309|      1|	zend_hash_sort_ex(ht, zend_sort, compare_func, renumber);
  310|      1|}
zend_ini.c:zend_hash_add_ptr:
  666|    423|{
  667|    423|	zval tmp, *zv;
  668|       |
  669|    423|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|    423|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|    423|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|    423|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    423|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|    423|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|    423|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    423|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|    423|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|    423|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 423]
  |  |  ------------------
  ------------------
  670|    423|	zv = zend_hash_add(ht, key, &tmp);
  671|    423|	if (zv) {
  ------------------
  |  Branch (671:6): [True: 423, False: 0]
  ------------------
  672|    423|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|    423|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (672:3): [True: 0, False: 423]
  |  Branch (672:3): [True: 423, False: 0]
  ------------------
  673|    423|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    423|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    423|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  674|    423|	} else {
  675|       |		return NULL;
  676|      0|	}
  677|    423|}
zend_ini.c:zend_hash_find_ptr:
  890|    153|{
  891|    153|	zval *zv;
  892|       |
  893|    153|	zv = zend_hash_find(ht, key);
  894|    153|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 132, False: 21]
  ------------------
  895|    132|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|    132|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|    132|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    132|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    132|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|    132|	} else {
  898|       |		return NULL;
  899|     21|	}
  900|    153|}
zend_ini.c:zend_hash_str_find_ptr:
  916|  17.6k|{
  917|  17.6k|	zval *zv;
  918|       |
  919|  17.6k|	zv = zend_hash_str_find(ht, str, len);
  920|  17.6k|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 17.6k, False: 0]
  ------------------
  921|  17.6k|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|  17.6k|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|  17.6k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  17.6k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  17.6k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|  17.6k|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|  17.6k|}
zend_interfaces.c:zend_hash_str_find_ptr:
  916|    438|{
  917|    438|	zval *zv;
  918|       |
  919|    438|	zv = zend_hash_str_find(ht, str, len);
  920|    438|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 438, False: 0]
  ------------------
  921|    438|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|    438|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|    438|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    438|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    438|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|    438|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|    438|}
zend_interfaces.c:zend_hash_find_ptr:
  890|     78|{
  891|     78|	zval *zv;
  892|       |
  893|     78|	zv = zend_hash_find(ht, key);
  894|     78|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 78, False: 0]
  ------------------
  895|     78|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     78|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     78|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     78|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     78|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     78|	} else {
  898|       |		return NULL;
  899|      0|	}
  900|     78|}
zend_lazy_objects.c:zend_hash_num_elements:
  319|  33.5k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  33.5k|	return ht->nNumOfElements;
  321|  33.5k|}
zend_lazy_objects.c:zend_hash_index_find_ptr:
  941|      8|{
  942|      8|	zval *zv;
  943|       |
  944|      8|	zv = zend_hash_index_find(ht, h);
  945|      8|	if (zv) {
  ------------------
  |  Branch (945:6): [True: 8, False: 0]
  ------------------
  946|      8|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|      8|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  947|      8|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  948|      8|	} else {
  949|       |		return NULL;
  950|      0|	}
  951|      8|}
zend_lazy_objects.c:zend_hash_index_add_new_ptr:
  821|      4|{
  822|      4|	zval tmp, *zv;
  823|       |
  824|      4|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      4|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      4|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      4|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      4|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  825|      4|	zv = zend_hash_index_add_new(ht, h, &tmp);
  826|      4|	return zv ? Z_PTR_P(zv) : NULL;
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  |  Branch (826:9): [True: 4, False: 0]
  ------------------
  827|      4|}
zend_list.c:zend_hash_next_free_element:
  323|    720|static zend_always_inline zend_long zend_hash_next_free_element(const HashTable *ht) {
  324|    720|	return ht->nNextFreeElement;
  325|    720|}
zend_list.c:zend_hash_index_find_ptr:
  941|    720|{
  942|    720|	zval *zv;
  943|       |
  944|    720|	zv = zend_hash_index_find(ht, h);
  945|    720|	if (zv) {
  ------------------
  |  Branch (945:6): [True: 720, False: 0]
  ------------------
  946|    720|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|    720|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  947|    720|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|    720|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    720|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  948|    720|	} else {
  949|       |		return NULL;
  950|      0|	}
  951|    720|}
zend_object_handlers.c:_zend_hash_append_ind:
 1690|    300|{
 1691|    300|	uint32_t idx = ht->nNumUsed++;
 1692|    300|	uint32_t nIndex;
 1693|    300|	Bucket *p = ht->arData + idx;
 1694|       |
 1695|    300|	ZVAL_INDIRECT(&p->val, ptr);
  ------------------
  |  | 1246|    300|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|    300|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|    300|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|    300|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|    300|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|    300|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    300|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|    300|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|    300|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 300]
  |  |  ------------------
  ------------------
 1696|    300|	if (!ZSTR_IS_INTERNED(key)) {
  ------------------
  |  Branch (1696:6): [True: 41, False: 259]
  ------------------
 1697|     41|		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|     41|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|     41|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
 1698|     41|		zend_string_addref(key);
 1699|     41|		zend_string_hash_val(key);
 1700|     41|	}
 1701|    300|	p->key = key;
 1702|    300|	p->h = ZSTR_H(key);
  ------------------
  |  |   69|    300|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1703|    300|	nIndex = (uint32_t)p->h | ht->nTableMask;
 1704|    300|	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|    300|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              	Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|    300|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    300|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
 1705|    300|	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|    300|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|    300|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              	HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|    300|	(idx)
  ------------------
 1706|    300|	ht->nNumOfElements++;
 1707|    300|}
zend_object_handlers.c:zend_hash_num_elements:
  319|   254k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|   254k|	return ht->nNumOfElements;
  321|   254k|}
zend_object_handlers.c:zend_hash_add_new_ptr:
  680|      4|{
  681|      4|	zval tmp, *zv;
  682|       |
  683|      4|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      4|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      4|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      4|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      4|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  684|      4|	zv = zend_hash_add_new(ht, key, &tmp);
  685|      4|	if (zv) {
  ------------------
  |  Branch (685:6): [True: 4, False: 0]
  ------------------
  686|      4|		ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (686:3): [True: 0, False: 4]
  |  Branch (686:3): [True: 4, False: 0]
  ------------------
  687|      4|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  688|      4|	} else {
  689|       |		return NULL;
  690|      0|	}
  691|      4|}
zend_object_handlers.c:zend_hash_find_ptr:
  890|     71|{
  891|     71|	zval *zv;
  892|       |
  893|     71|	zv = zend_hash_find(ht, key);
  894|     71|	if (zv) {
  ------------------
  |  Branch (894:6): [True: 67, False: 4]
  ------------------
  895|     67|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     67|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  896|     67|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     67|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     67|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  897|     67|	} else {
  898|       |		return NULL;
  899|      4|	}
  900|     71|}
zend_opcode.c:zend_hash_release:
  385|    106|{
  386|    106|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|    106|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    106|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|    106|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|    106|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (386:6): [True: 106, False: 0]
  ------------------
  387|    106|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|    106|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (387:7): [True: 93, False: 13]
  ------------------
  388|     93|			zend_hash_destroy(array);
  389|       |			pefree(array, GC_FLAGS(array) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|     93|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     91|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     91|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     91|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     91|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     91|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 2, False: 91]
  |  |  ------------------
  ------------------
  390|     93|		}
  391|    106|	}
  392|    106|}
zend_opcode.c:zend_hash_num_elements:
  319|  1.55k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  1.55k|	return ht->nNumOfElements;
  321|  1.55k|}
zend_operators.c:zend_hash_num_elements:
  319|  1.17k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  1.17k|	return ht->nNumOfElements;
  321|  1.17k|}
zend_property_hooks.c:zend_hash_update_ptr:
  722|      6|{
  723|      6|	zval tmp, *zv;
  724|       |
  725|      6|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      6|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      6|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      6|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      6|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  726|      6|	zv = zend_hash_update(ht, key, &tmp);
  727|      6|	ZEND_ASSERT(Z_PTR_P(zv));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (727:2): [True: 0, False: 6]
  |  Branch (727:2): [True: 6, False: 0]
  ------------------
  728|      6|	return Z_PTR_P(zv);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  729|      6|}
zend_property_hooks.c:zend_hash_get_current_data:
  284|      4|static zend_always_inline zval* zend_hash_get_current_data(const HashTable *ht) {
  285|      4|	return zend_hash_get_current_data_ex(ht, &ht->nInternalPointer);
  286|      4|}
zend_property_hooks.c:zend_hash_move_forward:
  269|      4|static zend_always_inline zend_result zend_hash_move_forward(HashTable *ht) {
  270|      4|	return zend_hash_move_forward_ex(ht, &ht->nInternalPointer);
  271|      4|}
zend_property_hooks.c:zend_hash_has_more_elements:
  266|      4|static zend_always_inline zend_result zend_hash_has_more_elements(const HashTable *ht) {
  267|      4|	return zend_hash_has_more_elements_ex(ht, &ht->nInternalPointer);
  268|      4|}
zend_property_hooks.c:zend_hash_has_more_elements_ex:
  263|      4|static zend_always_inline zend_result zend_hash_has_more_elements_ex(const HashTable *ht, const HashPosition *pos) {
  264|      4|	return (zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS);
  ------------------
  |  Branch (264:10): [True: 4, False: 0]
  ------------------
  265|      4|}
zend_property_hooks.c:zend_hash_internal_pointer_reset:
  287|      4|static zend_always_inline void zend_hash_internal_pointer_reset(HashTable *ht) {
  288|      4|	zend_hash_internal_pointer_reset_ex(ht, &ht->nInternalPointer);
  289|      4|}
zend_property_hooks.c:zend_hash_num_elements:
  319|     10|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|     10|	return ht->nNumOfElements;
  321|     10|}
zend_weakrefs.c:zend_hash_index_add_new_ptr:
  821|      4|{
  822|      4|	zval tmp, *zv;
  823|       |
  824|      4|	ZVAL_PTR(&tmp, pData);
  ------------------
  |  | 1251|      4|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      4|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      4|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      4|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  825|      4|	zv = zend_hash_index_add_new(ht, h, &tmp);
  826|      4|	return zv ? Z_PTR_P(zv) : NULL;
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  |  Branch (826:9): [True: 4, False: 0]
  ------------------
  827|      4|}
zend_weakrefs.c:zend_hash_num_elements:
  319|      3|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|      3|	return ht->nNumOfElements;
  321|      3|}
zend_weakrefs.c:zend_hash_index_find_ptr:
  941|     46|{
  942|     46|	zval *zv;
  943|       |
  944|     46|	zv = zend_hash_index_find(ht, h);
  945|     46|	if (zv) {
  ------------------
  |  Branch (945:6): [True: 42, False: 4]
  ------------------
  946|     42|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|     42|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  947|     42|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|     42|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     42|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  948|     42|	} else {
  949|       |		return NULL;
  950|      4|	}
  951|     46|}
zend.c:zend_array_release:
  375|     20|{
  376|     20|	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|     20|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|     20|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|     20|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (376:6): [True: 20, False: 0]
  ------------------
  377|     20|		if (GC_DELREF(array) == 0) {
  ------------------
  |  |  719|     20|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (377:7): [True: 2, False: 18]
  ------------------
  378|      2|			zend_array_destroy(array);
  379|      2|		}
  380|     20|	}
  381|     20|}
zend.c:zend_hash_num_elements:
  319|  33.5k|static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) {
  320|  33.5k|	return ht->nNumOfElements;
  321|  33.5k|}
fuzzer-sapi.c:zend_hash_str_find_ptr:
  916|  33.5k|{
  917|  33.5k|	zval *zv;
  918|       |
  919|  33.5k|	zv = zend_hash_str_find(ht, str, len);
  920|  33.5k|	if (zv) {
  ------------------
  |  Branch (920:6): [True: 33.5k, False: 0]
  ------------------
  921|  33.5k|		ZEND_ASSUME(Z_PTR_P(zv));
  ------------------
  |  |   99|  33.5k|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  922|  33.5k|		return Z_PTR_P(zv);
  ------------------
  |  | 1053|  33.5k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  33.5k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  923|  33.5k|	} else {
  924|       |		return NULL;
  925|      0|	}
  926|  33.5k|}

zend_html_putc:
   28|  1.25M|{
   29|  1.25M|	switch (c) {
   30|  81.6k|		case '<':
  ------------------
  |  Branch (30:3): [True: 81.6k, False: 1.16M]
  ------------------
   31|  81.6k|			ZEND_PUTS("&lt;");
  ------------------
  |  |  342|  81.6k|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
   32|  81.6k|			break;
   33|  1.08k|		case '>':
  ------------------
  |  Branch (33:3): [True: 1.08k, False: 1.24M]
  ------------------
   34|  1.08k|			ZEND_PUTS("&gt;");
  ------------------
  |  |  342|  1.08k|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
   35|  1.08k|			break;
   36|    563|		case '&':
  ------------------
  |  Branch (36:3): [True: 563, False: 1.25M]
  ------------------
   37|    563|			ZEND_PUTS("&amp;");
  ------------------
  |  |  342|    563|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
   38|    563|			break;
   39|  2.80k|		case '\t':
  ------------------
  |  Branch (39:3): [True: 2.80k, False: 1.24M]
  ------------------
   40|  2.80k|			ZEND_PUTS("    ");
  ------------------
  |  |  342|  2.80k|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
   41|  2.80k|			break;
   42|  1.16M|		default:
  ------------------
  |  Branch (42:3): [True: 1.16M, False: 86.0k]
  ------------------
   43|  1.16M|			ZEND_PUTC(c);
  ------------------
  |  |  344|  1.16M|#define ZEND_PUTC(c)					zend_write(&(c), 1)
  ------------------
   44|  1.16M|			break;
   45|  1.25M|	}
   46|  1.25M|}
zend_html_puts:
   50|   431k|{
   51|   431k|	const unsigned char *ptr = (const unsigned char*)s, *end = ptr + len;
   52|   431k|	unsigned char *filtered = NULL;
   53|   431k|	size_t filtered_len;
   54|       |
   55|   431k|	if (LANG_SCNG(output_filter)) {
  ------------------
  |  |   55|   431k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  |  |  |  Branch (55:23): [True: 0, False: 431k]
  |  |  ------------------
  ------------------
   56|      0|		LANG_SCNG(output_filter)(&filtered, &filtered_len, ptr, len);
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
   57|      0|		ptr = filtered;
   58|      0|		end = filtered + filtered_len;
   59|      0|	}
   60|       |
   61|  1.65M|	while (ptr<end) {
  ------------------
  |  Branch (61:9): [True: 1.22M, False: 431k]
  ------------------
   62|  1.22M|		if (*ptr==' ') {
  ------------------
  |  Branch (62:7): [True: 67.8k, False: 1.15M]
  ------------------
   63|  96.1k|			do {
   64|  96.1k|				zend_html_putc(*ptr);
   65|  96.1k|			} while ((++ptr < end) && (*ptr==' '));
  ------------------
  |  Branch (65:13): [True: 46.8k, False: 49.3k]
  |  Branch (65:30): [True: 28.3k, False: 18.5k]
  ------------------
   66|  1.15M|		} else {
   67|  1.15M|			zend_html_putc(*ptr++);
   68|  1.15M|		}
   69|  1.22M|	}
   70|       |
   71|   431k|	if (LANG_SCNG(output_filter)) {
  ------------------
  |  |   55|   431k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  |  |  |  Branch (55:23): [True: 0, False: 431k]
  |  |  ------------------
  ------------------
   72|       |		efree(filtered);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|      0|	}
   74|   431k|}
zend_highlight:
   78|  3.40k|{
   79|  3.40k|	zval token;
   80|  3.40k|	int token_type;
   81|  3.40k|	const char *last_color = syntax_highlighter_ini->highlight_html;
   82|  3.40k|	const char *next_color;
   83|       |
   84|  3.40k|	zend_printf("<pre><code style=\"color: %s\">", last_color);
   85|       |	/* highlight stuff coming back from zendlex() */
   86|   434k|	while ((token_type=lex_scan(&token, NULL))) {
  ------------------
  |  Branch (86:9): [True: 431k, False: 3.40k]
  ------------------
   87|   431k|		switch (token_type) {
   88|  3.45k|			case T_INLINE_HTML:
  ------------------
  |  Branch (88:4): [True: 3.45k, False: 427k]
  ------------------
   89|  3.45k|				next_color = syntax_highlighter_ini->highlight_html;
   90|  3.45k|				break;
   91|  1.54k|			case T_COMMENT:
  ------------------
  |  Branch (91:4): [True: 1.54k, False: 429k]
  ------------------
   92|  1.54k|			case T_DOC_COMMENT:
  ------------------
  |  Branch (92:4): [True: 0, False: 431k]
  ------------------
   93|  1.54k|				next_color = syntax_highlighter_ini->highlight_comment;
   94|  1.54k|				break;
   95|  3.10k|			case T_OPEN_TAG:
  ------------------
  |  Branch (95:4): [True: 3.10k, False: 428k]
  ------------------
   96|  3.26k|			case T_OPEN_TAG_WITH_ECHO:
  ------------------
  |  Branch (96:4): [True: 153, False: 431k]
  ------------------
   97|  3.40k|			case T_CLOSE_TAG:
  ------------------
  |  Branch (97:4): [True: 146, False: 431k]
  ------------------
   98|  3.40k|			case T_LINE:
  ------------------
  |  Branch (98:4): [True: 0, False: 431k]
  ------------------
   99|  3.40k|			case T_FILE:
  ------------------
  |  Branch (99:4): [True: 0, False: 431k]
  ------------------
  100|  3.40k|			case T_DIR:
  ------------------
  |  Branch (100:4): [True: 0, False: 431k]
  ------------------
  101|  3.40k|			case T_TRAIT_C:
  ------------------
  |  Branch (101:4): [True: 0, False: 431k]
  ------------------
  102|  3.40k|			case T_METHOD_C:
  ------------------
  |  Branch (102:4): [True: 0, False: 431k]
  ------------------
  103|  3.40k|			case T_FUNC_C:
  ------------------
  |  Branch (103:4): [True: 0, False: 431k]
  ------------------
  104|  3.40k|			case T_PROPERTY_C:
  ------------------
  |  Branch (104:4): [True: 0, False: 431k]
  ------------------
  105|  3.40k|			case T_NS_C:
  ------------------
  |  Branch (105:4): [True: 0, False: 431k]
  ------------------
  106|  3.40k|			case T_CLASS_C:
  ------------------
  |  Branch (106:4): [True: 1, False: 431k]
  ------------------
  107|  3.40k|				next_color = syntax_highlighter_ini->highlight_default;
  108|  3.40k|				break;
  109|    232|			case '"':
  ------------------
  |  Branch (109:4): [True: 232, False: 431k]
  ------------------
  110|  2.59k|			case T_ENCAPSED_AND_WHITESPACE:
  ------------------
  |  Branch (110:4): [True: 2.35k, False: 428k]
  ------------------
  111|  7.92k|			case T_CONSTANT_ENCAPSED_STRING:
  ------------------
  |  Branch (111:4): [True: 5.33k, False: 425k]
  ------------------
  112|  7.92k|				next_color = syntax_highlighter_ini->highlight_string;
  113|  7.92k|				break;
  114|  61.4k|			case T_WHITESPACE:
  ------------------
  |  Branch (114:4): [True: 61.4k, False: 369k]
  ------------------
  115|  61.4k|				zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng));  /* no color needed */
  ------------------
  |  |   55|  61.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
              				zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng));  /* no color needed */
  ------------------
  |  |   55|  61.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  116|  61.4k|				ZVAL_UNDEF(&token);
  ------------------
  |  | 1055|  61.4k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  61.4k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  61.4k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  61.4k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  61.4k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  61.4k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 61.4k]
  |  |  ------------------
  ------------------
  117|  61.4k|				continue;
  118|      0|				break;
  119|   353k|			default:
  ------------------
  |  Branch (119:4): [True: 353k, False: 77.7k]
  ------------------
  120|   353k|				if (Z_TYPE(token) == IS_UNDEF) {
  ------------------
  |  |  668|   353k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(token) == IS_UNDEF) {
  ------------------
  |  |  606|   353k|#define IS_UNDEF					0
  ------------------
  |  Branch (120:9): [True: 255k, False: 97.8k]
  ------------------
  121|   255k|					next_color = syntax_highlighter_ini->highlight_keyword;
  122|   255k|				} else {
  123|  97.8k|					next_color = syntax_highlighter_ini->highlight_default;
  124|  97.8k|				}
  125|   353k|				break;
  126|   431k|		}
  127|       |
  128|   369k|		if (last_color != next_color) {
  ------------------
  |  Branch (128:7): [True: 171k, False: 198k]
  ------------------
  129|   171k|			if (last_color != syntax_highlighter_ini->highlight_html) {
  ------------------
  |  Branch (129:8): [True: 167k, False: 3.26k]
  ------------------
  130|   167k|				zend_printf("</span>");
  131|   167k|			}
  132|   171k|			last_color = next_color;
  133|   171k|			if (last_color != syntax_highlighter_ini->highlight_html) {
  ------------------
  |  Branch (133:8): [True: 170k, False: 142]
  ------------------
  134|   170k|				zend_printf("<span style=\"color: %s\">", last_color);
  135|   170k|			}
  136|   171k|		}
  137|       |
  138|   369k|		zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
  ------------------
  |  |   55|   369k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
              		zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
  ------------------
  |  |   55|   369k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  139|       |
  140|   369k|		if (Z_TYPE(token) == IS_STRING) {
  ------------------
  |  |  668|   369k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(token) == IS_STRING) {
  ------------------
  |  |  612|   369k|#define IS_STRING					6
  ------------------
  |  Branch (140:7): [True: 82.2k, False: 287k]
  ------------------
  141|  82.2k|			switch (token_type) {
  142|      0|				case T_OPEN_TAG:
  ------------------
  |  Branch (142:5): [True: 0, False: 82.2k]
  ------------------
  143|      0|				case T_OPEN_TAG_WITH_ECHO:
  ------------------
  |  Branch (143:5): [True: 0, False: 82.2k]
  ------------------
  144|      0|				case T_CLOSE_TAG:
  ------------------
  |  Branch (144:5): [True: 0, False: 82.2k]
  ------------------
  145|      0|				case T_WHITESPACE:
  ------------------
  |  Branch (145:5): [True: 0, False: 82.2k]
  ------------------
  146|      0|				case T_COMMENT:
  ------------------
  |  Branch (146:5): [True: 0, False: 82.2k]
  ------------------
  147|      0|				case T_DOC_COMMENT:
  ------------------
  |  Branch (147:5): [True: 0, False: 82.2k]
  ------------------
  148|      0|					break;
  149|  82.2k|				default:
  ------------------
  |  Branch (149:5): [True: 82.2k, False: 0]
  ------------------
  150|  82.2k|					zval_ptr_dtor_str(&token);
  151|  82.2k|					break;
  152|  82.2k|			}
  153|  82.2k|		}
  154|   369k|		ZVAL_UNDEF(&token);
  ------------------
  |  | 1055|   369k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|   369k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|   369k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   369k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|   369k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|   369k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 369k]
  |  |  ------------------
  ------------------
  155|   369k|	}
  156|       |
  157|  3.40k|	if (last_color != syntax_highlighter_ini->highlight_html) {
  ------------------
  |  Branch (157:6): [True: 3.11k, False: 284]
  ------------------
  158|  3.11k|		zend_printf("</span>");
  159|  3.11k|	}
  160|  3.40k|	zend_printf("</code></pre>");
  161|       |
  162|       |	/* Discard parse errors thrown during tokenization */
  163|  3.40k|	zend_clear_exception();
  164|  3.40k|}

zend_startup_hrtime:
   57|      2|{
   58|       |#if ZEND_HRTIME_PLATFORM_WINDOWS
   59|       |
   60|       |	LARGE_INTEGER tf = {0};
   61|       |	if (QueryPerformanceFrequency(&tf) || 0 != tf.QuadPart) {
   62|       |		zend_hrtime_timer_scale = (double)ZEND_NANO_IN_SEC / (zend_hrtime_t)tf.QuadPart;
   63|       |	}
   64|       |
   65|       |#elif ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE
   66|       |
   67|       |	mach_timebase_info(&zend_hrtime_timerlib_info);
   68|       |
   69|       |#elif ZEND_HRTIME_PLATFORM_POSIX
   70|       |
   71|      2|	struct timespec ts;
   72|       |
   73|      2|#ifdef CLOCK_MONOTONIC_RAW
   74|      2|	if (EXPECTED(0 == clock_gettime(CLOCK_MONOTONIC_RAW, &ts))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   75|      2|		zend_hrtime_posix_clock_id = CLOCK_MONOTONIC_RAW;
   76|      2|		return;
   77|      2|	}
   78|      0|#endif
   79|       |
   80|      0|	if (EXPECTED(0 == clock_gettime(zend_hrtime_posix_clock_id, &ts))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   81|      0|		return;
   82|      0|	}
   83|       |
   84|       |	// zend_error mechanism is not initialized at that point
   85|      0|	fprintf(stderr, "No working CLOCK_MONOTONIC* found, this should never happen\n");
   86|      0|	abort();
   87|       |
   88|      0|#endif
   89|      0|}

zend_gc.c:zend_hrtime:
   86|   233k|{
   87|       |#if ZEND_HRTIME_PLATFORM_WINDOWS
   88|       |	LARGE_INTEGER lt = {{0}};
   89|       |	QueryPerformanceCounter(&lt);
   90|       |	return (zend_hrtime_t)((zend_hrtime_t)lt.QuadPart * zend_hrtime_timer_scale);
   91|       |#elif ZEND_HRTIME_PLATFORM_APPLE_GETTIME_NSEC
   92|       |	return clock_gettime_nsec_np(CLOCK_UPTIME_RAW);
   93|       |#elif ZEND_HRTIME_PLATFORM_APPLE_MACH_ABSOLUTE
   94|       |	return (zend_hrtime_t)mach_absolute_time() * zend_hrtime_timerlib_info.numer / zend_hrtime_timerlib_info.denom;
   95|       |#elif ZEND_HRTIME_PLATFORM_POSIX
   96|       |	struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
   97|   233k|	clock_gettime(zend_hrtime_posix_clock_id, &ts);
   98|   233k|	return ((zend_hrtime_t) ts.tv_sec * (zend_hrtime_t)ZEND_NANO_IN_SEC) + ts.tv_nsec;
  ------------------
  |  |   79|   233k|#define ZEND_NANO_IN_SEC UINT64_C(1000000000)
  ------------------
   99|       |#elif ZEND_HRTIME_PLATFORM_HPUX
  100|       |	return (zend_hrtime_t) gethrtime();
  101|       |#elif  ZEND_HRTIME_PLATFORM_AIX
  102|       |	timebasestruct_t t;
  103|       |	read_wall_time(&t, TIMEBASE_SZ);
  104|       |	time_base_to_time(&t, TIMEBASE_SZ);
  105|       |	return (zend_hrtime_t) t.tb_high * (zend_hrtime_t)NANO_IN_SEC + t.tb_low;
  106|       |#else
  107|       |	return 0;
  108|       |#endif
  109|   233k|}

zend_visibility_string:
  203|     29|{
  204|     29|	if (fn_flags & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|     29|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (204:6): [True: 13, False: 16]
  ------------------
  205|     13|		return "public";
  206|     16|	} else if (fn_flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|     16|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (206:13): [True: 12, False: 4]
  ------------------
  207|     12|		return "private";
  208|     12|	} else {
  209|      4|		ZEND_ASSERT(fn_flags & ZEND_ACC_PROTECTED);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (209:3): [True: 0, False: 4]
  |  Branch (209:3): [True: 4, False: 0]
  ------------------
  210|      4|		return "protected";
  211|      4|	}
  212|     29|}
zend_build_properties_info_table:
 1678|  1.52k|{
 1679|  1.52k|	zend_property_info **table, *prop;
 1680|  1.52k|	size_t size;
 1681|  1.52k|	if (ce->default_properties_count == 0) {
  ------------------
  |  Branch (1681:6): [True: 1.01k, False: 502]
  ------------------
 1682|  1.01k|		return;
 1683|  1.01k|	}
 1684|       |
 1685|    502|	ZEND_ASSERT(ce->properties_info_table == NULL);
  ------------------
  |  |  112|    502|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1685:2): [True: 0, False: 502]
  |  Branch (1685:2): [True: 502, False: 0]
  ------------------
 1686|    502|	size = sizeof(zend_property_info *) * ce->default_properties_count;
 1687|    502|	if (ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (1687:6): [True: 398, False: 104]
  ------------------
 1688|    398|		ce->properties_info_table = table = zend_arena_alloc(&CG(arena), size);
  ------------------
  |  |   35|    398|# define CG(v) (compiler_globals.v)
  ------------------
 1689|    398|	} else {
 1690|    104|		ce->properties_info_table = table = pemalloc(size, 1);
  ------------------
  |  |  188|    104|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    104|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    104|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    104|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    104|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 104, Folded]
  |  |  ------------------
  ------------------
 1691|    104|	}
 1692|       |
 1693|       |	/* Dead slots may be left behind during inheritance. Make sure these are NULLed out. */
 1694|    502|	memset(table, 0, size);
 1695|       |
 1696|    502|	if (ce->parent && ce->parent->default_properties_count != 0) {
  ------------------
  |  Branch (1696:6): [True: 165, False: 337]
  |  Branch (1696:20): [True: 162, False: 3]
  ------------------
 1697|    162|		zend_property_info **parent_table = ce->parent->properties_info_table;
 1698|    162|		memcpy(
 1699|    162|			table, parent_table,
 1700|    162|			sizeof(zend_property_info *) * ce->parent->default_properties_count
 1701|    162|		);
 1702|       |
 1703|       |		/* Child did not add any new properties, we are done */
 1704|    162|		if (ce->default_properties_count == ce->parent->default_properties_count) {
  ------------------
  |  Branch (1704:7): [True: 128, False: 34]
  ------------------
 1705|    128|			return;
 1706|    128|		}
 1707|    162|	}
 1708|       |
 1709|  1.65k|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&ce->properties_info, zend_string *key, prop) {
  ------------------
  |  | 1448|    451|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    374|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    374|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    374|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    374|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    374|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    374|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    374|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    825|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 451, False: 374]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    451|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    451|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    451|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 451]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    451|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    451|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 451]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    451|	_key = _p->key; \
  |  | 1450|    502|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    502|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    502|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1709:2): [True: 0, False: 374]
  |  Branch (1709:2): [True: 374, False: 0]
  ------------------
 1710|  1.65k|		if (prop->ce == ce && (prop->flags & ZEND_ACC_STATIC) == 0
  ------------------
  |  |  227|    439|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1710:7): [True: 439, False: 12]
  |  Branch (1710:25): [True: 435, False: 4]
  ------------------
 1711|    435|		 && !(prop->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|    435|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1711:7): [True: 430, False: 5]
  ------------------
 1712|    430|			const zend_property_info *root_prop = prop->prototype;
 1713|    430|			if (UNEXPECTED(root_prop->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  457|    430|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 428]
  |  |  ------------------
  ------------------
 1714|       |				/* Prototype is virtual, we need to manually hunt down the first backed property. */
 1715|      2|				root_prop = prop;
 1716|      2|				zend_class_entry *parent_ce;
 1717|      2|				while ((parent_ce = root_prop->ce->parent)) {
  ------------------
  |  Branch (1717:12): [True: 2, False: 0]
  ------------------
 1718|      2|					zend_property_info *parent_prop = zend_hash_find_ptr(&parent_ce->properties_info, key);
 1719|      2|					if (!parent_prop
  ------------------
  |  Branch (1719:10): [True: 0, False: 2]
  ------------------
 1720|      2|					 || parent_prop->prototype != prop->prototype
  ------------------
  |  Branch (1720:10): [True: 0, False: 2]
  ------------------
 1721|      2|					 || (parent_prop->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1721:10): [True: 2, False: 0]
  ------------------
 1722|      2|						break;
 1723|      2|					}
 1724|      0|					root_prop = parent_prop;
 1725|      0|				}
 1726|      2|			}
 1727|    430|			uint32_t prop_table_offset = OBJ_PROP_TO_NUM(root_prop->offset);
  ------------------
  |  |  486|    430|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|    430|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 1728|    430|			table[prop_table_offset] = prop;
 1729|    430|		}
 1730|  1.65k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    451|		} \
  |  | 1102|    374|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 374]
  |  |  ------------------
  ------------------
 1731|    374|}
zend_verify_hooked_property:
 1734|    100|{
 1735|    100|	if (!prop_info->hooks) {
  ------------------
  |  Branch (1735:6): [True: 0, False: 100]
  ------------------
 1736|      0|		return;
 1737|      0|	}
 1738|    100|	bool abstract_error = prop_info->flags & ZEND_ACC_ABSTRACT;
  ------------------
  |  |  233|    100|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
 1739|       |	/* We specified a default value (otherwise offset would be -1), but the virtual flag wasn't
 1740|       |	 * removed during inheritance. */
 1741|    100|	if ((prop_info->flags & ZEND_ACC_VIRTUAL) && prop_info->offset != ZEND_VIRTUAL_PROPERTY_OFFSET) {
  ------------------
  |  |  270|    100|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	if ((prop_info->flags & ZEND_ACC_VIRTUAL) && prop_info->offset != ZEND_VIRTUAL_PROPERTY_OFFSET) {
  ------------------
  |  |  462|     63|#define ZEND_VIRTUAL_PROPERTY_OFFSET ((uint32_t)-1)
  ------------------
  |  Branch (1741:6): [True: 63, False: 37]
  |  Branch (1741:47): [True: 3, False: 60]
  ------------------
 1742|      3|		if (Z_TYPE(ce->default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)]) == IS_UNDEF) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(ce->default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)]) == IS_UNDEF) {
  ------------------
  |  |  606|      3|#define IS_UNDEF					0
  ------------------
  |  Branch (1742:7): [True: 0, False: 3]
  ------------------
 1743|      0|			prop_info->offset = ZEND_VIRTUAL_PROPERTY_OFFSET;
  ------------------
  |  |  462|      0|#define ZEND_VIRTUAL_PROPERTY_OFFSET ((uint32_t)-1)
  ------------------
 1744|      3|		} else {
 1745|      3|			zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1746|      3|				"Cannot specify default value for virtual hooked property %s::$%s", ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"Cannot specify default value for virtual hooked property %s::$%s", ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1747|      3|		}
 1748|      3|	}
 1749|       |	/* If the property turns backed during inheritance and no type and default value are set, we want
 1750|       |	 * the default value to be null. */
 1751|     97|	if (!(prop_info->flags & ZEND_ACC_VIRTUAL)
  ------------------
  |  |  270|     97|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1751:6): [True: 37, False: 60]
  ------------------
 1752|     37|	 && !ZEND_TYPE_IS_SET(prop_info->type)
  ------------------
  |  |  152|    134|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     37|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1752:6): [True: 27, False: 10]
  ------------------
 1753|     27|	 && Z_TYPE(ce->default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)]) == IS_UNDEF) {
  ------------------
  |  |  668|     27|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	 && Z_TYPE(ce->default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)]) == IS_UNDEF) {
  ------------------
  |  |  606|     27|#define IS_UNDEF					0
  ------------------
  |  Branch (1753:6): [True: 17, False: 10]
  ------------------
 1754|     17|		ZVAL_NULL(&ce->default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)]);
  ------------------
  |  | 1059|     17|#define ZVAL_NULL(z) do {				\
  |  | 1060|     17|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     17|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 1755|     17|	}
 1756|    289|	for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|    289|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (1756:23): [True: 193, False: 96]
  ------------------
 1757|    193|		const zend_function *func = prop_info->hooks[i];
 1758|    193|		if (func) {
  ------------------
  |  Branch (1758:7): [True: 120, False: 73]
  ------------------
 1759|    120|			if ((zend_property_hook_kind)i == ZEND_PROPERTY_HOOK_GET
  ------------------
  |  Branch (1759:8): [True: 70, False: 50]
  ------------------
 1760|     70|			 && (func->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  352|     70|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (1760:8): [True: 7, False: 63]
  ------------------
 1761|      7|			 && !(prop_info->flags & ZEND_ACC_VIRTUAL)
  ------------------
  |  |  270|      7|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1761:8): [True: 3, False: 4]
  ------------------
 1762|      3|			 && prop_info->hooks[ZEND_PROPERTY_HOOK_SET]) {
  ------------------
  |  Branch (1762:8): [True: 1, False: 2]
  ------------------
 1763|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Get hook of backed property %s::%s with set hook may not return by reference",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1764|      1|					ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1765|      1|			}
 1766|    119|			if (func->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|    119|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1766:8): [True: 27, False: 92]
  ------------------
 1767|     27|				abstract_error = false;
 1768|     27|			}
 1769|    119|		}
 1770|    193|	}
 1771|     96|	if (abstract_error) {
  ------------------
  |  Branch (1771:6): [True: 1, False: 95]
  ------------------
 1772|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1773|      1|			"Abstract property %s::$%s must specify at least one abstract hook", ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			"Abstract property %s::$%s must specify at least one abstract hook", ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1774|      1|	}
 1775|     95|	if ((prop_info->flags & ZEND_ACC_VIRTUAL)
  ------------------
  |  |  270|     95|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1775:6): [True: 59, False: 36]
  ------------------
 1776|     59|	 && (prop_info->flags & ZEND_ACC_PPP_SET_MASK)
  ------------------
  |  |  422|     59|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|     59|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|     59|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|     59|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1776:6): [True: 2, False: 57]
  ------------------
 1777|      2|	 && (!prop_info->hooks[ZEND_PROPERTY_HOOK_GET] || !prop_info->hooks[ZEND_PROPERTY_HOOK_SET])) {
  ------------------
  |  Branch (1777:7): [True: 1, False: 1]
  |  Branch (1777:52): [True: 1, False: 0]
  ------------------
 1778|      2|		const char *prefix = !prop_info->hooks[ZEND_PROPERTY_HOOK_GET]
  ------------------
  |  Branch (1778:24): [True: 1, False: 1]
  ------------------
 1779|      2|			? "set-only" : "get-only";
 1780|      2|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1781|      2|			"%s virtual property %s::$%s must not specify asymmetric visibility",
 1782|      2|			prefix, ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			prefix, ZSTR_VAL(ce->name), ZSTR_VAL(prop_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1783|      2|	}
 1784|     95|}
zend_hooked_property_variance_error_ex:
 1787|      4|{
 1788|      4|	zend_error_noreturn(E_COMPILE_ERROR, "Type of parameter $%s of hook %s::$%s::set must be compatible with property type",
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1789|      4|		ZSTR_VAL(value_param_name), ZSTR_VAL(class_name), zend_get_unmangled_property_name(prop_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(value_param_name), ZSTR_VAL(class_name), zend_get_unmangled_property_name(prop_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1790|      4|}
zend_hooked_property_variance_error:
 1793|      3|{
 1794|      3|	zend_string *value_param_name = prop_info->hooks[ZEND_PROPERTY_HOOK_SET]->op_array.arg_info[0].name;
 1795|      3|	zend_hooked_property_variance_error_ex(value_param_name, prop_info->ce->name, prop_info->name);
 1796|      3|}
zend_verify_property_hook_variance:
 1799|     61|{
 1800|     61|	ZEND_ASSERT(prop_info->hooks && prop_info->hooks[ZEND_PROPERTY_HOOK_SET] == func);
  ------------------
  |  |  112|     61|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1800:2): [True: 0, False: 61]
  |  Branch (1800:2): [True: 0, False: 0]
  |  Branch (1800:2): [True: 61, False: 0]
  |  Branch (1800:2): [True: 61, False: 0]
  ------------------
 1801|       |
 1802|     61|	zend_arg_info *value_arg_info = &func->op_array.arg_info[0];
 1803|     61|	if (!ZEND_TYPE_IS_SET(value_arg_info->type)) {
  ------------------
  |  |  152|     61|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     61|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1803:6): [True: 37, False: 24]
  ------------------
 1804|     37|		return INHERITANCE_SUCCESS;
 1805|     37|	}
 1806|       |
 1807|     24|	if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     24|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     24|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1807:6): [True: 0, False: 24]
  ------------------
 1808|      0|		return INHERITANCE_ERROR;
 1809|      0|	}
 1810|       |
 1811|     24|	zend_class_entry *ce = prop_info->ce;
 1812|     24|	return zend_perform_covariant_type_check(ce, prop_info->type, ce, value_arg_info->type);
 1813|     24|}
zend_do_inheritance_ex:
 1837|    401|{
 1838|    401|	zend_property_info *property_info;
 1839|    401|	zend_string *key;
 1840|       |
 1841|    401|	if (UNEXPECTED(ce->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  457|    401|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 401]
  |  |  ------------------
  ------------------
 1842|       |		/* Interface can only inherit other interfaces */
 1843|      0|		if (UNEXPECTED(!(parent_ce->ce_flags & ZEND_ACC_INTERFACE))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1844|      0|			zend_error_noreturn(E_COMPILE_ERROR, "Interface %s cannot extend class %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Interface %s cannot extend class %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Interface %s cannot extend class %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1845|      0|		}
 1846|    401|	} else if (UNEXPECTED(parent_ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_FINAL|ZEND_ACC_ENUM))) {
  ------------------
  |  |  457|    401|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 394]
  |  |  ------------------
  ------------------
 1847|       |		/* Class must not extend an enum (GH-16315); check enums first since
 1848|       |		 * enums are implemented as final classes */
 1849|      7|		if (parent_ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|      7|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (1849:7): [True: 2, False: 5]
  ------------------
 1850|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend enum %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend enum %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend enum %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1851|      2|		}
 1852|       |		/* Class must not extend a final class */
 1853|      5|		if (parent_ce->ce_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      5|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1853:7): [True: 3, False: 2]
  ------------------
 1854|      3|			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend final class %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend final class %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend final class %s", ZSTR_VAL(ce->name), ZSTR_VAL(parent_ce->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1855|      3|		}
 1856|       |
 1857|       |		/* Class declaration must not extend traits or interfaces */
 1858|      2|		if ((parent_ce->ce_flags & ZEND_ACC_INTERFACE) || (parent_ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  281|      2|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              		if ((parent_ce->ce_flags & ZEND_ACC_INTERFACE) || (parent_ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  282|      1|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (1858:7): [True: 1, False: 1]
  |  Branch (1858:53): [True: 1, False: 0]
  ------------------
 1859|      2|			zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot extend %s %s",
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1860|      2|				ZSTR_VAL(ce->name), parent_ce->ce_flags & ZEND_ACC_INTERFACE ? "interface" : "trait", ZSTR_VAL(parent_ce->name)
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), parent_ce->ce_flags & ZEND_ACC_INTERFACE ? "interface" : "trait", ZSTR_VAL(parent_ce->name)
  ------------------
  |  |  281|      2|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              				ZSTR_VAL(ce->name), parent_ce->ce_flags & ZEND_ACC_INTERFACE ? "interface" : "trait", ZSTR_VAL(parent_ce->name)
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1860:25): [True: 1, False: 1]
  ------------------
 1861|      2|			);
 1862|      2|		}
 1863|      2|	}
 1864|       |
 1865|    394|	if (UNEXPECTED((ce->ce_flags & ZEND_ACC_READONLY_CLASS) != (parent_ce->ce_flags & ZEND_ACC_READONLY_CLASS))) {
  ------------------
  |  |  457|    394|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 393]
  |  |  ------------------
  ------------------
 1866|      1|		zend_error_noreturn(E_COMPILE_ERROR, "%s class %s cannot extend %s class %s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1867|      1|			ce->ce_flags & ZEND_ACC_READONLY_CLASS ? "Readonly" : "Non-readonly", ZSTR_VAL(ce->name),
  ------------------
  |  |  311|      1|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
              			ce->ce_flags & ZEND_ACC_READONLY_CLASS ? "Readonly" : "Non-readonly", ZSTR_VAL(ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1867:4): [True: 1, False: 0]
  ------------------
 1868|      1|			parent_ce->ce_flags & ZEND_ACC_READONLY_CLASS ? "readonly" : "non-readonly", ZSTR_VAL(parent_ce->name)
  ------------------
  |  |  311|      1|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
              			parent_ce->ce_flags & ZEND_ACC_READONLY_CLASS ? "readonly" : "non-readonly", ZSTR_VAL(parent_ce->name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1868:4): [True: 0, False: 1]
  ------------------
 1869|      1|		);
 1870|      1|	}
 1871|       |
 1872|    393|	if (ce->parent_name) {
  ------------------
  |  Branch (1872:6): [True: 235, False: 158]
  ------------------
 1873|    235|		zend_string_release_ex(ce->parent_name, 0);
 1874|    235|	}
 1875|    393|	ce->parent = parent_ce;
 1876|    393|	ce->default_object_handlers = parent_ce->default_object_handlers;
 1877|    393|	ce->ce_flags |= ZEND_ACC_RESOLVED_PARENT;
  ------------------
  |  |  314|    393|#define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
  ------------------
 1878|       |
 1879|       |	/* Inherit properties */
 1880|    393|	if (parent_ce->default_properties_count) {
  ------------------
  |  Branch (1880:6): [True: 186, False: 207]
  ------------------
 1881|    186|		zval *src, *dst, *end;
 1882|       |
 1883|    186|		if (ce->default_properties_count) {
  ------------------
  |  Branch (1883:7): [True: 49, False: 137]
  ------------------
 1884|     49|			zval *table = pemalloc(sizeof(zval) * (ce->default_properties_count + parent_ce->default_properties_count), ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  188|     49|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     49|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     49|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     49|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     49|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     49|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 49]
  |  |  ------------------
  ------------------
 1885|     49|			src = ce->default_properties_table + ce->default_properties_count;
 1886|     49|			end = table + parent_ce->default_properties_count;
 1887|     49|			dst = end + ce->default_properties_count;
 1888|     49|			ce->default_properties_table = table;
 1889|     52|			do {
 1890|     52|				dst--;
 1891|     52|				src--;
 1892|     52|				ZVAL_COPY_VALUE_PROP(dst, src);
  ------------------
  |  | 1582|     52|	do { *(z) = *(v); } while (0)
  |  |  ------------------
  |  |  |  Branch (1582:29): [Folded, False: 52]
  |  |  ------------------
  ------------------
 1893|     52|			} while (dst != end);
  ------------------
  |  Branch (1893:13): [True: 3, False: 49]
  ------------------
 1894|     49|			pefree(src, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  190|     49|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     49|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     49|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     49|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     49|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     49|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 49]
  |  |  ------------------
  ------------------
 1895|     49|			end = ce->default_properties_table;
 1896|    137|		} else {
 1897|    137|			end = pemalloc(sizeof(zval) * parent_ce->default_properties_count, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  188|    137|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    104|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    104|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    104|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    104|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     33|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     33|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     33|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     33|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     33|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 104, False: 33]
  |  |  ------------------
  ------------------
 1898|    137|			dst = end + parent_ce->default_properties_count;
 1899|    137|			ce->default_properties_table = end;
 1900|    137|		}
 1901|    186|		src = parent_ce->default_properties_table + parent_ce->default_properties_count;
 1902|    186|		if (UNEXPECTED(parent_ce->type != ce->type)) {
  ------------------
  |  |  457|    186|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 15, False: 171]
  |  |  ------------------
  ------------------
 1903|       |			/* User class extends internal */
 1904|     94|			do {
 1905|     94|				dst--;
 1906|     94|				src--;
 1907|       |				/* We don't have to account for refcounting because
 1908|       |				 * zend_declare_typed_property() disallows refcounted defaults for internal classes. */
 1909|     94|				ZEND_ASSERT(!Z_REFCOUNTED_P(src));
  ------------------
  |  |  112|     94|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1909:5): [True: 0, False: 94]
  |  Branch (1909:5): [True: 94, False: 0]
  ------------------
 1910|     94|				ZVAL_COPY_VALUE_PROP(dst, src);
  ------------------
  |  | 1582|     94|	do { *(z) = *(v); } while (0)
  |  |  ------------------
  |  |  |  Branch (1582:29): [Folded, False: 94]
  |  |  ------------------
  ------------------
 1911|     94|				if (Z_OPT_TYPE_P(dst) == IS_CONSTANT_AST) {
  ------------------
  |  |  949|     94|#define Z_OPT_TYPE_P(zval_p)		Z_OPT_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  948|     94|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     94|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|     94|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OPT_TYPE_P(dst) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     94|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1911:9): [True: 0, False: 94]
  ------------------
 1912|      0|					ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      0|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 1913|      0|					ce->ce_flags |= ZEND_ACC_HAS_AST_PROPERTIES;
  ------------------
  |  |  334|      0|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
 1914|      0|				}
 1915|     94|				continue;
 1916|     94|			} while (dst != end);
  ------------------
  |  Branch (1916:13): [True: 79, False: 15]
  ------------------
 1917|    171|		} else {
 1918|    718|			do {
 1919|    718|				dst--;
 1920|    718|				src--;
 1921|    718|				ZVAL_COPY_PROP(dst, src);
  ------------------
  |  | 1584|    718|	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1425|    718|	do {												\
  |  |  |  | 1426|    718|		zval *_z1 = (z);								\
  |  |  |  | 1427|    718|		const zval *_z2 = (v);							\
  |  |  |  | 1428|    718|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    718|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    718|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|    718|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    718|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    718|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|    718|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    718|	do {												\
  |  |  |  |  |  | 1408|    718|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    718|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    718|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    718|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    718|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    718|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    718|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 718]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|    718|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|    718|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|    718|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 716]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      2|		}												\
  |  |  |  | 1434|    718|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 718]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|    718|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|    718|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|    718|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|    718|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|    718|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|    718|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1584:70): [Folded, False: 718]
  |  |  ------------------
  ------------------
 1922|    718|				if (Z_OPT_TYPE_P(dst) == IS_CONSTANT_AST) {
  ------------------
  |  |  949|    718|#define Z_OPT_TYPE_P(zval_p)		Z_OPT_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  948|    718|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    718|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|    718|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OPT_TYPE_P(dst) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    718|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1922:9): [True: 2, False: 716]
  ------------------
 1923|      2|					ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      2|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 1924|      2|					ce->ce_flags |= ZEND_ACC_HAS_AST_PROPERTIES;
  ------------------
  |  |  334|      2|#define ZEND_ACC_HAS_AST_PROPERTIES      (1 << 25) /*  X  |     |     |     */
  ------------------
 1925|      2|				}
 1926|    718|				continue;
 1927|    718|			} while (dst != end);
  ------------------
  |  Branch (1927:13): [True: 547, False: 171]
  ------------------
 1928|    171|		}
 1929|    186|		ce->default_properties_count += parent_ce->default_properties_count;
 1930|    186|	}
 1931|       |
 1932|    393|	if (parent_ce->default_static_members_count) {
  ------------------
  |  Branch (1932:6): [True: 4, False: 389]
  ------------------
 1933|      4|		zval *src, *dst, *end;
 1934|       |
 1935|      4|		if (ce->default_static_members_count) {
  ------------------
  |  Branch (1935:7): [True: 4, False: 0]
  ------------------
 1936|      4|			zval *table = pemalloc(sizeof(zval) * (ce->default_static_members_count + parent_ce->default_static_members_count), ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  188|      4|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1937|      4|			src = ce->default_static_members_table + ce->default_static_members_count;
 1938|      4|			end = table + parent_ce->default_static_members_count;
 1939|      4|			dst = end + ce->default_static_members_count;
 1940|      4|			ce->default_static_members_table = table;
 1941|      4|			do {
 1942|      4|				dst--;
 1943|      4|				src--;
 1944|      4|				ZVAL_COPY_VALUE(dst, src);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1945|      4|			} while (dst != end);
  ------------------
  |  Branch (1945:13): [True: 0, False: 4]
  ------------------
 1946|      4|			pefree(src, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  190|      4|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1947|      4|			end = ce->default_static_members_table;
 1948|      4|		} else {
 1949|      0|			end = pemalloc(sizeof(zval) * parent_ce->default_static_members_count, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  188|      0|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1950|      0|			dst = end + parent_ce->default_static_members_count;
 1951|      0|			ce->default_static_members_table = end;
 1952|      0|		}
 1953|      4|		src = parent_ce->default_static_members_table + parent_ce->default_static_members_count;
 1954|      4|		do {
 1955|      4|			dst--;
 1956|      4|			src--;
 1957|      4|			if (Z_TYPE_P(src) == IS_INDIRECT) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(src) == IS_INDIRECT) {
  ------------------
  |  |  629|      4|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1957:8): [True: 0, False: 4]
  ------------------
 1958|      0|				ZVAL_INDIRECT(dst, Z_INDIRECT_P(src));
  ------------------
  |  | 1246|      0|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      0|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      0|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1959|      4|			} else {
 1960|      4|				ZVAL_INDIRECT(dst, src);
  ------------------
  |  | 1246|      4|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      4|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      4|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      4|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      4|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1961|      4|			}
 1962|      4|			if (Z_TYPE_P(Z_INDIRECT_P(dst)) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(Z_INDIRECT_P(dst)) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      4|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1962:8): [True: 0, False: 4]
  ------------------
 1963|      0|				ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      0|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 1964|      0|				ce->ce_flags |= ZEND_ACC_HAS_AST_STATICS;
  ------------------
  |  |  335|      0|#define ZEND_ACC_HAS_AST_STATICS         (1 << 26) /*  X  |     |     |     */
  ------------------
 1965|      0|			}
 1966|      4|		} while (dst != end);
  ------------------
  |  Branch (1966:12): [True: 0, False: 4]
  ------------------
 1967|      4|		ce->default_static_members_count += parent_ce->default_static_members_count;
 1968|      4|		if (!ZEND_MAP_PTR(ce->static_members_table)) {
  ------------------
  |  |   31|      4|	ptr ## __ptr
  ------------------
  |  Branch (1968:7): [True: 4, False: 0]
  ------------------
 1969|      4|			if (ce->type == ZEND_INTERNAL_CLASS &&
  ------------------
  |  Branch (1969:8): [True: 0, False: 4]
  ------------------
 1970|      0|					ce->info.internal.module->type == MODULE_PERSISTENT) {
  ------------------
  |  |   63|      0|#define MODULE_PERSISTENT 1
  ------------------
  |  Branch (1970:6): [True: 0, False: 0]
  ------------------
 1971|      0|				ZEND_MAP_PTR_NEW(ce->static_members_table);
  ------------------
  |  |   41|      0|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|      0|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   43|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1972|      0|			}
 1973|      4|		}
 1974|      4|	}
 1975|       |
 1976|    954|	ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, property_info) {
  ------------------
  |  | 1341|     84|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    393|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    393|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    393|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    393|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    393|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    393|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    393|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    477|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 84, False: 393]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     84|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     84|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     84|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 84]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     84|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     84|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 84]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    393|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    393|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    393|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1976:2): [True: 0, False: 393]
  |  Branch (1976:2): [True: 393, False: 0]
  ------------------
 1977|    954|		if (property_info->ce == ce) {
  ------------------
  |  Branch (1977:7): [True: 84, False: 0]
  ------------------
 1978|     84|			if (property_info->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     84|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1978:8): [True: 4, False: 80]
  ------------------
 1979|      4|				property_info->offset += parent_ce->default_static_members_count;
 1980|     80|			} else if (property_info->offset != ZEND_VIRTUAL_PROPERTY_OFFSET) {
  ------------------
  |  |  462|     80|#define ZEND_VIRTUAL_PROPERTY_OFFSET ((uint32_t)-1)
  ------------------
  |  Branch (1980:15): [True: 56, False: 24]
  ------------------
 1981|     56|				property_info->offset += parent_ce->default_properties_count * sizeof(zval);
 1982|     56|			}
 1983|     84|		}
 1984|    954|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     84|		} \
  |  | 1102|    393|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 393]
  |  |  ------------------
  ------------------
 1985|       |
 1986|    393|	if (zend_hash_num_elements(&parent_ce->properties_info)) {
  ------------------
  |  Branch (1986:6): [True: 206, False: 187]
  ------------------
 1987|    206|		zend_hash_extend(&ce->properties_info,
 1988|    206|			zend_hash_num_elements(&ce->properties_info) +
 1989|    206|			zend_hash_num_elements(&parent_ce->properties_info), 0);
 1990|       |
 1991|  2.07k|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&parent_ce->properties_info, key, property_info) {
  ------------------
  |  | 1448|    831|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    206|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    206|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    206|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    206|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    206|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    206|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    206|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.03k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 831, False: 206]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    831|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    831|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    831|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 831]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    831|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    831|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 831]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    831|	_key = _p->key; \
  |  | 1450|    831|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    206|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    206|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1991:3): [True: 0, False: 206]
  |  Branch (1991:3): [True: 206, False: 0]
  ------------------
 1992|  2.07k|			do_inherit_property(property_info, key, ce);
 1993|  2.07k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    831|		} \
  |  | 1102|    206|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 206]
  |  |  ------------------
  ------------------
 1994|    206|	}
 1995|       |
 1996|    393|	if (ce->num_hooked_props) {
  ------------------
  |  Branch (1996:6): [True: 26, False: 367]
  ------------------
 1997|    132|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&ce->properties_info, key, property_info) {
  ------------------
  |  | 1448|     40|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     26|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     26|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     26|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     26|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     26|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     26|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     66|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 40, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     40|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     40|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     40|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 40]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     40|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 40]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     40|	_key = _p->key; \
  |  | 1450|     40|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     26|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     26|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1997:3): [True: 0, False: 26]
  |  Branch (1997:3): [True: 26, False: 0]
  ------------------
 1998|    132|			if (property_info->ce == ce && property_info->hooks) {
  ------------------
  |  Branch (1998:8): [True: 26, False: 14]
  |  Branch (1998:35): [True: 25, False: 1]
  ------------------
 1999|     25|				zend_verify_hooked_property(ce, property_info, key);
 2000|     25|			}
 2001|    132|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     40|		} \
  |  | 1102|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
 2002|     26|	}
 2003|       |
 2004|    393|	if (zend_hash_num_elements(&parent_ce->constants_table)) {
  ------------------
  |  Branch (2004:6): [True: 49, False: 344]
  ------------------
 2005|     49|		zend_class_constant *c;
 2006|       |
 2007|     49|		zend_hash_extend(&ce->constants_table,
 2008|     49|			zend_hash_num_elements(&ce->constants_table) +
 2009|     49|			zend_hash_num_elements(&parent_ce->constants_table), 0);
 2010|       |
 2011|    642|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&parent_ce->constants_table, key, c) {
  ------------------
  |  | 1448|    272|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     49|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     49|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     49|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     49|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     49|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     49|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    321|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 272, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    272|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    272|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    272|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 272]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    272|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    272|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 272]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    272|	_key = _p->key; \
  |  | 1450|    272|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     49|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     49|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2011:3): [True: 0, False: 49]
  |  Branch (2011:3): [True: 49, False: 0]
  ------------------
 2012|    642|			do_inherit_class_constant(key, c, ce);
 2013|    642|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    272|		} \
  |  | 1102|     49|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 49]
  |  |  ------------------
  ------------------
 2014|     49|	}
 2015|       |
 2016|    393|	if (zend_hash_num_elements(&parent_ce->function_table)) {
  ------------------
  |  Branch (2016:6): [True: 283, False: 110]
  ------------------
 2017|    283|		zend_hash_extend(&ce->function_table,
 2018|    283|			zend_hash_num_elements(&ce->function_table) +
 2019|    283|			zend_hash_num_elements(&parent_ce->function_table), 0);
 2020|    283|		uint32_t flags =
 2021|    283|			ZEND_INHERITANCE_LAZY_CHILD_CLONE |
  ------------------
  |  | 1113|    283|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  ------------------
 2022|    283|			ZEND_INHERITANCE_SET_CHILD_CHANGED |
  ------------------
  |  | 1117|    283|#define ZEND_INHERITANCE_SET_CHILD_CHANGED    (1<<4)
  ------------------
 2023|    283|			ZEND_INHERITANCE_SET_CHILD_PROTO |
  ------------------
  |  | 1118|    283|#define ZEND_INHERITANCE_SET_CHILD_PROTO      (1<<5)
  ------------------
 2024|    283|			ZEND_INHERITANCE_RESET_CHILD_OVERRIDE;
  ------------------
  |  | 1119|    283|#define ZEND_INHERITANCE_RESET_CHILD_OVERRIDE (1<<6)
  ------------------
 2025|       |
 2026|    283|		if (!checked) {
  ------------------
  |  Branch (2026:7): [True: 219, False: 64]
  ------------------
 2027|    219|			flags |= ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY;
  ------------------
  |  | 1115|    219|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
              			flags |= ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY;
  ------------------
  |  | 1116|    219|#define ZEND_INHERITANCE_CHECK_VISIBILITY     (1<<3)
  ------------------
 2028|    219|		}
 2029|    283|		zend_function *func;
 2030|  6.49k|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&parent_ce->function_table, key, func) {
  ------------------
  |  | 1448|  2.96k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    283|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    283|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    283|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    283|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    283|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    283|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    283|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  3.24k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 2.96k, False: 283]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  2.96k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  2.96k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  2.96k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 2.96k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  2.96k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  2.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.96k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|  2.96k|	_key = _p->key; \
  |  | 1450|  2.96k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    283|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    283|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2030:3): [True: 0, False: 283]
  |  Branch (2030:3): [True: 283, False: 0]
  ------------------
 2031|  6.49k|			do_inherit_method(key, func, ce, false, flags);
 2032|  6.49k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  2.96k|		} \
  |  | 1102|    283|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 283]
  |  |  ------------------
  ------------------
 2033|    283|	}
 2034|       |
 2035|    393|	do_inherit_parent_constructor(ce);
 2036|       |
 2037|    393|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (2037:6): [True: 158, False: 235]
  ------------------
 2038|    158|		if (parent_ce->num_interfaces) {
  ------------------
  |  Branch (2038:7): [True: 158, False: 0]
  ------------------
 2039|    158|			zend_do_inherit_interfaces(ce, parent_ce);
 2040|    158|		}
 2041|       |
 2042|    158|		if (ce->ce_flags & ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  291|    158|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
  |  Branch (2042:7): [True: 4, False: 154]
  ------------------
 2043|      4|			ce->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  234|      4|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
 2044|      4|		}
 2045|    158|	}
 2046|    393|	ce->ce_flags |= parent_ce->ce_flags & (ZEND_HAS_STATIC_IN_METHODS | ZEND_ACC_HAS_TYPE_HINTS | ZEND_ACC_HAS_READONLY_PROPS | ZEND_ACC_USE_GUARDS | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  304|    393|#define ZEND_HAS_STATIC_IN_METHODS       (1 << 14) /*  X  |     |     |     */
  ------------------
              	ce->ce_flags |= parent_ce->ce_flags & (ZEND_HAS_STATIC_IN_METHODS | ZEND_ACC_HAS_TYPE_HINTS | ZEND_ACC_HAS_READONLY_PROPS | ZEND_ACC_USE_GUARDS | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  244|    393|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
              	ce->ce_flags |= parent_ce->ce_flags & (ZEND_HAS_STATIC_IN_METHODS | ZEND_ACC_HAS_TYPE_HINTS | ZEND_ACC_HAS_READONLY_PROPS | ZEND_ACC_USE_GUARDS | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  325|    393|#define ZEND_ACC_HAS_READONLY_PROPS      (1 << 21) /*  X  |     |     |     */
  ------------------
              	ce->ce_flags |= parent_ce->ce_flags & (ZEND_HAS_STATIC_IN_METHODS | ZEND_ACC_HAS_TYPE_HINTS | ZEND_ACC_HAS_READONLY_PROPS | ZEND_ACC_USE_GUARDS | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  295|    393|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
              	ce->ce_flags |= parent_ce->ce_flags & (ZEND_HAS_STATIC_IN_METHODS | ZEND_ACC_HAS_TYPE_HINTS | ZEND_ACC_HAS_READONLY_PROPS | ZEND_ACC_USE_GUARDS | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  341|    393|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
              	ce->ce_flags |= parent_ce->ce_flags & (ZEND_HAS_STATIC_IN_METHODS | ZEND_ACC_HAS_TYPE_HINTS | ZEND_ACC_HAS_READONLY_PROPS | ZEND_ACC_USE_GUARDS | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  308|    393|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
 2047|    393|}
zend_do_implement_interface:
 2205|    202|{
 2206|    202|	bool ignore = false;
 2207|    202|	uint32_t current_iface_num = ce->num_interfaces;
 2208|    202|	uint32_t parent_iface_num  = ce->parent ? ce->parent->num_interfaces : 0;
  ------------------
  |  Branch (2208:31): [True: 24, False: 178]
  ------------------
 2209|       |
 2210|    202|	ZEND_ASSERT(ce->ce_flags & ZEND_ACC_LINKED);
  ------------------
  |  |  112|    202|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2210:2): [True: 0, False: 202]
  |  Branch (2210:2): [True: 202, False: 0]
  ------------------
 2211|       |
 2212|    422|	for (uint32_t i = 0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (2212:23): [True: 220, False: 202]
  ------------------
 2213|    220|		if (ce->interfaces[i] == NULL) {
  ------------------
  |  Branch (2213:7): [True: 0, False: 220]
  ------------------
 2214|      0|			memmove(ce->interfaces + i, ce->interfaces + i + 1, sizeof(zend_class_entry*) * (--ce->num_interfaces - i));
 2215|      0|			i--;
 2216|    220|		} else if (ce->interfaces[i] == iface) {
  ------------------
  |  Branch (2216:14): [True: 0, False: 220]
  ------------------
 2217|      0|			if (EXPECTED(i < parent_iface_num)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2218|      0|				ignore = true;
 2219|      0|			} else {
 2220|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot implement previously implemented interface %s", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot implement previously implemented interface %s", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Class %s cannot implement previously implemented interface %s", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2221|      0|			}
 2222|      0|		}
 2223|    220|	}
 2224|    202|	if (ignore) {
  ------------------
  |  Branch (2224:6): [True: 0, False: 202]
  ------------------
 2225|      0|		zend_string *key;
 2226|      0|		zend_class_constant *c;
 2227|       |		/* Check for attempt to redeclare interface constants */
 2228|      0|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&iface->constants_table, key, c) {
  ------------------
  |  | 1448|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      0|	_key = _p->key; \
  |  | 1450|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2228:3): [True: 0, False: 0]
  |  Branch (2228:3): [True: 0, False: 0]
  ------------------
 2229|      0|			do_inherit_constant_check(ce, c, key);
 2230|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2231|    202|	} else {
 2232|    202|		if (ce->num_interfaces >= current_iface_num) {
  ------------------
  |  Branch (2232:7): [True: 202, False: 0]
  ------------------
 2233|    202|			ce->interfaces = (zend_class_entry **) perealloc(ce->interfaces, sizeof(zend_class_entry *) * (++current_iface_num), ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  200|    202|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|    202|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    202|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|    202|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    202|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 202, False: 0]
  |  |  ------------------
  ------------------
 2234|    202|		}
 2235|    202|		ce->interfaces[ce->num_interfaces++] = iface;
 2236|       |
 2237|    202|		do_interface_implementation(ce, iface);
 2238|    202|	}
 2239|    202|}
zend_inheritance_check_override:
 2308|  1.33k|{
 2309|  1.33k|	if (ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|  1.33k|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (2309:6): [True: 131, False: 1.20k]
  ------------------
 2310|    131|		return;
 2311|    131|	}
 2312|       |
 2313|  4.32k|	ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, zend_function *f) {
  ------------------
  |  | 1341|    960|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  1.20k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  1.20k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  1.20k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  1.20k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  1.20k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  1.20k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.20k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  2.15k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 960, False: 1.19k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    960|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    960|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    960|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 960]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    960|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    960|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 960]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    960|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    960|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    960|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2313:2): [True: 0, False: 1.20k]
  |  Branch (2313:2): [True: 1.20k, False: 0]
  ------------------
 2314|  4.32k|		if (f->common.fn_flags & ZEND_ACC_OVERRIDE) {
  ------------------
  |  |  261|    960|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2314:7): [True: 5, False: 955]
  ------------------
 2315|      5|			ZEND_ASSERT(f->type != ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2315:4): [True: 0, False: 5]
  |  Branch (2315:4): [True: 5, False: 0]
  ------------------
 2316|       |
 2317|      5|			zend_error_at_noreturn(
 2318|      5|				E_COMPILE_ERROR, f->op_array.filename, f->op_array.line_start,
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2319|      5|				"%s::%s() has #[\\Override] attribute, but no matching parent method exists",
 2320|      5|				ZEND_FN_SCOPE_NAME(f), ZSTR_VAL(f->common.function_name));
  ------------------
  |  |  617|      5|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 5, False: 0]
  |  |  |  Branch (617:54): [True: 5, False: 0]
  |  |  ------------------
  ------------------
              				ZEND_FN_SCOPE_NAME(f), ZSTR_VAL(f->common.function_name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2321|      5|		}
 2322|  4.32k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    960|		} \
  |  | 1102|  1.20k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1.19k]
  |  |  ------------------
  ------------------
 2323|       |
 2324|  3.64k|	ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, zend_property_info *prop) {
  ------------------
  |  | 1341|    623|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  1.19k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  1.19k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  1.19k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  1.19k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  1.19k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  1.19k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.19k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.81k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 623, False: 1.18k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    623|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    623|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    623|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 623]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    623|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    623|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 623]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    623|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    623|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    623|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2324:2): [True: 0, False: 1.19k]
  |  Branch (2324:2): [True: 1.19k, False: 0]
  ------------------
 2325|  3.64k|		if (prop->flags & ZEND_ACC_OVERRIDE) {
  ------------------
  |  |  261|    623|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2325:7): [True: 8, False: 615]
  ------------------
 2326|      8|			zend_error_noreturn(
 2327|      8|				E_COMPILE_ERROR,
  ------------------
  |  |   28|      8|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2328|      8|				"%s::$%s has #[\\Override] attribute, but no matching parent property exists",
 2329|      8|				ZSTR_VAL(ce->name), zend_get_unmangled_property_name(prop->name));
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2330|      8|		}
 2331|       |
 2332|    615|		if (prop->hooks) {
  ------------------
  |  Branch (2332:7): [True: 85, False: 530]
  ------------------
 2333|    252|			for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|    252|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (2333:25): [True: 169, False: 83]
  ------------------
 2334|    169|				zend_function *f = prop->hooks[i];
 2335|    169|				if (f && f->common.fn_flags & ZEND_ACC_OVERRIDE) {
  ------------------
  |  |  261|    104|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2335:9): [True: 104, False: 65]
  |  Branch (2335:14): [True: 2, False: 102]
  ------------------
 2336|      2|					ZEND_ASSERT(f->type != ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2336:6): [True: 0, False: 2]
  |  Branch (2336:6): [True: 2, False: 0]
  ------------------
 2337|       |
 2338|      2|					zend_error_at_noreturn(
 2339|      2|						E_COMPILE_ERROR, f->op_array.filename, f->op_array.line_start,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2340|      2|						"%s::%s() has #[\\Override] attribute, but no matching parent method exists",
 2341|      2|						ZEND_FN_SCOPE_NAME(f), ZSTR_VAL(f->common.function_name));
  ------------------
  |  |  617|      2|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 2, False: 0]
  |  |  |  Branch (617:54): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              						ZEND_FN_SCOPE_NAME(f), ZSTR_VAL(f->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2342|      2|				}
 2343|    169|			}
 2344|     85|		}
 2345|    615|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    615|		} \
  |  | 1102|  1.19k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1.18k]
  |  |  ------------------
  ------------------
 2346|  1.19k|}
zend_verify_abstract_class:
 3034|     14|{
 3035|     14|	const zend_function *func;
 3036|     14|	zend_abstract_info ai;
 3037|     14|	bool is_explicit_abstract = (ce->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) != 0;
  ------------------
  |  |  234|     14|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
 3038|     14|	bool can_be_abstract = (ce->ce_flags & (ZEND_ACC_ENUM|ZEND_ACC_ANON_CLASS)) == 0;
  ------------------
  |  |  284|     14|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
              	bool can_be_abstract = (ce->ce_flags & (ZEND_ACC_ENUM|ZEND_ACC_ANON_CLASS)) == 0;
  ------------------
  |  |  283|     14|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
 3039|     14|	memset(&ai, 0, sizeof(ai));
 3040|       |
 3041|     48|	ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, func) {
  ------------------
  |  | 1341|     10|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     14|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     14|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     14|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     14|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     14|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     14|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     24|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 10, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     10|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     10|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     10|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 10]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     10|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     14|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     14|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     14|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3041:2): [True: 0, False: 14]
  |  Branch (3041:2): [True: 14, False: 0]
  ------------------
 3042|     48|		if (func->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     10|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (3042:7): [True: 7, False: 3]
  ------------------
 3043|       |			/* If the class is explicitly abstract, we only check private abstract methods,
 3044|       |			 * because only they must be declared in the same class. */
 3045|      7|			if (!is_explicit_abstract || (func->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (3045:8): [True: 6, False: 1]
  |  Branch (3045:33): [True: 1, False: 0]
  ------------------
 3046|      7|				zend_verify_abstract_class_function(func, &ai);
 3047|      7|			}
 3048|      7|		}
 3049|     48|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     10|		} \
  |  | 1102|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 3050|       |
 3051|     14|	if (!is_explicit_abstract) {
  ------------------
  |  Branch (3051:6): [True: 12, False: 2]
  ------------------
 3052|     12|		const zend_property_info *prop_info;
 3053|     28|		ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) {
  ------------------
  |  | 1133|     12|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|     12|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|     12|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|     12|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|     12|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|     12|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|     12|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|     12|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     20|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      8|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 8, False: 12]
  |  |  |  |  ------------------
  |  |  |  | 1034|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|     12|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3054|     28|			if (prop_info->hooks) {
  ------------------
  |  Branch (3054:8): [True: 7, False: 1]
  ------------------
 3055|     21|				for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|     21|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (3055:26): [True: 14, False: 7]
  ------------------
 3056|     14|					const zend_function *fn = prop_info->hooks[i];
 3057|     14|					if (fn && (fn->common.fn_flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  233|     12|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (3057:10): [True: 12, False: 2]
  |  Branch (3057:16): [True: 10, False: 2]
  ------------------
 3058|     10|						zend_verify_abstract_class_function(fn, &ai);
 3059|     10|					}
 3060|     14|				}
 3061|      7|			}
 3062|     28|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 3063|     12|	}
 3064|       |
 3065|     14|	if (ai.cnt) {
  ------------------
  |  Branch (3065:6): [True: 13, False: 1]
  ------------------
 3066|     13|		if (!is_explicit_abstract && can_be_abstract) {
  ------------------
  |  Branch (3066:7): [True: 12, False: 1]
  |  Branch (3066:32): [True: 10, False: 2]
  ------------------
 3067|     10|			zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|     10|#define E_ERROR				(1<<0L)
  ------------------
 3068|     10|				"%s %s contains %d abstract method%s and must therefore be declared abstract or implement the remaining method%s (" MAX_ABSTRACT_INFO_FMT MAX_ABSTRACT_INFO_FMT MAX_ABSTRACT_INFO_FMT ")",
 3069|     10|				zend_get_object_type_uc(ce),
 3070|     10|				ZSTR_VAL(ce->name), ai.cnt,
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3071|     10|				ai.cnt > 1 ? "s" : "",
  ------------------
  |  Branch (3071:5): [True: 4, False: 6]
  ------------------
 3072|     10|				ai.cnt > 1 ? "s" : "",
  ------------------
  |  Branch (3072:5): [True: 4, False: 6]
  ------------------
 3073|     10|				DISPLAY_ABSTRACT_FN(0),
  ------------------
  |  | 3014|     10|	ai.afn[idx] ? ZEND_FN_SCOPE_NAME(ai.afn[idx]) : "", \
  |  |  ------------------
  |  |  |  |  617|     10|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (617:40): [True: 10, False: 0]
  |  |  |  |  |  Branch (617:54): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3014:2): [True: 10, False: 0]
  |  |  ------------------
  |  | 3015|     10|	ai.afn[idx] ? "::" : "", \
  |  |  ------------------
  |  |  |  Branch (3015:2): [True: 10, False: 0]
  |  |  ------------------
  |  | 3016|     10|	ai.afn[idx] ? ZSTR_VAL(ai.afn[idx]->common.function_name) : "", \
  |  |  ------------------
  |  |  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (3016:2): [True: 10, False: 0]
  |  |  ------------------
  |  | 3017|     10|	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
  |  |  ------------------
  |  |  |  | 3011|      6|#define MAX_ABSTRACT_INFO_CNT 3
  |  |  ------------------
  |  |  |  Branch (3017:2): [True: 10, False: 0]
  |  |  |  Branch (3017:17): [True: 4, False: 6]
  |  |  |  Branch (3017:43): [True: 6, False: 0]
  |  |  |  Branch (3017:58): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 3074|     10|				DISPLAY_ABSTRACT_FN(1),
  ------------------
  |  | 3014|     10|	ai.afn[idx] ? ZEND_FN_SCOPE_NAME(ai.afn[idx]) : "", \
  |  |  ------------------
  |  |  |  |  617|      4|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (617:40): [True: 4, False: 0]
  |  |  |  |  |  Branch (617:54): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3014:2): [True: 4, False: 6]
  |  |  ------------------
  |  | 3015|     10|	ai.afn[idx] ? "::" : "", \
  |  |  ------------------
  |  |  |  Branch (3015:2): [True: 4, False: 6]
  |  |  ------------------
  |  | 3016|     10|	ai.afn[idx] ? ZSTR_VAL(ai.afn[idx]->common.function_name) : "", \
  |  |  ------------------
  |  |  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (3016:2): [True: 4, False: 6]
  |  |  ------------------
  |  | 3017|     10|	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
  |  |  ------------------
  |  |  |  | 3011|      4|#define MAX_ABSTRACT_INFO_CNT 3
  |  |  ------------------
  |  |  |  Branch (3017:2): [True: 4, False: 6]
  |  |  |  Branch (3017:17): [True: 0, False: 4]
  |  |  |  Branch (3017:43): [True: 4, False: 6]
  |  |  |  Branch (3017:58): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 3075|     10|				DISPLAY_ABSTRACT_FN(2)
  ------------------
  |  | 3014|     10|	ai.afn[idx] ? ZEND_FN_SCOPE_NAME(ai.afn[idx]) : "", \
  |  |  ------------------
  |  |  |  |  617|      0|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (617:40): [True: 0, False: 0]
  |  |  |  |  |  Branch (617:54): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3014:2): [True: 0, False: 10]
  |  |  ------------------
  |  | 3015|     10|	ai.afn[idx] ? "::" : "", \
  |  |  ------------------
  |  |  |  Branch (3015:2): [True: 0, False: 10]
  |  |  ------------------
  |  | 3016|     10|	ai.afn[idx] ? ZSTR_VAL(ai.afn[idx]->common.function_name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (3016:2): [True: 0, False: 10]
  |  |  ------------------
  |  | 3017|     10|	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
  |  |  ------------------
  |  |  |  | 3011|      0|#define MAX_ABSTRACT_INFO_CNT 3
  |  |  ------------------
  |  |  |  Branch (3017:2): [True: 0, False: 10]
  |  |  |  Branch (3017:17): [True: 0, False: 0]
  |  |  |  Branch (3017:43): [True: 0, False: 10]
  |  |  |  Branch (3017:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3076|     10|			);
 3077|     10|		} else {
 3078|      3|			zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|      3|#define E_ERROR				(1<<0L)
  ------------------
 3079|      3|				"%s %s must implement %d abstract method%s (" MAX_ABSTRACT_INFO_FMT MAX_ABSTRACT_INFO_FMT MAX_ABSTRACT_INFO_FMT ")",
 3080|      3|				zend_get_object_type_uc(ce),
 3081|      3|				ZSTR_VAL(ce->name), ai.cnt,
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3082|      3|				ai.cnt > 1 ? "s" : "",
  ------------------
  |  Branch (3082:5): [True: 0, False: 3]
  ------------------
 3083|      3|				DISPLAY_ABSTRACT_FN(0),
  ------------------
  |  | 3014|      3|	ai.afn[idx] ? ZEND_FN_SCOPE_NAME(ai.afn[idx]) : "", \
  |  |  ------------------
  |  |  |  |  617|      3|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (617:40): [True: 3, False: 0]
  |  |  |  |  |  Branch (617:54): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3014:2): [True: 3, False: 0]
  |  |  ------------------
  |  | 3015|      3|	ai.afn[idx] ? "::" : "", \
  |  |  ------------------
  |  |  |  Branch (3015:2): [True: 3, False: 0]
  |  |  ------------------
  |  | 3016|      3|	ai.afn[idx] ? ZSTR_VAL(ai.afn[idx]->common.function_name) : "", \
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (3016:2): [True: 3, False: 0]
  |  |  ------------------
  |  | 3017|      3|	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
  |  |  ------------------
  |  |  |  | 3011|      3|#define MAX_ABSTRACT_INFO_CNT 3
  |  |  ------------------
  |  |  |  Branch (3017:2): [True: 3, False: 0]
  |  |  |  Branch (3017:17): [True: 0, False: 3]
  |  |  |  Branch (3017:43): [True: 3, False: 0]
  |  |  |  Branch (3017:58): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 3084|      3|				DISPLAY_ABSTRACT_FN(1),
  ------------------
  |  | 3014|      3|	ai.afn[idx] ? ZEND_FN_SCOPE_NAME(ai.afn[idx]) : "", \
  |  |  ------------------
  |  |  |  |  617|      0|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (617:40): [True: 0, False: 0]
  |  |  |  |  |  Branch (617:54): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3014:2): [True: 0, False: 3]
  |  |  ------------------
  |  | 3015|      3|	ai.afn[idx] ? "::" : "", \
  |  |  ------------------
  |  |  |  Branch (3015:2): [True: 0, False: 3]
  |  |  ------------------
  |  | 3016|      3|	ai.afn[idx] ? ZSTR_VAL(ai.afn[idx]->common.function_name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (3016:2): [True: 0, False: 3]
  |  |  ------------------
  |  | 3017|      3|	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
  |  |  ------------------
  |  |  |  | 3011|      0|#define MAX_ABSTRACT_INFO_CNT 3
  |  |  ------------------
  |  |  |  Branch (3017:2): [True: 0, False: 3]
  |  |  |  Branch (3017:17): [True: 0, False: 0]
  |  |  |  Branch (3017:43): [True: 0, False: 3]
  |  |  |  Branch (3017:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3085|      3|				DISPLAY_ABSTRACT_FN(2)
  ------------------
  |  | 3014|      3|	ai.afn[idx] ? ZEND_FN_SCOPE_NAME(ai.afn[idx]) : "", \
  |  |  ------------------
  |  |  |  |  617|      0|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (617:40): [True: 0, False: 0]
  |  |  |  |  |  Branch (617:54): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3014:2): [True: 0, False: 3]
  |  |  ------------------
  |  | 3015|      3|	ai.afn[idx] ? "::" : "", \
  |  |  ------------------
  |  |  |  Branch (3015:2): [True: 0, False: 3]
  |  |  ------------------
  |  | 3016|      3|	ai.afn[idx] ? ZSTR_VAL(ai.afn[idx]->common.function_name) : "", \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (3016:2): [True: 0, False: 3]
  |  |  ------------------
  |  | 3017|      3|	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
  |  |  ------------------
  |  |  |  | 3011|      0|#define MAX_ABSTRACT_INFO_CNT 3
  |  |  ------------------
  |  |  |  Branch (3017:2): [True: 0, False: 3]
  |  |  |  Branch (3017:17): [True: 0, False: 0]
  |  |  |  Branch (3017:43): [True: 0, False: 3]
  |  |  |  Branch (3017:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3086|      3|			);
 3087|      3|		}
 3088|     13|	} else {
 3089|       |		/* now everything should be fine and an added ZEND_ACC_IMPLICIT_ABSTRACT_CLASS should be removed */
 3090|      1|		ce->ce_flags &= ~ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|      1|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 3091|      1|	}
 3092|     14|}
zend_do_link_class:
 3486|    345|{
 3487|       |	/* Load parent/interface dependencies first, so we can still gracefully abort linking
 3488|       |	 * with an exception and remove the class from the class table. This is only possible
 3489|       |	 * if no variance obligations on the current class have been added during autoloading. */
 3490|    345|	zend_class_entry *parent = NULL;
 3491|    345|	zend_class_entry **traits_and_interfaces = NULL;
 3492|    345|	zend_class_entry *proto = NULL;
 3493|    345|	zend_class_entry *orig_linking_class;
 3494|    345|	uint32_t is_cacheable = ce->ce_flags & ZEND_ACC_IMMUTABLE;
  ------------------
  |  |  241|    345|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
 3495|    345|	uint32_t i, j;
 3496|    345|	zval *zv;
 3497|    345|	ALLOCA_FLAG(use_heap)
 3498|       |
 3499|    345|	SET_ALLOCA_FLAG(use_heap);
 3500|    345|	ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_LINKED));
  ------------------
  |  |  112|    345|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3500:2): [True: 0, False: 345]
  |  Branch (3500:2): [True: 345, False: 0]
  ------------------
 3501|       |
 3502|    345|	if (ce->parent_name) {
  ------------------
  |  Branch (3502:6): [True: 55, False: 290]
  ------------------
 3503|     55|		parent = zend_fetch_class_by_name(
 3504|     55|			ce->parent_name, lc_parent_name,
 3505|     55|			ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1054|     55|#define ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED 0x0800
  ------------------
              			ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|     55|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 3506|     55|		if (!parent) {
  ------------------
  |  Branch (3506:7): [True: 4, False: 51]
  ------------------
 3507|      4|			check_unrecoverable_load_failure(ce);
 3508|      4|			return NULL;
 3509|      4|		}
 3510|     51|		UPDATE_IS_CACHEABLE(parent);
  ------------------
  |  | 3473|     51|# define UPDATE_IS_CACHEABLE(ce) do { \
  |  | 3474|     51|			if ((ce)->type == ZEND_USER_CLASS) { \
  |  |  ------------------
  |  |  |  Branch (3474:8): [True: 46, False: 5]
  |  |  ------------------
  |  | 3475|     46|				is_cacheable &= (ce)->ce_flags; \
  |  | 3476|     46|			} \
  |  | 3477|     51|		} while (0)
  |  |  ------------------
  |  |  |  Branch (3477:12): [Folded, False: 51]
  |  |  ------------------
  ------------------
 3511|     51|	}
 3512|       |
 3513|    341|	if (ce->num_traits || ce->num_interfaces) {
  ------------------
  |  Branch (3513:6): [True: 96, False: 245]
  |  Branch (3513:24): [True: 206, False: 39]
  ------------------
 3514|    300|		traits_and_interfaces = do_alloca(sizeof(zend_class_entry*) * (ce->num_traits + ce->num_interfaces), use_heap);
  ------------------
  |  |  247|    300|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|    300|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    300|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    300|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    300|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    300|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3515|       |
 3516|    400|		for (i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (3516:15): [True: 106, False: 294]
  ------------------
 3517|    106|			zend_class_entry *trait = zend_fetch_class_by_name(ce->trait_names[i].name,
 3518|    106|				ce->trait_names[i].lc_name, ZEND_FETCH_CLASS_TRAIT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1048|    106|#define ZEND_FETCH_CLASS_TRAIT		6
  ------------------
              				ce->trait_names[i].lc_name, ZEND_FETCH_CLASS_TRAIT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    106|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 3519|    106|			if (UNEXPECTED(trait == NULL)) {
  ------------------
  |  |  457|    106|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 103]
  |  |  ------------------
  ------------------
 3520|      3|				free_alloca(traits_and_interfaces, use_heap);
  ------------------
  |  |  248|      3|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3521|      3|				return NULL;
 3522|      3|			}
 3523|    103|			if (UNEXPECTED(!(trait->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  457|    103|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 100]
  |  |  ------------------
  ------------------
 3524|      3|				zend_throw_error(NULL, "%s cannot use %s - it is not a trait", ZSTR_VAL(ce->name), ZSTR_VAL(trait->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "%s cannot use %s - it is not a trait", ZSTR_VAL(ce->name), ZSTR_VAL(trait->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3525|      3|				free_alloca(traits_and_interfaces, use_heap);
  ------------------
  |  |  248|      3|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3526|      3|				return NULL;
 3527|      3|			}
 3528|    100|			if (UNEXPECTED(trait->ce_flags & ZEND_ACC_DEPRECATED)) {
  ------------------
  |  |  457|    100|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 96]
  |  |  ------------------
  ------------------
 3529|      4|				zend_use_of_deprecated_trait(trait, ce->name);
 3530|      4|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 3531|      0|					free_alloca(traits_and_interfaces, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3532|      0|					return NULL;
 3533|      0|				}
 3534|      4|			}
 3535|    113|			for (j = 0; j < i; j++) {
  ------------------
  |  Branch (3535:16): [True: 13, False: 100]
  ------------------
 3536|     13|				if (traits_and_interfaces[j] == trait) {
  ------------------
  |  Branch (3536:9): [True: 0, False: 13]
  ------------------
 3537|       |					/* skip duplications */
 3538|      0|					trait = NULL;
 3539|      0|					break;
 3540|      0|				}
 3541|     13|			}
 3542|    100|			traits_and_interfaces[i] = trait;
 3543|    100|			if (trait) {
  ------------------
  |  Branch (3543:8): [True: 100, False: 0]
  ------------------
 3544|    100|				UPDATE_IS_CACHEABLE(trait);
  ------------------
  |  | 3473|    100|# define UPDATE_IS_CACHEABLE(ce) do { \
  |  | 3474|    100|			if ((ce)->type == ZEND_USER_CLASS) { \
  |  |  ------------------
  |  |  |  Branch (3474:8): [True: 100, False: 0]
  |  |  ------------------
  |  | 3475|    100|				is_cacheable &= (ce)->ce_flags; \
  |  | 3476|    100|			} \
  |  | 3477|    100|		} while (0)
  |  |  ------------------
  |  |  |  Branch (3477:12): [Folded, False: 100]
  |  |  ------------------
  ------------------
 3545|    100|			}
 3546|    100|		}
 3547|    300|	}
 3548|       |
 3549|    335|	if (ce->num_interfaces) {
  ------------------
  |  Branch (3549:6): [True: 210, False: 125]
  ------------------
 3550|    470|		for (i = 0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (3550:15): [True: 265, False: 205]
  ------------------
 3551|    265|			zend_class_entry *iface = zend_fetch_class_by_name(
 3552|    265|				ce->interface_names[i].name, ce->interface_names[i].lc_name,
 3553|    265|				ZEND_FETCH_CLASS_INTERFACE |
  ------------------
  |  | 1047|    265|#define ZEND_FETCH_CLASS_INTERFACE	5
  ------------------
 3554|    265|				ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1054|    265|#define ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED 0x0800
  ------------------
              				ZEND_FETCH_CLASS_ALLOW_NEARLY_LINKED | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    265|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 3555|    265|			if (!iface) {
  ------------------
  |  Branch (3555:8): [True: 5, False: 260]
  ------------------
 3556|      5|				check_unrecoverable_load_failure(ce);
 3557|      5|				free_alloca(traits_and_interfaces, use_heap);
  ------------------
  |  |  248|      5|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3558|      5|				return NULL;
 3559|      5|			}
 3560|    260|			traits_and_interfaces[ce->num_traits + i] = iface;
 3561|    260|			if (iface) {
  ------------------
  |  Branch (3561:8): [True: 260, False: 0]
  ------------------
 3562|    260|				UPDATE_IS_CACHEABLE(iface);
  ------------------
  |  | 3473|    260|# define UPDATE_IS_CACHEABLE(ce) do { \
  |  | 3474|    260|			if ((ce)->type == ZEND_USER_CLASS) { \
  |  |  ------------------
  |  |  |  Branch (3474:8): [True: 69, False: 191]
  |  |  ------------------
  |  | 3475|     69|				is_cacheable &= (ce)->ce_flags; \
  |  | 3476|     69|			} \
  |  | 3477|    260|		} while (0)
  |  |  ------------------
  |  |  |  Branch (3477:12): [Folded, False: 260]
  |  |  ------------------
  ------------------
 3563|    260|			}
 3564|    260|		}
 3565|    210|	}
 3566|       |
 3567|    330|#ifndef ZEND_WIN32
 3568|    330|	if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|    330|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (3568:6): [True: 124, False: 206]
  ------------------
 3569|       |		/* We will add internal methods. */
 3570|    124|		is_cacheable = false;
 3571|    124|	}
 3572|    330|#endif
 3573|       |
 3574|    330|	if (ce->ce_flags & ZEND_ACC_IMMUTABLE && is_cacheable) {
  ------------------
  |  |  241|    660|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (3574:6): [True: 0, False: 330]
  |  Branch (3574:43): [True: 0, False: 0]
  ------------------
 3575|      0|		if (zend_inheritance_cache_get && zend_inheritance_cache_add) {
  ------------------
  |  Branch (3575:7): [True: 0, False: 0]
  |  Branch (3575:37): [True: 0, False: 0]
  ------------------
 3576|      0|			zend_class_entry *ret = zend_inheritance_cache_get(ce, parent, traits_and_interfaces);
 3577|      0|			if (ret) {
  ------------------
  |  Branch (3577:8): [True: 0, False: 0]
  ------------------
 3578|      0|				if (traits_and_interfaces) {
  ------------------
  |  Branch (3578:9): [True: 0, False: 0]
  ------------------
 3579|      0|					free_alloca(traits_and_interfaces, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3580|      0|				}
 3581|      0|				zv = zend_hash_find_known_hash(CG(class_table), key);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3582|      0|				Z_CE_P(zv) = ret;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3583|      0|				return ret;
 3584|      0|			}
 3585|      0|		} else {
 3586|      0|			is_cacheable = 0;
 3587|      0|		}
 3588|      0|		proto = ce;
 3589|      0|	}
 3590|       |
 3591|       |	/* Delay and record warnings (such as deprecations) thrown during
 3592|       |	 * inheritance, so they will be recorded in the inheritance cache.
 3593|       |	 * Warnings must be delayed in all cases so that we get a consistent
 3594|       |	 * behavior regardless of cacheability. */
 3595|    330|	bool orig_record_errors = EG(record_errors);
  ------------------
  |  |   45|    330|# define EG(v) (executor_globals.v)
  ------------------
 3596|    330|	if (!orig_record_errors) {
  ------------------
  |  Branch (3596:6): [True: 328, False: 2]
  ------------------
 3597|    328|		zend_begin_record_errors();
 3598|    328|	}
 3599|       |
 3600|    330|	zend_try {
  ------------------
  |  |  276|    330|	{															\
  |  |  277|    330|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|    330|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|    330|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|    330|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|    330|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|    330|																\
  |  |  280|    330|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|    330|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|    330|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|    330|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 328, False: 2]
  |  |  ------------------
  ------------------
 3601|    328|		if (ce->ce_flags & ZEND_ACC_IMMUTABLE) {
  ------------------
  |  |  241|    328|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (3601:7): [True: 0, False: 328]
  ------------------
 3602|       |			/* Lazy class loading */
 3603|      0|			ce = zend_lazy_class_load(ce);
 3604|      0|			zv = zend_hash_find_known_hash(CG(class_table), key);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3605|      0|			Z_CE_P(zv) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3606|    328|		} else if (ce->ce_flags & ZEND_ACC_FILE_CACHED) {
  ------------------
  |  |  338|    328|#define ZEND_ACC_FILE_CACHED             (1 << 27) /*  X  |     |     |     */
  ------------------
  |  Branch (3606:14): [True: 0, False: 328]
  ------------------
 3607|       |			/* Lazy class loading */
 3608|      0|			ce = zend_lazy_class_load(ce);
 3609|      0|			ce->ce_flags &= ~ZEND_ACC_FILE_CACHED;
  ------------------
  |  |  338|      0|#define ZEND_ACC_FILE_CACHED             (1 << 27) /*  X  |     |     |     */
  ------------------
 3610|      0|			zv = zend_hash_find_known_hash(CG(class_table), key);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3611|      0|			Z_CE_P(zv) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3612|      0|		}
 3613|       |
 3614|    328|		if (CG(unlinked_uses)) {
  ------------------
  |  |   35|    328|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 328]
  |  |  ------------------
  ------------------
 3615|      0|			zend_hash_index_del(CG(unlinked_uses), (zend_ulong)(uintptr_t) ce);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3616|      0|		}
 3617|       |
 3618|    328|		orig_linking_class = CG(current_linking_class);
  ------------------
  |  |   35|    328|# define CG(v) (compiler_globals.v)
  ------------------
 3619|    328|		CG(current_linking_class) = is_cacheable ? ce : NULL;
  ------------------
  |  |   35|    328|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3619:31): [True: 0, False: 328]
  ------------------
 3620|       |
 3621|    328|		if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|    328|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (3621:7): [True: 124, False: 204]
  ------------------
 3622|       |			/* Only register builtin enum methods during inheritance to avoid persisting them in
 3623|       |			 * opcache. */
 3624|    124|			zend_enum_register_funcs(ce);
 3625|    124|		}
 3626|       |
 3627|       |#ifdef ZEND_OPCACHE_SHM_REATTACHMENT
 3628|       |		zend_link_hooked_object_iter(ce);
 3629|       |#endif
 3630|       |
 3631|    328|		HashTable **trait_exclude_tables;
 3632|    328|		zend_class_entry **trait_aliases;
 3633|    328|		bool trait_contains_abstract_methods = false;
 3634|    328|		if (ce->num_traits) {
  ------------------
  |  Branch (3634:7): [True: 88, False: 240]
  ------------------
 3635|     88|			zend_traits_init_trait_structures(ce, traits_and_interfaces, &trait_exclude_tables, &trait_aliases);
 3636|     88|			zend_do_traits_method_binding(ce, traits_and_interfaces, trait_exclude_tables, trait_aliases, false, &trait_contains_abstract_methods);
 3637|     88|			zend_do_traits_constant_binding(ce, traits_and_interfaces);
 3638|     88|			zend_do_traits_property_binding(ce, traits_and_interfaces);
 3639|       |
 3640|     88|			zend_function *fn;
 3641|    239|			ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, fn) {
  ------------------
  |  | 1341|     45|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     88|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     88|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     88|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     88|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     88|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     88|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     88|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    106|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 45, False: 61]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     45|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     45|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     45|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 45]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     45|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     45|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 45]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     88|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     88|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     88|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3641:4): [True: 0, False: 88]
  |  Branch (3641:4): [True: 61, False: 27]
  ------------------
 3642|    239|				zend_fixup_trait_method(fn, ce);
 3643|    239|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     45|		} \
  |  | 1102|     61|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 61]
  |  |  ------------------
  ------------------
 3644|     88|		}
 3645|    328|		if (parent) {
  ------------------
  |  Branch (3645:7): [True: 49, False: 252]
  ------------------
 3646|     49|			if (!(parent->ce_flags & ZEND_ACC_LINKED)) {
  ------------------
  |  |  287|     49|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (3646:8): [True: 0, False: 49]
  ------------------
 3647|      0|				add_dependency_obligation(ce, parent);
 3648|      0|			}
 3649|     49|			zend_do_inheritance(ce, parent);
 3650|     49|		}
 3651|    301|		if (ce->num_traits) {
  ------------------
  |  Branch (3651:7): [True: 60, False: 241]
  ------------------
 3652|     60|			if (trait_contains_abstract_methods) {
  ------------------
  |  Branch (3652:8): [True: 9, False: 51]
  ------------------
 3653|      9|				zend_do_traits_method_binding(ce, traits_and_interfaces, trait_exclude_tables, trait_aliases, true, &trait_contains_abstract_methods);
 3654|       |
 3655|       |				/* New abstract methods may have been added, make sure to add
 3656|       |				 * ZEND_ACC_IMPLICIT_ABSTRACT_CLASS to ce. */
 3657|      9|				zend_function *fn;
 3658|     30|				ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, fn) {
  ------------------
  |  | 1341|      7|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      9|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      9|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      9|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      9|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      9|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      9|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 7, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      7|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      7|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      7|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 7]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      7|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      9|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      9|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      9|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3658:5): [True: 0, False: 9]
  |  Branch (3658:5): [True: 7, False: 2]
  ------------------
 3659|     30|					zend_fixup_trait_method(fn, ce);
 3660|     30|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      7|		} \
  |  | 1102|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 3661|      9|			}
 3662|       |
 3663|     60|			if (trait_exclude_tables) {
  ------------------
  |  Branch (3663:8): [True: 0, False: 58]
  ------------------
 3664|      0|				for (i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (3664:17): [True: 0, False: 0]
  ------------------
 3665|      0|					if (traits_and_interfaces[i]) {
  ------------------
  |  Branch (3665:10): [True: 0, False: 0]
  ------------------
 3666|      0|						if (trait_exclude_tables[i]) {
  ------------------
  |  Branch (3666:11): [True: 0, False: 0]
  ------------------
 3667|      0|							zend_hash_destroy(trait_exclude_tables[i]);
 3668|      0|							FREE_HASHTABLE(trait_exclude_tables[i]);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3669|      0|						}
 3670|      0|					}
 3671|      0|				}
 3672|      0|				efree(trait_exclude_tables);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3673|      0|			}
 3674|     58|			if (trait_aliases) {
  ------------------
  |  Branch (3674:8): [True: 9, False: 49]
  ------------------
 3675|      9|				efree(trait_aliases);
  ------------------
  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3676|      9|			}
 3677|     58|		}
 3678|    301|		if (ce->num_interfaces) {
  ------------------
  |  Branch (3678:7): [True: 202, False: 97]
  ------------------
 3679|       |			/* Also copy the parent interfaces here, so we don't need to reallocate later. */
 3680|    202|			uint32_t num_parent_interfaces = parent ? parent->num_interfaces : 0;
  ------------------
  |  Branch (3680:37): [True: 4, False: 198]
  ------------------
 3681|    202|			zend_class_entry **interfaces = emalloc(
  ------------------
  |  |  150|    202|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    202|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    202|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    202|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    202|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3682|    202|					sizeof(zend_class_entry *) * (ce->num_interfaces + num_parent_interfaces));
 3683|       |
 3684|    202|			if (num_parent_interfaces) {
  ------------------
  |  Branch (3684:8): [True: 0, False: 202]
  ------------------
 3685|      0|				memcpy(interfaces, parent->interfaces,
 3686|      0|					   sizeof(zend_class_entry *) * num_parent_interfaces);
 3687|      0|			}
 3688|    202|			memcpy(interfaces + num_parent_interfaces, traits_and_interfaces + ce->num_traits,
 3689|    202|				   sizeof(zend_class_entry *) * ce->num_interfaces);
 3690|       |
 3691|    202|			zend_do_implement_interfaces(ce, interfaces);
 3692|    202|		} else if (parent && parent->num_interfaces) {
  ------------------
  |  Branch (3692:14): [True: 37, False: 60]
  |  Branch (3692:24): [True: 5, False: 32]
  ------------------
 3693|      5|			zend_do_inherit_interfaces(ce, parent);
 3694|      5|		}
 3695|    299|		if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT))
  ------------------
  |  |  281|    299|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              		if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT))
  ------------------
  |  |  282|    299|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (3695:7): [True: 237, False: 62]
  ------------------
 3696|    237|			&& (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))
  ------------------
  |  |  291|    237|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
              			&& (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS))
  ------------------
  |  |  234|    237|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (3696:7): [True: 9, False: 228]
  ------------------
 3697|    299|				) {
 3698|      9|			zend_verify_abstract_class(ce);
 3699|      9|		}
 3700|    299|		if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|    299|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (3700:7): [True: 113, False: 186]
  ------------------
 3701|    113|			zend_verify_enum(ce);
 3702|    113|		}
 3703|    299|		if (ce->num_hooked_prop_variance_checks) {
  ------------------
  |  Branch (3703:7): [True: 4, False: 295]
  ------------------
 3704|      4|			const zend_property_info *prop_info;
 3705|     16|			ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop_info) {
  ------------------
  |  | 1341|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      7|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      4|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3705:4): [True: 0, False: 4]
  |  Branch (3705:4): [True: 4, False: 0]
  ------------------
 3706|     16|				if (prop_info->ce == ce && prop_info->hooks && prop_info->hooks[ZEND_PROPERTY_HOOK_SET]) {
  ------------------
  |  Branch (3706:9): [True: 4, False: 0]
  |  Branch (3706:32): [True: 4, False: 0]
  |  Branch (3706:52): [True: 4, False: 0]
  ------------------
 3707|      4|					switch (zend_verify_property_hook_variance(prop_info, prop_info->hooks[ZEND_PROPERTY_HOOK_SET])) {
  ------------------
  |  Branch (3707:14): [True: 4, False: 0]
  ------------------
 3708|      2|						case INHERITANCE_SUCCESS:
  ------------------
  |  Branch (3708:7): [True: 2, False: 2]
  ------------------
 3709|      2|							break;
 3710|      1|						case INHERITANCE_ERROR:
  ------------------
  |  Branch (3710:7): [True: 1, False: 3]
  ------------------
 3711|      1|							zend_hooked_property_variance_error(prop_info);
 3712|      0|							break;
 3713|      1|						case INHERITANCE_UNRESOLVED:
  ------------------
  |  Branch (3713:7): [True: 1, False: 3]
  ------------------
 3714|      1|							add_property_hook_obligation(ce, prop_info, prop_info->hooks[ZEND_PROPERTY_HOOK_SET]);
 3715|      1|							break;
 3716|      0|						case INHERITANCE_WARNING:
  ------------------
  |  Branch (3716:7): [True: 0, False: 4]
  ------------------
 3717|      0|							ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3717:8): [Folded, False: 0]
  |  Branch (3717:8): [Folded, False: 0]
  ------------------
 3718|      4|					}
 3719|      4|				}
 3720|     16|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3721|      4|		}
 3722|       |
 3723|       |		/* Normally Stringable is added during compilation. However, if it is imported from a trait,
 3724|       |		 * we need to explicitly add the interface here. */
 3725|    298|		if (ce->__tostring && !(ce->ce_flags & ZEND_ACC_TRAIT)
  ------------------
  |  |  282|     16|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (3725:7): [True: 16, False: 282]
  |  Branch (3725:25): [True: 16, False: 0]
  ------------------
 3726|     16|			&& !zend_class_implements_interface(ce, zend_ce_stringable)) {
  ------------------
  |  Branch (3726:7): [True: 0, False: 16]
  ------------------
 3727|      0|			ZEND_ASSERT(ce->__tostring->common.fn_flags & ZEND_ACC_TRAIT_CLONE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3727:4): [True: 0, False: 0]
  |  Branch (3727:4): [True: 0, False: 0]
  ------------------
 3728|      0|			ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  317|      0|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
 3729|      0|			ce->num_interfaces++;
 3730|      0|			ce->interfaces = perealloc(ce->interfaces,
  ------------------
  |  |  200|      0|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3731|      0|									   sizeof(zend_class_entry *) * ce->num_interfaces, ce->type == ZEND_INTERNAL_CLASS);
 3732|      0|			ce->interfaces[ce->num_interfaces - 1] = zend_ce_stringable;
 3733|      0|			do_interface_implementation(ce, zend_ce_stringable);
 3734|      0|		}
 3735|       |
 3736|    298|		zend_build_properties_info_table(ce);
 3737|    298|	} zend_catch {
  ------------------
  |  |  283|    298|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|    298|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|    298|		} else {												\
  |  |  285|      2|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|    101|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|    101|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (3737:4): [True: 0, False: 298]
  |  Branch (3737:4): [True: 227, False: 71]
  |  Branch (3737:4): [True: 0, False: 2]
  |  Branch (3737:4): [True: 101, False: 18.4E]
  ------------------
 3738|       |		/* Do not leak recorded errors to the next linked class. */
 3739|    101|		if (!orig_record_errors) {
  ------------------
  |  Branch (3739:7): [True: 101, False: 0]
  ------------------
 3740|    101|			EG(record_errors) = false;
  ------------------
  |  |   45|    101|# define EG(v) (executor_globals.v)
  ------------------
 3741|    101|			zend_free_recorded_errors();
 3742|    101|		}
 3743|    101|		zend_bailout();
  ------------------
  |  |  273|    101|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
 3744|    227|	} zend_end_try();
  ------------------
  |  |  288|      2|		}														\
  |  |  289|    330|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|    227|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|    227|	}
  ------------------
 3745|       |
 3746|    227|	EG(record_errors) = orig_record_errors;
  ------------------
  |  |   45|    227|# define EG(v) (executor_globals.v)
  ------------------
 3747|       |
 3748|    227|	if (!(ce->ce_flags & ZEND_ACC_UNRESOLVED_VARIANCE)) {
  ------------------
  |  |  320|    227|#define ZEND_ACC_UNRESOLVED_VARIANCE     (1 << 19) /*  X  |     |     |     */
  ------------------
  |  Branch (3748:6): [True: 203, False: 24]
  ------------------
 3749|    203|		zend_inheritance_check_override(ce);
 3750|    203|		ce->ce_flags |= ZEND_ACC_LINKED;
  ------------------
  |  |  287|    203|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
 3751|    203|	} else {
 3752|     24|		ce->ce_flags |= ZEND_ACC_NEARLY_LINKED;
  ------------------
  |  |  323|     24|#define ZEND_ACC_NEARLY_LINKED           (1 << 20) /*  X  |     |     |     */
  ------------------
 3753|     24|		if (CG(current_linking_class)) {
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 24]
  |  |  ------------------
  ------------------
 3754|      0|			ce->ce_flags |= ZEND_ACC_CACHEABLE;
  ------------------
  |  |  331|      0|#define ZEND_ACC_CACHEABLE               (1 << 23) /*  X  |     |     |     */
  ------------------
 3755|      0|		}
 3756|     24|		load_delayed_classes(ce);
 3757|     24|		if (ce->ce_flags & ZEND_ACC_UNRESOLVED_VARIANCE) {
  ------------------
  |  |  320|     24|#define ZEND_ACC_UNRESOLVED_VARIANCE     (1 << 19) /*  X  |     |     |     */
  ------------------
  |  Branch (3757:7): [True: 23, False: 1]
  ------------------
 3758|     23|			resolve_delayed_variance_obligations(ce);
 3759|     23|		}
 3760|     24|		if (ce->ce_flags & ZEND_ACC_CACHEABLE) {
  ------------------
  |  |  331|     24|#define ZEND_ACC_CACHEABLE               (1 << 23) /*  X  |     |     |     */
  ------------------
  |  Branch (3760:7): [True: 0, False: 24]
  ------------------
 3761|      0|			ce->ce_flags &= ~ZEND_ACC_CACHEABLE;
  ------------------
  |  |  331|      0|#define ZEND_ACC_CACHEABLE               (1 << 23) /*  X  |     |     |     */
  ------------------
 3762|     24|		} else {
 3763|     24|			CG(current_linking_class) = NULL;
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
 3764|     24|		}
 3765|     24|	}
 3766|       |
 3767|    227|	if (!CG(current_linking_class)) {
  ------------------
  |  |   35|    227|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3767:6): [True: 197, False: 30]
  ------------------
 3768|    197|		is_cacheable = 0;
 3769|    197|	}
 3770|    227|	CG(current_linking_class) = orig_linking_class;
  ------------------
  |  |   35|    227|# define CG(v) (compiler_globals.v)
  ------------------
 3771|       |
 3772|    227|	if (is_cacheable) {
  ------------------
  |  Branch (3772:6): [True: 0, False: 227]
  ------------------
 3773|      0|		HashTable *ht = (HashTable*)ce->inheritance_cache;
 3774|      0|		zend_class_entry *new_ce;
 3775|       |
 3776|      0|		ce->inheritance_cache = NULL;
 3777|      0|		new_ce = zend_inheritance_cache_add(ce, proto, parent, traits_and_interfaces, ht);
 3778|      0|		if (new_ce) {
  ------------------
  |  Branch (3778:7): [True: 0, False: 0]
  ------------------
 3779|      0|			zv = zend_hash_find_known_hash(CG(class_table), key);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3780|      0|			ce = new_ce;
 3781|      0|			Z_CE_P(zv) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3782|      0|		}
 3783|      0|		if (ht) {
  ------------------
  |  Branch (3783:7): [True: 0, False: 0]
  ------------------
 3784|      0|			zend_hash_destroy(ht);
 3785|      0|			FREE_HASHTABLE(ht);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3786|      0|		}
 3787|      0|	}
 3788|       |
 3789|    227|	if (!orig_record_errors) {
  ------------------
  |  Branch (3789:6): [True: 197, False: 30]
  ------------------
 3790|    197|		zend_emit_recorded_errors();
 3791|    197|		zend_free_recorded_errors();
 3792|    197|	}
 3793|    227|	if (traits_and_interfaces) {
  ------------------
  |  Branch (3793:6): [True: 189, False: 38]
  ------------------
 3794|    189|		free_alloca(traits_and_interfaces, use_heap);
  ------------------
  |  |  248|    189|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|    189|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    189|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    189|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    189|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    189|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3795|    189|	}
 3796|       |
 3797|    227|	if (ZSTR_HAS_CE_CACHE(ce->name)) {
  ------------------
  |  |  862|    227|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|    227|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    227|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|    227|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|    227|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 227]
  |  |  ------------------
  ------------------
 3798|      0|		ZSTR_SET_CE_CACHE(ce->name, ce);
  ------------------
  |  |  864|      0|#define ZSTR_SET_CE_CACHE(s, ce)	ZSTR_SET_CE_CACHE_EX(s, ce, 1)
  |  |  ------------------
  |  |  |  |  871|      0|#define ZSTR_SET_CE_CACHE_EX(s, ce, validate) do { \
  |  |  |  |  872|      0|		if (!(validate) || ZSTR_VALID_CE_CACHE(s)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (872:7): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  873|      0|			ZEND_ASSERT((validate) || ZSTR_VALID_CE_CACHE(s)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  874|      0|			SET_CE_CACHE(GC_REFCOUNT(s), ce); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  881|      0|#define SET_CE_CACHE(ce_cache, ce) do { \
  |  |  |  |  |  |  882|      0|		*((zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache)) = ce; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  883|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (883:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  875|      0|		} \
  |  |  |  |  876|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (876:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3798:3): [True: 0, Folded]
  |  Branch (3798:3): [True: 0, False: 0]
  |  Branch (3798:3): [True: 0, Folded]
  |  Branch (3798:3): [True: 0, False: 0]
  ------------------
 3799|      0|	}
 3800|       |
 3801|    227|	return ce;
 3802|    227|}
zend_try_early_bind:
 3898|    218|{
 3899|    218|	inheritance_status status;
 3900|    218|	zend_class_entry *proto = NULL;
 3901|    218|	zend_class_entry *orig_linking_class;
 3902|       |
 3903|    218|	if (ce->ce_flags & ZEND_ACC_LINKED) {
  ------------------
  |  |  287|    218|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (3903:6): [True: 0, False: 218]
  ------------------
 3904|      0|		ZEND_ASSERT(ce->parent == NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3904:3): [True: 0, False: 0]
  |  Branch (3904:3): [True: 0, False: 0]
  ------------------
 3905|      0|		if (UNEXPECTED(!register_early_bound_ce(delayed_early_binding, lcname, ce))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3906|      0|			return NULL;
 3907|      0|		}
 3908|      0|		zend_observer_class_linked_notify(ce, lcname);
 3909|      0|		return ce;
 3910|      0|	}
 3911|       |
 3912|    218|	uint32_t is_cacheable = ce->ce_flags & ZEND_ACC_IMMUTABLE;
  ------------------
  |  |  241|    218|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
 3913|    218|	UPDATE_IS_CACHEABLE(parent_ce);
  ------------------
  |  | 3473|    218|# define UPDATE_IS_CACHEABLE(ce) do { \
  |  | 3474|    218|			if ((ce)->type == ZEND_USER_CLASS) { \
  |  |  ------------------
  |  |  |  Branch (3474:8): [True: 185, False: 33]
  |  |  ------------------
  |  | 3475|    185|				is_cacheable &= (ce)->ce_flags; \
  |  | 3476|    185|			} \
  |  | 3477|    218|		} while (0)
  |  |  ------------------
  |  |  |  Branch (3477:12): [Folded, False: 218]
  |  |  ------------------
  ------------------
 3914|    218|	if (is_cacheable) {
  ------------------
  |  Branch (3914:6): [True: 0, False: 218]
  ------------------
 3915|      0|		if (zend_inheritance_cache_get && zend_inheritance_cache_add) {
  ------------------
  |  Branch (3915:7): [True: 0, False: 0]
  |  Branch (3915:37): [True: 0, False: 0]
  ------------------
 3916|      0|			zend_class_entry *ret = zend_inheritance_cache_get(ce, parent_ce, NULL);
 3917|      0|			if (ret) {
  ------------------
  |  Branch (3917:8): [True: 0, False: 0]
  ------------------
 3918|      0|				if (UNEXPECTED(!register_early_bound_ce(delayed_early_binding, lcname, ret))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3919|      0|					return NULL;
 3920|      0|				}
 3921|      0|				zend_observer_class_linked_notify(ret, lcname);
 3922|      0|				return ret;
 3923|      0|			}
 3924|      0|		} else {
 3925|      0|			is_cacheable = 0;
 3926|      0|		}
 3927|      0|		proto = ce;
 3928|      0|	}
 3929|       |
 3930|    218|	orig_linking_class = CG(current_linking_class);
  ------------------
  |  |   35|    218|# define CG(v) (compiler_globals.v)
  ------------------
 3931|    218|	CG(current_linking_class) = NULL;
  ------------------
  |  |   35|    218|# define CG(v) (compiler_globals.v)
  ------------------
 3932|    218|	status = zend_can_early_bind(ce, parent_ce);
 3933|    218|	CG(current_linking_class) = orig_linking_class;
  ------------------
  |  |   35|    218|# define CG(v) (compiler_globals.v)
  ------------------
 3934|    218|	if (EXPECTED(status != INHERITANCE_UNRESOLVED)) {
  ------------------
  |  |  456|    218|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 194, False: 24]
  |  |  ------------------
  ------------------
 3935|    194|		if (ce->ce_flags & ZEND_ACC_IMMUTABLE) {
  ------------------
  |  |  241|    194|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (3935:7): [True: 0, False: 194]
  ------------------
 3936|       |			/* Lazy class loading */
 3937|      0|			ce = zend_lazy_class_load(ce);
 3938|    194|		} else if (ce->ce_flags & ZEND_ACC_FILE_CACHED) {
  ------------------
  |  |  338|    194|#define ZEND_ACC_FILE_CACHED             (1 << 27) /*  X  |     |     |     */
  ------------------
  |  Branch (3938:14): [True: 0, False: 194]
  ------------------
 3939|       |			/* Lazy class loading */
 3940|      0|			ce = zend_lazy_class_load(ce);
 3941|      0|			ce->ce_flags &= ~ZEND_ACC_FILE_CACHED;
  ------------------
  |  |  338|      0|#define ZEND_ACC_FILE_CACHED             (1 << 27) /*  X  |     |     |     */
  ------------------
 3942|      0|		}
 3943|       |
 3944|    194|		if (UNEXPECTED(!register_early_bound_ce(delayed_early_binding, lcname, ce))) {
  ------------------
  |  |  457|    194|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 194]
  |  |  ------------------
  ------------------
 3945|      0|			return NULL;
 3946|      0|		}
 3947|       |
 3948|    194|		orig_linking_class = CG(current_linking_class);
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
 3949|    194|		CG(current_linking_class) = is_cacheable ? ce : NULL;
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3949:31): [True: 0, False: 194]
  ------------------
 3950|       |
 3951|    194|		bool orig_record_errors = EG(record_errors);
  ------------------
  |  |   45|    194|# define EG(v) (executor_globals.v)
  ------------------
 3952|       |
 3953|    194|		zend_try{
  ------------------
  |  |  276|    194|	{															\
  |  |  277|    194|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|    194|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|    194|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|    194|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|    194|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|    194|																\
  |  |  280|    194|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|    194|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|    194|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|    194|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 194, False: 0]
  |  |  ------------------
  ------------------
 3954|    194|			CG(zend_lineno) = ce->info.user.line_start;
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
 3955|       |
 3956|    194|			if (!orig_record_errors) {
  ------------------
  |  Branch (3956:8): [True: 4, False: 190]
  ------------------
 3957|      4|				zend_begin_record_errors();
 3958|      4|			}
 3959|       |
 3960|       |#ifdef ZEND_OPCACHE_SHM_REATTACHMENT
 3961|       |			zend_link_hooked_object_iter(ce);
 3962|       |#endif
 3963|       |
 3964|    194|			zend_do_inheritance_ex(ce, parent_ce, status == INHERITANCE_SUCCESS);
 3965|    194|			if (parent_ce && parent_ce->num_interfaces) {
  ------------------
  |  Branch (3965:8): [True: 127, False: 67]
  |  Branch (3965:21): [True: 18, False: 109]
  ------------------
 3966|     18|				zend_do_inherit_interfaces(ce, parent_ce);
 3967|     18|			}
 3968|    194|			zend_build_properties_info_table(ce);
 3969|    194|			if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  291|    194|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  281|    194|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  282|    194|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  234|    194|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  291|    194|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
  |  Branch (3969:8): [True: 3, False: 191]
  ------------------
 3970|      3|				zend_verify_abstract_class(ce);
 3971|      3|			}
 3972|    194|			zend_inheritance_check_override(ce);
 3973|    194|			ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_UNRESOLVED_VARIANCE));
  ------------------
  |  |  112|    194|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3973:4): [True: 0, False: 194]
  |  Branch (3973:4): [True: 121, False: 73]
  ------------------
 3974|    194|			ce->ce_flags |= ZEND_ACC_LINKED;
  ------------------
  |  |  287|    121|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
 3975|       |
 3976|    121|			CG(current_linking_class) = orig_linking_class;
  ------------------
  |  |   35|    121|# define CG(v) (compiler_globals.v)
  ------------------
 3977|    121|		} zend_catch {
  ------------------
  |  |  283|    121|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|    121|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|    121|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|     73|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|     73|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (3977:5): [True: 0, False: 121]
  |  Branch (3977:5): [True: 121, False: 0]
  |  Branch (3977:5): [True: 0, False: 0]
  |  Branch (3977:5): [True: 73, False: 18.4E]
  ------------------
 3978|     73|			if (!orig_record_errors) {
  ------------------
  |  Branch (3978:8): [True: 0, False: 73]
  ------------------
 3979|      0|				EG(record_errors) = false;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3980|      0|				zend_free_recorded_errors();
 3981|      0|			}
 3982|     73|			zend_bailout();
  ------------------
  |  |  273|     73|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
 3983|    121|		} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|    194|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|    121|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|    121|	}
  ------------------
 3984|       |
 3985|    121|		if (is_cacheable) {
  ------------------
  |  Branch (3985:7): [True: 0, False: 121]
  ------------------
 3986|      0|			HashTable *ht = (HashTable*)ce->inheritance_cache;
 3987|      0|			zend_class_entry *new_ce;
 3988|       |
 3989|      0|			ce->inheritance_cache = NULL;
 3990|      0|			new_ce = zend_inheritance_cache_add(ce, proto, parent_ce, NULL, ht);
 3991|      0|			if (new_ce) {
  ------------------
  |  Branch (3991:8): [True: 0, False: 0]
  ------------------
 3992|      0|				zval *zv = zend_hash_find_known_hash(CG(class_table), lcname);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3993|      0|				ce = new_ce;
 3994|      0|				Z_CE_P(zv) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3995|      0|			}
 3996|      0|			if (ht) {
  ------------------
  |  Branch (3996:8): [True: 0, False: 0]
  ------------------
 3997|      0|				zend_hash_destroy(ht);
 3998|      0|				FREE_HASHTABLE(ht);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3999|      0|			}
 4000|      0|		}
 4001|       |
 4002|    121|		if (!orig_record_errors) {
  ------------------
  |  Branch (4002:7): [True: 4, False: 117]
  ------------------
 4003|      4|			zend_emit_recorded_errors();
 4004|      4|			zend_free_recorded_errors();
 4005|      4|		}
 4006|       |
 4007|    121|		if (ZSTR_HAS_CE_CACHE(ce->name)) {
  ------------------
  |  |  862|    121|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|    121|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    121|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|    121|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|    121|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 121]
  |  |  ------------------
  ------------------
 4008|      0|			ZSTR_SET_CE_CACHE(ce->name, ce);
  ------------------
  |  |  864|      0|#define ZSTR_SET_CE_CACHE(s, ce)	ZSTR_SET_CE_CACHE_EX(s, ce, 1)
  |  |  ------------------
  |  |  |  |  871|      0|#define ZSTR_SET_CE_CACHE_EX(s, ce, validate) do { \
  |  |  |  |  872|      0|		if (!(validate) || ZSTR_VALID_CE_CACHE(s)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (872:7): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  873|      0|			ZEND_ASSERT((validate) || ZSTR_VALID_CE_CACHE(s)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  874|      0|			SET_CE_CACHE(GC_REFCOUNT(s), ce); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  881|      0|#define SET_CE_CACHE(ce_cache, ce) do { \
  |  |  |  |  |  |  882|      0|		*((zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache)) = ce; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  883|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (883:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  875|      0|		} \
  |  |  |  |  876|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (876:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4008:4): [True: 0, Folded]
  |  Branch (4008:4): [True: 0, False: 0]
  |  Branch (4008:4): [True: 0, Folded]
  |  Branch (4008:4): [True: 0, False: 0]
  ------------------
 4009|      0|		}
 4010|    121|		zend_observer_class_linked_notify(ce, lcname);
 4011|       |
 4012|    121|		return ce;
 4013|    121|	}
 4014|     24|	return NULL;
 4015|    218|}
zend_inheritance.c:zend_perform_covariant_type_check:
  676|  1.14k|{
  677|  1.14k|	ZEND_ASSERT(ZEND_TYPE_IS_SET(fe_type) && ZEND_TYPE_IS_SET(proto_type));
  ------------------
  |  |  112|  1.14k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (677:2): [True: 0, False: 1.14k]
  |  Branch (677:2): [True: 0, False: 0]
  |  Branch (677:2): [True: 1.14k, False: 0]
  |  Branch (677:2): [True: 1.14k, False: 0]
  ------------------
  678|       |
  679|       |	/* Apart from void, everything is trivially covariant to the mixed type.
  680|       |	 * Handle this case separately to ensure it never requires class loading. */
  681|  1.14k|	if (ZEND_TYPE_PURE_MASK(proto_type) == MAY_BE_ANY &&
  ------------------
  |  |  264|  1.14k|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|  1.14k|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_PURE_MASK(proto_type) == MAY_BE_ANY &&
  ------------------
  |  |   34|  2.28k|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|  1.14k|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|  1.14k|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|  1.14k|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|  1.14k|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|  1.14k|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|  1.14k|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|  1.14k|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|  1.14k|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|  1.14k|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|  1.14k|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|  1.14k|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.14k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|  1.14k|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  1.14k|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|  1.14k|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  1.14k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|  1.14k|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|  1.14k|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (681:6): [True: 124, False: 1.01k]
  ------------------
  682|    124|			!ZEND_TYPE_CONTAINS_CODE(fe_type, IS_VOID)) {
  ------------------
  |  |  273|    124|	(((t).type_mask & (1u << (code))) != 0)
  ------------------
  |  Branch (682:4): [True: 122, False: 2]
  ------------------
  683|    122|		return INHERITANCE_SUCCESS;
  684|    122|	}
  685|       |
  686|       |	/* Builtin types may be removed, but not added */
  687|  1.01k|	uint32_t fe_type_mask = ZEND_TYPE_PURE_MASK(fe_type);
  ------------------
  |  |  264|  1.01k|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|  1.01k|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
  688|  1.01k|	uint32_t proto_type_mask = ZEND_TYPE_PURE_MASK(proto_type);
  ------------------
  |  |  264|  1.01k|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|  1.01k|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
  689|  1.01k|	uint32_t added_types = fe_type_mask & ~proto_type_mask;
  690|  1.01k|	if (added_types) {
  ------------------
  |  Branch (690:6): [True: 50, False: 968]
  ------------------
  691|     50|		if ((added_types & MAY_BE_STATIC)
  ------------------
  |  |   42|     50|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|     50|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  |  Branch (691:7): [True: 0, False: 50]
  ------------------
  692|      0|				&& zend_type_permits_self(proto_type, proto_scope, fe_scope)) {
  ------------------
  |  Branch (692:8): [True: 0, False: 0]
  ------------------
  693|       |			/* Replacing type that accepts self with static is okay */
  694|      0|			added_types &= ~MAY_BE_STATIC;
  ------------------
  |  |   42|      0|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|      0|#define IS_STATIC					15
  |  |  ------------------
  ------------------
  695|      0|		}
  696|       |
  697|     50|		if (added_types == MAY_BE_NEVER) {
  ------------------
  |  |   41|     50|#define MAY_BE_NEVER                (1 << IS_NEVER)
  |  |  ------------------
  |  |  |  |  626|     50|#define IS_NEVER					17
  |  |  ------------------
  ------------------
  |  Branch (697:7): [True: 0, False: 50]
  ------------------
  698|       |			/* never is the bottom type */
  699|      0|			return INHERITANCE_SUCCESS;
  700|      0|		}
  701|       |
  702|     50|		if (added_types) {
  ------------------
  |  Branch (702:7): [True: 50, False: 0]
  ------------------
  703|       |			/* Otherwise adding new types is illegal */
  704|     50|			return INHERITANCE_ERROR;
  705|     50|		}
  706|     50|	}
  707|       |
  708|    968|	inheritance_status early_exit_status;
  709|    968|	bool have_unresolved = false;
  710|       |
  711|    968|	if (ZEND_TYPE_IS_INTERSECTION(fe_type)) {
  ------------------
  |  |  172|    968|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|    968|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 21, False: 947]
  |  |  ------------------
  ------------------
  712|     21|		early_exit_status =
  713|     21|			ZEND_TYPE_IS_INTERSECTION(proto_type) ? INHERITANCE_ERROR : INHERITANCE_SUCCESS;
  ------------------
  |  |  172|     21|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|     21|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 9, False: 12]
  |  |  ------------------
  ------------------
  714|     21|		inheritance_status status = zend_is_intersection_subtype_of_type(
  715|     21|			fe_scope, fe_type, proto_scope, proto_type);
  716|       |
  717|     21|		if (status == early_exit_status) {
  ------------------
  |  Branch (717:7): [True: 3, False: 18]
  ------------------
  718|      3|			return status;
  719|      3|		}
  720|     18|		if (status == INHERITANCE_UNRESOLVED) {
  ------------------
  |  Branch (720:7): [True: 10, False: 8]
  ------------------
  721|     10|			have_unresolved = true;
  722|     10|		}
  723|    947|	} else {
  724|       |		/* U_1|...|U_n < V_1|...|V_m if forall U_i. exists V_j. U_i < V_j.
  725|       |		 * U_1|...|U_n < V_1&...&V_m if forall U_i. forall V_j. U_i < V_j.
  726|       |		 * We need to iterate over fe_type (U_i) first and the logic is independent of
  727|       |		 * whether proto_type is a union or intersection (only the inner check differs). */
  728|    947|		early_exit_status = INHERITANCE_ERROR;
  729|    947|		const zend_type *single_type;
  730|  1.92k|		ZEND_TYPE_FOREACH(fe_type, single_type) {
  ------------------
  |  |  214|    947|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|    947|	const zend_type *_cur, *_end; \
  |  |  216|    947|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|    947|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    947|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 34, False: 913]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|     34|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|     34|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|     34|		_cur = _list->types; \
  |  |  219|     34|		_end = _cur + _list->num_types; \
  |  |  220|    913|	} else { \
  |  |  221|    913|		_cur = &(type); \
  |  |  222|    913|		_end = _cur + 1; \
  |  |  223|    913|	} \
  |  |  224|    980|	do { \
  |  |  225|    980|		type_ptr = _cur;
  ------------------
  731|  1.92k|			inheritance_status status;
  732|       |			/* Union has an intersection type as it's member */
  733|  1.92k|			if (ZEND_TYPE_IS_INTERSECTION(*single_type)) {
  ------------------
  |  |  172|    980|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|    980|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 17, False: 963]
  |  |  ------------------
  ------------------
  734|     17|				status = zend_is_intersection_subtype_of_type(
  735|     17|					fe_scope, *single_type, proto_scope, proto_type);
  736|    963|			} else {
  737|    963|				zend_string *fe_class_name = get_class_from_type(fe_scope, *single_type);
  738|    963|				if (!fe_class_name) {
  ------------------
  |  Branch (738:9): [True: 748, False: 215]
  ------------------
  739|    748|					continue;
  740|    748|				}
  741|       |
  742|    215|				status = zend_is_class_subtype_of_type(
  743|    215|					fe_scope, fe_class_name, proto_scope, proto_type);
  744|    215|			}
  745|       |
  746|    232|			if (status == early_exit_status) {
  ------------------
  |  Branch (746:8): [True: 18, False: 214]
  ------------------
  747|     18|				return status;
  748|     18|			}
  749|    214|			if (status == INHERITANCE_UNRESOLVED) {
  ------------------
  |  Branch (749:8): [True: 88, False: 126]
  ------------------
  750|     88|				have_unresolved = true;
  751|     88|			}
  752|    214|		} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|    962|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 33, False: 929]
  |  |  ------------------
  |  |  244|    947|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 929]
  |  |  ------------------
  ------------------
  753|    947|	}
  754|       |
  755|    947|	if (!have_unresolved) {
  ------------------
  |  Branch (755:6): [True: 853, False: 94]
  ------------------
  756|    853|		return early_exit_status == INHERITANCE_ERROR ? INHERITANCE_SUCCESS : INHERITANCE_ERROR;
  ------------------
  |  Branch (756:10): [True: 848, False: 5]
  ------------------
  757|    853|	}
  758|       |
  759|     94|	register_unresolved_classes(fe_scope, fe_type);
  760|     94|	register_unresolved_classes(proto_scope, proto_type);
  761|     94|	return INHERITANCE_UNRESOLVED;
  762|    947|}
zend_inheritance.c:resolve_class_name:
  227|    928|static zend_string *resolve_class_name(const zend_class_entry *scope, zend_string *name) {
  228|    928|	ZEND_ASSERT(scope);
  ------------------
  |  |  112|    928|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (228:2): [True: 0, False: 928]
  |  Branch (228:2): [True: 928, False: 0]
  ------------------
  229|    928|	if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_PARENT)) && scope->parent) {
  ------------------
  |  |  401|  1.85k|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    928|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  1.85k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     61|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     61|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     61|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     61|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 61, False: 867]
  |  |  |  Branch (401:35): [True: 0, False: 61]
  |  |  ------------------
  ------------------
  |  Branch (229:66): [True: 0, False: 0]
  ------------------
  230|      0|		if (scope->ce_flags & ZEND_ACC_RESOLVED_PARENT) {
  ------------------
  |  |  314|      0|#define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
  ------------------
  |  Branch (230:7): [True: 0, False: 0]
  ------------------
  231|      0|			return scope->parent->name;
  232|      0|		} else {
  233|      0|			return scope->parent_name;
  234|      0|		}
  235|    928|	} else if (zend_string_equals_ci(name, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  |  401|    928|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    928|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|  1.85k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 28, False: 900]
  |  |  |  Branch (401:35): [True: 10, False: 18]
  |  |  ------------------
  ------------------
  236|     10|		return scope->name;
  237|    918|	} else {
  238|    918|		return name;
  239|    918|	}
  240|    928|}
zend_inheritance.c:lookup_class:
  307|    548|static zend_class_entry *lookup_class(zend_class_entry *scope, zend_string *name) {
  308|       |	return lookup_class_ex(scope, name, /* register_unresolved */ false);
  309|    548|}
zend_inheritance.c:lookup_class_ex:
  262|    811|		zend_class_entry *scope, zend_string *name, bool register_unresolved) {
  263|    811|	zend_class_entry *ce;
  264|    811|	bool in_preload = CG(compiler_options) & ZEND_COMPILE_PRELOAD;
  ------------------
  |  |   35|    811|# define CG(v) (compiler_globals.v)
  ------------------
              	bool in_preload = CG(compiler_options) & ZEND_COMPILE_PRELOAD;
  ------------------
  |  | 1304|    811|#define ZEND_COMPILE_PRELOAD                    (1<<15)
  ------------------
  265|       |
  266|    811|	if (UNEXPECTED(!EG(active) && !in_preload)) {
  ------------------
  |  |  457|    855|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 44, False: 767]
  |  |  |  Branch (457:52): [True: 44, False: 767]
  |  |  |  Branch (457:52): [True: 44, False: 0]
  |  |  ------------------
  ------------------
  267|     44|		zend_string *lc_name = zend_string_tolower(name);
  268|       |
  269|     44|		ce = zend_hash_find_ptr(CG(class_table), lc_name);
  ------------------
  |  |   35|     44|# define CG(v) (compiler_globals.v)
  ------------------
  270|       |
  271|     44|		zend_string_release(lc_name);
  272|       |
  273|     44|		if (register_unresolved && !ce) {
  ------------------
  |  Branch (273:7): [True: 0, False: 44]
  |  Branch (273:30): [True: 0, False: 0]
  ------------------
  274|      0|			zend_error_noreturn(
  275|      0|				E_COMPILE_ERROR, "%s must be registered before %s",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  276|      0|				ZSTR_VAL(name), ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(name), ZSTR_VAL(scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  277|      0|	    }
  278|       |
  279|     44|		return ce;
  280|     44|	}
  281|       |
  282|    767|	ce = zend_lookup_class_ex(
  283|    767|	    name, NULL, ZEND_FETCH_CLASS_ALLOW_UNLINKED | ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1053|    767|#define ZEND_FETCH_CLASS_ALLOW_UNLINKED 0x0400
  ------------------
              	    name, NULL, ZEND_FETCH_CLASS_ALLOW_UNLINKED | ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|    767|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  284|       |
  285|    767|	if (!CG(in_compilation) || in_preload) {
  ------------------
  |  |   35|  1.53k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (285:6): [True: 447, False: 320]
  |  Branch (285:29): [True: 0, False: 320]
  ------------------
  286|    447|		if (ce) {
  ------------------
  |  Branch (286:7): [True: 215, False: 232]
  ------------------
  287|    215|			return ce;
  288|    215|		}
  289|       |
  290|    232|		if (register_unresolved) {
  ------------------
  |  Branch (290:7): [True: 89, False: 143]
  ------------------
  291|     89|			register_unresolved_class(name);
  292|     89|		}
  293|    320|	} else {
  294|    320|		if (ce && class_visible(ce)) {
  ------------------
  |  Branch (294:7): [True: 168, False: 152]
  |  Branch (294:13): [True: 168, False: 0]
  ------------------
  295|    168|			return ce;
  296|    168|		}
  297|       |
  298|       |		/* The current class may not be registered yet, so check for it explicitly. */
  299|    152|		if (zend_string_equals_ci(scope->name, name)) {
  ------------------
  |  |  401|    152|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    152|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    304|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     66|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     66|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     66|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     66|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 66, False: 86]
  |  |  |  Branch (401:35): [True: 6, False: 60]
  |  |  ------------------
  ------------------
  300|      6|			return scope;
  301|      6|		}
  302|    152|	}
  303|       |
  304|    378|	return NULL;
  305|    767|}
zend_inheritance.c:register_unresolved_class:
  252|     89|static zend_always_inline void register_unresolved_class(zend_string *name) {
  253|       |	/* We'll autoload this class and process delayed variance obligations later. */
  254|     89|	if (!CG(delayed_autoloads)) {
  ------------------
  |  |   35|     89|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (254:6): [True: 24, False: 65]
  ------------------
  255|     24|		ALLOC_HASHTABLE(CG(delayed_autoloads));
  ------------------
  |  |  232|     24|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     24|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|     24|		zend_hash_init(CG(delayed_autoloads), 0, NULL, NULL, 0);
  ------------------
  |  |  111|     24|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  257|     24|	}
  258|     89|	zend_hash_add_empty_element(CG(delayed_autoloads), name);
  ------------------
  |  |   35|     89|# define CG(v) (compiler_globals.v)
  ------------------
  259|     89|}
zend_inheritance.c:class_visible:
  242|    168|static bool class_visible(const zend_class_entry *ce) {
  243|    168|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (243:6): [True: 21, False: 147]
  ------------------
  244|     21|		return !(CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES);
  ------------------
  |  |   35|     21|# define CG(v) (compiler_globals.v)
  ------------------
              		return !(CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES);
  ------------------
  |  | 1274|     21|#define ZEND_COMPILE_IGNORE_INTERNAL_CLASSES    (1<<4)
  ------------------
  245|    147|	} else {
  246|    147|		ZEND_ASSERT(ce->type == ZEND_USER_CLASS);
  ------------------
  |  |  112|    147|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (246:3): [True: 0, False: 147]
  |  Branch (246:3): [True: 147, False: 0]
  ------------------
  247|    147|		return !(CG(compiler_options) & ZEND_COMPILE_IGNORE_OTHER_FILES)
  ------------------
  |  |   35|    147|# define CG(v) (compiler_globals.v)
  ------------------
              		return !(CG(compiler_options) & ZEND_COMPILE_IGNORE_OTHER_FILES)
  ------------------
  |  | 1298|    147|#define ZEND_COMPILE_IGNORE_OTHER_FILES			(1<<13)
  ------------------
  |  Branch (247:10): [True: 147, False: 0]
  ------------------
  248|      0|			|| ce->info.user.filename == CG(compiled_filename);
  ------------------
  |  |   35|    147|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (248:7): [True: 0, False: 0]
  ------------------
  249|    147|	}
  250|    168|}
zend_inheritance.c:unlinked_instanceof:
  312|    103|static bool unlinked_instanceof(const zend_class_entry *ce1, const zend_class_entry *ce2) {
  313|    103|	if (ce1 == ce2) {
  ------------------
  |  Branch (313:6): [True: 9, False: 94]
  ------------------
  314|      9|		return true;
  315|      9|	}
  316|       |
  317|     94|	if (ce1->ce_flags & ZEND_ACC_LINKED) {
  ------------------
  |  |  287|     94|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (317:6): [True: 88, False: 6]
  ------------------
  318|     88|		return instanceof_function(ce1, ce2);
  319|     88|	}
  320|       |
  321|      6|	if (ce1->parent) {
  ------------------
  |  Branch (321:6): [True: 6, False: 0]
  ------------------
  322|      6|		const zend_class_entry *parent_ce;
  323|      6|		if (ce1->ce_flags & ZEND_ACC_RESOLVED_PARENT) {
  ------------------
  |  |  314|      6|#define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
  ------------------
  |  Branch (323:7): [True: 4, False: 2]
  ------------------
  324|      4|			parent_ce = ce1->parent;
  325|      4|		} else {
  326|      2|			parent_ce = zend_lookup_class_ex(ce1->parent_name, NULL,
  327|      2|				ZEND_FETCH_CLASS_ALLOW_UNLINKED | ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1053|      2|#define ZEND_FETCH_CLASS_ALLOW_UNLINKED 0x0400
  ------------------
              				ZEND_FETCH_CLASS_ALLOW_UNLINKED | ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|      2|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  328|      2|		}
  329|       |
  330|       |		/* It's not sufficient to only check the parent chain itself, as need to do a full
  331|       |		 * recursive instanceof in case the parent interfaces haven't been copied yet. */
  332|      6|		if (parent_ce && unlinked_instanceof(parent_ce, ce2)) {
  ------------------
  |  Branch (332:7): [True: 6, False: 0]
  |  Branch (332:20): [True: 1, False: 5]
  ------------------
  333|      1|			return true;
  334|      1|		}
  335|      6|	}
  336|       |
  337|      5|	if (ce1->num_interfaces) {
  ------------------
  |  Branch (337:6): [True: 3, False: 2]
  ------------------
  338|      3|		uint32_t i;
  339|      3|		if (ce1->ce_flags & ZEND_ACC_RESOLVED_INTERFACES) {
  ------------------
  |  |  317|      3|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
  |  Branch (339:7): [True: 0, False: 3]
  ------------------
  340|       |			/* Unlike the normal instanceof_function(), we have to perform a recursive
  341|       |			 * check here, as the parent interfaces might not have been fully copied yet. */
  342|      0|			for (i = 0; i < ce1->num_interfaces; i++) {
  ------------------
  |  Branch (342:16): [True: 0, False: 0]
  ------------------
  343|      0|				if (unlinked_instanceof(ce1->interfaces[i], ce2)) {
  ------------------
  |  Branch (343:9): [True: 0, False: 0]
  ------------------
  344|      0|					return true;
  345|      0|				}
  346|      0|			}
  347|      3|		} else {
  348|      5|			for (i = 0; i < ce1->num_interfaces; i++) {
  ------------------
  |  Branch (348:16): [True: 3, False: 2]
  ------------------
  349|      3|				const zend_class_entry *ce = zend_lookup_class_ex(
  350|      3|					ce1->interface_names[i].name, ce1->interface_names[i].lc_name,
  351|      3|					ZEND_FETCH_CLASS_ALLOW_UNLINKED | ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1053|      3|#define ZEND_FETCH_CLASS_ALLOW_UNLINKED 0x0400
  ------------------
              					ZEND_FETCH_CLASS_ALLOW_UNLINKED | ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|      3|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
  352|       |				/* Avoid recursing if class implements itself. */
  353|      3|				if (ce && ce != ce1 && unlinked_instanceof(ce, ce2)) {
  ------------------
  |  Branch (353:9): [True: 3, False: 0]
  |  Branch (353:15): [True: 1, False: 2]
  |  Branch (353:28): [True: 1, False: 0]
  ------------------
  354|      1|					return true;
  355|      1|				}
  356|      3|			}
  357|      3|		}
  358|      3|	}
  359|       |
  360|      4|	return false;
  361|      5|}
zend_inheritance.c:zend_is_intersection_subtype_of_type:
  610|     50|{
  611|     50|	bool have_unresolved = false;
  612|     50|	const zend_type *single_type;
  613|     50|	uint32_t proto_type_mask = ZEND_TYPE_PURE_MASK(proto_type);
  ------------------
  |  |  264|     50|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     50|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
  614|       |
  615|       |	/* Currently, for object type any class name would be allowed here.
  616|       |	 * We still perform a class lookup for forward-compatibility reasons,
  617|       |	 * as we may have named types in the future that are not classes
  618|       |	 * (such as typedefs). */
  619|     50|	if (proto_type_mask & MAY_BE_OBJECT) {
  ------------------
  |  |   32|     50|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|     50|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (619:6): [True: 3, False: 47]
  ------------------
  620|      9|		ZEND_TYPE_FOREACH(fe_type, single_type) {
  ------------------
  |  |  214|      3|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|      3|	const zend_type *_cur, *_end; \
  |  |  216|      3|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|      3|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      3|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|      3|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|      3|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|      3|		_cur = _list->types; \
  |  |  219|      3|		_end = _cur + _list->num_types; \
  |  |  220|      3|	} else { \
  |  |  221|      0|		_cur = &(type); \
  |  |  222|      0|		_end = _cur + 1; \
  |  |  223|      0|	} \
  |  |  224|      6|	do { \
  |  |  225|      6|		type_ptr = _cur;
  ------------------
  621|      9|			zend_string *fe_class_name = get_class_from_type(fe_scope, *single_type);
  622|      9|			if (!fe_class_name) {
  ------------------
  |  Branch (622:8): [True: 0, False: 6]
  ------------------
  623|      0|				continue;
  624|      0|			}
  625|      6|			zend_class_entry *fe_ce = lookup_class(fe_scope, fe_class_name);
  626|      6|			if (fe_ce) {
  ------------------
  |  Branch (626:8): [True: 0, False: 6]
  ------------------
  627|      0|				track_class_dependency(fe_ce, fe_class_name);
  628|      0|				return INHERITANCE_SUCCESS;
  629|      6|			} else {
  630|      6|				have_unresolved = true;
  631|      6|			}
  632|      6|		} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|      6|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 3, False: 3]
  |  |  ------------------
  |  |  244|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  633|      3|	}
  634|       |
  635|       |	/* U_1&...&U_n < V_1&...&V_m if forall V_j. exists U_i. U_i < V_j.
  636|       |	 * U_1&...&U_n < V_1|...|V_m if exists V_j. exists U_i. U_i < V_j.
  637|       |	 * As such, we need to iterate over proto_type (V_j) first and use a different
  638|       |	 * quantifier depending on whether fe_type is a union or an intersection. */
  639|     50|	inheritance_status early_exit_status =
  640|     50|		ZEND_TYPE_IS_INTERSECTION(proto_type) ? INHERITANCE_ERROR : INHERITANCE_SUCCESS;
  ------------------
  |  |  172|     50|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|     50|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 21, False: 29]
  |  |  ------------------
  ------------------
  641|    138|	ZEND_TYPE_FOREACH(proto_type, single_type) {
  ------------------
  |  |  214|     50|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|     50|	const zend_type *_cur, *_end; \
  |  |  216|     50|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|     50|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     50|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 39, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|     39|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|     39|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|     39|		_cur = _list->types; \
  |  |  219|     39|		_end = _cur + _list->num_types; \
  |  |  220|     39|	} else { \
  |  |  221|     11|		_cur = &(type); \
  |  |  222|     11|		_end = _cur + 1; \
  |  |  223|     11|	} \
  |  |  224|     88|	do { \
  |  |  225|     88|		type_ptr = _cur;
  ------------------
  642|    138|		inheritance_status status;
  643|       |
  644|    138|		if (ZEND_TYPE_IS_INTERSECTION(*single_type)) {
  ------------------
  |  |  172|     88|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|     88|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 12, False: 76]
  |  |  ------------------
  ------------------
  645|     12|			status = zend_is_intersection_subtype_of_type(
  646|     12|				fe_scope, fe_type, proto_scope, *single_type);
  647|     76|		} else {
  648|     76|			zend_string *proto_class_name = get_class_from_type(proto_scope, *single_type);
  649|     76|			if (!proto_class_name) {
  ------------------
  |  Branch (649:8): [True: 5, False: 71]
  ------------------
  650|      5|				continue;
  651|      5|			}
  652|       |
  653|     71|			zend_class_entry *proto_ce = NULL;
  654|     71|			status = zend_is_intersection_subtype_of_class(
  655|     71|				fe_scope, fe_type, proto_scope, proto_class_name, proto_ce);
  656|     71|		}
  657|       |
  658|     83|		if (status == early_exit_status) {
  ------------------
  |  Branch (658:7): [True: 9, False: 74]
  ------------------
  659|      9|			return status;
  660|      9|		}
  661|     74|		if (status == INHERITANCE_UNRESOLVED) {
  ------------------
  |  Branch (661:7): [True: 41, False: 33]
  ------------------
  662|     41|			have_unresolved = true;
  663|     41|		}
  664|     74|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|     79|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 38, False: 41]
  |  |  ------------------
  |  |  244|     50|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 41]
  |  |  ------------------
  ------------------
  665|       |
  666|     41|	if (have_unresolved) {
  ------------------
  |  Branch (666:6): [True: 29, False: 12]
  ------------------
  667|     29|		return INHERITANCE_UNRESOLVED;
  668|     29|	}
  669|       |
  670|     12|	return early_exit_status == INHERITANCE_ERROR ? INHERITANCE_SUCCESS : INHERITANCE_ERROR;
  ------------------
  |  Branch (670:9): [True: 6, False: 6]
  ------------------
  671|     41|}
zend_inheritance.c:track_class_dependency:
  386|     96|{
  387|     96|	HashTable *ht;
  388|       |
  389|     96|	ZEND_ASSERT(class_name);
  ------------------
  |  |  112|     96|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (389:2): [True: 0, False: 96]
  |  Branch (389:2): [True: 96, False: 0]
  ------------------
  390|     96|	if (!CG(current_linking_class) || ce == CG(current_linking_class)) {
  ------------------
  |  |   35|    192|# define CG(v) (compiler_globals.v)
  ------------------
              	if (!CG(current_linking_class) || ce == CG(current_linking_class)) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (390:6): [True: 96, False: 0]
  |  Branch (390:36): [True: 0, False: 0]
  ------------------
  391|     96|		return;
  392|     96|	} else if (zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_SELF))
  ------------------
  |  |  401|      0|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 0]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  393|      0|	        || zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  |  401|      0|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 0]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  394|      0|		return;
  395|      0|	}
  396|       |
  397|      0|#ifndef ZEND_WIN32
  398|       |	/* On non-Windows systems, internal classes are always the same,
  399|       |	 * so there is no need to explicitly track them. */
  400|      0|	if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (400:6): [True: 0, False: 0]
  ------------------
  401|      0|		return;
  402|      0|	}
  403|      0|#endif
  404|       |
  405|      0|	ht = (HashTable*)CG(current_linking_class)->inheritance_cache;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  406|       |
  407|      0|	if (!(ce->ce_flags & ZEND_ACC_IMMUTABLE)) {
  ------------------
  |  |  241|      0|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (407:6): [True: 0, False: 0]
  ------------------
  408|       |		// TODO: dependency on not-immutable class ???
  409|      0|		if (ht) {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			zend_hash_destroy(ht);
  411|      0|			FREE_HASHTABLE(ht);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  412|      0|			CG(current_linking_class)->inheritance_cache = NULL;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  413|      0|		}
  414|      0|		CG(current_linking_class)->ce_flags &= ~ZEND_ACC_CACHEABLE;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(current_linking_class)->ce_flags &= ~ZEND_ACC_CACHEABLE;
  ------------------
  |  |  331|      0|#define ZEND_ACC_CACHEABLE               (1 << 23) /*  X  |     |     |     */
  ------------------
  415|      0|		CG(current_linking_class) = NULL;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  416|      0|		return;
  417|      0|	}
  418|       |
  419|       |	/* Record dependency */
  420|      0|	if (!ht) {
  ------------------
  |  Branch (420:6): [True: 0, False: 0]
  ------------------
  421|      0|		ALLOC_HASHTABLE(ht);
  ------------------
  |  |  232|      0|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  422|      0|		zend_hash_init(ht, 0, NULL, NULL, 0);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  423|      0|		CG(current_linking_class)->inheritance_cache = (zend_inheritance_cache_entry*)ht;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  424|      0|	}
  425|      0|	zend_hash_add_ptr(ht, class_name, ce);
  426|      0|}
zend_inheritance.c:zend_is_intersection_subtype_of_class:
  432|     71|{
  433|     71|	ZEND_ASSERT(ZEND_TYPE_IS_INTERSECTION(fe_type));
  ------------------
  |  |  112|     71|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (433:2): [True: 0, False: 71]
  |  Branch (433:2): [True: 71, False: 0]
  ------------------
  434|     71|	bool have_unresolved = false;
  435|     71|	const zend_type *single_type;
  436|       |
  437|       |	/* Traverse the list of child types and check that at least one is
  438|       |	 * a subtype of the parent type being checked */
  439|    196|	ZEND_TYPE_FOREACH(fe_type, single_type) {
  ------------------
  |  |  214|     71|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|     71|	const zend_type *_cur, *_end; \
  |  |  216|     71|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|     71|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|     71|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 71, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|     71|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|     71|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|     71|		_cur = _list->types; \
  |  |  219|     71|		_end = _cur + _list->num_types; \
  |  |  220|     71|	} else { \
  |  |  221|      0|		_cur = &(type); \
  |  |  222|      0|		_end = _cur + 1; \
  |  |  223|      0|	} \
  |  |  224|    125|	do { \
  |  |  225|    125|		type_ptr = _cur;
  ------------------
  440|    196|		zend_class_entry *fe_ce;
  441|    196|		zend_string *fe_class_name = NULL;
  442|    196|		if (ZEND_TYPE_HAS_NAME(*single_type)) {
  ------------------
  |  |  160|    125|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|    125|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 125, False: 0]
  |  |  ------------------
  ------------------
  443|    125|			fe_class_name =
  444|    125|				resolve_class_name(fe_scope, ZEND_TYPE_NAME(*single_type));
  ------------------
  |  |  184|    125|	((zend_string *) (t).ptr)
  ------------------
  445|    125|			if (zend_string_equals_ci(fe_class_name, proto_class_name)) {
  ------------------
  |  |  401|    125|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    125|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    250|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    106|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    106|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    106|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    106|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 106, False: 19]
  |  |  |  Branch (401:35): [True: 33, False: 73]
  |  |  ------------------
  ------------------
  446|     33|				return INHERITANCE_SUCCESS;
  447|     33|			}
  448|       |
  449|     92|			if (!proto_ce) proto_ce = lookup_class(proto_scope, proto_class_name);
  ------------------
  |  Branch (449:8): [True: 80, False: 12]
  ------------------
  450|     92|			fe_ce = lookup_class(fe_scope, fe_class_name);
  451|     92|		} else {
  452|       |			/* standard type in an intersection type is impossible,
  453|       |			 * because it would be a fatal compile error */
  454|      0|			ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (454:4): [Folded, False: 0]
  |  Branch (454:4): [Folded, False: 0]
  ------------------
  455|      0|			continue;
  456|      0|		}
  457|       |
  458|     92|		if (!fe_ce || !proto_ce) {
  ------------------
  |  Branch (458:7): [True: 18, False: 74]
  |  Branch (458:17): [True: 40, False: 34]
  ------------------
  459|     58|			have_unresolved = true;
  460|     58|			continue;
  461|     58|		}
  462|     34|		if (unlinked_instanceof(fe_ce, proto_ce)) {
  ------------------
  |  Branch (462:7): [True: 0, False: 34]
  ------------------
  463|      0|			track_class_dependency(fe_ce, fe_class_name);
  464|      0|			track_class_dependency(proto_ce, proto_class_name);
  465|      0|			return INHERITANCE_SUCCESS;
  466|      0|		}
  467|     34|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|     92|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 54, False: 38]
  |  |  ------------------
  |  |  244|     71|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 38]
  |  |  ------------------
  ------------------
  468|       |
  469|     38|	return have_unresolved ? INHERITANCE_UNRESOLVED : INHERITANCE_ERROR;
  ------------------
  |  Branch (469:9): [True: 32, False: 6]
  ------------------
  470|     71|}
zend_inheritance.c:get_class_from_type:
  586|  1.04k|static zend_string *get_class_from_type(const zend_class_entry *scope, const zend_type single_type) {
  587|  1.04k|	if (ZEND_TYPE_HAS_NAME(single_type)) {
  ------------------
  |  |  160|  1.04k|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|  1.04k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 292, False: 753]
  |  |  ------------------
  ------------------
  588|    292|		return resolve_class_name(scope, ZEND_TYPE_NAME(single_type));
  ------------------
  |  |  184|    292|	((zend_string *) (t).ptr)
  ------------------
  589|    292|	}
  590|    753|	return NULL;
  591|  1.04k|}
zend_inheritance.c:zend_is_class_subtype_of_type:
  475|    235|		zend_class_entry *proto_scope, const zend_type proto_type) {
  476|    235|	zend_class_entry *fe_ce = NULL;
  477|    235|	bool have_unresolved = false;
  478|       |
  479|       |	/* If the parent has 'object' as a return type, any class satisfies the co-variant check */
  480|    235|	if (ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_OBJECT) {
  ------------------
  |  |  261|    235|	((t).type_mask)
  ------------------
              	if (ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_OBJECT) {
  ------------------
  |  |   32|    235|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|    235|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
  |  Branch (480:6): [True: 10, False: 225]
  ------------------
  481|       |		/* Currently, any class name would be allowed here. We still perform a class lookup
  482|       |		 * for forward-compatibility reasons, as we may have named types in the future that
  483|       |		 * are not classes (such as typedefs). */
  484|     10|		if (!fe_ce) fe_ce = lookup_class(fe_scope, fe_class_name);
  ------------------
  |  Branch (484:7): [True: 10, False: 0]
  ------------------
  485|     10|		if (!fe_ce) {
  ------------------
  |  Branch (485:7): [True: 5, False: 5]
  ------------------
  486|      5|			have_unresolved = true;
  487|      5|		} else {
  488|      5|			track_class_dependency(fe_ce, fe_class_name);
  489|      5|			return INHERITANCE_SUCCESS;
  490|      5|		}
  491|     10|	}
  492|       |
  493|       |	/* If the parent has 'callable' as a return type, then Closure satisfies the co-variant check */
  494|    230|	if (ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_CALLABLE) {
  ------------------
  |  |  261|    230|	((t).type_mask)
  ------------------
              	if (ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_CALLABLE) {
  ------------------
  |  |   39|    230|#define MAY_BE_CALLABLE             (1 << IS_CALLABLE)
  |  |  ------------------
  |  |  |  |  621|    230|#define IS_CALLABLE					12
  |  |  ------------------
  ------------------
  |  Branch (494:6): [True: 12, False: 218]
  ------------------
  495|     12|		if (!fe_ce) fe_ce = lookup_class(fe_scope, fe_class_name);
  ------------------
  |  Branch (495:7): [True: 12, False: 0]
  ------------------
  496|     12|		if (!fe_ce) {
  ------------------
  |  Branch (496:7): [True: 3, False: 9]
  ------------------
  497|      3|			have_unresolved = true;
  498|      9|		} else if (fe_ce == zend_ce_closure) {
  ------------------
  |  Branch (498:14): [True: 5, False: 4]
  ------------------
  499|      5|			track_class_dependency(fe_ce, fe_class_name);
  500|      5|			return INHERITANCE_SUCCESS;
  501|      5|		}
  502|     12|	}
  503|       |
  504|       |	/* If the parent has 'static' as a return type, then final classes could replace it with self */
  505|    225|	if ((ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_STATIC) && (fe_scope->ce_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  261|    225|	((t).type_mask)
  ------------------
              	if ((ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_STATIC) && (fe_scope->ce_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |   42|    225|#define MAY_BE_STATIC               (1 << IS_STATIC)
  |  |  ------------------
  |  |  |  |  624|    225|#define IS_STATIC					15
  |  |  ------------------
  ------------------
              	if ((ZEND_TYPE_FULL_MASK(proto_type) & MAY_BE_STATIC) && (fe_scope->ce_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (505:6): [True: 2, False: 223]
  |  Branch (505:59): [True: 0, False: 2]
  ------------------
  506|      0|		if (!fe_ce) fe_ce = lookup_class(fe_scope, fe_class_name);
  ------------------
  |  Branch (506:7): [True: 0, False: 0]
  ------------------
  507|      0|		if (!fe_ce) {
  ------------------
  |  Branch (507:7): [True: 0, False: 0]
  ------------------
  508|      0|			have_unresolved = true;
  509|      0|		} else if (fe_ce == fe_scope) {
  ------------------
  |  Branch (509:14): [True: 0, False: 0]
  ------------------
  510|      0|			track_class_dependency(fe_ce, fe_class_name);
  511|      0|			return INHERITANCE_SUCCESS;
  512|      0|		}
  513|      0|	}
  514|       |
  515|    225|	const zend_type *single_type;
  516|       |
  517|       |	/* Traverse the list of parent types and check if the current child (FE)
  518|       |	 * class is the subtype of at least one of them (union) or all of them (intersection). */
  519|    225|	bool is_intersection = ZEND_TYPE_IS_INTERSECTION(proto_type);
  ------------------
  |  |  172|    225|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|    225|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  ------------------
  520|    504|	ZEND_TYPE_FOREACH(proto_type, single_type) {
  ------------------
  |  |  214|    225|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|    225|	const zend_type *_cur, *_end; \
  |  |  216|    225|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|    225|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    225|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 61, False: 164]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|     61|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|     61|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|     61|		_cur = _list->types; \
  |  |  219|     61|		_end = _cur + _list->num_types; \
  |  |  220|    164|	} else { \
  |  |  221|    164|		_cur = &(type); \
  |  |  222|    164|		_end = _cur + 1; \
  |  |  223|    164|	} \
  |  |  224|    279|	do { \
  |  |  225|    279|		type_ptr = _cur;
  ------------------
  521|    504|		if (ZEND_TYPE_IS_INTERSECTION(*single_type)) {
  ------------------
  |  |  172|    279|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|    279|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 20, False: 259]
  |  |  ------------------
  ------------------
  522|     20|			inheritance_status subtype_status = zend_is_class_subtype_of_type(
  523|     20|				fe_scope, fe_class_name, proto_scope, *single_type);
  524|       |
  525|     20|			switch (subtype_status) {
  526|      4|				case INHERITANCE_ERROR:
  ------------------
  |  Branch (526:5): [True: 4, False: 16]
  ------------------
  527|      4|					if (is_intersection) {
  ------------------
  |  Branch (527:10): [True: 0, False: 4]
  ------------------
  528|      0|						return INHERITANCE_ERROR;
  529|      0|					}
  530|      4|					continue;
  531|     13|				case INHERITANCE_UNRESOLVED:
  ------------------
  |  Branch (531:5): [True: 13, False: 7]
  ------------------
  532|     13|					have_unresolved = true;
  533|     13|					continue;
  534|      3|				case INHERITANCE_SUCCESS:
  ------------------
  |  Branch (534:5): [True: 3, False: 17]
  ------------------
  535|      3|					if (!is_intersection) {
  ------------------
  |  Branch (535:10): [True: 3, False: 0]
  ------------------
  536|      3|						return INHERITANCE_SUCCESS;
  537|      3|					}
  538|      0|					continue;
  539|      0|				default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (539:5): [True: 0, False: 20]
  |  Branch (539:14): [Folded, False: 0]
  |  Branch (539:14): [Folded, False: 0]
  ------------------
  540|     20|			}
  541|     20|		}
  542|       |
  543|    259|		zend_class_entry *proto_ce;
  544|    259|		zend_string *proto_class_name = NULL;
  545|    259|		if (ZEND_TYPE_HAS_NAME(*single_type)) {
  ------------------
  |  |  160|    259|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|    259|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 248, False: 11]
  |  |  ------------------
  ------------------
  546|    248|			proto_class_name =
  547|    248|				resolve_class_name(proto_scope, ZEND_TYPE_NAME(*single_type));
  ------------------
  |  |  184|    248|	((zend_string *) (t).ptr)
  ------------------
  548|    248|			if (zend_string_equals_ci(fe_class_name, proto_class_name)) {
  ------------------
  |  |  401|    248|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    248|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    496|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    164|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    164|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|    164|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    164|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 164, False: 84]
  |  |  |  Branch (401:35): [True: 73, False: 91]
  |  |  ------------------
  ------------------
  549|     73|				if (!is_intersection) {
  ------------------
  |  Branch (549:9): [True: 69, False: 4]
  ------------------
  550|     69|					return INHERITANCE_SUCCESS;
  551|     69|				}
  552|      4|				continue;
  553|     73|			}
  554|       |
  555|    175|			if (!fe_ce) fe_ce = lookup_class(fe_scope, fe_class_name);
  ------------------
  |  Branch (555:8): [True: 173, False: 2]
  ------------------
  556|    175|			proto_ce = lookup_class(proto_scope, proto_class_name);
  557|    175|		} else {
  558|       |			/* standard type */
  559|     11|			ZEND_ASSERT(!is_intersection);
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (559:4): [True: 0, False: 11]
  |  Branch (559:4): [True: 11, False: 0]
  ------------------
  560|     11|			continue;
  561|     11|		}
  562|       |
  563|    175|		if (!fe_ce || !proto_ce) {
  ------------------
  |  Branch (563:7): [True: 84, False: 91]
  |  Branch (563:17): [True: 29, False: 62]
  ------------------
  564|    113|			have_unresolved = true;
  565|    113|			continue;
  566|    113|		}
  567|     62|		if (unlinked_instanceof(fe_ce, proto_ce)) {
  ------------------
  |  Branch (567:7): [True: 43, False: 19]
  ------------------
  568|     43|			track_class_dependency(fe_ce, fe_class_name);
  569|     43|			track_class_dependency(proto_ce, proto_class_name);
  570|     43|			if (!is_intersection) {
  ------------------
  |  Branch (570:8): [True: 35, False: 8]
  ------------------
  571|     35|				return INHERITANCE_SUCCESS;
  572|     35|			}
  573|     43|		} else {
  574|     19|			if (is_intersection) {
  ------------------
  |  Branch (574:8): [True: 4, False: 15]
  ------------------
  575|      4|				return INHERITANCE_ERROR;
  576|      4|			}
  577|     19|		}
  578|     62|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|    168|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 54, False: 114]
  |  |  ------------------
  |  |  244|    225|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 114]
  |  |  ------------------
  ------------------
  579|       |
  580|    114|	if (have_unresolved) {
  ------------------
  |  Branch (580:6): [True: 91, False: 23]
  ------------------
  581|     91|		return INHERITANCE_UNRESOLVED;
  582|     91|	}
  583|     23|	return is_intersection ? INHERITANCE_SUCCESS : INHERITANCE_ERROR;
  ------------------
  |  Branch (583:9): [True: 6, False: 17]
  ------------------
  584|    114|}
zend_inheritance.c:register_unresolved_classes:
  593|    208|static void register_unresolved_classes(zend_class_entry *scope, const zend_type type) {
  594|    208|	const zend_type *single_type;
  595|    499|	ZEND_TYPE_FOREACH(type, single_type) {
  ------------------
  |  |  214|    208|#define ZEND_TYPE_FOREACH(type, type_ptr) do { \
  |  |  215|    208|	const zend_type *_cur, *_end; \
  |  |  216|    208|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|    208|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|    208|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 77, False: 131]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|     77|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|     77|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  218|     77|		_cur = _list->types; \
  |  |  219|     77|		_end = _cur + _list->num_types; \
  |  |  220|    131|	} else { \
  |  |  221|    131|		_cur = &(type); \
  |  |  222|    131|		_end = _cur + 1; \
  |  |  223|    131|	} \
  |  |  224|    291|	do { \
  |  |  225|    291|		type_ptr = _cur;
  ------------------
  596|    499|		if (ZEND_TYPE_HAS_LIST(*single_type)) {
  ------------------
  |  |  166|    291|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|    291|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 20, False: 271]
  |  |  ------------------
  ------------------
  597|     20|			register_unresolved_classes(scope, *single_type);
  598|     20|			continue;
  599|     20|		}
  600|    271|		if (ZEND_TYPE_HAS_NAME(*single_type)) {
  ------------------
  |  |  160|    271|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|    271|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 263, False: 8]
  |  |  ------------------
  ------------------
  601|    263|			zend_string *class_name = resolve_class_name(scope, ZEND_TYPE_NAME(*single_type));
  ------------------
  |  |  184|    263|	((zend_string *) (t).ptr)
  ------------------
  602|    263|			lookup_class_ex(scope, class_name, /* register_unresolved */ true);
  603|    263|		}
  604|    271|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|    291|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 83, False: 208]
  |  |  ------------------
  |  |  244|    208|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 208]
  |  |  ------------------
  ------------------
  605|    208|}
zend_inheritance.c:do_inherit_property:
 1446|    841|{
 1447|    841|	zval *child = zend_hash_find_known_hash(&ce->properties_info, key);
 1448|       |
 1449|    841|	if (UNEXPECTED(child)) {
  ------------------
  |  |  457|    841|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 89, False: 752]
  |  |  ------------------
  ------------------
 1450|     89|		zend_property_info *child_info = Z_PTR_P(child);
  ------------------
  |  | 1053|     89|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     89|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1451|     89|		if (parent_info->flags & (ZEND_ACC_PRIVATE|ZEND_ACC_CHANGED)) {
  ------------------
  |  |  221|     89|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		if (parent_info->flags & (ZEND_ACC_PRIVATE|ZEND_ACC_CHANGED)) {
  ------------------
  |  |  224|     89|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1451:7): [True: 8, False: 81]
  ------------------
 1452|      8|			child_info->flags |= ZEND_ACC_CHANGED;
  ------------------
  |  |  224|      8|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
 1453|      8|		}
 1454|     89|		if (parent_info->flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     89|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1454:7): [True: 4, False: 85]
  ------------------
 1455|      4|			zend_error_noreturn(E_COMPILE_ERROR, "Cannot override final property %s::$%s",
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1456|      4|				ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1457|      4|		}
 1458|     85|		if (!(parent_info->flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|     85|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1458:7): [True: 77, False: 8]
  ------------------
 1459|     77|			if (!(parent_info->ce->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|     77|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (1459:8): [True: 68, False: 9]
  ------------------
 1460|     68|				child_info->prototype = parent_info->prototype;
 1461|     68|			}
 1462|       |
 1463|     77|			if (UNEXPECTED((parent_info->flags & ZEND_ACC_STATIC) != (child_info->flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  457|     77|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 77]
  |  |  ------------------
  ------------------
 1464|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Cannot redeclare %s%s::$%s as %s%s::$%s",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1465|      0|					(parent_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key),
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              					(parent_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					(parent_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1465:6): [True: 0, False: 0]
  ------------------
 1466|      0|					(child_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ZSTR_VAL(ce->name), ZSTR_VAL(key));
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              					(child_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ZSTR_VAL(ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					(child_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ZSTR_VAL(ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1466:6): [True: 0, False: 0]
  ------------------
 1467|      0|			}
 1468|     77|			if (UNEXPECTED((child_info->flags & ZEND_ACC_READONLY) != (parent_info->flags & ZEND_ACC_READONLY))) {
  ------------------
  |  |  457|     77|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 72]
  |  |  ------------------
  ------------------
 1469|      5|				if (!(parent_info->flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  233|      5|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1469:9): [True: 1, False: 4]
  ------------------
 1470|      1|					zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1471|      1|						"Cannot redeclare %s property %s::$%s as %s %s::$%s",
 1472|      1|						parent_info->flags & ZEND_ACC_READONLY ? "readonly" : "non-readonly",
  ------------------
  |  |  237|      1|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1472:7): [True: 1, False: 0]
  ------------------
 1473|      1|						ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(parent_info->ce->name), ZSTR_VAL(key),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1474|      1|						child_info->flags & ZEND_ACC_READONLY ? "readonly" : "non-readonly",
  ------------------
  |  |  237|      1|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1474:7): [True: 0, False: 1]
  ------------------
 1475|      1|						ZSTR_VAL(ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1476|      1|				}
 1477|      5|			}
 1478|     76|			if (UNEXPECTED((child_info->flags & ZEND_ACC_PPP_SET_MASK))
  ------------------
  |  |  457|    152|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 69]
  |  |  ------------------
  ------------------
 1479|       |			 /* Get-only virtual properties have no set visibility, so any child visibility is fine. */
 1480|      7|			 && !(parent_info->hooks && (parent_info->flags & ZEND_ACC_VIRTUAL) && !parent_info->hooks[ZEND_PROPERTY_HOOK_SET])) {
  ------------------
  |  |  270|      3|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1480:10): [True: 3, False: 4]
  |  Branch (1480:32): [True: 3, False: 0]
  |  Branch (1480:75): [True: 2, False: 1]
  ------------------
 1481|      5|				uint32_t parent_set_visibility = parent_info->flags & ZEND_ACC_PPP_SET_MASK;
  ------------------
  |  |  422|      5|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      5|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      5|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      5|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
 1482|       |				/* Adding set protection is fine if it's the same or weaker than
 1483|       |				 * the parents full property visibility. */
 1484|      5|				if (!parent_set_visibility) {
  ------------------
  |  Branch (1484:9): [True: 4, False: 1]
  ------------------
 1485|      4|					parent_set_visibility = zend_visibility_to_set_visibility(parent_info->flags & ZEND_ACC_PPP_MASK);
  ------------------
  |  |  421|      4|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      4|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      4|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      4|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
 1486|      4|				}
 1487|      5|				uint32_t child_set_visibility = child_info->flags & ZEND_ACC_PPP_SET_MASK;
  ------------------
  |  |  422|      5|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      5|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      5|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      5|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
 1488|      5|				if (child_set_visibility > parent_set_visibility) {
  ------------------
  |  Branch (1488:9): [True: 5, False: 0]
  ------------------
 1489|      5|					zend_error_noreturn(
 1490|      5|						E_COMPILE_ERROR,
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1491|      5|						"Set access level of %s::$%s must be %s (as in class %s)%s",
 1492|      5|						ZSTR_VAL(ce->name), ZSTR_VAL(key),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(ce->name), ZSTR_VAL(key),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1493|      5|						zend_asymmetric_visibility_string(parent_info->flags), ZSTR_VAL(parent_info->ce->name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1494|      5|						!(parent_info->flags & ZEND_ACC_PPP_SET_MASK) ? "" : " or weaker");
  ------------------
  |  |  422|      5|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      5|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      5|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      5|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1494:7): [True: 4, False: 1]
  ------------------
 1495|      5|				}
 1496|      5|			}
 1497|       |
 1498|     71|			if (UNEXPECTED((child_info->flags & ZEND_ACC_PPP_MASK) > (parent_info->flags & ZEND_ACC_PPP_MASK))) {
  ------------------
  |  |  457|     71|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 70]
  |  |  ------------------
  ------------------
 1499|      1|				zend_error_noreturn(E_COMPILE_ERROR, "Access level to %s::$%s must be %s (as in class %s)%s", ZSTR_VAL(ce->name), ZSTR_VAL(key), zend_visibility_string(parent_info->flags), ZSTR_VAL(parent_info->ce->name), (parent_info->flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Access level to %s::$%s must be %s (as in class %s)%s", ZSTR_VAL(ce->name), ZSTR_VAL(key), zend_visibility_string(parent_info->flags), ZSTR_VAL(parent_info->ce->name), (parent_info->flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Access level to %s::$%s must be %s (as in class %s)%s", ZSTR_VAL(ce->name), ZSTR_VAL(key), zend_visibility_string(parent_info->flags), ZSTR_VAL(parent_info->ce->name), (parent_info->flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Access level to %s::$%s must be %s (as in class %s)%s", ZSTR_VAL(ce->name), ZSTR_VAL(key), zend_visibility_string(parent_info->flags), ZSTR_VAL(parent_info->ce->name), (parent_info->flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Access level to %s::$%s must be %s (as in class %s)%s", ZSTR_VAL(ce->name), ZSTR_VAL(key), zend_visibility_string(parent_info->flags), ZSTR_VAL(parent_info->ce->name), (parent_info->flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1499:211): [True: 0, False: 1]
  ------------------
 1500|      1|			}
 1501|     70|			if (!(child_info->flags & ZEND_ACC_STATIC) && !(parent_info->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  227|     70|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              			if (!(child_info->flags & ZEND_ACC_STATIC) && !(parent_info->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|     66|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1501:8): [True: 66, False: 4]
  |  Branch (1501:50): [True: 46, False: 20]
  ------------------
 1502|       |				/* If we added hooks to the child property, we use the child's slot for
 1503|       |				 * storage to keep the parent slot set to IS_UNDEF. This automatically
 1504|       |				 * picks the slow path in the JIT. */
 1505|     46|				bool use_child_prop = !parent_info->hooks && child_info->hooks;
  ------------------
  |  Branch (1505:27): [True: 42, False: 4]
  |  Branch (1505:50): [True: 15, False: 27]
  ------------------
 1506|       |
 1507|     46|				if (use_child_prop && child_info->offset == ZEND_VIRTUAL_PROPERTY_OFFSET) {
  ------------------
  |  |  462|     15|#define ZEND_VIRTUAL_PROPERTY_OFFSET ((uint32_t)-1)
  ------------------
  |  Branch (1507:9): [True: 15, False: 31]
  |  Branch (1507:27): [True: 7, False: 8]
  ------------------
 1508|      7|					child_info->offset = OBJ_PROP_TO_OFFSET(ce->default_properties_count);
  ------------------
  |  |  484|      7|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  ------------------
 1509|      7|					ce->default_properties_count++;
 1510|      7|					ce->default_properties_table = perealloc(ce->default_properties_table, sizeof(zval) * ce->default_properties_count, ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  200|      7|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      7|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 1511|      7|					zval *property_default_ptr = &ce->default_properties_table[OBJ_PROP_TO_NUM(child_info->offset)];
  ------------------
  |  |  486|      7|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      7|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 1512|      7|					ZVAL_UNDEF(property_default_ptr);
  ------------------
  |  | 1055|      7|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      7|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1513|      7|					Z_PROP_FLAG_P(property_default_ptr) = IS_PROP_UNINIT;
  ------------------
  |  | 1580|      7|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      7|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      7|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					Z_PROP_FLAG_P(property_default_ptr) = IS_PROP_UNINIT;
  ------------------
  |  | 1577|      7|#define IS_PROP_UNINIT (1<<0)
  ------------------
 1514|      7|				}
 1515|       |
 1516|     46|				int parent_num = OBJ_PROP_TO_NUM(parent_info->offset);
  ------------------
  |  |  486|     46|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|     46|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 1517|       |				/* Don't keep default properties in GC (they may be freed by opcache) */
 1518|     46|				zval_ptr_dtor_nogc(&(ce->default_properties_table[parent_num]));
 1519|     46|				if (child_info->offset != ZEND_VIRTUAL_PROPERTY_OFFSET) {
  ------------------
  |  |  462|     46|#define ZEND_VIRTUAL_PROPERTY_OFFSET ((uint32_t)-1)
  ------------------
  |  Branch (1519:9): [True: 42, False: 4]
  ------------------
 1520|     42|					if (use_child_prop) {
  ------------------
  |  Branch (1520:10): [True: 15, False: 27]
  ------------------
 1521|     15|						ZVAL_UNDEF(&ce->default_properties_table[parent_num]);
  ------------------
  |  | 1055|     15|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     15|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     15|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1522|     27|					} else {
 1523|     27|						int child_num = OBJ_PROP_TO_NUM(child_info->offset);
  ------------------
  |  |  486|     27|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|     27|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 1524|     27|						ce->default_properties_table[parent_num] = ce->default_properties_table[child_num];
 1525|     27|						ZVAL_UNDEF(&ce->default_properties_table[child_num]);
  ------------------
  |  | 1055|     27|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     27|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     27|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     27|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     27|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     27|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 27]
  |  |  ------------------
  ------------------
 1526|     27|					}
 1527|     42|				} else {
 1528|       |					/* Default value was removed in child, remove it from parent too. */
 1529|      4|					if (ZEND_TYPE_IS_SET(child_info->type)) {
  ------------------
  |  |  152|      4|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      4|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 1530|      3|						ZVAL_UNDEF(&ce->default_properties_table[parent_num]);
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1531|      3|					} else {
 1532|      1|						ZVAL_NULL(&ce->default_properties_table[parent_num]);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1533|      1|					}
 1534|      4|				}
 1535|       |
 1536|     46|				if (!use_child_prop) {
  ------------------
  |  Branch (1536:9): [True: 31, False: 15]
  ------------------
 1537|     31|					child_info->offset = parent_info->offset;
 1538|     31|				}
 1539|     46|				child_info->flags &= ~ZEND_ACC_VIRTUAL;
  ------------------
  |  |  270|     46|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
 1540|     46|			}
 1541|       |
 1542|     70|			if (parent_info->hooks || child_info->hooks) {
  ------------------
  |  Branch (1542:8): [True: 24, False: 46]
  |  Branch (1542:30): [True: 15, False: 31]
  ------------------
 1543|    113|				for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|    113|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (1543:26): [True: 74, False: 39]
  ------------------
 1544|     74|					inherit_property_hook(ce, parent_info, child_info, i);
 1545|     74|				}
 1546|     39|			}
 1547|       |
 1548|     70|			prop_variance variance = prop_get_variance(parent_info);
 1549|     70|			if (ZEND_TYPE_IS_SET(parent_info->type)) {
  ------------------
  |  |  152|     70|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     70|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 35, False: 35]
  |  |  ------------------
  ------------------
 1550|     35|				inheritance_status status = verify_property_type_compatibility(
 1551|     35|					parent_info, child_info, variance, true, false);
 1552|     35|				if (status == INHERITANCE_UNRESOLVED) {
  ------------------
  |  Branch (1552:9): [True: 8, False: 27]
  ------------------
 1553|      8|					add_property_compatibility_obligation(ce, child_info, parent_info, variance);
 1554|      8|				}
 1555|     35|			} else if (UNEXPECTED(ZEND_TYPE_IS_SET(child_info->type) && !ZEND_TYPE_IS_SET(parent_info->type))) {
  ------------------
  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 34]
  |  |  |  Branch (457:52): [True: 1, False: 34]
  |  |  |  Branch (457:52): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1556|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1557|      1|						"Type of %s::$%s must be omitted to match the parent definition in class %s",
 1558|      1|						ZSTR_VAL(ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1559|      1|						ZSTR_VAL(key),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1560|      1|						ZSTR_VAL(parent_info->ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1561|      1|			}
 1562|       |
 1563|     69|			if (child_info->ce == ce) {
  ------------------
  |  Branch (1563:8): [True: 47, False: 22]
  ------------------
 1564|     47|				child_info->flags &= ~ZEND_ACC_OVERRIDE;
  ------------------
  |  |  261|     47|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
 1565|     47|			}
 1566|     69|		}
 1567|    752|	} else {
 1568|    752|		zend_function **hooks = parent_info->hooks;
 1569|    752|		if (hooks) {
  ------------------
  |  Branch (1569:7): [True: 3, False: 749]
  ------------------
 1570|      3|			ce->num_hooked_props++;
 1571|      3|			if (parent_info->flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|      3|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1571:8): [True: 2, False: 1]
  ------------------
 1572|      2|				ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|      2|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 1573|      2|			}
 1574|      3|		}
 1575|       |
 1576|    752|		_zend_hash_append_ptr(&ce->properties_info, key, parent_info);
 1577|    752|	}
 1578|    841|}
zend_inheritance.c:zend_asymmetric_visibility_string:
  216|      5|{
  217|      5|	if (fn_flags & ZEND_ACC_PRIVATE_SET) {
  ------------------
  |  |  275|      5|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  |  Branch (217:6): [True: 0, False: 5]
  ------------------
  218|      0|		return "private(set)";
  219|      5|	} else if (fn_flags & ZEND_ACC_PROTECTED_SET) {
  ------------------
  |  |  274|      5|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  |  Branch (219:13): [True: 1, False: 4]
  ------------------
  220|      1|		return "protected(set)";
  221|      4|	} else {
  222|      4|		ZEND_ASSERT(!(fn_flags & ZEND_ACC_PUBLIC_SET));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (222:3): [True: 0, False: 4]
  |  Branch (222:3): [True: 4, False: 0]
  ------------------
  223|      4|		return "omitted";
  224|      4|	}
  225|      5|}
zend_inheritance.c:inherit_property_hook:
 1375|     74|) {
 1376|     74|	zend_function *parent = parent_info->hooks ? parent_info->hooks[kind] : NULL;
  ------------------
  |  Branch (1376:26): [True: 44, False: 30]
  ------------------
 1377|     74|	zend_function *child = child_info->hooks ? child_info->hooks[kind] : NULL;
  ------------------
  |  Branch (1377:25): [True: 58, False: 16]
  ------------------
 1378|       |
 1379|     74|	if (child
  ------------------
  |  Branch (1379:6): [True: 33, False: 41]
  ------------------
 1380|     33|	 && (child->common.fn_flags & ZEND_ACC_OVERRIDE)
  ------------------
  |  |  261|     33|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1380:6): [True: 2, False: 31]
  ------------------
 1381|      2|	 && property_has_operation(parent_info, kind)) {
  ------------------
  |  Branch (1381:6): [True: 1, False: 1]
  ------------------
 1382|      1|		child->common.fn_flags &= ~ZEND_ACC_OVERRIDE;
  ------------------
  |  |  261|      1|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
 1383|      1|	}
 1384|       |
 1385|     74|	if (!parent) {
  ------------------
  |  Branch (1385:6): [True: 46, False: 28]
  ------------------
 1386|     46|		return;
 1387|     46|	}
 1388|       |
 1389|     28|	if (!child) {
  ------------------
  |  Branch (1389:6): [True: 15, False: 13]
  ------------------
 1390|     15|		if (parent->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     15|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1390:7): [True: 11, False: 4]
  ------------------
 1391|       |			/* Backed properties are considered to always implement get, and set when they are not readonly. */
 1392|     11|			if (property_has_operation(child_info, kind)) {
  ------------------
  |  Branch (1392:8): [True: 9, False: 2]
  ------------------
 1393|      9|				return;
 1394|      9|			}
 1395|      2|			ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|      2|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 1396|      2|		}
 1397|      6|		if (!child_info->hooks) {
  ------------------
  |  Branch (1397:7): [True: 1, False: 5]
  ------------------
 1398|      1|			ce->num_hooked_props++;
 1399|      1|			child_info->hooks = zend_arena_alloc(&CG(arena), ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              			child_info->hooks = zend_arena_alloc(&CG(arena), ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |  459|      1|#define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT)
  |  |  ------------------
  |  |  |  |  458|      1|#define ZEND_PROPERTY_HOOK_COUNT 2
  |  |  ------------------
  ------------------
 1400|      1|			memset(child_info->hooks, 0, ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |  459|      1|#define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT)
  |  |  ------------------
  |  |  |  |  458|      1|#define ZEND_PROPERTY_HOOK_COUNT 2
  |  |  ------------------
  ------------------
 1401|      1|		}
 1402|      6|		child_info->hooks[kind] = zend_duplicate_function(parent, ce);
 1403|      6|		return;
 1404|     15|	}
 1405|       |
 1406|     13|	child->common.prototype = parent->common.prototype ? parent->common.prototype : parent;
  ------------------
  |  Branch (1406:28): [True: 0, False: 13]
  ------------------
 1407|       |
 1408|     13|	uint32_t parent_flags = parent->common.fn_flags;
 1409|     13|	if (parent_flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|     13|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1409:6): [True: 0, False: 13]
  ------------------
 1410|      0|		child->common.fn_flags |= ZEND_ACC_CHANGED;
  ------------------
  |  |  224|      0|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
 1411|      0|		return;
 1412|      0|	}
 1413|       |
 1414|     13|	if (parent_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     13|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1414:6): [True: 1, False: 12]
  ------------------
 1415|      1|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1416|      1|			"Cannot override final property hook %s::%s()",
 1417|      1|			ZSTR_VAL(parent->common.scope->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1418|      1|			ZSTR_VAL(parent->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1419|      1|	}
 1420|       |
 1421|     12|	do_inheritance_check_on_method(
 1422|     12|		child, child->common.scope, parent, parent->common.scope, ce, /* child */ NULL,
 1423|     12|		ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY
  ------------------
  |  | 1115|     12|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
              		ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY
  ------------------
  |  | 1116|     12|#define ZEND_INHERITANCE_CHECK_VISIBILITY     (1<<3)
  ------------------
 1424|     12|			| ZEND_INHERITANCE_SET_CHILD_CHANGED | ZEND_INHERITANCE_SET_CHILD_PROTO
  ------------------
  |  | 1117|     12|#define ZEND_INHERITANCE_SET_CHILD_CHANGED    (1<<4)
  ------------------
              			| ZEND_INHERITANCE_SET_CHILD_CHANGED | ZEND_INHERITANCE_SET_CHILD_PROTO
  ------------------
  |  | 1118|     12|#define ZEND_INHERITANCE_SET_CHILD_PROTO      (1<<5)
  ------------------
 1425|     12|			| ZEND_INHERITANCE_RESET_CHILD_OVERRIDE);
  ------------------
  |  | 1119|     12|#define ZEND_INHERITANCE_RESET_CHILD_OVERRIDE (1<<6)
  ------------------
 1426|       |
 1427|       |	/* Other signature compatibility issues should already be covered either by the
 1428|       |	 * properties being compatible (types), or certain signatures being forbidden by the
 1429|       |	 * compiler (variadic and by-ref args, etc). */
 1430|     12|}
zend_inheritance.c:property_has_operation:
 1364|     13|{
 1365|     13|	return (!(prop_info->flags & ZEND_ACC_VIRTUAL)
  ------------------
  |  |  270|     13|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1365:10): [True: 11, False: 2]
  ------------------
 1366|     11|			&& (kind == ZEND_PROPERTY_HOOK_GET || !(prop_info->flags & ZEND_ACC_READONLY)))
  ------------------
  |  |  237|      4|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1366:8): [True: 7, False: 4]
  |  Branch (1366:42): [True: 3, False: 1]
  ------------------
 1367|      3|		|| (prop_info->hooks && prop_info->hooks[kind]);
  ------------------
  |  Branch (1367:7): [True: 2, False: 1]
  |  Branch (1367:27): [True: 0, False: 2]
  ------------------
 1368|     13|}
zend_inheritance.c:zend_duplicate_function:
  118|  2.82k|{
  119|  2.82k|	if (UNEXPECTED(func->type == ZEND_INTERNAL_FUNCTION)) {
  ------------------
  |  |  457|  2.82k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.79k, False: 35]
  |  |  ------------------
  ------------------
  120|  2.79k|		return zend_duplicate_internal_function(func, ce);
  121|  2.79k|	} else {
  122|     35|		if (func->op_array.refcount) {
  ------------------
  |  Branch (122:7): [True: 35, False: 0]
  ------------------
  123|     35|			(*func->op_array.refcount)++;
  124|     35|		}
  125|     35|		if (EXPECTED(func->op_array.function_name)) {
  ------------------
  |  |  456|     35|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 35, False: 0]
  |  |  ------------------
  ------------------
  126|     35|			zend_string_addref(func->op_array.function_name);
  127|     35|		}
  128|     35|		return func;
  129|     35|	}
  130|  2.82k|}
zend_inheritance.c:zend_duplicate_internal_function:
   99|  2.79k|{
  100|  2.79k|	zend_function *new_function;
  101|       |
  102|  2.79k|	if (UNEXPECTED(ce->type == ZEND_INTERNAL_CLASS)) {
  ------------------
  |  |  457|  2.79k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.35k, False: 440]
  |  |  ------------------
  ------------------
  103|  2.35k|		new_function = (zend_function *)pemalloc(sizeof(zend_internal_function), 1);
  ------------------
  |  |  188|  2.35k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|  2.35k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  2.35k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|  2.35k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  2.35k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2.35k, Folded]
  |  |  ------------------
  ------------------
  104|  2.35k|		memcpy(new_function, func, sizeof(zend_internal_function));
  105|  2.35k|	} else {
  106|    440|		new_function = zend_arena_alloc(&CG(arena), sizeof(zend_internal_function));
  ------------------
  |  |   35|    440|# define CG(v) (compiler_globals.v)
  ------------------
  107|    440|		memcpy(new_function, func, sizeof(zend_internal_function));
  108|    440|		new_function->common.fn_flags |= ZEND_ACC_ARENA_ALLOCATED;
  ------------------
  |  |  393|    440|#define ZEND_ACC_ARENA_ALLOCATED         (1 << 25) /*     |  X  |     |     */
  ------------------
  109|    440|	}
  110|  2.79k|	if (EXPECTED(new_function->common.function_name)) {
  ------------------
  |  |  456|  2.79k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.79k, False: 0]
  |  |  ------------------
  ------------------
  111|  2.79k|		zend_string_addref(new_function->common.function_name);
  112|  2.79k|	}
  113|  2.79k|	return new_function;
  114|  2.79k|}
zend_inheritance.c:do_inheritance_check_on_method:
 1125|  1.06k|{
 1126|  1.06k|	uint32_t child_flags;
 1127|  1.06k|	uint32_t parent_flags = parent->common.fn_flags;
 1128|  1.06k|	zend_function *proto;
 1129|       |
 1130|  1.06k|#define SEPARATE_METHOD() do { \
 1131|  1.06k|			if ((flags & ZEND_INHERITANCE_LAZY_CHILD_CLONE) \
 1132|  1.06k|			 && child_scope != ce \
 1133|       |			 /* Trait methods have already been separated at this point. However, their */ \
 1134|       |			 /* scope isn't fixed until after inheritance checks to preserve the scope */ \
 1135|       |			 /* in error messages. Skip them here explicitly. */ \
 1136|  1.06k|			 && !(child_scope->ce_flags & ZEND_ACC_TRAIT) \
 1137|  1.06k|			 && child->type == ZEND_USER_FUNCTION) { \
 1138|       |				/* op_array wasn't duplicated yet */ \
 1139|  1.06k|				zend_function *new_function = zend_arena_alloc(&CG(arena), sizeof(zend_op_array)); \
 1140|  1.06k|				memcpy(new_function, child, sizeof(zend_op_array)); \
 1141|  1.06k|				Z_PTR_P(child_zv) = child = new_function; \
 1142|  1.06k|				flags &= ~ZEND_INHERITANCE_LAZY_CHILD_CLONE; \
 1143|  1.06k|			} \
 1144|  1.06k|		} while(0)
 1145|       |
 1146|  1.06k|	if (UNEXPECTED((parent_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_ABSTRACT|ZEND_ACC_CTOR)) == ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  457|  1.06k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 1.06k]
  |  |  ------------------
  ------------------
 1147|      7|		if (flags & ZEND_INHERITANCE_SET_CHILD_CHANGED) {
  ------------------
  |  | 1117|      7|#define ZEND_INHERITANCE_SET_CHILD_CHANGED    (1<<4)
  ------------------
  |  Branch (1147:7): [True: 4, False: 3]
  ------------------
 1148|      4|			SEPARATE_METHOD();
  ------------------
  |  | 1130|      4|#define SEPARATE_METHOD() do { \
  |  | 1131|      4|			if ((flags & ZEND_INHERITANCE_LAZY_CHILD_CLONE) \
  |  |  ------------------
  |  |  |  | 1113|      4|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  |  |  Branch (1131:8): [True: 4, False: 0]
  |  |  ------------------
  |  | 1132|      4|			 && child_scope != ce \
  |  |  ------------------
  |  |  |  Branch (1132:8): [True: 0, False: 4]
  |  |  ------------------
  |  | 1133|      4|			 /* Trait methods have already been separated at this point. However, their */ \
  |  | 1134|      4|			 /* scope isn't fixed until after inheritance checks to preserve the scope */ \
  |  | 1135|      4|			 /* in error messages. Skip them here explicitly. */ \
  |  | 1136|      4|			 && !(child_scope->ce_flags & ZEND_ACC_TRAIT) \
  |  |  ------------------
  |  |  |  |  282|      0|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  |  |  ------------------
  |  |  |  Branch (1136:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1137|      4|			 && child->type == ZEND_USER_FUNCTION) { \
  |  |  ------------------
  |  |  |  Branch (1137:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1138|      0|				/* op_array wasn't duplicated yet */ \
  |  | 1139|      0|				zend_function *new_function = zend_arena_alloc(&CG(arena), sizeof(zend_op_array)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1140|      0|				memcpy(new_function, child, sizeof(zend_op_array)); \
  |  | 1141|      0|				Z_PTR_P(child_zv) = child = new_function; \
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1142|      0|				flags &= ~ZEND_INHERITANCE_LAZY_CHILD_CLONE; \
  |  |  ------------------
  |  |  |  | 1113|      0|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  | 1143|      0|			} \
  |  | 1144|      4|		} while(0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1149|      4|			child->common.fn_flags |= ZEND_ACC_CHANGED;
  ------------------
  |  |  224|      4|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
 1150|      4|		}
 1151|       |		/* The parent method is private and not an abstract so we don't need to check any inheritance rules */
 1152|      7|		return INHERITANCE_SUCCESS;
 1153|      7|	}
 1154|       |
 1155|  1.06k|	if ((flags & ZEND_INHERITANCE_CHECK_PROTO) && UNEXPECTED(parent_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  | 1115|  1.06k|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
              	if ((flags & ZEND_INHERITANCE_CHECK_PROTO) && UNEXPECTED(parent_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  457|  1.02k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1.02k]
  |  |  ------------------
  ------------------
  |  Branch (1155:6): [True: 1.02k, False: 34]
  ------------------
 1156|      1|		if (flags & ZEND_INHERITANCE_CHECK_SILENT) {
  ------------------
  |  | 1114|      1|#define ZEND_INHERITANCE_CHECK_SILENT         (1<<1) /* don't throw errors */
  ------------------
  |  Branch (1156:7): [True: 0, False: 1]
  ------------------
 1157|      0|			return INHERITANCE_ERROR;
 1158|      0|		}
 1159|      1|		zend_error_at_noreturn(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1160|      1|			"Cannot override final method %s::%s()",
 1161|      1|			ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name));
  ------------------
  |  |  617|      1|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 1, False: 0]
  |  |  |  Branch (617:54): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              			ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1162|      1|	}
 1163|       |
 1164|  1.05k|	child_flags	= child->common.fn_flags;
 1165|       |	/* You cannot change from static to non static and vice versa.
 1166|       |	 */
 1167|  1.05k|	if ((flags & ZEND_INHERITANCE_CHECK_PROTO)
  ------------------
  |  | 1115|  1.05k|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
  |  Branch (1167:6): [True: 1.02k, False: 34]
  ------------------
 1168|  1.02k|	 && UNEXPECTED((child_flags & ZEND_ACC_STATIC) != (parent_flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  457|  1.02k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1.02k]
  |  |  ------------------
  ------------------
 1169|      2|		if (flags & ZEND_INHERITANCE_CHECK_SILENT) {
  ------------------
  |  | 1114|      2|#define ZEND_INHERITANCE_CHECK_SILENT         (1<<1) /* don't throw errors */
  ------------------
  |  Branch (1169:7): [True: 0, False: 2]
  ------------------
 1170|      0|			return INHERITANCE_ERROR;
 1171|      0|		}
 1172|      2|		if (child_flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      2|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1172:7): [True: 1, False: 1]
  ------------------
 1173|      1|			zend_error_at_noreturn(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1174|      1|				"Cannot make non static method %s::%s() static in class %s",
 1175|      1|				ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |  617|      1|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 1, False: 0]
  |  |  |  Branch (617:54): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              				ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |  617|      1|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 1, False: 0]
  |  |  |  Branch (617:54): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1176|      1|		} else {
 1177|      1|			zend_error_at_noreturn(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1178|      1|				"Cannot make static method %s::%s() non static in class %s",
 1179|      1|				ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |  617|      1|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 1, False: 0]
  |  |  |  Branch (617:54): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              				ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |  617|      1|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 1, False: 0]
  |  |  |  Branch (617:54): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1180|      1|		}
 1181|      2|	}
 1182|       |
 1183|       |	/* Disallow making an inherited method abstract. */
 1184|  1.05k|	if ((flags & ZEND_INHERITANCE_CHECK_PROTO)
  ------------------
  |  | 1115|  1.05k|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
  |  Branch (1184:6): [True: 1.02k, False: 34]
  ------------------
 1185|  1.02k|	 && UNEXPECTED((child_flags & ZEND_ACC_ABSTRACT) > (parent_flags & ZEND_ACC_ABSTRACT))) {
  ------------------
  |  |  457|  1.02k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.02k]
  |  |  ------------------
  ------------------
 1186|      0|		if (flags & ZEND_INHERITANCE_CHECK_SILENT) {
  ------------------
  |  | 1114|      0|#define ZEND_INHERITANCE_CHECK_SILENT         (1<<1) /* don't throw errors */
  ------------------
  |  Branch (1186:7): [True: 0, False: 0]
  ------------------
 1187|      0|			return INHERITANCE_ERROR;
 1188|      0|		}
 1189|      0|		zend_error_at_noreturn(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1190|      0|			"Cannot make non abstract method %s::%s() abstract in class %s",
 1191|      0|			ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |  617|      0|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 0, False: 0]
  |  |  |  Branch (617:54): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZEND_FN_SCOPE_NAME(parent), ZSTR_VAL(child->common.function_name), ZEND_FN_SCOPE_NAME(child));
  ------------------
  |  |  617|      0|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 0, False: 0]
  |  |  |  Branch (617:54): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1192|      0|	}
 1193|       |
 1194|  1.05k|	if ((flags & ZEND_INHERITANCE_SET_CHILD_CHANGED)
  ------------------
  |  | 1117|  1.05k|#define ZEND_INHERITANCE_SET_CHILD_CHANGED    (1<<4)
  ------------------
  |  Branch (1194:6): [True: 231, False: 826]
  ------------------
 1195|    231|	 && (parent_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_CHANGED))) {
  ------------------
  |  |  221|    231|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	 && (parent_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_CHANGED))) {
  ------------------
  |  |  224|    231|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1195:6): [True: 1, False: 230]
  ------------------
 1196|      1|		SEPARATE_METHOD();
  ------------------
  |  | 1130|      1|#define SEPARATE_METHOD() do { \
  |  | 1131|      1|			if ((flags & ZEND_INHERITANCE_LAZY_CHILD_CLONE) \
  |  |  ------------------
  |  |  |  | 1113|      1|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  |  |  Branch (1131:8): [True: 1, False: 0]
  |  |  ------------------
  |  | 1132|      1|			 && child_scope != ce \
  |  |  ------------------
  |  |  |  Branch (1132:8): [True: 0, False: 1]
  |  |  ------------------
  |  | 1133|      1|			 /* Trait methods have already been separated at this point. However, their */ \
  |  | 1134|      1|			 /* scope isn't fixed until after inheritance checks to preserve the scope */ \
  |  | 1135|      1|			 /* in error messages. Skip them here explicitly. */ \
  |  | 1136|      1|			 && !(child_scope->ce_flags & ZEND_ACC_TRAIT) \
  |  |  ------------------
  |  |  |  |  282|      0|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  |  |  ------------------
  |  |  |  Branch (1136:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1137|      1|			 && child->type == ZEND_USER_FUNCTION) { \
  |  |  ------------------
  |  |  |  Branch (1137:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1138|      0|				/* op_array wasn't duplicated yet */ \
  |  | 1139|      0|				zend_function *new_function = zend_arena_alloc(&CG(arena), sizeof(zend_op_array)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1140|      0|				memcpy(new_function, child, sizeof(zend_op_array)); \
  |  | 1141|      0|				Z_PTR_P(child_zv) = child = new_function; \
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1142|      0|				flags &= ~ZEND_INHERITANCE_LAZY_CHILD_CLONE; \
  |  |  ------------------
  |  |  |  | 1113|      0|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  | 1143|      0|			} \
  |  | 1144|      1|		} while(0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1197|      1|		child->common.fn_flags |= ZEND_ACC_CHANGED;
  ------------------
  |  |  224|      1|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
 1198|      1|	}
 1199|       |
 1200|  1.05k|	proto = parent->common.prototype ?
  ------------------
  |  Branch (1200:10): [True: 68, False: 989]
  ------------------
 1201|    989|		parent->common.prototype : parent;
 1202|       |
 1203|  1.05k|	if (parent_flags & ZEND_ACC_CTOR) {
  ------------------
  |  |  381|  1.05k|#define ZEND_ACC_CTOR                    (1 << 21) /*     |  X  |     |     */
  ------------------
  |  Branch (1203:6): [True: 88, False: 969]
  ------------------
 1204|       |		/* ctors only have a prototype if is abstract (or comes from an interface) */
 1205|       |		/* and if that is the case, we want to check inheritance against it */
 1206|     88|		if (!(proto->common.fn_flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  233|     88|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1206:7): [True: 76, False: 12]
  ------------------
 1207|     76|			return INHERITANCE_SUCCESS;
 1208|     76|		}
 1209|     12|		parent = proto;
 1210|     12|	}
 1211|       |
 1212|    981|	if ((flags & ZEND_INHERITANCE_SET_CHILD_PROTO)
  ------------------
  |  | 1118|    981|#define ZEND_INHERITANCE_SET_CHILD_PROTO      (1<<5)
  ------------------
  |  Branch (1212:6): [True: 893, False: 88]
  ------------------
 1213|    893|	 && child->common.prototype != proto) {
  ------------------
  |  Branch (1213:6): [True: 877, False: 16]
  ------------------
 1214|    877|		SEPARATE_METHOD();
  ------------------
  |  | 1130|    877|#define SEPARATE_METHOD() do { \
  |  | 1131|    877|			if ((flags & ZEND_INHERITANCE_LAZY_CHILD_CLONE) \
  |  |  ------------------
  |  |  |  | 1113|    877|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  |  |  Branch (1131:8): [True: 877, False: 0]
  |  |  ------------------
  |  | 1132|    877|			 && child_scope != ce \
  |  |  ------------------
  |  |  |  Branch (1132:8): [True: 60, False: 817]
  |  |  ------------------
  |  | 1133|    877|			 /* Trait methods have already been separated at this point. However, their */ \
  |  | 1134|    877|			 /* scope isn't fixed until after inheritance checks to preserve the scope */ \
  |  | 1135|    877|			 /* in error messages. Skip them here explicitly. */ \
  |  | 1136|    877|			 && !(child_scope->ce_flags & ZEND_ACC_TRAIT) \
  |  |  ------------------
  |  |  |  |  282|     60|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  |  |  ------------------
  |  |  |  Branch (1136:8): [True: 60, False: 0]
  |  |  ------------------
  |  | 1137|    877|			 && child->type == ZEND_USER_FUNCTION) { \
  |  |  ------------------
  |  |  |  Branch (1137:8): [True: 0, False: 60]
  |  |  ------------------
  |  | 1138|      0|				/* op_array wasn't duplicated yet */ \
  |  | 1139|      0|				zend_function *new_function = zend_arena_alloc(&CG(arena), sizeof(zend_op_array)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1140|      0|				memcpy(new_function, child, sizeof(zend_op_array)); \
  |  | 1141|      0|				Z_PTR_P(child_zv) = child = new_function; \
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1142|      0|				flags &= ~ZEND_INHERITANCE_LAZY_CHILD_CLONE; \
  |  |  ------------------
  |  |  |  | 1113|      0|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  | 1143|      0|			} \
  |  | 1144|    877|		} while(0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 877]
  |  |  ------------------
  ------------------
 1215|    877|		child->common.prototype = proto;
 1216|    877|	}
 1217|       |
 1218|       |	/* Prevent derived classes from restricting access that was available in parent classes (except deriving from non-abstract ctors) */
 1219|    981|	if ((flags & ZEND_INHERITANCE_CHECK_VISIBILITY)
  ------------------
  |  | 1116|    981|#define ZEND_INHERITANCE_CHECK_VISIBILITY     (1<<3)
  ------------------
  |  Branch (1219:6): [True: 949, False: 32]
  ------------------
 1220|    949|			&& (child_flags & ZEND_ACC_PPP_MASK) > (parent_flags & ZEND_ACC_PPP_MASK)) {
  ------------------
  |  |  421|    949|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    949|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    949|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    949|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              			&& (child_flags & ZEND_ACC_PPP_MASK) > (parent_flags & ZEND_ACC_PPP_MASK)) {
  ------------------
  |  |  421|    949|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    949|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    949|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    949|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (1220:7): [True: 6, False: 943]
  ------------------
 1221|      6|		if (flags & ZEND_INHERITANCE_CHECK_SILENT) {
  ------------------
  |  | 1114|      6|#define ZEND_INHERITANCE_CHECK_SILENT         (1<<1) /* don't throw errors */
  ------------------
  |  Branch (1221:7): [True: 3, False: 3]
  ------------------
 1222|      3|			return INHERITANCE_ERROR;
 1223|      3|		}
 1224|      3|		zend_error_at_noreturn(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1225|      3|			"Access level to %s::%s() must be %s (as in class %s)%s",
 1226|      3|			ZEND_FN_SCOPE_NAME(child), ZSTR_VAL(child->common.function_name), zend_visibility_string(parent_flags), ZEND_FN_SCOPE_NAME(parent), (parent_flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |  617|      3|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 3, False: 0]
  |  |  |  Branch (617:54): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              			ZEND_FN_SCOPE_NAME(child), ZSTR_VAL(child->common.function_name), zend_visibility_string(parent_flags), ZEND_FN_SCOPE_NAME(parent), (parent_flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZEND_FN_SCOPE_NAME(child), ZSTR_VAL(child->common.function_name), zend_visibility_string(parent_flags), ZEND_FN_SCOPE_NAME(parent), (parent_flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |  617|      3|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 3, False: 0]
  |  |  |  Branch (617:54): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              			ZEND_FN_SCOPE_NAME(child), ZSTR_VAL(child->common.function_name), zend_visibility_string(parent_flags), ZEND_FN_SCOPE_NAME(parent), (parent_flags&ZEND_ACC_PUBLIC) ? "" : " or weaker");
  ------------------
  |  |  219|      3|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1226:136): [True: 2, False: 1]
  ------------------
 1227|      6|	}
 1228|       |
 1229|    975|	if (flags & ZEND_INHERITANCE_CHECK_PROTO) {
  ------------------
  |  | 1115|    975|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
  |  Branch (1229:6): [True: 950, False: 25]
  ------------------
 1230|    950|		if (flags & ZEND_INHERITANCE_CHECK_SILENT) {
  ------------------
  |  | 1114|    950|#define ZEND_INHERITANCE_CHECK_SILENT         (1<<1) /* don't throw errors */
  ------------------
  |  Branch (1230:7): [True: 71, False: 879]
  ------------------
 1231|     71|			return zend_do_perform_implementation_check(child, child_scope, parent, parent_scope);
 1232|     71|		}
 1233|    879|		perform_delayable_implementation_check(ce, child, child_scope, parent, parent_scope);
 1234|    879|	}
 1235|       |
 1236|    904|	if ((flags & ZEND_INHERITANCE_RESET_CHILD_OVERRIDE)
  ------------------
  |  | 1119|    904|#define ZEND_INHERITANCE_RESET_CHILD_OVERRIDE (1<<6)
  ------------------
  |  Branch (1236:6): [True: 857, False: 47]
  ------------------
 1237|    857|	 && (child->common.fn_flags & ZEND_ACC_OVERRIDE)) {
  ------------------
  |  |  261|    857|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1237:6): [True: 4, False: 853]
  ------------------
 1238|      4|		SEPARATE_METHOD();
  ------------------
  |  | 1130|      4|#define SEPARATE_METHOD() do { \
  |  | 1131|      4|			if ((flags & ZEND_INHERITANCE_LAZY_CHILD_CLONE) \
  |  |  ------------------
  |  |  |  | 1113|      4|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  |  |  Branch (1131:8): [True: 3, False: 1]
  |  |  ------------------
  |  | 1132|      4|			 && child_scope != ce \
  |  |  ------------------
  |  |  |  Branch (1132:8): [True: 0, False: 3]
  |  |  ------------------
  |  | 1133|      4|			 /* Trait methods have already been separated at this point. However, their */ \
  |  | 1134|      4|			 /* scope isn't fixed until after inheritance checks to preserve the scope */ \
  |  | 1135|      4|			 /* in error messages. Skip them here explicitly. */ \
  |  | 1136|      4|			 && !(child_scope->ce_flags & ZEND_ACC_TRAIT) \
  |  |  ------------------
  |  |  |  |  282|      0|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  |  |  ------------------
  |  |  |  Branch (1136:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1137|      4|			 && child->type == ZEND_USER_FUNCTION) { \
  |  |  ------------------
  |  |  |  Branch (1137:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 1138|      0|				/* op_array wasn't duplicated yet */ \
  |  | 1139|      0|				zend_function *new_function = zend_arena_alloc(&CG(arena), sizeof(zend_op_array)); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  | 1140|      0|				memcpy(new_function, child, sizeof(zend_op_array)); \
  |  | 1141|      0|				Z_PTR_P(child_zv) = child = new_function; \
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1142|      0|				flags &= ~ZEND_INHERITANCE_LAZY_CHILD_CLONE; \
  |  |  ------------------
  |  |  |  | 1113|      0|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  |  |  ------------------
  |  | 1143|      0|			} \
  |  | 1144|      4|		} while(0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1239|      4|		child->common.fn_flags &= ~ZEND_ACC_OVERRIDE;
  ------------------
  |  |  261|      4|#define ZEND_ACC_OVERRIDE                (1 << 28) /*     |  X  |  X  |     */
  ------------------
 1240|      4|	}
 1241|       |
 1242|    904|#undef SEPARATE_METHOD
 1243|       |
 1244|    904|	return INHERITANCE_SUCCESS;
 1245|    975|}
zend_inheritance.c:func_filename:
 1047|     74|static zend_always_inline zend_string *func_filename(const zend_function *fn) {
 1048|     74|	return fn->common.type == ZEND_USER_FUNCTION ? fn->op_array.filename : NULL;
  ------------------
  |  Branch (1048:9): [True: 74, False: 0]
  ------------------
 1049|     74|}
zend_inheritance.c:func_lineno:
 1051|     74|static zend_always_inline uint32_t func_lineno(const zend_function *fn) {
 1052|     74|	return fn->common.type == ZEND_USER_FUNCTION ? fn->op_array.line_start : 0;
  ------------------
  |  Branch (1052:9): [True: 74, False: 0]
  ------------------
 1053|     74|}
zend_inheritance.c:zend_do_perform_implementation_check:
  791|    965|{
  792|    965|	uint32_t num_args, proto_num_args, fe_num_args;
  793|    965|	inheritance_status status, local_status;
  794|    965|	bool proto_is_variadic, fe_is_variadic;
  795|       |
  796|       |	/* Checks for constructors only if they are declared in an interface,
  797|       |	 * or explicitly marked as abstract
  798|       |	 */
  799|    965|	ZEND_ASSERT(!((fe->common.fn_flags & ZEND_ACC_CTOR)
  ------------------
  |  |  112|    965|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (799:2): [True: 0, False: 0]
  |  Branch (799:2): [True: 0, False: 0]
  |  Branch (799:2): [True: 0, False: 965]
  |  Branch (799:2): [True: 8, False: 0]
  |  Branch (799:2): [True: 0, False: 8]
  |  Branch (799:2): [True: 8, False: 957]
  ------------------
  800|    965|		&& ((proto->common.scope->ce_flags & ZEND_ACC_INTERFACE) == 0
  801|    965|			&& (proto->common.fn_flags & ZEND_ACC_ABSTRACT) == 0)));
  802|       |
  803|       |	/* If the prototype method is private and not abstract, we do not enforce a signature.
  804|       |	 * private abstract methods can only occur in traits. */
  805|    965|	ZEND_ASSERT(!(proto->common.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  112|    965|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (805:2): [True: 965, False: 0]
  |  Branch (805:2): [True: 0, False: 0]
  |  Branch (805:2): [True: 961, False: 4]
  |  Branch (805:2): [True: 4, False: 0]
  ------------------
  806|    965|			|| (proto->common.fn_flags & ZEND_ACC_ABSTRACT));
  807|       |
  808|       |	/* The number of required arguments cannot increase. */
  809|    965|	if (proto->common.required_num_args < fe->common.required_num_args) {
  ------------------
  |  Branch (809:6): [True: 7, False: 958]
  ------------------
  810|      7|		return INHERITANCE_ERROR;
  811|      7|	}
  812|       |
  813|       |	/* by-ref constraints on return values are covariant */
  814|    958|	if ((proto->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  352|    958|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (814:6): [True: 4, False: 954]
  ------------------
  815|      4|		&& !(fe->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  352|      4|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (815:6): [True: 3, False: 1]
  ------------------
  816|      3|		return INHERITANCE_ERROR;
  817|      3|	}
  818|       |
  819|    955|	proto_is_variadic = (proto->common.fn_flags & ZEND_ACC_VARIADIC) != 0;
  ------------------
  |  |  358|    955|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  820|    955|	fe_is_variadic = (fe->common.fn_flags & ZEND_ACC_VARIADIC) != 0;
  ------------------
  |  |  358|    955|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  821|       |
  822|       |	/* A variadic function cannot become non-variadic */
  823|    955|	if (proto_is_variadic && !fe_is_variadic) {
  ------------------
  |  Branch (823:6): [True: 3, False: 952]
  |  Branch (823:27): [True: 0, False: 3]
  ------------------
  824|      0|		return INHERITANCE_ERROR;
  825|      0|	}
  826|       |
  827|       |	/* The variadic argument is not included in the stored argument count. */
  828|    955|	proto_num_args = proto->common.num_args + proto_is_variadic;
  829|    955|	fe_num_args = fe->common.num_args + fe_is_variadic;
  830|    955|	num_args = MAX(proto_num_args, fe_num_args);
  ------------------
  |  |  517|    955|#define MAX(a, b)  (((a)>(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (517:21): [True: 19, False: 936]
  |  |  ------------------
  ------------------
  831|       |
  832|    955|	status = INHERITANCE_SUCCESS;
  833|  1.20k|	for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (833:23): [True: 288, False: 915]
  ------------------
  834|    288|		zend_arg_info *proto_arg_info =
  835|    288|			i < proto_num_args ? &proto->common.arg_info[i] :
  ------------------
  |  Branch (835:4): [True: 283, False: 5]
  ------------------
  836|    288|			proto_is_variadic ? &proto->common.arg_info[proto_num_args - 1] : NULL;
  ------------------
  |  Branch (836:4): [True: 0, False: 5]
  ------------------
  837|    288|		zend_arg_info *fe_arg_info =
  838|    288|			i < fe_num_args ? &fe->common.arg_info[i] :
  ------------------
  |  Branch (838:4): [True: 273, False: 15]
  ------------------
  839|    288|			fe_is_variadic ? &fe->common.arg_info[fe_num_args - 1] : NULL;
  ------------------
  |  Branch (839:4): [True: 1, False: 14]
  ------------------
  840|    288|		if (!proto_arg_info) {
  ------------------
  |  Branch (840:7): [True: 5, False: 283]
  ------------------
  841|       |			/* A new (optional) argument has been added, which is fine. */
  842|      5|			continue;
  843|      5|		}
  844|    283|		if (!fe_arg_info) {
  ------------------
  |  Branch (844:7): [True: 14, False: 269]
  ------------------
  845|       |			/* An argument has been removed. This is considered illegal, because arity checks
  846|       |			 * work based on a model where passing more than the declared number of parameters
  847|       |			 * to a function is an error. */
  848|     14|			return INHERITANCE_ERROR;
  849|     14|		}
  850|       |
  851|    269|		local_status = zend_do_perform_arg_type_hint_check(
  852|    269|			fe_scope, fe_arg_info, proto_scope, proto_arg_info);
  853|       |
  854|    269|		if (UNEXPECTED(local_status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|    269|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 39, False: 230]
  |  |  ------------------
  ------------------
  855|     39|			if (UNEXPECTED(local_status == INHERITANCE_ERROR)) {
  ------------------
  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 18]
  |  |  ------------------
  ------------------
  856|     21|				return INHERITANCE_ERROR;
  857|     21|			}
  858|     18|			ZEND_ASSERT(local_status == INHERITANCE_UNRESOLVED);
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (858:4): [True: 0, False: 18]
  |  Branch (858:4): [True: 18, False: 0]
  ------------------
  859|     18|			status = INHERITANCE_UNRESOLVED;
  860|     18|		}
  861|       |
  862|       |		/* by-ref constraints on arguments are invariant */
  863|    248|		if (ZEND_ARG_SEND_MODE(fe_arg_info) != ZEND_ARG_SEND_MODE(proto_arg_info)) {
  ------------------
  |  | 1130|    248|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|    248|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|    248|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|    248|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (ZEND_ARG_SEND_MODE(fe_arg_info) != ZEND_ARG_SEND_MODE(proto_arg_info)) {
  ------------------
  |  | 1130|    248|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|    248|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|    248|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|    248|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (863:7): [True: 5, False: 243]
  ------------------
  864|      5|			return INHERITANCE_ERROR;
  865|      5|		}
  866|    248|	}
  867|       |
  868|       |	/* Check return type compatibility, but only if the prototype already specifies
  869|       |	 * a return type. Adding a new return type is always valid. */
  870|    915|	if (proto->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|    915|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (870:6): [True: 858, False: 57]
  ------------------
  871|       |		/* Removing a return type is not valid, unless the parent return type is tentative. */
  872|    858|		if (!(fe->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|    858|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (872:7): [True: 15, False: 843]
  ------------------
  873|     15|			if (!ZEND_ARG_TYPE_IS_TENTATIVE(&proto->common.arg_info[-1])) {
  ------------------
  |  | 1136|     15|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|     15|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1128|     15|#define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     15|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (873:8): [True: 3, False: 12]
  ------------------
  874|      3|				return INHERITANCE_ERROR;
  875|      3|			}
  876|     12|			if (status == INHERITANCE_SUCCESS) {
  ------------------
  |  Branch (876:8): [True: 12, False: 0]
  ------------------
  877|     12|				return INHERITANCE_WARNING;
  878|     12|			}
  879|      0|			return status;
  880|     12|		}
  881|       |
  882|    843|		local_status = zend_perform_covariant_type_check(
  883|    843|			fe_scope, fe->common.arg_info[-1].type, proto_scope, proto->common.arg_info[-1].type);
  884|       |
  885|    843|		if (UNEXPECTED(local_status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|    843|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 48, False: 795]
  |  |  ------------------
  ------------------
  886|     48|			if (local_status == INHERITANCE_ERROR
  ------------------
  |  Branch (886:8): [True: 22, False: 26]
  ------------------
  887|     22|					&& ZEND_ARG_TYPE_IS_TENTATIVE(&proto->common.arg_info[-1])) {
  ------------------
  |  | 1136|     22|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|     22|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1128|     22|#define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     22|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1136:2): [True: 1, False: 21]
  |  |  ------------------
  ------------------
  888|      1|				local_status = INHERITANCE_WARNING;
  889|      1|			}
  890|     48|			return local_status;
  891|     48|		}
  892|    843|	}
  893|       |
  894|    852|	return status;
  895|    915|}
zend_inheritance.c:zend_do_perform_arg_type_hint_check:
  767|    269|{
  768|    269|	if (!ZEND_TYPE_IS_SET(fe_arg_info->type) || ZEND_TYPE_PURE_MASK(fe_arg_info->type) == MAY_BE_ANY) {
  ------------------
  |  |  152|    538|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    269|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
              	if (!ZEND_TYPE_IS_SET(fe_arg_info->type) || ZEND_TYPE_PURE_MASK(fe_arg_info->type) == MAY_BE_ANY) {
  ------------------
  |  |  264|    192|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|    192|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (!ZEND_TYPE_IS_SET(fe_arg_info->type) || ZEND_TYPE_PURE_MASK(fe_arg_info->type) == MAY_BE_ANY) {
  ------------------
  |  |   34|    192|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|    192|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|    192|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|    192|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    192|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|    192|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    192|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|    192|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    192|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|    192|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|    192|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|    192|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    192|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|    192|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    192|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|    192|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    192|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|    192|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    192|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (768:6): [True: 77, False: 192]
  |  Branch (768:46): [True: 39, False: 153]
  ------------------
  769|       |		/* Child with no type or mixed type is always compatible */
  770|    116|		return INHERITANCE_SUCCESS;
  771|    116|	}
  772|       |
  773|    153|	if (!ZEND_TYPE_IS_SET(proto_arg_info->type)) {
  ------------------
  |  |  152|    153|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    153|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (773:6): [True: 2, False: 151]
  ------------------
  774|       |		/* Child defines a type, but parent doesn't, violates LSP */
  775|      2|		return INHERITANCE_ERROR;
  776|      2|	}
  777|       |
  778|       |	/* Contravariant type check is performed as a covariant type check with swapped
  779|       |	 * argument order. */
  780|    151|	return zend_perform_covariant_type_check(
  781|    151|		proto_scope, proto_arg_info->type, fe_scope, fe_arg_info->type);
  782|    153|}
zend_inheritance.c:perform_delayable_implementation_check:
 1100|    879|{
 1101|    879|	inheritance_status status =
 1102|    879|		zend_do_perform_implementation_check(fe, fe_scope, proto, proto_scope);
 1103|    879|	if (UNEXPECTED(status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|    879|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 70, False: 809]
  |  |  ------------------
  ------------------
 1104|     70|		if (EXPECTED(status == INHERITANCE_UNRESOLVED)) {
  ------------------
  |  |  456|     70|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 16, False: 54]
  |  |  ------------------
  ------------------
 1105|     16|			add_compatibility_obligation(ce, fe, fe_scope, proto, proto_scope);
 1106|     54|		} else {
 1107|     54|			ZEND_ASSERT(status == INHERITANCE_ERROR || status == INHERITANCE_WARNING);
  ------------------
  |  |  112|     54|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1107:4): [True: 54, False: 0]
  |  Branch (1107:4): [True: 0, False: 0]
  |  Branch (1107:4): [True: 47, False: 7]
  |  Branch (1107:4): [True: 7, False: 0]
  ------------------
 1108|     54|			emit_incompatible_method_error(fe, fe_scope, proto, proto_scope, status);
 1109|     54|		}
 1110|     70|	}
 1111|    879|}
zend_inheritance.c:add_compatibility_obligation:
 3171|     16|		const zend_function *parent_fn, zend_class_entry *parent_scope) {
 3172|     16|	HashTable *obligations = get_or_init_obligations_for_class(ce);
 3173|     16|	variance_obligation *obligation = emalloc(sizeof(variance_obligation));
  ------------------
  |  |  150|     16|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3174|     16|	obligation->type = OBLIGATION_COMPATIBILITY;
 3175|       |	/* Copy functions, because they may be stack-allocated in the case of traits. */
 3176|     16|	if (child_fn->common.type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (3176:6): [True: 0, False: 16]
  ------------------
 3177|      0|		memcpy(&obligation->child_fn, child_fn, sizeof(zend_internal_function));
 3178|     16|	} else {
 3179|     16|		memcpy(&obligation->child_fn, child_fn, sizeof(zend_op_array));
 3180|     16|	}
 3181|     16|	if (parent_fn->common.type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (3181:6): [True: 3, False: 13]
  ------------------
 3182|      3|		memcpy(&obligation->parent_fn, parent_fn, sizeof(zend_internal_function));
 3183|     13|	} else {
 3184|     13|		memcpy(&obligation->parent_fn, parent_fn, sizeof(zend_op_array));
 3185|     13|	}
 3186|     16|	obligation->child_scope = child_scope;
 3187|     16|	obligation->parent_scope = parent_scope;
 3188|     16|	zend_hash_next_index_insert_ptr(obligations, obligation);
 3189|     16|}
zend_inheritance.c:get_or_init_obligations_for_class:
 3139|     26|static HashTable *get_or_init_obligations_for_class(zend_class_entry *ce) {
 3140|     26|	HashTable *ht;
 3141|     26|	zend_ulong key;
 3142|     26|	if (!CG(delayed_variance_obligations)) {
  ------------------
  |  |   35|     26|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3142:6): [True: 24, False: 2]
  ------------------
 3143|     24|		ALLOC_HASHTABLE(CG(delayed_variance_obligations));
  ------------------
  |  |  232|     24|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     24|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3144|     24|		zend_hash_init(CG(delayed_variance_obligations), 0, NULL, variance_obligation_ht_dtor, 0);
  ------------------
  |  |  111|     24|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 3145|     24|	}
 3146|       |
 3147|     26|	key = (zend_ulong) (uintptr_t) ce;
 3148|     26|	ht = zend_hash_index_find_ptr(CG(delayed_variance_obligations), key);
  ------------------
  |  |   35|     26|# define CG(v) (compiler_globals.v)
  ------------------
 3149|     26|	if (ht) {
  ------------------
  |  Branch (3149:6): [True: 2, False: 24]
  ------------------
 3150|      2|		return ht;
 3151|      2|	}
 3152|       |
 3153|     24|	ALLOC_HASHTABLE(ht);
  ------------------
  |  |  232|     26|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     26|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3154|     24|	zend_hash_init(ht, 0, NULL, variance_obligation_dtor, 0);
  ------------------
  |  |  111|     24|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 3155|     24|	zend_hash_index_add_new_ptr(CG(delayed_variance_obligations), key, ht);
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
 3156|     24|	ce->ce_flags |= ZEND_ACC_UNRESOLVED_VARIANCE;
  ------------------
  |  |  320|     24|#define ZEND_ACC_UNRESOLVED_VARIANCE     (1 << 19) /*  X  |     |     |     */
  ------------------
 3157|     24|	return ht;
 3158|     26|}
zend_inheritance.c:variance_obligation_ht_dtor:
 3134|     24|static void variance_obligation_ht_dtor(zval *zv) {
 3135|     24|	zend_hash_destroy(Z_PTR_P(zv));
  ------------------
  |  | 1053|     24|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     24|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3136|       |	FREE_HASHTABLE(Z_PTR_P(zv));
  ------------------
  |  |  235|     24|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     24|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     24|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3137|     24|}
zend_inheritance.c:variance_obligation_dtor:
 3130|     26|static void variance_obligation_dtor(zval *zv) {
 3131|       |	efree(Z_PTR_P(zv));
  ------------------
  |  |  154|     26|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     26|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     26|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     26|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     26|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3132|     26|}
zend_inheritance.c:emit_incompatible_method_error:
 1058|     69|		inheritance_status status) {
 1059|     69|	zend_string *parent_prototype = zend_get_function_declaration(parent, parent_scope);
 1060|     69|	zend_string *child_prototype = zend_get_function_declaration(child, child_scope);
 1061|     69|	if (status == INHERITANCE_UNRESOLVED) {
  ------------------
  |  Branch (1061:6): [True: 15, False: 54]
  ------------------
 1062|       |		// TODO Improve error message if first unresolved class is present in child and parent?
 1063|       |		/* Fetch the first unresolved class from registered autoloads */
 1064|     15|		const zend_string *unresolved_class = NULL;
 1065|     15|		ZEND_HASH_MAP_FOREACH_STR_KEY(CG(delayed_autoloads), unresolved_class) {
  ------------------
  |  | 1361|     15|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     15|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     15|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     15|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     15|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     15|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     15|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     15|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 15, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     15|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     15|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     15|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 15]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     15|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|     15|	_key = _p->key;
  ------------------
  |  Branch (1065:3): [True: 0, False: 15]
  |  Branch (1065:3): [True: 15, False: 0]
  ------------------
 1066|     15|			break;
 1067|     45|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     15|		} \
  |  | 1102|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1068|     15|		ZEND_ASSERT(unresolved_class);
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1068:3): [True: 0, False: 15]
  |  Branch (1068:3): [True: 15, False: 0]
  ------------------
 1069|       |
 1070|     15|		zend_error_at(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|     15|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1071|     15|			"Could not check compatibility between %s and %s, because class %s is not available",
 1072|     15|			ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype), ZSTR_VAL(unresolved_class));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype), ZSTR_VAL(unresolved_class));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype), ZSTR_VAL(unresolved_class));
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1073|     54|	} else if (status == INHERITANCE_WARNING) {
  ------------------
  |  Branch (1073:13): [True: 7, False: 47]
  ------------------
 1074|      7|		const zend_attribute *return_type_will_change_attribute = zend_get_attribute_str(
 1075|      7|			child->common.attributes,
 1076|      7|			"returntypewillchange",
 1077|      7|			sizeof("returntypewillchange")-1
 1078|      7|		);
 1079|       |
 1080|      7|		if (!return_type_will_change_attribute) {
  ------------------
  |  Branch (1080:7): [True: 6, False: 1]
  ------------------
 1081|      6|			zend_error_at(E_DEPRECATED, func_filename(child), func_lineno(child),
  ------------------
  |  |   36|      6|#define E_DEPRECATED		(1<<13L)
  ------------------
 1082|      6|				"Return type of %s should either be compatible with %s, "
 1083|      6|				"or the #[\\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice",
 1084|      6|				ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1085|      6|			ZEND_ASSERT(!EG(exception));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1085:4): [True: 0, False: 6]
  |  Branch (1085:4): [True: 6, False: 0]
  ------------------
 1086|      6|		}
 1087|     47|	} else {
 1088|     47|		zend_error_at(E_COMPILE_ERROR, func_filename(child), func_lineno(child),
  ------------------
  |  |   28|     47|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1089|     47|			"Declaration of %s must be compatible with %s",
 1090|     47|			ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype));
  ------------------
  |  |   67|     47|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(child_prototype), ZSTR_VAL(parent_prototype));
  ------------------
  |  |   67|     47|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1091|     47|	}
 1092|     69|	zend_string_efree(child_prototype);
 1093|     69|	zend_string_efree(parent_prototype);
 1094|     69|}
zend_inheritance.c:zend_get_function_declaration:
  914|    138|{
  915|    138|	smart_str str = {0};
  916|       |
  917|    138|	if (fptr->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE) {
  ------------------
  |  |  352|    138|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (917:6): [True: 6, False: 132]
  ------------------
  918|      6|		smart_str_appendc(&str, '&');
  919|      6|	}
  920|       |
  921|    138|	if (fptr->common.scope) {
  ------------------
  |  Branch (921:6): [True: 138, False: 0]
  ------------------
  922|    138|		if (fptr->common.scope->ce_flags & ZEND_ACC_ANON_CLASS) {
  ------------------
  |  |  283|    138|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
  |  Branch (922:7): [True: 0, False: 138]
  ------------------
  923|       |			/* cut off on NULL byte ... class@anonymous */
  924|      0|			smart_str_appends(&str, ZSTR_VAL(fptr->common.scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  925|    138|		} else {
  926|    138|			smart_str_append(&str, fptr->common.scope->name);
  927|    138|		}
  928|    138|		smart_str_appends(&str, "::");
  929|    138|	}
  930|       |
  931|    138|	smart_str_append(&str, fptr->common.function_name);
  932|    138|	smart_str_appendc(&str, '(');
  933|       |
  934|    138|	if (fptr->common.arg_info) {
  ------------------
  |  Branch (934:6): [True: 123, False: 15]
  ------------------
  935|    123|		uint32_t num_args, required;
  936|    123|		zend_arg_info *arg_info = fptr->common.arg_info;
  937|       |
  938|    123|		required = fptr->common.required_num_args;
  939|    123|		num_args = fptr->common.num_args;
  940|    123|		if (fptr->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|    123|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (940:7): [True: 7, False: 116]
  ------------------
  941|      7|			num_args++;
  942|      7|		}
  943|    228|		for (uint32_t i = 0; i < num_args;) {
  ------------------
  |  Branch (943:24): [True: 105, False: 123]
  ------------------
  944|    105|			zend_append_type_hint(&str, scope, arg_info, false);
  945|       |
  946|    105|			if (ZEND_ARG_SEND_MODE(arg_info)) {
  ------------------
  |  | 1130|    105|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|    105|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|    105|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|    105|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1130:2): [True: 6, False: 99]
  |  |  ------------------
  ------------------
  947|      6|				smart_str_appendc(&str, '&');
  948|      6|			}
  949|       |
  950|    105|			if (ZEND_ARG_IS_VARIADIC(arg_info)) {
  ------------------
  |  | 1132|    105|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|    105|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1126|    105|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|    105|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1132:2): [True: 7, False: 98]
  |  |  ------------------
  ------------------
  951|      7|				smart_str_appends(&str, "...");
  952|      7|			}
  953|       |
  954|    105|			smart_str_appendc(&str, '$');
  955|    105|			smart_str_append(&str, arg_info->name);
  956|       |
  957|    105|			if (i >= required && !ZEND_ARG_IS_VARIADIC(arg_info)) {
  ------------------
  |  | 1132|     33|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|     33|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1126|     33|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     33|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (957:8): [True: 33, False: 72]
  |  Branch (957:25): [True: 26, False: 7]
  ------------------
  958|     26|				smart_str_appends(&str, " = ");
  959|       |
  960|     26|				if (fptr->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (960:9): [True: 12, False: 14]
  ------------------
  961|     12|					if (arg_info->default_value) {
  ------------------
  |  Branch (961:10): [True: 12, False: 0]
  ------------------
  962|     12|						smart_str_append(&str, arg_info->default_value);
  963|     12|					} else {
  964|      0|						smart_str_appends(&str, "<default>");
  965|      0|					}
  966|     14|				} else {
  967|     14|					zend_op *precv = NULL;
  968|     14|					{
  969|     14|						uint32_t idx  = i;
  970|     14|						zend_op *op = fptr->op_array.opcodes;
  971|     14|						const zend_op *end = op + fptr->op_array.last;
  972|       |
  973|     14|						++idx;
  974|     63|						while (op < end) {
  ------------------
  |  Branch (974:14): [True: 49, False: 14]
  ------------------
  975|     49|							if ((op->opcode == ZEND_RECV || op->opcode == ZEND_RECV_INIT)
  ------------------
  |  |  186|     98|#define ZEND_RECV                            63
  ------------------
              							if ((op->opcode == ZEND_RECV || op->opcode == ZEND_RECV_INIT)
  ------------------
  |  |  187|     37|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (975:13): [True: 12, False: 37]
  |  Branch (975:40): [True: 18, False: 19]
  ------------------
  976|     30|									&& op->op1.num == (zend_ulong)idx)
  ------------------
  |  Branch (976:13): [True: 14, False: 16]
  ------------------
  977|     14|							{
  978|     14|								precv = op;
  979|     14|							}
  980|     49|							++op;
  981|     49|						}
  982|     14|					}
  983|     14|					if (precv && precv->opcode == ZEND_RECV_INIT && precv->op2_type != IS_UNUSED) {
  ------------------
  |  |  187|     28|#define ZEND_RECV_INIT                       64
  ------------------
              					if (precv && precv->opcode == ZEND_RECV_INIT && precv->op2_type != IS_UNUSED) {
  ------------------
  |  |  863|     14|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (983:10): [True: 14, False: 0]
  |  Branch (983:19): [True: 14, False: 0]
  |  Branch (983:54): [True: 14, False: 0]
  ------------------
  984|     14|						zval *zv = RT_CONSTANT(precv, precv->op2);
  ------------------
  |  |  841|     14|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  985|       |
  986|     14|						if (Z_TYPE_P(zv) == IS_FALSE) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(zv) == IS_FALSE) {
  ------------------
  |  |  608|     14|#define IS_FALSE					2
  ------------------
  |  Branch (986:11): [True: 1, False: 13]
  ------------------
  987|      1|							smart_str_appends(&str, "false");
  988|     13|						} else if (Z_TYPE_P(zv) == IS_TRUE) {
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(zv) == IS_TRUE) {
  ------------------
  |  |  609|     13|#define IS_TRUE						3
  ------------------
  |  Branch (988:18): [True: 0, False: 13]
  ------------------
  989|      0|							smart_str_appends(&str, "true");
  990|     13|						} else if (Z_TYPE_P(zv) == IS_NULL) {
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(zv) == IS_NULL) {
  ------------------
  |  |  607|     13|#define IS_NULL						1
  ------------------
  |  Branch (990:18): [True: 6, False: 7]
  ------------------
  991|      6|							smart_str_appends(&str, "null");
  992|      7|						} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|      7|#define IS_STRING					6
  ------------------
  |  Branch (992:18): [True: 1, False: 6]
  ------------------
  993|      1|							smart_str_appendc(&str, '\'');
  994|      1|							smart_str_appendl(&str, Z_STRVAL_P(zv), MIN(Z_STRLEN_P(zv), 10));
  ------------------
  |  |  985|      1|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      1|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							smart_str_appendl(&str, Z_STRVAL_P(zv), MIN(Z_STRLEN_P(zv), 10));
  ------------------
  |  |  518|      1|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  995|      1|							if (Z_STRLEN_P(zv) > 10) {
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (995:12): [True: 0, False: 1]
  ------------------
  996|      0|								smart_str_appends(&str, "...");
  997|      0|							}
  998|      1|							smart_str_appendc(&str, '\'');
  999|      6|						} else if (Z_TYPE_P(zv) == IS_ARRAY) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(zv) == IS_ARRAY) {
  ------------------
  |  |  613|      6|#define IS_ARRAY					7
  ------------------
  |  Branch (999:18): [True: 2, False: 4]
  ------------------
 1000|      2|							if (zend_hash_num_elements(Z_ARRVAL_P(zv)) == 0) {
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1000:12): [True: 1, False: 1]
  ------------------
 1001|      1|								smart_str_appends(&str, "[]");
 1002|      1|							} else {
 1003|      1|								smart_str_appends(&str, "[...]");
 1004|      1|							}
 1005|      4|						} else if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(zv) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      4|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1005:18): [True: 2, False: 2]
  ------------------
 1006|      2|							zend_ast *ast = Z_ASTVAL_P(zv);
  ------------------
  |  | 1041|      2|#define Z_ASTVAL_P(zval_p)			Z_ASTVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1040|      2|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1038|      2|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1007|      2|							if (ast->kind == ZEND_AST_CONSTANT) {
  ------------------
  |  Branch (1007:12): [True: 0, False: 2]
  ------------------
 1008|      0|								smart_str_append(&str, zend_ast_get_constant_name(ast));
 1009|      2|							} else if (ast->kind == ZEND_AST_CLASS_CONST
  ------------------
  |  Branch (1009:19): [True: 2, False: 0]
  ------------------
 1010|      2|							 && ast->child[1]->kind == ZEND_AST_ZVAL
  ------------------
  |  Branch (1010:12): [True: 1, False: 1]
  ------------------
 1011|      1|							 && Z_TYPE_P(zend_ast_get_zval(ast->child[1])) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							 && Z_TYPE_P(zend_ast_get_zval(ast->child[1])) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (1011:12): [True: 1, False: 0]
  ------------------
 1012|      1|								smart_str_append(&str, zend_ast_get_str(ast->child[0]));
 1013|      1|								smart_str_appends(&str, "::");
 1014|      1|								smart_str_append(&str, zend_ast_get_str(ast->child[1]));
 1015|      1|							} else {
 1016|      1|								smart_str_appends(&str, "<expression>");
 1017|      1|							}
 1018|      2|						} else {
 1019|      2|							zend_string *tmp_zv_str;
 1020|      2|							zend_string *zv_str = zval_get_tmp_string(zv, &tmp_zv_str);
 1021|      2|							smart_str_append(&str, zv_str);
 1022|      2|							zend_tmp_string_release(tmp_zv_str);
 1023|      2|						}
 1024|     14|					}
 1025|     14|				}
 1026|     26|			}
 1027|       |
 1028|    105|			if (++i < num_args) {
  ------------------
  |  Branch (1028:8): [True: 38, False: 67]
  ------------------
 1029|     38|				smart_str_appends(&str, ", ");
 1030|     38|			}
 1031|    105|			arg_info++;
 1032|    105|		}
 1033|    123|	}
 1034|       |
 1035|    138|	smart_str_appendc(&str, ')');
 1036|       |
 1037|    138|	if (fptr->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|    138|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (1037:6): [True: 82, False: 56]
  ------------------
 1038|     82|		smart_str_appends(&str, ": ");
 1039|     82|		zend_append_type_hint(&str, scope, fptr->common.arg_info - 1, true);
 1040|     82|	}
 1041|    138|	smart_str_0(&str);
 1042|       |
 1043|    138|	return str.s;
 1044|    138|}
zend_inheritance.c:zend_append_type_hint:
  900|    187|{
  901|    187|	if (ZEND_TYPE_IS_SET(arg_info->type)) {
  ------------------
  |  |  152|    187|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    187|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 147, False: 40]
  |  |  ------------------
  ------------------
  902|    147|		zend_string *type_str = zend_type_to_string_resolved(arg_info->type, scope);
  903|    147|		smart_str_append(str, type_str);
  904|    147|		zend_string_release(type_str);
  905|    147|		if (!return_hint) {
  ------------------
  |  Branch (905:7): [True: 65, False: 82]
  ------------------
  906|     65|			smart_str_appendc(str, ' ');
  907|     65|		}
  908|    147|	}
  909|    187|}
zend_inheritance.c:prop_get_variance:
 1432|     99|static prop_variance prop_get_variance(const zend_property_info *prop_info) {
 1433|     99|	bool unbacked = prop_info->flags & ZEND_ACC_VIRTUAL;
  ------------------
  |  |  270|     99|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
 1434|     99|	if (unbacked && prop_info->hooks) {
  ------------------
  |  Branch (1434:6): [True: 18, False: 81]
  |  Branch (1434:18): [True: 18, False: 0]
  ------------------
 1435|     18|		if (!prop_info->hooks[ZEND_PROPERTY_HOOK_SET]) {
  ------------------
  |  Branch (1435:7): [True: 8, False: 10]
  ------------------
 1436|      8|			return PROP_COVARIANT;
 1437|      8|		}
 1438|     10|		if (!prop_info->hooks[ZEND_PROPERTY_HOOK_GET]) {
  ------------------
  |  Branch (1438:7): [True: 5, False: 5]
  ------------------
 1439|      5|			return PROP_CONTRAVARIANT;
 1440|      5|		}
 1441|     10|	}
 1442|     86|	return PROP_INVARIANT;
 1443|     99|}
zend_inheritance.c:verify_property_type_compatibility:
 1340|     84|) {
 1341|     84|	inheritance_status result = full_property_types_compatible(parent_info, child_info, variance);
 1342|     84|	if ((result == INHERITANCE_ERROR && throw_on_error) || (result == INHERITANCE_UNRESOLVED && throw_on_unresolved)) {
  ------------------
  |  Branch (1342:7): [True: 26, False: 58]
  |  Branch (1342:38): [True: 14, False: 12]
  |  Branch (1342:58): [True: 24, False: 46]
  |  Branch (1342:94): [True: 6, False: 18]
  ------------------
 1343|     20|		emit_incompatible_property_error(child_info, parent_info, variance);
 1344|     20|	}
 1345|     84|	if (result != INHERITANCE_SUCCESS) {
  ------------------
  |  Branch (1345:6): [True: 30, False: 54]
  ------------------
 1346|     30|		return result;
 1347|     30|	}
 1348|     54|	if (parent_info->flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     54|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1348:6): [True: 6, False: 48]
  ------------------
 1349|      6|		ZEND_ASSERT(parent_info->hooks);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1349:3): [True: 0, False: 6]
  |  Branch (1349:3): [True: 6, False: 0]
  ------------------
 1350|      6|		if (parent_info->hooks[ZEND_PROPERTY_HOOK_SET]
  ------------------
  |  Branch (1350:7): [True: 3, False: 3]
  ------------------
 1351|      3|		 && (!child_info->hooks || !child_info->hooks[ZEND_PROPERTY_HOOK_SET])) {
  ------------------
  |  Branch (1351:8): [True: 2, False: 1]
  |  Branch (1351:30): [True: 0, False: 1]
  ------------------
 1352|      2|			zend_type set_type = parent_info->hooks[ZEND_PROPERTY_HOOK_SET]->common.arg_info[0].type;
 1353|      2|			inheritance_status result = zend_perform_covariant_type_check(
 1354|      2|				parent_info->ce, set_type, child_info->ce, child_info->type);
 1355|      2|			if ((result == INHERITANCE_ERROR && throw_on_error) || (result == INHERITANCE_UNRESOLVED && throw_on_unresolved)) {
  ------------------
  |  Branch (1355:9): [True: 1, False: 1]
  |  Branch (1355:40): [True: 1, False: 0]
  |  Branch (1355:60): [True: 0, False: 1]
  |  Branch (1355:96): [True: 0, False: 0]
  ------------------
 1356|      1|				emit_set_hook_type_error(child_info, parent_info);
 1357|      1|			}
 1358|      2|		}
 1359|      6|	}
 1360|     54|	return INHERITANCE_SUCCESS;
 1361|     54|}
zend_inheritance.c:full_property_types_compatible:
 1281|     84|		prop_variance variance) {
 1282|     84|	if (ZEND_TYPE_PURE_MASK(parent_info->type) == ZEND_TYPE_PURE_MASK(child_info->type)
  ------------------
  |  |  264|     84|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     84|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_PURE_MASK(parent_info->type) == ZEND_TYPE_PURE_MASK(child_info->type)
  ------------------
  |  |  264|    168|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|     84|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1282:6): [True: 63, False: 21]
  ------------------
 1283|     63|			&& ZEND_TYPE_NAME(parent_info->type) == ZEND_TYPE_NAME(child_info->type)) {
  ------------------
  |  |  184|     63|	((zend_string *) (t).ptr)
  ------------------
              			&& ZEND_TYPE_NAME(parent_info->type) == ZEND_TYPE_NAME(child_info->type)) {
  ------------------
  |  |  184|     63|	((zend_string *) (t).ptr)
  ------------------
  |  Branch (1283:7): [True: 23, False: 40]
  ------------------
 1284|     23|		return INHERITANCE_SUCCESS;
 1285|     23|	}
 1286|       |
 1287|     61|	if (ZEND_TYPE_IS_SET(parent_info->type) != ZEND_TYPE_IS_SET(child_info->type)) {
  ------------------
  |  |  152|     61|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     61|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_SET(parent_info->type) != ZEND_TYPE_IS_SET(child_info->type)) {
  ------------------
  |  |  152|     61|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     61|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1287:6): [True: 3, False: 58]
  ------------------
 1288|      3|		return INHERITANCE_ERROR;
 1289|      3|	}
 1290|       |
 1291|       |	/* Perform a covariant type check in both directions to determined invariance. */
 1292|     58|	inheritance_status status1 = variance == PROP_CONTRAVARIANT ? INHERITANCE_SUCCESS :
  ------------------
  |  Branch (1292:31): [True: 1, False: 57]
  ------------------
 1293|     58|		zend_perform_covariant_type_check(
 1294|     57|			child_info->ce, child_info->type, parent_info->ce, parent_info->type);
 1295|     58|	inheritance_status status2 = variance == PROP_COVARIANT ? INHERITANCE_SUCCESS :
  ------------------
  |  Branch (1295:31): [True: 2, False: 56]
  ------------------
 1296|     58|		zend_perform_covariant_type_check(
 1297|     56|			parent_info->ce, parent_info->type, child_info->ce, child_info->type);
 1298|     58|	if (status1 == INHERITANCE_SUCCESS && status2 == INHERITANCE_SUCCESS) {
  ------------------
  |  Branch (1298:6): [True: 28, False: 30]
  |  Branch (1298:40): [True: 11, False: 17]
  ------------------
 1299|     11|		return INHERITANCE_SUCCESS;
 1300|     11|	}
 1301|     47|	if (status1 == INHERITANCE_ERROR || status2 == INHERITANCE_ERROR) {
  ------------------
  |  Branch (1301:6): [True: 12, False: 35]
  |  Branch (1301:38): [True: 11, False: 24]
  ------------------
 1302|     23|		return INHERITANCE_ERROR;
 1303|     23|	}
 1304|     24|	ZEND_ASSERT(status1 == INHERITANCE_UNRESOLVED || status2 == INHERITANCE_UNRESOLVED);
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1304:2): [True: 24, False: 0]
  |  Branch (1304:2): [True: 0, False: 0]
  |  Branch (1304:2): [True: 18, False: 6]
  |  Branch (1304:2): [True: 6, False: 0]
  ------------------
 1305|     24|	return INHERITANCE_UNRESOLVED;
 1306|     24|}
zend_inheritance.c:emit_incompatible_property_error:
 1309|     20|		const zend_property_info *child, const zend_property_info *parent, prop_variance variance) {
 1310|     20|	zend_string *type_str = zend_type_to_string_resolved(parent->type, parent->ce);
 1311|     20|	zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|     20|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1312|     20|		"Type of %s::$%s must be %s%s (as in class %s)",
 1313|     20|		ZSTR_VAL(child->ce->name),
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1314|     20|		zend_get_unmangled_property_name(child->name),
 1315|     20|		variance == PROP_INVARIANT ? "" :
  ------------------
  |  Branch (1315:3): [True: 19, False: 1]
  ------------------
 1316|     20|		variance == PROP_COVARIANT ? "subtype of " : "supertype of ",
  ------------------
  |  Branch (1316:3): [True: 1, False: 0]
  ------------------
 1317|     20|		ZSTR_VAL(type_str),
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1318|     20|		ZSTR_VAL(parent->ce->name));
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1319|     20|}
zend_inheritance.c:emit_set_hook_type_error:
 1322|      1|{
 1323|      1|	zend_type set_type = parent->hooks[ZEND_PROPERTY_HOOK_SET]->common.arg_info[0].type;
 1324|      1|	zend_string *type_str = zend_type_to_string_resolved(set_type, parent->ce);
 1325|      1|	zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1326|      1|		"Set type of %s::$%s must be supertype of %s (as in %s %s)",
 1327|      1|		ZSTR_VAL(child->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1328|      1|		zend_get_unmangled_property_name(child->name),
 1329|      1|		ZSTR_VAL(type_str),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1330|      1|		zend_get_object_type_case(parent->ce, false),
 1331|      1|		ZSTR_VAL(parent->ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1332|      1|}
zend_inheritance.c:add_property_compatibility_obligation:
 3193|      8|		const zend_property_info *parent_prop, prop_variance variance) {
 3194|      8|	HashTable *obligations = get_or_init_obligations_for_class(ce);
 3195|       |	variance_obligation *obligation = emalloc(sizeof(variance_obligation));
  ------------------
  |  |  150|      8|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3196|      8|	obligation->type = OBLIGATION_PROPERTY_COMPATIBILITY;
 3197|      8|	obligation->child_prop = child_prop;
 3198|      8|	obligation->parent_prop = parent_prop;
 3199|      8|	obligation->variance = variance;
 3200|      8|	zend_hash_next_index_insert_ptr(obligations, obligation);
 3201|      8|}
zend_inheritance.c:do_inherit_class_constant:
 1648|    272|{
 1649|    272|	zval *zv = zend_hash_find_known_hash(&ce->constants_table, name);
 1650|    272|	zend_class_constant *c;
 1651|       |
 1652|    272|	if (zv != NULL) {
  ------------------
  |  Branch (1652:6): [True: 6, False: 266]
  ------------------
 1653|      6|		c = (zend_class_constant*)Z_PTR_P(zv);
  ------------------
  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1654|      6|		bool inherit = do_inherit_constant_check(ce, parent_const, name);
 1655|      6|		ZEND_ASSERT(!inherit);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1655:3): [True: 0, False: 6]
  |  Branch (1655:3): [True: 4, False: 2]
  ------------------
 1656|    266|	} else if (!(ZEND_CLASS_CONST_FLAGS(parent_const) & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  498|    266|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    266|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	} else if (!(ZEND_CLASS_CONST_FLAGS(parent_const) & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|    266|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1656:13): [True: 265, False: 1]
  ------------------
 1657|    265|		if (Z_TYPE(parent_const->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|    265|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(parent_const->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    265|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1657:7): [True: 2, False: 263]
  ------------------
 1658|      2|			ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      2|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 1659|      2|			ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
  ------------------
  |  |  333|      2|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
 1660|      2|			if (ce->parent->ce_flags & ZEND_ACC_IMMUTABLE) {
  ------------------
  |  |  241|      2|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (1660:8): [True: 0, False: 2]
  ------------------
 1661|      0|				c = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1662|      0|				memcpy(c, parent_const, sizeof(zend_class_constant));
 1663|      0|				parent_const = c;
 1664|      0|				Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED;
  ------------------
  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  ------------------
              				Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED;
  ------------------
  |  |   28|      0|#define CONST_OWNED				(1<<3)				/* constant should be destroyed together with class */
  ------------------
 1665|      0|			}
 1666|      2|		}
 1667|    265|		if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (1667:7): [True: 150, False: 115]
  ------------------
 1668|       |			c = pemalloc(sizeof(zend_class_constant), 1);
  ------------------
  |  |  188|    150|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    150|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    150|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    150|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    150|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 150, Folded]
  |  |  ------------------
  ------------------
 1669|    150|			memcpy(c, parent_const, sizeof(zend_class_constant));
 1670|    150|			parent_const = c;
 1671|    150|		}
 1672|    265|		_zend_hash_append_ptr(&ce->constants_table, name, parent_const);
 1673|    265|	}
 1674|    272|}
zend_inheritance.c:do_inherit_method:
 1249|  3.77k|{
 1250|  3.77k|	zval *child = zend_hash_find_known_hash(&ce->function_table, key);
 1251|       |
 1252|  3.77k|	if (child) {
  ------------------
  |  Branch (1252:6): [True: 959, False: 2.81k]
  ------------------
 1253|    959|		zend_function *func = (zend_function*)Z_PTR_P(child);
  ------------------
  |  | 1053|    959|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    959|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1254|       |
 1255|    959|		if (is_interface && UNEXPECTED(func == parent)) {
  ------------------
  |  |  457|    735|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 735]
  |  |  ------------------
  ------------------
  |  Branch (1255:7): [True: 735, False: 224]
  ------------------
 1256|       |			/* The same method in interface may be inherited few times */
 1257|      0|			return;
 1258|      0|		}
 1259|       |
 1260|    959|		do_inheritance_check_on_method(
 1261|    959|			func, func->common.scope, parent, parent->common.scope, ce, child, flags);
 1262|  2.81k|	} else {
 1263|       |
 1264|  2.81k|		if (is_interface || (parent->common.fn_flags & (ZEND_ACC_ABSTRACT))) {
  ------------------
  |  |  233|  2.74k|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (1264:7): [True: 78, False: 2.74k]
  |  Branch (1264:23): [True: 4, False: 2.73k]
  ------------------
 1265|     82|			ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|     82|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 1266|     82|		}
 1267|       |
 1268|  2.81k|		parent = zend_duplicate_function(parent, ce);
 1269|       |
 1270|  2.81k|		if (!is_interface) {
  ------------------
  |  Branch (1270:7): [True: 2.74k, False: 78]
  ------------------
 1271|  2.74k|			_zend_hash_append_ptr(&ce->function_table, key, parent);
 1272|  2.74k|		} else {
 1273|     78|			zend_hash_add_new_ptr(&ce->function_table, key, parent);
 1274|     78|		}
 1275|  2.81k|	}
 1276|  3.77k|}
zend_inheritance.c:do_inherit_parent_constructor:
  134|    326|{
  135|    326|	zend_class_entry *parent = ce->parent;
  136|       |
  137|    326|	ZEND_ASSERT(parent != NULL);
  ------------------
  |  |  112|    326|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (137:2): [True: 0, False: 326]
  |  Branch (137:2): [True: 326, False: 0]
  ------------------
  138|       |
  139|       |	/* You cannot change create_object */
  140|    326|	ce->create_object = parent->create_object;
  141|       |
  142|       |	/* Inherit special functions if needed */
  143|    326|	if (EXPECTED(!ce->get_iterator)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 304, False: 22]
  |  |  ------------------
  ------------------
  144|    304|		ce->get_iterator = parent->get_iterator;
  145|    304|	}
  146|    326|	if (EXPECTED(!ce->__get)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  147|    326|		ce->__get = parent->__get;
  148|    326|	}
  149|    326|	if (EXPECTED(!ce->__set)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  150|    326|		ce->__set = parent->__set;
  151|    326|	}
  152|    326|	if (EXPECTED(!ce->__unset)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  153|    326|		ce->__unset = parent->__unset;
  154|    326|	}
  155|    326|	if (EXPECTED(!ce->__isset)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  156|    326|		ce->__isset = parent->__isset;
  157|    326|	}
  158|    326|	if (EXPECTED(!ce->__call)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  159|    326|		ce->__call = parent->__call;
  160|    326|	}
  161|    326|	if (EXPECTED(!ce->__callstatic)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  162|    326|		ce->__callstatic = parent->__callstatic;
  163|    326|	}
  164|    326|	if (EXPECTED(!ce->__tostring)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 315, False: 11]
  |  |  ------------------
  ------------------
  165|    315|		ce->__tostring = parent->__tostring;
  166|    315|	}
  167|    326|	if (EXPECTED(!ce->clone)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  168|    326|		ce->clone = parent->clone;
  169|    326|	}
  170|    326|	if (EXPECTED(!ce->__serialize)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  171|    326|		ce->__serialize = parent->__serialize;
  172|    326|	}
  173|    326|	if (EXPECTED(!ce->__unserialize)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  174|    326|		ce->__unserialize = parent->__unserialize;
  175|    326|	}
  176|    326|	if (EXPECTED(!ce->serialize)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  177|    326|		ce->serialize = parent->serialize;
  178|    326|	}
  179|    326|	if (EXPECTED(!ce->unserialize)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  180|    326|		ce->unserialize = parent->unserialize;
  181|    326|	}
  182|    326|	if (!ce->destructor) {
  ------------------
  |  Branch (182:6): [True: 326, False: 0]
  ------------------
  183|    326|		ce->destructor = parent->destructor;
  184|    326|	}
  185|    326|	if (EXPECTED(!ce->__debugInfo)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 326, False: 0]
  |  |  ------------------
  ------------------
  186|    326|		ce->__debugInfo = parent->__debugInfo;
  187|    326|	}
  188|       |
  189|    326|	if (ce->constructor) {
  ------------------
  |  Branch (189:6): [True: 74, False: 252]
  ------------------
  190|     74|		if (parent->constructor && UNEXPECTED(parent->constructor->common.fn_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  457|     69|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 69]
  |  |  ------------------
  ------------------
  |  Branch (190:7): [True: 69, False: 5]
  ------------------
  191|      0|			zend_error_noreturn(E_ERROR, "Cannot override final %s::__construct() with %s::__construct()",
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  192|      0|				ZSTR_VAL(parent->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  193|      0|				ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  194|      0|		}
  195|     74|		return;
  196|     74|	}
  197|       |
  198|    252|	ce->constructor = parent->constructor;
  199|    252|}
zend_inheritance.c:zend_do_inherit_interfaces:
 1592|    297|{
 1593|       |	/* expects interface to be contained in ce's interface list already */
 1594|    297|	uint32_t i, ce_num, if_num = iface->num_interfaces;
 1595|       |
 1596|    297|	ce_num = ce->num_interfaces;
 1597|       |
 1598|    297|	ce->interfaces = (zend_class_entry **) perealloc(ce->interfaces, sizeof(zend_class_entry *) * (ce_num + if_num), ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  200|    297|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|    238|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    238|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|    238|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    238|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     59|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     59|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     59|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     59|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     59|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 238, False: 59]
  |  |  ------------------
  ------------------
 1599|       |
 1600|       |	/* Inherit the interfaces, only if they're not already inherited by the class */
 1601|    892|	while (if_num--) {
  ------------------
  |  Branch (1601:9): [True: 595, False: 297]
  ------------------
 1602|    595|		zend_class_entry *entry = iface->interfaces[if_num];
 1603|    748|		for (i = 0; i < ce_num; i++) {
  ------------------
  |  Branch (1603:15): [True: 238, False: 510]
  ------------------
 1604|    238|			if (ce->interfaces[i] == entry) {
  ------------------
  |  Branch (1604:8): [True: 85, False: 153]
  ------------------
 1605|     85|				break;
 1606|     85|			}
 1607|    238|		}
 1608|    595|		if (i == ce_num) {
  ------------------
  |  Branch (1608:7): [True: 510, False: 85]
  ------------------
 1609|    510|			ce->interfaces[ce->num_interfaces++] = entry;
 1610|    510|		}
 1611|    595|	}
 1612|    297|	ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  317|    297|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
 1613|       |
 1614|       |	/* and now call the implementing handlers */
 1615|    807|	while (ce_num < ce->num_interfaces) {
  ------------------
  |  Branch (1615:9): [True: 510, False: 297]
  ------------------
 1616|    510|		do_implement_interface(ce, ce->interfaces[ce_num++]);
 1617|    510|	}
 1618|    297|}
zend_inheritance.c:do_implement_interface:
 1582|    923|{
 1583|    923|	if (!(ce->ce_flags & ZEND_ACC_INTERFACE) && iface->interface_gets_implemented && iface->interface_gets_implemented(iface, ce) == FAILURE) {
  ------------------
  |  |  281|    923|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (1583:6): [True: 887, False: 36]
  |  Branch (1583:46): [True: 521, False: 366]
  |  Branch (1583:83): [True: 0, False: 521]
  ------------------
 1584|      0|		zend_error_noreturn(E_CORE_ERROR, "%s %s could not implement interface %s", zend_get_object_type_uc(ce), ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
              		zend_error_noreturn(E_CORE_ERROR, "%s %s could not implement interface %s", zend_get_object_type_uc(ce), ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_error_noreturn(E_CORE_ERROR, "%s %s could not implement interface %s", zend_get_object_type_uc(ce), ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1585|      0|	}
 1586|       |	/* This should be prevented by the class lookup logic. */
 1587|    923|	ZEND_ASSERT(ce != iface);
  ------------------
  |  |  112|    923|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1587:2): [True: 0, False: 923]
  |  Branch (1587:2): [True: 913, False: 10]
  ------------------
 1588|    923|}
zend_inheritance.c:do_inherit_constant_check:
 2089|     96|) {
 2090|     96|	zval *zv = zend_hash_find_known_hash(&ce->constants_table, name);
 2091|     96|	if (zv == NULL) {
  ------------------
  |  Branch (2091:6): [True: 79, False: 17]
  ------------------
 2092|     79|		return true;
 2093|     79|	}
 2094|       |
 2095|     17|	zend_class_constant *child_constant = Z_PTR_P(zv);
  ------------------
  |  | 1053|     17|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     17|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 2096|     17|	if (parent_constant->ce != child_constant->ce && (ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_FINAL)) {
  ------------------
  |  |  498|     17|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     17|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (parent_constant->ce != child_constant->ce && (ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|     17|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (2096:6): [True: 17, False: 0]
  |  Branch (2096:51): [True: 1, False: 16]
  ------------------
 2097|      1|		zend_error_noreturn(E_COMPILE_ERROR, "%s::%s cannot override final constant %s::%s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2098|      1|			ZSTR_VAL(child_constant->ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(child_constant->ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2099|      1|			ZSTR_VAL(parent_constant->ce->name), ZSTR_VAL(name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(parent_constant->ce->name), ZSTR_VAL(name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2100|      1|		);
 2101|      1|	}
 2102|       |
 2103|     16|	if (child_constant->ce != parent_constant->ce && child_constant->ce != ce) {
  ------------------
  |  Branch (2103:6): [True: 16, False: 0]
  |  Branch (2103:51): [True: 5, False: 11]
  ------------------
 2104|      5|		zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2105|      5|			"%s %s inherits both %s::%s and %s::%s, which is ambiguous",
 2106|      5|			zend_get_object_type_uc(ce),
 2107|      5|			ZSTR_VAL(ce->name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2108|      5|			ZSTR_VAL(child_constant->ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(child_constant->ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2109|      5|			ZSTR_VAL(parent_constant->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(parent_constant->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2110|      5|	}
 2111|       |
 2112|     11|	if (UNEXPECTED((ZEND_CLASS_CONST_FLAGS(child_constant) & ZEND_ACC_PPP_MASK) > (ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PPP_MASK))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  ------------------
  ------------------
 2113|      1|		zend_error_noreturn(E_COMPILE_ERROR, "Access level to %s::%s must be %s (as in %s %s)%s",
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2114|      1|			ZSTR_VAL(ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2115|      1|			zend_visibility_string(ZEND_CLASS_CONST_FLAGS(parent_constant)),
  ------------------
  |  |  498|      1|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      1|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
 2116|      1|			zend_get_object_type(parent_constant->ce),
 2117|      1|			ZSTR_VAL(parent_constant->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2118|      1|			(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PUBLIC) ? "" : " or weaker"
  ------------------
  |  |  498|      1|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      1|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PUBLIC) ? "" : " or weaker"
  ------------------
  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2118:4): [True: 1, False: 0]
  ------------------
 2119|      1|		);
 2120|      1|	}
 2121|       |
 2122|     10|	if (!(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PRIVATE) && ZEND_TYPE_IS_SET(parent_constant->type)) {
  ------------------
  |  |  498|     10|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     10|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (!(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PRIVATE) && ZEND_TYPE_IS_SET(parent_constant->type)) {
  ------------------
  |  |  221|     10|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	if (!(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PRIVATE) && ZEND_TYPE_IS_SET(parent_constant->type)) {
  ------------------
  |  |  152|      9|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      9|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 2, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (2122:6): [True: 9, False: 1]
  ------------------
 2123|      2|		inheritance_status status = class_constant_types_compatible(parent_constant, child_constant);
 2124|      2|		if (status == INHERITANCE_ERROR) {
  ------------------
  |  Branch (2124:7): [True: 1, False: 1]
  ------------------
 2125|      1|			emit_incompatible_class_constant_error(child_constant, parent_constant, name);
 2126|      1|		} else if (status == INHERITANCE_UNRESOLVED) {
  ------------------
  |  Branch (2126:14): [True: 1, False: 0]
  ------------------
 2127|      1|			add_class_constant_compatibility_obligation(ce, child_constant, parent_constant, name);
 2128|      1|		}
 2129|      2|	}
 2130|       |
 2131|       |	return false;
 2132|     11|}
zend_inheritance.c:class_constant_types_compatible:
 1634|      4|{
 1635|      4|	ZEND_ASSERT(ZEND_TYPE_IS_SET(parent->type));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1635:2): [True: 0, False: 4]
  |  Branch (1635:2): [True: 4, False: 0]
  ------------------
 1636|       |
 1637|      4|	if (!ZEND_TYPE_IS_SET(child->type)) {
  ------------------
  |  |  152|      4|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      4|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1637:6): [True: 1, False: 3]
  ------------------
 1638|      1|		return INHERITANCE_ERROR;
 1639|      1|	}
 1640|       |
 1641|      3|	return zend_perform_covariant_type_check(child->ce, child->type, parent->ce, parent->type);
 1642|      4|}
zend_inheritance.c:emit_incompatible_class_constant_error:
 1622|      2|		const zend_class_constant *child, const zend_class_constant *parent, const zend_string *const_name) {
 1623|      2|	zend_string *type_str = zend_type_to_string_resolved(parent->type, parent->ce);
 1624|      2|	zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 1625|      2|		"Type of %s::%s must be compatible with %s::%s of type %s",
 1626|      2|		ZSTR_VAL(child->ce->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1627|      2|		ZSTR_VAL(const_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1628|      2|		ZSTR_VAL(parent->ce->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1629|      2|		ZSTR_VAL(const_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1630|      2|		ZSTR_VAL(type_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1631|      2|}
zend_inheritance.c:add_class_constant_compatibility_obligation:
 3205|      1|		const zend_class_constant *parent_const, const zend_string *const_name) {
 3206|      1|	HashTable *obligations = get_or_init_obligations_for_class(ce);
 3207|       |	variance_obligation *obligation = emalloc(sizeof(variance_obligation));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3208|      1|	obligation->type = OBLIGATION_CLASS_CONSTANT_COMPATIBILITY;
 3209|      1|	obligation->const_name = const_name;
 3210|      1|	obligation->child_const = child_const;
 3211|      1|	obligation->parent_const = parent_const;
 3212|      1|	zend_hash_next_index_insert_ptr(obligations, obligation);
 3213|      1|}
zend_inheritance.c:do_interface_implementation:
 2160|    437|{
 2161|    437|	zend_function *func;
 2162|    437|	zend_string *key;
 2163|    437|	zend_class_constant *c;
 2164|    437|	uint32_t flags = ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY;
  ------------------
  |  | 1115|    437|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
              	uint32_t flags = ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY;
  ------------------
  |  | 1116|    437|#define ZEND_INHERITANCE_CHECK_VISIBILITY     (1<<3)
  ------------------
 2165|       |
 2166|    437|	if (iface->num_interfaces) {
  ------------------
  |  Branch (2166:6): [True: 116, False: 321]
  ------------------
 2167|    116|		zend_do_inherit_interfaces(ce, iface);
 2168|    116|	}
 2169|       |
 2170|    437|	if (!(ce->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|    437|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (2170:6): [True: 399, False: 38]
  ------------------
 2171|       |		/* We are not setting the prototype of overridden interface methods because of abstract
 2172|       |		 * constructors. See Zend/tests/interface_constructor_prototype_001.phpt. */
 2173|    399|		flags |=
 2174|    399|			ZEND_INHERITANCE_LAZY_CHILD_CLONE |
  ------------------
  |  | 1113|    399|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  ------------------
 2175|    399|			ZEND_INHERITANCE_SET_CHILD_PROTO |
  ------------------
  |  | 1118|    399|#define ZEND_INHERITANCE_SET_CHILD_PROTO      (1<<5)
  ------------------
 2176|    399|			ZEND_INHERITANCE_RESET_CHILD_OVERRIDE;
  ------------------
  |  | 1119|    399|#define ZEND_INHERITANCE_RESET_CHILD_OVERRIDE (1<<6)
  ------------------
 2177|    399|	} else {
 2178|     38|		flags |=
 2179|     38|			ZEND_INHERITANCE_LAZY_CHILD_CLONE |
  ------------------
  |  | 1113|     38|#define ZEND_INHERITANCE_LAZY_CHILD_CLONE     (1<<0)
  ------------------
 2180|     38|			ZEND_INHERITANCE_RESET_CHILD_OVERRIDE;
  ------------------
  |  | 1119|     38|#define ZEND_INHERITANCE_RESET_CHILD_OVERRIDE (1<<6)
  ------------------
 2181|     38|	}
 2182|       |
 2183|  1.05k|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&iface->constants_table, key, c) {
  ------------------
  |  | 1448|     90|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    437|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    437|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    437|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    437|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    437|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    437|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    437|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    525|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 90, False: 435]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     90|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     90|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     90|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 90]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     90|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     90|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 90]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     90|	_key = _p->key; \
  |  | 1450|    437|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    437|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    437|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2183:2): [True: 0, False: 437]
  |  Branch (2183:2): [True: 435, False: 2]
  ------------------
 2184|  1.05k|		do_inherit_iface_constant(key, c, ce, iface);
 2185|  1.05k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     90|		} \
  |  | 1102|    435|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 435]
  |  |  ------------------
  ------------------
 2186|       |
 2187|  2.49k|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&iface->function_table, key, func) {
  ------------------
  |  | 1448|    813|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    435|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    435|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    435|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    435|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    435|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    435|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    435|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.24k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 813, False: 429]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    813|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    813|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    813|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 813]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    813|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    813|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 813]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    813|	_key = _p->key; \
  |  | 1450|    813|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    437|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    437|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2187:2): [True: 0, False: 435]
  |  Branch (2187:2): [True: 429, False: 6]
  ------------------
 2188|  2.49k|		do_inherit_method(key, func, ce, true, flags);
 2189|  2.49k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    813|		} \
  |  | 1102|    429|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 429]
  |  |  ------------------
  ------------------
 2190|       |
 2191|    435|	zend_hash_extend(&ce->properties_info,
 2192|    429|		zend_hash_num_elements(&ce->properties_info) +
 2193|    429|		zend_hash_num_elements(&iface->properties_info), 0);
 2194|       |
 2195|    429|	zend_property_info *prop;
 2196|    449|	ZEND_HASH_FOREACH_STR_KEY_PTR(&iface->properties_info, key, prop) {
  ------------------
  |  | 1240|     10|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|    429|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|    429|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|    429|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|    429|		zend_ulong __h; \
  |  |  |  |  |  | 1048|    429|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|    429|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|    429|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|    429|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    429|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    429|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    429|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|    429|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|    429|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    429|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|    439|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 10, False: 429]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     10|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     10|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     10|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     10|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|     10|			} else { \
  |  |  |  |  |  | 1060|     10|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     10|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     10|				__h = _p->h; \
  |  |  |  |  |  | 1063|     10|				__key = _p->key; \
  |  |  |  |  |  | 1064|     10|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     10|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 10]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|     10|			} \
  |  |  |  |  |  | 1068|     10|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     10|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1241|     10|	_key = __key; \
  |  | 1242|    429|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    429|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    429|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2197|    449|		do_inherit_property(prop, key, ce);
 2198|    449|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     10|		} \
  |  | 1102|    429|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 429]
  |  |  ------------------
  ------------------
 2199|       |
 2200|    429|	do_implement_interface(ce, iface);
 2201|    429|}
zend_inheritance.c:do_inherit_iface_constant:
 2136|     90|{
 2137|     90|	if (do_inherit_constant_check(ce, c, name)) {
  ------------------
  |  Branch (2137:6): [True: 79, False: 11]
  ------------------
 2138|     79|		zend_class_constant *ct;
 2139|     79|		if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|     79|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     79|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (2139:7): [True: 1, False: 78]
  ------------------
 2140|      1|			ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      1|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 2141|      1|			ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
  ------------------
  |  |  333|      1|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
 2142|      1|			if (iface->ce_flags & ZEND_ACC_IMMUTABLE) {
  ------------------
  |  |  241|      1|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (2142:8): [True: 0, False: 1]
  ------------------
 2143|      0|				ct = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2144|      0|				memcpy(ct, c, sizeof(zend_class_constant));
 2145|      0|				c = ct;
 2146|      0|				Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED;
  ------------------
  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  ------------------
              				Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED;
  ------------------
  |  |   28|      0|#define CONST_OWNED				(1<<3)				/* constant should be destroyed together with class */
  ------------------
 2147|      0|			}
 2148|      1|		}
 2149|     79|		if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (2149:7): [True: 56, False: 23]
  ------------------
 2150|       |			ct = pemalloc(sizeof(zend_class_constant), 1);
  ------------------
  |  |  188|     56|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     56|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     56|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     56|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     56|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 56, Folded]
  |  |  ------------------
  ------------------
 2151|     56|			memcpy(ct, c, sizeof(zend_class_constant));
 2152|     56|			c = ct;
 2153|     56|		}
 2154|     79|		zend_hash_update_ptr(&ce->constants_table, name, c);
 2155|     79|	}
 2156|     90|}
zend_inheritance.c:zend_verify_abstract_class_function:
 3025|     17|{
 3026|     17|	if (ai->cnt < MAX_ABSTRACT_INFO_CNT) {
  ------------------
  |  | 3011|     17|#define MAX_ABSTRACT_INFO_CNT 3
  ------------------
  |  Branch (3026:6): [True: 17, False: 0]
  ------------------
 3027|     17|		ai->afn[ai->cnt] = fn;
 3028|     17|	}
 3029|     17|	ai->cnt++;
 3030|     17|}
zend_inheritance.c:check_unrecoverable_load_failure:
 3314|      9|static void check_unrecoverable_load_failure(const zend_class_entry *ce) {
 3315|       |	/* If this class has been used while unlinked through a variance obligation, it is not legal
 3316|       |	 * to remove the class from the class table and throw an exception, because there is already
 3317|       |	 * a dependence on the inheritance hierarchy of this specific class. Instead we fall back to
 3318|       |	 * a fatal error, as would happen if we did not allow exceptions in the first place. */
 3319|      9|	if (CG(unlinked_uses)
  ------------------
  |  |   35|     18|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 3320|      0|			&& zend_hash_index_del(CG(unlinked_uses), (zend_ulong)(uintptr_t)ce) == SUCCESS) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3320:7): [True: 0, False: 0]
  ------------------
 3321|      0|		zend_exception_uncaught_error(
 3322|      0|			"During inheritance of %s with variance dependencies", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3323|      0|	}
 3324|      9|}
zend_inheritance.c:zend_type_copy_ctor:
   90|     19|static void zend_type_copy_ctor(zend_type *const type, bool use_arena, bool persistent) {
   91|     19|	if (ZEND_TYPE_HAS_LIST(*type)) {
  ------------------
  |  |  166|     19|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|     19|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 0, False: 19]
  |  |  ------------------
  ------------------
   92|      0|		zend_type_list_copy_ctor(type, use_arena, persistent);
   93|     19|	} else if (ZEND_TYPE_HAS_NAME(*type)) {
  ------------------
  |  |  160|     19|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|     19|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 1, False: 18]
  |  |  ------------------
  ------------------
   94|      1|		zend_string_addref(ZEND_TYPE_NAME(*type));
  ------------------
  |  |  184|      1|	((zend_string *) (t).ptr)
  ------------------
   95|      1|	}
   96|     19|}
zend_inheritance.c:zend_traits_init_trait_structures:
 2529|     88|{
 2530|     88|	size_t i, j = 0;
 2531|     88|	zend_trait_precedence *cur_precedence;
 2532|     88|	zend_trait_method_reference *cur_method_ref;
 2533|     88|	zend_string *lc_trait_name;
 2534|     88|	zend_string *lcname;
 2535|     88|	HashTable **exclude_tables = NULL;
 2536|     88|	zend_class_entry **aliases = NULL;
 2537|     88|	zend_class_entry *trait;
 2538|       |
 2539|       |	/* resolve class references */
 2540|     88|	if (ce->trait_precedences) {
  ------------------
  |  Branch (2540:6): [True: 8, False: 80]
  ------------------
 2541|      8|		exclude_tables = ecalloc(ce->num_traits, sizeof(HashTable*));
  ------------------
  |  |  157|      8|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2542|      8|		i = 0;
 2543|      8|		zend_trait_precedence **precedences = ce->trait_precedences;
 2544|      8|		ce->trait_precedences = NULL;
 2545|     10|		while ((cur_precedence = precedences[i])) {
  ------------------
  |  Branch (2545:10): [True: 8, False: 2]
  ------------------
 2546|       |			/** Resolve classes for all precedence operations. */
 2547|      8|			cur_method_ref = &cur_precedence->trait_method;
 2548|      8|			lc_trait_name = zend_string_tolower(cur_method_ref->class_name);
 2549|      8|			trait = zend_hash_find_ptr(EG(class_table), lc_trait_name);
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  ------------------
 2550|      8|			zend_string_release_ex(lc_trait_name, 0);
 2551|      8|			if (!trait || !(trait->ce_flags & ZEND_ACC_LINKED)) {
  ------------------
  |  |  287|      4|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (2551:8): [True: 4, False: 4]
  |  Branch (2551:18): [True: 0, False: 4]
  ------------------
 2552|      4|				zend_error_noreturn(E_COMPILE_ERROR, "Could not find trait %s", ZSTR_VAL(cur_method_ref->class_name));
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              				zend_error_noreturn(E_COMPILE_ERROR, "Could not find trait %s", ZSTR_VAL(cur_method_ref->class_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2553|      4|			}
 2554|      4|			zend_check_trait_usage(ce, trait, traits);
 2555|       |
 2556|       |			/** Ensure that the preferred method is actually available. */
 2557|      4|			lcname = zend_string_tolower(cur_method_ref->method_name);
 2558|      4|			if (!zend_hash_exists(&trait->function_table, lcname)) {
  ------------------
  |  Branch (2558:8): [True: 1, False: 3]
  ------------------
 2559|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2560|      1|						   "A precedence rule was defined for %s::%s but this method does not exist",
 2561|      1|						   ZSTR_VAL(trait->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2562|      1|						   ZSTR_VAL(cur_method_ref->method_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2563|      1|			}
 2564|       |
 2565|       |			/** With the other traits, we are more permissive.
 2566|       |				We do not give errors for those. This allows to be more
 2567|       |				defensive in such definitions.
 2568|       |				However, we want to make sure that the insteadof declaration
 2569|       |				is consistent in itself.
 2570|       |			 */
 2571|       |
 2572|      4|			for (j = 0; j < cur_precedence->num_excludes; j++) {
  ------------------
  |  Branch (2572:16): [True: 2, False: 2]
  ------------------
 2573|      2|				zend_string* class_name = cur_precedence->exclude_class_names[j];
 2574|      2|				zend_class_entry *exclude_ce;
 2575|      2|				uint32_t trait_num;
 2576|       |
 2577|      2|				lc_trait_name = zend_string_tolower(class_name);
 2578|      2|				exclude_ce = zend_hash_find_ptr(EG(class_table), lc_trait_name);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 2579|      2|				zend_string_release_ex(lc_trait_name, 0);
 2580|      2|				if (!exclude_ce || !(exclude_ce->ce_flags & ZEND_ACC_LINKED)) {
  ------------------
  |  |  287|      2|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (2580:9): [True: 0, False: 2]
  |  Branch (2580:24): [True: 0, False: 2]
  ------------------
 2581|      0|					zend_error_noreturn(E_COMPILE_ERROR, "Could not find trait %s", ZSTR_VAL(class_name));
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              					zend_error_noreturn(E_COMPILE_ERROR, "Could not find trait %s", ZSTR_VAL(class_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2582|      0|				}
 2583|      2|				trait_num = zend_check_trait_usage(ce, exclude_ce, traits);
 2584|      2|				if (!exclude_tables[trait_num]) {
  ------------------
  |  Branch (2584:9): [True: 1, False: 1]
  ------------------
 2585|      1|					ALLOC_HASHTABLE(exclude_tables[trait_num]);
  ------------------
  |  |  232|      1|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2586|      1|					zend_hash_init(exclude_tables[trait_num], 0, NULL, NULL, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 2587|      1|				}
 2588|      2|				if (zend_hash_add_empty_element(exclude_tables[trait_num], lcname) == NULL) {
  ------------------
  |  Branch (2588:9): [True: 0, False: 2]
  ------------------
 2589|      0|					zend_error_noreturn(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method of trait %s was defined to be excluded multiple times", ZSTR_VAL(precedences[i]->trait_method.method_name), ZSTR_VAL(exclude_ce->name));
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              					zend_error_noreturn(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method of trait %s was defined to be excluded multiple times", ZSTR_VAL(precedences[i]->trait_method.method_name), ZSTR_VAL(exclude_ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					zend_error_noreturn(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method of trait %s was defined to be excluded multiple times", ZSTR_VAL(precedences[i]->trait_method.method_name), ZSTR_VAL(exclude_ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2590|      0|				}
 2591|       |
 2592|       |				/* make sure that the trait method is not from a class mentioned in
 2593|       |				 exclude_from_classes, for consistency */
 2594|      2|				if (trait == exclude_ce) {
  ------------------
  |  Branch (2594:9): [True: 1, False: 1]
  ------------------
 2595|      1|					zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2596|      1|							   "Inconsistent insteadof definition. "
 2597|      1|							   "The method %s is to be used from %s, but %s is also on the exclude list",
 2598|      1|							   ZSTR_VAL(cur_method_ref->method_name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2599|      1|							   ZSTR_VAL(trait->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2600|      1|							   ZSTR_VAL(trait->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2601|      1|				}
 2602|      2|			}
 2603|      2|			zend_string_release_ex(lcname, 0);
 2604|      2|			i++;
 2605|      2|		}
 2606|      2|		ce->trait_precedences = precedences;
 2607|      2|	}
 2608|       |
 2609|     82|	if (ce->trait_aliases) {
  ------------------
  |  Branch (2609:6): [True: 15, False: 67]
  ------------------
 2610|     15|		i = 0;
 2611|     32|		while (ce->trait_aliases[i]) {
  ------------------
  |  Branch (2611:10): [True: 17, False: 15]
  ------------------
 2612|     17|			i++;
 2613|     17|		}
 2614|     15|		aliases = ecalloc(i, sizeof(zend_class_entry*));
  ------------------
  |  |  157|     15|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     15|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     15|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     15|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     15|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2615|     15|		i = 0;
 2616|     27|		while (ce->trait_aliases[i]) {
  ------------------
  |  Branch (2616:10): [True: 17, False: 10]
  ------------------
 2617|     17|			const zend_trait_alias *cur_alias = ce->trait_aliases[i];
 2618|     17|			cur_method_ref = &ce->trait_aliases[i]->trait_method;
 2619|     17|			lcname = zend_string_tolower(cur_method_ref->method_name);
 2620|     17|			if (cur_method_ref->class_name) {
  ------------------
  |  Branch (2620:8): [True: 4, False: 13]
  ------------------
 2621|       |				/* For all aliases with an explicit class name, resolve the class now. */
 2622|      4|				lc_trait_name = zend_string_tolower(cur_method_ref->class_name);
 2623|      4|				trait = zend_hash_find_ptr(EG(class_table), lc_trait_name);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 2624|      4|				zend_string_release_ex(lc_trait_name, 0);
 2625|      4|				if (!trait || !(trait->ce_flags & ZEND_ACC_LINKED)) {
  ------------------
  |  |  287|      3|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (2625:9): [True: 1, False: 3]
  |  Branch (2625:19): [True: 0, False: 3]
  ------------------
 2626|      1|					zend_error_noreturn(E_COMPILE_ERROR, "Could not find trait %s", ZSTR_VAL(cur_method_ref->class_name));
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              					zend_error_noreturn(E_COMPILE_ERROR, "Could not find trait %s", ZSTR_VAL(cur_method_ref->class_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2627|      1|				}
 2628|      3|				zend_check_trait_usage(ce, trait, traits);
 2629|      3|				aliases[i] = trait;
 2630|       |
 2631|       |				/* And, ensure that the referenced method is resolvable, too. */
 2632|      3|				if (!zend_hash_exists(&trait->function_table, lcname)) {
  ------------------
  |  Branch (2632:9): [True: 1, False: 2]
  ------------------
 2633|      1|					zend_error_noreturn(E_COMPILE_ERROR, "An alias was defined for %s::%s but this method does not exist", ZSTR_VAL(trait->name), ZSTR_VAL(cur_method_ref->method_name));
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              					zend_error_noreturn(E_COMPILE_ERROR, "An alias was defined for %s::%s but this method does not exist", ZSTR_VAL(trait->name), ZSTR_VAL(cur_method_ref->method_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					zend_error_noreturn(E_COMPILE_ERROR, "An alias was defined for %s::%s but this method does not exist", ZSTR_VAL(trait->name), ZSTR_VAL(cur_method_ref->method_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2634|      1|				}
 2635|     13|			} else {
 2636|       |				/* Find out which trait this method refers to. */
 2637|     13|				trait = NULL;
 2638|     28|				for (j = 0; j < ce->num_traits; j++) {
  ------------------
  |  Branch (2638:17): [True: 15, False: 13]
  ------------------
 2639|     15|					if (traits[j]) {
  ------------------
  |  Branch (2639:10): [True: 15, False: 0]
  ------------------
 2640|     15|						if (zend_hash_exists(&traits[j]->function_table, lcname)) {
  ------------------
  |  Branch (2640:11): [True: 10, False: 5]
  ------------------
 2641|     10|							if (!trait) {
  ------------------
  |  Branch (2641:12): [True: 10, False: 0]
  ------------------
 2642|     10|								trait = traits[j];
 2643|     10|								continue;
 2644|     10|							}
 2645|       |
 2646|      0|							zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2647|      0|								"An alias was defined for method %s(), which exists in both %s and %s. Use %s::%s or %s::%s to resolve the ambiguity",
 2648|      0|								ZSTR_VAL(cur_method_ref->method_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2649|      0|								ZSTR_VAL(trait->name), ZSTR_VAL(traits[j]->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              								ZSTR_VAL(trait->name), ZSTR_VAL(traits[j]->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2650|      0|								ZSTR_VAL(trait->name), ZSTR_VAL(cur_method_ref->method_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              								ZSTR_VAL(trait->name), ZSTR_VAL(cur_method_ref->method_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2651|      0|								ZSTR_VAL(traits[j]->name), ZSTR_VAL(cur_method_ref->method_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              								ZSTR_VAL(traits[j]->name), ZSTR_VAL(cur_method_ref->method_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2652|     10|						}
 2653|     15|					}
 2654|     15|				}
 2655|       |
 2656|       |				/* Non-absolute method reference refers to method that does not exist. */
 2657|     13|				if (!trait) {
  ------------------
  |  Branch (2657:9): [True: 3, False: 10]
  ------------------
 2658|      3|					if (cur_alias->alias) {
  ------------------
  |  Branch (2658:10): [True: 2, False: 1]
  ------------------
 2659|      2|						zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      2|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2660|      2|							"An alias (%s) was defined for method %s(), but this method does not exist",
 2661|      2|							ZSTR_VAL(cur_alias->alias),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2662|      2|							ZSTR_VAL(cur_alias->trait_method.method_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2663|      2|					} else {
 2664|      1|						zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2665|      1|							"The modifiers of the trait method %s() are changed, but this method does not exist. Error",
 2666|      1|							ZSTR_VAL(cur_alias->trait_method.method_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2667|      1|					}
 2668|      3|				}
 2669|       |
 2670|     10|				aliases[i] = trait;
 2671|     10|			}
 2672|     12|			zend_string_release_ex(lcname, 0);
 2673|     12|			i++;
 2674|     12|		}
 2675|     15|	}
 2676|       |
 2677|     77|	*exclude_tables_ptr = exclude_tables;
 2678|     77|	*aliases_ptr = aliases;
 2679|     77|}
zend_inheritance.c:zend_check_trait_usage:
 2514|      9|{
 2515|      9|	if (UNEXPECTED((trait->ce_flags & ZEND_ACC_TRAIT) != ZEND_ACC_TRAIT)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 2516|      0|		zend_error_noreturn(E_COMPILE_ERROR, "Class %s is not a trait, Only traits may be used in 'as' and 'insteadof' statements", ZSTR_VAL(trait->name));
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              		zend_error_noreturn(E_COMPILE_ERROR, "Class %s is not a trait, Only traits may be used in 'as' and 'insteadof' statements", ZSTR_VAL(trait->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2517|      0|	}
 2518|       |
 2519|     12|	for (uint32_t i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (2519:23): [True: 9, False: 3]
  ------------------
 2520|      9|		if (traits[i] == trait) {
  ------------------
  |  Branch (2520:7): [True: 6, False: 3]
  ------------------
 2521|      6|			return i;
 2522|      6|		}
 2523|      9|	}
 2524|      3|	zend_error_noreturn(E_COMPILE_ERROR, "Required Trait %s wasn't added to %s", ZSTR_VAL(trait->name), ZSTR_VAL(ce->name));
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              	zend_error_noreturn(E_COMPILE_ERROR, "Required Trait %s wasn't added to %s", ZSTR_VAL(trait->name), ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	zend_error_noreturn(E_COMPILE_ERROR, "Required Trait %s wasn't added to %s", ZSTR_VAL(trait->name), ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2525|      9|}
zend_inheritance.c:zend_do_traits_method_binding:
 2683|     83|{
 2684|     83|	uint32_t i;
 2685|     83|	zend_string *key;
 2686|     83|	zend_function *fn;
 2687|       |
 2688|     83|	if (exclude_tables) {
  ------------------
  |  Branch (2688:6): [True: 0, False: 83]
  ------------------
 2689|      0|		for (i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (2689:15): [True: 0, False: 0]
  ------------------
 2690|      0|			if (traits[i]) {
  ------------------
  |  Branch (2690:8): [True: 0, False: 0]
  ------------------
 2691|       |				/* copies functions, applies defined aliasing, and excludes unused trait methods */
 2692|      0|				ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&traits[i]->function_table, key, fn) {
  ------------------
  |  | 1448|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      0|	_key = _p->key; \
  |  | 1450|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2692:5): [True: 0, False: 0]
  |  Branch (2692:5): [True: 0, False: 0]
  ------------------
 2693|      0|					bool is_abstract = (bool) (fn->common.fn_flags & ZEND_ACC_ABSTRACT);
  ------------------
  |  |  233|      0|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
 2694|      0|					*contains_abstract_methods |= is_abstract;
 2695|      0|					if (verify_abstract != is_abstract) {
  ------------------
  |  Branch (2695:10): [True: 0, False: 0]
  ------------------
 2696|      0|						continue;
 2697|      0|					}
 2698|      0|					zend_traits_copy_functions(key, fn, ce, exclude_tables[i], aliases);
 2699|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2700|       |
 2701|      0|				if (exclude_tables[i]) {
  ------------------
  |  Branch (2701:9): [True: 0, False: 0]
  ------------------
 2702|      0|					zend_hash_destroy(exclude_tables[i]);
 2703|      0|					FREE_HASHTABLE(exclude_tables[i]);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2704|      0|					exclude_tables[i] = NULL;
 2705|      0|				}
 2706|      0|			}
 2707|      0|		}
 2708|     83|	} else {
 2709|    176|		for (i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (2709:15): [True: 93, False: 83]
  ------------------
 2710|     93|			if (traits[i]) {
  ------------------
  |  Branch (2710:8): [True: 93, False: 0]
  ------------------
 2711|    288|				ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&traits[i]->function_table, key, fn) {
  ------------------
  |  | 1448|     51|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     93|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     93|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     93|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     93|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     93|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     93|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     93|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    144|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 51, False: 93]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     51|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     51|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     51|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 51]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     51|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     51|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 51]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     51|	_key = _p->key; \
  |  | 1450|     93|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     93|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     93|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2711:5): [True: 0, False: 93]
  |  Branch (2711:5): [True: 93, False: 0]
  ------------------
 2712|    288|					bool is_abstract = (bool) (fn->common.fn_flags & ZEND_ACC_ABSTRACT);
  ------------------
  |  |  233|     51|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
 2713|    288|					*contains_abstract_methods |= is_abstract;
 2714|    288|					if (verify_abstract != is_abstract) {
  ------------------
  |  Branch (2714:10): [True: 10, False: 41]
  ------------------
 2715|     10|						continue;
 2716|     10|					}
 2717|     41|					zend_traits_copy_functions(key, fn, ce, NULL, aliases);
 2718|     41|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     41|		} \
  |  | 1102|     93|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 93]
  |  |  ------------------
  ------------------
 2719|     93|			}
 2720|     93|		}
 2721|     83|	}
 2722|     83|}
zend_inheritance.c:zend_traits_copy_functions:
 2444|     41|{
 2445|     41|	zend_trait_alias  *alias, **alias_ptr;
 2446|     41|	zend_function      fn_copy;
 2447|     41|	int                i;
 2448|       |
 2449|       |	/* apply aliases which are qualified with a class name, there should not be any ambiguity */
 2450|     41|	if (ce->trait_aliases) {
  ------------------
  |  Branch (2450:6): [True: 10, False: 31]
  ------------------
 2451|     10|		alias_ptr = ce->trait_aliases;
 2452|     10|		alias = *alias_ptr;
 2453|     10|		i = 0;
 2454|     20|		while (alias) {
  ------------------
  |  Branch (2454:10): [True: 10, False: 10]
  ------------------
 2455|       |			/* Scope unset or equal to the function we compare to, and the alias applies to fn */
 2456|     10|			if (alias->alias != NULL
  ------------------
  |  Branch (2456:8): [True: 7, False: 3]
  ------------------
 2457|      7|				&& fn->common.scope == aliases[i]
  ------------------
  |  Branch (2457:8): [True: 7, False: 0]
  ------------------
 2458|      7|				&& zend_string_equals_ci(alias->trait_method.method_name, fnname)
  ------------------
  |  |  401|      7|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 7, False: 0]
  |  |  |  Branch (401:35): [True: 6, False: 1]
  |  |  ------------------
  ------------------
 2459|     10|			) {
 2460|      6|				fn_copy = *fn;
 2461|      6|				if (alias->modifiers & ZEND_ACC_PPP_MASK) {
  ------------------
  |  |  421|      6|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      6|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      6|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      6|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (2461:9): [True: 0, False: 6]
  ------------------
 2462|      0|					fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags & ~ZEND_ACC_PPP_MASK);
  ------------------
  |  |  421|      0|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
 2463|      6|				} else {
 2464|      6|					fn_copy.common.fn_flags = alias->modifiers | fn->common.fn_flags;
 2465|      6|				}
 2466|       |
 2467|      6|				zend_traits_check_private_final_inheritance(fn->common.fn_flags, &fn_copy, alias->alias);
 2468|       |
 2469|      6|				zend_string *lcname = zend_string_tolower(alias->alias);
 2470|      6|				zend_add_trait_method(ce, alias->alias, lcname, &fn_copy);
 2471|      6|				zend_string_release_ex(lcname, 0);
 2472|      6|			}
 2473|     10|			alias_ptr++;
 2474|     10|			alias = *alias_ptr;
 2475|     10|			i++;
 2476|     10|		}
 2477|     10|	}
 2478|       |
 2479|     41|	if (exclude_table == NULL || zend_hash_find(exclude_table, fnname) == NULL) {
  ------------------
  |  Branch (2479:6): [True: 41, False: 0]
  |  Branch (2479:31): [True: 0, False: 0]
  ------------------
 2480|       |		/* is not in hashtable, thus, function is not to be excluded */
 2481|     41|		memcpy(&fn_copy, fn, fn->type == ZEND_USER_FUNCTION ? sizeof(zend_op_array) : sizeof(zend_internal_function));
  ------------------
  |  Branch (2481:24): [True: 41, False: 0]
  ------------------
 2482|       |
 2483|       |		/* apply aliases which have not alias name, just setting visibility */
 2484|     41|		if (ce->trait_aliases) {
  ------------------
  |  Branch (2484:7): [True: 10, False: 31]
  ------------------
 2485|     10|			alias_ptr = ce->trait_aliases;
 2486|     10|			alias = *alias_ptr;
 2487|     10|			i = 0;
 2488|     20|			while (alias) {
  ------------------
  |  Branch (2488:11): [True: 10, False: 10]
  ------------------
 2489|       |				/* Scope unset or equal to the function we compare to, and the alias applies to fn */
 2490|     10|				if (alias->alias == NULL && alias->modifiers != 0
  ------------------
  |  Branch (2490:9): [True: 3, False: 7]
  |  Branch (2490:33): [True: 3, False: 0]
  ------------------
 2491|      3|					&& fn->common.scope == aliases[i]
  ------------------
  |  Branch (2491:9): [True: 3, False: 0]
  ------------------
 2492|      3|					&& zend_string_equals_ci(alias->trait_method.method_name, fnname)
  ------------------
  |  |  401|      3|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 3, False: 0]
  |  |  |  Branch (401:35): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 2493|     10|				) {
 2494|      3|					if (alias->modifiers & ZEND_ACC_PPP_MASK) {
  ------------------
  |  |  421|      3|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      3|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      3|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      3|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (2494:10): [True: 2, False: 1]
  ------------------
 2495|      2|						fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags & ~ZEND_ACC_PPP_MASK);
  ------------------
  |  |  421|      2|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
 2496|      2|					} else {
 2497|      1|						fn_copy.common.fn_flags = alias->modifiers | fn->common.fn_flags;
 2498|      1|					}
 2499|      3|				}
 2500|     10|				alias_ptr++;
 2501|     10|				alias = *alias_ptr;
 2502|     10|				i++;
 2503|     10|			}
 2504|     10|		}
 2505|       |
 2506|     41|		zend_traits_check_private_final_inheritance(fn->common.fn_flags, &fn_copy, fnname);
 2507|       |
 2508|     41|		zend_add_trait_method(ce, fn->common.function_name, fnname, &fn_copy);
 2509|     41|	}
 2510|     41|}
zend_inheritance.c:zend_traits_check_private_final_inheritance:
 2431|     47|{
 2432|       |	/* If the function was originally already private+final, then it will have
 2433|       |	 * already been warned about. Only emit this error when the used trait method
 2434|       |	 * explicitly became final, avoiding errors for `as private` where it was
 2435|       |	 * already final. */
 2436|     47|	if (!(original_fn_flags & ZEND_ACC_FINAL)
  ------------------
  |  |  230|     47|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (2436:6): [True: 47, False: 0]
  ------------------
 2437|     47|		&& (fn_copy->common.fn_flags & (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) == (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
  ------------------
  |  |  221|     47|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		&& (fn_copy->common.fn_flags & (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) == (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
  ------------------
  |  |  230|     47|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              		&& (fn_copy->common.fn_flags & (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) == (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
  ------------------
  |  |  221|     47|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		&& (fn_copy->common.fn_flags & (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)) == (ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
  ------------------
  |  |  230|     47|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (2437:6): [True: 0, False: 47]
  ------------------
 2438|      0|		&& !zend_string_equals_literal_ci(name, ZEND_CONSTRUCTOR_FUNC_NAME)) {
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2439|      0|		zend_error(E_COMPILE_WARNING, "Private methods cannot be final as they are never overridden by other classes");
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
 2440|      0|	}
 2441|     47|}
zend_inheritance.c:zend_add_trait_method:
 2356|     47|{
 2357|     47|	zend_function *existing_fn = NULL;
 2358|     47|	zend_function *new_fn;
 2359|       |
 2360|     47|	if ((existing_fn = zend_hash_find_ptr(&ce->function_table, key)) != NULL) {
  ------------------
  |  Branch (2360:6): [True: 10, False: 37]
  ------------------
 2361|       |		/* if it is the same function with the same visibility and has not been assigned a class scope yet, regardless
 2362|       |		 * of where it is coming from there is no conflict and we do not need to add it again */
 2363|     10|		if (existing_fn->op_array.opcodes == fn->op_array.opcodes &&
  ------------------
  |  Branch (2363:7): [True: 1, False: 9]
  ------------------
 2364|      1|			(existing_fn->common.fn_flags & ZEND_ACC_PPP_MASK) == (fn->common.fn_flags & ZEND_ACC_PPP_MASK) &&
  ------------------
  |  |  421|      1|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              			(existing_fn->common.fn_flags & ZEND_ACC_PPP_MASK) == (fn->common.fn_flags & ZEND_ACC_PPP_MASK) &&
  ------------------
  |  |  421|      1|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (2364:4): [True: 1, False: 0]
  ------------------
 2365|      1|			(existing_fn->common.scope->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  282|      1|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (2365:4): [True: 1, False: 0]
  ------------------
 2366|      1|			return;
 2367|      1|		}
 2368|       |
 2369|       |		/* Abstract method signatures from the trait must be satisfied. */
 2370|      9|		if (fn->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|      9|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (2370:7): [True: 8, False: 1]
  ------------------
 2371|       |			/* "abstract private" methods in traits were not available prior to PHP 8.
 2372|       |			 * As such, "abstract protected" was sometimes used to indicate trait requirements,
 2373|       |			 * even though the "implementing" method was private. Do not check visibility
 2374|       |			 * requirements to maintain backwards-compatibility with such usage.
 2375|       |			 */
 2376|      8|			do_inheritance_check_on_method(
 2377|      8|				existing_fn, fixup_trait_scope(existing_fn, ce), fn, fixup_trait_scope(fn, ce),
 2378|      8|				ce, NULL, ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_RESET_CHILD_OVERRIDE);
  ------------------
  |  | 1115|      8|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
              				ce, NULL, ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_RESET_CHILD_OVERRIDE);
  ------------------
  |  | 1119|      8|#define ZEND_INHERITANCE_RESET_CHILD_OVERRIDE (1<<6)
  ------------------
 2379|      8|			return;
 2380|      8|		}
 2381|       |
 2382|      1|		if (existing_fn->common.scope == ce) {
  ------------------
  |  Branch (2382:7): [True: 1, False: 0]
  ------------------
 2383|       |			/* members from the current class override trait methods */
 2384|      1|			return;
 2385|      1|		} else if (UNEXPECTED((existing_fn->common.scope->ce_flags & ZEND_ACC_TRAIT)
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2386|      0|				&& !(existing_fn->common.fn_flags & ZEND_ACC_ABSTRACT))) {
 2387|       |			/* two traits can't define the same non-abstract method */
 2388|      0|			zend_error_noreturn(E_COMPILE_ERROR, "Trait method %s::%s has not been applied as %s::%s, because of collision with %s::%s",
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2389|      0|				ZSTR_VAL(fn->common.scope->name), ZSTR_VAL(fn->common.function_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(fn->common.scope->name), ZSTR_VAL(fn->common.function_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2390|      0|				ZSTR_VAL(ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2391|      0|				ZSTR_VAL(existing_fn->common.scope->name), ZSTR_VAL(existing_fn->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(existing_fn->common.scope->name), ZSTR_VAL(existing_fn->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2392|      0|		}
 2393|      1|	}
 2394|       |
 2395|     37|	if (UNEXPECTED(fn->type == ZEND_INTERNAL_FUNCTION)) {
  ------------------
  |  |  457|     37|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 37]
  |  |  ------------------
  ------------------
 2396|      0|		new_fn = zend_arena_alloc(&CG(arena), sizeof(zend_internal_function));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2397|      0|		memcpy(new_fn, fn, sizeof(zend_internal_function));
 2398|      0|		new_fn->common.fn_flags |= ZEND_ACC_ARENA_ALLOCATED;
  ------------------
  |  |  393|      0|#define ZEND_ACC_ARENA_ALLOCATED         (1 << 25) /*     |  X  |     |     */
  ------------------
 2399|     37|	} else {
 2400|     37|		new_fn = zend_arena_alloc(&CG(arena), sizeof(zend_op_array));
  ------------------
  |  |   35|     37|# define CG(v) (compiler_globals.v)
  ------------------
 2401|     37|		memcpy(new_fn, fn, sizeof(zend_op_array));
 2402|     37|		new_fn->op_array.fn_flags &= ~ZEND_ACC_IMMUTABLE;
  ------------------
  |  |  241|     37|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
 2403|     37|	}
 2404|     37|	new_fn->common.fn_flags |= ZEND_ACC_TRAIT_CLONE;
  ------------------
  |  |  378|     37|#define ZEND_ACC_TRAIT_CLONE             (1 << 20) /*     |  X  |     |     */
  ------------------
 2405|       |
 2406|       |	/* Reassign method name, in case it is an alias. */
 2407|     37|	new_fn->common.function_name = name;
 2408|     37|	function_add_ref(new_fn);
 2409|     37|	fn = zend_hash_update_ptr(&ce->function_table, key, new_fn);
 2410|     37|	zend_add_magic_method(ce, fn, key);
 2411|     37|}
zend_inheritance.c:fixup_trait_scope:
 2350|     16|{
 2351|       |	/* self in trait methods should be resolved to the using class, not the trait. */
 2352|     16|	return fn->common.scope->ce_flags & ZEND_ACC_TRAIT ? ce : fn->common.scope;
  ------------------
  |  |  282|     16|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (2352:9): [True: 8, False: 8]
  ------------------
 2353|     16|}
zend_inheritance.c:zend_do_traits_constant_binding:
 2819|     74|{
 2820|    157|	for (uint32_t i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (2820:23): [True: 83, False: 74]
  ------------------
 2821|     83|		zend_string *constant_name;
 2822|     83|		zend_class_constant *constant;
 2823|       |
 2824|     83|		if (!traits[i]) {
  ------------------
  |  Branch (2824:7): [True: 0, False: 83]
  ------------------
 2825|      0|			continue;
 2826|      0|		}
 2827|       |
 2828|    184|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&traits[i]->constants_table, constant_name, constant) {
  ------------------
  |  | 1448|      9|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     83|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     83|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     83|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     83|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     83|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     83|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     83|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     92|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 9, False: 83]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      9|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      9|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      9|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 9]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      9|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      9|	_key = _p->key; \
  |  | 1450|     83|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     83|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     83|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2828:3): [True: 0, False: 83]
  |  Branch (2828:3): [True: 83, False: 0]
  ------------------
 2829|    184|			if (do_trait_constant_check(ce, constant, constant_name, traits, i)) {
  ------------------
  |  Branch (2829:8): [True: 2, False: 7]
  ------------------
 2830|      2|				zend_class_constant *ct = NULL;
 2831|       |
 2832|      2|				ct = zend_arena_alloc(&CG(arena),sizeof(zend_class_constant));
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 2833|      2|				memcpy(ct, constant, sizeof(zend_class_constant));
 2834|      2|				constant = ct;
 2835|       |
 2836|      2|				if (Z_TYPE(constant->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(constant->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      2|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (2836:9): [True: 0, False: 2]
  ------------------
 2837|      0|					ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
  ------------------
  |  |  298|      0|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
 2838|      0|					ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
  ------------------
  |  |  333|      0|#define ZEND_ACC_HAS_AST_CONSTANTS       (1 << 24) /*  X  |     |     |     */
  ------------------
 2839|      0|				}
 2840|       |
 2841|       |				/* Unlike interface implementations and class inheritances,
 2842|       |				 * access control of the trait constants is done by the scope
 2843|       |				 * of the composing class. So let's replace the ce here.
 2844|       |				 */
 2845|      2|				constant->ce = ce;
 2846|       |
 2847|      2|				Z_TRY_ADDREF(constant->value);
  ------------------
  |  | 1299|      2|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      2|	zval *_pz = (pz);				\
  |  |  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2848|      2|				constant->doc_comment = constant->doc_comment ? zend_string_copy(constant->doc_comment) : NULL;
  ------------------
  |  Branch (2848:29): [True: 0, False: 2]
  ------------------
 2849|      2|				if (constant->attributes && (!(GC_FLAGS(constant->attributes) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (constant->attributes && (!(GC_FLAGS(constant->attributes) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2849:9): [True: 0, False: 2]
  |  Branch (2849:33): [True: 0, False: 0]
  ------------------
 2850|      0|					GC_ADDREF(constant->attributes);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2851|      0|				}
 2852|       |
 2853|      2|				zend_hash_update_ptr(&ce->constants_table, constant_name, constant);
 2854|      2|			}
 2855|    184|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      9|		} \
  |  | 1102|     83|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 83]
  |  |  ------------------
  ------------------
 2856|     83|	}
 2857|     74|}
zend_inheritance.c:do_trait_constant_check:
 2775|      9|) {
 2776|      9|	uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_FINAL;
  ------------------
  |  |  421|      9|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      9|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      9|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      9|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              	uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_FINAL;
  ------------------
  |  |  230|      9|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
 2777|       |
 2778|      9|	zval *zv = zend_hash_find_known_hash(&ce->constants_table, name);
 2779|      9|	if (zv == NULL) {
  ------------------
  |  Branch (2779:6): [True: 2, False: 7]
  ------------------
 2780|       |		/* No existing constant of the same name, so this one can be added */
 2781|      2|		return true;
 2782|      2|	}
 2783|       |
 2784|      7|	zend_class_constant *existing_constant = Z_PTR_P(zv);
  ------------------
  |  | 1053|      7|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      7|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 2785|       |
 2786|      7|	if (UNEXPECTED(ZEND_CLASS_CONST_FLAGS(existing_constant) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
 2787|      1|		emit_trait_constant_enum_case_conflict_error(ce, trait_constant, name);
 2788|      1|		return false;
 2789|      1|	}
 2790|       |
 2791|      6|	if ((ZEND_CLASS_CONST_FLAGS(trait_constant) & flags_mask) != (ZEND_CLASS_CONST_FLAGS(existing_constant) & flags_mask)) {
  ------------------
  |  |  498|      6|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      6|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if ((ZEND_CLASS_CONST_FLAGS(trait_constant) & flags_mask) != (ZEND_CLASS_CONST_FLAGS(existing_constant) & flags_mask)) {
  ------------------
  |  |  498|      6|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      6|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
  |  Branch (2791:6): [True: 1, False: 5]
  ------------------
 2792|      1|		emit_incompatible_trait_constant_error(ce, existing_constant, trait_constant, name, traits, current_trait);
 2793|      1|		return false;
 2794|      1|	}
 2795|       |
 2796|      5|	if (ZEND_TYPE_IS_SET(trait_constant->type) != ZEND_TYPE_IS_SET(existing_constant->type)) {
  ------------------
  |  |  152|      5|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      5|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
              	if (ZEND_TYPE_IS_SET(trait_constant->type) != ZEND_TYPE_IS_SET(existing_constant->type)) {
  ------------------
  |  |  152|      5|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      5|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (2796:6): [True: 1, False: 4]
  ------------------
 2797|      1|		emit_incompatible_trait_constant_error(ce, existing_constant, trait_constant, name, traits, current_trait);
 2798|      1|		return false;
 2799|      4|	} else if (ZEND_TYPE_IS_SET(trait_constant->type)) {
  ------------------
  |  |  152|      4|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      4|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 2800|      2|		inheritance_status status1 = zend_perform_covariant_type_check(ce, existing_constant->type, traits[current_trait], trait_constant->type);
 2801|      2|		inheritance_status status2 = zend_perform_covariant_type_check(traits[current_trait], trait_constant->type, ce, existing_constant->type);
 2802|      2|		if (status1 == INHERITANCE_ERROR || status2 == INHERITANCE_ERROR) {
  ------------------
  |  Branch (2802:7): [True: 1, False: 1]
  |  Branch (2802:39): [True: 1, False: 0]
  ------------------
 2803|      2|			emit_incompatible_trait_constant_error(ce, existing_constant, trait_constant, name, traits, current_trait);
 2804|      2|			return false;
 2805|      2|		}
 2806|      2|	}
 2807|       |
 2808|      2|	if (!check_trait_property_or_constant_value_compatibility(ce, &trait_constant->value, &existing_constant->value)) {
  ------------------
  |  Branch (2808:6): [True: 2, False: 0]
  ------------------
 2809|       |		/* There is an existing constant of the same name, and it conflicts with the new one, so let's throw a fatal error */
 2810|      2|		emit_incompatible_trait_constant_error(ce, existing_constant, trait_constant, name, traits, current_trait);
 2811|      2|		return false;
 2812|      2|	}
 2813|       |
 2814|       |	/* There is an existing constant which is compatible with the new one, so no need to add it */
 2815|      0|	return false;
 2816|      2|}
zend_inheritance.c:emit_trait_constant_enum_case_conflict_error:
 2762|      1|) {
 2763|      1|	zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2764|      1|		"Cannot use trait %s, because %s::%s conflicts with enum case %s::%s",
 2765|      1|		ZSTR_VAL(trait_constant->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2766|      1|		ZSTR_VAL(trait_constant->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2767|      1|		ZSTR_VAL(name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2768|      1|		ZSTR_VAL(ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2769|      1|		ZSTR_VAL(name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2770|      1|	);
 2771|      1|}
zend_inheritance.c:emit_incompatible_trait_constant_error:
 2750|      6|) {
 2751|      6|	zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      6|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2752|      6|		"%s and %s define the same constant (%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed",
 2753|      6|		ZSTR_VAL(find_first_constant_definition(ce, traits, current_trait, name, existing_constant->ce)->name),
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2754|      6|		ZSTR_VAL(trait_constant->ce->name),
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2755|      6|		ZSTR_VAL(name),
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2756|      6|		ZSTR_VAL(ce->name)
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2757|      6|	);
 2758|      6|}
zend_inheritance.c:find_first_constant_definition:
 2726|      6|{
 2727|       |	/* This function is used to show the place of the existing conflicting
 2728|       |	 * definition in error messages when conflicts occur. Since trait constants
 2729|       |	 * are flattened into the constants table of the composing class, and thus
 2730|       |	 * we lose information about which constant was defined in which trait, a
 2731|       |	 * process like this is needed to find the location of the first definition
 2732|       |	 * of the constant from traits.
 2733|       |	 */
 2734|      6|	if (colliding_ce == ce) {
  ------------------
  |  Branch (2734:6): [True: 6, False: 0]
  ------------------
 2735|      6|		for (size_t i = 0; i < current_trait; i++) {
  ------------------
  |  Branch (2735:22): [True: 0, False: 6]
  ------------------
 2736|      0|			if (traits[i]
  ------------------
  |  Branch (2736:8): [True: 0, False: 0]
  ------------------
 2737|      0|				&& zend_hash_exists(&traits[i]->constants_table, constant_name)) {
  ------------------
  |  Branch (2737:8): [True: 0, False: 0]
  ------------------
 2738|      0|				return traits[i];
 2739|      0|			}
 2740|      0|		}
 2741|      6|	}
 2742|       |	/* Traits don't have it, then the composing class (or trait) itself has it. */
 2743|      6|	return colliding_ce;
 2744|      6|}
zend_inheritance.c:check_trait_property_or_constant_value_compatibility:
 2051|      9|{
 2052|      9|	bool is_compatible;
 2053|      9|	zval op1_tmp, op2_tmp;
 2054|       |
 2055|       |	/* if any of the values is a constant, we try to resolve it */
 2056|      9|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_CONSTANT_AST)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 6]
  |  |  ------------------
  ------------------
 2057|      3|		ZVAL_COPY_OR_DUP(&op1_tmp, op1);
  ------------------
  |  | 1457|      3|	do {																\
  |  | 1458|      3|		zval *_z1 = (z);												\
  |  | 1459|      3|		const zval *_z2 = (v);											\
  |  | 1460|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      3|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      3|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 3, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      3|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      3|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      3|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      3|		}																\
  |  | 1472|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2058|      3|		if (UNEXPECTED(zval_update_constant_ex(&op1_tmp, ce) != SUCCESS)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 2059|      0|			zval_ptr_dtor(&op1_tmp);
 2060|      0|			return false;
 2061|      0|		}
 2062|      3|		op1 = &op1_tmp;
 2063|      3|	}
 2064|      9|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_CONSTANT_AST)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 7]
  |  |  ------------------
  ------------------
 2065|      2|		ZVAL_COPY_OR_DUP(&op2_tmp, op2);
  ------------------
  |  | 1457|      2|	do {																\
  |  | 1458|      2|		zval *_z1 = (z);												\
  |  | 1459|      2|		const zval *_z2 = (v);											\
  |  | 1460|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      2|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      2|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      2|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      2|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      2|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      2|		}																\
  |  | 1472|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2066|      2|		if (UNEXPECTED(zval_update_constant_ex(&op2_tmp, ce) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2067|      0|			zval_ptr_dtor(&op2_tmp);
 2068|      0|			return false;
 2069|      0|		}
 2070|      2|		op2 = &op2_tmp;
 2071|      2|	}
 2072|       |
 2073|      9|	is_compatible = fast_is_identical_function(op1, op2);
 2074|       |
 2075|      9|	if (op1 == &op1_tmp) {
  ------------------
  |  Branch (2075:6): [True: 3, False: 6]
  ------------------
 2076|      3|		zval_ptr_dtor_nogc(&op1_tmp);
 2077|      3|	}
 2078|      9|	if (op2 == &op2_tmp) {
  ------------------
  |  Branch (2078:6): [True: 2, False: 7]
  ------------------
 2079|      2|		zval_ptr_dtor_nogc(&op2_tmp);
 2080|      2|	}
 2081|       |
 2082|      9|	return is_compatible;
 2083|      9|}
zend_inheritance.c:zend_do_traits_property_binding:
 2876|     67|{
 2877|     67|	zend_property_info *property_info;
 2878|     67|	const zend_property_info *colliding_prop;
 2879|     67|	zend_string* prop_name;
 2880|     67|	zval* prop_value;
 2881|       |
 2882|       |	/* In the following steps the properties are inserted into the property table
 2883|       |	 * for that, a very strict approach is applied:
 2884|       |	 * - check for compatibility, if not compatible with any property in class -> fatal
 2885|       |	 * - if compatible, then strict notice
 2886|       |	 */
 2887|    137|	for (uint32_t i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (2887:23): [True: 76, False: 61]
  ------------------
 2888|     76|		if (!traits[i]) {
  ------------------
  |  Branch (2888:7): [True: 0, False: 76]
  ------------------
 2889|      0|			continue;
 2890|      0|		}
 2891|    212|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&traits[i]->properties_info, prop_name, property_info) {
  ------------------
  |  | 1448|     30|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     76|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     76|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     76|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     76|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     76|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     76|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     76|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    100|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 30, False: 70]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     30|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     30|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     30|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 30]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     30|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 30]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     30|	_key = _p->key; \
  |  | 1450|     76|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     76|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     76|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2891:3): [True: 0, False: 76]
  |  Branch (2891:3): [True: 76, False: 0]
  ------------------
 2892|    212|			uint32_t flags = property_info->flags;
 2893|       |
 2894|       |			/* next: check for conflicts with current class */
 2895|    212|			if ((colliding_prop = zend_hash_find_ptr(&ce->properties_info, prop_name)) != NULL) {
  ------------------
  |  Branch (2895:8): [True: 10, False: 20]
  ------------------
 2896|     10|				if ((colliding_prop->flags & ZEND_ACC_PRIVATE) && colliding_prop->ce != ce) {
  ------------------
  |  |  221|     10|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2896:9): [True: 0, False: 10]
  |  Branch (2896:55): [True: 0, False: 0]
  ------------------
 2897|      0|					zend_hash_del(&ce->properties_info, prop_name);
 2898|      0|					flags |= ZEND_ACC_CHANGED;
  ------------------
  |  |  224|      0|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
 2899|     10|				} else {
 2900|     10|					bool is_compatible = false;
 2901|     10|					uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC | ZEND_ACC_READONLY;
  ------------------
  |  |  421|     10|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|     10|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|     10|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|     10|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              					uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC | ZEND_ACC_READONLY;
  ------------------
  |  |  227|     10|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              					uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC | ZEND_ACC_READONLY;
  ------------------
  |  |  237|     10|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
 2902|       |
 2903|     10|					if (colliding_prop->hooks || property_info->hooks) {
  ------------------
  |  Branch (2903:10): [True: 0, False: 10]
  |  Branch (2903:35): [True: 0, False: 10]
  ------------------
 2904|      0|						zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2905|      0|							"%s and %s define the same hooked property ($%s) in the composition of %s. Conflict resolution between hooked properties is currently not supported. Class was composed",
 2906|      0|							ZSTR_VAL(find_first_property_definition(ce, traits, i, prop_name, colliding_prop->ce)->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2907|      0|							ZSTR_VAL(property_info->ce->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2908|      0|							ZSTR_VAL(prop_name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2909|      0|							ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2910|      0|					}
 2911|       |
 2912|     10|					if ((colliding_prop->flags & flags_mask) == (flags & flags_mask) &&
  ------------------
  |  Branch (2912:10): [True: 8, False: 2]
  ------------------
 2913|      8|						verify_property_type_compatibility(property_info, colliding_prop, PROP_INVARIANT, false, false) == INHERITANCE_SUCCESS
  ------------------
  |  Branch (2913:7): [True: 7, False: 1]
  ------------------
 2914|     10|					) {
 2915|       |						/* the flags are identical, thus, the properties may be compatible */
 2916|      7|						zval *op1, *op2;
 2917|       |
 2918|      7|						if (flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      7|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2918:11): [True: 1, False: 6]
  ------------------
 2919|      1|							op1 = &ce->default_static_members_table[colliding_prop->offset];
 2920|      1|							op2 = &traits[i]->default_static_members_table[property_info->offset];
 2921|      1|							ZVAL_DEINDIRECT(op1);
  ------------------
  |  | 1480|      1|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      1|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      1|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2922|      1|							ZVAL_DEINDIRECT(op2);
  ------------------
  |  | 1480|      1|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      1|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      1|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2923|      6|						} else {
 2924|      6|							op1 = &ce->default_properties_table[OBJ_PROP_TO_NUM(colliding_prop->offset)];
  ------------------
  |  |  486|      6|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      6|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 2925|      6|							op2 = &traits[i]->default_properties_table[OBJ_PROP_TO_NUM(property_info->offset)];
  ------------------
  |  |  486|      6|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      6|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 2926|      6|						}
 2927|      7|						is_compatible = check_trait_property_or_constant_value_compatibility(ce, op1, op2);
 2928|      7|					}
 2929|       |
 2930|     10|					if (!is_compatible) {
  ------------------
  |  Branch (2930:10): [True: 5, False: 5]
  ------------------
 2931|      5|						zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2932|      5|								"%s and %s define the same property ($%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed",
 2933|      5|								ZSTR_VAL(find_first_property_definition(ce, traits, i, prop_name, colliding_prop->ce)->name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2934|      5|								ZSTR_VAL(property_info->ce->name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2935|      5|								ZSTR_VAL(prop_name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2936|      5|								ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2937|      5|					}
 2938|      5|					continue;
 2939|     10|				}
 2940|     10|			}
 2941|       |
 2942|     20|			if ((ce->ce_flags & ZEND_ACC_READONLY_CLASS) && !(property_info->flags & ZEND_ACC_READONLY)) {
  ------------------
  |  |  311|     20|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
              			if ((ce->ce_flags & ZEND_ACC_READONLY_CLASS) && !(property_info->flags & ZEND_ACC_READONLY)) {
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (2942:8): [True: 2, False: 18]
  |  Branch (2942:52): [True: 1, False: 1]
  ------------------
 2943|      1|				zend_error_noreturn(E_COMPILE_ERROR,
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2944|      1|					"Readonly class %s cannot use trait with a non-readonly property %s::$%s",
 2945|      1|					ZSTR_VAL(ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2946|      1|					ZSTR_VAL(property_info->ce->name),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2947|      1|					ZSTR_VAL(prop_name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2948|      1|				);
 2949|      1|			}
 2950|       |
 2951|       |			/* property not found, so lets add it */
 2952|     19|			zval tmp_prop_value;
 2953|     19|			if (!(flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|     19|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (2953:8): [True: 17, False: 2]
  ------------------
 2954|     17|				if (flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     17|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (2954:9): [True: 4, False: 13]
  ------------------
 2955|      4|					prop_value = &traits[i]->default_static_members_table[property_info->offset];
 2956|      4|					ZEND_ASSERT(Z_TYPE_P(prop_value) != IS_INDIRECT);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2956:6): [True: 0, False: 4]
  |  Branch (2956:6): [True: 4, False: 0]
  ------------------
 2957|     13|				} else {
 2958|     13|					prop_value = &traits[i]->default_properties_table[OBJ_PROP_TO_NUM(property_info->offset)];
  ------------------
  |  |  486|     13|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|     13|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
 2959|     13|				}
 2960|     17|				Z_TRY_ADDREF_P(prop_value);
  ------------------
  |  | 1285|     17|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     17|	zval *_pz = (pz);				\
  |  | 1287|     17|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     17|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     17|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     17|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 3, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      3|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      3|	}								\
  |  | 1290|     17|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 17]
  |  |  ------------------
  ------------------
 2961|     17|			} else {
 2962|      2|				prop_value = &tmp_prop_value;
 2963|      2|				ZVAL_UNDEF(&tmp_prop_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2964|      2|			}
 2965|       |
 2966|     19|			zend_string *doc_comment = property_info->doc_comment ? zend_string_copy(property_info->doc_comment) : NULL;
  ------------------
  |  Branch (2966:31): [True: 3, False: 16]
  ------------------
 2967|       |
 2968|     19|			zend_type type = property_info->type;
 2969|       |			/* Assumption: only userland classes can use traits, as such the type must be arena allocated */
 2970|     19|			zend_type_copy_ctor(&type, /* use arena */ true, /* persistent */ false);
 2971|     19|			zend_property_info *new_prop = zend_declare_typed_property(ce, prop_name, prop_value, flags, doc_comment, type);
 2972|       |
 2973|     19|			if (property_info->attributes) {
  ------------------
  |  Branch (2973:8): [True: 1, False: 18]
  ------------------
 2974|      1|				new_prop->attributes = property_info->attributes;
 2975|       |
 2976|      1|				if (!(GC_FLAGS(new_prop->attributes) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(new_prop->attributes) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      1|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (2976:9): [True: 1, False: 0]
  ------------------
 2977|      1|					GC_ADDREF(new_prop->attributes);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2978|      1|				}
 2979|      1|			}
 2980|     19|			if (property_info->hooks) {
  ------------------
  |  Branch (2980:8): [True: 3, False: 16]
  ------------------
 2981|      3|				zend_function **hooks = new_prop->hooks =
 2982|      3|					zend_arena_alloc(&CG(arena), ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
              					zend_arena_alloc(&CG(arena), ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |  459|      3|#define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT)
  |  |  ------------------
  |  |  |  |  458|      3|#define ZEND_PROPERTY_HOOK_COUNT 2
  |  |  ------------------
  ------------------
 2983|      3|				memcpy(hooks, property_info->hooks, ZEND_PROPERTY_HOOK_STRUCT_SIZE);
  ------------------
  |  |  459|      3|#define ZEND_PROPERTY_HOOK_STRUCT_SIZE (sizeof(zend_function*) * ZEND_PROPERTY_HOOK_COUNT)
  |  |  ------------------
  |  |  |  |  458|      3|#define ZEND_PROPERTY_HOOK_COUNT 2
  |  |  ------------------
  ------------------
 2984|      9|				for (uint32_t j = 0; j < ZEND_PROPERTY_HOOK_COUNT; j++) {
  ------------------
  |  |  458|      9|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (2984:26): [True: 6, False: 3]
  ------------------
 2985|      6|					if (hooks[j]) {
  ------------------
  |  Branch (2985:10): [True: 5, False: 1]
  ------------------
 2986|      5|						zend_function *old_fn = hooks[j];
 2987|       |
 2988|       |						/* Hooks are not yet supported for internal properties. */
 2989|      5|						ZEND_ASSERT(ZEND_USER_CODE(old_fn->type));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2989:7): [True: 0, False: 5]
  |  Branch (2989:7): [True: 5, False: 0]
  ------------------
 2990|       |
 2991|       |						/* Copy the function, because we need to adjust the scope. */
 2992|      5|						zend_function *new_fn = zend_arena_alloc(&CG(arena), sizeof(zend_op_array));
  ------------------
  |  |   35|      5|# define CG(v) (compiler_globals.v)
  ------------------
 2993|      5|						memcpy(new_fn, old_fn, sizeof(zend_op_array));
 2994|      5|						new_fn->op_array.fn_flags &= ~ZEND_ACC_IMMUTABLE;
  ------------------
  |  |  241|      5|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
 2995|      5|						new_fn->common.fn_flags |= ZEND_ACC_TRAIT_CLONE;
  ------------------
  |  |  378|      5|#define ZEND_ACC_TRAIT_CLONE             (1 << 20) /*     |  X  |     |     */
  ------------------
 2996|      5|						new_fn->common.prop_info = new_prop;
 2997|      5|						function_add_ref(new_fn);
 2998|       |
 2999|      5|						zend_fixup_trait_method(new_fn, ce);
 3000|       |
 3001|      5|						hooks[j] = new_fn;
 3002|      5|					}
 3003|      6|				}
 3004|      3|				ce->num_hooked_props++;
 3005|      3|			}
 3006|     19|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     19|		} \
  |  | 1102|     76|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 70]
  |  |  ------------------
  ------------------
 3007|     76|	}
 3008|     67|}
zend_inheritance.c:find_first_property_definition:
 2861|      5|{
 2862|      5|	if (colliding_ce == ce) {
  ------------------
  |  Branch (2862:6): [True: 5, False: 0]
  ------------------
 2863|      5|		for (size_t i = 0; i < current_trait; i++) {
  ------------------
  |  Branch (2863:22): [True: 2, False: 3]
  ------------------
 2864|      2|			if (traits[i]
  ------------------
  |  Branch (2864:8): [True: 2, False: 0]
  ------------------
 2865|      2|			 && zend_hash_exists(&traits[i]->properties_info, prop_name)) {
  ------------------
  |  Branch (2865:8): [True: 2, False: 0]
  ------------------
 2866|      2|				return traits[i];
 2867|      2|			}
 2868|      2|		}
 2869|      5|	}
 2870|       |
 2871|      3|	return colliding_ce;
 2872|      5|}
zend_inheritance.c:zend_fixup_trait_method:
 2415|     57|{
 2416|     57|	if (fn->common.scope->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     57|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (2416:6): [True: 42, False: 15]
  ------------------
 2417|       |
 2418|     42|		fn->common.scope = ce;
 2419|       |
 2420|     42|		if (fn->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     42|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (2420:7): [True: 4, False: 38]
  ------------------
 2421|      4|			ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
  ------------------
  |  |  291|      4|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
 2422|      4|		}
 2423|     42|		if (fn->type == ZEND_USER_FUNCTION && fn->op_array.static_variables) {
  ------------------
  |  Branch (2423:7): [True: 42, False: 0]
  |  Branch (2423:41): [True: 1, False: 41]
  ------------------
 2424|      1|			ce->ce_flags |= ZEND_HAS_STATIC_IN_METHODS;
  ------------------
  |  |  304|      1|#define ZEND_HAS_STATIC_IN_METHODS       (1 << 14) /*  X  |     |     |     */
  ------------------
 2425|      1|		}
 2426|     42|	}
 2427|     57|}
zend_inheritance.c:zend_do_implement_interfaces:
 2243|    202|{
 2244|    202|	uint32_t num_parent_interfaces = ce->parent ? ce->parent->num_interfaces : 0;
  ------------------
  |  Branch (2244:35): [True: 4, False: 198]
  ------------------
 2245|    202|	uint32_t num_interfaces = num_parent_interfaces;
 2246|    202|	zend_string *key;
 2247|    202|	zend_class_constant *c;
 2248|    202|	uint32_t i;
 2249|       |
 2250|    449|	for (i = 0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (2250:14): [True: 255, False: 194]
  ------------------
 2251|    255|		zend_class_entry *iface = interfaces[num_parent_interfaces + i];
 2252|    255|		if (!(iface->ce_flags & ZEND_ACC_LINKED)) {
  ------------------
  |  |  287|    255|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (2252:7): [True: 0, False: 255]
  ------------------
 2253|      0|			add_dependency_obligation(ce, iface);
 2254|      0|		}
 2255|    255|		if (UNEXPECTED(!(iface->ce_flags & ZEND_ACC_INTERFACE))) {
  ------------------
  |  |  457|    255|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 252]
  |  |  ------------------
  ------------------
 2256|      3|			efree(interfaces);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2257|      3|			zend_error_noreturn(E_ERROR, "%s cannot implement %s - it is not an interface", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   22|      3|#define E_ERROR				(1<<0L)
  ------------------
              			zend_error_noreturn(E_ERROR, "%s cannot implement %s - it is not an interface", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error_noreturn(E_ERROR, "%s cannot implement %s - it is not an interface", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2258|      3|		}
 2259|    301|		for (uint32_t j = 0; j < num_interfaces; j++) {
  ------------------
  |  Branch (2259:24): [True: 54, False: 247]
  ------------------
 2260|     54|			if (interfaces[j] == iface) {
  ------------------
  |  Branch (2260:8): [True: 5, False: 49]
  ------------------
 2261|      5|				if (j >= num_parent_interfaces) {
  ------------------
  |  Branch (2261:9): [True: 5, False: 0]
  ------------------
 2262|      5|					efree(interfaces);
  ------------------
  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2263|      5|					zend_error_noreturn(E_COMPILE_ERROR, "%s %s cannot implement previously implemented interface %s",
  ------------------
  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 2264|      5|						zend_get_object_type_uc(ce),
 2265|      5|						ZSTR_VAL(ce->name),
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2266|      5|						ZSTR_VAL(iface->name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2267|      5|				}
 2268|       |				/* skip duplications */
 2269|      5|				ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&iface->constants_table, key, c) {
  ------------------
  |  | 1448|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      0|	_key = _p->key; \
  |  | 1450|      5|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2269:5): [True: 0, False: 0]
  |  Branch (2269:5): [True: 0, False: 0]
  ------------------
 2270|      0|					do_inherit_constant_check(ce, c, key);
 2271|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2272|       |
 2273|      0|				iface = NULL;
 2274|      0|				break;
 2275|      0|			}
 2276|     54|		}
 2277|    247|		if (iface) {
  ------------------
  |  Branch (2277:7): [True: 247, False: 0]
  ------------------
 2278|    247|			interfaces[num_interfaces] = iface;
 2279|    247|			num_interfaces++;
 2280|    247|		}
 2281|    247|	}
 2282|       |
 2283|    194|	if (!(ce->ce_flags & ZEND_ACC_CACHED)) {
  ------------------
  |  |  328|    194|#define ZEND_ACC_CACHED                  (1 << 22) /*  X  |     |     |     */
  ------------------
  |  Branch (2283:6): [True: 194, False: 0]
  ------------------
 2284|    435|		for (i = 0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (2284:15): [True: 241, False: 194]
  ------------------
 2285|    241|			zend_string_release_ex(ce->interface_names[i].name, 0);
 2286|    241|			zend_string_release_ex(ce->interface_names[i].lc_name, 0);
 2287|    241|		}
 2288|    194|		efree(ce->interface_names);
  ------------------
  |  |  154|    194|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    194|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    194|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    194|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    194|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2289|    194|	}
 2290|       |
 2291|    194|	ce->num_interfaces = num_interfaces;
 2292|    194|	ce->interfaces = interfaces;
 2293|    194|	ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES;
  ------------------
  |  |  317|    194|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
 2294|       |
 2295|    194|	for (i = 0; i < num_parent_interfaces; i++) {
  ------------------
  |  Branch (2295:14): [True: 0, False: 194]
  ------------------
 2296|      0|		do_implement_interface(ce, ce->interfaces[i]);
 2297|      0|	}
 2298|       |	/* Note that new interfaces can be added during this loop due to interface inheritance.
 2299|       |	 * Use num_interfaces rather than ce->num_interfaces to not re-process the new ones. */
 2300|    429|	for (; i < num_interfaces; i++) {
  ------------------
  |  Branch (2300:9): [True: 235, False: 194]
  ------------------
 2301|    235|		do_interface_implementation(ce, ce->interfaces[i]);
 2302|    235|	}
 2303|    194|}
zend_inheritance.c:add_property_hook_obligation:
 3216|      1|		zend_class_entry *ce, const zend_property_info *hooked_prop, const zend_function *hook_func) {
 3217|      1|	HashTable *obligations = get_or_init_obligations_for_class(ce);
 3218|       |	variance_obligation *obligation = emalloc(sizeof(variance_obligation));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3219|      1|	obligation->type = OBLIGATION_PROPERTY_HOOK;
 3220|      1|	obligation->hooked_prop = hooked_prop;
 3221|      1|	obligation->hook_func = hook_func;
 3222|      1|	zend_hash_next_index_insert_ptr(obligations, obligation);
 3223|      1|}
zend_inheritance.c:load_delayed_classes:
 3266|     24|static void load_delayed_classes(const zend_class_entry *ce) {
 3267|     24|	HashTable *delayed_autoloads = CG(delayed_autoloads);
  ------------------
  |  |   35|     24|# define CG(v) (compiler_globals.v)
  ------------------
 3268|     24|	if (!delayed_autoloads) {
  ------------------
  |  Branch (3268:6): [True: 0, False: 24]
  ------------------
 3269|      0|		return;
 3270|      0|	}
 3271|       |
 3272|       |	/* Autoloading can trigger linking of another class, which may register new delayed autoloads.
 3273|       |	 * For that reason, this code uses a loop that pops and loads the first element of the HT. If
 3274|       |	 * this triggers linking, then the remaining classes may get loaded when linking the newly
 3275|       |	 * loaded class. This is important, as otherwise necessary dependencies may not be available
 3276|       |	 * if the new class is lower in the hierarchy than the current one. */
 3277|     24|	HashPosition pos = 0;
 3278|     24|	zend_string *name;
 3279|     24|	zend_ulong idx;
 3280|     57|	while (zend_hash_get_current_key_ex(delayed_autoloads, &name, &idx, &pos)
  ------------------
  |  Branch (3280:9): [True: 34, False: 23]
  ------------------
 3281|     57|			!= HASH_KEY_NON_EXISTENT) {
 3282|     34|		zend_string_addref(name);
 3283|     34|		zend_hash_del(delayed_autoloads, name);
 3284|     34|		zend_lookup_class(name);
 3285|     34|		zend_string_release(name);
 3286|     34|		if (EG(exception)) {
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 1, False: 33]
  |  |  ------------------
  ------------------
 3287|      1|			zend_exception_uncaught_error(
 3288|      1|				"During inheritance of %s, while autoloading %s",
 3289|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3290|      1|		}
 3291|     34|	}
 3292|     24|}
zend_inheritance.c:resolve_delayed_variance_obligations:
 3294|     23|static void resolve_delayed_variance_obligations(zend_class_entry *ce) {
 3295|     23|	HashTable *all_obligations = CG(delayed_variance_obligations);
  ------------------
  |  |   35|     23|# define CG(v) (compiler_globals.v)
  ------------------
 3296|     23|	zend_ulong num_key = (zend_ulong) (uintptr_t) ce;
 3297|       |
 3298|     23|	ZEND_ASSERT(all_obligations != NULL);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3298:2): [True: 0, False: 23]
  |  Branch (3298:2): [True: 23, False: 0]
  ------------------
 3299|     23|	const HashTable *obligations = zend_hash_index_find_ptr(all_obligations, num_key);
 3300|     23|	ZEND_ASSERT(obligations != NULL);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3300:2): [True: 0, False: 23]
  |  Branch (3300:2): [True: 23, False: 0]
  ------------------
 3301|       |
 3302|     23|	variance_obligation *obligation;
 3303|     69|	ZEND_HASH_FOREACH_PTR(obligations, obligation) {
  ------------------
  |  | 1133|     23|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|     23|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|     23|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|     23|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|     23|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|     23|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|     23|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     23|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     23|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|     23|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     46|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|     23|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 23, False: 23]
  |  |  |  |  ------------------
  |  |  |  | 1034|     23|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|     23|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     23|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     23|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3304|     69|		check_variance_obligation(obligation);
 3305|     69|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     23|		} \
  |  | 1102|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
 3306|       |
 3307|     23|	zend_inheritance_check_override(ce);
 3308|       |
 3309|     23|	ce->ce_flags &= ~ZEND_ACC_UNRESOLVED_VARIANCE;
  ------------------
  |  |  320|     23|#define ZEND_ACC_UNRESOLVED_VARIANCE     (1 << 19) /*  X  |     |     |     */
  ------------------
 3310|     23|	ce->ce_flags |= ZEND_ACC_LINKED;
  ------------------
  |  |  287|     23|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
 3311|     23|	zend_hash_index_del(all_obligations, num_key);
 3312|     23|}
zend_inheritance.c:check_variance_obligation:
 3227|     23|static void check_variance_obligation(const variance_obligation *obligation) {
 3228|     23|	if (obligation->type == OBLIGATION_DEPENDENCY) {
  ------------------
  |  Branch (3228:6): [True: 0, False: 23]
  ------------------
 3229|      0|		zend_class_entry *dependency_ce = obligation->dependency_ce;
 3230|      0|		if (dependency_ce->ce_flags & ZEND_ACC_UNRESOLVED_VARIANCE) {
  ------------------
  |  |  320|      0|#define ZEND_ACC_UNRESOLVED_VARIANCE     (1 << 19) /*  X  |     |     |     */
  ------------------
  |  Branch (3230:7): [True: 0, False: 0]
  ------------------
 3231|      0|			zend_class_entry *orig_linking_class = CG(current_linking_class);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3232|       |
 3233|      0|			CG(current_linking_class) =
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3234|      0|				(dependency_ce->ce_flags & ZEND_ACC_CACHEABLE) ? dependency_ce : NULL;
  ------------------
  |  |  331|      0|#define ZEND_ACC_CACHEABLE               (1 << 23) /*  X  |     |     |     */
  ------------------
  |  Branch (3234:5): [True: 0, False: 0]
  ------------------
 3235|      0|			resolve_delayed_variance_obligations(dependency_ce);
 3236|      0|			CG(current_linking_class) = orig_linking_class;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 3237|      0|		}
 3238|     23|	} else if (obligation->type == OBLIGATION_COMPATIBILITY) {
  ------------------
  |  Branch (3238:13): [True: 15, False: 8]
  ------------------
 3239|     15|		inheritance_status status = zend_do_perform_implementation_check(
 3240|     15|			&obligation->child_fn, obligation->child_scope,
 3241|     15|			&obligation->parent_fn, obligation->parent_scope);
 3242|     15|		if (UNEXPECTED(status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 15, False: 0]
  |  |  ------------------
  ------------------
 3243|     15|			emit_incompatible_method_error(
 3244|     15|				&obligation->child_fn, obligation->child_scope,
 3245|     15|				&obligation->parent_fn, obligation->parent_scope, status);
 3246|     15|		}
 3247|       |		/* Either the compatibility check was successful or only threw a warning. */
 3248|     15|	} else if (obligation->type == OBLIGATION_PROPERTY_COMPATIBILITY) {
  ------------------
  |  Branch (3248:13): [True: 6, False: 2]
  ------------------
 3249|      6|		verify_property_type_compatibility(obligation->parent_prop, obligation->child_prop, obligation->variance, true, true);
 3250|      6|	} else if (obligation->type == OBLIGATION_CLASS_CONSTANT_COMPATIBILITY) {
  ------------------
  |  Branch (3250:13): [True: 1, False: 1]
  ------------------
 3251|      1|		inheritance_status status =
 3252|      1|		class_constant_types_compatible(obligation->parent_const, obligation->child_const);
 3253|      1|		if (status != INHERITANCE_SUCCESS) {
  ------------------
  |  Branch (3253:7): [True: 1, False: 0]
  ------------------
 3254|      1|			emit_incompatible_class_constant_error(obligation->child_const, obligation->parent_const, obligation->const_name);
 3255|      1|		}
 3256|      1|	} else if (obligation->type == OBLIGATION_PROPERTY_HOOK) {
  ------------------
  |  Branch (3256:13): [True: 1, False: 0]
  ------------------
 3257|      1|		inheritance_status status = zend_verify_property_hook_variance(obligation->hooked_prop, obligation->hook_func);
 3258|      1|		if (status != INHERITANCE_SUCCESS) {
  ------------------
  |  Branch (3258:7): [True: 1, False: 0]
  ------------------
 3259|      1|			zend_hooked_property_variance_error(obligation->hooked_prop);
 3260|      1|		}
 3261|      1|	} else {
 3262|       |		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3262:3): [Folded, False: 0]
  |  Branch (3262:3): [Folded, False: 0]
  ------------------
 3263|      0|	}
 3264|     23|}
zend_inheritance.c:register_early_bound_ce:
 3873|    194|static zend_always_inline bool register_early_bound_ce(zval *delayed_early_binding, zend_string *lcname, zend_class_entry *ce) {
 3874|    194|	if (delayed_early_binding) {
  ------------------
  |  Branch (3874:6): [True: 0, False: 194]
  ------------------
 3875|      0|		if (EXPECTED(!(ce->ce_flags & ZEND_ACC_PRELOADED))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3876|      0|			if (zend_hash_set_bucket_key(EG(class_table), (Bucket *)delayed_early_binding, lcname) != NULL) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3876:8): [True: 0, False: 0]
  ------------------
 3877|      0|				Z_CE_P(delayed_early_binding) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3878|      0|				return true;
 3879|      0|			}
 3880|      0|		} else {
 3881|       |			/* If preloading is used, don't replace the existing bucket, add a new one. */
 3882|      0|			if (zend_hash_add_ptr(EG(class_table), lcname, ce) != NULL) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3882:8): [True: 0, False: 0]
  ------------------
 3883|      0|				return true;
 3884|      0|			}
 3885|      0|		}
 3886|      0|		zend_class_entry *old_ce = zend_hash_find_ptr(EG(class_table), lcname);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3887|      0|		ZEND_ASSERT(old_ce);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3887:3): [True: 0, False: 0]
  |  Branch (3887:3): [True: 0, False: 0]
  ------------------
 3888|      0|		zend_class_redeclaration_error(E_COMPILE_ERROR, old_ce);
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
 3889|      0|		return false;
 3890|      0|	}
 3891|    194|	if (zend_hash_add_ptr(CG(class_table), lcname, ce) != NULL) {
  ------------------
  |  |   35|    194|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3891:6): [True: 194, False: 0]
  ------------------
 3892|    194|		return true;
 3893|    194|	}
 3894|      0|	return false;
 3895|    194|}
zend_inheritance.c:zend_can_early_bind:
 3807|    218|{
 3808|    218|	zend_string *key;
 3809|    218|	zend_function *parent_func;
 3810|    218|	const zend_property_info *parent_info;
 3811|    218|	const zend_class_constant *parent_const;
 3812|    218|	inheritance_status overall_status = INHERITANCE_SUCCESS;
 3813|       |
 3814|  1.39k|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&parent_ce->function_table, key, parent_func) {
  ------------------
  |  | 1448|    481|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    218|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    218|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    218|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    218|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    218|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    218|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    218|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    656|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 481, False: 175]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    481|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    481|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    481|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 481]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    481|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    481|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 481]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    481|	_key = _p->key; \
  |  | 1450|    481|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    218|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    218|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3814:2): [True: 0, False: 218]
  |  Branch (3814:2): [True: 218, False: 0]
  ------------------
 3815|  1.39k|		zval *zv = zend_hash_find_known_hash(&ce->function_table, key);
 3816|  1.39k|		if (zv) {
  ------------------
  |  Branch (3816:7): [True: 88, False: 393]
  ------------------
 3817|     88|			zend_function *child_func = Z_FUNC_P(zv);
  ------------------
  |  | 1050|     88|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|     88|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 3818|     88|			inheritance_status status =
 3819|     88|				do_inheritance_check_on_method(
 3820|     88|					child_func, child_func->common.scope,
 3821|     88|					parent_func, parent_func->common.scope,
 3822|     88|					ce, NULL,
 3823|     88|					ZEND_INHERITANCE_CHECK_SILENT | ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY);
  ------------------
  |  | 1114|     88|#define ZEND_INHERITANCE_CHECK_SILENT         (1<<1) /* don't throw errors */
  ------------------
              					ZEND_INHERITANCE_CHECK_SILENT | ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY);
  ------------------
  |  | 1115|     88|#define ZEND_INHERITANCE_CHECK_PROTO          (1<<2) /* check method prototype (it might be already checked before) */
  ------------------
              					ZEND_INHERITANCE_CHECK_SILENT | ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY);
  ------------------
  |  | 1116|     88|#define ZEND_INHERITANCE_CHECK_VISIBILITY     (1<<3)
  ------------------
 3824|     88|			if (UNEXPECTED(status == INHERITANCE_WARNING)) {
  ------------------
  |  |  457|     88|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 82]
  |  |  ------------------
  ------------------
 3825|      6|				overall_status = INHERITANCE_WARNING;
 3826|     82|			} else if (UNEXPECTED(status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|     82|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 43, False: 39]
  |  |  ------------------
  ------------------
 3827|     43|				return status;
 3828|     43|			}
 3829|     88|		}
 3830|  1.39k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    481|		} \
  |  | 1102|    218|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 175]
  |  |  ------------------
  ------------------
 3831|       |
 3832|    702|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&parent_ce->properties_info, key, parent_info) {
  ------------------
  |  | 1448|    176|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    175|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    175|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    175|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    175|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    175|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    175|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    175|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    330|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 176, False: 154]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    176|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    176|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    176|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 176]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    176|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    176|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 176]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    176|	_key = _p->key; \
  |  | 1450|    218|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    218|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    218|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3832:2): [True: 0, False: 175]
  |  Branch (3832:2): [True: 175, False: 0]
  ------------------
 3833|    702|		const zval *zv;
 3834|    702|		if ((parent_info->flags & ZEND_ACC_PRIVATE) || !ZEND_TYPE_IS_SET(parent_info->type)) {
  ------------------
  |  |  221|    176|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		if ((parent_info->flags & ZEND_ACC_PRIVATE) || !ZEND_TYPE_IS_SET(parent_info->type)) {
  ------------------
  |  |  152|    129|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    129|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (3834:7): [True: 47, False: 129]
  |  Branch (3834:50): [True: 56, False: 73]
  ------------------
 3835|    103|			continue;
 3836|    103|		}
 3837|       |
 3838|     73|		zv = zend_hash_find_known_hash(&ce->properties_info, key);
 3839|     73|		if (zv) {
  ------------------
  |  Branch (3839:7): [True: 38, False: 35]
  ------------------
 3840|     38|			const zend_property_info *child_info = Z_PTR_P(zv);
  ------------------
  |  | 1053|     38|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     38|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3841|     38|			if (ZEND_TYPE_IS_SET(child_info->type)) {
  ------------------
  |  |  152|     38|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     38|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 35, False: 3]
  |  |  ------------------
  ------------------
 3842|     35|				inheritance_status status = verify_property_type_compatibility(parent_info, child_info, prop_get_variance(parent_info), false, false);
 3843|     35|				if (UNEXPECTED(status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 14]
  |  |  ------------------
  ------------------
 3844|     21|					return status;
 3845|     21|				}
 3846|     35|			}
 3847|     38|		}
 3848|     73|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     73|		} \
  |  | 1102|    175|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 154]
  |  |  ------------------
  ------------------
 3849|       |
 3850|    396|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&parent_ce->constants_table, key, parent_const) {
  ------------------
  |  | 1448|     44|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    154|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    154|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    154|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    154|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    154|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    154|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    154|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    197|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 44, False: 153]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     44|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     44|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     44|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 44]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     44|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     44|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 44]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     44|	_key = _p->key; \
  |  | 1450|    175|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    175|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    175|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3850:2): [True: 0, False: 154]
  |  Branch (3850:2): [True: 154, False: 0]
  ------------------
 3851|    396|		const zval *zv;
 3852|    396|		if ((ZEND_CLASS_CONST_FLAGS(parent_const) & ZEND_ACC_PRIVATE) || !ZEND_TYPE_IS_SET(parent_const->type)) {
  ------------------
  |  |  498|     44|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     44|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              		if ((ZEND_CLASS_CONST_FLAGS(parent_const) & ZEND_ACC_PRIVATE) || !ZEND_TYPE_IS_SET(parent_const->type)) {
  ------------------
  |  |  221|     44|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		if ((ZEND_CLASS_CONST_FLAGS(parent_const) & ZEND_ACC_PRIVATE) || !ZEND_TYPE_IS_SET(parent_const->type)) {
  ------------------
  |  |  152|     42|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     42|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (3852:7): [True: 2, False: 42]
  |  Branch (3852:68): [True: 14, False: 28]
  ------------------
 3853|     16|			continue;
 3854|     16|		}
 3855|       |
 3856|     28|		zv = zend_hash_find_known_hash(&ce->constants_table, key);
 3857|     28|		if (zv) {
  ------------------
  |  Branch (3857:7): [True: 2, False: 26]
  ------------------
 3858|      2|			const zend_class_constant *child_const = Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3859|      2|			if (ZEND_TYPE_IS_SET(child_const->type)) {
  ------------------
  |  |  152|      2|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      2|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 3860|      1|				inheritance_status status = class_constant_types_compatible(parent_const, child_const);
 3861|      1|				ZEND_ASSERT(status != INHERITANCE_WARNING);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3861:5): [True: 0, False: 1]
  |  Branch (3861:5): [True: 1, False: 0]
  ------------------
 3862|      1|				if (UNEXPECTED(status != INHERITANCE_SUCCESS)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 3863|      1|					return status;
 3864|      1|				}
 3865|      1|			}
 3866|      2|		}
 3867|     28|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     28|		} \
  |  | 1102|    154|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 153]
  |  |  ------------------
  ------------------
 3868|       |
 3869|    153|	return overall_status;
 3870|    154|}

zend_API.c:zend_do_inheritance:
   30|    158|static zend_always_inline void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce) {
   31|    158|	zend_do_inheritance_ex(ce, parent_ce, 0);
   32|    158|}
zend_inheritance.c:zend_do_inheritance:
   30|     49|static zend_always_inline void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce) {
   31|     49|	zend_do_inheritance_ex(ce, parent_ce, 0);
   32|     49|}

zend_ini_startup:
   99|      2|{
  100|      2|	registered_zend_ini_directives = (HashTable *) malloc(sizeof(HashTable));
  101|       |
  102|      2|	EG(ini_directives) = registered_zend_ini_directives;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  103|      2|	EG(modified_ini_directives) = NULL;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  104|      2|	EG(error_reporting_ini_entry) = NULL;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  105|      2|	zend_hash_init(registered_zend_ini_directives, 128, NULL, free_ini_entry, true);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  106|      2|}
zend_ini_deactivate:
  130|  33.5k|{
  131|  33.5k|	if (EG(modified_ini_directives)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 82, False: 33.5k]
  |  |  ------------------
  ------------------
  132|     82|		zend_ini_entry *ini_entry;
  133|       |
  134|    334|		ZEND_HASH_MAP_FOREACH_PTR(EG(modified_ini_directives), ini_entry) {
  ------------------
  |  | 1341|     85|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     82|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     82|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     82|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     82|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     82|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     82|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     82|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    167|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 85, False: 82]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     85|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     85|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     85|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 85]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     85|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     85|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 85]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     85|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     82|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     82|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (134:3): [True: 0, False: 82]
  |  Branch (134:3): [True: 82, False: 0]
  ------------------
  135|    334|			zend_restore_ini_entry_cb(ini_entry, ZEND_INI_STAGE_DEACTIVATE);
  ------------------
  |  |  226|     85|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  ------------------
  136|    334|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     85|		} \
  |  | 1102|     82|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 82]
  |  |  ------------------
  ------------------
  137|     82|		zend_hash_destroy(EG(modified_ini_directives));
  ------------------
  |  |   45|     82|# define EG(v) (executor_globals.v)
  ------------------
  138|     82|		FREE_HASHTABLE(EG(modified_ini_directives));
  ------------------
  |  |  235|     82|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|     82|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     82|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     82|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     82|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     82|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     82|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|     82|		EG(modified_ini_directives) = NULL;
  ------------------
  |  |   45|     82|# define EG(v) (executor_globals.v)
  ------------------
  140|     82|	}
  141|  33.5k|}
zend_ini_sort_entries:
  195|      1|{
  196|      1|	zend_hash_sort(EG(ini_directives), ini_key_compare, false);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  197|      1|}
zend_register_ini_entries_ex:
  204|     20|{
  205|     20|	zend_ini_entry *p;
  206|     20|	zval *default_value;
  207|     20|	HashTable *directives = registered_zend_ini_directives;
  208|       |
  209|       |#ifdef ZTS
  210|       |	/* if we are called during the request, eg: from dl(),
  211|       |	 * then we should not touch the global directives table,
  212|       |	 * and should update the per-(request|thread) version instead.
  213|       |	 * This solves two problems: one is that ini entries for dl()'d
  214|       |	 * extensions will now work, and the second is that updating the
  215|       |	 * global hash here from dl() is not mutex protected and can
  216|       |	 * lead to death.
  217|       |	 */
  218|       |	if (directives != EG(ini_directives)) {
  219|       |		directives = EG(ini_directives);
  220|       |	} else {
  221|       |		ZEND_ASSERT(module_type == MODULE_PERSISTENT);
  222|       |	}
  223|       |#endif
  224|       |
  225|    378|	while (ini_entry->name) {
  ------------------
  |  Branch (225:9): [True: 358, False: 20]
  ------------------
  226|    358|		p = pemalloc(sizeof(zend_ini_entry), true);
  ------------------
  |  |  188|    358|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    358|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    358|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    358|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    358|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 358, Folded]
  |  |  ------------------
  ------------------
  227|    358|		p->def = ini_entry;
  228|    358|		p->name = zend_string_init_interned(ini_entry->name, ini_entry->name_length, true);
  229|    358|		p->on_modify = ini_entry->on_modify;
  230|    358|		p->mh_arg1 = ini_entry->mh_arg1;
  231|    358|		p->mh_arg2 = ini_entry->mh_arg2;
  232|    358|		p->mh_arg3 = ini_entry->mh_arg3;
  233|    358|		p->value = NULL;
  234|    358|		p->orig_value = NULL;
  235|    358|		p->displayer = ini_entry->displayer;
  236|    358|		p->modifiable = ini_entry->modifiable;
  237|       |
  238|    358|		p->orig_modifiable = false;
  239|    358|		p->modified = false;
  240|    358|		p->module_number = module_number;
  241|       |
  242|    358|		if (zend_hash_add_ptr(directives, p->name, (void*)p) == NULL) {
  ------------------
  |  Branch (242:7): [True: 0, False: 358]
  ------------------
  243|      0|			if (p->name) {
  ------------------
  |  Branch (243:8): [True: 0, False: 0]
  ------------------
  244|      0|				zend_string_release_ex(p->name, true);
  245|      0|			}
  246|      0|			pefree(p, true);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, Folded]
  |  |  ------------------
  ------------------
  247|      0|			zend_unregister_ini_entries_ex(module_number, module_type);
  248|      0|			return FAILURE;
  249|      0|		}
  250|       |
  251|    358|		zend_string *prev_value = p->value;
  252|       |
  253|    358|		if (((default_value = zend_get_configuration_directive(p->name)) != NULL) &&
  ------------------
  |  Branch (253:7): [True: 18, False: 340]
  ------------------
  254|     18|		    (!p->on_modify || p->on_modify(p, Z_STR_P(default_value), p->mh_arg1, p->mh_arg2, p->mh_arg3, ZEND_INI_STAGE_STARTUP) == SUCCESS)) {
  ------------------
  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		    (!p->on_modify || p->on_modify(p, Z_STR_P(default_value), p->mh_arg1, p->mh_arg2, p->mh_arg3, ZEND_INI_STAGE_STARTUP) == SUCCESS)) {
  ------------------
  |  |  223|     16|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  ------------------
  |  Branch (254:8): [True: 2, False: 16]
  |  Branch (254:25): [True: 16, False: 0]
  ------------------
  255|       |
  256|       |			/* Skip assigning the value if the handler has already done so. */
  257|     18|			if (p->value == prev_value) {
  ------------------
  |  Branch (257:8): [True: 18, False: 0]
  ------------------
  258|     18|				p->value = zend_new_interned_string(zend_string_copy(Z_STR_P(default_value)));
  ------------------
  |  |  982|     18|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     18|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  259|     18|			}
  260|    340|		} else {
  261|    340|			p->value = ini_entry->value ?
  ------------------
  |  Branch (261:15): [True: 290, False: 50]
  ------------------
  262|    340|				zend_string_init_interned(ini_entry->value, ini_entry->value_length, true) : NULL;
  263|       |
  264|    340|			if (p->on_modify) {
  ------------------
  |  Branch (264:8): [True: 310, False: 30]
  ------------------
  265|    310|				p->on_modify(p, p->value, p->mh_arg1, p->mh_arg2, p->mh_arg3, ZEND_INI_STAGE_STARTUP);
  ------------------
  |  |  223|    310|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  ------------------
  266|    310|			}
  267|    340|		}
  268|    358|		ini_entry++;
  269|    358|	}
  270|     20|	return SUCCESS;
  271|     20|}
zend_alter_ini_entry_chars:
  339|     11|{
  340|     11|	zend_result ret;
  341|     11|	zend_string *new_value;
  342|       |
  343|     11|	new_value = zend_string_init(value, value_length, !(stage & ZEND_INI_STAGE_IN_REQUEST));
  ------------------
  |  |  230|     11|#define ZEND_INI_STAGE_IN_REQUEST   (ZEND_INI_STAGE_ACTIVATE|ZEND_INI_STAGE_DEACTIVATE|ZEND_INI_STAGE_RUNTIME|ZEND_INI_STAGE_HTACCESS)
  |  |  ------------------
  |  |  |  |  225|     11|#define ZEND_INI_STAGE_ACTIVATE		(1<<2)
  |  |  ------------------
  |  |               #define ZEND_INI_STAGE_IN_REQUEST   (ZEND_INI_STAGE_ACTIVATE|ZEND_INI_STAGE_DEACTIVATE|ZEND_INI_STAGE_RUNTIME|ZEND_INI_STAGE_HTACCESS)
  |  |  ------------------
  |  |  |  |  226|     11|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  |  |  ------------------
  |  |               #define ZEND_INI_STAGE_IN_REQUEST   (ZEND_INI_STAGE_ACTIVATE|ZEND_INI_STAGE_DEACTIVATE|ZEND_INI_STAGE_RUNTIME|ZEND_INI_STAGE_HTACCESS)
  |  |  ------------------
  |  |  |  |  227|     11|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  |  |  ------------------
  |  |               #define ZEND_INI_STAGE_IN_REQUEST   (ZEND_INI_STAGE_ACTIVATE|ZEND_INI_STAGE_DEACTIVATE|ZEND_INI_STAGE_RUNTIME|ZEND_INI_STAGE_HTACCESS)
  |  |  ------------------
  |  |  |  |  228|     11|#define ZEND_INI_STAGE_HTACCESS		(1<<5)
  |  |  ------------------
  ------------------
  344|       |	ret = zend_alter_ini_entry_ex(name, new_value, modify_type, stage, false);
  345|     11|	zend_string_release(new_value);
  346|     11|	return ret;
  347|     11|}
zend_alter_ini_entry_ex:
  363|     82|{
  364|     82|	zend_ini_entry *ini_entry;
  365|     82|	zend_string *duplicate;
  366|     82|	uint8_t modifiable;
  367|     82|	bool modified;
  368|       |
  369|     82|	if ((ini_entry = zend_hash_find_ptr(EG(ini_directives), name)) == NULL) {
  ------------------
  |  |   45|     82|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (369:6): [True: 8, False: 74]
  ------------------
  370|      8|		return FAILURE;
  371|      8|	}
  372|       |
  373|     74|	modifiable = ini_entry->modifiable;
  374|     74|	modified = ini_entry->modified;
  375|       |
  376|     74|	if (stage == ZEND_INI_STAGE_ACTIVATE && modify_type == ZEND_INI_SYSTEM) {
  ------------------
  |  |  225|    148|#define ZEND_INI_STAGE_ACTIVATE		(1<<2)
  ------------------
              	if (stage == ZEND_INI_STAGE_ACTIVATE && modify_type == ZEND_INI_SYSTEM) {
  ------------------
  |  |   25|      0|#define ZEND_INI_SYSTEM	(1<<2)
  ------------------
  |  Branch (376:6): [True: 0, False: 74]
  |  Branch (376:42): [True: 0, False: 0]
  ------------------
  377|      0|		ini_entry->modifiable = ZEND_INI_SYSTEM;
  ------------------
  |  |   25|      0|#define ZEND_INI_SYSTEM	(1<<2)
  ------------------
  378|      0|	}
  379|       |
  380|     74|	if (!force_change) {
  ------------------
  |  Branch (380:6): [True: 74, False: 0]
  ------------------
  381|     74|		if (!(ini_entry->modifiable & modify_type)) {
  ------------------
  |  Branch (381:7): [True: 0, False: 74]
  ------------------
  382|      0|			return FAILURE;
  383|      0|		}
  384|     74|	}
  385|       |
  386|     74|	if (!EG(modified_ini_directives)) {
  ------------------
  |  |   45|     74|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (386:6): [True: 62, False: 12]
  ------------------
  387|     62|		ALLOC_HASHTABLE(EG(modified_ini_directives));
  ------------------
  |  |  232|     62|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     62|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     62|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     62|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     62|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     62|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|     62|		zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, false);
  ------------------
  |  |  111|     62|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  389|     62|	}
  390|     74|	if (!modified) {
  ------------------
  |  Branch (390:6): [True: 65, False: 9]
  ------------------
  391|     65|		ini_entry->orig_value = ini_entry->value;
  392|     65|		ini_entry->orig_modifiable = modifiable;
  393|     65|		ini_entry->modified = true;
  394|     65|		zend_hash_add_ptr(EG(modified_ini_directives), ini_entry->name, ini_entry);
  ------------------
  |  |   45|     65|# define EG(v) (executor_globals.v)
  ------------------
  395|     65|	}
  396|       |
  397|     74|	zend_string *prev_value = ini_entry->value;
  398|     74|	duplicate = zend_string_copy(new_value);
  399|       |
  400|     74|	if (!ini_entry->on_modify
  ------------------
  |  Branch (400:6): [True: 0, False: 74]
  ------------------
  401|     74|		|| ini_entry->on_modify(ini_entry, duplicate, ini_entry->mh_arg1, ini_entry->mh_arg2, ini_entry->mh_arg3, stage) == SUCCESS) {
  ------------------
  |  Branch (401:6): [True: 57, False: 17]
  ------------------
  402|     57|		if (modified && ini_entry->orig_value != prev_value) { /* we already changed the value, free the changed value */
  ------------------
  |  Branch (402:7): [True: 9, False: 48]
  |  Branch (402:19): [True: 9, False: 0]
  ------------------
  403|      9|			zend_string_release(prev_value);
  404|      9|		}
  405|       |		/* Skip assigning the value if the handler has already done so. */
  406|     57|		if (ini_entry->value == prev_value) {
  ------------------
  |  Branch (406:7): [True: 57, False: 0]
  ------------------
  407|     57|			ini_entry->value = duplicate;
  408|     57|		} else {
  409|      0|			zend_string_release(duplicate);
  410|      0|		}
  411|     57|	} else {
  412|     17|		zend_string_release(duplicate);
  413|     17|		return FAILURE;
  414|     17|	}
  415|       |
  416|     57|	return SUCCESS;
  417|     74|}
zend_ini_long:
  460|    289|{
  461|    289|	zend_ini_entry *ini_entry;
  462|       |
  463|    289|	ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  464|    289|	if (ini_entry) {
  ------------------
  |  Branch (464:6): [True: 289, False: 0]
  ------------------
  465|    289|		if (orig && ini_entry->modified) {
  ------------------
  |  Branch (465:7): [True: 0, False: 289]
  |  Branch (465:15): [True: 0, False: 0]
  ------------------
  466|      0|			return (ini_entry->orig_value ? ZEND_STRTOL(ZSTR_VAL(ini_entry->orig_value), NULL, 0) : 0);
  ------------------
  |  |   68|      0|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
  |  Branch (466:12): [True: 0, False: 0]
  ------------------
  467|    289|		} else {
  468|    289|			return (ini_entry->value      ? ZEND_STRTOL(ZSTR_VAL(ini_entry->value), NULL, 0)      : 0);
  ------------------
  |  |   68|    289|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
  |  Branch (468:12): [True: 289, False: 0]
  ------------------
  469|    289|		}
  470|    289|	}
  471|       |
  472|      0|	return 0;
  473|    289|}
zend_ini_string:
  502|  17.0k|{
  503|  17.0k|	zend_string *str = zend_ini_str(name, name_length, orig);
  504|       |
  505|  17.0k|	return str ? ZSTR_VAL(str) : NULL;
  ------------------
  |  |   67|  17.0k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (505:9): [True: 17.0k, False: 0]
  ------------------
  506|  17.0k|}
zend_ini_str_ex:
  511|  17.3k|{
  512|  17.3k|	zend_ini_entry *ini_entry;
  513|       |
  514|  17.3k|	ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length);
  ------------------
  |  |   45|  17.3k|# define EG(v) (executor_globals.v)
  ------------------
  515|  17.3k|	if (ini_entry) {
  ------------------
  |  Branch (515:6): [True: 17.3k, False: 0]
  ------------------
  516|  17.3k|		if (exists) {
  ------------------
  |  Branch (516:7): [True: 17.3k, False: 0]
  ------------------
  517|  17.3k|			*exists = true;
  518|  17.3k|		}
  519|       |
  520|  17.3k|		if (orig && ini_entry->modified) {
  ------------------
  |  Branch (520:7): [True: 0, False: 17.3k]
  |  Branch (520:15): [True: 0, False: 0]
  ------------------
  521|      0|			return ini_entry->orig_value ? ini_entry->orig_value : NULL;
  ------------------
  |  Branch (521:11): [True: 0, False: 0]
  ------------------
  522|  17.3k|		} else {
  523|  17.3k|			return ini_entry->value ? ini_entry->value : NULL;
  ------------------
  |  Branch (523:11): [True: 17.3k, False: 26]
  ------------------
  524|  17.3k|		}
  525|  17.3k|	} else {
  526|      0|		if (exists) {
  ------------------
  |  Branch (526:7): [True: 0, False: 0]
  ------------------
  527|      0|			*exists = false;
  528|      0|		}
  529|       |		return NULL;
  530|      0|	}
  531|  17.3k|}
zend_ini_str:
  535|  17.3k|{
  536|  17.3k|	bool exists = true;
  537|  17.3k|	zend_string *return_value;
  538|       |
  539|  17.3k|	return_value = zend_ini_str_ex(name, name_length, orig, &exists);
  540|  17.3k|	if (!exists) {
  ------------------
  |  Branch (540:6): [True: 0, False: 17.3k]
  ------------------
  541|      0|		return NULL;
  542|  17.3k|	} else if (!return_value) {
  ------------------
  |  Branch (542:13): [True: 26, False: 17.3k]
  ------------------
  543|     26|		return_value = ZSTR_EMPTY_ALLOC();
  544|     26|	}
  545|  17.3k|	return return_value;
  546|  17.3k|}
zend_ini_get_value:
  550|     71|{
  551|     71|	zend_ini_entry *ini_entry;
  552|       |
  553|     71|	ini_entry = zend_hash_find_ptr(EG(ini_directives), name);
  ------------------
  |  |   45|     71|# define EG(v) (executor_globals.v)
  ------------------
  554|     71|	if (ini_entry) {
  ------------------
  |  Branch (554:6): [True: 58, False: 13]
  ------------------
  555|     58|		return ini_entry->value ? ini_entry->value : ZSTR_EMPTY_ALLOC();
  ------------------
  |  Branch (555:10): [True: 56, False: 2]
  ------------------
  556|     58|	} else {
  557|       |		return NULL;
  558|     13|	}
  559|     71|}
zend_ini_parse_bool:
  563|    235|{
  564|    235|	if (zend_string_equals_literal_ci(str, "true")
  ------------------
  |  |  404|    470|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    235|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 235]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  565|    235|			|| zend_string_equals_literal_ci(str, "yes")
  ------------------
  |  |  404|    470|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    235|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 235]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  566|    235|			|| zend_string_equals_literal_ci(str, "on")
  ------------------
  |  |  404|    235|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|    235|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 235]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  567|    235|	) {
  568|      0|		return true;
  569|    235|	} else {
  570|    235|		return atoi(ZSTR_VAL(str)) != 0;
  ------------------
  |  |   67|    235|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  571|    235|	}
  572|    235|}
zend_ini_parse_quantity:
  847|     99|{
  848|     99|	return (zend_long) zend_ini_parse_quantity_internal(value, ZEND_INI_PARSE_QUANTITY_SIGNED, errstr);
  849|     99|}
zend_ini_parse_uquantity:
  853|     70|{
  854|     70|	return zend_ini_parse_quantity_internal(value, ZEND_INI_PARSE_QUANTITY_UNSIGNED, errstr);
  855|     70|}
zend_ini_parse_quantity_warn:
  859|     96|{
  860|     96|	zend_string *errstr;
  861|     96|	zend_long retval = zend_ini_parse_quantity(value, &errstr);
  862|       |
  863|     96|	if (errstr) {
  ------------------
  |  Branch (863:6): [True: 0, False: 96]
  ------------------
  864|      0|		zend_error(E_WARNING, "Invalid \"%s\" setting. %s", ZSTR_VAL(setting), ZSTR_VAL(errstr));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Invalid \"%s\" setting. %s", ZSTR_VAL(setting), ZSTR_VAL(errstr));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_error(E_WARNING, "Invalid \"%s\" setting. %s", ZSTR_VAL(setting), ZSTR_VAL(errstr));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  865|      0|		zend_string_release(errstr);
  866|      0|	}
  867|       |
  868|     96|	return retval;
  869|     96|}
zend_ini_parse_uquantity_warn:
  873|     70|{
  874|     70|	zend_string *errstr;
  875|     70|	zend_ulong retval = zend_ini_parse_uquantity(value, &errstr);
  876|       |
  877|     70|	if (errstr) {
  ------------------
  |  Branch (877:6): [True: 29, False: 41]
  ------------------
  878|     29|		zend_error(E_WARNING, "Invalid \"%s\" setting. %s", ZSTR_VAL(setting), ZSTR_VAL(errstr));
  ------------------
  |  |   23|     29|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Invalid \"%s\" setting. %s", ZSTR_VAL(setting), ZSTR_VAL(errstr));
  ------------------
  |  |   67|     29|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_error(E_WARNING, "Invalid \"%s\" setting. %s", ZSTR_VAL(setting), ZSTR_VAL(errstr));
  ------------------
  |  |   67|     29|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  879|     29|		zend_string_release(errstr);
  880|     29|	}
  881|       |
  882|     70|	return retval;
  883|     70|}
zend_ini_boolean_displayer_cb:
  887|     96|{
  888|     96|	bool value;
  889|       |
  890|     96|	if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) {
  ------------------
  |  |  220|    192|#define ZEND_INI_DISPLAY_ORIG	1
  ------------------
  |  Branch (890:6): [True: 48, False: 48]
  |  Branch (890:39): [True: 0, False: 48]
  ------------------
  891|      0|		value = zend_ini_parse_bool(ini_entry->orig_value);
  892|     96|	} else if (ini_entry->value) {
  ------------------
  |  Branch (892:13): [True: 96, False: 0]
  ------------------
  893|     96|		value = zend_ini_parse_bool(ini_entry->value);
  894|     96|	} else {
  895|      0|		value = false;
  896|      0|	}
  897|       |
  898|     96|	if (value) {
  ------------------
  |  Branch (898:6): [True: 40, False: 56]
  ------------------
  899|     40|		ZEND_PUTS("On");
  ------------------
  |  |  342|     40|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  900|     56|	} else {
  901|     56|		ZEND_PUTS("Off");
  ------------------
  |  |  342|     56|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  902|     56|	}
  903|     96|}
zend_ini_color_displayer_cb:
  907|     10|{
  908|     10|	const char *value;
  909|       |
  910|     10|	if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) {
  ------------------
  |  |  220|     20|#define ZEND_INI_DISPLAY_ORIG	1
  ------------------
  |  Branch (910:6): [True: 5, False: 5]
  |  Branch (910:39): [True: 0, False: 5]
  ------------------
  911|      0|		value = ZSTR_VAL(ini_entry->orig_value);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  912|     10|	} else if (ini_entry->value) {
  ------------------
  |  Branch (912:13): [True: 10, False: 0]
  ------------------
  913|     10|		value = ZSTR_VAL(ini_entry->value);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  914|     10|	} else {
  915|      0|		value = NULL;
  916|      0|	}
  917|     10|	if (value) {
  ------------------
  |  Branch (917:6): [True: 10, False: 0]
  ------------------
  918|     10|		if (zend_uv.html_errors) {
  ------------------
  |  Branch (918:7): [True: 10, False: 0]
  ------------------
  919|     10|			zend_printf("<span style=\"color: %s\">%s</span>", value, value);
  920|     10|		} else {
  921|      0|			ZEND_PUTS(value);
  ------------------
  |  |  342|      0|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  922|      0|		}
  923|     10|	} else {
  924|      0|		if (zend_uv.html_errors) {
  ------------------
  |  Branch (924:7): [True: 0, False: 0]
  ------------------
  925|      0|			ZEND_PUTS(NO_VALUE_HTML);
  ------------------
  |  |  342|      0|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  926|      0|		} else {
  927|      0|			ZEND_PUTS(NO_VALUE_PLAINTEXT);
  ------------------
  |  |  342|      0|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  928|      0|		}
  929|      0|	}
  930|     10|}
OnUpdateBool:
  957|     88|{
  958|     88|	bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     88|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     88|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  959|     88|	*p = zend_ini_parse_bool(new_value);
  960|     88|	return SUCCESS;
  961|     88|}
OnUpdateLong:
  965|     54|{
  966|     54|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     54|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     54|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  967|     54|	*p = zend_ini_parse_quantity_warn(new_value, entry->name);
  968|     54|	return SUCCESS;
  969|     54|}
OnUpdateLongGEZero:
  973|      4|{
  974|      4|	zend_long tmp = zend_ini_parse_quantity_warn(new_value, entry->name);
  975|      4|	if (tmp < 0) {
  ------------------
  |  Branch (975:6): [True: 0, False: 4]
  ------------------
  976|      0|		return FAILURE;
  977|      0|	}
  978|       |
  979|      4|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      4|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      4|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  980|      4|	*p = tmp;
  981|       |
  982|      4|	return SUCCESS;
  983|      4|}
OnUpdateReal:
  987|      2|{
  988|      2|	double *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  989|      2|	*p = zend_strtod(ZSTR_VAL(new_value), NULL);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  990|      2|	return SUCCESS;
  991|      2|}
OnUpdateString:
  995|     64|{
  996|     64|	char **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     64|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     64|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  997|     64|	*p = new_value ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   67|     36|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (997:7): [True: 36, False: 28]
  ------------------
  998|     64|	return SUCCESS;
  999|     64|}
OnUpdateStringUnempty:
 1003|     30|{
 1004|     30|	if (new_value && !ZSTR_VAL(new_value)[0]) {
  ------------------
  |  |   67|     24|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1004:6): [True: 24, False: 6]
  |  Branch (1004:19): [True: 6, False: 18]
  ------------------
 1005|      6|		return FAILURE;
 1006|      6|	}
 1007|       |
 1008|     24|	char **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     24|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     24|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
 1009|     24|	*p = new_value ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1009:7): [True: 18, False: 6]
  ------------------
 1010|     24|	return SUCCESS;
 1011|     30|}
OnUpdateStr:
 1015|      2|{
 1016|      2|	zend_string **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
 1017|      2|	*p = new_value;
 1018|      2|	return SUCCESS;
 1019|      2|}
OnUpdateStrNotEmpty:
 1023|      8|{
 1024|      8|	if (new_value && ZSTR_LEN(new_value) == 0) {
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1024:6): [True: 8, False: 0]
  |  Branch (1024:19): [True: 1, False: 7]
  ------------------
 1025|      1|		return FAILURE;
 1026|      1|	}
 1027|       |
 1028|      7|	zend_string **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      7|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      7|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
 1029|      7|	*p = new_value;
 1030|      7|	return SUCCESS;
 1031|      8|}
zend_ini.c:zend_restore_ini_entry_cb:
   51|     85|{
   52|     85|	zend_result result = FAILURE;
   53|       |
   54|     85|	if (ini_entry->modified) {
  ------------------
  |  Branch (54:6): [True: 85, False: 0]
  ------------------
   55|     85|		if (ini_entry->on_modify) {
  ------------------
  |  Branch (55:7): [True: 85, False: 0]
  ------------------
   56|     85|			zend_try {
  ------------------
  |  |  276|     85|	{															\
  |  |  277|     85|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|     85|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|     85|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|     85|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|     85|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|     85|																\
  |  |  280|     85|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|     85|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|     85|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|     85|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 85, False: 0]
  |  |  ------------------
  ------------------
   57|       |			/* even if on_modify bails out, we have to continue on with restoring,
   58|       |				since there can be allocated variables that would be freed on MM shutdown
   59|       |				and would lead to memory corruption later ini entry is modified again */
   60|     85|				result = ini_entry->on_modify(ini_entry, ini_entry->orig_value, ini_entry->mh_arg1, ini_entry->mh_arg2, ini_entry->mh_arg3, stage);
   61|     85|			} zend_end_try();
  ------------------
  |  |  288|     85|		}														\
  |  |  289|     85|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|     85|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|     85|	}
  ------------------
   62|     85|		}
   63|     85|		if (stage == ZEND_INI_STAGE_RUNTIME && result == FAILURE) {
  ------------------
  |  |  227|    170|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
  |  Branch (63:7): [True: 0, False: 85]
  |  Branch (63:42): [True: 0, False: 0]
  ------------------
   64|       |			/* runtime failure is OK */
   65|      0|			return FAILURE;
   66|      0|		}
   67|     85|		if (ini_entry->value != ini_entry->orig_value) {
  ------------------
  |  Branch (67:7): [True: 64, False: 21]
  ------------------
   68|     64|			zend_string_release(ini_entry->value);
   69|     64|		}
   70|     85|		ini_entry->value = ini_entry->orig_value;
   71|     85|		ini_entry->modifiable = ini_entry->orig_modifiable;
   72|     85|		ini_entry->modified = false;
   73|     85|		ini_entry->orig_value = NULL;
   74|     85|		ini_entry->orig_modifiable = false;
   75|     85|	}
   76|     85|	return SUCCESS;
   77|     85|}
zend_ini.c:ini_key_compare:
  176|  1.19k|{
  177|  1.19k|	if (!f->key && !s->key) { /* both numeric */
  ------------------
  |  Branch (177:6): [True: 0, False: 1.19k]
  |  Branch (177:17): [True: 0, False: 0]
  ------------------
  178|      0|		if (f->h > s->h) {
  ------------------
  |  Branch (178:7): [True: 0, False: 0]
  ------------------
  179|      0|			return -1;
  180|      0|		} else if (f->h < s->h) {
  ------------------
  |  Branch (180:14): [True: 0, False: 0]
  ------------------
  181|      0|			return 1;
  182|      0|		}
  183|      0|		return 0;
  184|  1.19k|	} else if (!f->key) { /* f is numeric, s is not */
  ------------------
  |  Branch (184:13): [True: 0, False: 1.19k]
  ------------------
  185|      0|		return -1;
  186|  1.19k|	} else if (!s->key) { /* s is numeric, f is not */
  ------------------
  |  Branch (186:13): [True: 0, False: 1.19k]
  ------------------
  187|      0|		return 1;
  188|  1.19k|	} else { /* both strings */
  189|  1.19k|		return zend_binary_strcasecmp(ZSTR_VAL(f->key), ZSTR_LEN(f->key), ZSTR_VAL(s->key), ZSTR_LEN(s->key));
  ------------------
  |  |   67|  1.19k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_binary_strcasecmp(ZSTR_VAL(f->key), ZSTR_LEN(f->key), ZSTR_VAL(s->key), ZSTR_LEN(s->key));
  ------------------
  |  |   68|  1.19k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		return zend_binary_strcasecmp(ZSTR_VAL(f->key), ZSTR_LEN(f->key), ZSTR_VAL(s->key), ZSTR_LEN(s->key));
  ------------------
  |  |   67|  1.19k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_binary_strcasecmp(ZSTR_VAL(f->key), ZSTR_LEN(f->key), ZSTR_VAL(s->key), ZSTR_LEN(s->key));
  ------------------
  |  |   68|  1.19k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  190|  1.19k|	}
  191|  1.19k|}
zend_ini.c:zend_ini_parse_quantity_internal:
  613|    169|{
  614|    169|	char *digits_end = NULL;
  615|    169|	const char *str = ZSTR_VAL(value);
  ------------------
  |  |   67|    169|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  616|    169|	const char *str_end = &str[ZSTR_LEN(value)];
  ------------------
  |  |   68|    169|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  617|    169|	const char *digits = str;
  618|    169|	bool overflow = false;
  619|    169|	zend_ulong factor;
  620|    169|	smart_str invalid = {0};
  621|    169|	smart_str interpreted = {0};
  622|    169|	smart_str chr = {0};
  623|       |
  624|       |	/* Ignore leading whitespace. ZEND_STRTOL() also skips leading whitespaces,
  625|       |	 * but we need the position of the first non-whitespace later. */
  626|    208|	while (digits < str_end && zend_is_whitespace(*digits)) {++digits;}
  ------------------
  |  Branch (626:9): [True: 206, False: 2]
  |  Branch (626:29): [True: 39, False: 167]
  ------------------
  627|       |
  628|       |	/* Ignore trailing whitespace */
  629|    315|	while (digits < str_end && zend_is_whitespace(*(str_end-1))) {--str_end;}
  ------------------
  |  Branch (629:9): [True: 313, False: 2]
  |  Branch (629:29): [True: 146, False: 167]
  ------------------
  630|       |
  631|    169|	if (digits == str_end) {
  ------------------
  |  Branch (631:6): [True: 2, False: 167]
  ------------------
  632|      2|		*errstr = NULL;
  633|      2|		return 0;
  634|      2|	}
  635|       |
  636|    169|	bool is_negative = false;
  637|    167|	if (digits[0] == '+') {
  ------------------
  |  Branch (637:6): [True: 0, False: 167]
  ------------------
  638|      0|		++digits;
  639|    167|	} else if (digits[0] == '-') {
  ------------------
  |  Branch (639:13): [True: 8, False: 159]
  ------------------
  640|      8|		is_negative = true;
  641|      8|		++digits;
  642|      8|	}
  643|       |
  644|       |	/* if there is no digit after +/- */
  645|    167|	if (!isdigit((unsigned char)digits[0])) {
  ------------------
  |  Branch (645:6): [True: 1, False: 166]
  ------------------
  646|       |		/* Escape the string to avoid null bytes and to make non-printable chars
  647|       |		 * visible */
  648|      1|		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  649|      1|		smart_str_0(&invalid);
  650|       |
  651|      1|		*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": no valid leading digits, interpreting as \"0\" for backwards compatibility",
  652|      1|						ZSTR_VAL(invalid.s));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  653|       |
  654|      1|		smart_str_free(&invalid);
  655|      1|		return 0;
  656|      1|	}
  657|       |
  658|    166|	int base = 0;
  659|    166|	if (digits[0] == '0' && !isdigit((unsigned char)digits[1])) {
  ------------------
  |  Branch (659:6): [True: 25, False: 141]
  |  Branch (659:26): [True: 22, False: 3]
  ------------------
  660|       |		/* Value is just 0 */
  661|     22|		if ((digits+1) == str_end) {
  ------------------
  |  Branch (661:7): [True: 20, False: 2]
  ------------------
  662|     20|			*errstr = NULL;
  663|     20|			return 0;
  664|     20|		}
  665|       |
  666|      2|		switch (digits[1]) {
  667|       |			/* Multiplier suffixes */
  668|      0|			case 'g':
  ------------------
  |  Branch (668:4): [True: 0, False: 2]
  ------------------
  669|      0|			case 'G':
  ------------------
  |  Branch (669:4): [True: 0, False: 2]
  ------------------
  670|      0|			case 'm':
  ------------------
  |  Branch (670:4): [True: 0, False: 2]
  ------------------
  671|      0|			case 'M':
  ------------------
  |  Branch (671:4): [True: 0, False: 2]
  ------------------
  672|      0|			case 'k':
  ------------------
  |  Branch (672:4): [True: 0, False: 2]
  ------------------
  673|      0|			case 'K':
  ------------------
  |  Branch (673:4): [True: 0, False: 2]
  ------------------
  674|      0|				goto evaluation;
  675|      2|			case 'x':
  ------------------
  |  Branch (675:4): [True: 2, False: 0]
  ------------------
  676|      2|			case 'X':
  ------------------
  |  Branch (676:4): [True: 0, False: 2]
  ------------------
  677|      2|				base = 16;
  678|      2|				break;
  679|      0|			case 'o':
  ------------------
  |  Branch (679:4): [True: 0, False: 2]
  ------------------
  680|      0|			case 'O':
  ------------------
  |  Branch (680:4): [True: 0, False: 2]
  ------------------
  681|      0|				base = 8;
  682|      0|				break;
  683|      0|			case 'b':
  ------------------
  |  Branch (683:4): [True: 0, False: 2]
  ------------------
  684|      0|			case 'B':
  ------------------
  |  Branch (684:4): [True: 0, False: 2]
  ------------------
  685|      0|				base = 2;
  686|      0|				break;
  687|      0|			default:
  ------------------
  |  Branch (687:4): [True: 0, False: 2]
  ------------------
  688|      0|				*errstr = zend_strpprintf(0, "Invalid prefix \"0%c\", interpreting as \"0\" for backwards compatibility",
  689|      0|					digits[1]);
  690|      0|				return 0;
  691|      2|        }
  692|      2|        digits += 2;
  693|       |		/* STRTOULL may silently ignore a prefix of whitespace, sign, and base prefix, which would be invalid at this position */
  694|      2|		if (UNEXPECTED(digits == str_end || digits != zend_ini_consume_quantity_prefix(digits, str_end, base))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  695|       |			/* Escape the string to avoid null bytes and to make non-printable chars
  696|       |			 * visible */
  697|      0|			smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  698|      0|			smart_str_0(&invalid);
  699|       |
  700|      0|			*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": no digits after base prefix, interpreting as \"0\" for backwards compatibility",
  701|      0|							ZSTR_VAL(invalid.s));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  702|       |
  703|      0|			smart_str_free(&invalid);
  704|      0|			return 0;
  705|      0|		}
  706|      2|	}
  707|    146|	evaluation:
  708|       |
  709|    146|	errno = 0;
  710|    146|	zend_ulong retval = ZEND_STRTOUL(digits, &digits_end, base);
  ------------------
  |  |   69|    146|#  define ZEND_STRTOUL(s0, s1, base) strtoull((s0), (s1), (base))
  ------------------
  711|       |
  712|    146|	if (errno == ERANGE) {
  ------------------
  |  Branch (712:6): [True: 3, False: 143]
  ------------------
  713|      3|		overflow = true;
  714|    143|	} else if (signed_result == ZEND_INI_PARSE_QUANTITY_UNSIGNED) {
  ------------------
  |  Branch (714:13): [True: 63, False: 80]
  ------------------
  715|     63|		if (is_negative) {
  ------------------
  |  Branch (715:7): [True: 2, False: 61]
  ------------------
  716|       |			/* Ignore "-1" as it is commonly used as max value, for instance in memory_limit=-1. */
  717|      2|			if (retval == 1 && digits_end == str_end) {
  ------------------
  |  Branch (717:8): [True: 2, False: 0]
  |  Branch (717:23): [True: 2, False: 0]
  ------------------
  718|      2|				retval = -1;
  719|      2|			} else {
  720|      0|				overflow = true;
  721|      0|			}
  722|      2|		}
  723|     80|	} else if (signed_result == ZEND_INI_PARSE_QUANTITY_SIGNED) {
  ------------------
  |  Branch (723:13): [True: 80, False: 0]
  ------------------
  724|       |		/* Handle PHP_INT_MIN case */
  725|     80|		if (is_negative && retval == ((zend_ulong)ZEND_LONG_MAX +1)) {
  ------------------
  |  |   34|      6|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (725:7): [True: 6, False: 74]
  |  Branch (725:22): [True: 0, False: 6]
  ------------------
  726|      0|			retval = 0u - retval;
  727|     80|		} else if ((zend_long) retval < 0) {
  ------------------
  |  Branch (727:14): [True: 0, False: 80]
  ------------------
  728|      0|			overflow = true;
  729|     80|		} else if (is_negative) {
  ------------------
  |  Branch (729:14): [True: 6, False: 74]
  ------------------
  730|      6|			retval = 0u - retval;
  731|      6|		}
  732|     80|	}
  733|       |
  734|    146|	if (UNEXPECTED(digits_end == digits)) {
  ------------------
  |  |  457|    146|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 146]
  |  |  ------------------
  ------------------
  735|       |		/* No leading digits */
  736|       |
  737|       |		/* Escape the string to avoid null bytes and to make non-printable chars
  738|       |		 * visible */
  739|      0|		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  740|      0|		smart_str_0(&invalid);
  741|       |
  742|      0|		*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": no valid leading digits, interpreting as \"0\" for backwards compatibility",
  743|      0|						ZSTR_VAL(invalid.s));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  744|       |
  745|      0|		smart_str_free(&invalid);
  746|      0|		return 0;
  747|      0|	}
  748|       |
  749|       |	/* Allow for whitespace between integer portion and any suffix character */
  750|    398|	while (digits_end < str_end && zend_is_whitespace(*digits_end)) ++digits_end;
  ------------------
  |  Branch (750:9): [True: 324, False: 74]
  |  Branch (750:33): [True: 252, False: 72]
  ------------------
  751|       |
  752|       |	/* No exponent suffix. */
  753|    146|	if (digits_end == str_end) {
  ------------------
  |  Branch (753:6): [True: 74, False: 72]
  ------------------
  754|     74|		goto end;
  755|     74|	}
  756|       |
  757|     72|	switch (*(str_end-1)) {
  758|      1|		case 'g':
  ------------------
  |  Branch (758:3): [True: 1, False: 71]
  ------------------
  759|      1|		case 'G':
  ------------------
  |  Branch (759:3): [True: 0, False: 72]
  ------------------
  760|      1|			factor = 1<<30;
  761|      1|			break;
  762|      4|		case 'm':
  ------------------
  |  Branch (762:3): [True: 4, False: 68]
  ------------------
  763|     57|		case 'M':
  ------------------
  |  Branch (763:3): [True: 53, False: 19]
  ------------------
  764|     57|			factor = 1<<20;
  765|     57|			break;
  766|      0|		case 'k':
  ------------------
  |  Branch (766:3): [True: 0, False: 72]
  ------------------
  767|      2|		case 'K':
  ------------------
  |  Branch (767:3): [True: 2, False: 70]
  ------------------
  768|      2|			factor = 1<<10;
  769|      2|			break;
  770|     12|		default:
  ------------------
  |  Branch (770:3): [True: 12, False: 60]
  ------------------
  771|       |			/* Unknown suffix */
  772|     12|			smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  773|     12|			smart_str_0(&invalid);
  774|     12|			smart_str_append_escaped(&interpreted, str, digits_end - str);
  775|     12|			smart_str_0(&interpreted);
  776|     12|			smart_str_append_escaped(&chr, str_end-1, 1);
  777|     12|			smart_str_0(&chr);
  778|       |
  779|     12|			*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": unknown multiplier \"%s\", interpreting as \"%s\" for backwards compatibility",
  780|     12|						ZSTR_VAL(invalid.s), ZSTR_VAL(chr.s), ZSTR_VAL(interpreted.s));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(invalid.s), ZSTR_VAL(chr.s), ZSTR_VAL(interpreted.s));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(invalid.s), ZSTR_VAL(chr.s), ZSTR_VAL(interpreted.s));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  781|       |
  782|     12|			smart_str_free(&invalid);
  783|     12|			smart_str_free(&interpreted);
  784|     12|			smart_str_free(&chr);
  785|       |
  786|     12|			return retval;
  787|     72|	}
  788|       |
  789|     60|	if (!overflow) {
  ------------------
  |  Branch (789:6): [True: 57, False: 3]
  ------------------
  790|     57|		if (signed_result == ZEND_INI_PARSE_QUANTITY_SIGNED) {
  ------------------
  |  Branch (790:7): [True: 8, False: 49]
  ------------------
  791|      8|			zend_long sretval = (zend_long)retval;
  792|      8|			if (sretval > 0) {
  ------------------
  |  Branch (792:8): [True: 8, False: 0]
  ------------------
  793|      8|				overflow = (zend_long)retval > ZEND_LONG_MAX / (zend_long)factor;
  ------------------
  |  |   34|      8|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  794|      8|			} else {
  795|      0|				overflow = (zend_long)retval < ZEND_LONG_MIN / (zend_long)factor;
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  796|      0|			}
  797|     49|		} else {
  798|     49|			overflow = retval > ZEND_ULONG_MAX / factor;
  ------------------
  |  |   36|     49|# define ZEND_ULONG_MAX UINT64_MAX
  ------------------
  799|     49|		}
  800|     57|	}
  801|       |
  802|     60|	retval *= factor;
  803|       |
  804|     60|	if (UNEXPECTED(digits_end != str_end-1)) {
  ------------------
  |  |  457|     60|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 46]
  |  |  ------------------
  ------------------
  805|       |		/* More than one character in suffix */
  806|     14|		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  807|     14|		smart_str_0(&invalid);
  808|     14|		smart_str_append_escaped(&interpreted, str, digits_end - str);
  809|     14|		smart_str_0(&interpreted);
  810|     14|		smart_str_append_escaped(&chr, str_end-1, 1);
  811|     14|		smart_str_0(&chr);
  812|       |
  813|     14|		*errstr = zend_strpprintf(0, "Invalid quantity \"%s\", interpreting as \"%s%s\" for backwards compatibility",
  814|     14|						ZSTR_VAL(invalid.s), ZSTR_VAL(interpreted.s), ZSTR_VAL(chr.s));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(invalid.s), ZSTR_VAL(interpreted.s), ZSTR_VAL(chr.s));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(invalid.s), ZSTR_VAL(interpreted.s), ZSTR_VAL(chr.s));
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  815|       |
  816|     14|		smart_str_free(&invalid);
  817|     14|		smart_str_free(&interpreted);
  818|     14|		smart_str_free(&chr);
  819|       |
  820|     14|		return retval;
  821|     14|	}
  822|       |
  823|    120|end:
  824|    120|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|    120|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 118]
  |  |  ------------------
  ------------------
  825|      2|		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  826|      2|		smart_str_0(&invalid);
  827|       |
  828|       |		/* Not specifying the resulting value here because the caller may make
  829|       |		 * additional conversions. Not specifying the allowed range
  830|       |		 * because the caller may do narrower range checks. */
  831|      2|		*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": value is out of range, using overflow result for backwards compatibility",
  832|      2|						ZSTR_VAL(invalid.s));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  833|       |
  834|      2|		smart_str_free(&invalid);
  835|      2|		smart_str_free(&interpreted);
  836|      2|		smart_str_free(&chr);
  837|       |
  838|      2|		return retval;
  839|      2|	}
  840|       |
  841|    118|	*errstr = NULL;
  842|    118|	return retval;
  843|    120|}
zend_ini.c:zend_is_whitespace:
   34|    845|static inline bool zend_is_whitespace(char c) {
   35|    845|	return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f';
  ------------------
  |  Branch (35:9): [True: 34, False: 811]
  |  Branch (35:21): [True: 177, False: 634]
  |  Branch (35:34): [True: 55, False: 579]
  |  Branch (35:47): [True: 37, False: 542]
  |  Branch (35:60): [True: 126, False: 416]
  |  Branch (35:73): [True: 8, False: 408]
  ------------------
   36|    845|}
zend_ini.c:zend_ini_consume_quantity_prefix:
  579|      2|static const char *zend_ini_consume_quantity_prefix(const char *const digits, const char *const str_end, int base) {
  580|      2|	const char *digits_consumed = digits;
  581|       |	/* Ignore leading whitespace. */
  582|      2|	while (digits_consumed < str_end && zend_is_whitespace(*digits_consumed)) {++digits_consumed;}
  ------------------
  |  Branch (582:9): [True: 2, False: 0]
  |  Branch (582:38): [True: 0, False: 2]
  ------------------
  583|      2|	if (digits_consumed[0] == '+' || digits_consumed[0] == '-') {
  ------------------
  |  Branch (583:6): [True: 0, False: 2]
  |  Branch (583:35): [True: 0, False: 2]
  ------------------
  584|      0|		++digits_consumed;
  585|      0|	}
  586|       |
  587|      2|	if (digits_consumed[0] == '0' && !isdigit((unsigned char)digits_consumed[1])) {
  ------------------
  |  Branch (587:6): [True: 0, False: 2]
  |  Branch (587:35): [True: 0, False: 0]
  ------------------
  588|       |		/* Value is just 0 */
  589|      0|		if ((digits_consumed+1) == str_end) {
  ------------------
  |  Branch (589:7): [True: 0, False: 0]
  ------------------
  590|      0|			return digits_consumed;
  591|      0|		}
  592|       |
  593|      0|		switch (digits_consumed[1]) {
  ------------------
  |  Branch (593:11): [True: 0, False: 0]
  ------------------
  594|      0|			case 'x':
  ------------------
  |  Branch (594:4): [True: 0, False: 0]
  ------------------
  595|      0|			case 'X':
  ------------------
  |  Branch (595:4): [True: 0, False: 0]
  ------------------
  596|      0|			case 'o':
  ------------------
  |  Branch (596:4): [True: 0, False: 0]
  ------------------
  597|      0|			case 'O':
  ------------------
  |  Branch (597:4): [True: 0, False: 0]
  ------------------
  598|      0|				digits_consumed += 2;
  599|      0|				break;
  600|      0|			case 'b':
  ------------------
  |  Branch (600:4): [True: 0, False: 0]
  ------------------
  601|      0|			case 'B':
  ------------------
  |  Branch (601:4): [True: 0, False: 0]
  ------------------
  602|      0|				if (base != 16) {
  ------------------
  |  Branch (602:9): [True: 0, False: 0]
  ------------------
  603|       |					/* 0b or 0B is valid in base 16, but not in the other supported bases. */
  604|      0|					digits_consumed += 2;
  605|      0|				}
  606|      0|				break;
  607|      0|		}
  608|      0|	}
  609|      2|	return digits_consumed;
  610|      2|}

zend_parse_ini_file:
  300|      2|{
  301|      2|	int retval;
  302|      2|	zend_ini_parser_param ini_parser_param;
  303|       |
  304|      2|	ini_parser_param.ini_parser_cb = ini_parser_cb;
  305|      2|	ini_parser_param.arg = arg;
  306|      2|	CG(ini_parser_param) = &ini_parser_param;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  307|       |
  308|      2|	if (zend_ini_open_file_for_scanning(fh, scanner_mode) == FAILURE) {
  ------------------
  |  Branch (308:6): [True: 2, False: 0]
  ------------------
  309|      2|		return FAILURE;
  310|      2|	}
  311|       |
  312|      0|	CG(ini_parser_unbuffered_errors) = unbuffered_errors;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  313|      0|	retval = ini_parse();
  314|       |
  315|      0|	shutdown_ini_scanner();
  316|       |
  317|      0|	if (retval == 0) {
  ------------------
  |  Branch (317:6): [True: 0, False: 0]
  ------------------
  318|      0|		return SUCCESS;
  319|      0|	} else {
  320|      0|		return FAILURE;
  321|      0|	}
  322|      0|}
zend_parse_ini_string:
  327|  9.38k|{
  328|  9.38k|	int retval;
  329|  9.38k|	zend_ini_parser_param ini_parser_param;
  330|       |
  331|  9.38k|	ini_parser_param.ini_parser_cb = ini_parser_cb;
  332|  9.38k|	ini_parser_param.arg = arg;
  333|  9.38k|	CG(ini_parser_param) = &ini_parser_param;
  ------------------
  |  |   35|  9.38k|# define CG(v) (compiler_globals.v)
  ------------------
  334|       |
  335|  9.38k|	if (zend_ini_prepare_string_for_scanning(str, scanner_mode) == FAILURE) {
  ------------------
  |  Branch (335:6): [True: 0, False: 9.38k]
  ------------------
  336|      0|		return FAILURE;
  337|      0|	}
  338|       |
  339|  9.38k|	CG(ini_parser_unbuffered_errors) = unbuffered_errors;
  ------------------
  |  |   35|  9.38k|# define CG(v) (compiler_globals.v)
  ------------------
  340|  9.38k|	retval = ini_parse();
  341|       |
  342|  9.38k|	shutdown_ini_scanner();
  343|       |
  344|  9.38k|	if (retval == 0) {
  ------------------
  |  Branch (344:6): [True: 3.92k, False: 5.46k]
  ------------------
  345|  3.92k|		return SUCCESS;
  346|  5.46k|	} else {
  347|  5.46k|		return FAILURE;
  348|  5.46k|	}
  349|  9.38k|}
zend_ini_parser.c:ini_parse:
 1602|  9.38k|{
 1603|       |/* The lookahead symbol.  */
 1604|  9.38k|int yychar;
 1605|       |
 1606|       |
 1607|       |/* The semantic value of the lookahead symbol.  */
 1608|       |/* Default value used for initialization, for pacifying older GCCs
 1609|       |   or non-GCC compilers.  */
 1610|  9.38k|YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
  ------------------
  |  |  638|  9.38k|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 1611|  9.38k|YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  ------------------
  |  |   66|  9.38k|#define YYSTYPE         INI_STYPE
  ------------------
              YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  ------------------
  |  |  638|  9.38k|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 1612|       |
 1613|       |    /* Number of syntax errors so far.  */
 1614|  9.38k|    int yynerrs;
 1615|       |
 1616|  9.38k|    yy_state_fast_t yystate;
 1617|       |    /* Number of tokens to shift before error messages enabled.  */
 1618|  9.38k|    int yyerrstatus;
 1619|       |
 1620|       |    /* The stacks and their tools:
 1621|       |       'yyss': related to states.
 1622|       |       'yyvs': related to semantic values.
 1623|       |
 1624|       |       Refer to the stacks through separate pointers, to allow yyoverflow
 1625|       |       to reallocate them elsewhere.  */
 1626|       |
 1627|       |    /* The state stack.  */
 1628|  9.38k|    yy_state_t yyssa[YYINITDEPTH];
 1629|  9.38k|    yy_state_t *yyss;
 1630|  9.38k|    yy_state_t *yyssp;
 1631|       |
 1632|       |    /* The semantic value stack.  */
 1633|  9.38k|    YYSTYPE yyvsa[YYINITDEPTH];
  ------------------
  |  |   66|  9.38k|#define YYSTYPE         INI_STYPE
  ------------------
 1634|  9.38k|    YYSTYPE *yyvs;
  ------------------
  |  |   66|  9.38k|#define YYSTYPE         INI_STYPE
  ------------------
 1635|  9.38k|    YYSTYPE *yyvsp;
  ------------------
  |  |   66|  9.38k|#define YYSTYPE         INI_STYPE
  ------------------
 1636|       |
 1637|  9.38k|    YYPTRDIFF_T yystacksize;
  ------------------
  |  |  553|  9.38k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1638|       |
 1639|  9.38k|  int yyn;
 1640|  9.38k|  int yyresult;
 1641|       |  /* Lookahead token as an internal (translated) token number.  */
 1642|  9.38k|  int yytoken = 0;
 1643|       |  /* The variables used to return semantic value and location from the
 1644|       |     action routines.  */
 1645|  9.38k|  YYSTYPE yyval;
  ------------------
  |  |   66|  9.38k|#define YYSTYPE         INI_STYPE
  ------------------
 1646|       |
 1647|  9.38k|#if YYERROR_VERBOSE
 1648|       |  /* Buffer for error messages, and its allocated size.  */
 1649|  9.38k|  char yymsgbuf[128];
 1650|  9.38k|  char *yymsg = yymsgbuf;
 1651|  9.38k|  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
  ------------------
  |  |  553|  9.38k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1652|  9.38k|#endif
 1653|       |
 1654|  9.38k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 1655|       |
 1656|       |  /* The number of symbols on the RHS of the reduced rule.
 1657|       |     Keep to zero when no symbol should be popped.  */
 1658|  9.38k|  int yylen = 0;
 1659|       |
 1660|  9.38k|  yyssp = yyss = yyssa;
 1661|  9.38k|  yyvsp = yyvs = yyvsa;
 1662|  9.38k|  yystacksize = YYINITDEPTH;
  ------------------
  |  | 1193|  9.38k|# define YYINITDEPTH 200
  ------------------
 1663|       |
 1664|  9.38k|  YYDPRINTF ((stderr, "Starting parse\n"));
 1665|       |
 1666|  9.38k|  yystate = 0;
 1667|  9.38k|  yyerrstatus = 0;
 1668|  9.38k|  yynerrs = 0;
  ------------------
  |  |   72|  9.38k|#define yynerrs         ini_nerrs
  ------------------
 1669|  9.38k|  yychar = YYEMPTY; /* Cause a token to be read.  */
  ------------------
  |  | 1026|  9.38k|#define YYEMPTY         (-2)
  ------------------
 1670|  9.38k|  goto yysetstate;
 1671|       |
 1672|       |
 1673|       |/*------------------------------------------------------------.
 1674|       || yynewstate -- push a new state, which is found in yystate.  |
 1675|       |`------------------------------------------------------------*/
 1676|  1.02M|yynewstate:
 1677|       |  /* In all cases, when you get here, the value and location stacks
 1678|       |     have just been pushed.  So pushing a state here evens the stacks.  */
 1679|  1.02M|  yyssp++;
 1680|       |
 1681|       |
 1682|       |/*--------------------------------------------------------------------.
 1683|       || yysetstate -- set current state (the top of the stack) to yystate.  |
 1684|       |`--------------------------------------------------------------------*/
 1685|  1.03M|yysetstate:
 1686|  1.03M|  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 1687|  1.03M|  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  ------------------
  |  |  661|  1.03M|#define YY_ASSERT(E) ((void) (0 && (E)))
  |  |  ------------------
  |  |  |  Branch (661:31): [Folded, False: 1.03M]
  |  |  |  Branch (661:37): [True: 0, False: 0]
  |  |  |  Branch (661:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1688|  1.03M|  YY_IGNORE_USELESS_CAST_BEGIN
 1689|  1.03M|  *yyssp = YY_CAST (yy_state_t, yystate);
  ------------------
  |  |  408|  1.03M|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 1690|  1.03M|  YY_IGNORE_USELESS_CAST_END
 1691|       |
 1692|  1.03M|  if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (1692:7): [True: 0, False: 1.03M]
  ------------------
 1693|       |#if !defined yyoverflow && !defined YYSTACK_RELOCATE
 1694|       |    goto yyexhaustedlab;
 1695|       |#else
 1696|      0|    {
 1697|       |      /* Get the current used size of the three stacks, in elements.  */
 1698|      0|      YYPTRDIFF_T yysize = yyssp - yyss + 1;
  ------------------
  |  |  553|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1699|       |
 1700|       |# if defined yyoverflow
 1701|       |      {
 1702|       |        /* Give user a chance to reallocate the stack.  Use copies of
 1703|       |           these so that the &'s don't force the real ones into
 1704|       |           memory.  */
 1705|       |        yy_state_t *yyss1 = yyss;
 1706|       |        YYSTYPE *yyvs1 = yyvs;
 1707|       |
 1708|       |        /* Each stack pointer address is followed by the size of the
 1709|       |           data in use in that stack, in bytes.  This used to be a
 1710|       |           conditional around just the two extra args, but that might
 1711|       |           be undefined if yyoverflow is a macro.  */
 1712|       |        yyoverflow (YY_("memory exhausted"),
 1713|       |                    &yyss1, yysize * YYSIZEOF (*yyssp),
 1714|       |                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
 1715|       |                    &yystacksize);
 1716|       |        yyss = yyss1;
 1717|       |        yyvs = yyvs1;
 1718|       |      }
 1719|       |# else /* defined YYSTACK_RELOCATE */
 1720|       |      /* Extend the stack our own way.  */
 1721|      0|      if (YYMAXDEPTH <= yystacksize)
  ------------------
  |  | 1204|      0|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (1721:11): [True: 0, False: 0]
  ------------------
 1722|      0|        goto yyexhaustedlab;
 1723|      0|      yystacksize *= 2;
 1724|      0|      if (YYMAXDEPTH < yystacksize)
  ------------------
  |  | 1204|      0|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (1724:11): [True: 0, False: 0]
  ------------------
 1725|      0|        yystacksize = YYMAXDEPTH;
  ------------------
  |  | 1204|      0|# define YYMAXDEPTH 10000
  ------------------
 1726|       |
 1727|      0|      {
 1728|      0|        yy_state_t *yyss1 = yyss;
 1729|      0|        union yyalloc *yyptr =
 1730|      0|          YY_CAST (union yyalloc *,
  ------------------
  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 1731|      0|                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
 1732|      0|        if (! yyptr)
  ------------------
  |  Branch (1732:13): [True: 0, False: 0]
  ------------------
 1733|      0|          goto yyexhaustedlab;
 1734|      0|        YYSTACK_RELOCATE (yyss_alloc, yyss);
  ------------------
  |  |  759|      0|    do                                                                  \
  |  |  760|      0|      {                                                                 \
  |  |  761|      0|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  |  553|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  |  762|      0|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  |  777|      0|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  763|      0|        Stack = &yyptr->Stack_alloc;                                    \
  |  |  764|      0|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  586|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  743|      0|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  586|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  765|      0|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  |  586|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  766|      0|      }                                                                 \
  |  |  767|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (767:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1735|      0|        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
  ------------------
  |  |  759|      0|    do                                                                  \
  |  |  760|      0|      {                                                                 \
  |  |  761|      0|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  |  553|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  |  762|      0|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  |  777|      0|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  763|      0|        Stack = &yyptr->Stack_alloc;                                    \
  |  |  764|      0|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  586|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  743|      0|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  586|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  765|      0|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  |  586|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  766|      0|      }                                                                 \
  |  |  767|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (767:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1736|      0|# undef YYSTACK_RELOCATE
 1737|      0|        if (yyss1 != yyssa)
  ------------------
  |  Branch (1737:13): [True: 0, False: 0]
  ------------------
 1738|      0|          YYSTACK_FREE (yyss1);
  ------------------
  |  |  703|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  722|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 1739|      0|      }
 1740|      0|# endif
 1741|       |
 1742|      0|      yyssp = yyss + yysize - 1;
 1743|      0|      yyvsp = yyvs + yysize - 1;
 1744|       |
 1745|      0|      YY_IGNORE_USELESS_CAST_BEGIN
 1746|      0|      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
 1747|      0|                  YY_CAST (long, yystacksize)));
 1748|      0|      YY_IGNORE_USELESS_CAST_END
 1749|       |
 1750|      0|      if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (1750:11): [True: 0, False: 0]
  ------------------
 1751|      0|        YYABORT;
  ------------------
  |  | 1030|      0|#define YYABORT         goto yyabortlab
  ------------------
 1752|      0|    }
 1753|  1.03M|#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 1754|       |
 1755|  1.03M|  if (yystate == YYFINAL)
  ------------------
  |  |  792|  1.03M|#define YYFINAL  2
  ------------------
  |  Branch (1755:7): [True: 3.92k, False: 1.02M]
  ------------------
 1756|  3.92k|    YYACCEPT;
  ------------------
  |  | 1029|  3.92k|#define YYACCEPT        goto yyacceptlab
  ------------------
 1757|       |
 1758|  1.02M|  goto yybackup;
 1759|       |
 1760|       |
 1761|       |/*-----------.
 1762|       || yybackup.  |
 1763|       |`-----------*/
 1764|  1.02M|yybackup:
 1765|       |  /* Do appropriate processing given the current state.  Read a
 1766|       |     lookahead token if we need one and don't already have one.  */
 1767|       |
 1768|       |  /* First try to decide what to do without reference to lookahead token.  */
 1769|  1.02M|  yyn = yypact[yystate];
 1770|  1.02M|  if (yypact_value_is_default (yyn))
  ------------------
  |  |  896|  1.02M|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  |  893|  1.02M|#define YYPACT_NINF (-46)
  |  |  ------------------
  |  |  |  Branch (896:3): [True: 531k, False: 495k]
  |  |  ------------------
  ------------------
 1771|   531k|    goto yydefault;
 1772|       |
 1773|       |  /* Not known => get a lookahead token if don't already have one.  */
 1774|       |
 1775|       |  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
 1776|   495k|  if (yychar == YYEMPTY)
  ------------------
  |  | 1026|   495k|#define YYEMPTY         (-2)
  ------------------
  |  Branch (1776:7): [True: 384k, False: 110k]
  ------------------
 1777|   384k|    {
 1778|   384k|      YYDPRINTF ((stderr, "Reading a token: "));
 1779|   384k|      yychar = yylex (&yylval);
  ------------------
  |  |   69|   384k|#define yylex           ini_lex
  ------------------
 1780|   384k|    }
 1781|       |
 1782|   495k|  if (yychar <= YYEOF)
  ------------------
  |  | 1027|   495k|#define YYEOF           0
  ------------------
  |  Branch (1782:7): [True: 11.0k, False: 484k]
  ------------------
 1783|  11.0k|    {
 1784|  11.0k|      yychar = yytoken = YYEOF;
  ------------------
  |  | 1027|  11.0k|#define YYEOF           0
  ------------------
 1785|  11.0k|      YYDPRINTF ((stderr, "Now at end of input.\n"));
 1786|  11.0k|    }
 1787|   484k|  else
 1788|   484k|    {
 1789|   484k|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  812|   484k|  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  806|   484k|#define YYMAXUTOK   273
  |  |  ------------------
  |  |                 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  805|      0|#define YYUNDEFTOK  2
  |  |  ------------------
  |  |  |  Branch (812:4): [True: 484k, False: 0]
  |  |  |  Branch (812:18): [True: 484k, False: 0]
  |  |  ------------------
  ------------------
 1790|   484k|      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
 1791|   484k|    }
 1792|       |
 1793|       |  /* If the proper action on seeing token YYTOKEN is to reduce or to
 1794|       |     detect an error, take that action.  */
 1795|   495k|  yyn += yytoken;
 1796|   495k|  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
  ------------------
  |  |  794|   477k|#define YYLAST   143
  ------------------
  |  Branch (1796:7): [True: 17.6k, False: 477k]
  |  Branch (1796:18): [True: 2.29k, False: 475k]
  |  Branch (1796:34): [True: 96.1k, False: 379k]
  ------------------
 1797|   116k|    goto yydefault;
 1798|   379k|  yyn = yytable[yyn];
 1799|   379k|  if (yyn <= 0)
  ------------------
  |  Branch (1799:7): [True: 0, False: 379k]
  ------------------
 1800|      0|    {
 1801|      0|      if (yytable_value_is_error (yyn))
  ------------------
  |  |  901|      0|  0
  |  |  ------------------
  |  |  |  Branch (901:3): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1802|      0|        goto yyerrlab;
 1803|      0|      yyn = -yyn;
 1804|      0|      goto yyreduce;
 1805|      0|    }
 1806|       |
 1807|       |  /* Count tokens shifted since error; after three, turn off error
 1808|       |     status.  */
 1809|   379k|  if (yyerrstatus)
  ------------------
  |  Branch (1809:7): [True: 0, False: 379k]
  ------------------
 1810|      0|    yyerrstatus--;
 1811|       |
 1812|       |  /* Shift the lookahead token.  */
 1813|   379k|  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 1814|   379k|  yystate = yyn;
 1815|   379k|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 1816|   379k|  *++yyvsp = yylval;
 1817|   379k|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 1818|       |
 1819|       |  /* Discard the shifted token.  */
 1820|   379k|  yychar = YYEMPTY;
  ------------------
  |  | 1026|   379k|#define YYEMPTY         (-2)
  ------------------
 1821|   379k|  goto yynewstate;
 1822|       |
 1823|       |
 1824|       |/*-----------------------------------------------------------.
 1825|       || yydefault -- do the default action for the current state.  |
 1826|       |`-----------------------------------------------------------*/
 1827|   647k|yydefault:
 1828|   647k|  yyn = yydefact[yystate];
 1829|   647k|  if (yyn == 0)
  ------------------
  |  Branch (1829:7): [True: 5.46k, False: 641k]
  ------------------
 1830|  5.46k|    goto yyerrlab;
 1831|   641k|  goto yyreduce;
 1832|       |
 1833|       |
 1834|       |/*-----------------------------.
 1835|       || yyreduce -- do a reduction.  |
 1836|       |`-----------------------------*/
 1837|   641k|yyreduce:
 1838|       |  /* yyn is the number of a rule to reduce with.  */
 1839|   641k|  yylen = yyr2[yyn];
 1840|       |
 1841|       |  /* If YYLEN is nonzero, implement the default value of the action:
 1842|       |     '$$ = $1'.
 1843|       |
 1844|       |     Otherwise, the following line sets YYVAL to garbage.
 1845|       |     This behavior is undocumented and Bison
 1846|       |     users should not rely upon it.  Assigning to YYVAL
 1847|       |     unconditionally makes the parser a bit smaller, and it avoids a
 1848|       |     GCC warning that YYVAL may be used uninitialized.  */
 1849|   641k|  yyval = yyvsp[1-yylen];
 1850|       |
 1851|       |
 1852|   641k|  YY_REDUCE_PRINT (yyn);
 1853|   641k|  switch (yyn)
 1854|   641k|    {
 1855|  9.38k|  case 3:
  ------------------
  |  Branch (1855:3): [True: 9.38k, False: 632k]
  ------------------
 1856|  9.38k|#line 361 "/src/php-src/Zend/zend_ini_parser.y"
 1857|  9.38k|                       { (void) ini_nerrs; }
 1858|  9.38k|#line 1859 "/src/php-src/Zend/zend_ini_parser.c"
 1859|  9.38k|    break;
 1860|       |
 1861|  4.04k|  case 4:
  ------------------
  |  Branch (1861:3): [True: 4.04k, False: 637k]
  ------------------
 1862|  4.04k|#line 365 "/src/php-src/Zend/zend_ini_parser.y"
 1863|  4.04k|                                                       {
 1864|       |#if DEBUG_CFG_PARSER
 1865|       |			printf("SECTION: [%s]\n", Z_STRVAL(yyvsp[-1]));
 1866|       |#endif
 1867|  4.04k|			ZEND_INI_PARSER_CB(&yyvsp[-1], NULL, NULL, ZEND_INI_PARSER_SECTION, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  110|  4.04k|#define ZEND_INI_PARSER_CB	(CG(ini_parser_param))->ini_parser_cb
  |  |  ------------------
  |  |  |  |   35|  4.04k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              			ZEND_INI_PARSER_CB(&yyvsp[-1], NULL, NULL, ZEND_INI_PARSER_SECTION, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  241|  4.04k|#define ZEND_INI_PARSER_SECTION	  2 /* Section: [foobar] */
  ------------------
              			ZEND_INI_PARSER_CB(&yyvsp[-1], NULL, NULL, ZEND_INI_PARSER_SECTION, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  111|  4.04k|#define ZEND_INI_PARSER_ARG	(CG(ini_parser_param))->arg
  |  |  ------------------
  |  |  |  |   35|  4.04k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1868|  4.04k|			zend_string_release(Z_STR(yyvsp[-1]));
  ------------------
  |  |  981|  4.04k|#define Z_STR(zval)					(zval).value.str
  ------------------
 1869|  4.04k|		}
 1870|  4.04k|#line 1871 "/src/php-src/Zend/zend_ini_parser.c"
 1871|  4.04k|    break;
 1872|       |
 1873|  38.9k|  case 5:
  ------------------
  |  Branch (1873:3): [True: 38.9k, False: 602k]
  ------------------
 1874|  38.9k|#line 372 "/src/php-src/Zend/zend_ini_parser.y"
 1875|  38.9k|                                             {
 1876|       |#if DEBUG_CFG_PARSER
 1877|       |			printf("NORMAL: '%s' = '%s'\n", Z_STRVAL(yyvsp[-2]), Z_STRVAL(yyvsp[0]));
 1878|       |#endif
 1879|  38.9k|			ZEND_INI_PARSER_CB(&yyvsp[-2], &yyvsp[0], NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  110|  38.9k|#define ZEND_INI_PARSER_CB	(CG(ini_parser_param))->ini_parser_cb
  |  |  ------------------
  |  |  |  |   35|  38.9k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              			ZEND_INI_PARSER_CB(&yyvsp[-2], &yyvsp[0], NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  240|  38.9k|#define ZEND_INI_PARSER_ENTRY     1 /* Normal entry: foo = bar */
  ------------------
              			ZEND_INI_PARSER_CB(&yyvsp[-2], &yyvsp[0], NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  111|  38.9k|#define ZEND_INI_PARSER_ARG	(CG(ini_parser_param))->arg
  |  |  ------------------
  |  |  |  |   35|  38.9k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1880|  38.9k|			if (ZEND_SYSTEM_INI) {
  ------------------
  |  |  118|  38.9k|#define ZEND_SYSTEM_INI CG(ini_parser_unbuffered_errors)
  |  |  ------------------
  |  |  |  |   35|  38.9k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 22, False: 38.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1881|     22|				GC_MAKE_PERSISTENT_LOCAL(Z_STR(yyvsp[-2]));
  ------------------
  |  | 1326|     22|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1882|     22|			}
 1883|  38.9k|			zend_string_release(Z_STR(yyvsp[-2]));
  ------------------
  |  |  981|  38.9k|#define Z_STR(zval)					(zval).value.str
  ------------------
 1884|  38.9k|			zval_ini_dtor(&yyvsp[0]);
 1885|  38.9k|		}
 1886|  38.9k|#line 1887 "/src/php-src/Zend/zend_ini_parser.c"
 1887|  38.9k|    break;
 1888|       |
 1889|    198|  case 6:
  ------------------
  |  Branch (1889:3): [True: 198, False: 641k]
  ------------------
 1890|    198|#line 383 "/src/php-src/Zend/zend_ini_parser.y"
 1891|    198|                                                                {
 1892|       |#if DEBUG_CFG_PARSER
 1893|       |			printf("OFFSET: '%s'[%s] = '%s'\n", Z_STRVAL(yyvsp[-4]), Z_STRVAL(yyvsp[-3]), Z_STRVAL(yyvsp[0]));
 1894|       |#endif
 1895|    198|			ZEND_INI_PARSER_CB(&yyvsp[-4], &yyvsp[0], &yyvsp[-3], ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  110|    198|#define ZEND_INI_PARSER_CB	(CG(ini_parser_param))->ini_parser_cb
  |  |  ------------------
  |  |  |  |   35|    198|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
              			ZEND_INI_PARSER_CB(&yyvsp[-4], &yyvsp[0], &yyvsp[-3], ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  242|    198|#define ZEND_INI_PARSER_POP_ENTRY 3 /* Offset entry: foo[] = bar */
  ------------------
              			ZEND_INI_PARSER_CB(&yyvsp[-4], &yyvsp[0], &yyvsp[-3], ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG);
  ------------------
  |  |  111|    198|#define ZEND_INI_PARSER_ARG	(CG(ini_parser_param))->arg
  |  |  ------------------
  |  |  |  |   35|    198|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
 1896|    198|			zend_string_release(Z_STR(yyvsp[-4]));
  ------------------
  |  |  981|    198|#define Z_STR(zval)					(zval).value.str
  ------------------
 1897|    198|			zval_ini_dtor(&yyvsp[-3]);
 1898|    198|			zval_ini_dtor(&yyvsp[0]);
 1899|    198|		}
 1900|    198|#line 1901 "/src/php-src/Zend/zend_ini_parser.c"
 1901|    198|    break;
 1902|       |
 1903|  26.7k|  case 7:
  ------------------
  |  Branch (1903:3): [True: 26.7k, False: 614k]
  ------------------
 1904|  26.7k|#line 392 "/src/php-src/Zend/zend_ini_parser.y"
 1905|  26.7k|                                { ZEND_INI_PARSER_CB(&yyvsp[0], NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); zend_string_release(Z_STR(yyvsp[0])); }
  ------------------
  |  |  110|  26.7k|#define ZEND_INI_PARSER_CB	(CG(ini_parser_param))->ini_parser_cb
  |  |  ------------------
  |  |  |  |   35|  26.7k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
                                              { ZEND_INI_PARSER_CB(&yyvsp[0], NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); zend_string_release(Z_STR(yyvsp[0])); }
  ------------------
  |  |  240|  26.7k|#define ZEND_INI_PARSER_ENTRY     1 /* Normal entry: foo = bar */
  ------------------
                                              { ZEND_INI_PARSER_CB(&yyvsp[0], NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); zend_string_release(Z_STR(yyvsp[0])); }
  ------------------
  |  |  111|  26.7k|#define ZEND_INI_PARSER_ARG	(CG(ini_parser_param))->arg
  |  |  ------------------
  |  |  |  |   35|  26.7k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  ------------------
                                              { ZEND_INI_PARSER_CB(&yyvsp[0], NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); zend_string_release(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|  26.7k|#define Z_STR(zval)					(zval).value.str
  ------------------
 1906|  26.7k|#line 1907 "/src/php-src/Zend/zend_ini_parser.c"
 1907|  26.7k|    break;
 1908|       |
 1909|  4.35k|  case 9:
  ------------------
  |  Branch (1909:3): [True: 4.35k, False: 637k]
  ------------------
 1910|  4.35k|#line 397 "/src/php-src/Zend/zend_ini_parser.y"
 1911|  4.35k|                                                        { yyval = yyvsp[0]; }
 1912|  4.35k|#line 1913 "/src/php-src/Zend/zend_ini_parser.c"
 1913|  4.35k|    break;
 1914|       |
 1915|    401|  case 10:
  ------------------
  |  Branch (1915:3): [True: 401, False: 641k]
  ------------------
 1916|    401|#line 398 "/src/php-src/Zend/zend_ini_parser.y"
 1917|    401|                                                                { zend_ini_init_string(&yyval); }
 1918|    401|#line 1919 "/src/php-src/Zend/zend_ini_parser.c"
 1919|    401|    break;
 1920|       |
 1921|  38.6k|  case 11:
  ------------------
  |  Branch (1921:3): [True: 38.6k, False: 603k]
  ------------------
 1922|  38.6k|#line 402 "/src/php-src/Zend/zend_ini_parser.y"
 1923|  38.6k|                                                                        { yyval = yyvsp[0]; normalize_value(&yyval); }
 1924|  38.6k|#line 1925 "/src/php-src/Zend/zend_ini_parser.c"
 1925|  38.6k|    break;
 1926|       |
 1927|     10|  case 12:
  ------------------
  |  Branch (1927:3): [True: 10, False: 641k]
  ------------------
 1928|     10|#line 403 "/src/php-src/Zend/zend_ini_parser.y"
 1929|     10|                                                                        { yyval = yyvsp[0]; }
 1930|     10|#line 1931 "/src/php-src/Zend/zend_ini_parser.c"
 1931|     10|    break;
 1932|       |
 1933|      0|  case 13:
  ------------------
  |  Branch (1933:3): [True: 0, False: 641k]
  ------------------
 1934|      0|#line 404 "/src/php-src/Zend/zend_ini_parser.y"
 1935|      0|                                                                        { yyval = yyvsp[0]; }
 1936|      0|#line 1937 "/src/php-src/Zend/zend_ini_parser.c"
 1937|      0|    break;
 1938|       |
 1939|      3|  case 14:
  ------------------
  |  Branch (1939:3): [True: 3, False: 641k]
  ------------------
 1940|      3|#line 405 "/src/php-src/Zend/zend_ini_parser.y"
 1941|      3|                                                                        { yyval = yyvsp[0]; }
 1942|      3|#line 1943 "/src/php-src/Zend/zend_ini_parser.c"
 1943|      3|    break;
 1944|       |
 1945|    482|  case 15:
  ------------------
  |  Branch (1945:3): [True: 482, False: 641k]
  ------------------
 1946|    482|#line 406 "/src/php-src/Zend/zend_ini_parser.y"
 1947|    482|                                                                        { zend_ini_init_string(&yyval); }
 1948|    482|#line 1949 "/src/php-src/Zend/zend_ini_parser.c"
 1949|    482|    break;
 1950|       |
 1951|    807|  case 16:
  ------------------
  |  Branch (1951:3): [True: 807, False: 640k]
  ------------------
 1952|    807|#line 410 "/src/php-src/Zend/zend_ini_parser.y"
 1953|    807|                                                                { yyval = yyvsp[0]; }
 1954|    807|#line 1955 "/src/php-src/Zend/zend_ini_parser.c"
 1955|    807|    break;
 1956|       |
 1957|    157|  case 17:
  ------------------
  |  Branch (1957:3): [True: 157, False: 641k]
  ------------------
 1958|    157|#line 411 "/src/php-src/Zend/zend_ini_parser.y"
 1959|    157|                                                                { zend_ini_init_string(&yyval); }
 1960|    157|#line 1961 "/src/php-src/Zend/zend_ini_parser.c"
 1961|    157|    break;
 1962|       |
 1963|      0|  case 18:
  ------------------
  |  Branch (1963:3): [True: 0, False: 641k]
  ------------------
 1964|      0|#line 415 "/src/php-src/Zend/zend_ini_parser.y"
 1965|      0|                                                        { zend_ini_add_string(&yyval, &yyvsp[-1], &yyvsp[0]); zend_string_free(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 1966|      0|#line 1967 "/src/php-src/Zend/zend_ini_parser.c"
 1967|      0|    break;
 1968|       |
 1969|  30.6k|  case 19:
  ------------------
  |  Branch (1969:3): [True: 30.6k, False: 611k]
  ------------------
 1970|  30.6k|#line 416 "/src/php-src/Zend/zend_ini_parser.y"
 1971|  30.6k|                                                { zend_ini_add_string(&yyval, &yyvsp[-1], &yyvsp[0]); zend_string_free(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|  30.6k|#define Z_STR(zval)					(zval).value.str
  ------------------
 1972|  30.6k|#line 1973 "/src/php-src/Zend/zend_ini_parser.c"
 1973|  30.6k|    break;
 1974|       |
 1975|  37.8k|  case 20:
  ------------------
  |  Branch (1975:3): [True: 37.8k, False: 603k]
  ------------------
 1976|  37.8k|#line 417 "/src/php-src/Zend/zend_ini_parser.y"
 1977|  37.8k|                                                                { zend_ini_init_string(&yyval); }
 1978|  37.8k|#line 1979 "/src/php-src/Zend/zend_ini_parser.c"
 1979|  37.8k|    break;
 1980|       |
 1981|      0|  case 21:
  ------------------
  |  Branch (1981:3): [True: 0, False: 641k]
  ------------------
 1982|      0|#line 421 "/src/php-src/Zend/zend_ini_parser.y"
 1983|      0|                                                                        { yyval = yyvsp[0]; }
 1984|      0|#line 1985 "/src/php-src/Zend/zend_ini_parser.c"
 1985|      0|    break;
 1986|       |
 1987|  4.35k|  case 22:
  ------------------
  |  Branch (1987:3): [True: 4.35k, False: 637k]
  ------------------
 1988|  4.35k|#line 422 "/src/php-src/Zend/zend_ini_parser.y"
 1989|  4.35k|                                                                { yyval = yyvsp[0]; }
 1990|  4.35k|#line 1991 "/src/php-src/Zend/zend_ini_parser.c"
 1991|  4.35k|    break;
 1992|       |
 1993|      1|  case 23:
  ------------------
  |  Branch (1993:3): [True: 1, False: 641k]
  ------------------
 1994|      1|#line 423 "/src/php-src/Zend/zend_ini_parser.y"
 1995|      1|                                                        { yyval = yyvsp[-1]; }
 1996|      1|#line 1997 "/src/php-src/Zend/zend_ini_parser.c"
 1997|      1|    break;
 1998|       |
 1999|      1|  case 24:
  ------------------
  |  Branch (1999:3): [True: 1, False: 641k]
  ------------------
 2000|      1|#line 424 "/src/php-src/Zend/zend_ini_parser.y"
 2001|      1|                                                        { zend_ini_add_string(&yyval, &yyvsp[-1], &yyvsp[0]); zend_string_free(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  ------------------
 2002|      1|#line 2003 "/src/php-src/Zend/zend_ini_parser.c"
 2003|      1|    break;
 2004|       |
 2005|    229|  case 25:
  ------------------
  |  Branch (2005:3): [True: 229, False: 641k]
  ------------------
 2006|    229|#line 425 "/src/php-src/Zend/zend_ini_parser.y"
 2007|    229|                                                                { zend_ini_add_string(&yyval, &yyvsp[-1], &yyvsp[0]); zend_string_free(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|    229|#define Z_STR(zval)					(zval).value.str
  ------------------
 2008|    229|#line 2009 "/src/php-src/Zend/zend_ini_parser.c"
 2009|    229|    break;
 2010|       |
 2011|    217|  case 26:
  ------------------
  |  Branch (2011:3): [True: 217, False: 641k]
  ------------------
 2012|    217|#line 426 "/src/php-src/Zend/zend_ini_parser.y"
 2013|    217|                                                               { zend_ini_add_string(&yyval, &yyvsp[-3], &yyvsp[-1]); zend_string_free(Z_STR(yyvsp[-1])); }
  ------------------
  |  |  981|    217|#define Z_STR(zval)					(zval).value.str
  ------------------
 2014|    217|#line 2015 "/src/php-src/Zend/zend_ini_parser.c"
 2015|    217|    break;
 2016|       |
 2017|      0|  case 27:
  ------------------
  |  Branch (2017:3): [True: 0, False: 641k]
  ------------------
 2018|      0|#line 430 "/src/php-src/Zend/zend_ini_parser.y"
 2019|      0|                                                                        { yyval = yyvsp[0]; }
 2020|      0|#line 2021 "/src/php-src/Zend/zend_ini_parser.c"
 2021|      0|    break;
 2022|       |
 2023|  33.4k|  case 28:
  ------------------
  |  Branch (2023:3): [True: 33.4k, False: 608k]
  ------------------
 2024|  33.4k|#line 431 "/src/php-src/Zend/zend_ini_parser.y"
 2025|  33.4k|                                                                { yyval = yyvsp[0]; }
 2026|  33.4k|#line 2027 "/src/php-src/Zend/zend_ini_parser.c"
 2027|  33.4k|    break;
 2028|       |
 2029|  8.12k|  case 29:
  ------------------
  |  Branch (2029:3): [True: 8.12k, False: 633k]
  ------------------
 2030|  8.12k|#line 432 "/src/php-src/Zend/zend_ini_parser.y"
 2031|  8.12k|                                                        { yyval = yyvsp[-1]; }
 2032|  8.12k|#line 2033 "/src/php-src/Zend/zend_ini_parser.c"
 2033|  8.12k|    break;
 2034|       |
 2035|      0|  case 30:
  ------------------
  |  Branch (2035:3): [True: 0, False: 641k]
  ------------------
 2036|      0|#line 433 "/src/php-src/Zend/zend_ini_parser.y"
 2037|      0|                                                { zend_ini_add_string(&yyval, &yyvsp[-1], &yyvsp[0]); zend_string_free(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 2038|      0|#line 2039 "/src/php-src/Zend/zend_ini_parser.c"
 2039|      0|    break;
 2040|       |
 2041|  62.0k|  case 31:
  ------------------
  |  Branch (2041:3): [True: 62.0k, False: 579k]
  ------------------
 2042|  62.0k|#line 434 "/src/php-src/Zend/zend_ini_parser.y"
 2043|  62.0k|                                                { zend_ini_add_string(&yyval, &yyvsp[-1], &yyvsp[0]); zend_string_free(Z_STR(yyvsp[0])); }
  ------------------
  |  |  981|  62.0k|#define Z_STR(zval)					(zval).value.str
  ------------------
 2044|  62.0k|#line 2045 "/src/php-src/Zend/zend_ini_parser.c"
 2045|  62.0k|    break;
 2046|       |
 2047|  28.2k|  case 32:
  ------------------
  |  Branch (2047:3): [True: 28.2k, False: 613k]
  ------------------
 2048|  28.2k|#line 435 "/src/php-src/Zend/zend_ini_parser.y"
 2049|  28.2k|                                                       { zend_ini_add_string(&yyval, &yyvsp[-3], &yyvsp[-1]); zend_string_free(Z_STR(yyvsp[-1])); }
  ------------------
  |  |  981|  28.2k|#define Z_STR(zval)					(zval).value.str
  ------------------
 2050|  28.2k|#line 2051 "/src/php-src/Zend/zend_ini_parser.c"
 2051|  28.2k|    break;
 2052|       |
 2053|  39.4k|  case 33:
  ------------------
  |  Branch (2053:3): [True: 39.4k, False: 602k]
  ------------------
 2054|  39.4k|#line 439 "/src/php-src/Zend/zend_ini_parser.y"
 2055|  39.4k|                                                                { yyval = yyvsp[0]; }
 2056|  39.4k|#line 2057 "/src/php-src/Zend/zend_ini_parser.c"
 2057|  39.4k|    break;
 2058|       |
 2059|    142|  case 34:
  ------------------
  |  Branch (2059:3): [True: 142, False: 641k]
  ------------------
 2060|    142|#line 440 "/src/php-src/Zend/zend_ini_parser.y"
 2061|    142|                                                                { zend_ini_do_op('|', &yyval, &yyvsp[-2], &yyvsp[0]); }
 2062|    142|#line 2063 "/src/php-src/Zend/zend_ini_parser.c"
 2063|    142|    break;
 2064|       |
 2065|      1|  case 35:
  ------------------
  |  Branch (2065:3): [True: 1, False: 641k]
  ------------------
 2066|      1|#line 441 "/src/php-src/Zend/zend_ini_parser.y"
 2067|      1|                                                                { zend_ini_do_op('&', &yyval, &yyvsp[-2], &yyvsp[0]); }
 2068|      1|#line 2069 "/src/php-src/Zend/zend_ini_parser.c"
 2069|      1|    break;
 2070|       |
 2071|    671|  case 36:
  ------------------
  |  Branch (2071:3): [True: 671, False: 641k]
  ------------------
 2072|    671|#line 442 "/src/php-src/Zend/zend_ini_parser.y"
 2073|    671|                                                                { zend_ini_do_op('^', &yyval, &yyvsp[-2], &yyvsp[0]); }
 2074|    671|#line 2075 "/src/php-src/Zend/zend_ini_parser.c"
 2075|    671|    break;
 2076|       |
 2077|      1|  case 37:
  ------------------
  |  Branch (2077:3): [True: 1, False: 641k]
  ------------------
 2078|      1|#line 443 "/src/php-src/Zend/zend_ini_parser.y"
 2079|      1|                                                                        { zend_ini_do_op('~', &yyval, &yyvsp[0], NULL); }
 2080|      1|#line 2081 "/src/php-src/Zend/zend_ini_parser.c"
 2081|      1|    break;
 2082|       |
 2083|    164|  case 38:
  ------------------
  |  Branch (2083:3): [True: 164, False: 641k]
  ------------------
 2084|    164|#line 444 "/src/php-src/Zend/zend_ini_parser.y"
 2085|    164|                                                                        { zend_ini_do_op('!', &yyval, &yyvsp[0], NULL); }
 2086|    164|#line 2087 "/src/php-src/Zend/zend_ini_parser.c"
 2087|    164|    break;
 2088|       |
 2089|      0|  case 39:
  ------------------
  |  Branch (2089:3): [True: 0, False: 641k]
  ------------------
 2090|      0|#line 445 "/src/php-src/Zend/zend_ini_parser.y"
 2091|      0|                                                                { yyval = yyvsp[-1]; }
 2092|      0|#line 2093 "/src/php-src/Zend/zend_ini_parser.c"
 2093|      0|    break;
 2094|       |
 2095|      1|  case 40:
  ------------------
  |  Branch (2095:3): [True: 1, False: 641k]
  ------------------
 2096|      1|#line 449 "/src/php-src/Zend/zend_ini_parser.y"
 2097|      1|                                                                        { zend_ini_get_var(&yyval, &yyvsp[-1], NULL); zend_string_free(Z_STR(yyvsp[-1])); }
  ------------------
  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  ------------------
 2098|      1|#line 2099 "/src/php-src/Zend/zend_ini_parser.c"
 2099|      1|    break;
 2100|       |
 2101|      0|  case 41:
  ------------------
  |  Branch (2101:3): [True: 0, False: 641k]
  ------------------
 2102|      0|#line 450 "/src/php-src/Zend/zend_ini_parser.y"
 2103|      0|                                                                        { zend_ini_get_var(&yyval, &yyvsp[-3], &yyvsp[-1]); zend_string_free(Z_STR(yyvsp[-3])); zend_string_free(Z_STR(yyvsp[-1])); }
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
                                                                                      { zend_ini_get_var(&yyval, &yyvsp[-3], &yyvsp[-1]); zend_string_free(Z_STR(yyvsp[-3])); zend_string_free(Z_STR(yyvsp[-1])); }
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 2104|      0|#line 2105 "/src/php-src/Zend/zend_ini_parser.c"
 2105|      0|    break;
 2106|       |
 2107|      3|  case 42:
  ------------------
  |  Branch (2107:3): [True: 3, False: 641k]
  ------------------
 2108|      3|#line 455 "/src/php-src/Zend/zend_ini_parser.y"
 2109|      3|                                { yyval = yyvsp[0]; }
 2110|      3|#line 2111 "/src/php-src/Zend/zend_ini_parser.c"
 2111|      3|    break;
 2112|       |
 2113|      0|  case 43:
  ------------------
  |  Branch (2113:3): [True: 0, False: 641k]
  ------------------
 2114|      0|#line 456 "/src/php-src/Zend/zend_ini_parser.y"
 2115|      0|                                        { zend_ini_init_string(&yyval); }
 2116|      0|#line 2117 "/src/php-src/Zend/zend_ini_parser.c"
 2117|      0|    break;
 2118|       |
 2119|    156|  case 44:
  ------------------
  |  Branch (2119:3): [True: 156, False: 641k]
  ------------------
 2120|    156|#line 460 "/src/php-src/Zend/zend_ini_parser.y"
 2121|    156|                                                                        { yyval = yyvsp[0]; }
 2122|    156|#line 2123 "/src/php-src/Zend/zend_ini_parser.c"
 2123|    156|    break;
 2124|       |
 2125|    128|  case 45:
  ------------------
  |  Branch (2125:3): [True: 128, False: 641k]
  ------------------
 2126|    128|#line 461 "/src/php-src/Zend/zend_ini_parser.y"
 2127|    128|                                                                        { yyval = yyvsp[0]; /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
 2128|    128|#line 2129 "/src/php-src/Zend/zend_ini_parser.c"
 2129|    128|    break;
 2130|       |
 2131|    116|  case 46:
  ------------------
  |  Branch (2131:3): [True: 116, False: 641k]
  ------------------
 2132|    116|#line 462 "/src/php-src/Zend/zend_ini_parser.y"
 2133|    116|                                                                        { yyval = yyvsp[0]; /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
 2134|    116|#line 2135 "/src/php-src/Zend/zend_ini_parser.c"
 2135|    116|    break;
 2136|       |
 2137|  4.18k|  case 47:
  ------------------
  |  Branch (2137:3): [True: 4.18k, False: 637k]
  ------------------
 2138|  4.18k|#line 463 "/src/php-src/Zend/zend_ini_parser.y"
 2139|  4.18k|                                                                        { yyval = yyvsp[0]; /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
 2140|  4.18k|#line 2141 "/src/php-src/Zend/zend_ini_parser.c"
 2141|  4.18k|    break;
 2142|       |
 2143|      0|  case 48:
  ------------------
  |  Branch (2143:3): [True: 0, False: 641k]
  ------------------
 2144|      0|#line 464 "/src/php-src/Zend/zend_ini_parser.y"
 2145|      0|                                                                { yyval = yyvsp[0]; /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
 2146|      0|#line 2147 "/src/php-src/Zend/zend_ini_parser.c"
 2147|      0|    break;
 2148|       |
 2149|  18.4k|  case 49:
  ------------------
  |  Branch (2149:3): [True: 18.4k, False: 623k]
  ------------------
 2150|  18.4k|#line 468 "/src/php-src/Zend/zend_ini_parser.y"
 2151|  18.4k|                                                                        { zend_ini_get_constant(&yyval, &yyvsp[0]); }
 2152|  18.4k|#line 2153 "/src/php-src/Zend/zend_ini_parser.c"
 2153|  18.4k|    break;
 2154|       |
 2155|  11.4k|  case 50:
  ------------------
  |  Branch (2155:3): [True: 11.4k, False: 630k]
  ------------------
 2156|  11.4k|#line 469 "/src/php-src/Zend/zend_ini_parser.y"
 2157|  11.4k|                                                                        { yyval = yyvsp[0]; /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
 2158|  11.4k|#line 2159 "/src/php-src/Zend/zend_ini_parser.c"
 2159|  11.4k|    break;
 2160|       |
 2161|  4.89k|  case 51:
  ------------------
  |  Branch (2161:3): [True: 4.89k, False: 636k]
  ------------------
 2162|  4.89k|#line 470 "/src/php-src/Zend/zend_ini_parser.y"
 2163|  4.89k|                          {
 2164|  4.89k|			yyval = yyvsp[0];
 2165|  4.89k|			Z_EXTRA(yyval) = INI_ZVAL_IS_NUMBER;
  ------------------
  |  |  704|  4.89k|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
              			Z_EXTRA(yyval) = INI_ZVAL_IS_NUMBER;
  ------------------
  |  |  119|  4.89k|#define INI_ZVAL_IS_NUMBER 1
  ------------------
 2166|       |			/*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/
 2167|  4.89k|		}
 2168|  4.89k|#line 2169 "/src/php-src/Zend/zend_ini_parser.c"
 2169|  4.89k|    break;
 2170|       |
 2171|  50.2k|  case 52:
  ------------------
  |  Branch (2171:3): [True: 50.2k, False: 591k]
  ------------------
 2172|  50.2k|#line 475 "/src/php-src/Zend/zend_ini_parser.y"
 2173|  50.2k|                                                                        { yyval = yyvsp[0]; /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
 2174|  50.2k|#line 2175 "/src/php-src/Zend/zend_ini_parser.c"
 2175|  50.2k|    break;
 2176|       |
 2177|  10.4k|  case 53:
  ------------------
  |  Branch (2177:3): [True: 10.4k, False: 631k]
  ------------------
 2178|  10.4k|#line 476 "/src/php-src/Zend/zend_ini_parser.y"
 2179|  10.4k|                                                                { yyval = yyvsp[0]; /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
 2180|  10.4k|#line 2181 "/src/php-src/Zend/zend_ini_parser.c"
 2181|  10.4k|    break;
 2182|       |
 2183|       |
 2184|      0|#line 2185 "/src/php-src/Zend/zend_ini_parser.c"
 2185|       |
 2186|   171k|      default: break;
  ------------------
  |  Branch (2186:7): [True: 171k, False: 469k]
  ------------------
 2187|   641k|    }
 2188|       |  /* User semantic actions sometimes alter yychar, and that requires
 2189|       |     that yytoken be updated with the new translation.  We take the
 2190|       |     approach of translating immediately before every use of yytoken.
 2191|       |     One alternative is translating here after every semantic action,
 2192|       |     but that translation would be missed if the semantic action invokes
 2193|       |     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
 2194|       |     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
 2195|       |     incorrect destructor might then be invoked immediately.  In the
 2196|       |     case of YYERROR or YYBACKUP, subsequent parser actions might lead
 2197|       |     to an incorrect destructor call or verbose syntax error message
 2198|       |     before the lookahead is translated.  */
 2199|   641k|  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 2200|       |
 2201|   641k|  YYPOPSTACK (yylen);
  ------------------
  |  | 1654|   641k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 2202|   641k|  yylen = 0;
 2203|   641k|  YY_STACK_PRINT (yyss, yyssp);
 2204|       |
 2205|   641k|  *++yyvsp = yyval;
 2206|       |
 2207|       |  /* Now 'shift' the result of the reduction.  Determine what state
 2208|       |     that goes to, based on the state we popped back to and the rule
 2209|       |     number reduced by.  */
 2210|   641k|  {
 2211|   641k|    const int yylhs = yyr1[yyn] - YYNTOKENS;
  ------------------
  |  |  797|   641k|#define YYNTOKENS  45
  ------------------
 2212|   641k|    const int yyi = yypgoto[yylhs] + *yyssp;
 2213|   641k|    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
  ------------------
  |  |  794|   981k|#define YYLAST   143
  ------------------
  |  Branch (2213:16): [True: 340k, False: 301k]
  |  Branch (2213:28): [True: 340k, False: 0]
  |  Branch (2213:45): [True: 138k, False: 201k]
  ------------------
 2214|   641k|               ? yytable[yyi]
 2215|   641k|               : yydefgoto[yylhs]);
 2216|   641k|  }
 2217|       |
 2218|   641k|  goto yynewstate;
 2219|       |
 2220|       |
 2221|       |/*--------------------------------------.
 2222|       || yyerrlab -- here on detecting error.  |
 2223|       |`--------------------------------------*/
 2224|  5.46k|yyerrlab:
 2225|       |  /* Make sure we have latest lookahead translation.  See comments at
 2226|       |     user semantic actions for why this is necessary.  */
 2227|  5.46k|  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  | 1026|  5.46k|#define YYEMPTY         (-2)
  ------------------
                yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  | 1026|      0|#define YYEMPTY         (-2)
  ------------------
                yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  |  812|  10.9k|  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  806|  5.46k|#define YYMAXUTOK   273
  |  |  ------------------
  |  |                 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  805|      0|#define YYUNDEFTOK  2
  |  |  ------------------
  |  |  |  Branch (812:4): [True: 5.46k, False: 0]
  |  |  |  Branch (812:18): [True: 5.46k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2227:13): [True: 0, False: 5.46k]
  ------------------
 2228|       |
 2229|       |  /* If not already recovering from an error, report this error.  */
 2230|  5.46k|  if (!yyerrstatus)
  ------------------
  |  Branch (2230:7): [True: 5.46k, False: 0]
  ------------------
 2231|  5.46k|    {
 2232|  5.46k|      ++yynerrs;
  ------------------
  |  |   72|  5.46k|#define yynerrs         ini_nerrs
  ------------------
 2233|       |#if ! YYERROR_VERBOSE
 2234|       |      yyerror (YY_("syntax error"));
 2235|       |#else
 2236|  5.46k|# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
 2237|  5.46k|                                        yyssp, yytoken)
 2238|  5.46k|      {
 2239|  5.46k|        char const *yymsgp = YY_("syntax error");
  ------------------
  |  |  602|  5.46k|#  define YY_(Msgid) Msgid
  ------------------
 2240|  5.46k|        int yysyntax_error_status;
 2241|  5.46k|        yysyntax_error_status = YYSYNTAX_ERROR;
  ------------------
  |  | 2236|  5.46k|# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
  |  | 2237|  5.46k|                                        yyssp, yytoken)
  ------------------
 2242|  5.46k|        if (yysyntax_error_status == 0)
  ------------------
  |  Branch (2242:13): [True: 5.46k, False: 0]
  ------------------
 2243|  5.46k|          yymsgp = yymsg;
 2244|      0|        else if (yysyntax_error_status == 1)
  ------------------
  |  Branch (2244:18): [True: 0, False: 0]
  ------------------
 2245|      0|          {
 2246|      0|            if (yymsg != yymsgbuf)
  ------------------
  |  Branch (2246:17): [True: 0, False: 0]
  ------------------
 2247|      0|              YYSTACK_FREE (yymsg);
  ------------------
  |  |  703|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  722|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 2248|      0|            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
  ------------------
  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 2249|      0|            if (!yymsg)
  ------------------
  |  Branch (2249:17): [True: 0, False: 0]
  ------------------
 2250|      0|              {
 2251|      0|                yymsg = yymsgbuf;
 2252|      0|                yymsg_alloc = sizeof yymsgbuf;
 2253|      0|                yysyntax_error_status = 2;
 2254|      0|              }
 2255|      0|            else
 2256|      0|              {
 2257|      0|                yysyntax_error_status = YYSYNTAX_ERROR;
  ------------------
  |  | 2236|      0|# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
  |  | 2237|      0|                                        yyssp, yytoken)
  ------------------
 2258|      0|                yymsgp = yymsg;
 2259|      0|              }
 2260|      0|          }
 2261|  5.46k|        yyerror (yymsgp);
  ------------------
  |  |   70|  5.46k|#define yyerror         ini_error
  ------------------
 2262|  5.46k|        if (yysyntax_error_status == 2)
  ------------------
  |  Branch (2262:13): [True: 0, False: 5.46k]
  ------------------
 2263|      0|          goto yyexhaustedlab;
 2264|  5.46k|      }
 2265|  5.46k|# undef YYSYNTAX_ERROR
 2266|  5.46k|#endif
 2267|  5.46k|    }
 2268|       |
 2269|       |
 2270|       |
 2271|  5.46k|  if (yyerrstatus == 3)
  ------------------
  |  Branch (2271:7): [True: 0, False: 5.46k]
  ------------------
 2272|      0|    {
 2273|       |      /* If just tried and failed to reuse lookahead token after an
 2274|       |         error, discard it.  */
 2275|       |
 2276|      0|      if (yychar <= YYEOF)
  ------------------
  |  | 1027|      0|#define YYEOF           0
  ------------------
  |  Branch (2276:11): [True: 0, False: 0]
  ------------------
 2277|      0|        {
 2278|       |          /* Return failure if at end of input.  */
 2279|      0|          if (yychar == YYEOF)
  ------------------
  |  | 1027|      0|#define YYEOF           0
  ------------------
  |  Branch (2279:15): [True: 0, False: 0]
  ------------------
 2280|      0|            YYABORT;
  ------------------
  |  | 1030|      0|#define YYABORT         goto yyabortlab
  ------------------
 2281|      0|        }
 2282|      0|      else
 2283|      0|        {
 2284|      0|          yydestruct ("Error: discarding",
 2285|      0|                      yytoken, &yylval);
 2286|      0|          yychar = YYEMPTY;
  ------------------
  |  | 1026|      0|#define YYEMPTY         (-2)
  ------------------
 2287|      0|        }
 2288|      0|    }
 2289|       |
 2290|       |  /* Else will try to reuse lookahead token after shifting the error
 2291|       |     token.  */
 2292|  5.46k|  goto yyerrlab1;
 2293|       |
 2294|       |
 2295|       |/*---------------------------------------------------.
 2296|       || yyerrorlab -- error raised explicitly by YYERROR.  |
 2297|       |`---------------------------------------------------*/
 2298|  5.46k|yyerrorlab:
 2299|       |  /* Pacify compilers when the user code never invokes YYERROR and the
 2300|       |     label yyerrorlab therefore never appears in user code.  */
 2301|      0|  if (0)
  ------------------
  |  Branch (2301:7): [Folded, False: 0]
  ------------------
 2302|      0|    YYERROR;
  ------------------
  |  | 1031|      0|#define YYERROR         goto yyerrorlab
  ------------------
 2303|       |
 2304|       |  /* Do not reclaim the symbols of the rule whose action triggered
 2305|       |     this YYERROR.  */
 2306|      0|  YYPOPSTACK (yylen);
  ------------------
  |  | 1654|      0|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 2307|      0|  yylen = 0;
 2308|      0|  YY_STACK_PRINT (yyss, yyssp);
 2309|      0|  yystate = *yyssp;
 2310|      0|  goto yyerrlab1;
 2311|       |
 2312|       |
 2313|       |/*-------------------------------------------------------------.
 2314|       || yyerrlab1 -- common code for both syntax error and YYERROR.  |
 2315|       |`-------------------------------------------------------------*/
 2316|  5.46k|yyerrlab1:
 2317|  5.46k|  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 2318|       |
 2319|  5.46k|  for (;;)
 2320|  20.5k|    {
 2321|  20.5k|      yyn = yypact[yystate];
 2322|  20.5k|      if (!yypact_value_is_default (yyn))
  ------------------
  |  |  896|  20.5k|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  |  893|  20.5k|#define YYPACT_NINF (-46)
  |  |  ------------------
  ------------------
  |  Branch (2322:11): [True: 13.8k, False: 6.70k]
  ------------------
 2323|  13.8k|        {
 2324|  13.8k|          yyn += YYTERROR;
  ------------------
  |  | 1054|  13.8k|#define YYTERROR        1
  ------------------
 2325|  13.8k|          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
  ------------------
  |  |  794|  25.0k|#define YYLAST   143
  ------------------
                        if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
  ------------------
  |  | 1054|  11.1k|#define YYTERROR        1
  ------------------
  |  Branch (2325:15): [True: 11.1k, False: 2.69k]
  |  Branch (2325:27): [True: 11.1k, False: 0]
  |  Branch (2325:44): [True: 0, False: 11.1k]
  ------------------
 2326|      0|            {
 2327|      0|              yyn = yytable[yyn];
 2328|      0|              if (0 < yyn)
  ------------------
  |  Branch (2328:19): [True: 0, False: 0]
  ------------------
 2329|      0|                break;
 2330|      0|            }
 2331|  13.8k|        }
 2332|       |
 2333|       |      /* Pop the current state because it cannot handle the error token.  */
 2334|  20.5k|      if (yyssp == yyss)
  ------------------
  |  Branch (2334:11): [True: 5.46k, False: 15.1k]
  ------------------
 2335|  5.46k|        YYABORT;
  ------------------
  |  | 1030|  5.46k|#define YYABORT         goto yyabortlab
  ------------------
 2336|       |
 2337|       |
 2338|  15.1k|      yydestruct ("Error: popping",
 2339|  15.1k|                  yystos[yystate], yyvsp);
 2340|  15.1k|      YYPOPSTACK (1);
  ------------------
  |  | 1654|  15.1k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 2341|  15.1k|      yystate = *yyssp;
 2342|  15.1k|      YY_STACK_PRINT (yyss, yyssp);
 2343|  15.1k|    }
 2344|       |
 2345|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 2346|      0|  *++yyvsp = yylval;
 2347|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 2348|       |
 2349|       |
 2350|       |  /* Shift the error token.  */
 2351|      0|  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 2352|       |
 2353|      0|  yystate = yyn;
 2354|      0|  goto yynewstate;
 2355|       |
 2356|       |
 2357|       |/*-------------------------------------.
 2358|       || yyacceptlab -- YYACCEPT comes here.  |
 2359|       |`-------------------------------------*/
 2360|  3.92k|yyacceptlab:
 2361|  3.92k|  yyresult = 0;
 2362|  3.92k|  goto yyreturn;
 2363|       |
 2364|       |
 2365|       |/*-----------------------------------.
 2366|       || yyabortlab -- YYABORT comes here.  |
 2367|       |`-----------------------------------*/
 2368|  5.46k|yyabortlab:
 2369|  5.46k|  yyresult = 1;
 2370|  5.46k|  goto yyreturn;
 2371|       |
 2372|       |
 2373|      0|#if !defined yyoverflow || YYERROR_VERBOSE
 2374|       |/*-------------------------------------------------.
 2375|       || yyexhaustedlab -- memory exhaustion comes here.  |
 2376|       |`-------------------------------------------------*/
 2377|      0|yyexhaustedlab:
 2378|      0|  yyerror (YY_("memory exhausted"));
  ------------------
  |  |   70|      0|#define yyerror         ini_error
  ------------------
                yyerror (YY_("memory exhausted"));
  ------------------
  |  |  602|      0|#  define YY_(Msgid) Msgid
  ------------------
 2379|      0|  yyresult = 2;
 2380|       |  /* Fall through.  */
 2381|      0|#endif
 2382|       |
 2383|       |
 2384|       |/*-----------------------------------------------------.
 2385|       || yyreturn -- parsing is finished, return the result.  |
 2386|       |`-----------------------------------------------------*/
 2387|  9.38k|yyreturn:
 2388|  9.38k|  if (yychar != YYEMPTY)
  ------------------
  |  | 1026|  9.38k|#define YYEMPTY         (-2)
  ------------------
  |  Branch (2388:7): [True: 5.46k, False: 3.92k]
  ------------------
 2389|  5.46k|    {
 2390|       |      /* Make sure we have latest lookahead translation.  See comments at
 2391|       |         user semantic actions for why this is necessary.  */
 2392|  5.46k|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  812|  5.46k|  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  806|  5.46k|#define YYMAXUTOK   273
  |  |  ------------------
  |  |                 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  805|      0|#define YYUNDEFTOK  2
  |  |  ------------------
  |  |  |  Branch (812:4): [True: 5.46k, False: 0]
  |  |  |  Branch (812:18): [True: 5.46k, False: 0]
  |  |  ------------------
  ------------------
 2393|  5.46k|      yydestruct ("Cleanup: discarding lookahead",
 2394|  5.46k|                  yytoken, &yylval);
 2395|  5.46k|    }
 2396|       |  /* Do not reclaim the symbols of the rule whose action triggered
 2397|       |     this YYABORT or YYACCEPT.  */
 2398|  9.38k|  YYPOPSTACK (yylen);
  ------------------
  |  | 1654|  9.38k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 2399|  9.38k|  YY_STACK_PRINT (yyss, yyssp);
 2400|  17.2k|  while (yyssp != yyss)
  ------------------
  |  Branch (2400:10): [True: 7.84k, False: 9.38k]
  ------------------
 2401|  7.84k|    {
 2402|  7.84k|      yydestruct ("Cleanup: popping",
 2403|  7.84k|                  yystos[+*yyssp], yyvsp);
 2404|  7.84k|      YYPOPSTACK (1);
  ------------------
  |  | 1654|  7.84k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 2405|  7.84k|    }
 2406|  9.38k|#ifndef yyoverflow
 2407|  9.38k|  if (yyss != yyssa)
  ------------------
  |  Branch (2407:7): [True: 0, False: 9.38k]
  ------------------
 2408|      0|    YYSTACK_FREE (yyss);
  ------------------
  |  |  703|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  722|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 2409|  9.38k|#endif
 2410|  9.38k|#if YYERROR_VERBOSE
 2411|  9.38k|  if (yymsg != yymsgbuf)
  ------------------
  |  Branch (2411:7): [True: 0, False: 9.38k]
  ------------------
 2412|      0|    YYSTACK_FREE (yymsg);
  ------------------
  |  |  703|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  722|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 2413|  9.38k|#endif
 2414|  9.38k|  return yyresult;
 2415|      0|}
zend_ini_parser.c:zval_ini_dtor:
  354|  45.6k|{
  355|  45.6k|	if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|  45.6k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  45.6k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|  45.6k|#define IS_STRING					6
  ------------------
  |  Branch (355:6): [True: 45.6k, False: 33]
  ------------------
  356|  45.6k|		if (ZEND_SYSTEM_INI) {
  ------------------
  |  |  118|  45.6k|#define ZEND_SYSTEM_INI CG(ini_parser_unbuffered_errors)
  |  |  ------------------
  |  |  |  |   35|  45.6k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 22, False: 45.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  357|     22|			GC_MAKE_PERSISTENT_LOCAL(Z_STR_P(zv));
  ------------------
  |  | 1326|     22|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 22]
  |  |  ------------------
  ------------------
  358|     22|		}
  359|  45.6k|		zend_string_release(Z_STR_P(zv));
  ------------------
  |  |  982|  45.6k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  45.6k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  360|  45.6k|	}
  361|  45.6k|}
zend_ini_parser.c:zend_ini_init_string:
  180|  38.8k|{
  181|  38.8k|	if (ZEND_SYSTEM_INI) {
  ------------------
  |  |  118|  38.8k|#define ZEND_SYSTEM_INI CG(ini_parser_unbuffered_errors)
  |  |  ------------------
  |  |  |  |   35|  38.8k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 38.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|      0|		ZVAL_EMPTY_PSTRING(result);
  ------------------
  |  |  985|      0|#define ZVAL_EMPTY_PSTRING(z) do {				\
  |  |  986|      0|		ZVAL_PSTRINGL(z, "", 0);				\
  |  |  ------------------
  |  |  |  |  976|      0|#define ZVAL_PSTRINGL(z, s, l) do {				\
  |  |  |  |  977|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 1));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  978|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (978:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  987|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (987:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  183|  38.8k|	} else {
  184|  38.8k|		ZVAL_EMPTY_STRING(result);
  ------------------
  |  |  972|  38.8k|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|  38.8k|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|  38.8k|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|  38.8k|		zval *__z = (z);							\
  |  |  |  | 1100|  38.8k|		zend_string *__s = (s);						\
  |  |  |  | 1101|  38.8k|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  38.8k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  38.8k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|  38.8k|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  38.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  38.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|  38.8k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  38.8k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|  38.8k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 38.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|  38.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 38.8k]
  |  |  ------------------
  ------------------
  185|  38.8k|	}
  186|  38.8k|	Z_EXTRA_P(result) = 0;
  ------------------
  |  |  705|  38.8k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|  38.8k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
  187|  38.8k|}
zend_ini_parser.c:normalize_value:
  385|  38.6k|{
  386|  38.6k|	if (INI_SCNG(scanner_mode) != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   66|  38.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  ------------------
              	if (INI_SCNG(scanner_mode) != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   29|  38.6k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  ------------------
  |  Branch (386:6): [True: 38.1k, False: 488]
  ------------------
  387|  38.1k|		return;
  388|  38.1k|	}
  389|       |
  390|    488|	ZEND_ASSERT(Z_EXTRA_P(zv) == 0 || Z_EXTRA_P(zv) == INI_ZVAL_IS_NUMBER);
  ------------------
  |  |  112|    488|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (390:2): [True: 488, False: 0]
  |  Branch (390:2): [True: 0, False: 0]
  |  Branch (390:2): [True: 470, False: 18]
  |  Branch (390:2): [True: 18, False: 0]
  ------------------
  391|    488|	if (Z_EXTRA_P(zv) == INI_ZVAL_IS_NUMBER && Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  705|    488|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|    488|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              	if (Z_EXTRA_P(zv) == INI_ZVAL_IS_NUMBER && Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  119|    976|#define INI_ZVAL_IS_NUMBER 1
  ------------------
              	if (Z_EXTRA_P(zv) == INI_ZVAL_IS_NUMBER && Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  669|     18|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     18|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_EXTRA_P(zv) == INI_ZVAL_IS_NUMBER && Z_TYPE_P(zv) == IS_STRING) {
  ------------------
  |  |  612|     18|#define IS_STRING					6
  ------------------
  |  Branch (391:6): [True: 18, False: 470]
  |  Branch (391:45): [True: 18, False: 0]
  ------------------
  392|     18|		zval number_rv;
  393|     18|		if (convert_to_number(&number_rv, Z_STRVAL_P(zv), Z_STRLEN_P(zv)) == SUCCESS) {
  ------------------
  |  |  985|     18|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     18|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (convert_to_number(&number_rv, Z_STRVAL_P(zv), Z_STRLEN_P(zv)) == SUCCESS) {
  ------------------
  |  |  988|     18|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     18|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (393:7): [True: 17, False: 1]
  ------------------
  394|     17|			zval_ptr_dtor(zv);
  395|     17|			ZVAL_COPY_VALUE(zv, &number_rv);
  ------------------
  |  | 1416|     17|	do {												\
  |  | 1417|     17|		zval *_z1 = (z);								\
  |  | 1418|     17|		const zval *_z2 = (v);							\
  |  | 1419|     17|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     17|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     17|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     17|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     17|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     17|	do {												\
  |  |  |  | 1408|     17|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     17|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     17|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     17|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     17|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
  396|     17|		}
  397|     18|	}
  398|    488|}
zend_ini_parser.c:convert_to_number:
  365|     18|{
  366|     18|	uint8_t type;
  367|     18|	int overflow;
  368|     18|	zend_long lval;
  369|     18|	double dval;
  370|       |
  371|     18|	if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow, NULL)) != 0) {
  ------------------
  |  Branch (371:6): [True: 18, False: 0]
  ------------------
  372|     18|		if (type == IS_LONG) {
  ------------------
  |  |  610|     18|#define IS_LONG						4
  ------------------
  |  Branch (372:7): [True: 17, False: 1]
  ------------------
  373|     17|			ZVAL_LONG(retval, lval);
  ------------------
  |  | 1076|     17|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     17|		zval *__z = (z);				\
  |  | 1078|     17|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     17|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     17|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     17|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     17|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
  374|     17|			return SUCCESS;
  375|     17|		} else if (type == IS_DOUBLE && !overflow) {
  ------------------
  |  |  611|      2|#define IS_DOUBLE					5
  ------------------
  |  Branch (375:14): [True: 1, False: 0]
  |  Branch (375:35): [True: 0, False: 1]
  ------------------
  376|      0|			ZVAL_DOUBLE(retval, dval);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  377|      0|			return SUCCESS;
  378|      0|		}
  379|     18|	}
  380|       |
  381|      1|	return FAILURE;
  382|     18|}
zend_ini_parser.c:zend_ini_add_string:
  192|   121k|{
  193|   121k|	int length, op1_len;
  194|       |
  195|   121k|	if (Z_TYPE_P(op1) != IS_STRING) {
  ------------------
  |  |  669|   121k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|   121k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != IS_STRING) {
  ------------------
  |  |  612|   121k|#define IS_STRING					6
  ------------------
  |  Branch (195:6): [True: 0, False: 121k]
  ------------------
  196|       |		/* ZEND_ASSERT(!Z_REFCOUNTED_P(op1)); */
  197|      0|		if (ZEND_SYSTEM_INI) {
  ------------------
  |  |  118|      0|#define ZEND_SYSTEM_INI CG(ini_parser_unbuffered_errors)
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|      0|			zend_string *tmp_str;
  199|      0|			zend_string *str = zval_get_tmp_string(op1, &tmp_str);
  200|      0|			ZVAL_PSTRINGL(op1, ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |  976|      0|#define ZVAL_PSTRINGL(z, s, l) do {				\
  |  |  977|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 1));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  978|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (978:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  201|      0|			zend_tmp_string_release(tmp_str);
  202|      0|		} else {
  203|      0|			ZVAL_STR(op1, zval_get_string_func(op1));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  204|      0|		}
  205|      0|	}
  206|   121k|	op1_len = (int)Z_STRLEN_P(op1);
  ------------------
  |  |  988|   121k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|   121k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|   121k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|       |
  208|   121k|	if (Z_TYPE_P(op2) != IS_STRING) {
  ------------------
  |  |  669|   121k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|   121k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op2) != IS_STRING) {
  ------------------
  |  |  612|   121k|#define IS_STRING					6
  ------------------
  |  Branch (208:6): [True: 0, False: 121k]
  ------------------
  209|      0|		convert_to_string(op2);
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  210|      0|	}
  211|   121k|	length = op1_len + (int)Z_STRLEN_P(op2);
  ------------------
  |  |  988|   121k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|   121k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|   121k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|       |
  213|   121k|	ZVAL_NEW_STR(result, zend_string_extend(Z_STR_P(op1), length, ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|   121k|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|   121k|		zval *__z = (z);						\
  |  | 1107|   121k|		zend_string *__s = (s);					\
  |  | 1108|   121k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|   121k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|   121k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|   121k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|   121k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   121k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|   121k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|   121k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|   121k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|   121k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|   121k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 121k]
  |  |  ------------------
  ------------------
  214|   121k|	memcpy(Z_STRVAL_P(result) + op1_len, Z_STRVAL_P(op2), Z_STRLEN_P(op2) + 1);
  ------------------
  |  |  985|   121k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|   121k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|   121k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	memcpy(Z_STRVAL_P(result) + op1_len, Z_STRVAL_P(op2), Z_STRLEN_P(op2) + 1);
  ------------------
  |  |  985|   121k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|   121k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|   121k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	memcpy(Z_STRVAL_P(result) + op1_len, Z_STRVAL_P(op2), Z_STRLEN_P(op2) + 1);
  ------------------
  |  |  988|   121k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|   121k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|   121k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|   121k|}
zend_ini_parser.c:zend_ini_do_op:
  139|    979|{
  140|    979|	int i_result;
  141|    979|	int i_op1, i_op2;
  142|    979|	int str_len;
  143|    979|	char str_result[MAX_LENGTH_OF_LONG+1];
  144|       |
  145|    979|	i_op1 = get_int_val(op1);
  146|    979|	i_op2 = op2 ? get_int_val(op2) : 0;
  ------------------
  |  Branch (146:10): [True: 814, False: 165]
  ------------------
  147|       |
  148|    979|	switch (type) {
  149|    142|		case '|':
  ------------------
  |  Branch (149:3): [True: 142, False: 837]
  ------------------
  150|    142|			i_result = i_op1 | i_op2;
  151|    142|			break;
  152|      1|		case '&':
  ------------------
  |  Branch (152:3): [True: 1, False: 978]
  ------------------
  153|      1|			i_result = i_op1 & i_op2;
  154|      1|			break;
  155|    671|		case '^':
  ------------------
  |  Branch (155:3): [True: 671, False: 308]
  ------------------
  156|    671|			i_result = i_op1 ^ i_op2;
  157|    671|			break;
  158|      1|		case '~':
  ------------------
  |  Branch (158:3): [True: 1, False: 978]
  ------------------
  159|      1|			i_result = ~i_op1;
  160|      1|			break;
  161|    164|		case '!':
  ------------------
  |  Branch (161:3): [True: 164, False: 815]
  ------------------
  162|    164|			i_result = !i_op1;
  163|    164|			break;
  164|      0|		default:
  ------------------
  |  Branch (164:3): [True: 0, False: 979]
  ------------------
  165|      0|			i_result = 0;
  166|      0|			break;
  167|    979|	}
  168|       |
  169|    979|	if (INI_SCNG(scanner_mode) != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   66|    979|# define INI_SCNG(v) (ini_scanner_globals.v)
  ------------------
              	if (INI_SCNG(scanner_mode) != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   29|    979|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  ------------------
  |  Branch (169:6): [True: 978, False: 1]
  ------------------
  170|    978|		str_len = sprintf(str_result, "%d", i_result);
  171|    978|		ZVAL_NEW_STR(result, zend_string_init(str_result, str_len, ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|    978|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|    978|		zval *__z = (z);						\
  |  | 1107|    978|		zend_string *__s = (s);					\
  |  | 1108|    978|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    978|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    978|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|    978|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|    978|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    978|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|    978|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    978|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    978|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    978|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|    978|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 978]
  |  |  ------------------
  ------------------
  172|    978|	} else {
  173|      1|		ZVAL_LONG(result, i_result);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  174|      1|	}
  175|    979|}
zend_ini_parser.c:get_int_val:
  121|  1.79k|static int get_int_val(zval *op) {
  122|  1.79k|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|  1.79k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.79k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  123|      0|		case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (123:3): [True: 0, False: 1.79k]
  ------------------
  124|      0|			return Z_LVAL_P(op);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  125|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (125:3): [True: 0, False: 1.79k]
  ------------------
  126|      0|			return (int)Z_DVAL_P(op);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  127|  1.79k|		case IS_STRING:
  ------------------
  |  |  612|  1.79k|#define IS_STRING					6
  ------------------
  |  Branch (127:3): [True: 1.79k, False: 0]
  ------------------
  128|  1.79k|		{
  129|  1.79k|			int val = atoi(Z_STRVAL_P(op));
  ------------------
  |  |  985|  1.79k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  1.79k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.79k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|  1.79k|			zend_string_free(Z_STR_P(op));
  ------------------
  |  |  982|  1.79k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.79k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  131|  1.79k|			return val;
  132|      0|		}
  133|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (133:3): [True: 0, False: 1.79k]
  |  Branch (133:12): [Folded, False: 0]
  |  Branch (133:12): [Folded, False: 0]
  ------------------
  134|  1.79k|	}
  135|  1.79k|}
zend_ini_parser.c:zend_ini_get_var:
  247|      1|{
  248|      1|	zval *curval;
  249|      1|	char *envvar;
  250|       |
  251|       |	/* Fetch configuration option value */
  252|      1|	if ((curval = zend_get_configuration_directive(Z_STR_P(name))) != NULL) {
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (252:6): [True: 0, False: 1]
  ------------------
  253|      0|		ZVAL_NEW_STR(result, zend_string_init(Z_STRVAL_P(curval), Z_STRLEN_P(curval), ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|       |	/* ..or if not found, try ENV */
  255|      1|	} else if ((envvar = zend_getenv(Z_STRVAL_P(name), Z_STRLEN_P(name))) != NULL) {
  ------------------
  |  |  985|      1|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      1|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	} else if ((envvar = zend_getenv(Z_STRVAL_P(name), Z_STRLEN_P(name))) != NULL) {
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (255:13): [True: 0, False: 1]
  ------------------
  256|      0|		ZVAL_NEW_STR(result, zend_string_init(envvar, strlen(envvar), ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  257|      0|		efree(envvar);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|      1|	} else if ((envvar = getenv(Z_STRVAL_P(name))) != NULL) {
  ------------------
  |  |  985|      1|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      1|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (258:13): [True: 0, False: 1]
  ------------------
  259|      0|		ZVAL_NEW_STR(result, zend_string_init(envvar, strlen(envvar), ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  260|       |	/* ..or if not defined, try fallback value */
  261|      1|	} else if (fallback) {
  ------------------
  |  Branch (261:13): [True: 0, False: 1]
  ------------------
  262|      0|		ZVAL_NEW_STR(result, zend_string_init(Z_STRVAL_P(fallback), strlen(Z_STRVAL_P(fallback)), ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  263|      1|	} else {
  264|      1|		zend_ini_init_string(result);
  265|      1|	}
  266|       |
  267|      1|}
zend_ini_parser.c:zend_ini_get_constant:
  220|  18.4k|{
  221|  18.4k|	zval *c, tmp;
  222|       |
  223|       |	/* If name contains ':' it is not a constant. Bug #26893. */
  224|  18.4k|	if (!memchr(Z_STRVAL_P(name), ':', Z_STRLEN_P(name))
  ------------------
  |  |  985|  18.4k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  18.4k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  18.4k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!memchr(Z_STRVAL_P(name), ':', Z_STRLEN_P(name))
  ------------------
  |  |  988|  18.4k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  18.4k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  18.4k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (224:6): [True: 18.4k, False: 0]
  ------------------
  225|  18.4k|		   	&& (c = zend_get_constant(Z_STR_P(name))) != 0) {
  ------------------
  |  |  982|  18.4k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  18.4k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (225:10): [True: 0, False: 18.4k]
  ------------------
  226|      0|		if (Z_TYPE_P(c) != IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(c) != IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (226:7): [True: 0, False: 0]
  ------------------
  227|      0|			ZVAL_COPY_OR_DUP(&tmp, c);
  ------------------
  |  | 1457|      0|	do {																\
  |  | 1458|      0|		zval *_z1 = (z);												\
  |  | 1459|      0|		const zval *_z2 = (v);											\
  |  | 1460|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  228|      0|			if (Z_OPT_CONSTANT(tmp)) {
  ------------------
  |  |  951|      0|#define Z_OPT_CONSTANT(zval)		(Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  948|      0|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|      0|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define Z_OPT_CONSTANT(zval)		(Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  |  |  |  Branch (951:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  229|      0|				zval_update_constant_ex(&tmp, NULL);
  230|      0|			}
  231|      0|			convert_to_string(&tmp);
  ------------------
  |  |  390|      0|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  232|      0|			c = &tmp;
  233|      0|		}
  234|      0|		ZVAL_NEW_STR(result, zend_string_init(Z_STRVAL_P(c), Z_STRLEN_P(c), ZEND_SYSTEM_INI));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  235|      0|		if (c == &tmp) {
  ------------------
  |  Branch (235:7): [True: 0, False: 0]
  ------------------
  236|      0|			zend_string_release(Z_STR(tmp));
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  237|      0|		}
  238|      0|		zend_string_free(Z_STR_P(name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  239|  18.4k|	} else {
  240|  18.4k|		*result = *name;
  241|  18.4k|	}
  242|  18.4k|}
zend_ini_parser.c:yysyntax_error:
 1308|  5.46k|{
 1309|  5.46k|  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
 1310|       |  /* Internationalized format string. */
 1311|  5.46k|  const char *yyformat = YY_NULLPTR;
  ------------------
  |  |  420|  5.46k|#   define YY_NULLPTR ((void*)0)
  ------------------
 1312|       |  /* Arguments of yyformat: reported tokens (one for the "unexpected",
 1313|       |     one per "expected"). */
 1314|  5.46k|  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 1315|       |  /* Actual size of YYARG. */
 1316|  5.46k|  int yycount = 0;
 1317|       |  /* Cumulated lengths of YYARG.  */
 1318|  5.46k|  YYPTRDIFF_T yysize = 0;
  ------------------
  |  |  553|  5.46k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1319|       |
 1320|       |  /* There are many possibilities here to consider:
 1321|       |     - If this state is a consistent state with a default action, then
 1322|       |       the only way this function was invoked is if the default action
 1323|       |       is an error action.  In that case, don't check for expected
 1324|       |       tokens because there are none.
 1325|       |     - The only way there can be no lookahead present (in yychar) is if
 1326|       |       this state is a consistent state with a default action.  Thus,
 1327|       |       detecting the absence of a lookahead is sufficient to determine
 1328|       |       that there is no unexpected or expected token to report.  In that
 1329|       |       case, just report a simple "syntax error".
 1330|       |     - Don't assume there isn't a lookahead just because this state is a
 1331|       |       consistent state with a default action.  There might have been a
 1332|       |       previous inconsistent state, consistent state with a non-default
 1333|       |       action, or user semantic action that manipulated yychar.
 1334|       |     - Of course, the expected token list depends on states to have
 1335|       |       correct lookahead information, and it depends on the parser not
 1336|       |       to perform extra reductions after fetching a lookahead from the
 1337|       |       scanner and before detecting a syntax error.  Thus, state merging
 1338|       |       (from LALR or IELR) and default reductions corrupt the expected
 1339|       |       token list.  However, the list is correct for canonical LR with
 1340|       |       one exception: it will still contain any token that will not be
 1341|       |       accepted due to an error action in a later state.
 1342|       |  */
 1343|  5.46k|  if (yytoken != YYEMPTY)
  ------------------
  |  | 1026|  5.46k|#define YYEMPTY         (-2)
  ------------------
  |  Branch (1343:7): [True: 5.46k, False: 0]
  ------------------
 1344|  5.46k|    {
 1345|  5.46k|      int yyn = yypact[+*yyssp];
 1346|  5.46k|      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  ------------------
  |  |  553|  5.46k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
                    YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  ------------------
  |  |  420|  5.46k|#   define YY_NULLPTR ((void*)0)
  ------------------
 1347|  5.46k|      yysize = yysize0;
 1348|  5.46k|      yyarg[yycount++] = yytname[yytoken];
 1349|  5.46k|      if (!yypact_value_is_default (yyn))
  ------------------
  |  |  896|  5.46k|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  |  893|  5.46k|#define YYPACT_NINF (-46)
  |  |  ------------------
  ------------------
  |  Branch (1349:11): [True: 5.46k, False: 0]
  ------------------
 1350|  5.46k|        {
 1351|       |          /* Start YYX at -YYN if negative to avoid negative indexes in
 1352|       |             YYCHECK.  In other words, skip the first -YYN actions for
 1353|       |             this state because they are default actions.  */
 1354|  5.46k|          int yyxbegin = yyn < 0 ? -yyn : 0;
  ------------------
  |  Branch (1354:26): [True: 1.48k, False: 3.98k]
  ------------------
 1355|       |          /* Stay within bounds of both yycheck and yytname.  */
 1356|  5.46k|          int yychecklim = YYLAST - yyn + 1;
  ------------------
  |  |  794|  5.46k|#define YYLAST   143
  ------------------
 1357|  5.46k|          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
  ------------------
  |  |  797|  5.46k|#define YYNTOKENS  45
  ------------------
                        int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
  ------------------
  |  |  797|  1.72k|#define YYNTOKENS  45
  ------------------
  |  Branch (1357:24): [True: 3.73k, False: 1.72k]
  ------------------
 1358|  5.46k|          int yyx;
 1359|       |
 1360|   109k|          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
  ------------------
  |  Branch (1360:32): [True: 106k, False: 2.87k]
  ------------------
 1361|   106k|            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
  ------------------
  |  | 1054|   124k|#define YYTERROR        1
  ------------------
  |  Branch (1361:17): [True: 18.4k, False: 87.9k]
  |  Branch (1361:46): [True: 18.4k, False: 0]
  ------------------
 1362|      0|                && !yytable_value_is_error (yytable[yyx + yyn]))
  ------------------
  |  |  901|      0|  0
  ------------------
  |  Branch (1362:20): [True: 0, Folded]
  ------------------
 1363|  18.4k|              {
 1364|  18.4k|                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
  ------------------
  |  Branch (1364:21): [True: 2.58k, False: 15.8k]
  ------------------
 1365|  2.58k|                  {
 1366|  2.58k|                    yycount = 1;
 1367|  2.58k|                    yysize = yysize0;
 1368|  2.58k|                    break;
 1369|  2.58k|                  }
 1370|  15.8k|                yyarg[yycount++] = yytname[yyx];
 1371|  15.8k|                {
 1372|  15.8k|                  YYPTRDIFF_T yysize1
  ------------------
  |  |  553|  15.8k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1373|  15.8k|                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
  ------------------
  |  |  420|  15.8k|#   define YY_NULLPTR ((void*)0)
  ------------------
 1374|  15.8k|                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
  ------------------
  |  |  705|  15.8k|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  581|  15.8k|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|  31.7k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (408:40): [True: 15.8k, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1374:23): [True: 15.8k, False: 0]
  |  Branch (1374:44): [True: 15.8k, False: 0]
  ------------------
 1375|  15.8k|                    yysize = yysize1;
 1376|      0|                  else
 1377|      0|                    return 2;
 1378|  15.8k|                }
 1379|  15.8k|              }
 1380|  5.46k|        }
 1381|  5.46k|    }
 1382|       |
 1383|  5.46k|  switch (yycount)
 1384|  5.46k|    {
 1385|      0|# define YYCASE_(N, S)                      \
 1386|      0|      case N:                               \
 1387|      0|        yyformat = S;                       \
 1388|      0|      break
 1389|      0|    default: /* Avoid compiler warnings. */
  ------------------
  |  Branch (1389:5): [True: 0, False: 5.46k]
  ------------------
 1390|      0|      YYCASE_(0, YY_("syntax error"));
  ------------------
  |  | 1386|      0|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (1386:7): [True: 0, False: 5.46k]
  |  |  ------------------
  |  | 1387|      0|        yyformat = S;                       \
  |  | 1388|      0|      break
  ------------------
 1391|  2.58k|      YYCASE_(1, YY_("syntax error, unexpected %s"));
  ------------------
  |  | 1386|  2.58k|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (1386:7): [True: 2.58k, False: 2.87k]
  |  |  ------------------
  |  | 1387|  2.58k|        yyformat = S;                       \
  |  | 1388|  2.58k|      break
  ------------------
 1392|  1.48k|      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
  ------------------
  |  | 1386|  1.48k|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (1386:7): [True: 1.48k, False: 3.98k]
  |  |  ------------------
  |  | 1387|  1.48k|        yyformat = S;                       \
  |  | 1388|  1.48k|      break
  ------------------
 1393|    147|      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
  ------------------
  |  | 1386|    147|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (1386:7): [True: 147, False: 5.31k]
  |  |  ------------------
  |  | 1387|    147|        yyformat = S;                       \
  |  | 1388|    147|      break
  ------------------
 1394|  1.24k|      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
  ------------------
  |  | 1386|  1.24k|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (1386:7): [True: 1.24k, False: 4.21k]
  |  |  ------------------
  |  | 1387|  1.24k|        yyformat = S;                       \
  |  | 1388|  1.24k|      break
  ------------------
 1395|  5.46k|      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
  ------------------
  |  | 1386|      0|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (1386:7): [True: 0, False: 5.46k]
  |  |  ------------------
  |  | 1387|      0|        yyformat = S;                       \
  |  | 1388|      0|      break
  ------------------
 1396|  5.46k|# undef YYCASE_
 1397|  5.46k|    }
 1398|       |
 1399|  5.46k|  {
 1400|       |    /* Don't count the "%s"s in the final size, but reserve room for
 1401|       |       the terminator.  */
 1402|  5.46k|    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
  ------------------
  |  |  553|  5.46k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
                  YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
  ------------------
  |  | 1212|  5.46k|#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
  |  |  ------------------
  |  |  |  |  408|  5.46k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
 1403|  5.46k|    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
  ------------------
  |  |  705|  5.46k|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  581|  5.46k|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|  10.9k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (408:40): [True: 5.46k, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1403:9): [True: 5.46k, False: 0]
  |  Branch (1403:30): [True: 5.46k, False: 0]
  ------------------
 1404|  5.46k|      yysize = yysize1;
 1405|      0|    else
 1406|      0|      return 2;
 1407|  5.46k|  }
 1408|       |
 1409|  5.46k|  if (*yymsg_alloc < yysize)
  ------------------
  |  Branch (1409:7): [True: 0, False: 5.46k]
  ------------------
 1410|      0|    {
 1411|      0|      *yymsg_alloc = 2 * yysize;
 1412|      0|      if (! (yysize <= *yymsg_alloc
  ------------------
  |  Branch (1412:14): [True: 0, False: 0]
  ------------------
 1413|      0|             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
  ------------------
  |  |  705|      0|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  581|      0|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (408:40): [True: 0, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1413:17): [True: 0, False: 0]
  ------------------
 1414|      0|        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
  ------------------
  |  |  705|      0|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  581|      0|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  408|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (408:40): [True: 0, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1415|      0|      return 1;
 1416|      0|    }
 1417|       |
 1418|       |  /* Avoid sprintf, as that infringes on the user's name space.
 1419|       |     Don't have undefined behavior even if the translation
 1420|       |     produced a string with the wrong number of "%s"s.  */
 1421|  5.46k|  {
 1422|  5.46k|    char *yyp = *yymsg;
 1423|  5.46k|    int yyi = 0;
 1424|   197k|    while ((*yyp = *yyformat) != '\0')
  ------------------
  |  Branch (1424:12): [True: 192k, False: 5.46k]
  ------------------
 1425|   192k|      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
  ------------------
  |  Branch (1425:11): [True: 10.9k, False: 181k]
  |  Branch (1425:26): [True: 10.9k, False: 0]
  |  Branch (1425:48): [True: 10.9k, False: 0]
  ------------------
 1426|  10.9k|        {
 1427|  10.9k|          yyp += yytnamerr (yyp, yyarg[yyi++]);
 1428|  10.9k|          yyformat += 2;
 1429|  10.9k|        }
 1430|   181k|      else
 1431|   181k|        {
 1432|   181k|          ++yyp;
 1433|   181k|          ++yyformat;
 1434|   181k|        }
 1435|  5.46k|  }
 1436|  5.46k|  return 0;
 1437|  5.46k|}
zend_ini_parser.c:yytnamerr:
 1256|  32.2k|{
 1257|  32.2k|  if (*yystr == '"')
  ------------------
  |  Branch (1257:7): [True: 8.33k, False: 23.9k]
  ------------------
 1258|  8.33k|    {
 1259|  8.33k|      YYPTRDIFF_T yyn = 0;
  ------------------
  |  |  553|  8.33k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 1260|  8.33k|      char const *yyp = yystr;
 1261|       |
 1262|  8.33k|      for (;;)
 1263|  99.9k|        switch (*++yyp)
 1264|  99.9k|          {
 1265|      0|          case '\'':
  ------------------
  |  Branch (1265:11): [True: 0, False: 99.9k]
  ------------------
 1266|      0|          case ',':
  ------------------
  |  Branch (1266:11): [True: 0, False: 99.9k]
  ------------------
 1267|      0|            goto do_not_strip_quotes;
 1268|       |
 1269|      0|          case '\\':
  ------------------
  |  Branch (1269:11): [True: 0, False: 99.9k]
  ------------------
 1270|      0|            if (*++yyp != '\\')
  ------------------
  |  Branch (1270:17): [True: 0, False: 0]
  ------------------
 1271|      0|              goto do_not_strip_quotes;
 1272|      0|            else
 1273|      0|              goto append;
 1274|       |
 1275|      0|          append:
 1276|  91.6k|          default:
  ------------------
  |  Branch (1276:11): [True: 91.6k, False: 8.33k]
  ------------------
 1277|  91.6k|            if (yyres)
  ------------------
  |  Branch (1277:17): [True: 31.5k, False: 60.0k]
  ------------------
 1278|  31.5k|              yyres[yyn] = *yyp;
 1279|  91.6k|            yyn++;
 1280|  91.6k|            break;
 1281|       |
 1282|  8.33k|          case '"':
  ------------------
  |  Branch (1282:11): [True: 8.33k, False: 91.6k]
  ------------------
 1283|  8.33k|            if (yyres)
  ------------------
  |  Branch (1283:17): [True: 2.87k, False: 5.46k]
  ------------------
 1284|  2.87k|              yyres[yyn] = '\0';
 1285|  8.33k|            return yyn;
 1286|  99.9k|          }
 1287|      0|    do_not_strip_quotes: ;
 1288|      0|    }
 1289|       |
 1290|  23.9k|  if (yyres)
  ------------------
  |  Branch (1290:7): [True: 8.09k, False: 15.8k]
  ------------------
 1291|  8.09k|    return yystpcpy (yyres, yystr) - yyres;
  ------------------
  |  | 1228|  8.09k|#   define yystpcpy stpcpy
  ------------------
 1292|  15.8k|  else
 1293|  15.8k|    return yystrlen (yystr);
  ------------------
  |  | 1212|  15.8k|#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
  |  |  ------------------
  |  |  |  |  408|  15.8k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
 1294|  23.9k|}
zend_ini_parser.c:ini_error:
  272|  5.46k|{
  273|  5.46k|	char *error_buf;
  274|  5.46k|	int error_buf_len;
  275|       |
  276|  5.46k|	const char *const currently_parsed_filename = zend_ini_scanner_get_filename();
  277|  5.46k|	if (currently_parsed_filename) {
  ------------------
  |  Branch (277:6): [True: 5.46k, False: 0]
  ------------------
  278|  5.46k|		error_buf_len = 128 + (int)strlen(msg) + (int)strlen(currently_parsed_filename); /* should be more than enough */
  279|  5.46k|		error_buf = (char *) emalloc(error_buf_len);
  ------------------
  |  |  150|  5.46k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  5.46k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  5.46k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  5.46k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  5.46k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|       |
  281|  5.46k|		sprintf(error_buf, "%s in %s on line %" PRIu32 "\n", msg, currently_parsed_filename, zend_ini_scanner_get_lineno());
  282|  5.46k|	} else {
  283|      0|		error_buf = estrdup("Invalid configuration directive\n");
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|      0|	}
  285|       |
  286|  5.46k|	if (CG(ini_parser_unbuffered_errors)) {
  ------------------
  |  |   35|  5.46k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 5.46k]
  |  |  ------------------
  ------------------
  287|       |#ifdef ZEND_WIN32
  288|       |		syslog(LOG_ALERT, "PHP: %s (%s)", error_buf, GetCommandLine());
  289|       |#endif
  290|      0|		fprintf(stderr, "PHP:  %s", error_buf);
  291|  5.46k|	} else {
  292|  5.46k|		zend_error(E_WARNING, "%s", error_buf);
  ------------------
  |  |   23|  5.46k|#define E_WARNING			(1<<1L)
  ------------------
  293|  5.46k|	}
  294|       |	efree(error_buf);
  ------------------
  |  |  154|  5.46k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  5.46k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  5.46k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  5.46k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  5.46k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  295|  5.46k|}
zend_ini_parser.c:yydestruct:
 1446|  28.4k|{
 1447|  28.4k|  YYUSE (yyvaluep);
  ------------------
  |  |  624|  28.4k|# define YYUSE(E) ((void) (E))
  ------------------
 1448|  28.4k|  if (!yymsg)
  ------------------
  |  Branch (1448:7): [True: 0, False: 28.4k]
  ------------------
 1449|      0|    yymsg = "Deleting";
 1450|  28.4k|  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 1451|       |
 1452|  28.4k|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 1453|  28.4k|  switch (yytype)
 1454|  28.4k|    {
 1455|      0|    case 4: /* TC_RAW  */
  ------------------
  |  Branch (1455:5): [True: 0, False: 28.4k]
  ------------------
 1456|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1457|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1458|      0|#line 1459 "/src/php-src/Zend/zend_ini_parser.c"
 1459|      0|        break;
 1460|       |
 1461|      0|    case 5: /* TC_CONSTANT  */
  ------------------
  |  Branch (1461:5): [True: 0, False: 28.4k]
  ------------------
 1462|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1463|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1464|      0|#line 1465 "/src/php-src/Zend/zend_ini_parser.c"
 1465|      0|        break;
 1466|       |
 1467|      0|    case 6: /* TC_NUMBER  */
  ------------------
  |  Branch (1467:5): [True: 0, False: 28.4k]
  ------------------
 1468|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1469|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1470|      0|#line 1471 "/src/php-src/Zend/zend_ini_parser.c"
 1471|      0|        break;
 1472|       |
 1473|      2|    case 7: /* TC_STRING  */
  ------------------
  |  Branch (1473:5): [True: 2, False: 28.4k]
  ------------------
 1474|      2|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1475|      2|            { zval_ini_dtor(&(*yyvaluep)); }
 1476|      2|#line 1477 "/src/php-src/Zend/zend_ini_parser.c"
 1477|      2|        break;
 1478|       |
 1479|      0|    case 8: /* TC_WHITESPACE  */
  ------------------
  |  Branch (1479:5): [True: 0, False: 28.4k]
  ------------------
 1480|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1481|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1482|      0|#line 1483 "/src/php-src/Zend/zend_ini_parser.c"
 1483|      0|        break;
 1484|       |
 1485|  1.21k|    case 9: /* TC_LABEL  */
  ------------------
  |  Branch (1485:5): [True: 1.21k, False: 27.2k]
  ------------------
 1486|  1.21k|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1487|  1.21k|            { zval_ini_dtor(&(*yyvaluep)); }
 1488|  1.21k|#line 1489 "/src/php-src/Zend/zend_ini_parser.c"
 1489|  1.21k|        break;
 1490|       |
 1491|    939|    case 10: /* TC_OFFSET  */
  ------------------
  |  Branch (1491:5): [True: 939, False: 27.4k]
  ------------------
 1492|    939|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1493|    939|            { zval_ini_dtor(&(*yyvaluep)); }
 1494|    939|#line 1495 "/src/php-src/Zend/zend_ini_parser.c"
 1495|    939|        break;
 1496|       |
 1497|    151|    case 12: /* TC_VARNAME  */
  ------------------
  |  Branch (1497:5): [True: 151, False: 28.2k]
  ------------------
 1498|    151|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1499|    151|            { zval_ini_dtor(&(*yyvaluep)); }
 1500|    151|#line 1501 "/src/php-src/Zend/zend_ini_parser.c"
 1501|    151|        break;
 1502|       |
 1503|      2|    case 15: /* BOOL_TRUE  */
  ------------------
  |  Branch (1503:5): [True: 2, False: 28.4k]
  ------------------
 1504|      2|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1505|      2|            { zval_ini_dtor(&(*yyvaluep)); }
 1506|      2|#line 1507 "/src/php-src/Zend/zend_ini_parser.c"
 1507|      2|        break;
 1508|       |
 1509|      2|    case 16: /* BOOL_FALSE  */
  ------------------
  |  Branch (1509:5): [True: 2, False: 28.4k]
  ------------------
 1510|      2|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1511|      2|            { zval_ini_dtor(&(*yyvaluep)); }
 1512|      2|#line 1513 "/src/php-src/Zend/zend_ini_parser.c"
 1513|      2|        break;
 1514|       |
 1515|      1|    case 17: /* NULL_NULL  */
  ------------------
  |  Branch (1515:5): [True: 1, False: 28.4k]
  ------------------
 1516|      1|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1517|      1|            { zval_ini_dtor(&(*yyvaluep)); }
 1518|      1|#line 1519 "/src/php-src/Zend/zend_ini_parser.c"
 1519|      1|        break;
 1520|       |
 1521|    711|    case 48: /* section_string_or_value  */
  ------------------
  |  Branch (1521:5): [True: 711, False: 27.7k]
  ------------------
 1522|    711|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1523|    711|            { zval_ini_dtor(&(*yyvaluep)); }
 1524|    711|#line 1525 "/src/php-src/Zend/zend_ini_parser.c"
 1525|    711|        break;
 1526|       |
 1527|      0|    case 49: /* string_or_value  */
  ------------------
  |  Branch (1527:5): [True: 0, False: 28.4k]
  ------------------
 1528|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1529|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1530|      0|#line 1531 "/src/php-src/Zend/zend_ini_parser.c"
 1531|      0|        break;
 1532|       |
 1533|    766|    case 50: /* option_offset  */
  ------------------
  |  Branch (1533:5): [True: 766, False: 27.6k]
  ------------------
 1534|    766|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1535|    766|            { zval_ini_dtor(&(*yyvaluep)); }
 1536|    766|#line 1537 "/src/php-src/Zend/zend_ini_parser.c"
 1537|    766|        break;
 1538|       |
 1539|  1.24k|    case 51: /* encapsed_list  */
  ------------------
  |  Branch (1539:5): [True: 1.24k, False: 27.1k]
  ------------------
 1540|  1.24k|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1541|  1.24k|            { zval_ini_dtor(&(*yyvaluep)); }
 1542|  1.24k|#line 1543 "/src/php-src/Zend/zend_ini_parser.c"
 1543|  1.24k|        break;
 1544|       |
 1545|      2|    case 52: /* var_string_list_section  */
  ------------------
  |  Branch (1545:5): [True: 2, False: 28.4k]
  ------------------
 1546|      2|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1547|      2|            { zval_ini_dtor(&(*yyvaluep)); }
 1548|      2|#line 1549 "/src/php-src/Zend/zend_ini_parser.c"
 1549|      2|        break;
 1550|       |
 1551|  1.29k|    case 53: /* var_string_list  */
  ------------------
  |  Branch (1551:5): [True: 1.29k, False: 27.1k]
  ------------------
 1552|  1.29k|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1553|  1.29k|            { zval_ini_dtor(&(*yyvaluep)); }
 1554|  1.29k|#line 1555 "/src/php-src/Zend/zend_ini_parser.c"
 1555|  1.29k|        break;
 1556|       |
 1557|      1|    case 54: /* expr  */
  ------------------
  |  Branch (1557:5): [True: 1, False: 28.4k]
  ------------------
 1558|      1|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1559|      1|            { zval_ini_dtor(&(*yyvaluep)); }
 1560|      1|#line 1561 "/src/php-src/Zend/zend_ini_parser.c"
 1561|      1|        break;
 1562|       |
 1563|      0|    case 55: /* cfg_var_ref  */
  ------------------
  |  Branch (1563:5): [True: 0, False: 28.4k]
  ------------------
 1564|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1565|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1566|      0|#line 1567 "/src/php-src/Zend/zend_ini_parser.c"
 1567|      0|        break;
 1568|       |
 1569|      3|    case 56: /* fallback  */
  ------------------
  |  Branch (1569:5): [True: 3, False: 28.4k]
  ------------------
 1570|      3|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1571|      3|            { zval_ini_dtor(&(*yyvaluep)); }
 1572|      3|#line 1573 "/src/php-src/Zend/zend_ini_parser.c"
 1573|      3|        break;
 1574|       |
 1575|      0|    case 57: /* constant_literal  */
  ------------------
  |  Branch (1575:5): [True: 0, False: 28.4k]
  ------------------
 1576|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1577|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1578|      0|#line 1579 "/src/php-src/Zend/zend_ini_parser.c"
 1579|      0|        break;
 1580|       |
 1581|      0|    case 58: /* constant_string  */
  ------------------
  |  Branch (1581:5): [True: 0, False: 28.4k]
  ------------------
 1582|      0|#line 355 "/src/php-src/Zend/zend_ini_parser.y"
 1583|      0|            { zval_ini_dtor(&(*yyvaluep)); }
 1584|      0|#line 1585 "/src/php-src/Zend/zend_ini_parser.c"
 1585|      0|        break;
 1586|       |
 1587|  22.0k|      default:
  ------------------
  |  Branch (1587:7): [True: 22.0k, False: 6.33k]
  ------------------
 1588|  22.0k|        break;
 1589|  28.4k|    }
 1590|  28.4k|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 1591|  28.4k|}

shutdown_ini_scanner:
  226|  9.38k|{
  227|  9.38k|	zend_stack_destroy(&SCNG(state_stack));
  ------------------
  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  228|  9.38k|	if (ini_filename) {
  ------------------
  |  |  196|  9.38k|#define ini_filename SCNG(filename)
  |  |  ------------------
  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (66:22): [True: 0, False: 9.38k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|      0|		zend_string_release(ini_filename);
  ------------------
  |  |  196|      0|#define ini_filename SCNG(filename)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  230|      0|	}
  231|  9.38k|}
zend_ini_scanner_get_lineno:
  236|  5.46k|{
  237|  5.46k|	return SCNG(lineno);
  ------------------
  |  |  106|  5.46k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  5.46k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  238|  5.46k|}
zend_ini_scanner_get_filename:
  243|  5.46k|{
  244|  5.46k|	return ini_filename ? ZSTR_VAL(ini_filename) : "Unknown";
  ------------------
  |  |  196|  5.46k|#define ini_filename SCNG(filename)
  |  |  ------------------
  |  |  |  |  106|  5.46k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  5.46k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (66:22): [True: 0, False: 5.46k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	return ini_filename ? ZSTR_VAL(ini_filename) : "Unknown";
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  245|  5.46k|}
zend_ini_open_file_for_scanning:
  250|      2|{
  251|      2|	char *buf;
  252|      2|	size_t size;
  253|       |
  254|      2|	if (zend_stream_fixup(fh, &buf, &size) == FAILURE) {
  ------------------
  |  Branch (254:6): [True: 1, False: 1]
  ------------------
  255|      1|		return FAILURE;
  256|      1|	}
  257|       |
  258|      1|	if (init_ini_scanner(scanner_mode, fh) == FAILURE) {
  ------------------
  |  Branch (258:6): [True: 1, False: 0]
  ------------------
  259|      1|		return FAILURE;
  260|      1|	}
  261|       |
  262|      0|	yy_scan_buffer(buf, (unsigned int)size);
  263|       |
  264|      0|	return SUCCESS;
  265|      1|}
zend_ini_prepare_string_for_scanning:
  270|  9.38k|{
  271|  9.38k|	int len = (int)strlen(str);
  272|       |
  273|  9.38k|	if (init_ini_scanner(scanner_mode, NULL) == FAILURE) {
  ------------------
  |  Branch (273:6): [True: 0, False: 9.38k]
  ------------------
  274|      0|		return FAILURE;
  275|      0|	}
  276|       |
  277|  9.38k|	yy_scan_buffer(str, len);
  278|       |
  279|  9.38k|	return SUCCESS;
  280|  9.38k|}
ini_lex:
  333|   384k|{
  334|   403k|restart:
  335|   403k|	SCNG(yy_text) = YYCURSOR;
  ------------------
  |  |  106|   403k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|   403k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
              	SCNG(yy_text) = YYCURSOR;
  ------------------
  |  |   47|   403k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   403k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   403k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  336|       |
  337|       |/* yymore_restart: */
  338|       |	/* detect EOF */
  339|   403k|	if (YYCURSOR >= YYLIMIT) {
  ------------------
  |  |   47|   403k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   403k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   403k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR >= YYLIMIT) {
  ------------------
  |  |   48|   403k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|   403k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   403k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (339:6): [True: 5.73k, False: 397k]
  ------------------
  340|  5.73k|		if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
  ------------------
  |  |   58|  5.73k|#define YYSTATE      YYGETCONDITION()
  |  |  ------------------
  |  |  |  |   51|  5.73k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  5.73k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  5.73k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
  ------------------
  |  |   54|  5.73k|#define STATE(name)  yyc##name
  ------------------
              		if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
  ------------------
  |  |   58|  4.28k|#define YYSTATE      YYGETCONDITION()
  |  |  ------------------
  |  |  |  |   51|  4.28k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.28k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.28k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
  ------------------
  |  |   54|  4.28k|#define STATE(name)  yyc##name
  ------------------
  |  Branch (340:7): [True: 1.44k, False: 4.28k]
  |  Branch (340:37): [True: 0, False: 4.28k]
  ------------------
  341|  1.44k|			BEGIN(INITIAL);
  ------------------
  |  |   57|  1.44k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  1.44k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.44k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.44k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|  1.44k|			return END_OF_LINE;
  343|  1.44k|		}
  344|  4.28k|		return 0;
  345|  5.73k|	}
  346|       |
  347|       |	/* Eat any UTF-8 BOM we find in the first 3 bytes */
  348|   397k|	if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
  ------------------
  |  |   47|   397k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   397k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   397k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
  ------------------
  |  |  106|   397k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|   795k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
              	if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
  ------------------
  |  |   47|  9.18k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  9.18k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.18k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
  ------------------
  |  |   48|  9.18k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|  9.18k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.18k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (348:6): [True: 9.18k, False: 388k]
  |  Branch (348:36): [True: 8.87k, False: 308]
  ------------------
  349|  8.87k|		if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
  ------------------
  |  |   47|  8.87k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  8.87k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  8.87k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (349:7): [True: 1.13k, False: 7.74k]
  ------------------
  350|  1.13k|			YYCURSOR += 3;
  ------------------
  |  |   47|  1.13k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|  1.13k|			goto restart;
  352|  1.13k|		}
  353|  8.87k|	}
  354|       |
  355|   396k|#line 356 "Zend/zend_ini_scanner.c"
  356|   396k|{
  357|   396k|	YYCTYPE yych;
  ------------------
  |  |   43|   396k|#define YYCTYPE   unsigned char
  ------------------
  358|   396k|	unsigned int yyaccept = 0;
  359|   396k|	if (YYGETCONDITION() < 4) {
  ------------------
  |  |   51|   396k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|   396k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   396k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (359:6): [True: 329k, False: 67.5k]
  ------------------
  360|   329k|		if (YYGETCONDITION() < 2) {
  ------------------
  |  |   51|   329k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|   329k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   329k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (360:7): [True: 154k, False: 174k]
  ------------------
  361|   154k|			if (YYGETCONDITION() < 1) {
  ------------------
  |  |   51|   154k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|   154k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   154k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (361:8): [True: 146k, False: 7.74k]
  ------------------
  362|   146k|				goto yyc_INITIAL;
  363|   146k|			} else {
  364|  7.74k|				goto yyc_ST_OFFSET;
  365|  7.74k|			}
  366|   174k|		} else {
  367|   174k|			if (YYGETCONDITION() < 3) {
  ------------------
  |  |   51|   174k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|   174k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   174k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (367:8): [True: 9.55k, False: 165k]
  ------------------
  368|  9.55k|				goto yyc_ST_SECTION_VALUE;
  369|   165k|			} else {
  370|   165k|				goto yyc_ST_VALUE;
  371|   165k|			}
  372|   174k|		}
  373|   329k|	} else {
  374|  67.5k|		if (YYGETCONDITION() < 6) {
  ------------------
  |  |   51|  67.5k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|  67.5k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  67.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (374:7): [True: 67.2k, False: 316]
  ------------------
  375|  67.2k|			if (YYGETCONDITION() < 5) {
  ------------------
  |  |   51|  67.2k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|  67.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  67.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:8): [True: 4, False: 67.2k]
  ------------------
  376|      4|				goto yyc_ST_SECTION_RAW;
  377|  67.2k|			} else {
  378|  67.2k|				goto yyc_ST_DOUBLE_QUOTES;
  379|  67.2k|			}
  380|  67.2k|		} else {
  381|    316|			if (YYGETCONDITION() < 7) {
  ------------------
  |  |   51|    316|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|    316|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    316|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (381:8): [True: 10, False: 306]
  ------------------
  382|     10|				goto yyc_ST_VAR_FALLBACK;
  383|    306|			} else {
  384|    306|				if (YYGETCONDITION() < 8) {
  ------------------
  |  |   51|    306|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|    306|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    306|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (384:9): [True: 304, False: 2]
  ------------------
  385|    304|					goto yyc_ST_VARNAME;
  386|    304|				} else {
  387|      2|					goto yyc_ST_RAW;
  388|      2|				}
  389|    306|			}
  390|    316|		}
  391|  67.5k|	}
  392|       |/* *********************************** */
  393|   146k|yyc_INITIAL:
  394|   146k|	{
  395|   146k|		static const unsigned char yybm[] = {
  396|   146k|			128, 144, 144, 144, 144, 144, 144, 144, 
  397|   146k|			144, 160,   0, 144, 144,   0, 144, 144, 
  398|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  399|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  400|   146k|			240, 128, 128, 144, 128, 144, 128, 144, 
  401|   146k|			128, 128, 144, 144, 144, 144, 144, 144, 
  402|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  403|   146k|			144, 144, 144, 128, 144, 128, 144, 144, 
  404|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  405|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  406|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  407|   146k|			144, 144, 144, 128, 144, 128, 128, 144, 
  408|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  409|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  410|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  411|   146k|			144, 144, 144, 128, 128, 128, 128, 144, 
  412|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  413|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  414|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  415|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  416|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  417|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  418|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  419|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  420|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  421|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  422|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  423|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  424|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  425|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  426|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  427|   146k|			144, 144, 144, 144, 144, 144, 144, 144, 
  428|   146k|		};
  429|   146k|		YYDEBUG(1, *YYCURSOR);
  430|   146k|		YYFILL(5);
  ------------------
  |  |   46|   146k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   146k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   146k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   146k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   146k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   146k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   146k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 146k]
  |  |  ------------------
  ------------------
  431|   146k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   146k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   146k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   146k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  432|   146k|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (432:7): [True: 1.90k, False: 144k]
  ------------------
  433|  1.90k|			goto yy14;
  434|  1.90k|		}
  435|   144k|		if (yych <= 'M') {
  ------------------
  |  Branch (435:7): [True: 97.9k, False: 46.9k]
  ------------------
  436|  97.9k|			if (yych <= '$') {
  ------------------
  |  Branch (436:8): [True: 36.4k, False: 61.4k]
  ------------------
  437|  36.4k|				if (yych <= '\f') {
  ------------------
  |  Branch (437:9): [True: 25.6k, False: 10.8k]
  ------------------
  438|  25.6k|					if (yych <= 0x08) {
  ------------------
  |  Branch (438:10): [True: 7, False: 25.6k]
  ------------------
  439|      7|						if (yych >= 0x01) goto yy5;
  ------------------
  |  Branch (439:11): [True: 7, False: 0]
  ------------------
  440|  25.6k|					} else {
  441|  25.6k|						if (yych <= '\t') goto yy8;
  ------------------
  |  Branch (441:11): [True: 17.8k, False: 7.77k]
  ------------------
  442|  7.77k|						if (yych <= '\n') goto yy11;
  ------------------
  |  Branch (442:11): [True: 7.77k, False: 0]
  ------------------
  443|      0|						goto yy5;
  444|  7.77k|					}
  445|  25.6k|				} else {
  446|  10.8k|					if (yych <= 0x1F) {
  ------------------
  |  Branch (446:10): [True: 10.4k, False: 390]
  ------------------
  447|  10.4k|						if (yych <= '\r') goto yy13;
  ------------------
  |  Branch (447:11): [True: 5.05k, False: 5.39k]
  ------------------
  448|  5.39k|						goto yy5;
  449|  10.4k|					} else {
  450|    390|						if (yych == '#') goto yy5;
  ------------------
  |  Branch (450:11): [True: 0, False: 390]
  ------------------
  451|    390|						goto yy16;
  452|    390|					}
  453|  10.8k|				}
  454|  61.4k|			} else {
  455|  61.4k|				if (yych <= ':') {
  ------------------
  |  Branch (455:9): [True: 19.0k, False: 42.3k]
  ------------------
  456|  19.0k|					if (yych <= '&') {
  ------------------
  |  Branch (456:10): [True: 99, False: 18.9k]
  ------------------
  457|     99|						if (yych <= '%') goto yy5;
  ------------------
  |  Branch (457:11): [True: 99, False: 0]
  ------------------
  458|      0|						goto yy16;
  459|  18.9k|					} else {
  460|  18.9k|						if (yych <= '\'') goto yy5;
  ------------------
  |  Branch (460:11): [True: 99, False: 18.8k]
  ------------------
  461|  18.8k|						if (yych <= ')') goto yy16;
  ------------------
  |  Branch (461:11): [True: 568, False: 18.2k]
  ------------------
  462|  18.2k|						goto yy5;
  463|  18.8k|					}
  464|  42.3k|				} else {
  465|  42.3k|					if (yych <= '=') {
  ------------------
  |  Branch (465:10): [True: 42.1k, False: 249]
  ------------------
  466|  42.1k|						if (yych <= ';') goto yy18;
  ------------------
  |  Branch (466:11): [True: 850, False: 41.2k]
  ------------------
  467|  41.2k|						if (yych <= '<') goto yy5;
  ------------------
  |  Branch (467:11): [True: 82, False: 41.2k]
  ------------------
  468|  41.2k|						goto yy20;
  469|  41.2k|					} else {
  470|    249|						if (yych == 'F') goto yy23;
  ------------------
  |  Branch (470:11): [True: 0, False: 249]
  ------------------
  471|    249|						goto yy5;
  472|    249|					}
  473|  42.3k|				}
  474|  61.4k|			}
  475|  97.9k|		} else {
  476|  46.9k|			if (yych <= 'e') {
  ------------------
  |  Branch (476:8): [True: 9.35k, False: 37.5k]
  ------------------
  477|  9.35k|				if (yych <= 'X') {
  ------------------
  |  Branch (477:9): [True: 529, False: 8.82k]
  ------------------
  478|    529|					if (yych <= 'O') {
  ------------------
  |  Branch (478:10): [True: 429, False: 100]
  ------------------
  479|    429|						if (yych <= 'N') goto yy24;
  ------------------
  |  Branch (479:11): [True: 287, False: 142]
  ------------------
  480|    142|						goto yy25;
  481|    429|					} else {
  482|    100|						if (yych == 'T') goto yy26;
  ------------------
  |  Branch (482:11): [True: 0, False: 100]
  ------------------
  483|    100|						goto yy5;
  484|    100|					}
  485|  8.82k|				} else {
  486|  8.82k|					if (yych <= '[') {
  ------------------
  |  Branch (486:10): [True: 4.84k, False: 3.97k]
  ------------------
  487|  4.84k|						if (yych <= 'Y') goto yy27;
  ------------------
  |  Branch (487:11): [True: 90, False: 4.75k]
  ------------------
  488|  4.75k|						if (yych <= 'Z') goto yy5;
  ------------------
  |  Branch (488:11): [True: 0, False: 4.75k]
  ------------------
  489|  4.75k|						goto yy28;
  490|  4.75k|					} else {
  491|  3.97k|						if (yych <= '\\') goto yy5;
  ------------------
  |  Branch (491:11): [True: 225, False: 3.75k]
  ------------------
  492|  3.75k|						if (yych <= '^') goto yy16;
  ------------------
  |  Branch (492:11): [True: 76, False: 3.67k]
  ------------------
  493|  3.67k|						goto yy5;
  494|  3.75k|					}
  495|  8.82k|				}
  496|  37.5k|			} else {
  497|  37.5k|				if (yych <= 's') {
  ------------------
  |  Branch (497:9): [True: 6.72k, False: 30.8k]
  ------------------
  498|  6.72k|					if (yych <= 'm') {
  ------------------
  |  Branch (498:10): [True: 3.61k, False: 3.10k]
  ------------------
  499|  3.61k|						if (yych <= 'f') goto yy23;
  ------------------
  |  Branch (499:11): [True: 179, False: 3.43k]
  ------------------
  500|  3.43k|						goto yy5;
  501|  3.61k|					} else {
  502|  3.10k|						if (yych <= 'n') goto yy24;
  ------------------
  |  Branch (502:11): [True: 169, False: 2.93k]
  ------------------
  503|  2.93k|						if (yych <= 'o') goto yy25;
  ------------------
  |  Branch (503:11): [True: 4, False: 2.93k]
  ------------------
  504|  2.93k|						goto yy5;
  505|  2.93k|					}
  506|  30.8k|				} else {
  507|  30.8k|					if (yych <= 'y') {
  ------------------
  |  Branch (507:10): [True: 3.40k, False: 27.4k]
  ------------------
  508|  3.40k|						if (yych <= 't') goto yy26;
  ------------------
  |  Branch (508:11): [True: 0, False: 3.40k]
  ------------------
  509|  3.40k|						if (yych <= 'x') goto yy5;
  ------------------
  |  Branch (509:11): [True: 3.40k, False: 5]
  ------------------
  510|      5|						goto yy27;
  511|  27.4k|					} else {
  512|  27.4k|						if (yych <= 'z') goto yy5;
  ------------------
  |  Branch (512:11): [True: 0, False: 27.4k]
  ------------------
  513|  27.4k|						if (yych <= '~') goto yy16;
  ------------------
  |  Branch (513:11): [True: 83, False: 27.3k]
  ------------------
  514|  27.3k|						goto yy5;
  515|  27.4k|					}
  516|  30.8k|				}
  517|  37.5k|			}
  518|  46.9k|		}
  519|      0|		YYDEBUG(3, *YYCURSOR);
  520|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      0|		YYDEBUG(4, *YYCURSOR);
  522|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  523|      0|#line 685 "Zend/zend_ini_scanner.l"
  524|      0|		{
  525|      0|	return 0;
  526|   144k|}
  527|      0|#line 528 "Zend/zend_ini_scanner.c"
  528|   509k|yy5:
  529|   509k|		YYDEBUG(5, *YYCURSOR);
  530|   509k|		++YYCURSOR;
  ------------------
  |  |   47|   509k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   509k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   509k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  531|   509k|		YYFILL(1);
  ------------------
  |  |   46|   509k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   509k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   509k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   509k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   509k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   509k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   509k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 509k]
  |  |  ------------------
  ------------------
  532|   509k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   509k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   509k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   509k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  533|   510k|yy6:
  534|   510k|		YYDEBUG(6, *YYCURSOR);
  535|   510k|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (535:7): [True: 442k, False: 67.8k]
  ------------------
  536|   442k|			goto yy5;
  537|   442k|		}
  538|  67.8k|		if (yych <= '=') goto yy7;
  ------------------
  |  Branch (538:7): [True: 66.6k, False: 1.15k]
  ------------------
  539|  1.15k|		if (yych <= '[') goto yy30;
  ------------------
  |  Branch (539:7): [True: 994, False: 159]
  ------------------
  540|  66.9k|yy7:
  541|  66.9k|		YYDEBUG(7, *YYCURSOR);
  542|  66.9k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  66.9k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  66.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  66.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  66.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  66.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  66.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  66.9k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  66.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  543|  66.9k|#line 502 "Zend/zend_ini_scanner.l"
  544|  66.9k|		{ /* Get option name */
  545|       |	/* Eat leading whitespace */
  546|  66.9k|	EAT_LEADING_WHITESPACE();
  ------------------
  |  |  118|  69.3k|	while (yyleng) {                                 \
  |  |  119|  69.3k|		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|  69.3k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  69.3k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  69.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|  66.8k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  66.8k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  66.8k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (119:7): [True: 2.49k, False: 66.8k]
  |  |  |  Branch (119:27): [True: 0, False: 66.8k]
  |  |  ------------------
  |  |  120|  2.49k|			SCNG(yy_text)++;                         \
  |  |  ------------------
  |  |  |  |  106|  2.49k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.49k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|  2.49k|			yyleng--;                                \
  |  |  ------------------
  |  |  |  |   60|  2.49k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.49k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.49k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  122|  66.8k|		} else {                                     \
  |  |  123|  66.8k|			break;                                   \
  |  |  124|  66.8k|		}                                            \
  |  |  125|  69.3k|	}
  ------------------
  547|       |
  548|       |	/* Eat trailing whitespace */
  549|  66.9k|	EAT_TRAILING_WHITESPACE();
  ------------------
  |  |  140|  66.9k|#define EAT_TRAILING_WHITESPACE()	EAT_TRAILING_WHITESPACE_EX('X')
  |  |  ------------------
  |  |  |  |  129|  77.6k|	while (yyleng && (                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  77.6k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.6k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|   155k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (66:22): [True: 77.5k, False: 115]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|  77.5k|		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:4): [Folded, False: 77.5k]
  |  |  |  |  |  Branch (130:17): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|  77.5k|		yytext[yyleng - 1] == '\n' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|  77.5k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\n' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  77.5k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (131:3): [True: 0, False: 77.5k]
  |  |  |  |  ------------------
  |  |  |  |  132|  77.5k|		yytext[yyleng - 1] == '\r' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|  77.5k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\r' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  77.5k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (132:3): [True: 0, False: 77.5k]
  |  |  |  |  ------------------
  |  |  |  |  133|  77.5k|		yytext[yyleng - 1] == '\t' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|  77.5k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\t' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  77.5k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:3): [True: 0, False: 77.5k]
  |  |  |  |  ------------------
  |  |  |  |  134|  77.5k|		yytext[yyleng - 1] == ' ')                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|  77.5k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == ' ')                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  77.5k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  77.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  77.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:3): [True: 10.7k, False: 66.8k]
  |  |  |  |  ------------------
  |  |  |  |  135|  66.9k|	) {                                             \
  |  |  |  |  136|  10.7k|		yyleng--;                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  10.7k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|  10.7k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|  10.7k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|  10.7k|	}
  |  |  ------------------
  ------------------
  550|       |
  551|  66.9k|	RETURN_TOKEN(TC_LABEL, yytext, yyleng);
  ------------------
  |  |  146|  66.9k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  66.9k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  66.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  66.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|   133k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 522, False: 66.4k]
  |  |  ------------------
  |  |  148|  66.9k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|    522|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|    522|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    522|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    522|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|    522|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|    522|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|    522|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    522|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    522|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|    522|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 522]
  |  |  |  Branch (148:34): [True: 0, False: 522]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  66.9k|	} else {                                                       \
  |  |  151|  66.9k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  66.9k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  66.9k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  66.9k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  66.9k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  66.9k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  66.9k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  66.9k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  66.9k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  66.9k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  66.9k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  66.9k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  66.9k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  66.9k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  66.9k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  66.9k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 66.9k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  66.9k|	}                                                              \
  |  |  153|  66.9k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  66.9k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  66.9k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  66.9k|	return type;                                                   \
  |  |  155|  66.9k|}
  ------------------
  552|      0|}
  553|      0|#line 554 "Zend/zend_ini_scanner.c"
  554|  51.1k|yy8:
  555|  51.1k|		YYDEBUG(8, *YYCURSOR);
  556|  51.1k|		++YYCURSOR;
  ------------------
  |  |   47|  51.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  51.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  51.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  557|  51.1k|		YYFILL(2);
  ------------------
  |  |   46|  51.1k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  51.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  51.1k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  51.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  51.1k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  51.1k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  51.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 51.1k]
  |  |  ------------------
  ------------------
  558|  51.1k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  51.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  51.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  51.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  559|  51.1k|		YYDEBUG(9, *YYCURSOR);
  560|  51.1k|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (560:7): [True: 33.2k, False: 17.8k]
  ------------------
  561|  33.2k|			goto yy8;
  562|  33.2k|		}
  563|  17.8k|		if (yych <= '\r') {
  ------------------
  |  Branch (563:7): [True: 143, False: 17.7k]
  ------------------
  564|    143|			if (yych <= 0x08) goto yy10;
  ------------------
  |  Branch (564:8): [True: 142, False: 1]
  ------------------
  565|      1|			if (yych <= '\n') goto yy11;
  ------------------
  |  Branch (565:8): [True: 1, False: 0]
  ------------------
  566|      0|			if (yych >= '\r') goto yy13;
  ------------------
  |  Branch (566:8): [True: 0, False: 0]
  ------------------
  567|  17.7k|		} else {
  568|  17.7k|			if (yych <= ';') {
  ------------------
  |  Branch (568:8): [True: 5.64k, False: 12.0k]
  ------------------
  569|  5.64k|				if (yych >= ';') goto yy18;
  ------------------
  |  Branch (569:9): [True: 0, False: 5.64k]
  ------------------
  570|  12.0k|			} else {
  571|  12.0k|				if (yych == '=') goto yy20;
  ------------------
  |  Branch (571:9): [True: 0, False: 12.0k]
  ------------------
  572|  12.0k|			}
  573|  17.7k|		}
  574|  17.8k|yy10:
  575|  17.8k|		YYDEBUG(10, *YYCURSOR);
  576|  17.8k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  17.8k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  17.8k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  17.8k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  17.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  17.8k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  17.8k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  17.8k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  17.8k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  577|  17.8k|#line 664 "Zend/zend_ini_scanner.l"
  578|  17.8k|		{
  579|       |	/* eat whitespace */
  580|  17.8k|	goto restart;
  581|  17.8k|}
  582|      0|#line 583 "Zend/zend_ini_scanner.c"
  583|  7.77k|yy11:
  584|  7.77k|		YYDEBUG(11, *YYCURSOR);
  585|  7.77k|		++YYCURSOR;
  ------------------
  |  |   47|  7.77k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  7.77k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  7.77k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  586|  12.9k|yy12:
  587|  12.9k|		YYDEBUG(12, *YYCURSOR);
  588|  12.9k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  12.9k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  12.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  12.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  12.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  12.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  12.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  12.9k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  12.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  589|  12.9k|#line 669 "Zend/zend_ini_scanner.l"
  590|  12.9k|		{
  591|  12.9k|	SCNG(lineno)++;
  ------------------
  |  |  106|  12.9k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  12.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  592|  12.9k|	return END_OF_LINE;
  593|  7.77k|}
  594|      0|#line 595 "Zend/zend_ini_scanner.c"
  595|  5.15k|yy13:
  596|  5.15k|		YYDEBUG(13, *YYCURSOR);
  597|  5.15k|		yych = *++YYCURSOR;
  ------------------
  |  |   47|  5.15k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  5.15k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  5.15k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  598|  5.15k|		if (yych == '\n') goto yy11;
  ------------------
  |  Branch (598:7): [True: 0, False: 5.15k]
  ------------------
  599|  5.15k|		goto yy12;
  600|  5.15k|yy14:
  601|  3.02k|		YYDEBUG(14, *YYCURSOR);
  602|  3.02k|		++YYCURSOR;
  ------------------
  |  |   47|  3.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  3.02k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  3.02k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  603|  3.02k|		YYFILL(2);
  ------------------
  |  |   46|  3.02k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  3.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  3.02k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  3.02k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  3.02k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  3.02k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  3.02k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 3.02k]
  |  |  ------------------
  ------------------
  604|  3.02k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  3.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  3.02k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  3.02k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  605|  3.02k|		YYDEBUG(15, *YYCURSOR);
  606|  3.02k|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (606:7): [True: 1.12k, False: 1.90k]
  ------------------
  607|  1.12k|			goto yy14;
  608|  1.12k|		}
  609|  1.90k|		if (yych <= '&') {
  ------------------
  |  Branch (609:7): [True: 219, False: 1.68k]
  ------------------
  610|    219|			if (yych <= '\r') {
  ------------------
  |  Branch (610:8): [True: 192, False: 27]
  ------------------
  611|    192|				if (yych <= '\t') {
  ------------------
  |  Branch (611:9): [True: 90, False: 102]
  ------------------
  612|     90|					if (yych <= 0x00) goto yy7;
  ------------------
  |  Branch (612:10): [True: 90, False: 0]
  ------------------
  613|      0|					if (yych <= 0x08) goto yy5;
  ------------------
  |  Branch (613:10): [True: 0, False: 0]
  ------------------
  614|      0|					goto yy8;
  615|    102|				} else {
  616|    102|					if (yych <= '\n') goto yy11;
  ------------------
  |  Branch (616:10): [True: 3, False: 99]
  ------------------
  617|     99|					if (yych <= '\f') goto yy5;
  ------------------
  |  Branch (617:10): [True: 0, False: 99]
  ------------------
  618|     99|					goto yy13;
  619|     99|				}
  620|    192|			} else {
  621|     27|				if (yych <= '#') {
  ------------------
  |  Branch (621:9): [True: 26, False: 1]
  ------------------
  622|     26|					if (yych <= 0x1F) goto yy5;
  ------------------
  |  Branch (622:10): [True: 1, False: 25]
  ------------------
  623|     25|					if (yych <= '"') goto yy7;
  ------------------
  |  Branch (623:10): [True: 25, False: 0]
  ------------------
  624|      0|					goto yy5;
  625|     25|				} else {
  626|      1|					if (yych == '%') goto yy5;
  ------------------
  |  Branch (626:10): [True: 1, False: 0]
  ------------------
  627|      0|					goto yy7;
  628|      1|				}
  629|     27|			}
  630|  1.68k|		} else {
  631|  1.68k|			if (yych <= '=') {
  ------------------
  |  Branch (631:8): [True: 93, False: 1.58k]
  ------------------
  632|     93|				if (yych <= ':') {
  ------------------
  |  Branch (632:9): [True: 92, False: 1]
  ------------------
  633|     92|					if (yych <= '\'') goto yy5;
  ------------------
  |  Branch (633:10): [True: 1, False: 91]
  ------------------
  634|     91|					if (yych <= ')') goto yy7;
  ------------------
  |  Branch (634:10): [True: 0, False: 91]
  ------------------
  635|     91|					goto yy5;
  636|     91|				} else {
  637|      1|					if (yych <= ';') goto yy18;
  ------------------
  |  Branch (637:10): [True: 1, False: 0]
  ------------------
  638|      0|					if (yych <= '<') goto yy5;
  ------------------
  |  Branch (638:10): [True: 0, False: 0]
  ------------------
  639|      0|					goto yy20;
  640|      0|				}
  641|  1.58k|			} else {
  642|  1.58k|				if (yych <= '\\') {
  ------------------
  |  Branch (642:9): [True: 142, False: 1.44k]
  ------------------
  643|    142|					if (yych == '[') goto yy30;
  ------------------
  |  Branch (643:10): [True: 142, False: 0]
  ------------------
  644|      0|					goto yy5;
  645|  1.44k|				} else {
  646|  1.44k|					if (yych <= '^') goto yy7;
  ------------------
  |  Branch (646:10): [True: 0, False: 1.44k]
  ------------------
  647|  1.44k|					if (yych <= 'z') goto yy5;
  ------------------
  |  Branch (647:10): [True: 411, False: 1.03k]
  ------------------
  648|  1.03k|					if (yych <= '~') goto yy7;
  ------------------
  |  Branch (648:10): [True: 0, False: 1.03k]
  ------------------
  649|  1.03k|					goto yy5;
  650|  1.03k|				}
  651|  1.58k|			}
  652|  1.68k|		}
  653|  1.11k|yy16:
  654|  1.11k|		YYDEBUG(16, *YYCURSOR);
  655|  1.11k|		++YYCURSOR;
  ------------------
  |  |   47|  1.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  656|  1.11k|		YYDEBUG(17, *YYCURSOR);
  657|  1.11k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  1.11k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  1.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  1.11k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  1.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  658|  1.11k|#line 583 "Zend/zend_ini_scanner.l"
  659|  1.11k|		{ /* Disallow these chars outside option values */
  660|  1.11k|	return yytext[0];
  ------------------
  |  |   59|  1.11k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  1.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  661|  1.90k|}
  662|      0|#line 663 "Zend/zend_ini_scanner.c"
  663|  11.3k|yy18:
  664|  11.3k|		YYDEBUG(18, *YYCURSOR);
  665|  11.3k|		++YYCURSOR;
  ------------------
  |  |   47|  11.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  11.3k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  666|  11.3k|		YYFILL(2);
  ------------------
  |  |   46|  11.3k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  11.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  11.3k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  11.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  11.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  11.3k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  11.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 143, False: 11.1k]
  |  |  ------------------
  ------------------
  667|  11.1k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  11.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  11.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  668|  11.1k|		YYDEBUG(19, *YYCURSOR);
  669|  11.1k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (669:7): [True: 10.4k, False: 708]
  ------------------
  670|  10.4k|			goto yy18;
  671|  10.4k|		}
  672|    708|		if (yych <= '\n') goto yy33;
  ------------------
  |  Branch (672:7): [True: 278, False: 430]
  ------------------
  673|    430|		goto yy35;
  674|  49.0k|yy20:
  675|  49.0k|		YYDEBUG(20, *YYCURSOR);
  676|  49.0k|		++YYCURSOR;
  ------------------
  |  |   47|  49.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  49.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  49.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  677|  49.0k|		YYFILL(1);
  ------------------
  |  |   46|  49.0k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  49.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  49.0k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  49.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  49.0k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  49.0k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  49.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 49.0k]
  |  |  ------------------
  ------------------
  678|  49.0k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  49.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  49.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  49.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  679|  49.0k|		YYDEBUG(21, *YYCURSOR);
  680|  49.0k|		if (yych == '\t') goto yy20;
  ------------------
  |  Branch (680:7): [True: 0, False: 49.0k]
  ------------------
  681|  49.0k|		if (yych == ' ') goto yy20;
  ------------------
  |  Branch (681:7): [True: 7.79k, False: 41.2k]
  ------------------
  682|  41.2k|		YYDEBUG(22, *YYCURSOR);
  683|  41.2k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  41.2k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  41.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  41.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  41.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  41.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  41.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  41.2k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  41.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  684|  41.2k|#line 512 "Zend/zend_ini_scanner.l"
  685|  41.2k|		{ /* Start option value */
  686|  41.2k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
  ------------------
  |  |  106|  41.2k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  41.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
              	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
  ------------------
  |  |   28|  41.2k|#define ZEND_INI_SCANNER_RAW    1 /* Raw mode. Option values are not parsed */
  ------------------
  |  Branch (686:6): [True: 1, False: 41.2k]
  ------------------
  687|      1|		BEGIN(ST_RAW);
  ------------------
  |  |   57|      1|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|      1|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|  41.2k|	} else {
  689|  41.2k|		BEGIN(ST_VALUE);
  ------------------
  |  |   57|  41.2k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  41.2k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  41.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  41.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  690|  41.2k|	}
  691|  41.2k|	return '=';
  692|  49.0k|}
  693|      0|#line 694 "Zend/zend_ini_scanner.c"
  694|    179|yy23:
  695|    179|		YYDEBUG(23, *YYCURSOR);
  696|    179|		yych = *++YYCURSOR;
  ------------------
  |  |   47|    179|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    179|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    179|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  697|    179|		if (yych == 'A') goto yy36;
  ------------------
  |  Branch (697:7): [True: 0, False: 179]
  ------------------
  698|    179|		if (yych == 'a') goto yy36;
  ------------------
  |  Branch (698:7): [True: 3, False: 176]
  ------------------
  699|    176|		goto yy6;
  700|    456|yy24:
  701|    456|		YYDEBUG(24, *YYCURSOR);
  702|    456|		yych = *++YYCURSOR;
  ------------------
  |  |   47|    456|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    456|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    456|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  703|    456|		if (yych <= 'U') {
  ------------------
  |  Branch (703:7): [True: 285, False: 171]
  ------------------
  704|    285|			if (yych == 'O') goto yy37;
  ------------------
  |  Branch (704:8): [True: 0, False: 285]
  ------------------
  705|    285|			if (yych <= 'T') goto yy6;
  ------------------
  |  Branch (705:8): [True: 285, False: 0]
  ------------------
  706|      0|			goto yy39;
  707|    285|		} else {
  708|    171|			if (yych <= 'o') {
  ------------------
  |  Branch (708:8): [True: 166, False: 5]
  ------------------
  709|    166|				if (yych <= 'n') goto yy6;
  ------------------
  |  Branch (709:9): [True: 166, False: 0]
  ------------------
  710|      0|				goto yy37;
  711|    166|			} else {
  712|      5|				if (yych == 'u') goto yy39;
  ------------------
  |  Branch (712:9): [True: 1, False: 4]
  ------------------
  713|      4|				goto yy6;
  714|      5|			}
  715|    171|		}
  716|    146|yy25:
  717|    146|		YYDEBUG(25, *YYCURSOR);
  718|    146|		yych = *++YYCURSOR;
  ------------------
  |  |   47|    146|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    146|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    146|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  719|    146|		if (yych <= 'N') {
  ------------------
  |  Branch (719:7): [True: 0, False: 146]
  ------------------
  720|      0|			if (yych == 'F') goto yy40;
  ------------------
  |  Branch (720:8): [True: 0, False: 0]
  ------------------
  721|      0|			if (yych <= 'M') goto yy6;
  ------------------
  |  Branch (721:8): [True: 0, False: 0]
  ------------------
  722|      0|			goto yy41;
  723|    146|		} else {
  724|    146|			if (yych <= 'f') {
  ------------------
  |  Branch (724:8): [True: 0, False: 146]
  ------------------
  725|      0|				if (yych <= 'e') goto yy6;
  ------------------
  |  Branch (725:9): [True: 0, False: 0]
  ------------------
  726|      0|				goto yy40;
  727|    146|			} else {
  728|    146|				if (yych == 'n') goto yy41;
  ------------------
  |  Branch (728:9): [True: 0, False: 146]
  ------------------
  729|    146|				goto yy6;
  730|    146|			}
  731|    146|		}
  732|      0|yy26:
  733|      0|		YYDEBUG(26, *YYCURSOR);
  734|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  735|      0|		if (yych == 'R') goto yy44;
  ------------------
  |  Branch (735:7): [True: 0, False: 0]
  ------------------
  736|      0|		if (yych == 'r') goto yy44;
  ------------------
  |  Branch (736:7): [True: 0, False: 0]
  ------------------
  737|      0|		goto yy6;
  738|     95|yy27:
  739|     95|		YYDEBUG(27, *YYCURSOR);
  740|     95|		yych = *++YYCURSOR;
  ------------------
  |  |   47|     95|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     95|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     95|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  741|     95|		if (yych == 'E') goto yy45;
  ------------------
  |  Branch (741:7): [True: 0, False: 95]
  ------------------
  742|     95|		if (yych == 'e') goto yy45;
  ------------------
  |  Branch (742:7): [True: 3, False: 92]
  ------------------
  743|     92|		goto yy6;
  744|  4.75k|yy28:
  745|  4.75k|		YYDEBUG(28, *YYCURSOR);
  746|  4.75k|		++YYCURSOR;
  ------------------
  |  |   47|  4.75k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.75k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.75k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  747|  4.75k|		YYDEBUG(29, *YYCURSOR);
  748|  4.75k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  4.75k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  4.75k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.75k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  4.75k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.75k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.75k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  4.75k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  4.75k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  749|  4.75k|#line 378 "Zend/zend_ini_scanner.l"
  750|  4.75k|		{ /* Section start */
  751|       |	/* Enter section data lookup state */
  752|  4.75k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
  ------------------
  |  |  106|  4.75k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  4.75k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
              	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
  ------------------
  |  |   28|  4.75k|#define ZEND_INI_SCANNER_RAW    1 /* Raw mode. Option values are not parsed */
  ------------------
  |  Branch (752:6): [True: 2, False: 4.75k]
  ------------------
  753|      2|		BEGIN(ST_SECTION_RAW);
  ------------------
  |  |   57|      2|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|      2|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  754|  4.75k|	} else {
  755|  4.75k|		BEGIN(ST_SECTION_VALUE);
  ------------------
  |  |   57|  4.75k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  4.75k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.75k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.75k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  756|  4.75k|	}
  757|  4.75k|	return TC_SECTION;
  758|     95|}
  759|      0|#line 760 "Zend/zend_ini_scanner.c"
  760|  1.48k|yy30:
  761|  1.48k|		YYDEBUG(30, *YYCURSOR);
  762|  1.48k|		++YYCURSOR;
  ------------------
  |  |   47|  1.48k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.48k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  763|  1.48k|		YYFILL(1);
  ------------------
  |  |   46|  1.48k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  1.48k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.48k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  1.48k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.48k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1.48k]
  |  |  ------------------
  ------------------
  764|  1.48k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  1.48k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.48k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  765|  1.48k|		YYDEBUG(31, *YYCURSOR);
  766|  1.48k|		if (yych == '\t') goto yy30;
  ------------------
  |  Branch (766:7): [True: 0, False: 1.48k]
  ------------------
  767|  1.48k|		if (yych == ' ') goto yy30;
  ------------------
  |  Branch (767:7): [True: 349, False: 1.13k]
  ------------------
  768|  1.13k|		YYDEBUG(32, *YYCURSOR);
  769|  1.13k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  1.13k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  1.13k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  770|  1.13k|#line 403 "Zend/zend_ini_scanner.l"
  771|  1.13k|		{ /* Start of option with offset */
  772|       |	/* Eat leading whitespace */
  773|  1.13k|	EAT_LEADING_WHITESPACE();
  ------------------
  |  |  118|  1.56k|	while (yyleng) {                                 \
  |  |  119|  1.56k|		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|  1.56k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.56k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.56k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|  1.13k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (119:7): [True: 426, False: 1.13k]
  |  |  |  Branch (119:27): [True: 0, False: 1.13k]
  |  |  ------------------
  |  |  120|    426|			SCNG(yy_text)++;                         \
  |  |  ------------------
  |  |  |  |  106|    426|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    426|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|    426|			yyleng--;                                \
  |  |  ------------------
  |  |  |  |   60|    426|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    426|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    426|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  122|  1.13k|		} else {                                     \
  |  |  123|  1.13k|			break;                                   \
  |  |  124|  1.13k|		}                                            \
  |  |  125|  1.56k|	}
  ------------------
  774|       |
  775|       |	/* Eat trailing whitespace and [ */
  776|  1.13k|	EAT_TRAILING_WHITESPACE_EX('[');
  ------------------
  |  |  129|  2.62k|	while (yyleng && (                              \
  |  |  ------------------
  |  |  |  |   60|  2.62k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.62k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  5.24k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (66:22): [True: 2.48k, False: 142]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  130|  2.48k|		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  ------------------
  |  |  |  |   59|  2.48k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.48k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  ------------------
  |  |  |  |   60|  2.48k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.48k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (130:4): [True: 2.48k, Folded]
  |  |  |  Branch (130:17): [True: 1.13k, False: 1.34k]
  |  |  ------------------
  |  |  131|  2.48k|		yytext[yyleng - 1] == '\n' ||               \
  |  |  ------------------
  |  |  |  |   59|  1.34k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		yytext[yyleng - 1] == '\n' ||               \
  |  |  ------------------
  |  |  |  |   60|  1.34k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (131:3): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |  132|  2.48k|		yytext[yyleng - 1] == '\r' ||               \
  |  |  ------------------
  |  |  |  |   59|  1.34k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		yytext[yyleng - 1] == '\r' ||               \
  |  |  ------------------
  |  |  |  |   60|  1.34k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (132:3): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |  133|  2.48k|		yytext[yyleng - 1] == '\t' ||               \
  |  |  ------------------
  |  |  |  |   59|  1.34k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		yytext[yyleng - 1] == '\t' ||               \
  |  |  ------------------
  |  |  |  |   60|  1.34k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (133:3): [True: 0, False: 1.34k]
  |  |  ------------------
  |  |  134|  2.48k|		yytext[yyleng - 1] == ' ')                  \
  |  |  ------------------
  |  |  |  |   59|  1.34k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		yytext[yyleng - 1] == ' ')                  \
  |  |  ------------------
  |  |  |  |   60|  1.34k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (134:3): [True: 349, False: 995]
  |  |  ------------------
  |  |  135|  1.48k|	) {                                             \
  |  |  136|  1.48k|		yyleng--;                                   \
  |  |  ------------------
  |  |  |  |   60|  1.48k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.48k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.48k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  137|  1.48k|	}
  ------------------
  777|       |
  778|       |	/* Enter offset lookup state */
  779|  1.13k|	BEGIN(ST_OFFSET);
  ------------------
  |  |   57|  1.13k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  1.13k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  780|       |
  781|  1.13k|	RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
  ------------------
  |  |  146|  1.13k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  1.13k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  1.13k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.13k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  2.27k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 1, False: 1.13k]
  |  |  ------------------
  |  |  148|  1.13k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 1]
  |  |  |  Branch (148:34): [True: 0, False: 1]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  1.13k|	} else {                                                       \
  |  |  151|  1.13k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  1.13k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  1.13k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  1.13k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  1.13k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  1.13k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  1.13k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  1.13k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  1.13k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  1.13k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  1.13k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  1.13k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  1.13k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  1.13k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  1.13k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  1.13k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1.13k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  1.13k|	}                                                              \
  |  |  153|  1.13k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  1.13k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  1.13k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  1.13k|	return type;                                                   \
  |  |  155|  1.13k|}
  ------------------
  782|      0|}
  783|      0|#line 784 "Zend/zend_ini_scanner.c"
  784|    278|yy33:
  785|    278|		YYDEBUG(33, *YYCURSOR);
  786|    278|		++YYCURSOR;
  ------------------
  |  |   47|    278|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    278|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    278|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  787|    708|yy34:
  788|    708|		YYDEBUG(34, *YYCURSOR);
  789|    708|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    708|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    708|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    708|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    708|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    708|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    708|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    708|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    708|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  790|    708|#line 674 "Zend/zend_ini_scanner.l"
  791|    708|		{ /* Comment */
  792|    708|	BEGIN(INITIAL);
  ------------------
  |  |   57|    708|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|    708|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    708|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    708|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|    708|	SCNG(lineno)++;
  ------------------
  |  |  106|    708|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    708|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  794|    708|	return END_OF_LINE;
  795|    278|}
  796|      0|#line 797 "Zend/zend_ini_scanner.c"
  797|    430|yy35:
  798|    430|		YYDEBUG(35, *YYCURSOR);
  799|    430|		yych = *++YYCURSOR;
  ------------------
  |  |   47|    430|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    430|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    430|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|    430|		if (yych == '\n') goto yy33;
  ------------------
  |  Branch (800:7): [True: 0, False: 430]
  ------------------
  801|    430|		goto yy34;
  802|    430|yy36:
  803|      3|		YYDEBUG(36, *YYCURSOR);
  804|      3|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|      3|		if (yych == 'L') goto yy46;
  ------------------
  |  Branch (805:7): [True: 0, False: 3]
  ------------------
  806|      3|		if (yych == 'l') goto yy46;
  ------------------
  |  Branch (806:7): [True: 3, False: 0]
  ------------------
  807|      0|		goto yy6;
  808|      0|yy37:
  809|      0|		YYDEBUG(37, *YYCURSOR);
  810|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  811|      0|		if (yych <= '\'') {
  ------------------
  |  Branch (811:7): [True: 0, False: 0]
  ------------------
  812|      0|			if (yych <= 0x1F) {
  ------------------
  |  Branch (812:8): [True: 0, False: 0]
  ------------------
  813|      0|				if (yych <= '\t') {
  ------------------
  |  Branch (813:9): [True: 0, False: 0]
  ------------------
  814|      0|					if (yych <= 0x00) goto yy38;
  ------------------
  |  Branch (814:10): [True: 0, False: 0]
  ------------------
  815|      0|					if (yych <= 0x08) goto yy6;
  ------------------
  |  Branch (815:10): [True: 0, False: 0]
  ------------------
  816|      0|					goto yy47;
  817|      0|				} else {
  818|      0|					if (yych <= '\n') goto yy38;
  ------------------
  |  Branch (818:10): [True: 0, False: 0]
  ------------------
  819|      0|					if (yych != '\r') goto yy6;
  ------------------
  |  Branch (819:10): [True: 0, False: 0]
  ------------------
  820|      0|				}
  821|      0|			} else {
  822|      0|				if (yych <= '#') {
  ------------------
  |  Branch (822:9): [True: 0, False: 0]
  ------------------
  823|      0|					if (yych <= ' ') goto yy49;
  ------------------
  |  Branch (823:10): [True: 0, False: 0]
  ------------------
  824|      0|					if (yych >= '#') goto yy6;
  ------------------
  |  Branch (824:10): [True: 0, False: 0]
  ------------------
  825|      0|				} else {
  826|      0|					if (yych == '%') goto yy6;
  ------------------
  |  Branch (826:10): [True: 0, False: 0]
  ------------------
  827|      0|					if (yych >= '\'') goto yy6;
  ------------------
  |  Branch (827:10): [True: 0, False: 0]
  ------------------
  828|      0|				}
  829|      0|			}
  830|      0|		} else {
  831|      0|			if (yych <= 'N') {
  ------------------
  |  Branch (831:8): [True: 0, False: 0]
  ------------------
  832|      0|				if (yych <= ';') {
  ------------------
  |  Branch (832:9): [True: 0, False: 0]
  ------------------
  833|      0|					if (yych <= ')') goto yy38;
  ------------------
  |  Branch (833:10): [True: 0, False: 0]
  ------------------
  834|      0|					if (yych <= ':') goto yy6;
  ------------------
  |  Branch (834:10): [True: 0, False: 0]
  ------------------
  835|      0|				} else {
  836|      0|					if (yych == '=') goto yy38;
  ------------------
  |  Branch (836:10): [True: 0, False: 0]
  ------------------
  837|      0|					if (yych <= 'M') goto yy6;
  ------------------
  |  Branch (837:10): [True: 0, False: 0]
  ------------------
  838|      0|					goto yy51;
  839|      0|				}
  840|      0|			} else {
  841|      0|				if (yych <= 'm') {
  ------------------
  |  Branch (841:9): [True: 0, False: 0]
  ------------------
  842|      0|					if (yych <= '\\') goto yy6;
  ------------------
  |  Branch (842:10): [True: 0, False: 0]
  ------------------
  843|      0|					if (yych >= '_') goto yy6;
  ------------------
  |  Branch (843:10): [True: 0, False: 0]
  ------------------
  844|      0|				} else {
  845|      0|					if (yych <= 'n') goto yy51;
  ------------------
  |  Branch (845:10): [True: 0, False: 0]
  ------------------
  846|      0|					if (yych <= 'z') goto yy6;
  ------------------
  |  Branch (846:10): [True: 0, False: 0]
  ------------------
  847|      0|					if (yych >= 0x7F) goto yy6;
  ------------------
  |  Branch (847:10): [True: 0, False: 0]
  ------------------
  848|      0|				}
  849|      0|			}
  850|      0|		}
  851|      0|yy38:
  852|      0|		YYDEBUG(38, *YYCURSOR);
  853|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  854|      0|#line 494 "Zend/zend_ini_scanner.l"
  855|      0|		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
  856|      0|	RETURN_TOKEN(BOOL_FALSE, "", 0);
  ------------------
  |  |  146|      0|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      0|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  148|      0|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      0|	} else {                                                       \
  |  |  151|      0|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      0|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      0|	}                                                              \
  |  |  153|      0|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|	return type;                                                   \
  |  |  155|      0|}
  ------------------
  857|      0|}
  858|      0|#line 859 "Zend/zend_ini_scanner.c"
  859|      1|yy39:
  860|      1|		YYDEBUG(39, *YYCURSOR);
  861|      1|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  862|      1|		if (yych == 'L') goto yy52;
  ------------------
  |  Branch (862:7): [True: 0, False: 1]
  ------------------
  863|      1|		if (yych == 'l') goto yy52;
  ------------------
  |  Branch (863:7): [True: 1, False: 0]
  ------------------
  864|      0|		goto yy6;
  865|      0|yy40:
  866|      0|		YYDEBUG(40, *YYCURSOR);
  867|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  868|      0|		if (yych == 'F') goto yy49;
  ------------------
  |  Branch (868:7): [True: 0, False: 0]
  ------------------
  869|      0|		if (yych == 'f') goto yy49;
  ------------------
  |  Branch (869:7): [True: 0, False: 0]
  ------------------
  870|      0|		goto yy6;
  871|      3|yy41:
  872|      3|		YYDEBUG(41, *YYCURSOR);
  873|      3|		++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  874|      3|		YYFILL(1);
  ------------------
  |  |   46|      3|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      3|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  875|      3|		yych = *YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  876|      3|		YYDEBUG(42, *YYCURSOR);
  877|      3|		if (yych <= '&') {
  ------------------
  |  Branch (877:7): [True: 2, False: 1]
  ------------------
  878|      2|			if (yych <= '\r') {
  ------------------
  |  Branch (878:8): [True: 2, False: 0]
  ------------------
  879|      2|				if (yych <= '\t') {
  ------------------
  |  Branch (879:9): [True: 2, False: 0]
  ------------------
  880|      2|					if (yych <= 0x00) goto yy43;
  ------------------
  |  Branch (880:10): [True: 2, False: 0]
  ------------------
  881|      0|					if (yych <= 0x08) goto yy5;
  ------------------
  |  Branch (881:10): [True: 0, False: 0]
  ------------------
  882|      0|					goto yy53;
  883|      0|				} else {
  884|      0|					if (yych <= '\n') goto yy43;
  ------------------
  |  Branch (884:10): [True: 0, False: 0]
  ------------------
  885|      0|					if (yych <= '\f') goto yy5;
  ------------------
  |  Branch (885:10): [True: 0, False: 0]
  ------------------
  886|      0|				}
  887|      2|			} else {
  888|      0|				if (yych <= '"') {
  ------------------
  |  Branch (888:9): [True: 0, False: 0]
  ------------------
  889|      0|					if (yych <= 0x1F) goto yy5;
  ------------------
  |  Branch (889:10): [True: 0, False: 0]
  ------------------
  890|      0|					if (yych <= ' ') goto yy41;
  ------------------
  |  Branch (890:10): [True: 0, False: 0]
  ------------------
  891|      0|				} else {
  892|      0|					if (yych == '$') goto yy43;
  ------------------
  |  Branch (892:10): [True: 0, False: 0]
  ------------------
  893|      0|					if (yych <= '%') goto yy5;
  ------------------
  |  Branch (893:10): [True: 0, False: 0]
  ------------------
  894|      0|				}
  895|      0|			}
  896|      2|		} else {
  897|      1|			if (yych <= '=') {
  ------------------
  |  Branch (897:8): [True: 0, False: 1]
  ------------------
  898|      0|				if (yych <= ':') {
  ------------------
  |  Branch (898:9): [True: 0, False: 0]
  ------------------
  899|      0|					if (yych <= '\'') goto yy5;
  ------------------
  |  Branch (899:10): [True: 0, False: 0]
  ------------------
  900|      0|					if (yych >= '*') goto yy5;
  ------------------
  |  Branch (900:10): [True: 0, False: 0]
  ------------------
  901|      0|				} else {
  902|      0|					if (yych == '<') goto yy5;
  ------------------
  |  Branch (902:10): [True: 0, False: 0]
  ------------------
  903|      0|				}
  904|      1|			} else {
  905|      1|				if (yych <= '\\') {
  ------------------
  |  Branch (905:9): [True: 1, False: 0]
  ------------------
  906|      1|					if (yych == '[') goto yy30;
  ------------------
  |  Branch (906:10): [True: 1, False: 0]
  ------------------
  907|      0|					goto yy5;
  908|      1|				} else {
  909|      0|					if (yych <= '^') goto yy43;
  ------------------
  |  Branch (909:10): [True: 0, False: 0]
  ------------------
  910|      0|					if (yych <= 'z') goto yy5;
  ------------------
  |  Branch (910:10): [True: 0, False: 0]
  ------------------
  911|      0|					if (yych >= 0x7F) goto yy5;
  ------------------
  |  Branch (911:10): [True: 0, False: 0]
  ------------------
  912|      0|				}
  913|      1|			}
  914|      1|		}
  915|      2|yy43:
  916|      2|		YYDEBUG(43, *YYCURSOR);
  917|      2|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      2|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  918|      2|#line 490 "Zend/zend_ini_scanner.l"
  919|      2|		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
  920|      2|	RETURN_TOKEN(BOOL_TRUE, "1", 1);
  ------------------
  |  |  146|      2|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      2|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      4|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 1, False: 1]
  |  |  ------------------
  |  |  148|      2|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 1]
  |  |  |  Branch (148:34): [True: 0, False: 1]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      2|	} else {                                                       \
  |  |  151|      2|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      2|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      2|	}                                                              \
  |  |  153|      2|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      2|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      2|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      2|	return type;                                                   \
  |  |  155|      2|}
  ------------------
  921|      0|}
  922|      0|#line 923 "Zend/zend_ini_scanner.c"
  923|      0|yy44:
  924|      0|		YYDEBUG(44, *YYCURSOR);
  925|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  926|      0|		if (yych == 'U') goto yy55;
  ------------------
  |  Branch (926:7): [True: 0, False: 0]
  ------------------
  927|      0|		if (yych == 'u') goto yy55;
  ------------------
  |  Branch (927:7): [True: 0, False: 0]
  ------------------
  928|      0|		goto yy6;
  929|      3|yy45:
  930|      3|		YYDEBUG(45, *YYCURSOR);
  931|      3|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  932|      3|		if (yych == 'S') goto yy41;
  ------------------
  |  Branch (932:7): [True: 0, False: 3]
  ------------------
  933|      3|		if (yych == 's') goto yy41;
  ------------------
  |  Branch (933:7): [True: 3, False: 0]
  ------------------
  934|      0|		goto yy6;
  935|      3|yy46:
  936|      3|		YYDEBUG(46, *YYCURSOR);
  937|      3|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  938|      3|		if (yych == 'S') goto yy51;
  ------------------
  |  Branch (938:7): [True: 0, False: 3]
  ------------------
  939|      3|		if (yych == 's') goto yy51;
  ------------------
  |  Branch (939:7): [True: 3, False: 0]
  ------------------
  940|      0|		goto yy6;
  941|      0|yy47:
  942|      0|		YYDEBUG(47, *YYCURSOR);
  943|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  944|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  945|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  946|      0|		YYDEBUG(48, *YYCURSOR);
  947|      0|		if (yych == '\t') goto yy47;
  ------------------
  |  Branch (947:7): [True: 0, False: 0]
  ------------------
  948|      0|		if (yych == ' ') goto yy47;
  ------------------
  |  Branch (948:7): [True: 0, False: 0]
  ------------------
  949|      0|		goto yy38;
  950|      5|yy49:
  951|      5|		YYDEBUG(49, *YYCURSOR);
  952|      5|		++YYCURSOR;
  ------------------
  |  |   47|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  953|      5|		YYFILL(1);
  ------------------
  |  |   46|      5|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      5|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  954|      5|		yych = *YYCURSOR;
  ------------------
  |  |   47|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  955|      5|		YYDEBUG(50, *YYCURSOR);
  956|      5|		if (yych <= '&') {
  ------------------
  |  Branch (956:7): [True: 3, False: 2]
  ------------------
  957|      3|			if (yych <= '\r') {
  ------------------
  |  Branch (957:8): [True: 1, False: 2]
  ------------------
  958|      1|				if (yych <= '\t') {
  ------------------
  |  Branch (958:9): [True: 0, False: 1]
  ------------------
  959|      0|					if (yych <= 0x00) goto yy38;
  ------------------
  |  Branch (959:10): [True: 0, False: 0]
  ------------------
  960|      0|					if (yych <= 0x08) goto yy5;
  ------------------
  |  Branch (960:10): [True: 0, False: 0]
  ------------------
  961|      0|					goto yy47;
  962|      1|				} else {
  963|      1|					if (yych <= '\n') goto yy38;
  ------------------
  |  Branch (963:10): [True: 0, False: 1]
  ------------------
  964|      1|					if (yych <= '\f') goto yy5;
  ------------------
  |  Branch (964:10): [True: 1, False: 0]
  ------------------
  965|      0|					goto yy38;
  966|      1|				}
  967|      2|			} else {
  968|      2|				if (yych <= '"') {
  ------------------
  |  Branch (968:9): [True: 2, False: 0]
  ------------------
  969|      2|					if (yych <= 0x1F) goto yy5;
  ------------------
  |  Branch (969:10): [True: 0, False: 2]
  ------------------
  970|      2|					if (yych <= ' ') goto yy49;
  ------------------
  |  Branch (970:10): [True: 2, False: 0]
  ------------------
  971|      0|					goto yy38;
  972|      2|				} else {
  973|      0|					if (yych == '$') goto yy38;
  ------------------
  |  Branch (973:10): [True: 0, False: 0]
  ------------------
  974|      0|					if (yych <= '%') goto yy5;
  ------------------
  |  Branch (974:10): [True: 0, False: 0]
  ------------------
  975|      0|					goto yy38;
  976|      0|				}
  977|      2|			}
  978|      3|		} else {
  979|      2|			if (yych <= '=') {
  ------------------
  |  Branch (979:8): [True: 1, False: 1]
  ------------------
  980|      1|				if (yych <= ':') {
  ------------------
  |  Branch (980:9): [True: 1, False: 0]
  ------------------
  981|      1|					if (yych <= '\'') goto yy5;
  ------------------
  |  Branch (981:10): [True: 0, False: 1]
  ------------------
  982|      1|					if (yych <= ')') goto yy38;
  ------------------
  |  Branch (982:10): [True: 0, False: 1]
  ------------------
  983|      1|					goto yy5;
  984|      1|				} else {
  985|      0|					if (yych == '<') goto yy5;
  ------------------
  |  Branch (985:10): [True: 0, False: 0]
  ------------------
  986|      0|					goto yy38;
  987|      0|				}
  988|      1|			} else {
  989|      1|				if (yych <= '\\') {
  ------------------
  |  Branch (989:9): [True: 0, False: 1]
  ------------------
  990|      0|					if (yych == '[') goto yy30;
  ------------------
  |  Branch (990:10): [True: 0, False: 0]
  ------------------
  991|      0|					goto yy5;
  992|      1|				} else {
  993|      1|					if (yych <= '^') goto yy38;
  ------------------
  |  Branch (993:10): [True: 0, False: 1]
  ------------------
  994|      1|					if (yych <= 'z') goto yy5;
  ------------------
  |  Branch (994:10): [True: 0, False: 1]
  ------------------
  995|      1|					if (yych <= '~') goto yy38;
  ------------------
  |  Branch (995:10): [True: 0, False: 1]
  ------------------
  996|      1|					goto yy5;
  997|      1|				}
  998|      1|			}
  999|      2|		}
 1000|      3|yy51:
 1001|      3|		YYDEBUG(51, *YYCURSOR);
 1002|      3|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1003|      3|		if (yych == 'E') goto yy49;
  ------------------
  |  Branch (1003:7): [True: 0, False: 3]
  ------------------
 1004|      3|		if (yych == 'e') goto yy49;
  ------------------
  |  Branch (1004:7): [True: 3, False: 0]
  ------------------
 1005|      0|		goto yy6;
 1006|      1|yy52:
 1007|      1|		YYDEBUG(52, *YYCURSOR);
 1008|      1|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1009|      1|		if (yych == 'L') goto yy56;
  ------------------
  |  Branch (1009:7): [True: 0, False: 1]
  ------------------
 1010|      1|		if (yych == 'l') goto yy56;
  ------------------
  |  Branch (1010:7): [True: 1, False: 0]
  ------------------
 1011|      0|		goto yy6;
 1012|      0|yy53:
 1013|      0|		YYDEBUG(53, *YYCURSOR);
 1014|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1015|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1016|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1017|      0|		YYDEBUG(54, *YYCURSOR);
 1018|      0|		if (yych == '\t') goto yy53;
  ------------------
  |  Branch (1018:7): [True: 0, False: 0]
  ------------------
 1019|      0|		if (yych == ' ') goto yy53;
  ------------------
  |  Branch (1019:7): [True: 0, False: 0]
  ------------------
 1020|      0|		goto yy43;
 1021|      0|yy55:
 1022|      0|		YYDEBUG(55, *YYCURSOR);
 1023|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1024|      0|		if (yych == 'E') goto yy41;
  ------------------
  |  Branch (1024:7): [True: 0, False: 0]
  ------------------
 1025|      0|		if (yych == 'e') goto yy41;
  ------------------
  |  Branch (1025:7): [True: 0, False: 0]
  ------------------
 1026|      0|		goto yy6;
 1027|      1|yy56:
 1028|      1|		YYDEBUG(56, *YYCURSOR);
 1029|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1030|      1|		YYFILL(1);
  ------------------
  |  |   46|      1|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1031|      1|		yych = *YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1032|      1|		YYDEBUG(57, *YYCURSOR);
 1033|      1|		if (yych <= '&') {
  ------------------
  |  Branch (1033:7): [True: 1, False: 0]
  ------------------
 1034|      1|			if (yych <= '\r') {
  ------------------
  |  Branch (1034:8): [True: 1, False: 0]
  ------------------
 1035|      1|				if (yych <= '\t') {
  ------------------
  |  Branch (1035:9): [True: 0, False: 1]
  ------------------
 1036|      0|					if (yych <= 0x00) goto yy58;
  ------------------
  |  Branch (1036:10): [True: 0, False: 0]
  ------------------
 1037|      0|					if (yych <= 0x08) goto yy5;
  ------------------
  |  Branch (1037:10): [True: 0, False: 0]
  ------------------
 1038|      0|					goto yy59;
 1039|      1|				} else {
 1040|      1|					if (yych <= '\n') goto yy58;
  ------------------
  |  Branch (1040:10): [True: 1, False: 0]
  ------------------
 1041|      0|					if (yych <= '\f') goto yy5;
  ------------------
  |  Branch (1041:10): [True: 0, False: 0]
  ------------------
 1042|      0|				}
 1043|      1|			} else {
 1044|      0|				if (yych <= '"') {
  ------------------
  |  Branch (1044:9): [True: 0, False: 0]
  ------------------
 1045|      0|					if (yych <= 0x1F) goto yy5;
  ------------------
  |  Branch (1045:10): [True: 0, False: 0]
  ------------------
 1046|      0|					if (yych <= ' ') goto yy56;
  ------------------
  |  Branch (1046:10): [True: 0, False: 0]
  ------------------
 1047|      0|				} else {
 1048|      0|					if (yych == '$') goto yy58;
  ------------------
  |  Branch (1048:10): [True: 0, False: 0]
  ------------------
 1049|      0|					if (yych <= '%') goto yy5;
  ------------------
  |  Branch (1049:10): [True: 0, False: 0]
  ------------------
 1050|      0|				}
 1051|      0|			}
 1052|      1|		} else {
 1053|      0|			if (yych <= '=') {
  ------------------
  |  Branch (1053:8): [True: 0, False: 0]
  ------------------
 1054|      0|				if (yych <= ':') {
  ------------------
  |  Branch (1054:9): [True: 0, False: 0]
  ------------------
 1055|      0|					if (yych <= '\'') goto yy5;
  ------------------
  |  Branch (1055:10): [True: 0, False: 0]
  ------------------
 1056|      0|					if (yych >= '*') goto yy5;
  ------------------
  |  Branch (1056:10): [True: 0, False: 0]
  ------------------
 1057|      0|				} else {
 1058|      0|					if (yych == '<') goto yy5;
  ------------------
  |  Branch (1058:10): [True: 0, False: 0]
  ------------------
 1059|      0|				}
 1060|      0|			} else {
 1061|      0|				if (yych <= '\\') {
  ------------------
  |  Branch (1061:9): [True: 0, False: 0]
  ------------------
 1062|      0|					if (yych == '[') goto yy30;
  ------------------
  |  Branch (1062:10): [True: 0, False: 0]
  ------------------
 1063|      0|					goto yy5;
 1064|      0|				} else {
 1065|      0|					if (yych <= '^') goto yy58;
  ------------------
  |  Branch (1065:10): [True: 0, False: 0]
  ------------------
 1066|      0|					if (yych <= 'z') goto yy5;
  ------------------
  |  Branch (1066:10): [True: 0, False: 0]
  ------------------
 1067|      0|					if (yych >= 0x7F) goto yy5;
  ------------------
  |  Branch (1067:10): [True: 0, False: 0]
  ------------------
 1068|      0|				}
 1069|      0|			}
 1070|      0|		}
 1071|      1|yy58:
 1072|      1|		YYDEBUG(58, *YYCURSOR);
 1073|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1074|      1|#line 498 "Zend/zend_ini_scanner.l"
 1075|      1|		{
 1076|      1|	RETURN_TOKEN(NULL_NULL, "", 0);
  ------------------
  |  |  146|      1|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      1|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      2|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  148|      1|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 1]
  |  |  |  Branch (148:34): [True: 0, False: 1]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      1|	} else {                                                       \
  |  |  151|      1|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      1|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      1|	}                                                              \
  |  |  153|      1|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      1|	return type;                                                   \
  |  |  155|      1|}
  ------------------
 1077|      0|}
 1078|      0|#line 1079 "Zend/zend_ini_scanner.c"
 1079|      0|yy59:
 1080|      0|		YYDEBUG(59, *YYCURSOR);
 1081|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1082|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1083|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1084|      0|		YYDEBUG(60, *YYCURSOR);
 1085|      0|		if (yych == '\t') goto yy59;
  ------------------
  |  Branch (1085:7): [True: 0, False: 0]
  ------------------
 1086|      0|		if (yych == ' ') goto yy59;
  ------------------
  |  Branch (1086:7): [True: 0, False: 0]
  ------------------
 1087|      0|		goto yy58;
 1088|      0|	}
 1089|       |/* *********************************** */
 1090|  7.74k|yyc_ST_OFFSET:
 1091|  7.74k|	{
 1092|  7.74k|		static const unsigned char yybm[] = {
 1093|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1094|  7.74k|			132, 140, 128, 132, 132, 128, 132, 132, 
 1095|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1096|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1097|  7.74k|			140, 132, 128, 132, 192, 132, 132,   0, 
 1098|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1099|  7.74k|			180, 180, 180, 180, 180, 180, 180, 180, 
 1100|  7.74k|			180, 180, 132, 128, 132, 132, 132, 132, 
 1101|  7.74k|			132, 164, 164, 164, 164, 164, 164, 164, 
 1102|  7.74k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1103|  7.74k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1104|  7.74k|			164, 164, 164, 132, 192, 128, 132, 164, 
 1105|  7.74k|			132, 164, 164, 164, 164, 164, 164, 164, 
 1106|  7.74k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1107|  7.74k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1108|  7.74k|			164, 164, 164, 132, 132, 132, 132, 132, 
 1109|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1110|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1111|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1112|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1113|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1114|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1115|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1116|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1117|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1118|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1119|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1120|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1121|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1122|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1123|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1124|  7.74k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1125|  7.74k|		};
 1126|  7.74k|		YYDEBUG(61, *YYCURSOR);
 1127|  7.74k|		YYFILL(2);
  ------------------
  |  |   46|  7.74k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  7.74k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  7.74k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  7.74k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  7.74k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  7.74k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  7.74k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 7.74k]
  |  |  ------------------
  ------------------
 1128|  7.74k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  7.74k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  7.74k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  7.74k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1129|  7.74k|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (1129:7): [True: 2, False: 7.74k]
  ------------------
 1130|      2|			goto yy66;
 1131|      2|		}
 1132|  7.74k|		if (yych <= '/') {
  ------------------
  |  Branch (1132:7): [True: 4.54k, False: 3.20k]
  ------------------
 1133|  4.54k|			if (yych <= '"') {
  ------------------
  |  Branch (1133:8): [True: 2.10k, False: 2.43k]
  ------------------
 1134|  2.10k|				if (yych <= '\f') {
  ------------------
  |  Branch (1134:9): [True: 247, False: 1.86k]
  ------------------
 1135|    247|					if (yych <= 0x08) goto yy63;
  ------------------
  |  Branch (1135:10): [True: 0, False: 247]
  ------------------
 1136|    247|					if (yych <= '\n') goto yy68;
  ------------------
  |  Branch (1136:10): [True: 247, False: 0]
  ------------------
 1137|  1.86k|				} else {
 1138|  1.86k|					if (yych <= '\r') goto yy68;
  ------------------
  |  Branch (1138:10): [True: 166, False: 1.69k]
  ------------------
 1139|  1.69k|					if (yych >= '"') goto yy70;
  ------------------
  |  Branch (1139:10): [True: 1.69k, False: 0]
  ------------------
 1140|  1.69k|				}
 1141|  2.43k|			} else {
 1142|  2.43k|				if (yych <= '&') {
  ------------------
  |  Branch (1142:9): [True: 76, False: 2.35k]
  ------------------
 1143|     76|					if (yych == '$') goto yy72;
  ------------------
  |  Branch (1143:10): [True: 0, False: 76]
  ------------------
 1144|  2.35k|				} else {
 1145|  2.35k|					if (yych <= '\'') goto yy73;
  ------------------
  |  Branch (1145:10): [True: 1.40k, False: 952]
  ------------------
 1146|    952|					if (yych <= ',') goto yy63;
  ------------------
  |  Branch (1146:10): [True: 952, False: 0]
  ------------------
 1147|      0|					if (yych <= '.') goto yy74;
  ------------------
  |  Branch (1147:10): [True: 0, False: 0]
  ------------------
 1148|      0|				}
 1149|  2.43k|			}
 1150|  4.54k|		} else {
 1151|  3.20k|			if (yych <= '[') {
  ------------------
  |  Branch (1151:8): [True: 2.01k, False: 1.18k]
  ------------------
 1152|  2.01k|				if (yych <= ';') {
  ------------------
  |  Branch (1152:9): [True: 1.92k, False: 93]
  ------------------
 1153|  1.92k|					if (yych <= '9') goto yy75;
  ------------------
  |  Branch (1153:10): [True: 1.75k, False: 167]
  ------------------
 1154|    167|					if (yych >= ';') goto yy68;
  ------------------
  |  Branch (1154:10): [True: 167, False: 0]
  ------------------
 1155|    167|				} else {
 1156|     93|					if (yych <= '@') goto yy63;
  ------------------
  |  Branch (1156:10): [True: 0, False: 93]
  ------------------
 1157|     93|					if (yych <= 'Z') goto yy78;
  ------------------
  |  Branch (1157:10): [True: 93, False: 0]
  ------------------
 1158|     93|				}
 1159|  2.01k|			} else {
 1160|  1.18k|				if (yych <= '^') {
  ------------------
  |  Branch (1160:9): [True: 366, False: 823]
  ------------------
 1161|    366|					if (yych <= '\\') goto yy81;
  ------------------
  |  Branch (1161:10): [True: 168, False: 198]
  ------------------
 1162|    198|					if (yych <= ']') goto yy82;
  ------------------
  |  Branch (1162:10): [True: 198, False: 0]
  ------------------
 1163|    823|				} else {
 1164|    823|					if (yych == '`') goto yy63;
  ------------------
  |  Branch (1164:10): [True: 0, False: 823]
  ------------------
 1165|    823|					if (yych <= 'z') goto yy78;
  ------------------
  |  Branch (1165:10): [True: 513, False: 310]
  ------------------
 1166|    823|				}
 1167|  1.18k|			}
 1168|  3.20k|		}
 1169|   118k|yy63:
 1170|   118k|		YYDEBUG(63, *YYCURSOR);
 1171|   118k|		yyaccept = 0;
 1172|   118k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|   118k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|   118k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   118k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|   118k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   118k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   118k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1173|   118k|		YYFILL(1);
  ------------------
  |  |   46|   118k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   118k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   118k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   118k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   118k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   118k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   118k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 157, False: 118k]
  |  |  ------------------
  ------------------
 1174|   118k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   118k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   118k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   118k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1175|   118k|yy64:
 1176|   118k|		YYDEBUG(64, *YYCURSOR);
 1177|   118k|		if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (1177:7): [True: 115k, False: 3.23k]
  ------------------
 1178|   115k|			goto yy63;
 1179|   115k|		}
 1180|  3.23k|		if (yych <= '"') goto yy65;
  ------------------
  |  Branch (1180:7): [True: 1.90k, False: 1.33k]
  ------------------
 1181|  1.33k|		if (yych <= '$') goto yy84;
  ------------------
  |  Branch (1181:7): [True: 203, False: 1.13k]
  ------------------
 1182|  1.13k|		if (yych <= ';') goto yy65;
  ------------------
  |  Branch (1182:7): [True: 1.12k, False: 5]
  ------------------
 1183|      5|		if (yych <= '\\') goto yy81;
  ------------------
  |  Branch (1183:7): [True: 5, False: 0]
  ------------------
 1184|  3.03k|yy65:
 1185|  3.03k|		YYDEBUG(65, *YYCURSOR);
 1186|  3.03k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  3.03k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  3.03k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  3.03k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  3.03k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  3.03k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  3.03k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  3.03k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  3.03k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1187|  3.03k|#line 605 "Zend/zend_ini_scanner.l"
 1188|  3.03k|		{ /* Get rest as section/offset value */
 1189|  3.03k|	RETURN_TOKEN(TC_STRING, yytext, yyleng);
  ------------------
  |  |  146|  3.03k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  3.03k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  3.03k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  3.03k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  6.06k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 3.03k]
  |  |  ------------------
  |  |  148|  3.03k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  3.03k|	} else {                                                       \
  |  |  151|  3.03k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  3.03k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  3.03k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  3.03k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  3.03k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  3.03k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  3.03k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  3.03k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  3.03k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  3.03k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  3.03k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  3.03k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  3.03k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  3.03k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  3.03k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  3.03k|	}                                                              \
  |  |  153|  3.03k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  3.03k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  3.03k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  3.03k|	return type;                                                   \
  |  |  155|  3.03k|}
  ------------------
 1190|      0|}
 1191|      0|#line 1192 "Zend/zend_ini_scanner.c"
 1192|     10|yy66:
 1193|     10|		YYDEBUG(66, *YYCURSOR);
 1194|     10|		yyaccept = 0;
 1195|     10|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|     10|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1196|     10|		YYFILL(1);
  ------------------
  |  |   46|     10|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|     10|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 1197|     10|		yych = *YYCURSOR;
  ------------------
  |  |   47|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1198|     10|		YYDEBUG(67, *YYCURSOR);
 1199|     10|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (1199:7): [True: 8, False: 2]
  ------------------
 1200|      8|			goto yy66;
 1201|      8|		}
 1202|      2|		if (yych <= '$') {
  ------------------
  |  Branch (1202:7): [True: 0, False: 2]
  ------------------
 1203|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (1203:8): [True: 0, False: 0]
  ------------------
 1204|      0|				if (yych <= 0x08) goto yy63;
  ------------------
  |  Branch (1204:9): [True: 0, False: 0]
  ------------------
 1205|      0|				if (yych <= '\n') goto yy65;
  ------------------
  |  Branch (1205:9): [True: 0, False: 0]
  ------------------
 1206|      0|				if (yych <= '\f') goto yy63;
  ------------------
  |  Branch (1206:9): [True: 0, False: 0]
  ------------------
 1207|      0|				goto yy65;
 1208|      0|			} else {
 1209|      0|				if (yych == '"') goto yy70;
  ------------------
  |  Branch (1209:9): [True: 0, False: 0]
  ------------------
 1210|      0|				if (yych <= '#') goto yy63;
  ------------------
  |  Branch (1210:9): [True: 0, False: 0]
  ------------------
 1211|      0|				goto yy84;
 1212|      0|			}
 1213|      2|		} else {
 1214|      2|			if (yych <= ';') {
  ------------------
  |  Branch (1214:8): [True: 0, False: 2]
  ------------------
 1215|      0|				if (yych == '\'') goto yy65;
  ------------------
  |  Branch (1215:9): [True: 0, False: 0]
  ------------------
 1216|      0|				if (yych <= ':') goto yy63;
  ------------------
  |  Branch (1216:9): [True: 0, False: 0]
  ------------------
 1217|      0|				goto yy65;
 1218|      2|			} else {
 1219|      2|				if (yych <= '[') goto yy63;
  ------------------
  |  Branch (1219:9): [True: 2, False: 0]
  ------------------
 1220|      0|				if (yych <= '\\') goto yy81;
  ------------------
  |  Branch (1220:9): [True: 0, False: 0]
  ------------------
 1221|      0|				if (yych <= ']') goto yy82;
  ------------------
  |  Branch (1221:9): [True: 0, False: 0]
  ------------------
 1222|      0|				goto yy63;
 1223|      0|			}
 1224|      2|		}
 1225|    580|yy68:
 1226|    580|		YYDEBUG(68, *YYCURSOR);
 1227|    580|		++YYCURSOR;
  ------------------
  |  |   47|    580|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    580|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    580|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1228|    580|yy69:
 1229|    580|		YYDEBUG(69, *YYCURSOR);
 1230|    580|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    580|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    580|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    580|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    580|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    580|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    580|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    580|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    580|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1231|    580|#line 685 "Zend/zend_ini_scanner.l"
 1232|    580|		{
 1233|    580|	return 0;
 1234|    580|}
 1235|      0|#line 1236 "Zend/zend_ini_scanner.c"
 1236|  1.69k|yy70:
 1237|  1.69k|		YYDEBUG(70, *YYCURSOR);
 1238|  1.69k|		++YYCURSOR;
  ------------------
  |  |   47|  1.69k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.69k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.69k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1239|  1.69k|		YYDEBUG(71, *YYCURSOR);
 1240|  1.69k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  1.69k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.69k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.69k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  1.69k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.69k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.69k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  1.69k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  1.69k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1241|  1.69k|#line 609 "Zend/zend_ini_scanner.l"
 1242|  1.69k|		{ /* Double quoted '"' string start */
 1243|  1.69k|	yy_push_state(ST_DOUBLE_QUOTES);
  ------------------
  |  |  180|  1.69k|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 1244|  1.69k|	return '"';
 1245|    580|}
 1246|      0|#line 1247 "Zend/zend_ini_scanner.c"
 1247|      0|yy72:
 1248|      0|		YYDEBUG(72, *YYCURSOR);
 1249|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1250|      0|		if (yych <= '\\') {
  ------------------
  |  Branch (1250:7): [True: 0, False: 0]
  ------------------
 1251|      0|			if (yych <= 0x00) goto yy69;
  ------------------
  |  Branch (1251:8): [True: 0, False: 0]
  ------------------
 1252|      0|			if (yych <= '[') goto yy63;
  ------------------
  |  Branch (1252:8): [True: 0, False: 0]
  ------------------
 1253|      0|			goto yy86;
 1254|      0|		} else {
 1255|      0|			if (yych == '{') goto yy88;
  ------------------
  |  Branch (1255:8): [True: 0, False: 0]
  ------------------
 1256|      0|			goto yy63;
 1257|      0|		}
 1258|  1.40k|yy73:
 1259|  1.40k|		YYDEBUG(73, *YYCURSOR);
 1260|  1.40k|		yych = *++YYCURSOR;
  ------------------
  |  |   47|  1.40k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.40k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.40k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1261|  1.40k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (1261:7): [True: 1.40k, False: 0]
  ------------------
 1262|  1.40k|			goto yy90;
 1263|  1.40k|		}
 1264|      0|		goto yy69;
 1265|      0|yy74:
 1266|      0|		YYDEBUG(74, *YYCURSOR);
 1267|      0|		yyaccept = 0;
 1268|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1269|      0|		if (yych <= '/') goto yy64;
  ------------------
  |  Branch (1269:7): [True: 0, False: 0]
  ------------------
 1270|      0|		if (yych <= '9') goto yy92;
  ------------------
  |  Branch (1270:7): [True: 0, False: 0]
  ------------------
 1271|      0|		goto yy64;
 1272|  2.94k|yy75:
 1273|  2.94k|		YYDEBUG(75, *YYCURSOR);
 1274|  2.94k|		yyaccept = 1;
 1275|  2.94k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  2.94k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  2.94k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.94k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  2.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  2.94k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.94k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1276|  2.94k|		YYFILL(1);
  ------------------
  |  |   46|  2.94k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  2.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.94k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.94k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  2.94k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.94k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.94k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 2.94k]
  |  |  ------------------
  ------------------
 1277|  2.94k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  2.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  2.94k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.94k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1278|  2.94k|		YYDEBUG(76, *YYCURSOR);
 1279|  2.94k|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (1279:7): [True: 1.19k, False: 1.75k]
  ------------------
 1280|  1.19k|			goto yy75;
 1281|  1.19k|		}
 1282|  1.75k|		if (yych <= '&') {
  ------------------
  |  Branch (1282:7): [True: 206, False: 1.54k]
  ------------------
 1283|    206|			if (yych <= '\r') {
  ------------------
  |  Branch (1283:8): [True: 0, False: 206]
  ------------------
 1284|      0|				if (yych == '\n') goto yy77;
  ------------------
  |  Branch (1284:9): [True: 0, False: 0]
  ------------------
 1285|      0|				if (yych <= '\f') goto yy63;
  ------------------
  |  Branch (1285:9): [True: 0, False: 0]
  ------------------
 1286|    206|			} else {
 1287|    206|				if (yych <= '"') {
  ------------------
  |  Branch (1287:9): [True: 206, False: 0]
  ------------------
 1288|    206|					if (yych <= '!') goto yy63;
  ------------------
  |  Branch (1288:10): [True: 5, False: 201]
  ------------------
 1289|    206|				} else {
 1290|      0|					if (yych == '$') goto yy84;
  ------------------
  |  Branch (1290:10): [True: 0, False: 0]
  ------------------
 1291|      0|					goto yy63;
 1292|      0|				}
 1293|    206|			}
 1294|  1.54k|		} else {
 1295|  1.54k|			if (yych <= ':') {
  ------------------
  |  Branch (1295:8): [True: 0, False: 1.54k]
  ------------------
 1296|      0|				if (yych <= '\'') goto yy77;
  ------------------
  |  Branch (1296:9): [True: 0, False: 0]
  ------------------
 1297|      0|				if (yych == '.') goto yy92;
  ------------------
  |  Branch (1297:9): [True: 0, False: 0]
  ------------------
 1298|      0|				goto yy63;
 1299|  1.54k|			} else {
 1300|  1.54k|				if (yych <= '[') {
  ------------------
  |  Branch (1300:9): [True: 170, False: 1.37k]
  ------------------
 1301|    170|					if (yych >= '<') goto yy63;
  ------------------
  |  Branch (1301:10): [True: 170, False: 0]
  ------------------
 1302|  1.37k|				} else {
 1303|  1.37k|					if (yych <= '\\') goto yy81;
  ------------------
  |  Branch (1303:10): [True: 0, False: 1.37k]
  ------------------
 1304|  1.37k|					if (yych >= '^') goto yy63;
  ------------------
  |  Branch (1304:10): [True: 1.18k, False: 198]
  ------------------
 1305|  1.37k|				}
 1306|  1.54k|			}
 1307|  1.54k|		}
 1308|    399|yy77:
 1309|    399|		YYDEBUG(77, *YYCURSOR);
 1310|    399|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    399|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    399|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    399|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    399|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    399|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    399|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    399|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    399|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1311|    399|#line 579 "Zend/zend_ini_scanner.l"
 1312|    399|		{ /* Get number option value as string */
 1313|    399|	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
  ------------------
  |  |  146|    399|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|    399|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|    399|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    399|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|    798|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 399]
  |  |  ------------------
  |  |  148|    399|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|    399|	} else {                                                       \
  |  |  151|    399|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|    399|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    399|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    399|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    399|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    399|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    399|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    399|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    399|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    399|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    399|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    399|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    399|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    399|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    399|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    399|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 399]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|    399|	}                                                              \
  |  |  153|    399|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|    399|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    399|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|    399|	return type;                                                   \
  |  |  155|    399|}
  ------------------
 1314|      0|}
 1315|      0|#line 1316 "Zend/zend_ini_scanner.c"
 1316|  1.42k|yy78:
 1317|  1.42k|		YYDEBUG(78, *YYCURSOR);
 1318|  1.42k|		yyaccept = 2;
 1319|  1.42k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  1.42k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  1.42k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.42k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  1.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.42k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.42k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1320|  1.42k|		YYFILL(1);
  ------------------
  |  |   46|  1.42k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  1.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.42k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.42k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  1.42k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.42k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.42k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1.42k]
  |  |  ------------------
  ------------------
 1321|  1.42k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  1.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.42k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.42k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1322|  1.42k|		YYDEBUG(79, *YYCURSOR);
 1323|  1.42k|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (1323:7): [True: 814, False: 606]
  ------------------
 1324|    814|			goto yy78;
 1325|    814|		}
 1326|    606|		if (yych <= '$') {
  ------------------
  |  Branch (1326:7): [True: 66, False: 540]
  ------------------
 1327|     66|			if (yych <= '\r') {
  ------------------
  |  Branch (1327:8): [True: 0, False: 66]
  ------------------
 1328|      0|				if (yych == '\n') goto yy80;
  ------------------
  |  Branch (1328:9): [True: 0, False: 0]
  ------------------
 1329|      0|				if (yych <= '\f') goto yy63;
  ------------------
  |  Branch (1329:9): [True: 0, False: 0]
  ------------------
 1330|     66|			} else {
 1331|     66|				if (yych == '"') goto yy80;
  ------------------
  |  Branch (1331:9): [True: 0, False: 66]
  ------------------
 1332|     66|				if (yych <= '#') goto yy63;
  ------------------
  |  Branch (1332:9): [True: 0, False: 66]
  ------------------
 1333|     66|				goto yy84;
 1334|     66|			}
 1335|    540|		} else {
 1336|    540|			if (yych <= ';') {
  ------------------
  |  Branch (1336:8): [True: 284, False: 256]
  ------------------
 1337|    284|				if (yych == '\'') goto yy80;
  ------------------
  |  Branch (1337:9): [True: 280, False: 4]
  ------------------
 1338|      4|				if (yych <= ':') goto yy63;
  ------------------
  |  Branch (1338:9): [True: 3, False: 1]
  ------------------
 1339|    256|			} else {
 1340|    256|				if (yych <= '[') goto yy63;
  ------------------
  |  Branch (1340:9): [True: 90, False: 166]
  ------------------
 1341|    166|				if (yych <= '\\') goto yy81;
  ------------------
  |  Branch (1341:9): [True: 166, False: 0]
  ------------------
 1342|      0|				if (yych >= '^') goto yy63;
  ------------------
  |  Branch (1342:9): [True: 0, False: 0]
  ------------------
 1343|      0|			}
 1344|    540|		}
 1345|    281|yy80:
 1346|    281|		YYDEBUG(80, *YYCURSOR);
 1347|    281|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    281|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    281|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    281|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    281|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    281|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    281|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    281|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    281|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1348|    281|#line 575 "Zend/zend_ini_scanner.l"
 1349|    281|		{ /* Get constant option value */
 1350|    281|	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
  ------------------
  |  |  146|    281|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|    281|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|    281|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    281|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|    562|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 1, False: 280]
  |  |  ------------------
  |  |  148|    281|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      1|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      1|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      1|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 1]
  |  |  |  Branch (148:34): [True: 0, False: 1]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|    281|	} else {                                                       \
  |  |  151|    281|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|    281|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    281|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    281|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    281|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    281|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    281|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    281|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    281|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    281|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    281|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    281|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    281|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    281|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    281|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    281|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 281]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|    281|	}                                                              \
  |  |  153|    281|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|    281|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    281|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|    281|	return type;                                                   \
  |  |  155|    281|}
  ------------------
 1351|      0|}
 1352|      0|#line 1353 "Zend/zend_ini_scanner.c"
 1353|    339|yy81:
 1354|    339|		YYDEBUG(81, *YYCURSOR);
 1355|    339|		++YYCURSOR;
  ------------------
  |  |   47|    339|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    339|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    339|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1356|    339|		YYFILL(1);
  ------------------
  |  |   46|    339|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|    339|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    339|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    339|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|    339|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    339|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    339|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 339]
  |  |  ------------------
  ------------------
 1357|    339|		yych = *YYCURSOR;
  ------------------
  |  |   47|    339|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    339|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    339|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1358|    339|		goto yy63;
 1359|    198|yy82:
 1360|    198|		YYDEBUG(82, *YYCURSOR);
 1361|    198|		++YYCURSOR;
  ------------------
  |  |   47|    198|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    198|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    198|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1362|    198|		YYDEBUG(83, *YYCURSOR);
 1363|    198|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    198|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    198|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    198|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    198|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    198|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    198|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    198|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    198|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1364|    198|#line 416 "Zend/zend_ini_scanner.l"
 1365|    198|		{ /* End of section or an option offset */
 1366|    198|	BEGIN(INITIAL);
  ------------------
  |  |   57|    198|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|    198|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    198|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    198|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1367|    198|	return ']';
 1368|    339|}
 1369|      0|#line 1370 "Zend/zend_ini_scanner.c"
 1370|    269|yy84:
 1371|    269|		YYDEBUG(84, *YYCURSOR);
 1372|    269|		++YYCURSOR;
  ------------------
  |  |   47|    269|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    269|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    269|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1373|    269|		YYFILL(1);
  ------------------
  |  |   46|    269|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|    269|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    269|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    269|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|    269|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    269|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    269|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 269]
  |  |  ------------------
  ------------------
 1374|    269|		yych = *YYCURSOR;
  ------------------
  |  |   47|    269|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    269|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    269|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1375|    269|		if (yych <= '\\') {
  ------------------
  |  Branch (1375:7): [True: 203, False: 66]
  ------------------
 1376|    203|			if (yych <= 0x00) goto yy85;
  ------------------
  |  Branch (1376:8): [True: 0, False: 203]
  ------------------
 1377|    203|			if (yych <= '[') goto yy63;
  ------------------
  |  Branch (1377:8): [True: 203, False: 0]
  ------------------
 1378|      0|			goto yy86;
 1379|    203|		} else {
 1380|     66|			if (yych != '{') goto yy63;
  ------------------
  |  Branch (1380:8): [True: 66, False: 0]
  ------------------
 1381|     66|		}
 1382|      0|yy85:
 1383|      0|		YYDEBUG(85, *YYCURSOR);
 1384|      0|		YYCURSOR = YYMARKER;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1385|      0|		if (yyaccept <= 1) {
  ------------------
  |  Branch (1385:7): [True: 0, False: 0]
  ------------------
 1386|      0|			if (yyaccept == 0) {
  ------------------
  |  Branch (1386:8): [True: 0, False: 0]
  ------------------
 1387|      0|				goto yy65;
 1388|      0|			} else {
 1389|      0|				goto yy77;
 1390|      0|			}
 1391|      0|		} else {
 1392|      0|			goto yy80;
 1393|      0|		}
 1394|      0|yy86:
 1395|      0|		YYDEBUG(86, *YYCURSOR);
 1396|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1397|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1398|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1399|      0|		YYDEBUG(87, *YYCURSOR);
 1400|      0|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (1400:7): [True: 0, False: 0]
  ------------------
 1401|      0|			goto yy86;
 1402|      0|		}
 1403|      0|		goto yy63;
 1404|      0|yy88:
 1405|      0|		YYDEBUG(88, *YYCURSOR);
 1406|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1407|      0|		YYDEBUG(89, *YYCURSOR);
 1408|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1409|      0|#line 421 "Zend/zend_ini_scanner.l"
 1410|      0|		{ /* Variable start */
 1411|      0|	yy_push_state(ST_VARNAME);
  ------------------
  |  |  180|      0|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 1412|      0|	return TC_DOLLAR_CURLY;
 1413|      0|}
 1414|      0|#line 1415 "Zend/zend_ini_scanner.c"
 1415|  25.2k|yy90:
 1416|  25.2k|		YYDEBUG(90, *YYCURSOR);
 1417|  25.2k|		++YYCURSOR;
  ------------------
  |  |   47|  25.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  25.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  25.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|  25.2k|		YYFILL(1);
  ------------------
  |  |   46|  25.2k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  25.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  25.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  25.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  25.2k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  25.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  25.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 29, False: 25.2k]
  |  |  ------------------
  ------------------
 1419|  25.2k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  25.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  25.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  25.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1420|  25.2k|		YYDEBUG(91, *YYCURSOR);
 1421|  25.2k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (1421:7): [True: 23.8k, False: 1.37k]
  ------------------
 1422|  23.8k|			goto yy90;
 1423|  23.8k|		}
 1424|  1.37k|		goto yy94;
 1425|  1.37k|yy92:
 1426|      0|		YYDEBUG(92, *YYCURSOR);
 1427|      0|		yyaccept = 1;
 1428|      0|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1429|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1430|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1431|      0|		YYDEBUG(93, *YYCURSOR);
 1432|      0|		if (yych <= '&') {
  ------------------
  |  Branch (1432:7): [True: 0, False: 0]
  ------------------
 1433|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (1433:8): [True: 0, False: 0]
  ------------------
 1434|      0|				if (yych == '\n') goto yy77;
  ------------------
  |  Branch (1434:9): [True: 0, False: 0]
  ------------------
 1435|      0|				if (yych <= '\f') goto yy63;
  ------------------
  |  Branch (1435:9): [True: 0, False: 0]
  ------------------
 1436|      0|				goto yy77;
 1437|      0|			} else {
 1438|      0|				if (yych <= '"') {
  ------------------
  |  Branch (1438:9): [True: 0, False: 0]
  ------------------
 1439|      0|					if (yych <= '!') goto yy63;
  ------------------
  |  Branch (1439:10): [True: 0, False: 0]
  ------------------
 1440|      0|					goto yy77;
 1441|      0|				} else {
 1442|      0|					if (yych == '$') goto yy84;
  ------------------
  |  Branch (1442:10): [True: 0, False: 0]
  ------------------
 1443|      0|					goto yy63;
 1444|      0|				}
 1445|      0|			}
 1446|      0|		} else {
 1447|      0|			if (yych <= ':') {
  ------------------
  |  Branch (1447:8): [True: 0, False: 0]
  ------------------
 1448|      0|				if (yych <= '\'') goto yy77;
  ------------------
  |  Branch (1448:9): [True: 0, False: 0]
  ------------------
 1449|      0|				if (yych <= '/') goto yy63;
  ------------------
  |  Branch (1449:9): [True: 0, False: 0]
  ------------------
 1450|      0|				if (yych <= '9') goto yy92;
  ------------------
  |  Branch (1450:9): [True: 0, False: 0]
  ------------------
 1451|      0|				goto yy63;
 1452|      0|			} else {
 1453|      0|				if (yych <= '[') {
  ------------------
  |  Branch (1453:9): [True: 0, False: 0]
  ------------------
 1454|      0|					if (yych <= ';') goto yy77;
  ------------------
  |  Branch (1454:10): [True: 0, False: 0]
  ------------------
 1455|      0|					goto yy63;
 1456|      0|				} else {
 1457|      0|					if (yych <= '\\') goto yy81;
  ------------------
  |  Branch (1457:10): [True: 0, False: 0]
  ------------------
 1458|      0|					if (yych <= ']') goto yy77;
  ------------------
  |  Branch (1458:10): [True: 0, False: 0]
  ------------------
 1459|      0|					goto yy63;
 1460|      0|				}
 1461|      0|			}
 1462|      0|		}
 1463|  1.37k|yy94:
 1464|  1.37k|		YYDEBUG(94, *YYCURSOR);
 1465|  1.37k|		++YYCURSOR;
  ------------------
  |  |   47|  1.37k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1466|  1.37k|		YYDEBUG(95, *YYCURSOR);
 1467|  1.37k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  1.37k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  1.37k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1468|  1.37k|#line 388 "Zend/zend_ini_scanner.l"
 1469|  1.37k|		{ /* Raw string */
 1470|       |	/* Eat leading and trailing single quotes */
 1471|  1.37k|	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   59|  1.37k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   59|  1.37k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   60|  1.37k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1471:6): [True: 1.37k, False: 0]
  |  Branch (1471:27): [True: 1.37k, False: 0]
  ------------------
 1472|  1.37k|		SCNG(yy_text)++;
  ------------------
  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1473|  1.37k|		yyleng = yyleng - 2;
  ------------------
  |  |   60|  1.37k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = yyleng - 2;
  ------------------
  |  |   60|  1.37k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1474|  1.37k|	}
 1475|  1.37k|	RETURN_TOKEN(TC_RAW, yytext, yyleng);
  ------------------
  |  |  146|  1.37k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  1.37k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  1.37k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.37k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  2.75k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 1.37k]
  |  |  ------------------
  |  |  148|  1.37k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  1.37k|	} else {                                                       \
  |  |  151|  1.37k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  1.37k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  1.37k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  1.37k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  1.37k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  1.37k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  1.37k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  1.37k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  1.37k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  1.37k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  1.37k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  1.37k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  1.37k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  1.37k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  1.37k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  1.37k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  1.37k|	}                                                              \
  |  |  153|  1.37k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  1.37k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  1.37k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  1.37k|	return type;                                                   \
  |  |  155|  1.37k|}
  ------------------
 1476|      0|}
 1477|      0|#line 1478 "Zend/zend_ini_scanner.c"
 1478|      0|	}
 1479|       |/* *********************************** */
 1480|  9.55k|yyc_ST_SECTION_VALUE:
 1481|  9.55k|	{
 1482|  9.55k|		static const unsigned char yybm[] = {
 1483|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1484|  9.55k|			132, 140, 128, 132, 132, 128, 132, 132, 
 1485|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1486|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1487|  9.55k|			140, 132, 128, 132, 192, 132, 132,   0, 
 1488|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1489|  9.55k|			180, 180, 180, 180, 180, 180, 180, 180, 
 1490|  9.55k|			180, 180, 132, 128, 132, 132, 132, 132, 
 1491|  9.55k|			132, 164, 164, 164, 164, 164, 164, 164, 
 1492|  9.55k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1493|  9.55k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1494|  9.55k|			164, 164, 164, 132, 192, 128, 132, 164, 
 1495|  9.55k|			132, 164, 164, 164, 164, 164, 164, 164, 
 1496|  9.55k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1497|  9.55k|			164, 164, 164, 164, 164, 164, 164, 164, 
 1498|  9.55k|			164, 164, 164, 132, 132, 132, 132, 132, 
 1499|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1500|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1501|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1502|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1503|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1504|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1505|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1506|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1507|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1508|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1509|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1510|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1511|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1512|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1513|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1514|  9.55k|			132, 132, 132, 132, 132, 132, 132, 132, 
 1515|  9.55k|		};
 1516|  9.55k|		YYDEBUG(96, *YYCURSOR);
 1517|  9.55k|		YYFILL(2);
  ------------------
  |  |   46|  9.55k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  9.55k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  9.55k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  9.55k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  9.55k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  9.55k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  9.55k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 1518|  9.55k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  9.55k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  9.55k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.55k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1519|  9.55k|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (1519:7): [True: 1, False: 9.55k]
  ------------------
 1520|      1|			goto yy101;
 1521|      1|		}
 1522|  9.55k|		if (yych <= '/') {
  ------------------
  |  Branch (1522:7): [True: 549, False: 9.00k]
  ------------------
 1523|    549|			if (yych <= '"') {
  ------------------
  |  Branch (1523:8): [True: 339, False: 210]
  ------------------
 1524|    339|				if (yych <= '\f') {
  ------------------
  |  Branch (1524:9): [True: 119, False: 220]
  ------------------
 1525|    119|					if (yych <= 0x08) goto yy98;
  ------------------
  |  Branch (1525:10): [True: 2, False: 117]
  ------------------
 1526|    117|					if (yych <= '\n') goto yy103;
  ------------------
  |  Branch (1526:10): [True: 117, False: 0]
  ------------------
 1527|    220|				} else {
 1528|    220|					if (yych <= '\r') goto yy103;
  ------------------
  |  Branch (1528:10): [True: 1, False: 219]
  ------------------
 1529|    219|					if (yych >= '"') goto yy105;
  ------------------
  |  Branch (1529:10): [True: 218, False: 1]
  ------------------
 1530|    219|				}
 1531|    339|			} else {
 1532|    210|				if (yych <= '&') {
  ------------------
  |  Branch (1532:9): [True: 6, False: 204]
  ------------------
 1533|      6|					if (yych == '$') goto yy107;
  ------------------
  |  Branch (1533:10): [True: 6, False: 0]
  ------------------
 1534|    204|				} else {
 1535|    204|					if (yych <= '\'') goto yy108;
  ------------------
  |  Branch (1535:10): [True: 126, False: 78]
  ------------------
 1536|     78|					if (yych <= ',') goto yy98;
  ------------------
  |  Branch (1536:10): [True: 0, False: 78]
  ------------------
 1537|     78|					if (yych <= '.') goto yy109;
  ------------------
  |  Branch (1537:10): [True: 77, False: 1]
  ------------------
 1538|     78|				}
 1539|    210|			}
 1540|  9.00k|		} else {
 1541|  9.00k|			if (yych <= '[') {
  ------------------
  |  Branch (1541:8): [True: 4.78k, False: 4.22k]
  ------------------
 1542|  4.78k|				if (yych <= ';') {
  ------------------
  |  Branch (1542:9): [True: 4.43k, False: 355]
  ------------------
 1543|  4.43k|					if (yych <= '9') goto yy110;
  ------------------
  |  Branch (1543:10): [True: 4.42k, False: 1]
  ------------------
 1544|      1|					if (yych >= ';') goto yy103;
  ------------------
  |  Branch (1544:10): [True: 1, False: 0]
  ------------------
 1545|    355|				} else {
 1546|    355|					if (yych <= '@') goto yy98;
  ------------------
  |  Branch (1546:10): [True: 1, False: 354]
  ------------------
 1547|    354|					if (yych <= 'Z') goto yy113;
  ------------------
  |  Branch (1547:10): [True: 354, False: 0]
  ------------------
 1548|    354|				}
 1549|  4.78k|			} else {
 1550|  4.22k|				if (yych <= '^') {
  ------------------
  |  Branch (1550:9): [True: 4.04k, False: 180]
  ------------------
 1551|  4.04k|					if (yych <= '\\') goto yy116;
  ------------------
  |  Branch (1551:10): [True: 0, False: 4.04k]
  ------------------
 1552|  4.04k|					if (yych <= ']') goto yy117;
  ------------------
  |  Branch (1552:10): [True: 4.04k, False: 0]
  ------------------
 1553|  4.04k|				} else {
 1554|    180|					if (yych == '`') goto yy98;
  ------------------
  |  Branch (1554:10): [True: 0, False: 180]
  ------------------
 1555|    180|					if (yych <= 'z') goto yy113;
  ------------------
  |  Branch (1555:10): [True: 52, False: 128]
  ------------------
 1556|    180|				}
 1557|  4.22k|			}
 1558|  9.00k|		}
 1559|   196k|yy98:
 1560|   196k|		YYDEBUG(98, *YYCURSOR);
 1561|   196k|		yyaccept = 0;
 1562|   196k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|   196k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|   196k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   196k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|   196k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   196k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   196k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1563|   196k|		YYFILL(1);
  ------------------
  |  |   46|   196k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   196k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   196k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   196k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   196k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   196k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   196k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 591, False: 195k]
  |  |  ------------------
  ------------------
 1564|   195k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   195k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   195k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   195k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1565|   195k|yy99:
 1566|   195k|		YYDEBUG(99, *YYCURSOR);
 1567|   195k|		if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (1567:7): [True: 191k, False: 4.18k]
  ------------------
 1568|   191k|			goto yy98;
 1569|   191k|		}
 1570|  4.18k|		if (yych <= '"') goto yy100;
  ------------------
  |  Branch (1570:7): [True: 143, False: 4.03k]
  ------------------
 1571|  4.03k|		if (yych <= '$') goto yy120;
  ------------------
  |  Branch (1571:7): [True: 3, False: 4.03k]
  ------------------
 1572|  4.03k|		if (yych <= ';') goto yy100;
  ------------------
  |  Branch (1572:7): [True: 28, False: 4.00k]
  ------------------
 1573|  4.00k|		if (yych <= '\\') goto yy116;
  ------------------
  |  Branch (1573:7): [True: 0, False: 4.00k]
  ------------------
 1574|  4.18k|yy100:
 1575|  4.18k|		YYDEBUG(100, *YYCURSOR);
 1576|  4.18k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  4.18k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  4.18k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.18k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  4.18k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.18k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.18k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  4.18k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  4.18k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1577|  4.18k|#line 605 "Zend/zend_ini_scanner.l"
 1578|  4.18k|		{ /* Get rest as section/offset value */
 1579|  4.18k|	RETURN_TOKEN(TC_STRING, yytext, yyleng);
  ------------------
  |  |  146|  4.18k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  4.18k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  4.18k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.18k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  8.36k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 6, False: 4.17k]
  |  |  ------------------
  |  |  148|  4.18k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      6|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      6|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      6|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      6|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      6|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      6|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 6]
  |  |  |  Branch (148:34): [True: 0, False: 6]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  4.18k|	} else {                                                       \
  |  |  151|  4.18k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  4.18k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  4.18k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  4.18k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  4.18k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  4.18k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  4.18k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  4.18k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  4.18k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  4.18k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  4.18k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  4.18k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  4.18k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  4.18k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  4.18k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  4.18k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 4.18k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  4.18k|	}                                                              \
  |  |  153|  4.18k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  4.18k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  4.18k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  4.18k|	return type;                                                   \
  |  |  155|  4.18k|}
  ------------------
 1580|      0|}
 1581|      0|#line 1582 "Zend/zend_ini_scanner.c"
 1582|      1|yy101:
 1583|      1|		YYDEBUG(101, *YYCURSOR);
 1584|      1|		yyaccept = 0;
 1585|      1|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1586|      1|		YYFILL(1);
  ------------------
  |  |   46|      1|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1587|      1|		yych = *YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1588|      1|		YYDEBUG(102, *YYCURSOR);
 1589|      1|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (1589:7): [True: 0, False: 1]
  ------------------
 1590|      0|			goto yy101;
 1591|      0|		}
 1592|      1|		if (yych <= '$') {
  ------------------
  |  Branch (1592:7): [True: 0, False: 1]
  ------------------
 1593|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (1593:8): [True: 0, False: 0]
  ------------------
 1594|      0|				if (yych <= 0x08) goto yy98;
  ------------------
  |  Branch (1594:9): [True: 0, False: 0]
  ------------------
 1595|      0|				if (yych <= '\n') goto yy100;
  ------------------
  |  Branch (1595:9): [True: 0, False: 0]
  ------------------
 1596|      0|				if (yych <= '\f') goto yy98;
  ------------------
  |  Branch (1596:9): [True: 0, False: 0]
  ------------------
 1597|      0|				goto yy100;
 1598|      0|			} else {
 1599|      0|				if (yych == '"') goto yy105;
  ------------------
  |  Branch (1599:9): [True: 0, False: 0]
  ------------------
 1600|      0|				if (yych <= '#') goto yy98;
  ------------------
  |  Branch (1600:9): [True: 0, False: 0]
  ------------------
 1601|      0|				goto yy120;
 1602|      0|			}
 1603|      1|		} else {
 1604|      1|			if (yych <= ';') {
  ------------------
  |  Branch (1604:8): [True: 0, False: 1]
  ------------------
 1605|      0|				if (yych == '\'') goto yy100;
  ------------------
  |  Branch (1605:9): [True: 0, False: 0]
  ------------------
 1606|      0|				if (yych <= ':') goto yy98;
  ------------------
  |  Branch (1606:9): [True: 0, False: 0]
  ------------------
 1607|      0|				goto yy100;
 1608|      1|			} else {
 1609|      1|				if (yych <= '[') goto yy98;
  ------------------
  |  Branch (1609:9): [True: 0, False: 1]
  ------------------
 1610|      1|				if (yych <= '\\') goto yy116;
  ------------------
  |  Branch (1610:9): [True: 0, False: 1]
  ------------------
 1611|      1|				if (yych <= ']') goto yy100;
  ------------------
  |  Branch (1611:9): [True: 1, False: 0]
  ------------------
 1612|      0|				goto yy98;
 1613|      1|			}
 1614|      1|		}
 1615|    119|yy103:
 1616|    119|		YYDEBUG(103, *YYCURSOR);
 1617|    119|		++YYCURSOR;
  ------------------
  |  |   47|    119|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    119|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    119|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1618|    119|yy104:
 1619|    119|		YYDEBUG(104, *YYCURSOR);
 1620|    119|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    119|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    119|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    119|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    119|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    119|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    119|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    119|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    119|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1621|    119|#line 685 "Zend/zend_ini_scanner.l"
 1622|    119|		{
 1623|    119|	return 0;
 1624|    119|}
 1625|      0|#line 1626 "Zend/zend_ini_scanner.c"
 1626|    218|yy105:
 1627|    218|		YYDEBUG(105, *YYCURSOR);
 1628|    218|		++YYCURSOR;
  ------------------
  |  |   47|    218|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    218|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    218|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1629|    218|		YYDEBUG(106, *YYCURSOR);
 1630|    218|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    218|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    218|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    218|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    218|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    218|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    218|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    218|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    218|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1631|    218|#line 609 "Zend/zend_ini_scanner.l"
 1632|    218|		{ /* Double quoted '"' string start */
 1633|    218|	yy_push_state(ST_DOUBLE_QUOTES);
  ------------------
  |  |  180|    218|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 1634|    218|	return '"';
 1635|    119|}
 1636|      0|#line 1637 "Zend/zend_ini_scanner.c"
 1637|      6|yy107:
 1638|      6|		YYDEBUG(107, *YYCURSOR);
 1639|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1640|      6|		if (yych <= '\\') {
  ------------------
  |  Branch (1640:7): [True: 0, False: 6]
  ------------------
 1641|      0|			if (yych <= 0x00) goto yy104;
  ------------------
  |  Branch (1641:8): [True: 0, False: 0]
  ------------------
 1642|      0|			if (yych <= '[') goto yy98;
  ------------------
  |  Branch (1642:8): [True: 0, False: 0]
  ------------------
 1643|      0|			goto yy122;
 1644|      6|		} else {
 1645|      6|			if (yych == '{') goto yy124;
  ------------------
  |  Branch (1645:8): [True: 6, False: 0]
  ------------------
 1646|      0|			goto yy98;
 1647|      6|		}
 1648|    126|yy108:
 1649|    126|		YYDEBUG(108, *YYCURSOR);
 1650|    126|		yych = *++YYCURSOR;
  ------------------
  |  |   47|    126|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1651|    126|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (1651:7): [True: 126, False: 0]
  ------------------
 1652|    126|			goto yy126;
 1653|    126|		}
 1654|      0|		goto yy104;
 1655|     77|yy109:
 1656|     77|		YYDEBUG(109, *YYCURSOR);
 1657|     77|		yyaccept = 0;
 1658|     77|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|     77|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1659|     77|		if (yych <= '/') goto yy99;
  ------------------
  |  Branch (1659:7): [True: 0, False: 77]
  ------------------
 1660|     77|		if (yych <= '9') goto yy128;
  ------------------
  |  Branch (1660:7): [True: 77, False: 0]
  ------------------
 1661|      0|		goto yy99;
 1662|  5.21k|yy110:
 1663|  5.21k|		YYDEBUG(110, *YYCURSOR);
 1664|  5.21k|		yyaccept = 1;
 1665|  5.21k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  5.21k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  5.21k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  5.21k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  5.21k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  5.21k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  5.21k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1666|  5.21k|		YYFILL(1);
  ------------------
  |  |   46|  5.21k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  5.21k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  5.21k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  5.21k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  5.21k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  5.21k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  5.21k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 5.21k]
  |  |  ------------------
  ------------------
 1667|  5.21k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  5.21k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  5.21k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  5.21k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1668|  5.21k|		YYDEBUG(111, *YYCURSOR);
 1669|  5.21k|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (1669:7): [True: 785, False: 4.42k]
  ------------------
 1670|    785|			goto yy110;
 1671|    785|		}
 1672|  4.42k|		if (yych <= '&') {
  ------------------
  |  Branch (1672:7): [True: 281, False: 4.14k]
  ------------------
 1673|    281|			if (yych <= '\r') {
  ------------------
  |  Branch (1673:8): [True: 91, False: 190]
  ------------------
 1674|     91|				if (yych == '\n') goto yy112;
  ------------------
  |  Branch (1674:9): [True: 0, False: 91]
  ------------------
 1675|     91|				if (yych <= '\f') goto yy98;
  ------------------
  |  Branch (1675:9): [True: 90, False: 1]
  ------------------
 1676|    190|			} else {
 1677|    190|				if (yych <= '"') {
  ------------------
  |  Branch (1677:9): [True: 91, False: 99]
  ------------------
 1678|     91|					if (yych <= '!') goto yy98;
  ------------------
  |  Branch (1678:10): [True: 1, False: 90]
  ------------------
 1679|     99|				} else {
 1680|     99|					if (yych == '$') goto yy120;
  ------------------
  |  Branch (1680:10): [True: 0, False: 99]
  ------------------
 1681|     99|					goto yy98;
 1682|     99|				}
 1683|    190|			}
 1684|  4.14k|		} else {
 1685|  4.14k|			if (yych <= ':') {
  ------------------
  |  Branch (1685:8): [True: 0, False: 4.14k]
  ------------------
 1686|      0|				if (yych <= '\'') goto yy112;
  ------------------
  |  Branch (1686:9): [True: 0, False: 0]
  ------------------
 1687|      0|				if (yych == '.') goto yy128;
  ------------------
  |  Branch (1687:9): [True: 0, False: 0]
  ------------------
 1688|      0|				goto yy98;
 1689|  4.14k|			} else {
 1690|  4.14k|				if (yych <= '[') {
  ------------------
  |  Branch (1690:9): [True: 1, False: 4.14k]
  ------------------
 1691|      1|					if (yych >= '<') goto yy98;
  ------------------
  |  Branch (1691:10): [True: 1, False: 0]
  ------------------
 1692|  4.14k|				} else {
 1693|  4.14k|					if (yych <= '\\') goto yy116;
  ------------------
  |  Branch (1693:10): [True: 1, False: 4.14k]
  ------------------
 1694|  4.14k|					if (yych >= '^') goto yy98;
  ------------------
  |  Branch (1694:10): [True: 4.12k, False: 25]
  ------------------
 1695|  4.14k|				}
 1696|  4.14k|			}
 1697|  4.14k|		}
 1698|    116|yy112:
 1699|    116|		YYDEBUG(112, *YYCURSOR);
 1700|    116|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    116|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    116|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    116|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    116|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    116|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    116|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    116|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    116|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1701|    116|#line 579 "Zend/zend_ini_scanner.l"
 1702|    116|		{ /* Get number option value as string */
 1703|    116|	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
  ------------------
  |  |  146|    116|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|    116|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|    116|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    116|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|    232|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 23, False: 93]
  |  |  ------------------
  |  |  148|    116|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|     23|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|     23|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|     23|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|     23|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|     23|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|     23|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|     23|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|     23|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|     23|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|     23|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 23]
  |  |  |  Branch (148:34): [True: 0, False: 23]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|    116|	} else {                                                       \
  |  |  151|    116|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|    116|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    116|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    116|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    116|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    116|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    116|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    116|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    116|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    116|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    116|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    116|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    116|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    116|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    116|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    116|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 116]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|    116|	}                                                              \
  |  |  153|    116|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|    116|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    116|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|    116|	return type;                                                   \
  |  |  155|    116|}
  ------------------
 1704|      0|}
 1705|      0|#line 1706 "Zend/zend_ini_scanner.c"
 1706|  4.11k|yy113:
 1707|  4.11k|		YYDEBUG(113, *YYCURSOR);
 1708|  4.11k|		yyaccept = 2;
 1709|  4.11k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  4.11k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  4.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  4.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1710|  4.11k|		YYFILL(1);
  ------------------
  |  |   46|  4.11k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  4.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.11k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  4.11k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.11k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 4.11k]
  |  |  ------------------
  ------------------
 1711|  4.11k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  4.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.11k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.11k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1712|  4.11k|		YYDEBUG(114, *YYCURSOR);
 1713|  4.11k|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (1713:7): [True: 3.71k, False: 406]
  ------------------
 1714|  3.71k|			goto yy113;
 1715|  3.71k|		}
 1716|    406|		if (yych <= '$') {
  ------------------
  |  Branch (1716:7): [True: 159, False: 247]
  ------------------
 1717|    159|			if (yych <= '\r') {
  ------------------
  |  Branch (1717:8): [True: 25, False: 134]
  ------------------
 1718|     25|				if (yych == '\n') goto yy115;
  ------------------
  |  Branch (1718:9): [True: 25, False: 0]
  ------------------
 1719|      0|				if (yych <= '\f') goto yy98;
  ------------------
  |  Branch (1719:9): [True: 0, False: 0]
  ------------------
 1720|    134|			} else {
 1721|    134|				if (yych == '"') goto yy115;
  ------------------
  |  Branch (1721:9): [True: 26, False: 108]
  ------------------
 1722|    108|				if (yych <= '#') goto yy98;
  ------------------
  |  Branch (1722:9): [True: 108, False: 0]
  ------------------
 1723|      0|				goto yy120;
 1724|    108|			}
 1725|    247|		} else {
 1726|    247|			if (yych <= ';') {
  ------------------
  |  Branch (1726:8): [True: 99, False: 148]
  ------------------
 1727|     99|				if (yych == '\'') goto yy115;
  ------------------
  |  Branch (1727:9): [True: 99, False: 0]
  ------------------
 1728|      0|				if (yych <= ':') goto yy98;
  ------------------
  |  Branch (1728:9): [True: 0, False: 0]
  ------------------
 1729|    148|			} else {
 1730|    148|				if (yych <= '[') goto yy98;
  ------------------
  |  Branch (1730:9): [True: 142, False: 6]
  ------------------
 1731|      6|				if (yych <= '\\') goto yy116;
  ------------------
  |  Branch (1731:9): [True: 0, False: 6]
  ------------------
 1732|      6|				if (yych >= '^') goto yy98;
  ------------------
  |  Branch (1732:9): [True: 0, False: 6]
  ------------------
 1733|      6|			}
 1734|    247|		}
 1735|    156|yy115:
 1736|    156|		YYDEBUG(115, *YYCURSOR);
 1737|    156|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    156|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    156|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    156|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    156|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    156|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    156|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    156|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    156|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1738|    156|#line 575 "Zend/zend_ini_scanner.l"
 1739|    156|		{ /* Get constant option value */
 1740|    156|	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
  ------------------
  |  |  146|    156|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|    156|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|    156|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    156|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|    312|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 3, False: 153]
  |  |  ------------------
  |  |  148|    156|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      3|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      3|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      3|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      3|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      3|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      3|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 3]
  |  |  |  Branch (148:34): [True: 0, False: 3]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|    156|	} else {                                                       \
  |  |  151|    156|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|    156|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    156|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    156|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    156|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    156|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    156|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    156|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    156|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    156|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    156|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    156|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    156|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    156|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    156|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    156|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 156]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|    156|	}                                                              \
  |  |  153|    156|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|    156|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    156|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|    156|	return type;                                                   \
  |  |  155|    156|}
  ------------------
 1741|      0|}
 1742|      0|#line 1743 "Zend/zend_ini_scanner.c"
 1743|      1|yy116:
 1744|      1|		YYDEBUG(116, *YYCURSOR);
 1745|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1746|      1|		YYFILL(1);
  ------------------
  |  |   46|      1|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1747|      1|		yych = *YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1748|      1|		goto yy98;
 1749|  4.04k|yy117:
 1750|  4.04k|		YYDEBUG(117, *YYCURSOR);
 1751|  4.04k|		++YYCURSOR;
  ------------------
  |  |   47|  4.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1752|  4.04k|		YYFILL(2);
  ------------------
  |  |   46|  4.04k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  4.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  4.04k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 4.04k]
  |  |  ------------------
  ------------------
 1753|  4.04k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  4.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1754|  4.04k|		YYDEBUG(118, *YYCURSOR);
 1755|  4.04k|		if (yych <= '\f') {
  ------------------
  |  Branch (1755:7): [True: 4.03k, False: 5]
  ------------------
 1756|  4.03k|			if (yych <= 0x08) goto yy119;
  ------------------
  |  Branch (1756:8): [True: 0, False: 4.03k]
  ------------------
 1757|  4.03k|			if (yych <= '\t') goto yy117;
  ------------------
  |  Branch (1757:8): [True: 1, False: 4.03k]
  ------------------
 1758|  4.03k|			if (yych <= '\n') goto yy130;
  ------------------
  |  Branch (1758:8): [True: 4.03k, False: 0]
  ------------------
 1759|  4.03k|		} else {
 1760|      5|			if (yych <= '\r') goto yy131;
  ------------------
  |  Branch (1760:8): [True: 0, False: 5]
  ------------------
 1761|      5|			if (yych == ' ') goto yy117;
  ------------------
  |  Branch (1761:8): [True: 0, False: 5]
  ------------------
 1762|      5|		}
 1763|  4.04k|yy119:
 1764|  4.04k|		YYDEBUG(119, *YYCURSOR);
 1765|  4.04k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  4.04k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  4.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1766|  4.04k|#line 397 "Zend/zend_ini_scanner.l"
 1767|  4.04k|		{ /* End of section */
 1768|  4.04k|	BEGIN(INITIAL);
  ------------------
  |  |   57|  4.04k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  4.04k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1769|  4.04k|	SCNG(lineno)++;
  ------------------
  |  |  106|  4.04k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  4.04k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1770|  4.04k|	return ']';
 1771|  4.04k|}
 1772|      0|#line 1773 "Zend/zend_ini_scanner.c"
 1773|      3|yy120:
 1774|      3|		YYDEBUG(120, *YYCURSOR);
 1775|      3|		++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1776|      3|		YYFILL(1);
  ------------------
  |  |   46|      3|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      3|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1777|      3|		yych = *YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1778|      3|		if (yych <= '\\') {
  ------------------
  |  Branch (1778:7): [True: 0, False: 3]
  ------------------
 1779|      0|			if (yych <= 0x00) goto yy121;
  ------------------
  |  Branch (1779:8): [True: 0, False: 0]
  ------------------
 1780|      0|			if (yych <= '[') goto yy98;
  ------------------
  |  Branch (1780:8): [True: 0, False: 0]
  ------------------
 1781|      0|			goto yy122;
 1782|      3|		} else {
 1783|      3|			if (yych != '{') goto yy98;
  ------------------
  |  Branch (1783:8): [True: 0, False: 3]
  ------------------
 1784|      3|		}
 1785|      3|yy121:
 1786|      3|		YYDEBUG(121, *YYCURSOR);
 1787|      3|		YYCURSOR = YYMARKER;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   49|      3|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1788|      3|		if (yyaccept <= 1) {
  ------------------
  |  Branch (1788:7): [True: 3, False: 0]
  ------------------
 1789|      3|			if (yyaccept == 0) {
  ------------------
  |  Branch (1789:8): [True: 3, False: 0]
  ------------------
 1790|      3|				goto yy100;
 1791|      3|			} else {
 1792|      0|				goto yy112;
 1793|      0|			}
 1794|      3|		} else {
 1795|      0|			goto yy115;
 1796|      0|		}
 1797|      0|yy122:
 1798|      0|		YYDEBUG(122, *YYCURSOR);
 1799|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1800|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1801|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1802|      0|		YYDEBUG(123, *YYCURSOR);
 1803|      0|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (1803:7): [True: 0, False: 0]
  ------------------
 1804|      0|			goto yy122;
 1805|      0|		}
 1806|      0|		goto yy98;
 1807|      6|yy124:
 1808|      6|		YYDEBUG(124, *YYCURSOR);
 1809|      6|		++YYCURSOR;
  ------------------
  |  |   47|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1810|      6|		YYDEBUG(125, *YYCURSOR);
 1811|      6|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      6|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      6|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      6|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1812|      6|#line 421 "Zend/zend_ini_scanner.l"
 1813|      6|		{ /* Variable start */
 1814|      6|	yy_push_state(ST_VARNAME);
  ------------------
  |  |  180|      6|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 1815|      6|	return TC_DOLLAR_CURLY;
 1816|      0|}
 1817|      0|#line 1818 "Zend/zend_ini_scanner.c"
 1818|  1.80k|yy126:
 1819|  1.80k|		YYDEBUG(126, *YYCURSOR);
 1820|  1.80k|		++YYCURSOR;
  ------------------
  |  |   47|  1.80k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.80k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.80k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1821|  1.80k|		YYFILL(1);
  ------------------
  |  |   46|  1.80k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  1.80k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.80k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.80k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  1.80k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.80k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.80k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1.80k]
  |  |  ------------------
  ------------------
 1822|  1.80k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  1.80k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.80k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.80k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1823|  1.80k|		YYDEBUG(127, *YYCURSOR);
 1824|  1.80k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (1824:7): [True: 1.67k, False: 126]
  ------------------
 1825|  1.67k|			goto yy126;
 1826|  1.67k|		}
 1827|    126|		goto yy132;
 1828|    126|yy128:
 1829|     77|		YYDEBUG(128, *YYCURSOR);
 1830|     77|		yyaccept = 1;
 1831|     77|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|     77|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1832|     77|		YYFILL(1);
  ------------------
  |  |   46|     77|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|     77|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 77]
  |  |  ------------------
  ------------------
 1833|     77|		yych = *YYCURSOR;
  ------------------
  |  |   47|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     77|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     77|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1834|     77|		YYDEBUG(129, *YYCURSOR);
 1835|     77|		if (yych <= '&') {
  ------------------
  |  Branch (1835:7): [True: 0, False: 77]
  ------------------
 1836|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (1836:8): [True: 0, False: 0]
  ------------------
 1837|      0|				if (yych == '\n') goto yy112;
  ------------------
  |  Branch (1837:9): [True: 0, False: 0]
  ------------------
 1838|      0|				if (yych <= '\f') goto yy98;
  ------------------
  |  Branch (1838:9): [True: 0, False: 0]
  ------------------
 1839|      0|				goto yy112;
 1840|      0|			} else {
 1841|      0|				if (yych <= '"') {
  ------------------
  |  Branch (1841:9): [True: 0, False: 0]
  ------------------
 1842|      0|					if (yych <= '!') goto yy98;
  ------------------
  |  Branch (1842:10): [True: 0, False: 0]
  ------------------
 1843|      0|					goto yy112;
 1844|      0|				} else {
 1845|      0|					if (yych == '$') goto yy120;
  ------------------
  |  Branch (1845:10): [True: 0, False: 0]
  ------------------
 1846|      0|					goto yy98;
 1847|      0|				}
 1848|      0|			}
 1849|     77|		} else {
 1850|     77|			if (yych <= ':') {
  ------------------
  |  Branch (1850:8): [True: 77, False: 0]
  ------------------
 1851|     77|				if (yych <= '\'') goto yy112;
  ------------------
  |  Branch (1851:9): [True: 0, False: 77]
  ------------------
 1852|     77|				if (yych <= '/') goto yy98;
  ------------------
  |  Branch (1852:9): [True: 77, False: 0]
  ------------------
 1853|      0|				if (yych <= '9') goto yy128;
  ------------------
  |  Branch (1853:9): [True: 0, False: 0]
  ------------------
 1854|      0|				goto yy98;
 1855|      0|			} else {
 1856|      0|				if (yych <= '[') {
  ------------------
  |  Branch (1856:9): [True: 0, False: 0]
  ------------------
 1857|      0|					if (yych <= ';') goto yy112;
  ------------------
  |  Branch (1857:10): [True: 0, False: 0]
  ------------------
 1858|      0|					goto yy98;
 1859|      0|				} else {
 1860|      0|					if (yych <= '\\') goto yy116;
  ------------------
  |  Branch (1860:10): [True: 0, False: 0]
  ------------------
 1861|      0|					if (yych <= ']') goto yy112;
  ------------------
  |  Branch (1861:10): [True: 0, False: 0]
  ------------------
 1862|      0|					goto yy98;
 1863|      0|				}
 1864|      0|			}
 1865|     77|		}
 1866|  4.03k|yy130:
 1867|  4.03k|		YYDEBUG(130, *YYCURSOR);
 1868|  4.03k|		++YYCURSOR;
  ------------------
  |  |   47|  4.03k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.03k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.03k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1869|  4.03k|		goto yy119;
 1870|      0|yy131:
 1871|      0|		YYDEBUG(131, *YYCURSOR);
 1872|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1873|      0|		if (yych == '\n') goto yy130;
  ------------------
  |  Branch (1873:7): [True: 0, False: 0]
  ------------------
 1874|      0|		goto yy119;
 1875|    126|yy132:
 1876|    126|		YYDEBUG(132, *YYCURSOR);
 1877|    126|		++YYCURSOR;
  ------------------
  |  |   47|    126|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1878|    126|		YYDEBUG(133, *YYCURSOR);
 1879|    126|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    126|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    126|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1880|    126|#line 388 "Zend/zend_ini_scanner.l"
 1881|    126|		{ /* Raw string */
 1882|       |	/* Eat leading and trailing single quotes */
 1883|    126|	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   59|    126|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   59|    126|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   60|    126|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1883:6): [True: 126, False: 0]
  |  Branch (1883:27): [True: 126, False: 0]
  ------------------
 1884|    126|		SCNG(yy_text)++;
  ------------------
  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 1885|    126|		yyleng = yyleng - 2;
  ------------------
  |  |   60|    126|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = yyleng - 2;
  ------------------
  |  |   60|    126|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1886|    126|	}
 1887|    126|	RETURN_TOKEN(TC_RAW, yytext, yyleng);
  ------------------
  |  |  146|    126|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|    126|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|    126|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    126|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|    252|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 2, False: 124]
  |  |  ------------------
  |  |  148|    126|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      2|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      2|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      2|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      2|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      2|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      2|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 2]
  |  |  |  Branch (148:34): [True: 0, False: 2]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|    126|	} else {                                                       \
  |  |  151|    126|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|    126|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    126|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    126|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    126|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    126|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    126|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    126|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    126|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    126|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    126|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    126|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    126|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    126|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    126|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    126|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 126]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|    126|	}                                                              \
  |  |  153|    126|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|    126|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    126|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|    126|	return type;                                                   \
  |  |  155|    126|}
  ------------------
 1888|      0|}
 1889|      0|#line 1890 "Zend/zend_ini_scanner.c"
 1890|      0|	}
 1891|       |/* *********************************** */
 1892|   165k|yyc_ST_VALUE:
 1893|   165k|	{
 1894|   165k|		static const unsigned char yybm[] = {
 1895|   165k|			 80,  82,  82,  82,  82,  82,  82,  82, 
 1896|   165k|			 82,  84,  64,  82,  82,  64,  82,  82, 
 1897|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1898|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1899|   165k|			 84,  80,  80,  82, 208,  82,  80,  16, 
 1900|   165k|			 80,  80,  82,  82,  82,  82,  82,  82, 
 1901|   165k|			122, 122, 122, 122, 122, 122, 122, 122, 
 1902|   165k|			122, 122,  82,  80,  82,  80,  82,  82, 
 1903|   165k|			 82, 114, 114, 114, 114, 114, 114, 114, 
 1904|   165k|			114, 114, 114, 114, 114, 114, 114, 114, 
 1905|   165k|			114, 114, 114, 114, 114, 114, 114, 114, 
 1906|   165k|			114, 114, 114,  82,  82,  82,  80, 114, 
 1907|   165k|			 82, 114, 114, 114, 114, 114, 114, 114, 
 1908|   165k|			114, 114, 114, 114, 114, 114, 114, 114, 
 1909|   165k|			114, 114, 114, 114, 114, 114, 114, 114, 
 1910|   165k|			114, 114, 114,  82,  80,  82,  80,  82, 
 1911|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1912|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1913|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1914|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1915|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1916|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1917|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1918|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1919|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1920|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1921|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1922|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1923|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1924|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1925|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1926|   165k|			 82,  82,  82,  82,  82,  82,  82,  82, 
 1927|   165k|		};
 1928|   165k|		YYDEBUG(134, *YYCURSOR);
 1929|   165k|		YYFILL(6);
  ------------------
  |  |   46|   165k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   165k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   165k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   165k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   165k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   165k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   165k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 165k]
  |  |  ------------------
  ------------------
 1930|   165k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   165k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   165k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   165k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1931|   165k|		if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (1931:7): [True: 11.0k, False: 154k]
  ------------------
 1932|  11.0k|			goto yy141;
 1933|  11.0k|		}
 1934|   154k|		switch (yych) {
 1935|      0|		case 0x00:	goto yy136;
  ------------------
  |  Branch (1935:3): [True: 0, False: 154k]
  ------------------
 1936|      0|		case '\t':
  ------------------
  |  Branch (1936:3): [True: 0, False: 154k]
  ------------------
 1937|  24.1k|		case '\n':	goto yy144;
  ------------------
  |  Branch (1937:3): [True: 24.1k, False: 129k]
  ------------------
 1938|  2.66k|		case '\r':	goto yy146;
  ------------------
  |  Branch (1938:3): [True: 2.66k, False: 151k]
  ------------------
 1939|      0|		case ' ':
  ------------------
  |  Branch (1939:3): [True: 0, False: 154k]
  ------------------
 1940|    166|		case '!':
  ------------------
  |  Branch (1940:3): [True: 166, False: 153k]
  ------------------
 1941|    167|		case '&':
  ------------------
  |  Branch (1941:3): [True: 1, False: 154k]
  ------------------
 1942|    802|		case '(':
  ------------------
  |  Branch (1942:3): [True: 635, False: 153k]
  ------------------
 1943|    805|		case ')':
  ------------------
  |  Branch (1943:3): [True: 3, False: 154k]
  ------------------
 1944|  1.47k|		case '^':
  ------------------
  |  Branch (1944:3): [True: 672, False: 153k]
  ------------------
 1945|  1.61k|		case '|':
  ------------------
  |  Branch (1945:3): [True: 142, False: 153k]
  ------------------
 1946|  1.62k|		case '~':	goto yy147;
  ------------------
  |  Branch (1946:3): [True: 3, False: 154k]
  ------------------
 1947|  35.4k|		case '"':	goto yy150;
  ------------------
  |  Branch (1947:3): [True: 35.4k, False: 118k]
  ------------------
 1948|    227|		case '$':	goto yy152;
  ------------------
  |  Branch (1948:3): [True: 227, False: 153k]
  ------------------
 1949|  10.8k|		case '\'':	goto yy153;
  ------------------
  |  Branch (1949:3): [True: 10.8k, False: 143k]
  ------------------
 1950|    350|		case '-':
  ------------------
  |  Branch (1950:3): [True: 350, False: 153k]
  ------------------
 1951|    350|		case '.':	goto yy154;
  ------------------
  |  Branch (1951:3): [True: 0, False: 154k]
  ------------------
 1952|    374|		case '0':
  ------------------
  |  Branch (1952:3): [True: 374, False: 153k]
  ------------------
 1953|    404|		case '1':
  ------------------
  |  Branch (1953:3): [True: 30, False: 154k]
  ------------------
 1954|  4.17k|		case '2':
  ------------------
  |  Branch (1954:3): [True: 3.77k, False: 150k]
  ------------------
 1955|  4.17k|		case '3':
  ------------------
  |  Branch (1955:3): [True: 0, False: 154k]
  ------------------
 1956|  4.52k|		case '4':
  ------------------
  |  Branch (1956:3): [True: 355, False: 153k]
  ------------------
 1957|  4.53k|		case '5':
  ------------------
  |  Branch (1957:3): [True: 4, False: 154k]
  ------------------
 1958|  8.56k|		case '6':
  ------------------
  |  Branch (1958:3): [True: 4.02k, False: 150k]
  ------------------
 1959|  11.6k|		case '7':
  ------------------
  |  Branch (1959:3): [True: 3.12k, False: 150k]
  ------------------
 1960|  11.7k|		case '8':
  ------------------
  |  Branch (1960:3): [True: 76, False: 153k]
  ------------------
 1961|  14.9k|		case '9':	goto yy155;
  ------------------
  |  Branch (1961:3): [True: 3.23k, False: 150k]
  ------------------
 1962|  8.44k|		case ';':	goto yy158;
  ------------------
  |  Branch (1962:3): [True: 8.44k, False: 145k]
  ------------------
 1963|    824|		case '=':	goto yy160;
  ------------------
  |  Branch (1963:3): [True: 824, False: 153k]
  ------------------
 1964|    143|		case 'A':
  ------------------
  |  Branch (1964:3): [True: 143, False: 153k]
  ------------------
 1965|    144|		case 'B':
  ------------------
  |  Branch (1965:3): [True: 1, False: 154k]
  ------------------
 1966|    144|		case 'C':
  ------------------
  |  Branch (1966:3): [True: 0, False: 154k]
  ------------------
 1967|    146|		case 'D':
  ------------------
  |  Branch (1967:3): [True: 2, False: 154k]
  ------------------
 1968|    146|		case 'E':
  ------------------
  |  Branch (1968:3): [True: 0, False: 154k]
  ------------------
 1969|    146|		case 'G':
  ------------------
  |  Branch (1969:3): [True: 0, False: 154k]
  ------------------
 1970|    146|		case 'H':
  ------------------
  |  Branch (1970:3): [True: 0, False: 154k]
  ------------------
 1971|    509|		case 'I':
  ------------------
  |  Branch (1971:3): [True: 363, False: 153k]
  ------------------
 1972|    509|		case 'J':
  ------------------
  |  Branch (1972:3): [True: 0, False: 154k]
  ------------------
 1973|    509|		case 'K':
  ------------------
  |  Branch (1973:3): [True: 0, False: 154k]
  ------------------
 1974|    680|		case 'L':
  ------------------
  |  Branch (1974:3): [True: 171, False: 153k]
  ------------------
 1975|    756|		case 'M':
  ------------------
  |  Branch (1975:3): [True: 76, False: 153k]
  ------------------
 1976|    756|		case 'P':
  ------------------
  |  Branch (1976:3): [True: 0, False: 154k]
  ------------------
 1977|    756|		case 'Q':
  ------------------
  |  Branch (1977:3): [True: 0, False: 154k]
  ------------------
 1978|    756|		case 'R':
  ------------------
  |  Branch (1978:3): [True: 0, False: 154k]
  ------------------
 1979|    898|		case 'S':
  ------------------
  |  Branch (1979:3): [True: 142, False: 153k]
  ------------------
 1980|  1.02k|		case 'U':
  ------------------
  |  Branch (1980:3): [True: 125, False: 153k]
  ------------------
 1981|  1.11k|		case 'V':
  ------------------
  |  Branch (1981:3): [True: 90, False: 153k]
  ------------------
 1982|  1.11k|		case 'W':
  ------------------
  |  Branch (1982:3): [True: 0, False: 154k]
  ------------------
 1983|  1.11k|		case 'X':
  ------------------
  |  Branch (1983:3): [True: 0, False: 154k]
  ------------------
 1984|  1.33k|		case 'Z':
  ------------------
  |  Branch (1984:3): [True: 218, False: 153k]
  ------------------
 1985|  1.33k|		case '_':
  ------------------
  |  Branch (1985:3): [True: 0, False: 154k]
  ------------------
 1986|  2.09k|		case 'a':
  ------------------
  |  Branch (1986:3): [True: 762, False: 153k]
  ------------------
 1987|  2.09k|		case 'b':
  ------------------
  |  Branch (1987:3): [True: 0, False: 154k]
  ------------------
 1988|  4.13k|		case 'c':
  ------------------
  |  Branch (1988:3): [True: 2.04k, False: 152k]
  ------------------
 1989|  4.13k|		case 'd':
  ------------------
  |  Branch (1989:3): [True: 2, False: 154k]
  ------------------
 1990|  4.78k|		case 'e':
  ------------------
  |  Branch (1990:3): [True: 645, False: 153k]
  ------------------
 1991|  4.78k|		case 'g':
  ------------------
  |  Branch (1991:3): [True: 1, False: 154k]
  ------------------
 1992|  6.43k|		case 'h':
  ------------------
  |  Branch (1992:3): [True: 1.65k, False: 152k]
  ------------------
 1993|  8.71k|		case 'i':
  ------------------
  |  Branch (1993:3): [True: 2.28k, False: 151k]
  ------------------
 1994|  8.71k|		case 'j':
  ------------------
  |  Branch (1994:3): [True: 0, False: 154k]
  ------------------
 1995|  8.71k|		case 'k':
  ------------------
  |  Branch (1995:3): [True: 0, False: 154k]
  ------------------
 1996|  8.71k|		case 'l':
  ------------------
  |  Branch (1996:3): [True: 1, False: 154k]
  ------------------
 1997|  8.96k|		case 'm':
  ------------------
  |  Branch (1997:3): [True: 251, False: 153k]
  ------------------
 1998|  9.29k|		case 'p':
  ------------------
  |  Branch (1998:3): [True: 328, False: 153k]
  ------------------
 1999|  9.29k|		case 'q':
  ------------------
  |  Branch (1999:3): [True: 0, False: 154k]
  ------------------
 2000|  10.2k|		case 'r':
  ------------------
  |  Branch (2000:3): [True: 950, False: 153k]
  ------------------
 2001|  10.7k|		case 's':
  ------------------
  |  Branch (2001:3): [True: 538, False: 153k]
  ------------------
 2002|  10.9k|		case 'u':
  ------------------
  |  Branch (2002:3): [True: 162, False: 153k]
  ------------------
 2003|  10.9k|		case 'v':
  ------------------
  |  Branch (2003:3): [True: 0, False: 154k]
  ------------------
 2004|  10.9k|		case 'w':
  ------------------
  |  Branch (2004:3): [True: 0, False: 154k]
  ------------------
 2005|  10.9k|		case 'x':
  ------------------
  |  Branch (2005:3): [True: 0, False: 154k]
  ------------------
 2006|  11.3k|		case 'z':	goto yy162;
  ------------------
  |  Branch (2006:3): [True: 433, False: 153k]
  ------------------
 2007|     90|		case 'F':
  ------------------
  |  Branch (2007:3): [True: 90, False: 153k]
  ------------------
 2008|  1.85k|		case 'f':	goto yy165;
  ------------------
  |  Branch (2008:3): [True: 1.76k, False: 152k]
  ------------------
 2009|  2.93k|		case 'N':
  ------------------
  |  Branch (2009:3): [True: 2.93k, False: 151k]
  ------------------
 2010|  7.72k|		case 'n':	goto yy166;
  ------------------
  |  Branch (2010:3): [True: 4.78k, False: 149k]
  ------------------
 2011|     34|		case 'O':
  ------------------
  |  Branch (2011:3): [True: 34, False: 154k]
  ------------------
 2012|    703|		case 'o':	goto yy167;
  ------------------
  |  Branch (2012:3): [True: 669, False: 153k]
  ------------------
 2013|      7|		case 'T':
  ------------------
  |  Branch (2013:3): [True: 7, False: 154k]
  ------------------
 2014|     41|		case 't':	goto yy168;
  ------------------
  |  Branch (2014:3): [True: 34, False: 154k]
  ------------------
 2015|      0|		case 'Y':
  ------------------
  |  Branch (2015:3): [True: 0, False: 154k]
  ------------------
 2016|  1.22k|		case 'y':	goto yy169;
  ------------------
  |  Branch (2016:3): [True: 1.22k, False: 152k]
  ------------------
 2017|  31.5k|		default:	goto yy138;
  ------------------
  |  Branch (2017:3): [True: 31.5k, False: 122k]
  ------------------
 2018|   154k|		}
 2019|      0|yy136:
 2020|      0|		YYDEBUG(136, *YYCURSOR);
 2021|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2022|     99|yy137:
 2023|     99|		YYDEBUG(137, *YYCURSOR);
 2024|     99|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|     99|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|     99|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     99|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     99|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     99|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|     99|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|     99|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2025|     99|#line 680 "Zend/zend_ini_scanner.l"
 2026|     99|		{ /* End of option value (if EOF is reached before EOL */
 2027|     99|	BEGIN(INITIAL);
  ------------------
  |  |   57|     99|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|     99|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     99|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     99|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2028|     99|	return END_OF_LINE;
 2029|      0|}
 2030|      0|#line 2031 "Zend/zend_ini_scanner.c"
 2031|   297k|yy138:
 2032|   297k|		YYDEBUG(138, *YYCURSOR);
 2033|   297k|		yyaccept = 0;
 2034|   297k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|   297k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|   297k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   297k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|   297k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   297k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   297k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2035|   297k|		YYFILL(1);
  ------------------
  |  |   46|   297k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   297k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   297k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   297k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   297k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   297k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   297k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 297k]
  |  |  ------------------
  ------------------
 2036|   297k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   297k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   297k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   297k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2037|   298k|yy139:
 2038|   298k|		YYDEBUG(139, *YYCURSOR);
 2039|   298k|		if (yybm[0+yych] & 2) {
  ------------------
  |  Branch (2039:7): [True: 251k, False: 47.2k]
  ------------------
 2040|   251k|			goto yy138;
 2041|   251k|		}
 2042|  47.2k|		if (yych <= '"') goto yy140;
  ------------------
  |  Branch (2042:7): [True: 35.0k, False: 12.1k]
  ------------------
 2043|  12.1k|		if (yych <= '$') goto yy170;
  ------------------
  |  Branch (2043:7): [True: 152, False: 11.9k]
  ------------------
 2044|  47.1k|yy140:
 2045|  47.1k|		YYDEBUG(140, *YYCURSOR);
 2046|  47.1k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  47.1k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  47.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  47.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  47.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  47.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  47.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  47.1k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  47.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2047|  47.1k|#line 597 "Zend/zend_ini_scanner.l"
 2048|  47.1k|		{ /* Get everything else as option/offset value */
 2049|  47.1k|	RETURN_TOKEN(TC_STRING, yytext, yyleng);
  ------------------
  |  |  146|  47.1k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  47.1k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  47.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  47.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  94.3k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 29, False: 47.1k]
  |  |  ------------------
  |  |  148|  47.1k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|     29|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|     29|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|     29|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|     29|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|     29|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 29, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|     29|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  47.1k|	} else {                                                       \
  |  |  151|  47.1k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  47.1k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  47.1k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  47.1k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  47.1k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  47.1k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  47.1k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  47.1k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  47.1k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  47.1k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  47.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  47.1k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  47.1k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  47.1k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  47.1k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  47.1k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 47.1k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  47.1k|	}                                                              \
  |  |  153|  47.1k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  47.1k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  47.1k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  47.1k|	return type;                                                   \
  |  |  155|  47.1k|}
  ------------------
 2050|      0|}
 2051|      0|#line 2052 "Zend/zend_ini_scanner.c"
 2052|  11.2k|yy141:
 2053|  11.2k|		YYDEBUG(141, *YYCURSOR);
 2054|  11.2k|		++YYCURSOR;
  ------------------
  |  |   47|  11.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  11.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2055|  11.2k|		YYFILL(2);
  ------------------
  |  |   46|  11.2k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  11.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  11.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  11.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  11.2k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  11.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  11.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 11.2k]
  |  |  ------------------
  ------------------
 2056|  11.2k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  11.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  11.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2057|  11.2k|		YYDEBUG(142, *YYCURSOR);
 2058|  11.2k|		if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (2058:7): [True: 149, False: 11.0k]
  ------------------
 2059|    149|			goto yy141;
 2060|    149|		}
 2061|  11.0k|		if (yych <= '\r') {
  ------------------
  |  Branch (2061:7): [True: 455, False: 10.6k]
  ------------------
 2062|    455|			if (yych <= 0x08) goto yy143;
  ------------------
  |  Branch (2062:8): [True: 284, False: 171]
  ------------------
 2063|    171|			if (yych <= '\n') goto yy144;
  ------------------
  |  Branch (2063:8): [True: 171, False: 0]
  ------------------
 2064|      0|			if (yych >= '\r') goto yy146;
  ------------------
  |  Branch (2064:8): [True: 0, False: 0]
  ------------------
 2065|  10.6k|		} else {
 2066|  10.6k|			if (yych <= '"') {
  ------------------
  |  Branch (2066:8): [True: 2.27k, False: 8.36k]
  ------------------
 2067|  2.27k|				if (yych >= '"') goto yy150;
  ------------------
  |  Branch (2067:9): [True: 469, False: 1.80k]
  ------------------
 2068|  8.36k|			} else {
 2069|  8.36k|				if (yych == ';') goto yy158;
  ------------------
  |  Branch (2069:9): [True: 0, False: 8.36k]
  ------------------
 2070|  8.36k|			}
 2071|  10.6k|		}
 2072|  10.4k|yy143:
 2073|  10.4k|		YYDEBUG(143, *YYCURSOR);
 2074|  10.4k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  10.4k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  10.4k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  10.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  10.4k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  10.4k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  10.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2075|  10.4k|#line 660 "Zend/zend_ini_scanner.l"
 2076|  10.4k|		{
 2077|  10.4k|	RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
  ------------------
  |  |  146|  10.4k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  10.4k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  10.4k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  20.9k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 164, False: 10.2k]
  |  |  ------------------
  |  |  148|  10.4k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|    164|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|    164|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    164|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    164|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|    164|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 164, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|    164|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  10.2k|	} else {                                                       \
  |  |  151|  10.2k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  10.2k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  10.2k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  10.2k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  10.2k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  10.2k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  10.2k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  10.2k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  10.2k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  10.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  10.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  10.2k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  10.2k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  10.2k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  10.2k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  10.2k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 10.2k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  10.2k|	}                                                              \
  |  |  153|  10.4k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  10.4k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  10.4k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  10.4k|	return type;                                                   \
  |  |  155|  10.4k|}
  ------------------
 2078|      0|}
 2079|      0|#line 2080 "Zend/zend_ini_scanner.c"
 2080|  24.3k|yy144:
 2081|  24.3k|		YYDEBUG(144, *YYCURSOR);
 2082|  24.3k|		++YYCURSOR;
  ------------------
  |  |   47|  24.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  24.3k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  24.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2083|  27.0k|yy145:
 2084|  27.0k|		YYDEBUG(145, *YYCURSOR);
 2085|  27.0k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  27.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  27.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  27.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  27.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  27.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  27.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  27.0k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  27.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2086|  27.0k|#line 569 "Zend/zend_ini_scanner.l"
 2087|  27.0k|		{ /* End of option value */
 2088|  27.0k|	BEGIN(INITIAL);
  ------------------
  |  |   57|  27.0k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  27.0k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  27.0k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  27.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2089|  27.0k|	SCNG(lineno)++;
  ------------------
  |  |  106|  27.0k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  27.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2090|  27.0k|	return END_OF_LINE;
 2091|  24.3k|}
 2092|      0|#line 2093 "Zend/zend_ini_scanner.c"
 2093|  2.66k|yy146:
 2094|  2.66k|		YYDEBUG(146, *YYCURSOR);
 2095|  2.66k|		yych = *++YYCURSOR;
  ------------------
  |  |   47|  2.66k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  2.66k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.66k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2096|  2.66k|		if (yych == '\n') goto yy144;
  ------------------
  |  Branch (2096:7): [True: 1, False: 2.66k]
  ------------------
 2097|  2.66k|		goto yy145;
 2098|  2.66k|yy147:
 2099|  2.38k|		YYDEBUG(147, *YYCURSOR);
 2100|  2.38k|		++YYCURSOR;
  ------------------
  |  |   47|  2.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  2.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2101|  2.38k|		YYFILL(1);
  ------------------
  |  |   46|  2.38k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  2.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.38k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  2.38k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  2.38k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  2.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 2.38k]
  |  |  ------------------
  ------------------
 2102|  2.38k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  2.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  2.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2103|  2.38k|		YYDEBUG(148, *YYCURSOR);
 2104|  2.38k|		if (yych == '\t') goto yy147;
  ------------------
  |  Branch (2104:7): [True: 0, False: 2.38k]
  ------------------
 2105|  2.38k|		if (yych == ' ') goto yy147;
  ------------------
  |  Branch (2105:7): [True: 761, False: 1.62k]
  ------------------
 2106|  1.62k|		YYDEBUG(149, *YYCURSOR);
 2107|  1.62k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  1.62k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  1.62k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.62k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  1.62k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.62k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.62k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  1.62k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  1.62k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2108|  1.62k|#line 587 "Zend/zend_ini_scanner.l"
 2109|  1.62k|		{ /* Boolean operators */
 2110|  1.62k|	return yytext[0];
  ------------------
  |  |   59|  1.62k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  1.62k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.62k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2111|  2.38k|}
 2112|      0|#line 2113 "Zend/zend_ini_scanner.c"
 2113|  35.9k|yy150:
 2114|  35.9k|		YYDEBUG(150, *YYCURSOR);
 2115|  35.9k|		++YYCURSOR;
  ------------------
  |  |   47|  35.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  35.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  35.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2116|  35.9k|		YYDEBUG(151, *YYCURSOR);
 2117|  35.9k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  35.9k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  35.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  35.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  35.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  35.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  35.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  35.9k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  35.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2118|  35.9k|#line 609 "Zend/zend_ini_scanner.l"
 2119|  35.9k|		{ /* Double quoted '"' string start */
 2120|  35.9k|	yy_push_state(ST_DOUBLE_QUOTES);
  ------------------
  |  |  180|  35.9k|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 2121|  35.9k|	return '"';
 2122|  2.38k|}
 2123|      0|#line 2124 "Zend/zend_ini_scanner.c"
 2124|    227|yy152:
 2125|    227|		YYDEBUG(152, *YYCURSOR);
 2126|    227|		yych = *++YYCURSOR;
  ------------------
  |  |   47|    227|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    227|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    227|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2127|    227|		if (yych <= '\\') {
  ------------------
  |  Branch (2127:7): [True: 85, False: 142]
  ------------------
 2128|     85|			if (yych <= 0x00) goto yy137;
  ------------------
  |  Branch (2128:8): [True: 0, False: 85]
  ------------------
 2129|     85|			if (yych <= '[') goto yy138;
  ------------------
  |  Branch (2129:8): [True: 85, False: 0]
  ------------------
 2130|      0|			goto yy172;
 2131|    142|		} else {
 2132|    142|			if (yych == '{') goto yy173;
  ------------------
  |  Branch (2132:8): [True: 142, False: 0]
  ------------------
 2133|      0|			goto yy138;
 2134|    142|		}
 2135|  10.8k|yy153:
 2136|  10.8k|		YYDEBUG(153, *YYCURSOR);
 2137|  10.8k|		yych = *++YYCURSOR;
  ------------------
  |  |   47|  10.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  10.8k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.8k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2138|  10.8k|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (2138:7): [True: 10.7k, False: 99]
  ------------------
 2139|  10.7k|			goto yy175;
 2140|  10.7k|		}
 2141|     99|		goto yy137;
 2142|    350|yy154:
 2143|    350|		YYDEBUG(154, *YYCURSOR);
 2144|    350|		yyaccept = 0;
 2145|    350|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|    350|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|    350|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    350|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|    350|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    350|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    350|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2146|    350|		if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2146:7): [True: 0, False: 350]
  ------------------
 2147|    350|		if (yych <= '9') goto yy177;
  ------------------
  |  Branch (2147:7): [True: 350, False: 0]
  ------------------
 2148|      0|		goto yy139;
 2149|  20.7k|yy155:
 2150|  20.7k|		YYDEBUG(155, *YYCURSOR);
 2151|  20.7k|		yyaccept = 1;
 2152|  20.7k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  20.7k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  20.7k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  20.7k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  20.7k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  20.7k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  20.7k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2153|  20.7k|		YYFILL(1);
  ------------------
  |  |   46|  20.7k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  20.7k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  20.7k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  20.7k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  20.7k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  20.7k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  20.7k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 20.7k]
  |  |  ------------------
  ------------------
 2154|  20.7k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  20.7k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  20.7k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  20.7k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2155|  20.7k|		YYDEBUG(156, *YYCURSOR);
 2156|  20.7k|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (2156:7): [True: 5.75k, False: 14.9k]
  ------------------
 2157|  5.75k|			goto yy155;
 2158|  5.75k|		}
 2159|  14.9k|		if (yych <= '-') {
  ------------------
  |  Branch (2159:7): [True: 2.64k, False: 12.3k]
  ------------------
 2160|  2.64k|			if (yych <= 0x1F) {
  ------------------
  |  Branch (2160:8): [True: 143, False: 2.50k]
  ------------------
 2161|    143|				if (yych <= '\n') {
  ------------------
  |  Branch (2161:9): [True: 43, False: 100]
  ------------------
 2162|     43|					if (yych <= 0x00) goto yy157;
  ------------------
  |  Branch (2162:10): [True: 0, False: 43]
  ------------------
 2163|     43|					if (yych <= 0x08) goto yy138;
  ------------------
  |  Branch (2163:10): [True: 0, False: 43]
  ------------------
 2164|    100|				} else {
 2165|    100|					if (yych != '\r') goto yy138;
  ------------------
  |  Branch (2165:10): [True: 99, False: 1]
  ------------------
 2166|    100|				}
 2167|  2.50k|			} else {
 2168|  2.50k|				if (yych <= '$') {
  ------------------
  |  Branch (2168:9): [True: 2.27k, False: 227]
  ------------------
 2169|  2.27k|					if (yych <= '"') goto yy157;
  ------------------
  |  Branch (2169:10): [True: 2.27k, False: 0]
  ------------------
 2170|      0|					if (yych <= '#') goto yy138;
  ------------------
  |  Branch (2170:10): [True: 0, False: 0]
  ------------------
 2171|      0|					goto yy170;
 2172|    227|				} else {
 2173|    227|					if (yych <= '%') goto yy138;
  ------------------
  |  Branch (2173:10): [True: 1, False: 226]
  ------------------
 2174|    226|					if (yych >= '*') goto yy138;
  ------------------
  |  Branch (2174:10): [True: 224, False: 2]
  ------------------
 2175|    226|				}
 2176|  2.50k|			}
 2177|  12.3k|		} else {
 2178|  12.3k|			if (yych <= ']') {
  ------------------
  |  Branch (2178:8): [True: 6.27k, False: 6.07k]
  ------------------
 2179|  6.27k|				if (yych <= ';') {
  ------------------
  |  Branch (2179:9): [True: 2.87k, False: 3.40k]
  ------------------
 2180|  2.87k|					if (yych <= '.') goto yy177;
  ------------------
  |  Branch (2180:10): [True: 81, False: 2.79k]
  ------------------
 2181|  2.79k|					if (yych <= ':') goto yy138;
  ------------------
  |  Branch (2181:10): [True: 975, False: 1.81k]
  ------------------
 2182|  3.40k|				} else {
 2183|  3.40k|					if (yych != '=') goto yy138;
  ------------------
  |  Branch (2183:10): [True: 3.40k, False: 0]
  ------------------
 2184|  3.40k|				}
 2185|  6.27k|			} else {
 2186|  6.07k|				if (yych <= '|') {
  ------------------
  |  Branch (2186:9): [True: 2.04k, False: 4.02k]
  ------------------
 2187|  2.04k|					if (yych <= '^') goto yy157;
  ------------------
  |  Branch (2187:10): [True: 279, False: 1.76k]
  ------------------
 2188|  1.76k|					if (yych <= '{') goto yy138;
  ------------------
  |  Branch (2188:10): [True: 1.76k, False: 0]
  ------------------
 2189|  4.02k|				} else {
 2190|  4.02k|					if (yych != '~') goto yy138;
  ------------------
  |  Branch (2190:10): [True: 4.02k, False: 0]
  ------------------
 2191|  4.02k|				}
 2192|  6.07k|			}
 2193|  12.3k|		}
 2194|  4.50k|yy157:
 2195|  4.50k|		YYDEBUG(157, *YYCURSOR);
 2196|  4.50k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  4.50k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  4.50k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.50k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  4.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  4.50k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.50k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  4.50k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  4.50k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2197|  4.50k|#line 579 "Zend/zend_ini_scanner.l"
 2198|  4.50k|		{ /* Get number option value as string */
 2199|  4.50k|	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
  ------------------
  |  |  146|  4.50k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  4.50k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  4.50k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  4.50k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  9.00k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 26, False: 4.47k]
  |  |  ------------------
  |  |  148|  4.50k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|     26|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|     26|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|     26|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|     26|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|     26|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 26, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|     26|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  4.47k|	} else {                                                       \
  |  |  151|  4.47k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  4.47k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  4.47k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  4.47k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  4.47k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  4.47k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  4.47k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  4.47k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  4.47k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  4.47k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  4.47k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  4.47k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  4.47k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  4.47k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  4.47k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  4.47k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 4.47k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  4.47k|	}                                                              \
  |  |  153|  4.50k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  4.50k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  4.50k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  4.50k|	return type;                                                   \
  |  |  155|  4.50k|}
  ------------------
 2200|      0|}
 2201|      0|#line 2202 "Zend/zend_ini_scanner.c"
 2202|   354k|yy158:
 2203|   354k|		YYDEBUG(158, *YYCURSOR);
 2204|   354k|		++YYCURSOR;
  ------------------
  |  |   47|   354k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   354k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   354k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2205|   354k|		YYFILL(2);
  ------------------
  |  |   46|   354k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   354k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   354k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   354k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   354k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   354k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   354k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 53, False: 354k]
  |  |  ------------------
  ------------------
 2206|   354k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   354k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   354k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   354k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2207|   354k|		YYDEBUG(159, *YYCURSOR);
 2208|   354k|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (2208:7): [True: 345k, False: 8.39k]
  ------------------
 2209|   345k|			goto yy158;
 2210|   345k|		}
 2211|  8.39k|		if (yych <= '\n') goto yy179;
  ------------------
  |  Branch (2211:7): [True: 8.39k, False: 0]
  ------------------
 2212|      0|		goto yy181;
 2213|    824|yy160:
 2214|    824|		YYDEBUG(160, *YYCURSOR);
 2215|    824|		++YYCURSOR;
  ------------------
  |  |   47|    824|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2216|    824|		YYDEBUG(161, *YYCURSOR);
 2217|    824|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    824|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    824|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2218|    824|#line 591 "Zend/zend_ini_scanner.l"
 2219|    824|		{ /* Make = used in option value to trigger error */
 2220|    824|	yyless(0);
  ------------------
  |  |   61|    824|#define yyless(x)    do {	YYCURSOR = (const unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   47|    824|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do {	YYCURSOR = (const unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   59|    824|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|    824|							yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   60|    824|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (62:44): [Folded, False: 824]
  |  |  ------------------
  ------------------
 2221|    824|	BEGIN(INITIAL);
  ------------------
  |  |   57|    824|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|    824|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    824|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    824|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2222|    824|	return END_OF_LINE;
 2223|  8.39k|}
 2224|      0|#line 2225 "Zend/zend_ini_scanner.c"
 2225|  92.3k|yy162:
 2226|  92.3k|		YYDEBUG(162, *YYCURSOR);
 2227|  92.3k|		yyaccept = 2;
 2228|  92.3k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  92.3k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  92.3k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  92.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  92.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  92.3k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  92.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2229|  92.3k|		YYFILL(1);
  ------------------
  |  |   46|  92.3k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  92.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  92.3k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  92.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  92.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  92.3k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  92.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 92.3k]
  |  |  ------------------
  ------------------
 2230|  92.3k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  92.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  92.3k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  92.3k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2231|  92.3k|		YYDEBUG(163, *YYCURSOR);
 2232|  92.3k|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (2232:7): [True: 72.7k, False: 19.6k]
  ------------------
 2233|  72.7k|			goto yy162;
 2234|  72.7k|		}
 2235|  19.6k|		if (yych <= ')') {
  ------------------
  |  Branch (2235:7): [True: 16.6k, False: 3.07k]
  ------------------
 2236|  16.6k|			if (yych <= '\r') {
  ------------------
  |  Branch (2236:8): [True: 3.31k, False: 13.2k]
  ------------------
 2237|  3.31k|				if (yych <= 0x08) {
  ------------------
  |  Branch (2237:9): [True: 271, False: 3.04k]
  ------------------
 2238|    271|					if (yych >= 0x01) goto yy138;
  ------------------
  |  Branch (2238:10): [True: 171, False: 100]
  ------------------
 2239|  3.04k|				} else {
 2240|  3.04k|					if (yych <= '\n') goto yy164;
  ------------------
  |  Branch (2240:10): [True: 2.94k, False: 99]
  ------------------
 2241|     99|					if (yych <= '\f') goto yy138;
  ------------------
  |  Branch (2241:10): [True: 0, False: 99]
  ------------------
 2242|     99|				}
 2243|  13.2k|			} else {
 2244|  13.2k|				if (yych <= '#') {
  ------------------
  |  Branch (2244:9): [True: 8.63k, False: 4.65k]
  ------------------
 2245|  8.63k|					if (yych <= 0x1F) goto yy138;
  ------------------
  |  Branch (2245:10): [True: 0, False: 8.63k]
  ------------------
 2246|  8.63k|					if (yych >= '#') goto yy138;
  ------------------
  |  Branch (2246:10): [True: 0, False: 8.63k]
  ------------------
 2247|  8.63k|				} else {
 2248|  4.65k|					if (yych <= '$') goto yy170;
  ------------------
  |  Branch (2248:10): [True: 1.00k, False: 3.65k]
  ------------------
 2249|  3.65k|					if (yych <= '%') goto yy138;
  ------------------
  |  Branch (2249:10): [True: 0, False: 3.65k]
  ------------------
 2250|  3.65k|				}
 2251|  13.2k|			}
 2252|  16.6k|		} else {
 2253|  3.07k|			if (yych <= ']') {
  ------------------
  |  Branch (2253:8): [True: 1.39k, False: 1.68k]
  ------------------
 2254|  1.39k|				if (yych <= ';') {
  ------------------
  |  Branch (2254:9): [True: 287, False: 1.10k]
  ------------------
 2255|    287|					if (yych <= ':') goto yy138;
  ------------------
  |  Branch (2255:10): [True: 287, False: 0]
  ------------------
 2256|  1.10k|				} else {
 2257|  1.10k|					if (yych != '=') goto yy138;
  ------------------
  |  Branch (2257:10): [True: 698, False: 406]
  ------------------
 2258|  1.10k|				}
 2259|  1.68k|			} else {
 2260|  1.68k|				if (yych <= '|') {
  ------------------
  |  Branch (2260:9): [True: 521, False: 1.16k]
  ------------------
 2261|    521|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2261:10): [True: 82, False: 439]
  ------------------
 2262|    439|					if (yych <= '{') goto yy138;
  ------------------
  |  Branch (2262:10): [True: 297, False: 142]
  ------------------
 2263|  1.16k|				} else {
 2264|  1.16k|					if (yych != '~') goto yy138;
  ------------------
  |  Branch (2264:10): [True: 1.16k, False: 0]
  ------------------
 2265|  1.16k|				}
 2266|  1.68k|			}
 2267|  3.07k|		}
 2268|  18.1k|yy164:
 2269|  18.1k|		YYDEBUG(164, *YYCURSOR);
 2270|  18.1k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  18.1k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  18.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  18.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  18.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  18.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  18.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  18.1k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  18.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2271|  18.1k|#line 575 "Zend/zend_ini_scanner.l"
 2272|  18.1k|		{ /* Get constant option value */
 2273|  18.1k|	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
  ------------------
  |  |  146|  18.1k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  18.1k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  18.1k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  18.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  36.3k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 310, False: 17.8k]
  |  |  ------------------
  |  |  148|  18.1k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|    310|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|    310|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    310|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    310|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|    310|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 310, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|    310|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  17.8k|	} else {                                                       \
  |  |  151|  17.8k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  17.8k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  17.8k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  17.8k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  17.8k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  17.8k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  17.8k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  17.8k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  17.8k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  17.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  17.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  17.8k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  17.8k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  17.8k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  17.8k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  17.8k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 17.8k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  17.8k|	}                                                              \
  |  |  153|  18.1k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  18.1k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  18.1k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  18.1k|	return type;                                                   \
  |  |  155|  18.1k|}
  ------------------
 2274|      0|}
 2275|      0|#line 2276 "Zend/zend_ini_scanner.c"
 2276|  1.85k|yy165:
 2277|  1.85k|		YYDEBUG(165, *YYCURSOR);
 2278|  1.85k|		yyaccept = 2;
 2279|  1.85k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|  1.85k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  1.85k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.85k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|  1.85k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.85k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.85k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2280|  1.85k|		if (yych <= '<') {
  ------------------
  |  Branch (2280:7): [True: 1.31k, False: 537]
  ------------------
 2281|  1.31k|			if (yych <= '"') {
  ------------------
  |  Branch (2281:8): [True: 1.14k, False: 174]
  ------------------
 2282|  1.14k|				if (yych <= '\n') {
  ------------------
  |  Branch (2282:9): [True: 190, False: 950]
  ------------------
 2283|    190|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2283:10): [True: 0, False: 190]
  ------------------
 2284|    190|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2284:10): [True: 189, False: 1]
  ------------------
 2285|      1|					goto yy164;
 2286|    950|				} else {
 2287|    950|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2287:10): [True: 0, False: 950]
  ------------------
 2288|    950|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2288:10): [True: 0, False: 950]
  ------------------
 2289|    950|					goto yy164;
 2290|    950|				}
 2291|  1.14k|			} else {
 2292|    174|				if (yych <= '/') {
  ------------------
  |  Branch (2292:9): [True: 0, False: 174]
  ------------------
 2293|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2293:10): [True: 0, False: 0]
  ------------------
 2294|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2294:10): [True: 0, False: 0]
  ------------------
 2295|      0|					goto yy139;
 2296|    174|				} else {
 2297|    174|					if (yych <= '9') goto yy162;
  ------------------
  |  Branch (2297:10): [True: 99, False: 75]
  ------------------
 2298|     75|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2298:10): [True: 0, False: 75]
  ------------------
 2299|     75|					goto yy139;
 2300|     75|				}
 2301|    174|			}
 2302|  1.31k|		} else {
 2303|    537|			if (yych <= '_') {
  ------------------
  |  Branch (2303:8): [True: 157, False: 380]
  ------------------
 2304|    157|				if (yych <= 'A') {
  ------------------
  |  Branch (2304:9): [True: 67, False: 90]
  ------------------
 2305|     67|					if (yych <= '=') goto yy164;
  ------------------
  |  Branch (2305:10): [True: 67, False: 0]
  ------------------
 2306|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2306:10): [True: 0, False: 0]
  ------------------
 2307|      0|					goto yy182;
 2308|     90|				} else {
 2309|     90|					if (yych <= 'Z') goto yy162;
  ------------------
  |  Branch (2309:10): [True: 90, False: 0]
  ------------------
 2310|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2310:10): [True: 0, False: 0]
  ------------------
 2311|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2311:10): [True: 0, False: 0]
  ------------------
 2312|      0|					goto yy162;
 2313|      0|				}
 2314|    380|			} else {
 2315|    380|				if (yych <= '{') {
  ------------------
  |  Branch (2315:9): [True: 240, False: 140]
  ------------------
 2316|    240|					if (yych <= '`') goto yy139;
  ------------------
  |  Branch (2316:10): [True: 0, False: 240]
  ------------------
 2317|    240|					if (yych <= 'a') goto yy182;
  ------------------
  |  Branch (2317:10): [True: 0, False: 240]
  ------------------
 2318|    240|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2318:10): [True: 240, False: 0]
  ------------------
 2319|      0|					goto yy139;
 2320|    240|				} else {
 2321|    140|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2321:10): [True: 0, False: 140]
  ------------------
 2322|    140|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2322:10): [True: 0, False: 140]
  ------------------
 2323|    140|					goto yy139;
 2324|    140|				}
 2325|    380|			}
 2326|    537|		}
 2327|  7.72k|yy166:
 2328|  7.72k|		YYDEBUG(166, *YYCURSOR);
 2329|  7.72k|		yyaccept = 2;
 2330|  7.72k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|  7.72k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  7.72k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  7.72k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|  7.72k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  7.72k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  7.72k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2331|  7.72k|		if (yych <= 'N') {
  ------------------
  |  Branch (2331:7): [True: 5.38k, False: 2.33k]
  ------------------
 2332|  5.38k|			if (yych <= '%') {
  ------------------
  |  Branch (2332:8): [True: 26, False: 5.36k]
  ------------------
 2333|     26|				if (yych <= '\f') {
  ------------------
  |  Branch (2333:9): [True: 0, False: 26]
  ------------------
 2334|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2334:10): [True: 0, False: 0]
  ------------------
 2335|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2335:10): [True: 0, False: 0]
  ------------------
 2336|      0|					if (yych <= '\n') goto yy164;
  ------------------
  |  Branch (2336:10): [True: 0, False: 0]
  ------------------
 2337|      0|					goto yy139;
 2338|     26|				} else {
 2339|     26|					if (yych <= '\r') goto yy164;
  ------------------
  |  Branch (2339:10): [True: 0, False: 26]
  ------------------
 2340|     26|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2340:10): [True: 0, False: 26]
  ------------------
 2341|     26|					if (yych <= '"') goto yy164;
  ------------------
  |  Branch (2341:10): [True: 26, False: 0]
  ------------------
 2342|      0|					goto yy139;
 2343|     26|				}
 2344|  5.36k|			} else {
 2345|  5.36k|				if (yych <= ':') {
  ------------------
  |  Branch (2345:9): [True: 3.18k, False: 2.17k]
  ------------------
 2346|  3.18k|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2346:10): [True: 0, False: 3.18k]
  ------------------
 2347|  3.18k|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2347:10): [True: 0, False: 3.18k]
  ------------------
 2348|  3.18k|					if (yych <= '9') goto yy162;
  ------------------
  |  Branch (2348:10): [True: 3.18k, False: 0]
  ------------------
 2349|      0|					goto yy139;
 2350|  3.18k|				} else {
 2351|  2.17k|					if (yych <= '<') {
  ------------------
  |  Branch (2351:10): [True: 87, False: 2.08k]
  ------------------
 2352|     87|						if (yych <= ';') goto yy164;
  ------------------
  |  Branch (2352:11): [True: 1, False: 86]
  ------------------
 2353|     86|						goto yy139;
 2354|  2.08k|					} else {
 2355|  2.08k|						if (yych <= '=') goto yy164;
  ------------------
  |  Branch (2355:11): [True: 0, False: 2.08k]
  ------------------
 2356|  2.08k|						if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2356:11): [True: 0, False: 2.08k]
  ------------------
 2357|  2.08k|						goto yy162;
 2358|  2.08k|					}
 2359|  2.17k|				}
 2360|  5.36k|			}
 2361|  5.38k|		} else {
 2362|  2.33k|			if (yych <= 'n') {
  ------------------
  |  Branch (2362:8): [True: 2.11k, False: 213]
  ------------------
 2363|  2.11k|				if (yych <= 'Z') {
  ------------------
  |  Branch (2363:9): [True: 1.95k, False: 167]
  ------------------
 2364|  1.95k|					if (yych <= 'O') goto yy183;
  ------------------
  |  Branch (2364:10): [True: 0, False: 1.95k]
  ------------------
 2365|  1.95k|					if (yych == 'U') goto yy185;
  ------------------
  |  Branch (2365:10): [True: 0, False: 1.95k]
  ------------------
 2366|  1.95k|					goto yy162;
 2367|  1.95k|				} else {
 2368|    167|					if (yych <= '^') {
  ------------------
  |  Branch (2368:10): [True: 0, False: 167]
  ------------------
 2369|      0|						if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2369:11): [True: 0, False: 0]
  ------------------
 2370|      0|						goto yy164;
 2371|    167|					} else {
 2372|    167|						if (yych == '`') goto yy139;
  ------------------
  |  Branch (2372:11): [True: 0, False: 167]
  ------------------
 2373|    167|						goto yy162;
 2374|    167|					}
 2375|    167|				}
 2376|  2.11k|			} else {
 2377|    213|				if (yych <= 'z') {
  ------------------
  |  Branch (2377:9): [True: 212, False: 1]
  ------------------
 2378|    212|					if (yych <= 'o') goto yy183;
  ------------------
  |  Branch (2378:10): [True: 2, False: 210]
  ------------------
 2379|    210|					if (yych == 'u') goto yy185;
  ------------------
  |  Branch (2379:10): [True: 12, False: 198]
  ------------------
 2380|    198|					goto yy162;
 2381|    210|				} else {
 2382|      1|					if (yych <= '|') {
  ------------------
  |  Branch (2382:10): [True: 0, False: 1]
  ------------------
 2383|      0|						if (yych <= '{') goto yy139;
  ------------------
  |  Branch (2383:11): [True: 0, False: 0]
  ------------------
 2384|      0|						goto yy164;
 2385|      1|					} else {
 2386|      1|						if (yych == '~') goto yy164;
  ------------------
  |  Branch (2386:11): [True: 1, False: 0]
  ------------------
 2387|      0|						goto yy139;
 2388|      1|					}
 2389|      1|				}
 2390|    213|			}
 2391|  2.33k|		}
 2392|    703|yy167:
 2393|    703|		YYDEBUG(167, *YYCURSOR);
 2394|    703|		yyaccept = 2;
 2395|    703|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|    703|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|    703|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    703|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|    703|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    703|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    703|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2396|    703|		if (yych <= 'E') {
  ------------------
  |  Branch (2396:7): [True: 39, False: 664]
  ------------------
 2397|     39|			if (yych <= '%') {
  ------------------
  |  Branch (2397:8): [True: 4, False: 35]
  ------------------
 2398|      4|				if (yych <= '\f') {
  ------------------
  |  Branch (2398:9): [True: 0, False: 4]
  ------------------
 2399|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2399:10): [True: 0, False: 0]
  ------------------
 2400|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2400:10): [True: 0, False: 0]
  ------------------
 2401|      0|					if (yych <= '\n') goto yy164;
  ------------------
  |  Branch (2401:10): [True: 0, False: 0]
  ------------------
 2402|      0|					goto yy139;
 2403|      4|				} else {
 2404|      4|					if (yych <= '\r') goto yy164;
  ------------------
  |  Branch (2404:10): [True: 0, False: 4]
  ------------------
 2405|      4|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2405:10): [True: 0, False: 4]
  ------------------
 2406|      4|					if (yych <= '"') goto yy164;
  ------------------
  |  Branch (2406:10): [True: 4, False: 0]
  ------------------
 2407|      0|					goto yy139;
 2408|      4|				}
 2409|     35|			} else {
 2410|     35|				if (yych <= ':') {
  ------------------
  |  Branch (2410:9): [True: 2, False: 33]
  ------------------
 2411|      2|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2411:10): [True: 1, False: 1]
  ------------------
 2412|      1|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2412:10): [True: 1, False: 0]
  ------------------
 2413|      0|					if (yych <= '9') goto yy162;
  ------------------
  |  Branch (2413:10): [True: 0, False: 0]
  ------------------
 2414|      0|					goto yy139;
 2415|     33|				} else {
 2416|     33|					if (yych <= '<') {
  ------------------
  |  Branch (2416:10): [True: 33, False: 0]
  ------------------
 2417|     33|						if (yych <= ';') goto yy164;
  ------------------
  |  Branch (2417:11): [True: 0, False: 33]
  ------------------
 2418|     33|						goto yy139;
 2419|     33|					} else {
 2420|      0|						if (yych <= '=') goto yy164;
  ------------------
  |  Branch (2420:11): [True: 0, False: 0]
  ------------------
 2421|      0|						if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2421:11): [True: 0, False: 0]
  ------------------
 2422|      0|						goto yy162;
 2423|      0|					}
 2424|     33|				}
 2425|     35|			}
 2426|    664|		} else {
 2427|    664|			if (yych <= 'e') {
  ------------------
  |  Branch (2427:8): [True: 5, False: 659]
  ------------------
 2428|      5|				if (yych <= 'Z') {
  ------------------
  |  Branch (2428:9): [True: 1, False: 4]
  ------------------
 2429|      1|					if (yych <= 'F') goto yy186;
  ------------------
  |  Branch (2429:10): [True: 0, False: 1]
  ------------------
 2430|      1|					if (yych == 'N') goto yy187;
  ------------------
  |  Branch (2430:10): [True: 1, False: 0]
  ------------------
 2431|      0|					goto yy162;
 2432|      4|				} else {
 2433|      4|					if (yych <= '^') {
  ------------------
  |  Branch (2433:10): [True: 4, False: 0]
  ------------------
 2434|      4|						if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2434:11): [True: 3, False: 1]
  ------------------
 2435|      1|						goto yy164;
 2436|      4|					} else {
 2437|      0|						if (yych == '`') goto yy139;
  ------------------
  |  Branch (2437:11): [True: 0, False: 0]
  ------------------
 2438|      0|						goto yy162;
 2439|      0|					}
 2440|      4|				}
 2441|    659|			} else {
 2442|    659|				if (yych <= 'z') {
  ------------------
  |  Branch (2442:9): [True: 659, False: 0]
  ------------------
 2443|    659|					if (yych <= 'f') goto yy186;
  ------------------
  |  Branch (2443:10): [True: 550, False: 109]
  ------------------
 2444|    109|					if (yych == 'n') goto yy187;
  ------------------
  |  Branch (2444:10): [True: 10, False: 99]
  ------------------
 2445|     99|					goto yy162;
 2446|    109|				} else {
 2447|      0|					if (yych <= '|') {
  ------------------
  |  Branch (2447:10): [True: 0, False: 0]
  ------------------
 2448|      0|						if (yych <= '{') goto yy139;
  ------------------
  |  Branch (2448:11): [True: 0, False: 0]
  ------------------
 2449|      0|						goto yy164;
 2450|      0|					} else {
 2451|      0|						if (yych == '~') goto yy164;
  ------------------
  |  Branch (2451:11): [True: 0, False: 0]
  ------------------
 2452|      0|						goto yy139;
 2453|      0|					}
 2454|      0|				}
 2455|    659|			}
 2456|    664|		}
 2457|     41|yy168:
 2458|     41|		YYDEBUG(168, *YYCURSOR);
 2459|     41|		yyaccept = 2;
 2460|     41|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|     41|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     41|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     41|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     41|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     41|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2461|     41|		if (yych <= '=') {
  ------------------
  |  Branch (2461:7): [True: 7, False: 34]
  ------------------
 2462|      7|			if (yych <= '"') {
  ------------------
  |  Branch (2462:8): [True: 1, False: 6]
  ------------------
 2463|      1|				if (yych <= '\n') {
  ------------------
  |  Branch (2463:9): [True: 1, False: 0]
  ------------------
 2464|      1|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2464:10): [True: 0, False: 1]
  ------------------
 2465|      1|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2465:10): [True: 0, False: 1]
  ------------------
 2466|      1|					goto yy164;
 2467|      1|				} else {
 2468|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2468:10): [True: 0, False: 0]
  ------------------
 2469|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2469:10): [True: 0, False: 0]
  ------------------
 2470|      0|					goto yy164;
 2471|      0|				}
 2472|      6|			} else {
 2473|      6|				if (yych <= '9') {
  ------------------
  |  Branch (2473:9): [True: 2, False: 4]
  ------------------
 2474|      2|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2474:10): [True: 0, False: 2]
  ------------------
 2475|      2|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2475:10): [True: 0, False: 2]
  ------------------
 2476|      2|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2476:10): [True: 2, False: 0]
  ------------------
 2477|      0|					goto yy162;
 2478|      4|				} else {
 2479|      4|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2479:10): [True: 4, False: 0]
  ------------------
 2480|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (2480:10): [True: 0, False: 0]
  ------------------
 2481|      0|					goto yy164;
 2482|      0|				}
 2483|      6|			}
 2484|     34|		} else {
 2485|     34|			if (yych <= '`') {
  ------------------
  |  Branch (2485:8): [True: 2, False: 32]
  ------------------
 2486|      2|				if (yych <= 'Z') {
  ------------------
  |  Branch (2486:9): [True: 2, False: 0]
  ------------------
 2487|      2|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2487:10): [True: 0, False: 2]
  ------------------
 2488|      2|					if (yych == 'R') goto yy189;
  ------------------
  |  Branch (2488:10): [True: 2, False: 0]
  ------------------
 2489|      0|					goto yy162;
 2490|      2|				} else {
 2491|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2491:10): [True: 0, False: 0]
  ------------------
 2492|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2492:10): [True: 0, False: 0]
  ------------------
 2493|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (2493:10): [True: 0, False: 0]
  ------------------
 2494|      0|					goto yy139;
 2495|      0|				}
 2496|     32|			} else {
 2497|     32|				if (yych <= '{') {
  ------------------
  |  Branch (2497:9): [True: 27, False: 5]
  ------------------
 2498|     27|					if (yych == 'r') goto yy189;
  ------------------
  |  Branch (2498:10): [True: 27, False: 0]
  ------------------
 2499|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2499:10): [True: 0, False: 0]
  ------------------
 2500|      0|					goto yy139;
 2501|      5|				} else {
 2502|      5|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2502:10): [True: 0, False: 5]
  ------------------
 2503|      5|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2503:10): [True: 0, False: 5]
  ------------------
 2504|      5|					goto yy139;
 2505|      5|				}
 2506|     32|			}
 2507|     34|		}
 2508|  1.22k|yy169:
 2509|  1.22k|		YYDEBUG(169, *YYCURSOR);
 2510|  1.22k|		yyaccept = 2;
 2511|  1.22k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|  1.22k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  1.22k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.22k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|  1.22k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.22k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.22k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2512|  1.22k|		if (yych <= '=') {
  ------------------
  |  Branch (2512:7): [True: 1.22k, False: 6]
  ------------------
 2513|  1.22k|			if (yych <= '"') {
  ------------------
  |  Branch (2513:8): [True: 2, False: 1.21k]
  ------------------
 2514|      2|				if (yych <= '\n') {
  ------------------
  |  Branch (2514:9): [True: 1, False: 1]
  ------------------
 2515|      1|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2515:10): [True: 1, False: 0]
  ------------------
 2516|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2516:10): [True: 0, False: 0]
  ------------------
 2517|      0|					goto yy164;
 2518|      1|				} else {
 2519|      1|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2519:10): [True: 0, False: 1]
  ------------------
 2520|      1|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2520:10): [True: 0, False: 1]
  ------------------
 2521|      1|					goto yy164;
 2522|      1|				}
 2523|  1.21k|			} else {
 2524|  1.21k|				if (yych <= '9') {
  ------------------
  |  Branch (2524:9): [True: 166, False: 1.05k]
  ------------------
 2525|    166|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2525:10): [True: 0, False: 166]
  ------------------
 2526|    166|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2526:10): [True: 0, False: 166]
  ------------------
 2527|    166|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2527:10): [True: 0, False: 166]
  ------------------
 2528|    166|					goto yy162;
 2529|  1.05k|				} else {
 2530|  1.05k|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2530:10): [True: 1.05k, False: 0]
  ------------------
 2531|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (2531:10): [True: 0, False: 0]
  ------------------
 2532|      0|					goto yy164;
 2533|      0|				}
 2534|  1.21k|			}
 2535|  1.22k|		} else {
 2536|      6|			if (yych <= '`') {
  ------------------
  |  Branch (2536:8): [True: 0, False: 6]
  ------------------
 2537|      0|				if (yych <= 'Z') {
  ------------------
  |  Branch (2537:9): [True: 0, False: 0]
  ------------------
 2538|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2538:10): [True: 0, False: 0]
  ------------------
 2539|      0|					if (yych == 'E') goto yy190;
  ------------------
  |  Branch (2539:10): [True: 0, False: 0]
  ------------------
 2540|      0|					goto yy162;
 2541|      0|				} else {
 2542|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2542:10): [True: 0, False: 0]
  ------------------
 2543|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2543:10): [True: 0, False: 0]
  ------------------
 2544|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (2544:10): [True: 0, False: 0]
  ------------------
 2545|      0|					goto yy139;
 2546|      0|				}
 2547|      6|			} else {
 2548|      6|				if (yych <= '{') {
  ------------------
  |  Branch (2548:9): [True: 5, False: 1]
  ------------------
 2549|      5|					if (yych == 'e') goto yy190;
  ------------------
  |  Branch (2549:10): [True: 4, False: 1]
  ------------------
 2550|      1|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2550:10): [True: 1, False: 0]
  ------------------
 2551|      0|					goto yy139;
 2552|      1|				} else {
 2553|      1|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2553:10): [True: 0, False: 1]
  ------------------
 2554|      1|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2554:10): [True: 0, False: 1]
  ------------------
 2555|      1|					goto yy139;
 2556|      1|				}
 2557|      6|			}
 2558|      6|		}
 2559|  1.15k|yy170:
 2560|  1.15k|		YYDEBUG(170, *YYCURSOR);
 2561|  1.15k|		++YYCURSOR;
  ------------------
  |  |   47|  1.15k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.15k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.15k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2562|  1.15k|		YYFILL(1);
  ------------------
  |  |   46|  1.15k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  1.15k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.15k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.15k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  1.15k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.15k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.15k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1.15k]
  |  |  ------------------
  ------------------
 2563|  1.15k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  1.15k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.15k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.15k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2564|  1.15k|		if (yych <= '\\') {
  ------------------
  |  Branch (2564:7): [True: 1.01k, False: 142]
  ------------------
 2565|  1.01k|			if (yych <= 0x00) goto yy171;
  ------------------
  |  Branch (2565:8): [True: 0, False: 1.01k]
  ------------------
 2566|  1.01k|			if (yych <= '[') goto yy138;
  ------------------
  |  Branch (2566:8): [True: 1.01k, False: 0]
  ------------------
 2567|      0|			goto yy172;
 2568|  1.01k|		} else {
 2569|    142|			if (yych != '{') goto yy138;
  ------------------
  |  Branch (2569:8): [True: 0, False: 142]
  ------------------
 2570|    142|		}
 2571|    142|yy171:
 2572|    142|		YYDEBUG(171, *YYCURSOR);
 2573|    142|		YYCURSOR = YYMARKER;
  ------------------
  |  |   47|    142|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    142|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    142|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   49|    142|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|    142|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    142|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2574|    142|		if (yyaccept <= 2) {
  ------------------
  |  Branch (2574:7): [True: 142, False: 0]
  ------------------
 2575|    142|			if (yyaccept <= 1) {
  ------------------
  |  Branch (2575:8): [True: 142, False: 0]
  ------------------
 2576|    142|				if (yyaccept == 0) {
  ------------------
  |  Branch (2576:9): [True: 142, False: 0]
  ------------------
 2577|    142|					goto yy140;
 2578|    142|				} else {
 2579|      0|					goto yy157;
 2580|      0|				}
 2581|    142|			} else {
 2582|      0|				goto yy164;
 2583|      0|			}
 2584|    142|		} else {
 2585|      0|			if (yyaccept <= 4) {
  ------------------
  |  Branch (2585:8): [True: 0, False: 0]
  ------------------
 2586|      0|				if (yyaccept == 3) {
  ------------------
  |  Branch (2586:9): [True: 0, False: 0]
  ------------------
 2587|      0|					goto yy184;
 2588|      0|				} else {
 2589|      0|					goto yy188;
 2590|      0|				}
 2591|      0|			} else {
 2592|      0|				goto yy205;
 2593|      0|			}
 2594|      0|		}
 2595|      0|yy172:
 2596|      0|		YYDEBUG(172, *YYCURSOR);
 2597|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2598|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2599|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2600|      0|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (2600:7): [True: 0, False: 0]
  ------------------
 2601|      0|			goto yy191;
 2602|      0|		}
 2603|      0|		goto yy138;
 2604|    142|yy173:
 2605|    142|		YYDEBUG(173, *YYCURSOR);
 2606|    142|		++YYCURSOR;
  ------------------
  |  |   47|    142|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    142|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    142|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2607|    142|		YYDEBUG(174, *YYCURSOR);
 2608|    142|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    142|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    142|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    142|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    142|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    142|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    142|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    142|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    142|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2609|    142|#line 421 "Zend/zend_ini_scanner.l"
 2610|    142|		{ /* Variable start */
 2611|    142|	yy_push_state(ST_VARNAME);
  ------------------
  |  |  180|    142|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 2612|    142|	return TC_DOLLAR_CURLY;
 2613|      0|}
 2614|      0|#line 2615 "Zend/zend_ini_scanner.c"
 2615|   329k|yy175:
 2616|   329k|		YYDEBUG(175, *YYCURSOR);
 2617|   329k|		++YYCURSOR;
  ------------------
  |  |   47|   329k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   329k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   329k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2618|   329k|		YYFILL(1);
  ------------------
  |  |   46|   329k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|   329k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   329k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   329k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|   329k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|   329k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|   329k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 680, False: 329k]
  |  |  ------------------
  ------------------
 2619|   329k|		yych = *YYCURSOR;
  ------------------
  |  |   47|   329k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|   329k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   329k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2620|   329k|		YYDEBUG(176, *YYCURSOR);
 2621|   329k|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (2621:7): [True: 319k, False: 10.0k]
  ------------------
 2622|   319k|			goto yy175;
 2623|   319k|		}
 2624|  10.0k|		goto yy193;
 2625|  10.0k|yy177:
 2626|  1.34k|		YYDEBUG(177, *YYCURSOR);
 2627|  1.34k|		yyaccept = 1;
 2628|  1.34k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|  1.34k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|  1.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2629|  1.34k|		YYFILL(1);
  ------------------
  |  |   46|  1.34k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  1.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  1.34k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1.34k]
  |  |  ------------------
  ------------------
 2630|  1.34k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  1.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  1.34k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  1.34k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2631|  1.34k|		YYDEBUG(178, *YYCURSOR);
 2632|  1.34k|		if (yych <= '/') {
  ------------------
  |  Branch (2632:7): [True: 431, False: 918]
  ------------------
 2633|    431|			if (yych <= 0x1F) {
  ------------------
  |  Branch (2633:8): [True: 81, False: 350]
  ------------------
 2634|     81|				if (yych <= '\n') {
  ------------------
  |  Branch (2634:9): [True: 81, False: 0]
  ------------------
 2635|     81|					if (yych <= 0x00) goto yy157;
  ------------------
  |  Branch (2635:10): [True: 81, False: 0]
  ------------------
 2636|      0|					if (yych <= 0x08) goto yy138;
  ------------------
  |  Branch (2636:10): [True: 0, False: 0]
  ------------------
 2637|      0|					goto yy157;
 2638|      0|				} else {
 2639|      0|					if (yych == '\r') goto yy157;
  ------------------
  |  Branch (2639:10): [True: 0, False: 0]
  ------------------
 2640|      0|					goto yy138;
 2641|      0|				}
 2642|    350|			} else {
 2643|    350|				if (yych <= '$') {
  ------------------
  |  Branch (2643:9): [True: 66, False: 284]
  ------------------
 2644|     66|					if (yych <= '"') goto yy157;
  ------------------
  |  Branch (2644:10): [True: 0, False: 66]
  ------------------
 2645|     66|					if (yych <= '#') goto yy138;
  ------------------
  |  Branch (2645:10): [True: 66, False: 0]
  ------------------
 2646|      0|					goto yy170;
 2647|    284|				} else {
 2648|    284|					if (yych <= '%') goto yy138;
  ------------------
  |  Branch (2648:10): [True: 0, False: 284]
  ------------------
 2649|    284|					if (yych <= ')') goto yy157;
  ------------------
  |  Branch (2649:10): [True: 0, False: 284]
  ------------------
 2650|    284|					goto yy138;
 2651|    284|				}
 2652|    350|			}
 2653|    918|		} else {
 2654|    918|			if (yych <= ']') {
  ------------------
  |  Branch (2654:8): [True: 918, False: 0]
  ------------------
 2655|    918|				if (yych <= ';') {
  ------------------
  |  Branch (2655:9): [True: 918, False: 0]
  ------------------
 2656|    918|					if (yych <= '9') goto yy177;
  ------------------
  |  Branch (2656:10): [True: 918, False: 0]
  ------------------
 2657|      0|					if (yych <= ':') goto yy138;
  ------------------
  |  Branch (2657:10): [True: 0, False: 0]
  ------------------
 2658|      0|					goto yy157;
 2659|      0|				} else {
 2660|      0|					if (yych == '=') goto yy157;
  ------------------
  |  Branch (2660:10): [True: 0, False: 0]
  ------------------
 2661|      0|					goto yy138;
 2662|      0|				}
 2663|    918|			} else {
 2664|      0|				if (yych <= '|') {
  ------------------
  |  Branch (2664:9): [True: 0, False: 0]
  ------------------
 2665|      0|					if (yych <= '^') goto yy157;
  ------------------
  |  Branch (2665:10): [True: 0, False: 0]
  ------------------
 2666|      0|					if (yych <= '{') goto yy138;
  ------------------
  |  Branch (2666:10): [True: 0, False: 0]
  ------------------
 2667|      0|					goto yy157;
 2668|      0|				} else {
 2669|      0|					if (yych == '~') goto yy157;
  ------------------
  |  Branch (2669:10): [True: 0, False: 0]
  ------------------
 2670|      0|					goto yy138;
 2671|      0|				}
 2672|      0|			}
 2673|    918|		}
 2674|  8.39k|yy179:
 2675|  8.39k|		YYDEBUG(179, *YYCURSOR);
 2676|  8.39k|		++YYCURSOR;
  ------------------
  |  |   47|  8.39k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  8.39k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  8.39k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2677|  8.39k|yy180:
 2678|  8.39k|		YYDEBUG(180, *YYCURSOR);
 2679|  8.39k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  8.39k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  8.39k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  8.39k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  8.39k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  8.39k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  8.39k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  8.39k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  8.39k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2680|  8.39k|#line 674 "Zend/zend_ini_scanner.l"
 2681|  8.39k|		{ /* Comment */
 2682|  8.39k|	BEGIN(INITIAL);
  ------------------
  |  |   57|  8.39k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  8.39k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  8.39k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  8.39k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2683|  8.39k|	SCNG(lineno)++;
  ------------------
  |  |  106|  8.39k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  8.39k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2684|  8.39k|	return END_OF_LINE;
 2685|  8.39k|}
 2686|      0|#line 2687 "Zend/zend_ini_scanner.c"
 2687|      0|yy181:
 2688|      0|		YYDEBUG(181, *YYCURSOR);
 2689|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2690|      0|		if (yych == '\n') goto yy179;
  ------------------
  |  Branch (2690:7): [True: 0, False: 0]
  ------------------
 2691|      0|		goto yy180;
 2692|      0|yy182:
 2693|      0|		YYDEBUG(182, *YYCURSOR);
 2694|      0|		yyaccept = 2;
 2695|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2696|      0|		if (yych <= '=') {
  ------------------
  |  Branch (2696:7): [True: 0, False: 0]
  ------------------
 2697|      0|			if (yych <= '"') {
  ------------------
  |  Branch (2697:8): [True: 0, False: 0]
  ------------------
 2698|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (2698:9): [True: 0, False: 0]
  ------------------
 2699|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2699:10): [True: 0, False: 0]
  ------------------
 2700|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2700:10): [True: 0, False: 0]
  ------------------
 2701|      0|					goto yy164;
 2702|      0|				} else {
 2703|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2703:10): [True: 0, False: 0]
  ------------------
 2704|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2704:10): [True: 0, False: 0]
  ------------------
 2705|      0|					goto yy164;
 2706|      0|				}
 2707|      0|			} else {
 2708|      0|				if (yych <= '9') {
  ------------------
  |  Branch (2708:9): [True: 0, False: 0]
  ------------------
 2709|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2709:10): [True: 0, False: 0]
  ------------------
 2710|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2710:10): [True: 0, False: 0]
  ------------------
 2711|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2711:10): [True: 0, False: 0]
  ------------------
 2712|      0|					goto yy162;
 2713|      0|				} else {
 2714|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2714:10): [True: 0, False: 0]
  ------------------
 2715|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (2715:10): [True: 0, False: 0]
  ------------------
 2716|      0|					goto yy164;
 2717|      0|				}
 2718|      0|			}
 2719|      0|		} else {
 2720|      0|			if (yych <= '`') {
  ------------------
  |  Branch (2720:8): [True: 0, False: 0]
  ------------------
 2721|      0|				if (yych <= 'Z') {
  ------------------
  |  Branch (2721:9): [True: 0, False: 0]
  ------------------
 2722|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2722:10): [True: 0, False: 0]
  ------------------
 2723|      0|					if (yych == 'L') goto yy195;
  ------------------
  |  Branch (2723:10): [True: 0, False: 0]
  ------------------
 2724|      0|					goto yy162;
 2725|      0|				} else {
 2726|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2726:10): [True: 0, False: 0]
  ------------------
 2727|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2727:10): [True: 0, False: 0]
  ------------------
 2728|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (2728:10): [True: 0, False: 0]
  ------------------
 2729|      0|					goto yy139;
 2730|      0|				}
 2731|      0|			} else {
 2732|      0|				if (yych <= '{') {
  ------------------
  |  Branch (2732:9): [True: 0, False: 0]
  ------------------
 2733|      0|					if (yych == 'l') goto yy195;
  ------------------
  |  Branch (2733:10): [True: 0, False: 0]
  ------------------
 2734|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2734:10): [True: 0, False: 0]
  ------------------
 2735|      0|					goto yy139;
 2736|      0|				} else {
 2737|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2737:10): [True: 0, False: 0]
  ------------------
 2738|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2738:10): [True: 0, False: 0]
  ------------------
 2739|      0|					goto yy139;
 2740|      0|				}
 2741|      0|			}
 2742|      0|		}
 2743|      2|yy183:
 2744|      2|		YYDEBUG(183, *YYCURSOR);
 2745|      2|		yyaccept = 3;
 2746|      2|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      2|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2747|      2|		if (yych <= '<') {
  ------------------
  |  Branch (2747:7): [True: 2, False: 0]
  ------------------
 2748|      2|			if (yych <= ' ') {
  ------------------
  |  Branch (2748:8): [True: 1, False: 1]
  ------------------
 2749|      1|				if (yych <= '\n') {
  ------------------
  |  Branch (2749:9): [True: 0, False: 1]
  ------------------
 2750|      0|					if (yych <= 0x00) goto yy184;
  ------------------
  |  Branch (2750:10): [True: 0, False: 0]
  ------------------
 2751|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2751:10): [True: 0, False: 0]
  ------------------
 2752|      0|					if (yych <= '\t') goto yy196;
  ------------------
  |  Branch (2752:10): [True: 0, False: 0]
  ------------------
 2753|      1|				} else {
 2754|      1|					if (yych == '\r') goto yy184;
  ------------------
  |  Branch (2754:10): [True: 0, False: 1]
  ------------------
 2755|      1|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2755:10): [True: 0, False: 1]
  ------------------
 2756|      1|					goto yy196;
 2757|      1|				}
 2758|      1|			} else {
 2759|      1|				if (yych <= '/') {
  ------------------
  |  Branch (2759:9): [True: 1, False: 0]
  ------------------
 2760|      1|					if (yych <= '"') goto yy184;
  ------------------
  |  Branch (2760:10): [True: 0, False: 1]
  ------------------
 2761|      1|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2761:10): [True: 0, False: 1]
  ------------------
 2762|      1|					if (yych >= '*') goto yy139;
  ------------------
  |  Branch (2762:10): [True: 0, False: 1]
  ------------------
 2763|      1|				} else {
 2764|      0|					if (yych <= '9') goto yy162;
  ------------------
  |  Branch (2764:10): [True: 0, False: 0]
  ------------------
 2765|      0|					if (yych != ';') goto yy139;
  ------------------
  |  Branch (2765:10): [True: 0, False: 0]
  ------------------
 2766|      0|				}
 2767|      1|			}
 2768|      2|		} else {
 2769|      0|			if (yych <= '_') {
  ------------------
  |  Branch (2769:8): [True: 0, False: 0]
  ------------------
 2770|      0|				if (yych <= 'N') {
  ------------------
  |  Branch (2770:9): [True: 0, False: 0]
  ------------------
 2771|      0|					if (yych <= '=') goto yy184;
  ------------------
  |  Branch (2771:10): [True: 0, False: 0]
  ------------------
 2772|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2772:10): [True: 0, False: 0]
  ------------------
 2773|      0|					if (yych <= 'M') goto yy162;
  ------------------
  |  Branch (2773:10): [True: 0, False: 0]
  ------------------
 2774|      0|					goto yy198;
 2775|      0|				} else {
 2776|      0|					if (yych <= 'Z') goto yy162;
  ------------------
  |  Branch (2776:10): [True: 0, False: 0]
  ------------------
 2777|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2777:10): [True: 0, False: 0]
  ------------------
 2778|      0|					if (yych >= '_') goto yy162;
  ------------------
  |  Branch (2778:10): [True: 0, False: 0]
  ------------------
 2779|      0|				}
 2780|      0|			} else {
 2781|      0|				if (yych <= 'z') {
  ------------------
  |  Branch (2781:9): [True: 0, False: 0]
  ------------------
 2782|      0|					if (yych <= '`') goto yy139;
  ------------------
  |  Branch (2782:10): [True: 0, False: 0]
  ------------------
 2783|      0|					if (yych == 'n') goto yy198;
  ------------------
  |  Branch (2783:10): [True: 0, False: 0]
  ------------------
 2784|      0|					goto yy162;
 2785|      0|				} else {
 2786|      0|					if (yych <= '|') {
  ------------------
  |  Branch (2786:10): [True: 0, False: 0]
  ------------------
 2787|      0|						if (yych <= '{') goto yy139;
  ------------------
  |  Branch (2787:11): [True: 0, False: 0]
  ------------------
 2788|      0|					} else {
 2789|      0|						if (yych != '~') goto yy139;
  ------------------
  |  Branch (2789:11): [True: 0, False: 0]
  ------------------
 2790|      0|					}
 2791|      0|				}
 2792|      0|			}
 2793|      0|		}
 2794|      2|yy184:
 2795|      2|		YYDEBUG(184, *YYCURSOR);
 2796|      2|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      2|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2797|      2|#line 494 "Zend/zend_ini_scanner.l"
 2798|      2|		{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
 2799|      2|	RETURN_TOKEN(BOOL_FALSE, "", 0);
  ------------------
  |  |  146|      2|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      2|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      4|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 2, False: 0]
  |  |  ------------------
  |  |  148|      2|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      2|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      2|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      2|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 2, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      2|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      2|	} else {                                                       \
  |  |  151|      0|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      0|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      0|	}                                                              \
  |  |  153|      2|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      2|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      2|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      2|	return type;                                                   \
  |  |  155|      2|}
  ------------------
 2800|      0|}
 2801|      0|#line 2802 "Zend/zend_ini_scanner.c"
 2802|     12|yy185:
 2803|     12|		YYDEBUG(185, *YYCURSOR);
 2804|     12|		yyaccept = 2;
 2805|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2806|     12|		if (yych <= '=') {
  ------------------
  |  Branch (2806:7): [True: 4, False: 8]
  ------------------
 2807|      4|			if (yych <= '"') {
  ------------------
  |  Branch (2807:8): [True: 4, False: 0]
  ------------------
 2808|      4|				if (yych <= '\n') {
  ------------------
  |  Branch (2808:9): [True: 0, False: 4]
  ------------------
 2809|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2809:10): [True: 0, False: 0]
  ------------------
 2810|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2810:10): [True: 0, False: 0]
  ------------------
 2811|      0|					goto yy164;
 2812|      4|				} else {
 2813|      4|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2813:10): [True: 0, False: 4]
  ------------------
 2814|      4|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2814:10): [True: 1, False: 3]
  ------------------
 2815|      3|					goto yy164;
 2816|      4|				}
 2817|      4|			} else {
 2818|      0|				if (yych <= '9') {
  ------------------
  |  Branch (2818:9): [True: 0, False: 0]
  ------------------
 2819|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2819:10): [True: 0, False: 0]
  ------------------
 2820|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2820:10): [True: 0, False: 0]
  ------------------
 2821|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2821:10): [True: 0, False: 0]
  ------------------
 2822|      0|					goto yy162;
 2823|      0|				} else {
 2824|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2824:10): [True: 0, False: 0]
  ------------------
 2825|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (2825:10): [True: 0, False: 0]
  ------------------
 2826|      0|					goto yy164;
 2827|      0|				}
 2828|      0|			}
 2829|      8|		} else {
 2830|      8|			if (yych <= '`') {
  ------------------
  |  Branch (2830:8): [True: 3, False: 5]
  ------------------
 2831|      3|				if (yych <= 'Z') {
  ------------------
  |  Branch (2831:9): [True: 2, False: 1]
  ------------------
 2832|      2|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2832:10): [True: 0, False: 2]
  ------------------
 2833|      2|					if (yych == 'L') goto yy199;
  ------------------
  |  Branch (2833:10): [True: 0, False: 2]
  ------------------
 2834|      2|					goto yy162;
 2835|      2|				} else {
 2836|      1|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2836:10): [True: 0, False: 1]
  ------------------
 2837|      1|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2837:10): [True: 0, False: 1]
  ------------------
 2838|      1|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (2838:10): [True: 1, False: 0]
  ------------------
 2839|      0|					goto yy139;
 2840|      1|				}
 2841|      5|			} else {
 2842|      5|				if (yych <= '{') {
  ------------------
  |  Branch (2842:9): [True: 5, False: 0]
  ------------------
 2843|      5|					if (yych == 'l') goto yy199;
  ------------------
  |  Branch (2843:10): [True: 5, False: 0]
  ------------------
 2844|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2844:10): [True: 0, False: 0]
  ------------------
 2845|      0|					goto yy139;
 2846|      0|				} else {
 2847|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2847:10): [True: 0, False: 0]
  ------------------
 2848|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2848:10): [True: 0, False: 0]
  ------------------
 2849|      0|					goto yy139;
 2850|      0|				}
 2851|      5|			}
 2852|      8|		}
 2853|    550|yy186:
 2854|    550|		YYDEBUG(186, *YYCURSOR);
 2855|    550|		yyaccept = 2;
 2856|    550|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|    550|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|    550|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    550|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|    550|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    550|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    550|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2857|    550|		if (yych <= '=') {
  ------------------
  |  Branch (2857:7): [True: 68, False: 482]
  ------------------
 2858|     68|			if (yych <= '"') {
  ------------------
  |  Branch (2858:8): [True: 3, False: 65]
  ------------------
 2859|      3|				if (yych <= '\n') {
  ------------------
  |  Branch (2859:9): [True: 3, False: 0]
  ------------------
 2860|      3|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2860:10): [True: 0, False: 3]
  ------------------
 2861|      3|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2861:10): [True: 0, False: 3]
  ------------------
 2862|      3|					goto yy164;
 2863|      3|				} else {
 2864|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2864:10): [True: 0, False: 0]
  ------------------
 2865|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2865:10): [True: 0, False: 0]
  ------------------
 2866|      0|					goto yy164;
 2867|      0|				}
 2868|     65|			} else {
 2869|     65|				if (yych <= '9') {
  ------------------
  |  Branch (2869:9): [True: 0, False: 65]
  ------------------
 2870|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2870:10): [True: 0, False: 0]
  ------------------
 2871|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2871:10): [True: 0, False: 0]
  ------------------
 2872|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2872:10): [True: 0, False: 0]
  ------------------
 2873|      0|					goto yy162;
 2874|     65|				} else {
 2875|     65|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2875:10): [True: 0, False: 65]
  ------------------
 2876|     65|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (2876:10): [True: 65, False: 0]
  ------------------
 2877|      0|					goto yy164;
 2878|     65|				}
 2879|     65|			}
 2880|    482|		} else {
 2881|    482|			if (yych <= '`') {
  ------------------
  |  Branch (2881:8): [True: 481, False: 1]
  ------------------
 2882|    481|				if (yych <= 'Z') {
  ------------------
  |  Branch (2882:9): [True: 0, False: 481]
  ------------------
 2883|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2883:10): [True: 0, False: 0]
  ------------------
 2884|      0|					if (yych == 'F') goto yy200;
  ------------------
  |  Branch (2884:10): [True: 0, False: 0]
  ------------------
 2885|      0|					goto yy162;
 2886|    481|				} else {
 2887|    481|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2887:10): [True: 0, False: 481]
  ------------------
 2888|    481|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2888:10): [True: 0, False: 481]
  ------------------
 2889|    481|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (2889:10): [True: 0, False: 481]
  ------------------
 2890|    481|					goto yy139;
 2891|    481|				}
 2892|    481|			} else {
 2893|      1|				if (yych <= '{') {
  ------------------
  |  Branch (2893:9): [True: 1, False: 0]
  ------------------
 2894|      1|					if (yych == 'f') goto yy200;
  ------------------
  |  Branch (2894:10): [True: 0, False: 1]
  ------------------
 2895|      1|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2895:10): [True: 1, False: 0]
  ------------------
 2896|      0|					goto yy139;
 2897|      1|				} else {
 2898|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2898:10): [True: 0, False: 0]
  ------------------
 2899|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2899:10): [True: 0, False: 0]
  ------------------
 2900|      0|					goto yy139;
 2901|      0|				}
 2902|      1|			}
 2903|    482|		}
 2904|     14|yy187:
 2905|     14|		YYDEBUG(187, *YYCURSOR);
 2906|     14|		yyaccept = 4;
 2907|     14|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|     14|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     14|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     14|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     14|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     14|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2908|     14|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (2908:7): [True: 1, False: 13]
  ------------------
 2909|      1|			goto yy162;
 2910|      1|		}
 2911|     13|		if (yych <= ')') {
  ------------------
  |  Branch (2911:7): [True: 10, False: 3]
  ------------------
 2912|     10|			if (yych <= '\f') {
  ------------------
  |  Branch (2912:8): [True: 8, False: 2]
  ------------------
 2913|      8|				if (yych <= 0x08) {
  ------------------
  |  Branch (2913:9): [True: 1, False: 7]
  ------------------
 2914|      1|					if (yych >= 0x01) goto yy139;
  ------------------
  |  Branch (2914:10): [True: 0, False: 1]
  ------------------
 2915|      7|				} else {
 2916|      7|					if (yych <= '\t') goto yy201;
  ------------------
  |  Branch (2916:10): [True: 0, False: 7]
  ------------------
 2917|      7|					if (yych >= '\v') goto yy139;
  ------------------
  |  Branch (2917:10): [True: 0, False: 7]
  ------------------
 2918|      7|				}
 2919|      8|			} else {
 2920|      2|				if (yych <= ' ') {
  ------------------
  |  Branch (2920:9): [True: 2, False: 0]
  ------------------
 2921|      2|					if (yych <= '\r') goto yy188;
  ------------------
  |  Branch (2921:10): [True: 0, False: 2]
  ------------------
 2922|      2|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2922:10): [True: 0, False: 2]
  ------------------
 2923|      2|					goto yy201;
 2924|      2|				} else {
 2925|      0|					if (yych <= '"') goto yy188;
  ------------------
  |  Branch (2925:10): [True: 0, False: 0]
  ------------------
 2926|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2926:10): [True: 0, False: 0]
  ------------------
 2927|      0|				}
 2928|      2|			}
 2929|     10|		} else {
 2930|      3|			if (yych <= ']') {
  ------------------
  |  Branch (2930:8): [True: 1, False: 2]
  ------------------
 2931|      1|				if (yych <= ';') {
  ------------------
  |  Branch (2931:9): [True: 1, False: 0]
  ------------------
 2932|      1|					if (yych <= ':') goto yy139;
  ------------------
  |  Branch (2932:10): [True: 1, False: 0]
  ------------------
 2933|      1|				} else {
 2934|      0|					if (yych != '=') goto yy139;
  ------------------
  |  Branch (2934:10): [True: 0, False: 0]
  ------------------
 2935|      0|				}
 2936|      2|			} else {
 2937|      2|				if (yych <= '|') {
  ------------------
  |  Branch (2937:9): [True: 0, False: 2]
  ------------------
 2938|      0|					if (yych <= '^') goto yy188;
  ------------------
  |  Branch (2938:10): [True: 0, False: 0]
  ------------------
 2939|      0|					if (yych <= '{') goto yy139;
  ------------------
  |  Branch (2939:10): [True: 0, False: 0]
  ------------------
 2940|      2|				} else {
 2941|      2|					if (yych != '~') goto yy139;
  ------------------
  |  Branch (2941:10): [True: 2, False: 0]
  ------------------
 2942|      2|				}
 2943|      2|			}
 2944|      3|		}
 2945|     10|yy188:
 2946|     10|		YYDEBUG(188, *YYCURSOR);
 2947|     10|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|     10|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 2948|     10|#line 490 "Zend/zend_ini_scanner.l"
 2949|     10|		{ /* TRUE value (when used outside option value/offset this causes parse error!) */
 2950|     10|	RETURN_TOKEN(BOOL_TRUE, "1", 1);
  ------------------
  |  |  146|     10|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|     10|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|     20|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 10, False: 0]
  |  |  ------------------
  |  |  148|     10|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|     10|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|     10|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|     10|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 10, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|     10|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|     10|	} else {                                                       \
  |  |  151|      0|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      0|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      0|	}                                                              \
  |  |  153|     10|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|     10|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|     10|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|     10|	return type;                                                   \
  |  |  155|     10|}
  ------------------
 2951|      0|}
 2952|      0|#line 2953 "Zend/zend_ini_scanner.c"
 2953|     29|yy189:
 2954|     29|		YYDEBUG(189, *YYCURSOR);
 2955|     29|		yyaccept = 2;
 2956|     29|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|     29|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     29|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     29|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     29|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     29|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2957|     29|		if (yych <= '=') {
  ------------------
  |  Branch (2957:7): [True: 0, False: 29]
  ------------------
 2958|      0|			if (yych <= '"') {
  ------------------
  |  Branch (2958:8): [True: 0, False: 0]
  ------------------
 2959|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (2959:9): [True: 0, False: 0]
  ------------------
 2960|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (2960:10): [True: 0, False: 0]
  ------------------
 2961|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (2961:10): [True: 0, False: 0]
  ------------------
 2962|      0|					goto yy164;
 2963|      0|				} else {
 2964|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (2964:10): [True: 0, False: 0]
  ------------------
 2965|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (2965:10): [True: 0, False: 0]
  ------------------
 2966|      0|					goto yy164;
 2967|      0|				}
 2968|      0|			} else {
 2969|      0|				if (yych <= '9') {
  ------------------
  |  Branch (2969:9): [True: 0, False: 0]
  ------------------
 2970|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (2970:10): [True: 0, False: 0]
  ------------------
 2971|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (2971:10): [True: 0, False: 0]
  ------------------
 2972|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (2972:10): [True: 0, False: 0]
  ------------------
 2973|      0|					goto yy162;
 2974|      0|				} else {
 2975|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (2975:10): [True: 0, False: 0]
  ------------------
 2976|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (2976:10): [True: 0, False: 0]
  ------------------
 2977|      0|					goto yy164;
 2978|      0|				}
 2979|      0|			}
 2980|     29|		} else {
 2981|     29|			if (yych <= '`') {
  ------------------
  |  Branch (2981:8): [True: 2, False: 27]
  ------------------
 2982|      2|				if (yych <= 'Z') {
  ------------------
  |  Branch (2982:9): [True: 1, False: 1]
  ------------------
 2983|      1|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (2983:10): [True: 0, False: 1]
  ------------------
 2984|      1|					if (yych == 'U') goto yy203;
  ------------------
  |  Branch (2984:10): [True: 1, False: 0]
  ------------------
 2985|      0|					goto yy162;
 2986|      1|				} else {
 2987|      1|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (2987:10): [True: 0, False: 1]
  ------------------
 2988|      1|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (2988:10): [True: 0, False: 1]
  ------------------
 2989|      1|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (2989:10): [True: 1, False: 0]
  ------------------
 2990|      0|					goto yy139;
 2991|      1|				}
 2992|     27|			} else {
 2993|     27|				if (yych <= '{') {
  ------------------
  |  Branch (2993:9): [True: 27, False: 0]
  ------------------
 2994|     27|					if (yych == 'u') goto yy203;
  ------------------
  |  Branch (2994:10): [True: 27, False: 0]
  ------------------
 2995|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (2995:10): [True: 0, False: 0]
  ------------------
 2996|      0|					goto yy139;
 2997|      0|				} else {
 2998|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (2998:10): [True: 0, False: 0]
  ------------------
 2999|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (2999:10): [True: 0, False: 0]
  ------------------
 3000|      0|					goto yy139;
 3001|      0|				}
 3002|     27|			}
 3003|     29|		}
 3004|      4|yy190:
 3005|      4|		YYDEBUG(190, *YYCURSOR);
 3006|      4|		yyaccept = 2;
 3007|      4|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3008|      4|		if (yych <= '=') {
  ------------------
  |  Branch (3008:7): [True: 0, False: 4]
  ------------------
 3009|      0|			if (yych <= '"') {
  ------------------
  |  Branch (3009:8): [True: 0, False: 0]
  ------------------
 3010|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (3010:9): [True: 0, False: 0]
  ------------------
 3011|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (3011:10): [True: 0, False: 0]
  ------------------
 3012|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (3012:10): [True: 0, False: 0]
  ------------------
 3013|      0|					goto yy164;
 3014|      0|				} else {
 3015|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (3015:10): [True: 0, False: 0]
  ------------------
 3016|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3016:10): [True: 0, False: 0]
  ------------------
 3017|      0|					goto yy164;
 3018|      0|				}
 3019|      0|			} else {
 3020|      0|				if (yych <= '9') {
  ------------------
  |  Branch (3020:9): [True: 0, False: 0]
  ------------------
 3021|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3021:10): [True: 0, False: 0]
  ------------------
 3022|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (3022:10): [True: 0, False: 0]
  ------------------
 3023|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (3023:10): [True: 0, False: 0]
  ------------------
 3024|      0|					goto yy162;
 3025|      0|				} else {
 3026|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (3026:10): [True: 0, False: 0]
  ------------------
 3027|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (3027:10): [True: 0, False: 0]
  ------------------
 3028|      0|					goto yy164;
 3029|      0|				}
 3030|      0|			}
 3031|      4|		} else {
 3032|      4|			if (yych <= '`') {
  ------------------
  |  Branch (3032:8): [True: 0, False: 4]
  ------------------
 3033|      0|				if (yych <= 'Z') {
  ------------------
  |  Branch (3033:9): [True: 0, False: 0]
  ------------------
 3034|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (3034:10): [True: 0, False: 0]
  ------------------
 3035|      0|					if (yych == 'S') goto yy187;
  ------------------
  |  Branch (3035:10): [True: 0, False: 0]
  ------------------
 3036|      0|					goto yy162;
 3037|      0|				} else {
 3038|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (3038:10): [True: 0, False: 0]
  ------------------
 3039|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (3039:10): [True: 0, False: 0]
  ------------------
 3040|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (3040:10): [True: 0, False: 0]
  ------------------
 3041|      0|					goto yy139;
 3042|      0|				}
 3043|      4|			} else {
 3044|      4|				if (yych <= '{') {
  ------------------
  |  Branch (3044:9): [True: 3, False: 1]
  ------------------
 3045|      3|					if (yych == 's') goto yy187;
  ------------------
  |  Branch (3045:10): [True: 1, False: 2]
  ------------------
 3046|      2|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (3046:10): [True: 2, False: 0]
  ------------------
 3047|      0|					goto yy139;
 3048|      2|				} else {
 3049|      1|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (3049:10): [True: 0, False: 1]
  ------------------
 3050|      1|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (3050:10): [True: 0, False: 1]
  ------------------
 3051|      1|					goto yy139;
 3052|      1|				}
 3053|      4|			}
 3054|      4|		}
 3055|      0|yy191:
 3056|      0|		YYDEBUG(191, *YYCURSOR);
 3057|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3058|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3059|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3060|      0|		YYDEBUG(192, *YYCURSOR);
 3061|      0|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (3061:7): [True: 0, False: 0]
  ------------------
 3062|      0|			goto yy191;
 3063|      0|		}
 3064|      0|		if (yych <= 0x00) goto yy140;
  ------------------
  |  Branch (3064:7): [True: 0, False: 0]
  ------------------
 3065|      0|		if (yych == '\\') goto yy172;
  ------------------
  |  Branch (3065:7): [True: 0, False: 0]
  ------------------
 3066|      0|		goto yy138;
 3067|  10.0k|yy193:
 3068|  10.0k|		YYDEBUG(193, *YYCURSOR);
 3069|  10.0k|		++YYCURSOR;
  ------------------
  |  |   47|  10.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3070|  10.0k|		YYDEBUG(194, *YYCURSOR);
 3071|  10.0k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  10.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  10.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3072|  10.0k|#line 388 "Zend/zend_ini_scanner.l"
 3073|  10.0k|		{ /* Raw string */
 3074|       |	/* Eat leading and trailing single quotes */
 3075|  10.0k|	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   59|  10.0k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   59|  10.0k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
  ------------------
  |  |   60|  10.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3075:6): [True: 10.0k, False: 0]
  |  Branch (3075:27): [True: 10.0k, False: 0]
  ------------------
 3076|  10.0k|		SCNG(yy_text)++;
  ------------------
  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3077|  10.0k|		yyleng = yyleng - 2;
  ------------------
  |  |   60|  10.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = yyleng - 2;
  ------------------
  |  |   60|  10.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3078|  10.0k|	}
 3079|  10.0k|	RETURN_TOKEN(TC_RAW, yytext, yyleng);
  ------------------
  |  |  146|  10.0k|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|  10.0k|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|  10.0k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  10.0k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|  20.0k|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 2, False: 10.0k]
  |  |  ------------------
  |  |  148|  10.0k|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      2|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      2|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      2|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 2, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      2|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|  10.0k|	} else {                                                       \
  |  |  151|  10.0k|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|  10.0k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  10.0k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  10.0k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  10.0k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  10.0k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  10.0k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  10.0k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  10.0k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  10.0k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  10.0k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  10.0k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  10.0k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  10.0k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  10.0k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  10.0k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 10.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|  10.0k|	}                                                              \
  |  |  153|  10.0k|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|  10.0k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  10.0k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|  10.0k|	return type;                                                   \
  |  |  155|  10.0k|}
  ------------------
 3080|      0|}
 3081|      0|#line 3082 "Zend/zend_ini_scanner.c"
 3082|      0|yy195:
 3083|      0|		YYDEBUG(195, *YYCURSOR);
 3084|      0|		yyaccept = 2;
 3085|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3086|      0|		if (yych <= '=') {
  ------------------
  |  Branch (3086:7): [True: 0, False: 0]
  ------------------
 3087|      0|			if (yych <= '"') {
  ------------------
  |  Branch (3087:8): [True: 0, False: 0]
  ------------------
 3088|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (3088:9): [True: 0, False: 0]
  ------------------
 3089|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (3089:10): [True: 0, False: 0]
  ------------------
 3090|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (3090:10): [True: 0, False: 0]
  ------------------
 3091|      0|					goto yy164;
 3092|      0|				} else {
 3093|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (3093:10): [True: 0, False: 0]
  ------------------
 3094|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3094:10): [True: 0, False: 0]
  ------------------
 3095|      0|					goto yy164;
 3096|      0|				}
 3097|      0|			} else {
 3098|      0|				if (yych <= '9') {
  ------------------
  |  Branch (3098:9): [True: 0, False: 0]
  ------------------
 3099|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3099:10): [True: 0, False: 0]
  ------------------
 3100|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (3100:10): [True: 0, False: 0]
  ------------------
 3101|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (3101:10): [True: 0, False: 0]
  ------------------
 3102|      0|					goto yy162;
 3103|      0|				} else {
 3104|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (3104:10): [True: 0, False: 0]
  ------------------
 3105|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (3105:10): [True: 0, False: 0]
  ------------------
 3106|      0|					goto yy164;
 3107|      0|				}
 3108|      0|			}
 3109|      0|		} else {
 3110|      0|			if (yych <= '`') {
  ------------------
  |  Branch (3110:8): [True: 0, False: 0]
  ------------------
 3111|      0|				if (yych <= 'Z') {
  ------------------
  |  Branch (3111:9): [True: 0, False: 0]
  ------------------
 3112|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (3112:10): [True: 0, False: 0]
  ------------------
 3113|      0|					if (yych == 'S') goto yy198;
  ------------------
  |  Branch (3113:10): [True: 0, False: 0]
  ------------------
 3114|      0|					goto yy162;
 3115|      0|				} else {
 3116|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (3116:10): [True: 0, False: 0]
  ------------------
 3117|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (3117:10): [True: 0, False: 0]
  ------------------
 3118|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (3118:10): [True: 0, False: 0]
  ------------------
 3119|      0|					goto yy139;
 3120|      0|				}
 3121|      0|			} else {
 3122|      0|				if (yych <= '{') {
  ------------------
  |  Branch (3122:9): [True: 0, False: 0]
  ------------------
 3123|      0|					if (yych == 's') goto yy198;
  ------------------
  |  Branch (3123:10): [True: 0, False: 0]
  ------------------
 3124|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (3124:10): [True: 0, False: 0]
  ------------------
 3125|      0|					goto yy139;
 3126|      0|				} else {
 3127|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (3127:10): [True: 0, False: 0]
  ------------------
 3128|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (3128:10): [True: 0, False: 0]
  ------------------
 3129|      0|					goto yy139;
 3130|      0|				}
 3131|      0|			}
 3132|      0|		}
 3133|      3|yy196:
 3134|      3|		YYDEBUG(196, *YYCURSOR);
 3135|      3|		++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3136|      3|		YYFILL(1);
  ------------------
  |  |   46|      3|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      3|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 3137|      3|		yych = *YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3138|      3|		YYDEBUG(197, *YYCURSOR);
 3139|      3|		if (yych == '\t') goto yy196;
  ------------------
  |  Branch (3139:7): [True: 0, False: 3]
  ------------------
 3140|      3|		if (yych == ' ') goto yy196;
  ------------------
  |  Branch (3140:7): [True: 2, False: 1]
  ------------------
 3141|      1|		goto yy184;
 3142|      1|yy198:
 3143|      0|		YYDEBUG(198, *YYCURSOR);
 3144|      0|		yyaccept = 2;
 3145|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3146|      0|		if (yych <= '=') {
  ------------------
  |  Branch (3146:7): [True: 0, False: 0]
  ------------------
 3147|      0|			if (yych <= '"') {
  ------------------
  |  Branch (3147:8): [True: 0, False: 0]
  ------------------
 3148|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (3148:9): [True: 0, False: 0]
  ------------------
 3149|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (3149:10): [True: 0, False: 0]
  ------------------
 3150|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (3150:10): [True: 0, False: 0]
  ------------------
 3151|      0|					goto yy164;
 3152|      0|				} else {
 3153|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (3153:10): [True: 0, False: 0]
  ------------------
 3154|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3154:10): [True: 0, False: 0]
  ------------------
 3155|      0|					goto yy164;
 3156|      0|				}
 3157|      0|			} else {
 3158|      0|				if (yych <= '9') {
  ------------------
  |  Branch (3158:9): [True: 0, False: 0]
  ------------------
 3159|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3159:10): [True: 0, False: 0]
  ------------------
 3160|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (3160:10): [True: 0, False: 0]
  ------------------
 3161|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (3161:10): [True: 0, False: 0]
  ------------------
 3162|      0|					goto yy162;
 3163|      0|				} else {
 3164|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (3164:10): [True: 0, False: 0]
  ------------------
 3165|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (3165:10): [True: 0, False: 0]
  ------------------
 3166|      0|					goto yy164;
 3167|      0|				}
 3168|      0|			}
 3169|      0|		} else {
 3170|      0|			if (yych <= '`') {
  ------------------
  |  Branch (3170:8): [True: 0, False: 0]
  ------------------
 3171|      0|				if (yych <= 'Z') {
  ------------------
  |  Branch (3171:9): [True: 0, False: 0]
  ------------------
 3172|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (3172:10): [True: 0, False: 0]
  ------------------
 3173|      0|					if (yych == 'E') goto yy200;
  ------------------
  |  Branch (3173:10): [True: 0, False: 0]
  ------------------
 3174|      0|					goto yy162;
 3175|      0|				} else {
 3176|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (3176:10): [True: 0, False: 0]
  ------------------
 3177|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (3177:10): [True: 0, False: 0]
  ------------------
 3178|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (3178:10): [True: 0, False: 0]
  ------------------
 3179|      0|					goto yy139;
 3180|      0|				}
 3181|      0|			} else {
 3182|      0|				if (yych <= '{') {
  ------------------
  |  Branch (3182:9): [True: 0, False: 0]
  ------------------
 3183|      0|					if (yych == 'e') goto yy200;
  ------------------
  |  Branch (3183:10): [True: 0, False: 0]
  ------------------
 3184|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (3184:10): [True: 0, False: 0]
  ------------------
 3185|      0|					goto yy139;
 3186|      0|				} else {
 3187|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (3187:10): [True: 0, False: 0]
  ------------------
 3188|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (3188:10): [True: 0, False: 0]
  ------------------
 3189|      0|					goto yy139;
 3190|      0|				}
 3191|      0|			}
 3192|      0|		}
 3193|      5|yy199:
 3194|      5|		YYDEBUG(199, *YYCURSOR);
 3195|      5|		yyaccept = 2;
 3196|      5|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      5|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3197|      5|		if (yych <= '=') {
  ------------------
  |  Branch (3197:7): [True: 0, False: 5]
  ------------------
 3198|      0|			if (yych <= '"') {
  ------------------
  |  Branch (3198:8): [True: 0, False: 0]
  ------------------
 3199|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (3199:9): [True: 0, False: 0]
  ------------------
 3200|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (3200:10): [True: 0, False: 0]
  ------------------
 3201|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (3201:10): [True: 0, False: 0]
  ------------------
 3202|      0|					goto yy164;
 3203|      0|				} else {
 3204|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (3204:10): [True: 0, False: 0]
  ------------------
 3205|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3205:10): [True: 0, False: 0]
  ------------------
 3206|      0|					goto yy164;
 3207|      0|				}
 3208|      0|			} else {
 3209|      0|				if (yych <= '9') {
  ------------------
  |  Branch (3209:9): [True: 0, False: 0]
  ------------------
 3210|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3210:10): [True: 0, False: 0]
  ------------------
 3211|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (3211:10): [True: 0, False: 0]
  ------------------
 3212|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (3212:10): [True: 0, False: 0]
  ------------------
 3213|      0|					goto yy162;
 3214|      0|				} else {
 3215|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (3215:10): [True: 0, False: 0]
  ------------------
 3216|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (3216:10): [True: 0, False: 0]
  ------------------
 3217|      0|					goto yy164;
 3218|      0|				}
 3219|      0|			}
 3220|      5|		} else {
 3221|      5|			if (yych <= '`') {
  ------------------
  |  Branch (3221:8): [True: 0, False: 5]
  ------------------
 3222|      0|				if (yych <= 'Z') {
  ------------------
  |  Branch (3222:9): [True: 0, False: 0]
  ------------------
 3223|      0|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (3223:10): [True: 0, False: 0]
  ------------------
 3224|      0|					if (yych == 'L') goto yy204;
  ------------------
  |  Branch (3224:10): [True: 0, False: 0]
  ------------------
 3225|      0|					goto yy162;
 3226|      0|				} else {
 3227|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (3227:10): [True: 0, False: 0]
  ------------------
 3228|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (3228:10): [True: 0, False: 0]
  ------------------
 3229|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (3229:10): [True: 0, False: 0]
  ------------------
 3230|      0|					goto yy139;
 3231|      0|				}
 3232|      5|			} else {
 3233|      5|				if (yych <= '{') {
  ------------------
  |  Branch (3233:9): [True: 5, False: 0]
  ------------------
 3234|      5|					if (yych == 'l') goto yy204;
  ------------------
  |  Branch (3234:10): [True: 5, False: 0]
  ------------------
 3235|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (3235:10): [True: 0, False: 0]
  ------------------
 3236|      0|					goto yy139;
 3237|      0|				} else {
 3238|      0|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (3238:10): [True: 0, False: 0]
  ------------------
 3239|      0|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (3239:10): [True: 0, False: 0]
  ------------------
 3240|      0|					goto yy139;
 3241|      0|				}
 3242|      5|			}
 3243|      5|		}
 3244|      0|yy200:
 3245|      0|		YYDEBUG(200, *YYCURSOR);
 3246|      0|		yyaccept = 3;
 3247|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3248|      0|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (3248:7): [True: 0, False: 0]
  ------------------
 3249|      0|			goto yy162;
 3250|      0|		}
 3251|      0|		if (yych <= ')') {
  ------------------
  |  Branch (3251:7): [True: 0, False: 0]
  ------------------
 3252|      0|			if (yych <= '\f') {
  ------------------
  |  Branch (3252:8): [True: 0, False: 0]
  ------------------
 3253|      0|				if (yych <= 0x08) {
  ------------------
  |  Branch (3253:9): [True: 0, False: 0]
  ------------------
 3254|      0|					if (yych <= 0x00) goto yy184;
  ------------------
  |  Branch (3254:10): [True: 0, False: 0]
  ------------------
 3255|      0|					goto yy139;
 3256|      0|				} else {
 3257|      0|					if (yych <= '\t') goto yy196;
  ------------------
  |  Branch (3257:10): [True: 0, False: 0]
  ------------------
 3258|      0|					if (yych <= '\n') goto yy184;
  ------------------
  |  Branch (3258:10): [True: 0, False: 0]
  ------------------
 3259|      0|					goto yy139;
 3260|      0|				}
 3261|      0|			} else {
 3262|      0|				if (yych <= ' ') {
  ------------------
  |  Branch (3262:9): [True: 0, False: 0]
  ------------------
 3263|      0|					if (yych <= '\r') goto yy184;
  ------------------
  |  Branch (3263:10): [True: 0, False: 0]
  ------------------
 3264|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3264:10): [True: 0, False: 0]
  ------------------
 3265|      0|					goto yy196;
 3266|      0|				} else {
 3267|      0|					if (yych <= '"') goto yy184;
  ------------------
  |  Branch (3267:10): [True: 0, False: 0]
  ------------------
 3268|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3268:10): [True: 0, False: 0]
  ------------------
 3269|      0|					goto yy184;
 3270|      0|				}
 3271|      0|			}
 3272|      0|		} else {
 3273|      0|			if (yych <= ']') {
  ------------------
  |  Branch (3273:8): [True: 0, False: 0]
  ------------------
 3274|      0|				if (yych <= ';') {
  ------------------
  |  Branch (3274:9): [True: 0, False: 0]
  ------------------
 3275|      0|					if (yych <= ':') goto yy139;
  ------------------
  |  Branch (3275:10): [True: 0, False: 0]
  ------------------
 3276|      0|					goto yy184;
 3277|      0|				} else {
 3278|      0|					if (yych == '=') goto yy184;
  ------------------
  |  Branch (3278:10): [True: 0, False: 0]
  ------------------
 3279|      0|					goto yy139;
 3280|      0|				}
 3281|      0|			} else {
 3282|      0|				if (yych <= '|') {
  ------------------
  |  Branch (3282:9): [True: 0, False: 0]
  ------------------
 3283|      0|					if (yych <= '^') goto yy184;
  ------------------
  |  Branch (3283:10): [True: 0, False: 0]
  ------------------
 3284|      0|					if (yych <= '{') goto yy139;
  ------------------
  |  Branch (3284:10): [True: 0, False: 0]
  ------------------
 3285|      0|					goto yy184;
 3286|      0|				} else {
 3287|      0|					if (yych == '~') goto yy184;
  ------------------
  |  Branch (3287:10): [True: 0, False: 0]
  ------------------
 3288|      0|					goto yy139;
 3289|      0|				}
 3290|      0|			}
 3291|      0|		}
 3292|      2|yy201:
 3293|      2|		YYDEBUG(201, *YYCURSOR);
 3294|      2|		++YYCURSOR;
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3295|      2|		YYFILL(1);
  ------------------
  |  |   46|      2|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      2|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 3296|      2|		yych = *YYCURSOR;
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3297|      2|		YYDEBUG(202, *YYCURSOR);
 3298|      2|		if (yych == '\t') goto yy201;
  ------------------
  |  Branch (3298:7): [True: 0, False: 2]
  ------------------
 3299|      2|		if (yych == ' ') goto yy201;
  ------------------
  |  Branch (3299:7): [True: 0, False: 2]
  ------------------
 3300|      2|		goto yy188;
 3301|     28|yy203:
 3302|     28|		YYDEBUG(203, *YYCURSOR);
 3303|     28|		yyaccept = 2;
 3304|     28|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|     28|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     28|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     28|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     28|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     28|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3305|     28|		if (yych <= '=') {
  ------------------
  |  Branch (3305:7): [True: 0, False: 28]
  ------------------
 3306|      0|			if (yych <= '"') {
  ------------------
  |  Branch (3306:8): [True: 0, False: 0]
  ------------------
 3307|      0|				if (yych <= '\n') {
  ------------------
  |  Branch (3307:9): [True: 0, False: 0]
  ------------------
 3308|      0|					if (yych <= 0x00) goto yy164;
  ------------------
  |  Branch (3308:10): [True: 0, False: 0]
  ------------------
 3309|      0|					if (yych <= 0x08) goto yy139;
  ------------------
  |  Branch (3309:10): [True: 0, False: 0]
  ------------------
 3310|      0|					goto yy164;
 3311|      0|				} else {
 3312|      0|					if (yych == '\r') goto yy164;
  ------------------
  |  Branch (3312:10): [True: 0, False: 0]
  ------------------
 3313|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3313:10): [True: 0, False: 0]
  ------------------
 3314|      0|					goto yy164;
 3315|      0|				}
 3316|      0|			} else {
 3317|      0|				if (yych <= '9') {
  ------------------
  |  Branch (3317:9): [True: 0, False: 0]
  ------------------
 3318|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3318:10): [True: 0, False: 0]
  ------------------
 3319|      0|					if (yych <= ')') goto yy164;
  ------------------
  |  Branch (3319:10): [True: 0, False: 0]
  ------------------
 3320|      0|					if (yych <= '/') goto yy139;
  ------------------
  |  Branch (3320:10): [True: 0, False: 0]
  ------------------
 3321|      0|					goto yy162;
 3322|      0|				} else {
 3323|      0|					if (yych == ';') goto yy164;
  ------------------
  |  Branch (3323:10): [True: 0, False: 0]
  ------------------
 3324|      0|					if (yych <= '<') goto yy139;
  ------------------
  |  Branch (3324:10): [True: 0, False: 0]
  ------------------
 3325|      0|					goto yy164;
 3326|      0|				}
 3327|      0|			}
 3328|     28|		} else {
 3329|     28|			if (yych <= '`') {
  ------------------
  |  Branch (3329:8): [True: 1, False: 27]
  ------------------
 3330|      1|				if (yych <= 'Z') {
  ------------------
  |  Branch (3330:9): [True: 1, False: 0]
  ------------------
 3331|      1|					if (yych <= '@') goto yy139;
  ------------------
  |  Branch (3331:10): [True: 0, False: 1]
  ------------------
 3332|      1|					if (yych == 'E') goto yy187;
  ------------------
  |  Branch (3332:10): [True: 1, False: 0]
  ------------------
 3333|      0|					goto yy162;
 3334|      1|				} else {
 3335|      0|					if (yych <= ']') goto yy139;
  ------------------
  |  Branch (3335:10): [True: 0, False: 0]
  ------------------
 3336|      0|					if (yych <= '^') goto yy164;
  ------------------
  |  Branch (3336:10): [True: 0, False: 0]
  ------------------
 3337|      0|					if (yych <= '_') goto yy162;
  ------------------
  |  Branch (3337:10): [True: 0, False: 0]
  ------------------
 3338|      0|					goto yy139;
 3339|      0|				}
 3340|     27|			} else {
 3341|     27|				if (yych <= '{') {
  ------------------
  |  Branch (3341:9): [True: 1, False: 26]
  ------------------
 3342|      1|					if (yych == 'e') goto yy187;
  ------------------
  |  Branch (3342:10): [True: 1, False: 0]
  ------------------
 3343|      0|					if (yych <= 'z') goto yy162;
  ------------------
  |  Branch (3343:10): [True: 0, False: 0]
  ------------------
 3344|      0|					goto yy139;
 3345|     26|				} else {
 3346|     26|					if (yych == '}') goto yy139;
  ------------------
  |  Branch (3346:10): [True: 0, False: 26]
  ------------------
 3347|     26|					if (yych <= '~') goto yy164;
  ------------------
  |  Branch (3347:10): [True: 0, False: 26]
  ------------------
 3348|     26|					goto yy139;
 3349|     26|				}
 3350|     27|			}
 3351|     28|		}
 3352|      5|yy204:
 3353|      5|		YYDEBUG(204, *YYCURSOR);
 3354|      5|		yyaccept = 5;
 3355|      5|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      5|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      5|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      5|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3356|      5|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (3356:7): [True: 0, False: 5]
  ------------------
 3357|      0|			goto yy162;
 3358|      0|		}
 3359|      5|		if (yych <= ')') {
  ------------------
  |  Branch (3359:7): [True: 4, False: 1]
  ------------------
 3360|      4|			if (yych <= '\f') {
  ------------------
  |  Branch (3360:8): [True: 4, False: 0]
  ------------------
 3361|      4|				if (yych <= 0x08) {
  ------------------
  |  Branch (3361:9): [True: 1, False: 3]
  ------------------
 3362|      1|					if (yych >= 0x01) goto yy139;
  ------------------
  |  Branch (3362:10): [True: 1, False: 0]
  ------------------
 3363|      3|				} else {
 3364|      3|					if (yych <= '\t') goto yy206;
  ------------------
  |  Branch (3364:10): [True: 0, False: 3]
  ------------------
 3365|      3|					if (yych >= '\v') goto yy139;
  ------------------
  |  Branch (3365:10): [True: 0, False: 3]
  ------------------
 3366|      3|				}
 3367|      4|			} else {
 3368|      0|				if (yych <= ' ') {
  ------------------
  |  Branch (3368:9): [True: 0, False: 0]
  ------------------
 3369|      0|					if (yych <= '\r') goto yy205;
  ------------------
  |  Branch (3369:10): [True: 0, False: 0]
  ------------------
 3370|      0|					if (yych <= 0x1F) goto yy139;
  ------------------
  |  Branch (3370:10): [True: 0, False: 0]
  ------------------
 3371|      0|					goto yy206;
 3372|      0|				} else {
 3373|      0|					if (yych <= '"') goto yy205;
  ------------------
  |  Branch (3373:10): [True: 0, False: 0]
  ------------------
 3374|      0|					if (yych <= '%') goto yy139;
  ------------------
  |  Branch (3374:10): [True: 0, False: 0]
  ------------------
 3375|      0|				}
 3376|      0|			}
 3377|      4|		} else {
 3378|      1|			if (yych <= ']') {
  ------------------
  |  Branch (3378:8): [True: 1, False: 0]
  ------------------
 3379|      1|				if (yych <= ';') {
  ------------------
  |  Branch (3379:9): [True: 0, False: 1]
  ------------------
 3380|      0|					if (yych <= ':') goto yy139;
  ------------------
  |  Branch (3380:10): [True: 0, False: 0]
  ------------------
 3381|      1|				} else {
 3382|      1|					if (yych != '=') goto yy139;
  ------------------
  |  Branch (3382:10): [True: 1, False: 0]
  ------------------
 3383|      1|				}
 3384|      1|			} else {
 3385|      0|				if (yych <= '|') {
  ------------------
  |  Branch (3385:9): [True: 0, False: 0]
  ------------------
 3386|      0|					if (yych <= '^') goto yy205;
  ------------------
  |  Branch (3386:10): [True: 0, False: 0]
  ------------------
 3387|      0|					if (yych <= '{') goto yy139;
  ------------------
  |  Branch (3387:10): [True: 0, False: 0]
  ------------------
 3388|      0|				} else {
 3389|      0|					if (yych != '~') goto yy139;
  ------------------
  |  Branch (3389:10): [True: 0, False: 0]
  ------------------
 3390|      0|				}
 3391|      0|			}
 3392|      1|		}
 3393|      3|yy205:
 3394|      3|		YYDEBUG(205, *YYCURSOR);
 3395|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3396|      3|#line 498 "Zend/zend_ini_scanner.l"
 3397|      3|		{
 3398|      3|	RETURN_TOKEN(NULL_NULL, "", 0);
  ------------------
  |  |  146|      3|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      3|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      6|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 3, False: 0]
  |  |  ------------------
  |  |  148|      3|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      3|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      3|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      3|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 3, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      3|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      3|	} else {                                                       \
  |  |  151|      0|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      0|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      0|	}                                                              \
  |  |  153|      3|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      3|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      3|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      3|	return type;                                                   \
  |  |  155|      3|}
  ------------------
 3399|      0|}
 3400|      0|#line 3401 "Zend/zend_ini_scanner.c"
 3401|      0|yy206:
 3402|      0|		YYDEBUG(206, *YYCURSOR);
 3403|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3404|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3405|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3406|      0|		YYDEBUG(207, *YYCURSOR);
 3407|      0|		if (yych == '\t') goto yy206;
  ------------------
  |  Branch (3407:7): [True: 0, False: 0]
  ------------------
 3408|      0|		if (yych == ' ') goto yy206;
  ------------------
  |  Branch (3408:7): [True: 0, False: 0]
  ------------------
 3409|      0|		goto yy205;
 3410|      0|	}
 3411|       |/* *********************************** */
 3412|      4|yyc_ST_SECTION_RAW:
 3413|      4|	{
 3414|      4|		static const unsigned char yybm[] = {
 3415|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3416|      4|			 64, 192,   0,  64,  64,   0,  64,  64, 
 3417|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3418|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3419|      4|			192,  64,  64,  64,  64,  64,  64,  64, 
 3420|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3421|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3422|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3423|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3424|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3425|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3426|      4|			 64,  64,  64,  64,  64,   0,  64,  64, 
 3427|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3428|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3429|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3430|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3431|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3432|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3433|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3434|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3435|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3436|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3437|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3438|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3439|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3440|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3441|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3442|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3443|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3444|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3445|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3446|      4|			 64,  64,  64,  64,  64,  64,  64,  64, 
 3447|      4|		};
 3448|      4|		YYDEBUG(208, *YYCURSOR);
 3449|      4|		YYFILL(1);
  ------------------
  |  |   46|      4|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 3450|      4|		yych = *YYCURSOR;
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3451|      4|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (3451:7): [True: 2, False: 2]
  ------------------
 3452|      2|			goto yy210;
 3453|      2|		}
 3454|      2|		if (yych <= '\r') goto yy213;
  ------------------
  |  Branch (3454:7): [True: 1, False: 1]
  ------------------
 3455|      1|		goto yy215;
 3456|     40|yy210:
 3457|     40|		YYDEBUG(210, *YYCURSOR);
 3458|     40|		++YYCURSOR;
  ------------------
  |  |   47|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     40|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     40|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3459|     40|		YYFILL(1);
  ------------------
  |  |   46|     40|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     40|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     40|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|     40|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     40|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     40|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 40]
  |  |  ------------------
  ------------------
 3460|     40|		yych = *YYCURSOR;
  ------------------
  |  |   47|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     40|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     40|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3461|     40|		YYDEBUG(211, *YYCURSOR);
 3462|     40|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (3462:7): [True: 38, False: 2]
  ------------------
 3463|     38|			goto yy210;
 3464|     38|		}
 3465|      2|		YYDEBUG(212, *YYCURSOR);
 3466|      2|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      2|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3467|      2|#line 565 "Zend/zend_ini_scanner.l"
 3468|      2|		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
 3469|      2|	RETURN_TOKEN(TC_RAW, yytext, yyleng);
  ------------------
  |  |  146|      2|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      2|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      4|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  148|      2|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      2|	} else {                                                       \
  |  |  151|      2|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      2|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      2|	}                                                              \
  |  |  153|      2|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      2|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      2|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      2|	return type;                                                   \
  |  |  155|      2|}
  ------------------
 3470|      0|}
 3471|      0|#line 3472 "Zend/zend_ini_scanner.c"
 3472|      1|yy213:
 3473|      1|		YYDEBUG(213, *YYCURSOR);
 3474|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3475|      1|		YYDEBUG(214, *YYCURSOR);
 3476|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3477|      1|#line 685 "Zend/zend_ini_scanner.l"
 3478|      1|		{
 3479|      1|	return 0;
 3480|      0|}
 3481|      0|#line 3482 "Zend/zend_ini_scanner.c"
 3482|      1|yy215:
 3483|      1|		YYDEBUG(215, *YYCURSOR);
 3484|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3485|      1|		YYFILL(2);
  ------------------
  |  |   46|      1|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3486|      1|		yych = *YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3487|      1|		YYDEBUG(216, *YYCURSOR);
 3488|      1|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (3488:7): [True: 0, False: 1]
  ------------------
 3489|      0|			goto yy215;
 3490|      0|		}
 3491|      1|		if (yych <= 0x08) goto yy217;
  ------------------
  |  Branch (3491:7): [True: 0, False: 1]
  ------------------
 3492|      1|		if (yych <= '\n') goto yy218;
  ------------------
  |  Branch (3492:7): [True: 1, False: 0]
  ------------------
 3493|      0|		if (yych == '\r') goto yy219;
  ------------------
  |  Branch (3493:7): [True: 0, False: 0]
  ------------------
 3494|      1|yy217:
 3495|      1|		YYDEBUG(217, *YYCURSOR);
 3496|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3497|      1|#line 397 "Zend/zend_ini_scanner.l"
 3498|      1|		{ /* End of section */
 3499|      1|	BEGIN(INITIAL);
  ------------------
  |  |   57|      1|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|      1|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3500|      1|	SCNG(lineno)++;
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3501|      1|	return ']';
 3502|      0|}
 3503|      0|#line 3504 "Zend/zend_ini_scanner.c"
 3504|      1|yy218:
 3505|      1|		YYDEBUG(218, *YYCURSOR);
 3506|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3507|      1|		goto yy217;
 3508|      0|yy219:
 3509|      0|		YYDEBUG(219, *YYCURSOR);
 3510|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3511|      0|		if (yych == '\n') goto yy218;
  ------------------
  |  Branch (3511:7): [True: 0, False: 0]
  ------------------
 3512|      0|		goto yy217;
 3513|      0|	}
 3514|       |/* *********************************** */
 3515|  67.2k|yyc_ST_DOUBLE_QUOTES:
 3516|  67.2k|	{
 3517|  67.2k|		static const unsigned char yybm[] = {
 3518|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3519|  67.2k|			  0, 128,   0,   0,   0,   0,   0,   0, 
 3520|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3521|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3522|  67.2k|			128,   0,   0,   0,   0,   0,   0,   0, 
 3523|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3524|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3525|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3526|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3527|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3528|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3529|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3530|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3531|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3532|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3533|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3534|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3535|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3536|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3537|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3538|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3539|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3540|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3541|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3542|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3543|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3544|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3545|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3546|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3547|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3548|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3549|  67.2k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 3550|  67.2k|		};
 3551|  67.2k|		YYDEBUG(220, *YYCURSOR);
 3552|  67.2k|		YYFILL(2);
  ------------------
  |  |   46|  67.2k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  67.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  67.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  67.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  67.2k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  67.2k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  67.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 67.2k]
  |  |  ------------------
  ------------------
 3553|  67.2k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  67.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  67.2k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  67.2k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3554|  67.2k|		if (yych == '"') goto yy224;
  ------------------
  |  Branch (3554:7): [True: 36.5k, False: 30.6k]
  ------------------
 3555|  30.6k|		if (yych == '$') goto yy227;
  ------------------
  |  Branch (3555:7): [True: 4, False: 30.6k]
  ------------------
 3556|  30.6k|		YYDEBUG(222, *YYCURSOR);
 3557|  30.6k|		++YYCURSOR;
  ------------------
  |  |   47|  30.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3558|  30.6k|yy223:
 3559|  30.6k|		YYDEBUG(223, *YYCURSOR);
 3560|  30.6k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  30.6k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  30.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3561|  30.6k|#line 619 "Zend/zend_ini_scanner.l"
 3562|  30.6k|		{ /* Escape double quoted string contents */
 3563|  30.6k|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   47|  30.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   48|  30.6k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3563:6): [True: 0, False: 30.6k]
  ------------------
 3564|      0|		return 0;
 3565|      0|	}
 3566|       |
 3567|  30.6k|	const unsigned char *s = SCNG(yy_text);
  ------------------
  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3568|       |
 3569|   723k|	while (s < YYLIMIT) {
  ------------------
  |  |   48|   723k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|   723k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|   723k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3569:9): [True: 722k, False: 1.10k]
  ------------------
 3570|   722k|		switch (*s++) {
 3571|  29.5k|			case '"':
  ------------------
  |  Branch (3571:4): [True: 29.5k, False: 693k]
  ------------------
 3572|  29.5k|				break;
 3573|  1.48k|			case '$':
  ------------------
  |  Branch (3573:4): [True: 1.48k, False: 721k]
  ------------------
 3574|  1.48k|				if (s < YYLIMIT && *s == '{') {
  ------------------
  |  |   48|  1.48k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|  1.48k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  2.96k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3574:9): [True: 1.48k, False: 0]
  |  Branch (3574:24): [True: 2, False: 1.48k]
  ------------------
 3575|      2|					break;
 3576|      2|				}
 3577|  1.48k|				continue;
 3578|  6.76k|			case '\\':
  ------------------
  |  Branch (3578:4): [True: 6.76k, False: 716k]
  ------------------
 3579|  6.76k|				if (s < YYLIMIT) {
  ------------------
  |  |   48|  6.76k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|  6.76k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  6.76k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3579:9): [True: 6.76k, False: 0]
  ------------------
 3580|  6.76k|					unsigned char escaped = *s++;
 3581|       |					/* A special case for Windows paths, e.g. key="C:\path\" */
 3582|  6.76k|					if (escaped == '"' && (s >= YYLIMIT || *s == '\n' || *s == '\r')) {
  ------------------
  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3582:10): [True: 0, False: 6.76k]
  |  Branch (3582:29): [True: 0, False: 0]
  |  Branch (3582:45): [True: 0, False: 0]
  |  Branch (3582:59): [True: 0, False: 0]
  ------------------
 3583|      0|						break;
 3584|      0|					}
 3585|  6.76k|				}
 3586|  6.76k|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|  6.76k|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 3587|   691k|			default:
  ------------------
  |  Branch (3587:4): [True: 685k, False: 37.7k]
  ------------------
 3588|   691k|				continue;
 3589|   722k|		}
 3590|       |
 3591|  29.5k|		s--;
 3592|  29.5k|		break;
 3593|   722k|	}
 3594|       |
 3595|  30.6k|	YYCURSOR = s;
  ------------------
  |  |   47|  30.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3596|  30.6k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  30.6k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  30.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3597|       |
 3598|  30.6k|	zend_ini_escape_string(ini_lval, yytext, yyleng, '"');
  ------------------
  |  |   59|  30.6k|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	zend_ini_escape_string(ini_lval, yytext, yyleng, '"');
  ------------------
  |  |   60|  30.6k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  30.6k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  30.6k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3599|  30.6k|	Z_EXTRA_P(ini_lval) = 0;
  ------------------
  |  |  705|  30.6k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|  30.6k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
 3600|  30.6k|	return TC_QUOTED_STRING;
 3601|  30.6k|}
 3602|      0|#line 3603 "Zend/zend_ini_scanner.c"
 3603|  42.5k|yy224:
 3604|  42.5k|		YYDEBUG(224, *YYCURSOR);
 3605|  42.5k|		++YYCURSOR;
  ------------------
  |  |   47|  42.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  42.5k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  42.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3606|  42.5k|		YYFILL(1);
  ------------------
  |  |   46|  42.5k|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|  42.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  42.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  42.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|  42.5k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  42.5k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  42.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 42.5k]
  |  |  ------------------
  ------------------
 3607|  42.5k|		yych = *YYCURSOR;
  ------------------
  |  |   47|  42.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  42.5k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  42.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3608|  42.5k|		YYDEBUG(225, *YYCURSOR);
 3609|  42.5k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (3609:7): [True: 5.98k, False: 36.5k]
  ------------------
 3610|  5.98k|			goto yy224;
 3611|  5.98k|		}
 3612|  36.5k|		YYDEBUG(226, *YYCURSOR);
 3613|  36.5k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|  36.5k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|  36.5k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  36.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|  36.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  36.5k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  36.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|  36.5k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  36.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3614|  36.5k|#line 614 "Zend/zend_ini_scanner.l"
 3615|  36.5k|		{ /* Double quoted '"' string ends */
 3616|  36.5k|	yy_pop_state();
 3617|  36.5k|	return '"';
 3618|  42.5k|}
 3619|      0|#line 3620 "Zend/zend_ini_scanner.c"
 3620|      4|yy227:
 3621|      4|		YYDEBUG(227, *YYCURSOR);
 3622|      4|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3623|      4|		if (yych != '{') goto yy223;
  ------------------
  |  Branch (3623:7): [True: 0, False: 4]
  ------------------
 3624|      4|		YYDEBUG(228, *YYCURSOR);
 3625|      4|		++YYCURSOR;
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3626|      4|		YYDEBUG(229, *YYCURSOR);
 3627|      4|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      4|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3628|      4|#line 421 "Zend/zend_ini_scanner.l"
 3629|      4|		{ /* Variable start */
 3630|      4|	yy_push_state(ST_VARNAME);
  ------------------
  |  |  180|      4|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 3631|      4|	return TC_DOLLAR_CURLY;
 3632|      4|}
 3633|      4|#line 3634 "Zend/zend_ini_scanner.c"
 3634|      4|	}
 3635|       |/* *********************************** */
 3636|     10|yyc_ST_VAR_FALLBACK:
 3637|     10|	{
 3638|     10|		static const unsigned char yybm[] = {
 3639|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3640|     10|			  8,  24,   0,   8,   8,   0,   8,   8, 
 3641|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3642|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3643|     10|			 24,   8,   0,   8, 128,   8,   8,   0, 
 3644|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3645|     10|			104, 104, 104, 104, 104, 104, 104, 104, 
 3646|     10|			104, 104,   8,   0,   8,   8,   8,   8, 
 3647|     10|			  8,  72,  72,  72,  72,  72,  72,  72, 
 3648|     10|			 72,  72,  72,  72,  72,  72,  72,  72, 
 3649|     10|			 72,  72,  72,  72,  72,  72,  72,  72, 
 3650|     10|			 72,  72,  72,   8, 128,   8,   8,  72, 
 3651|     10|			  8,  72,  72,  72,  72,  72,  72,  72, 
 3652|     10|			 72,  72,  72,  72,  72,  72,  72,  72, 
 3653|     10|			 72,  72,  72,  72,  72,  72,  72,  72, 
 3654|     10|			 72,  72,  72,   8,   8,   0,   8,   8, 
 3655|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3656|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3657|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3658|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3659|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3660|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3661|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3662|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3663|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3664|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3665|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3666|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3667|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3668|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3669|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3670|     10|			  8,   8,   8,   8,   8,   8,   8,   8, 
 3671|     10|		};
 3672|     10|		YYDEBUG(230, *YYCURSOR);
 3673|     10|		YYFILL(2);
  ------------------
  |  |   46|     10|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|     10|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 3674|     10|		yych = *YYCURSOR;
  ------------------
  |  |   47|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     10|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     10|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3675|     10|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (3675:7): [True: 0, False: 10]
  ------------------
 3676|      0|			goto yy235;
 3677|      0|		}
 3678|     10|		if (yych <= '/') {
  ------------------
  |  Branch (3678:7): [True: 6, False: 4]
  ------------------
 3679|      6|			if (yych <= '"') {
  ------------------
  |  Branch (3679:8): [True: 6, False: 0]
  ------------------
 3680|      6|				if (yych <= '\f') {
  ------------------
  |  Branch (3680:9): [True: 3, False: 3]
  ------------------
 3681|      3|					if (yych <= 0x08) goto yy232;
  ------------------
  |  Branch (3681:10): [True: 0, False: 3]
  ------------------
 3682|      3|					if (yych <= '\n') goto yy237;
  ------------------
  |  Branch (3682:10): [True: 3, False: 0]
  ------------------
 3683|      3|				} else {
 3684|      3|					if (yych <= '\r') goto yy237;
  ------------------
  |  Branch (3684:10): [True: 0, False: 3]
  ------------------
 3685|      3|					if (yych >= '"') goto yy239;
  ------------------
  |  Branch (3685:10): [True: 3, False: 0]
  ------------------
 3686|      3|				}
 3687|      6|			} else {
 3688|      0|				if (yych <= '&') {
  ------------------
  |  Branch (3688:9): [True: 0, False: 0]
  ------------------
 3689|      0|					if (yych == '$') goto yy241;
  ------------------
  |  Branch (3689:10): [True: 0, False: 0]
  ------------------
 3690|      0|				} else {
 3691|      0|					if (yych <= '\'') goto yy237;
  ------------------
  |  Branch (3691:10): [True: 0, False: 0]
  ------------------
 3692|      0|					if (yych <= ',') goto yy232;
  ------------------
  |  Branch (3692:10): [True: 0, False: 0]
  ------------------
 3693|      0|					if (yych <= '.') goto yy242;
  ------------------
  |  Branch (3693:10): [True: 0, False: 0]
  ------------------
 3694|      0|				}
 3695|      0|			}
 3696|      6|		} else {
 3697|      4|			if (yych <= '\\') {
  ------------------
  |  Branch (3697:8): [True: 2, False: 2]
  ------------------
 3698|      2|				if (yych <= ';') {
  ------------------
  |  Branch (3698:9): [True: 2, False: 0]
  ------------------
 3699|      2|					if (yych <= '9') goto yy243;
  ------------------
  |  Branch (3699:10): [True: 2, False: 0]
  ------------------
 3700|      0|					if (yych >= ';') goto yy237;
  ------------------
  |  Branch (3700:10): [True: 0, False: 0]
  ------------------
 3701|      0|				} else {
 3702|      0|					if (yych <= '@') goto yy232;
  ------------------
  |  Branch (3702:10): [True: 0, False: 0]
  ------------------
 3703|      0|					if (yych <= 'Z') goto yy246;
  ------------------
  |  Branch (3703:10): [True: 0, False: 0]
  ------------------
 3704|      0|					if (yych >= '\\') goto yy249;
  ------------------
  |  Branch (3704:10): [True: 0, False: 0]
  ------------------
 3705|      0|				}
 3706|      2|			} else {
 3707|      2|				if (yych <= '`') {
  ------------------
  |  Branch (3707:9): [True: 0, False: 2]
  ------------------
 3708|      0|					if (yych == '_') goto yy246;
  ------------------
  |  Branch (3708:10): [True: 0, False: 0]
  ------------------
 3709|      2|				} else {
 3710|      2|					if (yych <= 'z') goto yy246;
  ------------------
  |  Branch (3710:10): [True: 2, False: 0]
  ------------------
 3711|      0|					if (yych == '}') goto yy250;
  ------------------
  |  Branch (3711:10): [True: 0, False: 0]
  ------------------
 3712|      0|				}
 3713|      2|			}
 3714|      4|		}
 3715|      7|yy232:
 3716|      7|		YYDEBUG(232, *YYCURSOR);
 3717|      7|		yyaccept = 0;
 3718|      7|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|      7|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      7|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      7|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      7|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      7|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3719|      7|		YYFILL(1);
  ------------------
  |  |   46|      7|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      7|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      7|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      7|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      7|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      7|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 3720|      7|		yych = *YYCURSOR;
  ------------------
  |  |   47|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      7|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      7|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3721|      7|yy233:
 3722|      7|		YYDEBUG(233, *YYCURSOR);
 3723|      7|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (3723:7): [True: 4, False: 3]
  ------------------
 3724|      4|			goto yy232;
 3725|      4|		}
 3726|      3|		if (yych <= '"') goto yy234;
  ------------------
  |  Branch (3726:7): [True: 3, False: 0]
  ------------------
 3727|      0|		if (yych <= '$') goto yy252;
  ------------------
  |  Branch (3727:7): [True: 0, False: 0]
  ------------------
 3728|      0|		if (yych <= ';') goto yy234;
  ------------------
  |  Branch (3728:7): [True: 0, False: 0]
  ------------------
 3729|      0|		if (yych <= '\\') goto yy249;
  ------------------
  |  Branch (3729:7): [True: 0, False: 0]
  ------------------
 3730|      3|yy234:
 3731|      3|		YYDEBUG(234, *YYCURSOR);
 3732|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3733|      3|#line 601 "Zend/zend_ini_scanner.l"
 3734|      3|		{ /* Same as below, but excluding '}' */
 3735|      3|	RETURN_TOKEN(TC_STRING, yytext, yyleng);
  ------------------
  |  |  146|      3|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      3|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      6|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 3]
  |  |  ------------------
  |  |  148|      3|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      3|	} else {                                                       \
  |  |  151|      3|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      3|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      3|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      3|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      3|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      3|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      3|	}                                                              \
  |  |  153|      3|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      3|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      3|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      3|	return type;                                                   \
  |  |  155|      3|}
  ------------------
 3736|      0|}
 3737|      0|#line 3738 "Zend/zend_ini_scanner.c"
 3738|      0|yy235:
 3739|      0|		YYDEBUG(235, *YYCURSOR);
 3740|      0|		yyaccept = 0;
 3741|      0|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3742|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3743|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3744|      0|		YYDEBUG(236, *YYCURSOR);
 3745|      0|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (3745:7): [True: 0, False: 0]
  ------------------
 3746|      0|			goto yy235;
 3747|      0|		}
 3748|      0|		if (yych <= '$') {
  ------------------
  |  Branch (3748:7): [True: 0, False: 0]
  ------------------
 3749|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (3749:8): [True: 0, False: 0]
  ------------------
 3750|      0|				if (yych <= 0x08) goto yy232;
  ------------------
  |  Branch (3750:9): [True: 0, False: 0]
  ------------------
 3751|      0|				if (yych <= '\n') goto yy234;
  ------------------
  |  Branch (3751:9): [True: 0, False: 0]
  ------------------
 3752|      0|				if (yych <= '\f') goto yy232;
  ------------------
  |  Branch (3752:9): [True: 0, False: 0]
  ------------------
 3753|      0|				goto yy234;
 3754|      0|			} else {
 3755|      0|				if (yych == '"') goto yy239;
  ------------------
  |  Branch (3755:9): [True: 0, False: 0]
  ------------------
 3756|      0|				if (yych <= '#') goto yy232;
  ------------------
  |  Branch (3756:9): [True: 0, False: 0]
  ------------------
 3757|      0|				goto yy252;
 3758|      0|			}
 3759|      0|		} else {
 3760|      0|			if (yych <= ';') {
  ------------------
  |  Branch (3760:8): [True: 0, False: 0]
  ------------------
 3761|      0|				if (yych == '\'') goto yy234;
  ------------------
  |  Branch (3761:9): [True: 0, False: 0]
  ------------------
 3762|      0|				if (yych <= ':') goto yy232;
  ------------------
  |  Branch (3762:9): [True: 0, False: 0]
  ------------------
 3763|      0|				goto yy234;
 3764|      0|			} else {
 3765|      0|				if (yych <= '\\') {
  ------------------
  |  Branch (3765:9): [True: 0, False: 0]
  ------------------
 3766|      0|					if (yych <= '[') goto yy232;
  ------------------
  |  Branch (3766:10): [True: 0, False: 0]
  ------------------
 3767|      0|					goto yy249;
 3768|      0|				} else {
 3769|      0|					if (yych == '}') goto yy234;
  ------------------
  |  Branch (3769:10): [True: 0, False: 0]
  ------------------
 3770|      0|					goto yy232;
 3771|      0|				}
 3772|      0|			}
 3773|      0|		}
 3774|      3|yy237:
 3775|      3|		YYDEBUG(237, *YYCURSOR);
 3776|      3|		++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3777|      3|yy238:
 3778|      3|		YYDEBUG(238, *YYCURSOR);
 3779|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3780|      3|#line 685 "Zend/zend_ini_scanner.l"
 3781|      3|		{
 3782|      3|	return 0;
 3783|      3|}
 3784|      0|#line 3785 "Zend/zend_ini_scanner.c"
 3785|      3|yy239:
 3786|      3|		YYDEBUG(239, *YYCURSOR);
 3787|      3|		++YYCURSOR;
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3788|      3|		YYDEBUG(240, *YYCURSOR);
 3789|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      3|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      3|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3790|      3|#line 609 "Zend/zend_ini_scanner.l"
 3791|      3|		{ /* Double quoted '"' string start */
 3792|      3|	yy_push_state(ST_DOUBLE_QUOTES);
  ------------------
  |  |  180|      3|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 3793|      3|	return '"';
 3794|      3|}
 3795|      0|#line 3796 "Zend/zend_ini_scanner.c"
 3796|      0|yy241:
 3797|      0|		YYDEBUG(241, *YYCURSOR);
 3798|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3799|      0|		if (yych <= '\\') {
  ------------------
  |  Branch (3799:7): [True: 0, False: 0]
  ------------------
 3800|      0|			if (yych <= 0x00) goto yy238;
  ------------------
  |  Branch (3800:8): [True: 0, False: 0]
  ------------------
 3801|      0|			if (yych <= '[') goto yy232;
  ------------------
  |  Branch (3801:8): [True: 0, False: 0]
  ------------------
 3802|      0|			goto yy254;
 3803|      0|		} else {
 3804|      0|			if (yych == '{') goto yy256;
  ------------------
  |  Branch (3804:8): [True: 0, False: 0]
  ------------------
 3805|      0|			goto yy232;
 3806|      0|		}
 3807|      0|yy242:
 3808|      0|		YYDEBUG(242, *YYCURSOR);
 3809|      0|		yyaccept = 0;
 3810|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3811|      0|		if (yych <= '/') goto yy233;
  ------------------
  |  Branch (3811:7): [True: 0, False: 0]
  ------------------
 3812|      0|		if (yych <= '9') goto yy258;
  ------------------
  |  Branch (3812:7): [True: 0, False: 0]
  ------------------
 3813|      0|		goto yy233;
 3814|     12|yy243:
 3815|     12|		YYDEBUG(243, *YYCURSOR);
 3816|     12|		yyaccept = 1;
 3817|     12|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3818|     12|		YYFILL(1);
  ------------------
  |  |   46|     12|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|     12|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 3819|     12|		yych = *YYCURSOR;
  ------------------
  |  |   47|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     12|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     12|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3820|     12|		YYDEBUG(244, *YYCURSOR);
 3821|     12|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (3821:7): [True: 10, False: 2]
  ------------------
 3822|     10|			goto yy243;
 3823|     10|		}
 3824|      2|		if (yych <= '&') {
  ------------------
  |  Branch (3824:7): [True: 0, False: 2]
  ------------------
 3825|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (3825:8): [True: 0, False: 0]
  ------------------
 3826|      0|				if (yych == '\n') goto yy245;
  ------------------
  |  Branch (3826:9): [True: 0, False: 0]
  ------------------
 3827|      0|				if (yych <= '\f') goto yy232;
  ------------------
  |  Branch (3827:9): [True: 0, False: 0]
  ------------------
 3828|      0|			} else {
 3829|      0|				if (yych <= '"') {
  ------------------
  |  Branch (3829:9): [True: 0, False: 0]
  ------------------
 3830|      0|					if (yych <= '!') goto yy232;
  ------------------
  |  Branch (3830:10): [True: 0, False: 0]
  ------------------
 3831|      0|				} else {
 3832|      0|					if (yych == '$') goto yy252;
  ------------------
  |  Branch (3832:10): [True: 0, False: 0]
  ------------------
 3833|      0|					goto yy232;
 3834|      0|				}
 3835|      0|			}
 3836|      2|		} else {
 3837|      2|			if (yych <= ';') {
  ------------------
  |  Branch (3837:8): [True: 0, False: 2]
  ------------------
 3838|      0|				if (yych <= '-') {
  ------------------
  |  Branch (3838:9): [True: 0, False: 0]
  ------------------
 3839|      0|					if (yych >= '(') goto yy232;
  ------------------
  |  Branch (3839:10): [True: 0, False: 0]
  ------------------
 3840|      0|				} else {
 3841|      0|					if (yych <= '.') goto yy258;
  ------------------
  |  Branch (3841:10): [True: 0, False: 0]
  ------------------
 3842|      0|					if (yych <= ':') goto yy232;
  ------------------
  |  Branch (3842:10): [True: 0, False: 0]
  ------------------
 3843|      0|				}
 3844|      2|			} else {
 3845|      2|				if (yych <= '\\') {
  ------------------
  |  Branch (3845:9): [True: 0, False: 2]
  ------------------
 3846|      0|					if (yych <= '[') goto yy232;
  ------------------
  |  Branch (3846:10): [True: 0, False: 0]
  ------------------
 3847|      0|					goto yy249;
 3848|      2|				} else {
 3849|      2|					if (yych != '}') goto yy232;
  ------------------
  |  Branch (3849:10): [True: 2, False: 0]
  ------------------
 3850|      2|				}
 3851|      2|			}
 3852|      2|		}
 3853|      0|yy245:
 3854|      0|		YYDEBUG(245, *YYCURSOR);
 3855|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3856|      0|#line 579 "Zend/zend_ini_scanner.l"
 3857|      0|		{ /* Get number option value as string */
 3858|      0|	RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
  ------------------
  |  |  146|      0|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      0|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      0|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  148|      0|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      0|	} else {                                                       \
  |  |  151|      0|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      0|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      0|	}                                                              \
  |  |  153|      0|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      0|	return type;                                                   \
  |  |  155|      0|}
  ------------------
 3859|      0|}
 3860|      0|#line 3861 "Zend/zend_ini_scanner.c"
 3861|     13|yy246:
 3862|     13|		YYDEBUG(246, *YYCURSOR);
 3863|     13|		yyaccept = 2;
 3864|     13|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|     13|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     13|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     13|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     13|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3865|     13|		YYFILL(1);
  ------------------
  |  |   46|     13|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     13|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     13|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|     13|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|     13|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|     13|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 3866|     13|		yych = *YYCURSOR;
  ------------------
  |  |   47|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     13|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     13|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3867|     13|		YYDEBUG(247, *YYCURSOR);
 3868|     13|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (3868:7): [True: 11, False: 2]
  ------------------
 3869|     11|			goto yy246;
 3870|     11|		}
 3871|      2|		if (yych <= '$') {
  ------------------
  |  Branch (3871:7): [True: 2, False: 0]
  ------------------
 3872|      2|			if (yych <= '\r') {
  ------------------
  |  Branch (3872:8): [True: 1, False: 1]
  ------------------
 3873|      1|				if (yych == '\n') goto yy248;
  ------------------
  |  Branch (3873:9): [True: 1, False: 0]
  ------------------
 3874|      0|				if (yych <= '\f') goto yy232;
  ------------------
  |  Branch (3874:9): [True: 0, False: 0]
  ------------------
 3875|      1|			} else {
 3876|      1|				if (yych == '"') goto yy248;
  ------------------
  |  Branch (3876:9): [True: 0, False: 1]
  ------------------
 3877|      1|				if (yych <= '#') goto yy232;
  ------------------
  |  Branch (3877:9): [True: 1, False: 0]
  ------------------
 3878|      0|				goto yy252;
 3879|      1|			}
 3880|      2|		} else {
 3881|      0|			if (yych <= ';') {
  ------------------
  |  Branch (3881:8): [True: 0, False: 0]
  ------------------
 3882|      0|				if (yych == '\'') goto yy248;
  ------------------
  |  Branch (3882:9): [True: 0, False: 0]
  ------------------
 3883|      0|				if (yych <= ':') goto yy232;
  ------------------
  |  Branch (3883:9): [True: 0, False: 0]
  ------------------
 3884|      0|			} else {
 3885|      0|				if (yych <= '\\') {
  ------------------
  |  Branch (3885:9): [True: 0, False: 0]
  ------------------
 3886|      0|					if (yych <= '[') goto yy232;
  ------------------
  |  Branch (3886:10): [True: 0, False: 0]
  ------------------
 3887|      0|					goto yy249;
 3888|      0|				} else {
 3889|      0|					if (yych != '}') goto yy232;
  ------------------
  |  Branch (3889:10): [True: 0, False: 0]
  ------------------
 3890|      0|				}
 3891|      0|			}
 3892|      0|		}
 3893|      1|yy248:
 3894|      1|		YYDEBUG(248, *YYCURSOR);
 3895|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3896|      1|#line 575 "Zend/zend_ini_scanner.l"
 3897|      1|		{ /* Get constant option value */
 3898|      1|	RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
  ------------------
  |  |  146|      1|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      1|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      2|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 1]
  |  |  ------------------
  |  |  148|      1|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      1|	} else {                                                       \
  |  |  151|      1|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      1|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      1|	}                                                              \
  |  |  153|      1|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      1|	return type;                                                   \
  |  |  155|      1|}
  ------------------
 3899|      0|}
 3900|      0|#line 3901 "Zend/zend_ini_scanner.c"
 3901|      0|yy249:
 3902|      0|		YYDEBUG(249, *YYCURSOR);
 3903|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3904|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3905|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3906|      0|		goto yy232;
 3907|      0|yy250:
 3908|      0|		YYDEBUG(250, *YYCURSOR);
 3909|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3910|      0|		YYDEBUG(251, *YYCURSOR);
 3911|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3912|      0|#line 485 "Zend/zend_ini_scanner.l"
 3913|      0|		{ /* Variable/fallback end */
 3914|      0|	yy_pop_state();
 3915|      0|	return '}';
 3916|      0|}
 3917|      0|#line 3918 "Zend/zend_ini_scanner.c"
 3918|      0|yy252:
 3919|      0|		YYDEBUG(252, *YYCURSOR);
 3920|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3921|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3922|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3923|      0|		if (yych <= '\\') {
  ------------------
  |  Branch (3923:7): [True: 0, False: 0]
  ------------------
 3924|      0|			if (yych <= 0x00) goto yy253;
  ------------------
  |  Branch (3924:8): [True: 0, False: 0]
  ------------------
 3925|      0|			if (yych <= '[') goto yy232;
  ------------------
  |  Branch (3925:8): [True: 0, False: 0]
  ------------------
 3926|      0|			goto yy254;
 3927|      0|		} else {
 3928|      0|			if (yych != '{') goto yy232;
  ------------------
  |  Branch (3928:8): [True: 0, False: 0]
  ------------------
 3929|      0|		}
 3930|      0|yy253:
 3931|      0|		YYDEBUG(253, *YYCURSOR);
 3932|      0|		YYCURSOR = YYMARKER;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3933|      0|		if (yyaccept <= 1) {
  ------------------
  |  Branch (3933:7): [True: 0, False: 0]
  ------------------
 3934|      0|			if (yyaccept == 0) {
  ------------------
  |  Branch (3934:8): [True: 0, False: 0]
  ------------------
 3935|      0|				goto yy234;
 3936|      0|			} else {
 3937|      0|				goto yy245;
 3938|      0|			}
 3939|      0|		} else {
 3940|      0|			goto yy248;
 3941|      0|		}
 3942|      0|yy254:
 3943|      0|		YYDEBUG(254, *YYCURSOR);
 3944|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3945|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3946|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3947|      0|		YYDEBUG(255, *YYCURSOR);
 3948|      0|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (3948:7): [True: 0, False: 0]
  ------------------
 3949|      0|			goto yy254;
 3950|      0|		}
 3951|      0|		goto yy232;
 3952|      0|yy256:
 3953|      0|		YYDEBUG(256, *YYCURSOR);
 3954|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3955|      0|		YYDEBUG(257, *YYCURSOR);
 3956|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 3957|      0|#line 421 "Zend/zend_ini_scanner.l"
 3958|      0|		{ /* Variable start */
 3959|      0|	yy_push_state(ST_VARNAME);
  ------------------
  |  |  180|      0|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 3960|      0|	return TC_DOLLAR_CURLY;
 3961|      0|}
 3962|      0|#line 3963 "Zend/zend_ini_scanner.c"
 3963|      0|yy258:
 3964|      0|		YYDEBUG(258, *YYCURSOR);
 3965|      0|		yyaccept = 1;
 3966|      0|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   49|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3967|      0|		YYFILL(1);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3968|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3969|      0|		YYDEBUG(259, *YYCURSOR);
 3970|      0|		if (yych <= '&') {
  ------------------
  |  Branch (3970:7): [True: 0, False: 0]
  ------------------
 3971|      0|			if (yych <= '\r') {
  ------------------
  |  Branch (3971:8): [True: 0, False: 0]
  ------------------
 3972|      0|				if (yych == '\n') goto yy245;
  ------------------
  |  Branch (3972:9): [True: 0, False: 0]
  ------------------
 3973|      0|				if (yych <= '\f') goto yy232;
  ------------------
  |  Branch (3973:9): [True: 0, False: 0]
  ------------------
 3974|      0|				goto yy245;
 3975|      0|			} else {
 3976|      0|				if (yych <= '"') {
  ------------------
  |  Branch (3976:9): [True: 0, False: 0]
  ------------------
 3977|      0|					if (yych <= '!') goto yy232;
  ------------------
  |  Branch (3977:10): [True: 0, False: 0]
  ------------------
 3978|      0|					goto yy245;
 3979|      0|				} else {
 3980|      0|					if (yych == '$') goto yy252;
  ------------------
  |  Branch (3980:10): [True: 0, False: 0]
  ------------------
 3981|      0|					goto yy232;
 3982|      0|				}
 3983|      0|			}
 3984|      0|		} else {
 3985|      0|			if (yych <= ';') {
  ------------------
  |  Branch (3985:8): [True: 0, False: 0]
  ------------------
 3986|      0|				if (yych <= '/') {
  ------------------
  |  Branch (3986:9): [True: 0, False: 0]
  ------------------
 3987|      0|					if (yych <= '\'') goto yy245;
  ------------------
  |  Branch (3987:10): [True: 0, False: 0]
  ------------------
 3988|      0|					goto yy232;
 3989|      0|				} else {
 3990|      0|					if (yych <= '9') goto yy258;
  ------------------
  |  Branch (3990:10): [True: 0, False: 0]
  ------------------
 3991|      0|					if (yych <= ':') goto yy232;
  ------------------
  |  Branch (3991:10): [True: 0, False: 0]
  ------------------
 3992|      0|					goto yy245;
 3993|      0|				}
 3994|      0|			} else {
 3995|      0|				if (yych <= '\\') {
  ------------------
  |  Branch (3995:9): [True: 0, False: 0]
  ------------------
 3996|      0|					if (yych <= '[') goto yy232;
  ------------------
  |  Branch (3996:10): [True: 0, False: 0]
  ------------------
 3997|      0|					goto yy249;
 3998|      0|				} else {
 3999|      0|					if (yych == '}') goto yy245;
  ------------------
  |  Branch (3999:10): [True: 0, False: 0]
  ------------------
 4000|      0|					goto yy232;
 4001|      0|				}
 4002|      0|			}
 4003|      0|		}
 4004|      0|	}
 4005|       |/* *********************************** */
 4006|    304|yyc_ST_VARNAME:
 4007|    304|	YYDEBUG(260, *YYCURSOR);
 4008|    304|	YYFILL(2);
  ------------------
  |  |   46|    304|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|    304|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    304|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    304|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|    304|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    304|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    304|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 304]
  |  |  ------------------
  ------------------
 4009|    304|	yych = *YYCURSOR;
  ------------------
  |  |   47|    304|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    304|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    304|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4010|    304|	if (yych <= ')') {
  ------------------
  |  Branch (4010:6): [True: 146, False: 158]
  ------------------
 4011|    146|		if (yych <= ' ') {
  ------------------
  |  Branch (4011:7): [True: 1, False: 145]
  ------------------
 4012|      1|			if (yych <= '\n') {
  ------------------
  |  Branch (4012:8): [True: 0, False: 1]
  ------------------
 4013|      0|				if (yych <= 0x00) goto yy262;
  ------------------
  |  Branch (4013:9): [True: 0, False: 0]
  ------------------
 4014|      0|				if (yych <= 0x08) goto yy264;
  ------------------
  |  Branch (4014:9): [True: 0, False: 0]
  ------------------
 4015|      1|			} else {
 4016|      1|				if (yych != '\r') goto yy264;
  ------------------
  |  Branch (4016:9): [True: 1, False: 0]
  ------------------
 4017|      1|			}
 4018|    145|		} else {
 4019|    145|			if (yych <= '$') {
  ------------------
  |  Branch (4019:8): [True: 1, False: 144]
  ------------------
 4020|      1|				if (yych == '#') goto yy264;
  ------------------
  |  Branch (4020:9): [True: 0, False: 1]
  ------------------
 4021|    144|			} else {
 4022|    144|				if (yych == '&') goto yy262;
  ------------------
  |  Branch (4022:9): [True: 1, False: 143]
  ------------------
 4023|    143|				if (yych <= '\'') goto yy264;
  ------------------
  |  Branch (4023:9): [True: 0, False: 143]
  ------------------
 4024|    143|			}
 4025|    145|		}
 4026|    158|	} else {
 4027|    158|		if (yych <= '[') {
  ------------------
  |  Branch (4027:7): [True: 148, False: 10]
  ------------------
 4028|    148|			if (yych <= ';') {
  ------------------
  |  Branch (4028:8): [True: 6, False: 142]
  ------------------
 4029|      6|				if (yych <= '9') goto yy264;
  ------------------
  |  Branch (4029:9): [True: 1, False: 5]
  ------------------
 4030|      5|				if (yych <= ':') goto yy266;
  ------------------
  |  Branch (4030:9): [True: 4, False: 1]
  ------------------
 4031|    142|			} else {
 4032|    142|				if (yych == '=') goto yy262;
  ------------------
  |  Branch (4032:9): [True: 0, False: 142]
  ------------------
 4033|    142|				if (yych <= 'Z') goto yy264;
  ------------------
  |  Branch (4033:9): [True: 142, False: 0]
  ------------------
 4034|    142|			}
 4035|    148|		} else {
 4036|     10|			if (yych <= 'z') {
  ------------------
  |  Branch (4036:8): [True: 8, False: 2]
  ------------------
 4037|      8|				if (yych <= '\\') goto yy264;
  ------------------
  |  Branch (4037:9): [True: 0, False: 8]
  ------------------
 4038|      8|				if (yych >= '_') goto yy264;
  ------------------
  |  Branch (4038:9): [True: 8, False: 0]
  ------------------
 4039|      8|			} else {
 4040|      2|				if (yych == '}') goto yy267;
  ------------------
  |  Branch (4040:9): [True: 1, False: 1]
  ------------------
 4041|      1|				if (yych >= 0x7F) goto yy264;
  ------------------
  |  Branch (4041:9): [True: 0, False: 1]
  ------------------
 4042|      1|			}
 4043|     10|		}
 4044|    158|	}
 4045|    147|yy262:
 4046|    147|	YYDEBUG(262, *YYCURSOR);
 4047|    147|	++YYCURSOR;
  ------------------
  |  |   47|    147|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    147|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    147|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4048|    147|	YYDEBUG(263, *YYCURSOR);
 4049|    147|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    147|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    147|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    147|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    147|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    147|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    147|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    147|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    147|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4050|    147|#line 685 "Zend/zend_ini_scanner.l"
 4051|    147|	{
 4052|    147|	return 0;
 4053|    304|}
 4054|      0|#line 4055 "Zend/zend_ini_scanner.c"
 4055|    152|yy264:
 4056|    152|	YYDEBUG(264, *YYCURSOR);
 4057|    152|	++YYCURSOR;
  ------------------
  |  |   47|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4058|    152|yy265:
 4059|    152|	YYDEBUG(265, *YYCURSOR);
 4060|    152|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4061|    152|#line 433 "Zend/zend_ini_scanner.l"
 4062|    152|	{ /* Variable name */
 4063|    152|	if (YYCURSOR[0] == ':' && YYCURSOR[1] == '-') {
  ------------------
  |  |   47|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR[0] == ':' && YYCURSOR[1] == '-') {
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4063:6): [True: 0, False: 152]
  |  Branch (4063:28): [True: 0, False: 0]
  ------------------
 4064|      0|		YYCURSOR++;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4065|      0|		goto fallback_lexing;
 4066|      0|	}
 4067|       |
 4068|  11.4k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   47|  11.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  11.4k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   48|  11.4k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|  11.4k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4068:9): [True: 11.4k, False: 0]
  ------------------
 4069|  11.4k|		switch (*YYCURSOR++) {
  ------------------
  |  |   47|  11.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  11.4k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  11.4k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4070|      0|			case '=':
  ------------------
  |  Branch (4070:4): [True: 0, False: 11.4k]
  ------------------
 4071|      0|			case '\n':
  ------------------
  |  Branch (4071:4): [True: 0, False: 11.4k]
  ------------------
 4072|      0|			case '\r':
  ------------------
  |  Branch (4072:4): [True: 0, False: 11.4k]
  ------------------
 4073|      0|			case '\t':
  ------------------
  |  Branch (4073:4): [True: 0, False: 11.4k]
  ------------------
 4074|      1|			case ';':
  ------------------
  |  Branch (4074:4): [True: 1, False: 11.4k]
  ------------------
 4075|      2|			case '&':
  ------------------
  |  Branch (4075:4): [True: 1, False: 11.4k]
  ------------------
 4076|      2|			case '|':
  ------------------
  |  Branch (4076:4): [True: 0, False: 11.4k]
  ------------------
 4077|      2|			case '^':
  ------------------
  |  Branch (4077:4): [True: 0, False: 11.4k]
  ------------------
 4078|      3|			case '$':
  ------------------
  |  Branch (4078:4): [True: 1, False: 11.4k]
  ------------------
 4079|      4|			case '~':
  ------------------
  |  Branch (4079:4): [True: 1, False: 11.4k]
  ------------------
 4080|      4|			case '(':
  ------------------
  |  Branch (4080:4): [True: 0, False: 11.4k]
  ------------------
 4081|    147|			case ')':
  ------------------
  |  Branch (4081:4): [True: 143, False: 11.3k]
  ------------------
 4082|    147|			case '{':
  ------------------
  |  Branch (4082:4): [True: 0, False: 11.4k]
  ------------------
 4083|    148|			case '}':
  ------------------
  |  Branch (4083:4): [True: 1, False: 11.4k]
  ------------------
 4084|    148|			case '!':
  ------------------
  |  Branch (4084:4): [True: 0, False: 11.4k]
  ------------------
 4085|    148|			case '"':
  ------------------
  |  Branch (4085:4): [True: 0, False: 11.4k]
  ------------------
 4086|    148|			case '[':
  ------------------
  |  Branch (4086:4): [True: 0, False: 11.4k]
  ------------------
 4087|    148|			case ']':
  ------------------
  |  Branch (4087:4): [True: 0, False: 11.4k]
  ------------------
 4088|    148|				break;
 4089|       |			/* ':' is only allowed if it isn't followed by '-'. */
 4090|     35|			case ':':
  ------------------
  |  Branch (4090:4): [True: 35, False: 11.4k]
  ------------------
 4091|     35|				if (YYCURSOR[0] == '-') {
  ------------------
  |  |   47|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|     35|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|     35|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4091:9): [True: 4, False: 31]
  ------------------
 4092|      4|					break;
 4093|     31|				} else {
 4094|     31|					continue;
 4095|     31|				}
 4096|  11.2k|			default:
  ------------------
  |  Branch (4096:4): [True: 11.2k, False: 183]
  ------------------
 4097|  11.2k|				continue;
 4098|  11.4k|		}
 4099|       |
 4100|    152|		YYCURSOR--;
  ------------------
  |  |   47|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4101|    152|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4102|    152|		break;
 4103|  11.4k|	}
 4104|       |
 4105|       |	/* Eat leading whitespace */
 4106|    152|	EAT_LEADING_WHITESPACE();
  ------------------
  |  |  118|    153|	while (yyleng) {                                 \
  |  |  119|    153|		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|    153|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    153|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    153|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|    152|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (119:7): [True: 1, False: 152]
  |  |  |  Branch (119:27): [True: 0, False: 152]
  |  |  ------------------
  |  |  120|      1|			SCNG(yy_text)++;                         \
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|      1|			yyleng--;                                \
  |  |  ------------------
  |  |  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  122|    152|		} else {                                     \
  |  |  123|    152|			break;                                   \
  |  |  124|    152|		}                                            \
  |  |  125|    153|	}
  ------------------
 4107|       |
 4108|       |	/* Eat trailing whitespace */
 4109|    152|	EAT_TRAILING_WHITESPACE();
  ------------------
  |  |  140|    152|#define EAT_TRAILING_WHITESPACE()	EAT_TRAILING_WHITESPACE_EX('X')
  |  |  ------------------
  |  |  |  |  129|    152|	while (yyleng && (                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    304|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (66:22): [True: 152, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    152|		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:4): [Folded, False: 152]
  |  |  |  |  |  Branch (130:17): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|    152|		yytext[yyleng - 1] == '\n' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|    152|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\n' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (131:3): [True: 0, False: 152]
  |  |  |  |  ------------------
  |  |  |  |  132|    152|		yytext[yyleng - 1] == '\r' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|    152|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\r' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (132:3): [True: 0, False: 152]
  |  |  |  |  ------------------
  |  |  |  |  133|    152|		yytext[yyleng - 1] == '\t' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|    152|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\t' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:3): [True: 0, False: 152]
  |  |  |  |  ------------------
  |  |  |  |  134|    152|		yytext[yyleng - 1] == ' ')                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|    152|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == ' ')                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|    152|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:3): [True: 0, False: 152]
  |  |  |  |  ------------------
  |  |  |  |  135|    152|	) {                                             \
  |  |  |  |  136|      0|		yyleng--;                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|	}
  |  |  ------------------
  ------------------
 4110|       |
 4111|    152|	RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
  ------------------
  |  |  146|    152|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|    152|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|    152|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|    152|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|    304|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 152]
  |  |  ------------------
  |  |  148|    152|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|    152|	} else {                                                       \
  |  |  151|    152|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|    152|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    152|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    152|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    152|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    152|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    152|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    152|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    152|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    152|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    152|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    152|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    152|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    152|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    152|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    152|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 152]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|    152|	}                                                              \
  |  |  153|    152|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|    152|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    152|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|    152|	return type;                                                   \
  |  |  155|    152|}
  ------------------
 4112|      0|}
 4113|      0|#line 4114 "Zend/zend_ini_scanner.c"
 4114|      4|yy266:
 4115|      4|	YYDEBUG(266, *YYCURSOR);
 4116|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4117|      4|	if (yych == '-') goto yy269;
  ------------------
  |  Branch (4117:6): [True: 4, False: 0]
  ------------------
 4118|      0|	goto yy265;
 4119|      1|yy267:
 4120|      1|	YYDEBUG(267, *YYCURSOR);
 4121|      1|	++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4122|      1|	YYDEBUG(268, *YYCURSOR);
 4123|      1|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4124|      1|#line 485 "Zend/zend_ini_scanner.l"
 4125|      1|	{ /* Variable/fallback end */
 4126|      1|	yy_pop_state();
 4127|      1|	return '}';
 4128|      4|}
 4129|      0|#line 4130 "Zend/zend_ini_scanner.c"
 4130|      4|yy269:
 4131|      4|	YYDEBUG(269, *YYCURSOR);
 4132|      4|	++YYCURSOR;
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4133|      4|	YYDEBUG(270, *YYCURSOR);
 4134|      4|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      4|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      4|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      4|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4135|      4|#line 426 "Zend/zend_ini_scanner.l"
 4136|      4|	{ /* End Variable name, fallback start */
 4137|      4|fallback_lexing:
 4138|      4|	yy_pop_state();
 4139|      4|	yy_push_state(ST_VAR_FALLBACK);
  ------------------
  |  |  180|      4|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 4140|      4|	return TC_FALLBACK;
 4141|      4|}
 4142|      0|#line 4143 "Zend/zend_ini_scanner.c"
 4143|       |/* *********************************** */
 4144|      2|yyc_ST_RAW:
 4145|      2|	{
 4146|      2|		static const unsigned char yybm[] = {
 4147|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4148|      2|			 64, 192,   0,  64,  64,   0,  64,  64, 
 4149|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4150|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4151|      2|			192,  64,  64,  64,  64,  64,  64,  64, 
 4152|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4153|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4154|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4155|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4156|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4157|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4158|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4159|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4160|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4161|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4162|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4163|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4164|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4165|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4166|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4167|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4168|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4169|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4170|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4171|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4172|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4173|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4174|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4175|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4176|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4177|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4178|      2|			 64,  64,  64,  64,  64,  64,  64,  64, 
 4179|      2|		};
 4180|      2|		YYDEBUG(271, *YYCURSOR);
 4181|      2|		YYFILL(3);
  ------------------
  |  |   46|      2|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      2|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 4182|      2|		yych = *YYCURSOR;
  ------------------
  |  |   47|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      2|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4183|      2|		if (yych <= '\f') {
  ------------------
  |  Branch (4183:7): [True: 1, False: 1]
  ------------------
 4184|      1|			if (yych <= 0x08) {
  ------------------
  |  Branch (4184:8): [True: 0, False: 1]
  ------------------
 4185|      0|				if (yych >= 0x01) goto yy275;
  ------------------
  |  Branch (4185:9): [True: 0, False: 0]
  ------------------
 4186|      1|			} else {
 4187|      1|				if (yych <= '\t') goto yy277;
  ------------------
  |  Branch (4187:9): [True: 0, False: 1]
  ------------------
 4188|      1|				if (yych <= '\n') goto yy278;
  ------------------
  |  Branch (4188:9): [True: 1, False: 0]
  ------------------
 4189|      0|				goto yy275;
 4190|      1|			}
 4191|      1|		} else {
 4192|      1|			if (yych <= ' ') {
  ------------------
  |  Branch (4192:8): [True: 0, False: 1]
  ------------------
 4193|      0|				if (yych <= '\r') goto yy280;
  ------------------
  |  Branch (4193:9): [True: 0, False: 0]
  ------------------
 4194|      0|				if (yych <= 0x1F) goto yy275;
  ------------------
  |  Branch (4194:9): [True: 0, False: 0]
  ------------------
 4195|      0|				goto yy277;
 4196|      1|			} else {
 4197|      1|				if (yych == ';') goto yy281;
  ------------------
  |  Branch (4197:9): [True: 0, False: 1]
  ------------------
 4198|      1|				goto yy275;
 4199|      1|			}
 4200|      1|		}
 4201|      0|		YYDEBUG(273, *YYCURSOR);
 4202|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4203|      0|		YYDEBUG(274, *YYCURSOR);
 4204|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4205|      0|#line 680 "Zend/zend_ini_scanner.l"
 4206|      0|		{ /* End of option value (if EOF is reached before EOL */
 4207|      0|	BEGIN(INITIAL);
  ------------------
  |  |   57|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4208|      0|	return END_OF_LINE;
 4209|      2|}
 4210|      0|#line 4211 "Zend/zend_ini_scanner.c"
 4211|      1|yy275:
 4212|      1|		YYDEBUG(275, *YYCURSOR);
 4213|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4214|      1|yy276:
 4215|      1|		YYDEBUG(276, *YYCURSOR);
 4216|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4217|      1|#line 521 "Zend/zend_ini_scanner.l"
 4218|      1|		{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
 4219|      1|	const unsigned char *sc = NULL;
 4220|      1|	EAT_LEADING_WHITESPACE();
  ------------------
  |  |  118|      1|	while (yyleng) {                                 \
  |  |  119|      1|		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|      1|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (yytext[0] == ' ' || yytext[0] == '\t') { \
  |  |  ------------------
  |  |  |  |   59|      1|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (119:7): [True: 0, False: 1]
  |  |  |  Branch (119:27): [True: 0, False: 1]
  |  |  ------------------
  |  |  120|      0|			SCNG(yy_text)++;                         \
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|      0|			yyleng--;                                \
  |  |  ------------------
  |  |  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  122|      1|		} else {                                     \
  |  |  123|      1|			break;                                   \
  |  |  124|      1|		}                                            \
  |  |  125|      1|	}
  ------------------
 4221|      1|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   48|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4221:9): [True: 1, False: 0]
  ------------------
 4222|      1|		switch (*YYCURSOR) {
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4223|      1|			case '\n':
  ------------------
  |  Branch (4223:4): [True: 1, False: 0]
  ------------------
 4224|      1|			case '\r':
  ------------------
  |  Branch (4224:4): [True: 0, False: 1]
  ------------------
 4225|      1|				goto end_raw_value_chars;
 4226|      0|				break;
 4227|      0|			case ';':
  ------------------
  |  Branch (4227:4): [True: 0, False: 1]
  ------------------
 4228|      0|				if (sc == NULL) {
  ------------------
  |  Branch (4228:9): [True: 0, False: 0]
  ------------------
 4229|      0|					sc = YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4230|      0|				}
 4231|      0|				YYCURSOR++;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4232|      0|				break;
 4233|      0|			case '"':
  ------------------
  |  Branch (4233:4): [True: 0, False: 1]
  ------------------
 4234|      0|				if (yytext[0] == '"') {
  ------------------
  |  |   59|      0|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4234:9): [True: 0, False: 0]
  ------------------
 4235|      0|					sc = NULL;
 4236|      0|				}
 4237|      0|				YYCURSOR++;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4238|      0|				break;
 4239|      0|			default:
  ------------------
  |  Branch (4239:4): [True: 0, False: 1]
  ------------------
 4240|      0|				YYCURSOR++;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4241|      0|				break;
 4242|      1|		}
 4243|      1|	}
 4244|      1|end_raw_value_chars:
 4245|      1|	if (sc) {
  ------------------
  |  Branch (4245:6): [True: 0, False: 1]
  ------------------
 4246|      0|		yyleng = sc - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = sc - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4247|      1|	} else {
 4248|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4249|      1|	}
 4250|       |
 4251|      1|	EAT_TRAILING_WHITESPACE();
  ------------------
  |  |  140|      1|#define EAT_TRAILING_WHITESPACE()	EAT_TRAILING_WHITESPACE_EX('X')
  |  |  ------------------
  |  |  |  |  129|      1|	while (yyleng && (                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      2|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (66:22): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|      1|		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		(ch != 'X' && yytext[yyleng - 1] ==  ch) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (130:4): [Folded, False: 1]
  |  |  |  |  |  Branch (130:17): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  131|      1|		yytext[yyleng - 1] == '\n' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\n' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (131:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  132|      1|		yytext[yyleng - 1] == '\r' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\r' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (132:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  133|      1|		yytext[yyleng - 1] == '\t' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == '\t' ||               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (133:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  134|      1|		yytext[yyleng - 1] == ' ')                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      1|#define yytext       ((const char*)SCNG(yy_text))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		yytext[yyleng - 1] == ' ')                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (134:3): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  135|      1|	) {                                             \
  |  |  |  |  136|      0|		yyleng--;                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|	}
  |  |  ------------------
  ------------------
 4252|       |
 4253|       |	/* Eat leading and trailing double quotes */
 4254|      1|	if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
  ------------------
  |  |   59|      0|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
  ------------------
  |  |   59|      0|#define yytext       ((const char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4254:6): [True: 0, False: 1]
  |  Branch (4254:20): [True: 0, False: 0]
  |  Branch (4254:40): [True: 0, False: 0]
  ------------------
 4255|      0|		SCNG(yy_text)++;
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4256|      0|		yyleng = yyleng - 2;
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = yyleng - 2;
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4257|      0|	}
 4258|       |
 4259|      1|	RETURN_TOKEN(TC_RAW, yytext, yyleng);
  ------------------
  |  |  146|      1|#define RETURN_TOKEN(type, str, len) {                             \
  |  |  147|      1|	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED &&            \
  |  |  ------------------
  |  |  |  |   29|      2|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  |  |  ------------------
  |  |  |  Branch (147:6): [True: 0, False: 1]
  |  |  ------------------
  |  |  148|      1|		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   58|      0|#define YYSTATE      YYGETCONDITION()
  |  |  |  |  ------------------
  |  |  |  |  |  |   51|      0|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		(YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
  |  |  ------------------
  |  |  |  |   54|      0|#define STATE(name)  yyc##name
  |  |  ------------------
  |  |  |  Branch (148:4): [True: 0, False: 0]
  |  |  |  Branch (148:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  149|      0|		zend_ini_copy_typed_value(ini_lval, type, str, len);       \
  |  |  150|      1|	} else {                                                       \
  |  |  151|      1|		zend_ini_copy_value(ini_lval, str, len);                   \
  |  |  ------------------
  |  |  |  |  143|      1|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  152|      1|	}                                                              \
  |  |  153|      1|	Z_EXTRA_P(ini_lval) = 0;                                       \
  |  |  ------------------
  |  |  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  154|      1|	return type;                                                   \
  |  |  155|      1|}
  ------------------
 4260|      0|}
 4261|      0|#line 4262 "Zend/zend_ini_scanner.c"
 4262|      0|yy277:
 4263|      0|		YYDEBUG(277, *YYCURSOR);
 4264|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4265|      0|		if (yych <= '\r') {
  ------------------
  |  Branch (4265:7): [True: 0, False: 0]
  ------------------
 4266|      0|			if (yych <= 0x08) goto yy276;
  ------------------
  |  Branch (4266:8): [True: 0, False: 0]
  ------------------
 4267|      0|			if (yych <= '\n') goto yy284;
  ------------------
  |  Branch (4267:8): [True: 0, False: 0]
  ------------------
 4268|      0|			if (yych <= '\f') goto yy276;
  ------------------
  |  Branch (4268:8): [True: 0, False: 0]
  ------------------
 4269|      0|			goto yy284;
 4270|      0|		} else {
 4271|      0|			if (yych <= ' ') {
  ------------------
  |  Branch (4271:8): [True: 0, False: 0]
  ------------------
 4272|      0|				if (yych <= 0x1F) goto yy276;
  ------------------
  |  Branch (4272:9): [True: 0, False: 0]
  ------------------
 4273|      0|				goto yy284;
 4274|      0|			} else {
 4275|      0|				if (yych == ';') goto yy284;
  ------------------
  |  Branch (4275:9): [True: 0, False: 0]
  ------------------
 4276|      0|				goto yy276;
 4277|      0|			}
 4278|      0|		}
 4279|      1|yy278:
 4280|      1|		YYDEBUG(278, *YYCURSOR);
 4281|      1|		++YYCURSOR;
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4282|      1|yy279:
 4283|      1|		YYDEBUG(279, *YYCURSOR);
 4284|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4285|      1|#line 569 "Zend/zend_ini_scanner.l"
 4286|      1|		{ /* End of option value */
 4287|      1|	BEGIN(INITIAL);
  ------------------
  |  |   57|      1|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|      1|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4288|      1|	SCNG(lineno)++;
  ------------------
  |  |  106|      1|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      1|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4289|      1|	return END_OF_LINE;
 4290|      1|}
 4291|      0|#line 4292 "Zend/zend_ini_scanner.c"
 4292|      0|yy280:
 4293|      0|		YYDEBUG(280, *YYCURSOR);
 4294|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4295|      0|		if (yych == '\n') goto yy278;
  ------------------
  |  Branch (4295:7): [True: 0, False: 0]
  ------------------
 4296|      0|		goto yy279;
 4297|      0|yy281:
 4298|      0|		YYDEBUG(281, *YYCURSOR);
 4299|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4300|      0|		YYFILL(2);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4301|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4302|      0|		YYDEBUG(282, *YYCURSOR);
 4303|      0|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (4303:7): [True: 0, False: 0]
  ------------------
 4304|      0|			goto yy281;
 4305|      0|		}
 4306|      0|		if (yych <= '\n') goto yy286;
  ------------------
  |  Branch (4306:7): [True: 0, False: 0]
  ------------------
 4307|      0|		goto yy288;
 4308|      0|yy283:
 4309|      0|		YYDEBUG(283, *YYCURSOR);
 4310|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4311|      0|		YYFILL(2);
  ------------------
  |  |   46|      0|#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
  |  |  ------------------
  |  |  |  |   48|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (46:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4312|      0|		yych = *YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4313|      0|yy284:
 4314|      0|		YYDEBUG(284, *YYCURSOR);
 4315|      0|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (4315:7): [True: 0, False: 0]
  ------------------
 4316|      0|			goto yy283;
 4317|      0|		}
 4318|      0|		if (yych <= '\f') {
  ------------------
  |  Branch (4318:7): [True: 0, False: 0]
  ------------------
 4319|      0|			if (yych <= 0x08) goto yy285;
  ------------------
  |  Branch (4319:8): [True: 0, False: 0]
  ------------------
 4320|      0|			if (yych <= '\n') goto yy278;
  ------------------
  |  Branch (4320:8): [True: 0, False: 0]
  ------------------
 4321|      0|		} else {
 4322|      0|			if (yych <= '\r') goto yy280;
  ------------------
  |  Branch (4322:8): [True: 0, False: 0]
  ------------------
 4323|      0|			if (yych == ';') goto yy281;
  ------------------
  |  Branch (4323:8): [True: 0, False: 0]
  ------------------
 4324|      0|		}
 4325|      0|yy285:
 4326|      0|		YYDEBUG(285, *YYCURSOR);
 4327|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4328|      0|#line 664 "Zend/zend_ini_scanner.l"
 4329|      0|		{
 4330|       |	/* eat whitespace */
 4331|      0|	goto restart;
 4332|      0|}
 4333|      0|#line 4334 "Zend/zend_ini_scanner.c"
 4334|      0|yy286:
 4335|      0|		YYDEBUG(286, *YYCURSOR);
 4336|      0|		++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4337|      0|yy287:
 4338|      0|		YYDEBUG(287, *YYCURSOR);
 4339|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   60|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4340|      0|#line 674 "Zend/zend_ini_scanner.l"
 4341|      0|		{ /* Comment */
 4342|      0|	BEGIN(INITIAL);
  ------------------
  |  |   57|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4343|      0|	SCNG(lineno)++;
  ------------------
  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
 4344|      0|	return END_OF_LINE;
 4345|      0|}
 4346|      0|#line 4347 "Zend/zend_ini_scanner.c"
 4347|      0|yy288:
 4348|      0|		YYDEBUG(288, *YYCURSOR);
 4349|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   47|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4350|      0|		if (yych == '\n') goto yy286;
  ------------------
  |  Branch (4350:7): [True: 0, False: 0]
  ------------------
 4351|      0|		goto yy287;
 4352|      0|	}
 4353|      0|}
 4354|      0|#line 689 "Zend/zend_ini_scanner.l"
 4355|       |
 4356|      0|}
zend_ini_scanner.c:init_ini_scanner:
  200|  9.38k|{
  201|       |	/* Sanity check */
  202|  9.38k|	if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   27|  18.7k|#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
  ------------------
              	if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   28|  9.90k|#define ZEND_INI_SCANNER_RAW    1 /* Raw mode. Option values are not parsed */
  ------------------
              	if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) {
  ------------------
  |  |   29|    521|#define ZEND_INI_SCANNER_TYPED  2 /* Typed mode. */
  ------------------
  |  Branch (202:6): [True: 523, False: 8.85k]
  |  Branch (202:49): [True: 521, False: 2]
  |  Branch (202:89): [True: 1, False: 520]
  ------------------
  203|      1|		zend_error(E_WARNING, "Invalid scanner mode");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  204|      1|		return FAILURE;
  205|      1|	}
  206|       |
  207|  9.38k|	SCNG(lineno) = 1;
  ------------------
  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  208|  9.38k|	SCNG(scanner_mode) = scanner_mode;
  ------------------
  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  209|  9.38k|	SCNG(yy_in) = fh;
  ------------------
  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  210|       |
  211|  9.38k|	if (fh != NULL) {
  ------------------
  |  Branch (211:6): [True: 0, False: 9.38k]
  ------------------
  212|      0|		ini_filename = zend_string_copy(fh->filename);
  ------------------
  |  |  196|      0|#define ini_filename SCNG(filename)
  |  |  ------------------
  |  |  |  |  106|      0|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|      0|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|  9.38k|	} else {
  214|  9.38k|		ini_filename = NULL;
  ------------------
  |  |  196|  9.38k|#define ini_filename SCNG(filename)
  |  |  ------------------
  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|  9.38k|	}
  216|       |
  217|  9.38k|	zend_stack_init(&SCNG(state_stack), sizeof(int));
  ------------------
  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  218|  9.38k|	BEGIN(INITIAL);
  ------------------
  |  |   57|  9.38k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   52|  9.38k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|       |
  220|  9.38k|	return SUCCESS;
  221|  9.38k|}
zend_ini_scanner.c:yy_scan_buffer:
  190|  9.38k|{
  191|  9.38k|	YYCURSOR = (const YYCTYPE*)str;
  ------------------
  |  |   47|  9.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|  9.38k|	SCNG(yy_start) = YYCURSOR;
  ------------------
  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
              	SCNG(yy_start) = YYCURSOR;
  ------------------
  |  |   47|  9.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|  9.38k|	YYLIMIT  = YYCURSOR + len;
  ------------------
  |  |   48|  9.38k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	YYLIMIT  = YYCURSOR + len;
  ------------------
  |  |   47|  9.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |  106|  9.38k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  9.38k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|  9.38k|}
zend_ini_scanner.c:zend_ini_copy_typed_value:
  158|    546|{
  159|    546|	switch (type) {
  160|      2|		case BOOL_FALSE:
  ------------------
  |  Branch (160:3): [True: 2, False: 544]
  ------------------
  161|     12|		case BOOL_TRUE:
  ------------------
  |  Branch (161:3): [True: 10, False: 536]
  ------------------
  162|     12|			ZVAL_BOOL(retval, type == BOOL_TRUE);
  ------------------
  |  | 1071|     12|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     12|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     12|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|     10|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     14|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 10, False: 2]
  |  |  ------------------
  |  | 1074|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
  163|     12|			break;
  164|       |
  165|      3|		case NULL_NULL:
  ------------------
  |  Branch (165:3): [True: 3, False: 543]
  ------------------
  166|      3|			ZVAL_NULL(retval);
  ------------------
  |  | 1059|      3|#define ZVAL_NULL(z) do {				\
  |  | 1060|      3|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  167|      3|			break;
  168|       |
  169|    531|		default:
  ------------------
  |  Branch (169:3): [True: 531, False: 15]
  ------------------
  170|    531|			zend_ini_copy_value(retval, str, len);
  ------------------
  |  |  143|    531|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  ------------------
  |  |  |  | 1105|    531|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|    531|		zval *__z = (z);						\
  |  |  |  | 1107|    531|		zend_string *__s = (s);					\
  |  |  |  | 1108|    531|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|    531|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|    531|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|    531|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    531|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    531|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|    531|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|    531|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|    531|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|    531|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|    531|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 531]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|    546|	}
  172|    546|}
zend_ini_scanner.c:_yy_push_state:
  175|  37.9k|{
  176|  37.9k|	zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION());
  ------------------
  |  |  106|  37.9k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  37.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
              	zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION());
  ------------------
  |  |   51|  37.9k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |  106|  37.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  37.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|  37.9k|	YYSETCONDITION(new_state);
  ------------------
  |  |   52|  37.9k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  ------------------
  |  |  |  |  106|  37.9k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  37.9k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|  37.9k|}
zend_ini_scanner.c:zend_ini_escape_string:
  285|  30.6k|{
  286|  30.6k|	char *s, *t;
  287|  30.6k|	char *end;
  288|       |
  289|  30.6k|	zend_ini_copy_value(lval, str, len);
  ------------------
  |  |  143|  30.6k|	ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
  |  |  ------------------
  |  |  |  | 1105|  30.6k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|  30.6k|		zval *__z = (z);						\
  |  |  |  | 1107|  30.6k|		zend_string *__s = (s);					\
  |  |  |  | 1108|  30.6k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  30.6k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  30.6k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|  30.6k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  30.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  30.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|  30.6k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  30.6k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  30.6k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|  30.6k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|  30.6k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 30.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  290|       |
  291|       |	/* convert escape sequences */
  292|  30.6k|	s = t = Z_STRVAL_P(lval);
  ------------------
  |  |  985|  30.6k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  30.6k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  30.6k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  293|  30.6k|	end = s + Z_STRLEN_P(lval);
  ------------------
  |  |  988|  30.6k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  30.6k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  30.6k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|       |
  295|   723k|	while (s < end) {
  ------------------
  |  Branch (295:9): [True: 693k, False: 30.6k]
  ------------------
  296|   693k|		if (*s == '\\') {
  ------------------
  |  Branch (296:7): [True: 6.76k, False: 686k]
  ------------------
  297|  6.76k|			s++;
  298|  6.76k|			if (s >= end) {
  ------------------
  |  Branch (298:8): [True: 0, False: 6.76k]
  ------------------
  299|      0|				*t++ = '\\';
  300|      0|				continue;
  301|      0|			}
  302|  6.76k|			switch (*s) {
  303|      0|				case '"':
  ------------------
  |  Branch (303:5): [True: 0, False: 6.76k]
  ------------------
  304|      0|					if (*s != quote_type) {
  ------------------
  |  Branch (304:10): [True: 0, False: 0]
  ------------------
  305|      0|						*t++ = '\\';
  306|      0|						*t++ = *s;
  307|      0|						break;
  308|      0|					}
  309|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  310|    264|				case '\\':
  ------------------
  |  Branch (310:5): [True: 264, False: 6.50k]
  ------------------
  311|    264|				case '$':
  ------------------
  |  Branch (311:5): [True: 0, False: 6.76k]
  ------------------
  312|    264|					*t++ = *s;
  313|    264|					Z_STRLEN_P(lval)--;
  ------------------
  |  |  988|    264|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    264|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    264|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|    264|					break;
  315|  6.50k|				default:
  ------------------
  |  Branch (315:5): [True: 6.50k, False: 264]
  ------------------
  316|  6.50k|					*t++ = '\\';
  317|  6.50k|					*t++ = *s;
  318|  6.50k|					break;
  319|  6.76k|			}
  320|   686k|		} else {
  321|   686k|			*t++ = *s;
  322|   686k|		}
  323|   693k|		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
  ------------------
  |  Branch (323:7): [True: 18.4k, False: 674k]
  |  Branch (323:22): [True: 2.76k, False: 672k]
  |  Branch (323:36): [True: 2.76k, False: 0]
  ------------------
  324|  21.1k|			SCNG(lineno)++;
  ------------------
  |  |  106|  21.1k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  21.1k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  325|  21.1k|		}
  326|   693k|		s++;
  327|   693k|	}
  328|  30.6k|	*t = 0;
  329|  30.6k|}
zend_ini_scanner.c:yy_pop_state:
  183|  36.5k|{
  184|  36.5k|	int *stack_state = zend_stack_top(&SCNG(state_stack));
  ------------------
  |  |  106|  36.5k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  36.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  185|  36.5k|	YYSETCONDITION(*stack_state);
  ------------------
  |  |   52|  36.5k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  ------------------
  |  |  |  |  106|  36.5k|#define SCNG	INI_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   66|  36.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|  36.5k|	zend_stack_del_top(&SCNG(state_stack));
  ------------------
  |  |  106|  36.5k|#define SCNG	INI_SCNG
  |  |  ------------------
  |  |  |  |   66|  36.5k|# define INI_SCNG(v) (ini_scanner_globals.v)
  |  |  ------------------
  ------------------
  187|  36.5k|}

zend_call_method:
   39|      4|{
   40|      4|	zend_function *fn;
   41|      4|	zend_class_entry *called_scope;
   42|      4|	zval params[2];
   43|       |
   44|      4|	if (param_count > 0) {
  ------------------
  |  Branch (44:6): [True: 1, False: 3]
  ------------------
   45|      1|		ZVAL_COPY_VALUE(&params[0], arg1);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
   46|      1|	}
   47|      4|	if (param_count > 1) {
  ------------------
  |  Branch (47:6): [True: 0, False: 4]
  ------------------
   48|      0|		ZVAL_COPY_VALUE(&params[1], arg2);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   49|      0|	}
   50|       |
   51|      4|	if (!obj_ce) {
  ------------------
  |  Branch (51:6): [True: 0, False: 4]
  ------------------
   52|      0|		obj_ce = object ? object->ce : NULL;
  ------------------
  |  Branch (52:12): [True: 0, False: 0]
  ------------------
   53|      0|	}
   54|      4|	if (!fn_proxy || !*fn_proxy) {
  ------------------
  |  Branch (54:6): [True: 2, False: 2]
  |  Branch (54:19): [True: 0, False: 2]
  ------------------
   55|      2|		if (EXPECTED(obj_ce)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   56|      2|			fn = zend_hash_str_find_ptr_lc(
   57|      2|				&obj_ce->function_table, function_name, function_name_len);
   58|      2|			if (UNEXPECTED(fn == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   59|       |				/* error at c-level */
   60|      0|				zend_error_noreturn(E_CORE_ERROR, "Couldn't find implementation for method %s::%s", ZSTR_VAL(obj_ce->name), function_name);
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
              				zend_error_noreturn(E_CORE_ERROR, "Couldn't find implementation for method %s::%s", ZSTR_VAL(obj_ce->name), function_name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   61|      0|			}
   62|      2|		} else {
   63|      0|			fn = zend_fetch_function_str(function_name, function_name_len);
   64|      0|			if (UNEXPECTED(fn == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   65|       |				/* error at c-level */
   66|      0|				zend_error_noreturn(E_CORE_ERROR, "Couldn't find implementation for function %s", function_name);
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
   67|      0|			}
   68|      0|		}
   69|      2|		if (fn_proxy) {
  ------------------
  |  Branch (69:7): [True: 0, False: 2]
  ------------------
   70|      0|			*fn_proxy = fn;
   71|      0|		}
   72|      2|	} else {
   73|      2|		fn = *fn_proxy;
   74|      2|	}
   75|       |
   76|      4|	if (object) {
  ------------------
  |  Branch (76:6): [True: 4, False: 0]
  ------------------
   77|      4|		called_scope = object->ce;
   78|      4|	} else {
   79|      0|		called_scope = obj_ce;
   80|      0|	}
   81|       |
   82|       |	zend_call_known_function(fn, object, called_scope, retval_ptr, param_count, params, NULL);
   83|      4|	return retval_ptr;
   84|      4|}
zend_user_it_invalidate_current:
   99|     24|{
  100|     24|	zend_user_iterator *iter = (zend_user_iterator*)_iter;
  101|       |
  102|     24|	if (!Z_ISUNDEF(iter->value)) {
  ------------------
  |  |  966|     24|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|     24|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (102:6): [True: 7, False: 17]
  ------------------
  103|      7|		zval_ptr_dtor(&iter->value);
  104|      7|		ZVAL_UNDEF(&iter->value);
  ------------------
  |  | 1055|      7|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      7|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  105|      7|	}
  106|     24|}
zend_user_it_valid:
  122|     15|{
  123|     15|	if (_iter) {
  ------------------
  |  Branch (123:6): [True: 15, False: 0]
  ------------------
  124|     15|		zend_user_iterator *iter = (zend_user_iterator*)_iter;
  125|     15|		zval *object = &iter->it.data;
  126|     15|		zval more;
  127|       |
  128|     15|		zend_call_known_instance_method_with_0_params(iter->ce->iterator_funcs_ptr->zf_valid, Z_OBJ_P(object), &more);
  ------------------
  |  | 1000|     15|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     15|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  129|     15|		bool result = i_zend_is_true(&more);
  130|     15|		zval_ptr_dtor(&more);
  131|     15|		return result ? SUCCESS : FAILURE;
  ------------------
  |  Branch (131:10): [True: 7, False: 8]
  ------------------
  132|     15|	}
  133|      0|	return FAILURE;
  134|     15|}
zend_user_it_get_current_data:
  139|      7|{
  140|      7|	zend_user_iterator *iter = (zend_user_iterator*)_iter;
  141|      7|	zval *object = &iter->it.data;
  142|       |
  143|      7|	if (Z_ISUNDEF(iter->value)) {
  ------------------
  |  |  966|      7|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 7, False: 0]
  |  |  ------------------
  ------------------
  144|      7|		zend_call_known_instance_method_with_0_params(iter->ce->iterator_funcs_ptr->zf_current, Z_OBJ_P(object), &iter->value);
  ------------------
  |  | 1000|      7|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  145|      7|	}
  146|      7|	return &iter->value;
  147|      7|}
zend_user_it_get_current_key:
  152|      3|{
  153|      3|	zend_user_iterator *iter = (zend_user_iterator*)_iter;
  154|      3|	zval *object = &iter->it.data;
  155|      3|	zend_call_known_instance_method_with_0_params(iter->ce->iterator_funcs_ptr->zf_key, Z_OBJ_P(object), key);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  156|      3|	if (UNEXPECTED(Z_ISREF_P(key))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  157|      3|		zend_unwrap_reference(key);
  158|      3|	}
  159|      3|}
zend_user_it_move_forward:
  164|      6|{
  165|      6|	zend_user_iterator *iter = (zend_user_iterator*)_iter;
  166|      6|	zval *object = &iter->it.data;
  167|       |
  168|      6|	zend_user_it_invalidate_current(_iter);
  169|      6|	zend_call_known_instance_method_with_0_params(iter->ce->iterator_funcs_ptr->zf_next, Z_OBJ_P(object), NULL);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  170|      6|}
zend_user_it_rewind:
  175|      9|{
  176|      9|	zend_user_iterator *iter = (zend_user_iterator*)_iter;
  177|      9|	zval *object = &iter->it.data;
  178|       |
  179|      9|	zend_user_it_invalidate_current(_iter);
  180|      9|	zend_call_known_instance_method_with_0_params(iter->ce->iterator_funcs_ptr->zf_rewind, Z_OBJ_P(object), NULL);
  ------------------
  |  | 1000|      9|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  181|      9|}
zend_register_interfaces:
  650|      2|{
  651|      2|	zend_ce_traversable = register_class_Traversable();
  652|      2|	zend_ce_traversable->interface_gets_implemented = zend_implement_traversable;
  653|       |
  654|      2|	zend_ce_aggregate = register_class_IteratorAggregate(zend_ce_traversable);
  655|      2|	zend_ce_aggregate->interface_gets_implemented = zend_implement_aggregate;
  656|       |
  657|      2|	zend_ce_iterator = register_class_Iterator(zend_ce_traversable);
  658|      2|	zend_ce_iterator->interface_gets_implemented = zend_implement_iterator;
  659|       |
  660|      2|	zend_ce_serializable = register_class_Serializable();
  661|      2|	zend_ce_serializable->interface_gets_implemented = zend_implement_serializable;
  662|       |
  663|      2|	zend_ce_arrayaccess = register_class_ArrayAccess();
  664|      2|	zend_ce_arrayaccess->interface_gets_implemented = zend_implement_arrayaccess;
  665|       |
  666|      2|	zend_ce_countable = register_class_Countable();
  667|       |
  668|      2|	zend_ce_stringable = register_class_Stringable();
  669|       |
  670|      2|	zend_ce_internal_iterator = register_class_InternalIterator(zend_ce_iterator);
  671|      2|	zend_ce_internal_iterator->create_object = zend_internal_iterator_create;
  672|      2|	zend_ce_internal_iterator->default_object_handlers = &zend_internal_iterator_handlers;
  673|       |
  674|      2|	memcpy(&zend_internal_iterator_handlers, zend_get_std_object_handlers(),
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  675|      2|		sizeof(zend_object_handlers));
  676|       |	zend_internal_iterator_handlers.clone_obj = NULL;
  677|      2|	zend_internal_iterator_handlers.free_obj = zend_internal_iterator_free;
  678|      2|}
zend_interfaces.c:zend_internal_iterator_create:
  494|      3|static zend_object *zend_internal_iterator_create(zend_class_entry *ce) {
  495|      3|	zend_internal_iterator *intern = emalloc(sizeof(zend_internal_iterator));
  ------------------
  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|      3|	zend_object_std_init(&intern->std, ce);
  497|      3|	intern->iter = NULL;
  498|       |	intern->rewind_called = false;
  499|      3|	return &intern->std;
  500|      3|}
zend_interfaces.c:zend_implement_traversable:
  260|     93|{
  261|       |	/* Abstract class can implement Traversable only, in which case the extending class must
  262|       |	 * implement Iterator or IteratorAggregate. */
  263|     93|	if (class_type->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) {
  ------------------
  |  |  234|     93|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (263:6): [True: 9, False: 84]
  ------------------
  264|      9|		return SUCCESS;
  265|      9|	}
  266|       |
  267|       |	/* Check that class_type implements at least one of 'IteratorAggregate' or 'Iterator' */
  268|     84|	if (class_type->num_interfaces) {
  ------------------
  |  Branch (268:6): [True: 84, False: 0]
  ------------------
  269|     84|		ZEND_ASSERT(class_type->ce_flags & ZEND_ACC_RESOLVED_INTERFACES);
  ------------------
  |  |  112|     84|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (269:3): [True: 0, False: 84]
  |  Branch (269:3): [True: 84, False: 0]
  ------------------
  270|    206|		for (uint32_t i = 0; i < class_type->num_interfaces; i++) {
  ------------------
  |  Branch (270:24): [True: 204, False: 2]
  ------------------
  271|    204|			if (class_type->interfaces[i] == zend_ce_aggregate || class_type->interfaces[i] == zend_ce_iterator) {
  ------------------
  |  Branch (271:8): [True: 10, False: 194]
  |  Branch (271:58): [True: 72, False: 122]
  ------------------
  272|     82|				return SUCCESS;
  273|     82|			}
  274|    204|		}
  275|     84|	}
  276|      2|	zend_error_noreturn(E_CORE_ERROR, "%s %s must implement interface %s as part of either %s or %s",
  ------------------
  |  |   26|      2|#define E_CORE_ERROR		(1<<4L)
  ------------------
  277|      2|		zend_get_object_type_uc(class_type),
  278|      2|		ZSTR_VAL(class_type->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  279|      2|		ZSTR_VAL(zend_ce_traversable->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  280|      2|		ZSTR_VAL(zend_ce_iterator->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  281|      2|		ZSTR_VAL(zend_ce_aggregate->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  282|      0|	return FAILURE;
  283|     84|}
zend_interfaces.c:zend_implement_aggregate:
  288|     11|{
  289|     11|	if (zend_class_implements_interface(class_type, zend_ce_iterator)) {
  ------------------
  |  Branch (289:6): [True: 1, False: 10]
  ------------------
  290|      1|		zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
  291|      1|			"Class %s cannot implement both Iterator and IteratorAggregate at the same time",
  292|      1|			ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  293|      1|	}
  294|       |
  295|       |	/* Always initialize iterator_funcs_ptr. */
  296|     10|	ZEND_ASSERT(!class_type->iterator_funcs_ptr && "Iterator funcs already set?");
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (296:2): [True: 0, False: 10]
  |  Branch (296:2): [True: 0, False: 0]
  |  Branch (296:2): [True: 10, False: 0]
  |  Branch (296:2): [True: 10, False: 0]
  ------------------
  297|     10|	zend_class_iterator_funcs *funcs_ptr = class_type->type == ZEND_INTERNAL_CLASS
  ------------------
  |  Branch (297:41): [True: 8, False: 2]
  ------------------
  298|     10|		? pemalloc(sizeof(zend_class_iterator_funcs), 1)
  ------------------
  |  |  188|      8|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 8, Folded]
  |  |  ------------------
  ------------------
  299|     10|		: zend_arena_alloc(&CG(arena), sizeof(zend_class_iterator_funcs));
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  300|     10|	class_type->iterator_funcs_ptr = funcs_ptr;
  301|       |
  302|     10|	memset(funcs_ptr, 0, sizeof(zend_class_iterator_funcs));
  303|     10|	funcs_ptr->zf_new_iterator = zend_hash_str_find_ptr(
  304|     10|		&class_type->function_table, "getiterator", sizeof("getiterator") - 1);
  305|       |
  306|     10|	if (class_type->get_iterator
  ------------------
  |  Branch (306:6): [True: 1, False: 9]
  ------------------
  307|      1|	 && class_type->get_iterator != zend_user_it_get_new_iterator
  ------------------
  |  Branch (307:6): [True: 0, False: 1]
  ------------------
  308|      0|	 && class_type->get_iterator != zend_hooked_object_get_iterator) {
  ------------------
  |  Branch (308:6): [True: 0, False: 0]
  ------------------
  309|       |		/* get_iterator was explicitly assigned for an internal class. */
  310|      0|		if (!class_type->parent || class_type->parent->get_iterator != class_type->get_iterator) {
  ------------------
  |  Branch (310:7): [True: 0, False: 0]
  |  Branch (310:30): [True: 0, False: 0]
  ------------------
  311|      0|			ZEND_ASSERT(class_type->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (311:4): [True: 0, False: 0]
  |  Branch (311:4): [True: 0, False: 0]
  ------------------
  312|      0|			return SUCCESS;
  313|      0|		}
  314|       |
  315|       |		/* The getIterator() method has not been overwritten, use inherited get_iterator(). */
  316|      0|		if (funcs_ptr->zf_new_iterator->common.scope != class_type) {
  ------------------
  |  Branch (316:7): [True: 0, False: 0]
  ------------------
  317|      0|			return SUCCESS;
  318|      0|		}
  319|       |
  320|       |		/* getIterator() has been overwritten, switch to zend_user_it_get_new_iterator. */
  321|      0|	}
  322|       |
  323|     10|	class_type->get_iterator = zend_user_it_get_new_iterator;
  324|     10|	return SUCCESS;
  325|     10|}
zend_interfaces.c:zend_implement_iterator:
  330|     79|{
  331|     79|	if (zend_class_implements_interface(class_type, zend_ce_aggregate)) {
  ------------------
  |  Branch (331:6): [True: 1, False: 78]
  ------------------
  332|      1|		zend_error_noreturn(E_ERROR,
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
  333|      1|			"Class %s cannot implement both Iterator and IteratorAggregate at the same time",
  334|      1|			ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  335|      1|	}
  336|       |
  337|     78|	ZEND_ASSERT(!class_type->iterator_funcs_ptr && "Iterator funcs already set?");
  ------------------
  |  |  112|     78|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (337:2): [True: 0, False: 78]
  |  Branch (337:2): [True: 0, False: 0]
  |  Branch (337:2): [True: 78, False: 0]
  |  Branch (337:2): [True: 78, False: 0]
  ------------------
  338|     78|	zend_class_iterator_funcs *funcs_ptr = class_type->type == ZEND_INTERNAL_CLASS
  ------------------
  |  Branch (338:41): [True: 72, False: 6]
  ------------------
  339|     78|		? pemalloc(sizeof(zend_class_iterator_funcs), 1)
  ------------------
  |  |  188|     72|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     72|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     72|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     72|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     72|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 72, Folded]
  |  |  ------------------
  ------------------
  340|     78|		: zend_arena_alloc(&CG(arena), sizeof(zend_class_iterator_funcs));
  ------------------
  |  |   35|      6|# define CG(v) (compiler_globals.v)
  ------------------
  341|     78|	class_type->iterator_funcs_ptr = funcs_ptr;
  342|       |
  343|     78|	memset(funcs_ptr, 0, sizeof(zend_class_iterator_funcs));
  344|     78|	funcs_ptr->zf_rewind = zend_hash_str_find_ptr(
  345|     78|		&class_type->function_table, "rewind", sizeof("rewind") - 1);
  346|     78|	funcs_ptr->zf_valid = zend_hash_str_find_ptr(
  347|     78|		&class_type->function_table, "valid", sizeof("valid") - 1);
  348|     78|	funcs_ptr->zf_key = zend_hash_find_ptr(
  349|     78|		&class_type->function_table, ZSTR_KNOWN(ZEND_STR_KEY));
  350|     78|	funcs_ptr->zf_current = zend_hash_str_find_ptr(
  351|     78|		&class_type->function_table, "current", sizeof("current") - 1);
  352|     78|	funcs_ptr->zf_next = zend_hash_str_find_ptr(
  353|     78|		&class_type->function_table, "next", sizeof("next") - 1);
  354|       |
  355|     78|	if (class_type->get_iterator
  ------------------
  |  Branch (355:6): [True: 52, False: 26]
  ------------------
  356|     52|	 && class_type->get_iterator != zend_user_it_get_iterator
  ------------------
  |  Branch (356:6): [True: 23, False: 29]
  ------------------
  357|     23|	 && class_type->get_iterator != zend_hooked_object_get_iterator) {
  ------------------
  |  Branch (357:6): [True: 23, False: 0]
  ------------------
  358|     23|		if (!class_type->parent || class_type->parent->get_iterator != class_type->get_iterator) {
  ------------------
  |  Branch (358:7): [True: 0, False: 23]
  |  Branch (358:30): [True: 0, False: 23]
  ------------------
  359|       |			/* get_iterator was explicitly assigned for an internal class. */
  360|      0|			ZEND_ASSERT(class_type->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (360:4): [True: 0, False: 0]
  |  Branch (360:4): [True: 0, False: 0]
  ------------------
  361|      0|			return SUCCESS;
  362|      0|		}
  363|       |
  364|       |		/* None of the Iterator methods have been overwritten, use inherited get_iterator(). */
  365|     23|		if (funcs_ptr->zf_rewind->common.scope != class_type &&
  ------------------
  |  Branch (365:7): [True: 21, False: 2]
  ------------------
  366|     21|				funcs_ptr->zf_valid->common.scope != class_type &&
  ------------------
  |  Branch (366:5): [True: 21, False: 0]
  ------------------
  367|     21|				funcs_ptr->zf_key->common.scope != class_type &&
  ------------------
  |  Branch (367:5): [True: 15, False: 6]
  ------------------
  368|     15|				funcs_ptr->zf_current->common.scope != class_type &&
  ------------------
  |  Branch (368:5): [True: 15, False: 0]
  ------------------
  369|     15|				funcs_ptr->zf_next->common.scope != class_type) {
  ------------------
  |  Branch (369:5): [True: 15, False: 0]
  ------------------
  370|     15|			return SUCCESS;
  371|     15|		}
  372|       |
  373|       |		/* One of the Iterator methods has been overwritten,
  374|       |		 * switch to zend_user_it_get_iterator. */
  375|     23|	}
  376|       |
  377|     63|	class_type->get_iterator = zend_user_it_get_iterator;
  378|     63|	return SUCCESS;
  379|     78|}
zend_interfaces.c:zend_user_it_get_iterator:
  213|      9|{
  214|      9|	zend_user_iterator *iterator;
  215|       |
  216|      9|	if (by_ref) {
  ------------------
  |  Branch (216:6): [True: 0, False: 9]
  ------------------
  217|      0|		zend_throw_error(NULL, "An iterator cannot be used with foreach by reference");
  218|      0|		return NULL;
  219|      0|	}
  220|       |
  221|      9|	iterator = emalloc(sizeof(zend_user_iterator));
  ------------------
  |  |  150|      9|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|       |
  223|      9|	zend_iterator_init((zend_object_iterator*)iterator);
  224|       |
  225|      9|	ZVAL_OBJ_COPY(&iterator->it.data, Z_OBJ_P(object));
  ------------------
  |  | 1146|      9|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      9|		zval *__z = (z);						\
  |  | 1148|      9|		zend_object *__o = (o);					\
  |  | 1149|      9|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      9|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      9|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      9|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      9|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      9|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      9|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
  226|      9|	iterator->it.funcs = &zend_interface_iterator_funcs_iterator;
  227|      9|	iterator->ce = Z_OBJCE_P(object);
  ------------------
  |  | 1012|      9|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      9|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|      9|	ZVAL_UNDEF(&iterator->value);
  ------------------
  |  | 1055|      9|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      9|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      9|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
  229|      9|	return (zend_object_iterator*)iterator;
  230|      9|}
zend_interfaces.c:zend_user_it_dtor:
  111|      9|{
  112|      9|	zend_user_iterator *iter = (zend_user_iterator*)_iter;
  113|      9|	zval *object = &iter->it.data;
  114|       |
  115|      9|	zend_user_it_invalidate_current(_iter);
  116|      9|	zval_ptr_dtor(object);
  117|      9|}
zend_interfaces.c:zend_implement_serializable:
  464|     21|{
  465|     21|	if (class_type->parent
  ------------------
  |  Branch (465:6): [True: 13, False: 8]
  ------------------
  466|     13|		&& (class_type->parent->serialize || class_type->parent->unserialize)
  ------------------
  |  Branch (466:7): [True: 13, False: 0]
  |  Branch (466:40): [True: 0, False: 0]
  ------------------
  467|     13|		&& !zend_class_implements_interface(class_type->parent, zend_ce_serializable)) {
  ------------------
  |  Branch (467:6): [True: 0, False: 13]
  ------------------
  468|      0|		return FAILURE;
  469|      0|	}
  470|     21|	if (!class_type->serialize) {
  ------------------
  |  Branch (470:6): [True: 8, False: 13]
  ------------------
  471|      8|		class_type->serialize = zend_user_serialize;
  472|      8|	}
  473|     21|	if (!class_type->unserialize) {
  ------------------
  |  Branch (473:6): [True: 8, False: 13]
  ------------------
  474|      8|		class_type->unserialize = zend_user_unserialize;
  475|      8|	}
  476|     21|	if (!(class_type->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)
  ------------------
  |  |  234|     21|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (476:6): [True: 21, False: 0]
  ------------------
  477|     21|			&& (!class_type->__serialize || !class_type->__unserialize)) {
  ------------------
  |  Branch (477:8): [True: 0, False: 21]
  |  Branch (477:36): [True: 0, False: 21]
  ------------------
  478|      0|		zend_error(E_DEPRECATED, "%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)", ZSTR_VAL(class_type->name));
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
              		zend_error(E_DEPRECATED, "%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)", ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  479|      0|		if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  480|      0|			zend_exception_uncaught_error(
  481|      0|				"During inheritance of %s, while implementing Serializable", ZSTR_VAL(class_type->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  482|      0|		}
  483|      0|	}
  484|     21|	return SUCCESS;
  485|     21|}
zend_interfaces.c:zend_implement_arrayaccess:
  384|     29|{
  385|     29|	ZEND_ASSERT(!class_type->arrayaccess_funcs_ptr && "ArrayAccess funcs already set?");
  ------------------
  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (385:2): [True: 0, False: 29]
  |  Branch (385:2): [True: 0, False: 0]
  |  Branch (385:2): [True: 29, False: 0]
  |  Branch (385:2): [True: 29, False: 0]
  ------------------
  386|     29|	zend_class_arrayaccess_funcs *funcs_ptr = class_type->type == ZEND_INTERNAL_CLASS
  ------------------
  |  Branch (386:44): [True: 22, False: 7]
  ------------------
  387|     29|		? pemalloc(sizeof(zend_class_arrayaccess_funcs), 1)
  ------------------
  |  |  188|     22|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 22, Folded]
  |  |  ------------------
  ------------------
  388|     29|		: zend_arena_alloc(&CG(arena), sizeof(zend_class_arrayaccess_funcs));
  ------------------
  |  |   35|      7|# define CG(v) (compiler_globals.v)
  ------------------
  389|     29|	class_type->arrayaccess_funcs_ptr = funcs_ptr;
  390|       |
  391|     29|	funcs_ptr->zf_offsetget = zend_hash_str_find_ptr(
  392|     29|		&class_type->function_table, "offsetget", sizeof("offsetget") - 1);
  393|     29|	funcs_ptr->zf_offsetexists = zend_hash_str_find_ptr(
  394|     29|		&class_type->function_table, "offsetexists", sizeof("offsetexists") - 1);
  395|     29|	funcs_ptr->zf_offsetset = zend_hash_str_find_ptr(
  396|     29|		&class_type->function_table, "offsetset", sizeof("offsetset") - 1);
  397|     29|	funcs_ptr->zf_offsetunset = zend_hash_str_find_ptr(
  398|     29|		&class_type->function_table, "offsetunset", sizeof("offsetunset") - 1);
  399|       |
  400|     29|	return SUCCESS;
  401|     29|}
zend_interfaces.c:zend_internal_iterator_free:
  518|      3|static void zend_internal_iterator_free(zend_object *obj) {
  519|      3|	zend_internal_iterator *intern = (zend_internal_iterator *) obj;
  520|      3|	if (intern->iter) {
  ------------------
  |  Branch (520:6): [True: 0, False: 3]
  ------------------
  521|      0|		zend_iterator_dtor(intern->iter);
  522|      0|	}
  523|      3|	zend_object_std_dtor(&intern->std);
  524|      3|}

spl_iterators.c:zend_call_method_with_0_params:
   44|      3|{
   45|      3|	return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 0, NULL, NULL);
   46|      3|}
spl_iterators.c:zend_call_method_with_1_params:
   50|      1|{
   51|       |	return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 1, arg1, NULL);
   52|      1|}

zend_interfaces.c:register_class_Traversable:
  121|      2|{
  122|      2|	zend_class_entry ce, *class_entry;
  123|       |
  124|      2|	INIT_CLASS_ENTRY(ce, "Traversable", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  125|      2|	class_entry = zend_register_internal_interface(&ce);
  126|       |
  127|      2|	return class_entry;
  128|      2|}
zend_interfaces.c:register_class_IteratorAggregate:
  131|      2|{
  132|      2|	zend_class_entry ce, *class_entry;
  133|       |
  134|      2|	INIT_CLASS_ENTRY(ce, "IteratorAggregate", class_IteratorAggregate_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  135|      2|	class_entry = zend_register_internal_interface(&ce);
  136|      2|	zend_class_implements(class_entry, 1, class_entry_Traversable);
  137|       |
  138|      2|	return class_entry;
  139|      2|}
zend_interfaces.c:register_class_Iterator:
  142|      2|{
  143|      2|	zend_class_entry ce, *class_entry;
  144|       |
  145|      2|	INIT_CLASS_ENTRY(ce, "Iterator", class_Iterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  146|      2|	class_entry = zend_register_internal_interface(&ce);
  147|      2|	zend_class_implements(class_entry, 1, class_entry_Traversable);
  148|       |
  149|      2|	return class_entry;
  150|      2|}
zend_interfaces.c:register_class_Serializable:
  163|      2|{
  164|      2|	zend_class_entry ce, *class_entry;
  165|       |
  166|      2|	INIT_CLASS_ENTRY(ce, "Serializable", class_Serializable_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  167|      2|	class_entry = zend_register_internal_interface(&ce);
  168|       |
  169|      2|	return class_entry;
  170|      2|}
zend_interfaces.c:register_class_ArrayAccess:
  153|      2|{
  154|      2|	zend_class_entry ce, *class_entry;
  155|       |
  156|      2|	INIT_CLASS_ENTRY(ce, "ArrayAccess", class_ArrayAccess_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  157|      2|	class_entry = zend_register_internal_interface(&ce);
  158|       |
  159|      2|	return class_entry;
  160|      2|}
zend_interfaces.c:register_class_Countable:
  173|      2|{
  174|      2|	zend_class_entry ce, *class_entry;
  175|       |
  176|      2|	INIT_CLASS_ENTRY(ce, "Countable", class_Countable_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  177|      2|	class_entry = zend_register_internal_interface(&ce);
  178|       |
  179|      2|	return class_entry;
  180|      2|}
zend_interfaces.c:register_class_Stringable:
  183|      2|{
  184|      2|	zend_class_entry ce, *class_entry;
  185|       |
  186|      2|	INIT_CLASS_ENTRY(ce, "Stringable", class_Stringable_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  187|      2|	class_entry = zend_register_internal_interface(&ce);
  188|       |
  189|      2|	return class_entry;
  190|      2|}
zend_interfaces.c:register_class_InternalIterator:
  193|      2|{
  194|      2|	zend_class_entry ce, *class_entry;
  195|       |
  196|      2|	INIT_CLASS_ENTRY(ce, "InternalIterator", class_InternalIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  197|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
  198|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
  199|       |
  200|      2|	return class_entry;
  201|      2|}

zend_register_iterator_wrapper:
   58|      2|{
   59|      2|	INIT_CLASS_ENTRY(zend_iterator_class_entry, "__iterator_wrapper", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   60|      2|	zend_iterator_class_entry.default_object_handlers = &iterator_object_handlers;
   61|      2|}
zend_iterator_init:
   85|     56|{
   86|     56|	zend_object_std_init(&iter->std, &zend_iterator_class_entry);
   87|     56|}
zend_iterator_dtor:
   90|     20|{
   91|     20|	if (GC_DELREF(&iter->std) > 0) {
  ------------------
  |  |  719|     20|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (91:6): [True: 0, False: 20]
  ------------------
   92|      0|		return;
   93|      0|	}
   94|       |
   95|     20|	zend_objects_store_del(&iter->std);
   96|     20|}
zend_iterator_unwrap:
   99|    238|{
  100|    238|	ZEND_ASSERT(Z_TYPE_P(array_ptr) == IS_OBJECT);
  ------------------
  |  |  112|    238|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (100:2): [True: 0, False: 238]
  |  Branch (100:2): [True: 238, False: 0]
  ------------------
  101|    238|	if (Z_OBJ_HT_P(array_ptr) == &iterator_object_handlers) {
  ------------------
  |  | 1003|    238|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|    238|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    238|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (101:6): [True: 210, False: 28]
  ------------------
  102|    210|		return (zend_object_iterator *)Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|    210|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    210|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  103|    210|	}
  104|     28|	return NULL;
  105|    238|}
zend_iterators.c:iter_wrapper_free:
   64|     56|{
   65|     56|	zend_object_iterator *iter = (zend_object_iterator*)object;
   66|     56|	iter->funcs->dtor(iter);
   67|     56|}
zend_iterators.c:iter_wrapper_dtor:
   70|     56|{
   71|     56|}
zend_iterators.c:iter_wrapper_get_gc:
   73|     14|static HashTable *iter_wrapper_get_gc(zend_object *object, zval **table, int *n) {
   74|     14|	zend_object_iterator *iter = (zend_object_iterator*)object;
   75|     14|	if (iter->funcs->get_gc) {
  ------------------
  |  Branch (75:6): [True: 14, False: 0]
  ------------------
   76|     14|		return iter->funcs->get_gc(iter, table, n);
   77|     14|	}
   78|       |
   79|      0|	*table = NULL;
   80|      0|	*n = 0;
   81|       |	return NULL;
   82|     14|}

zendparse:
 5026|  7.07k|{
 5027|       |/* The lookahead symbol.  */
 5028|  7.07k|int yychar;
 5029|       |
 5030|       |
 5031|       |/* The semantic value of the lookahead symbol.  */
 5032|       |/* Default value used for initialization, for pacifying older GCCs
 5033|       |   or non-GCC compilers.  */
 5034|  7.07k|YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
  ------------------
  |  |  476|  7.07k|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 5035|  7.07k|YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  ------------------
  |  |   87|  7.07k|#define YYSTYPE         ZENDSTYPE
  ------------------
              YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  ------------------
  |  |  476|  7.07k|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 5036|       |
 5037|       |    /* Number of syntax errors so far.  */
 5038|  7.07k|    int yynerrs;
 5039|       |
 5040|  7.07k|    yy_state_fast_t yystate;
 5041|       |    /* Number of tokens to shift before error messages enabled.  */
 5042|  7.07k|    int yyerrstatus;
 5043|       |
 5044|       |    /* The stacks and their tools:
 5045|       |       'yyss': related to states.
 5046|       |       'yyvs': related to semantic values.
 5047|       |
 5048|       |       Refer to the stacks through separate pointers, to allow yyoverflow
 5049|       |       to reallocate them elsewhere.  */
 5050|       |
 5051|       |    /* The state stack.  */
 5052|  7.07k|    yy_state_t yyssa[YYINITDEPTH];
 5053|  7.07k|    yy_state_t *yyss;
 5054|  7.07k|    yy_state_t *yyssp;
 5055|       |
 5056|       |    /* The semantic value stack.  */
 5057|  7.07k|    YYSTYPE yyvsa[YYINITDEPTH];
  ------------------
  |  |   87|  7.07k|#define YYSTYPE         ZENDSTYPE
  ------------------
 5058|  7.07k|    YYSTYPE *yyvs;
  ------------------
  |  |   87|  7.07k|#define YYSTYPE         ZENDSTYPE
  ------------------
 5059|  7.07k|    YYSTYPE *yyvsp;
  ------------------
  |  |   87|  7.07k|#define YYSTYPE         ZENDSTYPE
  ------------------
 5060|       |
 5061|  7.07k|    YYPTRDIFF_T yystacksize;
  ------------------
  |  |  391|  7.07k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 5062|       |
 5063|  7.07k|  int yyn;
 5064|  7.07k|  int yyresult;
 5065|       |  /* Lookahead token as an internal (translated) token number.  */
 5066|  7.07k|  int yytoken = 0;
 5067|       |  /* The variables used to return semantic value and location from the
 5068|       |     action routines.  */
 5069|  7.07k|  YYSTYPE yyval;
  ------------------
  |  |   87|  7.07k|#define YYSTYPE         ZENDSTYPE
  ------------------
 5070|       |
 5071|  7.07k|#if YYERROR_VERBOSE
 5072|       |  /* Buffer for error messages, and its allocated size.  */
 5073|  7.07k|  char yymsgbuf[128];
 5074|  7.07k|  char *yymsg = yymsgbuf;
 5075|  7.07k|  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
  ------------------
  |  |  391|  7.07k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 5076|  7.07k|#endif
 5077|       |
 5078|  7.07k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 5079|       |
 5080|       |  /* The number of symbols on the RHS of the reduced rule.
 5081|       |     Keep to zero when no symbol should be popped.  */
 5082|  7.07k|  int yylen = 0;
 5083|       |
 5084|  7.07k|  yyssp = yyss = yyssa;
 5085|  7.07k|  yyvsp = yyvs = yyvsa;
 5086|  7.07k|  yystacksize = YYINITDEPTH;
  ------------------
  |  | 3753|  7.07k|# define YYINITDEPTH 200
  ------------------
 5087|       |
 5088|  7.07k|  YYDPRINTF ((stderr, "Starting parse\n"));
 5089|       |
 5090|  7.07k|  yystate = 0;
 5091|  7.07k|  yyerrstatus = 0;
 5092|  7.07k|  yynerrs = 0;
  ------------------
  |  |   93|  7.07k|#define yynerrs         zendnerrs
  ------------------
 5093|  7.07k|  yychar = YYEMPTY; /* Cause a token to be read.  */
  ------------------
  |  | 3586|  7.07k|#define YYEMPTY         (-2)
  ------------------
 5094|  7.07k|  goto yysetstate;
 5095|       |
 5096|       |
 5097|       |/*------------------------------------------------------------.
 5098|       || yynewstate -- push a new state, which is found in yystate.  |
 5099|       |`------------------------------------------------------------*/
 5100|   446k|yynewstate:
 5101|       |  /* In all cases, when you get here, the value and location stacks
 5102|       |     have just been pushed.  So pushing a state here evens the stacks.  */
 5103|   446k|  yyssp++;
 5104|       |
 5105|       |
 5106|       |/*--------------------------------------------------------------------.
 5107|       || yysetstate -- set current state (the top of the stack) to yystate.  |
 5108|       |`--------------------------------------------------------------------*/
 5109|   453k|yysetstate:
 5110|   453k|  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 5111|   453k|  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  ------------------
  |  |  499|   453k|#define YY_ASSERT(E) ((void) (0 && (E)))
  |  |  ------------------
  |  |  |  Branch (499:31): [Folded, False: 453k]
  |  |  |  Branch (499:37): [True: 0, False: 0]
  |  |  |  Branch (499:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5112|   453k|  YY_IGNORE_USELESS_CAST_BEGIN
 5113|   453k|  *yyssp = YY_CAST (yy_state_t, yystate);
  ------------------
  |  |  101|   453k|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 5114|   453k|  YY_IGNORE_USELESS_CAST_END
 5115|       |
 5116|   453k|  if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (5116:7): [True: 0, False: 453k]
  ------------------
 5117|       |#if !defined yyoverflow && !defined YYSTACK_RELOCATE
 5118|       |    goto yyexhaustedlab;
 5119|       |#else
 5120|      0|    {
 5121|       |      /* Get the current used size of the three stacks, in elements.  */
 5122|      0|      YYPTRDIFF_T yysize = yyssp - yyss + 1;
  ------------------
  |  |  391|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 5123|       |
 5124|       |# if defined yyoverflow
 5125|       |      {
 5126|       |        /* Give user a chance to reallocate the stack.  Use copies of
 5127|       |           these so that the &'s don't force the real ones into
 5128|       |           memory.  */
 5129|       |        yy_state_t *yyss1 = yyss;
 5130|       |        YYSTYPE *yyvs1 = yyvs;
 5131|       |
 5132|       |        /* Each stack pointer address is followed by the size of the
 5133|       |           data in use in that stack, in bytes.  This used to be a
 5134|       |           conditional around just the two extra args, but that might
 5135|       |           be undefined if yyoverflow is a macro.  */
 5136|       |        yyoverflow (YY_("memory exhausted"),
 5137|       |                    &yyss1, yysize * YYSIZEOF (*yyssp),
 5138|       |                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
 5139|       |                    &yystacksize);
 5140|       |        yyss = yyss1;
 5141|       |        yyvs = yyvs1;
 5142|       |      }
 5143|       |# else /* defined YYSTACK_RELOCATE */
 5144|       |      /* Extend the stack our own way.  */
 5145|      0|      if (YYMAXDEPTH <= yystacksize)
  ------------------
  |  | 3764|      0|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (5145:11): [True: 0, False: 0]
  ------------------
 5146|      0|        goto yyexhaustedlab;
 5147|      0|      yystacksize *= 2;
 5148|      0|      if (YYMAXDEPTH < yystacksize)
  ------------------
  |  | 3764|      0|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (5148:11): [True: 0, False: 0]
  ------------------
 5149|      0|        yystacksize = YYMAXDEPTH;
  ------------------
  |  | 3764|      0|# define YYMAXDEPTH 10000
  ------------------
 5150|       |
 5151|      0|      {
 5152|      0|        yy_state_t *yyss1 = yyss;
 5153|      0|        union yyalloc *yyptr =
 5154|      0|          YY_CAST (union yyalloc *,
  ------------------
  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 5155|      0|                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
 5156|      0|        if (! yyptr)
  ------------------
  |  Branch (5156:13): [True: 0, False: 0]
  ------------------
 5157|      0|          goto yyexhaustedlab;
 5158|      0|        YYSTACK_RELOCATE (yyss_alloc, yyss);
  ------------------
  |  |  597|      0|    do                                                                  \
  |  |  598|      0|      {                                                                 \
  |  |  599|      0|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  |  391|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  |  600|      0|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  |  615|      0|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  601|      0|        Stack = &yyptr->Stack_alloc;                                    \
  |  |  602|      0|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  424|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  581|      0|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  424|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  603|      0|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  |  424|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  604|      0|      }                                                                 \
  |  |  605|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (605:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5159|      0|        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
  ------------------
  |  |  597|      0|    do                                                                  \
  |  |  598|      0|      {                                                                 \
  |  |  599|      0|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  |  391|      0|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  |  600|      0|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  |  615|      0|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  601|      0|        Stack = &yyptr->Stack_alloc;                                    \
  |  |  602|      0|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  424|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  |  581|      0|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  424|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  603|      0|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  |  424|      0|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  604|      0|      }                                                                 \
  |  |  605|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (605:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5160|      0|# undef YYSTACK_RELOCATE
 5161|      0|        if (yyss1 != yyssa)
  ------------------
  |  Branch (5161:13): [True: 0, False: 0]
  ------------------
 5162|      0|          YYSTACK_FREE (yyss1);
  ------------------
  |  |  541|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  560|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 5163|      0|      }
 5164|      0|# endif
 5165|       |
 5166|      0|      yyssp = yyss + yysize - 1;
 5167|      0|      yyvsp = yyvs + yysize - 1;
 5168|       |
 5169|      0|      YY_IGNORE_USELESS_CAST_BEGIN
 5170|      0|      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
 5171|      0|                  YY_CAST (long, yystacksize)));
 5172|      0|      YY_IGNORE_USELESS_CAST_END
 5173|       |
 5174|      0|      if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (5174:11): [True: 0, False: 0]
  ------------------
 5175|      0|        YYABORT;
  ------------------
  |  | 3590|      0|#define YYABORT         goto yyabortlab
  ------------------
 5176|      0|    }
 5177|   453k|#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 5178|       |
 5179|   453k|  if (yystate == YYFINAL)
  ------------------
  |  |  630|   453k|#define YYFINAL  3
  ------------------
  |  Branch (5179:7): [True: 4.94k, False: 448k]
  ------------------
 5180|  4.94k|    YYACCEPT;
  ------------------
  |  | 3589|  4.94k|#define YYACCEPT        goto yyacceptlab
  ------------------
 5181|       |
 5182|   448k|  goto yybackup;
 5183|       |
 5184|       |
 5185|       |/*-----------.
 5186|       || yybackup.  |
 5187|       |`-----------*/
 5188|   448k|yybackup:
 5189|       |  /* Do appropriate processing given the current state.  Read a
 5190|       |     lookahead token if we need one and don't already have one.  */
 5191|       |
 5192|       |  /* First try to decide what to do without reference to lookahead token.  */
 5193|   448k|  yyn = yypact[yystate];
 5194|   448k|  if (yypact_value_is_default (yyn))
  ------------------
  |  |  909|   448k|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  |  906|   448k|#define YYPACT_NINF (-1071)
  |  |  ------------------
  |  |  |  Branch (909:3): [True: 199k, False: 249k]
  |  |  ------------------
  ------------------
 5195|   199k|    goto yydefault;
 5196|       |
 5197|       |  /* Not known => get a lookahead token if don't already have one.  */
 5198|       |
 5199|       |  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
 5200|   249k|  if (yychar == YYEMPTY)
  ------------------
  |  | 3586|   249k|#define YYEMPTY         (-2)
  ------------------
  |  Branch (5200:7): [True: 142k, False: 106k]
  ------------------
 5201|   142k|    {
 5202|   142k|      YYDPRINTF ((stderr, "Reading a token: "));
 5203|   142k|      yychar = yylex (&yylval);
  ------------------
  |  |   90|   142k|#define yylex           zendlex
  ------------------
 5204|   142k|    }
 5205|       |
 5206|   249k|  if (yychar <= YYEOF)
  ------------------
  |  | 3587|   249k|#define YYEOF           0
  ------------------
  |  Branch (5206:7): [True: 10.3k, False: 238k]
  ------------------
 5207|  10.3k|    {
 5208|  10.3k|      yychar = yytoken = YYEOF;
  ------------------
  |  | 3587|  10.3k|#define YYEOF           0
  ------------------
 5209|  10.3k|      YYDPRINTF ((stderr, "Now at end of input.\n"));
 5210|  10.3k|    }
 5211|   238k|  else
 5212|   238k|    {
 5213|   238k|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  650|   238k|  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  644|   238k|#define YYMAXUTOK   412
  |  |  ------------------
  |  |                 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  643|      0|#define YYUNDEFTOK  2
  |  |  ------------------
  |  |  |  Branch (650:4): [True: 238k, False: 0]
  |  |  |  Branch (650:18): [True: 238k, False: 0]
  |  |  ------------------
  ------------------
 5214|   238k|      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
 5215|   238k|    }
 5216|       |
 5217|       |  /* If the proper action on seeing token YYTOKEN is to reduce or to
 5218|       |     detect an error, take that action.  */
 5219|   249k|  yyn += yytoken;
 5220|   249k|  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
  ------------------
  |  |  632|   247k|#define YYLAST   10430
  ------------------
  |  Branch (5220:7): [True: 1.30k, False: 247k]
  |  Branch (5220:18): [True: 302, False: 247k]
  |  Branch (5220:34): [True: 101k, False: 146k]
  ------------------
 5221|   102k|    goto yydefault;
 5222|   146k|  yyn = yytable[yyn];
 5223|   146k|  if (yyn <= 0)
  ------------------
  |  Branch (5223:7): [True: 5.60k, False: 140k]
  ------------------
 5224|  5.60k|    {
 5225|  5.60k|      if (yytable_value_is_error (yyn))
  ------------------
  |  |  914|  5.60k|  ((Yyn) == YYTABLE_NINF)
  |  |  ------------------
  |  |  |  |  911|  5.60k|#define YYTABLE_NINF (-608)
  |  |  ------------------
  |  |  |  Branch (914:3): [True: 4, False: 5.60k]
  |  |  ------------------
  ------------------
 5226|      4|        goto yyerrlab;
 5227|  5.60k|      yyn = -yyn;
 5228|  5.60k|      goto yyreduce;
 5229|  5.60k|    }
 5230|       |
 5231|       |  /* Count tokens shifted since error; after three, turn off error
 5232|       |     status.  */
 5233|   140k|  if (yyerrstatus)
  ------------------
  |  Branch (5233:7): [True: 0, False: 140k]
  ------------------
 5234|      0|    yyerrstatus--;
 5235|       |
 5236|       |  /* Shift the lookahead token.  */
 5237|   140k|  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 5238|   140k|  yystate = yyn;
 5239|   140k|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 5240|   140k|  *++yyvsp = yylval;
 5241|   140k|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 5242|       |
 5243|       |  /* Discard the shifted token.  */
 5244|   140k|  yychar = YYEMPTY;
  ------------------
  |  | 3586|   140k|#define YYEMPTY         (-2)
  ------------------
 5245|   140k|  goto yynewstate;
 5246|       |
 5247|       |
 5248|       |/*-----------------------------------------------------------.
 5249|       || yydefault -- do the default action for the current state.  |
 5250|       |`-----------------------------------------------------------*/
 5251|   302k|yydefault:
 5252|   302k|  yyn = yydefact[yystate];
 5253|   302k|  if (yyn == 0)
  ------------------
  |  Branch (5253:7): [True: 2.09k, False: 300k]
  ------------------
 5254|  2.09k|    goto yyerrlab;
 5255|   300k|  goto yyreduce;
 5256|       |
 5257|       |
 5258|       |/*-----------------------------.
 5259|       || yyreduce -- do a reduction.  |
 5260|       |`-----------------------------*/
 5261|   305k|yyreduce:
 5262|       |  /* yyn is the number of a rule to reduce with.  */
 5263|   305k|  yylen = yyr2[yyn];
 5264|       |
 5265|       |  /* If YYLEN is nonzero, implement the default value of the action:
 5266|       |     '$$ = $1'.
 5267|       |
 5268|       |     Otherwise, the following line sets YYVAL to garbage.
 5269|       |     This behavior is undocumented and Bison
 5270|       |     users should not rely upon it.  Assigning to YYVAL
 5271|       |     unconditionally makes the parser a bit smaller, and it avoids a
 5272|       |     GCC warning that YYVAL may be used uninitialized.  */
 5273|   305k|  yyval = yyvsp[1-yylen];
 5274|       |
 5275|       |
 5276|   305k|  YY_REDUCE_PRINT (yyn);
 5277|   305k|  switch (yyn)
 5278|   305k|    {
 5279|  4.97k|  case 2:
  ------------------
  |  Branch (5279:3): [True: 4.97k, False: 301k]
  ------------------
 5280|  4.97k|#line 303 "/src/php-src/Zend/zend_language_parser.y"
 5281|  4.97k|                                { CG(ast) = (yyvsp[0].ast); (void) zendnerrs; }
  ------------------
  |  |   35|  4.97k|# define CG(v) (compiler_globals.v)
  ------------------
 5282|  4.97k|#line 5283 "/src/php-src/Zend/zend_language_parser.c"
 5283|  4.97k|    break;
 5284|       |
 5285|  1.43k|  case 84:
  ------------------
  |  Branch (5285:3): [True: 1.43k, False: 304k]
  ------------------
 5286|  1.43k|#line 328 "/src/php-src/Zend/zend_language_parser.y"
 5287|  1.43k|                         { (yyval.ast) = (yyvsp[0].ast); }
 5288|  1.43k|#line 5289 "/src/php-src/Zend/zend_language_parser.c"
 5289|  1.43k|    break;
 5290|       |
 5291|    139|  case 85:
  ------------------
  |  Branch (5291:3): [True: 139, False: 305k]
  ------------------
 5292|    139|#line 329 "/src/php-src/Zend/zend_language_parser.y"
 5293|    139|                               {
 5294|    139|			zval zv;
 5295|    139|			if (zend_lex_tstring(&zv, (yyvsp[0].ident)) == FAILURE) { YYABORT; }
  ------------------
  |  | 3590|      1|#define YYABORT         goto yyabortlab
  ------------------
  |  Branch (5295:8): [True: 1, False: 138]
  ------------------
 5296|    138|			(yyval.ast) = zend_ast_create_zval(&zv);
 5297|    138|		}
 5298|      0|#line 5299 "/src/php-src/Zend/zend_language_parser.c"
 5299|      0|    break;
 5300|       |
 5301|  16.7k|  case 86:
  ------------------
  |  Branch (5301:3): [True: 16.7k, False: 289k]
  ------------------
 5302|  16.7k|#line 337 "/src/php-src/Zend/zend_language_parser.y"
 5303|  16.7k|                                                 { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 5304|  16.7k|#line 5305 "/src/php-src/Zend/zend_language_parser.c"
 5305|  16.7k|    break;
 5306|       |
 5307|  7.11k|  case 87:
  ------------------
  |  Branch (5307:3): [True: 7.11k, False: 298k]
  ------------------
 5308|  7.11k|#line 338 "/src/php-src/Zend/zend_language_parser.y"
 5309|  7.11k|                       { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_STMT_LIST); }
  ------------------
  |  |  320|  7.11k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  7.11k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  7.11k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5310|  7.11k|#line 5311 "/src/php-src/Zend/zend_language_parser.c"
 5311|  7.11k|    break;
 5312|       |
 5313|    149|  case 88:
  ------------------
  |  Branch (5313:3): [True: 149, False: 305k]
  ------------------
 5314|    149|#line 343 "/src/php-src/Zend/zend_language_parser.y"
 5315|    149|                                                                                        { (yyval.ast) = (yyvsp[0].ast); }
 5316|    149|#line 5317 "/src/php-src/Zend/zend_language_parser.c"
 5317|    149|    break;
 5318|       |
 5319|     29|  case 89:
  ------------------
  |  Branch (5319:3): [True: 29, False: 305k]
  ------------------
 5320|     29|#line 344 "/src/php-src/Zend/zend_language_parser.y"
 5321|     29|                                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5322|     29|#line 5323 "/src/php-src/Zend/zend_language_parser.c"
 5323|     29|    break;
 5324|       |
 5325|     50|  case 90:
  ------------------
  |  Branch (5325:3): [True: 50, False: 305k]
  ------------------
 5326|     50|#line 349 "/src/php-src/Zend/zend_language_parser.y"
 5327|     50|                                                                                        { (yyval.ast) = (yyvsp[0].ast); }
 5328|     50|#line 5329 "/src/php-src/Zend/zend_language_parser.c"
 5329|     50|    break;
 5330|       |
 5331|     43|  case 91:
  ------------------
  |  Branch (5331:3): [True: 43, False: 305k]
  ------------------
 5332|     43|#line 350 "/src/php-src/Zend/zend_language_parser.y"
 5333|     43|                                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5334|     43|#line 5335 "/src/php-src/Zend/zend_language_parser.c"
 5335|     43|    break;
 5336|       |
 5337|     83|  case 92:
  ------------------
  |  Branch (5337:3): [True: 83, False: 305k]
  ------------------
 5338|     83|#line 355 "/src/php-src/Zend/zend_language_parser.y"
 5339|     83|                                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5340|     83|#line 5341 "/src/php-src/Zend/zend_language_parser.c"
 5341|     83|    break;
 5342|       |
 5343|     13|  case 93:
  ------------------
  |  Branch (5343:3): [True: 13, False: 305k]
  ------------------
 5344|     13|#line 356 "/src/php-src/Zend/zend_language_parser.y"
 5345|     13|                                                                        { (yyval.ast) = (yyvsp[0].ast); }
 5346|     13|#line 5347 "/src/php-src/Zend/zend_language_parser.c"
 5347|     13|    break;
 5348|       |
 5349|  10.9k|  case 94:
  ------------------
  |  Branch (5349:3): [True: 10.9k, False: 295k]
  ------------------
 5350|  10.9k|#line 360 "/src/php-src/Zend/zend_language_parser.y"
 5351|  10.9k|                                                                                                { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = ZEND_NAME_NOT_FQ; }
  ------------------
  |  | 1061|  10.9k|#define ZEND_NAME_NOT_FQ   1
  ------------------
 5352|  10.9k|#line 5353 "/src/php-src/Zend/zend_language_parser.c"
 5353|  10.9k|    break;
 5354|       |
 5355|     43|  case 95:
  ------------------
  |  Branch (5355:3): [True: 43, False: 305k]
  ------------------
 5356|     43|#line 361 "/src/php-src/Zend/zend_language_parser.y"
 5357|     43|                                                                                        { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = ZEND_NAME_NOT_FQ; }
  ------------------
  |  | 1061|     43|#define ZEND_NAME_NOT_FQ   1
  ------------------
 5358|     43|#line 5359 "/src/php-src/Zend/zend_language_parser.c"
 5359|     43|    break;
 5360|       |
 5361|    198|  case 96:
  ------------------
  |  Branch (5361:3): [True: 198, False: 305k]
  ------------------
 5362|    198|#line 362 "/src/php-src/Zend/zend_language_parser.y"
 5363|    198|                                                                                { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = ZEND_NAME_FQ; }
  ------------------
  |  | 1060|    198|#define ZEND_NAME_FQ       0
  ------------------
 5364|    198|#line 5365 "/src/php-src/Zend/zend_language_parser.c"
 5365|    198|    break;
 5366|       |
 5367|     19|  case 97:
  ------------------
  |  Branch (5367:3): [True: 19, False: 305k]
  ------------------
 5368|     19|#line 363 "/src/php-src/Zend/zend_language_parser.y"
 5369|     19|                                                                                        { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = ZEND_NAME_RELATIVE; }
  ------------------
  |  | 1062|     19|#define ZEND_NAME_RELATIVE 2
  ------------------
 5370|     19|#line 5371 "/src/php-src/Zend/zend_language_parser.c"
 5371|     19|    break;
 5372|       |
 5373|    122|  case 98:
  ------------------
  |  Branch (5373:3): [True: 122, False: 305k]
  ------------------
 5374|    122|#line 368 "/src/php-src/Zend/zend_language_parser.y"
 5375|    122|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ATTRIBUTE, (yyvsp[0].ast), NULL); }
  ------------------
  |  |  316|    122|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    122|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    122|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5376|    122|#line 5377 "/src/php-src/Zend/zend_language_parser.c"
 5377|    122|    break;
 5378|       |
 5379|     46|  case 99:
  ------------------
  |  Branch (5379:3): [True: 46, False: 305k]
  ------------------
 5380|     46|#line 370 "/src/php-src/Zend/zend_language_parser.y"
 5381|     46|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ATTRIBUTE, (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     46|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     46|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     46|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5382|     46|#line 5383 "/src/php-src/Zend/zend_language_parser.c"
 5383|     46|    break;
 5384|       |
 5385|    159|  case 100:
  ------------------
  |  Branch (5385:3): [True: 159, False: 305k]
  ------------------
 5386|    159|#line 375 "/src/php-src/Zend/zend_language_parser.y"
 5387|    159|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_ATTRIBUTE_GROUP, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    159|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    159|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    159|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5388|    159|#line 5389 "/src/php-src/Zend/zend_language_parser.c"
 5389|    159|    break;
 5390|       |
 5391|      9|  case 101:
  ------------------
  |  Branch (5391:3): [True: 9, False: 305k]
  ------------------
 5392|      9|#line 377 "/src/php-src/Zend/zend_language_parser.y"
 5393|      9|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5394|      9|#line 5395 "/src/php-src/Zend/zend_language_parser.c"
 5395|      9|    break;
 5396|       |
 5397|    155|  case 102:
  ------------------
  |  Branch (5397:3): [True: 155, False: 305k]
  ------------------
 5398|    155|#line 381 "/src/php-src/Zend/zend_language_parser.y"
 5399|    155|                                                                                        { (yyval.ast) = (yyvsp[-2].ast); CG(doc_comment) = (yyvsp[-3].str); }
  ------------------
  |  |   35|    155|# define CG(v) (compiler_globals.v)
  ------------------
 5400|    155|#line 5401 "/src/php-src/Zend/zend_language_parser.c"
 5401|    155|    break;
 5402|       |
 5403|    146|  case 103:
  ------------------
  |  Branch (5403:3): [True: 146, False: 305k]
  ------------------
 5404|    146|#line 385 "/src/php-src/Zend/zend_language_parser.y"
 5405|    146|                                                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_ATTRIBUTE_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    146|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    146|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    146|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5406|    146|#line 5407 "/src/php-src/Zend/zend_language_parser.c"
 5407|    146|    break;
 5408|       |
 5409|      9|  case 104:
  ------------------
  |  Branch (5409:3): [True: 9, False: 305k]
  ------------------
 5410|      9|#line 386 "/src/php-src/Zend/zend_language_parser.y"
 5411|      9|                                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 5412|      9|#line 5413 "/src/php-src/Zend/zend_language_parser.c"
 5413|      9|    break;
 5414|       |
 5415|    560|  case 105:
  ------------------
  |  Branch (5415:3): [True: 560, False: 305k]
  ------------------
 5416|    560|#line 390 "/src/php-src/Zend/zend_language_parser.y"
 5417|    560|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 5418|    560|#line 5419 "/src/php-src/Zend/zend_language_parser.c"
 5419|    560|    break;
 5420|       |
 5421|  1.29k|  case 106:
  ------------------
  |  Branch (5421:3): [True: 1.29k, False: 304k]
  ------------------
 5422|  1.29k|#line 391 "/src/php-src/Zend/zend_language_parser.y"
 5423|  1.29k|                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5424|  1.29k|#line 5425 "/src/php-src/Zend/zend_language_parser.c"
 5425|  1.29k|    break;
 5426|       |
 5427|    146|  case 107:
  ------------------
  |  Branch (5427:3): [True: 146, False: 305k]
  ------------------
 5428|    146|#line 392 "/src/php-src/Zend/zend_language_parser.y"
 5429|    146|                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5430|    146|#line 5431 "/src/php-src/Zend/zend_language_parser.c"
 5431|    146|    break;
 5432|       |
 5433|    173|  case 108:
  ------------------
  |  Branch (5433:3): [True: 173, False: 305k]
  ------------------
 5434|    173|#line 393 "/src/php-src/Zend/zend_language_parser.y"
 5435|    173|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 5436|    173|#line 5437 "/src/php-src/Zend/zend_language_parser.c"
 5437|    173|    break;
 5438|       |
 5439|    152|  case 109:
  ------------------
  |  Branch (5439:3): [True: 152, False: 305k]
  ------------------
 5440|    152|#line 394 "/src/php-src/Zend/zend_language_parser.y"
 5441|    152|                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5442|    152|#line 5443 "/src/php-src/Zend/zend_language_parser.c"
 5443|    152|    break;
 5444|       |
 5445|  2.29k|  case 110:
  ------------------
  |  Branch (5445:3): [True: 2.29k, False: 303k]
  ------------------
 5446|  2.29k|#line 398 "/src/php-src/Zend/zend_language_parser.y"
 5447|  2.29k|                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5448|  2.29k|#line 5449 "/src/php-src/Zend/zend_language_parser.c"
 5449|  2.29k|    break;
 5450|       |
 5451|    163|  case 111:
  ------------------
  |  Branch (5451:3): [True: 163, False: 305k]
  ------------------
 5452|    163|#line 399 "/src/php-src/Zend/zend_language_parser.y"
 5453|    163|                                                                { (yyval.ast) = (yyvsp[-1].ast); }
 5454|    163|#line 5455 "/src/php-src/Zend/zend_language_parser.c"
 5455|    163|    break;
 5456|       |
 5457|  14.0k|  case 112:
  ------------------
  |  Branch (5457:3): [True: 14.0k, False: 291k]
  ------------------
 5458|  14.0k|#line 403 "/src/php-src/Zend/zend_language_parser.y"
 5459|  14.0k|                                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5460|  14.0k|#line 5461 "/src/php-src/Zend/zend_language_parser.c"
 5461|  14.0k|    break;
 5462|       |
 5463|  2.36k|  case 113:
  ------------------
  |  Branch (5463:3): [True: 2.36k, False: 303k]
  ------------------
 5464|  2.36k|#line 404 "/src/php-src/Zend/zend_language_parser.y"
 5465|  2.36k|                                                                { (yyval.ast) = (yyvsp[0].ast); }
 5466|  2.36k|#line 5467 "/src/php-src/Zend/zend_language_parser.c"
 5467|  2.36k|    break;
 5468|       |
 5469|     95|  case 114:
  ------------------
  |  Branch (5469:3): [True: 95, False: 305k]
  ------------------
 5470|     95|#line 405 "/src/php-src/Zend/zend_language_parser.y"
 5471|     95|                                                        { (yyval.ast) = zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-1].ast)); }
 5472|     95|#line 5473 "/src/php-src/Zend/zend_language_parser.c"
 5473|     95|    break;
 5474|       |
 5475|      7|  case 115:
  ------------------
  |  Branch (5475:3): [True: 7, False: 305k]
  ------------------
 5476|      7|#line 407 "/src/php-src/Zend/zend_language_parser.y"
 5477|      7|                        { (yyval.ast) = zend_ast_create(ZEND_AST_HALT_COMPILER,
  ------------------
  |  |  316|      7|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      7|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      7|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5478|      7|			      zend_ast_create_zval_from_long(zend_get_scanned_file_offset()));
 5479|      7|			  zend_stop_lexing(); }
 5480|      7|#line 5481 "/src/php-src/Zend/zend_language_parser.c"
 5481|      7|    break;
 5482|       |
 5483|    149|  case 116:
  ------------------
  |  Branch (5483:3): [True: 149, False: 305k]
  ------------------
 5484|    149|#line 411 "/src/php-src/Zend/zend_language_parser.y"
 5485|    149|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NAMESPACE, (yyvsp[-1].ast), NULL);
  ------------------
  |  |  316|    149|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    149|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    149|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5486|    149|			  RESET_DOC_COMMENT(); }
  ------------------
  |  |   47|    149|#define RESET_DOC_COMMENT() do { \
  |  |   48|    149|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|    149|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 149]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      0|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      0|	} \
  |  |   52|    149|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 149]
  |  |  ------------------
  ------------------
 5487|    149|#line 5488 "/src/php-src/Zend/zend_language_parser.c"
 5488|    149|    break;
 5489|       |
 5490|     29|  case 117:
  ------------------
  |  Branch (5490:3): [True: 29, False: 305k]
  ------------------
 5491|     29|#line 413 "/src/php-src/Zend/zend_language_parser.y"
 5492|     29|                                                       { RESET_DOC_COMMENT(); }
  ------------------
  |  |   47|     29|#define RESET_DOC_COMMENT() do { \
  |  |   48|     29|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|     29|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      0|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      0|	} \
  |  |   52|     29|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 29]
  |  |  ------------------
  ------------------
 5493|     29|#line 5494 "/src/php-src/Zend/zend_language_parser.c"
 5494|     29|    break;
 5495|       |
 5496|     25|  case 118:
  ------------------
  |  Branch (5496:3): [True: 25, False: 305k]
  ------------------
 5497|     25|#line 415 "/src/php-src/Zend/zend_language_parser.y"
 5498|     25|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NAMESPACE, (yyvsp[-4].ast), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     25|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     25|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     25|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5499|     25|#line 5500 "/src/php-src/Zend/zend_language_parser.c"
 5500|     25|    break;
 5501|       |
 5502|     20|  case 119:
  ------------------
  |  Branch (5502:3): [True: 20, False: 305k]
  ------------------
 5503|     20|#line 416 "/src/php-src/Zend/zend_language_parser.y"
 5504|     20|                            { RESET_DOC_COMMENT(); }
  ------------------
  |  |   47|     20|#define RESET_DOC_COMMENT() do { \
  |  |   48|     20|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|     20|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 1, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      1|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      1|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      1|	} \
  |  |   52|     20|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 20]
  |  |  ------------------
  ------------------
 5505|     20|#line 5506 "/src/php-src/Zend/zend_language_parser.c"
 5506|     20|    break;
 5507|       |
 5508|     16|  case 120:
  ------------------
  |  Branch (5508:3): [True: 16, False: 305k]
  ------------------
 5509|     16|#line 418 "/src/php-src/Zend/zend_language_parser.y"
 5510|     16|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NAMESPACE, NULL, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     16|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     16|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     16|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5511|     16|#line 5512 "/src/php-src/Zend/zend_language_parser.c"
 5512|     16|    break;
 5513|       |
 5514|      5|  case 121:
  ------------------
  |  Branch (5514:3): [True: 5, False: 305k]
  ------------------
 5515|      5|#line 419 "/src/php-src/Zend/zend_language_parser.y"
 5516|      5|                                                                { (yyval.ast) = (yyvsp[-1].ast); }
 5517|      5|#line 5518 "/src/php-src/Zend/zend_language_parser.c"
 5518|      5|    break;
 5519|       |
 5520|      1|  case 122:
  ------------------
  |  Branch (5520:3): [True: 1, False: 305k]
  ------------------
 5521|      1|#line 420 "/src/php-src/Zend/zend_language_parser.y"
 5522|      1|                                                                { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = (yyvsp[-2].num); }
 5523|      1|#line 5524 "/src/php-src/Zend/zend_language_parser.c"
 5524|      1|    break;
 5525|       |
 5526|     50|  case 123:
  ------------------
  |  Branch (5526:3): [True: 50, False: 305k]
  ------------------
 5527|     50|#line 421 "/src/php-src/Zend/zend_language_parser.y"
 5528|     50|                                                                                { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = ZEND_SYMBOL_CLASS; }
  ------------------
  |  | 1223|     50|#define ZEND_SYMBOL_CLASS    (1<<0)
  ------------------
 5529|     50|#line 5530 "/src/php-src/Zend/zend_language_parser.c"
 5530|     50|    break;
 5531|       |
 5532|     26|  case 124:
  ------------------
  |  Branch (5532:3): [True: 26, False: 305k]
  ------------------
 5533|     26|#line 422 "/src/php-src/Zend/zend_language_parser.y"
 5534|     26|                                                                        { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = (yyvsp[-2].num); }
 5535|     26|#line 5536 "/src/php-src/Zend/zend_language_parser.c"
 5536|     26|    break;
 5537|       |
 5538|     13|  case 125:
  ------------------
  |  Branch (5538:3): [True: 13, False: 305k]
  ------------------
 5539|     13|#line 426 "/src/php-src/Zend/zend_language_parser.y"
 5540|     13|                                        { (yyval.num) = ZEND_SYMBOL_FUNCTION; }
  ------------------
  |  | 1224|     13|#define ZEND_SYMBOL_FUNCTION (1<<1)
  ------------------
 5541|     13|#line 5542 "/src/php-src/Zend/zend_language_parser.c"
 5542|     13|    break;
 5543|       |
 5544|     15|  case 126:
  ------------------
  |  Branch (5544:3): [True: 15, False: 305k]
  ------------------
 5545|     15|#line 427 "/src/php-src/Zend/zend_language_parser.y"
 5546|     15|                                        { (yyval.num) = ZEND_SYMBOL_CONST; }
  ------------------
  |  | 1225|     15|#define ZEND_SYMBOL_CONST    (1<<2)
  ------------------
 5547|     15|#line 5548 "/src/php-src/Zend/zend_language_parser.c"
 5548|     15|    break;
 5549|       |
 5550|      1|  case 127:
  ------------------
  |  Branch (5550:3): [True: 1, False: 305k]
  ------------------
 5551|      1|#line 432 "/src/php-src/Zend/zend_language_parser.y"
 5552|      1|                        { (yyval.ast) = zend_ast_create(ZEND_AST_GROUP_USE, (yyvsp[-5].ast), (yyvsp[-2].ast)); }
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5553|      1|#line 5554 "/src/php-src/Zend/zend_language_parser.c"
 5554|      1|    break;
 5555|       |
 5556|      5|  case 128:
  ------------------
  |  Branch (5556:3): [True: 5, False: 305k]
  ------------------
 5557|      5|#line 437 "/src/php-src/Zend/zend_language_parser.y"
 5558|      5|                        { (yyval.ast) = zend_ast_create(ZEND_AST_GROUP_USE, (yyvsp[-5].ast), (yyvsp[-2].ast));}
  ------------------
  |  |  316|      5|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      5|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      5|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5559|      5|#line 5560 "/src/php-src/Zend/zend_language_parser.c"
 5560|      5|    break;
 5561|       |
 5562|      1|  case 131:
  ------------------
  |  Branch (5562:3): [True: 1, False: 305k]
  ------------------
 5563|      1|#line 447 "/src/php-src/Zend/zend_language_parser.y"
 5564|      1|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5565|      1|#line 5566 "/src/php-src/Zend/zend_language_parser.c"
 5566|      1|    break;
 5567|       |
 5568|      7|  case 132:
  ------------------
  |  Branch (5568:3): [True: 7, False: 305k]
  ------------------
 5569|      7|#line 449 "/src/php-src/Zend/zend_language_parser.y"
 5570|      7|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_USE, (yyvsp[0].ast)); }
  ------------------
  |  |  320|      7|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      7|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      7|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5571|      7|#line 5572 "/src/php-src/Zend/zend_language_parser.c"
 5572|      7|    break;
 5573|       |
 5574|      0|  case 133:
  ------------------
  |  Branch (5574:3): [True: 0, False: 305k]
  ------------------
 5575|      0|#line 454 "/src/php-src/Zend/zend_language_parser.y"
 5576|      0|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5577|      0|#line 5578 "/src/php-src/Zend/zend_language_parser.c"
 5578|      0|    break;
 5579|       |
 5580|      2|  case 134:
  ------------------
  |  Branch (5580:3): [True: 2, False: 305k]
  ------------------
 5581|      2|#line 456 "/src/php-src/Zend/zend_language_parser.y"
 5582|      2|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_USE, (yyvsp[0].ast)); }
  ------------------
  |  |  320|      2|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5583|      2|#line 5584 "/src/php-src/Zend/zend_language_parser.c"
 5584|      2|    break;
 5585|       |
 5586|      7|  case 135:
  ------------------
  |  Branch (5586:3): [True: 7, False: 305k]
  ------------------
 5587|      7|#line 461 "/src/php-src/Zend/zend_language_parser.y"
 5588|      7|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5589|      7|#line 5590 "/src/php-src/Zend/zend_language_parser.c"
 5590|      7|    break;
 5591|       |
 5592|     77|  case 136:
  ------------------
  |  Branch (5592:3): [True: 77, False: 305k]
  ------------------
 5593|     77|#line 463 "/src/php-src/Zend/zend_language_parser.y"
 5594|     77|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_USE, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     77|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     77|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     77|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5595|     77|#line 5596 "/src/php-src/Zend/zend_language_parser.c"
 5596|     77|    break;
 5597|       |
 5598|      8|  case 137:
  ------------------
  |  Branch (5598:3): [True: 8, False: 305k]
  ------------------
 5599|      8|#line 467 "/src/php-src/Zend/zend_language_parser.y"
 5600|      8|                                           { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = ZEND_SYMBOL_CLASS; }
  ------------------
  |  | 1223|      8|#define ZEND_SYMBOL_CLASS    (1<<0)
  ------------------
 5601|      8|#line 5602 "/src/php-src/Zend/zend_language_parser.c"
 5602|      8|    break;
 5603|       |
 5604|      0|  case 138:
  ------------------
  |  Branch (5604:3): [True: 0, False: 305k]
  ------------------
 5605|      0|#line 468 "/src/php-src/Zend/zend_language_parser.y"
 5606|      0|                                                    { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = (yyvsp[-1].num); }
 5607|      0|#line 5608 "/src/php-src/Zend/zend_language_parser.c"
 5608|      0|    break;
 5609|       |
 5610|     10|  case 139:
  ------------------
  |  Branch (5610:3): [True: 10, False: 305k]
  ------------------
 5611|     10|#line 473 "/src/php-src/Zend/zend_language_parser.y"
 5612|     10|                        { (yyval.ast) = zend_ast_create(ZEND_AST_USE_ELEM, (yyvsp[0].ast), NULL); }
  ------------------
  |  |  316|     10|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     10|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     10|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5613|     10|#line 5614 "/src/php-src/Zend/zend_language_parser.c"
 5614|     10|    break;
 5615|       |
 5616|      0|  case 140:
  ------------------
  |  Branch (5616:3): [True: 0, False: 305k]
  ------------------
 5617|      0|#line 475 "/src/php-src/Zend/zend_language_parser.y"
 5618|      0|                        { (yyval.ast) = zend_ast_create(ZEND_AST_USE_ELEM, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5619|      0|#line 5620 "/src/php-src/Zend/zend_language_parser.c"
 5620|      0|    break;
 5621|       |
 5622|     51|  case 141:
  ------------------
  |  Branch (5622:3): [True: 51, False: 305k]
  ------------------
 5623|     51|#line 480 "/src/php-src/Zend/zend_language_parser.y"
 5624|     51|                        { (yyval.ast) = zend_ast_create(ZEND_AST_USE_ELEM, (yyvsp[0].ast), NULL); }
  ------------------
  |  |  316|     51|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     51|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     51|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5625|     51|#line 5626 "/src/php-src/Zend/zend_language_parser.c"
 5626|     51|    break;
 5627|       |
 5628|     33|  case 142:
  ------------------
  |  Branch (5628:3): [True: 33, False: 305k]
  ------------------
 5629|     33|#line 482 "/src/php-src/Zend/zend_language_parser.y"
 5630|     33|                        { (yyval.ast) = zend_ast_create(ZEND_AST_USE_ELEM, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     33|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     33|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     33|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5631|     33|#line 5632 "/src/php-src/Zend/zend_language_parser.c"
 5632|     33|    break;
 5633|       |
 5634|      3|  case 143:
  ------------------
  |  Branch (5634:3): [True: 3, False: 305k]
  ------------------
 5635|      3|#line 486 "/src/php-src/Zend/zend_language_parser.y"
 5636|      3|                                          { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5637|      3|#line 5638 "/src/php-src/Zend/zend_language_parser.c"
 5638|      3|    break;
 5639|       |
 5640|    225|  case 144:
  ------------------
  |  Branch (5640:3): [True: 225, False: 305k]
  ------------------
 5641|    225|#line 487 "/src/php-src/Zend/zend_language_parser.y"
 5642|    225|                           { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_CONST_DECL, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    225|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    225|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    225|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5643|    225|#line 5644 "/src/php-src/Zend/zend_language_parser.c"
 5644|    225|    break;
 5645|       |
 5646|  2.41k|  case 145:
  ------------------
  |  Branch (5646:3): [True: 2.41k, False: 303k]
  ------------------
 5647|  2.41k|#line 492 "/src/php-src/Zend/zend_language_parser.y"
 5648|  2.41k|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 5649|  2.41k|#line 5650 "/src/php-src/Zend/zend_language_parser.c"
 5650|  2.41k|    break;
 5651|       |
 5652|  2.70k|  case 146:
  ------------------
  |  Branch (5652:3): [True: 2.70k, False: 303k]
  ------------------
 5653|  2.70k|#line 494 "/src/php-src/Zend/zend_language_parser.y"
 5654|  2.70k|                        { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_STMT_LIST); }
  ------------------
  |  |  320|  2.70k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  2.70k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  2.70k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5655|  2.70k|#line 5656 "/src/php-src/Zend/zend_language_parser.c"
 5656|  2.70k|    break;
 5657|       |
 5658|  2.38k|  case 147:
  ------------------
  |  Branch (5658:3): [True: 2.38k, False: 303k]
  ------------------
 5659|  2.38k|#line 499 "/src/php-src/Zend/zend_language_parser.y"
 5660|  2.38k|                          { (yyval.ast) = (yyvsp[0].ast); }
 5661|  2.38k|#line 5662 "/src/php-src/Zend/zend_language_parser.c"
 5662|  2.38k|    break;
 5663|       |
 5664|     29|  case 148:
  ------------------
  |  Branch (5664:3): [True: 29, False: 305k]
  ------------------
 5665|     29|#line 500 "/src/php-src/Zend/zend_language_parser.y"
 5666|     29|                                                                        { (yyval.ast) = (yyvsp[0].ast); }
 5667|     29|#line 5668 "/src/php-src/Zend/zend_language_parser.c"
 5668|     29|    break;
 5669|       |
 5670|      1|  case 149:
  ------------------
  |  Branch (5670:3): [True: 1, False: 305k]
  ------------------
 5671|      1|#line 501 "/src/php-src/Zend/zend_language_parser.y"
 5672|      1|                                                        { (yyval.ast) = zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-1].ast)); }
 5673|      1|#line 5674 "/src/php-src/Zend/zend_language_parser.c"
 5674|      1|    break;
 5675|       |
 5676|      1|  case 150:
  ------------------
  |  Branch (5676:3): [True: 1, False: 305k]
  ------------------
 5677|      1|#line 503 "/src/php-src/Zend/zend_language_parser.y"
 5678|      1|                        { (yyval.ast) = NULL; zend_throw_exception(zend_ce_compile_error,
 5679|      1|			      "__HALT_COMPILER() can only be used from the outermost scope", 0); YYERROR; }
  ------------------
  |  | 3591|      1|#define YYERROR         goto yyerrorlab
  ------------------
 5680|      0|#line 5681 "/src/php-src/Zend/zend_language_parser.c"
 5681|      0|    break;
 5682|       |
 5683|    554|  case 151:
  ------------------
  |  Branch (5683:3): [True: 554, False: 305k]
  ------------------
 5684|    554|#line 509 "/src/php-src/Zend/zend_language_parser.y"
 5685|    554|                                             { (yyval.ast) = (yyvsp[-1].ast); }
 5686|    554|#line 5687 "/src/php-src/Zend/zend_language_parser.c"
 5687|    554|    break;
 5688|       |
 5689|     85|  case 152:
  ------------------
  |  Branch (5689:3): [True: 85, False: 305k]
  ------------------
 5690|     85|#line 510 "/src/php-src/Zend/zend_language_parser.y"
 5691|     85|                        { (yyval.ast) = (yyvsp[0].ast); }
 5692|     85|#line 5693 "/src/php-src/Zend/zend_language_parser.c"
 5693|     85|    break;
 5694|       |
 5695|      4|  case 153:
  ------------------
  |  Branch (5695:3): [True: 4, False: 305k]
  ------------------
 5696|      4|#line 511 "/src/php-src/Zend/zend_language_parser.y"
 5697|      4|                            { (yyval.ast) = (yyvsp[0].ast); }
 5698|      4|#line 5699 "/src/php-src/Zend/zend_language_parser.c"
 5699|      4|    break;
 5700|       |
 5701|     16|  case 154:
  ------------------
  |  Branch (5701:3): [True: 16, False: 305k]
  ------------------
 5702|     16|#line 513 "/src/php-src/Zend/zend_language_parser.y"
 5703|     16|                        { (yyval.ast) = zend_ast_create(ZEND_AST_WHILE, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     16|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     16|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     16|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5704|     16|#line 5705 "/src/php-src/Zend/zend_language_parser.c"
 5705|     16|    break;
 5706|       |
 5707|      3|  case 155:
  ------------------
  |  Branch (5707:3): [True: 3, False: 305k]
  ------------------
 5708|      3|#line 515 "/src/php-src/Zend/zend_language_parser.y"
 5709|      3|                        { (yyval.ast) = zend_ast_create(ZEND_AST_DO_WHILE, (yyvsp[-5].ast), (yyvsp[-2].ast)); }
  ------------------
  |  |  316|      3|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      3|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      3|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5710|      3|#line 5711 "/src/php-src/Zend/zend_language_parser.c"
 5711|      3|    break;
 5712|       |
 5713|    250|  case 156:
  ------------------
  |  Branch (5713:3): [True: 250, False: 305k]
  ------------------
 5714|    250|#line 517 "/src/php-src/Zend/zend_language_parser.y"
 5715|    250|                        { (yyval.ast) = zend_ast_create(ZEND_AST_FOR, (yyvsp[-6].ast), (yyvsp[-4].ast), (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    250|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    250|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    250|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5716|    250|#line 5717 "/src/php-src/Zend/zend_language_parser.c"
 5717|    250|    break;
 5718|       |
 5719|     17|  case 157:
  ------------------
  |  Branch (5719:3): [True: 17, False: 305k]
  ------------------
 5720|     17|#line 519 "/src/php-src/Zend/zend_language_parser.y"
 5721|     17|                        { (yyval.ast) = zend_ast_create(ZEND_AST_SWITCH, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     17|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     17|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     17|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5722|     17|#line 5723 "/src/php-src/Zend/zend_language_parser.c"
 5723|     17|    break;
 5724|       |
 5725|     30|  case 158:
  ------------------
  |  Branch (5725:3): [True: 30, False: 305k]
  ------------------
 5726|     30|#line 520 "/src/php-src/Zend/zend_language_parser.y"
 5727|     30|                                                        { (yyval.ast) = zend_ast_create(ZEND_AST_BREAK, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     30|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     30|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     30|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5728|     30|#line 5729 "/src/php-src/Zend/zend_language_parser.c"
 5729|     30|    break;
 5730|       |
 5731|      2|  case 159:
  ------------------
  |  Branch (5731:3): [True: 2, False: 305k]
  ------------------
 5732|      2|#line 521 "/src/php-src/Zend/zend_language_parser.y"
 5733|      2|                                                { (yyval.ast) = zend_ast_create(ZEND_AST_CONTINUE, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|      2|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5734|      2|#line 5735 "/src/php-src/Zend/zend_language_parser.c"
 5735|      2|    break;
 5736|       |
 5737|    294|  case 160:
  ------------------
  |  Branch (5737:3): [True: 294, False: 305k]
  ------------------
 5738|    294|#line 522 "/src/php-src/Zend/zend_language_parser.y"
 5739|    294|                                                        { (yyval.ast) = zend_ast_create(ZEND_AST_RETURN, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|    294|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    294|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    294|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5740|    294|#line 5741 "/src/php-src/Zend/zend_language_parser.c"
 5741|    294|    break;
 5742|       |
 5743|     27|  case 161:
  ------------------
  |  Branch (5743:3): [True: 27, False: 305k]
  ------------------
 5744|     27|#line 523 "/src/php-src/Zend/zend_language_parser.y"
 5745|     27|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 5746|     27|#line 5747 "/src/php-src/Zend/zend_language_parser.c"
 5747|     27|    break;
 5748|       |
 5749|     42|  case 162:
  ------------------
  |  Branch (5749:3): [True: 42, False: 305k]
  ------------------
 5750|     42|#line 524 "/src/php-src/Zend/zend_language_parser.y"
 5751|     42|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 5752|     42|#line 5753 "/src/php-src/Zend/zend_language_parser.c"
 5753|     42|    break;
 5754|       |
 5755|    997|  case 163:
  ------------------
  |  Branch (5755:3): [True: 997, False: 304k]
  ------------------
 5756|    997|#line 525 "/src/php-src/Zend/zend_language_parser.y"
 5757|    997|                                                        { (yyval.ast) = (yyvsp[-1].ast); }
 5758|    997|#line 5759 "/src/php-src/Zend/zend_language_parser.c"
 5759|    997|    break;
 5760|       |
 5761|  1.57k|  case 164:
  ------------------
  |  Branch (5761:3): [True: 1.57k, False: 304k]
  ------------------
 5762|  1.57k|#line 526 "/src/php-src/Zend/zend_language_parser.y"
 5763|  1.57k|                              { (yyval.ast) = zend_ast_create(ZEND_AST_ECHO, (yyvsp[0].ast)); }
  ------------------
  |  |  316|  1.57k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.57k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.57k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5764|  1.57k|#line 5765 "/src/php-src/Zend/zend_language_parser.c"
 5765|  1.57k|    break;
 5766|       |
 5767|  8.73k|  case 165:
  ------------------
  |  Branch (5767:3): [True: 8.73k, False: 297k]
  ------------------
 5768|  8.73k|#line 527 "/src/php-src/Zend/zend_language_parser.y"
 5769|  8.73k|                         { (yyval.ast) = (yyvsp[-1].ast); }
 5770|  8.73k|#line 5771 "/src/php-src/Zend/zend_language_parser.c"
 5771|  8.73k|    break;
 5772|       |
 5773|    156|  case 166:
  ------------------
  |  Branch (5773:3): [True: 156, False: 305k]
  ------------------
 5774|    156|#line 528 "/src/php-src/Zend/zend_language_parser.y"
 5775|    156|                                                                   { (yyval.ast) = (yyvsp[-3].ast); }
 5776|    156|#line 5777 "/src/php-src/Zend/zend_language_parser.c"
 5777|    156|    break;
 5778|       |
 5779|    164|  case 167:
  ------------------
  |  Branch (5779:3): [True: 164, False: 305k]
  ------------------
 5780|    164|#line 530 "/src/php-src/Zend/zend_language_parser.y"
 5781|    164|                        { (yyval.ast) = zend_ast_create(ZEND_AST_FOREACH, (yyvsp[-4].ast), (yyvsp[-2].ast), NULL, (yyvsp[0].ast)); }
  ------------------
  |  |  316|    164|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    164|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    164|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5782|    164|#line 5783 "/src/php-src/Zend/zend_language_parser.c"
 5783|    164|    break;
 5784|       |
 5785|     35|  case 168:
  ------------------
  |  Branch (5785:3): [True: 35, False: 305k]
  ------------------
 5786|     35|#line 533 "/src/php-src/Zend/zend_language_parser.y"
 5787|     35|                        { (yyval.ast) = zend_ast_create(ZEND_AST_FOREACH, (yyvsp[-6].ast), (yyvsp[-2].ast), (yyvsp[-4].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     35|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     35|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     35|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5788|     35|#line 5789 "/src/php-src/Zend/zend_language_parser.c"
 5789|     35|    break;
 5790|       |
 5791|     60|  case 169:
  ------------------
  |  Branch (5791:3): [True: 60, False: 305k]
  ------------------
 5792|     60|#line 535 "/src/php-src/Zend/zend_language_parser.y"
 5793|     60|                        { if (!zend_handle_encoding_declaration((yyvsp[-1].ast))) { YYERROR; } }
  ------------------
  |  | 3591|      2|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (5793:31): [True: 2, False: 58]
  ------------------
 5794|     58|#line 5795 "/src/php-src/Zend/zend_language_parser.c"
 5795|     58|    break;
 5796|       |
 5797|     58|  case 170:
  ------------------
  |  Branch (5797:3): [True: 55, False: 305k]
  ------------------
 5798|     55|#line 537 "/src/php-src/Zend/zend_language_parser.y"
 5799|     55|                        { (yyval.ast) = zend_ast_create(ZEND_AST_DECLARE, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     55|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     55|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     55|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5800|     55|#line 5801 "/src/php-src/Zend/zend_language_parser.c"
 5801|     55|    break;
 5802|       |
 5803|  3.60k|  case 171:
  ------------------
  |  Branch (5803:3): [True: 3.60k, False: 302k]
  ------------------
 5804|  3.60k|#line 538 "/src/php-src/Zend/zend_language_parser.y"
 5805|  3.60k|                                              { (yyval.ast) = NULL; }
 5806|  3.60k|#line 5807 "/src/php-src/Zend/zend_language_parser.c"
 5807|  3.60k|    break;
 5808|       |
 5809|    234|  case 172:
  ------------------
  |  Branch (5809:3): [True: 234, False: 305k]
  ------------------
 5810|    234|#line 540 "/src/php-src/Zend/zend_language_parser.y"
 5811|    234|                        { (yyval.ast) = zend_ast_create(ZEND_AST_TRY, (yyvsp[-3].ast), (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    234|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    234|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    234|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5812|    234|#line 5813 "/src/php-src/Zend/zend_language_parser.c"
 5813|    234|    break;
 5814|       |
 5815|     49|  case 173:
  ------------------
  |  Branch (5815:3): [True: 49, False: 305k]
  ------------------
 5816|     49|#line 541 "/src/php-src/Zend/zend_language_parser.y"
 5817|     49|                                    { (yyval.ast) = zend_ast_create(ZEND_AST_GOTO, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     49|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     49|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     49|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5818|     49|#line 5819 "/src/php-src/Zend/zend_language_parser.c"
 5819|     49|    break;
 5820|       |
 5821|     76|  case 174:
  ------------------
  |  Branch (5821:3): [True: 76, False: 305k]
  ------------------
 5822|     76|#line 542 "/src/php-src/Zend/zend_language_parser.y"
 5823|     76|                             { (yyval.ast) = zend_ast_create(ZEND_AST_LABEL, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     76|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     76|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     76|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5824|     76|#line 5825 "/src/php-src/Zend/zend_language_parser.c"
 5825|     76|    break;
 5826|       |
 5827|      2|  case 175:
  ------------------
  |  Branch (5827:3): [True: 2, False: 305k]
  ------------------
 5828|      2|#line 543 "/src/php-src/Zend/zend_language_parser.y"
 5829|      2|                                     { (yyval.ast) = zend_ast_create(ZEND_AST_CAST_VOID, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|      2|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5830|      2|#line 5831 "/src/php-src/Zend/zend_language_parser.c"
 5831|      2|    break;
 5832|       |
 5833|    237|  case 176:
  ------------------
  |  Branch (5833:3): [True: 237, False: 305k]
  ------------------
 5834|    237|#line 548 "/src/php-src/Zend/zend_language_parser.y"
 5835|    237|                        { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_CATCH_LIST); }
  ------------------
  |  |  320|    237|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    237|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    237|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5836|    237|#line 5837 "/src/php-src/Zend/zend_language_parser.c"
 5837|    237|    break;
 5838|       |
 5839|    194|  case 177:
  ------------------
  |  Branch (5839:3): [True: 194, False: 305k]
  ------------------
 5840|    194|#line 550 "/src/php-src/Zend/zend_language_parser.y"
 5841|    194|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-8].ast), zend_ast_create(ZEND_AST_CATCH, (yyvsp[-5].ast), (yyvsp[-4].ast), (yyvsp[-1].ast))); }
  ------------------
  |  |  316|    194|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    194|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    194|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5842|    194|#line 5843 "/src/php-src/Zend/zend_language_parser.c"
 5843|    194|    break;
 5844|       |
 5845|    195|  case 178:
  ------------------
  |  Branch (5845:3): [True: 195, False: 305k]
  ------------------
 5846|    195|#line 554 "/src/php-src/Zend/zend_language_parser.y"
 5847|    195|                           { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_NAME_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    195|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    195|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    195|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5848|    195|#line 5849 "/src/php-src/Zend/zend_language_parser.c"
 5849|    195|    break;
 5850|       |
 5851|      1|  case 179:
  ------------------
  |  Branch (5851:3): [True: 1, False: 305k]
  ------------------
 5852|      1|#line 555 "/src/php-src/Zend/zend_language_parser.y"
 5853|      1|                                               { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5854|      1|#line 5855 "/src/php-src/Zend/zend_language_parser.c"
 5855|      1|    break;
 5856|       |
 5857|     34|  case 180:
  ------------------
  |  Branch (5857:3): [True: 34, False: 305k]
  ------------------
 5858|     34|#line 559 "/src/php-src/Zend/zend_language_parser.y"
 5859|     34|                       { (yyval.ast) = NULL; }
 5860|     34|#line 5861 "/src/php-src/Zend/zend_language_parser.c"
 5861|     34|    break;
 5862|       |
 5863|    161|  case 181:
  ------------------
  |  Branch (5863:3): [True: 161, False: 305k]
  ------------------
 5864|    161|#line 560 "/src/php-src/Zend/zend_language_parser.y"
 5865|    161|                           { (yyval.ast) = (yyvsp[0].ast); }
 5866|    161|#line 5867 "/src/php-src/Zend/zend_language_parser.c"
 5867|    161|    break;
 5868|       |
 5869|    196|  case 182:
  ------------------
  |  Branch (5869:3): [True: 196, False: 305k]
  ------------------
 5870|    196|#line 564 "/src/php-src/Zend/zend_language_parser.y"
 5871|    196|                       { (yyval.ast) = NULL; }
 5872|    196|#line 5873 "/src/php-src/Zend/zend_language_parser.c"
 5873|    196|    break;
 5874|       |
 5875|     38|  case 183:
  ------------------
  |  Branch (5875:3): [True: 38, False: 305k]
  ------------------
 5876|     38|#line 565 "/src/php-src/Zend/zend_language_parser.y"
 5877|     38|                                                       { (yyval.ast) = (yyvsp[-1].ast); }
 5878|     38|#line 5879 "/src/php-src/Zend/zend_language_parser.c"
 5879|     38|    break;
 5880|       |
 5881|    156|  case 184:
  ------------------
  |  Branch (5881:3): [True: 156, False: 305k]
  ------------------
 5882|    156|#line 569 "/src/php-src/Zend/zend_language_parser.y"
 5883|    156|                               { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_STMT_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    156|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    156|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    156|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5884|    156|#line 5885 "/src/php-src/Zend/zend_language_parser.c"
 5885|    156|    break;
 5886|       |
 5887|     24|  case 185:
  ------------------
  |  Branch (5887:3): [True: 24, False: 305k]
  ------------------
 5888|     24|#line 570 "/src/php-src/Zend/zend_language_parser.y"
 5889|     24|                                                   { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 5890|     24|#line 5891 "/src/php-src/Zend/zend_language_parser.c"
 5891|     24|    break;
 5892|       |
 5893|    180|  case 186:
  ------------------
  |  Branch (5893:3): [True: 180, False: 305k]
  ------------------
 5894|    180|#line 574 "/src/php-src/Zend/zend_language_parser.y"
 5895|    180|                         { (yyval.ast) = zend_ast_create(ZEND_AST_UNSET, (yyvsp[0].ast)); }
  ------------------
  |  |  316|    180|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    180|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    180|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5896|    180|#line 5897 "/src/php-src/Zend/zend_language_parser.c"
 5897|    180|    break;
 5898|       |
 5899|    590|  case 187:
  ------------------
  |  Branch (5899:3): [True: 590, False: 305k]
  ------------------
 5900|    590|#line 578 "/src/php-src/Zend/zend_language_parser.y"
 5901|    590|                         { (yyval.ast) = (yyvsp[0].ast); }
 5902|    590|#line 5903 "/src/php-src/Zend/zend_language_parser.c"
 5903|    590|    break;
 5904|       |
 5905|      1|  case 188:
  ------------------
  |  Branch (5905:3): [True: 1, False: 305k]
  ------------------
 5906|      1|#line 579 "/src/php-src/Zend/zend_language_parser.y"
 5907|      1|                           {
 5908|      1|			zval zv;
 5909|      1|			if (zend_lex_tstring(&zv, (yyvsp[0].ident)) == FAILURE) { YYABORT; }
  ------------------
  |  | 3590|      0|#define YYABORT         goto yyabortlab
  ------------------
  |  Branch (5909:8): [True: 0, False: 1]
  ------------------
 5910|      1|			(yyval.ast) = zend_ast_create_zval(&zv);
 5911|      1|		}
 5912|      0|#line 5913 "/src/php-src/Zend/zend_language_parser.c"
 5913|      0|    break;
 5914|       |
 5915|    560|  case 189:
  ------------------
  |  Branch (5915:3): [True: 560, False: 305k]
  ------------------
 5916|    560|#line 589 "/src/php-src/Zend/zend_language_parser.y"
 5917|    560|                { (yyval.ast) = zend_ast_create_decl(ZEND_AST_FUNC_DECL, (yyvsp[-11].num) | (yyvsp[0].num), (yyvsp[-12].num), (yyvsp[-9].str),
 5918|    560|		      zend_ast_get_str((yyvsp[-10].ast)), (yyvsp[-7].ast), NULL, (yyvsp[-2].ast), (yyvsp[-5].ast), NULL); CG(extra_fn_flags) = (yyvsp[-4].num); }
  ------------------
  |  |   35|    560|# define CG(v) (compiler_globals.v)
  ------------------
 5919|    560|#line 5920 "/src/php-src/Zend/zend_language_parser.c"
 5920|    560|    break;
 5921|       |
 5922|    731|  case 190:
  ------------------
  |  Branch (5922:3): [True: 731, False: 305k]
  ------------------
 5923|    731|#line 594 "/src/php-src/Zend/zend_language_parser.y"
 5924|    731|                        { (yyval.num) = 0; }
 5925|    731|#line 5926 "/src/php-src/Zend/zend_language_parser.c"
 5926|    731|    break;
 5927|       |
 5928|     75|  case 191:
  ------------------
  |  Branch (5928:3): [True: 75, False: 305k]
  ------------------
 5929|     75|#line 595 "/src/php-src/Zend/zend_language_parser.y"
 5930|     75|                                                        { (yyval.num) = ZEND_PARAM_REF; }
  ------------------
  |  | 1057|     75|#define ZEND_PARAM_REF      (1<<3)
  ------------------
 5931|     75|#line 5932 "/src/php-src/Zend/zend_language_parser.c"
 5932|     75|    break;
 5933|       |
 5934|    765|  case 192:
  ------------------
  |  Branch (5934:3): [True: 765, False: 305k]
  ------------------
 5935|    765|#line 599 "/src/php-src/Zend/zend_language_parser.y"
 5936|    765|                       { (yyval.num) = 0; }
 5937|    765|#line 5938 "/src/php-src/Zend/zend_language_parser.c"
 5938|    765|    break;
 5939|       |
 5940|     41|  case 193:
  ------------------
  |  Branch (5940:3): [True: 41, False: 305k]
  ------------------
 5941|     41|#line 600 "/src/php-src/Zend/zend_language_parser.y"
 5942|     41|                            { (yyval.num) = ZEND_PARAM_VARIADIC; }
  ------------------
  |  | 1058|     41|#define ZEND_PARAM_VARIADIC (1<<4)
  ------------------
 5943|     41|#line 5944 "/src/php-src/Zend/zend_language_parser.c"
 5944|     41|    break;
 5945|       |
 5946|     68|  case 194:
  ------------------
  |  Branch (5946:3): [True: 68, False: 305k]
  ------------------
 5947|     68|#line 604 "/src/php-src/Zend/zend_language_parser.y"
 5948|     68|                                        { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|     68|# define CG(v) (compiler_globals.v)
  ------------------
 5949|     68|#line 5950 "/src/php-src/Zend/zend_language_parser.c"
 5950|     68|    break;
 5951|       |
 5952|     66|  case 195:
  ------------------
  |  Branch (5952:3): [True: 66, False: 305k]
  ------------------
 5953|     66|#line 606 "/src/php-src/Zend/zend_language_parser.y"
 5954|     66|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLASS, (yyvsp[-9].num), (yyvsp[-7].num), (yyvsp[-3].str), zend_ast_get_str((yyvsp[-6].ast)), (yyvsp[-5].ast), (yyvsp[-4].ast), (yyvsp[-1].ast), NULL, NULL); }
 5955|     66|#line 5956 "/src/php-src/Zend/zend_language_parser.c"
 5956|     66|    break;
 5957|       |
 5958|  1.31k|  case 196:
  ------------------
  |  Branch (5958:3): [True: 1.31k, False: 304k]
  ------------------
 5959|  1.31k|#line 607 "/src/php-src/Zend/zend_language_parser.y"
 5960|  1.31k|                        { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|  1.31k|# define CG(v) (compiler_globals.v)
  ------------------
 5961|  1.31k|#line 5962 "/src/php-src/Zend/zend_language_parser.c"
 5962|  1.31k|    break;
 5963|       |
 5964|  1.23k|  case 197:
  ------------------
  |  Branch (5964:3): [True: 1.23k, False: 304k]
  ------------------
 5965|  1.23k|#line 609 "/src/php-src/Zend/zend_language_parser.y"
 5966|  1.23k|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLASS, 0, (yyvsp[-7].num), (yyvsp[-3].str), zend_ast_get_str((yyvsp[-6].ast)), (yyvsp[-5].ast), (yyvsp[-4].ast), (yyvsp[-1].ast), NULL, NULL); }
 5967|  1.23k|#line 5968 "/src/php-src/Zend/zend_language_parser.c"
 5968|  1.23k|    break;
 5969|       |
 5970|     76|  case 198:
  ------------------
  |  Branch (5970:3): [True: 76, False: 305k]
  ------------------
 5971|     76|#line 613 "/src/php-src/Zend/zend_language_parser.y"
 5972|     76|                                                                { (yyval.num) = (yyvsp[0].num); }
 5973|     76|#line 5974 "/src/php-src/Zend/zend_language_parser.c"
 5974|     76|    break;
 5975|       |
 5976|      5|  case 199:
  ------------------
  |  Branch (5976:3): [True: 5, False: 305k]
  ------------------
 5977|      5|#line 615 "/src/php-src/Zend/zend_language_parser.y"
 5978|      5|                        { (yyval.num) = zend_add_class_modifier((yyvsp[-1].num), (yyvsp[0].num)); if (!(yyval.num)) { YYERROR; } }
  ------------------
  |  | 3591|      4|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (5978:103): [True: 4, False: 1]
  ------------------
 5979|      1|#line 5980 "/src/php-src/Zend/zend_language_parser.c"
 5980|      1|    break;
 5981|       |
 5982|      4|  case 200:
  ------------------
  |  Branch (5982:3): [True: 4, False: 305k]
  ------------------
 5983|      4|#line 620 "/src/php-src/Zend/zend_language_parser.y"
 5984|      4|                        { (yyval.num) = zend_add_anonymous_class_modifier(0, (yyvsp[0].num)); if (!(yyval.num)) { YYERROR; } }
  ------------------
  |  | 3591|      2|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (5984:99): [True: 2, False: 2]
  ------------------
 5985|      2|#line 5986 "/src/php-src/Zend/zend_language_parser.c"
 5986|      2|    break;
 5987|       |
 5988|      2|  case 201:
  ------------------
  |  Branch (5988:3): [True: 1, False: 305k]
  ------------------
 5989|      1|#line 622 "/src/php-src/Zend/zend_language_parser.y"
 5990|      1|                        { (yyval.num) = zend_add_anonymous_class_modifier((yyvsp[-1].num), (yyvsp[0].num)); if (!(yyval.num)) { YYERROR; } }
  ------------------
  |  | 3591|      1|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (5990:113): [True: 1, False: 0]
  ------------------
 5991|      0|#line 5992 "/src/php-src/Zend/zend_language_parser.c"
 5992|      0|    break;
 5993|       |
 5994|     49|  case 202:
  ------------------
  |  Branch (5994:3): [True: 49, False: 305k]
  ------------------
 5995|     49|#line 626 "/src/php-src/Zend/zend_language_parser.y"
 5996|     49|                                                { (yyval.num) = 0; }
 5997|     49|#line 5998 "/src/php-src/Zend/zend_language_parser.c"
 5998|     49|    break;
 5999|       |
 6000|      1|  case 203:
  ------------------
  |  Branch (6000:3): [True: 1, False: 305k]
  ------------------
 6001|      1|#line 627 "/src/php-src/Zend/zend_language_parser.y"
 6002|      1|                                                { (yyval.num) = (yyvsp[0].num); }
 6003|      1|#line 6004 "/src/php-src/Zend/zend_language_parser.c"
 6004|      1|    break;
 6005|       |
 6006|     48|  case 204:
  ------------------
  |  Branch (6006:3): [True: 48, False: 305k]
  ------------------
 6007|     48|#line 631 "/src/php-src/Zend/zend_language_parser.y"
 6008|     48|                                        { (yyval.num) = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; }
  ------------------
  |  |  234|     48|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
 6009|     48|#line 6010 "/src/php-src/Zend/zend_language_parser.c"
 6010|     48|    break;
 6011|       |
 6012|     16|  case 205:
  ------------------
  |  Branch (6012:3): [True: 16, False: 305k]
  ------------------
 6013|     16|#line 632 "/src/php-src/Zend/zend_language_parser.y"
 6014|     16|                                        { (yyval.num) = ZEND_ACC_FINAL; }
  ------------------
  |  |  230|     16|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
 6015|     16|#line 6016 "/src/php-src/Zend/zend_language_parser.c"
 6016|     16|    break;
 6017|       |
 6018|     22|  case 206:
  ------------------
  |  Branch (6018:3): [True: 22, False: 305k]
  ------------------
 6019|     22|#line 633 "/src/php-src/Zend/zend_language_parser.y"
 6020|     22|                                        { (yyval.num) = ZEND_ACC_READONLY_CLASS|ZEND_ACC_NO_DYNAMIC_PROPERTIES; }
  ------------------
  |  |  311|     22|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
                                                      { (yyval.num) = ZEND_ACC_READONLY_CLASS|ZEND_ACC_NO_DYNAMIC_PROPERTIES; }
  ------------------
  |  |  301|     22|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 6021|     22|#line 6022 "/src/php-src/Zend/zend_language_parser.c"
 6022|     22|    break;
 6023|       |
 6024|    152|  case 207:
  ------------------
  |  Branch (6024:3): [True: 152, False: 305k]
  ------------------
 6025|    152|#line 637 "/src/php-src/Zend/zend_language_parser.y"
 6026|    152|                        { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|    152|# define CG(v) (compiler_globals.v)
  ------------------
 6027|    152|#line 6028 "/src/php-src/Zend/zend_language_parser.c"
 6028|    152|    break;
 6029|       |
 6030|    146|  case 208:
  ------------------
  |  Branch (6030:3): [True: 146, False: 305k]
  ------------------
 6031|    146|#line 639 "/src/php-src/Zend/zend_language_parser.y"
 6032|    146|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_TRAIT, (yyvsp[-5].num), (yyvsp[-3].str), zend_ast_get_str((yyvsp[-4].ast)), NULL, NULL, (yyvsp[-1].ast), NULL, NULL); }
  ------------------
  |  |  282|    146|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
 6033|    146|#line 6034 "/src/php-src/Zend/zend_language_parser.c"
 6034|    146|    break;
 6035|       |
 6036|    176|  case 209:
  ------------------
  |  Branch (6036:3): [True: 176, False: 305k]
  ------------------
 6037|    176|#line 643 "/src/php-src/Zend/zend_language_parser.y"
 6038|    176|                            { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|    176|# define CG(v) (compiler_globals.v)
  ------------------
 6039|    176|#line 6040 "/src/php-src/Zend/zend_language_parser.c"
 6040|    176|    break;
 6041|       |
 6042|    173|  case 210:
  ------------------
  |  Branch (6042:3): [True: 173, False: 305k]
  ------------------
 6043|    173|#line 645 "/src/php-src/Zend/zend_language_parser.y"
 6044|    173|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_INTERFACE, (yyvsp[-6].num), (yyvsp[-3].str), zend_ast_get_str((yyvsp[-5].ast)), NULL, (yyvsp[-4].ast), (yyvsp[-1].ast), NULL, NULL); }
  ------------------
  |  |  281|    173|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
 6045|    173|#line 6046 "/src/php-src/Zend/zend_language_parser.c"
 6046|    173|    break;
 6047|       |
 6048|    174|  case 211:
  ------------------
  |  Branch (6048:3): [True: 174, False: 305k]
  ------------------
 6049|    174|#line 649 "/src/php-src/Zend/zend_language_parser.y"
 6050|    174|                       { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|    174|# define CG(v) (compiler_globals.v)
  ------------------
 6051|    174|#line 6052 "/src/php-src/Zend/zend_language_parser.c"
 6052|    174|    break;
 6053|       |
 6054|    152|  case 212:
  ------------------
  |  Branch (6054:3): [True: 152, False: 305k]
  ------------------
 6055|    152|#line 651 "/src/php-src/Zend/zend_language_parser.y"
 6056|    152|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_ENUM|ZEND_ACC_FINAL, (yyvsp[-7].num), (yyvsp[-3].str), zend_ast_get_str((yyvsp[-6].ast)), NULL, (yyvsp[-4].ast), (yyvsp[-1].ast), NULL, (yyvsp[-5].ast)); }
  ------------------
  |  |  284|    152|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
                                      { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_ENUM|ZEND_ACC_FINAL, (yyvsp[-7].num), (yyvsp[-3].str), zend_ast_get_str((yyvsp[-6].ast)), NULL, (yyvsp[-4].ast), (yyvsp[-1].ast), NULL, (yyvsp[-5].ast)); }
  ------------------
  |  |  230|    152|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
 6057|    152|#line 6058 "/src/php-src/Zend/zend_language_parser.c"
 6058|    152|    break;
 6059|       |
 6060|    134|  case 213:
  ------------------
  |  Branch (6060:3): [True: 134, False: 305k]
  ------------------
 6061|    134|#line 655 "/src/php-src/Zend/zend_language_parser.y"
 6062|    134|                        { (yyval.ast) = NULL; }
 6063|    134|#line 6064 "/src/php-src/Zend/zend_language_parser.c"
 6064|    134|    break;
 6065|       |
 6066|     38|  case 214:
  ------------------
  |  Branch (6066:3): [True: 38, False: 305k]
  ------------------
 6067|     38|#line 656 "/src/php-src/Zend/zend_language_parser.y"
 6068|     38|                              { (yyval.ast) = (yyvsp[0].ast); }
 6069|     38|#line 6070 "/src/php-src/Zend/zend_language_parser.c"
 6070|     38|    break;
 6071|       |
 6072|    135|  case 215:
  ------------------
  |  Branch (6072:3): [True: 135, False: 305k]
  ------------------
 6073|    135|#line 661 "/src/php-src/Zend/zend_language_parser.y"
 6074|    135|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ENUM_CASE, (yyvsp[-2].ast), (yyvsp[-1].ast), ((yyvsp[-3].str) ? zend_ast_create_zval_from_str((yyvsp[-3].str)) : NULL), NULL); }
  ------------------
  |  |  316|    135|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    135|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    405|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 0, False: 135]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6075|    135|#line 6076 "/src/php-src/Zend/zend_language_parser.c"
 6076|    135|    break;
 6077|       |
 6078|     93|  case 216:
  ------------------
  |  Branch (6078:3): [True: 93, False: 305k]
  ------------------
 6079|     93|#line 665 "/src/php-src/Zend/zend_language_parser.y"
 6080|     93|                        { (yyval.ast) = NULL; }
 6081|     93|#line 6082 "/src/php-src/Zend/zend_language_parser.c"
 6082|     93|    break;
 6083|       |
 6084|     42|  case 217:
  ------------------
  |  Branch (6084:3): [True: 42, False: 305k]
  ------------------
 6085|     42|#line 666 "/src/php-src/Zend/zend_language_parser.y"
 6086|     42|                         { (yyval.ast) = (yyvsp[0].ast); }
 6087|     42|#line 6088 "/src/php-src/Zend/zend_language_parser.c"
 6088|     42|    break;
 6089|       |
 6090|  1.16k|  case 218:
  ------------------
  |  Branch (6090:3): [True: 1.16k, False: 304k]
  ------------------
 6091|  1.16k|#line 670 "/src/php-src/Zend/zend_language_parser.y"
 6092|  1.16k|                                                { (yyval.ast) = NULL; }
 6093|  1.16k|#line 6094 "/src/php-src/Zend/zend_language_parser.c"
 6094|  1.16k|    break;
 6095|       |
 6096|    264|  case 219:
  ------------------
  |  Branch (6096:3): [True: 264, False: 305k]
  ------------------
 6097|    264|#line 671 "/src/php-src/Zend/zend_language_parser.y"
 6098|    264|                                        { (yyval.ast) = (yyvsp[0].ast); }
 6099|    264|#line 6100 "/src/php-src/Zend/zend_language_parser.c"
 6100|    264|    break;
 6101|       |
 6102|    155|  case 220:
  ------------------
  |  Branch (6102:3): [True: 155, False: 305k]
  ------------------
 6103|    155|#line 675 "/src/php-src/Zend/zend_language_parser.y"
 6104|    155|                                                { (yyval.ast) = NULL; }
 6105|    155|#line 6106 "/src/php-src/Zend/zend_language_parser.c"
 6106|    155|    break;
 6107|       |
 6108|     19|  case 221:
  ------------------
  |  Branch (6108:3): [True: 19, False: 305k]
  ------------------
 6109|     19|#line 676 "/src/php-src/Zend/zend_language_parser.y"
 6110|     19|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6111|     19|#line 6112 "/src/php-src/Zend/zend_language_parser.c"
 6112|     19|    break;
 6113|       |
 6114|  1.53k|  case 222:
  ------------------
  |  Branch (6114:3): [True: 1.53k, False: 304k]
  ------------------
 6115|  1.53k|#line 680 "/src/php-src/Zend/zend_language_parser.y"
 6116|  1.53k|                                                        { (yyval.ast) = NULL; }
 6117|  1.53k|#line 6118 "/src/php-src/Zend/zend_language_parser.c"
 6118|  1.53k|    break;
 6119|       |
 6120|     67|  case 223:
  ------------------
  |  Branch (6120:3): [True: 67, False: 305k]
  ------------------
 6121|     67|#line 681 "/src/php-src/Zend/zend_language_parser.y"
 6122|     67|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6123|     67|#line 6124 "/src/php-src/Zend/zend_language_parser.c"
 6124|     67|    break;
 6125|       |
 6126|    153|  case 224:
  ------------------
  |  Branch (6126:3): [True: 153, False: 305k]
  ------------------
 6127|    153|#line 685 "/src/php-src/Zend/zend_language_parser.y"
 6128|    153|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6129|    153|#line 6130 "/src/php-src/Zend/zend_language_parser.c"
 6130|    153|    break;
 6131|       |
 6132|     77|  case 225:
  ------------------
  |  Branch (6132:3): [True: 77, False: 305k]
  ------------------
 6133|     77|#line 686 "/src/php-src/Zend/zend_language_parser.y"
 6134|     77|                                        { (yyval.ast) = zend_ast_create(ZEND_AST_REF, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     77|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     77|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     77|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6135|     77|#line 6136 "/src/php-src/Zend/zend_language_parser.c"
 6136|     77|    break;
 6137|       |
 6138|      7|  case 226:
  ------------------
  |  Branch (6138:3): [True: 7, False: 305k]
  ------------------
 6139|      7|#line 687 "/src/php-src/Zend/zend_language_parser.y"
 6140|      7|                                               { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = ZEND_ARRAY_SYNTAX_LIST; }
  ------------------
  |  | 1069|      7|#define ZEND_ARRAY_SYNTAX_LIST 1  /* list() */
  ------------------
 6141|      7|#line 6142 "/src/php-src/Zend/zend_language_parser.c"
 6142|      7|    break;
 6143|       |
 6144|      1|  case 227:
  ------------------
  |  Branch (6144:3): [True: 1, False: 305k]
  ------------------
 6145|      1|#line 688 "/src/php-src/Zend/zend_language_parser.y"
 6146|      1|                                        { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = ZEND_ARRAY_SYNTAX_SHORT; }
  ------------------
  |  | 1071|      1|#define ZEND_ARRAY_SYNTAX_SHORT 3 /* [] */
  ------------------
 6147|      1|#line 6148 "/src/php-src/Zend/zend_language_parser.c"
 6148|      1|    break;
 6149|       |
 6150|    248|  case 228:
  ------------------
  |  Branch (6150:3): [True: 248, False: 305k]
  ------------------
 6151|    248|#line 692 "/src/php-src/Zend/zend_language_parser.y"
 6152|    248|                          { (yyval.ast) = (yyvsp[0].ast); }
 6153|    248|#line 6154 "/src/php-src/Zend/zend_language_parser.c"
 6154|    248|    break;
 6155|       |
 6156|      2|  case 229:
  ------------------
  |  Branch (6156:3): [True: 2, False: 305k]
  ------------------
 6157|      2|#line 693 "/src/php-src/Zend/zend_language_parser.y"
 6158|      2|                                                      { (yyval.ast) = (yyvsp[-2].ast); }
 6159|      2|#line 6160 "/src/php-src/Zend/zend_language_parser.c"
 6160|      2|    break;
 6161|       |
 6162|    199|  case 230:
  ------------------
  |  Branch (6162:3): [True: 199, False: 305k]
  ------------------
 6163|    199|#line 697 "/src/php-src/Zend/zend_language_parser.y"
 6164|    199|                          { (yyval.ast) = (yyvsp[0].ast); }
 6165|    199|#line 6166 "/src/php-src/Zend/zend_language_parser.c"
 6166|    199|    break;
 6167|       |
 6168|      0|  case 231:
  ------------------
  |  Branch (6168:3): [True: 0, False: 305k]
  ------------------
 6169|      0|#line 698 "/src/php-src/Zend/zend_language_parser.y"
 6170|      0|                                                          { (yyval.ast) = (yyvsp[-2].ast); }
 6171|      0|#line 6172 "/src/php-src/Zend/zend_language_parser.c"
 6172|      0|    break;
 6173|       |
 6174|     55|  case 232:
  ------------------
  |  Branch (6174:3): [True: 55, False: 305k]
  ------------------
 6175|     55|#line 702 "/src/php-src/Zend/zend_language_parser.y"
 6176|     55|                          { (yyval.ast) = (yyvsp[0].ast); }
 6177|     55|#line 6178 "/src/php-src/Zend/zend_language_parser.c"
 6178|     55|    break;
 6179|       |
 6180|      0|  case 233:
  ------------------
  |  Branch (6180:3): [True: 0, False: 305k]
  ------------------
 6181|      0|#line 703 "/src/php-src/Zend/zend_language_parser.y"
 6182|      0|                                                          { (yyval.ast) = (yyvsp[-2].ast); }
 6183|      0|#line 6184 "/src/php-src/Zend/zend_language_parser.c"
 6184|      0|    break;
 6185|       |
 6186|     16|  case 234:
  ------------------
  |  Branch (6186:3): [True: 16, False: 305k]
  ------------------
 6187|     16|#line 707 "/src/php-src/Zend/zend_language_parser.y"
 6188|     16|                                                                        { (yyval.ast) = (yyvsp[-1].ast); }
 6189|     16|#line 6190 "/src/php-src/Zend/zend_language_parser.c"
 6190|     16|    break;
 6191|       |
 6192|      1|  case 235:
  ------------------
  |  Branch (6192:3): [True: 1, False: 305k]
  ------------------
 6193|      1|#line 708 "/src/php-src/Zend/zend_language_parser.y"
 6194|      1|                                                                { (yyval.ast) = (yyvsp[-1].ast); }
 6195|      1|#line 6196 "/src/php-src/Zend/zend_language_parser.c"
 6196|      1|    break;
 6197|       |
 6198|      0|  case 236:
  ------------------
  |  Branch (6198:3): [True: 0, False: 305k]
  ------------------
 6199|      0|#line 709 "/src/php-src/Zend/zend_language_parser.y"
 6200|      0|                                                        { (yyval.ast) = (yyvsp[-2].ast); }
 6201|      0|#line 6202 "/src/php-src/Zend/zend_language_parser.c"
 6202|      0|    break;
 6203|       |
 6204|      0|  case 237:
  ------------------
  |  Branch (6204:3): [True: 0, False: 305k]
  ------------------
 6205|      0|#line 710 "/src/php-src/Zend/zend_language_parser.y"
 6206|      0|                                                        { (yyval.ast) = (yyvsp[-2].ast); }
 6207|      0|#line 6208 "/src/php-src/Zend/zend_language_parser.c"
 6208|      0|    break;
 6209|       |
 6210|     20|  case 238:
  ------------------
  |  Branch (6210:3): [True: 20, False: 305k]
  ------------------
 6211|     20|#line 714 "/src/php-src/Zend/zend_language_parser.y"
 6212|     20|                       { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_SWITCH_LIST); }
  ------------------
  |  |  320|     20|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     20|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     20|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6213|     20|#line 6214 "/src/php-src/Zend/zend_language_parser.c"
 6214|     20|    break;
 6215|       |
 6216|     19|  case 239:
  ------------------
  |  Branch (6216:3): [True: 19, False: 305k]
  ------------------
 6217|     19|#line 716 "/src/php-src/Zend/zend_language_parser.y"
 6218|     19|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-4].ast), zend_ast_create(ZEND_AST_SWITCH_CASE, (yyvsp[-2].ast), (yyvsp[0].ast))); }
  ------------------
  |  |  316|     19|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     19|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     19|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6219|     19|#line 6220 "/src/php-src/Zend/zend_language_parser.c"
 6220|     19|    break;
 6221|       |
 6222|      6|  case 240:
  ------------------
  |  Branch (6222:3): [True: 6, False: 305k]
  ------------------
 6223|      6|#line 718 "/src/php-src/Zend/zend_language_parser.y"
 6224|      6|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-4].ast), zend_ast_create_ex(ZEND_AST_SWITCH_CASE, ZEND_ALT_CASE_SYNTAX, (yyvsp[-2].ast), (yyvsp[0].ast))); }
  ------------------
  |  |  318|      6|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6225|      6|#line 6226 "/src/php-src/Zend/zend_language_parser.c"
 6226|      6|    break;
 6227|       |
 6228|      2|  case 241:
  ------------------
  |  Branch (6228:3): [True: 2, False: 305k]
  ------------------
 6229|      2|#line 720 "/src/php-src/Zend/zend_language_parser.y"
 6230|      2|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-3].ast), zend_ast_create(ZEND_AST_SWITCH_CASE, NULL, (yyvsp[0].ast))); }
  ------------------
  |  |  316|      2|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6231|      2|#line 6232 "/src/php-src/Zend/zend_language_parser.c"
 6232|      2|    break;
 6233|       |
 6234|      0|  case 242:
  ------------------
  |  Branch (6234:3): [True: 0, False: 305k]
  ------------------
 6235|      0|#line 722 "/src/php-src/Zend/zend_language_parser.y"
 6236|      0|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-3].ast), zend_ast_create_ex(ZEND_AST_SWITCH_CASE, ZEND_ALT_CASE_SYNTAX, NULL, (yyvsp[0].ast))); }
  ------------------
  |  |  318|      0|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6237|      0|#line 6238 "/src/php-src/Zend/zend_language_parser.c"
 6238|      0|    break;
 6239|       |
 6240|     33|  case 243:
  ------------------
  |  Branch (6240:3): [True: 33, False: 305k]
  ------------------
 6241|     33|#line 728 "/src/php-src/Zend/zend_language_parser.y"
 6242|     33|                        { (yyval.ast) = zend_ast_create(ZEND_AST_MATCH, (yyvsp[-4].ast), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     33|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     33|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     33|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6243|     33|#line 6244 "/src/php-src/Zend/zend_language_parser.c"
 6244|     33|    break;
 6245|       |
 6246|      2|  case 244:
  ------------------
  |  Branch (6246:3): [True: 2, False: 305k]
  ------------------
 6247|      2|#line 732 "/src/php-src/Zend/zend_language_parser.y"
 6248|      2|                       { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_MATCH_ARM_LIST); }
  ------------------
  |  |  320|      2|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6249|      2|#line 6250 "/src/php-src/Zend/zend_language_parser.c"
 6250|      2|    break;
 6251|       |
 6252|     31|  case 245:
  ------------------
  |  Branch (6252:3): [True: 31, False: 305k]
  ------------------
 6253|     31|#line 733 "/src/php-src/Zend/zend_language_parser.y"
 6254|     31|                                                        { (yyval.ast) = (yyvsp[-1].ast); }
 6255|     31|#line 6256 "/src/php-src/Zend/zend_language_parser.c"
 6256|     31|    break;
 6257|       |
 6258|     32|  case 246:
  ------------------
  |  Branch (6258:3): [True: 32, False: 305k]
  ------------------
 6259|     32|#line 737 "/src/php-src/Zend/zend_language_parser.y"
 6260|     32|                          { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_MATCH_ARM_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     32|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     32|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     32|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6261|     32|#line 6262 "/src/php-src/Zend/zend_language_parser.c"
 6262|     32|    break;
 6263|       |
 6264|     23|  case 247:
  ------------------
  |  Branch (6264:3): [True: 23, False: 305k]
  ------------------
 6265|     23|#line 738 "/src/php-src/Zend/zend_language_parser.y"
 6266|     23|                                                       { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6267|     23|#line 6268 "/src/php-src/Zend/zend_language_parser.c"
 6268|     23|    break;
 6269|       |
 6270|     45|  case 248:
  ------------------
  |  Branch (6270:3): [True: 45, False: 305k]
  ------------------
 6271|     45|#line 743 "/src/php-src/Zend/zend_language_parser.y"
 6272|     45|                        { (yyval.ast) = zend_ast_create(ZEND_AST_MATCH_ARM, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     45|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     45|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     45|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6273|     45|#line 6274 "/src/php-src/Zend/zend_language_parser.c"
 6274|     45|    break;
 6275|       |
 6276|     10|  case 249:
  ------------------
  |  Branch (6276:3): [True: 10, False: 305k]
  ------------------
 6277|     10|#line 745 "/src/php-src/Zend/zend_language_parser.y"
 6278|     10|                        { (yyval.ast) = zend_ast_create(ZEND_AST_MATCH_ARM, NULL, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     10|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     10|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     10|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6279|     10|#line 6280 "/src/php-src/Zend/zend_language_parser.c"
 6280|     10|    break;
 6281|       |
 6282|     48|  case 250:
  ------------------
  |  Branch (6282:3): [True: 48, False: 305k]
  ------------------
 6283|     48|#line 749 "/src/php-src/Zend/zend_language_parser.y"
 6284|     48|                     { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_EXPR_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     48|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     48|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     48|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6285|     48|#line 6286 "/src/php-src/Zend/zend_language_parser.c"
 6286|     48|    break;
 6287|       |
 6288|     30|  case 251:
  ------------------
  |  Branch (6288:3): [True: 30, False: 305k]
  ------------------
 6289|     30|#line 750 "/src/php-src/Zend/zend_language_parser.y"
 6290|     30|                                             { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6291|     30|#line 6292 "/src/php-src/Zend/zend_language_parser.c"
 6292|     30|    break;
 6293|       |
 6294|     16|  case 252:
  ------------------
  |  Branch (6294:3): [True: 16, False: 305k]
  ------------------
 6295|     16|#line 755 "/src/php-src/Zend/zend_language_parser.y"
 6296|     16|                          { (yyval.ast) = (yyvsp[0].ast); }
 6297|     16|#line 6298 "/src/php-src/Zend/zend_language_parser.c"
 6298|     16|    break;
 6299|       |
 6300|      0|  case 253:
  ------------------
  |  Branch (6300:3): [True: 0, False: 305k]
  ------------------
 6301|      0|#line 756 "/src/php-src/Zend/zend_language_parser.y"
 6302|      0|                                                        { (yyval.ast) = (yyvsp[-2].ast); }
 6303|      0|#line 6304 "/src/php-src/Zend/zend_language_parser.c"
 6304|      0|    break;
 6305|       |
 6306|     85|  case 254:
  ------------------
  |  Branch (6306:3): [True: 85, False: 305k]
  ------------------
 6307|     85|#line 762 "/src/php-src/Zend/zend_language_parser.y"
 6308|     85|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_IF,
  ------------------
  |  |  320|     85|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     85|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     85|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6309|     85|			      zend_ast_create(ZEND_AST_IF_ELEM, (yyvsp[-2].ast), (yyvsp[0].ast))); }
 6310|     85|#line 6311 "/src/php-src/Zend/zend_language_parser.c"
 6311|     85|    break;
 6312|       |
 6313|      2|  case 255:
  ------------------
  |  Branch (6313:3): [True: 2, False: 305k]
  ------------------
 6314|      2|#line 765 "/src/php-src/Zend/zend_language_parser.y"
 6315|      2|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-5].ast),
 6316|      2|			      zend_ast_create(ZEND_AST_IF_ELEM, (yyvsp[-2].ast), (yyvsp[0].ast))); }
  ------------------
  |  |  316|      2|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6317|      2|#line 6318 "/src/php-src/Zend/zend_language_parser.c"
 6318|      2|    break;
 6319|       |
 6320|     82|  case 256:
  ------------------
  |  Branch (6320:3): [True: 82, False: 305k]
  ------------------
 6321|     82|#line 770 "/src/php-src/Zend/zend_language_parser.y"
 6322|     82|                                                    { (yyval.ast) = (yyvsp[0].ast); }
 6323|     82|#line 6324 "/src/php-src/Zend/zend_language_parser.c"
 6324|     82|    break;
 6325|       |
 6326|      3|  case 257:
  ------------------
  |  Branch (6326:3): [True: 3, False: 305k]
  ------------------
 6327|      3|#line 772 "/src/php-src/Zend/zend_language_parser.y"
 6328|      3|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), zend_ast_create(ZEND_AST_IF_ELEM, NULL, (yyvsp[0].ast))); }
  ------------------
  |  |  316|      3|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      3|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      3|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6329|      3|#line 6330 "/src/php-src/Zend/zend_language_parser.c"
 6330|      3|    break;
 6331|       |
 6332|      5|  case 258:
  ------------------
  |  Branch (6332:3): [True: 5, False: 305k]
  ------------------
 6333|      5|#line 777 "/src/php-src/Zend/zend_language_parser.y"
 6334|      5|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_IF,
  ------------------
  |  |  320|      5|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      5|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      5|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6335|      5|			      zend_ast_create(ZEND_AST_IF_ELEM, (yyvsp[-3].ast), (yyvsp[0].ast))); }
 6336|      5|#line 6337 "/src/php-src/Zend/zend_language_parser.c"
 6337|      5|    break;
 6338|       |
 6339|      1|  case 259:
  ------------------
  |  Branch (6339:3): [True: 1, False: 305k]
  ------------------
 6340|      1|#line 780 "/src/php-src/Zend/zend_language_parser.y"
 6341|      1|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-6].ast),
 6342|      1|			      zend_ast_create(ZEND_AST_IF_ELEM, (yyvsp[-3].ast), (yyvsp[0].ast))); }
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6343|      1|#line 6344 "/src/php-src/Zend/zend_language_parser.c"
 6344|      1|    break;
 6345|       |
 6346|      2|  case 260:
  ------------------
  |  Branch (6346:3): [True: 2, False: 305k]
  ------------------
 6347|      2|#line 785 "/src/php-src/Zend/zend_language_parser.y"
 6348|      2|                                                     { (yyval.ast) = (yyvsp[-2].ast); }
 6349|      2|#line 6350 "/src/php-src/Zend/zend_language_parser.c"
 6350|      2|    break;
 6351|       |
 6352|      2|  case 261:
  ------------------
  |  Branch (6352:3): [True: 2, False: 305k]
  ------------------
 6353|      2|#line 787 "/src/php-src/Zend/zend_language_parser.y"
 6354|      2|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-5].ast),
 6355|      2|			      zend_ast_create(ZEND_AST_IF_ELEM, NULL, (yyvsp[-2].ast))); }
  ------------------
  |  |  316|      2|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6356|      2|#line 6357 "/src/php-src/Zend/zend_language_parser.c"
 6357|      2|    break;
 6358|       |
 6359|    594|  case 262:
  ------------------
  |  Branch (6359:3): [True: 594, False: 305k]
  ------------------
 6360|    594|#line 792 "/src/php-src/Zend/zend_language_parser.y"
 6361|    594|                                                        { (yyval.ast) = (yyvsp[-1].ast); }
 6362|    594|#line 6363 "/src/php-src/Zend/zend_language_parser.c"
 6363|    594|    break;
 6364|       |
 6365|    998|  case 263:
  ------------------
  |  Branch (6365:3): [True: 998, False: 304k]
  ------------------
 6366|    998|#line 793 "/src/php-src/Zend/zend_language_parser.y"
 6367|    998|                        { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_PARAM_LIST); }
  ------------------
  |  |  320|    998|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    998|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    998|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6368|    998|#line 6369 "/src/php-src/Zend/zend_language_parser.c"
 6369|    998|    break;
 6370|       |
 6371|    595|  case 264:
  ------------------
  |  Branch (6371:3): [True: 595, False: 305k]
  ------------------
 6372|    595|#line 799 "/src/php-src/Zend/zend_language_parser.y"
 6373|    595|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_PARAM_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    595|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    595|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    595|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6374|    595|#line 6375 "/src/php-src/Zend/zend_language_parser.c"
 6375|    595|    break;
 6376|       |
 6377|    201|  case 265:
  ------------------
  |  Branch (6377:3): [True: 201, False: 305k]
  ------------------
 6378|    201|#line 801 "/src/php-src/Zend/zend_language_parser.y"
 6379|    201|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6380|    201|#line 6381 "/src/php-src/Zend/zend_language_parser.c"
 6381|    201|    break;
 6382|       |
 6383|      9|  case 266:
  ------------------
  |  Branch (6383:3): [True: 9, False: 305k]
  ------------------
 6384|      9|#line 805 "/src/php-src/Zend/zend_language_parser.y"
 6385|      9|                                        { (yyval.ast) = zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-1].ast)); }
 6386|      9|#line 6387 "/src/php-src/Zend/zend_language_parser.c"
 6387|      9|    break;
 6388|       |
 6389|    787|  case 267:
  ------------------
  |  Branch (6389:3): [True: 787, False: 305k]
  ------------------
 6390|    787|#line 806 "/src/php-src/Zend/zend_language_parser.y"
 6391|    787|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 6392|    787|#line 6393 "/src/php-src/Zend/zend_language_parser.c"
 6393|    787|    break;
 6394|       |
 6395|    777|  case 268:
  ------------------
  |  Branch (6395:3): [True: 777, False: 305k]
  ------------------
 6396|    777|#line 811 "/src/php-src/Zend/zend_language_parser.y"
 6397|    777|                        { (yyval.num) = 0; }
 6398|    777|#line 6399 "/src/php-src/Zend/zend_language_parser.c"
 6399|    777|    break;
 6400|       |
 6401|     31|  case 269:
  ------------------
  |  Branch (6401:3): [True: 31, False: 305k]
  ------------------
 6402|     31|#line 813 "/src/php-src/Zend/zend_language_parser.y"
 6403|     31|                        { (yyval.num) = zend_modifier_list_to_flags(ZEND_MODIFIER_TARGET_CPP, (yyvsp[0].ast));
 6404|     31|			  if (!(yyval.num)) { YYERROR; } }
  ------------------
  |  | 3591|      1|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (6404:10): [True: 1, False: 30]
  ------------------
 6405|     30|#line 6406 "/src/php-src/Zend/zend_language_parser.c"
 6406|     30|    break;
 6407|       |
 6408|    662|  case 270:
  ------------------
  |  Branch (6408:3): [True: 662, False: 305k]
  ------------------
 6409|    662|#line 820 "/src/php-src/Zend/zend_language_parser.y"
 6410|    662|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_PARAM, (yyvsp[-6].num) | (yyvsp[-4].num) | (yyvsp[-3].num), (yyvsp[-5].ast), (yyvsp[-2].ast), NULL,
  ------------------
  |  |  318|    662|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    662|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.98k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 0, False: 662]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6411|    662|					NULL, (yyvsp[-1].str) ? zend_ast_create_zval_from_str((yyvsp[-1].str)) : NULL, (yyvsp[0].ast)); }
 6412|    662|#line 6413 "/src/php-src/Zend/zend_language_parser.c"
 6413|    662|    break;
 6414|       |
 6415|    134|  case 271:
  ------------------
  |  Branch (6415:3): [True: 134, False: 305k]
  ------------------
 6416|    134|#line 824 "/src/php-src/Zend/zend_language_parser.y"
 6417|    134|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_PARAM, (yyvsp[-8].num) | (yyvsp[-6].num) | (yyvsp[-5].num), (yyvsp[-7].ast), (yyvsp[-4].ast), (yyvsp[-2].ast),
  ------------------
  |  |  318|    134|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    134|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    402|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 0, False: 134]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6418|    134|					NULL, (yyvsp[-1].str) ? zend_ast_create_zval_from_str((yyvsp[-1].str)) : NULL, (yyvsp[0].ast)); }
 6419|    134|#line 6420 "/src/php-src/Zend/zend_language_parser.c"
 6420|    134|    break;
 6421|       |
 6422|    842|  case 272:
  ------------------
  |  Branch (6422:3): [True: 842, False: 305k]
  ------------------
 6423|    842|#line 829 "/src/php-src/Zend/zend_language_parser.y"
 6424|    842|                        { (yyval.ast) = NULL; }
 6425|    842|#line 6426 "/src/php-src/Zend/zend_language_parser.c"
 6426|    842|    break;
 6427|       |
 6428|    538|  case 273:
  ------------------
  |  Branch (6428:3): [True: 538, False: 305k]
  ------------------
 6429|    538|#line 830 "/src/php-src/Zend/zend_language_parser.y"
 6430|    538|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6431|    538|#line 6432 "/src/php-src/Zend/zend_language_parser.c"
 6432|    538|    break;
 6433|       |
 6434|    241|  case 274:
  ------------------
  |  Branch (6434:3): [True: 241, False: 305k]
  ------------------
 6435|    241|#line 834 "/src/php-src/Zend/zend_language_parser.y"
 6436|    241|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6437|    241|#line 6438 "/src/php-src/Zend/zend_language_parser.c"
 6438|    241|    break;
 6439|       |
 6440|     21|  case 275:
  ------------------
  |  Branch (6440:3): [True: 21, False: 305k]
  ------------------
 6441|     21|#line 835 "/src/php-src/Zend/zend_language_parser.y"
 6442|     21|                                                { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr |= ZEND_TYPE_NULLABLE; }
  ------------------
  |  | 1067|     21|#define ZEND_TYPE_NULLABLE (1<<8)
  ------------------
 6443|     21|#line 6444 "/src/php-src/Zend/zend_language_parser.c"
 6444|     21|    break;
 6445|       |
 6446|     53|  case 276:
  ------------------
  |  Branch (6446:3): [True: 53, False: 305k]
  ------------------
 6447|     53|#line 836 "/src/php-src/Zend/zend_language_parser.y"
 6448|     53|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6449|     53|#line 6450 "/src/php-src/Zend/zend_language_parser.c"
 6450|     53|    break;
 6451|       |
 6452|     30|  case 277:
  ------------------
  |  Branch (6452:3): [True: 30, False: 305k]
  ------------------
 6453|     30|#line 837 "/src/php-src/Zend/zend_language_parser.y"
 6454|     30|                                        { (yyval.ast) = (yyvsp[0].ast); }
 6455|     30|#line 6456 "/src/php-src/Zend/zend_language_parser.c"
 6456|     30|    break;
 6457|       |
 6458|    455|  case 278:
  ------------------
  |  Branch (6458:3): [True: 455, False: 305k]
  ------------------
 6459|    455|#line 841 "/src/php-src/Zend/zend_language_parser.y"
 6460|    455|                                        { (yyval.ast) = (yyvsp[0].ast); }
 6461|    455|#line 6462 "/src/php-src/Zend/zend_language_parser.c"
 6462|    455|    break;
 6463|       |
 6464|     11|  case 279:
  ------------------
  |  Branch (6464:3): [True: 11, False: 305k]
  ------------------
 6465|     11|#line 842 "/src/php-src/Zend/zend_language_parser.y"
 6466|     11|                                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_TYPE, IS_STATIC); }
  ------------------
  |  |  318|     11|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     11|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     11|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6467|     11|#line 6468 "/src/php-src/Zend/zend_language_parser.c"
 6468|     11|    break;
 6469|       |
 6470|    104|  case 280:
  ------------------
  |  Branch (6470:3): [True: 104, False: 305k]
  ------------------
 6471|    104|#line 846 "/src/php-src/Zend/zend_language_parser.y"
 6472|    104|                     { (yyval.ast) = (yyvsp[0].ast); }
 6473|    104|#line 6474 "/src/php-src/Zend/zend_language_parser.c"
 6474|    104|    break;
 6475|       |
 6476|     17|  case 281:
  ------------------
  |  Branch (6476:3): [True: 17, False: 305k]
  ------------------
 6477|     17|#line 847 "/src/php-src/Zend/zend_language_parser.y"
 6478|     17|                                           { (yyval.ast) = (yyvsp[-1].ast); }
 6479|     17|#line 6480 "/src/php-src/Zend/zend_language_parser.c"
 6480|     17|    break;
 6481|       |
 6482|     53|  case 282:
  ------------------
  |  Branch (6482:3): [True: 53, False: 305k]
  ------------------
 6483|     53|#line 852 "/src/php-src/Zend/zend_language_parser.y"
 6484|     53|                        { (yyval.ast) = zend_ast_create_list(2, ZEND_AST_TYPE_UNION, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  320|     53|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     53|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     53|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6485|     53|#line 6486 "/src/php-src/Zend/zend_language_parser.c"
 6486|     53|    break;
 6487|       |
 6488|     14|  case 283:
  ------------------
  |  Branch (6488:3): [True: 14, False: 305k]
  ------------------
 6489|     14|#line 854 "/src/php-src/Zend/zend_language_parser.y"
 6490|     14|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6491|     14|#line 6492 "/src/php-src/Zend/zend_language_parser.c"
 6492|     14|    break;
 6493|       |
 6494|     48|  case 284:
  ------------------
  |  Branch (6494:3): [True: 48, False: 305k]
  ------------------
 6495|     48|#line 858 "/src/php-src/Zend/zend_language_parser.y"
 6496|     48|                                                                          { (yyval.ast) = zend_ast_create_list(2, ZEND_AST_TYPE_INTERSECTION, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  320|     48|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     48|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     48|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6497|     48|#line 6498 "/src/php-src/Zend/zend_language_parser.c"
 6498|     48|    break;
 6499|       |
 6500|      3|  case 285:
  ------------------
  |  Branch (6500:3): [True: 3, False: 305k]
  ------------------
 6501|      3|#line 859 "/src/php-src/Zend/zend_language_parser.y"
 6502|      3|                                                                                 { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6503|      3|#line 6504 "/src/php-src/Zend/zend_language_parser.c"
 6504|      3|    break;
 6505|       |
 6506|    440|  case 286:
  ------------------
  |  Branch (6506:3): [True: 440, False: 305k]
  ------------------
 6507|    440|#line 866 "/src/php-src/Zend/zend_language_parser.y"
 6508|    440|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 6509|    440|#line 6510 "/src/php-src/Zend/zend_language_parser.c"
 6510|    440|    break;
 6511|       |
 6512|     32|  case 287:
  ------------------
  |  Branch (6512:3): [True: 32, False: 305k]
  ------------------
 6513|     32|#line 867 "/src/php-src/Zend/zend_language_parser.y"
 6514|     32|                                                { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr |= ZEND_TYPE_NULLABLE; }
  ------------------
  |  | 1067|     32|#define ZEND_TYPE_NULLABLE (1<<8)
  ------------------
 6515|     32|#line 6516 "/src/php-src/Zend/zend_language_parser.c"
 6516|     32|    break;
 6517|       |
 6518|     56|  case 288:
  ------------------
  |  Branch (6518:3): [True: 56, False: 305k]
  ------------------
 6519|     56|#line 868 "/src/php-src/Zend/zend_language_parser.y"
 6520|     56|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6521|     56|#line 6522 "/src/php-src/Zend/zend_language_parser.c"
 6522|     56|    break;
 6523|       |
 6524|     10|  case 289:
  ------------------
  |  Branch (6524:3): [True: 10, False: 305k]
  ------------------
 6525|     10|#line 869 "/src/php-src/Zend/zend_language_parser.y"
 6526|     10|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 6527|     10|#line 6528 "/src/php-src/Zend/zend_language_parser.c"
 6528|     10|    break;
 6529|       |
 6530|     94|  case 290:
  ------------------
  |  Branch (6530:3): [True: 94, False: 305k]
  ------------------
 6531|     94|#line 873 "/src/php-src/Zend/zend_language_parser.y"
 6532|     94|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_TYPE, IS_ARRAY); }
  ------------------
  |  |  318|     94|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     94|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     94|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6533|     94|#line 6534 "/src/php-src/Zend/zend_language_parser.c"
 6534|     94|    break;
 6535|       |
 6536|     17|  case 291:
  ------------------
  |  Branch (6536:3): [True: 17, False: 305k]
  ------------------
 6537|     17|#line 874 "/src/php-src/Zend/zend_language_parser.y"
 6538|     17|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_TYPE, IS_CALLABLE); }
  ------------------
  |  |  318|     17|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     17|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     17|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6539|     17|#line 6540 "/src/php-src/Zend/zend_language_parser.c"
 6540|     17|    break;
 6541|       |
 6542|    994|  case 292:
  ------------------
  |  Branch (6542:3): [True: 994, False: 304k]
  ------------------
 6543|    994|#line 875 "/src/php-src/Zend/zend_language_parser.y"
 6544|    994|                                { (yyval.ast) = (yyvsp[0].ast); }
 6545|    994|#line 6546 "/src/php-src/Zend/zend_language_parser.c"
 6546|    994|    break;
 6547|       |
 6548|    118|  case 293:
  ------------------
  |  Branch (6548:3): [True: 118, False: 305k]
  ------------------
 6549|    118|#line 879 "/src/php-src/Zend/zend_language_parser.y"
 6550|    118|                                    { (yyval.ast) = (yyvsp[0].ast); }
 6551|    118|#line 6552 "/src/php-src/Zend/zend_language_parser.c"
 6552|    118|    break;
 6553|       |
 6554|     17|  case 294:
  ------------------
  |  Branch (6554:3): [True: 17, False: 305k]
  ------------------
 6555|     17|#line 880 "/src/php-src/Zend/zend_language_parser.y"
 6556|     17|                                                          { (yyval.ast) = (yyvsp[-1].ast); }
 6557|     17|#line 6558 "/src/php-src/Zend/zend_language_parser.c"
 6558|     17|    break;
 6559|       |
 6560|     57|  case 295:
  ------------------
  |  Branch (6560:3): [True: 57, False: 305k]
  ------------------
 6561|     57|#line 885 "/src/php-src/Zend/zend_language_parser.y"
 6562|     57|                        { (yyval.ast) = zend_ast_create_list(2, ZEND_AST_TYPE_UNION, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  320|     57|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     57|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     57|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6563|     57|#line 6564 "/src/php-src/Zend/zend_language_parser.c"
 6564|     57|    break;
 6565|       |
 6566|     19|  case 296:
  ------------------
  |  Branch (6566:3): [True: 19, False: 305k]
  ------------------
 6567|     19|#line 887 "/src/php-src/Zend/zend_language_parser.y"
 6568|     19|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6569|     19|#line 6570 "/src/php-src/Zend/zend_language_parser.c"
 6570|     19|    break;
 6571|       |
 6572|     28|  case 297:
  ------------------
  |  Branch (6572:3): [True: 28, False: 305k]
  ------------------
 6573|     28|#line 892 "/src/php-src/Zend/zend_language_parser.y"
 6574|     28|                        { (yyval.ast) = zend_ast_create_list(2, ZEND_AST_TYPE_INTERSECTION, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  320|     28|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     28|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     28|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6575|     28|#line 6576 "/src/php-src/Zend/zend_language_parser.c"
 6576|     28|    break;
 6577|       |
 6578|      2|  case 298:
  ------------------
  |  Branch (6578:3): [True: 2, False: 305k]
  ------------------
 6579|      2|#line 894 "/src/php-src/Zend/zend_language_parser.y"
 6580|      2|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6581|      2|#line 6582 "/src/php-src/Zend/zend_language_parser.c"
 6582|      2|    break;
 6583|       |
 6584|  1.29k|  case 299:
  ------------------
  |  Branch (6584:3): [True: 1.29k, False: 304k]
  ------------------
 6585|  1.29k|#line 898 "/src/php-src/Zend/zend_language_parser.y"
 6586|  1.29k|                        { (yyval.ast) = NULL; }
 6587|  1.29k|#line 6588 "/src/php-src/Zend/zend_language_parser.c"
 6588|  1.29k|    break;
 6589|       |
 6590|    283|  case 300:
  ------------------
  |  Branch (6590:3): [True: 283, False: 305k]
  ------------------
 6591|    283|#line 899 "/src/php-src/Zend/zend_language_parser.y"
 6592|    283|                                { (yyval.ast) = (yyvsp[0].ast); }
 6593|    283|#line 6594 "/src/php-src/Zend/zend_language_parser.c"
 6594|    283|    break;
 6595|       |
 6596|  1.35k|  case 301:
  ------------------
  |  Branch (6596:3): [True: 1.35k, False: 304k]
  ------------------
 6597|  1.35k|#line 903 "/src/php-src/Zend/zend_language_parser.y"
 6598|  1.35k|                        { (yyval.ast) = zend_ast_create_arg_list(0, ZEND_AST_ARG_LIST); }
  ------------------
  |  |  322|  1.35k|	ZEND_AST_SPEC_CALL(zend_ast_create_arg_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.35k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.35k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6599|  1.35k|#line 6600 "/src/php-src/Zend/zend_language_parser.c"
 6600|  1.35k|    break;
 6601|       |
 6602|  5.24k|  case 302:
  ------------------
  |  Branch (6602:3): [True: 5.24k, False: 300k]
  ------------------
 6603|  5.24k|#line 904 "/src/php-src/Zend/zend_language_parser.y"
 6604|  5.24k|                                                               { (yyval.ast) = (yyvsp[-2].ast); }
 6605|  5.24k|#line 6606 "/src/php-src/Zend/zend_language_parser.c"
 6606|  5.24k|    break;
 6607|       |
 6608|  5.31k|  case 303:
  ------------------
  |  Branch (6608:3): [True: 5.31k, False: 300k]
  ------------------
 6609|  5.31k|#line 909 "/src/php-src/Zend/zend_language_parser.y"
 6610|  5.31k|                        { (yyval.ast) = zend_ast_create_arg_list(1, ZEND_AST_ARG_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  322|  5.31k|	ZEND_AST_SPEC_CALL(zend_ast_create_arg_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  5.31k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  5.31k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6611|  5.31k|#line 6612 "/src/php-src/Zend/zend_language_parser.c"
 6612|  5.31k|    break;
 6613|       |
 6614|  1.53k|  case 304:
  ------------------
  |  Branch (6614:3): [True: 1.53k, False: 304k]
  ------------------
 6615|  1.53k|#line 911 "/src/php-src/Zend/zend_language_parser.y"
 6616|  1.53k|                        { (yyval.ast) = zend_ast_arg_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6617|  1.53k|#line 6618 "/src/php-src/Zend/zend_language_parser.c"
 6618|  1.53k|    break;
 6619|       |
 6620|      0|  case 305:
  ------------------
  |  Branch (6620:3): [True: 0, False: 305k]
  ------------------
 6621|      0|#line 924 "/src/php-src/Zend/zend_language_parser.y"
 6622|      0|                        { (yyval.ast) = zend_ast_create_arg_list(0, ZEND_AST_ARG_LIST); }
  ------------------
  |  |  322|      0|	ZEND_AST_SPEC_CALL(zend_ast_create_arg_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6623|      0|#line 6624 "/src/php-src/Zend/zend_language_parser.c"
 6624|      0|    break;
 6625|       |
 6626|      4|  case 306:
  ------------------
  |  Branch (6626:3): [True: 4, False: 305k]
  ------------------
 6627|      4|#line 925 "/src/php-src/Zend/zend_language_parser.y"
 6628|      4|                                                                     { (yyval.ast) = (yyvsp[-2].ast); }
 6629|      4|#line 6630 "/src/php-src/Zend/zend_language_parser.c"
 6630|      4|    break;
 6631|       |
 6632|      0|  case 307:
  ------------------
  |  Branch (6632:3): [True: 0, False: 305k]
  ------------------
 6633|      0|#line 926 "/src/php-src/Zend/zend_language_parser.y"
 6634|      0|                                 { (yyval.ast) = zend_ast_create_arg_list(1, ZEND_AST_ARG_LIST, (yyvsp[-2].ast)); }
  ------------------
  |  |  322|      0|	ZEND_AST_SPEC_CALL(zend_ast_create_arg_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6635|      0|#line 6636 "/src/php-src/Zend/zend_language_parser.c"
 6636|      0|    break;
 6637|       |
 6638|      4|  case 308:
  ------------------
  |  Branch (6638:3): [True: 4, False: 305k]
  ------------------
 6639|      4|#line 931 "/src/php-src/Zend/zend_language_parser.y"
 6640|      4|                        { (yyval.ast) = zend_ast_create_arg_list(2, ZEND_AST_ARG_LIST, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  322|      4|	ZEND_AST_SPEC_CALL(zend_ast_create_arg_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      4|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      4|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6641|      4|#line 6642 "/src/php-src/Zend/zend_language_parser.c"
 6642|      4|    break;
 6643|       |
 6644|      0|  case 309:
  ------------------
  |  Branch (6644:3): [True: 0, False: 305k]
  ------------------
 6645|      0|#line 933 "/src/php-src/Zend/zend_language_parser.y"
 6646|      0|                        { (yyval.ast) = zend_ast_create_arg_list(1, ZEND_AST_ARG_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  322|      0|	ZEND_AST_SPEC_CALL(zend_ast_create_arg_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6647|      0|#line 6648 "/src/php-src/Zend/zend_language_parser.c"
 6648|      0|    break;
 6649|       |
 6650|      0|  case 310:
  ------------------
  |  Branch (6650:3): [True: 0, False: 305k]
  ------------------
 6651|      0|#line 935 "/src/php-src/Zend/zend_language_parser.y"
 6652|      0|                        { (yyval.ast) = zend_ast_arg_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6653|      0|#line 6654 "/src/php-src/Zend/zend_language_parser.c"
 6654|      0|    break;
 6655|       |
 6656|     52|  case 311:
  ------------------
  |  Branch (6656:3): [True: 52, False: 305k]
  ------------------
 6657|     52|#line 940 "/src/php-src/Zend/zend_language_parser.y"
 6658|     52|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NAMED_ARG, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     52|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     52|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     52|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6659|     52|#line 6660 "/src/php-src/Zend/zend_language_parser.c"
 6660|     52|    break;
 6661|       |
 6662|     72|  case 312:
  ------------------
  |  Branch (6662:3): [True: 72, False: 305k]
  ------------------
 6663|     72|#line 942 "/src/php-src/Zend/zend_language_parser.y"
 6664|     72|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_PLACEHOLDER_ARG, ZEND_PLACEHOLDER_VARIADIC); }
  ------------------
  |  |  318|     72|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     72|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     72|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6665|     72|#line 6666 "/src/php-src/Zend/zend_language_parser.c"
 6666|     72|    break;
 6667|       |
 6668|      5|  case 313:
  ------------------
  |  Branch (6668:3): [True: 5, False: 305k]
  ------------------
 6669|      5|#line 944 "/src/php-src/Zend/zend_language_parser.y"
 6670|      5|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PLACEHOLDER_ARG); }
  ------------------
  |  |  316|      5|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      5|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      5|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6671|      5|#line 6672 "/src/php-src/Zend/zend_language_parser.c"
 6672|      5|    break;
 6673|       |
 6674|      0|  case 314:
  ------------------
  |  Branch (6674:3): [True: 0, False: 305k]
  ------------------
 6675|      0|#line 946 "/src/php-src/Zend/zend_language_parser.y"
 6676|      0|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NAMED_ARG, (yyvsp[-2].ast), zend_ast_create(ZEND_AST_PLACEHOLDER_ARG)); }
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6677|      0|#line 6678 "/src/php-src/Zend/zend_language_parser.c"
 6678|      0|    break;
 6679|       |
 6680|     45|  case 315:
  ------------------
  |  Branch (6680:3): [True: 45, False: 305k]
  ------------------
 6681|     45|#line 948 "/src/php-src/Zend/zend_language_parser.y"
 6682|     45|                        { (yyval.ast) = zend_ast_create(ZEND_AST_UNPACK, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     45|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     45|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     45|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6683|     45|#line 6684 "/src/php-src/Zend/zend_language_parser.c"
 6684|     45|    break;
 6685|       |
 6686|  6.68k|  case 316:
  ------------------
  |  Branch (6686:3): [True: 6.68k, False: 299k]
  ------------------
 6687|  6.68k|#line 952 "/src/php-src/Zend/zend_language_parser.y"
 6688|  6.68k|                     { (yyval.ast) = (yyvsp[0].ast); }
 6689|  6.68k|#line 6690 "/src/php-src/Zend/zend_language_parser.c"
 6690|  6.68k|    break;
 6691|       |
 6692|    174|  case 317:
  ------------------
  |  Branch (6692:3): [True: 174, False: 305k]
  ------------------
 6693|    174|#line 953 "/src/php-src/Zend/zend_language_parser.y"
 6694|    174|                                 { (yyval.ast) = (yyvsp[0].ast); }
 6695|    174|#line 6696 "/src/php-src/Zend/zend_language_parser.c"
 6696|    174|    break;
 6697|       |
 6698|      2|  case 318:
  ------------------
  |  Branch (6698:3): [True: 2, False: 305k]
  ------------------
 6699|      2|#line 957 "/src/php-src/Zend/zend_language_parser.y"
 6700|      2|                                               { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6701|      2|#line 6702 "/src/php-src/Zend/zend_language_parser.c"
 6702|      2|    break;
 6703|       |
 6704|     28|  case 319:
  ------------------
  |  Branch (6704:3): [True: 28, False: 305k]
  ------------------
 6705|     28|#line 958 "/src/php-src/Zend/zend_language_parser.y"
 6706|     28|                           { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_STMT_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     28|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     28|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     28|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6707|     28|#line 6708 "/src/php-src/Zend/zend_language_parser.c"
 6708|     28|    break;
 6709|       |
 6710|     30|  case 320:
  ------------------
  |  Branch (6710:3): [True: 30, False: 305k]
  ------------------
 6711|     30|#line 963 "/src/php-src/Zend/zend_language_parser.y"
 6712|     30|                { (yyval.ast) = zend_ast_create(ZEND_AST_GLOBAL, zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast))); }
  ------------------
  |  |  316|     30|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     30|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     30|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6713|     30|#line 6714 "/src/php-src/Zend/zend_language_parser.c"
 6714|     30|    break;
 6715|       |
 6716|      0|  case 321:
  ------------------
  |  Branch (6716:3): [True: 0, False: 305k]
  ------------------
 6717|      0|#line 968 "/src/php-src/Zend/zend_language_parser.y"
 6718|      0|                                               { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6719|      0|#line 6720 "/src/php-src/Zend/zend_language_parser.c"
 6720|      0|    break;
 6721|       |
 6722|     42|  case 322:
  ------------------
  |  Branch (6722:3): [True: 42, False: 305k]
  ------------------
 6723|     42|#line 969 "/src/php-src/Zend/zend_language_parser.y"
 6724|     42|                           { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_STMT_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     42|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     42|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     42|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6725|     42|#line 6726 "/src/php-src/Zend/zend_language_parser.c"
 6726|     42|    break;
 6727|       |
 6728|     12|  case 323:
  ------------------
  |  Branch (6728:3): [True: 12, False: 305k]
  ------------------
 6729|     12|#line 973 "/src/php-src/Zend/zend_language_parser.y"
 6730|     12|                                                { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC, (yyvsp[0].ast), NULL); }
  ------------------
  |  |  316|     12|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     12|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     12|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6731|     12|#line 6732 "/src/php-src/Zend/zend_language_parser.c"
 6732|     12|    break;
 6733|       |
 6734|     30|  case 324:
  ------------------
  |  Branch (6734:3): [True: 30, False: 305k]
  ------------------
 6735|     30|#line 974 "/src/php-src/Zend/zend_language_parser.y"
 6736|     30|                                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     30|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     30|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     30|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6737|     30|#line 6738 "/src/php-src/Zend/zend_language_parser.c"
 6738|     30|    break;
 6739|       |
 6740|  1.63k|  case 325:
  ------------------
  |  Branch (6740:3): [True: 1.63k, False: 304k]
  ------------------
 6741|  1.63k|#line 979 "/src/php-src/Zend/zend_language_parser.y"
 6742|  1.63k|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 6743|  1.63k|#line 6744 "/src/php-src/Zend/zend_language_parser.c"
 6744|  1.63k|    break;
 6745|       |
 6746|  1.90k|  case 326:
  ------------------
  |  Branch (6746:3): [True: 1.90k, False: 304k]
  ------------------
 6747|  1.90k|#line 981 "/src/php-src/Zend/zend_language_parser.y"
 6748|  1.90k|                        { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_STMT_LIST); }
  ------------------
  |  |  320|  1.90k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.90k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.90k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6749|  1.90k|#line 6750 "/src/php-src/Zend/zend_language_parser.c"
 6750|  1.90k|    break;
 6751|       |
 6752|    409|  case 327:
  ------------------
  |  Branch (6752:3): [True: 409, False: 305k]
  ------------------
 6753|    409|#line 987 "/src/php-src/Zend/zend_language_parser.y"
 6754|    409|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP_GROUP, (yyvsp[-2].ast), (yyvsp[-1].ast), NULL);
  ------------------
  |  |  316|    409|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    409|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    409|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6755|    409|			  (yyval.ast)->attr = (yyvsp[-3].num); }
 6756|    409|#line 6757 "/src/php-src/Zend/zend_language_parser.c"
 6757|    409|    break;
 6758|       |
 6759|    143|  case 328:
  ------------------
  |  Branch (6759:3): [True: 143, False: 305k]
  ------------------
 6760|    143|#line 990 "/src/php-src/Zend/zend_language_parser.y"
 6761|    143|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP_GROUP, (yyvsp[-1].ast), zend_ast_create_list(1, ZEND_AST_PROP_DECL, (yyvsp[0].ast)), NULL);
  ------------------
  |  |  316|    143|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    143|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    143|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6762|    143|			  (yyval.ast)->attr = (yyvsp[-2].num); }
 6763|    143|#line 6764 "/src/php-src/Zend/zend_language_parser.c"
 6764|    143|    break;
 6765|       |
 6766|    131|  case 329:
  ------------------
  |  Branch (6766:3): [True: 131, False: 305k]
  ------------------
 6767|    131|#line 993 "/src/php-src/Zend/zend_language_parser.y"
 6768|    131|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CLASS_CONST_GROUP, (yyvsp[-1].ast), NULL, NULL);
  ------------------
  |  |  316|    131|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    131|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    131|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6769|    131|			  (yyval.ast)->attr = (yyvsp[-3].num); }
 6770|    131|#line 6771 "/src/php-src/Zend/zend_language_parser.c"
 6771|    131|    break;
 6772|       |
 6773|     22|  case 330:
  ------------------
  |  Branch (6773:3): [True: 22, False: 305k]
  ------------------
 6774|     22|#line 996 "/src/php-src/Zend/zend_language_parser.y"
 6775|     22|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CLASS_CONST_GROUP, (yyvsp[-1].ast), NULL, (yyvsp[-2].ast));
  ------------------
  |  |  316|     22|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     22|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     22|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6776|     22|			  (yyval.ast)->attr = (yyvsp[-4].num); }
 6777|     22|#line 6778 "/src/php-src/Zend/zend_language_parser.c"
 6778|     22|    break;
 6779|       |
 6780|    689|  case 331:
  ------------------
  |  Branch (6780:3): [True: 689, False: 305k]
  ------------------
 6781|    689|#line 1000 "/src/php-src/Zend/zend_language_parser.y"
 6782|    689|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_METHOD, (yyvsp[-9].num) | (yyvsp[-11].num) | (yyvsp[0].num), (yyvsp[-10].num), (yyvsp[-7].str),
 6783|    689|				  zend_ast_get_str((yyvsp[-8].ast)), (yyvsp[-5].ast), NULL, (yyvsp[-1].ast), (yyvsp[-3].ast), NULL); CG(extra_fn_flags) = (yyvsp[-2].num); }
  ------------------
  |  |   35|    689|# define CG(v) (compiler_globals.v)
  ------------------
 6784|    689|#line 6785 "/src/php-src/Zend/zend_language_parser.c"
 6785|    689|    break;
 6786|       |
 6787|    135|  case 332:
  ------------------
  |  Branch (6787:3): [True: 135, False: 305k]
  ------------------
 6788|    135|#line 1002 "/src/php-src/Zend/zend_language_parser.y"
 6789|    135|                          { (yyval.ast) = (yyvsp[0].ast); }
 6790|    135|#line 6791 "/src/php-src/Zend/zend_language_parser.c"
 6791|    135|    break;
 6792|       |
 6793|  1.49k|  case 333:
  ------------------
  |  Branch (6793:3): [True: 1.49k, False: 304k]
  ------------------
 6794|  1.49k|#line 1006 "/src/php-src/Zend/zend_language_parser.y"
 6795|  1.49k|                                           { (yyval.ast) = (yyvsp[0].ast); }
 6796|  1.49k|#line 6797 "/src/php-src/Zend/zend_language_parser.c"
 6797|  1.49k|    break;
 6798|       |
 6799|     31|  case 334:
  ------------------
  |  Branch (6799:3): [True: 31, False: 305k]
  ------------------
 6800|     31|#line 1007 "/src/php-src/Zend/zend_language_parser.y"
 6801|     31|                                                      { (yyval.ast) = zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-1].ast)); }
 6802|     31|#line 6803 "/src/php-src/Zend/zend_language_parser.c"
 6803|     31|    break;
 6804|       |
 6805|    106|  case 335:
  ------------------
  |  Branch (6805:3): [True: 106, False: 305k]
  ------------------
 6806|    106|#line 1009 "/src/php-src/Zend/zend_language_parser.y"
 6807|    106|                        { (yyval.ast) = zend_ast_create(ZEND_AST_USE_TRAIT, (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    106|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    106|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    106|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6808|    106|#line 6809 "/src/php-src/Zend/zend_language_parser.c"
 6809|    106|    break;
 6810|       |
 6811|    208|  case 336:
  ------------------
  |  Branch (6811:3): [True: 208, False: 305k]
  ------------------
 6812|    208|#line 1013 "/src/php-src/Zend/zend_language_parser.y"
 6813|    208|                           { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_NAME_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    208|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    208|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    208|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6814|    208|#line 6815 "/src/php-src/Zend/zend_language_parser.c"
 6815|    208|    break;
 6816|       |
 6817|     32|  case 337:
  ------------------
  |  Branch (6817:3): [True: 32, False: 305k]
  ------------------
 6818|     32|#line 1014 "/src/php-src/Zend/zend_language_parser.y"
 6819|     32|                                               { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 6820|     32|#line 6821 "/src/php-src/Zend/zend_language_parser.c"
 6821|     32|    break;
 6822|       |
 6823|     79|  case 338:
  ------------------
  |  Branch (6823:3): [True: 79, False: 305k]
  ------------------
 6824|     79|#line 1018 "/src/php-src/Zend/zend_language_parser.y"
 6825|     79|                                                                                { (yyval.ast) = NULL; }
 6826|     79|#line 6827 "/src/php-src/Zend/zend_language_parser.c"
 6827|     79|    break;
 6828|       |
 6829|      0|  case 339:
  ------------------
  |  Branch (6829:3): [True: 0, False: 305k]
  ------------------
 6830|      0|#line 1019 "/src/php-src/Zend/zend_language_parser.y"
 6831|      0|                                                                        { (yyval.ast) = NULL; }
 6832|      0|#line 6833 "/src/php-src/Zend/zend_language_parser.c"
 6833|      0|    break;
 6834|       |
 6835|     27|  case 340:
  ------------------
  |  Branch (6835:3): [True: 27, False: 305k]
  ------------------
 6836|     27|#line 1020 "/src/php-src/Zend/zend_language_parser.y"
 6837|     27|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 6838|     27|#line 6839 "/src/php-src/Zend/zend_language_parser.c"
 6839|     27|    break;
 6840|       |
 6841|     28|  case 341:
  ------------------
  |  Branch (6841:3): [True: 28, False: 305k]
  ------------------
 6842|     28|#line 1025 "/src/php-src/Zend/zend_language_parser.y"
 6843|     28|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_TRAIT_ADAPTATIONS, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     28|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     28|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     28|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6844|     28|#line 6845 "/src/php-src/Zend/zend_language_parser.c"
 6845|     28|    break;
 6846|       |
 6847|      3|  case 342:
  ------------------
  |  Branch (6847:3): [True: 3, False: 305k]
  ------------------
 6848|      3|#line 1027 "/src/php-src/Zend/zend_language_parser.y"
 6849|      3|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 6850|      3|#line 6851 "/src/php-src/Zend/zend_language_parser.c"
 6851|      3|    break;
 6852|       |
 6853|     11|  case 343:
  ------------------
  |  Branch (6853:3): [True: 11, False: 305k]
  ------------------
 6854|     11|#line 1031 "/src/php-src/Zend/zend_language_parser.y"
 6855|     11|                                        { (yyval.ast) = (yyvsp[-1].ast); }
 6856|     11|#line 6857 "/src/php-src/Zend/zend_language_parser.c"
 6857|     11|    break;
 6858|       |
 6859|     20|  case 344:
  ------------------
  |  Branch (6859:3): [True: 20, False: 305k]
  ------------------
 6860|     20|#line 1032 "/src/php-src/Zend/zend_language_parser.y"
 6861|     20|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 6862|     20|#line 6863 "/src/php-src/Zend/zend_language_parser.c"
 6863|     20|    break;
 6864|       |
 6865|     11|  case 345:
  ------------------
  |  Branch (6865:3): [True: 11, False: 305k]
  ------------------
 6866|     11|#line 1037 "/src/php-src/Zend/zend_language_parser.y"
 6867|     11|                { (yyval.ast) = zend_ast_create(ZEND_AST_TRAIT_PRECEDENCE, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     11|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     11|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     11|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6868|     11|#line 6869 "/src/php-src/Zend/zend_language_parser.c"
 6869|     11|    break;
 6870|       |
 6871|     12|  case 346:
  ------------------
  |  Branch (6871:3): [True: 12, False: 305k]
  ------------------
 6872|     12|#line 1042 "/src/php-src/Zend/zend_language_parser.y"
 6873|     12|                        { (yyval.ast) = zend_ast_create(ZEND_AST_TRAIT_ALIAS, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     12|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     12|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     12|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6874|     12|#line 6875 "/src/php-src/Zend/zend_language_parser.c"
 6875|     12|    break;
 6876|       |
 6877|      1|  case 347:
  ------------------
  |  Branch (6877:3): [True: 1, False: 305k]
  ------------------
 6878|      1|#line 1044 "/src/php-src/Zend/zend_language_parser.y"
 6879|      1|                        { zval zv;
 6880|      1|			  if (zend_lex_tstring(&zv, (yyvsp[0].ident)) == FAILURE) { YYABORT; }
  ------------------
  |  | 3590|      0|#define YYABORT         goto yyabortlab
  ------------------
  |  Branch (6880:10): [True: 0, False: 1]
  ------------------
 6881|      1|			  (yyval.ast) = zend_ast_create(ZEND_AST_TRAIT_ALIAS, (yyvsp[-2].ast), zend_ast_create_zval(&zv)); }
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6882|      0|#line 6883 "/src/php-src/Zend/zend_language_parser.c"
 6883|      0|    break;
 6884|       |
 6885|      0|  case 348:
  ------------------
  |  Branch (6885:3): [True: 0, False: 305k]
  ------------------
 6886|      0|#line 1048 "/src/php-src/Zend/zend_language_parser.y"
 6887|      0|                        { uint32_t modifiers = zend_modifier_token_to_flag(ZEND_MODIFIER_TARGET_METHOD, (yyvsp[-1].num));
 6888|      0|			  (yyval.ast) = zend_ast_create_ex(ZEND_AST_TRAIT_ALIAS, modifiers, (yyvsp[-3].ast), (yyvsp[0].ast));
  ------------------
  |  |  318|      0|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6889|       |			  /* identifier nonterminal can cause allocations, so we need to free the node */
 6890|      0|			  if (!modifiers) { zend_ast_destroy((yyval.ast)); YYERROR; } }
  ------------------
  |  | 3591|      0|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (6890:10): [True: 0, False: 0]
  ------------------
 6891|      0|#line 6892 "/src/php-src/Zend/zend_language_parser.c"
 6892|      0|    break;
 6893|       |
 6894|      8|  case 349:
  ------------------
  |  Branch (6894:3): [True: 8, False: 305k]
  ------------------
 6895|      8|#line 1053 "/src/php-src/Zend/zend_language_parser.y"
 6896|      8|                        { uint32_t modifiers = zend_modifier_token_to_flag(ZEND_MODIFIER_TARGET_METHOD, (yyvsp[0].num));
 6897|      8|			  (yyval.ast) = zend_ast_create_ex(ZEND_AST_TRAIT_ALIAS, modifiers, (yyvsp[-2].ast), NULL);
  ------------------
  |  |  318|      8|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      8|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      8|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6898|       |			  /* identifier nonterminal can cause allocations, so we need to free the node */
 6899|      8|			  if (!modifiers) { zend_ast_destroy((yyval.ast)); YYERROR; } }
  ------------------
  |  | 3591|      1|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (6899:10): [True: 1, False: 7]
  ------------------
 6900|      7|#line 6901 "/src/php-src/Zend/zend_language_parser.c"
 6901|      7|    break;
 6902|       |
 6903|     17|  case 350:
  ------------------
  |  Branch (6903:3): [True: 17, False: 305k]
  ------------------
 6904|     17|#line 1061 "/src/php-src/Zend/zend_language_parser.y"
 6905|     17|                        { (yyval.ast) = zend_ast_create(ZEND_AST_TRAIT_METHOD_REFERENCE, NULL, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     17|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     17|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     17|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6906|     17|#line 6907 "/src/php-src/Zend/zend_language_parser.c"
 6907|     17|    break;
 6908|       |
 6909|      5|  case 351:
  ------------------
  |  Branch (6909:3): [True: 5, False: 305k]
  ------------------
 6910|      5|#line 1062 "/src/php-src/Zend/zend_language_parser.y"
 6911|      5|                                                { (yyval.ast) = (yyvsp[0].ast); }
 6912|      5|#line 6913 "/src/php-src/Zend/zend_language_parser.c"
 6913|      5|    break;
 6914|       |
 6915|     17|  case 352:
  ------------------
  |  Branch (6915:3): [True: 17, False: 305k]
  ------------------
 6916|     17|#line 1067 "/src/php-src/Zend/zend_language_parser.y"
 6917|     17|                { (yyval.ast) = zend_ast_create(ZEND_AST_TRAIT_METHOD_REFERENCE, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     17|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     17|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     17|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6918|     17|#line 6919 "/src/php-src/Zend/zend_language_parser.c"
 6919|     17|    break;
 6920|       |
 6921|     71|  case 353:
  ------------------
  |  Branch (6921:3): [True: 71, False: 305k]
  ------------------
 6922|     71|#line 1071 "/src/php-src/Zend/zend_language_parser.y"
 6923|     71|                                                        { (yyval.ast) = NULL; }
 6924|     71|#line 6925 "/src/php-src/Zend/zend_language_parser.c"
 6925|     71|    break;
 6926|       |
 6927|    618|  case 354:
  ------------------
  |  Branch (6927:3): [True: 618, False: 305k]
  ------------------
 6928|    618|#line 1072 "/src/php-src/Zend/zend_language_parser.y"
 6929|    618|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 6930|    618|#line 6931 "/src/php-src/Zend/zend_language_parser.c"
 6931|    618|    break;
 6932|       |
 6933|    578|  case 355:
  ------------------
  |  Branch (6933:3): [True: 578, False: 305k]
  ------------------
 6934|    578|#line 1077 "/src/php-src/Zend/zend_language_parser.y"
 6935|    578|                        { (yyval.num) = zend_modifier_list_to_flags(ZEND_MODIFIER_TARGET_PROPERTY, (yyvsp[0].ast));
 6936|    578|			  if (!(yyval.num)) { YYERROR; } }
  ------------------
  |  | 3591|      6|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (6936:10): [True: 6, False: 572]
  ------------------
 6937|    572|#line 6938 "/src/php-src/Zend/zend_language_parser.c"
 6938|    572|    break;
 6939|       |
 6940|    572|  case 356:
  ------------------
  |  Branch (6940:3): [True: 7, False: 305k]
  ------------------
 6941|      7|#line 1080 "/src/php-src/Zend/zend_language_parser.y"
 6942|      7|                        { (yyval.num) = ZEND_ACC_PUBLIC; }
  ------------------
  |  |  219|      7|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 6943|      7|#line 6944 "/src/php-src/Zend/zend_language_parser.c"
 6944|      7|    break;
 6945|       |
 6946|    323|  case 357:
  ------------------
  |  Branch (6946:3): [True: 323, False: 305k]
  ------------------
 6947|    323|#line 1085 "/src/php-src/Zend/zend_language_parser.y"
 6948|    323|                        { (yyval.num) = ZEND_ACC_PUBLIC; }
  ------------------
  |  |  219|    323|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 6949|    323|#line 6950 "/src/php-src/Zend/zend_language_parser.c"
 6950|    323|    break;
 6951|       |
 6952|    403|  case 358:
  ------------------
  |  Branch (6952:3): [True: 403, False: 305k]
  ------------------
 6953|    403|#line 1087 "/src/php-src/Zend/zend_language_parser.y"
 6954|    403|                        { (yyval.num) = zend_modifier_list_to_flags(ZEND_MODIFIER_TARGET_METHOD, (yyvsp[0].ast));
 6955|    403|			  if (!(yyval.num)) { YYERROR; }
  ------------------
  |  | 3591|      6|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (6955:10): [True: 6, False: 397]
  ------------------
 6956|    397|			  if (!((yyval.num) & ZEND_ACC_PPP_MASK)) { (yyval.num) |= ZEND_ACC_PUBLIC; } }
  ------------------
  |  |  421|    397|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|    397|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|    397|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|    397|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              			  if (!((yyval.num) & ZEND_ACC_PPP_MASK)) { (yyval.num) |= ZEND_ACC_PUBLIC; } }
  ------------------
  |  |  219|     40|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (6956:10): [True: 40, False: 357]
  ------------------
 6957|      0|#line 6958 "/src/php-src/Zend/zend_language_parser.c"
 6958|      0|    break;
 6959|       |
 6960|    116|  case 359:
  ------------------
  |  Branch (6960:3): [True: 116, False: 305k]
  ------------------
 6961|    116|#line 1094 "/src/php-src/Zend/zend_language_parser.y"
 6962|    116|                        { (yyval.num) = ZEND_ACC_PUBLIC; }
  ------------------
  |  |  219|    116|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 6963|    116|#line 6964 "/src/php-src/Zend/zend_language_parser.c"
 6964|    116|    break;
 6965|       |
 6966|     44|  case 360:
  ------------------
  |  Branch (6966:3): [True: 44, False: 305k]
  ------------------
 6967|     44|#line 1096 "/src/php-src/Zend/zend_language_parser.y"
 6968|     44|                        { (yyval.num) = zend_modifier_list_to_flags(ZEND_MODIFIER_TARGET_CONSTANT, (yyvsp[0].ast));
 6969|     44|			  if (!(yyval.num)) { YYERROR; }
  ------------------
  |  | 3591|      1|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (6969:10): [True: 1, False: 43]
  ------------------
 6970|     43|			  if (!((yyval.num) & ZEND_ACC_PPP_MASK)) { (yyval.num) |= ZEND_ACC_PUBLIC; } }
  ------------------
  |  |  421|     43|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|     43|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|     43|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|     43|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              			  if (!((yyval.num) & ZEND_ACC_PPP_MASK)) { (yyval.num) |= ZEND_ACC_PUBLIC; } }
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (6970:10): [True: 2, False: 41]
  ------------------
 6971|      0|#line 6972 "/src/php-src/Zend/zend_language_parser.c"
 6972|      0|    break;
 6973|       |
 6974|  1.06k|  case 361:
  ------------------
  |  Branch (6974:3): [True: 1.06k, False: 304k]
  ------------------
 6975|  1.06k|#line 1103 "/src/php-src/Zend/zend_language_parser.y"
 6976|  1.06k|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_MODIFIER_LIST, zend_ast_create_zval_from_long((yyvsp[0].num))); }
  ------------------
  |  |  320|  1.06k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.06k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.06k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6977|  1.06k|#line 6978 "/src/php-src/Zend/zend_language_parser.c"
 6978|  1.06k|    break;
 6979|       |
 6980|    180|  case 362:
  ------------------
  |  Branch (6980:3): [True: 180, False: 305k]
  ------------------
 6981|    180|#line 1105 "/src/php-src/Zend/zend_language_parser.y"
 6982|    180|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), zend_ast_create_zval_from_long((yyvsp[0].num))); }
 6983|    180|#line 6984 "/src/php-src/Zend/zend_language_parser.c"
 6984|    180|    break;
 6985|       |
 6986|    821|  case 363:
  ------------------
  |  Branch (6986:3): [True: 821, False: 305k]
  ------------------
 6987|    821|#line 1109 "/src/php-src/Zend/zend_language_parser.y"
 6988|    821|                                                        { (yyval.num) = T_PUBLIC; }
 6989|    821|#line 6990 "/src/php-src/Zend/zend_language_parser.c"
 6990|    821|    break;
 6991|       |
 6992|     46|  case 364:
  ------------------
  |  Branch (6992:3): [True: 46, False: 305k]
  ------------------
 6993|     46|#line 1110 "/src/php-src/Zend/zend_language_parser.y"
 6994|     46|                                                        { (yyval.num) = T_PROTECTED; }
 6995|     46|#line 6996 "/src/php-src/Zend/zend_language_parser.c"
 6996|     46|    break;
 6997|       |
 6998|     88|  case 365:
  ------------------
  |  Branch (6998:3): [True: 88, False: 305k]
  ------------------
 6999|     88|#line 1111 "/src/php-src/Zend/zend_language_parser.y"
 7000|     88|                                                        { (yyval.num) = T_PRIVATE; }
 7001|     88|#line 7002 "/src/php-src/Zend/zend_language_parser.c"
 7002|     88|    break;
 7003|       |
 7004|      3|  case 366:
  ------------------
  |  Branch (7004:3): [True: 3, False: 305k]
  ------------------
 7005|      3|#line 1112 "/src/php-src/Zend/zend_language_parser.y"
 7006|      3|                                                { (yyval.num) = T_PUBLIC_SET; }
 7007|      3|#line 7008 "/src/php-src/Zend/zend_language_parser.c"
 7008|      3|    break;
 7009|       |
 7010|      8|  case 367:
  ------------------
  |  Branch (7010:3): [True: 8, False: 305k]
  ------------------
 7011|      8|#line 1113 "/src/php-src/Zend/zend_language_parser.y"
 7012|      8|                                                { (yyval.num) = T_PROTECTED_SET; }
 7013|      8|#line 7014 "/src/php-src/Zend/zend_language_parser.c"
 7014|      8|    break;
 7015|       |
 7016|     10|  case 368:
  ------------------
  |  Branch (7016:3): [True: 10, False: 305k]
  ------------------
 7017|     10|#line 1114 "/src/php-src/Zend/zend_language_parser.y"
 7018|     10|                                                { (yyval.num) = T_PRIVATE_SET; }
 7019|     10|#line 7020 "/src/php-src/Zend/zend_language_parser.c"
 7020|     10|    break;
 7021|       |
 7022|    169|  case 369:
  ------------------
  |  Branch (7022:3): [True: 169, False: 305k]
  ------------------
 7023|    169|#line 1115 "/src/php-src/Zend/zend_language_parser.y"
 7024|    169|                                                        { (yyval.num) = T_STATIC; }
 7025|    169|#line 7026 "/src/php-src/Zend/zend_language_parser.c"
 7026|    169|    break;
 7027|       |
 7028|     54|  case 370:
  ------------------
  |  Branch (7028:3): [True: 54, False: 305k]
  ------------------
 7029|     54|#line 1116 "/src/php-src/Zend/zend_language_parser.y"
 7030|     54|                                                        { (yyval.num) = T_ABSTRACT; }
 7031|     54|#line 7032 "/src/php-src/Zend/zend_language_parser.c"
 7032|     54|    break;
 7033|       |
 7034|     30|  case 371:
  ------------------
  |  Branch (7034:3): [True: 30, False: 305k]
  ------------------
 7035|     30|#line 1117 "/src/php-src/Zend/zend_language_parser.y"
 7036|     30|                                                        { (yyval.num) = T_FINAL; }
 7037|     30|#line 7038 "/src/php-src/Zend/zend_language_parser.c"
 7038|     30|    break;
 7039|       |
 7040|     22|  case 372:
  ------------------
  |  Branch (7040:3): [True: 22, False: 305k]
  ------------------
 7041|     22|#line 1118 "/src/php-src/Zend/zend_language_parser.y"
 7042|     22|                                                        { (yyval.num) = T_READONLY; }
 7043|     22|#line 7044 "/src/php-src/Zend/zend_language_parser.c"
 7044|     22|    break;
 7045|       |
 7046|      5|  case 373:
  ------------------
  |  Branch (7046:3): [True: 5, False: 305k]
  ------------------
 7047|      5|#line 1122 "/src/php-src/Zend/zend_language_parser.y"
 7048|      5|                                           { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7049|      5|#line 7050 "/src/php-src/Zend/zend_language_parser.c"
 7050|      5|    break;
 7051|       |
 7052|    413|  case 374:
  ------------------
  |  Branch (7052:3): [True: 413, False: 305k]
  ------------------
 7053|    413|#line 1123 "/src/php-src/Zend/zend_language_parser.y"
 7054|    413|                         { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_PROP_DECL, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    413|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    413|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    413|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7055|    413|#line 7056 "/src/php-src/Zend/zend_language_parser.c"
 7056|    413|    break;
 7057|       |
 7058|    268|  case 375:
  ------------------
  |  Branch (7058:3): [True: 268, False: 305k]
  ------------------
 7059|    268|#line 1128 "/src/php-src/Zend/zend_language_parser.y"
 7060|    268|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP_ELEM, (yyvsp[-1].ast), NULL, ((yyvsp[0].str) ? zend_ast_create_zval_from_str((yyvsp[0].str)) : NULL), NULL); }
  ------------------
  |  |  316|    268|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    268|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    804|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 5, False: 263]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7061|    268|#line 7062 "/src/php-src/Zend/zend_language_parser.c"
 7062|    268|    break;
 7063|       |
 7064|    150|  case 376:
  ------------------
  |  Branch (7064:3): [True: 150, False: 305k]
  ------------------
 7065|    150|#line 1130 "/src/php-src/Zend/zend_language_parser.y"
 7066|    150|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP_ELEM, (yyvsp[-3].ast), (yyvsp[-1].ast), ((yyvsp[0].str) ? zend_ast_create_zval_from_str((yyvsp[0].str)) : NULL), NULL); }
  ------------------
  |  |  316|    150|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    150|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    450|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 3, False: 147]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7067|    150|#line 7068 "/src/php-src/Zend/zend_language_parser.c"
 7068|    150|    break;
 7069|       |
 7070|    127|  case 377:
  ------------------
  |  Branch (7070:3): [True: 127, False: 305k]
  ------------------
 7071|    127|#line 1135 "/src/php-src/Zend/zend_language_parser.y"
 7072|    127|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP_ELEM, (yyvsp[-4].ast), NULL, ((yyvsp[-3].str) ? zend_ast_create_zval_from_str((yyvsp[-3].str)) : NULL), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|    127|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    127|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    381|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 1, False: 126]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7073|    127|#line 7074 "/src/php-src/Zend/zend_language_parser.c"
 7074|    127|    break;
 7075|       |
 7076|     16|  case 378:
  ------------------
  |  Branch (7076:3): [True: 16, False: 305k]
  ------------------
 7077|     16|#line 1137 "/src/php-src/Zend/zend_language_parser.y"
 7078|     16|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP_ELEM, (yyvsp[-6].ast), (yyvsp[-4].ast), ((yyvsp[-3].str) ? zend_ast_create_zval_from_str((yyvsp[-3].str)) : NULL), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     16|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     16|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     48|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 1, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7079|     16|#line 7080 "/src/php-src/Zend/zend_language_parser.c"
 7080|     16|    break;
 7081|       |
 7082|    157|  case 379:
  ------------------
  |  Branch (7082:3): [True: 157, False: 305k]
  ------------------
 7083|    157|#line 1141 "/src/php-src/Zend/zend_language_parser.y"
 7084|    157|                       { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_STMT_LIST); }
  ------------------
  |  |  320|    157|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    157|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    157|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7085|    157|#line 7086 "/src/php-src/Zend/zend_language_parser.c"
 7086|    157|    break;
 7087|       |
 7088|    175|  case 380:
  ------------------
  |  Branch (7088:3): [True: 175, False: 305k]
  ------------------
 7089|    175|#line 1142 "/src/php-src/Zend/zend_language_parser.y"
 7090|    175|                                                 { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 7091|    175|#line 7092 "/src/php-src/Zend/zend_language_parser.c"
 7092|    175|    break;
 7093|       |
 7094|      5|  case 381:
  ------------------
  |  Branch (7094:3): [True: 5, False: 305k]
  ------------------
 7095|      5|#line 1143 "/src/php-src/Zend/zend_language_parser.y"
 7096|      5|                                                            {
 7097|      5|			(yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-1].ast)));
 7098|      5|		}
 7099|      5|#line 7100 "/src/php-src/Zend/zend_language_parser.c"
 7100|      5|    break;
 7101|       |
 7102|    793|  case 382:
  ------------------
  |  Branch (7102:3): [True: 793, False: 305k]
  ------------------
 7103|    793|#line 1149 "/src/php-src/Zend/zend_language_parser.y"
 7104|    793|                        { (yyval.ast) = NULL; }
 7105|    793|#line 7106 "/src/php-src/Zend/zend_language_parser.c"
 7106|    793|    break;
 7107|       |
 7108|      3|  case 383:
  ------------------
  |  Branch (7108:3): [True: 3, False: 305k]
  ------------------
 7109|      3|#line 1150 "/src/php-src/Zend/zend_language_parser.y"
 7110|      3|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 7111|      3|#line 7112 "/src/php-src/Zend/zend_language_parser.c"
 7112|      3|    break;
 7113|       |
 7114|    184|  case 384:
  ------------------
  |  Branch (7114:3): [True: 184, False: 305k]
  ------------------
 7115|    184|#line 1154 "/src/php-src/Zend/zend_language_parser.y"
 7116|    184|                       { (yyval.num) = 0; }
 7117|    184|#line 7118 "/src/php-src/Zend/zend_language_parser.c"
 7118|    184|    break;
 7119|       |
 7120|      7|  case 385:
  ------------------
  |  Branch (7120:3): [True: 7, False: 305k]
  ------------------
 7121|      7|#line 1155 "/src/php-src/Zend/zend_language_parser.y"
 7122|      7|                                           {
 7123|      7|			(yyval.num) = zend_modifier_list_to_flags(ZEND_MODIFIER_TARGET_PROPERTY_HOOK, (yyvsp[0].ast));
 7124|      7|			if (!(yyval.num)) { YYERROR; }
  ------------------
  |  | 3591|      3|#define YYERROR         goto yyerrorlab
  ------------------
  |  Branch (7124:8): [True: 3, False: 4]
  ------------------
 7125|      7|		}
 7126|      4|#line 7127 "/src/php-src/Zend/zend_language_parser.c"
 7127|      4|    break;
 7128|       |
 7129|    188|  case 386:
  ------------------
  |  Branch (7129:3): [True: 188, False: 305k]
  ------------------
 7130|    188|#line 1163 "/src/php-src/Zend/zend_language_parser.y"
 7131|    188|                                   { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|    188|# define CG(v) (compiler_globals.v)
  ------------------
 7132|    188|#line 7133 "/src/php-src/Zend/zend_language_parser.c"
 7133|    188|    break;
 7134|       |
 7135|    180|  case 387:
  ------------------
  |  Branch (7135:3): [True: 180, False: 305k]
  ------------------
 7136|    180|#line 1164 "/src/php-src/Zend/zend_language_parser.y"
 7137|    180|                                                                                           {
 7138|    180|			(yyval.ast) = zend_ast_create_decl(
 7139|    180|				ZEND_AST_PROPERTY_HOOK, (yyvsp[-8].num) | (yyvsp[-7].num) | (yyvsp[0].num), (yyvsp[-4].num), (yyvsp[-5].str), zend_ast_get_str((yyvsp[-6].ast)),
 7140|    180|				(yyvsp[-3].ast), NULL, (yyvsp[-1].ast), NULL, NULL);
 7141|    180|			CG(extra_fn_flags) = (yyvsp[-2].num);
  ------------------
  |  |   35|    180|# define CG(v) (compiler_globals.v)
  ------------------
 7142|    180|		}
 7143|    180|#line 7144 "/src/php-src/Zend/zend_language_parser.c"
 7144|    180|    break;
 7145|       |
 7146|     41|  case 388:
  ------------------
  |  Branch (7146:3): [True: 41, False: 305k]
  ------------------
 7147|     41|#line 1173 "/src/php-src/Zend/zend_language_parser.y"
 7148|     41|                    { (yyval.ast) = NULL; }
 7149|     41|#line 7150 "/src/php-src/Zend/zend_language_parser.c"
 7150|     41|    break;
 7151|       |
 7152|     87|  case 389:
  ------------------
  |  Branch (7152:3): [True: 87, False: 305k]
  ------------------
 7153|     87|#line 1174 "/src/php-src/Zend/zend_language_parser.y"
 7154|     87|                                             { (yyval.ast) = (yyvsp[-1].ast); }
 7155|     87|#line 7156 "/src/php-src/Zend/zend_language_parser.c"
 7156|     87|    break;
 7157|       |
 7158|     52|  case 390:
  ------------------
  |  Branch (7158:3): [True: 52, False: 305k]
  ------------------
 7159|     52|#line 1176 "/src/php-src/Zend/zend_language_parser.y"
 7160|     52|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROPERTY_HOOK_SHORT_BODY, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     52|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     52|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     52|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7161|     52|#line 7162 "/src/php-src/Zend/zend_language_parser.c"
 7162|     52|    break;
 7163|       |
 7164|    173|  case 391:
  ------------------
  |  Branch (7164:3): [True: 173, False: 305k]
  ------------------
 7165|    173|#line 1180 "/src/php-src/Zend/zend_language_parser.y"
 7166|    173|                       { (yyval.ast) = NULL; }
 7167|    173|#line 7168 "/src/php-src/Zend/zend_language_parser.c"
 7168|    173|    break;
 7169|       |
 7170|     13|  case 392:
  ------------------
  |  Branch (7170:3): [True: 13, False: 305k]
  ------------------
 7171|     13|#line 1181 "/src/php-src/Zend/zend_language_parser.y"
 7172|     13|                                       { (yyval.ast) = (yyvsp[-1].ast); }
 7173|     13|#line 7174 "/src/php-src/Zend/zend_language_parser.c"
 7174|     13|    break;
 7175|       |
 7176|      2|  case 393:
  ------------------
  |  Branch (7176:3): [True: 2, False: 305k]
  ------------------
 7177|      2|#line 1185 "/src/php-src/Zend/zend_language_parser.y"
 7178|      2|                                                      { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7179|      2|#line 7180 "/src/php-src/Zend/zend_language_parser.c"
 7180|      2|    break;
 7181|       |
 7182|    153|  case 394:
  ------------------
  |  Branch (7182:3): [True: 153, False: 305k]
  ------------------
 7183|    153|#line 1186 "/src/php-src/Zend/zend_language_parser.y"
 7184|    153|                                 { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_CLASS_CONST_DECL, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    153|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    153|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    153|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7185|    153|#line 7186 "/src/php-src/Zend/zend_language_parser.c"
 7186|    153|    break;
 7187|       |
 7188|    150|  case 395:
  ------------------
  |  Branch (7188:3): [True: 150, False: 305k]
  ------------------
 7189|    150|#line 1190 "/src/php-src/Zend/zend_language_parser.y"
 7190|    150|                                                     { (yyval.ast) = zend_ast_create(ZEND_AST_CONST_ELEM, (yyvsp[-3].ast), (yyvsp[-1].ast), ((yyvsp[0].str) ? zend_ast_create_zval_from_str((yyvsp[0].str)) : NULL)); }
  ------------------
  |  |  316|    150|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    150|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    450|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 2, False: 148]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7191|    150|#line 7192 "/src/php-src/Zend/zend_language_parser.c"
 7192|    150|    break;
 7193|       |
 7194|      5|  case 396:
  ------------------
  |  Branch (7194:3): [True: 5, False: 305k]
  ------------------
 7195|      5|#line 1191 "/src/php-src/Zend/zend_language_parser.y"
 7196|      5|                                                          {
 7197|      5|			zval zv;
 7198|      5|			if (zend_lex_tstring(&zv, (yyvsp[-3].ident)) == FAILURE) { YYABORT; }
  ------------------
  |  | 3590|      0|#define YYABORT         goto yyabortlab
  ------------------
  |  Branch (7198:8): [True: 0, False: 5]
  ------------------
 7199|      5|			(yyval.ast) = zend_ast_create(ZEND_AST_CONST_ELEM, zend_ast_create_zval(&zv), (yyvsp[-1].ast), ((yyvsp[0].str) ? zend_ast_create_zval_from_str((yyvsp[0].str)) : NULL));
  ------------------
  |  |  316|      5|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      5|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     15|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7200|      5|		}
 7201|      0|#line 7202 "/src/php-src/Zend/zend_language_parser.c"
 7202|      0|    break;
 7203|       |
 7204|    228|  case 397:
  ------------------
  |  Branch (7204:3): [True: 228, False: 305k]
  ------------------
 7205|    228|#line 1199 "/src/php-src/Zend/zend_language_parser.y"
 7206|    228|                                             { (yyval.ast) = zend_ast_create(ZEND_AST_CONST_ELEM, (yyvsp[-3].ast), (yyvsp[-1].ast), ((yyvsp[0].str) ? zend_ast_create_zval_from_str((yyvsp[0].str)) : NULL)); }
  ------------------
  |  |  316|    228|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    228|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    684|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (806:31): [True: 0, False: 228]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7207|    228|#line 7208 "/src/php-src/Zend/zend_language_parser.c"
 7208|    228|    break;
 7209|       |
 7210|    219|  case 398:
  ------------------
  |  Branch (7210:3): [True: 219, False: 305k]
  ------------------
 7211|    219|#line 1203 "/src/php-src/Zend/zend_language_parser.y"
 7212|    219|                                             { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7213|    219|#line 7214 "/src/php-src/Zend/zend_language_parser.c"
 7214|    219|    break;
 7215|       |
 7216|  1.00k|  case 399:
  ------------------
  |  Branch (7216:3): [True: 1.00k, False: 304k]
  ------------------
 7217|  1.00k|#line 1204 "/src/php-src/Zend/zend_language_parser.y"
 7218|  1.00k|                          { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_STMT_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|  1.00k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.00k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.00k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7219|  1.00k|#line 7220 "/src/php-src/Zend/zend_language_parser.c"
 7220|  1.00k|    break;
 7221|       |
 7222|  1.22k|  case 400:
  ------------------
  |  Branch (7222:3): [True: 1.22k, False: 304k]
  ------------------
 7223|  1.22k|#line 1207 "/src/php-src/Zend/zend_language_parser.y"
 7224|  1.22k|             { (yyval.ast) = zend_ast_create(ZEND_AST_ECHO, (yyvsp[0].ast)); }
  ------------------
  |  |  316|  1.22k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.22k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.22k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7225|  1.22k|#line 7226 "/src/php-src/Zend/zend_language_parser.c"
 7226|  1.22k|    break;
 7227|       |
 7228|     18|  case 401:
  ------------------
  |  Branch (7228:3): [True: 18, False: 305k]
  ------------------
 7229|     18|#line 1211 "/src/php-src/Zend/zend_language_parser.y"
 7230|     18|                                        { (yyval.ast) = NULL; }
 7231|     18|#line 7232 "/src/php-src/Zend/zend_language_parser.c"
 7232|     18|    break;
 7233|       |
 7234|      6|  case 402:
  ------------------
  |  Branch (7234:3): [True: 6, False: 305k]
  ------------------
 7235|      6|#line 1212 "/src/php-src/Zend/zend_language_parser.y"
 7236|      6|                                             { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7237|      6|#line 7238 "/src/php-src/Zend/zend_language_parser.c"
 7238|      6|    break;
 7239|       |
 7240|    234|  case 403:
  ------------------
  |  Branch (7240:3): [True: 234, False: 305k]
  ------------------
 7241|    234|#line 1213 "/src/php-src/Zend/zend_language_parser.y"
 7242|    234|                     { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_EXPR_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    234|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    234|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    234|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7243|    234|#line 7244 "/src/php-src/Zend/zend_language_parser.c"
 7244|    234|    break;
 7245|       |
 7246|    101|  case 404:
  ------------------
  |  Branch (7246:3): [True: 101, False: 305k]
  ------------------
 7247|    101|#line 1217 "/src/php-src/Zend/zend_language_parser.y"
 7248|    101|                                        { (yyval.ast) = NULL; }
 7249|    101|#line 7250 "/src/php-src/Zend/zend_language_parser.c"
 7250|    101|    break;
 7251|       |
 7252|    414|  case 405:
  ------------------
  |  Branch (7252:3): [True: 414, False: 305k]
  ------------------
 7253|    414|#line 1218 "/src/php-src/Zend/zend_language_parser.y"
 7254|    414|                                        { (yyval.ast) = (yyvsp[0].ast); }
 7255|    414|#line 7256 "/src/php-src/Zend/zend_language_parser.c"
 7256|    414|    break;
 7257|       |
 7258|      1|  case 406:
  ------------------
  |  Branch (7258:3): [True: 1, False: 305k]
  ------------------
 7259|      1|#line 1222 "/src/php-src/Zend/zend_language_parser.y"
 7260|      1|                                             { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7261|      1|#line 7262 "/src/php-src/Zend/zend_language_parser.c"
 7262|      1|    break;
 7263|       |
 7264|      0|  case 407:
  ------------------
  |  Branch (7264:3): [True: 0, False: 305k]
  ------------------
 7265|      0|#line 1223 "/src/php-src/Zend/zend_language_parser.y"
 7266|      0|                                                         { (yyval.ast) = zend_ast_list_add((yyvsp[-3].ast), zend_ast_create(ZEND_AST_CAST_VOID, (yyvsp[0].ast))); }
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7267|      0|#line 7268 "/src/php-src/Zend/zend_language_parser.c"
 7268|      0|    break;
 7269|       |
 7270|      1|  case 408:
  ------------------
  |  Branch (7270:3): [True: 1, False: 305k]
  ------------------
 7271|      1|#line 1224 "/src/php-src/Zend/zend_language_parser.y"
 7272|      1|                                 { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_EXPR_LIST, zend_ast_create(ZEND_AST_CAST_VOID, (yyvsp[0].ast))); }
  ------------------
  |  |  320|      1|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7273|      1|#line 7274 "/src/php-src/Zend/zend_language_parser.c"
 7274|      1|    break;
 7275|       |
 7276|    421|  case 409:
  ------------------
  |  Branch (7276:3): [True: 421, False: 305k]
  ------------------
 7277|    421|#line 1225 "/src/php-src/Zend/zend_language_parser.y"
 7278|    421|                     { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_EXPR_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    421|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    421|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    421|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7279|    421|#line 7280 "/src/php-src/Zend/zend_language_parser.c"
 7280|    421|    break;
 7281|       |
 7282|     50|  case 410:
  ------------------
  |  Branch (7282:3): [True: 50, False: 305k]
  ------------------
 7283|     50|#line 1229 "/src/php-src/Zend/zend_language_parser.y"
 7284|     50|                                                           { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|     50|# define CG(v) (compiler_globals.v)
  ------------------
 7285|     50|#line 7286 "/src/php-src/Zend/zend_language_parser.c"
 7286|     50|    break;
 7287|       |
 7288|     49|  case 411:
  ------------------
  |  Branch (7288:3): [True: 49, False: 305k]
  ------------------
 7289|     49|#line 1230 "/src/php-src/Zend/zend_language_parser.y"
 7290|     49|                                                                                             {
 7291|     49|			zend_ast *decl = zend_ast_create_decl(
 7292|     49|				ZEND_AST_CLASS, ZEND_ACC_ANON_CLASS | (yyvsp[-9].num), (yyvsp[-7].num), (yyvsp[-3].str), NULL,
  ------------------
  |  |  283|     49|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
 7293|     49|				(yyvsp[-5].ast), (yyvsp[-4].ast), (yyvsp[-1].ast), NULL, NULL);
 7294|     49|			(yyval.ast) = zend_ast_create(ZEND_AST_NEW, decl, (yyvsp[-6].ast));
  ------------------
  |  |  316|     49|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     49|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     49|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7295|     49|		}
 7296|     49|#line 7297 "/src/php-src/Zend/zend_language_parser.c"
 7297|     49|    break;
 7298|       |
 7299|  1.17k|  case 412:
  ------------------
  |  Branch (7299:3): [True: 1.17k, False: 304k]
  ------------------
 7300|  1.17k|#line 1240 "/src/php-src/Zend/zend_language_parser.y"
 7301|  1.17k|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NEW, (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|  1.17k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.17k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.17k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7302|  1.17k|#line 7303 "/src/php-src/Zend/zend_language_parser.c"
 7303|  1.17k|    break;
 7304|       |
 7305|     48|  case 413:
  ------------------
  |  Branch (7305:3): [True: 48, False: 305k]
  ------------------
 7306|     48|#line 1242 "/src/php-src/Zend/zend_language_parser.y"
 7307|     48|                        { (yyval.ast) = (yyvsp[0].ast); }
 7308|     48|#line 7309 "/src/php-src/Zend/zend_language_parser.c"
 7309|     48|    break;
 7310|       |
 7311|      1|  case 414:
  ------------------
  |  Branch (7311:3): [True: 1, False: 305k]
  ------------------
 7312|      1|#line 1244 "/src/php-src/Zend/zend_language_parser.y"
 7313|      1|                        { zend_ast_with_attributes((yyvsp[0].ast)->child[0], (yyvsp[-1].ast)); (yyval.ast) = (yyvsp[0].ast); }
 7314|      1|#line 7315 "/src/php-src/Zend/zend_language_parser.c"
 7315|      1|    break;
 7316|       |
 7317|    516|  case 415:
  ------------------
  |  Branch (7317:3): [True: 516, False: 305k]
  ------------------
 7318|    516|#line 1249 "/src/php-src/Zend/zend_language_parser.y"
 7319|    516|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NEW, (yyvsp[0].ast), zend_ast_create_list(0, ZEND_AST_ARG_LIST)); }
  ------------------
  |  |  316|    516|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    516|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    516|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7320|    516|#line 7321 "/src/php-src/Zend/zend_language_parser.c"
 7321|    516|    break;
 7322|       |
 7323|  9.08k|  case 416:
  ------------------
  |  Branch (7323:3): [True: 9.08k, False: 296k]
  ------------------
 7324|  9.08k|#line 1254 "/src/php-src/Zend/zend_language_parser.y"
 7325|  9.08k|                        { (yyval.ast) = (yyvsp[0].ast); }
 7326|  9.08k|#line 7327 "/src/php-src/Zend/zend_language_parser.c"
 7327|  9.08k|    break;
 7328|       |
 7329|     63|  case 417:
  ------------------
  |  Branch (7329:3): [True: 63, False: 305k]
  ------------------
 7330|     63|#line 1256 "/src/php-src/Zend/zend_language_parser.y"
 7331|     63|                        { (yyvsp[-3].ast)->attr = ZEND_ARRAY_SYNTAX_LIST; (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  | 1069|     63|#define ZEND_ARRAY_SYNTAX_LIST 1  /* list() */
  ------------------
                                      { (yyvsp[-3].ast)->attr = ZEND_ARRAY_SYNTAX_LIST; (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     63|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     63|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     63|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7332|     63|#line 7333 "/src/php-src/Zend/zend_language_parser.c"
 7333|     63|    break;
 7334|       |
 7335|     32|  case 418:
  ------------------
  |  Branch (7335:3): [True: 32, False: 305k]
  ------------------
 7336|     32|#line 1258 "/src/php-src/Zend/zend_language_parser.y"
 7337|     32|                        { (yyvsp[-3].ast)->attr = ZEND_ARRAY_SYNTAX_SHORT; (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  | 1071|     32|#define ZEND_ARRAY_SYNTAX_SHORT 3 /* [] */
  ------------------
                                      { (yyvsp[-3].ast)->attr = ZEND_ARRAY_SYNTAX_SHORT; (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     32|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     32|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     32|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7338|     32|#line 7339 "/src/php-src/Zend/zend_language_parser.c"
 7339|     32|    break;
 7340|       |
 7341|  3.35k|  case 419:
  ------------------
  |  Branch (7341:3): [True: 3.35k, False: 302k]
  ------------------
 7342|  3.35k|#line 1260 "/src/php-src/Zend/zend_language_parser.y"
 7343|  3.35k|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|  3.35k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  3.35k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  3.35k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7344|  3.35k|#line 7345 "/src/php-src/Zend/zend_language_parser.c"
 7345|  3.35k|    break;
 7346|       |
 7347|    247|  case 420:
  ------------------
  |  Branch (7347:3): [True: 247, False: 305k]
  ------------------
 7348|    247|#line 1262 "/src/php-src/Zend/zend_language_parser.y"
 7349|    247|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN_REF, (yyvsp[-3].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    247|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    247|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    247|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7350|    247|#line 7351 "/src/php-src/Zend/zend_language_parser.c"
 7351|    247|    break;
 7352|       |
 7353|      4|  case 421:
  ------------------
  |  Branch (7353:3): [True: 4, False: 305k]
  ------------------
 7354|      4|#line 1263 "/src/php-src/Zend/zend_language_parser.y"
 7355|      4|                                            {
 7356|      4|			zend_ast *name = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_CLONE));
 7357|      4|			name->attr = ZEND_NAME_FQ;
  ------------------
  |  | 1060|      4|#define ZEND_NAME_FQ       0
  ------------------
 7358|      4|			(yyval.ast) = zend_ast_create(ZEND_AST_CALL, name, (yyvsp[0].ast));
  ------------------
  |  |  316|      4|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      4|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      4|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7359|      4|		}
 7360|      4|#line 7361 "/src/php-src/Zend/zend_language_parser.c"
 7361|      4|    break;
 7362|       |
 7363|     33|  case 422:
  ------------------
  |  Branch (7363:3): [True: 33, False: 305k]
  ------------------
 7364|     33|#line 1268 "/src/php-src/Zend/zend_language_parser.y"
 7365|     33|                             {
 7366|     33|			zend_ast *name = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_CLONE));
 7367|     33|			name->attr = ZEND_NAME_FQ;
  ------------------
  |  | 1060|     33|#define ZEND_NAME_FQ       0
  ------------------
 7368|     33|			(yyval.ast) = zend_ast_create(ZEND_AST_CALL, name, zend_ast_create_list(1, ZEND_AST_ARG_LIST, (yyvsp[0].ast)));
  ------------------
  |  |  316|     33|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     33|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     33|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7369|     33|		}
 7370|     33|#line 7371 "/src/php-src/Zend/zend_language_parser.c"
 7371|     33|    break;
 7372|       |
 7373|    108|  case 423:
  ------------------
  |  Branch (7373:3): [True: 108, False: 305k]
  ------------------
 7374|    108|#line 1274 "/src/php-src/Zend/zend_language_parser.y"
 7375|    108|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_ADD, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  125|    108|#define ZEND_ADD                              1
  ------------------
 7376|    108|#line 7377 "/src/php-src/Zend/zend_language_parser.c"
 7377|    108|    break;
 7378|       |
 7379|      6|  case 424:
  ------------------
  |  Branch (7379:3): [True: 6, False: 305k]
  ------------------
 7380|      6|#line 1276 "/src/php-src/Zend/zend_language_parser.y"
 7381|      6|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_SUB, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  126|      6|#define ZEND_SUB                              2
  ------------------
 7382|      6|#line 7383 "/src/php-src/Zend/zend_language_parser.c"
 7383|      6|    break;
 7384|       |
 7385|     16|  case 425:
  ------------------
  |  Branch (7385:3): [True: 16, False: 305k]
  ------------------
 7386|     16|#line 1278 "/src/php-src/Zend/zend_language_parser.y"
 7387|     16|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_MUL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  127|     16|#define ZEND_MUL                              3
  ------------------
 7388|     16|#line 7389 "/src/php-src/Zend/zend_language_parser.c"
 7389|     16|    break;
 7390|       |
 7391|     12|  case 426:
  ------------------
  |  Branch (7391:3): [True: 12, False: 305k]
  ------------------
 7392|     12|#line 1280 "/src/php-src/Zend/zend_language_parser.y"
 7393|     12|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_POW, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  136|     12|#define ZEND_POW                             12
  ------------------
 7394|     12|#line 7395 "/src/php-src/Zend/zend_language_parser.c"
 7395|     12|    break;
 7396|       |
 7397|     16|  case 427:
  ------------------
  |  Branch (7397:3): [True: 16, False: 305k]
  ------------------
 7398|     16|#line 1282 "/src/php-src/Zend/zend_language_parser.y"
 7399|     16|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_DIV, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  128|     16|#define ZEND_DIV                              4
  ------------------
 7400|     16|#line 7401 "/src/php-src/Zend/zend_language_parser.c"
 7401|     16|    break;
 7402|       |
 7403|    141|  case 428:
  ------------------
  |  Branch (7403:3): [True: 141, False: 305k]
  ------------------
 7404|    141|#line 1284 "/src/php-src/Zend/zend_language_parser.y"
 7405|    141|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_CONCAT, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  132|    141|#define ZEND_CONCAT                           8
  ------------------
 7406|    141|#line 7407 "/src/php-src/Zend/zend_language_parser.c"
 7407|    141|    break;
 7408|       |
 7409|      6|  case 429:
  ------------------
  |  Branch (7409:3): [True: 6, False: 305k]
  ------------------
 7410|      6|#line 1286 "/src/php-src/Zend/zend_language_parser.y"
 7411|      6|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_MOD, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  129|      6|#define ZEND_MOD                              5
  ------------------
 7412|      6|#line 7413 "/src/php-src/Zend/zend_language_parser.c"
 7413|      6|    break;
 7414|       |
 7415|     13|  case 430:
  ------------------
  |  Branch (7415:3): [True: 13, False: 305k]
  ------------------
 7416|     13|#line 1288 "/src/php-src/Zend/zend_language_parser.y"
 7417|     13|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_BW_AND, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  134|     13|#define ZEND_BW_AND                          10
  ------------------
 7418|     13|#line 7419 "/src/php-src/Zend/zend_language_parser.c"
 7419|     13|    break;
 7420|       |
 7421|      8|  case 431:
  ------------------
  |  Branch (7421:3): [True: 8, False: 305k]
  ------------------
 7422|      8|#line 1290 "/src/php-src/Zend/zend_language_parser.y"
 7423|      8|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_BW_OR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  133|      8|#define ZEND_BW_OR                            9
  ------------------
 7424|      8|#line 7425 "/src/php-src/Zend/zend_language_parser.c"
 7425|      8|    break;
 7426|       |
 7427|      0|  case 432:
  ------------------
  |  Branch (7427:3): [True: 0, False: 305k]
  ------------------
 7428|      0|#line 1292 "/src/php-src/Zend/zend_language_parser.y"
 7429|      0|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_BW_XOR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
 7430|      0|#line 7431 "/src/php-src/Zend/zend_language_parser.c"
 7431|      0|    break;
 7432|       |
 7433|      1|  case 433:
  ------------------
  |  Branch (7433:3): [True: 1, False: 305k]
  ------------------
 7434|      1|#line 1294 "/src/php-src/Zend/zend_language_parser.y"
 7435|      1|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_SL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  130|      1|#define ZEND_SL                               6
  ------------------
 7436|      1|#line 7437 "/src/php-src/Zend/zend_language_parser.c"
 7437|      1|    break;
 7438|       |
 7439|      3|  case 434:
  ------------------
  |  Branch (7439:3): [True: 3, False: 305k]
  ------------------
 7440|      3|#line 1296 "/src/php-src/Zend/zend_language_parser.y"
 7441|      3|                        { (yyval.ast) = zend_ast_create_assign_op(ZEND_SR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  131|      3|#define ZEND_SR                               7
  ------------------
 7442|      3|#line 7443 "/src/php-src/Zend/zend_language_parser.c"
 7443|      3|    break;
 7444|       |
 7445|     24|  case 435:
  ------------------
  |  Branch (7445:3): [True: 24, False: 305k]
  ------------------
 7446|     24|#line 1298 "/src/php-src/Zend/zend_language_parser.y"
 7447|     24|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ASSIGN_COALESCE, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     24|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     24|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     24|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7448|     24|#line 7449 "/src/php-src/Zend/zend_language_parser.c"
 7449|     24|    break;
 7450|       |
 7451|    195|  case 436:
  ------------------
  |  Branch (7451:3): [True: 195, False: 305k]
  ------------------
 7452|    195|#line 1299 "/src/php-src/Zend/zend_language_parser.y"
 7453|    195|                               { (yyval.ast) = zend_ast_create(ZEND_AST_POST_INC, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|    195|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    195|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    195|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7454|    195|#line 7455 "/src/php-src/Zend/zend_language_parser.c"
 7455|    195|    break;
 7456|       |
 7457|     23|  case 437:
  ------------------
  |  Branch (7457:3): [True: 23, False: 305k]
  ------------------
 7458|     23|#line 1300 "/src/php-src/Zend/zend_language_parser.y"
 7459|     23|                               { (yyval.ast) = zend_ast_create(ZEND_AST_PRE_INC, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     23|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     23|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     23|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7460|     23|#line 7461 "/src/php-src/Zend/zend_language_parser.c"
 7461|     23|    break;
 7462|       |
 7463|     26|  case 438:
  ------------------
  |  Branch (7463:3): [True: 26, False: 305k]
  ------------------
 7464|     26|#line 1301 "/src/php-src/Zend/zend_language_parser.y"
 7465|     26|                               { (yyval.ast) = zend_ast_create(ZEND_AST_POST_DEC, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     26|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     26|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     26|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7466|     26|#line 7467 "/src/php-src/Zend/zend_language_parser.c"
 7467|     26|    break;
 7468|       |
 7469|      8|  case 439:
  ------------------
  |  Branch (7469:3): [True: 8, False: 305k]
  ------------------
 7470|      8|#line 1302 "/src/php-src/Zend/zend_language_parser.y"
 7471|      8|                               { (yyval.ast) = zend_ast_create(ZEND_AST_PRE_DEC, (yyvsp[0].ast)); }
  ------------------
  |  |  316|      8|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      8|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      8|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7472|      8|#line 7473 "/src/php-src/Zend/zend_language_parser.c"
 7473|      8|    break;
 7474|       |
 7475|      6|  case 440:
  ------------------
  |  Branch (7475:3): [True: 6, False: 305k]
  ------------------
 7476|      6|#line 1304 "/src/php-src/Zend/zend_language_parser.y"
 7477|      6|                        { (yyval.ast) = zend_ast_create(ZEND_AST_OR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      6|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7478|      6|#line 7479 "/src/php-src/Zend/zend_language_parser.c"
 7479|      6|    break;
 7480|       |
 7481|     65|  case 441:
  ------------------
  |  Branch (7481:3): [True: 65, False: 305k]
  ------------------
 7482|     65|#line 1306 "/src/php-src/Zend/zend_language_parser.y"
 7483|     65|                        { (yyval.ast) = zend_ast_create(ZEND_AST_AND, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     65|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     65|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     65|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7484|     65|#line 7485 "/src/php-src/Zend/zend_language_parser.c"
 7485|     65|    break;
 7486|       |
 7487|     13|  case 442:
  ------------------
  |  Branch (7487:3): [True: 13, False: 305k]
  ------------------
 7488|     13|#line 1308 "/src/php-src/Zend/zend_language_parser.y"
 7489|     13|                        { (yyval.ast) = zend_ast_create(ZEND_AST_OR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     13|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     13|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     13|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7490|     13|#line 7491 "/src/php-src/Zend/zend_language_parser.c"
 7491|     13|    break;
 7492|       |
 7493|     13|  case 443:
  ------------------
  |  Branch (7493:3): [True: 13, False: 305k]
  ------------------
 7494|     13|#line 1310 "/src/php-src/Zend/zend_language_parser.y"
 7495|     13|                        { (yyval.ast) = zend_ast_create(ZEND_AST_AND, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     13|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     13|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     13|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7496|     13|#line 7497 "/src/php-src/Zend/zend_language_parser.c"
 7497|     13|    break;
 7498|       |
 7499|      1|  case 444:
  ------------------
  |  Branch (7499:3): [True: 1, False: 305k]
  ------------------
 7500|      1|#line 1312 "/src/php-src/Zend/zend_language_parser.y"
 7501|      1|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_BOOL_XOR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  139|      1|#define ZEND_BOOL_XOR                        15
  ------------------
 7502|      1|#line 7503 "/src/php-src/Zend/zend_language_parser.c"
 7503|      1|    break;
 7504|       |
 7505|     65|  case 445:
  ------------------
  |  Branch (7505:3): [True: 65, False: 305k]
  ------------------
 7506|     65|#line 1313 "/src/php-src/Zend/zend_language_parser.y"
 7507|     65|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_BW_OR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  133|     65|#define ZEND_BW_OR                            9
  ------------------
 7508|     65|#line 7509 "/src/php-src/Zend/zend_language_parser.c"
 7509|     65|    break;
 7510|       |
 7511|    199|  case 446:
  ------------------
  |  Branch (7511:3): [True: 199, False: 305k]
  ------------------
 7512|    199|#line 1314 "/src/php-src/Zend/zend_language_parser.y"
 7513|    199|                                                                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_BW_AND, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  134|    199|#define ZEND_BW_AND                          10
  ------------------
 7514|    199|#line 7515 "/src/php-src/Zend/zend_language_parser.c"
 7515|    199|    break;
 7516|       |
 7517|     14|  case 447:
  ------------------
  |  Branch (7517:3): [True: 14, False: 305k]
  ------------------
 7518|     14|#line 1315 "/src/php-src/Zend/zend_language_parser.y"
 7519|     14|                                                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_BW_AND, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  134|     14|#define ZEND_BW_AND                          10
  ------------------
 7520|     14|#line 7521 "/src/php-src/Zend/zend_language_parser.c"
 7521|     14|    break;
 7522|       |
 7523|    170|  case 448:
  ------------------
  |  Branch (7523:3): [True: 170, False: 305k]
  ------------------
 7524|    170|#line 1316 "/src/php-src/Zend/zend_language_parser.y"
 7525|    170|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_BW_XOR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  135|    170|#define ZEND_BW_XOR                          11
  ------------------
 7526|    170|#line 7527 "/src/php-src/Zend/zend_language_parser.c"
 7527|    170|    break;
 7528|       |
 7529|    383|  case 449:
  ------------------
  |  Branch (7529:3): [True: 383, False: 305k]
  ------------------
 7530|    383|#line 1317 "/src/php-src/Zend/zend_language_parser.y"
 7531|    383|                                { (yyval.ast) = zend_ast_create_concat_op((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7532|    383|#line 7533 "/src/php-src/Zend/zend_language_parser.c"
 7533|    383|    break;
 7534|       |
 7535|    183|  case 450:
  ------------------
  |  Branch (7535:3): [True: 183, False: 305k]
  ------------------
 7536|    183|#line 1318 "/src/php-src/Zend/zend_language_parser.y"
 7537|    183|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_ADD, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  125|    183|#define ZEND_ADD                              1
  ------------------
 7538|    183|#line 7539 "/src/php-src/Zend/zend_language_parser.c"
 7539|    183|    break;
 7540|       |
 7541|    307|  case 451:
  ------------------
  |  Branch (7541:3): [True: 307, False: 305k]
  ------------------
 7542|    307|#line 1319 "/src/php-src/Zend/zend_language_parser.y"
 7543|    307|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_SUB, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  126|    307|#define ZEND_SUB                              2
  ------------------
 7544|    307|#line 7545 "/src/php-src/Zend/zend_language_parser.c"
 7545|    307|    break;
 7546|       |
 7547|    346|  case 452:
  ------------------
  |  Branch (7547:3): [True: 346, False: 305k]
  ------------------
 7548|    346|#line 1320 "/src/php-src/Zend/zend_language_parser.y"
 7549|    346|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_MUL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  127|    346|#define ZEND_MUL                              3
  ------------------
 7550|    346|#line 7551 "/src/php-src/Zend/zend_language_parser.c"
 7551|    346|    break;
 7552|       |
 7553|    100|  case 453:
  ------------------
  |  Branch (7553:3): [True: 100, False: 305k]
  ------------------
 7554|    100|#line 1321 "/src/php-src/Zend/zend_language_parser.y"
 7555|    100|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_POW, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  136|    100|#define ZEND_POW                             12
  ------------------
 7556|    100|#line 7557 "/src/php-src/Zend/zend_language_parser.c"
 7557|    100|    break;
 7558|       |
 7559|    229|  case 454:
  ------------------
  |  Branch (7559:3): [True: 229, False: 305k]
  ------------------
 7560|    229|#line 1322 "/src/php-src/Zend/zend_language_parser.y"
 7561|    229|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_DIV, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  128|    229|#define ZEND_DIV                              4
  ------------------
 7562|    229|#line 7563 "/src/php-src/Zend/zend_language_parser.c"
 7563|    229|    break;
 7564|       |
 7565|    195|  case 455:
  ------------------
  |  Branch (7565:3): [True: 195, False: 305k]
  ------------------
 7566|    195|#line 1323 "/src/php-src/Zend/zend_language_parser.y"
 7567|    195|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_MOD, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  129|    195|#define ZEND_MOD                              5
  ------------------
 7568|    195|#line 7569 "/src/php-src/Zend/zend_language_parser.c"
 7569|    195|    break;
 7570|       |
 7571|    150|  case 456:
  ------------------
  |  Branch (7571:3): [True: 150, False: 305k]
  ------------------
 7572|    150|#line 1324 "/src/php-src/Zend/zend_language_parser.y"
 7573|    150|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_SL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  130|    150|#define ZEND_SL                               6
  ------------------
 7574|    150|#line 7575 "/src/php-src/Zend/zend_language_parser.c"
 7575|    150|    break;
 7576|       |
 7577|     23|  case 457:
  ------------------
  |  Branch (7577:3): [True: 23, False: 305k]
  ------------------
 7578|     23|#line 1325 "/src/php-src/Zend/zend_language_parser.y"
 7579|     23|                                { (yyval.ast) = zend_ast_create_binary_op(ZEND_SR, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  131|     23|#define ZEND_SR                               7
  ------------------
 7580|     23|#line 7581 "/src/php-src/Zend/zend_language_parser.c"
 7581|     23|    break;
 7582|       |
 7583|     94|  case 458:
  ------------------
  |  Branch (7583:3): [True: 94, False: 305k]
  ------------------
 7584|     94|#line 1326 "/src/php-src/Zend/zend_language_parser.y"
 7585|     94|                                   { (yyval.ast) = zend_ast_create(ZEND_AST_UNARY_PLUS, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     94|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     94|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     94|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7586|     94|#line 7587 "/src/php-src/Zend/zend_language_parser.c"
 7587|     94|    break;
 7588|       |
 7589|    263|  case 459:
  ------------------
  |  Branch (7589:3): [True: 263, False: 305k]
  ------------------
 7590|    263|#line 1327 "/src/php-src/Zend/zend_language_parser.y"
 7591|    263|                                   { (yyval.ast) = zend_ast_create(ZEND_AST_UNARY_MINUS, (yyvsp[0].ast)); }
  ------------------
  |  |  316|    263|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    263|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    263|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7592|    263|#line 7593 "/src/php-src/Zend/zend_language_parser.c"
 7593|    263|    break;
 7594|       |
 7595|    364|  case 460:
  ------------------
  |  Branch (7595:3): [True: 364, False: 305k]
  ------------------
 7596|    364|#line 1328 "/src/php-src/Zend/zend_language_parser.y"
 7597|    364|                         { (yyval.ast) = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, (yyvsp[0].ast)); }
  ------------------
  |  |  318|    364|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    364|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    364|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7598|    364|#line 7599 "/src/php-src/Zend/zend_language_parser.c"
 7599|    364|    break;
 7600|       |
 7601|    399|  case 461:
  ------------------
  |  Branch (7601:3): [True: 399, False: 305k]
  ------------------
 7602|    399|#line 1329 "/src/php-src/Zend/zend_language_parser.y"
 7603|    399|                         { (yyval.ast) = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BW_NOT, (yyvsp[0].ast)); }
  ------------------
  |  |  318|    399|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|    399|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    399|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7604|    399|#line 7605 "/src/php-src/Zend/zend_language_parser.c"
 7605|    399|    break;
 7606|       |
 7607|     56|  case 462:
  ------------------
  |  Branch (7607:3): [True: 56, False: 305k]
  ------------------
 7608|     56|#line 1331 "/src/php-src/Zend/zend_language_parser.y"
 7609|     56|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_IS_IDENTICAL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  140|     56|#define ZEND_IS_IDENTICAL                    16
  ------------------
 7610|     56|#line 7611 "/src/php-src/Zend/zend_language_parser.c"
 7611|     56|    break;
 7612|       |
 7613|      5|  case 463:
  ------------------
  |  Branch (7613:3): [True: 5, False: 305k]
  ------------------
 7614|      5|#line 1333 "/src/php-src/Zend/zend_language_parser.y"
 7615|      5|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_IS_NOT_IDENTICAL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  141|      5|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
 7616|      5|#line 7617 "/src/php-src/Zend/zend_language_parser.c"
 7617|      5|    break;
 7618|       |
 7619|     95|  case 464:
  ------------------
  |  Branch (7619:3): [True: 95, False: 305k]
  ------------------
 7620|     95|#line 1335 "/src/php-src/Zend/zend_language_parser.y"
 7621|     95|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_IS_EQUAL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  142|     95|#define ZEND_IS_EQUAL                        18
  ------------------
 7622|     95|#line 7623 "/src/php-src/Zend/zend_language_parser.c"
 7623|     95|    break;
 7624|       |
 7625|     43|  case 465:
  ------------------
  |  Branch (7625:3): [True: 43, False: 305k]
  ------------------
 7626|     43|#line 1337 "/src/php-src/Zend/zend_language_parser.y"
 7627|     43|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_IS_NOT_EQUAL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  143|     43|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
 7628|     43|#line 7629 "/src/php-src/Zend/zend_language_parser.c"
 7629|     43|    break;
 7630|       |
 7631|     28|  case 466:
  ------------------
  |  Branch (7631:3): [True: 28, False: 305k]
  ------------------
 7632|     28|#line 1339 "/src/php-src/Zend/zend_language_parser.y"
 7633|     28|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PIPE, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     28|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     28|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     28|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7634|     28|#line 7635 "/src/php-src/Zend/zend_language_parser.c"
 7635|     28|    break;
 7636|       |
 7637|    266|  case 467:
  ------------------
  |  Branch (7637:3): [True: 266, False: 305k]
  ------------------
 7638|    266|#line 1341 "/src/php-src/Zend/zend_language_parser.y"
 7639|    266|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_IS_SMALLER, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  144|    266|#define ZEND_IS_SMALLER                      20
  ------------------
 7640|    266|#line 7641 "/src/php-src/Zend/zend_language_parser.c"
 7641|    266|    break;
 7642|       |
 7643|     16|  case 468:
  ------------------
  |  Branch (7643:3): [True: 16, False: 305k]
  ------------------
 7644|     16|#line 1343 "/src/php-src/Zend/zend_language_parser.y"
 7645|     16|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_IS_SMALLER_OR_EQUAL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  145|     16|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
 7646|     16|#line 7647 "/src/php-src/Zend/zend_language_parser.c"
 7647|     16|    break;
 7648|       |
 7649|    132|  case 469:
  ------------------
  |  Branch (7649:3): [True: 132, False: 305k]
  ------------------
 7650|    132|#line 1345 "/src/php-src/Zend/zend_language_parser.y"
 7651|    132|                        { (yyval.ast) = zend_ast_create(ZEND_AST_GREATER, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    132|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    132|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    132|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7652|    132|#line 7653 "/src/php-src/Zend/zend_language_parser.c"
 7653|    132|    break;
 7654|       |
 7655|     15|  case 470:
  ------------------
  |  Branch (7655:3): [True: 15, False: 305k]
  ------------------
 7656|     15|#line 1347 "/src/php-src/Zend/zend_language_parser.y"
 7657|     15|                        { (yyval.ast) = zend_ast_create(ZEND_AST_GREATER_EQUAL, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     15|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     15|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     15|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7658|     15|#line 7659 "/src/php-src/Zend/zend_language_parser.c"
 7659|     15|    break;
 7660|       |
 7661|     10|  case 471:
  ------------------
  |  Branch (7661:3): [True: 10, False: 305k]
  ------------------
 7662|     10|#line 1349 "/src/php-src/Zend/zend_language_parser.y"
 7663|     10|                        { (yyval.ast) = zend_ast_create_binary_op(ZEND_SPACESHIP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  292|     10|#define ZEND_SPACESHIP                      170
  ------------------
 7664|     10|#line 7665 "/src/php-src/Zend/zend_language_parser.c"
 7665|     10|    break;
 7666|       |
 7667|     24|  case 472:
  ------------------
  |  Branch (7667:3): [True: 24, False: 305k]
  ------------------
 7668|     24|#line 1351 "/src/php-src/Zend/zend_language_parser.y"
 7669|     24|                        { (yyval.ast) = zend_ast_create(ZEND_AST_INSTANCEOF, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     24|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     24|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     24|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7670|     24|#line 7671 "/src/php-src/Zend/zend_language_parser.c"
 7671|     24|    break;
 7672|       |
 7673|    685|  case 473:
  ------------------
  |  Branch (7673:3): [True: 685, False: 305k]
  ------------------
 7674|    685|#line 1352 "/src/php-src/Zend/zend_language_parser.y"
 7675|    685|                             {
 7676|    685|			(yyval.ast) = (yyvsp[-1].ast);
 7677|    685|			if ((yyval.ast)->kind == ZEND_AST_CONDITIONAL) (yyval.ast)->attr = ZEND_PARENTHESIZED_CONDITIONAL;
  ------------------
  |  | 1214|      2|#define ZEND_PARENTHESIZED_CONDITIONAL 1
  ------------------
  |  Branch (7677:8): [True: 2, False: 683]
  ------------------
 7678|    685|			if ((yyval.ast)->kind == ZEND_AST_ARROW_FUNC) (yyval.ast)->attr = ZEND_PARENTHESIZED_ARROW_FUNC;
  ------------------
  |  | 1220|      6|#define ZEND_PARENTHESIZED_ARROW_FUNC 1
  ------------------
  |  Branch (7678:8): [True: 6, False: 679]
  ------------------
 7679|    685|		}
 7680|    685|#line 7681 "/src/php-src/Zend/zend_language_parser.c"
 7681|    685|    break;
 7682|       |
 7683|  1.21k|  case 474:
  ------------------
  |  Branch (7683:3): [True: 1.21k, False: 304k]
  ------------------
 7684|  1.21k|#line 1357 "/src/php-src/Zend/zend_language_parser.y"
 7685|  1.21k|                                    { (yyval.ast) = (yyvsp[0].ast); }
 7686|  1.21k|#line 7687 "/src/php-src/Zend/zend_language_parser.c"
 7687|  1.21k|    break;
 7688|       |
 7689|    516|  case 475:
  ------------------
  |  Branch (7689:3): [True: 516, False: 305k]
  ------------------
 7690|    516|#line 1358 "/src/php-src/Zend/zend_language_parser.y"
 7691|    516|                                        { (yyval.ast) = (yyvsp[0].ast); }
 7692|    516|#line 7693 "/src/php-src/Zend/zend_language_parser.c"
 7693|    516|    break;
 7694|       |
 7695|     28|  case 476:
  ------------------
  |  Branch (7695:3): [True: 28, False: 305k]
  ------------------
 7696|     28|#line 1360 "/src/php-src/Zend/zend_language_parser.y"
 7697|     28|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CONDITIONAL, (yyvsp[-4].ast), (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     28|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     28|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     28|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7698|     28|#line 7699 "/src/php-src/Zend/zend_language_parser.c"
 7699|     28|    break;
 7700|       |
 7701|     21|  case 477:
  ------------------
  |  Branch (7701:3): [True: 21, False: 305k]
  ------------------
 7702|     21|#line 1362 "/src/php-src/Zend/zend_language_parser.y"
 7703|     21|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CONDITIONAL, (yyvsp[-3].ast), NULL, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     21|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     21|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     21|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7704|     21|#line 7705 "/src/php-src/Zend/zend_language_parser.c"
 7705|     21|    break;
 7706|       |
 7707|     27|  case 478:
  ------------------
  |  Branch (7707:3): [True: 27, False: 305k]
  ------------------
 7708|     27|#line 1364 "/src/php-src/Zend/zend_language_parser.y"
 7709|     27|                        { (yyval.ast) = zend_ast_create(ZEND_AST_COALESCE, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     27|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     27|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     27|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7710|     27|#line 7711 "/src/php-src/Zend/zend_language_parser.c"
 7711|     27|    break;
 7712|       |
 7713|    195|  case 479:
  ------------------
  |  Branch (7713:3): [True: 195, False: 305k]
  ------------------
 7714|    195|#line 1365 "/src/php-src/Zend/zend_language_parser.y"
 7715|    195|                                           { (yyval.ast) = (yyvsp[0].ast); }
 7716|    195|#line 7717 "/src/php-src/Zend/zend_language_parser.c"
 7717|    195|    break;
 7718|       |
 7719|     15|  case 480:
  ------------------
  |  Branch (7719:3): [True: 15, False: 305k]
  ------------------
 7720|     15|#line 1366 "/src/php-src/Zend/zend_language_parser.y"
 7721|     15|                                        { (yyval.ast) = zend_ast_create_cast(IS_LONG, (yyvsp[0].ast)); }
  ------------------
  |  |  610|     15|#define IS_LONG						4
  ------------------
 7722|     15|#line 7723 "/src/php-src/Zend/zend_language_parser.c"
 7723|     15|    break;
 7724|       |
 7725|     11|  case 481:
  ------------------
  |  Branch (7725:3): [True: 11, False: 305k]
  ------------------
 7726|     11|#line 1367 "/src/php-src/Zend/zend_language_parser.y"
 7727|     11|                                        { (yyval.ast) = zend_ast_create_cast(IS_DOUBLE, (yyvsp[0].ast)); }
  ------------------
  |  |  611|     11|#define IS_DOUBLE					5
  ------------------
 7728|     11|#line 7729 "/src/php-src/Zend/zend_language_parser.c"
 7729|     11|    break;
 7730|       |
 7731|     31|  case 482:
  ------------------
  |  Branch (7731:3): [True: 31, False: 305k]
  ------------------
 7732|     31|#line 1368 "/src/php-src/Zend/zend_language_parser.y"
 7733|     31|                                        { (yyval.ast) = zend_ast_create_cast(IS_STRING, (yyvsp[0].ast)); }
  ------------------
  |  |  612|     31|#define IS_STRING					6
  ------------------
 7734|     31|#line 7735 "/src/php-src/Zend/zend_language_parser.c"
 7735|     31|    break;
 7736|       |
 7737|     14|  case 483:
  ------------------
  |  Branch (7737:3): [True: 14, False: 305k]
  ------------------
 7738|     14|#line 1369 "/src/php-src/Zend/zend_language_parser.y"
 7739|     14|                                        { (yyval.ast) = zend_ast_create_cast(IS_ARRAY, (yyvsp[0].ast)); }
  ------------------
  |  |  613|     14|#define IS_ARRAY					7
  ------------------
 7740|     14|#line 7741 "/src/php-src/Zend/zend_language_parser.c"
 7741|     14|    break;
 7742|       |
 7743|     30|  case 484:
  ------------------
  |  Branch (7743:3): [True: 30, False: 305k]
  ------------------
 7744|     30|#line 1370 "/src/php-src/Zend/zend_language_parser.y"
 7745|     30|                                        { (yyval.ast) = zend_ast_create_cast(IS_OBJECT, (yyvsp[0].ast)); }
  ------------------
  |  |  614|     30|#define IS_OBJECT					8
  ------------------
 7746|     30|#line 7747 "/src/php-src/Zend/zend_language_parser.c"
 7747|     30|    break;
 7748|       |
 7749|      1|  case 485:
  ------------------
  |  Branch (7749:3): [True: 1, False: 305k]
  ------------------
 7750|      1|#line 1371 "/src/php-src/Zend/zend_language_parser.y"
 7751|      1|                                        { (yyval.ast) = zend_ast_create_cast(_IS_BOOL, (yyvsp[0].ast)); }
  ------------------
  |  |  635|      1|#define _IS_BOOL					18
  ------------------
 7752|      1|#line 7753 "/src/php-src/Zend/zend_language_parser.c"
 7753|      1|    break;
 7754|       |
 7755|      9|  case 486:
  ------------------
  |  Branch (7755:3): [True: 9, False: 305k]
  ------------------
 7756|      9|#line 1372 "/src/php-src/Zend/zend_language_parser.y"
 7757|      9|                                        { (yyval.ast) = zend_ast_create_cast(IS_NULL, (yyvsp[0].ast)); }
  ------------------
  |  |  607|      9|#define IS_NULL						1
  ------------------
 7758|      9|#line 7759 "/src/php-src/Zend/zend_language_parser.c"
 7759|      9|    break;
 7760|       |
 7761|     19|  case 487:
  ------------------
  |  Branch (7761:3): [True: 19, False: 305k]
  ------------------
 7762|     19|#line 1373 "/src/php-src/Zend/zend_language_parser.y"
 7763|     19|                                      {
 7764|     19|			zend_ast *name = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_EXIT));
 7765|     19|			name->attr = ZEND_NAME_FQ;
  ------------------
  |  | 1060|     19|#define ZEND_NAME_FQ       0
  ------------------
 7766|     19|			(yyval.ast) = zend_ast_create(ZEND_AST_CALL, name, (yyvsp[0].ast));
  ------------------
  |  |  316|     19|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     19|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     19|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7767|     19|		}
 7768|     19|#line 7769 "/src/php-src/Zend/zend_language_parser.c"
 7769|     19|    break;
 7770|       |
 7771|    317|  case 488:
  ------------------
  |  Branch (7771:3): [True: 317, False: 305k]
  ------------------
 7772|    317|#line 1378 "/src/php-src/Zend/zend_language_parser.y"
 7773|    317|                                                { (yyval.ast) = zend_ast_create(ZEND_AST_SILENCE, (yyvsp[0].ast)); }
  ------------------
  |  |  316|    317|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    317|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    317|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7774|    317|#line 7775 "/src/php-src/Zend/zend_language_parser.c"
 7775|    317|    break;
 7776|       |
 7777|  14.6k|  case 489:
  ------------------
  |  Branch (7777:3): [True: 14.6k, False: 291k]
  ------------------
 7778|  14.6k|#line 1379 "/src/php-src/Zend/zend_language_parser.y"
 7779|  14.6k|                       { (yyval.ast) = (yyvsp[0].ast); }
 7780|  14.6k|#line 7781 "/src/php-src/Zend/zend_language_parser.c"
 7781|  14.6k|    break;
 7782|       |
 7783|     25|  case 490:
  ------------------
  |  Branch (7783:3): [True: 25, False: 305k]
  ------------------
 7784|     25|#line 1380 "/src/php-src/Zend/zend_language_parser.y"
 7785|     25|                                       { (yyval.ast) = zend_ast_create(ZEND_AST_SHELL_EXEC, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|     25|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     25|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     25|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7786|     25|#line 7787 "/src/php-src/Zend/zend_language_parser.c"
 7787|     25|    break;
 7788|       |
 7789|     60|  case 491:
  ------------------
  |  Branch (7789:3): [True: 60, False: 305k]
  ------------------
 7790|     60|#line 1381 "/src/php-src/Zend/zend_language_parser.y"
 7791|     60|                             { (yyval.ast) = zend_ast_create(ZEND_AST_PRINT, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     60|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     60|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     60|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7792|     60|#line 7793 "/src/php-src/Zend/zend_language_parser.c"
 7793|     60|    break;
 7794|       |
 7795|     90|  case 492:
  ------------------
  |  Branch (7795:3): [True: 90, False: 305k]
  ------------------
 7796|     90|#line 1382 "/src/php-src/Zend/zend_language_parser.y"
 7797|     90|                        { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, NULL, NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  316|     90|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     90|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     90|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                      { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, NULL, NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |   35|     90|# define CG(v) (compiler_globals.v)
  ------------------
                                      { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, NULL, NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  387|     90|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
 7798|     90|#line 7799 "/src/php-src/Zend/zend_language_parser.c"
 7799|     90|    break;
 7800|       |
 7801|    121|  case 493:
  ------------------
  |  Branch (7801:3): [True: 121, False: 305k]
  ------------------
 7802|    121|#line 1383 "/src/php-src/Zend/zend_language_parser.y"
 7803|    121|                             { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, (yyvsp[0].ast), NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  316|    121|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    121|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    121|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                           { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, (yyvsp[0].ast), NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |   35|    121|# define CG(v) (compiler_globals.v)
  ------------------
                                           { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, (yyvsp[0].ast), NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  387|    121|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
 7804|    121|#line 7805 "/src/php-src/Zend/zend_language_parser.c"
 7805|    121|    break;
 7806|       |
 7807|     10|  case 494:
  ------------------
  |  Branch (7807:3): [True: 10, False: 305k]
  ------------------
 7808|     10|#line 1384 "/src/php-src/Zend/zend_language_parser.y"
 7809|     10|                                                 { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, (yyvsp[0].ast), (yyvsp[-2].ast)); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  316|     10|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     10|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     10|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                                               { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, (yyvsp[0].ast), (yyvsp[-2].ast)); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |   35|     10|# define CG(v) (compiler_globals.v)
  ------------------
                                                               { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD, (yyvsp[0].ast), (yyvsp[-2].ast)); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  387|     10|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
 7810|     10|#line 7811 "/src/php-src/Zend/zend_language_parser.c"
 7811|     10|    break;
 7812|       |
 7813|     19|  case 495:
  ------------------
  |  Branch (7813:3): [True: 19, False: 305k]
  ------------------
 7814|     19|#line 1385 "/src/php-src/Zend/zend_language_parser.y"
 7815|     19|                                  { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD_FROM, (yyvsp[0].ast)); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  316|     19|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     19|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     19|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                                { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD_FROM, (yyvsp[0].ast)); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |   35|     19|# define CG(v) (compiler_globals.v)
  ------------------
                                                { (yyval.ast) = zend_ast_create(ZEND_AST_YIELD_FROM, (yyvsp[0].ast)); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
  ------------------
  |  |  387|     19|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
 7816|     19|#line 7817 "/src/php-src/Zend/zend_language_parser.c"
 7817|     19|    break;
 7818|       |
 7819|     69|  case 496:
  ------------------
  |  Branch (7819:3): [True: 69, False: 305k]
  ------------------
 7820|     69|#line 1386 "/src/php-src/Zend/zend_language_parser.y"
 7821|     69|                             { (yyval.ast) = zend_ast_create(ZEND_AST_THROW, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     69|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     69|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     69|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7822|     69|#line 7823 "/src/php-src/Zend/zend_language_parser.c"
 7823|     69|    break;
 7824|       |
 7825|    283|  case 497:
  ------------------
  |  Branch (7825:3): [True: 283, False: 305k]
  ------------------
 7826|    283|#line 1387 "/src/php-src/Zend/zend_language_parser.y"
 7827|    283|                                { (yyval.ast) = (yyvsp[0].ast); }
 7828|    283|#line 7829 "/src/php-src/Zend/zend_language_parser.c"
 7829|    283|    break;
 7830|       |
 7831|      0|  case 498:
  ------------------
  |  Branch (7831:3): [True: 0, False: 305k]
  ------------------
 7832|      0|#line 1388 "/src/php-src/Zend/zend_language_parser.y"
 7833|      0|                                           { (yyval.ast) = zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-1].ast)); }
 7834|      0|#line 7835 "/src/php-src/Zend/zend_language_parser.c"
 7835|      0|    break;
 7836|       |
 7837|      5|  case 499:
  ------------------
  |  Branch (7837:3): [True: 5, False: 305k]
  ------------------
 7838|      5|#line 1389 "/src/php-src/Zend/zend_language_parser.y"
 7839|      5|                                         { (yyval.ast) = (yyvsp[0].ast); ((zend_ast_decl *) (yyval.ast))->flags |= ZEND_ACC_STATIC; }
  ------------------
  |  |  227|      5|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
 7840|      5|#line 7841 "/src/php-src/Zend/zend_language_parser.c"
 7841|      5|    break;
 7842|       |
 7843|      0|  case 500:
  ------------------
  |  Branch (7843:3): [True: 0, False: 305k]
  ------------------
 7844|      0|#line 1391 "/src/php-src/Zend/zend_language_parser.y"
 7845|      0|                        { (yyval.ast) = zend_ast_with_attributes((yyvsp[0].ast), (yyvsp[-2].ast)); ((zend_ast_decl *) (yyval.ast))->flags |= ZEND_ACC_STATIC; }
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
 7846|      0|#line 7847 "/src/php-src/Zend/zend_language_parser.c"
 7847|      0|    break;
 7848|       |
 7849|     33|  case 501:
  ------------------
  |  Branch (7849:3): [True: 33, False: 305k]
  ------------------
 7850|     33|#line 1392 "/src/php-src/Zend/zend_language_parser.y"
 7851|     33|                      { (yyval.ast) = (yyvsp[0].ast); }
 7852|     33|#line 7853 "/src/php-src/Zend/zend_language_parser.c"
 7853|     33|    break;
 7854|       |
 7855|    252|  case 502:
  ------------------
  |  Branch (7855:3): [True: 252, False: 305k]
  ------------------
 7856|    252|#line 1399 "/src/php-src/Zend/zend_language_parser.y"
 7857|    252|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_CLOSURE, (yyvsp[-11].num) | (yyvsp[0].num), (yyvsp[-12].num), (yyvsp[-10].str),
 7858|    252|				  NULL,
 7859|    252|				  (yyvsp[-8].ast), (yyvsp[-6].ast), (yyvsp[-2].ast), (yyvsp[-5].ast), NULL); CG(extra_fn_flags) = (yyvsp[-4].num); }
  ------------------
  |  |   35|    252|# define CG(v) (compiler_globals.v)
  ------------------
 7860|    252|#line 7861 "/src/php-src/Zend/zend_language_parser.c"
 7861|    252|    break;
 7862|       |
 7863|     36|  case 503:
  ------------------
  |  Branch (7863:3): [True: 36, False: 305k]
  ------------------
 7864|     36|#line 1404 "/src/php-src/Zend/zend_language_parser.y"
 7865|     36|                        { (yyval.ast) = zend_ast_create_decl(ZEND_AST_ARROW_FUNC, (yyvsp[-10].num) | (yyvsp[0].num), (yyvsp[-11].num), (yyvsp[-9].str),
 7866|     36|				  NULL, (yyvsp[-7].ast), NULL, (yyvsp[-1].ast), (yyvsp[-5].ast), NULL);
 7867|     36|				  CG(extra_fn_flags) = (yyvsp[-3].num); }
  ------------------
  |  |   35|     36|# define CG(v) (compiler_globals.v)
  ------------------
 7868|     36|#line 7869 "/src/php-src/Zend/zend_language_parser.c"
 7869|     36|    break;
 7870|       |
 7871|     38|  case 504:
  ------------------
  |  Branch (7871:3): [True: 38, False: 305k]
  ------------------
 7872|     38|#line 1410 "/src/php-src/Zend/zend_language_parser.y"
 7873|     38|             { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|     38|# define CG(v) (compiler_globals.v)
  ------------------
 7874|     38|#line 7875 "/src/php-src/Zend/zend_language_parser.c"
 7875|     38|    break;
 7876|       |
 7877|  1.55k|  case 505:
  ------------------
  |  Branch (7877:3): [True: 1.55k, False: 304k]
  ------------------
 7878|  1.55k|#line 1414 "/src/php-src/Zend/zend_language_parser.y"
 7879|  1.55k|                   { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|  1.55k|# define CG(v) (compiler_globals.v)
  ------------------
 7880|  1.55k|#line 7881 "/src/php-src/Zend/zend_language_parser.c"
 7881|  1.55k|    break;
 7882|       |
 7883|  5.75k|  case 506:
  ------------------
  |  Branch (7883:3): [True: 5.75k, False: 300k]
  ------------------
 7884|  5.75k|#line 1418 "/src/php-src/Zend/zend_language_parser.y"
 7885|  5.75k|               { (yyval.str) = CG(doc_comment); CG(doc_comment) = NULL; }
  ------------------
  |  |   35|  5.75k|# define CG(v) (compiler_globals.v)
  ------------------
                             { (yyval.str) = CG(doc_comment); CG(doc_comment) = NULL; }
  ------------------
  |  |   35|  5.75k|# define CG(v) (compiler_globals.v)
  ------------------
 7886|  5.75k|#line 7887 "/src/php-src/Zend/zend_language_parser.c"
 7887|  5.75k|    break;
 7888|       |
 7889|  3.47k|  case 507:
  ------------------
  |  Branch (7889:3): [True: 3.47k, False: 302k]
  ------------------
 7890|  3.47k|#line 1422 "/src/php-src/Zend/zend_language_parser.y"
 7891|  3.47k|                                         { (yyval.num) = CG(extra_fn_flags); CG(extra_fn_flags) = 0; }
  ------------------
  |  |   35|  3.47k|# define CG(v) (compiler_globals.v)
  ------------------
                                                       { (yyval.num) = CG(extra_fn_flags); CG(extra_fn_flags) = 0; }
  ------------------
  |  |   35|  3.47k|# define CG(v) (compiler_globals.v)
  ------------------
 7892|  3.47k|#line 7893 "/src/php-src/Zend/zend_language_parser.c"
 7893|  3.47k|    break;
 7894|       |
 7895|     38|  case 508:
  ------------------
  |  Branch (7895:3): [True: 38, False: 305k]
  ------------------
 7896|     38|#line 1426 "/src/php-src/Zend/zend_language_parser.y"
 7897|     38|               { (yyval.ptr) = LANG_SCNG(yy_text); }
  ------------------
  |  |   55|     38|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
 7898|     38|#line 7899 "/src/php-src/Zend/zend_language_parser.c"
 7899|     38|    break;
 7900|       |
 7901|  1.71k|  case 509:
  ------------------
  |  Branch (7901:3): [True: 1.71k, False: 304k]
  ------------------
 7902|  1.71k|#line 1430 "/src/php-src/Zend/zend_language_parser.y"
 7903|  1.71k|                        { (yyval.num) = 0; }
 7904|  1.71k|#line 7905 "/src/php-src/Zend/zend_language_parser.c"
 7905|  1.71k|    break;
 7906|       |
 7907|     73|  case 510:
  ------------------
  |  Branch (7907:3): [True: 73, False: 305k]
  ------------------
 7908|     73|#line 1431 "/src/php-src/Zend/zend_language_parser.y"
 7909|     73|                                { (yyval.num) = ZEND_ACC_RETURN_REFERENCE; }
  ------------------
  |  |  352|     73|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
 7910|     73|#line 7911 "/src/php-src/Zend/zend_language_parser.c"
 7911|     73|    break;
 7912|       |
 7913|    227|  case 511:
  ------------------
  |  Branch (7913:3): [True: 227, False: 305k]
  ------------------
 7914|    227|#line 1435 "/src/php-src/Zend/zend_language_parser.y"
 7915|    227|                       { (yyval.ast) = NULL; }
 7916|    227|#line 7917 "/src/php-src/Zend/zend_language_parser.c"
 7917|    227|    break;
 7918|       |
 7919|     36|  case 512:
  ------------------
  |  Branch (7919:3): [True: 36, False: 305k]
  ------------------
 7920|     36|#line 1436 "/src/php-src/Zend/zend_language_parser.y"
 7921|     36|                                                              { (yyval.ast) = (yyvsp[-2].ast); }
 7922|     36|#line 7923 "/src/php-src/Zend/zend_language_parser.c"
 7923|     36|    break;
 7924|       |
 7925|      6|  case 513:
  ------------------
  |  Branch (7925:3): [True: 6, False: 305k]
  ------------------
 7926|      6|#line 1440 "/src/php-src/Zend/zend_language_parser.y"
 7927|      6|                                                 { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 7928|      6|#line 7929 "/src/php-src/Zend/zend_language_parser.c"
 7929|      6|    break;
 7930|       |
 7931|     36|  case 514:
  ------------------
  |  Branch (7931:3): [True: 36, False: 305k]
  ------------------
 7932|     36|#line 1441 "/src/php-src/Zend/zend_language_parser.y"
 7933|     36|                            { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_CLOSURE_USES, (yyvsp[0].ast)); }
  ------------------
  |  |  320|     36|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     36|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     36|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7934|     36|#line 7935 "/src/php-src/Zend/zend_language_parser.c"
 7935|     36|    break;
 7936|       |
 7937|     23|  case 515:
  ------------------
  |  Branch (7937:3): [True: 23, False: 305k]
  ------------------
 7938|     23|#line 1445 "/src/php-src/Zend/zend_language_parser.y"
 7939|     23|                                        { (yyval.ast) = (yyvsp[0].ast); }
 7940|     23|#line 7941 "/src/php-src/Zend/zend_language_parser.c"
 7941|     23|    break;
 7942|       |
 7943|     19|  case 516:
  ------------------
  |  Branch (7943:3): [True: 19, False: 305k]
  ------------------
 7944|     19|#line 1446 "/src/php-src/Zend/zend_language_parser.y"
 7945|     19|                                        { (yyval.ast) = (yyvsp[0].ast); (yyval.ast)->attr = ZEND_BIND_REF; }
  ------------------
  |  | 1202|     19|#define ZEND_BIND_REF      1
  ------------------
 7946|     19|#line 7947 "/src/php-src/Zend/zend_language_parser.c"
 7947|     19|    break;
 7948|       |
 7949|  4.39k|  case 517:
  ------------------
  |  Branch (7949:3): [True: 4.39k, False: 301k]
  ------------------
 7950|  4.39k|#line 1451 "/src/php-src/Zend/zend_language_parser.y"
 7951|  4.39k|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CALL, (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|  4.39k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  4.39k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  4.39k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7952|  4.39k|#line 7953 "/src/php-src/Zend/zend_language_parser.c"
 7953|  4.39k|    break;
 7954|       |
 7955|      0|  case 518:
  ------------------
  |  Branch (7955:3): [True: 0, False: 305k]
  ------------------
 7956|      0|#line 1452 "/src/php-src/Zend/zend_language_parser.y"
 7957|      0|                                         {
 7958|      0|			zval zv;
 7959|      0|			if (zend_lex_tstring(&zv, (yyvsp[-1].ident)) == FAILURE) { YYABORT; }
  ------------------
  |  | 3590|      0|#define YYABORT         goto yyabortlab
  ------------------
  |  Branch (7959:8): [True: 0, False: 0]
  ------------------
 7960|      0|			(yyval.ast) = zend_ast_create(ZEND_AST_CALL, zend_ast_create_zval(&zv), (yyvsp[0].ast));
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7961|      0|		}
 7962|      0|#line 7963 "/src/php-src/Zend/zend_language_parser.c"
 7963|      0|    break;
 7964|       |
 7965|    136|  case 519:
  ------------------
  |  Branch (7965:3): [True: 136, False: 305k]
  ------------------
 7966|    136|#line 1458 "/src/php-src/Zend/zend_language_parser.y"
 7967|    136|                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC_CALL, (yyvsp[-3].ast), (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    136|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    136|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    136|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7968|    136|#line 7969 "/src/php-src/Zend/zend_language_parser.c"
 7969|    136|    break;
 7970|       |
 7971|     31|  case 520:
  ------------------
  |  Branch (7971:3): [True: 31, False: 305k]
  ------------------
 7972|     31|#line 1460 "/src/php-src/Zend/zend_language_parser.y"
 7973|     31|                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC_CALL, (yyvsp[-3].ast), (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     31|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     31|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     31|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7974|     31|#line 7975 "/src/php-src/Zend/zend_language_parser.c"
 7975|     31|    break;
 7976|       |
 7977|    233|  case 521:
  ------------------
  |  Branch (7977:3): [True: 233, False: 305k]
  ------------------
 7978|    233|#line 1461 "/src/php-src/Zend/zend_language_parser.y"
 7979|    233|                              { (yyval.num) = CG(zend_lineno); }
  ------------------
  |  |   35|    233|# define CG(v) (compiler_globals.v)
  ------------------
 7980|    233|#line 7981 "/src/php-src/Zend/zend_language_parser.c"
 7981|    233|    break;
 7982|       |
 7983|    206|  case 522:
  ------------------
  |  Branch (7983:3): [True: 206, False: 305k]
  ------------------
 7984|    206|#line 1461 "/src/php-src/Zend/zend_language_parser.y"
 7985|    206|                                                                           {
 7986|    206|			(yyval.ast) = zend_ast_create(ZEND_AST_CALL, (yyvsp[-2].ast), (yyvsp[0].ast));
  ------------------
  |  |  316|    206|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    206|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    206|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7987|    206|			(yyval.ast)->lineno = (yyvsp[-1].num);
 7988|    206|		}
 7989|    206|#line 7990 "/src/php-src/Zend/zend_language_parser.c"
 7990|    206|    break;
 7991|       |
 7992|     15|  case 523:
  ------------------
  |  Branch (7992:3): [True: 15, False: 305k]
  ------------------
 7993|     15|#line 1469 "/src/php-src/Zend/zend_language_parser.y"
 7994|     15|                        { zval zv; ZVAL_INTERNED_STR(&zv, ZSTR_KNOWN(ZEND_STR_STATIC));
  ------------------
  |  | 1098|     15|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|     15|		zval *__z = (z);							\
  |  | 1100|     15|		zend_string *__s = (s);						\
  |  | 1101|     15|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|     15|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     15|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|     15|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     15|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     15|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 7995|     15|			  (yyval.ast) = zend_ast_create_zval_ex(&zv, ZEND_NAME_NOT_FQ); }
  ------------------
  |  | 1061|     15|#define ZEND_NAME_NOT_FQ   1
  ------------------
 7996|     15|#line 7997 "/src/php-src/Zend/zend_language_parser.c"
 7997|     15|    break;
 7998|       |
 7999|  3.09k|  case 524:
  ------------------
  |  Branch (7999:3): [True: 3.09k, False: 302k]
  ------------------
 8000|  3.09k|#line 1471 "/src/php-src/Zend/zend_language_parser.y"
 8001|  3.09k|                     { (yyval.ast) = (yyvsp[0].ast); }
 8002|  3.09k|#line 8003 "/src/php-src/Zend/zend_language_parser.c"
 8003|  3.09k|    break;
 8004|       |
 8005|  1.68k|  case 525:
  ------------------
  |  Branch (8005:3): [True: 1.68k, False: 304k]
  ------------------
 8006|  1.68k|#line 1475 "/src/php-src/Zend/zend_language_parser.y"
 8007|  1.68k|                                        { (yyval.ast) = (yyvsp[0].ast); }
 8008|  1.68k|#line 8009 "/src/php-src/Zend/zend_language_parser.c"
 8009|  1.68k|    break;
 8010|       |
 8011|     20|  case 526:
  ------------------
  |  Branch (8011:3): [True: 20, False: 305k]
  ------------------
 8012|     20|#line 1476 "/src/php-src/Zend/zend_language_parser.y"
 8013|     20|                                { (yyval.ast) = (yyvsp[0].ast); }
 8014|     20|#line 8015 "/src/php-src/Zend/zend_language_parser.c"
 8015|     20|    break;
 8016|       |
 8017|      8|  case 527:
  ------------------
  |  Branch (8017:3): [True: 8, False: 305k]
  ------------------
 8018|      8|#line 1477 "/src/php-src/Zend/zend_language_parser.y"
 8019|      8|                                { (yyval.ast) = (yyvsp[-1].ast); }
 8020|      8|#line 8021 "/src/php-src/Zend/zend_language_parser.c"
 8021|      8|    break;
 8022|       |
 8023|      6|  case 528:
  ------------------
  |  Branch (8023:3): [True: 6, False: 305k]
  ------------------
 8024|      6|#line 1482 "/src/php-src/Zend/zend_language_parser.y"
 8025|      6|                        { (yyval.ast) = zend_ast_create_zval_from_str(ZSTR_EMPTY_ALLOC()); }
 8026|      6|#line 8027 "/src/php-src/Zend/zend_language_parser.c"
 8027|      6|    break;
 8028|       |
 8029|     26|  case 529:
  ------------------
  |  Branch (8029:3): [True: 26, False: 305k]
  ------------------
 8030|     26|#line 1483 "/src/php-src/Zend/zend_language_parser.y"
 8031|     26|                                          { (yyval.ast) = (yyvsp[0].ast); }
 8032|     26|#line 8033 "/src/php-src/Zend/zend_language_parser.c"
 8033|     26|    break;
 8034|       |
 8035|     10|  case 530:
  ------------------
  |  Branch (8035:3): [True: 10, False: 305k]
  ------------------
 8036|     10|#line 1484 "/src/php-src/Zend/zend_language_parser.y"
 8037|     10|                            { (yyval.ast) = (yyvsp[0].ast); }
 8038|     10|#line 8039 "/src/php-src/Zend/zend_language_parser.c"
 8039|     10|    break;
 8040|       |
 8041|     38|  case 531:
  ------------------
  |  Branch (8041:3): [True: 38, False: 305k]
  ------------------
 8042|     38|#line 1489 "/src/php-src/Zend/zend_language_parser.y"
 8043|     38|                        { (yyval.ast) = zend_ast_create_list(0, ZEND_AST_ARG_LIST); }
  ------------------
  |  |  320|     38|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     38|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     38|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8044|     38|#line 8045 "/src/php-src/Zend/zend_language_parser.c"
 8045|     38|    break;
 8046|       |
 8047|     31|  case 532:
  ------------------
  |  Branch (8047:3): [True: 31, False: 305k]
  ------------------
 8048|     31|#line 1490 "/src/php-src/Zend/zend_language_parser.y"
 8049|     31|                              { (yyval.ast) = (yyvsp[0].ast); }
 8050|     31|#line 8051 "/src/php-src/Zend/zend_language_parser.c"
 8051|     31|    break;
 8052|       |
 8053|    279|  case 533:
  ------------------
  |  Branch (8053:3): [True: 279, False: 305k]
  ------------------
 8054|    279|#line 1495 "/src/php-src/Zend/zend_language_parser.y"
 8055|    279|                                                { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = ZEND_ARRAY_SYNTAX_LONG; }
  ------------------
  |  | 1070|    279|#define ZEND_ARRAY_SYNTAX_LONG 2  /* array() */
  ------------------
 8056|    279|#line 8057 "/src/php-src/Zend/zend_language_parser.c"
 8057|    279|    break;
 8058|       |
 8059|    752|  case 534:
  ------------------
  |  Branch (8059:3): [True: 752, False: 305k]
  ------------------
 8060|    752|#line 1496 "/src/php-src/Zend/zend_language_parser.y"
 8061|    752|                                                        { (yyval.ast) = (yyvsp[-1].ast); (yyval.ast)->attr = ZEND_ARRAY_SYNTAX_SHORT; }
  ------------------
  |  | 1071|    752|#define ZEND_ARRAY_SYNTAX_SHORT 3 /* [] */
  ------------------
 8062|    752|#line 8063 "/src/php-src/Zend/zend_language_parser.c"
 8063|    752|    break;
 8064|       |
 8065|  4.74k|  case 535:
  ------------------
  |  Branch (8065:3): [True: 4.74k, False: 301k]
  ------------------
 8066|  4.74k|#line 1497 "/src/php-src/Zend/zend_language_parser.y"
 8067|  4.74k|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 8068|  4.74k|#line 8069 "/src/php-src/Zend/zend_language_parser.c"
 8069|  4.74k|    break;
 8070|       |
 8071|    330|  case 536:
  ------------------
  |  Branch (8071:3): [True: 330, False: 305k]
  ------------------
 8072|    330|#line 1498 "/src/php-src/Zend/zend_language_parser.y"
 8073|    330|                                                                { (yyval.ast) = (yyvsp[-1].ast); }
 8074|    330|#line 8075 "/src/php-src/Zend/zend_language_parser.c"
 8075|    330|    break;
 8076|       |
 8077|  4.89k|  case 537:
  ------------------
  |  Branch (8077:3): [True: 4.89k, False: 301k]
  ------------------
 8078|  4.89k|#line 1502 "/src/php-src/Zend/zend_language_parser.y"
 8079|  4.89k|                                { (yyval.ast) = (yyvsp[0].ast); }
 8080|  4.89k|#line 8081 "/src/php-src/Zend/zend_language_parser.c"
 8081|  4.89k|    break;
 8082|       |
 8083|    560|  case 538:
  ------------------
  |  Branch (8083:3): [True: 560, False: 305k]
  ------------------
 8084|    560|#line 1503 "/src/php-src/Zend/zend_language_parser.y"
 8085|    560|                                { (yyval.ast) = (yyvsp[0].ast); }
 8086|    560|#line 8087 "/src/php-src/Zend/zend_language_parser.c"
 8087|    560|    break;
 8088|       |
 8089|    133|  case 539:
  ------------------
  |  Branch (8089:3): [True: 133, False: 305k]
  ------------------
 8090|    133|#line 1504 "/src/php-src/Zend/zend_language_parser.y"
 8091|    133|                                                                        { (yyval.ast) = (yyvsp[-1].ast); }
 8092|    133|#line 8093 "/src/php-src/Zend/zend_language_parser.c"
 8093|    133|    break;
 8094|       |
 8095|      8|  case 540:
  ------------------
  |  Branch (8095:3): [True: 8, False: 305k]
  ------------------
 8096|      8|#line 1506 "/src/php-src/Zend/zend_language_parser.y"
 8097|      8|                        { (yyval.ast) = zend_ast_create_zval_from_str(ZSTR_EMPTY_ALLOC()); }
 8098|      8|#line 8099 "/src/php-src/Zend/zend_language_parser.c"
 8099|      8|    break;
 8100|       |
 8101|    102|  case 541:
  ------------------
  |  Branch (8101:3): [True: 102, False: 305k]
  ------------------
 8102|    102|#line 1507 "/src/php-src/Zend/zend_language_parser.y"
 8103|    102|                                                          { (yyval.ast) = (yyvsp[-1].ast); }
 8104|    102|#line 8105 "/src/php-src/Zend/zend_language_parser.c"
 8105|    102|    break;
 8106|       |
 8107|  6.03k|  case 542:
  ------------------
  |  Branch (8107:3): [True: 6.03k, False: 299k]
  ------------------
 8108|  6.03k|#line 1508 "/src/php-src/Zend/zend_language_parser.y"
 8109|  6.03k|                                        { (yyval.ast) = (yyvsp[0].ast); }
 8110|  6.03k|#line 8111 "/src/php-src/Zend/zend_language_parser.c"
 8111|  6.03k|    break;
 8112|       |
 8113|  2.58k|  case 543:
  ------------------
  |  Branch (8113:3): [True: 2.58k, False: 303k]
  ------------------
 8114|  2.58k|#line 1509 "/src/php-src/Zend/zend_language_parser.y"
 8115|  2.58k|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 8116|  2.58k|#line 8117 "/src/php-src/Zend/zend_language_parser.c"
 8117|  2.58k|    break;
 8118|       |
 8119|    311|  case 544:
  ------------------
  |  Branch (8119:3): [True: 311, False: 305k]
  ------------------
 8120|    311|#line 1510 "/src/php-src/Zend/zend_language_parser.y"
 8121|    311|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8122|    311|#line 8123 "/src/php-src/Zend/zend_language_parser.c"
 8123|    311|    break;
 8124|       |
 8125|  2.49k|  case 545:
  ------------------
  |  Branch (8125:3): [True: 2.49k, False: 303k]
  ------------------
 8126|  2.49k|#line 1514 "/src/php-src/Zend/zend_language_parser.y"
 8127|  2.49k|                                { (yyval.ast) = zend_ast_create(ZEND_AST_CONST, (yyvsp[0].ast)); }
  ------------------
  |  |  316|  2.49k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  2.49k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  2.49k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8128|  2.49k|#line 8129 "/src/php-src/Zend/zend_language_parser.c"
 8129|  2.49k|    break;
 8130|       |
 8131|     12|  case 546:
  ------------------
  |  Branch (8131:3): [True: 12, False: 305k]
  ------------------
 8132|     12|#line 1515 "/src/php-src/Zend/zend_language_parser.y"
 8133|     12|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_LINE); }
  ------------------
  |  |  318|     12|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     12|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     12|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8134|     12|#line 8135 "/src/php-src/Zend/zend_language_parser.c"
 8135|     12|    break;
 8136|       |
 8137|     33|  case 547:
  ------------------
  |  Branch (8137:3): [True: 33, False: 305k]
  ------------------
 8138|     33|#line 1516 "/src/php-src/Zend/zend_language_parser.y"
 8139|     33|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_FILE); }
  ------------------
  |  |  318|     33|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     33|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     33|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8140|     33|#line 8141 "/src/php-src/Zend/zend_language_parser.c"
 8141|     33|    break;
 8142|       |
 8143|     40|  case 548:
  ------------------
  |  Branch (8143:3): [True: 40, False: 305k]
  ------------------
 8144|     40|#line 1517 "/src/php-src/Zend/zend_language_parser.y"
 8145|     40|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_DIR); }
  ------------------
  |  |  318|     40|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     40|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     40|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8146|     40|#line 8147 "/src/php-src/Zend/zend_language_parser.c"
 8147|     40|    break;
 8148|       |
 8149|      1|  case 549:
  ------------------
  |  Branch (8149:3): [True: 1, False: 305k]
  ------------------
 8150|      1|#line 1518 "/src/php-src/Zend/zend_language_parser.y"
 8151|      1|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_TRAIT_C); }
  ------------------
  |  |  318|      1|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8152|      1|#line 8153 "/src/php-src/Zend/zend_language_parser.c"
 8153|      1|    break;
 8154|       |
 8155|     18|  case 550:
  ------------------
  |  Branch (8155:3): [True: 18, False: 305k]
  ------------------
 8156|     18|#line 1519 "/src/php-src/Zend/zend_language_parser.y"
 8157|     18|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_METHOD_C); }
  ------------------
  |  |  318|     18|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     18|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     18|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8158|     18|#line 8159 "/src/php-src/Zend/zend_language_parser.c"
 8159|     18|    break;
 8160|       |
 8161|      9|  case 551:
  ------------------
  |  Branch (8161:3): [True: 9, False: 305k]
  ------------------
 8162|      9|#line 1520 "/src/php-src/Zend/zend_language_parser.y"
 8163|      9|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_FUNC_C); }
  ------------------
  |  |  318|      9|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      9|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      9|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8164|      9|#line 8165 "/src/php-src/Zend/zend_language_parser.c"
 8165|      9|    break;
 8166|       |
 8167|      8|  case 552:
  ------------------
  |  Branch (8167:3): [True: 8, False: 305k]
  ------------------
 8168|      8|#line 1521 "/src/php-src/Zend/zend_language_parser.y"
 8169|      8|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_PROPERTY_C); }
  ------------------
  |  |  318|      8|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      8|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      8|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8170|      8|#line 8171 "/src/php-src/Zend/zend_language_parser.c"
 8171|      8|    break;
 8172|       |
 8173|     21|  case 553:
  ------------------
  |  Branch (8173:3): [True: 21, False: 305k]
  ------------------
 8174|     21|#line 1522 "/src/php-src/Zend/zend_language_parser.y"
 8175|     21|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_NS_C); }
  ------------------
  |  |  318|     21|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     21|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     21|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8176|     21|#line 8177 "/src/php-src/Zend/zend_language_parser.c"
 8177|     21|    break;
 8178|       |
 8179|      9|  case 554:
  ------------------
  |  Branch (8179:3): [True: 9, False: 305k]
  ------------------
 8180|      9|#line 1523 "/src/php-src/Zend/zend_language_parser.y"
 8181|      9|                                { (yyval.ast) = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_CLASS_C); }
  ------------------
  |  |  318|      9|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      9|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      9|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8182|      9|#line 8183 "/src/php-src/Zend/zend_language_parser.c"
 8183|      9|    break;
 8184|       |
 8185|    300|  case 555:
  ------------------
  |  Branch (8185:3): [True: 300, False: 305k]
  ------------------
 8186|    300|#line 1528 "/src/php-src/Zend/zend_language_parser.y"
 8187|    300|                        { (yyval.ast) = zend_ast_create_class_const_or_name((yyvsp[-2].ast), (yyvsp[0].ast)); }
 8188|    300|#line 8189 "/src/php-src/Zend/zend_language_parser.c"
 8189|    300|    break;
 8190|       |
 8191|     51|  case 556:
  ------------------
  |  Branch (8191:3): [True: 51, False: 305k]
  ------------------
 8192|     51|#line 1530 "/src/php-src/Zend/zend_language_parser.y"
 8193|     51|                        { (yyval.ast) = zend_ast_create_class_const_or_name((yyvsp[-2].ast), (yyvsp[0].ast)); }
 8194|     51|#line 8195 "/src/php-src/Zend/zend_language_parser.c"
 8195|     51|    break;
 8196|       |
 8197|      6|  case 557:
  ------------------
  |  Branch (8197:3): [True: 6, False: 305k]
  ------------------
 8198|      6|#line 1532 "/src/php-src/Zend/zend_language_parser.y"
 8199|      6|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CLASS_CONST, (yyvsp[-4].ast), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|      6|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8200|      6|#line 8201 "/src/php-src/Zend/zend_language_parser.c"
 8201|      6|    break;
 8202|       |
 8203|      3|  case 558:
  ------------------
  |  Branch (8203:3): [True: 3, False: 305k]
  ------------------
 8204|      3|#line 1534 "/src/php-src/Zend/zend_language_parser.y"
 8205|      3|                        { (yyval.ast) = zend_ast_create(ZEND_AST_CLASS_CONST, (yyvsp[-4].ast), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|      3|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      3|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      3|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8206|      3|#line 8207 "/src/php-src/Zend/zend_language_parser.c"
 8207|      3|    break;
 8208|       |
 8209|    170|  case 559:
  ------------------
  |  Branch (8209:3): [True: 170, False: 305k]
  ------------------
 8210|    170|#line 1538 "/src/php-src/Zend/zend_language_parser.y"
 8211|    170|                        { (yyval.ast) = NULL; }
 8212|    170|#line 8213 "/src/php-src/Zend/zend_language_parser.c"
 8213|    170|    break;
 8214|       |
 8215|  1.15k|  case 560:
  ------------------
  |  Branch (8215:3): [True: 1.15k, False: 304k]
  ------------------
 8216|  1.15k|#line 1539 "/src/php-src/Zend/zend_language_parser.y"
 8217|  1.15k|                                { (yyval.ast) = (yyvsp[0].ast); }
 8218|  1.15k|#line 8219 "/src/php-src/Zend/zend_language_parser.c"
 8219|  1.15k|    break;
 8220|       |
 8221|    124|  case 561:
  ------------------
  |  Branch (8221:3): [True: 124, False: 305k]
  ------------------
 8222|    124|#line 1543 "/src/php-src/Zend/zend_language_parser.y"
 8223|    124|                                      { (yyval.ast) = (yyvsp[0].ast); }
 8224|    124|#line 8225 "/src/php-src/Zend/zend_language_parser.c"
 8225|    124|    break;
 8226|       |
 8227|  2.19k|  case 562:
  ------------------
  |  Branch (8227:3): [True: 2.19k, False: 303k]
  ------------------
 8228|  2.19k|#line 1547 "/src/php-src/Zend/zend_language_parser.y"
 8229|  2.19k|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 8230|  2.19k|#line 8231 "/src/php-src/Zend/zend_language_parser.c"
 8231|  2.19k|    break;
 8232|       |
 8233|     85|  case 563:
  ------------------
  |  Branch (8233:3): [True: 85, False: 305k]
  ------------------
 8234|     85|#line 1548 "/src/php-src/Zend/zend_language_parser.y"
 8235|     85|                             {
 8236|     85|			(yyval.ast) = (yyvsp[-1].ast);
 8237|     85|			if ((yyval.ast)->kind == ZEND_AST_STATIC_PROP) (yyval.ast)->attr = ZEND_PARENTHESIZED_STATIC_PROP;
  ------------------
  |  | 1217|      0|#define ZEND_PARENTHESIZED_STATIC_PROP 1
  ------------------
  |  Branch (8237:8): [True: 0, False: 85]
  ------------------
 8238|     85|		}
 8239|     85|#line 8240 "/src/php-src/Zend/zend_language_parser.c"
 8240|     85|    break;
 8241|       |
 8242|     64|  case 564:
  ------------------
  |  Branch (8242:3): [True: 64, False: 305k]
  ------------------
 8243|     64|#line 1552 "/src/php-src/Zend/zend_language_parser.y"
 8244|     64|                                        { (yyval.ast) = (yyvsp[0].ast); }
 8245|     64|#line 8246 "/src/php-src/Zend/zend_language_parser.c"
 8246|     64|    break;
 8247|       |
 8248|     49|  case 565:
  ------------------
  |  Branch (8248:3): [True: 49, False: 305k]
  ------------------
 8249|     49|#line 1553 "/src/php-src/Zend/zend_language_parser.y"
 8250|     49|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8251|     49|#line 8252 "/src/php-src/Zend/zend_language_parser.c"
 8252|     49|    break;
 8253|       |
 8254|      4|  case 566:
  ------------------
  |  Branch (8254:3): [True: 4, False: 305k]
  ------------------
 8255|      4|#line 1554 "/src/php-src/Zend/zend_language_parser.y"
 8256|      4|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8257|      4|#line 8258 "/src/php-src/Zend/zend_language_parser.c"
 8258|      4|    break;
 8259|       |
 8260|  2.26k|  case 567:
  ------------------
  |  Branch (8260:3): [True: 2.26k, False: 303k]
  ------------------
 8261|  2.26k|#line 1558 "/src/php-src/Zend/zend_language_parser.y"
 8262|  2.26k|                                        { (yyval.ast) = (yyvsp[0].ast); }
 8263|  2.26k|#line 8264 "/src/php-src/Zend/zend_language_parser.c"
 8264|  2.26k|    break;
 8265|       |
 8266|     67|  case 568:
  ------------------
  |  Branch (8266:3): [True: 67, False: 305k]
  ------------------
 8267|     67|#line 1559 "/src/php-src/Zend/zend_language_parser.y"
 8268|     67|                                                        { (yyval.ast) = (yyvsp[0].ast); }
 8269|     67|#line 8270 "/src/php-src/Zend/zend_language_parser.c"
 8270|     67|    break;
 8271|       |
 8272|    179|  case 569:
  ------------------
  |  Branch (8272:3): [True: 179, False: 305k]
  ------------------
 8273|    179|#line 1563 "/src/php-src/Zend/zend_language_parser.y"
 8274|    179|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8275|    179|#line 8276 "/src/php-src/Zend/zend_language_parser.c"
 8276|    179|    break;
 8277|       |
 8278|     45|  case 570:
  ------------------
  |  Branch (8278:3): [True: 45, False: 305k]
  ------------------
 8279|     45|#line 1564 "/src/php-src/Zend/zend_language_parser.y"
 8280|     45|                                                { (yyval.ast) = (yyvsp[-1].ast); }
 8281|     45|#line 8282 "/src/php-src/Zend/zend_language_parser.c"
 8282|     45|    break;
 8283|       |
 8284|      7|  case 571:
  ------------------
  |  Branch (8284:3): [True: 7, False: 305k]
  ------------------
 8285|      7|#line 1565 "/src/php-src/Zend/zend_language_parser.y"
 8286|      7|                                        { (yyval.ast) = (yyvsp[0].ast); }
 8287|      7|#line 8288 "/src/php-src/Zend/zend_language_parser.c"
 8288|      7|    break;
 8289|       |
 8290|      2|  case 572:
  ------------------
  |  Branch (8290:3): [True: 2, False: 305k]
  ------------------
 8291|      2|#line 1566 "/src/php-src/Zend/zend_language_parser.y"
 8292|      2|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8293|      2|#line 8294 "/src/php-src/Zend/zend_language_parser.c"
 8294|      2|    break;
 8295|       |
 8296|  9.30k|  case 573:
  ------------------
  |  Branch (8296:3): [True: 9.30k, False: 296k]
  ------------------
 8297|  9.30k|#line 1571 "/src/php-src/Zend/zend_language_parser.y"
 8298|  9.30k|                        { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|  9.30k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  9.30k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  9.30k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8299|  9.30k|#line 8300 "/src/php-src/Zend/zend_language_parser.c"
 8300|  9.30k|    break;
 8301|       |
 8302|    971|  case 574:
  ------------------
  |  Branch (8302:3): [True: 971, False: 305k]
  ------------------
 8303|    971|#line 1573 "/src/php-src/Zend/zend_language_parser.y"
 8304|    971|                        { (yyval.ast) = zend_ast_create(ZEND_AST_DIM, (yyvsp[-3].ast), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|    971|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    971|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    971|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8305|    971|#line 8306 "/src/php-src/Zend/zend_language_parser.c"
 8306|    971|    break;
 8307|       |
 8308|    574|  case 575:
  ------------------
  |  Branch (8308:3): [True: 574, False: 305k]
  ------------------
 8309|    574|#line 1575 "/src/php-src/Zend/zend_language_parser.y"
 8310|    574|                        { (yyval.ast) = zend_ast_create(ZEND_AST_METHOD_CALL, (yyvsp[-3].ast), (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    574|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    574|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    574|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8311|    574|#line 8312 "/src/php-src/Zend/zend_language_parser.c"
 8312|    574|    break;
 8313|       |
 8314|      7|  case 576:
  ------------------
  |  Branch (8314:3): [True: 7, False: 305k]
  ------------------
 8315|      7|#line 1577 "/src/php-src/Zend/zend_language_parser.y"
 8316|      7|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NULLSAFE_METHOD_CALL, (yyvsp[-3].ast), (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      7|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      7|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      7|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8317|      7|#line 8318 "/src/php-src/Zend/zend_language_parser.c"
 8318|      7|    break;
 8319|       |
 8320|  4.76k|  case 577:
  ------------------
  |  Branch (8320:3): [True: 4.76k, False: 301k]
  ------------------
 8321|  4.76k|#line 1578 "/src/php-src/Zend/zend_language_parser.y"
 8322|  4.76k|                              { (yyval.ast) = (yyvsp[0].ast); }
 8323|  4.76k|#line 8324 "/src/php-src/Zend/zend_language_parser.c"
 8324|  4.76k|    break;
 8325|       |
 8326|  15.4k|  case 578:
  ------------------
  |  Branch (8326:3): [True: 15.4k, False: 290k]
  ------------------
 8327|  15.4k|#line 1583 "/src/php-src/Zend/zend_language_parser.y"
 8328|  15.4k|                        { (yyval.ast) = (yyvsp[0].ast); }
 8329|  15.4k|#line 8330 "/src/php-src/Zend/zend_language_parser.c"
 8330|  15.4k|    break;
 8331|       |
 8332|    138|  case 579:
  ------------------
  |  Branch (8332:3): [True: 138, False: 305k]
  ------------------
 8333|    138|#line 1585 "/src/php-src/Zend/zend_language_parser.y"
 8334|    138|                        { (yyval.ast) = (yyvsp[0].ast); }
 8335|    138|#line 8336 "/src/php-src/Zend/zend_language_parser.c"
 8336|    138|    break;
 8337|       |
 8338|    648|  case 580:
  ------------------
  |  Branch (8338:3): [True: 648, False: 305k]
  ------------------
 8339|    648|#line 1587 "/src/php-src/Zend/zend_language_parser.y"
 8340|    648|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|    648|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    648|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    648|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8341|    648|#line 8342 "/src/php-src/Zend/zend_language_parser.c"
 8342|    648|    break;
 8343|       |
 8344|     72|  case 581:
  ------------------
  |  Branch (8344:3): [True: 72, False: 305k]
  ------------------
 8345|     72|#line 1589 "/src/php-src/Zend/zend_language_parser.y"
 8346|     72|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NULLSAFE_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     72|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     72|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     72|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8347|     72|#line 8348 "/src/php-src/Zend/zend_language_parser.c"
 8348|     72|    break;
 8349|       |
 8350|  9.52k|  case 582:
  ------------------
  |  Branch (8350:3): [True: 9.52k, False: 296k]
  ------------------
 8351|  9.52k|#line 1593 "/src/php-src/Zend/zend_language_parser.y"
 8352|  9.52k|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8353|  9.52k|#line 8354 "/src/php-src/Zend/zend_language_parser.c"
 8354|  9.52k|    break;
 8355|       |
 8356|     61|  case 583:
  ------------------
  |  Branch (8356:3): [True: 61, False: 305k]
  ------------------
 8357|     61|#line 1594 "/src/php-src/Zend/zend_language_parser.y"
 8358|     61|                                        { (yyval.ast) = (yyvsp[-1].ast); }
 8359|     61|#line 8360 "/src/php-src/Zend/zend_language_parser.c"
 8360|     61|    break;
 8361|       |
 8362|    776|  case 584:
  ------------------
  |  Branch (8362:3): [True: 776, False: 305k]
  ------------------
 8363|    776|#line 1595 "/src/php-src/Zend/zend_language_parser.y"
 8364|    776|                                        { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|    776|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    776|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    776|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8365|    776|#line 8366 "/src/php-src/Zend/zend_language_parser.c"
 8366|    776|    break;
 8367|       |
 8368|     99|  case 585:
  ------------------
  |  Branch (8368:3): [True: 99, False: 305k]
  ------------------
 8369|     99|#line 1600 "/src/php-src/Zend/zend_language_parser.y"
 8370|     99|                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     99|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     99|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     99|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8371|     99|#line 8372 "/src/php-src/Zend/zend_language_parser.c"
 8372|     99|    break;
 8373|       |
 8374|     39|  case 586:
  ------------------
  |  Branch (8374:3): [True: 39, False: 305k]
  ------------------
 8375|     39|#line 1602 "/src/php-src/Zend/zend_language_parser.y"
 8376|     39|                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|     39|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     39|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     39|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8377|     39|#line 8378 "/src/php-src/Zend/zend_language_parser.c"
 8378|     39|    break;
 8379|       |
 8380|     21|  case 587:
  ------------------
  |  Branch (8380:3): [True: 21, False: 305k]
  ------------------
 8381|     21|#line 1607 "/src/php-src/Zend/zend_language_parser.y"
 8382|     21|                        { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     21|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     21|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     21|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8383|     21|#line 8384 "/src/php-src/Zend/zend_language_parser.c"
 8384|     21|    break;
 8385|       |
 8386|      5|  case 588:
  ------------------
  |  Branch (8386:3): [True: 5, False: 305k]
  ------------------
 8387|      5|#line 1609 "/src/php-src/Zend/zend_language_parser.y"
 8388|      5|                        { (yyval.ast) = zend_ast_create(ZEND_AST_DIM, (yyvsp[-3].ast), (yyvsp[-1].ast)); }
  ------------------
  |  |  316|      5|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      5|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      5|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8389|      5|#line 8390 "/src/php-src/Zend/zend_language_parser.c"
 8390|      5|    break;
 8391|       |
 8392|      2|  case 589:
  ------------------
  |  Branch (8392:3): [True: 2, False: 305k]
  ------------------
 8393|      2|#line 1611 "/src/php-src/Zend/zend_language_parser.y"
 8394|      2|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      2|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      2|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      2|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8395|      2|#line 8396 "/src/php-src/Zend/zend_language_parser.c"
 8396|      2|    break;
 8397|       |
 8398|      3|  case 590:
  ------------------
  |  Branch (8398:3): [True: 3, False: 305k]
  ------------------
 8399|      3|#line 1613 "/src/php-src/Zend/zend_language_parser.y"
 8400|      3|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NULLSAFE_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      3|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      3|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      3|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8401|      3|#line 8402 "/src/php-src/Zend/zend_language_parser.c"
 8402|      3|    break;
 8403|       |
 8404|      1|  case 591:
  ------------------
  |  Branch (8404:3): [True: 1, False: 305k]
  ------------------
 8405|      1|#line 1615 "/src/php-src/Zend/zend_language_parser.y"
 8406|      1|                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8407|      1|#line 8408 "/src/php-src/Zend/zend_language_parser.c"
 8408|      1|    break;
 8409|       |
 8410|      0|  case 592:
  ------------------
  |  Branch (8410:3): [True: 0, False: 305k]
  ------------------
 8411|      0|#line 1617 "/src/php-src/Zend/zend_language_parser.y"
 8412|      0|                        { (yyval.ast) = zend_ast_create(ZEND_AST_STATIC_PROP, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      0|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8413|      0|#line 8414 "/src/php-src/Zend/zend_language_parser.c"
 8414|      0|    break;
 8415|       |
 8416|    144|  case 593:
  ------------------
  |  Branch (8416:3): [True: 144, False: 305k]
  ------------------
 8417|    144|#line 1621 "/src/php-src/Zend/zend_language_parser.y"
 8418|    144|                           { (yyval.ast) = (yyvsp[0].ast); }
 8419|    144|#line 8420 "/src/php-src/Zend/zend_language_parser.c"
 8420|    144|    break;
 8421|       |
 8422|      7|  case 594:
  ------------------
  |  Branch (8422:3): [True: 7, False: 305k]
  ------------------
 8423|      7|#line 1622 "/src/php-src/Zend/zend_language_parser.y"
 8424|      7|                                { (yyval.ast) = (yyvsp[-1].ast); }
 8425|      7|#line 8426 "/src/php-src/Zend/zend_language_parser.c"
 8426|      7|    break;
 8427|       |
 8428|     16|  case 595:
  ------------------
  |  Branch (8428:3): [True: 16, False: 305k]
  ------------------
 8429|     16|#line 1623 "/src/php-src/Zend/zend_language_parser.y"
 8430|     16|                                { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     16|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     16|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     16|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8431|     16|#line 8432 "/src/php-src/Zend/zend_language_parser.c"
 8432|     16|    break;
 8433|       |
 8434|  1.19k|  case 596:
  ------------------
  |  Branch (8434:3): [True: 1.19k, False: 304k]
  ------------------
 8435|  1.19k|#line 1627 "/src/php-src/Zend/zend_language_parser.y"
 8436|  1.19k|                         { (yyval.ast) = (yyvsp[0].ast); }
 8437|  1.19k|#line 8438 "/src/php-src/Zend/zend_language_parser.c"
 8438|  1.19k|    break;
 8439|       |
 8440|     32|  case 597:
  ------------------
  |  Branch (8440:3): [True: 32, False: 305k]
  ------------------
 8441|     32|#line 1628 "/src/php-src/Zend/zend_language_parser.y"
 8442|     32|                                { (yyval.ast) = (yyvsp[-1].ast); }
 8443|     32|#line 8444 "/src/php-src/Zend/zend_language_parser.c"
 8444|     32|    break;
 8445|       |
 8446|     80|  case 598:
  ------------------
  |  Branch (8446:3): [True: 80, False: 305k]
  ------------------
 8447|     80|#line 1629 "/src/php-src/Zend/zend_language_parser.y"
 8448|     80|                                { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     80|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     80|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     80|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8449|     80|#line 8450 "/src/php-src/Zend/zend_language_parser.c"
 8450|     80|    break;
 8451|       |
 8452|  1.17k|  case 599:
  ------------------
  |  Branch (8452:3): [True: 1.17k, False: 304k]
  ------------------
 8453|  1.17k|#line 1634 "/src/php-src/Zend/zend_language_parser.y"
 8454|  1.17k|                        { /* allow single trailing comma */ (yyval.ast) = zend_ast_list_rtrim((yyvsp[0].ast)); }
 8455|  1.17k|#line 8456 "/src/php-src/Zend/zend_language_parser.c"
 8456|  1.17k|    break;
 8457|       |
 8458|    295|  case 600:
  ------------------
  |  Branch (8458:3): [True: 295, False: 305k]
  ------------------
 8459|    295|#line 1638 "/src/php-src/Zend/zend_language_parser.y"
 8460|    295|                       { (yyval.ast) = NULL; }
 8461|    295|#line 8462 "/src/php-src/Zend/zend_language_parser.c"
 8462|    295|    break;
 8463|       |
 8464|  1.79k|  case 601:
  ------------------
  |  Branch (8464:3): [True: 1.79k, False: 304k]
  ------------------
 8465|  1.79k|#line 1639 "/src/php-src/Zend/zend_language_parser.y"
 8466|  1.79k|                            { (yyval.ast) = (yyvsp[0].ast); }
 8467|  1.79k|#line 8468 "/src/php-src/Zend/zend_language_parser.c"
 8468|  1.79k|    break;
 8469|       |
 8470|    914|  case 602:
  ------------------
  |  Branch (8470:3): [True: 914, False: 305k]
  ------------------
 8471|    914|#line 1644 "/src/php-src/Zend/zend_language_parser.y"
 8472|    914|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-2].ast), (yyvsp[0].ast)); }
 8473|    914|#line 8474 "/src/php-src/Zend/zend_language_parser.c"
 8474|    914|    break;
 8475|       |
 8476|  1.17k|  case 603:
  ------------------
  |  Branch (8476:3): [True: 1.17k, False: 304k]
  ------------------
 8477|  1.17k|#line 1646 "/src/php-src/Zend/zend_language_parser.y"
 8478|  1.17k|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_ARRAY, (yyvsp[0].ast)); }
  ------------------
  |  |  320|  1.17k|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.17k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.17k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8479|  1.17k|#line 8480 "/src/php-src/Zend/zend_language_parser.c"
 8480|  1.17k|    break;
 8481|       |
 8482|    234|  case 604:
  ------------------
  |  Branch (8482:3): [True: 234, False: 305k]
  ------------------
 8483|    234|#line 1651 "/src/php-src/Zend/zend_language_parser.y"
 8484|    234|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ARRAY_ELEM, (yyvsp[0].ast), (yyvsp[-2].ast)); }
  ------------------
  |  |  316|    234|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    234|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    234|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8485|    234|#line 8486 "/src/php-src/Zend/zend_language_parser.c"
 8486|    234|    break;
 8487|       |
 8488|  1.46k|  case 605:
  ------------------
  |  Branch (8488:3): [True: 1.46k, False: 304k]
  ------------------
 8489|  1.46k|#line 1653 "/src/php-src/Zend/zend_language_parser.y"
 8490|  1.46k|                        { (yyval.ast) = zend_ast_create(ZEND_AST_ARRAY_ELEM, (yyvsp[0].ast), NULL); }
  ------------------
  |  |  316|  1.46k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.46k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.46k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8491|  1.46k|#line 8492 "/src/php-src/Zend/zend_language_parser.c"
 8492|  1.46k|    break;
 8493|       |
 8494|     19|  case 606:
  ------------------
  |  Branch (8494:3): [True: 19, False: 305k]
  ------------------
 8495|     19|#line 1655 "/src/php-src/Zend/zend_language_parser.y"
 8496|     19|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_ARRAY_ELEM, 1, (yyvsp[0].ast), (yyvsp[-3].ast)); }
  ------------------
  |  |  318|     19|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     19|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     19|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8497|     19|#line 8498 "/src/php-src/Zend/zend_language_parser.c"
 8498|     19|    break;
 8499|       |
 8500|     34|  case 607:
  ------------------
  |  Branch (8500:3): [True: 34, False: 305k]
  ------------------
 8501|     34|#line 1657 "/src/php-src/Zend/zend_language_parser.y"
 8502|     34|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_ARRAY_ELEM, 1, (yyvsp[0].ast), NULL); }
  ------------------
  |  |  318|     34|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     34|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     34|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8503|     34|#line 8504 "/src/php-src/Zend/zend_language_parser.c"
 8504|     34|    break;
 8505|       |
 8506|     33|  case 608:
  ------------------
  |  Branch (8506:3): [True: 33, False: 305k]
  ------------------
 8507|     33|#line 1659 "/src/php-src/Zend/zend_language_parser.y"
 8508|     33|                        { (yyval.ast) = zend_ast_create(ZEND_AST_UNPACK, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     33|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     33|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     33|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8509|     33|#line 8510 "/src/php-src/Zend/zend_language_parser.c"
 8510|     33|    break;
 8511|       |
 8512|      1|  case 609:
  ------------------
  |  Branch (8512:3): [True: 1, False: 305k]
  ------------------
 8513|      1|#line 1661 "/src/php-src/Zend/zend_language_parser.y"
 8514|      1|                        { (yyvsp[-1].ast)->attr = ZEND_ARRAY_SYNTAX_LIST;
  ------------------
  |  | 1069|      1|#define ZEND_ARRAY_SYNTAX_LIST 1  /* list() */
  ------------------
 8515|      1|			  (yyval.ast) = zend_ast_create(ZEND_AST_ARRAY_ELEM, (yyvsp[-1].ast), (yyvsp[-5].ast)); }
  ------------------
  |  |  316|      1|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      1|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8516|      1|#line 8517 "/src/php-src/Zend/zend_language_parser.c"
 8517|      1|    break;
 8518|       |
 8519|     11|  case 610:
  ------------------
  |  Branch (8519:3): [True: 11, False: 305k]
  ------------------
 8520|     11|#line 1664 "/src/php-src/Zend/zend_language_parser.y"
 8521|     11|                        { (yyvsp[-1].ast)->attr = ZEND_ARRAY_SYNTAX_LIST;
  ------------------
  |  | 1069|     11|#define ZEND_ARRAY_SYNTAX_LIST 1  /* list() */
  ------------------
 8522|     11|			  (yyval.ast) = zend_ast_create(ZEND_AST_ARRAY_ELEM, (yyvsp[-1].ast), NULL); }
  ------------------
  |  |  316|     11|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     11|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     11|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8523|     11|#line 8524 "/src/php-src/Zend/zend_language_parser.c"
 8524|     11|    break;
 8525|       |
 8526|    331|  case 611:
  ------------------
  |  Branch (8526:3): [True: 331, False: 305k]
  ------------------
 8527|    331|#line 1670 "/src/php-src/Zend/zend_language_parser.y"
 8528|    331|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 8529|    331|#line 8530 "/src/php-src/Zend/zend_language_parser.c"
 8530|    331|    break;
 8531|       |
 8532|  1.07k|  case 612:
  ------------------
  |  Branch (8532:3): [True: 1.07k, False: 304k]
  ------------------
 8533|  1.07k|#line 1672 "/src/php-src/Zend/zend_language_parser.y"
 8534|  1.07k|                        { (yyval.ast) = zend_ast_list_add((yyvsp[-1].ast), (yyvsp[0].ast)); }
 8535|  1.07k|#line 8536 "/src/php-src/Zend/zend_language_parser.c"
 8536|  1.07k|    break;
 8537|       |
 8538|    299|  case 613:
  ------------------
  |  Branch (8538:3): [True: 299, False: 305k]
  ------------------
 8539|    299|#line 1674 "/src/php-src/Zend/zend_language_parser.y"
 8540|    299|                        { (yyval.ast) = zend_ast_create_list(1, ZEND_AST_ENCAPS_LIST, (yyvsp[0].ast)); }
  ------------------
  |  |  320|    299|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    299|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    299|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8541|    299|#line 8542 "/src/php-src/Zend/zend_language_parser.c"
 8542|    299|    break;
 8543|       |
 8544|    515|  case 614:
  ------------------
  |  Branch (8544:3): [True: 515, False: 305k]
  ------------------
 8545|    515|#line 1676 "/src/php-src/Zend/zend_language_parser.y"
 8546|    515|                        { (yyval.ast) = zend_ast_create_list(2, ZEND_AST_ENCAPS_LIST, (yyvsp[-1].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  320|    515|	ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|    515|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|    515|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8547|    515|#line 8548 "/src/php-src/Zend/zend_language_parser.c"
 8548|    515|    break;
 8549|       |
 8550|  1.04k|  case 615:
  ------------------
  |  Branch (8550:3): [True: 1.04k, False: 304k]
  ------------------
 8551|  1.04k|#line 1681 "/src/php-src/Zend/zend_language_parser.y"
 8552|  1.04k|                        { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|  1.04k|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|  1.04k|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|  1.04k|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8553|  1.04k|#line 8554 "/src/php-src/Zend/zend_language_parser.c"
 8554|  1.04k|    break;
 8555|       |
 8556|     29|  case 616:
  ------------------
  |  Branch (8556:3): [True: 29, False: 305k]
  ------------------
 8557|     29|#line 1683 "/src/php-src/Zend/zend_language_parser.y"
 8558|     29|                        { (yyval.ast) = zend_ast_create(ZEND_AST_DIM,
  ------------------
  |  |  316|     29|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     29|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     29|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8559|     29|			      zend_ast_create(ZEND_AST_VAR, (yyvsp[-3].ast)), (yyvsp[-1].ast)); }
 8560|     29|#line 8561 "/src/php-src/Zend/zend_language_parser.c"
 8561|     29|    break;
 8562|       |
 8563|     18|  case 617:
  ------------------
  |  Branch (8563:3): [True: 18, False: 305k]
  ------------------
 8564|     18|#line 1686 "/src/php-src/Zend/zend_language_parser.y"
 8565|     18|                        { (yyval.ast) = zend_ast_create(ZEND_AST_PROP,
  ------------------
  |  |  316|     18|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     18|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     18|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8566|     18|			      zend_ast_create(ZEND_AST_VAR, (yyvsp[-2].ast)), (yyvsp[0].ast)); }
 8567|     18|#line 8568 "/src/php-src/Zend/zend_language_parser.c"
 8568|     18|    break;
 8569|       |
 8570|     13|  case 618:
  ------------------
  |  Branch (8570:3): [True: 13, False: 305k]
  ------------------
 8571|     13|#line 1689 "/src/php-src/Zend/zend_language_parser.y"
 8572|     13|                        { (yyval.ast) = zend_ast_create(ZEND_AST_NULLSAFE_PROP,
  ------------------
  |  |  316|     13|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     13|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     13|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8573|     13|			      zend_ast_create(ZEND_AST_VAR, (yyvsp[-2].ast)), (yyvsp[0].ast)); }
 8574|     13|#line 8575 "/src/php-src/Zend/zend_language_parser.c"
 8575|     13|    break;
 8576|       |
 8577|     13|  case 619:
  ------------------
  |  Branch (8577:3): [True: 13, False: 305k]
  ------------------
 8578|     13|#line 1692 "/src/php-src/Zend/zend_language_parser.y"
 8579|     13|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_VAR, ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR, (yyvsp[-1].ast)); }
  ------------------
  |  |  318|     13|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     13|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     13|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8580|     13|#line 8581 "/src/php-src/Zend/zend_language_parser.c"
 8581|     13|    break;
 8582|       |
 8583|      7|  case 620:
  ------------------
  |  Branch (8583:3): [True: 7, False: 305k]
  ------------------
 8584|      7|#line 1694 "/src/php-src/Zend/zend_language_parser.y"
 8585|      7|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_VAR, ZEND_ENCAPS_VAR_DOLLAR_CURLY, (yyvsp[-1].ast)); }
  ------------------
  |  |  318|      7|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      7|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      7|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8586|      7|#line 8587 "/src/php-src/Zend/zend_language_parser.c"
 8587|      7|    break;
 8588|       |
 8589|      0|  case 621:
  ------------------
  |  Branch (8589:3): [True: 0, False: 305k]
  ------------------
 8590|      0|#line 1696 "/src/php-src/Zend/zend_language_parser.y"
 8591|      0|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_DIM, ZEND_ENCAPS_VAR_DOLLAR_CURLY,
  ------------------
  |  |  318|      0|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8592|      0|			      zend_ast_create(ZEND_AST_VAR, (yyvsp[-4].ast)), (yyvsp[-2].ast)); }
 8593|      0|#line 8594 "/src/php-src/Zend/zend_language_parser.c"
 8594|      0|    break;
 8595|       |
 8596|     20|  case 622:
  ------------------
  |  Branch (8596:3): [True: 20, False: 305k]
  ------------------
 8597|     20|#line 1698 "/src/php-src/Zend/zend_language_parser.y"
 8598|     20|                                          { (yyval.ast) = (yyvsp[-1].ast); }
 8599|     20|#line 8600 "/src/php-src/Zend/zend_language_parser.c"
 8600|     20|    break;
 8601|       |
 8602|     16|  case 623:
  ------------------
  |  Branch (8602:3): [True: 16, False: 305k]
  ------------------
 8603|     16|#line 1702 "/src/php-src/Zend/zend_language_parser.y"
 8604|     16|                                                { (yyval.ast) = (yyvsp[0].ast); }
 8605|     16|#line 8606 "/src/php-src/Zend/zend_language_parser.c"
 8606|     16|    break;
 8607|       |
 8608|     30|  case 624:
  ------------------
  |  Branch (8608:3): [True: 30, False: 305k]
  ------------------
 8609|     30|#line 1703 "/src/php-src/Zend/zend_language_parser.y"
 8610|     30|                                        { (yyval.ast) = (yyvsp[0].ast); }
 8611|     30|#line 8612 "/src/php-src/Zend/zend_language_parser.c"
 8612|     30|    break;
 8613|       |
 8614|      7|  case 625:
  ------------------
  |  Branch (8614:3): [True: 7, False: 305k]
  ------------------
 8615|      7|#line 1704 "/src/php-src/Zend/zend_language_parser.y"
 8616|      7|                                        { (yyval.ast) = zend_negate_num_string((yyvsp[0].ast)); }
 8617|      7|#line 8618 "/src/php-src/Zend/zend_language_parser.c"
 8618|      7|    break;
 8619|       |
 8620|      6|  case 626:
  ------------------
  |  Branch (8620:3): [True: 6, False: 305k]
  ------------------
 8621|      6|#line 1705 "/src/php-src/Zend/zend_language_parser.y"
 8622|      6|                                                { (yyval.ast) = zend_ast_create(ZEND_AST_VAR, (yyvsp[0].ast)); }
  ------------------
  |  |  316|      6|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8623|      6|#line 8624 "/src/php-src/Zend/zend_language_parser.c"
 8624|      6|    break;
 8625|       |
 8626|     60|  case 627:
  ------------------
  |  Branch (8626:3): [True: 60, False: 305k]
  ------------------
 8627|     60|#line 1710 "/src/php-src/Zend/zend_language_parser.y"
 8628|     60|                                                               { (yyval.ast) = (yyvsp[-2].ast); }
 8629|     60|#line 8630 "/src/php-src/Zend/zend_language_parser.c"
 8630|     60|    break;
 8631|       |
 8632|      3|  case 628:
  ------------------
  |  Branch (8632:3): [True: 3, False: 305k]
  ------------------
 8633|      3|#line 1711 "/src/php-src/Zend/zend_language_parser.y"
 8634|      3|                                     { (yyval.ast) = zend_ast_create(ZEND_AST_EMPTY, (yyvsp[-1].ast)); }
  ------------------
  |  |  316|      3|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      3|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      3|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8635|      3|#line 8636 "/src/php-src/Zend/zend_language_parser.c"
 8636|      3|    break;
 8637|       |
 8638|     24|  case 629:
  ------------------
  |  Branch (8638:3): [True: 24, False: 305k]
  ------------------
 8639|     24|#line 1713 "/src/php-src/Zend/zend_language_parser.y"
 8640|     24|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_INCLUDE, (yyvsp[0].ast)); }
  ------------------
  |  |  318|     24|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     24|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     24|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8641|     24|#line 8642 "/src/php-src/Zend/zend_language_parser.c"
 8642|     24|    break;
 8643|       |
 8644|      0|  case 630:
  ------------------
  |  Branch (8644:3): [True: 0, False: 305k]
  ------------------
 8645|      0|#line 1715 "/src/php-src/Zend/zend_language_parser.y"
 8646|      0|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_INCLUDE_ONCE, (yyvsp[0].ast)); }
  ------------------
  |  |  318|      0|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|      0|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8647|      0|#line 8648 "/src/php-src/Zend/zend_language_parser.c"
 8648|      0|    break;
 8649|       |
 8650|     40|  case 631:
  ------------------
  |  Branch (8650:3): [True: 40, False: 305k]
  ------------------
 8651|     40|#line 1717 "/src/php-src/Zend/zend_language_parser.y"
 8652|     40|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_EVAL, (yyvsp[-1].ast)); }
  ------------------
  |  |  318|     40|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     40|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     40|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8653|     40|#line 8654 "/src/php-src/Zend/zend_language_parser.c"
 8654|     40|    break;
 8655|       |
 8656|     53|  case 632:
  ------------------
  |  Branch (8656:3): [True: 53, False: 305k]
  ------------------
 8657|     53|#line 1719 "/src/php-src/Zend/zend_language_parser.y"
 8658|     53|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_REQUIRE, (yyvsp[0].ast)); }
  ------------------
  |  |  318|     53|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     53|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     53|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8659|     53|#line 8660 "/src/php-src/Zend/zend_language_parser.c"
 8660|     53|    break;
 8661|       |
 8662|     15|  case 633:
  ------------------
  |  Branch (8662:3): [True: 15, False: 305k]
  ------------------
 8663|     15|#line 1721 "/src/php-src/Zend/zend_language_parser.y"
 8664|     15|                        { (yyval.ast) = zend_ast_create_ex(ZEND_AST_INCLUDE_OR_EVAL, ZEND_REQUIRE_ONCE, (yyvsp[0].ast)); }
  ------------------
  |  |  318|     15|	ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  260|     15|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     15|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8665|     15|#line 8666 "/src/php-src/Zend/zend_language_parser.c"
 8666|     15|    break;
 8667|       |
 8668|     61|  case 634:
  ------------------
  |  Branch (8668:3): [True: 61, False: 305k]
  ------------------
 8669|     61|#line 1725 "/src/php-src/Zend/zend_language_parser.y"
 8670|     61|                               { (yyval.ast) = (yyvsp[0].ast); }
 8671|     61|#line 8672 "/src/php-src/Zend/zend_language_parser.c"
 8672|     61|    break;
 8673|       |
 8674|      6|  case 635:
  ------------------
  |  Branch (8674:3): [True: 6, False: 305k]
  ------------------
 8675|      6|#line 1727 "/src/php-src/Zend/zend_language_parser.y"
 8676|      6|                        { (yyval.ast) = zend_ast_create(ZEND_AST_AND, (yyvsp[-2].ast), (yyvsp[0].ast)); }
  ------------------
  |  |  316|      6|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|      6|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      6|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8677|      6|#line 8678 "/src/php-src/Zend/zend_language_parser.c"
 8678|      6|    break;
 8679|       |
 8680|     67|  case 636:
  ------------------
  |  Branch (8680:3): [True: 67, False: 305k]
  ------------------
 8681|     67|#line 1731 "/src/php-src/Zend/zend_language_parser.y"
 8682|     67|                     { (yyval.ast) = zend_ast_create(ZEND_AST_ISSET, (yyvsp[0].ast)); }
  ------------------
  |  |  316|     67|	ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  256|     67|	ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|     67|# define ZEND_EXPAND_VA(code) code
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8683|     67|#line 8684 "/src/php-src/Zend/zend_language_parser.c"
 8684|     67|    break;
 8685|       |
 8686|       |
 8687|      0|#line 8688 "/src/php-src/Zend/zend_language_parser.c"
 8688|       |
 8689|  7.18k|      default: break;
  ------------------
  |  Branch (8689:7): [True: 7.18k, False: 298k]
  ------------------
 8690|   305k|    }
 8691|       |  /* User semantic actions sometimes alter yychar, and that requires
 8692|       |     that yytoken be updated with the new translation.  We take the
 8693|       |     approach of translating immediately before every use of yytoken.
 8694|       |     One alternative is translating here after every semantic action,
 8695|       |     but that translation would be missed if the semantic action invokes
 8696|       |     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
 8697|       |     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
 8698|       |     incorrect destructor might then be invoked immediately.  In the
 8699|       |     case of YYERROR or YYBACKUP, subsequent parser actions might lead
 8700|       |     to an incorrect destructor call or verbose syntax error message
 8701|       |     before the lookahead is translated.  */
 8702|   305k|  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 8703|       |
 8704|   305k|  YYPOPSTACK (yylen);
  ------------------
  |  | 5078|   305k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 8705|   305k|  yylen = 0;
 8706|   305k|  YY_STACK_PRINT (yyss, yyssp);
 8707|       |
 8708|   305k|  *++yyvsp = yyval;
 8709|       |
 8710|       |  /* Now 'shift' the result of the reduction.  Determine what state
 8711|       |     that goes to, based on the state we popped back to and the rule
 8712|       |     number reduced by.  */
 8713|   305k|  {
 8714|   305k|    const int yylhs = yyr1[yyn] - YYNTOKENS;
  ------------------
  |  |  635|   305k|#define YYNTOKENS  185
  ------------------
 8715|   305k|    const int yyi = yypgoto[yylhs] + *yyssp;
 8716|   305k|    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
  ------------------
  |  |  632|   482k|#define YYLAST   10430
  ------------------
  |  Branch (8716:16): [True: 176k, False: 129k]
  |  Branch (8716:28): [True: 176k, False: 0]
  |  Branch (8716:45): [True: 100k, False: 75.7k]
  ------------------
 8717|   305k|               ? yytable[yyi]
 8718|   305k|               : yydefgoto[yylhs]);
 8719|   305k|  }
 8720|       |
 8721|   305k|  goto yynewstate;
 8722|       |
 8723|       |
 8724|       |/*--------------------------------------.
 8725|       || yyerrlab -- here on detecting error.  |
 8726|       |`--------------------------------------*/
 8727|  2.09k|yyerrlab:
 8728|       |  /* Make sure we have latest lookahead translation.  See comments at
 8729|       |     user semantic actions for why this is necessary.  */
 8730|  2.09k|  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  | 3586|  2.09k|#define YYEMPTY         (-2)
  ------------------
                yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  | 3586|      0|#define YYEMPTY         (-2)
  ------------------
                yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  |  650|  4.19k|  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  644|  2.09k|#define YYMAXUTOK   412
  |  |  ------------------
  |  |                 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  643|      0|#define YYUNDEFTOK  2
  |  |  ------------------
  |  |  |  Branch (650:4): [True: 2.09k, False: 0]
  |  |  |  Branch (650:18): [True: 2.09k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (8730:13): [True: 0, False: 2.09k]
  ------------------
 8731|       |
 8732|       |  /* If not already recovering from an error, report this error.  */
 8733|  2.09k|  if (!yyerrstatus)
  ------------------
  |  Branch (8733:7): [True: 2.09k, False: 0]
  ------------------
 8734|  2.09k|    {
 8735|  2.09k|      ++yynerrs;
  ------------------
  |  |   93|  2.09k|#define yynerrs         zendnerrs
  ------------------
 8736|       |#if ! YYERROR_VERBOSE
 8737|       |      yyerror (YY_("syntax error"));
 8738|       |#else
 8739|  2.09k|# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
 8740|  2.09k|                                        yyssp, yytoken)
 8741|  2.09k|      {
 8742|  2.09k|        char const *yymsgp = YY_("syntax error");
  ------------------
  |  |  440|  2.09k|#  define YY_(Msgid) Msgid
  ------------------
 8743|  2.09k|        int yysyntax_error_status;
 8744|  2.09k|        yysyntax_error_status = YYSYNTAX_ERROR;
  ------------------
  |  | 8739|  2.09k|# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
  |  | 8740|  2.09k|                                        yyssp, yytoken)
  ------------------
 8745|  2.09k|        if (yysyntax_error_status == 0)
  ------------------
  |  Branch (8745:13): [True: 2.09k, False: 0]
  ------------------
 8746|  2.09k|          yymsgp = yymsg;
 8747|      0|        else if (yysyntax_error_status == 1)
  ------------------
  |  Branch (8747:18): [True: 0, False: 0]
  ------------------
 8748|      0|          {
 8749|      0|            if (yymsg != yymsgbuf)
  ------------------
  |  Branch (8749:17): [True: 0, False: 0]
  ------------------
 8750|      0|              YYSTACK_FREE (yymsg);
  ------------------
  |  |  541|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  560|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 8751|      0|            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
  ------------------
  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 8752|      0|            if (!yymsg)
  ------------------
  |  Branch (8752:17): [True: 0, False: 0]
  ------------------
 8753|      0|              {
 8754|      0|                yymsg = yymsgbuf;
 8755|      0|                yymsg_alloc = sizeof yymsgbuf;
 8756|      0|                yysyntax_error_status = 2;
 8757|      0|              }
 8758|      0|            else
 8759|      0|              {
 8760|      0|                yysyntax_error_status = YYSYNTAX_ERROR;
  ------------------
  |  | 8739|      0|# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
  |  | 8740|      0|                                        yyssp, yytoken)
  ------------------
 8761|      0|                yymsgp = yymsg;
 8762|      0|              }
 8763|      0|          }
 8764|  2.09k|        yyerror (yymsgp);
  ------------------
  |  |   91|  2.09k|#define yyerror         zenderror
  ------------------
 8765|  2.09k|        if (yysyntax_error_status == 2)
  ------------------
  |  Branch (8765:13): [True: 0, False: 2.09k]
  ------------------
 8766|      0|          goto yyexhaustedlab;
 8767|  2.09k|      }
 8768|  2.09k|# undef YYSYNTAX_ERROR
 8769|  2.09k|#endif
 8770|  2.09k|    }
 8771|       |
 8772|       |
 8773|       |
 8774|  2.09k|  if (yyerrstatus == 3)
  ------------------
  |  Branch (8774:7): [True: 0, False: 2.09k]
  ------------------
 8775|      0|    {
 8776|       |      /* If just tried and failed to reuse lookahead token after an
 8777|       |         error, discard it.  */
 8778|       |
 8779|      0|      if (yychar <= YYEOF)
  ------------------
  |  | 3587|      0|#define YYEOF           0
  ------------------
  |  Branch (8779:11): [True: 0, False: 0]
  ------------------
 8780|      0|        {
 8781|       |          /* Return failure if at end of input.  */
 8782|      0|          if (yychar == YYEOF)
  ------------------
  |  | 3587|      0|#define YYEOF           0
  ------------------
  |  Branch (8782:15): [True: 0, False: 0]
  ------------------
 8783|      0|            YYABORT;
  ------------------
  |  | 3590|      0|#define YYABORT         goto yyabortlab
  ------------------
 8784|      0|        }
 8785|      0|      else
 8786|      0|        {
 8787|      0|          yydestruct ("Error: discarding",
 8788|      0|                      yytoken, &yylval);
 8789|      0|          yychar = YYEMPTY;
  ------------------
  |  | 3586|      0|#define YYEMPTY         (-2)
  ------------------
 8790|      0|        }
 8791|      0|    }
 8792|       |
 8793|       |  /* Else will try to reuse lookahead token after shifting the error
 8794|       |     token.  */
 8795|  2.09k|  goto yyerrlab1;
 8796|       |
 8797|       |
 8798|       |/*---------------------------------------------------.
 8799|       || yyerrorlab -- error raised explicitly by YYERROR.  |
 8800|       |`---------------------------------------------------*/
 8801|  2.09k|yyerrorlab:
 8802|       |  /* Pacify compilers when the user code never invokes YYERROR and the
 8803|       |     label yyerrorlab therefore never appears in user code.  */
 8804|     28|  if (0)
  ------------------
  |  Branch (8804:7): [Folded, False: 28]
  ------------------
 8805|      0|    YYERROR;
  ------------------
  |  | 3591|      0|#define YYERROR         goto yyerrorlab
  ------------------
 8806|       |
 8807|       |  /* Do not reclaim the symbols of the rule whose action triggered
 8808|       |     this YYERROR.  */
 8809|     28|  YYPOPSTACK (yylen);
  ------------------
  |  | 5078|     28|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 8810|     28|  yylen = 0;
 8811|     28|  YY_STACK_PRINT (yyss, yyssp);
 8812|     28|  yystate = *yyssp;
 8813|     28|  goto yyerrlab1;
 8814|       |
 8815|       |
 8816|       |/*-------------------------------------------------------------.
 8817|       || yyerrlab1 -- common code for both syntax error and YYERROR.  |
 8818|       |`-------------------------------------------------------------*/
 8819|  2.12k|yyerrlab1:
 8820|  2.12k|  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 8821|       |
 8822|  2.12k|  for (;;)
 8823|  19.0k|    {
 8824|  19.0k|      yyn = yypact[yystate];
 8825|  19.0k|      if (!yypact_value_is_default (yyn))
  ------------------
  |  |  909|  19.0k|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  |  906|  19.0k|#define YYPACT_NINF (-1071)
  |  |  ------------------
  ------------------
  |  Branch (8825:11): [True: 16.3k, False: 2.73k]
  ------------------
 8826|  16.3k|        {
 8827|  16.3k|          yyn += YYTERROR;
  ------------------
  |  | 3614|  16.3k|#define YYTERROR        1
  ------------------
 8828|  16.3k|          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
  ------------------
  |  |  632|  31.0k|#define YYLAST   10430
  ------------------
                        if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
  ------------------
  |  | 3614|  14.7k|#define YYTERROR        1
  ------------------
  |  Branch (8828:15): [True: 14.7k, False: 1.64k]
  |  Branch (8828:27): [True: 14.7k, False: 0]
  |  Branch (8828:44): [True: 0, False: 14.7k]
  ------------------
 8829|      0|            {
 8830|      0|              yyn = yytable[yyn];
 8831|      0|              if (0 < yyn)
  ------------------
  |  Branch (8831:19): [True: 0, False: 0]
  ------------------
 8832|      0|                break;
 8833|      0|            }
 8834|  16.3k|        }
 8835|       |
 8836|       |      /* Pop the current state because it cannot handle the error token.  */
 8837|  19.0k|      if (yyssp == yyss)
  ------------------
  |  Branch (8837:11): [True: 2.12k, False: 16.9k]
  ------------------
 8838|  2.12k|        YYABORT;
  ------------------
  |  | 3590|  2.12k|#define YYABORT         goto yyabortlab
  ------------------
 8839|       |
 8840|       |
 8841|  16.9k|      yydestruct ("Error: popping",
 8842|  16.9k|                  yystos[yystate], yyvsp);
 8843|  16.9k|      YYPOPSTACK (1);
  ------------------
  |  | 5078|  16.9k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 8844|  16.9k|      yystate = *yyssp;
 8845|  16.9k|      YY_STACK_PRINT (yyss, yyssp);
 8846|  16.9k|    }
 8847|       |
 8848|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 8849|      0|  *++yyvsp = yylval;
 8850|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 8851|       |
 8852|       |
 8853|       |  /* Shift the error token.  */
 8854|      0|  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 8855|       |
 8856|      0|  yystate = yyn;
 8857|      0|  goto yynewstate;
 8858|       |
 8859|       |
 8860|       |/*-------------------------------------.
 8861|       || yyacceptlab -- YYACCEPT comes here.  |
 8862|       |`-------------------------------------*/
 8863|  4.94k|yyacceptlab:
 8864|  4.94k|  yyresult = 0;
 8865|  4.94k|  goto yyreturn;
 8866|       |
 8867|       |
 8868|       |/*-----------------------------------.
 8869|       || yyabortlab -- YYABORT comes here.  |
 8870|       |`-----------------------------------*/
 8871|  2.12k|yyabortlab:
 8872|  2.12k|  yyresult = 1;
 8873|  2.12k|  goto yyreturn;
 8874|       |
 8875|       |
 8876|      0|#if !defined yyoverflow || YYERROR_VERBOSE
 8877|       |/*-------------------------------------------------.
 8878|       || yyexhaustedlab -- memory exhaustion comes here.  |
 8879|       |`-------------------------------------------------*/
 8880|      0|yyexhaustedlab:
 8881|      0|  yyerror (YY_("memory exhausted"));
  ------------------
  |  |   91|      0|#define yyerror         zenderror
  ------------------
                yyerror (YY_("memory exhausted"));
  ------------------
  |  |  440|      0|#  define YY_(Msgid) Msgid
  ------------------
 8882|      0|  yyresult = 2;
 8883|       |  /* Fall through.  */
 8884|      0|#endif
 8885|       |
 8886|       |
 8887|       |/*-----------------------------------------------------.
 8888|       || yyreturn -- parsing is finished, return the result.  |
 8889|       |`-----------------------------------------------------*/
 8890|  7.07k|yyreturn:
 8891|  7.07k|  if (yychar != YYEMPTY)
  ------------------
  |  | 3586|  7.07k|#define YYEMPTY         (-2)
  ------------------
  |  Branch (8891:7): [True: 2.11k, False: 4.95k]
  ------------------
 8892|  2.11k|    {
 8893|       |      /* Make sure we have latest lookahead translation.  See comments at
 8894|       |         user semantic actions for why this is necessary.  */
 8895|  2.11k|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  |  650|  2.11k|  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  644|  2.11k|#define YYMAXUTOK   412
  |  |  ------------------
  |  |                 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  |  |  ------------------
  |  |  |  |  643|      0|#define YYUNDEFTOK  2
  |  |  ------------------
  |  |  |  Branch (650:4): [True: 2.11k, False: 0]
  |  |  |  Branch (650:18): [True: 2.11k, False: 0]
  |  |  ------------------
  ------------------
 8896|  2.11k|      yydestruct ("Cleanup: discarding lookahead",
 8897|  2.11k|                  yytoken, &yylval);
 8898|  2.11k|    }
 8899|       |  /* Do not reclaim the symbols of the rule whose action triggered
 8900|       |     this YYABORT or YYACCEPT.  */
 8901|  7.07k|  YYPOPSTACK (yylen);
  ------------------
  |  | 5078|  7.07k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 8902|  7.07k|  YY_STACK_PRINT (yyss, yyssp);
 8903|  16.9k|  while (yyssp != yyss)
  ------------------
  |  Branch (8903:10): [True: 9.90k, False: 7.07k]
  ------------------
 8904|  9.90k|    {
 8905|  9.90k|      yydestruct ("Cleanup: popping",
 8906|  9.90k|                  yystos[+*yyssp], yyvsp);
 8907|  9.90k|      YYPOPSTACK (1);
  ------------------
  |  | 5078|  9.90k|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
 8908|  9.90k|    }
 8909|  7.07k|#ifndef yyoverflow
 8910|  7.07k|  if (yyss != yyssa)
  ------------------
  |  Branch (8910:7): [True: 0, False: 7.07k]
  ------------------
 8911|      0|    YYSTACK_FREE (yyss);
  ------------------
  |  |  541|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  560|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 8912|  7.07k|#endif
 8913|  7.07k|#if YYERROR_VERBOSE
 8914|  7.07k|  if (yymsg != yymsgbuf)
  ------------------
  |  Branch (8914:7): [True: 0, False: 7.07k]
  ------------------
 8915|      0|    YYSTACK_FREE (yymsg);
  ------------------
  |  |  541|      0|#  define YYSTACK_FREE YYFREE
  |  |  ------------------
  |  |  |  |  560|      0|#   define YYFREE free
  |  |  ------------------
  ------------------
 8916|  7.07k|#endif
 8917|  7.07k|  return yyresult;
 8918|      0|}
zend_language_parser.c:yysyntax_error:
 3868|  2.09k|{
 3869|  2.09k|  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
 3870|       |  /* Internationalized format string. */
 3871|  2.09k|  const char *yyformat = YY_NULLPTR;
  ------------------
  |  |  113|  2.09k|#   define YY_NULLPTR ((void*)0)
  ------------------
 3872|       |  /* Arguments of yyformat: reported tokens (one for the "unexpected",
 3873|       |     one per "expected"). */
 3874|  2.09k|  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 3875|       |  /* Actual size of YYARG. */
 3876|  2.09k|  int yycount = 0;
 3877|       |  /* Cumulated lengths of YYARG.  */
 3878|  2.09k|  YYPTRDIFF_T yysize = 0;
  ------------------
  |  |  391|  2.09k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 3879|       |
 3880|       |  /* There are many possibilities here to consider:
 3881|       |     - If this state is a consistent state with a default action, then
 3882|       |       the only way this function was invoked is if the default action
 3883|       |       is an error action.  In that case, don't check for expected
 3884|       |       tokens because there are none.
 3885|       |     - The only way there can be no lookahead present (in yychar) is if
 3886|       |       this state is a consistent state with a default action.  Thus,
 3887|       |       detecting the absence of a lookahead is sufficient to determine
 3888|       |       that there is no unexpected or expected token to report.  In that
 3889|       |       case, just report a simple "syntax error".
 3890|       |     - Don't assume there isn't a lookahead just because this state is a
 3891|       |       consistent state with a default action.  There might have been a
 3892|       |       previous inconsistent state, consistent state with a non-default
 3893|       |       action, or user semantic action that manipulated yychar.
 3894|       |     - Of course, the expected token list depends on states to have
 3895|       |       correct lookahead information, and it depends on the parser not
 3896|       |       to perform extra reductions after fetching a lookahead from the
 3897|       |       scanner and before detecting a syntax error.  Thus, state merging
 3898|       |       (from LALR or IELR) and default reductions corrupt the expected
 3899|       |       token list.  However, the list is correct for canonical LR with
 3900|       |       one exception: it will still contain any token that will not be
 3901|       |       accepted due to an error action in a later state.
 3902|       |  */
 3903|  2.09k|  if (yytoken != YYEMPTY)
  ------------------
  |  | 3586|  2.09k|#define YYEMPTY         (-2)
  ------------------
  |  Branch (3903:7): [True: 2.09k, False: 0]
  ------------------
 3904|  2.09k|    {
 3905|  2.09k|      int yyn = yypact[+*yyssp];
 3906|  2.09k|      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  ------------------
  |  |  391|  2.09k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
                    YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  ------------------
  |  |   77|  2.09k|#define yytnamerr zend_yytnamerr
  ------------------
                    YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  ------------------
  |  |  113|  2.09k|#   define YY_NULLPTR ((void*)0)
  ------------------
 3907|  2.09k|      yysize = yysize0;
 3908|  2.09k|      yyarg[yycount++] = yytname[yytoken];
 3909|  2.09k|      if (!yypact_value_is_default (yyn))
  ------------------
  |  |  909|  2.09k|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  |  906|  2.09k|#define YYPACT_NINF (-1071)
  |  |  ------------------
  ------------------
  |  Branch (3909:11): [True: 2.09k, False: 0]
  ------------------
 3910|  2.09k|        {
 3911|       |          /* Start YYX at -YYN if negative to avoid negative indexes in
 3912|       |             YYCHECK.  In other words, skip the first -YYN actions for
 3913|       |             this state because they are default actions.  */
 3914|  2.09k|          int yyxbegin = yyn < 0 ? -yyn : 0;
  ------------------
  |  Branch (3914:26): [True: 90, False: 2.00k]
  ------------------
 3915|       |          /* Stay within bounds of both yycheck and yytname.  */
 3916|  2.09k|          int yychecklim = YYLAST - yyn + 1;
  ------------------
  |  |  632|  2.09k|#define YYLAST   10430
  ------------------
 3917|  2.09k|          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
  ------------------
  |  |  635|  2.09k|#define YYNTOKENS  185
  ------------------
                        int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
  ------------------
  |  |  635|  2.09k|#define YYNTOKENS  185
  ------------------
  |  Branch (3917:24): [True: 0, False: 2.09k]
  ------------------
 3918|  2.09k|          int yyx;
 3919|       |
 3920|   130k|          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
  ------------------
  |  Branch (3920:32): [True: 130k, False: 482]
  ------------------
 3921|   130k|            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
  ------------------
  |  | 3614|   139k|#define YYTERROR        1
  ------------------
  |  Branch (3921:17): [True: 8.97k, False: 121k]
  |  Branch (3921:46): [True: 8.97k, False: 0]
  ------------------
 3922|  8.97k|                && !yytable_value_is_error (yytable[yyx + yyn]))
  ------------------
  |  |  914|  8.97k|  ((Yyn) == YYTABLE_NINF)
  |  |  ------------------
  |  |  |  |  911|  8.97k|#define YYTABLE_NINF (-608)
  |  |  ------------------
  ------------------
  |  Branch (3922:20): [True: 8.96k, False: 16]
  ------------------
 3923|  8.96k|              {
 3924|  8.96k|                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
  ------------------
  |  Branch (3924:21): [True: 1.61k, False: 7.34k]
  ------------------
 3925|  1.61k|                  {
 3926|  1.61k|                    yycount = 1;
 3927|  1.61k|                    yysize = yysize0;
 3928|  1.61k|                    break;
 3929|  1.61k|                  }
 3930|  7.34k|                yyarg[yycount++] = yytname[yyx];
 3931|  7.34k|                {
 3932|  7.34k|                  YYPTRDIFF_T yysize1
  ------------------
  |  |  391|  7.34k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 3933|  7.34k|                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
  ------------------
  |  |   77|  7.34k|#define yytnamerr zend_yytnamerr
  ------------------
                                  = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
  ------------------
  |  |  113|  7.34k|#   define YY_NULLPTR ((void*)0)
  ------------------
 3934|  7.34k|                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
  ------------------
  |  |  543|  7.34k|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  419|  7.34k|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|  14.6k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:40): [True: 7.34k, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3934:23): [True: 7.34k, False: 0]
  |  Branch (3934:44): [True: 7.34k, False: 0]
  ------------------
 3935|  7.34k|                    yysize = yysize1;
 3936|      0|                  else
 3937|      0|                    return 2;
 3938|  7.34k|                }
 3939|  7.34k|              }
 3940|  2.09k|        }
 3941|  2.09k|    }
 3942|       |
 3943|  2.09k|  switch (yycount)
 3944|  2.09k|    {
 3945|      0|# define YYCASE_(N, S)                      \
 3946|      0|      case N:                               \
 3947|      0|        yyformat = S;                       \
 3948|      0|      break
 3949|      0|    default: /* Avoid compiler warnings. */
  ------------------
  |  Branch (3949:5): [True: 0, False: 2.09k]
  ------------------
 3950|      0|      YYCASE_(0, YY_("syntax error"));
  ------------------
  |  | 3946|      0|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (3946:7): [True: 0, False: 2.09k]
  |  |  ------------------
  |  | 3947|      0|        yyformat = S;                       \
  |  | 3948|      0|      break
  ------------------
 3951|  1.61k|      YYCASE_(1, YY_("syntax error, unexpected %s"));
  ------------------
  |  | 3946|  1.61k|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (3946:7): [True: 1.61k, False: 482]
  |  |  ------------------
  |  | 3947|  1.61k|        yyformat = S;                       \
  |  | 3948|  1.61k|      break
  ------------------
 3952|    309|      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
  ------------------
  |  | 3946|    309|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (3946:7): [True: 309, False: 1.78k]
  |  |  ------------------
  |  | 3947|    309|        yyformat = S;                       \
  |  | 3948|    309|      break
  ------------------
 3953|     22|      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
  ------------------
  |  | 3946|     22|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (3946:7): [True: 22, False: 2.07k]
  |  |  ------------------
  |  | 3947|     22|        yyformat = S;                       \
  |  | 3948|     22|      break
  ------------------
 3954|     66|      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
  ------------------
  |  | 3946|     66|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (3946:7): [True: 66, False: 2.03k]
  |  |  ------------------
  |  | 3947|     66|        yyformat = S;                       \
  |  | 3948|     66|      break
  ------------------
 3955|  2.09k|      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
  ------------------
  |  | 3946|     85|      case N:                               \
  |  |  ------------------
  |  |  |  Branch (3946:7): [True: 85, False: 2.01k]
  |  |  ------------------
  |  | 3947|     85|        yyformat = S;                       \
  |  | 3948|     85|      break
  ------------------
 3956|  2.09k|# undef YYCASE_
 3957|  2.09k|    }
 3958|       |
 3959|  2.09k|  {
 3960|       |    /* Don't count the "%s"s in the final size, but reserve room for
 3961|       |       the terminator.  */
 3962|  2.09k|    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
  ------------------
  |  |  391|  2.09k|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
                  YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
  ------------------
  |  | 3772|  2.09k|#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
  |  |  ------------------
  |  |  |  |  101|  2.09k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
 3963|  2.09k|    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
  ------------------
  |  |  543|  2.09k|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  419|  2.09k|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|  4.19k|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:40): [True: 2.09k, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3963:9): [True: 2.09k, False: 0]
  |  Branch (3963:30): [True: 2.09k, False: 0]
  ------------------
 3964|  2.09k|      yysize = yysize1;
 3965|      0|    else
 3966|      0|      return 2;
 3967|  2.09k|  }
 3968|       |
 3969|  2.09k|  if (*yymsg_alloc < yysize)
  ------------------
  |  Branch (3969:7): [True: 0, False: 2.09k]
  ------------------
 3970|      0|    {
 3971|      0|      *yymsg_alloc = 2 * yysize;
 3972|      0|      if (! (yysize <= *yymsg_alloc
  ------------------
  |  Branch (3972:14): [True: 0, False: 0]
  ------------------
 3973|      0|             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
  ------------------
  |  |  543|      0|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  419|      0|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:40): [True: 0, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3973:17): [True: 0, False: 0]
  ------------------
 3974|      0|        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
  ------------------
  |  |  543|      0|#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  |  |  ------------------
  |  |  |  |  419|      0|  YY_CAST (YYPTRDIFF_T,                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (101:40): [True: 0, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3975|      0|      return 1;
 3976|      0|    }
 3977|       |
 3978|       |  /* Avoid sprintf, as that infringes on the user's name space.
 3979|       |     Don't have undefined behavior even if the translation
 3980|       |     produced a string with the wrong number of "%s"s.  */
 3981|  2.09k|  {
 3982|  2.09k|    char *yyp = *yymsg;
 3983|  2.09k|    int yyi = 0;
 3984|  64.9k|    while ((*yyp = *yyformat) != '\0')
  ------------------
  |  Branch (3984:12): [True: 62.8k, False: 2.09k]
  ------------------
 3985|  62.8k|      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
  ------------------
  |  Branch (3985:11): [True: 2.98k, False: 59.8k]
  |  Branch (3985:26): [True: 2.98k, False: 0]
  |  Branch (3985:48): [True: 2.98k, False: 0]
  ------------------
 3986|  2.98k|        {
 3987|  2.98k|          yyp += yytnamerr (yyp, yyarg[yyi++]);
  ------------------
  |  |   77|  2.98k|#define yytnamerr zend_yytnamerr
  ------------------
 3988|  2.98k|          yyformat += 2;
 3989|  2.98k|        }
 3990|  59.8k|      else
 3991|  59.8k|        {
 3992|  59.8k|          ++yyp;
 3993|  59.8k|          ++yyformat;
 3994|  59.8k|        }
 3995|  2.09k|  }
 3996|  2.09k|  return 0;
 3997|  2.09k|}
zend_language_parser.c:zend_yytnamerr:
 8928|  12.4k|{
 8929|  12.4k|	const char *toktype = yystr;
 8930|  12.4k|	size_t toktype_len = strlen(toktype);
 8931|       |
 8932|       |	/* CG(parse_error) states:
 8933|       |	 * 0 => yyres = NULL, yystr is the unexpected token
 8934|       |	 * 1 => yyres = NULL, yystr is one of the expected tokens
 8935|       |	 * 2 => yyres != NULL, yystr is the unexpected token
 8936|       |	 * 3 => yyres != NULL, yystr is one of the expected tokens
 8937|       |	 */
 8938|  12.4k|	if (yyres && CG(parse_error) < 2) {
  ------------------
  |  |   35|  2.98k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (8938:6): [True: 2.98k, False: 9.44k]
  |  Branch (8938:15): [True: 2.09k, False: 891]
  ------------------
 8939|  2.09k|		CG(parse_error) = 2;
  ------------------
  |  |   35|  2.09k|# define CG(v) (compiler_globals.v)
  ------------------
 8940|  2.09k|	}
 8941|       |
 8942|  12.4k|	if (CG(parse_error) % 2 == 0) {
  ------------------
  |  |   35|  12.4k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (8942:6): [True: 4.19k, False: 8.23k]
  ------------------
 8943|       |		/* The unexpected token */
 8944|  4.19k|		char buffer[120];
 8945|  4.19k|		const unsigned char *tokcontent, *tokcontent_end;
 8946|  4.19k|		size_t tokcontent_len;
 8947|       |
 8948|  4.19k|		CG(parse_error)++;
  ------------------
  |  |   35|  4.19k|# define CG(v) (compiler_globals.v)
  ------------------
 8949|       |
 8950|  4.19k|		if (LANG_SCNG(yy_text)[0] == 0 &&
  ------------------
  |  |   55|  4.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  |  Branch (8950:7): [True: 862, False: 3.33k]
  ------------------
 8951|    862|			LANG_SCNG(yy_leng) == 1 &&
  ------------------
  |  |   55|    862|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  |  Branch (8951:4): [True: 862, False: 0]
  ------------------
 8952|    862|			strcmp(toktype, "\"end of file\"") == 0) {
  ------------------
  |  Branch (8952:4): [True: 322, False: 540]
  ------------------
 8953|    322|			if (yyres) {
  ------------------
  |  Branch (8953:8): [True: 161, False: 161]
  ------------------
 8954|    161|				yystpcpy(yyres, "end of file");
  ------------------
  |  | 3788|    161|#   define yystpcpy stpcpy
  ------------------
 8955|    161|			}
 8956|    322|			return sizeof("end of file")-1;
 8957|    322|		}
 8958|       |
 8959|       |		/* Prevent the backslash getting doubled in the output (eugh) */
 8960|  3.87k|		if (strcmp(toktype, "\"'\\\\'\"") == 0) {
  ------------------
  |  Branch (8960:7): [True: 42, False: 3.82k]
  ------------------
 8961|     42|			if (yyres) {
  ------------------
  |  Branch (8961:8): [True: 21, False: 21]
  ------------------
 8962|     21|				yystpcpy(yyres, "token \"\\\"");
  ------------------
  |  | 3788|     21|#   define yystpcpy stpcpy
  ------------------
 8963|     21|			}
 8964|     42|			return sizeof("token \"\\\"")-1;
 8965|     42|		}
 8966|       |
 8967|       |		/* We used "amp" as a dummy label to avoid a duplicate token literal warning. */
 8968|  3.82k|		if (strcmp(toktype, "\"amp\"") == 0) {
  ------------------
  |  Branch (8968:7): [True: 56, False: 3.77k]
  ------------------
 8969|     56|			if (yyres) {
  ------------------
  |  Branch (8969:8): [True: 28, False: 28]
  ------------------
 8970|     28|				yystpcpy(yyres, "token \"&\"");
  ------------------
  |  | 3788|     28|#   define yystpcpy stpcpy
  ------------------
 8971|     28|			}
 8972|     56|			return sizeof("token \"&\"")-1;
 8973|     56|		}
 8974|       |
 8975|       |		/* Avoid unreadable """ */
 8976|       |		/* "'" would theoretically be just as bad, but is never currently parsed as a separate token */
 8977|  3.77k|		if (strcmp(toktype, "'\"'") == 0) {
  ------------------
  |  Branch (8977:7): [True: 32, False: 3.74k]
  ------------------
 8978|     32|			if (yyres) {
  ------------------
  |  Branch (8978:8): [True: 16, False: 16]
  ------------------
 8979|     16|				yystpcpy(yyres, "double-quote mark");
  ------------------
  |  | 3788|     16|#   define yystpcpy stpcpy
  ------------------
 8980|     16|			}
 8981|     32|			return sizeof("double-quote mark")-1;
 8982|     32|		}
 8983|       |
 8984|       |		/* Strip off the outer quote marks */
 8985|  3.74k|		if (toktype_len >= 2 && *toktype == '"') {
  ------------------
  |  Branch (8985:7): [True: 3.74k, False: 0]
  |  Branch (8985:27): [True: 2.18k, False: 1.56k]
  ------------------
 8986|  2.18k|			toktype++;
 8987|  2.18k|			toktype_len -= 2;
 8988|  2.18k|		}
 8989|       |
 8990|       |		/* If the token always has one form, the %token line should have a single-quoted name */
 8991|       |		/* The parser rules also include single-character un-named tokens which will be single-quoted here */
 8992|       |		/* We re-format this with double quotes here to ensure everything's consistent */
 8993|  3.74k|		if (toktype_len > 0 && *toktype == '\'') {
  ------------------
  |  Branch (8993:7): [True: 3.74k, False: 0]
  |  Branch (8993:26): [True: 2.11k, False: 1.62k]
  ------------------
 8994|  2.11k|			if (yyres) {
  ------------------
  |  Branch (8994:8): [True: 1.05k, False: 1.05k]
  ------------------
 8995|  1.05k|				snprintf(buffer, sizeof(buffer), "token \"%.*s\"", (int)toktype_len-2, toktype+1);
 8996|  1.05k|				yystpcpy(yyres, buffer);
  ------------------
  |  | 3788|  1.05k|#   define yystpcpy stpcpy
  ------------------
 8997|  1.05k|			}
 8998|  2.11k|			return toktype_len + sizeof("token ")-1;
 8999|  2.11k|		}
 9000|       |
 9001|       |		/* Fetch the content of the last seen token from global lexer state */
 9002|  1.62k|		tokcontent = LANG_SCNG(yy_text);
  ------------------
  |  |   55|  1.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
 9003|  1.62k|		tokcontent_len = LANG_SCNG(yy_leng);
  ------------------
  |  |   55|  1.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
 9004|       |
 9005|       |		/* For T_BAD_CHARACTER, the content probably won't be a printable char */
 9006|       |		/* Also, "unexpected invalid character" sounds a bit redundant */
 9007|  1.62k|		if (tokcontent_len == 1 && strcmp(yystr, "\"invalid character\"") == 0) {
  ------------------
  |  Branch (9007:7): [True: 906, False: 718]
  |  Branch (9007:30): [True: 380, False: 526]
  ------------------
 9008|    380|			if (yyres) {
  ------------------
  |  Branch (9008:8): [True: 190, False: 190]
  ------------------
 9009|    190|				snprintf(buffer, sizeof(buffer), "character 0x%02hhX", *tokcontent);
 9010|    190|				yystpcpy(yyres, buffer);
  ------------------
  |  | 3788|    190|#   define yystpcpy stpcpy
  ------------------
 9011|    190|			}
 9012|    380|			return sizeof("character 0x00")-1;
 9013|    380|		}
 9014|       |
 9015|       |		/* Truncate at line end to avoid messing up log formats */
 9016|  1.24k|		tokcontent_end = memchr(tokcontent, '\n', tokcontent_len);
 9017|  1.24k|		if (tokcontent_end != NULL) {
  ------------------
  |  Branch (9017:7): [True: 136, False: 1.10k]
  ------------------
 9018|    136|			tokcontent_len = (tokcontent_end - tokcontent);
 9019|    136|		}
 9020|       |
 9021|       |		/* Try to be helpful about what kind of string was found, before stripping the quotes */
 9022|  1.24k|		if (tokcontent_len > 0 && strcmp(yystr, "\"quoted string\"") == 0) {
  ------------------
  |  Branch (9022:7): [True: 1.23k, False: 12]
  |  Branch (9022:29): [True: 22, False: 1.21k]
  ------------------
 9023|     22|			if (*tokcontent == '"') {
  ------------------
  |  Branch (9023:8): [True: 6, False: 16]
  ------------------
 9024|      6|				toktype = "double-quoted string";
 9025|      6|				toktype_len = sizeof("double-quoted string")-1;
 9026|      6|			}
 9027|     16|			else if (*tokcontent == '\'') {
  ------------------
  |  Branch (9027:13): [True: 16, False: 0]
  ------------------
 9028|     16|				toktype = "single-quoted string";
 9029|     16|				toktype_len = sizeof("single-quoted string")-1;
 9030|     16|			}
 9031|     22|		}
 9032|       |
 9033|       |		/* For quoted strings, strip off another layer of quotes to avoid putting quotes inside quotes */
 9034|  1.24k|		if (tokcontent_len > 0 && (*tokcontent == '\'' || *tokcontent=='"'))  {
  ------------------
  |  Branch (9034:7): [True: 1.23k, False: 12]
  |  Branch (9034:30): [True: 46, False: 1.18k]
  |  Branch (9034:53): [True: 8, False: 1.17k]
  ------------------
 9035|     54|			tokcontent++;
 9036|     54|			tokcontent_len--;
 9037|     54|		}
 9038|  1.24k|		if (tokcontent_len > 0 && (tokcontent[tokcontent_len-1] == '\'' || tokcontent[tokcontent_len-1] == '"'))  {
  ------------------
  |  Branch (9038:7): [True: 1.22k, False: 16]
  |  Branch (9038:30): [True: 20, False: 1.20k]
  |  Branch (9038:70): [True: 8, False: 1.20k]
  ------------------
 9039|     28|			tokcontent_len--;
 9040|     28|		}
 9041|       |
 9042|       |		/* Truncate to 30 characters and add a ... */
 9043|  1.24k|		if (tokcontent_len > 30 + sizeof("...")-1) {
  ------------------
  |  Branch (9043:7): [True: 18, False: 1.22k]
  ------------------
 9044|     18|			if (yyres) {
  ------------------
  |  Branch (9044:8): [True: 9, False: 9]
  ------------------
 9045|      9|				snprintf(buffer, sizeof(buffer), "%.*s \"%.*s...\"", (int)toktype_len, toktype, 30, tokcontent);
 9046|      9|				yystpcpy(yyres, buffer);
  ------------------
  |  | 3788|      9|#   define yystpcpy stpcpy
  ------------------
 9047|      9|			}
 9048|     18|			return toktype_len + 30 + sizeof(" \"...\"")-1;
 9049|     18|		}
 9050|       |
 9051|  1.22k|		if (yyres) {
  ------------------
  |  Branch (9051:7): [True: 613, False: 613]
  ------------------
 9052|    613|			snprintf(buffer, sizeof(buffer), "%.*s \"%.*s\"", (int)toktype_len, toktype, (int)tokcontent_len, tokcontent);
 9053|    613|			yystpcpy(yyres, buffer);
  ------------------
  |  | 3788|    613|#   define yystpcpy stpcpy
  ------------------
 9054|    613|		}
 9055|  1.22k|		return toktype_len + tokcontent_len + sizeof(" \"\"")-1;
 9056|  1.24k|	}
 9057|       |
 9058|       |	/* One of the expected tokens */
 9059|       |
 9060|       |	/* Prevent the backslash getting doubled in the output (eugh) */
 9061|  8.23k|	if (strcmp(toktype, "\"'\\\\'\"") == 0) {
  ------------------
  |  Branch (9061:6): [True: 0, False: 8.23k]
  ------------------
 9062|      0|		if (yyres) {
  ------------------
  |  Branch (9062:7): [True: 0, False: 0]
  ------------------
 9063|      0|			yystpcpy(yyres, "\"\\\"");
  ------------------
  |  | 3788|      0|#   define yystpcpy stpcpy
  ------------------
 9064|      0|		}
 9065|      0|		return sizeof("\"\\\"")-1;
 9066|      0|	}
 9067|       |
 9068|       |	/* We used "amp" as a dummy label to avoid a duplicate token literal warning. */
 9069|  8.23k|	if (strcmp(toktype, "\"amp\"") == 0) {
  ------------------
  |  Branch (9069:6): [True: 6, False: 8.23k]
  ------------------
 9070|      6|		if (yyres) {
  ------------------
  |  Branch (9070:7): [True: 3, False: 3]
  ------------------
 9071|      3|			yystpcpy(yyres, "token \"&\"");
  ------------------
  |  | 3788|      3|#   define yystpcpy stpcpy
  ------------------
 9072|      3|		}
 9073|      6|		return sizeof("token \"&\"")-1;
 9074|      6|	}
 9075|       |
 9076|       |	/* Strip off the outer quote marks */
 9077|  8.23k|	if (toktype_len >= 2 && *toktype == '"') {
  ------------------
  |  Branch (9077:6): [True: 8.23k, False: 0]
  |  Branch (9077:26): [True: 6.87k, False: 1.35k]
  ------------------
 9078|  6.87k|		toktype++;
 9079|  6.87k|		toktype_len -= 2;
 9080|  6.87k|	}
 9081|       |
 9082|  8.23k|	if (yyres) {
  ------------------
  |  Branch (9082:6): [True: 888, False: 7.34k]
  ------------------
 9083|    888|		YYSIZE_T yyn = 0;
  ------------------
  |  |   76|    888|#define YYSIZE_T size_t
  ------------------
 9084|       |
 9085|  5.70k|		for (; yyn < toktype_len; ++yyn) {
  ------------------
  |  Branch (9085:10): [True: 4.81k, False: 888]
  ------------------
 9086|       |			/* Replace single quotes with double for consistency */
 9087|  4.81k|			if (toktype[yyn] == '\'') {
  ------------------
  |  Branch (9087:8): [True: 1.21k, False: 3.60k]
  ------------------
 9088|  1.21k|				yyres[yyn] = '"';
 9089|  1.21k|			}
 9090|  3.60k|			else {
 9091|  3.60k|				yyres[yyn] = toktype[yyn];
 9092|  3.60k|			}
 9093|  4.81k|		}
 9094|    888|		yyres[toktype_len] = '\0';
 9095|    888|	}
 9096|       |
 9097|  8.23k|	return toktype_len;
 9098|  8.23k|}
zend_language_parser.c:yydestruct:
 4006|  28.9k|{
 4007|  28.9k|  YYUSE (yyvaluep);
  ------------------
  |  |  462|  28.9k|# define YYUSE(E) ((void) (E))
  ------------------
 4008|  28.9k|  if (!yymsg)
  ------------------
  |  Branch (4008:7): [True: 0, False: 28.9k]
  ------------------
 4009|      0|    yymsg = "Deleting";
 4010|  28.9k|  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 4011|       |
 4012|  28.9k|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 4013|  28.9k|  switch (yytype)
 4014|  28.9k|    {
 4015|      6|    case 73: /* "integer"  */
  ------------------
  |  Branch (4015:5): [True: 6, False: 28.9k]
  ------------------
 4016|      6|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4017|      6|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4018|      6|#line 4019 "/src/php-src/Zend/zend_language_parser.c"
 4019|      6|        break;
 4020|       |
 4021|     17|    case 74: /* "floating-point number"  */
  ------------------
  |  Branch (4021:5): [True: 17, False: 28.9k]
  ------------------
 4022|     17|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4023|     17|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4024|     17|#line 4025 "/src/php-src/Zend/zend_language_parser.c"
 4025|     17|        break;
 4026|       |
 4027|    312|    case 75: /* "identifier"  */
  ------------------
  |  Branch (4027:5): [True: 312, False: 28.6k]
  ------------------
 4028|    312|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4029|    312|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4030|    312|#line 4031 "/src/php-src/Zend/zend_language_parser.c"
 4031|    312|        break;
 4032|       |
 4033|      6|    case 76: /* "fully qualified name"  */
  ------------------
  |  Branch (4033:5): [True: 6, False: 28.9k]
  ------------------
 4034|      6|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4035|      6|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4036|      6|#line 4037 "/src/php-src/Zend/zend_language_parser.c"
 4037|      6|        break;
 4038|       |
 4039|     10|    case 77: /* "namespace-relative name"  */
  ------------------
  |  Branch (4039:5): [True: 10, False: 28.9k]
  ------------------
 4040|     10|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4041|     10|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4042|     10|#line 4043 "/src/php-src/Zend/zend_language_parser.c"
 4043|     10|        break;
 4044|       |
 4045|      4|    case 78: /* "namespaced name"  */
  ------------------
  |  Branch (4045:5): [True: 4, False: 28.9k]
  ------------------
 4046|      4|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4047|      4|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4048|      4|#line 4049 "/src/php-src/Zend/zend_language_parser.c"
 4049|      4|        break;
 4050|       |
 4051|     86|    case 79: /* "variable"  */
  ------------------
  |  Branch (4051:5): [True: 86, False: 28.8k]
  ------------------
 4052|     86|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4053|     86|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4054|     86|#line 4055 "/src/php-src/Zend/zend_language_parser.c"
 4055|     86|        break;
 4056|       |
 4057|      0|    case 80: /* T_INLINE_HTML  */
  ------------------
  |  Branch (4057:5): [True: 0, False: 28.9k]
  ------------------
 4058|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4059|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4060|      0|#line 4061 "/src/php-src/Zend/zend_language_parser.c"
 4061|      0|        break;
 4062|       |
 4063|  1.16k|    case 81: /* "string content"  */
  ------------------
  |  Branch (4063:5): [True: 1.16k, False: 27.8k]
  ------------------
 4064|  1.16k|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4065|  1.16k|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4066|  1.16k|#line 4067 "/src/php-src/Zend/zend_language_parser.c"
 4067|  1.16k|        break;
 4068|       |
 4069|     11|    case 82: /* "quoted string"  */
  ------------------
  |  Branch (4069:5): [True: 11, False: 28.9k]
  ------------------
 4070|     11|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4071|     11|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4072|     11|#line 4073 "/src/php-src/Zend/zend_language_parser.c"
 4073|     11|        break;
 4074|       |
 4075|      2|    case 83: /* "variable name"  */
  ------------------
  |  Branch (4075:5): [True: 2, False: 28.9k]
  ------------------
 4076|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4077|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4078|      2|#line 4079 "/src/php-src/Zend/zend_language_parser.c"
 4079|      2|        break;
 4080|       |
 4081|      1|    case 84: /* "number"  */
  ------------------
  |  Branch (4081:5): [True: 1, False: 28.9k]
  ------------------
 4082|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4083|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4084|      1|#line 4085 "/src/php-src/Zend/zend_language_parser.c"
 4085|      1|        break;
 4086|       |
 4087|     19|    case 190: /* identifier  */
  ------------------
  |  Branch (4087:5): [True: 19, False: 28.9k]
  ------------------
 4088|     19|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4089|     19|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4090|     19|#line 4091 "/src/php-src/Zend/zend_language_parser.c"
 4091|     19|        break;
 4092|       |
 4093|  2.09k|    case 191: /* top_statement_list  */
  ------------------
  |  Branch (4093:5): [True: 2.09k, False: 26.8k]
  ------------------
 4094|  2.09k|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4095|  2.09k|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4096|  2.09k|#line 4097 "/src/php-src/Zend/zend_language_parser.c"
 4097|  2.09k|        break;
 4098|       |
 4099|      4|    case 192: /* namespace_declaration_name  */
  ------------------
  |  Branch (4099:5): [True: 4, False: 28.9k]
  ------------------
 4100|      4|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4101|      4|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4102|      4|#line 4103 "/src/php-src/Zend/zend_language_parser.c"
 4103|      4|        break;
 4104|       |
 4105|      0|    case 193: /* namespace_name  */
  ------------------
  |  Branch (4105:5): [True: 0, False: 28.9k]
  ------------------
 4106|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4107|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4108|      0|#line 4109 "/src/php-src/Zend/zend_language_parser.c"
 4109|      0|        break;
 4110|       |
 4111|      6|    case 194: /* legacy_namespace_name  */
  ------------------
  |  Branch (4111:5): [True: 6, False: 28.9k]
  ------------------
 4112|      6|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4113|      6|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4114|      6|#line 4115 "/src/php-src/Zend/zend_language_parser.c"
 4115|      6|        break;
 4116|       |
 4117|    217|    case 195: /* name  */
  ------------------
  |  Branch (4117:5): [True: 217, False: 28.7k]
  ------------------
 4118|    217|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4119|    217|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4120|    217|#line 4121 "/src/php-src/Zend/zend_language_parser.c"
 4121|    217|        break;
 4122|       |
 4123|      0|    case 196: /* attribute_decl  */
  ------------------
  |  Branch (4123:5): [True: 0, False: 28.9k]
  ------------------
 4124|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4125|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4126|      0|#line 4127 "/src/php-src/Zend/zend_language_parser.c"
 4127|      0|        break;
 4128|       |
 4129|      4|    case 197: /* attribute_group  */
  ------------------
  |  Branch (4129:5): [True: 4, False: 28.9k]
  ------------------
 4130|      4|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4131|      4|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4132|      4|#line 4133 "/src/php-src/Zend/zend_language_parser.c"
 4133|      4|        break;
 4134|       |
 4135|      0|    case 198: /* attribute  */
  ------------------
  |  Branch (4135:5): [True: 0, False: 28.9k]
  ------------------
 4136|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4137|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4138|      0|#line 4139 "/src/php-src/Zend/zend_language_parser.c"
 4139|      0|        break;
 4140|       |
 4141|      4|    case 199: /* attributes  */
  ------------------
  |  Branch (4141:5): [True: 4, False: 28.9k]
  ------------------
 4142|      4|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4143|      4|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4144|      4|#line 4145 "/src/php-src/Zend/zend_language_parser.c"
 4145|      4|        break;
 4146|       |
 4147|      0|    case 200: /* attributed_statement  */
  ------------------
  |  Branch (4147:5): [True: 0, False: 28.9k]
  ------------------
 4148|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4149|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4150|      0|#line 4151 "/src/php-src/Zend/zend_language_parser.c"
 4151|      0|        break;
 4152|       |
 4153|      0|    case 201: /* attributed_top_statement  */
  ------------------
  |  Branch (4153:5): [True: 0, False: 28.9k]
  ------------------
 4154|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4155|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4156|      0|#line 4157 "/src/php-src/Zend/zend_language_parser.c"
 4157|      0|        break;
 4158|       |
 4159|      0|    case 202: /* top_statement  */
  ------------------
  |  Branch (4159:5): [True: 0, False: 28.9k]
  ------------------
 4160|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4161|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4162|      0|#line 4163 "/src/php-src/Zend/zend_language_parser.c"
 4163|      0|        break;
 4164|       |
 4165|      0|    case 206: /* group_use_declaration  */
  ------------------
  |  Branch (4165:5): [True: 0, False: 28.9k]
  ------------------
 4166|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4167|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4168|      0|#line 4169 "/src/php-src/Zend/zend_language_parser.c"
 4169|      0|        break;
 4170|       |
 4171|      0|    case 207: /* mixed_group_use_declaration  */
  ------------------
  |  Branch (4171:5): [True: 0, False: 28.9k]
  ------------------
 4172|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4173|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4174|      0|#line 4175 "/src/php-src/Zend/zend_language_parser.c"
 4175|      0|        break;
 4176|       |
 4177|      2|    case 209: /* inline_use_declarations  */
  ------------------
  |  Branch (4177:5): [True: 2, False: 28.9k]
  ------------------
 4178|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4179|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4180|      2|#line 4181 "/src/php-src/Zend/zend_language_parser.c"
 4181|      2|        break;
 4182|       |
 4183|      1|    case 210: /* unprefixed_use_declarations  */
  ------------------
  |  Branch (4183:5): [True: 1, False: 28.9k]
  ------------------
 4184|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4185|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4186|      1|#line 4187 "/src/php-src/Zend/zend_language_parser.c"
 4187|      1|        break;
 4188|       |
 4189|      1|    case 211: /* use_declarations  */
  ------------------
  |  Branch (4189:5): [True: 1, False: 28.9k]
  ------------------
 4190|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4191|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4192|      1|#line 4193 "/src/php-src/Zend/zend_language_parser.c"
 4193|      1|        break;
 4194|       |
 4195|      0|    case 212: /* inline_use_declaration  */
  ------------------
  |  Branch (4195:5): [True: 0, False: 28.9k]
  ------------------
 4196|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4197|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4198|      0|#line 4199 "/src/php-src/Zend/zend_language_parser.c"
 4199|      0|        break;
 4200|       |
 4201|      0|    case 213: /* unprefixed_use_declaration  */
  ------------------
  |  Branch (4201:5): [True: 0, False: 28.9k]
  ------------------
 4202|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4203|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4204|      0|#line 4205 "/src/php-src/Zend/zend_language_parser.c"
 4205|      0|        break;
 4206|       |
 4207|      0|    case 214: /* use_declaration  */
  ------------------
  |  Branch (4207:5): [True: 0, False: 28.9k]
  ------------------
 4208|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4209|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4210|      0|#line 4211 "/src/php-src/Zend/zend_language_parser.c"
 4211|      0|        break;
 4212|       |
 4213|      7|    case 215: /* const_list  */
  ------------------
  |  Branch (4213:5): [True: 7, False: 28.9k]
  ------------------
 4214|      7|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4215|      7|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4216|      7|#line 4217 "/src/php-src/Zend/zend_language_parser.c"
 4217|      7|        break;
 4218|       |
 4219|    135|    case 216: /* inner_statement_list  */
  ------------------
  |  Branch (4219:5): [True: 135, False: 28.8k]
  ------------------
 4220|    135|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4221|    135|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4222|    135|#line 4223 "/src/php-src/Zend/zend_language_parser.c"
 4223|    135|        break;
 4224|       |
 4225|      0|    case 217: /* inner_statement  */
  ------------------
  |  Branch (4225:5): [True: 0, False: 28.9k]
  ------------------
 4226|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4227|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4228|      0|#line 4229 "/src/php-src/Zend/zend_language_parser.c"
 4229|      0|        break;
 4230|       |
 4231|      0|    case 218: /* statement  */
  ------------------
  |  Branch (4231:5): [True: 0, False: 28.9k]
  ------------------
 4232|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4233|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4234|      0|#line 4235 "/src/php-src/Zend/zend_language_parser.c"
 4235|      0|        break;
 4236|       |
 4237|      3|    case 220: /* catch_list  */
  ------------------
  |  Branch (4237:5): [True: 3, False: 28.9k]
  ------------------
 4238|      3|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4239|      3|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4240|      3|#line 4241 "/src/php-src/Zend/zend_language_parser.c"
 4241|      3|        break;
 4242|       |
 4243|      1|    case 221: /* catch_name_list  */
  ------------------
  |  Branch (4243:5): [True: 1, False: 28.9k]
  ------------------
 4244|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4245|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4246|      1|#line 4247 "/src/php-src/Zend/zend_language_parser.c"
 4247|      1|        break;
 4248|       |
 4249|      1|    case 222: /* optional_variable  */
  ------------------
  |  Branch (4249:5): [True: 1, False: 28.9k]
  ------------------
 4250|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4251|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4252|      1|#line 4253 "/src/php-src/Zend/zend_language_parser.c"
 4253|      1|        break;
 4254|       |
 4255|      0|    case 223: /* finally_statement  */
  ------------------
  |  Branch (4255:5): [True: 0, False: 28.9k]
  ------------------
 4256|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4257|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4258|      0|#line 4259 "/src/php-src/Zend/zend_language_parser.c"
 4259|      0|        break;
 4260|       |
 4261|      0|    case 224: /* unset_variables  */
  ------------------
  |  Branch (4261:5): [True: 0, False: 28.9k]
  ------------------
 4262|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4263|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4264|      0|#line 4265 "/src/php-src/Zend/zend_language_parser.c"
 4265|      0|        break;
 4266|       |
 4267|      0|    case 225: /* unset_variable  */
  ------------------
  |  Branch (4267:5): [True: 0, False: 28.9k]
  ------------------
 4268|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4269|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4270|      0|#line 4271 "/src/php-src/Zend/zend_language_parser.c"
 4271|      0|        break;
 4272|       |
 4273|     31|    case 226: /* function_name  */
  ------------------
  |  Branch (4273:5): [True: 31, False: 28.9k]
  ------------------
 4274|     31|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4275|     31|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4276|     31|#line 4277 "/src/php-src/Zend/zend_language_parser.c"
 4277|     31|        break;
 4278|       |
 4279|      0|    case 227: /* function_declaration_statement  */
  ------------------
  |  Branch (4279:5): [True: 0, False: 28.9k]
  ------------------
 4280|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4281|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4282|      0|#line 4283 "/src/php-src/Zend/zend_language_parser.c"
 4283|      0|        break;
 4284|       |
 4285|      0|    case 230: /* class_declaration_statement  */
  ------------------
  |  Branch (4285:5): [True: 0, False: 28.9k]
  ------------------
 4286|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4287|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4288|      0|#line 4289 "/src/php-src/Zend/zend_language_parser.c"
 4289|      0|        break;
 4290|       |
 4291|      0|    case 237: /* trait_declaration_statement  */
  ------------------
  |  Branch (4291:5): [True: 0, False: 28.9k]
  ------------------
 4292|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4293|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4294|      0|#line 4295 "/src/php-src/Zend/zend_language_parser.c"
 4295|      0|        break;
 4296|       |
 4297|      0|    case 239: /* interface_declaration_statement  */
  ------------------
  |  Branch (4297:5): [True: 0, False: 28.9k]
  ------------------
 4298|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4299|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4300|      0|#line 4301 "/src/php-src/Zend/zend_language_parser.c"
 4301|      0|        break;
 4302|       |
 4303|      0|    case 241: /* enum_declaration_statement  */
  ------------------
  |  Branch (4303:5): [True: 0, False: 28.9k]
  ------------------
 4304|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4305|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4306|      0|#line 4307 "/src/php-src/Zend/zend_language_parser.c"
 4307|      0|        break;
 4308|       |
 4309|     20|    case 243: /* enum_backing_type  */
  ------------------
  |  Branch (4309:5): [True: 20, False: 28.9k]
  ------------------
 4310|     20|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4311|     20|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4312|     20|#line 4313 "/src/php-src/Zend/zend_language_parser.c"
 4313|     20|        break;
 4314|       |
 4315|      0|    case 244: /* enum_case  */
  ------------------
  |  Branch (4315:5): [True: 0, False: 28.9k]
  ------------------
 4316|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4317|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4318|      0|#line 4319 "/src/php-src/Zend/zend_language_parser.c"
 4319|      0|        break;
 4320|       |
 4321|      0|    case 245: /* enum_case_expr  */
  ------------------
  |  Branch (4321:5): [True: 0, False: 28.9k]
  ------------------
 4322|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4323|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4324|      0|#line 4325 "/src/php-src/Zend/zend_language_parser.c"
 4325|      0|        break;
 4326|       |
 4327|     82|    case 246: /* extends_from  */
  ------------------
  |  Branch (4327:5): [True: 82, False: 28.8k]
  ------------------
 4328|     82|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4329|     82|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4330|     82|#line 4331 "/src/php-src/Zend/zend_language_parser.c"
 4331|     82|        break;
 4332|       |
 4333|      1|    case 247: /* interface_extends_list  */
  ------------------
  |  Branch (4333:5): [True: 1, False: 28.9k]
  ------------------
 4334|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4335|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4336|      1|#line 4337 "/src/php-src/Zend/zend_language_parser.c"
 4337|      1|        break;
 4338|       |
 4339|    102|    case 248: /* implements_list  */
  ------------------
  |  Branch (4339:5): [True: 102, False: 28.8k]
  ------------------
 4340|    102|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4341|    102|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4342|    102|#line 4343 "/src/php-src/Zend/zend_language_parser.c"
 4343|    102|        break;
 4344|       |
 4345|      4|    case 249: /* foreach_variable  */
  ------------------
  |  Branch (4345:5): [True: 4, False: 28.9k]
  ------------------
 4346|      4|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4347|      4|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4348|      4|#line 4349 "/src/php-src/Zend/zend_language_parser.c"
 4349|      4|        break;
 4350|       |
 4351|      0|    case 250: /* for_statement  */
  ------------------
  |  Branch (4351:5): [True: 0, False: 28.9k]
  ------------------
 4352|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4353|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4354|      0|#line 4355 "/src/php-src/Zend/zend_language_parser.c"
 4355|      0|        break;
 4356|       |
 4357|      0|    case 251: /* foreach_statement  */
  ------------------
  |  Branch (4357:5): [True: 0, False: 28.9k]
  ------------------
 4358|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4359|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4360|      0|#line 4361 "/src/php-src/Zend/zend_language_parser.c"
 4361|      0|        break;
 4362|       |
 4363|      0|    case 252: /* declare_statement  */
  ------------------
  |  Branch (4363:5): [True: 0, False: 28.9k]
  ------------------
 4364|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4365|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4366|      0|#line 4367 "/src/php-src/Zend/zend_language_parser.c"
 4367|      0|        break;
 4368|       |
 4369|      0|    case 253: /* switch_case_list  */
  ------------------
  |  Branch (4369:5): [True: 0, False: 28.9k]
  ------------------
 4370|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4371|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4372|      0|#line 4373 "/src/php-src/Zend/zend_language_parser.c"
 4373|      0|        break;
 4374|       |
 4375|      3|    case 254: /* case_list  */
  ------------------
  |  Branch (4375:5): [True: 3, False: 28.9k]
  ------------------
 4376|      3|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4377|      3|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4378|      3|#line 4379 "/src/php-src/Zend/zend_language_parser.c"
 4379|      3|        break;
 4380|       |
 4381|      0|    case 255: /* match  */
  ------------------
  |  Branch (4381:5): [True: 0, False: 28.9k]
  ------------------
 4382|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4383|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4384|      0|#line 4385 "/src/php-src/Zend/zend_language_parser.c"
 4385|      0|        break;
 4386|       |
 4387|      0|    case 256: /* match_arm_list  */
  ------------------
  |  Branch (4387:5): [True: 0, False: 28.9k]
  ------------------
 4388|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4389|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4390|      0|#line 4391 "/src/php-src/Zend/zend_language_parser.c"
 4391|      0|        break;
 4392|       |
 4393|      1|    case 257: /* non_empty_match_arm_list  */
  ------------------
  |  Branch (4393:5): [True: 1, False: 28.9k]
  ------------------
 4394|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4395|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4396|      1|#line 4397 "/src/php-src/Zend/zend_language_parser.c"
 4397|      1|        break;
 4398|       |
 4399|      0|    case 258: /* match_arm  */
  ------------------
  |  Branch (4399:5): [True: 0, False: 28.9k]
  ------------------
 4400|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4401|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4402|      0|#line 4403 "/src/php-src/Zend/zend_language_parser.c"
 4403|      0|        break;
 4404|       |
 4405|      3|    case 259: /* match_arm_cond_list  */
  ------------------
  |  Branch (4405:5): [True: 3, False: 28.9k]
  ------------------
 4406|      3|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4407|      3|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4408|      3|#line 4409 "/src/php-src/Zend/zend_language_parser.c"
 4409|      3|        break;
 4410|       |
 4411|      0|    case 260: /* while_statement  */
  ------------------
  |  Branch (4411:5): [True: 0, False: 28.9k]
  ------------------
 4412|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4413|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4414|      0|#line 4415 "/src/php-src/Zend/zend_language_parser.c"
 4415|      0|        break;
 4416|       |
 4417|      0|    case 261: /* if_stmt_without_else  */
  ------------------
  |  Branch (4417:5): [True: 0, False: 28.9k]
  ------------------
 4418|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4419|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4420|      0|#line 4421 "/src/php-src/Zend/zend_language_parser.c"
 4421|      0|        break;
 4422|       |
 4423|      0|    case 262: /* if_stmt  */
  ------------------
  |  Branch (4423:5): [True: 0, False: 28.9k]
  ------------------
 4424|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4425|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4426|      0|#line 4427 "/src/php-src/Zend/zend_language_parser.c"
 4427|      0|        break;
 4428|       |
 4429|      1|    case 263: /* alt_if_stmt_without_else  */
  ------------------
  |  Branch (4429:5): [True: 1, False: 28.9k]
  ------------------
 4430|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4431|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4432|      1|#line 4433 "/src/php-src/Zend/zend_language_parser.c"
 4433|      1|        break;
 4434|       |
 4435|      0|    case 264: /* alt_if_stmt  */
  ------------------
  |  Branch (4435:5): [True: 0, False: 28.9k]
  ------------------
 4436|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4437|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4438|      0|#line 4439 "/src/php-src/Zend/zend_language_parser.c"
 4439|      0|        break;
 4440|       |
 4441|     42|    case 265: /* parameter_list  */
  ------------------
  |  Branch (4441:5): [True: 42, False: 28.9k]
  ------------------
 4442|     42|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4443|     42|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4444|     42|#line 4445 "/src/php-src/Zend/zend_language_parser.c"
 4445|     42|        break;
 4446|       |
 4447|      1|    case 266: /* non_empty_parameter_list  */
  ------------------
  |  Branch (4447:5): [True: 1, False: 28.9k]
  ------------------
 4448|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4449|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4450|      1|#line 4451 "/src/php-src/Zend/zend_language_parser.c"
 4451|      1|        break;
 4452|       |
 4453|      0|    case 267: /* attributed_parameter  */
  ------------------
  |  Branch (4453:5): [True: 0, False: 28.9k]
  ------------------
 4454|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4455|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4456|      0|#line 4457 "/src/php-src/Zend/zend_language_parser.c"
 4457|      0|        break;
 4458|       |
 4459|      0|    case 269: /* parameter  */
  ------------------
  |  Branch (4459:5): [True: 0, False: 28.9k]
  ------------------
 4460|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4461|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4462|      0|#line 4463 "/src/php-src/Zend/zend_language_parser.c"
 4463|      0|        break;
 4464|       |
 4465|     32|    case 270: /* optional_type_without_static  */
  ------------------
  |  Branch (4465:5): [True: 32, False: 28.9k]
  ------------------
 4466|     32|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4467|     32|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4468|     32|#line 4469 "/src/php-src/Zend/zend_language_parser.c"
 4469|     32|        break;
 4470|       |
 4471|      2|    case 271: /* type_expr  */
  ------------------
  |  Branch (4471:5): [True: 2, False: 28.9k]
  ------------------
 4472|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4473|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4474|      2|#line 4475 "/src/php-src/Zend/zend_language_parser.c"
 4475|      2|        break;
 4476|       |
 4477|      1|    case 272: /* type  */
  ------------------
  |  Branch (4477:5): [True: 1, False: 28.9k]
  ------------------
 4478|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4479|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4480|      1|#line 4481 "/src/php-src/Zend/zend_language_parser.c"
 4481|      1|        break;
 4482|       |
 4483|      1|    case 273: /* union_type_element  */
  ------------------
  |  Branch (4483:5): [True: 1, False: 28.9k]
  ------------------
 4484|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4485|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4486|      1|#line 4487 "/src/php-src/Zend/zend_language_parser.c"
 4487|      1|        break;
 4488|       |
 4489|      0|    case 274: /* union_type  */
  ------------------
  |  Branch (4489:5): [True: 0, False: 28.9k]
  ------------------
 4490|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4491|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4492|      0|#line 4493 "/src/php-src/Zend/zend_language_parser.c"
 4493|      0|        break;
 4494|       |
 4495|      1|    case 275: /* intersection_type  */
  ------------------
  |  Branch (4495:5): [True: 1, False: 28.9k]
  ------------------
 4496|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4497|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4498|      1|#line 4499 "/src/php-src/Zend/zend_language_parser.c"
 4499|      1|        break;
 4500|       |
 4501|      0|    case 276: /* type_expr_without_static  */
  ------------------
  |  Branch (4501:5): [True: 0, False: 28.9k]
  ------------------
 4502|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4503|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4504|      0|#line 4505 "/src/php-src/Zend/zend_language_parser.c"
 4505|      0|        break;
 4506|       |
 4507|      2|    case 277: /* type_without_static  */
  ------------------
  |  Branch (4507:5): [True: 2, False: 28.9k]
  ------------------
 4508|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4509|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4510|      2|#line 4511 "/src/php-src/Zend/zend_language_parser.c"
 4511|      2|        break;
 4512|       |
 4513|      2|    case 278: /* union_type_without_static_element  */
  ------------------
  |  Branch (4513:5): [True: 2, False: 28.9k]
  ------------------
 4514|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4515|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4516|      2|#line 4517 "/src/php-src/Zend/zend_language_parser.c"
 4517|      2|        break;
 4518|       |
 4519|      1|    case 279: /* union_type_without_static  */
  ------------------
  |  Branch (4519:5): [True: 1, False: 28.9k]
  ------------------
 4520|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4521|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4522|      1|#line 4523 "/src/php-src/Zend/zend_language_parser.c"
 4523|      1|        break;
 4524|       |
 4525|      1|    case 280: /* intersection_type_without_static  */
  ------------------
  |  Branch (4525:5): [True: 1, False: 28.9k]
  ------------------
 4526|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4527|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4528|      1|#line 4529 "/src/php-src/Zend/zend_language_parser.c"
 4529|      1|        break;
 4530|       |
 4531|     39|    case 281: /* return_type  */
  ------------------
  |  Branch (4531:5): [True: 39, False: 28.9k]
  ------------------
 4532|     39|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4533|     39|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4534|     39|#line 4535 "/src/php-src/Zend/zend_language_parser.c"
 4535|     39|        break;
 4536|       |
 4537|      0|    case 282: /* argument_list  */
  ------------------
  |  Branch (4537:5): [True: 0, False: 28.9k]
  ------------------
 4538|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4539|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4540|      0|#line 4541 "/src/php-src/Zend/zend_language_parser.c"
 4541|      0|        break;
 4542|       |
 4543|     72|    case 283: /* non_empty_argument_list  */
  ------------------
  |  Branch (4543:5): [True: 72, False: 28.9k]
  ------------------
 4544|     72|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4545|     72|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4546|     72|#line 4547 "/src/php-src/Zend/zend_language_parser.c"
 4547|     72|        break;
 4548|       |
 4549|      0|    case 284: /* clone_argument_list  */
  ------------------
  |  Branch (4549:5): [True: 0, False: 28.9k]
  ------------------
 4550|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4551|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4552|      0|#line 4553 "/src/php-src/Zend/zend_language_parser.c"
 4553|      0|        break;
 4554|       |
 4555|      0|    case 285: /* non_empty_clone_argument_list  */
  ------------------
  |  Branch (4555:5): [True: 0, False: 28.9k]
  ------------------
 4556|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4557|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4558|      0|#line 4559 "/src/php-src/Zend/zend_language_parser.c"
 4559|      0|        break;
 4560|       |
 4561|      0|    case 286: /* argument_no_expr  */
  ------------------
  |  Branch (4561:5): [True: 0, False: 28.9k]
  ------------------
 4562|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4563|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4564|      0|#line 4565 "/src/php-src/Zend/zend_language_parser.c"
 4565|      0|        break;
 4566|       |
 4567|      0|    case 287: /* argument  */
  ------------------
  |  Branch (4567:5): [True: 0, False: 28.9k]
  ------------------
 4568|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4569|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4570|      0|#line 4571 "/src/php-src/Zend/zend_language_parser.c"
 4571|      0|        break;
 4572|       |
 4573|      1|    case 288: /* global_var_list  */
  ------------------
  |  Branch (4573:5): [True: 1, False: 28.9k]
  ------------------
 4574|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4575|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4576|      1|#line 4577 "/src/php-src/Zend/zend_language_parser.c"
 4577|      1|        break;
 4578|       |
 4579|      0|    case 289: /* global_var  */
  ------------------
  |  Branch (4579:5): [True: 0, False: 28.9k]
  ------------------
 4580|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4581|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4582|      0|#line 4583 "/src/php-src/Zend/zend_language_parser.c"
 4583|      0|        break;
 4584|       |
 4585|      0|    case 290: /* static_var_list  */
  ------------------
  |  Branch (4585:5): [True: 0, False: 28.9k]
  ------------------
 4586|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4587|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4588|      0|#line 4589 "/src/php-src/Zend/zend_language_parser.c"
 4589|      0|        break;
 4590|       |
 4591|      0|    case 291: /* static_var  */
  ------------------
  |  Branch (4591:5): [True: 0, False: 28.9k]
  ------------------
 4592|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4593|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4594|      0|#line 4595 "/src/php-src/Zend/zend_language_parser.c"
 4595|      0|        break;
 4596|       |
 4597|     82|    case 292: /* class_statement_list  */
  ------------------
  |  Branch (4597:5): [True: 82, False: 28.8k]
  ------------------
 4598|     82|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4599|     82|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4600|     82|#line 4601 "/src/php-src/Zend/zend_language_parser.c"
 4601|     82|        break;
 4602|       |
 4603|      0|    case 293: /* attributed_class_statement  */
  ------------------
  |  Branch (4603:5): [True: 0, False: 28.9k]
  ------------------
 4604|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4605|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4606|      0|#line 4607 "/src/php-src/Zend/zend_language_parser.c"
 4607|      0|        break;
 4608|       |
 4609|      0|    case 294: /* class_statement  */
  ------------------
  |  Branch (4609:5): [True: 0, False: 28.9k]
  ------------------
 4610|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4611|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4612|      0|#line 4613 "/src/php-src/Zend/zend_language_parser.c"
 4613|      0|        break;
 4614|       |
 4615|      5|    case 295: /* class_name_list  */
  ------------------
  |  Branch (4615:5): [True: 5, False: 28.9k]
  ------------------
 4616|      5|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4617|      5|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4618|      5|#line 4619 "/src/php-src/Zend/zend_language_parser.c"
 4619|      5|        break;
 4620|       |
 4621|      0|    case 296: /* trait_adaptations  */
  ------------------
  |  Branch (4621:5): [True: 0, False: 28.9k]
  ------------------
 4622|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4623|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4624|      0|#line 4625 "/src/php-src/Zend/zend_language_parser.c"
 4625|      0|        break;
 4626|       |
 4627|      1|    case 297: /* trait_adaptation_list  */
  ------------------
  |  Branch (4627:5): [True: 1, False: 28.9k]
  ------------------
 4628|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4629|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4630|      1|#line 4631 "/src/php-src/Zend/zend_language_parser.c"
 4631|      1|        break;
 4632|       |
 4633|      0|    case 298: /* trait_adaptation  */
  ------------------
  |  Branch (4633:5): [True: 0, False: 28.9k]
  ------------------
 4634|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4635|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4636|      0|#line 4637 "/src/php-src/Zend/zend_language_parser.c"
 4637|      0|        break;
 4638|       |
 4639|      0|    case 299: /* trait_precedence  */
  ------------------
  |  Branch (4639:5): [True: 0, False: 28.9k]
  ------------------
 4640|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4641|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4642|      0|#line 4643 "/src/php-src/Zend/zend_language_parser.c"
 4643|      0|        break;
 4644|       |
 4645|      0|    case 300: /* trait_alias  */
  ------------------
  |  Branch (4645:5): [True: 0, False: 28.9k]
  ------------------
 4646|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4647|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4648|      0|#line 4649 "/src/php-src/Zend/zend_language_parser.c"
 4649|      0|        break;
 4650|       |
 4651|      1|    case 301: /* trait_method_reference  */
  ------------------
  |  Branch (4651:5): [True: 1, False: 28.9k]
  ------------------
 4652|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4653|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4654|      1|#line 4655 "/src/php-src/Zend/zend_language_parser.c"
 4655|      1|        break;
 4656|       |
 4657|      1|    case 302: /* absolute_trait_method_reference  */
  ------------------
  |  Branch (4657:5): [True: 1, False: 28.9k]
  ------------------
 4658|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4659|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4660|      1|#line 4661 "/src/php-src/Zend/zend_language_parser.c"
 4661|      1|        break;
 4662|       |
 4663|      0|    case 303: /* method_body  */
  ------------------
  |  Branch (4663:5): [True: 0, False: 28.9k]
  ------------------
 4664|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4665|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4666|      0|#line 4667 "/src/php-src/Zend/zend_language_parser.c"
 4667|      0|        break;
 4668|       |
 4669|      0|    case 307: /* non_empty_member_modifiers  */
  ------------------
  |  Branch (4669:5): [True: 0, False: 28.9k]
  ------------------
 4670|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4671|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4672|      0|#line 4673 "/src/php-src/Zend/zend_language_parser.c"
 4673|      0|        break;
 4674|       |
 4675|      4|    case 309: /* property_list  */
  ------------------
  |  Branch (4675:5): [True: 4, False: 28.9k]
  ------------------
 4676|      4|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4677|      4|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4678|      4|#line 4679 "/src/php-src/Zend/zend_language_parser.c"
 4679|      4|        break;
 4680|       |
 4681|      0|    case 310: /* property  */
  ------------------
  |  Branch (4681:5): [True: 0, False: 28.9k]
  ------------------
 4682|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4683|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4684|      0|#line 4685 "/src/php-src/Zend/zend_language_parser.c"
 4685|      0|        break;
 4686|       |
 4687|      0|    case 311: /* hooked_property  */
  ------------------
  |  Branch (4687:5): [True: 0, False: 28.9k]
  ------------------
 4688|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4689|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4690|      0|#line 4691 "/src/php-src/Zend/zend_language_parser.c"
 4691|      0|        break;
 4692|       |
 4693|     11|    case 312: /* property_hook_list  */
  ------------------
  |  Branch (4693:5): [True: 11, False: 28.9k]
  ------------------
 4694|     11|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4695|     11|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4696|     11|#line 4697 "/src/php-src/Zend/zend_language_parser.c"
 4697|     11|        break;
 4698|       |
 4699|      0|    case 313: /* optional_property_hook_list  */
  ------------------
  |  Branch (4699:5): [True: 0, False: 28.9k]
  ------------------
 4700|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4701|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4702|      0|#line 4703 "/src/php-src/Zend/zend_language_parser.c"
 4703|      0|        break;
 4704|       |
 4705|      0|    case 315: /* property_hook  */
  ------------------
  |  Branch (4705:5): [True: 0, False: 28.9k]
  ------------------
 4706|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4707|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4708|      0|#line 4709 "/src/php-src/Zend/zend_language_parser.c"
 4709|      0|        break;
 4710|       |
 4711|      0|    case 317: /* property_hook_body  */
  ------------------
  |  Branch (4711:5): [True: 0, False: 28.9k]
  ------------------
 4712|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4713|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4714|      0|#line 4715 "/src/php-src/Zend/zend_language_parser.c"
 4715|      0|        break;
 4716|       |
 4717|      6|    case 318: /* optional_parameter_list  */
  ------------------
  |  Branch (4717:5): [True: 6, False: 28.9k]
  ------------------
 4718|      6|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4719|      6|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4720|      6|#line 4721 "/src/php-src/Zend/zend_language_parser.c"
 4721|      6|        break;
 4722|       |
 4723|      0|    case 319: /* class_const_list  */
  ------------------
  |  Branch (4723:5): [True: 0, False: 28.9k]
  ------------------
 4724|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4725|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4726|      0|#line 4727 "/src/php-src/Zend/zend_language_parser.c"
 4727|      0|        break;
 4728|       |
 4729|      0|    case 320: /* class_const_decl  */
  ------------------
  |  Branch (4729:5): [True: 0, False: 28.9k]
  ------------------
 4730|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4731|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4732|      0|#line 4733 "/src/php-src/Zend/zend_language_parser.c"
 4733|      0|        break;
 4734|       |
 4735|      0|    case 321: /* const_decl  */
  ------------------
  |  Branch (4735:5): [True: 0, False: 28.9k]
  ------------------
 4736|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4737|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4738|      0|#line 4739 "/src/php-src/Zend/zend_language_parser.c"
 4739|      0|        break;
 4740|       |
 4741|     12|    case 322: /* echo_expr_list  */
  ------------------
  |  Branch (4741:5): [True: 12, False: 28.9k]
  ------------------
 4742|     12|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4743|     12|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4744|     12|#line 4745 "/src/php-src/Zend/zend_language_parser.c"
 4745|     12|        break;
 4746|       |
 4747|      0|    case 323: /* echo_expr  */
  ------------------
  |  Branch (4747:5): [True: 0, False: 28.9k]
  ------------------
 4748|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4749|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4750|      0|#line 4751 "/src/php-src/Zend/zend_language_parser.c"
 4751|      0|        break;
 4752|       |
 4753|      8|    case 324: /* for_cond_exprs  */
  ------------------
  |  Branch (4753:5): [True: 8, False: 28.9k]
  ------------------
 4754|      8|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4755|      8|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4756|      8|#line 4757 "/src/php-src/Zend/zend_language_parser.c"
 4757|      8|        break;
 4758|       |
 4759|     15|    case 325: /* for_exprs  */
  ------------------
  |  Branch (4759:5): [True: 15, False: 28.9k]
  ------------------
 4760|     15|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4761|     15|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4762|     15|#line 4763 "/src/php-src/Zend/zend_language_parser.c"
 4763|     15|        break;
 4764|       |
 4765|      2|    case 326: /* non_empty_for_exprs  */
  ------------------
  |  Branch (4765:5): [True: 2, False: 28.9k]
  ------------------
 4766|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4767|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4768|      2|#line 4769 "/src/php-src/Zend/zend_language_parser.c"
 4769|      2|        break;
 4770|       |
 4771|      0|    case 327: /* anonymous_class  */
  ------------------
  |  Branch (4771:5): [True: 0, False: 28.9k]
  ------------------
 4772|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4773|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4774|      0|#line 4775 "/src/php-src/Zend/zend_language_parser.c"
 4775|      0|        break;
 4776|       |
 4777|      0|    case 329: /* new_dereferenceable  */
  ------------------
  |  Branch (4777:5): [True: 0, False: 28.9k]
  ------------------
 4778|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4779|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4780|      0|#line 4781 "/src/php-src/Zend/zend_language_parser.c"
 4781|      0|        break;
 4782|       |
 4783|      0|    case 330: /* new_non_dereferenceable  */
  ------------------
  |  Branch (4783:5): [True: 0, False: 28.9k]
  ------------------
 4784|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4785|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4786|      0|#line 4787 "/src/php-src/Zend/zend_language_parser.c"
 4787|      0|        break;
 4788|       |
 4789|    977|    case 331: /* expr  */
  ------------------
  |  Branch (4789:5): [True: 977, False: 28.0k]
  ------------------
 4790|    977|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4791|    977|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4792|    977|#line 4793 "/src/php-src/Zend/zend_language_parser.c"
 4793|    977|        break;
 4794|       |
 4795|      0|    case 332: /* inline_function  */
  ------------------
  |  Branch (4795:5): [True: 0, False: 28.9k]
  ------------------
 4796|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4797|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4798|      0|#line 4799 "/src/php-src/Zend/zend_language_parser.c"
 4799|      0|        break;
 4800|       |
 4801|    193|    case 335: /* backup_doc_comment  */
  ------------------
  |  Branch (4801:5): [True: 193, False: 28.7k]
  ------------------
 4802|    193|#line 51 "/src/php-src/Zend/zend_language_parser.y"
 4803|    193|            { if (((*yyvaluep).str)) zend_string_release_ex(((*yyvaluep).str), 0); }
  ------------------
  |  Branch (4803:19): [True: 2, False: 191]
  ------------------
 4804|    193|#line 4805 "/src/php-src/Zend/zend_language_parser.c"
 4805|    193|        break;
 4806|       |
 4807|     11|    case 339: /* lexical_vars  */
  ------------------
  |  Branch (4807:5): [True: 11, False: 28.9k]
  ------------------
 4808|     11|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4809|     11|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4810|     11|#line 4811 "/src/php-src/Zend/zend_language_parser.c"
 4811|     11|        break;
 4812|       |
 4813|      0|    case 340: /* lexical_var_list  */
  ------------------
  |  Branch (4813:5): [True: 0, False: 28.9k]
  ------------------
 4814|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4815|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4816|      0|#line 4817 "/src/php-src/Zend/zend_language_parser.c"
 4817|      0|        break;
 4818|       |
 4819|      0|    case 341: /* lexical_var  */
  ------------------
  |  Branch (4819:5): [True: 0, False: 28.9k]
  ------------------
 4820|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4821|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4822|      0|#line 4823 "/src/php-src/Zend/zend_language_parser.c"
 4823|      0|        break;
 4824|       |
 4825|      0|    case 342: /* function_call  */
  ------------------
  |  Branch (4825:5): [True: 0, False: 28.9k]
  ------------------
 4826|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4827|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4828|      0|#line 4829 "/src/php-src/Zend/zend_language_parser.c"
 4829|      0|        break;
 4830|       |
 4831|      2|    case 344: /* class_name  */
  ------------------
  |  Branch (4831:5): [True: 2, False: 28.9k]
  ------------------
 4832|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4833|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4834|      2|#line 4835 "/src/php-src/Zend/zend_language_parser.c"
 4835|      2|        break;
 4836|       |
 4837|      1|    case 345: /* class_name_reference  */
  ------------------
  |  Branch (4837:5): [True: 1, False: 28.9k]
  ------------------
 4838|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4839|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4840|      1|#line 4841 "/src/php-src/Zend/zend_language_parser.c"
 4841|      1|        break;
 4842|       |
 4843|     17|    case 346: /* backticks_expr  */
  ------------------
  |  Branch (4843:5): [True: 17, False: 28.9k]
  ------------------
 4844|     17|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4845|     17|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4846|     17|#line 4847 "/src/php-src/Zend/zend_language_parser.c"
 4847|     17|        break;
 4848|       |
 4849|      1|    case 347: /* ctor_arguments  */
  ------------------
  |  Branch (4849:5): [True: 1, False: 28.9k]
  ------------------
 4850|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4851|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4852|      1|#line 4853 "/src/php-src/Zend/zend_language_parser.c"
 4853|      1|        break;
 4854|       |
 4855|      0|    case 348: /* dereferenceable_scalar  */
  ------------------
  |  Branch (4855:5): [True: 0, False: 28.9k]
  ------------------
 4856|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4857|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4858|      0|#line 4859 "/src/php-src/Zend/zend_language_parser.c"
 4859|      0|        break;
 4860|       |
 4861|      0|    case 349: /* scalar  */
  ------------------
  |  Branch (4861:5): [True: 0, False: 28.9k]
  ------------------
 4862|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4863|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4864|      0|#line 4865 "/src/php-src/Zend/zend_language_parser.c"
 4865|      0|        break;
 4866|       |
 4867|      0|    case 350: /* constant  */
  ------------------
  |  Branch (4867:5): [True: 0, False: 28.9k]
  ------------------
 4868|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4869|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4870|      0|#line 4871 "/src/php-src/Zend/zend_language_parser.c"
 4871|      0|        break;
 4872|       |
 4873|      0|    case 351: /* class_constant  */
  ------------------
  |  Branch (4873:5): [True: 0, False: 28.9k]
  ------------------
 4874|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4875|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4876|      0|#line 4877 "/src/php-src/Zend/zend_language_parser.c"
 4877|      0|        break;
 4878|       |
 4879|     24|    case 352: /* optional_expr  */
  ------------------
  |  Branch (4879:5): [True: 24, False: 28.9k]
  ------------------
 4880|     24|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4881|     24|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4882|     24|#line 4883 "/src/php-src/Zend/zend_language_parser.c"
 4883|     24|        break;
 4884|       |
 4885|      0|    case 353: /* variable_class_name  */
  ------------------
  |  Branch (4885:5): [True: 0, False: 28.9k]
  ------------------
 4886|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4887|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4888|      0|#line 4889 "/src/php-src/Zend/zend_language_parser.c"
 4889|      0|        break;
 4890|       |
 4891|      0|    case 354: /* fully_dereferenceable  */
  ------------------
  |  Branch (4891:5): [True: 0, False: 28.9k]
  ------------------
 4892|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4893|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4894|      0|#line 4895 "/src/php-src/Zend/zend_language_parser.c"
 4895|      0|        break;
 4896|       |
 4897|     63|    case 355: /* array_object_dereferenceable  */
  ------------------
  |  Branch (4897:5): [True: 63, False: 28.9k]
  ------------------
 4898|     63|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4899|     63|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4900|     63|#line 4901 "/src/php-src/Zend/zend_language_parser.c"
 4901|     63|        break;
 4902|       |
 4903|     27|    case 356: /* callable_expr  */
  ------------------
  |  Branch (4903:5): [True: 27, False: 28.9k]
  ------------------
 4904|     27|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4905|     27|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4906|     27|#line 4907 "/src/php-src/Zend/zend_language_parser.c"
 4907|     27|        break;
 4908|       |
 4909|      0|    case 357: /* callable_variable  */
  ------------------
  |  Branch (4909:5): [True: 0, False: 28.9k]
  ------------------
 4910|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4911|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4912|      0|#line 4913 "/src/php-src/Zend/zend_language_parser.c"
 4913|      0|        break;
 4914|       |
 4915|     85|    case 358: /* variable  */
  ------------------
  |  Branch (4915:5): [True: 85, False: 28.8k]
  ------------------
 4916|     85|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4917|     85|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4918|     85|#line 4919 "/src/php-src/Zend/zend_language_parser.c"
 4919|     85|        break;
 4920|       |
 4921|      0|    case 359: /* simple_variable  */
  ------------------
  |  Branch (4921:5): [True: 0, False: 28.9k]
  ------------------
 4922|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4923|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4924|      0|#line 4925 "/src/php-src/Zend/zend_language_parser.c"
 4925|      0|        break;
 4926|       |
 4927|      0|    case 360: /* static_member  */
  ------------------
  |  Branch (4927:5): [True: 0, False: 28.9k]
  ------------------
 4928|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4929|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4930|      0|#line 4931 "/src/php-src/Zend/zend_language_parser.c"
 4931|      0|        break;
 4932|       |
 4933|      2|    case 361: /* new_variable  */
  ------------------
  |  Branch (4933:5): [True: 2, False: 28.9k]
  ------------------
 4934|      2|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4935|      2|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4936|      2|#line 4937 "/src/php-src/Zend/zend_language_parser.c"
 4937|      2|        break;
 4938|       |
 4939|      0|    case 362: /* member_name  */
  ------------------
  |  Branch (4939:5): [True: 0, False: 28.9k]
  ------------------
 4940|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4941|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4942|      0|#line 4943 "/src/php-src/Zend/zend_language_parser.c"
 4943|      0|        break;
 4944|       |
 4945|      0|    case 363: /* property_name  */
  ------------------
  |  Branch (4945:5): [True: 0, False: 28.9k]
  ------------------
 4946|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4947|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4948|      0|#line 4949 "/src/php-src/Zend/zend_language_parser.c"
 4949|      0|        break;
 4950|       |
 4951|     24|    case 364: /* array_pair_list  */
  ------------------
  |  Branch (4951:5): [True: 24, False: 28.9k]
  ------------------
 4952|     24|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4953|     24|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4954|     24|#line 4955 "/src/php-src/Zend/zend_language_parser.c"
 4955|     24|        break;
 4956|       |
 4957|      0|    case 365: /* possible_array_pair  */
  ------------------
  |  Branch (4957:5): [True: 0, False: 28.9k]
  ------------------
 4958|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4959|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4960|      0|#line 4961 "/src/php-src/Zend/zend_language_parser.c"
 4961|      0|        break;
 4962|       |
 4963|      5|    case 366: /* non_empty_array_pair_list  */
  ------------------
  |  Branch (4963:5): [True: 5, False: 28.9k]
  ------------------
 4964|      5|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4965|      5|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4966|      5|#line 4967 "/src/php-src/Zend/zend_language_parser.c"
 4967|      5|        break;
 4968|       |
 4969|      0|    case 367: /* array_pair  */
  ------------------
  |  Branch (4969:5): [True: 0, False: 28.9k]
  ------------------
 4970|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4971|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4972|      0|#line 4973 "/src/php-src/Zend/zend_language_parser.c"
 4973|      0|        break;
 4974|       |
 4975|    372|    case 368: /* encaps_list  */
  ------------------
  |  Branch (4975:5): [True: 372, False: 28.6k]
  ------------------
 4976|    372|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4977|    372|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4978|    372|#line 4979 "/src/php-src/Zend/zend_language_parser.c"
 4979|    372|        break;
 4980|       |
 4981|      0|    case 369: /* encaps_var  */
  ------------------
  |  Branch (4981:5): [True: 0, False: 28.9k]
  ------------------
 4982|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4983|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4984|      0|#line 4985 "/src/php-src/Zend/zend_language_parser.c"
 4985|      0|        break;
 4986|       |
 4987|     30|    case 370: /* encaps_var_offset  */
  ------------------
  |  Branch (4987:5): [True: 30, False: 28.9k]
  ------------------
 4988|     30|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4989|     30|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4990|     30|#line 4991 "/src/php-src/Zend/zend_language_parser.c"
 4991|     30|        break;
 4992|       |
 4993|      0|    case 371: /* internal_functions_in_yacc  */
  ------------------
  |  Branch (4993:5): [True: 0, False: 28.9k]
  ------------------
 4994|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 4995|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 4996|      0|#line 4997 "/src/php-src/Zend/zend_language_parser.c"
 4997|      0|        break;
 4998|       |
 4999|      1|    case 372: /* isset_variables  */
  ------------------
  |  Branch (4999:5): [True: 1, False: 28.9k]
  ------------------
 5000|      1|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 5001|      1|            { zend_ast_destroy(((*yyvaluep).ast)); }
 5002|      1|#line 5003 "/src/php-src/Zend/zend_language_parser.c"
 5003|      1|        break;
 5004|       |
 5005|      0|    case 373: /* isset_variable  */
  ------------------
  |  Branch (5005:5): [True: 0, False: 28.9k]
  ------------------
 5006|      0|#line 50 "/src/php-src/Zend/zend_language_parser.y"
 5007|      0|            { zend_ast_destroy(((*yyvaluep).ast)); }
 5008|      0|#line 5009 "/src/php-src/Zend/zend_language_parser.c"
 5009|      0|        break;
 5010|       |
 5011|  22.4k|      default:
  ------------------
  |  Branch (5011:7): [True: 22.4k, False: 6.54k]
  ------------------
 5012|  22.4k|        break;
 5013|  28.9k|    }
 5014|  28.9k|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 5015|  28.9k|}

startup_scanner:
  192|  33.5k|{
  193|  33.5k|	CG(parse_error) = 0;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  194|  33.5k|	CG(doc_comment) = NULL;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  195|  33.5k|	CG(extra_fn_flags) = 0;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  196|  33.5k|	zend_stack_init(&SCNG(state_stack), sizeof(int));
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  197|  33.5k|	zend_stack_init(&SCNG(nest_location_stack), sizeof(zend_nest_location));
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  198|  33.5k|	zend_ptr_stack_init(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  199|  33.5k|	SCNG(heredoc_scan_ahead) = 0;
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  200|  33.5k|}
shutdown_scanner:
  207|  33.5k|{
  208|  33.5k|	CG(parse_error) = 0;
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  209|  33.5k|	RESET_DOC_COMMENT();
  ------------------
  |  |   47|  33.5k|#define RESET_DOC_COMMENT() do { \
  |  |   48|  33.5k|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 1, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      1|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      1|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      1|	} \
  |  |   52|  33.5k|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  210|  33.5k|	zend_stack_destroy(&SCNG(state_stack));
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  211|  33.5k|	zend_stack_destroy(&SCNG(nest_location_stack));
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  212|  33.5k|	zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1);
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  213|  33.5k|	zend_ptr_stack_destroy(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  214|  33.5k|	SCNG(heredoc_scan_ahead) = 0;
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  215|  33.5k|	SCNG(on_event) = NULL;
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  216|  33.5k|	SCNG(on_event_context) = NULL;
  ------------------
  |  |   87|  33.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  33.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  217|  33.5k|}
zend_save_lexical_state:
  220|  15.9k|{
  221|  15.9k|	lex_state->yy_leng   = SCNG(yy_leng);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  222|  15.9k|	lex_state->yy_start  = SCNG(yy_start);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  223|  15.9k|	lex_state->yy_text   = SCNG(yy_text);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  224|  15.9k|	lex_state->yy_cursor = SCNG(yy_cursor);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  225|  15.9k|	lex_state->yy_marker = SCNG(yy_marker);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  226|  15.9k|	lex_state->yy_limit  = SCNG(yy_limit);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  227|       |
  228|  15.9k|	lex_state->state_stack = SCNG(state_stack);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  229|  15.9k|	zend_stack_init(&SCNG(state_stack), sizeof(int));
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  230|       |
  231|  15.9k|	lex_state->nest_location_stack = SCNG(nest_location_stack);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  232|  15.9k|	zend_stack_init(&SCNG(nest_location_stack), sizeof(zend_nest_location));
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  233|       |
  234|  15.9k|	lex_state->heredoc_label_stack = SCNG(heredoc_label_stack);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  235|  15.9k|	zend_ptr_stack_init(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  236|       |
  237|  15.9k|	lex_state->in = SCNG(yy_in);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  238|  15.9k|	lex_state->yy_state = YYSTATE;
  ------------------
  |  |   65|  15.9k|#define YYSTATE      YYGETCONDITION()
  |  |  ------------------
  |  |  |  |   58|  15.9k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|  15.9k|	lex_state->filename = CG(compiled_filename);
  ------------------
  |  |   35|  15.9k|# define CG(v) (compiler_globals.v)
  ------------------
  240|  15.9k|	lex_state->lineno = CG(zend_lineno);
  ------------------
  |  |   35|  15.9k|# define CG(v) (compiler_globals.v)
  ------------------
  241|  15.9k|	CG(compiled_filename) = NULL;
  ------------------
  |  |   35|  15.9k|# define CG(v) (compiler_globals.v)
  ------------------
  242|       |
  243|  15.9k|	lex_state->script_org = SCNG(script_org);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  244|  15.9k|	lex_state->script_org_size = SCNG(script_org_size);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  245|  15.9k|	lex_state->script_filtered = SCNG(script_filtered);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  246|  15.9k|	lex_state->script_filtered_size = SCNG(script_filtered_size);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  247|  15.9k|	lex_state->input_filter = SCNG(input_filter);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  248|  15.9k|	lex_state->output_filter = SCNG(output_filter);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  249|  15.9k|	lex_state->script_encoding = SCNG(script_encoding);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  250|       |
  251|  15.9k|	lex_state->on_event = SCNG(on_event);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  252|  15.9k|	lex_state->on_event_context = SCNG(on_event_context);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  253|       |
  254|  15.9k|	lex_state->ast = CG(ast);
  ------------------
  |  |   35|  15.9k|# define CG(v) (compiler_globals.v)
  ------------------
  255|  15.9k|	lex_state->ast_arena = CG(ast_arena);
  ------------------
  |  |   35|  15.9k|# define CG(v) (compiler_globals.v)
  ------------------
  256|  15.9k|}
zend_restore_lexical_state:
  259|  14.7k|{
  260|  14.7k|	SCNG(yy_leng)   = lex_state->yy_leng;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  261|  14.7k|	SCNG(yy_start)  = lex_state->yy_start;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  262|  14.7k|	SCNG(yy_text)   = lex_state->yy_text;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  263|  14.7k|	SCNG(yy_cursor) = lex_state->yy_cursor;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  264|  14.7k|	SCNG(yy_marker) = lex_state->yy_marker;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  265|  14.7k|	SCNG(yy_limit)  = lex_state->yy_limit;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  266|       |
  267|  14.7k|	zend_stack_destroy(&SCNG(state_stack));
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  268|  14.7k|	SCNG(state_stack) = lex_state->state_stack;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  269|       |
  270|  14.7k|	zend_stack_destroy(&SCNG(nest_location_stack));
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  271|  14.7k|	SCNG(nest_location_stack) = lex_state->nest_location_stack;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  272|       |
  273|  14.7k|	zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1);
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  274|  14.7k|	zend_ptr_stack_destroy(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  275|  14.7k|	SCNG(heredoc_label_stack) = lex_state->heredoc_label_stack;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  276|       |
  277|  14.7k|	SCNG(yy_in) = lex_state->in;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  278|  14.7k|	YYSETCONDITION(lex_state->yy_state);
  ------------------
  |  |   59|  14.7k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  ------------------
  |  |  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  279|  14.7k|	CG(zend_lineno) = lex_state->lineno;
  ------------------
  |  |   35|  14.7k|# define CG(v) (compiler_globals.v)
  ------------------
  280|  14.7k|	zend_restore_compiled_filename(lex_state->filename);
  281|       |
  282|  14.7k|	if (SCNG(script_filtered) && SCNG(script_filtered) != lex_state->script_filtered) {
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  29.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 14.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (SCNG(script_filtered) && SCNG(script_filtered) != lex_state->script_filtered) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (282:31): [True: 0, False: 0]
  ------------------
  283|      0|		efree(SCNG(script_filtered));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|      0|		SCNG(script_filtered) = NULL;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  285|      0|	}
  286|  14.7k|	SCNG(script_org) = lex_state->script_org;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  287|  14.7k|	SCNG(script_org_size) = lex_state->script_org_size;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  288|  14.7k|	SCNG(script_filtered) = lex_state->script_filtered;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  289|  14.7k|	SCNG(script_filtered_size) = lex_state->script_filtered_size;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  290|  14.7k|	SCNG(input_filter) = lex_state->input_filter;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  291|  14.7k|	SCNG(output_filter) = lex_state->output_filter;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  292|  14.7k|	SCNG(script_encoding) = lex_state->script_encoding;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  293|       |
  294|  14.7k|	SCNG(on_event) = lex_state->on_event;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  295|  14.7k|	SCNG(on_event_context) = lex_state->on_event_context;
  ------------------
  |  |   87|  14.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  296|       |
  297|  14.7k|	CG(ast) = lex_state->ast;
  ------------------
  |  |   35|  14.7k|# define CG(v) (compiler_globals.v)
  ------------------
  298|  14.7k|	CG(ast_arena) = lex_state->ast_arena;
  ------------------
  |  |   35|  14.7k|# define CG(v) (compiler_globals.v)
  ------------------
  299|       |
  300|       |	RESET_DOC_COMMENT();
  ------------------
  |  |   47|  14.7k|#define RESET_DOC_COMMENT() do { \
  |  |   48|  14.7k|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|  14.7k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 46, False: 14.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|     46|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|     46|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|     46|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|     46|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|     46|	} \
  |  |   52|  14.7k|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 14.7k]
  |  |  ------------------
  ------------------
  301|  14.7k|}
zend_lex_tstring:
  304|    146|{
  305|    146|	unsigned char *end = ident;
  306|    899|	while ((*end >= 'a' && *end <= 'z') || (*end >= 'A' && *end <= 'Z') || *end == '_') {
  ------------------
  |  Branch (306:10): [True: 712, False: 187]
  |  Branch (306:25): [True: 711, False: 1]
  |  Branch (306:42): [True: 46, False: 142]
  |  Branch (306:57): [True: 42, False: 4]
  |  Branch (306:73): [True: 0, False: 146]
  ------------------
  307|    753|		end++;
  308|    753|	}
  309|       |
  310|    146|	size_t length = end - ident;
  311|    146|	if (length == 0) {
  ------------------
  |  Branch (311:6): [True: 1, False: 145]
  ------------------
  312|      1|		ZEND_ASSERT(ident[0] == '<' && ident[1] == '?' && ident[2] == '=');
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (312:3): [True: 0, False: 1]
  |  Branch (312:3): [True: 0, False: 0]
  |  Branch (312:3): [True: 0, False: 0]
  |  Branch (312:3): [True: 1, False: 0]
  |  Branch (312:3): [True: 1, False: 0]
  |  Branch (312:3): [True: 1, False: 0]
  ------------------
  313|      1|		zend_throw_exception(zend_ce_parse_error, "Cannot use \"<?=\" as an identifier", 0);
  314|      1|		return FAILURE;
  315|      1|	}
  316|       |
  317|    145|	if (SCNG(on_event)) {
  ------------------
  |  |   87|    145|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    145|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 145]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|      0|		SCNG(on_event)(ON_FEEDBACK, T_STRING, 0, (char *) ident, length, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_FEEDBACK, T_STRING, 0, (char *) ident, length, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  319|      0|	}
  320|       |
  321|    145|	ZVAL_STRINGL(zv, (char *) ident, length);
  ------------------
  |  |  963|    145|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|    145|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|    145|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|    145|		zval *__z = (z);						\
  |  |  |  | 1107|    145|		zend_string *__s = (s);					\
  |  |  |  | 1108|    145|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|    145|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|    145|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|    145|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    145|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    145|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|    145|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|    145|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|    145|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|    145|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|    145|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 145]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|    145|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 145]
  |  |  ------------------
  ------------------
  322|    145|	return SUCCESS;
  323|    146|}
open_file_for_scanning:
  530|  8.36k|{
  531|  8.36k|	char *buf;
  532|  8.36k|	size_t size;
  533|  8.36k|	zend_string *compiled_filename;
  534|       |
  535|  8.36k|	if (zend_stream_fixup(file_handle, &buf, &size) == FAILURE) {
  ------------------
  |  Branch (535:6): [True: 668, False: 7.69k]
  ------------------
  536|       |		/* Still add it to open_files to make destroy_file_handle work */
  537|    668|		zend_llist_add_element(&CG(open_files), file_handle);
  ------------------
  |  |   35|    668|# define CG(v) (compiler_globals.v)
  ------------------
  538|    668|		file_handle->in_list = 1;
  539|    668|		return FAILURE;
  540|    668|	}
  541|       |
  542|  7.69k|	ZEND_ASSERT(!EG(exception) && "stream_fixup() should have failed");
  ------------------
  |  |  112|  7.69k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (542:2): [True: 0, False: 7.69k]
  |  Branch (542:2): [True: 0, False: 0]
  |  Branch (542:2): [True: 7.03k, False: 664]
  |  Branch (542:2): [True: 7.03k, False: 0]
  ------------------
  543|  7.69k|	zend_llist_add_element(&CG(open_files), file_handle);
  ------------------
  |  |   35|  7.03k|# define CG(v) (compiler_globals.v)
  ------------------
  544|  7.03k|	file_handle->in_list = 1;
  545|       |
  546|       |	/* Reset the scanner for scanning the new file */
  547|  7.03k|	SCNG(yy_in) = file_handle;
  ------------------
  |  |   87|  7.03k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  548|  7.03k|	SCNG(yy_start) = NULL;
  ------------------
  |  |   87|  7.03k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  549|       |
  550|  7.03k|	if (size != (size_t)-1) {
  ------------------
  |  Branch (550:6): [True: 7.03k, False: 0]
  ------------------
  551|  7.03k|		if (CG(multibyte)) {
  ------------------
  |  |   35|  7.03k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 7.03k]
  |  |  ------------------
  ------------------
  552|      0|			SCNG(script_org) = (unsigned char*)buf;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  553|      0|			SCNG(script_org_size) = size;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  554|      0|			SCNG(script_filtered) = NULL;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  555|       |
  556|      0|			zend_multibyte_set_filter(NULL);
  557|       |
  558|      0|			if (SCNG(input_filter)) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  559|      0|				if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              				if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              				if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              				if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              				if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (559:9): [True: 0, False: 0]
  ------------------
  560|      0|					zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected "
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  561|      0|							"encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding)));
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  562|      0|				}
  563|      0|				buf = (char*)SCNG(script_filtered);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  564|      0|				size = SCNG(script_filtered_size);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  565|      0|			}
  566|      0|		}
  567|  7.03k|		SCNG(yy_start) = (unsigned char *)buf;
  ------------------
  |  |   87|  7.03k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  568|  7.03k|		yy_scan_buffer(buf, size);
  569|  7.03k|	} else {
  570|      0|		zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed");
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  571|      0|	}
  572|       |
  573|  7.03k|	if (CG(skip_shebang)) {
  ------------------
  |  |   35|  7.03k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 7.03k]
  |  |  ------------------
  ------------------
  574|      0|		BEGIN(SHEBANG);
  ------------------
  |  |   64|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  575|  7.03k|	} else {
  576|  7.03k|		BEGIN(INITIAL);
  ------------------
  |  |   64|  7.03k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  7.03k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  7.03k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  7.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  577|  7.03k|	}
  578|       |
  579|  7.03k|	if (file_handle->opened_path) {
  ------------------
  |  Branch (579:6): [True: 3, False: 7.02k]
  ------------------
  580|      3|		compiled_filename = zend_string_copy(file_handle->opened_path);
  581|  7.02k|	} else {
  582|  7.02k|		compiled_filename = zend_string_copy(file_handle->filename);
  583|  7.02k|	}
  584|       |
  585|  7.03k|	zend_set_compiled_filename(compiled_filename);
  586|  7.03k|	zend_string_release_ex(compiled_filename, 0);
  587|       |
  588|  7.03k|	SCNG(on_event) = NULL;
  ------------------
  |  |   87|  7.03k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  589|  7.03k|	SCNG(on_event_context) = NULL;
  ------------------
  |  |   87|  7.03k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  590|  7.03k|	RESET_DOC_COMMENT();
  ------------------
  |  |   47|  7.03k|#define RESET_DOC_COMMENT() do { \
  |  |   48|  7.03k|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|  7.03k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 7.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      0|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      0|	} \
  |  |   52|  7.03k|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 7.03k]
  |  |  ------------------
  ------------------
  591|  7.03k|	CG(zend_lineno) = 1;
  ------------------
  |  |   35|  7.03k|# define CG(v) (compiler_globals.v)
  ------------------
  592|  7.03k|	CG(increment_lineno) = 0;
  ------------------
  |  |   35|  7.03k|# define CG(v) (compiler_globals.v)
  ------------------
  593|  7.03k|	return SUCCESS;
  594|  7.03k|}
compile_file:
  645|  8.36k|{
  646|  8.36k|	zend_lex_state original_lex_state;
  647|  8.36k|	zend_op_array *op_array = NULL;
  648|  8.36k|	zend_save_lexical_state(&original_lex_state);
  649|       |
  650|  8.36k|	if (open_file_for_scanning(file_handle)==FAILURE) {
  ------------------
  |  Branch (650:6): [True: 668, False: 7.69k]
  ------------------
  651|    668|		if (!EG(exception)) {
  ------------------
  |  |   45|    668|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (651:7): [True: 665, False: 3]
  ------------------
  652|    665|			if (type==ZEND_REQUIRE) {
  ------------------
  |  | 1086|    665|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (652:8): [True: 662, False: 3]
  ------------------
  653|    662|				zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  431|    662|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
              				zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|    662|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  654|    662|			} else {
  655|      3|				zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  430|      3|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              				zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  656|      3|			}
  657|    665|		}
  658|  7.69k|	} else {
  659|  7.69k|		bool orig_record_errors = EG(record_errors);
  ------------------
  |  |   45|  7.69k|# define EG(v) (executor_globals.v)
  ------------------
  660|  7.69k|		if (!orig_record_errors) {
  ------------------
  |  Branch (660:7): [True: 1, False: 7.69k]
  ------------------
  661|      1|			zend_begin_record_errors();
  662|      1|		}
  663|       |
  664|  7.69k|		op_array = zend_compile(ZEND_USER_FUNCTION);
  665|       |
  666|  7.69k|		if (!orig_record_errors) {
  ------------------
  |  Branch (666:7): [True: 1, False: 7.69k]
  ------------------
  667|      1|			zend_emit_recorded_errors();
  668|      1|			zend_free_recorded_errors();
  669|      1|		}
  670|  7.69k|	}
  671|       |
  672|  8.36k|	zend_restore_lexical_state(&original_lex_state);
  673|  8.36k|	return op_array;
  674|  8.36k|}
zend_compile_string_to_ast:
  677|      1|		zend_string *code, zend_arena **ast_arena, zend_string *filename) {
  678|      1|	zval code_zv;
  679|      1|	bool original_in_compilation;
  680|      1|	zend_lex_state original_lex_state;
  681|      1|	zend_ast *ast;
  682|       |
  683|      1|	ZVAL_STR_COPY(&code_zv, code);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  684|       |
  685|      1|	original_in_compilation = CG(in_compilation);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  686|      1|	CG(in_compilation) = 1;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  687|       |
  688|      1|	zend_save_lexical_state(&original_lex_state);
  689|      1|	zend_prepare_string_for_scanning(&code_zv, filename);
  690|      1|	CG(ast) = NULL;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  691|      1|	CG(ast_arena) = zend_arena_create(1024 * 32);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  692|      1|	LANG_SCNG(yy_state) = yycINITIAL;
  ------------------
  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  693|       |
  694|      1|	if (zendparse() != 0) {
  ------------------
  |  Branch (694:6): [True: 0, False: 1]
  ------------------
  695|      0|		zend_ast_destroy(CG(ast));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  696|      0|		zend_arena_destroy(CG(ast_arena));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  697|      0|		CG(ast) = NULL;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  698|      0|	}
  699|       |
  700|       |	/* restore_lexical_state changes CG(ast) and CG(ast_arena) */
  701|      1|	ast = CG(ast);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  702|      1|	*ast_arena = CG(ast_arena);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  703|       |
  704|      1|	zend_restore_lexical_state(&original_lex_state);
  705|      1|	CG(in_compilation) = original_in_compilation;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  706|       |
  707|      1|	zval_ptr_dtor_str(&code_zv);
  708|       |
  709|      1|	return ast;
  710|      1|}
compile_filename:
  713|  3.36k|{
  714|  3.36k|	zend_file_handle file_handle;
  715|  3.36k|	zend_op_array *retval;
  716|  3.36k|	zend_string *opened_path = NULL;
  717|       |
  718|  3.36k|	zend_stream_init_filename_ex(&file_handle, filename);
  719|       |
  720|  3.36k|	retval = zend_compile_file(&file_handle, type);
  721|  3.36k|	if (retval && file_handle.handle.stream.handle) {
  ------------------
  |  Branch (721:6): [True: 3, False: 3.35k]
  |  Branch (721:16): [True: 3, False: 0]
  ------------------
  722|      3|		if (!file_handle.opened_path) {
  ------------------
  |  Branch (722:7): [True: 1, False: 2]
  ------------------
  723|      1|			file_handle.opened_path = opened_path = zend_string_copy(filename);
  724|      1|		}
  725|       |
  726|      3|		zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  727|       |
  728|      3|		if (opened_path) {
  ------------------
  |  Branch (728:7): [True: 1, False: 2]
  ------------------
  729|      1|			zend_string_release_ex(opened_path, 0);
  730|      1|		}
  731|      3|	}
  732|  3.36k|	zend_destroy_file_handle(&file_handle);
  733|       |
  734|  3.36k|	return retval;
  735|  3.36k|}
zend_prepare_string_for_scanning:
  738|  3.44k|{
  739|  3.44k|	char *buf;
  740|  3.44k|	size_t size, old_len;
  741|       |
  742|       |	/* enforce ZEND_MMAP_AHEAD trailing NULLs for flex... */
  743|  3.44k|	old_len = Z_STRLEN_P(str);
  ------------------
  |  |  988|  3.44k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  3.44k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  3.44k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|  3.44k|	Z_STR_P(str) = zend_string_extend(Z_STR_P(str), old_len + ZEND_MMAP_AHEAD, 0);
  ------------------
  |  |  982|  3.44k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  3.44k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              	Z_STR_P(str) = zend_string_extend(Z_STR_P(str), old_len + ZEND_MMAP_AHEAD, 0);
  ------------------
  |  |  982|  3.44k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  3.44k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              	Z_STR_P(str) = zend_string_extend(Z_STR_P(str), old_len + ZEND_MMAP_AHEAD, 0);
  ------------------
  |  |   36|  3.44k|#define ZEND_MMAP_AHEAD 32
  ------------------
  745|  3.44k|	Z_TYPE_INFO_P(str) = IS_STRING_EX;
  ------------------
  |  |  678|  3.44k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|  3.44k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	Z_TYPE_INFO_P(str) = IS_STRING_EX;
  ------------------
  |  |  828|  3.44k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  3.44k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|  3.44k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|  3.44k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
  746|  3.44k|	memset(Z_STRVAL_P(str) + old_len, 0, ZEND_MMAP_AHEAD + 1);
  ------------------
  |  |  985|  3.44k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  3.44k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  3.44k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	memset(Z_STRVAL_P(str) + old_len, 0, ZEND_MMAP_AHEAD + 1);
  ------------------
  |  |   36|  3.44k|#define ZEND_MMAP_AHEAD 32
  ------------------
  747|       |
  748|  3.44k|	SCNG(yy_in) = NULL;
  ------------------
  |  |   87|  3.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  749|  3.44k|	SCNG(yy_start) = NULL;
  ------------------
  |  |   87|  3.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  750|       |
  751|  3.44k|	buf = Z_STRVAL_P(str);
  ------------------
  |  |  985|  3.44k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  3.44k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  3.44k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  752|  3.44k|	size = old_len;
  753|       |
  754|  3.44k|	if (CG(multibyte)) {
  ------------------
  |  |   35|  3.44k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 3.44k]
  |  |  ------------------
  ------------------
  755|      0|		SCNG(script_org) = (unsigned char*)buf;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  756|      0|		SCNG(script_org_size) = size;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  757|      0|		SCNG(script_filtered) = NULL;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  758|       |
  759|      0|		zend_multibyte_set_filter(zend_multibyte_get_internal_encoding());
  760|       |
  761|      0|		if (SCNG(input_filter)) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  762|      0|			if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              			if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              			if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              			if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              			if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (762:8): [True: 0, False: 0]
  ------------------
  763|      0|				zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected "
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  764|      0|						"encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding)));
  ------------------
  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
  765|      0|			}
  766|      0|			buf = (char*)SCNG(script_filtered);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  767|      0|			size = SCNG(script_filtered_size);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  768|      0|		}
  769|      0|	}
  770|       |
  771|  3.44k|	yy_scan_buffer(buf, size);
  772|  3.44k|	zend_set_compiled_filename(filename);
  773|  3.44k|	CG(zend_lineno) = 1;
  ------------------
  |  |   35|  3.44k|# define CG(v) (compiler_globals.v)
  ------------------
  774|  3.44k|	CG(increment_lineno) = 0;
  ------------------
  |  |   35|  3.44k|# define CG(v) (compiler_globals.v)
  ------------------
  775|  3.44k|	SCNG(on_event) = NULL;
  ------------------
  |  |   87|  3.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  776|  3.44k|	SCNG(on_event_context) = NULL;
  ------------------
  |  |   87|  3.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  777|       |	RESET_DOC_COMMENT();
  ------------------
  |  |   47|  3.44k|#define RESET_DOC_COMMENT() do { \
  |  |   48|  3.44k|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|  3.44k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 3.44k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      0|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      0|	} \
  |  |   52|  3.44k|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 3.44k]
  |  |  ------------------
  ------------------
  778|  3.44k|}
zend_get_scanned_file_offset:
  782|      7|{
  783|      7|	size_t offset = SCNG(yy_cursor) - SCNG(yy_start);
  ------------------
  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              	size_t offset = SCNG(yy_cursor) - SCNG(yy_start);
  ------------------
  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  784|      7|	if (SCNG(input_filter)) {
  ------------------
  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|      0|		size_t original_offset = offset, length = 0;
  786|      0|		do {
  787|      0|			unsigned char *p = NULL;
  788|      0|			if ((size_t)-1 == SCNG(input_filter)(&p, &length, SCNG(script_org), offset)) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              			if ((size_t)-1 == SCNG(input_filter)(&p, &length, SCNG(script_org), offset)) {
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (788:8): [True: 0, False: 0]
  ------------------
  789|      0|				return (size_t)-1;
  790|      0|			}
  791|      0|			efree(p);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  792|      0|			if (length > original_offset) {
  ------------------
  |  Branch (792:8): [True: 0, False: 0]
  ------------------
  793|      0|				offset--;
  794|      0|			} else if (length < original_offset) {
  ------------------
  |  Branch (794:15): [True: 0, False: 0]
  ------------------
  795|      0|				offset++;
  796|      0|			}
  797|      0|		} while (original_offset != length);
  ------------------
  |  Branch (797:12): [True: 0, False: 0]
  ------------------
  798|      0|	}
  799|      7|	return offset;
  800|      7|}
compile_string:
  803|     38|{
  804|     38|	zend_lex_state original_lex_state;
  805|     38|	zend_op_array *op_array = NULL;
  806|     38|	zval tmp;
  807|     38|	zend_string *filename_str;
  808|       |
  809|     38|	if (ZSTR_LEN(source_string) == 0) {
  ------------------
  |  |   68|     38|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (809:6): [True: 1, False: 37]
  ------------------
  810|      1|		return NULL;
  811|      1|	}
  812|       |
  813|     37|	ZVAL_STR_COPY(&tmp, source_string);
  ------------------
  |  | 1112|     37|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     37|		zval *__z = (z);								\
  |  | 1114|     37|		zend_string *__s = (s);							\
  |  | 1115|     37|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     37|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     37|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     37|		/* interned strings support */					\
  |  | 1117|     37|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 37]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     37|		} else {										\
  |  | 1120|     37|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     37|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     37|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     37|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     37|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     37|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     37|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     37|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     37|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     37|		}												\
  |  | 1123|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
  814|       |
  815|     37|	zend_save_lexical_state(&original_lex_state);
  816|     37|	filename_str = zend_string_init(filename, strlen(filename), 0);
  817|     37|	zend_prepare_string_for_scanning(&tmp, filename_str);
  818|     37|	zend_string_release(filename_str);
  819|       |
  820|     37|	switch (position) {
  ------------------
  |  Branch (820:10): [True: 37, False: 0]
  ------------------
  821|      0|		case ZEND_COMPILE_POSITION_AT_SHEBANG:
  ------------------
  |  Branch (821:3): [True: 0, False: 37]
  ------------------
  822|      0|			BEGIN(SHEBANG);
  ------------------
  |  |   64|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  823|      0|			break;
  824|      0|		case ZEND_COMPILE_POSITION_AT_OPEN_TAG:
  ------------------
  |  Branch (824:3): [True: 0, False: 37]
  ------------------
  825|      0|			BEGIN(INITIAL);
  ------------------
  |  |   64|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  826|      0|			break;
  827|     37|		case ZEND_COMPILE_POSITION_AFTER_OPEN_TAG:
  ------------------
  |  Branch (827:3): [True: 37, False: 0]
  ------------------
  828|     37|			BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|     37|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|     37|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  829|     37|			break;
  830|     37|	}
  831|       |
  832|     37|	op_array = zend_compile(ZEND_EVAL_CODE);
  833|       |
  834|     37|	zend_restore_lexical_state(&original_lex_state);
  835|     37|	zval_ptr_dtor(&tmp);
  836|       |
  837|     37|	return op_array;
  838|     37|}
highlight_string:
  865|  3.40k|{
  866|  3.40k|	zend_lex_state original_lex_state;
  867|  3.40k|	zval str_zv;
  868|  3.40k|	zend_string *filename_str = zend_string_init(filename, strlen(filename), 0);
  869|  3.40k|	ZVAL_STR_COPY(&str_zv, str);
  ------------------
  |  | 1112|  3.40k|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|  3.40k|		zval *__z = (z);								\
  |  | 1114|  3.40k|		zend_string *__s = (s);							\
  |  | 1115|  3.40k|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|  3.40k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  3.40k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|  3.40k|		/* interned strings support */					\
  |  | 1117|  3.40k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 3.40k]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|  3.40k|		} else {										\
  |  | 1120|  3.40k|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|  3.40k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|  3.40k|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|  3.40k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.40k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|  3.40k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  3.40k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  3.40k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  3.40k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|  3.40k|		}												\
  |  | 1123|  3.40k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3.40k]
  |  |  ------------------
  ------------------
  870|  3.40k|	zend_save_lexical_state(&original_lex_state);
  871|  3.40k|	zend_prepare_string_for_scanning(&str_zv, filename_str);
  872|  3.40k|	zend_string_release(filename_str);
  873|  3.40k|	BEGIN(INITIAL);
  ------------------
  |  |   64|  3.40k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  3.40k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.40k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  874|  3.40k|	zend_highlight(syntax_highlighter_ini);
  875|  3.40k|	if (SCNG(script_filtered)) {
  ------------------
  |  |   87|  3.40k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 3.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  876|      0|		efree(SCNG(script_filtered));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  877|      0|		SCNG(script_filtered) = NULL;
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  878|      0|	}
  879|  3.40k|	zend_restore_lexical_state(&original_lex_state);
  880|  3.40k|	zval_ptr_dtor(&str_zv);
  881|  3.40k|}
lex_scan:
 1364|   701k|{
 1365|   701k|int token;
 1366|   701k|int offset;
 1367|   701k|uint32_t start_line = CG(zend_lineno);
  ------------------
  |  |   35|   701k|# define CG(v) (compiler_globals.v)
  ------------------
 1368|       |
 1369|   701k|	ZVAL_UNDEF(zendlval);
  ------------------
  |  | 1055|   701k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|   701k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|   701k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   701k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|   701k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|   701k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 701k]
  |  |  ------------------
  ------------------
 1370|   774k|restart:
 1371|   774k|	SCNG(yy_text) = YYCURSOR;
  ------------------
  |  |   87|   774k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|   774k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              	SCNG(yy_text) = YYCURSOR;
  ------------------
  |  |   54|   774k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   774k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   774k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1372|       |
 1373|       |
 1374|   774k|#line 1375 "Zend/zend_language_scanner.c"
 1375|   774k|{
 1376|   774k|	YYCTYPE yych;
  ------------------
  |  |   52|   774k|#define YYCTYPE   unsigned char
  ------------------
 1377|   774k|	unsigned int yyaccept = 0;
 1378|   774k|	if (YYGETCONDITION() < 5) {
  ------------------
  |  |   58|   774k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|   774k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   774k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1378:6): [True: 736k, False: 38.2k]
  ------------------
 1379|   736k|		if (YYGETCONDITION() < 2) {
  ------------------
  |  |   58|   736k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|   736k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   736k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1379:7): [True: 702k, False: 33.6k]
  ------------------
 1380|   702k|			if (YYGETCONDITION() < 1) {
  ------------------
  |  |   58|   702k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|   702k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   702k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1380:8): [True: 701k, False: 1.62k]
  ------------------
 1381|   701k|				goto yyc_ST_IN_SCRIPTING;
 1382|   701k|			} else {
 1383|  1.62k|				goto yyc_ST_LOOKING_FOR_PROPERTY;
 1384|  1.62k|			}
 1385|   702k|		} else {
 1386|  33.6k|			if (YYGETCONDITION() < 3) {
  ------------------
  |  |   58|  33.6k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  33.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  33.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1386:8): [True: 3.95k, False: 29.6k]
  ------------------
 1387|  3.95k|				goto yyc_ST_BACKQUOTE;
 1388|  29.6k|			} else {
 1389|  29.6k|				if (YYGETCONDITION() < 4) {
  ------------------
  |  |   58|  29.6k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  29.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  29.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1389:9): [True: 3.95k, False: 25.7k]
  ------------------
 1390|  3.95k|					goto yyc_ST_DOUBLE_QUOTES;
 1391|  25.7k|				} else {
 1392|  25.7k|					goto yyc_ST_HEREDOC;
 1393|  25.7k|				}
 1394|  29.6k|			}
 1395|  33.6k|		}
 1396|   736k|	} else {
 1397|  38.2k|		if (YYGETCONDITION() < 8) {
  ------------------
  |  |   58|  38.2k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  38.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  38.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1397:7): [True: 18.2k, False: 19.9k]
  ------------------
 1398|  18.2k|			if (YYGETCONDITION() < 6) {
  ------------------
  |  |   58|  18.2k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  18.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  18.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1398:8): [True: 16.3k, False: 1.94k]
  ------------------
 1399|  16.3k|				goto yyc_ST_LOOKING_FOR_VARNAME;
 1400|  16.3k|			} else {
 1401|  1.94k|				if (YYGETCONDITION() < 7) {
  ------------------
  |  |   58|  1.94k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  1.94k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1401:9): [True: 1.94k, False: 0]
  ------------------
 1402|  1.94k|					goto yyc_ST_VAR_OFFSET;
 1403|  1.94k|				} else {
 1404|      0|					goto yyc_SHEBANG;
 1405|      0|				}
 1406|  1.94k|			}
 1407|  19.9k|		} else {
 1408|  19.9k|			if (YYGETCONDITION() < 9) {
  ------------------
  |  |   58|  19.9k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  19.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  19.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1408:8): [True: 19.3k, False: 638]
  ------------------
 1409|  19.3k|				goto yyc_INITIAL;
 1410|  19.3k|			} else {
 1411|    638|				if (YYGETCONDITION() < 10) {
  ------------------
  |  |   58|    638|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|    638|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    638|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1411:9): [True: 534, False: 104]
  ------------------
 1412|    534|					goto yyc_ST_END_HEREDOC;
 1413|    534|				} else {
 1414|    104|					goto yyc_ST_NOWDOC;
 1415|    104|				}
 1416|    638|			}
 1417|  19.9k|		}
 1418|  38.2k|	}
 1419|       |/* *********************************** */
 1420|   701k|yyc_ST_IN_SCRIPTING:
 1421|   701k|	{
 1422|   701k|		static const unsigned char yybm[] = {
 1423|       |			/* table 1 .. 8: 0 */
 1424|   701k|			  0, 134, 134, 134, 134, 134, 134, 134, 
 1425|   701k|			134, 135,   4, 134, 134,   4, 134, 134, 
 1426|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1427|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1428|   701k|			135, 134, 134, 134, 134, 134, 134, 134, 
 1429|   701k|			134, 134,  66, 134, 134, 134, 134, 134, 
 1430|   701k|			190, 190, 182, 182, 182, 182, 182, 182, 
 1431|   701k|			166, 166, 134, 134, 134, 134, 134, 134, 
 1432|   701k|			134, 166, 166, 166, 166, 166, 166, 134, 
 1433|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1434|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1435|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1436|   701k|			134, 166, 166, 166, 166, 166, 166, 134, 
 1437|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1438|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1439|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1440|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1441|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1442|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1443|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1444|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1445|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1446|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1447|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1448|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1449|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1450|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1451|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1452|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1453|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1454|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1455|   701k|			134, 134, 134, 134, 134, 134, 134, 134, 
 1456|       |			/* table 9 .. 11: 256 */
 1457|   701k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 1458|   701k|			  0,  32,  32,   0,   0,  32,   0,   0, 
 1459|   701k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 1460|   701k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 1461|   701k|			 32,   0,   0,   0,   0,   0,   0,   0, 
 1462|   701k|			  0,   0,   0,   0,   0,   0,   0,   0, 
 1463|   701k|			192, 192, 192, 192, 192, 192, 192, 192, 
 1464|   701k|			192, 192,   0,   0,   0,   0,   0,   0, 
 1465|   701k|			  0, 128, 128, 128, 128, 128, 128, 128, 
 1466|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1467|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1468|   701k|			128, 128, 128,   0,   0,   0,   0, 128, 
 1469|   701k|			  0, 128, 128, 128, 128, 128, 128, 128, 
 1470|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1471|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1472|   701k|			128, 128, 128,   0,   0,   0,   0,   0, 
 1473|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1474|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1475|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1476|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1477|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1478|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1479|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1480|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1481|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1482|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1483|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1484|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1485|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1486|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1487|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1488|   701k|			128, 128, 128, 128, 128, 128, 128, 128, 
 1489|   701k|		};
 1490|   701k|		YYDEBUG(1, *YYCURSOR);
 1491|   701k|		YYFILL(16);
  ------------------
  |  |   53|   701k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|   701k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|   701k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|   701k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|   701k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|   701k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|   701k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|   701k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 701k]
  |  |  ------------------
  ------------------
 1492|   701k|		yych = *YYCURSOR;
  ------------------
  |  |   54|   701k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   701k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   701k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1493|   701k|		if (yybm[256+yych] & 32) {
  ------------------
  |  Branch (1493:7): [True: 126k, False: 574k]
  ------------------
 1494|   126k|			goto yy5;
 1495|   126k|		}
 1496|   574k|		switch (yych) {
 1497|  54.1k|		case 0x00:
  ------------------
  |  Branch (1497:3): [True: 54.1k, False: 520k]
  ------------------
 1498|  57.4k|		case 0x01:
  ------------------
  |  Branch (1498:3): [True: 3.30k, False: 570k]
  ------------------
 1499|  61.0k|		case 0x02:
  ------------------
  |  Branch (1499:3): [True: 3.61k, False: 570k]
  ------------------
 1500|  62.9k|		case 0x03:
  ------------------
  |  Branch (1500:3): [True: 1.86k, False: 572k]
  ------------------
 1501|  63.1k|		case 0x04:
  ------------------
  |  Branch (1501:3): [True: 288, False: 573k]
  ------------------
 1502|  63.6k|		case 0x05:
  ------------------
  |  Branch (1502:3): [True: 430, False: 573k]
  ------------------
 1503|  63.7k|		case 0x06:
  ------------------
  |  Branch (1503:3): [True: 117, False: 574k]
  ------------------
 1504|  63.9k|		case 0x07:
  ------------------
  |  Branch (1504:3): [True: 205, False: 573k]
  ------------------
 1505|  64.4k|		case 0x08:
  ------------------
  |  Branch (1505:3): [True: 550, False: 573k]
  ------------------
 1506|  64.4k|		case '\t':
  ------------------
  |  Branch (1506:3): [True: 0, False: 574k]
  ------------------
 1507|  64.4k|		case '\n':
  ------------------
  |  Branch (1507:3): [True: 0, False: 574k]
  ------------------
 1508|  65.0k|		case '\v':
  ------------------
  |  Branch (1508:3): [True: 531, False: 573k]
  ------------------
 1509|  67.6k|		case '\f':
  ------------------
  |  Branch (1509:3): [True: 2.66k, False: 571k]
  ------------------
 1510|  67.6k|		case '\r':
  ------------------
  |  Branch (1510:3): [True: 0, False: 574k]
  ------------------
 1511|  69.0k|		case 0x0E:
  ------------------
  |  Branch (1511:3): [True: 1.32k, False: 572k]
  ------------------
 1512|  69.5k|		case 0x0F:
  ------------------
  |  Branch (1512:3): [True: 563, False: 573k]
  ------------------
 1513|  70.0k|		case 0x10:
  ------------------
  |  Branch (1513:3): [True: 511, False: 573k]
  ------------------
 1514|  70.3k|		case 0x11:
  ------------------
  |  Branch (1514:3): [True: 293, False: 573k]
  ------------------
 1515|  70.6k|		case 0x12:
  ------------------
  |  Branch (1515:3): [True: 262, False: 573k]
  ------------------
 1516|  70.7k|		case 0x13:
  ------------------
  |  Branch (1516:3): [True: 107, False: 574k]
  ------------------
 1517|  70.8k|		case 0x14:
  ------------------
  |  Branch (1517:3): [True: 66, False: 574k]
  ------------------
 1518|  70.8k|		case 0x15:
  ------------------
  |  Branch (1518:3): [True: 29, False: 574k]
  ------------------
 1519|  72.0k|		case 0x16:
  ------------------
  |  Branch (1519:3): [True: 1.18k, False: 572k]
  ------------------
 1520|  73.3k|		case 0x17:
  ------------------
  |  Branch (1520:3): [True: 1.32k, False: 572k]
  ------------------
 1521|  73.9k|		case 0x18:
  ------------------
  |  Branch (1521:3): [True: 629, False: 573k]
  ------------------
 1522|  74.0k|		case 0x19:
  ------------------
  |  Branch (1522:3): [True: 63, False: 574k]
  ------------------
 1523|  74.1k|		case 0x1A:
  ------------------
  |  Branch (1523:3): [True: 73, False: 574k]
  ------------------
 1524|  74.1k|		case 0x1B:
  ------------------
  |  Branch (1524:3): [True: 53, False: 574k]
  ------------------
 1525|  74.5k|		case 0x1C:
  ------------------
  |  Branch (1525:3): [True: 363, False: 573k]
  ------------------
 1526|  74.6k|		case 0x1D:
  ------------------
  |  Branch (1526:3): [True: 133, False: 574k]
  ------------------
 1527|  74.7k|		case 0x1E:
  ------------------
  |  Branch (1527:3): [True: 67, False: 574k]
  ------------------
 1528|  74.7k|		case 0x1F:
  ------------------
  |  Branch (1528:3): [True: 34, False: 574k]
  ------------------
 1529|  75.3k|		case 0x7F:	goto yy3;
  ------------------
  |  Branch (1529:3): [True: 576, False: 573k]
  ------------------
 1530|      0|		case ' ':
  ------------------
  |  Branch (1530:3): [True: 0, False: 574k]
  ------------------
 1531|  7.93k|		case '!':	goto yy8;
  ------------------
  |  Branch (1531:3): [True: 7.93k, False: 566k]
  ------------------
 1532|  6.28k|		case '"':	goto yy10;
  ------------------
  |  Branch (1532:3): [True: 6.28k, False: 567k]
  ------------------
 1533|  7.12k|		case '#':	goto yy12;
  ------------------
  |  Branch (1533:3): [True: 7.12k, False: 567k]
  ------------------
 1534|  17.0k|		case '$':	goto yy14;
  ------------------
  |  Branch (1534:3): [True: 17.0k, False: 557k]
  ------------------
 1535|    426|		case '%':	goto yy15;
  ------------------
  |  Branch (1535:3): [True: 426, False: 573k]
  ------------------
 1536|  2.09k|		case '&':	goto yy16;
  ------------------
  |  Branch (1536:3): [True: 2.09k, False: 572k]
  ------------------
 1537|  6.28k|		case '\'':	goto yy18;
  ------------------
  |  Branch (1537:3): [True: 6.28k, False: 567k]
  ------------------
 1538|  35.9k|		case '(':	goto yy20;
  ------------------
  |  Branch (1538:3): [True: 35.9k, False: 538k]
  ------------------
 1539|  19.0k|		case ')':
  ------------------
  |  Branch (1539:3): [True: 19.0k, False: 555k]
  ------------------
 1540|  21.1k|		case ']':	goto yy22;
  ------------------
  |  Branch (1540:3): [True: 2.09k, False: 572k]
  ------------------
 1541|  5.19k|		case '*':	goto yy24;
  ------------------
  |  Branch (1541:3): [True: 5.19k, False: 568k]
  ------------------
 1542|  25.0k|		case '+':	goto yy25;
  ------------------
  |  Branch (1542:3): [True: 25.0k, False: 549k]
  ------------------
 1543|  4.27k|		case ',':
  ------------------
  |  Branch (1543:3): [True: 4.27k, False: 569k]
  ------------------
 1544|  36.2k|		case ';':
  ------------------
  |  Branch (1544:3): [True: 31.9k, False: 542k]
  ------------------
 1545|  41.5k|		case '@':
  ------------------
  |  Branch (1545:3): [True: 5.28k, False: 568k]
  ------------------
 1546|  42.6k|		case '~':	goto yy26;
  ------------------
  |  Branch (1546:3): [True: 1.12k, False: 573k]
  ------------------
 1547|  9.02k|		case '-':	goto yy27;
  ------------------
  |  Branch (1547:3): [True: 9.02k, False: 565k]
  ------------------
 1548|  3.65k|		case '.':	goto yy28;
  ------------------
  |  Branch (1548:3): [True: 3.65k, False: 570k]
  ------------------
 1549|  6.97k|		case '/':	goto yy29;
  ------------------
  |  Branch (1549:3): [True: 6.97k, False: 567k]
  ------------------
 1550|  4.12k|		case '0':	goto yy30;
  ------------------
  |  Branch (1550:3): [True: 4.12k, False: 570k]
  ------------------
 1551|  4.65k|		case '1':
  ------------------
  |  Branch (1551:3): [True: 4.65k, False: 569k]
  ------------------
 1552|  11.3k|		case '2':
  ------------------
  |  Branch (1552:3): [True: 6.67k, False: 567k]
  ------------------
 1553|  13.3k|		case '3':
  ------------------
  |  Branch (1553:3): [True: 2.06k, False: 572k]
  ------------------
 1554|  19.9k|		case '4':
  ------------------
  |  Branch (1554:3): [True: 6.50k, False: 567k]
  ------------------
 1555|  20.1k|		case '5':
  ------------------
  |  Branch (1555:3): [True: 262, False: 573k]
  ------------------
 1556|  20.5k|		case '6':
  ------------------
  |  Branch (1556:3): [True: 354, False: 573k]
  ------------------
 1557|  25.1k|		case '7':
  ------------------
  |  Branch (1557:3): [True: 4.65k, False: 569k]
  ------------------
 1558|  25.5k|		case '8':
  ------------------
  |  Branch (1558:3): [True: 344, False: 573k]
  ------------------
 1559|  28.4k|		case '9':	goto yy32;
  ------------------
  |  Branch (1559:3): [True: 2.94k, False: 571k]
  ------------------
 1560|  3.51k|		case ':':	goto yy34;
  ------------------
  |  Branch (1560:3): [True: 3.51k, False: 570k]
  ------------------
 1561|  63.2k|		case '<':	goto yy35;
  ------------------
  |  Branch (1561:3): [True: 63.2k, False: 510k]
  ------------------
 1562|  14.8k|		case '=':	goto yy36;
  ------------------
  |  Branch (1562:3): [True: 14.8k, False: 559k]
  ------------------
 1563|    677|		case '>':	goto yy37;
  ------------------
  |  Branch (1563:3): [True: 677, False: 573k]
  ------------------
 1564|  28.2k|		case '?':	goto yy38;
  ------------------
  |  Branch (1564:3): [True: 28.2k, False: 545k]
  ------------------
 1565|  1.02k|		case 'A':
  ------------------
  |  Branch (1565:3): [True: 1.02k, False: 573k]
  ------------------
 1566|  2.96k|		case 'a':	goto yy39;
  ------------------
  |  Branch (1566:3): [True: 1.93k, False: 572k]
  ------------------
 1567|  1.22k|		case 'B':
  ------------------
  |  Branch (1567:3): [True: 1.22k, False: 572k]
  ------------------
 1568|  3.25k|		case 'b':	goto yy41;
  ------------------
  |  Branch (1568:3): [True: 2.02k, False: 572k]
  ------------------
 1569|  2.67k|		case 'C':
  ------------------
  |  Branch (1569:3): [True: 2.67k, False: 571k]
  ------------------
 1570|  9.04k|		case 'c':	goto yy42;
  ------------------
  |  Branch (1570:3): [True: 6.37k, False: 567k]
  ------------------
 1571|    850|		case 'D':
  ------------------
  |  Branch (1571:3): [True: 850, False: 573k]
  ------------------
 1572|  1.50k|		case 'd':	goto yy43;
  ------------------
  |  Branch (1572:3): [True: 655, False: 573k]
  ------------------
 1573|    607|		case 'E':
  ------------------
  |  Branch (1573:3): [True: 607, False: 573k]
  ------------------
 1574|  5.14k|		case 'e':	goto yy44;
  ------------------
  |  Branch (1574:3): [True: 4.53k, False: 569k]
  ------------------
 1575|  1.18k|		case 'F':
  ------------------
  |  Branch (1575:3): [True: 1.18k, False: 572k]
  ------------------
 1576|  9.62k|		case 'f':	goto yy45;
  ------------------
  |  Branch (1576:3): [True: 8.44k, False: 565k]
  ------------------
 1577|    139|		case 'G':
  ------------------
  |  Branch (1577:3): [True: 139, False: 574k]
  ------------------
 1578|  3.75k|		case 'g':	goto yy46;
  ------------------
  |  Branch (1578:3): [True: 3.61k, False: 570k]
  ------------------
 1579|  5.00k|		case 'I':
  ------------------
  |  Branch (1579:3): [True: 5.00k, False: 569k]
  ------------------
 1580|  10.9k|		case 'i':	goto yy49;
  ------------------
  |  Branch (1580:3): [True: 5.90k, False: 568k]
  ------------------
 1581|    205|		case 'L':
  ------------------
  |  Branch (1581:3): [True: 205, False: 573k]
  ------------------
 1582|    435|		case 'l':	goto yy50;
  ------------------
  |  Branch (1582:3): [True: 230, False: 573k]
  ------------------
 1583|    126|		case 'M':
  ------------------
  |  Branch (1583:3): [True: 126, False: 574k]
  ------------------
 1584|    743|		case 'm':	goto yy51;
  ------------------
  |  Branch (1584:3): [True: 617, False: 573k]
  ------------------
 1585|    142|		case 'N':
  ------------------
  |  Branch (1585:3): [True: 142, False: 574k]
  ------------------
 1586|  2.82k|		case 'n':	goto yy52;
  ------------------
  |  Branch (1586:3): [True: 2.68k, False: 571k]
  ------------------
 1587|     74|		case 'O':
  ------------------
  |  Branch (1587:3): [True: 74, False: 574k]
  ------------------
 1588|    552|		case 'o':	goto yy53;
  ------------------
  |  Branch (1588:3): [True: 478, False: 573k]
  ------------------
 1589|    699|		case 'P':
  ------------------
  |  Branch (1589:3): [True: 699, False: 573k]
  ------------------
 1590|  11.0k|		case 'p':	goto yy54;
  ------------------
  |  Branch (1590:3): [True: 10.3k, False: 563k]
  ------------------
 1591|    622|		case 'R':
  ------------------
  |  Branch (1591:3): [True: 622, False: 573k]
  ------------------
 1592|  5.10k|		case 'r':	goto yy55;
  ------------------
  |  Branch (1592:3): [True: 4.48k, False: 569k]
  ------------------
 1593|    225|		case 'S':
  ------------------
  |  Branch (1593:3): [True: 225, False: 573k]
  ------------------
 1594|  2.51k|		case 's':	goto yy56;
  ------------------
  |  Branch (1594:3): [True: 2.28k, False: 571k]
  ------------------
 1595|    889|		case 'T':
  ------------------
  |  Branch (1595:3): [True: 889, False: 573k]
  ------------------
 1596|  4.29k|		case 't':	goto yy57;
  ------------------
  |  Branch (1596:3): [True: 3.40k, False: 570k]
  ------------------
 1597|    106|		case 'U':
  ------------------
  |  Branch (1597:3): [True: 106, False: 574k]
  ------------------
 1598|  1.00k|		case 'u':	goto yy58;
  ------------------
  |  Branch (1598:3): [True: 902, False: 573k]
  ------------------
 1599|    258|		case 'V':
  ------------------
  |  Branch (1599:3): [True: 258, False: 573k]
  ------------------
 1600|  2.58k|		case 'v':	goto yy59;
  ------------------
  |  Branch (1600:3): [True: 2.33k, False: 571k]
  ------------------
 1601|     91|		case 'W':
  ------------------
  |  Branch (1601:3): [True: 91, False: 574k]
  ------------------
 1602|    155|		case 'w':	goto yy60;
  ------------------
  |  Branch (1602:3): [True: 64, False: 574k]
  ------------------
 1603|    508|		case 'X':
  ------------------
  |  Branch (1603:3): [True: 508, False: 573k]
  ------------------
 1604|    594|		case 'x':	goto yy61;
  ------------------
  |  Branch (1604:3): [True: 86, False: 574k]
  ------------------
 1605|    111|		case 'Y':
  ------------------
  |  Branch (1605:3): [True: 111, False: 574k]
  ------------------
 1606|  2.01k|		case 'y':	goto yy62;
  ------------------
  |  Branch (1606:3): [True: 1.90k, False: 572k]
  ------------------
 1607|  7.02k|		case '[':	goto yy63;
  ------------------
  |  Branch (1607:3): [True: 7.02k, False: 567k]
  ------------------
 1608|  1.50k|		case '\\':	goto yy64;
  ------------------
  |  Branch (1608:3): [True: 1.50k, False: 572k]
  ------------------
 1609|  5.94k|		case '^':	goto yy66;
  ------------------
  |  Branch (1609:3): [True: 5.94k, False: 568k]
  ------------------
 1610|  1.67k|		case '_':	goto yy67;
  ------------------
  |  Branch (1610:3): [True: 1.67k, False: 572k]
  ------------------
 1611|  1.89k|		case '`':	goto yy68;
  ------------------
  |  Branch (1611:3): [True: 1.89k, False: 572k]
  ------------------
 1612|  9.85k|		case '{':	goto yy70;
  ------------------
  |  Branch (1612:3): [True: 9.85k, False: 564k]
  ------------------
 1613|    496|		case '|':	goto yy72;
  ------------------
  |  Branch (1613:3): [True: 496, False: 573k]
  ------------------
 1614|  11.5k|		case '}':	goto yy73;
  ------------------
  |  Branch (1614:3): [True: 11.5k, False: 562k]
  ------------------
 1615|  38.8k|		default:	goto yy47;
  ------------------
  |  Branch (1615:3): [True: 38.8k, False: 535k]
  ------------------
 1616|   574k|		}
 1617|  75.3k|yy3:
 1618|  75.3k|		YYDEBUG(3, *YYCURSOR);
 1619|  75.3k|		++YYCURSOR;
  ------------------
  |  |   54|  75.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  75.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  75.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1620|  75.3k|		YYDEBUG(4, *YYCURSOR);
 1621|  75.3k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  75.3k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  75.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  75.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  75.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  75.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  75.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  75.3k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  75.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1622|  75.3k|#line 3179 "Zend/zend_language_scanner.l"
 1623|  75.3k|		{
 1624|  75.3k|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|  75.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  75.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  75.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|  75.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  75.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  75.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1624:6): [True: 6.32k, False: 69.0k]
  ------------------
 1625|  6.32k|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|  6.32k|#define RETURN_END_TOKEN do { \
  |  | 1356|  6.32k|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  3.22k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  3.22k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 122, False: 3.10k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 3.22k, False: 3.10k]
  |  |  ------------------
  |  | 1357|    122|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|    122|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|    122|		token = _token; \
  |  |  |  | 1320|    122|		goto emit_token; \
  |  |  |  | 1321|    122|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|  6.20k|		} else { \
  |  | 1359|  6.20k|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|  6.20k|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|  6.20k|		token = _token; \
  |  |  |  | 1320|  6.20k|		goto emit_token; \
  |  |  |  | 1321|  6.20k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|  6.20k|		} \
  |  | 1361|  6.32k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1626|  6.32k|	}
 1627|       |
 1628|  69.0k|	RETURN_TOKEN(T_BAD_CHARACTER);
  ------------------
  |  | 1318|  69.0k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  69.0k|		token = _token; \
  |  | 1320|  69.0k|		goto emit_token; \
  |  | 1321|  69.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1629|  69.0k|}
 1630|      0|#line 1631 "Zend/zend_language_scanner.c"
 1631|   193k|yy5:
 1632|   193k|		YYDEBUG(5, *YYCURSOR);
 1633|   193k|		++YYCURSOR;
  ------------------
  |  |   54|   193k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   193k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   193k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1634|   193k|		YYFILL(1);
  ------------------
  |  |   53|   193k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|   193k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|   193k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|   193k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|   193k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|   193k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|   193k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|   193k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 193k]
  |  |  ------------------
  ------------------
 1635|   193k|		yych = *YYCURSOR;
  ------------------
  |  |   54|   193k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   193k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   193k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1636|   193k|		YYDEBUG(6, *YYCURSOR);
 1637|   193k|		if (yybm[256+yych] & 32) {
  ------------------
  |  Branch (1637:7): [True: 66.9k, False: 126k]
  ------------------
 1638|  66.9k|			goto yy5;
 1639|  66.9k|		}
 1640|   126k|		YYDEBUG(7, *YYCURSOR);
 1641|   126k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|   126k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|   126k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   126k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|   126k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   126k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   126k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|   126k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|   126k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1642|   126k|#line 1596 "Zend/zend_language_scanner.l"
 1643|   126k|		{
 1644|   126k|	goto return_whitespace;
 1645|   193k|}
 1646|      0|#line 1647 "Zend/zend_language_scanner.c"
 1647|  7.93k|yy8:
 1648|  7.93k|		YYDEBUG(8, *YYCURSOR);
 1649|  7.93k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  7.93k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.93k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.93k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1650|  7.93k|		if (yych == '=') goto yy75;
  ------------------
  |  Branch (1650:7): [True: 62, False: 7.87k]
  ------------------
 1651|   146k|yy9:
 1652|   146k|		YYDEBUG(9, *YYCURSOR);
 1653|   146k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|   146k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|   146k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   146k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|   146k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   146k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   146k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|   146k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|   146k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1654|   146k|#line 1968 "Zend/zend_language_scanner.l"
 1655|   146k|		{
 1656|   146k|	RETURN_TOKEN(yytext[0]);
  ------------------
  |  | 1318|   146k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|   146k|		token = _token; \
  |  | 1320|   146k|		goto emit_token; \
  |  | 1321|   146k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1657|   146k|}
 1658|      0|#line 1659 "Zend/zend_language_scanner.c"
 1659|  6.39k|yy10:
 1660|  6.39k|		YYDEBUG(10, *YYCURSOR);
 1661|  6.39k|		++YYCURSOR;
  ------------------
  |  |   54|  6.39k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1662|  6.39k|		YYDEBUG(11, *YYCURSOR);
 1663|  6.39k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  6.39k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  6.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  6.39k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  6.39k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  6.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1664|  6.39k|#line 2631 "Zend/zend_language_scanner.l"
 1665|  6.39k|		{
 1666|  6.39k|	int bprefix = (yytext[0] != '"') ? 1 : 0;
  ------------------
  |  |   66|  6.39k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  6.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1666:16): [True: 101, False: 6.28k]
  ------------------
 1667|       |
 1668|   215k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|   215k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   215k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   215k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|   215k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|   215k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   215k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1668:9): [True: 215k, False: 449]
  ------------------
 1669|   215k|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|   215k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   215k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   215k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1670|  5.15k|			case '"':
  ------------------
  |  Branch (1670:4): [True: 5.15k, False: 210k]
  ------------------
 1671|  5.15k|				yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  5.15k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  5.15k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.15k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  5.15k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.15k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.15k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  5.15k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  5.15k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1672|  5.15k|				if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS)
  ------------------
  |  |  456|  10.3k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5.15k, False: 3]
  |  |  ------------------
  ------------------
 1673|  5.15k|				 || !PARSER_MODE()) {
  ------------------
  |  | 1316|      3|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  ------------------
  |  Branch (1673:9): [True: 2, False: 1]
  ------------------
 1674|  5.15k|					RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING);
  ------------------
  |  | 1323|  5.15k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  5.15k|		token = _token; \
  |  | 1325|  5.15k|		goto emit_token_with_val; \
  |  | 1326|  5.15k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1675|  5.15k|				} else {
 1676|      1|					RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1677|      1|				}
 1678|  1.03k|			case '$':
  ------------------
  |  Branch (1678:4): [True: 1.03k, False: 214k]
  ------------------
 1679|  1.03k|				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |  118|  2.06k|#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (118:29): [True: 698, False: 336]
  |  |  |  Branch (118:43): [True: 329, False: 369]
  |  |  |  Branch (118:59): [True: 464, False: 241]
  |  |  |  Branch (118:73): [True: 73, False: 391]
  |  |  |  Branch (118:88): [True: 0, False: 632]
  |  |  |  Branch (118:102): [True: 154, False: 478]
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |   54|    478|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    478|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    478|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1679:38): [True: 204, False: 274]
  ------------------
 1680|    760|					break;
 1681|    760|				}
 1682|    274|				continue;
 1683|    507|			case '{':
  ------------------
  |  Branch (1683:4): [True: 507, False: 214k]
  ------------------
 1684|    507|				if (*YYCURSOR == '$') {
  ------------------
  |  |   54|    507|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    507|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    507|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1684:9): [True: 25, False: 482]
  ------------------
 1685|     25|					break;
 1686|     25|				}
 1687|    482|				continue;
 1688|  2.56k|			case '\\':
  ------------------
  |  Branch (1688:4): [True: 2.56k, False: 212k]
  ------------------
 1689|  2.56k|				if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  2.56k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.56k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.56k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  2.56k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  2.56k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.56k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1689:9): [True: 2.55k, False: 12]
  ------------------
 1690|  2.55k|					YYCURSOR++;
  ------------------
  |  |   54|  2.55k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.55k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.55k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1691|  2.55k|				}
 1692|  2.56k|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|  2.56k|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1693|   208k|			default:
  ------------------
  |  Branch (1693:4): [True: 206k, False: 9.26k]
  ------------------
 1694|   208k|				continue;
 1695|   215k|		}
 1696|       |
 1697|    785|		YYCURSOR--;
  ------------------
  |  |   54|    785|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    785|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    785|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1698|    785|		break;
 1699|   215k|	}
 1700|       |
 1701|       |	/* Remember how much was scanned to save rescanning */
 1702|  6.39k|	SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng);
  ------------------
  |  |  115|  1.23k|#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) SCNG(scanned_string_len) = (len)
  |  |  ------------------
  |  |  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1703|       |
 1704|  1.23k|	YYCURSOR = SCNG(yy_text) + yyleng;
  ------------------
  |  |   54|  1.23k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	YYCURSOR = SCNG(yy_text) + yyleng;
  ------------------
  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              	YYCURSOR = SCNG(yy_text) + yyleng;
  ------------------
  |  |   67|  1.23k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1705|       |
 1706|  1.23k|	BEGIN(ST_DOUBLE_QUOTES);
  ------------------
  |  |   64|  1.23k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  1.23k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1707|  1.23k|	RETURN_TOKEN('"');
  ------------------
  |  | 1318|  1.23k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  1.23k|		token = _token; \
  |  | 1320|  1.23k|		goto emit_token; \
  |  | 1321|  1.23k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1708|  1.23k|}
 1709|      0|#line 1710 "Zend/zend_language_scanner.c"
 1710|  7.12k|yy12:
 1711|  7.12k|		YYDEBUG(12, *YYCURSOR);
 1712|  7.12k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  7.12k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.12k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.12k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1713|  7.12k|		if (yych == '[') goto yy77;
  ------------------
  |  Branch (1713:7): [True: 179, False: 6.94k]
  ------------------
 1714|  7.34k|yy13:
 1715|  7.34k|		YYDEBUG(13, *YYCURSOR);
 1716|  7.34k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  7.34k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  7.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  7.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  7.34k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1717|  7.34k|#line 2459 "Zend/zend_language_scanner.l"
 1718|  7.34k|		{
 1719|  22.6k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  22.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  22.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  22.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  22.6k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  22.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  22.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1719:9): [True: 22.4k, False: 201]
  ------------------
 1720|  22.4k|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|  22.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  22.4k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  22.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1721|  2.48k|			case '\r':
  ------------------
  |  Branch (1721:4): [True: 2.48k, False: 19.9k]
  ------------------
 1722|  7.14k|			case '\n':
  ------------------
  |  Branch (1722:4): [True: 4.65k, False: 17.7k]
  ------------------
 1723|  7.14k|				YYCURSOR--;
  ------------------
  |  |   54|  7.14k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.14k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.14k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1724|  7.14k|				break;
 1725|    197|			case '?':
  ------------------
  |  Branch (1725:4): [True: 197, False: 22.2k]
  ------------------
 1726|    197|				if (*YYCURSOR == '>') {
  ------------------
  |  |   54|    197|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    197|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    197|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1726:9): [True: 4, False: 193]
  ------------------
 1727|      4|					YYCURSOR--;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1728|      4|					break;
 1729|      4|				}
 1730|    193|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|    193|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1731|  15.3k|			default:
  ------------------
  |  Branch (1731:4): [True: 15.1k, False: 7.33k]
  ------------------
 1732|  15.3k|				continue;
 1733|  22.4k|		}
 1734|       |
 1735|  7.14k|		break;
 1736|  22.4k|	}
 1737|       |
 1738|  7.34k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  7.34k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  7.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  7.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  7.34k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1739|  7.34k|	RETURN_OR_SKIP_TOKEN(T_COMMENT);
  ------------------
  |  | 1339|  7.34k|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|  7.34k|		token = _token; \
  |  | 1341|  7.34k|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  7.34k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  7.34k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 530, False: 6.81k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    530|			goto skip_token; \
  |  | 1343|    530|		} \
  |  | 1344|  7.34k|		goto emit_token; \
  |  | 1345|  7.34k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1740|  7.34k|}
 1741|      0|#line 1742 "Zend/zend_language_scanner.c"
 1742|  17.0k|yy14:
 1743|  17.0k|		YYDEBUG(14, *YYCURSOR);
 1744|  17.0k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  17.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  17.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  17.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|  17.0k|		if (yych <= '_') {
  ------------------
  |  Branch (1745:7): [True: 2.61k, False: 14.4k]
  ------------------
 1746|  2.61k|			if (yych <= '@') goto yy9;
  ------------------
  |  Branch (1746:8): [True: 1.98k, False: 626]
  ------------------
 1747|    626|			if (yych <= 'Z') goto yy79;
  ------------------
  |  Branch (1747:8): [True: 408, False: 218]
  ------------------
 1748|    218|			if (yych <= '^') goto yy9;
  ------------------
  |  Branch (1748:8): [True: 172, False: 46]
  ------------------
 1749|     46|			goto yy79;
 1750|  14.4k|		} else {
 1751|  14.4k|			if (yych <= '`') goto yy9;
  ------------------
  |  Branch (1751:8): [True: 8, False: 14.4k]
  ------------------
 1752|  14.4k|			if (yych <= 'z') goto yy79;
  ------------------
  |  Branch (1752:8): [True: 10.9k, False: 3.56k]
  ------------------
 1753|  3.56k|			if (yych <= 0x7F) goto yy9;
  ------------------
  |  Branch (1753:8): [True: 2.82k, False: 741]
  ------------------
 1754|    741|			goto yy79;
 1755|  3.56k|		}
 1756|    426|yy15:
 1757|    426|		YYDEBUG(15, *YYCURSOR);
 1758|    426|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    426|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    426|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    426|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1759|    426|		if (yych == '=') goto yy82;
  ------------------
  |  Branch (1759:7): [True: 10, False: 416]
  ------------------
 1760|    416|		goto yy9;
 1761|  2.09k|yy16:
 1762|  2.09k|		YYDEBUG(16, *YYCURSOR);
 1763|  2.09k|		yyaccept = 0;
 1764|  2.09k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.09k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.09k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1765|  2.09k|		if (yych <= '"') {
  ------------------
  |  Branch (1765:7): [True: 807, False: 1.28k]
  ------------------
 1766|    807|			if (yych <= '\f') {
  ------------------
  |  Branch (1766:8): [True: 548, False: 259]
  ------------------
 1767|    548|				if (yych <= 0x08) goto yy17;
  ------------------
  |  Branch (1767:9): [True: 44, False: 504]
  ------------------
 1768|    504|				if (yych <= '\n') goto yy85;
  ------------------
  |  Branch (1768:9): [True: 490, False: 14]
  ------------------
 1769|    504|			} else {
 1770|    259|				if (yych <= '\r') goto yy85;
  ------------------
  |  Branch (1770:9): [True: 27, False: 232]
  ------------------
 1771|    232|				if (yych == ' ') goto yy85;
  ------------------
  |  Branch (1771:9): [True: 201, False: 31]
  ------------------
 1772|    232|			}
 1773|  1.28k|		} else {
 1774|  1.28k|			if (yych <= '-') {
  ------------------
  |  Branch (1774:8): [True: 737, False: 547]
  ------------------
 1775|    737|				if (yych <= '$') goto yy85;
  ------------------
  |  Branch (1775:9): [True: 443, False: 294]
  ------------------
 1776|    294|				if (yych == '&') goto yy90;
  ------------------
  |  Branch (1776:9): [True: 264, False: 30]
  ------------------
 1777|    547|			} else {
 1778|    547|				if (yych <= '/') goto yy85;
  ------------------
  |  Branch (1778:9): [True: 65, False: 482]
  ------------------
 1779|    482|				if (yych == '=') goto yy94;
  ------------------
  |  Branch (1779:9): [True: 21, False: 461]
  ------------------
 1780|    482|			}
 1781|  1.28k|		}
 1782|  1.16k|yy17:
 1783|  1.16k|		YYDEBUG(17, *YYCURSOR);
 1784|  1.16k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.16k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1785|  1.16k|#line 1954 "Zend/zend_language_scanner.l"
 1786|  1.16k|		{
 1787|  1.16k|	RETURN_TOKEN(T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG);
  ------------------
  |  | 1318|  1.16k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  1.16k|		token = _token; \
  |  | 1320|  1.16k|		goto emit_token; \
  |  | 1321|  1.16k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1788|  1.16k|}
 1789|      0|#line 1790 "Zend/zend_language_scanner.c"
 1790|  6.28k|yy18:
 1791|  6.28k|		YYDEBUG(18, *YYCURSOR);
 1792|  6.28k|		++YYCURSOR;
  ------------------
  |  |   54|  6.28k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.28k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1793|  6.28k|		YYDEBUG(19, *YYCURSOR);
 1794|  6.28k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  6.28k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  6.28k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  6.28k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.28k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  6.28k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  6.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1795|  6.28k|#line 2537 "Zend/zend_language_scanner.l"
 1796|  6.28k|		{
 1797|  6.28k|	char *s, *t;
 1798|  6.28k|	char *end;
 1799|  6.28k|	int bprefix = (yytext[0] != '\'') ? 1 : 0;
  ------------------
  |  |   66|  6.28k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  6.28k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1799:16): [True: 3, False: 6.28k]
  ------------------
 1800|       |
 1801|   223k|	while (1) {
  ------------------
  |  Branch (1801:9): [True: 223k, Folded]
  ------------------
 1802|   223k|		if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|   223k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   223k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   223k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|   223k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|   223k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   223k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1802:7): [True: 223k, False: 768]
  ------------------
 1803|   223k|			if (*YYCURSOR == '\'') {
  ------------------
  |  |   54|   223k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   223k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   223k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1803:8): [True: 5.51k, False: 217k]
  ------------------
 1804|  5.51k|				YYCURSOR++;
  ------------------
  |  |   54|  5.51k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1805|  5.51k|				yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  5.51k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  5.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  5.51k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  5.51k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  5.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1806|       |
 1807|  5.51k|				break;
 1808|   217k|			} else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|   217k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   217k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   217k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			} else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|    455|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    455|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    455|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			} else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|    455|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    455|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    455|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1808:15): [True: 455, False: 217k]
  |  Branch (1808:38): [True: 451, False: 4]
  ------------------
 1809|    451|				YYCURSOR++;
  ------------------
  |  |   54|    451|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    451|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    451|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1810|    451|			}
 1811|   223k|		} else {
 1812|    768|			yyleng = YYLIMIT - SCNG(yy_text);
  ------------------
  |  |   67|    768|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    768|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    768|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			yyleng = YYLIMIT - SCNG(yy_text);
  ------------------
  |  |   55|    768|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    768|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    768|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			yyleng = YYLIMIT - SCNG(yy_text);
  ------------------
  |  |   87|    768|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    768|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1813|       |
 1814|       |			/* Unclosed single quotes; treat similar to double quotes, but without a separate token
 1815|       |			 * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..."
 1816|       |			 * rule, which continued in ST_IN_SCRIPTING state after the quote */
 1817|    768|			ZVAL_NULL(zendlval);
  ------------------
  |  | 1059|    768|#define ZVAL_NULL(z) do {				\
  |  | 1060|    768|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    768|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    768|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    768|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    768|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 768]
  |  |  ------------------
  ------------------
 1818|    768|			RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|    768|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|    768|		token = _token; \
  |  | 1325|    768|		goto emit_token_with_val; \
  |  | 1326|    768|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1819|    768|		}
 1820|   223k|	}
 1821|       |
 1822|  5.51k|	if (yyleng-bprefix-2 <= 1) {
  ------------------
  |  |   67|  5.51k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  5.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1822:6): [True: 709, False: 4.80k]
  ------------------
 1823|    709|		if (yyleng-bprefix-2 < 1) {
  ------------------
  |  |   67|    709|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    709|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    709|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1823:7): [True: 207, False: 502]
  ------------------
 1824|    207|			ZVAL_EMPTY_STRING(zendlval);
  ------------------
  |  |  972|    207|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|    207|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|    207|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|    207|		zval *__z = (z);							\
  |  |  |  | 1100|    207|		zend_string *__s = (s);						\
  |  |  |  | 1101|    207|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|    207|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|    207|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|    207|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    207|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    207|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|    207|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|    207|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|    207|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 207]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|    207|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 207]
  |  |  ------------------
  ------------------
 1825|    502|		} else {
 1826|    502|			zend_uchar c = (zend_uchar)*(yytext+bprefix+1);
  ------------------
  |  |   66|    502|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|    502|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    502|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1827|    502|			HANDLE_NEWLINE(c);
  ------------------
  |  |  107|    502|#define HANDLE_NEWLINE(c) \
  |  |  108|    502|{ \
  |  |  109|    502|	if (c == '\n' || c == '\r') { \
  |  |  ------------------
  |  |  |  Branch (109:6): [True: 0, False: 502]
  |  |  |  Branch (109:19): [True: 3, False: 499]
  |  |  ------------------
  |  |  110|      3|		CG(zend_lineno)++; \
  |  |  ------------------
  |  |  |  |   35|      3|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  111|      3|	} \
  |  |  112|    502|}
  ------------------
 1828|    502|			ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c));
  ------------------
  |  | 1098|    502|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|    502|		zval *__z = (z);							\
  |  | 1100|    502|		zend_string *__s = (s);						\
  |  | 1101|    502|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|    502|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    502|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|    502|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|    502|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    502|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|    502|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    502|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|    502|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 502]
  |  |  ------------------
  ------------------
 1829|    502|		}
 1830|    709|		goto skip_escape_conversion;
 1831|    709|	}
 1832|  4.80k|	ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2);
  ------------------
  |  |  963|  4.80k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|  4.80k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|  4.80k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|  4.80k|		zval *__z = (z);						\
  |  |  |  | 1107|  4.80k|		zend_string *__s = (s);					\
  |  |  |  | 1108|  4.80k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  4.80k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  4.80k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|  4.80k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  4.80k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  4.80k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|  4.80k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  4.80k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  4.80k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|  4.80k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|  4.80k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 4.80k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|  4.80k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 4.80k]
  |  |  ------------------
  ------------------
 1833|       |
 1834|       |	/* convert escape sequences */
 1835|  4.80k|	s = Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|  4.80k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  4.80k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  4.80k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1836|  4.80k|	end = s+Z_STRLEN_P(zendlval);
  ------------------
  |  |  988|  4.80k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  4.80k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  4.80k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1837|   186k|	while (1) {
  ------------------
  |  Branch (1837:9): [True: 186k, Folded]
  ------------------
 1838|   186k|		if (UNEXPECTED(*s=='\\')) {
  ------------------
  |  |  457|   186k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 281, False: 186k]
  |  |  ------------------
  ------------------
 1839|    281|			break;
 1840|    281|		}
 1841|   186k|		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
  ------------------
  |  Branch (1841:7): [True: 1.96k, False: 184k]
  |  Branch (1841:22): [True: 176, False: 183k]
  |  Branch (1841:36): [True: 169, False: 7]
  ------------------
 1842|  2.12k|			CG(zend_lineno)++;
  ------------------
  |  |   35|  2.12k|# define CG(v) (compiler_globals.v)
  ------------------
 1843|  2.12k|		}
 1844|   186k|		s++;
 1845|   186k|		if (s == end) {
  ------------------
  |  Branch (1845:7): [True: 4.52k, False: 181k]
  ------------------
 1846|  4.52k|			goto skip_escape_conversion;
 1847|  4.52k|		}
 1848|   186k|	}
 1849|       |
 1850|    281|	t = s;
 1851|  7.03k|	while (s<end) {
  ------------------
  |  Branch (1851:9): [True: 6.75k, False: 281]
  ------------------
 1852|  6.75k|		if (*s=='\\') {
  ------------------
  |  Branch (1852:7): [True: 432, False: 6.32k]
  ------------------
 1853|    432|			s++;
 1854|    432|			if (*s == '\\' || *s == '\'') {
  ------------------
  |  Branch (1854:8): [True: 21, False: 411]
  |  Branch (1854:22): [True: 9, False: 402]
  ------------------
 1855|     30|				*t++ = *s;
 1856|    402|			} else {
 1857|    402|				*t++ = '\\';
 1858|    402|				*t++ = *s;
 1859|    402|			}
 1860|  6.32k|		} else {
 1861|  6.32k|			*t++ = *s;
 1862|  6.32k|		}
 1863|  6.75k|		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
  ------------------
  |  Branch (1863:7): [True: 107, False: 6.64k]
  |  Branch (1863:22): [True: 8, False: 6.64k]
  |  Branch (1863:36): [True: 6, False: 2]
  ------------------
 1864|    113|			CG(zend_lineno)++;
  ------------------
  |  |   35|    113|# define CG(v) (compiler_globals.v)
  ------------------
 1865|    113|		}
 1866|  6.75k|		s++;
 1867|  6.75k|	}
 1868|    281|	*t = 0;
 1869|    281|	Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval);
  ------------------
  |  |  988|    281|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    281|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    281|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|    281|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    281|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    281|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1870|       |
 1871|  5.51k|skip_escape_conversion:
 1872|  5.51k|	if (SCNG(output_filter)) {
  ------------------
  |  |   87|  5.51k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  5.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 5.51k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1873|      0|		size_t sz = 0;
 1874|      0|		char *str = NULL;
 1875|      0|		zend_string *new_str;
 1876|      0|		s = Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1877|       |		// TODO: avoid reallocation ???
 1878|      0|		SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, Z_STRLEN_P(zendlval));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, Z_STRLEN_P(zendlval));
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1879|      0|		new_str = zend_string_init(str, sz, 0);
 1880|      0|		if (str != s) {
  ------------------
  |  Branch (1880:7): [True: 0, False: 0]
  ------------------
 1881|      0|			efree(str);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1882|      0|		}
 1883|      0|		zend_string_release_ex(Z_STR_P(zendlval), 0);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1884|      0|		ZVAL_STR(zendlval, new_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1885|      0|	}
 1886|  5.51k|	RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING);
  ------------------
  |  | 1323|  5.51k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  5.51k|		token = _token; \
  |  | 1325|  5.51k|		goto emit_token_with_val; \
  |  | 1326|  5.51k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1887|  5.51k|}
 1888|      0|#line 1889 "Zend/zend_language_scanner.c"
 1889|  35.9k|yy20:
 1890|  35.9k|		YYDEBUG(20, *YYCURSOR);
 1891|  35.9k|		yyaccept = 1;
 1892|  35.9k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  35.9k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  35.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  35.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  35.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  35.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  35.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1893|  35.9k|		if (yych <= 'S') {
  ------------------
  |  Branch (1893:7): [True: 31.2k, False: 4.68k]
  ------------------
 1894|  31.2k|			if (yych <= 'D') {
  ------------------
  |  Branch (1894:8): [True: 30.7k, False: 519]
  ------------------
 1895|  30.7k|				if (yych <= ' ') {
  ------------------
  |  Branch (1895:9): [True: 16.5k, False: 14.1k]
  ------------------
 1896|  16.5k|					if (yych == '\t') goto yy97;
  ------------------
  |  Branch (1896:10): [True: 2.56k, False: 13.9k]
  ------------------
 1897|  13.9k|					if (yych >= ' ') goto yy97;
  ------------------
  |  Branch (1897:10): [True: 13.6k, False: 315]
  ------------------
 1898|  14.1k|				} else {
 1899|  14.1k|					if (yych <= '@') goto yy21;
  ------------------
  |  Branch (1899:10): [True: 13.9k, False: 207]
  ------------------
 1900|    207|					if (yych != 'C') goto yy97;
  ------------------
  |  Branch (1900:10): [True: 114, False: 93]
  ------------------
 1901|    207|				}
 1902|  30.7k|			} else {
 1903|    519|				if (yych <= 'I') {
  ------------------
  |  Branch (1903:9): [True: 427, False: 92]
  ------------------
 1904|    427|					if (yych == 'F') goto yy97;
  ------------------
  |  Branch (1904:10): [True: 257, False: 170]
  ------------------
 1905|    170|					if (yych >= 'I') goto yy97;
  ------------------
  |  Branch (1905:10): [True: 24, False: 146]
  ------------------
 1906|    170|				} else {
 1907|     92|					if (yych == 'O') goto yy97;
  ------------------
  |  Branch (1907:10): [True: 11, False: 81]
  ------------------
 1908|     81|					if (yych >= 'R') goto yy97;
  ------------------
  |  Branch (1908:10): [True: 51, False: 30]
  ------------------
 1909|     81|				}
 1910|    519|			}
 1911|  31.2k|		} else {
 1912|  4.68k|			if (yych <= 'f') {
  ------------------
  |  Branch (1912:8): [True: 1.44k, False: 3.23k]
  ------------------
 1913|  1.44k|				if (yych <= 'b') {
  ------------------
  |  Branch (1913:9): [True: 923, False: 521]
  ------------------
 1914|    923|					if (yych <= 'T') goto yy21;
  ------------------
  |  Branch (1914:10): [True: 79, False: 844]
  ------------------
 1915|    844|					if (yych <= 'V') goto yy97;
  ------------------
  |  Branch (1915:10): [True: 19, False: 825]
  ------------------
 1916|    825|					if (yych >= 'a') goto yy97;
  ------------------
  |  Branch (1916:10): [True: 422, False: 403]
  ------------------
 1917|    825|				} else {
 1918|    521|					if (yych == 'd') goto yy97;
  ------------------
  |  Branch (1918:10): [True: 176, False: 345]
  ------------------
 1919|    345|					if (yych >= 'f') goto yy97;
  ------------------
  |  Branch (1919:10): [True: 230, False: 115]
  ------------------
 1920|    345|				}
 1921|  3.23k|			} else {
 1922|  3.23k|				if (yych <= 'o') {
  ------------------
  |  Branch (1922:9): [True: 1.09k, False: 2.14k]
  ------------------
 1923|  1.09k|					if (yych == 'i') goto yy97;
  ------------------
  |  Branch (1923:10): [True: 359, False: 734]
  ------------------
 1924|    734|					if (yych >= 'o') goto yy97;
  ------------------
  |  Branch (1924:10): [True: 95, False: 639]
  ------------------
 1925|  2.14k|				} else {
 1926|  2.14k|					if (yych <= 's') {
  ------------------
  |  Branch (1926:10): [True: 1.40k, False: 744]
  ------------------
 1927|  1.40k|						if (yych >= 'r') goto yy97;
  ------------------
  |  Branch (1927:11): [True: 955, False: 447]
  ------------------
 1928|  1.40k|					} else {
 1929|    744|						if (yych <= 't') goto yy21;
  ------------------
  |  Branch (1929:11): [True: 127, False: 617]
  ------------------
 1930|    617|						if (yych <= 'v') goto yy97;
  ------------------
  |  Branch (1930:11): [True: 176, False: 441]
  ------------------
 1931|    617|					}
 1932|  2.14k|				}
 1933|  3.23k|			}
 1934|  4.68k|		}
 1935|  42.8k|yy21:
 1936|  42.8k|		YYDEBUG(21, *YYCURSOR);
 1937|  42.8k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  42.8k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  42.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  42.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  42.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  42.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  42.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  42.8k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  42.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1938|  42.8k|#line 1963 "Zend/zend_language_scanner.l"
 1939|  42.8k|		{
 1940|  42.8k|	enter_nesting(yytext[0]);
  ------------------
  |  |   66|  42.8k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  42.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  42.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1941|  42.8k|	RETURN_TOKEN(yytext[0]);
  ------------------
  |  | 1318|  42.8k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  42.8k|		token = _token; \
  |  | 1320|  42.8k|		goto emit_token; \
  |  | 1321|  42.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1942|  42.8k|}
 1943|      0|#line 1944 "Zend/zend_language_scanner.c"
 1944|  21.1k|yy22:
 1945|  21.1k|		YYDEBUG(22, *YYCURSOR);
 1946|  21.1k|		++YYCURSOR;
  ------------------
  |  |   54|  21.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  21.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  21.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1947|  21.1k|		YYDEBUG(23, *YYCURSOR);
 1948|  21.1k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  21.1k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  21.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  21.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  21.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  21.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  21.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  21.1k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  21.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1949|  21.1k|#line 1958 "Zend/zend_language_scanner.l"
 1950|  21.1k|		{
 1951|       |	/* Check that ] and ) match up properly with a preceding [ or ( */
 1952|  21.1k|	RETURN_EXIT_NESTING_TOKEN(yytext[0]);
  ------------------
  |  | 1347|  21.1k|#define RETURN_EXIT_NESTING_TOKEN(_token) do { \
  |  | 1348|  21.1k|		if (exit_nesting(_token) != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  1.50k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  1.50k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 10, False: 1.49k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1348:7): [True: 1.50k, False: 19.6k]
  |  |  ------------------
  |  | 1349|     10|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|     10|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|     10|		token = _token; \
  |  |  |  | 1320|     10|		goto emit_token; \
  |  |  |  | 1321|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1350|  21.1k|		} else { \
  |  | 1351|  21.1k|			RETURN_TOKEN(_token); \
  |  |  ------------------
  |  |  |  | 1318|  21.1k|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|  21.1k|		token = _token; \
  |  |  |  | 1320|  21.1k|		goto emit_token; \
  |  |  |  | 1321|  21.1k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1352|  21.1k|		} \
  |  | 1353|  21.1k|	} while(0)
  |  |  ------------------
  |  |  |  Branch (1353:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1953|  21.1k|}
 1954|      0|#line 1955 "Zend/zend_language_scanner.c"
 1955|  5.19k|yy24:
 1956|  5.19k|		YYDEBUG(24, *YYCURSOR);
 1957|  5.19k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  5.19k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.19k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1958|  5.19k|		if (yych == '*') goto yy108;
  ------------------
  |  Branch (1958:7): [True: 209, False: 4.98k]
  ------------------
 1959|  4.98k|		if (yych == '=') goto yy110;
  ------------------
  |  Branch (1959:7): [True: 16, False: 4.97k]
  ------------------
 1960|  4.97k|		goto yy9;
 1961|  25.0k|yy25:
 1962|  25.0k|		YYDEBUG(25, *YYCURSOR);
 1963|  25.0k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  25.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  25.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  25.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1964|  25.0k|		if (yych == '+') goto yy112;
  ------------------
  |  Branch (1964:7): [True: 23.0k, False: 2.02k]
  ------------------
 1965|  2.02k|		if (yych == '=') goto yy114;
  ------------------
  |  Branch (1965:7): [True: 111, False: 1.91k]
  ------------------
 1966|  1.91k|		goto yy9;
 1967|  42.6k|yy26:
 1968|  42.6k|		YYDEBUG(26, *YYCURSOR);
 1969|  42.6k|		++YYCURSOR;
  ------------------
  |  |   54|  42.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  42.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  42.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1970|  42.6k|		goto yy9;
 1971|  9.02k|yy27:
 1972|  9.02k|		YYDEBUG(27, *YYCURSOR);
 1973|  9.02k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  9.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1974|  9.02k|		if (yych <= '<') {
  ------------------
  |  Branch (1974:7): [True: 6.24k, False: 2.77k]
  ------------------
 1975|  6.24k|			if (yych == '-') goto yy116;
  ------------------
  |  Branch (1975:8): [True: 85, False: 6.16k]
  ------------------
 1976|  6.16k|			goto yy9;
 1977|  6.24k|		} else {
 1978|  2.77k|			if (yych <= '=') goto yy118;
  ------------------
  |  Branch (1978:8): [True: 7, False: 2.76k]
  ------------------
 1979|  2.76k|			if (yych <= '>') goto yy120;
  ------------------
  |  Branch (1979:8): [True: 1.34k, False: 1.42k]
  ------------------
 1980|  1.42k|			goto yy9;
 1981|  2.76k|		}
 1982|  3.65k|yy28:
 1983|  3.65k|		YYDEBUG(28, *YYCURSOR);
 1984|  3.65k|		yyaccept = 2;
 1985|  3.65k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  3.65k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  3.65k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.65k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  3.65k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.65k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.65k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1986|  3.65k|		if (yych <= '/') {
  ------------------
  |  Branch (1986:7): [True: 1.04k, False: 2.61k]
  ------------------
 1987|  1.04k|			if (yych == '.') goto yy122;
  ------------------
  |  Branch (1987:8): [True: 421, False: 619]
  ------------------
 1988|    619|			goto yy9;
 1989|  2.61k|		} else {
 1990|  2.61k|			if (yych <= '9') goto yy123;
  ------------------
  |  Branch (1990:8): [True: 503, False: 2.11k]
  ------------------
 1991|  2.11k|			if (yych == '=') goto yy126;
  ------------------
  |  Branch (1991:8): [True: 148, False: 1.96k]
  ------------------
 1992|  1.96k|			goto yy9;
 1993|  2.11k|		}
 1994|  6.97k|yy29:
 1995|  6.97k|		YYDEBUG(29, *YYCURSOR);
 1996|  6.97k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  6.97k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.97k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.97k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1997|  6.97k|		if (yych <= '.') {
  ------------------
  |  Branch (1997:7): [True: 2.32k, False: 4.64k]
  ------------------
 1998|  2.32k|			if (yych == '*') goto yy128;
  ------------------
  |  Branch (1998:8): [True: 1.46k, False: 863]
  ------------------
 1999|    863|			goto yy9;
 2000|  4.64k|		} else {
 2001|  4.64k|			if (yych <= '/') goto yy130;
  ------------------
  |  Branch (2001:8): [True: 400, False: 4.24k]
  ------------------
 2002|  4.24k|			if (yych == '=') goto yy131;
  ------------------
  |  Branch (2002:8): [True: 17, False: 4.23k]
  ------------------
 2003|  4.23k|			goto yy9;
 2004|  4.24k|		}
 2005|  4.12k|yy30:
 2006|  4.12k|		YYDEBUG(30, *YYCURSOR);
 2007|  4.12k|		yyaccept = 3;
 2008|  4.12k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  4.12k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  4.12k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.12k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  4.12k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.12k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.12k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2009|  4.12k|		if (yych <= 'X') {
  ------------------
  |  Branch (2009:7): [True: 1.04k, False: 3.07k]
  ------------------
 2010|  1.04k|			if (yych <= 'N') {
  ------------------
  |  Branch (2010:8): [True: 1.02k, False: 16]
  ------------------
 2011|  1.02k|				if (yych == 'B') goto yy134;
  ------------------
  |  Branch (2011:9): [True: 2, False: 1.02k]
  ------------------
 2012|  1.02k|				goto yy33;
 2013|  1.02k|			} else {
 2014|     16|				if (yych <= 'O') goto yy136;
  ------------------
  |  Branch (2014:9): [True: 3, False: 13]
  ------------------
 2015|     13|				if (yych <= 'W') goto yy33;
  ------------------
  |  Branch (2015:9): [True: 2, False: 11]
  ------------------
 2016|     11|				goto yy137;
 2017|     13|			}
 2018|  3.07k|		} else {
 2019|  3.07k|			if (yych <= 'n') {
  ------------------
  |  Branch (2019:8): [True: 428, False: 2.65k]
  ------------------
 2020|    428|				if (yych == 'b') goto yy134;
  ------------------
  |  Branch (2020:9): [True: 12, False: 416]
  ------------------
 2021|    416|				goto yy33;
 2022|  2.65k|			} else {
 2023|  2.65k|				if (yych <= 'o') goto yy136;
  ------------------
  |  Branch (2023:9): [True: 9, False: 2.64k]
  ------------------
 2024|  2.64k|				if (yych == 'x') goto yy137;
  ------------------
  |  Branch (2024:9): [True: 34, False: 2.60k]
  ------------------
 2025|  2.60k|				goto yy33;
 2026|  2.64k|			}
 2027|  3.07k|		}
 2028|  32.0k|yy31:
 2029|  32.0k|		YYDEBUG(31, *YYCURSOR);
 2030|  32.0k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  32.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  32.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  32.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  32.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  32.0k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  32.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2031|  32.0k|#line 2102 "Zend/zend_language_scanner.l"
 2032|  32.0k|		{
 2033|  32.0k|	size_t len = yyleng;
  ------------------
  |  |   67|  32.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  32.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2034|  32.0k|	char *end, *lnum = yytext;
  ------------------
  |  |   66|  32.0k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  32.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2035|  32.0k|	bool is_octal = lnum[0] == '0';
 2036|  32.0k|	bool contains_underscores = (memchr(lnum, '_', len) != NULL);
 2037|       |
 2038|  32.0k|	if (contains_underscores) {
  ------------------
  |  Branch (2038:6): [True: 1, False: 32.0k]
  ------------------
 2039|      1|		lnum = estrndup(lnum, len);
  ------------------
  |  |  164|      1|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2040|      1|		strip_underscores(lnum, &len);
 2041|      1|	}
 2042|       |
 2043|       |	/* Digits 8 and 9 are illegal in octal literals. */
 2044|  32.0k|	if (is_octal) {
  ------------------
  |  Branch (2044:6): [True: 3.95k, False: 28.0k]
  ------------------
 2045|  3.95k|		size_t i;
 2046|  8.74k|		for (i = 0; i < len; i++) {
  ------------------
  |  Branch (2046:15): [True: 4.79k, False: 3.94k]
  ------------------
 2047|  4.79k|			if (lnum[i] == '8' || lnum[i] == '9') {
  ------------------
  |  Branch (2047:8): [True: 2, False: 4.79k]
  |  Branch (2047:26): [True: 5, False: 4.78k]
  ------------------
 2048|      7|				zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
 2049|      7|				if (PARSER_MODE()) {
  ------------------
  |  | 1316|      7|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2050|      1|					if (contains_underscores) {
  ------------------
  |  Branch (2050:10): [True: 0, False: 1]
  ------------------
 2051|      0|						efree(lnum);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2052|      0|					}
 2053|      1|					ZVAL_UNDEF(zendlval);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2054|      1|					RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2055|      1|				}
 2056|       |
 2057|       |				/* Continue in order to determine if this is T_LNUMBER or T_DNUMBER. */
 2058|      6|				len = i;
 2059|      6|				break;
 2060|      7|			}
 2061|  4.79k|		}
 2062|  3.95k|	}
 2063|       |
 2064|       |
 2065|  32.0k|	if (len < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
  ------------------
  |  |   96|  32.0k|# define MAX_LENGTH_OF_LONG 20
  ------------------
  |  Branch (2065:6): [True: 31.8k, False: 168]
  ------------------
 2066|  31.8k|		errno = 0;
 2067|       |		/* base must be passed explicitly for correct parse error on Windows */
 2068|  31.8k|		ZVAL_LONG(zendlval, ZEND_STRTOL(lnum, &end, is_octal ? 8 : 10));
  ------------------
  |  | 1076|  31.8k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  31.8k|		zval *__z = (z);				\
  |  | 1078|  63.6k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  31.8k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  31.8k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1078:19): [True: 3.94k, False: 27.8k]
  |  |  ------------------
  |  | 1079|  31.8k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  31.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  31.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  31.8k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  31.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 31.8k]
  |  |  ------------------
  ------------------
 2069|  31.8k|		ZEND_ASSERT(end == lnum + len);
  ------------------
  |  |  112|  31.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2069:3): [True: 0, False: 31.8k]
  |  Branch (2069:3): [True: 31.8k, False: 0]
  ------------------
 2070|  31.8k|	} else {
 2071|    168|		errno = 0;
 2072|    168|		ZVAL_LONG(zendlval, ZEND_STRTOL(lnum, &end, 0));
  ------------------
  |  | 1076|    168|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    168|		zval *__z = (z);				\
  |  | 1078|    168|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    168|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    168|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    168|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    168|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    168|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    168|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    168|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 168]
  |  |  ------------------
  ------------------
 2073|    168|		if (errno == ERANGE) { /* Overflow */
  ------------------
  |  Branch (2073:7): [True: 144, False: 24]
  ------------------
 2074|    144|			errno = 0;
 2075|    144|			if (is_octal) { /* octal overflow */
  ------------------
  |  Branch (2075:8): [True: 3, False: 141]
  ------------------
 2076|      3|				ZVAL_DOUBLE(zendlval, zend_oct_strtod(lnum, (const char **)&end));
  ------------------
  |  | 1082|      3|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      3|		zval *__z = (z);				\
  |  | 1084|      3|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      3|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      3|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2077|    141|			} else {
 2078|    141|				ZVAL_DOUBLE(zendlval, zend_strtod(lnum, (const char **)&end));
  ------------------
  |  | 1082|    141|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    141|		zval *__z = (z);				\
  |  | 1084|    141|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    141|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    141|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    141|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    141|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    141|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    141|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    141|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 141]
  |  |  ------------------
  ------------------
 2079|    141|			}
 2080|    144|			ZEND_ASSERT(end == lnum + len);
  ------------------
  |  |  112|    144|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2080:4): [True: 0, False: 144]
  |  Branch (2080:4): [True: 144, False: 0]
  ------------------
 2081|    144|			if (contains_underscores) {
  ------------------
  |  Branch (2081:8): [True: 1, False: 143]
  ------------------
 2082|      1|				efree(lnum);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2083|      1|			}
 2084|    144|			RETURN_TOKEN_WITH_VAL(T_DNUMBER);
  ------------------
  |  | 1323|    144|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|    144|		token = _token; \
  |  | 1325|    144|		goto emit_token_with_val; \
  |  | 1326|    144|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2085|    144|		}
 2086|     24|		ZEND_ASSERT(end == lnum + len);
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2086:3): [True: 0, False: 24]
  |  Branch (2086:3): [True: 24, False: 0]
  ------------------
 2087|     24|	}
 2088|  31.8k|	ZEND_ASSERT(!errno);
  ------------------
  |  |  112|  31.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2088:2): [True: 0, False: 31.8k]
  |  Branch (2088:2): [True: 31.8k, False: 0]
  ------------------
 2089|  31.8k|	if (contains_underscores) {
  ------------------
  |  Branch (2089:6): [True: 0, False: 31.8k]
  ------------------
 2090|      0|		efree(lnum);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2091|      0|	}
 2092|  31.8k|	RETURN_TOKEN_WITH_VAL(T_LNUMBER);
  ------------------
  |  | 1323|  31.8k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  31.8k|		token = _token; \
  |  | 1325|  31.8k|		goto emit_token_with_val; \
  |  | 1326|  31.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2093|  31.8k|}
 2094|      0|#line 2095 "Zend/zend_language_scanner.c"
 2095|  59.3k|yy32:
 2096|  59.3k|		YYDEBUG(32, *YYCURSOR);
 2097|  59.3k|		yyaccept = 3;
 2098|  59.3k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|  59.3k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  59.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  59.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|  59.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  59.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  59.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2099|  59.3k|		YYFILL(3);
  ------------------
  |  |   53|  59.3k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  59.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  59.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  59.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  59.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  59.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  59.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  59.3k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 59.3k]
  |  |  ------------------
  ------------------
 2100|  59.3k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  59.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  59.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  59.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2101|  63.3k|yy33:
 2102|  63.3k|		YYDEBUG(33, *YYCURSOR);
 2103|  63.3k|		if (yybm[256+yych] & 64) {
  ------------------
  |  Branch (2103:7): [True: 30.8k, False: 32.5k]
  ------------------
 2104|  30.8k|			goto yy32;
 2105|  30.8k|		}
 2106|  32.5k|		if (yych <= 'E') {
  ------------------
  |  Branch (2106:7): [True: 15.6k, False: 16.8k]
  ------------------
 2107|  15.6k|			if (yych == '.') goto yy133;
  ------------------
  |  Branch (2107:8): [True: 338, False: 15.3k]
  ------------------
 2108|  15.3k|			if (yych <= 'D') goto yy31;
  ------------------
  |  Branch (2108:8): [True: 15.1k, False: 144]
  ------------------
 2109|    144|			goto yy135;
 2110|  16.8k|		} else {
 2111|  16.8k|			if (yych <= '_') {
  ------------------
  |  Branch (2111:8): [True: 6.66k, False: 10.2k]
  ------------------
 2112|  6.66k|				if (yych <= '^') goto yy31;
  ------------------
  |  Branch (2112:9): [True: 6.61k, False: 46]
  ------------------
 2113|     46|				goto yy138;
 2114|  10.2k|			} else {
 2115|  10.2k|				if (yych == 'e') goto yy135;
  ------------------
  |  Branch (2115:9): [True: 96, False: 10.1k]
  ------------------
 2116|  10.1k|				goto yy31;
 2117|  10.2k|			}
 2118|  16.8k|		}
 2119|  3.51k|yy34:
 2120|  3.51k|		YYDEBUG(34, *YYCURSOR);
 2121|  3.51k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  3.51k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2122|  3.51k|		if (yych == ':') goto yy139;
  ------------------
  |  Branch (2122:7): [True: 1.59k, False: 1.92k]
  ------------------
 2123|  1.92k|		goto yy9;
 2124|  63.2k|yy35:
 2125|  63.2k|		YYDEBUG(35, *YYCURSOR);
 2126|  63.2k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  63.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  63.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  63.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2127|  63.2k|		if (yych <= ';') goto yy9;
  ------------------
  |  Branch (2127:7): [True: 7.56k, False: 55.6k]
  ------------------
 2128|  55.6k|		if (yych <= '<') goto yy141;
  ------------------
  |  Branch (2128:7): [True: 27.4k, False: 28.2k]
  ------------------
 2129|  28.2k|		if (yych <= '=') goto yy143;
  ------------------
  |  Branch (2129:7): [True: 6.05k, False: 22.1k]
  ------------------
 2130|  22.1k|		if (yych <= '>') goto yy145;
  ------------------
  |  Branch (2130:7): [True: 316, False: 21.8k]
  ------------------
 2131|  21.8k|		goto yy9;
 2132|  21.8k|yy36:
 2133|  14.8k|		YYDEBUG(36, *YYCURSOR);
 2134|  14.8k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  14.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  14.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  14.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2135|  14.8k|		if (yych <= '<') goto yy9;
  ------------------
  |  Branch (2135:7): [True: 12.5k, False: 2.27k]
  ------------------
 2136|  2.27k|		if (yych <= '=') goto yy146;
  ------------------
  |  Branch (2136:7): [True: 188, False: 2.08k]
  ------------------
 2137|  2.08k|		if (yych <= '>') goto yy148;
  ------------------
  |  Branch (2137:7): [True: 471, False: 1.61k]
  ------------------
 2138|  1.61k|		goto yy9;
 2139|  1.61k|yy37:
 2140|    677|		YYDEBUG(37, *YYCURSOR);
 2141|    677|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    677|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    677|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    677|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2142|    677|		if (yych <= '<') goto yy9;
  ------------------
  |  Branch (2142:7): [True: 393, False: 284]
  ------------------
 2143|    284|		if (yych <= '=') goto yy150;
  ------------------
  |  Branch (2143:7): [True: 19, False: 265]
  ------------------
 2144|    265|		if (yych <= '>') goto yy152;
  ------------------
  |  Branch (2144:7): [True: 97, False: 168]
  ------------------
 2145|    168|		goto yy9;
 2146|  28.2k|yy38:
 2147|  28.2k|		YYDEBUG(38, *YYCURSOR);
 2148|  28.2k|		yyaccept = 2;
 2149|  28.2k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  28.2k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  28.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  28.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  28.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  28.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  28.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2150|  28.2k|		if (yych <= '=') {
  ------------------
  |  Branch (2150:7): [True: 9.79k, False: 18.4k]
  ------------------
 2151|  9.79k|			if (yych == '-') goto yy154;
  ------------------
  |  Branch (2151:8): [True: 106, False: 9.68k]
  ------------------
 2152|  9.68k|			goto yy9;
 2153|  18.4k|		} else {
 2154|  18.4k|			if (yych <= '>') goto yy155;
  ------------------
  |  Branch (2154:8): [True: 3.82k, False: 14.6k]
  ------------------
 2155|  14.6k|			if (yych <= '?') goto yy157;
  ------------------
  |  Branch (2155:8): [True: 8.02k, False: 6.59k]
  ------------------
 2156|  6.59k|			goto yy9;
 2157|  14.6k|		}
 2158|  2.96k|yy39:
 2159|  2.96k|		YYDEBUG(39, *YYCURSOR);
 2160|  2.96k|		yyaccept = 4;
 2161|  2.96k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.96k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.96k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.96k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.96k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.96k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.96k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2162|  2.96k|		if (yych <= 'S') {
  ------------------
  |  Branch (2162:7): [True: 1.09k, False: 1.86k]
  ------------------
 2163|  1.09k|			if (yych <= 'M') {
  ------------------
  |  Branch (2163:8): [True: 1.01k, False: 85]
  ------------------
 2164|  1.01k|				if (yych == 'B') goto yy159;
  ------------------
  |  Branch (2164:9): [True: 5, False: 1.00k]
  ------------------
 2165|  1.00k|				goto yy48;
 2166|  1.01k|			} else {
 2167|     85|				if (yych <= 'N') goto yy160;
  ------------------
  |  Branch (2167:9): [True: 6, False: 79]
  ------------------
 2168|     79|				if (yych <= 'Q') goto yy48;
  ------------------
  |  Branch (2168:9): [True: 12, False: 67]
  ------------------
 2169|     67|				if (yych <= 'R') goto yy161;
  ------------------
  |  Branch (2169:9): [True: 10, False: 57]
  ------------------
 2170|     57|				goto yy162;
 2171|     67|			}
 2172|  1.86k|		} else {
 2173|  1.86k|			if (yych <= 'n') {
  ------------------
  |  Branch (2173:8): [True: 412, False: 1.45k]
  ------------------
 2174|    412|				if (yych == 'b') goto yy159;
  ------------------
  |  Branch (2174:9): [True: 156, False: 256]
  ------------------
 2175|    256|				if (yych <= 'm') goto yy48;
  ------------------
  |  Branch (2175:9): [True: 107, False: 149]
  ------------------
 2176|    149|				goto yy160;
 2177|  1.45k|			} else {
 2178|  1.45k|				if (yych <= 'q') goto yy48;
  ------------------
  |  Branch (2178:9): [True: 5, False: 1.45k]
  ------------------
 2179|  1.45k|				if (yych <= 'r') goto yy161;
  ------------------
  |  Branch (2179:9): [True: 746, False: 704]
  ------------------
 2180|    704|				if (yych <= 's') goto yy162;
  ------------------
  |  Branch (2180:9): [True: 448, False: 256]
  ------------------
 2181|    256|				goto yy48;
 2182|    704|			}
 2183|  1.86k|		}
 2184|   102k|yy40:
 2185|   102k|		YYDEBUG(40, *YYCURSOR);
 2186|   102k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|   102k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|   102k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   102k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|   102k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   102k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   102k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|   102k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|   102k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2187|   102k|#line 2454 "Zend/zend_language_scanner.l"
 2188|   102k|		{
 2189|   102k|	RETURN_TOKEN_WITH_STR(T_STRING, 0);
  ------------------
  |  | 1328|   102k|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|   102k|		token = _token; \
  |  | 1330|   102k|		offset = _offset; \
  |  | 1331|   102k|		goto emit_token_with_str; \
  |  | 1332|   102k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2190|   102k|}
 2191|      0|#line 2192 "Zend/zend_language_scanner.c"
 2192|  3.25k|yy41:
 2193|  3.25k|		YYDEBUG(41, *YYCURSOR);
 2194|  3.25k|		yyaccept = 4;
 2195|  3.25k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  3.25k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  3.25k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.25k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  3.25k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.25k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.25k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2196|  3.25k|		if (yych <= ';') {
  ------------------
  |  Branch (2196:7): [True: 736, False: 2.51k]
  ------------------
 2197|    736|			if (yych <= '"') {
  ------------------
  |  Branch (2197:8): [True: 590, False: 146]
  ------------------
 2198|    590|				if (yych <= '!') goto yy48;
  ------------------
  |  Branch (2198:9): [True: 489, False: 101]
  ------------------
 2199|    101|				goto yy10;
 2200|    590|			} else {
 2201|    146|				if (yych == '\'') goto yy18;
  ------------------
  |  Branch (2201:9): [True: 3, False: 143]
  ------------------
 2202|    143|				goto yy48;
 2203|    146|			}
 2204|  2.51k|		} else {
 2205|  2.51k|			if (yych <= 'R') {
  ------------------
  |  Branch (2205:8): [True: 234, False: 2.28k]
  ------------------
 2206|    234|				if (yych <= '<') goto yy165;
  ------------------
  |  Branch (2206:9): [True: 168, False: 66]
  ------------------
 2207|     66|				if (yych <= 'Q') goto yy48;
  ------------------
  |  Branch (2207:9): [True: 60, False: 6]
  ------------------
 2208|      6|				goto yy166;
 2209|  2.28k|			} else {
 2210|  2.28k|				if (yych == 'r') goto yy166;
  ------------------
  |  Branch (2210:9): [True: 41, False: 2.24k]
  ------------------
 2211|  2.24k|				goto yy48;
 2212|  2.28k|			}
 2213|  2.51k|		}
 2214|  9.04k|yy42:
 2215|  9.04k|		YYDEBUG(42, *YYCURSOR);
 2216|  9.04k|		yyaccept = 4;
 2217|  9.04k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  9.04k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  9.04k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.04k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  9.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.04k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.04k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2218|  9.04k|		if (yych <= 'O') {
  ------------------
  |  Branch (2218:7): [True: 1.23k, False: 7.81k]
  ------------------
 2219|  1.23k|			if (yych <= 'K') {
  ------------------
  |  Branch (2219:8): [True: 1.19k, False: 46]
  ------------------
 2220|  1.19k|				if (yych == 'A') goto yy167;
  ------------------
  |  Branch (2220:9): [True: 3, False: 1.18k]
  ------------------
 2221|  1.18k|				goto yy48;
 2222|  1.19k|			} else {
 2223|     46|				if (yych <= 'L') goto yy168;
  ------------------
  |  Branch (2223:9): [True: 6, False: 40]
  ------------------
 2224|     40|				if (yych <= 'N') goto yy48;
  ------------------
  |  Branch (2224:9): [True: 5, False: 35]
  ------------------
 2225|     35|				goto yy169;
 2226|     40|			}
 2227|  7.81k|		} else {
 2228|  7.81k|			if (yych <= 'k') {
  ------------------
  |  Branch (2228:8): [True: 3.20k, False: 4.60k]
  ------------------
 2229|  3.20k|				if (yych == 'a') goto yy167;
  ------------------
  |  Branch (2229:9): [True: 917, False: 2.28k]
  ------------------
 2230|  2.28k|				goto yy48;
 2231|  4.60k|			} else {
 2232|  4.60k|				if (yych <= 'l') goto yy168;
  ------------------
  |  Branch (2232:9): [True: 1.90k, False: 2.70k]
  ------------------
 2233|  2.70k|				if (yych == 'o') goto yy169;
  ------------------
  |  Branch (2233:9): [True: 766, False: 1.93k]
  ------------------
 2234|  1.93k|				goto yy48;
 2235|  2.70k|			}
 2236|  7.81k|		}
 2237|  1.50k|yy43:
 2238|  1.50k|		YYDEBUG(43, *YYCURSOR);
 2239|  1.50k|		yyaccept = 4;
 2240|  1.50k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.50k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2241|  1.50k|		if (yych <= 'O') {
  ------------------
  |  Branch (2241:7): [True: 327, False: 1.17k]
  ------------------
 2242|    327|			if (yych <= 'H') {
  ------------------
  |  Branch (2242:8): [True: 312, False: 15]
  ------------------
 2243|    312|				if (yych == 'E') goto yy170;
  ------------------
  |  Branch (2243:9): [True: 3, False: 309]
  ------------------
 2244|    309|				goto yy48;
 2245|    312|			} else {
 2246|     15|				if (yych <= 'I') goto yy171;
  ------------------
  |  Branch (2246:9): [True: 0, False: 15]
  ------------------
 2247|     15|				if (yych <= 'N') goto yy48;
  ------------------
  |  Branch (2247:9): [True: 8, False: 7]
  ------------------
 2248|      7|				goto yy172;
 2249|     15|			}
 2250|  1.17k|		} else {
 2251|  1.17k|			if (yych <= 'h') {
  ------------------
  |  Branch (2251:8): [True: 1.05k, False: 125]
  ------------------
 2252|  1.05k|				if (yych == 'e') goto yy170;
  ------------------
  |  Branch (2252:9): [True: 298, False: 755]
  ------------------
 2253|    755|				goto yy48;
 2254|  1.05k|			} else {
 2255|    125|				if (yych <= 'i') goto yy171;
  ------------------
  |  Branch (2255:9): [True: 29, False: 96]
  ------------------
 2256|     96|				if (yych == 'o') goto yy172;
  ------------------
  |  Branch (2256:9): [True: 18, False: 78]
  ------------------
 2257|     78|				goto yy48;
 2258|     96|			}
 2259|  1.17k|		}
 2260|  5.14k|yy44:
 2261|  5.14k|		YYDEBUG(44, *YYCURSOR);
 2262|  5.14k|		yyaccept = 4;
 2263|  5.14k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  5.14k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  5.14k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.14k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  5.14k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.14k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.14k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2264|  5.14k|		switch (yych) {
 2265|      4|		case 'C':
  ------------------
  |  Branch (2265:3): [True: 4, False: 5.13k]
  ------------------
 2266|  1.25k|		case 'c':	goto yy174;
  ------------------
  |  Branch (2266:3): [True: 1.25k, False: 3.88k]
  ------------------
 2267|     19|		case 'L':
  ------------------
  |  Branch (2267:3): [True: 19, False: 5.12k]
  ------------------
 2268|     54|		case 'l':	goto yy175;
  ------------------
  |  Branch (2268:3): [True: 35, False: 5.10k]
  ------------------
 2269|     12|		case 'M':
  ------------------
  |  Branch (2269:3): [True: 12, False: 5.13k]
  ------------------
 2270|    101|		case 'm':	goto yy176;
  ------------------
  |  Branch (2270:3): [True: 89, False: 5.05k]
  ------------------
 2271|    694|		case 'N':
  ------------------
  |  Branch (2271:3): [True: 694, False: 4.44k]
  ------------------
 2272|  1.82k|		case 'n':	goto yy177;
  ------------------
  |  Branch (2272:3): [True: 1.13k, False: 4.01k]
  ------------------
 2273|      7|		case 'V':
  ------------------
  |  Branch (2273:3): [True: 7, False: 5.13k]
  ------------------
 2274|     87|		case 'v':	goto yy178;
  ------------------
  |  Branch (2274:3): [True: 80, False: 5.06k]
  ------------------
 2275|     19|		case 'X':
  ------------------
  |  Branch (2275:3): [True: 19, False: 5.12k]
  ------------------
 2276|    670|		case 'x':	goto yy179;
  ------------------
  |  Branch (2276:3): [True: 651, False: 4.49k]
  ------------------
 2277|  1.14k|		default:	goto yy48;
  ------------------
  |  Branch (2277:3): [True: 1.14k, False: 3.99k]
  ------------------
 2278|  5.14k|		}
 2279|  9.62k|yy45:
 2280|  9.62k|		YYDEBUG(45, *YYCURSOR);
 2281|  9.62k|		yyaccept = 4;
 2282|  9.62k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  9.62k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  9.62k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  9.62k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.62k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2283|  9.62k|		if (yych <= 'U') {
  ------------------
  |  Branch (2283:7): [True: 352, False: 9.27k]
  ------------------
 2284|    352|			if (yych <= 'M') {
  ------------------
  |  Branch (2284:8): [True: 186, False: 166]
  ------------------
 2285|    186|				if (yych == 'I') goto yy180;
  ------------------
  |  Branch (2285:9): [True: 9, False: 177]
  ------------------
 2286|    177|				goto yy48;
 2287|    186|			} else {
 2288|    166|				if (yych <= 'N') goto yy181;
  ------------------
  |  Branch (2288:9): [True: 4, False: 162]
  ------------------
 2289|    162|				if (yych <= 'O') goto yy183;
  ------------------
  |  Branch (2289:9): [True: 75, False: 87]
  ------------------
 2290|     87|				if (yych <= 'T') goto yy48;
  ------------------
  |  Branch (2290:9): [True: 85, False: 2]
  ------------------
 2291|      2|				goto yy184;
 2292|     87|			}
 2293|  9.27k|		} else {
 2294|  9.27k|			if (yych <= 'n') {
  ------------------
  |  Branch (2294:8): [True: 431, False: 8.84k]
  ------------------
 2295|    431|				if (yych == 'i') goto yy180;
  ------------------
  |  Branch (2295:9): [True: 218, False: 213]
  ------------------
 2296|    213|				if (yych <= 'm') goto yy48;
  ------------------
  |  Branch (2296:9): [True: 164, False: 49]
  ------------------
 2297|     49|				goto yy181;
 2298|  8.84k|			} else {
 2299|  8.84k|				if (yych <= 'o') goto yy183;
  ------------------
  |  Branch (2299:9): [True: 3.22k, False: 5.61k]
  ------------------
 2300|  5.61k|				if (yych == 'u') goto yy184;
  ------------------
  |  Branch (2300:9): [True: 5.13k, False: 482]
  ------------------
 2301|    482|				goto yy48;
 2302|  5.61k|			}
 2303|  9.27k|		}
 2304|  3.75k|yy46:
 2305|  3.75k|		YYDEBUG(46, *YYCURSOR);
 2306|  3.75k|		yyaccept = 4;
 2307|  3.75k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  3.75k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  3.75k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.75k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  3.75k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.75k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.75k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2308|  3.75k|		if (yych <= 'O') {
  ------------------
  |  Branch (2308:7): [True: 473, False: 3.27k]
  ------------------
 2309|    473|			if (yych == 'L') goto yy185;
  ------------------
  |  Branch (2309:8): [True: 48, False: 425]
  ------------------
 2310|    425|			if (yych <= 'N') goto yy48;
  ------------------
  |  Branch (2310:8): [True: 391, False: 34]
  ------------------
 2311|     34|			goto yy186;
 2312|  3.27k|		} else {
 2313|  3.27k|			if (yych <= 'l') {
  ------------------
  |  Branch (2313:8): [True: 3.17k, False: 102]
  ------------------
 2314|  3.17k|				if (yych <= 'k') goto yy48;
  ------------------
  |  Branch (2314:9): [True: 3.14k, False: 36]
  ------------------
 2315|     36|				goto yy185;
 2316|  3.17k|			} else {
 2317|    102|				if (yych == 'o') goto yy186;
  ------------------
  |  Branch (2317:9): [True: 84, False: 18]
  ------------------
 2318|     18|				goto yy48;
 2319|    102|			}
 2320|  3.27k|		}
 2321|   385k|yy47:
 2322|   385k|		YYDEBUG(47, *YYCURSOR);
 2323|   385k|		yyaccept = 4;
 2324|   385k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|   385k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|   385k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   385k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|   385k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   385k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   385k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2325|   385k|		YYFILL(1);
  ------------------
  |  |   53|   385k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|   385k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|   385k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|   385k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|   385k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|   385k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|   385k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|   385k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 385k]
  |  |  ------------------
  ------------------
 2326|   385k|		yych = *YYCURSOR;
  ------------------
  |  |   54|   385k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|   385k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   385k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2327|   446k|yy48:
 2328|   446k|		YYDEBUG(48, *YYCURSOR);
 2329|   446k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (2329:7): [True: 343k, False: 103k]
  ------------------
 2330|   343k|			goto yy47;
 2331|   343k|		}
 2332|   103k|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (2332:7): [True: 471, False: 102k]
  ------------------
 2333|   102k|		goto yy40;
 2334|   102k|yy49:
 2335|  10.9k|		YYDEBUG(49, *YYCURSOR);
 2336|  10.9k|		yyaccept = 4;
 2337|  10.9k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  10.9k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  10.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  10.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2338|  10.9k|		if (yych <= 'S') {
  ------------------
  |  Branch (2338:7): [True: 2.84k, False: 8.06k]
  ------------------
 2339|  2.84k|			if (yych <= 'L') {
  ------------------
  |  Branch (2339:8): [True: 671, False: 2.17k]
  ------------------
 2340|    671|				if (yych == 'F') goto yy187;
  ------------------
  |  Branch (2340:9): [True: 3, False: 668]
  ------------------
 2341|    668|				goto yy48;
 2342|  2.17k|			} else {
 2343|  2.17k|				if (yych <= 'M') goto yy189;
  ------------------
  |  Branch (2343:9): [True: 129, False: 2.04k]
  ------------------
 2344|  2.04k|				if (yych <= 'N') goto yy190;
  ------------------
  |  Branch (2344:9): [True: 2.03k, False: 8]
  ------------------
 2345|      8|				if (yych <= 'R') goto yy48;
  ------------------
  |  Branch (2345:9): [True: 0, False: 8]
  ------------------
 2346|      8|				goto yy191;
 2347|      8|			}
 2348|  8.06k|		} else {
 2349|  8.06k|			if (yych <= 'm') {
  ------------------
  |  Branch (2349:8): [True: 576, False: 7.49k]
  ------------------
 2350|    576|				if (yych == 'f') goto yy187;
  ------------------
  |  Branch (2350:9): [True: 105, False: 471]
  ------------------
 2351|    471|				if (yych <= 'l') goto yy48;
  ------------------
  |  Branch (2351:9): [True: 216, False: 255]
  ------------------
 2352|    255|				goto yy189;
 2353|  7.49k|			} else {
 2354|  7.49k|				if (yych <= 'n') goto yy190;
  ------------------
  |  Branch (2354:9): [True: 4.38k, False: 3.10k]
  ------------------
 2355|  3.10k|				if (yych == 's') goto yy191;
  ------------------
  |  Branch (2355:9): [True: 257, False: 2.85k]
  ------------------
 2356|  2.85k|				goto yy48;
 2357|  3.10k|			}
 2358|  8.06k|		}
 2359|    435|yy50:
 2360|    435|		YYDEBUG(50, *YYCURSOR);
 2361|    435|		yyaccept = 4;
 2362|    435|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    435|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    435|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    435|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    435|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    435|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    435|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2363|    435|		if (yych == 'I') goto yy192;
  ------------------
  |  Branch (2363:7): [True: 10, False: 425]
  ------------------
 2364|    425|		if (yych == 'i') goto yy192;
  ------------------
  |  Branch (2364:7): [True: 111, False: 314]
  ------------------
 2365|    314|		goto yy48;
 2366|    743|yy51:
 2367|    743|		YYDEBUG(51, *YYCURSOR);
 2368|    743|		yyaccept = 4;
 2369|    743|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    743|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    743|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    743|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    743|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    743|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    743|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2370|    743|		if (yych == 'A') goto yy193;
  ------------------
  |  Branch (2370:7): [True: 16, False: 727]
  ------------------
 2371|    727|		if (yych == 'a') goto yy193;
  ------------------
  |  Branch (2371:7): [True: 74, False: 653]
  ------------------
 2372|    653|		goto yy48;
 2373|  2.82k|yy52:
 2374|  2.82k|		YYDEBUG(52, *YYCURSOR);
 2375|  2.82k|		yyaccept = 4;
 2376|  2.82k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.82k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.82k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2377|  2.82k|		if (yych <= 'E') {
  ------------------
  |  Branch (2377:7): [True: 177, False: 2.64k]
  ------------------
 2378|    177|			if (yych == 'A') goto yy194;
  ------------------
  |  Branch (2378:8): [True: 55, False: 122]
  ------------------
 2379|    122|			if (yych <= 'D') goto yy48;
  ------------------
  |  Branch (2379:8): [True: 113, False: 9]
  ------------------
 2380|      9|			goto yy195;
 2381|  2.64k|		} else {
 2382|  2.64k|			if (yych <= 'a') {
  ------------------
  |  Branch (2382:8): [True: 351, False: 2.29k]
  ------------------
 2383|    351|				if (yych <= '`') goto yy48;
  ------------------
  |  Branch (2383:9): [True: 41, False: 310]
  ------------------
 2384|    310|				goto yy194;
 2385|  2.29k|			} else {
 2386|  2.29k|				if (yych == 'e') goto yy195;
  ------------------
  |  Branch (2386:9): [True: 1.82k, False: 470]
  ------------------
 2387|    470|				goto yy48;
 2388|  2.29k|			}
 2389|  2.64k|		}
 2390|    552|yy53:
 2391|    552|		YYDEBUG(53, *YYCURSOR);
 2392|    552|		yyaccept = 4;
 2393|    552|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    552|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    552|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    552|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    552|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    552|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    552|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2394|    552|		if (yych == 'R') goto yy196;
  ------------------
  |  Branch (2394:7): [True: 27, False: 525]
  ------------------
 2395|    525|		if (yych == 'r') goto yy196;
  ------------------
  |  Branch (2395:7): [True: 28, False: 497]
  ------------------
 2396|    497|		goto yy48;
 2397|  11.0k|yy54:
 2398|  11.0k|		YYDEBUG(54, *YYCURSOR);
 2399|  11.0k|		yyaccept = 4;
 2400|  11.0k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  11.0k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  11.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  11.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  11.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  11.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  11.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2401|  11.0k|		if (yych <= 'U') {
  ------------------
  |  Branch (2401:7): [True: 2.33k, False: 8.69k]
  ------------------
 2402|  2.33k|			if (yych == 'R') goto yy198;
  ------------------
  |  Branch (2402:8): [True: 43, False: 2.28k]
  ------------------
 2403|  2.28k|			if (yych <= 'T') goto yy48;
  ------------------
  |  Branch (2403:8): [True: 2.28k, False: 3]
  ------------------
 2404|      3|			goto yy199;
 2405|  8.69k|		} else {
 2406|  8.69k|			if (yych <= 'r') {
  ------------------
  |  Branch (2406:8): [True: 7.27k, False: 1.41k]
  ------------------
 2407|  7.27k|				if (yych <= 'q') goto yy48;
  ------------------
  |  Branch (2407:9): [True: 5.63k, False: 1.64k]
  ------------------
 2408|  1.64k|				goto yy198;
 2409|  7.27k|			} else {
 2410|  1.41k|				if (yych == 'u') goto yy199;
  ------------------
  |  Branch (2410:9): [True: 1.12k, False: 292]
  ------------------
 2411|    292|				goto yy48;
 2412|  1.41k|			}
 2413|  8.69k|		}
 2414|  5.10k|yy55:
 2415|  5.10k|		YYDEBUG(55, *YYCURSOR);
 2416|  5.10k|		yyaccept = 4;
 2417|  5.10k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  5.10k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  5.10k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.10k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  5.10k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.10k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.10k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2418|  5.10k|		if (yych == 'E') goto yy200;
  ------------------
  |  Branch (2418:7): [True: 19, False: 5.08k]
  ------------------
 2419|  5.08k|		if (yych == 'e') goto yy200;
  ------------------
  |  Branch (2419:7): [True: 1.61k, False: 3.47k]
  ------------------
 2420|  3.47k|		goto yy48;
 2421|  3.47k|yy56:
 2422|  2.51k|		YYDEBUG(56, *YYCURSOR);
 2423|  2.51k|		yyaccept = 4;
 2424|  2.51k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.51k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.51k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2425|  2.51k|		if (yych <= 'W') {
  ------------------
  |  Branch (2425:7): [True: 218, False: 2.29k]
  ------------------
 2426|    218|			if (yych == 'T') goto yy201;
  ------------------
  |  Branch (2426:8): [True: 9, False: 209]
  ------------------
 2427|    209|			if (yych <= 'V') goto yy48;
  ------------------
  |  Branch (2427:8): [True: 202, False: 7]
  ------------------
 2428|      7|			goto yy202;
 2429|  2.29k|		} else {
 2430|  2.29k|			if (yych <= 't') {
  ------------------
  |  Branch (2430:8): [True: 1.45k, False: 843]
  ------------------
 2431|  1.45k|				if (yych <= 's') goto yy48;
  ------------------
  |  Branch (2431:9): [True: 610, False: 843]
  ------------------
 2432|    843|				goto yy201;
 2433|  1.45k|			} else {
 2434|    843|				if (yych == 'w') goto yy202;
  ------------------
  |  Branch (2434:9): [True: 59, False: 784]
  ------------------
 2435|    784|				goto yy48;
 2436|    843|			}
 2437|  2.29k|		}
 2438|  4.29k|yy57:
 2439|  4.29k|		YYDEBUG(57, *YYCURSOR);
 2440|  4.29k|		yyaccept = 4;
 2441|  4.29k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  4.29k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  4.29k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.29k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  4.29k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.29k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.29k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2442|  4.29k|		if (yych <= 'R') {
  ------------------
  |  Branch (2442:7): [True: 2.11k, False: 2.17k]
  ------------------
 2443|  2.11k|			if (yych == 'H') goto yy203;
  ------------------
  |  Branch (2443:8): [True: 13, False: 2.10k]
  ------------------
 2444|  2.10k|			if (yych <= 'Q') goto yy48;
  ------------------
  |  Branch (2444:8): [True: 2.04k, False: 57]
  ------------------
 2445|     57|			goto yy204;
 2446|  2.17k|		} else {
 2447|  2.17k|			if (yych <= 'h') {
  ------------------
  |  Branch (2447:8): [True: 1.33k, False: 843]
  ------------------
 2448|  1.33k|				if (yych <= 'g') goto yy48;
  ------------------
  |  Branch (2448:9): [True: 1.19k, False: 141]
  ------------------
 2449|    141|				goto yy203;
 2450|  1.33k|			} else {
 2451|    843|				if (yych == 'r') goto yy204;
  ------------------
  |  Branch (2451:9): [True: 648, False: 195]
  ------------------
 2452|    195|				goto yy48;
 2453|    843|			}
 2454|  2.17k|		}
 2455|  1.00k|yy58:
 2456|  1.00k|		YYDEBUG(58, *YYCURSOR);
 2457|  1.00k|		yyaccept = 4;
 2458|  1.00k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.00k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.00k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2459|  1.00k|		if (yych <= 'S') {
  ------------------
  |  Branch (2459:7): [True: 104, False: 904]
  ------------------
 2460|    104|			if (yych == 'N') goto yy205;
  ------------------
  |  Branch (2460:8): [True: 18, False: 86]
  ------------------
 2461|     86|			if (yych <= 'R') goto yy48;
  ------------------
  |  Branch (2461:8): [True: 86, False: 0]
  ------------------
 2462|      0|			goto yy206;
 2463|    904|		} else {
 2464|    904|			if (yych <= 'n') {
  ------------------
  |  Branch (2464:8): [True: 561, False: 343]
  ------------------
 2465|    561|				if (yych <= 'm') goto yy48;
  ------------------
  |  Branch (2465:9): [True: 183, False: 378]
  ------------------
 2466|    378|				goto yy205;
 2467|    561|			} else {
 2468|    343|				if (yych == 's') goto yy206;
  ------------------
  |  Branch (2468:9): [True: 272, False: 71]
  ------------------
 2469|     71|				goto yy48;
 2470|    343|			}
 2471|    904|		}
 2472|  2.58k|yy59:
 2473|  2.58k|		YYDEBUG(59, *YYCURSOR);
 2474|  2.58k|		yyaccept = 4;
 2475|  2.58k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.58k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.58k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.58k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.58k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.58k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.58k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2476|  2.58k|		if (yych == 'A') goto yy207;
  ------------------
  |  Branch (2476:7): [True: 8, False: 2.58k]
  ------------------
 2477|  2.58k|		if (yych == 'a') goto yy207;
  ------------------
  |  Branch (2477:7): [True: 2.23k, False: 348]
  ------------------
 2478|    348|		goto yy48;
 2479|    348|yy60:
 2480|    155|		YYDEBUG(60, *YYCURSOR);
 2481|    155|		yyaccept = 4;
 2482|    155|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    155|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    155|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2483|    155|		if (yych == 'H') goto yy208;
  ------------------
  |  Branch (2483:7): [True: 12, False: 143]
  ------------------
 2484|    143|		if (yych == 'h') goto yy208;
  ------------------
  |  Branch (2484:7): [True: 30, False: 113]
  ------------------
 2485|    113|		goto yy48;
 2486|    594|yy61:
 2487|    594|		YYDEBUG(61, *YYCURSOR);
 2488|    594|		yyaccept = 4;
 2489|    594|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    594|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    594|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    594|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    594|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    594|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    594|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2490|    594|		if (yych == 'O') goto yy209;
  ------------------
  |  Branch (2490:7): [True: 11, False: 583]
  ------------------
 2491|    583|		if (yych == 'o') goto yy209;
  ------------------
  |  Branch (2491:7): [True: 1, False: 582]
  ------------------
 2492|    582|		goto yy48;
 2493|  2.01k|yy62:
 2494|  2.01k|		YYDEBUG(62, *YYCURSOR);
 2495|  2.01k|		yyaccept = 4;
 2496|  2.01k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.01k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.01k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.01k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.01k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.01k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.01k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2497|  2.01k|		if (yych == 'I') goto yy210;
  ------------------
  |  Branch (2497:7): [True: 17, False: 1.99k]
  ------------------
 2498|  1.99k|		if (yych == 'i') goto yy210;
  ------------------
  |  Branch (2498:7): [True: 1.37k, False: 617]
  ------------------
 2499|    617|		goto yy48;
 2500|  7.02k|yy63:
 2501|  7.02k|		YYDEBUG(63, *YYCURSOR);
 2502|  7.02k|		++YYCURSOR;
  ------------------
  |  |   54|  7.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2503|  7.02k|		goto yy21;
 2504|  1.50k|yy64:
 2505|  1.50k|		YYDEBUG(64, *YYCURSOR);
 2506|  1.50k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  1.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2507|  1.50k|		if (yych <= '_') {
  ------------------
  |  Branch (2507:7): [True: 1.07k, False: 432]
  ------------------
 2508|  1.07k|			if (yych <= '@') goto yy65;
  ------------------
  |  Branch (2508:8): [True: 251, False: 825]
  ------------------
 2509|    825|			if (yych <= 'Z') goto yy211;
  ------------------
  |  Branch (2509:8): [True: 242, False: 583]
  ------------------
 2510|    583|			if (yych >= '_') goto yy211;
  ------------------
  |  Branch (2510:8): [True: 145, False: 438]
  ------------------
 2511|    583|		} else {
 2512|    432|			if (yych <= '`') goto yy65;
  ------------------
  |  Branch (2512:8): [True: 19, False: 413]
  ------------------
 2513|    413|			if (yych <= 'z') goto yy211;
  ------------------
  |  Branch (2513:8): [True: 119, False: 294]
  ------------------
 2514|    294|			if (yych >= 0x80) goto yy211;
  ------------------
  |  Branch (2514:8): [True: 254, False: 40]
  ------------------
 2515|    294|		}
 2516|    748|yy65:
 2517|    748|		YYDEBUG(65, *YYCURSOR);
 2518|    748|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    748|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    748|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    748|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    748|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    748|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    748|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    748|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    748|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2519|    748|#line 2450 "Zend/zend_language_scanner.l"
 2520|    748|		{
 2521|    748|	RETURN_TOKEN(T_NS_SEPARATOR);
  ------------------
  |  | 1318|    748|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    748|		token = _token; \
  |  | 1320|    748|		goto emit_token; \
  |  | 1321|    748|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2522|    748|}
 2523|      0|#line 2524 "Zend/zend_language_scanner.c"
 2524|  5.94k|yy66:
 2525|  5.94k|		YYDEBUG(66, *YYCURSOR);
 2526|  5.94k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  5.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.94k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2527|  5.94k|		if (yych == '=') goto yy214;
  ------------------
  |  Branch (2527:7): [True: 0, False: 5.94k]
  ------------------
 2528|  5.94k|		goto yy9;
 2529|  5.94k|yy67:
 2530|  1.67k|		YYDEBUG(67, *YYCURSOR);
 2531|  1.67k|		yyaccept = 4;
 2532|  1.67k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.67k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.67k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.67k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.67k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.67k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.67k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2533|  1.67k|		if (yych == '_') goto yy216;
  ------------------
  |  Branch (2533:7): [True: 1.39k, False: 275]
  ------------------
 2534|    275|		goto yy48;
 2535|  1.89k|yy68:
 2536|  1.89k|		YYDEBUG(68, *YYCURSOR);
 2537|  1.89k|		++YYCURSOR;
  ------------------
  |  |   54|  1.89k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.89k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.89k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2538|  1.89k|		YYDEBUG(69, *YYCURSOR);
 2539|  1.89k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.89k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.89k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.89k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.89k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.89k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.89k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.89k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.89k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2540|  1.89k|#line 2825 "Zend/zend_language_scanner.l"
 2541|  1.89k|		{
 2542|  1.89k|	BEGIN(ST_BACKQUOTE);
  ------------------
  |  |   64|  1.89k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  1.89k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.89k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.89k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2543|  1.89k|	RETURN_TOKEN('`');
  ------------------
  |  | 1318|  1.89k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  1.89k|		token = _token; \
  |  | 1320|  1.89k|		goto emit_token; \
  |  | 1321|  1.89k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2544|  1.89k|}
 2545|      0|#line 2546 "Zend/zend_language_scanner.c"
 2546|  9.85k|yy70:
 2547|  9.85k|		YYDEBUG(70, *YYCURSOR);
 2548|  9.85k|		++YYCURSOR;
  ------------------
  |  |   54|  9.85k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.85k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2549|  9.85k|		YYDEBUG(71, *YYCURSOR);
 2550|  9.85k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  9.85k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  9.85k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  9.85k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.85k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  9.85k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  9.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2551|  9.85k|#line 1973 "Zend/zend_language_scanner.l"
 2552|  9.85k|		{
 2553|  9.85k|	yy_push_state(ST_IN_SCRIPTING);
  ------------------
  |  |  173|  9.85k|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 2554|  9.85k|	enter_nesting('{');
 2555|  9.85k|	RETURN_TOKEN('{');
  ------------------
  |  | 1318|  9.85k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  9.85k|		token = _token; \
  |  | 1320|  9.85k|		goto emit_token; \
  |  | 1321|  9.85k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2556|  9.85k|}
 2557|      0|#line 2558 "Zend/zend_language_scanner.c"
 2558|    496|yy72:
 2559|    496|		YYDEBUG(72, *YYCURSOR);
 2560|    496|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    496|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    496|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    496|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2561|    496|		if (yych <= '>') {
  ------------------
  |  Branch (2561:7): [True: 212, False: 284]
  ------------------
 2562|    212|			if (yych <= '<') goto yy9;
  ------------------
  |  Branch (2562:8): [True: 165, False: 47]
  ------------------
 2563|     47|			if (yych <= '=') goto yy217;
  ------------------
  |  Branch (2563:8): [True: 11, False: 36]
  ------------------
 2564|     36|			goto yy219;
 2565|    284|		} else {
 2566|    284|			if (yych == '|') goto yy221;
  ------------------
  |  Branch (2566:8): [True: 46, False: 238]
  ------------------
 2567|    238|			goto yy9;
 2568|    284|		}
 2569|  11.5k|yy73:
 2570|  11.5k|		YYDEBUG(73, *YYCURSOR);
 2571|  11.5k|		++YYCURSOR;
  ------------------
  |  |   54|  11.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  11.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  11.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2572|  11.5k|		YYDEBUG(74, *YYCURSOR);
 2573|  11.5k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  11.5k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  11.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  11.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  11.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  11.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  11.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  11.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  11.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2574|  11.5k|#line 1986 "Zend/zend_language_scanner.l"
 2575|  11.5k|		{
 2576|  11.5k|	RESET_DOC_COMMENT();
  ------------------
  |  |   47|  11.5k|#define RESET_DOC_COMMENT() do { \
  |  |   48|  11.5k|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|  11.5k|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 11.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      0|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      0|	} \
  |  |   52|  11.5k|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 11.5k]
  |  |  ------------------
  ------------------
 2577|  11.5k|	if (!zend_stack_is_empty(&SCNG(state_stack))) {
  ------------------
  |  |   87|  11.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  11.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (2577:6): [True: 5.02k, False: 6.50k]
  ------------------
 2578|  5.02k|		yy_pop_state();
 2579|  5.02k|	}
 2580|  11.5k|	RETURN_EXIT_NESTING_TOKEN('}');
  ------------------
  |  | 1347|  11.5k|#define RETURN_EXIT_NESTING_TOKEN(_token) do { \
  |  | 1348|  11.5k|		if (exit_nesting(_token) != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  6.51k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  6.51k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 4, False: 6.50k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1348:7): [True: 6.51k, False: 5.01k]
  |  |  ------------------
  |  | 1349|      4|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|      4|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|      4|		token = _token; \
  |  |  |  | 1320|      4|		goto emit_token; \
  |  |  |  | 1321|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1350|  11.5k|		} else { \
  |  | 1351|  11.5k|			RETURN_TOKEN(_token); \
  |  |  ------------------
  |  |  |  | 1318|  11.5k|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|  11.5k|		token = _token; \
  |  |  |  | 1320|  11.5k|		goto emit_token; \
  |  |  |  | 1321|  11.5k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1352|  11.5k|		} \
  |  | 1353|  11.5k|	} while(0)
  |  |  ------------------
  |  |  |  Branch (1353:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2581|  11.5k|}
 2582|      0|#line 2583 "Zend/zend_language_scanner.c"
 2583|     62|yy75:
 2584|     62|		YYDEBUG(75, *YYCURSOR);
 2585|     62|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     62|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     62|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     62|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2586|     62|		if (yych == '=') goto yy223;
  ------------------
  |  Branch (2586:7): [True: 5, False: 57]
  ------------------
 2587|    373|yy76:
 2588|    373|		YYDEBUG(76, *YYCURSOR);
 2589|    373|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    373|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    373|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2590|    373|#line 1845 "Zend/zend_language_scanner.l"
 2591|    373|		{
 2592|    373|	RETURN_TOKEN(T_IS_NOT_EQUAL);
  ------------------
  |  | 1318|    373|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    373|		token = _token; \
  |  | 1320|    373|		goto emit_token; \
  |  | 1321|    373|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2593|    373|}
 2594|      0|#line 2595 "Zend/zend_language_scanner.c"
 2595|    179|yy77:
 2596|    179|		YYDEBUG(77, *YYCURSOR);
 2597|    179|		++YYCURSOR;
  ------------------
  |  |   54|    179|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    179|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    179|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2598|    179|		YYDEBUG(78, *YYCURSOR);
 2599|    179|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    179|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    179|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    179|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    179|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    179|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    179|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    179|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    179|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2600|    179|#line 1422 "Zend/zend_language_scanner.l"
 2601|    179|		{
 2602|    179|	enter_nesting('[');
 2603|    179|	RETURN_TOKEN(T_ATTRIBUTE);
  ------------------
  |  | 1318|    179|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    179|		token = _token; \
  |  | 1320|    179|		goto emit_token; \
  |  | 1321|    179|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2604|    179|}
 2605|      0|#line 2606 "Zend/zend_language_scanner.c"
 2606|  32.5k|yy79:
 2607|  32.5k|		YYDEBUG(79, *YYCURSOR);
 2608|  32.5k|		++YYCURSOR;
  ------------------
  |  |   54|  32.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  32.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2609|  32.5k|		YYFILL(1);
  ------------------
  |  |   53|  32.5k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  32.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  32.5k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  32.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  32.5k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  32.5k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  32.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  32.5k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 32.5k]
  |  |  ------------------
  ------------------
 2610|  32.5k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  32.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  32.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2611|  32.5k|		YYDEBUG(80, *YYCURSOR);
 2612|  32.5k|		if (yych <= '^') {
  ------------------
  |  Branch (2612:7): [True: 14.0k, False: 18.4k]
  ------------------
 2613|  14.0k|			if (yych <= '9') {
  ------------------
  |  Branch (2613:8): [True: 9.36k, False: 4.69k]
  ------------------
 2614|  9.36k|				if (yych >= '0') goto yy79;
  ------------------
  |  Branch (2614:9): [True: 595, False: 8.77k]
  ------------------
 2615|  9.36k|			} else {
 2616|  4.69k|				if (yych <= '@') goto yy81;
  ------------------
  |  Branch (2616:9): [True: 2.19k, False: 2.50k]
  ------------------
 2617|  2.50k|				if (yych <= 'Z') goto yy79;
  ------------------
  |  Branch (2617:9): [True: 1.49k, False: 1.01k]
  ------------------
 2618|  2.50k|			}
 2619|  18.4k|		} else {
 2620|  18.4k|			if (yych <= '`') {
  ------------------
  |  Branch (2620:8): [True: 107, False: 18.3k]
  ------------------
 2621|    107|				if (yych <= '_') goto yy79;
  ------------------
  |  Branch (2621:9): [True: 94, False: 13]
  ------------------
 2622|  18.3k|			} else {
 2623|  18.3k|				if (yych <= 'z') goto yy79;
  ------------------
  |  Branch (2623:9): [True: 15.5k, False: 2.86k]
  ------------------
 2624|  2.86k|				if (yych >= 0x80) goto yy79;
  ------------------
  |  Branch (2624:9): [True: 2.75k, False: 110]
  ------------------
 2625|  2.86k|			}
 2626|  18.4k|		}
 2627|  12.0k|yy81:
 2628|  12.0k|		YYDEBUG(81, *YYCURSOR);
 2629|  12.0k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  12.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  12.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2630|  12.0k|#line 2416 "Zend/zend_language_scanner.l"
 2631|  12.0k|		{
 2632|  12.0k|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|  12.0k|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|  12.0k|		token = _token; \
  |  | 1330|  12.0k|		offset = _offset; \
  |  | 1331|  12.0k|		goto emit_token_with_str; \
  |  | 1332|  12.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2633|  12.0k|}
 2634|      0|#line 2635 "Zend/zend_language_scanner.c"
 2635|     10|yy82:
 2636|     10|		YYDEBUG(82, *YYCURSOR);
 2637|     10|		++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2638|     10|		YYDEBUG(83, *YYCURSOR);
 2639|     10|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     10|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 2640|     10|#line 1889 "Zend/zend_language_scanner.l"
 2641|     10|		{
 2642|     10|	RETURN_TOKEN(T_MOD_EQUAL);
  ------------------
  |  | 1318|     10|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     10|		token = _token; \
  |  | 1320|     10|		goto emit_token; \
  |  | 1321|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2643|     10|}
 2644|      0|#line 2645 "Zend/zend_language_scanner.c"
 2645|  2.16k|yy84:
 2646|  2.16k|		YYDEBUG(84, *YYCURSOR);
 2647|  2.16k|		++YYCURSOR;
  ------------------
  |  |   54|  2.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.16k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2648|  2.16k|		YYFILL(3);
  ------------------
  |  |   53|  2.16k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.16k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.16k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.16k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.16k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.16k]
  |  |  ------------------
  ------------------
 2649|  2.16k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.16k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2650|  3.38k|yy85:
 2651|  3.38k|		YYDEBUG(85, *YYCURSOR);
 2652|  3.38k|		if (yych <= ' ') {
  ------------------
  |  Branch (2652:7): [True: 1.19k, False: 2.19k]
  ------------------
 2653|  1.19k|			if (yych <= '\f') {
  ------------------
  |  Branch (2653:8): [True: 826, False: 368]
  ------------------
 2654|    826|				if (yych <= 0x08) goto yy86;
  ------------------
  |  Branch (2654:9): [True: 77, False: 749]
  ------------------
 2655|    749|				if (yych <= '\n') goto yy84;
  ------------------
  |  Branch (2655:9): [True: 744, False: 5]
  ------------------
 2656|    749|			} else {
 2657|    368|				if (yych <= '\r') goto yy84;
  ------------------
  |  Branch (2657:9): [True: 75, False: 293]
  ------------------
 2658|    293|				if (yych >= ' ') goto yy84;
  ------------------
  |  Branch (2658:9): [True: 284, False: 9]
  ------------------
 2659|    293|			}
 2660|  2.19k|		} else {
 2661|  2.19k|			if (yych <= '$') {
  ------------------
  |  Branch (2661:8): [True: 1.84k, False: 353]
  ------------------
 2662|  1.84k|				if (yych <= '"') goto yy86;
  ------------------
  |  Branch (2662:9): [True: 6, False: 1.83k]
  ------------------
 2663|  1.83k|				if (yych <= '#') goto yy87;
  ------------------
  |  Branch (2663:9): [True: 1.35k, False: 483]
  ------------------
 2664|    483|				goto yy88;
 2665|  1.83k|			} else {
 2666|    353|				if (yych <= '-') goto yy86;
  ------------------
  |  Branch (2666:9): [True: 42, False: 311]
  ------------------
 2667|    311|				if (yych <= '.') goto yy92;
  ------------------
  |  Branch (2667:9): [True: 23, False: 288]
  ------------------
 2668|    288|				if (yych <= '/') goto yy93;
  ------------------
  |  Branch (2668:9): [True: 101, False: 187]
  ------------------
 2669|    288|			}
 2670|  2.19k|		}
 2671|  32.7k|yy86:
 2672|  32.7k|		YYDEBUG(86, *YYCURSOR);
 2673|  32.7k|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|  32.7k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  32.7k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|  32.7k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  32.7k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  32.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2674|  32.7k|		if (yyaccept <= 48) {
  ------------------
  |  Branch (2674:7): [True: 30.6k, False: 2.19k]
  ------------------
 2675|  30.6k|			if (yyaccept <= 24) {
  ------------------
  |  Branch (2675:8): [True: 30.4k, False: 149]
  ------------------
 2676|  30.4k|				if (yyaccept <= 12) {
  ------------------
  |  Branch (2676:9): [True: 30.3k, False: 101]
  ------------------
 2677|  30.3k|					if (yyaccept <= 6) {
  ------------------
  |  Branch (2677:10): [True: 20.2k, False: 10.1k]
  ------------------
 2678|  20.2k|						if (yyaccept <= 3) {
  ------------------
  |  Branch (2678:11): [True: 19.7k, False: 487]
  ------------------
 2679|  19.7k|							if (yyaccept <= 1) {
  ------------------
  |  Branch (2679:12): [True: 19.5k, False: 164]
  ------------------
 2680|  19.5k|								if (yyaccept == 0) {
  ------------------
  |  Branch (2680:13): [True: 584, False: 19.0k]
  ------------------
 2681|    584|									goto yy17;
 2682|  19.0k|								} else {
 2683|  19.0k|									goto yy21;
 2684|  19.0k|								}
 2685|  19.5k|							} else {
 2686|    164|								if (yyaccept == 2) {
  ------------------
  |  Branch (2686:13): [True: 70, False: 94]
  ------------------
 2687|     70|									goto yy9;
 2688|     94|								} else {
 2689|     94|									goto yy31;
 2690|     94|								}
 2691|    164|							}
 2692|  19.7k|						} else {
 2693|    487|							if (yyaccept <= 5) {
  ------------------
  |  Branch (2693:12): [True: 454, False: 33]
  ------------------
 2694|    454|								if (yyaccept == 4) {
  ------------------
  |  Branch (2694:13): [True: 409, False: 45]
  ------------------
 2695|    409|									goto yy40;
 2696|    409|								} else {
 2697|     45|									goto yy125;
 2698|     45|								}
 2699|    454|							} else {
 2700|     33|								goto yy129;
 2701|     33|							}
 2702|    487|						}
 2703|  20.2k|					} else {
 2704|  10.1k|						if (yyaccept <= 9) {
  ------------------
  |  Branch (2704:11): [True: 10.1k, False: 8]
  ------------------
 2705|  10.1k|							if (yyaccept <= 8) {
  ------------------
  |  Branch (2705:12): [True: 10.1k, False: 0]
  ------------------
 2706|  10.1k|								if (yyaccept == 7) {
  ------------------
  |  Branch (2706:13): [True: 10.1k, False: 2]
  ------------------
 2707|  10.1k|									goto yy142;
 2708|  10.1k|								} else {
 2709|      2|									goto yy163;
 2710|      2|								}
 2711|  10.1k|							} else {
 2712|      0|								goto yy173;
 2713|      0|							}
 2714|  10.1k|						} else {
 2715|      8|							if (yyaccept <= 11) {
  ------------------
  |  Branch (2715:12): [True: 5, False: 3]
  ------------------
 2716|      5|								if (yyaccept == 10) {
  ------------------
  |  Branch (2716:13): [True: 4, False: 1]
  ------------------
 2717|      4|									goto yy182;
 2718|      4|								} else {
 2719|      1|									goto yy188;
 2720|      1|								}
 2721|      5|							} else {
 2722|      3|								goto yy197;
 2723|      3|							}
 2724|      8|						}
 2725|  10.1k|					}
 2726|  30.3k|				} else {
 2727|    101|					if (yyaccept <= 18) {
  ------------------
  |  Branch (2727:10): [True: 90, False: 11]
  ------------------
 2728|     90|						if (yyaccept <= 15) {
  ------------------
  |  Branch (2728:11): [True: 57, False: 33]
  ------------------
 2729|     57|							if (yyaccept <= 14) {
  ------------------
  |  Branch (2729:12): [True: 55, False: 2]
  ------------------
 2730|     55|								if (yyaccept == 13) {
  ------------------
  |  Branch (2730:13): [True: 54, False: 1]
  ------------------
 2731|     54|									goto yy213;
 2732|     54|								} else {
 2733|      1|									goto yy251;
 2734|      1|								}
 2735|     55|							} else {
 2736|      2|								goto yy257;
 2737|      2|							}
 2738|     57|						} else {
 2739|     33|							if (yyaccept <= 17) {
  ------------------
  |  Branch (2739:12): [True: 1, False: 32]
  ------------------
 2740|      1|								if (yyaccept == 16) {
  ------------------
  |  Branch (2740:13): [True: 1, False: 0]
  ------------------
 2741|      1|									goto yy260;
 2742|      1|								} else {
 2743|      0|									goto yy279;
 2744|      0|								}
 2745|     32|							} else {
 2746|     32|								goto yy283;
 2747|     32|							}
 2748|     33|						}
 2749|     90|					} else {
 2750|     11|						if (yyaccept <= 21) {
  ------------------
  |  Branch (2750:11): [True: 4, False: 7]
  ------------------
 2751|      4|							if (yyaccept <= 20) {
  ------------------
  |  Branch (2751:12): [True: 1, False: 3]
  ------------------
 2752|      1|								if (yyaccept == 19) {
  ------------------
  |  Branch (2752:13): [True: 1, False: 0]
  ------------------
 2753|      1|									goto yy295;
 2754|      1|								} else {
 2755|      0|									goto yy306;
 2756|      0|								}
 2757|      3|							} else {
 2758|      3|								goto yy319;
 2759|      3|							}
 2760|      7|						} else {
 2761|      7|							if (yyaccept <= 23) {
  ------------------
  |  Branch (2761:12): [True: 3, False: 4]
  ------------------
 2762|      3|								if (yyaccept == 22) {
  ------------------
  |  Branch (2762:13): [True: 0, False: 3]
  ------------------
 2763|      0|									goto yy331;
 2764|      3|								} else {
 2765|      3|									goto yy334;
 2766|      3|								}
 2767|      4|							} else {
 2768|      4|								goto yy336;
 2769|      4|							}
 2770|      7|						}
 2771|     11|					}
 2772|    101|				}
 2773|  30.4k|			} else {
 2774|    149|				if (yyaccept <= 36) {
  ------------------
  |  Branch (2774:9): [True: 130, False: 19]
  ------------------
 2775|    130|					if (yyaccept <= 30) {
  ------------------
  |  Branch (2775:10): [True: 121, False: 9]
  ------------------
 2776|    121|						if (yyaccept <= 27) {
  ------------------
  |  Branch (2776:11): [True: 120, False: 1]
  ------------------
 2777|    120|							if (yyaccept <= 26) {
  ------------------
  |  Branch (2777:12): [True: 120, False: 0]
  ------------------
 2778|    120|								if (yyaccept == 25) {
  ------------------
  |  Branch (2778:13): [True: 0, False: 120]
  ------------------
 2779|      0|									goto yy339;
 2780|    120|								} else {
 2781|    120|									goto yy89;
 2782|    120|								}
 2783|    120|							} else {
 2784|      0|								goto yy379;
 2785|      0|							}
 2786|    120|						} else {
 2787|      1|							if (yyaccept <= 29) {
  ------------------
  |  Branch (2787:12): [True: 0, False: 1]
  ------------------
 2788|      0|								if (yyaccept == 28) {
  ------------------
  |  Branch (2788:13): [True: 0, False: 0]
  ------------------
 2789|      0|									goto yy388;
 2790|      0|								} else {
 2791|      0|									goto yy390;
 2792|      0|								}
 2793|      1|							} else {
 2794|      1|								goto yy399;
 2795|      1|							}
 2796|      1|						}
 2797|    121|					} else {
 2798|      9|						if (yyaccept <= 33) {
  ------------------
  |  Branch (2798:11): [True: 9, False: 0]
  ------------------
 2799|      9|							if (yyaccept <= 32) {
  ------------------
  |  Branch (2799:12): [True: 6, False: 3]
  ------------------
 2800|      6|								if (yyaccept == 31) {
  ------------------
  |  Branch (2800:13): [True: 4, False: 2]
  ------------------
 2801|      4|									goto yy401;
 2802|      4|								} else {
 2803|      2|									goto yy408;
 2804|      2|								}
 2805|      6|							} else {
 2806|      3|								goto yy415;
 2807|      3|							}
 2808|      9|						} else {
 2809|      0|							if (yyaccept <= 35) {
  ------------------
  |  Branch (2809:12): [True: 0, False: 0]
  ------------------
 2810|      0|								if (yyaccept == 34) {
  ------------------
  |  Branch (2810:13): [True: 0, False: 0]
  ------------------
 2811|      0|									goto yy471;
 2812|      0|								} else {
 2813|      0|									goto yy473;
 2814|      0|								}
 2815|      0|							} else {
 2816|      0|								goto yy476;
 2817|      0|							}
 2818|      0|						}
 2819|      9|					}
 2820|    130|				} else {
 2821|     19|					if (yyaccept <= 42) {
  ------------------
  |  Branch (2821:10): [True: 18, False: 1]
  ------------------
 2822|     18|						if (yyaccept <= 39) {
  ------------------
  |  Branch (2822:11): [True: 18, False: 0]
  ------------------
 2823|     18|							if (yyaccept <= 38) {
  ------------------
  |  Branch (2823:12): [True: 17, False: 1]
  ------------------
 2824|     17|								if (yyaccept == 37) {
  ------------------
  |  Branch (2824:13): [True: 9, False: 8]
  ------------------
 2825|      9|									goto yy478;
 2826|      9|								} else {
 2827|      8|									goto yy480;
 2828|      8|								}
 2829|     17|							} else {
 2830|      1|								goto yy482;
 2831|      1|							}
 2832|     18|						} else {
 2833|      0|							if (yyaccept <= 41) {
  ------------------
  |  Branch (2833:12): [True: 0, False: 0]
  ------------------
 2834|      0|								if (yyaccept == 40) {
  ------------------
  |  Branch (2834:13): [True: 0, False: 0]
  ------------------
 2835|      0|									goto yy488;
 2836|      0|								} else {
 2837|      0|									goto yy492;
 2838|      0|								}
 2839|      0|							} else {
 2840|      0|								goto yy501;
 2841|      0|							}
 2842|      0|						}
 2843|     18|					} else {
 2844|      1|						if (yyaccept <= 45) {
  ------------------
  |  Branch (2844:11): [True: 0, False: 1]
  ------------------
 2845|      0|							if (yyaccept <= 44) {
  ------------------
  |  Branch (2845:12): [True: 0, False: 0]
  ------------------
 2846|      0|								if (yyaccept == 43) {
  ------------------
  |  Branch (2846:13): [True: 0, False: 0]
  ------------------
 2847|      0|									goto yy511;
 2848|      0|								} else {
 2849|      0|									goto yy513;
 2850|      0|								}
 2851|      0|							} else {
 2852|      0|								goto yy516;
 2853|      0|							}
 2854|      1|						} else {
 2855|      1|							if (yyaccept <= 47) {
  ------------------
  |  Branch (2855:12): [True: 0, False: 1]
  ------------------
 2856|      0|								if (yyaccept == 46) {
  ------------------
  |  Branch (2856:13): [True: 0, False: 0]
  ------------------
 2857|      0|									goto yy526;
 2858|      0|								} else {
 2859|      0|									goto yy528;
 2860|      0|								}
 2861|      1|							} else {
 2862|      1|								goto yy530;
 2863|      1|							}
 2864|      1|						}
 2865|      1|					}
 2866|     19|				}
 2867|    149|			}
 2868|  30.6k|		} else {
 2869|  2.19k|			if (yyaccept <= 72) {
  ------------------
  |  Branch (2869:8): [True: 2.02k, False: 163]
  ------------------
 2870|  2.02k|				if (yyaccept <= 60) {
  ------------------
  |  Branch (2870:9): [True: 1.59k, False: 430]
  ------------------
 2871|  1.59k|					if (yyaccept <= 54) {
  ------------------
  |  Branch (2871:10): [True: 1.59k, False: 6]
  ------------------
 2872|  1.59k|						if (yyaccept <= 51) {
  ------------------
  |  Branch (2872:11): [True: 918, False: 674]
  ------------------
 2873|    918|							if (yyaccept <= 50) {
  ------------------
  |  Branch (2873:12): [True: 918, False: 0]
  ------------------
 2874|    918|								if (yyaccept == 49) {
  ------------------
  |  Branch (2874:13): [True: 0, False: 918]
  ------------------
 2875|      0|									goto yy532;
 2876|    918|								} else {
 2877|    918|									goto yy534;
 2878|    918|								}
 2879|    918|							} else {
 2880|      0|								goto yy576;
 2881|      0|							}
 2882|    918|						} else {
 2883|    674|							if (yyaccept <= 53) {
  ------------------
  |  Branch (2883:12): [True: 674, False: 0]
  ------------------
 2884|    674|								if (yyaccept == 52) {
  ------------------
  |  Branch (2884:13): [True: 0, False: 674]
  ------------------
 2885|      0|									goto yy579;
 2886|    674|								} else {
 2887|    674|									goto yy583;
 2888|    674|								}
 2889|    674|							} else {
 2890|      0|								goto yy597;
 2891|      0|							}
 2892|    674|						}
 2893|  1.59k|					} else {
 2894|      6|						if (yyaccept <= 57) {
  ------------------
  |  Branch (2894:11): [True: 5, False: 1]
  ------------------
 2895|      5|							if (yyaccept <= 56) {
  ------------------
  |  Branch (2895:12): [True: 4, False: 1]
  ------------------
 2896|      4|								if (yyaccept == 55) {
  ------------------
  |  Branch (2896:13): [True: 4, False: 0]
  ------------------
 2897|      4|									goto yy607;
 2898|      4|								} else {
 2899|      0|									goto yy611;
 2900|      0|								}
 2901|      4|							} else {
 2902|      1|								goto yy613;
 2903|      1|							}
 2904|      5|						} else {
 2905|      1|							if (yyaccept <= 59) {
  ------------------
  |  Branch (2905:12): [True: 1, False: 0]
  ------------------
 2906|      1|								if (yyaccept == 58) {
  ------------------
  |  Branch (2906:13): [True: 1, False: 0]
  ------------------
 2907|      1|									goto yy615;
 2908|      1|								} else {
 2909|      0|									goto yy654;
 2910|      0|								}
 2911|      1|							} else {
 2912|      0|								goto yy656;
 2913|      0|							}
 2914|      1|						}
 2915|      6|					}
 2916|  1.59k|				} else {
 2917|    430|					if (yyaccept <= 66) {
  ------------------
  |  Branch (2917:10): [True: 429, False: 1]
  ------------------
 2918|    429|						if (yyaccept <= 63) {
  ------------------
  |  Branch (2918:11): [True: 2, False: 427]
  ------------------
 2919|      2|							if (yyaccept <= 62) {
  ------------------
  |  Branch (2919:12): [True: 0, False: 2]
  ------------------
 2920|      0|								if (yyaccept == 61) {
  ------------------
  |  Branch (2920:13): [True: 0, False: 0]
  ------------------
 2921|      0|									goto yy671;
 2922|      0|								} else {
 2923|      0|									goto yy673;
 2924|      0|								}
 2925|      2|							} else {
 2926|      2|								goto yy675;
 2927|      2|							}
 2928|    427|						} else {
 2929|    427|							if (yyaccept <= 65) {
  ------------------
  |  Branch (2929:12): [True: 427, False: 0]
  ------------------
 2930|    427|								if (yyaccept == 64) {
  ------------------
  |  Branch (2930:13): [True: 0, False: 427]
  ------------------
 2931|      0|									goto yy679;
 2932|    427|								} else {
 2933|    427|									goto yy685;
 2934|    427|								}
 2935|    427|							} else {
 2936|      0|								goto yy690;
 2937|      0|							}
 2938|    427|						}
 2939|    429|					} else {
 2940|      1|						if (yyaccept <= 69) {
  ------------------
  |  Branch (2940:11): [True: 1, False: 0]
  ------------------
 2941|      1|							if (yyaccept <= 68) {
  ------------------
  |  Branch (2941:12): [True: 1, False: 0]
  ------------------
 2942|      1|								if (yyaccept == 67) {
  ------------------
  |  Branch (2942:13): [True: 1, False: 0]
  ------------------
 2943|      1|									goto yy700;
 2944|      1|								} else {
 2945|      0|									goto yy726;
 2946|      0|								}
 2947|      1|							} else {
 2948|      0|								goto yy728;
 2949|      0|							}
 2950|      1|						} else {
 2951|      0|							if (yyaccept <= 71) {
  ------------------
  |  Branch (2951:12): [True: 0, False: 0]
  ------------------
 2952|      0|								if (yyaccept == 70) {
  ------------------
  |  Branch (2952:13): [True: 0, False: 0]
  ------------------
 2953|      0|									goto yy730;
 2954|      0|								} else {
 2955|      0|									goto yy735;
 2956|      0|								}
 2957|      0|							} else {
 2958|      0|								goto yy743;
 2959|      0|							}
 2960|      0|						}
 2961|      1|					}
 2962|    430|				}
 2963|  2.02k|			} else {
 2964|    163|				if (yyaccept <= 84) {
  ------------------
  |  Branch (2964:9): [True: 44, False: 119]
  ------------------
 2965|     44|					if (yyaccept <= 78) {
  ------------------
  |  Branch (2965:10): [True: 10, False: 34]
  ------------------
 2966|     10|						if (yyaccept <= 75) {
  ------------------
  |  Branch (2966:11): [True: 10, False: 0]
  ------------------
 2967|     10|							if (yyaccept <= 74) {
  ------------------
  |  Branch (2967:12): [True: 10, False: 0]
  ------------------
 2968|     10|								if (yyaccept == 73) {
  ------------------
  |  Branch (2968:13): [True: 0, False: 10]
  ------------------
 2969|      0|									goto yy754;
 2970|     10|								} else {
 2971|     10|									goto yy764;
 2972|     10|								}
 2973|     10|							} else {
 2974|      0|								goto yy768;
 2975|      0|							}
 2976|     10|						} else {
 2977|      0|							if (yyaccept <= 77) {
  ------------------
  |  Branch (2977:12): [True: 0, False: 0]
  ------------------
 2978|      0|								if (yyaccept == 76) {
  ------------------
  |  Branch (2978:13): [True: 0, False: 0]
  ------------------
 2979|      0|									goto yy784;
 2980|      0|								} else {
 2981|      0|									goto yy797;
 2982|      0|								}
 2983|      0|							} else {
 2984|      0|								goto yy799;
 2985|      0|							}
 2986|      0|						}
 2987|     34|					} else {
 2988|     34|						if (yyaccept <= 81) {
  ------------------
  |  Branch (2988:11): [True: 34, False: 0]
  ------------------
 2989|     34|							if (yyaccept <= 80) {
  ------------------
  |  Branch (2989:12): [True: 31, False: 3]
  ------------------
 2990|     31|								if (yyaccept == 79) {
  ------------------
  |  Branch (2990:13): [True: 4, False: 27]
  ------------------
 2991|      4|									goto yy801;
 2992|     27|								} else {
 2993|     27|									goto yy804;
 2994|     27|								}
 2995|     31|							} else {
 2996|      3|								goto yy812;
 2997|      3|							}
 2998|     34|						} else {
 2999|      0|							if (yyaccept <= 83) {
  ------------------
  |  Branch (2999:12): [True: 0, False: 0]
  ------------------
 3000|      0|								if (yyaccept == 82) {
  ------------------
  |  Branch (3000:13): [True: 0, False: 0]
  ------------------
 3001|      0|									goto yy819;
 3002|      0|								} else {
 3003|      0|									goto yy823;
 3004|      0|								}
 3005|      0|							} else {
 3006|      0|								goto yy825;
 3007|      0|							}
 3008|      0|						}
 3009|     34|					}
 3010|    119|				} else {
 3011|    119|					if (yyaccept <= 90) {
  ------------------
  |  Branch (3011:10): [True: 19, False: 100]
  ------------------
 3012|     19|						if (yyaccept <= 87) {
  ------------------
  |  Branch (3012:11): [True: 15, False: 4]
  ------------------
 3013|     15|							if (yyaccept <= 86) {
  ------------------
  |  Branch (3013:12): [True: 14, False: 1]
  ------------------
 3014|     14|								if (yyaccept == 85) {
  ------------------
  |  Branch (3014:13): [True: 14, False: 0]
  ------------------
 3015|     14|									goto yy836;
 3016|     14|								} else {
 3017|      0|									goto yy839;
 3018|      0|								}
 3019|     14|							} else {
 3020|      1|								goto yy854;
 3021|      1|							}
 3022|     15|						} else {
 3023|      4|							if (yyaccept <= 89) {
  ------------------
  |  Branch (3023:12): [True: 4, False: 0]
  ------------------
 3024|      4|								if (yyaccept == 88) {
  ------------------
  |  Branch (3024:13): [True: 4, False: 0]
  ------------------
 3025|      4|									goto yy869;
 3026|      4|								} else {
 3027|      0|									goto yy898;
 3028|      0|								}
 3029|      4|							} else {
 3030|      0|								goto yy903;
 3031|      0|							}
 3032|      4|						}
 3033|    100|					} else {
 3034|    100|						if (yyaccept <= 93) {
  ------------------
  |  Branch (3034:11): [True: 94, False: 6]
  ------------------
 3035|     94|							if (yyaccept <= 92) {
  ------------------
  |  Branch (3035:12): [True: 94, False: 0]
  ------------------
 3036|     94|								if (yyaccept == 91) {
  ------------------
  |  Branch (3036:13): [True: 94, False: 0]
  ------------------
 3037|     94|									goto yy876;
 3038|     94|								} else {
 3039|      0|									goto yy911;
 3040|      0|								}
 3041|     94|							} else {
 3042|      0|								goto yy915;
 3043|      0|							}
 3044|     94|						} else {
 3045|      6|							if (yyaccept <= 95) {
  ------------------
  |  Branch (3045:12): [True: 6, False: 0]
  ------------------
 3046|      6|								if (yyaccept == 94) {
  ------------------
  |  Branch (3046:13): [True: 6, False: 0]
  ------------------
 3047|      6|									goto yy886;
 3048|      6|								} else {
 3049|      0|									goto yy931;
 3050|      0|								}
 3051|      6|							} else {
 3052|      0|								goto yy951;
 3053|      0|							}
 3054|      6|						}
 3055|    100|					}
 3056|    119|				}
 3057|    163|			}
 3058|  2.19k|		}
 3059|  1.35k|yy87:
 3060|  1.35k|		YYDEBUG(87, *YYCURSOR);
 3061|  1.35k|		++YYCURSOR;
  ------------------
  |  |   54|  1.35k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.35k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.35k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3062|  1.35k|		YYFILL(1);
  ------------------
  |  |   53|  1.35k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.35k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.35k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.35k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.35k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.35k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.35k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.35k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.35k]
  |  |  ------------------
  ------------------
 3063|  1.35k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.35k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.35k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.35k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3064|  1.35k|		if (yych <= '\f') {
  ------------------
  |  Branch (3064:7): [True: 823, False: 529]
  ------------------
 3065|    823|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (3065:8): [True: 9, False: 814]
  ------------------
 3066|    814|			if (yych == '\n') goto yy227;
  ------------------
  |  Branch (3066:8): [True: 744, False: 70]
  ------------------
 3067|     70|			goto yy225;
 3068|    814|		} else {
 3069|    529|			if (yych <= '\r') goto yy227;
  ------------------
  |  Branch (3069:8): [True: 308, False: 221]
  ------------------
 3070|    221|			if (yych == '[') goto yy86;
  ------------------
  |  Branch (3070:8): [True: 9, False: 212]
  ------------------
 3071|    212|			goto yy225;
 3072|    221|		}
 3073|    497|yy88:
 3074|    497|		YYDEBUG(88, *YYCURSOR);
 3075|    497|		++YYCURSOR;
  ------------------
  |  |   54|    497|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    497|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    497|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3076|    642|yy89:
 3077|    642|		YYDEBUG(89, *YYCURSOR);
 3078|    642|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    642|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    642|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    642|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    642|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    642|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    642|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    642|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    642|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3079|    642|#line 1949 "Zend/zend_language_scanner.l"
 3080|    642|		{
 3081|    642|	yyless(1);
  ------------------
  |  |   68|    642|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    642|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    642|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    642|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    642|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    642|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    642|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    642|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    642|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    642|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    642|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 642]
  |  |  ------------------
  ------------------
 3082|    642|	RETURN_TOKEN(T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG);
  ------------------
  |  | 1318|    642|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    642|		token = _token; \
  |  | 1320|    642|		goto emit_token; \
  |  | 1321|    642|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3083|    642|}
 3084|      0|#line 3085 "Zend/zend_language_scanner.c"
 3085|    264|yy90:
 3086|    264|		YYDEBUG(90, *YYCURSOR);
 3087|    264|		++YYCURSOR;
  ------------------
  |  |   54|    264|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    264|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    264|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3088|    264|		YYDEBUG(91, *YYCURSOR);
 3089|    264|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    264|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    264|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    264|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    264|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    264|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    264|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    264|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    264|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3090|    264|#line 1925 "Zend/zend_language_scanner.l"
 3091|    264|		{
 3092|    264|	RETURN_TOKEN(T_BOOLEAN_AND);
  ------------------
  |  | 1318|    264|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    264|		token = _token; \
  |  | 1320|    264|		goto emit_token; \
  |  | 1321|    264|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3093|    264|}
 3094|      0|#line 3095 "Zend/zend_language_scanner.c"
 3095|     23|yy92:
 3096|     23|		YYDEBUG(92, *YYCURSOR);
 3097|     23|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3098|     23|		if (yych == '.') goto yy229;
  ------------------
  |  Branch (3098:7): [True: 19, False: 4]
  ------------------
 3099|      4|		goto yy86;
 3100|    101|yy93:
 3101|    101|		YYDEBUG(93, *YYCURSOR);
 3102|    101|		++YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3103|    101|		YYFILL(1);
  ------------------
  |  |   53|    101|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    101|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    101|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 101]
  |  |  ------------------
  ------------------
 3104|    101|		yych = *YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3105|    101|		if (yych == '*') goto yy230;
  ------------------
  |  Branch (3105:7): [True: 44, False: 57]
  ------------------
 3106|     57|		if (yych == '/') goto yy225;
  ------------------
  |  Branch (3106:7): [True: 44, False: 13]
  ------------------
 3107|     13|		goto yy86;
 3108|     21|yy94:
 3109|     21|		YYDEBUG(94, *YYCURSOR);
 3110|     21|		++YYCURSOR;
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3111|     21|		YYDEBUG(95, *YYCURSOR);
 3112|     21|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     21|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3113|     21|#line 1901 "Zend/zend_language_scanner.l"
 3114|     21|		{
 3115|     21|	RETURN_TOKEN(T_AND_EQUAL);
  ------------------
  |  | 1318|     21|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     21|		token = _token; \
  |  | 1320|     21|		goto emit_token; \
  |  | 1321|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3116|     21|}
 3117|      0|#line 3118 "Zend/zend_language_scanner.c"
 3118|  34.6k|yy96:
 3119|  34.6k|		YYDEBUG(96, *YYCURSOR);
 3120|  34.6k|		++YYCURSOR;
  ------------------
  |  |   54|  34.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  34.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  34.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3121|  34.6k|		YYFILL(7);
  ------------------
  |  |   53|  34.6k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  34.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  34.6k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  34.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  34.6k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  34.6k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  34.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  34.6k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 34.6k]
  |  |  ------------------
  ------------------
 3122|  34.6k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  34.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  34.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  34.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3123|  53.8k|yy97:
 3124|  53.8k|		YYDEBUG(97, *YYCURSOR);
 3125|  53.8k|		if (yybm[0+yych] & 1) {
  ------------------
  |  Branch (3125:7): [True: 34.6k, False: 19.1k]
  ------------------
 3126|  34.6k|			goto yy96;
 3127|  34.6k|		}
 3128|  19.1k|		switch (yych) {
 3129|     77|		case 'A':
  ------------------
  |  Branch (3129:3): [True: 77, False: 19.0k]
  ------------------
 3130|    297|		case 'a':	goto yy98;
  ------------------
  |  Branch (3130:3): [True: 220, False: 18.9k]
  ------------------
 3131|     34|		case 'B':
  ------------------
  |  Branch (3131:3): [True: 34, False: 19.1k]
  ------------------
 3132|    238|		case 'b':	goto yy99;
  ------------------
  |  Branch (3132:3): [True: 204, False: 18.9k]
  ------------------
 3133|      3|		case 'D':
  ------------------
  |  Branch (3133:3): [True: 3, False: 19.1k]
  ------------------
 3134|    179|		case 'd':	goto yy100;
  ------------------
  |  Branch (3134:3): [True: 176, False: 18.9k]
  ------------------
 3135|    257|		case 'F':
  ------------------
  |  Branch (3135:3): [True: 257, False: 18.8k]
  ------------------
 3136|    488|		case 'f':	goto yy101;
  ------------------
  |  Branch (3136:3): [True: 231, False: 18.9k]
  ------------------
 3137|     24|		case 'I':
  ------------------
  |  Branch (3137:3): [True: 24, False: 19.1k]
  ------------------
 3138|    385|		case 'i':	goto yy102;
  ------------------
  |  Branch (3138:3): [True: 361, False: 18.7k]
  ------------------
 3139|     11|		case 'O':
  ------------------
  |  Branch (3139:3): [True: 11, False: 19.1k]
  ------------------
 3140|    106|		case 'o':	goto yy103;
  ------------------
  |  Branch (3140:3): [True: 95, False: 19.0k]
  ------------------
 3141|     27|		case 'R':
  ------------------
  |  Branch (3141:3): [True: 27, False: 19.1k]
  ------------------
 3142|     86|		case 'r':	goto yy104;
  ------------------
  |  Branch (3142:3): [True: 59, False: 19.0k]
  ------------------
 3143|     24|		case 'S':
  ------------------
  |  Branch (3143:3): [True: 24, False: 19.1k]
  ------------------
 3144|    921|		case 's':	goto yy105;
  ------------------
  |  Branch (3144:3): [True: 897, False: 18.2k]
  ------------------
 3145|     16|		case 'U':
  ------------------
  |  Branch (3145:3): [True: 16, False: 19.1k]
  ------------------
 3146|    194|		case 'u':	goto yy106;
  ------------------
  |  Branch (3146:3): [True: 178, False: 18.9k]
  ------------------
 3147|      3|		case 'V':
  ------------------
  |  Branch (3147:3): [True: 3, False: 19.1k]
  ------------------
 3148|     10|		case 'v':	goto yy107;
  ------------------
  |  Branch (3148:3): [True: 7, False: 19.1k]
  ------------------
 3149|  16.2k|		default:	goto yy86;
  ------------------
  |  Branch (3149:3): [True: 16.2k, False: 2.90k]
  ------------------
 3150|  19.1k|		}
 3151|    297|yy98:
 3152|    297|		YYDEBUG(98, *YYCURSOR);
 3153|    297|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    297|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    297|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    297|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3154|    297|		if (yych == 'R') goto yy232;
  ------------------
  |  Branch (3154:7): [True: 10, False: 287]
  ------------------
 3155|    287|		if (yych == 'r') goto yy232;
  ------------------
  |  Branch (3155:7): [True: 121, False: 166]
  ------------------
 3156|    166|		goto yy86;
 3157|    238|yy99:
 3158|    238|		YYDEBUG(99, *YYCURSOR);
 3159|    238|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    238|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    238|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    238|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3160|    238|		if (yych <= 'O') {
  ------------------
  |  Branch (3160:7): [True: 27, False: 211]
  ------------------
 3161|     27|			if (yych == 'I') goto yy233;
  ------------------
  |  Branch (3161:8): [True: 0, False: 27]
  ------------------
 3162|     27|			if (yych <= 'N') goto yy86;
  ------------------
  |  Branch (3162:8): [True: 23, False: 4]
  ------------------
 3163|      4|			goto yy234;
 3164|    211|		} else {
 3165|    211|			if (yych <= 'i') {
  ------------------
  |  Branch (3165:8): [True: 186, False: 25]
  ------------------
 3166|    186|				if (yych <= 'h') goto yy86;
  ------------------
  |  Branch (3166:9): [True: 30, False: 156]
  ------------------
 3167|    156|				goto yy233;
 3168|    186|			} else {
 3169|     25|				if (yych == 'o') goto yy234;
  ------------------
  |  Branch (3169:9): [True: 20, False: 5]
  ------------------
 3170|      5|				goto yy86;
 3171|     25|			}
 3172|    211|		}
 3173|    179|yy100:
 3174|    179|		YYDEBUG(100, *YYCURSOR);
 3175|    179|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    179|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    179|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    179|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3176|    179|		if (yych == 'O') goto yy235;
  ------------------
  |  Branch (3176:7): [True: 1, False: 178]
  ------------------
 3177|    178|		if (yych == 'o') goto yy235;
  ------------------
  |  Branch (3177:7): [True: 5, False: 173]
  ------------------
 3178|    173|		goto yy86;
 3179|    488|yy101:
 3180|    488|		YYDEBUG(101, *YYCURSOR);
 3181|    488|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    488|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    488|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    488|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3182|    488|		if (yych == 'L') goto yy236;
  ------------------
  |  Branch (3182:7): [True: 11, False: 477]
  ------------------
 3183|    477|		if (yych == 'l') goto yy236;
  ------------------
  |  Branch (3183:7): [True: 24, False: 453]
  ------------------
 3184|    453|		goto yy86;
 3185|    453|yy102:
 3186|    385|		YYDEBUG(102, *YYCURSOR);
 3187|    385|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    385|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    385|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    385|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3188|    385|		if (yych == 'N') goto yy237;
  ------------------
  |  Branch (3188:7): [True: 8, False: 377]
  ------------------
 3189|    377|		if (yych == 'n') goto yy237;
  ------------------
  |  Branch (3189:7): [True: 126, False: 251]
  ------------------
 3190|    251|		goto yy86;
 3191|    251|yy103:
 3192|    106|		YYDEBUG(103, *YYCURSOR);
 3193|    106|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    106|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    106|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    106|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3194|    106|		if (yych == 'B') goto yy238;
  ------------------
  |  Branch (3194:7): [True: 5, False: 101]
  ------------------
 3195|    101|		if (yych == 'b') goto yy238;
  ------------------
  |  Branch (3195:7): [True: 83, False: 18]
  ------------------
 3196|     18|		goto yy86;
 3197|     86|yy104:
 3198|     86|		YYDEBUG(104, *YYCURSOR);
 3199|     86|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     86|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3200|     86|		if (yych == 'E') goto yy239;
  ------------------
  |  Branch (3200:7): [True: 6, False: 80]
  ------------------
 3201|     80|		if (yych == 'e') goto yy239;
  ------------------
  |  Branch (3201:7): [True: 27, False: 53]
  ------------------
 3202|     53|		goto yy86;
 3203|    921|yy105:
 3204|    921|		YYDEBUG(105, *YYCURSOR);
 3205|    921|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    921|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    921|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    921|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3206|    921|		if (yych == 'T') goto yy240;
  ------------------
  |  Branch (3206:7): [True: 2, False: 919]
  ------------------
 3207|    919|		if (yych == 't') goto yy240;
  ------------------
  |  Branch (3207:7): [True: 138, False: 781]
  ------------------
 3208|    781|		goto yy86;
 3209|    781|yy106:
 3210|    194|		YYDEBUG(106, *YYCURSOR);
 3211|    194|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    194|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    194|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    194|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3212|    194|		if (yych == 'N') goto yy241;
  ------------------
  |  Branch (3212:7): [True: 16, False: 178]
  ------------------
 3213|    178|		if (yych == 'n') goto yy241;
  ------------------
  |  Branch (3213:7): [True: 175, False: 3]
  ------------------
 3214|      3|		goto yy86;
 3215|     10|yy107:
 3216|     10|		YYDEBUG(107, *YYCURSOR);
 3217|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3218|     10|		if (yych == 'O') goto yy242;
  ------------------
  |  Branch (3218:7): [True: 0, False: 10]
  ------------------
 3219|     10|		if (yych == 'o') goto yy242;
  ------------------
  |  Branch (3219:7): [True: 5, False: 5]
  ------------------
 3220|      5|		goto yy86;
 3221|    209|yy108:
 3222|    209|		YYDEBUG(108, *YYCURSOR);
 3223|    209|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    209|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    209|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    209|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3224|    209|		if (yych == '=') goto yy243;
  ------------------
  |  Branch (3224:7): [True: 13, False: 196]
  ------------------
 3225|    196|		YYDEBUG(109, *YYCURSOR);
 3226|    196|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    196|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    196|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3227|    196|#line 1873 "Zend/zend_language_scanner.l"
 3228|    196|		{
 3229|    196|	RETURN_TOKEN(T_POW);
  ------------------
  |  | 1318|    196|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    196|		token = _token; \
  |  | 1320|    196|		goto emit_token; \
  |  | 1321|    196|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3230|    196|}
 3231|      0|#line 3232 "Zend/zend_language_scanner.c"
 3232|     16|yy110:
 3233|     16|		YYDEBUG(110, *YYCURSOR);
 3234|     16|		++YYCURSOR;
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3235|     16|		YYDEBUG(111, *YYCURSOR);
 3236|     16|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     16|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3237|     16|#line 1869 "Zend/zend_language_scanner.l"
 3238|     16|		{
 3239|     16|	RETURN_TOKEN(T_MUL_EQUAL);
  ------------------
  |  | 1318|     16|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     16|		token = _token; \
  |  | 1320|     16|		goto emit_token; \
  |  | 1321|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3240|     16|}
 3241|      0|#line 3242 "Zend/zend_language_scanner.c"
 3242|  23.0k|yy112:
 3243|  23.0k|		YYDEBUG(112, *YYCURSOR);
 3244|  23.0k|		++YYCURSOR;
  ------------------
  |  |   54|  23.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3245|  23.0k|		YYDEBUG(113, *YYCURSOR);
 3246|  23.0k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  23.0k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  23.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3247|  23.0k|#line 1825 "Zend/zend_language_scanner.l"
 3248|  23.0k|		{
 3249|  23.0k|	RETURN_TOKEN(T_INC);
  ------------------
  |  | 1318|  23.0k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  23.0k|		token = _token; \
  |  | 1320|  23.0k|		goto emit_token; \
  |  | 1321|  23.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3250|  23.0k|}
 3251|      0|#line 3252 "Zend/zend_language_scanner.c"
 3252|    111|yy114:
 3253|    111|		YYDEBUG(114, *YYCURSOR);
 3254|    111|		++YYCURSOR;
  ------------------
  |  |   54|    111|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3255|    111|		YYDEBUG(115, *YYCURSOR);
 3256|    111|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    111|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    111|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3257|    111|#line 1861 "Zend/zend_language_scanner.l"
 3258|    111|		{
 3259|    111|	RETURN_TOKEN(T_PLUS_EQUAL);
  ------------------
  |  | 1318|    111|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    111|		token = _token; \
  |  | 1320|    111|		goto emit_token; \
  |  | 1321|    111|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3260|    111|}
 3261|      0|#line 3262 "Zend/zend_language_scanner.c"
 3262|     85|yy116:
 3263|     85|		YYDEBUG(116, *YYCURSOR);
 3264|     85|		++YYCURSOR;
  ------------------
  |  |   54|     85|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     85|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     85|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3265|     85|		YYDEBUG(117, *YYCURSOR);
 3266|     85|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     85|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     85|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     85|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     85|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     85|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     85|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     85|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     85|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3267|     85|#line 1829 "Zend/zend_language_scanner.l"
 3268|     85|		{
 3269|     85|	RETURN_TOKEN(T_DEC);
  ------------------
  |  | 1318|     85|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     85|		token = _token; \
  |  | 1320|     85|		goto emit_token; \
  |  | 1321|     85|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3270|     85|}
 3271|      0|#line 3272 "Zend/zend_language_scanner.c"
 3272|      7|yy118:
 3273|      7|		YYDEBUG(118, *YYCURSOR);
 3274|      7|		++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3275|      7|		YYDEBUG(119, *YYCURSOR);
 3276|      7|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      7|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3277|      7|#line 1865 "Zend/zend_language_scanner.l"
 3278|      7|		{
 3279|      7|	RETURN_TOKEN(T_MINUS_EQUAL);
  ------------------
  |  | 1318|      7|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      7|		token = _token; \
  |  | 1320|      7|		goto emit_token; \
  |  | 1321|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3280|      7|}
 3281|      0|#line 3282 "Zend/zend_language_scanner.c"
 3282|  1.34k|yy120:
 3283|  1.34k|		YYDEBUG(120, *YYCURSOR);
 3284|  1.34k|		++YYCURSOR;
  ------------------
  |  |   54|  1.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3285|  1.34k|		YYDEBUG(121, *YYCURSOR);
 3286|  1.34k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.34k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.34k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.34k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.34k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.34k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3287|  1.34k|#line 1586 "Zend/zend_language_scanner.l"
 3288|  1.34k|		{
 3289|  1.34k|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|  1.34k|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 3290|  1.34k|	RETURN_TOKEN(T_OBJECT_OPERATOR);
  ------------------
  |  | 1318|  1.34k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  1.34k|		token = _token; \
  |  | 1320|  1.34k|		goto emit_token; \
  |  | 1321|  1.34k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3291|  1.34k|}
 3292|      0|#line 3293 "Zend/zend_language_scanner.c"
 3293|    421|yy122:
 3294|    421|		YYDEBUG(122, *YYCURSOR);
 3295|    421|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    421|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    421|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    421|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3296|    421|		if (yych == '.') goto yy245;
  ------------------
  |  Branch (3296:7): [True: 362, False: 59]
  ------------------
 3297|     59|		goto yy86;
 3298|  2.32k|yy123:
 3299|  2.32k|		YYDEBUG(123, *YYCURSOR);
 3300|  2.32k|		yyaccept = 5;
 3301|  2.32k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|  2.32k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|  2.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3302|  2.32k|		YYFILL(2);
  ------------------
  |  |   53|  2.32k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.32k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.32k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.32k]
  |  |  ------------------
  ------------------
 3303|  2.32k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3304|  2.65k|yy124:
 3305|  2.65k|		YYDEBUG(124, *YYCURSOR);
 3306|  2.65k|		if (yych <= 'E') {
  ------------------
  |  Branch (3306:7): [True: 2.42k, False: 232]
  ------------------
 3307|  2.42k|			if (yych <= '/') goto yy125;
  ------------------
  |  Branch (3307:8): [True: 431, False: 1.99k]
  ------------------
 3308|  1.99k|			if (yych <= '9') goto yy123;
  ------------------
  |  Branch (3308:8): [True: 1.82k, False: 169]
  ------------------
 3309|    169|			if (yych >= 'E') goto yy135;
  ------------------
  |  Branch (3309:8): [True: 10, False: 159]
  ------------------
 3310|    232|		} else {
 3311|    232|			if (yych <= '_') {
  ------------------
  |  Branch (3311:8): [True: 38, False: 194]
  ------------------
 3312|     38|				if (yych >= '_') goto yy247;
  ------------------
  |  Branch (3312:9): [True: 11, False: 27]
  ------------------
 3313|    194|			} else {
 3314|    194|				if (yych == 'e') goto yy135;
  ------------------
  |  Branch (3314:9): [True: 16, False: 178]
  ------------------
 3315|    194|			}
 3316|    232|		}
 3317|  1.02k|yy125:
 3318|  1.02k|		YYDEBUG(125, *YYCURSOR);
 3319|  1.02k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.02k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3320|  1.02k|#line 2232 "Zend/zend_language_scanner.l"
 3321|  1.02k|		{
 3322|  1.02k|	const char *end;
 3323|  1.02k|	size_t len = yyleng;
  ------------------
  |  |   67|  1.02k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3324|  1.02k|	char *dnum = yytext;
  ------------------
  |  |   66|  1.02k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3325|  1.02k|	bool contains_underscores = (memchr(dnum, '_', len) != NULL);
 3326|       |
 3327|  1.02k|	if (contains_underscores) {
  ------------------
  |  Branch (3327:6): [True: 41, False: 979]
  ------------------
 3328|     41|		dnum = estrndup(dnum, len);
  ------------------
  |  |  164|     41|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     41|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     41|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     41|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     41|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3329|     41|		strip_underscores(dnum, &len);
 3330|     41|	}
 3331|       |
 3332|  1.02k|	ZVAL_DOUBLE(zendlval, zend_strtod(dnum, &end));
  ------------------
  |  | 1082|  1.02k|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|  1.02k|		zval *__z = (z);				\
  |  | 1084|  1.02k|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|  1.02k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|  1.02k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|  1.02k|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|  1.02k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.02k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|  1.02k|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|  1.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1.02k]
  |  |  ------------------
  ------------------
 3333|       |	/* errno isn't checked since we allow HUGE_VAL/INF overflow */
 3334|  1.02k|	ZEND_ASSERT(end == dnum + len);
  ------------------
  |  |  112|  1.02k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3334:2): [True: 0, False: 1.02k]
  |  Branch (3334:2): [True: 1.02k, False: 0]
  ------------------
 3335|  1.02k|	if (contains_underscores) {
  ------------------
  |  Branch (3335:6): [True: 41, False: 979]
  ------------------
 3336|     41|		efree(dnum);
  ------------------
  |  |  154|     41|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     41|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     41|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     41|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     41|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3337|     41|	}
 3338|  1.02k|	RETURN_TOKEN_WITH_VAL(T_DNUMBER);
  ------------------
  |  | 1323|  1.02k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  1.02k|		token = _token; \
  |  | 1325|  1.02k|		goto emit_token_with_val; \
  |  | 1326|  1.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3339|  1.02k|}
 3340|      0|#line 3341 "Zend/zend_language_scanner.c"
 3341|    148|yy126:
 3342|    148|		YYDEBUG(126, *YYCURSOR);
 3343|    148|		++YYCURSOR;
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3344|    148|		YYDEBUG(127, *YYCURSOR);
 3345|    148|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    148|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3346|    148|#line 1885 "Zend/zend_language_scanner.l"
 3347|    148|		{
 3348|    148|	RETURN_TOKEN(T_CONCAT_EQUAL);
  ------------------
  |  | 1318|    148|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    148|		token = _token; \
  |  | 1320|    148|		goto emit_token; \
  |  | 1321|    148|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3349|    148|}
 3350|      0|#line 3351 "Zend/zend_language_scanner.c"
 3351|  1.46k|yy128:
 3352|  1.46k|		YYDEBUG(128, *YYCURSOR);
 3353|  1.46k|		yyaccept = 6;
 3354|  1.46k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.46k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.46k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3355|  1.46k|		if (yych == '*') goto yy248;
  ------------------
  |  Branch (3355:7): [True: 101, False: 1.36k]
  ------------------
 3356|  1.46k|yy129:
 3357|  1.46k|		YYDEBUG(129, *YYCURSOR);
 3358|  1.46k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.46k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.46k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3359|  1.46k|#line 2483 "Zend/zend_language_scanner.l"
 3360|  1.46k|		{
 3361|  1.46k|	int doc_com;
 3362|       |
 3363|  1.46k|	if (yyleng > 2) {
  ------------------
  |  |   67|  1.46k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3363:6): [True: 68, False: 1.39k]
  ------------------
 3364|     68|		doc_com = 1;
 3365|     68|		RESET_DOC_COMMENT();
  ------------------
  |  |   47|     68|#define RESET_DOC_COMMENT() do { \
  |  |   48|     68|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|     68|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 6, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      6|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      6|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      6|	} \
  |  |   52|     68|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 68]
  |  |  ------------------
  ------------------
 3366|  1.39k|	} else {
 3367|  1.39k|		doc_com = 0;
 3368|  1.39k|	}
 3369|       |
 3370|  30.1k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  30.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  30.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  30.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  30.1k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  30.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  30.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3370:9): [True: 29.3k, False: 845]
  ------------------
 3371|  29.3k|		if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
  ------------------
  |  |   54|  29.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  29.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  29.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
  ------------------
  |  |   54|  1.55k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.55k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.55k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3371:7): [True: 1.55k, False: 27.7k]
  |  Branch (3371:29): [True: 618, False: 938]
  ------------------
 3372|    618|			break;
 3373|    618|		}
 3374|  29.3k|	}
 3375|       |
 3376|  1.46k|	if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  1.46k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  1.46k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3376:6): [True: 618, False: 845]
  ------------------
 3377|    618|		YYCURSOR++;
  ------------------
  |  |   54|    618|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    618|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    618|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3378|    845|	} else {
 3379|    845|		zend_throw_exception_ex(zend_ce_parse_error, 0, "Unterminated comment starting line %" PRIu32, CG(zend_lineno));
  ------------------
  |  |   35|    845|# define CG(v) (compiler_globals.v)
  ------------------
 3380|    845|		if (PARSER_MODE()) {
  ------------------
  |  | 1316|    845|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|    845|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 58, False: 787]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3381|     58|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|     58|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     58|		token = _token; \
  |  | 1320|     58|		goto emit_token; \
  |  | 1321|     58|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3382|     58|		}
 3383|    845|	}
 3384|       |
 3385|  1.40k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.40k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.40k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3386|  1.40k|	HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|  1.40k|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|  1.40k|do {																			\
  |  |   97|  1.40k|	char *p = (s), *boundary = p+(l);											\
  |  |   98|  1.40k|																				\
  |  |   99|  32.0k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 30.5k, False: 1.40k]
  |  |  ------------------
  |  |  100|  30.5k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 2.76k, False: 27.8k]
  |  |  |  Branch (100:22): [True: 1.21k, False: 26.6k]
  |  |  |  Branch (100:36): [True: 1.15k, False: 58]
  |  |  ------------------
  |  |  101|  3.92k|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|  3.92k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|  3.92k|		}																		\
  |  |  103|  30.5k|		p++;																	\
  |  |  104|  30.5k|	}																			\
  |  |  105|  1.40k|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 1.40k]
  |  |  ------------------
  ------------------
 3387|       |
 3388|  1.40k|	if (doc_com) {
  ------------------
  |  Branch (3388:6): [True: 65, False: 1.34k]
  ------------------
 3389|     65|		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
  ------------------
  |  |   35|     65|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
  ------------------
  |  |   66|     65|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
  ------------------
  |  |   67|     65|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3390|     65|		RETURN_OR_SKIP_TOKEN(T_DOC_COMMENT);
  ------------------
  |  | 1339|     65|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|     65|		token = _token; \
  |  | 1341|     65|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|     65|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|     65|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 18, False: 47]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     18|			goto skip_token; \
  |  | 1343|     18|		} \
  |  | 1344|     65|		goto emit_token; \
  |  | 1345|     65|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3391|     65|	}
 3392|       |
 3393|  1.34k|	RETURN_OR_SKIP_TOKEN(T_COMMENT);
  ------------------
  |  | 1339|  1.34k|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|  1.34k|		token = _token; \
  |  | 1341|  1.34k|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  1.34k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  1.34k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 32, False: 1.30k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     32|			goto skip_token; \
  |  | 1343|     32|		} \
  |  | 1344|  1.34k|		goto emit_token; \
  |  | 1345|  1.34k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3394|  1.34k|}
 3395|      0|#line 3396 "Zend/zend_language_scanner.c"
 3396|    400|yy130:
 3397|    400|		YYDEBUG(130, *YYCURSOR);
 3398|    400|		++YYCURSOR;
  ------------------
  |  |   54|    400|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    400|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    400|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3399|    400|		goto yy13;
 3400|     17|yy131:
 3401|     17|		YYDEBUG(131, *YYCURSOR);
 3402|     17|		++YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3403|     17|		YYDEBUG(132, *YYCURSOR);
 3404|     17|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     17|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3405|     17|#line 1881 "Zend/zend_language_scanner.l"
 3406|     17|		{
 3407|     17|	RETURN_TOKEN(T_DIV_EQUAL);
  ------------------
  |  | 1318|     17|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     17|		token = _token; \
  |  | 1320|     17|		goto emit_token; \
  |  | 1321|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3408|     17|}
 3409|      0|#line 3410 "Zend/zend_language_scanner.c"
 3410|    338|yy133:
 3411|    338|		YYDEBUG(133, *YYCURSOR);
 3412|    338|		yyaccept = 5;
 3413|    338|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    338|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    338|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    338|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    338|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    338|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    338|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3414|    338|		if (yych == '_') goto yy125;
  ------------------
  |  Branch (3414:7): [True: 9, False: 329]
  ------------------
 3415|    329|		goto yy124;
 3416|    329|yy134:
 3417|     15|		YYDEBUG(134, *YYCURSOR);
 3418|     15|		++YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3419|     15|		YYFILL(1);
  ------------------
  |  |   53|     15|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     15|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     15|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 15]
  |  |  ------------------
  ------------------
 3420|     15|		yych = *YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3421|     15|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (3421:7): [True: 12, False: 3]
  ------------------
 3422|     12|			goto yy249;
 3423|     12|		}
 3424|      3|		goto yy86;
 3425|    266|yy135:
 3426|    266|		YYDEBUG(135, *YYCURSOR);
 3427|    266|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    266|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    266|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    266|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3428|    266|		if (yych <= ',') {
  ------------------
  |  Branch (3428:7): [True: 20, False: 246]
  ------------------
 3429|     20|			if (yych == '+') goto yy252;
  ------------------
  |  Branch (3429:8): [True: 7, False: 13]
  ------------------
 3430|     13|			goto yy86;
 3431|    246|		} else {
 3432|    246|			if (yych <= '-') goto yy252;
  ------------------
  |  Branch (3432:8): [True: 40, False: 206]
  ------------------
 3433|    206|			if (yych <= '/') goto yy86;
  ------------------
  |  Branch (3433:8): [True: 1, False: 205]
  ------------------
 3434|    205|			if (yych <= '9') goto yy253;
  ------------------
  |  Branch (3434:8): [True: 156, False: 49]
  ------------------
 3435|     49|			goto yy86;
 3436|    205|		}
 3437|     14|yy136:
 3438|     14|		YYDEBUG(136, *YYCURSOR);
 3439|     14|		++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3440|     14|		YYFILL(1);
  ------------------
  |  |   53|     14|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     14|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     14|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 14]
  |  |  ------------------
  ------------------
 3441|     14|		yych = *YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3442|     14|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (3442:7): [True: 6, False: 8]
  ------------------
 3443|      6|			goto yy255;
 3444|      6|		}
 3445|      8|		goto yy86;
 3446|     50|yy137:
 3447|     50|		YYDEBUG(137, *YYCURSOR);
 3448|     50|		++YYCURSOR;
  ------------------
  |  |   54|     50|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3449|     50|		YYFILL(1);
  ------------------
  |  |   53|     50|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     50|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     50|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     50|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 50]
  |  |  ------------------
  ------------------
 3450|     50|		yych = *YYCURSOR;
  ------------------
  |  |   54|     50|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3451|     50|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (3451:7): [True: 47, False: 3]
  ------------------
 3452|     47|			goto yy258;
 3453|     47|		}
 3454|      3|		goto yy86;
 3455|     46|yy138:
 3456|     46|		YYDEBUG(138, *YYCURSOR);
 3457|     46|		++YYCURSOR;
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3458|     46|		YYFILL(1);
  ------------------
  |  |   53|     46|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     46|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     46|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 46]
  |  |  ------------------
  ------------------
 3459|     46|		yych = *YYCURSOR;
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3460|     46|		if (yybm[256+yych] & 64) {
  ------------------
  |  Branch (3460:7): [True: 23, False: 23]
  ------------------
 3461|     23|			goto yy32;
 3462|     23|		}
 3463|     23|		goto yy86;
 3464|  1.59k|yy139:
 3465|  1.59k|		YYDEBUG(139, *YYCURSOR);
 3466|  1.59k|		++YYCURSOR;
  ------------------
  |  |   54|  1.59k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.59k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.59k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3467|  1.59k|		YYDEBUG(140, *YYCURSOR);
 3468|  1.59k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.59k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.59k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.59k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.59k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.59k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.59k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.59k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.59k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3469|  1.59k|#line 1613 "Zend/zend_language_scanner.l"
 3470|  1.59k|		{
 3471|  1.59k|	RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM);
  ------------------
  |  | 1318|  1.59k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  1.59k|		token = _token; \
  |  | 1320|  1.59k|		goto emit_token; \
  |  | 1321|  1.59k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3472|  1.59k|}
 3473|      0|#line 3474 "Zend/zend_language_scanner.c"
 3474|  27.4k|yy141:
 3475|  27.4k|		YYDEBUG(141, *YYCURSOR);
 3476|  27.4k|		yyaccept = 7;
 3477|  27.4k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  27.4k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  27.4k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  27.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  27.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  27.4k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  27.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3478|  27.4k|		if (yych <= ';') goto yy142;
  ------------------
  |  Branch (3478:7): [True: 1.12k, False: 26.3k]
  ------------------
 3479|  26.3k|		if (yych <= '<') goto yy261;
  ------------------
  |  Branch (3479:7): [True: 23.3k, False: 2.96k]
  ------------------
 3480|  2.96k|		if (yych <= '=') goto yy263;
  ------------------
  |  Branch (3480:7): [True: 13, False: 2.95k]
  ------------------
 3481|  14.1k|yy142:
 3482|  14.1k|		YYDEBUG(142, *YYCURSOR);
 3483|  14.1k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  14.1k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  14.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  14.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  14.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  14.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  14.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  14.1k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  14.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3484|  14.1k|#line 1941 "Zend/zend_language_scanner.l"
 3485|  14.1k|		{
 3486|  14.1k|	RETURN_TOKEN(T_SL);
  ------------------
  |  | 1318|  14.1k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  14.1k|		token = _token; \
  |  | 1320|  14.1k|		goto emit_token; \
  |  | 1321|  14.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3487|  14.1k|}
 3488|      0|#line 3489 "Zend/zend_language_scanner.c"
 3489|  6.05k|yy143:
 3490|  6.05k|		YYDEBUG(143, *YYCURSOR);
 3491|  6.05k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  6.05k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.05k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.05k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3492|  6.05k|		if (yych == '>') goto yy265;
  ------------------
  |  Branch (3492:7): [True: 10, False: 6.04k]
  ------------------
 3493|  6.04k|		YYDEBUG(144, *YYCURSOR);
 3494|  6.04k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  6.04k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  6.04k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.04k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  6.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.04k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.04k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  6.04k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  6.04k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3495|  6.04k|#line 1853 "Zend/zend_language_scanner.l"
 3496|  6.04k|		{
 3497|  6.04k|	RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL);
  ------------------
  |  | 1318|  6.04k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  6.04k|		token = _token; \
  |  | 1320|  6.04k|		goto emit_token; \
  |  | 1321|  6.04k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3498|  6.04k|}
 3499|      0|#line 3500 "Zend/zend_language_scanner.c"
 3500|    316|yy145:
 3501|    316|		YYDEBUG(145, *YYCURSOR);
 3502|    316|		++YYCURSOR;
  ------------------
  |  |   54|    316|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    316|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    316|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3503|    316|		goto yy76;
 3504|    188|yy146:
 3505|    188|		YYDEBUG(146, *YYCURSOR);
 3506|    188|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    188|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    188|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    188|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3507|    188|		if (yych == '=') goto yy267;
  ------------------
  |  Branch (3507:7): [True: 72, False: 116]
  ------------------
 3508|    116|		YYDEBUG(147, *YYCURSOR);
 3509|    116|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    116|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    116|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    116|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    116|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    116|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    116|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    116|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    116|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3510|    116|#line 1841 "Zend/zend_language_scanner.l"
 3511|    116|		{
 3512|    116|	RETURN_TOKEN(T_IS_EQUAL);
  ------------------
  |  | 1318|    116|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    116|		token = _token; \
  |  | 1320|    116|		goto emit_token; \
  |  | 1321|    116|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3513|    116|}
 3514|      0|#line 3515 "Zend/zend_language_scanner.c"
 3515|    471|yy148:
 3516|    471|		YYDEBUG(148, *YYCURSOR);
 3517|    471|		++YYCURSOR;
  ------------------
  |  |   54|    471|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    471|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    471|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3518|    471|		YYDEBUG(149, *YYCURSOR);
 3519|    471|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    471|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    471|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    471|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    471|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    471|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    471|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    471|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    471|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3520|    471|#line 1809 "Zend/zend_language_scanner.l"
 3521|    471|		{
 3522|    471|	RETURN_TOKEN(T_DOUBLE_ARROW);
  ------------------
  |  | 1318|    471|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    471|		token = _token; \
  |  | 1320|    471|		goto emit_token; \
  |  | 1321|    471|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3523|    471|}
 3524|      0|#line 3525 "Zend/zend_language_scanner.c"
 3525|     19|yy150:
 3526|     19|		YYDEBUG(150, *YYCURSOR);
 3527|     19|		++YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3528|     19|		YYDEBUG(151, *YYCURSOR);
 3529|     19|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     19|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3530|     19|#line 1857 "Zend/zend_language_scanner.l"
 3531|     19|		{
 3532|     19|	RETURN_TOKEN(T_IS_GREATER_OR_EQUAL);
  ------------------
  |  | 1318|     19|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     19|		token = _token; \
  |  | 1320|     19|		goto emit_token; \
  |  | 1321|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3533|     19|}
 3534|      0|#line 3535 "Zend/zend_language_scanner.c"
 3535|     97|yy152:
 3536|     97|		YYDEBUG(152, *YYCURSOR);
 3537|     97|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     97|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     97|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     97|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3538|     97|		if (yych == '=') goto yy269;
  ------------------
  |  Branch (3538:7): [True: 9, False: 88]
  ------------------
 3539|     88|		YYDEBUG(153, *YYCURSOR);
 3540|     88|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     88|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3541|     88|#line 1945 "Zend/zend_language_scanner.l"
 3542|     88|		{
 3543|     88|	RETURN_TOKEN(T_SR);
  ------------------
  |  | 1318|     88|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     88|		token = _token; \
  |  | 1320|     88|		goto emit_token; \
  |  | 1321|     88|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3544|     88|}
 3545|      0|#line 3546 "Zend/zend_language_scanner.c"
 3546|    106|yy154:
 3547|    106|		YYDEBUG(154, *YYCURSOR);
 3548|    106|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    106|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    106|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    106|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3549|    106|		if (yych == '>') goto yy271;
  ------------------
  |  Branch (3549:7): [True: 95, False: 11]
  ------------------
 3550|     11|		goto yy86;
 3551|  3.82k|yy155:
 3552|  3.82k|		YYDEBUG(155, *YYCURSOR);
 3553|  3.82k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  3.82k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3554|  3.82k|		if (yych == '\n') goto yy273;
  ------------------
  |  Branch (3554:7): [True: 390, False: 3.43k]
  ------------------
 3555|  3.43k|		if (yych == '\r') goto yy274;
  ------------------
  |  Branch (3555:7): [True: 0, False: 3.43k]
  ------------------
 3556|  3.82k|yy156:
 3557|  3.82k|		YYDEBUG(156, *YYCURSOR);
 3558|  3.82k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  3.82k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  3.82k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3559|  3.82k|#line 2525 "Zend/zend_language_scanner.l"
 3560|  3.82k|		{
 3561|  3.82k|	BEGIN(INITIAL);
  ------------------
  |  |   64|  3.82k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  3.82k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3562|  3.82k|	if (yytext[yyleng-1] != '>') {
  ------------------
  |  |   66|  3.82k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[yyleng-1] != '>') {
  ------------------
  |  |   67|  3.82k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  3.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3562:6): [True: 390, False: 3.43k]
  ------------------
 3563|    390|		CG(increment_lineno) = 1;
  ------------------
  |  |   35|    390|# define CG(v) (compiler_globals.v)
  ------------------
 3564|    390|	}
 3565|  3.82k|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|  3.82k|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|  3.82k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3.61k, False: 212]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3566|  3.61k|		RETURN_TOKEN(';');  /* implicit ';' at php-end tag */
  ------------------
  |  | 1318|  3.61k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  3.61k|		token = _token; \
  |  | 1320|  3.61k|		goto emit_token; \
  |  | 1321|  3.61k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3567|  3.61k|	}
 3568|    212|	RETURN_TOKEN(T_CLOSE_TAG);
  ------------------
  |  | 1318|    212|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    212|		token = _token; \
  |  | 1320|    212|		goto emit_token; \
  |  | 1321|    212|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3569|    212|}
 3570|      0|#line 3571 "Zend/zend_language_scanner.c"
 3571|  8.02k|yy157:
 3572|  8.02k|		YYDEBUG(157, *YYCURSOR);
 3573|  8.02k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  8.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  8.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3574|  8.02k|		if (yych == '=') goto yy275;
  ------------------
  |  Branch (3574:7): [True: 24, False: 8.00k]
  ------------------
 3575|  8.00k|		YYDEBUG(158, *YYCURSOR);
 3576|  8.00k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  8.00k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  8.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  8.00k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  8.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  8.00k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  8.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3577|  8.00k|#line 1621 "Zend/zend_language_scanner.l"
 3578|  8.00k|		{
 3579|  8.00k|	RETURN_TOKEN(T_COALESCE);
  ------------------
  |  | 1318|  8.00k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  8.00k|		token = _token; \
  |  | 1320|  8.00k|		goto emit_token; \
  |  | 1321|  8.00k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3580|  8.00k|}
 3581|      0|#line 3582 "Zend/zend_language_scanner.c"
 3582|    161|yy159:
 3583|    161|		YYDEBUG(159, *YYCURSOR);
 3584|    161|		yyaccept = 4;
 3585|    161|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    161|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    161|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    161|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    161|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    161|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    161|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3586|    161|		if (yych == 'S') goto yy277;
  ------------------
  |  Branch (3586:7): [True: 5, False: 156]
  ------------------
 3587|    156|		if (yych == 's') goto yy277;
  ------------------
  |  Branch (3587:7): [True: 132, False: 24]
  ------------------
 3588|     24|		goto yy48;
 3589|    155|yy160:
 3590|    155|		YYDEBUG(160, *YYCURSOR);
 3591|    155|		yyaccept = 4;
 3592|    155|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    155|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    155|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3593|    155|		if (yych == 'D') goto yy278;
  ------------------
  |  Branch (3593:7): [True: 5, False: 150]
  ------------------
 3594|    150|		if (yych == 'd') goto yy278;
  ------------------
  |  Branch (3594:7): [True: 34, False: 116]
  ------------------
 3595|    116|		goto yy48;
 3596|    756|yy161:
 3597|    756|		YYDEBUG(161, *YYCURSOR);
 3598|    756|		yyaccept = 4;
 3599|    756|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    756|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    756|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    756|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    756|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    756|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    756|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3600|    756|		if (yych == 'R') goto yy280;
  ------------------
  |  Branch (3600:7): [True: 7, False: 749]
  ------------------
 3601|    749|		if (yych == 'r') goto yy280;
  ------------------
  |  Branch (3601:7): [True: 672, False: 77]
  ------------------
 3602|     77|		goto yy48;
 3603|    505|yy162:
 3604|    505|		YYDEBUG(162, *YYCURSOR);
 3605|    505|		yyaccept = 8;
 3606|    505|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    505|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    505|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    505|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    505|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    505|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    505|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3607|    505|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (3607:7): [True: 238, False: 267]
  ------------------
 3608|    238|			goto yy47;
 3609|    238|		}
 3610|    267|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (3610:7): [True: 2, False: 265]
  ------------------
 3611|    267|yy163:
 3612|    267|		YYDEBUG(163, *YYCURSOR);
 3613|    267|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    267|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    267|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3614|    267|#line 1509 "Zend/zend_language_scanner.l"
 3615|    267|		{
 3616|    267|	RETURN_TOKEN_WITH_IDENT(T_AS);
  ------------------
  |  | 1334|    267|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    267|		token = _token; \
  |  | 1336|    267|		goto emit_token_with_ident; \
  |  | 1337|    267|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3617|    267|}
 3618|      0|#line 3619 "Zend/zend_language_scanner.c"
 3619|    634|yy164:
 3620|    634|		YYDEBUG(164, *YYCURSOR);
 3621|    634|		++YYCURSOR;
  ------------------
  |  |   54|    634|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    634|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    634|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3622|    634|		YYFILL(1);
  ------------------
  |  |   53|    634|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    634|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    634|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    634|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    634|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    634|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    634|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    634|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 634]
  |  |  ------------------
  ------------------
 3623|    634|		yych = *YYCURSOR;
  ------------------
  |  |   54|    634|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    634|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    634|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3624|    634|		if (yych <= '_') {
  ------------------
  |  Branch (3624:7): [True: 460, False: 174]
  ------------------
 3625|    460|			if (yych <= '@') goto yy86;
  ------------------
  |  Branch (3625:8): [True: 132, False: 328]
  ------------------
 3626|    328|			if (yych <= 'Z') goto yy281;
  ------------------
  |  Branch (3626:8): [True: 248, False: 80]
  ------------------
 3627|     80|			if (yych <= '^') goto yy86;
  ------------------
  |  Branch (3627:8): [True: 77, False: 3]
  ------------------
 3628|      3|			goto yy281;
 3629|    174|		} else {
 3630|    174|			if (yych <= '`') goto yy86;
  ------------------
  |  Branch (3630:8): [True: 0, False: 174]
  ------------------
 3631|    174|			if (yych <= 'z') goto yy281;
  ------------------
  |  Branch (3631:8): [True: 116, False: 58]
  ------------------
 3632|     58|			if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (3632:8): [True: 7, False: 51]
  ------------------
 3633|     51|			goto yy281;
 3634|     58|		}
 3635|    168|yy165:
 3636|    168|		YYDEBUG(165, *YYCURSOR);
 3637|    168|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    168|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3638|    168|		if (yych == '<') goto yy284;
  ------------------
  |  Branch (3638:7): [True: 152, False: 16]
  ------------------
 3639|     16|		goto yy86;
 3640|     47|yy166:
 3641|     47|		YYDEBUG(166, *YYCURSOR);
 3642|     47|		yyaccept = 4;
 3643|     47|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     47|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     47|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     47|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     47|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     47|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     47|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3644|     47|		if (yych == 'E') goto yy285;
  ------------------
  |  Branch (3644:7): [True: 5, False: 42]
  ------------------
 3645|     42|		if (yych == 'e') goto yy285;
  ------------------
  |  Branch (3645:7): [True: 36, False: 6]
  ------------------
 3646|      6|		goto yy48;
 3647|    920|yy167:
 3648|    920|		YYDEBUG(167, *YYCURSOR);
 3649|    920|		yyaccept = 4;
 3650|    920|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    920|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    920|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    920|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    920|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    920|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    920|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3651|    920|		if (yych <= 'T') {
  ------------------
  |  Branch (3651:7): [True: 23, False: 897]
  ------------------
 3652|     23|			if (yych <= 'L') {
  ------------------
  |  Branch (3652:8): [True: 17, False: 6]
  ------------------
 3653|     17|				if (yych <= 'K') goto yy48;
  ------------------
  |  Branch (3653:9): [True: 16, False: 1]
  ------------------
 3654|      1|				goto yy286;
 3655|     17|			} else {
 3656|      6|				if (yych <= 'R') goto yy48;
  ------------------
  |  Branch (3656:9): [True: 4, False: 2]
  ------------------
 3657|      2|				if (yych <= 'S') goto yy287;
  ------------------
  |  Branch (3657:9): [True: 2, False: 0]
  ------------------
 3658|      0|				goto yy288;
 3659|      2|			}
 3660|    897|		} else {
 3661|    897|			if (yych <= 'r') {
  ------------------
  |  Branch (3661:8): [True: 505, False: 392]
  ------------------
 3662|    505|				if (yych == 'l') goto yy286;
  ------------------
  |  Branch (3662:9): [True: 341, False: 164]
  ------------------
 3663|    164|				goto yy48;
 3664|    505|			} else {
 3665|    392|				if (yych <= 's') goto yy287;
  ------------------
  |  Branch (3665:9): [True: 173, False: 219]
  ------------------
 3666|    219|				if (yych <= 't') goto yy288;
  ------------------
  |  Branch (3666:9): [True: 201, False: 18]
  ------------------
 3667|     18|				goto yy48;
 3668|    219|			}
 3669|    897|		}
 3670|  1.91k|yy168:
 3671|  1.91k|		YYDEBUG(168, *YYCURSOR);
 3672|  1.91k|		yyaccept = 4;
 3673|  1.91k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.91k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.91k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.91k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.91k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.91k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.91k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3674|  1.91k|		if (yych <= 'O') {
  ------------------
  |  Branch (3674:7): [True: 35, False: 1.87k]
  ------------------
 3675|     35|			if (yych == 'A') goto yy289;
  ------------------
  |  Branch (3675:8): [True: 4, False: 31]
  ------------------
 3676|     31|			if (yych <= 'N') goto yy48;
  ------------------
  |  Branch (3676:8): [True: 12, False: 19]
  ------------------
 3677|     19|			goto yy290;
 3678|  1.87k|		} else {
 3679|  1.87k|			if (yych <= 'a') {
  ------------------
  |  Branch (3679:8): [True: 1.71k, False: 163]
  ------------------
 3680|  1.71k|				if (yych <= '`') goto yy48;
  ------------------
  |  Branch (3680:9): [True: 19, False: 1.69k]
  ------------------
 3681|  1.69k|				goto yy289;
 3682|  1.71k|			} else {
 3683|    163|				if (yych == 'o') goto yy290;
  ------------------
  |  Branch (3683:9): [True: 153, False: 10]
  ------------------
 3684|     10|				goto yy48;
 3685|    163|			}
 3686|  1.87k|		}
 3687|    801|yy169:
 3688|    801|		YYDEBUG(169, *YYCURSOR);
 3689|    801|		yyaccept = 4;
 3690|    801|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    801|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    801|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    801|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    801|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    801|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    801|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3691|    801|		if (yych == 'N') goto yy291;
  ------------------
  |  Branch (3691:7): [True: 31, False: 770]
  ------------------
 3692|    770|		if (yych == 'n') goto yy291;
  ------------------
  |  Branch (3692:7): [True: 715, False: 55]
  ------------------
 3693|     55|		goto yy48;
 3694|    301|yy170:
 3695|    301|		YYDEBUG(170, *YYCURSOR);
 3696|    301|		yyaccept = 4;
 3697|    301|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    301|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    301|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    301|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    301|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    301|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    301|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3698|    301|		if (yych <= 'F') {
  ------------------
  |  Branch (3698:7): [True: 9, False: 292]
  ------------------
 3699|      9|			if (yych == 'C') goto yy292;
  ------------------
  |  Branch (3699:8): [True: 1, False: 8]
  ------------------
 3700|      8|			if (yych <= 'E') goto yy48;
  ------------------
  |  Branch (3700:8): [True: 6, False: 2]
  ------------------
 3701|      2|			goto yy293;
 3702|    292|		} else {
 3703|    292|			if (yych <= 'c') {
  ------------------
  |  Branch (3703:8): [True: 169, False: 123]
  ------------------
 3704|    169|				if (yych <= 'b') goto yy48;
  ------------------
  |  Branch (3704:9): [True: 51, False: 118]
  ------------------
 3705|    118|				goto yy292;
 3706|    169|			} else {
 3707|    123|				if (yych == 'f') goto yy293;
  ------------------
  |  Branch (3707:9): [True: 73, False: 50]
  ------------------
 3708|     50|				goto yy48;
 3709|    123|			}
 3710|    292|		}
 3711|     29|yy171:
 3712|     29|		YYDEBUG(171, *YYCURSOR);
 3713|     29|		yyaccept = 4;
 3714|     29|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     29|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3715|     29|		if (yych == 'E') goto yy294;
  ------------------
  |  Branch (3715:7): [True: 0, False: 29]
  ------------------
 3716|     29|		if (yych == 'e') goto yy294;
  ------------------
  |  Branch (3716:7): [True: 11, False: 18]
  ------------------
 3717|     18|		goto yy48;
 3718|     25|yy172:
 3719|     25|		YYDEBUG(172, *YYCURSOR);
 3720|     25|		yyaccept = 9;
 3721|     25|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     25|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3722|     25|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (3722:7): [True: 11, False: 14]
  ------------------
 3723|     11|			goto yy47;
 3724|     11|		}
 3725|     14|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (3725:7): [True: 0, False: 14]
  ------------------
 3726|     14|yy173:
 3727|     14|		YYDEBUG(173, *YYCURSOR);
 3728|     14|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     14|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3729|     14|#line 1477 "Zend/zend_language_scanner.l"
 3730|     14|		{
 3731|     14|	RETURN_TOKEN_WITH_IDENT(T_DO);
  ------------------
  |  | 1334|     14|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     14|		token = _token; \
  |  | 1336|     14|		goto emit_token_with_ident; \
  |  | 1337|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3732|     14|}
 3733|      0|#line 3734 "Zend/zend_language_scanner.c"
 3734|  1.25k|yy174:
 3735|  1.25k|		YYDEBUG(174, *YYCURSOR);
 3736|  1.25k|		yyaccept = 4;
 3737|  1.25k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.25k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.25k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.25k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.25k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.25k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.25k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3738|  1.25k|		if (yych == 'H') goto yy296;
  ------------------
  |  Branch (3738:7): [True: 1, False: 1.25k]
  ------------------
 3739|  1.25k|		if (yych == 'h') goto yy296;
  ------------------
  |  Branch (3739:7): [True: 1.23k, False: 24]
  ------------------
 3740|     24|		goto yy48;
 3741|     54|yy175:
 3742|     54|		YYDEBUG(175, *YYCURSOR);
 3743|     54|		yyaccept = 4;
 3744|     54|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     54|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     54|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     54|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     54|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     54|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     54|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3745|     54|		if (yych == 'S') goto yy297;
  ------------------
  |  Branch (3745:7): [True: 4, False: 50]
  ------------------
 3746|     50|		if (yych == 's') goto yy297;
  ------------------
  |  Branch (3746:7): [True: 17, False: 33]
  ------------------
 3747|     33|		goto yy48;
 3748|    101|yy176:
 3749|    101|		YYDEBUG(176, *YYCURSOR);
 3750|    101|		yyaccept = 4;
 3751|    101|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    101|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3752|    101|		if (yych == 'P') goto yy298;
  ------------------
  |  Branch (3752:7): [True: 17, False: 84]
  ------------------
 3753|     84|		if (yych == 'p') goto yy298;
  ------------------
  |  Branch (3753:7): [True: 14, False: 70]
  ------------------
 3754|     70|		goto yy48;
 3755|  1.82k|yy177:
 3756|  1.82k|		YYDEBUG(177, *YYCURSOR);
 3757|  1.82k|		yyaccept = 4;
 3758|  1.82k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.82k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.82k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.82k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.82k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3759|  1.82k|		if (yych <= 'U') {
  ------------------
  |  Branch (3759:7): [True: 143, False: 1.68k]
  ------------------
 3760|    143|			if (yych == 'D') goto yy299;
  ------------------
  |  Branch (3760:8): [True: 27, False: 116]
  ------------------
 3761|    116|			if (yych <= 'T') goto yy48;
  ------------------
  |  Branch (3761:8): [True: 105, False: 11]
  ------------------
 3762|     11|			goto yy300;
 3763|  1.68k|		} else {
 3764|  1.68k|			if (yych <= 'd') {
  ------------------
  |  Branch (3764:8): [True: 221, False: 1.46k]
  ------------------
 3765|    221|				if (yych <= 'c') goto yy48;
  ------------------
  |  Branch (3765:9): [True: 30, False: 191]
  ------------------
 3766|    191|				goto yy299;
 3767|  1.46k|			} else {
 3768|  1.46k|				if (yych == 'u') goto yy300;
  ------------------
  |  Branch (3768:9): [True: 1.37k, False: 86]
  ------------------
 3769|     86|				goto yy48;
 3770|  1.46k|			}
 3771|  1.68k|		}
 3772|     87|yy178:
 3773|     87|		YYDEBUG(178, *YYCURSOR);
 3774|     87|		yyaccept = 4;
 3775|     87|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     87|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     87|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     87|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     87|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     87|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     87|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3776|     87|		if (yych == 'A') goto yy301;
  ------------------
  |  Branch (3776:7): [True: 2, False: 85]
  ------------------
 3777|     85|		if (yych == 'a') goto yy301;
  ------------------
  |  Branch (3777:7): [True: 80, False: 5]
  ------------------
 3778|      5|		goto yy48;
 3779|    670|yy179:
 3780|    670|		YYDEBUG(179, *YYCURSOR);
 3781|    670|		yyaccept = 4;
 3782|    670|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    670|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    670|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    670|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    670|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    670|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    670|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3783|    670|		if (yych <= 'T') {
  ------------------
  |  Branch (3783:7): [True: 65, False: 605]
  ------------------
 3784|     65|			if (yych == 'I') goto yy302;
  ------------------
  |  Branch (3784:8): [True: 6, False: 59]
  ------------------
 3785|     59|			if (yych <= 'S') goto yy48;
  ------------------
  |  Branch (3785:8): [True: 47, False: 12]
  ------------------
 3786|     12|			goto yy303;
 3787|    605|		} else {
 3788|    605|			if (yych <= 'i') {
  ------------------
  |  Branch (3788:8): [True: 159, False: 446]
  ------------------
 3789|    159|				if (yych <= 'h') goto yy48;
  ------------------
  |  Branch (3789:9): [True: 140, False: 19]
  ------------------
 3790|     19|				goto yy302;
 3791|    446|			} else {
 3792|    446|				if (yych == 't') goto yy303;
  ------------------
  |  Branch (3792:9): [True: 360, False: 86]
  ------------------
 3793|     86|				goto yy48;
 3794|    446|			}
 3795|    605|		}
 3796|    227|yy180:
 3797|    227|		YYDEBUG(180, *YYCURSOR);
 3798|    227|		yyaccept = 4;
 3799|    227|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    227|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    227|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    227|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    227|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    227|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    227|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3800|    227|		if (yych == 'N') goto yy304;
  ------------------
  |  Branch (3800:7): [True: 9, False: 218]
  ------------------
 3801|    218|		if (yych == 'n') goto yy304;
  ------------------
  |  Branch (3801:7): [True: 116, False: 102]
  ------------------
 3802|    102|		goto yy48;
 3803|    102|yy181:
 3804|     53|		YYDEBUG(181, *YYCURSOR);
 3805|     53|		yyaccept = 10;
 3806|     53|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     53|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     53|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     53|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     53|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     53|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     53|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3807|     53|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (3807:7): [True: 7, False: 46]
  ------------------
 3808|      7|			goto yy47;
 3809|      7|		}
 3810|     46|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (3810:7): [True: 8, False: 38]
  ------------------
 3811|     42|yy182:
 3812|     42|		YYDEBUG(182, *YYCURSOR);
 3813|     42|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     42|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3814|     42|#line 1406 "Zend/zend_language_scanner.l"
 3815|     42|		{
 3816|     42|	RETURN_TOKEN_WITH_IDENT(T_FN);
  ------------------
  |  | 1334|     42|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     42|		token = _token; \
  |  | 1336|     42|		goto emit_token_with_ident; \
  |  | 1337|     42|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3817|     42|}
 3818|      0|#line 3819 "Zend/zend_language_scanner.c"
 3819|  3.29k|yy183:
 3820|  3.29k|		YYDEBUG(183, *YYCURSOR);
 3821|  3.29k|		yyaccept = 4;
 3822|  3.29k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  3.29k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  3.29k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.29k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  3.29k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.29k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.29k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3823|  3.29k|		if (yych == 'R') goto yy305;
  ------------------
  |  Branch (3823:7): [True: 6, False: 3.29k]
  ------------------
 3824|  3.29k|		if (yych == 'r') goto yy305;
  ------------------
  |  Branch (3824:7): [True: 1.54k, False: 1.74k]
  ------------------
 3825|  1.74k|		goto yy48;
 3826|  5.13k|yy184:
 3827|  5.13k|		YYDEBUG(184, *YYCURSOR);
 3828|  5.13k|		yyaccept = 4;
 3829|  5.13k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  5.13k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  5.13k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.13k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  5.13k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.13k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.13k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3830|  5.13k|		if (yych == 'N') goto yy307;
  ------------------
  |  Branch (3830:7): [True: 2, False: 5.13k]
  ------------------
 3831|  5.13k|		if (yych == 'n') goto yy307;
  ------------------
  |  Branch (3831:7): [True: 5.11k, False: 25]
  ------------------
 3832|     25|		goto yy48;
 3833|     84|yy185:
 3834|     84|		YYDEBUG(185, *YYCURSOR);
 3835|     84|		yyaccept = 4;
 3836|     84|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     84|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     84|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     84|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     84|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     84|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     84|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3837|     84|		if (yych == 'O') goto yy308;
  ------------------
  |  Branch (3837:7): [True: 48, False: 36]
  ------------------
 3838|     36|		if (yych == 'o') goto yy308;
  ------------------
  |  Branch (3838:7): [True: 32, False: 4]
  ------------------
 3839|      4|		goto yy48;
 3840|    118|yy186:
 3841|    118|		YYDEBUG(186, *YYCURSOR);
 3842|    118|		yyaccept = 4;
 3843|    118|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    118|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    118|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    118|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    118|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    118|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    118|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3844|    118|		if (yych == 'T') goto yy309;
  ------------------
  |  Branch (3844:7): [True: 3, False: 115]
  ------------------
 3845|    115|		if (yych == 't') goto yy309;
  ------------------
  |  Branch (3845:7): [True: 77, False: 38]
  ------------------
 3846|     38|		goto yy48;
 3847|    108|yy187:
 3848|    108|		YYDEBUG(187, *YYCURSOR);
 3849|    108|		yyaccept = 11;
 3850|    108|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    108|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    108|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    108|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    108|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    108|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    108|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3851|    108|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (3851:7): [True: 9, False: 99]
  ------------------
 3852|      9|			goto yy47;
 3853|      9|		}
 3854|     99|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (3854:7): [True: 1, False: 98]
  ------------------
 3855|     99|yy188:
 3856|     99|		YYDEBUG(188, *YYCURSOR);
 3857|     99|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     99|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3858|     99|#line 1453 "Zend/zend_language_scanner.l"
 3859|     99|		{
 3860|     99|	RETURN_TOKEN_WITH_IDENT(T_IF);
  ------------------
  |  | 1334|     99|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     99|		token = _token; \
  |  | 1336|     99|		goto emit_token_with_ident; \
  |  | 1337|     99|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3861|     99|}
 3862|      0|#line 3863 "Zend/zend_language_scanner.c"
 3863|    384|yy189:
 3864|    384|		YYDEBUG(189, *YYCURSOR);
 3865|    384|		yyaccept = 4;
 3866|    384|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    384|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    384|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    384|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    384|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    384|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    384|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3867|    384|		if (yych == 'P') goto yy310;
  ------------------
  |  Branch (3867:7): [True: 8, False: 376]
  ------------------
 3868|    376|		if (yych == 'p') goto yy310;
  ------------------
  |  Branch (3868:7): [True: 325, False: 51]
  ------------------
 3869|     51|		goto yy48;
 3870|  6.42k|yy190:
 3871|  6.42k|		YYDEBUG(190, *YYCURSOR);
 3872|  6.42k|		yyaccept = 4;
 3873|  6.42k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  6.42k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  6.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3874|  6.42k|		if (yych <= 'T') {
  ------------------
  |  Branch (3874:7): [True: 2.35k, False: 4.07k]
  ------------------
 3875|  2.35k|			if (yych <= 'C') {
  ------------------
  |  Branch (3875:8): [True: 1.15k, False: 1.19k]
  ------------------
 3876|  1.15k|				if (yych <= 'B') goto yy48;
  ------------------
  |  Branch (3876:9): [True: 1.14k, False: 7]
  ------------------
 3877|      7|				goto yy311;
 3878|  1.19k|			} else {
 3879|  1.19k|				if (yych <= 'R') goto yy48;
  ------------------
  |  Branch (3879:9): [True: 1.19k, False: 7]
  ------------------
 3880|      7|				if (yych <= 'S') goto yy312;
  ------------------
  |  Branch (3880:9): [True: 4, False: 3]
  ------------------
 3881|      3|				goto yy313;
 3882|      7|			}
 3883|  4.07k|		} else {
 3884|  4.07k|			if (yych <= 'r') {
  ------------------
  |  Branch (3884:8): [True: 3.49k, False: 577]
  ------------------
 3885|  3.49k|				if (yych == 'c') goto yy311;
  ------------------
  |  Branch (3885:9): [True: 57, False: 3.43k]
  ------------------
 3886|  3.43k|				goto yy48;
 3887|  3.49k|			} else {
 3888|    577|				if (yych <= 's') goto yy312;
  ------------------
  |  Branch (3888:9): [True: 43, False: 534]
  ------------------
 3889|    534|				if (yych <= 't') goto yy313;
  ------------------
  |  Branch (3889:9): [True: 489, False: 45]
  ------------------
 3890|     45|				goto yy48;
 3891|    534|			}
 3892|  4.07k|		}
 3893|    265|yy191:
 3894|    265|		YYDEBUG(191, *YYCURSOR);
 3895|    265|		yyaccept = 4;
 3896|    265|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    265|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    265|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    265|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    265|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    265|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    265|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3897|    265|		if (yych == 'S') goto yy314;
  ------------------
  |  Branch (3897:7): [True: 4, False: 261]
  ------------------
 3898|    261|		if (yych == 's') goto yy314;
  ------------------
  |  Branch (3898:7): [True: 82, False: 179]
  ------------------
 3899|    179|		goto yy48;
 3900|    179|yy192:
 3901|    121|		YYDEBUG(192, *YYCURSOR);
 3902|    121|		yyaccept = 4;
 3903|    121|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    121|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    121|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    121|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    121|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    121|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    121|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3904|    121|		if (yych == 'S') goto yy315;
  ------------------
  |  Branch (3904:7): [True: 0, False: 121]
  ------------------
 3905|    121|		if (yych == 's') goto yy315;
  ------------------
  |  Branch (3905:7): [True: 89, False: 32]
  ------------------
 3906|     32|		goto yy48;
 3907|     90|yy193:
 3908|     90|		YYDEBUG(193, *YYCURSOR);
 3909|     90|		yyaccept = 4;
 3910|     90|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     90|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     90|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     90|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     90|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     90|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     90|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3911|     90|		if (yych == 'T') goto yy316;
  ------------------
  |  Branch (3911:7): [True: 1, False: 89]
  ------------------
 3912|     89|		if (yych == 't') goto yy316;
  ------------------
  |  Branch (3912:7): [True: 71, False: 18]
  ------------------
 3913|     18|		goto yy48;
 3914|    365|yy194:
 3915|    365|		YYDEBUG(194, *YYCURSOR);
 3916|    365|		yyaccept = 4;
 3917|    365|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    365|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    365|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    365|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    365|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    365|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    365|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3918|    365|		if (yych == 'M') goto yy317;
  ------------------
  |  Branch (3918:7): [True: 14, False: 351]
  ------------------
 3919|    351|		if (yych == 'm') goto yy317;
  ------------------
  |  Branch (3919:7): [True: 302, False: 49]
  ------------------
 3920|     49|		goto yy48;
 3921|  1.83k|yy195:
 3922|  1.83k|		YYDEBUG(195, *YYCURSOR);
 3923|  1.83k|		yyaccept = 4;
 3924|  1.83k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.83k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.83k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.83k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.83k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3925|  1.83k|		if (yych == 'W') goto yy318;
  ------------------
  |  Branch (3925:7): [True: 11, False: 1.82k]
  ------------------
 3926|  1.82k|		if (yych == 'w') goto yy318;
  ------------------
  |  Branch (3926:7): [True: 1.78k, False: 42]
  ------------------
 3927|     42|		goto yy48;
 3928|     55|yy196:
 3929|     55|		YYDEBUG(196, *YYCURSOR);
 3930|     55|		yyaccept = 12;
 3931|     55|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     55|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     55|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3932|     55|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (3932:7): [True: 2, False: 53]
  ------------------
 3933|      2|			goto yy47;
 3934|      2|		}
 3935|     53|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (3935:7): [True: 3, False: 50]
  ------------------
 3936|     53|yy197:
 3937|     53|		YYDEBUG(197, *YYCURSOR);
 3938|     53|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     53|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     53|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     53|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     53|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     53|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     53|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     53|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     53|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 3939|     53|#line 1929 "Zend/zend_language_scanner.l"
 3940|     53|		{
 3941|     53|	RETURN_TOKEN_WITH_IDENT(T_LOGICAL_OR);
  ------------------
  |  | 1334|     53|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     53|		token = _token; \
  |  | 1336|     53|		goto emit_token_with_ident; \
  |  | 1337|     53|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3942|     53|}
 3943|      0|#line 3944 "Zend/zend_language_scanner.c"
 3944|  1.68k|yy198:
 3945|  1.68k|		YYDEBUG(198, *YYCURSOR);
 3946|  1.68k|		yyaccept = 4;
 3947|  1.68k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.68k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.68k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.68k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.68k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.68k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.68k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3948|  1.68k|		if (yych <= 'O') {
  ------------------
  |  Branch (3948:7): [True: 170, False: 1.51k]
  ------------------
 3949|    170|			if (yych == 'I') goto yy320;
  ------------------
  |  Branch (3949:8): [True: 3, False: 167]
  ------------------
 3950|    167|			if (yych <= 'N') goto yy48;
  ------------------
  |  Branch (3950:8): [True: 147, False: 20]
  ------------------
 3951|     20|			goto yy321;
 3952|  1.51k|		} else {
 3953|  1.51k|			if (yych <= 'i') {
  ------------------
  |  Branch (3953:8): [True: 1.37k, False: 140]
  ------------------
 3954|  1.37k|				if (yych <= 'h') goto yy48;
  ------------------
  |  Branch (3954:9): [True: 433, False: 942]
  ------------------
 3955|    942|				goto yy320;
 3956|  1.37k|			} else {
 3957|    140|				if (yych == 'o') goto yy321;
  ------------------
  |  Branch (3957:9): [True: 127, False: 13]
  ------------------
 3958|     13|				goto yy48;
 3959|    140|			}
 3960|  1.51k|		}
 3961|  1.12k|yy199:
 3962|  1.12k|		YYDEBUG(199, *YYCURSOR);
 3963|  1.12k|		yyaccept = 4;
 3964|  1.12k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.12k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.12k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.12k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.12k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.12k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.12k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3965|  1.12k|		if (yych == 'B') goto yy322;
  ------------------
  |  Branch (3965:7): [True: 0, False: 1.12k]
  ------------------
 3966|  1.12k|		if (yych == 'b') goto yy322;
  ------------------
  |  Branch (3966:7): [True: 1.07k, False: 48]
  ------------------
 3967|     48|		goto yy48;
 3968|  1.63k|yy200:
 3969|  1.63k|		YYDEBUG(200, *YYCURSOR);
 3970|  1.63k|		yyaccept = 4;
 3971|  1.63k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.63k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.63k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.63k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.63k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.63k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.63k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3972|  1.63k|		if (yych <= 'T') {
  ------------------
  |  Branch (3972:7): [True: 39, False: 1.59k]
  ------------------
 3973|     39|			if (yych <= 'P') {
  ------------------
  |  Branch (3973:8): [True: 24, False: 15]
  ------------------
 3974|     24|				if (yych == 'A') goto yy323;
  ------------------
  |  Branch (3974:9): [True: 4, False: 20]
  ------------------
 3975|     20|				goto yy48;
 3976|     24|			} else {
 3977|     15|				if (yych <= 'Q') goto yy324;
  ------------------
  |  Branch (3977:9): [True: 8, False: 7]
  ------------------
 3978|      7|				if (yych <= 'S') goto yy48;
  ------------------
  |  Branch (3978:9): [True: 7, False: 0]
  ------------------
 3979|      0|				goto yy325;
 3980|      7|			}
 3981|  1.59k|		} else {
 3982|  1.59k|			if (yych <= 'p') {
  ------------------
  |  Branch (3982:8): [True: 1.01k, False: 579]
  ------------------
 3983|  1.01k|				if (yych == 'a') goto yy323;
  ------------------
  |  Branch (3983:9): [True: 739, False: 279]
  ------------------
 3984|    279|				goto yy48;
 3985|  1.01k|			} else {
 3986|    579|				if (yych <= 'q') goto yy324;
  ------------------
  |  Branch (3986:9): [True: 165, False: 414]
  ------------------
 3987|    414|				if (yych == 't') goto yy325;
  ------------------
  |  Branch (3987:9): [True: 373, False: 41]
  ------------------
 3988|     41|				goto yy48;
 3989|    414|			}
 3990|  1.59k|		}
 3991|    852|yy201:
 3992|    852|		YYDEBUG(201, *YYCURSOR);
 3993|    852|		yyaccept = 4;
 3994|    852|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    852|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    852|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    852|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    852|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    852|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    852|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3995|    852|		if (yych == 'A') goto yy326;
  ------------------
  |  Branch (3995:7): [True: 7, False: 845]
  ------------------
 3996|    845|		if (yych == 'a') goto yy326;
  ------------------
  |  Branch (3996:7): [True: 275, False: 570]
  ------------------
 3997|    570|		goto yy48;
 3998|    570|yy202:
 3999|     66|		YYDEBUG(202, *YYCURSOR);
 4000|     66|		yyaccept = 4;
 4001|     66|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     66|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4002|     66|		if (yych == 'I') goto yy327;
  ------------------
  |  Branch (4002:7): [True: 3, False: 63]
  ------------------
 4003|     63|		if (yych == 'i') goto yy327;
  ------------------
  |  Branch (4003:7): [True: 39, False: 24]
  ------------------
 4004|     24|		goto yy48;
 4005|    154|yy203:
 4006|    154|		YYDEBUG(203, *YYCURSOR);
 4007|    154|		yyaccept = 4;
 4008|    154|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    154|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    154|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    154|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    154|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    154|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    154|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4009|    154|		if (yych == 'R') goto yy328;
  ------------------
  |  Branch (4009:7): [True: 0, False: 154]
  ------------------
 4010|    154|		if (yych == 'r') goto yy328;
  ------------------
  |  Branch (4010:7): [True: 109, False: 45]
  ------------------
 4011|     45|		goto yy48;
 4012|    705|yy204:
 4013|    705|		YYDEBUG(204, *YYCURSOR);
 4014|    705|		yyaccept = 4;
 4015|    705|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    705|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    705|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    705|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    705|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    705|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    705|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4016|    705|		if (yych <= 'Y') {
  ------------------
  |  Branch (4016:7): [True: 62, False: 643]
  ------------------
 4017|     62|			if (yych == 'A') goto yy329;
  ------------------
  |  Branch (4017:8): [True: 5, False: 57]
  ------------------
 4018|     57|			if (yych <= 'X') goto yy48;
  ------------------
  |  Branch (4018:8): [True: 52, False: 5]
  ------------------
 4019|      5|			goto yy330;
 4020|    643|		} else {
 4021|    643|			if (yych <= 'a') {
  ------------------
  |  Branch (4021:8): [True: 207, False: 436]
  ------------------
 4022|    207|				if (yych <= '`') goto yy48;
  ------------------
  |  Branch (4022:9): [True: 3, False: 204]
  ------------------
 4023|    204|				goto yy329;
 4024|    436|			} else {
 4025|    436|				if (yych == 'y') goto yy330;
  ------------------
  |  Branch (4025:9): [True: 274, False: 162]
  ------------------
 4026|    162|				goto yy48;
 4027|    436|			}
 4028|    643|		}
 4029|    396|yy205:
 4030|    396|		YYDEBUG(205, *YYCURSOR);
 4031|    396|		yyaccept = 4;
 4032|    396|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    396|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    396|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    396|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    396|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    396|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    396|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4033|    396|		if (yych == 'S') goto yy332;
  ------------------
  |  Branch (4033:7): [True: 1, False: 395]
  ------------------
 4034|    395|		if (yych == 's') goto yy332;
  ------------------
  |  Branch (4034:7): [True: 350, False: 45]
  ------------------
 4035|     45|		goto yy48;
 4036|    272|yy206:
 4037|    272|		YYDEBUG(206, *YYCURSOR);
 4038|    272|		yyaccept = 4;
 4039|    272|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    272|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    272|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4040|    272|		if (yych == 'E') goto yy333;
  ------------------
  |  Branch (4040:7): [True: 0, False: 272]
  ------------------
 4041|    272|		if (yych == 'e') goto yy333;
  ------------------
  |  Branch (4041:7): [True: 257, False: 15]
  ------------------
 4042|     15|		goto yy48;
 4043|  2.24k|yy207:
 4044|  2.24k|		YYDEBUG(207, *YYCURSOR);
 4045|  2.24k|		yyaccept = 4;
 4046|  2.24k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.24k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.24k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.24k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.24k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.24k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.24k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4047|  2.24k|		if (yych == 'R') goto yy335;
  ------------------
  |  Branch (4047:7): [True: 3, False: 2.23k]
  ------------------
 4048|  2.23k|		if (yych == 'r') goto yy335;
  ------------------
  |  Branch (4048:7): [True: 2.19k, False: 41]
  ------------------
 4049|     41|		goto yy48;
 4050|     42|yy208:
 4051|     42|		YYDEBUG(208, *YYCURSOR);
 4052|     42|		yyaccept = 4;
 4053|     42|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     42|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4054|     42|		if (yych == 'I') goto yy337;
  ------------------
  |  Branch (4054:7): [True: 12, False: 30]
  ------------------
 4055|     30|		if (yych == 'i') goto yy337;
  ------------------
  |  Branch (4055:7): [True: 22, False: 8]
  ------------------
 4056|      8|		goto yy48;
 4057|     12|yy209:
 4058|     12|		YYDEBUG(209, *YYCURSOR);
 4059|     12|		yyaccept = 4;
 4060|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4061|     12|		if (yych == 'R') goto yy338;
  ------------------
  |  Branch (4061:7): [True: 5, False: 7]
  ------------------
 4062|      7|		if (yych == 'r') goto yy338;
  ------------------
  |  Branch (4062:7): [True: 1, False: 6]
  ------------------
 4063|      6|		goto yy48;
 4064|  1.39k|yy210:
 4065|  1.39k|		YYDEBUG(210, *YYCURSOR);
 4066|  1.39k|		yyaccept = 4;
 4067|  1.39k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.39k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.39k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4068|  1.39k|		if (yych == 'E') goto yy340;
  ------------------
  |  Branch (4068:7): [True: 8, False: 1.38k]
  ------------------
 4069|  1.38k|		if (yych == 'e') goto yy340;
  ------------------
  |  Branch (4069:7): [True: 1.29k, False: 98]
  ------------------
 4070|     98|		goto yy48;
 4071|  5.45k|yy211:
 4072|  5.45k|		YYDEBUG(211, *YYCURSOR);
 4073|  5.45k|		yyaccept = 13;
 4074|  5.45k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|  5.45k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  5.45k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.45k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|  5.45k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.45k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.45k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4075|  5.45k|		YYFILL(1);
  ------------------
  |  |   53|  5.45k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  5.45k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  5.45k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  5.45k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  5.45k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  5.45k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  5.45k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  5.45k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 5.45k]
  |  |  ------------------
  ------------------
 4076|  5.45k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  5.45k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.45k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.45k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4077|  5.45k|		YYDEBUG(212, *YYCURSOR);
 4078|  5.45k|		if (yych <= '\\') {
  ------------------
  |  Branch (4078:7): [True: 1.86k, False: 3.59k]
  ------------------
 4079|  1.86k|			if (yych <= '@') {
  ------------------
  |  Branch (4079:8): [True: 629, False: 1.24k]
  ------------------
 4080|    629|				if (yych <= '/') goto yy213;
  ------------------
  |  Branch (4080:9): [True: 535, False: 94]
  ------------------
 4081|     94|				if (yych <= '9') goto yy211;
  ------------------
  |  Branch (4081:9): [True: 39, False: 55]
  ------------------
 4082|  1.24k|			} else {
 4083|  1.24k|				if (yych <= 'Z') goto yy211;
  ------------------
  |  Branch (4083:9): [True: 1.04k, False: 198]
  ------------------
 4084|    198|				if (yych >= '\\') goto yy341;
  ------------------
  |  Branch (4084:9): [True: 148, False: 50]
  ------------------
 4085|    198|			}
 4086|  3.59k|		} else {
 4087|  3.59k|			if (yych <= '`') {
  ------------------
  |  Branch (4087:8): [True: 395, False: 3.19k]
  ------------------
 4088|    395|				if (yych == '_') goto yy211;
  ------------------
  |  Branch (4088:9): [True: 341, False: 54]
  ------------------
 4089|  3.19k|			} else {
 4090|  3.19k|				if (yych <= 'z') goto yy211;
  ------------------
  |  Branch (4090:9): [True: 2.43k, False: 760]
  ------------------
 4091|    760|				if (yych >= 0x80) goto yy211;
  ------------------
  |  Branch (4091:9): [True: 748, False: 12]
  ------------------
 4092|    760|			}
 4093|  3.59k|		}
 4094|    760|yy213:
 4095|    760|		YYDEBUG(213, *YYCURSOR);
 4096|    760|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    760|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    760|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    760|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    760|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    760|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    760|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    760|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    760|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4097|    760|#line 2446 "Zend/zend_language_scanner.l"
 4098|    760|		{
 4099|    760|	RETURN_TOKEN_WITH_STR(T_NAME_FULLY_QUALIFIED, 1);
  ------------------
  |  | 1328|    760|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|    760|		token = _token; \
  |  | 1330|    760|		offset = _offset; \
  |  | 1331|    760|		goto emit_token_with_str; \
  |  | 1332|    760|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4100|    760|}
 4101|      0|#line 4102 "Zend/zend_language_scanner.c"
 4102|      0|yy214:
 4103|      0|		YYDEBUG(214, *YYCURSOR);
 4104|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4105|      0|		YYDEBUG(215, *YYCURSOR);
 4106|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4107|      0|#line 1909 "Zend/zend_language_scanner.l"
 4108|      0|		{
 4109|      0|	RETURN_TOKEN(T_XOR_EQUAL);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4110|      0|}
 4111|      0|#line 4112 "Zend/zend_language_scanner.c"
 4112|  1.39k|yy216:
 4113|  1.39k|		YYDEBUG(216, *YYCURSOR);
 4114|  1.39k|		yyaccept = 4;
 4115|  1.39k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.39k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.39k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.39k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.39k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4116|  1.39k|		switch (yych) {
 4117|     81|		case 'C':
  ------------------
  |  Branch (4117:3): [True: 81, False: 1.31k]
  ------------------
 4118|    291|		case 'c':	goto yy342;
  ------------------
  |  Branch (4118:3): [True: 210, False: 1.18k]
  ------------------
 4119|    184|		case 'D':
  ------------------
  |  Branch (4119:3): [True: 184, False: 1.21k]
  ------------------
 4120|    545|		case 'd':	goto yy343;
  ------------------
  |  Branch (4120:3): [True: 361, False: 1.03k]
  ------------------
 4121|    147|		case 'F':
  ------------------
  |  Branch (4121:3): [True: 147, False: 1.24k]
  ------------------
 4122|    159|		case 'f':	goto yy344;
  ------------------
  |  Branch (4122:3): [True: 12, False: 1.38k]
  ------------------
 4123|     42|		case 'H':
  ------------------
  |  Branch (4123:3): [True: 42, False: 1.35k]
  ------------------
 4124|     63|		case 'h':	goto yy345;
  ------------------
  |  Branch (4124:3): [True: 21, False: 1.37k]
  ------------------
 4125|     21|		case 'L':
  ------------------
  |  Branch (4125:3): [True: 21, False: 1.37k]
  ------------------
 4126|     27|		case 'l':	goto yy346;
  ------------------
  |  Branch (4126:3): [True: 6, False: 1.39k]
  ------------------
 4127|     34|		case 'M':
  ------------------
  |  Branch (4127:3): [True: 34, False: 1.36k]
  ------------------
 4128|     42|		case 'm':	goto yy347;
  ------------------
  |  Branch (4128:3): [True: 8, False: 1.38k]
  ------------------
 4129|     50|		case 'N':
  ------------------
  |  Branch (4129:3): [True: 50, False: 1.34k]
  ------------------
 4130|     73|		case 'n':	goto yy348;
  ------------------
  |  Branch (4130:3): [True: 23, False: 1.37k]
  ------------------
 4131|     57|		case 'P':
  ------------------
  |  Branch (4131:3): [True: 57, False: 1.33k]
  ------------------
 4132|     57|		case 'p':	goto yy349;
  ------------------
  |  Branch (4132:3): [True: 0, False: 1.39k]
  ------------------
 4133|      8|		case 'T':
  ------------------
  |  Branch (4133:3): [True: 8, False: 1.38k]
  ------------------
 4134|     50|		case 't':	goto yy350;
  ------------------
  |  Branch (4134:3): [True: 42, False: 1.35k]
  ------------------
 4135|     89|		default:	goto yy48;
  ------------------
  |  Branch (4135:3): [True: 89, False: 1.30k]
  ------------------
 4136|  1.39k|		}
 4137|     11|yy217:
 4138|     11|		YYDEBUG(217, *YYCURSOR);
 4139|     11|		++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4140|     11|		YYDEBUG(218, *YYCURSOR);
 4141|     11|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     11|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4142|     11|#line 1905 "Zend/zend_language_scanner.l"
 4143|     11|		{
 4144|     11|	RETURN_TOKEN(T_OR_EQUAL);
  ------------------
  |  | 1318|     11|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     11|		token = _token; \
  |  | 1320|     11|		goto emit_token; \
  |  | 1321|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4145|     11|}
 4146|      0|#line 4147 "Zend/zend_language_scanner.c"
 4147|     36|yy219:
 4148|     36|		YYDEBUG(219, *YYCURSOR);
 4149|     36|		++YYCURSOR;
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4150|     36|		YYDEBUG(220, *YYCURSOR);
 4151|     36|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     36|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4152|     36|#line 1917 "Zend/zend_language_scanner.l"
 4153|     36|		{
 4154|     36|	RETURN_TOKEN(T_PIPE);
  ------------------
  |  | 1318|     36|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     36|		token = _token; \
  |  | 1320|     36|		goto emit_token; \
  |  | 1321|     36|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4155|     36|}
 4156|      0|#line 4157 "Zend/zend_language_scanner.c"
 4157|     46|yy221:
 4158|     46|		YYDEBUG(221, *YYCURSOR);
 4159|     46|		++YYCURSOR;
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4160|     46|		YYDEBUG(222, *YYCURSOR);
 4161|     46|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     46|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4162|     46|#line 1921 "Zend/zend_language_scanner.l"
 4163|     46|		{
 4164|     46|	RETURN_TOKEN(T_BOOLEAN_OR);
  ------------------
  |  | 1318|     46|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     46|		token = _token; \
  |  | 1320|     46|		goto emit_token; \
  |  | 1321|     46|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4165|     46|}
 4166|      0|#line 4167 "Zend/zend_language_scanner.c"
 4167|      5|yy223:
 4168|      5|		YYDEBUG(223, *YYCURSOR);
 4169|      5|		++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4170|      5|		YYDEBUG(224, *YYCURSOR);
 4171|      5|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      5|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4172|      5|#line 1837 "Zend/zend_language_scanner.l"
 4173|      5|		{
 4174|      5|	RETURN_TOKEN(T_IS_NOT_IDENTICAL);
  ------------------
  |  | 1318|      5|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      5|		token = _token; \
  |  | 1320|      5|		goto emit_token; \
  |  | 1321|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4175|      5|}
 4176|      0|#line 4177 "Zend/zend_language_scanner.c"
 4177|  4.95k|yy225:
 4178|  4.95k|		YYDEBUG(225, *YYCURSOR);
 4179|  4.95k|		++YYCURSOR;
  ------------------
  |  |   54|  4.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4180|  4.95k|		YYFILL(1);
  ------------------
  |  |   53|  4.95k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  4.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  4.95k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  4.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  4.95k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  4.95k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  4.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  4.95k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4.95k]
  |  |  ------------------
  ------------------
 4181|  4.95k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  4.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4182|  4.95k|		YYDEBUG(226, *YYCURSOR);
 4183|  4.95k|		if (yybm[0+yych] & 2) {
  ------------------
  |  Branch (4183:7): [True: 4.06k, False: 891]
  ------------------
 4184|  4.06k|			goto yy225;
 4185|  4.06k|		}
 4186|    891|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (4186:7): [True: 125, False: 766]
  ------------------
 4187|    766|		goto yy84;
 4188|  1.09k|yy227:
 4189|  1.09k|		YYDEBUG(227, *YYCURSOR);
 4190|  1.09k|		++YYCURSOR;
  ------------------
  |  |   54|  1.09k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4191|  1.09k|		YYFILL(1);
  ------------------
  |  |   53|  1.09k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.09k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.09k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.09k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.09k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.09k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.09k]
  |  |  ------------------
  ------------------
 4192|  1.09k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.09k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4193|  1.09k|		YYDEBUG(228, *YYCURSOR);
 4194|  1.09k|		if (yych <= 0x1F) {
  ------------------
  |  Branch (4194:7): [True: 180, False: 916]
  ------------------
 4195|    180|			if (yych <= '\t') {
  ------------------
  |  Branch (4195:8): [True: 69, False: 111]
  ------------------
 4196|     69|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (4196:9): [True: 7, False: 62]
  ------------------
 4197|     62|				if (yych <= 0x08) goto yy225;
  ------------------
  |  Branch (4197:9): [True: 49, False: 13]
  ------------------
 4198|     13|				goto yy227;
 4199|    111|			} else {
 4200|    111|				if (yych <= '\n') goto yy84;
  ------------------
  |  Branch (4200:9): [True: 12, False: 99]
  ------------------
 4201|     99|				if (yych == '\r') goto yy84;
  ------------------
  |  Branch (4201:9): [True: 75, False: 24]
  ------------------
 4202|     24|				goto yy225;
 4203|     99|			}
 4204|    916|		} else {
 4205|    916|			if (yych <= '$') {
  ------------------
  |  Branch (4205:8): [True: 136, False: 780]
  ------------------
 4206|    136|				if (yych <= ' ') goto yy227;
  ------------------
  |  Branch (4206:9): [True: 7, False: 129]
  ------------------
 4207|    129|				if (yych <= '"') goto yy225;
  ------------------
  |  Branch (4207:9): [True: 5, False: 124]
  ------------------
 4208|    124|				if (yych <= '#') goto yy351;
  ------------------
  |  Branch (4208:9): [True: 17, False: 107]
  ------------------
 4209|    107|				goto yy352;
 4210|    780|			} else {
 4211|    780|				if (yych <= '-') goto yy225;
  ------------------
  |  Branch (4211:9): [True: 110, False: 670]
  ------------------
 4212|    670|				if (yych <= '.') goto yy353;
  ------------------
  |  Branch (4212:9): [True: 68, False: 602]
  ------------------
 4213|    602|				if (yych <= '/') goto yy354;
  ------------------
  |  Branch (4213:9): [True: 402, False: 200]
  ------------------
 4214|    200|				goto yy225;
 4215|    602|			}
 4216|    916|		}
 4217|     19|yy229:
 4218|     19|		YYDEBUG(229, *YYCURSOR);
 4219|     19|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4220|     19|		if (yych == '.') goto yy88;
  ------------------
  |  Branch (4220:7): [True: 14, False: 5]
  ------------------
 4221|      5|		goto yy86;
 4222|  2.10k|yy230:
 4223|  2.10k|		YYDEBUG(230, *YYCURSOR);
 4224|  2.10k|		++YYCURSOR;
  ------------------
  |  |   54|  2.10k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.10k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.10k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4225|  2.10k|		YYFILL(1);
  ------------------
  |  |   53|  2.10k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.10k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.10k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.10k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.10k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.10k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.10k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.10k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.10k]
  |  |  ------------------
  ------------------
 4226|  2.10k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.10k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.10k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.10k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4227|  2.10k|		YYDEBUG(231, *YYCURSOR);
 4228|  2.10k|		if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (4228:7): [True: 1.86k, False: 241]
  ------------------
 4229|  1.86k|			goto yy230;
 4230|  1.86k|		}
 4231|    241|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (4231:7): [True: 106, False: 135]
  ------------------
 4232|    135|		goto yy355;
 4233|    135|yy232:
 4234|    131|		YYDEBUG(232, *YYCURSOR);
 4235|    131|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    131|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    131|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    131|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4236|    131|		if (yych == 'R') goto yy357;
  ------------------
  |  Branch (4236:7): [True: 7, False: 124]
  ------------------
 4237|    124|		if (yych == 'r') goto yy357;
  ------------------
  |  Branch (4237:7): [True: 114, False: 10]
  ------------------
 4238|     10|		goto yy86;
 4239|    156|yy233:
 4240|    156|		YYDEBUG(233, *YYCURSOR);
 4241|    156|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    156|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    156|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    156|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4242|    156|		if (yych == 'N') goto yy358;
  ------------------
  |  Branch (4242:7): [True: 0, False: 156]
  ------------------
 4243|    156|		if (yych == 'n') goto yy358;
  ------------------
  |  Branch (4243:7): [True: 7, False: 149]
  ------------------
 4244|    149|		goto yy86;
 4245|    149|yy234:
 4246|     24|		YYDEBUG(234, *YYCURSOR);
 4247|     24|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4248|     24|		if (yych == 'O') goto yy359;
  ------------------
  |  Branch (4248:7): [True: 0, False: 24]
  ------------------
 4249|     24|		if (yych == 'o') goto yy359;
  ------------------
  |  Branch (4249:7): [True: 20, False: 4]
  ------------------
 4250|      4|		goto yy86;
 4251|      6|yy235:
 4252|      6|		YYDEBUG(235, *YYCURSOR);
 4253|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4254|      6|		if (yych == 'U') goto yy360;
  ------------------
  |  Branch (4254:7): [True: 0, False: 6]
  ------------------
 4255|      6|		if (yych == 'u') goto yy360;
  ------------------
  |  Branch (4255:7): [True: 5, False: 1]
  ------------------
 4256|      1|		goto yy86;
 4257|     35|yy236:
 4258|     35|		YYDEBUG(236, *YYCURSOR);
 4259|     35|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4260|     35|		if (yych == 'O') goto yy361;
  ------------------
  |  Branch (4260:7): [True: 0, False: 35]
  ------------------
 4261|     35|		if (yych == 'o') goto yy361;
  ------------------
  |  Branch (4261:7): [True: 21, False: 14]
  ------------------
 4262|     14|		goto yy86;
 4263|    134|yy237:
 4264|    134|		YYDEBUG(237, *YYCURSOR);
 4265|    134|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    134|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    134|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    134|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4266|    134|		if (yych == 'T') goto yy362;
  ------------------
  |  Branch (4266:7): [True: 0, False: 134]
  ------------------
 4267|    134|		if (yych == 't') goto yy362;
  ------------------
  |  Branch (4267:7): [True: 81, False: 53]
  ------------------
 4268|     53|		goto yy86;
 4269|     88|yy238:
 4270|     88|		YYDEBUG(238, *YYCURSOR);
 4271|     88|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4272|     88|		if (yych == 'J') goto yy363;
  ------------------
  |  Branch (4272:7): [True: 18, False: 70]
  ------------------
 4273|     70|		if (yych == 'j') goto yy363;
  ------------------
  |  Branch (4273:7): [True: 60, False: 10]
  ------------------
 4274|     10|		goto yy86;
 4275|     33|yy239:
 4276|     33|		YYDEBUG(239, *YYCURSOR);
 4277|     33|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4278|     33|		if (yych == 'A') goto yy364;
  ------------------
  |  Branch (4278:7): [True: 3, False: 30]
  ------------------
 4279|     30|		if (yych == 'a') goto yy364;
  ------------------
  |  Branch (4279:7): [True: 5, False: 25]
  ------------------
 4280|     25|		goto yy86;
 4281|    140|yy240:
 4282|    140|		YYDEBUG(240, *YYCURSOR);
 4283|    140|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    140|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    140|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    140|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4284|    140|		if (yych == 'R') goto yy365;
  ------------------
  |  Branch (4284:7): [True: 1, False: 139]
  ------------------
 4285|    139|		if (yych == 'r') goto yy365;
  ------------------
  |  Branch (4285:7): [True: 130, False: 9]
  ------------------
 4286|      9|		goto yy86;
 4287|    191|yy241:
 4288|    191|		YYDEBUG(241, *YYCURSOR);
 4289|    191|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    191|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    191|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    191|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4290|    191|		if (yych == 'S') goto yy366;
  ------------------
  |  Branch (4290:7): [True: 1, False: 190]
  ------------------
 4291|    190|		if (yych == 's') goto yy366;
  ------------------
  |  Branch (4291:7): [True: 161, False: 29]
  ------------------
 4292|     29|		goto yy86;
 4293|     29|yy242:
 4294|      5|		YYDEBUG(242, *YYCURSOR);
 4295|      5|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4296|      5|		if (yych == 'I') goto yy367;
  ------------------
  |  Branch (4296:7): [True: 0, False: 5]
  ------------------
 4297|      5|		if (yych == 'i') goto yy367;
  ------------------
  |  Branch (4297:7): [True: 4, False: 1]
  ------------------
 4298|      1|		goto yy86;
 4299|     13|yy243:
 4300|     13|		YYDEBUG(243, *YYCURSOR);
 4301|     13|		++YYCURSOR;
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4302|     13|		YYDEBUG(244, *YYCURSOR);
 4303|     13|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     13|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4304|     13|#line 1877 "Zend/zend_language_scanner.l"
 4305|     13|		{
 4306|     13|	RETURN_TOKEN(T_POW_EQUAL);
  ------------------
  |  | 1318|     13|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     13|		token = _token; \
  |  | 1320|     13|		goto emit_token; \
  |  | 1321|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4307|     13|}
 4308|      0|#line 4309 "Zend/zend_language_scanner.c"
 4309|    362|yy245:
 4310|    362|		YYDEBUG(245, *YYCURSOR);
 4311|    362|		++YYCURSOR;
  ------------------
  |  |   54|    362|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    362|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    362|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4312|    362|		YYDEBUG(246, *YYCURSOR);
 4313|    362|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    362|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    362|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    362|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    362|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    362|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    362|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    362|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    362|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4314|    362|#line 1617 "Zend/zend_language_scanner.l"
 4315|    362|		{
 4316|    362|	RETURN_TOKEN(T_ELLIPSIS);
  ------------------
  |  | 1318|    362|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    362|		token = _token; \
  |  | 1320|    362|		goto emit_token; \
  |  | 1321|    362|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4317|    362|}
 4318|      0|#line 4319 "Zend/zend_language_scanner.c"
 4319|     11|yy247:
 4320|     11|		YYDEBUG(247, *YYCURSOR);
 4321|     11|		++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4322|     11|		YYFILL(1);
  ------------------
  |  |   53|     11|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     11|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     11|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 4323|     11|		yych = *YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4324|     11|		if (yych <= '/') goto yy86;
  ------------------
  |  Branch (4324:7): [True: 1, False: 10]
  ------------------
 4325|     10|		if (yych <= '9') goto yy123;
  ------------------
  |  Branch (4325:7): [True: 0, False: 10]
  ------------------
 4326|     10|		goto yy86;
 4327|    101|yy248:
 4328|    101|		YYDEBUG(248, *YYCURSOR);
 4329|    101|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4330|    101|		if (yych <= '\f') {
  ------------------
  |  Branch (4330:7): [True: 33, False: 68]
  ------------------
 4331|     33|			if (yych <= 0x08) goto yy86;
  ------------------
  |  Branch (4331:8): [True: 6, False: 27]
  ------------------
 4332|     27|			if (yych <= '\n') goto yy368;
  ------------------
  |  Branch (4332:8): [True: 27, False: 0]
  ------------------
 4333|      0|			goto yy86;
 4334|     68|		} else {
 4335|     68|			if (yych <= '\r') goto yy368;
  ------------------
  |  Branch (4335:8): [True: 25, False: 43]
  ------------------
 4336|     43|			if (yych == ' ') goto yy368;
  ------------------
  |  Branch (4336:8): [True: 16, False: 27]
  ------------------
 4337|     27|			goto yy86;
 4338|     43|		}
 4339|     34|yy249:
 4340|     34|		YYDEBUG(249, *YYCURSOR);
 4341|     34|		yyaccept = 14;
 4342|     34|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     34|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4343|     34|		YYFILL(1);
  ------------------
  |  |   53|     34|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     34|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     34|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 34]
  |  |  ------------------
  ------------------
 4344|     34|		yych = *YYCURSOR;
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4345|     34|		YYDEBUG(250, *YYCURSOR);
 4346|     34|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (4346:7): [True: 22, False: 12]
  ------------------
 4347|     22|			goto yy249;
 4348|     22|		}
 4349|     12|		if (yych == '_') goto yy134;
  ------------------
  |  Branch (4349:7): [True: 1, False: 11]
  ------------------
 4350|     12|yy251:
 4351|     12|		YYDEBUG(251, *YYCURSOR);
 4352|     12|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     12|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4353|     12|#line 2010 "Zend/zend_language_scanner.l"
 4354|     12|		{
 4355|       |	/* The +/- 2 skips "0b" */
 4356|     12|	size_t len = yyleng - 2;
  ------------------
  |  |   67|     12|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4357|     12|	char *end, *bin = yytext + 2;
  ------------------
  |  |   66|     12|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4358|     12|	bool contains_underscores;
 4359|       |
 4360|       |	/* Skip any leading 0s */
 4361|     16|	while (len > 0 && (*bin == '0' || *bin == '_')) {
  ------------------
  |  Branch (4361:9): [True: 14, False: 2]
  |  Branch (4361:21): [True: 4, False: 10]
  |  Branch (4361:36): [True: 0, False: 10]
  ------------------
 4362|      4|		++bin;
 4363|      4|		--len;
 4364|      4|	}
 4365|       |
 4366|     12|	contains_underscores = (memchr(bin, '_', len) != NULL);
 4367|       |
 4368|     12|	if (contains_underscores) {
  ------------------
  |  Branch (4368:6): [True: 0, False: 12]
  ------------------
 4369|      0|		bin = estrndup(bin, len);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4370|      0|		strip_underscores(bin, &len);
 4371|      0|	}
 4372|       |
 4373|     12|	if (len < SIZEOF_ZEND_LONG * 8) {
  ------------------
  |  |   39|     12|# define SIZEOF_ZEND_LONG 8
  ------------------
  |  Branch (4373:6): [True: 12, False: 0]
  ------------------
 4374|     12|		if (len == 0) {
  ------------------
  |  Branch (4374:7): [True: 2, False: 10]
  ------------------
 4375|      2|			ZVAL_LONG(zendlval, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4376|     10|		} else {
 4377|     10|			errno = 0;
 4378|     10|			ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
  ------------------
  |  | 1076|     10|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     10|		zval *__z = (z);				\
  |  | 1078|     10|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     10|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     10|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 4379|     10|			ZEND_ASSERT(!errno && end == bin + len);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4379:4): [True: 0, False: 10]
  |  Branch (4379:4): [True: 0, False: 0]
  |  Branch (4379:4): [True: 10, False: 0]
  |  Branch (4379:4): [True: 10, False: 0]
  ------------------
 4380|     10|		}
 4381|     12|		if (contains_underscores) {
  ------------------
  |  Branch (4381:7): [True: 0, False: 12]
  ------------------
 4382|      0|			efree(bin);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4383|      0|		}
 4384|     12|		RETURN_TOKEN_WITH_VAL(T_LNUMBER);
  ------------------
  |  | 1323|     12|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     12|		token = _token; \
  |  | 1325|     12|		goto emit_token_with_val; \
  |  | 1326|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4385|     12|	} else {
 4386|      0|		ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4387|       |		/* errno isn't checked since we allow HUGE_VAL/INF overflow */
 4388|      0|		ZEND_ASSERT(end == bin + len);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4388:3): [True: 0, False: 0]
  |  Branch (4388:3): [True: 0, False: 0]
  ------------------
 4389|      0|		if (contains_underscores) {
  ------------------
  |  Branch (4389:7): [True: 0, False: 0]
  ------------------
 4390|      0|			efree(bin);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4391|      0|		}
 4392|      0|		RETURN_TOKEN_WITH_VAL(T_DNUMBER);
  ------------------
  |  | 1323|      0|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|      0|		token = _token; \
  |  | 1325|      0|		goto emit_token_with_val; \
  |  | 1326|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4393|      0|	}
 4394|     12|}
 4395|      0|#line 4396 "Zend/zend_language_scanner.c"
 4396|    101|yy252:
 4397|    101|		YYDEBUG(252, *YYCURSOR);
 4398|    101|		++YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4399|    101|		YYFILL(1);
  ------------------
  |  |   53|    101|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    101|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    101|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 101]
  |  |  ------------------
  ------------------
 4400|    101|		yych = *YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4401|    101|		if (yych <= '/') goto yy86;
  ------------------
  |  Branch (4401:7): [True: 1, False: 100]
  ------------------
 4402|    100|		if (yych >= ':') goto yy86;
  ------------------
  |  Branch (4402:7): [True: 31, False: 69]
  ------------------
 4403|    540|yy253:
 4404|    540|		YYDEBUG(253, *YYCURSOR);
 4405|    540|		yyaccept = 5;
 4406|    540|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    540|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    540|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    540|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    540|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    540|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    540|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4407|    540|		YYFILL(1);
  ------------------
  |  |   53|    540|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    540|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    540|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    540|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    540|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    540|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    540|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    540|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 540]
  |  |  ------------------
  ------------------
 4408|    540|		yych = *YYCURSOR;
  ------------------
  |  |   54|    540|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    540|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    540|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4409|    540|		YYDEBUG(254, *YYCURSOR);
 4410|    540|		if (yych <= '/') goto yy125;
  ------------------
  |  Branch (4410:7): [True: 76, False: 464]
  ------------------
 4411|    464|		if (yych <= '9') goto yy253;
  ------------------
  |  Branch (4411:7): [True: 315, False: 149]
  ------------------
 4412|    149|		if (yych == '_') goto yy252;
  ------------------
  |  Branch (4412:7): [True: 54, False: 95]
  ------------------
 4413|     95|		goto yy125;
 4414|     95|yy255:
 4415|     24|		YYDEBUG(255, *YYCURSOR);
 4416|     24|		yyaccept = 15;
 4417|     24|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     24|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4418|     24|		YYFILL(1);
  ------------------
  |  |   53|     24|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     24|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     24|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 24]
  |  |  ------------------
  ------------------
 4419|     24|		yych = *YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4420|     24|		YYDEBUG(256, *YYCURSOR);
 4421|     24|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (4421:7): [True: 18, False: 6]
  ------------------
 4422|     18|			goto yy255;
 4423|     18|		}
 4424|      6|		if (yych == '_') goto yy136;
  ------------------
  |  Branch (4424:7): [True: 2, False: 4]
  ------------------
 4425|      6|yy257:
 4426|      6|		YYDEBUG(257, *YYCURSOR);
 4427|      6|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      6|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4428|      6|#line 2052 "Zend/zend_language_scanner.l"
 4429|      6|		{
 4430|       |	/* The +/- 2 skips "0o" */
 4431|      6|	size_t len = yyleng - 2;
  ------------------
  |  |   67|      6|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4432|      6|	char *end, *octal = yytext + 2;
  ------------------
  |  |   66|      6|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4433|      6|	bool contains_underscores = (memchr(octal, '_', len) != NULL);
 4434|       |
 4435|       |	/* Skip any leading 0s */
 4436|     10|	while (len > 0 && (*octal == '0' || *octal == '_')) {
  ------------------
  |  Branch (4436:9): [True: 9, False: 1]
  |  Branch (4436:21): [True: 4, False: 5]
  |  Branch (4436:38): [True: 0, False: 5]
  ------------------
 4437|      4|		++octal;
 4438|      4|		--len;
 4439|      4|	}
 4440|       |
 4441|      6|	if (len == 0) {
  ------------------
  |  Branch (4441:6): [True: 1, False: 5]
  ------------------
 4442|      1|		ZVAL_LONG(zendlval, 0);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4443|      1|		RETURN_TOKEN_WITH_VAL(T_LNUMBER);
  ------------------
  |  | 1323|      1|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|      1|		token = _token; \
  |  | 1325|      1|		goto emit_token_with_val; \
  |  | 1326|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4444|      1|	}
 4445|       |
 4446|      5|	if (contains_underscores) {
  ------------------
  |  Branch (4446:6): [True: 0, False: 5]
  ------------------
 4447|      0|		octal = estrndup(octal, len);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4448|      0|		strip_underscores(octal, &len);
 4449|      0|	}
 4450|       |
 4451|      5|	errno = 0;
 4452|       |
 4453|      5|	ZVAL_LONG(zendlval, ZEND_STRTOL(octal, &end, 8));
  ------------------
  |  | 1076|      5|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      5|		zval *__z = (z);				\
  |  | 1078|      5|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      5|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      5|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 4454|       |
 4455|      5|	ZEND_ASSERT(end == octal + len);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4455:2): [True: 0, False: 5]
  |  Branch (4455:2): [True: 5, False: 0]
  ------------------
 4456|       |
 4457|      5|	if (!errno) {
  ------------------
  |  Branch (4457:6): [True: 5, False: 0]
  ------------------
 4458|      5|		if (contains_underscores) {
  ------------------
  |  Branch (4458:7): [True: 0, False: 5]
  ------------------
 4459|      0|			efree(octal);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4460|      0|		}
 4461|      5|		RETURN_TOKEN_WITH_VAL(T_LNUMBER);
  ------------------
  |  | 1323|      5|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|      5|		token = _token; \
  |  | 1325|      5|		goto emit_token_with_val; \
  |  | 1326|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4462|      5|	}
 4463|       |
 4464|       |	/* Overflow */
 4465|      0|	ZEND_ASSERT(errno == ERANGE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4465:2): [True: 0, False: 0]
  |  Branch (4465:2): [True: 0, False: 0]
  ------------------
 4466|       |	/* Reset errno */
 4467|      0|	errno = 0;
 4468|       |
 4469|       |	/* zend_oct_strtod skips leading '0' */
 4470|      0|	ZVAL_DOUBLE(zendlval, zend_oct_strtod(octal, (const char **)&end));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4471|      0|	ZEND_ASSERT(!errno);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4471:2): [True: 0, False: 0]
  |  Branch (4471:2): [True: 0, False: 0]
  ------------------
 4472|      0|	ZEND_ASSERT(end == octal + len);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4472:2): [True: 0, False: 0]
  |  Branch (4472:2): [True: 0, False: 0]
  ------------------
 4473|      0|	if (contains_underscores) {
  ------------------
  |  Branch (4473:6): [True: 0, False: 0]
  ------------------
 4474|      0|		efree(octal);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4475|      0|	}
 4476|      0|	RETURN_TOKEN_WITH_VAL(T_DNUMBER);
  ------------------
  |  | 1323|      0|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|      0|		token = _token; \
  |  | 1325|      0|		goto emit_token_with_val; \
  |  | 1326|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4477|      0|}
 4478|      0|#line 4479 "Zend/zend_language_scanner.c"
 4479|    499|yy258:
 4480|    499|		YYDEBUG(258, *YYCURSOR);
 4481|    499|		yyaccept = 16;
 4482|    499|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    499|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    499|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    499|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    499|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    499|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    499|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4483|    499|		YYFILL(1);
  ------------------
  |  |   53|    499|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    499|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    499|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    499|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    499|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    499|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    499|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    499|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 499]
  |  |  ------------------
  ------------------
 4484|    499|		yych = *YYCURSOR;
  ------------------
  |  |   54|    499|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    499|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    499|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4485|    499|		YYDEBUG(259, *YYCURSOR);
 4486|    499|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (4486:7): [True: 452, False: 47]
  ------------------
 4487|    452|			goto yy258;
 4488|    452|		}
 4489|     47|		if (yych == '_') goto yy137;
  ------------------
  |  Branch (4489:7): [True: 5, False: 42]
  ------------------
 4490|     43|yy260:
 4491|     43|		YYDEBUG(260, *YYCURSOR);
 4492|     43|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     43|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4493|     43|#line 2165 "Zend/zend_language_scanner.l"
 4494|     43|		{
 4495|       |	/* The +/- 2 skips "0x" */
 4496|     43|	size_t len = yyleng - 2;
  ------------------
  |  |   67|     43|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4497|     43|	char *end, *hex = yytext + 2;
  ------------------
  |  |   66|     43|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4498|     43|	bool contains_underscores;
 4499|       |
 4500|       |	/* Skip any leading 0s */
 4501|     68|	while (len > 0 && (*hex == '0' || *hex == '_')) {
  ------------------
  |  Branch (4501:9): [True: 64, False: 4]
  |  Branch (4501:21): [True: 25, False: 39]
  |  Branch (4501:36): [True: 0, False: 39]
  ------------------
 4502|     25|		++hex;
 4503|     25|		--len;
 4504|     25|	}
 4505|       |
 4506|     43|	contains_underscores = (memchr(hex, '_', len) != NULL);
 4507|       |
 4508|     43|	if (contains_underscores) {
  ------------------
  |  Branch (4508:6): [True: 4, False: 39]
  ------------------
 4509|      4|		hex = estrndup(hex, len);
  ------------------
  |  |  164|      4|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4510|      4|		strip_underscores(hex, &len);
 4511|      4|	}
 4512|       |
 4513|     43|	if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) {
  ------------------
  |  |   39|     43|# define SIZEOF_ZEND_LONG 8
  ------------------
              	if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) {
  ------------------
  |  |   39|     16|# define SIZEOF_ZEND_LONG 8
  ------------------
  |  Branch (4513:6): [True: 27, False: 16]
  |  Branch (4513:37): [True: 7, False: 9]
  |  Branch (4513:68): [True: 1, False: 6]
  ------------------
 4514|     28|		if (len == 0) {
  ------------------
  |  Branch (4514:7): [True: 4, False: 24]
  ------------------
 4515|      4|			ZVAL_LONG(zendlval, 0);
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 4516|     24|		} else {
 4517|     24|			errno = 0;
 4518|     24|			ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
  ------------------
  |  | 1076|     24|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     24|		zval *__z = (z);				\
  |  | 1078|     24|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     24|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     24|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     24|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     24|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
 4519|     24|			ZEND_ASSERT(!errno && end == hex + len);
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4519:4): [True: 0, False: 24]
  |  Branch (4519:4): [True: 0, False: 0]
  |  Branch (4519:4): [True: 24, False: 0]
  |  Branch (4519:4): [True: 24, False: 0]
  ------------------
 4520|     24|		}
 4521|     28|		if (contains_underscores) {
  ------------------
  |  Branch (4521:7): [True: 2, False: 26]
  ------------------
 4522|      2|			efree(hex);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4523|      2|		}
 4524|     28|		RETURN_TOKEN_WITH_VAL(T_LNUMBER);
  ------------------
  |  | 1323|     28|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     28|		token = _token; \
  |  | 1325|     28|		goto emit_token_with_val; \
  |  | 1326|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4525|     28|	} else {
 4526|     15|		ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end));
  ------------------
  |  | 1082|     15|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     15|		zval *__z = (z);				\
  |  | 1084|     15|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     15|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     15|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     15|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     15|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 4527|       |		/* errno isn't checked since we allow HUGE_VAL/INF overflow */
 4528|     15|		ZEND_ASSERT(end == hex + len);
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4528:3): [True: 0, False: 15]
  |  Branch (4528:3): [True: 15, False: 0]
  ------------------
 4529|     15|		if (contains_underscores) {
  ------------------
  |  Branch (4529:7): [True: 2, False: 13]
  ------------------
 4530|      2|			efree(hex);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4531|      2|		}
 4532|     15|		RETURN_TOKEN_WITH_VAL(T_DNUMBER);
  ------------------
  |  | 1323|     15|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     15|		token = _token; \
  |  | 1325|     15|		goto emit_token_with_val; \
  |  | 1326|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4533|     15|	}
 4534|     43|}
 4535|      0|#line 4536 "Zend/zend_language_scanner.c"
 4536|  23.5k|yy261:
 4537|  23.5k|		YYDEBUG(261, *YYCURSOR);
 4538|  23.5k|		++YYCURSOR;
  ------------------
  |  |   54|  23.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  23.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  23.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4539|  23.5k|		YYFILL(2);
  ------------------
  |  |   53|  23.5k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  23.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  23.5k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  23.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  23.5k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  23.5k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  23.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  23.5k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 23.5k]
  |  |  ------------------
  ------------------
 4540|  23.5k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  23.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  23.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  23.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4541|  23.5k|		YYDEBUG(262, *YYCURSOR);
 4542|  23.5k|		if (yych <= '\'') {
  ------------------
  |  Branch (4542:7): [True: 2.39k, False: 21.1k]
  ------------------
 4543|  2.39k|			if (yych <= ' ') {
  ------------------
  |  Branch (4543:8): [True: 2.06k, False: 331]
  ------------------
 4544|  2.06k|				if (yych == '\t') goto yy261;
  ------------------
  |  Branch (4544:9): [True: 24, False: 2.04k]
  ------------------
 4545|  2.04k|				if (yych <= 0x1F) goto yy86;
  ------------------
  |  Branch (4545:9): [True: 1.99k, False: 52]
  ------------------
 4546|     52|				goto yy261;
 4547|  2.04k|			} else {
 4548|    331|				if (yych == '"') goto yy370;
  ------------------
  |  Branch (4548:9): [True: 113, False: 218]
  ------------------
 4549|    218|				if (yych <= '&') goto yy86;
  ------------------
  |  Branch (4549:9): [True: 101, False: 117]
  ------------------
 4550|    117|				goto yy371;
 4551|    218|			}
 4552|  21.1k|		} else {
 4553|  21.1k|			if (yych <= '_') {
  ------------------
  |  Branch (4553:8): [True: 7.15k, False: 13.9k]
  ------------------
 4554|  7.15k|				if (yych <= '@') goto yy86;
  ------------------
  |  Branch (4554:9): [True: 3.01k, False: 4.14k]
  ------------------
 4555|  4.14k|				if (yych <= 'Z') goto yy372;
  ------------------
  |  Branch (4555:9): [True: 4.10k, False: 40]
  ------------------
 4556|     40|				if (yych <= '^') goto yy86;
  ------------------
  |  Branch (4556:9): [True: 13, False: 27]
  ------------------
 4557|     27|				goto yy372;
 4558|  13.9k|			} else {
 4559|  13.9k|				if (yych <= '`') goto yy86;
  ------------------
  |  Branch (4559:9): [True: 20, False: 13.9k]
  ------------------
 4560|  13.9k|				if (yych <= 'z') goto yy372;
  ------------------
  |  Branch (4560:9): [True: 12.8k, False: 1.07k]
  ------------------
 4561|  1.07k|				if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (4561:9): [True: 110, False: 967]
  ------------------
 4562|    967|				goto yy372;
 4563|  1.07k|			}
 4564|  21.1k|		}
 4565|     13|yy263:
 4566|     13|		YYDEBUG(263, *YYCURSOR);
 4567|     13|		++YYCURSOR;
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4568|     13|		YYDEBUG(264, *YYCURSOR);
 4569|     13|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     13|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4570|     13|#line 1893 "Zend/zend_language_scanner.l"
 4571|     13|		{
 4572|     13|	RETURN_TOKEN(T_SL_EQUAL);
  ------------------
  |  | 1318|     13|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     13|		token = _token; \
  |  | 1320|     13|		goto emit_token; \
  |  | 1321|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4573|     13|}
 4574|      0|#line 4575 "Zend/zend_language_scanner.c"
 4575|     10|yy265:
 4576|     10|		YYDEBUG(265, *YYCURSOR);
 4577|     10|		++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4578|     10|		YYDEBUG(266, *YYCURSOR);
 4579|     10|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     10|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4580|     10|#line 1849 "Zend/zend_language_scanner.l"
 4581|     10|		{
 4582|     10|	RETURN_TOKEN(T_SPACESHIP);
  ------------------
  |  | 1318|     10|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     10|		token = _token; \
  |  | 1320|     10|		goto emit_token; \
  |  | 1321|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4583|     10|}
 4584|      0|#line 4585 "Zend/zend_language_scanner.c"
 4585|     72|yy267:
 4586|     72|		YYDEBUG(267, *YYCURSOR);
 4587|     72|		++YYCURSOR;
  ------------------
  |  |   54|     72|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4588|     72|		YYDEBUG(268, *YYCURSOR);
 4589|     72|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     72|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     72|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4590|     72|#line 1833 "Zend/zend_language_scanner.l"
 4591|     72|		{
 4592|     72|	RETURN_TOKEN(T_IS_IDENTICAL);
  ------------------
  |  | 1318|     72|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     72|		token = _token; \
  |  | 1320|     72|		goto emit_token; \
  |  | 1321|     72|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4593|     72|}
 4594|      0|#line 4595 "Zend/zend_language_scanner.c"
 4595|      9|yy269:
 4596|      9|		YYDEBUG(269, *YYCURSOR);
 4597|      9|		++YYCURSOR;
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4598|      9|		YYDEBUG(270, *YYCURSOR);
 4599|      9|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4600|      9|#line 1897 "Zend/zend_language_scanner.l"
 4601|      9|		{
 4602|      9|	RETURN_TOKEN(T_SR_EQUAL);
  ------------------
  |  | 1318|      9|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      9|		token = _token; \
  |  | 1320|      9|		goto emit_token; \
  |  | 1321|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4603|      9|}
 4604|      0|#line 4605 "Zend/zend_language_scanner.c"
 4605|     95|yy271:
 4606|     95|		YYDEBUG(271, *YYCURSOR);
 4607|     95|		++YYCURSOR;
  ------------------
  |  |   54|     95|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4608|     95|		YYDEBUG(272, *YYCURSOR);
 4609|     95|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     95|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     95|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4610|     95|#line 1591 "Zend/zend_language_scanner.l"
 4611|     95|		{
 4612|     95|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|     95|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
 4613|     95|	RETURN_TOKEN(T_NULLSAFE_OBJECT_OPERATOR);
  ------------------
  |  | 1318|     95|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     95|		token = _token; \
  |  | 1320|     95|		goto emit_token; \
  |  | 1321|     95|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4614|     95|}
 4615|      0|#line 4616 "Zend/zend_language_scanner.c"
 4616|    390|yy273:
 4617|    390|		YYDEBUG(273, *YYCURSOR);
 4618|    390|		++YYCURSOR;
  ------------------
  |  |   54|    390|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    390|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    390|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4619|    390|		goto yy156;
 4620|      0|yy274:
 4621|      0|		YYDEBUG(274, *YYCURSOR);
 4622|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4623|      0|		if (yych == '\n') goto yy273;
  ------------------
  |  Branch (4623:7): [True: 0, False: 0]
  ------------------
 4624|      0|		goto yy156;
 4625|     24|yy275:
 4626|     24|		YYDEBUG(275, *YYCURSOR);
 4627|     24|		++YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4628|     24|		YYDEBUG(276, *YYCURSOR);
 4629|     24|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     24|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4630|     24|#line 1913 "Zend/zend_language_scanner.l"
 4631|     24|		{
 4632|     24|	RETURN_TOKEN(T_COALESCE_EQUAL);
  ------------------
  |  | 1318|     24|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     24|		token = _token; \
  |  | 1320|     24|		goto emit_token; \
  |  | 1321|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4633|     24|}
 4634|      0|#line 4635 "Zend/zend_language_scanner.c"
 4635|    137|yy277:
 4636|    137|		YYDEBUG(277, *YYCURSOR);
 4637|    137|		yyaccept = 4;
 4638|    137|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    137|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    137|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    137|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    137|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    137|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    137|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4639|    137|		if (yych == 'T') goto yy374;
  ------------------
  |  Branch (4639:7): [True: 2, False: 135]
  ------------------
 4640|    135|		if (yych == 't') goto yy374;
  ------------------
  |  Branch (4640:7): [True: 130, False: 5]
  ------------------
 4641|      5|		goto yy48;
 4642|     39|yy278:
 4643|     39|		YYDEBUG(278, *YYCURSOR);
 4644|     39|		yyaccept = 17;
 4645|     39|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     39|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     39|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4646|     39|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (4646:7): [True: 2, False: 37]
  ------------------
 4647|      2|			goto yy47;
 4648|      2|		}
 4649|     37|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (4649:7): [True: 5, False: 32]
  ------------------
 4650|     32|yy279:
 4651|     32|		YYDEBUG(279, *YYCURSOR);
 4652|     32|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     32|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4653|     32|#line 1933 "Zend/zend_language_scanner.l"
 4654|     32|		{
 4655|     32|	RETURN_TOKEN_WITH_IDENT(T_LOGICAL_AND);
  ------------------
  |  | 1334|     32|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     32|		token = _token; \
  |  | 1336|     32|		goto emit_token_with_ident; \
  |  | 1337|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4656|     32|}
 4657|      0|#line 4658 "Zend/zend_language_scanner.c"
 4658|    679|yy280:
 4659|    679|		YYDEBUG(280, *YYCURSOR);
 4660|    679|		yyaccept = 4;
 4661|    679|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    679|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    679|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    679|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    679|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    679|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    679|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4662|    679|		if (yych == 'A') goto yy375;
  ------------------
  |  Branch (4662:7): [True: 0, False: 679]
  ------------------
 4663|    679|		if (yych == 'a') goto yy375;
  ------------------
  |  Branch (4663:7): [True: 669, False: 10]
  ------------------
 4664|     10|		goto yy48;
 4665|  2.03k|yy281:
 4666|  2.03k|		YYDEBUG(281, *YYCURSOR);
 4667|  2.03k|		yyaccept = 18;
 4668|  2.03k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|  2.03k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.03k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|  2.03k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.03k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4669|  2.03k|		YYFILL(1);
  ------------------
  |  |   53|  2.03k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.03k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.03k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.03k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.03k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.03k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.03k]
  |  |  ------------------
  ------------------
 4670|  2.03k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.03k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.03k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.03k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4671|  2.03k|		YYDEBUG(282, *YYCURSOR);
 4672|  2.03k|		if (yych <= '\\') {
  ------------------
  |  Branch (4672:7): [True: 706, False: 1.32k]
  ------------------
 4673|    706|			if (yych <= '@') {
  ------------------
  |  Branch (4673:8): [True: 441, False: 265]
  ------------------
 4674|    441|				if (yych <= '/') goto yy283;
  ------------------
  |  Branch (4674:9): [True: 181, False: 260]
  ------------------
 4675|    260|				if (yych <= '9') goto yy281;
  ------------------
  |  Branch (4675:9): [True: 108, False: 152]
  ------------------
 4676|    265|			} else {
 4677|    265|				if (yych <= 'Z') goto yy281;
  ------------------
  |  Branch (4677:9): [True: 201, False: 64]
  ------------------
 4678|     64|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (4678:9): [True: 62, False: 2]
  ------------------
 4679|     64|			}
 4680|  1.32k|		} else {
 4681|  1.32k|			if (yych <= '`') {
  ------------------
  |  Branch (4681:8): [True: 17, False: 1.31k]
  ------------------
 4682|     17|				if (yych == '_') goto yy281;
  ------------------
  |  Branch (4682:9): [True: 13, False: 4]
  ------------------
 4683|  1.31k|			} else {
 4684|  1.31k|				if (yych <= 'z') goto yy281;
  ------------------
  |  Branch (4684:9): [True: 1.09k, False: 214]
  ------------------
 4685|    214|				if (yych >= 0x80) goto yy281;
  ------------------
  |  Branch (4685:9): [True: 197, False: 17]
  ------------------
 4686|    214|			}
 4687|  1.32k|		}
 4688|    388|yy283:
 4689|    388|		YYDEBUG(283, *YYCURSOR);
 4690|    388|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    388|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    388|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    388|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    388|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    388|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    388|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    388|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    388|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4691|    388|#line 2442 "Zend/zend_language_scanner.l"
 4692|    388|		{
 4693|    388|	RETURN_TOKEN_WITH_STR(T_NAME_QUALIFIED, 0);
  ------------------
  |  | 1328|    388|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|    388|		token = _token; \
  |  | 1330|    388|		offset = _offset; \
  |  | 1331|    388|		goto emit_token_with_str; \
  |  | 1332|    388|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4694|    388|}
 4695|      0|#line 4696 "Zend/zend_language_scanner.c"
 4696|    152|yy284:
 4697|    152|		YYDEBUG(284, *YYCURSOR);
 4698|    152|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4699|    152|		if (yych == '<') goto yy261;
  ------------------
  |  Branch (4699:7): [True: 104, False: 48]
  ------------------
 4700|     48|		goto yy86;
 4701|     48|yy285:
 4702|     41|		YYDEBUG(285, *YYCURSOR);
 4703|     41|		yyaccept = 4;
 4704|     41|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     41|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4705|     41|		if (yych == 'A') goto yy376;
  ------------------
  |  Branch (4705:7): [True: 0, False: 41]
  ------------------
 4706|     41|		if (yych == 'a') goto yy376;
  ------------------
  |  Branch (4706:7): [True: 31, False: 10]
  ------------------
 4707|     10|		goto yy48;
 4708|    342|yy286:
 4709|    342|		YYDEBUG(286, *YYCURSOR);
 4710|    342|		yyaccept = 4;
 4711|    342|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    342|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    342|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    342|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    342|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    342|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    342|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4712|    342|		if (yych == 'L') goto yy377;
  ------------------
  |  Branch (4712:7): [True: 1, False: 341]
  ------------------
 4713|    341|		if (yych == 'l') goto yy377;
  ------------------
  |  Branch (4713:7): [True: 198, False: 143]
  ------------------
 4714|    143|		goto yy48;
 4715|    175|yy287:
 4716|    175|		YYDEBUG(287, *YYCURSOR);
 4717|    175|		yyaccept = 4;
 4718|    175|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    175|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    175|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    175|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    175|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    175|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    175|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4719|    175|		if (yych == 'E') goto yy378;
  ------------------
  |  Branch (4719:7): [True: 0, False: 175]
  ------------------
 4720|    175|		if (yych == 'e') goto yy378;
  ------------------
  |  Branch (4720:7): [True: 170, False: 5]
  ------------------
 4721|      5|		goto yy48;
 4722|    201|yy288:
 4723|    201|		YYDEBUG(288, *YYCURSOR);
 4724|    201|		yyaccept = 4;
 4725|    201|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    201|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    201|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    201|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    201|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    201|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    201|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4726|    201|		if (yych == 'C') goto yy380;
  ------------------
  |  Branch (4726:7): [True: 0, False: 201]
  ------------------
 4727|    201|		if (yych == 'c') goto yy380;
  ------------------
  |  Branch (4727:7): [True: 197, False: 4]
  ------------------
 4728|      4|		goto yy48;
 4729|  1.70k|yy289:
 4730|  1.70k|		YYDEBUG(289, *YYCURSOR);
 4731|  1.70k|		yyaccept = 4;
 4732|  1.70k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.70k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.70k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.70k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.70k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.70k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.70k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4733|  1.70k|		if (yych == 'S') goto yy381;
  ------------------
  |  Branch (4733:7): [True: 3, False: 1.69k]
  ------------------
 4734|  1.69k|		if (yych == 's') goto yy381;
  ------------------
  |  Branch (4734:7): [True: 1.66k, False: 30]
  ------------------
 4735|     30|		goto yy48;
 4736|    172|yy290:
 4737|    172|		YYDEBUG(290, *YYCURSOR);
 4738|    172|		yyaccept = 4;
 4739|    172|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    172|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    172|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    172|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    172|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    172|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    172|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4740|    172|		if (yych == 'N') goto yy382;
  ------------------
  |  Branch (4740:7): [True: 0, False: 172]
  ------------------
 4741|    172|		if (yych == 'n') goto yy382;
  ------------------
  |  Branch (4741:7): [True: 48, False: 124]
  ------------------
 4742|    124|		goto yy48;
 4743|    746|yy291:
 4744|    746|		YYDEBUG(291, *YYCURSOR);
 4745|    746|		yyaccept = 4;
 4746|    746|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    746|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    746|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    746|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    746|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    746|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    746|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4747|    746|		if (yych <= 'T') {
  ------------------
  |  Branch (4747:7): [True: 46, False: 700]
  ------------------
 4748|     46|			if (yych <= 'R') goto yy48;
  ------------------
  |  Branch (4748:8): [True: 11, False: 35]
  ------------------
 4749|     35|			if (yych <= 'S') goto yy383;
  ------------------
  |  Branch (4749:8): [True: 26, False: 9]
  ------------------
 4750|      9|			goto yy384;
 4751|    700|		} else {
 4752|    700|			if (yych <= 'r') goto yy48;
  ------------------
  |  Branch (4752:8): [True: 14, False: 686]
  ------------------
 4753|    686|			if (yych <= 's') goto yy383;
  ------------------
  |  Branch (4753:8): [True: 641, False: 45]
  ------------------
 4754|     45|			if (yych <= 't') goto yy384;
  ------------------
  |  Branch (4754:8): [True: 34, False: 11]
  ------------------
 4755|     11|			goto yy48;
 4756|     45|		}
 4757|    119|yy292:
 4758|    119|		YYDEBUG(292, *YYCURSOR);
 4759|    119|		yyaccept = 4;
 4760|    119|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    119|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    119|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    119|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    119|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    119|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    119|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4761|    119|		if (yych == 'L') goto yy385;
  ------------------
  |  Branch (4761:7): [True: 1, False: 118]
  ------------------
 4762|    118|		if (yych == 'l') goto yy385;
  ------------------
  |  Branch (4762:7): [True: 115, False: 3]
  ------------------
 4763|      3|		goto yy48;
 4764|     75|yy293:
 4765|     75|		YYDEBUG(293, *YYCURSOR);
 4766|     75|		yyaccept = 4;
 4767|     75|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     75|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     75|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4768|     75|		if (yych == 'A') goto yy386;
  ------------------
  |  Branch (4768:7): [True: 0, False: 75]
  ------------------
 4769|     75|		if (yych == 'a') goto yy386;
  ------------------
  |  Branch (4769:7): [True: 14, False: 61]
  ------------------
 4770|     61|		goto yy48;
 4771|     61|yy294:
 4772|     11|		YYDEBUG(294, *YYCURSOR);
 4773|     11|		yyaccept = 19;
 4774|     11|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     11|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4775|     11|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (4775:7): [True: 2, False: 9]
  ------------------
 4776|      2|			goto yy47;
 4777|      2|		}
 4778|      9|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (4778:7): [True: 1, False: 8]
  ------------------
 4779|      9|yy295:
 4780|      9|		YYDEBUG(295, *YYCURSOR);
 4781|      9|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4782|      9|#line 1402 "Zend/zend_language_scanner.l"
 4783|      9|		{
 4784|      9|	RETURN_TOKEN_WITH_IDENT(T_EXIT);
  ------------------
  |  | 1334|      9|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      9|		token = _token; \
  |  | 1336|      9|		goto emit_token_with_ident; \
  |  | 1337|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4785|      9|}
 4786|      0|#line 4787 "Zend/zend_language_scanner.c"
 4787|  1.23k|yy296:
 4788|  1.23k|		YYDEBUG(296, *YYCURSOR);
 4789|  1.23k|		yyaccept = 4;
 4790|  1.23k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.23k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.23k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.23k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.23k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4791|  1.23k|		if (yych == 'O') goto yy387;
  ------------------
  |  Branch (4791:7): [True: 1, False: 1.23k]
  ------------------
 4792|  1.23k|		if (yych == 'o') goto yy387;
  ------------------
  |  Branch (4792:7): [True: 1.16k, False: 65]
  ------------------
 4793|     65|		goto yy48;
 4794|     65|yy297:
 4795|     21|		YYDEBUG(297, *YYCURSOR);
 4796|     21|		yyaccept = 4;
 4797|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4798|     21|		if (yych == 'E') goto yy389;
  ------------------
  |  Branch (4798:7): [True: 0, False: 21]
  ------------------
 4799|     21|		if (yych == 'e') goto yy389;
  ------------------
  |  Branch (4799:7): [True: 20, False: 1]
  ------------------
 4800|      1|		goto yy48;
 4801|     31|yy298:
 4802|     31|		YYDEBUG(298, *YYCURSOR);
 4803|     31|		yyaccept = 4;
 4804|     31|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     31|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4805|     31|		if (yych == 'T') goto yy391;
  ------------------
  |  Branch (4805:7): [True: 3, False: 28]
  ------------------
 4806|     28|		if (yych == 't') goto yy391;
  ------------------
  |  Branch (4806:7): [True: 10, False: 18]
  ------------------
 4807|     18|		goto yy48;
 4808|    218|yy299:
 4809|    218|		YYDEBUG(299, *YYCURSOR);
 4810|    218|		yyaccept = 4;
 4811|    218|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    218|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    218|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    218|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    218|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    218|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    218|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4812|    218|		switch (yych) {
 4813|      1|		case 'D':
  ------------------
  |  Branch (4813:3): [True: 1, False: 217]
  ------------------
 4814|     12|		case 'd':	goto yy392;
  ------------------
  |  Branch (4814:3): [True: 11, False: 207]
  ------------------
 4815|      5|		case 'F':
  ------------------
  |  Branch (4815:3): [True: 5, False: 213]
  ------------------
 4816|    111|		case 'f':	goto yy393;
  ------------------
  |  Branch (4816:3): [True: 106, False: 112]
  ------------------
 4817|     12|		case 'I':
  ------------------
  |  Branch (4817:3): [True: 12, False: 206]
  ------------------
 4818|     20|		case 'i':	goto yy394;
  ------------------
  |  Branch (4818:3): [True: 8, False: 210]
  ------------------
 4819|      8|		case 'S':
  ------------------
  |  Branch (4819:3): [True: 8, False: 210]
  ------------------
 4820|     16|		case 's':	goto yy395;
  ------------------
  |  Branch (4820:3): [True: 8, False: 210]
  ------------------
 4821|      5|		case 'W':
  ------------------
  |  Branch (4821:3): [True: 5, False: 213]
  ------------------
 4822|      6|		case 'w':	goto yy396;
  ------------------
  |  Branch (4822:3): [True: 1, False: 217]
  ------------------
 4823|     53|		default:	goto yy48;
  ------------------
  |  Branch (4823:3): [True: 53, False: 165]
  ------------------
 4824|    218|		}
 4825|  1.38k|yy300:
 4826|  1.38k|		YYDEBUG(300, *YYCURSOR);
 4827|  1.38k|		yyaccept = 4;
 4828|  1.38k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.38k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.38k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.38k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.38k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.38k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4829|  1.38k|		if (yych == 'M') goto yy397;
  ------------------
  |  Branch (4829:7): [True: 51, False: 1.33k]
  ------------------
 4830|  1.33k|		if (yych == 'm') goto yy397;
  ------------------
  |  Branch (4830:7): [True: 1.27k, False: 59]
  ------------------
 4831|     59|		goto yy48;
 4832|     82|yy301:
 4833|     82|		YYDEBUG(301, *YYCURSOR);
 4834|     82|		yyaccept = 4;
 4835|     82|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     82|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     82|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     82|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     82|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     82|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     82|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4836|     82|		if (yych == 'L') goto yy398;
  ------------------
  |  Branch (4836:7): [True: 0, False: 82]
  ------------------
 4837|     82|		if (yych == 'l') goto yy398;
  ------------------
  |  Branch (4837:7): [True: 61, False: 21]
  ------------------
 4838|     21|		goto yy48;
 4839|     25|yy302:
 4840|     25|		YYDEBUG(302, *YYCURSOR);
 4841|     25|		yyaccept = 4;
 4842|     25|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     25|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4843|     25|		if (yych == 'T') goto yy400;
  ------------------
  |  Branch (4843:7): [True: 3, False: 22]
  ------------------
 4844|     22|		if (yych == 't') goto yy400;
  ------------------
  |  Branch (4844:7): [True: 19, False: 3]
  ------------------
 4845|      3|		goto yy48;
 4846|    372|yy303:
 4847|    372|		YYDEBUG(303, *YYCURSOR);
 4848|    372|		yyaccept = 4;
 4849|    372|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    372|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    372|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4850|    372|		if (yych == 'E') goto yy402;
  ------------------
  |  Branch (4850:7): [True: 8, False: 364]
  ------------------
 4851|    364|		if (yych == 'e') goto yy402;
  ------------------
  |  Branch (4851:7): [True: 331, False: 33]
  ------------------
 4852|     33|		goto yy48;
 4853|    125|yy304:
 4854|    125|		YYDEBUG(304, *YYCURSOR);
 4855|    125|		yyaccept = 4;
 4856|    125|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    125|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    125|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    125|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    125|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    125|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    125|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4857|    125|		if (yych == 'A') goto yy403;
  ------------------
  |  Branch (4857:7): [True: 8, False: 117]
  ------------------
 4858|    117|		if (yych == 'a') goto yy403;
  ------------------
  |  Branch (4858:7): [True: 112, False: 5]
  ------------------
 4859|      5|		goto yy48;
 4860|  1.55k|yy305:
 4861|  1.55k|		YYDEBUG(305, *YYCURSOR);
 4862|  1.55k|		yyaccept = 20;
 4863|  1.55k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.55k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.55k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.55k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.55k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.55k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.55k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4864|  1.55k|		if (yych <= '\\') {
  ------------------
  |  Branch (4864:7): [True: 1.31k, False: 236]
  ------------------
 4865|  1.31k|			if (yych <= 'D') {
  ------------------
  |  Branch (4865:8): [True: 1.30k, False: 18]
  ------------------
 4866|  1.30k|				if (yych <= '/') goto yy306;
  ------------------
  |  Branch (4866:9): [True: 413, False: 887]
  ------------------
 4867|    887|				if (yych <= '9') goto yy47;
  ------------------
  |  Branch (4867:9): [True: 11, False: 876]
  ------------------
 4868|    876|				if (yych >= 'A') goto yy47;
  ------------------
  |  Branch (4868:9): [True: 5, False: 871]
  ------------------
 4869|    876|			} else {
 4870|     18|				if (yych <= 'E') goto yy404;
  ------------------
  |  Branch (4870:9): [True: 1, False: 17]
  ------------------
 4871|     17|				if (yych <= 'Z') goto yy47;
  ------------------
  |  Branch (4871:9): [True: 16, False: 1]
  ------------------
 4872|      1|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (4872:9): [True: 1, False: 0]
  ------------------
 4873|      1|			}
 4874|  1.31k|		} else {
 4875|    236|			if (yych <= 'd') {
  ------------------
  |  Branch (4875:8): [True: 6, False: 230]
  ------------------
 4876|      6|				if (yych == '_') goto yy47;
  ------------------
  |  Branch (4876:9): [True: 0, False: 6]
  ------------------
 4877|      6|				if (yych >= 'a') goto yy47;
  ------------------
  |  Branch (4877:9): [True: 5, False: 1]
  ------------------
 4878|    230|			} else {
 4879|    230|				if (yych <= 'e') goto yy404;
  ------------------
  |  Branch (4879:9): [True: 213, False: 17]
  ------------------
 4880|     17|				if (yych <= 'z') goto yy47;
  ------------------
  |  Branch (4880:9): [True: 9, False: 8]
  ------------------
 4881|      8|				if (yych >= 0x80) goto yy47;
  ------------------
  |  Branch (4881:9): [True: 5, False: 3]
  ------------------
 4882|      8|			}
 4883|    236|		}
 4884|  1.28k|yy306:
 4885|  1.28k|		YYDEBUG(306, *YYCURSOR);
 4886|  1.28k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.28k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.28k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.28k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.28k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.28k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.28k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4887|  1.28k|#line 1481 "Zend/zend_language_scanner.l"
 4888|  1.28k|		{
 4889|  1.28k|	RETURN_TOKEN_WITH_IDENT(T_FOR);
  ------------------
  |  | 1334|  1.28k|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|  1.28k|		token = _token; \
  |  | 1336|  1.28k|		goto emit_token_with_ident; \
  |  | 1337|  1.28k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4890|  1.28k|}
 4891|      0|#line 4892 "Zend/zend_language_scanner.c"
 4892|  5.11k|yy307:
 4893|  5.11k|		YYDEBUG(307, *YYCURSOR);
 4894|  5.11k|		yyaccept = 4;
 4895|  5.11k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  5.11k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  5.11k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  5.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.11k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4896|  5.11k|		if (yych == 'C') goto yy405;
  ------------------
  |  Branch (4896:7): [True: 1, False: 5.11k]
  ------------------
 4897|  5.11k|		if (yych == 'c') goto yy405;
  ------------------
  |  Branch (4897:7): [True: 5.09k, False: 21]
  ------------------
 4898|     21|		goto yy48;
 4899|     80|yy308:
 4900|     80|		YYDEBUG(308, *YYCURSOR);
 4901|     80|		yyaccept = 4;
 4902|     80|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     80|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     80|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     80|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     80|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     80|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     80|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4903|     80|		if (yych == 'B') goto yy406;
  ------------------
  |  Branch (4903:7): [True: 42, False: 38]
  ------------------
 4904|     38|		if (yych == 'b') goto yy406;
  ------------------
  |  Branch (4904:7): [True: 31, False: 7]
  ------------------
 4905|      7|		goto yy48;
 4906|     80|yy309:
 4907|     80|		YYDEBUG(309, *YYCURSOR);
 4908|     80|		yyaccept = 4;
 4909|     80|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     80|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     80|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     80|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     80|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     80|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     80|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4910|     80|		if (yych == 'O') goto yy407;
  ------------------
  |  Branch (4910:7): [True: 0, False: 80]
  ------------------
 4911|     80|		if (yych == 'o') goto yy407;
  ------------------
  |  Branch (4911:7): [True: 76, False: 4]
  ------------------
 4912|      4|		goto yy48;
 4913|    333|yy310:
 4914|    333|		YYDEBUG(310, *YYCURSOR);
 4915|    333|		yyaccept = 4;
 4916|    333|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    333|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    333|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    333|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    333|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    333|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    333|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4917|    333|		if (yych == 'L') goto yy409;
  ------------------
  |  Branch (4917:7): [True: 11, False: 322]
  ------------------
 4918|    322|		if (yych == 'l') goto yy409;
  ------------------
  |  Branch (4918:7): [True: 254, False: 68]
  ------------------
 4919|     68|		goto yy48;
 4920|     68|yy311:
 4921|     64|		YYDEBUG(311, *YYCURSOR);
 4922|     64|		yyaccept = 4;
 4923|     64|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     64|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     64|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     64|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     64|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     64|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     64|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4924|     64|		if (yych == 'L') goto yy410;
  ------------------
  |  Branch (4924:7): [True: 3, False: 61]
  ------------------
 4925|     61|		if (yych == 'l') goto yy410;
  ------------------
  |  Branch (4925:7): [True: 52, False: 9]
  ------------------
 4926|      9|		goto yy48;
 4927|     47|yy312:
 4928|     47|		YYDEBUG(312, *YYCURSOR);
 4929|     47|		yyaccept = 4;
 4930|     47|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     47|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     47|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     47|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     47|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     47|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     47|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4931|     47|		if (yych == 'T') goto yy411;
  ------------------
  |  Branch (4931:7): [True: 4, False: 43]
  ------------------
 4932|     43|		if (yych == 't') goto yy411;
  ------------------
  |  Branch (4932:7): [True: 42, False: 1]
  ------------------
 4933|      1|		goto yy48;
 4934|    492|yy313:
 4935|    492|		YYDEBUG(313, *YYCURSOR);
 4936|    492|		yyaccept = 4;
 4937|    492|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    492|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    492|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    492|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    492|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    492|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    492|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4938|    492|		if (yych == 'E') goto yy412;
  ------------------
  |  Branch (4938:7): [True: 18, False: 474]
  ------------------
 4939|    474|		if (yych == 'e') goto yy412;
  ------------------
  |  Branch (4939:7): [True: 232, False: 242]
  ------------------
 4940|    242|		goto yy48;
 4941|    242|yy314:
 4942|     86|		YYDEBUG(314, *YYCURSOR);
 4943|     86|		yyaccept = 4;
 4944|     86|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     86|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     86|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4945|     86|		if (yych == 'E') goto yy413;
  ------------------
  |  Branch (4945:7): [True: 1, False: 85]
  ------------------
 4946|     85|		if (yych == 'e') goto yy413;
  ------------------
  |  Branch (4946:7): [True: 75, False: 10]
  ------------------
 4947|     10|		goto yy48;
 4948|     89|yy315:
 4949|     89|		YYDEBUG(315, *YYCURSOR);
 4950|     89|		yyaccept = 4;
 4951|     89|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     89|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     89|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4952|     89|		if (yych == 'T') goto yy414;
  ------------------
  |  Branch (4952:7): [True: 3, False: 86]
  ------------------
 4953|     86|		if (yych == 't') goto yy414;
  ------------------
  |  Branch (4953:7): [True: 85, False: 1]
  ------------------
 4954|      1|		goto yy48;
 4955|     72|yy316:
 4956|     72|		YYDEBUG(316, *YYCURSOR);
 4957|     72|		yyaccept = 4;
 4958|     72|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     72|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     72|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4959|     72|		if (yych == 'C') goto yy416;
  ------------------
  |  Branch (4959:7): [True: 2, False: 70]
  ------------------
 4960|     70|		if (yych == 'c') goto yy416;
  ------------------
  |  Branch (4960:7): [True: 66, False: 4]
  ------------------
 4961|      4|		goto yy48;
 4962|    316|yy317:
 4963|    316|		YYDEBUG(317, *YYCURSOR);
 4964|    316|		yyaccept = 4;
 4965|    316|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    316|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    316|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    316|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    316|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    316|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    316|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4966|    316|		if (yych == 'E') goto yy417;
  ------------------
  |  Branch (4966:7): [True: 13, False: 303]
  ------------------
 4967|    303|		if (yych == 'e') goto yy417;
  ------------------
  |  Branch (4967:7): [True: 299, False: 4]
  ------------------
 4968|      4|		goto yy48;
 4969|  1.79k|yy318:
 4970|  1.79k|		YYDEBUG(318, *YYCURSOR);
 4971|  1.79k|		yyaccept = 21;
 4972|  1.79k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.79k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.79k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.79k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.79k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.79k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.79k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4973|  1.79k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (4973:7): [True: 9, False: 1.78k]
  ------------------
 4974|      9|			goto yy47;
 4975|      9|		}
 4976|  1.78k|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (4976:7): [True: 9, False: 1.77k]
  ------------------
 4977|  1.77k|yy319:
 4978|  1.77k|		YYDEBUG(319, *YYCURSOR);
 4979|  1.77k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.77k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.77k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.77k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.77k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.77k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.77k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.77k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.77k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 4980|  1.77k|#line 1625 "Zend/zend_language_scanner.l"
 4981|  1.77k|		{
 4982|  1.77k|	RETURN_TOKEN_WITH_IDENT(T_NEW);
  ------------------
  |  | 1334|  1.77k|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|  1.77k|		token = _token; \
  |  | 1336|  1.77k|		goto emit_token_with_ident; \
  |  | 1337|  1.77k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4983|  1.77k|}
 4984|      0|#line 4985 "Zend/zend_language_scanner.c"
 4985|    945|yy320:
 4986|    945|		YYDEBUG(320, *YYCURSOR);
 4987|    945|		yyaccept = 4;
 4988|    945|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    945|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    945|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    945|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    945|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    945|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    945|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4989|    945|		if (yych <= 'V') {
  ------------------
  |  Branch (4989:7): [True: 5, False: 940]
  ------------------
 4990|      5|			if (yych == 'N') goto yy418;
  ------------------
  |  Branch (4990:8): [True: 2, False: 3]
  ------------------
 4991|      3|			if (yych <= 'U') goto yy48;
  ------------------
  |  Branch (4991:8): [True: 2, False: 1]
  ------------------
 4992|      1|			goto yy419;
 4993|    940|		} else {
 4994|    940|			if (yych <= 'n') {
  ------------------
  |  Branch (4994:8): [True: 287, False: 653]
  ------------------
 4995|    287|				if (yych <= 'm') goto yy48;
  ------------------
  |  Branch (4995:9): [True: 0, False: 287]
  ------------------
 4996|    287|				goto yy418;
 4997|    653|			} else {
 4998|    653|				if (yych == 'v') goto yy419;
  ------------------
  |  Branch (4998:9): [True: 650, False: 3]
  ------------------
 4999|      3|				goto yy48;
 5000|    653|			}
 5001|    940|		}
 5002|    147|yy321:
 5003|    147|		YYDEBUG(321, *YYCURSOR);
 5004|    147|		yyaccept = 4;
 5005|    147|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    147|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    147|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    147|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    147|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    147|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    147|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5006|    147|		if (yych == 'T') goto yy420;
  ------------------
  |  Branch (5006:7): [True: 0, False: 147]
  ------------------
 5007|    147|		if (yych == 't') goto yy420;
  ------------------
  |  Branch (5007:7): [True: 122, False: 25]
  ------------------
 5008|     25|		goto yy48;
 5009|  1.07k|yy322:
 5010|  1.07k|		YYDEBUG(322, *YYCURSOR);
 5011|  1.07k|		yyaccept = 4;
 5012|  1.07k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.07k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.07k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.07k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.07k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.07k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.07k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5013|  1.07k|		if (yych == 'L') goto yy421;
  ------------------
  |  Branch (5013:7): [True: 0, False: 1.07k]
  ------------------
 5014|  1.07k|		if (yych == 'l') goto yy421;
  ------------------
  |  Branch (5014:7): [True: 1.05k, False: 22]
  ------------------
 5015|     22|		goto yy48;
 5016|    743|yy323:
 5017|    743|		YYDEBUG(323, *YYCURSOR);
 5018|    743|		yyaccept = 4;
 5019|    743|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    743|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    743|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    743|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    743|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    743|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    743|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5020|    743|		if (yych == 'D') goto yy422;
  ------------------
  |  Branch (5020:7): [True: 3, False: 740]
  ------------------
 5021|    740|		if (yych == 'd') goto yy422;
  ------------------
  |  Branch (5021:7): [True: 733, False: 7]
  ------------------
 5022|      7|		goto yy48;
 5023|    173|yy324:
 5024|    173|		YYDEBUG(324, *YYCURSOR);
 5025|    173|		yyaccept = 4;
 5026|    173|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    173|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    173|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    173|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    173|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    173|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    173|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5027|    173|		if (yych == 'U') goto yy423;
  ------------------
  |  Branch (5027:7): [True: 0, False: 173]
  ------------------
 5028|    173|		if (yych == 'u') goto yy423;
  ------------------
  |  Branch (5028:7): [True: 148, False: 25]
  ------------------
 5029|     25|		goto yy48;
 5030|    373|yy325:
 5031|    373|		YYDEBUG(325, *YYCURSOR);
 5032|    373|		yyaccept = 4;
 5033|    373|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    373|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    373|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5034|    373|		if (yych == 'U') goto yy424;
  ------------------
  |  Branch (5034:7): [True: 0, False: 373]
  ------------------
 5035|    373|		if (yych == 'u') goto yy424;
  ------------------
  |  Branch (5035:7): [True: 372, False: 1]
  ------------------
 5036|      1|		goto yy48;
 5037|    282|yy326:
 5038|    282|		YYDEBUG(326, *YYCURSOR);
 5039|    282|		yyaccept = 4;
 5040|    282|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    282|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    282|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5041|    282|		if (yych == 'T') goto yy425;
  ------------------
  |  Branch (5041:7): [True: 3, False: 279]
  ------------------
 5042|    279|		if (yych == 't') goto yy425;
  ------------------
  |  Branch (5042:7): [True: 267, False: 12]
  ------------------
 5043|     12|		goto yy48;
 5044|     42|yy327:
 5045|     42|		YYDEBUG(327, *YYCURSOR);
 5046|     42|		yyaccept = 4;
 5047|     42|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     42|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5048|     42|		if (yych == 'T') goto yy426;
  ------------------
  |  Branch (5048:7): [True: 2, False: 40]
  ------------------
 5049|     40|		if (yych == 't') goto yy426;
  ------------------
  |  Branch (5049:7): [True: 36, False: 4]
  ------------------
 5050|      4|		goto yy48;
 5051|    109|yy328:
 5052|    109|		YYDEBUG(328, *YYCURSOR);
 5053|    109|		yyaccept = 4;
 5054|    109|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    109|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    109|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    109|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    109|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    109|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    109|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5055|    109|		if (yych == 'O') goto yy427;
  ------------------
  |  Branch (5055:7): [True: 0, False: 109]
  ------------------
 5056|    109|		if (yych == 'o') goto yy427;
  ------------------
  |  Branch (5056:7): [True: 105, False: 4]
  ------------------
 5057|      4|		goto yy48;
 5058|    209|yy329:
 5059|    209|		YYDEBUG(329, *YYCURSOR);
 5060|    209|		yyaccept = 4;
 5061|    209|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    209|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    209|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    209|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    209|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    209|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    209|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5062|    209|		if (yych == 'I') goto yy428;
  ------------------
  |  Branch (5062:7): [True: 1, False: 208]
  ------------------
 5063|    208|		if (yych == 'i') goto yy428;
  ------------------
  |  Branch (5063:7): [True: 199, False: 9]
  ------------------
 5064|      9|		goto yy48;
 5065|    279|yy330:
 5066|    279|		YYDEBUG(330, *YYCURSOR);
 5067|    279|		yyaccept = 22;
 5068|    279|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    279|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    279|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    279|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    279|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    279|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    279|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5069|    279|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5069:7): [True: 9, False: 270]
  ------------------
 5070|      9|			goto yy47;
 5071|      9|		}
 5072|    270|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5072:7): [True: 0, False: 270]
  ------------------
 5073|    270|yy331:
 5074|    270|		YYDEBUG(331, *YYCURSOR);
 5075|    270|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    270|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    270|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5076|    270|#line 1437 "Zend/zend_language_scanner.l"
 5077|    270|		{
 5078|    270|	RETURN_TOKEN_WITH_IDENT(T_TRY);
  ------------------
  |  | 1334|    270|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    270|		token = _token; \
  |  | 1336|    270|		goto emit_token_with_ident; \
  |  | 1337|    270|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5079|    270|}
 5080|      0|#line 5081 "Zend/zend_language_scanner.c"
 5081|    351|yy332:
 5082|    351|		YYDEBUG(332, *YYCURSOR);
 5083|    351|		yyaccept = 4;
 5084|    351|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    351|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    351|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    351|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    351|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    351|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    351|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5085|    351|		if (yych == 'E') goto yy429;
  ------------------
  |  Branch (5085:7): [True: 9, False: 342]
  ------------------
 5086|    342|		if (yych == 'e') goto yy429;
  ------------------
  |  Branch (5086:7): [True: 239, False: 103]
  ------------------
 5087|    103|		goto yy48;
 5088|    257|yy333:
 5089|    257|		YYDEBUG(333, *YYCURSOR);
 5090|    257|		yyaccept = 23;
 5091|    257|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    257|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    257|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    257|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    257|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    257|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    257|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5092|    257|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5092:7): [True: 7, False: 250]
  ------------------
 5093|      7|			goto yy47;
 5094|      7|		}
 5095|    250|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5095:7): [True: 3, False: 247]
  ------------------
 5096|    250|yy334:
 5097|    250|		YYDEBUG(334, *YYCURSOR);
 5098|    250|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    250|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    250|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    250|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    250|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    250|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    250|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    250|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    250|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5099|    250|#line 1741 "Zend/zend_language_scanner.l"
 5100|    250|		{
 5101|    250|	RETURN_TOKEN_WITH_IDENT(T_USE);
  ------------------
  |  | 1334|    250|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    250|		token = _token; \
  |  | 1336|    250|		goto emit_token_with_ident; \
  |  | 1337|    250|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5102|    250|}
 5103|      0|#line 5104 "Zend/zend_language_scanner.c"
 5104|  2.20k|yy335:
 5105|  2.20k|		YYDEBUG(335, *YYCURSOR);
 5106|  2.20k|		yyaccept = 24;
 5107|  2.20k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  2.20k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  2.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5108|  2.20k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5108:7): [True: 2.18k, False: 17]
  ------------------
 5109|  2.18k|			goto yy47;
 5110|  2.18k|		}
 5111|     17|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5111:7): [True: 4, False: 13]
  ------------------
 5112|     17|yy336:
 5113|     17|		YYDEBUG(336, *YYCURSOR);
 5114|     17|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     17|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5115|     17|#line 1633 "Zend/zend_language_scanner.l"
 5116|     17|		{
 5117|     17|	RETURN_TOKEN_WITH_IDENT(T_VAR);
  ------------------
  |  | 1334|     17|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     17|		token = _token; \
  |  | 1336|     17|		goto emit_token_with_ident; \
  |  | 1337|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5118|     17|}
 5119|      0|#line 5120 "Zend/zend_language_scanner.c"
 5120|     34|yy337:
 5121|     34|		YYDEBUG(337, *YYCURSOR);
 5122|     34|		yyaccept = 4;
 5123|     34|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     34|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5124|     34|		if (yych == 'L') goto yy430;
  ------------------
  |  Branch (5124:7): [True: 12, False: 22]
  ------------------
 5125|     22|		if (yych == 'l') goto yy430;
  ------------------
  |  Branch (5125:7): [True: 22, False: 0]
  ------------------
 5126|      0|		goto yy48;
 5127|      6|yy338:
 5128|      6|		YYDEBUG(338, *YYCURSOR);
 5129|      6|		yyaccept = 25;
 5130|      6|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      6|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5131|      6|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5131:7): [True: 0, False: 6]
  ------------------
 5132|      0|			goto yy47;
 5133|      0|		}
 5134|      6|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5134:7): [True: 0, False: 6]
  ------------------
 5135|      6|yy339:
 5136|      6|		YYDEBUG(339, *YYCURSOR);
 5137|      6|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      6|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5138|      6|#line 1937 "Zend/zend_language_scanner.l"
 5139|      6|		{
 5140|      6|	RETURN_TOKEN_WITH_IDENT(T_LOGICAL_XOR);
  ------------------
  |  | 1334|      6|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      6|		token = _token; \
  |  | 1336|      6|		goto emit_token_with_ident; \
  |  | 1337|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5141|      6|}
 5142|      0|#line 5143 "Zend/zend_language_scanner.c"
 5143|  1.29k|yy340:
 5144|  1.29k|		YYDEBUG(340, *YYCURSOR);
 5145|  1.29k|		yyaccept = 4;
 5146|  1.29k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.29k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.29k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.29k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.29k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.29k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.29k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5147|  1.29k|		if (yych == 'L') goto yy431;
  ------------------
  |  Branch (5147:7): [True: 2, False: 1.29k]
  ------------------
 5148|  1.29k|		if (yych == 'l') goto yy431;
  ------------------
  |  Branch (5148:7): [True: 1.24k, False: 49]
  ------------------
 5149|     49|		goto yy48;
 5150|    148|yy341:
 5151|    148|		YYDEBUG(341, *YYCURSOR);
 5152|    148|		++YYCURSOR;
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5153|    148|		YYFILL(1);
  ------------------
  |  |   53|    148|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    148|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    148|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 148]
  |  |  ------------------
  ------------------
 5154|    148|		yych = *YYCURSOR;
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5155|    148|		if (yych <= '_') {
  ------------------
  |  Branch (5155:7): [True: 99, False: 49]
  ------------------
 5156|     99|			if (yych <= '@') goto yy86;
  ------------------
  |  Branch (5156:8): [True: 3, False: 96]
  ------------------
 5157|     96|			if (yych <= 'Z') goto yy211;
  ------------------
  |  Branch (5157:8): [True: 60, False: 36]
  ------------------
 5158|     36|			if (yych <= '^') goto yy86;
  ------------------
  |  Branch (5158:8): [True: 32, False: 4]
  ------------------
 5159|      4|			goto yy211;
 5160|     49|		} else {
 5161|     49|			if (yych <= '`') goto yy86;
  ------------------
  |  Branch (5161:8): [True: 0, False: 49]
  ------------------
 5162|     49|			if (yych <= 'z') goto yy211;
  ------------------
  |  Branch (5162:8): [True: 25, False: 24]
  ------------------
 5163|     24|			if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (5163:8): [True: 19, False: 5]
  ------------------
 5164|      5|			goto yy211;
 5165|     24|		}
 5166|    291|yy342:
 5167|    291|		YYDEBUG(342, *YYCURSOR);
 5168|    291|		yyaccept = 4;
 5169|    291|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    291|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    291|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    291|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    291|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    291|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    291|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5170|    291|		if (yych == 'L') goto yy432;
  ------------------
  |  Branch (5170:7): [True: 70, False: 221]
  ------------------
 5171|    221|		if (yych == 'l') goto yy432;
  ------------------
  |  Branch (5171:7): [True: 9, False: 212]
  ------------------
 5172|    212|		goto yy48;
 5173|    545|yy343:
 5174|    545|		YYDEBUG(343, *YYCURSOR);
 5175|    545|		yyaccept = 4;
 5176|    545|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    545|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    545|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    545|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    545|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    545|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    545|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5177|    545|		if (yych == 'I') goto yy433;
  ------------------
  |  Branch (5177:7): [True: 184, False: 361]
  ------------------
 5178|    361|		if (yych == 'i') goto yy433;
  ------------------
  |  Branch (5178:7): [True: 0, False: 361]
  ------------------
 5179|    361|		goto yy48;
 5180|    361|yy344:
 5181|    159|		YYDEBUG(344, *YYCURSOR);
 5182|    159|		yyaccept = 4;
 5183|    159|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    159|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    159|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5184|    159|		if (yych <= 'U') {
  ------------------
  |  Branch (5184:7): [True: 64, False: 95]
  ------------------
 5185|     64|			if (yych == 'I') goto yy434;
  ------------------
  |  Branch (5185:8): [True: 42, False: 22]
  ------------------
 5186|     22|			if (yych <= 'T') goto yy48;
  ------------------
  |  Branch (5186:8): [True: 10, False: 12]
  ------------------
 5187|     12|			goto yy435;
 5188|     95|		} else {
 5189|     95|			if (yych <= 'i') {
  ------------------
  |  Branch (5189:8): [True: 4, False: 91]
  ------------------
 5190|      4|				if (yych <= 'h') goto yy48;
  ------------------
  |  Branch (5190:9): [True: 1, False: 3]
  ------------------
 5191|      3|				goto yy434;
 5192|     91|			} else {
 5193|     91|				if (yych == 'u') goto yy435;
  ------------------
  |  Branch (5193:9): [True: 5, False: 86]
  ------------------
 5194|     86|				goto yy48;
 5195|     91|			}
 5196|     95|		}
 5197|     63|yy345:
 5198|     63|		YYDEBUG(345, *YYCURSOR);
 5199|     63|		yyaccept = 4;
 5200|     63|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     63|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     63|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     63|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     63|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     63|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     63|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5201|     63|		if (yych == 'A') goto yy436;
  ------------------
  |  Branch (5201:7): [True: 33, False: 30]
  ------------------
 5202|     30|		if (yych == 'a') goto yy436;
  ------------------
  |  Branch (5202:7): [True: 21, False: 9]
  ------------------
 5203|      9|		goto yy48;
 5204|     27|yy346:
 5205|     27|		YYDEBUG(346, *YYCURSOR);
 5206|     27|		yyaccept = 4;
 5207|     27|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     27|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5208|     27|		if (yych == 'I') goto yy437;
  ------------------
  |  Branch (5208:7): [True: 15, False: 12]
  ------------------
 5209|     12|		if (yych == 'i') goto yy437;
  ------------------
  |  Branch (5209:7): [True: 3, False: 9]
  ------------------
 5210|      9|		goto yy48;
 5211|     42|yy347:
 5212|     42|		YYDEBUG(347, *YYCURSOR);
 5213|     42|		yyaccept = 4;
 5214|     42|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     42|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5215|     42|		if (yych == 'E') goto yy438;
  ------------------
  |  Branch (5215:7): [True: 30, False: 12]
  ------------------
 5216|     12|		if (yych == 'e') goto yy438;
  ------------------
  |  Branch (5216:7): [True: 0, False: 12]
  ------------------
 5217|     12|		goto yy48;
 5218|     73|yy348:
 5219|     73|		YYDEBUG(348, *YYCURSOR);
 5220|     73|		yyaccept = 4;
 5221|     73|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     73|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     73|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     73|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     73|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5222|     73|		if (yych == 'A') goto yy439;
  ------------------
  |  Branch (5222:7): [True: 41, False: 32]
  ------------------
 5223|     32|		if (yych == 'a') goto yy439;
  ------------------
  |  Branch (5223:7): [True: 22, False: 10]
  ------------------
 5224|     10|		goto yy48;
 5225|     57|yy349:
 5226|     57|		YYDEBUG(349, *YYCURSOR);
 5227|     57|		yyaccept = 4;
 5228|     57|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     57|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5229|     57|		if (yych == 'R') goto yy440;
  ------------------
  |  Branch (5229:7): [True: 50, False: 7]
  ------------------
 5230|      7|		if (yych == 'r') goto yy440;
  ------------------
  |  Branch (5230:7): [True: 7, False: 0]
  ------------------
 5231|      0|		goto yy48;
 5232|     50|yy350:
 5233|     50|		YYDEBUG(350, *YYCURSOR);
 5234|     50|		yyaccept = 4;
 5235|     50|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     50|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     50|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5236|     50|		if (yych == 'R') goto yy441;
  ------------------
  |  Branch (5236:7): [True: 5, False: 45]
  ------------------
 5237|     45|		if (yych == 'r') goto yy441;
  ------------------
  |  Branch (5237:7): [True: 14, False: 31]
  ------------------
 5238|     31|		goto yy48;
 5239|     31|yy351:
 5240|     17|		YYDEBUG(351, *YYCURSOR);
 5241|     17|		++YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5242|     17|		YYFILL(1);
  ------------------
  |  |   53|     17|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     17|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     17|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 17]
  |  |  ------------------
  ------------------
 5243|     17|		yych = *YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5244|     17|		if (yybm[0+yych] & 2) {
  ------------------
  |  Branch (5244:7): [True: 13, False: 4]
  ------------------
 5245|     13|			goto yy225;
 5246|     13|		}
 5247|      4|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (5247:7): [True: 2, False: 2]
  ------------------
 5248|      2|		goto yy227;
 5249|    152|yy352:
 5250|    152|		YYDEBUG(352, *YYCURSOR);
 5251|    152|		yyaccept = 26;
 5252|    152|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    152|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5253|    152|		YYFILL(1);
  ------------------
  |  |   53|    152|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    152|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    152|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 152]
  |  |  ------------------
  ------------------
 5254|    152|		yych = *YYCURSOR;
  ------------------
  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5255|    152|		if (yybm[0+yych] & 2) {
  ------------------
  |  Branch (5255:7): [True: 48, False: 104]
  ------------------
 5256|     48|			goto yy225;
 5257|     48|		}
 5258|    104|		if (yych <= 0x00) goto yy89;
  ------------------
  |  Branch (5258:7): [True: 16, False: 88]
  ------------------
 5259|     88|		goto yy84;
 5260|     88|yy353:
 5261|     68|		YYDEBUG(353, *YYCURSOR);
 5262|     68|		++YYCURSOR;
  ------------------
  |  |   54|     68|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     68|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     68|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5263|     68|		YYFILL(1);
  ------------------
  |  |   53|     68|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     68|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     68|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     68|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     68|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     68|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     68|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     68|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 68]
  |  |  ------------------
  ------------------
 5264|     68|		yych = *YYCURSOR;
  ------------------
  |  |   54|     68|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     68|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     68|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5265|     68|		if (yych <= '\f') {
  ------------------
  |  Branch (5265:7): [True: 8, False: 60]
  ------------------
 5266|      8|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (5266:8): [True: 4, False: 4]
  ------------------
 5267|      4|			if (yych == '\n') goto yy84;
  ------------------
  |  Branch (5267:8): [True: 1, False: 3]
  ------------------
 5268|      3|			goto yy225;
 5269|     60|		} else {
 5270|     60|			if (yych <= '\r') goto yy84;
  ------------------
  |  Branch (5270:8): [True: 3, False: 57]
  ------------------
 5271|     57|			if (yych == '.') goto yy442;
  ------------------
  |  Branch (5271:8): [True: 56, False: 1]
  ------------------
 5272|      1|			goto yy225;
 5273|     57|		}
 5274|    402|yy354:
 5275|    402|		YYDEBUG(354, *YYCURSOR);
 5276|    402|		++YYCURSOR;
  ------------------
  |  |   54|    402|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    402|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    402|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5277|    402|		YYFILL(1);
  ------------------
  |  |   53|    402|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    402|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    402|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    402|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    402|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    402|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    402|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    402|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 402]
  |  |  ------------------
  ------------------
 5278|    402|		yych = *YYCURSOR;
  ------------------
  |  |   54|    402|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    402|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    402|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5279|    402|		if (yych <= '\f') {
  ------------------
  |  Branch (5279:7): [True: 73, False: 329]
  ------------------
 5280|     73|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (5280:8): [True: 0, False: 73]
  ------------------
 5281|     73|			if (yych == '\n') goto yy84;
  ------------------
  |  Branch (5281:8): [True: 71, False: 2]
  ------------------
 5282|      2|			goto yy225;
 5283|    329|		} else {
 5284|    329|			if (yych <= '\r') goto yy84;
  ------------------
  |  Branch (5284:8): [True: 3, False: 326]
  ------------------
 5285|    326|			if (yych == '*') goto yy443;
  ------------------
  |  Branch (5285:8): [True: 220, False: 106]
  ------------------
 5286|    106|			goto yy225;
 5287|    326|		}
 5288|    155|yy355:
 5289|    155|		YYDEBUG(355, *YYCURSOR);
 5290|    155|		++YYCURSOR;
  ------------------
  |  |   54|    155|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5291|    155|		YYFILL(1);
  ------------------
  |  |   53|    155|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    155|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    155|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    155|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 155]
  |  |  ------------------
  ------------------
 5292|    155|		yych = *YYCURSOR;
  ------------------
  |  |   54|    155|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5293|    155|		YYDEBUG(356, *YYCURSOR);
 5294|    155|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (5294:7): [True: 13, False: 142]
  ------------------
 5295|     13|			goto yy355;
 5296|     13|		}
 5297|    142|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (5297:7): [True: 8, False: 134]
  ------------------
 5298|    134|		if (yych == '/') goto yy84;
  ------------------
  |  Branch (5298:7): [True: 39, False: 95]
  ------------------
 5299|     95|		goto yy230;
 5300|    121|yy357:
 5301|    121|		YYDEBUG(357, *YYCURSOR);
 5302|    121|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    121|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    121|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    121|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5303|    121|		if (yych == 'A') goto yy445;
  ------------------
  |  Branch (5303:7): [True: 0, False: 121]
  ------------------
 5304|    121|		if (yych == 'a') goto yy445;
  ------------------
  |  Branch (5304:7): [True: 114, False: 7]
  ------------------
 5305|      7|		goto yy86;
 5306|      7|yy358:
 5307|      7|		YYDEBUG(358, *YYCURSOR);
 5308|      7|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5309|      7|		if (yych == 'A') goto yy446;
  ------------------
  |  Branch (5309:7): [True: 0, False: 7]
  ------------------
 5310|      7|		if (yych == 'a') goto yy446;
  ------------------
  |  Branch (5310:7): [True: 6, False: 1]
  ------------------
 5311|      1|		goto yy86;
 5312|     20|yy359:
 5313|     20|		YYDEBUG(359, *YYCURSOR);
 5314|     20|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5315|     20|		if (yych == 'L') goto yy447;
  ------------------
  |  Branch (5315:7): [True: 0, False: 20]
  ------------------
 5316|     20|		if (yych == 'l') goto yy447;
  ------------------
  |  Branch (5316:7): [True: 20, False: 0]
  ------------------
 5317|      0|		goto yy86;
 5318|      5|yy360:
 5319|      5|		YYDEBUG(360, *YYCURSOR);
 5320|      5|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5321|      5|		if (yych == 'B') goto yy448;
  ------------------
  |  Branch (5321:7): [True: 0, False: 5]
  ------------------
 5322|      5|		if (yych == 'b') goto yy448;
  ------------------
  |  Branch (5322:7): [True: 5, False: 0]
  ------------------
 5323|      0|		goto yy86;
 5324|     21|yy361:
 5325|     21|		YYDEBUG(361, *YYCURSOR);
 5326|     21|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5327|     21|		if (yych == 'A') goto yy449;
  ------------------
  |  Branch (5327:7): [True: 0, False: 21]
  ------------------
 5328|     21|		if (yych == 'a') goto yy449;
  ------------------
  |  Branch (5328:7): [True: 21, False: 0]
  ------------------
 5329|      0|		goto yy86;
 5330|     81|yy362:
 5331|     81|		YYDEBUG(362, *YYCURSOR);
 5332|     81|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     81|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5333|     81|		if (yych == 'E') goto yy454;
  ------------------
  |  Branch (5333:7): [True: 0, False: 81]
  ------------------
 5334|     81|		if (yych == 'e') goto yy454;
  ------------------
  |  Branch (5334:7): [True: 16, False: 65]
  ------------------
 5335|     65|		goto yy451;
 5336|     78|yy363:
 5337|     78|		YYDEBUG(363, *YYCURSOR);
 5338|     78|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     78|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     78|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     78|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5339|     78|		if (yych == 'E') goto yy455;
  ------------------
  |  Branch (5339:7): [True: 0, False: 78]
  ------------------
 5340|     78|		if (yych == 'e') goto yy455;
  ------------------
  |  Branch (5340:7): [True: 62, False: 16]
  ------------------
 5341|     16|		goto yy86;
 5342|     16|yy364:
 5343|      8|		YYDEBUG(364, *YYCURSOR);
 5344|      8|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5345|      8|		if (yych == 'L') goto yy456;
  ------------------
  |  Branch (5345:7): [True: 0, False: 8]
  ------------------
 5346|      8|		if (yych == 'l') goto yy456;
  ------------------
  |  Branch (5346:7): [True: 3, False: 5]
  ------------------
 5347|      5|		goto yy86;
 5348|    131|yy365:
 5349|    131|		YYDEBUG(365, *YYCURSOR);
 5350|    131|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    131|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    131|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    131|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5351|    131|		if (yych == 'I') goto yy458;
  ------------------
  |  Branch (5351:7): [True: 1, False: 130]
  ------------------
 5352|    130|		if (yych == 'i') goto yy458;
  ------------------
  |  Branch (5352:7): [True: 96, False: 34]
  ------------------
 5353|     34|		goto yy86;
 5354|    162|yy366:
 5355|    162|		YYDEBUG(366, *YYCURSOR);
 5356|    162|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    162|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    162|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    162|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5357|    162|		if (yych == 'E') goto yy459;
  ------------------
  |  Branch (5357:7): [True: 7, False: 155]
  ------------------
 5358|    155|		if (yych == 'e') goto yy459;
  ------------------
  |  Branch (5358:7): [True: 53, False: 102]
  ------------------
 5359|    102|		goto yy86;
 5360|    102|yy367:
 5361|      4|		YYDEBUG(367, *YYCURSOR);
 5362|      4|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5363|      4|		if (yych == 'D') goto yy460;
  ------------------
  |  Branch (5363:7): [True: 0, False: 4]
  ------------------
 5364|      4|		if (yych == 'd') goto yy460;
  ------------------
  |  Branch (5364:7): [True: 4, False: 0]
  ------------------
 5365|      0|		goto yy86;
 5366|    231|yy368:
 5367|    231|		YYDEBUG(368, *YYCURSOR);
 5368|    231|		++YYCURSOR;
  ------------------
  |  |   54|    231|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    231|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    231|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5369|    231|		YYFILL(1);
  ------------------
  |  |   53|    231|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    231|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    231|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    231|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    231|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    231|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    231|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    231|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 231]
  |  |  ------------------
  ------------------
 5370|    231|		yych = *YYCURSOR;
  ------------------
  |  |   54|    231|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    231|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    231|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5371|    231|		YYDEBUG(369, *YYCURSOR);
 5372|    231|		if (yych <= '\f') {
  ------------------
  |  Branch (5372:7): [True: 72, False: 159]
  ------------------
 5373|     72|			if (yych <= 0x08) goto yy129;
  ------------------
  |  Branch (5373:8): [True: 3, False: 69]
  ------------------
 5374|     69|			if (yych <= '\n') goto yy368;
  ------------------
  |  Branch (5374:8): [True: 68, False: 1]
  ------------------
 5375|      1|			goto yy129;
 5376|    159|		} else {
 5377|    159|			if (yych <= '\r') goto yy368;
  ------------------
  |  Branch (5377:8): [True: 69, False: 90]
  ------------------
 5378|     90|			if (yych == ' ') goto yy368;
  ------------------
  |  Branch (5378:8): [True: 26, False: 64]
  ------------------
 5379|     64|			goto yy129;
 5380|     90|		}
 5381|    113|yy370:
 5382|    113|		YYDEBUG(370, *YYCURSOR);
 5383|    113|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    113|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    113|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    113|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5384|    113|		if (yych == '"') goto yy86;
  ------------------
  |  Branch (5384:7): [True: 24, False: 89]
  ------------------
 5385|     89|		if (yych <= '/') goto yy463;
  ------------------
  |  Branch (5385:7): [True: 1, False: 88]
  ------------------
 5386|     88|		if (yych <= '9') goto yy86;
  ------------------
  |  Branch (5386:7): [True: 1, False: 87]
  ------------------
 5387|     87|		goto yy463;
 5388|    117|yy371:
 5389|    117|		YYDEBUG(371, *YYCURSOR);
 5390|    117|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    117|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    117|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    117|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5391|    117|		if (yych == '\'') goto yy86;
  ------------------
  |  Branch (5391:7): [True: 4, False: 113]
  ------------------
 5392|    113|		if (yych <= '/') goto yy465;
  ------------------
  |  Branch (5392:7): [True: 4, False: 109]
  ------------------
 5393|    109|		if (yych <= '9') goto yy86;
  ------------------
  |  Branch (5393:7): [True: 1, False: 108]
  ------------------
 5394|    108|		goto yy465;
 5395|  40.0k|yy372:
 5396|  40.0k|		YYDEBUG(372, *YYCURSOR);
 5397|  40.0k|		++YYCURSOR;
  ------------------
  |  |   54|  40.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  40.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  40.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5398|  40.0k|		YYFILL(2);
  ------------------
  |  |   53|  40.0k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  40.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  40.0k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  40.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  40.0k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  40.0k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  40.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  40.0k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 40.0k]
  |  |  ------------------
  ------------------
 5399|  40.0k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  40.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  40.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  40.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5400|  40.0k|		YYDEBUG(373, *YYCURSOR);
 5401|  40.0k|		if (yych <= '@') {
  ------------------
  |  Branch (5401:7): [True: 18.4k, False: 21.6k]
  ------------------
 5402|  18.4k|			if (yych <= '\f') {
  ------------------
  |  Branch (5402:8): [True: 13.5k, False: 4.84k]
  ------------------
 5403|  13.5k|				if (yych == '\n') goto yy466;
  ------------------
  |  Branch (5403:9): [True: 13.1k, False: 425]
  ------------------
 5404|    425|				goto yy86;
 5405|  13.5k|			} else {
 5406|  4.84k|				if (yych <= '\r') goto yy468;
  ------------------
  |  Branch (5406:9): [True: 84, False: 4.76k]
  ------------------
 5407|  4.76k|				if (yych <= '/') goto yy86;
  ------------------
  |  Branch (5407:9): [True: 3.95k, False: 809]
  ------------------
 5408|    809|				if (yych <= '9') goto yy372;
  ------------------
  |  Branch (5408:9): [True: 607, False: 202]
  ------------------
 5409|    202|				goto yy86;
 5410|    809|			}
 5411|  21.6k|		} else {
 5412|  21.6k|			if (yych <= '_') {
  ------------------
  |  Branch (5412:8): [True: 4.76k, False: 16.8k]
  ------------------
 5413|  4.76k|				if (yych <= 'Z') goto yy372;
  ------------------
  |  Branch (5413:9): [True: 4.67k, False: 89]
  ------------------
 5414|     89|				if (yych <= '^') goto yy86;
  ------------------
  |  Branch (5414:9): [True: 40, False: 49]
  ------------------
 5415|     49|				goto yy372;
 5416|  16.8k|			} else {
 5417|  16.8k|				if (yych <= '`') goto yy86;
  ------------------
  |  Branch (5417:9): [True: 8, False: 16.8k]
  ------------------
 5418|  16.8k|				if (yych <= 'z') goto yy372;
  ------------------
  |  Branch (5418:9): [True: 14.2k, False: 2.64k]
  ------------------
 5419|  2.64k|				if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (5419:9): [True: 101, False: 2.54k]
  ------------------
 5420|  2.54k|				goto yy372;
 5421|  2.64k|			}
 5422|  21.6k|		}
 5423|    132|yy374:
 5424|    132|		YYDEBUG(374, *YYCURSOR);
 5425|    132|		yyaccept = 4;
 5426|    132|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    132|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    132|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    132|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    132|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    132|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    132|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5427|    132|		if (yych == 'R') goto yy469;
  ------------------
  |  Branch (5427:7): [True: 1, False: 131]
  ------------------
 5428|    131|		if (yych == 'r') goto yy469;
  ------------------
  |  Branch (5428:7): [True: 129, False: 2]
  ------------------
 5429|      2|		goto yy48;
 5430|    669|yy375:
 5431|    669|		YYDEBUG(375, *YYCURSOR);
 5432|    669|		yyaccept = 4;
 5433|    669|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    669|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    669|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    669|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    669|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    669|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    669|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5434|    669|		if (yych == 'Y') goto yy470;
  ------------------
  |  Branch (5434:7): [True: 2, False: 667]
  ------------------
 5435|    667|		if (yych == 'y') goto yy470;
  ------------------
  |  Branch (5435:7): [True: 660, False: 7]
  ------------------
 5436|      7|		goto yy48;
 5437|     31|yy376:
 5438|     31|		YYDEBUG(376, *YYCURSOR);
 5439|     31|		yyaccept = 4;
 5440|     31|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     31|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5441|     31|		if (yych == 'K') goto yy472;
  ------------------
  |  Branch (5441:7): [True: 0, False: 31]
  ------------------
 5442|     31|		if (yych == 'k') goto yy472;
  ------------------
  |  Branch (5442:7): [True: 31, False: 0]
  ------------------
 5443|      0|		goto yy48;
 5444|    199|yy377:
 5445|    199|		YYDEBUG(377, *YYCURSOR);
 5446|    199|		yyaccept = 4;
 5447|    199|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    199|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    199|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    199|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    199|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    199|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    199|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5448|    199|		if (yych == 'A') goto yy474;
  ------------------
  |  Branch (5448:7): [True: 1, False: 198]
  ------------------
 5449|    198|		if (yych == 'a') goto yy474;
  ------------------
  |  Branch (5449:7): [True: 21, False: 177]
  ------------------
 5450|    177|		goto yy48;
 5451|    177|yy378:
 5452|    170|		YYDEBUG(378, *YYCURSOR);
 5453|    170|		yyaccept = 27;
 5454|    170|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    170|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    170|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    170|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    170|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    170|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    170|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5455|    170|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5455:7): [True: 6, False: 164]
  ------------------
 5456|      6|			goto yy47;
 5457|      6|		}
 5458|    164|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5458:7): [True: 0, False: 164]
  ------------------
 5459|    164|yy379:
 5460|    164|		YYDEBUG(379, *YYCURSOR);
 5461|    164|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    164|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    164|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    164|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    164|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    164|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    164|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    164|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    164|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5462|    164|#line 1525 "Zend/zend_language_scanner.l"
 5463|    164|		{
 5464|    164|	RETURN_TOKEN_WITH_IDENT(T_CASE);
  ------------------
  |  | 1334|    164|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    164|		token = _token; \
  |  | 1336|    164|		goto emit_token_with_ident; \
  |  | 1337|    164|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5465|    164|}
 5466|      0|#line 5467 "Zend/zend_language_scanner.c"
 5467|    197|yy380:
 5468|    197|		YYDEBUG(380, *YYCURSOR);
 5469|    197|		yyaccept = 4;
 5470|    197|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    197|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    197|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    197|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    197|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    197|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    197|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5471|    197|		if (yych == 'H') goto yy475;
  ------------------
  |  Branch (5471:7): [True: 0, False: 197]
  ------------------
 5472|    197|		if (yych == 'h') goto yy475;
  ------------------
  |  Branch (5472:7): [True: 196, False: 1]
  ------------------
 5473|      1|		goto yy48;
 5474|  1.67k|yy381:
 5475|  1.67k|		YYDEBUG(381, *YYCURSOR);
 5476|  1.67k|		yyaccept = 4;
 5477|  1.67k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.67k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.67k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.67k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.67k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.67k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.67k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5478|  1.67k|		if (yych == 'S') goto yy477;
  ------------------
  |  Branch (5478:7): [True: 4, False: 1.66k]
  ------------------
 5479|  1.66k|		if (yych == 's') goto yy477;
  ------------------
  |  Branch (5479:7): [True: 1.63k, False: 32]
  ------------------
 5480|     32|		goto yy48;
 5481|     48|yy382:
 5482|     48|		YYDEBUG(382, *YYCURSOR);
 5483|     48|		yyaccept = 4;
 5484|     48|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     48|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5485|     48|		if (yych == 'E') goto yy479;
  ------------------
  |  Branch (5485:7): [True: 8, False: 40]
  ------------------
 5486|     40|		if (yych == 'e') goto yy479;
  ------------------
  |  Branch (5486:7): [True: 37, False: 3]
  ------------------
 5487|      3|		goto yy48;
 5488|    667|yy383:
 5489|    667|		YYDEBUG(383, *YYCURSOR);
 5490|    667|		yyaccept = 4;
 5491|    667|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    667|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    667|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    667|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    667|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    667|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    667|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5492|    667|		if (yych == 'T') goto yy481;
  ------------------
  |  Branch (5492:7): [True: 25, False: 642]
  ------------------
 5493|    642|		if (yych == 't') goto yy481;
  ------------------
  |  Branch (5493:7): [True: 641, False: 1]
  ------------------
 5494|      1|		goto yy48;
 5495|     43|yy384:
 5496|     43|		YYDEBUG(384, *YYCURSOR);
 5497|     43|		yyaccept = 4;
 5498|     43|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     43|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5499|     43|		if (yych == 'I') goto yy483;
  ------------------
  |  Branch (5499:7): [True: 0, False: 43]
  ------------------
 5500|     43|		if (yych == 'i') goto yy483;
  ------------------
  |  Branch (5500:7): [True: 4, False: 39]
  ------------------
 5501|     39|		goto yy48;
 5502|    116|yy385:
 5503|    116|		YYDEBUG(385, *YYCURSOR);
 5504|    116|		yyaccept = 4;
 5505|    116|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    116|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    116|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    116|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    116|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    116|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    116|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5506|    116|		if (yych == 'A') goto yy484;
  ------------------
  |  Branch (5506:7): [True: 1, False: 115]
  ------------------
 5507|    115|		if (yych == 'a') goto yy484;
  ------------------
  |  Branch (5507:7): [True: 114, False: 1]
  ------------------
 5508|      1|		goto yy48;
 5509|     14|yy386:
 5510|     14|		YYDEBUG(386, *YYCURSOR);
 5511|     14|		yyaccept = 4;
 5512|     14|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     14|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5513|     14|		if (yych == 'U') goto yy485;
  ------------------
  |  Branch (5513:7): [True: 0, False: 14]
  ------------------
 5514|     14|		if (yych == 'u') goto yy485;
  ------------------
  |  Branch (5514:7): [True: 13, False: 1]
  ------------------
 5515|      1|		goto yy48;
 5516|  1.17k|yy387:
 5517|  1.17k|		YYDEBUG(387, *YYCURSOR);
 5518|  1.17k|		yyaccept = 28;
 5519|  1.17k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.17k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.17k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.17k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.17k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.17k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.17k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5520|  1.17k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5520:7): [True: 144, False: 1.02k]
  ------------------
 5521|    144|			goto yy47;
 5522|    144|		}
 5523|  1.02k|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5523:7): [True: 0, False: 1.02k]
  ------------------
 5524|  1.02k|yy388:
 5525|  1.02k|		YYDEBUG(388, *YYCURSOR);
 5526|  1.02k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.02k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5527|  1.02k|#line 1545 "Zend/zend_language_scanner.l"
 5528|  1.02k|		{
 5529|  1.02k|	RETURN_TOKEN_WITH_IDENT(T_ECHO);
  ------------------
  |  | 1334|  1.02k|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|  1.02k|		token = _token; \
  |  | 1336|  1.02k|		goto emit_token_with_ident; \
  |  | 1337|  1.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5530|  1.02k|}
 5531|      0|#line 5532 "Zend/zend_language_scanner.c"
 5532|     20|yy389:
 5533|     20|		YYDEBUG(389, *YYCURSOR);
 5534|     20|		yyaccept = 29;
 5535|     20|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     20|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5536|     20|		if (yych <= '\\') {
  ------------------
  |  Branch (5536:7): [True: 11, False: 9]
  ------------------
 5537|     11|			if (yych <= 'H') {
  ------------------
  |  Branch (5537:8): [True: 10, False: 1]
  ------------------
 5538|     10|				if (yych <= '/') goto yy390;
  ------------------
  |  Branch (5538:9): [True: 4, False: 6]
  ------------------
 5539|      6|				if (yych <= '9') goto yy47;
  ------------------
  |  Branch (5539:9): [True: 3, False: 3]
  ------------------
 5540|      3|				if (yych >= 'A') goto yy47;
  ------------------
  |  Branch (5540:9): [True: 1, False: 2]
  ------------------
 5541|      3|			} else {
 5542|      1|				if (yych <= 'I') goto yy486;
  ------------------
  |  Branch (5542:9): [True: 0, False: 1]
  ------------------
 5543|      1|				if (yych <= 'Z') goto yy47;
  ------------------
  |  Branch (5543:9): [True: 1, False: 0]
  ------------------
 5544|      0|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (5544:9): [True: 0, False: 0]
  ------------------
 5545|      0|			}
 5546|     11|		} else {
 5547|      9|			if (yych <= 'h') {
  ------------------
  |  Branch (5547:8): [True: 4, False: 5]
  ------------------
 5548|      4|				if (yych == '_') goto yy47;
  ------------------
  |  Branch (5548:9): [True: 0, False: 4]
  ------------------
 5549|      4|				if (yych >= 'a') goto yy47;
  ------------------
  |  Branch (5549:9): [True: 4, False: 0]
  ------------------
 5550|      5|			} else {
 5551|      5|				if (yych <= 'i') goto yy486;
  ------------------
  |  Branch (5551:9): [True: 5, False: 0]
  ------------------
 5552|      0|				if (yych <= 'z') goto yy47;
  ------------------
  |  Branch (5552:9): [True: 0, False: 0]
  ------------------
 5553|      0|				if (yych >= 0x80) goto yy47;
  ------------------
  |  Branch (5553:9): [True: 0, False: 0]
  ------------------
 5554|      0|			}
 5555|      9|		}
 5556|      6|yy390:
 5557|      6|		YYDEBUG(390, *YYCURSOR);
 5558|      6|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      6|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5559|      6|#line 1465 "Zend/zend_language_scanner.l"
 5560|      6|		{
 5561|      6|	RETURN_TOKEN_WITH_IDENT(T_ELSE);
  ------------------
  |  | 1334|      6|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      6|		token = _token; \
  |  | 1336|      6|		goto emit_token_with_ident; \
  |  | 1337|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5562|      6|}
 5563|      0|#line 5564 "Zend/zend_language_scanner.c"
 5564|     13|yy391:
 5565|     13|		YYDEBUG(391, *YYCURSOR);
 5566|     13|		yyaccept = 4;
 5567|     13|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5568|     13|		if (yych == 'Y') goto yy487;
  ------------------
  |  Branch (5568:7): [True: 1, False: 12]
  ------------------
 5569|     12|		if (yych == 'y') goto yy487;
  ------------------
  |  Branch (5569:7): [True: 9, False: 3]
  ------------------
 5570|      3|		goto yy48;
 5571|     12|yy392:
 5572|     12|		YYDEBUG(392, *YYCURSOR);
 5573|     12|		yyaccept = 4;
 5574|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5575|     12|		if (yych == 'E') goto yy489;
  ------------------
  |  Branch (5575:7): [True: 1, False: 11]
  ------------------
 5576|     11|		if (yych == 'e') goto yy489;
  ------------------
  |  Branch (5576:7): [True: 5, False: 6]
  ------------------
 5577|      6|		goto yy48;
 5578|    111|yy393:
 5579|    111|		YYDEBUG(393, *YYCURSOR);
 5580|    111|		yyaccept = 4;
 5581|    111|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    111|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    111|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5582|    111|		if (yych == 'O') goto yy490;
  ------------------
  |  Branch (5582:7): [True: 6, False: 105]
  ------------------
 5583|    105|		if (yych == 'o') goto yy490;
  ------------------
  |  Branch (5583:7): [True: 94, False: 11]
  ------------------
 5584|     11|		goto yy48;
 5585|     20|yy394:
 5586|     20|		YYDEBUG(394, *YYCURSOR);
 5587|     20|		yyaccept = 4;
 5588|     20|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     20|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5589|     20|		if (yych == 'F') goto yy491;
  ------------------
  |  Branch (5589:7): [True: 3, False: 17]
  ------------------
 5590|     17|		if (yych == 'f') goto yy491;
  ------------------
  |  Branch (5590:7): [True: 6, False: 11]
  ------------------
 5591|     11|		goto yy48;
 5592|     16|yy395:
 5593|     16|		YYDEBUG(395, *YYCURSOR);
 5594|     16|		yyaccept = 4;
 5595|     16|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     16|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5596|     16|		if (yych == 'W') goto yy493;
  ------------------
  |  Branch (5596:7): [True: 0, False: 16]
  ------------------
 5597|     16|		if (yych == 'w') goto yy493;
  ------------------
  |  Branch (5597:7): [True: 0, False: 16]
  ------------------
 5598|     16|		goto yy48;
 5599|     16|yy396:
 5600|      6|		YYDEBUG(396, *YYCURSOR);
 5601|      6|		yyaccept = 4;
 5602|      6|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      6|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5603|      6|		if (yych == 'H') goto yy494;
  ------------------
  |  Branch (5603:7): [True: 2, False: 4]
  ------------------
 5604|      4|		if (yych == 'h') goto yy494;
  ------------------
  |  Branch (5604:7): [True: 1, False: 3]
  ------------------
 5605|      3|		goto yy48;
 5606|  1.32k|yy397:
 5607|  1.32k|		YYDEBUG(397, *YYCURSOR);
 5608|  1.32k|		yyaccept = 4;
 5609|  1.32k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.32k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5610|  1.32k|		if (yych <= 0x1F) {
  ------------------
  |  Branch (5610:7): [True: 1.02k, False: 307]
  ------------------
 5611|  1.02k|			if (yych <= '\n') {
  ------------------
  |  Branch (5611:8): [True: 22, False: 999]
  ------------------
 5612|     22|				if (yych <= 0x08) goto yy48;
  ------------------
  |  Branch (5612:9): [True: 8, False: 14]
  ------------------
 5613|     14|				goto yy495;
 5614|    999|			} else {
 5615|    999|				if (yych == '\r') goto yy495;
  ------------------
  |  Branch (5615:9): [True: 966, False: 33]
  ------------------
 5616|     33|				goto yy48;
 5617|    999|			}
 5618|  1.02k|		} else {
 5619|    307|			if (yych <= '#') {
  ------------------
  |  Branch (5619:8): [True: 220, False: 87]
  ------------------
 5620|    220|				if (yych <= ' ') goto yy495;
  ------------------
  |  Branch (5620:9): [True: 199, False: 21]
  ------------------
 5621|     21|				if (yych <= '"') goto yy48;
  ------------------
  |  Branch (5621:9): [True: 7, False: 14]
  ------------------
 5622|     14|				goto yy497;
 5623|     87|			} else {
 5624|     87|				if (yych == '/') goto yy498;
  ------------------
  |  Branch (5624:9): [True: 33, False: 54]
  ------------------
 5625|     54|				goto yy48;
 5626|     87|			}
 5627|    307|		}
 5628|     61|yy398:
 5629|     61|		YYDEBUG(398, *YYCURSOR);
 5630|     61|		yyaccept = 30;
 5631|     61|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     61|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     61|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     61|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     61|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     61|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     61|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5632|     61|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5632:7): [True: 3, False: 58]
  ------------------
 5633|      3|			goto yy47;
 5634|      3|		}
 5635|     58|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5635:7): [True: 1, False: 57]
  ------------------
 5636|     58|yy399:
 5637|     58|		YYDEBUG(399, *YYCURSOR);
 5638|     58|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     58|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5639|     58|#line 1717 "Zend/zend_language_scanner.l"
 5640|     58|		{
 5641|     58|	RETURN_TOKEN_WITH_IDENT(T_EVAL);
  ------------------
  |  | 1334|     58|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     58|		token = _token; \
  |  | 1336|     58|		goto emit_token_with_ident; \
  |  | 1337|     58|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5642|     58|}
 5643|      0|#line 5644 "Zend/zend_language_scanner.c"
 5644|     22|yy400:
 5645|     22|		YYDEBUG(400, *YYCURSOR);
 5646|     22|		yyaccept = 31;
 5647|     22|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     22|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5648|     22|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5648:7): [True: 0, False: 22]
  ------------------
 5649|      0|			goto yy47;
 5650|      0|		}
 5651|     22|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5651:7): [True: 4, False: 18]
  ------------------
 5652|     22|yy401:
 5653|     22|		YYDEBUG(401, *YYCURSOR);
 5654|     22|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     22|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5655|     22|#line 1398 "Zend/zend_language_scanner.l"
 5656|     22|		{
 5657|     22|	RETURN_TOKEN_WITH_IDENT(T_EXIT);
  ------------------
  |  | 1334|     22|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     22|		token = _token; \
  |  | 1336|     22|		goto emit_token_with_ident; \
  |  | 1337|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5658|     22|}
 5659|      0|#line 5660 "Zend/zend_language_scanner.c"
 5660|    339|yy402:
 5661|    339|		YYDEBUG(402, *YYCURSOR);
 5662|    339|		yyaccept = 4;
 5663|    339|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    339|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    339|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    339|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    339|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    339|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    339|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5664|    339|		if (yych == 'N') goto yy499;
  ------------------
  |  Branch (5664:7): [True: 1, False: 338]
  ------------------
 5665|    338|		if (yych == 'n') goto yy499;
  ------------------
  |  Branch (5665:7): [True: 315, False: 23]
  ------------------
 5666|     23|		goto yy48;
 5667|    120|yy403:
 5668|    120|		YYDEBUG(403, *YYCURSOR);
 5669|    120|		yyaccept = 4;
 5670|    120|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    120|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    120|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    120|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    120|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    120|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    120|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5671|    120|		if (yych == 'L') goto yy500;
  ------------------
  |  Branch (5671:7): [True: 7, False: 113]
  ------------------
 5672|    113|		if (yych == 'l') goto yy500;
  ------------------
  |  Branch (5672:7): [True: 112, False: 1]
  ------------------
 5673|      1|		goto yy48;
 5674|    214|yy404:
 5675|    214|		YYDEBUG(404, *YYCURSOR);
 5676|    214|		yyaccept = 4;
 5677|    214|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    214|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    214|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    214|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    214|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    214|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    214|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5678|    214|		if (yych == 'A') goto yy502;
  ------------------
  |  Branch (5678:7): [True: 1, False: 213]
  ------------------
 5679|    213|		if (yych == 'a') goto yy502;
  ------------------
  |  Branch (5679:7): [True: 213, False: 0]
  ------------------
 5680|      0|		goto yy48;
 5681|  5.09k|yy405:
 5682|  5.09k|		YYDEBUG(405, *YYCURSOR);
 5683|  5.09k|		yyaccept = 4;
 5684|  5.09k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  5.09k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  5.09k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5685|  5.09k|		if (yych == 'T') goto yy503;
  ------------------
  |  Branch (5685:7): [True: 5, False: 5.08k]
  ------------------
 5686|  5.08k|		if (yych == 't') goto yy503;
  ------------------
  |  Branch (5686:7): [True: 1.70k, False: 3.38k]
  ------------------
 5687|  3.38k|		goto yy48;
 5688|  3.38k|yy406:
 5689|     73|		YYDEBUG(406, *YYCURSOR);
 5690|     73|		yyaccept = 4;
 5691|     73|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     73|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     73|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     73|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     73|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5692|     73|		if (yych == 'A') goto yy504;
  ------------------
  |  Branch (5692:7): [True: 40, False: 33]
  ------------------
 5693|     33|		if (yych == 'a') goto yy504;
  ------------------
  |  Branch (5693:7): [True: 29, False: 4]
  ------------------
 5694|      4|		goto yy48;
 5695|     76|yy407:
 5696|     76|		YYDEBUG(407, *YYCURSOR);
 5697|     76|		yyaccept = 32;
 5698|     76|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     76|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     76|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5699|     76|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5699:7): [True: 2, False: 74]
  ------------------
 5700|      2|			goto yy47;
 5701|      2|		}
 5702|     74|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5702:7): [True: 2, False: 72]
  ------------------
 5703|     74|yy408:
 5704|     74|		YYDEBUG(408, *YYCURSOR);
 5705|     74|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     74|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     74|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     74|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     74|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     74|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     74|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     74|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     74|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5706|     74|#line 1541 "Zend/zend_language_scanner.l"
 5707|     74|		{
 5708|     74|	RETURN_TOKEN_WITH_IDENT(T_GOTO);
  ------------------
  |  | 1334|     74|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     74|		token = _token; \
  |  | 1336|     74|		goto emit_token_with_ident; \
  |  | 1337|     74|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5709|     74|}
 5710|      0|#line 5711 "Zend/zend_language_scanner.c"
 5711|    265|yy409:
 5712|    265|		YYDEBUG(409, *YYCURSOR);
 5713|    265|		yyaccept = 4;
 5714|    265|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    265|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    265|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    265|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    265|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    265|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    265|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5715|    265|		if (yych == 'E') goto yy505;
  ------------------
  |  Branch (5715:7): [True: 62, False: 203]
  ------------------
 5716|    203|		if (yych == 'e') goto yy505;
  ------------------
  |  Branch (5716:7): [True: 162, False: 41]
  ------------------
 5717|     41|		goto yy48;
 5718|     55|yy410:
 5719|     55|		YYDEBUG(410, *YYCURSOR);
 5720|     55|		yyaccept = 4;
 5721|     55|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     55|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     55|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5722|     55|		if (yych == 'U') goto yy506;
  ------------------
  |  Branch (5722:7): [True: 3, False: 52]
  ------------------
 5723|     52|		if (yych == 'u') goto yy506;
  ------------------
  |  Branch (5723:7): [True: 52, False: 0]
  ------------------
 5724|      0|		goto yy48;
 5725|     46|yy411:
 5726|     46|		YYDEBUG(411, *YYCURSOR);
 5727|     46|		yyaccept = 4;
 5728|     46|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     46|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5729|     46|		if (yych <= 'E') {
  ------------------
  |  Branch (5729:7): [True: 2, False: 44]
  ------------------
 5730|      2|			if (yych == 'A') goto yy507;
  ------------------
  |  Branch (5730:8): [True: 0, False: 2]
  ------------------
 5731|      2|			if (yych <= 'D') goto yy48;
  ------------------
  |  Branch (5731:8): [True: 0, False: 2]
  ------------------
 5732|      2|			goto yy508;
 5733|     44|		} else {
 5734|     44|			if (yych <= 'a') {
  ------------------
  |  Branch (5734:8): [True: 26, False: 18]
  ------------------
 5735|     26|				if (yych <= '`') goto yy48;
  ------------------
  |  Branch (5735:9): [True: 0, False: 26]
  ------------------
 5736|     26|				goto yy507;
 5737|     26|			} else {
 5738|     18|				if (yych == 'e') goto yy508;
  ------------------
  |  Branch (5738:9): [True: 15, False: 3]
  ------------------
 5739|      3|				goto yy48;
 5740|     18|			}
 5741|     44|		}
 5742|    250|yy412:
 5743|    250|		YYDEBUG(412, *YYCURSOR);
 5744|    250|		yyaccept = 4;
 5745|    250|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    250|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    250|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    250|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    250|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    250|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    250|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5746|    250|		if (yych == 'R') goto yy509;
  ------------------
  |  Branch (5746:7): [True: 3, False: 247]
  ------------------
 5747|    247|		if (yych == 'r') goto yy509;
  ------------------
  |  Branch (5747:7): [True: 219, False: 28]
  ------------------
 5748|     28|		goto yy48;
 5749|     76|yy413:
 5750|     76|		YYDEBUG(413, *YYCURSOR);
 5751|     76|		yyaccept = 4;
 5752|     76|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     76|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     76|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5753|     76|		if (yych == 'T') goto yy510;
  ------------------
  |  Branch (5753:7): [True: 0, False: 76]
  ------------------
 5754|     76|		if (yych == 't') goto yy510;
  ------------------
  |  Branch (5754:7): [True: 73, False: 3]
  ------------------
 5755|      3|		goto yy48;
 5756|     88|yy414:
 5757|     88|		YYDEBUG(414, *YYCURSOR);
 5758|     88|		yyaccept = 33;
 5759|     88|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     88|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5760|     88|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (5760:7): [True: 2, False: 86]
  ------------------
 5761|      2|			goto yy47;
 5762|      2|		}
 5763|     86|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (5763:7): [True: 3, False: 83]
  ------------------
 5764|     86|yy415:
 5765|     86|		YYDEBUG(415, *YYCURSOR);
 5766|     86|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     86|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     86|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 5767|     86|#line 1813 "Zend/zend_language_scanner.l"
 5768|     86|		{
 5769|     86|	RETURN_TOKEN_WITH_IDENT(T_LIST);
  ------------------
  |  | 1334|     86|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     86|		token = _token; \
  |  | 1336|     86|		goto emit_token_with_ident; \
  |  | 1337|     86|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5770|     86|}
 5771|      0|#line 5772 "Zend/zend_language_scanner.c"
 5772|     68|yy416:
 5773|     68|		YYDEBUG(416, *YYCURSOR);
 5774|     68|		yyaccept = 4;
 5775|     68|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     68|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     68|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     68|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     68|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     68|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     68|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5776|     68|		if (yych == 'H') goto yy512;
  ------------------
  |  Branch (5776:7): [True: 11, False: 57]
  ------------------
 5777|     57|		if (yych == 'h') goto yy512;
  ------------------
  |  Branch (5777:7): [True: 47, False: 10]
  ------------------
 5778|     10|		goto yy48;
 5779|    312|yy417:
 5780|    312|		YYDEBUG(417, *YYCURSOR);
 5781|    312|		yyaccept = 4;
 5782|    312|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    312|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    312|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    312|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    312|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    312|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    312|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5783|    312|		if (yych == 'S') goto yy514;
  ------------------
  |  Branch (5783:7): [True: 12, False: 300]
  ------------------
 5784|    300|		if (yych == 's') goto yy514;
  ------------------
  |  Branch (5784:7): [True: 281, False: 19]
  ------------------
 5785|     19|		goto yy48;
 5786|    289|yy418:
 5787|    289|		YYDEBUG(418, *YYCURSOR);
 5788|    289|		yyaccept = 4;
 5789|    289|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    289|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    289|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    289|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    289|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    289|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    289|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5790|    289|		if (yych == 'T') goto yy515;
  ------------------
  |  Branch (5790:7): [True: 1, False: 288]
  ------------------
 5791|    288|		if (yych == 't') goto yy515;
  ------------------
  |  Branch (5791:7): [True: 281, False: 7]
  ------------------
 5792|      7|		goto yy48;
 5793|    651|yy419:
 5794|    651|		YYDEBUG(419, *YYCURSOR);
 5795|    651|		yyaccept = 4;
 5796|    651|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    651|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    651|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    651|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    651|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    651|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    651|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5797|    651|		if (yych == 'A') goto yy517;
  ------------------
  |  Branch (5797:7): [True: 0, False: 651]
  ------------------
 5798|    651|		if (yych == 'a') goto yy517;
  ------------------
  |  Branch (5798:7): [True: 646, False: 5]
  ------------------
 5799|      5|		goto yy48;
 5800|    122|yy420:
 5801|    122|		YYDEBUG(420, *YYCURSOR);
 5802|    122|		yyaccept = 4;
 5803|    122|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    122|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    122|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    122|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    122|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    122|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    122|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5804|    122|		if (yych == 'E') goto yy518;
  ------------------
  |  Branch (5804:7): [True: 0, False: 122]
  ------------------
 5805|    122|		if (yych == 'e') goto yy518;
  ------------------
  |  Branch (5805:7): [True: 110, False: 12]
  ------------------
 5806|     12|		goto yy48;
 5807|  1.05k|yy421:
 5808|  1.05k|		YYDEBUG(421, *YYCURSOR);
 5809|  1.05k|		yyaccept = 4;
 5810|  1.05k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.05k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.05k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.05k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.05k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.05k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.05k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5811|  1.05k|		if (yych == 'I') goto yy519;
  ------------------
  |  Branch (5811:7): [True: 22, False: 1.03k]
  ------------------
 5812|  1.03k|		if (yych == 'i') goto yy519;
  ------------------
  |  Branch (5812:7): [True: 867, False: 165]
  ------------------
 5813|    165|		goto yy48;
 5814|    736|yy422:
 5815|    736|		YYDEBUG(422, *YYCURSOR);
 5816|    736|		yyaccept = 4;
 5817|    736|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    736|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    736|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    736|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    736|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    736|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    736|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5818|    736|		if (yych == 'O') goto yy520;
  ------------------
  |  Branch (5818:7): [True: 0, False: 736]
  ------------------
 5819|    736|		if (yych == 'o') goto yy520;
  ------------------
  |  Branch (5819:7): [True: 165, False: 571]
  ------------------
 5820|    571|		goto yy48;
 5821|    571|yy423:
 5822|    148|		YYDEBUG(423, *YYCURSOR);
 5823|    148|		yyaccept = 4;
 5824|    148|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    148|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5825|    148|		if (yych == 'I') goto yy521;
  ------------------
  |  Branch (5825:7): [True: 1, False: 147]
  ------------------
 5826|    147|		if (yych == 'i') goto yy521;
  ------------------
  |  Branch (5826:7): [True: 126, False: 21]
  ------------------
 5827|     21|		goto yy48;
 5828|    372|yy424:
 5829|    372|		YYDEBUG(424, *YYCURSOR);
 5830|    372|		yyaccept = 4;
 5831|    372|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    372|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    372|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5832|    372|		if (yych == 'R') goto yy522;
  ------------------
  |  Branch (5832:7): [True: 0, False: 372]
  ------------------
 5833|    372|		if (yych == 'r') goto yy522;
  ------------------
  |  Branch (5833:7): [True: 372, False: 0]
  ------------------
 5834|      0|		goto yy48;
 5835|    270|yy425:
 5836|    270|		YYDEBUG(425, *YYCURSOR);
 5837|    270|		yyaccept = 4;
 5838|    270|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    270|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    270|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5839|    270|		if (yych == 'I') goto yy523;
  ------------------
  |  Branch (5839:7): [True: 0, False: 270]
  ------------------
 5840|    270|		if (yych == 'i') goto yy523;
  ------------------
  |  Branch (5840:7): [True: 264, False: 6]
  ------------------
 5841|      6|		goto yy48;
 5842|     38|yy426:
 5843|     38|		YYDEBUG(426, *YYCURSOR);
 5844|     38|		yyaccept = 4;
 5845|     38|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     38|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     38|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     38|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     38|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     38|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     38|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5846|     38|		if (yych == 'C') goto yy524;
  ------------------
  |  Branch (5846:7): [True: 6, False: 32]
  ------------------
 5847|     32|		if (yych == 'c') goto yy524;
  ------------------
  |  Branch (5847:7): [True: 29, False: 3]
  ------------------
 5848|      3|		goto yy48;
 5849|    105|yy427:
 5850|    105|		YYDEBUG(427, *YYCURSOR);
 5851|    105|		yyaccept = 4;
 5852|    105|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    105|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    105|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    105|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    105|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    105|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    105|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5853|    105|		if (yych == 'W') goto yy525;
  ------------------
  |  Branch (5853:7): [True: 0, False: 105]
  ------------------
 5854|    105|		if (yych == 'w') goto yy525;
  ------------------
  |  Branch (5854:7): [True: 91, False: 14]
  ------------------
 5855|     14|		goto yy48;
 5856|    200|yy428:
 5857|    200|		YYDEBUG(428, *YYCURSOR);
 5858|    200|		yyaccept = 4;
 5859|    200|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    200|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    200|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    200|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    200|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    200|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    200|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5860|    200|		if (yych == 'T') goto yy527;
  ------------------
  |  Branch (5860:7): [True: 1, False: 199]
  ------------------
 5861|    199|		if (yych == 't') goto yy527;
  ------------------
  |  Branch (5861:7): [True: 192, False: 7]
  ------------------
 5862|      7|		goto yy48;
 5863|    248|yy429:
 5864|    248|		YYDEBUG(429, *YYCURSOR);
 5865|    248|		yyaccept = 4;
 5866|    248|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    248|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    248|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    248|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    248|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    248|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    248|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5867|    248|		if (yych == 'T') goto yy529;
  ------------------
  |  Branch (5867:7): [True: 0, False: 248]
  ------------------
 5868|    248|		if (yych == 't') goto yy529;
  ------------------
  |  Branch (5868:7): [True: 168, False: 80]
  ------------------
 5869|     80|		goto yy48;
 5870|     80|yy430:
 5871|     34|		YYDEBUG(430, *YYCURSOR);
 5872|     34|		yyaccept = 4;
 5873|     34|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     34|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5874|     34|		if (yych == 'E') goto yy531;
  ------------------
  |  Branch (5874:7): [True: 8, False: 26]
  ------------------
 5875|     26|		if (yych == 'e') goto yy531;
  ------------------
  |  Branch (5875:7): [True: 21, False: 5]
  ------------------
 5876|      5|		goto yy48;
 5877|  1.24k|yy431:
 5878|  1.24k|		YYDEBUG(431, *YYCURSOR);
 5879|  1.24k|		yyaccept = 4;
 5880|  1.24k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.24k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.24k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.24k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.24k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.24k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.24k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5881|  1.24k|		if (yych == 'D') goto yy533;
  ------------------
  |  Branch (5881:7): [True: 43, False: 1.20k]
  ------------------
 5882|  1.20k|		if (yych == 'd') goto yy533;
  ------------------
  |  Branch (5882:7): [True: 1.15k, False: 56]
  ------------------
 5883|     56|		goto yy48;
 5884|     79|yy432:
 5885|     79|		YYDEBUG(432, *YYCURSOR);
 5886|     79|		yyaccept = 4;
 5887|     79|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     79|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     79|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     79|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     79|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     79|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     79|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5888|     79|		if (yych == 'A') goto yy535;
  ------------------
  |  Branch (5888:7): [True: 69, False: 10]
  ------------------
 5889|     10|		if (yych == 'a') goto yy535;
  ------------------
  |  Branch (5889:7): [True: 0, False: 10]
  ------------------
 5890|     10|		goto yy48;
 5891|    184|yy433:
 5892|    184|		YYDEBUG(433, *YYCURSOR);
 5893|    184|		yyaccept = 4;
 5894|    184|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    184|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    184|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    184|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    184|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    184|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    184|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5895|    184|		if (yych == 'R') goto yy536;
  ------------------
  |  Branch (5895:7): [True: 41, False: 143]
  ------------------
 5896|    143|		if (yych == 'r') goto yy536;
  ------------------
  |  Branch (5896:7): [True: 0, False: 143]
  ------------------
 5897|    143|		goto yy48;
 5898|    143|yy434:
 5899|     45|		YYDEBUG(434, *YYCURSOR);
 5900|     45|		yyaccept = 4;
 5901|     45|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     45|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     45|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5902|     45|		if (yych == 'L') goto yy537;
  ------------------
  |  Branch (5902:7): [True: 42, False: 3]
  ------------------
 5903|      3|		if (yych == 'l') goto yy537;
  ------------------
  |  Branch (5903:7): [True: 3, False: 0]
  ------------------
 5904|      0|		goto yy48;
 5905|     17|yy435:
 5906|     17|		YYDEBUG(435, *YYCURSOR);
 5907|     17|		yyaccept = 4;
 5908|     17|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     17|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5909|     17|		if (yych == 'N') goto yy538;
  ------------------
  |  Branch (5909:7): [True: 11, False: 6]
  ------------------
 5910|      6|		if (yych == 'n') goto yy538;
  ------------------
  |  Branch (5910:7): [True: 5, False: 1]
  ------------------
 5911|      1|		goto yy48;
 5912|     54|yy436:
 5913|     54|		YYDEBUG(436, *YYCURSOR);
 5914|     54|		yyaccept = 4;
 5915|     54|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     54|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     54|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     54|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     54|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     54|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     54|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5916|     54|		if (yych == 'L') goto yy539;
  ------------------
  |  Branch (5916:7): [True: 33, False: 21]
  ------------------
 5917|     21|		if (yych == 'l') goto yy539;
  ------------------
  |  Branch (5917:7): [True: 9, False: 12]
  ------------------
 5918|     12|		goto yy48;
 5919|     18|yy437:
 5920|     18|		YYDEBUG(437, *YYCURSOR);
 5921|     18|		yyaccept = 4;
 5922|     18|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     18|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5923|     18|		if (yych == 'N') goto yy540;
  ------------------
  |  Branch (5923:7): [True: 13, False: 5]
  ------------------
 5924|      5|		if (yych == 'n') goto yy540;
  ------------------
  |  Branch (5924:7): [True: 2, False: 3]
  ------------------
 5925|      3|		goto yy48;
 5926|     30|yy438:
 5927|     30|		YYDEBUG(438, *YYCURSOR);
 5928|     30|		yyaccept = 4;
 5929|     30|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     30|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     30|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     30|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     30|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     30|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     30|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5930|     30|		if (yych == 'T') goto yy541;
  ------------------
  |  Branch (5930:7): [True: 29, False: 1]
  ------------------
 5931|      1|		if (yych == 't') goto yy541;
  ------------------
  |  Branch (5931:7): [True: 0, False: 1]
  ------------------
 5932|      1|		goto yy48;
 5933|     63|yy439:
 5934|     63|		YYDEBUG(439, *YYCURSOR);
 5935|     63|		yyaccept = 4;
 5936|     63|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     63|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     63|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     63|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     63|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     63|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     63|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5937|     63|		if (yych == 'M') goto yy542;
  ------------------
  |  Branch (5937:7): [True: 41, False: 22]
  ------------------
 5938|     22|		if (yych == 'm') goto yy542;
  ------------------
  |  Branch (5938:7): [True: 17, False: 5]
  ------------------
 5939|      5|		goto yy48;
 5940|     57|yy440:
 5941|     57|		YYDEBUG(440, *YYCURSOR);
 5942|     57|		yyaccept = 4;
 5943|     57|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     57|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5944|     57|		if (yych == 'O') goto yy543;
  ------------------
  |  Branch (5944:7): [True: 40, False: 17]
  ------------------
 5945|     17|		if (yych == 'o') goto yy543;
  ------------------
  |  Branch (5945:7): [True: 3, False: 14]
  ------------------
 5946|     14|		goto yy48;
 5947|     19|yy441:
 5948|     19|		YYDEBUG(441, *YYCURSOR);
 5949|     19|		yyaccept = 4;
 5950|     19|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5951|     19|		if (yych == 'A') goto yy544;
  ------------------
  |  Branch (5951:7): [True: 5, False: 14]
  ------------------
 5952|     14|		if (yych == 'a') goto yy544;
  ------------------
  |  Branch (5952:7): [True: 14, False: 0]
  ------------------
 5953|      0|		goto yy48;
 5954|     56|yy442:
 5955|     56|		YYDEBUG(442, *YYCURSOR);
 5956|     56|		++YYCURSOR;
  ------------------
  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5957|     56|		YYFILL(1);
  ------------------
  |  |   53|     56|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     56|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     56|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 56]
  |  |  ------------------
  ------------------
 5958|     56|		yych = *YYCURSOR;
  ------------------
  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5959|     56|		if (yych <= '\f') {
  ------------------
  |  Branch (5959:7): [True: 6, False: 50]
  ------------------
 5960|      6|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (5960:8): [True: 6, False: 0]
  ------------------
 5961|      0|			if (yych == '\n') goto yy84;
  ------------------
  |  Branch (5961:8): [True: 0, False: 0]
  ------------------
 5962|      0|			goto yy225;
 5963|     50|		} else {
 5964|     50|			if (yych <= '\r') goto yy84;
  ------------------
  |  Branch (5964:8): [True: 1, False: 49]
  ------------------
 5965|     49|			if (yych == '.') goto yy352;
  ------------------
  |  Branch (5965:8): [True: 45, False: 4]
  ------------------
 5966|      4|			goto yy225;
 5967|     49|		}
 5968|  2.92k|yy443:
 5969|  2.92k|		YYDEBUG(443, *YYCURSOR);
 5970|  2.92k|		++YYCURSOR;
  ------------------
  |  |   54|  2.92k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.92k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.92k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5971|  2.92k|		YYFILL(1);
  ------------------
  |  |   53|  2.92k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.92k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.92k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.92k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.92k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.92k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.92k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.92k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.92k]
  |  |  ------------------
  ------------------
 5972|  2.92k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.92k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.92k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.92k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5973|  2.92k|		YYDEBUG(444, *YYCURSOR);
 5974|  2.92k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (5974:7): [True: 2.36k, False: 554]
  ------------------
 5975|  2.36k|			goto yy443;
 5976|  2.36k|		}
 5977|    554|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (5977:7): [True: 50, False: 504]
  ------------------
 5978|    504|		if (yych <= '\r') goto yy545;
  ------------------
  |  Branch (5978:7): [True: 382, False: 122]
  ------------------
 5979|    122|		goto yy547;
 5980|    122|yy445:
 5981|    114|		YYDEBUG(445, *YYCURSOR);
 5982|    114|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    114|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    114|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    114|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5983|    114|		if (yych == 'Y') goto yy549;
  ------------------
  |  Branch (5983:7): [True: 0, False: 114]
  ------------------
 5984|    114|		if (yych == 'y') goto yy549;
  ------------------
  |  Branch (5984:7): [True: 114, False: 0]
  ------------------
 5985|      0|		goto yy86;
 5986|      6|yy446:
 5987|      6|		YYDEBUG(446, *YYCURSOR);
 5988|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5989|      6|		if (yych == 'R') goto yy551;
  ------------------
  |  Branch (5989:7): [True: 0, False: 6]
  ------------------
 5990|      6|		if (yych == 'r') goto yy551;
  ------------------
  |  Branch (5990:7): [True: 6, False: 0]
  ------------------
 5991|      0|		goto yy86;
 5992|     20|yy447:
 5993|     20|		YYDEBUG(447, *YYCURSOR);
 5994|     20|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5995|     20|		if (yych == 'E') goto yy556;
  ------------------
  |  Branch (5995:7): [True: 0, False: 20]
  ------------------
 5996|     20|		if (yych == 'e') goto yy556;
  ------------------
  |  Branch (5996:7): [True: 14, False: 6]
  ------------------
 5997|      6|		goto yy553;
 5998|      6|yy448:
 5999|      5|		YYDEBUG(448, *YYCURSOR);
 6000|      5|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6001|      5|		if (yych == 'L') goto yy557;
  ------------------
  |  Branch (6001:7): [True: 0, False: 5]
  ------------------
 6002|      5|		if (yych == 'l') goto yy557;
  ------------------
  |  Branch (6002:7): [True: 5, False: 0]
  ------------------
 6003|      0|		goto yy86;
 6004|     21|yy449:
 6005|     21|		YYDEBUG(449, *YYCURSOR);
 6006|     21|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6007|     21|		if (yych == 'T') goto yy558;
  ------------------
  |  Branch (6007:7): [True: 0, False: 21]
  ------------------
 6008|     21|		if (yych == 't') goto yy558;
  ------------------
  |  Branch (6008:7): [True: 21, False: 0]
  ------------------
 6009|      0|		goto yy86;
 6010|     34|yy450:
 6011|     34|		YYDEBUG(450, *YYCURSOR);
 6012|     34|		++YYCURSOR;
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6013|     34|		YYFILL(1);
  ------------------
  |  |   53|     34|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     34|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     34|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 34]
  |  |  ------------------
  ------------------
 6014|     34|		yych = *YYCURSOR;
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6015|     99|yy451:
 6016|     99|		YYDEBUG(451, *YYCURSOR);
 6017|     99|		if (yych <= 0x1F) {
  ------------------
  |  Branch (6017:7): [True: 1, False: 98]
  ------------------
 6018|      1|			if (yych == '\t') goto yy450;
  ------------------
  |  Branch (6018:8): [True: 1, False: 0]
  ------------------
 6019|      0|			goto yy86;
 6020|     98|		} else {
 6021|     98|			if (yych <= ' ') goto yy450;
  ------------------
  |  Branch (6021:8): [True: 33, False: 65]
  ------------------
 6022|     65|			if (yych != ')') goto yy86;
  ------------------
  |  Branch (6022:8): [True: 42, False: 23]
  ------------------
 6023|     65|		}
 6024|     23|		YYDEBUG(452, *YYCURSOR);
 6025|     23|		++YYCURSOR;
  ------------------
  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6026|     23|		YYDEBUG(453, *YYCURSOR);
 6027|     23|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     23|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6028|     23|#line 1637 "Zend/zend_language_scanner.l"
 6029|     23|		{
 6030|     23|	RETURN_TOKEN(T_INT_CAST);
  ------------------
  |  | 1318|     23|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     23|		token = _token; \
  |  | 1320|     23|		goto emit_token; \
  |  | 1321|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6031|     23|}
 6032|      0|#line 6033 "Zend/zend_language_scanner.c"
 6033|     16|yy454:
 6034|     16|		YYDEBUG(454, *YYCURSOR);
 6035|     16|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6036|     16|		if (yych == 'G') goto yy560;
  ------------------
  |  Branch (6036:7): [True: 7, False: 9]
  ------------------
 6037|      9|		if (yych == 'g') goto yy560;
  ------------------
  |  Branch (6037:7): [True: 7, False: 2]
  ------------------
 6038|      2|		goto yy86;
 6039|     62|yy455:
 6040|     62|		YYDEBUG(455, *YYCURSOR);
 6041|     62|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     62|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     62|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     62|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6042|     62|		if (yych == 'C') goto yy561;
  ------------------
  |  Branch (6042:7): [True: 6, False: 56]
  ------------------
 6043|     56|		if (yych == 'c') goto yy561;
  ------------------
  |  Branch (6043:7): [True: 54, False: 2]
  ------------------
 6044|      2|		goto yy86;
 6045|      3|yy456:
 6046|      3|		YYDEBUG(456, *YYCURSOR);
 6047|      3|		++YYCURSOR;
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6048|      3|		YYFILL(1);
  ------------------
  |  |   53|      3|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      3|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      3|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 6049|      3|		yych = *YYCURSOR;
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6050|      3|		YYDEBUG(457, *YYCURSOR);
 6051|      3|		if (yych <= 0x1F) {
  ------------------
  |  Branch (6051:7): [True: 1, False: 2]
  ------------------
 6052|      1|			if (yych == '\t') goto yy456;
  ------------------
  |  Branch (6052:8): [True: 0, False: 1]
  ------------------
 6053|      1|			goto yy86;
 6054|      2|		} else {
 6055|      2|			if (yych <= ' ') goto yy456;
  ------------------
  |  Branch (6055:8): [True: 0, False: 2]
  ------------------
 6056|      2|			if (yych == ')') goto yy562;
  ------------------
  |  Branch (6056:8): [True: 1, False: 1]
  ------------------
 6057|      1|			goto yy86;
 6058|      2|		}
 6059|     97|yy458:
 6060|     97|		YYDEBUG(458, *YYCURSOR);
 6061|     97|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     97|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     97|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     97|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6062|     97|		if (yych == 'N') goto yy564;
  ------------------
  |  Branch (6062:7): [True: 1, False: 96]
  ------------------
 6063|     96|		if (yych == 'n') goto yy564;
  ------------------
  |  Branch (6063:7): [True: 64, False: 32]
  ------------------
 6064|     32|		goto yy86;
 6065|     60|yy459:
 6066|     60|		YYDEBUG(459, *YYCURSOR);
 6067|     60|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     60|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     60|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     60|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6068|     60|		if (yych == 'T') goto yy565;
  ------------------
  |  Branch (6068:7): [True: 0, False: 60]
  ------------------
 6069|     60|		if (yych == 't') goto yy565;
  ------------------
  |  Branch (6069:7): [True: 19, False: 41]
  ------------------
 6070|     41|		goto yy86;
 6071|     41|yy460:
 6072|      5|		YYDEBUG(460, *YYCURSOR);
 6073|      5|		++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6074|      5|		YYFILL(1);
  ------------------
  |  |   53|      5|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      5|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      5|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 6075|      5|		yych = *YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6076|      5|		YYDEBUG(461, *YYCURSOR);
 6077|      5|		if (yych <= 0x1F) {
  ------------------
  |  Branch (6077:7): [True: 0, False: 5]
  ------------------
 6078|      0|			if (yych == '\t') goto yy460;
  ------------------
  |  Branch (6078:8): [True: 0, False: 0]
  ------------------
 6079|      0|			goto yy86;
 6080|      5|		} else {
 6081|      5|			if (yych <= ' ') goto yy460;
  ------------------
  |  Branch (6081:8): [True: 1, False: 4]
  ------------------
 6082|      4|			if (yych == ')') goto yy567;
  ------------------
  |  Branch (6082:8): [True: 3, False: 1]
  ------------------
 6083|      1|			goto yy86;
 6084|      4|		}
 6085|    488|yy462:
 6086|    488|		YYDEBUG(462, *YYCURSOR);
 6087|    488|		++YYCURSOR;
  ------------------
  |  |   54|    488|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    488|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    488|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6088|    488|		YYFILL(3);
  ------------------
  |  |   53|    488|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    488|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    488|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    488|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    488|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    488|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    488|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    488|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 488]
  |  |  ------------------
  ------------------
 6089|    488|		yych = *YYCURSOR;
  ------------------
  |  |   54|    488|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    488|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    488|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6090|    576|yy463:
 6091|    576|		YYDEBUG(463, *YYCURSOR);
 6092|    576|		if (yych <= 'Z') {
  ------------------
  |  Branch (6092:7): [True: 174, False: 402]
  ------------------
 6093|    174|			if (yych <= '/') {
  ------------------
  |  Branch (6093:8): [True: 54, False: 120]
  ------------------
 6094|     54|				if (yych == '"') goto yy569;
  ------------------
  |  Branch (6094:9): [True: 22, False: 32]
  ------------------
 6095|     32|				goto yy86;
 6096|    120|			} else {
 6097|    120|				if (yych <= '9') goto yy462;
  ------------------
  |  Branch (6097:9): [True: 56, False: 64]
  ------------------
 6098|     64|				if (yych <= '@') goto yy86;
  ------------------
  |  Branch (6098:9): [True: 12, False: 52]
  ------------------
 6099|     52|				goto yy462;
 6100|     64|			}
 6101|    402|		} else {
 6102|    402|			if (yych <= '`') {
  ------------------
  |  Branch (6102:8): [True: 43, False: 359]
  ------------------
 6103|     43|				if (yych == '_') goto yy462;
  ------------------
  |  Branch (6103:9): [True: 39, False: 4]
  ------------------
 6104|      4|				goto yy86;
 6105|    359|			} else {
 6106|    359|				if (yych <= 'z') goto yy462;
  ------------------
  |  Branch (6106:9): [True: 245, False: 114]
  ------------------
 6107|    114|				if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (6107:9): [True: 18, False: 96]
  ------------------
 6108|     96|				goto yy462;
 6109|    114|			}
 6110|    402|		}
 6111|    454|yy464:
 6112|    454|		YYDEBUG(464, *YYCURSOR);
 6113|    454|		++YYCURSOR;
  ------------------
  |  |   54|    454|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    454|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    454|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6114|    454|		YYFILL(3);
  ------------------
  |  |   53|    454|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    454|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    454|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    454|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    454|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    454|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    454|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    454|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 454]
  |  |  ------------------
  ------------------
 6115|    454|		yych = *YYCURSOR;
  ------------------
  |  |   54|    454|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    454|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    454|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6116|    566|yy465:
 6117|    566|		YYDEBUG(465, *YYCURSOR);
 6118|    566|		if (yych <= 'Z') {
  ------------------
  |  Branch (6118:7): [True: 329, False: 237]
  ------------------
 6119|    329|			if (yych <= '/') {
  ------------------
  |  Branch (6119:8): [True: 85, False: 244]
  ------------------
 6120|     85|				if (yych == '\'') goto yy569;
  ------------------
  |  Branch (6120:9): [True: 76, False: 9]
  ------------------
 6121|      9|				goto yy86;
 6122|    244|			} else {
 6123|    244|				if (yych <= '9') goto yy464;
  ------------------
  |  Branch (6123:9): [True: 14, False: 230]
  ------------------
 6124|    230|				if (yych <= '@') goto yy86;
  ------------------
  |  Branch (6124:9): [True: 24, False: 206]
  ------------------
 6125|    206|				goto yy464;
 6126|    230|			}
 6127|    329|		} else {
 6128|    237|			if (yych <= '`') {
  ------------------
  |  Branch (6128:8): [True: 25, False: 212]
  ------------------
 6129|     25|				if (yych == '_') goto yy464;
  ------------------
  |  Branch (6129:9): [True: 22, False: 3]
  ------------------
 6130|      3|				goto yy86;
 6131|    212|			} else {
 6132|    212|				if (yych <= 'z') goto yy464;
  ------------------
  |  Branch (6132:9): [True: 198, False: 14]
  ------------------
 6133|     14|				if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (6133:9): [True: 0, False: 14]
  ------------------
 6134|     14|				goto yy464;
 6135|     14|			}
 6136|    237|		}
 6137|  13.2k|yy466:
 6138|  13.2k|		YYDEBUG(466, *YYCURSOR);
 6139|  13.2k|		++YYCURSOR;
  ------------------
  |  |   54|  13.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6140|  13.3k|yy467:
 6141|  13.3k|		YYDEBUG(467, *YYCURSOR);
 6142|  13.3k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  13.3k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  13.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6143|  13.3k|#line 2677 "Zend/zend_language_scanner.l"
 6144|  13.3k|		{
 6145|  13.3k|	char *s;
 6146|  13.3k|	unsigned char *saved_cursor;
 6147|  13.3k|	int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 0, indentation = 0;
  ------------------
  |  |   66|  13.3k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6147:16): [True: 80, False: 13.2k]
  ------------------
 6148|  13.3k|	zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label));
  ------------------
  |  |  150|  13.3k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  13.3k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  13.3k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  13.3k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  13.3k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6149|  13.3k|	bool is_heredoc = 1;
 6150|       |
 6151|  13.3k|	CG(zend_lineno)++;
  ------------------
  |  |   35|  13.3k|# define CG(v) (compiler_globals.v)
  ------------------
 6152|  13.3k|	heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
  ------------------
  |  |   67|  13.3k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
  ------------------
  |  |   66|  13.3k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
  ------------------
  |  |   67|  13.3k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6152:46): [True: 0, False: 13.3k]
  ------------------
 6153|  13.3k|	s = yytext+bprefix+3;
  ------------------
  |  |   66|  13.3k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6154|  13.3k|	while ((*s == ' ') || (*s == '\t')) {
  ------------------
  |  Branch (6154:9): [True: 32, False: 13.3k]
  |  Branch (6154:24): [True: 0, False: 13.3k]
  ------------------
 6155|     32|		s++;
 6156|     32|		heredoc_label->length--;
 6157|     32|	}
 6158|       |
 6159|  13.3k|	if (*s == '\'') {
  ------------------
  |  Branch (6159:6): [True: 71, False: 13.2k]
  ------------------
 6160|     71|		s++;
 6161|     71|		heredoc_label->length -= 2;
 6162|     71|		is_heredoc = 0;
 6163|       |
 6164|     71|		BEGIN(ST_NOWDOC);
  ------------------
  |  |   64|     71|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|     71|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     71|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     71|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6165|  13.2k|	} else {
 6166|  13.2k|		if (*s == '"') {
  ------------------
  |  Branch (6166:7): [True: 7, False: 13.2k]
  ------------------
 6167|      7|			s++;
 6168|      7|			heredoc_label->length -= 2;
 6169|      7|		}
 6170|       |
 6171|  13.2k|		BEGIN(ST_HEREDOC);
  ------------------
  |  |   64|  13.2k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  13.2k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  13.2k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  13.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6172|  13.2k|	}
 6173|       |
 6174|  13.3k|	heredoc_label->label = estrndup(s, heredoc_label->length);
  ------------------
  |  |  164|  13.3k|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  13.3k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  13.3k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  13.3k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  13.3k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6175|  13.3k|	heredoc_label->indentation_uses_spaces = 0;
 6176|  13.3k|	heredoc_label->indentation = 0;
 6177|  13.3k|	saved_cursor = YYCURSOR;
  ------------------
  |  |   54|  13.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6178|       |
 6179|  13.3k|	zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label);
  ------------------
  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6180|       |
 6181|  13.6k|	while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|  13.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   55|  13.6k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  13.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  27.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|  13.6k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|  13.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6181:9): [True: 13.6k, False: 40]
  |  Branch (6181:32): [True: 332, False: 13.3k]
  |  Branch (6181:52): [True: 41, False: 13.2k]
  ------------------
 6182|    373|		if (*YYCURSOR == '\t') {
  ------------------
  |  |   54|    373|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6182:7): [True: 41, False: 332]
  ------------------
 6183|     41|			spacing |= HEREDOC_USING_TABS;
  ------------------
  |  | 1155|     41|#define HEREDOC_USING_TABS 2
  ------------------
 6184|    332|		} else {
 6185|    332|			spacing |= HEREDOC_USING_SPACES;
  ------------------
  |  | 1154|    332|#define HEREDOC_USING_SPACES 1
  ------------------
 6186|    332|		}
 6187|    373|		++YYCURSOR;
  ------------------
  |  |   54|    373|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    373|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    373|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6188|    373|		++indentation;
 6189|    373|	}
 6190|       |
 6191|  13.3k|	if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   54|  13.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   55|  13.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  13.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6191:6): [True: 40, False: 13.2k]
  ------------------
 6192|     40|		YYCURSOR = saved_cursor;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6193|     40|		RETURN_TOKEN(T_START_HEREDOC);
  ------------------
  |  | 1318|     40|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     40|		token = _token; \
  |  | 1320|     40|		goto emit_token; \
  |  | 1321|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6194|     40|	}
 6195|       |
 6196|       |	/* Check for ending label on the next line */
 6197|  13.2k|	if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) {
  ------------------
  |  |   55|  13.2k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  13.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) {
  ------------------
  |  |   54|  13.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  26.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) {
  ------------------
  |  |   54|  13.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6197:6): [True: 13.2k, False: 31]
  |  Branch (6197:52): [True: 51, False: 13.1k]
  ------------------
 6198|     51|		if (!IS_LABEL_SUCCESSOR(YYCURSOR[heredoc_label->length])) {
  ------------------
  |  |  119|     51|#define IS_LABEL_SUCCESSOR(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || ((c) >= '0' && (c) <= '9') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (119:33): [True: 9, False: 42]
  |  |  |  Branch (119:47): [True: 3, False: 6]
  |  |  |  Branch (119:63): [True: 13, False: 35]
  |  |  |  Branch (119:77): [True: 6, False: 7]
  |  |  |  Branch (119:93): [True: 16, False: 26]
  |  |  |  Branch (119:107): [True: 1, False: 15]
  |  |  |  Branch (119:122): [True: 1, False: 40]
  |  |  |  Branch (119:136): [True: 5, False: 35]
  |  |  ------------------
  ------------------
 6199|     35|			if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) {
  ------------------
  |  | 1154|     35|#define HEREDOC_USING_SPACES 1
  ------------------
              			if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) {
  ------------------
  |  | 1155|     35|#define HEREDOC_USING_TABS 2
  ------------------
  |  Branch (6199:8): [True: 8, False: 27]
  ------------------
 6200|      8|				zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0);
 6201|      8|				if (PARSER_MODE()) {
  ------------------
  |  | 1316|      8|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6202|      2|					RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      2|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      2|		token = _token; \
  |  | 1320|      2|		goto emit_token; \
  |  | 1321|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6203|      2|				}
 6204|      8|			}
 6205|       |
 6206|     33|			YYCURSOR = saved_cursor;
  ------------------
  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6207|     33|			heredoc_label->indentation = indentation;
 6208|       |
 6209|     33|			BEGIN(ST_END_HEREDOC);
  ------------------
  |  |   64|     33|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|     33|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6210|     33|			RETURN_TOKEN(T_START_HEREDOC);
  ------------------
  |  | 1318|     33|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     33|		token = _token; \
  |  | 1320|     33|		goto emit_token; \
  |  | 1321|     33|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6211|     33|		}
 6212|     51|	}
 6213|       |
 6214|  13.2k|	YYCURSOR = saved_cursor;
  ------------------
  |  |   54|  13.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  13.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  13.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6215|       |
 6216|  13.2k|	if (is_heredoc && !SCNG(heredoc_scan_ahead)) {
  ------------------
  |  |   87|  13.1k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  13.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (6216:6): [True: 13.1k, False: 66]
  |  Branch (6216:20): [True: 4.11k, False: 9.06k]
  ------------------
 6217|  4.11k|		zend_lex_state current_state;
 6218|  4.11k|		zend_string *saved_doc_comment = CG(doc_comment);
  ------------------
  |  |   35|  4.11k|# define CG(v) (compiler_globals.v)
  ------------------
 6219|  4.11k|		int heredoc_nesting_level = 1;
 6220|  4.11k|		int first_token = 0;
 6221|  4.11k|		int error = 0;
 6222|       |
 6223|  4.11k|		zend_save_lexical_state(&current_state);
 6224|       |
 6225|  4.11k|		SCNG(heredoc_scan_ahead) = 1;
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6226|  4.11k|		SCNG(heredoc_indentation) = 0;
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6227|  4.11k|		SCNG(heredoc_indentation_uses_spaces) = 0;
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6228|  4.11k|		SCNG(on_event_context) = NULL;
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6229|  4.11k|		LANG_SCNG(on_event) = NULL;
  ------------------
  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  ------------------
 6230|  4.11k|		CG(doc_comment) = NULL;
  ------------------
  |  |   35|  4.11k|# define CG(v) (compiler_globals.v)
  ------------------
 6231|       |
 6232|  4.11k|		zend_ptr_stack_reverse_apply(&current_state.heredoc_label_stack, copy_heredoc_label_stack);
 6233|       |
 6234|  4.11k|		zend_object *prev_exception = EG(exception);
  ------------------
  |  |   45|  4.11k|# define EG(v) (executor_globals.v)
  ------------------
 6235|  4.11k|		EG(exception) = NULL;
  ------------------
  |  |   45|  4.11k|# define EG(v) (executor_globals.v)
  ------------------
 6236|   124k|		while (heredoc_nesting_level) {
  ------------------
  |  Branch (6236:10): [True: 123k, False: 354]
  ------------------
 6237|   123k|			zval zv;
 6238|   123k|			int retval;
 6239|       |
 6240|   123k|			ZVAL_UNDEF(&zv);
  ------------------
  |  | 1055|   123k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|   123k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|   123k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|   123k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|   123k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|   123k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 123k]
  |  |  ------------------
  ------------------
 6241|   123k|			retval = lex_scan(&zv, NULL);
 6242|   123k|			zval_ptr_dtor_nogc(&zv);
 6243|       |
 6244|   123k|			if (EG(exception)) {
  ------------------
  |  |   45|   123k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 3.76k, False: 120k]
  |  |  ------------------
  ------------------
 6245|  3.76k|				zend_clear_exception();
 6246|  3.76k|				break;
 6247|  3.76k|			}
 6248|       |
 6249|   120k|			if (!first_token) {
  ------------------
  |  Branch (6249:8): [True: 4.11k, False: 116k]
  ------------------
 6250|  4.11k|				first_token = retval;
 6251|  4.11k|			}
 6252|       |
 6253|   120k|			switch (retval) {
  ------------------
  |  Branch (6253:12): [True: 9.54k, False: 110k]
  ------------------
 6254|  9.13k|				case T_START_HEREDOC:
  ------------------
  |  Branch (6254:5): [True: 9.13k, False: 111k]
  ------------------
 6255|  9.13k|					++heredoc_nesting_level;
 6256|  9.13k|					break;
 6257|    287|				case T_END_HEREDOC:
  ------------------
  |  Branch (6257:5): [True: 287, False: 119k]
  ------------------
 6258|    287|					--heredoc_nesting_level;
 6259|    287|					break;
 6260|    122|				case END:
  ------------------
  |  Branch (6260:5): [True: 122, False: 120k]
  ------------------
 6261|    122|					heredoc_nesting_level = 0;
 6262|   120k|			}
 6263|   120k|		}
 6264|  4.11k|		EG(exception) = prev_exception;
  ------------------
  |  |   45|  4.11k|# define EG(v) (executor_globals.v)
  ------------------
 6265|       |
 6266|  4.11k|		if (
 6267|  4.11k|		    (first_token == T_VARIABLE
  ------------------
  |  Branch (6267:8): [True: 225, False: 3.89k]
  ------------------
 6268|  3.89k|		     || first_token == T_DOLLAR_OPEN_CURLY_BRACES
  ------------------
  |  Branch (6268:11): [True: 2.41k, False: 1.48k]
  ------------------
 6269|  1.48k|		     || first_token == T_CURLY_OPEN
  ------------------
  |  Branch (6269:11): [True: 13, False: 1.46k]
  ------------------
 6270|  4.11k|		    ) && SCNG(heredoc_indentation)) {
  ------------------
  |  |   87|  2.64k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  2.64k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 1, False: 2.64k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6271|      1|			zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation));
  ------------------
  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6272|      1|			error = 1;
 6273|      1|		}
 6274|       |
 6275|  4.11k|		heredoc_label->indentation = SCNG(heredoc_indentation);
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6276|  4.11k|		heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces);
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6277|       |
 6278|  4.11k|		zend_restore_lexical_state(&current_state);
 6279|  4.11k|		SCNG(heredoc_scan_ahead) = 0;
  ------------------
  |  |   87|  4.11k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6280|  4.11k|		CG(increment_lineno) = 0;
  ------------------
  |  |   35|  4.11k|# define CG(v) (compiler_globals.v)
  ------------------
 6281|  4.11k|		CG(doc_comment) = saved_doc_comment;
  ------------------
  |  |   35|  4.11k|# define CG(v) (compiler_globals.v)
  ------------------
 6282|       |
 6283|  4.11k|		if (PARSER_MODE() && error) {
  ------------------
  |  | 1316|  4.11k|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|  8.23k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 4.11k, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6283:24): [True: 1, False: 4.11k]
  ------------------
 6284|      1|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6285|      1|		}
 6286|  4.11k|	}
 6287|       |
 6288|  13.2k|	RETURN_TOKEN(T_START_HEREDOC);
  ------------------
  |  | 1318|  13.2k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  13.2k|		token = _token; \
  |  | 1320|  13.2k|		goto emit_token; \
  |  | 1321|  13.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6289|  13.2k|}
 6290|      0|#line 6291 "Zend/zend_language_scanner.c"
 6291|     91|yy468:
 6292|     91|		YYDEBUG(468, *YYCURSOR);
 6293|     91|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     91|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     91|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     91|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6294|     91|		if (yych == '\n') goto yy466;
  ------------------
  |  Branch (6294:7): [True: 0, False: 91]
  ------------------
 6295|     91|		goto yy467;
 6296|    130|yy469:
 6297|    130|		YYDEBUG(469, *YYCURSOR);
 6298|    130|		yyaccept = 4;
 6299|    130|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    130|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    130|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    130|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    130|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    130|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    130|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6300|    130|		if (yych == 'A') goto yy570;
  ------------------
  |  Branch (6300:7): [True: 6, False: 124]
  ------------------
 6301|    124|		if (yych == 'a') goto yy570;
  ------------------
  |  Branch (6301:7): [True: 107, False: 17]
  ------------------
 6302|     17|		goto yy48;
 6303|    662|yy470:
 6304|    662|		YYDEBUG(470, *YYCURSOR);
 6305|    662|		yyaccept = 34;
 6306|    662|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    662|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    662|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    662|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    662|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    662|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    662|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6307|    662|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6307:7): [True: 121, False: 541]
  ------------------
 6308|    121|			goto yy47;
 6309|    121|		}
 6310|    541|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6310:7): [True: 0, False: 541]
  ------------------
 6311|    541|yy471:
 6312|    541|		YYDEBUG(471, *YYCURSOR);
 6313|    541|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    541|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    541|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    541|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    541|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    541|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    541|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    541|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    541|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6314|    541|#line 1817 "Zend/zend_language_scanner.l"
 6315|    541|		{
 6316|    541|	RETURN_TOKEN_WITH_IDENT(T_ARRAY);
  ------------------
  |  | 1334|    541|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    541|		token = _token; \
  |  | 1336|    541|		goto emit_token_with_ident; \
  |  | 1337|    541|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6317|    541|}
 6318|      0|#line 6319 "Zend/zend_language_scanner.c"
 6319|     31|yy472:
 6320|     31|		YYDEBUG(472, *YYCURSOR);
 6321|     31|		yyaccept = 35;
 6322|     31|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     31|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6323|     31|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6323:7): [True: 0, False: 31]
  ------------------
 6324|      0|			goto yy47;
 6325|      0|		}
 6326|     31|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6326:7): [True: 0, False: 31]
  ------------------
 6327|     31|yy473:
 6328|     31|		YYDEBUG(473, *YYCURSOR);
 6329|     31|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     31|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6330|     31|#line 1533 "Zend/zend_language_scanner.l"
 6331|     31|		{
 6332|     31|	RETURN_TOKEN_WITH_IDENT(T_BREAK);
  ------------------
  |  | 1334|     31|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     31|		token = _token; \
  |  | 1336|     31|		goto emit_token_with_ident; \
  |  | 1337|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6333|     31|}
 6334|      0|#line 6335 "Zend/zend_language_scanner.c"
 6335|     22|yy474:
 6336|     22|		YYDEBUG(474, *YYCURSOR);
 6337|     22|		yyaccept = 4;
 6338|     22|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     22|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6339|     22|		if (yych == 'B') goto yy571;
  ------------------
  |  Branch (6339:7): [True: 1, False: 21]
  ------------------
 6340|     21|		if (yych == 'b') goto yy571;
  ------------------
  |  Branch (6340:7): [True: 21, False: 0]
  ------------------
 6341|      0|		goto yy48;
 6342|    196|yy475:
 6343|    196|		YYDEBUG(475, *YYCURSOR);
 6344|    196|		yyaccept = 36;
 6345|    196|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    196|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    196|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6346|    196|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6346:7): [True: 0, False: 196]
  ------------------
 6347|      0|			goto yy47;
 6348|      0|		}
 6349|    196|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6349:7): [True: 0, False: 196]
  ------------------
 6350|    196|yy476:
 6351|    196|		YYDEBUG(476, *YYCURSOR);
 6352|    196|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    196|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    196|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    196|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    196|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6353|    196|#line 1441 "Zend/zend_language_scanner.l"
 6354|    196|		{
 6355|    196|	RETURN_TOKEN_WITH_IDENT(T_CATCH);
  ------------------
  |  | 1334|    196|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    196|		token = _token; \
  |  | 1336|    196|		goto emit_token_with_ident; \
  |  | 1337|    196|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6356|    196|}
 6357|      0|#line 6358 "Zend/zend_language_scanner.c"
 6358|  1.63k|yy477:
 6359|  1.63k|		YYDEBUG(477, *YYCURSOR);
 6360|  1.63k|		yyaccept = 37;
 6361|  1.63k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.63k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.63k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.63k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.63k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.63k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.63k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6362|  1.63k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6362:7): [True: 51, False: 1.58k]
  ------------------
 6363|     51|			goto yy47;
 6364|     51|		}
 6365|  1.58k|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6365:7): [True: 9, False: 1.57k]
  ------------------
 6366|  1.58k|yy478:
 6367|  1.58k|		YYDEBUG(478, *YYCURSOR);
 6368|  1.58k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.58k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.58k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.58k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.58k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.58k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.58k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.58k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.58k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6369|  1.58k|#line 1553 "Zend/zend_language_scanner.l"
 6370|  1.58k|		{
 6371|  1.58k|	RETURN_TOKEN_WITH_IDENT(T_CLASS);
  ------------------
  |  | 1334|  1.58k|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|  1.58k|		token = _token; \
  |  | 1336|  1.58k|		goto emit_token_with_ident; \
  |  | 1337|  1.58k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6372|  1.58k|}
 6373|      0|#line 6374 "Zend/zend_language_scanner.c"
 6374|     45|yy479:
 6375|     45|		YYDEBUG(479, *YYCURSOR);
 6376|     45|		yyaccept = 38;
 6377|     45|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     45|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     45|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6378|     45|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6378:7): [True: 0, False: 45]
  ------------------
 6379|      0|			goto yy47;
 6380|      0|		}
 6381|     45|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6381:7): [True: 8, False: 37]
  ------------------
 6382|     45|yy480:
 6383|     45|		YYDEBUG(480, *YYCURSOR);
 6384|     45|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     45|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     45|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6385|     45|#line 1629 "Zend/zend_language_scanner.l"
 6386|     45|		{
 6387|     45|	RETURN_TOKEN_WITH_IDENT(T_CLONE);
  ------------------
  |  | 1334|     45|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     45|		token = _token; \
  |  | 1336|     45|		goto emit_token_with_ident; \
  |  | 1337|     45|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6388|     45|}
 6389|      0|#line 6390 "Zend/zend_language_scanner.c"
 6390|    666|yy481:
 6391|    666|		YYDEBUG(481, *YYCURSOR);
 6392|    666|		yyaccept = 39;
 6393|    666|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    666|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    666|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    666|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    666|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    666|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    666|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6394|    666|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6394:7): [True: 147, False: 519]
  ------------------
 6395|    147|			goto yy47;
 6396|    147|		}
 6397|    519|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6397:7): [True: 1, False: 518]
  ------------------
 6398|    519|yy482:
 6399|    519|		YYDEBUG(482, *YYCURSOR);
 6400|    519|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    519|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    519|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    519|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    519|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    519|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    519|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    519|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    519|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6401|    519|#line 1414 "Zend/zend_language_scanner.l"
 6402|    519|		{
 6403|    519|	RETURN_TOKEN_WITH_IDENT(T_CONST);
  ------------------
  |  | 1334|    519|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    519|		token = _token; \
  |  | 1336|    519|		goto emit_token_with_ident; \
  |  | 1337|    519|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6404|    519|}
 6405|      0|#line 6406 "Zend/zend_language_scanner.c"
 6406|      4|yy483:
 6407|      4|		YYDEBUG(483, *YYCURSOR);
 6408|      4|		yyaccept = 4;
 6409|      4|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6410|      4|		if (yych == 'N') goto yy572;
  ------------------
  |  Branch (6410:7): [True: 0, False: 4]
  ------------------
 6411|      4|		if (yych == 'n') goto yy572;
  ------------------
  |  Branch (6411:7): [True: 2, False: 2]
  ------------------
 6412|      2|		goto yy48;
 6413|    115|yy484:
 6414|    115|		YYDEBUG(484, *YYCURSOR);
 6415|    115|		yyaccept = 4;
 6416|    115|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    115|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    115|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    115|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    115|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    115|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    115|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6417|    115|		if (yych == 'R') goto yy573;
  ------------------
  |  Branch (6417:7): [True: 1, False: 114]
  ------------------
 6418|    114|		if (yych == 'r') goto yy573;
  ------------------
  |  Branch (6418:7): [True: 101, False: 13]
  ------------------
 6419|     13|		goto yy48;
 6420|     13|yy485:
 6421|     13|		YYDEBUG(485, *YYCURSOR);
 6422|     13|		yyaccept = 4;
 6423|     13|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6424|     13|		if (yych == 'L') goto yy574;
  ------------------
  |  Branch (6424:7): [True: 0, False: 13]
  ------------------
 6425|     13|		if (yych == 'l') goto yy574;
  ------------------
  |  Branch (6425:7): [True: 13, False: 0]
  ------------------
 6426|      0|		goto yy48;
 6427|      5|yy486:
 6428|      5|		YYDEBUG(486, *YYCURSOR);
 6429|      5|		yyaccept = 4;
 6430|      5|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      5|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6431|      5|		if (yych == 'F') goto yy575;
  ------------------
  |  Branch (6431:7): [True: 0, False: 5]
  ------------------
 6432|      5|		if (yych == 'f') goto yy575;
  ------------------
  |  Branch (6432:7): [True: 5, False: 0]
  ------------------
 6433|      0|		goto yy48;
 6434|     10|yy487:
 6435|     10|		YYDEBUG(487, *YYCURSOR);
 6436|     10|		yyaccept = 40;
 6437|     10|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     10|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6438|     10|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6438:7): [True: 1, False: 9]
  ------------------
 6439|      1|			goto yy47;
 6440|      1|		}
 6441|      9|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6441:7): [True: 0, False: 9]
  ------------------
 6442|      9|yy488:
 6443|      9|		YYDEBUG(488, *YYCURSOR);
 6444|      9|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6445|      9|#line 1757 "Zend/zend_language_scanner.l"
 6446|      9|		{
 6447|      9|	RETURN_TOKEN_WITH_IDENT(T_EMPTY);
  ------------------
  |  | 1334|      9|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      9|		token = _token; \
  |  | 1336|      9|		goto emit_token_with_ident; \
  |  | 1337|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6448|      9|}
 6449|      0|#line 6450 "Zend/zend_language_scanner.c"
 6450|      6|yy489:
 6451|      6|		YYDEBUG(489, *YYCURSOR);
 6452|      6|		yyaccept = 4;
 6453|      6|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      6|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6454|      6|		if (yych == 'C') goto yy577;
  ------------------
  |  Branch (6454:7): [True: 1, False: 5]
  ------------------
 6455|      5|		if (yych == 'c') goto yy577;
  ------------------
  |  Branch (6455:7): [True: 2, False: 3]
  ------------------
 6456|      3|		goto yy48;
 6457|    100|yy490:
 6458|    100|		YYDEBUG(490, *YYCURSOR);
 6459|    100|		yyaccept = 4;
 6460|    100|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    100|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    100|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    100|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    100|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6461|    100|		if (yych == 'R') goto yy578;
  ------------------
  |  Branch (6461:7): [True: 3, False: 97]
  ------------------
 6462|     97|		if (yych == 'r') goto yy578;
  ------------------
  |  Branch (6462:7): [True: 83, False: 14]
  ------------------
 6463|     14|		goto yy48;
 6464|     14|yy491:
 6465|      9|		YYDEBUG(491, *YYCURSOR);
 6466|      9|		yyaccept = 41;
 6467|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6468|      9|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6468:7): [True: 0, False: 9]
  ------------------
 6469|      0|			goto yy47;
 6470|      0|		}
 6471|      9|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6471:7): [True: 0, False: 9]
  ------------------
 6472|      9|yy492:
 6473|      9|		YYDEBUG(492, *YYCURSOR);
 6474|      9|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6475|      9|#line 1461 "Zend/zend_language_scanner.l"
 6476|      9|		{
 6477|      9|	RETURN_TOKEN_WITH_IDENT(T_ENDIF);
  ------------------
  |  | 1334|      9|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      9|		token = _token; \
  |  | 1336|      9|		goto emit_token_with_ident; \
  |  | 1337|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6478|      9|}
 6479|      0|#line 6480 "Zend/zend_language_scanner.c"
 6480|      0|yy493:
 6481|      0|		YYDEBUG(493, *YYCURSOR);
 6482|      0|		yyaccept = 4;
 6483|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6484|      0|		if (yych == 'I') goto yy580;
  ------------------
  |  Branch (6484:7): [True: 0, False: 0]
  ------------------
 6485|      0|		if (yych == 'i') goto yy580;
  ------------------
  |  Branch (6485:7): [True: 0, False: 0]
  ------------------
 6486|      0|		goto yy48;
 6487|      3|yy494:
 6488|      3|		YYDEBUG(494, *YYCURSOR);
 6489|      3|		yyaccept = 4;
 6490|      3|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      3|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6491|      3|		if (yych == 'I') goto yy581;
  ------------------
  |  Branch (6491:7): [True: 2, False: 1]
  ------------------
 6492|      1|		if (yych == 'i') goto yy581;
  ------------------
  |  Branch (6492:7): [True: 0, False: 1]
  ------------------
 6493|      1|		goto yy48;
 6494|  3.71k|yy495:
 6495|  3.71k|		YYDEBUG(495, *YYCURSOR);
 6496|  3.71k|		++YYCURSOR;
  ------------------
  |  |   54|  3.71k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.71k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.71k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6497|  3.71k|		YYFILL(10);
  ------------------
  |  |   53|  3.71k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  3.71k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.71k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.71k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  3.71k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.71k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.71k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  3.71k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 3.71k]
  |  |  ------------------
  ------------------
 6498|  3.71k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  3.71k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.71k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.71k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6499|  3.71k|		YYDEBUG(496, *YYCURSOR);
 6500|  3.71k|		if (yych <= 'E') {
  ------------------
  |  Branch (6500:7): [True: 3.37k, False: 340]
  ------------------
 6501|  3.37k|			if (yych <= ' ') {
  ------------------
  |  Branch (6501:8): [True: 537, False: 2.83k]
  ------------------
 6502|    537|				if (yych <= '\f') {
  ------------------
  |  Branch (6502:9): [True: 201, False: 336]
  ------------------
 6503|    201|					if (yych <= 0x08) goto yy86;
  ------------------
  |  Branch (6503:10): [True: 57, False: 144]
  ------------------
 6504|    144|					if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (6504:10): [True: 135, False: 9]
  ------------------
 6505|      9|					goto yy86;
 6506|    336|				} else {
 6507|    336|					if (yych <= '\r') goto yy495;
  ------------------
  |  Branch (6507:10): [True: 219, False: 117]
  ------------------
 6508|    117|					if (yych <= 0x1F) goto yy86;
  ------------------
  |  Branch (6508:10): [True: 18, False: 99]
  ------------------
 6509|     99|					goto yy495;
 6510|    117|				}
 6511|  2.83k|			} else {
 6512|  2.83k|				if (yych <= '.') {
  ------------------
  |  Branch (6512:9): [True: 2.58k, False: 257]
  ------------------
 6513|  2.58k|					if (yych != '#') goto yy86;
  ------------------
  |  Branch (6513:10): [True: 85, False: 2.49k]
  ------------------
 6514|  2.58k|				} else {
 6515|    257|					if (yych <= '/') goto yy498;
  ------------------
  |  Branch (6515:10): [True: 178, False: 79]
  ------------------
 6516|     79|					if (yych <= '@') goto yy86;
  ------------------
  |  Branch (6516:10): [True: 37, False: 42]
  ------------------
 6517|     42|					if (yych <= 'D') goto yy582;
  ------------------
  |  Branch (6517:10): [True: 24, False: 18]
  ------------------
 6518|     18|					goto yy584;
 6519|     42|				}
 6520|  2.83k|			}
 6521|  3.37k|		} else {
 6522|    340|			if (yych <= '`') {
  ------------------
  |  Branch (6522:8): [True: 145, False: 195]
  ------------------
 6523|    145|				if (yych <= 'Z') {
  ------------------
  |  Branch (6523:9): [True: 140, False: 5]
  ------------------
 6524|    140|					if (yych == 'I') goto yy585;
  ------------------
  |  Branch (6524:10): [True: 14, False: 126]
  ------------------
 6525|    126|					goto yy582;
 6526|    140|				} else {
 6527|      5|					if (yych == '_') goto yy582;
  ------------------
  |  Branch (6527:10): [True: 3, False: 2]
  ------------------
 6528|      2|					goto yy86;
 6529|      5|				}
 6530|    195|			} else {
 6531|    195|				if (yych <= 'h') {
  ------------------
  |  Branch (6531:9): [True: 79, False: 116]
  ------------------
 6532|     79|					if (yych == 'e') goto yy584;
  ------------------
  |  Branch (6532:10): [True: 57, False: 22]
  ------------------
 6533|     22|					goto yy582;
 6534|    116|				} else {
 6535|    116|					if (yych <= 'i') goto yy585;
  ------------------
  |  Branch (6535:10): [True: 50, False: 66]
  ------------------
 6536|     66|					if (yych <= 'z') goto yy582;
  ------------------
  |  Branch (6536:10): [True: 34, False: 32]
  ------------------
 6537|     32|					if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (6537:10): [True: 5, False: 27]
  ------------------
 6538|     27|					goto yy582;
 6539|     32|				}
 6540|    195|			}
 6541|    340|		}
 6542|  2.50k|yy497:
 6543|  2.50k|		YYDEBUG(497, *YYCURSOR);
 6544|  2.50k|		++YYCURSOR;
  ------------------
  |  |   54|  2.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6545|  2.50k|		YYFILL(1);
  ------------------
  |  |   53|  2.50k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.50k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.50k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.50k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.50k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.50k]
  |  |  ------------------
  ------------------
 6546|  2.50k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6547|  2.50k|		if (yych <= '\f') {
  ------------------
  |  Branch (6547:7): [True: 1.70k, False: 804]
  ------------------
 6548|  1.70k|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (6548:8): [True: 6, False: 1.69k]
  ------------------
 6549|  1.69k|			if (yych == '\n') goto yy588;
  ------------------
  |  Branch (6549:8): [True: 1.67k, False: 25]
  ------------------
 6550|     25|			goto yy586;
 6551|  1.69k|		} else {
 6552|    804|			if (yych <= '\r') goto yy588;
  ------------------
  |  Branch (6552:8): [True: 335, False: 469]
  ------------------
 6553|    469|			if (yych == '[') goto yy86;
  ------------------
  |  Branch (6553:8): [True: 1, False: 468]
  ------------------
 6554|    468|			goto yy586;
 6555|    469|		}
 6556|    211|yy498:
 6557|    211|		YYDEBUG(498, *YYCURSOR);
 6558|    211|		++YYCURSOR;
  ------------------
  |  |   54|    211|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    211|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    211|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6559|    211|		YYFILL(1);
  ------------------
  |  |   53|    211|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    211|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    211|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    211|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    211|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    211|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    211|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    211|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 211]
  |  |  ------------------
  ------------------
 6560|    211|		yych = *YYCURSOR;
  ------------------
  |  |   54|    211|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    211|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    211|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6561|    211|		if (yych == '*') goto yy590;
  ------------------
  |  Branch (6561:7): [True: 127, False: 84]
  ------------------
 6562|     84|		if (yych == '/') goto yy586;
  ------------------
  |  Branch (6562:7): [True: 52, False: 32]
  ------------------
 6563|     32|		goto yy86;
 6564|    316|yy499:
 6565|    316|		YYDEBUG(499, *YYCURSOR);
 6566|    316|		yyaccept = 4;
 6567|    316|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    316|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    316|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    316|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    316|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    316|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    316|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6568|    316|		if (yych == 'D') goto yy592;
  ------------------
  |  Branch (6568:7): [True: 2, False: 314]
  ------------------
 6569|    314|		if (yych == 'd') goto yy592;
  ------------------
  |  Branch (6569:7): [True: 302, False: 12]
  ------------------
 6570|     12|		goto yy48;
 6571|    119|yy500:
 6572|    119|		YYDEBUG(500, *YYCURSOR);
 6573|    119|		yyaccept = 42;
 6574|    119|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    119|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    119|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    119|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    119|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    119|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    119|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6575|    119|		if (yych <= '\\') {
  ------------------
  |  Branch (6575:7): [True: 64, False: 55]
  ------------------
 6576|     64|			if (yych <= 'K') {
  ------------------
  |  Branch (6576:8): [True: 64, False: 0]
  ------------------
 6577|     64|				if (yych <= '/') goto yy501;
  ------------------
  |  Branch (6577:9): [True: 56, False: 8]
  ------------------
 6578|      8|				if (yych <= '9') goto yy47;
  ------------------
  |  Branch (6578:9): [True: 0, False: 8]
  ------------------
 6579|      8|				if (yych >= 'A') goto yy47;
  ------------------
  |  Branch (6579:9): [True: 4, False: 4]
  ------------------
 6580|      8|			} else {
 6581|      0|				if (yych <= 'L') goto yy593;
  ------------------
  |  Branch (6581:9): [True: 0, False: 0]
  ------------------
 6582|      0|				if (yych <= 'Z') goto yy47;
  ------------------
  |  Branch (6582:9): [True: 0, False: 0]
  ------------------
 6583|      0|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (6583:9): [True: 0, False: 0]
  ------------------
 6584|      0|			}
 6585|     64|		} else {
 6586|     55|			if (yych <= 'k') {
  ------------------
  |  Branch (6586:8): [True: 8, False: 47]
  ------------------
 6587|      8|				if (yych == '_') goto yy47;
  ------------------
  |  Branch (6587:9): [True: 1, False: 7]
  ------------------
 6588|      7|				if (yych >= 'a') goto yy47;
  ------------------
  |  Branch (6588:9): [True: 1, False: 6]
  ------------------
 6589|     47|			} else {
 6590|     47|				if (yych <= 'l') goto yy593;
  ------------------
  |  Branch (6590:9): [True: 40, False: 7]
  ------------------
 6591|      7|				if (yych <= 'z') goto yy47;
  ------------------
  |  Branch (6591:9): [True: 6, False: 1]
  ------------------
 6592|      1|				if (yych >= 0x80) goto yy47;
  ------------------
  |  Branch (6592:9): [True: 0, False: 1]
  ------------------
 6593|      1|			}
 6594|     55|		}
 6595|     67|yy501:
 6596|     67|		YYDEBUG(501, *YYCURSOR);
 6597|     67|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     67|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6598|     67|#line 1773 "Zend/zend_language_scanner.l"
 6599|     67|		{
 6600|     67|	RETURN_TOKEN_WITH_IDENT(T_FINAL);
  ------------------
  |  | 1334|     67|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     67|		token = _token; \
  |  | 1336|     67|		goto emit_token_with_ident; \
  |  | 1337|     67|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6601|     67|}
 6602|      0|#line 6603 "Zend/zend_language_scanner.c"
 6603|    214|yy502:
 6604|    214|		YYDEBUG(502, *YYCURSOR);
 6605|    214|		yyaccept = 4;
 6606|    214|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    214|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    214|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    214|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    214|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    214|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    214|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6607|    214|		if (yych == 'C') goto yy594;
  ------------------
  |  Branch (6607:7): [True: 1, False: 213]
  ------------------
 6608|    213|		if (yych == 'c') goto yy594;
  ------------------
  |  Branch (6608:7): [True: 211, False: 2]
  ------------------
 6609|      2|		goto yy48;
 6610|  1.71k|yy503:
 6611|  1.71k|		YYDEBUG(503, *YYCURSOR);
 6612|  1.71k|		yyaccept = 4;
 6613|  1.71k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.71k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.71k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.71k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.71k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.71k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.71k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6614|  1.71k|		if (yych == 'I') goto yy595;
  ------------------
  |  Branch (6614:7): [True: 0, False: 1.71k]
  ------------------
 6615|  1.71k|		if (yych == 'i') goto yy595;
  ------------------
  |  Branch (6615:7): [True: 1.70k, False: 10]
  ------------------
 6616|     10|		goto yy48;
 6617|     69|yy504:
 6618|     69|		YYDEBUG(504, *YYCURSOR);
 6619|     69|		yyaccept = 4;
 6620|     69|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     69|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     69|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6621|     69|		if (yych == 'L') goto yy596;
  ------------------
  |  Branch (6621:7): [True: 37, False: 32]
  ------------------
 6622|     32|		if (yych == 'l') goto yy596;
  ------------------
  |  Branch (6622:7): [True: 28, False: 4]
  ------------------
 6623|      4|		goto yy48;
 6624|    224|yy505:
 6625|    224|		YYDEBUG(505, *YYCURSOR);
 6626|    224|		yyaccept = 4;
 6627|    224|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    224|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    224|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    224|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    224|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    224|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    224|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6628|    224|		if (yych == 'M') goto yy598;
  ------------------
  |  Branch (6628:7): [True: 15, False: 209]
  ------------------
 6629|    209|		if (yych == 'm') goto yy598;
  ------------------
  |  Branch (6629:7): [True: 185, False: 24]
  ------------------
 6630|     24|		goto yy48;
 6631|     55|yy506:
 6632|     55|		YYDEBUG(506, *YYCURSOR);
 6633|     55|		yyaccept = 4;
 6634|     55|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     55|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     55|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6635|     55|		if (yych == 'D') goto yy599;
  ------------------
  |  Branch (6635:7): [True: 0, False: 55]
  ------------------
 6636|     55|		if (yych == 'd') goto yy599;
  ------------------
  |  Branch (6636:7): [True: 51, False: 4]
  ------------------
 6637|      4|		goto yy48;
 6638|     26|yy507:
 6639|     26|		YYDEBUG(507, *YYCURSOR);
 6640|     26|		yyaccept = 4;
 6641|     26|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     26|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6642|     26|		if (yych == 'N') goto yy600;
  ------------------
  |  Branch (6642:7): [True: 0, False: 26]
  ------------------
 6643|     26|		if (yych == 'n') goto yy600;
  ------------------
  |  Branch (6643:7): [True: 24, False: 2]
  ------------------
 6644|      2|		goto yy48;
 6645|     17|yy508:
 6646|     17|		YYDEBUG(508, *YYCURSOR);
 6647|     17|		yyaccept = 4;
 6648|     17|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     17|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6649|     17|		if (yych == 'A') goto yy601;
  ------------------
  |  Branch (6649:7): [True: 0, False: 17]
  ------------------
 6650|     17|		if (yych == 'a') goto yy601;
  ------------------
  |  Branch (6650:7): [True: 15, False: 2]
  ------------------
 6651|      2|		goto yy48;
 6652|    222|yy509:
 6653|    222|		YYDEBUG(509, *YYCURSOR);
 6654|    222|		yyaccept = 4;
 6655|    222|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    222|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    222|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    222|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    222|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    222|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    222|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6656|    222|		if (yych == 'F') goto yy602;
  ------------------
  |  Branch (6656:7): [True: 11, False: 211]
  ------------------
 6657|    211|		if (yych == 'f') goto yy602;
  ------------------
  |  Branch (6657:7): [True: 211, False: 0]
  ------------------
 6658|      0|		goto yy48;
 6659|     73|yy510:
 6660|     73|		YYDEBUG(510, *YYCURSOR);
 6661|     73|		yyaccept = 43;
 6662|     73|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     73|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     73|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     73|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     73|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6663|     73|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6663:7): [True: 1, False: 72]
  ------------------
 6664|      1|			goto yy47;
 6665|      1|		}
 6666|     72|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6666:7): [True: 0, False: 72]
  ------------------
 6667|     72|yy511:
 6668|     72|		YYDEBUG(511, *YYCURSOR);
 6669|     72|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     72|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     72|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     72|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     72|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6670|     72|#line 1753 "Zend/zend_language_scanner.l"
 6671|     72|		{
 6672|     72|	RETURN_TOKEN_WITH_IDENT(T_ISSET);
  ------------------
  |  | 1334|     72|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     72|		token = _token; \
  |  | 1336|     72|		goto emit_token_with_ident; \
  |  | 1337|     72|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6673|     72|}
 6674|      0|#line 6675 "Zend/zend_language_scanner.c"
 6675|     58|yy512:
 6676|     58|		YYDEBUG(512, *YYCURSOR);
 6677|     58|		yyaccept = 44;
 6678|     58|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     58|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6679|     58|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6679:7): [True: 12, False: 46]
  ------------------
 6680|     12|			goto yy47;
 6681|     12|		}
 6682|     46|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6682:7): [True: 0, False: 46]
  ------------------
 6683|     46|yy513:
 6684|     46|		YYDEBUG(513, *YYCURSOR);
 6685|     46|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     46|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6686|     46|#line 1517 "Zend/zend_language_scanner.l"
 6687|     46|		{
 6688|     46|	RETURN_TOKEN_WITH_IDENT(T_MATCH);
  ------------------
  |  | 1334|     46|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     46|		token = _token; \
  |  | 1336|     46|		goto emit_token_with_ident; \
  |  | 1337|     46|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6689|     46|}
 6690|      0|#line 6691 "Zend/zend_language_scanner.c"
 6691|    293|yy514:
 6692|    293|		YYDEBUG(514, *YYCURSOR);
 6693|    293|		yyaccept = 4;
 6694|    293|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    293|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    293|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    293|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    293|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    293|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    293|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6695|    293|		if (yych == 'P') goto yy603;
  ------------------
  |  Branch (6695:7): [True: 7, False: 286]
  ------------------
 6696|    286|		if (yych == 'p') goto yy603;
  ------------------
  |  Branch (6696:7): [True: 285, False: 1]
  ------------------
 6697|      1|		goto yy48;
 6698|    282|yy515:
 6699|    282|		YYDEBUG(515, *YYCURSOR);
 6700|    282|		yyaccept = 45;
 6701|    282|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    282|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    282|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6702|    282|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6702:7): [True: 61, False: 221]
  ------------------
 6703|     61|			goto yy47;
 6704|     61|		}
 6705|    221|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6705:7): [True: 0, False: 221]
  ------------------
 6706|    221|yy516:
 6707|    221|		YYDEBUG(516, *YYCURSOR);
 6708|    221|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    221|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    221|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    221|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    221|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    221|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    221|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    221|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    221|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6709|    221|#line 1549 "Zend/zend_language_scanner.l"
 6710|    221|		{
 6711|    221|	RETURN_TOKEN_WITH_IDENT(T_PRINT);
  ------------------
  |  | 1334|    221|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    221|		token = _token; \
  |  | 1336|    221|		goto emit_token_with_ident; \
  |  | 1337|    221|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6712|    221|}
 6713|      0|#line 6714 "Zend/zend_language_scanner.c"
 6714|    646|yy517:
 6715|    646|		YYDEBUG(517, *YYCURSOR);
 6716|    646|		yyaccept = 4;
 6717|    646|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    646|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    646|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    646|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    646|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    646|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    646|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6718|    646|		if (yych == 'T') goto yy604;
  ------------------
  |  Branch (6718:7): [True: 0, False: 646]
  ------------------
 6719|    646|		if (yych == 't') goto yy604;
  ------------------
  |  Branch (6719:7): [True: 528, False: 118]
  ------------------
 6720|    118|		goto yy48;
 6721|    118|yy518:
 6722|    110|		YYDEBUG(518, *YYCURSOR);
 6723|    110|		yyaccept = 4;
 6724|    110|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    110|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    110|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6725|    110|		if (yych == 'C') goto yy605;
  ------------------
  |  Branch (6725:7): [True: 0, False: 110]
  ------------------
 6726|    110|		if (yych == 'c') goto yy605;
  ------------------
  |  Branch (6726:7): [True: 110, False: 0]
  ------------------
 6727|      0|		goto yy48;
 6728|    889|yy519:
 6729|    889|		YYDEBUG(519, *YYCURSOR);
 6730|    889|		yyaccept = 4;
 6731|    889|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    889|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    889|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    889|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    889|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    889|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    889|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6732|    889|		if (yych == 'C') goto yy606;
  ------------------
  |  Branch (6732:7): [True: 0, False: 889]
  ------------------
 6733|    889|		if (yych == 'c') goto yy606;
  ------------------
  |  Branch (6733:7): [True: 876, False: 13]
  ------------------
 6734|     13|		goto yy48;
 6735|    165|yy520:
 6736|    165|		YYDEBUG(520, *YYCURSOR);
 6737|    165|		yyaccept = 4;
 6738|    165|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    165|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    165|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    165|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    165|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    165|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    165|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6739|    165|		if (yych == 'N') goto yy608;
  ------------------
  |  Branch (6739:7): [True: 0, False: 165]
  ------------------
 6740|    165|		if (yych == 'n') goto yy608;
  ------------------
  |  Branch (6740:7): [True: 163, False: 2]
  ------------------
 6741|      2|		goto yy48;
 6742|    127|yy521:
 6743|    127|		YYDEBUG(521, *YYCURSOR);
 6744|    127|		yyaccept = 4;
 6745|    127|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    127|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    127|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    127|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    127|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    127|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    127|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6746|    127|		if (yych == 'R') goto yy609;
  ------------------
  |  Branch (6746:7): [True: 3, False: 124]
  ------------------
 6747|    124|		if (yych == 'r') goto yy609;
  ------------------
  |  Branch (6747:7): [True: 108, False: 16]
  ------------------
 6748|     16|		goto yy48;
 6749|    372|yy522:
 6750|    372|		YYDEBUG(522, *YYCURSOR);
 6751|    372|		yyaccept = 4;
 6752|    372|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    372|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    372|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6753|    372|		if (yych == 'N') goto yy610;
  ------------------
  |  Branch (6753:7): [True: 0, False: 372]
  ------------------
 6754|    372|		if (yych == 'n') goto yy610;
  ------------------
  |  Branch (6754:7): [True: 372, False: 0]
  ------------------
 6755|      0|		goto yy48;
 6756|    264|yy523:
 6757|    264|		YYDEBUG(523, *YYCURSOR);
 6758|    264|		yyaccept = 4;
 6759|    264|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    264|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    264|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    264|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    264|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    264|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    264|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6760|    264|		if (yych == 'C') goto yy612;
  ------------------
  |  Branch (6760:7): [True: 0, False: 264]
  ------------------
 6761|    264|		if (yych == 'c') goto yy612;
  ------------------
  |  Branch (6761:7): [True: 251, False: 13]
  ------------------
 6762|     13|		goto yy48;
 6763|     35|yy524:
 6764|     35|		YYDEBUG(524, *YYCURSOR);
 6765|     35|		yyaccept = 4;
 6766|     35|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     35|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6767|     35|		if (yych == 'H') goto yy614;
  ------------------
  |  Branch (6767:7): [True: 0, False: 35]
  ------------------
 6768|     35|		if (yych == 'h') goto yy614;
  ------------------
  |  Branch (6768:7): [True: 21, False: 14]
  ------------------
 6769|     14|		goto yy48;
 6770|     91|yy525:
 6771|     91|		YYDEBUG(525, *YYCURSOR);
 6772|     91|		yyaccept = 46;
 6773|     91|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     91|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     91|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     91|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     91|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     91|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     91|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6774|     91|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6774:7): [True: 22, False: 69]
  ------------------
 6775|     22|			goto yy47;
 6776|     22|		}
 6777|     69|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6777:7): [True: 0, False: 69]
  ------------------
 6778|     69|yy526:
 6779|     69|		YYDEBUG(526, *YYCURSOR);
 6780|     69|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     69|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     69|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6781|     69|#line 1449 "Zend/zend_language_scanner.l"
 6782|     69|		{
 6783|     69|	RETURN_TOKEN_WITH_IDENT(T_THROW);
  ------------------
  |  | 1334|     69|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     69|		token = _token; \
  |  | 1336|     69|		goto emit_token_with_ident; \
  |  | 1337|     69|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6784|     69|}
 6785|      0|#line 6786 "Zend/zend_language_scanner.c"
 6786|    193|yy527:
 6787|    193|		YYDEBUG(527, *YYCURSOR);
 6788|    193|		yyaccept = 47;
 6789|    193|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    193|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    193|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    193|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    193|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    193|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    193|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6790|    193|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6790:7): [True: 28, False: 165]
  ------------------
 6791|     28|			goto yy47;
 6792|     28|		}
 6793|    165|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6793:7): [True: 0, False: 165]
  ------------------
 6794|    165|yy528:
 6795|    165|		YYDEBUG(528, *YYCURSOR);
 6796|    165|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    165|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    165|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    165|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    165|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    165|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    165|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    165|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    165|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6797|    165|#line 1561 "Zend/zend_language_scanner.l"
 6798|    165|		{
 6799|    165|	RETURN_TOKEN_WITH_IDENT(T_TRAIT);
  ------------------
  |  | 1334|    165|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    165|		token = _token; \
  |  | 1336|    165|		goto emit_token_with_ident; \
  |  | 1337|    165|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6800|    165|}
 6801|      0|#line 6802 "Zend/zend_language_scanner.c"
 6802|    168|yy529:
 6803|    168|		YYDEBUG(529, *YYCURSOR);
 6804|    168|		yyaccept = 48;
 6805|    168|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    168|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    168|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6806|    168|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6806:7): [True: 9, False: 159]
  ------------------
 6807|      9|			goto yy47;
 6808|      9|		}
 6809|    159|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6809:7): [True: 1, False: 158]
  ------------------
 6810|    159|yy530:
 6811|    159|		YYDEBUG(530, *YYCURSOR);
 6812|    159|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    159|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    159|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6813|    159|#line 1805 "Zend/zend_language_scanner.l"
 6814|    159|		{
 6815|    159|	RETURN_TOKEN_WITH_IDENT(T_UNSET);
  ------------------
  |  | 1334|    159|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    159|		token = _token; \
  |  | 1336|    159|		goto emit_token_with_ident; \
  |  | 1337|    159|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6816|    159|}
 6817|      0|#line 6818 "Zend/zend_language_scanner.c"
 6818|     29|yy531:
 6819|     29|		YYDEBUG(531, *YYCURSOR);
 6820|     29|		yyaccept = 49;
 6821|     29|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     29|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6822|     29|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6822:7): [True: 8, False: 21]
  ------------------
 6823|      8|			goto yy47;
 6824|      8|		}
 6825|     21|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6825:7): [True: 0, False: 21]
  ------------------
 6826|     21|yy532:
 6827|     21|		YYDEBUG(532, *YYCURSOR);
 6828|     21|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     21|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6829|     21|#line 1469 "Zend/zend_language_scanner.l"
 6830|     21|		{
 6831|     21|	RETURN_TOKEN_WITH_IDENT(T_WHILE);
  ------------------
  |  | 1334|     21|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     21|		token = _token; \
  |  | 1336|     21|		goto emit_token_with_ident; \
  |  | 1337|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6832|     21|}
 6833|      0|#line 6834 "Zend/zend_language_scanner.c"
 6834|  1.19k|yy533:
 6835|  1.19k|		YYDEBUG(533, *YYCURSOR);
 6836|  1.19k|		yyaccept = 50;
 6837|  1.19k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.19k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.19k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6838|  1.19k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (6838:7): [True: 14, False: 1.17k]
  ------------------
 6839|     14|			goto yy47;
 6840|     14|		}
 6841|  1.17k|		if (yych <= ' ') {
  ------------------
  |  Branch (6841:7): [True: 379, False: 800]
  ------------------
 6842|    379|			if (yych <= '\f') {
  ------------------
  |  Branch (6842:8): [True: 258, False: 121]
  ------------------
 6843|    258|				if (yych <= 0x08) goto yy534;
  ------------------
  |  Branch (6843:9): [True: 5, False: 253]
  ------------------
 6844|    253|				if (yych <= '\n') goto yy616;
  ------------------
  |  Branch (6844:9): [True: 252, False: 1]
  ------------------
 6845|    253|			} else {
 6846|    121|				if (yych <= '\r') goto yy616;
  ------------------
  |  Branch (6846:9): [True: 15, False: 106]
  ------------------
 6847|    106|				if (yych >= ' ') goto yy616;
  ------------------
  |  Branch (6847:9): [True: 101, False: 5]
  ------------------
 6848|    106|			}
 6849|    800|		} else {
 6850|    800|			if (yych <= '.') {
  ------------------
  |  Branch (6850:8): [True: 719, False: 81]
  ------------------
 6851|    719|				if (yych == '#') goto yy618;
  ------------------
  |  Branch (6851:9): [True: 703, False: 16]
  ------------------
 6852|    719|			} else {
 6853|     81|				if (yych <= '/') goto yy619;
  ------------------
  |  Branch (6853:9): [True: 3, False: 78]
  ------------------
 6854|     78|				if (yych == '\\') goto yy164;
  ------------------
  |  Branch (6854:9): [True: 2, False: 76]
  ------------------
 6855|     78|			}
 6856|    800|		}
 6857|  1.02k|yy534:
 6858|  1.02k|		YYDEBUG(534, *YYCURSOR);
 6859|  1.02k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.02k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.02k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 6860|  1.02k|#line 1433 "Zend/zend_language_scanner.l"
 6861|  1.02k|		{
 6862|  1.02k|	RETURN_TOKEN_WITH_IDENT(T_YIELD);
  ------------------
  |  | 1334|  1.02k|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|  1.02k|		token = _token; \
  |  | 1336|  1.02k|		goto emit_token_with_ident; \
  |  | 1337|  1.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6863|  1.02k|}
 6864|      0|#line 6865 "Zend/zend_language_scanner.c"
 6865|     69|yy535:
 6866|     69|		YYDEBUG(535, *YYCURSOR);
 6867|     69|		yyaccept = 4;
 6868|     69|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     69|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     69|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     69|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     69|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6869|     69|		if (yych == 'S') goto yy620;
  ------------------
  |  Branch (6869:7): [True: 61, False: 8]
  ------------------
 6870|      8|		if (yych == 's') goto yy620;
  ------------------
  |  Branch (6870:7): [True: 6, False: 2]
  ------------------
 6871|      2|		goto yy48;
 6872|     41|yy536:
 6873|     41|		YYDEBUG(536, *YYCURSOR);
 6874|     41|		yyaccept = 4;
 6875|     41|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     41|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6876|     41|		if (yych == '_') goto yy621;
  ------------------
  |  Branch (6876:7): [True: 41, False: 0]
  ------------------
 6877|      0|		goto yy48;
 6878|     45|yy537:
 6879|     45|		YYDEBUG(537, *YYCURSOR);
 6880|     45|		yyaccept = 4;
 6881|     45|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     45|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     45|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6882|     45|		if (yych == 'E') goto yy622;
  ------------------
  |  Branch (6882:7): [True: 40, False: 5]
  ------------------
 6883|      5|		if (yych == 'e') goto yy622;
  ------------------
  |  Branch (6883:7): [True: 3, False: 2]
  ------------------
 6884|      2|		goto yy48;
 6885|     16|yy538:
 6886|     16|		YYDEBUG(538, *YYCURSOR);
 6887|     16|		yyaccept = 4;
 6888|     16|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     16|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6889|     16|		if (yych == 'C') goto yy623;
  ------------------
  |  Branch (6889:7): [True: 11, False: 5]
  ------------------
 6890|      5|		if (yych == 'c') goto yy623;
  ------------------
  |  Branch (6890:7): [True: 5, False: 0]
  ------------------
 6891|      0|		goto yy48;
 6892|     42|yy539:
 6893|     42|		YYDEBUG(539, *YYCURSOR);
 6894|     42|		yyaccept = 4;
 6895|     42|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     42|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6896|     42|		if (yych == 'T') goto yy624;
  ------------------
  |  Branch (6896:7): [True: 33, False: 9]
  ------------------
 6897|      9|		if (yych == 't') goto yy624;
  ------------------
  |  Branch (6897:7): [True: 9, False: 0]
  ------------------
 6898|      0|		goto yy48;
 6899|     15|yy540:
 6900|     15|		YYDEBUG(540, *YYCURSOR);
 6901|     15|		yyaccept = 4;
 6902|     15|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     15|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6903|     15|		if (yych == 'E') goto yy625;
  ------------------
  |  Branch (6903:7): [True: 12, False: 3]
  ------------------
 6904|      3|		if (yych == 'e') goto yy625;
  ------------------
  |  Branch (6904:7): [True: 0, False: 3]
  ------------------
 6905|      3|		goto yy48;
 6906|     29|yy541:
 6907|     29|		YYDEBUG(541, *YYCURSOR);
 6908|     29|		yyaccept = 4;
 6909|     29|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     29|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6910|     29|		if (yych == 'H') goto yy626;
  ------------------
  |  Branch (6910:7): [True: 27, False: 2]
  ------------------
 6911|      2|		if (yych == 'h') goto yy626;
  ------------------
  |  Branch (6911:7): [True: 0, False: 2]
  ------------------
 6912|      2|		goto yy48;
 6913|     58|yy542:
 6914|     58|		YYDEBUG(542, *YYCURSOR);
 6915|     58|		yyaccept = 4;
 6916|     58|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     58|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6917|     58|		if (yych == 'E') goto yy627;
  ------------------
  |  Branch (6917:7): [True: 41, False: 17]
  ------------------
 6918|     17|		if (yych == 'e') goto yy627;
  ------------------
  |  Branch (6918:7): [True: 15, False: 2]
  ------------------
 6919|      2|		goto yy48;
 6920|     43|yy543:
 6921|     43|		YYDEBUG(543, *YYCURSOR);
 6922|     43|		yyaccept = 4;
 6923|     43|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     43|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6924|     43|		if (yych == 'P') goto yy628;
  ------------------
  |  Branch (6924:7): [True: 30, False: 13]
  ------------------
 6925|     13|		if (yych == 'p') goto yy628;
  ------------------
  |  Branch (6925:7): [True: 0, False: 13]
  ------------------
 6926|     13|		goto yy48;
 6927|     19|yy544:
 6928|     19|		YYDEBUG(544, *YYCURSOR);
 6929|     19|		yyaccept = 4;
 6930|     19|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6931|     19|		if (yych == 'I') goto yy629;
  ------------------
  |  Branch (6931:7): [True: 5, False: 14]
  ------------------
 6932|     14|		if (yych == 'i') goto yy629;
  ------------------
  |  Branch (6932:7): [True: 14, False: 0]
  ------------------
 6933|      0|		goto yy48;
 6934|    637|yy545:
 6935|    637|		YYDEBUG(545, *YYCURSOR);
 6936|    637|		++YYCURSOR;
  ------------------
  |  |   54|    637|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    637|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    637|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6937|    637|		YYFILL(1);
  ------------------
  |  |   53|    637|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    637|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    637|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    637|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    637|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    637|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    637|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    637|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 637]
  |  |  ------------------
  ------------------
 6938|    637|		yych = *YYCURSOR;
  ------------------
  |  |   54|    637|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    637|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    637|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6939|    637|		YYDEBUG(546, *YYCURSOR);
 6940|    637|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (6940:7): [True: 3, False: 634]
  ------------------
 6941|      3|			goto yy355;
 6942|      3|		}
 6943|    634|		if (yych <= ' ') {
  ------------------
  |  Branch (6943:7): [True: 198, False: 436]
  ------------------
 6944|    198|			if (yych <= '\n') {
  ------------------
  |  Branch (6944:8): [True: 64, False: 134]
  ------------------
 6945|     64|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (6945:9): [True: 13, False: 51]
  ------------------
 6946|     51|				if (yych <= 0x08) goto yy230;
  ------------------
  |  Branch (6946:9): [True: 15, False: 36]
  ------------------
 6947|     36|				goto yy545;
 6948|    134|			} else {
 6949|    134|				if (yych == '\r') goto yy545;
  ------------------
  |  Branch (6949:9): [True: 121, False: 13]
  ------------------
 6950|     13|				if (yych <= 0x1F) goto yy230;
  ------------------
  |  Branch (6950:9): [True: 2, False: 11]
  ------------------
 6951|     11|				goto yy545;
 6952|     13|			}
 6953|    436|		} else {
 6954|    436|			if (yych <= '$') {
  ------------------
  |  Branch (6954:8): [True: 350, False: 86]
  ------------------
 6955|    350|				if (yych <= '"') goto yy230;
  ------------------
  |  Branch (6955:9): [True: 0, False: 350]
  ------------------
 6956|    350|				if (yych <= '#') goto yy630;
  ------------------
  |  Branch (6956:9): [True: 313, False: 37]
  ------------------
 6957|     37|				goto yy631;
 6958|    350|			} else {
 6959|     86|				if (yych <= '-') goto yy230;
  ------------------
  |  Branch (6959:9): [True: 9, False: 77]
  ------------------
 6960|     77|				if (yych <= '.') goto yy632;
  ------------------
  |  Branch (6960:9): [True: 0, False: 77]
  ------------------
 6961|     77|				if (yych <= '/') goto yy633;
  ------------------
  |  Branch (6961:9): [True: 58, False: 19]
  ------------------
 6962|     19|				goto yy230;
 6963|     77|			}
 6964|    436|		}
 6965|    170|yy547:
 6966|    170|		YYDEBUG(547, *YYCURSOR);
 6967|    170|		++YYCURSOR;
  ------------------
  |  |   54|    170|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    170|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    170|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6968|    170|		YYFILL(1);
  ------------------
  |  |   53|    170|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    170|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    170|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    170|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    170|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    170|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    170|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    170|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 170]
  |  |  ------------------
  ------------------
 6969|    170|		yych = *YYCURSOR;
  ------------------
  |  |   54|    170|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    170|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    170|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6970|    170|		YYDEBUG(548, *YYCURSOR);
 6971|    170|		if (yych <= '\r') {
  ------------------
  |  Branch (6971:7): [True: 59, False: 111]
  ------------------
 6972|     59|			if (yych <= '\t') {
  ------------------
  |  Branch (6972:8): [True: 2, False: 57]
  ------------------
 6973|      2|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (6973:9): [True: 2, False: 0]
  ------------------
 6974|      0|				goto yy443;
 6975|     57|			} else {
 6976|     57|				if (yych <= '\n') goto yy545;
  ------------------
  |  Branch (6976:9): [True: 35, False: 22]
  ------------------
 6977|     22|				if (yych <= '\f') goto yy443;
  ------------------
  |  Branch (6977:9): [True: 4, False: 18]
  ------------------
 6978|     18|				goto yy545;
 6979|     22|			}
 6980|    111|		} else {
 6981|    111|			if (yych <= '*') {
  ------------------
  |  Branch (6981:8): [True: 70, False: 41]
  ------------------
 6982|     70|				if (yych <= ')') goto yy443;
  ------------------
  |  Branch (6982:9): [True: 37, False: 33]
  ------------------
 6983|     33|				goto yy547;
 6984|     70|			} else {
 6985|     41|				if (yych == '/') goto yy227;
  ------------------
  |  Branch (6985:9): [True: 22, False: 19]
  ------------------
 6986|     19|				goto yy443;
 6987|     41|			}
 6988|    111|		}
 6989|    178|yy549:
 6990|    178|		YYDEBUG(549, *YYCURSOR);
 6991|    178|		++YYCURSOR;
  ------------------
  |  |   54|    178|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    178|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    178|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6992|    178|		YYFILL(1);
  ------------------
  |  |   53|    178|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    178|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    178|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    178|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    178|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    178|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    178|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    178|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 178]
  |  |  ------------------
  ------------------
 6993|    178|		yych = *YYCURSOR;
  ------------------
  |  |   54|    178|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    178|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    178|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6994|    178|		YYDEBUG(550, *YYCURSOR);
 6995|    178|		if (yych <= 0x1F) {
  ------------------
  |  Branch (6995:7): [True: 12, False: 166]
  ------------------
 6996|     12|			if (yych == '\t') goto yy549;
  ------------------
  |  Branch (6996:8): [True: 3, False: 9]
  ------------------
 6997|      9|			goto yy86;
 6998|    166|		} else {
 6999|    166|			if (yych <= ' ') goto yy549;
  ------------------
  |  Branch (6999:8): [True: 61, False: 105]
  ------------------
 7000|    105|			if (yych == ')') goto yy634;
  ------------------
  |  Branch (7000:8): [True: 14, False: 91]
  ------------------
 7001|     91|			goto yy86;
 7002|    105|		}
 7003|      6|yy551:
 7004|      6|		YYDEBUG(551, *YYCURSOR);
 7005|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7006|      6|		if (yych == 'Y') goto yy636;
  ------------------
  |  Branch (7006:7): [True: 0, False: 6]
  ------------------
 7007|      6|		if (yych == 'y') goto yy636;
  ------------------
  |  Branch (7007:7): [True: 5, False: 1]
  ------------------
 7008|      1|		goto yy86;
 7009|      2|yy552:
 7010|      2|		YYDEBUG(552, *YYCURSOR);
 7011|      2|		++YYCURSOR;
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7012|      2|		YYFILL(1);
  ------------------
  |  |   53|      2|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      2|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      2|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 7013|      2|		yych = *YYCURSOR;
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7014|      8|yy553:
 7015|      8|		YYDEBUG(553, *YYCURSOR);
 7016|      8|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7016:7): [True: 0, False: 8]
  ------------------
 7017|      0|			if (yych == '\t') goto yy552;
  ------------------
  |  Branch (7017:8): [True: 0, False: 0]
  ------------------
 7018|      0|			goto yy86;
 7019|      8|		} else {
 7020|      8|			if (yych <= ' ') goto yy552;
  ------------------
  |  Branch (7020:8): [True: 2, False: 6]
  ------------------
 7021|      6|			if (yych != ')') goto yy86;
  ------------------
  |  Branch (7021:8): [True: 6, False: 0]
  ------------------
 7022|      6|		}
 7023|      0|		YYDEBUG(554, *YYCURSOR);
 7024|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7025|      0|		YYDEBUG(555, *YYCURSOR);
 7026|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7027|      0|#line 1695 "Zend/zend_language_scanner.l"
 7028|      0|		{
 7029|      0|	RETURN_TOKEN(T_BOOL_CAST);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7030|      0|}
 7031|      0|#line 7032 "Zend/zend_language_scanner.c"
 7032|     14|yy556:
 7033|     14|		YYDEBUG(556, *YYCURSOR);
 7034|     14|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7035|     14|		if (yych == 'A') goto yy638;
  ------------------
  |  Branch (7035:7): [True: 0, False: 14]
  ------------------
 7036|     14|		if (yych == 'a') goto yy638;
  ------------------
  |  Branch (7036:7): [True: 11, False: 3]
  ------------------
 7037|      3|		goto yy86;
 7038|      5|yy557:
 7039|      5|		YYDEBUG(557, *YYCURSOR);
 7040|      5|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7041|      5|		if (yych == 'E') goto yy639;
  ------------------
  |  Branch (7041:7): [True: 0, False: 5]
  ------------------
 7042|      5|		if (yych == 'e') goto yy639;
  ------------------
  |  Branch (7042:7): [True: 5, False: 0]
  ------------------
 7043|      0|		goto yy86;
 7044|     25|yy558:
 7045|     25|		YYDEBUG(558, *YYCURSOR);
 7046|     25|		++YYCURSOR;
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7047|     25|		YYFILL(1);
  ------------------
  |  |   53|     25|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     25|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     25|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 25]
  |  |  ------------------
  ------------------
 7048|     25|		yych = *YYCURSOR;
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7049|     25|		YYDEBUG(559, *YYCURSOR);
 7050|     25|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7050:7): [True: 9, False: 16]
  ------------------
 7051|      9|			if (yych == '\t') goto yy558;
  ------------------
  |  Branch (7051:8): [True: 0, False: 9]
  ------------------
 7052|      9|			goto yy86;
 7053|     16|		} else {
 7054|     16|			if (yych <= ' ') goto yy558;
  ------------------
  |  Branch (7054:8): [True: 4, False: 12]
  ------------------
 7055|     12|			if (yych == ')') goto yy641;
  ------------------
  |  Branch (7055:8): [True: 8, False: 4]
  ------------------
 7056|      4|			goto yy86;
 7057|     12|		}
 7058|     14|yy560:
 7059|     14|		YYDEBUG(560, *YYCURSOR);
 7060|     14|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7061|     14|		if (yych == 'E') goto yy643;
  ------------------
  |  Branch (7061:7): [True: 0, False: 14]
  ------------------
 7062|     14|		if (yych == 'e') goto yy643;
  ------------------
  |  Branch (7062:7): [True: 14, False: 0]
  ------------------
 7063|      0|		goto yy86;
 7064|     60|yy561:
 7065|     60|		YYDEBUG(561, *YYCURSOR);
 7066|     60|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     60|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     60|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     60|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7067|     60|		if (yych == 'T') goto yy644;
  ------------------
  |  Branch (7067:7): [True: 11, False: 49]
  ------------------
 7068|     49|		if (yych == 't') goto yy644;
  ------------------
  |  Branch (7068:7): [True: 43, False: 6]
  ------------------
 7069|      6|		goto yy86;
 7070|      6|yy562:
 7071|      1|		YYDEBUG(562, *YYCURSOR);
 7072|      1|		++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7073|      1|		YYDEBUG(563, *YYCURSOR);
 7074|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7075|      1|#line 1665 "Zend/zend_language_scanner.l"
 7076|      1|		{
 7077|      1|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|      1|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7078|      1|		zend_throw_exception(zend_ce_parse_error, "The (real) cast has been removed, use (float) instead", 0);
 7079|      1|		RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7080|      1|	}
 7081|      0|	RETURN_TOKEN(T_DOUBLE_CAST);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7082|      0|}
 7083|      0|#line 7084 "Zend/zend_language_scanner.c"
 7084|     65|yy564:
 7085|     65|		YYDEBUG(564, *YYCURSOR);
 7086|     65|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7087|     65|		if (yych == 'G') goto yy646;
  ------------------
  |  Branch (7087:7): [True: 0, False: 65]
  ------------------
 7088|     65|		if (yych == 'g') goto yy646;
  ------------------
  |  Branch (7088:7): [True: 63, False: 2]
  ------------------
 7089|      2|		goto yy86;
 7090|     19|yy565:
 7091|     19|		YYDEBUG(565, *YYCURSOR);
 7092|     19|		++YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7093|     19|		YYFILL(1);
  ------------------
  |  |   53|     19|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     19|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     19|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 19]
  |  |  ------------------
  ------------------
 7094|     19|		yych = *YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7095|     19|		YYDEBUG(566, *YYCURSOR);
 7096|     19|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7096:7): [True: 0, False: 19]
  ------------------
 7097|      0|			if (yych == '\t') goto yy565;
  ------------------
  |  Branch (7097:8): [True: 0, False: 0]
  ------------------
 7098|      0|			goto yy86;
 7099|     19|		} else {
 7100|     19|			if (yych <= ' ') goto yy565;
  ------------------
  |  Branch (7100:8): [True: 0, False: 19]
  ------------------
 7101|     19|			if (yych == ')') goto yy648;
  ------------------
  |  Branch (7101:8): [True: 11, False: 8]
  ------------------
 7102|      8|			goto yy86;
 7103|     19|		}
 7104|      3|yy567:
 7105|      3|		YYDEBUG(567, *YYCURSOR);
 7106|      3|		++YYCURSOR;
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7107|      3|		YYDEBUG(568, *YYCURSOR);
 7108|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7109|      3|#line 1713 "Zend/zend_language_scanner.l"
 7110|      3|		{
 7111|      3|	RETURN_TOKEN(T_VOID_CAST);
  ------------------
  |  | 1318|      3|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      3|		token = _token; \
  |  | 1320|      3|		goto emit_token; \
  |  | 1321|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7112|      3|}
 7113|      0|#line 7114 "Zend/zend_language_scanner.c"
 7114|     98|yy569:
 7115|     98|		YYDEBUG(569, *YYCURSOR);
 7116|     98|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     98|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     98|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     98|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7117|     98|		if (yych == '\n') goto yy466;
  ------------------
  |  Branch (7117:7): [True: 71, False: 27]
  ------------------
 7118|     27|		if (yych == '\r') goto yy468;
  ------------------
  |  Branch (7118:7): [True: 7, False: 20]
  ------------------
 7119|     20|		goto yy86;
 7120|    113|yy570:
 7121|    113|		YYDEBUG(570, *YYCURSOR);
 7122|    113|		yyaccept = 4;
 7123|    113|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    113|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    113|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    113|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    113|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    113|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    113|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7124|    113|		if (yych == 'C') goto yy650;
  ------------------
  |  Branch (7124:7): [True: 0, False: 113]
  ------------------
 7125|    113|		if (yych == 'c') goto yy650;
  ------------------
  |  Branch (7125:7): [True: 108, False: 5]
  ------------------
 7126|      5|		goto yy48;
 7127|     22|yy571:
 7128|     22|		YYDEBUG(571, *YYCURSOR);
 7129|     22|		yyaccept = 4;
 7130|     22|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     22|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7131|     22|		if (yych == 'L') goto yy651;
  ------------------
  |  Branch (7131:7): [True: 1, False: 21]
  ------------------
 7132|     21|		if (yych == 'l') goto yy651;
  ------------------
  |  Branch (7132:7): [True: 20, False: 1]
  ------------------
 7133|      1|		goto yy48;
 7134|      2|yy572:
 7135|      2|		YYDEBUG(572, *YYCURSOR);
 7136|      2|		yyaccept = 4;
 7137|      2|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      2|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7138|      2|		if (yych == 'U') goto yy652;
  ------------------
  |  Branch (7138:7): [True: 0, False: 2]
  ------------------
 7139|      2|		if (yych == 'u') goto yy652;
  ------------------
  |  Branch (7139:7): [True: 2, False: 0]
  ------------------
 7140|      0|		goto yy48;
 7141|    102|yy573:
 7142|    102|		YYDEBUG(573, *YYCURSOR);
 7143|    102|		yyaccept = 4;
 7144|    102|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    102|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    102|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    102|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    102|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    102|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    102|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7145|    102|		if (yych == 'E') goto yy653;
  ------------------
  |  Branch (7145:7): [True: 1, False: 101]
  ------------------
 7146|    101|		if (yych == 'e') goto yy653;
  ------------------
  |  Branch (7146:7): [True: 80, False: 21]
  ------------------
 7147|     21|		goto yy48;
 7148|     21|yy574:
 7149|     13|		YYDEBUG(574, *YYCURSOR);
 7150|     13|		yyaccept = 4;
 7151|     13|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7152|     13|		if (yych == 'T') goto yy655;
  ------------------
  |  Branch (7152:7): [True: 0, False: 13]
  ------------------
 7153|     13|		if (yych == 't') goto yy655;
  ------------------
  |  Branch (7153:7): [True: 12, False: 1]
  ------------------
 7154|      1|		goto yy48;
 7155|      5|yy575:
 7156|      5|		YYDEBUG(575, *YYCURSOR);
 7157|      5|		yyaccept = 51;
 7158|      5|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      5|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7159|      5|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7159:7): [True: 0, False: 5]
  ------------------
 7160|      0|			goto yy47;
 7161|      0|		}
 7162|      5|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7162:7): [True: 0, False: 5]
  ------------------
 7163|      5|yy576:
 7164|      5|		YYDEBUG(576, *YYCURSOR);
 7165|      5|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      5|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7166|      5|#line 1457 "Zend/zend_language_scanner.l"
 7167|      5|		{
 7168|      5|	RETURN_TOKEN_WITH_IDENT(T_ELSEIF);
  ------------------
  |  | 1334|      5|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      5|		token = _token; \
  |  | 1336|      5|		goto emit_token_with_ident; \
  |  | 1337|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7169|      5|}
 7170|      0|#line 7171 "Zend/zend_language_scanner.c"
 7171|      3|yy577:
 7172|      3|		YYDEBUG(577, *YYCURSOR);
 7173|      3|		yyaccept = 4;
 7174|      3|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      3|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7175|      3|		if (yych == 'L') goto yy657;
  ------------------
  |  Branch (7175:7): [True: 1, False: 2]
  ------------------
 7176|      2|		if (yych == 'l') goto yy657;
  ------------------
  |  Branch (7176:7): [True: 0, False: 2]
  ------------------
 7177|      2|		goto yy48;
 7178|     86|yy578:
 7179|     86|		YYDEBUG(578, *YYCURSOR);
 7180|     86|		yyaccept = 52;
 7181|     86|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     86|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     86|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7182|     86|		if (yych <= '\\') {
  ------------------
  |  Branch (7182:7): [True: 84, False: 2]
  ------------------
 7183|     84|			if (yych <= 'D') {
  ------------------
  |  Branch (7183:8): [True: 84, False: 0]
  ------------------
 7184|     84|				if (yych <= '/') goto yy579;
  ------------------
  |  Branch (7184:9): [True: 80, False: 4]
  ------------------
 7185|      4|				if (yych <= '9') goto yy47;
  ------------------
  |  Branch (7185:9): [True: 0, False: 4]
  ------------------
 7186|      4|				if (yych >= 'A') goto yy47;
  ------------------
  |  Branch (7186:9): [True: 0, False: 4]
  ------------------
 7187|      4|			} else {
 7188|      0|				if (yych <= 'E') goto yy658;
  ------------------
  |  Branch (7188:9): [True: 0, False: 0]
  ------------------
 7189|      0|				if (yych <= 'Z') goto yy47;
  ------------------
  |  Branch (7189:9): [True: 0, False: 0]
  ------------------
 7190|      0|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (7190:9): [True: 0, False: 0]
  ------------------
 7191|      0|			}
 7192|     84|		} else {
 7193|      2|			if (yych <= 'd') {
  ------------------
  |  Branch (7193:8): [True: 0, False: 2]
  ------------------
 7194|      0|				if (yych == '_') goto yy47;
  ------------------
  |  Branch (7194:9): [True: 0, False: 0]
  ------------------
 7195|      0|				if (yych >= 'a') goto yy47;
  ------------------
  |  Branch (7195:9): [True: 0, False: 0]
  ------------------
 7196|      2|			} else {
 7197|      2|				if (yych <= 'e') goto yy658;
  ------------------
  |  Branch (7197:9): [True: 0, False: 2]
  ------------------
 7198|      2|				if (yych <= 'z') goto yy47;
  ------------------
  |  Branch (7198:9): [True: 2, False: 0]
  ------------------
 7199|      0|				if (yych >= 0x80) goto yy47;
  ------------------
  |  Branch (7199:9): [True: 0, False: 0]
  ------------------
 7200|      0|			}
 7201|      2|		}
 7202|     84|yy579:
 7203|     84|		YYDEBUG(579, *YYCURSOR);
 7204|     84|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     84|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     84|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     84|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     84|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     84|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     84|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     84|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     84|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7205|     84|#line 1485 "Zend/zend_language_scanner.l"
 7206|     84|		{
 7207|     84|	RETURN_TOKEN_WITH_IDENT(T_ENDFOR);
  ------------------
  |  | 1334|     84|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     84|		token = _token; \
  |  | 1336|     84|		goto emit_token_with_ident; \
  |  | 1337|     84|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7208|     84|}
 7209|      0|#line 7210 "Zend/zend_language_scanner.c"
 7210|      0|yy580:
 7211|      0|		YYDEBUG(580, *YYCURSOR);
 7212|      0|		yyaccept = 4;
 7213|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7214|      0|		if (yych == 'T') goto yy659;
  ------------------
  |  Branch (7214:7): [True: 0, False: 0]
  ------------------
 7215|      0|		if (yych == 't') goto yy659;
  ------------------
  |  Branch (7215:7): [True: 0, False: 0]
  ------------------
 7216|      0|		goto yy48;
 7217|      2|yy581:
 7218|      2|		YYDEBUG(581, *YYCURSOR);
 7219|      2|		yyaccept = 4;
 7220|      2|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      2|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7221|      2|		if (yych == 'L') goto yy660;
  ------------------
  |  Branch (7221:7): [True: 2, False: 0]
  ------------------
 7222|      0|		if (yych == 'l') goto yy660;
  ------------------
  |  Branch (7222:7): [True: 0, False: 0]
  ------------------
 7223|      0|		goto yy48;
 7224|    236|yy582:
 7225|    236|		YYDEBUG(582, *YYCURSOR);
 7226|    236|		++YYCURSOR;
  ------------------
  |  |   54|    236|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    236|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    236|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7227|    996|yy583:
 7228|    996|		YYDEBUG(583, *YYCURSOR);
 7229|    996|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    996|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    996|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    996|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    996|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    996|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    996|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    996|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    996|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7230|    996|#line 1573 "Zend/zend_language_scanner.l"
 7231|    996|		{
 7232|    996|	yyless(4);
  ------------------
  |  |   68|    996|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    996|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    996|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    996|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    996|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    996|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    996|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    996|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    996|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    996|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    996|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 996]
  |  |  ------------------
  ------------------
 7233|    996|	RETURN_TOKEN_WITH_IDENT(T_ENUM);
  ------------------
  |  | 1334|    996|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    996|		token = _token; \
  |  | 1336|    996|		goto emit_token_with_ident; \
  |  | 1337|    996|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7234|    996|}
 7235|      0|#line 7236 "Zend/zend_language_scanner.c"
 7236|     75|yy584:
 7237|     75|		YYDEBUG(584, *YYCURSOR);
 7238|     75|		yyaccept = 53;
 7239|     75|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     75|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     75|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7240|     75|		if (yych == 'X') goto yy661;
  ------------------
  |  Branch (7240:7): [True: 0, False: 75]
  ------------------
 7241|     75|		if (yych == 'x') goto yy661;
  ------------------
  |  Branch (7241:7): [True: 15, False: 60]
  ------------------
 7242|     60|		goto yy583;
 7243|     64|yy585:
 7244|     64|		YYDEBUG(585, *YYCURSOR);
 7245|     64|		yyaccept = 53;
 7246|     64|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     64|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     64|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     64|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     64|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     64|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     64|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7247|     64|		if (yych == 'M') goto yy662;
  ------------------
  |  Branch (7247:7): [True: 3, False: 61]
  ------------------
 7248|     61|		if (yych == 'm') goto yy662;
  ------------------
  |  Branch (7248:7): [True: 47, False: 14]
  ------------------
 7249|     14|		goto yy583;
 7250|  12.0k|yy586:
 7251|  12.0k|		YYDEBUG(586, *YYCURSOR);
 7252|  12.0k|		++YYCURSOR;
  ------------------
  |  |   54|  12.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7253|  12.0k|		YYFILL(1);
  ------------------
  |  |   53|  12.0k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  12.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  12.0k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  12.0k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 12.0k]
  |  |  ------------------
  ------------------
 7254|  12.0k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  12.0k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  12.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  12.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7255|  12.0k|		YYDEBUG(587, *YYCURSOR);
 7256|  12.0k|		if (yych <= '\n') {
  ------------------
  |  Branch (7256:7): [True: 726, False: 11.3k]
  ------------------
 7257|    726|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7257:8): [True: 155, False: 571]
  ------------------
 7258|    571|			if (yych <= '\t') goto yy586;
  ------------------
  |  Branch (7258:8): [True: 116, False: 455]
  ------------------
 7259|    455|			goto yy495;
 7260|  11.3k|		} else {
 7261|  11.3k|			if (yych == '\r') goto yy495;
  ------------------
  |  Branch (7261:8): [True: 1.17k, False: 10.1k]
  ------------------
 7262|  10.1k|			goto yy586;
 7263|  11.3k|		}
 7264|  2.32k|yy588:
 7265|  2.32k|		YYDEBUG(588, *YYCURSOR);
 7266|  2.32k|		++YYCURSOR;
  ------------------
  |  |   54|  2.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7267|  2.32k|		YYFILL(1);
  ------------------
  |  |   53|  2.32k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.32k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.32k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.32k]
  |  |  ------------------
  ------------------
 7268|  2.32k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.32k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.32k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.32k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7269|  2.32k|		YYDEBUG(589, *YYCURSOR);
 7270|  2.32k|		if (yych <= 'D') {
  ------------------
  |  Branch (7270:7): [True: 1.23k, False: 1.09k]
  ------------------
 7271|  1.23k|			if (yych <= 0x1F) {
  ------------------
  |  Branch (7271:8): [True: 286, False: 945]
  ------------------
 7272|    286|				if (yych <= '\t') {
  ------------------
  |  Branch (7272:9): [True: 64, False: 222]
  ------------------
 7273|     64|					if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7273:10): [True: 4, False: 60]
  ------------------
 7274|     60|					if (yych <= 0x08) goto yy586;
  ------------------
  |  Branch (7274:10): [True: 7, False: 53]
  ------------------
 7275|     53|					goto yy588;
 7276|    222|				} else {
 7277|    222|					if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (7277:10): [True: 36, False: 186]
  ------------------
 7278|    186|					if (yych == '\r') goto yy495;
  ------------------
  |  Branch (7278:10): [True: 136, False: 50]
  ------------------
 7279|     50|					goto yy586;
 7280|    186|				}
 7281|    945|			} else {
 7282|    945|				if (yych <= '#') {
  ------------------
  |  Branch (7282:9): [True: 203, False: 742]
  ------------------
 7283|    203|					if (yych <= ' ') goto yy588;
  ------------------
  |  Branch (7283:10): [True: 47, False: 156]
  ------------------
 7284|    156|					if (yych <= '"') goto yy586;
  ------------------
  |  Branch (7284:10): [True: 8, False: 148]
  ------------------
 7285|    148|					goto yy663;
 7286|    742|				} else {
 7287|    742|					if (yych == '/') goto yy664;
  ------------------
  |  Branch (7287:10): [True: 628, False: 114]
  ------------------
 7288|    114|					if (yych <= '@') goto yy586;
  ------------------
  |  Branch (7288:10): [True: 107, False: 7]
  ------------------
 7289|      7|					goto yy665;
 7290|    114|				}
 7291|    945|			}
 7292|  1.23k|		} else {
 7293|  1.09k|			if (yych <= '`') {
  ------------------
  |  Branch (7293:8): [True: 63, False: 1.03k]
  ------------------
 7294|     63|				if (yych <= 'I') {
  ------------------
  |  Branch (7294:9): [True: 30, False: 33]
  ------------------
 7295|     30|					if (yych <= 'E') goto yy666;
  ------------------
  |  Branch (7295:10): [True: 14, False: 16]
  ------------------
 7296|     16|					if (yych <= 'H') goto yy665;
  ------------------
  |  Branch (7296:10): [True: 3, False: 13]
  ------------------
 7297|     13|					goto yy667;
 7298|     33|				} else {
 7299|     33|					if (yych <= 'Z') goto yy665;
  ------------------
  |  Branch (7299:10): [True: 14, False: 19]
  ------------------
 7300|     19|					if (yych == '_') goto yy665;
  ------------------
  |  Branch (7300:10): [True: 14, False: 5]
  ------------------
 7301|      5|					goto yy586;
 7302|     19|				}
 7303|  1.03k|			} else {
 7304|  1.03k|				if (yych <= 'h') {
  ------------------
  |  Branch (7304:9): [True: 599, False: 436]
  ------------------
 7305|    599|					if (yych == 'e') goto yy666;
  ------------------
  |  Branch (7305:10): [True: 539, False: 60]
  ------------------
 7306|     60|					goto yy665;
 7307|    599|				} else {
 7308|    436|					if (yych <= 'i') goto yy667;
  ------------------
  |  Branch (7308:10): [True: 204, False: 232]
  ------------------
 7309|    232|					if (yych <= 'z') goto yy665;
  ------------------
  |  Branch (7309:10): [True: 110, False: 122]
  ------------------
 7310|    122|					if (yych <= 0x7F) goto yy586;
  ------------------
  |  Branch (7310:10): [True: 48, False: 74]
  ------------------
 7311|     74|					goto yy665;
 7312|    122|				}
 7313|  1.03k|			}
 7314|  1.09k|		}
 7315|  5.27k|yy590:
 7316|  5.27k|		YYDEBUG(590, *YYCURSOR);
 7317|  5.27k|		++YYCURSOR;
  ------------------
  |  |   54|  5.27k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.27k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.27k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7318|  5.27k|		YYFILL(1);
  ------------------
  |  |   53|  5.27k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  5.27k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  5.27k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  5.27k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  5.27k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  5.27k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  5.27k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  5.27k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 5.27k]
  |  |  ------------------
  ------------------
 7319|  5.27k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  5.27k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.27k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.27k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7320|  5.27k|		YYDEBUG(591, *YYCURSOR);
 7321|  5.27k|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7321:7): [True: 201, False: 5.06k]
  ------------------
 7322|  5.06k|		if (yych == '*') goto yy668;
  ------------------
  |  Branch (7322:7): [True: 308, False: 4.76k]
  ------------------
 7323|  4.76k|		goto yy590;
 7324|  4.76k|yy592:
 7325|    304|		YYDEBUG(592, *YYCURSOR);
 7326|    304|		yyaccept = 4;
 7327|    304|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    304|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    304|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    304|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    304|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    304|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    304|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7328|    304|		if (yych == 'S') goto yy670;
  ------------------
  |  Branch (7328:7): [True: 4, False: 300]
  ------------------
 7329|    300|		if (yych == 's') goto yy670;
  ------------------
  |  Branch (7329:7): [True: 287, False: 13]
  ------------------
 7330|     13|		goto yy48;
 7331|     40|yy593:
 7332|     40|		YYDEBUG(593, *YYCURSOR);
 7333|     40|		yyaccept = 4;
 7334|     40|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     40|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7335|     40|		if (yych == 'Y') goto yy672;
  ------------------
  |  Branch (7335:7): [True: 0, False: 40]
  ------------------
 7336|     40|		if (yych == 'y') goto yy672;
  ------------------
  |  Branch (7336:7): [True: 40, False: 0]
  ------------------
 7337|      0|		goto yy48;
 7338|    212|yy594:
 7339|    212|		YYDEBUG(594, *YYCURSOR);
 7340|    212|		yyaccept = 4;
 7341|    212|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    212|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    212|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    212|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    212|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    212|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    212|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7342|    212|		if (yych == 'H') goto yy674;
  ------------------
  |  Branch (7342:7): [True: 1, False: 211]
  ------------------
 7343|    211|		if (yych == 'h') goto yy674;
  ------------------
  |  Branch (7343:7): [True: 207, False: 4]
  ------------------
 7344|      4|		goto yy48;
 7345|  1.70k|yy595:
 7346|  1.70k|		YYDEBUG(595, *YYCURSOR);
 7347|  1.70k|		yyaccept = 4;
 7348|  1.70k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.70k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.70k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.70k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.70k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.70k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.70k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7349|  1.70k|		if (yych == 'O') goto yy676;
  ------------------
  |  Branch (7349:7): [True: 17, False: 1.68k]
  ------------------
 7350|  1.68k|		if (yych == 'o') goto yy676;
  ------------------
  |  Branch (7350:7): [True: 1.68k, False: 3]
  ------------------
 7351|      3|		goto yy48;
 7352|     65|yy596:
 7353|     65|		YYDEBUG(596, *YYCURSOR);
 7354|     65|		yyaccept = 54;
 7355|     65|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     65|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7356|     65|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7356:7): [True: 26, False: 39]
  ------------------
 7357|     26|			goto yy47;
 7358|     26|		}
 7359|     39|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7359:7): [True: 0, False: 39]
  ------------------
 7360|     39|yy597:
 7361|     39|		YYDEBUG(597, *YYCURSOR);
 7362|     39|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     39|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     39|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7363|     39|#line 1749 "Zend/zend_language_scanner.l"
 7364|     39|		{
 7365|     39|	RETURN_TOKEN_WITH_IDENT(T_GLOBAL);
  ------------------
  |  | 1334|     39|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     39|		token = _token; \
  |  | 1336|     39|		goto emit_token_with_ident; \
  |  | 1337|     39|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7366|     39|}
 7367|      0|#line 7368 "Zend/zend_language_scanner.c"
 7368|    200|yy598:
 7369|    200|		YYDEBUG(598, *YYCURSOR);
 7370|    200|		yyaccept = 4;
 7371|    200|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    200|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    200|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    200|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    200|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    200|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    200|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7372|    200|		if (yych == 'E') goto yy677;
  ------------------
  |  Branch (7372:7): [True: 49, False: 151]
  ------------------
 7373|    151|		if (yych == 'e') goto yy677;
  ------------------
  |  Branch (7373:7): [True: 106, False: 45]
  ------------------
 7374|     45|		goto yy48;
 7375|     51|yy599:
 7376|     51|		YYDEBUG(599, *YYCURSOR);
 7377|     51|		yyaccept = 4;
 7378|     51|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     51|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7379|     51|		if (yych == 'E') goto yy678;
  ------------------
  |  Branch (7379:7): [True: 0, False: 51]
  ------------------
 7380|     51|		if (yych == 'e') goto yy678;
  ------------------
  |  Branch (7380:7): [True: 44, False: 7]
  ------------------
 7381|      7|		goto yy48;
 7382|     24|yy600:
 7383|     24|		YYDEBUG(600, *YYCURSOR);
 7384|     24|		yyaccept = 4;
 7385|     24|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     24|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7386|     24|		if (yych == 'C') goto yy680;
  ------------------
  |  Branch (7386:7): [True: 0, False: 24]
  ------------------
 7387|     24|		if (yych == 'c') goto yy680;
  ------------------
  |  Branch (7387:7): [True: 24, False: 0]
  ------------------
 7388|      0|		goto yy48;
 7389|     15|yy601:
 7390|     15|		YYDEBUG(601, *YYCURSOR);
 7391|     15|		yyaccept = 4;
 7392|     15|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     15|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7393|     15|		if (yych == 'D') goto yy681;
  ------------------
  |  Branch (7393:7): [True: 0, False: 15]
  ------------------
 7394|     15|		if (yych == 'd') goto yy681;
  ------------------
  |  Branch (7394:7): [True: 15, False: 0]
  ------------------
 7395|      0|		goto yy48;
 7396|    222|yy602:
 7397|    222|		YYDEBUG(602, *YYCURSOR);
 7398|    222|		yyaccept = 4;
 7399|    222|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    222|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    222|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    222|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    222|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    222|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    222|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7400|    222|		if (yych == 'A') goto yy682;
  ------------------
  |  Branch (7400:7): [True: 3, False: 219]
  ------------------
 7401|    219|		if (yych == 'a') goto yy682;
  ------------------
  |  Branch (7401:7): [True: 207, False: 12]
  ------------------
 7402|     12|		goto yy48;
 7403|    292|yy603:
 7404|    292|		YYDEBUG(603, *YYCURSOR);
 7405|    292|		yyaccept = 4;
 7406|    292|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    292|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    292|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    292|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    292|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    292|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    292|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7407|    292|		if (yych == 'A') goto yy683;
  ------------------
  |  Branch (7407:7): [True: 7, False: 285]
  ------------------
 7408|    285|		if (yych == 'a') goto yy683;
  ------------------
  |  Branch (7408:7): [True: 282, False: 3]
  ------------------
 7409|      3|		goto yy48;
 7410|    528|yy604:
 7411|    528|		YYDEBUG(604, *YYCURSOR);
 7412|    528|		yyaccept = 4;
 7413|    528|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    528|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    528|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    528|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    528|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    528|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    528|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7414|    528|		if (yych == 'E') goto yy684;
  ------------------
  |  Branch (7414:7): [True: 0, False: 528]
  ------------------
 7415|    528|		if (yych == 'e') goto yy684;
  ------------------
  |  Branch (7415:7): [True: 524, False: 4]
  ------------------
 7416|      4|		goto yy48;
 7417|    110|yy605:
 7418|    110|		YYDEBUG(605, *YYCURSOR);
 7419|    110|		yyaccept = 4;
 7420|    110|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    110|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    110|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7421|    110|		if (yych == 'T') goto yy686;
  ------------------
  |  Branch (7421:7): [True: 0, False: 110]
  ------------------
 7422|    110|		if (yych == 't') goto yy686;
  ------------------
  |  Branch (7422:7): [True: 100, False: 10]
  ------------------
 7423|     10|		goto yy48;
 7424|    876|yy606:
 7425|    876|		YYDEBUG(606, *YYCURSOR);
 7426|    876|		yyaccept = 55;
 7427|    876|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    876|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    876|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    876|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    876|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    876|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    876|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7428|    876|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7428:7): [True: 23, False: 853]
  ------------------
 7429|     23|			goto yy47;
 7430|     23|		}
 7431|    853|		if (yych == '(') goto yy687;
  ------------------
  |  Branch (7431:7): [True: 11, False: 842]
  ------------------
 7432|    842|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7432:7): [True: 0, False: 842]
  ------------------
 7433|    846|yy607:
 7434|    846|		YYDEBUG(607, *YYCURSOR);
 7435|    846|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    846|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    846|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    846|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    846|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    846|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    846|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    846|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    846|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7436|    846|#line 1797 "Zend/zend_language_scanner.l"
 7437|    846|		{
 7438|    846|	RETURN_TOKEN_WITH_IDENT(T_PUBLIC);
  ------------------
  |  | 1334|    846|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    846|		token = _token; \
  |  | 1336|    846|		goto emit_token_with_ident; \
  |  | 1337|    846|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7439|    846|}
 7440|      0|#line 7441 "Zend/zend_language_scanner.c"
 7441|    163|yy608:
 7442|    163|		YYDEBUG(608, *YYCURSOR);
 7443|    163|		yyaccept = 4;
 7444|    163|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    163|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    163|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    163|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    163|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    163|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    163|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7445|    163|		if (yych == 'L') goto yy688;
  ------------------
  |  Branch (7445:7): [True: 0, False: 163]
  ------------------
 7446|    163|		if (yych == 'l') goto yy688;
  ------------------
  |  Branch (7446:7): [True: 156, False: 7]
  ------------------
 7447|      7|		goto yy48;
 7448|    111|yy609:
 7449|    111|		YYDEBUG(609, *YYCURSOR);
 7450|    111|		yyaccept = 4;
 7451|    111|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    111|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    111|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7452|    111|		if (yych == 'E') goto yy689;
  ------------------
  |  Branch (7452:7): [True: 3, False: 108]
  ------------------
 7453|    108|		if (yych == 'e') goto yy689;
  ------------------
  |  Branch (7453:7): [True: 95, False: 13]
  ------------------
 7454|     13|		goto yy48;
 7455|    372|yy610:
 7456|    372|		YYDEBUG(610, *YYCURSOR);
 7457|    372|		yyaccept = 56;
 7458|    372|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    372|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    372|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    372|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    372|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7459|    372|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7459:7): [True: 53, False: 319]
  ------------------
 7460|     53|			goto yy47;
 7461|     53|		}
 7462|    319|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7462:7): [True: 0, False: 319]
  ------------------
 7463|    319|yy611:
 7464|    319|		YYDEBUG(611, *YYCURSOR);
 7465|    319|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    319|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    319|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    319|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    319|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    319|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    319|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    319|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    319|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7466|    319|#line 1418 "Zend/zend_language_scanner.l"
 7467|    319|		{
 7468|    319|	RETURN_TOKEN_WITH_IDENT(T_RETURN);
  ------------------
  |  | 1334|    319|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    319|		token = _token; \
  |  | 1336|    319|		goto emit_token_with_ident; \
  |  | 1337|    319|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7469|    319|}
 7470|      0|#line 7471 "Zend/zend_language_scanner.c"
 7471|    251|yy612:
 7472|    251|		YYDEBUG(612, *YYCURSOR);
 7473|    251|		yyaccept = 57;
 7474|    251|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    251|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    251|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    251|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    251|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    251|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    251|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7475|    251|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7475:7): [True: 7, False: 244]
  ------------------
 7476|      7|			goto yy47;
 7477|      7|		}
 7478|    244|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7478:7): [True: 1, False: 243]
  ------------------
 7479|    244|yy613:
 7480|    244|		YYDEBUG(613, *YYCURSOR);
 7481|    244|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    244|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    244|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    244|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    244|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    244|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    244|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    244|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    244|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7482|    244|#line 1765 "Zend/zend_language_scanner.l"
 7483|    244|		{
 7484|    244|	RETURN_TOKEN_WITH_IDENT(T_STATIC);
  ------------------
  |  | 1334|    244|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    244|		token = _token; \
  |  | 1336|    244|		goto emit_token_with_ident; \
  |  | 1337|    244|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7485|    244|}
 7486|      0|#line 7487 "Zend/zend_language_scanner.c"
 7487|     21|yy614:
 7488|     21|		YYDEBUG(614, *YYCURSOR);
 7489|     21|		yyaccept = 58;
 7490|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7491|     21|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7491:7): [True: 0, False: 21]
  ------------------
 7492|      0|			goto yy47;
 7493|      0|		}
 7494|     21|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7494:7): [True: 1, False: 20]
  ------------------
 7495|     21|yy615:
 7496|     21|		YYDEBUG(615, *YYCURSOR);
 7497|     21|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     21|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7498|     21|#line 1513 "Zend/zend_language_scanner.l"
 7499|     21|		{
 7500|     21|	RETURN_TOKEN_WITH_IDENT(T_SWITCH);
  ------------------
  |  | 1334|     21|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     21|		token = _token; \
  |  | 1336|     21|		goto emit_token_with_ident; \
  |  | 1337|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7501|     21|}
 7502|      0|#line 7503 "Zend/zend_language_scanner.c"
 7503|  2.02k|yy616:
 7504|  2.02k|		YYDEBUG(616, *YYCURSOR);
 7505|  2.02k|		++YYCURSOR;
  ------------------
  |  |   54|  2.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7506|  2.02k|		YYFILL(5);
  ------------------
  |  |   53|  2.02k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.02k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.02k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.02k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.02k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.02k]
  |  |  ------------------
  ------------------
 7507|  2.02k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.02k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7508|  2.02k|		YYDEBUG(617, *YYCURSOR);
 7509|  2.02k|		if (yych <= '"') {
  ------------------
  |  Branch (7509:7): [True: 408, False: 1.61k]
  ------------------
 7510|    408|			if (yych <= '\f') {
  ------------------
  |  Branch (7510:8): [True: 158, False: 250]
  ------------------
 7511|    158|				if (yych <= 0x08) goto yy86;
  ------------------
  |  Branch (7511:9): [True: 8, False: 150]
  ------------------
 7512|    150|				if (yych <= '\n') goto yy616;
  ------------------
  |  Branch (7512:9): [True: 142, False: 8]
  ------------------
 7513|      8|				goto yy86;
 7514|    250|			} else {
 7515|    250|				if (yych <= '\r') goto yy616;
  ------------------
  |  Branch (7515:9): [True: 200, False: 50]
  ------------------
 7516|     50|				if (yych == ' ') goto yy616;
  ------------------
  |  Branch (7516:9): [True: 42, False: 8]
  ------------------
 7517|      8|				goto yy86;
 7518|     50|			}
 7519|  1.61k|		} else {
 7520|  1.61k|			if (yych <= 'E') {
  ------------------
  |  Branch (7520:8): [True: 1.31k, False: 302]
  ------------------
 7521|  1.31k|				if (yych <= '#') goto yy618;
  ------------------
  |  Branch (7521:9): [True: 1.13k, False: 176]
  ------------------
 7522|    176|				if (yych == '/') goto yy619;
  ------------------
  |  Branch (7522:9): [True: 42, False: 134]
  ------------------
 7523|    134|				goto yy86;
 7524|    302|			} else {
 7525|    302|				if (yych <= 'F') goto yy691;
  ------------------
  |  Branch (7525:9): [True: 29, False: 273]
  ------------------
 7526|    273|				if (yych == 'f') goto yy691;
  ------------------
  |  Branch (7526:9): [True: 65, False: 208]
  ------------------
 7527|    208|				goto yy86;
 7528|    273|			}
 7529|  1.61k|		}
 7530|  1.83k|yy618:
 7531|  1.83k|		YYDEBUG(618, *YYCURSOR);
 7532|  1.83k|		++YYCURSOR;
  ------------------
  |  |   54|  1.83k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.83k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7533|  1.83k|		YYFILL(1);
  ------------------
  |  |   53|  1.83k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.83k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.83k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.83k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.83k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.83k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.83k]
  |  |  ------------------
  ------------------
 7534|  1.83k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.83k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.83k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7535|  1.83k|		if (yych <= '\f') {
  ------------------
  |  Branch (7535:7): [True: 1.00k, False: 834]
  ------------------
 7536|  1.00k|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7536:8): [True: 3, False: 1.00k]
  ------------------
 7537|  1.00k|			if (yych == '\n') goto yy694;
  ------------------
  |  Branch (7537:8): [True: 995, False: 5]
  ------------------
 7538|      5|			goto yy692;
 7539|  1.00k|		} else {
 7540|    834|			if (yych <= '\r') goto yy694;
  ------------------
  |  Branch (7540:8): [True: 285, False: 549]
  ------------------
 7541|    549|			if (yych == '[') goto yy86;
  ------------------
  |  Branch (7541:8): [True: 4, False: 545]
  ------------------
 7542|    545|			goto yy692;
 7543|    549|		}
 7544|     51|yy619:
 7545|     51|		YYDEBUG(619, *YYCURSOR);
 7546|     51|		++YYCURSOR;
  ------------------
  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7547|     51|		YYFILL(1);
  ------------------
  |  |   53|     51|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     51|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     51|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 51]
  |  |  ------------------
  ------------------
 7548|     51|		yych = *YYCURSOR;
  ------------------
  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7549|     51|		if (yych == '*') goto yy696;
  ------------------
  |  Branch (7549:7): [True: 25, False: 26]
  ------------------
 7550|     26|		if (yych == '/') goto yy692;
  ------------------
  |  Branch (7550:7): [True: 9, False: 17]
  ------------------
 7551|     17|		goto yy86;
 7552|     67|yy620:
 7553|     67|		YYDEBUG(620, *YYCURSOR);
 7554|     67|		yyaccept = 4;
 7555|     67|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     67|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7556|     67|		if (yych == 'S') goto yy698;
  ------------------
  |  Branch (7556:7): [True: 52, False: 15]
  ------------------
 7557|     15|		if (yych == 's') goto yy698;
  ------------------
  |  Branch (7557:7): [True: 0, False: 15]
  ------------------
 7558|     15|		goto yy48;
 7559|     41|yy621:
 7560|     41|		YYDEBUG(621, *YYCURSOR);
 7561|     41|		yyaccept = 4;
 7562|     41|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     41|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7563|     41|		if (yych == '_') goto yy699;
  ------------------
  |  Branch (7563:7): [True: 40, False: 1]
  ------------------
 7564|      1|		goto yy48;
 7565|     43|yy622:
 7566|     43|		YYDEBUG(622, *YYCURSOR);
 7567|     43|		yyaccept = 4;
 7568|     43|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     43|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7569|     43|		if (yych == '_') goto yy701;
  ------------------
  |  Branch (7569:7): [True: 43, False: 0]
  ------------------
 7570|      0|		goto yy48;
 7571|     16|yy623:
 7572|     16|		YYDEBUG(623, *YYCURSOR);
 7573|     16|		yyaccept = 4;
 7574|     16|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     16|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7575|     16|		if (yych == 'T') goto yy702;
  ------------------
  |  Branch (7575:7): [True: 11, False: 5]
  ------------------
 7576|      5|		if (yych == 't') goto yy702;
  ------------------
  |  Branch (7576:7): [True: 2, False: 3]
  ------------------
 7577|      3|		goto yy48;
 7578|     42|yy624:
 7579|     42|		YYDEBUG(624, *YYCURSOR);
 7580|     42|		yyaccept = 4;
 7581|     42|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     42|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7582|     42|		if (yych == '_') goto yy703;
  ------------------
  |  Branch (7582:7): [True: 40, False: 2]
  ------------------
 7583|      2|		goto yy48;
 7584|     12|yy625:
 7585|     12|		YYDEBUG(625, *YYCURSOR);
 7586|     12|		yyaccept = 4;
 7587|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7588|     12|		if (yych == '_') goto yy704;
  ------------------
  |  Branch (7588:7): [True: 12, False: 0]
  ------------------
 7589|      0|		goto yy48;
 7590|     27|yy626:
 7591|     27|		YYDEBUG(626, *YYCURSOR);
 7592|     27|		yyaccept = 4;
 7593|     27|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     27|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7594|     27|		if (yych == 'O') goto yy705;
  ------------------
  |  Branch (7594:7): [True: 23, False: 4]
  ------------------
 7595|      4|		if (yych == 'o') goto yy705;
  ------------------
  |  Branch (7595:7): [True: 3, False: 1]
  ------------------
 7596|      1|		goto yy48;
 7597|     56|yy627:
 7598|     56|		YYDEBUG(627, *YYCURSOR);
 7599|     56|		yyaccept = 4;
 7600|     56|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     56|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7601|     56|		if (yych == 'S') goto yy706;
  ------------------
  |  Branch (7601:7): [True: 40, False: 16]
  ------------------
 7602|     16|		if (yych == 's') goto yy706;
  ------------------
  |  Branch (7602:7): [True: 5, False: 11]
  ------------------
 7603|     11|		goto yy48;
 7604|     30|yy628:
 7605|     30|		YYDEBUG(628, *YYCURSOR);
 7606|     30|		yyaccept = 4;
 7607|     30|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     30|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     30|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     30|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     30|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     30|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     30|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7608|     30|		if (yych == 'E') goto yy707;
  ------------------
  |  Branch (7608:7): [True: 29, False: 1]
  ------------------
 7609|      1|		if (yych == 'e') goto yy707;
  ------------------
  |  Branch (7609:7): [True: 0, False: 1]
  ------------------
 7610|      1|		goto yy48;
 7611|     19|yy629:
 7612|     19|		YYDEBUG(629, *YYCURSOR);
 7613|     19|		yyaccept = 4;
 7614|     19|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7615|     19|		if (yych == 'T') goto yy708;
  ------------------
  |  Branch (7615:7): [True: 5, False: 14]
  ------------------
 7616|     14|		if (yych == 't') goto yy708;
  ------------------
  |  Branch (7616:7): [True: 11, False: 3]
  ------------------
 7617|      3|		goto yy48;
 7618|    313|yy630:
 7619|    313|		YYDEBUG(630, *YYCURSOR);
 7620|    313|		++YYCURSOR;
  ------------------
  |  |   54|    313|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    313|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    313|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7621|    313|		YYFILL(1);
  ------------------
  |  |   53|    313|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    313|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    313|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    313|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    313|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    313|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    313|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    313|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 313]
  |  |  ------------------
  ------------------
 7622|    313|		yych = *YYCURSOR;
  ------------------
  |  |   54|    313|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    313|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    313|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7623|    313|		if (yych <= '\r') {
  ------------------
  |  Branch (7623:7): [True: 235, False: 78]
  ------------------
 7624|    235|			if (yych <= '\t') {
  ------------------
  |  Branch (7624:8): [True: 16, False: 219]
  ------------------
 7625|     16|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7625:9): [True: 0, False: 16]
  ------------------
 7626|     16|				goto yy443;
 7627|    219|			} else {
 7628|    219|				if (yych <= '\n') goto yy709;
  ------------------
  |  Branch (7628:9): [True: 177, False: 42]
  ------------------
 7629|     42|				if (yych <= '\f') goto yy443;
  ------------------
  |  Branch (7629:9): [True: 3, False: 39]
  ------------------
 7630|     39|				goto yy709;
 7631|     42|			}
 7632|    235|		} else {
 7633|     78|			if (yych <= '*') {
  ------------------
  |  Branch (7633:8): [True: 13, False: 65]
  ------------------
 7634|     13|				if (yych <= ')') goto yy443;
  ------------------
  |  Branch (7634:9): [True: 7, False: 6]
  ------------------
 7635|      6|				goto yy547;
 7636|     65|			} else {
 7637|     65|				if (yych == '[') goto yy230;
  ------------------
  |  Branch (7637:9): [True: 9, False: 56]
  ------------------
 7638|     56|				goto yy443;
 7639|     65|			}
 7640|     78|		}
 7641|     37|yy631:
 7642|     37|		YYDEBUG(631, *YYCURSOR);
 7643|     37|		yyaccept = 26;
 7644|     37|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     37|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7645|     37|		YYFILL(1);
  ------------------
  |  |   53|     37|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     37|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     37|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 37]
  |  |  ------------------
  ------------------
 7646|     37|		yych = *YYCURSOR;
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7647|     37|		if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (7647:7): [True: 27, False: 10]
  ------------------
 7648|     27|			goto yy230;
 7649|     27|		}
 7650|     10|		if (yych <= 0x00) goto yy89;
  ------------------
  |  Branch (7650:7): [True: 6, False: 4]
  ------------------
 7651|      4|		goto yy355;
 7652|      4|yy632:
 7653|      0|		YYDEBUG(632, *YYCURSOR);
 7654|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7655|      0|		YYFILL(1);
  ------------------
  |  |   53|      0|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      0|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7656|      0|		yych = *YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7657|      0|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (7657:7): [True: 0, False: 0]
  ------------------
 7658|      0|			goto yy355;
 7659|      0|		}
 7660|      0|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7660:7): [True: 0, False: 0]
  ------------------
 7661|      0|		if (yych == '.') goto yy711;
  ------------------
  |  Branch (7661:7): [True: 0, False: 0]
  ------------------
 7662|      0|		goto yy230;
 7663|     58|yy633:
 7664|     58|		YYDEBUG(633, *YYCURSOR);
 7665|     58|		++YYCURSOR;
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7666|     58|		YYFILL(1);
  ------------------
  |  |   53|     58|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     58|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     58|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 58]
  |  |  ------------------
  ------------------
 7667|     58|		yych = *YYCURSOR;
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7668|     58|		if (yych <= '*') {
  ------------------
  |  Branch (7668:7): [True: 35, False: 23]
  ------------------
 7669|     35|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7669:8): [True: 6, False: 29]
  ------------------
 7670|     29|			if (yych <= ')') goto yy230;
  ------------------
  |  Branch (7670:8): [True: 7, False: 22]
  ------------------
 7671|     22|			goto yy712;
 7672|     29|		} else {
 7673|     23|			if (yych == '/') goto yy443;
  ------------------
  |  Branch (7673:8): [True: 16, False: 7]
  ------------------
 7674|      7|			goto yy230;
 7675|     23|		}
 7676|     14|yy634:
 7677|     14|		YYDEBUG(634, *YYCURSOR);
 7678|     14|		++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7679|     14|		YYDEBUG(635, *YYCURSOR);
 7680|     14|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     14|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7681|     14|#line 1687 "Zend/zend_language_scanner.l"
 7682|     14|		{
 7683|     14|	RETURN_TOKEN(T_ARRAY_CAST);
  ------------------
  |  | 1318|     14|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     14|		token = _token; \
  |  | 1320|     14|		goto emit_token; \
  |  | 1321|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7684|     14|}
 7685|      0|#line 7686 "Zend/zend_language_scanner.c"
 7686|      5|yy636:
 7687|      5|		YYDEBUG(636, *YYCURSOR);
 7688|      5|		++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7689|      5|		YYFILL(1);
  ------------------
  |  |   53|      5|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      5|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      5|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 7690|      5|		yych = *YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7691|      5|		YYDEBUG(637, *YYCURSOR);
 7692|      5|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7692:7): [True: 0, False: 5]
  ------------------
 7693|      0|			if (yych == '\t') goto yy636;
  ------------------
  |  Branch (7693:8): [True: 0, False: 0]
  ------------------
 7694|      0|			goto yy86;
 7695|      5|		} else {
 7696|      5|			if (yych <= ' ') goto yy636;
  ------------------
  |  Branch (7696:8): [True: 0, False: 5]
  ------------------
 7697|      5|			if (yych == ')') goto yy713;
  ------------------
  |  Branch (7697:8): [True: 5, False: 0]
  ------------------
 7698|      0|			goto yy86;
 7699|      5|		}
 7700|     11|yy638:
 7701|     11|		YYDEBUG(638, *YYCURSOR);
 7702|     11|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7703|     11|		if (yych == 'N') goto yy715;
  ------------------
  |  Branch (7703:7): [True: 1, False: 10]
  ------------------
 7704|     10|		if (yych == 'n') goto yy715;
  ------------------
  |  Branch (7704:7): [True: 7, False: 3]
  ------------------
 7705|      3|		goto yy86;
 7706|      7|yy639:
 7707|      7|		YYDEBUG(639, *YYCURSOR);
 7708|      7|		++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7709|      7|		YYFILL(1);
  ------------------
  |  |   53|      7|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      7|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      7|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 7710|      7|		yych = *YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7711|      7|		YYDEBUG(640, *YYCURSOR);
 7712|      7|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7712:7): [True: 2, False: 5]
  ------------------
 7713|      2|			if (yych == '\t') goto yy639;
  ------------------
  |  Branch (7713:8): [True: 2, False: 0]
  ------------------
 7714|      0|			goto yy86;
 7715|      5|		} else {
 7716|      5|			if (yych <= ' ') goto yy639;
  ------------------
  |  Branch (7716:8): [True: 0, False: 5]
  ------------------
 7717|      5|			if (yych == ')') goto yy717;
  ------------------
  |  Branch (7717:8): [True: 3, False: 2]
  ------------------
 7718|      2|			goto yy86;
 7719|      5|		}
 7720|      8|yy641:
 7721|      8|		YYDEBUG(641, *YYCURSOR);
 7722|      8|		++YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7723|      8|		YYDEBUG(642, *YYCURSOR);
 7724|      8|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      8|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7725|      8|#line 1651 "Zend/zend_language_scanner.l"
 7726|      8|		{
 7727|      8|	RETURN_TOKEN(T_DOUBLE_CAST);
  ------------------
  |  | 1318|      8|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      8|		token = _token; \
  |  | 1320|      8|		goto emit_token; \
  |  | 1321|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7728|      8|}
 7729|      0|#line 7730 "Zend/zend_language_scanner.c"
 7730|     14|yy643:
 7731|     14|		YYDEBUG(643, *YYCURSOR);
 7732|     14|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7733|     14|		if (yych == 'R') goto yy719;
  ------------------
  |  Branch (7733:7): [True: 0, False: 14]
  ------------------
 7734|     14|		if (yych == 'r') goto yy719;
  ------------------
  |  Branch (7734:7): [True: 10, False: 4]
  ------------------
 7735|      4|		goto yy86;
 7736|     66|yy644:
 7737|     66|		YYDEBUG(644, *YYCURSOR);
 7738|     66|		++YYCURSOR;
  ------------------
  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7739|     66|		YYFILL(1);
  ------------------
  |  |   53|     66|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     66|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     66|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 66]
  |  |  ------------------
  ------------------
 7740|     66|		yych = *YYCURSOR;
  ------------------
  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7741|     66|		YYDEBUG(645, *YYCURSOR);
 7742|     66|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7742:7): [True: 15, False: 51]
  ------------------
 7743|     15|			if (yych == '\t') goto yy644;
  ------------------
  |  Branch (7743:8): [True: 0, False: 15]
  ------------------
 7744|     15|			goto yy86;
 7745|     51|		} else {
 7746|     51|			if (yych <= ' ') goto yy644;
  ------------------
  |  Branch (7746:8): [True: 12, False: 39]
  ------------------
 7747|     39|			if (yych == ')') goto yy721;
  ------------------
  |  Branch (7747:8): [True: 33, False: 6]
  ------------------
 7748|      6|			goto yy86;
 7749|     39|		}
 7750|     92|yy646:
 7751|     92|		YYDEBUG(646, *YYCURSOR);
 7752|     92|		++YYCURSOR;
  ------------------
  |  |   54|     92|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     92|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     92|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7753|     92|		YYFILL(1);
  ------------------
  |  |   53|     92|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     92|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     92|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     92|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     92|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     92|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     92|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     92|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 92]
  |  |  ------------------
  ------------------
 7754|     92|		yych = *YYCURSOR;
  ------------------
  |  |   54|     92|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     92|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     92|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7755|     92|		YYDEBUG(647, *YYCURSOR);
 7756|     92|		if (yych <= 0x1F) {
  ------------------
  |  Branch (7756:7): [True: 10, False: 82]
  ------------------
 7757|     10|			if (yych == '\t') goto yy646;
  ------------------
  |  Branch (7757:8): [True: 5, False: 5]
  ------------------
 7758|      5|			goto yy86;
 7759|     82|		} else {
 7760|     82|			if (yych <= ' ') goto yy646;
  ------------------
  |  Branch (7760:8): [True: 24, False: 58]
  ------------------
 7761|     58|			if (yych == ')') goto yy723;
  ------------------
  |  Branch (7761:8): [True: 28, False: 30]
  ------------------
 7762|     30|			goto yy86;
 7763|     58|		}
 7764|     11|yy648:
 7765|     11|		YYDEBUG(648, *YYCURSOR);
 7766|     11|		++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7767|     11|		YYDEBUG(649, *YYCURSOR);
 7768|     11|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     11|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7769|     11|#line 1709 "Zend/zend_language_scanner.l"
 7770|     11|		{
 7771|     11|	RETURN_TOKEN(T_UNSET_CAST);
  ------------------
  |  | 1318|     11|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     11|		token = _token; \
  |  | 1320|     11|		goto emit_token; \
  |  | 1321|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7772|     11|}
 7773|      0|#line 7774 "Zend/zend_language_scanner.c"
 7774|    108|yy650:
 7775|    108|		YYDEBUG(650, *YYCURSOR);
 7776|    108|		yyaccept = 4;
 7777|    108|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    108|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    108|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    108|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    108|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    108|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    108|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7778|    108|		if (yych == 'T') goto yy725;
  ------------------
  |  Branch (7778:7): [True: 0, False: 108]
  ------------------
 7779|    108|		if (yych == 't') goto yy725;
  ------------------
  |  Branch (7779:7): [True: 108, False: 0]
  ------------------
 7780|      0|		goto yy48;
 7781|     21|yy651:
 7782|     21|		YYDEBUG(651, *YYCURSOR);
 7783|     21|		yyaccept = 4;
 7784|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7785|     21|		if (yych == 'E') goto yy727;
  ------------------
  |  Branch (7785:7): [True: 1, False: 20]
  ------------------
 7786|     20|		if (yych == 'e') goto yy727;
  ------------------
  |  Branch (7786:7): [True: 20, False: 0]
  ------------------
 7787|      0|		goto yy48;
 7788|      2|yy652:
 7789|      2|		YYDEBUG(652, *YYCURSOR);
 7790|      2|		yyaccept = 4;
 7791|      2|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      2|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7792|      2|		if (yych == 'E') goto yy729;
  ------------------
  |  Branch (7792:7): [True: 0, False: 2]
  ------------------
 7793|      2|		if (yych == 'e') goto yy729;
  ------------------
  |  Branch (7793:7): [True: 2, False: 0]
  ------------------
 7794|      0|		goto yy48;
 7795|     81|yy653:
 7796|     81|		YYDEBUG(653, *YYCURSOR);
 7797|     81|		yyaccept = 59;
 7798|     81|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     81|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     81|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7799|     81|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7799:7): [True: 2, False: 79]
  ------------------
 7800|      2|			goto yy47;
 7801|      2|		}
 7802|     79|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7802:7): [True: 0, False: 79]
  ------------------
 7803|     79|yy654:
 7804|     79|		YYDEBUG(654, *YYCURSOR);
 7805|     79|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     79|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     79|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     79|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     79|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     79|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     79|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     79|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     79|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7806|     79|#line 1497 "Zend/zend_language_scanner.l"
 7807|     79|		{
 7808|     79|	RETURN_TOKEN_WITH_IDENT(T_DECLARE);
  ------------------
  |  | 1334|     79|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     79|		token = _token; \
  |  | 1336|     79|		goto emit_token_with_ident; \
  |  | 1337|     79|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7809|     79|}
 7810|      0|#line 7811 "Zend/zend_language_scanner.c"
 7811|     12|yy655:
 7812|     12|		YYDEBUG(655, *YYCURSOR);
 7813|     12|		yyaccept = 60;
 7814|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7815|     12|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7815:7): [True: 0, False: 12]
  ------------------
 7816|      0|			goto yy47;
 7817|      0|		}
 7818|     12|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7818:7): [True: 0, False: 12]
  ------------------
 7819|     12|yy656:
 7820|     12|		YYDEBUG(656, *YYCURSOR);
 7821|     12|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     12|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7822|     12|#line 1529 "Zend/zend_language_scanner.l"
 7823|     12|		{
 7824|     12|	RETURN_TOKEN_WITH_IDENT(T_DEFAULT);
  ------------------
  |  | 1334|     12|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     12|		token = _token; \
  |  | 1336|     12|		goto emit_token_with_ident; \
  |  | 1337|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7825|     12|}
 7826|      0|#line 7827 "Zend/zend_language_scanner.c"
 7827|      1|yy657:
 7828|      1|		YYDEBUG(657, *YYCURSOR);
 7829|      1|		yyaccept = 4;
 7830|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7831|      1|		if (yych == 'A') goto yy731;
  ------------------
  |  Branch (7831:7): [True: 1, False: 0]
  ------------------
 7832|      0|		if (yych == 'a') goto yy731;
  ------------------
  |  Branch (7832:7): [True: 0, False: 0]
  ------------------
 7833|      0|		goto yy48;
 7834|      0|yy658:
 7835|      0|		YYDEBUG(658, *YYCURSOR);
 7836|      0|		yyaccept = 4;
 7837|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7838|      0|		if (yych == 'A') goto yy732;
  ------------------
  |  Branch (7838:7): [True: 0, False: 0]
  ------------------
 7839|      0|		if (yych == 'a') goto yy732;
  ------------------
  |  Branch (7839:7): [True: 0, False: 0]
  ------------------
 7840|      0|		goto yy48;
 7841|      0|yy659:
 7842|      0|		YYDEBUG(659, *YYCURSOR);
 7843|      0|		yyaccept = 4;
 7844|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7845|      0|		if (yych == 'C') goto yy733;
  ------------------
  |  Branch (7845:7): [True: 0, False: 0]
  ------------------
 7846|      0|		if (yych == 'c') goto yy733;
  ------------------
  |  Branch (7846:7): [True: 0, False: 0]
  ------------------
 7847|      0|		goto yy48;
 7848|      2|yy660:
 7849|      2|		YYDEBUG(660, *YYCURSOR);
 7850|      2|		yyaccept = 4;
 7851|      2|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      2|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7852|      2|		if (yych == 'E') goto yy734;
  ------------------
  |  Branch (7852:7): [True: 0, False: 2]
  ------------------
 7853|      2|		if (yych == 'e') goto yy734;
  ------------------
  |  Branch (7853:7): [True: 0, False: 2]
  ------------------
 7854|      2|		goto yy48;
 7855|     15|yy661:
 7856|     15|		YYDEBUG(661, *YYCURSOR);
 7857|     15|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7858|     15|		if (yych == 'T') goto yy736;
  ------------------
  |  Branch (7858:7): [True: 0, False: 15]
  ------------------
 7859|     15|		if (yych == 't') goto yy736;
  ------------------
  |  Branch (7859:7): [True: 10, False: 5]
  ------------------
 7860|      5|		goto yy86;
 7861|     50|yy662:
 7862|     50|		YYDEBUG(662, *YYCURSOR);
 7863|     50|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     50|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     50|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     50|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7864|     50|		if (yych == 'P') goto yy737;
  ------------------
  |  Branch (7864:7): [True: 0, False: 50]
  ------------------
 7865|     50|		if (yych == 'p') goto yy737;
  ------------------
  |  Branch (7865:7): [True: 36, False: 14]
  ------------------
 7866|     14|		goto yy86;
 7867|    148|yy663:
 7868|    148|		YYDEBUG(663, *YYCURSOR);
 7869|    148|		++YYCURSOR;
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7870|    148|		YYFILL(1);
  ------------------
  |  |   53|    148|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    148|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    148|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 148]
  |  |  ------------------
  ------------------
 7871|    148|		yych = *YYCURSOR;
  ------------------
  |  |   54|    148|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    148|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    148|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7872|    148|		if (yych <= '\n') {
  ------------------
  |  Branch (7872:7): [True: 81, False: 67]
  ------------------
 7873|     81|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7873:8): [True: 11, False: 70]
  ------------------
 7874|     70|			if (yych <= '\t') goto yy586;
  ------------------
  |  Branch (7874:8): [True: 5, False: 65]
  ------------------
 7875|     65|			goto yy588;
 7876|     70|		} else {
 7877|     67|			if (yych == '\r') goto yy588;
  ------------------
  |  Branch (7877:8): [True: 49, False: 18]
  ------------------
 7878|     18|			goto yy586;
 7879|     67|		}
 7880|    628|yy664:
 7881|    628|		YYDEBUG(664, *YYCURSOR);
 7882|    628|		++YYCURSOR;
  ------------------
  |  |   54|    628|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    628|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    628|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7883|    628|		YYFILL(1);
  ------------------
  |  |   53|    628|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    628|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    628|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    628|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    628|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    628|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    628|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    628|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 628]
  |  |  ------------------
  ------------------
 7884|    628|		yych = *YYCURSOR;
  ------------------
  |  |   54|    628|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    628|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    628|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7885|    628|		if (yych <= '\f') {
  ------------------
  |  Branch (7885:7): [True: 13, False: 615]
  ------------------
 7886|     13|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7886:8): [True: 12, False: 1]
  ------------------
 7887|      1|			if (yych == '\n') goto yy495;
  ------------------
  |  Branch (7887:8): [True: 1, False: 0]
  ------------------
 7888|      0|			goto yy586;
 7889|    615|		} else {
 7890|    615|			if (yych <= '\r') goto yy495;
  ------------------
  |  Branch (7890:8): [True: 8, False: 607]
  ------------------
 7891|    607|			if (yych == '*') goto yy738;
  ------------------
  |  Branch (7891:8): [True: 542, False: 65]
  ------------------
 7892|     65|			goto yy586;
 7893|    607|		}
 7894|    282|yy665:
 7895|    282|		YYDEBUG(665, *YYCURSOR);
 7896|    282|		yyaccept = 53;
 7897|    282|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    282|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    282|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7898|    282|		YYFILL(1);
  ------------------
  |  |   53|    282|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    282|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    282|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    282|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 282]
  |  |  ------------------
  ------------------
 7899|    282|		yych = *YYCURSOR;
  ------------------
  |  |   54|    282|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    282|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    282|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7900|    282|		if (yych <= '\n') {
  ------------------
  |  Branch (7900:7): [True: 34, False: 248]
  ------------------
 7901|     34|			if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (7901:8): [True: 6, False: 28]
  ------------------
 7902|     28|			if (yych <= '\t') goto yy586;
  ------------------
  |  Branch (7902:8): [True: 7, False: 21]
  ------------------
 7903|     21|			goto yy495;
 7904|    248|		} else {
 7905|    248|			if (yych == '\r') goto yy495;
  ------------------
  |  Branch (7905:8): [True: 7, False: 241]
  ------------------
 7906|    241|			goto yy586;
 7907|    248|		}
 7908|    553|yy666:
 7909|    553|		YYDEBUG(666, *YYCURSOR);
 7910|    553|		yyaccept = 53;
 7911|    553|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    553|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    553|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    553|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    553|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    553|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    553|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7912|    553|		YYFILL(1);
  ------------------
  |  |   53|    553|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    553|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    553|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    553|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    553|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    553|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    553|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    553|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 553]
  |  |  ------------------
  ------------------
 7913|    553|		yych = *YYCURSOR;
  ------------------
  |  |   54|    553|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    553|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    553|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7914|    553|		if (yych <= '\r') {
  ------------------
  |  Branch (7914:7): [True: 34, False: 519]
  ------------------
 7915|     34|			if (yych <= '\t') {
  ------------------
  |  Branch (7915:8): [True: 0, False: 34]
  ------------------
 7916|      0|				if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (7916:9): [True: 0, False: 0]
  ------------------
 7917|      0|				goto yy586;
 7918|     34|			} else {
 7919|     34|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (7919:9): [True: 15, False: 19]
  ------------------
 7920|     19|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (7920:9): [True: 2, False: 17]
  ------------------
 7921|     17|				goto yy495;
 7922|     19|			}
 7923|    519|		} else {
 7924|    519|			if (yych <= 'X') {
  ------------------
  |  Branch (7924:8): [True: 49, False: 470]
  ------------------
 7925|     49|				if (yych <= 'W') goto yy586;
  ------------------
  |  Branch (7925:9): [True: 47, False: 2]
  ------------------
 7926|      2|				goto yy740;
 7927|    470|			} else {
 7928|    470|				if (yych == 'x') goto yy740;
  ------------------
  |  Branch (7928:9): [True: 211, False: 259]
  ------------------
 7929|    259|				goto yy586;
 7930|    470|			}
 7931|    519|		}
 7932|    217|yy667:
 7933|    217|		YYDEBUG(667, *YYCURSOR);
 7934|    217|		yyaccept = 53;
 7935|    217|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    217|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    217|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7936|    217|		YYFILL(1);
  ------------------
  |  |   53|    217|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    217|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    217|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    217|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 217]
  |  |  ------------------
  ------------------
 7937|    217|		yych = *YYCURSOR;
  ------------------
  |  |   54|    217|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7938|    217|		if (yych <= '\r') {
  ------------------
  |  Branch (7938:7): [True: 12, False: 205]
  ------------------
 7939|     12|			if (yych <= '\t') {
  ------------------
  |  Branch (7939:8): [True: 3, False: 9]
  ------------------
 7940|      3|				if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (7940:9): [True: 0, False: 3]
  ------------------
 7941|      3|				goto yy586;
 7942|      9|			} else {
 7943|      9|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (7943:9): [True: 6, False: 3]
  ------------------
 7944|      3|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (7944:9): [True: 0, False: 3]
  ------------------
 7945|      3|				goto yy495;
 7946|      3|			}
 7947|    205|		} else {
 7948|    205|			if (yych <= 'M') {
  ------------------
  |  Branch (7948:8): [True: 150, False: 55]
  ------------------
 7949|    150|				if (yych <= 'L') goto yy586;
  ------------------
  |  Branch (7949:9): [True: 13, False: 137]
  ------------------
 7950|    137|				goto yy741;
 7951|    150|			} else {
 7952|     55|				if (yych == 'm') goto yy741;
  ------------------
  |  Branch (7952:9): [True: 43, False: 12]
  ------------------
 7953|     12|				goto yy586;
 7954|     55|			}
 7955|    205|		}
 7956|    371|yy668:
 7957|    371|		YYDEBUG(668, *YYCURSOR);
 7958|    371|		++YYCURSOR;
  ------------------
  |  |   54|    371|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    371|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    371|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7959|    371|		YYFILL(1);
  ------------------
  |  |   53|    371|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    371|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    371|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    371|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    371|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    371|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    371|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    371|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 371]
  |  |  ------------------
  ------------------
 7960|    371|		yych = *YYCURSOR;
  ------------------
  |  |   54|    371|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    371|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    371|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7961|    371|		YYDEBUG(669, *YYCURSOR);
 7962|    371|		if (yych <= '*') {
  ------------------
  |  Branch (7962:7): [True: 133, False: 238]
  ------------------
 7963|    133|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (7963:8): [True: 14, False: 119]
  ------------------
 7964|    119|			if (yych <= ')') goto yy590;
  ------------------
  |  Branch (7964:8): [True: 78, False: 41]
  ------------------
 7965|     41|			goto yy668;
 7966|    238|		} else {
 7967|    238|			if (yych == '/') goto yy495;
  ------------------
  |  Branch (7967:8): [True: 173, False: 65]
  ------------------
 7968|     65|			goto yy590;
 7969|    238|		}
 7970|    291|yy670:
 7971|    291|		YYDEBUG(670, *YYCURSOR);
 7972|    291|		yyaccept = 61;
 7973|    291|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    291|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    291|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    291|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    291|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    291|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    291|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7974|    291|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7974:7): [True: 7, False: 284]
  ------------------
 7975|      7|			goto yy47;
 7976|      7|		}
 7977|    284|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7977:7): [True: 0, False: 284]
  ------------------
 7978|    284|yy671:
 7979|    284|		YYDEBUG(671, *YYCURSOR);
 7980|    284|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    284|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    284|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    284|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    284|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    284|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    284|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    284|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    284|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7981|    284|#line 1578 "Zend/zend_language_scanner.l"
 7982|    284|		{
 7983|    284|	RETURN_TOKEN_WITH_IDENT(T_EXTENDS);
  ------------------
  |  | 1334|    284|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    284|		token = _token; \
  |  | 1336|    284|		goto emit_token_with_ident; \
  |  | 1337|    284|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7984|    284|}
 7985|      0|#line 7986 "Zend/zend_language_scanner.c"
 7986|     40|yy672:
 7987|     40|		YYDEBUG(672, *YYCURSOR);
 7988|     40|		yyaccept = 62;
 7989|     40|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     40|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7990|     40|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (7990:7): [True: 1, False: 39]
  ------------------
 7991|      1|			goto yy47;
 7992|      1|		}
 7993|     39|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (7993:7): [True: 0, False: 39]
  ------------------
 7994|     39|yy673:
 7995|     39|		YYDEBUG(673, *YYCURSOR);
 7996|     39|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     39|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     39|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 7997|     39|#line 1445 "Zend/zend_language_scanner.l"
 7998|     39|		{
 7999|     39|	RETURN_TOKEN_WITH_IDENT(T_FINALLY);
  ------------------
  |  | 1334|     39|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     39|		token = _token; \
  |  | 1336|     39|		goto emit_token_with_ident; \
  |  | 1337|     39|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8000|     39|}
 8001|      0|#line 8002 "Zend/zend_language_scanner.c"
 8002|    208|yy674:
 8003|    208|		YYDEBUG(674, *YYCURSOR);
 8004|    208|		yyaccept = 63;
 8005|    208|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    208|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    208|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    208|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    208|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    208|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    208|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8006|    208|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8006:7): [True: 0, False: 208]
  ------------------
 8007|      0|			goto yy47;
 8008|      0|		}
 8009|    208|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8009:7): [True: 2, False: 206]
  ------------------
 8010|    208|yy675:
 8011|    208|		YYDEBUG(675, *YYCURSOR);
 8012|    208|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    208|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    208|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    208|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    208|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    208|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    208|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    208|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    208|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8013|    208|#line 1489 "Zend/zend_language_scanner.l"
 8014|    208|		{
 8015|    208|	RETURN_TOKEN_WITH_IDENT(T_FOREACH);
  ------------------
  |  | 1334|    208|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    208|		token = _token; \
  |  | 1336|    208|		goto emit_token_with_ident; \
  |  | 1337|    208|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8016|    208|}
 8017|      0|#line 8018 "Zend/zend_language_scanner.c"
 8018|  1.70k|yy676:
 8019|  1.70k|		YYDEBUG(676, *YYCURSOR);
 8020|  1.70k|		yyaccept = 4;
 8021|  1.70k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.70k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.70k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.70k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.70k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.70k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.70k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8022|  1.70k|		if (yych == 'N') goto yy742;
  ------------------
  |  Branch (8022:7): [True: 4, False: 1.69k]
  ------------------
 8023|  1.69k|		if (yych == 'n') goto yy742;
  ------------------
  |  Branch (8023:7): [True: 1.68k, False: 7]
  ------------------
 8024|      7|		goto yy48;
 8025|    155|yy677:
 8026|    155|		YYDEBUG(677, *YYCURSOR);
 8027|    155|		yyaccept = 4;
 8028|    155|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    155|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    155|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    155|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    155|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8029|    155|		if (yych == 'N') goto yy744;
  ------------------
  |  Branch (8029:7): [True: 43, False: 112]
  ------------------
 8030|    112|		if (yych == 'n') goto yy744;
  ------------------
  |  Branch (8030:7): [True: 90, False: 22]
  ------------------
 8031|     22|		goto yy48;
 8032|     44|yy678:
 8033|     44|		YYDEBUG(678, *YYCURSOR);
 8034|     44|		yyaccept = 64;
 8035|     44|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     44|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     44|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     44|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     44|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     44|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     44|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8036|     44|		if (yych <= '\\') {
  ------------------
  |  Branch (8036:7): [True: 29, False: 15]
  ------------------
 8037|     29|			if (yych <= '@') {
  ------------------
  |  Branch (8037:8): [True: 27, False: 2]
  ------------------
 8038|     27|				if (yych <= '/') goto yy679;
  ------------------
  |  Branch (8038:9): [True: 26, False: 1]
  ------------------
 8039|      1|				if (yych <= '9') goto yy47;
  ------------------
  |  Branch (8039:9): [True: 0, False: 1]
  ------------------
 8040|      2|			} else {
 8041|      2|				if (yych <= 'Z') goto yy47;
  ------------------
  |  Branch (8041:9): [True: 1, False: 1]
  ------------------
 8042|      1|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (8042:9): [True: 0, False: 1]
  ------------------
 8043|      1|			}
 8044|     29|		} else {
 8045|     15|			if (yych <= '`') {
  ------------------
  |  Branch (8045:8): [True: 4, False: 11]
  ------------------
 8046|      4|				if (yych == '_') goto yy745;
  ------------------
  |  Branch (8046:9): [True: 4, False: 0]
  ------------------
 8047|     11|			} else {
 8048|     11|				if (yych <= 'z') goto yy47;
  ------------------
  |  Branch (8048:9): [True: 4, False: 7]
  ------------------
 8049|      7|				if (yych >= 0x80) goto yy47;
  ------------------
  |  Branch (8049:9): [True: 1, False: 6]
  ------------------
 8050|      7|			}
 8051|     15|		}
 8052|     34|yy679:
 8053|     34|		YYDEBUG(679, *YYCURSOR);
 8054|     34|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     34|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8055|     34|#line 1721 "Zend/zend_language_scanner.l"
 8056|     34|		{
 8057|     34|	RETURN_TOKEN_WITH_IDENT(T_INCLUDE);
  ------------------
  |  | 1334|     34|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     34|		token = _token; \
  |  | 1336|     34|		goto emit_token_with_ident; \
  |  | 1337|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8058|     34|}
 8059|      0|#line 8060 "Zend/zend_language_scanner.c"
 8060|     24|yy680:
 8061|     24|		YYDEBUG(680, *YYCURSOR);
 8062|     24|		yyaccept = 4;
 8063|     24|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     24|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8064|     24|		if (yych == 'E') goto yy746;
  ------------------
  |  Branch (8064:7): [True: 0, False: 24]
  ------------------
 8065|     24|		if (yych == 'e') goto yy746;
  ------------------
  |  Branch (8065:7): [True: 24, False: 0]
  ------------------
 8066|      0|		goto yy48;
 8067|     15|yy681:
 8068|     15|		YYDEBUG(681, *YYCURSOR);
 8069|     15|		yyaccept = 4;
 8070|     15|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     15|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8071|     15|		if (yych == 'O') goto yy747;
  ------------------
  |  Branch (8071:7): [True: 0, False: 15]
  ------------------
 8072|     15|		if (yych == 'o') goto yy747;
  ------------------
  |  Branch (8072:7): [True: 15, False: 0]
  ------------------
 8073|      0|		goto yy48;
 8074|    210|yy682:
 8075|    210|		YYDEBUG(682, *YYCURSOR);
 8076|    210|		yyaccept = 4;
 8077|    210|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    210|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    210|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    210|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    210|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    210|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    210|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8078|    210|		if (yych == 'C') goto yy748;
  ------------------
  |  Branch (8078:7): [True: 12, False: 198]
  ------------------
 8079|    198|		if (yych == 'c') goto yy748;
  ------------------
  |  Branch (8079:7): [True: 193, False: 5]
  ------------------
 8080|      5|		goto yy48;
 8081|    289|yy683:
 8082|    289|		YYDEBUG(683, *YYCURSOR);
 8083|    289|		yyaccept = 4;
 8084|    289|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    289|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    289|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    289|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    289|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    289|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    289|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8085|    289|		if (yych == 'C') goto yy749;
  ------------------
  |  Branch (8085:7): [True: 0, False: 289]
  ------------------
 8086|    289|		if (yych == 'c') goto yy749;
  ------------------
  |  Branch (8086:7): [True: 276, False: 13]
  ------------------
 8087|     13|		goto yy48;
 8088|    524|yy684:
 8089|    524|		YYDEBUG(684, *YYCURSOR);
 8090|    524|		yyaccept = 65;
 8091|    524|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    524|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    524|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    524|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    524|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    524|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    524|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8092|    524|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8092:7): [True: 0, False: 524]
  ------------------
 8093|      0|			goto yy47;
 8094|      0|		}
 8095|    524|		if (yych == '(') goto yy750;
  ------------------
  |  Branch (8095:7): [True: 437, False: 87]
  ------------------
 8096|     87|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8096:7): [True: 0, False: 87]
  ------------------
 8097|    514|yy685:
 8098|    514|		YYDEBUG(685, *YYCURSOR);
 8099|    514|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    514|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    514|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    514|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    514|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    514|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    514|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    514|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    514|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8100|    514|#line 1777 "Zend/zend_language_scanner.l"
 8101|    514|		{
 8102|    514|	RETURN_TOKEN_WITH_IDENT(T_PRIVATE);
  ------------------
  |  | 1334|    514|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    514|		token = _token; \
  |  | 1336|    514|		goto emit_token_with_ident; \
  |  | 1337|    514|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8103|    514|}
 8104|      0|#line 8105 "Zend/zend_language_scanner.c"
 8105|    100|yy686:
 8106|    100|		YYDEBUG(686, *YYCURSOR);
 8107|    100|		yyaccept = 4;
 8108|    100|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    100|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    100|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    100|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    100|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8109|    100|		if (yych == 'E') goto yy751;
  ------------------
  |  Branch (8109:7): [True: 0, False: 100]
  ------------------
 8110|    100|		if (yych == 'e') goto yy751;
  ------------------
  |  Branch (8110:7): [True: 100, False: 0]
  ------------------
 8111|      0|		goto yy48;
 8112|     11|yy687:
 8113|     11|		YYDEBUG(687, *YYCURSOR);
 8114|     11|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8115|     11|		if (yych == 'S') goto yy752;
  ------------------
  |  Branch (8115:7): [True: 0, False: 11]
  ------------------
 8116|     11|		if (yych == 's') goto yy752;
  ------------------
  |  Branch (8116:7): [True: 11, False: 0]
  ------------------
 8117|      0|		goto yy86;
 8118|    156|yy688:
 8119|    156|		YYDEBUG(688, *YYCURSOR);
 8120|    156|		yyaccept = 4;
 8121|    156|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    156|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    156|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    156|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    156|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    156|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    156|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8122|    156|		if (yych == 'Y') goto yy753;
  ------------------
  |  Branch (8122:7): [True: 0, False: 156]
  ------------------
 8123|    156|		if (yych == 'y') goto yy753;
  ------------------
  |  Branch (8123:7): [True: 51, False: 105]
  ------------------
 8124|    105|		goto yy48;
 8125|    105|yy689:
 8126|     98|		YYDEBUG(689, *YYCURSOR);
 8127|     98|		yyaccept = 66;
 8128|     98|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     98|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     98|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     98|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     98|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     98|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     98|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8129|     98|		if (yych <= '\\') {
  ------------------
  |  Branch (8129:7): [True: 68, False: 30]
  ------------------
 8130|     68|			if (yych <= '@') {
  ------------------
  |  Branch (8130:8): [True: 62, False: 6]
  ------------------
 8131|     62|				if (yych <= '/') goto yy690;
  ------------------
  |  Branch (8131:9): [True: 54, False: 8]
  ------------------
 8132|      8|				if (yych <= '9') goto yy47;
  ------------------
  |  Branch (8132:9): [True: 0, False: 8]
  ------------------
 8133|      8|			} else {
 8134|      6|				if (yych <= 'Z') goto yy47;
  ------------------
  |  Branch (8134:9): [True: 1, False: 5]
  ------------------
 8135|      5|				if (yych >= '\\') goto yy164;
  ------------------
  |  Branch (8135:9): [True: 0, False: 5]
  ------------------
 8136|      5|			}
 8137|     68|		} else {
 8138|     30|			if (yych <= '`') {
  ------------------
  |  Branch (8138:8): [True: 19, False: 11]
  ------------------
 8139|     19|				if (yych == '_') goto yy755;
  ------------------
  |  Branch (8139:9): [True: 19, False: 0]
  ------------------
 8140|     19|			} else {
 8141|     11|				if (yych <= 'z') goto yy47;
  ------------------
  |  Branch (8141:9): [True: 10, False: 1]
  ------------------
 8142|      1|				if (yych >= 0x80) goto yy47;
  ------------------
  |  Branch (8142:9): [True: 1, False: 0]
  ------------------
 8143|      1|			}
 8144|     30|		}
 8145|     67|yy690:
 8146|     67|		YYDEBUG(690, *YYCURSOR);
 8147|     67|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     67|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8148|     67|#line 1729 "Zend/zend_language_scanner.l"
 8149|     67|		{
 8150|     67|	RETURN_TOKEN_WITH_IDENT(T_REQUIRE);
  ------------------
  |  | 1334|     67|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     67|		token = _token; \
  |  | 1336|     67|		goto emit_token_with_ident; \
  |  | 1337|     67|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8151|     67|}
 8152|      0|#line 8153 "Zend/zend_language_scanner.c"
 8153|     94|yy691:
 8154|     94|		YYDEBUG(691, *YYCURSOR);
 8155|     94|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     94|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     94|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     94|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8156|     94|		if (yych == 'R') goto yy756;
  ------------------
  |  Branch (8156:7): [True: 25, False: 69]
  ------------------
 8157|     69|		if (yych == 'r') goto yy756;
  ------------------
  |  Branch (8157:7): [True: 59, False: 10]
  ------------------
 8158|     10|		goto yy86;
 8159|  9.20k|yy692:
 8160|  9.20k|		YYDEBUG(692, *YYCURSOR);
 8161|  9.20k|		++YYCURSOR;
  ------------------
  |  |   54|  9.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8162|  9.20k|		YYFILL(1);
  ------------------
  |  |   53|  9.20k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  9.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  9.20k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  9.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  9.20k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  9.20k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  9.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  9.20k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 9.20k]
  |  |  ------------------
  ------------------
 8163|  9.20k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  9.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8164|  9.20k|		YYDEBUG(693, *YYCURSOR);
 8165|  9.20k|		if (yych <= '\n') {
  ------------------
  |  Branch (8165:7): [True: 848, False: 8.35k]
  ------------------
 8166|    848|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8166:8): [True: 119, False: 729]
  ------------------
 8167|    729|			if (yych <= '\t') goto yy692;
  ------------------
  |  Branch (8167:8): [True: 72, False: 657]
  ------------------
 8168|    657|			goto yy616;
 8169|  8.35k|		} else {
 8170|  8.35k|			if (yych == '\r') goto yy616;
  ------------------
  |  Branch (8170:8): [True: 462, False: 7.89k]
  ------------------
 8171|  7.89k|			goto yy692;
 8172|  8.35k|		}
 8173|  1.40k|yy694:
 8174|  1.40k|		YYDEBUG(694, *YYCURSOR);
 8175|  1.40k|		++YYCURSOR;
  ------------------
  |  |   54|  1.40k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8176|  1.40k|		YYFILL(1);
  ------------------
  |  |   53|  1.40k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.40k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.40k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.40k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.40k]
  |  |  ------------------
  ------------------
 8177|  1.40k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.40k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.40k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.40k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8178|  1.40k|		YYDEBUG(695, *YYCURSOR);
 8179|  1.40k|		if (yych <= ' ') {
  ------------------
  |  Branch (8179:7): [True: 112, False: 1.29k]
  ------------------
 8180|    112|			if (yych <= '\n') {
  ------------------
  |  Branch (8180:8): [True: 65, False: 47]
  ------------------
 8181|     65|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8181:9): [True: 17, False: 48]
  ------------------
 8182|     48|				if (yych <= 0x08) goto yy692;
  ------------------
  |  Branch (8182:9): [True: 8, False: 40]
  ------------------
 8183|     40|				if (yych <= '\t') goto yy694;
  ------------------
  |  Branch (8183:9): [True: 23, False: 17]
  ------------------
 8184|     17|				goto yy616;
 8185|     47|			} else {
 8186|     47|				if (yych == '\r') goto yy616;
  ------------------
  |  Branch (8186:9): [True: 22, False: 25]
  ------------------
 8187|     25|				if (yych <= 0x1F) goto yy692;
  ------------------
  |  Branch (8187:9): [True: 15, False: 10]
  ------------------
 8188|     10|				goto yy694;
 8189|     25|			}
 8190|  1.29k|		} else {
 8191|  1.29k|			if (yych <= '/') {
  ------------------
  |  Branch (8191:8): [True: 707, False: 583]
  ------------------
 8192|    707|				if (yych == '#') goto yy757;
  ------------------
  |  Branch (8192:9): [True: 66, False: 641]
  ------------------
 8193|    641|				if (yych <= '.') goto yy692;
  ------------------
  |  Branch (8193:9): [True: 84, False: 557]
  ------------------
 8194|    557|				goto yy758;
 8195|    641|			} else {
 8196|    583|				if (yych <= 'F') {
  ------------------
  |  Branch (8196:9): [True: 216, False: 367]
  ------------------
 8197|    216|					if (yych <= 'E') goto yy692;
  ------------------
  |  Branch (8197:10): [True: 139, False: 77]
  ------------------
 8198|     77|					goto yy759;
 8199|    367|				} else {
 8200|    367|					if (yych == 'f') goto yy759;
  ------------------
  |  Branch (8200:10): [True: 266, False: 101]
  ------------------
 8201|    101|					goto yy692;
 8202|    367|				}
 8203|    583|			}
 8204|  1.29k|		}
 8205|  3.20k|yy696:
 8206|  3.20k|		YYDEBUG(696, *YYCURSOR);
 8207|  3.20k|		++YYCURSOR;
  ------------------
  |  |   54|  3.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8208|  3.20k|		YYFILL(1);
  ------------------
  |  |   53|  3.20k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  3.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.20k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  3.20k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.20k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  3.20k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 3.20k]
  |  |  ------------------
  ------------------
 8209|  3.20k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  3.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8210|  3.20k|		YYDEBUG(697, *YYCURSOR);
 8211|  3.20k|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8211:7): [True: 241, False: 2.96k]
  ------------------
 8212|  2.96k|		if (yych == '*') goto yy760;
  ------------------
  |  Branch (8212:7): [True: 133, False: 2.83k]
  ------------------
 8213|  2.83k|		goto yy696;
 8214|  2.83k|yy698:
 8215|     52|		YYDEBUG(698, *YYCURSOR);
 8216|     52|		yyaccept = 4;
 8217|     52|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     52|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     52|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     52|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     52|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     52|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     52|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8218|     52|		if (yych == '_') goto yy762;
  ------------------
  |  Branch (8218:7): [True: 49, False: 3]
  ------------------
 8219|      3|		goto yy48;
 8220|     40|yy699:
 8221|     40|		YYDEBUG(699, *YYCURSOR);
 8222|     40|		yyaccept = 67;
 8223|     40|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     40|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8224|     40|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8224:7): [True: 0, False: 40]
  ------------------
 8225|      0|			goto yy47;
 8226|      0|		}
 8227|     40|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8227:7): [True: 1, False: 39]
  ------------------
 8228|     40|yy700:
 8229|     40|		YYDEBUG(700, *YYCURSOR);
 8230|     40|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     40|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8231|     40|#line 2280 "Zend/zend_language_scanner.l"
 8232|     40|		{
 8233|     40|	RETURN_TOKEN_WITH_IDENT(T_DIR);
  ------------------
  |  | 1334|     40|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     40|		token = _token; \
  |  | 1336|     40|		goto emit_token_with_ident; \
  |  | 1337|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8234|     40|}
 8235|      0|#line 8236 "Zend/zend_language_scanner.c"
 8236|     43|yy701:
 8237|     43|		YYDEBUG(701, *YYCURSOR);
 8238|     43|		yyaccept = 4;
 8239|     43|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     43|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8240|     43|		if (yych == '_') goto yy763;
  ------------------
  |  Branch (8240:7): [True: 43, False: 0]
  ------------------
 8241|      0|		goto yy48;
 8242|     13|yy702:
 8243|     13|		YYDEBUG(702, *YYCURSOR);
 8244|     13|		yyaccept = 4;
 8245|     13|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8246|     13|		if (yych == 'I') goto yy765;
  ------------------
  |  Branch (8246:7): [True: 11, False: 2]
  ------------------
 8247|      2|		if (yych == 'i') goto yy765;
  ------------------
  |  Branch (8247:7): [True: 2, False: 0]
  ------------------
 8248|      0|		goto yy48;
 8249|     40|yy703:
 8250|     40|		YYDEBUG(703, *YYCURSOR);
 8251|     40|		yyaccept = 4;
 8252|     40|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     40|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8253|     40|		if (yych == 'C') goto yy766;
  ------------------
  |  Branch (8253:7): [True: 28, False: 12]
  ------------------
 8254|     12|		if (yych == 'c') goto yy766;
  ------------------
  |  Branch (8254:7): [True: 9, False: 3]
  ------------------
 8255|      3|		goto yy48;
 8256|     12|yy704:
 8257|     12|		YYDEBUG(704, *YYCURSOR);
 8258|     12|		yyaccept = 4;
 8259|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8260|     12|		if (yych == '_') goto yy767;
  ------------------
  |  Branch (8260:7): [True: 12, False: 0]
  ------------------
 8261|      0|		goto yy48;
 8262|     26|yy705:
 8263|     26|		YYDEBUG(705, *YYCURSOR);
 8264|     26|		yyaccept = 4;
 8265|     26|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     26|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8266|     26|		if (yych == 'D') goto yy769;
  ------------------
  |  Branch (8266:7): [True: 25, False: 1]
  ------------------
 8267|      1|		if (yych == 'd') goto yy769;
  ------------------
  |  Branch (8267:7): [True: 0, False: 1]
  ------------------
 8268|      1|		goto yy48;
 8269|     45|yy706:
 8270|     45|		YYDEBUG(706, *YYCURSOR);
 8271|     45|		yyaccept = 4;
 8272|     45|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     45|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     45|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     45|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8273|     45|		if (yych == 'P') goto yy770;
  ------------------
  |  Branch (8273:7): [True: 32, False: 13]
  ------------------
 8274|     13|		if (yych == 'p') goto yy770;
  ------------------
  |  Branch (8274:7): [True: 4, False: 9]
  ------------------
 8275|      9|		goto yy48;
 8276|     29|yy707:
 8277|     29|		YYDEBUG(707, *YYCURSOR);
 8278|     29|		yyaccept = 4;
 8279|     29|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     29|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8280|     29|		if (yych == 'R') goto yy771;
  ------------------
  |  Branch (8280:7): [True: 28, False: 1]
  ------------------
 8281|      1|		if (yych == 'r') goto yy771;
  ------------------
  |  Branch (8281:7): [True: 0, False: 1]
  ------------------
 8282|      1|		goto yy48;
 8283|     16|yy708:
 8284|     16|		YYDEBUG(708, *YYCURSOR);
 8285|     16|		yyaccept = 4;
 8286|     16|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     16|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8287|     16|		if (yych == '_') goto yy772;
  ------------------
  |  Branch (8287:7): [True: 4, False: 12]
  ------------------
 8288|     12|		goto yy48;
 8289|    220|yy709:
 8290|    220|		YYDEBUG(709, *YYCURSOR);
 8291|    220|		++YYCURSOR;
  ------------------
  |  |   54|    220|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    220|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    220|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8292|    220|		YYFILL(1);
  ------------------
  |  |   53|    220|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    220|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    220|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    220|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    220|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    220|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    220|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    220|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 220]
  |  |  ------------------
  ------------------
 8293|    220|		yych = *YYCURSOR;
  ------------------
  |  |   54|    220|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    220|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    220|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8294|    220|		YYDEBUG(710, *YYCURSOR);
 8295|    220|		if (yych <= ' ') {
  ------------------
  |  Branch (8295:7): [True: 20, False: 200]
  ------------------
 8296|     20|			if (yych <= '\n') {
  ------------------
  |  Branch (8296:8): [True: 11, False: 9]
  ------------------
 8297|     11|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8297:9): [True: 6, False: 5]
  ------------------
 8298|      5|				if (yych <= 0x08) goto yy443;
  ------------------
  |  Branch (8298:9): [True: 0, False: 5]
  ------------------
 8299|      5|				if (yych <= '\t') goto yy709;
  ------------------
  |  Branch (8299:9): [True: 0, False: 5]
  ------------------
 8300|      5|				goto yy545;
 8301|      9|			} else {
 8302|      9|				if (yych == '\r') goto yy545;
  ------------------
  |  Branch (8302:9): [True: 7, False: 2]
  ------------------
 8303|      2|				if (yych <= 0x1F) goto yy443;
  ------------------
  |  Branch (8303:9): [True: 2, False: 0]
  ------------------
 8304|      0|				goto yy709;
 8305|      2|			}
 8306|    200|		} else {
 8307|    200|			if (yych <= ')') {
  ------------------
  |  Branch (8307:8): [True: 52, False: 148]
  ------------------
 8308|     52|				if (yych <= '"') goto yy443;
  ------------------
  |  Branch (8308:9): [True: 13, False: 39]
  ------------------
 8309|     39|				if (yych <= '#') goto yy773;
  ------------------
  |  Branch (8309:9): [True: 11, False: 28]
  ------------------
 8310|     28|				if (yych <= '$') goto yy774;
  ------------------
  |  Branch (8310:9): [True: 24, False: 4]
  ------------------
 8311|      4|				goto yy443;
 8312|    148|			} else {
 8313|    148|				if (yych <= '-') {
  ------------------
  |  Branch (8313:9): [True: 2, False: 146]
  ------------------
 8314|      2|					if (yych <= '*') goto yy547;
  ------------------
  |  Branch (8314:10): [True: 0, False: 2]
  ------------------
 8315|      2|					goto yy443;
 8316|    146|				} else {
 8317|    146|					if (yych <= '.') goto yy775;
  ------------------
  |  Branch (8317:10): [True: 18, False: 128]
  ------------------
 8318|    128|					if (yych <= '/') goto yy776;
  ------------------
  |  Branch (8318:10): [True: 57, False: 71]
  ------------------
 8319|     71|					goto yy443;
 8320|    128|				}
 8321|    148|			}
 8322|    200|		}
 8323|      0|yy711:
 8324|      0|		YYDEBUG(711, *YYCURSOR);
 8325|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8326|      0|		YYFILL(1);
  ------------------
  |  |   53|      0|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      0|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8327|      0|		yych = *YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8328|      0|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (8328:7): [True: 0, False: 0]
  ------------------
 8329|      0|			goto yy355;
 8330|      0|		}
 8331|      0|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8331:7): [True: 0, False: 0]
  ------------------
 8332|      0|		if (yych == '.') goto yy631;
  ------------------
  |  Branch (8332:7): [True: 0, False: 0]
  ------------------
 8333|      0|		goto yy230;
 8334|     22|yy712:
 8335|     22|		YYDEBUG(712, *YYCURSOR);
 8336|     22|		++YYCURSOR;
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8337|     22|		YYFILL(1);
  ------------------
  |  |   53|     22|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     22|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     22|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 22]
  |  |  ------------------
  ------------------
 8338|     22|		yych = *YYCURSOR;
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8339|     22|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (8339:7): [True: 0, False: 22]
  ------------------
 8340|      0|			goto yy355;
 8341|      0|		}
 8342|     22|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8342:7): [True: 0, False: 22]
  ------------------
 8343|     22|		if (yych == '/') goto yy545;
  ------------------
  |  Branch (8343:7): [True: 15, False: 7]
  ------------------
 8344|      7|		goto yy230;
 8345|      7|yy713:
 8346|      5|		YYDEBUG(713, *YYCURSOR);
 8347|      5|		++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8348|      5|		YYDEBUG(714, *YYCURSOR);
 8349|      5|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      5|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8350|      5|#line 1677 "Zend/zend_language_scanner.l"
 8351|      5|		{
 8352|      5|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|      5|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8353|      5|		zend_error(E_DEPRECATED, "Non-canonical cast (binary) is deprecated, use the (string) cast instead");
  ------------------
  |  |   36|      5|#define E_DEPRECATED		(1<<13L)
  ------------------
 8354|      5|		if (EG(exception)) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 8355|      0|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8356|      0|		}
 8357|      5|	}
 8358|      5|	RETURN_TOKEN(T_STRING_CAST);
  ------------------
  |  | 1318|      5|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      5|		token = _token; \
  |  | 1320|      5|		goto emit_token; \
  |  | 1321|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8359|      5|}
 8360|      0|#line 8361 "Zend/zend_language_scanner.c"
 8361|      8|yy715:
 8362|      8|		YYDEBUG(715, *YYCURSOR);
 8363|      8|		++YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8364|      8|		YYFILL(1);
  ------------------
  |  |   53|      8|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      8|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      8|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 8365|      8|		yych = *YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8366|      8|		YYDEBUG(716, *YYCURSOR);
 8367|      8|		if (yych <= 0x1F) {
  ------------------
  |  Branch (8367:7): [True: 5, False: 3]
  ------------------
 8368|      5|			if (yych == '\t') goto yy715;
  ------------------
  |  Branch (8368:8): [True: 0, False: 5]
  ------------------
 8369|      5|			goto yy86;
 8370|      5|		} else {
 8371|      3|			if (yych <= ' ') goto yy715;
  ------------------
  |  Branch (8371:8): [True: 0, False: 3]
  ------------------
 8372|      3|			if (yych == ')') goto yy777;
  ------------------
  |  Branch (8372:8): [True: 1, False: 2]
  ------------------
 8373|      2|			goto yy86;
 8374|      3|		}
 8375|      3|yy717:
 8376|      3|		YYDEBUG(717, *YYCURSOR);
 8377|      3|		++YYCURSOR;
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8378|      3|		YYDEBUG(718, *YYCURSOR);
 8379|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8380|      3|#line 1655 "Zend/zend_language_scanner.l"
 8381|      3|		{
 8382|      3|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|      3|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8383|      3|		zend_error(E_DEPRECATED, "Non-canonical cast (double) is deprecated, use the (float) cast instead");
  ------------------
  |  |   36|      3|#define E_DEPRECATED		(1<<13L)
  ------------------
 8384|      3|		if (EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 8385|      0|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8386|      0|		}
 8387|      3|	}
 8388|      3|	RETURN_TOKEN(T_DOUBLE_CAST);
  ------------------
  |  | 1318|      3|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      3|		token = _token; \
  |  | 1320|      3|		goto emit_token; \
  |  | 1321|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8389|      3|}
 8390|      0|#line 8391 "Zend/zend_language_scanner.c"
 8391|     17|yy719:
 8392|     17|		YYDEBUG(719, *YYCURSOR);
 8393|     17|		++YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8394|     17|		YYFILL(1);
  ------------------
  |  |   53|     17|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     17|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     17|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 17]
  |  |  ------------------
  ------------------
 8395|     17|		yych = *YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8396|     17|		YYDEBUG(720, *YYCURSOR);
 8397|     17|		if (yych <= 0x1F) {
  ------------------
  |  Branch (8397:7): [True: 0, False: 17]
  ------------------
 8398|      0|			if (yych == '\t') goto yy719;
  ------------------
  |  Branch (8398:8): [True: 0, False: 0]
  ------------------
 8399|      0|			goto yy86;
 8400|     17|		} else {
 8401|     17|			if (yych <= ' ') goto yy719;
  ------------------
  |  Branch (8401:8): [True: 7, False: 10]
  ------------------
 8402|     10|			if (yych == ')') goto yy779;
  ------------------
  |  Branch (8402:8): [True: 3, False: 7]
  ------------------
 8403|      7|			goto yy86;
 8404|     10|		}
 8405|     33|yy721:
 8406|     33|		YYDEBUG(721, *YYCURSOR);
 8407|     33|		++YYCURSOR;
  ------------------
  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8408|     33|		YYDEBUG(722, *YYCURSOR);
 8409|     33|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     33|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8410|     33|#line 1691 "Zend/zend_language_scanner.l"
 8411|     33|		{
 8412|     33|	RETURN_TOKEN(T_OBJECT_CAST);
  ------------------
  |  | 1318|     33|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     33|		token = _token; \
  |  | 1320|     33|		goto emit_token; \
  |  | 1321|     33|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8413|     33|}
 8414|      0|#line 8415 "Zend/zend_language_scanner.c"
 8415|     28|yy723:
 8416|     28|		YYDEBUG(723, *YYCURSOR);
 8417|     28|		++YYCURSOR;
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8418|     28|		YYDEBUG(724, *YYCURSOR);
 8419|     28|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     28|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8420|     28|#line 1673 "Zend/zend_language_scanner.l"
 8421|     28|		{
 8422|     28|	RETURN_TOKEN(T_STRING_CAST);
  ------------------
  |  | 1318|     28|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     28|		token = _token; \
  |  | 1320|     28|		goto emit_token; \
  |  | 1321|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8423|     28|}
 8424|      0|#line 8425 "Zend/zend_language_scanner.c"
 8425|    108|yy725:
 8426|    108|		YYDEBUG(725, *YYCURSOR);
 8427|    108|		yyaccept = 68;
 8428|    108|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    108|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    108|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    108|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    108|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    108|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    108|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8429|    108|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8429:7): [True: 6, False: 102]
  ------------------
 8430|      6|			goto yy47;
 8431|      6|		}
 8432|    102|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8432:7): [True: 0, False: 102]
  ------------------
 8433|    102|yy726:
 8434|    102|		YYDEBUG(726, *YYCURSOR);
 8435|    102|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    102|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    102|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    102|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    102|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    102|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    102|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    102|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    102|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8436|    102|#line 1769 "Zend/zend_language_scanner.l"
 8437|    102|		{
 8438|    102|	RETURN_TOKEN_WITH_IDENT(T_ABSTRACT);
  ------------------
  |  | 1334|    102|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    102|		token = _token; \
  |  | 1336|    102|		goto emit_token_with_ident; \
  |  | 1337|    102|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8439|    102|}
 8440|      0|#line 8441 "Zend/zend_language_scanner.c"
 8441|     21|yy727:
 8442|     21|		YYDEBUG(727, *YYCURSOR);
 8443|     21|		yyaccept = 69;
 8444|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8445|     21|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8445:7): [True: 1, False: 20]
  ------------------
 8446|      1|			goto yy47;
 8447|      1|		}
 8448|     20|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8448:7): [True: 0, False: 20]
  ------------------
 8449|     20|yy728:
 8450|     20|		YYDEBUG(728, *YYCURSOR);
 8451|     20|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     20|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8452|     20|#line 1821 "Zend/zend_language_scanner.l"
 8453|     20|		{
 8454|     20|	RETURN_TOKEN_WITH_IDENT(T_CALLABLE);
  ------------------
  |  | 1334|     20|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     20|		token = _token; \
  |  | 1336|     20|		goto emit_token_with_ident; \
  |  | 1337|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8455|     20|}
 8456|      0|#line 8457 "Zend/zend_language_scanner.c"
 8457|      2|yy729:
 8458|      2|		YYDEBUG(729, *YYCURSOR);
 8459|      2|		yyaccept = 70;
 8460|      2|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      2|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8461|      2|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8461:7): [True: 0, False: 2]
  ------------------
 8462|      0|			goto yy47;
 8463|      0|		}
 8464|      2|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8464:7): [True: 0, False: 2]
  ------------------
 8465|      2|yy730:
 8466|      2|		YYDEBUG(730, *YYCURSOR);
 8467|      2|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      2|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8468|      2|#line 1537 "Zend/zend_language_scanner.l"
 8469|      2|		{
 8470|      2|	RETURN_TOKEN_WITH_IDENT(T_CONTINUE);
  ------------------
  |  | 1334|      2|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      2|		token = _token; \
  |  | 1336|      2|		goto emit_token_with_ident; \
  |  | 1337|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8471|      2|}
 8472|      0|#line 8473 "Zend/zend_language_scanner.c"
 8473|      1|yy731:
 8474|      1|		YYDEBUG(731, *YYCURSOR);
 8475|      1|		yyaccept = 4;
 8476|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8477|      1|		if (yych == 'R') goto yy781;
  ------------------
  |  Branch (8477:7): [True: 1, False: 0]
  ------------------
 8478|      0|		if (yych == 'r') goto yy781;
  ------------------
  |  Branch (8478:7): [True: 0, False: 0]
  ------------------
 8479|      0|		goto yy48;
 8480|      0|yy732:
 8481|      0|		YYDEBUG(732, *YYCURSOR);
 8482|      0|		yyaccept = 4;
 8483|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8484|      0|		if (yych == 'C') goto yy782;
  ------------------
  |  Branch (8484:7): [True: 0, False: 0]
  ------------------
 8485|      0|		if (yych == 'c') goto yy782;
  ------------------
  |  Branch (8485:7): [True: 0, False: 0]
  ------------------
 8486|      0|		goto yy48;
 8487|      0|yy733:
 8488|      0|		YYDEBUG(733, *YYCURSOR);
 8489|      0|		yyaccept = 4;
 8490|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8491|      0|		if (yych == 'H') goto yy783;
  ------------------
  |  Branch (8491:7): [True: 0, False: 0]
  ------------------
 8492|      0|		if (yych == 'h') goto yy783;
  ------------------
  |  Branch (8492:7): [True: 0, False: 0]
  ------------------
 8493|      0|		goto yy48;
 8494|      0|yy734:
 8495|      0|		YYDEBUG(734, *YYCURSOR);
 8496|      0|		yyaccept = 71;
 8497|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8498|      0|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8498:7): [True: 0, False: 0]
  ------------------
 8499|      0|			goto yy47;
 8500|      0|		}
 8501|      0|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8501:7): [True: 0, False: 0]
  ------------------
 8502|      0|yy735:
 8503|      0|		YYDEBUG(735, *YYCURSOR);
 8504|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8505|      0|#line 1473 "Zend/zend_language_scanner.l"
 8506|      0|		{
 8507|      0|	RETURN_TOKEN_WITH_IDENT(T_ENDWHILE);
  ------------------
  |  | 1334|      0|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      0|		token = _token; \
  |  | 1336|      0|		goto emit_token_with_ident; \
  |  | 1337|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8508|      0|}
 8509|      0|#line 8510 "Zend/zend_language_scanner.c"
 8510|     10|yy736:
 8511|     10|		YYDEBUG(736, *YYCURSOR);
 8512|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8513|     10|		if (yych == 'E') goto yy785;
  ------------------
  |  Branch (8513:7): [True: 7, False: 3]
  ------------------
 8514|      3|		if (yych == 'e') goto yy785;
  ------------------
  |  Branch (8514:7): [True: 2, False: 1]
  ------------------
 8515|      1|		goto yy86;
 8516|     36|yy737:
 8517|     36|		YYDEBUG(737, *YYCURSOR);
 8518|     36|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8519|     36|		if (yych == 'L') goto yy786;
  ------------------
  |  Branch (8519:7): [True: 1, False: 35]
  ------------------
 8520|     35|		if (yych == 'l') goto yy786;
  ------------------
  |  Branch (8520:7): [True: 35, False: 0]
  ------------------
 8521|      0|		goto yy86;
 8522|  6.87k|yy738:
 8523|  6.87k|		YYDEBUG(738, *YYCURSOR);
 8524|  6.87k|		++YYCURSOR;
  ------------------
  |  |   54|  6.87k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.87k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8525|  6.87k|		YYFILL(1);
  ------------------
  |  |   53|  6.87k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  6.87k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  6.87k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  6.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  6.87k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  6.87k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  6.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  6.87k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6.87k]
  |  |  ------------------
  ------------------
 8526|  6.87k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  6.87k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.87k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8527|  6.87k|		YYDEBUG(739, *YYCURSOR);
 8528|  6.87k|		if (yych <= '\f') {
  ------------------
  |  Branch (8528:7): [True: 750, False: 6.12k]
  ------------------
 8529|    750|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8529:8): [True: 86, False: 664]
  ------------------
 8530|    664|			if (yych == '\n') goto yy787;
  ------------------
  |  Branch (8530:8): [True: 505, False: 159]
  ------------------
 8531|    159|			goto yy738;
 8532|  6.12k|		} else {
 8533|  6.12k|			if (yych <= '\r') goto yy787;
  ------------------
  |  Branch (8533:8): [True: 498, False: 5.62k]
  ------------------
 8534|  5.62k|			if (yych == '*') goto yy789;
  ------------------
  |  Branch (8534:8): [True: 183, False: 5.43k]
  ------------------
 8535|  5.43k|			goto yy738;
 8536|  5.62k|		}
 8537|    213|yy740:
 8538|    213|		YYDEBUG(740, *YYCURSOR);
 8539|    213|		++YYCURSOR;
  ------------------
  |  |   54|    213|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8540|    213|		YYFILL(1);
  ------------------
  |  |   53|    213|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    213|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    213|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    213|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 213]
  |  |  ------------------
  ------------------
 8541|    213|		yych = *YYCURSOR;
  ------------------
  |  |   54|    213|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8542|    213|		if (yych <= '\r') {
  ------------------
  |  Branch (8542:7): [True: 7, False: 206]
  ------------------
 8543|      7|			if (yych <= '\t') {
  ------------------
  |  Branch (8543:8): [True: 0, False: 7]
  ------------------
 8544|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8544:9): [True: 0, False: 0]
  ------------------
 8545|      0|				goto yy586;
 8546|      7|			} else {
 8547|      7|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (8547:9): [True: 0, False: 7]
  ------------------
 8548|      7|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (8548:9): [True: 6, False: 1]
  ------------------
 8549|      1|				goto yy495;
 8550|      7|			}
 8551|    206|		} else {
 8552|    206|			if (yych <= 'T') {
  ------------------
  |  Branch (8552:8): [True: 48, False: 158]
  ------------------
 8553|     48|				if (yych <= 'S') goto yy586;
  ------------------
  |  Branch (8553:9): [True: 46, False: 2]
  ------------------
 8554|      2|				goto yy791;
 8555|    158|			} else {
 8556|    158|				if (yych == 't') goto yy791;
  ------------------
  |  Branch (8556:9): [True: 65, False: 93]
  ------------------
 8557|     93|				goto yy586;
 8558|    158|			}
 8559|    206|		}
 8560|    180|yy741:
 8561|    180|		YYDEBUG(741, *YYCURSOR);
 8562|    180|		++YYCURSOR;
  ------------------
  |  |   54|    180|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    180|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    180|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8563|    180|		YYFILL(1);
  ------------------
  |  |   53|    180|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    180|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    180|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    180|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    180|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    180|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    180|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    180|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 180]
  |  |  ------------------
  ------------------
 8564|    180|		yych = *YYCURSOR;
  ------------------
  |  |   54|    180|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    180|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    180|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8565|    180|		if (yych <= '\r') {
  ------------------
  |  Branch (8565:7): [True: 13, False: 167]
  ------------------
 8566|     13|			if (yych <= '\t') {
  ------------------
  |  Branch (8566:8): [True: 8, False: 5]
  ------------------
 8567|      8|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8567:9): [True: 4, False: 4]
  ------------------
 8568|      4|				goto yy586;
 8569|      8|			} else {
 8570|      5|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (8570:9): [True: 5, False: 0]
  ------------------
 8571|      0|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (8571:9): [True: 0, False: 0]
  ------------------
 8572|      0|				goto yy495;
 8573|      0|			}
 8574|    167|		} else {
 8575|    167|			if (yych <= 'P') {
  ------------------
  |  Branch (8575:8): [True: 9, False: 158]
  ------------------
 8576|      9|				if (yych <= 'O') goto yy586;
  ------------------
  |  Branch (8576:9): [True: 9, False: 0]
  ------------------
 8577|      0|				goto yy792;
 8578|    158|			} else {
 8579|    158|				if (yych == 'p') goto yy792;
  ------------------
  |  Branch (8579:9): [True: 152, False: 6]
  ------------------
 8580|      6|				goto yy586;
 8581|    158|			}
 8582|    167|		}
 8583|  1.69k|yy742:
 8584|  1.69k|		YYDEBUG(742, *YYCURSOR);
 8585|  1.69k|		yyaccept = 72;
 8586|  1.69k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.69k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.69k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.69k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.69k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.69k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.69k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8587|  1.69k|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8587:7): [True: 5, False: 1.68k]
  ------------------
 8588|      5|			goto yy47;
 8589|      5|		}
 8590|  1.68k|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8590:7): [True: 0, False: 1.68k]
  ------------------
 8591|  1.68k|yy743:
 8592|  1.68k|		YYDEBUG(743, *YYCURSOR);
 8593|  1.68k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.68k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.68k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.68k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.68k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.68k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.68k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.68k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.68k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8594|  1.68k|#line 1410 "Zend/zend_language_scanner.l"
 8595|  1.68k|		{
 8596|  1.68k|	RETURN_TOKEN_WITH_IDENT(T_FUNCTION);
  ------------------
  |  | 1334|  1.68k|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|  1.68k|		token = _token; \
  |  | 1336|  1.68k|		goto emit_token_with_ident; \
  |  | 1337|  1.68k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8597|  1.68k|}
 8598|      0|#line 8599 "Zend/zend_language_scanner.c"
 8599|    133|yy744:
 8600|    133|		YYDEBUG(744, *YYCURSOR);
 8601|    133|		yyaccept = 4;
 8602|    133|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    133|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    133|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    133|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    133|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    133|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    133|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8603|    133|		if (yych == 'T') goto yy793;
  ------------------
  |  Branch (8603:7): [True: 10, False: 123]
  ------------------
 8604|    123|		if (yych == 't') goto yy793;
  ------------------
  |  Branch (8604:7): [True: 88, False: 35]
  ------------------
 8605|     35|		goto yy48;
 8606|     35|yy745:
 8607|      4|		YYDEBUG(745, *YYCURSOR);
 8608|      4|		yyaccept = 4;
 8609|      4|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8610|      4|		if (yych == 'O') goto yy794;
  ------------------
  |  Branch (8610:7): [True: 0, False: 4]
  ------------------
 8611|      4|		if (yych == 'o') goto yy794;
  ------------------
  |  Branch (8611:7): [True: 1, False: 3]
  ------------------
 8612|      3|		goto yy48;
 8613|     24|yy746:
 8614|     24|		YYDEBUG(746, *YYCURSOR);
 8615|     24|		yyaccept = 4;
 8616|     24|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     24|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8617|     24|		if (yych == 'O') goto yy795;
  ------------------
  |  Branch (8617:7): [True: 1, False: 23]
  ------------------
 8618|     23|		if (yych == 'o') goto yy795;
  ------------------
  |  Branch (8618:7): [True: 23, False: 0]
  ------------------
 8619|      0|		goto yy48;
 8620|     15|yy747:
 8621|     15|		YYDEBUG(747, *YYCURSOR);
 8622|     15|		yyaccept = 4;
 8623|     15|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     15|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8624|     15|		if (yych == 'F') goto yy796;
  ------------------
  |  Branch (8624:7): [True: 0, False: 15]
  ------------------
 8625|     15|		if (yych == 'f') goto yy796;
  ------------------
  |  Branch (8625:7): [True: 15, False: 0]
  ------------------
 8626|      0|		goto yy48;
 8627|    205|yy748:
 8628|    205|		YYDEBUG(748, *YYCURSOR);
 8629|    205|		yyaccept = 4;
 8630|    205|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    205|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    205|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    205|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    205|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    205|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    205|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8631|    205|		if (yych == 'E') goto yy798;
  ------------------
  |  Branch (8631:7): [True: 3, False: 202]
  ------------------
 8632|    202|		if (yych == 'e') goto yy798;
  ------------------
  |  Branch (8632:7): [True: 181, False: 21]
  ------------------
 8633|     21|		goto yy48;
 8634|    276|yy749:
 8635|    276|		YYDEBUG(749, *YYCURSOR);
 8636|    276|		yyaccept = 4;
 8637|    276|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    276|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    276|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    276|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    276|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    276|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    276|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8638|    276|		if (yych == 'E') goto yy800;
  ------------------
  |  Branch (8638:7): [True: 0, False: 276]
  ------------------
 8639|    276|		if (yych == 'e') goto yy800;
  ------------------
  |  Branch (8639:7): [True: 272, False: 4]
  ------------------
 8640|      4|		goto yy48;
 8641|    437|yy750:
 8642|    437|		YYDEBUG(750, *YYCURSOR);
 8643|    437|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    437|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    437|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    437|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8644|    437|		if (yych == 'S') goto yy802;
  ------------------
  |  Branch (8644:7): [True: 0, False: 437]
  ------------------
 8645|    437|		if (yych == 's') goto yy802;
  ------------------
  |  Branch (8645:7): [True: 437, False: 0]
  ------------------
 8646|      0|		goto yy86;
 8647|    100|yy751:
 8648|    100|		YYDEBUG(751, *YYCURSOR);
 8649|    100|		yyaccept = 4;
 8650|    100|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    100|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    100|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    100|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    100|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8651|    100|		if (yych == 'D') goto yy803;
  ------------------
  |  Branch (8651:7): [True: 0, False: 100]
  ------------------
 8652|    100|		if (yych == 'd') goto yy803;
  ------------------
  |  Branch (8652:7): [True: 99, False: 1]
  ------------------
 8653|      1|		goto yy48;
 8654|     11|yy752:
 8655|     11|		YYDEBUG(752, *YYCURSOR);
 8656|     11|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8657|     11|		if (yych == 'E') goto yy805;
  ------------------
  |  Branch (8657:7): [True: 0, False: 11]
  ------------------
 8658|     11|		if (yych == 'e') goto yy805;
  ------------------
  |  Branch (8658:7): [True: 11, False: 0]
  ------------------
 8659|      0|		goto yy86;
 8660|     51|yy753:
 8661|     51|		YYDEBUG(753, *YYCURSOR);
 8662|     51|		yyaccept = 73;
 8663|     51|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     51|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8664|     51|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8664:7): [True: 0, False: 51]
  ------------------
 8665|      0|			goto yy47;
 8666|      0|		}
 8667|     51|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8667:7): [True: 0, False: 51]
  ------------------
 8668|     51|yy754:
 8669|     51|		YYDEBUG(754, *YYCURSOR);
 8670|     51|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     51|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8671|     51|#line 1801 "Zend/zend_language_scanner.l"
 8672|     51|		{
 8673|     51|	RETURN_TOKEN_WITH_IDENT(T_READONLY);
  ------------------
  |  | 1334|     51|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     51|		token = _token; \
  |  | 1336|     51|		goto emit_token_with_ident; \
  |  | 1337|     51|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8674|     51|}
 8675|      0|#line 8676 "Zend/zend_language_scanner.c"
 8676|     19|yy755:
 8677|     19|		YYDEBUG(755, *YYCURSOR);
 8678|     19|		yyaccept = 4;
 8679|     19|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8680|     19|		if (yych == 'O') goto yy806;
  ------------------
  |  Branch (8680:7): [True: 0, False: 19]
  ------------------
 8681|     19|		if (yych == 'o') goto yy806;
  ------------------
  |  Branch (8681:7): [True: 19, False: 0]
  ------------------
 8682|      0|		goto yy48;
 8683|     84|yy756:
 8684|     84|		YYDEBUG(756, *YYCURSOR);
 8685|     84|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     84|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     84|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     84|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8686|     84|		if (yych == 'O') goto yy807;
  ------------------
  |  Branch (8686:7): [True: 18, False: 66]
  ------------------
 8687|     66|		if (yych == 'o') goto yy807;
  ------------------
  |  Branch (8687:7): [True: 47, False: 19]
  ------------------
 8688|     19|		goto yy86;
 8689|     66|yy757:
 8690|     66|		YYDEBUG(757, *YYCURSOR);
 8691|     66|		++YYCURSOR;
  ------------------
  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8692|     66|		YYFILL(1);
  ------------------
  |  |   53|     66|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     66|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     66|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 66]
  |  |  ------------------
  ------------------
 8693|     66|		yych = *YYCURSOR;
  ------------------
  |  |   54|     66|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     66|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     66|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8694|     66|		if (yych <= '\n') {
  ------------------
  |  Branch (8694:7): [True: 61, False: 5]
  ------------------
 8695|     61|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8695:8): [True: 2, False: 59]
  ------------------
 8696|     59|			if (yych <= '\t') goto yy692;
  ------------------
  |  Branch (8696:8): [True: 1, False: 58]
  ------------------
 8697|     58|			goto yy694;
 8698|     59|		} else {
 8699|      5|			if (yych == '\r') goto yy694;
  ------------------
  |  Branch (8699:8): [True: 4, False: 1]
  ------------------
 8700|      1|			goto yy692;
 8701|      5|		}
 8702|    557|yy758:
 8703|    557|		YYDEBUG(758, *YYCURSOR);
 8704|    557|		++YYCURSOR;
  ------------------
  |  |   54|    557|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    557|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    557|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8705|    557|		YYFILL(1);
  ------------------
  |  |   53|    557|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    557|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    557|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    557|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    557|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    557|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    557|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    557|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 557]
  |  |  ------------------
  ------------------
 8706|    557|		yych = *YYCURSOR;
  ------------------
  |  |   54|    557|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    557|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    557|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8707|    557|		if (yych <= '\f') {
  ------------------
  |  Branch (8707:7): [True: 16, False: 541]
  ------------------
 8708|     16|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8708:8): [True: 8, False: 8]
  ------------------
 8709|      8|			if (yych == '\n') goto yy616;
  ------------------
  |  Branch (8709:8): [True: 3, False: 5]
  ------------------
 8710|      5|			goto yy692;
 8711|    541|		} else {
 8712|    541|			if (yych <= '\r') goto yy616;
  ------------------
  |  Branch (8712:8): [True: 0, False: 541]
  ------------------
 8713|    541|			if (yych == '*') goto yy808;
  ------------------
  |  Branch (8713:8): [True: 477, False: 64]
  ------------------
 8714|     64|			goto yy692;
 8715|    541|		}
 8716|    343|yy759:
 8717|    343|		YYDEBUG(759, *YYCURSOR);
 8718|    343|		++YYCURSOR;
  ------------------
  |  |   54|    343|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    343|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    343|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8719|    343|		YYFILL(1);
  ------------------
  |  |   53|    343|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    343|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    343|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    343|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    343|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    343|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    343|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    343|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 343]
  |  |  ------------------
  ------------------
 8720|    343|		yych = *YYCURSOR;
  ------------------
  |  |   54|    343|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    343|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    343|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8721|    343|		if (yych <= '\r') {
  ------------------
  |  Branch (8721:7): [True: 10, False: 333]
  ------------------
 8722|     10|			if (yych <= '\t') {
  ------------------
  |  Branch (8722:8): [True: 10, False: 0]
  ------------------
 8723|     10|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8723:9): [True: 5, False: 5]
  ------------------
 8724|      5|				goto yy692;
 8725|     10|			} else {
 8726|      0|				if (yych <= '\n') goto yy616;
  ------------------
  |  Branch (8726:9): [True: 0, False: 0]
  ------------------
 8727|      0|				if (yych <= '\f') goto yy692;
  ------------------
  |  Branch (8727:9): [True: 0, False: 0]
  ------------------
 8728|      0|				goto yy616;
 8729|      0|			}
 8730|    333|		} else {
 8731|    333|			if (yych <= 'R') {
  ------------------
  |  Branch (8731:8): [True: 78, False: 255]
  ------------------
 8732|     78|				if (yych <= 'Q') goto yy692;
  ------------------
  |  Branch (8732:9): [True: 16, False: 62]
  ------------------
 8733|     62|				goto yy810;
 8734|    255|			} else {
 8735|    255|				if (yych == 'r') goto yy810;
  ------------------
  |  Branch (8735:9): [True: 240, False: 15]
  ------------------
 8736|     15|				goto yy692;
 8737|    255|			}
 8738|    333|		}
 8739|    145|yy760:
 8740|    145|		YYDEBUG(760, *YYCURSOR);
 8741|    145|		++YYCURSOR;
  ------------------
  |  |   54|    145|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    145|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    145|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8742|    145|		YYFILL(1);
  ------------------
  |  |   53|    145|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    145|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    145|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    145|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    145|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    145|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    145|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    145|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 145]
  |  |  ------------------
  ------------------
 8743|    145|		yych = *YYCURSOR;
  ------------------
  |  |   54|    145|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    145|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    145|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8744|    145|		YYDEBUG(761, *YYCURSOR);
 8745|    145|		if (yych <= '*') {
  ------------------
  |  Branch (8745:7): [True: 64, False: 81]
  ------------------
 8746|     64|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8746:8): [True: 13, False: 51]
  ------------------
 8747|     51|			if (yych <= ')') goto yy696;
  ------------------
  |  Branch (8747:8): [True: 45, False: 6]
  ------------------
 8748|      6|			goto yy760;
 8749|     81|		} else {
 8750|     81|			if (yych == '/') goto yy616;
  ------------------
  |  Branch (8750:8): [True: 61, False: 20]
  ------------------
 8751|     20|			goto yy696;
 8752|     81|		}
 8753|     49|yy762:
 8754|     49|		YYDEBUG(762, *YYCURSOR);
 8755|     49|		yyaccept = 4;
 8756|     49|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     49|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     49|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8757|     49|		if (yych == '_') goto yy811;
  ------------------
  |  Branch (8757:7): [True: 42, False: 7]
  ------------------
 8758|      7|		goto yy48;
 8759|     43|yy763:
 8760|     43|		YYDEBUG(763, *YYCURSOR);
 8761|     43|		yyaccept = 74;
 8762|     43|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     43|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8763|     43|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8763:7): [True: 0, False: 43]
  ------------------
 8764|      0|			goto yy47;
 8765|      0|		}
 8766|     43|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8766:7): [True: 10, False: 33]
  ------------------
 8767|     43|yy764:
 8768|     43|		YYDEBUG(764, *YYCURSOR);
 8769|     43|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     43|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8770|     43|#line 2276 "Zend/zend_language_scanner.l"
 8771|     43|		{
 8772|     43|	RETURN_TOKEN_WITH_IDENT(T_FILE);
  ------------------
  |  | 1334|     43|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     43|		token = _token; \
  |  | 1336|     43|		goto emit_token_with_ident; \
  |  | 1337|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8773|     43|}
 8774|      0|#line 8775 "Zend/zend_language_scanner.c"
 8775|     13|yy765:
 8776|     13|		YYDEBUG(765, *YYCURSOR);
 8777|     13|		yyaccept = 4;
 8778|     13|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8779|     13|		if (yych == 'O') goto yy813;
  ------------------
  |  Branch (8779:7): [True: 11, False: 2]
  ------------------
 8780|      2|		if (yych == 'o') goto yy813;
  ------------------
  |  Branch (8780:7): [True: 2, False: 0]
  ------------------
 8781|      0|		goto yy48;
 8782|     37|yy766:
 8783|     37|		YYDEBUG(766, *YYCURSOR);
 8784|     37|		yyaccept = 4;
 8785|     37|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     37|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8786|     37|		if (yych == 'O') goto yy814;
  ------------------
  |  Branch (8786:7): [True: 22, False: 15]
  ------------------
 8787|     15|		if (yych == 'o') goto yy814;
  ------------------
  |  Branch (8787:7): [True: 4, False: 11]
  ------------------
 8788|     11|		goto yy48;
 8789|     12|yy767:
 8790|     12|		YYDEBUG(767, *YYCURSOR);
 8791|     12|		yyaccept = 75;
 8792|     12|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8793|     12|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8793:7): [True: 0, False: 12]
  ------------------
 8794|      0|			goto yy47;
 8795|      0|		}
 8796|     12|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8796:7): [True: 0, False: 12]
  ------------------
 8797|     12|yy768:
 8798|     12|		YYDEBUG(768, *YYCURSOR);
 8799|     12|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     12|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8800|     12|#line 2272 "Zend/zend_language_scanner.l"
 8801|     12|		{
 8802|     12|	RETURN_TOKEN_WITH_IDENT(T_LINE);
  ------------------
  |  | 1334|     12|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     12|		token = _token; \
  |  | 1336|     12|		goto emit_token_with_ident; \
  |  | 1337|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8803|     12|}
 8804|      0|#line 8805 "Zend/zend_language_scanner.c"
 8805|     25|yy769:
 8806|     25|		YYDEBUG(769, *YYCURSOR);
 8807|     25|		yyaccept = 4;
 8808|     25|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     25|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8809|     25|		if (yych == '_') goto yy815;
  ------------------
  |  Branch (8809:7): [True: 25, False: 0]
  ------------------
 8810|      0|		goto yy48;
 8811|     36|yy770:
 8812|     36|		YYDEBUG(770, *YYCURSOR);
 8813|     36|		yyaccept = 4;
 8814|     36|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     36|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8815|     36|		if (yych == 'A') goto yy816;
  ------------------
  |  Branch (8815:7): [True: 32, False: 4]
  ------------------
 8816|      4|		if (yych == 'a') goto yy816;
  ------------------
  |  Branch (8816:7): [True: 4, False: 0]
  ------------------
 8817|      0|		goto yy48;
 8818|     28|yy771:
 8819|     28|		YYDEBUG(771, *YYCURSOR);
 8820|     28|		yyaccept = 4;
 8821|     28|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     28|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8822|     28|		if (yych == 'T') goto yy817;
  ------------------
  |  Branch (8822:7): [True: 25, False: 3]
  ------------------
 8823|      3|		if (yych == 't') goto yy817;
  ------------------
  |  Branch (8823:7): [True: 0, False: 3]
  ------------------
 8824|      3|		goto yy48;
 8825|      4|yy772:
 8826|      4|		YYDEBUG(772, *YYCURSOR);
 8827|      4|		yyaccept = 4;
 8828|      4|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8829|      4|		if (yych == '_') goto yy818;
  ------------------
  |  Branch (8829:7): [True: 4, False: 0]
  ------------------
 8830|      0|		goto yy48;
 8831|     11|yy773:
 8832|     11|		YYDEBUG(773, *YYCURSOR);
 8833|     11|		++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8834|     11|		YYFILL(1);
  ------------------
  |  |   53|     11|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     11|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     11|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 8835|     11|		yych = *YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8836|     11|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (8836:7): [True: 3, False: 8]
  ------------------
 8837|      3|			goto yy443;
 8838|      3|		}
 8839|      8|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8839:7): [True: 0, False: 8]
  ------------------
 8840|      8|		if (yych <= '\r') goto yy709;
  ------------------
  |  Branch (8840:7): [True: 4, False: 4]
  ------------------
 8841|      4|		goto yy547;
 8842|     28|yy774:
 8843|     28|		YYDEBUG(774, *YYCURSOR);
 8844|     28|		yyaccept = 26;
 8845|     28|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     28|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8846|     28|		YYFILL(1);
  ------------------
  |  |   53|     28|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     28|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     28|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 28]
  |  |  ------------------
  ------------------
 8847|     28|		yych = *YYCURSOR;
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8848|     28|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (8848:7): [True: 20, False: 8]
  ------------------
 8849|     20|			goto yy443;
 8850|     20|		}
 8851|      8|		if (yych <= 0x00) goto yy89;
  ------------------
  |  Branch (8851:7): [True: 3, False: 5]
  ------------------
 8852|      5|		if (yych <= '\r') goto yy545;
  ------------------
  |  Branch (8852:7): [True: 2, False: 3]
  ------------------
 8853|      3|		goto yy547;
 8854|     18|yy775:
 8855|     18|		YYDEBUG(775, *YYCURSOR);
 8856|     18|		++YYCURSOR;
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8857|     18|		YYFILL(1);
  ------------------
  |  |   53|     18|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     18|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     18|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 18]
  |  |  ------------------
  ------------------
 8858|     18|		yych = *YYCURSOR;
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8859|     18|		if (yych <= '\r') {
  ------------------
  |  Branch (8859:7): [True: 4, False: 14]
  ------------------
 8860|      4|			if (yych <= '\t') {
  ------------------
  |  Branch (8860:8): [True: 4, False: 0]
  ------------------
 8861|      4|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8861:9): [True: 0, False: 4]
  ------------------
 8862|      4|				goto yy443;
 8863|      4|			} else {
 8864|      0|				if (yych <= '\n') goto yy545;
  ------------------
  |  Branch (8864:9): [True: 0, False: 0]
  ------------------
 8865|      0|				if (yych <= '\f') goto yy443;
  ------------------
  |  Branch (8865:9): [True: 0, False: 0]
  ------------------
 8866|      0|				goto yy545;
 8867|      0|			}
 8868|     14|		} else {
 8869|     14|			if (yych <= '*') {
  ------------------
  |  Branch (8869:8): [True: 5, False: 9]
  ------------------
 8870|      5|				if (yych <= ')') goto yy443;
  ------------------
  |  Branch (8870:9): [True: 3, False: 2]
  ------------------
 8871|      2|				goto yy547;
 8872|      9|			} else {
 8873|      9|				if (yych == '.') goto yy820;
  ------------------
  |  Branch (8873:9): [True: 9, False: 0]
  ------------------
 8874|      0|				goto yy443;
 8875|      9|			}
 8876|     14|		}
 8877|     57|yy776:
 8878|     57|		YYDEBUG(776, *YYCURSOR);
 8879|     57|		++YYCURSOR;
  ------------------
  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8880|     57|		YYFILL(1);
  ------------------
  |  |   53|     57|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     57|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     57|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 57]
  |  |  ------------------
  ------------------
 8881|     57|		yych = *YYCURSOR;
  ------------------
  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8882|     57|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (8882:7): [True: 32, False: 25]
  ------------------
 8883|     32|			goto yy443;
 8884|     32|		}
 8885|     25|		if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8885:7): [True: 2, False: 23]
  ------------------
 8886|     23|		if (yych <= '\r') goto yy545;
  ------------------
  |  Branch (8886:7): [True: 3, False: 20]
  ------------------
 8887|     20|		goto yy821;
 8888|     20|yy777:
 8889|      1|		YYDEBUG(777, *YYCURSOR);
 8890|      1|		++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8891|      1|		YYDEBUG(778, *YYCURSOR);
 8892|      1|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8893|      1|#line 1699 "Zend/zend_language_scanner.l"
 8894|      1|		{
 8895|      1|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|      1|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8896|      1|		zend_error(E_DEPRECATED, "Non-canonical cast (boolean) is deprecated, use the (bool) cast instead");
  ------------------
  |  |   36|      1|#define E_DEPRECATED		(1<<13L)
  ------------------
 8897|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8898|      0|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8899|      0|		}
 8900|      1|	}
 8901|      1|	RETURN_TOKEN(T_BOOL_CAST);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8902|      1|}
 8903|      0|#line 8904 "Zend/zend_language_scanner.c"
 8904|      3|yy779:
 8905|      3|		YYDEBUG(779, *YYCURSOR);
 8906|      3|		++YYCURSOR;
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8907|      3|		YYDEBUG(780, *YYCURSOR);
 8908|      3|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      3|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8909|      3|#line 1641 "Zend/zend_language_scanner.l"
 8910|      3|		{
 8911|      3|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|      3|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8912|      1|		zend_error(E_DEPRECATED, "Non-canonical cast (integer) is deprecated, use the (int) cast instead");
  ------------------
  |  |   36|      1|#define E_DEPRECATED		(1<<13L)
  ------------------
 8913|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8914|      0|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8915|      0|		}
 8916|      1|	}
 8917|      3|	RETURN_TOKEN(T_INT_CAST);
  ------------------
  |  | 1318|      3|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      3|		token = _token; \
  |  | 1320|      3|		goto emit_token; \
  |  | 1321|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8918|      3|}
 8919|      0|#line 8920 "Zend/zend_language_scanner.c"
 8920|      1|yy781:
 8921|      1|		YYDEBUG(781, *YYCURSOR);
 8922|      1|		yyaccept = 4;
 8923|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8924|      1|		if (yych == 'E') goto yy822;
  ------------------
  |  Branch (8924:7): [True: 1, False: 0]
  ------------------
 8925|      0|		if (yych == 'e') goto yy822;
  ------------------
  |  Branch (8925:7): [True: 0, False: 0]
  ------------------
 8926|      0|		goto yy48;
 8927|      0|yy782:
 8928|      0|		YYDEBUG(782, *YYCURSOR);
 8929|      0|		yyaccept = 4;
 8930|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8931|      0|		if (yych == 'H') goto yy824;
  ------------------
  |  Branch (8931:7): [True: 0, False: 0]
  ------------------
 8932|      0|		if (yych == 'h') goto yy824;
  ------------------
  |  Branch (8932:7): [True: 0, False: 0]
  ------------------
 8933|      0|		goto yy48;
 8934|      0|yy783:
 8935|      0|		YYDEBUG(783, *YYCURSOR);
 8936|      0|		yyaccept = 76;
 8937|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8938|      0|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (8938:7): [True: 0, False: 0]
  ------------------
 8939|      0|			goto yy47;
 8940|      0|		}
 8941|      0|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (8941:7): [True: 0, False: 0]
  ------------------
 8942|      0|yy784:
 8943|      0|		YYDEBUG(784, *YYCURSOR);
 8944|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 8945|      0|#line 1521 "Zend/zend_language_scanner.l"
 8946|      0|		{
 8947|      0|	RETURN_TOKEN_WITH_IDENT(T_ENDSWITCH);
  ------------------
  |  | 1334|      0|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      0|		token = _token; \
  |  | 1336|      0|		goto emit_token_with_ident; \
  |  | 1337|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8948|      0|}
 8949|      0|#line 8950 "Zend/zend_language_scanner.c"
 8950|      9|yy785:
 8951|      9|		YYDEBUG(785, *YYCURSOR);
 8952|      9|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8953|      9|		if (yych == 'N') goto yy826;
  ------------------
  |  Branch (8953:7): [True: 3, False: 6]
  ------------------
 8954|      6|		if (yych == 'n') goto yy826;
  ------------------
  |  Branch (8954:7): [True: 0, False: 6]
  ------------------
 8955|      6|		goto yy86;
 8956|     36|yy786:
 8957|     36|		YYDEBUG(786, *YYCURSOR);
 8958|     36|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8959|     36|		if (yych == 'E') goto yy827;
  ------------------
  |  Branch (8959:7): [True: 13, False: 23]
  ------------------
 8960|     23|		if (yych == 'e') goto yy827;
  ------------------
  |  Branch (8960:7): [True: 12, False: 11]
  ------------------
 8961|     11|		goto yy86;
 8962|  1.56k|yy787:
 8963|  1.56k|		YYDEBUG(787, *YYCURSOR);
 8964|  1.56k|		++YYCURSOR;
  ------------------
  |  |   54|  1.56k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.56k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.56k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8965|  1.56k|		YYFILL(1);
  ------------------
  |  |   53|  1.56k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.56k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.56k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.56k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.56k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.56k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.56k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.56k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.56k]
  |  |  ------------------
  ------------------
 8966|  1.56k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.56k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.56k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.56k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8967|  1.56k|		YYDEBUG(788, *YYCURSOR);
 8968|  1.56k|		if (yych <= '@') {
  ------------------
  |  Branch (8968:7): [True: 1.40k, False: 162]
  ------------------
 8969|  1.40k|			if (yych <= ' ') {
  ------------------
  |  Branch (8969:8): [True: 242, False: 1.16k]
  ------------------
 8970|    242|				if (yych <= '\n') {
  ------------------
  |  Branch (8970:9): [True: 98, False: 144]
  ------------------
 8971|     98|					if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (8971:10): [True: 14, False: 84]
  ------------------
 8972|     84|					if (yych <= 0x08) goto yy590;
  ------------------
  |  Branch (8972:10): [True: 9, False: 75]
  ------------------
 8973|     75|					goto yy787;
 8974|    144|				} else {
 8975|    144|					if (yych == '\r') goto yy787;
  ------------------
  |  Branch (8975:10): [True: 90, False: 54]
  ------------------
 8976|     54|					if (yych <= 0x1F) goto yy590;
  ------------------
  |  Branch (8976:10): [True: 11, False: 43]
  ------------------
 8977|     43|					goto yy787;
 8978|     54|				}
 8979|  1.16k|			} else {
 8980|  1.16k|				if (yych <= ')') {
  ------------------
  |  Branch (8980:9): [True: 870, False: 291]
  ------------------
 8981|    870|					if (yych == '#') goto yy828;
  ------------------
  |  Branch (8981:10): [True: 845, False: 25]
  ------------------
 8982|     25|					goto yy590;
 8983|    870|				} else {
 8984|    291|					if (yych <= '*') goto yy668;
  ------------------
  |  Branch (8984:10): [True: 9, False: 282]
  ------------------
 8985|    282|					if (yych == '/') goto yy829;
  ------------------
  |  Branch (8985:10): [True: 273, False: 9]
  ------------------
 8986|      9|					goto yy590;
 8987|    282|				}
 8988|  1.16k|			}
 8989|  1.40k|		} else {
 8990|    162|			if (yych <= '_') {
  ------------------
  |  Branch (8990:8): [True: 12, False: 150]
  ------------------
 8991|     12|				if (yych <= 'H') {
  ------------------
  |  Branch (8991:9): [True: 6, False: 6]
  ------------------
 8992|      6|					if (yych == 'E') goto yy831;
  ------------------
  |  Branch (8992:10): [True: 3, False: 3]
  ------------------
 8993|      3|					goto yy830;
 8994|      6|				} else {
 8995|      6|					if (yych <= 'I') goto yy832;
  ------------------
  |  Branch (8995:10): [True: 0, False: 6]
  ------------------
 8996|      6|					if (yych <= 'Z') goto yy830;
  ------------------
  |  Branch (8996:10): [True: 5, False: 1]
  ------------------
 8997|      1|					if (yych <= '^') goto yy590;
  ------------------
  |  Branch (8997:10): [True: 1, False: 0]
  ------------------
 8998|      0|					goto yy830;
 8999|      1|				}
 9000|    150|			} else {
 9001|    150|				if (yych <= 'h') {
  ------------------
  |  Branch (9001:9): [True: 25, False: 125]
  ------------------
 9002|     25|					if (yych <= '`') goto yy590;
  ------------------
  |  Branch (9002:10): [True: 0, False: 25]
  ------------------
 9003|     25|					if (yych == 'e') goto yy831;
  ------------------
  |  Branch (9003:10): [True: 25, False: 0]
  ------------------
 9004|      0|					goto yy830;
 9005|    125|				} else {
 9006|    125|					if (yych <= 'i') goto yy832;
  ------------------
  |  Branch (9006:10): [True: 75, False: 50]
  ------------------
 9007|     50|					if (yych <= 'z') goto yy830;
  ------------------
  |  Branch (9007:10): [True: 11, False: 39]
  ------------------
 9008|     39|					if (yych <= 0x7F) goto yy590;
  ------------------
  |  Branch (9008:10): [True: 17, False: 22]
  ------------------
 9009|     22|					goto yy830;
 9010|     39|				}
 9011|    150|			}
 9012|    162|		}
 9013|    272|yy789:
 9014|    272|		YYDEBUG(789, *YYCURSOR);
 9015|    272|		++YYCURSOR;
  ------------------
  |  |   54|    272|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9016|    272|		YYFILL(1);
  ------------------
  |  |   53|    272|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    272|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    272|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    272|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 272]
  |  |  ------------------
  ------------------
 9017|    272|		yych = *YYCURSOR;
  ------------------
  |  |   54|    272|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9018|    272|		YYDEBUG(790, *YYCURSOR);
 9019|    272|		if (yych <= '\r') {
  ------------------
  |  Branch (9019:7): [True: 31, False: 241]
  ------------------
 9020|     31|			if (yych <= '\t') {
  ------------------
  |  Branch (9020:8): [True: 1, False: 30]
  ------------------
 9021|      1|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9021:9): [True: 1, False: 0]
  ------------------
 9022|      0|				goto yy738;
 9023|     30|			} else {
 9024|     30|				if (yych <= '\n') goto yy787;
  ------------------
  |  Branch (9024:9): [True: 15, False: 15]
  ------------------
 9025|     15|				if (yych <= '\f') goto yy738;
  ------------------
  |  Branch (9025:9): [True: 0, False: 15]
  ------------------
 9026|     15|				goto yy787;
 9027|     15|			}
 9028|    241|		} else {
 9029|    241|			if (yych <= '*') {
  ------------------
  |  Branch (9029:8): [True: 64, False: 177]
  ------------------
 9030|     64|				if (yych <= ')') goto yy738;
  ------------------
  |  Branch (9030:9): [True: 33, False: 31]
  ------------------
 9031|     31|				goto yy789;
 9032|    177|			} else {
 9033|    177|				if (yych == '/') goto yy588;
  ------------------
  |  Branch (9033:9): [True: 106, False: 71]
  ------------------
 9034|     71|				goto yy738;
 9035|    177|			}
 9036|    241|		}
 9037|     67|yy791:
 9038|     67|		YYDEBUG(791, *YYCURSOR);
 9039|     67|		++YYCURSOR;
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9040|     67|		YYFILL(1);
  ------------------
  |  |   53|     67|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     67|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     67|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 67]
  |  |  ------------------
  ------------------
 9041|     67|		yych = *YYCURSOR;
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9042|     67|		if (yych <= '\r') {
  ------------------
  |  Branch (9042:7): [True: 0, False: 67]
  ------------------
 9043|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9043:8): [True: 0, False: 0]
  ------------------
 9044|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9044:9): [True: 0, False: 0]
  ------------------
 9045|      0|				goto yy586;
 9046|      0|			} else {
 9047|      0|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (9047:9): [True: 0, False: 0]
  ------------------
 9048|      0|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (9048:9): [True: 0, False: 0]
  ------------------
 9049|      0|				goto yy495;
 9050|      0|			}
 9051|     67|		} else {
 9052|     67|			if (yych <= 'E') {
  ------------------
  |  Branch (9052:8): [True: 0, False: 67]
  ------------------
 9053|      0|				if (yych <= 'D') goto yy586;
  ------------------
  |  Branch (9053:9): [True: 0, False: 0]
  ------------------
 9054|      0|				goto yy833;
 9055|     67|			} else {
 9056|     67|				if (yych == 'e') goto yy833;
  ------------------
  |  Branch (9056:9): [True: 49, False: 18]
  ------------------
 9057|     18|				goto yy586;
 9058|     67|			}
 9059|     67|		}
 9060|    152|yy792:
 9061|    152|		YYDEBUG(792, *YYCURSOR);
 9062|    152|		++YYCURSOR;
  ------------------
  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9063|    152|		YYFILL(1);
  ------------------
  |  |   53|    152|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    152|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    152|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 152]
  |  |  ------------------
  ------------------
 9064|    152|		yych = *YYCURSOR;
  ------------------
  |  |   54|    152|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    152|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    152|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9065|    152|		if (yych <= '\r') {
  ------------------
  |  Branch (9065:7): [True: 20, False: 132]
  ------------------
 9066|     20|			if (yych <= '\t') {
  ------------------
  |  Branch (9066:8): [True: 11, False: 9]
  ------------------
 9067|     11|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9067:9): [True: 10, False: 1]
  ------------------
 9068|      1|				goto yy586;
 9069|     11|			} else {
 9070|      9|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (9070:9): [True: 0, False: 9]
  ------------------
 9071|      9|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (9071:9): [True: 9, False: 0]
  ------------------
 9072|      0|				goto yy495;
 9073|      9|			}
 9074|    132|		} else {
 9075|    132|			if (yych <= 'L') {
  ------------------
  |  Branch (9075:8): [True: 7, False: 125]
  ------------------
 9076|      7|				if (yych <= 'K') goto yy586;
  ------------------
  |  Branch (9076:9): [True: 5, False: 2]
  ------------------
 9077|      2|				goto yy834;
 9078|    125|			} else {
 9079|    125|				if (yych == 'l') goto yy834;
  ------------------
  |  Branch (9079:9): [True: 112, False: 13]
  ------------------
 9080|     13|				goto yy586;
 9081|    125|			}
 9082|    132|		}
 9083|     98|yy793:
 9084|     98|		YYDEBUG(793, *YYCURSOR);
 9085|     98|		yyaccept = 4;
 9086|     98|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     98|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     98|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     98|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     98|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     98|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     98|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9087|     98|		if (yych == 'S') goto yy835;
  ------------------
  |  Branch (9087:7): [True: 4, False: 94]
  ------------------
 9088|     94|		if (yych == 's') goto yy835;
  ------------------
  |  Branch (9088:7): [True: 84, False: 10]
  ------------------
 9089|     10|		goto yy48;
 9090|     10|yy794:
 9091|      1|		YYDEBUG(794, *YYCURSOR);
 9092|      1|		yyaccept = 4;
 9093|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9094|      1|		if (yych == 'N') goto yy837;
  ------------------
  |  Branch (9094:7): [True: 0, False: 1]
  ------------------
 9095|      1|		if (yych == 'n') goto yy837;
  ------------------
  |  Branch (9095:7): [True: 1, False: 0]
  ------------------
 9096|      0|		goto yy48;
 9097|     24|yy795:
 9098|     24|		YYDEBUG(795, *YYCURSOR);
 9099|     24|		yyaccept = 4;
 9100|     24|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     24|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9101|     24|		if (yych == 'F') goto yy838;
  ------------------
  |  Branch (9101:7): [True: 0, False: 24]
  ------------------
 9102|     24|		if (yych == 'f') goto yy838;
  ------------------
  |  Branch (9102:7): [True: 24, False: 0]
  ------------------
 9103|      0|		goto yy48;
 9104|     15|yy796:
 9105|     15|		YYDEBUG(796, *YYCURSOR);
 9106|     15|		yyaccept = 77;
 9107|     15|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     15|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9108|     15|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9108:7): [True: 0, False: 15]
  ------------------
 9109|      0|			goto yy47;
 9110|      0|		}
 9111|     15|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9111:7): [True: 0, False: 15]
  ------------------
 9112|     15|yy797:
 9113|     15|		YYDEBUG(797, *YYCURSOR);
 9114|     15|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     15|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9115|     15|#line 1745 "Zend/zend_language_scanner.l"
 9116|     15|		{
 9117|     15|    RETURN_TOKEN_WITH_IDENT(T_INSTEADOF);
  ------------------
  |  | 1334|     15|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     15|		token = _token; \
  |  | 1336|     15|		goto emit_token_with_ident; \
  |  | 1337|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9118|     15|}
 9119|      0|#line 9120 "Zend/zend_language_scanner.c"
 9120|    184|yy798:
 9121|    184|		YYDEBUG(798, *YYCURSOR);
 9122|    184|		yyaccept = 78;
 9123|    184|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    184|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    184|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    184|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    184|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    184|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    184|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9124|    184|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9124:7): [True: 3, False: 181]
  ------------------
 9125|      3|			goto yy47;
 9126|      3|		}
 9127|    181|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9127:7): [True: 0, False: 181]
  ------------------
 9128|    181|yy799:
 9129|    181|		YYDEBUG(799, *YYCURSOR);
 9130|    181|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    181|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    181|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    181|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    181|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    181|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    181|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    181|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    181|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9131|    181|#line 1557 "Zend/zend_language_scanner.l"
 9132|    181|		{
 9133|    181|	RETURN_TOKEN_WITH_IDENT(T_INTERFACE);
  ------------------
  |  | 1334|    181|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    181|		token = _token; \
  |  | 1336|    181|		goto emit_token_with_ident; \
  |  | 1337|    181|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9134|    181|}
 9135|      0|#line 9136 "Zend/zend_language_scanner.c"
 9136|    272|yy800:
 9137|    272|		YYDEBUG(800, *YYCURSOR);
 9138|    272|		yyaccept = 79;
 9139|    272|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    272|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    272|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    272|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    272|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9140|    272|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9140:7): [True: 1, False: 271]
  ------------------
 9141|      1|			goto yy47;
 9142|      1|		}
 9143|    271|		if (yych == '\\') goto yy840;
  ------------------
  |  Branch (9143:7): [True: 47, False: 224]
  ------------------
 9144|    228|yy801:
 9145|    228|		YYDEBUG(801, *YYCURSOR);
 9146|    228|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    228|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    228|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    228|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    228|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    228|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    228|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    228|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    228|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9147|    228|#line 1737 "Zend/zend_language_scanner.l"
 9148|    228|		{
 9149|    228|	RETURN_TOKEN_WITH_IDENT(T_NAMESPACE);
  ------------------
  |  | 1334|    228|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    228|		token = _token; \
  |  | 1336|    228|		goto emit_token_with_ident; \
  |  | 1337|    228|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9150|    228|}
 9151|      0|#line 9152 "Zend/zend_language_scanner.c"
 9152|    437|yy802:
 9153|    437|		YYDEBUG(802, *YYCURSOR);
 9154|    437|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    437|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    437|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    437|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9155|    437|		if (yych == 'E') goto yy841;
  ------------------
  |  Branch (9155:7): [True: 0, False: 437]
  ------------------
 9156|    437|		if (yych == 'e') goto yy841;
  ------------------
  |  Branch (9156:7): [True: 11, False: 426]
  ------------------
 9157|    426|		goto yy86;
 9158|    426|yy803:
 9159|     99|		YYDEBUG(803, *YYCURSOR);
 9160|     99|		yyaccept = 80;
 9161|     99|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     99|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9162|     99|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9162:7): [True: 15, False: 84]
  ------------------
 9163|     15|			goto yy47;
 9164|     15|		}
 9165|     84|		if (yych == '(') goto yy842;
  ------------------
  |  Branch (9165:7): [True: 35, False: 49]
  ------------------
 9166|     49|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9166:7): [True: 0, False: 49]
  ------------------
 9167|     76|yy804:
 9168|     76|		YYDEBUG(804, *YYCURSOR);
 9169|     76|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     76|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     76|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     76|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     76|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9170|     76|#line 1781 "Zend/zend_language_scanner.l"
 9171|     76|		{
 9172|     76|	RETURN_TOKEN_WITH_IDENT(T_PROTECTED);
  ------------------
  |  | 1334|     76|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     76|		token = _token; \
  |  | 1336|     76|		goto emit_token_with_ident; \
  |  | 1337|     76|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9173|     76|}
 9174|      0|#line 9175 "Zend/zend_language_scanner.c"
 9175|     11|yy805:
 9176|     11|		YYDEBUG(805, *YYCURSOR);
 9177|     11|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9178|     11|		if (yych == 'T') goto yy843;
  ------------------
  |  Branch (9178:7): [True: 4, False: 7]
  ------------------
 9179|      7|		if (yych == 't') goto yy843;
  ------------------
  |  Branch (9179:7): [True: 7, False: 0]
  ------------------
 9180|      0|		goto yy86;
 9181|     19|yy806:
 9182|     19|		YYDEBUG(806, *YYCURSOR);
 9183|     19|		yyaccept = 4;
 9184|     19|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9185|     19|		if (yych == 'N') goto yy844;
  ------------------
  |  Branch (9185:7): [True: 0, False: 19]
  ------------------
 9186|     19|		if (yych == 'n') goto yy844;
  ------------------
  |  Branch (9186:7): [True: 19, False: 0]
  ------------------
 9187|      0|		goto yy48;
 9188|     65|yy807:
 9189|     65|		YYDEBUG(807, *YYCURSOR);
 9190|     65|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9191|     65|		if (yych == 'M') goto yy845;
  ------------------
  |  Branch (9191:7): [True: 19, False: 46]
  ------------------
 9192|     46|		if (yych == 'm') goto yy845;
  ------------------
  |  Branch (9192:7): [True: 40, False: 6]
  ------------------
 9193|      6|		goto yy86;
 9194|  4.72k|yy808:
 9195|  4.72k|		YYDEBUG(808, *YYCURSOR);
 9196|  4.72k|		++YYCURSOR;
  ------------------
  |  |   54|  4.72k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.72k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.72k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9197|  4.72k|		YYFILL(1);
  ------------------
  |  |   53|  4.72k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  4.72k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  4.72k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  4.72k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  4.72k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  4.72k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  4.72k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  4.72k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4.72k]
  |  |  ------------------
  ------------------
 9198|  4.72k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  4.72k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.72k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.72k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9199|  4.72k|		YYDEBUG(809, *YYCURSOR);
 9200|  4.72k|		if (yych <= '\f') {
  ------------------
  |  Branch (9200:7): [True: 717, False: 4.00k]
  ------------------
 9201|    717|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9201:8): [True: 85, False: 632]
  ------------------
 9202|    632|			if (yych == '\n') goto yy846;
  ------------------
  |  Branch (9202:8): [True: 543, False: 89]
  ------------------
 9203|     89|			goto yy808;
 9204|  4.00k|		} else {
 9205|  4.00k|			if (yych <= '\r') goto yy846;
  ------------------
  |  Branch (9205:8): [True: 291, False: 3.71k]
  ------------------
 9206|  3.71k|			if (yych == '*') goto yy848;
  ------------------
  |  Branch (9206:8): [True: 179, False: 3.53k]
  ------------------
 9207|  3.53k|			goto yy808;
 9208|  3.71k|		}
 9209|    302|yy810:
 9210|    302|		YYDEBUG(810, *YYCURSOR);
 9211|    302|		++YYCURSOR;
  ------------------
  |  |   54|    302|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    302|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    302|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9212|    302|		YYFILL(1);
  ------------------
  |  |   53|    302|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    302|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    302|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    302|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    302|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    302|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    302|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    302|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 302]
  |  |  ------------------
  ------------------
 9213|    302|		yych = *YYCURSOR;
  ------------------
  |  |   54|    302|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    302|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    302|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9214|    302|		if (yych <= '\r') {
  ------------------
  |  Branch (9214:7): [True: 20, False: 282]
  ------------------
 9215|     20|			if (yych <= '\t') {
  ------------------
  |  Branch (9215:8): [True: 10, False: 10]
  ------------------
 9216|     10|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9216:9): [True: 5, False: 5]
  ------------------
 9217|      5|				goto yy692;
 9218|     10|			} else {
 9219|     10|				if (yych <= '\n') goto yy616;
  ------------------
  |  Branch (9219:9): [True: 8, False: 2]
  ------------------
 9220|      2|				if (yych <= '\f') goto yy692;
  ------------------
  |  Branch (9220:9): [True: 0, False: 2]
  ------------------
 9221|      2|				goto yy616;
 9222|      2|			}
 9223|    282|		} else {
 9224|    282|			if (yych <= 'O') {
  ------------------
  |  Branch (9224:8): [True: 54, False: 228]
  ------------------
 9225|     54|				if (yych <= 'N') goto yy692;
  ------------------
  |  Branch (9225:9): [True: 6, False: 48]
  ------------------
 9226|     48|				goto yy850;
 9227|    228|			} else {
 9228|    228|				if (yych == 'o') goto yy850;
  ------------------
  |  Branch (9228:9): [True: 190, False: 38]
  ------------------
 9229|     38|				goto yy692;
 9230|    228|			}
 9231|    282|		}
 9232|     42|yy811:
 9233|     42|		YYDEBUG(811, *YYCURSOR);
 9234|     42|		yyaccept = 81;
 9235|     42|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     42|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9236|     42|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9236:7): [True: 22, False: 20]
  ------------------
 9237|     22|			goto yy47;
 9238|     22|		}
 9239|     20|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9239:7): [True: 3, False: 17]
  ------------------
 9240|     20|yy812:
 9241|     20|		YYDEBUG(812, *YYCURSOR);
 9242|     20|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     20|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9243|     20|#line 2252 "Zend/zend_language_scanner.l"
 9244|     20|		{
 9245|     20|	RETURN_TOKEN_WITH_IDENT(T_CLASS_C);
  ------------------
  |  | 1334|     20|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     20|		token = _token; \
  |  | 1336|     20|		goto emit_token_with_ident; \
  |  | 1337|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9246|     20|}
 9247|      0|#line 9248 "Zend/zend_language_scanner.c"
 9248|     13|yy813:
 9249|     13|		YYDEBUG(813, *YYCURSOR);
 9250|     13|		yyaccept = 4;
 9251|     13|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     13|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9252|     13|		if (yych == 'N') goto yy851;
  ------------------
  |  Branch (9252:7): [True: 10, False: 3]
  ------------------
 9253|      3|		if (yych == 'n') goto yy851;
  ------------------
  |  Branch (9253:7): [True: 0, False: 3]
  ------------------
 9254|      3|		goto yy48;
 9255|     26|yy814:
 9256|     26|		YYDEBUG(814, *YYCURSOR);
 9257|     26|		yyaccept = 4;
 9258|     26|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     26|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9259|     26|		if (yych == 'M') goto yy852;
  ------------------
  |  Branch (9259:7): [True: 5, False: 21]
  ------------------
 9260|     21|		if (yych == 'm') goto yy852;
  ------------------
  |  Branch (9260:7): [True: 4, False: 17]
  ------------------
 9261|     17|		goto yy48;
 9262|     25|yy815:
 9263|     25|		YYDEBUG(815, *YYCURSOR);
 9264|     25|		yyaccept = 4;
 9265|     25|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     25|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9266|     25|		if (yych == '_') goto yy853;
  ------------------
  |  Branch (9266:7): [True: 21, False: 4]
  ------------------
 9267|      4|		goto yy48;
 9268|     36|yy816:
 9269|     36|		YYDEBUG(816, *YYCURSOR);
 9270|     36|		yyaccept = 4;
 9271|     36|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     36|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9272|     36|		if (yych == 'C') goto yy855;
  ------------------
  |  Branch (9272:7): [True: 30, False: 6]
  ------------------
 9273|      6|		if (yych == 'c') goto yy855;
  ------------------
  |  Branch (9273:7): [True: 4, False: 2]
  ------------------
 9274|      2|		goto yy48;
 9275|     25|yy817:
 9276|     25|		YYDEBUG(817, *YYCURSOR);
 9277|     25|		yyaccept = 4;
 9278|     25|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     25|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9279|     25|		if (yych == 'Y') goto yy856;
  ------------------
  |  Branch (9279:7): [True: 10, False: 15]
  ------------------
 9280|     15|		if (yych == 'y') goto yy856;
  ------------------
  |  Branch (9280:7): [True: 15, False: 0]
  ------------------
 9281|      0|		goto yy48;
 9282|      4|yy818:
 9283|      4|		YYDEBUG(818, *YYCURSOR);
 9284|      4|		yyaccept = 82;
 9285|      4|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9286|      4|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9286:7): [True: 0, False: 4]
  ------------------
 9287|      0|			goto yy47;
 9288|      0|		}
 9289|      4|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9289:7): [True: 0, False: 4]
  ------------------
 9290|      4|yy819:
 9291|      4|		YYDEBUG(819, *YYCURSOR);
 9292|      4|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      4|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9293|      4|#line 2256 "Zend/zend_language_scanner.l"
 9294|      4|		{
 9295|      4|	RETURN_TOKEN_WITH_IDENT(T_TRAIT_C);
  ------------------
  |  | 1334|      4|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      4|		token = _token; \
  |  | 1336|      4|		goto emit_token_with_ident; \
  |  | 1337|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9296|      4|}
 9297|      0|#line 9298 "Zend/zend_language_scanner.c"
 9298|      9|yy820:
 9299|      9|		YYDEBUG(820, *YYCURSOR);
 9300|      9|		++YYCURSOR;
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9301|      9|		YYFILL(1);
  ------------------
  |  |   53|      9|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      9|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      9|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 9302|      9|		yych = *YYCURSOR;
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9303|      9|		if (yych <= '\r') {
  ------------------
  |  Branch (9303:7): [True: 1, False: 8]
  ------------------
 9304|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (9304:8): [True: 0, False: 1]
  ------------------
 9305|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9305:9): [True: 0, False: 0]
  ------------------
 9306|      0|				goto yy443;
 9307|      1|			} else {
 9308|      1|				if (yych <= '\n') goto yy545;
  ------------------
  |  Branch (9308:9): [True: 0, False: 1]
  ------------------
 9309|      1|				if (yych <= '\f') goto yy443;
  ------------------
  |  Branch (9309:9): [True: 0, False: 1]
  ------------------
 9310|      1|				goto yy545;
 9311|      1|			}
 9312|      8|		} else {
 9313|      8|			if (yych <= '*') {
  ------------------
  |  Branch (9313:8): [True: 4, False: 4]
  ------------------
 9314|      4|				if (yych <= ')') goto yy443;
  ------------------
  |  Branch (9314:9): [True: 4, False: 0]
  ------------------
 9315|      0|				goto yy547;
 9316|      4|			} else {
 9317|      4|				if (yych == '.') goto yy774;
  ------------------
  |  Branch (9317:9): [True: 4, False: 0]
  ------------------
 9318|      0|				goto yy443;
 9319|      4|			}
 9320|      8|		}
 9321|     20|yy821:
 9322|     20|		YYDEBUG(821, *YYCURSOR);
 9323|     20|		++YYCURSOR;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9324|     20|		YYFILL(1);
  ------------------
  |  |   53|     20|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     20|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     20|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 20]
  |  |  ------------------
  ------------------
 9325|     20|		yych = *YYCURSOR;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9326|     20|		if (yych <= '\r') {
  ------------------
  |  Branch (9326:7): [True: 2, False: 18]
  ------------------
 9327|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (9327:8): [True: 1, False: 1]
  ------------------
 9328|      1|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9328:9): [True: 1, False: 0]
  ------------------
 9329|      0|				goto yy443;
 9330|      1|			} else {
 9331|      1|				if (yych <= '\n') goto yy545;
  ------------------
  |  Branch (9331:9): [True: 1, False: 0]
  ------------------
 9332|      0|				if (yych <= '\f') goto yy443;
  ------------------
  |  Branch (9332:9): [True: 0, False: 0]
  ------------------
 9333|      0|				goto yy545;
 9334|      0|			}
 9335|     18|		} else {
 9336|     18|			if (yych <= '*') {
  ------------------
  |  Branch (9336:8): [True: 3, False: 15]
  ------------------
 9337|      3|				if (yych <= ')') goto yy443;
  ------------------
  |  Branch (9337:9): [True: 3, False: 0]
  ------------------
 9338|      0|				goto yy547;
 9339|     15|			} else {
 9340|     15|				if (yych == '/') goto yy709;
  ------------------
  |  Branch (9340:9): [True: 0, False: 15]
  ------------------
 9341|     15|				goto yy443;
 9342|     15|			}
 9343|     18|		}
 9344|      1|yy822:
 9345|      1|		YYDEBUG(822, *YYCURSOR);
 9346|      1|		yyaccept = 83;
 9347|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9348|      1|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9348:7): [True: 1, False: 0]
  ------------------
 9349|      1|			goto yy47;
 9350|      1|		}
 9351|      0|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9351:7): [True: 0, False: 0]
  ------------------
 9352|      0|yy823:
 9353|      0|		YYDEBUG(823, *YYCURSOR);
 9354|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9355|      0|#line 1501 "Zend/zend_language_scanner.l"
 9356|      0|		{
 9357|      0|	RETURN_TOKEN_WITH_IDENT(T_ENDDECLARE);
  ------------------
  |  | 1334|      0|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      0|		token = _token; \
  |  | 1336|      0|		goto emit_token_with_ident; \
  |  | 1337|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9358|      0|}
 9359|      0|#line 9360 "Zend/zend_language_scanner.c"
 9360|      0|yy824:
 9361|      0|		YYDEBUG(824, *YYCURSOR);
 9362|      0|		yyaccept = 84;
 9363|      0|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      0|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9364|      0|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9364:7): [True: 0, False: 0]
  ------------------
 9365|      0|			goto yy47;
 9366|      0|		}
 9367|      0|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9367:7): [True: 0, False: 0]
  ------------------
 9368|      0|yy825:
 9369|      0|		YYDEBUG(825, *YYCURSOR);
 9370|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9371|      0|#line 1493 "Zend/zend_language_scanner.l"
 9372|      0|		{
 9373|      0|	RETURN_TOKEN_WITH_IDENT(T_ENDFOREACH);
  ------------------
  |  | 1334|      0|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      0|		token = _token; \
  |  | 1336|      0|		goto emit_token_with_ident; \
  |  | 1337|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9374|      0|}
 9375|      0|#line 9376 "Zend/zend_language_scanner.c"
 9376|      3|yy826:
 9377|      3|		YYDEBUG(826, *YYCURSOR);
 9378|      3|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      3|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9379|      3|		if (yych == 'D') goto yy857;
  ------------------
  |  Branch (9379:7): [True: 0, False: 3]
  ------------------
 9380|      3|		if (yych == 'd') goto yy857;
  ------------------
  |  Branch (9380:7): [True: 0, False: 3]
  ------------------
 9381|      3|		goto yy86;
 9382|     25|yy827:
 9383|     25|		YYDEBUG(827, *YYCURSOR);
 9384|     25|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9385|     25|		if (yych == 'M') goto yy858;
  ------------------
  |  Branch (9385:7): [True: 0, False: 25]
  ------------------
 9386|     25|		if (yych == 'm') goto yy858;
  ------------------
  |  Branch (9386:7): [True: 21, False: 4]
  ------------------
 9387|      4|		goto yy86;
 9388|    845|yy828:
 9389|    845|		YYDEBUG(828, *YYCURSOR);
 9390|    845|		++YYCURSOR;
  ------------------
  |  |   54|    845|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    845|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    845|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9391|    845|		YYFILL(1);
  ------------------
  |  |   53|    845|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    845|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    845|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    845|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    845|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    845|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    845|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    845|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 845]
  |  |  ------------------
  ------------------
 9392|    845|		yych = *YYCURSOR;
  ------------------
  |  |   54|    845|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    845|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    845|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9393|    845|		if (yych <= '\r') {
  ------------------
  |  Branch (9393:7): [True: 697, False: 148]
  ------------------
 9394|    697|			if (yych <= '\t') {
  ------------------
  |  Branch (9394:8): [True: 53, False: 644]
  ------------------
 9395|     53|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9395:9): [True: 35, False: 18]
  ------------------
 9396|     18|				goto yy738;
 9397|    644|			} else {
 9398|    644|				if (yych <= '\n') goto yy859;
  ------------------
  |  Branch (9398:9): [True: 572, False: 72]
  ------------------
 9399|     72|				if (yych <= '\f') goto yy738;
  ------------------
  |  Branch (9399:9): [True: 0, False: 72]
  ------------------
 9400|     72|				goto yy859;
 9401|     72|			}
 9402|    697|		} else {
 9403|    148|			if (yych <= '*') {
  ------------------
  |  Branch (9403:8): [True: 41, False: 107]
  ------------------
 9404|     41|				if (yych <= ')') goto yy738;
  ------------------
  |  Branch (9404:9): [True: 24, False: 17]
  ------------------
 9405|     17|				goto yy789;
 9406|    107|			} else {
 9407|    107|				if (yych == '[') goto yy590;
  ------------------
  |  Branch (9407:9): [True: 0, False: 107]
  ------------------
 9408|    107|				goto yy738;
 9409|    107|			}
 9410|    148|		}
 9411|    273|yy829:
 9412|    273|		YYDEBUG(829, *YYCURSOR);
 9413|    273|		++YYCURSOR;
  ------------------
  |  |   54|    273|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    273|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    273|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9414|    273|		YYFILL(1);
  ------------------
  |  |   53|    273|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    273|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    273|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    273|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    273|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    273|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    273|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    273|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 273]
  |  |  ------------------
  ------------------
 9415|    273|		yych = *YYCURSOR;
  ------------------
  |  |   54|    273|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    273|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    273|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9416|    273|		if (yych <= '*') {
  ------------------
  |  Branch (9416:7): [True: 261, False: 12]
  ------------------
 9417|    261|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9417:8): [True: 3, False: 258]
  ------------------
 9418|    258|			if (yych <= ')') goto yy590;
  ------------------
  |  Branch (9418:8): [True: 28, False: 230]
  ------------------
 9419|    230|			goto yy861;
 9420|    258|		} else {
 9421|     12|			if (yych == '/') goto yy738;
  ------------------
  |  Branch (9421:8): [True: 10, False: 2]
  ------------------
 9422|      2|			goto yy590;
 9423|     12|		}
 9424|     41|yy830:
 9425|     41|		YYDEBUG(830, *YYCURSOR);
 9426|     41|		yyaccept = 53;
 9427|     41|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     41|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9428|     41|		YYFILL(1);
  ------------------
  |  |   53|     41|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     41|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     41|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 41]
  |  |  ------------------
  ------------------
 9429|     41|		yych = *YYCURSOR;
  ------------------
  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9430|     41|		if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (9430:7): [True: 1, False: 40]
  ------------------
 9431|     40|		if (yych == '*') goto yy668;
  ------------------
  |  Branch (9431:7): [True: 2, False: 38]
  ------------------
 9432|     38|		goto yy590;
 9433|     38|yy831:
 9434|     28|		YYDEBUG(831, *YYCURSOR);
 9435|     28|		yyaccept = 53;
 9436|     28|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     28|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9437|     28|		YYFILL(1);
  ------------------
  |  |   53|     28|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     28|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     28|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 28]
  |  |  ------------------
  ------------------
 9438|     28|		yych = *YYCURSOR;
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9439|     28|		if (yych <= 'W') {
  ------------------
  |  Branch (9439:7): [True: 10, False: 18]
  ------------------
 9440|     10|			if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (9440:8): [True: 0, False: 10]
  ------------------
 9441|     10|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (9441:8): [True: 0, False: 10]
  ------------------
 9442|     10|			goto yy590;
 9443|     18|		} else {
 9444|     18|			if (yych <= 'X') goto yy862;
  ------------------
  |  Branch (9444:8): [True: 0, False: 18]
  ------------------
 9445|     18|			if (yych == 'x') goto yy862;
  ------------------
  |  Branch (9445:8): [True: 14, False: 4]
  ------------------
 9446|      4|			goto yy590;
 9447|     18|		}
 9448|     75|yy832:
 9449|     75|		YYDEBUG(832, *YYCURSOR);
 9450|     75|		yyaccept = 53;
 9451|     75|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     75|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     75|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9452|     75|		YYFILL(1);
  ------------------
  |  |   53|     75|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     75|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     75|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     75|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 75]
  |  |  ------------------
  ------------------
 9453|     75|		yych = *YYCURSOR;
  ------------------
  |  |   54|     75|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     75|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     75|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9454|     75|		if (yych <= 'L') {
  ------------------
  |  Branch (9454:7): [True: 0, False: 75]
  ------------------
 9455|      0|			if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (9455:8): [True: 0, False: 0]
  ------------------
 9456|      0|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (9456:8): [True: 0, False: 0]
  ------------------
 9457|      0|			goto yy590;
 9458|     75|		} else {
 9459|     75|			if (yych <= 'M') goto yy863;
  ------------------
  |  Branch (9459:8): [True: 31, False: 44]
  ------------------
 9460|     44|			if (yych == 'm') goto yy863;
  ------------------
  |  Branch (9460:8): [True: 34, False: 10]
  ------------------
 9461|     10|			goto yy590;
 9462|     44|		}
 9463|     49|yy833:
 9464|     49|		YYDEBUG(833, *YYCURSOR);
 9465|     49|		++YYCURSOR;
  ------------------
  |  |   54|     49|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9466|     49|		YYFILL(1);
  ------------------
  |  |   53|     49|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     49|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     49|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     49|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 49]
  |  |  ------------------
  ------------------
 9467|     49|		yych = *YYCURSOR;
  ------------------
  |  |   54|     49|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9468|     49|		if (yych <= '\r') {
  ------------------
  |  Branch (9468:7): [True: 6, False: 43]
  ------------------
 9469|      6|			if (yych <= '\t') {
  ------------------
  |  Branch (9469:8): [True: 0, False: 6]
  ------------------
 9470|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9470:9): [True: 0, False: 0]
  ------------------
 9471|      0|				goto yy586;
 9472|      6|			} else {
 9473|      6|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (9473:9): [True: 2, False: 4]
  ------------------
 9474|      4|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (9474:9): [True: 1, False: 3]
  ------------------
 9475|      3|				goto yy495;
 9476|      4|			}
 9477|     43|		} else {
 9478|     43|			if (yych <= 'N') {
  ------------------
  |  Branch (9478:8): [True: 1, False: 42]
  ------------------
 9479|      1|				if (yych <= 'M') goto yy586;
  ------------------
  |  Branch (9479:9): [True: 1, False: 0]
  ------------------
 9480|      0|				goto yy864;
 9481|     42|			} else {
 9482|     42|				if (yych == 'n') goto yy864;
  ------------------
  |  Branch (9482:9): [True: 33, False: 9]
  ------------------
 9483|      9|				goto yy586;
 9484|     42|			}
 9485|     43|		}
 9486|    114|yy834:
 9487|    114|		YYDEBUG(834, *YYCURSOR);
 9488|    114|		++YYCURSOR;
  ------------------
  |  |   54|    114|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    114|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    114|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9489|    114|		YYFILL(1);
  ------------------
  |  |   53|    114|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    114|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    114|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    114|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    114|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    114|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    114|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    114|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 114]
  |  |  ------------------
  ------------------
 9490|    114|		yych = *YYCURSOR;
  ------------------
  |  |   54|    114|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    114|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    114|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9491|    114|		if (yych <= '\r') {
  ------------------
  |  Branch (9491:7): [True: 11, False: 103]
  ------------------
 9492|     11|			if (yych <= '\t') {
  ------------------
  |  Branch (9492:8): [True: 0, False: 11]
  ------------------
 9493|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9493:9): [True: 0, False: 0]
  ------------------
 9494|      0|				goto yy586;
 9495|     11|			} else {
 9496|     11|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (9496:9): [True: 6, False: 5]
  ------------------
 9497|      5|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (9497:9): [True: 0, False: 5]
  ------------------
 9498|      5|				goto yy495;
 9499|      5|			}
 9500|    103|		} else {
 9501|    103|			if (yych <= 'E') {
  ------------------
  |  Branch (9501:8): [True: 21, False: 82]
  ------------------
 9502|     21|				if (yych <= 'D') goto yy586;
  ------------------
  |  Branch (9502:9): [True: 18, False: 3]
  ------------------
 9503|      3|				goto yy865;
 9504|     82|			} else {
 9505|     82|				if (yych == 'e') goto yy865;
  ------------------
  |  Branch (9505:9): [True: 64, False: 18]
  ------------------
 9506|     18|				goto yy586;
 9507|     82|			}
 9508|    103|		}
 9509|     88|yy835:
 9510|     88|		YYDEBUG(835, *YYCURSOR);
 9511|     88|		yyaccept = 85;
 9512|     88|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     88|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9513|     88|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9513:7): [True: 0, False: 88]
  ------------------
 9514|      0|			goto yy47;
 9515|      0|		}
 9516|     88|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9516:7): [True: 14, False: 74]
  ------------------
 9517|     88|yy836:
 9518|     88|		YYDEBUG(836, *YYCURSOR);
 9519|     88|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     88|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9520|     88|#line 1582 "Zend/zend_language_scanner.l"
 9521|     88|		{
 9522|     88|	RETURN_TOKEN_WITH_IDENT(T_IMPLEMENTS);
  ------------------
  |  | 1334|     88|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     88|		token = _token; \
  |  | 1336|     88|		goto emit_token_with_ident; \
  |  | 1337|     88|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9523|     88|}
 9524|      0|#line 9525 "Zend/zend_language_scanner.c"
 9525|      1|yy837:
 9526|      1|		YYDEBUG(837, *YYCURSOR);
 9527|      1|		yyaccept = 4;
 9528|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9529|      1|		if (yych == 'C') goto yy866;
  ------------------
  |  Branch (9529:7): [True: 0, False: 1]
  ------------------
 9530|      1|		if (yych == 'c') goto yy866;
  ------------------
  |  Branch (9530:7): [True: 1, False: 0]
  ------------------
 9531|      0|		goto yy48;
 9532|     24|yy838:
 9533|     24|		YYDEBUG(838, *YYCURSOR);
 9534|     24|		yyaccept = 86;
 9535|     24|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     24|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9536|     24|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9536:7): [True: 0, False: 24]
  ------------------
 9537|      0|			goto yy47;
 9538|      0|		}
 9539|     24|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9539:7): [True: 0, False: 24]
  ------------------
 9540|     24|yy839:
 9541|     24|		YYDEBUG(839, *YYCURSOR);
 9542|     24|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     24|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9543|     24|#line 1505 "Zend/zend_language_scanner.l"
 9544|     24|		{
 9545|     24|	RETURN_TOKEN_WITH_IDENT(T_INSTANCEOF);
  ------------------
  |  | 1334|     24|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     24|		token = _token; \
  |  | 1336|     24|		goto emit_token_with_ident; \
  |  | 1337|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9546|     24|}
 9547|      0|#line 9548 "Zend/zend_language_scanner.c"
 9548|     58|yy840:
 9549|     58|		YYDEBUG(840, *YYCURSOR);
 9550|     58|		++YYCURSOR;
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9551|     58|		YYFILL(1);
  ------------------
  |  |   53|     58|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     58|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     58|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 58]
  |  |  ------------------
  ------------------
 9552|     58|		yych = *YYCURSOR;
  ------------------
  |  |   54|     58|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     58|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     58|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9553|     58|		if (yych <= '_') {
  ------------------
  |  Branch (9553:7): [True: 27, False: 31]
  ------------------
 9554|     27|			if (yych <= '@') goto yy86;
  ------------------
  |  Branch (9554:8): [True: 2, False: 25]
  ------------------
 9555|     25|			if (yych <= 'Z') goto yy867;
  ------------------
  |  Branch (9555:8): [True: 22, False: 3]
  ------------------
 9556|      3|			if (yych <= '^') goto yy86;
  ------------------
  |  Branch (9556:8): [True: 2, False: 1]
  ------------------
 9557|      1|			goto yy867;
 9558|     31|		} else {
 9559|     31|			if (yych <= '`') goto yy86;
  ------------------
  |  Branch (9559:8): [True: 0, False: 31]
  ------------------
 9560|     31|			if (yych <= 'z') goto yy867;
  ------------------
  |  Branch (9560:8): [True: 20, False: 11]
  ------------------
 9561|     11|			if (yych <= 0x7F) goto yy86;
  ------------------
  |  Branch (9561:8): [True: 4, False: 7]
  ------------------
 9562|      7|			goto yy867;
 9563|     11|		}
 9564|     11|yy841:
 9565|     11|		YYDEBUG(841, *YYCURSOR);
 9566|     11|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9567|     11|		if (yych == 'T') goto yy870;
  ------------------
  |  Branch (9567:7): [True: 0, False: 11]
  ------------------
 9568|     11|		if (yych == 't') goto yy870;
  ------------------
  |  Branch (9568:7): [True: 10, False: 1]
  ------------------
 9569|      1|		goto yy86;
 9570|     35|yy842:
 9571|     35|		YYDEBUG(842, *YYCURSOR);
 9572|     35|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9573|     35|		if (yych == 'S') goto yy871;
  ------------------
  |  Branch (9573:7): [True: 0, False: 35]
  ------------------
 9574|     35|		if (yych == 's') goto yy871;
  ------------------
  |  Branch (9574:7): [True: 35, False: 0]
  ------------------
 9575|      0|		goto yy86;
 9576|     11|yy843:
 9577|     11|		YYDEBUG(843, *YYCURSOR);
 9578|     11|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9579|     11|		if (yych == ')') goto yy872;
  ------------------
  |  Branch (9579:7): [True: 7, False: 4]
  ------------------
 9580|      4|		goto yy86;
 9581|     19|yy844:
 9582|     19|		YYDEBUG(844, *YYCURSOR);
 9583|     19|		yyaccept = 4;
 9584|     19|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9585|     19|		if (yych == 'C') goto yy874;
  ------------------
  |  Branch (9585:7): [True: 0, False: 19]
  ------------------
 9586|     19|		if (yych == 'c') goto yy874;
  ------------------
  |  Branch (9586:7): [True: 18, False: 1]
  ------------------
 9587|      1|		goto yy48;
 9588|     59|yy845:
 9589|     59|		YYDEBUG(845, *YYCURSOR);
 9590|     59|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     59|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     59|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     59|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9591|     59|		if (yych <= '^') {
  ------------------
  |  Branch (9591:7): [True: 43, False: 16]
  ------------------
 9592|     43|			if (yych <= '9') {
  ------------------
  |  Branch (9592:8): [True: 25, False: 18]
  ------------------
 9593|     25|				if (yych <= '/') goto yy875;
  ------------------
  |  Branch (9593:9): [True: 22, False: 3]
  ------------------
 9594|      3|				goto yy86;
 9595|     25|			} else {
 9596|     18|				if (yych <= '@') goto yy875;
  ------------------
  |  Branch (9596:9): [True: 13, False: 5]
  ------------------
 9597|      5|				if (yych <= 'Z') goto yy86;
  ------------------
  |  Branch (9597:9): [True: 0, False: 5]
  ------------------
 9598|      5|				goto yy875;
 9599|      5|			}
 9600|     43|		} else {
 9601|     16|			if (yych <= '`') {
  ------------------
  |  Branch (9601:8): [True: 0, False: 16]
  ------------------
 9602|      0|				if (yych <= '_') goto yy86;
  ------------------
  |  Branch (9602:9): [True: 0, False: 0]
  ------------------
 9603|      0|				goto yy875;
 9604|     16|			} else {
 9605|     16|				if (yych <= 'z') goto yy86;
  ------------------
  |  Branch (9605:9): [True: 9, False: 7]
  ------------------
 9606|      7|				if (yych <= 0x7F) goto yy875;
  ------------------
  |  Branch (9606:9): [True: 0, False: 7]
  ------------------
 9607|      7|				goto yy86;
 9608|      7|			}
 9609|     16|		}
 9610|  1.16k|yy846:
 9611|  1.16k|		YYDEBUG(846, *YYCURSOR);
 9612|  1.16k|		++YYCURSOR;
  ------------------
  |  |   54|  1.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9613|  1.16k|		YYFILL(1);
  ------------------
  |  |   53|  1.16k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.16k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.16k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.16k]
  |  |  ------------------
  ------------------
 9614|  1.16k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.16k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.16k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.16k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9615|  1.16k|		YYDEBUG(847, *YYCURSOR);
 9616|  1.16k|		if (yych <= '#') {
  ------------------
  |  Branch (9616:7): [True: 792, False: 375]
  ------------------
 9617|    792|			if (yych <= '\f') {
  ------------------
  |  Branch (9617:8): [True: 84, False: 708]
  ------------------
 9618|     84|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9618:9): [True: 11, False: 73]
  ------------------
 9619|     73|				if (yych <= 0x08) goto yy696;
  ------------------
  |  Branch (9619:9): [True: 1, False: 72]
  ------------------
 9620|     72|				if (yych <= '\n') goto yy846;
  ------------------
  |  Branch (9620:9): [True: 64, False: 8]
  ------------------
 9621|      8|				goto yy696;
 9622|    708|			} else {
 9623|    708|				if (yych <= 0x1F) {
  ------------------
  |  Branch (9623:9): [True: 83, False: 625]
  ------------------
 9624|     83|					if (yych <= '\r') goto yy846;
  ------------------
  |  Branch (9624:10): [True: 79, False: 4]
  ------------------
 9625|      4|					goto yy696;
 9626|    625|				} else {
 9627|    625|					if (yych <= ' ') goto yy846;
  ------------------
  |  Branch (9627:10): [True: 19, False: 606]
  ------------------
 9628|    606|					if (yych <= '"') goto yy696;
  ------------------
  |  Branch (9628:10): [True: 0, False: 606]
  ------------------
 9629|    606|					goto yy877;
 9630|    606|				}
 9631|    708|			}
 9632|    792|		} else {
 9633|    375|			if (yych <= '/') {
  ------------------
  |  Branch (9633:8): [True: 201, False: 174]
  ------------------
 9634|    201|				if (yych == '*') goto yy760;
  ------------------
  |  Branch (9634:9): [True: 4, False: 197]
  ------------------
 9635|    197|				if (yych <= '.') goto yy696;
  ------------------
  |  Branch (9635:9): [True: 62, False: 135]
  ------------------
 9636|    135|				goto yy878;
 9637|    197|			} else {
 9638|    174|				if (yych <= 'F') {
  ------------------
  |  Branch (9638:9): [True: 140, False: 34]
  ------------------
 9639|    140|					if (yych <= 'E') goto yy696;
  ------------------
  |  Branch (9639:10): [True: 105, False: 35]
  ------------------
 9640|     35|					goto yy879;
 9641|    140|				} else {
 9642|     34|					if (yych == 'f') goto yy879;
  ------------------
  |  Branch (9642:10): [True: 13, False: 21]
  ------------------
 9643|     21|					goto yy696;
 9644|     34|				}
 9645|    174|			}
 9646|    375|		}
 9647|    217|yy848:
 9648|    217|		YYDEBUG(848, *YYCURSOR);
 9649|    217|		++YYCURSOR;
  ------------------
  |  |   54|    217|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9650|    217|		YYFILL(1);
  ------------------
  |  |   53|    217|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    217|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    217|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    217|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 217]
  |  |  ------------------
  ------------------
 9651|    217|		yych = *YYCURSOR;
  ------------------
  |  |   54|    217|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    217|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    217|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9652|    217|		YYDEBUG(849, *YYCURSOR);
 9653|    217|		if (yych <= '\r') {
  ------------------
  |  Branch (9653:7): [True: 49, False: 168]
  ------------------
 9654|     49|			if (yych <= '\t') {
  ------------------
  |  Branch (9654:8): [True: 12, False: 37]
  ------------------
 9655|     12|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9655:9): [True: 12, False: 0]
  ------------------
 9656|      0|				goto yy808;
 9657|     37|			} else {
 9658|     37|				if (yych <= '\n') goto yy846;
  ------------------
  |  Branch (9658:9): [True: 17, False: 20]
  ------------------
 9659|     20|				if (yych <= '\f') goto yy808;
  ------------------
  |  Branch (9659:9): [True: 0, False: 20]
  ------------------
 9660|     20|				goto yy846;
 9661|     20|			}
 9662|    168|		} else {
 9663|    168|			if (yych <= '*') {
  ------------------
  |  Branch (9663:8): [True: 76, False: 92]
  ------------------
 9664|     76|				if (yych <= ')') goto yy808;
  ------------------
  |  Branch (9664:9): [True: 75, False: 1]
  ------------------
 9665|      1|				goto yy848;
 9666|     92|			} else {
 9667|     92|				if (yych == '/') goto yy694;
  ------------------
  |  Branch (9667:9): [True: 26, False: 66]
  ------------------
 9668|     66|				goto yy808;
 9669|     92|			}
 9670|    168|		}
 9671|    238|yy850:
 9672|    238|		YYDEBUG(850, *YYCURSOR);
 9673|    238|		++YYCURSOR;
  ------------------
  |  |   54|    238|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    238|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    238|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9674|    238|		YYFILL(1);
  ------------------
  |  |   53|    238|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    238|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    238|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    238|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    238|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    238|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    238|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    238|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 238]
  |  |  ------------------
  ------------------
 9675|    238|		yych = *YYCURSOR;
  ------------------
  |  |   54|    238|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    238|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    238|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9676|    238|		if (yych <= '\r') {
  ------------------
  |  Branch (9676:7): [True: 27, False: 211]
  ------------------
 9677|     27|			if (yych <= '\t') {
  ------------------
  |  Branch (9677:8): [True: 14, False: 13]
  ------------------
 9678|     14|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9678:9): [True: 3, False: 11]
  ------------------
 9679|     11|				goto yy692;
 9680|     14|			} else {
 9681|     13|				if (yych <= '\n') goto yy616;
  ------------------
  |  Branch (9681:9): [True: 7, False: 6]
  ------------------
 9682|      6|				if (yych <= '\f') goto yy692;
  ------------------
  |  Branch (9682:9): [True: 4, False: 2]
  ------------------
 9683|      2|				goto yy616;
 9684|      6|			}
 9685|    211|		} else {
 9686|    211|			if (yych <= 'M') {
  ------------------
  |  Branch (9686:8): [True: 150, False: 61]
  ------------------
 9687|    150|				if (yych <= 'L') goto yy692;
  ------------------
  |  Branch (9687:9): [True: 19, False: 131]
  ------------------
 9688|    131|				goto yy880;
 9689|    150|			} else {
 9690|     61|				if (yych == 'm') goto yy880;
  ------------------
  |  Branch (9690:9): [True: 45, False: 16]
  ------------------
 9691|     16|				goto yy692;
 9692|     61|			}
 9693|    211|		}
 9694|     10|yy851:
 9695|     10|		YYDEBUG(851, *YYCURSOR);
 9696|     10|		yyaccept = 4;
 9697|     10|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     10|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9698|     10|		if (yych == '_') goto yy881;
  ------------------
  |  Branch (9698:7): [True: 10, False: 0]
  ------------------
 9699|      0|		goto yy48;
 9700|      9|yy852:
 9701|      9|		YYDEBUG(852, *YYCURSOR);
 9702|      9|		yyaccept = 4;
 9703|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9704|      9|		if (yych == 'P') goto yy882;
  ------------------
  |  Branch (9704:7): [True: 5, False: 4]
  ------------------
 9705|      4|		if (yych == 'p') goto yy882;
  ------------------
  |  Branch (9705:7): [True: 4, False: 0]
  ------------------
 9706|      0|		goto yy48;
 9707|     21|yy853:
 9708|     21|		YYDEBUG(853, *YYCURSOR);
 9709|     21|		yyaccept = 87;
 9710|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9711|     21|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (9711:7): [True: 3, False: 18]
  ------------------
 9712|      3|			goto yy47;
 9713|      3|		}
 9714|     18|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (9714:7): [True: 1, False: 17]
  ------------------
 9715|     18|yy854:
 9716|     18|		YYDEBUG(854, *YYCURSOR);
 9717|     18|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     18|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9718|     18|#line 2268 "Zend/zend_language_scanner.l"
 9719|     18|		{
 9720|     18|	RETURN_TOKEN_WITH_IDENT(T_METHOD_C);
  ------------------
  |  | 1334|     18|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     18|		token = _token; \
  |  | 1336|     18|		goto emit_token_with_ident; \
  |  | 1337|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9721|     18|}
 9722|      0|#line 9723 "Zend/zend_language_scanner.c"
 9723|     34|yy855:
 9724|     34|		YYDEBUG(855, *YYCURSOR);
 9725|     34|		yyaccept = 4;
 9726|     34|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     34|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9727|     34|		if (yych == 'E') goto yy883;
  ------------------
  |  Branch (9727:7): [True: 30, False: 4]
  ------------------
 9728|      4|		if (yych == 'e') goto yy883;
  ------------------
  |  Branch (9728:7): [True: 2, False: 2]
  ------------------
 9729|      2|		goto yy48;
 9730|     25|yy856:
 9731|     25|		YYDEBUG(856, *YYCURSOR);
 9732|     25|		yyaccept = 4;
 9733|     25|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     25|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9734|     25|		if (yych == '_') goto yy884;
  ------------------
  |  Branch (9734:7): [True: 9, False: 16]
  ------------------
 9735|     16|		goto yy48;
 9736|     16|yy857:
 9737|      4|		YYDEBUG(857, *YYCURSOR);
 9738|      4|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9739|      4|		if (yych == 'S') goto yy885;
  ------------------
  |  Branch (9739:7): [True: 0, False: 4]
  ------------------
 9740|      4|		if (yych == 's') goto yy885;
  ------------------
  |  Branch (9740:7): [True: 2, False: 2]
  ------------------
 9741|      2|		goto yy86;
 9742|     21|yy858:
 9743|     21|		YYDEBUG(858, *YYCURSOR);
 9744|     21|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9745|     21|		if (yych == 'E') goto yy887;
  ------------------
  |  Branch (9745:7): [True: 12, False: 9]
  ------------------
 9746|      9|		if (yych == 'e') goto yy887;
  ------------------
  |  Branch (9746:7): [True: 8, False: 1]
  ------------------
 9747|      1|		goto yy86;
 9748|    706|yy859:
 9749|    706|		YYDEBUG(859, *YYCURSOR);
 9750|    706|		++YYCURSOR;
  ------------------
  |  |   54|    706|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    706|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    706|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9751|    706|		YYFILL(1);
  ------------------
  |  |   53|    706|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    706|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    706|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    706|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    706|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    706|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    706|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    706|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 706]
  |  |  ------------------
  ------------------
 9752|    706|		yych = *YYCURSOR;
  ------------------
  |  |   54|    706|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    706|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    706|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9753|    706|		YYDEBUG(860, *YYCURSOR);
 9754|    706|		if (yych <= '@') {
  ------------------
  |  Branch (9754:7): [True: 362, False: 344]
  ------------------
 9755|    362|			if (yych <= 0x1F) {
  ------------------
  |  Branch (9755:8): [True: 63, False: 299]
  ------------------
 9756|     63|				if (yych <= '\t') {
  ------------------
  |  Branch (9756:9): [True: 21, False: 42]
  ------------------
 9757|     21|					if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9757:10): [True: 0, False: 21]
  ------------------
 9758|     21|					if (yych <= 0x08) goto yy738;
  ------------------
  |  Branch (9758:10): [True: 1, False: 20]
  ------------------
 9759|     20|					goto yy859;
 9760|     42|				} else {
 9761|     42|					if (yych <= '\n') goto yy787;
  ------------------
  |  Branch (9761:10): [True: 12, False: 30]
  ------------------
 9762|     30|					if (yych == '\r') goto yy787;
  ------------------
  |  Branch (9762:10): [True: 20, False: 10]
  ------------------
 9763|     10|					goto yy738;
 9764|     30|				}
 9765|    299|			} else {
 9766|    299|				if (yych <= ')') {
  ------------------
  |  Branch (9766:9): [True: 85, False: 214]
  ------------------
 9767|     85|					if (yych <= ' ') goto yy859;
  ------------------
  |  Branch (9767:10): [True: 11, False: 74]
  ------------------
 9768|     74|					if (yych == '#') goto yy888;
  ------------------
  |  Branch (9768:10): [True: 26, False: 48]
  ------------------
 9769|     48|					goto yy738;
 9770|    214|				} else {
 9771|    214|					if (yych <= '*') goto yy789;
  ------------------
  |  Branch (9771:10): [True: 9, False: 205]
  ------------------
 9772|    205|					if (yych == '/') goto yy889;
  ------------------
  |  Branch (9772:10): [True: 195, False: 10]
  ------------------
 9773|     10|					goto yy738;
 9774|    205|				}
 9775|    299|			}
 9776|    362|		} else {
 9777|    344|			if (yych <= '_') {
  ------------------
  |  Branch (9777:8): [True: 22, False: 322]
  ------------------
 9778|     22|				if (yych <= 'H') {
  ------------------
  |  Branch (9778:9): [True: 9, False: 13]
  ------------------
 9779|      9|					if (yych == 'E') goto yy891;
  ------------------
  |  Branch (9779:10): [True: 2, False: 7]
  ------------------
 9780|      7|					goto yy890;
 9781|     13|				} else {
 9782|     13|					if (yych <= 'I') goto yy892;
  ------------------
  |  Branch (9782:10): [True: 4, False: 9]
  ------------------
 9783|      9|					if (yych <= 'Z') goto yy890;
  ------------------
  |  Branch (9783:10): [True: 0, False: 9]
  ------------------
 9784|      9|					if (yych <= '^') goto yy738;
  ------------------
  |  Branch (9784:10): [True: 3, False: 6]
  ------------------
 9785|      6|					goto yy890;
 9786|      9|				}
 9787|    322|			} else {
 9788|    322|				if (yych <= 'h') {
  ------------------
  |  Branch (9788:9): [True: 105, False: 217]
  ------------------
 9789|    105|					if (yych <= '`') goto yy738;
  ------------------
  |  Branch (9789:10): [True: 1, False: 104]
  ------------------
 9790|    104|					if (yych == 'e') goto yy891;
  ------------------
  |  Branch (9790:10): [True: 93, False: 11]
  ------------------
 9791|     11|					goto yy890;
 9792|    217|				} else {
 9793|    217|					if (yych <= 'i') goto yy892;
  ------------------
  |  Branch (9793:10): [True: 156, False: 61]
  ------------------
 9794|     61|					if (yych <= 'z') goto yy890;
  ------------------
  |  Branch (9794:10): [True: 22, False: 39]
  ------------------
 9795|     39|					if (yych <= 0x7F) goto yy738;
  ------------------
  |  Branch (9795:10): [True: 28, False: 11]
  ------------------
 9796|     11|					goto yy890;
 9797|     39|				}
 9798|    322|			}
 9799|    344|		}
 9800|    230|yy861:
 9801|    230|		YYDEBUG(861, *YYCURSOR);
 9802|    230|		++YYCURSOR;
  ------------------
  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9803|    230|		YYFILL(1);
  ------------------
  |  |   53|    230|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    230|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    230|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 230]
  |  |  ------------------
  ------------------
 9804|    230|		yych = *YYCURSOR;
  ------------------
  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9805|    230|		if (yych <= '*') {
  ------------------
  |  Branch (9805:7): [True: 16, False: 214]
  ------------------
 9806|     16|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9806:8): [True: 5, False: 11]
  ------------------
 9807|     11|			if (yych <= ')') goto yy590;
  ------------------
  |  Branch (9807:8): [True: 3, False: 8]
  ------------------
 9808|      8|			goto yy668;
 9809|    214|		} else {
 9810|    214|			if (yych == '/') goto yy787;
  ------------------
  |  Branch (9810:8): [True: 205, False: 9]
  ------------------
 9811|      9|			goto yy590;
 9812|    214|		}
 9813|     14|yy862:
 9814|     14|		YYDEBUG(862, *YYCURSOR);
 9815|     14|		++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9816|     14|		YYFILL(1);
  ------------------
  |  |   53|     14|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     14|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     14|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 14]
  |  |  ------------------
  ------------------
 9817|     14|		yych = *YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9818|     14|		if (yych <= 'S') {
  ------------------
  |  Branch (9818:7): [True: 1, False: 13]
  ------------------
 9819|      1|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9819:8): [True: 0, False: 1]
  ------------------
 9820|      1|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (9820:8): [True: 0, False: 1]
  ------------------
 9821|      1|			goto yy590;
 9822|     13|		} else {
 9823|     13|			if (yych <= 'T') goto yy893;
  ------------------
  |  Branch (9823:8): [True: 1, False: 12]
  ------------------
 9824|     12|			if (yych == 't') goto yy893;
  ------------------
  |  Branch (9824:8): [True: 5, False: 7]
  ------------------
 9825|      7|			goto yy590;
 9826|     12|		}
 9827|     65|yy863:
 9828|     65|		YYDEBUG(863, *YYCURSOR);
 9829|     65|		++YYCURSOR;
  ------------------
  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9830|     65|		YYFILL(1);
  ------------------
  |  |   53|     65|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     65|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     65|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 65]
  |  |  ------------------
  ------------------
 9831|     65|		yych = *YYCURSOR;
  ------------------
  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9832|     65|		if (yych <= 'O') {
  ------------------
  |  Branch (9832:7): [True: 12, False: 53]
  ------------------
 9833|     12|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9833:8): [True: 1, False: 11]
  ------------------
 9834|     11|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (9834:8): [True: 0, False: 11]
  ------------------
 9835|     11|			goto yy590;
 9836|     53|		} else {
 9837|     53|			if (yych <= 'P') goto yy894;
  ------------------
  |  Branch (9837:8): [True: 1, False: 52]
  ------------------
 9838|     52|			if (yych == 'p') goto yy894;
  ------------------
  |  Branch (9838:8): [True: 47, False: 5]
  ------------------
 9839|      5|			goto yy590;
 9840|     52|		}
 9841|     33|yy864:
 9842|     33|		YYDEBUG(864, *YYCURSOR);
 9843|     33|		++YYCURSOR;
  ------------------
  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9844|     33|		YYFILL(1);
  ------------------
  |  |   53|     33|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     33|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     33|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 33]
  |  |  ------------------
  ------------------
 9845|     33|		yych = *YYCURSOR;
  ------------------
  |  |   54|     33|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     33|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     33|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9846|     33|		if (yych <= '\r') {
  ------------------
  |  Branch (9846:7): [True: 2, False: 31]
  ------------------
 9847|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (9847:8): [True: 0, False: 2]
  ------------------
 9848|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9848:9): [True: 0, False: 0]
  ------------------
 9849|      0|				goto yy586;
 9850|      2|			} else {
 9851|      2|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (9851:9): [True: 0, False: 2]
  ------------------
 9852|      2|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (9852:9): [True: 1, False: 1]
  ------------------
 9853|      1|				goto yy495;
 9854|      2|			}
 9855|     31|		} else {
 9856|     31|			if (yych <= 'D') {
  ------------------
  |  Branch (9856:8): [True: 3, False: 28]
  ------------------
 9857|      3|				if (yych <= 'C') goto yy586;
  ------------------
  |  Branch (9857:9): [True: 3, False: 0]
  ------------------
 9858|      0|				goto yy895;
 9859|     28|			} else {
 9860|     28|				if (yych == 'd') goto yy895;
  ------------------
  |  Branch (9860:9): [True: 23, False: 5]
  ------------------
 9861|      5|				goto yy586;
 9862|     28|			}
 9863|     31|		}
 9864|     67|yy865:
 9865|     67|		YYDEBUG(865, *YYCURSOR);
 9866|     67|		++YYCURSOR;
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9867|     67|		YYFILL(1);
  ------------------
  |  |   53|     67|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     67|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     67|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 67]
  |  |  ------------------
  ------------------
 9868|     67|		yych = *YYCURSOR;
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9869|     67|		if (yych <= '\r') {
  ------------------
  |  Branch (9869:7): [True: 15, False: 52]
  ------------------
 9870|     15|			if (yych <= '\t') {
  ------------------
  |  Branch (9870:8): [True: 14, False: 1]
  ------------------
 9871|     14|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9871:9): [True: 7, False: 7]
  ------------------
 9872|      7|				goto yy586;
 9873|     14|			} else {
 9874|      1|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (9874:9): [True: 1, False: 0]
  ------------------
 9875|      0|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (9875:9): [True: 0, False: 0]
  ------------------
 9876|      0|				goto yy495;
 9877|      0|			}
 9878|     52|		} else {
 9879|     52|			if (yych <= 'M') {
  ------------------
  |  Branch (9879:8): [True: 17, False: 35]
  ------------------
 9880|     17|				if (yych <= 'L') goto yy586;
  ------------------
  |  Branch (9880:9): [True: 3, False: 14]
  ------------------
 9881|     14|				goto yy896;
 9882|     35|			} else {
 9883|     35|				if (yych == 'm') goto yy896;
  ------------------
  |  Branch (9883:9): [True: 32, False: 3]
  ------------------
 9884|      3|				goto yy586;
 9885|     35|			}
 9886|     52|		}
 9887|      1|yy866:
 9888|      1|		YYDEBUG(866, *YYCURSOR);
 9889|      1|		yyaccept = 4;
 9890|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9891|      1|		if (yych == 'E') goto yy897;
  ------------------
  |  Branch (9891:7): [True: 0, False: 1]
  ------------------
 9892|      1|		if (yych == 'e') goto yy897;
  ------------------
  |  Branch (9892:7): [True: 1, False: 0]
  ------------------
 9893|      0|		goto yy48;
 9894|    412|yy867:
 9895|    412|		YYDEBUG(867, *YYCURSOR);
 9896|    412|		yyaccept = 88;
 9897|    412|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    412|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    412|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    412|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    412|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    412|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    412|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9898|    412|		YYFILL(1);
  ------------------
  |  |   53|    412|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    412|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    412|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    412|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    412|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    412|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    412|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    412|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 412]
  |  |  ------------------
  ------------------
 9899|    412|		yych = *YYCURSOR;
  ------------------
  |  |   54|    412|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    412|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    412|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9900|    412|		YYDEBUG(868, *YYCURSOR);
 9901|    412|		if (yych <= '\\') {
  ------------------
  |  Branch (9901:7): [True: 182, False: 230]
  ------------------
 9902|    182|			if (yych <= '@') {
  ------------------
  |  Branch (9902:8): [True: 60, False: 122]
  ------------------
 9903|     60|				if (yych <= '/') goto yy869;
  ------------------
  |  Branch (9903:9): [True: 21, False: 39]
  ------------------
 9904|     39|				if (yych <= '9') goto yy867;
  ------------------
  |  Branch (9904:9): [True: 32, False: 7]
  ------------------
 9905|    122|			} else {
 9906|    122|				if (yych <= 'Z') goto yy867;
  ------------------
  |  Branch (9906:9): [True: 107, False: 15]
  ------------------
 9907|     15|				if (yych >= '\\') goto yy840;
  ------------------
  |  Branch (9907:9): [True: 11, False: 4]
  ------------------
 9908|     15|			}
 9909|    230|		} else {
 9910|    230|			if (yych <= '`') {
  ------------------
  |  Branch (9910:8): [True: 34, False: 196]
  ------------------
 9911|     34|				if (yych == '_') goto yy867;
  ------------------
  |  Branch (9911:9): [True: 32, False: 2]
  ------------------
 9912|    196|			} else {
 9913|    196|				if (yych <= 'z') goto yy867;
  ------------------
  |  Branch (9913:9): [True: 98, False: 98]
  ------------------
 9914|     98|				if (yych >= 0x80) goto yy867;
  ------------------
  |  Branch (9914:9): [True: 93, False: 5]
  ------------------
 9915|     98|			}
 9916|    230|		}
 9917|     43|yy869:
 9918|     43|		YYDEBUG(869, *YYCURSOR);
 9919|     43|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     43|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9920|     43|#line 2438 "Zend/zend_language_scanner.l"
 9921|     43|		{
 9922|     43|	RETURN_TOKEN_WITH_STR(T_NAME_RELATIVE, sizeof("namespace\\") - 1);
  ------------------
  |  | 1328|     43|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     43|		token = _token; \
  |  | 1330|     43|		offset = _offset; \
  |  | 1331|     43|		goto emit_token_with_str; \
  |  | 1332|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9923|     43|}
 9924|      0|#line 9925 "Zend/zend_language_scanner.c"
 9925|     10|yy870:
 9926|     10|		YYDEBUG(870, *YYCURSOR);
 9927|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9928|     10|		if (yych == ')') goto yy899;
  ------------------
  |  Branch (9928:7): [True: 10, False: 0]
  ------------------
 9929|      0|		goto yy86;
 9930|     35|yy871:
 9931|     35|		YYDEBUG(871, *YYCURSOR);
 9932|     35|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9933|     35|		if (yych == 'E') goto yy901;
  ------------------
  |  Branch (9933:7): [True: 0, False: 35]
  ------------------
 9934|     35|		if (yych == 'e') goto yy901;
  ------------------
  |  Branch (9934:7): [True: 12, False: 23]
  ------------------
 9935|     23|		goto yy86;
 9936|     23|yy872:
 9937|      7|		YYDEBUG(872, *YYCURSOR);
 9938|      7|		++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9939|      7|		YYDEBUG(873, *YYCURSOR);
 9940|      7|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      7|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9941|      7|#line 1785 "Zend/zend_language_scanner.l"
 9942|      7|		{
 9943|      7|	RETURN_TOKEN_WITH_IDENT(T_PUBLIC_SET);
  ------------------
  |  | 1334|      7|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      7|		token = _token; \
  |  | 1336|      7|		goto emit_token_with_ident; \
  |  | 1337|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9944|      7|}
 9945|      0|#line 9946 "Zend/zend_language_scanner.c"
 9946|     18|yy874:
 9947|     18|		YYDEBUG(874, *YYCURSOR);
 9948|     18|		yyaccept = 4;
 9949|     18|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     18|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9950|     18|		if (yych == 'E') goto yy902;
  ------------------
  |  Branch (9950:7): [True: 1, False: 17]
  ------------------
 9951|     17|		if (yych == 'e') goto yy902;
  ------------------
  |  Branch (9951:7): [True: 15, False: 2]
  ------------------
 9952|      2|		goto yy48;
 9953|     42|yy875:
 9954|     42|		YYDEBUG(875, *YYCURSOR);
 9955|     42|		++YYCURSOR;
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9956|    158|yy876:
 9957|    158|		YYDEBUG(876, *YYCURSOR);
 9958|    158|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    158|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    158|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    158|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    158|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    158|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    158|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    158|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    158|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 9959|    158|#line 1427 "Zend/zend_language_scanner.l"
 9960|    158|		{
 9961|    158|	yyless(yyleng - 1);
  ------------------
  |  |   68|    158|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    158|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    158|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    158|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    158|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    158|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    158|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    158|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    158|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    158|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    158|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 158]
  |  |  ------------------
  ------------------
 9962|    158|	HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|    158|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|    158|do {																			\
  |  |   97|    158|	char *p = (s), *boundary = p+(l);											\
  |  |   98|    158|																				\
  |  |   99|  3.29k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 3.14k, False: 158]
  |  |  ------------------
  |  |  100|  3.14k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 278, False: 2.86k]
  |  |  |  Branch (100:22): [True: 246, False: 2.61k]
  |  |  |  Branch (100:36): [True: 198, False: 48]
  |  |  ------------------
  |  |  101|    476|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|    476|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|    476|		}																		\
  |  |  103|  3.14k|		p++;																	\
  |  |  104|  3.14k|	}																			\
  |  |  105|    158|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 158]
  |  |  ------------------
  ------------------
 9963|    158|	RETURN_TOKEN_WITH_IDENT(T_YIELD_FROM);
  ------------------
  |  | 1334|    158|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    158|		token = _token; \
  |  | 1336|    158|		goto emit_token_with_ident; \
  |  | 1337|    158|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9964|    158|}
 9965|      0|#line 9966 "Zend/zend_language_scanner.c"
 9966|    607|yy877:
 9967|    607|		YYDEBUG(877, *YYCURSOR);
 9968|    607|		++YYCURSOR;
  ------------------
  |  |   54|    607|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    607|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    607|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9969|    607|		YYFILL(1);
  ------------------
  |  |   53|    607|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    607|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    607|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    607|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    607|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    607|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    607|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    607|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 607]
  |  |  ------------------
  ------------------
 9970|    607|		yych = *YYCURSOR;
  ------------------
  |  |   54|    607|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    607|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    607|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9971|    607|		if (yych <= '\r') {
  ------------------
  |  Branch (9971:7): [True: 539, False: 68]
  ------------------
 9972|    539|			if (yych <= '\t') {
  ------------------
  |  Branch (9972:8): [True: 19, False: 520]
  ------------------
 9973|     19|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9973:9): [True: 16, False: 3]
  ------------------
 9974|      3|				goto yy808;
 9975|    520|			} else {
 9976|    520|				if (yych <= '\n') goto yy904;
  ------------------
  |  Branch (9976:9): [True: 394, False: 126]
  ------------------
 9977|    126|				if (yych <= '\f') goto yy808;
  ------------------
  |  Branch (9977:9): [True: 8, False: 118]
  ------------------
 9978|    118|				goto yy904;
 9979|    126|			}
 9980|    539|		} else {
 9981|     68|			if (yych <= '*') {
  ------------------
  |  Branch (9981:8): [True: 24, False: 44]
  ------------------
 9982|     24|				if (yych <= ')') goto yy808;
  ------------------
  |  Branch (9982:9): [True: 14, False: 10]
  ------------------
 9983|     10|				goto yy848;
 9984|     44|			} else {
 9985|     44|				if (yych == '[') goto yy696;
  ------------------
  |  Branch (9985:9): [True: 0, False: 44]
  ------------------
 9986|     44|				goto yy808;
 9987|     44|			}
 9988|     68|		}
 9989|    135|yy878:
 9990|    135|		YYDEBUG(878, *YYCURSOR);
 9991|    135|		++YYCURSOR;
  ------------------
  |  |   54|    135|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    135|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    135|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9992|    135|		YYFILL(1);
  ------------------
  |  |   53|    135|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    135|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    135|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    135|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    135|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    135|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    135|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    135|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 135]
  |  |  ------------------
  ------------------
 9993|    135|		yych = *YYCURSOR;
  ------------------
  |  |   54|    135|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    135|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    135|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9994|    135|		if (yych <= '*') {
  ------------------
  |  Branch (9994:7): [True: 117, False: 18]
  ------------------
 9995|    117|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (9995:8): [True: 8, False: 109]
  ------------------
 9996|    109|			if (yych <= ')') goto yy696;
  ------------------
  |  Branch (9996:8): [True: 21, False: 88]
  ------------------
 9997|     88|			goto yy906;
 9998|    109|		} else {
 9999|     18|			if (yych == '/') goto yy808;
  ------------------
  |  Branch (9999:8): [True: 12, False: 6]
  ------------------
10000|      6|			goto yy696;
10001|     18|		}
10002|     48|yy879:
10003|     48|		YYDEBUG(879, *YYCURSOR);
10004|     48|		++YYCURSOR;
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10005|     48|		YYFILL(1);
  ------------------
  |  |   53|     48|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     48|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     48|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 48]
  |  |  ------------------
  ------------------
10006|     48|		yych = *YYCURSOR;
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10007|     48|		if (yych <= 'Q') {
  ------------------
  |  Branch (10007:7): [True: 3, False: 45]
  ------------------
10008|      3|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10008:8): [True: 3, False: 0]
  ------------------
10009|      0|			if (yych == '*') goto yy760;
  ------------------
  |  Branch (10009:8): [True: 0, False: 0]
  ------------------
10010|      0|			goto yy696;
10011|     45|		} else {
10012|     45|			if (yych <= 'R') goto yy907;
  ------------------
  |  Branch (10012:8): [True: 35, False: 10]
  ------------------
10013|     10|			if (yych == 'r') goto yy907;
  ------------------
  |  Branch (10013:8): [True: 9, False: 1]
  ------------------
10014|      1|			goto yy696;
10015|     10|		}
10016|    176|yy880:
10017|    176|		YYDEBUG(880, *YYCURSOR);
10018|    176|		++YYCURSOR;
  ------------------
  |  |   54|    176|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    176|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    176|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10019|    176|		YYFILL(1);
  ------------------
  |  |   53|    176|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    176|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    176|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    176|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    176|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    176|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    176|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    176|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 176]
  |  |  ------------------
  ------------------
10020|    176|		yych = *YYCURSOR;
  ------------------
  |  |   54|    176|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    176|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    176|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10021|    176|		if (yych <= '9') {
  ------------------
  |  Branch (10021:7): [True: 50, False: 126]
  ------------------
10022|     50|			if (yych <= '\n') {
  ------------------
  |  Branch (10022:8): [True: 23, False: 27]
  ------------------
10023|     23|				if (yych <= 0x00) goto yy875;
  ------------------
  |  Branch (10023:9): [True: 0, False: 23]
  ------------------
10024|     23|				if (yych <= '\t') goto yy908;
  ------------------
  |  Branch (10024:9): [True: 0, False: 23]
  ------------------
10025|     23|				goto yy909;
10026|     27|			} else {
10027|     27|				if (yych == '\r') goto yy909;
  ------------------
  |  Branch (10027:9): [True: 0, False: 27]
  ------------------
10028|     27|				if (yych <= '/') goto yy908;
  ------------------
  |  Branch (10028:9): [True: 21, False: 6]
  ------------------
10029|      6|				goto yy692;
10030|     27|			}
10031|    126|		} else {
10032|    126|			if (yych <= '_') {
  ------------------
  |  Branch (10032:8): [True: 92, False: 34]
  ------------------
10033|     92|				if (yych <= '@') goto yy908;
  ------------------
  |  Branch (10033:9): [True: 9, False: 83]
  ------------------
10034|     83|				if (yych <= 'Z') goto yy692;
  ------------------
  |  Branch (10034:9): [True: 81, False: 2]
  ------------------
10035|      2|				if (yych <= '^') goto yy908;
  ------------------
  |  Branch (10035:9): [True: 2, False: 0]
  ------------------
10036|      0|				goto yy692;
10037|     34|			} else {
10038|     34|				if (yych <= '`') goto yy908;
  ------------------
  |  Branch (10038:9): [True: 1, False: 33]
  ------------------
10039|     33|				if (yych <= 'z') goto yy692;
  ------------------
  |  Branch (10039:9): [True: 11, False: 22]
  ------------------
10040|     22|				if (yych <= 0x7F) goto yy908;
  ------------------
  |  Branch (10040:9): [True: 7, False: 15]
  ------------------
10041|     15|				goto yy692;
10042|     22|			}
10043|    126|		}
10044|     10|yy881:
10045|     10|		YYDEBUG(881, *YYCURSOR);
10046|     10|		yyaccept = 4;
10047|     10|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     10|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10048|     10|		if (yych == '_') goto yy910;
  ------------------
  |  Branch (10048:7): [True: 10, False: 0]
  ------------------
10049|      0|		goto yy48;
10050|      9|yy882:
10051|      9|		YYDEBUG(882, *YYCURSOR);
10052|      9|		yyaccept = 4;
10053|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10054|      9|		if (yych == 'I') goto yy912;
  ------------------
  |  Branch (10054:7): [True: 5, False: 4]
  ------------------
10055|      4|		if (yych == 'i') goto yy912;
  ------------------
  |  Branch (10055:7): [True: 4, False: 0]
  ------------------
10056|      0|		goto yy48;
10057|     32|yy883:
10058|     32|		YYDEBUG(883, *YYCURSOR);
10059|     32|		yyaccept = 4;
10060|     32|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     32|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10061|     32|		if (yych == '_') goto yy913;
  ------------------
  |  Branch (10061:7): [True: 21, False: 11]
  ------------------
10062|     11|		goto yy48;
10063|     11|yy884:
10064|      9|		YYDEBUG(884, *YYCURSOR);
10065|      9|		yyaccept = 4;
10066|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10067|      9|		if (yych == '_') goto yy914;
  ------------------
  |  Branch (10067:7): [True: 8, False: 1]
  ------------------
10068|      1|		goto yy48;
10069|      2|yy885:
10070|      2|		YYDEBUG(885, *YYCURSOR);
10071|      2|		++YYCURSOR;
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10072|      8|yy886:
10073|      8|		YYDEBUG(886, *YYCURSOR);
10074|      8|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      8|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10075|      8|#line 1569 "Zend/zend_language_scanner.l"
10076|      8|		{
10077|      8|	yyless(4);
  ------------------
  |  |   68|      8|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      8|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      8|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      8|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 8]
  |  |  ------------------
  ------------------
10078|      8|	RETURN_TOKEN_WITH_STR(T_STRING, 0);
  ------------------
  |  | 1328|      8|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|      8|		token = _token; \
  |  | 1330|      8|		offset = _offset; \
  |  | 1331|      8|		goto emit_token_with_str; \
  |  | 1332|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10079|      8|}
10080|      0|#line 10081 "Zend/zend_language_scanner.c"
10081|     20|yy887:
10082|     20|		YYDEBUG(887, *YYCURSOR);
10083|     20|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10084|     20|		if (yych == 'N') goto yy916;
  ------------------
  |  Branch (10084:7): [True: 12, False: 8]
  ------------------
10085|      8|		if (yych == 'n') goto yy916;
  ------------------
  |  Branch (10085:7): [True: 4, False: 4]
  ------------------
10086|      4|		goto yy86;
10087|     26|yy888:
10088|     26|		YYDEBUG(888, *YYCURSOR);
10089|     26|		++YYCURSOR;
  ------------------
  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10090|     26|		YYFILL(1);
  ------------------
  |  |   53|     26|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     26|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     26|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 26]
  |  |  ------------------
  ------------------
10091|     26|		yych = *YYCURSOR;
  ------------------
  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10092|     26|		if (yych <= '\f') {
  ------------------
  |  Branch (10092:7): [True: 15, False: 11]
  ------------------
10093|     15|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10093:8): [True: 0, False: 15]
  ------------------
10094|     15|			if (yych == '\n') goto yy859;
  ------------------
  |  Branch (10094:8): [True: 10, False: 5]
  ------------------
10095|      5|			goto yy738;
10096|     15|		} else {
10097|     11|			if (yych <= '\r') goto yy859;
  ------------------
  |  Branch (10097:8): [True: 0, False: 11]
  ------------------
10098|     11|			if (yych == '*') goto yy789;
  ------------------
  |  Branch (10098:8): [True: 4, False: 7]
  ------------------
10099|      7|			goto yy738;
10100|     11|		}
10101|    195|yy889:
10102|    195|		YYDEBUG(889, *YYCURSOR);
10103|    195|		++YYCURSOR;
  ------------------
  |  |   54|    195|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    195|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    195|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10104|    195|		YYFILL(1);
  ------------------
  |  |   53|    195|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    195|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    195|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    195|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    195|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    195|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    195|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    195|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 195]
  |  |  ------------------
  ------------------
10105|    195|		yych = *YYCURSOR;
  ------------------
  |  |   54|    195|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    195|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    195|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10106|    195|		if (yych <= '\f') {
  ------------------
  |  Branch (10106:7): [True: 11, False: 184]
  ------------------
10107|     11|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10107:8): [True: 9, False: 2]
  ------------------
10108|      2|			if (yych == '\n') goto yy787;
  ------------------
  |  Branch (10108:8): [True: 2, False: 0]
  ------------------
10109|      0|			goto yy738;
10110|    184|		} else {
10111|    184|			if (yych <= '\r') goto yy787;
  ------------------
  |  Branch (10111:8): [True: 24, False: 160]
  ------------------
10112|    160|			if (yych == '*') goto yy917;
  ------------------
  |  Branch (10112:8): [True: 101, False: 59]
  ------------------
10113|     59|			goto yy738;
10114|    160|		}
10115|     57|yy890:
10116|     57|		YYDEBUG(890, *YYCURSOR);
10117|     57|		yyaccept = 53;
10118|     57|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     57|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10119|     57|		YYFILL(1);
  ------------------
  |  |   53|     57|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     57|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     57|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 57]
  |  |  ------------------
  ------------------
10120|     57|		yych = *YYCURSOR;
  ------------------
  |  |   54|     57|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     57|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10121|     57|		if (yych <= '\f') {
  ------------------
  |  Branch (10121:7): [True: 16, False: 41]
  ------------------
10122|     16|			if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (10122:8): [True: 5, False: 11]
  ------------------
10123|     11|			if (yych == '\n') goto yy787;
  ------------------
  |  Branch (10123:8): [True: 6, False: 5]
  ------------------
10124|      5|			goto yy738;
10125|     41|		} else {
10126|     41|			if (yych <= '\r') goto yy787;
  ------------------
  |  Branch (10126:8): [True: 6, False: 35]
  ------------------
10127|     35|			if (yych == '*') goto yy789;
  ------------------
  |  Branch (10127:8): [True: 5, False: 30]
  ------------------
10128|     30|			goto yy738;
10129|     35|		}
10130|     95|yy891:
10131|     95|		YYDEBUG(891, *YYCURSOR);
10132|     95|		yyaccept = 53;
10133|     95|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     95|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     95|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10134|     95|		YYFILL(1);
  ------------------
  |  |   53|     95|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     95|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     95|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     95|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 95]
  |  |  ------------------
  ------------------
10135|     95|		yych = *YYCURSOR;
  ------------------
  |  |   54|     95|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     95|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     95|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10136|     95|		if (yych <= ')') {
  ------------------
  |  Branch (10136:7): [True: 12, False: 83]
  ------------------
10137|     12|			if (yych <= '\n') {
  ------------------
  |  Branch (10137:8): [True: 1, False: 11]
  ------------------
10138|      1|				if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (10138:9): [True: 0, False: 1]
  ------------------
10139|      1|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10139:9): [True: 0, False: 1]
  ------------------
10140|      1|				goto yy787;
10141|     11|			} else {
10142|     11|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10142:9): [True: 2, False: 9]
  ------------------
10143|      9|				goto yy738;
10144|     11|			}
10145|     83|		} else {
10146|     83|			if (yych <= 'X') {
  ------------------
  |  Branch (10146:8): [True: 25, False: 58]
  ------------------
10147|     25|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10147:9): [True: 1, False: 24]
  ------------------
10148|     24|				if (yych <= 'W') goto yy738;
  ------------------
  |  Branch (10148:9): [True: 10, False: 14]
  ------------------
10149|     14|				goto yy918;
10150|     58|			} else {
10151|     58|				if (yych == 'x') goto yy918;
  ------------------
  |  Branch (10151:9): [True: 20, False: 38]
  ------------------
10152|     38|				goto yy738;
10153|     58|			}
10154|     83|		}
10155|    160|yy892:
10156|    160|		YYDEBUG(892, *YYCURSOR);
10157|    160|		yyaccept = 53;
10158|    160|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    160|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    160|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    160|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    160|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    160|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    160|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10159|    160|		YYFILL(1);
  ------------------
  |  |   53|    160|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    160|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    160|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    160|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    160|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    160|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    160|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    160|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 160]
  |  |  ------------------
  ------------------
10160|    160|		yych = *YYCURSOR;
  ------------------
  |  |   54|    160|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    160|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    160|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10161|    160|		if (yych <= ')') {
  ------------------
  |  Branch (10161:7): [True: 22, False: 138]
  ------------------
10162|     22|			if (yych <= '\n') {
  ------------------
  |  Branch (10162:8): [True: 11, False: 11]
  ------------------
10163|     11|				if (yych <= 0x00) goto yy583;
  ------------------
  |  Branch (10163:9): [True: 0, False: 11]
  ------------------
10164|     11|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10164:9): [True: 5, False: 6]
  ------------------
10165|      6|				goto yy787;
10166|     11|			} else {
10167|     11|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10167:9): [True: 0, False: 11]
  ------------------
10168|     11|				goto yy738;
10169|     11|			}
10170|    138|		} else {
10171|    138|			if (yych <= 'M') {
  ------------------
  |  Branch (10171:8): [True: 102, False: 36]
  ------------------
10172|    102|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10172:9): [True: 4, False: 98]
  ------------------
10173|     98|				if (yych <= 'L') goto yy738;
  ------------------
  |  Branch (10173:9): [True: 3, False: 95]
  ------------------
10174|     95|				goto yy919;
10175|     98|			} else {
10176|     36|				if (yych == 'm') goto yy919;
  ------------------
  |  Branch (10176:9): [True: 28, False: 8]
  ------------------
10177|      8|				goto yy738;
10178|     36|			}
10179|    138|		}
10180|      6|yy893:
10181|      6|		YYDEBUG(893, *YYCURSOR);
10182|      6|		++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10183|      6|		YYFILL(1);
  ------------------
  |  |   53|      6|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      6|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      6|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6]
  |  |  ------------------
  ------------------
10184|      6|		yych = *YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10185|      6|		if (yych <= 'D') {
  ------------------
  |  Branch (10185:7): [True: 0, False: 6]
  ------------------
10186|      0|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10186:8): [True: 0, False: 0]
  ------------------
10187|      0|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10187:8): [True: 0, False: 0]
  ------------------
10188|      0|			goto yy590;
10189|      6|		} else {
10190|      6|			if (yych <= 'E') goto yy920;
  ------------------
  |  Branch (10190:8): [True: 0, False: 6]
  ------------------
10191|      6|			if (yych == 'e') goto yy920;
  ------------------
  |  Branch (10191:8): [True: 5, False: 1]
  ------------------
10192|      1|			goto yy590;
10193|      6|		}
10194|     48|yy894:
10195|     48|		YYDEBUG(894, *YYCURSOR);
10196|     48|		++YYCURSOR;
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10197|     48|		YYFILL(1);
  ------------------
  |  |   53|     48|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     48|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     48|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 48]
  |  |  ------------------
  ------------------
10198|     48|		yych = *YYCURSOR;
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10199|     48|		if (yych <= 'K') {
  ------------------
  |  Branch (10199:7): [True: 5, False: 43]
  ------------------
10200|      5|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10200:8): [True: 3, False: 2]
  ------------------
10201|      2|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10201:8): [True: 0, False: 2]
  ------------------
10202|      2|			goto yy590;
10203|     43|		} else {
10204|     43|			if (yych <= 'L') goto yy921;
  ------------------
  |  Branch (10204:8): [True: 0, False: 43]
  ------------------
10205|     43|			if (yych == 'l') goto yy921;
  ------------------
  |  Branch (10205:8): [True: 40, False: 3]
  ------------------
10206|      3|			goto yy590;
10207|     43|		}
10208|     35|yy895:
10209|     35|		YYDEBUG(895, *YYCURSOR);
10210|     35|		++YYCURSOR;
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10211|     35|		YYFILL(1);
  ------------------
  |  |   53|     35|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     35|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     35|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 35]
  |  |  ------------------
  ------------------
10212|     35|		yych = *YYCURSOR;
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10213|     35|		if (yych <= '\r') {
  ------------------
  |  Branch (10213:7): [True: 5, False: 30]
  ------------------
10214|      5|			if (yych <= '\t') {
  ------------------
  |  Branch (10214:8): [True: 2, False: 3]
  ------------------
10215|      2|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10215:9): [True: 0, False: 2]
  ------------------
10216|      2|				goto yy586;
10217|      3|			} else {
10218|      3|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (10218:9): [True: 1, False: 2]
  ------------------
10219|      2|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (10219:9): [True: 0, False: 2]
  ------------------
10220|      2|				goto yy495;
10221|      2|			}
10222|     30|		} else {
10223|     30|			if (yych <= 'S') {
  ------------------
  |  Branch (10223:8): [True: 3, False: 27]
  ------------------
10224|      3|				if (yych <= 'R') goto yy586;
  ------------------
  |  Branch (10224:9): [True: 2, False: 1]
  ------------------
10225|      1|				goto yy922;
10226|     27|			} else {
10227|     27|				if (yych == 's') goto yy922;
  ------------------
  |  Branch (10227:9): [True: 0, False: 27]
  ------------------
10228|     27|				goto yy586;
10229|     27|			}
10230|     30|		}
10231|     46|yy896:
10232|     46|		YYDEBUG(896, *YYCURSOR);
10233|     46|		++YYCURSOR;
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10234|     46|		YYFILL(1);
  ------------------
  |  |   53|     46|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     46|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     46|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 46]
  |  |  ------------------
  ------------------
10235|     46|		yych = *YYCURSOR;
  ------------------
  |  |   54|     46|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     46|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     46|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10236|     46|		if (yych <= '\r') {
  ------------------
  |  Branch (10236:7): [True: 0, False: 46]
  ------------------
10237|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (10237:8): [True: 0, False: 0]
  ------------------
10238|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10238:9): [True: 0, False: 0]
  ------------------
10239|      0|				goto yy586;
10240|      0|			} else {
10241|      0|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (10241:9): [True: 0, False: 0]
  ------------------
10242|      0|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (10242:9): [True: 0, False: 0]
  ------------------
10243|      0|				goto yy495;
10244|      0|			}
10245|     46|		} else {
10246|     46|			if (yych <= 'E') {
  ------------------
  |  Branch (10246:8): [True: 5, False: 41]
  ------------------
10247|      5|				if (yych <= 'D') goto yy586;
  ------------------
  |  Branch (10247:9): [True: 0, False: 5]
  ------------------
10248|      5|				goto yy923;
10249|     41|			} else {
10250|     41|				if (yych == 'e') goto yy923;
  ------------------
  |  Branch (10250:9): [True: 19, False: 22]
  ------------------
10251|     22|				goto yy586;
10252|     41|			}
10253|     46|		}
10254|      1|yy897:
10255|      1|		YYDEBUG(897, *YYCURSOR);
10256|      1|		yyaccept = 89;
10257|      1|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10258|      1|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (10258:7): [True: 1, False: 0]
  ------------------
10259|      1|			goto yy47;
10260|      1|		}
10261|      0|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (10261:7): [True: 0, False: 0]
  ------------------
10262|      0|yy898:
10263|      0|		YYDEBUG(898, *YYCURSOR);
10264|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10265|      0|#line 1725 "Zend/zend_language_scanner.l"
10266|      0|		{
10267|      0|	RETURN_TOKEN_WITH_IDENT(T_INCLUDE_ONCE);
  ------------------
  |  | 1334|      0|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      0|		token = _token; \
  |  | 1336|      0|		goto emit_token_with_ident; \
  |  | 1337|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10268|      0|}
10269|      0|#line 10270 "Zend/zend_language_scanner.c"
10270|     10|yy899:
10271|     10|		YYDEBUG(899, *YYCURSOR);
10272|     10|		++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10273|     10|		YYDEBUG(900, *YYCURSOR);
10274|     10|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     10|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10275|     10|#line 1793 "Zend/zend_language_scanner.l"
10276|     10|		{
10277|     10|	RETURN_TOKEN_WITH_IDENT(T_PRIVATE_SET);
  ------------------
  |  | 1334|     10|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     10|		token = _token; \
  |  | 1336|     10|		goto emit_token_with_ident; \
  |  | 1337|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10278|     10|}
10279|      0|#line 10280 "Zend/zend_language_scanner.c"
10280|     12|yy901:
10281|     12|		YYDEBUG(901, *YYCURSOR);
10282|     12|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10283|     12|		if (yych == 'T') goto yy924;
  ------------------
  |  Branch (10283:7): [True: 0, False: 12]
  ------------------
10284|     12|		if (yych == 't') goto yy924;
  ------------------
  |  Branch (10284:7): [True: 10, False: 2]
  ------------------
10285|      2|		goto yy86;
10286|     16|yy902:
10287|     16|		YYDEBUG(902, *YYCURSOR);
10288|     16|		yyaccept = 90;
10289|     16|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     16|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10290|     16|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (10290:7): [True: 0, False: 16]
  ------------------
10291|      0|			goto yy47;
10292|      0|		}
10293|     16|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (10293:7): [True: 0, False: 16]
  ------------------
10294|     16|yy903:
10295|     16|		YYDEBUG(903, *YYCURSOR);
10296|     16|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     16|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10297|     16|#line 1733 "Zend/zend_language_scanner.l"
10298|     16|		{
10299|     16|	RETURN_TOKEN_WITH_IDENT(T_REQUIRE_ONCE);
  ------------------
  |  | 1334|     16|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     16|		token = _token; \
  |  | 1336|     16|		goto emit_token_with_ident; \
  |  | 1337|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10300|     16|}
10301|      0|#line 10302 "Zend/zend_language_scanner.c"
10302|    556|yy904:
10303|    556|		YYDEBUG(904, *YYCURSOR);
10304|    556|		++YYCURSOR;
  ------------------
  |  |   54|    556|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    556|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    556|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10305|    556|		YYFILL(1);
  ------------------
  |  |   53|    556|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    556|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    556|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    556|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    556|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    556|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    556|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    556|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 556]
  |  |  ------------------
  ------------------
10306|    556|		yych = *YYCURSOR;
  ------------------
  |  |   54|    556|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    556|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    556|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10307|    556|		YYDEBUG(905, *YYCURSOR);
10308|    556|		if (yych <= '"') {
  ------------------
  |  Branch (10308:7): [True: 85, False: 471]
  ------------------
10309|     85|			if (yych <= '\n') {
  ------------------
  |  Branch (10309:8): [True: 55, False: 30]
  ------------------
10310|     55|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10310:9): [True: 7, False: 48]
  ------------------
10311|     48|				if (yych <= 0x08) goto yy808;
  ------------------
  |  Branch (10311:9): [True: 32, False: 16]
  ------------------
10312|     16|				if (yych <= '\t') goto yy904;
  ------------------
  |  Branch (10312:9): [True: 8, False: 8]
  ------------------
10313|      8|				goto yy846;
10314|     30|			} else {
10315|     30|				if (yych <= '\r') {
  ------------------
  |  Branch (10315:9): [True: 17, False: 13]
  ------------------
10316|     17|					if (yych <= '\f') goto yy808;
  ------------------
  |  Branch (10316:10): [True: 0, False: 17]
  ------------------
10317|     17|					goto yy846;
10318|     17|				} else {
10319|     13|					if (yych == ' ') goto yy904;
  ------------------
  |  Branch (10319:10): [True: 11, False: 2]
  ------------------
10320|      2|					goto yy808;
10321|     13|				}
10322|     30|			}
10323|    471|		} else {
10324|    471|			if (yych <= '/') {
  ------------------
  |  Branch (10324:8): [True: 286, False: 185]
  ------------------
10325|    286|				if (yych <= ')') {
  ------------------
  |  Branch (10325:9): [True: 38, False: 248]
  ------------------
10326|     38|					if (yych <= '#') goto yy925;
  ------------------
  |  Branch (10326:10): [True: 8, False: 30]
  ------------------
10327|     30|					goto yy808;
10328|    248|				} else {
10329|    248|					if (yych <= '*') goto yy848;
  ------------------
  |  Branch (10329:10): [True: 9, False: 239]
  ------------------
10330|    239|					if (yych <= '.') goto yy808;
  ------------------
  |  Branch (10330:10): [True: 103, False: 136]
  ------------------
10331|    136|					goto yy926;
10332|    239|				}
10333|    286|			} else {
10334|    185|				if (yych <= 'F') {
  ------------------
  |  Branch (10334:9): [True: 87, False: 98]
  ------------------
10335|     87|					if (yych <= 'E') goto yy808;
  ------------------
  |  Branch (10335:10): [True: 6, False: 81]
  ------------------
10336|     81|					goto yy927;
10337|     98|				} else {
10338|     98|					if (yych == 'f') goto yy927;
  ------------------
  |  Branch (10338:10): [True: 60, False: 38]
  ------------------
10339|     38|					goto yy808;
10340|     98|				}
10341|    185|			}
10342|    471|		}
10343|     88|yy906:
10344|     88|		YYDEBUG(906, *YYCURSOR);
10345|     88|		++YYCURSOR;
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10346|     88|		YYFILL(1);
  ------------------
  |  |   53|     88|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     88|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     88|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 88]
  |  |  ------------------
  ------------------
10347|     88|		yych = *YYCURSOR;
  ------------------
  |  |   54|     88|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     88|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10348|     88|		if (yych <= '*') {
  ------------------
  |  Branch (10348:7): [True: 4, False: 84]
  ------------------
10349|      4|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10349:8): [True: 0, False: 4]
  ------------------
10350|      4|			if (yych <= ')') goto yy696;
  ------------------
  |  Branch (10350:8): [True: 3, False: 1]
  ------------------
10351|      1|			goto yy760;
10352|     84|		} else {
10353|     84|			if (yych == '/') goto yy846;
  ------------------
  |  Branch (10353:8): [True: 75, False: 9]
  ------------------
10354|      9|			goto yy696;
10355|     84|		}
10356|     44|yy907:
10357|     44|		YYDEBUG(907, *YYCURSOR);
10358|     44|		++YYCURSOR;
  ------------------
  |  |   54|     44|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     44|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     44|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10359|     44|		YYFILL(1);
  ------------------
  |  |   53|     44|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     44|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     44|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     44|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     44|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     44|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     44|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     44|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 44]
  |  |  ------------------
  ------------------
10360|     44|		yych = *YYCURSOR;
  ------------------
  |  |   54|     44|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     44|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     44|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10361|     44|		if (yych <= 'N') {
  ------------------
  |  Branch (10361:7): [True: 3, False: 41]
  ------------------
10362|      3|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10362:8): [True: 0, False: 3]
  ------------------
10363|      3|			if (yych == '*') goto yy760;
  ------------------
  |  Branch (10363:8): [True: 0, False: 3]
  ------------------
10364|      3|			goto yy696;
10365|     41|		} else {
10366|     41|			if (yych <= 'O') goto yy928;
  ------------------
  |  Branch (10366:8): [True: 30, False: 11]
  ------------------
10367|     11|			if (yych == 'o') goto yy928;
  ------------------
  |  Branch (10367:8): [True: 7, False: 4]
  ------------------
10368|      4|			goto yy696;
10369|     11|		}
10370|     40|yy908:
10371|     40|		YYDEBUG(908, *YYCURSOR);
10372|     40|		yyaccept = 91;
10373|     40|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     40|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10374|     40|		YYFILL(1);
  ------------------
  |  |   53|     40|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     40|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     40|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 40]
  |  |  ------------------
  ------------------
10375|     40|		yych = *YYCURSOR;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10376|     40|		if (yych <= '\n') {
  ------------------
  |  Branch (10376:7): [True: 26, False: 14]
  ------------------
10377|     26|			if (yych <= 0x00) goto yy876;
  ------------------
  |  Branch (10377:8): [True: 9, False: 17]
  ------------------
10378|     17|			if (yych <= '\t') goto yy692;
  ------------------
  |  Branch (10378:8): [True: 1, False: 16]
  ------------------
10379|     16|			goto yy616;
10380|     17|		} else {
10381|     14|			if (yych == '\r') goto yy616;
  ------------------
  |  Branch (10381:8): [True: 2, False: 12]
  ------------------
10382|     12|			goto yy692;
10383|     14|		}
10384|     23|yy909:
10385|     23|		YYDEBUG(909, *YYCURSOR);
10386|     23|		yyaccept = 91;
10387|     23|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     23|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10388|     23|		YYFILL(5);
  ------------------
  |  |   53|     23|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     23|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     23|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 23]
  |  |  ------------------
  ------------------
10389|     23|		yych = *YYCURSOR;
  ------------------
  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10390|     23|		if (yych <= '"') {
  ------------------
  |  Branch (10390:7): [True: 12, False: 11]
  ------------------
10391|     12|			if (yych <= '\f') {
  ------------------
  |  Branch (10391:8): [True: 8, False: 4]
  ------------------
10392|      8|				if (yych <= 0x08) goto yy876;
  ------------------
  |  Branch (10392:9): [True: 0, False: 8]
  ------------------
10393|      8|				if (yych <= '\n') goto yy616;
  ------------------
  |  Branch (10393:9): [True: 8, False: 0]
  ------------------
10394|      0|				goto yy876;
10395|      8|			} else {
10396|      4|				if (yych <= '\r') goto yy616;
  ------------------
  |  Branch (10396:9): [True: 0, False: 4]
  ------------------
10397|      4|				if (yych == ' ') goto yy616;
  ------------------
  |  Branch (10397:9): [True: 0, False: 4]
  ------------------
10398|      4|				goto yy876;
10399|      4|			}
10400|     12|		} else {
10401|     11|			if (yych <= 'E') {
  ------------------
  |  Branch (10401:8): [True: 7, False: 4]
  ------------------
10402|      7|				if (yych <= '#') goto yy618;
  ------------------
  |  Branch (10402:9): [True: 0, False: 7]
  ------------------
10403|      7|				if (yych == '/') goto yy619;
  ------------------
  |  Branch (10403:9): [True: 6, False: 1]
  ------------------
10404|      1|				goto yy876;
10405|      7|			} else {
10406|      4|				if (yych <= 'F') goto yy691;
  ------------------
  |  Branch (10406:9): [True: 0, False: 4]
  ------------------
10407|      4|				if (yych == 'f') goto yy691;
  ------------------
  |  Branch (10407:9): [True: 0, False: 4]
  ------------------
10408|      4|				goto yy876;
10409|      4|			}
10410|     11|		}
10411|     10|yy910:
10412|     10|		YYDEBUG(910, *YYCURSOR);
10413|     10|		yyaccept = 92;
10414|     10|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     10|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10415|     10|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (10415:7): [True: 1, False: 9]
  ------------------
10416|      1|			goto yy47;
10417|      1|		}
10418|      9|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (10418:7): [True: 0, False: 9]
  ------------------
10419|      9|yy911:
10420|      9|		YYDEBUG(911, *YYCURSOR);
10421|      9|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10422|      9|#line 2260 "Zend/zend_language_scanner.l"
10423|      9|		{
10424|      9|	RETURN_TOKEN_WITH_IDENT(T_FUNC_C);
  ------------------
  |  | 1334|      9|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      9|		token = _token; \
  |  | 1336|      9|		goto emit_token_with_ident; \
  |  | 1337|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10425|      9|}
10426|      0|#line 10427 "Zend/zend_language_scanner.c"
10427|      9|yy912:
10428|      9|		YYDEBUG(912, *YYCURSOR);
10429|      9|		yyaccept = 4;
10430|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10431|      9|		if (yych == 'L') goto yy929;
  ------------------
  |  Branch (10431:7): [True: 5, False: 4]
  ------------------
10432|      4|		if (yych == 'l') goto yy929;
  ------------------
  |  Branch (10432:7): [True: 4, False: 0]
  ------------------
10433|      0|		goto yy48;
10434|     21|yy913:
10435|     21|		YYDEBUG(913, *YYCURSOR);
10436|     21|		yyaccept = 4;
10437|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10438|     21|		if (yych == '_') goto yy930;
  ------------------
  |  Branch (10438:7): [True: 21, False: 0]
  ------------------
10439|      0|		goto yy48;
10440|      8|yy914:
10441|      8|		YYDEBUG(914, *YYCURSOR);
10442|      8|		yyaccept = 93;
10443|      8|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      8|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10444|      8|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (10444:7): [True: 0, False: 8]
  ------------------
10445|      0|			goto yy47;
10446|      0|		}
10447|      8|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (10447:7): [True: 0, False: 8]
  ------------------
10448|      8|yy915:
10449|      8|		YYDEBUG(915, *YYCURSOR);
10450|      8|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      8|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10451|      8|#line 2264 "Zend/zend_language_scanner.l"
10452|      8|		{
10453|      8|	RETURN_TOKEN_WITH_IDENT(T_PROPERTY_C);
  ------------------
  |  | 1334|      8|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      8|		token = _token; \
  |  | 1336|      8|		goto emit_token_with_ident; \
  |  | 1337|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10454|      8|}
10455|      0|#line 10456 "Zend/zend_language_scanner.c"
10456|     16|yy916:
10457|     16|		YYDEBUG(916, *YYCURSOR);
10458|     16|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     16|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     16|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10459|     16|		if (yych == 'T') goto yy857;
  ------------------
  |  Branch (10459:7): [True: 0, False: 16]
  ------------------
10460|     16|		if (yych == 't') goto yy857;
  ------------------
  |  Branch (10460:7): [True: 4, False: 12]
  ------------------
10461|     12|		goto yy86;
10462|    101|yy917:
10463|    101|		YYDEBUG(917, *YYCURSOR);
10464|    101|		++YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10465|    101|		YYFILL(1);
  ------------------
  |  |   53|    101|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    101|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    101|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 101]
  |  |  ------------------
  ------------------
10466|    101|		yych = *YYCURSOR;
  ------------------
  |  |   54|    101|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    101|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    101|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10467|    101|		if (yych <= '\r') {
  ------------------
  |  Branch (10467:7): [True: 14, False: 87]
  ------------------
10468|     14|			if (yych <= '\t') {
  ------------------
  |  Branch (10468:8): [True: 2, False: 12]
  ------------------
10469|      2|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10469:9): [True: 0, False: 2]
  ------------------
10470|      2|				goto yy738;
10471|     12|			} else {
10472|     12|				if (yych <= '\n') goto yy787;
  ------------------
  |  Branch (10472:9): [True: 0, False: 12]
  ------------------
10473|     12|				if (yych <= '\f') goto yy738;
  ------------------
  |  Branch (10473:9): [True: 4, False: 8]
  ------------------
10474|      8|				goto yy787;
10475|     12|			}
10476|     87|		} else {
10477|     87|			if (yych <= '*') {
  ------------------
  |  Branch (10477:8): [True: 38, False: 49]
  ------------------
10478|     38|				if (yych <= ')') goto yy738;
  ------------------
  |  Branch (10478:9): [True: 35, False: 3]
  ------------------
10479|      3|				goto yy789;
10480|     49|			} else {
10481|     49|				if (yych == '/') goto yy859;
  ------------------
  |  Branch (10481:9): [True: 21, False: 28]
  ------------------
10482|     28|				goto yy738;
10483|     49|			}
10484|     87|		}
10485|     34|yy918:
10486|     34|		YYDEBUG(918, *YYCURSOR);
10487|     34|		++YYCURSOR;
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10488|     34|		YYFILL(1);
  ------------------
  |  |   53|     34|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     34|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     34|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 34]
  |  |  ------------------
  ------------------
10489|     34|		yych = *YYCURSOR;
  ------------------
  |  |   54|     34|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     34|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10490|     34|		if (yych <= ')') {
  ------------------
  |  Branch (10490:7): [True: 0, False: 34]
  ------------------
10491|      0|			if (yych <= '\n') {
  ------------------
  |  Branch (10491:8): [True: 0, False: 0]
  ------------------
10492|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10492:9): [True: 0, False: 0]
  ------------------
10493|      0|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10493:9): [True: 0, False: 0]
  ------------------
10494|      0|				goto yy787;
10495|      0|			} else {
10496|      0|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10496:9): [True: 0, False: 0]
  ------------------
10497|      0|				goto yy738;
10498|      0|			}
10499|     34|		} else {
10500|     34|			if (yych <= 'T') {
  ------------------
  |  Branch (10500:8): [True: 19, False: 15]
  ------------------
10501|     19|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10501:9): [True: 2, False: 17]
  ------------------
10502|     17|				if (yych <= 'S') goto yy738;
  ------------------
  |  Branch (10502:9): [True: 11, False: 6]
  ------------------
10503|      6|				goto yy932;
10504|     17|			} else {
10505|     15|				if (yych == 't') goto yy932;
  ------------------
  |  Branch (10505:9): [True: 12, False: 3]
  ------------------
10506|      3|				goto yy738;
10507|     15|			}
10508|     34|		}
10509|    123|yy919:
10510|    123|		YYDEBUG(919, *YYCURSOR);
10511|    123|		++YYCURSOR;
  ------------------
  |  |   54|    123|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    123|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    123|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10512|    123|		YYFILL(1);
  ------------------
  |  |   53|    123|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    123|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    123|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    123|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    123|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    123|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    123|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    123|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 123]
  |  |  ------------------
  ------------------
10513|    123|		yych = *YYCURSOR;
  ------------------
  |  |   54|    123|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    123|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    123|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10514|    123|		if (yych <= ')') {
  ------------------
  |  Branch (10514:7): [True: 13, False: 110]
  ------------------
10515|     13|			if (yych <= '\n') {
  ------------------
  |  Branch (10515:8): [True: 0, False: 13]
  ------------------
10516|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10516:9): [True: 0, False: 0]
  ------------------
10517|      0|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10517:9): [True: 0, False: 0]
  ------------------
10518|      0|				goto yy787;
10519|     13|			} else {
10520|     13|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10520:9): [True: 11, False: 2]
  ------------------
10521|      2|				goto yy738;
10522|     13|			}
10523|    110|		} else {
10524|    110|			if (yych <= 'P') {
  ------------------
  |  Branch (10524:8): [True: 14, False: 96]
  ------------------
10525|     14|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10525:9): [True: 2, False: 12]
  ------------------
10526|     12|				if (yych <= 'O') goto yy738;
  ------------------
  |  Branch (10526:9): [True: 12, False: 0]
  ------------------
10527|      0|				goto yy933;
10528|     96|			} else {
10529|     96|				if (yych == 'p') goto yy933;
  ------------------
  |  Branch (10529:9): [True: 93, False: 3]
  ------------------
10530|      3|				goto yy738;
10531|     96|			}
10532|    110|		}
10533|      5|yy920:
10534|      5|		YYDEBUG(920, *YYCURSOR);
10535|      5|		++YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10536|      5|		YYFILL(1);
  ------------------
  |  |   53|      5|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      5|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      5|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 5]
  |  |  ------------------
  ------------------
10537|      5|		yych = *YYCURSOR;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10538|      5|		if (yych <= 'M') {
  ------------------
  |  Branch (10538:7): [True: 3, False: 2]
  ------------------
10539|      3|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10539:8): [True: 0, False: 3]
  ------------------
10540|      3|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10540:8): [True: 0, False: 3]
  ------------------
10541|      3|			goto yy590;
10542|      3|		} else {
10543|      2|			if (yych <= 'N') goto yy934;
  ------------------
  |  Branch (10543:8): [True: 0, False: 2]
  ------------------
10544|      2|			if (yych == 'n') goto yy934;
  ------------------
  |  Branch (10544:8): [True: 1, False: 1]
  ------------------
10545|      1|			goto yy590;
10546|      2|		}
10547|     40|yy921:
10548|     40|		YYDEBUG(921, *YYCURSOR);
10549|     40|		++YYCURSOR;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10550|     40|		YYFILL(1);
  ------------------
  |  |   53|     40|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     40|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     40|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 40]
  |  |  ------------------
  ------------------
10551|     40|		yych = *YYCURSOR;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10552|     40|		if (yych <= 'D') {
  ------------------
  |  Branch (10552:7): [True: 9, False: 31]
  ------------------
10553|      9|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10553:8): [True: 2, False: 7]
  ------------------
10554|      7|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10554:8): [True: 3, False: 4]
  ------------------
10555|      4|			goto yy590;
10556|     31|		} else {
10557|     31|			if (yych <= 'E') goto yy935;
  ------------------
  |  Branch (10557:8): [True: 0, False: 31]
  ------------------
10558|     31|			if (yych == 'e') goto yy935;
  ------------------
  |  Branch (10558:8): [True: 31, False: 0]
  ------------------
10559|      0|			goto yy590;
10560|     31|		}
10561|      1|yy922:
10562|      1|		YYDEBUG(922, *YYCURSOR);
10563|      1|		yyaccept = 94;
10564|      1|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10565|      1|		YYFILL(1);
  ------------------
  |  |   53|      1|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      1|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
10566|      1|		yych = *YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10567|      1|		if (yych <= '\n') {
  ------------------
  |  Branch (10567:7): [True: 0, False: 1]
  ------------------
10568|      0|			if (yych <= 0x00) goto yy886;
  ------------------
  |  Branch (10568:8): [True: 0, False: 0]
  ------------------
10569|      0|			if (yych <= '\t') goto yy586;
  ------------------
  |  Branch (10569:8): [True: 0, False: 0]
  ------------------
10570|      0|			goto yy495;
10571|      1|		} else {
10572|      1|			if (yych == '\r') goto yy495;
  ------------------
  |  Branch (10572:8): [True: 0, False: 1]
  ------------------
10573|      1|			goto yy586;
10574|      1|		}
10575|     24|yy923:
10576|     24|		YYDEBUG(923, *YYCURSOR);
10577|     24|		++YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10578|     24|		YYFILL(1);
  ------------------
  |  |   53|     24|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     24|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     24|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 24]
  |  |  ------------------
  ------------------
10579|     24|		yych = *YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10580|     24|		if (yych <= '\r') {
  ------------------
  |  Branch (10580:7): [True: 2, False: 22]
  ------------------
10581|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (10581:8): [True: 0, False: 2]
  ------------------
10582|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10582:9): [True: 0, False: 0]
  ------------------
10583|      0|				goto yy586;
10584|      2|			} else {
10585|      2|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (10585:9): [True: 2, False: 0]
  ------------------
10586|      0|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (10586:9): [True: 0, False: 0]
  ------------------
10587|      0|				goto yy495;
10588|      0|			}
10589|     22|		} else {
10590|     22|			if (yych <= 'N') {
  ------------------
  |  Branch (10590:8): [True: 21, False: 1]
  ------------------
10591|     21|				if (yych <= 'M') goto yy586;
  ------------------
  |  Branch (10591:9): [True: 5, False: 16]
  ------------------
10592|     16|				goto yy936;
10593|     21|			} else {
10594|      1|				if (yych == 'n') goto yy936;
  ------------------
  |  Branch (10594:9): [True: 1, False: 0]
  ------------------
10595|      0|				goto yy586;
10596|      1|			}
10597|     22|		}
10598|     10|yy924:
10599|     10|		YYDEBUG(924, *YYCURSOR);
10600|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10601|     10|		if (yych == ')') goto yy937;
  ------------------
  |  Branch (10601:7): [True: 8, False: 2]
  ------------------
10602|      2|		goto yy86;
10603|      8|yy925:
10604|      8|		YYDEBUG(925, *YYCURSOR);
10605|      8|		++YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10606|      8|		YYFILL(1);
  ------------------
  |  |   53|      8|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      8|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      8|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 8]
  |  |  ------------------
  ------------------
10607|      8|		yych = *YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10608|      8|		if (yych <= '\f') {
  ------------------
  |  Branch (10608:7): [True: 3, False: 5]
  ------------------
10609|      3|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10609:8): [True: 3, False: 0]
  ------------------
10610|      0|			if (yych == '\n') goto yy904;
  ------------------
  |  Branch (10610:8): [True: 0, False: 0]
  ------------------
10611|      0|			goto yy808;
10612|      5|		} else {
10613|      5|			if (yych <= '\r') goto yy904;
  ------------------
  |  Branch (10613:8): [True: 0, False: 5]
  ------------------
10614|      5|			if (yych == '*') goto yy848;
  ------------------
  |  Branch (10614:8): [True: 4, False: 1]
  ------------------
10615|      1|			goto yy808;
10616|      5|		}
10617|    136|yy926:
10618|    136|		YYDEBUG(926, *YYCURSOR);
10619|    136|		++YYCURSOR;
  ------------------
  |  |   54|    136|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    136|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    136|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10620|    136|		YYFILL(1);
  ------------------
  |  |   53|    136|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    136|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    136|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    136|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    136|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    136|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    136|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    136|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 136]
  |  |  ------------------
  ------------------
10621|    136|		yych = *YYCURSOR;
  ------------------
  |  |   54|    136|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    136|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    136|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10622|    136|		if (yych <= '\f') {
  ------------------
  |  Branch (10622:7): [True: 4, False: 132]
  ------------------
10623|      4|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10623:8): [True: 0, False: 4]
  ------------------
10624|      4|			if (yych == '\n') goto yy846;
  ------------------
  |  Branch (10624:8): [True: 0, False: 4]
  ------------------
10625|      4|			goto yy808;
10626|    132|		} else {
10627|    132|			if (yych <= '\r') goto yy846;
  ------------------
  |  Branch (10627:8): [True: 4, False: 128]
  ------------------
10628|    128|			if (yych == '*') goto yy939;
  ------------------
  |  Branch (10628:8): [True: 99, False: 29]
  ------------------
10629|     29|			goto yy808;
10630|    128|		}
10631|    141|yy927:
10632|    141|		YYDEBUG(927, *YYCURSOR);
10633|    141|		++YYCURSOR;
  ------------------
  |  |   54|    141|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    141|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    141|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10634|    141|		YYFILL(1);
  ------------------
  |  |   53|    141|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    141|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    141|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    141|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    141|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    141|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    141|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    141|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 141]
  |  |  ------------------
  ------------------
10635|    141|		yych = *YYCURSOR;
  ------------------
  |  |   54|    141|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    141|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    141|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10636|    141|		if (yych <= ')') {
  ------------------
  |  Branch (10636:7): [True: 9, False: 132]
  ------------------
10637|      9|			if (yych <= '\n') {
  ------------------
  |  Branch (10637:8): [True: 9, False: 0]
  ------------------
10638|      9|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10638:9): [True: 3, False: 6]
  ------------------
10639|      6|				if (yych <= '\t') goto yy808;
  ------------------
  |  Branch (10639:9): [True: 4, False: 2]
  ------------------
10640|      2|				goto yy846;
10641|      6|			} else {
10642|      0|				if (yych == '\r') goto yy846;
  ------------------
  |  Branch (10642:9): [True: 0, False: 0]
  ------------------
10643|      0|				goto yy808;
10644|      0|			}
10645|    132|		} else {
10646|    132|			if (yych <= 'R') {
  ------------------
  |  Branch (10646:8): [True: 79, False: 53]
  ------------------
10647|     79|				if (yych <= '*') goto yy848;
  ------------------
  |  Branch (10647:9): [True: 0, False: 79]
  ------------------
10648|     79|				if (yych <= 'Q') goto yy808;
  ------------------
  |  Branch (10648:9): [True: 11, False: 68]
  ------------------
10649|     68|				goto yy940;
10650|     79|			} else {
10651|     53|				if (yych == 'r') goto yy940;
  ------------------
  |  Branch (10651:9): [True: 50, False: 3]
  ------------------
10652|      3|				goto yy808;
10653|     53|			}
10654|    132|		}
10655|     37|yy928:
10656|     37|		YYDEBUG(928, *YYCURSOR);
10657|     37|		++YYCURSOR;
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10658|     37|		YYFILL(1);
  ------------------
  |  |   53|     37|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     37|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     37|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 37]
  |  |  ------------------
  ------------------
10659|     37|		yych = *YYCURSOR;
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10660|     37|		if (yych <= 'L') {
  ------------------
  |  Branch (10660:7): [True: 4, False: 33]
  ------------------
10661|      4|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10661:8): [True: 1, False: 3]
  ------------------
10662|      3|			if (yych == '*') goto yy760;
  ------------------
  |  Branch (10662:8): [True: 1, False: 2]
  ------------------
10663|      2|			goto yy696;
10664|     33|		} else {
10665|     33|			if (yych <= 'M') goto yy941;
  ------------------
  |  Branch (10665:8): [True: 32, False: 1]
  ------------------
10666|      1|			if (yych == 'm') goto yy941;
  ------------------
  |  Branch (10666:8): [True: 0, False: 1]
  ------------------
10667|      1|			goto yy696;
10668|      1|		}
10669|      9|yy929:
10670|      9|		YYDEBUG(929, *YYCURSOR);
10671|      9|		yyaccept = 4;
10672|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10673|      9|		if (yych == 'E') goto yy942;
  ------------------
  |  Branch (10673:7): [True: 5, False: 4]
  ------------------
10674|      4|		if (yych == 'e') goto yy942;
  ------------------
  |  Branch (10674:7): [True: 4, False: 0]
  ------------------
10675|      0|		goto yy48;
10676|     21|yy930:
10677|     21|		YYDEBUG(930, *YYCURSOR);
10678|     21|		yyaccept = 95;
10679|     21|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10680|     21|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (10680:7): [True: 0, False: 21]
  ------------------
10681|      0|			goto yy47;
10682|      0|		}
10683|     21|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (10683:7): [True: 0, False: 21]
  ------------------
10684|     21|yy931:
10685|     21|		YYDEBUG(931, *YYCURSOR);
10686|     21|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     21|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10687|     21|#line 2284 "Zend/zend_language_scanner.l"
10688|     21|		{
10689|     21|	RETURN_TOKEN_WITH_IDENT(T_NS_C);
  ------------------
  |  | 1334|     21|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|     21|		token = _token; \
  |  | 1336|     21|		goto emit_token_with_ident; \
  |  | 1337|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10690|     21|}
10691|      0|#line 10692 "Zend/zend_language_scanner.c"
10692|     18|yy932:
10693|     18|		YYDEBUG(932, *YYCURSOR);
10694|     18|		++YYCURSOR;
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10695|     18|		YYFILL(1);
  ------------------
  |  |   53|     18|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     18|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     18|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 18]
  |  |  ------------------
  ------------------
10696|     18|		yych = *YYCURSOR;
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10697|     18|		if (yych <= ')') {
  ------------------
  |  Branch (10697:7): [True: 9, False: 9]
  ------------------
10698|      9|			if (yych <= '\n') {
  ------------------
  |  Branch (10698:8): [True: 5, False: 4]
  ------------------
10699|      5|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10699:9): [True: 0, False: 5]
  ------------------
10700|      5|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10700:9): [True: 0, False: 5]
  ------------------
10701|      5|				goto yy787;
10702|      5|			} else {
10703|      4|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10703:9): [True: 0, False: 4]
  ------------------
10704|      4|				goto yy738;
10705|      4|			}
10706|      9|		} else {
10707|      9|			if (yych <= 'E') {
  ------------------
  |  Branch (10707:8): [True: 3, False: 6]
  ------------------
10708|      3|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10708:9): [True: 0, False: 3]
  ------------------
10709|      3|				if (yych <= 'D') goto yy738;
  ------------------
  |  Branch (10709:9): [True: 3, False: 0]
  ------------------
10710|      0|				goto yy943;
10711|      6|			} else {
10712|      6|				if (yych == 'e') goto yy943;
  ------------------
  |  Branch (10712:9): [True: 6, False: 0]
  ------------------
10713|      0|				goto yy738;
10714|      6|			}
10715|      9|		}
10716|     93|yy933:
10717|     93|		YYDEBUG(933, *YYCURSOR);
10718|     93|		++YYCURSOR;
  ------------------
  |  |   54|     93|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10719|     93|		YYFILL(1);
  ------------------
  |  |   53|     93|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     93|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     93|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     93|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 93]
  |  |  ------------------
  ------------------
10720|     93|		yych = *YYCURSOR;
  ------------------
  |  |   54|     93|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10721|     93|		if (yych <= ')') {
  ------------------
  |  Branch (10721:7): [True: 3, False: 90]
  ------------------
10722|      3|			if (yych <= '\n') {
  ------------------
  |  Branch (10722:8): [True: 3, False: 0]
  ------------------
10723|      3|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10723:9): [True: 1, False: 2]
  ------------------
10724|      2|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10724:9): [True: 0, False: 2]
  ------------------
10725|      2|				goto yy787;
10726|      2|			} else {
10727|      0|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10727:9): [True: 0, False: 0]
  ------------------
10728|      0|				goto yy738;
10729|      0|			}
10730|     90|		} else {
10731|     90|			if (yych <= 'L') {
  ------------------
  |  Branch (10731:8): [True: 7, False: 83]
  ------------------
10732|      7|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10732:9): [True: 7, False: 0]
  ------------------
10733|      0|				if (yych <= 'K') goto yy738;
  ------------------
  |  Branch (10733:9): [True: 0, False: 0]
  ------------------
10734|      0|				goto yy944;
10735|     83|			} else {
10736|     83|				if (yych == 'l') goto yy944;
  ------------------
  |  Branch (10736:9): [True: 77, False: 6]
  ------------------
10737|      6|				goto yy738;
10738|     83|			}
10739|     90|		}
10740|      1|yy934:
10741|      1|		YYDEBUG(934, *YYCURSOR);
10742|      1|		++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10743|      1|		YYFILL(1);
  ------------------
  |  |   53|      1|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      1|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
10744|      1|		yych = *YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10745|      1|		if (yych <= 'C') {
  ------------------
  |  Branch (10745:7): [True: 0, False: 1]
  ------------------
10746|      0|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10746:8): [True: 0, False: 0]
  ------------------
10747|      0|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10747:8): [True: 0, False: 0]
  ------------------
10748|      0|			goto yy590;
10749|      1|		} else {
10750|      1|			if (yych <= 'D') goto yy945;
  ------------------
  |  Branch (10750:8): [True: 0, False: 1]
  ------------------
10751|      1|			if (yych == 'd') goto yy945;
  ------------------
  |  Branch (10751:8): [True: 1, False: 0]
  ------------------
10752|      0|			goto yy590;
10753|      1|		}
10754|     31|yy935:
10755|     31|		YYDEBUG(935, *YYCURSOR);
10756|     31|		++YYCURSOR;
  ------------------
  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10757|     31|		YYFILL(1);
  ------------------
  |  |   53|     31|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     31|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     31|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 31]
  |  |  ------------------
  ------------------
10758|     31|		yych = *YYCURSOR;
  ------------------
  |  |   54|     31|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     31|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     31|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10759|     31|		if (yych <= 'L') {
  ------------------
  |  Branch (10759:7): [True: 7, False: 24]
  ------------------
10760|      7|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10760:8): [True: 5, False: 2]
  ------------------
10761|      2|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10761:8): [True: 0, False: 2]
  ------------------
10762|      2|			goto yy590;
10763|     24|		} else {
10764|     24|			if (yych <= 'M') goto yy946;
  ------------------
  |  Branch (10764:8): [True: 0, False: 24]
  ------------------
10765|     24|			if (yych == 'm') goto yy946;
  ------------------
  |  Branch (10765:8): [True: 22, False: 2]
  ------------------
10766|      2|			goto yy590;
10767|     24|		}
10768|     17|yy936:
10769|     17|		YYDEBUG(936, *YYCURSOR);
10770|     17|		++YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10771|     17|		YYFILL(1);
  ------------------
  |  |   53|     17|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     17|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     17|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 17]
  |  |  ------------------
  ------------------
10772|     17|		yych = *YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10773|     17|		if (yych <= '\r') {
  ------------------
  |  Branch (10773:7): [True: 0, False: 17]
  ------------------
10774|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (10774:8): [True: 0, False: 0]
  ------------------
10775|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10775:9): [True: 0, False: 0]
  ------------------
10776|      0|				goto yy586;
10777|      0|			} else {
10778|      0|				if (yych <= '\n') goto yy495;
  ------------------
  |  Branch (10778:9): [True: 0, False: 0]
  ------------------
10779|      0|				if (yych <= '\f') goto yy586;
  ------------------
  |  Branch (10779:9): [True: 0, False: 0]
  ------------------
10780|      0|				goto yy495;
10781|      0|			}
10782|     17|		} else {
10783|     17|			if (yych <= 'T') {
  ------------------
  |  Branch (10783:8): [True: 11, False: 6]
  ------------------
10784|     11|				if (yych <= 'S') goto yy586;
  ------------------
  |  Branch (10784:9): [True: 0, False: 11]
  ------------------
10785|     11|				goto yy895;
10786|     11|			} else {
10787|      6|				if (yych == 't') goto yy895;
  ------------------
  |  Branch (10787:9): [True: 1, False: 5]
  ------------------
10788|      5|				goto yy586;
10789|      6|			}
10790|     17|		}
10791|      8|yy937:
10792|      8|		YYDEBUG(937, *YYCURSOR);
10793|      8|		++YYCURSOR;
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10794|      8|		YYDEBUG(938, *YYCURSOR);
10795|      8|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      8|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
10796|      8|#line 1789 "Zend/zend_language_scanner.l"
10797|      8|		{
10798|      8|	RETURN_TOKEN_WITH_IDENT(T_PROTECTED_SET);
  ------------------
  |  | 1334|      8|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      8|		token = _token; \
  |  | 1336|      8|		goto emit_token_with_ident; \
  |  | 1337|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10799|      8|}
10800|      0|#line 10801 "Zend/zend_language_scanner.c"
10801|     99|yy939:
10802|     99|		YYDEBUG(939, *YYCURSOR);
10803|     99|		++YYCURSOR;
  ------------------
  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10804|     99|		YYFILL(1);
  ------------------
  |  |   53|     99|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     99|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     99|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 99]
  |  |  ------------------
  ------------------
10805|     99|		yych = *YYCURSOR;
  ------------------
  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10806|     99|		if (yych <= '\r') {
  ------------------
  |  Branch (10806:7): [True: 13, False: 86]
  ------------------
10807|     13|			if (yych <= '\t') {
  ------------------
  |  Branch (10807:8): [True: 7, False: 6]
  ------------------
10808|      7|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10808:9): [True: 1, False: 6]
  ------------------
10809|      6|				goto yy808;
10810|      7|			} else {
10811|      6|				if (yych <= '\n') goto yy846;
  ------------------
  |  Branch (10811:9): [True: 1, False: 5]
  ------------------
10812|      5|				if (yych <= '\f') goto yy808;
  ------------------
  |  Branch (10812:9): [True: 5, False: 0]
  ------------------
10813|      0|				goto yy846;
10814|      5|			}
10815|     86|		} else {
10816|     86|			if (yych <= '*') {
  ------------------
  |  Branch (10816:8): [True: 11, False: 75]
  ------------------
10817|     11|				if (yych <= ')') goto yy808;
  ------------------
  |  Branch (10817:9): [True: 11, False: 0]
  ------------------
10818|      0|				goto yy848;
10819|     75|			} else {
10820|     75|				if (yych == '/') goto yy904;
  ------------------
  |  Branch (10820:9): [True: 25, False: 50]
  ------------------
10821|     50|				goto yy808;
10822|     75|			}
10823|     86|		}
10824|    118|yy940:
10825|    118|		YYDEBUG(940, *YYCURSOR);
10826|    118|		++YYCURSOR;
  ------------------
  |  |   54|    118|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    118|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    118|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10827|    118|		YYFILL(1);
  ------------------
  |  |   53|    118|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    118|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    118|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    118|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    118|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    118|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    118|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    118|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 118]
  |  |  ------------------
  ------------------
10828|    118|		yych = *YYCURSOR;
  ------------------
  |  |   54|    118|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    118|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    118|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10829|    118|		if (yych <= ')') {
  ------------------
  |  Branch (10829:7): [True: 13, False: 105]
  ------------------
10830|     13|			if (yych <= '\n') {
  ------------------
  |  Branch (10830:8): [True: 11, False: 2]
  ------------------
10831|     11|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10831:9): [True: 1, False: 10]
  ------------------
10832|     10|				if (yych <= '\t') goto yy808;
  ------------------
  |  Branch (10832:9): [True: 5, False: 5]
  ------------------
10833|      5|				goto yy846;
10834|     10|			} else {
10835|      2|				if (yych == '\r') goto yy846;
  ------------------
  |  Branch (10835:9): [True: 0, False: 2]
  ------------------
10836|      2|				goto yy808;
10837|      2|			}
10838|    105|		} else {
10839|    105|			if (yych <= 'O') {
  ------------------
  |  Branch (10839:8): [True: 66, False: 39]
  ------------------
10840|     66|				if (yych <= '*') goto yy848;
  ------------------
  |  Branch (10840:9): [True: 6, False: 60]
  ------------------
10841|     60|				if (yych <= 'N') goto yy808;
  ------------------
  |  Branch (10841:9): [True: 4, False: 56]
  ------------------
10842|     56|				goto yy947;
10843|     60|			} else {
10844|     39|				if (yych == 'o') goto yy947;
  ------------------
  |  Branch (10844:9): [True: 31, False: 8]
  ------------------
10845|      8|				goto yy808;
10846|     39|			}
10847|    105|		}
10848|     32|yy941:
10849|     32|		YYDEBUG(941, *YYCURSOR);
10850|     32|		++YYCURSOR;
  ------------------
  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10851|     32|		YYFILL(1);
  ------------------
  |  |   53|     32|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     32|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     32|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 32]
  |  |  ------------------
  ------------------
10852|     32|		yych = *YYCURSOR;
  ------------------
  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10853|     32|		if (yych <= '@') {
  ------------------
  |  Branch (10853:7): [True: 9, False: 23]
  ------------------
10854|      9|			if (yych <= '*') {
  ------------------
  |  Branch (10854:8): [True: 8, False: 1]
  ------------------
10855|      8|				if (yych <= 0x00) goto yy875;
  ------------------
  |  Branch (10855:9): [True: 0, False: 8]
  ------------------
10856|      8|				if (yych <= ')') goto yy948;
  ------------------
  |  Branch (10856:9): [True: 7, False: 1]
  ------------------
10857|      1|				goto yy949;
10858|      8|			} else {
10859|      1|				if (yych <= '/') goto yy948;
  ------------------
  |  Branch (10859:9): [True: 1, False: 0]
  ------------------
10860|      0|				if (yych <= '9') goto yy696;
  ------------------
  |  Branch (10860:9): [True: 0, False: 0]
  ------------------
10861|      0|				goto yy948;
10862|      0|			}
10863|     23|		} else {
10864|     23|			if (yych <= '_') {
  ------------------
  |  Branch (10864:8): [True: 6, False: 17]
  ------------------
10865|      6|				if (yych <= 'Z') goto yy696;
  ------------------
  |  Branch (10865:9): [True: 3, False: 3]
  ------------------
10866|      3|				if (yych <= '^') goto yy948;
  ------------------
  |  Branch (10866:9): [True: 0, False: 3]
  ------------------
10867|      3|				goto yy696;
10868|     17|			} else {
10869|     17|				if (yych <= '`') goto yy948;
  ------------------
  |  Branch (10869:9): [True: 11, False: 6]
  ------------------
10870|      6|				if (yych <= 'z') goto yy696;
  ------------------
  |  Branch (10870:9): [True: 0, False: 6]
  ------------------
10871|      6|				if (yych <= 0x7F) goto yy948;
  ------------------
  |  Branch (10871:9): [True: 2, False: 4]
  ------------------
10872|      4|				goto yy696;
10873|      6|			}
10874|     23|		}
10875|      9|yy942:
10876|      9|		YYDEBUG(942, *YYCURSOR);
10877|      9|		yyaccept = 4;
10878|      9|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      9|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10879|      9|		if (yych == 'R') goto yy950;
  ------------------
  |  Branch (10879:7): [True: 5, False: 4]
  ------------------
10880|      4|		if (yych == 'r') goto yy950;
  ------------------
  |  Branch (10880:7): [True: 3, False: 1]
  ------------------
10881|      1|		goto yy48;
10882|      6|yy943:
10883|      6|		YYDEBUG(943, *YYCURSOR);
10884|      6|		++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10885|      6|		YYFILL(1);
  ------------------
  |  |   53|      6|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      6|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      6|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6]
  |  |  ------------------
  ------------------
10886|      6|		yych = *YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10887|      6|		if (yych <= ')') {
  ------------------
  |  Branch (10887:7): [True: 1, False: 5]
  ------------------
10888|      1|			if (yych <= '\n') {
  ------------------
  |  Branch (10888:8): [True: 1, False: 0]
  ------------------
10889|      1|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10889:9): [True: 0, False: 1]
  ------------------
10890|      1|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10890:9): [True: 1, False: 0]
  ------------------
10891|      0|				goto yy787;
10892|      1|			} else {
10893|      0|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10893:9): [True: 0, False: 0]
  ------------------
10894|      0|				goto yy738;
10895|      0|			}
10896|      5|		} else {
10897|      5|			if (yych <= 'N') {
  ------------------
  |  Branch (10897:8): [True: 0, False: 5]
  ------------------
10898|      0|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10898:9): [True: 0, False: 0]
  ------------------
10899|      0|				if (yych <= 'M') goto yy738;
  ------------------
  |  Branch (10899:9): [True: 0, False: 0]
  ------------------
10900|      0|				goto yy952;
10901|      5|			} else {
10902|      5|				if (yych == 'n') goto yy952;
  ------------------
  |  Branch (10902:9): [True: 4, False: 1]
  ------------------
10903|      1|				goto yy738;
10904|      5|			}
10905|      5|		}
10906|     77|yy944:
10907|     77|		YYDEBUG(944, *YYCURSOR);
10908|     77|		++YYCURSOR;
  ------------------
  |  |   54|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     77|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     77|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10909|     77|		YYFILL(1);
  ------------------
  |  |   53|     77|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     77|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     77|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     77|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     77|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     77|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     77|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 77]
  |  |  ------------------
  ------------------
10910|     77|		yych = *YYCURSOR;
  ------------------
  |  |   54|     77|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     77|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     77|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10911|     77|		if (yych <= ')') {
  ------------------
  |  Branch (10911:7): [True: 13, False: 64]
  ------------------
10912|     13|			if (yych <= '\n') {
  ------------------
  |  Branch (10912:8): [True: 0, False: 13]
  ------------------
10913|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10913:9): [True: 0, False: 0]
  ------------------
10914|      0|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (10914:9): [True: 0, False: 0]
  ------------------
10915|      0|				goto yy787;
10916|     13|			} else {
10917|     13|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (10917:9): [True: 9, False: 4]
  ------------------
10918|      4|				goto yy738;
10919|     13|			}
10920|     64|		} else {
10921|     64|			if (yych <= 'E') {
  ------------------
  |  Branch (10921:8): [True: 3, False: 61]
  ------------------
10922|      3|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (10922:9): [True: 3, False: 0]
  ------------------
10923|      0|				if (yych <= 'D') goto yy738;
  ------------------
  |  Branch (10923:9): [True: 0, False: 0]
  ------------------
10924|      0|				goto yy953;
10925|     61|			} else {
10926|     61|				if (yych == 'e') goto yy953;
  ------------------
  |  Branch (10926:9): [True: 59, False: 2]
  ------------------
10927|      2|				goto yy738;
10928|     61|			}
10929|     64|		}
10930|      1|yy945:
10931|      1|		YYDEBUG(945, *YYCURSOR);
10932|      1|		++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10933|      1|		YYFILL(1);
  ------------------
  |  |   53|      1|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      1|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
10934|      1|		yych = *YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10935|      1|		if (yych <= 'R') {
  ------------------
  |  Branch (10935:7): [True: 0, False: 1]
  ------------------
10936|      0|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10936:8): [True: 0, False: 0]
  ------------------
10937|      0|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10937:8): [True: 0, False: 0]
  ------------------
10938|      0|			goto yy590;
10939|      1|		} else {
10940|      1|			if (yych <= 'S') goto yy954;
  ------------------
  |  Branch (10940:8): [True: 1, False: 0]
  ------------------
10941|      0|			if (yych == 's') goto yy954;
  ------------------
  |  Branch (10941:8): [True: 0, False: 0]
  ------------------
10942|      0|			goto yy590;
10943|      0|		}
10944|     22|yy946:
10945|     22|		YYDEBUG(946, *YYCURSOR);
10946|     22|		++YYCURSOR;
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10947|     22|		YYFILL(1);
  ------------------
  |  |   53|     22|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     22|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     22|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 22]
  |  |  ------------------
  ------------------
10948|     22|		yych = *YYCURSOR;
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10949|     22|		if (yych <= 'D') {
  ------------------
  |  Branch (10949:7): [True: 0, False: 22]
  ------------------
10950|      0|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10950:8): [True: 0, False: 0]
  ------------------
10951|      0|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (10951:8): [True: 0, False: 0]
  ------------------
10952|      0|			goto yy590;
10953|     22|		} else {
10954|     22|			if (yych <= 'E') goto yy955;
  ------------------
  |  Branch (10954:8): [True: 0, False: 22]
  ------------------
10955|     22|			if (yych == 'e') goto yy955;
  ------------------
  |  Branch (10955:8): [True: 6, False: 16]
  ------------------
10956|     16|			goto yy590;
10957|     22|		}
10958|     87|yy947:
10959|     87|		YYDEBUG(947, *YYCURSOR);
10960|     87|		++YYCURSOR;
  ------------------
  |  |   54|     87|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     87|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     87|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10961|     87|		YYFILL(1);
  ------------------
  |  |   53|     87|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     87|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     87|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     87|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     87|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     87|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     87|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     87|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 87]
  |  |  ------------------
  ------------------
10962|     87|		yych = *YYCURSOR;
  ------------------
  |  |   54|     87|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     87|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     87|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10963|     87|		if (yych <= ')') {
  ------------------
  |  Branch (10963:7): [True: 15, False: 72]
  ------------------
10964|     15|			if (yych <= '\n') {
  ------------------
  |  Branch (10964:8): [True: 5, False: 10]
  ------------------
10965|      5|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (10965:9): [True: 2, False: 3]
  ------------------
10966|      3|				if (yych <= '\t') goto yy808;
  ------------------
  |  Branch (10966:9): [True: 0, False: 3]
  ------------------
10967|      3|				goto yy846;
10968|     10|			} else {
10969|     10|				if (yych == '\r') goto yy846;
  ------------------
  |  Branch (10969:9): [True: 9, False: 1]
  ------------------
10970|      1|				goto yy808;
10971|     10|			}
10972|     72|		} else {
10973|     72|			if (yych <= 'M') {
  ------------------
  |  Branch (10973:8): [True: 66, False: 6]
  ------------------
10974|     66|				if (yych <= '*') goto yy848;
  ------------------
  |  Branch (10974:9): [True: 3, False: 63]
  ------------------
10975|     63|				if (yych <= 'L') goto yy808;
  ------------------
  |  Branch (10975:9): [True: 10, False: 53]
  ------------------
10976|     53|				goto yy956;
10977|     63|			} else {
10978|      6|				if (yych == 'm') goto yy956;
  ------------------
  |  Branch (10978:9): [True: 3, False: 3]
  ------------------
10979|      3|				goto yy808;
10980|      6|			}
10981|     72|		}
10982|     21|yy948:
10983|     21|		YYDEBUG(948, *YYCURSOR);
10984|     21|		yyaccept = 91;
10985|     21|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     21|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10986|     21|		YYFILL(1);
  ------------------
  |  |   53|     21|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     21|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     21|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 21]
  |  |  ------------------
  ------------------
10987|     21|		yych = *YYCURSOR;
  ------------------
  |  |   54|     21|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     21|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10988|     21|		if (yych <= 0x00) goto yy876;
  ------------------
  |  Branch (10988:7): [True: 1, False: 20]
  ------------------
10989|     20|		if (yych == '*') goto yy760;
  ------------------
  |  Branch (10989:7): [True: 0, False: 20]
  ------------------
10990|     20|		goto yy696;
10991|     20|yy949:
10992|      1|		YYDEBUG(949, *YYCURSOR);
10993|      1|		yyaccept = 91;
10994|      1|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10995|      1|		YYFILL(1);
  ------------------
  |  |   53|      1|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      1|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
10996|      1|		yych = *YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10997|      1|		if (yych <= '*') {
  ------------------
  |  Branch (10997:7): [True: 0, False: 1]
  ------------------
10998|      0|			if (yych <= 0x00) goto yy876;
  ------------------
  |  Branch (10998:8): [True: 0, False: 0]
  ------------------
10999|      0|			if (yych <= ')') goto yy696;
  ------------------
  |  Branch (10999:8): [True: 0, False: 0]
  ------------------
11000|      0|			goto yy760;
11001|      1|		} else {
11002|      1|			if (yych == '/') goto yy616;
  ------------------
  |  Branch (11002:8): [True: 1, False: 0]
  ------------------
11003|      0|			goto yy696;
11004|      1|		}
11005|      8|yy950:
11006|      8|		YYDEBUG(950, *YYCURSOR);
11007|      8|		yyaccept = 96;
11008|      8|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|      8|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11009|      8|		if (yybm[256+yych] & 128) {
  ------------------
  |  Branch (11009:7): [True: 0, False: 8]
  ------------------
11010|      0|			goto yy47;
11011|      0|		}
11012|      8|		if (yych == '\\') goto yy164;
  ------------------
  |  Branch (11012:7): [True: 0, False: 8]
  ------------------
11013|      8|yy951:
11014|      8|		YYDEBUG(951, *YYCURSOR);
11015|      8|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      8|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11016|      8|#line 1761 "Zend/zend_language_scanner.l"
11017|      8|		{
11018|      8|	RETURN_TOKEN_WITH_IDENT(T_HALT_COMPILER);
  ------------------
  |  | 1334|      8|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|      8|		token = _token; \
  |  | 1336|      8|		goto emit_token_with_ident; \
  |  | 1337|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11019|      8|}
11020|      0|#line 11021 "Zend/zend_language_scanner.c"
11021|      4|yy952:
11022|      4|		YYDEBUG(952, *YYCURSOR);
11023|      4|		++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11024|      4|		YYFILL(1);
  ------------------
  |  |   53|      4|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      4|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
11025|      4|		yych = *YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11026|      4|		if (yych <= ')') {
  ------------------
  |  Branch (11026:7): [True: 0, False: 4]
  ------------------
11027|      0|			if (yych <= '\n') {
  ------------------
  |  Branch (11027:8): [True: 0, False: 0]
  ------------------
11028|      0|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11028:9): [True: 0, False: 0]
  ------------------
11029|      0|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (11029:9): [True: 0, False: 0]
  ------------------
11030|      0|				goto yy787;
11031|      0|			} else {
11032|      0|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (11032:9): [True: 0, False: 0]
  ------------------
11033|      0|				goto yy738;
11034|      0|			}
11035|      4|		} else {
11036|      4|			if (yych <= 'D') {
  ------------------
  |  Branch (11036:8): [True: 0, False: 4]
  ------------------
11037|      0|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (11037:9): [True: 0, False: 0]
  ------------------
11038|      0|				if (yych <= 'C') goto yy738;
  ------------------
  |  Branch (11038:9): [True: 0, False: 0]
  ------------------
11039|      0|				goto yy957;
11040|      4|			} else {
11041|      4|				if (yych == 'd') goto yy957;
  ------------------
  |  Branch (11041:9): [True: 4, False: 0]
  ------------------
11042|      0|				goto yy738;
11043|      4|			}
11044|      4|		}
11045|     59|yy953:
11046|     59|		YYDEBUG(953, *YYCURSOR);
11047|     59|		++YYCURSOR;
  ------------------
  |  |   54|     59|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     59|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     59|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11048|     59|		YYFILL(1);
  ------------------
  |  |   53|     59|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     59|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     59|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     59|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     59|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     59|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     59|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     59|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 59]
  |  |  ------------------
  ------------------
11049|     59|		yych = *YYCURSOR;
  ------------------
  |  |   54|     59|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     59|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     59|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11050|     59|		if (yych <= ')') {
  ------------------
  |  Branch (11050:7): [True: 10, False: 49]
  ------------------
11051|     10|			if (yych <= '\n') {
  ------------------
  |  Branch (11051:8): [True: 2, False: 8]
  ------------------
11052|      2|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11052:9): [True: 1, False: 1]
  ------------------
11053|      1|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (11053:9): [True: 0, False: 1]
  ------------------
11054|      1|				goto yy787;
11055|      8|			} else {
11056|      8|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (11056:9): [True: 3, False: 5]
  ------------------
11057|      5|				goto yy738;
11058|      8|			}
11059|     49|		} else {
11060|     49|			if (yych <= 'M') {
  ------------------
  |  Branch (11060:8): [True: 12, False: 37]
  ------------------
11061|     12|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (11061:9): [True: 1, False: 11]
  ------------------
11062|     11|				if (yych <= 'L') goto yy738;
  ------------------
  |  Branch (11062:9): [True: 5, False: 6]
  ------------------
11063|      6|				goto yy958;
11064|     37|			} else {
11065|     37|				if (yych == 'm') goto yy958;
  ------------------
  |  Branch (11065:9): [True: 34, False: 3]
  ------------------
11066|      3|				goto yy738;
11067|     37|			}
11068|     49|		}
11069|      1|yy954:
11070|      1|		YYDEBUG(954, *YYCURSOR);
11071|      1|		yyaccept = 94;
11072|      1|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11073|      1|		YYFILL(1);
  ------------------
  |  |   53|      1|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      1|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      1|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
11074|      1|		yych = *YYCURSOR;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11075|      1|		if (yych <= 0x00) goto yy886;
  ------------------
  |  Branch (11075:7): [True: 0, False: 1]
  ------------------
11076|      1|		if (yych == '*') goto yy668;
  ------------------
  |  Branch (11076:7): [True: 0, False: 1]
  ------------------
11077|      1|		goto yy590;
11078|      6|yy955:
11079|      6|		YYDEBUG(955, *YYCURSOR);
11080|      6|		++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11081|      6|		YYFILL(1);
  ------------------
  |  |   53|      6|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      6|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      6|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6]
  |  |  ------------------
  ------------------
11082|      6|		yych = *YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11083|      6|		if (yych <= 'M') {
  ------------------
  |  Branch (11083:7): [True: 0, False: 6]
  ------------------
11084|      0|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11084:8): [True: 0, False: 0]
  ------------------
11085|      0|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (11085:8): [True: 0, False: 0]
  ------------------
11086|      0|			goto yy590;
11087|      6|		} else {
11088|      6|			if (yych <= 'N') goto yy959;
  ------------------
  |  Branch (11088:8): [True: 6, False: 0]
  ------------------
11089|      0|			if (yych == 'n') goto yy959;
  ------------------
  |  Branch (11089:8): [True: 0, False: 0]
  ------------------
11090|      0|			goto yy590;
11091|      0|		}
11092|     56|yy956:
11093|     56|		YYDEBUG(956, *YYCURSOR);
11094|     56|		++YYCURSOR;
  ------------------
  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11095|     56|		YYFILL(1);
  ------------------
  |  |   53|     56|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     56|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     56|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 56]
  |  |  ------------------
  ------------------
11096|     56|		yych = *YYCURSOR;
  ------------------
  |  |   54|     56|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     56|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11097|     56|		if (yych <= '/') {
  ------------------
  |  Branch (11097:7): [True: 22, False: 34]
  ------------------
11098|     22|			if (yych <= '\f') {
  ------------------
  |  Branch (11098:8): [True: 8, False: 14]
  ------------------
11099|      8|				if (yych <= 0x00) goto yy875;
  ------------------
  |  Branch (11099:9): [True: 2, False: 6]
  ------------------
11100|      6|				if (yych == '\n') goto yy961;
  ------------------
  |  Branch (11100:9): [True: 4, False: 2]
  ------------------
11101|      2|				goto yy960;
11102|     14|			} else {
11103|     14|				if (yych <= '\r') goto yy961;
  ------------------
  |  Branch (11103:9): [True: 0, False: 14]
  ------------------
11104|     14|				if (yych == '*') goto yy962;
  ------------------
  |  Branch (11104:9): [True: 4, False: 10]
  ------------------
11105|     10|				goto yy960;
11106|     14|			}
11107|     34|		} else {
11108|     34|			if (yych <= '^') {
  ------------------
  |  Branch (11108:8): [True: 18, False: 16]
  ------------------
11109|     18|				if (yych <= '9') goto yy808;
  ------------------
  |  Branch (11109:9): [True: 0, False: 18]
  ------------------
11110|     18|				if (yych <= '@') goto yy960;
  ------------------
  |  Branch (11110:9): [True: 6, False: 12]
  ------------------
11111|     12|				if (yych <= 'Z') goto yy808;
  ------------------
  |  Branch (11111:9): [True: 10, False: 2]
  ------------------
11112|      2|				goto yy960;
11113|     16|			} else {
11114|     16|				if (yych <= '`') {
  ------------------
  |  Branch (11114:9): [True: 8, False: 8]
  ------------------
11115|      8|					if (yych <= '_') goto yy808;
  ------------------
  |  Branch (11115:10): [True: 1, False: 7]
  ------------------
11116|      7|					goto yy960;
11117|      8|				} else {
11118|      8|					if (yych <= 'z') goto yy808;
  ------------------
  |  Branch (11118:10): [True: 8, False: 0]
  ------------------
11119|      0|					if (yych <= 0x7F) goto yy960;
  ------------------
  |  Branch (11119:10): [True: 0, False: 0]
  ------------------
11120|      0|					goto yy808;
11121|      0|				}
11122|     16|			}
11123|     34|		}
11124|     15|yy957:
11125|     15|		YYDEBUG(957, *YYCURSOR);
11126|     15|		++YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11127|     15|		YYFILL(1);
  ------------------
  |  |   53|     15|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     15|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     15|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 15]
  |  |  ------------------
  ------------------
11128|     15|		yych = *YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11129|     15|		if (yych <= ')') {
  ------------------
  |  Branch (11129:7): [True: 4, False: 11]
  ------------------
11130|      4|			if (yych <= '\n') {
  ------------------
  |  Branch (11130:8): [True: 4, False: 0]
  ------------------
11131|      4|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11131:9): [True: 0, False: 4]
  ------------------
11132|      4|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (11132:9): [True: 4, False: 0]
  ------------------
11133|      0|				goto yy787;
11134|      4|			} else {
11135|      0|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (11135:9): [True: 0, False: 0]
  ------------------
11136|      0|				goto yy738;
11137|      0|			}
11138|     11|		} else {
11139|     11|			if (yych <= 'S') {
  ------------------
  |  Branch (11139:8): [True: 6, False: 5]
  ------------------
11140|      6|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (11140:9): [True: 0, False: 6]
  ------------------
11141|      6|				if (yych <= 'R') goto yy738;
  ------------------
  |  Branch (11141:9): [True: 2, False: 4]
  ------------------
11142|      4|				goto yy963;
11143|      6|			} else {
11144|      5|				if (yych == 's') goto yy963;
  ------------------
  |  Branch (11144:9): [True: 0, False: 5]
  ------------------
11145|      5|				goto yy738;
11146|      5|			}
11147|     11|		}
11148|     40|yy958:
11149|     40|		YYDEBUG(958, *YYCURSOR);
11150|     40|		++YYCURSOR;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11151|     40|		YYFILL(1);
  ------------------
  |  |   53|     40|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     40|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     40|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 40]
  |  |  ------------------
  ------------------
11152|     40|		yych = *YYCURSOR;
  ------------------
  |  |   54|     40|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     40|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11153|     40|		if (yych <= ')') {
  ------------------
  |  Branch (11153:7): [True: 1, False: 39]
  ------------------
11154|      1|			if (yych <= '\n') {
  ------------------
  |  Branch (11154:8): [True: 1, False: 0]
  ------------------
11155|      1|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11155:9): [True: 1, False: 0]
  ------------------
11156|      0|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (11156:9): [True: 0, False: 0]
  ------------------
11157|      0|				goto yy787;
11158|      0|			} else {
11159|      0|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (11159:9): [True: 0, False: 0]
  ------------------
11160|      0|				goto yy738;
11161|      0|			}
11162|     39|		} else {
11163|     39|			if (yych <= 'E') {
  ------------------
  |  Branch (11163:8): [True: 8, False: 31]
  ------------------
11164|      8|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (11164:9): [True: 0, False: 8]
  ------------------
11165|      8|				if (yych <= 'D') goto yy738;
  ------------------
  |  Branch (11165:9): [True: 5, False: 3]
  ------------------
11166|      3|				goto yy964;
11167|     31|			} else {
11168|     31|				if (yych == 'e') goto yy964;
  ------------------
  |  Branch (11168:9): [True: 26, False: 5]
  ------------------
11169|      5|				goto yy738;
11170|     31|			}
11171|     39|		}
11172|      6|yy959:
11173|      6|		YYDEBUG(959, *YYCURSOR);
11174|      6|		++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11175|      6|		YYFILL(1);
  ------------------
  |  |   53|      6|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      6|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      6|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6]
  |  |  ------------------
  ------------------
11176|      6|		yych = *YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11177|      6|		if (yych <= 'S') {
  ------------------
  |  Branch (11177:7): [True: 3, False: 3]
  ------------------
11178|      3|			if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11178:8): [True: 2, False: 1]
  ------------------
11179|      1|			if (yych == '*') goto yy668;
  ------------------
  |  Branch (11179:8): [True: 0, False: 1]
  ------------------
11180|      1|			goto yy590;
11181|      3|		} else {
11182|      3|			if (yych <= 'T') goto yy945;
  ------------------
  |  Branch (11182:8): [True: 0, False: 3]
  ------------------
11183|      3|			if (yych == 't') goto yy945;
  ------------------
  |  Branch (11183:8): [True: 0, False: 3]
  ------------------
11184|      3|			goto yy590;
11185|      3|		}
11186|     27|yy960:
11187|     27|		YYDEBUG(960, *YYCURSOR);
11188|     27|		yyaccept = 91;
11189|     27|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     27|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11190|     27|		YYFILL(1);
  ------------------
  |  |   53|     27|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     27|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     27|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 27]
  |  |  ------------------
  ------------------
11191|     27|		yych = *YYCURSOR;
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11192|     27|		if (yych <= '\f') {
  ------------------
  |  Branch (11192:7): [True: 10, False: 17]
  ------------------
11193|     10|			if (yych <= 0x00) goto yy876;
  ------------------
  |  Branch (11193:8): [True: 3, False: 7]
  ------------------
11194|      7|			if (yych == '\n') goto yy846;
  ------------------
  |  Branch (11194:8): [True: 2, False: 5]
  ------------------
11195|      5|			goto yy808;
11196|     17|		} else {
11197|     17|			if (yych <= '\r') goto yy846;
  ------------------
  |  Branch (11197:8): [True: 7, False: 10]
  ------------------
11198|     10|			if (yych == '*') goto yy848;
  ------------------
  |  Branch (11198:8): [True: 4, False: 6]
  ------------------
11199|      6|			goto yy808;
11200|     10|		}
11201|      4|yy961:
11202|      4|		YYDEBUG(961, *YYCURSOR);
11203|      4|		yyaccept = 91;
11204|      4|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11205|      4|		YYFILL(1);
  ------------------
  |  |   53|      4|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      4|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
11206|      4|		yych = *YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11207|      4|		if (yych <= '#') {
  ------------------
  |  Branch (11207:7): [True: 1, False: 3]
  ------------------
11208|      1|			if (yych <= '\f') {
  ------------------
  |  Branch (11208:8): [True: 0, False: 1]
  ------------------
11209|      0|				if (yych <= 0x00) goto yy876;
  ------------------
  |  Branch (11209:9): [True: 0, False: 0]
  ------------------
11210|      0|				if (yych <= 0x08) goto yy696;
  ------------------
  |  Branch (11210:9): [True: 0, False: 0]
  ------------------
11211|      0|				if (yych <= '\n') goto yy846;
  ------------------
  |  Branch (11211:9): [True: 0, False: 0]
  ------------------
11212|      0|				goto yy696;
11213|      1|			} else {
11214|      1|				if (yych <= 0x1F) {
  ------------------
  |  Branch (11214:9): [True: 0, False: 1]
  ------------------
11215|      0|					if (yych <= '\r') goto yy846;
  ------------------
  |  Branch (11215:10): [True: 0, False: 0]
  ------------------
11216|      0|					goto yy696;
11217|      1|				} else {
11218|      1|					if (yych <= ' ') goto yy846;
  ------------------
  |  Branch (11218:10): [True: 0, False: 1]
  ------------------
11219|      1|					if (yych <= '"') goto yy696;
  ------------------
  |  Branch (11219:10): [True: 0, False: 1]
  ------------------
11220|      1|					goto yy877;
11221|      1|				}
11222|      1|			}
11223|      3|		} else {
11224|      3|			if (yych <= '/') {
  ------------------
  |  Branch (11224:8): [True: 0, False: 3]
  ------------------
11225|      0|				if (yych == '*') goto yy760;
  ------------------
  |  Branch (11225:9): [True: 0, False: 0]
  ------------------
11226|      0|				if (yych <= '.') goto yy696;
  ------------------
  |  Branch (11226:9): [True: 0, False: 0]
  ------------------
11227|      0|				goto yy878;
11228|      3|			} else {
11229|      3|				if (yych <= 'F') {
  ------------------
  |  Branch (11229:9): [True: 0, False: 3]
  ------------------
11230|      0|					if (yych <= 'E') goto yy696;
  ------------------
  |  Branch (11230:10): [True: 0, False: 0]
  ------------------
11231|      0|					goto yy879;
11232|      3|				} else {
11233|      3|					if (yych == 'f') goto yy879;
  ------------------
  |  Branch (11233:10): [True: 0, False: 3]
  ------------------
11234|      3|					goto yy696;
11235|      3|				}
11236|      3|			}
11237|      3|		}
11238|      4|yy962:
11239|      4|		YYDEBUG(962, *YYCURSOR);
11240|      4|		yyaccept = 91;
11241|      4|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11242|      4|		YYFILL(1);
  ------------------
  |  |   53|      4|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      4|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
11243|      4|		yych = *YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11244|      4|		if (yych <= '\r') {
  ------------------
  |  Branch (11244:7): [True: 1, False: 3]
  ------------------
11245|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (11245:8): [True: 0, False: 1]
  ------------------
11246|      0|				if (yych <= 0x00) goto yy876;
  ------------------
  |  Branch (11246:9): [True: 0, False: 0]
  ------------------
11247|      0|				goto yy808;
11248|      1|			} else {
11249|      1|				if (yych <= '\n') goto yy846;
  ------------------
  |  Branch (11249:9): [True: 0, False: 1]
  ------------------
11250|      1|				if (yych <= '\f') goto yy808;
  ------------------
  |  Branch (11250:9): [True: 0, False: 1]
  ------------------
11251|      1|				goto yy846;
11252|      1|			}
11253|      3|		} else {
11254|      3|			if (yych <= '*') {
  ------------------
  |  Branch (11254:8): [True: 2, False: 1]
  ------------------
11255|      2|				if (yych <= ')') goto yy808;
  ------------------
  |  Branch (11255:9): [True: 1, False: 1]
  ------------------
11256|      1|				goto yy848;
11257|      2|			} else {
11258|      1|				if (yych == '/') goto yy694;
  ------------------
  |  Branch (11258:9): [True: 1, False: 0]
  ------------------
11259|      0|				goto yy808;
11260|      1|			}
11261|      3|		}
11262|      4|yy963:
11263|      4|		YYDEBUG(963, *YYCURSOR);
11264|      4|		yyaccept = 94;
11265|      4|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11266|      4|		YYFILL(1);
  ------------------
  |  |   53|      4|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      4|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
11267|      4|		yych = *YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11268|      4|		if (yych <= '\f') {
  ------------------
  |  Branch (11268:7): [True: 0, False: 4]
  ------------------
11269|      0|			if (yych <= 0x00) goto yy886;
  ------------------
  |  Branch (11269:8): [True: 0, False: 0]
  ------------------
11270|      0|			if (yych == '\n') goto yy787;
  ------------------
  |  Branch (11270:8): [True: 0, False: 0]
  ------------------
11271|      0|			goto yy738;
11272|      4|		} else {
11273|      4|			if (yych <= '\r') goto yy787;
  ------------------
  |  Branch (11273:8): [True: 0, False: 4]
  ------------------
11274|      4|			if (yych == '*') goto yy789;
  ------------------
  |  Branch (11274:8): [True: 0, False: 4]
  ------------------
11275|      4|			goto yy738;
11276|      4|		}
11277|     29|yy964:
11278|     29|		YYDEBUG(964, *YYCURSOR);
11279|     29|		++YYCURSOR;
  ------------------
  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11280|     29|		YYFILL(1);
  ------------------
  |  |   53|     29|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     29|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     29|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 29]
  |  |  ------------------
  ------------------
11281|     29|		yych = *YYCURSOR;
  ------------------
  |  |   54|     29|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     29|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     29|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11282|     29|		if (yych <= ')') {
  ------------------
  |  Branch (11282:7): [True: 4, False: 25]
  ------------------
11283|      4|			if (yych <= '\n') {
  ------------------
  |  Branch (11283:8): [True: 1, False: 3]
  ------------------
11284|      1|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11284:9): [True: 0, False: 1]
  ------------------
11285|      1|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (11285:9): [True: 0, False: 1]
  ------------------
11286|      1|				goto yy787;
11287|      3|			} else {
11288|      3|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (11288:9): [True: 0, False: 3]
  ------------------
11289|      3|				goto yy738;
11290|      3|			}
11291|     25|		} else {
11292|     25|			if (yych <= 'N') {
  ------------------
  |  Branch (11292:8): [True: 24, False: 1]
  ------------------
11293|     24|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (11293:9): [True: 0, False: 24]
  ------------------
11294|     24|				if (yych <= 'M') goto yy738;
  ------------------
  |  Branch (11294:9): [True: 0, False: 24]
  ------------------
11295|     24|			} else {
11296|      1|				if (yych != 'n') goto yy738;
  ------------------
  |  Branch (11296:9): [True: 0, False: 1]
  ------------------
11297|      1|			}
11298|     25|		}
11299|     25|		YYDEBUG(965, *YYCURSOR);
11300|     25|		++YYCURSOR;
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11301|     25|		YYFILL(1);
  ------------------
  |  |   53|     25|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     25|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     25|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 25]
  |  |  ------------------
  ------------------
11302|     25|		yych = *YYCURSOR;
  ------------------
  |  |   54|     25|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     25|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     25|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11303|     25|		if (yych <= ')') {
  ------------------
  |  Branch (11303:7): [True: 5, False: 20]
  ------------------
11304|      5|			if (yych <= '\n') {
  ------------------
  |  Branch (11304:8): [True: 2, False: 3]
  ------------------
11305|      2|				if (yych <= 0x00) goto yy86;
  ------------------
  |  Branch (11305:9): [True: 0, False: 2]
  ------------------
11306|      2|				if (yych <= '\t') goto yy738;
  ------------------
  |  Branch (11306:9): [True: 2, False: 0]
  ------------------
11307|      0|				goto yy787;
11308|      3|			} else {
11309|      3|				if (yych == '\r') goto yy787;
  ------------------
  |  Branch (11309:9): [True: 0, False: 3]
  ------------------
11310|      3|				goto yy738;
11311|      3|			}
11312|     20|		} else {
11313|     20|			if (yych <= 'T') {
  ------------------
  |  Branch (11313:8): [True: 13, False: 7]
  ------------------
11314|     13|				if (yych <= '*') goto yy789;
  ------------------
  |  Branch (11314:9): [True: 0, False: 13]
  ------------------
11315|     13|				if (yych <= 'S') goto yy738;
  ------------------
  |  Branch (11315:9): [True: 2, False: 11]
  ------------------
11316|     11|				goto yy957;
11317|     13|			} else {
11318|      7|				if (yych == 't') goto yy957;
  ------------------
  |  Branch (11318:9): [True: 0, False: 7]
  ------------------
11319|      7|				goto yy738;
11320|      7|			}
11321|     20|		}
11322|     25|	}
11323|       |/* *********************************** */
11324|  1.62k|yyc_ST_LOOKING_FOR_PROPERTY:
11325|  1.62k|	{
11326|  1.62k|		static const unsigned char yybm[] = {
11327|  1.62k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11328|  1.62k|			  0,  64,  64,   0,   0,  64,   0,   0, 
11329|  1.62k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11330|  1.62k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11331|  1.62k|			 64,   0,   0,   0,   0,   0,   0,   0, 
11332|  1.62k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11333|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11334|  1.62k|			128, 128,   0,   0,   0,   0,   0,   0, 
11335|  1.62k|			  0, 128, 128, 128, 128, 128, 128, 128, 
11336|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11337|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11338|  1.62k|			128, 128, 128,   0,   0,   0,   0, 128, 
11339|  1.62k|			  0, 128, 128, 128, 128, 128, 128, 128, 
11340|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11341|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11342|  1.62k|			128, 128, 128,   0,   0,   0,   0,   0, 
11343|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11344|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11345|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11346|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11347|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11348|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11349|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11350|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11351|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11352|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11353|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11354|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11355|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11356|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11357|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11358|  1.62k|			128, 128, 128, 128, 128, 128, 128, 128, 
11359|  1.62k|		};
11360|  1.62k|		YYDEBUG(966, *YYCURSOR);
11361|  1.62k|		YYFILL(4);
  ------------------
  |  |   53|  1.62k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.62k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.62k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.62k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.62k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.62k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.62k]
  |  |  ------------------
  ------------------
11362|  1.62k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.62k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.62k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.62k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11363|  1.62k|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (11363:7): [True: 32, False: 1.58k]
  ------------------
11364|     32|			goto yy970;
11365|     32|		}
11366|  1.58k|		if (yych <= '?') {
  ------------------
  |  Branch (11366:7): [True: 228, False: 1.36k]
  ------------------
11367|    228|			if (yych <= '-') {
  ------------------
  |  Branch (11367:8): [True: 147, False: 81]
  ------------------
11368|    147|				if (yych == '#') goto yy973;
  ------------------
  |  Branch (11368:9): [True: 19, False: 128]
  ------------------
11369|    128|				if (yych >= '-') goto yy975;
  ------------------
  |  Branch (11369:9): [True: 36, False: 92]
  ------------------
11370|    128|			} else {
11371|     81|				if (yych == '/') goto yy976;
  ------------------
  |  Branch (11371:9): [True: 27, False: 54]
  ------------------
11372|     54|				if (yych >= '?') goto yy977;
  ------------------
  |  Branch (11372:9): [True: 43, False: 11]
  ------------------
11373|     54|			}
11374|  1.36k|		} else {
11375|  1.36k|			if (yych <= '_') {
  ------------------
  |  Branch (11375:8): [True: 56, False: 1.30k]
  ------------------
11376|     56|				if (yych <= '@') goto yy968;
  ------------------
  |  Branch (11376:9): [True: 0, False: 56]
  ------------------
11377|     56|				if (yych <= 'Z') goto yy978;
  ------------------
  |  Branch (11377:9): [True: 22, False: 34]
  ------------------
11378|     34|				if (yych >= '_') goto yy978;
  ------------------
  |  Branch (11378:9): [True: 31, False: 3]
  ------------------
11379|  1.30k|			} else {
11380|  1.30k|				if (yych <= '`') goto yy968;
  ------------------
  |  Branch (11380:9): [True: 4, False: 1.30k]
  ------------------
11381|  1.30k|				if (yych <= 'z') goto yy978;
  ------------------
  |  Branch (11381:9): [True: 1.21k, False: 90]
  ------------------
11382|     90|				if (yych >= 0x80) goto yy978;
  ------------------
  |  Branch (11382:9): [True: 54, False: 36]
  ------------------
11383|     90|			}
11384|  1.36k|		}
11385|    146|yy968:
11386|    146|		YYDEBUG(968, *YYCURSOR);
11387|    146|		++YYCURSOR;
  ------------------
  |  |   54|    146|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    146|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    146|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11388|    168|yy969:
11389|    168|		YYDEBUG(969, *YYCURSOR);
11390|    168|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    168|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    168|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11391|    168|#line 2519 "Zend/zend_language_scanner.l"
11392|    168|		{
11393|    168|	yyless(0);
  ------------------
  |  |   68|    168|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    168|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    168|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    168|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    168|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    168|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    168|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 168]
  |  |  ------------------
  ------------------
11394|    168|	yy_pop_state();
11395|    168|	goto restart;
11396|    146|}
11397|      0|#line 11398 "Zend/zend_language_scanner.c"
11398|    122|yy970:
11399|    122|		YYDEBUG(970, *YYCURSOR);
11400|    122|		++YYCURSOR;
  ------------------
  |  |   54|    122|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    122|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    122|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11401|    122|		YYFILL(1);
  ------------------
  |  |   53|    122|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    122|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    122|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    122|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    122|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    122|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    122|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    122|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 122]
  |  |  ------------------
  ------------------
11402|    122|		yych = *YYCURSOR;
  ------------------
  |  |   54|    122|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    122|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    122|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11403|    122|		YYDEBUG(971, *YYCURSOR);
11404|    122|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (11404:7): [True: 90, False: 32]
  ------------------
11405|     90|			goto yy970;
11406|     90|		}
11407|     32|		YYDEBUG(972, *YYCURSOR);
11408|     32|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     32|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11409|     32|#line 1596 "Zend/zend_language_scanner.l"
11410|     32|		{
11411|     32|	goto return_whitespace;
11412|    122|}
11413|      0|#line 11414 "Zend/zend_language_scanner.c"
11414|     24|yy973:
11415|     24|		YYDEBUG(973, *YYCURSOR);
11416|     24|		++YYCURSOR;
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11417|     24|		YYDEBUG(974, *YYCURSOR);
11418|     24|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     24|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11419|     24|#line 2459 "Zend/zend_language_scanner.l"
11420|     24|		{
11421|    162|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|    162|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    162|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    162|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|    162|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    162|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    162|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11421:9): [True: 156, False: 6]
  ------------------
11422|    156|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|    156|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    156|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    156|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11423|      0|			case '\r':
  ------------------
  |  Branch (11423:4): [True: 0, False: 156]
  ------------------
11424|     13|			case '\n':
  ------------------
  |  Branch (11424:4): [True: 13, False: 143]
  ------------------
11425|     13|				YYCURSOR--;
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11426|     13|				break;
11427|      8|			case '?':
  ------------------
  |  Branch (11427:4): [True: 8, False: 148]
  ------------------
11428|      8|				if (*YYCURSOR == '>') {
  ------------------
  |  |   54|      8|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      8|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11428:9): [True: 5, False: 3]
  ------------------
11429|      5|					YYCURSOR--;
  ------------------
  |  |   54|      5|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11430|      5|					break;
11431|      5|				}
11432|      3|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      3|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
11433|    138|			default:
  ------------------
  |  Branch (11433:4): [True: 135, False: 21]
  ------------------
11434|    138|				continue;
11435|    156|		}
11436|       |
11437|     18|		break;
11438|    156|	}
11439|       |
11440|     24|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     24|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     24|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     24|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     24|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11441|     24|	RETURN_OR_SKIP_TOKEN(T_COMMENT);
  ------------------
  |  | 1339|     24|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|     24|		token = _token; \
  |  | 1341|     24|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|     24|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 4, False: 20]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      4|			goto skip_token; \
  |  | 1343|      4|		} \
  |  | 1344|     24|		goto emit_token; \
  |  | 1345|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11442|     24|}
11443|      0|#line 11444 "Zend/zend_language_scanner.c"
11444|     36|yy975:
11445|     36|		YYDEBUG(975, *YYCURSOR);
11446|     36|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     36|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     36|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     36|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11447|     36|		if (yych == '>') goto yy981;
  ------------------
  |  Branch (11447:7): [True: 28, False: 8]
  ------------------
11448|      8|		goto yy969;
11449|     27|yy976:
11450|     27|		YYDEBUG(976, *YYCURSOR);
11451|     27|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11452|     27|		if (yych == '*') goto yy983;
  ------------------
  |  Branch (11452:7): [True: 14, False: 13]
  ------------------
11453|     13|		if (yych == '/') goto yy973;
  ------------------
  |  Branch (11453:7): [True: 5, False: 8]
  ------------------
11454|      8|		goto yy969;
11455|     43|yy977:
11456|     43|		YYDEBUG(977, *YYCURSOR);
11457|     43|		yyaccept = 0;
11458|     43|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     43|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     43|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     43|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11459|     43|		if (yych == '-') goto yy985;
  ------------------
  |  Branch (11459:7): [True: 38, False: 5]
  ------------------
11460|      5|		goto yy969;
11461|  6.94k|yy978:
11462|  6.94k|		YYDEBUG(978, *YYCURSOR);
11463|  6.94k|		++YYCURSOR;
  ------------------
  |  |   54|  6.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.94k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11464|  6.94k|		YYFILL(1);
  ------------------
  |  |   53|  6.94k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  6.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  6.94k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  6.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  6.94k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  6.94k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  6.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  6.94k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6.94k]
  |  |  ------------------
  ------------------
11465|  6.94k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  6.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.94k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11466|  6.94k|		YYDEBUG(979, *YYCURSOR);
11467|  6.94k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (11467:7): [True: 5.62k, False: 1.31k]
  ------------------
11468|  5.62k|			goto yy978;
11469|  5.62k|		}
11470|  1.31k|		YYDEBUG(980, *YYCURSOR);
11471|  1.31k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.31k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.31k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.31k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.31k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.31k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.31k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.31k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.31k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11472|  1.31k|#line 1608 "Zend/zend_language_scanner.l"
11473|  1.31k|		{
11474|  1.31k|	yy_pop_state();
11475|  1.31k|	RETURN_TOKEN_WITH_STR(T_STRING, 0);
  ------------------
  |  | 1328|  1.31k|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|  1.31k|		token = _token; \
  |  | 1330|  1.31k|		offset = _offset; \
  |  | 1331|  1.31k|		goto emit_token_with_str; \
  |  | 1332|  1.31k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11476|  1.31k|}
11477|      0|#line 11478 "Zend/zend_language_scanner.c"
11478|     28|yy981:
11479|     28|		YYDEBUG(981, *YYCURSOR);
11480|     28|		++YYCURSOR;
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11481|     28|		YYDEBUG(982, *YYCURSOR);
11482|     28|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     28|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11483|     28|#line 1600 "Zend/zend_language_scanner.l"
11484|     28|		{
11485|     28|	RETURN_TOKEN(T_OBJECT_OPERATOR);
  ------------------
  |  | 1318|     28|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     28|		token = _token; \
  |  | 1320|     28|		goto emit_token; \
  |  | 1321|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11486|     28|}
11487|      0|#line 11488 "Zend/zend_language_scanner.c"
11488|     14|yy983:
11489|     14|		YYDEBUG(983, *YYCURSOR);
11490|     14|		yyaccept = 1;
11491|     14|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|     14|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11492|     14|		if (yych == '*') goto yy987;
  ------------------
  |  Branch (11492:7): [True: 6, False: 8]
  ------------------
11493|     14|yy984:
11494|     14|		YYDEBUG(984, *YYCURSOR);
11495|     14|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     14|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11496|     14|#line 2483 "Zend/zend_language_scanner.l"
11497|     14|		{
11498|     14|	int doc_com;
11499|       |
11500|     14|	if (yyleng > 2) {
  ------------------
  |  |   67|     14|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11500:6): [True: 6, False: 8]
  ------------------
11501|      6|		doc_com = 1;
11502|      6|		RESET_DOC_COMMENT();
  ------------------
  |  |   47|      6|#define RESET_DOC_COMMENT() do { \
  |  |   48|      6|	if (CG(doc_comment)) { \
  |  |  ------------------
  |  |  |  |   35|      6|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (35:16): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|		zend_string_release_ex(CG(doc_comment), 0); \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   50|      0|		CG(doc_comment) = NULL; \
  |  |  ------------------
  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |   51|      0|	} \
  |  |   52|      6|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
11503|      8|	} else {
11504|      8|		doc_com = 0;
11505|      8|	}
11506|       |
11507|    219|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|    219|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    219|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    219|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|    219|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    219|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    219|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11507:9): [True: 207, False: 12]
  ------------------
11508|    207|		if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
  ------------------
  |  |   54|    207|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    207|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    207|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11508:7): [True: 12, False: 195]
  |  Branch (11508:29): [True: 2, False: 10]
  ------------------
11509|      2|			break;
11510|      2|		}
11511|    207|	}
11512|       |
11513|     14|	if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|     14|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11513:6): [True: 2, False: 12]
  ------------------
11514|      2|		YYCURSOR++;
  ------------------
  |  |   54|      2|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      2|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11515|     12|	} else {
11516|     12|		zend_throw_exception_ex(zend_ce_parse_error, 0, "Unterminated comment starting line %" PRIu32, CG(zend_lineno));
  ------------------
  |  |   35|     12|# define CG(v) (compiler_globals.v)
  ------------------
11517|     12|		if (PARSER_MODE()) {
  ------------------
  |  | 1316|     12|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11518|      3|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      3|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      3|		token = _token; \
  |  | 1320|      3|		goto emit_token; \
  |  | 1321|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11519|      3|		}
11520|     12|	}
11521|       |
11522|     11|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     11|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     11|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     11|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     11|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11523|     11|	HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|     11|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|     11|do {																			\
  |  |   97|     11|	char *p = (s), *boundary = p+(l);											\
  |  |   98|     11|																				\
  |  |   99|    168|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 157, False: 11]
  |  |  ------------------
  |  |  100|    157|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 1, False: 156]
  |  |  |  Branch (100:22): [True: 17, False: 139]
  |  |  |  Branch (100:36): [True: 17, False: 0]
  |  |  ------------------
  |  |  101|     18|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|     18|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|     18|		}																		\
  |  |  103|    157|		p++;																	\
  |  |  104|    157|	}																			\
  |  |  105|     11|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 11]
  |  |  ------------------
  ------------------
11524|       |
11525|     11|	if (doc_com) {
  ------------------
  |  Branch (11525:6): [True: 5, False: 6]
  ------------------
11526|      5|		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
  ------------------
  |  |   35|      5|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
  ------------------
  |  |   66|      5|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
  ------------------
  |  |   67|      5|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      5|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11527|      5|		RETURN_OR_SKIP_TOKEN(T_DOC_COMMENT);
  ------------------
  |  | 1339|      5|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|      5|		token = _token; \
  |  | 1341|      5|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|      5|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 1, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      1|			goto skip_token; \
  |  | 1343|      1|		} \
  |  | 1344|      5|		goto emit_token; \
  |  | 1345|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11528|      5|	}
11529|       |
11530|      6|	RETURN_OR_SKIP_TOKEN(T_COMMENT);
  ------------------
  |  | 1339|      6|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|      6|		token = _token; \
  |  | 1341|      6|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|      6|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      1|			goto skip_token; \
  |  | 1343|      1|		} \
  |  | 1344|      6|		goto emit_token; \
  |  | 1345|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11531|      6|}
11532|      0|#line 11533 "Zend/zend_language_scanner.c"
11533|     38|yy985:
11534|     38|		YYDEBUG(985, *YYCURSOR);
11535|     38|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     38|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     38|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     38|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11536|     38|		if (yych == '>') goto yy988;
  ------------------
  |  Branch (11536:7): [True: 37, False: 1]
  ------------------
11537|      1|yy986:
11538|      1|		YYDEBUG(986, *YYCURSOR);
11539|      1|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|      1|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|      1|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11540|      1|		if (yyaccept == 0) {
  ------------------
  |  Branch (11540:7): [True: 1, False: 0]
  ------------------
11541|      1|			goto yy969;
11542|      1|		} else {
11543|      0|			goto yy984;
11544|      0|		}
11545|      6|yy987:
11546|      6|		YYDEBUG(987, *YYCURSOR);
11547|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11548|      6|		if (yych <= '\f') {
  ------------------
  |  Branch (11548:7): [True: 0, False: 6]
  ------------------
11549|      0|			if (yych <= 0x08) goto yy986;
  ------------------
  |  Branch (11549:8): [True: 0, False: 0]
  ------------------
11550|      0|			if (yych <= '\n') goto yy990;
  ------------------
  |  Branch (11550:8): [True: 0, False: 0]
  ------------------
11551|      0|			goto yy986;
11552|      6|		} else {
11553|      6|			if (yych <= '\r') goto yy990;
  ------------------
  |  Branch (11553:8): [True: 1, False: 5]
  ------------------
11554|      5|			if (yych == ' ') goto yy990;
  ------------------
  |  Branch (11554:8): [True: 5, False: 0]
  ------------------
11555|      0|			goto yy986;
11556|      5|		}
11557|     37|yy988:
11558|     37|		YYDEBUG(988, *YYCURSOR);
11559|     37|		++YYCURSOR;
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11560|     37|		YYDEBUG(989, *YYCURSOR);
11561|     37|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     37|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11562|     37|#line 1604 "Zend/zend_language_scanner.l"
11563|     37|		{
11564|     37|	RETURN_TOKEN(T_NULLSAFE_OBJECT_OPERATOR);
  ------------------
  |  | 1318|     37|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     37|		token = _token; \
  |  | 1320|     37|		goto emit_token; \
  |  | 1321|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11565|     37|}
11566|      0|#line 11567 "Zend/zend_language_scanner.c"
11567|     19|yy990:
11568|     19|		YYDEBUG(990, *YYCURSOR);
11569|     19|		++YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11570|     19|		YYFILL(1);
  ------------------
  |  |   53|     19|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     19|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     19|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 19]
  |  |  ------------------
  ------------------
11571|     19|		yych = *YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11572|     19|		YYDEBUG(991, *YYCURSOR);
11573|     19|		if (yych <= '\f') {
  ------------------
  |  Branch (11573:7): [True: 4, False: 15]
  ------------------
11574|      4|			if (yych <= 0x08) goto yy984;
  ------------------
  |  Branch (11574:8): [True: 4, False: 0]
  ------------------
11575|      0|			if (yych <= '\n') goto yy990;
  ------------------
  |  Branch (11575:8): [True: 0, False: 0]
  ------------------
11576|      0|			goto yy984;
11577|     15|		} else {
11578|     15|			if (yych <= '\r') goto yy990;
  ------------------
  |  Branch (11578:8): [True: 1, False: 14]
  ------------------
11579|     14|			if (yych == ' ') goto yy990;
  ------------------
  |  Branch (11579:8): [True: 12, False: 2]
  ------------------
11580|      2|			goto yy984;
11581|     14|		}
11582|     19|	}
11583|       |/* *********************************** */
11584|  3.95k|yyc_ST_BACKQUOTE:
11585|  3.95k|	{
11586|  3.95k|		static const unsigned char yybm[] = {
11587|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11588|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11589|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11590|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11591|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11592|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11593|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11594|  3.95k|			128, 128,   0,   0,   0,   0,   0,   0, 
11595|  3.95k|			  0, 128, 128, 128, 128, 128, 128, 128, 
11596|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11597|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11598|  3.95k|			128, 128, 128,   0,   0,   0,   0, 128, 
11599|  3.95k|			  0, 128, 128, 128, 128, 128, 128, 128, 
11600|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11601|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11602|  3.95k|			128, 128, 128,   0,   0,   0,   0,   0, 
11603|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11604|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11605|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11606|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11607|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11608|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11609|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11610|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11611|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11612|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11613|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11614|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11615|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11616|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11617|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11618|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11619|  3.95k|		};
11620|  3.95k|		YYDEBUG(992, *YYCURSOR);
11621|  3.95k|		YYFILL(2);
  ------------------
  |  |   53|  3.95k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  3.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.95k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  3.95k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.95k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  3.95k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 3.95k]
  |  |  ------------------
  ------------------
11622|  3.95k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  3.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11623|  3.95k|		if (yych <= '_') {
  ------------------
  |  Branch (11623:7): [True: 2.53k, False: 1.41k]
  ------------------
11624|  2.53k|			if (yych == '$') goto yy996;
  ------------------
  |  Branch (11624:8): [True: 273, False: 2.26k]
  ------------------
11625|  2.53k|		} else {
11626|  1.41k|			if (yych <= '`') goto yy997;
  ------------------
  |  Branch (11626:8): [True: 1.19k, False: 219]
  ------------------
11627|    219|			if (yych == '{') goto yy999;
  ------------------
  |  Branch (11627:8): [True: 14, False: 205]
  ------------------
11628|    219|		}
11629|  2.47k|		YYDEBUG(994, *YYCURSOR);
11630|  2.47k|		++YYCURSOR;
  ------------------
  |  |   54|  2.47k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.47k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.47k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11631|  2.54k|yy995:
11632|  2.54k|		YYDEBUG(995, *YYCURSOR);
11633|  2.54k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  2.54k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  2.54k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.54k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  2.54k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.54k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.54k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  2.54k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  2.54k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11634|  2.54k|#line 2918 "Zend/zend_language_scanner.l"
11635|  2.54k|		{
11636|  2.54k|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|  2.54k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.54k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.54k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|  2.54k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  2.54k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.54k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11636:6): [True: 591, False: 1.95k]
  ------------------
11637|    591|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|    591|#define RETURN_END_TOKEN do { \
  |  | 1356|    591|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|    437|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    437|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 5, False: 432]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 437, False: 154]
  |  |  ------------------
  |  | 1357|      5|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|      5|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|      5|		token = _token; \
  |  |  |  | 1320|      5|		goto emit_token; \
  |  |  |  | 1321|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|    586|		} else { \
  |  | 1359|    586|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|    586|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|    586|		token = _token; \
  |  |  |  | 1320|    586|		goto emit_token; \
  |  |  |  | 1321|    586|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|    586|		} \
  |  | 1361|    591|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11638|    591|	}
11639|  1.95k|	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   66|  1.95k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  1.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|     49|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|     49|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|     49|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11639:6): [True: 49, False: 1.90k]
  |  Branch (11639:27): [True: 26, False: 23]
  ------------------
11640|     26|		YYCURSOR++;
  ------------------
  |  |   54|     26|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     26|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11641|     26|	}
11642|       |
11643|  88.1k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  88.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  88.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  88.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  88.1k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  88.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  88.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11643:9): [True: 87.5k, False: 572]
  ------------------
11644|  87.5k|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|  87.5k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  87.5k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  87.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11645|  1.18k|			case '`':
  ------------------
  |  Branch (11645:4): [True: 1.18k, False: 86.4k]
  ------------------
11646|  1.18k|				break;
11647|    303|			case '$':
  ------------------
  |  Branch (11647:4): [True: 303, False: 87.2k]
  ------------------
11648|    303|				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |  118|    606|#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (118:29): [True: 177, False: 126]
  |  |  |  Branch (118:43): [True: 54, False: 123]
  |  |  |  Branch (118:59): [True: 181, False: 68]
  |  |  |  Branch (118:73): [True: 26, False: 155]
  |  |  |  Branch (118:88): [True: 0, False: 223]
  |  |  |  Branch (118:102): [True: 28, False: 195]
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |   54|    195|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    195|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    195|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11648:38): [True: 95, False: 100]
  ------------------
11649|    203|					break;
11650|    203|				}
11651|    100|				continue;
11652|    100|			case '{':
  ------------------
  |  Branch (11652:4): [True: 20, False: 87.5k]
  ------------------
11653|     20|				if (*YYCURSOR == '$') {
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11653:9): [True: 0, False: 20]
  ------------------
11654|      0|					break;
11655|      0|				}
11656|     20|				continue;
11657|     28|			case '\\':
  ------------------
  |  Branch (11657:4): [True: 28, False: 87.5k]
  ------------------
11658|     28|				if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|     28|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|     28|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|     28|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     28|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11658:9): [True: 20, False: 8]
  ------------------
11659|     20|					YYCURSOR++;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11660|     20|				}
11661|     28|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     28|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
11662|  86.0k|			default:
  ------------------
  |  Branch (11662:4): [True: 86.0k, False: 1.53k]
  ------------------
11663|  86.0k|				continue;
11664|  87.5k|		}
11665|       |
11666|  1.38k|		YYCURSOR--;
  ------------------
  |  |   54|  1.38k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.38k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.38k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11667|  1.38k|		break;
11668|  87.5k|	}
11669|       |
11670|  1.95k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.95k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.95k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11671|       |
11672|  1.95k|	if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '`') == SUCCESS)
  ------------------
  |  |  456|  3.91k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.95k, False: 0]
  |  |  ------------------
  ------------------
11673|  1.95k|	 || !PARSER_MODE()) {
  ------------------
  |  | 1316|      0|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  ------------------
  |  Branch (11673:6): [True: 0, False: 0]
  ------------------
11674|  1.95k|		RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|  1.95k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  1.95k|		token = _token; \
  |  | 1325|  1.95k|		goto emit_token_with_val; \
  |  | 1326|  1.95k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11675|  1.95k|	} else {
11676|      0|		RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11677|      0|	}
11678|  1.95k|}
11679|      0|#line 11680 "Zend/zend_language_scanner.c"
11680|    273|yy996:
11681|    273|		YYDEBUG(996, *YYCURSOR);
11682|    273|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    273|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    273|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    273|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11683|    273|		if (yych <= '_') {
  ------------------
  |  Branch (11683:7): [True: 70, False: 203]
  ------------------
11684|     70|			if (yych <= '@') goto yy995;
  ------------------
  |  Branch (11684:8): [True: 33, False: 37]
  ------------------
11685|     37|			if (yych <= 'Z') goto yy1000;
  ------------------
  |  Branch (11685:8): [True: 27, False: 10]
  ------------------
11686|     10|			if (yych <= '^') goto yy995;
  ------------------
  |  Branch (11686:8): [True: 10, False: 0]
  ------------------
11687|      0|			goto yy1000;
11688|    203|		} else {
11689|    203|			if (yych <= 'z') {
  ------------------
  |  Branch (11689:8): [True: 73, False: 130]
  ------------------
11690|     73|				if (yych <= '`') goto yy995;
  ------------------
  |  Branch (11690:9): [True: 15, False: 58]
  ------------------
11691|     58|				goto yy1000;
11692|    130|			} else {
11693|    130|				if (yych <= '{') goto yy1003;
  ------------------
  |  Branch (11693:9): [True: 99, False: 31]
  ------------------
11694|     31|				if (yych <= 0x7F) goto yy995;
  ------------------
  |  Branch (11694:9): [True: 3, False: 28]
  ------------------
11695|     28|				goto yy1000;
11696|     31|			}
11697|    203|		}
11698|  1.19k|yy997:
11699|  1.19k|		YYDEBUG(997, *YYCURSOR);
11700|  1.19k|		++YYCURSOR;
  ------------------
  |  |   54|  1.19k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11701|  1.19k|		YYDEBUG(998, *YYCURSOR);
11702|  1.19k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.19k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.19k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11703|  1.19k|#line 2858 "Zend/zend_language_scanner.l"
11704|  1.19k|		{
11705|  1.19k|	BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|  1.19k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  1.19k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.19k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.19k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11706|  1.19k|	RETURN_TOKEN('`');
  ------------------
  |  | 1318|  1.19k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  1.19k|		token = _token; \
  |  | 1320|  1.19k|		goto emit_token; \
  |  | 1321|  1.19k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11707|  1.19k|}
11708|      0|#line 11709 "Zend/zend_language_scanner.c"
11709|     14|yy999:
11710|     14|		YYDEBUG(999, *YYCURSOR);
11711|     14|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     14|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     14|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     14|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11712|     14|		if (yych == '$') goto yy1005;
  ------------------
  |  Branch (11712:7): [True: 0, False: 14]
  ------------------
11713|     14|		goto yy995;
11714|    286|yy1000:
11715|    286|		YYDEBUG(1000, *YYCURSOR);
11716|    286|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    286|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    286|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    286|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    286|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    286|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    286|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11717|    286|		YYFILL(4);
  ------------------
  |  |   53|    286|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    286|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    286|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    286|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    286|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    286|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    286|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    286|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 286]
  |  |  ------------------
  ------------------
11718|    286|		yych = *YYCURSOR;
  ------------------
  |  |   54|    286|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    286|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    286|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11719|    286|		YYDEBUG(1001, *YYCURSOR);
11720|    286|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (11720:7): [True: 173, False: 113]
  ------------------
11721|    173|			goto yy1000;
11722|    173|		}
11723|    113|		if (yych <= '>') {
  ------------------
  |  Branch (11723:7): [True: 68, False: 45]
  ------------------
11724|     68|			if (yych == '-') goto yy1007;
  ------------------
  |  Branch (11724:8): [True: 10, False: 58]
  ------------------
11725|     68|		} else {
11726|     45|			if (yych <= '?') goto yy1009;
  ------------------
  |  Branch (11726:8): [True: 10, False: 35]
  ------------------
11727|     35|			if (yych <= '@') goto yy1002;
  ------------------
  |  Branch (11727:8): [True: 4, False: 31]
  ------------------
11728|     31|			if (yych <= '[') goto yy1010;
  ------------------
  |  Branch (11728:8): [True: 12, False: 19]
  ------------------
11729|     31|		}
11730|     93|yy1002:
11731|     93|		YYDEBUG(1002, *YYCURSOR);
11732|     93|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     93|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     93|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     93|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     93|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11733|     93|#line 2416 "Zend/zend_language_scanner.l"
11734|     93|		{
11735|     93|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     93|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     93|		token = _token; \
  |  | 1330|     93|		offset = _offset; \
  |  | 1331|     93|		goto emit_token_with_str; \
  |  | 1332|     93|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11736|     93|}
11737|      0|#line 11738 "Zend/zend_language_scanner.c"
11738|     99|yy1003:
11739|     99|		YYDEBUG(1003, *YYCURSOR);
11740|     99|		++YYCURSOR;
  ------------------
  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11741|     99|		YYDEBUG(1004, *YYCURSOR);
11742|     99|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     99|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     99|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     99|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     99|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11743|     99|#line 1980 "Zend/zend_language_scanner.l"
11744|     99|		{
11745|     99|	yy_push_state(ST_LOOKING_FOR_VARNAME);
  ------------------
  |  |  173|     99|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
11746|     99|	enter_nesting('{');
11747|     99|	RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
  ------------------
  |  | 1318|     99|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     99|		token = _token; \
  |  | 1320|     99|		goto emit_token; \
  |  | 1321|     99|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11748|     99|}
11749|      0|#line 11750 "Zend/zend_language_scanner.c"
11750|      0|yy1005:
11751|      0|		YYDEBUG(1005, *YYCURSOR);
11752|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11753|      0|		YYDEBUG(1006, *YYCURSOR);
11754|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11755|      0|#line 2845 "Zend/zend_language_scanner.l"
11756|      0|		{
11757|      0|	yy_push_state(ST_IN_SCRIPTING);
  ------------------
  |  |  173|      0|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
11758|      0|	yyless(1);
  ------------------
  |  |   68|      0|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
11759|      0|	enter_nesting('{');
11760|      0|	RETURN_TOKEN(T_CURLY_OPEN);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11761|      0|}
11762|      0|#line 11763 "Zend/zend_language_scanner.c"
11763|     10|yy1007:
11764|     10|		YYDEBUG(1007, *YYCURSOR);
11765|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11766|     10|		if (yych == '>') goto yy1012;
  ------------------
  |  Branch (11766:7): [True: 10, False: 0]
  ------------------
11767|     12|yy1008:
11768|     12|		YYDEBUG(1008, *YYCURSOR);
11769|     12|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11770|     12|		goto yy1002;
11771|     10|yy1009:
11772|     10|		YYDEBUG(1009, *YYCURSOR);
11773|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11774|     10|		if (yych == '-') goto yy1013;
  ------------------
  |  Branch (11774:7): [True: 6, False: 4]
  ------------------
11775|      4|		goto yy1008;
11776|     12|yy1010:
11777|     12|		YYDEBUG(1010, *YYCURSOR);
11778|     12|		++YYCURSOR;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11779|     12|		YYDEBUG(1011, *YYCURSOR);
11780|     12|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     12|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11781|     12|#line 2410 "Zend/zend_language_scanner.l"
11782|     12|		{
11783|     12|	yyless(yyleng - 1);
  ------------------
  |  |   68|     12|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     12|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     12|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     12|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 12]
  |  |  ------------------
  ------------------
11784|     12|	yy_push_state(ST_VAR_OFFSET);
  ------------------
  |  |  173|     12|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
11785|     12|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     12|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     12|		token = _token; \
  |  | 1330|     12|		offset = _offset; \
  |  | 1331|     12|		goto emit_token_with_str; \
  |  | 1332|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11786|     12|}
11787|      0|#line 11788 "Zend/zend_language_scanner.c"
11788|     10|yy1012:
11789|     10|		YYDEBUG(1012, *YYCURSOR);
11790|     10|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     10|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     10|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11791|     10|		if (yych <= '_') {
  ------------------
  |  Branch (11791:7): [True: 7, False: 3]
  ------------------
11792|      7|			if (yych <= '@') goto yy1008;
  ------------------
  |  Branch (11792:8): [True: 1, False: 6]
  ------------------
11793|      6|			if (yych <= 'Z') goto yy1014;
  ------------------
  |  Branch (11793:8): [True: 0, False: 6]
  ------------------
11794|      6|			if (yych <= '^') goto yy1008;
  ------------------
  |  Branch (11794:8): [True: 4, False: 2]
  ------------------
11795|      2|			goto yy1014;
11796|      6|		} else {
11797|      3|			if (yych <= '`') goto yy1008;
  ------------------
  |  Branch (11797:8): [True: 1, False: 2]
  ------------------
11798|      2|			if (yych <= 'z') goto yy1014;
  ------------------
  |  Branch (11798:8): [True: 2, False: 0]
  ------------------
11799|      0|			if (yych <= 0x7F) goto yy1008;
  ------------------
  |  Branch (11799:8): [True: 0, False: 0]
  ------------------
11800|      0|			goto yy1014;
11801|      0|		}
11802|      6|yy1013:
11803|      6|		YYDEBUG(1013, *YYCURSOR);
11804|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11805|      6|		if (yych == '>') goto yy1016;
  ------------------
  |  Branch (11805:7): [True: 6, False: 0]
  ------------------
11806|      0|		goto yy1008;
11807|      4|yy1014:
11808|      4|		YYDEBUG(1014, *YYCURSOR);
11809|      4|		++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11810|      4|		YYDEBUG(1015, *YYCURSOR);
11811|      4|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      4|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11812|      4|#line 2396 "Zend/zend_language_scanner.l"
11813|      4|		{
11814|      4|	yyless(yyleng - 3);
  ------------------
  |  |   68|      4|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      4|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      4|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      4|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 4]
  |  |  ------------------
  ------------------
11815|      4|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|      4|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
11816|      4|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|      4|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|      4|		token = _token; \
  |  | 1330|      4|		offset = _offset; \
  |  | 1331|      4|		goto emit_token_with_str; \
  |  | 1332|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11817|      4|}
11818|      0|#line 11819 "Zend/zend_language_scanner.c"
11819|      6|yy1016:
11820|      6|		YYDEBUG(1016, *YYCURSOR);
11821|      6|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11822|      6|		if (yych <= '_') {
  ------------------
  |  Branch (11822:7): [True: 2, False: 4]
  ------------------
11823|      2|			if (yych <= '@') goto yy1008;
  ------------------
  |  Branch (11823:8): [True: 0, False: 2]
  ------------------
11824|      2|			if (yych <= 'Z') goto yy1017;
  ------------------
  |  Branch (11824:8): [True: 0, False: 2]
  ------------------
11825|      2|			if (yych <= '^') goto yy1008;
  ------------------
  |  Branch (11825:8): [True: 2, False: 0]
  ------------------
11826|      4|		} else {
11827|      4|			if (yych <= '`') goto yy1008;
  ------------------
  |  Branch (11827:8): [True: 0, False: 4]
  ------------------
11828|      4|			if (yych <= 'z') goto yy1017;
  ------------------
  |  Branch (11828:8): [True: 4, False: 0]
  ------------------
11829|      0|			if (yych <= 0x7F) goto yy1008;
  ------------------
  |  Branch (11829:8): [True: 0, False: 0]
  ------------------
11830|      0|		}
11831|      4|yy1017:
11832|      4|		YYDEBUG(1017, *YYCURSOR);
11833|      4|		++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11834|      4|		YYDEBUG(1018, *YYCURSOR);
11835|      4|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      4|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11836|      4|#line 2402 "Zend/zend_language_scanner.l"
11837|      4|		{
11838|      4|	yyless(yyleng - 4);
  ------------------
  |  |   68|      4|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      4|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      4|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      4|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 4]
  |  |  ------------------
  ------------------
11839|      4|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|      4|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
11840|      4|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|      4|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|      4|		token = _token; \
  |  | 1330|      4|		offset = _offset; \
  |  | 1331|      4|		goto emit_token_with_str; \
  |  | 1332|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11841|      4|}
11842|      4|#line 11843 "Zend/zend_language_scanner.c"
11843|      4|	}
11844|       |/* *********************************** */
11845|  3.95k|yyc_ST_DOUBLE_QUOTES:
11846|  3.95k|	{
11847|  3.95k|		static const unsigned char yybm[] = {
11848|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11849|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11850|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11851|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11852|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11853|  3.95k|			  0,   0,   0,   0,   0,   0,   0,   0, 
11854|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11855|  3.95k|			128, 128,   0,   0,   0,   0,   0,   0, 
11856|  3.95k|			  0, 128, 128, 128, 128, 128, 128, 128, 
11857|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11858|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11859|  3.95k|			128, 128, 128,   0,   0,   0,   0, 128, 
11860|  3.95k|			  0, 128, 128, 128, 128, 128, 128, 128, 
11861|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11862|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11863|  3.95k|			128, 128, 128,   0,   0,   0,   0,   0, 
11864|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11865|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11866|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11867|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11868|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11869|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11870|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11871|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11872|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11873|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11874|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11875|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11876|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11877|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11878|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11879|  3.95k|			128, 128, 128, 128, 128, 128, 128, 128, 
11880|  3.95k|		};
11881|  3.95k|		YYDEBUG(1019, *YYCURSOR);
11882|  3.95k|		YYFILL(2);
  ------------------
  |  |   53|  3.95k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  3.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.95k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  3.95k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.95k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  3.95k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 3.95k]
  |  |  ------------------
  ------------------
11883|  3.95k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  3.95k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.95k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.95k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11884|  3.95k|		if (yych <= '#') {
  ------------------
  |  Branch (11884:7): [True: 1.33k, False: 2.61k]
  ------------------
11885|  1.33k|			if (yych == '"') goto yy1023;
  ------------------
  |  Branch (11885:8): [True: 392, False: 945]
  ------------------
11886|  2.61k|		} else {
11887|  2.61k|			if (yych <= '$') goto yy1025;
  ------------------
  |  Branch (11887:8): [True: 1.14k, False: 1.46k]
  ------------------
11888|  1.46k|			if (yych == '{') goto yy1026;
  ------------------
  |  Branch (11888:8): [True: 41, False: 1.42k]
  ------------------
11889|  1.46k|		}
11890|  2.37k|		YYDEBUG(1021, *YYCURSOR);
11891|  2.37k|		++YYCURSOR;
  ------------------
  |  |   54|  2.37k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.37k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.37k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11892|  2.44k|yy1022:
11893|  2.44k|		YYDEBUG(1022, *YYCURSOR);
11894|  2.44k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  2.44k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  2.44k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  2.44k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.44k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  2.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  2.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11895|  2.44k|#line 2864 "Zend/zend_language_scanner.l"
11896|  2.44k|		{
11897|  2.44k|	if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
  ------------------
  |  |  116|  2.44k|#define GET_DOUBLE_QUOTES_SCANNED_LENGTH()    SCNG(scanned_string_len)
  |  |  ------------------
  |  |  |  |   87|  2.44k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (55:23): [True: 1.08k, False: 1.35k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11898|  1.08k|		YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
  ------------------
  |  |   54|  1.08k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.08k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.08k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
  ------------------
  |  |  116|  1.08k|#define GET_DOUBLE_QUOTES_SCANNED_LENGTH()    SCNG(scanned_string_len)
  |  |  ------------------
  |  |  |  |   87|  1.08k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.08k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11899|  1.08k|		SET_DOUBLE_QUOTES_SCANNED_LENGTH(0);
  ------------------
  |  |  115|  1.08k|#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) SCNG(scanned_string_len) = (len)
  |  |  ------------------
  |  |  |  |   87|  1.08k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.08k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11900|       |
11901|  1.08k|		goto double_quotes_scan_done;
11902|  1.08k|	}
11903|       |
11904|  1.35k|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|  1.35k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.35k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.35k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|  1.35k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  1.35k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.35k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11904:6): [True: 567, False: 788]
  ------------------
11905|    567|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|    567|#define RETURN_END_TOKEN do { \
  |  | 1356|    567|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|    550|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    550|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 15, False: 535]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 550, False: 17]
  |  |  ------------------
  |  | 1357|     15|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|     15|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|     15|		token = _token; \
  |  |  |  | 1320|     15|		goto emit_token; \
  |  |  |  | 1321|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|    552|		} else { \
  |  | 1359|    552|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|    552|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|    552|		token = _token; \
  |  |  |  | 1320|    552|		goto emit_token; \
  |  |  |  | 1321|    552|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|    552|		} \
  |  | 1361|    567|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11906|    567|	}
11907|    788|	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   66|    788|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|    788|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    788|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|     86|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|     86|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11907:6): [True: 86, False: 702]
  |  Branch (11907:27): [True: 85, False: 1]
  ------------------
11908|     85|		YYCURSOR++;
  ------------------
  |  |   54|     85|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     85|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     85|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11909|     85|	}
11910|       |
11911|  10.3k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  10.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  10.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  10.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11911:9): [True: 10.2k, False: 113]
  ------------------
11912|  10.2k|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|  10.2k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.2k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.2k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11913|    352|			case '"':
  ------------------
  |  Branch (11913:4): [True: 352, False: 9.87k]
  ------------------
11914|    352|				break;
11915|    468|			case '$':
  ------------------
  |  Branch (11915:4): [True: 468, False: 9.75k]
  ------------------
11916|    468|				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |  118|    936|#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (118:29): [True: 251, False: 217]
  |  |  |  Branch (118:43): [True: 162, False: 89]
  |  |  |  Branch (118:59): [True: 168, False: 138]
  |  |  |  Branch (118:73): [True: 73, False: 95]
  |  |  |  Branch (118:88): [True: 0, False: 233]
  |  |  |  Branch (118:102): [True: 41, False: 192]
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |   54|    192|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    192|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    192|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11916:38): [True: 45, False: 147]
  ------------------
11917|    321|					break;
11918|    321|				}
11919|    147|				continue;
11920|    147|			case '{':
  ------------------
  |  Branch (11920:4): [True: 111, False: 10.1k]
  ------------------
11921|    111|				if (*YYCURSOR == '$') {
  ------------------
  |  |   54|    111|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11921:9): [True: 2, False: 109]
  ------------------
11922|      2|					break;
11923|      2|				}
11924|    109|				continue;
11925|    237|			case '\\':
  ------------------
  |  Branch (11925:4): [True: 237, False: 9.98k]
  ------------------
11926|    237|				if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|    237|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    237|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    237|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|    237|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    237|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    237|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11926:9): [True: 230, False: 7]
  ------------------
11927|    230|					YYCURSOR++;
  ------------------
  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11928|    230|				}
11929|    237|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|    237|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
11930|  9.29k|			default:
  ------------------
  |  Branch (11930:4): [True: 9.05k, False: 1.16k]
  ------------------
11931|  9.29k|				continue;
11932|  10.2k|		}
11933|       |
11934|    675|		YYCURSOR--;
  ------------------
  |  |   54|    675|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    675|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    675|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11935|    675|		break;
11936|  10.2k|	}
11937|       |
11938|  1.87k|double_quotes_scan_done:
11939|  1.87k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.87k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.87k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.87k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.87k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.87k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.87k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11940|       |
11941|  1.87k|	if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '"') == SUCCESS)
  ------------------
  |  |  456|  3.74k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.86k, False: 7]
  |  |  ------------------
  ------------------
11942|  1.87k|	 || !PARSER_MODE()) {
  ------------------
  |  | 1316|      7|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  ------------------
  |  Branch (11942:6): [True: 7, False: 0]
  ------------------
11943|  1.87k|		RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|  1.87k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  1.87k|		token = _token; \
  |  | 1325|  1.87k|		goto emit_token_with_val; \
  |  | 1326|  1.87k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11944|  1.87k|	} else {
11945|      0|		RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      0|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      0|		token = _token; \
  |  | 1320|      0|		goto emit_token; \
  |  | 1321|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11946|      0|	}
11947|  1.87k|}
11948|      0|#line 11949 "Zend/zend_language_scanner.c"
11949|    392|yy1023:
11950|    392|		YYDEBUG(1023, *YYCURSOR);
11951|    392|		++YYCURSOR;
  ------------------
  |  |   54|    392|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    392|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    392|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11952|    392|		YYDEBUG(1024, *YYCURSOR);
11953|    392|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    392|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    392|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    392|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    392|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    392|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    392|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    392|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    392|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
11954|    392|#line 2853 "Zend/zend_language_scanner.l"
11955|    392|		{
11956|    392|	BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|    392|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|    392|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    392|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    392|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11957|    392|	RETURN_TOKEN('"');
  ------------------
  |  | 1318|    392|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    392|		token = _token; \
  |  | 1320|    392|		goto emit_token; \
  |  | 1321|    392|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11958|    392|}
11959|      0|#line 11960 "Zend/zend_language_scanner.c"
11960|  1.14k|yy1025:
11961|  1.14k|		YYDEBUG(1025, *YYCURSOR);
11962|  1.14k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  1.14k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.14k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.14k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11963|  1.14k|		if (yych <= '_') {
  ------------------
  |  Branch (11963:7): [True: 194, False: 954]
  ------------------
11964|    194|			if (yych <= '@') goto yy1022;
  ------------------
  |  Branch (11964:8): [True: 39, False: 155]
  ------------------
11965|    155|			if (yych <= 'Z') goto yy1027;
  ------------------
  |  Branch (11965:8): [True: 146, False: 9]
  ------------------
11966|      9|			if (yych <= '^') goto yy1022;
  ------------------
  |  Branch (11966:8): [True: 9, False: 0]
  ------------------
11967|      0|			goto yy1027;
11968|    954|		} else {
11969|    954|			if (yych <= 'z') {
  ------------------
  |  Branch (11969:8): [True: 499, False: 455]
  ------------------
11970|    499|				if (yych <= '`') goto yy1022;
  ------------------
  |  Branch (11970:9): [True: 1, False: 498]
  ------------------
11971|    498|				goto yy1027;
11972|    499|			} else {
11973|    455|				if (yych <= '{') goto yy1030;
  ------------------
  |  Branch (11973:9): [True: 245, False: 210]
  ------------------
11974|    210|				if (yych <= 0x7F) goto yy1022;
  ------------------
  |  Branch (11974:9): [True: 8, False: 202]
  ------------------
11975|    202|				goto yy1027;
11976|    210|			}
11977|    954|		}
11978|     41|yy1026:
11979|     41|		YYDEBUG(1026, *YYCURSOR);
11980|     41|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     41|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     41|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11981|     41|		if (yych == '$') goto yy1032;
  ------------------
  |  Branch (11981:7): [True: 27, False: 14]
  ------------------
11982|     14|		goto yy1022;
11983|  2.85k|yy1027:
11984|  2.85k|		YYDEBUG(1027, *YYCURSOR);
11985|  2.85k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|  2.85k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  2.85k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|  2.85k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.85k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11986|  2.85k|		YYFILL(4);
  ------------------
  |  |   53|  2.85k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  2.85k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.85k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  2.85k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  2.85k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  2.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  2.85k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 2.85k]
  |  |  ------------------
  ------------------
11987|  2.85k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  2.85k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.85k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.85k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11988|  2.85k|		YYDEBUG(1028, *YYCURSOR);
11989|  2.85k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (11989:7): [True: 2.00k, False: 846]
  ------------------
11990|  2.00k|			goto yy1027;
11991|  2.00k|		}
11992|    846|		if (yych <= '>') {
  ------------------
  |  Branch (11992:7): [True: 612, False: 234]
  ------------------
11993|    612|			if (yych == '-') goto yy1034;
  ------------------
  |  Branch (11993:8): [True: 23, False: 589]
  ------------------
11994|    612|		} else {
11995|    234|			if (yych <= '?') goto yy1036;
  ------------------
  |  Branch (11995:8): [True: 55, False: 179]
  ------------------
11996|    179|			if (yych <= '@') goto yy1029;
  ------------------
  |  Branch (11996:8): [True: 17, False: 162]
  ------------------
11997|    162|			if (yych <= '[') goto yy1037;
  ------------------
  |  Branch (11997:8): [True: 42, False: 120]
  ------------------
11998|    162|		}
11999|    774|yy1029:
12000|    774|		YYDEBUG(1029, *YYCURSOR);
12001|    774|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    774|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    774|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    774|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    774|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    774|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    774|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    774|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    774|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12002|    774|#line 2416 "Zend/zend_language_scanner.l"
12003|    774|		{
12004|    774|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|    774|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|    774|		token = _token; \
  |  | 1330|    774|		offset = _offset; \
  |  | 1331|    774|		goto emit_token_with_str; \
  |  | 1332|    774|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12005|    774|}
12006|      0|#line 12007 "Zend/zend_language_scanner.c"
12007|    245|yy1030:
12008|    245|		YYDEBUG(1030, *YYCURSOR);
12009|    245|		++YYCURSOR;
  ------------------
  |  |   54|    245|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    245|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    245|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12010|    245|		YYDEBUG(1031, *YYCURSOR);
12011|    245|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    245|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    245|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    245|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    245|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    245|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    245|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    245|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    245|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12012|    245|#line 1980 "Zend/zend_language_scanner.l"
12013|    245|		{
12014|    245|	yy_push_state(ST_LOOKING_FOR_VARNAME);
  ------------------
  |  |  173|    245|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12015|    245|	enter_nesting('{');
12016|    245|	RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
  ------------------
  |  | 1318|    245|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    245|		token = _token; \
  |  | 1320|    245|		goto emit_token; \
  |  | 1321|    245|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12017|    245|}
12018|      0|#line 12019 "Zend/zend_language_scanner.c"
12019|     27|yy1032:
12020|     27|		YYDEBUG(1032, *YYCURSOR);
12021|     27|		++YYCURSOR;
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12022|     27|		YYDEBUG(1033, *YYCURSOR);
12023|     27|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     27|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12024|     27|#line 2845 "Zend/zend_language_scanner.l"
12025|     27|		{
12026|     27|	yy_push_state(ST_IN_SCRIPTING);
  ------------------
  |  |  173|     27|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12027|     27|	yyless(1);
  ------------------
  |  |   68|     27|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     27|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     27|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     27|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     27|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     27|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     27|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 27]
  |  |  ------------------
  ------------------
12028|     27|	enter_nesting('{');
12029|     27|	RETURN_TOKEN(T_CURLY_OPEN);
  ------------------
  |  | 1318|     27|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     27|		token = _token; \
  |  | 1320|     27|		goto emit_token; \
  |  | 1321|     27|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12030|     27|}
12031|      0|#line 12032 "Zend/zend_language_scanner.c"
12032|     23|yy1034:
12033|     23|		YYDEBUG(1034, *YYCURSOR);
12034|     23|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     23|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     23|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     23|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12035|     23|		if (yych == '>') goto yy1039;
  ------------------
  |  Branch (12035:7): [True: 18, False: 5]
  ------------------
12036|     48|yy1035:
12037|     48|		YYDEBUG(1035, *YYCURSOR);
12038|     48|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|     48|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12039|     48|		goto yy1029;
12040|     55|yy1036:
12041|     55|		YYDEBUG(1036, *YYCURSOR);
12042|     55|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     55|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     55|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     55|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12043|     55|		if (yych == '-') goto yy1040;
  ------------------
  |  Branch (12043:7): [True: 39, False: 16]
  ------------------
12044|     16|		goto yy1035;
12045|     42|yy1037:
12046|     42|		YYDEBUG(1037, *YYCURSOR);
12047|     42|		++YYCURSOR;
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12048|     42|		YYDEBUG(1038, *YYCURSOR);
12049|     42|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     42|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12050|     42|#line 2410 "Zend/zend_language_scanner.l"
12051|     42|		{
12052|     42|	yyless(yyleng - 1);
  ------------------
  |  |   68|     42|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     42|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     42|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     42|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     42|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     42|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     42|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 42]
  |  |  ------------------
  ------------------
12053|     42|	yy_push_state(ST_VAR_OFFSET);
  ------------------
  |  |  173|     42|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12054|     42|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     42|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     42|		token = _token; \
  |  | 1330|     42|		offset = _offset; \
  |  | 1331|     42|		goto emit_token_with_str; \
  |  | 1332|     42|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12055|     42|}
12056|      0|#line 12057 "Zend/zend_language_scanner.c"
12057|     18|yy1039:
12058|     18|		YYDEBUG(1039, *YYCURSOR);
12059|     18|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12060|     18|		if (yych <= '_') {
  ------------------
  |  Branch (12060:7): [True: 4, False: 14]
  ------------------
12061|      4|			if (yych <= '@') goto yy1035;
  ------------------
  |  Branch (12061:8): [True: 0, False: 4]
  ------------------
12062|      4|			if (yych <= 'Z') goto yy1041;
  ------------------
  |  Branch (12062:8): [True: 1, False: 3]
  ------------------
12063|      3|			if (yych <= '^') goto yy1035;
  ------------------
  |  Branch (12063:8): [True: 3, False: 0]
  ------------------
12064|      0|			goto yy1041;
12065|     14|		} else {
12066|     14|			if (yych <= '`') goto yy1035;
  ------------------
  |  Branch (12066:8): [True: 0, False: 14]
  ------------------
12067|     14|			if (yych <= 'z') goto yy1041;
  ------------------
  |  Branch (12067:8): [True: 13, False: 1]
  ------------------
12068|      1|			if (yych <= 0x7F) goto yy1035;
  ------------------
  |  Branch (12068:8): [True: 0, False: 1]
  ------------------
12069|      1|			goto yy1041;
12070|      1|		}
12071|     39|yy1040:
12072|     39|		YYDEBUG(1040, *YYCURSOR);
12073|     39|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     39|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     39|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     39|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12074|     39|		if (yych == '>') goto yy1043;
  ------------------
  |  Branch (12074:7): [True: 22, False: 17]
  ------------------
12075|     17|		goto yy1035;
12076|     17|yy1041:
12077|     15|		YYDEBUG(1041, *YYCURSOR);
12078|     15|		++YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12079|     15|		YYDEBUG(1042, *YYCURSOR);
12080|     15|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     15|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12081|     15|#line 2396 "Zend/zend_language_scanner.l"
12082|     15|		{
12083|     15|	yyless(yyleng - 3);
  ------------------
  |  |   68|     15|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     15|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     15|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     15|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 15]
  |  |  ------------------
  ------------------
12084|     15|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|     15|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12085|     15|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     15|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     15|		token = _token; \
  |  | 1330|     15|		offset = _offset; \
  |  | 1331|     15|		goto emit_token_with_str; \
  |  | 1332|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12086|     15|}
12087|      0|#line 12088 "Zend/zend_language_scanner.c"
12088|     22|yy1043:
12089|     22|		YYDEBUG(1043, *YYCURSOR);
12090|     22|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12091|     22|		if (yych <= '_') {
  ------------------
  |  Branch (12091:7): [True: 5, False: 17]
  ------------------
12092|      5|			if (yych <= '@') goto yy1035;
  ------------------
  |  Branch (12092:8): [True: 2, False: 3]
  ------------------
12093|      3|			if (yych <= 'Z') goto yy1044;
  ------------------
  |  Branch (12093:8): [True: 0, False: 3]
  ------------------
12094|      3|			if (yych <= '^') goto yy1035;
  ------------------
  |  Branch (12094:8): [True: 0, False: 3]
  ------------------
12095|     17|		} else {
12096|     17|			if (yych <= '`') goto yy1035;
  ------------------
  |  Branch (12096:8): [True: 2, False: 15]
  ------------------
12097|     15|			if (yych <= 'z') goto yy1044;
  ------------------
  |  Branch (12097:8): [True: 2, False: 13]
  ------------------
12098|     13|			if (yych <= 0x7F) goto yy1035;
  ------------------
  |  Branch (12098:8): [True: 3, False: 10]
  ------------------
12099|     13|		}
12100|     15|yy1044:
12101|     15|		YYDEBUG(1044, *YYCURSOR);
12102|     15|		++YYCURSOR;
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12103|     15|		YYDEBUG(1045, *YYCURSOR);
12104|     15|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     15|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12105|     15|#line 2402 "Zend/zend_language_scanner.l"
12106|     15|		{
12107|     15|	yyless(yyleng - 4);
  ------------------
  |  |   68|     15|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     15|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     15|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     15|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 15]
  |  |  ------------------
  ------------------
12108|     15|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|     15|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12109|     15|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     15|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     15|		token = _token; \
  |  | 1330|     15|		offset = _offset; \
  |  | 1331|     15|		goto emit_token_with_str; \
  |  | 1332|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12110|     15|}
12111|     15|#line 12112 "Zend/zend_language_scanner.c"
12112|     15|	}
12113|       |/* *********************************** */
12114|  25.7k|yyc_ST_HEREDOC:
12115|  25.7k|	{
12116|  25.7k|		static const unsigned char yybm[] = {
12117|  25.7k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12118|  25.7k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12119|  25.7k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12120|  25.7k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12121|  25.7k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12122|  25.7k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12123|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12124|  25.7k|			128, 128,   0,   0,   0,   0,   0,   0, 
12125|  25.7k|			  0, 128, 128, 128, 128, 128, 128, 128, 
12126|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12127|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12128|  25.7k|			128, 128, 128,   0,   0,   0,   0, 128, 
12129|  25.7k|			  0, 128, 128, 128, 128, 128, 128, 128, 
12130|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12131|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12132|  25.7k|			128, 128, 128,   0,   0,   0,   0,   0, 
12133|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12134|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12135|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12136|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12137|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12138|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12139|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12140|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12141|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12142|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12143|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12144|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12145|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12146|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12147|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12148|  25.7k|			128, 128, 128, 128, 128, 128, 128, 128, 
12149|  25.7k|		};
12150|  25.7k|		YYDEBUG(1046, *YYCURSOR);
12151|  25.7k|		YYFILL(2);
  ------------------
  |  |   53|  25.7k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  25.7k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  25.7k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  25.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  25.7k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  25.7k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  25.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  25.7k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 25.7k]
  |  |  ------------------
  ------------------
12152|  25.7k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  25.7k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  25.7k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  25.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12153|  25.7k|		if (yych == '$') goto yy1050;
  ------------------
  |  Branch (12153:7): [True: 19.3k, False: 6.34k]
  ------------------
12154|  6.34k|		if (yych == '{') goto yy1051;
  ------------------
  |  Branch (12154:7): [True: 606, False: 5.73k]
  ------------------
12155|  5.73k|		YYDEBUG(1048, *YYCURSOR);
12156|  5.73k|		++YYCURSOR;
  ------------------
  |  |   54|  5.73k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.73k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.73k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12157|  7.33k|yy1049:
12158|  7.33k|		YYDEBUG(1049, *YYCURSOR);
12159|  7.33k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  7.33k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  7.33k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.33k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  7.33k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.33k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.33k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  7.33k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.33k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12160|  7.33k|#line 2964 "Zend/zend_language_scanner.l"
12161|  7.33k|		{
12162|  7.33k|	zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|  7.33k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.33k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12163|  7.33k|	int newline = 0, indentation = 0, spacing = 0;
12164|       |
12165|  7.33k|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|  7.33k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.33k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.33k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|  7.33k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  7.33k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.33k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12165:6): [True: 430, False: 6.90k]
  ------------------
12166|    430|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|    430|#define RETURN_END_TOKEN do { \
  |  | 1356|    430|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|    309|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    309|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 45, False: 264]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 309, False: 121]
  |  |  ------------------
  |  | 1357|     45|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|     45|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|     45|		token = _token; \
  |  |  |  | 1320|     45|		goto emit_token; \
  |  |  |  | 1321|     45|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|    385|		} else { \
  |  | 1359|    385|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|    385|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|    385|		token = _token; \
  |  |  |  | 1320|    385|		goto emit_token; \
  |  |  |  | 1321|    385|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|    385|		} \
  |  | 1361|    430|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12167|    430|	}
12168|       |
12169|  6.90k|	YYCURSOR--;
  ------------------
  |  |   54|  6.90k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.90k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.90k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12170|       |
12171|  90.1k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  90.1k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  90.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  90.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  90.1k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  90.1k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  90.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12171:9): [True: 89.8k, False: 294]
  ------------------
12172|  89.8k|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|  89.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  89.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  89.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12173|  1.00k|			case '\r':
  ------------------
  |  Branch (12173:4): [True: 1.00k, False: 88.8k]
  ------------------
12174|  1.00k|				if (*YYCURSOR == '\n') {
  ------------------
  |  |   54|  1.00k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12174:9): [True: 35, False: 974]
  ------------------
12175|     35|					YYCURSOR++;
  ------------------
  |  |   54|     35|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12176|     35|				}
12177|  1.00k|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|  1.00k|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
12178|  8.46k|			case '\n':
  ------------------
  |  Branch (12178:4): [True: 7.45k, False: 82.4k]
  ------------------
12179|  8.46k|				indentation = spacing = 0;
12180|       |
12181|  9.93k|				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|  9.93k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.93k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.93k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   55|  9.93k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  9.93k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  19.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|  9.86k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.86k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.86k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|  8.48k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  8.48k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.48k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12181:12): [True: 9.86k, False: 71]
  |  Branch (12181:35): [True: 1.37k, False: 8.48k]
  |  Branch (12181:55): [True: 97, False: 8.39k]
  ------------------
12182|  1.46k|					if (*YYCURSOR == '\t') {
  ------------------
  |  |   54|  1.46k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12182:10): [True: 97, False: 1.37k]
  ------------------
12183|     97|						spacing |= HEREDOC_USING_TABS;
  ------------------
  |  | 1155|     97|#define HEREDOC_USING_TABS 2
  ------------------
12184|  1.37k|					} else {
12185|  1.37k|						spacing |= HEREDOC_USING_SPACES;
  ------------------
  |  | 1154|  1.37k|#define HEREDOC_USING_SPACES 1
  ------------------
12186|  1.37k|					}
12187|  1.46k|					++YYCURSOR;
  ------------------
  |  |   54|  1.46k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12188|  1.46k|					++indentation;
12189|  1.46k|				}
12190|       |
12191|  8.46k|				if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   54|  8.46k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  8.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   55|  8.46k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  8.46k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.46k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12191:9): [True: 71, False: 8.39k]
  ------------------
12192|     71|					yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     71|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     71|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     71|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     71|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     71|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     71|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     71|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     71|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12193|     71|					HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|     71|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|     71|do {																			\
  |  |   97|     71|	char *p = (s), *boundary = p+(l);											\
  |  |   98|     71|																				\
  |  |   99|  1.56k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 1.49k, False: 71]
  |  |  ------------------
  |  |  100|  1.49k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 209, False: 1.28k]
  |  |  |  Branch (100:22): [True: 25, False: 1.26k]
  |  |  |  Branch (100:36): [True: 12, False: 13]
  |  |  ------------------
  |  |  101|    221|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|    221|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|    221|		}																		\
  |  |  103|  1.49k|		p++;																	\
  |  |  104|  1.49k|	}																			\
  |  |  105|     71|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 71]
  |  |  ------------------
  ------------------
12194|     71|					ZVAL_NULL(zendlval);
  ------------------
  |  | 1059|     71|#define ZVAL_NULL(z) do {				\
  |  | 1060|     71|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     71|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     71|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     71|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     71|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 71]
  |  |  ------------------
  ------------------
12195|     71|					RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|     71|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     71|		token = _token; \
  |  | 1325|     71|		goto emit_token_with_val; \
  |  | 1326|     71|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12196|     71|				}
12197|       |
12198|       |				/* Check for ending label on the next line */
12199|  8.39k|				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |  118|  16.7k|#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (118:29): [True: 1.64k, False: 6.74k]
  |  |  |  Branch (118:43): [True: 1.01k, False: 632]
  |  |  |  Branch (118:59): [True: 1.49k, False: 5.87k]
  |  |  |  Branch (118:73): [True: 738, False: 761]
  |  |  |  Branch (118:88): [True: 35, False: 6.60k]
  |  |  |  Branch (118:102): [True: 419, False: 6.18k]
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |   55|  2.20k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  2.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.20k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |   54|  2.20k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.20k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |   54|  2.18k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.18k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.18k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12199:38): [True: 2.18k, False: 23]
  |  Branch (12199:84): [True: 569, False: 1.61k]
  ------------------
12200|    569|					if (IS_LABEL_SUCCESSOR(YYCURSOR[heredoc_label->length])) {
  ------------------
  |  |  119|    569|#define IS_LABEL_SUCCESSOR(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || ((c) >= '0' && (c) <= '9') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (119:33): [True: 59, False: 510]
  |  |  |  Branch (119:47): [True: 21, False: 38]
  |  |  |  Branch (119:63): [True: 41, False: 507]
  |  |  |  Branch (119:77): [True: 3, False: 38]
  |  |  |  Branch (119:93): [True: 153, False: 392]
  |  |  |  Branch (119:107): [True: 31, False: 122]
  |  |  |  Branch (119:122): [True: 0, False: 514]
  |  |  |  Branch (119:136): [True: 17, False: 497]
  |  |  ------------------
  ------------------
12201|     72|						continue;
12202|     72|					}
12203|       |
12204|    497|					if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) {
  ------------------
  |  | 1154|    497|#define HEREDOC_USING_SPACES 1
  ------------------
              					if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) {
  ------------------
  |  | 1155|    497|#define HEREDOC_USING_TABS 2
  ------------------
  |  Branch (12204:10): [True: 3, False: 494]
  ------------------
12205|      3|						zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0);
12206|      3|						if (PARSER_MODE()) {
  ------------------
  |  | 1316|      3|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12207|      1|							RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12208|      1|						}
12209|      3|					}
12210|       |
12211|       |					/* newline before label will be subtracted from returned text, but
12212|       |					 * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
12213|    496|					if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') {
  ------------------
  |  |   54|    496|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    496|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    496|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') {
  ------------------
  |  |   54|      6|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      6|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      6|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12213:10): [True: 6, False: 490]
  |  Branch (12213:48): [True: 0, False: 6]
  ------------------
12214|      0|						newline = 2; /* Windows newline */
12215|    496|					} else {
12216|    496|						newline = 1;
12217|    496|					}
12218|       |
12219|    496|					CG(increment_lineno) = 1; /* For newline before label */
  ------------------
  |  |   35|    496|# define CG(v) (compiler_globals.v)
  ------------------
12220|       |
12221|    496|					if (SCNG(heredoc_scan_ahead)) {
  ------------------
  |  |   87|    496|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    496|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 270, False: 226]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12222|    270|						SCNG(heredoc_indentation) = indentation;
  ------------------
  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12223|    270|						SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES);
  ------------------
  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              						SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES);
  ------------------
  |  | 1154|    270|#define HEREDOC_USING_SPACES 1
  ------------------
12224|    270|					} else {
12225|    226|						YYCURSOR -= indentation;
  ------------------
  |  |   54|    226|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    226|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    226|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12226|    226|					}
12227|       |
12228|    496|					BEGIN(ST_END_HEREDOC);
  ------------------
  |  |   64|    496|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|    496|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    496|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    496|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12229|       |
12230|    496|					goto heredoc_scan_done;
12231|    497|				}
12232|  7.82k|				continue;
12233|  8.31k|			case '$':
  ------------------
  |  Branch (12233:4): [True: 8.31k, False: 81.5k]
  ------------------
12234|  8.31k|				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |  118|  16.6k|#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (118:29): [True: 5.69k, False: 2.61k]
  |  |  |  Branch (118:43): [True: 807, False: 4.89k]
  |  |  |  Branch (118:59): [True: 5.13k, False: 2.37k]
  |  |  |  Branch (118:73): [True: 127, False: 5.00k]
  |  |  |  Branch (118:88): [True: 8, False: 7.37k]
  |  |  |  Branch (118:102): [True: 292, False: 7.08k]
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
  ------------------
  |  |   54|  7.08k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  7.08k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.08k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12234:38): [True: 4.52k, False: 2.55k]
  ------------------
12235|  5.75k|					break;
12236|  5.75k|				}
12237|  2.55k|				continue;
12238|  2.55k|			case '{':
  ------------------
  |  Branch (12238:4): [True: 1.93k, False: 87.9k]
  ------------------
12239|  1.93k|				if (*YYCURSOR == '$') {
  ------------------
  |  |   54|  1.93k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.93k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.93k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12239:9): [True: 289, False: 1.64k]
  ------------------
12240|    289|					break;
12241|    289|				}
12242|  1.64k|				continue;
12243|  1.64k|			case '\\':
  ------------------
  |  Branch (12243:4): [True: 504, False: 89.3k]
  ------------------
12244|    504|				if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
  ------------------
  |  |   54|    504|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    504|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    504|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
  ------------------
  |  |   55|    504|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    504|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
  ------------------
  |  |   54|    491|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    491|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    491|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
  ------------------
  |  |   54|    471|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    471|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    471|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12244:9): [True: 491, False: 13]
  |  Branch (12244:31): [True: 471, False: 20]
  |  Branch (12244:52): [True: 466, False: 5]
  ------------------
12245|    466|					YYCURSOR++;
  ------------------
  |  |   54|    466|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    466|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    466|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12246|    466|				}
12247|    504|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|    504|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
12248|  71.1k|			default:
  ------------------
  |  Branch (12248:4): [True: 70.6k, False: 19.2k]
  ------------------
12249|  71.1k|				continue;
12250|  89.8k|		}
12251|       |
12252|  6.04k|		YYCURSOR--;
  ------------------
  |  |   54|  6.04k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.04k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.04k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12253|  6.04k|		break;
12254|  89.8k|	}
12255|       |
12256|  6.83k|heredoc_scan_done:
12257|       |
12258|  6.83k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  6.83k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  6.83k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  6.83k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.83k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  6.83k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  6.83k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12259|  6.83k|	ZVAL_STRINGL(zendlval, yytext, yyleng - newline);
  ------------------
  |  |  963|  6.83k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|  6.83k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|  6.83k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|  6.83k|		zval *__z = (z);						\
  |  |  |  | 1107|  6.83k|		zend_string *__s = (s);					\
  |  |  |  | 1108|  6.83k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  6.83k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  6.83k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|  6.83k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  6.83k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  6.83k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|  6.83k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  6.83k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  6.83k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|  6.83k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|  6.83k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 6.83k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|  6.83k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 6.83k]
  |  |  ------------------
  ------------------
12260|       |
12261|  6.83k|	if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) {
  ------------------
  |  |   87|  6.83k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  13.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              	if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) {
  ------------------
  |  |   45|  8.86k|# define EG(v) (executor_globals.v)
  ------------------
              	if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) {
  ------------------
  |  | 1316|  2.02k|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|  2.02k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2.02k, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12261:6): [True: 2.02k, False: 4.81k]
  |  Branch (12261:35): [True: 2.02k, False: 1]
  ------------------
12262|  2.02k|		bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r';
  ------------------
  |  |   66|  2.02k|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|  2.02k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.02k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r';
  ------------------
  |  |   66|    622|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|    622|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    622|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12262:27): [True: 1.40k, False: 622]
  |  Branch (12262:52): [True: 35, False: 587]
  ------------------
12263|  2.02k|		zend_string *copy = Z_STR_P(zendlval);
  ------------------
  |  |  982|  2.02k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  2.02k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12264|       |
12265|  2.02k|		if (!strip_multiline_string_indentation(
  ------------------
  |  Branch (12265:7): [True: 12, False: 2.01k]
  ------------------
12266|  2.02k|				zendlval, heredoc_label->indentation, heredoc_label->indentation_uses_spaces,
12267|  2.02k|				newline_at_start, newline != 0)) {
12268|     12|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|     12|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     12|		token = _token; \
  |  | 1320|     12|		goto emit_token; \
  |  | 1321|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12269|     12|		}
12270|       |
12271|  2.01k|		if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS)) {
  ------------------
  |  |  457|  2.01k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2.00k]
  |  |  ------------------
  ------------------
12272|      1|			zend_string_efree(copy);
12273|      1|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12274|      1|		}
12275|       |
12276|  2.00k|		zend_string_efree(copy);
12277|  4.81k|	} else {
12278|  4.81k|		HANDLE_NEWLINES(yytext, yyleng - newline);
  ------------------
  |  |   95|  4.81k|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|  4.81k|do {																			\
  |  |   97|  4.81k|	char *p = (s), *boundary = p+(l);											\
  |  |   98|  4.81k|																				\
  |  |   99|  58.6k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 53.8k, False: 4.81k]
  |  |  ------------------
  |  |  100|  53.8k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 4.66k, False: 49.1k]
  |  |  |  Branch (100:22): [True: 691, False: 48.4k]
  |  |  |  Branch (100:36): [True: 676, False: 15]
  |  |  ------------------
  |  |  101|  5.34k|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|  5.34k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|  5.34k|		}																		\
  |  |  103|  53.8k|		p++;																	\
  |  |  104|  53.8k|	}																			\
  |  |  105|  4.81k|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 4.81k]
  |  |  ------------------
  ------------------
12279|  4.81k|	}
12280|       |
12281|  6.82k|	RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|  6.82k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  6.82k|		token = _token; \
  |  | 1325|  6.82k|		goto emit_token_with_val; \
  |  | 1326|  6.82k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12282|  6.82k|}
12283|      0|#line 12284 "Zend/zend_language_scanner.c"
12284|  19.3k|yy1050:
12285|  19.3k|		YYDEBUG(1050, *YYCURSOR);
12286|  19.3k|		yych = *++YYCURSOR;
  ------------------
  |  |   54|  19.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  19.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  19.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12287|  19.3k|		if (yych <= '_') {
  ------------------
  |  Branch (12287:7): [True: 1.48k, False: 17.9k]
  ------------------
12288|  1.48k|			if (yych <= '@') goto yy1049;
  ------------------
  |  Branch (12288:8): [True: 1.23k, False: 250]
  ------------------
12289|    250|			if (yych <= 'Z') goto yy1052;
  ------------------
  |  Branch (12289:8): [True: 196, False: 54]
  ------------------
12290|     54|			if (yych <= '^') goto yy1049;
  ------------------
  |  Branch (12290:8): [True: 34, False: 20]
  ------------------
12291|     20|			goto yy1052;
12292|  17.9k|		} else {
12293|  17.9k|			if (yych <= 'z') {
  ------------------
  |  Branch (12293:8): [True: 1.12k, False: 16.7k]
  ------------------
12294|  1.12k|				if (yych <= '`') goto yy1049;
  ------------------
  |  Branch (12294:9): [True: 15, False: 1.11k]
  ------------------
12295|  1.11k|				goto yy1052;
12296|  16.7k|			} else {
12297|  16.7k|				if (yych <= '{') goto yy1055;
  ------------------
  |  Branch (12297:9): [True: 15.9k, False: 775]
  ------------------
12298|    775|				if (yych <= 0x7F) goto yy1049;
  ------------------
  |  Branch (12298:9): [True: 58, False: 717]
  ------------------
12299|    717|				goto yy1052;
12300|    775|			}
12301|  17.9k|		}
12302|    606|yy1051:
12303|    606|		YYDEBUG(1051, *YYCURSOR);
12304|    606|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    606|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    606|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    606|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12305|    606|		if (yych == '$') goto yy1057;
  ------------------
  |  Branch (12305:7): [True: 349, False: 257]
  ------------------
12306|    257|		goto yy1049;
12307|  6.42k|yy1052:
12308|  6.42k|		YYDEBUG(1052, *YYCURSOR);
12309|  6.42k|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|  6.42k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|  6.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12310|  6.42k|		YYFILL(4);
  ------------------
  |  |   53|  6.42k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  6.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  6.42k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  6.42k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 6.42k]
  |  |  ------------------
  ------------------
12311|  6.42k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  6.42k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  6.42k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.42k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12312|  6.42k|		YYDEBUG(1053, *YYCURSOR);
12313|  6.42k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (12313:7): [True: 4.37k, False: 2.04k]
  ------------------
12314|  4.37k|			goto yy1052;
12315|  4.37k|		}
12316|  2.04k|		if (yych <= '>') {
  ------------------
  |  Branch (12316:7): [True: 1.54k, False: 498]
  ------------------
12317|  1.54k|			if (yych == '-') goto yy1059;
  ------------------
  |  Branch (12317:8): [True: 48, False: 1.50k]
  ------------------
12318|  1.54k|		} else {
12319|    498|			if (yych <= '?') goto yy1061;
  ------------------
  |  Branch (12319:8): [True: 65, False: 433]
  ------------------
12320|    433|			if (yych <= '@') goto yy1054;
  ------------------
  |  Branch (12320:8): [True: 7, False: 426]
  ------------------
12321|    426|			if (yych <= '[') goto yy1062;
  ------------------
  |  Branch (12321:8): [True: 230, False: 196]
  ------------------
12322|    426|		}
12323|  1.78k|yy1054:
12324|  1.78k|		YYDEBUG(1054, *YYCURSOR);
12325|  1.78k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  1.78k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  1.78k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.78k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  1.78k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.78k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.78k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  1.78k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  1.78k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12326|  1.78k|#line 2416 "Zend/zend_language_scanner.l"
12327|  1.78k|		{
12328|  1.78k|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|  1.78k|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|  1.78k|		token = _token; \
  |  | 1330|  1.78k|		offset = _offset; \
  |  | 1331|  1.78k|		goto emit_token_with_str; \
  |  | 1332|  1.78k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12329|  1.78k|}
12330|      0|#line 12331 "Zend/zend_language_scanner.c"
12331|  15.9k|yy1055:
12332|  15.9k|		YYDEBUG(1055, *YYCURSOR);
12333|  15.9k|		++YYCURSOR;
  ------------------
  |  |   54|  15.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12334|  15.9k|		YYDEBUG(1056, *YYCURSOR);
12335|  15.9k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  15.9k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  15.9k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  15.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  15.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12336|  15.9k|#line 1980 "Zend/zend_language_scanner.l"
12337|  15.9k|		{
12338|  15.9k|	yy_push_state(ST_LOOKING_FOR_VARNAME);
  ------------------
  |  |  173|  15.9k|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12339|  15.9k|	enter_nesting('{');
12340|  15.9k|	RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
  ------------------
  |  | 1318|  15.9k|#define RETURN_TOKEN(_token) do { \
  |  | 1319|  15.9k|		token = _token; \
  |  | 1320|  15.9k|		goto emit_token; \
  |  | 1321|  15.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12341|  15.9k|}
12342|      0|#line 12343 "Zend/zend_language_scanner.c"
12343|    349|yy1057:
12344|    349|		YYDEBUG(1057, *YYCURSOR);
12345|    349|		++YYCURSOR;
  ------------------
  |  |   54|    349|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12346|    349|		YYDEBUG(1058, *YYCURSOR);
12347|    349|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    349|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    349|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12348|    349|#line 2845 "Zend/zend_language_scanner.l"
12349|    349|		{
12350|    349|	yy_push_state(ST_IN_SCRIPTING);
  ------------------
  |  |  173|    349|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12351|    349|	yyless(1);
  ------------------
  |  |   68|    349|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    349|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    349|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    349|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    349|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    349|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    349|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 349]
  |  |  ------------------
  ------------------
12352|    349|	enter_nesting('{');
12353|    349|	RETURN_TOKEN(T_CURLY_OPEN);
  ------------------
  |  | 1318|    349|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    349|		token = _token; \
  |  | 1320|    349|		goto emit_token; \
  |  | 1321|    349|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12354|    349|}
12355|      0|#line 12356 "Zend/zend_language_scanner.c"
12356|     48|yy1059:
12357|     48|		YYDEBUG(1059, *YYCURSOR);
12358|     48|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     48|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     48|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     48|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12359|     48|		if (yych == '>') goto yy1064;
  ------------------
  |  Branch (12359:7): [True: 37, False: 11]
  ------------------
12360|     86|yy1060:
12361|     86|		YYDEBUG(1060, *YYCURSOR);
12362|     86|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|     86|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|     86|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     86|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12363|     86|		goto yy1054;
12364|     65|yy1061:
12365|     65|		YYDEBUG(1061, *YYCURSOR);
12366|     65|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     65|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     65|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12367|     65|		if (yych == '-') goto yy1065;
  ------------------
  |  Branch (12367:7): [True: 32, False: 33]
  ------------------
12368|     33|		goto yy1060;
12369|    230|yy1062:
12370|    230|		YYDEBUG(1062, *YYCURSOR);
12371|    230|		++YYCURSOR;
  ------------------
  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12372|    230|		YYDEBUG(1063, *YYCURSOR);
12373|    230|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    230|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12374|    230|#line 2410 "Zend/zend_language_scanner.l"
12375|    230|		{
12376|    230|	yyless(yyleng - 1);
  ------------------
  |  |   68|    230|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    230|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    230|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    230|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    230|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    230|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    230|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 230]
  |  |  ------------------
  ------------------
12377|    230|	yy_push_state(ST_VAR_OFFSET);
  ------------------
  |  |  173|    230|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12378|    230|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|    230|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|    230|		token = _token; \
  |  | 1330|    230|		offset = _offset; \
  |  | 1331|    230|		goto emit_token_with_str; \
  |  | 1332|    230|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12379|    230|}
12380|      0|#line 12381 "Zend/zend_language_scanner.c"
12381|     37|yy1064:
12382|     37|		YYDEBUG(1064, *YYCURSOR);
12383|     37|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12384|     37|		if (yych <= '_') {
  ------------------
  |  Branch (12384:7): [True: 28, False: 9]
  ------------------
12385|     28|			if (yych <= '@') goto yy1060;
  ------------------
  |  Branch (12385:8): [True: 9, False: 19]
  ------------------
12386|     19|			if (yych <= 'Z') goto yy1066;
  ------------------
  |  Branch (12386:8): [True: 3, False: 16]
  ------------------
12387|     16|			if (yych <= '^') goto yy1060;
  ------------------
  |  Branch (12387:8): [True: 14, False: 2]
  ------------------
12388|      2|			goto yy1066;
12389|     16|		} else {
12390|      9|			if (yych <= '`') goto yy1060;
  ------------------
  |  Branch (12390:8): [True: 0, False: 9]
  ------------------
12391|      9|			if (yych <= 'z') goto yy1066;
  ------------------
  |  Branch (12391:8): [True: 4, False: 5]
  ------------------
12392|      5|			if (yych <= 0x7F) goto yy1060;
  ------------------
  |  Branch (12392:8): [True: 5, False: 0]
  ------------------
12393|      0|			goto yy1066;
12394|      5|		}
12395|     32|yy1065:
12396|     32|		YYDEBUG(1065, *YYCURSOR);
12397|     32|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     32|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     32|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     32|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12398|     32|		if (yych == '>') goto yy1068;
  ------------------
  |  Branch (12398:7): [True: 20, False: 12]
  ------------------
12399|     12|		goto yy1060;
12400|     12|yy1066:
12401|      9|		YYDEBUG(1066, *YYCURSOR);
12402|      9|		++YYCURSOR;
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12403|      9|		YYDEBUG(1067, *YYCURSOR);
12404|      9|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12405|      9|#line 2396 "Zend/zend_language_scanner.l"
12406|      9|		{
12407|      9|	yyless(yyleng - 3);
  ------------------
  |  |   68|      9|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      9|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      9|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      9|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      9|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      9|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      9|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 9]
  |  |  ------------------
  ------------------
12408|      9|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|      9|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12409|      9|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|      9|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|      9|		token = _token; \
  |  | 1330|      9|		offset = _offset; \
  |  | 1331|      9|		goto emit_token_with_str; \
  |  | 1332|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12410|      9|}
12411|      0|#line 12412 "Zend/zend_language_scanner.c"
12412|     20|yy1068:
12413|     20|		YYDEBUG(1068, *YYCURSOR);
12414|     20|		yych = *++YYCURSOR;
  ------------------
  |  |   54|     20|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12415|     20|		if (yych <= '_') {
  ------------------
  |  Branch (12415:7): [True: 13, False: 7]
  ------------------
12416|     13|			if (yych <= '@') goto yy1060;
  ------------------
  |  Branch (12416:8): [True: 2, False: 11]
  ------------------
12417|     11|			if (yych <= 'Z') goto yy1069;
  ------------------
  |  Branch (12417:8): [True: 11, False: 0]
  ------------------
12418|      0|			if (yych <= '^') goto yy1060;
  ------------------
  |  Branch (12418:8): [True: 0, False: 0]
  ------------------
12419|      7|		} else {
12420|      7|			if (yych <= '`') goto yy1060;
  ------------------
  |  Branch (12420:8): [True: 0, False: 7]
  ------------------
12421|      7|			if (yych <= 'z') goto yy1069;
  ------------------
  |  Branch (12421:8): [True: 7, False: 0]
  ------------------
12422|      0|			if (yych <= 0x7F) goto yy1060;
  ------------------
  |  Branch (12422:8): [True: 0, False: 0]
  ------------------
12423|      0|		}
12424|     18|yy1069:
12425|     18|		YYDEBUG(1069, *YYCURSOR);
12426|     18|		++YYCURSOR;
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12427|     18|		YYDEBUG(1070, *YYCURSOR);
12428|     18|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     18|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12429|     18|#line 2402 "Zend/zend_language_scanner.l"
12430|     18|		{
12431|     18|	yyless(yyleng - 4);
  ------------------
  |  |   68|     18|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     18|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     18|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     18|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     18|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     18|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     18|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 18]
  |  |  ------------------
  ------------------
12432|     18|	yy_push_state(ST_LOOKING_FOR_PROPERTY);
  ------------------
  |  |  173|     18|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12433|     18|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     18|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     18|		token = _token; \
  |  | 1330|     18|		offset = _offset; \
  |  | 1331|     18|		goto emit_token_with_str; \
  |  | 1332|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12434|     18|}
12435|     18|#line 12436 "Zend/zend_language_scanner.c"
12436|     18|	}
12437|       |/* *********************************** */
12438|  16.3k|yyc_ST_LOOKING_FOR_VARNAME:
12439|  16.3k|	{
12440|  16.3k|		static const unsigned char yybm[] = {
12441|  16.3k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12442|  16.3k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12443|  16.3k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12444|  16.3k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12445|  16.3k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12446|  16.3k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12447|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12448|  16.3k|			128, 128,   0,   0,   0,   0,   0,   0, 
12449|  16.3k|			  0, 128, 128, 128, 128, 128, 128, 128, 
12450|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12451|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12452|  16.3k|			128, 128, 128,   0,   0,   0,   0, 128, 
12453|  16.3k|			  0, 128, 128, 128, 128, 128, 128, 128, 
12454|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12455|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12456|  16.3k|			128, 128, 128,   0,   0,   0,   0,   0, 
12457|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12458|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12459|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12460|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12461|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12462|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12463|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12464|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12465|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12466|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12467|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12468|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12469|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12470|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12471|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12472|  16.3k|			128, 128, 128, 128, 128, 128, 128, 128, 
12473|  16.3k|		};
12474|  16.3k|		YYDEBUG(1071, *YYCURSOR);
12475|  16.3k|		YYFILL(2);
  ------------------
  |  |   53|  16.3k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  16.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  16.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  16.3k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 16.3k]
  |  |  ------------------
  ------------------
12476|  16.3k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  16.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12477|  16.3k|		if (yych <= '_') {
  ------------------
  |  Branch (12477:7): [True: 15.0k, False: 1.26k]
  ------------------
12478|  15.0k|			if (yych <= '@') goto yy1073;
  ------------------
  |  Branch (12478:8): [True: 14.7k, False: 361]
  ------------------
12479|    361|			if (yych <= 'Z') goto yy1075;
  ------------------
  |  Branch (12479:8): [True: 335, False: 26]
  ------------------
12480|     26|			if (yych >= '_') goto yy1075;
  ------------------
  |  Branch (12480:8): [True: 13, False: 13]
  ------------------
12481|  1.26k|		} else {
12482|  1.26k|			if (yych <= '`') goto yy1073;
  ------------------
  |  Branch (12482:8): [True: 46, False: 1.21k]
  ------------------
12483|  1.21k|			if (yych <= 'z') goto yy1075;
  ------------------
  |  Branch (12483:8): [True: 658, False: 561]
  ------------------
12484|    561|			if (yych >= 0x80) goto yy1075;
  ------------------
  |  Branch (12484:8): [True: 505, False: 56]
  ------------------
12485|    561|		}
12486|  14.8k|yy1073:
12487|  14.8k|		YYDEBUG(1073, *YYCURSOR);
12488|  14.8k|		++YYCURSOR;
  ------------------
  |  |   54|  14.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  14.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  14.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12489|  16.3k|yy1074:
12490|  16.3k|		YYDEBUG(1074, *YYCURSOR);
12491|  16.3k|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  16.3k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  16.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12492|  16.3k|#line 2003 "Zend/zend_language_scanner.l"
12493|  16.3k|		{
12494|  16.3k|	yyless(0);
  ------------------
  |  |   68|  16.3k|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|  16.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|  16.3k|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|  16.3k|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|  16.3k|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  16.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  16.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 16.3k]
  |  |  ------------------
  ------------------
12495|  16.3k|	yy_pop_state();
12496|  16.3k|	yy_push_state(ST_IN_SCRIPTING);
  ------------------
  |  |  173|  16.3k|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12497|  16.3k|	goto restart;
12498|  14.8k|}
12499|      0|#line 12500 "Zend/zend_language_scanner.c"
12500|  1.51k|yy1075:
12501|  1.51k|		YYDEBUG(1075, *YYCURSOR);
12502|  1.51k|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  1.51k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  1.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  1.51k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12503|  1.51k|		if (yych <= '_') {
  ------------------
  |  Branch (12503:7): [True: 693, False: 818]
  ------------------
12504|    693|			if (yych <= '@') {
  ------------------
  |  Branch (12504:8): [True: 534, False: 159]
  ------------------
12505|    534|				if (yych <= '/') goto yy1074;
  ------------------
  |  Branch (12505:9): [True: 261, False: 273]
  ------------------
12506|    273|				if (yych <= '9') goto yy1077;
  ------------------
  |  Branch (12506:9): [True: 16, False: 257]
  ------------------
12507|    257|				goto yy1074;
12508|    273|			} else {
12509|    159|				if (yych <= '[') goto yy1077;
  ------------------
  |  Branch (12509:9): [True: 131, False: 28]
  ------------------
12510|     28|				if (yych <= '^') goto yy1074;
  ------------------
  |  Branch (12510:9): [True: 12, False: 16]
  ------------------
12511|     16|				goto yy1077;
12512|     28|			}
12513|    818|		} else {
12514|    818|			if (yych <= '|') {
  ------------------
  |  Branch (12514:8): [True: 486, False: 332]
  ------------------
12515|    486|				if (yych <= '`') goto yy1074;
  ------------------
  |  Branch (12515:9): [True: 9, False: 477]
  ------------------
12516|    477|				if (yych <= 'z') goto yy1077;
  ------------------
  |  Branch (12516:9): [True: 447, False: 30]
  ------------------
12517|     30|				goto yy1074;
12518|    477|			} else {
12519|    332|				if (yych <= '}') goto yy1077;
  ------------------
  |  Branch (12519:9): [True: 11, False: 321]
  ------------------
12520|    321|				if (yych <= 0x7F) goto yy1074;
  ------------------
  |  Branch (12520:9): [True: 6, False: 315]
  ------------------
12521|    315|				goto yy1077;
12522|    321|			}
12523|    818|		}
12524|  3.30k|yy1076:
12525|  3.30k|		YYDEBUG(1076, *YYCURSOR);
12526|  3.30k|		++YYCURSOR;
  ------------------
  |  |   54|  3.30k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.30k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.30k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12527|  3.30k|		YYFILL(1);
  ------------------
  |  |   53|  3.30k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  3.30k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.30k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.30k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  3.30k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  3.30k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  3.30k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  3.30k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 3.30k]
  |  |  ------------------
  ------------------
12528|  3.30k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  3.30k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.30k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.30k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12529|  4.24k|yy1077:
12530|  4.24k|		YYDEBUG(1077, *YYCURSOR);
12531|  4.24k|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (12531:7): [True: 3.30k, False: 936]
  ------------------
12532|  3.30k|			goto yy1076;
12533|  3.30k|		}
12534|    936|		if (yych <= '@') goto yy1078;
  ------------------
  |  Branch (12534:7): [True: 831, False: 105]
  ------------------
12535|    105|		if (yych <= '[') goto yy1079;
  ------------------
  |  Branch (12535:7): [True: 4, False: 101]
  ------------------
12536|    101|		if (yych == '}') goto yy1079;
  ------------------
  |  Branch (12536:7): [True: 15, False: 86]
  ------------------
12537|    917|yy1078:
12538|    917|		YYDEBUG(1078, *YYCURSOR);
12539|    917|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|    917|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    917|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    917|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|    917|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    917|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    917|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12540|    917|		goto yy1074;
12541|     19|yy1079:
12542|     19|		YYDEBUG(1079, *YYCURSOR);
12543|     19|		++YYCURSOR;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12544|     19|		YYDEBUG(1080, *YYCURSOR);
12545|     19|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     19|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12546|     19|#line 1995 "Zend/zend_language_scanner.l"
12547|     19|		{
12548|     19|	yyless(yyleng - 1);
  ------------------
  |  |   68|     19|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     19|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     19|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     19|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 19]
  |  |  ------------------
  ------------------
12549|     19|	yy_pop_state();
12550|     19|	yy_push_state(ST_IN_SCRIPTING);
  ------------------
  |  |  173|     19|#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
  ------------------
12551|     19|	RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0);
  ------------------
  |  | 1328|     19|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     19|		token = _token; \
  |  | 1330|     19|		offset = _offset; \
  |  | 1331|     19|		goto emit_token_with_str; \
  |  | 1332|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12552|     19|}
12553|     19|#line 12554 "Zend/zend_language_scanner.c"
12554|     19|	}
12555|       |/* *********************************** */
12556|  1.94k|yyc_ST_VAR_OFFSET:
12557|  1.94k|	{
12558|  1.94k|		static const unsigned char yybm[] = {
12559|  1.94k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12560|  1.94k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12561|  1.94k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12562|  1.94k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12563|  1.94k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12564|  1.94k|			  0,   0,   0,   0,   0,   0,   0,   0, 
12565|  1.94k|			248, 248, 216, 216, 216, 216, 216, 216, 
12566|  1.94k|			152, 152,   0,   0,   0,   0,   0,   0, 
12567|  1.94k|			  0, 144, 144, 144, 144, 144, 144,  16, 
12568|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12569|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12570|  1.94k|			 16,  16,  16,   0,   0,   0,   0,  16, 
12571|  1.94k|			  0, 144, 144, 144, 144, 144, 144,  16, 
12572|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12573|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12574|  1.94k|			 16,  16,  16,   0,   0,   0,   0,   0, 
12575|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12576|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12577|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12578|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12579|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12580|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12581|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12582|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12583|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12584|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12585|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12586|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12587|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12588|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12589|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12590|  1.94k|			 16,  16,  16,  16,  16,  16,  16,  16, 
12591|  1.94k|		};
12592|  1.94k|		YYDEBUG(1081, *YYCURSOR);
12593|  1.94k|		YYFILL(2);
  ------------------
  |  |   53|  1.94k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  1.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.94k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  1.94k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  1.94k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  1.94k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 1.94k]
  |  |  ------------------
  ------------------
12594|  1.94k|		yych = *YYCURSOR;
  ------------------
  |  |   54|  1.94k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  1.94k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.94k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12595|  1.94k|		if (yych <= '0') {
  ------------------
  |  Branch (12595:7): [True: 784, False: 1.16k]
  ------------------
12596|    784|			if (yych <= ' ') {
  ------------------
  |  Branch (12596:8): [True: 335, False: 449]
  ------------------
12597|    335|				if (yych <= '\f') {
  ------------------
  |  Branch (12597:9): [True: 253, False: 82]
  ------------------
12598|    253|					if (yych <= 0x08) goto yy1083;
  ------------------
  |  Branch (12598:10): [True: 201, False: 52]
  ------------------
12599|     52|					if (yych <= '\n') goto yy1085;
  ------------------
  |  Branch (12599:10): [True: 47, False: 5]
  ------------------
12600|     82|				} else {
12601|     82|					if (yych <= '\r') goto yy1085;
  ------------------
  |  Branch (12601:10): [True: 4, False: 78]
  ------------------
12602|     78|					if (yych >= ' ') goto yy1085;
  ------------------
  |  Branch (12602:10): [True: 23, False: 55]
  ------------------
12603|     78|				}
12604|    449|			} else {
12605|    449|				if (yych <= '$') {
  ------------------
  |  Branch (12605:9): [True: 194, False: 255]
  ------------------
12606|    194|					if (yych <= '"') goto yy1087;
  ------------------
  |  Branch (12606:10): [True: 42, False: 152]
  ------------------
12607|    152|					if (yych <= '#') goto yy1085;
  ------------------
  |  Branch (12607:10): [True: 3, False: 149]
  ------------------
12608|    149|					goto yy1089;
12609|    255|				} else {
12610|    255|					if (yych == '\'') goto yy1085;
  ------------------
  |  Branch (12610:10): [True: 4, False: 251]
  ------------------
12611|    251|					if (yych <= '/') goto yy1087;
  ------------------
  |  Branch (12611:10): [True: 112, False: 139]
  ------------------
12612|    139|					goto yy1090;
12613|    251|				}
12614|    449|			}
12615|  1.16k|		} else {
12616|  1.16k|			if (yych <= ']') {
  ------------------
  |  Branch (12616:8): [True: 905, False: 257]
  ------------------
12617|    905|				if (yych <= 'Z') {
  ------------------
  |  Branch (12617:9): [True: 448, False: 457]
  ------------------
12618|    448|					if (yych <= '9') goto yy1092;
  ------------------
  |  Branch (12618:10): [True: 111, False: 337]
  ------------------
12619|    337|					if (yych <= '@') goto yy1087;
  ------------------
  |  Branch (12619:10): [True: 276, False: 61]
  ------------------
12620|     61|					goto yy1094;
12621|    457|				} else {
12622|    457|					if (yych <= '[') goto yy1087;
  ------------------
  |  Branch (12622:10): [True: 347, False: 110]
  ------------------
12623|    110|					if (yych <= '\\') goto yy1085;
  ------------------
  |  Branch (12623:10): [True: 0, False: 110]
  ------------------
12624|    110|					goto yy1097;
12625|    110|				}
12626|    905|			} else {
12627|    257|				if (yych <= '`') {
  ------------------
  |  Branch (12627:9): [True: 36, False: 221]
  ------------------
12628|     36|					if (yych == '_') goto yy1094;
  ------------------
  |  Branch (12628:10): [True: 8, False: 28]
  ------------------
12629|     28|					goto yy1087;
12630|    221|				} else {
12631|    221|					if (yych <= 'z') goto yy1094;
  ------------------
  |  Branch (12631:10): [True: 66, False: 155]
  ------------------
12632|    155|					if (yych <= '~') goto yy1087;
  ------------------
  |  Branch (12632:10): [True: 47, False: 108]
  ------------------
12633|    108|					if (yych >= 0x80) goto yy1094;
  ------------------
  |  Branch (12633:10): [True: 102, False: 6]
  ------------------
12634|    108|				}
12635|    257|			}
12636|  1.16k|		}
12637|    267|yy1083:
12638|    267|		YYDEBUG(1083, *YYCURSOR);
12639|    267|		++YYCURSOR;
  ------------------
  |  |   54|    267|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12640|    267|		YYDEBUG(1084, *YYCURSOR);
12641|    267|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    267|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    267|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12642|    267|#line 3179 "Zend/zend_language_scanner.l"
12643|    267|		{
12644|    267|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|    267|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|    267|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    267|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    267|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12644:6): [True: 50, False: 217]
  ------------------
12645|     50|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|     50|#define RETURN_END_TOKEN do { \
  |  | 1356|     50|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|     22|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|     22|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 1, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 22, False: 28]
  |  |  ------------------
  |  | 1357|      1|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|      1|		token = _token; \
  |  |  |  | 1320|      1|		goto emit_token; \
  |  |  |  | 1321|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|     49|		} else { \
  |  | 1359|     49|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|     49|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|     49|		token = _token; \
  |  |  |  | 1320|     49|		goto emit_token; \
  |  |  |  | 1321|     49|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|     49|		} \
  |  | 1361|     50|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12646|     50|	}
12647|       |
12648|    217|	RETURN_TOKEN(T_BAD_CHARACTER);
  ------------------
  |  | 1318|    217|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    217|		token = _token; \
  |  | 1320|    217|		goto emit_token; \
  |  | 1321|    217|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12649|    217|}
12650|      0|#line 12651 "Zend/zend_language_scanner.c"
12651|     81|yy1085:
12652|     81|		YYDEBUG(1085, *YYCURSOR);
12653|     81|		++YYCURSOR;
  ------------------
  |  |   54|     81|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12654|     81|		YYDEBUG(1086, *YYCURSOR);
12655|     81|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     81|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     81|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12656|     81|#line 2430 "Zend/zend_language_scanner.l"
12657|     81|		{
12658|       |	/* Invalid rule to return a more explicit parse error with proper line number */
12659|     81|	yyless(0);
  ------------------
  |  |   68|     81|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|     81|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|     81|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|     81|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|     81|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     81|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     81|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 81]
  |  |  ------------------
  ------------------
12660|     81|	yy_pop_state();
12661|     81|	ZVAL_NULL(zendlval);
  ------------------
  |  | 1059|     81|#define ZVAL_NULL(z) do {				\
  |  | 1060|     81|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     81|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     81|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     81|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     81|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 81]
  |  |  ------------------
  ------------------
12662|     81|	RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|     81|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     81|		token = _token; \
  |  | 1325|     81|		goto emit_token_with_val; \
  |  | 1326|     81|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12663|     81|}
12664|      0|#line 12665 "Zend/zend_language_scanner.c"
12665|    852|yy1087:
12666|    852|		YYDEBUG(1087, *YYCURSOR);
12667|    852|		++YYCURSOR;
  ------------------
  |  |   54|    852|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    852|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    852|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12668|    927|yy1088:
12669|    927|		YYDEBUG(1088, *YYCURSOR);
12670|    927|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    927|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    927|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    927|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    927|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    927|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    927|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    927|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    927|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12671|    927|#line 2425 "Zend/zend_language_scanner.l"
12672|    927|		{
12673|       |	/* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */
12674|    927|	RETURN_TOKEN(yytext[0]);
  ------------------
  |  | 1318|    927|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    927|		token = _token; \
  |  | 1320|    927|		goto emit_token; \
  |  | 1321|    927|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12675|    927|}
12676|      0|#line 12677 "Zend/zend_language_scanner.c"
12677|    149|yy1089:
12678|    149|		YYDEBUG(1089, *YYCURSOR);
12679|    149|		yych = *++YYCURSOR;
  ------------------
  |  |   54|    149|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    149|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    149|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12680|    149|		if (yych <= '_') {
  ------------------
  |  Branch (12680:7): [True: 61, False: 88]
  ------------------
12681|     61|			if (yych <= '@') goto yy1088;
  ------------------
  |  Branch (12681:8): [True: 53, False: 8]
  ------------------
12682|      8|			if (yych <= 'Z') goto yy1099;
  ------------------
  |  Branch (12682:8): [True: 8, False: 0]
  ------------------
12683|      0|			if (yych <= '^') goto yy1088;
  ------------------
  |  Branch (12683:8): [True: 0, False: 0]
  ------------------
12684|      0|			goto yy1099;
12685|     88|		} else {
12686|     88|			if (yych <= '`') goto yy1088;
  ------------------
  |  Branch (12686:8): [True: 9, False: 79]
  ------------------
12687|     79|			if (yych <= 'z') goto yy1099;
  ------------------
  |  Branch (12687:8): [True: 51, False: 28]
  ------------------
12688|     28|			if (yych <= 0x7F) goto yy1088;
  ------------------
  |  Branch (12688:8): [True: 13, False: 15]
  ------------------
12689|     15|			goto yy1099;
12690|     28|		}
12691|    139|yy1090:
12692|    139|		YYDEBUG(1090, *YYCURSOR);
12693|    139|		yyaccept = 0;
12694|    139|		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|    139|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    139|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    139|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|    139|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    139|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    139|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12695|    139|		if (yych <= 'X') {
  ------------------
  |  Branch (12695:7): [True: 78, False: 61]
  ------------------
12696|     78|			if (yych <= 'B') {
  ------------------
  |  Branch (12696:8): [True: 59, False: 19]
  ------------------
12697|     59|				if (yych <= '/') goto yy1091;
  ------------------
  |  Branch (12697:9): [True: 20, False: 39]
  ------------------
12698|     39|				if (yych <= '9') goto yy1102;
  ------------------
  |  Branch (12698:9): [True: 19, False: 20]
  ------------------
12699|     20|				if (yych >= 'B') goto yy1105;
  ------------------
  |  Branch (12699:9): [True: 4, False: 16]
  ------------------
12700|     20|			} else {
12701|     19|				if (yych == 'O') goto yy1107;
  ------------------
  |  Branch (12701:9): [True: 2, False: 17]
  ------------------
12702|     17|				if (yych >= 'X') goto yy1108;
  ------------------
  |  Branch (12702:9): [True: 5, False: 12]
  ------------------
12703|     17|			}
12704|     78|		} else {
12705|     61|			if (yych <= 'b') {
  ------------------
  |  Branch (12705:8): [True: 35, False: 26]
  ------------------
12706|     35|				if (yych == '_') goto yy1109;
  ------------------
  |  Branch (12706:9): [True: 0, False: 35]
  ------------------
12707|     35|				if (yych >= 'b') goto yy1105;
  ------------------
  |  Branch (12707:9): [True: 0, False: 35]
  ------------------
12708|     35|			} else {
12709|     26|				if (yych <= 'o') {
  ------------------
  |  Branch (12709:9): [True: 15, False: 11]
  ------------------
12710|     15|					if (yych >= 'o') goto yy1107;
  ------------------
  |  Branch (12710:10): [True: 10, False: 5]
  ------------------
12711|     15|				} else {
12712|     11|					if (yych == 'x') goto yy1108;
  ------------------
  |  Branch (12712:10): [True: 2, False: 9]
  ------------------
12713|     11|				}
12714|     26|			}
12715|     61|		}
12716|    213|yy1091:
12717|    213|		YYDEBUG(1091, *YYCURSOR);
12718|    213|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    213|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    213|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12719|    213|#line 2207 "Zend/zend_language_scanner.l"
12720|    213|		{ /* Offset could be treated as a long */
12721|    213|	if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
  ------------------
  |  |   67|    213|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    213|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    213|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
  ------------------
  |  |   96|    213|# define MAX_LENGTH_OF_LONG 20
  ------------------
              	if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
  ------------------
  |  |   67|      1|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
  ------------------
  |  |   96|      1|# define MAX_LENGTH_OF_LONG 20
  ------------------
              	if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
  ------------------
  |  |   66|      1|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      1|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12721:6): [True: 212, False: 1]
  |  Branch (12721:42): [True: 1, False: 0]
  |  Branch (12721:78): [True: 1, False: 0]
  ------------------
12722|    213|		char *end;
12723|    213|		errno = 0;
12724|    213|		ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10));
  ------------------
  |  | 1076|    213|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    213|		zval *__z = (z);				\
  |  | 1078|    213|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    213|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    213|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    213|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    213|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    213|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    213|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    213|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 213]
  |  |  ------------------
  ------------------
12725|    213|		if (errno == ERANGE) {
  ------------------
  |  Branch (12725:7): [True: 0, False: 213]
  ------------------
12726|      0|			goto string;
12727|      0|		}
12728|    213|		ZEND_ASSERT(end == yytext + yyleng);
  ------------------
  |  |  112|    213|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12728:3): [True: 0, False: 213]
  |  Branch (12728:3): [True: 213, False: 0]
  ------------------
12729|    213|	} else {
12730|      0|string:
12731|      0|		ZVAL_STRINGL(zendlval, yytext, yyleng);
  ------------------
  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12732|      0|	}
12733|    213|	RETURN_TOKEN_WITH_VAL(T_NUM_STRING);
  ------------------
  |  | 1323|    213|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|    213|		token = _token; \
  |  | 1325|    213|		goto emit_token_with_val; \
  |  | 1326|    213|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12734|    213|}
12735|      0|#line 12736 "Zend/zend_language_scanner.c"
12736|    290|yy1092:
12737|    290|		YYDEBUG(1092, *YYCURSOR);
12738|    290|		yyaccept = 0;
12739|    290|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|    290|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    290|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    290|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|    290|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    290|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    290|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12740|    290|		YYFILL(1);
  ------------------
  |  |   53|    290|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    290|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    290|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    290|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    290|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    290|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    290|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    290|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 290]
  |  |  ------------------
  ------------------
12741|    290|		yych = *YYCURSOR;
  ------------------
  |  |   54|    290|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    290|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    290|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12742|    290|		YYDEBUG(1093, *YYCURSOR);
12743|    290|		if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (12743:7): [True: 179, False: 111]
  ------------------
12744|    179|			goto yy1092;
12745|    179|		}
12746|    111|		if (yych == '_') goto yy1109;
  ------------------
  |  Branch (12746:7): [True: 14, False: 97]
  ------------------
12747|     97|		goto yy1091;
12748|    779|yy1094:
12749|    779|		YYDEBUG(1094, *YYCURSOR);
12750|    779|		++YYCURSOR;
  ------------------
  |  |   54|    779|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    779|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    779|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12751|    779|		YYFILL(1);
  ------------------
  |  |   53|    779|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    779|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    779|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    779|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    779|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    779|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    779|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    779|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 779]
  |  |  ------------------
  ------------------
12752|    779|		yych = *YYCURSOR;
  ------------------
  |  |   54|    779|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    779|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    779|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12753|    779|		YYDEBUG(1095, *YYCURSOR);
12754|    779|		if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (12754:7): [True: 542, False: 237]
  ------------------
12755|    542|			goto yy1094;
12756|    542|		}
12757|    237|		YYDEBUG(1096, *YYCURSOR);
12758|    237|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    237|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    237|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    237|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    237|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    237|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    237|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    237|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    237|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12759|    237|#line 2454 "Zend/zend_language_scanner.l"
12760|    237|		{
12761|    237|	RETURN_TOKEN_WITH_STR(T_STRING, 0);
  ------------------
  |  | 1328|    237|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|    237|		token = _token; \
  |  | 1330|    237|		offset = _offset; \
  |  | 1331|    237|		goto emit_token_with_str; \
  |  | 1332|    237|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12762|    237|}
12763|      0|#line 12764 "Zend/zend_language_scanner.c"
12764|    110|yy1097:
12765|    110|		YYDEBUG(1097, *YYCURSOR);
12766|    110|		++YYCURSOR;
  ------------------
  |  |   54|    110|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12767|    110|		YYDEBUG(1098, *YYCURSOR);
12768|    110|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    110|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    110|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    110|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    110|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12769|    110|#line 2420 "Zend/zend_language_scanner.l"
12770|    110|		{
12771|    110|	yy_pop_state();
12772|    110|	RETURN_TOKEN(']');
  ------------------
  |  | 1318|    110|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    110|		token = _token; \
  |  | 1320|    110|		goto emit_token; \
  |  | 1321|    110|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12773|    110|}
12774|      0|#line 12775 "Zend/zend_language_scanner.c"
12775|    234|yy1099:
12776|    234|		YYDEBUG(1099, *YYCURSOR);
12777|    234|		++YYCURSOR;
  ------------------
  |  |   54|    234|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    234|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    234|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12778|    234|		YYFILL(1);
  ------------------
  |  |   53|    234|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    234|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    234|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    234|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    234|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    234|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    234|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    234|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 234]
  |  |  ------------------
  ------------------
12779|    234|		yych = *YYCURSOR;
  ------------------
  |  |   54|    234|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    234|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    234|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12780|    234|		YYDEBUG(1100, *YYCURSOR);
12781|    234|		if (yych <= '^') {
  ------------------
  |  Branch (12781:7): [True: 137, False: 97]
  ------------------
12782|    137|			if (yych <= '9') {
  ------------------
  |  Branch (12782:8): [True: 40, False: 97]
  ------------------
12783|     40|				if (yych >= '0') goto yy1099;
  ------------------
  |  Branch (12783:9): [True: 21, False: 19]
  ------------------
12784|     97|			} else {
12785|     97|				if (yych <= '@') goto yy1101;
  ------------------
  |  Branch (12785:9): [True: 9, False: 88]
  ------------------
12786|     88|				if (yych <= 'Z') goto yy1099;
  ------------------
  |  Branch (12786:9): [True: 52, False: 36]
  ------------------
12787|     88|			}
12788|    137|		} else {
12789|     97|			if (yych <= '`') {
  ------------------
  |  Branch (12789:8): [True: 10, False: 87]
  ------------------
12790|     10|				if (yych <= '_') goto yy1099;
  ------------------
  |  Branch (12790:9): [True: 7, False: 3]
  ------------------
12791|     87|			} else {
12792|     87|				if (yych <= 'z') goto yy1099;
  ------------------
  |  Branch (12792:9): [True: 69, False: 18]
  ------------------
12793|     18|				if (yych >= 0x80) goto yy1099;
  ------------------
  |  Branch (12793:9): [True: 11, False: 7]
  ------------------
12794|     18|			}
12795|     97|		}
12796|     74|yy1101:
12797|     74|		YYDEBUG(1101, *YYCURSOR);
12798|     74|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     74|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     74|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     74|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     74|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     74|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     74|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     74|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     74|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12799|     74|#line 2416 "Zend/zend_language_scanner.l"
12800|     74|		{
12801|     74|	RETURN_TOKEN_WITH_STR(T_VARIABLE, 1);
  ------------------
  |  | 1328|     74|#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \
  |  | 1329|     74|		token = _token; \
  |  | 1330|     74|		offset = _offset; \
  |  | 1331|     74|		goto emit_token_with_str; \
  |  | 1332|     74|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1332:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12802|     74|}
12803|      0|#line 12804 "Zend/zend_language_scanner.c"
12804|     89|yy1102:
12805|     89|		YYDEBUG(1102, *YYCURSOR);
12806|     89|		yyaccept = 1;
12807|     89|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     89|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     89|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12808|     89|		YYFILL(1);
  ------------------
  |  |   53|     89|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     89|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     89|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     89|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 89]
  |  |  ------------------
  ------------------
12809|     89|		yych = *YYCURSOR;
  ------------------
  |  |   54|     89|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     89|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     89|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12810|     89|		YYDEBUG(1103, *YYCURSOR);
12811|     89|		if (yych <= '/') goto yy1104;
  ------------------
  |  Branch (12811:7): [True: 16, False: 73]
  ------------------
12812|     73|		if (yych <= '9') goto yy1102;
  ------------------
  |  Branch (12812:7): [True: 59, False: 14]
  ------------------
12813|     14|		if (yych == '_') goto yy1109;
  ------------------
  |  Branch (12813:7): [True: 3, False: 11]
  ------------------
12814|     37|yy1104:
12815|     37|		YYDEBUG(1104, *YYCURSOR);
12816|     37|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     37|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     37|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12817|     37|#line 2223 "Zend/zend_language_scanner.l"
12818|     37|		{ /* Offset must be treated as a string */
12819|     37|	if (yyleng == 1) {
  ------------------
  |  |   67|     37|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     37|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12819:6): [True: 0, False: 37]
  ------------------
12820|      0|		ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext)));
  ------------------
  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|      0|		zval *__z = (z);							\
  |  | 1100|      0|		zend_string *__s = (s);						\
  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12821|     37|	} else {
12822|     37|		ZVAL_STRINGL(zendlval, yytext, yyleng);
  ------------------
  |  |  963|     37|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|     37|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|     37|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|     37|		zval *__z = (z);						\
  |  |  |  | 1107|     37|		zend_string *__s = (s);					\
  |  |  |  | 1108|     37|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     37|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     37|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|     37|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     37|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     37|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|     37|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     37|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     37|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     37|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|     37|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 37]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
12823|     37|	}
12824|     37|	RETURN_TOKEN_WITH_VAL(T_NUM_STRING);
  ------------------
  |  | 1323|     37|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     37|		token = _token; \
  |  | 1325|     37|		goto emit_token_with_val; \
  |  | 1326|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12825|     37|}
12826|      0|#line 12827 "Zend/zend_language_scanner.c"
12827|      4|yy1105:
12828|      4|		YYDEBUG(1105, *YYCURSOR);
12829|      4|		++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12830|      4|		YYFILL(1);
  ------------------
  |  |   53|      4|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      4|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
12831|      4|		yych = *YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12832|      4|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (12832:7): [True: 2, False: 2]
  ------------------
12833|      2|			goto yy1110;
12834|      2|		}
12835|     19|yy1106:
12836|     19|		YYDEBUG(1106, *YYCURSOR);
12837|     19|		YYCURSOR = YYMARKER;
  ------------------
  |  |   54|     19|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = YYMARKER;
  ------------------
  |  |   56|     19|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     19|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     19|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12838|     19|		if (yyaccept == 0) {
  ------------------
  |  Branch (12838:7): [True: 19, False: 0]
  ------------------
12839|     19|			goto yy1091;
12840|     19|		} else {
12841|      0|			goto yy1104;
12842|      0|		}
12843|     12|yy1107:
12844|     12|		YYDEBUG(1107, *YYCURSOR);
12845|     12|		++YYCURSOR;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12846|     12|		YYFILL(1);
  ------------------
  |  |   53|     12|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     12|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     12|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 12]
  |  |  ------------------
  ------------------
12847|     12|		yych = *YYCURSOR;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12848|     12|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (12848:7): [True: 6, False: 6]
  ------------------
12849|      6|			goto yy1112;
12850|      6|		}
12851|      6|		goto yy1106;
12852|      7|yy1108:
12853|      7|		YYDEBUG(1108, *YYCURSOR);
12854|      7|		++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12855|      7|		YYFILL(1);
  ------------------
  |  |   53|      7|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      7|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      7|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 7]
  |  |  ------------------
  ------------------
12856|      7|		yych = *YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12857|      7|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (12857:7): [True: 2, False: 5]
  ------------------
12858|      2|			goto yy1114;
12859|      2|		}
12860|      5|		goto yy1106;
12861|     17|yy1109:
12862|     17|		YYDEBUG(1109, *YYCURSOR);
12863|     17|		++YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12864|     17|		YYFILL(1);
  ------------------
  |  |   53|     17|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     17|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     17|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 17]
  |  |  ------------------
  ------------------
12865|     17|		yych = *YYCURSOR;
  ------------------
  |  |   54|     17|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     17|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12866|     17|		if (yych <= '/') goto yy1106;
  ------------------
  |  Branch (12866:7): [True: 2, False: 15]
  ------------------
12867|     15|		if (yych <= '9') goto yy1102;
  ------------------
  |  Branch (12867:7): [True: 11, False: 4]
  ------------------
12868|      4|		goto yy1106;
12869|      4|yy1110:
12870|      4|		YYDEBUG(1110, *YYCURSOR);
12871|      4|		yyaccept = 1;
12872|      4|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      4|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12873|      4|		YYFILL(1);
  ------------------
  |  |   53|      4|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      4|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      4|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 4]
  |  |  ------------------
  ------------------
12874|      4|		yych = *YYCURSOR;
  ------------------
  |  |   54|      4|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      4|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12875|      4|		YYDEBUG(1111, *YYCURSOR);
12876|      4|		if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (12876:7): [True: 2, False: 2]
  ------------------
12877|      2|			goto yy1110;
12878|      2|		}
12879|      2|		if (yych == '_') goto yy1105;
  ------------------
  |  Branch (12879:7): [True: 0, False: 2]
  ------------------
12880|      2|		goto yy1104;
12881|     12|yy1112:
12882|     12|		YYDEBUG(1112, *YYCURSOR);
12883|     12|		yyaccept = 1;
12884|     12|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|     12|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12885|     12|		YYFILL(1);
  ------------------
  |  |   53|     12|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|     12|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|     12|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 12]
  |  |  ------------------
  ------------------
12886|     12|		yych = *YYCURSOR;
  ------------------
  |  |   54|     12|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     12|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     12|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12887|     12|		YYDEBUG(1113, *YYCURSOR);
12888|     12|		if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (12888:7): [True: 6, False: 6]
  ------------------
12889|      6|			goto yy1112;
12890|      6|		}
12891|      6|		if (yych == '_') goto yy1107;
  ------------------
  |  Branch (12891:7): [True: 0, False: 6]
  ------------------
12892|      6|		goto yy1104;
12893|      7|yy1114:
12894|      7|		YYDEBUG(1114, *YYCURSOR);
12895|      7|		yyaccept = 1;
12896|      7|		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   56|      7|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYMARKER = ++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12897|      7|		YYFILL(1);
  ------------------
  |  |   53|      7|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      7|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      7|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 7]
  |  |  ------------------
  ------------------
12898|      7|		yych = *YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12899|      7|		YYDEBUG(1115, *YYCURSOR);
12900|      7|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (12900:7): [True: 5, False: 2]
  ------------------
12901|      5|			goto yy1114;
12902|      5|		}
12903|      2|		if (yych == '_') goto yy1108;
  ------------------
  |  Branch (12903:7): [True: 0, False: 2]
  ------------------
12904|      2|		goto yy1104;
12905|      2|	}
12906|       |/* *********************************** */
12907|      2|yyc_SHEBANG:
12908|      0|	{
12909|      0|		static const unsigned char yybm[] = {
12910|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12911|      0|			128, 128,   0, 128, 128, 128, 128, 128, 
12912|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12913|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12914|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12915|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12916|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12917|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12918|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12919|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12920|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12921|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12922|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12923|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12924|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12925|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12926|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12927|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12928|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12929|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12930|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12931|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12932|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12933|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12934|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12935|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12936|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12937|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12938|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12939|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12940|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12941|      0|			128, 128, 128, 128, 128, 128, 128, 128, 
12942|      0|		};
12943|      0|		YYDEBUG(1116, *YYCURSOR);
12944|      0|		YYFILL(2);
  ------------------
  |  |   53|      0|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      0|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12945|      0|		yych = *YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12946|      0|		if (yych == '#') goto yy1120;
  ------------------
  |  Branch (12946:7): [True: 0, False: 0]
  ------------------
12947|      0|		YYDEBUG(1118, *YYCURSOR);
12948|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12949|      0|yy1119:
12950|      0|		YYDEBUG(1119, *YYCURSOR);
12951|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12952|      0|#line 2294 "Zend/zend_language_scanner.l"
12953|      0|		{
12954|      0|	yyless(0);
  ------------------
  |  |   68|      0|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
12955|      0|	BEGIN(INITIAL);
  ------------------
  |  |   64|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12956|      0|	goto restart;
12957|      0|}
12958|      0|#line 12959 "Zend/zend_language_scanner.c"
12959|      0|yy1120:
12960|      0|		YYDEBUG(1120, *YYCURSOR);
12961|      0|		yych = *++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12962|      0|		if (yych != '!') goto yy1119;
  ------------------
  |  Branch (12962:7): [True: 0, False: 0]
  ------------------
12963|      0|yy1121:
12964|      0|		YYDEBUG(1121, *YYCURSOR);
12965|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12966|      0|		YYFILL(1);
  ------------------
  |  |   53|      0|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|      0|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12967|      0|		yych = *YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12968|      0|		YYDEBUG(1122, *YYCURSOR);
12969|      0|		if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (12969:7): [True: 0, False: 0]
  ------------------
12970|      0|			goto yy1121;
12971|      0|		}
12972|      0|		YYDEBUG(1123, *YYCURSOR);
12973|      0|		++YYCURSOR;
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12974|      0|		YYDEBUG(1124, *YYCURSOR);
12975|      0|		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12976|      0|#line 2288 "Zend/zend_language_scanner.l"
12977|      0|		{
12978|      0|	CG(zend_lineno)++;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
12979|      0|	BEGIN(INITIAL);
  ------------------
  |  |   64|      0|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|      0|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12980|      0|	goto restart;
12981|      0|}
12982|      0|#line 12983 "Zend/zend_language_scanner.c"
12983|      0|	}
12984|       |/* *********************************** */
12985|  19.3k|yyc_INITIAL:
12986|  19.3k|	YYDEBUG(1125, *YYCURSOR);
12987|  19.3k|	YYFILL(7);
  ------------------
  |  |   53|  19.3k|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|  19.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  19.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  19.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|  19.3k|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  19.3k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  19.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|  19.3k|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 19.3k]
  |  |  ------------------
  ------------------
12988|  19.3k|	yych = *YYCURSOR;
  ------------------
  |  |   54|  19.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  19.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  19.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12989|  19.3k|	if (yych == '<') goto yy1129;
  ------------------
  |  Branch (12989:6): [True: 10.8k, False: 8.51k]
  ------------------
12990|  8.51k|	YYDEBUG(1127, *YYCURSOR);
12991|  8.51k|	++YYCURSOR;
  ------------------
  |  |   54|  8.51k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  8.51k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  8.51k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12992|  9.00k|yy1128:
12993|  9.00k|	YYDEBUG(1128, *YYCURSOR);
12994|  9.00k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  9.00k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  9.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  9.00k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  9.00k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  9.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
12995|  9.00k|#line 2340 "Zend/zend_language_scanner.l"
12996|  9.00k|	{
12997|  9.00k|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|  9.00k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  9.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|  9.00k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  9.00k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  9.00k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12997:6): [True: 3.91k, False: 5.09k]
  ------------------
12998|  3.91k|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|  3.91k|#define RETURN_END_TOKEN do { \
  |  | 1356|  3.91k|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|    177|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    177|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 3, False: 174]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 177, False: 3.74k]
  |  |  ------------------
  |  | 1357|      3|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|      3|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|      3|		token = _token; \
  |  |  |  | 1320|      3|		goto emit_token; \
  |  |  |  | 1321|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|  3.91k|		} else { \
  |  | 1359|  3.91k|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|  3.91k|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|  3.91k|		token = _token; \
  |  |  |  | 1320|  3.91k|		goto emit_token; \
  |  |  |  | 1321|  3.91k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|  3.91k|		} \
  |  | 1361|  3.91k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12999|  3.91k|	}
13000|       |
13001|  5.09k|inline_char_handler:
13002|       |
13003|  5.41k|	while (1) {
  ------------------
  |  Branch (13003:9): [True: 5.41k, Folded]
  ------------------
13004|  5.41k|		YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
  ------------------
  |  |   52|  5.41k|#define YYCTYPE   unsigned char
  ------------------
              		YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
  ------------------
  |  |   54|  5.41k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.41k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.41k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
  ------------------
  |  |   55|  5.41k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  5.41k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.41k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
  ------------------
  |  |   54|  5.41k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.41k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.41k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13005|       |
13006|  5.41k|		YYCURSOR = ptr ? ptr + 1 : YYLIMIT;
  ------------------
  |  |   54|  5.41k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.41k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.41k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		YYCURSOR = ptr ? ptr + 1 : YYLIMIT;
  ------------------
  |  |   55|    767|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    767|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.18k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13006:14): [True: 4.64k, False: 767]
  ------------------
13007|       |
13008|  5.41k|		if (YYCURSOR >= YYLIMIT) {
  ------------------
  |  |   54|  5.41k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.41k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.41k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (YYCURSOR >= YYLIMIT) {
  ------------------
  |  |   55|  5.41k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  5.41k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.41k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13008:7): [True: 775, False: 4.63k]
  ------------------
13009|    775|			break;
13010|    775|		}
13011|       |
13012|  4.63k|		if (*YYCURSOR == '?') {
  ------------------
  |  |   54|  4.63k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.63k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.63k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13012:7): [True: 4.31k, False: 323]
  ------------------
13013|  4.31k|			if (CG(short_tags) /* <? */
  ------------------
  |  |   35|  8.63k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 4.31k, False: 0]
  |  |  ------------------
  ------------------
13014|      0|				|| (*(YYCURSOR + 1) == '=') /* <?= */
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13014:8): [True: 0, False: 0]
  ------------------
13015|      0|				|| (!strncasecmp((char*)YYCURSOR + 1, "php", 3) && /* <?php[ \t\r\n] */
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13015:9): [True: 0, False: 0]
  ------------------
13016|      0|					(YYCURSOR + 4 == YYLIMIT ||
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					(YYCURSOR + 4 == YYLIMIT ||
  ------------------
  |  |   55|      0|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13016:7): [True: 0, False: 0]
  ------------------
13017|      0|					YYCURSOR[4] == ' ' || YYCURSOR[4] == '\t' ||
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					YYCURSOR[4] == ' ' || YYCURSOR[4] == '\t' ||
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13017:6): [True: 0, False: 0]
  |  Branch (13017:28): [True: 0, False: 0]
  ------------------
13018|      0|					YYCURSOR[4] == '\n' || YYCURSOR[4] == '\r'))
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					YYCURSOR[4] == '\n' || YYCURSOR[4] == '\r'))
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13018:6): [True: 0, False: 0]
  |  Branch (13018:29): [True: 0, False: 0]
  ------------------
13019|  4.31k|			) {
13020|  4.31k|				YYCURSOR--;
  ------------------
  |  |   54|  4.31k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.31k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.31k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13021|  4.31k|				break;
13022|  4.31k|			}
13023|  4.31k|		}
13024|  4.63k|	}
13025|       |
13026|  5.09k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  5.09k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  5.09k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13027|       |
13028|  5.09k|	if (SCNG(output_filter)) {
  ------------------
  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 5.09k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13029|      0|		size_t readsize;
13030|      0|		char *s = NULL;
13031|      0|		size_t sz = 0;
13032|       |		// TODO: avoid reallocation ???
13033|      0|		readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng);
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng);
  ------------------
  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng);
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13034|      0|		ZVAL_STRINGL(zendlval, s, sz);
  ------------------
  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13035|      0|		efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13036|      0|		if (readsize < yyleng) {
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13036:7): [True: 0, False: 0]
  ------------------
13037|      0|			yyless(readsize);
  ------------------
  |  |   68|      0|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
13038|      0|		}
13039|  5.09k|	} else if (yyleng == 1) {
  ------------------
  |  |   67|  5.09k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  5.09k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.09k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13039:13): [True: 589, False: 4.50k]
  ------------------
13040|    589|		ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext));
  ------------------
  |  | 1098|    589|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|    589|		zval *__z = (z);							\
  |  | 1100|    589|		zend_string *__s = (s);						\
  |  | 1101|    589|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|    589|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    589|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|    589|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|    589|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    589|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|    589|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    589|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|    589|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 589]
  |  |  ------------------
  ------------------
13041|  4.50k|	} else {
13042|  4.50k|		ZVAL_STRINGL(zendlval, yytext, yyleng);
  ------------------
  |  |  963|  4.50k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|  4.50k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|  4.50k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|  4.50k|		zval *__z = (z);						\
  |  |  |  | 1107|  4.50k|		zend_string *__s = (s);					\
  |  |  |  | 1108|  4.50k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  4.50k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  4.50k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|  4.50k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  4.50k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  4.50k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|  4.50k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  4.50k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  4.50k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|  4.50k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|  4.50k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 4.50k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|  4.50k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 4.50k]
  |  |  ------------------
  ------------------
13043|  4.50k|	}
13044|  5.09k|	HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|  5.09k|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|  5.09k|do {																			\
  |  |   97|  5.09k|	char *p = (s), *boundary = p+(l);											\
  |  |   98|  5.09k|																				\
  |  |   99|  59.9k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 54.9k, False: 5.09k]
  |  |  ------------------
  |  |  100|  54.9k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 812, False: 54.0k]
  |  |  |  Branch (100:22): [True: 132, False: 53.9k]
  |  |  |  Branch (100:36): [True: 86, False: 46]
  |  |  ------------------
  |  |  101|    898|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|    898|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|    898|		}																		\
  |  |  103|  54.9k|		p++;																	\
  |  |  104|  54.9k|	}																			\
  |  |  105|  5.09k|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 5.09k]
  |  |  ------------------
  ------------------
13045|  5.09k|	RETURN_TOKEN_WITH_VAL(T_INLINE_HTML);
  ------------------
  |  | 1323|  5.09k|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|  5.09k|		token = _token; \
  |  | 1325|  5.09k|		goto emit_token_with_val; \
  |  | 1326|  5.09k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13046|  5.09k|}
13047|      0|#line 13048 "Zend/zend_language_scanner.c"
13048|  10.8k|yy1129:
13049|  10.8k|	YYDEBUG(1129, *YYCURSOR);
13050|  10.8k|	yych = *++YYCURSOR;
  ------------------
  |  |   54|  10.8k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.8k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.8k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13051|  10.8k|	if (yych != '?') goto yy1128;
  ------------------
  |  Branch (13051:6): [True: 493, False: 10.3k]
  ------------------
13052|  10.3k|	YYDEBUG(1130, *YYCURSOR);
13053|  10.3k|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   56|  10.3k|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|  10.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   54|  10.3k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.3k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13054|  10.3k|	if (yych <= 'O') {
  ------------------
  |  Branch (13054:6): [True: 4.48k, False: 5.85k]
  ------------------
13055|  4.48k|		if (yych == '=') goto yy1132;
  ------------------
  |  Branch (13055:7): [True: 340, False: 4.14k]
  ------------------
13056|  5.85k|	} else {
13057|  5.85k|		if (yych <= 'P') goto yy1134;
  ------------------
  |  Branch (13057:7): [True: 7, False: 5.85k]
  ------------------
13058|  5.85k|		if (yych == 'p') goto yy1134;
  ------------------
  |  Branch (13058:7): [True: 5.10k, False: 744]
  ------------------
13059|  5.85k|	}
13060|  5.22k|yy1131:
13061|  5.22k|	YYDEBUG(1131, *YYCURSOR);
13062|  5.22k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  5.22k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  5.22k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.22k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  5.22k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.22k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.22k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  5.22k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  5.22k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13063|  5.22k|#line 2331 "Zend/zend_language_scanner.l"
13064|  5.22k|	{
13065|  5.22k|	if (CG(short_tags)) {
  ------------------
  |  |   35|  5.22k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 5.22k, False: 0]
  |  |  ------------------
  ------------------
13066|  5.22k|		BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|  5.22k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  5.22k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  5.22k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  5.22k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13067|  5.22k|		RETURN_OR_SKIP_TOKEN(T_OPEN_TAG);
  ------------------
  |  | 1339|  5.22k|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|  5.22k|		token = _token; \
  |  | 1341|  5.22k|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  5.22k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  5.22k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 2.72k, False: 2.50k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  2.72k|			goto skip_token; \
  |  | 1343|  2.72k|		} \
  |  | 1344|  5.22k|		goto emit_token; \
  |  | 1345|  5.22k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13068|  5.22k|	} else {
13069|      0|		goto inline_char_handler;
13070|      0|	}
13071|  5.22k|}
13072|      0|#line 13073 "Zend/zend_language_scanner.c"
13073|    340|yy1132:
13074|    340|	YYDEBUG(1132, *YYCURSOR);
13075|    340|	++YYCURSOR;
  ------------------
  |  |   54|    340|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    340|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    340|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13076|    340|	YYDEBUG(1133, *YYCURSOR);
13077|    340|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    340|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    340|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    340|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    340|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    340|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    340|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    340|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    340|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13078|    340|#line 2300 "Zend/zend_language_scanner.l"
13079|    340|	{
13080|    340|	BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|    340|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|    340|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    340|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    340|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13081|    340|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|    340|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|    340|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 187, False: 153]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13082|       |		/* We'll reject this as an identifier in zend_lex_tstring. */
13083|    187|		RETURN_TOKEN_WITH_IDENT(T_ECHO);
  ------------------
  |  | 1334|    187|#define RETURN_TOKEN_WITH_IDENT(_token) do { \
  |  | 1335|    187|		token = _token; \
  |  | 1336|    187|		goto emit_token_with_ident; \
  |  | 1337|    187|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1337:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13084|    187|	}
13085|    153|	RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO);
  ------------------
  |  | 1318|    153|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    153|		token = _token; \
  |  | 1320|    153|		goto emit_token; \
  |  | 1321|    153|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13086|    153|}
13087|      0|#line 13088 "Zend/zend_language_scanner.c"
13088|  5.11k|yy1134:
13089|  5.11k|	YYDEBUG(1134, *YYCURSOR);
13090|  5.11k|	yych = *++YYCURSOR;
  ------------------
  |  |   54|  5.11k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  5.11k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.11k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13091|  5.11k|	if (yych == 'H') goto yy1136;
  ------------------
  |  Branch (13091:6): [True: 195, False: 4.92k]
  ------------------
13092|  4.92k|	if (yych == 'h') goto yy1136;
  ------------------
  |  Branch (13092:6): [True: 4.59k, False: 323]
  ------------------
13093|    344|yy1135:
13094|    344|	YYDEBUG(1135, *YYCURSOR);
13095|    344|	YYCURSOR = YYMARKER;
  ------------------
  |  |   54|    344|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    344|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    344|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	YYCURSOR = YYMARKER;
  ------------------
  |  |   56|    344|#define YYMARKER  SCNG(yy_marker)
  |  |  ------------------
  |  |  |  |   87|    344|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    344|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13096|    344|	goto yy1131;
13097|  4.79k|yy1136:
13098|  4.79k|	YYDEBUG(1136, *YYCURSOR);
13099|  4.79k|	yych = *++YYCURSOR;
  ------------------
  |  |   54|  4.79k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.79k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.79k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13100|  4.79k|	if (yych == 'P') goto yy1137;
  ------------------
  |  Branch (13100:6): [True: 3, False: 4.78k]
  ------------------
13101|  4.78k|	if (yych != 'p') goto yy1135;
  ------------------
  |  Branch (13101:6): [True: 21, False: 4.76k]
  ------------------
13102|  4.77k|yy1137:
13103|  4.77k|	YYDEBUG(1137, *YYCURSOR);
13104|  4.77k|	yych = *++YYCURSOR;
  ------------------
  |  |   54|  4.77k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.77k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.77k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13105|  4.77k|	if (yych <= '\f') {
  ------------------
  |  Branch (13105:6): [True: 4.27k, False: 494]
  ------------------
13106|  4.27k|		if (yych <= 0x08) goto yy1138;
  ------------------
  |  Branch (13106:7): [True: 111, False: 4.16k]
  ------------------
13107|  4.16k|		if (yych <= '\n') goto yy1139;
  ------------------
  |  Branch (13107:7): [True: 4.16k, False: 1]
  ------------------
13108|  4.16k|	} else {
13109|    494|		if (yych <= '\r') goto yy1141;
  ------------------
  |  Branch (13109:7): [True: 7, False: 487]
  ------------------
13110|    487|		if (yych == ' ') goto yy1139;
  ------------------
  |  Branch (13110:7): [True: 329, False: 158]
  ------------------
13111|    487|	}
13112|    270|yy1138:
13113|    270|	YYDEBUG(1138, *YYCURSOR);
13114|    270|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    270|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    270|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13115|    270|#line 2316 "Zend/zend_language_scanner.l"
13116|    270|	{
13117|       |	/* Allow <?php followed by end of file. */
13118|    270|	if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   54|    270|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   55|    270|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    270|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    270|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13118:6): [True: 111, False: 159]
  ------------------
13119|    111|		BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|    111|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|    111|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    111|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    111|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13120|    111|		RETURN_OR_SKIP_TOKEN(T_OPEN_TAG);
  ------------------
  |  | 1339|    111|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|    111|		token = _token; \
  |  | 1341|    111|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|    111|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    111|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 1, False: 110]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      1|			goto skip_token; \
  |  | 1343|      1|		} \
  |  | 1344|    111|		goto emit_token; \
  |  | 1345|    111|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13121|    111|	}
13122|       |	/* Degenerate case: <?phpX is interpreted as <? phpX with short tags. */
13123|    159|	if (CG(short_tags)) {
  ------------------
  |  |   35|    159|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 159, False: 0]
  |  |  ------------------
  ------------------
13124|    159|		yyless(2);
  ------------------
  |  |   68|    159|#define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   54|    159|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
  |  |  ------------------
  |  |  |  |   66|    159|#define yytext       ((char*)SCNG(yy_text))
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    159|                          yyleng   = (unsigned int)x; } while(0)
  |  |  ------------------
  |  |  |  |   67|    159|#define yyleng       SCNG(yy_leng)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (69:63): [Folded, False: 159]
  |  |  ------------------
  ------------------
13125|    159|		BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|    159|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|    159|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    159|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    159|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13126|    159|		RETURN_OR_SKIP_TOKEN(T_OPEN_TAG);
  ------------------
  |  | 1339|    159|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|    159|		token = _token; \
  |  | 1341|    159|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|    159|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    159|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 17, False: 142]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     17|			goto skip_token; \
  |  | 1343|     17|		} \
  |  | 1344|    159|		goto emit_token; \
  |  | 1345|    159|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13127|    159|	}
13128|      0|	goto inline_char_handler;
13129|    159|}
13130|      0|#line 13131 "Zend/zend_language_scanner.c"
13131|  4.50k|yy1139:
13132|  4.50k|	YYDEBUG(1139, *YYCURSOR);
13133|  4.50k|	++YYCURSOR;
  ------------------
  |  |   54|  4.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13134|  4.50k|yy1140:
13135|  4.50k|	YYDEBUG(1140, *YYCURSOR);
13136|  4.50k|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|  4.50k|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|  4.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|  4.50k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  4.50k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  4.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|  4.50k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13137|  4.50k|#line 2310 "Zend/zend_language_scanner.l"
13138|  4.50k|	{
13139|  4.50k|	HANDLE_NEWLINE(yytext[yyleng-1]);
  ------------------
  |  |  107|  4.50k|#define HANDLE_NEWLINE(c) \
  |  |  108|  4.50k|{ \
  |  |  109|  4.50k|	if (c == '\n' || c == '\r') { \
  |  |  ------------------
  |  |  |  Branch (109:6): [True: 4.16k, False: 334]
  |  |  |  Branch (109:19): [True: 1, False: 333]
  |  |  ------------------
  |  |  110|  4.16k|		CG(zend_lineno)++; \
  |  |  ------------------
  |  |  |  |   35|  4.16k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  111|  4.16k|	} \
  |  |  112|  4.50k|}
  ------------------
13140|  4.50k|	BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|  4.50k|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|  4.50k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|  4.50k|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  4.50k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13141|  4.50k|	RETURN_OR_SKIP_TOKEN(T_OPEN_TAG);
  ------------------
  |  | 1339|  4.50k|#define RETURN_OR_SKIP_TOKEN(_token) do { \
  |  | 1340|  4.50k|		token = _token; \
  |  | 1341|  4.50k|		if (PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|  4.50k|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  4.50k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 4.11k, False: 383]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  4.11k|			goto skip_token; \
  |  | 1343|  4.11k|		} \
  |  | 1344|  4.50k|		goto emit_token; \
  |  | 1345|  4.50k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13142|  4.50k|}
13143|      0|#line 13144 "Zend/zend_language_scanner.c"
13144|      7|yy1141:
13145|      7|	YYDEBUG(1141, *YYCURSOR);
13146|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   54|      7|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      7|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13147|      7|	if (yych == '\n') goto yy1139;
  ------------------
  |  Branch (13147:6): [True: 6, False: 1]
  ------------------
13148|      1|	goto yy1140;
13149|       |/* *********************************** */
13150|    534|yyc_ST_END_HEREDOC:
13151|    534|	YYDEBUG(1142, *YYCURSOR);
13152|    534|	YYFILL(1);
  ------------------
  |  |   53|    534|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    534|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    534|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    534|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 534]
  |  |  ------------------
  ------------------
13153|    534|	yych = *YYCURSOR;
  ------------------
  |  |   54|    534|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13154|    534|	YYDEBUG(1144, *YYCURSOR);
13155|    534|	++YYCURSOR;
  ------------------
  |  |   54|    534|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13156|    534|	YYDEBUG(1145, *YYCURSOR);
13157|    534|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    534|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    534|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13158|    534|#line 2831 "Zend/zend_language_scanner.l"
13159|    534|	{
13160|    534|	zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13161|       |
13162|    534|	yyleng = heredoc_label->indentation + heredoc_label->length;
  ------------------
  |  |   67|    534|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13163|    534|	YYCURSOR += yyleng - 1;
  ------------------
  |  |   54|    534|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	YYCURSOR += yyleng - 1;
  ------------------
  |  |   67|    534|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13164|       |
13165|    534|	heredoc_label_dtor(heredoc_label);
13166|    534|	efree(heredoc_label);
  ------------------
  |  |  154|    534|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    534|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    534|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    534|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    534|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13167|       |
13168|    534|	BEGIN(ST_IN_SCRIPTING);
  ------------------
  |  |   64|    534|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|    534|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    534|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    534|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13169|    534|	RETURN_TOKEN(T_END_HEREDOC);
  ------------------
  |  | 1318|    534|#define RETURN_TOKEN(_token) do { \
  |  | 1319|    534|		token = _token; \
  |  | 1320|    534|		goto emit_token; \
  |  | 1321|    534|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13170|    534|}
13171|      0|#line 13172 "Zend/zend_language_scanner.c"
13172|       |/* *********************************** */
13173|    104|yyc_ST_NOWDOC:
13174|    104|	YYDEBUG(1146, *YYCURSOR);
13175|    104|	YYFILL(1);
  ------------------
  |  |   53|    104|#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   54|    104|#define YYCURSOR  SCNG(yy_cursor)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   55|    104|#define YYLIMIT   SCNG(yy_limit)
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
  |  |  ------------------
  |  |  |  |   36|    104|#define ZEND_MMAP_AHEAD 32
  |  |  ------------------
  |  |  |  Branch (53:25): [True: 0, False: 104]
  |  |  ------------------
  ------------------
13176|    104|	yych = *YYCURSOR;
  ------------------
  |  |   54|    104|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13177|    104|	YYDEBUG(1148, *YYCURSOR);
13178|    104|	++YYCURSOR;
  ------------------
  |  |   54|    104|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13179|    104|	YYDEBUG(1149, *YYCURSOR);
13180|    104|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|    104|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|    104|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13181|    104|#line 3088 "Zend/zend_language_scanner.l"
13182|    104|	{
13183|    104|	zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack));
  ------------------
  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13184|    104|	int newline = 0, indentation = 0, spacing = -1;
13185|       |
13186|    104|	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   54|    104|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (YYCURSOR > YYLIMIT) {
  ------------------
  |  |   55|    104|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    104|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    104|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13186:6): [True: 37, False: 67]
  ------------------
13187|     37|		RETURN_END_TOKEN;
  ------------------
  |  | 1355|     37|#define RETURN_END_TOKEN do { \
  |  | 1356|     37|		if (check_nesting_at_end() != SUCCESS && PARSER_MODE()) { \
  |  |  ------------------
  |  |  |  | 1316|     25|	EXPECTED(elem != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|     25|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 8, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1356:7): [True: 25, False: 12]
  |  |  ------------------
  |  | 1357|      8|			RETURN_TOKEN(T_ERROR); \
  |  |  ------------------
  |  |  |  | 1318|      8|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|      8|		token = _token; \
  |  |  |  | 1320|      8|		goto emit_token; \
  |  |  |  | 1321|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1358|     29|		} else { \
  |  | 1359|     29|			RETURN_TOKEN(END); \
  |  |  ------------------
  |  |  |  | 1318|     29|#define RETURN_TOKEN(_token) do { \
  |  |  |  | 1319|     29|		token = _token; \
  |  |  |  | 1320|     29|		goto emit_token; \
  |  |  |  | 1321|     29|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1360|     29|		} \
  |  | 1361|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1361:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13188|     37|	}
13189|       |
13190|     67|	YYCURSOR--;
  ------------------
  |  |   54|     67|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     67|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     67|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13191|       |
13192|  2.81k|	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   54|  2.81k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.81k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.81k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	while (YYCURSOR < YYLIMIT) {
  ------------------
  |  |   55|  2.81k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  2.81k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.81k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13192:9): [True: 2.78k, False: 29]
  ------------------
13193|  2.78k|		switch (*YYCURSOR++) {
  ------------------
  |  |   54|  2.78k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  2.78k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.78k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13194|     59|			case '\r':
  ------------------
  |  Branch (13194:4): [True: 59, False: 2.72k]
  ------------------
13195|     59|				if (*YYCURSOR == '\n') {
  ------------------
  |  |   54|     59|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     59|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     59|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13195:9): [True: 13, False: 46]
  ------------------
13196|     13|					YYCURSOR++;
  ------------------
  |  |   54|     13|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     13|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     13|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13197|     13|				}
13198|     59|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     59|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
13199|    367|			case '\n':
  ------------------
  |  Branch (13199:4): [True: 308, False: 2.48k]
  ------------------
13200|    367|				indentation = spacing = 0;
13201|       |
13202|    625|				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|    625|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    625|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    625|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   55|    625|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    625|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.25k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|    610|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    610|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    610|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) {
  ------------------
  |  |   54|    442|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    442|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    442|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13202:12): [True: 610, False: 15]
  |  Branch (13202:35): [True: 168, False: 442]
  |  Branch (13202:55): [True: 90, False: 352]
  ------------------
13203|    258|					if (*YYCURSOR == '\t') {
  ------------------
  |  |   54|    258|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    258|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    258|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13203:10): [True: 90, False: 168]
  ------------------
13204|     90|						spacing |= HEREDOC_USING_TABS;
  ------------------
  |  | 1155|     90|#define HEREDOC_USING_TABS 2
  ------------------
13205|    168|					} else {
13206|    168|						spacing |= HEREDOC_USING_SPACES;
  ------------------
  |  | 1154|    168|#define HEREDOC_USING_SPACES 1
  ------------------
13207|    168|					}
13208|    258|					++YYCURSOR;
  ------------------
  |  |   54|    258|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    258|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    258|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13209|    258|					++indentation;
13210|    258|				}
13211|       |
13212|    367|				if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   54|    367|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    367|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    367|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (YYCURSOR == YYLIMIT) {
  ------------------
  |  |   55|    367|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    367|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    367|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13212:9): [True: 15, False: 352]
  ------------------
13213|     15|					yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     15|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     15|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     15|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     15|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13214|     15|					HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|     15|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|     15|do {																			\
  |  |   97|     15|	char *p = (s), *boundary = p+(l);											\
  |  |   98|     15|																				\
  |  |   99|    665|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 650, False: 15]
  |  |  ------------------
  |  |  100|    650|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 90, False: 560]
  |  |  |  Branch (100:22): [True: 32, False: 528]
  |  |  |  Branch (100:36): [True: 30, False: 2]
  |  |  ------------------
  |  |  101|    120|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|    120|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|    120|		}																		\
  |  |  103|    650|		p++;																	\
  |  |  104|    650|	}																			\
  |  |  105|     15|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 15]
  |  |  ------------------
  ------------------
13215|     15|					ZVAL_NULL(zendlval);
  ------------------
  |  | 1059|     15|#define ZVAL_NULL(z) do {				\
  |  | 1060|     15|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     15|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
13216|     15|					RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|     15|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     15|		token = _token; \
  |  | 1325|     15|		goto emit_token_with_val; \
  |  | 1326|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13217|     15|				}
13218|       |
13219|       |				/* Check for ending label on the next line */
13220|    352|				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |  118|    704|#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (118:29): [True: 100, False: 252]
  |  |  |  Branch (118:43): [True: 67, False: 33]
  |  |  |  Branch (118:59): [True: 85, False: 200]
  |  |  |  Branch (118:73): [True: 34, False: 51]
  |  |  |  Branch (118:88): [True: 3, False: 248]
  |  |  |  Branch (118:102): [True: 24, False: 224]
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |   55|    128|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|    128|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    128|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |   54|    128|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    128|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    480|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
  ------------------
  |  |   54|    124|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|    124|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    124|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13220:38): [True: 124, False: 4]
  |  Branch (13220:84): [True: 26, False: 98]
  ------------------
13221|     26|					if (IS_LABEL_SUCCESSOR(YYCURSOR[heredoc_label->length])) {
  ------------------
  |  |  119|     26|#define IS_LABEL_SUCCESSOR(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || ((c) >= '0' && (c) <= '9') || (c) == '_' || (c) >= 0x80)
  |  |  ------------------
  |  |  |  Branch (119:33): [True: 1, False: 25]
  |  |  |  Branch (119:47): [True: 1, False: 0]
  |  |  |  Branch (119:63): [True: 1, False: 24]
  |  |  |  Branch (119:77): [True: 1, False: 0]
  |  |  |  Branch (119:93): [True: 16, False: 8]
  |  |  |  Branch (119:107): [True: 1, False: 15]
  |  |  |  Branch (119:122): [True: 0, False: 23]
  |  |  |  Branch (119:136): [True: 0, False: 23]
  |  |  ------------------
  ------------------
13222|      3|						continue;
13223|      3|					}
13224|       |
13225|     23|					if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) {
  ------------------
  |  | 1154|     23|#define HEREDOC_USING_SPACES 1
  ------------------
              					if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) {
  ------------------
  |  | 1155|     23|#define HEREDOC_USING_TABS 2
  ------------------
  |  Branch (13225:10): [True: 1, False: 22]
  ------------------
13226|      1|						zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0);
13227|      1|						if (PARSER_MODE()) {
  ------------------
  |  | 1316|      1|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13228|      1|							RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|      1|#define RETURN_TOKEN(_token) do { \
  |  | 1319|      1|		token = _token; \
  |  | 1320|      1|		goto emit_token; \
  |  | 1321|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13229|      1|						}
13230|      1|					}
13231|       |
13232|       |					/* newline before label will be subtracted from returned text, but
13233|       |					 * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
13234|     22|					if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') {
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') {
  ------------------
  |  |   54|      0|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13234:10): [True: 0, False: 22]
  |  Branch (13234:48): [True: 0, False: 0]
  ------------------
13235|      0|						newline = 2; /* Windows newline */
13236|     22|					} else {
13237|     22|						newline = 1;
13238|     22|					}
13239|       |
13240|     22|					CG(increment_lineno) = 1; /* For newline before label */
  ------------------
  |  |   35|     22|# define CG(v) (compiler_globals.v)
  ------------------
13241|       |
13242|     22|					YYCURSOR -= indentation;
  ------------------
  |  |   54|     22|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13243|     22|					heredoc_label->indentation = indentation;
13244|       |
13245|     22|					BEGIN(ST_END_HEREDOC);
  ------------------
  |  |   64|     22|#define BEGIN(state) YYSETCONDITION(STATE(state))
  |  |  ------------------
  |  |  |  |   59|     22|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     22|#define SCNG	LANG_SCNG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     22|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13246|       |
13247|     22|					goto nowdoc_scan_done;
13248|     23|				}
13249|    326|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|    326|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
13250|  2.74k|			default:
  ------------------
  |  Branch (13250:4): [True: 2.42k, False: 367]
  ------------------
13251|  2.74k|				continue;
13252|  2.78k|		}
13253|  2.78k|	}
13254|       |
13255|     51|nowdoc_scan_done:
13256|     51|	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   67|     51|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   54|     51|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	yyleng = YYCURSOR - SCNG(yy_text);
  ------------------
  |  |   87|     51|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     51|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13257|     51|	ZVAL_STRINGL(zendlval, yytext, yyleng - newline);
  ------------------
  |  |  963|     51|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|     51|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|     51|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|     51|		zval *__z = (z);						\
  |  |  |  | 1107|     51|		zend_string *__s = (s);					\
  |  |  |  | 1108|     51|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     51|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     51|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|     51|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     51|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     51|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|     51|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     51|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     51|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     51|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|     51|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 51]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|     51|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 51]
  |  |  ------------------
  ------------------
13258|       |
13259|     51|	if (!EG(exception) && spacing != -1 && PARSER_MODE()) {
  ------------------
  |  |   45|    102|# define EG(v) (executor_globals.v)
  ------------------
              	if (!EG(exception) && spacing != -1 && PARSER_MODE()) {
  ------------------
  |  | 1316|     46|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|     46|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 35, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13259:6): [True: 51, False: 0]
  |  Branch (13259:24): [True: 46, False: 5]
  ------------------
13260|     35|		bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r';
  ------------------
  |  |   66|     35|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|     35|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r';
  ------------------
  |  |   66|      3|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      3|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13260:27): [True: 32, False: 3]
  |  Branch (13260:52): [True: 3, False: 0]
  ------------------
13261|     35|		if (!strip_multiline_string_indentation(
  ------------------
  |  Branch (13261:7): [True: 10, False: 25]
  ------------------
13262|     35|				zendlval, indentation, spacing == HEREDOC_USING_SPACES,
  ------------------
  |  | 1154|     35|#define HEREDOC_USING_SPACES 1
  ------------------
13263|     35|				newline_at_start, newline != 0)) {
13264|     10|			RETURN_TOKEN(T_ERROR);
  ------------------
  |  | 1318|     10|#define RETURN_TOKEN(_token) do { \
  |  | 1319|     10|		token = _token; \
  |  | 1320|     10|		goto emit_token; \
  |  | 1321|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1321:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13265|     10|		}
13266|     35|	}
13267|       |
13268|     41|	HANDLE_NEWLINES(yytext, yyleng - newline);
  ------------------
  |  |   95|     41|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|     41|do {																			\
  |  |   97|     41|	char *p = (s), *boundary = p+(l);											\
  |  |   98|     41|																				\
  |  |   99|  1.76k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 1.72k, False: 41]
  |  |  ------------------
  |  |  100|  1.72k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 128, False: 1.60k]
  |  |  |  Branch (100:22): [True: 24, False: 1.57k]
  |  |  |  Branch (100:36): [True: 14, False: 10]
  |  |  ------------------
  |  |  101|    142|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|    142|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|    142|		}																		\
  |  |  103|  1.72k|		p++;																	\
  |  |  104|  1.72k|	}																			\
  |  |  105|     41|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 41]
  |  |  ------------------
  ------------------
13269|     41|	RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE);
  ------------------
  |  | 1323|     41|#define RETURN_TOKEN_WITH_VAL(_token) do { \
  |  | 1324|     41|		token = _token; \
  |  | 1325|     41|		goto emit_token_with_val; \
  |  | 1326|     41|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1326:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13270|     41|}
13271|     41|#line 13272 "Zend/zend_language_scanner.c"
13272|     41|}
13273|      0|#line 3187 "Zend/zend_language_scanner.l"
13274|       |
13275|       |
13276|   120k|emit_token_with_str:
13277|   120k|	zend_copy_value(zendlval, (yytext + offset), (yyleng - offset));
  ------------------
  |  |  920|   120k|	if (SCNG(output_filter)) { \
  |  |  ------------------
  |  |  |  |   87|   120k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   120k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (55:23): [True: 0, False: 120k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  921|      0|		size_t sz = 0; \
  |  |  922|      0|		char *s = NULL; \
  |  |  923|      0|		SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); \
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  924|      0|		ZVAL_STRINGL(zendlval, s, sz); \
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  925|      0|		efree(s); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  926|   120k|	} else if (yyleng == 1) { \
  |  |  ------------------
  |  |  |  Branch (926:13): [True: 33.6k, False: 87.3k]
  |  |  ------------------
  |  |  927|  33.6k|		ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); \
  |  |  ------------------
  |  |  |  | 1098|  33.6k|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|  33.6k|		zval *__z = (z);							\
  |  |  |  | 1100|  33.6k|		zend_string *__s = (s);						\
  |  |  |  | 1101|  33.6k|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  33.6k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  33.6k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|  33.6k|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  33.6k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  33.6k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|  33.6k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  33.6k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|  33.6k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 33.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|  87.3k|	} else { \
  |  |  929|  87.3k|		ZVAL_STRINGL(zendlval, yytext, yyleng); \
  |  |  ------------------
  |  |  |  |  963|  87.3k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|  87.3k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  87.3k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  87.3k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  87.3k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  87.3k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  87.3k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  87.3k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  87.3k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  87.3k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  87.3k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  87.3k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  87.3k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  87.3k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  87.3k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  87.3k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 87.3k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|  87.3k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 87.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  930|  87.3k|	}
  ------------------
13278|       |
13279|   181k|emit_token_with_val:
13280|   181k|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|   181k|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|   181k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 44.5k, False: 137k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13281|  44.5k|		ZEND_ASSERT(Z_TYPE_P(zendlval) != IS_UNDEF);
  ------------------
  |  |  112|  44.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (13281:3): [True: 0, False: 44.5k]
  |  Branch (13281:3): [True: 44.5k, False: 0]
  ------------------
13282|  44.5k|		elem->ast = zend_ast_create_zval_with_lineno(zendlval, start_line);
13283|  44.5k|	}
13284|       |
13285|   606k|emit_token:
13286|   606k|	if (SCNG(on_event)) {
  ------------------
  |  |   87|   606k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|   606k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 606k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13287|      0|		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13288|      0|	}
13289|   606k|	return token;
13290|       |
13291|  17.1k|emit_token_with_ident:
13292|  17.1k|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|  17.1k|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|  17.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 12.7k, False: 4.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13293|  12.7k|		elem->ident = SCNG(yy_text);
  ------------------
  |  |   87|  12.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  12.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13294|  12.7k|	}
13295|  17.1k|	if (SCNG(on_event)) {
  ------------------
  |  |   87|  17.1k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  17.1k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 17.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13296|      0|		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13297|      0|	}
13298|  17.1k|	return token;
13299|       |
13300|   126k|return_whitespace:
13301|   126k|	HANDLE_NEWLINES(yytext, yyleng);
  ------------------
  |  |   95|   126k|#define HANDLE_NEWLINES(s, l)													\
  |  |   96|   126k|do {																			\
  |  |   97|   126k|	char *p = (s), *boundary = p+(l);											\
  |  |   98|   126k|																				\
  |  |   99|   320k|	while (p<boundary) {														\
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 193k, False: 126k]
  |  |  ------------------
  |  |  100|   193k|		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
  |  |  ------------------
  |  |  |  Branch (100:7): [True: 53.8k, False: 140k]
  |  |  |  Branch (100:22): [True: 5.67k, False: 134k]
  |  |  |  Branch (100:36): [True: 5.43k, False: 241]
  |  |  ------------------
  |  |  101|  59.3k|			CG(zend_lineno)++;													\
  |  |  ------------------
  |  |  |  |   35|  59.3k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  102|  59.3k|		}																		\
  |  |  103|   193k|		p++;																	\
  |  |  104|   193k|	}																			\
  |  |  105|   126k|} while (0)
  |  |  ------------------
  |  |  |  Branch (105:10): [Folded, False: 126k]
  |  |  ------------------
  ------------------
13302|   126k|	if (SCNG(on_event)) {
  ------------------
  |  |   87|   126k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|   126k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 126k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13303|      0|		SCNG(on_event)(ON_TOKEN, T_WHITESPACE, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, T_WHITESPACE, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, T_WHITESPACE, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, T_WHITESPACE, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13304|      0|	}
13305|   126k|	if (PARSER_MODE()) {
  ------------------
  |  | 1316|   126k|	EXPECTED(elem != NULL)
  |  |  ------------------
  |  |  |  |  456|   126k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 49.0k, False: 77.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13306|  49.0k|		start_line = CG(zend_lineno);
  ------------------
  |  |   35|  49.0k|# define CG(v) (compiler_globals.v)
  ------------------
13307|  49.0k|		goto restart;
13308|  77.9k|	} else {
13309|  77.9k|		return T_WHITESPACE;
13310|  77.9k|	}
13311|       |
13312|  7.44k|skip_token:
13313|  7.44k|	if (SCNG(on_event)) {
  ------------------
  |  |   87|  7.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  7.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 7.44k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13314|      0|		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   66|      0|#define yytext       ((char*)SCNG(yy_text))
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   67|      0|#define yyleng       SCNG(yy_leng)
  |  |  ------------------
  |  |  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		SCNG(on_event)(ON_TOKEN, token, start_line, yytext, yyleng, SCNG(on_event_context));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
13315|      0|	}
13316|  7.44k|	start_line = CG(zend_lineno);
  ------------------
  |  |   35|  7.44k|# define CG(v) (compiler_globals.v)
  ------------------
13317|  7.44k|	goto restart;
13318|   126k|}
zend_language_scanner.c:heredoc_label_dtor:
  202|  24.9k|static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) {
  203|       |    efree(heredoc_label->label);
  ------------------
  |  |  154|  24.9k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  24.9k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  24.9k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  24.9k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  24.9k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|  24.9k|}
zend_language_scanner.c:yy_scan_buffer:
  183|  10.4k|{
  184|  10.4k|	YYCURSOR       = (YYCTYPE*)str;
  ------------------
  |  |   54|  10.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.4k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|  10.4k|	YYLIMIT        = YYCURSOR + len;
  ------------------
  |  |   55|  10.4k|#define YYLIMIT   SCNG(yy_limit)
  |  |  ------------------
  |  |  |  |   87|  10.4k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	YYLIMIT        = YYCURSOR + len;
  ------------------
  |  |   54|  10.4k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  10.4k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|  10.4k|	if (!SCNG(yy_start)) {
  ------------------
  |  |   87|  10.4k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  10.4k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (186:6): [True: 3.44k, False: 7.03k]
  ------------------
  187|  3.44k|		SCNG(yy_start) = YYCURSOR;
  ------------------
  |  |   87|  3.44k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  3.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(yy_start) = YYCURSOR;
  ------------------
  |  |   54|  3.44k|#define YYCURSOR  SCNG(yy_cursor)
  |  |  ------------------
  |  |  |  |   87|  3.44k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.44k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|  3.44k|	}
  189|  10.4k|}
zend_language_scanner.c:zend_compile:
  597|  7.06k|{
  598|  7.06k|	zend_op_array *op_array = NULL;
  599|  7.06k|	bool original_in_compilation = CG(in_compilation);
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  600|       |
  601|  7.06k|	CG(in_compilation) = 1;
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  602|  7.06k|	CG(ast) = NULL;
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  603|  7.06k|	CG(ast_arena) = zend_arena_create(1024 * 32);
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  604|       |
  605|  7.06k|	if (!zendparse()) {
  ------------------
  |  Branch (605:6): [True: 4.94k, False: 2.12k]
  ------------------
  606|  4.94k|		uint32_t last_lineno = CG(zend_lineno);
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  607|  4.94k|		zend_file_context original_file_context;
  608|  4.94k|		zend_oparray_context original_oparray_context;
  609|  4.94k|		zend_op_array *original_active_op_array = CG(active_op_array);
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  610|       |
  611|  4.94k|		op_array = emalloc(sizeof(zend_op_array));
  ------------------
  |  |  150|  4.94k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  4.94k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  4.94k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  4.94k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  4.94k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|  4.94k|		init_op_array(op_array, type, INITIAL_OP_ARRAY_SIZE);
  ------------------
  |  |  952|  4.94k|#define INITIAL_OP_ARRAY_SIZE 64
  ------------------
  613|  4.94k|		CG(active_op_array) = op_array;
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  614|       |
  615|       |		/* Use heap to not waste arena memory */
  616|  4.94k|		op_array->fn_flags |= ZEND_ACC_HEAP_RT_CACHE;
  ------------------
  |  |  396|  4.94k|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  617|       |
  618|  4.94k|		if (zend_ast_process) {
  ------------------
  |  Branch (618:7): [True: 0, False: 4.94k]
  ------------------
  619|      0|			zend_ast_process(CG(ast));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  620|      0|		}
  621|       |
  622|  4.94k|		zend_file_context_begin(&original_file_context);
  623|  4.94k|		zend_oparray_context_begin(&original_oparray_context, op_array);
  624|  4.94k|		zend_compile_top_stmt(CG(ast));
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  625|  4.94k|		CG(zend_lineno) = last_lineno;
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  626|  4.94k|		zend_emit_final_return(type == ZEND_USER_FUNCTION);
  627|  4.94k|		op_array->line_start = 1;
  628|  4.94k|		op_array->line_end = last_lineno;
  629|  4.94k|		pass_two(op_array);
  630|  4.94k|		zend_oparray_context_end(&original_oparray_context);
  631|  4.94k|		zend_file_context_end(&original_file_context);
  632|       |
  633|  4.94k|		CG(active_op_array) = original_active_op_array;
  ------------------
  |  |   35|  4.94k|# define CG(v) (compiler_globals.v)
  ------------------
  634|  4.94k|	}
  635|       |
  636|  7.06k|	zend_ast_destroy(CG(ast));
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  637|  7.06k|	zend_arena_destroy(CG(ast_arena));
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  638|       |
  639|  7.06k|	CG(in_compilation) = original_in_compilation;
  ------------------
  |  |   35|  7.06k|# define CG(v) (compiler_globals.v)
  ------------------
  640|       |
  641|  7.06k|	return op_array;
  642|  7.06k|}
zend_language_scanner.c:check_nesting_at_end:
 1305|  11.9k|{
 1306|  11.9k|	if (!zend_stack_is_empty(&SCNG(nest_location_stack))) {
  ------------------
  |  |   87|  11.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  11.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1306:6): [True: 4.74k, False: 7.17k]
  ------------------
 1307|  4.74k|		zend_nest_location *nest_loc = zend_stack_top(&SCNG(nest_location_stack));
  ------------------
  |  |   87|  4.74k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  4.74k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1308|  4.74k|		report_bad_nesting(nest_loc->text, nest_loc->lineno, 0);
 1309|  4.74k|		return FAILURE;
 1310|  4.74k|	}
 1311|       |
 1312|  7.17k|	return SUCCESS;
 1313|  11.9k|}
zend_language_scanner.c:report_bad_nesting:
 1260|  10.4k|{
 1261|  10.4k|	char   buf[256];
 1262|  10.4k|	size_t used = 0;
 1263|       |
 1264|  10.4k|	used = snprintf(buf, sizeof(buf), "Unclosed '%c'", opening);
 1265|       |
 1266|  10.4k|	if (opening_lineno != CG(zend_lineno)) {
  ------------------
  |  |   35|  10.4k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1266:6): [True: 3.89k, False: 6.52k]
  ------------------
 1267|  3.89k|		used += snprintf(buf + used, sizeof(buf) - used, " on line %d", opening_lineno);
 1268|  3.89k|	}
 1269|       |
 1270|  10.4k|	if (closing) { 	/* 'closing' will be 0 if at end of file */
  ------------------
  |  Branch (1270:6): [True: 5.67k, False: 4.74k]
  ------------------
 1271|  5.67k|		used += snprintf(buf + used, sizeof(buf) - used, " does not match '%c'", closing);
 1272|  5.67k|	}
 1273|       |
 1274|  10.4k|	zend_throw_exception(zend_ce_parse_error, buf, 0);
 1275|  10.4k|}
zend_language_scanner.c:zend_scan_escape_string:
  933|  10.9k|{
  934|  10.9k|	char *s, *t;
  935|  10.9k|	char *end;
  936|       |
  937|  10.9k|	if (len <= 1) {
  ------------------
  |  Branch (937:6): [True: 821, False: 10.1k]
  ------------------
  938|    821|		if (len < 1) {
  ------------------
  |  Branch (938:7): [True: 138, False: 683]
  ------------------
  939|    138|			ZVAL_EMPTY_STRING(zendlval);
  ------------------
  |  |  972|    138|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|    138|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|    138|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|    138|		zval *__z = (z);							\
  |  |  |  | 1100|    138|		zend_string *__s = (s);						\
  |  |  |  | 1101|    138|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|    138|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|    138|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|    138|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    138|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    138|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|    138|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|    138|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|    138|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 138]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|    138|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 138]
  |  |  ------------------
  ------------------
  940|    683|		} else {
  941|    683|			zend_uchar c = (zend_uchar)*str;
  942|    683|			HANDLE_NEWLINE(c);
  ------------------
  |  |  107|    683|#define HANDLE_NEWLINE(c) \
  |  |  108|    683|{ \
  |  |  109|    683|	if (c == '\n' || c == '\r') { \
  |  |  ------------------
  |  |  |  Branch (109:6): [True: 92, False: 591]
  |  |  |  Branch (109:19): [True: 15, False: 576]
  |  |  ------------------
  |  |  110|    107|		CG(zend_lineno)++; \
  |  |  ------------------
  |  |  |  |   35|    107|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  111|    107|	} \
  |  |  112|    683|}
  ------------------
  943|    683|			ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c));
  ------------------
  |  | 1098|    683|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|    683|		zval *__z = (z);							\
  |  | 1100|    683|		zend_string *__s = (s);						\
  |  | 1101|    683|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|    683|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    683|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|    683|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|    683|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    683|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|    683|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    683|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|    683|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 683]
  |  |  ------------------
  ------------------
  944|    683|		}
  945|    821|		goto skip_escape_conversion;
  946|    821|	}
  947|       |
  948|  10.1k|	ZVAL_STRINGL(zendlval, str, len);
  ------------------
  |  |  963|  10.1k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|  10.1k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|  10.1k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|  10.1k|		zval *__z = (z);						\
  |  |  |  | 1107|  10.1k|		zend_string *__s = (s);					\
  |  |  |  | 1108|  10.1k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  10.1k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  10.1k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|  10.1k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  10.1k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  10.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|  10.1k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  10.1k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  10.1k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|  10.1k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|  10.1k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 10.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|  10.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 10.1k]
  |  |  ------------------
  ------------------
  949|       |
  950|       |	/* convert escape sequences */
  951|  10.1k|	s = Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|  10.1k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  10.1k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  10.1k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  952|  10.1k|	end = s+Z_STRLEN_P(zendlval);
  ------------------
  |  |  988|  10.1k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  10.1k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  10.1k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  953|   315k|	while (1) {
  ------------------
  |  Branch (953:9): [True: 315k, Folded]
  ------------------
  954|   315k|		if (UNEXPECTED(*s=='\\')) {
  ------------------
  |  |  457|   315k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.79k, False: 313k]
  |  |  ------------------
  ------------------
  955|  1.79k|			break;
  956|  1.79k|		}
  957|   313k|		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
  ------------------
  |  Branch (957:7): [True: 8.10k, False: 305k]
  |  Branch (957:22): [True: 1.01k, False: 304k]
  |  Branch (957:36): [True: 996, False: 17]
  ------------------
  958|  9.10k|			CG(zend_lineno)++;
  ------------------
  |  |   35|  9.10k|# define CG(v) (compiler_globals.v)
  ------------------
  959|  9.10k|		}
  960|   313k|		s++;
  961|   313k|		if (s == end) {
  ------------------
  |  Branch (961:7): [True: 8.38k, False: 305k]
  ------------------
  962|  8.38k|			goto skip_escape_conversion;
  963|  8.38k|		}
  964|   313k|	}
  965|       |
  966|  1.79k|	t = s;
  967|  24.2k|	while (s<end) {
  ------------------
  |  Branch (967:9): [True: 22.4k, False: 1.74k]
  ------------------
  968|  22.4k|		if (*s=='\\') {
  ------------------
  |  Branch (968:7): [True: 3.12k, False: 19.3k]
  ------------------
  969|  3.12k|			s++;
  970|  3.12k|			if (s >= end) {
  ------------------
  |  Branch (970:8): [True: 34, False: 3.09k]
  ------------------
  971|     34|				*t++ = '\\';
  972|     34|				break;
  973|     34|			}
  974|       |
  975|  3.09k|			switch(*s) {
  976|    705|				case 'n':
  ------------------
  |  Branch (976:5): [True: 705, False: 2.38k]
  ------------------
  977|    705|					*t++ = '\n';
  978|    705|					break;
  979|      6|				case 'r':
  ------------------
  |  Branch (979:5): [True: 6, False: 3.08k]
  ------------------
  980|      6|					*t++ = '\r';
  981|      6|					break;
  982|     24|				case 't':
  ------------------
  |  Branch (982:5): [True: 24, False: 3.07k]
  ------------------
  983|     24|					*t++ = '\t';
  984|     24|					break;
  985|      6|				case 'f':
  ------------------
  |  Branch (985:5): [True: 6, False: 3.08k]
  ------------------
  986|      6|					*t++ = '\f';
  987|      6|					break;
  988|    178|				case 'v':
  ------------------
  |  Branch (988:5): [True: 178, False: 2.91k]
  ------------------
  989|    178|					*t++ = '\v';
  990|    178|					break;
  991|     16|				case 'e':
  ------------------
  |  Branch (991:5): [True: 16, False: 3.07k]
  ------------------
  992|       |#ifdef ZEND_WIN32
  993|       |					*t++ = VK_ESCAPE;
  994|       |#else
  995|     16|					*t++ = '\e';
  996|     16|#endif
  997|     16|					break;
  998|     14|				case '"':
  ------------------
  |  Branch (998:5): [True: 14, False: 3.08k]
  ------------------
  999|     41|				case '`':
  ------------------
  |  Branch (999:5): [True: 27, False: 3.06k]
  ------------------
 1000|     41|					if (*s != quote_type) {
  ------------------
  |  Branch (1000:10): [True: 29, False: 12]
  ------------------
 1001|     29|						*t++ = '\\';
 1002|     29|						*t++ = *s;
 1003|     29|						break;
 1004|     29|					}
 1005|     12|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     12|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1006|    346|				case '\\':
  ------------------
  |  Branch (1006:5): [True: 334, False: 2.76k]
  ------------------
 1007|    382|				case '$':
  ------------------
  |  Branch (1007:5): [True: 36, False: 3.05k]
  ------------------
 1008|    382|					*t++ = *s;
 1009|    382|					break;
 1010|     37|				case 'x':
  ------------------
  |  Branch (1010:5): [True: 37, False: 3.05k]
  ------------------
 1011|    158|				case 'X':
  ------------------
  |  Branch (1011:5): [True: 121, False: 2.97k]
  ------------------
 1012|    158|					if (ZEND_IS_HEX(*(s+1))) {
  ------------------
  |  |  122|    158|#define ZEND_IS_HEX(c)  (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F'))
  |  |  ------------------
  |  |  |  Branch (122:27): [True: 120, False: 38]
  |  |  |  Branch (122:39): [True: 22, False: 98]
  |  |  |  Branch (122:53): [True: 14, False: 122]
  |  |  |  Branch (122:65): [True: 12, False: 2]
  |  |  |  Branch (122:79): [True: 68, False: 56]
  |  |  |  Branch (122:91): [True: 59, False: 9]
  |  |  ------------------
  ------------------
 1013|     93|						char hex_buf[3] = { 0, 0, 0 };
 1014|       |
 1015|     93|						hex_buf[0] = *(++s);
 1016|     93|						if (ZEND_IS_HEX(*(s+1))) {
  ------------------
  |  |  122|     93|#define ZEND_IS_HEX(c)  (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F'))
  |  |  ------------------
  |  |  |  Branch (122:27): [True: 93, False: 0]
  |  |  |  Branch (122:39): [True: 18, False: 75]
  |  |  |  Branch (122:53): [True: 15, False: 60]
  |  |  |  Branch (122:65): [True: 12, False: 3]
  |  |  |  Branch (122:79): [True: 62, False: 1]
  |  |  |  Branch (122:91): [True: 21, False: 41]
  |  |  ------------------
  ------------------
 1017|     51|							hex_buf[1] = *(++s);
 1018|     51|						}
 1019|     93|						*t++ = (char) ZEND_STRTOL(hex_buf, NULL, 16);
  ------------------
  |  |   68|     93|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
 1020|     93|					} else {
 1021|     65|						*t++ = '\\';
 1022|     65|						*t++ = *s;
 1023|     65|					}
 1024|    158|					break;
 1025|       |				/* UTF-8 codepoint escape, format: /\\u\{\x+\}/ */
 1026|     37|				case 'u':
  ------------------
  |  Branch (1026:5): [True: 37, False: 3.05k]
  ------------------
 1027|     37|					{
 1028|       |						/* cache where we started so we can parse after validating */
 1029|     37|						char *start = s + 1;
 1030|     37|						size_t len = 0;
 1031|     37|						bool valid = 1;
 1032|     37|						unsigned long codepoint;
 1033|       |
 1034|     37|						if (*start != '{') {
  ------------------
  |  Branch (1034:11): [True: 20, False: 17]
  ------------------
 1035|       |							/* we silently let this pass to avoid breaking code
 1036|       |							 * with JSON in string literals (e.g. "\"\u202e\""
 1037|       |							 */
 1038|     20|							*t++ = '\\';
 1039|     20|							*t++ = 'u';
 1040|     20|							break;
 1041|     20|						} else {
 1042|       |							/* on the other hand, invalid \u{blah} errors */
 1043|     17|							s++;
 1044|     17|							len++;
 1045|     17|							s++;
 1046|     52|							while (*s != '}') {
  ------------------
  |  Branch (1046:15): [True: 46, False: 6]
  ------------------
 1047|     46|								if (!ZEND_IS_HEX(*s)) {
  ------------------
  |  |  122|     46|#define ZEND_IS_HEX(c)  (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F'))
  |  |  ------------------
  |  |  |  Branch (122:27): [True: 41, False: 5]
  |  |  |  Branch (122:39): [True: 15, False: 26]
  |  |  |  Branch (122:53): [True: 12, False: 19]
  |  |  |  Branch (122:65): [True: 7, False: 5]
  |  |  |  Branch (122:79): [True: 19, False: 5]
  |  |  |  Branch (122:91): [True: 13, False: 6]
  |  |  ------------------
  ------------------
 1048|     11|									valid = 0;
 1049|     11|									break;
 1050|     35|								} else {
 1051|     35|									len++;
 1052|     35|								}
 1053|     35|								s++;
 1054|     35|							}
 1055|     17|							if (*s == '}') {
  ------------------
  |  Branch (1055:12): [True: 6, False: 11]
  ------------------
 1056|      6|								valid = 1;
 1057|      6|								len++;
 1058|      6|							}
 1059|     17|						}
 1060|       |
 1061|       |						/* \u{} is invalid */
 1062|     17|						if (len <= 2) {
  ------------------
  |  Branch (1062:11): [True: 4, False: 13]
  ------------------
 1063|      4|							valid = 0;
 1064|      4|						}
 1065|       |
 1066|     17|						if (!valid) {
  ------------------
  |  Branch (1066:11): [True: 11, False: 6]
  ------------------
 1067|     11|							zend_throw_exception(zend_ce_parse_error,
 1068|     11|								"Invalid UTF-8 codepoint escape sequence", 0);
 1069|     11|							zval_ptr_dtor(zendlval);
 1070|     11|							ZVAL_UNDEF(zendlval);
  ------------------
  |  | 1055|     11|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     11|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     11|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1071|     11|							return FAILURE;
 1072|     11|						}
 1073|       |
 1074|     17|						errno = 0;
 1075|      6|						codepoint = strtoul(start + 1, NULL, 16);
 1076|       |
 1077|       |						/* per RFC 3629, UTF-8 can only represent 21 bits */
 1078|      6|						if (codepoint > 0x10FFFF || errno) {
  ------------------
  |  Branch (1078:11): [True: 0, False: 6]
  |  Branch (1078:35): [True: 0, False: 6]
  ------------------
 1079|      0|							zend_throw_exception(zend_ce_parse_error,
 1080|      0|								"Invalid UTF-8 codepoint escape sequence: Codepoint too large", 0);
 1081|      0|							zval_ptr_dtor(zendlval);
 1082|      0|							ZVAL_UNDEF(zendlval);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1083|      0|							return FAILURE;
 1084|      0|						}
 1085|       |
 1086|       |						/* based on https://en.wikipedia.org/wiki/UTF-8#Sample_code */
 1087|      6|						if (codepoint < 0x80) {
  ------------------
  |  Branch (1087:11): [True: 1, False: 5]
  ------------------
 1088|      1|							*t++ = codepoint;
 1089|      5|						} else if (codepoint <= 0x7FF) {
  ------------------
  |  Branch (1089:18): [True: 1, False: 4]
  ------------------
 1090|      1|							*t++ = (codepoint >> 6) + 0xC0;
 1091|      1|							*t++ = (codepoint & 0x3F) + 0x80;
 1092|      4|						} else if (codepoint <= 0xFFFF) {
  ------------------
  |  Branch (1092:18): [True: 3, False: 1]
  ------------------
 1093|      3|							*t++ = (codepoint >> 12) + 0xE0;
 1094|      3|							*t++ = ((codepoint >> 6) & 0x3F) + 0x80;
 1095|      3|							*t++ = (codepoint & 0x3F) + 0x80;
 1096|      3|						} else if (codepoint <= 0x10FFFF) {
  ------------------
  |  Branch (1096:18): [True: 1, False: 0]
  ------------------
 1097|      1|							*t++ = (codepoint >> 18) + 0xF0;
 1098|      1|							*t++ = ((codepoint >> 12) & 0x3F) + 0x80;
 1099|      1|							*t++ = ((codepoint >> 6) & 0x3F) + 0x80;
 1100|      1|							*t++ = (codepoint & 0x3F) + 0x80;
 1101|      1|						}
 1102|      6|					}
 1103|      0|					break;
 1104|  1.55k|				default:
  ------------------
  |  Branch (1104:5): [True: 1.55k, False: 1.54k]
  ------------------
 1105|       |					/* check for an octal */
 1106|  1.55k|					if (ZEND_IS_OCT(*s)) {
  ------------------
  |  |  121|  1.55k|#define ZEND_IS_OCT(c)  ((c)>='0' && (c)<='7')
  |  |  ------------------
  |  |  |  Branch (121:26): [True: 1.15k, False: 400]
  |  |  |  Branch (121:38): [True: 177, False: 976]
  |  |  ------------------
  ------------------
 1107|    177|						char octal_buf[4] = { 0, 0, 0, 0 };
 1108|       |
 1109|    177|						octal_buf[0] = *s;
 1110|    177|						if (ZEND_IS_OCT(*(s+1))) {
  ------------------
  |  |  121|    177|#define ZEND_IS_OCT(c)  ((c)>='0' && (c)<='7')
  |  |  ------------------
  |  |  |  Branch (121:26): [True: 119, False: 58]
  |  |  |  Branch (121:38): [True: 52, False: 67]
  |  |  ------------------
  ------------------
 1111|     52|							octal_buf[1] = *(++s);
 1112|     52|							if (ZEND_IS_OCT(*(s+1))) {
  ------------------
  |  |  121|     52|#define ZEND_IS_OCT(c)  ((c)>='0' && (c)<='7')
  |  |  ------------------
  |  |  |  Branch (121:26): [True: 46, False: 6]
  |  |  |  Branch (121:38): [True: 44, False: 2]
  |  |  ------------------
  ------------------
 1113|     44|								octal_buf[2] = *(++s);
 1114|     44|							}
 1115|     52|						}
 1116|    177|						if (octal_buf[2] && (octal_buf[0] > '3') && !SCNG(heredoc_scan_ahead)) {
  ------------------
  |  |   87|     20|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|     20|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1116:11): [True: 44, False: 133]
  |  Branch (1116:27): [True: 20, False: 24]
  |  Branch (1116:51): [True: 16, False: 4]
  ------------------
 1117|       |							/* 3 octit values must not overflow 0xFF (\377) */
 1118|     16|							zend_error(E_COMPILE_WARNING, "Octal escape sequence overflow \\%s is greater than \\377", octal_buf);
  ------------------
  |  |   29|     16|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
 1119|     16|						}
 1120|       |
 1121|    177|						*t++ = (char) ZEND_STRTOL(octal_buf, NULL, 8);
  ------------------
  |  |   68|    177|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
 1122|  1.37k|					} else {
 1123|  1.37k|						*t++ = '\\';
 1124|  1.37k|						*t++ = *s;
 1125|  1.37k|					}
 1126|  1.55k|					break;
 1127|  3.09k|			}
 1128|  19.3k|		} else {
 1129|  19.3k|			*t++ = *s;
 1130|  19.3k|		}
 1131|       |
 1132|  22.4k|		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
  ------------------
  |  Branch (1132:7): [True: 455, False: 21.9k]
  |  Branch (1132:22): [True: 153, False: 21.8k]
  |  Branch (1132:36): [True: 144, False: 9]
  ------------------
 1133|    599|			CG(zend_lineno)++;
  ------------------
  |  |   35|    599|# define CG(v) (compiler_globals.v)
  ------------------
 1134|    599|		}
 1135|  22.4k|		s++;
 1136|  22.4k|	}
 1137|  1.78k|	*t = 0;
 1138|  1.78k|	Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval);
  ------------------
  |  |  988|  1.78k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  1.78k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  1.78k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|  1.78k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  1.78k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.78k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1139|       |
 1140|  10.9k|skip_escape_conversion:
 1141|  10.9k|	if (SCNG(output_filter)) {
  ------------------
  |  |   87|  10.9k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  10.9k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:23): [True: 0, False: 10.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1142|      0|		size_t sz = 0;
 1143|      0|		unsigned char *str;
 1144|       |		// TODO: avoid realocation ???
 1145|      0|		s = Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1146|      0|		SCNG(output_filter)(&str, &sz, (unsigned char *)s, Z_STRLEN_P(zendlval));
  ------------------
  |  |   87|      0|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|      0|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              		SCNG(output_filter)(&str, &sz, (unsigned char *)s, Z_STRLEN_P(zendlval));
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1147|      0|		zval_ptr_dtor(zendlval);
 1148|      0|		ZVAL_STRINGL(zendlval, (char *) str, sz);
  ------------------
  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1149|       |		efree(str);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1150|      0|	}
 1151|  10.9k|	return SUCCESS;
 1152|  1.78k|}
zend_language_scanner.c:enter_nesting:
 1278|  69.5k|{
 1279|  69.5k|	zend_nest_location nest_loc = {opening, CG(zend_lineno)};
  ------------------
  |  |   35|  69.5k|# define CG(v) (compiler_globals.v)
  ------------------
 1280|  69.5k|	zend_stack_push(&SCNG(nest_location_stack), &nest_loc);
  ------------------
  |  |   87|  69.5k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  69.5k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1281|  69.5k|}
zend_language_scanner.c:exit_nesting:
 1284|  32.7k|{
 1285|  32.7k|	if (zend_stack_is_empty(&SCNG(nest_location_stack))) {
  ------------------
  |  |   87|  32.7k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  32.7k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1285:6): [True: 2.34k, False: 30.3k]
  ------------------
 1286|  2.34k|		zend_throw_exception_ex(zend_ce_parse_error, 0, "Unmatched '%c'", closing);
 1287|  2.34k|		return FAILURE;
 1288|  2.34k|	}
 1289|       |
 1290|  30.3k|	zend_nest_location *nest_loc = zend_stack_top(&SCNG(nest_location_stack));
  ------------------
  |  |   87|  30.3k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  30.3k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1291|  30.3k|	char opening = nest_loc->text;
 1292|       |
 1293|  30.3k|	if ((opening == '{' && closing != '}') ||
  ------------------
  |  Branch (1293:7): [True: 5.09k, False: 25.2k]
  |  Branch (1293:25): [True: 82, False: 5.01k]
  ------------------
 1294|  30.2k|	    (opening == '[' && closing != ']') ||
  ------------------
  |  Branch (1294:7): [True: 3.74k, False: 26.5k]
  |  Branch (1294:25): [True: 1.69k, False: 2.05k]
  ------------------
 1295|  28.5k|	    (opening == '(' && closing != ')')) {
  ------------------
  |  Branch (1295:7): [True: 21.5k, False: 7.06k]
  |  Branch (1295:25): [True: 3.89k, False: 17.6k]
  ------------------
 1296|  5.67k|		report_bad_nesting(opening, nest_loc->lineno, closing);
 1297|  5.67k|		return FAILURE;
 1298|  5.67k|	}
 1299|       |
 1300|  24.6k|	zend_stack_del_top(&SCNG(nest_location_stack));
  ------------------
  |  |   87|  24.6k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  24.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1301|  24.6k|	return SUCCESS;
 1302|  30.3k|}
zend_language_scanner.c:strip_underscores:
  126|     46|{
  127|     46|	char *src = str, *dest = str;
  128|    585|	while (*src != '\0') {
  ------------------
  |  Branch (128:9): [True: 539, False: 46]
  ------------------
  129|    539|		if (*src != '_') {
  ------------------
  |  Branch (129:7): [True: 487, False: 52]
  ------------------
  130|    487|			*dest = *src;
  131|    487|			dest++;
  132|    487|		} else {
  133|     52|			--(*len);
  134|     52|		}
  135|    539|		src++;
  136|    539|	}
  137|     46|	*dest = '\0';
  138|     46|}
zend_language_scanner.c:_yy_push_state:
  168|  44.6k|{
  169|  44.6k|	zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION());
  ------------------
  |  |   87|  44.6k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  44.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
              	zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION());
  ------------------
  |  |   58|  44.6k|#define YYGETCONDITION()  SCNG(yy_state)
  |  |  ------------------
  |  |  |  |   87|  44.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  44.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|  44.6k|	YYSETCONDITION(new_state);
  ------------------
  |  |   59|  44.6k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  ------------------
  |  |  |  |   87|  44.6k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  44.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|  44.6k|}
zend_language_scanner.c:yy_pop_state:
  176|  23.0k|{
  177|  23.0k|	int *stack_state = zend_stack_top(&SCNG(state_stack));
  ------------------
  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  178|  23.0k|	YYSETCONDITION(*stack_state);
  ------------------
  |  |   59|  23.0k|#define YYSETCONDITION(s) SCNG(yy_state) = s
  |  |  ------------------
  |  |  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|  23.0k|	zend_stack_del_top(&SCNG(state_stack));
  ------------------
  |  |   87|  23.0k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  23.0k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
  180|  23.0k|}
zend_language_scanner.c:copy_heredoc_label_stack:
 1248|  11.6k|{
 1249|  11.6k|	zend_heredoc_label *heredoc_label = void_heredoc_label;
 1250|  11.6k|	zend_heredoc_label *new_heredoc_label = emalloc(sizeof(zend_heredoc_label));
  ------------------
  |  |  150|  11.6k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  11.6k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  11.6k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  11.6k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  11.6k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1251|       |
 1252|  11.6k|	*new_heredoc_label = *heredoc_label;
 1253|  11.6k|	new_heredoc_label->label = estrndup(heredoc_label->label, heredoc_label->length);
  ------------------
  |  |  164|  11.6k|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  11.6k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  11.6k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  11.6k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  11.6k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1254|       |
 1255|  11.6k|	zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label);
  ------------------
  |  |   87|  11.6k|#define SCNG	LANG_SCNG
  |  |  ------------------
  |  |  |  |   55|  11.6k|# define LANG_SCNG(v) (language_scanner_globals.v)
  |  |  ------------------
  ------------------
 1256|  11.6k|}
zend_language_scanner.c:strip_multiline_string_indentation:
 1174|  2.05k|{
 1175|  2.05k|	const char *str = Z_STRVAL_P(zendlval), *end = str + Z_STRLEN_P(zendlval);
  ------------------
  |  |  985|  2.05k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  2.05k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  2.05k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	const char *str = Z_STRVAL_P(zendlval), *end = str + Z_STRLEN_P(zendlval);
  ------------------
  |  |  988|  2.05k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  2.05k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  2.05k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1176|  2.05k|	char *copy = Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|  2.05k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  2.05k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  2.05k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1177|       |
 1178|  2.05k|	uint32_t newline_count = 0;
 1179|  2.05k|	size_t newline_len;
 1180|  2.05k|	const char *nl;
 1181|       |
 1182|  2.05k|	if (!newline_at_start) {
  ------------------
  |  Branch (1182:6): [True: 587, False: 1.47k]
  ------------------
 1183|    587|		nl = next_newline(str, end, &newline_len);
 1184|    587|		if (!nl) {
  ------------------
  |  Branch (1184:7): [True: 181, False: 406]
  ------------------
 1185|    181|			return 1;
 1186|    181|		}
 1187|       |
 1188|    406|		str = nl + newline_len;
 1189|    406|		copy = (char *) nl + newline_len;
 1190|    406|		newline_count++;
 1191|  1.47k|	} else {
 1192|  1.47k|		nl = str;
 1193|  1.47k|	}
 1194|       |
 1195|       |	/* <= intentional */
 1196|  4.96k|	while (str <= end && nl) {
  ------------------
  |  Branch (1196:9): [True: 4.96k, False: 0]
  |  Branch (1196:23): [True: 4.16k, False: 799]
  ------------------
 1197|  4.16k|		size_t skip;
 1198|  4.16k|		nl = next_newline(str, end, &newline_len);
 1199|  4.16k|		if (!nl && newline_at_end) {
  ------------------
  |  Branch (1199:7): [True: 2.03k, False: 2.13k]
  |  Branch (1199:14): [True: 368, False: 1.66k]
  ------------------
 1200|    368|			nl = end;
 1201|    368|		}
 1202|       |
 1203|       |		/* Try to skip indentation */
 1204|  4.38k|		for (skip = 0; skip < indentation; skip++, str++) {
  ------------------
  |  Branch (1204:18): [True: 255, False: 4.12k]
  ------------------
 1205|    255|			if (str == nl) {
  ------------------
  |  Branch (1205:8): [True: 18, False: 237]
  ------------------
 1206|       |				/* Don't require full indentation on whitespace-only lines */
 1207|     18|				break;
 1208|     18|			}
 1209|       |
 1210|    237|			if (str == end || (*str != ' ' && *str != '\t')) {
  ------------------
  |  Branch (1210:8): [True: 3, False: 234]
  |  Branch (1210:23): [True: 45, False: 189]
  |  Branch (1210:38): [True: 11, False: 34]
  ------------------
 1211|     14|				CG(zend_lineno) += newline_count;
  ------------------
  |  |   35|     14|# define CG(v) (compiler_globals.v)
  ------------------
 1212|     14|				zend_throw_exception_ex(zend_ce_parse_error, 0,
 1213|     14|					"Invalid body indentation level (expecting an indentation level of at least %d)", indentation);
 1214|     14|				goto error;
 1215|     14|			}
 1216|       |
 1217|    223|			if ((!using_spaces && *str == ' ') || (using_spaces && *str == '\t')) {
  ------------------
  |  Branch (1217:9): [True: 36, False: 187]
  |  Branch (1217:26): [True: 5, False: 31]
  |  Branch (1217:43): [True: 187, False: 31]
  |  Branch (1217:59): [True: 3, False: 184]
  ------------------
 1218|      8|				CG(zend_lineno) += newline_count;
  ------------------
  |  |   35|      8|# define CG(v) (compiler_globals.v)
  ------------------
 1219|      8|				zend_throw_exception(zend_ce_parse_error,
 1220|      8|					"Invalid indentation - tabs and spaces cannot be mixed", 0);
 1221|      8|				goto error;
 1222|      8|			}
 1223|    223|		}
 1224|       |
 1225|  4.14k|		if (str == end) {
  ------------------
  |  Branch (1225:7): [True: 1.05k, False: 3.08k]
  ------------------
 1226|  1.05k|			break;
 1227|  1.05k|		}
 1228|       |
 1229|  3.08k|		size_t len = nl ? (nl - str + newline_len) : (end - str);
  ------------------
  |  Branch (1229:16): [True: 2.29k, False: 799]
  ------------------
 1230|  3.08k|		memmove(copy, str, len);
 1231|  3.08k|		str += len;
 1232|  3.08k|		copy += len;
 1233|  3.08k|		newline_count++;
 1234|  3.08k|	}
 1235|       |
 1236|  1.85k|	*copy = '\0';
 1237|  1.85k|	Z_STRLEN_P(zendlval) = copy - Z_STRVAL_P(zendlval);
  ------------------
  |  |  988|  1.85k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  1.85k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  1.85k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	Z_STRLEN_P(zendlval) = copy - Z_STRVAL_P(zendlval);
  ------------------
  |  |  985|  1.85k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  1.85k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.85k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1238|  1.85k|	return 1;
 1239|       |
 1240|     22|error:
 1241|     22|	zval_ptr_dtor_str(zendlval);
 1242|     22|	ZVAL_UNDEF(zendlval);
  ------------------
  |  | 1055|     22|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     22|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     22|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     22|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     22|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1243|       |
 1244|     22|	return 0;
 1245|  1.87k|}
zend_language_scanner.c:next_newline:
 1157|  4.75k|static const char *next_newline(const char *str, const char *end, size_t *newline_len) {
 1158|  33.4k|	for (; str < end; str++) {
  ------------------
  |  Branch (1158:9): [True: 31.1k, False: 2.21k]
  ------------------
 1159|  31.1k|		if (*str == '\r') {
  ------------------
  |  Branch (1159:7): [True: 294, False: 30.8k]
  ------------------
 1160|    294|			*newline_len = str + 1 < end && *(str + 1) == '\n' ? 2 : 1;
  ------------------
  |  Branch (1160:19): [True: 287, False: 7]
  |  Branch (1160:36): [True: 10, False: 277]
  ------------------
 1161|    294|			return str;
 1162|  30.8k|		} else if (*str == '\n') {
  ------------------
  |  Branch (1162:14): [True: 2.24k, False: 28.6k]
  ------------------
 1163|  2.24k|			*newline_len = 1;
 1164|  2.24k|			return str;
 1165|  2.24k|		}
 1166|  31.1k|	}
 1167|  2.21k|	*newline_len = 0;
 1168|       |	return NULL;
 1169|  4.75k|}

zend_lazy_objects_init:
   85|  33.5k|{
   86|  33.5k|	zend_hash_init(&store->infos, 8, NULL, zend_lazy_object_info_dtor_func, false);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   87|  33.5k|}
zend_lazy_objects_destroy:
   90|  33.5k|{
   91|  33.5k|	ZEND_ASSERT(zend_hash_num_elements(&store->infos) == 0 || CG(unclean_shutdown));
  ------------------
  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (91:2): [True: 33.5k, False: 0]
  |  Branch (91:2): [True: 0, False: 0]
  |  Branch (91:2): [True: 33.5k, False: 0]
  |  Branch (91:2): [True: 0, False: 0]
  ------------------
   92|  33.5k|	zend_hash_destroy(&store->infos);
   93|  33.5k|}
zend_lazy_object_del_info:
  162|      4|{
  163|      4|	zend_result res = zend_hash_index_del(&EG(lazy_objects_store).infos, obj->handle);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  164|       |	ZEND_ASSERT(res == SUCCESS);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (164:2): [True: 0, False: 4]
  |  Branch (164:2): [True: 4, False: 0]
  ------------------
  165|      4|}
zend_object_make_lazy:
  227|      8|{
  228|      8|	ZEND_ASSERT(!(flags & ~(ZEND_LAZY_OBJECT_USER_MASK|ZEND_LAZY_OBJECT_STRATEGY_MASK)));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (228:2): [True: 0, False: 8]
  |  Branch (228:2): [True: 8, False: 0]
  ------------------
  229|      8|	ZEND_ASSERT((flags & ZEND_LAZY_OBJECT_STRATEGY_MASK) == ZEND_LAZY_OBJECT_STRATEGY_GHOST
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (229:2): [True: 8, False: 0]
  |  Branch (229:2): [True: 0, False: 0]
  |  Branch (229:2): [True: 6, False: 2]
  |  Branch (229:2): [True: 2, False: 0]
  ------------------
  230|      8|			|| (flags & ZEND_LAZY_OBJECT_STRATEGY_MASK) == ZEND_LAZY_OBJECT_STRATEGY_PROXY);
  231|       |
  232|      8|	ZEND_ASSERT(!obj || (!zend_object_is_lazy(obj) || zend_lazy_object_initialized(obj)));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (232:2): [True: 0, False: 0]
  |  Branch (232:2): [True: 0, False: 0]
  |  Branch (232:2): [True: 8, False: 0]
  |  Branch (232:2): [True: 0, False: 0]
  |  Branch (232:2): [True: 0, False: 0]
  |  Branch (232:2): [True: 8, False: 0]
  ------------------
  233|      8|	ZEND_ASSERT(!obj || instanceof_function(obj->ce, reflection_ce));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (233:2): [True: 8, False: 0]
  |  Branch (233:2): [True: 0, False: 0]
  |  Branch (233:2): [True: 8, False: 0]
  |  Branch (233:2): [True: 0, False: 0]
  ------------------
  234|       |
  235|       |	/* Internal classes are not supported */
  236|      8|	if (UNEXPECTED(reflection_ce->type == ZEND_INTERNAL_CLASS && reflection_ce != zend_standard_class_def)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  Branch (457:52): [True: 0, False: 8]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  237|      0|		zend_throw_error(NULL, "Cannot make instance of internal class lazy: %s is internal", ZSTR_VAL(reflection_ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  238|      0|		return NULL;
  239|      0|	}
  240|       |
  241|      8|	for (zend_class_entry *parent = reflection_ce->parent; parent; parent = parent->parent) {
  ------------------
  |  Branch (241:57): [True: 0, False: 8]
  ------------------
  242|      0|		if (UNEXPECTED(parent->type == ZEND_INTERNAL_CLASS && parent != zend_standard_class_def)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  243|      0|			zend_throw_error(NULL, "Cannot make instance of internal class lazy: %s inherits internal class %s",
  244|      0|				ZSTR_VAL(reflection_ce->name), ZSTR_VAL(parent->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(reflection_ce->name), ZSTR_VAL(parent->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  245|      0|			return NULL;
  246|      0|		}
  247|      0|	}
  248|       |
  249|      8|	int lazy_properties_count = 0;
  250|       |
  251|      8|	if (!obj) {
  ------------------
  |  Branch (251:6): [True: 8, False: 0]
  ------------------
  252|      8|		if (UNEXPECTED(reflection_ce->ce_flags & ZEND_ACC_UNINSTANTIABLE)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  253|      0|			zval zobj;
  254|       |			/* Call object_init_ex() for the generated exception */
  255|      0|			zend_result result = object_init_ex(&zobj, reflection_ce);
  256|      0|			ZEND_ASSERT(result == FAILURE && EG(exception));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (256:4): [True: 0, False: 0]
  |  Branch (256:4): [True: 0, False: 0]
  |  Branch (256:4): [True: 0, False: 0]
  |  Branch (256:4): [True: 0, False: 0]
  ------------------
  257|      0|			(void)result;
  258|      0|			return NULL;
  259|      0|		}
  260|       |
  261|      8|		if (UNEXPECTED(!(reflection_ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 6]
  |  |  ------------------
  ------------------
  262|      2|			if (UNEXPECTED(zend_update_class_constants(reflection_ce) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  263|      2|				ZEND_ASSERT(EG(exception));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (263:5): [True: 0, False: 2]
  |  Branch (263:5): [True: 2, False: 0]
  ------------------
  264|      2|				return NULL;
  265|      2|			}
  266|      2|		}
  267|       |
  268|      6|		obj = zend_objects_new(reflection_ce);
  269|       |
  270|       |		/* Iterate in reverse to avoid overriding Z_PROP_FLAG_P() of child props with added hooks (GH-17870). */
  271|     10|		for (int i = obj->ce->default_properties_count - 1; i >= 0; i--) {
  ------------------
  |  Branch (271:55): [True: 4, False: 6]
  ------------------
  272|      4|			zval *p = &obj->properties_table[i];
  273|      4|			ZVAL_UNDEF(p);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  274|      4|			Z_PROP_FLAG_P(p) = 0;
  ------------------
  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  275|       |
  276|      4|			zend_property_info *prop_info = obj->ce->properties_info_table[i];
  277|      4|			if (prop_info) {
  ------------------
  |  Branch (277:8): [True: 4, False: 0]
  ------------------
  278|      4|				zval *p = &obj->properties_table[OBJ_PROP_TO_NUM(prop_info->offset)];
  ------------------
  |  |  486|      4|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      4|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
  279|      4|				Z_PROP_FLAG_P(p) = IS_PROP_UNINIT | IS_PROP_LAZY;
  ------------------
  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(p) = IS_PROP_UNINIT | IS_PROP_LAZY;
  ------------------
  |  | 1577|      4|#define IS_PROP_UNINIT (1<<0)
  ------------------
              				Z_PROP_FLAG_P(p) = IS_PROP_UNINIT | IS_PROP_LAZY;
  ------------------
  |  | 1579|      4|#define IS_PROP_LAZY (1<<2)
  ------------------
  280|      4|				lazy_properties_count++;
  281|      4|			}
  282|      4|		}
  283|      6|	} else {
  284|      0|		if (zlo_is_iterating(obj)) {
  ------------------
  |  Branch (284:7): [True: 0, False: 0]
  ------------------
  285|      0|			zend_throw_error(NULL, "Can not reset an object during property iteration");
  286|      0|			return NULL;
  287|      0|		}
  288|      0|		if (zend_object_is_lazy(obj)) {
  ------------------
  |  Branch (288:7): [True: 0, False: 0]
  ------------------
  289|      0|			ZEND_ASSERT(zend_object_is_lazy_proxy(obj) && zend_lazy_object_initialized(obj));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (289:4): [True: 0, False: 0]
  |  Branch (289:4): [True: 0, False: 0]
  |  Branch (289:4): [True: 0, False: 0]
  |  Branch (289:4): [True: 0, False: 0]
  ------------------
  290|      0|			OBJ_EXTRA_FLAGS(obj) &= ~(IS_OBJ_LAZY_UNINITIALIZED|IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|      0|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              			OBJ_EXTRA_FLAGS(obj) &= ~(IS_OBJ_LAZY_UNINITIALIZED|IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  856|      0|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              			OBJ_EXTRA_FLAGS(obj) &= ~(IS_OBJ_LAZY_UNINITIALIZED|IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|      0|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
  291|      0|			zend_lazy_object_del_info(obj);
  292|      0|		} else {
  293|      0|			if (zend_lazy_object_has_stale_info(obj)) {
  ------------------
  |  Branch (293:8): [True: 0, False: 0]
  ------------------
  294|      0|				zend_throw_error(NULL, "Can not reset an object while it is being initialized");
  295|      0|				return NULL;
  296|      0|			}
  297|       |
  298|      0|			if (!(flags & ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR)
  ------------------
  |  |   36|      0|#define ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR                    (1<<4)
  ------------------
  |  Branch (298:8): [True: 0, False: 0]
  ------------------
  299|      0|				&& !(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  852|      0|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				&& !(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  849|      0|#define IS_OBJ_DESTRUCTOR_CALLED	(1<<8)
  ------------------
  |  Branch (299:8): [True: 0, False: 0]
  ------------------
  300|      0|				if (obj->handlers->dtor_obj != zend_objects_destroy_object
  ------------------
  |  Branch (300:9): [True: 0, False: 0]
  ------------------
  301|      0|						|| obj->ce->destructor) {
  ------------------
  |  Branch (301:10): [True: 0, False: 0]
  ------------------
  302|      0|					GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  303|      0|					GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  304|      0|					obj->handlers->dtor_obj(obj);
  305|      0|					GC_DELREF(obj);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  306|      0|					if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  307|      0|						return NULL;
  308|      0|					}
  309|      0|				}
  310|      0|			}
  311|      0|		}
  312|       |
  313|      0|		GC_DEL_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  314|       |
  315|       |		/* unset() dynamic properties. Do not NULL out obj->properties, as this
  316|       |		 * would be unexpected. */
  317|      0|		if (obj->properties) {
  ------------------
  |  Branch (317:7): [True: 0, False: 0]
  ------------------
  318|      0|			if (UNEXPECTED(GC_REFCOUNT(obj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  319|      0|				if (EXPECTED(!(GC_FLAGS(obj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  320|      0|					GC_DELREF(obj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  321|      0|				}
  322|      0|				obj->properties = zend_array_dup(obj->properties);
  323|      0|			}
  324|      0|			zend_hash_reverse_apply(obj->properties, zlo_hash_remove_dyn_props_func);
  325|      0|		}
  326|       |
  327|       |		/* unset() declared properties */
  328|      0|		for (int i = 0; i < reflection_ce->default_properties_count; i++) {
  ------------------
  |  Branch (328:19): [True: 0, False: 0]
  ------------------
  329|      0|			zend_property_info *prop_info = obj->ce->properties_info_table[i];
  330|      0|			if (EXPECTED(prop_info)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  331|      0|				zval *p = &obj->properties_table[OBJ_PROP_TO_NUM(prop_info->offset)];
  ------------------
  |  |  486|      0|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      0|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
  332|      0|				if (Z_TYPE_P(p) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(p) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (332:9): [True: 0, False: 0]
  ------------------
  333|      0|					if ((prop_info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(p) & IS_PROP_REINITABLE)
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              					if ((prop_info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(p) & IS_PROP_REINITABLE)
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if ((prop_info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(p) & IS_PROP_REINITABLE)
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  |  Branch (333:10): [True: 0, False: 0]
  |  Branch (333:52): [True: 0, False: 0]
  ------------------
  334|       |							/* TODO: test final property */
  335|      0|							&& ((obj->ce->ce_flags & ZEND_ACC_FINAL) || (prop_info->flags & ZEND_ACC_FINAL))) {
  ------------------
  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              							&& ((obj->ce->ce_flags & ZEND_ACC_FINAL) || (prop_info->flags & ZEND_ACC_FINAL))) {
  ------------------
  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (335:12): [True: 0, False: 0]
  |  Branch (335:52): [True: 0, False: 0]
  ------------------
  336|      0|						continue;
  337|      0|					}
  338|      0|					zend_object_dtor_property(obj, p);
  339|      0|					ZVAL_UNDEF(p);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  340|      0|				}
  341|      0|				Z_PROP_FLAG_P(p) = IS_PROP_UNINIT | IS_PROP_LAZY;
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(p) = IS_PROP_UNINIT | IS_PROP_LAZY;
  ------------------
  |  | 1577|      0|#define IS_PROP_UNINIT (1<<0)
  ------------------
              				Z_PROP_FLAG_P(p) = IS_PROP_UNINIT | IS_PROP_LAZY;
  ------------------
  |  | 1579|      0|#define IS_PROP_LAZY (1<<2)
  ------------------
  342|      0|				lazy_properties_count++;
  343|      0|			}
  344|      0|		}
  345|      0|	}
  346|       |
  347|       |	/* Objects become non-lazy if all properties are made non-lazy before
  348|       |	 * initialization is triggered. If the object has no properties to begin
  349|       |	 * with, this happens immediately. */
  350|      6|	if (UNEXPECTED(!lazy_properties_count)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
  351|      2|		return obj;
  352|      2|	}
  353|       |
  354|      4|	OBJ_EXTRA_FLAGS(obj) |= IS_OBJ_LAZY_UNINITIALIZED;
  ------------------
  |  |  859|      4|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	OBJ_EXTRA_FLAGS(obj) |= IS_OBJ_LAZY_UNINITIALIZED;
  ------------------
  |  |  856|      4|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
  355|       |
  356|      4|	if (flags & ZEND_LAZY_OBJECT_STRATEGY_PROXY) {
  ------------------
  |  |   24|      4|#define ZEND_LAZY_OBJECT_STRATEGY_PROXY                     (1<<0)
  ------------------
  |  Branch (356:6): [True: 0, False: 4]
  ------------------
  357|      0|		OBJ_EXTRA_FLAGS(obj) |= IS_OBJ_LAZY_PROXY;
  ------------------
  |  |  859|      0|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              		OBJ_EXTRA_FLAGS(obj) |= IS_OBJ_LAZY_PROXY;
  ------------------
  |  |  857|      0|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
  358|      4|	} else {
  359|      4|		ZEND_ASSERT(flags & ZEND_LAZY_OBJECT_STRATEGY_GHOST);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (359:3): [True: 0, False: 4]
  |  Branch (359:3): [True: 4, False: 0]
  ------------------
  360|      4|	}
  361|       |
  362|      4|	zend_lazy_object_info *info = emalloc(sizeof(*info));
  ------------------
  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  363|      4|	zend_fcc_dup(&info->u.initializer.fcc, initializer_fcc);
  364|      4|	ZVAL_COPY(&info->u.initializer.zv, initializer_zv);
  ------------------
  |  | 1425|      4|	do {												\
  |  | 1426|      4|		zval *_z1 = (z);								\
  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      4|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      4|		}												\
  |  | 1434|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  365|      4|	info->flags = flags;
  366|      4|	info->lazy_properties_count = lazy_properties_count;
  367|      4|	zend_lazy_object_set_info(obj, info);
  368|       |
  369|      4|	return obj;
  370|      4|}
zend_lazy_object_init:
  594|      4|{
  595|      4|	ZEND_ASSERT(zend_object_is_lazy(obj));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (595:2): [True: 0, False: 4]
  |  Branch (595:2): [True: 4, False: 0]
  ------------------
  596|       |
  597|       |	/* If obj is an initialized lazy proxy, return the real instance. This
  598|       |	 * supports the following pattern:
  599|       |	 * if (zend_lazy_object_must_init(obj)) {
  600|       |	 *     instance = zend_lazy_object_init(obj);
  601|       |	 * }
  602|       |	 */
  603|      4|	if (zend_lazy_object_initialized(obj)) {
  ------------------
  |  Branch (603:6): [True: 0, False: 4]
  ------------------
  604|      0|		ZEND_ASSERT(zend_object_is_lazy_proxy(obj));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  ------------------
  605|      0|		zend_lazy_object_info *info = zend_lazy_object_get_info(obj);
  606|      0|		ZEND_ASSERT(info->flags & ZEND_LAZY_OBJECT_INITIALIZED);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (606:3): [True: 0, False: 0]
  |  Branch (606:3): [True: 0, False: 0]
  ------------------
  607|      0|		if (zend_object_is_lazy(info->u.instance)) {
  ------------------
  |  Branch (607:7): [True: 0, False: 0]
  ------------------
  608|      0|			return zend_lazy_object_init(info->u.instance);
  609|      0|		}
  610|      0|		return info->u.instance;
  611|      0|	}
  612|       |
  613|      4|	zend_class_entry *ce = obj->ce;
  614|       |
  615|      4|	ZEND_ASSERT(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (615:2): [True: 0, False: 4]
  |  Branch (615:2): [True: 4, False: 0]
  ------------------
  616|       |
  617|      4|	if (zend_object_is_lazy_proxy(obj)) {
  ------------------
  |  Branch (617:6): [True: 0, False: 4]
  ------------------
  618|      0|		return zend_lazy_object_init_proxy(obj);
  619|      0|	}
  620|       |
  621|       |	/* Prevent object from being released during initialization */
  622|      4|	GC_ADDREF(obj);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  623|       |
  624|      4|	zend_fcall_info_cache *initializer = zend_lazy_object_get_initializer_fcc(obj);
  625|       |
  626|       |	/* Prevent reentrant initialization */
  627|      4|	OBJ_EXTRA_FLAGS(obj) &= ~IS_OBJ_LAZY_UNINITIALIZED;
  ------------------
  |  |  859|      4|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	OBJ_EXTRA_FLAGS(obj) &= ~IS_OBJ_LAZY_UNINITIALIZED;
  ------------------
  |  |  856|      4|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
  628|       |
  629|       |	/* Snapshot dynamic properties */
  630|      4|	HashTable *properties_snapshot = obj->properties;
  631|      4|	if (properties_snapshot) {
  ------------------
  |  Branch (631:6): [True: 0, False: 4]
  ------------------
  632|      0|		GC_TRY_ADDREF(properties_snapshot);
  ------------------
  |  |  722|      0|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
  633|      0|	}
  634|       |
  635|      4|	zval *properties_table_snapshot = NULL;
  636|       |
  637|       |	/* Snapshot declared properties and initialize lazy properties to their
  638|       |	 * default value */
  639|      4|	if (ce->default_properties_count) {
  ------------------
  |  Branch (639:6): [True: 4, False: 0]
  ------------------
  640|      4|		zval *default_properties_table = CE_DEFAULT_PROPERTIES_TABLE(ce);
  ------------------
  |  |  337|      4|	zend_class_default_properties_table(ce)
  ------------------
  641|      4|		zval *properties_table = obj->properties_table;
  642|      4|		properties_table_snapshot = emalloc(sizeof(*properties_table_snapshot) * ce->default_properties_count);
  ------------------
  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|       |
  644|      8|		for (int i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (644:19): [True: 4, False: 4]
  ------------------
  645|      4|			ZVAL_COPY_PROP(&properties_table_snapshot[i], &properties_table[i]);
  ------------------
  |  | 1584|      4|	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1425|      4|	do {												\
  |  |  |  | 1426|      4|		zval *_z1 = (z);								\
  |  |  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1584:70): [Folded, False: 4]
  |  |  ------------------
  ------------------
  646|      4|			if (Z_PROP_FLAG_P(&properties_table[i]) & IS_PROP_LAZY) {
  ------------------
  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_PROP_FLAG_P(&properties_table[i]) & IS_PROP_LAZY) {
  ------------------
  |  | 1579|      4|#define IS_PROP_LAZY (1<<2)
  ------------------
  |  Branch (646:8): [True: 4, False: 0]
  ------------------
  647|      4|				ZVAL_COPY_PROP(&properties_table[i], &default_properties_table[i]);
  ------------------
  |  | 1584|      4|	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1425|      4|	do {												\
  |  |  |  | 1426|      4|		zval *_z1 = (z);								\
  |  |  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
  |  |  ------------------
  |  |  |  | 1580|      4|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  |  |  ------------------
  |  |  |  |  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1584:70): [Folded, False: 4]
  |  |  ------------------
  ------------------
  648|      4|			}
  649|      4|		}
  650|      4|	}
  651|       |
  652|       |	/* Call initializer */
  653|      4|	zval retval;
  654|      4|	int argc = 1;
  655|      4|	zval zobj;
  656|      4|	HashTable *named_params = NULL;
  657|      4|	zend_object *instance = NULL;
  658|       |
  659|      4|	ZVAL_OBJ(&zobj, obj);
  ------------------
  |  | 1140|      4|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      4|		zval *__z = (z);						\
  |  | 1142|      4|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      4|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      4|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  660|       |
  661|      4|	zend_call_known_fcc(initializer, &retval, argc, &zobj, named_params);
  662|       |
  663|      4|	if (EG(exception)) {
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  664|      2|		zend_lazy_object_revert_init(obj, properties_table_snapshot, properties_snapshot);
  665|      2|		goto exit;
  666|      2|	}
  667|       |
  668|      2|	if (Z_TYPE(retval) != IS_NULL) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(retval) != IS_NULL) {
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (668:6): [True: 0, False: 2]
  ------------------
  669|      0|		zend_lazy_object_revert_init(obj, properties_table_snapshot, properties_snapshot);
  670|      0|		zval_ptr_dtor(&retval);
  671|      0|		zend_type_error("Lazy object initializer must return NULL or no value");
  672|      0|		goto exit;
  673|      0|	}
  674|       |
  675|      2|	if (properties_table_snapshot) {
  ------------------
  |  Branch (675:6): [True: 2, False: 0]
  ------------------
  676|      4|		for (int i = 0; i < obj->ce->default_properties_count; i++) {
  ------------------
  |  Branch (676:19): [True: 2, False: 2]
  ------------------
  677|      2|			zval *p = &properties_table_snapshot[i];
  678|       |			/* Use zval_ptr_dtor directly here (not zend_object_dtor_property),
  679|       |			 * as any reference type_source will have already been deleted in
  680|       |			 * case the prop is not bound to this value anymore. */
  681|      2|			i_zval_ptr_dtor(p);
  682|      2|		}
  683|      2|		efree(properties_table_snapshot);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  684|      2|	}
  685|       |
  686|      2|	if (properties_snapshot) {
  ------------------
  |  Branch (686:6): [True: 0, False: 2]
  ------------------
  687|      0|		zend_release_properties(properties_snapshot);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  688|      0|	}
  689|       |
  690|       |	/* Must be very last in this function, for the
  691|       |	 * zend_lazy_object_has_stale_info() check */
  692|      2|	zend_lazy_object_del_info(obj);
  693|       |
  694|      2|	instance = obj;
  695|       |
  696|      4|exit:
  697|      4|	if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  698|      0|		zend_throw_error(NULL, "Lazy object was released during initialization");
  699|      0|		zend_objects_store_del(obj);
  700|      0|		instance = NULL;
  701|      4|	} else {
  702|      4|		gc_check_possible_root((zend_refcounted*) obj);
  703|      4|	}
  704|       |
  705|      4|	return instance;
  706|      2|}
zend_lazy_object_get_gc:
  810|      4|{
  811|      4|	ZEND_ASSERT(zend_object_is_lazy(zobj));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (811:2): [True: 0, False: 4]
  |  Branch (811:2): [True: 4, False: 0]
  ------------------
  812|       |
  813|      4|	zend_lazy_object_info *info = zend_lazy_object_get_info(zobj);
  814|      4|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  815|       |
  816|      4|	if (zend_lazy_object_initialized(zobj)) {
  ------------------
  |  Branch (816:6): [True: 0, False: 4]
  ------------------
  817|      0|		ZEND_ASSERT(zend_object_is_lazy_proxy(zobj));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (817:3): [True: 0, False: 0]
  |  Branch (817:3): [True: 0, False: 0]
  ------------------
  818|      0|		zend_get_gc_buffer_add_obj(gc_buffer, info->u.instance);
  819|      0|		zend_get_gc_buffer_use(gc_buffer, table, n);
  820|       |		/* Initialized proxy object can not have properties */
  821|      0|		return NULL;
  822|      0|	}
  823|       |
  824|      4|	zend_fcall_info_cache *fcc = &info->u.initializer.fcc;
  825|      4|	if (fcc->object) {
  ------------------
  |  Branch (825:6): [True: 0, False: 4]
  ------------------
  826|      0|		zend_get_gc_buffer_add_obj(gc_buffer, fcc->object);
  827|      0|	}
  828|      4|	if (fcc->closure) {
  ------------------
  |  Branch (828:6): [True: 4, False: 0]
  ------------------
  829|      4|		zend_get_gc_buffer_add_obj(gc_buffer, fcc->closure);
  830|      4|	}
  831|      4|	zend_get_gc_buffer_add_zval(gc_buffer, &info->u.initializer.zv);
  832|       |
  833|       |	/* Uninitialized lazy objects can not have dynamic properties, so we can
  834|       |	 * ignore zobj->properties. */
  835|      4|	zval *prop = zobj->properties_table;
  836|      4|	zval *end = prop + zobj->ce->default_properties_count;
  837|      8|	for ( ; prop < end; prop++) {
  ------------------
  |  Branch (837:10): [True: 4, False: 4]
  ------------------
  838|      4|		zend_get_gc_buffer_add_zval(gc_buffer, prop);
  839|      4|	}
  840|       |
  841|      4|	zend_get_gc_buffer_use(gc_buffer, table, n);
  842|       |	return NULL;
  843|      4|}
zend_lazy_objects.c:zend_lazy_object_info_dtor_func:
   70|      4|{
   71|      4|	zend_lazy_object_info *info = (zend_lazy_object_info*) Z_PTR_P(pElement);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
   72|       |
   73|      4|	if (info->flags & ZEND_LAZY_OBJECT_INITIALIZED) {
  ------------------
  |  |   30|      4|#define ZEND_LAZY_OBJECT_INITIALIZED                        (1<<2)
  ------------------
  |  Branch (73:6): [True: 0, False: 4]
  ------------------
   74|      0|		ZEND_ASSERT(info->flags & ZEND_LAZY_OBJECT_STRATEGY_PROXY);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 0]
  |  Branch (74:3): [True: 0, False: 0]
  ------------------
   75|      0|		zend_object_release(info->u.instance);
   76|      4|	} else {
   77|      4|		zval_ptr_dtor(&info->u.initializer.zv);
   78|      4|		zend_fcc_dtor(&info->u.initializer.fcc);
   79|      4|	}
   80|       |
   81|      4|	efree(info);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|      4|}
zend_lazy_objects.c:zend_lazy_object_get_info:
  105|      8|{
  106|      8|	ZEND_ASSERT(zend_object_is_lazy(obj));
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (106:2): [True: 0, False: 8]
  |  Branch (106:2): [True: 8, False: 0]
  ------------------
  107|       |
  108|      8|	zend_lazy_object_info *info = zend_hash_index_find_ptr(&EG(lazy_objects_store).infos, obj->handle);
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  ------------------
  109|      8|	ZEND_ASSERT(info);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (109:2): [True: 0, False: 8]
  |  Branch (109:2): [True: 8, False: 0]
  ------------------
  110|       |
  111|      8|	return info;
  112|      8|}
zend_lazy_objects.c:zend_lazy_object_set_info:
   96|      4|{
   97|      4|	ZEND_ASSERT(zend_object_is_lazy(obj));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (97:2): [True: 0, False: 4]
  |  Branch (97:2): [True: 4, False: 0]
  ------------------
   98|       |
   99|      4|	zval *zv = zend_hash_index_add_new_ptr(&EG(lazy_objects_store).infos, obj->handle, info);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  100|      4|	ZEND_ASSERT(zv);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (100:2): [True: 0, False: 4]
  |  Branch (100:2): [True: 4, False: 0]
  ------------------
  101|      4|	(void)zv;
  102|      4|}
zend_lazy_objects.c:zend_lazy_object_get_initializer_fcc:
  131|      4|{
  132|      4|	ZEND_ASSERT(!zend_lazy_object_initialized(obj));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (132:2): [True: 0, False: 4]
  |  Branch (132:2): [True: 4, False: 0]
  ------------------
  133|       |
  134|      4|	zend_lazy_object_info *info = zend_lazy_object_get_info(obj);
  135|       |
  136|      4|	ZEND_ASSERT(!(info->flags & ZEND_LAZY_OBJECT_INITIALIZED));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (136:2): [True: 0, False: 4]
  |  Branch (136:2): [True: 4, False: 0]
  ------------------
  137|       |
  138|      4|	return &info->u.initializer.fcc;
  139|      4|}
zend_lazy_objects.c:zend_lazy_object_revert_init:
  405|      2|{
  406|      2|	zend_class_entry *ce = obj->ce;
  407|       |
  408|      2|	if (ce->default_properties_count) {
  ------------------
  |  Branch (408:6): [True: 2, False: 0]
  ------------------
  409|      2|		ZEND_ASSERT(properties_table_snapshot);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (409:3): [True: 0, False: 2]
  |  Branch (409:3): [True: 2, False: 0]
  ------------------
  410|      2|		zval *properties_table = obj->properties_table;
  411|       |
  412|      4|		for (int i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (412:19): [True: 2, False: 2]
  ------------------
  413|      2|			zend_property_info *prop_info = ce->properties_info_table[i];
  414|      2|			if (!prop_info) {
  ------------------
  |  Branch (414:8): [True: 0, False: 2]
  ------------------
  415|      0|				continue;
  416|      0|			}
  417|       |
  418|      2|			zval *p = &properties_table[OBJ_PROP_TO_NUM(prop_info->offset)];
  ------------------
  |  |  486|      2|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|      2|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
  419|      2|			zend_object_dtor_property(obj, p);
  420|      2|			ZVAL_COPY_VALUE_PROP(p, &properties_table_snapshot[OBJ_PROP_TO_NUM(prop_info->offset)]);
  ------------------
  |  | 1582|      2|	do { *(z) = *(v); } while (0)
  |  |  ------------------
  |  |  |  Branch (1582:29): [Folded, False: 2]
  |  |  ------------------
  ------------------
  421|       |
  422|      2|			if (Z_ISREF_P(p) && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(p) && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  423|      0|				ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(p), prop_info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  424|      0|			}
  425|      2|		}
  426|       |
  427|      2|		efree(properties_table_snapshot);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  428|      2|	}
  429|      2|	if (properties_snapshot) {
  ------------------
  |  Branch (429:6): [True: 0, False: 2]
  ------------------
  430|      0|		if (obj->properties != properties_snapshot) {
  ------------------
  |  Branch (430:7): [True: 0, False: 0]
  ------------------
  431|      0|			ZEND_ASSERT((GC_FLAGS(properties_snapshot) & IS_ARRAY_IMMUTABLE) || GC_REFCOUNT(properties_snapshot) >= 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (431:4): [True: 0, False: 0]
  |  Branch (431:4): [True: 0, False: 0]
  |  Branch (431:4): [True: 0, False: 0]
  |  Branch (431:4): [True: 0, False: 0]
  ------------------
  432|      0|			zend_release_properties(obj->properties);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  433|      0|			obj->properties = properties_snapshot;
  434|      0|		} else {
  435|      0|			ZEND_ASSERT((GC_FLAGS(properties_snapshot) & IS_ARRAY_IMMUTABLE) || GC_REFCOUNT(properties_snapshot) > 1);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (435:4): [True: 0, False: 0]
  |  Branch (435:4): [True: 0, False: 0]
  |  Branch (435:4): [True: 0, False: 0]
  |  Branch (435:4): [True: 0, False: 0]
  ------------------
  436|      0|			zend_release_properties(properties_snapshot);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  437|      0|		}
  438|      2|	} else if (obj->properties) {
  ------------------
  |  Branch (438:13): [True: 0, False: 2]
  ------------------
  439|      0|		zend_release_properties(obj->properties);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  440|      0|		obj->properties = NULL;
  441|      0|	}
  442|       |
  443|      2|	OBJ_EXTRA_FLAGS(obj) |= IS_OBJ_LAZY_UNINITIALIZED;
  ------------------
  |  |  859|      2|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	OBJ_EXTRA_FLAGS(obj) |= IS_OBJ_LAZY_UNINITIALIZED;
  ------------------
  |  |  856|      2|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
  444|      2|}

array.c:zend_object_is_lazy_proxy:
   86|      1|{
   87|      1|	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|      1|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|      1|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   88|      1|}
var_unserializer.c:zend_object_is_lazy_proxy:
   86|      8|{
   87|      8|	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|      8|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|      8|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   88|      8|}
var.c:zend_object_is_lazy:
   81|    280|{
   82|    280|	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  859|    280|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  856|    280|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  857|    280|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   83|    280|}
var.c:zend_object_is_lazy_proxy:
   86|    115|{
   87|    115|	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|    115|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|    115|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   88|    115|}
zend_execute.c:zend_lazy_object_must_init:
   98|    104|{
   99|    104|	return zend_object_is_lazy(obj);
  100|    104|}
zend_execute.c:zend_object_is_lazy:
   81|    114|{
   82|    114|	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  859|    114|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  856|    114|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  857|    114|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   83|    114|}
zend_execute.c:zend_object_is_lazy_proxy:
   86|      2|{
   87|      2|	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|      2|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|      2|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   88|      2|}
zend_lazy_objects.c:zend_lazy_object_initialized:
   91|     12|{
   92|     12|	return !(OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_UNINITIALIZED);
  ------------------
  |  |  859|     12|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return !(OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_UNINITIALIZED);
  ------------------
  |  |  856|     12|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
   93|     12|}
zend_lazy_objects.c:zend_object_is_lazy_proxy:
   86|      4|{
   87|      4|	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|      4|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|      4|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   88|      4|}
zend_lazy_objects.c:zend_object_is_lazy:
   81|     20|{
   82|     20|	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  859|     20|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  856|     20|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  857|     20|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   83|     20|}
zend_object_handlers.c:zend_object_is_lazy_proxy:
   86|  5.14k|{
   87|  5.14k|	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  859|  5.14k|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & IS_OBJ_LAZY_PROXY);
  ------------------
  |  |  857|  5.14k|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   88|  5.14k|}
zend_object_handlers.c:zend_object_is_lazy:
   81|  11.7k|{
   82|  11.7k|	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  859|  11.7k|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  856|  11.7k|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  857|  11.7k|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   83|  11.7k|}
zend_object_handlers.c:zend_lazy_object_must_init:
   98|  10.8k|{
   99|  10.8k|	return zend_object_is_lazy(obj);
  100|  10.8k|}
zend_objects.c:zend_object_is_lazy:
   81|  31.4k|{
   82|  31.4k|	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  859|  31.4k|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  856|  31.4k|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  857|  31.4k|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   83|  31.4k|}
zend_property_hooks.c:zend_lazy_object_must_init:
   98|      8|{
   99|      8|	return zend_object_is_lazy(obj);
  100|      8|}
zend_property_hooks.c:zend_object_is_lazy:
   81|      8|{
   82|      8|	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  859|      8|#define OBJ_EXTRA_FLAGS(obj)		((obj)->extra_flags)
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  856|      8|#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
  ------------------
              	return (OBJ_EXTRA_FLAGS(obj) & (IS_OBJ_LAZY_UNINITIALIZED | IS_OBJ_LAZY_PROXY));
  ------------------
  |  |  857|      8|#define IS_OBJ_LAZY_PROXY           (1U<<30) /* Virtual proxy (may be initialized) */
  ------------------
   83|      8|}

zend_list_insert:
   32|    720|{
   33|    720|	zval zv;
   34|       |
   35|    720|	zend_long index = zend_hash_next_free_element(&EG(regular_list));
  ------------------
  |  |   45|    720|# define EG(v) (executor_globals.v)
  ------------------
   36|    720|	if (index == 0) {
  ------------------
  |  Branch (36:6): [True: 48, False: 672]
  ------------------
   37|     48|		index = 1;
   38|    672|	} else if (index == ZEND_LONG_MAX) {
  ------------------
  |  |   34|    672|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (38:13): [True: 0, False: 672]
  ------------------
   39|      0|		zend_error_noreturn(E_ERROR, "Resource ID space overflow");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   40|      0|	}
   41|    720|	ZVAL_NEW_RES(&zv, index, ptr, type);
  ------------------
  |  | 1160|    720|#define ZVAL_NEW_RES(z, h, p, t) do {							\
  |  | 1161|    720|		zend_resource *_res =									\
  |  | 1162|    720|		(zend_resource *) emalloc(sizeof(zend_resource));		\
  |  |  ------------------
  |  |  |  |  150|    720|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    720|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    720|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    720|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    720|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1163|    720|		zval *__z;												\
  |  | 1164|    720|		GC_SET_REFCOUNT(_res, 1);								\
  |  |  ------------------
  |  |  |  |  717|    720|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1165|    720|		GC_TYPE_INFO(_res) = GC_RESOURCE;						\
  |  |  ------------------
  |  |  |  |  775|    720|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_res) = GC_RESOURCE;						\
  |  |  ------------------
  |  |  |  |  809|    720|#define GC_RESOURCE					(IS_RESOURCE     | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    720|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  |  |               #define GC_RESOURCE					(IS_RESOURCE     | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|    720|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_RESOURCE					(IS_RESOURCE     | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    720|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1166|    720|		_res->handle = (h);										\
  |  | 1167|    720|		_res->type = (t);										\
  |  | 1168|    720|		_res->ptr = (p);										\
  |  | 1169|    720|		__z = (z);												\
  |  | 1170|    720|		Z_RES_P(__z) = _res;									\
  |  |  ------------------
  |  |  |  | 1018|    720|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    720|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1171|    720|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|    720|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    720|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;					\
  |  |  ------------------
  |  |  |  |  831|    720|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|    720|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    720|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    720|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1172|    720|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1172:11): [Folded, False: 720]
  |  |  ------------------
  ------------------
   42|    720|	return zend_hash_index_add_new(&EG(regular_list), index, &zv);
  ------------------
  |  |   45|    720|# define EG(v) (executor_globals.v)
  ------------------
   43|    720|}
zend_list_delete:
   46|     40|{
   47|     40|	if (GC_DELREF(res) <= 0) {
  ------------------
  |  |  719|     40|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (47:6): [True: 33, False: 7]
  ------------------
   48|     33|		return zend_hash_index_del(&EG(regular_list), res->handle);
  ------------------
  |  |   45|     33|# define EG(v) (executor_globals.v)
  ------------------
   49|     33|	} else {
   50|      7|		return SUCCESS;
   51|      7|	}
   52|     40|}
zend_list_free:
   55|      2|{
   56|      2|	ZEND_ASSERT(GC_REFCOUNT(res) == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (56:2): [True: 0, False: 2]
  |  Branch (56:2): [True: 2, False: 0]
  ------------------
   57|      2|	zend_hash_index_del(&EG(regular_list), res->handle);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   58|      2|}
zend_list_close:
   78|     32|{
   79|     32|	if (GC_REFCOUNT(res) <= 0) {
  ------------------
  |  |  716|     32|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (79:6): [True: 0, False: 32]
  ------------------
   80|      0|		zend_list_free(res);
   81|     32|	} else if (res->type >= 0) {
  ------------------
  |  Branch (81:13): [True: 32, False: 0]
  ------------------
   82|     32|		zend_resource_dtor(res);
   83|     32|	}
   84|     32|}
zend_register_resource:
   87|    720|{
   88|    720|	zval *zv;
   89|       |
   90|    720|	zv = zend_list_insert(rsrc_pointer, rsrc_type);
   91|       |
   92|    720|	return Z_RES_P(zv);
  ------------------
  |  | 1018|    720|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|    720|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
   93|    720|}
list_entry_destructor:
  174|    720|{
  175|    720|	zend_resource *res = Z_RES_P(zv);
  ------------------
  |  | 1018|    720|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|    720|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  176|       |
  177|    720|	ZVAL_UNDEF(zv);
  ------------------
  |  | 1055|    720|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    720|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    720|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    720|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    720|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    720|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 720]
  |  |  ------------------
  ------------------
  178|    720|	if (res->type >= 0) {
  ------------------
  |  Branch (178:6): [True: 3, False: 717]
  ------------------
  179|      3|		zend_resource_dtor(res);
  180|      3|	}
  181|       |	efree_size(res, sizeof(zend_resource));
  ------------------
  |  |  138|    720|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|    720|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    720|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    720|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    720|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    720|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|    720|}
zend_init_rsrc_list:
  202|  33.5k|{
  203|  33.5k|	zend_hash_init(&EG(regular_list), 8, NULL, list_entry_destructor, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  204|  33.5k|	EG(regular_list).nNextFreeElement = 0;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  205|  33.5k|}
zend_init_rsrc_plist:
  209|      2|{
  210|      2|	zend_hash_init(&EG(persistent_list), 8, NULL, plist_entry_destructor, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  211|      2|}
zend_close_rsrc_list:
  215|  33.5k|{
  216|  33.5k|	uint32_t i = ht->nNumUsed;
  217|  33.5k|	uint32_t num = ht->nNumUsed;
  218|       |
  219|  34.2k|retry:
  220|  34.2k|	zend_try {
  ------------------
  |  |  276|  34.2k|	{															\
  |  |  277|  34.2k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  34.2k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  34.2k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  34.2k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  34.2k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  34.2k|																\
  |  |  280|  34.2k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  34.2k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  34.2k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  34.2k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 34.2k, False: 0]
  |  |  ------------------
  ------------------
  221|   144k|		while (i-- > 0) {
  ------------------
  |  Branch (221:10): [True: 110k, False: 34.2k]
  ------------------
  222|       |			/* Reload ht->arData on each iteration, as it may be reallocated. */
  223|   110k|			zval *p = ZEND_HASH_ELEMENT(ht, i);
  ------------------
  |  | 1020|   110k|	ZEND_HASH_ELEMENT_EX(__ht, _idx, ZEND_HASH_ELEMENT_SIZE(__ht))
  |  |  ------------------
  |  |  |  | 1017|   110k|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  ------------------
  ------------------
  224|   110k|			if (Z_TYPE_P(p) != IS_UNDEF) {
  ------------------
  |  |  669|   110k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|   110k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(p) != IS_UNDEF) {
  ------------------
  |  |  606|   110k|#define IS_UNDEF					0
  ------------------
  |  Branch (224:8): [True: 110k, False: 20]
  ------------------
  225|   110k|				zend_resource *res = Z_PTR_P(p);
  ------------------
  |  | 1053|   110k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|   110k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  226|   110k|				if (res->type >= 0) {
  ------------------
  |  Branch (226:9): [True: 685, False: 109k]
  ------------------
  227|    685|					zend_resource_dtor(res);
  228|       |
  229|    685|					if (UNEXPECTED(ht->nNumUsed != num)) {
  ------------------
  |  |  457|    685|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 685]
  |  |  ------------------
  ------------------
  230|       |						/* New resources were added, reloop from the start.
  231|       |						 * We need to keep the top->down order to avoid freeing resources
  232|       |						 * in use by the newly created resources. */
  233|      0|						i = num = ht->nNumUsed;
  234|      0|					}
  235|    685|				}
  236|   110k|			}
  237|   110k|		}
  238|  34.2k|	} zend_catch {
  ------------------
  |  |  283|  34.2k|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|  34.2k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|  34.2k|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|    662|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|    662|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (238:4): [True: 0, False: 34.2k]
  |  Branch (238:4): [True: 33.5k, False: 662]
  |  Branch (238:4): [True: 0, False: 0]
  |  Branch (238:4): [True: 662, False: 18.4E]
  ------------------
  239|    662|		if (UNEXPECTED(ht->nNumUsed != num)) {
  ------------------
  |  |  457|    662|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 662]
  |  |  ------------------
  ------------------
  240|       |			/* See above */
  241|      0|			i = num = ht->nNumUsed;
  242|      0|		}
  243|       |
  244|       |		/* If we have bailed, we probably executed user code (e.g. user stream
  245|       |		 * API). Keep closing resources so they don't leak. User handlers must be
  246|       |		 * called now so they aren't called in zend_deactivate() on
  247|       |		 * zend_destroy_rsrc_list(&EG(regular_list)). At that point, the executor
  248|       |		 * has already shut down and the process would crash. */
  249|    662|		goto retry;
  250|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|  34.2k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  251|  33.5k|}
zend_destroy_rsrc_list:
  255|  33.5k|{
  256|  33.5k|	zend_hash_graceful_reverse_destroy(ht);
  257|  33.5k|}
zend_register_list_destructors_ex:
  288|     18|{
  289|     18|	zend_rsrc_list_dtors_entry *lde;
  290|     18|	zval zv;
  291|       |
  292|     18|	lde = malloc(sizeof(zend_rsrc_list_dtors_entry));
  293|     18|	lde->list_dtor_ex = ld;
  294|     18|	lde->plist_dtor_ex = pld;
  295|     18|	lde->module_number = module_number;
  296|     18|	lde->resource_id = list_destructors.nNextFreeElement;
  297|     18|	lde->type_name = type_name;
  298|     18|	ZVAL_PTR(&zv, lde);
  ------------------
  |  | 1251|     18|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     18|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     18|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     18|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     18|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     18|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     18|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     18|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
  299|       |
  300|     18|	if (zend_hash_next_index_insert(&list_destructors, &zv) == NULL) {
  ------------------
  |  Branch (300:6): [True: 0, False: 18]
  ------------------
  301|      0|		free(lde);
  302|      0|		return FAILURE;
  303|      0|	}
  304|     18|	return list_destructors.nNextFreeElement-1;
  305|     18|}
zend_init_rsrc_list_dtors:
  326|      2|{
  327|      2|	zend_hash_init(&list_destructors, 64, NULL, list_destructors_dtor, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  328|      2|	list_destructors.nNextFreeElement=1;	/* we don't want resource type 0 */
  329|      2|}
zend_list.c:zend_resource_dtor:
   61|    720|{
   62|    720|	zend_rsrc_list_dtors_entry *ld;
   63|    720|	zend_resource r = *res;
   64|       |
   65|    720|	res->type = -1;
   66|    720|	res->ptr = NULL;
   67|       |
   68|    720|	ld = zend_hash_index_find_ptr(&list_destructors, r.type);
   69|    720|	ZEND_ASSERT(ld && "Unknown list entry type");
  ------------------
  |  |  112|    720|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (69:2): [True: 0, False: 720]
  |  Branch (69:2): [True: 0, False: 0]
  |  Branch (69:2): [True: 720, False: 0]
  |  Branch (69:2): [True: 720, False: 0]
  ------------------
   70|       |
   71|    720|	if (ld->list_dtor_ex) {
  ------------------
  |  Branch (71:6): [True: 718, False: 2]
  ------------------
   72|    718|		ld->list_dtor_ex(&r);
   73|    718|	}
   74|    720|}

zend_llist_init:
   24|  67.8k|{
   25|  67.8k|	l->head  = NULL;
   26|       |	l->tail  = NULL;
   27|  67.8k|	l->count = 0;
   28|  67.8k|	l->size  = size;
   29|  67.8k|	l->dtor  = dtor;
   30|  67.8k|	l->persistent = persistent;
   31|  67.8k|}
zend_llist_add_element:
   34|  41.9k|{
   35|  41.9k|	zend_llist_element *tmp = pemalloc(sizeof(zend_llist_element)+l->size-1, l->persistent);
  ------------------
  |  |  188|  41.9k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  41.9k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  41.9k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  41.9k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  41.9k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  41.9k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 11, False: 41.9k]
  |  |  ------------------
  ------------------
   36|       |
   37|  41.9k|	tmp->prev = l->tail;
   38|  41.9k|	tmp->next = NULL;
   39|  41.9k|	if (l->tail) {
  ------------------
  |  Branch (39:6): [True: 0, False: 41.9k]
  ------------------
   40|      0|		l->tail->next = tmp;
   41|  41.9k|	} else {
   42|  41.9k|		l->head = tmp;
   43|  41.9k|	}
   44|  41.9k|	l->tail = tmp;
   45|  41.9k|	memcpy(tmp->data, element, l->size);
   46|       |
   47|  41.9k|	++l->count;
   48|  41.9k|}
zend_llist_del_element:
   88|  7.18k|{
   89|  7.18k|	zend_llist_element *current=l->head;
   90|       |
   91|  7.18k|	while (current) {
  ------------------
  |  Branch (91:9): [True: 7.18k, False: 0]
  ------------------
   92|  7.18k|		if (compare(current->data, element)) {
  ------------------
  |  Branch (92:7): [True: 7.18k, False: 0]
  ------------------
   93|  7.18k|			DEL_LLIST_ELEMENT(current, l);
  ------------------
  |  |   70|  7.18k|			if ((current)->prev) {\
  |  |  ------------------
  |  |  |  Branch (70:8): [True: 0, False: 7.18k]
  |  |  ------------------
  |  |   71|      0|				(current)->prev->next = (current)->next;\
  |  |   72|  7.18k|			} else {\
  |  |   73|  7.18k|				(l)->head = (current)->next;\
  |  |   74|  7.18k|			}\
  |  |   75|  7.18k|			if ((current)->next) {\
  |  |  ------------------
  |  |  |  Branch (75:8): [True: 0, False: 7.18k]
  |  |  ------------------
  |  |   76|      0|				(current)->next->prev = (current)->prev;\
  |  |   77|  7.18k|			} else {\
  |  |   78|  7.18k|				(l)->tail = (current)->prev;\
  |  |   79|  7.18k|			}\
  |  |   80|  7.18k|			if ((l)->dtor) {\
  |  |  ------------------
  |  |  |  Branch (80:8): [True: 7.18k, False: 0]
  |  |  ------------------
  |  |   81|  7.18k|				(l)->dtor((current)->data);\
  |  |   82|  7.18k|			}\
  |  |   83|  7.18k|			pefree((current), (l)->persistent);\
  |  |  ------------------
  |  |  |  |  190|  7.18k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|  7.18k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|  7.18k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|  7.18k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|  7.18k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|  7.18k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (190:35): [True: 0, False: 7.18k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|  7.18k|			--l->count;
  ------------------
   94|  7.18k|			break;
   95|  7.18k|		}
   96|      0|		current = current->next;
   97|      0|	}
   98|  7.18k|}
zend_llist_destroy:
  102|   101k|{
  103|   101k|	zend_llist_element *current=l->head, *next;
  104|       |
  105|   136k|	while (current) {
  ------------------
  |  Branch (105:9): [True: 34.7k, False: 101k]
  ------------------
  106|  34.7k|		next = current->next;
  107|  34.7k|		if (l->dtor) {
  ------------------
  |  Branch (107:7): [True: 34.7k, False: 7]
  ------------------
  108|  34.7k|			l->dtor(current->data);
  109|  34.7k|		}
  110|  34.7k|		pefree(current, l->persistent);
  ------------------
  |  |  190|  34.7k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  34.7k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  34.7k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  34.7k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  34.7k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  34.7k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 7, False: 34.7k]
  |  |  ------------------
  ------------------
  111|  34.7k|		current = next;
  112|  34.7k|	}
  113|       |
  114|   101k|	l->head  = NULL;
  115|       |	l->tail  = NULL;
  116|   101k|	l->count = 0;
  117|   101k|}
zend_llist_clean:
  121|  33.5k|{
  122|  33.5k|	zend_llist_destroy(l);
  123|  33.5k|}
zend_llist_apply_with_del:
  163|      2|{
  164|      2|	zend_llist_element *element, *next;
  165|       |
  166|      2|	element=l->head;
  167|      4|	while (element) {
  ------------------
  |  Branch (167:9): [True: 2, False: 2]
  ------------------
  168|      2|		next = element->next;
  169|      2|		if (func(element->data)) {
  ------------------
  |  Branch (169:7): [True: 0, False: 2]
  ------------------
  170|       |			DEL_LLIST_ELEMENT(element, l);
  ------------------
  |  |   70|      0|			if ((current)->prev) {\
  |  |  ------------------
  |  |  |  Branch (70:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   71|      0|				(current)->prev->next = (current)->next;\
  |  |   72|      0|			} else {\
  |  |   73|      0|				(l)->head = (current)->next;\
  |  |   74|      0|			}\
  |  |   75|      0|			if ((current)->next) {\
  |  |  ------------------
  |  |  |  Branch (75:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   76|      0|				(current)->next->prev = (current)->prev;\
  |  |   77|      0|			} else {\
  |  |   78|      0|				(l)->tail = (current)->prev;\
  |  |   79|      0|			}\
  |  |   80|      0|			if ((l)->dtor) {\
  |  |  ------------------
  |  |  |  Branch (80:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   81|      0|				(l)->dtor((current)->data);\
  |  |   82|      0|			}\
  |  |   83|      0|			pefree((current), (l)->persistent);\
  |  |  ------------------
  |  |  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|      0|			--l->count;
  ------------------
  171|      0|		}
  172|      2|		element = next;
  173|      2|	}
  174|      2|}
zend_llist_apply:
  178|  67.1k|{
  179|  67.1k|	zend_llist_element *element;
  180|       |
  181|   134k|	for (element=l->head; element; element=element->next) {
  ------------------
  |  Branch (181:24): [True: 67.1k, False: 67.1k]
  ------------------
  182|  67.1k|		func(element->data);
  183|  67.1k|	}
  184|  67.1k|}
zend_llist_apply_with_argument:
  230|  33.6k|{
  231|  33.6k|	zend_llist_element *element;
  232|       |
  233|  67.2k|	for (element=l->head; element; element=element->next) {
  ------------------
  |  Branch (233:24): [True: 33.5k, False: 33.6k]
  ------------------
  234|  33.5k|		func(element->data, arg);
  235|  33.5k|	}
  236|  33.6k|}
zend_llist_apply_with_arguments:
  240|      2|{
  241|      2|	zend_llist_element *element;
  242|      2|	va_list args;
  243|       |
  244|      2|	va_start(args, num_args);
  245|      2|	for (element=l->head; element; element=element->next) {
  ------------------
  |  Branch (245:24): [True: 0, False: 2]
  ------------------
  246|      0|		func(element->data, num_args, args);
  247|      0|	}
  248|       |	va_end(args);
  249|      2|}
zend_llist_count:
  253|    662|{
  254|    662|	return l->count;
  255|    662|}
zend_llist_get_first_ex:
  259|  1.32k|{
  260|  1.32k|	zend_llist_position *current = pos ? pos : &l->traverse_ptr;
  ------------------
  |  Branch (260:33): [True: 1.32k, False: 0]
  ------------------
  261|       |
  262|  1.32k|	*current = l->head;
  263|  1.32k|	if (*current) {
  ------------------
  |  Branch (263:6): [True: 1.32k, False: 0]
  ------------------
  264|  1.32k|		return (*current)->data;
  265|  1.32k|	} else {
  266|       |		return NULL;
  267|      0|	}
  268|  1.32k|}
zend_llist_get_next_ex:
  285|  1.32k|{
  286|  1.32k|	zend_llist_position *current = pos ? pos : &l->traverse_ptr;
  ------------------
  |  Branch (286:33): [True: 1.32k, False: 0]
  ------------------
  287|       |
  288|  1.32k|	if (*current) {
  ------------------
  |  Branch (288:6): [True: 1.32k, False: 0]
  ------------------
  289|  1.32k|		*current = (*current)->next;
  290|  1.32k|		if (*current) {
  ------------------
  |  Branch (290:7): [True: 0, False: 1.32k]
  ------------------
  291|      0|			return (*current)->data;
  292|      0|		}
  293|  1.32k|	}
  294|  1.32k|	return NULL;
  295|  1.32k|}

zend_fibers.c:zend_mmap_set_name:
   41|    289|{
   42|    289|#ifdef HAVE_PRCTL
   43|    289|	prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, (unsigned long)start, len, (unsigned long)name);
  ------------------
  |  |   28|    289|#  define PR_SET_VMA 0x53564d41
  ------------------
              	prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, (unsigned long)start, len, (unsigned long)name);
  ------------------
  |  |   31|    289|#  define PR_SET_VMA_ANON_NAME 0
  ------------------
   44|    289|#endif
   45|    289|}

zend_multibyte_get_functions:
  128|      1|{
  129|      1|	return multibyte_functions.provider_name ? &multibyte_functions: NULL;
  ------------------
  |  Branch (129:9): [True: 0, False: 1]
  ------------------
  130|      1|}
zend_multibyte_parse_encoding_list:
  158|     10|{
  159|     10|	return multibyte_functions.encoding_list_parser(encoding_list, encoding_list_len, return_list, return_size, persistent);
  160|     10|}
zend_multibyte.c:dummy_encoding_list_parser:
   51|     10|{
   52|       |	*return_list = pemalloc(0, persistent);
  ------------------
  |  |  188|     10|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 10]
  |  |  ------------------
  ------------------
   53|     10|	*return_size = 0;
   54|     10|	return SUCCESS;
   55|     10|}

php_pcre.c:zend_safe_address_guarded:
  338|     35|{
  339|     35|	bool overflow;
  340|     35|	size_t ret = zend_safe_address(nmemb, size, offset, &overflow);
  341|       |
  342|     35|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
  343|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  344|      0|	}
  345|     35|	return ret;
  346|     35|}
php_pcre.c:zend_safe_address:
  179|     35|{
  180|     35|	size_t res;
  181|     35|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|     35|# define LP_SUFF "q"
  187|     35|#endif
  188|       |
  189|     35|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|     35|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 35]
  |  |  |  Branch (420:3): [True: 33, False: 2]
  |  |  ------------------
  ------------------
  190|      0|		res = nmemb;
  191|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      0|			"adc $0,%1"
  193|      0|			: "=&a"(res), "=&d" (m_overflow)
  194|      0|			: "%0"(res),
  195|      0|			  "rm"(size)
  196|      0|			: "cc");
  197|     35|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|     35|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 2, False: 33]
  |  |  |  Branch (420:3): [True: 35, False: 0]
  |  |  ------------------
  ------------------
  198|      2|		res = size;
  199|      2|		__asm__ ("add %2, %0\n\t"
  200|      2|			"adc $0,%1"
  201|      2|			: "+r"(res), "+r" (m_overflow)
  202|      2|			: "rm"(offset)
  203|      2|			: "cc");
  204|     33|	} else {
  205|     33|		res = nmemb;
  206|     33|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|     33|			"add %4,%0\n\t"
  208|     33|			"adc $0,%1"
  209|     33|			: "=&a"(res), "=&d" (m_overflow)
  210|     33|			: "%0"(res),
  211|     33|			  "rm"(size),
  212|     33|			  "rm"(offset)
  213|     33|			: "cc");
  214|     33|	}
  215|     35|#undef LP_SUFF
  216|     35|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|     35|	*overflow = 0;
  221|     35|	return res;
  222|     35|}
html.c:zend_safe_addmult:
  350|     35|{
  351|     35|	bool overflow;
  352|     35|	size_t ret = zend_safe_address(nmemb, size, offset, &overflow);
  353|       |
  354|     35|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
  355|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in %s (%zu * %zu + %zu)", message, nmemb, size, offset);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  356|      0|	}
  357|     35|	return ret;
  358|     35|}
html.c:zend_safe_address:
  179|     35|{
  180|     35|	size_t res;
  181|     35|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|     35|# define LP_SUFF "q"
  187|     35|#endif
  188|       |
  189|     35|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|     35|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 35, False: 0]
  |  |  |  Branch (420:3): [True: 35, False: 0]
  |  |  ------------------
  ------------------
  190|     35|		res = nmemb;
  191|     35|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|     35|			"adc $0,%1"
  193|     35|			: "=&a"(res), "=&d" (m_overflow)
  194|     35|			: "%0"(res),
  195|     35|			  "rm"(size)
  196|     35|			: "cc");
  197|     35|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|     35|#undef LP_SUFF
  216|     35|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|     35|	*overflow = 0;
  221|     35|	return res;
  222|     35|}
block_pass.c:zend_safe_address:
  179|      1|{
  180|      1|	size_t res;
  181|      1|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      1|# define LP_SUFF "q"
  187|      1|#endif
  188|       |
  189|      1|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      1|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 1, False: 0]
  |  |  |  Branch (420:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  190|      1|		res = nmemb;
  191|      1|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      1|			"adc $0,%1"
  193|      1|			: "=&a"(res), "=&d" (m_overflow)
  194|      1|			: "%0"(res),
  195|      1|			  "rm"(size)
  196|      1|			: "cc");
  197|      1|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      1|#undef LP_SUFF
  216|      1|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      1|	*overflow = 0;
  221|      1|	return res;
  222|      1|}
compact_literals.c:zend_safe_address:
  179|      1|{
  180|      1|	size_t res;
  181|      1|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      1|# define LP_SUFF "q"
  187|      1|#endif
  188|       |
  189|      1|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      1|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 1, False: 0]
  |  |  |  Branch (420:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  190|      1|		res = nmemb;
  191|      1|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      1|			"adc $0,%1"
  193|      1|			: "=&a"(res), "=&d" (m_overflow)
  194|      1|			: "%0"(res),
  195|      1|			  "rm"(size)
  196|      1|			: "cc");
  197|      1|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      1|#undef LP_SUFF
  216|      1|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      1|	*overflow = 0;
  221|      1|	return res;
  222|      1|}
dce.c:zend_safe_address:
  179|      4|{
  180|      4|	size_t res;
  181|      4|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      4|# define LP_SUFF "q"
  187|      4|#endif
  188|       |
  189|      4|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      4|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 4, False: 0]
  |  |  |  Branch (420:3): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  190|      4|		res = nmemb;
  191|      4|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      4|			"adc $0,%1"
  193|      4|			: "=&a"(res), "=&d" (m_overflow)
  194|      4|			: "%0"(res),
  195|      4|			  "rm"(size)
  196|      4|			: "cc");
  197|      4|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      4|#undef LP_SUFF
  216|      4|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      4|	*overflow = 0;
  221|      4|	return res;
  222|      4|}
scdf.c:zend_safe_address:
  179|      1|{
  180|      1|	size_t res;
  181|      1|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      1|# define LP_SUFF "q"
  187|      1|#endif
  188|       |
  189|      1|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      1|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 1, False: 0]
  |  |  |  Branch (420:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  190|      1|		res = nmemb;
  191|      1|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      1|			"adc $0,%1"
  193|      1|			: "=&a"(res), "=&d" (m_overflow)
  194|      1|			: "%0"(res),
  195|      1|			  "rm"(size)
  196|      1|			: "cc");
  197|      1|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      1|#undef LP_SUFF
  216|      1|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      1|	*overflow = 0;
  221|      1|	return res;
  222|      1|}
zend_call_graph.c:zend_safe_address:
  179|      2|{
  180|      2|	size_t res;
  181|      2|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      2|# define LP_SUFF "q"
  187|      2|#endif
  188|       |
  189|      2|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      2|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 2, False: 0]
  |  |  |  Branch (420:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  190|      2|		res = nmemb;
  191|      2|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      2|			"adc $0,%1"
  193|      2|			: "=&a"(res), "=&d" (m_overflow)
  194|      2|			: "%0"(res),
  195|      2|			  "rm"(size)
  196|      2|			: "cc");
  197|      2|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      2|#undef LP_SUFF
  216|      2|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      2|	*overflow = 0;
  221|      2|	return res;
  222|      2|}
zend_cfg.c:zend_safe_address:
  179|      5|{
  180|      5|	size_t res;
  181|      5|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      5|# define LP_SUFF "q"
  187|      5|#endif
  188|       |
  189|      5|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      5|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 5, False: 0]
  |  |  |  Branch (420:3): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  190|      5|		res = nmemb;
  191|      5|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      5|			"adc $0,%1"
  193|      5|			: "=&a"(res), "=&d" (m_overflow)
  194|      5|			: "%0"(res),
  195|      5|			  "rm"(size)
  196|      5|			: "cc");
  197|      5|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      5|#undef LP_SUFF
  216|      5|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      5|	*overflow = 0;
  221|      5|	return res;
  222|      5|}
zend_inference.c:zend_safe_address:
  179|      1|{
  180|      1|	size_t res;
  181|      1|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      1|# define LP_SUFF "q"
  187|      1|#endif
  188|       |
  189|      1|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      1|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 1, False: 0]
  |  |  |  Branch (420:3): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  190|      1|		res = nmemb;
  191|      1|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      1|			"adc $0,%1"
  193|      1|			: "=&a"(res), "=&d" (m_overflow)
  194|      1|			: "%0"(res),
  195|      1|			  "rm"(size)
  196|      1|			: "cc");
  197|      1|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      1|#undef LP_SUFF
  216|      1|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      1|	*overflow = 0;
  221|      1|	return res;
  222|      1|}
zend_ssa.c:zend_safe_address:
  179|      3|{
  180|      3|	size_t res;
  181|      3|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|      3|# define LP_SUFF "q"
  187|      3|#endif
  188|       |
  189|      3|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|      3|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 3, False: 0]
  |  |  |  Branch (420:3): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  190|      3|		res = nmemb;
  191|      3|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      3|			"adc $0,%1"
  193|      3|			: "=&a"(res), "=&d" (m_overflow)
  194|      3|			: "%0"(res),
  195|      3|			  "rm"(size)
  196|      3|			: "cc");
  197|      3|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|      3|#undef LP_SUFF
  216|      3|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|      3|	*overflow = 0;
  221|      3|	return res;
  222|      3|}
zend_alloc.c:zend_safe_address_guarded:
  338|   319k|{
  339|   319k|	bool overflow;
  340|   319k|	size_t ret = zend_safe_address(nmemb, size, offset, &overflow);
  341|       |
  342|   319k|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|   319k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 319k]
  |  |  ------------------
  ------------------
  343|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  344|      0|	}
  345|   319k|	return ret;
  346|   319k|}
zend_alloc.c:zend_safe_address:
  179|   319k|{
  180|   319k|	size_t res;
  181|   319k|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|   319k|# define LP_SUFF "q"
  187|   319k|#endif
  188|       |
  189|   319k|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|   319k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 283k, False: 36.0k]
  |  |  |  Branch (420:3): [True: 283k, False: 36.0k]
  |  |  ------------------
  ------------------
  190|   283k|		res = nmemb;
  191|   283k|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|   283k|			"adc $0,%1"
  193|   283k|			: "=&a"(res), "=&d" (m_overflow)
  194|   283k|			: "%0"(res),
  195|   283k|			  "rm"(size)
  196|   283k|			: "cc");
  197|   283k|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|  36.0k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 36.0k]
  |  |  |  Branch (420:3): [True: 0, False: 36.0k]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|  36.0k|	} else {
  205|  36.0k|		res = nmemb;
  206|  36.0k|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|  36.0k|			"add %4,%0\n\t"
  208|  36.0k|			"adc $0,%1"
  209|  36.0k|			: "=&a"(res), "=&d" (m_overflow)
  210|  36.0k|			: "%0"(res),
  211|  36.0k|			  "rm"(size),
  212|  36.0k|			  "rm"(offset)
  213|  36.0k|			: "cc");
  214|  36.0k|	}
  215|   319k|#undef LP_SUFF
  216|   319k|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|   319k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 319k]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|   319k|	*overflow = 0;
  221|   319k|	return res;
  222|   319k|}
zend_enum.c:zend_safe_address:
  179|    366|{
  180|    366|	size_t res;
  181|    366|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|    366|# define LP_SUFF "q"
  187|    366|#endif
  188|       |
  189|    366|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|    366|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 366, False: 0]
  |  |  |  Branch (420:3): [True: 366, False: 0]
  |  |  ------------------
  ------------------
  190|    366|		res = nmemb;
  191|    366|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|    366|			"adc $0,%1"
  193|    366|			: "=&a"(res), "=&d" (m_overflow)
  194|    366|			: "%0"(res),
  195|    366|			  "rm"(size)
  196|    366|			: "cc");
  197|    366|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|      0|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 0]
  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  198|      0|		res = size;
  199|      0|		__asm__ ("add %2, %0\n\t"
  200|      0|			"adc $0,%1"
  201|      0|			: "+r"(res), "+r" (m_overflow)
  202|      0|			: "rm"(offset)
  203|      0|			: "cc");
  204|      0|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|    366|#undef LP_SUFF
  216|    366|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|    366|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 366]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|    366|	*overflow = 0;
  221|    366|	return res;
  222|    366|}
zend_string.c:zend_safe_address_guarded:
  338|  1.26k|{
  339|  1.26k|	bool overflow;
  340|  1.26k|	size_t ret = zend_safe_address(nmemb, size, offset, &overflow);
  341|       |
  342|  1.26k|	if (UNEXPECTED(overflow)) {
  ------------------
  |  |  457|  1.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.26k]
  |  |  ------------------
  ------------------
  343|      0|		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  344|      0|	}
  345|  1.26k|	return ret;
  346|  1.26k|}
zend_string.c:zend_safe_address:
  179|  1.26k|{
  180|  1.26k|	size_t res;
  181|  1.26k|	zend_ulong m_overflow = 0;
  182|       |
  183|       |#ifdef __ILP32__ /* x32 */
  184|       |# define LP_SUFF "l"
  185|       |#else /* amd64 */
  186|  1.26k|# define LP_SUFF "q"
  187|  1.26k|#endif
  188|       |
  189|  1.26k|	if (ZEND_CONST_COND(offset == 0, 0)) {
  ------------------
  |  |  420|  1.26k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 0, False: 1.26k]
  |  |  |  Branch (420:3): [True: 0, False: 1.26k]
  |  |  ------------------
  ------------------
  190|      0|		res = nmemb;
  191|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  192|      0|			"adc $0,%1"
  193|      0|			: "=&a"(res), "=&d" (m_overflow)
  194|      0|			: "%0"(res),
  195|      0|			  "rm"(size)
  196|      0|			: "cc");
  197|  1.26k|	} else if (ZEND_CONST_COND(nmemb == 1, 0)) {
  ------------------
  |  |  420|  1.26k|	(__builtin_constant_p(_condition) ? (_condition) : (_default))
  |  |  ------------------
  |  |  |  Branch (420:2): [True: 1.26k, False: 0]
  |  |  |  Branch (420:3): [True: 1.26k, False: 0]
  |  |  ------------------
  ------------------
  198|  1.26k|		res = size;
  199|  1.26k|		__asm__ ("add %2, %0\n\t"
  200|  1.26k|			"adc $0,%1"
  201|  1.26k|			: "+r"(res), "+r" (m_overflow)
  202|  1.26k|			: "rm"(offset)
  203|  1.26k|			: "cc");
  204|  1.26k|	} else {
  205|      0|		res = nmemb;
  206|      0|		__asm__ ("mul" LP_SUFF  " %3\n\t"
  207|      0|			"add %4,%0\n\t"
  208|      0|			"adc $0,%1"
  209|      0|			: "=&a"(res), "=&d" (m_overflow)
  210|      0|			: "%0"(res),
  211|      0|			  "rm"(size),
  212|      0|			  "rm"(offset)
  213|      0|			: "cc");
  214|      0|	}
  215|  1.26k|#undef LP_SUFF
  216|  1.26k|	if (UNEXPECTED(m_overflow)) {
  ------------------
  |  |  457|  1.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.26k]
  |  |  ------------------
  ------------------
  217|      0|		*overflow = 1;
  218|      0|		return 0;
  219|      0|	}
  220|  1.26k|	*overflow = 0;
  221|  1.26k|	return res;
  222|  1.26k|}

rebuild_object_properties_internal:
   78|  5.06k|{
   79|  5.06k|	if (!zobj->properties) {
  ------------------
  |  Branch (79:6): [True: 5.06k, False: 1]
  ------------------
   80|  5.06k|		zend_property_info *prop_info;
   81|  5.06k|		zend_class_entry *ce = zobj->ce;
   82|  5.06k|		int i;
   83|       |
   84|  5.06k|		zobj->properties = zend_new_array(ce->default_properties_count);
  ------------------
  |  |  342|  5.06k|	_zend_new_array(size)
  ------------------
   85|  5.06k|		if (ce->default_properties_count) {
  ------------------
  |  Branch (85:7): [True: 232, False: 4.82k]
  ------------------
   86|    232|			zend_hash_real_init_mixed(zobj->properties);
   87|    534|			for (i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (87:16): [True: 302, False: 232]
  ------------------
   88|    302|				prop_info = ce->properties_info_table[i];
   89|       |
   90|    302|				if (!prop_info) {
  ------------------
  |  Branch (90:9): [True: 2, False: 300]
  ------------------
   91|      2|					continue;
   92|      2|				}
   93|       |
   94|    300|				if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
  ------------------
  |  |  457|    300|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 291]
  |  |  ------------------
  ------------------
   95|      9|					HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      9|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              					HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      9|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
   96|      9|				}
   97|       |
   98|    300|				_zend_hash_append_ind(zobj->properties, prop_info->name,
   99|    300|					OBJ_PROP(zobj, prop_info->offset));
  ------------------
  |  |  480|    300|	((zval*)((char*)(obj) + offset))
  ------------------
  100|    300|			}
  101|    232|		}
  102|  5.06k|	}
  103|       |
  104|  5.06k|	return zobj->properties;
  105|  5.06k|}
zend_std_build_object_properties_array:
  110|      1|{
  111|      1|	const zend_class_entry *ce = zobj->ce;
  112|      1|	HashTable *ht;
  113|      1|	zval* prop;
  114|      1|	int i;
  115|       |
  116|      1|	ZEND_ASSERT(!(zend_object_is_lazy_proxy(zobj) && zend_lazy_object_initialized(zobj)));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (116:2): [True: 0, False: 1]
  |  Branch (116:2): [True: 0, False: 0]
  |  Branch (116:2): [True: 0, False: 1]
  |  Branch (116:2): [True: 0, False: 0]
  ------------------
  117|      1|	ZEND_ASSERT(!zobj->properties);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (117:2): [True: 0, False: 1]
  |  Branch (117:2): [True: 1, False: 0]
  ------------------
  118|      1|	ht = zend_new_array(ce->default_properties_count);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
  119|      1|	if (ce->default_properties_count) {
  ------------------
  |  Branch (119:6): [True: 0, False: 1]
  ------------------
  120|      0|		zend_hash_real_init_mixed(ht);
  121|      0|		for (i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (121:15): [True: 0, False: 0]
  ------------------
  122|      0|			const zend_property_info *prop_info = ce->properties_info_table[i];
  123|       |
  124|      0|			if (!prop_info) {
  ------------------
  |  Branch (124:8): [True: 0, False: 0]
  ------------------
  125|      0|				continue;
  126|      0|			}
  127|       |
  128|      0|			prop = OBJ_PROP(zobj, prop_info->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
  129|      0|			if (UNEXPECTED(Z_TYPE_P(prop) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  130|      0|				continue;
  131|      0|			}
  132|       |
  133|      0|			if (Z_ISREF_P(prop) && Z_REFCOUNT_P(prop) == 1) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(prop) && Z_REFCOUNT_P(prop) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (133:27): [True: 0, False: 0]
  ------------------
  134|      0|				prop = Z_REFVAL_P(prop);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  135|      0|			}
  136|       |
  137|      0|			Z_TRY_ADDREF_P(prop);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  138|      0|			_zend_hash_append(ht, prop_info->name, prop);
  139|      0|		}
  140|      0|	}
  141|      1|	return ht;
  142|      1|}
zend_std_get_properties:
  146|  5.50k|{
  147|  5.50k|	return zend_std_get_properties_ex(zobj);
  148|  5.50k|}
zend_get_properties_no_lazy_init:
  153|      9|{
  154|      9|	if (zobj->handlers->get_properties == zend_std_get_properties) {
  ------------------
  |  Branch (154:6): [True: 9, False: 0]
  ------------------
  155|      9|		if (UNEXPECTED(zend_object_is_lazy_proxy(zobj)
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  Branch (457:52): [True: 0, False: 9]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  156|      9|				&& zend_lazy_object_initialized(zobj))) {
  157|      0|			zend_object *instance = zend_lazy_object_get_instance(zobj);
  158|      0|			return zend_get_properties_no_lazy_init(instance);
  159|      0|		}
  160|       |
  161|      9|		if (!zobj->properties) {
  ------------------
  |  Branch (161:7): [True: 1, False: 8]
  ------------------
  162|      1|			rebuild_object_properties_internal(zobj);
  163|      1|		}
  164|      9|		return zobj->properties;
  165|      9|	}
  166|       |
  167|      0|	ZEND_ASSERT(!zend_object_is_lazy(zobj));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (167:2): [True: 0, False: 0]
  |  Branch (167:2): [True: 0, False: 0]
  ------------------
  168|       |
  169|      0|	return zobj->handlers->get_properties(zobj);
  170|      0|}
zend_std_get_gc:
  173|    705|{
  174|    705|	if (zobj->handlers->get_properties != zend_std_get_properties) {
  ------------------
  |  Branch (174:6): [True: 0, False: 705]
  ------------------
  175|      0|		*table = NULL;
  176|      0|		*n = 0;
  177|      0|		return zobj->handlers->get_properties(zobj);
  178|    705|	} else {
  179|    705|		if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|    705|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 701]
  |  |  ------------------
  ------------------
  180|      4|			return zend_lazy_object_get_gc(zobj, table, n);
  181|    701|		} else if (zobj->properties) {
  ------------------
  |  Branch (181:14): [True: 218, False: 483]
  ------------------
  182|    218|			*table = NULL;
  183|    218|			*n = 0;
  184|    218|			return zobj->properties;
  185|    483|		} else {
  186|    483|			*table = zobj->properties_table;
  187|    483|			*n = zobj->ce->default_properties_count;
  188|       |			return NULL;
  189|    483|		}
  190|    705|	}
  191|    705|}
zend_std_get_debug_info:
  195|    257|{
  196|    257|	const zend_class_entry *ce = object->ce;
  197|    257|	zval retval;
  198|    257|	HashTable *ht;
  199|       |
  200|    257|	if (!ce->__debugInfo) {
  ------------------
  |  Branch (200:6): [True: 247, False: 10]
  ------------------
  201|    247|		if (UNEXPECTED(zend_object_is_lazy(object))) {
  ------------------
  |  |  457|    247|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 247]
  |  |  ------------------
  ------------------
  202|      0|			return zend_lazy_object_debug_info(object, is_temp);
  203|      0|		}
  204|       |
  205|    247|		*is_temp = 0;
  206|    247|		return object->handlers->get_properties(object);
  207|    247|	}
  208|       |
  209|     10|	zend_call_known_instance_method_with_0_params(ce->__debugInfo, object, &retval);
  210|     10|	if (UNEXPECTED(Z_ISREF(retval))) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
  211|      1|		zend_unwrap_reference(&retval);
  212|      1|	}
  213|     10|	if (Z_TYPE(retval) == IS_ARRAY) {
  ------------------
  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(retval) == IS_ARRAY) {
  ------------------
  |  |  613|     10|#define IS_ARRAY					7
  ------------------
  |  Branch (213:6): [True: 8, False: 2]
  ------------------
  214|      8|		if (!Z_REFCOUNTED(retval)) {
  ------------------
  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  ------------------
  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  |  Branch (214:7): [True: 1, False: 7]
  ------------------
  215|      1|			*is_temp = 1;
  216|      1|			return zend_array_dup(Z_ARRVAL(retval));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  217|      7|		} else if (Z_REFCOUNT(retval) <= 1) {
  ------------------
  |  | 1280|      7|#define Z_REFCOUNT(z)				Z_REFCOUNT_P(&(z))
  |  |  ------------------
  |  |  |  | 1275|      7|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  |  |  ------------------
  ------------------
  |  Branch (217:14): [True: 5, False: 2]
  ------------------
  218|      5|			*is_temp = 1;
  219|      5|			ht = Z_ARR(retval);
  ------------------
  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  220|      5|			return ht;
  221|      5|		} else {
  222|      2|			*is_temp = 0;
  223|      2|			zval_ptr_dtor(&retval);
  224|      2|			return Z_ARRVAL(retval);
  ------------------
  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  225|      2|		}
  226|      8|	} else if (Z_TYPE(retval) == IS_NULL) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	} else if (Z_TYPE(retval) == IS_NULL) {
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (226:13): [True: 1, False: 1]
  ------------------
  227|      1|		zend_error(E_DEPRECATED, "Returning null from %s::__debugInfo() is deprecated, return an empty array instead",
  ------------------
  |  |   36|      1|#define E_DEPRECATED		(1<<13L)
  ------------------
  228|      1|			ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  229|      1|		*is_temp = 1;
  230|      1|		ht = zend_new_array(0);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
  231|      1|		return ht;
  232|      1|	}
  233|       |
  234|      1|	zend_error_noreturn(E_ERROR, ZEND_DEBUGINFO_FUNC_NAME "() must return an array");
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
              	zend_error_noreturn(E_ERROR, ZEND_DEBUGINFO_FUNC_NAME "() must return an array");
  ------------------
  |  | 1255|      1|#define ZEND_DEBUGINFO_FUNC_NAME    "__debuginfo"
  ------------------
  235|       |
  236|      0|	return NULL; /* Compilers are dumb and don't understand that noreturn means that the function does NOT need a return value... */
  237|     10|}
zend_get_property_info:
  476|  56.9k|{
  477|  56.9k|	zval *zv;
  478|  56.9k|	zend_property_info *property_info;
  479|  56.9k|	uint32_t flags;
  480|       |
  481|  56.9k|	if (UNEXPECTED(zend_hash_num_elements(&ce->properties_info) == 0)
  ------------------
  |  |  457|   113k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 56.9k]
  |  |  ------------------
  ------------------
  482|  56.9k|	 || EXPECTED((zv = zend_hash_find(&ce->properties_info, member)) == NULL)) {
  ------------------
  |  |  456|  56.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 56.9k]
  |  |  ------------------
  ------------------
  483|      0|		if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0') && ZSTR_LEN(member) != 0) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0') && ZSTR_LEN(member) != 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (483:50): [True: 0, False: 0]
  ------------------
  484|      0|			if (!silent) {
  ------------------
  |  Branch (484:8): [True: 0, False: 0]
  ------------------
  485|      0|				zend_bad_property_name();
  486|      0|			}
  487|      0|			return ZEND_WRONG_PROPERTY_INFO;
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  488|      0|		}
  489|      0|dynamic:
  490|      0|		return NULL;
  491|      0|	}
  492|       |
  493|  56.9k|	property_info = (zend_property_info*)Z_PTR_P(zv);
  ------------------
  |  | 1053|  56.9k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  56.9k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  494|  56.9k|	flags = property_info->flags;
  495|       |
  496|  56.9k|	if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  224|  56.9k|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
              	if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  221|  56.9k|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  220|  56.9k|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (496:6): [True: 56.9k, False: 7]
  ------------------
  497|  56.9k|		const zend_class_entry *scope = get_fake_or_executed_scope();
  498|  56.9k|		if (property_info->ce != scope) {
  ------------------
  |  Branch (498:7): [True: 0, False: 56.9k]
  ------------------
  499|      0|			if (flags & ZEND_ACC_CHANGED) {
  ------------------
  |  |  224|      0|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
  |  Branch (499:8): [True: 0, False: 0]
  ------------------
  500|      0|				zend_property_info *p = zend_get_parent_private_property(scope, ce, member);
  501|       |
  502|      0|				if (p) {
  ------------------
  |  Branch (502:9): [True: 0, False: 0]
  ------------------
  503|      0|					property_info = p;
  504|      0|					flags = property_info->flags;
  505|      0|					goto found;
  506|      0|				} else if (flags & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (506:16): [True: 0, False: 0]
  ------------------
  507|      0|					goto found;
  508|      0|				}
  509|      0|			}
  510|      0|			if (flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (510:8): [True: 0, False: 0]
  ------------------
  511|      0|				if (property_info->ce != ce) {
  ------------------
  |  Branch (511:9): [True: 0, False: 0]
  ------------------
  512|      0|					goto dynamic;
  513|      0|				} else {
  514|      0|wrong:
  515|       |					/* Information was available, but we were denied access.  Error out. */
  516|      0|					if (!silent) {
  ------------------
  |  Branch (516:10): [True: 0, False: 0]
  ------------------
  517|      0|						zend_bad_property_access(property_info, ce, member);
  518|      0|					}
  519|      0|					return ZEND_WRONG_PROPERTY_INFO;
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  520|      0|				}
  521|      0|			} else {
  522|      0|				ZEND_ASSERT(flags & ZEND_ACC_PROTECTED);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (522:5): [True: 0, False: 0]
  |  Branch (522:5): [True: 0, False: 0]
  ------------------
  523|      0|				if (UNEXPECTED(!is_protected_compatible_scope(property_info->prototype->ce, scope))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  524|      0|					goto wrong;
  525|      0|				}
  526|      0|			}
  527|      0|		}
  528|  56.9k|	}
  529|       |
  530|  56.9k|found:
  531|  56.9k|	if (UNEXPECTED(flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  457|  56.9k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 56.9k]
  |  |  ------------------
  ------------------
  532|      0|		if (!silent) {
  ------------------
  |  Branch (532:7): [True: 0, False: 0]
  ------------------
  533|      0|			zend_error(E_NOTICE, "Accessing static property %s::$%s as non static", ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              			zend_error(E_NOTICE, "Accessing static property %s::$%s as non static", ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error(E_NOTICE, "Accessing static property %s::$%s as non static", ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  534|      0|		}
  535|      0|	}
  536|  56.9k|	return property_info;
  537|  56.9k|}
zend_check_property_access:
  541|      7|{
  542|      7|	zend_property_info *property_info;
  543|      7|	const char *class_name = NULL;
  544|      7|	const char *prop_name;
  545|      7|	zend_string *member;
  546|      7|	size_t prop_name_len;
  547|       |
  548|      7|	if (ZSTR_VAL(prop_info_name)[0] == 0) {
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (548:6): [True: 0, False: 7]
  ------------------
  549|      0|		if (is_dynamic) {
  ------------------
  |  Branch (549:7): [True: 0, False: 0]
  ------------------
  550|      0|			return SUCCESS;
  551|      0|		}
  552|       |
  553|      0|		zend_unmangle_property_name_ex(prop_info_name, &class_name, &prop_name, &prop_name_len);
  554|      0|		member = zend_string_init(prop_name, prop_name_len, 0);
  555|      0|		property_info = zend_get_property_info(zobj->ce, member, 1);
  556|      0|		zend_string_release_ex(member, 0);
  557|      0|		if (property_info == NULL || property_info == ZEND_WRONG_PROPERTY_INFO) {
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (557:7): [True: 0, False: 0]
  |  Branch (557:32): [True: 0, False: 0]
  ------------------
  558|      0|			return FAILURE;
  559|      0|		}
  560|       |
  561|      0|		if (class_name[0] != '*') {
  ------------------
  |  Branch (561:7): [True: 0, False: 0]
  ------------------
  562|      0|			if (!(property_info->flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (562:8): [True: 0, False: 0]
  ------------------
  563|       |				/* we we're looking for a private prop but found a non private one of the same name */
  564|      0|				return FAILURE;
  565|      0|			} else if (strcmp(ZSTR_VAL(prop_info_name)+1, ZSTR_VAL(property_info->name)+1)) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			} else if (strcmp(ZSTR_VAL(prop_info_name)+1, ZSTR_VAL(property_info->name)+1)) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (565:15): [True: 0, False: 0]
  ------------------
  566|       |				/* we we're looking for a private prop but found a private one of the same name but another class */
  567|      0|				return FAILURE;
  568|      0|			}
  569|      0|		} else {
  570|       |			/* We were looking for a protected property but found a private one
  571|       |			 * belonging to the parent class. */
  572|      0|			if (property_info->flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (572:8): [True: 0, False: 0]
  ------------------
  573|      0|				return FAILURE;
  574|      0|			}
  575|      0|			ZEND_ASSERT(property_info->flags & ZEND_ACC_PROTECTED);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (575:4): [True: 0, False: 0]
  |  Branch (575:4): [True: 0, False: 0]
  ------------------
  576|      0|		}
  577|      0|		return SUCCESS;
  578|      7|	} else {
  579|      7|		property_info = zend_get_property_info(zobj->ce, prop_info_name, 1);
  580|      7|		if (property_info == NULL) {
  ------------------
  |  Branch (580:7): [True: 0, False: 7]
  ------------------
  581|      0|			ZEND_ASSERT(is_dynamic);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (581:4): [True: 0, False: 0]
  |  Branch (581:4): [True: 0, False: 0]
  ------------------
  582|      0|			return SUCCESS;
  583|      7|		} else if (property_info == ZEND_WRONG_PROPERTY_INFO) {
  ------------------
  |  |   32|      7|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (583:14): [True: 0, False: 7]
  ------------------
  584|      0|			return FAILURE;
  585|      0|		}
  586|      7|		return (property_info->flags & ZEND_ACC_PUBLIC) ? SUCCESS : FAILURE;
  ------------------
  |  |  219|      7|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (586:10): [True: 7, False: 0]
  ------------------
  587|      7|	}
  588|      7|}
zend_asymmetric_property_has_set_access:
  591|    103|ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access(const zend_property_info *prop_info) {
  592|    103|	ZEND_ASSERT(prop_info->flags & ZEND_ACC_PPP_SET_MASK);
  ------------------
  |  |  112|    103|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (592:2): [True: 0, False: 103]
  |  Branch (592:2): [True: 103, False: 0]
  ------------------
  593|    103|	ZEND_ASSERT(!(prop_info->flags & ZEND_ACC_PUBLIC_SET));
  ------------------
  |  |  112|    103|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (593:2): [True: 0, False: 103]
  |  Branch (593:2): [True: 103, False: 0]
  ------------------
  594|    103|	const zend_class_entry *scope = get_fake_or_executed_scope();
  595|    103|	if (prop_info->ce == scope) {
  ------------------
  |  Branch (595:6): [True: 103, False: 0]
  ------------------
  596|    103|		return true;
  597|    103|	}
  598|      0|	return EXPECTED((prop_info->flags & ZEND_ACC_PROTECTED_SET)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  599|    103|		&& is_protected_compatible_scope(prop_info->prototype->ce, scope));
  600|    103|}
zend_get_property_guard:
  616|     37|{
  617|     37|	HashTable *guards;
  618|     37|	zval *zv;
  619|     37|	uint32_t *ptr;
  620|       |
  621|       |
  622|     37|	ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS);
  ------------------
  |  |  112|     37|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (622:2): [True: 0, False: 37]
  |  Branch (622:2): [True: 37, False: 0]
  ------------------
  623|     37|	zv = zend_get_guard_value(zobj);
  624|     37|	if (EXPECTED(Z_TYPE_P(zv) == IS_STRING)) {
  ------------------
  |  |  456|     37|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 25]
  |  |  ------------------
  ------------------
  625|     12|		zend_string *str = Z_STR_P(zv);
  ------------------
  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  626|     12|		if (EXPECTED(str == member) ||
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 5]
  |  |  ------------------
  ------------------
  627|       |		    /* str and member don't necessarily have a pre-calculated hash value here */
  628|     10|		    EXPECTED(zend_string_equal_content(str, member))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 2]
  |  |  ------------------
  ------------------
  629|     10|			return &Z_GUARD_P(zv);
  ------------------
  |  |  699|     10|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|     10|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
  630|     10|		} else if (EXPECTED(Z_GUARD_P(zv) == 0)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  631|      0|			zval_ptr_dtor_str(zv);
  632|      0|			ZVAL_STR_COPY(zv, member);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  633|      0|			return &Z_GUARD_P(zv);
  ------------------
  |  |  699|      0|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|      0|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
  634|      2|		} else {
  635|      2|			ALLOC_HASHTABLE(guards);
  ------------------
  |  |  232|      2|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  636|      2|			zend_hash_init(guards, 8, NULL, zend_property_guard_dtor, 0);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  637|       |			/* mark pointer as "special" using low bit */
  638|      2|			zend_hash_add_new_ptr(guards, str,
  639|      2|				(void*)(((uintptr_t)&Z_GUARD_P(zv)) | 1));
  ------------------
  |  |  699|      2|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|      2|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
  640|      2|			zval_ptr_dtor_str(zv);
  641|      2|			ZVAL_ARR(zv, guards);
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  642|      2|		}
  643|     25|	} else if (EXPECTED(Z_TYPE_P(zv) == IS_ARRAY)) {
  ------------------
  |  |  456|     25|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 23]
  |  |  ------------------
  ------------------
  644|      2|		guards = Z_ARRVAL_P(zv);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  645|      2|		ZEND_ASSERT(guards != NULL);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (645:3): [True: 0, False: 2]
  |  Branch (645:3): [True: 2, False: 0]
  ------------------
  646|      2|		zv = zend_hash_find(guards, member);
  647|      2|		if (zv != NULL) {
  ------------------
  |  Branch (647:7): [True: 2, False: 0]
  ------------------
  648|      2|			return (uint32_t*)(((uintptr_t)Z_PTR_P(zv)) & ~1);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  649|      2|		}
  650|     23|	} else {
  651|     23|		ZEND_ASSERT(Z_TYPE_P(zv) == IS_UNDEF);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (651:3): [True: 0, False: 23]
  |  Branch (651:3): [True: 23, False: 0]
  ------------------
  652|     23|		ZVAL_STR_COPY(zv, member);
  ------------------
  |  | 1112|     23|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     23|		zval *__z = (z);								\
  |  | 1114|     23|		zend_string *__s = (s);							\
  |  | 1115|     23|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     23|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     23|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     23|		/* interned strings support */					\
  |  | 1117|     23|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 13, False: 10]
  |  |  ------------------
  |  | 1118|     13|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     13|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     13|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     13|		} else {										\
  |  | 1120|     10|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     10|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     10|		}												\
  |  | 1123|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
  653|     23|		Z_GUARD_P(zv) &= ~ZEND_GUARD_PROPERTY_MASK;
  ------------------
  |  |  699|     23|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|     23|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
              		Z_GUARD_P(zv) &= ~ZEND_GUARD_PROPERTY_MASK;
  ------------------
  |  |  647|     23|#define ZEND_GUARD_PROPERTY_MASK	31
  ------------------
  654|     23|		return &Z_GUARD_P(zv);
  ------------------
  |  |  699|     23|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|     23|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
  655|     23|	}
  656|       |	/* we have to allocate uint32_t separately because ht->arData may be reallocated */
  657|      2|	ptr = (uint32_t*)emalloc(sizeof(uint32_t));
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  658|      2|	*ptr = 0;
  659|      2|	return (uint32_t*)zend_hash_add_new_ptr(guards, member, ptr);
  660|     37|}
zend_get_recursion_guard:
  664|    324|{
  665|    324|	if (!(zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
  ------------------
  |  |  295|    324|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (665:6): [True: 299, False: 25]
  ------------------
  666|    299|		return NULL;
  667|    299|	}
  668|     25|	zval *zv = zend_get_guard_value(zobj);
  669|     25|	return &Z_GUARD_P(zv);
  ------------------
  |  |  699|     25|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|     25|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
  670|    324|}
zend_std_read_property:
  741|   165k|{
  742|   165k|	zval *retval;
  743|   165k|	uintptr_t property_offset;
  744|   165k|	const zend_property_info *prop_info = NULL;
  745|   165k|	uint32_t *guard = NULL;
  746|       |
  747|       |#if DEBUG_OBJECT_HANDLERS
  748|       |	fprintf(stderr, "Read object #%d property: %s\n", zobj->handle, ZSTR_VAL(name));
  749|       |#endif
  750|       |
  751|       |	/* make zend_get_property_info silent if we have getter - we may want to use it */
  752|   165k|	property_offset = zend_get_property_offset(zobj->ce, name, (type == BP_VAR_IS) || (zobj->ce->__get != NULL), cache_slot, &prop_info);
  ------------------
  |  | 1077|   165k|#define BP_VAR_IS			3
  ------------------
  |  Branch (752:61): [True: 159k, False: 5.99k]
  |  Branch (752:84): [True: 22, False: 5.97k]
  ------------------
  753|       |
  754|   165k|	if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|   165k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 165k, False: 258]
  |  |  ------------------
  ------------------
  755|   165k|try_again:
  756|   165k|		retval = OBJ_PROP(zobj, property_offset);
  ------------------
  |  |  480|   165k|	((zval*)((char*)(obj) + offset))
  ------------------
  757|       |
  758|   165k|		if (prop_info && UNEXPECTED(prop_info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))
  ------------------
  |  |  457|   327k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 105, False: 162k]
  |  |  ------------------
  ------------------
  |  Branch (758:7): [True: 162k, False: 2.82k]
  ------------------
  759|    105|		 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1075|    210|#define BP_VAR_W			1
  ------------------
              		 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1076|    209|#define BP_VAR_RW			2
  ------------------
              		 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1079|    104|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (759:8): [True: 1, False: 104]
  |  Branch (759:28): [True: 0, False: 104]
  |  Branch (759:49): [True: 0, False: 104]
  ------------------
  760|      1|		 && ((prop_info->flags & ZEND_ACC_READONLY) || !zend_asymmetric_property_has_set_access(prop_info))) {
  ------------------
  |  |  237|      1|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (760:8): [True: 1, False: 0]
  |  Branch (760:50): [True: 0, False: 0]
  ------------------
  761|      1|			if (Z_TYPE_P(retval) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(retval) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (761:8): [True: 0, False: 1]
  ------------------
  762|       |				/* For objects, W/RW/UNSET fetch modes might not actually modify object.
  763|       |				 * Similar as with magic __get() allow them, but return the value as a copy
  764|       |				 * to make sure no actual modification is possible. */
  765|      0|				ZVAL_COPY(rv, retval);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  766|      0|				retval = rv;
  767|      0|				goto exit;
  768|      1|			} else if (Z_TYPE_P(retval) == IS_UNDEF && type == BP_VAR_UNSET) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(retval) == IS_UNDEF && type == BP_VAR_UNSET) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
              			} else if (Z_TYPE_P(retval) == IS_UNDEF && type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (768:15): [True: 0, False: 1]
  |  Branch (768:47): [True: 0, False: 0]
  ------------------
  769|      0|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  770|      0|				goto exit;
  771|      0|			}
  772|      1|			if (prop_info->flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|      1|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (772:8): [True: 1, False: 0]
  ------------------
  773|      1|				zend_readonly_property_indirect_modification_error(prop_info);
  774|      1|			} else {
  775|      0|				zend_asymmetric_visibility_property_modification_error(prop_info, "indirectly modify");
  776|      0|			}
  777|      1|			retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  778|      1|			goto exit;
  779|      1|		}
  780|   165k|		if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|   165k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 165k, False: 6]
  |  |  ------------------
  ------------------
  781|   165k|			goto exit;
  782|   165k|		}
  783|      6|		if (UNEXPECTED(Z_PROP_FLAG_P(retval) & IS_PROP_UNINIT)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 2]
  |  |  ------------------
  ------------------
  784|       |			/* Skip __get() for uninitialized typed properties */
  785|      4|			goto uninit_error;
  786|      4|		}
  787|    258|	} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|    258|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 220, False: 38]
  |  |  ------------------
  ------------------
  788|    220|		if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|    220|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 23, False: 197]
  |  |  ------------------
  ------------------
  789|     23|			if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   77|     23|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|     23|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (789:8): [True: 0, False: 23]
  ------------------
  790|      0|				uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(property_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
  791|       |
  792|      0|				if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  793|      0|					Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
  794|       |
  795|      0|					if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  796|      0|				        (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  797|      0|				         EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  798|      0|				         EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  799|      0|						retval = &p->val;
  800|      0|						goto exit;
  801|      0|					}
  802|      0|				}
  803|      0|				CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  804|      0|			}
  805|     23|			retval = zend_hash_find(zobj->properties, name);
  806|     23|			if (EXPECTED(retval)) {
  ------------------
  |  |  456|     23|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 21, False: 2]
  |  |  ------------------
  ------------------
  807|     21|				if (cache_slot) {
  ------------------
  |  Branch (807:9): [True: 18, False: 3]
  ------------------
  808|     18|					uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
  809|     18|					CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|     18|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|     18|		(slot)[0] = (ptr); \
  |  |  549|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
  810|     18|				}
  811|     21|				goto exit;
  812|     21|			}
  813|     23|		}
  814|    220|	} else if (IS_HOOKED_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   43|     38|	((intptr_t)(offset) > 0 && (intptr_t)(offset) < 16)
  |  |  ------------------
  |  |  |  Branch (43:3): [True: 30, False: 8]
  |  |  |  Branch (43:29): [True: 30, False: 0]
  |  |  ------------------
  ------------------
  815|     30|		zend_function *get = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
  816|     30|		if (!get) {
  ------------------
  |  Branch (816:7): [True: 8, False: 22]
  ------------------
  817|      8|			if (prop_info->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      8|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (817:8): [True: 0, False: 8]
  ------------------
  818|      0|				zend_throw_error(NULL, "Cannot read from set-only virtual property %s::$%s",
  819|      0|					ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  820|      0|				return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  821|      0|			}
  822|       |			/* Cache the fact that this hook has trivial read. This only applies to
  823|       |			 * BP_VAR_R and BP_VAR_IS fetches. */
  824|      8|			ZEND_SET_PROPERTY_HOOK_SIMPLE_READ(cache_slot);
  ------------------
  |  |   56|      8|	do { \
  |  |   57|      8|		void **__cache_slot = (cache_slot); \
  |  |   58|      8|		if (__cache_slot) { \
  |  |  ------------------
  |  |  |  Branch (58:7): [True: 6, False: 2]
  |  |  ------------------
  |  |   59|      6|			CACHE_PTR_EX(__cache_slot + 1, (void*)((uintptr_t)CACHED_PTR_EX(__cache_slot + 1) | ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT)); \
  |  |  ------------------
  |  |  |  |  547|      6|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  |  |  548|      6|		(slot)[0] = (ptr); \
  |  |  |  |  549|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (549:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      6|		} \
  |  |   61|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (61:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  825|       |
  826|      8|			retval = OBJ_PROP(zobj, prop_info->offset);
  ------------------
  |  |  480|      8|	((zval*)((char*)(obj) + offset))
  ------------------
  827|      8|			if (UNEXPECTED(Z_TYPE_P(retval) == IS_UNDEF)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 5]
  |  |  ------------------
  ------------------
  828|       |				/* As hooked properties can't be unset, the only way to end up with an undef
  829|       |				 * value is via an uninitialized property. */
  830|      3|				ZEND_ASSERT(Z_PROP_FLAG_P(retval) & IS_PROP_UNINIT);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (830:5): [True: 0, False: 3]
  |  Branch (830:5): [True: 3, False: 0]
  ------------------
  831|      3|				goto uninit_error;
  832|      3|			}
  833|       |
  834|      5|			if (UNEXPECTED(type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  Branch (457:52): [True: 0, False: 5]
  |  |  |  Branch (457:52): [True: 0, False: 5]
  |  |  |  Branch (457:52): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  835|      0|				if (UNEXPECTED(Z_TYPE_P(retval) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  836|      0|					zend_throw_error(NULL, "Indirect modification of %s::$%s is not allowed",
  837|      0|						ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  838|      0|					goto exit;
  839|      0|				}
  840|      0|				ZVAL_COPY(rv, retval);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  841|      0|				retval = rv;
  842|      0|			}
  843|      5|			goto exit;
  844|      5|		}
  845|       |
  846|     22|		const zend_class_entry *ce = zobj->ce;
  847|       |
  848|     22|		if (!zend_call_get_hook(prop_info, name, get, zobj, rv)) {
  ------------------
  |  Branch (848:7): [True: 4, False: 18]
  ------------------
  849|      4|			if (EG(exception)) {
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  850|      0|				return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  851|      0|			}
  852|       |
  853|       |			/* Reads from backing store can only occur in hooks, and hence will always remain simple. */
  854|      4|			const zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  855|      4|			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_FETCH_OBJ_R && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (730:24): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_FETCH_OBJ_R && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_FETCH_OBJ_R && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  204|      7|#define ZEND_FETCH_OBJ_R                     82
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_FETCH_OBJ_R && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_FETCH_OBJ_R && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (855:8): [True: 3, False: 1]
  |  Branch (855:36): [True: 3, False: 0]
  |  Branch (855:78): [True: 3, False: 0]
  ------------------
  856|      3|				ZEND_SET_PROPERTY_HOOK_SIMPLE_READ(cache_slot);
  ------------------
  |  |   56|      3|	do { \
  |  |   57|      3|		void **__cache_slot = (cache_slot); \
  |  |   58|      3|		if (__cache_slot) { \
  |  |  ------------------
  |  |  |  Branch (58:7): [True: 3, False: 0]
  |  |  ------------------
  |  |   59|      3|			CACHE_PTR_EX(__cache_slot + 1, (void*)((uintptr_t)CACHED_PTR_EX(__cache_slot + 1) | ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT)); \
  |  |  ------------------
  |  |  |  |  547|      3|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  |  |  548|      3|		(slot)[0] = (ptr); \
  |  |  |  |  549|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (549:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      3|		} \
  |  |   61|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (61:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  857|      3|			}
  858|       |
  859|      4|			property_offset = prop_info->offset;
  860|      4|			if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      4|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      4|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (860:8): [True: 4, False: 0]
  ------------------
  861|      4|				prop_info = NULL;
  862|      4|			}
  863|      4|			goto try_again;
  864|      4|		}
  865|       |
  866|     18|		if (EXPECTED(cache_slot
  ------------------
  |  |  456|    104|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 18]
  |  |  |  Branch (456:52): [True: 14, False: 4]
  |  |  |  Branch (456:52): [True: 0, False: 14]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  867|     18|		 && zend_execute_ex == execute_ex
  868|     18|		 && ce->default_object_handlers->read_property == zend_std_read_property
  869|     18|		 && !ce->create_object
  870|     18|		 && !zend_is_in_hook(prop_info)
  871|     18|		 && !(prop_info->hooks[ZEND_PROPERTY_HOOK_GET]->common.fn_flags & ZEND_ACC_RETURN_REFERENCE))) {
  872|      0|			ZEND_SET_PROPERTY_HOOK_SIMPLE_GET(cache_slot);
  ------------------
  |  |   70|      0|	do { \
  |  |   71|      0|		void **__cache_slot = (cache_slot); \
  |  |   72|      0|		if (__cache_slot) { \
  |  |  ------------------
  |  |  |  Branch (72:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   73|      0|			CACHE_PTR_EX(__cache_slot + 1, (void*)((uintptr_t)CACHED_PTR_EX(__cache_slot + 1) | ZEND_PROPERTY_HOOK_SIMPLE_GET_BIT)); \
  |  |  ------------------
  |  |  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  |  |  549|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|		} \
  |  |   75|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (75:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  873|      0|		}
  874|       |
  875|     18|		if (Z_TYPE_P(rv) != IS_UNDEF) {
  ------------------
  |  |  669|     18|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     18|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(rv) != IS_UNDEF) {
  ------------------
  |  |  606|     18|#define IS_UNDEF					0
  ------------------
  |  Branch (875:7): [True: 16, False: 2]
  ------------------
  876|     16|			retval = rv;
  877|     16|			if (!Z_ISREF_P(rv)
  ------------------
  |  |  964|     16|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     32|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (877:8): [True: 12, False: 4]
  ------------------
  878|     12|			 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1075|     24|#define BP_VAR_W			1
  ------------------
              			 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1076|     24|#define BP_VAR_RW			2
  ------------------
              			 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1079|     12|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (878:9): [True: 0, False: 12]
  |  Branch (878:29): [True: 0, False: 12]
  |  Branch (878:50): [True: 0, False: 12]
  ------------------
  879|      0|			 && UNEXPECTED(Z_TYPE_P(rv) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  880|      0|				zend_throw_error(NULL, "Indirect modification of %s::$%s is not allowed",
  881|      0|					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  882|      0|			}
  883|     16|		} else {
  884|      2|			retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  885|      2|		}
  886|       |
  887|     18|		goto exit;
  888|     22|	} else if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  889|      0|		retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  890|      0|		goto exit;
  891|      0|	}
  892|       |
  893|    209|	retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|    209|# define EG(v) (executor_globals.v)
  ------------------
  894|       |
  895|       |	/* For initialized lazy proxies: if the real instance's magic method
  896|       |	 * guard is already set for this property, we are inside a recursive
  897|       |	 * call from the real instance's __get/__isset. Forward directly to
  898|       |	 * the real instance to avoid double invocation. (GH-21478) */
  899|    209|	if (UNEXPECTED(zend_object_is_lazy_proxy(zobj)
  ------------------
  |  |  457|    209|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 209]
  |  |  |  Branch (457:52): [True: 0, False: 209]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  900|    209|			&& zend_lazy_object_initialized(zobj))) {
  901|      0|		zend_object *instance = zend_lazy_object_get_instance(zobj);
  902|      0|		if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) {
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (902:7): [True: 0, False: 0]
  ------------------
  903|      0|			uint32_t *instance_guard = zend_get_property_guard(instance, name);
  904|      0|			uint32_t guard_type = ((type == BP_VAR_IS) && zobj->ce->__isset)
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (904:27): [True: 0, False: 0]
  |  Branch (904:50): [True: 0, False: 0]
  ------------------
  905|      0|				? IN_ISSET : IN_GET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
              				? IN_ISSET : IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  906|      0|			if ((*instance_guard) & guard_type) {
  ------------------
  |  Branch (906:8): [True: 0, False: 0]
  ------------------
  907|      0|				retval = zend_std_read_property(instance, name, type, cache_slot, rv);
  908|      0|				if (retval == &EG(uninitialized_zval)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (908:9): [True: 0, False: 0]
  ------------------
  909|      0|					ZVAL_NULL(rv);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  910|      0|					retval = rv;
  911|      0|				}
  912|      0|				return retval;
  913|      0|			}
  914|      0|		}
  915|      0|	}
  916|       |
  917|       |	/* magic isset */
  918|    209|	if ((type == BP_VAR_IS) && zobj->ce->__isset) {
  ------------------
  |  | 1077|    209|#define BP_VAR_IS			3
  ------------------
  |  Branch (918:6): [True: 4, False: 205]
  |  Branch (918:29): [True: 0, False: 4]
  ------------------
  919|      0|		zval tmp_result;
  920|      0|		guard = zend_get_property_guard(zobj, name);
  921|       |
  922|      0|		if (!((*guard) & IN_ISSET)) {
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
  |  Branch (922:7): [True: 0, False: 0]
  ------------------
  923|      0|			GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  924|       |
  925|      0|			*guard |= IN_ISSET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
  926|      0|			zend_std_call_issetter(zobj, name, &tmp_result);
  927|      0|			*guard &= ~IN_ISSET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
  928|       |
  929|      0|			if (!zend_is_true(&tmp_result)) {
  ------------------
  |  Branch (929:8): [True: 0, False: 0]
  ------------------
  930|      0|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  931|      0|				OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  932|      0|				zval_ptr_dtor(&tmp_result);
  933|      0|				goto exit;
  934|      0|			}
  935|       |
  936|      0|			zval_ptr_dtor(&tmp_result);
  937|      0|			if (zobj->ce->__get && !((*guard) & IN_GET)) {
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (937:8): [True: 0, False: 0]
  |  Branch (937:27): [True: 0, False: 0]
  ------------------
  938|      0|				goto call_getter;
  939|      0|			}
  940|      0|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  941|      0|		} else if (zobj->ce->__get && !((*guard) & IN_GET)) {
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (941:14): [True: 0, False: 0]
  |  Branch (941:33): [True: 0, False: 0]
  ------------------
  942|      0|			goto call_getter_addref;
  943|      0|		}
  944|    209|	} else if (zobj->ce->__get) {
  ------------------
  |  Branch (944:13): [True: 22, False: 187]
  ------------------
  945|       |		/* magic get */
  946|     22|		guard = zend_get_property_guard(zobj, name);
  947|     22|		if (!((*guard) & IN_GET)) {
  ------------------
  |  |   42|     22|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|     22|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (947:7): [True: 17, False: 5]
  ------------------
  948|       |			/* have getter - try with it! */
  949|     17|call_getter_addref:
  950|     17|			GC_ADDREF(zobj);
  ------------------
  |  |  718|     17|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  951|     17|call_getter:
  952|     17|			*guard |= IN_GET; /* prevent circular getting */
  ------------------
  |  |   42|     17|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|     17|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  953|     17|			zend_std_call_getter(zobj, name, rv);
  954|     17|			*guard &= ~IN_GET;
  ------------------
  |  |   42|     17|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|     17|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  955|       |
  956|     17|			if (Z_TYPE_P(rv) != IS_UNDEF) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(rv) != IS_UNDEF) {
  ------------------
  |  |  606|     17|#define IS_UNDEF					0
  ------------------
  |  Branch (956:8): [True: 13, False: 4]
  ------------------
  957|     13|				retval = rv;
  958|     13|				if (!Z_ISREF_P(rv) &&
  ------------------
  |  |  964|     13|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     26|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     13|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (958:9): [True: 11, False: 2]
  ------------------
  959|     11|				    (type == BP_VAR_W || type == BP_VAR_RW  || type == BP_VAR_UNSET)) {
  ------------------
  |  | 1075|     22|#define BP_VAR_W			1
  ------------------
              				    (type == BP_VAR_W || type == BP_VAR_RW  || type == BP_VAR_UNSET)) {
  ------------------
  |  | 1076|     21|#define BP_VAR_RW			2
  ------------------
              				    (type == BP_VAR_W || type == BP_VAR_RW  || type == BP_VAR_UNSET)) {
  ------------------
  |  | 1079|     10|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (959:10): [True: 1, False: 10]
  |  Branch (959:30): [True: 0, False: 10]
  |  Branch (959:52): [True: 0, False: 10]
  ------------------
  960|      1|					if (UNEXPECTED(Z_TYPE_P(rv) != IS_OBJECT)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  961|      0|						zend_error(E_NOTICE, "Indirect modification of overloaded property %s::$%s has no effect", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              						zend_error(E_NOTICE, "Indirect modification of overloaded property %s::$%s has no effect", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						zend_error(E_NOTICE, "Indirect modification of overloaded property %s::$%s has no effect", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  962|      0|					}
  963|      1|				}
  964|     13|			} else {
  965|      4|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  966|      4|			}
  967|       |
  968|     17|			if (prop_info) {
  ------------------
  |  Branch (968:8): [True: 2, False: 15]
  ------------------
  969|      2|				zend_verify_prop_assignable_by_ref_ex(prop_info, retval, (zobj->ce->__get->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0, ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_MAGIC_GET);
  ------------------
  |  |  413|      2|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  ------------------
  970|      2|			}
  971|       |
  972|     17|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|     17|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  973|     17|			goto exit;
  974|     17|		} else if (UNEXPECTED(IS_WRONG_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
  975|       |			/* Trigger the correct error */
  976|      2|			zend_wrong_offset(zobj->ce, name);
  977|      2|			ZEND_ASSERT(EG(exception));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (977:4): [True: 0, False: 2]
  |  Branch (977:4): [True: 2, False: 0]
  ------------------
  978|      2|			retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  979|      2|			goto exit;
  980|      2|		}
  981|     22|	}
  982|       |
  983|    197|uninit_error:
  984|    197|	if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|    197|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 195]
  |  |  ------------------
  ------------------
  985|      2|		if (!prop_info || (Z_PROP_FLAG_P(retval) & IS_PROP_LAZY)) {
  ------------------
  |  | 1580|      2|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      2|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      2|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (!prop_info || (Z_PROP_FLAG_P(retval) & IS_PROP_LAZY)) {
  ------------------
  |  | 1579|      2|#define IS_PROP_LAZY (1<<2)
  ------------------
  |  Branch (985:7): [True: 0, False: 2]
  |  Branch (985:21): [True: 2, False: 0]
  ------------------
  986|      2|			zend_object *instance = zend_lazy_object_init(zobj);
  987|      2|			if (!instance) {
  ------------------
  |  Branch (987:8): [True: 0, False: 2]
  ------------------
  988|      0|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  989|      0|				goto exit;
  990|      0|			}
  991|       |
  992|      2|			if (UNEXPECTED(guard && (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  993|       |				/* Find which guard was used on zobj, so we can set the same
  994|       |				 * guard on instance. */
  995|      0|				uint32_t guard_type = (type == BP_VAR_IS) && zobj->ce->__isset
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (995:27): [True: 0, False: 0]
  |  Branch (995:50): [True: 0, False: 0]
  ------------------
  996|      0|					? IN_ISSET : IN_GET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
              					? IN_ISSET : IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  997|      0|				guard = zend_get_property_guard(instance, name);
  998|      0|				if (!((*guard) & guard_type)) {
  ------------------
  |  Branch (998:9): [True: 0, False: 0]
  ------------------
  999|      0|					(*guard) |= guard_type;
 1000|      0|					retval = zend_std_read_property(instance, name, type, cache_slot, rv);
 1001|      0|					(*guard) &= ~guard_type;
 1002|      0|					return retval;
 1003|      0|				}
 1004|      0|			}
 1005|       |
 1006|      2|			return zend_std_read_property(instance, name, type, cache_slot, rv);
 1007|      2|		}
 1008|      2|	}
 1009|    195|	if (type != BP_VAR_IS) {
  ------------------
  |  | 1077|    195|#define BP_VAR_IS			3
  ------------------
  |  Branch (1009:6): [True: 188, False: 7]
  ------------------
 1010|    188|		if (prop_info) {
  ------------------
  |  Branch (1010:7): [True: 2, False: 186]
  ------------------
 1011|      2|			zend_typed_property_uninitialized_access(prop_info, name);
 1012|    186|		} else {
 1013|    186|			zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   23|    186|#define E_WARNING			(1<<1L)
  ------------------
              			zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|    186|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|    186|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1014|    186|		}
 1015|    188|	}
 1016|    195|	retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|    195|# define EG(v) (executor_globals.v)
  ------------------
 1017|       |
 1018|   165k|exit:
 1019|   165k|	return retval;
 1020|    195|}
zend_std_write_property:
 1068|  32.1k|{
 1069|  32.1k|	zval *variable_ptr, tmp;
 1070|  32.1k|	uintptr_t property_offset;
 1071|  32.1k|	const zend_property_info *prop_info = NULL;
 1072|  32.1k|	uint32_t *guard = NULL;
 1073|  32.1k|	ZEND_ASSERT(!Z_ISREF_P(value));
  ------------------
  |  |  112|  32.1k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1073:2): [True: 0, False: 32.1k]
  |  Branch (1073:2): [True: 32.1k, False: 0]
  ------------------
 1074|       |
 1075|  32.1k|	property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__set != NULL), cache_slot, &prop_info);
 1076|       |
 1077|  32.1k|	if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|  32.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 27.2k, False: 4.95k]
  |  |  ------------------
  ------------------
 1078|  27.2k|try_again:
 1079|  27.2k|		variable_ptr = OBJ_PROP(zobj, property_offset);
  ------------------
  |  |  480|  27.2k|	((zval*)((char*)(obj) + offset))
  ------------------
 1080|       |
 1081|  27.2k|		if (prop_info && UNEXPECTED(prop_info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))) {
  ------------------
  |  |  457|  8.39k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 137, False: 8.25k]
  |  |  ------------------
  ------------------
  |  Branch (1081:7): [True: 8.39k, False: 18.8k]
  ------------------
 1082|    137|			bool error;
 1083|    137|			if (Z_TYPE_P(variable_ptr) != IS_UNDEF || (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_UNINIT) || !zobj->ce->__set) {
  ------------------
  |  |  669|    137|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    137|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(variable_ptr) != IS_UNDEF || (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_UNINIT) || !zobj->ce->__set) {
  ------------------
  |  |  606|    274|#define IS_UNDEF					0
  ------------------
              			if (Z_TYPE_P(variable_ptr) != IS_UNDEF || (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_UNINIT) || !zobj->ce->__set) {
  ------------------
  |  | 1580|    132|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|    132|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    132|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(variable_ptr) != IS_UNDEF || (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_UNINIT) || !zobj->ce->__set) {
  ------------------
  |  | 1577|    132|#define IS_PROP_UNINIT (1<<0)
  ------------------
  |  Branch (1083:8): [True: 5, False: 132]
  |  Branch (1083:46): [True: 132, False: 0]
  |  Branch (1083:96): [True: 0, False: 0]
  ------------------
 1084|    137|				error = true;
 1085|    137|			} else {
 1086|      0|				guard = zend_get_property_guard(zobj, name);
 1087|      0|				error = (*guard) & IN_SET;
  ------------------
  |  |   43|      0|#define IN_SET		ZEND_GUARD_PROPERTY_SET
  |  |  ------------------
  |  |  |  |  643|      0|#define ZEND_GUARD_PROPERTY_SET		(1<<1)
  |  |  ------------------
  ------------------
 1088|      0|			}
 1089|    137|			if (error) {
  ------------------
  |  Branch (1089:8): [True: 137, False: 0]
  ------------------
 1090|    137|				if ((prop_info->flags & ZEND_ACC_READONLY)
  ------------------
  |  |  237|    137|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1090:9): [True: 136, False: 1]
  ------------------
 1091|    136|				 && Z_TYPE_P(variable_ptr) != IS_UNDEF
  ------------------
  |  |  669|    136|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    136|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				 && Z_TYPE_P(variable_ptr) != IS_UNDEF
  ------------------
  |  |  606|    273|#define IS_UNDEF					0
  ------------------
  |  Branch (1091:9): [True: 5, False: 131]
  ------------------
 1092|      5|				 && !(Z_PROP_FLAG_P(variable_ptr) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1580|      5|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      5|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      5|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				 && !(Z_PROP_FLAG_P(variable_ptr) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1578|      5|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  |  Branch (1092:9): [True: 5, False: 0]
  ------------------
 1093|      5|					zend_readonly_property_modification_error(prop_info);
 1094|      5|					variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 1095|      5|					goto exit;
 1096|      5|				}
 1097|    132|				if ((prop_info->flags & ZEND_ACC_PPP_SET_MASK) && !zend_asymmetric_property_has_set_access(prop_info)) {
  ------------------
  |  |  422|    132|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|    132|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|    132|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|    132|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1097:9): [True: 103, False: 29]
  |  Branch (1097:55): [True: 0, False: 103]
  ------------------
 1098|      0|					zend_asymmetric_visibility_property_modification_error(prop_info, "modify");
 1099|      0|					variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1100|      0|					goto exit;
 1101|      0|				}
 1102|    132|			}
 1103|    137|		}
 1104|       |
 1105|  27.2k|		if (Z_TYPE_P(variable_ptr) != IS_UNDEF) {
  ------------------
  |  |  669|  27.2k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  27.2k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(variable_ptr) != IS_UNDEF) {
  ------------------
  |  |  606|  27.2k|#define IS_UNDEF					0
  ------------------
  |  Branch (1105:7): [True: 27.0k, False: 148]
  ------------------
 1106|  27.0k|			Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|  27.0k|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  27.0k|	zval *_pz = (pz);				\
  |  | 1287|  27.0k|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  27.0k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  27.0k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  27.0k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 27.0k, False: 43]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|  27.0k|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|  27.0k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|  27.0k|	}								\
  |  | 1290|  27.0k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 27.0k]
  |  |  ------------------
  ------------------
 1107|       |
 1108|  27.0k|			if (prop_info) {
  ------------------
  |  Branch (1108:8): [True: 8.23k, False: 18.8k]
  ------------------
 1109|  8.38k|typed_property:
 1110|  8.38k|				ZVAL_COPY_VALUE(&tmp, value);
  ------------------
  |  | 1416|  8.38k|	do {												\
  |  | 1417|  8.38k|		zval *_z1 = (z);								\
  |  | 1418|  8.38k|		const zval *_z2 = (v);							\
  |  | 1419|  8.38k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  8.38k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  8.38k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  8.38k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  8.38k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  8.38k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  8.38k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  8.38k|	do {												\
  |  |  |  | 1408|  8.38k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  8.38k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  8.38k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  8.38k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  8.38k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  8.38k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  8.38k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8.38k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  8.38k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 8.38k]
  |  |  ------------------
  ------------------
 1111|       |				// Increase refcount to prevent object from being released in __toString()
 1112|  8.38k|				GC_ADDREF(zobj);
  ------------------
  |  |  718|  8.38k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1113|  8.38k|				bool type_matched = zend_verify_property_type(prop_info, &tmp, property_uses_strict_types());
 1114|  8.38k|				if (UNEXPECTED(GC_DELREF(zobj) == 0)) {
  ------------------
  |  |  457|  8.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 8.38k]
  |  |  ------------------
  ------------------
 1115|      2|					zend_object_released_while_assigning_to_property_error(prop_info);
 1116|      2|					zend_objects_store_del(zobj);
 1117|      2|					zval_ptr_dtor(&tmp);
 1118|      2|					variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1119|      2|					goto exit;
 1120|      2|				}
 1121|  8.38k|				if (UNEXPECTED(!type_matched)) {
  ------------------
  |  |  457|  8.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 8.38k]
  |  |  ------------------
  ------------------
 1122|      5|					zval_ptr_dtor(&tmp);
 1123|      5|					variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 1124|      5|					goto exit;
 1125|      5|				}
 1126|  8.38k|				Z_PROP_FLAG_P(variable_ptr) &= ~(IS_PROP_UNINIT|IS_PROP_REINITABLE);
  ------------------
  |  | 1580|  8.38k|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|  8.38k|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|  8.38k|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(variable_ptr) &= ~(IS_PROP_UNINIT|IS_PROP_REINITABLE);
  ------------------
  |  | 1577|  8.38k|#define IS_PROP_UNINIT (1<<0)
  ------------------
              				Z_PROP_FLAG_P(variable_ptr) &= ~(IS_PROP_UNINIT|IS_PROP_REINITABLE);
  ------------------
  |  | 1578|  8.38k|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
 1127|  8.38k|				value = &tmp;
 1128|  8.38k|			}
 1129|       |
 1130|  27.2k|found:;
 1131|  27.2k|			zend_refcounted *garbage = NULL;
 1132|       |
 1133|  27.2k|			variable_ptr = zend_assign_to_variable_ex(
 1134|  27.2k|				variable_ptr, value, IS_TMP_VAR, property_uses_strict_types(), &garbage);
  ------------------
  |  |  865|  27.2k|#define IS_TMP_VAR	(1<<1)
  ------------------
 1135|       |
 1136|  27.2k|			if (garbage) {
  ------------------
  |  Branch (1136:8): [True: 683, False: 26.5k]
  ------------------
 1137|    683|				if (GC_DELREF(garbage) == 0) {
  ------------------
  |  |  719|    683|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (1137:9): [True: 8, False: 675]
  ------------------
 1138|      8|					zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  ------------------
 1139|       |					// Assign to result variable before calling the destructor as it may release the object
 1140|      8|					if (execute_data
  ------------------
  |  Branch (1140:10): [True: 8, False: 0]
  ------------------
 1141|      8|					 && EX(func)
  ------------------
  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (730:24): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 1142|      8|					 && ZEND_USER_CODE(EX(func)->common.type)
  ------------------
  |  | 1081|     16|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 1143|      8|					 && EX(opline)
  ------------------
  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (730:24): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 1144|      8|					 && EX(opline)->opcode == ZEND_ASSIGN_OBJ
  ------------------
  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  ------------------
              					 && EX(opline)->opcode == ZEND_ASSIGN_OBJ
  ------------------
  |  |  148|     16|#define ZEND_ASSIGN_OBJ                      24
  ------------------
  |  Branch (1144:10): [True: 8, False: 0]
  ------------------
 1145|      8|					 && EX(opline)->result_type) {
  ------------------
  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1145:10): [True: 4, False: 4]
  ------------------
 1146|      4|						ZVAL_COPY_DEREF(EX_VAR(EX(opline)->result.var), variable_ptr);
  ------------------
  |  | 1508|      4|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      4|		zval *_z3 = (v);								\
  |  | 1510|      4|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      3|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      3|			} else {									\
  |  | 1517|      3|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      3|			}											\
  |  | 1519|      3|		}												\
  |  | 1520|      4|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      4|	do {												\
  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1147|      4|						variable_ptr = NULL;
 1148|      4|					}
 1149|      8|					rc_dtor_func(garbage);
 1150|    675|				} else {
 1151|    675|					gc_check_possible_root_no_ref(garbage);
 1152|    675|				}
 1153|    683|			}
 1154|  27.2k|			goto exit;
 1155|  27.0k|		}
 1156|    148|		if (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_UNINIT) {
  ------------------
  |  | 1580|    148|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|    148|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|    148|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_UNINIT) {
  ------------------
  |  | 1577|    148|#define IS_PROP_UNINIT (1<<0)
  ------------------
  |  Branch (1156:7): [True: 148, False: 0]
  ------------------
 1157|    148|			if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|    148|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 148]
  |  |  ------------------
  ------------------
 1158|      0|				if (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_LAZY) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_PROP_FLAG_P(variable_ptr) & IS_PROP_LAZY) {
  ------------------
  |  | 1579|      0|#define IS_PROP_LAZY (1<<2)
  ------------------
  |  Branch (1158:9): [True: 0, False: 0]
  ------------------
 1159|      0|					goto lazy_init;
 1160|      0|				}
 1161|      0|			}
 1162|       |			/* Writes to uninitialized typed properties bypass __set(). */
 1163|    148|			goto write_std_property;
 1164|    148|		}
 1165|  4.95k|	} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|  4.95k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.92k, False: 23]
  |  |  ------------------
  ------------------
 1166|  4.92k|		if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|  4.92k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 222, False: 4.70k]
  |  |  ------------------
  ------------------
 1167|    222|			if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|    222|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 222]
  |  |  ------------------
  ------------------
 1168|      0|				if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1169|      0|					GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1170|      0|				}
 1171|      0|				zobj->properties = zend_array_dup(zobj->properties);
 1172|      0|			}
 1173|    222|			if ((variable_ptr = zend_hash_find(zobj->properties, name)) != NULL) {
  ------------------
  |  Branch (1173:8): [True: 15, False: 207]
  ------------------
 1174|     15|				Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|     15|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     15|	zval *_pz = (pz);				\
  |  | 1287|     15|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     15|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     15|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     15|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 4, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      4|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      4|	}								\
  |  | 1290|     15|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1175|     15|				goto found;
 1176|     15|			}
 1177|    222|		}
 1178|  4.92k|	} else if (IS_HOOKED_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   43|     23|	((intptr_t)(offset) > 0 && (intptr_t)(offset) < 16)
  |  |  ------------------
  |  |  |  Branch (43:3): [True: 16, False: 7]
  |  |  |  Branch (43:29): [True: 16, False: 0]
  |  |  ------------------
  ------------------
 1179|     16|		zend_function *set = prop_info->hooks[ZEND_PROPERTY_HOOK_SET];
 1180|       |
 1181|     16|		if (!set) {
  ------------------
  |  Branch (1181:7): [True: 2, False: 14]
  ------------------
 1182|      2|			if (prop_info->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1182:8): [True: 1, False: 1]
  ------------------
 1183|      1|				zend_throw_error(NULL, "Cannot write to get-only virtual property %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "Cannot write to get-only virtual property %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1184|      1|				variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1185|      1|				goto exit;
 1186|      1|			}
 1187|      1|			ZEND_SET_PROPERTY_HOOK_SIMPLE_WRITE(cache_slot);
  ------------------
  |  |   63|      1|	do { \
  |  |   64|      1|		void **__cache_slot = (cache_slot); \
  |  |   65|      1|		if (__cache_slot) { \
  |  |  ------------------
  |  |  |  Branch (65:7): [True: 1, False: 0]
  |  |  ------------------
  |  |   66|      1|			CACHE_PTR_EX(__cache_slot + 1, (void*)((uintptr_t)CACHED_PTR_EX(__cache_slot + 1) | ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT)); \
  |  |  ------------------
  |  |  |  |  547|      1|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  |  |  548|      1|		(slot)[0] = (ptr); \
  |  |  |  |  549|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (549:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      1|		} \
  |  |   68|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (68:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1188|      1|			property_offset = prop_info->offset;
 1189|      1|			if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      1|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      1|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1189:8): [True: 1, False: 0]
  ------------------
 1190|      1|				prop_info = NULL;
 1191|      1|			}
 1192|      1|			goto try_again;
 1193|      2|		}
 1194|       |
 1195|     14|		if (!zend_should_call_hook(prop_info, zobj)) {
  ------------------
  |  Branch (1195:7): [True: 5, False: 9]
  ------------------
 1196|      5|			if (prop_info->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      5|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1196:8): [True: 0, False: 5]
  ------------------
 1197|      0|				zend_throw_no_prop_backing_value_access(zobj->ce->name, name, /* is_read */ false);
 1198|      0|				variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1199|      0|				goto exit;
 1200|      0|			}
 1201|       |
 1202|       |			/* Writes to backing store can only occur in hooks, and hence will always remain simple. */
 1203|      5|			zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
 1204|      5|			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_ASSIGN_OBJ && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (730:24): [True: 4, False: 0]
  |  |  ------------------
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_ASSIGN_OBJ && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_ASSIGN_OBJ && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  148|      9|#define ZEND_ASSIGN_OBJ                      24
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_ASSIGN_OBJ && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
              			if (cache_slot && EX(opline) && EX(opline)->opcode == ZEND_ASSIGN_OBJ && EX(opline)->op1_type == IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (1204:8): [True: 4, False: 1]
  |  Branch (1204:36): [True: 4, False: 0]
  |  Branch (1204:77): [True: 4, False: 0]
  ------------------
 1205|      4|				ZEND_SET_PROPERTY_HOOK_SIMPLE_WRITE(cache_slot);
  ------------------
  |  |   63|      4|	do { \
  |  |   64|      4|		void **__cache_slot = (cache_slot); \
  |  |   65|      4|		if (__cache_slot) { \
  |  |  ------------------
  |  |  |  Branch (65:7): [True: 4, False: 0]
  |  |  ------------------
  |  |   66|      4|			CACHE_PTR_EX(__cache_slot + 1, (void*)((uintptr_t)CACHED_PTR_EX(__cache_slot + 1) | ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT)); \
  |  |  ------------------
  |  |  |  |  547|      4|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  |  |  548|      4|		(slot)[0] = (ptr); \
  |  |  |  |  549|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (549:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      4|		} \
  |  |   68|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (68:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1206|      4|			}
 1207|       |
 1208|      5|			property_offset = prop_info->offset;
 1209|      5|			if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      5|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      5|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1209:8): [True: 3, False: 2]
  ------------------
 1210|      3|				prop_info = NULL;
 1211|      3|			}
 1212|      5|			goto try_again;
 1213|      5|		}
 1214|       |
 1215|      9|		if (UNEXPECTED(prop_info->flags & ZEND_ACC_PPP_SET_MASK
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  Branch (457:52): [True: 0, False: 9]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1216|      9|		 && !zend_asymmetric_property_has_set_access(prop_info))) {
 1217|      0|			zend_asymmetric_visibility_property_modification_error(prop_info, "modify");
 1218|      0|			variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1219|      0|			goto exit;
 1220|      0|		}
 1221|       |
 1222|      9|		GC_ADDREF(zobj);
  ------------------
  |  |  718|      9|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1223|      9|		zend_call_known_instance_method_with_1_params(set, zobj, NULL, value);
 1224|      9|		OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      9|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1225|       |
 1226|      9|		variable_ptr = value;
 1227|      9|		goto exit;
 1228|      9|	} else if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 4]
  |  |  ------------------
  ------------------
 1229|      3|		variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
 1230|      3|		goto exit;
 1231|      3|	}
 1232|       |
 1233|       |	/* For initialized lazy proxies: if the real instance's __set guard
 1234|       |	 * is already set, we are inside a recursive call from the real
 1235|       |	 * instance's __set. Forward directly to avoid double invocation. */
 1236|  4.91k|	if (UNEXPECTED(zend_object_is_lazy_proxy(zobj)
  ------------------
  |  |  457|  4.91k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.91k]
  |  |  |  Branch (457:52): [True: 0, False: 4.91k]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1237|  4.91k|			&& zend_lazy_object_initialized(zobj))) {
 1238|      0|		zend_object *instance = zend_lazy_object_get_instance(zobj);
 1239|      0|		if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) {
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (1239:7): [True: 0, False: 0]
  ------------------
 1240|      0|			uint32_t *instance_guard = zend_get_property_guard(instance, name);
 1241|      0|			if ((*instance_guard) & IN_SET) {
  ------------------
  |  |   43|      0|#define IN_SET		ZEND_GUARD_PROPERTY_SET
  |  |  ------------------
  |  |  |  |  643|      0|#define ZEND_GUARD_PROPERTY_SET		(1<<1)
  |  |  ------------------
  ------------------
  |  Branch (1241:8): [True: 0, False: 0]
  ------------------
 1242|      0|				return zend_std_write_property(instance, name, value, cache_slot);
 1243|      0|			}
 1244|      0|		}
 1245|      0|	}
 1246|       |
 1247|       |	/* magic set */
 1248|  4.91k|	if (zobj->ce->__set) {
  ------------------
  |  Branch (1248:6): [True: 8, False: 4.91k]
  ------------------
 1249|      8|		if (!guard) {
  ------------------
  |  Branch (1249:7): [True: 8, False: 0]
  ------------------
 1250|      8|			guard = zend_get_property_guard(zobj, name);
 1251|      8|		}
 1252|       |
 1253|      8|		if (!((*guard) & IN_SET)) {
  ------------------
  |  |   43|      8|#define IN_SET		ZEND_GUARD_PROPERTY_SET
  |  |  ------------------
  |  |  |  |  643|      8|#define ZEND_GUARD_PROPERTY_SET		(1<<1)
  |  |  ------------------
  ------------------
  |  Branch (1253:7): [True: 6, False: 2]
  ------------------
 1254|      6|			GC_ADDREF(zobj);
  ------------------
  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1255|      6|			(*guard) |= IN_SET; /* prevent circular setting */
  ------------------
  |  |   43|      6|#define IN_SET		ZEND_GUARD_PROPERTY_SET
  |  |  ------------------
  |  |  |  |  643|      6|#define ZEND_GUARD_PROPERTY_SET		(1<<1)
  |  |  ------------------
  ------------------
 1256|      6|			zend_std_call_setter(zobj, name, value);
 1257|      6|			(*guard) &= ~IN_SET;
  ------------------
  |  |   43|      6|#define IN_SET		ZEND_GUARD_PROPERTY_SET
  |  |  ------------------
  |  |  |  |  643|      6|#define ZEND_GUARD_PROPERTY_SET		(1<<1)
  |  |  ------------------
  ------------------
 1258|      6|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      6|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1259|      6|			variable_ptr = value;
 1260|      6|		} else if (EXPECTED(!IS_WRONG_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1261|      1|			if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1262|      0|				return forward_write_to_lazy_object(zobj, name, value,
 1263|      0|						cache_slot, /* guarded */ true);
 1264|      0|			}
 1265|       |
 1266|      1|			goto write_std_property;
 1267|      1|		} else {
 1268|       |			/* Trigger the correct error */
 1269|      1|			zend_wrong_offset(zobj->ce, name);
 1270|      1|			ZEND_ASSERT(EG(exception));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1270:4): [True: 0, False: 1]
  |  Branch (1270:4): [True: 1, False: 0]
  ------------------
 1271|      1|			variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1272|      1|			goto exit;
 1273|      1|		}
 1274|  4.91k|	} else {
 1275|  4.91k|		ZEND_ASSERT(!IS_WRONG_PROPERTY_OFFSET(property_offset));
  ------------------
  |  |  112|  4.91k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1275:3): [True: 0, False: 4.91k]
  |  Branch (1275:3): [True: 4.91k, False: 0]
  ------------------
 1276|  4.91k|		if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|  4.91k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.91k]
  |  |  ------------------
  ------------------
 1277|      0|			goto lazy_init;
 1278|      0|		}
 1279|  5.05k|write_std_property:
 1280|  5.05k|		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|  5.05k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 148, False: 4.91k]
  |  |  ------------------
  ------------------
 1281|    148|			variable_ptr = OBJ_PROP(zobj, property_offset);
  ------------------
  |  |  480|    148|	((zval*)((char*)(obj) + offset))
  ------------------
 1282|       |
 1283|    148|			Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|    148|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|    148|	zval *_pz = (pz);				\
  |  | 1287|    148|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|    148|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|    148|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|    148|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 71, False: 77]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|     71|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|     71|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|     71|	}								\
  |  | 1290|    148|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 148]
  |  |  ------------------
  ------------------
 1284|    148|			if (prop_info) {
  ------------------
  |  Branch (1284:8): [True: 148, False: 0]
  ------------------
 1285|    148|				goto typed_property;
 1286|    148|			}
 1287|       |
 1288|      0|			ZVAL_COPY_VALUE(variable_ptr, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1289|  4.91k|		} else {
 1290|  4.91k|			if (UNEXPECTED(zobj->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  457|  4.91k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 4.90k]
  |  |  ------------------
  ------------------
 1291|      3|				zend_forbidden_dynamic_property(zobj->ce, name);
 1292|      3|				variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
 1293|      3|				goto exit;
 1294|      3|			}
 1295|  4.90k|			if (UNEXPECTED(!(zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES))) {
  ------------------
  |  |  457|  4.90k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4.64k, False: 268]
  |  |  ------------------
  ------------------
 1296|  4.64k|				if (UNEXPECTED(!zend_deprecated_dynamic_property(zobj, name))) {
  ------------------
  |  |  457|  4.64k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.64k]
  |  |  ------------------
  ------------------
 1297|      0|					variable_ptr = &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1298|      0|					goto exit;
 1299|      0|				}
 1300|  4.64k|			}
 1301|       |
 1302|  4.90k|			Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|  4.90k|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  4.90k|	zval *_pz = (pz);				\
  |  | 1287|  4.90k|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  4.90k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  4.90k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  4.90k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 247, False: 4.66k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|    247|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|    247|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|    247|	}								\
  |  | 1290|  4.90k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 4.90k]
  |  |  ------------------
  ------------------
 1303|  4.90k|			variable_ptr = zend_hash_add_new(zend_std_get_properties(zobj), name, value);
 1304|  4.90k|		}
 1305|  5.05k|	}
 1306|       |
 1307|  32.1k|exit:
 1308|  32.1k|	return variable_ptr;
 1309|       |
 1310|      0|lazy_init:
 1311|      0|	return forward_write_to_lazy_object(zobj, name, value, cache_slot,
 1312|       |			/* guarded */ false);
 1313|  4.91k|}
zend_std_read_dimension:
 1323|      3|{
 1324|      3|	const zend_class_entry *ce = object->ce;
 1325|      3|	zval tmp_offset;
 1326|       |
 1327|       |	/* arrayaccess_funcs_ptr is set if (and only if) the class implements zend_ce_arrayaccess */
 1328|      3|	zend_class_arrayaccess_funcs *funcs = ce->arrayaccess_funcs_ptr;
 1329|      3|	if (EXPECTED(funcs)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1330|      0|		if (offset == NULL) {
  ------------------
  |  Branch (1330:7): [True: 0, False: 0]
  ------------------
 1331|       |			/* [] construct */
 1332|      0|			ZVAL_NULL(&tmp_offset);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1333|      0|		} else {
 1334|      0|			ZVAL_COPY_DEREF(&tmp_offset, offset);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1335|      0|		}
 1336|       |
 1337|      0|		GC_ADDREF(object);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1338|      0|		if (type == BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (1338:7): [True: 0, False: 0]
  ------------------
 1339|      0|			zend_call_known_instance_method_with_1_params(funcs->zf_offsetexists, object, rv, &tmp_offset);
 1340|      0|			if (UNEXPECTED(Z_ISUNDEF_P(rv))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1341|      0|				OBJ_RELEASE(object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1342|      0|				zval_ptr_dtor(&tmp_offset);
 1343|      0|				return NULL;
 1344|      0|			}
 1345|      0|			if (!i_zend_is_true(rv)) {
  ------------------
  |  Branch (1345:8): [True: 0, False: 0]
  ------------------
 1346|      0|				OBJ_RELEASE(object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1347|      0|				zval_ptr_dtor(&tmp_offset);
 1348|      0|				zval_ptr_dtor(rv);
 1349|      0|				return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1350|      0|			}
 1351|      0|			zval_ptr_dtor(rv);
 1352|      0|		}
 1353|       |
 1354|      0|		zend_call_known_instance_method_with_1_params(funcs->zf_offsetget, object, rv, &tmp_offset);
 1355|       |
 1356|      0|		OBJ_RELEASE(object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1357|      0|		zval_ptr_dtor(&tmp_offset);
 1358|       |
 1359|      0|		if (UNEXPECTED(Z_TYPE_P(rv) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1360|      0|			if (UNEXPECTED(!EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1361|      0|				zend_throw_error(NULL, "Undefined offset for object of type %s used as array", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1362|      0|			}
 1363|      0|			return NULL;
 1364|      0|		}
 1365|      0|		return rv;
 1366|      3|	} else {
 1367|      3|	    zend_bad_array_access(ce);
 1368|       |		return NULL;
 1369|      3|	}
 1370|      3|}
zend_std_write_dimension:
 1374|      2|{
 1375|      2|	const zend_class_entry *ce = object->ce;
 1376|      2|	zval tmp_offset;
 1377|       |
 1378|      2|	zend_class_arrayaccess_funcs *funcs = ce->arrayaccess_funcs_ptr;
 1379|      2|	if (EXPECTED(funcs)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1380|      0|		if (!offset) {
  ------------------
  |  Branch (1380:7): [True: 0, False: 0]
  ------------------
 1381|      0|			ZVAL_NULL(&tmp_offset);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1382|      0|		} else {
 1383|      0|			ZVAL_COPY_DEREF(&tmp_offset, offset);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1384|      0|		}
 1385|      0|		GC_ADDREF(object);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1386|      0|		zend_call_known_instance_method_with_2_params(funcs->zf_offsetset, object, NULL, &tmp_offset, value);
 1387|      0|		OBJ_RELEASE(object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1388|      0|		zval_ptr_dtor(&tmp_offset);
 1389|      2|	} else {
 1390|      2|	    zend_bad_array_access(ce);
 1391|      2|	}
 1392|      2|}
zend_std_get_property_ptr_ptr:
 1426|    162|{
 1427|    162|	zval *retval = NULL;
 1428|    162|	uintptr_t property_offset;
 1429|    162|	const zend_property_info *prop_info = NULL;
 1430|       |
 1431|    162|	ZEND_ASSERT(type != BP_VAR_R && type != BP_VAR_IS);
  ------------------
  |  |  112|    162|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1431:2): [True: 0, False: 162]
  |  Branch (1431:2): [True: 0, False: 0]
  |  Branch (1431:2): [True: 162, False: 0]
  |  Branch (1431:2): [True: 162, False: 0]
  ------------------
 1432|       |
 1433|       |#if DEBUG_OBJECT_HANDLERS
 1434|       |	fprintf(stderr, "Ptr object #%d property: %s\n", zobj->handle, ZSTR_VAL(name));
 1435|       |#endif
 1436|       |
 1437|    162|	property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__get != NULL), cache_slot, &prop_info);
 1438|       |
 1439|    162|	if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|    162|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 30, False: 132]
  |  |  ------------------
  ------------------
 1440|     34|try_again:
 1441|     34|		retval = OBJ_PROP(zobj, property_offset);
  ------------------
  |  |  480|     34|	((zval*)((char*)(obj) + offset))
  ------------------
 1442|     34|		if (UNEXPECTED(Z_TYPE_P(retval) == IS_UNDEF)) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 27]
  |  |  ------------------
  ------------------
 1443|      7|			if (EXPECTED(!zobj->ce->__get) ||
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 0]
  |  |  ------------------
  ------------------
 1444|      0|			    UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET) ||
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1445|      7|			    UNEXPECTED(prop_info && (Z_PROP_FLAG_P(retval) & IS_PROP_UNINIT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1446|      7|				if (UNEXPECTED(zend_lazy_object_must_init(zobj) && (Z_PROP_FLAG_P(retval) & IS_PROP_LAZY))) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  Branch (457:52): [True: 0, False: 7]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1447|      0|					bool guarded = zobj->ce->__get
  ------------------
  |  Branch (1447:21): [True: 0, False: 0]
  ------------------
 1448|      0|						&& (*zend_get_property_guard(zobj, name) & IN_GET);
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (1448:10): [True: 0, False: 0]
  ------------------
 1449|      0|					zend_object *instance = zend_lazy_object_init(zobj);
 1450|      0|					if (!instance) {
  ------------------
  |  Branch (1450:10): [True: 0, False: 0]
  ------------------
 1451|      0|						return &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1452|      0|					}
 1453|       |
 1454|      0|					if (guarded && (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (1454:10): [True: 0, False: 0]
  |  Branch (1454:21): [True: 0, False: 0]
  ------------------
 1455|      0|						uint32_t *guard = zend_get_property_guard(instance, name);
 1456|      0|						if (!(*guard & IN_GET)) {
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (1456:11): [True: 0, False: 0]
  ------------------
 1457|      0|							(*guard) |= IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
 1458|      0|							retval = zend_std_get_property_ptr_ptr(instance, name, type, cache_slot);
 1459|      0|							(*guard) &= ~IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
 1460|      0|							return retval;
 1461|      0|						}
 1462|      0|					}
 1463|       |
 1464|      0|					return zend_std_get_property_ptr_ptr(instance, name, type, cache_slot);
 1465|      0|				}
 1466|      7|				if (UNEXPECTED(type == BP_VAR_RW)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
 1467|      1|					if (prop_info) {
  ------------------
  |  Branch (1467:10): [True: 0, False: 1]
  ------------------
 1468|      0|						zend_typed_property_uninitialized_access(prop_info, name);
 1469|      0|						retval = &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1470|      1|					} else {
 1471|      1|						zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
              						zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1472|       |						/* An error handler may set the property */
 1473|      1|						 if (EXPECTED(Z_TYPE_P(retval) == IS_UNDEF)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1474|      1|							ZVAL_NULL(retval);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1475|      1|						 }
 1476|      1|					}
 1477|      6|				} else if (prop_info && UNEXPECTED(prop_info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (1477:16): [True: 5, False: 1]
  ------------------
 1478|      0|					if ((prop_info->flags & ZEND_ACC_READONLY) || !zend_asymmetric_property_has_set_access(prop_info)) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1478:10): [True: 0, False: 0]
  |  Branch (1478:52): [True: 0, False: 0]
  ------------------
 1479|      0|						retval = NULL;
 1480|      0|					}
 1481|      6|				} else if (!prop_info || !ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      5|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      5|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1481:16): [True: 1, False: 5]
  |  Branch (1481:30): [True: 0, False: 5]
  ------------------
 1482|      1|					ZVAL_NULL(retval);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1483|      1|				}
 1484|      7|			} else {
 1485|       |				/* we do have getter - fail and let it try again with usual get/set */
 1486|      0|				retval = NULL;
 1487|      0|			}
 1488|     27|		} else if (prop_info && UNEXPECTED(prop_info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  ------------------
  ------------------
  |  Branch (1488:14): [True: 11, False: 16]
  ------------------
 1489|      1|			if ((prop_info->flags & ZEND_ACC_READONLY) || !zend_asymmetric_property_has_set_access(prop_info)) {
  ------------------
  |  |  237|      1|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1489:8): [True: 1, False: 0]
  |  Branch (1489:50): [True: 0, False: 0]
  ------------------
 1490|      1|				retval = NULL;
 1491|      1|			}
 1492|      1|		}
 1493|    132|	} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|    132|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 124, False: 8]
  |  |  ------------------
  ------------------
 1494|    124|		if (EXPECTED(zobj->properties)) {
  ------------------
  |  |  456|    124|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 101, False: 23]
  |  |  ------------------
  ------------------
 1495|    101|			if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|    101|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 92]
  |  |  ------------------
  ------------------
 1496|      9|				if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
 1497|      9|					GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      9|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1498|      9|				}
 1499|      9|				zobj->properties = zend_array_dup(zobj->properties);
 1500|      9|			}
 1501|    101|		    if (EXPECTED((retval = zend_hash_find(zobj->properties, name)) != NULL)) {
  ------------------
  |  |  456|    101|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 81, False: 20]
  |  |  ------------------
  ------------------
 1502|     81|				return retval;
 1503|     81|		    }
 1504|    101|		}
 1505|     43|		if (EXPECTED(!zobj->ce->__get) ||
  ------------------
  |  |  456|     86|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 39, False: 4]
  |  |  ------------------
  ------------------
 1506|     39|		    UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1507|     39|			if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 39]
  |  |  ------------------
  ------------------
 1508|      0|				bool guarded = (zobj->ce->__get != NULL);
 1509|      0|				zend_object *instance = zend_lazy_object_init(zobj);
 1510|      0|				if (!instance) {
  ------------------
  |  Branch (1510:9): [True: 0, False: 0]
  ------------------
 1511|      0|					return &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1512|      0|				}
 1513|       |
 1514|      0|				if (guarded && (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (1514:9): [True: 0, False: 0]
  |  Branch (1514:20): [True: 0, False: 0]
  ------------------
 1515|      0|					uint32_t *guard = zend_get_property_guard(instance, name);
 1516|      0|					if (!(*guard & IN_GET)) {
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (1516:10): [True: 0, False: 0]
  ------------------
 1517|      0|						(*guard) |= IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
 1518|      0|						retval = zend_std_get_property_ptr_ptr(instance, name, type, cache_slot);
 1519|      0|						(*guard) &= ~IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
 1520|      0|						return retval;
 1521|      0|					}
 1522|      0|				}
 1523|       |
 1524|      0|				return zend_std_get_property_ptr_ptr(instance, name, type, cache_slot);
 1525|      0|			}
 1526|     39|			if (UNEXPECTED(zobj->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 39]
  |  |  ------------------
  ------------------
 1527|      0|				zend_forbidden_dynamic_property(zobj->ce, name);
 1528|      0|				return &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1529|      0|			}
 1530|     39|			if (UNEXPECTED(!(zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES))) {
  ------------------
  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 35]
  |  |  ------------------
  ------------------
 1531|      4|				if (UNEXPECTED(!zend_deprecated_dynamic_property(zobj, name))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1532|      0|					return &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1533|      0|				}
 1534|      4|			}
 1535|     39|			if (UNEXPECTED(!zobj->properties)) {
  ------------------
  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 19, False: 20]
  |  |  ------------------
  ------------------
 1536|     19|				rebuild_object_properties_internal(zobj);
 1537|     19|			}
 1538|     39|			if (UNEXPECTED(type == BP_VAR_RW)) {
  ------------------
  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 35]
  |  |  ------------------
  ------------------
 1539|      4|				zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   23|      4|#define E_WARNING			(1<<1L)
  ------------------
              				zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1540|      4|			}
 1541|     39|			retval = zend_hash_add(zobj->properties, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|     39|# define EG(v) (executor_globals.v)
  ------------------
 1542|     39|		}
 1543|     43|	} else if (IS_HOOKED_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   43|      8|	((intptr_t)(offset) > 0 && (intptr_t)(offset) < 16)
  |  |  ------------------
  |  |  |  Branch (43:3): [True: 6, False: 2]
  |  |  |  Branch (43:29): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 1544|      6|		if (!(prop_info->flags & ZEND_ACC_VIRTUAL) && !zend_should_call_hook(prop_info, zobj)) {
  ------------------
  |  |  270|      6|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1544:7): [True: 6, False: 0]
  |  Branch (1544:49): [True: 4, False: 2]
  ------------------
 1545|      4|			property_offset = prop_info->offset;
 1546|      4|			if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      4|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      4|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (1546:8): [True: 4, False: 0]
  ------------------
 1547|      4|				prop_info = NULL;
 1548|      4|			}
 1549|      4|			goto try_again;
 1550|      4|		}
 1551|      6|	} else if (zobj->ce->__get == NULL) {
  ------------------
  |  Branch (1551:13): [True: 0, False: 2]
  ------------------
 1552|      0|		retval = &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1553|      0|	}
 1554|       |
 1555|     81|	return retval;
 1556|    162|}
zend_std_unset_property:
 1560|      8|{
 1561|      8|	uintptr_t property_offset;
 1562|      8|	const zend_property_info *prop_info = NULL;
 1563|      8|	uint32_t *guard = NULL;
 1564|       |
 1565|      8|	property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__unset != NULL), cache_slot, &prop_info);
 1566|       |
 1567|      8|	if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 3]
  |  |  ------------------
  ------------------
 1568|      5|		zval *slot = OBJ_PROP(zobj, property_offset);
  ------------------
  |  |  480|      5|	((zval*)((char*)(obj) + offset))
  ------------------
 1569|       |
 1570|      5|		if (prop_info && UNEXPECTED(prop_info->flags & (ZEND_ACC_READONLY|ZEND_ACC_PPP_SET_MASK))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (1570:7): [True: 2, False: 3]
  ------------------
 1571|      0|			bool error;
 1572|      0|			if (Z_TYPE_P(slot) != IS_UNDEF || Z_PROP_FLAG_P(slot) & IS_PROP_UNINIT || !zobj->ce->__unset) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(slot) != IS_UNDEF || Z_PROP_FLAG_P(slot) & IS_PROP_UNINIT || !zobj->ce->__unset) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
              			if (Z_TYPE_P(slot) != IS_UNDEF || Z_PROP_FLAG_P(slot) & IS_PROP_UNINIT || !zobj->ce->__unset) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(slot) != IS_UNDEF || Z_PROP_FLAG_P(slot) & IS_PROP_UNINIT || !zobj->ce->__unset) {
  ------------------
  |  | 1577|      0|#define IS_PROP_UNINIT (1<<0)
  ------------------
  |  Branch (1572:8): [True: 0, False: 0]
  |  Branch (1572:38): [True: 0, False: 0]
  |  Branch (1572:78): [True: 0, False: 0]
  ------------------
 1573|      0|				error = true;
 1574|      0|			} else {
 1575|      0|				guard = zend_get_property_guard(zobj, name);
 1576|      0|				error = (*guard) & IN_UNSET;
  ------------------
  |  |   44|      0|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      0|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
 1577|      0|			}
 1578|      0|			if (error) {
  ------------------
  |  Branch (1578:8): [True: 0, False: 0]
  ------------------
 1579|      0|				if ((prop_info->flags & ZEND_ACC_READONLY)
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1579:9): [True: 0, False: 0]
  ------------------
 1580|      0|				 && Z_TYPE_P(slot) != IS_UNDEF
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				 && Z_TYPE_P(slot) != IS_UNDEF
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1580:9): [True: 0, False: 0]
  ------------------
 1581|      0|				 && !(Z_PROP_FLAG_P(slot) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				 && !(Z_PROP_FLAG_P(slot) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  |  Branch (1581:9): [True: 0, False: 0]
  ------------------
 1582|      0|					zend_readonly_property_unset_error(prop_info->ce, name);
 1583|      0|					return;
 1584|      0|				}
 1585|      0|				if ((prop_info->flags & ZEND_ACC_PPP_SET_MASK) && !zend_asymmetric_property_has_set_access(prop_info)) {
  ------------------
  |  |  422|      0|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      0|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      0|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      0|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1585:9): [True: 0, False: 0]
  |  Branch (1585:55): [True: 0, False: 0]
  ------------------
 1586|      0|					zend_asymmetric_visibility_property_modification_error(prop_info, "unset");
 1587|      0|					return;
 1588|      0|				}
 1589|      0|			}
 1590|      0|		}
 1591|       |
 1592|      5|		if (Z_TYPE_P(slot) != IS_UNDEF) {
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(slot) != IS_UNDEF) {
  ------------------
  |  |  606|      5|#define IS_UNDEF					0
  ------------------
  |  Branch (1592:7): [True: 3, False: 2]
  ------------------
 1593|      3|			if (UNEXPECTED(Z_ISREF_P(slot)) &&
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1594|      0|					(ZEND_DEBUG || ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(slot)))) {
  ------------------
  |  | 2105|      0|#define ZEND_DEBUG 1
  |  |  ------------------
  |  |  |  Branch (2105:20): [True: 0, Folded]
  |  |  ------------------
  ------------------
              					(ZEND_DEBUG || ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(slot)))) {
  ------------------
  |  |  123|      0|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1595|      0|				if (prop_info) {
  ------------------
  |  Branch (1595:9): [True: 0, False: 0]
  ------------------
 1596|      0|					ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(slot), prop_info);
  ------------------
  |  |  595|      0|	zend_ref_del_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
 1597|      0|				}
 1598|      0|			}
 1599|      3|			zval tmp;
 1600|      3|			ZVAL_COPY_VALUE(&tmp, slot);
  ------------------
  |  | 1416|      3|	do {												\
  |  | 1417|      3|		zval *_z1 = (z);								\
  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1601|      3|			ZVAL_UNDEF(slot);
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1602|      3|			zval_ptr_dtor(&tmp);
 1603|      3|			if (zobj->properties) {
  ------------------
  |  Branch (1603:8): [True: 1, False: 2]
  ------------------
 1604|      1|				HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              				HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      1|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
 1605|      1|			}
 1606|      3|			return;
 1607|      3|		}
 1608|      2|		if (UNEXPECTED(Z_PROP_FLAG_P(slot) & IS_PROP_UNINIT)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1609|      2|			if (UNEXPECTED(zend_lazy_object_must_init(zobj) && (Z_PROP_FLAG_P(slot) & IS_PROP_LAZY))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1610|      0|				zobj = zend_lazy_object_init(zobj);
 1611|      0|				if (!zobj) {
  ------------------
  |  Branch (1611:9): [True: 0, False: 0]
  ------------------
 1612|      0|					return;
 1613|      0|				}
 1614|      0|				zend_std_unset_property(zobj, name, cache_slot);
 1615|      0|				return;
 1616|      0|			}
 1617|       |
 1618|       |			/* Reset the IS_PROP_UNINIT flag, if it exists and bypass __unset(). */
 1619|      2|			Z_PROP_FLAG_P(slot) = 0;
  ------------------
  |  | 1580|      2|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      2|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      2|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1620|      2|			return;
 1621|      2|		}
 1622|      3|	} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 1623|      1|	 && EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1624|      0|		if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1625|      0|			if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1626|      0|				GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1627|      0|			}
 1628|      0|			zobj->properties = zend_array_dup(zobj->properties);
 1629|      0|		}
 1630|      0|		if (EXPECTED(zend_hash_del(zobj->properties, name) != FAILURE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1631|      0|			return;
 1632|      0|		}
 1633|      3|	} else if (IS_HOOKED_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   43|      3|	((intptr_t)(offset) > 0 && (intptr_t)(offset) < 16)
  |  |  ------------------
  |  |  |  Branch (43:3): [True: 0, False: 3]
  |  |  |  Branch (43:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1634|      0|		zend_throw_error(NULL, "Cannot unset hooked property %s::$%s",
 1635|      0|			ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1636|      0|		return;
 1637|      3|	} else if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1638|      0|		return;
 1639|      0|	}
 1640|       |
 1641|       |	/* For initialized lazy proxies: if the real instance's __unset guard
 1642|       |	 * is already set, we are inside a recursive call from the real
 1643|       |	 * instance's __unset. Forward directly to avoid double invocation. */
 1644|      3|	if (UNEXPECTED(zend_object_is_lazy_proxy(zobj)
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1645|      3|			&& zend_lazy_object_initialized(zobj))) {
 1646|      0|		zend_object *instance = zend_lazy_object_get_instance(zobj);
 1647|      0|		if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) {
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (1647:7): [True: 0, False: 0]
  ------------------
 1648|      0|			uint32_t *instance_guard = zend_get_property_guard(instance, name);
 1649|      0|			if ((*instance_guard) & IN_UNSET) {
  ------------------
  |  |   44|      0|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      0|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
  |  Branch (1649:8): [True: 0, False: 0]
  ------------------
 1650|      0|				zend_std_unset_property(instance, name, cache_slot);
 1651|      0|				return;
 1652|      0|			}
 1653|      0|		}
 1654|      0|	}
 1655|       |
 1656|       |	/* magic unset */
 1657|      3|	if (zobj->ce->__unset) {
  ------------------
  |  Branch (1657:6): [True: 3, False: 0]
  ------------------
 1658|      3|		if (!guard) {
  ------------------
  |  Branch (1658:7): [True: 3, False: 0]
  ------------------
 1659|      3|			guard = zend_get_property_guard(zobj, name);
 1660|      3|		}
 1661|      3|		if (!((*guard) & IN_UNSET)) {
  ------------------
  |  |   44|      3|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      3|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
  |  Branch (1661:7): [True: 2, False: 1]
  ------------------
 1662|       |			/* have unsetter - try with it! */
 1663|      2|			GC_ADDREF(zobj);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1664|      2|			(*guard) |= IN_UNSET; /* prevent circular unsetting */
  ------------------
  |  |   44|      2|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      2|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
 1665|      2|			zend_std_call_unsetter(zobj, name);
 1666|      2|			(*guard) &= ~IN_UNSET;
  ------------------
  |  |   44|      2|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      2|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
 1667|      2|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      2|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1668|      2|			return;
 1669|      2|		} else if (UNEXPECTED(IS_WRONG_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1670|       |			/* Trigger the correct error */
 1671|      1|			zend_wrong_offset(zobj->ce, name);
 1672|      1|			ZEND_ASSERT(EG(exception));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1672:4): [True: 0, False: 1]
  |  Branch (1672:4): [True: 1, False: 0]
  ------------------
 1673|      1|			return;
 1674|      1|		} else {
 1675|       |			/* Nothing to do: The property already does not exist. */
 1676|      0|		}
 1677|      3|	}
 1678|       |
 1679|      0|	if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1680|      0|		zobj = zend_lazy_object_init(zobj);
 1681|      0|		if (!zobj) {
  ------------------
  |  Branch (1681:7): [True: 0, False: 0]
  ------------------
 1682|      0|			return;
 1683|      0|		}
 1684|       |
 1685|      0|		if (UNEXPECTED(guard && zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1686|      0|			guard = zend_get_property_guard(zobj, name);
 1687|      0|			if (!((*guard) & IN_UNSET)) {
  ------------------
  |  |   44|      0|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      0|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
  |  Branch (1687:8): [True: 0, False: 0]
  ------------------
 1688|      0|				(*guard) |= IN_UNSET;
  ------------------
  |  |   44|      0|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      0|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
 1689|      0|				zend_std_unset_property(zobj, name, cache_slot);
 1690|      0|				(*guard) &= ~IN_UNSET;
  ------------------
  |  |   44|      0|#define IN_UNSET	ZEND_GUARD_PROPERTY_UNSET
  |  |  ------------------
  |  |  |  |  644|      0|#define ZEND_GUARD_PROPERTY_UNSET	(1<<2)
  |  |  ------------------
  ------------------
 1691|      0|				return;
 1692|      0|			}
 1693|      0|		}
 1694|       |
 1695|      0|		zend_std_unset_property(zobj, name, cache_slot);
 1696|      0|		return;
 1697|      0|	}
 1698|      0|}
zend_check_protected:
 1741|      2|{
 1742|      2|	const zend_class_entry *fbc_scope = ce;
 1743|       |
 1744|       |	/* Is the context that's calling the function, the same as one of
 1745|       |	 * the function's parents?
 1746|       |	 */
 1747|      4|	while (fbc_scope) {
  ------------------
  |  Branch (1747:9): [True: 2, False: 2]
  ------------------
 1748|      2|		if (fbc_scope==scope) {
  ------------------
  |  Branch (1748:7): [True: 0, False: 2]
  ------------------
 1749|      0|			return 1;
 1750|      0|		}
 1751|      2|		fbc_scope = fbc_scope->parent;
 1752|      2|	}
 1753|       |
 1754|       |	/* Is the function's scope the same as our current object context,
 1755|       |	 * or any of the parents of our context?
 1756|       |	 */
 1757|      4|	while (scope) {
  ------------------
  |  Branch (1757:9): [True: 2, False: 2]
  ------------------
 1758|      2|		if (scope==ce) {
  ------------------
  |  Branch (1758:7): [True: 0, False: 2]
  ------------------
 1759|      0|			return 1;
 1760|      0|		}
 1761|      2|		scope = scope->parent;
 1762|      2|	}
 1763|      2|	return 0;
 1764|      2|}
zend_get_call_trampoline_func:
 1769|  1.36k|{
 1770|  1.36k|	size_t mname_len;
 1771|  1.36k|	zend_op_array *func;
 1772|       |	/* We use non-NULL value to avoid useless run_time_cache allocation.
 1773|       |	 * The low bit must be zero, to not be interpreted as a MAP_PTR offset.
 1774|       |	 */
 1775|  1.36k|	static const void *dummy = (void*)(intptr_t)2;
 1776|       |
 1777|  1.36k|	if (EXPECTED(EG(trampoline).common.function_name == NULL)) {
  ------------------
  |  |  456|  1.36k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 38, False: 1.32k]
  |  |  ------------------
  ------------------
 1778|     38|		func = &EG(trampoline).op_array;
  ------------------
  |  |   45|     38|# define EG(v) (executor_globals.v)
  ------------------
 1779|  1.32k|	} else {
 1780|  1.32k|		func = ecalloc(1, sizeof(zend_op_array));
  ------------------
  |  |  157|  1.32k|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  1.32k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  1.32k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  1.32k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  1.32k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1781|  1.32k|	}
 1782|       |
 1783|  1.36k|	func->type = ZEND_USER_FUNCTION;
 1784|  1.36k|	func->arg_flags[0] = 0;
 1785|  1.36k|	func->arg_flags[1] = 0;
 1786|  1.36k|	func->arg_flags[2] = 0;
 1787|  1.36k|	func->fn_flags = ZEND_ACC_CALL_VIA_TRAMPOLINE
  ------------------
  |  |  372|  1.36k|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
 1788|  1.36k|		| ZEND_ACC_PUBLIC
  ------------------
  |  |  219|  1.36k|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
 1789|  1.36k|		| ZEND_ACC_VARIADIC
  ------------------
  |  |  358|  1.36k|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
 1790|  1.36k|		| (fbc->common.fn_flags & (ZEND_ACC_RETURN_REFERENCE|ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD|ZEND_ACC_STATIC));
  ------------------
  |  |  352|  1.36k|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
              		| (fbc->common.fn_flags & (ZEND_ACC_RETURN_REFERENCE|ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD|ZEND_ACC_STATIC));
  ------------------
  |  |  233|  1.36k|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
              		| (fbc->common.fn_flags & (ZEND_ACC_RETURN_REFERENCE|ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD|ZEND_ACC_STATIC));
  ------------------
  |  |  258|  1.36k|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
              		| (fbc->common.fn_flags & (ZEND_ACC_RETURN_REFERENCE|ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD|ZEND_ACC_STATIC));
  ------------------
  |  |  410|  1.36k|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
              		| (fbc->common.fn_flags & (ZEND_ACC_RETURN_REFERENCE|ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD|ZEND_ACC_STATIC));
  ------------------
  |  |  227|  1.36k|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
 1791|  1.36k|	func->fn_flags2 = 0;
 1792|       |	/* Attributes outlive the trampoline because they are created by the compiler. */
 1793|  1.36k|	func->attributes = fbc->common.attributes;
 1794|  1.36k|	func->opcodes = &EG(call_trampoline_op);
  ------------------
  |  |   45|  1.36k|# define EG(v) (executor_globals.v)
  ------------------
 1795|  1.36k|	ZEND_MAP_PTR_INIT(func->run_time_cache, (void**)dummy);
  ------------------
  |  |   38|  1.36k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  1.36k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  1.36k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  1.36k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 1.36k]
  |  |  ------------------
  ------------------
 1796|  1.36k|	func->scope = fbc->common.scope;
 1797|       |	/* reserve space for arguments, local and temporary variables */
 1798|       |	/* EG(trampoline) is reused from other places, like FFI (e.g. zend_ffi_cdata_get_closure()) where
 1799|       |	 * it is used as an internal function. It may set fields that don't belong to common, thus
 1800|       |	 * modifying zend_op_array specific data, most significantly last_var. We need to reset this
 1801|       |	 * value so that it doesn't contain garbage when the engine allocates space for the next stack
 1802|       |	 * frame. This didn't cause any issues until now due to "lucky" structure layout. */
 1803|  1.36k|	func->last_var = 0;
 1804|  1.36k|	uint32_t min_T = 2 + ZEND_OBSERVER_ENABLED;
  ------------------
  |  |   46|  1.36k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  ------------------
 1805|  1.36k|	func->T = (fbc->type == ZEND_USER_FUNCTION)? MAX(fbc->op_array.last_var + fbc->op_array.T, min_T) : min_T;
  ------------------
  |  |  517|  1.36k|#define MAX(a, b)  (((a)>(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (517:21): [True: 1.33k, False: 28]
  |  |  ------------------
  ------------------
  |  Branch (1805:12): [True: 1.36k, False: 0]
  ------------------
 1806|  1.36k|	func->filename = (fbc->type == ZEND_USER_FUNCTION)? fbc->op_array.filename : ZSTR_EMPTY_ALLOC();
  ------------------
  |  Branch (1806:19): [True: 1.36k, False: 0]
  ------------------
 1807|  1.36k|	func->line_start = (fbc->type == ZEND_USER_FUNCTION)? fbc->op_array.line_start : 0;
  ------------------
  |  Branch (1807:21): [True: 1.36k, False: 0]
  ------------------
 1808|  1.36k|	func->line_end = (fbc->type == ZEND_USER_FUNCTION)? fbc->op_array.line_end : 0;
  ------------------
  |  Branch (1808:19): [True: 1.36k, False: 0]
  ------------------
 1809|       |
 1810|       |	//??? keep compatibility for "\0" characters
 1811|       |	//??? see: Zend/tests/bug46238.phpt
 1812|  1.36k|	if (UNEXPECTED((mname_len = strlen(ZSTR_VAL(method_name))) != ZSTR_LEN(method_name))) {
  ------------------
  |  |  457|  1.36k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 1.35k]
  |  |  ------------------
  ------------------
 1813|      6|		func->function_name = zend_string_init(ZSTR_VAL(method_name), mname_len, 0);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1814|  1.35k|	} else {
 1815|  1.35k|		func->function_name = zend_string_copy(method_name);
 1816|  1.35k|	}
 1817|       |
 1818|  1.36k|	func->prototype = NULL;
 1819|  1.36k|	func->prop_info = NULL;
 1820|  1.36k|	func->num_args = 0;
 1821|  1.36k|	func->required_num_args = 0;
 1822|  1.36k|	func->arg_info = zend_call_trampoline_arginfo;
 1823|       |
 1824|  1.36k|	return (zend_function*)func;
 1825|  1.36k|}
zend_get_property_hook_trampoline:
 1874|      2|{
 1875|      2|	zend_function *func;
 1876|      2|	if (EXPECTED(EG(trampoline).common.function_name == NULL)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1877|      2|		func = &EG(trampoline);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
 1878|      2|	} else {
 1879|      0|		func = (zend_function *)(uintptr_t)ecalloc(1, sizeof(zend_internal_function));
  ------------------
  |  |  157|      0|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1880|      0|	}
 1881|      2|	func->type = ZEND_INTERNAL_FUNCTION;
 1882|       |	/* This trampoline does not use the call_trampoline_op, so it won't reuse the call frame,
 1883|       |	 * which means we don't even need to reserve a temporary for observers. */
 1884|      2|	func->common.T = 0;
 1885|      2|	func->common.arg_flags[0] = 0;
 1886|      2|	func->common.arg_flags[1] = 0;
 1887|      2|	func->common.arg_flags[2] = 0;
 1888|      2|	func->common.fn_flags = ZEND_ACC_CALL_VIA_TRAMPOLINE;
  ------------------
  |  |  372|      2|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
 1889|      2|	func->common.fn_flags2 = 0;
 1890|      2|	func->common.function_name = zend_string_concat3(
 1891|      2|		"$", 1, ZSTR_VAL(prop_name), ZSTR_LEN(prop_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		"$", 1, ZSTR_VAL(prop_name), ZSTR_LEN(prop_name),
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1892|      2|		kind == ZEND_PROPERTY_HOOK_GET ? "::get" : "::set", 5);
  ------------------
  |  Branch (1892:3): [True: 1, False: 1]
  ------------------
 1893|       |	/* set to 0 to avoid arg_info[] allocation, because all values are passed by value anyway */
 1894|      2|	uint32_t args = kind == ZEND_PROPERTY_HOOK_GET ? 0 : 1;
  ------------------
  |  Branch (1894:18): [True: 1, False: 1]
  ------------------
 1895|      2|	func->common.num_args = args;
 1896|      2|	func->common.required_num_args = args;
 1897|      2|	func->common.scope = prop_info->ce;
 1898|      2|	func->common.prototype = NULL;
 1899|      2|	func->common.prop_info = prop_info;
 1900|      2|	func->common.arg_info = zend_property_hook_arginfo;
 1901|      2|	func->internal_function.handler = kind == ZEND_PROPERTY_HOOK_GET
  ------------------
  |  Branch (1901:36): [True: 1, False: 1]
  ------------------
 1902|      2|		? ZEND_FN(zend_parent_hook_get_trampoline)
  ------------------
  |  |   71|      1|#define ZEND_FN(name) zif_##name
  ------------------
 1903|      2|		: ZEND_FN(zend_parent_hook_set_trampoline);
  ------------------
  |  |   71|      3|#define ZEND_FN(name) zif_##name
  ------------------
 1904|      2|	func->internal_function.module = NULL;
 1905|       |
 1906|      2|	func->internal_function.reserved[0] = prop_name;
 1907|      2|	func->internal_function.reserved[1] = NULL;
 1908|       |
 1909|      2|	return func;
 1910|      2|}
zend_bad_method_call:
 1913|      2|{
 1914|      2|	zend_throw_error(NULL, "Call to %s method %s::%s() from %s%s",
 1915|      2|		zend_visibility_string(fbc->common.fn_flags), ZEND_FN_SCOPE_NAME(fbc), ZSTR_VAL(method_name),
  ------------------
  |  |  617|      2|#define ZEND_FN_SCOPE_NAME(function)  ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "")
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  |  Branch (617:40): [True: 2, False: 0]
  |  |  |  Branch (617:54): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              		zend_visibility_string(fbc->common.fn_flags), ZEND_FN_SCOPE_NAME(fbc), ZSTR_VAL(method_name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1916|      2|		scope ? "scope " : "global scope",
  ------------------
  |  Branch (1916:3): [True: 0, False: 2]
  ------------------
 1917|      2|		scope ? ZSTR_VAL(scope->name) : ""
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1917:3): [True: 0, False: 2]
  ------------------
 1918|      2|	);
 1919|      2|}
zend_abstract_method_call:
 1923|      2|{
 1924|      2|	zend_throw_error(NULL, "Cannot call abstract method %s::%s()",
 1925|      2|		ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1926|      2|}
zend_std_get_method:
 1930|  1.84k|{
 1931|  1.84k|	zend_object *zobj = *obj_ptr;
 1932|  1.84k|	zval *func;
 1933|  1.84k|	zend_function *fbc;
 1934|  1.84k|	zend_string *lc_method_name;
 1935|  1.84k|	ALLOCA_FLAG(use_heap);
 1936|       |
 1937|  1.84k|	if (EXPECTED(key != NULL)) {
  ------------------
  |  |  456|  1.84k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 480, False: 1.36k]
  |  |  ------------------
  ------------------
 1938|    480|		lc_method_name = Z_STR_P(key);
  ------------------
  |  |  982|    480|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    480|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1939|       |#ifdef ZEND_ALLOCA_MAX_SIZE
 1940|       |		use_heap = 0;
 1941|       |#endif
 1942|  1.36k|	} else {
 1943|  1.36k|		ZSTR_ALLOCA_ALLOC(lc_method_name, ZSTR_LEN(method_name), use_heap);
  ------------------
  |  |  125|  1.36k|#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap) do { \
  |  |  126|  1.36k|	(str) = (zend_string *)do_alloca(ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(_len), 8), (use_heap)); \
  |  |  ------------------
  |  |  |  |  247|  1.36k|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  1.36k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|  1.36k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|  1.36k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|  1.36k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|  1.36k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|  1.36k|	GC_SET_REFCOUNT(str, 1); \
  |  |  ------------------
  |  |  |  |  717|  1.36k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  |  128|  1.36k|	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  775|  1.36k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  806|  1.36k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.36k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|  1.36k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|  1.36k|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  1.36k|	ZSTR_H(str) = 0; \
  |  |  ------------------
  |  |  |  |   69|  1.36k|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  130|  1.36k|	ZSTR_LEN(str) = _len; \
  |  |  ------------------
  |  |  |  |   68|  1.36k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  131|  1.36k|} while (0)
  |  |  ------------------
  |  |  |  Branch (131:10): [Folded, False: 1.36k]
  |  |  ------------------
  ------------------
 1944|  1.36k|		zend_str_tolower_copy(ZSTR_VAL(lc_method_name), ZSTR_VAL(method_name), ZSTR_LEN(method_name));
  ------------------
  |  |   67|  1.36k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_str_tolower_copy(ZSTR_VAL(lc_method_name), ZSTR_VAL(method_name), ZSTR_LEN(method_name));
  ------------------
  |  |   67|  1.36k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_str_tolower_copy(ZSTR_VAL(lc_method_name), ZSTR_VAL(method_name), ZSTR_LEN(method_name));
  ------------------
  |  |   68|  1.36k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1945|  1.36k|	}
 1946|       |
 1947|  1.84k|	if (UNEXPECTED((func = zend_hash_find(&zobj->ce->function_table, lc_method_name)) == NULL)) {
  ------------------
  |  |  457|  1.84k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.37k, False: 467]
  |  |  ------------------
  ------------------
 1948|  1.37k|		if (UNEXPECTED(!key)) {
  ------------------
  |  |  457|  1.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.35k, False: 17]
  |  |  ------------------
  ------------------
 1949|  1.35k|			ZSTR_ALLOCA_FREE(lc_method_name, use_heap);
  ------------------
  |  |  139|  1.35k|#define ZSTR_ALLOCA_FREE(str, use_heap) free_alloca(str, use_heap)
  |  |  ------------------
  |  |  |  |  248|  1.35k|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|  1.35k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|  1.35k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|  1.35k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|  1.35k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|  1.35k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1950|  1.35k|		}
 1951|  1.37k|		if (zobj->ce->__call) {
  ------------------
  |  Branch (1951:7): [True: 1.35k, False: 21]
  ------------------
 1952|  1.35k|			return zend_get_call_trampoline_func(zobj->ce->__call, method_name);
 1953|  1.35k|		} else {
 1954|     21|			return NULL;
 1955|     21|		}
 1956|  1.37k|	}
 1957|       |
 1958|    467|	fbc = Z_FUNC_P(func);
  ------------------
  |  | 1050|    467|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|    467|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 1959|       |
 1960|       |	/* Check access level */
 1961|    467|	if (fbc->op_array.fn_flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  224|    467|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
              	if (fbc->op_array.fn_flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  221|    467|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	if (fbc->op_array.fn_flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  220|    467|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1961:6): [True: 2, False: 465]
  ------------------
 1962|      2|		const zend_class_entry *scope = zend_get_executed_scope();
 1963|       |
 1964|      2|		if (fbc->common.scope != scope) {
  ------------------
  |  Branch (1964:7): [True: 2, False: 0]
  ------------------
 1965|      2|			if (fbc->op_array.fn_flags & ZEND_ACC_CHANGED) {
  ------------------
  |  |  224|      2|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1965:8): [True: 0, False: 2]
  ------------------
 1966|      0|				zend_function *updated_fbc = zend_get_parent_private_method(scope, zobj->ce, lc_method_name);
 1967|       |
 1968|      0|				if (EXPECTED(updated_fbc != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1969|      0|					fbc = updated_fbc;
 1970|      0|					goto exit;
 1971|      0|				} else if (fbc->op_array.fn_flags & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1971:16): [True: 0, False: 0]
  ------------------
 1972|      0|					goto exit;
 1973|      0|				}
 1974|      0|			}
 1975|      2|			if (UNEXPECTED(fbc->op_array.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1976|      2|			 || UNEXPECTED(!zend_check_protected(zend_get_function_root_class(fbc), scope))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1977|      2|				if (zobj->ce->__call) {
  ------------------
  |  Branch (1977:9): [True: 0, False: 2]
  ------------------
 1978|      0|					fbc = zend_get_call_trampoline_func(zobj->ce->__call, method_name);
 1979|      2|				} else {
 1980|      2|					zend_bad_method_call(fbc, method_name, scope);
 1981|      2|					fbc = NULL;
 1982|      2|				}
 1983|      2|			}
 1984|      2|		}
 1985|      2|	}
 1986|       |
 1987|    467|exit:
 1988|    467|	if (fbc && UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  457|    465|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 465]
  |  |  ------------------
  ------------------
  |  Branch (1988:6): [True: 465, False: 2]
  ------------------
 1989|      0|		zend_abstract_method_call(fbc);
 1990|      0|		fbc = NULL;
 1991|      0|	}
 1992|    467|	if (UNEXPECTED(!key)) {
  ------------------
  |  |  457|    467|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 463]
  |  |  ------------------
  ------------------
 1993|       |		ZSTR_ALLOCA_FREE(lc_method_name, use_heap);
  ------------------
  |  |  139|      4|#define ZSTR_ALLOCA_FREE(str, use_heap) free_alloca(str, use_heap)
  |  |  ------------------
  |  |  |  |  248|      4|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1994|      4|	}
 1995|    467|	return fbc;
 1996|    467|}
zend_std_get_static_method:
 2019|    121|{
 2020|    121|	zend_string *lc_function_name;
 2021|    121|	if (EXPECTED(key != NULL)) {
  ------------------
  |  |  456|    121|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 106, False: 15]
  |  |  ------------------
  ------------------
 2022|    106|		lc_function_name = Z_STR_P(key);
  ------------------
  |  |  982|    106|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    106|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2023|    106|	} else {
 2024|     15|		lc_function_name = zend_string_tolower(function_name);
 2025|     15|	}
 2026|       |
 2027|    121|	zend_function *fbc;
 2028|    121|	zval *func = zend_hash_find(&ce->function_table, lc_function_name);
 2029|    121|	if (EXPECTED(func)) {
  ------------------
  |  |  456|    121|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 109, False: 12]
  |  |  ------------------
  ------------------
 2030|    109|		fbc = Z_FUNC_P(func);
  ------------------
  |  | 1050|    109|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|    109|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 2031|    109|		if (!(fbc->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|    109|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2031:7): [True: 0, False: 109]
  ------------------
 2032|      0|			const zend_class_entry *scope = zend_get_executed_scope();
 2033|      0|			ZEND_ASSERT(!(fbc->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2033:4): [True: 0, False: 0]
  |  Branch (2033:4): [True: 0, False: 0]
  ------------------
 2034|      0|			if (!zend_check_method_accessible(fbc, scope)) {
  ------------------
  |  Branch (2034:8): [True: 0, False: 0]
  ------------------
 2035|      0|				zend_function *fallback_fbc = get_static_method_fallback(ce, function_name);
 2036|      0|				if (!fallback_fbc) {
  ------------------
  |  Branch (2036:9): [True: 0, False: 0]
  ------------------
 2037|      0|					zend_bad_method_call(fbc, function_name, scope);
 2038|      0|				}
 2039|      0|				fbc = fallback_fbc;
 2040|      0|			}
 2041|      0|		}
 2042|    109|	} else {
 2043|     12|		fbc = get_static_method_fallback(ce, function_name);
 2044|     12|	}
 2045|       |
 2046|    121|	if (UNEXPECTED(!key)) {
  ------------------
  |  |  457|    121|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 15, False: 106]
  |  |  ------------------
  ------------------
 2047|     15|		zend_string_release_ex(lc_function_name, 0);
 2048|     15|	}
 2049|       |
 2050|    121|	if (EXPECTED(fbc)) {
  ------------------
  |  |  456|    121|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 116, False: 5]
  |  |  ------------------
  ------------------
 2051|    116|		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_ABSTRACT)) {
  ------------------
  |  |  457|    116|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 115]
  |  |  ------------------
  ------------------
 2052|      1|			zend_abstract_method_call(fbc);
 2053|      1|			goto fail;
 2054|    115|		} else if (UNEXPECTED(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  457|    115|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 115]
  |  |  ------------------
  ------------------
 2055|      0|			zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2056|      0|				"Calling static trait method %s::%s is deprecated, "
 2057|      0|				"it should only be called on a class using the trait",
 2058|      0|				ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2059|      0|			if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2060|      0|				goto fail;
 2061|      0|			}
 2062|      0|		}
 2063|    116|	}
 2064|       |
 2065|    120|	return fbc;
 2066|       |
 2067|      1| fail:
 2068|      1|	if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2069|      1|		zend_string_release_ex(fbc->common.function_name, 0);
 2070|      1|		zend_free_trampoline(fbc);
  ------------------
  |  |  344|      1|#define zend_free_trampoline(func) do { \
  |  |  345|      1|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 1, False: 0]
  |  |  ------------------
  |  |  346|      1|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      1|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      1|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2071|      1|	}
 2072|       |
 2073|       |	return NULL;
 2074|    121|}
zend_class_init_statics:
 2078|     50|{
 2079|     50|	zval *p;
 2080|       |
 2081|     50|	if (class_type->default_static_members_count && !CE_STATIC_MEMBERS(class_type)) {
  ------------------
  |  |  331|     50|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|     50|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|     50|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 50]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|     50|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|     50|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2081:6): [True: 50, False: 0]
  |  Branch (2081:50): [True: 50, False: 0]
  ------------------
 2082|     50|		if (class_type->parent) {
  ------------------
  |  Branch (2082:7): [True: 0, False: 50]
  ------------------
 2083|      0|			zend_class_init_statics(class_type->parent);
 2084|      0|		}
 2085|       |
 2086|     50|		ZEND_MAP_PTR_SET(class_type->static_members_table, emalloc(sizeof(zval) * class_type->default_static_members_count));
  ------------------
  |  |   59|     50|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|     50|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|     50|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     50|		} else { \
  |  |   63|     50|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|     50|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|     50|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|     50|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|     50|		} \
  |  |   65|     50|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 50]
  |  |  ------------------
  ------------------
 2087|    101|		for (uint32_t i = 0; i < class_type->default_static_members_count; i++) {
  ------------------
  |  Branch (2087:24): [True: 51, False: 50]
  ------------------
 2088|     51|			p = &class_type->default_static_members_table[i];
 2089|     51|			if (Z_TYPE_P(p) == IS_INDIRECT) {
  ------------------
  |  |  669|     51|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     51|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(p) == IS_INDIRECT) {
  ------------------
  |  |  629|     51|#define IS_INDIRECT             	12
  ------------------
  |  Branch (2089:8): [True: 0, False: 51]
  ------------------
 2090|      0|				zval *q = &CE_STATIC_MEMBERS(class_type->parent)[i];
  ------------------
  |  |  331|      0|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2091|      0|				ZVAL_DEINDIRECT(q);
  ------------------
  |  | 1480|      0|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      0|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2092|      0|				ZVAL_INDIRECT(&CE_STATIC_MEMBERS(class_type)[i], q);
  ------------------
  |  | 1246|      0|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      0|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1043:29): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      0|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (677:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2093|     51|			} else {
 2094|     51|				ZVAL_COPY_OR_DUP(&CE_STATIC_MEMBERS(class_type)[i], p);
  ------------------
  |  | 1457|     51|	do {																\
  |  | 1458|    102|		zval *_z1 = (z);												\
  |  |  ------------------
  |  |  |  Branch (1458:16): [True: 0, False: 51]
  |  |  ------------------
  |  | 1459|     51|		const zval *_z2 = (v);											\
  |  | 1460|     51|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     51|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     51|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     51|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     51|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     51|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     51|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     51|	do {												\
  |  |  |  | 1408|     51|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     51|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     51|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     51|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     51|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     51|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     51|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 51]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     51|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     51|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     51|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      5|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      5|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 5, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      5|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      5|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      5|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      5|		}																\
  |  | 1472|     51|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 51]
  |  |  ------------------
  ------------------
 2095|     51|			}
 2096|     51|		}
 2097|     50|	}
 2098|     50|} /* }}} */
zend_std_get_static_property_with_info:
 2101|     71|{
 2102|     71|	zval *ret;
 2103|     71|	zend_property_info *property_info = zend_hash_find_ptr(&ce->properties_info, property_name);
 2104|     71|	*property_info_ptr = property_info;
 2105|       |
 2106|     71|	if (UNEXPECTED(property_info == NULL)) {
  ------------------
  |  |  457|     71|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 67]
  |  |  ------------------
  ------------------
 2107|      4|		goto undeclared_property;
 2108|      4|	}
 2109|       |
 2110|     67|	if (!(property_info->flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|     67|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (2110:6): [True: 0, False: 67]
  ------------------
 2111|      0|		const zend_class_entry *scope = get_fake_or_executed_scope();
 2112|      0|		if (property_info->ce != scope) {
  ------------------
  |  Branch (2112:7): [True: 0, False: 0]
  ------------------
 2113|      0|			if (UNEXPECTED(property_info->flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2114|      0|			 || UNEXPECTED(!is_protected_compatible_scope(property_info->prototype->ce, scope))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2115|      0|				if (type != BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (2115:9): [True: 0, False: 0]
  ------------------
 2116|      0|					zend_bad_property_access(property_info, ce, property_name);
 2117|      0|				}
 2118|      0|				return NULL;
 2119|      0|			}
 2120|      0|		}
 2121|      0|	}
 2122|       |
 2123|     67|	if (UNEXPECTED((property_info->flags & ZEND_ACC_STATIC) == 0)) {
  ------------------
  |  |  457|     67|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 67]
  |  |  ------------------
  ------------------
 2124|      4|undeclared_property:
 2125|      4|		if (type != BP_VAR_IS) {
  ------------------
  |  | 1077|      4|#define BP_VAR_IS			3
  ------------------
  |  Branch (2125:7): [True: 4, False: 0]
  ------------------
 2126|      4|			zend_throw_error(NULL, "Access to undeclared static property %s::$%s", ZSTR_VAL(ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_throw_error(NULL, "Access to undeclared static property %s::$%s", ZSTR_VAL(ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2127|      4|		}
 2128|      4|		return NULL;
 2129|      0|	}
 2130|       |
 2131|     67|	if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
  ------------------
  |  |  457|     67|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 65]
  |  |  ------------------
  ------------------
 2132|      2|		if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2133|      1|			return NULL;
 2134|      1|		}
 2135|      2|	}
 2136|       |
 2137|       |	/* Ensure static properties are initialized. */
 2138|     66|	if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
  ------------------
  |  |  457|    132|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 46, False: 20]
  |  |  |  Branch (457:52): [True: 0, False: 66]
  |  |  ------------------
  ------------------
 2139|     46|		zend_class_init_statics(ce);
 2140|     46|	}
 2141|       |
 2142|     66|	ret = CE_STATIC_MEMBERS(ce) + property_info->offset;
  ------------------
  |  |  331|     66|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|     66|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|     66|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|     66|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 66]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|     66|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|     66|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     66|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2143|     66|	ZVAL_DEINDIRECT(ret);
  ------------------
  |  | 1480|     66|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|     66|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|     66|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     66|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|     66|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 66]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|     66|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 66]
  |  |  ------------------
  ------------------
 2144|       |
 2145|     66|	if (UNEXPECTED((type == BP_VAR_R || type == BP_VAR_RW)
  ------------------
  |  |  457|    278|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 66]
  |  |  |  Branch (457:52): [True: 10, False: 56]
  |  |  |  Branch (457:52): [True: 14, False: 42]
  |  |  |  Branch (457:52): [True: 0, False: 24]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2146|     66|				&& Z_TYPE_P(ret) == IS_UNDEF && ZEND_TYPE_IS_SET(property_info->type))) {
 2147|      0|		zend_throw_error(NULL, "Typed static property %s::$%s must not be accessed before initialization",
 2148|      0|			ZSTR_VAL(property_info->ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(property_info->ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2149|      0|		return NULL;
 2150|      0|	}
 2151|       |
 2152|     66|	if (UNEXPECTED(ce->ce_flags & ZEND_ACC_TRAIT)) {
  ------------------
  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 66]
  |  |  ------------------
  ------------------
 2153|      0|		zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2154|      0|			"Accessing static trait property %s::$%s is deprecated, "
 2155|      0|			"it should only be accessed on a class using the trait",
 2156|      0|			ZSTR_VAL(property_info->ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(property_info->ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2157|      0|	}
 2158|       |
 2159|     66|	return ret;
 2160|     66|}
zend_std_get_constructor:
 2194|  4.01k|{
 2195|  4.01k|	zend_function *constructor = zobj->ce->constructor;
 2196|       |
 2197|  4.01k|	if (constructor) {
  ------------------
  |  Branch (2197:6): [True: 1.56k, False: 2.45k]
  ------------------
 2198|  1.56k|		if (UNEXPECTED(!(constructor->common.fn_flags & ZEND_ACC_PUBLIC))) {
  ------------------
  |  |  457|  1.56k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 1.55k]
  |  |  ------------------
  ------------------
 2199|      9|			const zend_class_entry *scope = get_fake_or_executed_scope();
 2200|      9|			ZEND_ASSERT(!(constructor->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2200:4): [True: 0, False: 9]
  |  Branch (2200:4): [True: 9, False: 0]
  ------------------
 2201|      9|			if (!zend_check_method_accessible(constructor, scope)) {
  ------------------
  |  Branch (2201:8): [True: 9, False: 0]
  ------------------
 2202|      9|				zend_bad_constructor_call(constructor, scope);
 2203|      9|				zend_object_store_ctor_failed(zobj);
 2204|      9|				constructor = NULL;
 2205|      9|			}
 2206|      9|		}
 2207|  1.56k|	}
 2208|       |
 2209|  4.01k|	return constructor;
 2210|  4.01k|}
zend_std_compare_objects:
 2214|     23|{
 2215|     23|	zend_object *zobj1, *zobj2;
 2216|       |
 2217|     23|	if (zend_objects_check_stack_limit()) {
  ------------------
  |  Branch (2217:6): [True: 0, False: 23]
  ------------------
 2218|      0|		zend_throw_error(NULL, "Maximum call stack size reached during object comparison");
 2219|      0|		return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
 2220|      0|	}
 2221|       |
 2222|     23|	if (Z_TYPE_P(o1) != Z_TYPE_P(o2)) {
  ------------------
  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(o1) != Z_TYPE_P(o2)) {
  ------------------
  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (2222:6): [True: 21, False: 2]
  ------------------
 2223|       |		/* Object and non-object */
 2224|     21|		zval *object;
 2225|     21|		zval *value;
 2226|     21|		zval casted;
 2227|     21|		bool object_lhs;
 2228|     21|		if (Z_TYPE_P(o1) == IS_OBJECT) {
  ------------------
  |  |  669|     21|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     21|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(o1) == IS_OBJECT) {
  ------------------
  |  |  614|     21|#define IS_OBJECT					8
  ------------------
  |  Branch (2228:7): [True: 12, False: 9]
  ------------------
 2229|     12|			object = o1;
 2230|     12|			value = o2;
 2231|     12|			object_lhs = true;
 2232|     12|		} else {
 2233|      9|			object = o2;
 2234|      9|			value = o1;
 2235|      9|			object_lhs = false;
 2236|      9|		}
 2237|     21|		ZEND_ASSERT(Z_TYPE_P(value) != IS_OBJECT);
  ------------------
  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2237:3): [True: 0, False: 21]
  |  Branch (2237:3): [True: 21, False: 0]
  ------------------
 2238|     21|		uint8_t target_type = Z_TYPE_P(value);
  ------------------
  |  |  669|     21|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     21|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2239|       |		/* Should be handled in zend_compare(). */
 2240|     21|		ZEND_ASSERT(target_type != IS_FALSE && target_type != IS_TRUE);
  ------------------
  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2240:3): [True: 0, False: 21]
  |  Branch (2240:3): [True: 0, False: 0]
  |  Branch (2240:3): [True: 21, False: 0]
  |  Branch (2240:3): [True: 21, False: 0]
  ------------------
 2241|     21|		if (Z_OBJ_HT_P(object)->cast_object(Z_OBJ_P(object), &casted, target_type) == FAILURE) {
  ------------------
  |  | 1003|     21|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|     21|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     21|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_OBJ_HT_P(object)->cast_object(Z_OBJ_P(object), &casted, target_type) == FAILURE) {
  ------------------
  |  | 1000|     21|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     21|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (2241:7): [True: 21, False: 0]
  ------------------
 2242|       |			// TODO: Less crazy.
 2243|     21|			if (target_type == IS_LONG || target_type == IS_DOUBLE) {
  ------------------
  |  |  610|     42|#define IS_LONG						4
  ------------------
              			if (target_type == IS_LONG || target_type == IS_DOUBLE) {
  ------------------
  |  |  611|     17|#define IS_DOUBLE					5
  ------------------
  |  Branch (2243:8): [True: 4, False: 17]
  |  Branch (2243:34): [True: 0, False: 17]
  ------------------
 2244|      4|				zend_error(E_NOTICE, "Object of class %s could not be converted to %s",
  ------------------
  |  |   25|      4|#define E_NOTICE			(1<<3L)
  ------------------
 2245|      4|						   ZSTR_VAL(Z_OBJCE_P(object)->name), zend_get_type_by_const(target_type));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2246|      4|				if (target_type == IS_LONG) {
  ------------------
  |  |  610|      4|#define IS_LONG						4
  ------------------
  |  Branch (2246:9): [True: 4, False: 0]
  ------------------
 2247|      4|					ZVAL_LONG(&casted, 1);
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 2248|      4|				} else {
 2249|      0|					ZVAL_DOUBLE(&casted, 1.0);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2250|      0|				}
 2251|     17|			} else {
 2252|     17|				return object_lhs ? 1 : -1;
  ------------------
  |  Branch (2252:12): [True: 12, False: 5]
  ------------------
 2253|     17|			}
 2254|     21|		}
 2255|      4|		int ret = object_lhs ? zend_compare(&casted, value) : zend_compare(value, &casted);
  ------------------
  |  Branch (2255:13): [True: 0, False: 4]
  ------------------
 2256|      4|		zval_ptr_dtor(&casted);
 2257|      4|		return ret;
 2258|     21|	}
 2259|       |
 2260|      2|	zobj1 = Z_OBJ_P(o1);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2261|      2|	zobj2 = Z_OBJ_P(o2);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2262|       |
 2263|      2|	if (zobj1 == zobj2) {
  ------------------
  |  Branch (2263:6): [True: 0, False: 2]
  ------------------
 2264|      0|		return 0; /* the same object */
 2265|      0|	}
 2266|      2|	if (zobj1->ce != zobj2->ce) {
  ------------------
  |  Branch (2266:6): [True: 0, False: 2]
  ------------------
 2267|      0|		return ZEND_UNCOMPARABLE; /* different classes */
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
 2268|      0|	}
 2269|      2|	if (!zobj1->properties && !zobj2->properties
  ------------------
  |  Branch (2269:6): [True: 2, False: 0]
  |  Branch (2269:28): [True: 2, False: 0]
  ------------------
 2270|      2|			&& !zend_object_is_lazy(zobj1) && !zend_object_is_lazy(zobj2)) {
  ------------------
  |  Branch (2270:7): [True: 2, False: 0]
  |  Branch (2270:38): [True: 2, False: 0]
  ------------------
 2271|      2|		zend_property_info *info;
 2272|      2|		int i;
 2273|       |
 2274|      2|		if (!zobj1->ce->default_properties_count) {
  ------------------
  |  Branch (2274:7): [True: 2, False: 0]
  ------------------
 2275|      2|			return 0;
 2276|      2|		}
 2277|       |
 2278|       |		/* It's enough to protect only one of the objects.
 2279|       |		 * The second one may be referenced from the first and this may cause
 2280|       |		 * false recursion detection.
 2281|       |		 */
 2282|       |		/* use bitwise OR to make only one conditional jump */
 2283|      0|		if (UNEXPECTED(Z_IS_RECURSIVE_P(o1))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2284|      0|			zend_throw_error(NULL, "Nesting level too deep - recursive dependency?");
 2285|      0|			return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      0|#define ZEND_UNCOMPARABLE 1
  ------------------
 2286|      0|		}
 2287|      0|		Z_PROTECT_RECURSION_P(o1);
  ------------------
  |  |  909|      0|#define Z_PROTECT_RECURSION_P(zv)   Z_PROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  906|      0|#define Z_PROTECT_RECURSION(zval)   GC_PROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  889|      0|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  890|      0|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  782|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  891|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (891:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2288|       |
 2289|      0|		GC_ADDREF(zobj1);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2290|      0|		GC_ADDREF(zobj2);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2291|      0|		int ret;
 2292|       |
 2293|      0|		for (i = 0; i < zobj1->ce->default_properties_count; i++) {
  ------------------
  |  Branch (2293:15): [True: 0, False: 0]
  ------------------
 2294|      0|			zval *p1, *p2;
 2295|       |
 2296|      0|			info = zobj1->ce->properties_info_table[i];
 2297|       |
 2298|      0|			if (!info) {
  ------------------
  |  Branch (2298:8): [True: 0, False: 0]
  ------------------
 2299|      0|				continue;
 2300|      0|			}
 2301|       |
 2302|      0|			p1 = OBJ_PROP(zobj1, info->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 2303|      0|			p2 = OBJ_PROP(zobj2, info->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 2304|       |
 2305|      0|			if (Z_TYPE_P(p1) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(p1) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (2305:8): [True: 0, False: 0]
  ------------------
 2306|      0|				if (Z_TYPE_P(p2) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(p2) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (2306:9): [True: 0, False: 0]
  ------------------
 2307|      0|					ret = zend_compare(p1, p2);
 2308|      0|					if (ret != 0) {
  ------------------
  |  Branch (2308:10): [True: 0, False: 0]
  ------------------
 2309|      0|						Z_UNPROTECT_RECURSION_P(o1);
  ------------------
  |  |  910|      0|#define Z_UNPROTECT_RECURSION_P(zv) Z_UNPROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  907|      0|#define Z_UNPROTECT_RECURSION(zval) GC_UNPROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2310|      0|						goto done;
 2311|      0|					}
 2312|      0|				} else {
 2313|      0|					Z_UNPROTECT_RECURSION_P(o1);
  ------------------
  |  |  910|      0|#define Z_UNPROTECT_RECURSION_P(zv) Z_UNPROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  907|      0|#define Z_UNPROTECT_RECURSION(zval) GC_UNPROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2314|      0|					ret = 1;
 2315|      0|					goto done;
 2316|      0|				}
 2317|      0|			} else {
 2318|      0|				if (Z_TYPE_P(p2) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(p2) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (2318:9): [True: 0, False: 0]
  ------------------
 2319|      0|					Z_UNPROTECT_RECURSION_P(o1);
  ------------------
  |  |  910|      0|#define Z_UNPROTECT_RECURSION_P(zv) Z_UNPROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  907|      0|#define Z_UNPROTECT_RECURSION(zval) GC_UNPROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2320|      0|					ret = 1;
 2321|      0|					goto done;
 2322|      0|				}
 2323|      0|			}
 2324|      0|		}
 2325|       |
 2326|      0|		Z_UNPROTECT_RECURSION_P(o1);
  ------------------
  |  |  910|      0|#define Z_UNPROTECT_RECURSION_P(zv) Z_UNPROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  907|      0|#define Z_UNPROTECT_RECURSION(zval) GC_UNPROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2327|      0|		ret = 0;
 2328|       |
 2329|      0|done:
 2330|      0|		OBJ_RELEASE(zobj1);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2331|      0|		OBJ_RELEASE(zobj2);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2332|       |
 2333|      0|		return ret;
 2334|      0|	} else {
 2335|      0|		GC_ADDREF(zobj1);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2336|      0|		GC_ADDREF(zobj2);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2337|       |
 2338|      0|		int ret = zend_compare_symbol_tables(
 2339|      0|				zend_std_get_properties_ex(zobj1),
 2340|      0|				zend_std_get_properties_ex(zobj2));
 2341|       |
 2342|      0|		OBJ_RELEASE(zobj1);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2343|      0|		OBJ_RELEASE(zobj2);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2344|       |
 2345|      0|		return ret;
 2346|      0|	}
 2347|      2|}
zend_objects_not_comparable:
 2351|      4|{
 2352|      4|	return ZEND_UNCOMPARABLE;
  ------------------
  |  |  454|      4|#define ZEND_UNCOMPARABLE 1
  ------------------
 2353|      4|}
zend_std_has_property:
 2357|      5|{
 2358|      5|	bool result;
 2359|      5|	zval *value = NULL;
 2360|      5|	uintptr_t property_offset;
 2361|      5|	const zend_property_info *prop_info = NULL;
 2362|       |
 2363|      5|	property_offset = zend_get_property_offset(zobj->ce, name, 1, cache_slot, &prop_info);
 2364|       |
 2365|      5|	if (EXPECTED(IS_VALID_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 2366|      1|try_again:
 2367|      1|		value = OBJ_PROP(zobj, property_offset);
  ------------------
  |  |  480|      1|	((zval*)((char*)(obj) + offset))
  ------------------
 2368|      1|		if (Z_TYPE_P(value) != IS_UNDEF) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (2368:7): [True: 1, False: 0]
  ------------------
 2369|      1|			goto found;
 2370|      1|		}
 2371|      0|		if (UNEXPECTED(Z_PROP_FLAG_P(value) & IS_PROP_UNINIT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2372|       |			/* Skip __isset() for uninitialized typed properties */
 2373|      0|			goto lazy_init;
 2374|      0|		}
 2375|      4|	} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(property_offset))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 2376|      3|		if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 2377|      0|			if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (2377:8): [True: 0, False: 0]
  ------------------
 2378|      0|				uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(property_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
 2379|       |
 2380|      0|				if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2381|      0|					Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 2382|       |
 2383|      0|					if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2384|      0|				        (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2385|      0|				         EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2386|      0|				         EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2387|      0|						value = &p->val;
 2388|      0|						goto found;
 2389|      0|					}
 2390|      0|				}
 2391|      0|				CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2392|      0|			}
 2393|      0|			value = zend_hash_find(zobj->properties, name);
 2394|      0|			if (value) {
  ------------------
  |  Branch (2394:8): [True: 0, False: 0]
  ------------------
 2395|      0|				if (cache_slot) {
  ------------------
  |  Branch (2395:9): [True: 0, False: 0]
  ------------------
 2396|      0|					uintptr_t idx = (char*)value - (char*)zobj->properties->arData;
 2397|      0|					CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2398|      0|				}
 2399|      1|found:
 2400|      1|				if (has_set_exists == ZEND_PROPERTY_NOT_EMPTY) {
  ------------------
  |  |  246|      1|#define ZEND_PROPERTY_NOT_EMPTY ZEND_ISEMPTY /* Property is not empty */
  |  |  ------------------
  |  |  |  | 1108|      1|#define ZEND_ISEMPTY			(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (2400:9): [True: 0, False: 1]
  ------------------
 2401|      0|					result = zend_is_true(value);
 2402|      1|				} else if (has_set_exists < ZEND_PROPERTY_NOT_EMPTY) {
  ------------------
  |  |  246|      1|#define ZEND_PROPERTY_NOT_EMPTY ZEND_ISEMPTY /* Property is not empty */
  |  |  ------------------
  |  |  |  | 1108|      1|#define ZEND_ISEMPTY			(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (2402:16): [True: 0, False: 1]
  ------------------
 2403|      0|					ZEND_ASSERT(has_set_exists == ZEND_PROPERTY_ISSET);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2403:6): [True: 0, False: 0]
  |  Branch (2403:6): [True: 0, False: 0]
  ------------------
 2404|      0|					ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2405|      0|					result = (Z_TYPE_P(value) != IS_NULL);
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					result = (Z_TYPE_P(value) != IS_NULL);
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 2406|      1|				} else {
 2407|      1|					ZEND_ASSERT(has_set_exists == ZEND_PROPERTY_EXISTS);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2407:6): [True: 0, False: 1]
  |  Branch (2407:6): [True: 1, False: 0]
  ------------------
 2408|      1|					result = true;
 2409|      1|				}
 2410|      1|				goto exit;
 2411|      1|			}
 2412|      0|		}
 2413|      3|	} else if (IS_HOOKED_PROPERTY_OFFSET(property_offset)) {
  ------------------
  |  |   43|      1|	((intptr_t)(offset) > 0 && (intptr_t)(offset) < 16)
  |  |  ------------------
  |  |  |  Branch (43:3): [True: 0, False: 1]
  |  |  |  Branch (43:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2414|      0|		zend_function *get = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
 2415|       |
 2416|      0|		if (has_set_exists == ZEND_PROPERTY_EXISTS) {
  ------------------
  |  |  247|      0|#define ZEND_PROPERTY_EXISTS    0x2          /* Property exists */
  ------------------
  |  Branch (2416:7): [True: 0, False: 0]
  ------------------
 2417|      0|			if (prop_info->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (2417:8): [True: 0, False: 0]
  ------------------
 2418|      0|				return true;
 2419|      0|			}
 2420|      0|			property_offset = prop_info->offset;
 2421|      0|			goto try_again;
 2422|      0|		}
 2423|       |
 2424|      0|		if (!get) {
  ------------------
  |  Branch (2424:7): [True: 0, False: 0]
  ------------------
 2425|      0|			if (prop_info->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (2425:8): [True: 0, False: 0]
  ------------------
 2426|      0|				zend_throw_error(NULL, "Cannot read from set-only virtual property %s::$%s",
 2427|      0|					ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2428|      0|				return 0;
 2429|      0|			} else {
 2430|      0|				property_offset = prop_info->offset;
 2431|      0|				goto try_again;
 2432|      0|			}
 2433|      0|		}
 2434|       |
 2435|      0|		zval rv;
 2436|      0|		if (!zend_call_get_hook(prop_info, name, get, zobj, &rv)) {
  ------------------
  |  Branch (2436:7): [True: 0, False: 0]
  ------------------
 2437|      0|			if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2438|      0|				return 0;
 2439|      0|			}
 2440|      0|			property_offset = prop_info->offset;
 2441|      0|			goto try_again;
 2442|      0|		}
 2443|       |
 2444|      0|		if (has_set_exists == ZEND_PROPERTY_NOT_EMPTY) {
  ------------------
  |  |  246|      0|#define ZEND_PROPERTY_NOT_EMPTY ZEND_ISEMPTY /* Property is not empty */
  |  |  ------------------
  |  |  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (2444:7): [True: 0, False: 0]
  ------------------
 2445|      0|			result = zend_is_true(&rv);
 2446|      0|		} else {
 2447|      0|			ZEND_ASSERT(has_set_exists == ZEND_PROPERTY_ISSET);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2447:4): [True: 0, False: 0]
  |  Branch (2447:4): [True: 0, False: 0]
  ------------------
 2448|      0|			result = Z_TYPE(rv) != IS_NULL
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			result = Z_TYPE(rv) != IS_NULL
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2448:13): [True: 0, False: 0]
  ------------------
 2449|      0|				&& (Z_TYPE(rv) != IS_REFERENCE || Z_TYPE_P(Z_REFVAL(rv)) != IS_NULL);
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				&& (Z_TYPE(rv) != IS_REFERENCE || Z_TYPE_P(Z_REFVAL(rv)) != IS_NULL);
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
              				&& (Z_TYPE(rv) != IS_REFERENCE || Z_TYPE_P(Z_REFVAL(rv)) != IS_NULL);
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				&& (Z_TYPE(rv) != IS_REFERENCE || Z_TYPE_P(Z_REFVAL(rv)) != IS_NULL);
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2449:9): [True: 0, False: 0]
  |  Branch (2449:39): [True: 0, False: 0]
  ------------------
 2450|      0|		}
 2451|      0|		zval_ptr_dtor(&rv);
 2452|      0|		return result;
 2453|      1|	} else if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2454|      0|		result = false;
 2455|      0|		goto exit;
 2456|      0|	}
 2457|       |
 2458|       |	/* For initialized lazy proxies: if the real instance's __isset guard
 2459|       |	 * is already set, we are inside a recursive call from the real
 2460|       |	 * instance's __isset. Forward directly to avoid double invocation. */
 2461|      4|	if (UNEXPECTED(zend_object_is_lazy_proxy(zobj)
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2462|      4|			&& zend_lazy_object_initialized(zobj))) {
 2463|      0|		zend_object *instance = zend_lazy_object_get_instance(zobj);
 2464|      0|		if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) {
  ------------------
  |  |  295|      0|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (2464:7): [True: 0, False: 0]
  ------------------
 2465|      0|			uint32_t *instance_guard = zend_get_property_guard(instance, name);
 2466|      0|			if ((*instance_guard) & IN_ISSET) {
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
  |  Branch (2466:8): [True: 0, False: 0]
  ------------------
 2467|      0|				return zend_std_has_property(instance, name, has_set_exists, cache_slot);
 2468|      0|			}
 2469|      0|		}
 2470|      0|	}
 2471|       |
 2472|      4|	if (!zobj->ce->__isset) {
  ------------------
  |  Branch (2472:6): [True: 4, False: 0]
  ------------------
 2473|      4|		goto lazy_init;
 2474|      4|	}
 2475|       |
 2476|      0|	result = false;
 2477|      0|	if (has_set_exists != ZEND_PROPERTY_EXISTS) {
  ------------------
  |  |  247|      0|#define ZEND_PROPERTY_EXISTS    0x2          /* Property exists */
  ------------------
  |  Branch (2477:6): [True: 0, False: 0]
  ------------------
 2478|      0|		uint32_t *guard = zend_get_property_guard(zobj, name);
 2479|       |
 2480|      0|		if (!((*guard) & IN_ISSET)) {
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
  |  Branch (2480:7): [True: 0, False: 0]
  ------------------
 2481|      0|			zval rv;
 2482|       |
 2483|       |			/* have issetter - try with it! */
 2484|      0|			GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2485|      0|			(*guard) |= IN_ISSET; /* prevent circular getting */
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
 2486|      0|			zend_std_call_issetter(zobj, name, &rv);
 2487|      0|			result = zend_is_true(&rv);
 2488|      0|			zval_ptr_dtor(&rv);
 2489|      0|			if (has_set_exists == ZEND_PROPERTY_NOT_EMPTY && result) {
  ------------------
  |  |  246|      0|#define ZEND_PROPERTY_NOT_EMPTY ZEND_ISEMPTY /* Property is not empty */
  |  |  ------------------
  |  |  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (2489:8): [True: 0, False: 0]
  |  Branch (2489:53): [True: 0, False: 0]
  ------------------
 2490|      0|				if (EXPECTED(!EG(exception)) && zobj->ce->__get && !((*guard) & IN_GET)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              				if (EXPECTED(!EG(exception)) && zobj->ce->__get && !((*guard) & IN_GET)) {
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (2490:37): [True: 0, False: 0]
  |  Branch (2490:56): [True: 0, False: 0]
  ------------------
 2491|      0|					(*guard) |= IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
 2492|      0|					zend_std_call_getter(zobj, name, &rv);
 2493|      0|					(*guard) &= ~IN_GET;
  ------------------
  |  |   42|      0|#define IN_GET		ZEND_GUARD_PROPERTY_GET
  |  |  ------------------
  |  |  |  |  642|      0|#define ZEND_GUARD_PROPERTY_GET		(1<<0)
  |  |  ------------------
  ------------------
 2494|      0|					result = i_zend_is_true(&rv);
 2495|      0|					zval_ptr_dtor(&rv);
 2496|      0|				} else {
 2497|      0|					result = false;
 2498|      0|				}
 2499|      0|			}
 2500|      0|			(*guard) &= ~IN_ISSET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
 2501|      0|			OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2502|      0|		} else {
 2503|      0|			goto lazy_init;
 2504|      0|		}
 2505|      0|	}
 2506|       |
 2507|      5|exit:
 2508|      5|	return result;
 2509|       |
 2510|      4|lazy_init:
 2511|      4|	if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 2512|      0|		if (!value || (Z_PROP_FLAG_P(value) & IS_PROP_LAZY)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (!value || (Z_PROP_FLAG_P(value) & IS_PROP_LAZY)) {
  ------------------
  |  | 1579|      0|#define IS_PROP_LAZY (1<<2)
  ------------------
  |  Branch (2512:7): [True: 0, False: 0]
  |  Branch (2512:17): [True: 0, False: 0]
  ------------------
 2513|      0|			zobj = zend_lazy_object_init(zobj);
 2514|      0|			if (!zobj) {
  ------------------
  |  Branch (2514:8): [True: 0, False: 0]
  ------------------
 2515|      0|				result = false;
 2516|      0|				goto exit;
 2517|      0|			}
 2518|       |
 2519|      0|			if (UNEXPECTED(zobj->ce->__isset)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2520|      0|				uint32_t *guard = zend_get_property_guard(zobj, name);
 2521|      0|				if (!((*guard) & IN_ISSET)) {
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
  |  Branch (2521:9): [True: 0, False: 0]
  ------------------
 2522|      0|					(*guard) |= IN_ISSET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
 2523|      0|					result = zend_std_has_property(zobj, name, has_set_exists, cache_slot);
 2524|      0|					(*guard) &= ~IN_ISSET;
  ------------------
  |  |   45|      0|#define IN_ISSET	ZEND_GUARD_PROPERTY_ISSET
  |  |  ------------------
  |  |  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  |  |  ------------------
  ------------------
 2525|      0|					return result;
 2526|      0|				}
 2527|      0|			}
 2528|       |
 2529|      0|			return zend_std_has_property(zobj, name, has_set_exists, cache_slot);
 2530|      0|		}
 2531|      0|	}
 2532|       |
 2533|      4|	result = false;
 2534|      4|	goto exit;
 2535|      4|}
zend_std_get_class_name:
 2539|    313|{
 2540|    313|	return zend_string_copy(zobj->ce->name);
 2541|    313|}
zend_std_cast_object_tostring:
 2545|  2.62k|{
 2546|  2.62k|	switch (type) {
 2547|  2.60k|		case IS_STRING: {
  ------------------
  |  |  612|  2.60k|#define IS_STRING					6
  ------------------
  |  Branch (2547:3): [True: 2.60k, False: 19]
  ------------------
 2548|  2.60k|			const zend_class_entry *ce = readobj->ce;
 2549|  2.60k|			if (ce->__tostring) {
  ------------------
  |  Branch (2549:8): [True: 2.05k, False: 553]
  ------------------
 2550|  2.05k|				zval retval;
 2551|  2.05k|				GC_ADDREF(readobj);
  ------------------
  |  |  718|  2.05k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2552|  2.05k|				zend_call_known_instance_method_with_0_params(ce->__tostring, readobj, &retval);
 2553|  2.05k|				zend_object_release(readobj);
 2554|  2.05k|				if (EXPECTED(Z_TYPE(retval) == IS_STRING)) {
  ------------------
  |  |  456|  2.05k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 62, False: 1.99k]
  |  |  ------------------
  ------------------
 2555|     63|is_string:
 2556|     63|					ZVAL_COPY_VALUE(writeobj, &retval);
  ------------------
  |  | 1416|     63|	do {												\
  |  | 1417|     63|		zval *_z1 = (z);								\
  |  | 1418|     63|		const zval *_z2 = (v);							\
  |  | 1419|     63|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     63|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     63|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     63|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     63|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     63|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     63|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     63|	do {												\
  |  |  |  | 1408|     63|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     63|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     63|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     63|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     63|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     63|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     63|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 63]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     63|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 63]
  |  |  ------------------
  ------------------
 2557|     63|					return SUCCESS;
 2558|  1.99k|				} else if (Z_ISREF(retval)) {
  ------------------
  |  |  963|  1.99k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  668|  1.99k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  616|  1.99k|#define IS_REFERENCE				10
  |  |  ------------------
  |  |  |  Branch (963:26): [True: 1, False: 1.99k]
  |  |  ------------------
  ------------------
 2559|      1|					zend_unwrap_reference(&retval);
 2560|      1|					goto is_string;
 2561|      1|				}
 2562|  1.99k|				zval_ptr_dtor(&retval);
 2563|  1.99k|				if (!EG(exception)) {
  ------------------
  |  |   45|  1.99k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2563:9): [True: 0, False: 1.99k]
  ------------------
 2564|      0|					zend_throw_error(NULL, "Method %s::__toString() must return a string value", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2565|      0|				}
 2566|  1.99k|			}
 2567|  2.54k|			return FAILURE;
 2568|  2.60k|		}
 2569|      1|		case _IS_BOOL:
  ------------------
  |  |  635|      1|#define _IS_BOOL					18
  ------------------
  |  Branch (2569:3): [True: 1, False: 2.62k]
  ------------------
 2570|      1|			ZVAL_TRUE(writeobj);
  ------------------
  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2571|      1|			return SUCCESS;
 2572|     18|		default:
  ------------------
  |  Branch (2572:3): [True: 18, False: 2.60k]
  ------------------
 2573|     18|			return FAILURE;
 2574|  2.62k|	}
 2575|  2.62k|}
zend_std_get_closure:
 2579|      4|{
 2580|      4|	zend_class_entry *ce = obj->ce;
 2581|      4|	const zval *func = zend_hash_find_known_hash(&ce->function_table, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE));
 2582|       |
 2583|      4|	if (func == NULL) {
  ------------------
  |  Branch (2583:6): [True: 1, False: 3]
  ------------------
 2584|      1|		return FAILURE;
 2585|      1|	}
 2586|      3|	*fptr_ptr = Z_FUNC_P(func);
  ------------------
  |  | 1050|      3|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|      3|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 2587|      3|	*ce_ptr = ce;
 2588|      3|	*obj_ptr = obj;
 2589|       |
 2590|      3|	return SUCCESS;
 2591|      4|}
zend_std_get_properties_for:
 2594|    309|ZEND_API HashTable *zend_std_get_properties_for(zend_object *obj, zend_prop_purpose purpose) {
 2595|    309|	HashTable *ht;
 2596|    309|	switch (purpose) {
 2597|    291|		case ZEND_PROP_PURPOSE_DEBUG:
  ------------------
  |  Branch (2597:3): [True: 291, False: 18]
  ------------------
 2598|    291|			if (obj->handlers->get_debug_info) {
  ------------------
  |  Branch (2598:8): [True: 291, False: 0]
  ------------------
 2599|    291|				int is_temp;
 2600|    291|				ht = obj->handlers->get_debug_info(obj, &is_temp);
 2601|    291|				if (ht && !is_temp) {
  ------------------
  |  Branch (2601:9): [True: 290, False: 1]
  |  Branch (2601:15): [True: 249, False: 41]
  ------------------
 2602|    249|					GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|    249|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 2603|    249|				}
 2604|    291|				return ht;
 2605|    291|			}
 2606|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2607|      2|		case ZEND_PROP_PURPOSE_JSON:
  ------------------
  |  Branch (2607:3): [True: 2, False: 307]
  ------------------
 2608|      3|		case ZEND_PROP_PURPOSE_GET_OBJECT_VARS:
  ------------------
  |  Branch (2608:3): [True: 1, False: 308]
  ------------------
 2609|      9|		case ZEND_PROP_PURPOSE_VAR_EXPORT:
  ------------------
  |  Branch (2609:3): [True: 6, False: 303]
  ------------------
 2610|      9|			if (obj->ce->num_hooked_props) {
  ------------------
  |  Branch (2610:8): [True: 2, False: 7]
  ------------------
 2611|      2|				return zend_hooked_object_build_properties(obj);
 2612|      2|			}
 2613|      7|			ht = obj->handlers->get_properties(obj);
 2614|      7|			if (ht) {
  ------------------
  |  Branch (2614:8): [True: 7, False: 0]
  ------------------
 2615|      7|				GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      7|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 2616|      7|			}
 2617|      7|			return ht;
 2618|      5|		case ZEND_PROP_PURPOSE_ARRAY_CAST:
  ------------------
  |  Branch (2618:3): [True: 5, False: 304]
  ------------------
 2619|      5|			ht = zend_get_properties_no_lazy_init(obj);
 2620|      5|			if (ht) {
  ------------------
  |  Branch (2620:8): [True: 5, False: 0]
  ------------------
 2621|      5|				GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      5|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 2622|      5|			}
 2623|      5|			return ht;
 2624|      4|		case ZEND_PROP_PURPOSE_SERIALIZE: {
  ------------------
  |  Branch (2624:3): [True: 4, False: 305]
  ------------------
 2625|      4|			if (zend_object_is_lazy(obj)
  ------------------
  |  Branch (2625:8): [True: 0, False: 4]
  ------------------
 2626|      0|					&& !zend_lazy_object_initialize_on_serialize(obj)) {
  ------------------
  |  Branch (2626:9): [True: 0, False: 0]
  ------------------
 2627|      0|				ht = zend_get_properties_no_lazy_init(obj);
 2628|      4|			} else {
 2629|      4|				ht = obj->handlers->get_properties(obj);
 2630|      4|			}
 2631|      4|			if (ht) {
  ------------------
  |  Branch (2631:8): [True: 4, False: 0]
  ------------------
 2632|      4|				GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      4|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 2633|      4|			}
 2634|      4|			return ht;
 2635|      9|		}
 2636|      0|		default:
  ------------------
  |  Branch (2636:3): [True: 0, False: 309]
  ------------------
 2637|      0|			ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2637:4): [Folded, False: 0]
  |  Branch (2637:4): [Folded, False: 0]
  ------------------
 2638|      0|			return NULL;
 2639|    309|	}
 2640|    309|}
zend_get_properties_for:
 2642|    321|ZEND_API HashTable *zend_get_properties_for(zval *obj, zend_prop_purpose purpose) {
 2643|    321|	zend_object *zobj = Z_OBJ_P(obj);
  ------------------
  |  | 1000|    321|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    321|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2644|       |
 2645|    321|	if (zobj->handlers->get_properties_for) {
  ------------------
  |  Branch (2645:6): [True: 12, False: 309]
  ------------------
 2646|     12|		return zobj->handlers->get_properties_for(zobj, purpose);
 2647|     12|	}
 2648|       |
 2649|    309|	return zend_std_get_properties_for(zobj, purpose);
 2650|    321|}
zend_object_handlers_startup:
 2683|      2|void zend_object_handlers_startup(void) {
 2684|      2|	zend_call_trampoline_arginfo[0].name = ZSTR_KNOWN(ZEND_STR_ARGUMENTS);
 2685|       |	zend_call_trampoline_arginfo[0].type = (zend_type)ZEND_TYPE_INIT_CODE(IS_MIXED, false, _ZEND_ARG_INFO_FLAGS(false, 1, 0));
  ------------------
  |  |  293|      2|	ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
  |  |  ------------------
  |  |  |  |  290|     24|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (290:29): [True: 2, Folded]
  |  |  |  |  |  Branch (290:29): [Folded, False: 2]
  |  |  |  |  |  Branch (290:29): [Folded, False: 2]
  |  |  |  |  |  Branch (290:29): [Folded, False: 2]
  |  |  |  |  |  Branch (290:29): [True: 2, Folded]
  |  |  |  |  |  Branch (290:29): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|      2|		| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
  ------------------
 2686|      2|	zend_property_hook_arginfo[0].name = ZSTR_KNOWN(ZEND_STR_VALUE);
 2687|      2|}
zend_object_handlers.c:zend_bad_property_name:
  321|      5|{
  322|       |	zend_throw_error(NULL, "Cannot access property starting with \"\\0\"");
  323|      5|}
zend_object_handlers.c:get_fake_or_executed_scope:
  357|   249k|{
  358|   249k|	if (UNEXPECTED(EG(fake_scope))) {
  ------------------
  |  |  457|   249k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 249k, False: 42]
  |  |  ------------------
  ------------------
  359|   249k|		return EG(fake_scope);
  ------------------
  |  |   45|   249k|# define EG(v) (executor_globals.v)
  ------------------
  360|   249k|	} else {
  361|     42|		return zend_get_executed_scope();
  362|     42|	}
  363|   249k|}
zend_object_handlers.c:zend_get_parent_private_property:
  296|      3|{
  297|      3|	zval *zv;
  298|      3|	zend_property_info *prop_info;
  299|       |
  300|      3|	if (scope != ce && scope && is_derived_class(ce, scope)) {
  ------------------
  |  Branch (300:6): [True: 3, False: 0]
  |  Branch (300:21): [True: 3, False: 0]
  |  Branch (300:30): [True: 3, False: 0]
  ------------------
  301|      3|		zv = zend_hash_find(&scope->properties_info, member);
  302|      3|		if (zv != NULL) {
  ------------------
  |  Branch (302:7): [True: 3, False: 0]
  ------------------
  303|      3|			prop_info = (zend_property_info*)Z_PTR_P(zv);
  ------------------
  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  304|      3|			if ((prop_info->flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  221|      3|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (304:8): [True: 3, False: 0]
  ------------------
  305|      3|			 && prop_info->ce == scope) {
  ------------------
  |  Branch (305:8): [True: 3, False: 0]
  ------------------
  306|      3|				return prop_info;
  307|      3|			}
  308|      3|		}
  309|      3|	}
  310|      0|	return NULL;
  311|      3|}
zend_object_handlers.c:is_derived_class:
  275|  33.1k|{
  276|  33.1k|	child_class = child_class->parent;
  277|  49.2k|	while (child_class) {
  ------------------
  |  Branch (277:9): [True: 32.7k, False: 16.5k]
  ------------------
  278|  32.7k|		if (child_class == parent_class) {
  ------------------
  |  Branch (278:7): [True: 16.5k, False: 16.1k]
  ------------------
  279|  16.5k|			return 1;
  280|  16.5k|		}
  281|  16.1k|		child_class = child_class->parent;
  282|  16.1k|	}
  283|       |
  284|  16.5k|	return 0;
  285|  33.1k|}
zend_object_handlers.c:zend_bad_property_access:
  315|      2|{
  316|      2|	zend_throw_error(NULL, "Cannot access %s property %s::$%s", zend_visibility_string(property_info->flags), ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	zend_throw_error(NULL, "Cannot access %s property %s::$%s", zend_visibility_string(property_info->flags), ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  317|      2|}
zend_object_handlers.c:is_protected_compatible_scope:
  289|  16.5k|{
  290|  16.5k|	return scope &&
  ------------------
  |  Branch (290:9): [True: 16.5k, False: 3]
  ------------------
  291|  16.5k|		(ce == scope || is_derived_class(ce, scope) || is_derived_class(scope, ce));
  ------------------
  |  Branch (291:4): [True: 0, False: 16.5k]
  |  Branch (291:19): [True: 2, False: 16.5k]
  |  Branch (291:50): [True: 16.5k, False: 0]
  ------------------
  292|  16.5k|}
zend_object_handlers.c:zend_get_guard_value:
  611|     62|{
  612|     62|	return zobj->properties_table + zobj->ce->default_properties_count;
  613|     62|}
zend_object_handlers.c:zend_property_guard_dtor:
  602|      4|static void zend_property_guard_dtor(zval *el) /* {{{ */ {
  603|      4|	uint32_t *ptr = (uint32_t*)Z_PTR_P(el);
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  604|      4|	if (EXPECTED(!(((uintptr_t)ptr) & 1))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  605|       |		efree_size(ptr, sizeof(uint32_t));
  ------------------
  |  |  138|      2|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|      2|	}
  607|      4|}
zend_object_handlers.c:zend_get_property_offset:
  366|   197k|{
  367|   197k|	zval *zv;
  368|   197k|	zend_property_info *property_info;
  369|   197k|	uint32_t flags;
  370|   197k|	uintptr_t offset;
  371|       |
  372|   197k|	if (cache_slot && EXPECTED(ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|    441|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 429]
  |  |  ------------------
  ------------------
  |  Branch (372:6): [True: 441, False: 197k]
  ------------------
  373|     12|		*info_ptr = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|     12|	(slot)[0]
  ------------------
  374|     12|		return (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|     12|	(slot)[0]
  ------------------
  375|     12|	}
  376|       |
  377|   197k|	if (UNEXPECTED(zend_hash_num_elements(&ce->properties_info) == 0)
  ------------------
  |  |  457|   395k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5.25k, False: 192k]
  |  |  ------------------
  ------------------
  378|   192k|	 || UNEXPECTED((zv = zend_hash_find(&ce->properties_info, member)) == NULL)) {
  ------------------
  |  |  457|   192k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 24, False: 192k]
  |  |  ------------------
  ------------------
  379|  5.28k|		if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0') && ZSTR_LEN(member) != 0) {
  ------------------
  |  |  457|  10.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 29, False: 5.25k]
  |  |  ------------------
  ------------------
              		if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0') && ZSTR_LEN(member) != 0) {
  ------------------
  |  |   68|     29|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (379:50): [True: 14, False: 15]
  ------------------
  380|     14|			if (!silent) {
  ------------------
  |  Branch (380:8): [True: 5, False: 9]
  ------------------
  381|      5|				zend_bad_property_name();
  382|      5|			}
  383|     14|			return ZEND_WRONG_PROPERTY_OFFSET;
  ------------------
  |  |   38|     14|#define ZEND_WRONG_PROPERTY_OFFSET   0
  ------------------
  384|     14|		}
  385|  5.26k|dynamic:
  386|  5.26k|		if (cache_slot) {
  ------------------
  |  Branch (386:7): [True: 250, False: 5.01k]
  ------------------
  387|    250|			CACHE_POLYMORPHIC_PTR_EX(cache_slot, ce, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  554|    250|#define CACHE_POLYMORPHIC_PTR_EX(slot, ce, ptr) do { \
  |  |  555|    250|		(slot)[0] = (ce); \
  |  |  556|    250|		(slot)[1] = (ptr); \
  |  |  557|    250|	} while (0)
  |  |  ------------------
  |  |  |  Branch (557:11): [Folded, False: 250]
  |  |  ------------------
  ------------------
  388|    250|			CACHE_PTR_EX(cache_slot + 2, NULL);
  ------------------
  |  |  547|    250|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|    250|		(slot)[0] = (ptr); \
  |  |  549|    250|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 250]
  |  |  ------------------
  ------------------
  389|    250|		}
  390|  5.26k|		return ZEND_DYNAMIC_PROPERTY_OFFSET;
  ------------------
  |  |   34|  5.26k|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  ------------------
  391|  5.28k|	}
  392|       |
  393|   192k|	property_info = (zend_property_info*)Z_PTR_P(zv);
  ------------------
  |  | 1053|   192k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|   192k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  394|   192k|	flags = property_info->flags;
  395|       |
  396|   192k|	if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  224|   192k|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
              	if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  221|   192k|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  220|   192k|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (396:6): [True: 192k, False: 349]
  ------------------
  397|   192k|		const zend_class_entry *scope = get_fake_or_executed_scope();
  398|       |
  399|   192k|		if (property_info->ce != scope) {
  ------------------
  |  Branch (399:7): [True: 16.5k, False: 175k]
  ------------------
  400|  16.5k|			if (flags & ZEND_ACC_CHANGED) {
  ------------------
  |  |  224|  16.5k|#define ZEND_ACC_CHANGED                 (1 <<  3) /*     |  X  |  X  |     */
  ------------------
  |  Branch (400:8): [True: 3, False: 16.5k]
  ------------------
  401|      3|				zend_property_info *p = zend_get_parent_private_property(scope, ce, member);
  402|       |
  403|       |				/* If there is a public/protected instance property on ce, don't try to use a
  404|       |				 * private static property on scope. If both are static, prefer the static
  405|       |				 * property on scope. This will throw a static property notice, rather than
  406|       |				 * a visibility error. */
  407|      3|				if (p && (!(p->flags & ZEND_ACC_STATIC) || (flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  227|      3|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              				if (p && (!(p->flags & ZEND_ACC_STATIC) || (flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (407:9): [True: 3, False: 0]
  |  Branch (407:15): [True: 3, False: 0]
  |  Branch (407:48): [True: 0, False: 0]
  ------------------
  408|      3|					property_info = p;
  409|      3|					flags = property_info->flags;
  410|      3|					goto found;
  411|      3|				} else if (flags & ZEND_ACC_PUBLIC) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (411:16): [True: 0, False: 0]
  ------------------
  412|      0|					goto found;
  413|      0|				}
  414|      3|			}
  415|  16.5k|			if (flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|  16.5k|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (415:8): [True: 8, False: 16.5k]
  ------------------
  416|      8|				if (property_info->ce != ce) {
  ------------------
  |  Branch (416:9): [True: 1, False: 7]
  ------------------
  417|      1|					goto dynamic;
  418|      7|				} else {
  419|     10|wrong:
  420|       |					/* Information was available, but we were denied access.  Error out. */
  421|     10|					if (!silent) {
  ------------------
  |  Branch (421:10): [True: 2, False: 8]
  ------------------
  422|      2|						zend_bad_property_access(property_info, ce, member);
  423|      2|					}
  424|     10|					return ZEND_WRONG_PROPERTY_OFFSET;
  ------------------
  |  |   38|     10|#define ZEND_WRONG_PROPERTY_OFFSET   0
  ------------------
  425|      7|				}
  426|  16.5k|			} else {
  427|  16.5k|				ZEND_ASSERT(flags & ZEND_ACC_PROTECTED);
  ------------------
  |  |  112|  16.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (427:5): [True: 0, False: 16.5k]
  |  Branch (427:5): [True: 16.5k, False: 0]
  ------------------
  428|  16.5k|				if (UNEXPECTED(!is_protected_compatible_scope(property_info->prototype->ce, scope))) {
  ------------------
  |  |  457|  16.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 16.5k]
  |  |  ------------------
  ------------------
  429|      3|					goto wrong;
  430|      3|				}
  431|  16.5k|			}
  432|  16.5k|		}
  433|   192k|	}
  434|       |
  435|   192k|found:
  436|   192k|	if (UNEXPECTED(flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  457|   192k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 192k]
  |  |  ------------------
  ------------------
  437|      1|		if (!silent) {
  ------------------
  |  Branch (437:7): [True: 1, False: 0]
  ------------------
  438|      1|			zend_error(E_NOTICE, "Accessing static property %s::$%s as non static", ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
              			zend_error(E_NOTICE, "Accessing static property %s::$%s as non static", ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_error(E_NOTICE, "Accessing static property %s::$%s as non static", ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  439|      1|		}
  440|      1|		return ZEND_DYNAMIC_PROPERTY_OFFSET;
  ------------------
  |  |   34|      1|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  ------------------
  441|      1|	}
  442|       |
  443|   192k|	if (property_info->hooks) {
  ------------------
  |  Branch (443:6): [True: 48, False: 192k]
  ------------------
  444|     48|		*info_ptr = property_info;
  445|     48|		if (cache_slot) {
  ------------------
  |  Branch (445:7): [True: 37, False: 11]
  ------------------
  446|     37|			CACHE_POLYMORPHIC_PTR_EX(cache_slot, ce, (void*)ZEND_HOOKED_PROPERTY_OFFSET);
  ------------------
  |  |  554|     37|#define CACHE_POLYMORPHIC_PTR_EX(slot, ce, ptr) do { \
  |  |  555|     37|		(slot)[0] = (ce); \
  |  |  556|     37|		(slot)[1] = (ptr); \
  |  |  557|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (557:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
  447|     37|			CACHE_PTR_EX(cache_slot + 2, property_info);
  ------------------
  |  |  547|     37|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|     37|		(slot)[0] = (ptr); \
  |  |  549|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
  448|     37|		}
  449|     48|		return ZEND_HOOKED_PROPERTY_OFFSET;
  ------------------
  |  |   39|     48|#define ZEND_HOOKED_PROPERTY_OFFSET 1
  ------------------
  450|     48|	}
  451|       |
  452|   192k|	offset = property_info->offset;
  453|   192k|	if (EXPECTED(!ZEND_TYPE_IS_SET(property_info->type))) {
  ------------------
  |  |  456|   192k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 21.6k, False: 170k]
  |  |  ------------------
  ------------------
  454|  21.6k|		property_info = NULL;
  455|   170k|	} else {
  456|   170k|		*info_ptr = property_info;
  457|   170k|	}
  458|   192k|	if (cache_slot) {
  ------------------
  |  Branch (458:6): [True: 131, False: 192k]
  ------------------
  459|    131|		CACHE_POLYMORPHIC_PTR_EX(cache_slot, ce, (void*)(uintptr_t)offset);
  ------------------
  |  |  554|    131|#define CACHE_POLYMORPHIC_PTR_EX(slot, ce, ptr) do { \
  |  |  555|    131|		(slot)[0] = (ce); \
  |  |  556|    131|		(slot)[1] = (ptr); \
  |  |  557|    131|	} while (0)
  |  |  ------------------
  |  |  |  Branch (557:11): [Folded, False: 131]
  |  |  ------------------
  ------------------
  460|    131|		CACHE_PTR_EX(cache_slot + 2, property_info);
  ------------------
  |  |  547|    131|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|    131|		(slot)[0] = (ptr); \
  |  |  549|    131|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 131]
  |  |  ------------------
  ------------------
  461|    131|	}
  462|   192k|	return offset;
  463|   192k|}
zend_object_handlers.c:zend_call_get_hook:
  725|     22|{
  726|     22|	if (!zend_should_call_hook(prop_info, zobj)) {
  ------------------
  |  Branch (726:6): [True: 4, False: 18]
  ------------------
  727|      4|		if (UNEXPECTED(prop_info->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  728|      0|			zend_throw_no_prop_backing_value_access(zobj->ce->name, prop_name, /* is_read */ true);
  729|      0|		}
  730|      4|		return false;
  731|      4|	}
  732|       |
  733|     18|	GC_ADDREF(zobj);
  ------------------
  |  |  718|     18|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  734|     18|	zend_call_known_instance_method_with_0_params(get, zobj, rv);
  735|     18|	OBJ_RELEASE(zobj);
  ------------------
  |  |   44|     18|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  736|       |
  737|       |	return true;
  738|     22|}
zend_object_handlers.c:zend_is_in_hook:
  683|     42|{
  684|     42|	const zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|     42|# define EG(v) (executor_globals.v)
  ------------------
  685|     42|	if (!execute_data || !EX(func) || !EX(func)->common.prop_info) {
  ------------------
  |  |  730|     84|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (!execute_data || !EX(func) || !EX(func)->common.prop_info) {
  ------------------
  |  |  730|     42|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (685:6): [True: 0, False: 42]
  |  Branch (685:23): [True: 0, False: 42]
  |  Branch (685:36): [True: 29, False: 13]
  ------------------
  686|     29|		return false;
  687|     29|	}
  688|       |
  689|     13|	const zend_property_info *parent_info = EX(func)->common.prop_info;
  ------------------
  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  ------------------
  690|     13|	ZEND_ASSERT(prop_info->prototype && parent_info->prototype);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (690:2): [True: 0, False: 13]
  |  Branch (690:2): [True: 0, False: 0]
  |  Branch (690:2): [True: 13, False: 0]
  |  Branch (690:2): [True: 13, False: 0]
  ------------------
  691|     13|	return prop_info->prototype == parent_info->prototype;
  692|     13|}
zend_object_handlers.c:zend_std_call_getter:
  241|     17|{
  242|     17|	zval member;
  243|     17|	ZVAL_STR(&member, prop_name);
  ------------------
  |  | 1088|     17|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     17|		zval *__z = (z);						\
  |  | 1090|     17|		zend_string *__s = (s);					\
  |  | 1091|     17|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     17|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     17|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     17|		/* interned strings support */			\
  |  | 1093|     17|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 10, False: 7]
  |  |  ------------------
  |  | 1094|     17|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     10|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     17|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     24|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
  244|     17|	zend_call_known_instance_method_with_1_params(zobj->ce->__get, zobj, retval, &member);
  245|     17|}
zend_object_handlers.c:zend_wrong_offset:
  467|      4|{
  468|      4|	const zend_property_info *dummy;
  469|       |
  470|       |	/* Trigger the correct error */
  471|       |	zend_get_property_offset(ce, member, 0, NULL, &dummy);
  472|      4|}
zend_object_handlers.c:zend_typed_property_uninitialized_access:
  673|      2|{
  674|      2|	zend_throw_error(NULL, "Typed property %s::$%s must not be accessed before initialization",
  675|      2|		ZSTR_VAL(prop_info->ce->name),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  676|      2|		ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  677|      2|}
zend_object_handlers.c:property_uses_strict_types:
 1023|  35.6k|static zend_always_inline bool property_uses_strict_types(void) {
 1024|  35.6k|	const zend_execute_data *execute_data = EG(current_execute_data);
  ------------------
  |  |   45|  35.6k|# define EG(v) (executor_globals.v)
  ------------------
 1025|  35.6k|	return execute_data
  ------------------
  |  Branch (1025:9): [True: 28.4k, False: 7.21k]
  ------------------
 1026|  28.4k|		&& execute_data->func
  ------------------
  |  Branch (1026:6): [True: 28.4k, False: 0]
  ------------------
 1027|  28.4k|		&& ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data));
  ------------------
  |  |  737|  64.0k|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  ------------------
  |  |  |  |  413|  28.4k|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  ------------------
  |  |  |  Branch (737:2): [True: 7, False: 28.4k]
  |  |  ------------------
  ------------------
 1028|  35.6k|}
zend_object_handlers.c:zend_should_call_hook:
  695|     42|{
  696|     42|	if (!zend_is_in_hook(prop_info)) {
  ------------------
  |  Branch (696:6): [True: 29, False: 13]
  ------------------
  697|     29|		return true;
  698|     29|	}
  699|       |
  700|       |	/* execute_data and This are guaranteed to be set if zend_is_in_hook() returns true. */
  701|     13|	zend_object *parent_obj = Z_OBJ(EG(current_execute_data)->This);
  ------------------
  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  702|     13|	if (parent_obj == obj) {
  ------------------
  |  Branch (702:6): [True: 13, False: 0]
  ------------------
  703|     13|		return false;
  704|     13|	}
  705|       |
  706|      0|	if (zend_object_is_lazy_proxy(parent_obj)
  ------------------
  |  Branch (706:6): [True: 0, False: 0]
  ------------------
  707|      0|	 && zend_lazy_object_initialized(parent_obj)
  ------------------
  |  Branch (707:6): [True: 0, False: 0]
  ------------------
  708|      0|	 && zend_lazy_object_get_instance(parent_obj) == obj) {
  ------------------
  |  Branch (708:6): [True: 0, False: 0]
  ------------------
  709|      0|		return false;
  710|      0|	}
  711|       |
  712|      0|	return true;
  713|      0|}
zend_object_handlers.c:zend_std_call_setter:
  249|      6|{
  250|      6|	zval args[2];
  251|      6|	ZVAL_STR(&args[0], prop_name);
  ------------------
  |  | 1088|      6|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      6|		zval *__z = (z);						\
  |  | 1090|      6|		zend_string *__s = (s);					\
  |  | 1091|      6|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      6|		/* interned strings support */			\
  |  | 1093|      6|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 4, False: 2]
  |  |  ------------------
  |  | 1094|      6|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      6|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      8|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  252|      6|	ZVAL_COPY_VALUE(&args[1], value);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  253|       |	zend_call_known_instance_method(zobj->ce->__set, zobj, NULL, 2, args);
  254|      6|}
zend_object_handlers.c:zend_forbidden_dynamic_property:
  327|      3|		const zend_class_entry *ce, const zend_string *member) {
  328|      3|	zend_throw_error(NULL, "Cannot create dynamic property %s::$%s",
  329|      3|		ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  330|      3|}
zend_object_handlers.c:zend_deprecated_dynamic_property:
  333|  4.64k|		zend_object *obj, const zend_string *member) {
  334|  4.64k|	GC_ADDREF(obj);
  ------------------
  |  |  718|  4.64k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  335|  4.64k|	zend_error(E_DEPRECATED, "Creation of dynamic property %s::$%s is deprecated",
  ------------------
  |  |   36|  4.64k|#define E_DEPRECATED		(1<<13L)
  ------------------
  336|  4.64k|		ZSTR_VAL(obj->ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|  4.64k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(obj->ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|  4.64k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  337|  4.64k|	if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|  4.64k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.64k]
  |  |  ------------------
  ------------------
  338|      0|		const zend_class_entry *ce = obj->ce;
  339|      0|		zend_objects_store_del(obj);
  340|      0|		if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (340:7): [True: 0, False: 0]
  ------------------
  341|       |			/* We cannot continue execution and have to throw an exception */
  342|      0|			zend_throw_error(NULL, "Cannot create dynamic property %s::$%s",
  343|      0|				ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(member));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  344|      0|		}
  345|      0|		return 0;
  346|      0|	}
  347|  4.64k|	return 1;
  348|  4.64k|}
zend_object_handlers.c:zend_bad_array_access:
 1317|      5|{
 1318|      5|	zend_throw_error(NULL, "Cannot use object of type %s as array", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1319|      5|}
zend_object_handlers.c:zend_std_call_unsetter:
  258|      2|{
  259|      2|	zval member;
  260|      2|	ZVAL_STR(&member, prop_name);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 1]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  261|       |	zend_call_known_instance_method_with_1_params(zobj->ce->__unset, zobj, NULL, &member);
  262|      2|}
zend_object_handlers.c:zif_zend_parent_hook_get_trampoline:
 1829|      1|{
 1830|      1|	zend_object *obj = Z_PTR_P(ZEND_THIS);
  ------------------
  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1831|      1|	zend_string *prop_name = EX(func)->internal_function.reserved[0];
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1832|       |
 1833|      1|	if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1834|      0|		zend_wrong_parameters_none_error();
 1835|      0|		goto clean;
 1836|      0|	}
 1837|       |
 1838|      1|	zval rv;
 1839|      1|	const zval *retval = obj->handlers->read_property(obj, prop_name, BP_VAR_R, NULL, &rv);
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
 1840|      1|	if (retval == &rv) {
  ------------------
  |  Branch (1840:6): [True: 0, False: 1]
  ------------------
 1841|      0|		RETVAL_COPY_VALUE(retval);
  ------------------
  |  | 1040|      0|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1842|      1|	} else {
 1843|      1|		RETVAL_COPY(retval);
  ------------------
  |  | 1039|      1|#define RETVAL_COPY(zv)					ZVAL_COPY(return_value, zv)
  |  |  ------------------
  |  |  |  | 1425|      1|	do {												\
  |  |  |  | 1426|      1|		zval *_z1 = (z);								\
  |  |  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1844|      1|	}
 1845|       |
 1846|      1|clean:
 1847|      1|	zend_string_release(EX(func)->common.function_name);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1848|      1|	zend_free_trampoline(EX(func));
  ------------------
  |  |  344|      1|#define zend_free_trampoline(func) do { \
  |  |  345|      1|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 1, False: 0]
  |  |  ------------------
  |  |  346|      1|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      1|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      1|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1849|      1|	EX(func) = NULL;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1850|      1|}
zend_object_handlers.c:zif_zend_parent_hook_set_trampoline:
 1853|      1|{
 1854|      1|	zend_object *obj = Z_PTR_P(ZEND_THIS);
  ------------------
  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1855|      1|	zend_string *prop_name = EX(func)->internal_function.reserved[0];
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1856|       |
 1857|      1|	zval *value;
 1858|       |
 1859|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1860|      4|		Z_PARAM_ZVAL(value)
  ------------------
  |  | 2116|      1|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      1|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      1|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1860:3): [True: 1, False: 0]
  |  Branch (1860:3): [True: 0, False: 0]
  |  Branch (1860:3): [True: 1, False: 0]
  |  Branch (1860:3): [True: 0, False: 0]
  |  Branch (1860:3): [True: 1, False: 0]
  |  Branch (1860:3): [True: 0, False: 0]
  |  Branch (1860:3): [True: 0, False: 1]
  |  Branch (1860:3): [True: 1, False: 0]
  |  Branch (1860:3): [True: 0, False: 0]
  |  Branch (1860:3): [True: 0, False: 0]
  ------------------
 1861|      4|	ZEND_PARSE_PARAMETERS_END_EX(goto clean);
  ------------------
  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1640|      1|		} while (0); \
  |  |  ------------------
  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  ------------------
  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  ------------------
  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  ------------------
  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  ------------------
  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  | 1644|      0|			} \
  |  | 1645|      0|			failure; \
  |  | 1646|      0|		} \
  |  | 1647|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1861:2): [True: 1, False: 0]
  |  Branch (1861:2): [True: 0, False: 0]
  |  Branch (1861:2): [True: 1, False: 0]
  |  Branch (1861:2): [True: 0, False: 0]
  ------------------
 1862|       |
 1863|      1|	RETVAL_COPY(obj->handlers->write_property(obj, prop_name, value, NULL));
  ------------------
  |  | 1039|      1|#define RETVAL_COPY(zv)					ZVAL_COPY(return_value, zv)
  |  |  ------------------
  |  |  |  | 1425|      1|	do {												\
  |  |  |  | 1426|      1|		zval *_z1 = (z);								\
  |  |  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1864|       |
 1865|      1|clean:
 1866|      1|	zend_string_release(EX(func)->common.function_name);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1867|      1|	zend_free_trampoline(EX(func));
  ------------------
  |  |  344|      1|#define zend_free_trampoline(func) do { \
  |  |  345|      1|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 1, False: 0]
  |  |  ------------------
  |  |  346|      1|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      1|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      1|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1868|      1|	EX(func) = NULL;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1869|      1|}
zend_object_handlers.c:get_static_method_fallback:
 2001|     12|{
 2002|     12|	zend_object *object;
 2003|     12|	if (ce->__call &&
  ------------------
  |  Branch (2003:6): [True: 2, False: 10]
  ------------------
 2004|      2|		(object = zend_get_this_object(EG(current_execute_data))) != NULL &&
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2004:3): [True: 2, False: 0]
  ------------------
 2005|      2|		instanceof_function(object->ce, ce)) {
  ------------------
  |  Branch (2005:3): [True: 2, False: 0]
  ------------------
 2006|       |		/* Call the top-level defined __call().
 2007|       |		 * see: tests/classes/__call_004.phpt  */
 2008|       |
 2009|      2|		ZEND_ASSERT(object->ce->__call);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2009:3): [True: 0, False: 2]
  |  Branch (2009:3): [True: 2, False: 0]
  ------------------
 2010|      2|		return zend_get_call_trampoline_func(object->ce->__call, function_name);
 2011|     10|	} else if (ce->__callstatic) {
  ------------------
  |  Branch (2011:13): [True: 5, False: 5]
  ------------------
 2012|      5|		return zend_get_call_trampoline_func(ce->__callstatic, function_name);
 2013|      5|	} else {
 2014|       |		return NULL;
 2015|      5|	}
 2016|     12|}
zend_object_handlers.c:zend_bad_constructor_call:
 2177|      9|{
 2178|      9|	if (scope) {
  ------------------
  |  Branch (2178:6): [True: 0, False: 9]
  ------------------
 2179|      0|		zend_throw_error(NULL, "Call to %s %s::__construct() from scope %s",
 2180|      0|			zend_visibility_string(constructor->common.fn_flags),
 2181|      0|			ZSTR_VAL(constructor->common.scope->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2182|      0|			ZSTR_VAL(scope->name)
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2183|      0|		);
 2184|      9|	} else {
 2185|      9|		zend_throw_error(NULL, "Call to %s %s::__construct() from global scope",
 2186|      9|			zend_visibility_string(constructor->common.fn_flags),
 2187|      9|			ZSTR_VAL(constructor->common.scope->name)
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2188|      9|		);
 2189|      9|	}
 2190|      9|}
zend_object_handlers.c:zend_objects_check_stack_limit:
   52|     23|{
   53|     23|#ifdef ZEND_CHECK_STACK_LIMIT
   54|     23|	return zend_call_stack_overflowed(EG(stack_limit));
  ------------------
  |  |   45|     23|# define EG(v) (executor_globals.v)
  ------------------
   55|       |#else
   56|       |	return false;
   57|       |#endif
   58|     23|}

zend_object_handlers.c:zend_std_get_properties_ex:
  280|  5.50k|{
  281|  5.50k|	if (UNEXPECTED(zend_lazy_object_must_init(object))) {
  ------------------
  |  |  457|  5.50k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5.50k]
  |  |  ------------------
  ------------------
  282|      0|		return zend_lazy_object_get_properties(object);
  283|      0|	}
  284|  5.50k|	if (!object->properties) {
  ------------------
  |  Branch (284:6): [True: 5.03k, False: 472]
  ------------------
  285|  5.03k|		return rebuild_object_properties_internal(object);
  286|  5.03k|	}
  287|    472|	return object->properties;
  288|  5.50k|}

zend_object_std_init:
   46|  3.23k|{
   47|  3.23k|	_zend_object_std_init(object, ce);
   48|  3.23k|}
zend_object_dtor_dynamic_properties:
   51|  29.7k|{
   52|  29.7k|	if (object->properties) {
  ------------------
  |  Branch (52:6): [True: 5.09k, False: 24.6k]
  ------------------
   53|  5.09k|		if (EXPECTED(!(GC_FLAGS(object->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|  5.09k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5.09k, False: 0]
  |  |  ------------------
  ------------------
   54|  5.09k|			if (EXPECTED(GC_DELREF(object->properties) == 0)
  ------------------
  |  |  456|  10.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5.09k, False: 0]
  |  |  ------------------
  ------------------
   55|  5.09k|					&& EXPECTED(GC_TYPE(object->properties) != IS_NULL)) {
  ------------------
  |  |  456|  5.09k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5.09k, False: 3]
  |  |  ------------------
  ------------------
   56|  5.09k|				zend_array_destroy(object->properties);
   57|  5.09k|			}
   58|  5.09k|		}
   59|  5.09k|	}
   60|  29.7k|}
zend_object_dtor_property:
   63|   134k|{
   64|   134k|	if (Z_REFCOUNTED_P(p)) {
  ------------------
  |  |  942|   134k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|   134k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|   134k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 58.8k, False: 75.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|  58.8k|		if (UNEXPECTED(Z_ISREF_P(p)) &&
  ------------------
  |  |  457|   117k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 28, False: 58.7k]
  |  |  ------------------
  ------------------
   66|     28|				(ZEND_DEBUG || ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(p)))) {
  ------------------
  |  | 2105|     56|#define ZEND_DEBUG 1
  |  |  ------------------
  |  |  |  Branch (2105:20): [True: 28, Folded]
  |  |  ------------------
  ------------------
              				(ZEND_DEBUG || ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(p)))) {
  ------------------
  |  |  123|      0|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   67|     28|			zend_property_info *prop_info = zend_get_property_info_for_slot_self(object, p);
   68|     28|			if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     28|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     28|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 14, False: 14]
  |  |  ------------------
  ------------------
   69|     14|				ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(p), prop_info);
  ------------------
  |  |  595|     14|	zend_ref_del_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|     14|	(ref)->sources
  |  |  ------------------
  ------------------
   70|     14|			}
   71|     28|		}
   72|  58.8k|		i_zval_ptr_dtor(p);
   73|  58.8k|	}
   74|   134k|}
zend_object_std_dtor:
   77|  29.7k|{
   78|  29.7k|	zval *p, *end;
   79|       |
   80|  29.7k|	if (UNEXPECTED(GC_FLAGS(object) & IS_OBJ_WEAKLY_REFERENCED)) {
  ------------------
  |  |  457|  29.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 29.7k]
  |  |  ------------------
  ------------------
   81|      9|		zend_weakrefs_notify(object);
   82|      9|	}
   83|       |
   84|  29.7k|	if (UNEXPECTED(zend_object_is_lazy(object))) {
  ------------------
  |  |  457|  29.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 29.7k]
  |  |  ------------------
  ------------------
   85|      2|		zend_lazy_object_del_info(object);
   86|      2|	}
   87|       |
   88|  29.7k|	zend_object_dtor_dynamic_properties(object);
   89|       |
   90|  29.7k|	p = object->properties_table;
   91|  29.7k|	if (EXPECTED(object->ce->default_properties_count)) {
  ------------------
  |  |  456|  29.7k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20.6k, False: 9.06k]
  |  |  ------------------
  ------------------
   92|  20.6k|		end = p + object->ce->default_properties_count;
   93|   134k|		do {
   94|   134k|			zend_object_dtor_property(object, p);
   95|   134k|			p++;
   96|   134k|		} while (p != end);
  ------------------
  |  Branch (96:12): [True: 114k, False: 20.6k]
  ------------------
   97|  20.6k|	}
   98|       |
   99|  29.7k|	if (UNEXPECTED(object->ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
  ------------------
  |  |  457|  29.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 210, False: 29.5k]
  |  |  ------------------
  ------------------
  100|    210|		if (EXPECTED(Z_TYPE_P(p) == IS_STRING)) {
  ------------------
  |  |  456|    210|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 21, False: 189]
  |  |  ------------------
  ------------------
  101|     21|			zval_ptr_dtor_str(p);
  102|    189|		} else if (Z_TYPE_P(p) == IS_ARRAY) {
  ------------------
  |  |  669|    189|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    189|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(p) == IS_ARRAY) {
  ------------------
  |  |  613|    189|#define IS_ARRAY					7
  ------------------
  |  Branch (102:14): [True: 2, False: 187]
  ------------------
  103|      2|			HashTable *guards;
  104|       |
  105|      2|			guards = Z_ARRVAL_P(p);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      2|			ZEND_ASSERT(guards != NULL);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (106:4): [True: 0, False: 2]
  |  Branch (106:4): [True: 2, False: 0]
  ------------------
  107|      2|			zend_hash_destroy(guards);
  108|       |			FREE_HASHTABLE(guards);
  ------------------
  |  |  235|      2|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      2|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|      2|		}
  110|    210|	}
  111|  29.7k|}
zend_objects_destroy_object:
  114|  1.68k|{
  115|  1.68k|	zend_function *destructor = object->ce->destructor;
  116|       |
  117|  1.68k|	if (destructor) {
  ------------------
  |  Branch (117:6): [True: 1.68k, False: 0]
  ------------------
  118|  1.68k|		if (UNEXPECTED(zend_object_is_lazy(object))) {
  ------------------
  |  |  457|  1.68k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.68k]
  |  |  ------------------
  ------------------
  119|      0|			return;
  120|      0|		}
  121|       |
  122|  1.68k|		zend_object *old_exception;
  123|  1.68k|		const zend_op *old_opline_before_exception = NULL;
  124|       |
  125|  1.68k|		if (destructor->common.fn_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  221|  1.68k|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              		if (destructor->common.fn_flags & (ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
  ------------------
  |  |  220|  1.68k|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (125:7): [True: 0, False: 1.68k]
  ------------------
  126|      0|			if (EG(current_execute_data)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  127|      0|				zend_class_entry *scope = zend_get_executed_scope();
  128|       |				/* Ensure that if we're calling a protected or private function, we're allowed to do so. */
  129|      0|				ZEND_ASSERT(!(destructor->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (129:5): [True: 0, False: 0]
  |  Branch (129:5): [True: 0, False: 0]
  ------------------
  130|      0|				if (!zend_check_method_accessible(destructor, scope)) {
  ------------------
  |  Branch (130:9): [True: 0, False: 0]
  ------------------
  131|      0|					zend_throw_error(NULL,
  132|      0|						"Call to %s %s::__destruct() from %s%s",
  133|      0|						zend_visibility_string(destructor->common.fn_flags), ZSTR_VAL(object->ce->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  134|      0|						scope ? "scope " : "global scope",
  ------------------
  |  Branch (134:7): [True: 0, False: 0]
  ------------------
  135|      0|						scope ? ZSTR_VAL(scope->name) : ""
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (135:7): [True: 0, False: 0]
  ------------------
  136|      0|					);
  137|      0|					return;
  138|      0|				}
  139|      0|			} else {
  140|      0|				zend_error(E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  141|      0|					"Call to %s %s::__destruct() from global scope during shutdown ignored",
  142|      0|					zend_visibility_string(destructor->common.fn_flags), ZSTR_VAL(object->ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  143|      0|				return;
  144|      0|			}
  145|      0|		}
  146|       |
  147|  1.68k|		GC_ADDREF(object);
  ------------------
  |  |  718|  1.68k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  148|       |
  149|       |		/* Make sure that destructors are protected from previously thrown exceptions.
  150|       |		 * For example, if an exception was thrown in a function and when the function's
  151|       |		 * local variable destruction results in a destructor being called.
  152|       |		 */
  153|  1.68k|		old_exception = NULL;
  154|  1.68k|		if (EG(exception)) {
  ------------------
  |  |   45|  1.68k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 532, False: 1.15k]
  |  |  ------------------
  ------------------
  155|    532|			if (EG(exception) == object) {
  ------------------
  |  |   45|    532|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (155:8): [True: 0, False: 532]
  ------------------
  156|      0|				zend_error_noreturn(E_CORE_ERROR, "Attempt to destruct pending exception");
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
  157|    532|			} else {
  158|    532|				if (EG(current_execute_data)) {
  ------------------
  |  |   45|    532|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 283, False: 249]
  |  |  ------------------
  ------------------
  159|    283|					if (EG(current_execute_data)->func
  ------------------
  |  |   45|    283|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (159:10): [True: 283, False: 0]
  ------------------
  160|    283|					 && ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) {
  ------------------
  |  | 1081|    283|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 283, False: 0]
  |  |  ------------------
  ------------------
  161|    283|						zend_rethrow_exception(EG(current_execute_data));
  ------------------
  |  |   45|    283|# define EG(v) (executor_globals.v)
  ------------------
  162|    283|					}
  163|    283|					EG(current_execute_data)->opline = EG(opline_before_exception);
  ------------------
  |  |   45|    283|# define EG(v) (executor_globals.v)
  ------------------
              					EG(current_execute_data)->opline = EG(opline_before_exception);
  ------------------
  |  |   45|    283|# define EG(v) (executor_globals.v)
  ------------------
  164|    283|					old_opline_before_exception = EG(opline_before_exception);
  ------------------
  |  |   45|    283|# define EG(v) (executor_globals.v)
  ------------------
  165|    283|				}
  166|    532|				old_exception = EG(exception);
  ------------------
  |  |   45|    532|# define EG(v) (executor_globals.v)
  ------------------
  167|    532|				EG(exception) = NULL;
  ------------------
  |  |   45|    532|# define EG(v) (executor_globals.v)
  ------------------
  168|    532|			}
  169|    532|		}
  170|       |
  171|  1.68k|		zend_call_known_instance_method_with_0_params(destructor, object, NULL);
  172|       |
  173|  1.68k|		if (old_exception) {
  ------------------
  |  Branch (173:7): [True: 34, False: 1.65k]
  ------------------
  174|     34|			if (EG(current_execute_data)) {
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  175|     34|				EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  ------------------
              				EG(current_execute_data)->opline = EG(exception_op);
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  ------------------
  176|     34|				EG(opline_before_exception) = old_opline_before_exception;
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  ------------------
  177|     34|			}
  178|     34|			if (EG(exception)) {
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 30, False: 4]
  |  |  ------------------
  ------------------
  179|     30|				zend_exception_set_previous(EG(exception), old_exception);
  ------------------
  |  |   45|     30|# define EG(v) (executor_globals.v)
  ------------------
  180|     30|			} else {
  181|      4|				EG(exception) = old_exception;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  182|      4|			}
  183|     34|		}
  184|  1.68k|		OBJ_RELEASE(object);
  ------------------
  |  |   44|  1.68k|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
  185|  1.68k|	}
  186|  1.68k|}
zend_objects_new:
  189|  26.5k|{
  190|  26.5k|	zend_object *object = emalloc(sizeof(zend_object) + zend_object_properties_size(ce));
  ------------------
  |  |  150|  26.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  26.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  26.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  26.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  26.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|       |
  192|  26.5k|	_zend_object_std_init(object, ce);
  193|  26.5k|	return object;
  194|  26.5k|}
zend_objects_clone_members:
  197|     30|{
  198|     30|	bool has_clone_method = old_object->ce->clone != NULL;
  199|       |
  200|     30|	if (old_object->ce->default_properties_count) {
  ------------------
  |  Branch (200:6): [True: 5, False: 25]
  ------------------
  201|      5|		const zval *src = old_object->properties_table;
  202|      5|		zval *dst = new_object->properties_table;
  203|      5|		const zval *end = src + old_object->ce->default_properties_count;
  204|       |
  205|      5|		do {
  206|      5|			i_zval_ptr_dtor(dst);
  207|      5|			ZVAL_COPY_VALUE_PROP(dst, src);
  ------------------
  |  | 1582|      5|	do { *(z) = *(v); } while (0)
  |  |  ------------------
  |  |  |  Branch (1582:29): [Folded, False: 5]
  |  |  ------------------
  ------------------
  208|      5|			zval_add_ref(dst);
  209|      5|			if (has_clone_method) {
  ------------------
  |  Branch (209:8): [True: 0, False: 5]
  ------------------
  210|       |				/* Unconditionally add the IS_PROP_REINITABLE flag to avoid a potential cache miss of property_info */
  211|      0|				Z_PROP_FLAG_P(dst) |= IS_PROP_REINITABLE;
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(dst) |= IS_PROP_REINITABLE;
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  212|      0|			}
  213|       |
  214|      5|			if (UNEXPECTED(Z_ISREF_P(dst)) &&
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  215|      0|					(ZEND_DEBUG || ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(dst)))) {
  ------------------
  |  | 2105|      0|#define ZEND_DEBUG 1
  |  |  ------------------
  |  |  |  Branch (2105:20): [True: 0, Folded]
  |  |  ------------------
  ------------------
              					(ZEND_DEBUG || ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(dst)))) {
  ------------------
  |  |  123|      0|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  216|      0|				zend_property_info *prop_info = zend_get_property_info_for_slot_self(new_object, dst);
  217|      0|				if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  218|      0|					ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(dst), prop_info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  219|      0|				}
  220|      0|			}
  221|      5|			src++;
  222|      5|			dst++;
  223|      5|		} while (src != end);
  ------------------
  |  Branch (223:12): [True: 0, False: 5]
  ------------------
  224|     25|	} else if (old_object->properties && !has_clone_method) {
  ------------------
  |  Branch (224:13): [True: 11, False: 14]
  |  Branch (224:39): [True: 11, False: 0]
  ------------------
  225|       |		/* fast copy */
  226|     11|		if (EXPECTED(old_object->handlers == &std_object_handlers)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 0]
  |  |  ------------------
  ------------------
  227|     11|			if (EXPECTED(!(GC_FLAGS(old_object->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 0]
  |  |  ------------------
  ------------------
  228|     11|				GC_ADDREF(old_object->properties);
  ------------------
  |  |  718|     11|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  229|     11|			}
  230|     11|			new_object->properties = old_object->properties;
  231|     11|			return;
  232|     11|		}
  233|     11|	}
  234|       |
  235|     19|	if (old_object->properties &&
  ------------------
  |  Branch (235:6): [True: 0, False: 19]
  ------------------
  236|      0|	    EXPECTED(zend_hash_num_elements(old_object->properties))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  237|      0|		zval *prop, new_prop;
  238|      0|		zend_ulong num_key;
  239|      0|		zend_string *key;
  240|       |
  241|      0|		if (!new_object->properties) {
  ------------------
  |  Branch (241:7): [True: 0, False: 0]
  ------------------
  242|      0|			new_object->properties = zend_new_array(zend_hash_num_elements(old_object->properties));
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
  243|      0|			zend_hash_real_init_mixed(new_object->properties);
  244|      0|		} else {
  245|      0|			zend_hash_extend(new_object->properties, new_object->properties->nNumUsed + zend_hash_num_elements(old_object->properties), 0);
  246|      0|		}
  247|       |
  248|      0|		HT_FLAGS(new_object->properties) |=
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
  249|      0|			HT_FLAGS(old_object->properties) & HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              			HT_FLAGS(old_object->properties) & HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      0|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
  250|       |
  251|      0|		ZEND_HASH_MAP_FOREACH_KEY_VAL(old_object->properties, num_key, key, prop) {
  ------------------
  |  | 1404|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1405|      0|	_h = _p->h; \
  |  | 1406|      0|	_key = _p->key; \
  |  | 1407|      0|	_val = _z;
  ------------------
  |  Branch (251:3): [True: 0, False: 0]
  |  Branch (251:3): [True: 0, False: 0]
  ------------------
  252|      0|			if (Z_TYPE_P(prop) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(prop) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (252:8): [True: 0, False: 0]
  ------------------
  253|      0|				ZVAL_INDIRECT(&new_prop, new_object->properties_table + (Z_INDIRECT_P(prop) - old_object->properties_table));
  ------------------
  |  | 1246|      0|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      0|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      0|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|      0|			} else {
  255|      0|				ZVAL_COPY_VALUE(&new_prop, prop);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  256|      0|				zval_add_ref(&new_prop);
  257|      0|			}
  258|      0|			if (has_clone_method) {
  ------------------
  |  Branch (258:8): [True: 0, False: 0]
  ------------------
  259|       |				/* Unconditionally add the IS_PROP_REINITABLE flag to avoid a potential cache miss of property_info */
  260|      0|				Z_PROP_FLAG_P(&new_prop) |= IS_PROP_REINITABLE;
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(&new_prop) |= IS_PROP_REINITABLE;
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  261|      0|			}
  262|      0|			if (EXPECTED(key)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  263|      0|				_zend_hash_append(new_object->properties, key, &new_prop);
  264|      0|			} else {
  265|      0|				zend_hash_index_add_new(new_object->properties, num_key, &new_prop);
  266|      0|			}
  267|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  268|      0|	}
  269|       |
  270|     19|	if (has_clone_method) {
  ------------------
  |  Branch (270:6): [True: 2, False: 17]
  ------------------
  271|      2|		zend_call_known_instance_method_with_0_params(new_object->ce->clone, new_object, NULL);
  272|       |
  273|      2|		if (ZEND_CLASS_HAS_READONLY_PROPS(new_object->ce)) {
  ------------------
  |  |  584|      2|#define ZEND_CLASS_HAS_READONLY_PROPS(ce) ((bool)(ce->ce_flags & ZEND_ACC_HAS_READONLY_PROPS))
  |  |  ------------------
  |  |  |  |  325|      2|#define ZEND_ACC_HAS_READONLY_PROPS      (1 << 21) /*  X  |     |     |     */
  |  |  ------------------
  |  |  |  Branch (584:43): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  274|      0|			for (uint32_t i = 0; i < new_object->ce->default_properties_count; i++) {
  ------------------
  |  Branch (274:25): [True: 0, False: 0]
  ------------------
  275|      0|				zval* prop = OBJ_PROP_NUM(new_object, i);
  ------------------
  |  |  482|      0|	(&(obj)->properties_table[(num)])
  ------------------
  276|       |				/* Unconditionally remove the IS_PROP_REINITABLE flag to avoid a potential cache miss of property_info */
  277|      0|				Z_PROP_FLAG_P(prop) &= ~IS_PROP_REINITABLE;
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(prop) &= ~IS_PROP_REINITABLE;
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  278|      0|			}
  279|      0|		}
  280|      2|	}
  281|     19|}
zend_objects_clone_obj_with:
  284|      2|{
  285|      2|	zend_object *new_object = old_object->handlers->clone_obj(old_object);
  286|       |
  287|      2|	if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  288|       |		/* Unlock readonly properties once more. */
  289|      2|		if (ZEND_CLASS_HAS_READONLY_PROPS(new_object->ce)) {
  ------------------
  |  |  584|      2|#define ZEND_CLASS_HAS_READONLY_PROPS(ce) ((bool)(ce->ce_flags & ZEND_ACC_HAS_READONLY_PROPS))
  |  |  ------------------
  |  |  |  |  325|      2|#define ZEND_ACC_HAS_READONLY_PROPS      (1 << 21) /*  X  |     |     |     */
  |  |  ------------------
  |  |  |  Branch (584:43): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  290|      0|			for (uint32_t i = 0; i < new_object->ce->default_properties_count; i++) {
  ------------------
  |  Branch (290:25): [True: 0, False: 0]
  ------------------
  291|      0|				zval* prop = OBJ_PROP_NUM(new_object, i);
  ------------------
  |  |  482|      0|	(&(obj)->properties_table[(num)])
  ------------------
  292|      0|				Z_PROP_FLAG_P(prop) |= IS_PROP_REINITABLE;
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				Z_PROP_FLAG_P(prop) |= IS_PROP_REINITABLE;
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  293|      0|			}
  294|      0|		}
  295|       |
  296|      2|		const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  297|       |
  298|      2|		EG(fake_scope) = scope;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  299|       |
  300|      6|		ZEND_HASH_FOREACH_KEY_VAL(properties, zend_ulong num_key, zend_string *key, zval *val) {
  ------------------
  |  | 1196|      2|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      2|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      2|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      2|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      2|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      2|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      2|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      3|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      2|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      2|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      2|			} else { \
  |  |  |  |  |  | 1060|      2|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      2|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      2|				__h = _p->h; \
  |  |  |  |  |  | 1063|      2|				__key = _p->key; \
  |  |  |  |  |  | 1064|      2|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      2|			} \
  |  |  |  |  |  | 1068|      2|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      2|	_h = __h; \
  |  | 1198|      2|	_key = __key; \
  |  | 1199|      2|	_val = _z;
  ------------------
  301|      6|			if (UNEXPECTED(Z_ISREF_P(val))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  302|      0|				if (Z_REFCOUNT_P(val) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (302:9): [True: 0, False: 0]
  ------------------
  303|      0|					val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|      0|				} else {
  305|      0|					zend_throw_error(NULL, "Cannot assign by reference when cloning with updated properties");
  306|      0|					break;
  307|      0|				}
  308|      0|			}
  309|       |
  310|      2|			if (UNEXPECTED(key == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  311|      0|				key = zend_long_to_str(num_key);
  312|      0|				new_object->handlers->write_property(new_object, key, val, NULL);
  313|      0|				zend_string_release_ex(key, false);
  314|      2|			} else {
  315|      2|				new_object->handlers->write_property(new_object, key, val, NULL);
  316|      2|			}
  317|       |
  318|      2|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  319|      1|				break;
  320|      1|			}
  321|      2|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  322|       |
  323|      2|		EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  324|      2|	}
  325|       |
  326|      2|	return new_object;
  327|      2|}
zend_objects_clone_obj:
  330|     29|{
  331|     29|	zend_object *new_object;
  332|       |
  333|     29|	if (UNEXPECTED(zend_object_is_lazy(old_object))) {
  ------------------
  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 29]
  |  |  ------------------
  ------------------
  334|      0|		return zend_lazy_object_clone(old_object);
  335|      0|	}
  336|       |
  337|       |	/* assume that create isn't overwritten, so when clone depends on the
  338|       |	 * overwritten one then it must itself be overwritten */
  339|     29|	new_object = zend_objects_new(old_object->ce);
  340|       |
  341|       |	/* zend_objects_clone_members() expect the properties to be initialized. */
  342|     29|	if (new_object->ce->default_properties_count) {
  ------------------
  |  Branch (342:6): [True: 5, False: 24]
  ------------------
  343|      5|		zval *p = new_object->properties_table;
  344|      5|		zval *end = p + new_object->ce->default_properties_count;
  345|      5|		do {
  346|      5|			ZVAL_UNDEF(p);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  347|      5|			p++;
  348|      5|		} while (p != end);
  ------------------
  |  Branch (348:12): [True: 0, False: 5]
  ------------------
  349|      5|	}
  350|       |
  351|     29|	zend_objects_clone_members(new_object, old_object);
  352|       |
  353|     29|	return new_object;
  354|     29|}
zend_objects.c:_zend_object_std_init:
   30|  29.7k|{
   31|  29.7k|	GC_SET_REFCOUNT(object, 1);
  ------------------
  |  |  717|  29.7k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
   32|  29.7k|	GC_TYPE_INFO(object) = GC_OBJECT;
  ------------------
  |  |  775|  29.7k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(object) = GC_OBJECT;
  ------------------
  |  |  808|  29.7k|#define GC_OBJECT					IS_OBJECT
  |  |  ------------------
  |  |  |  |  614|  29.7k|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
   33|  29.7k|	object->ce = ce;
   34|  29.7k|	object->extra_flags = 0;
   35|  29.7k|	object->handlers = ce->default_object_handlers;
   36|  29.7k|	object->properties = NULL;
   37|  29.7k|	zend_objects_store_put(object);
   38|  29.7k|	if (UNEXPECTED(ce->ce_flags & ZEND_ACC_USE_GUARDS)) {
  ------------------
  |  |  457|  29.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 210, False: 29.5k]
  |  |  ------------------
  ------------------
   39|    210|		zval *guard_value = object->properties_table + object->ce->default_properties_count;
   40|    210|		ZVAL_UNDEF(guard_value);
  ------------------
  |  | 1055|    210|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    210|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    210|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    210|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    210|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    210|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 210]
  |  |  ------------------
  ------------------
   41|    210|		Z_GUARD_P(guard_value) = 0;
  ------------------
  |  |  699|    210|#define Z_GUARD_P(zval_p)			Z_GUARD(*(zval_p))
  |  |  ------------------
  |  |  |  |  698|    210|#define Z_GUARD(zval)				(zval).u2.guard
  |  |  ------------------
  ------------------
   42|    210|	}
   43|  29.7k|}

zend_objects_store_init:
   28|  33.5k|{
   29|       |	objects->object_buckets = (zend_object **) emalloc(init_size * sizeof(zend_object*));
  ------------------
  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   30|  33.5k|	objects->top = 1; /* Skip 0 so that handles are true */
   31|  33.5k|	objects->size = init_size;
   32|  33.5k|	objects->free_list_head = -1;
   33|  33.5k|	memset(&objects->object_buckets[0], 0, sizeof(zend_object*));
   34|  33.5k|}
zend_objects_store_destroy:
   37|  33.5k|{
   38|  33.5k|	efree(objects->object_buckets);
  ------------------
  |  |  154|  33.5k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   39|       |	objects->object_buckets = NULL;
   40|  33.5k|}
zend_objects_store_call_destructors:
   43|  33.5k|{
   44|  33.5k|	EG(flags) |= EG_FLAGS_OBJECT_STORE_NO_REUSE;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(flags) |= EG_FLAGS_OBJECT_STORE_NO_REUSE;
  ------------------
  |  |  334|  33.5k|#define EG_FLAGS_OBJECT_STORE_NO_REUSE	(1<<1)
  ------------------
   45|  33.5k|	if (objects->top > 1) {
  ------------------
  |  Branch (45:6): [True: 4.55k, False: 29.0k]
  ------------------
   46|  18.4k|		for (uint32_t i = 1; i < objects->top; i++) {
  ------------------
  |  Branch (46:24): [True: 13.8k, False: 4.55k]
  ------------------
   47|  13.8k|			zend_object *obj = objects->object_buckets[i];
   48|  13.8k|			if (IS_OBJ_VALID(obj)) {
  ------------------
  |  |   29|  13.8k|#define IS_OBJ_VALID(o)				(!(((uintptr_t)(o)) & OBJ_BUCKET_INVALID))
  |  |  ------------------
  |  |  |  |   27|  13.8k|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  ------------------
  |  |  |  Branch (29:28): [True: 7.22k, False: 6.64k]
  |  |  ------------------
  ------------------
   49|  7.22k|				if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  852|  7.22k|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|  7.22k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  7.22k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  849|  7.22k|#define IS_OBJ_DESTRUCTOR_CALLED	(1<<8)
  ------------------
  |  Branch (49:9): [True: 6.46k, False: 760]
  ------------------
   50|  6.46k|					GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|  6.46k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  6.46k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  6.46k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  6.46k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  6.46k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 6.46k]
  |  |  ------------------
  ------------------
   51|       |
   52|  6.46k|					if (obj->handlers->dtor_obj != zend_objects_destroy_object
  ------------------
  |  Branch (52:10): [True: 278, False: 6.18k]
  ------------------
   53|  6.18k|							|| obj->ce->destructor) {
  ------------------
  |  Branch (53:11): [True: 11, False: 6.17k]
  ------------------
   54|    289|						GC_ADDREF(obj);
  ------------------
  |  |  718|    289|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
   55|    289|						obj->handlers->dtor_obj(obj);
   56|    289|						GC_DELREF(obj);
  ------------------
  |  |  719|    289|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
   57|    289|					}
   58|  6.46k|				}
   59|  7.22k|			}
   60|  13.8k|		}
   61|  4.55k|	}
   62|  33.5k|}
zend_objects_store_mark_destructed:
   65|    692|{
   66|    692|	if (objects->object_buckets && objects->top > 1) {
  ------------------
  |  Branch (66:6): [True: 692, False: 0]
  |  Branch (66:33): [True: 18, False: 674]
  ------------------
   67|     18|		zend_object **obj_ptr = objects->object_buckets + 1;
   68|     18|		zend_object **end = objects->object_buckets + objects->top;
   69|       |
   70|  2.03k|		do {
   71|  2.03k|			zend_object *obj = *obj_ptr;
   72|       |
   73|  2.03k|			if (IS_OBJ_VALID(obj)) {
  ------------------
  |  |   29|  2.03k|#define IS_OBJ_VALID(o)				(!(((uintptr_t)(o)) & OBJ_BUCKET_INVALID))
  |  |  ------------------
  |  |  |  |   27|  2.03k|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  ------------------
  |  |  |  Branch (29:28): [True: 2.01k, False: 14]
  |  |  ------------------
  ------------------
   74|  2.01k|				GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|  2.01k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  2.01k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  2.01k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  2.01k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  2.01k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2.01k]
  |  |  ------------------
  ------------------
   75|  2.01k|			}
   76|  2.03k|			obj_ptr++;
   77|  2.03k|		} while (obj_ptr != end);
  ------------------
  |  Branch (77:12): [True: 2.01k, False: 18]
  ------------------
   78|     18|	}
   79|    692|}
zend_objects_store_free_object_storage:
   82|  33.5k|{
   83|  33.5k|	zend_object **obj_ptr, **end, *obj;
   84|       |
   85|  33.5k|	if (objects->top <= 1) {
  ------------------
  |  Branch (85:6): [True: 29.0k, False: 4.56k]
  ------------------
   86|  29.0k|		return;
   87|  29.0k|	}
   88|       |
   89|       |	/* Free object contents, but don't free objects themselves, so they show up as leaks.
   90|       |	 * Also add a ref to all objects, so the object can't be freed by something else later. */
   91|  4.56k|	end = objects->object_buckets + 1;
   92|  4.56k|	obj_ptr = objects->object_buckets + objects->top;
   93|       |
   94|  4.56k|	if (fast_shutdown) {
  ------------------
  |  Branch (94:6): [True: 0, False: 4.56k]
  ------------------
   95|      0|		do {
   96|      0|			obj_ptr--;
   97|      0|			obj = *obj_ptr;
   98|      0|			if (IS_OBJ_VALID(obj)) {
  ------------------
  |  |   29|      0|#define IS_OBJ_VALID(o)				(!(((uintptr_t)(o)) & OBJ_BUCKET_INVALID))
  |  |  ------------------
  |  |  |  |   27|      0|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  ------------------
  |  |  |  Branch (29:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   99|      0|				if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  852|      0|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  850|      0|#define IS_OBJ_FREE_CALLED			(1<<9)
  ------------------
  |  Branch (99:9): [True: 0, False: 0]
  ------------------
  100|      0|					GC_ADD_FLAGS(obj, IS_OBJ_FREE_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  101|      0|					if (obj->handlers->free_obj != zend_object_std_dtor
  ------------------
  |  Branch (101:10): [True: 0, False: 0]
  ------------------
  102|      0|					 || (OBJ_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)
  ------------------
  |  |  852|      0|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					 || (OBJ_FLAGS(obj) & IS_OBJ_WEAKLY_REFERENCED)
  ------------------
  |  |  848|      0|#define IS_OBJ_WEAKLY_REFERENCED	GC_PERSISTENT
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
  |  Branch (102:10): [True: 0, False: 0]
  ------------------
  103|      0|					) {
  104|      0|						GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  105|      0|						obj->handlers->free_obj(obj);
  106|      0|					}
  107|      0|				}
  108|      0|			}
  109|      0|		} while (obj_ptr != end);
  ------------------
  |  Branch (109:12): [True: 0, False: 0]
  ------------------
  110|  4.56k|	} else {
  111|  15.5k|		do {
  112|  15.5k|			obj_ptr--;
  113|  15.5k|			obj = *obj_ptr;
  114|  15.5k|			if (IS_OBJ_VALID(obj)) {
  ------------------
  |  |   29|  15.5k|#define IS_OBJ_VALID(o)				(!(((uintptr_t)(o)) & OBJ_BUCKET_INVALID))
  |  |  ------------------
  |  |  |  |   27|  15.5k|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  ------------------
  |  |  |  Branch (29:28): [True: 6.65k, False: 8.89k]
  |  |  ------------------
  ------------------
  115|  6.65k|				if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  852|  6.65k|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|  6.65k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  6.65k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  850|  6.65k|#define IS_OBJ_FREE_CALLED			(1<<9)
  ------------------
  |  Branch (115:9): [True: 6.65k, False: 0]
  ------------------
  116|  6.65k|					GC_ADD_FLAGS(obj, IS_OBJ_FREE_CALLED);
  ------------------
  |  |  780|  6.65k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  6.65k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  6.65k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  6.65k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  6.65k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 6.65k]
  |  |  ------------------
  ------------------
  117|  6.65k|					GC_ADDREF(obj);
  ------------------
  |  |  718|  6.65k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  118|  6.65k|					obj->handlers->free_obj(obj);
  119|  6.65k|				}
  120|  6.65k|			}
  121|  15.5k|		} while (obj_ptr != end);
  ------------------
  |  Branch (121:12): [True: 10.9k, False: 4.56k]
  ------------------
  122|  4.56k|	}
  123|  4.56k|}
zend_objects_store_put:
  140|  29.7k|{
  141|  29.7k|	uint32_t handle;
  142|       |
  143|       |	/* When in shutdown sequence - do not reuse previously freed handles, to make sure
  144|       |	 * the dtors for newly created objects are called in zend_objects_store_call_destructors() loop
  145|       |	 */
  146|  29.7k|	if (EG(objects_store).free_list_head != -1 && EXPECTED(!(EG(flags) & EG_FLAGS_OBJECT_STORE_NO_REUSE))) {
  ------------------
  |  |   45|  29.7k|# define EG(v) (executor_globals.v)
  ------------------
              	if (EG(objects_store).free_list_head != -1 && EXPECTED(!(EG(flags) & EG_FLAGS_OBJECT_STORE_NO_REUSE))) {
  ------------------
  |  |  456|  15.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14.2k, False: 920]
  |  |  ------------------
  ------------------
  |  Branch (146:6): [True: 15.1k, False: 14.6k]
  ------------------
  147|  14.2k|		handle = EG(objects_store).free_list_head;
  ------------------
  |  |   45|  14.2k|# define EG(v) (executor_globals.v)
  ------------------
  148|  14.2k|		EG(objects_store).free_list_head = GET_OBJ_BUCKET_NUMBER(EG(objects_store).object_buckets[handle]);
  ------------------
  |  |   45|  14.2k|# define EG(v) (executor_globals.v)
  ------------------
              		EG(objects_store).free_list_head = GET_OBJ_BUCKET_NUMBER(EG(objects_store).object_buckets[handle]);
  ------------------
  |  |   33|  14.2k|#define GET_OBJ_BUCKET_NUMBER(o)	(((intptr_t)(o)) >> 1)
  ------------------
  149|  15.5k|	} else if (UNEXPECTED(EG(objects_store).top == EG(objects_store).size)) {
  ------------------
  |  |  457|  15.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 15.5k]
  |  |  ------------------
  ------------------
  150|      0|		zend_objects_store_put_cold(object);
  151|      0|		return;
  152|  15.5k|	} else {
  153|  15.5k|		handle = EG(objects_store).top++;
  ------------------
  |  |   45|  15.5k|# define EG(v) (executor_globals.v)
  ------------------
  154|  15.5k|	}
  155|  29.7k|	object->handle = handle;
  156|  29.7k|	EG(objects_store).object_buckets[handle] = object;
  ------------------
  |  |   45|  29.7k|# define EG(v) (executor_globals.v)
  ------------------
  157|  29.7k|}
zend_objects_store_del:
  160|  24.6k|{
  161|  24.6k|	ZEND_ASSERT(GC_REFCOUNT(object) == 0);
  ------------------
  |  |  112|  24.6k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (161:2): [True: 0, False: 24.6k]
  |  Branch (161:2): [True: 24.6k, False: 0]
  ------------------
  162|       |
  163|       |	/* GC might have released this object already. */
  164|  24.6k|	if (UNEXPECTED(GC_TYPE(object) == IS_NULL)) {
  ------------------
  |  |  457|  24.6k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 24.6k]
  |  |  ------------------
  ------------------
  165|      2|		return;
  166|      2|	}
  167|       |
  168|       |	/*	Make sure we hold a reference count during the destructor call
  169|       |		otherwise, when the destructor ends the storage might be freed
  170|       |		when the refcount reaches 0 a second time
  171|       |	 */
  172|  24.6k|	if (!(OBJ_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  852|  24.6k|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|  24.6k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  24.6k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!(OBJ_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
  ------------------
  |  |  849|  24.6k|#define IS_OBJ_DESTRUCTOR_CALLED	(1<<8)
  ------------------
  |  Branch (172:6): [True: 22.3k, False: 2.27k]
  ------------------
  173|  22.3k|		GC_ADD_FLAGS(object, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|  22.3k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  22.3k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  22.3k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  22.3k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  22.3k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 22.3k]
  |  |  ------------------
  ------------------
  174|       |
  175|  22.3k|		if (object->handlers->dtor_obj != zend_objects_destroy_object
  ------------------
  |  Branch (175:7): [True: 179, False: 22.1k]
  ------------------
  176|  22.1k|				|| object->ce->destructor) {
  ------------------
  |  Branch (176:8): [True: 1.67k, False: 20.4k]
  ------------------
  177|  1.85k|			GC_SET_REFCOUNT(object, 1);
  ------------------
  |  |  717|  1.85k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  178|  1.85k|			object->handlers->dtor_obj(object);
  179|  1.85k|			GC_DELREF(object);
  ------------------
  |  |  719|  1.85k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  180|  1.85k|		}
  181|  22.3k|	}
  182|       |
  183|  24.6k|	if (GC_REFCOUNT(object) == 0) {
  ------------------
  |  |  716|  24.6k|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (183:6): [True: 23.0k, False: 1.50k]
  ------------------
  184|  23.0k|		uint32_t handle = object->handle;
  185|  23.0k|		void *ptr;
  186|       |
  187|  23.0k|		ZEND_ASSERT(EG(objects_store).object_buckets != NULL);
  ------------------
  |  |  112|  23.0k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (187:3): [True: 0, False: 23.0k]
  |  Branch (187:3): [True: 23.0k, False: 0]
  ------------------
  188|  23.0k|		ZEND_ASSERT(IS_OBJ_VALID(EG(objects_store).object_buckets[handle]));
  ------------------
  |  |  112|  23.0k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (188:3): [True: 0, False: 23.0k]
  |  Branch (188:3): [True: 23.0k, False: 0]
  ------------------
  189|  23.0k|		EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
  ------------------
  |  |   45|  23.0k|# define EG(v) (executor_globals.v)
  ------------------
              		EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
  ------------------
  |  |   31|  23.0k|#define SET_OBJ_INVALID(o)			((zend_object*)((((uintptr_t)(o)) | OBJ_BUCKET_INVALID)))
  |  |  ------------------
  |  |  |  |   27|  23.0k|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  ------------------
  ------------------
  190|  23.0k|		if (!(OBJ_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  852|  23.0k|#define OBJ_FLAGS(obj)              GC_FLAGS(obj)
  |  |  ------------------
  |  |  |  |  777|  23.0k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  23.0k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (!(OBJ_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
  ------------------
  |  |  850|  23.0k|#define IS_OBJ_FREE_CALLED			(1<<9)
  ------------------
  |  Branch (190:7): [True: 23.0k, False: 0]
  ------------------
  191|  23.0k|			GC_ADD_FLAGS(object, IS_OBJ_FREE_CALLED);
  ------------------
  |  |  780|  23.0k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  23.0k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  23.0k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  23.0k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  23.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 23.0k]
  |  |  ------------------
  ------------------
  192|  23.0k|			GC_SET_REFCOUNT(object, 1);
  ------------------
  |  |  717|  23.0k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  193|  23.0k|			object->handlers->free_obj(object);
  194|  23.0k|		}
  195|  23.0k|		ptr = ((char*)object) - object->handlers->offset;
  196|  23.0k|		GC_REMOVE_FROM_BUFFER(object);
  ------------------
  |  |   76|  23.0k|#define GC_REMOVE_FROM_BUFFER(p) do { \
  |  |   77|  23.0k|		zend_refcounted *_p = (zend_refcounted*)(p); \
  |  |   78|  23.0k|		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  775|  23.0k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  759|  23.0k|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |  |  Branch (78:7): [True: 1.44k, False: 21.6k]
  |  |  ------------------
  |  |   79|  1.44k|			gc_remove_from_buffer(_p); \
  |  |   80|  1.44k|		} \
  |  |   81|  23.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (81:11): [Folded, False: 23.0k]
  |  |  ------------------
  ------------------
  197|  23.0k|		efree(ptr);
  ------------------
  |  |  154|  23.0k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  23.0k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  23.0k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  23.0k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  23.0k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|  23.0k|		ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(handle);
  ------------------
  |  |   39|  23.0k|#define ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(h) do { \
  |  |   40|  23.0k|		SET_OBJ_BUCKET_NUMBER(EG(objects_store).object_buckets[(h)], EG(objects_store).free_list_head); \
  |  |  ------------------
  |  |  |  |   35|  23.0k|#define SET_OBJ_BUCKET_NUMBER(o, n)	do { \
  |  |  |  |   36|  23.0k|		(o) = (zend_object*)((((uintptr_t)(n)) << 1) | OBJ_BUCKET_INVALID); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  23.0k|#define OBJ_BUCKET_INVALID			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |   37|  23.0k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:11): [Folded, False: 23.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|  23.0k|		EG(objects_store).free_list_head = (h); \
  |  |  ------------------
  |  |  |  |   45|  23.0k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |   42|  23.0k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (42:11): [Folded, False: 23.0k]
  |  |  ------------------
  ------------------
  199|  23.0k|	}
  200|  24.6k|}
zend_get_property_info_for_slot_slow:
  204|      3|{
  205|      3|	uintptr_t offset = OBJ_PROP_SLOT_TO_OFFSET(obj, slot);
  ------------------
  |  |  488|      3|	((uintptr_t)(slot) - (uintptr_t)(obj))
  ------------------
  206|      3|	zend_property_info *prop_info;
  207|     12|	ZEND_HASH_MAP_FOREACH_PTR(&obj->ce->properties_info, prop_info) {
  ------------------
  |  | 1341|      3|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      3|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      3|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      3|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      3|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      3|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      3|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      3|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      3|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      3|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      3|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 3]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      3|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      3|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (207:2): [True: 0, False: 3]
  |  Branch (207:2): [True: 3, False: 0]
  ------------------
  208|     12|		if (prop_info->offset == offset) {
  ------------------
  |  Branch (208:7): [True: 3, False: 0]
  ------------------
  209|      3|			return prop_info;
  210|      3|		}
  211|     12|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  212|      0|	return NULL;
  213|      3|}

php_date.c:zend_object_alloc:
   92|    663|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|    663|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    663|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    663|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    663|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    663|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|    663|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|    663|	return obj;
   96|    663|}
php_date.c:zend_object_properties_size:
   83|    663|{
   84|    663|	return sizeof(zval) *
   85|    663|		(ce->default_properties_count -
   86|    663|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|    663|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 0, False: 663]
  ------------------
   87|    663|}
hash.c:zend_object_alloc:
   92|      2|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|      2|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|      2|	return obj;
   96|      2|}
hash.c:zend_object_properties_size:
   83|      2|{
   84|      2|	return sizeof(zval) *
   85|      2|		(ce->default_properties_count -
   86|      2|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|      2|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 2, False: 0]
  ------------------
   87|      2|}
random.c:zend_object_alloc:
   92|     12|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|     12|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|     12|	return obj;
   96|     12|}
random.c:zend_object_properties_size:
   83|     12|{
   84|     12|	return sizeof(zval) *
   85|     12|		(ce->default_properties_count -
   86|     12|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|     12|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 6, False: 6]
  ------------------
   87|     12|}
randomizer.c:zend_object_release:
   74|      2|{
   75|      2|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 0, False: 2]
  ------------------
   76|      0|		zend_objects_store_del(obj);
   77|      2|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   78|      2|		gc_possible_root((zend_refcounted*)obj);
   79|      2|	}
   80|      2|}
php_reflection.c:zend_object_store_ctor_failed:
   67|      1|{
   68|      1|	GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      1|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      1|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
   69|      1|}
php_reflection.c:zend_object_alloc:
   92|  1.35k|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|  1.35k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  1.35k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  1.35k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  1.35k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  1.35k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|  1.35k|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|  1.35k|	return obj;
   96|  1.35k|}
php_reflection.c:zend_object_properties_size:
   83|  1.35k|{
   84|  1.35k|	return sizeof(zval) *
   85|  1.35k|		(ce->default_properties_count -
   86|  1.35k|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|  1.35k|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 0, False: 1.35k]
  ------------------
   87|  1.35k|}
spl_array.c:zend_object_alloc:
   92|     25|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|     25|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|     25|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|     25|	return obj;
   96|     25|}
spl_array.c:zend_object_properties_size:
   83|     25|{
   84|     25|	return sizeof(zval) *
   85|     25|		(ce->default_properties_count -
   86|     25|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|     25|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 25, False: 0]
  ------------------
   87|     25|}
spl_fixedarray.c:zend_object_alloc:
   92|      7|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|      7|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|      7|	return obj;
   96|      7|}
spl_fixedarray.c:zend_object_properties_size:
   83|      7|{
   84|      7|	return sizeof(zval) *
   85|      7|		(ce->default_properties_count -
   86|      7|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|      7|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 7, False: 0]
  ------------------
   87|      7|}
spl_iterators.c:zend_object_alloc:
   92|     38|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|     38|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     38|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     38|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     38|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     38|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|     38|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|     38|	return obj;
   96|     38|}
spl_iterators.c:zend_object_properties_size:
   83|     38|{
   84|     38|	return sizeof(zval) *
   85|     38|		(ce->default_properties_count -
   86|     38|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|     38|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 0, False: 38]
  ------------------
   87|     38|}
spl_iterators.c:zend_object_release:
   74|      1|{
   75|      1|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 1, False: 0]
  ------------------
   76|      1|		zend_objects_store_del(obj);
   77|      1|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   78|      0|		gc_possible_root((zend_refcounted*)obj);
   79|      0|	}
   80|      1|}
array.c:zend_get_typed_property_info_for_slot:
  131|      1|{
  132|      1|	zend_property_info *prop_info = zend_get_property_info_for_slot(obj, slot);
  133|      1|	if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      1|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      1|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 1, False: 0]
  ------------------
  134|      0|		return prop_info;
  135|      0|	}
  136|      1|	return NULL;
  137|      1|}
array.c:zend_get_property_info_for_slot:
  115|      1|{
  116|      1|	if (UNEXPECTED(zend_object_is_lazy_proxy(obj))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  117|      0|		return zend_lazy_object_get_property_info_for_slot(obj, slot);
  118|      0|	}
  119|      1|	zend_property_info **table = obj->ce->properties_info_table;
  120|      1|	intptr_t prop_num = slot - obj->properties_table;
  121|      1|	ZEND_ASSERT(prop_num >= 0 && prop_num < obj->ce->default_properties_count);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (121:2): [True: 0, False: 1]
  |  Branch (121:2): [True: 0, False: 0]
  |  Branch (121:2): [True: 1, False: 0]
  |  Branch (121:2): [True: 1, False: 0]
  ------------------
  122|      1|	if (table[prop_num]) {
  ------------------
  |  Branch (122:6): [True: 0, False: 1]
  ------------------
  123|      0|		return table[prop_num];
  124|      1|	} else {
  125|      1|		return zend_get_property_info_for_slot_slow(obj, slot);
  126|      1|	}
  127|      1|}
basic_functions.c:zend_object_release:
   74|     13|{
   75|     13|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|     13|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 10, False: 3]
  ------------------
   76|     10|		zend_objects_store_del(obj);
   77|     10|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
   78|      2|		gc_possible_root((zend_refcounted*)obj);
   79|      2|	}
   80|     13|}
var_unserializer.c:zend_get_typed_property_info_for_slot:
  131|      8|{
  132|      8|	zend_property_info *prop_info = zend_get_property_info_for_slot(obj, slot);
  133|      8|	if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      8|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      8|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 5, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 8, False: 0]
  ------------------
  134|      5|		return prop_info;
  135|      5|	}
  136|      3|	return NULL;
  137|      8|}
var_unserializer.c:zend_get_property_info_for_slot:
  115|      8|{
  116|      8|	if (UNEXPECTED(zend_object_is_lazy_proxy(obj))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  117|      0|		return zend_lazy_object_get_property_info_for_slot(obj, slot);
  118|      0|	}
  119|      8|	zend_property_info **table = obj->ce->properties_info_table;
  120|      8|	intptr_t prop_num = slot - obj->properties_table;
  121|      8|	ZEND_ASSERT(prop_num >= 0 && prop_num < obj->ce->default_properties_count);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (121:2): [True: 0, False: 8]
  |  Branch (121:2): [True: 0, False: 0]
  |  Branch (121:2): [True: 8, False: 0]
  |  Branch (121:2): [True: 8, False: 0]
  ------------------
  122|      8|	if (table[prop_num]) {
  ------------------
  |  Branch (122:6): [True: 8, False: 0]
  ------------------
  123|      8|		return table[prop_num];
  124|      8|	} else {
  125|      0|		return zend_get_property_info_for_slot_slow(obj, slot);
  126|      0|	}
  127|      8|}
var.c:zend_get_typed_property_info_for_slot:
  131|    115|{
  132|    115|	zend_property_info *prop_info = zend_get_property_info_for_slot(obj, slot);
  133|    115|	if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|    115|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    115|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 77, False: 38]
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 115, False: 0]
  ------------------
  134|     77|		return prop_info;
  135|     77|	}
  136|     38|	return NULL;
  137|    115|}
var.c:zend_get_property_info_for_slot:
  115|    115|{
  116|    115|	if (UNEXPECTED(zend_object_is_lazy_proxy(obj))) {
  ------------------
  |  |  457|    115|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 115]
  |  |  ------------------
  ------------------
  117|      0|		return zend_lazy_object_get_property_info_for_slot(obj, slot);
  118|      0|	}
  119|    115|	zend_property_info **table = obj->ce->properties_info_table;
  120|    115|	intptr_t prop_num = slot - obj->properties_table;
  121|    115|	ZEND_ASSERT(prop_num >= 0 && prop_num < obj->ce->default_properties_count);
  ------------------
  |  |  112|    115|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (121:2): [True: 0, False: 115]
  |  Branch (121:2): [True: 0, False: 0]
  |  Branch (121:2): [True: 115, False: 0]
  |  Branch (121:2): [True: 115, False: 0]
  ------------------
  122|    115|	if (table[prop_num]) {
  ------------------
  |  Branch (122:6): [True: 114, False: 1]
  ------------------
  123|    114|		return table[prop_num];
  124|    114|	} else {
  125|      1|		return zend_get_property_info_for_slot_slow(obj, slot);
  126|      1|	}
  127|    115|}
php_uri.c:zend_object_alloc:
   92|      4|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|      4|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|      4|	return obj;
   96|      4|}
php_uri.c:zend_object_properties_size:
   83|      4|{
   84|      4|	return sizeof(zval) *
   85|      4|		(ce->default_properties_count -
   86|      4|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|      4|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 4, False: 0]
  ------------------
   87|      4|}
zend_API.c:zend_object_release:
   74|      3|{
   75|      3|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 0, False: 3]
  ------------------
   76|      0|		zend_objects_store_del(obj);
   77|      3|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
   78|      0|		gc_possible_root((zend_refcounted*)obj);
   79|      0|	}
   80|      3|}
zend_API.c:zend_object_store_ctor_failed:
   67|      8|{
   68|      8|	GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      8|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      8|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
   69|      8|}
zend_ast.c:zend_check_method_accessible:
  140|      1|{
  141|      1|	if (!(fn->common.fn_flags & ZEND_ACC_PUBLIC)
  ------------------
  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (141:6): [True: 0, False: 1]
  ------------------
  142|      0|		&& fn->common.scope != scope
  ------------------
  |  Branch (142:6): [True: 0, False: 0]
  ------------------
  143|      0|		&& (UNEXPECTED(fn->common.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  144|      0|			|| UNEXPECTED(!zend_check_protected(zend_get_function_root_class(fn), scope)))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  145|      0|		return false;
  146|      0|	}
  147|       |
  148|      1|	return true;
  149|      1|}
zend_autoload.c:zend_object_release:
   74|     11|{
   75|     11|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|     11|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 9, False: 2]
  ------------------
   76|      9|		zend_objects_store_del(obj);
   77|      9|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   78|      2|		gc_possible_root((zend_refcounted*)obj);
   79|      2|	}
   80|     11|}
zend_builtin_functions.c:zend_check_method_accessible:
  140|      4|{
  141|      4|	if (!(fn->common.fn_flags & ZEND_ACC_PUBLIC)
  ------------------
  |  |  219|      4|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (141:6): [True: 0, False: 4]
  ------------------
  142|      0|		&& fn->common.scope != scope
  ------------------
  |  Branch (142:6): [True: 0, False: 0]
  ------------------
  143|      0|		&& (UNEXPECTED(fn->common.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  144|      0|			|| UNEXPECTED(!zend_check_protected(zend_get_function_root_class(fn), scope)))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  145|      0|		return false;
  146|      0|	}
  147|       |
  148|      4|	return true;
  149|      4|}
zend_enum.c:zend_object_alloc:
   92|     85|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|     85|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     85|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     85|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     85|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     85|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|     85|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|     85|	return obj;
   96|     85|}
zend_enum.c:zend_object_properties_size:
   83|     85|{
   84|     85|	return sizeof(zval) *
   85|     85|		(ce->default_properties_count -
   86|     85|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|     85|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 3, False: 82]
  ------------------
   87|     85|}
zend_exceptions.c:zend_object_release:
   74|  7.50k|{
   75|  7.50k|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|  7.50k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 7.22k, False: 284]
  ------------------
   76|  7.22k|		zend_objects_store_del(obj);
   77|  7.22k|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|    284|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 280, False: 4]
  |  |  ------------------
  ------------------
   78|    280|		gc_possible_root((zend_refcounted*)obj);
   79|    280|	}
   80|  7.50k|}
zend_execute_API.c:zend_object_release:
   74|      3|{
   75|      3|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 0, False: 3]
  ------------------
   76|      0|		zend_objects_store_del(obj);
   77|      3|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
   78|      1|		gc_possible_root((zend_refcounted*)obj);
   79|      1|	}
   80|      3|}
zend_execute.c:zend_object_release:
   74|  3.84k|{
   75|  3.84k|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|  3.84k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 1.22k, False: 2.61k]
  ------------------
   76|  1.22k|		zend_objects_store_del(obj);
   77|  2.61k|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|  2.61k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.04k, False: 579]
  |  |  ------------------
  ------------------
   78|  2.04k|		gc_possible_root((zend_refcounted*)obj);
   79|  2.04k|	}
   80|  3.84k|}
zend_execute.c:zend_object_store_ctor_failed:
   67|    698|{
   68|    698|	GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|    698|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    698|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    698|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    698|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    698|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 698]
  |  |  ------------------
  ------------------
   69|    698|}
zend_execute.c:zend_get_property_info_for_slot:
  115|      1|{
  116|      1|	if (UNEXPECTED(zend_object_is_lazy_proxy(obj))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  117|      0|		return zend_lazy_object_get_property_info_for_slot(obj, slot);
  118|      0|	}
  119|      1|	zend_property_info **table = obj->ce->properties_info_table;
  120|      1|	intptr_t prop_num = slot - obj->properties_table;
  121|      1|	ZEND_ASSERT(prop_num >= 0 && prop_num < obj->ce->default_properties_count);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (121:2): [True: 0, False: 1]
  |  Branch (121:2): [True: 0, False: 0]
  |  Branch (121:2): [True: 1, False: 0]
  |  Branch (121:2): [True: 1, False: 0]
  ------------------
  122|      1|	if (table[prop_num]) {
  ------------------
  |  Branch (122:6): [True: 1, False: 0]
  ------------------
  123|      1|		return table[prop_num];
  124|      1|	} else {
  125|      0|		return zend_get_property_info_for_slot_slow(obj, slot);
  126|      0|	}
  127|      1|}
zend_generators.c:zend_object_release:
   74|     28|{
   75|     28|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|     28|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 15, False: 13]
  ------------------
   76|     15|		zend_objects_store_del(obj);
   77|     15|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 5]
  |  |  ------------------
  ------------------
   78|      8|		gc_possible_root((zend_refcounted*)obj);
   79|      8|	}
   80|     28|}
zend_lazy_objects.c:zend_object_release:
   74|      4|{
   75|      4|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      4|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 4, False: 0]
  ------------------
   76|      4|		zend_objects_store_del(obj);
   77|      4|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   78|      0|		gc_possible_root((zend_refcounted*)obj);
   79|      0|	}
   80|      4|}
zend_object_handlers.c:zend_object_release:
   74|    125|{
   75|    125|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|    125|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 6, False: 119]
  ------------------
   76|      6|		zend_objects_store_del(obj);
   77|    119|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|    119|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 78, False: 41]
  |  |  ------------------
  ------------------
   78|     78|		gc_possible_root((zend_refcounted*)obj);
   79|     78|	}
   80|    125|}
zend_object_handlers.c:zend_check_method_accessible:
  140|      9|{
  141|      9|	if (!(fn->common.fn_flags & ZEND_ACC_PUBLIC)
  ------------------
  |  |  219|      9|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (141:6): [True: 9, False: 0]
  ------------------
  142|      9|		&& fn->common.scope != scope
  ------------------
  |  Branch (142:6): [True: 9, False: 0]
  ------------------
  143|      9|		&& (UNEXPECTED(fn->common.fn_flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
  144|      9|			|| UNEXPECTED(!zend_check_protected(zend_get_function_root_class(fn), scope)))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  145|      9|		return false;
  146|      9|	}
  147|       |
  148|      0|	return true;
  149|      9|}
zend_object_handlers.c:zend_object_store_ctor_failed:
   67|      9|{
   68|      9|	GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      9|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      9|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      9|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      9|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
   69|      9|}
zend_objects.c:zend_get_property_info_for_slot_self:
  103|     28|{
  104|     28|	zend_property_info **table = obj->ce->properties_info_table;
  105|     28|	intptr_t prop_num = slot - obj->properties_table;
  106|     28|	ZEND_ASSERT(prop_num >= 0 && prop_num < obj->ce->default_properties_count);
  ------------------
  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (106:2): [True: 0, False: 28]
  |  Branch (106:2): [True: 0, False: 0]
  |  Branch (106:2): [True: 28, False: 0]
  |  Branch (106:2): [True: 28, False: 0]
  ------------------
  107|     28|	if (table[prop_num]) {
  ------------------
  |  Branch (107:6): [True: 27, False: 1]
  ------------------
  108|     27|		return table[prop_num];
  109|     27|	} else {
  110|      1|		return zend_get_property_info_for_slot_slow(obj, slot);
  111|      1|	}
  112|     28|}
zend_objects.c:zend_object_release:
   74|    185|{
   75|    185|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|    185|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 0, False: 185]
  ------------------
   76|      0|		zend_objects_store_del(obj);
   77|    185|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|    185|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 165, False: 20]
  |  |  ------------------
  ------------------
   78|    165|		gc_possible_root((zend_refcounted*)obj);
   79|    165|	}
   80|    185|}
zend_objects.c:zend_object_properties_size:
   83|  26.5k|{
   84|  26.5k|	return sizeof(zval) *
   85|  26.5k|		(ce->default_properties_count -
   86|  26.5k|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|  26.5k|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 61, False: 26.4k]
  ------------------
   87|  26.5k|}
zend_weakrefs.c:zend_object_alloc:
   92|     25|static zend_always_inline void *zend_object_alloc(size_t obj_size, const zend_class_entry *ce) {
   93|       |	void *obj = emalloc(obj_size + zend_object_properties_size(ce));
  ------------------
  |  |  150|     25|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|     25|	memset(obj, 0, obj_size - sizeof(zend_object));
   95|     25|	return obj;
   96|     25|}
zend_weakrefs.c:zend_object_properties_size:
   83|     25|{
   84|     25|	return sizeof(zval) *
   85|     25|		(ce->default_properties_count -
   86|     25|			((ce->ce_flags & ZEND_ACC_USE_GUARDS) ? 0 : 1));
  ------------------
  |  |  295|     25|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
  |  Branch (86:5): [True: 0, False: 25]
  ------------------
   87|     25|}
zend.c:zend_object_release:
   74|      1|{
   75|      1|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 1, False: 0]
  ------------------
   76|      1|		zend_objects_store_del(obj);
   77|      1|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   78|      0|		gc_possible_root((zend_refcounted*)obj);
   79|      0|	}
   80|      1|}
fuzzer-sapi.c:zend_object_release:
   74|  3.71k|{
   75|  3.71k|	if (GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|  3.71k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (75:6): [True: 3.71k, False: 2]
  ------------------
   76|  3.71k|		zend_objects_store_del(obj);
   77|  3.71k|	} else if (UNEXPECTED(GC_MAY_LEAK((zend_refcounted*)obj))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   78|      0|		gc_possible_root((zend_refcounted*)obj);
   79|      0|	}
   80|  3.71k|}

zend_observer_startup:
   50|      2|{
   51|      2|	zend_llist_init(&zend_observers_fcall_list, sizeof(zend_observer_fcall_init), NULL, 1);
   52|      2|	zend_llist_init(&zend_observer_function_declared_callbacks, sizeof(zend_observer_function_declared_cb), NULL, 1);
   53|      2|	zend_llist_init(&zend_observer_class_linked_callbacks, sizeof(zend_observer_class_linked_cb), NULL, 1);
   54|      2|	zend_llist_init(&zend_observer_error_callbacks, sizeof(zend_observer_error_cb), NULL, 1);
   55|      2|	zend_llist_init(&zend_observer_fiber_init, sizeof(zend_observer_fiber_init_handler), NULL, 1);
   56|      2|	zend_llist_init(&zend_observer_fiber_switch, sizeof(zend_observer_fiber_switch_handler), NULL, 1);
   57|      2|	zend_llist_init(&zend_observer_fiber_destroy, sizeof(zend_observer_fiber_destroy_handler), NULL, 1);
   58|       |
   59|      2|	zend_observer_fcall_op_array_extension = -1;
   60|      2|	zend_observer_fcall_internal_function_extension = -1;
   61|      2|}
zend_observer_post_startup:
   64|      2|{
   65|      2|	if (zend_observers_fcall_list.count) {
  ------------------
  |  Branch (65:6): [True: 0, False: 2]
  ------------------
   66|       |		/* We don't want to get an extension handle unless an ext installs an observer
   67|       |		 * Allocate each a begin and an end pointer */
   68|      0|		zend_observer_fcall_op_array_extension =
   69|      0|			zend_get_op_array_extension_handles("Zend Observer", (int) zend_observers_fcall_list.count * 2);
   70|       |
   71|      0|		zend_observer_fcall_internal_function_extension =
   72|      0|			zend_get_internal_function_extension_handles("Zend Observer", (int) zend_observers_fcall_list.count * 2);
   73|       |
   74|       |		/* ZEND_CALL_TRAMPOLINE has SPEC(OBSERVER) but zend_init_call_trampoline_op()
   75|       |		 * is called before any extensions have registered as an observer. So we
   76|       |		 * adjust the offset to the observed handler when we know we need to observe. */
   77|      0|		ZEND_VM_SET_OPCODE_HANDLER(&EG(call_trampoline_op));
  ------------------
  |  |   48|      0|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
   78|       |
   79|       |		/* ZEND_HANDLE_EXCEPTION also has SPEC(OBSERVER) and no observer extensions
   80|       |		 * exist when zend_init_exception_op() is called. */
   81|      0|		ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op));
  ------------------
  |  |   48|      0|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
   82|      0|		ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op) + 1);
  ------------------
  |  |   48|      0|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
   83|      0|		ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op) + 2);
  ------------------
  |  |   48|      0|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
   84|       |
   85|       |		// Add an observer temporary to store previous observed frames
   86|      0|		zend_internal_function *zif;
   87|      0|		ZEND_HASH_FOREACH_PTR(CG(function_table), zif) {
  ------------------
  |  | 1133|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1134|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|      0|			++zif->T;
   89|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   90|      0|		zend_class_entry *ce;
   91|      0|		ZEND_HASH_MAP_FOREACH_PTR(CG(class_table), ce) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (91:3): [True: 0, False: 0]
  |  Branch (91:3): [True: 0, False: 0]
  ------------------
   92|      0|			ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, zif) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (92:4): [True: 0, False: 0]
  |  Branch (92:4): [True: 0, False: 0]
  ------------------
   93|      0|				++zif->T;
   94|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   95|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   96|      0|	}
   97|      2|}
zend_observer_activate:
  100|  33.5k|{
  101|  33.5k|    EG(current_observed_frame) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  102|  33.5k|}
zend_observer_fcall_end_all:
  319|    289|{
  320|    289|	zend_execute_data *execute_data = EG(current_observed_frame), *original_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
              	zend_execute_data *execute_data = EG(current_observed_frame), *original_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  321|    289|    EG(current_observed_frame) = NULL;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  322|    289|	while (execute_data) {
  ------------------
  |  Branch (322:9): [True: 0, False: 289]
  ------------------
  323|      0|		EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  324|      0|		call_end_observers(execute_data, NULL);
  325|      0|		execute_data = *prev_observed_frame(execute_data);
  326|      0|	}
  327|    289|	EG(current_execute_data) = original_execute_data;
  ------------------
  |  |   45|    289|# define EG(v) (executor_globals.v)
  ------------------
  328|    289|}
zend_observer_error_register:
  367|      2|{
  368|       |	zend_observer_errors_observed = true;
  369|      2|	zend_llist_add_element(&zend_observer_error_callbacks, &cb);
  370|      2|}
_zend_observer_error_notify:
  373|  53.4k|{
  374|   106k|	for (const zend_llist_element *element = zend_observer_error_callbacks.head; element; element = element->next) {
  ------------------
  |  Branch (374:79): [True: 53.4k, False: 53.4k]
  ------------------
  375|  53.4k|		zend_observer_error_cb callback = *(zend_observer_error_cb *) (element->data);
  376|  53.4k|		callback(type, error_filename, error_lineno, message);
  377|  53.4k|	}
  378|  53.4k|}
zend_observer_fiber_init_notify:
  396|    289|{
  397|    289|	zend_observer_fiber_init_handler callback;
  398|       |
  399|    289|	initializing->top_observed_frame = NULL;
  400|       |
  401|    289|	for (const zend_llist_element *element = zend_observer_fiber_init.head; element; element = element->next) {
  ------------------
  |  Branch (401:74): [True: 0, False: 289]
  ------------------
  402|      0|		callback = *(zend_observer_fiber_init_handler *) element->data;
  403|      0|		callback(initializing);
  404|      0|	}
  405|    289|}
zend_observer_fiber_switch_notify:
  408|  1.13k|{
  409|  1.13k|	zend_observer_fiber_switch_handler callback;
  410|       |
  411|  1.13k|	if (from->status == ZEND_FIBER_STATUS_DEAD) {
  ------------------
  |  Branch (411:6): [True: 289, False: 849]
  ------------------
  412|    289|		zend_observer_fcall_end_all(); // fiber is either finished (call will do nothing) or has bailed out
  413|    289|	}
  414|       |
  415|  1.13k|	for (const zend_llist_element *element = zend_observer_fiber_switch.head; element; element = element->next) {
  ------------------
  |  Branch (415:76): [True: 0, False: 1.13k]
  ------------------
  416|      0|		callback = *(zend_observer_fiber_switch_handler *) element->data;
  417|      0|		callback(from, to);
  418|      0|	}
  419|       |
  420|  1.13k|	from->top_observed_frame = EG(current_observed_frame);
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  421|  1.13k|    EG(current_observed_frame) = to->top_observed_frame;
  ------------------
  |  |   45|  1.13k|# define EG(v) (executor_globals.v)
  ------------------
  422|  1.13k|}
zend_observer_fiber_destroy_notify:
  425|    289|{
  426|    289|	zend_observer_fiber_destroy_handler callback;
  427|       |
  428|    289|	for (const zend_llist_element *element = zend_observer_fiber_destroy.head; element; element = element->next) {
  ------------------
  |  Branch (428:77): [True: 0, False: 289]
  ------------------
  429|      0|		callback = *(zend_observer_fiber_destroy_handler *) element->data;
  430|      0|		callback(destroying);
  431|      0|	}
  432|    289|}

zend_API.c:zend_observer_class_linked_notify:
  145|     17|static inline void zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name) {
  146|     17|	if (UNEXPECTED(zend_observer_class_linked_observed)) {
  ------------------
  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  147|      0|		_zend_observer_class_linked_notify(ce, name);
  148|      0|	}
  149|     17|}
zend_compile.c:zend_observer_function_declared_notify:
  135|    462|static inline void zend_observer_function_declared_notify(zend_op_array *op_array, zend_string *name) {
  136|    462|    if (UNEXPECTED(zend_observer_function_declared_observed)) {
  ------------------
  |  |  457|    462|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 462]
  |  |  ------------------
  ------------------
  137|      0|		_zend_observer_function_declared_notify(op_array, name);
  138|      0|	}
  139|    462|}
zend_compile.c:zend_observer_class_linked_notify:
  145|  1.15k|static inline void zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name) {
  146|  1.15k|	if (UNEXPECTED(zend_observer_class_linked_observed)) {
  ------------------
  |  |  457|  1.15k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.15k]
  |  |  ------------------
  ------------------
  147|      0|		_zend_observer_class_linked_notify(ce, name);
  148|      0|	}
  149|  1.15k|}
zend_exceptions.c:zend_observer_error_notify:
  155|    673|static inline void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message) {
  156|    673|	if (UNEXPECTED(zend_observer_errors_observed)) {
  ------------------
  |  |  457|    673|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 673, False: 0]
  |  |  ------------------
  ------------------
  157|    673|		_zend_observer_error_notify(type, error_filename, error_lineno, message);
  158|    673|	}
  159|    673|}
zend_inheritance.c:zend_observer_class_linked_notify:
  145|    121|static inline void zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name) {
  146|    121|	if (UNEXPECTED(zend_observer_class_linked_observed)) {
  ------------------
  |  |  457|    121|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 121]
  |  |  ------------------
  ------------------
  147|      0|		_zend_observer_class_linked_notify(ce, name);
  148|      0|	}
  149|    121|}
zend.c:zend_observer_error_notify:
  155|  52.7k|static inline void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message) {
  156|  52.7k|	if (UNEXPECTED(zend_observer_errors_observed)) {
  ------------------
  |  |  457|  52.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 52.7k, False: 0]
  |  |  ------------------
  ------------------
  157|  52.7k|		_zend_observer_error_notify(type, error_filename, error_lineno, message);
  158|  52.7k|	}
  159|  52.7k|}

init_op_array:
   48|  6.59k|{
   49|  6.59k|	op_array->type = type;
   50|  6.59k|	op_array->arg_flags[0] = 0;
   51|  6.59k|	op_array->arg_flags[1] = 0;
   52|  6.59k|	op_array->arg_flags[2] = 0;
   53|       |
   54|  6.59k|	op_array->refcount = (uint32_t *) emalloc(sizeof(uint32_t));
  ------------------
  |  |  150|  6.59k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  6.59k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.59k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  6.59k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.59k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   55|  6.59k|	*op_array->refcount = 1;
   56|  6.59k|	op_array->last = 0;
   57|  6.59k|	op_array->opcodes = emalloc(initial_ops_size * sizeof(zend_op));
  ------------------
  |  |  150|  6.59k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  6.59k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.59k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  6.59k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.59k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|       |
   59|  6.59k|	op_array->last_var = 0;
   60|  6.59k|	op_array->vars = NULL;
   61|       |
   62|  6.59k|	op_array->T = 0;
   63|       |
   64|  6.59k|	op_array->function_name = NULL;
   65|  6.59k|	op_array->filename = zend_string_copy(zend_get_compiled_filename());
   66|  6.59k|	op_array->doc_comment = NULL;
   67|  6.59k|	op_array->attributes = NULL;
   68|       |
   69|  6.59k|	op_array->arg_info = NULL;
   70|  6.59k|	op_array->num_args = 0;
   71|  6.59k|	op_array->required_num_args = 0;
   72|       |
   73|  6.59k|	op_array->scope = NULL;
   74|  6.59k|	op_array->prototype = NULL;
   75|  6.59k|	op_array->prop_info = NULL;
   76|       |
   77|  6.59k|	op_array->live_range = NULL;
   78|  6.59k|	op_array->try_catch_array = NULL;
   79|  6.59k|	op_array->last_live_range = 0;
   80|       |
   81|  6.59k|	op_array->static_variables = NULL;
   82|  6.59k|	ZEND_MAP_PTR_INIT(op_array->static_variables_ptr, NULL);
  ------------------
  |  |   38|  6.59k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  6.59k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  6.59k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  6.59k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 6.59k]
  |  |  ------------------
  ------------------
   83|  6.59k|	op_array->last_try_catch = 0;
   84|       |
   85|  6.59k|	op_array->fn_flags = 0;
   86|  6.59k|	op_array->fn_flags2 = 0;
   87|       |
   88|  6.59k|	op_array->last_literal = 0;
   89|  6.59k|	op_array->literals = NULL;
   90|       |
   91|  6.59k|	op_array->num_dynamic_func_defs = 0;
   92|  6.59k|	op_array->dynamic_func_defs = NULL;
   93|       |
   94|  6.59k|	ZEND_MAP_PTR_INIT(op_array->run_time_cache, NULL);
  ------------------
  |  |   38|  6.59k|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|  6.59k|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|  6.59k|	ptr ## __ptr
  |  |  ------------------
  |  |   40|  6.59k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 6.59k]
  |  |  ------------------
  ------------------
   95|  6.59k|	op_array->cache_size = zend_op_array_extension_handles * sizeof(void*);
   96|       |
   97|  6.59k|	memset(op_array->reserved, 0, ZEND_MAX_RESERVED_RESOURCES * sizeof(void*));
  ------------------
  |  |  554|  6.59k|#define ZEND_MAX_RESERVED_RESOURCES	6
  ------------------
   98|       |
   99|  6.59k|	if (zend_extension_flags & ZEND_EXTENSIONS_HAVE_OP_ARRAY_CTOR) {
  ------------------
  |  |  137|  6.59k|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_CTOR         (1<<0)
  ------------------
  |  Branch (99:6): [True: 0, False: 6.59k]
  ------------------
  100|      0|		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_op_array_ctor_handler, op_array);
  101|      0|	}
  102|  6.59k|}
zend_type_release:
  112|  2.05k|ZEND_API void zend_type_release(zend_type type, bool persistent) {
  113|  2.05k|	if (ZEND_TYPE_HAS_LIST(type)) {
  ------------------
  |  |  166|  2.05k|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|  2.05k|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 65, False: 1.99k]
  |  |  ------------------
  ------------------
  114|     65|		zend_type *list_type;
  115|    192|		ZEND_TYPE_LIST_FOREACH_MUTABLE(ZEND_TYPE_LIST(type), list_type) {
  ------------------
  |  |  202|     65|#define ZEND_TYPE_LIST_FOREACH_MUTABLE(list, type_ptr) do { \
  |  |  203|     65|	zend_type *_list = (list)->types; \
  |  |  204|     65|	const zend_type *_end = _list + (list)->num_types; \
  |  |  205|    192|	for (; _list < _end; _list++) { \
  |  |  ------------------
  |  |  |  Branch (205:9): [True: 127, False: 65]
  |  |  ------------------
  |  |  206|    127|		type_ptr = _list;
  ------------------
  116|    192|			zend_type_release(*list_type, persistent);
  117|    192|		} ZEND_TYPE_LIST_FOREACH_END();
  ------------------
  |  |  209|    127|	} \
  |  |  210|     65|} while (0)
  |  |  ------------------
  |  |  |  Branch (210:10): [Folded, False: 65]
  |  |  ------------------
  ------------------
  118|     65|		if (!ZEND_TYPE_USES_ARENA(type)) {
  ------------------
  |  |  178|     65|	((((t).type_mask) & _ZEND_TYPE_ARENA_BIT) != 0)
  |  |  ------------------
  |  |  |  |  141|     65|#define _ZEND_TYPE_ARENA_BIT (1u << 20)
  |  |  ------------------
  ------------------
  |  Branch (118:7): [True: 0, False: 65]
  ------------------
  119|      0|			pefree(ZEND_TYPE_LIST(type), persistent);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  120|      0|		}
  121|  1.99k|	} else if (ZEND_TYPE_HAS_NAME(type)) {
  ------------------
  |  |  160|  1.99k|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|  1.99k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 315, False: 1.67k]
  |  |  ------------------
  ------------------
  122|    315|		zend_string_release(ZEND_TYPE_NAME(type));
  ------------------
  |  |  184|    315|	((zend_string *) (t).ptr)
  ------------------
  123|    315|	}
  124|  2.05k|}
zend_free_internal_arg_info:
  127|     64|		bool persistent) {
  128|     64|	if (function->arg_info) {
  ------------------
  |  Branch (128:6): [True: 64, False: 0]
  ------------------
  129|     64|		ZEND_ASSERT((persistent || (function->fn_flags & ZEND_ACC_NEVER_CACHE))
  ------------------
  |  |  112|     64|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (129:3): [True: 64, False: 0]
  |  Branch (129:3): [True: 0, False: 0]
  |  Branch (129:3): [True: 0, False: 0]
  |  Branch (129:3): [True: 64, False: 0]
  |  Branch (129:3): [True: 0, False: 0]
  |  Branch (129:3): [True: 64, False: 0]
  ------------------
  130|     64|				&& "Functions with non-persistent arg_info must be flagged ZEND_ACC_NEVER_CACHE");
  131|       |
  132|     64|		uint32_t i;
  133|     64|		uint32_t num_args = function->num_args + 1;
  134|     64|		zend_arg_info *arg_info = function->arg_info - 1;
  135|       |
  136|     64|		if (function->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|     64|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (136:7): [True: 0, False: 64]
  ------------------
  137|      0|			num_args++;
  138|      0|		}
  139|    318|		for (i = 0 ; i < num_args; i++) {
  ------------------
  |  Branch (139:16): [True: 254, False: 64]
  ------------------
  140|    254|			bool is_return_info = i == 0;
  141|    254|			if (!is_return_info) {
  ------------------
  |  Branch (141:8): [True: 190, False: 64]
  ------------------
  142|    190|				zend_string_release_ex(arg_info[i].name, persistent);
  143|    190|				if (arg_info[i].default_value) {
  ------------------
  |  Branch (143:9): [True: 82, False: 108]
  ------------------
  144|     82|					zend_string_release_ex(arg_info[i].default_value,
  145|     82|							persistent);
  146|     82|				}
  147|    190|			}
  148|    254|			zend_type_release(arg_info[i].type, persistent);
  149|    254|		}
  150|       |
  151|       |		pefree(arg_info, persistent);
  ------------------
  |  |  190|     64|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 64, False: 0]
  |  |  ------------------
  ------------------
  152|     64|	}
  153|     64|}
zend_function_dtor:
  156|  1.34k|{
  157|  1.34k|	zend_function *function = Z_PTR_P(zv);
  ------------------
  |  | 1053|  1.34k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  1.34k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  158|       |
  159|  1.34k|	if (function->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (159:6): [True: 657, False: 685]
  ------------------
  160|    657|		ZEND_ASSERT(function->common.function_name);
  ------------------
  |  |  112|    657|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (160:3): [True: 0, False: 657]
  |  Branch (160:3): [True: 657, False: 0]
  ------------------
  161|    657|		destroy_op_array(&function->op_array);
  162|       |		/* op_arrays are allocated on arena, so we don't have to free them */
  163|    685|	} else {
  164|    685|		ZEND_ASSERT(function->type == ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|    685|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (164:3): [True: 0, False: 685]
  |  Branch (164:3): [True: 685, False: 0]
  ------------------
  165|    685|		ZEND_ASSERT(function->common.function_name);
  ------------------
  |  |  112|    685|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (165:3): [True: 0, False: 685]
  |  Branch (165:3): [True: 685, False: 0]
  ------------------
  166|    685|		zend_string_release_ex(function->common.function_name, 1);
  167|       |
  168|       |		/* For methods this will be called explicitly. */
  169|    685|		if (!function->common.scope) {
  ------------------
  |  Branch (169:7): [True: 64, False: 621]
  ------------------
  170|     64|			zend_free_internal_arg_info(&function->internal_function, true);
  171|       |
  172|     64|			if (function->common.attributes) {
  ------------------
  |  Branch (172:8): [True: 2, False: 62]
  ------------------
  173|      2|				zend_hash_release(function->common.attributes);
  174|      2|				function->common.attributes = NULL;
  175|      2|			}
  176|     64|		}
  177|       |
  178|    685|		if (function->common.doc_comment) {
  ------------------
  |  Branch (178:7): [True: 0, False: 685]
  ------------------
  179|      0|			zend_string_release_ex(function->common.doc_comment, 1);
  180|      0|			function->common.doc_comment = NULL;
  181|      0|		}
  182|       |
  183|    685|		if (!(function->common.fn_flags & ZEND_ACC_ARENA_ALLOCATED)) {
  ------------------
  |  |  393|    685|#define ZEND_ACC_ARENA_ALLOCATED         (1 << 25) /*     |  X  |     |     */
  ------------------
  |  Branch (183:7): [True: 64, False: 621]
  ------------------
  184|       |			pefree(function, 1);
  ------------------
  |  |  190|     64|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 64, Folded]
  |  |  ------------------
  ------------------
  185|     64|		}
  186|    685|	}
  187|  1.34k|}
zend_cleanup_internal_class_data:
  190|     74|{
  191|     74|	if (ZEND_MAP_PTR(ce->static_members_table) && CE_STATIC_MEMBERS(ce)) {
  ------------------
  |  |   31|     74|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 50, False: 24]
  |  |  ------------------
  ------------------
              	if (ZEND_MAP_PTR(ce->static_members_table) && CE_STATIC_MEMBERS(ce)) {
  ------------------
  |  |  331|    124|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|     50|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|     50|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 50]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|     50|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|     50|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (331:2): [True: 50, False: 0]
  |  |  ------------------
  ------------------
  192|     50|		zval *static_members = CE_STATIC_MEMBERS(ce);
  ------------------
  |  |  331|     50|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|     50|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|     50|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 50]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|     50|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|     50|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|     50|		zval *p = static_members;
  194|     50|		zval *end = p + ce->default_static_members_count;
  195|     50|		ZEND_MAP_PTR_SET(ce->static_members_table, NULL);
  ------------------
  |  |   59|     50|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|     50|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|     50|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     50|		} else { \
  |  |   63|     50|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|     50|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|     50|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     50|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|     50|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|     50|		} \
  |  |   65|     50|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 50]
  |  |  ------------------
  ------------------
  196|    101|		while (p != end) {
  ------------------
  |  Branch (196:10): [True: 51, False: 50]
  ------------------
  197|     51|			if (UNEXPECTED(Z_ISREF_P(p))) {
  ------------------
  |  |  457|     51|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 41]
  |  |  ------------------
  ------------------
  198|     10|				zend_property_info *prop_info;
  199|     24|				ZEND_REF_FOREACH_TYPE_SOURCES(Z_REF_P(p), prop_info) {
  ------------------
  |  |  597|     10|#define ZEND_REF_FOREACH_TYPE_SOURCES(ref, prop) do { \
  |  |  598|     10|		zend_property_info_source_list *_source_list = &ZEND_REF_TYPE_SOURCES(ref); \
  |  |  ------------------
  |  |  |  |  120|     10|	(ref)->sources
  |  |  ------------------
  |  |  599|     10|		zend_property_info **_prop, **_end; \
  |  |  600|     10|		zend_property_info_list *_list; \
  |  |  601|     10|		if (_source_list->ptr) { \
  |  |  ------------------
  |  |  |  Branch (601:7): [True: 7, False: 3]
  |  |  ------------------
  |  |  602|      7|			if (ZEND_PROPERTY_INFO_SOURCE_IS_LIST(_source_list->list)) { \
  |  |  ------------------
  |  |  |  |  592|      7|#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list) ((list) & 0x1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (592:49): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  603|      0|				_list = ZEND_PROPERTY_INFO_SOURCE_TO_LIST(_source_list->list); \
  |  |  ------------------
  |  |  |  |  591|      0|#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list) ((zend_property_info_list *) ((list) & ~0x1))
  |  |  ------------------
  |  |  604|      0|				_prop = _list->ptr; \
  |  |  605|      0|				_end = _list->ptr + _list->num; \
  |  |  606|      7|			} else { \
  |  |  607|      7|				_prop = &_source_list->ptr; \
  |  |  608|      7|				_end = _prop + 1; \
  |  |  609|      7|			} \
  |  |  610|      7|			for (; _prop < _end; _prop++) { \
  |  |  ------------------
  |  |  |  Branch (610:11): [True: 7, False: 0]
  |  |  ------------------
  |  |  611|      7|				prop = *_prop; \
  ------------------
  200|     24|					if (prop_info->ce == ce && p - static_members == prop_info->offset) {
  ------------------
  |  Branch (200:10): [True: 7, False: 0]
  |  Branch (200:33): [True: 7, False: 0]
  ------------------
  201|      7|						ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(p), prop_info);
  ------------------
  |  |  595|      7|	zend_ref_del_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      7|	(ref)->sources
  |  |  ------------------
  ------------------
  202|      7|						break; /* stop iteration here, the array might be realloc()'ed */
  203|      7|					}
  204|     24|				} ZEND_REF_FOREACH_TYPE_SOURCES_END();
  ------------------
  |  |  614|      7|			} \
  |  |  615|      7|		} \
  |  |  616|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (616:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  205|     10|			}
  206|     51|			i_zval_ptr_dtor(p);
  207|     51|			p++;
  208|     51|		}
  209|       |		efree(static_members);
  ------------------
  |  |  154|     50|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     50|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     50|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     50|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     50|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|     50|	}
  211|     74|}
zend_cleanup_mutable_class_data:
  263|      1|{
  264|      1|	zend_class_mutable_data *mutable_data = ZEND_MAP_PTR_GET_IMM(ce->mutable_data);
  ------------------
  |  |   58|      1|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  ------------------
  |  |  |  |   35|      1|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|       |
  266|      1|	if (mutable_data) {
  ------------------
  |  Branch (266:6): [True: 1, False: 0]
  ------------------
  267|      1|		HashTable *constants_table;
  268|      1|		zval *p;
  269|       |
  270|      1|		constants_table = mutable_data->constants_table;
  271|      1|		if (constants_table && constants_table != &ce->constants_table) {
  ------------------
  |  Branch (271:7): [True: 1, False: 0]
  |  Branch (271:26): [True: 1, False: 0]
  ------------------
  272|      1|			zend_class_constant *c;
  273|       |
  274|     10|			ZEND_HASH_MAP_FOREACH_PTR(constants_table, c) {
  ------------------
  |  | 1341|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      5|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      4|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (274:4): [True: 0, False: 1]
  |  Branch (274:4): [True: 1, False: 0]
  ------------------
  275|     10|				if (c->ce == ce || (Z_CONSTANT_FLAGS(c->value) & CONST_OWNED)) {
  ------------------
  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  ------------------
              				if (c->ce == ce || (Z_CONSTANT_FLAGS(c->value) & CONST_OWNED)) {
  ------------------
  |  |   28|      0|#define CONST_OWNED				(1<<3)				/* constant should be destroyed together with class */
  ------------------
  |  Branch (275:9): [True: 4, False: 0]
  |  Branch (275:24): [True: 0, False: 0]
  ------------------
  276|      4|					zval_ptr_dtor_nogc(&c->value);
  277|      4|				}
  278|     10|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  279|      1|			zend_hash_destroy(constants_table);
  280|      1|			mutable_data->constants_table = NULL;
  281|      1|		}
  282|       |
  283|      1|		p = mutable_data->default_properties_table;
  284|      1|		if (p && p != ce->default_properties_table) {
  ------------------
  |  Branch (284:7): [True: 0, False: 1]
  |  Branch (284:12): [True: 0, False: 0]
  ------------------
  285|      0|			zval *end = p + ce->default_properties_count;
  286|       |
  287|      0|			while (p < end) {
  ------------------
  |  Branch (287:11): [True: 0, False: 0]
  ------------------
  288|      0|				zval_ptr_dtor_nogc(p);
  289|      0|				p++;
  290|      0|			}
  291|      0|			mutable_data->default_properties_table = NULL;
  292|      0|		}
  293|       |
  294|      1|		if (mutable_data->backed_enum_table) {
  ------------------
  |  Branch (294:7): [True: 0, False: 1]
  ------------------
  295|      0|			zend_hash_release(mutable_data->backed_enum_table);
  296|      0|			mutable_data->backed_enum_table = NULL;
  297|      0|		}
  298|       |
  299|      1|		ZEND_MAP_PTR_SET_IMM(ce->mutable_data, NULL);
  ------------------
  |  |   66|      1|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |   67|      1|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  ------------------
  |  |  |  |   35|      1|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      1|		*__p = (val); \
  |  |   69|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (69:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  300|      1|	}
  301|      1|}
destroy_zend_class:
  304|  1.58k|{
  305|  1.58k|	zend_property_info *prop_info;
  306|  1.58k|	zend_class_entry *ce = Z_PTR_P(zv);
  ------------------
  |  | 1053|  1.58k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|  1.58k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  307|  1.58k|	zend_function *fn;
  308|       |
  309|  1.58k|	if (ce->ce_flags & ZEND_ACC_IMMUTABLE) {
  ------------------
  |  |  241|  1.58k|#define ZEND_ACC_IMMUTABLE               (1 <<  7) /*  X  |  X  |     |     */
  ------------------
  |  Branch (309:6): [True: 0, False: 1.58k]
  ------------------
  310|      0|		return;
  311|      0|	}
  312|       |
  313|       |	/* We don't increase the refcount for class aliases,
  314|       |	 * skip the destruction of aliases entirely. */
  315|  1.58k|	if (UNEXPECTED(Z_TYPE_INFO_P(zv) == IS_ALIAS_PTR)) {
  ------------------
  |  |  457|  1.58k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 1.55k]
  |  |  ------------------
  ------------------
  316|     21|		return;
  317|     21|	}
  318|       |
  319|  1.55k|	if (ce->ce_flags & ZEND_ACC_FILE_CACHED) {
  ------------------
  |  |  338|  1.55k|#define ZEND_ACC_FILE_CACHED             (1 << 27) /*  X  |     |     |     */
  ------------------
  |  Branch (319:6): [True: 0, False: 1.55k]
  ------------------
  320|      0|		zend_class_constant *c;
  321|      0|		zval *p, *end;
  322|       |
  323|      0|		ZEND_HASH_MAP_FOREACH_PTR(&ce->constants_table, c) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (323:3): [True: 0, False: 0]
  |  Branch (323:3): [True: 0, False: 0]
  ------------------
  324|      0|			if (c->ce == ce) {
  ------------------
  |  Branch (324:8): [True: 0, False: 0]
  ------------------
  325|      0|				zval_ptr_dtor_nogc(&c->value);
  326|      0|			}
  327|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  328|       |
  329|      0|		if (ce->default_properties_table) {
  ------------------
  |  Branch (329:7): [True: 0, False: 0]
  ------------------
  330|      0|			p = ce->default_properties_table;
  331|      0|			end = p + ce->default_properties_count;
  332|       |
  333|      0|			while (p < end) {
  ------------------
  |  Branch (333:11): [True: 0, False: 0]
  ------------------
  334|      0|				zval_ptr_dtor_nogc(p);
  335|      0|				p++;
  336|      0|			}
  337|      0|		}
  338|      0|		return;
  339|      0|	}
  340|       |
  341|  1.55k|	ZEND_ASSERT(ce->refcount > 0);
  ------------------
  |  |  112|  1.55k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (341:2): [True: 0, False: 1.55k]
  |  Branch (341:2): [True: 1.55k, False: 0]
  ------------------
  342|       |
  343|  1.55k|	if (--ce->refcount > 0) {
  ------------------
  |  Branch (343:6): [True: 0, False: 1.55k]
  ------------------
  344|      0|		return;
  345|      0|	}
  346|       |
  347|  1.55k|	switch (ce->type) {
  ------------------
  |  Branch (347:10): [True: 1.55k, False: 0]
  ------------------
  348|  1.55k|		case ZEND_USER_CLASS:
  ------------------
  |  Branch (348:3): [True: 1.55k, False: 0]
  ------------------
  349|  1.55k|			if (!(ce->ce_flags & ZEND_ACC_CACHED)) {
  ------------------
  |  |  328|  1.55k|#define ZEND_ACC_CACHED                  (1 << 22) /*  X  |     |     |     */
  ------------------
  |  Branch (349:8): [True: 1.55k, False: 0]
  ------------------
  350|  1.55k|				if (ce->parent_name && !(ce->ce_flags & ZEND_ACC_RESOLVED_PARENT)) {
  ------------------
  |  |  314|    256|#define ZEND_ACC_RESOLVED_PARENT         (1 << 17) /*  X  |     |     |     */
  ------------------
  |  Branch (350:9): [True: 256, False: 1.30k]
  |  Branch (350:28): [True: 21, False: 235]
  ------------------
  351|     21|					zend_string_release_ex(ce->parent_name, 0);
  352|     21|				}
  353|       |
  354|  1.55k|				zend_string_release_ex(ce->name, 0);
  355|  1.55k|				zend_string_release_ex(ce->info.user.filename, 0);
  356|       |
  357|  1.55k|				if (ce->doc_comment) {
  ------------------
  |  Branch (357:9): [True: 0, False: 1.55k]
  ------------------
  358|      0|					zend_string_release_ex(ce->doc_comment, 0);
  359|      0|				}
  360|       |
  361|  1.55k|				if (ce->attributes) {
  ------------------
  |  Branch (361:9): [True: 33, False: 1.52k]
  ------------------
  362|     33|					zend_hash_release(ce->attributes);
  363|     33|				}
  364|       |
  365|  1.55k|				if (ce->num_interfaces > 0 && !(ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES)) {
  ------------------
  |  |  317|    239|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
  |  Branch (365:9): [True: 239, False: 1.32k]
  |  Branch (365:35): [True: 22, False: 217]
  ------------------
  366|     22|					uint32_t i;
  367|       |
  368|     53|					for (i = 0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (368:18): [True: 31, False: 22]
  ------------------
  369|     31|						zend_string_release_ex(ce->interface_names[i].name, 0);
  370|     31|						zend_string_release_ex(ce->interface_names[i].lc_name, 0);
  371|     31|					}
  372|     22|					efree(ce->interface_names);
  ------------------
  |  |  154|     22|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  373|     22|				}
  374|       |
  375|  1.55k|				if (ce->num_traits > 0) {
  ------------------
  |  Branch (375:9): [True: 97, False: 1.46k]
  ------------------
  376|     97|					_destroy_zend_class_traits_info(ce);
  377|     97|				}
  378|  1.55k|			}
  379|       |
  380|  1.55k|			if (ce->default_properties_table) {
  ------------------
  |  Branch (380:8): [True: 458, False: 1.10k]
  ------------------
  381|    458|				zval *p = ce->default_properties_table;
  382|    458|				zval *end = p + ce->default_properties_count;
  383|       |
  384|  1.11k|				while (p != end) {
  ------------------
  |  Branch (384:12): [True: 656, False: 458]
  ------------------
  385|    656|					i_zval_ptr_dtor(p);
  386|    656|					p++;
  387|    656|				}
  388|    458|				efree(ce->default_properties_table);
  ------------------
  |  |  154|    458|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    458|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    458|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    458|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    458|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|    458|			}
  390|  1.55k|			if (ce->default_static_members_table) {
  ------------------
  |  Branch (390:8): [True: 74, False: 1.48k]
  ------------------
  391|     74|				zval *p = ce->default_static_members_table;
  392|     74|				zval *end = p + ce->default_static_members_count;
  393|       |
  394|    154|				while (p != end) {
  ------------------
  |  Branch (394:12): [True: 80, False: 74]
  ------------------
  395|     80|					ZEND_ASSERT(!Z_ISREF_P(p));
  ------------------
  |  |  112|     80|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (395:6): [True: 0, False: 80]
  |  Branch (395:6): [True: 80, False: 0]
  ------------------
  396|     80|					i_zval_ptr_dtor(p);
  397|     80|					p++;
  398|     80|				}
  399|     74|				efree(ce->default_static_members_table);
  ------------------
  |  |  154|     74|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     74|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     74|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     74|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     74|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  400|     74|			}
  401|  4.59k|			ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop_info) {
  ------------------
  |  | 1341|    740|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  1.55k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  1.55k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  1.55k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  1.55k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  1.55k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  1.55k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.55k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  2.29k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 740, False: 1.55k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    740|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    740|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    740|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 740]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    740|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    740|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 740]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  1.55k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|  1.55k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  1.55k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (401:4): [True: 0, False: 1.55k]
  |  Branch (401:4): [True: 1.55k, False: 0]
  ------------------
  402|  4.59k|				if (prop_info->ce == ce) {
  ------------------
  |  Branch (402:9): [True: 636, False: 104]
  ------------------
  403|    636|					zend_string_release_ex(prop_info->name, 0);
  404|    636|					if (prop_info->doc_comment) {
  ------------------
  |  Branch (404:10): [True: 10, False: 626]
  ------------------
  405|     10|						zend_string_release_ex(prop_info->doc_comment, 0);
  406|     10|					}
  407|    636|					if (prop_info->attributes) {
  ------------------
  |  Branch (407:10): [True: 11, False: 625]
  ------------------
  408|     11|						zend_hash_release(prop_info->attributes);
  409|     11|					}
  410|    636|					zend_type_release(prop_info->type, /* persistent */ false);
  411|    636|					if (prop_info->hooks) {
  ------------------
  |  Branch (411:10): [True: 105, False: 531]
  ------------------
  412|    315|						for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|    315|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (412:28): [True: 210, False: 105]
  ------------------
  413|    210|							if (prop_info->hooks[i]) {
  ------------------
  |  Branch (413:12): [True: 133, False: 77]
  ------------------
  414|    133|								destroy_op_array(&prop_info->hooks[i]->op_array);
  415|    133|							}
  416|    210|						}
  417|    105|					}
  418|    636|				}
  419|  4.59k|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    740|		} \
  |  | 1102|  1.55k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1.55k]
  |  |  ------------------
  ------------------
  420|  1.55k|			zend_hash_destroy(&ce->properties_info);
  421|  1.55k|			zend_hash_destroy(&ce->function_table);
  422|  1.55k|			if (zend_hash_num_elements(&ce->constants_table)) {
  ------------------
  |  Branch (422:8): [True: 233, False: 1.32k]
  ------------------
  423|    233|				zend_class_constant *c;
  424|       |
  425|  1.25k|				ZEND_HASH_MAP_FOREACH_PTR(&ce->constants_table, c) {
  ------------------
  |  | 1341|    396|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    233|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    233|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    233|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    233|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    233|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    233|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    233|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    629|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 396, False: 233]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    396|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    396|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    396|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 396]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    396|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    396|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 396]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    396|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|    233|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    233|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (425:5): [True: 0, False: 233]
  |  Branch (425:5): [True: 233, False: 0]
  ------------------
  426|  1.25k|					if (c->ce == ce || (Z_CONSTANT_FLAGS(c->value) & CONST_OWNED)) {
  ------------------
  |  |  701|    138|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  ------------------
              					if (c->ce == ce || (Z_CONSTANT_FLAGS(c->value) & CONST_OWNED)) {
  ------------------
  |  |   28|    138|#define CONST_OWNED				(1<<3)				/* constant should be destroyed together with class */
  ------------------
  |  Branch (426:10): [True: 258, False: 138]
  |  Branch (426:25): [True: 0, False: 138]
  ------------------
  427|    258|						zval_ptr_dtor_nogc(&c->value);
  428|    258|						if (c->doc_comment) {
  ------------------
  |  Branch (428:11): [True: 1, False: 257]
  ------------------
  429|      1|							zend_string_release_ex(c->doc_comment, 0);
  430|      1|						}
  431|    258|						if (c->attributes) {
  ------------------
  |  Branch (431:11): [True: 7, False: 251]
  ------------------
  432|      7|							zend_hash_release(c->attributes);
  433|      7|						}
  434|    258|					}
  435|  1.25k|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    396|		} \
  |  | 1102|    233|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 233]
  |  |  ------------------
  ------------------
  436|    233|			}
  437|  1.55k|			zend_hash_destroy(&ce->constants_table);
  438|  1.55k|			if (ce->num_interfaces > 0 && (ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES)) {
  ------------------
  |  |  317|    239|#define ZEND_ACC_RESOLVED_INTERFACES     (1 << 18) /*  X  |     |     |     */
  ------------------
  |  Branch (438:8): [True: 239, False: 1.32k]
  |  Branch (438:34): [True: 217, False: 22]
  ------------------
  439|    217|				efree(ce->interfaces);
  ------------------
  |  |  154|    217|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    217|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    217|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    217|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    217|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  440|    217|			}
  441|  1.55k|			if (ce->backed_enum_table) {
  ------------------
  |  Branch (441:8): [True: 0, False: 1.55k]
  ------------------
  442|      0|				zend_hash_release(ce->backed_enum_table);
  443|      0|			}
  444|  1.55k|			break;
  445|      0|		case ZEND_INTERNAL_CLASS:
  ------------------
  |  Branch (445:3): [True: 0, False: 1.55k]
  ------------------
  446|      0|			if (ce->doc_comment) {
  ------------------
  |  Branch (446:8): [True: 0, False: 0]
  ------------------
  447|      0|				zend_string_release_ex(ce->doc_comment, 1);
  448|      0|			}
  449|       |
  450|      0|			if (ce->backed_enum_table) {
  ------------------
  |  Branch (450:8): [True: 0, False: 0]
  ------------------
  451|      0|				zend_hash_release(ce->backed_enum_table);
  452|      0|			}
  453|      0|			if (ce->default_properties_table) {
  ------------------
  |  Branch (453:8): [True: 0, False: 0]
  ------------------
  454|      0|				zval *p = ce->default_properties_table;
  455|      0|				zval *end = p + ce->default_properties_count;
  456|       |
  457|      0|				while (p != end) {
  ------------------
  |  Branch (457:12): [True: 0, False: 0]
  ------------------
  458|      0|					zval_internal_ptr_dtor(p);
  459|      0|					p++;
  460|      0|				}
  461|      0|				free(ce->default_properties_table);
  462|      0|			}
  463|      0|			if (ce->default_static_members_table) {
  ------------------
  |  Branch (463:8): [True: 0, False: 0]
  ------------------
  464|      0|				zval *p = ce->default_static_members_table;
  465|      0|				zval *end = p + ce->default_static_members_count;
  466|       |
  467|      0|				while (p != end) {
  ------------------
  |  Branch (467:12): [True: 0, False: 0]
  ------------------
  468|      0|					zval_internal_ptr_dtor(p);
  469|      0|					p++;
  470|      0|				}
  471|      0|				free(ce->default_static_members_table);
  472|      0|			}
  473|       |
  474|      0|			ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop_info) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (474:4): [True: 0, False: 0]
  |  Branch (474:4): [True: 0, False: 0]
  ------------------
  475|      0|				if (prop_info->ce == ce) {
  ------------------
  |  Branch (475:9): [True: 0, False: 0]
  ------------------
  476|      0|					zend_string_release(prop_info->name);
  477|      0|					zend_type_release(prop_info->type, /* persistent */ true);
  478|      0|					if (prop_info->attributes) {
  ------------------
  |  Branch (478:10): [True: 0, False: 0]
  ------------------
  479|      0|						zend_hash_release(prop_info->attributes);
  480|      0|					}
  481|      0|					free(prop_info);
  482|      0|				}
  483|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  484|      0|			zend_hash_destroy(&ce->properties_info);
  485|      0|			zend_string_release_ex(ce->name, 1);
  486|       |
  487|      0|			ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, fn) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (487:4): [True: 0, False: 0]
  |  Branch (487:4): [True: 0, False: 0]
  ------------------
  488|      0|				if (fn->common.scope == ce) {
  ------------------
  |  Branch (488:9): [True: 0, False: 0]
  ------------------
  489|      0|					zend_free_internal_arg_info(&fn->internal_function, true);
  490|       |
  491|      0|					if (fn->common.attributes) {
  ------------------
  |  Branch (491:10): [True: 0, False: 0]
  ------------------
  492|      0|						zend_hash_release(fn->common.attributes);
  493|      0|						fn->common.attributes = NULL;
  494|      0|					}
  495|      0|				}
  496|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  497|       |
  498|      0|			zend_hash_destroy(&ce->function_table);
  499|      0|			if (zend_hash_num_elements(&ce->constants_table)) {
  ------------------
  |  Branch (499:8): [True: 0, False: 0]
  ------------------
  500|      0|				zend_class_constant *c;
  501|       |
  502|      0|				ZEND_HASH_MAP_FOREACH_PTR(&ce->constants_table, c) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (502:5): [True: 0, False: 0]
  |  Branch (502:5): [True: 0, False: 0]
  ------------------
  503|      0|					if (c->ce == ce) {
  ------------------
  |  Branch (503:10): [True: 0, False: 0]
  ------------------
  504|      0|						if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              						if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (504:11): [True: 0, False: 0]
  ------------------
  505|       |							/* We marked this as IMMUTABLE, but do need to free it when the
  506|       |							 * class is destroyed. */
  507|      0|							ZEND_ASSERT(Z_ASTVAL(c->value)->kind == ZEND_AST_CONST_ENUM_INIT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (507:8): [True: 0, False: 0]
  |  Branch (507:8): [True: 0, False: 0]
  ------------------
  508|      0|							free(Z_AST(c->value));
  ------------------
  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  ------------------
  509|      0|						} else {
  510|      0|							zval_internal_ptr_dtor(&c->value);
  511|      0|						}
  512|      0|						if (c->doc_comment) {
  ------------------
  |  Branch (512:11): [True: 0, False: 0]
  ------------------
  513|      0|							zend_string_release_ex(c->doc_comment, 1);
  514|      0|						}
  515|      0|						if (c->attributes) {
  ------------------
  |  Branch (515:11): [True: 0, False: 0]
  ------------------
  516|      0|							zend_hash_release(c->attributes);
  517|      0|						}
  518|      0|					}
  519|      0|					free(c);
  520|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  521|      0|				zend_hash_destroy(&ce->constants_table);
  522|      0|			}
  523|      0|			if (ce->iterator_funcs_ptr) {
  ------------------
  |  Branch (523:8): [True: 0, False: 0]
  ------------------
  524|      0|				free(ce->iterator_funcs_ptr);
  525|      0|			}
  526|      0|			if (ce->arrayaccess_funcs_ptr) {
  ------------------
  |  Branch (526:8): [True: 0, False: 0]
  ------------------
  527|      0|				free(ce->arrayaccess_funcs_ptr);
  528|      0|			}
  529|      0|			if (ce->num_interfaces > 0) {
  ------------------
  |  Branch (529:8): [True: 0, False: 0]
  ------------------
  530|      0|				free(ce->interfaces);
  531|      0|			}
  532|      0|			if (ce->properties_info_table) {
  ------------------
  |  Branch (532:8): [True: 0, False: 0]
  ------------------
  533|      0|				free(ce->properties_info_table);
  534|      0|			}
  535|      0|			if (ce->attributes) {
  ------------------
  |  Branch (535:8): [True: 0, False: 0]
  ------------------
  536|      0|				zend_hash_release(ce->attributes);
  537|      0|			}
  538|      0|			free(ce);
  539|      0|			break;
  540|  1.55k|	}
  541|  1.55k|}
zend_destroy_static_vars:
  553|  31.1k|{
  554|  31.1k|	if (ZEND_MAP_PTR(op_array->static_variables_ptr)) {
  ------------------
  |  |   31|  31.1k|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 40, False: 31.0k]
  |  |  ------------------
  ------------------
  555|     40|		HashTable *ht = ZEND_MAP_PTR_GET(op_array->static_variables_ptr);
  ------------------
  |  |   54|     40|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|     40|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     40|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     40|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|     40|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|     40|	ptr ## __ptr
  |  |  ------------------
  ------------------
  556|     40|		if (ht) {
  ------------------
  |  Branch (556:7): [True: 40, False: 0]
  ------------------
  557|     40|			zend_array_destroy(ht);
  558|     40|			ZEND_MAP_PTR_SET(op_array->static_variables_ptr, NULL);
  ------------------
  |  |   59|     40|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|     40|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|     40|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     40|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     40|		} else { \
  |  |   63|     40|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|     40|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|     40|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     40|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|     40|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|     40|		} \
  |  |   65|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
  559|     40|		}
  560|     40|	}
  561|  31.1k|}
destroy_op_array:
  564|  32.6k|{
  565|  32.6k|	uint32_t i;
  566|       |
  567|  32.6k|	if ((op_array->fn_flags & ZEND_ACC_HEAP_RT_CACHE)
  ------------------
  |  |  396|  32.6k|#define ZEND_ACC_HEAP_RT_CACHE           (1 << 26) /*     |  X  |     |     */
  ------------------
  |  Branch (567:6): [True: 30.6k, False: 2.03k]
  ------------------
  568|  30.6k|	 && ZEND_MAP_PTR(op_array->run_time_cache)) {
  ------------------
  |  |   31|  30.6k|	ptr ## __ptr
  |  |  ------------------
  |  |  |  Branch (31:2): [True: 30.6k, False: 0]
  |  |  ------------------
  ------------------
  569|  30.6k|		efree(ZEND_MAP_PTR(op_array->run_time_cache));
  ------------------
  |  |  154|  30.6k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  30.6k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  30.6k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  30.6k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  30.6k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|  30.6k|	}
  571|       |
  572|  32.6k|	if (op_array->function_name) {
  ------------------
  |  Branch (572:6): [True: 2.04k, False: 30.6k]
  ------------------
  573|  2.04k|		zend_string_release_ex(op_array->function_name, 0);
  574|  2.04k|	}
  575|       |
  576|  32.6k|	if (!op_array->refcount || --(*op_array->refcount) > 0) {
  ------------------
  |  Branch (576:6): [True: 26.5k, False: 6.08k]
  |  Branch (576:29): [True: 606, False: 5.47k]
  ------------------
  577|  27.1k|		return;
  578|  27.1k|	}
  579|       |
  580|  5.47k|	efree_size(op_array->refcount, sizeof(*(op_array->refcount)));
  ------------------
  |  |  138|  5.47k|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|  5.47k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  5.47k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  5.47k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  5.47k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  5.47k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  581|       |
  582|  5.47k|	if (op_array->vars) {
  ------------------
  |  Branch (582:6): [True: 2.93k, False: 2.54k]
  ------------------
  583|  2.93k|		i = op_array->last_var;
  584|  7.64k|		while (i > 0) {
  ------------------
  |  Branch (584:10): [True: 4.71k, False: 2.93k]
  ------------------
  585|  4.71k|			i--;
  586|  4.71k|			zend_string_release_ex(op_array->vars[i], 0);
  587|  4.71k|		}
  588|  2.93k|		efree(op_array->vars);
  ------------------
  |  |  154|  2.93k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  2.93k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  2.93k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  2.93k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  2.93k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|  2.93k|	}
  590|       |
  591|       |	/* ZEND_ACC_PTR_OPS and ZEND_ACC_OVERRIDE use the same value */
  592|  5.47k|	if ((op_array->fn_flags & ZEND_ACC_PTR_OPS) && !op_array->function_name) {
  ------------------
  |  |  407|  5.47k|#define ZEND_ACC_PTR_OPS                 (1 << 28) /*     |  X  |     |     */
  ------------------
  |  Branch (592:6): [True: 17, False: 5.46k]
  |  Branch (592:49): [True: 9, False: 8]
  ------------------
  593|      9|		zend_op *op = op_array->opcodes;
  594|      9|		zend_op *end = op + op_array->last;
  595|    103|		while (op < end) {
  ------------------
  |  Branch (595:10): [True: 94, False: 9]
  ------------------
  596|     94|			if (op->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
  ------------------
  |  |  332|     94|#define ZEND_DECLARE_ATTRIBUTED_CONST       210
  ------------------
  |  Branch (596:8): [True: 12, False: 82]
  ------------------
  597|     12|				HashTable *attributes = Z_PTR_P(RT_CONSTANT(op+1, (op+1)->op1));
  ------------------
  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  598|     12|				zend_hash_release(attributes);
  599|     12|			}
  600|     94|			op++;
  601|     94|		}
  602|      9|	}
  603|  5.47k|	if (op_array->literals) {
  ------------------
  |  Branch (603:6): [True: 5.47k, False: 2]
  ------------------
  604|  5.47k|		zval *literal = op_array->literals;
  605|  5.47k|		zval *end = literal + op_array->last_literal;
  606|  33.5k|	 	while (literal < end) {
  ------------------
  |  Branch (606:11): [True: 28.1k, False: 5.47k]
  ------------------
  607|  28.1k|			zval_ptr_dtor_nogc(literal);
  608|  28.1k|			literal++;
  609|  28.1k|		}
  610|  5.47k|		if (ZEND_USE_ABS_CONST_ADDR
  ------------------
  |  |   65|  10.9k|# define ZEND_USE_ABS_CONST_ADDR    0
  |  |  ------------------
  |  |  |  Branch (65:37): [Folded, False: 5.47k]
  |  |  ------------------
  ------------------
  611|  5.47k|		 || !(op_array->fn_flags & ZEND_ACC_DONE_PASS_TWO)) {
  ------------------
  |  |  390|  5.47k|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  ------------------
  |  Branch (611:7): [True: 0, False: 5.47k]
  ------------------
  612|      0|			efree(op_array->literals);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  613|      0|		}
  614|  5.47k|	}
  615|  5.47k|	efree(op_array->opcodes);
  ------------------
  |  |  154|  5.47k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  5.47k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  5.47k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  5.47k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  5.47k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|       |
  617|  5.47k|	zend_string_release_ex(op_array->filename, 0);
  618|  5.47k|	if (op_array->doc_comment) {
  ------------------
  |  Branch (618:6): [True: 0, False: 5.47k]
  ------------------
  619|      0|		zend_string_release_ex(op_array->doc_comment, 0);
  620|      0|	}
  621|  5.47k|	if (op_array->attributes) {
  ------------------
  |  Branch (621:6): [True: 41, False: 5.43k]
  ------------------
  622|     41|		zend_hash_release(op_array->attributes);
  623|     41|	}
  624|  5.47k|	if (op_array->live_range) {
  ------------------
  |  Branch (624:6): [True: 2.25k, False: 3.22k]
  ------------------
  625|  2.25k|		efree(op_array->live_range);
  ------------------
  |  |  154|  2.25k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  2.25k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  2.25k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  2.25k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  2.25k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  626|  2.25k|	}
  627|  5.47k|	if (op_array->try_catch_array) {
  ------------------
  |  Branch (627:6): [True: 197, False: 5.28k]
  ------------------
  628|    197|		efree(op_array->try_catch_array);
  ------------------
  |  |  154|    197|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    197|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    197|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    197|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    197|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|    197|	}
  630|  5.47k|	if (zend_extension_flags & ZEND_EXTENSIONS_HAVE_OP_ARRAY_DTOR) {
  ------------------
  |  |  138|  5.47k|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_DTOR         (1<<1)
  ------------------
  |  Branch (630:6): [True: 0, False: 5.47k]
  ------------------
  631|      0|		if (op_array->fn_flags & ZEND_ACC_DONE_PASS_TWO) {
  ------------------
  |  |  390|      0|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  ------------------
  |  Branch (631:7): [True: 0, False: 0]
  ------------------
  632|      0|			zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_op_array_dtor_handler, op_array);
  633|      0|		}
  634|      0|	}
  635|  5.47k|	if (op_array->arg_info) {
  ------------------
  |  Branch (635:6): [True: 733, False: 4.74k]
  ------------------
  636|    733|		uint32_t num_args = op_array->num_args;
  637|    733|		zend_arg_info *arg_info = op_array->arg_info;
  638|       |
  639|    733|		if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|    733|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (639:7): [True: 284, False: 449]
  ------------------
  640|    284|			arg_info--;
  641|    284|			num_args++;
  642|    284|		}
  643|    733|		if (op_array->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|    733|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (643:7): [True: 36, False: 697]
  ------------------
  644|     36|			num_args++;
  645|     36|		}
  646|  1.74k|		for (i = 0 ; i < num_args; i++) {
  ------------------
  |  Branch (646:16): [True: 1.00k, False: 733]
  ------------------
  647|  1.00k|			if (arg_info[i].name) {
  ------------------
  |  Branch (647:8): [True: 723, False: 284]
  ------------------
  648|    723|				zend_string_release_ex(arg_info[i].name, 0);
  649|    723|			}
  650|  1.00k|			if (arg_info[i].doc_comment) {
  ------------------
  |  Branch (650:8): [True: 0, False: 1.00k]
  ------------------
  651|      0|				zend_string_release_ex(arg_info[i].doc_comment, 0);
  652|      0|			}
  653|  1.00k|			zend_type_release(arg_info[i].type, /* persistent */ false);
  654|  1.00k|		}
  655|    733|		efree(arg_info);
  ------------------
  |  |  154|    733|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    733|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    733|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    733|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    733|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  656|    733|	}
  657|  5.47k|	if (op_array->static_variables) {
  ------------------
  |  Branch (657:6): [True: 65, False: 5.41k]
  ------------------
  658|     65|		zend_array_destroy(op_array->static_variables);
  659|     65|	}
  660|  5.47k|	if (op_array->num_dynamic_func_defs) {
  ------------------
  |  Branch (660:6): [True: 242, False: 5.23k]
  ------------------
  661|    505|		for (i = 0; i < op_array->num_dynamic_func_defs; i++) {
  ------------------
  |  Branch (661:15): [True: 263, False: 242]
  ------------------
  662|    263|			destroy_op_array(op_array->dynamic_func_defs[i]);
  663|    263|		}
  664|       |		efree(op_array->dynamic_func_defs);
  ------------------
  |  |  154|    242|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    242|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    242|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    242|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    242|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  665|    242|	}
  666|  5.47k|}
pass_two:
 1092|  5.90k|{
 1093|  5.90k|	zend_op *opline, *end;
 1094|       |
 1095|  5.90k|	if (!ZEND_USER_CODE(op_array->type)) {
  ------------------
  |  | 1081|  5.90k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (1095:6): [True: 0, False: 5.90k]
  ------------------
 1096|      0|		return;
 1097|      0|	}
 1098|  5.90k|	if (CG(compiler_options) & ZEND_COMPILE_EXTENDED_STMT) {
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_EXTENDED_STMT) {
  ------------------
  |  | 1261|  5.90k|#define ZEND_COMPILE_EXTENDED_STMT              (1<<0)
  ------------------
  |  Branch (1098:6): [True: 0, False: 5.90k]
  ------------------
 1099|      0|		zend_update_extended_stmts(op_array);
 1100|      0|	}
 1101|  5.90k|	if (CG(compiler_options) & ZEND_COMPILE_HANDLE_OP_ARRAY) {
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
              	if (CG(compiler_options) & ZEND_COMPILE_HANDLE_OP_ARRAY) {
  ------------------
  |  | 1266|  5.90k|#define ZEND_COMPILE_HANDLE_OP_ARRAY            (1<<2)
  ------------------
  |  Branch (1101:6): [True: 5.90k, False: 0]
  ------------------
 1102|  5.90k|		if (zend_extension_flags & ZEND_EXTENSIONS_HAVE_OP_ARRAY_HANDLER) {
  ------------------
  |  |  139|  5.90k|#define ZEND_EXTENSIONS_HAVE_OP_ARRAY_HANDLER      (1<<2)
  ------------------
  |  Branch (1102:7): [True: 0, False: 5.90k]
  ------------------
 1103|      0|			zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_op_array_handler, op_array);
 1104|      0|		}
 1105|  5.90k|	}
 1106|       |
 1107|  5.90k|	if (CG(context).vars_size != op_array->last_var) {
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1107:6): [True: 3.16k, False: 2.73k]
  ------------------
 1108|  3.16k|		op_array->vars = (zend_string**) erealloc(op_array->vars, sizeof(zend_string*)*op_array->last_var);
  ------------------
  |  |  158|  3.16k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.16k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.16k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.16k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.16k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|  3.16k|		CG(context).vars_size = op_array->last_var;
  ------------------
  |  |   35|  3.16k|# define CG(v) (compiler_globals.v)
  ------------------
 1110|  3.16k|	}
 1111|       |
 1112|       |#if ZEND_USE_ABS_CONST_ADDR
 1113|       |	if (CG(context).opcodes_size != op_array->last) {
 1114|       |		op_array->opcodes = (zend_op *) erealloc(op_array->opcodes, sizeof(zend_op)*op_array->last);
 1115|       |		CG(context).opcodes_size = op_array->last;
 1116|       |	}
 1117|       |	if (CG(context).literals_size != op_array->last_literal) {
 1118|       |		op_array->literals = (zval*)erealloc(op_array->literals, sizeof(zval) * op_array->last_literal);
 1119|       |		CG(context).literals_size = op_array->last_literal;
 1120|       |	}
 1121|       |#else
 1122|  5.90k|	op_array->opcodes = (zend_op *) erealloc(op_array->opcodes,
  ------------------
  |  |  158|  5.90k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  5.90k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  5.90k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  5.90k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  5.90k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1123|  5.90k|		ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op) * op_array->last, 16) +
 1124|  5.90k|		sizeof(zval) * op_array->last_literal);
 1125|  5.90k|	if (op_array->literals) {
  ------------------
  |  Branch (1125:6): [True: 5.90k, False: 2]
  ------------------
 1126|  5.90k|		memcpy(((char*)op_array->opcodes) + ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op) * op_array->last, 16),
  ------------------
  |  |   37|  5.90k|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 1127|  5.90k|			op_array->literals, sizeof(zval) * op_array->last_literal);
 1128|  5.90k|		efree(op_array->literals);
  ------------------
  |  |  154|  5.90k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  5.90k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  5.90k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  5.90k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  5.90k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1129|  5.90k|		op_array->literals = (zval*)(((char*)op_array->opcodes) + ZEND_MM_ALIGNED_SIZE_EX(sizeof(zend_op) * op_array->last, 16));
  ------------------
  |  |   37|  5.90k|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 1130|  5.90k|	}
 1131|  5.90k|	CG(context).opcodes_size = op_array->last;
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
 1132|  5.90k|	CG(context).literals_size = op_array->last_literal;
  ------------------
  |  |   35|  5.90k|# define CG(v) (compiler_globals.v)
  ------------------
 1133|  5.90k|#endif
 1134|       |
 1135|  5.90k|    op_array->T += ZEND_OBSERVER_ENABLED; // reserve last temporary for observers if enabled
  ------------------
  |  |   46|  5.90k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  ------------------
 1136|       |
 1137|       |	/* Needs to be set directly after the opcode/literal reallocation, to ensure destruction
 1138|       |	 * happens correctly if any of the following fixups generate a fatal error. */
 1139|  5.90k|	op_array->fn_flags |= ZEND_ACC_DONE_PASS_TWO;
  ------------------
  |  |  390|  5.90k|#define ZEND_ACC_DONE_PASS_TWO           (1 << 25) /*     |  X  |     |     */
  ------------------
 1140|       |
 1141|  5.90k|	opline = op_array->opcodes;
 1142|  5.90k|	end = opline + op_array->last;
 1143|  53.7k|	while (opline < end) {
  ------------------
  |  Branch (1143:9): [True: 47.8k, False: 5.89k]
  ------------------
 1144|  47.8k|		switch (opline->opcode) {
  ------------------
  |  Branch (1144:11): [True: 8.46k, False: 39.3k]
  ------------------
 1145|    100|			case ZEND_RECV_INIT:
  ------------------
  |  |  187|    100|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (1145:4): [True: 100, False: 47.7k]
  ------------------
 1146|    100|				{
 1147|    100|					zval *val = CT_CONSTANT(opline->op2);
  ------------------
  |  |  820|    100|	CT_CONSTANT_EX(CG(active_op_array), (node).constant)
  |  |  ------------------
  |  |  |  |  817|    100|	((op_array)->literals + (num))
  |  |  ------------------
  ------------------
 1148|    100|					if (Z_TYPE_P(val) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|    100|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    100|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(val) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    100|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1148:10): [True: 36, False: 64]
  ------------------
 1149|     36|						uint32_t slot = ZEND_MM_ALIGNED_SIZE_EX(op_array->cache_size, 8);
  ------------------
  |  |   37|     36|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 1150|     36|						Z_CACHE_SLOT_P(val) = slot;
  ------------------
  |  |  684|     36|#define Z_CACHE_SLOT_P(zval_p)		Z_CACHE_SLOT(*(zval_p))
  |  |  ------------------
  |  |  |  |  683|     36|#define Z_CACHE_SLOT(zval)			(zval).u2.cache_slot
  |  |  ------------------
  ------------------
 1151|     36|						op_array->cache_size += sizeof(zval);
 1152|     36|					}
 1153|    100|				}
 1154|    100|				break;
 1155|     51|			case ZEND_FAST_CALL:
  ------------------
  |  |  284|     51|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (1155:4): [True: 51, False: 47.7k]
  ------------------
 1156|     51|				opline->op1.opline_num = op_array->try_catch_array[opline->op1.num].finally_op;
 1157|     51|				ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1);
  ------------------
  |  |  804|     51|# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \
  |  |  805|     51|		(node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \
  |  |  ------------------
  |  |  |  |  765|     51|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  |  |  ------------------
  |  |  806|     51|	} while (0)
  |  |  ------------------
  |  |  |  Branch (806:11): [Folded, False: 51]
  |  |  ------------------
  ------------------
 1158|     51|				break;
 1159|     20|			case ZEND_BRK:
  ------------------
  |  | 1238|     20|#define ZEND_BRK   254
  ------------------
  |  Branch (1159:4): [True: 20, False: 47.8k]
  ------------------
 1160|     21|			case ZEND_CONT:
  ------------------
  |  | 1239|     21|#define ZEND_CONT  255
  ------------------
  |  Branch (1160:4): [True: 1, False: 47.8k]
  ------------------
 1161|     21|				{
 1162|     21|					uint32_t jmp_target = zend_get_brk_cont_target(opline);
 1163|       |
 1164|     21|					if (op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK) {
  ------------------
  |  |  361|     21|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (1164:10): [True: 0, False: 21]
  ------------------
 1165|      0|						zend_check_finally_breakout(op_array, opline - op_array->opcodes, jmp_target);
 1166|      0|					}
 1167|     21|					opline->opcode = ZEND_JMP;
  ------------------
  |  |  166|     21|#define ZEND_JMP                             42
  ------------------
 1168|     21|					opline->op1.opline_num = jmp_target;
 1169|     21|					opline->op2.num = 0;
 1170|     21|					ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1);
  ------------------
  |  |  804|     21|# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \
  |  |  805|     21|		(node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \
  |  |  ------------------
  |  |  |  |  765|     21|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  |  |  ------------------
  |  |  806|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (806:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
 1171|     21|				}
 1172|     21|				break;
 1173|     40|			case ZEND_GOTO:
  ------------------
  |  | 1237|     40|#define ZEND_GOTO  253
  ------------------
  |  Branch (1173:4): [True: 40, False: 47.7k]
  ------------------
 1174|     40|				zend_resolve_goto_label(op_array, opline);
 1175|     40|				if (op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK) {
  ------------------
  |  |  361|     40|#define ZEND_ACC_HAS_FINALLY_BLOCK       (1 << 15) /*     |  X  |     |     */
  ------------------
  |  Branch (1175:9): [True: 7, False: 33]
  ------------------
 1176|      7|					zend_check_finally_breakout(op_array, opline - op_array->opcodes, opline->op1.opline_num);
 1177|      7|				}
 1178|     40|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     40|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1179|    830|			case ZEND_JMP:
  ------------------
  |  |  166|    830|#define ZEND_JMP                             42
  ------------------
  |  Branch (1179:4): [True: 790, False: 47.0k]
  ------------------
 1180|    830|				ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1);
  ------------------
  |  |  804|    830|# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \
  |  |  805|    830|		(node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \
  |  |  ------------------
  |  |  |  |  765|    830|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  |  |  ------------------
  |  |  806|    830|	} while (0)
  |  |  ------------------
  |  |  |  Branch (806:11): [Folded, False: 830]
  |  |  ------------------
  ------------------
 1181|    830|				break;
 1182|    104|			case ZEND_JMPZ:
  ------------------
  |  |  167|    104|#define ZEND_JMPZ                            43
  ------------------
  |  Branch (1182:4): [True: 104, False: 47.7k]
  ------------------
 1183|    408|			case ZEND_JMPNZ:
  ------------------
  |  |  168|    408|#define ZEND_JMPNZ                           44
  ------------------
  |  Branch (1183:4): [True: 304, False: 47.5k]
  ------------------
 1184|    444|			case ZEND_JMPZ_EX:
  ------------------
  |  |  169|    444|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (1184:4): [True: 36, False: 47.8k]
  ------------------
 1185|    451|			case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|    451|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (1185:4): [True: 7, False: 47.8k]
  ------------------
 1186|    468|			case ZEND_JMP_SET:
  ------------------
  |  |  274|    468|#define ZEND_JMP_SET                        152
  ------------------
  |  Branch (1186:4): [True: 17, False: 47.8k]
  ------------------
 1187|    505|			case ZEND_COALESCE:
  ------------------
  |  |  291|    505|#define ZEND_COALESCE                       169
  ------------------
  |  Branch (1187:4): [True: 37, False: 47.8k]
  ------------------
 1188|    620|			case ZEND_FE_RESET_R:
  ------------------
  |  |  200|    620|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (1188:4): [True: 115, False: 47.7k]
  ------------------
 1189|    692|			case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|    692|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (1189:4): [True: 72, False: 47.7k]
  ------------------
 1190|    758|			case ZEND_JMP_NULL:
  ------------------
  |  |  320|    758|#define ZEND_JMP_NULL                       198
  ------------------
  |  Branch (1190:4): [True: 66, False: 47.7k]
  ------------------
 1191|    770|			case ZEND_BIND_INIT_STATIC_OR_JMP:
  ------------------
  |  |  325|    770|#define ZEND_BIND_INIT_STATIC_OR_JMP        203
  ------------------
  |  Branch (1191:4): [True: 12, False: 47.8k]
  ------------------
 1192|    770|			case ZEND_JMP_FRAMELESS:
  ------------------
  |  |  330|    770|#define ZEND_JMP_FRAMELESS                  208
  ------------------
  |  Branch (1192:4): [True: 0, False: 47.8k]
  ------------------
 1193|    770|				ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2);
  ------------------
  |  |  804|    770|# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \
  |  |  805|    770|		(node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \
  |  |  ------------------
  |  |  |  |  765|    770|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  |  |  ------------------
  |  |  806|    770|	} while (0)
  |  |  ------------------
  |  |  |  Branch (806:11): [Folded, False: 770]
  |  |  ------------------
  ------------------
 1194|    770|				break;
 1195|     88|			case ZEND_ASSERT_CHECK:
  ------------------
  |  |  273|     88|#define ZEND_ASSERT_CHECK                   151
  ------------------
  |  Branch (1195:4): [True: 88, False: 47.7k]
  ------------------
 1196|     88|			{
 1197|       |				/* If result of assert is unused, result of check is unused as well */
 1198|     88|				zend_op *call = &op_array->opcodes[opline->op2.opline_num - 1];
 1199|     88|				if (call->opcode == ZEND_EXT_FCALL_END) {
  ------------------
  |  |  225|     88|#define ZEND_EXT_FCALL_END                  103
  ------------------
  |  Branch (1199:9): [True: 0, False: 88]
  ------------------
 1200|      0|					call--;
 1201|      0|				}
 1202|     88|				if (call->result_type == IS_UNUSED) {
  ------------------
  |  |  863|     88|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (1202:9): [True: 41, False: 47]
  ------------------
 1203|     41|					opline->result_type = IS_UNUSED;
  ------------------
  |  |  863|     41|#define IS_UNUSED	0		/* Unused operand */
  ------------------
 1204|     41|				}
 1205|     88|				ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2);
  ------------------
  |  |  804|     88|# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \
  |  |  805|     88|		(node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \
  |  |  ------------------
  |  |  |  |  765|     88|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  |  |  ------------------
  |  |  806|     88|	} while (0)
  |  |  ------------------
  |  |  |  Branch (806:11): [Folded, False: 88]
  |  |  ------------------
  ------------------
 1206|     88|				break;
 1207|    770|			}
 1208|    115|			case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|    115|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (1208:4): [True: 115, False: 47.7k]
  ------------------
 1209|    187|			case ZEND_FE_FETCH_RW:
  ------------------
  |  |  248|    187|#define ZEND_FE_FETCH_RW                    126
  ------------------
  |  Branch (1209:4): [True: 72, False: 47.7k]
  ------------------
 1210|       |				/* absolute index to relative offset */
 1211|    187|				opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value);
  ------------------
  |  |  765|    187|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  ------------------
 1212|    187|				break;
 1213|    186|			case ZEND_CATCH:
  ------------------
  |  |  229|    186|#define ZEND_CATCH                          107
  ------------------
  |  Branch (1213:4): [True: 186, False: 47.6k]
  ------------------
 1214|    186|				if (!(opline->extended_value & ZEND_LAST_CATCH)) {
  ------------------
  |  | 1110|    186|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  |  Branch (1214:9): [True: 2, False: 184]
  ------------------
 1215|      2|					ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2);
  ------------------
  |  |  804|      2|# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \
  |  |  805|      2|		(node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \
  |  |  ------------------
  |  |  |  |  765|      2|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  |  |  ------------------
  |  |  806|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (806:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1216|      2|				}
 1217|    186|				break;
 1218|  6.10k|			case ZEND_RETURN:
  ------------------
  |  |  185|  6.10k|#define ZEND_RETURN                          62
  ------------------
  |  Branch (1218:4): [True: 6.10k, False: 41.7k]
  ------------------
 1219|  6.22k|			case ZEND_RETURN_BY_REF:
  ------------------
  |  |  233|  6.22k|#define ZEND_RETURN_BY_REF                  111
  ------------------
  |  Branch (1219:4): [True: 116, False: 47.7k]
  ------------------
 1220|  6.22k|				if (op_array->fn_flags & ZEND_ACC_GENERATOR) {
  ------------------
  |  |  387|  6.22k|#define ZEND_ACC_GENERATOR               (1 << 24) /*     |  X  |     |     */
  ------------------
  |  Branch (1220:9): [True: 105, False: 6.11k]
  ------------------
 1221|    105|					opline->opcode = ZEND_GENERATOR_RETURN;
  ------------------
  |  |  283|    105|#define ZEND_GENERATOR_RETURN               161
  ------------------
 1222|    105|				}
 1223|  6.22k|				break;
 1224|      0|			case ZEND_SWITCH_LONG:
  ------------------
  |  |  309|      0|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (1224:4): [True: 0, False: 47.8k]
  ------------------
 1225|      0|			case ZEND_SWITCH_STRING:
  ------------------
  |  |  310|      0|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (1225:4): [True: 0, False: 47.8k]
  ------------------
 1226|     10|			case ZEND_MATCH:
  ------------------
  |  |  317|     10|#define ZEND_MATCH                          195
  ------------------
  |  Branch (1226:4): [True: 10, False: 47.8k]
  ------------------
 1227|     10|			{
 1228|       |				/* absolute indexes to relative offsets */
 1229|     10|				HashTable *jumptable = Z_ARRVAL_P(CT_CONSTANT(opline->op2));
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1230|     10|				zval *zv;
 1231|     79|				ZEND_HASH_FOREACH_VAL(jumptable, zv) {
  ------------------
  |  | 1117|     39|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|     10|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|     10|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|     10|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|     10|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|     10|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|     10|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|     10|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     49|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|     39|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 39, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 1034|     39|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 9, False: 30]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|     30|	_val = _z;
  ------------------
 1232|     79|					Z_LVAL_P(zv) = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, Z_LVAL_P(zv));
  ------------------
  |  |  976|     30|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     30|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              					Z_LVAL_P(zv) = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, Z_LVAL_P(zv));
  ------------------
  |  |  765|     30|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  ------------------
 1233|     79|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     30|		} \
  |  | 1102|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1234|       |
 1235|     10|				opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value);
  ------------------
  |  |  765|     10|	((char*)&(op_array)->opcodes[opline_num] - (char*)(opline))
  ------------------
 1236|     10|				break;
 1237|      0|			}
 1238|  47.8k|		}
 1239|  47.8k|		if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|  47.8k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1239:7): [True: 14.8k, False: 32.9k]
  ------------------
 1240|  14.8k|			ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op1);
  ------------------
  |  |  844|  14.8k|# define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, node) do { \
  |  |  845|  14.8k|		(node).constant = \
  |  |  846|  14.8k|			(((char*)CT_CONSTANT_EX(op_array, (node).constant)) - \
  |  |  ------------------
  |  |  |  |  817|  14.8k|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  847|  14.8k|			((char*)opline)); \
  |  |  848|  14.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (848:11): [Folded, False: 14.8k]
  |  |  ------------------
  ------------------
 1241|  32.9k|		} else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|  32.9k|#define IS_VAR		(1<<2)
  ------------------
              		} else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|  32.9k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1241:14): [True: 10.0k, False: 22.8k]
  ------------------
 1242|  10.0k|			opline->op1.var = EX_NUM_TO_VAR(op_array->last_var + opline->op1.var);
  ------------------
  |  |  759|  10.0k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  10.0k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1243|  10.0k|		}
 1244|  47.8k|		if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|  47.8k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (1244:7): [True: 10.6k, False: 37.1k]
  ------------------
 1245|  10.6k|			ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op2);
  ------------------
  |  |  844|  10.6k|# define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, node) do { \
  |  |  845|  10.6k|		(node).constant = \
  |  |  846|  10.6k|			(((char*)CT_CONSTANT_EX(op_array, (node).constant)) - \
  |  |  ------------------
  |  |  |  |  817|  10.6k|	((op_array)->literals + (num))
  |  |  ------------------
  |  |  847|  10.6k|			((char*)opline)); \
  |  |  848|  10.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (848:11): [Folded, False: 10.6k]
  |  |  ------------------
  ------------------
 1246|  37.1k|		} else if (opline->op2_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|  37.1k|#define IS_VAR		(1<<2)
  ------------------
              		} else if (opline->op2_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|  37.1k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1246:14): [True: 2.70k, False: 34.4k]
  ------------------
 1247|  2.70k|			opline->op2.var = EX_NUM_TO_VAR(op_array->last_var + opline->op2.var);
  ------------------
  |  |  759|  2.70k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  2.70k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1248|  2.70k|		}
 1249|  47.8k|		if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|  47.8k|#define IS_VAR		(1<<2)
  ------------------
              		if (opline->result_type & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|  47.8k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (1249:7): [True: 12.7k, False: 35.0k]
  ------------------
 1250|  12.7k|			opline->result.var = EX_NUM_TO_VAR(op_array->last_var + opline->result.var);
  ------------------
  |  |  759|  12.7k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  12.7k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1251|  12.7k|		}
 1252|  47.8k|		ZEND_VM_SET_OPCODE_HANDLER(opline);
  ------------------
  |  |   48|  47.8k|#define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline)
  ------------------
 1253|  47.8k|		opline++;
 1254|  47.8k|	}
 1255|       |
 1256|  5.89k|	zend_calc_live_ranges(op_array, NULL);
 1257|       |
 1258|  5.89k|	return;
 1259|  5.90k|}
get_unary_op:
 1262|    137|{
 1263|    137|	switch (opcode) {
 1264|     71|		case ZEND_BW_NOT:
  ------------------
  |  |  137|     71|#define ZEND_BW_NOT                          13
  ------------------
  |  Branch (1264:3): [True: 71, False: 66]
  ------------------
 1265|     71|			return (unary_op_type) bitwise_not_function;
 1266|     66|		case ZEND_BOOL_NOT:
  ------------------
  |  |  138|     66|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (1266:3): [True: 66, False: 71]
  ------------------
 1267|     66|			return (unary_op_type) boolean_not_function;
 1268|      0|		default:
  ------------------
  |  Branch (1268:3): [True: 0, False: 137]
  ------------------
 1269|       |			return (unary_op_type) NULL;
 1270|    137|	}
 1271|    137|}
get_binary_op:
 1274|  1.11k|{
 1275|  1.11k|	switch (opcode) {
 1276|     40|		case ZEND_ADD:
  ------------------
  |  |  125|     40|#define ZEND_ADD                              1
  ------------------
  |  Branch (1276:3): [True: 40, False: 1.07k]
  ------------------
 1277|     40|			return (binary_op_type) add_function;
 1278|    124|		case ZEND_SUB:
  ------------------
  |  |  126|    124|#define ZEND_SUB                              2
  ------------------
  |  Branch (1278:3): [True: 124, False: 992]
  ------------------
 1279|    124|			return (binary_op_type) sub_function;
 1280|    389|		case ZEND_MUL:
  ------------------
  |  |  127|    389|#define ZEND_MUL                              3
  ------------------
  |  Branch (1280:3): [True: 389, False: 727]
  ------------------
 1281|    389|			return (binary_op_type) mul_function;
 1282|     75|		case ZEND_POW:
  ------------------
  |  |  136|     75|#define ZEND_POW                             12
  ------------------
  |  Branch (1282:3): [True: 75, False: 1.04k]
  ------------------
 1283|     75|			return (binary_op_type) pow_function;
 1284|    115|		case ZEND_DIV:
  ------------------
  |  |  128|    115|#define ZEND_DIV                              4
  ------------------
  |  Branch (1284:3): [True: 115, False: 1.00k]
  ------------------
 1285|    115|			return (binary_op_type) div_function;
 1286|     21|		case ZEND_MOD:
  ------------------
  |  |  129|     21|#define ZEND_MOD                              5
  ------------------
  |  Branch (1286:3): [True: 21, False: 1.09k]
  ------------------
 1287|     21|			return (binary_op_type) mod_function;
 1288|     25|		case ZEND_SL:
  ------------------
  |  |  130|     25|#define ZEND_SL                               6
  ------------------
  |  Branch (1288:3): [True: 25, False: 1.09k]
  ------------------
 1289|     25|			return (binary_op_type) shift_left_function;
 1290|      5|		case ZEND_SR:
  ------------------
  |  |  131|      5|#define ZEND_SR                               7
  ------------------
  |  Branch (1290:3): [True: 5, False: 1.11k]
  ------------------
 1291|      5|			return (binary_op_type) shift_right_function;
 1292|      0|		case ZEND_FAST_CONCAT:
  ------------------
  |  |  176|      0|#define ZEND_FAST_CONCAT                     53
  ------------------
  |  Branch (1292:3): [True: 0, False: 1.11k]
  ------------------
 1293|     61|		case ZEND_CONCAT:
  ------------------
  |  |  132|     61|#define ZEND_CONCAT                           8
  ------------------
  |  Branch (1293:3): [True: 61, False: 1.05k]
  ------------------
 1294|     61|			return (binary_op_type) concat_function;
 1295|      8|		case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      8|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (1295:3): [True: 8, False: 1.10k]
  ------------------
 1296|      8|		case ZEND_CASE_STRICT:
  ------------------
  |  |  318|      8|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (1296:3): [True: 0, False: 1.11k]
  ------------------
 1297|      8|			return (binary_op_type) is_identical_function;
 1298|      0|		case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (1298:3): [True: 0, False: 1.11k]
  ------------------
 1299|      0|			return (binary_op_type) is_not_identical_function;
 1300|     25|		case ZEND_IS_EQUAL:
  ------------------
  |  |  142|     25|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (1300:3): [True: 25, False: 1.09k]
  ------------------
 1301|     25|		case ZEND_CASE:
  ------------------
  |  |  171|     25|#define ZEND_CASE                            48
  ------------------
  |  Branch (1301:3): [True: 0, False: 1.11k]
  ------------------
 1302|     25|			return (binary_op_type) is_equal_function;
 1303|      4|		case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      4|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (1303:3): [True: 4, False: 1.11k]
  ------------------
 1304|      4|			return (binary_op_type) is_not_equal_function;
 1305|     62|		case ZEND_IS_SMALLER:
  ------------------
  |  |  144|     62|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (1305:3): [True: 62, False: 1.05k]
  ------------------
 1306|     62|			return (binary_op_type) is_smaller_function;
 1307|      2|		case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      2|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (1307:3): [True: 2, False: 1.11k]
  ------------------
 1308|      2|			return (binary_op_type) is_smaller_or_equal_function;
 1309|      4|		case ZEND_SPACESHIP:
  ------------------
  |  |  292|      4|#define ZEND_SPACESHIP                      170
  ------------------
  |  Branch (1309:3): [True: 4, False: 1.11k]
  ------------------
 1310|      4|			return (binary_op_type) compare_function;
 1311|     15|		case ZEND_BW_OR:
  ------------------
  |  |  133|     15|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (1311:3): [True: 15, False: 1.10k]
  ------------------
 1312|     15|			return (binary_op_type) bitwise_or_function;
 1313|     33|		case ZEND_BW_AND:
  ------------------
  |  |  134|     33|#define ZEND_BW_AND                          10
  ------------------
  |  Branch (1313:3): [True: 33, False: 1.08k]
  ------------------
 1314|     33|			return (binary_op_type) bitwise_and_function;
 1315|    107|		case ZEND_BW_XOR:
  ------------------
  |  |  135|    107|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (1315:3): [True: 107, False: 1.00k]
  ------------------
 1316|    107|			return (binary_op_type) bitwise_xor_function;
 1317|      1|		case ZEND_BOOL_XOR:
  ------------------
  |  |  139|      1|#define ZEND_BOOL_XOR                        15
  ------------------
  |  Branch (1317:3): [True: 1, False: 1.11k]
  ------------------
 1318|      1|			return (binary_op_type) boolean_xor_function;
 1319|      0|		default:
  ------------------
  |  Branch (1319:3): [True: 0, False: 1.11k]
  ------------------
 1320|      0|			ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1320:4): [Folded, False: 0]
  |  Branch (1320:4): [Folded, False: 0]
  ------------------
 1321|      0|			return (binary_op_type) NULL;
 1322|  1.11k|	}
 1323|  1.11k|}
zend_opcode.c:_destroy_zend_class_traits_info:
  214|     97|{
  215|     97|	uint32_t i;
  216|       |
  217|    208|	for (i = 0; i < ce->num_traits; i++) {
  ------------------
  |  Branch (217:14): [True: 111, False: 97]
  ------------------
  218|    111|		zend_string_release_ex(ce->trait_names[i].name, 0);
  219|    111|		zend_string_release_ex(ce->trait_names[i].lc_name, 0);
  220|    111|	}
  221|     97|	efree(ce->trait_names);
  ------------------
  |  |  154|     97|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     97|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     97|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     97|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     97|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|       |
  223|     97|	if (ce->trait_aliases) {
  ------------------
  |  Branch (223:6): [True: 15, False: 82]
  ------------------
  224|     15|		i = 0;
  225|     32|		while (ce->trait_aliases[i]) {
  ------------------
  |  Branch (225:10): [True: 17, False: 15]
  ------------------
  226|     17|			if (ce->trait_aliases[i]->trait_method.method_name) {
  ------------------
  |  Branch (226:8): [True: 17, False: 0]
  ------------------
  227|     17|				zend_string_release_ex(ce->trait_aliases[i]->trait_method.method_name, 0);
  228|     17|			}
  229|     17|			if (ce->trait_aliases[i]->trait_method.class_name) {
  ------------------
  |  Branch (229:8): [True: 4, False: 13]
  ------------------
  230|      4|				zend_string_release_ex(ce->trait_aliases[i]->trait_method.class_name, 0);
  231|      4|			}
  232|       |
  233|     17|			if (ce->trait_aliases[i]->alias) {
  ------------------
  |  Branch (233:8): [True: 12, False: 5]
  ------------------
  234|     12|				zend_string_release_ex(ce->trait_aliases[i]->alias, 0);
  235|     12|			}
  236|       |
  237|     17|			efree(ce->trait_aliases[i]);
  ------------------
  |  |  154|     17|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|     17|			i++;
  239|     17|		}
  240|       |
  241|     15|		efree(ce->trait_aliases);
  ------------------
  |  |  154|     15|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     15|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     15|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     15|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     15|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  242|     15|	}
  243|       |
  244|     97|	if (ce->trait_precedences) {
  ------------------
  |  Branch (244:6): [True: 2, False: 95]
  ------------------
  245|      2|		uint32_t j;
  246|       |
  247|      2|		i = 0;
  248|      5|		while (ce->trait_precedences[i]) {
  ------------------
  |  Branch (248:10): [True: 3, False: 2]
  ------------------
  249|      3|			zend_string_release_ex(ce->trait_precedences[i]->trait_method.method_name, 0);
  250|      3|			zend_string_release_ex(ce->trait_precedences[i]->trait_method.class_name, 0);
  251|       |
  252|      6|			for (j = 0; j < ce->trait_precedences[i]->num_excludes; j++) {
  ------------------
  |  Branch (252:16): [True: 3, False: 3]
  ------------------
  253|      3|				zend_string_release_ex(ce->trait_precedences[i]->exclude_class_names[j], 0);
  254|      3|			}
  255|      3|			efree(ce->trait_precedences[i]);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|      3|			i++;
  257|      3|		}
  258|       |		efree(ce->trait_precedences);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|      2|	}
  260|     97|}
zend_opcode.c:zend_calc_live_ranges:
  945|  5.89k|		zend_op_array *op_array, zend_needs_live_range_cb needs_live_range) {
  946|  5.89k|	uint32_t opnum = op_array->last;
  947|  5.89k|	zend_op *opline = &op_array->opcodes[opnum];
  948|  5.89k|	ALLOCA_FLAG(use_heap)
  949|  5.89k|	uint32_t var_offset = op_array->last_var;
  950|  5.89k|	uint32_t *last_use = do_alloca(sizeof(uint32_t) * op_array->T, use_heap);
  ------------------
  |  |  247|  5.89k|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|  5.89k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  5.89k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  5.89k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  5.89k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  5.89k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|  5.89k|	memset(last_use, -1, sizeof(uint32_t) * op_array->T);
  952|       |
  953|  5.89k|	ZEND_ASSERT(!op_array->live_range);
  ------------------
  |  |  112|  5.89k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (953:2): [True: 0, False: 5.89k]
  |  Branch (953:2): [True: 5.89k, False: 0]
  ------------------
  954|  53.7k|	while (opnum > 0) {
  ------------------
  |  Branch (954:9): [True: 47.8k, False: 5.89k]
  ------------------
  955|  47.8k|		opnum--;
  956|  47.8k|		opline--;
  957|       |
  958|       |		/* SEPARATE always redeclares its op1. For the purposes of live-ranges,
  959|       |		 * its declaration is irrelevant. Don't terminate the current live-range
  960|       |		 * to avoid breaking special handling of COPY_TMP. */
  961|  47.8k|		if (opline->opcode == ZEND_SEPARATE) {
  ------------------
  |  |  278|  47.8k|#define ZEND_SEPARATE                       156
  ------------------
  |  Branch (961:7): [True: 25, False: 47.7k]
  ------------------
  962|     25|			ZEND_ASSERT(opline->op1.var == opline->result.var);
  ------------------
  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (962:4): [True: 0, False: 25]
  |  Branch (962:4): [True: 25, False: 0]
  ------------------
  963|     25|			continue;
  964|     25|		}
  965|       |
  966|  47.7k|		if ((opline->result_type & (IS_TMP_VAR|IS_VAR)) && !is_fake_def(opline)) {
  ------------------
  |  |  865|  47.7k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((opline->result_type & (IS_TMP_VAR|IS_VAR)) && !is_fake_def(opline)) {
  ------------------
  |  |  866|  47.7k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (966:7): [True: 12.7k, False: 35.0k]
  |  Branch (966:54): [True: 11.8k, False: 875]
  ------------------
  967|  11.8k|			uint32_t var_num = EX_VAR_TO_NUM(opline->result.var) - var_offset;
  ------------------
  |  |  758|  11.8k|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|  11.8k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  968|       |			/* Defs without uses can occur for two reasons: Either because the result is
  969|       |			 * genuinely unused (e.g. omitted FREE opcode for an unused boolean result), or
  970|       |			 * because there are multiple defining opcodes (e.g. JMPZ_EX and QM_ASSIGN), in
  971|       |			 * which case the last one starts the live range. As such, we can simply ignore
  972|       |			 * missing uses here. */
  973|  11.8k|			if (EXPECTED(last_use[var_num] != (uint32_t) -1)) {
  ------------------
  |  |  456|  11.8k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11.5k, False: 341]
  |  |  ------------------
  ------------------
  974|       |				/* Skip trivial live-range */
  975|  11.5k|				if (opnum + 1 != last_use[var_num]) {
  ------------------
  |  Branch (975:9): [True: 3.37k, False: 8.12k]
  ------------------
  976|  3.37k|					uint32_t num;
  977|       |
  978|  3.37k|#if 1
  979|       |					/* OP_DATA uses only op1 operand */
  980|  3.37k|					ZEND_ASSERT(opline->opcode != ZEND_OP_DATA);
  ------------------
  |  |  112|  3.37k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (980:6): [True: 0, False: 3.37k]
  |  Branch (980:6): [True: 3.37k, False: 0]
  ------------------
  981|  3.37k|					num = opnum;
  982|       |#else
  983|       |					/* OP_DATA is really part of the previous opcode. */
  984|       |					num = opnum - (opline->opcode == ZEND_OP_DATA);
  985|       |#endif
  986|  3.37k|					emit_live_range(op_array, var_num, num, last_use[var_num], needs_live_range);
  987|  3.37k|				}
  988|  11.5k|				last_use[var_num] = (uint32_t) -1;
  989|  11.5k|			}
  990|  11.8k|		}
  991|       |
  992|  47.7k|		if ((opline->op1_type & (IS_TMP_VAR|IS_VAR))) {
  ------------------
  |  |  865|  47.7k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((opline->op1_type & (IS_TMP_VAR|IS_VAR))) {
  ------------------
  |  |  866|  47.7k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (992:7): [True: 10.1k, False: 37.6k]
  ------------------
  993|  10.1k|			uint32_t var_num = EX_VAR_TO_NUM(opline->op1.var) - var_offset;
  ------------------
  |  |  758|  10.1k|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|  10.1k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  994|  10.1k|			if (EXPECTED(last_use[var_num] == (uint32_t) -1)) {
  ------------------
  |  |  456|  10.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8.91k, False: 1.21k]
  |  |  ------------------
  ------------------
  995|  8.91k|				if (EXPECTED(!keeps_op1_alive(opline))) {
  ------------------
  |  |  456|  8.91k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8.91k, False: 0]
  |  |  ------------------
  ------------------
  996|       |					/* OP_DATA is really part of the previous opcode. */
  997|  8.91k|					last_use[var_num] = opnum - (opline->opcode == ZEND_OP_DATA);
  ------------------
  |  |  259|  8.91k|#define ZEND_OP_DATA                        137
  ------------------
  998|  8.91k|				}
  999|  8.91k|			} else if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && opline->extended_value & ZEND_FREE_ON_RETURN) {
  ------------------
  |  |  193|  2.43k|#define ZEND_FREE                            70
  ------------------
              			} else if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && opline->extended_value & ZEND_FREE_ON_RETURN) {
  ------------------
  |  |  249|  1.21k|#define ZEND_FE_FREE                        127
  ------------------
              			} else if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && opline->extended_value & ZEND_FREE_ON_RETURN) {
  ------------------
  |  | 1112|      7|#define ZEND_FREE_ON_RETURN     (1<<0)
  ------------------
  |  Branch (999:16): [True: 2, False: 1.21k]
  |  Branch (999:47): [True: 5, False: 1.20k]
  |  Branch (999:82): [True: 7, False: 0]
  ------------------
 1000|      7|				int jump_offset = 1;
 1001|      7|				while (((opline + jump_offset)->opcode == ZEND_FREE || (opline + jump_offset)->opcode == ZEND_FE_FREE)
  ------------------
  |  |  193|     14|#define ZEND_FREE                            70
  ------------------
              				while (((opline + jump_offset)->opcode == ZEND_FREE || (opline + jump_offset)->opcode == ZEND_FE_FREE)
  ------------------
  |  |  249|      7|#define ZEND_FE_FREE                        127
  ------------------
  |  Branch (1001:13): [True: 0, False: 7]
  |  Branch (1001:60): [True: 0, False: 7]
  ------------------
 1002|      0|					&& (opline + jump_offset)->extended_value & ZEND_FREE_ON_RETURN) {
  ------------------
  |  | 1112|      0|#define ZEND_FREE_ON_RETURN     (1<<0)
  ------------------
  |  Branch (1002:9): [True: 0, False: 0]
  ------------------
 1003|      0|					++jump_offset;
 1004|      0|				}
 1005|       |				// loop var frees directly precede the jump (or return) operand, except that ZEND_VERIFY_RETURN_TYPE may happen first.
 1006|      7|				if ((opline + jump_offset)->opcode == ZEND_VERIFY_RETURN_TYPE) {
  ------------------
  |  |  246|      7|#define ZEND_VERIFY_RETURN_TYPE             124
  ------------------
  |  Branch (1006:9): [True: 0, False: 7]
  ------------------
 1007|      0|					++jump_offset;
 1008|      0|				}
 1009|       |				/* FREE with ZEND_FREE_ON_RETURN immediately followed by RETURN frees
 1010|       |				 * the loop variable on early return. We need to split the live range
 1011|       |				 * so GC doesn't access the freed variable after this FREE. */
 1012|      7|				uint32_t opnum_last_use = last_use[var_num];
 1013|      7|				zend_op *opline_last_use = op_array->opcodes + opnum_last_use;
 1014|      7|				ZEND_ASSERT(opline_last_use->opcode == opline->opcode); // any ZEND_FREE_ON_RETURN must be followed by a FREE without
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1014:5): [True: 0, False: 7]
  |  Branch (1014:5): [True: 7, False: 0]
  ------------------
 1015|      7|				if (opnum + jump_offset + 1 != opnum_last_use) {
  ------------------
  |  Branch (1015:9): [True: 6, False: 1]
  ------------------
 1016|      6|					emit_live_range_raw(op_array, var_num, opline->opcode == ZEND_FE_FREE ? ZEND_LIVE_LOOP : ZEND_LIVE_TMPVAR,
  ------------------
  |  |  249|      6|#define ZEND_FE_FREE                        127
  ------------------
              					emit_live_range_raw(op_array, var_num, opline->opcode == ZEND_FE_FREE ? ZEND_LIVE_LOOP : ZEND_LIVE_TMPVAR,
  ------------------
  |  |  180|      5|#define ZEND_LIVE_LOOP    1
  ------------------
              					emit_live_range_raw(op_array, var_num, opline->opcode == ZEND_FE_FREE ? ZEND_LIVE_LOOP : ZEND_LIVE_TMPVAR,
  ------------------
  |  |  179|      7|#define ZEND_LIVE_TMPVAR  0
  ------------------
  |  Branch (1016:45): [True: 5, False: 1]
  ------------------
 1017|      6|							opnum + jump_offset + 1, opnum_last_use);
 1018|      6|				}
 1019|       |
 1020|       |				/* Update last_use so next range includes this FREE */
 1021|      7|				last_use[var_num] = opnum;
 1022|       |
 1023|       |				/* Store opline offset to loop end */
 1024|      7|				opline->op2.opline_num = opnum_last_use - opnum;
 1025|      7|				if (opline_last_use->extended_value & ZEND_FREE_ON_RETURN) {
  ------------------
  |  | 1112|      7|#define ZEND_FREE_ON_RETURN     (1<<0)
  ------------------
  |  Branch (1025:9): [True: 1, False: 6]
  ------------------
 1026|      1|					opline->op2.opline_num += opline_last_use->op2.opline_num;
 1027|      1|				}
 1028|      7|			}
 1029|  10.1k|		}
 1030|  47.7k|		if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  47.7k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  47.7k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (1030:7): [True: 2.63k, False: 45.1k]
  ------------------
 1031|  2.63k|			uint32_t var_num = EX_VAR_TO_NUM(opline->op2.var) - var_offset;
  ------------------
  |  |  758|  2.63k|#define EX_VAR_TO_NUM(n)		((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
  |  |  ------------------
  |  |  |  |  719|  2.63k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
 1032|  2.63k|			if (UNEXPECTED(opline->opcode == ZEND_FE_FETCH_R
  ------------------
  |  |  457|  5.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 2.62k]
  |  |  |  Branch (457:52): [True: 7, False: 2.62k]
  |  |  |  Branch (457:52): [True: 4, False: 2.62k]
  |  |  ------------------
  ------------------
 1033|  2.63k|					|| opline->opcode == ZEND_FE_FETCH_RW)) {
 1034|       |				/* OP2 of FE_FETCH is actually a def, not a use. */
 1035|     11|				if (last_use[var_num] != (uint32_t) -1) {
  ------------------
  |  Branch (1035:9): [True: 11, False: 0]
  ------------------
 1036|     11|					if (opnum + 1 != last_use[var_num]) {
  ------------------
  |  Branch (1036:10): [True: 9, False: 2]
  ------------------
 1037|      9|						emit_live_range(
 1038|      9|							op_array, var_num, opnum, last_use[var_num], needs_live_range);
 1039|      9|					}
 1040|     11|					last_use[var_num] = (uint32_t) -1;
 1041|     11|				}
 1042|  2.62k|			} else if (EXPECTED(last_use[var_num] == (uint32_t) -1)) {
  ------------------
  |  |  456|  2.62k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.60k, False: 23]
  |  |  ------------------
  ------------------
 1043|  2.60k|#if 1
 1044|       |				/* OP_DATA uses only op1 operand */
 1045|  2.60k|				ZEND_ASSERT(opline->opcode != ZEND_OP_DATA);
  ------------------
  |  |  112|  2.60k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1045:5): [True: 0, False: 2.60k]
  |  Branch (1045:5): [True: 2.60k, False: 0]
  ------------------
 1046|  2.60k|				last_use[var_num] = opnum;
 1047|       |#else
 1048|       |				/* OP_DATA is really part of the previous opcode. */
 1049|       |				last_use[var_num] = opnum - (opline->opcode == ZEND_OP_DATA);
 1050|       |#endif
 1051|  2.60k|			}
 1052|  2.63k|		}
 1053|  47.7k|	}
 1054|       |
 1055|  5.89k|	if (op_array->last_live_range > 1) {
  ------------------
  |  Branch (1055:6): [True: 523, False: 5.37k]
  ------------------
 1056|    523|		zend_live_range *r1 = op_array->live_range;
 1057|    523|		zend_live_range *r2 = r1 + op_array->last_live_range - 1;
 1058|       |
 1059|       |		/* In most cases we need just revert the array */
 1060|  1.20k|		while (r1 < r2) {
  ------------------
  |  Branch (1060:10): [True: 682, False: 523]
  ------------------
 1061|    682|			swap_live_range(r1, r2);
 1062|    682|			r1++;
 1063|    682|			r2--;
 1064|    682|		}
 1065|       |
 1066|    523|		r1 = op_array->live_range;
 1067|    523|		r2 = r1 + op_array->last_live_range - 1;
 1068|  1.45k|		while (r1 < r2) {
  ------------------
  |  Branch (1068:10): [True: 951, False: 500]
  ------------------
 1069|    951|			if (r1->start > (r1+1)->start) {
  ------------------
  |  Branch (1069:8): [True: 23, False: 928]
  ------------------
 1070|     23|				zend_sort(r1, r2 - r1 + 1, sizeof(zend_live_range),
 1071|     23|					(compare_func_t) cmp_live_range, (swap_func_t) swap_live_range);
 1072|     23|				break;
 1073|     23|			}
 1074|    928|			r1++;
 1075|    928|		}
 1076|    523|	}
 1077|       |
 1078|       |	free_alloca(last_use, use_heap);
  ------------------
  |  |  248|  5.89k|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|  5.89k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  5.89k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  5.89k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  5.89k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  5.89k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1079|  5.89k|}
zend_opcode.c:is_fake_def:
  897|  12.7k|static bool is_fake_def(zend_op *opline) {
  898|       |	/* These opcodes only modify the result, not create it. */
  899|  12.7k|	return opline->opcode == ZEND_ROPE_ADD
  ------------------
  |  |  178|  25.4k|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (899:9): [True: 726, False: 11.9k]
  ------------------
  900|  11.9k|		|| opline->opcode == ZEND_ADD_ARRAY_ELEMENT
  ------------------
  |  |  195|  24.7k|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (900:6): [True: 141, False: 11.8k]
  ------------------
  901|  11.8k|		|| opline->opcode == ZEND_ADD_ARRAY_UNPACK;
  ------------------
  |  |  269|  24.5k|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (901:6): [True: 8, False: 11.8k]
  ------------------
  902|  12.7k|}
zend_opcode.c:emit_live_range:
  753|  3.38k|		zend_needs_live_range_cb needs_live_range) {
  754|  3.38k|	zend_op *def_opline = &op_array->opcodes[start], *orig_def_opline = def_opline;
  755|  3.38k|	zend_op *use_opline = &op_array->opcodes[end];
  756|  3.38k|	uint32_t kind;
  757|       |
  758|  3.38k|	switch (def_opline->opcode) {
  759|       |		/* These should never be the first def. */
  760|      0|		case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      0|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (760:3): [True: 0, False: 3.38k]
  ------------------
  761|      0|		case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      0|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (761:3): [True: 0, False: 3.38k]
  ------------------
  762|      0|		case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      0|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (762:3): [True: 0, False: 3.38k]
  ------------------
  763|      0|			ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (763:4): [Folded, False: 0]
  |  Branch (763:4): [Folded, False: 0]
  ------------------
  764|      0|			return;
  765|       |		/* Result is boolean, it doesn't have to be destroyed. */
  766|      0|		case ZEND_JMPZ_EX:
  ------------------
  |  |  169|      0|#define ZEND_JMPZ_EX                         46
  ------------------
  |  Branch (766:3): [True: 0, False: 3.38k]
  ------------------
  767|      0|		case ZEND_JMPNZ_EX:
  ------------------
  |  |  170|      0|#define ZEND_JMPNZ_EX                        47
  ------------------
  |  Branch (767:3): [True: 0, False: 3.38k]
  ------------------
  768|      8|		case ZEND_BOOL:
  ------------------
  |  |  175|      8|#define ZEND_BOOL                            52
  ------------------
  |  Branch (768:3): [True: 8, False: 3.37k]
  ------------------
  769|     19|		case ZEND_BOOL_NOT:
  ------------------
  |  |  138|     19|#define ZEND_BOOL_NOT                        14
  ------------------
  |  Branch (769:3): [True: 11, False: 3.37k]
  ------------------
  770|       |		/* Classes don't have to be destroyed. */
  771|     21|		case ZEND_FETCH_CLASS:
  ------------------
  |  |  231|     21|#define ZEND_FETCH_CLASS                    109
  ------------------
  |  Branch (771:3): [True: 2, False: 3.38k]
  ------------------
  772|     21|		case ZEND_DECLARE_ANON_CLASS:
  ------------------
  |  |  268|     21|#define ZEND_DECLARE_ANON_CLASS             146
  ------------------
  |  Branch (772:3): [True: 0, False: 3.38k]
  ------------------
  773|       |		/* FAST_CALLs don't have to be destroyed. */
  774|     54|		case ZEND_FAST_CALL:
  ------------------
  |  |  284|     54|#define ZEND_FAST_CALL                      162
  ------------------
  |  Branch (774:3): [True: 33, False: 3.34k]
  ------------------
  775|     54|			return;
  776|    132|		case ZEND_BEGIN_SILENCE:
  ------------------
  |  |  180|    132|#define ZEND_BEGIN_SILENCE                   57
  ------------------
  |  Branch (776:3): [True: 132, False: 3.25k]
  ------------------
  777|    132|			kind = ZEND_LIVE_SILENCE;
  ------------------
  |  |  181|    132|#define ZEND_LIVE_SILENCE 2
  ------------------
  778|    132|			start++;
  779|    132|			break;
  780|    344|		case ZEND_ROPE_INIT:
  ------------------
  |  |  177|    344|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (780:3): [True: 344, False: 3.03k]
  ------------------
  781|    344|			kind = ZEND_LIVE_ROPE;
  ------------------
  |  |  182|    344|#define ZEND_LIVE_ROPE    3
  ------------------
  782|       |			/* ROPE live ranges include the generating opcode. */
  783|    344|			def_opline--;
  784|    344|			break;
  785|    115|		case ZEND_FE_RESET_R:
  ------------------
  |  |  200|    115|#define ZEND_FE_RESET_R                      77
  ------------------
  |  Branch (785:3): [True: 115, False: 3.26k]
  ------------------
  786|    187|		case ZEND_FE_RESET_RW:
  ------------------
  |  |  247|    187|#define ZEND_FE_RESET_RW                    125
  ------------------
  |  Branch (786:3): [True: 72, False: 3.31k]
  ------------------
  787|    187|			kind = ZEND_LIVE_LOOP;
  ------------------
  |  |  180|    187|#define ZEND_LIVE_LOOP    1
  ------------------
  788|    187|			start++;
  789|    187|			break;
  790|       |		/* Objects created via ZEND_NEW are only fully initialized
  791|       |		 * after the DO_FCALL (constructor call).
  792|       |		 * We are creating two live-ranges: ZEND_LINE_NEW for uninitialized
  793|       |		 * part, and ZEND_LIVE_TMPVAR for initialized.
  794|       |		 */
  795|  1.65k|		case ZEND_NEW:
  ------------------
  |  |  191|  1.65k|#define ZEND_NEW                             68
  ------------------
  |  Branch (795:3): [True: 1.65k, False: 1.72k]
  ------------------
  796|  1.65k|		{
  797|  1.65k|			int level = 0;
  798|  1.65k|			uint32_t orig_start = start;
  799|       |
  800|  2.79k|			while (def_opline + 1 < use_opline) {
  ------------------
  |  Branch (800:11): [True: 2.78k, False: 7]
  ------------------
  801|  2.78k|				def_opline++;
  802|  2.78k|				start++;
  803|  2.78k|				switch (def_opline->opcode) {
  ------------------
  |  Branch (803:13): [True: 1.70k, False: 1.07k]
  ------------------
  804|      6|					case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      6|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (804:6): [True: 6, False: 2.78k]
  ------------------
  805|      7|					case ZEND_INIT_FCALL_BY_NAME:
  ------------------
  |  |  182|      7|#define ZEND_INIT_FCALL_BY_NAME              59
  ------------------
  |  Branch (805:6): [True: 1, False: 2.78k]
  ------------------
  806|      7|					case ZEND_INIT_NS_FCALL_BY_NAME:
  ------------------
  |  |  192|      7|#define ZEND_INIT_NS_FCALL_BY_NAME           69
  ------------------
  |  Branch (806:6): [True: 0, False: 2.78k]
  ------------------
  807|     10|					case ZEND_INIT_DYNAMIC_CALL:
  ------------------
  |  |  250|     10|#define ZEND_INIT_DYNAMIC_CALL              128
  ------------------
  |  Branch (807:6): [True: 3, False: 2.78k]
  ------------------
  808|     10|					case ZEND_INIT_USER_CALL:
  ------------------
  |  |  240|     10|#define ZEND_INIT_USER_CALL                 118
  ------------------
  |  Branch (808:6): [True: 0, False: 2.78k]
  ------------------
  809|     15|					case ZEND_INIT_METHOD_CALL:
  ------------------
  |  |  234|     15|#define ZEND_INIT_METHOD_CALL               112
  ------------------
  |  Branch (809:6): [True: 5, False: 2.78k]
  ------------------
  810|     17|					case ZEND_INIT_STATIC_METHOD_CALL:
  ------------------
  |  |  235|     17|#define ZEND_INIT_STATIC_METHOD_CALL        113
  ------------------
  |  Branch (810:6): [True: 2, False: 2.78k]
  ------------------
  811|     17|					case ZEND_INIT_PARENT_PROPERTY_HOOK_CALL:
  ------------------
  |  |  331|     17|#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209
  ------------------
  |  Branch (811:6): [True: 0, False: 2.78k]
  ------------------
  812|     29|					case ZEND_NEW:
  ------------------
  |  |  191|     29|#define ZEND_NEW                             68
  ------------------
  |  Branch (812:6): [True: 12, False: 2.77k]
  ------------------
  813|     29|						level++;
  814|     29|						break;
  815|  1.67k|					case ZEND_DO_FCALL:
  ------------------
  |  |  183|  1.67k|#define ZEND_DO_FCALL                        60
  ------------------
  |  Branch (815:6): [True: 1.67k, False: 1.10k]
  ------------------
  816|  1.67k|					case ZEND_DO_FCALL_BY_NAME:
  ------------------
  |  |  253|  1.67k|#define ZEND_DO_FCALL_BY_NAME               131
  ------------------
  |  Branch (816:6): [True: 0, False: 2.78k]
  ------------------
  817|  1.67k|					case ZEND_DO_ICALL:
  ------------------
  |  |  251|  1.67k|#define ZEND_DO_ICALL                       129
  ------------------
  |  Branch (817:6): [True: 0, False: 2.78k]
  ------------------
  818|  1.67k|					case ZEND_DO_UCALL:
  ------------------
  |  |  252|  1.67k|#define ZEND_DO_UCALL                       130
  ------------------
  |  Branch (818:6): [True: 0, False: 2.78k]
  ------------------
  819|  1.67k|						if (level == 0) {
  ------------------
  |  Branch (819:11): [True: 1.64k, False: 29]
  ------------------
  820|  1.64k|							goto done;
  821|  1.64k|						}
  822|     29|						level--;
  823|     29|						break;
  824|  2.78k|				}
  825|  2.78k|			}
  826|  1.65k|done:
  827|  1.65k|			emit_live_range_raw(op_array, var_num, ZEND_LIVE_NEW, orig_start + 1, start + 1);
  ------------------
  |  |  183|  1.65k|#define ZEND_LIVE_NEW     4
  ------------------
  828|  1.65k|			if (start + 1 == end) {
  ------------------
  |  Branch (828:8): [True: 1.63k, False: 21]
  ------------------
  829|       |				/* Trivial live-range, no need to store it. */
  830|  1.63k|				return;
  831|  1.63k|			}
  832|  1.65k|		}
  833|     21|		ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     21|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  834|  1.01k|		default:
  ------------------
  |  Branch (834:3): [True: 991, False: 2.39k]
  ------------------
  835|  1.01k|			start++;
  836|  1.01k|			kind = ZEND_LIVE_TMPVAR;
  ------------------
  |  |  179|  1.01k|#define ZEND_LIVE_TMPVAR  0
  ------------------
  837|       |
  838|       |			/* Check hook to determine whether a live range is necessary,
  839|       |			 * e.g. based on type info. */
  840|  1.01k|			if (needs_live_range && !needs_live_range(op_array, orig_def_opline)) {
  ------------------
  |  Branch (840:8): [True: 0, False: 1.01k]
  |  Branch (840:28): [True: 0, False: 0]
  ------------------
  841|      0|				return;
  842|      0|			}
  843|  1.01k|			break;
  844|  1.01k|		case ZEND_COPY_TMP:
  ------------------
  |  |  289|     18|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (844:3): [True: 18, False: 3.36k]
  ------------------
  845|     18|		{
  846|       |			/* COPY_TMP has a split live-range: One from the definition until the use in
  847|       |			 * "null" branch, and another from the start of the "non-null" branch to the
  848|       |			 * FREE opcode. */
  849|     18|			uint32_t rt_var_num = EX_NUM_TO_VAR(op_array->last_var + var_num);
  ------------------
  |  |  759|     18|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|     18|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  850|     18|			if (needs_live_range && !needs_live_range(op_array, orig_def_opline)) {
  ------------------
  |  Branch (850:8): [True: 0, False: 18]
  |  Branch (850:28): [True: 0, False: 0]
  ------------------
  851|      0|				return;
  852|      0|			}
  853|       |
  854|     18|			kind = ZEND_LIVE_TMPVAR;
  ------------------
  |  |  179|     18|#define ZEND_LIVE_TMPVAR  0
  ------------------
  855|     18|			if (use_opline->opcode != ZEND_FREE) {
  ------------------
  |  |  193|     18|#define ZEND_FREE                            70
  ------------------
  |  Branch (855:8): [True: 3, False: 15]
  ------------------
  856|       |				/* This can happen if one branch of the coalesce has been optimized away.
  857|       |				 * In this case we should emit a normal live-range instead. */
  858|      3|				start++;
  859|      3|				break;
  860|      3|			}
  861|       |
  862|     15|			zend_op *block_start_op = use_opline;
  863|     19|			while ((block_start_op-1)->opcode == ZEND_FREE) {
  ------------------
  |  |  193|     19|#define ZEND_FREE                            70
  ------------------
  |  Branch (863:11): [True: 4, False: 15]
  ------------------
  864|      4|				block_start_op--;
  865|      4|			}
  866|       |
  867|     15|			start = block_start_op - op_array->opcodes;
  868|     15|			if (start != end) {
  ------------------
  |  Branch (868:8): [True: 4, False: 11]
  ------------------
  869|      4|				emit_live_range_raw(op_array, var_num, kind, start, end);
  870|      4|			}
  871|       |
  872|     64|			do {
  873|     64|				use_opline--;
  874|       |
  875|       |				/* The use might have been optimized away, in which case we will hit the def
  876|       |				 * instead. */
  877|     64|				if (use_opline->opcode == ZEND_COPY_TMP && use_opline->result.var == rt_var_num) {
  ------------------
  |  |  289|    128|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (877:9): [True: 0, False: 64]
  |  Branch (877:48): [True: 0, False: 0]
  ------------------
  878|      0|					start = def_opline + 1 - op_array->opcodes;
  879|      0|					emit_live_range_raw(op_array, var_num, kind, start, end);
  880|      0|					return;
  881|      0|				}
  882|     64|			} while (!(
  883|     64|				((use_opline->op1_type & (IS_TMP_VAR|IS_VAR)) && use_opline->op1.var == rt_var_num) ||
  ------------------
  |  |  865|     64|#define IS_TMP_VAR	(1<<1)
  ------------------
              				((use_opline->op1_type & (IS_TMP_VAR|IS_VAR)) && use_opline->op1.var == rt_var_num) ||
  ------------------
  |  |  866|     64|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (883:6): [True: 40, False: 24]
  |  Branch (883:54): [True: 6, False: 34]
  ------------------
  884|     58|				((use_opline->op2_type & (IS_TMP_VAR|IS_VAR)) && use_opline->op2.var == rt_var_num)
  ------------------
  |  |  865|     58|#define IS_TMP_VAR	(1<<1)
  ------------------
              				((use_opline->op2_type & (IS_TMP_VAR|IS_VAR)) && use_opline->op2.var == rt_var_num)
  ------------------
  |  |  866|     58|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (884:6): [True: 9, False: 49]
  |  Branch (884:54): [True: 9, False: 0]
  ------------------
  885|     64|			));
  886|       |
  887|     15|			start = def_opline + 1 - op_array->opcodes;
  888|     15|			end = use_opline - op_array->opcodes;
  889|     15|			emit_live_range_raw(op_array, var_num, kind, start, end);
  890|     15|			return;
  891|     15|		}
  892|  3.38k|	}
  893|       |
  894|  1.67k|	emit_live_range_raw(op_array, var_num, kind, start, end);
  895|  1.67k|}
zend_opcode.c:keeps_op1_alive:
  904|  8.91k|static bool keeps_op1_alive(zend_op *opline) {
  905|       |	/* These opcodes don't consume their OP1 operand,
  906|       |	 * it is later freed by something else. */
  907|  8.91k|	if (opline->opcode == ZEND_CASE
  ------------------
  |  |  171|  17.8k|#define ZEND_CASE                            48
  ------------------
  |  Branch (907:6): [True: 0, False: 8.91k]
  ------------------
  908|  8.91k|	 || opline->opcode == ZEND_CASE_STRICT
  ------------------
  |  |  318|  17.8k|#define ZEND_CASE_STRICT                    196
  ------------------
  |  Branch (908:6): [True: 0, False: 8.91k]
  ------------------
  909|  8.91k|	 || opline->opcode == ZEND_SWITCH_LONG
  ------------------
  |  |  309|  17.8k|#define ZEND_SWITCH_LONG                    187
  ------------------
  |  Branch (909:6): [True: 0, False: 8.91k]
  ------------------
  910|  8.91k|	 || opline->opcode == ZEND_SWITCH_STRING
  ------------------
  |  |  310|  17.8k|#define ZEND_SWITCH_STRING                  188
  ------------------
  |  Branch (910:6): [True: 0, False: 8.91k]
  ------------------
  911|  8.91k|	 || opline->opcode == ZEND_MATCH
  ------------------
  |  |  317|  17.8k|#define ZEND_MATCH                          195
  ------------------
  |  Branch (911:6): [True: 0, False: 8.91k]
  ------------------
  912|  8.91k|	 || opline->opcode == ZEND_MATCH_ERROR
  ------------------
  |  |  319|  17.8k|#define ZEND_MATCH_ERROR                    197
  ------------------
  |  Branch (912:6): [True: 0, False: 8.91k]
  ------------------
  913|  8.91k|	 || opline->opcode == ZEND_FETCH_LIST_R
  ------------------
  |  |  220|  17.8k|#define ZEND_FETCH_LIST_R                    98
  ------------------
  |  Branch (913:6): [True: 0, False: 8.91k]
  ------------------
  914|  8.91k|	 || opline->opcode == ZEND_FETCH_LIST_W
  ------------------
  |  |  277|  17.8k|#define ZEND_FETCH_LIST_W                   155
  ------------------
  |  Branch (914:6): [True: 0, False: 8.91k]
  ------------------
  915|  8.91k|	 || opline->opcode == ZEND_COPY_TMP
  ------------------
  |  |  289|  17.8k|#define ZEND_COPY_TMP                       167
  ------------------
  |  Branch (915:6): [True: 0, False: 8.91k]
  ------------------
  916|  8.91k|	 || opline->opcode == ZEND_EXT_STMT) {
  ------------------
  |  |  223|  8.91k|#define ZEND_EXT_STMT                       101
  ------------------
  |  Branch (916:6): [True: 0, False: 8.91k]
  ------------------
  917|      0|		return true;
  918|      0|	}
  919|  8.91k|	ZEND_ASSERT(opline->opcode != ZEND_FE_FETCH_R
  ------------------
  |  |  112|  8.91k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (919:2): [True: 0, False: 8.91k]
  |  Branch (919:2): [True: 0, False: 0]
  |  Branch (919:2): [True: 0, False: 0]
  |  Branch (919:2): [True: 0, False: 0]
  |  Branch (919:2): [True: 0, False: 0]
  |  Branch (919:2): [True: 8.91k, False: 0]
  |  Branch (919:2): [True: 8.91k, False: 0]
  |  Branch (919:2): [True: 8.91k, False: 0]
  |  Branch (919:2): [True: 8.91k, False: 0]
  |  Branch (919:2): [True: 8.91k, False: 0]
  ------------------
  920|  8.91k|		&& opline->opcode != ZEND_FE_FETCH_RW
  921|  8.91k|		&& opline->opcode != ZEND_VERIFY_RETURN_TYPE
  922|  8.91k|		&& opline->opcode != ZEND_BIND_LEXICAL
  923|  8.91k|		&& opline->opcode != ZEND_ROPE_ADD);
  924|  8.91k|	return false;
  925|  8.91k|}
zend_opcode.c:emit_live_range_raw:
  736|  3.35k|		zend_op_array *op_array, uint32_t var_num, uint32_t kind, uint32_t start, uint32_t end) {
  737|  3.35k|	zend_live_range *range;
  738|       |
  739|  3.35k|	op_array->last_live_range++;
  740|  3.35k|	op_array->live_range = erealloc(op_array->live_range,
  ------------------
  |  |  158|  3.35k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.35k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.35k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.35k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.35k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  741|  3.35k|		sizeof(zend_live_range) * op_array->last_live_range);
  742|       |
  743|  3.35k|	ZEND_ASSERT(start < end);
  ------------------
  |  |  112|  3.35k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (743:2): [True: 0, False: 3.35k]
  |  Branch (743:2): [True: 3.35k, False: 0]
  ------------------
  744|  3.35k|	range = &op_array->live_range[op_array->last_live_range - 1];
  745|  3.35k|	range->var = EX_NUM_TO_VAR(op_array->last_var + var_num);
  ------------------
  |  |  759|  3.35k|#define EX_NUM_TO_VAR(n)		((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  719|  3.35k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  746|  3.35k|	range->var |= kind;
  747|  3.35k|	range->start = start;
  748|  3.35k|	range->end = end;
  749|  3.35k|}
zend_opcode.c:swap_live_range:
  931|    722|static void swap_live_range(zend_live_range *a, zend_live_range *b) {
  932|    722|	uint32_t tmp;
  933|    722|	tmp = a->var;
  934|    722|	a->var = b->var;
  935|    722|	b->var = tmp;
  936|    722|	tmp = a->start;
  937|    722|	a->start = b->start;
  938|    722|	b->start = tmp;
  939|    722|	tmp = a->end;
  940|    722|	a->end = b->end;
  941|    722|	b->end = tmp;
  942|    722|}
zend_opcode.c:cmp_live_range:
  928|     79|static int cmp_live_range(const zend_live_range *a, const zend_live_range *b) {
  929|     79|	return a->start - b->start;
  930|     79|}
zend_opcode.c:zend_get_brk_cont_target:
  721|     21|static uint32_t zend_get_brk_cont_target(const zend_op *opline) {
  722|     21|	int nest_levels = opline->op2.num;
  723|     21|	int array_offset = opline->op1.num;
  724|     21|	zend_brk_cont_element *jmp_to;
  725|     23|	do {
  726|     23|		jmp_to = &CG(context).brk_cont_array[array_offset];
  ------------------
  |  |   35|     23|# define CG(v) (compiler_globals.v)
  ------------------
  727|     23|		if (nest_levels > 1) {
  ------------------
  |  Branch (727:7): [True: 2, False: 21]
  ------------------
  728|      2|			array_offset = jmp_to->parent;
  729|      2|		}
  730|     23|	} while (--nest_levels > 0);
  ------------------
  |  Branch (730:11): [True: 2, False: 21]
  ------------------
  731|       |
  732|     21|	return opline->opcode == ZEND_BRK ? jmp_to->brk : jmp_to->cont;
  ------------------
  |  | 1238|     21|#define ZEND_BRK   254
  ------------------
  |  Branch (732:9): [True: 20, False: 1]
  ------------------
  733|     21|}
zend_opcode.c:zend_check_finally_breakout:
  699|      7|{
  700|     10|	for (uint32_t i = 0; i < op_array->last_try_catch; i++) {
  ------------------
  |  Branch (700:23): [True: 7, False: 3]
  ------------------
  701|      7|		if ((op_num < op_array->try_catch_array[i].finally_op ||
  ------------------
  |  Branch (701:8): [True: 4, False: 3]
  ------------------
  702|      3|					op_num >= op_array->try_catch_array[i].finally_end)
  ------------------
  |  Branch (702:6): [True: 1, False: 2]
  ------------------
  703|      5|				&& (dst_num >= op_array->try_catch_array[i].finally_op &&
  ------------------
  |  Branch (703:9): [True: 3, False: 2]
  ------------------
  704|      3|					 dst_num <= op_array->try_catch_array[i].finally_end)) {
  ------------------
  |  Branch (704:7): [True: 3, False: 0]
  ------------------
  705|      3|			CG(in_compilation) = 1;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
  706|      3|			CG(active_op_array) = op_array;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
  707|      3|			CG(zend_lineno) = op_array->opcodes[op_num].lineno;
  ------------------
  |  |   35|      3|# define CG(v) (compiler_globals.v)
  ------------------
  708|      3|			zend_error_noreturn(E_COMPILE_ERROR, "jump into a finally block is disallowed");
  ------------------
  |  |   28|      3|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  709|      4|		} else if ((op_num >= op_array->try_catch_array[i].finally_op
  ------------------
  |  Branch (709:15): [True: 2, False: 2]
  ------------------
  710|      2|					&& op_num <= op_array->try_catch_array[i].finally_end)
  ------------------
  |  Branch (710:9): [True: 2, False: 0]
  ------------------
  711|      2|				&& (dst_num > op_array->try_catch_array[i].finally_end
  ------------------
  |  Branch (711:9): [True: 1, False: 1]
  ------------------
  712|      1|					|| dst_num < op_array->try_catch_array[i].finally_op)) {
  ------------------
  |  Branch (712:9): [True: 0, False: 1]
  ------------------
  713|      1|			CG(in_compilation) = 1;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  714|      1|			CG(active_op_array) = op_array;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  715|      1|			CG(zend_lineno) = op_array->opcodes[op_num].lineno;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
  716|      1|			zend_error_noreturn(E_COMPILE_ERROR, "jump out of a finally block is disallowed");
  ------------------
  |  |   28|      1|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  717|      1|		}
  718|      7|	}
  719|      7|}

convert_to_long:
  554|      1|{
  555|      1|	zend_long tmp;
  556|       |
  557|      1|try_again:
  558|      1|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  559|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (559:3): [True: 0, False: 1]
  ------------------
  560|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (560:3): [True: 0, False: 1]
  ------------------
  561|      0|			ZVAL_LONG(op, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  562|      0|			break;
  563|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (563:3): [True: 0, False: 1]
  ------------------
  564|      0|			ZVAL_LONG(op, 1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  565|      0|			break;
  566|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (566:3): [True: 0, False: 1]
  ------------------
  567|      0|			tmp = Z_RES_HANDLE_P(op);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  568|      0|			zval_ptr_dtor(op);
  569|      0|			ZVAL_LONG(op, tmp);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  570|      0|			break;
  571|      1|		case IS_LONG:
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (571:3): [True: 1, False: 0]
  ------------------
  572|      1|			break;
  573|      0|		case IS_DOUBLE: {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (573:3): [True: 0, False: 1]
  ------------------
  574|       |			/* NAN might emit a warning */
  575|      0|			zend_long new_value = zend_dval_to_lval(Z_DVAL_P(op));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  576|      0|			zval_ptr_dtor(op);
  577|      0|			ZVAL_LONG(op, new_value);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  578|      0|			break;
  579|      0|		}
  580|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (580:3): [True: 0, False: 1]
  ------------------
  581|      0|			{
  582|      0|				zend_string *str = Z_STR_P(op);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  583|      0|				ZVAL_LONG(op, zval_get_long(op));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  584|      0|				zend_string_release_ex(str, 0);
  585|      0|			}
  586|      0|			break;
  587|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (587:3): [True: 0, False: 1]
  ------------------
  588|      0|			tmp = (zend_hash_num_elements(Z_ARRVAL_P(op))?1:0);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (588:11): [True: 0, False: 0]
  ------------------
  589|      0|			zval_ptr_dtor(op);
  590|      0|			ZVAL_LONG(op, tmp);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  591|      0|			break;
  592|      0|		case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (592:3): [True: 0, False: 1]
  ------------------
  593|      0|			{
  594|      0|				zval dst;
  595|       |
  596|      0|				convert_object_to_type(op, &dst, IS_LONG);
  ------------------
  |  |  232|      0|	ZVAL_UNDEF(dst);																		\
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (233:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  234|      0|		zend_error(E_WARNING,																\
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  235|      0|			"Object of class %s could not be converted to %s", ZSTR_VAL(Z_OBJCE_P(op)->name),\
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  236|      0|		zend_get_type_by_const(ctype));														\
  |  |  237|      0|	} 																						\
  ------------------
  597|      0|				zval_ptr_dtor(op);
  598|       |
  599|      0|				if (Z_TYPE(dst) == IS_LONG) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(dst) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (599:9): [True: 0, False: 0]
  ------------------
  600|      0|					ZVAL_LONG(op, Z_LVAL(dst));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  601|      0|				} else {
  602|      0|					ZVAL_LONG(op, 1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  603|      0|				}
  604|      0|				return;
  605|      0|			}
  606|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (606:3): [True: 0, False: 1]
  ------------------
  607|      0|			zend_unwrap_reference(op);
  608|      0|			goto try_again;
  609|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (609:3): [True: 0, False: 1]
  |  Branch (609:12): [Folded, False: 0]
  |  Branch (609:12): [Folded, False: 0]
  ------------------
  610|      1|	}
  611|      1|}
convert_to_double:
  615|      1|{
  616|      1|	double tmp;
  617|       |
  618|      1|try_again:
  619|      1|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  620|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (620:3): [True: 0, False: 1]
  ------------------
  621|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (621:3): [True: 0, False: 1]
  ------------------
  622|      0|			ZVAL_DOUBLE(op, 0.0);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  623|      0|			break;
  624|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (624:3): [True: 0, False: 1]
  ------------------
  625|      0|			ZVAL_DOUBLE(op, 1.0);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  626|      0|			break;
  627|      0|		case IS_RESOURCE: {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (627:3): [True: 0, False: 1]
  ------------------
  628|      0|				double d = (double) Z_RES_HANDLE_P(op);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|      0|				zval_ptr_dtor(op);
  630|      0|				ZVAL_DOUBLE(op, d);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  631|      0|			}
  632|      0|			break;
  633|      1|		case IS_LONG:
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (633:3): [True: 1, False: 0]
  ------------------
  634|      1|			ZVAL_DOUBLE(op, (double) Z_LVAL_P(op));
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  635|      1|			break;
  636|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (636:3): [True: 0, False: 1]
  ------------------
  637|      0|			break;
  638|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (638:3): [True: 0, False: 1]
  ------------------
  639|      0|			{
  640|      0|				zend_string *str = Z_STR_P(op);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  641|       |
  642|      0|				ZVAL_DOUBLE(op, zend_strtod(ZSTR_VAL(str), NULL));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  643|      0|				zend_string_release_ex(str, 0);
  644|      0|			}
  645|      0|			break;
  646|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (646:3): [True: 0, False: 1]
  ------------------
  647|      0|			tmp = (zend_hash_num_elements(Z_ARRVAL_P(op))?1:0);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (647:11): [True: 0, False: 0]
  ------------------
  648|      0|			zval_ptr_dtor(op);
  649|      0|			ZVAL_DOUBLE(op, tmp);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  650|      0|			break;
  651|      0|		case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (651:3): [True: 0, False: 1]
  ------------------
  652|      0|			{
  653|      0|				zval dst;
  654|       |
  655|      0|				convert_object_to_type(op, &dst, IS_DOUBLE);
  ------------------
  |  |  232|      0|	ZVAL_UNDEF(dst);																		\
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (233:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  234|      0|		zend_error(E_WARNING,																\
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  235|      0|			"Object of class %s could not be converted to %s", ZSTR_VAL(Z_OBJCE_P(op)->name),\
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  236|      0|		zend_get_type_by_const(ctype));														\
  |  |  237|      0|	} 																						\
  ------------------
  656|      0|				zval_ptr_dtor(op);
  657|       |
  658|      0|				if (Z_TYPE(dst) == IS_DOUBLE) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(dst) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (658:9): [True: 0, False: 0]
  ------------------
  659|      0|					ZVAL_DOUBLE(op, Z_DVAL(dst));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  660|      0|				} else {
  661|      0|					ZVAL_DOUBLE(op, 1.0);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  662|      0|				}
  663|      0|				break;
  664|      0|			}
  665|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (665:3): [True: 0, False: 1]
  ------------------
  666|      0|			zend_unwrap_reference(op);
  667|      0|			goto try_again;
  668|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (668:3): [True: 0, False: 1]
  |  Branch (668:12): [Folded, False: 0]
  |  Branch (668:12): [Folded, False: 0]
  ------------------
  669|      1|	}
  670|      1|}
_convert_to_string:
  756|    658|{
  757|    658|try_again:
  758|    658|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|    658|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    658|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  759|      0|		case IS_UNDEF:
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (759:3): [True: 0, False: 658]
  ------------------
  760|    215|		case IS_NULL:
  ------------------
  |  |  607|    215|#define IS_NULL						1
  ------------------
  |  Branch (760:3): [True: 215, False: 443]
  ------------------
  761|    225|		case IS_FALSE: {
  ------------------
  |  |  608|    225|#define IS_FALSE					2
  ------------------
  |  Branch (761:3): [True: 10, False: 648]
  ------------------
  762|    225|			ZVAL_EMPTY_STRING(op);
  ------------------
  |  |  972|    225|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|    225|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|    225|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|    225|		zval *__z = (z);							\
  |  |  |  | 1100|    225|		zend_string *__s = (s);						\
  |  |  |  | 1101|    225|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|    225|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|    225|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|    225|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    225|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    225|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|    225|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|    225|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|    225|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 225]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|    225|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 225]
  |  |  ------------------
  ------------------
  763|    225|			break;
  764|    215|		}
  765|     11|		case IS_TRUE:
  ------------------
  |  |  609|     11|#define IS_TRUE						3
  ------------------
  |  Branch (765:3): [True: 11, False: 647]
  ------------------
  766|     11|			ZVAL_CHAR(op, '1');
  ------------------
  |  |  989|     11|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|     11|		char _c = (c);                          \
  |  |  991|     11|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|     11|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|     11|		zval *__z = (z);							\
  |  |  |  | 1100|     11|		zend_string *__s = (s);						\
  |  |  |  | 1101|     11|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|     11|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     11|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
  767|     11|			break;
  768|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (768:3): [True: 0, False: 658]
  ------------------
  769|      0|			break;
  770|      0|		case IS_RESOURCE: {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (770:3): [True: 0, False: 658]
  ------------------
  771|      0|			zend_string *str = zend_strpprintf(0, "Resource id #" ZEND_LONG_FMT, (zend_long)Z_RES_HANDLE_P(op));
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
              			zend_string *str = zend_strpprintf(0, "Resource id #" ZEND_LONG_FMT, (zend_long)Z_RES_HANDLE_P(op));
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  772|      0|			zval_ptr_dtor(op);
  773|      0|			ZVAL_NEW_STR(op, str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  774|      0|			break;
  775|    215|		}
  776|    410|		case IS_LONG:
  ------------------
  |  |  610|    410|#define IS_LONG						4
  ------------------
  |  Branch (776:3): [True: 410, False: 248]
  ------------------
  777|    410|			ZVAL_STR(op, zend_long_to_str(Z_LVAL_P(op)));
  ------------------
  |  | 1088|    410|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    410|		zval *__z = (z);						\
  |  | 1090|    410|		zend_string *__s = (s);					\
  |  | 1091|    410|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    410|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    410|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    410|		/* interned strings support */			\
  |  | 1093|    410|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    410|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    410|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 336, False: 74]
  |  |  ------------------
  |  | 1094|    410|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    336|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    336|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    410|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    484|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     74|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     74|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     74|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    410|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 410]
  |  |  ------------------
  ------------------
  778|    410|			break;
  779|     11|		case IS_DOUBLE: {
  ------------------
  |  |  611|     11|#define IS_DOUBLE					5
  ------------------
  |  Branch (779:3): [True: 11, False: 647]
  ------------------
  780|       |			/* Casting NAN will cause a warning */
  781|     11|			zend_string *new_value = zend_double_to_str(Z_DVAL_P(op));
  ------------------
  |  |  979|     11|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     11|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  782|     11|			zval_ptr_dtor(op);
  783|     11|			ZVAL_NEW_STR(op, new_value);
  ------------------
  |  | 1105|     11|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     11|		zval *__z = (z);						\
  |  | 1107|     11|		zend_string *__s = (s);					\
  |  | 1108|     11|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     11|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     11|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
  784|     11|			break;
  785|    215|		}
  786|      1|		case IS_ARRAY:
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (786:3): [True: 1, False: 657]
  ------------------
  787|      1|			zend_error(E_WARNING, "Array to string conversion");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  788|      1|			zval_ptr_dtor(op);
  789|      1|			ZVAL_INTERNED_STR(op, ZSTR_KNOWN(ZEND_STR_ARRAY_CAPITALIZED));
  ------------------
  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|      1|		zval *__z = (z);							\
  |  | 1100|      1|		zend_string *__s = (s);						\
  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  790|      1|			break;
  791|      0|		case IS_OBJECT: {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (791:3): [True: 0, False: 658]
  ------------------
  792|      0|			zval tmp;
  793|      0|			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &tmp, IS_STRING) == SUCCESS) {
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &tmp, IS_STRING) == SUCCESS) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &tmp, IS_STRING) == SUCCESS) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (793:8): [True: 0, False: 0]
  ------------------
  794|      0|				zval_ptr_dtor(op);
  795|      0|				ZVAL_COPY_VALUE(op, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  796|      0|				return;
  797|      0|			}
  798|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (798:8): [True: 0, False: 0]
  ------------------
  799|      0|				zend_throw_error(NULL, "Object of class %s could not be converted to string", ZSTR_VAL(Z_OBJCE_P(op)->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  800|      0|			}
  801|      0|			zval_ptr_dtor(op);
  802|      0|			ZVAL_EMPTY_STRING(op);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  803|      0|			break;
  804|      0|		}
  805|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (805:3): [True: 0, False: 658]
  ------------------
  806|      0|			zend_unwrap_reference(op);
  807|      0|			goto try_again;
  808|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (808:3): [True: 0, False: 658]
  |  Branch (808:12): [Folded, False: 0]
  |  Branch (808:12): [Folded, False: 0]
  ------------------
  809|    658|	}
  810|    658|}
_try_convert_to_string:
  814|      2|{
  815|      2|	zend_string *str;
  816|       |
  817|      2|	ZEND_ASSERT(Z_TYPE_P(op) != IS_STRING);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (817:2): [True: 0, False: 2]
  |  Branch (817:2): [True: 2, False: 0]
  ------------------
  818|      2|	str = zval_try_get_string_func(op);
  819|      2|	if (UNEXPECTED(!str)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  820|      1|		return 0;
  821|      1|	}
  822|      1|	zval_ptr_dtor(op);
  823|      1|	ZVAL_STR(op, str);
  ------------------
  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      1|		zval *__z = (z);						\
  |  | 1090|      1|		zend_string *__s = (s);					\
  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      1|		/* interned strings support */			\
  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 0]
  |  |  ------------------
  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  824|      1|	return 1;
  825|      2|}
zend_incompatible_double_to_long_error:
  932|  3.96k|{
  933|  3.96k|	zend_error_unchecked(E_DEPRECATED, "Implicit conversion from float %.*H to int loses precision", -1, d);
  ------------------
  |  |   36|  3.96k|#define E_DEPRECATED		(1<<13L)
  ------------------
  934|  3.96k|}
zend_incompatible_string_to_long_error:
  936|      5|{
  937|      5|	zend_error(E_DEPRECATED, "Implicit conversion from float-string \"%s\" to int loses precision", ZSTR_VAL(s));
  ------------------
  |  |   36|      5|#define E_DEPRECATED		(1<<13L)
  ------------------
              	zend_error(E_DEPRECATED, "Implicit conversion from float-string \"%s\" to int loses precision", ZSTR_VAL(s));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  938|      5|}
zend_oob_double_to_long_error:
  940|    933|{
  941|    933|	zend_error_unchecked(E_WARNING, "The float %.*H is not representable as an int, cast occurred", -1, d);
  ------------------
  |  |   23|    933|#define E_WARNING			(1<<1L)
  ------------------
  942|    933|}
zend_nan_coerced_to_type_warning:
  949|      2|{
  950|      2|	zend_error(E_WARNING, "unexpected NAN value was coerced to %s", zend_get_type_by_const(type));
  ------------------
  |  |   23|      2|#define E_WARNING			(1<<1L)
  ------------------
  951|      2|}
zval_get_long_func:
  954|     27|{
  955|     27|try_again:
  956|     27|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|     27|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     27|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  957|      1|		case IS_UNDEF:
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (957:3): [True: 1, False: 26]
  ------------------
  958|      4|		case IS_NULL:
  ------------------
  |  |  607|      4|#define IS_NULL						1
  ------------------
  |  Branch (958:3): [True: 3, False: 24]
  ------------------
  959|      6|		case IS_FALSE:
  ------------------
  |  |  608|      6|#define IS_FALSE					2
  ------------------
  |  Branch (959:3): [True: 2, False: 25]
  ------------------
  960|      6|			return 0;
  961|      1|		case IS_TRUE:
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (961:3): [True: 1, False: 26]
  ------------------
  962|      1|			return 1;
  963|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (963:3): [True: 0, False: 27]
  ------------------
  964|      0|			return Z_RES_HANDLE_P(op);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  965|      0|		case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (965:3): [True: 0, False: 27]
  ------------------
  966|      0|			return Z_LVAL_P(op);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  967|     11|		case IS_DOUBLE: {
  ------------------
  |  |  611|     11|#define IS_DOUBLE					5
  ------------------
  |  Branch (967:3): [True: 11, False: 16]
  ------------------
  968|     11|			double dval = Z_DVAL_P(op);
  ------------------
  |  |  979|     11|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     11|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  969|     11|			zend_long lval = zend_dval_to_lval(dval);
  970|     11|			if (UNEXPECTED(is_strict)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  971|      0|				if (!zend_is_long_compatible(dval, lval)) {
  ------------------
  |  Branch (971:9): [True: 0, False: 0]
  ------------------
  972|      0|					zend_incompatible_double_to_long_error(dval);
  973|      0|				}
  974|      0|			}
  975|     11|			return lval;
  976|      4|		}
  977|      8|		case IS_STRING:
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
  |  Branch (977:3): [True: 8, False: 19]
  ------------------
  978|      8|			{
  979|      8|				uint8_t type;
  980|      8|				zend_long lval;
  981|      8|				double dval;
  982|      8|				if (0 == (type = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &lval, &dval, true))) {
  ------------------
  |  |  985|      8|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      8|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (0 == (type = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &lval, &dval, true))) {
  ------------------
  |  |  988|      8|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      8|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (982:9): [True: 0, False: 8]
  ------------------
  983|      0|					return 0;
  984|      8|				} else if (EXPECTED(type == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 2]
  |  |  ------------------
  ------------------
  985|      6|					return lval;
  986|      6|				} else {
  987|       |					/* Previously we used strtol here, not is_numeric_string,
  988|       |					 * and strtol gives you LONG_MAX/_MIN on overflow.
  989|       |					 * We use saturating conversion to emulate strtol()'s
  990|       |					 * behaviour.
  991|       |					 */
  992|       |					 /* Most usages are expected to not be (int) casts */
  993|      2|					lval = zend_dval_to_lval_cap(dval);
  994|      2|					if (UNEXPECTED(is_strict)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  995|      0|						if (!zend_is_long_compatible(dval, lval)) {
  ------------------
  |  Branch (995:11): [True: 0, False: 0]
  ------------------
  996|      0|							zend_incompatible_string_to_long_error(Z_STR_P(op));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  997|      0|						}
  998|      0|					}
  999|      2|					return lval;
 1000|      2|				}
 1001|      8|			}
 1002|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1002:3): [True: 0, False: 27]
  ------------------
 1003|      0|			return zend_hash_num_elements(Z_ARRVAL_P(op)) ? 1 : 0;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1003:11): [True: 0, False: 0]
  ------------------
 1004|      1|		case IS_OBJECT:
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (1004:3): [True: 1, False: 26]
  ------------------
 1005|      1|			{
 1006|      1|				zval dst;
 1007|      1|				convert_object_to_type(op, &dst, IS_LONG);
  ------------------
  |  |  232|      1|	ZVAL_UNDEF(dst);																		\
  |  |  ------------------
  |  |  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      1|	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (233:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  234|      1|		zend_error(E_WARNING,																\
  |  |  ------------------
  |  |  |  |   23|      1|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  235|      1|			"Object of class %s could not be converted to %s", ZSTR_VAL(Z_OBJCE_P(op)->name),\
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  236|      1|		zend_get_type_by_const(ctype));														\
  |  |  237|      1|	} 																						\
  ------------------
 1008|      1|				if (Z_TYPE(dst) == IS_LONG) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(dst) == IS_LONG) {
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (1008:9): [True: 0, False: 1]
  ------------------
 1009|      0|					return Z_LVAL(dst);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
 1010|      1|				} else {
 1011|      1|					return 1;
 1012|      1|				}
 1013|      1|			}
 1014|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (1014:3): [True: 0, False: 27]
  ------------------
 1015|      0|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|      0|			goto try_again;
 1017|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1017:3): [True: 0, False: 27]
  |  Branch (1017:12): [Folded, False: 0]
  |  Branch (1017:12): [Folded, False: 0]
  ------------------
 1018|     27|	}
 1019|      0|	return 0;
 1020|     27|}
zval_get_double_func:
 1024|    210|{
 1025|    210|try_again:
 1026|    210|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|    210|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    210|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 1027|      5|		case IS_NULL:
  ------------------
  |  |  607|      5|#define IS_NULL						1
  ------------------
  |  Branch (1027:3): [True: 5, False: 205]
  ------------------
 1028|      6|		case IS_FALSE:
  ------------------
  |  |  608|      6|#define IS_FALSE					2
  ------------------
  |  Branch (1028:3): [True: 1, False: 209]
  ------------------
 1029|      6|			return 0.0;
 1030|      1|		case IS_TRUE:
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (1030:3): [True: 1, False: 209]
  ------------------
 1031|      1|			return 1.0;
 1032|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (1032:3): [True: 0, False: 210]
  ------------------
 1033|      0|			return (double) Z_RES_HANDLE_P(op);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1034|    184|		case IS_LONG:
  ------------------
  |  |  610|    184|#define IS_LONG						4
  ------------------
  |  Branch (1034:3): [True: 184, False: 26]
  ------------------
 1035|    184|			return (double) Z_LVAL_P(op);
  ------------------
  |  |  976|    184|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    184|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1036|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (1036:3): [True: 0, False: 210]
  ------------------
 1037|      0|			return Z_DVAL_P(op);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 1038|     18|		case IS_STRING:
  ------------------
  |  |  612|     18|#define IS_STRING					6
  ------------------
  |  Branch (1038:3): [True: 18, False: 192]
  ------------------
 1039|     18|			return zend_strtod(Z_STRVAL_P(op), NULL);
  ------------------
  |  |  985|     18|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     18|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1040|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1040:3): [True: 0, False: 210]
  ------------------
 1041|      0|			return zend_hash_num_elements(Z_ARRVAL_P(op)) ? 1.0 : 0.0;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1041:11): [True: 0, False: 0]
  ------------------
 1042|      1|		case IS_OBJECT:
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (1042:3): [True: 1, False: 209]
  ------------------
 1043|      1|			{
 1044|      1|				zval dst;
 1045|      1|				convert_object_to_type(op, &dst, IS_DOUBLE);
  ------------------
  |  |  232|      1|	ZVAL_UNDEF(dst);																		\
  |  |  ------------------
  |  |  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      1|	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (233:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  234|      1|		zend_error(E_WARNING,																\
  |  |  ------------------
  |  |  |  |   23|      1|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  235|      1|			"Object of class %s could not be converted to %s", ZSTR_VAL(Z_OBJCE_P(op)->name),\
  |  |  ------------------
  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  236|      1|		zend_get_type_by_const(ctype));														\
  |  |  237|      1|	} 																						\
  ------------------
 1046|       |
 1047|      1|				if (Z_TYPE(dst) == IS_DOUBLE) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(dst) == IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (1047:9): [True: 0, False: 1]
  ------------------
 1048|      0|					return Z_DVAL(dst);
  ------------------
  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  ------------------
 1049|      1|				} else {
 1050|      1|					return 1.0;
 1051|      1|				}
 1052|      1|			}
 1053|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (1053:3): [True: 0, False: 210]
  ------------------
 1054|      0|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1055|      0|			goto try_again;
 1056|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1056:3): [True: 0, False: 210]
  |  Branch (1056:12): [Folded, False: 0]
  |  Branch (1056:12): [Folded, False: 0]
  ------------------
 1057|    210|	}
 1058|      0|	return 0.0;
 1059|    210|}
zval_get_string_func:
 1104|  10.1k|{
 1105|       |	return __zval_get_string_func(op, false);
 1106|  10.1k|}
zval_try_get_string_func:
 1110|  26.9k|{
 1111|       |	return __zval_get_string_func(op, true);
 1112|  26.9k|}
add_function:
 1197|  3.68k|{
 1198|  3.68k|	if (add_function_fast(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1198:6): [True: 1.63k, False: 2.05k]
  ------------------
 1199|  1.63k|		return SUCCESS;
 1200|  2.05k|	} else {
 1201|  2.05k|		return add_function_slow(result, op1, op2);
 1202|  2.05k|	}
 1203|  3.68k|}
sub_function:
 1262|  3.05k|{
 1263|  3.05k|	if (sub_function_fast(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1263:6): [True: 568, False: 2.48k]
  ------------------
 1264|    568|		return SUCCESS;
 1265|  2.48k|	} else {
 1266|  2.48k|		return sub_function_slow(result, op1, op2);
 1267|  2.48k|	}
 1268|  3.05k|}
mul_function:
 1331|  1.67k|{
 1332|  1.67k|	if (mul_function_fast(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1332:6): [True: 383, False: 1.29k]
  ------------------
 1333|    383|		return SUCCESS;
 1334|  1.29k|	} else {
 1335|  1.29k|		return mul_function_slow(result, op1, op2);
 1336|  1.29k|	}
 1337|  1.67k|}
pow_function:
 1412|     92|{
 1413|     92|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|     92|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     92|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     92|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 92]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     92|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 92]
  |  |  ------------------
  ------------------
 1414|     92|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|     92|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     92|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     92|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 91]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|     92|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 92]
  |  |  ------------------
  ------------------
 1415|     92|	if (pow_function_base(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1415:6): [True: 78, False: 14]
  ------------------
 1416|     78|		return SUCCESS;
 1417|     78|	}
 1418|       |
 1419|     92|	ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_POW);
  ------------------
  |  |  494|     14|	ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode) \
  |  |  ------------------
  |  |  |  |  479|     14|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|     14|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  495|     14|	else \
  |  |  496|     14|	ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode)
  |  |  ------------------
  |  |  |  |  487|     14|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|     14|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|     14|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  ------------------
 1420|       |
 1421|     14|	zval op1_copy, op2_copy;
 1422|     14|	if (UNEXPECTED(zendi_try_convert_scalar_to_number(op1, &op1_copy) == FAILURE)
  ------------------
  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 13]
  |  |  ------------------
  ------------------
 1423|     13|			|| UNEXPECTED(zendi_try_convert_scalar_to_number(op2, &op2_copy) == FAILURE)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 11]
  |  |  ------------------
  ------------------
 1424|      3|		zend_binop_error("**", op1, op2);
 1425|      3|		if (result != op1) {
  ------------------
  |  Branch (1425:7): [True: 2, False: 1]
  ------------------
 1426|      2|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1427|      2|		}
 1428|      3|		return FAILURE;
 1429|      3|	}
 1430|       |
 1431|     11|	if (result == op1) {
  ------------------
  |  Branch (1431:6): [True: 5, False: 6]
  ------------------
 1432|      5|		zval_ptr_dtor(result);
 1433|      5|	}
 1434|       |
 1435|     11|	if (pow_function_base(result, &op1_copy, &op2_copy) == SUCCESS) {
  ------------------
  |  Branch (1435:6): [True: 11, False: 0]
  ------------------
 1436|     11|		return SUCCESS;
 1437|     11|	}
 1438|       |
 1439|      0|	ZEND_ASSERT(0 && "Operation must succeed");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1439:2): [Folded, False: 0]
  |  Branch (1439:2): [True: 0, False: 0]
  |  Branch (1439:2): [Folded, False: 0]
  |  Branch (1439:2): [True: 0, False: 0]
  ------------------
 1440|      0|	return FAILURE;
 1441|      0|}
div_function:
 1493|    873|{
 1494|    873|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|    873|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    873|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    873|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 873]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|    873|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 873]
  |  |  ------------------
  ------------------
 1495|    873|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|    873|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    873|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    873|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 873]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|    873|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 873]
  |  |  ------------------
  ------------------
 1496|       |
 1497|    873|	zend_div_status retval = div_function_base(result, op1, op2);
 1498|    873|	if (EXPECTED(retval == DIV_SUCCESS)) {
  ------------------
  |  |  456|    873|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 517, False: 356]
  |  |  ------------------
  ------------------
 1499|    517|		return SUCCESS;
 1500|    517|	}
 1501|       |
 1502|    356|	if (UNEXPECTED(retval == DIV_BY_ZERO)) {
  ------------------
  |  |  457|    356|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 353]
  |  |  ------------------
  ------------------
 1503|      3|		goto div_by_zero;
 1504|      3|	}
 1505|       |
 1506|    356|	ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_DIV);
  ------------------
  |  |  494|    353|	ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode) \
  |  |  ------------------
  |  |  |  |  479|    353|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    706|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 351]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|    353|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  495|    353|	else \
  |  |  496|    353|	ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode)
  |  |  ------------------
  |  |  |  |  487|    353|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    706|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 349]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|    353|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    357|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|    353|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  ------------------
 1507|       |
 1508|    353|	zval result_copy, op1_copy, op2_copy;
 1509|    353|	if (UNEXPECTED(zendi_try_convert_scalar_to_number(op1, &op1_copy) == FAILURE)
  ------------------
  |  |  457|    706|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 344]
  |  |  ------------------
  ------------------
 1510|    344|			|| UNEXPECTED(zendi_try_convert_scalar_to_number(op2, &op2_copy) == FAILURE)) {
  ------------------
  |  |  457|    344|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 340]
  |  |  ------------------
  ------------------
 1511|     13|		zend_binop_error("/", op1, op2);
 1512|     13|		if (result != op1) {
  ------------------
  |  Branch (1512:7): [True: 11, False: 2]
  ------------------
 1513|     11|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     11|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     11|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     11|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1514|     11|		}
 1515|     13|		return FAILURE;
 1516|     13|	}
 1517|       |
 1518|    340|	retval = div_function_base(&result_copy, &op1_copy, &op2_copy);
 1519|    340|	if (retval == DIV_SUCCESS) {
  ------------------
  |  Branch (1519:6): [True: 332, False: 8]
  ------------------
 1520|    332|		if (result == op1) {
  ------------------
  |  Branch (1520:7): [True: 181, False: 151]
  ------------------
 1521|    181|			zval_ptr_dtor(result);
 1522|    181|		}
 1523|    332|		ZVAL_COPY_VALUE(result, &result_copy);
  ------------------
  |  | 1416|    332|	do {												\
  |  | 1417|    332|		zval *_z1 = (z);								\
  |  | 1418|    332|		const zval *_z2 = (v);							\
  |  | 1419|    332|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    332|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    332|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    332|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    332|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    332|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    332|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    332|	do {												\
  |  |  |  | 1408|    332|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    332|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    332|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    332|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    332|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    332|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    332|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 332]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    332|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 332]
  |  |  ------------------
  ------------------
 1524|    332|		return SUCCESS;
 1525|    332|	}
 1526|       |
 1527|     11|div_by_zero:
 1528|     11|	ZEND_ASSERT(retval == DIV_BY_ZERO && "DIV_TYPES_NOT_HANDLED should not occur here");
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1528:2): [True: 0, False: 11]
  |  Branch (1528:2): [True: 0, False: 0]
  |  Branch (1528:2): [True: 11, False: 0]
  |  Branch (1528:2): [True: 11, False: 0]
  ------------------
 1529|     11|	if (result != op1) {
  ------------------
  |  Branch (1529:6): [True: 4, False: 7]
  ------------------
 1530|      4|		ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1531|      4|	}
 1532|     11|	zend_throw_error(zend_ce_division_by_zero_error, "Division by zero");
 1533|     11|	return FAILURE;
 1534|     11|}
mod_function:
 1538|  2.02k|{
 1539|  2.02k|	zend_long op1_lval, op2_lval;
 1540|       |
 1541|  2.02k|	convert_op1_op2_long(op1, op1_lval, op2, op2_lval, result, ZEND_MOD, "%");
  ------------------
  |  |  506|  2.02k|	do {																\
  |  |  507|  2.02k|		if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {						\
  |  |  ------------------
  |  |  |  |  457|  2.02k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1.99k, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  508|  1.99k|			bool failed;											\
  |  |  509|  1.99k|			if (Z_ISREF_P(op1)) {										\
  |  |  ------------------
  |  |  |  |  964|  1.99k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|  1.99k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|  1.99k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|  1.99k|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (963:26): [True: 0, False: 1.99k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  510|      0|				op1 = Z_REFVAL_P(op1);									\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  511|      0|				if (Z_TYPE_P(op1) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (Z_TYPE_P(op1) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  |  |  Branch (511:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  512|      0|					op1_lval = Z_LVAL_P(op1);							\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  513|      0|					break;												\
  |  |  514|      0|				}														\
  |  |  515|      0|			}															\
  |  |  516|  1.99k|			ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode);				\
  |  |  ------------------
  |  |  |  |  479|  1.99k|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  3.99k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1.99k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|  1.99k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  517|  1.99k|			op1_lval = zendi_try_get_long(op1, &failed);				\
  |  |  518|  1.99k|			if (UNEXPECTED(failed)) {									\
  |  |  ------------------
  |  |  |  |  457|  1.99k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 5, False: 1.99k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  519|      5|				zend_binop_error(sigil, op1, op2);						\
  |  |  520|      5|				if (result != op1) {									\
  |  |  ------------------
  |  |  |  Branch (520:9): [True: 5, False: 0]
  |  |  ------------------
  |  |  521|      5|					ZVAL_UNDEF(result);									\
  |  |  ------------------
  |  |  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  522|      5|				}														\
  |  |  523|      5|				return FAILURE;											\
  |  |  524|      5|			}															\
  |  |  525|  1.99k|		} else {														\
  |  |  526|     25|			op1_lval = Z_LVAL_P(op1);									\
  |  |  ------------------
  |  |  |  |  976|     25|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     25|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  527|     25|		}																\
  |  |  528|  2.02k|	} while (0);														\
  |  |  ------------------
  |  |  |  Branch (528:11): [Folded, False: 2.01k]
  |  |  ------------------
  |  |  529|  2.02k|	do {																\
  |  |  530|  2.01k|		if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {						\
  |  |  ------------------
  |  |  |  |  457|  2.01k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 121, False: 1.89k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  531|    121|			bool failed;											\
  |  |  532|    121|			if (Z_ISREF_P(op2)) {										\
  |  |  ------------------
  |  |  |  |  964|    121|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|    121|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|    121|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|    121|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (963:26): [True: 0, False: 121]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  533|      0|				op2 = Z_REFVAL_P(op2);									\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  534|      0|				if (Z_TYPE_P(op2) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (Z_TYPE_P(op2) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  |  |  Branch (534:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  535|      0|					op2_lval = Z_LVAL_P(op2);							\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  536|      0|					break;												\
  |  |  537|      0|				}														\
  |  |  538|      0|			}															\
  |  |  539|    121|			ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode);				\
  |  |  ------------------
  |  |  |  |  487|    121|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    242|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 121]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|    121|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    121|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|    121|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  |  |  540|    121|			op2_lval = zendi_try_get_long(op2, &failed);				\
  |  |  541|    121|			if (UNEXPECTED(failed)) {									\
  |  |  ------------------
  |  |  |  |  457|    121|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 119]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  542|      2|				zend_binop_error(sigil, op1, op2);						\
  |  |  543|      2|				if (result != op1) {									\
  |  |  ------------------
  |  |  |  Branch (543:9): [True: 2, False: 0]
  |  |  ------------------
  |  |  544|      2|					ZVAL_UNDEF(result);									\
  |  |  ------------------
  |  |  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  545|      2|				}														\
  |  |  546|      2|				return FAILURE;											\
  |  |  547|      2|			}															\
  |  |  548|  1.89k|		} else {														\
  |  |  549|  1.89k|			op2_lval = Z_LVAL_P(op2);									\
  |  |  ------------------
  |  |  |  |  976|  1.89k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  1.89k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  550|  1.89k|		}																\
  |  |  551|  2.01k|	} while (0);
  |  |  ------------------
  |  |  |  Branch (551:11): [Folded, False: 2.01k]
  |  |  ------------------
  ------------------
 1542|       |
 1543|  2.01k|	if (op2_lval == 0) {
  ------------------
  |  Branch (1543:6): [True: 6, False: 2.01k]
  ------------------
 1544|       |		/* modulus by zero */
 1545|      6|		if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 6, False: 0]
  |  |  ------------------
  ------------------
              		if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   35|      6|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1545:35): [True: 6, False: 0]
  ------------------
 1546|      6|			zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
 1547|      6|		} else {
 1548|      0|			zend_error_noreturn(E_ERROR, "Modulo by zero");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 1549|      0|		}
 1550|      6|		if (op1 != result) {
  ------------------
  |  Branch (1550:7): [True: 5, False: 1]
  ------------------
 1551|      5|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1552|      5|		}
 1553|      6|		return FAILURE;
 1554|      6|	}
 1555|       |
 1556|  2.01k|	if (op1 == result) {
  ------------------
  |  Branch (1556:6): [True: 3, False: 2.00k]
  ------------------
 1557|      3|		zval_ptr_dtor(result);
 1558|      3|	}
 1559|       |
 1560|  2.01k|	if (op2_lval == -1) {
  ------------------
  |  Branch (1560:6): [True: 0, False: 2.01k]
  ------------------
 1561|       |		/* Prevent overflow error/crash if op1==LONG_MIN */
 1562|      0|		ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1563|      0|		return SUCCESS;
 1564|      0|	}
 1565|       |
 1566|  2.01k|	ZVAL_LONG(result, op1_lval % op2_lval);
  ------------------
  |  | 1076|  2.01k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  2.01k|		zval *__z = (z);				\
  |  | 1078|  2.01k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  2.01k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  2.01k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  2.01k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  2.01k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.01k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  2.01k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  2.01k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2.01k]
  |  |  ------------------
  ------------------
 1567|  2.01k|	return SUCCESS;
 1568|  2.01k|}
boolean_xor_function:
 1572|      1|{
 1573|      1|	int op1_val, op2_val;
 1574|       |
 1575|      1|	do {
 1576|      1|		if (Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (1576:7): [True: 0, False: 1]
  ------------------
 1577|      0|			op1_val = 0;
 1578|      1|		} else if (EXPECTED(Z_TYPE_P(op1) == IS_TRUE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1579|      0|			op1_val = 1;
 1580|      1|		} else {
 1581|      1|			if (Z_ISREF_P(op1)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1582|      0|				op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1583|      0|				if (Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(op1) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1583:9): [True: 0, False: 0]
  ------------------
 1584|      0|					op1_val = 0;
 1585|      0|					break;
 1586|      0|				} else if (EXPECTED(Z_TYPE_P(op1) == IS_TRUE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1587|      0|					op1_val = 1;
 1588|      0|					break;
 1589|      0|				}
 1590|      0|			}
 1591|      1|			ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BOOL_XOR);
  ------------------
  |  |  479|      1|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|      1|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  482|      0|			return SUCCESS; \
  |  |  483|      0|		} \
  |  |  484|      0|	}
  ------------------
 1592|      1|			op1_val = zend_is_true(op1);
 1593|      1|		}
 1594|      1|	} while (0);
  ------------------
  |  Branch (1594:11): [Folded, False: 1]
  ------------------
 1595|      1|	do {
 1596|      1|		if (Z_TYPE_P(op2) == IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(op2) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (1596:7): [True: 0, False: 1]
  ------------------
 1597|      0|			op2_val = 0;
 1598|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_TRUE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1599|      0|			op2_val = 1;
 1600|      1|		} else {
 1601|      1|			if (Z_ISREF_P(op2)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1602|      0|				op2 = Z_REFVAL_P(op2);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1603|      0|				if (Z_TYPE_P(op2) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(op2) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1603:9): [True: 0, False: 0]
  ------------------
 1604|      0|					op2_val = 0;
 1605|      0|					break;
 1606|      0|				} else if (EXPECTED(Z_TYPE_P(op2) == IS_TRUE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1607|      0|					op2_val = 1;
 1608|      0|					break;
 1609|      0|				}
 1610|      0|			}
 1611|      1|			ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BOOL_XOR);
  ------------------
  |  |  487|      1|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  488|      1|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|      1|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|		return SUCCESS; \
  |  |  491|      0|	}
  ------------------
 1612|      1|			op2_val = zend_is_true(op2);
 1613|      1|		}
 1614|      1|	} while (0);
  ------------------
  |  Branch (1614:11): [Folded, False: 1]
  ------------------
 1615|       |
 1616|      1|	ZVAL_BOOL(result, op1_val ^ op2_val);
  ------------------
  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  ------------------
  |  | 1074|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1617|      1|	return SUCCESS;
 1618|      1|}
boolean_not_function:
 1622|     66|{
 1623|     66|	if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  669|     66|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     66|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  609|     66|#define IS_TRUE						3
  ------------------
  |  Branch (1623:6): [True: 9, False: 57]
  ------------------
 1624|      9|		ZVAL_TRUE(result);
  ------------------
  |  | 1067|      9|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      9|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      9|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1625|     57|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_TRUE)) {
  ------------------
  |  |  456|     57|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 57]
  |  |  ------------------
  ------------------
 1626|      0|		ZVAL_FALSE(result);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1627|     57|	} else {
 1628|     57|		if (Z_ISREF_P(op1)) {
  ------------------
  |  |  964|     57|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     57|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     57|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     57|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 57]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1629|      0|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1630|      0|			if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (1630:8): [True: 0, False: 0]
  ------------------
 1631|      0|				ZVAL_TRUE(result);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1632|      0|				return SUCCESS;
 1633|      0|			} else if (EXPECTED(Z_TYPE_P(op1) == IS_TRUE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1634|      0|				ZVAL_FALSE(result);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1635|      0|				return SUCCESS;
 1636|      0|			}
 1637|      0|		}
 1638|     57|		ZEND_TRY_UNARY_OBJECT_OPERATION(ZEND_BOOL_NOT);
  ------------------
  |  |  499|     57|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|    114|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 57]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  500|     57|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|     57|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  501|     57|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, NULL))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  502|      0|		return SUCCESS; \
  |  |  503|      0|	}
  ------------------
 1639|       |
 1640|     57|		ZVAL_BOOL(result, !zend_is_true(op1));
  ------------------
  |  | 1071|     57|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     57|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     57|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     57|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     57|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|     10|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|    104|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 10, False: 47]
  |  |  ------------------
  |  | 1074|     57|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 57]
  |  |  ------------------
  ------------------
 1641|     57|	}
 1642|     66|	return SUCCESS;
 1643|     66|}
bitwise_not_function:
 1647|    400|{
 1648|    401|try_again:
 1649|    401|	switch (Z_TYPE_P(op1)) {
  ------------------
  |  |  669|    401|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    401|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 1650|     63|		case IS_LONG:
  ------------------
  |  |  610|     63|#define IS_LONG						4
  ------------------
  |  Branch (1650:3): [True: 63, False: 338]
  ------------------
 1651|     63|			ZVAL_LONG(result, ~Z_LVAL_P(op1));
  ------------------
  |  | 1076|     63|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     63|		zval *__z = (z);				\
  |  | 1078|     63|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     63|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     63|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     63|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     63|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     63|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     63|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     63|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 63]
  |  |  ------------------
  ------------------
 1652|     63|			return SUCCESS;
 1653|    217|		case IS_DOUBLE: {
  ------------------
  |  |  611|    217|#define IS_DOUBLE					5
  ------------------
  |  Branch (1653:3): [True: 217, False: 184]
  ------------------
 1654|    217|			zend_long lval = zend_dval_to_lval_safe(Z_DVAL_P(op1));
  ------------------
  |  |  979|    217|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    217|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 1655|    217|			if (EG(exception)) {
  ------------------
  |  |   45|    217|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 217]
  |  |  ------------------
  ------------------
 1656|      0|				if (result != op1) {
  ------------------
  |  Branch (1656:9): [True: 0, False: 0]
  ------------------
 1657|      0|					ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1658|      0|				}
 1659|      0|				return FAILURE;
 1660|      0|			}
 1661|    217|			ZVAL_LONG(result, ~lval);
  ------------------
  |  | 1076|    217|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    217|		zval *__z = (z);				\
  |  | 1078|    217|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    217|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    217|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    217|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    217|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    217|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    217|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    217|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 217]
  |  |  ------------------
  ------------------
 1662|    217|			return SUCCESS;
 1663|    217|		}
 1664|    112|		case IS_STRING: {
  ------------------
  |  |  612|    112|#define IS_STRING					6
  ------------------
  |  Branch (1664:3): [True: 112, False: 289]
  ------------------
 1665|    112|			size_t i;
 1666|       |
 1667|    112|			if (Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  988|    112|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    112|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    112|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1667:8): [True: 0, False: 112]
  ------------------
 1668|      0|				zend_uchar not = (zend_uchar) ~*Z_STRVAL_P(op1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1669|      0|				ZVAL_CHAR(result, not);
  ------------------
  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      0|		char _c = (c);                          \
  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1670|    112|			} else {
 1671|    112|				ZVAL_NEW_STR(result, zend_string_alloc(Z_STRLEN_P(op1), 0));
  ------------------
  |  | 1105|    112|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|    112|		zval *__z = (z);						\
  |  | 1107|    112|		zend_string *__s = (s);					\
  |  | 1108|    112|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    112|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    112|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|    112|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|    112|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    112|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|    112|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    112|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    112|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    112|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|    112|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 112]
  |  |  ------------------
  ------------------
 1672|   140k|				for (i = 0; i < Z_STRLEN_P(op1); i++) {
  ------------------
  |  |  988|   140k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|   140k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|   140k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1672:17): [True: 140k, False: 112]
  ------------------
 1673|   140k|					Z_STRVAL_P(result)[i] = ~Z_STRVAL_P(op1)[i];
  ------------------
  |  |  985|   140k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|   140k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|   140k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					Z_STRVAL_P(result)[i] = ~Z_STRVAL_P(op1)[i];
  ------------------
  |  |  985|   140k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|   140k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|   140k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1674|   140k|				}
 1675|    112|				Z_STRVAL_P(result)[i] = 0;
  ------------------
  |  |  985|    112|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    112|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    112|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1676|    112|			}
 1677|    112|			return SUCCESS;
 1678|    217|		}
 1679|      1|		case IS_REFERENCE:
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (1679:3): [True: 1, False: 400]
  ------------------
 1680|      1|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1681|      1|			goto try_again;
 1682|      8|		default:
  ------------------
  |  Branch (1682:3): [True: 8, False: 393]
  ------------------
 1683|      8|			ZEND_TRY_UNARY_OBJECT_OPERATION(ZEND_BW_NOT);
  ------------------
  |  |  499|      8|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  500|      8|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  501|      8|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, NULL))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  502|      0|		return SUCCESS; \
  |  |  503|      0|	}
  ------------------
 1684|       |
 1685|      8|			if (result != op1) {
  ------------------
  |  Branch (1685:8): [True: 8, False: 0]
  ------------------
 1686|      8|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      8|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      8|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      8|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1687|      8|			}
 1688|      8|			zend_type_error("Cannot perform bitwise not on %s", zend_zval_value_name(op1));
 1689|      8|			return FAILURE;
 1690|    401|	}
 1691|    401|}
bitwise_or_function:
 1695|     47|{
 1696|     47|	zend_long op1_lval, op2_lval;
 1697|       |
 1698|     47|	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG) && EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     94|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 29, False: 18]
  |  |  ------------------
  ------------------
              	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG) && EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     29|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 10]
  |  |  ------------------
  ------------------
 1699|     19|		ZVAL_LONG(result, Z_LVAL_P(op1) | Z_LVAL_P(op2));
  ------------------
  |  | 1076|     19|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     19|		zval *__z = (z);				\
  |  | 1078|     19|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     19|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     19|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     19|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     19|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
 1700|     19|		return SUCCESS;
 1701|     19|	}
 1702|       |
 1703|     28|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|     28|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     28|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1704|     28|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|     28|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     28|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      2|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      2|		}												\
  |  | 1478|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1705|       |
 1706|     28|	if (Z_TYPE_P(op1) == IS_STRING && EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  669|     28|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     28|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  612|     56|#define IS_STRING					6
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1706:6): [True: 4, False: 24]
  ------------------
 1707|      4|		zval *longer, *shorter;
 1708|      4|		zend_string *str;
 1709|      4|		size_t i;
 1710|       |
 1711|      4|		if (EXPECTED(Z_STRLEN_P(op1) >= Z_STRLEN_P(op2))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 1712|      3|			if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
              			if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  988|      2|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      2|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1712:56): [True: 0, False: 2]
  ------------------
 1713|      0|				zend_uchar or = (zend_uchar) (*Z_STRVAL_P(op1) | *Z_STRVAL_P(op2));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_uchar or = (zend_uchar) (*Z_STRVAL_P(op1) | *Z_STRVAL_P(op2));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1714|      0|				if (result==op1) {
  ------------------
  |  Branch (1714:9): [True: 0, False: 0]
  ------------------
 1715|      0|					zval_ptr_dtor_str(result);
 1716|      0|				}
 1717|      0|				ZVAL_CHAR(result, or);
  ------------------
  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      0|		char _c = (c);                          \
  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1718|      0|				return SUCCESS;
 1719|      0|			}
 1720|      3|			longer = op1;
 1721|      3|			shorter = op2;
 1722|      3|		} else {
 1723|      1|			longer = op2;
 1724|      1|			shorter = op1;
 1725|      1|		}
 1726|       |
 1727|      4|		str = zend_string_alloc(Z_STRLEN_P(longer), 0);
  ------------------
  |  |  988|      4|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      4|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1728|     24|		for (i = 0; i < Z_STRLEN_P(shorter); i++) {
  ------------------
  |  |  988|     24|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     24|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     24|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1728:15): [True: 20, False: 4]
  ------------------
 1729|     20|			ZSTR_VAL(str)[i] = Z_STRVAL_P(longer)[i] | Z_STRVAL_P(shorter)[i];
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(str)[i] = Z_STRVAL_P(longer)[i] | Z_STRVAL_P(shorter)[i];
  ------------------
  |  |  985|     20|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     20|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			ZSTR_VAL(str)[i] = Z_STRVAL_P(longer)[i] | Z_STRVAL_P(shorter)[i];
  ------------------
  |  |  985|     20|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     20|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1730|     20|		}
 1731|      4|		memcpy(ZSTR_VAL(str) + i, Z_STRVAL_P(longer) + i, Z_STRLEN_P(longer) - i + 1);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + i, Z_STRVAL_P(longer) + i, Z_STRLEN_P(longer) - i + 1);
  ------------------
  |  |  985|      4|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      4|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		memcpy(ZSTR_VAL(str) + i, Z_STRVAL_P(longer) + i, Z_STRLEN_P(longer) - i + 1);
  ------------------
  |  |  988|      4|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      4|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1732|      4|		if (result==op1) {
  ------------------
  |  Branch (1732:7): [True: 1, False: 3]
  ------------------
 1733|      1|			zval_ptr_dtor_str(result);
 1734|      1|		}
 1735|      4|		ZVAL_NEW_STR(result, str);
  ------------------
  |  | 1105|      4|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      4|		zval *__z = (z);						\
  |  | 1107|      4|		zend_string *__s = (s);					\
  |  | 1108|      4|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      4|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1736|      4|		return SUCCESS;
 1737|      4|	}
 1738|       |
 1739|     24|	if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 10]
  |  |  ------------------
  ------------------
 1740|     14|		bool failed;
 1741|     14|		ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BW_OR);
  ------------------
  |  |  479|     14|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|     14|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  482|      0|			return SUCCESS; \
  |  |  483|      0|		} \
  |  |  484|      0|	}
  ------------------
 1742|     14|		op1_lval = zendi_try_get_long(op1, &failed);
 1743|     14|		if (UNEXPECTED(failed)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 13]
  |  |  ------------------
  ------------------
 1744|      1|			zend_binop_error("|", op1, op2);
 1745|      1|			if (result != op1) {
  ------------------
  |  Branch (1745:8): [True: 1, False: 0]
  ------------------
 1746|      1|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1747|      1|			}
 1748|      1|			return FAILURE;
 1749|      1|		}
 1750|     14|	} else {
 1751|     10|		op1_lval = Z_LVAL_P(op1);
  ------------------
  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1752|     10|	}
 1753|     23|	if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {
  ------------------
  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 2]
  |  |  ------------------
  ------------------
 1754|     21|		bool failed;
 1755|     21|		ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BW_OR);
  ------------------
  |  |  487|     21|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|     42|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  488|     21|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|     21|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|		return SUCCESS; \
  |  |  491|      0|	}
  ------------------
 1756|     21|		op2_lval = zendi_try_get_long(op2, &failed);
 1757|     21|		if (UNEXPECTED(failed)) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 18]
  |  |  ------------------
  ------------------
 1758|      3|			zend_binop_error("|", op1, op2);
 1759|      3|			if (result != op1) {
  ------------------
  |  Branch (1759:8): [True: 3, False: 0]
  ------------------
 1760|      3|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1761|      3|			}
 1762|      3|			return FAILURE;
 1763|      3|		}
 1764|     21|	} else {
 1765|      2|		op2_lval = Z_LVAL_P(op2);
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1766|      2|	}
 1767|       |
 1768|     20|	if (op1 == result) {
  ------------------
  |  Branch (1768:6): [True: 2, False: 18]
  ------------------
 1769|      2|		zval_ptr_dtor(result);
 1770|      2|	}
 1771|     20|	ZVAL_LONG(result, op1_lval | op2_lval);
  ------------------
  |  | 1076|     20|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     20|		zval *__z = (z);				\
  |  | 1078|     20|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     20|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     20|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     20|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     20|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1772|     20|	return SUCCESS;
 1773|     23|}
bitwise_and_function:
 1777|  1.07k|{
 1778|  1.07k|	zend_long op1_lval, op2_lval;
 1779|       |
 1780|  1.07k|	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG) && EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|  2.15k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 184, False: 894]
  |  |  ------------------
  ------------------
              	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG) && EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    184|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 26, False: 158]
  |  |  ------------------
  ------------------
 1781|     26|		ZVAL_LONG(result, Z_LVAL_P(op1) & Z_LVAL_P(op2));
  ------------------
  |  | 1076|     26|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     26|		zval *__z = (z);				\
  |  | 1078|     26|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     26|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     26|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     26|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     26|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
 1782|     26|		return SUCCESS;
 1783|     26|	}
 1784|       |
 1785|  1.05k|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|  1.05k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.05k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.05k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.05k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  1.05k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.05k]
  |  |  ------------------
  ------------------
 1786|  1.05k|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|  1.05k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.05k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.05k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 5, False: 1.04k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      5|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      5|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      5|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      5|		}												\
  |  | 1478|  1.05k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.05k]
  |  |  ------------------
  ------------------
 1787|       |
 1788|  1.05k|	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|  1.05k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.05k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|  2.10k|#define IS_STRING					6
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|    116|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    116|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|    116|#define IS_STRING					6
  ------------------
  |  Branch (1788:6): [True: 116, False: 936]
  |  Branch (1788:36): [True: 6, False: 110]
  ------------------
 1789|      6|		zval *longer, *shorter;
 1790|      6|		zend_string *str;
 1791|      6|		size_t i;
 1792|       |
 1793|      6|		if (EXPECTED(Z_STRLEN_P(op1) >= Z_STRLEN_P(op2))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
 1794|      5|			if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
              			if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1794:56): [True: 0, False: 0]
  ------------------
 1795|      0|				zend_uchar and = (zend_uchar) (*Z_STRVAL_P(op1) & *Z_STRVAL_P(op2));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_uchar and = (zend_uchar) (*Z_STRVAL_P(op1) & *Z_STRVAL_P(op2));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1796|      0|				if (result==op1) {
  ------------------
  |  Branch (1796:9): [True: 0, False: 0]
  ------------------
 1797|      0|					zval_ptr_dtor_str(result);
 1798|      0|				}
 1799|      0|				ZVAL_CHAR(result, and);
  ------------------
  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      0|		char _c = (c);                          \
  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1800|      0|				return SUCCESS;
 1801|      0|			}
 1802|      5|			longer = op1;
 1803|      5|			shorter = op2;
 1804|      5|		} else {
 1805|      1|			longer = op2;
 1806|      1|			shorter = op1;
 1807|      1|		}
 1808|       |
 1809|      6|		str = zend_string_alloc(Z_STRLEN_P(shorter), 0);
  ------------------
  |  |  988|      6|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      6|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1810|     33|		for (i = 0; i < Z_STRLEN_P(shorter); i++) {
  ------------------
  |  |  988|     33|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     33|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     33|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1810:15): [True: 27, False: 6]
  ------------------
 1811|     27|			ZSTR_VAL(str)[i] = Z_STRVAL_P(shorter)[i] & Z_STRVAL_P(longer)[i];
  ------------------
  |  |   67|     27|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(str)[i] = Z_STRVAL_P(shorter)[i] & Z_STRVAL_P(longer)[i];
  ------------------
  |  |  985|     27|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     27|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     27|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			ZSTR_VAL(str)[i] = Z_STRVAL_P(shorter)[i] & Z_STRVAL_P(longer)[i];
  ------------------
  |  |  985|     27|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     27|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     27|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1812|     27|		}
 1813|      6|		ZSTR_VAL(str)[i] = 0;
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1814|      6|		if (result==op1) {
  ------------------
  |  Branch (1814:7): [True: 0, False: 6]
  ------------------
 1815|      0|			zval_ptr_dtor_str(result);
 1816|      0|		}
 1817|      6|		ZVAL_NEW_STR(result, str);
  ------------------
  |  | 1105|      6|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      6|		zval *__z = (z);						\
  |  | 1107|      6|		zend_string *__s = (s);					\
  |  | 1108|      6|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      6|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1818|      6|		return SUCCESS;
 1819|      6|	}
 1820|       |
 1821|  1.04k|	if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {
  ------------------
  |  |  457|  1.04k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 888, False: 158]
  |  |  ------------------
  ------------------
 1822|    888|		bool failed;
 1823|    888|		ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BW_AND);
  ------------------
  |  |  479|    888|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|  1.77k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 888]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|    888|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  482|      0|			return SUCCESS; \
  |  |  483|      0|		} \
  |  |  484|      0|	}
  ------------------
 1824|    888|		op1_lval = zendi_try_get_long(op1, &failed);
 1825|    888|		if (UNEXPECTED(failed)) {
  ------------------
  |  |  457|    888|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 888]
  |  |  ------------------
  ------------------
 1826|      0|			zend_binop_error("&", op1, op2);
 1827|      0|			if (result != op1) {
  ------------------
  |  Branch (1827:8): [True: 0, False: 0]
  ------------------
 1828|      0|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1829|      0|			}
 1830|      0|			return FAILURE;
 1831|      0|		}
 1832|    888|	} else {
 1833|    158|		op1_lval = Z_LVAL_P(op1);
  ------------------
  |  |  976|    158|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    158|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1834|    158|	}
 1835|  1.04k|	if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {
  ------------------
  |  |  457|  1.04k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 623, False: 423]
  |  |  ------------------
  ------------------
 1836|    623|		bool failed;
 1837|    623|		ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BW_AND);
  ------------------
  |  |  487|    623|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|  1.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 622]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  488|    623|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|    624|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|    623|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|		return SUCCESS; \
  |  |  491|      0|	}
  ------------------
 1838|    623|		op2_lval = zendi_try_get_long(op2, &failed);
 1839|    623|		if (UNEXPECTED(failed)) {
  ------------------
  |  |  457|    623|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 621]
  |  |  ------------------
  ------------------
 1840|      2|			zend_binop_error("&", op1, op2);
 1841|      2|			if (result != op1) {
  ------------------
  |  Branch (1841:8): [True: 2, False: 0]
  ------------------
 1842|      2|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1843|      2|			}
 1844|      2|			return FAILURE;
 1845|      2|		}
 1846|    623|	} else {
 1847|    423|		op2_lval = Z_LVAL_P(op2);
  ------------------
  |  |  976|    423|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    423|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1848|    423|	}
 1849|       |
 1850|  1.04k|	if (op1 == result) {
  ------------------
  |  Branch (1850:6): [True: 118, False: 926]
  ------------------
 1851|    118|		zval_ptr_dtor(result);
 1852|    118|	}
 1853|  1.04k|	ZVAL_LONG(result, op1_lval & op2_lval);
  ------------------
  |  | 1076|  1.04k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  1.04k|		zval *__z = (z);				\
  |  | 1078|  1.04k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  1.04k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  1.04k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  1.04k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  1.04k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.04k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  1.04k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  1.04k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1.04k]
  |  |  ------------------
  ------------------
 1854|  1.04k|	return SUCCESS;
 1855|  1.04k|}
bitwise_xor_function:
 1859|  2.32k|{
 1860|  2.32k|	zend_long op1_lval, op2_lval;
 1861|       |
 1862|  2.32k|	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG) && EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|  4.65k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.22k, False: 107]
  |  |  ------------------
  ------------------
              	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG) && EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|  2.22k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 94, False: 2.12k]
  |  |  ------------------
  ------------------
 1863|     94|		ZVAL_LONG(result, Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
  ------------------
  |  | 1076|     94|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     94|		zval *__z = (z);				\
  |  | 1078|     94|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     94|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     94|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     94|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     94|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     94|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     94|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     94|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 94]
  |  |  ------------------
  ------------------
 1864|     94|		return SUCCESS;
 1865|     94|	}
 1866|       |
 1867|  2.23k|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|  2.23k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.23k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.23k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  2.23k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.23k]
  |  |  ------------------
  ------------------
 1868|  2.23k|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|  2.23k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.23k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.23k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  2.23k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.23k]
  |  |  ------------------
  ------------------
 1869|       |
 1870|  2.23k|	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|  2.23k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.23k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|  4.46k|#define IS_STRING					6
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) == IS_STRING && Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|     11|#define IS_STRING					6
  ------------------
  |  Branch (1870:6): [True: 11, False: 2.22k]
  |  Branch (1870:36): [True: 11, False: 0]
  ------------------
 1871|     11|		zval *longer, *shorter;
 1872|     11|		zend_string *str;
 1873|     11|		size_t i;
 1874|       |
 1875|     11|		if (EXPECTED(Z_STRLEN_P(op1) >= Z_STRLEN_P(op2))) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 7]
  |  |  ------------------
  ------------------
 1876|      4|			if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
              			if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1876:56): [True: 0, False: 0]
  ------------------
 1877|      0|				zend_uchar xor = (zend_uchar) (*Z_STRVAL_P(op1) ^ *Z_STRVAL_P(op2));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_uchar xor = (zend_uchar) (*Z_STRVAL_P(op1) ^ *Z_STRVAL_P(op2));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1878|      0|				if (result==op1) {
  ------------------
  |  Branch (1878:9): [True: 0, False: 0]
  ------------------
 1879|      0|					zval_ptr_dtor_str(result);
 1880|      0|				}
 1881|      0|				ZVAL_CHAR(result, xor);
  ------------------
  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      0|		char _c = (c);                          \
  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1882|      0|				return SUCCESS;
 1883|      0|			}
 1884|      4|			longer = op1;
 1885|      4|			shorter = op2;
 1886|      7|		} else {
 1887|      7|			longer = op2;
 1888|      7|			shorter = op1;
 1889|      7|		}
 1890|       |
 1891|     11|		str = zend_string_alloc(Z_STRLEN_P(shorter), 0);
  ------------------
  |  |  988|     11|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     11|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1892|     17|		for (i = 0; i < Z_STRLEN_P(shorter); i++) {
  ------------------
  |  |  988|     17|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     17|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1892:15): [True: 6, False: 11]
  ------------------
 1893|      6|			ZSTR_VAL(str)[i] = Z_STRVAL_P(shorter)[i] ^ Z_STRVAL_P(longer)[i];
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(str)[i] = Z_STRVAL_P(shorter)[i] ^ Z_STRVAL_P(longer)[i];
  ------------------
  |  |  985|      6|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      6|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			ZSTR_VAL(str)[i] = Z_STRVAL_P(shorter)[i] ^ Z_STRVAL_P(longer)[i];
  ------------------
  |  |  985|      6|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      6|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1894|      6|		}
 1895|     11|		ZSTR_VAL(str)[i] = 0;
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1896|     11|		if (result==op1) {
  ------------------
  |  Branch (1896:7): [True: 0, False: 11]
  ------------------
 1897|      0|			zval_ptr_dtor_str(result);
 1898|      0|		}
 1899|     11|		ZVAL_NEW_STR(result, str);
  ------------------
  |  | 1105|     11|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     11|		zval *__z = (z);						\
  |  | 1107|     11|		zend_string *__s = (s);					\
  |  | 1108|     11|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     11|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     11|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1900|     11|		return SUCCESS;
 1901|     11|	}
 1902|       |
 1903|  2.22k|	if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {
  ------------------
  |  |  457|  2.22k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 96, False: 2.12k]
  |  |  ------------------
  ------------------
 1904|     96|		bool failed;
 1905|     96|		ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BW_XOR);
  ------------------
  |  |  479|     96|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|    192|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 96]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  480|     96|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  482|      0|			return SUCCESS; \
  |  |  483|      0|		} \
  |  |  484|      0|	}
  ------------------
 1906|     96|		op1_lval = zendi_try_get_long(op1, &failed);
 1907|     96|		if (UNEXPECTED(failed)) {
  ------------------
  |  |  457|     96|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 95]
  |  |  ------------------
  ------------------
 1908|      1|			zend_binop_error("^", op1, op2);
 1909|      1|			if (result != op1) {
  ------------------
  |  Branch (1909:8): [True: 1, False: 0]
  ------------------
 1910|      1|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1911|      1|			}
 1912|      1|			return FAILURE;
 1913|      1|		}
 1914|  2.12k|	} else {
 1915|  2.12k|		op1_lval = Z_LVAL_P(op1);
  ------------------
  |  |  976|  2.12k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  2.12k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1916|  2.12k|	}
 1917|  2.22k|	if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {
  ------------------
  |  |  457|  2.22k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.13k, False: 92]
  |  |  ------------------
  ------------------
 1918|  2.13k|		bool failed;
 1919|  2.13k|		ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BW_XOR);
  ------------------
  |  |  487|  2.13k|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|  4.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.13k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  488|  2.13k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|  2.13k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|  2.13k|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|		return SUCCESS; \
  |  |  491|      0|	}
  ------------------
 1920|  2.13k|		op2_lval = zendi_try_get_long(op2, &failed);
 1921|  2.13k|		if (UNEXPECTED(failed)) {
  ------------------
  |  |  457|  2.13k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.13k]
  |  |  ------------------
  ------------------
 1922|      0|			zend_binop_error("^", op1, op2);
 1923|      0|			if (result != op1) {
  ------------------
  |  Branch (1923:8): [True: 0, False: 0]
  ------------------
 1924|      0|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1925|      0|			}
 1926|      0|			return FAILURE;
 1927|      0|		}
 1928|  2.13k|	} else {
 1929|     92|		op2_lval = Z_LVAL_P(op2);
  ------------------
  |  |  976|     92|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     92|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1930|     92|	}
 1931|       |
 1932|  2.22k|	if (op1 == result) {
  ------------------
  |  Branch (1932:6): [True: 0, False: 2.22k]
  ------------------
 1933|      0|		zval_ptr_dtor(result);
 1934|      0|	}
 1935|  2.22k|	ZVAL_LONG(result, op1_lval ^ op2_lval);
  ------------------
  |  | 1076|  2.22k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  2.22k|		zval *__z = (z);				\
  |  | 1078|  2.22k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  2.22k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  2.22k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  2.22k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  2.22k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.22k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  2.22k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  2.22k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2.22k]
  |  |  ------------------
  ------------------
 1936|  2.22k|	return SUCCESS;
 1937|  2.22k|}
shift_left_function:
 1941|    351|{
 1942|    351|	zend_long op1_lval, op2_lval;
 1943|       |
 1944|    351|	convert_op1_op2_long(op1, op1_lval, op2, op2_lval, result, ZEND_SL, "<<");
  ------------------
  |  |  506|    351|	do {																\
  |  |  507|    351|		if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {						\
  |  |  ------------------
  |  |  |  |  457|    351|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 24, False: 327]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  508|     24|			bool failed;											\
  |  |  509|     24|			if (Z_ISREF_P(op1)) {										\
  |  |  ------------------
  |  |  |  |  964|     24|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|     24|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|     24|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (963:26): [True: 0, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  510|      0|				op1 = Z_REFVAL_P(op1);									\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  511|      0|				if (Z_TYPE_P(op1) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (Z_TYPE_P(op1) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  |  |  Branch (511:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  512|      0|					op1_lval = Z_LVAL_P(op1);							\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  513|      0|					break;												\
  |  |  514|      0|				}														\
  |  |  515|      0|			}															\
  |  |  516|     24|			ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode);				\
  |  |  ------------------
  |  |  |  |  479|     24|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     48|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|     24|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  517|     24|			op1_lval = zendi_try_get_long(op1, &failed);				\
  |  |  518|     24|			if (UNEXPECTED(failed)) {									\
  |  |  ------------------
  |  |  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  519|      0|				zend_binop_error(sigil, op1, op2);						\
  |  |  520|      0|				if (result != op1) {									\
  |  |  ------------------
  |  |  |  Branch (520:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  521|      0|					ZVAL_UNDEF(result);									\
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  522|      0|				}														\
  |  |  523|      0|				return FAILURE;											\
  |  |  524|      0|			}															\
  |  |  525|    327|		} else {														\
  |  |  526|    327|			op1_lval = Z_LVAL_P(op1);									\
  |  |  ------------------
  |  |  |  |  976|    327|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    327|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  527|    327|		}																\
  |  |  528|    351|	} while (0);														\
  |  |  ------------------
  |  |  |  Branch (528:11): [Folded, False: 351]
  |  |  ------------------
  |  |  529|    351|	do {																\
  |  |  530|    351|		if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {						\
  |  |  ------------------
  |  |  |  |  457|    351|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 320, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  531|    320|			bool failed;											\
  |  |  532|    320|			if (Z_ISREF_P(op2)) {										\
  |  |  ------------------
  |  |  |  |  964|    320|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|    320|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|    320|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|    320|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (963:26): [True: 0, False: 320]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  533|      0|				op2 = Z_REFVAL_P(op2);									\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  534|      0|				if (Z_TYPE_P(op2) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (Z_TYPE_P(op2) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  |  |  Branch (534:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  535|      0|					op2_lval = Z_LVAL_P(op2);							\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  536|      0|					break;												\
  |  |  537|      0|				}														\
  |  |  538|      0|			}															\
  |  |  539|    320|			ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode);				\
  |  |  ------------------
  |  |  |  |  487|    320|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    640|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 320]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|    320|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    320|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|    320|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  |  |  540|    320|			op2_lval = zendi_try_get_long(op2, &failed);				\
  |  |  541|    320|			if (UNEXPECTED(failed)) {									\
  |  |  ------------------
  |  |  |  |  457|    320|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 318]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  542|      2|				zend_binop_error(sigil, op1, op2);						\
  |  |  543|      2|				if (result != op1) {									\
  |  |  ------------------
  |  |  |  Branch (543:9): [True: 2, False: 0]
  |  |  ------------------
  |  |  544|      2|					ZVAL_UNDEF(result);									\
  |  |  ------------------
  |  |  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  545|      2|				}														\
  |  |  546|      2|				return FAILURE;											\
  |  |  547|      2|			}															\
  |  |  548|    320|		} else {														\
  |  |  549|     31|			op2_lval = Z_LVAL_P(op2);									\
  |  |  ------------------
  |  |  |  |  976|     31|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     31|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  550|     31|		}																\
  |  |  551|    351|	} while (0);
  |  |  ------------------
  |  |  |  Branch (551:11): [Folded, False: 349]
  |  |  ------------------
  ------------------
 1945|       |
 1946|       |	/* prevent wrapping quirkiness on some processors where << 64 + x == << x */
 1947|    349|	if (UNEXPECTED((zend_ulong)op2_lval >= SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  457|    349|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 30, False: 319]
  |  |  ------------------
  ------------------
 1948|     30|		if (EXPECTED(op2_lval > 0)) {
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 26, False: 4]
  |  |  ------------------
  ------------------
 1949|     26|			if (op1 == result) {
  ------------------
  |  Branch (1949:8): [True: 0, False: 26]
  ------------------
 1950|      0|				zval_ptr_dtor(result);
 1951|      0|			}
 1952|     26|			ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|     26|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     26|		zval *__z = (z);				\
  |  | 1078|     26|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     26|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     26|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     26|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     26|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
 1953|     26|			return SUCCESS;
 1954|     26|		} else {
 1955|      4|			if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 4, False: 0]
  |  |  ------------------
  ------------------
              			if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1955:36): [True: 4, False: 0]
  ------------------
 1956|      4|				zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Bit shift by negative number");
 1957|      4|			} else {
 1958|      0|				zend_error_noreturn(E_ERROR, "Bit shift by negative number");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 1959|      0|			}
 1960|      4|			if (op1 != result) {
  ------------------
  |  Branch (1960:8): [True: 4, False: 0]
  ------------------
 1961|      4|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1962|      4|			}
 1963|      4|			return FAILURE;
 1964|      4|		}
 1965|     30|	}
 1966|       |
 1967|    319|	if (op1 == result) {
  ------------------
  |  Branch (1967:6): [True: 0, False: 319]
  ------------------
 1968|      0|		zval_ptr_dtor(result);
 1969|      0|	}
 1970|       |
 1971|       |	/* Perform shift on unsigned numbers to get well-defined wrap behavior. */
 1972|    319|	ZVAL_LONG(result, (zend_long) ((zend_ulong) op1_lval << op2_lval));
  ------------------
  |  | 1076|    319|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    319|		zval *__z = (z);				\
  |  | 1078|    319|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    319|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    319|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    319|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    319|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    319|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    319|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    319|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 319]
  |  |  ------------------
  ------------------
 1973|    319|	return SUCCESS;
 1974|    349|}
shift_right_function:
 1978|     25|{
 1979|     25|	zend_long op1_lval, op2_lval;
 1980|       |
 1981|     25|	convert_op1_op2_long(op1, op1_lval, op2, op2_lval, result, ZEND_SR, ">>");
  ------------------
  |  |  506|     25|	do {																\
  |  |  507|     25|		if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {						\
  |  |  ------------------
  |  |  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 16, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  508|     16|			bool failed;											\
  |  |  509|     16|			if (Z_ISREF_P(op1)) {										\
  |  |  ------------------
  |  |  |  |  964|     16|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|     16|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (963:26): [True: 3, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  510|      3|				op1 = Z_REFVAL_P(op1);									\
  |  |  ------------------
  |  |  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  511|      3|				if (Z_TYPE_P(op1) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (Z_TYPE_P(op1) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  ------------------
  |  |  |  Branch (511:9): [True: 3, False: 0]
  |  |  ------------------
  |  |  512|      3|					op1_lval = Z_LVAL_P(op1);							\
  |  |  ------------------
  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  513|      3|					break;												\
  |  |  514|      3|				}														\
  |  |  515|      3|			}															\
  |  |  516|     16|			ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode);				\
  |  |  ------------------
  |  |  |  |  479|     13|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|     13|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  517|     13|			op1_lval = zendi_try_get_long(op1, &failed);				\
  |  |  518|     13|			if (UNEXPECTED(failed)) {									\
  |  |  ------------------
  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  519|      3|				zend_binop_error(sigil, op1, op2);						\
  |  |  520|      3|				if (result != op1) {									\
  |  |  ------------------
  |  |  |  Branch (520:9): [True: 3, False: 0]
  |  |  ------------------
  |  |  521|      3|					ZVAL_UNDEF(result);									\
  |  |  ------------------
  |  |  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  522|      3|				}														\
  |  |  523|      3|				return FAILURE;											\
  |  |  524|      3|			}															\
  |  |  525|     13|		} else {														\
  |  |  526|      9|			op1_lval = Z_LVAL_P(op1);									\
  |  |  ------------------
  |  |  |  |  976|      9|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      9|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  527|      9|		}																\
  |  |  528|     25|	} while (0);														\
  |  |  ------------------
  |  |  |  Branch (528:11): [Folded, False: 19]
  |  |  ------------------
  |  |  529|     25|	do {																\
  |  |  530|     22|		if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {						\
  |  |  ------------------
  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 5, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  531|      5|			bool failed;											\
  |  |  532|      5|			if (Z_ISREF_P(op2)) {										\
  |  |  ------------------
  |  |  |  |  964|      5|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      5|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (963:26): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  533|      0|				op2 = Z_REFVAL_P(op2);									\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  534|      0|				if (Z_TYPE_P(op2) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               				if (Z_TYPE_P(op2) == IS_LONG) {							\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  |  |  Branch (534:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  535|      0|					op2_lval = Z_LVAL_P(op2);							\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  536|      0|					break;												\
  |  |  537|      0|				}														\
  |  |  538|      0|			}															\
  |  |  539|      5|			ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode);				\
  |  |  ------------------
  |  |  |  |  487|      5|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|      5|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|      5|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  |  |  540|      5|			op2_lval = zendi_try_get_long(op2, &failed);				\
  |  |  541|      5|			if (UNEXPECTED(failed)) {									\
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  542|      0|				zend_binop_error(sigil, op1, op2);						\
  |  |  543|      0|				if (result != op1) {									\
  |  |  ------------------
  |  |  |  Branch (543:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  544|      0|					ZVAL_UNDEF(result);									\
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  545|      0|				}														\
  |  |  546|      0|				return FAILURE;											\
  |  |  547|      0|			}															\
  |  |  548|     17|		} else {														\
  |  |  549|     17|			op2_lval = Z_LVAL_P(op2);									\
  |  |  ------------------
  |  |  |  |  976|     17|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     17|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  550|     17|		}																\
  |  |  551|     22|	} while (0);
  |  |  ------------------
  |  |  |  Branch (551:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1982|       |
 1983|       |	/* prevent wrapping quirkiness on some processors where >> 64 + x == >> x */
 1984|     22|	if (UNEXPECTED((zend_ulong)op2_lval >= SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 11]
  |  |  ------------------
  ------------------
 1985|     11|		if (EXPECTED(op2_lval > 0)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 4]
  |  |  ------------------
  ------------------
 1986|      7|			if (op1 == result) {
  ------------------
  |  Branch (1986:8): [True: 0, False: 7]
  ------------------
 1987|      0|				zval_ptr_dtor(result);
 1988|      0|			}
 1989|      7|			ZVAL_LONG(result, (op1_lval < 0) ? -1 : 0);
  ------------------
  |  | 1076|      7|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      7|		zval *__z = (z);				\
  |  | 1078|     14|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      7|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      7|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1078:19): [True: 0, False: 7]
  |  |  ------------------
  |  | 1079|      7|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      7|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1990|      7|			return SUCCESS;
 1991|      7|		} else {
 1992|      4|			if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 4, False: 0]
  |  |  ------------------
  ------------------
              			if (EG(current_execute_data) && !CG(in_compilation)) {
  ------------------
  |  |   35|      4|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (1992:36): [True: 4, False: 0]
  ------------------
 1993|      4|				zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Bit shift by negative number");
 1994|      4|			} else {
 1995|      0|				zend_error_noreturn(E_ERROR, "Bit shift by negative number");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 1996|      0|			}
 1997|      4|			if (op1 != result) {
  ------------------
  |  Branch (1997:8): [True: 4, False: 0]
  ------------------
 1998|      4|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1999|      4|			}
 2000|      4|			return FAILURE;
 2001|      4|		}
 2002|     11|	}
 2003|       |
 2004|     11|	if (op1 == result) {
  ------------------
  |  Branch (2004:6): [True: 1, False: 10]
  ------------------
 2005|      1|		zval_ptr_dtor(result);
 2006|      1|	}
 2007|       |
 2008|     11|	ZVAL_LONG(result, op1_lval >> op2_lval);
  ------------------
  |  | 1076|     11|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     11|		zval *__z = (z);				\
  |  | 1078|     11|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     11|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     11|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     11|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     11|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 2009|     11|	return SUCCESS;
 2010|     22|}
concat_function:
 2014|  7.57k|{
 2015|  7.57k|	zval *orig_op1 = op1;
 2016|  7.57k|	zend_string *op1_string, *op2_string;
 2017|  7.57k|	bool free_op1_string = false;
 2018|  7.57k|	bool free_op2_string = false;
 2019|       |
 2020|  7.57k|	do {
 2021|  7.57k|		if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|  7.57k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.65k, False: 2.92k]
  |  |  ------------------
  ------------------
 2022|  4.65k|			op1_string = Z_STR_P(op1);
  ------------------
  |  |  982|  4.65k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  4.65k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2023|  4.65k|		} else {
 2024|  2.92k|	 		if (Z_ISREF_P(op1)) {
  ------------------
  |  |  964|  2.92k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  2.92k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  2.92k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  2.92k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 3, False: 2.91k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2025|      3|	 			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2026|      3|				if (Z_TYPE_P(op1) == IS_STRING) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(op1) == IS_STRING) {
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (2026:9): [True: 0, False: 3]
  ------------------
 2027|      0|					op1_string = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2028|      0|					break;
 2029|      0|				}
 2030|      3|	 		}
 2031|  2.92k|			ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_CONCAT);
  ------------------
  |  |  494|  2.92k|	ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode) \
  |  |  ------------------
  |  |  |  |  479|  2.92k|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  5.84k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 23, False: 2.89k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|  2.92k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  495|  2.92k|	else \
  |  |  496|  2.92k|	ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode)
  |  |  ------------------
  |  |  |  |  487|  2.92k|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  5.84k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 2.91k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|  2.92k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.92k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|  2.92k|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  ------------------
 2032|  2.92k|			op1_string = zval_try_get_string_func(op1);
 2033|  2.92k|			if (UNEXPECTED(!op1_string)) {
  ------------------
  |  |  457|  2.92k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2.91k]
  |  |  ------------------
  ------------------
 2034|      1|				if (orig_op1 != result) {
  ------------------
  |  Branch (2034:9): [True: 0, False: 1]
  ------------------
 2035|      0|					ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2036|      0|				}
 2037|      1|				return FAILURE;
 2038|      1|			}
 2039|  2.91k|			free_op1_string = true;
 2040|  2.91k|			if (result == op1) {
  ------------------
  |  Branch (2040:8): [True: 1.43k, False: 1.48k]
  ------------------
 2041|  1.43k|				if (UNEXPECTED(op1 == op2)) {
  ------------------
  |  |  457|  1.43k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1.43k]
  |  |  ------------------
  ------------------
 2042|      2|					op2_string = op1_string;
 2043|      2|					goto has_op2_string;
 2044|      2|				}
 2045|  1.43k|			}
 2046|  2.91k|		}
 2047|  7.57k|	} while (0);
  ------------------
  |  Branch (2047:11): [Folded, False: 7.57k]
  ------------------
 2048|  7.57k|	do {
 2049|  7.57k|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|  7.57k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.89k, False: 5.67k]
  |  |  ------------------
  ------------------
 2050|  1.89k|			op2_string = Z_STR_P(op2);
  ------------------
  |  |  982|  1.89k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.89k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2051|  5.67k|		} else {
 2052|  5.67k|			if (Z_ISREF_P(op2)) {
  ------------------
  |  |  964|  5.67k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  5.67k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  5.67k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  5.67k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 4, False: 5.67k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2053|      4|				op2 = Z_REFVAL_P(op2);
  ------------------
  |  | 1033|      4|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      4|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2054|      4|				if (Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(op2) == IS_STRING) {
  ------------------
  |  |  612|      4|#define IS_STRING					6
  ------------------
  |  Branch (2054:9): [True: 2, False: 2]
  ------------------
 2055|      2|					op2_string = Z_STR_P(op2);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2056|      2|					break;
 2057|      2|				}
 2058|      4|			}
 2059|       |			/* hold an additional reference because a userland function could free this */
 2060|  5.67k|			if (!free_op1_string) {
  ------------------
  |  Branch (2060:8): [True: 3.34k, False: 2.32k]
  ------------------
 2061|  3.34k|				op1_string = zend_string_copy(op1_string);
 2062|  3.34k|				free_op1_string = true;
 2063|  3.34k|			}
 2064|  5.67k|			ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_CONCAT);
  ------------------
  |  |  487|  5.67k|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  ------------------
  |  |  |  |  457|  11.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 4, False: 5.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  488|  5.67k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  ------------------
  |  |  |  |  457|  5.67k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  489|  5.67k|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|		return SUCCESS; \
  |  |  491|      0|	}
  ------------------
 2065|  5.67k|			op2_string = zval_try_get_string_func(op2);
 2066|  5.67k|			if (UNEXPECTED(!op2_string)) {
  ------------------
  |  |  457|  5.67k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 5.67k]
  |  |  ------------------
  ------------------
 2067|      3|				zend_string_release_ex(op1_string, false);
 2068|      3|				if (orig_op1 != result) {
  ------------------
  |  Branch (2068:9): [True: 2, False: 1]
  ------------------
 2069|      2|					ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2070|      2|				}
 2071|      3|				return FAILURE;
 2072|      3|			}
 2073|  5.67k|			free_op2_string = true;
 2074|  5.67k|		}
 2075|  7.57k|	} while (0);
  ------------------
  |  Branch (2075:11): [Folded, False: 7.56k]
  ------------------
 2076|       |
 2077|  7.57k|has_op2_string:;
 2078|  7.57k|	if (UNEXPECTED(ZSTR_LEN(op1_string) == 0)) {
  ------------------
  |  |  457|  7.57k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.75k, False: 5.81k]
  |  |  ------------------
  ------------------
 2079|  1.75k|		if (EXPECTED(result != op2 || Z_TYPE_P(result) != IS_STRING)) {
  ------------------
  |  |  456|  1.75k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.75k, False: 0]
  |  |  |  Branch (456:52): [True: 1.75k, False: 1]
  |  |  |  Branch (456:52): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2080|  1.75k|			if (result == orig_op1) {
  ------------------
  |  Branch (2080:8): [True: 317, False: 1.44k]
  ------------------
 2081|    317|				i_zval_ptr_dtor(result);
 2082|    317|			}
 2083|  1.75k|			if (free_op2_string) {
  ------------------
  |  Branch (2083:8): [True: 1.16k, False: 595]
  ------------------
 2084|       |				/* transfer ownership of op2_string */
 2085|  1.16k|				ZVAL_STR(result, op2_string);
  ------------------
  |  | 1088|  1.16k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  1.16k|		zval *__z = (z);						\
  |  | 1090|  1.16k|		zend_string *__s = (s);					\
  |  | 1091|  1.16k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  1.16k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  1.16k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  1.16k|		/* interned strings support */			\
  |  | 1093|  1.16k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  1.16k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.16k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 333, False: 830]
  |  |  ------------------
  |  | 1094|  1.16k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    333|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    333|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  1.16k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  1.99k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    830|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    830|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    830|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  1.16k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1.16k]
  |  |  ------------------
  ------------------
 2086|  1.16k|				free_op2_string = false;
 2087|  1.16k|			} else {
 2088|    595|				ZVAL_STR_COPY(result, op2_string);
  ------------------
  |  | 1112|    595|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|    595|		zval *__z = (z);								\
  |  | 1114|    595|		zend_string *__s = (s);							\
  |  | 1115|    595|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|    595|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    595|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|    595|		/* interned strings support */					\
  |  | 1117|    595|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 508, False: 87]
  |  |  ------------------
  |  | 1118|    508|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|    508|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    508|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|    508|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    508|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|    508|		} else {										\
  |  | 1120|     87|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     87|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     87|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     87|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     87|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     87|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     87|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     87|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     87|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     87|		}												\
  |  | 1123|    595|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 595]
  |  |  ------------------
  ------------------
 2089|    595|			}
 2090|  1.75k|		}
 2091|  5.81k|	} else if (UNEXPECTED(ZSTR_LEN(op2_string) == 0)) {
  ------------------
  |  |  457|  5.81k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 5.81k]
  |  |  ------------------
  ------------------
 2092|      4|		if (EXPECTED(result != op1 || Z_TYPE_P(result) != IS_STRING)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  |  Branch (456:52): [True: 3, False: 1]
  |  |  |  Branch (456:52): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2093|      4|			if (result == orig_op1) {
  ------------------
  |  Branch (2093:8): [True: 1, False: 3]
  ------------------
 2094|      1|				i_zval_ptr_dtor(result);
 2095|      1|			}
 2096|      4|			if (free_op1_string) {
  ------------------
  |  Branch (2096:8): [True: 4, False: 0]
  ------------------
 2097|       |				/* transfer ownership of op1_string */
 2098|      4|				ZVAL_STR(result, op1_string);
  ------------------
  |  | 1088|      4|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      4|		zval *__z = (z);						\
  |  | 1090|      4|		zend_string *__s = (s);					\
  |  | 1091|      4|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      4|		/* interned strings support */			\
  |  | 1093|      4|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 3, False: 1]
  |  |  ------------------
  |  | 1094|      4|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      4|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      5|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 2099|      4|				free_op1_string = false;
 2100|      4|			} else {
 2101|      0|				ZVAL_STR_COPY(result, op1_string);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2102|      0|			}
 2103|      4|		}
 2104|  5.81k|	} else {
 2105|  5.81k|		size_t op1_len = ZSTR_LEN(op1_string);
  ------------------
  |  |   68|  5.81k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2106|  5.81k|		size_t op2_len = ZSTR_LEN(op2_string);
  ------------------
  |  |   68|  5.81k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2107|  5.81k|		size_t result_len = op1_len + op2_len;
 2108|  5.81k|		zend_string *result_str;
 2109|  5.81k|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_string, op2_string);
 2110|       |
 2111|  5.81k|		if (UNEXPECTED(op1_len > ZSTR_MAX_LEN - op2_len)) {
  ------------------
  |  |  457|  5.81k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5.81k]
  |  |  ------------------
  ------------------
 2112|      0|			if (free_op1_string) zend_string_release_ex(op1_string, false);
  ------------------
  |  Branch (2112:8): [True: 0, False: 0]
  ------------------
 2113|      0|			if (free_op2_string) zend_string_release_ex(op2_string, false);
  ------------------
  |  Branch (2113:8): [True: 0, False: 0]
  ------------------
 2114|      0|			zend_throw_error(NULL, "String size overflow");
 2115|      0|			if (orig_op1 != result) {
  ------------------
  |  Branch (2115:8): [True: 0, False: 0]
  ------------------
 2116|      0|				ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2117|      0|			}
 2118|      0|			return FAILURE;
 2119|      0|		}
 2120|       |
 2121|  5.81k|		if (result == op1) {
  ------------------
  |  Branch (2121:7): [True: 4.74k, False: 1.06k]
  ------------------
 2122|       |			/* Destroy the old result first to drop the refcount, such that $x .= ...; may happen in-place. */
 2123|  4.74k|			if (free_op1_string) {
  ------------------
  |  Branch (2123:8): [True: 3.60k, False: 1.14k]
  ------------------
 2124|       |				/* op1_string will be used as the result, so we should not free it */
 2125|  3.60k|				i_zval_ptr_dtor(result);
 2126|       |				/* Set it to NULL in case that the extension will throw an out-of-memory error.
 2127|       |				 * Otherwise the shutdown sequence will try to free this again. */
 2128|  3.60k|				ZVAL_NULL(result);
  ------------------
  |  | 1059|  3.60k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  3.60k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  3.60k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.60k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  3.60k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  3.60k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3.60k]
  |  |  ------------------
  ------------------
 2129|  3.60k|				free_op1_string = false;
 2130|  3.60k|			}
 2131|       |			/* special case, perform operations on result */
 2132|  4.74k|			result_str = zend_string_extend(op1_string, result_len, 0);
 2133|       |			/* account for the case where result_str == op1_string == op2_string and the realloc is done */
 2134|  4.74k|			if (op1_string == op2_string) {
  ------------------
  |  Branch (2134:8): [True: 467, False: 4.27k]
  ------------------
 2135|    467|				if (free_op2_string) {
  ------------------
  |  Branch (2135:9): [True: 367, False: 100]
  ------------------
 2136|    367|					zend_string_release_ex(op2_string, false);
 2137|    367|					free_op2_string = false;
 2138|    367|				}
 2139|    467|				op2_string = result_str;
 2140|    467|			}
 2141|  4.74k|		} else {
 2142|  1.06k|			result_str = zend_string_alloc(result_len, 0);
 2143|  1.06k|			memcpy(ZSTR_VAL(result_str), ZSTR_VAL(op1_string), op1_len);
  ------------------
  |  |   67|  1.06k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(result_str), ZSTR_VAL(op1_string), op1_len);
  ------------------
  |  |   67|  1.06k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2144|  1.06k|			if (result == orig_op1) {
  ------------------
  |  Branch (2144:8): [True: 0, False: 1.06k]
  ------------------
 2145|      0|				i_zval_ptr_dtor(result);
 2146|      0|			}
 2147|  1.06k|		}
 2148|  5.81k|		GC_ADD_FLAGS(result_str, flags);
  ------------------
  |  |  780|  5.81k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  5.81k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  5.81k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  5.81k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  5.81k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 5.81k]
  |  |  ------------------
  ------------------
 2149|       |
 2150|  5.81k|		ZVAL_NEW_STR(result, result_str);
  ------------------
  |  | 1105|  5.81k|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|  5.81k|		zval *__z = (z);						\
  |  | 1107|  5.81k|		zend_string *__s = (s);					\
  |  | 1108|  5.81k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  5.81k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  5.81k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|  5.81k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|  5.81k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  5.81k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|  5.81k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  5.81k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  5.81k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  5.81k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|  5.81k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 5.81k]
  |  |  ------------------
  ------------------
 2151|  5.81k|		memcpy(ZSTR_VAL(result_str) + op1_len, ZSTR_VAL(op2_string), op2_len);
  ------------------
  |  |   67|  5.81k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(result_str) + op1_len, ZSTR_VAL(op2_string), op2_len);
  ------------------
  |  |   67|  5.81k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2152|  5.81k|		ZSTR_VAL(result_str)[result_len] = '\0';
  ------------------
  |  |   67|  5.81k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2153|  5.81k|	}
 2154|       |
 2155|  7.57k|	if (free_op1_string) zend_string_release_ex(op1_string, false);
  ------------------
  |  Branch (2155:6): [True: 2.65k, False: 4.91k]
  ------------------
 2156|  7.57k|	if (free_op2_string) zend_string_release_ex(op2_string, false);
  ------------------
  |  Branch (2156:6): [True: 4.13k, False: 3.43k]
  ------------------
 2157|       |
 2158|  7.57k|	return SUCCESS;
 2159|  7.57k|}
string_compare_function:
 2182|     13|{
 2183|     13|	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING) &&
  ------------------
  |  |  456|     26|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 4]
  |  |  ------------------
  ------------------
 2184|      9|	    EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 6]
  |  |  ------------------
  ------------------
 2185|      3|		if (Z_STR_P(op1) == Z_STR_P(op2)) {
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		if (Z_STR_P(op1) == Z_STR_P(op2)) {
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2185:7): [True: 0, False: 3]
  ------------------
 2186|      0|			return 0;
 2187|      3|		} else {
 2188|      3|			return zend_binary_strcmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  985|      3|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      3|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return zend_binary_strcmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  988|      3|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      3|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return zend_binary_strcmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  985|      3|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      3|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return zend_binary_strcmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  988|      3|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      3|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2189|      3|		}
 2190|     10|	} else {
 2191|     10|		zend_string *tmp_str1, *tmp_str2;
 2192|     10|		zend_string *str1 = zval_get_tmp_string(op1, &tmp_str1);
 2193|     10|		zend_string *str2 = zval_get_tmp_string(op2, &tmp_str2);
 2194|     10|		int ret = zend_binary_strcmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		int ret = zend_binary_strcmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		int ret = zend_binary_strcmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		int ret = zend_binary_strcmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2195|       |
 2196|     10|		zend_tmp_string_release(tmp_str1);
 2197|     10|		zend_tmp_string_release(tmp_str2);
 2198|     10|		return ret;
 2199|     10|	}
 2200|     13|}
string_case_compare_function:
 2204|     55|{
 2205|     55|	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING) &&
  ------------------
  |  |  456|    110|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 53, False: 2]
  |  |  ------------------
  ------------------
 2206|     53|	    EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|     53|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 36, False: 17]
  |  |  ------------------
  ------------------
 2207|     36|		if (Z_STR_P(op1) == Z_STR_P(op2)) {
  ------------------
  |  |  982|     36|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     36|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		if (Z_STR_P(op1) == Z_STR_P(op2)) {
  ------------------
  |  |  982|     36|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     36|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2207:7): [True: 0, False: 36]
  ------------------
 2208|      0|			return 0;
 2209|     36|		} else {
 2210|     36|			return zend_binary_strcasecmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  985|     36|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     36|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     36|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return zend_binary_strcasecmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  988|     36|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     36|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     36|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return zend_binary_strcasecmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  985|     36|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     36|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     36|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return zend_binary_strcasecmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
  ------------------
  |  |  988|     36|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     36|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     36|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2211|     36|		}
 2212|     36|	} else {
 2213|     19|		zend_string *tmp_str1, *tmp_str2;
 2214|     19|		zend_string *str1 = zval_get_tmp_string(op1, &tmp_str1);
 2215|     19|		zend_string *str2 = zval_get_tmp_string(op2, &tmp_str2);
 2216|     19|		int ret = zend_binary_strcasecmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		int ret = zend_binary_strcasecmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		int ret = zend_binary_strcasecmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		int ret = zend_binary_strcasecmp(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2));
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2217|       |
 2218|     19|		zend_tmp_string_release(tmp_str1);
 2219|     19|		zend_tmp_string_release(tmp_str2);
 2220|     19|		return ret;
 2221|     19|	}
 2222|     55|}
string_locale_compare_function:
 2226|     37|{
 2227|     37|	zend_string *tmp_str1, *tmp_str2;
 2228|     37|	zend_string *str1 = zval_get_tmp_string(op1, &tmp_str1);
 2229|     37|	zend_string *str2 = zval_get_tmp_string(op2, &tmp_str2);
 2230|     37|	int ret = strcoll(ZSTR_VAL(str1), ZSTR_VAL(str2));
  ------------------
  |  |   67|     37|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	int ret = strcoll(ZSTR_VAL(str1), ZSTR_VAL(str2));
  ------------------
  |  |   67|     37|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2231|       |
 2232|     37|	zend_tmp_string_release(tmp_str1);
 2233|     37|	zend_tmp_string_release(tmp_str2);
 2234|     37|	return ret;
 2235|     37|}
numeric_compare_function:
 2239|      5|{
 2240|      5|	double d1, d2;
 2241|       |
 2242|      5|	d1 = zval_get_double(op1);
 2243|      5|	d2 = zval_get_double(op2);
 2244|       |
 2245|      5|	return ZEND_THREEWAY_COMPARE(d1, d2);
  ------------------
  |  |  552|      5|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 2, False: 3]
  |  |  |  Branch (552:56): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 2246|      5|}
compare_function:
 2250|      5|{
 2251|      5|	ZVAL_LONG(result, zend_compare(op1, op2));
  ------------------
  |  | 1076|      5|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      5|		zval *__z = (z);				\
  |  | 1078|      5|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      5|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      5|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 2252|      5|	return SUCCESS;
 2253|      5|}
zend_compare:
 2303|  7.55k|{
 2304|  7.55k|	bool converted = false;
 2305|  7.55k|	zval op1_copy, op2_copy;
 2306|       |
 2307|  7.86k|	while (1) {
  ------------------
  |  Branch (2307:9): [True: 7.86k, Folded]
  ------------------
 2308|  7.86k|		switch (TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2))) {
  ------------------
  |  |   60|  7.86k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
 2309|    226|			case TYPE_PAIR(IS_LONG, IS_LONG):
  ------------------
  |  |   60|    226|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2309:4): [True: 226, False: 7.63k]
  ------------------
 2310|    226|				return Z_LVAL_P(op1)>Z_LVAL_P(op2)?1:(Z_LVAL_P(op1)<Z_LVAL_P(op2)?-1:0);
  ------------------
  |  |  976|    226|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    226|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              				return Z_LVAL_P(op1)>Z_LVAL_P(op2)?1:(Z_LVAL_P(op1)<Z_LVAL_P(op2)?-1:0);
  ------------------
  |  |  976|    226|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    226|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              				return Z_LVAL_P(op1)>Z_LVAL_P(op2)?1:(Z_LVAL_P(op1)<Z_LVAL_P(op2)?-1:0);
  ------------------
  |  |  976|     61|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     61|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              				return Z_LVAL_P(op1)>Z_LVAL_P(op2)?1:(Z_LVAL_P(op1)<Z_LVAL_P(op2)?-1:0);
  ------------------
  |  |  976|     61|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     61|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (2310:12): [True: 165, False: 61]
  |  Branch (2310:43): [True: 49, False: 12]
  ------------------
 2311|       |
 2312|     18|			case TYPE_PAIR(IS_DOUBLE, IS_LONG):
  ------------------
  |  |   60|     18|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2312:4): [True: 18, False: 7.84k]
  ------------------
 2313|     18|				return ZEND_THREEWAY_COMPARE(Z_DVAL_P(op1), (double)Z_LVAL_P(op2));
  ------------------
  |  |  552|     18|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 1, False: 17]
  |  |  |  Branch (552:56): [True: 3, False: 14]
  |  |  ------------------
  ------------------
 2314|       |
 2315|      4|			case TYPE_PAIR(IS_LONG, IS_DOUBLE):
  ------------------
  |  |   60|      4|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2315:4): [True: 4, False: 7.85k]
  ------------------
 2316|      4|				return ZEND_THREEWAY_COMPARE((double)Z_LVAL_P(op1), Z_DVAL_P(op2));
  ------------------
  |  |  552|      4|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 0, False: 4]
  |  |  |  Branch (552:56): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 2317|       |
 2318|      3|			case TYPE_PAIR(IS_DOUBLE, IS_DOUBLE):
  ------------------
  |  |   60|      3|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2318:4): [True: 3, False: 7.85k]
  ------------------
 2319|      3|				return ZEND_THREEWAY_COMPARE(Z_DVAL_P(op1), Z_DVAL_P(op2));
  ------------------
  |  |  552|      3|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 2, False: 1]
  |  |  |  Branch (552:56): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2320|       |
 2321|     10|			case TYPE_PAIR(IS_ARRAY, IS_ARRAY):
  ------------------
  |  |   60|     10|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2321:4): [True: 10, False: 7.85k]
  ------------------
 2322|     10|				return zend_compare_arrays(op1, op2);
 2323|       |
 2324|    333|			case TYPE_PAIR(IS_NULL, IS_NULL):
  ------------------
  |  |   60|    333|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2324:4): [True: 333, False: 7.52k]
  ------------------
 2325|    889|			case TYPE_PAIR(IS_NULL, IS_FALSE):
  ------------------
  |  |   60|    889|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2325:4): [True: 556, False: 7.30k]
  ------------------
 2326|  2.11k|			case TYPE_PAIR(IS_FALSE, IS_NULL):
  ------------------
  |  |   60|  2.11k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2326:4): [True: 1.22k, False: 6.63k]
  ------------------
 2327|  2.19k|			case TYPE_PAIR(IS_FALSE, IS_FALSE):
  ------------------
  |  |   60|  2.19k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2327:4): [True: 81, False: 7.77k]
  ------------------
 2328|  2.19k|			case TYPE_PAIR(IS_TRUE, IS_TRUE):
  ------------------
  |  |   60|  2.19k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2328:4): [True: 0, False: 7.86k]
  ------------------
 2329|  2.19k|				return 0;
 2330|       |
 2331|      1|			case TYPE_PAIR(IS_NULL, IS_TRUE):
  ------------------
  |  |   60|      1|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2331:4): [True: 1, False: 7.85k]
  ------------------
 2332|      1|				return -1;
 2333|       |
 2334|      2|			case TYPE_PAIR(IS_TRUE, IS_NULL):
  ------------------
  |  |   60|      2|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2334:4): [True: 2, False: 7.85k]
  ------------------
 2335|      2|				return 1;
 2336|       |
 2337|    103|			case TYPE_PAIR(IS_STRING, IS_STRING):
  ------------------
  |  |   60|    103|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2337:4): [True: 103, False: 7.75k]
  ------------------
 2338|    103|				if (Z_STR_P(op1) == Z_STR_P(op2)) {
  ------------------
  |  |  982|    103|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    103|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				if (Z_STR_P(op1) == Z_STR_P(op2)) {
  ------------------
  |  |  982|    103|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    103|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2338:9): [True: 2, False: 101]
  ------------------
 2339|      2|					return 0;
 2340|      2|				}
 2341|    101|				return zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|    101|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    101|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				return zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|    101|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    101|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2342|       |
 2343|      5|			case TYPE_PAIR(IS_NULL, IS_STRING):
  ------------------
  |  |   60|      5|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2343:4): [True: 5, False: 7.85k]
  ------------------
 2344|      5|				return Z_STRLEN_P(op2) == 0 ? 0 : -1;
  ------------------
  |  |  988|      5|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      5|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2344:12): [True: 0, False: 5]
  ------------------
 2345|       |
 2346|      3|			case TYPE_PAIR(IS_STRING, IS_NULL):
  ------------------
  |  |   60|      3|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2346:4): [True: 3, False: 7.85k]
  ------------------
 2347|      3|				return Z_STRLEN_P(op1) == 0 ? 0 : 1;
  ------------------
  |  |  988|      3|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      3|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2347:12): [True: 0, False: 3]
  ------------------
 2348|       |
 2349|      8|			case TYPE_PAIR(IS_LONG, IS_STRING):
  ------------------
  |  |   60|      8|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2349:4): [True: 8, False: 7.85k]
  ------------------
 2350|      8|				return compare_long_to_string(Z_LVAL_P(op1), Z_STR_P(op2));
  ------------------
  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              				return compare_long_to_string(Z_LVAL_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2351|       |
 2352|    110|			case TYPE_PAIR(IS_STRING, IS_LONG):
  ------------------
  |  |   60|    110|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2352:4): [True: 110, False: 7.75k]
  ------------------
 2353|    110|				return -compare_long_to_string(Z_LVAL_P(op2), Z_STR_P(op1));
  ------------------
  |  |  976|    110|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    110|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              				return -compare_long_to_string(Z_LVAL_P(op2), Z_STR_P(op1));
  ------------------
  |  |  982|    110|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    110|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2354|       |
 2355|      2|			case TYPE_PAIR(IS_DOUBLE, IS_STRING):
  ------------------
  |  |   60|      2|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2355:4): [True: 2, False: 7.85k]
  ------------------
 2356|      2|				if (zend_isnan(Z_DVAL_P(op1))) {
  ------------------
  |  |  536|      2|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (2356:9): [True: 0, False: 2]
  ------------------
 2357|      0|					return 1;
 2358|      0|				}
 2359|       |
 2360|      2|				return compare_double_to_string(Z_DVAL_P(op1), Z_STR_P(op2));
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              				return compare_double_to_string(Z_DVAL_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2361|       |
 2362|    230|			case TYPE_PAIR(IS_STRING, IS_DOUBLE):
  ------------------
  |  |   60|    230|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2362:4): [True: 230, False: 7.63k]
  ------------------
 2363|    230|				if (zend_isnan(Z_DVAL_P(op2))) {
  ------------------
  |  |  536|    230|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (2363:9): [True: 0, False: 230]
  ------------------
 2364|      0|					return 1;
 2365|      0|				}
 2366|       |
 2367|    230|				return -compare_double_to_string(Z_DVAL_P(op2), Z_STR_P(op1));
  ------------------
  |  |  979|    230|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    230|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              				return -compare_double_to_string(Z_DVAL_P(op2), Z_STR_P(op1));
  ------------------
  |  |  982|    230|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    230|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2368|       |
 2369|     13|			case TYPE_PAIR(IS_OBJECT, IS_NULL):
  ------------------
  |  |   60|     13|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2369:4): [True: 13, False: 7.84k]
  ------------------
 2370|     13|				return 1;
 2371|       |
 2372|    170|			case TYPE_PAIR(IS_NULL, IS_OBJECT):
  ------------------
  |  |   60|    170|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
  |  Branch (2372:4): [True: 170, False: 7.69k]
  ------------------
 2373|    170|				return -1;
 2374|       |
 2375|  4.75k|			default:
  ------------------
  |  Branch (2375:4): [True: 4.75k, False: 3.10k]
  ------------------
 2376|  4.75k|				if (Z_ISREF_P(op1)) {
  ------------------
  |  |  964|  4.75k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  4.75k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  4.75k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  4.75k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 297, False: 4.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2377|    297|					op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|    297|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    297|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    297|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2378|    297|					continue;
 2379|  4.45k|				} else if (Z_ISREF_P(op2)) {
  ------------------
  |  |  964|  4.45k|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|  4.45k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  4.45k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  4.45k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 4, False: 4.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2380|      4|					op2 = Z_REFVAL_P(op2);
  ------------------
  |  | 1033|      4|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      4|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2381|      4|					continue;
 2382|      4|				}
 2383|       |
 2384|  4.45k|				if (Z_TYPE_P(op1) == IS_OBJECT
  ------------------
  |  |  669|  4.45k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  4.45k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(op1) == IS_OBJECT
  ------------------
  |  |  614|  8.91k|#define IS_OBJECT					8
  ------------------
  |  Branch (2384:9): [True: 21, False: 4.43k]
  ------------------
 2385|  4.43k|				 || Z_TYPE_P(op2) == IS_OBJECT) {
  ------------------
  |  |  669|  4.43k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  4.43k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				 || Z_TYPE_P(op2) == IS_OBJECT) {
  ------------------
  |  |  614|  4.43k|#define IS_OBJECT					8
  ------------------
  |  Branch (2385:9): [True: 9, False: 4.42k]
  ------------------
 2386|     30|					zval *object, *other;
 2387|     30|					if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  669|     30|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  614|     30|#define IS_OBJECT					8
  ------------------
  |  Branch (2387:10): [True: 21, False: 9]
  ------------------
 2388|     21|						object = op1;
 2389|     21|						other = op2;
 2390|     21|					} else {
 2391|      9|						object = op2;
 2392|      9|						other = op1;
 2393|      9|					}
 2394|     30|					if (EXPECTED(Z_TYPE_P(other) == IS_OBJECT)) {
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 22]
  |  |  ------------------
  ------------------
 2395|      8|						if (Z_OBJ_P(object) == Z_OBJ_P(other)) {
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              						if (Z_OBJ_P(object) == Z_OBJ_P(other)) {
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (2395:11): [True: 2, False: 6]
  ------------------
 2396|      2|							return 0;
 2397|      2|						}
 2398|     22|					} else if (Z_TYPE_P(other) == IS_TRUE || Z_TYPE_P(other) == IS_FALSE) {
  ------------------
  |  |  669|     22|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     22|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					} else if (Z_TYPE_P(other) == IS_TRUE || Z_TYPE_P(other) == IS_FALSE) {
  ------------------
  |  |  609|     44|#define IS_TRUE						3
  ------------------
              					} else if (Z_TYPE_P(other) == IS_TRUE || Z_TYPE_P(other) == IS_FALSE) {
  ------------------
  |  |  669|     22|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     22|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					} else if (Z_TYPE_P(other) == IS_TRUE || Z_TYPE_P(other) == IS_FALSE) {
  ------------------
  |  |  608|     22|#define IS_FALSE					2
  ------------------
  |  Branch (2398:17): [True: 0, False: 22]
  |  Branch (2398:47): [True: 1, False: 21]
  ------------------
 2399|      1|						zval casted;
 2400|      1|						if (Z_OBJ_HANDLER_P(object, cast_object)(Z_OBJ_P(object), &casted, _IS_BOOL) == FAILURE) {
  ------------------
  |  | 1006|      1|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      1|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						if (Z_OBJ_HANDLER_P(object, cast_object)(Z_OBJ_P(object), &casted, _IS_BOOL) == FAILURE) {
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              						if (Z_OBJ_HANDLER_P(object, cast_object)(Z_OBJ_P(object), &casted, _IS_BOOL) == FAILURE) {
  ------------------
  |  |  635|      1|#define _IS_BOOL					18
  ------------------
  |  Branch (2400:11): [True: 0, False: 1]
  ------------------
 2401|      0|							return object == op1 ? 1 : -1;
  ------------------
  |  Branch (2401:15): [True: 0, False: 0]
  ------------------
 2402|      0|						}
 2403|      1|						int ret = object == op1 ? zend_compare(&casted, other) : zend_compare(other, &casted);
  ------------------
  |  Branch (2403:17): [True: 1, False: 0]
  ------------------
 2404|      1|						ZEND_ASSERT(!Z_REFCOUNTED_P(&casted));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2404:7): [True: 0, False: 1]
  |  Branch (2404:7): [True: 1, False: 0]
  ------------------
 2405|      1|						return ret;
 2406|      1|					}
 2407|     27|					return Z_OBJ_HANDLER_P(object, compare)(op1, op2);
  ------------------
  |  | 1006|     27|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|     27|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|     27|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|     27|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|     30|				}
 2409|       |
 2410|  4.42k|				if (!converted) {
  ------------------
  |  Branch (2410:9): [True: 4.42k, False: 2]
  ------------------
 2411|       |					/* Handle NAN */
 2412|  4.42k|					if (UNEXPECTED(
  ------------------
  |  |  457|  18.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4.42k]
  |  |  |  Branch (457:52): [True: 835, False: 3.58k]
  |  |  |  Branch (457:52): [True: 1, False: 834]
  |  |  |  Branch (457:52): [True: 315, False: 4.10k]
  |  |  |  Branch (457:52): [True: 0, False: 315]
  |  |  ------------------
  ------------------
 2413|  4.42k|						(Z_TYPE_P(op1) == IS_DOUBLE && zend_isnan(Z_DVAL_P(op1)))
 2414|  4.42k|						|| (Z_TYPE_P(op2) == IS_DOUBLE && zend_isnan(Z_DVAL_P(op2)))
 2415|  4.42k|					)) {
 2416|       |						// TODO: NAN should always be uncomparable
 2417|       |						/* NAN used be cast to TRUE so handle this manually for the time being */
 2418|      1|						if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (2418:11): [True: 0, False: 1]
  ------------------
 2419|      0|							return -1;
 2420|      1|						} else if (Z_TYPE_P(op1) == IS_TRUE || Z_TYPE_P(op2) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(op1) == IS_TRUE || Z_TYPE_P(op2) == IS_TRUE) {
  ------------------
  |  |  609|      2|#define IS_TRUE						3
  ------------------
              						} else if (Z_TYPE_P(op1) == IS_TRUE || Z_TYPE_P(op2) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(op1) == IS_TRUE || Z_TYPE_P(op2) == IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (2420:18): [True: 0, False: 1]
  |  Branch (2420:46): [True: 1, False: 0]
  ------------------
 2421|      1|							return 0;
 2422|      1|						} else if (Z_TYPE_P(op2) < IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(op2) < IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (2422:18): [True: 0, False: 0]
  ------------------
 2423|      0|							return 1;
 2424|      0|						} else if (Z_TYPE_P(op1) != IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(op1) != IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (2424:18): [True: 0, False: 0]
  ------------------
 2425|      0|							op1 = _zendi_convert_scalar_to_number_silent(op1, &op1_copy);
 2426|      0|							converted = true;
 2427|      0|						} else if (Z_TYPE_P(op2) != IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						} else if (Z_TYPE_P(op2) != IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (2427:18): [True: 0, False: 0]
  ------------------
 2428|      0|							op2 = _zendi_convert_scalar_to_number_silent(op2, &op2_copy);
 2429|      0|							converted = true;
 2430|      0|						}
 2431|  4.42k|					} else if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  669|  4.42k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  4.42k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					} else if (Z_TYPE_P(op1) < IS_TRUE) {
  ------------------
  |  |  609|  4.42k|#define IS_TRUE						3
  ------------------
  |  Branch (2431:17): [True: 2.11k, False: 2.31k]
  ------------------
 2432|  2.11k|						return zend_is_true(op2) ? -1 : 0;
  ------------------
  |  Branch (2432:14): [True: 1.99k, False: 114]
  ------------------
 2433|  2.31k|					} else if (Z_TYPE_P(op1) == IS_TRUE) {
  ------------------
  |  |  669|  2.31k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.31k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					} else if (Z_TYPE_P(op1) == IS_TRUE) {
  ------------------
  |  |  609|  2.31k|#define IS_TRUE						3
  ------------------
  |  Branch (2433:17): [True: 64, False: 2.24k]
  ------------------
 2434|     64|						return zend_is_true(op2) ? 0 : 1;
  ------------------
  |  Branch (2434:14): [True: 63, False: 1]
  ------------------
 2435|  2.24k|					} else if (Z_TYPE_P(op2) < IS_TRUE) {
  ------------------
  |  |  669|  2.24k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.24k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					} else if (Z_TYPE_P(op2) < IS_TRUE) {
  ------------------
  |  |  609|  2.24k|#define IS_TRUE						3
  ------------------
  |  Branch (2435:17): [True: 2.23k, False: 12]
  ------------------
 2436|  2.23k|						return zend_is_true(op1) ? 1 : 0;
  ------------------
  |  Branch (2436:14): [True: 1.10k, False: 1.13k]
  ------------------
 2437|  2.23k|					} else if (Z_TYPE_P(op2) == IS_TRUE) {
  ------------------
  |  |  669|     12|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					} else if (Z_TYPE_P(op2) == IS_TRUE) {
  ------------------
  |  |  609|     12|#define IS_TRUE						3
  ------------------
  |  Branch (2437:17): [True: 10, False: 2]
  ------------------
 2438|     10|						return zend_is_true(op1) ? 0 : -1;
  ------------------
  |  Branch (2438:14): [True: 7, False: 3]
  ------------------
 2439|     10|					} else {
 2440|      2|						op1 = _zendi_convert_scalar_to_number_silent(op1, &op1_copy);
 2441|      2|						op2 = _zendi_convert_scalar_to_number_silent(op2, &op2_copy);
 2442|      2|						if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2443|      0|							return 1; /* to stop comparison of arrays */
 2444|      0|						}
 2445|      2|						converted = true;
 2446|      2|					}
 2447|  4.42k|				} else if (Z_TYPE_P(op1)==IS_ARRAY) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(op1)==IS_ARRAY) {
  ------------------
  |  |  613|      2|#define IS_ARRAY					7
  ------------------
  |  Branch (2447:16): [True: 2, False: 0]
  ------------------
 2448|      2|					return 1;
 2449|      2|				} else if (Z_TYPE_P(op2)==IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				} else if (Z_TYPE_P(op2)==IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (2449:16): [True: 0, False: 0]
  ------------------
 2450|      0|					return -1;
 2451|      0|				} else {
 2452|      0|					ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2452:6): [Folded, False: 0]
  |  Branch (2452:6): [Folded, False: 0]
  ------------------
 2453|      0|					zend_throw_error(NULL, "Unsupported operand types");
 2454|      0|					return 1;
 2455|      0|				}
 2456|  7.86k|		}
 2457|  7.86k|	}
 2458|  7.55k|}
zend_is_identical:
 2476|  7.36k|{
 2477|  7.36k|	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|  7.36k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.36k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|  7.36k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.36k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (2477:6): [True: 0, False: 7.36k]
  ------------------
 2478|      0|		return 0;
 2479|      0|	}
 2480|  7.36k|	switch (Z_TYPE_P(op1)) {
  ------------------
  |  |  669|  7.36k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.36k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2481|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2481:3): [True: 0, False: 7.36k]
  ------------------
 2482|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (2482:3): [True: 0, False: 7.36k]
  ------------------
 2483|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (2483:3): [True: 0, False: 7.36k]
  ------------------
 2484|      0|			return 1;
 2485|    139|		case IS_LONG:
  ------------------
  |  |  610|    139|#define IS_LONG						4
  ------------------
  |  Branch (2485:3): [True: 139, False: 7.22k]
  ------------------
 2486|    139|			return (Z_LVAL_P(op1) == Z_LVAL_P(op2));
  ------------------
  |  |  976|    139|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    139|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              			return (Z_LVAL_P(op1) == Z_LVAL_P(op2));
  ------------------
  |  |  976|    139|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    139|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2487|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (2487:3): [True: 0, False: 7.36k]
  ------------------
 2488|      0|			return (Z_RES_P(op1) == Z_RES_P(op2));
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
              			return (Z_RES_P(op1) == Z_RES_P(op2));
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
 2489|      2|		case IS_DOUBLE:
  ------------------
  |  |  611|      2|#define IS_DOUBLE					5
  ------------------
  |  Branch (2489:3): [True: 2, False: 7.36k]
  ------------------
 2490|      2|			return (Z_DVAL_P(op1) == Z_DVAL_P(op2));
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              			return (Z_DVAL_P(op1) == Z_DVAL_P(op2));
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2491|  7.04k|		case IS_STRING:
  ------------------
  |  |  612|  7.04k|#define IS_STRING					6
  ------------------
  |  Branch (2491:3): [True: 7.04k, False: 323]
  ------------------
 2492|  7.04k|			return zend_string_equals(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|  7.04k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  7.04k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			return zend_string_equals(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|  7.04k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  7.04k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2493|    174|		case IS_ARRAY:
  ------------------
  |  |  613|    174|#define IS_ARRAY					7
  ------------------
  |  Branch (2493:3): [True: 174, False: 7.19k]
  ------------------
 2494|    174|			return (Z_ARRVAL_P(op1) == Z_ARRVAL_P(op2) ||
  ------------------
  |  |  997|    174|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    174|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    174|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return (Z_ARRVAL_P(op1) == Z_ARRVAL_P(op2) ||
  ------------------
  |  |  997|    174|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    174|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    348|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2494:12): [True: 1, False: 173]
  ------------------
 2495|    173|				zend_hash_compare(Z_ARRVAL_P(op1), Z_ARRVAL_P(op2), (compare_func_t) hash_zval_identical_function, 1) == 0);
  ------------------
  |  |  997|    173|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    173|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    173|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_hash_compare(Z_ARRVAL_P(op1), Z_ARRVAL_P(op2), (compare_func_t) hash_zval_identical_function, 1) == 0);
  ------------------
  |  |  997|    173|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    173|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    173|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2495:5): [True: 5, False: 168]
  ------------------
 2496|      8|		case IS_OBJECT:
  ------------------
  |  |  614|      8|#define IS_OBJECT					8
  ------------------
  |  Branch (2496:3): [True: 8, False: 7.35k]
  ------------------
 2497|      8|			return (Z_OBJ_P(op1) == Z_OBJ_P(op2));
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			return (Z_OBJ_P(op1) == Z_OBJ_P(op2));
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2498|      0|		default:
  ------------------
  |  Branch (2498:3): [True: 0, False: 7.36k]
  ------------------
 2499|      0|			return 0;
 2500|  7.36k|	}
 2501|  7.36k|}
is_identical_function:
 2505|      8|{
 2506|      8|	ZVAL_BOOL(result, zend_is_identical(op1, op2));
  ------------------
  |  | 1071|      8|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      8|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      8|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     16|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 8]
  |  |  ------------------
  |  | 1074|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 2507|      8|	return SUCCESS;
 2508|      8|}
is_equal_function:
 2519|     25|{
 2520|     25|	ZVAL_BOOL(result, zend_compare(op1, op2) == 0);
  ------------------
  |  | 1071|     25|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     25|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     25|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|     11|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     39|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 11, False: 14]
  |  |  ------------------
  |  | 1074|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
 2521|     25|	return SUCCESS;
 2522|     25|}
is_not_equal_function:
 2526|      4|{
 2527|      4|	ZVAL_BOOL(result, (zend_compare(op1, op2) != 0));
  ------------------
  |  | 1071|      4|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      4|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      4|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      5|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 3, False: 1]
  |  |  ------------------
  |  | 1074|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 2528|      4|	return SUCCESS;
 2529|      4|}
is_smaller_function:
 2533|     86|{
 2534|     86|	ZVAL_BOOL(result, (zend_compare(op1, op2) < 0));
  ------------------
  |  | 1071|     86|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     86|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     86|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     86|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     86|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|     33|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|    139|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 33, False: 53]
  |  |  ------------------
  |  | 1074|     86|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 86]
  |  |  ------------------
  ------------------
 2535|     86|	return SUCCESS;
 2536|     86|}
is_smaller_or_equal_function:
 2540|      2|{
 2541|      2|	ZVAL_BOOL(result, (zend_compare(op1, op2) <= 0));
  ------------------
  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 1, False: 1]
  |  |  ------------------
  |  | 1074|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2542|      2|	return SUCCESS;
 2543|      2|}
zend_class_implements_interface:
 2547|    234|{
 2548|    234|	uint32_t i;
 2549|    234|	ZEND_ASSERT(interface_ce->ce_flags & ZEND_ACC_INTERFACE);
  ------------------
  |  |  112|    234|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2549:2): [True: 0, False: 234]
  |  Branch (2549:2): [True: 234, False: 0]
  ------------------
 2550|       |
 2551|    234|	if (class_ce->num_interfaces) {
  ------------------
  |  Branch (2551:6): [True: 230, False: 4]
  ------------------
 2552|    230|		ZEND_ASSERT(class_ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES);
  ------------------
  |  |  112|    230|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2552:3): [True: 0, False: 230]
  |  Branch (2552:3): [True: 230, False: 0]
  ------------------
 2553|    720|		for (i = 0; i < class_ce->num_interfaces; i++) {
  ------------------
  |  Branch (2553:15): [True: 531, False: 189]
  ------------------
 2554|    531|			if (class_ce->interfaces[i] == interface_ce) {
  ------------------
  |  Branch (2554:8): [True: 41, False: 490]
  ------------------
 2555|     41|				return 1;
 2556|     41|			}
 2557|    531|		}
 2558|    230|	}
 2559|    193|	return 0;
 2560|    234|}
instanceof_function_slow:
 2564|   281k|{
 2565|   281k|	ZEND_ASSERT(instance_ce != ce && "Should have been checked already");
  ------------------
  |  |  112|   281k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2565:2): [True: 0, False: 281k]
  |  Branch (2565:2): [True: 0, False: 0]
  |  Branch (2565:2): [True: 281k, False: 0]
  |  Branch (2565:2): [True: 281k, False: 0]
  ------------------
 2566|   281k|	if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|   281k|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (2566:6): [True: 36.4k, False: 244k]
  ------------------
 2567|  36.4k|		uint32_t i;
 2568|       |
 2569|  36.4k|		if (instance_ce->num_interfaces) {
  ------------------
  |  Branch (2569:7): [True: 36.4k, False: 37]
  ------------------
 2570|  36.4k|			ZEND_ASSERT(instance_ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES);
  ------------------
  |  |  112|  36.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2570:4): [True: 0, False: 36.4k]
  |  Branch (2570:4): [True: 36.4k, False: 0]
  ------------------
 2571|  70.5k|			for (i = 0; i < instance_ce->num_interfaces; i++) {
  ------------------
  |  Branch (2571:16): [True: 70.5k, False: 2]
  ------------------
 2572|  70.5k|				if (instance_ce->interfaces[i] == ce) {
  ------------------
  |  Branch (2572:9): [True: 36.4k, False: 34.1k]
  ------------------
 2573|  36.4k|					return 1;
 2574|  36.4k|				}
 2575|  70.5k|			}
 2576|  36.4k|		}
 2577|     39|		return 0;
 2578|   244k|	} else {
 2579|   686k|		while (1) {
  ------------------
  |  Branch (2579:10): [True: 686k, Folded]
  ------------------
 2580|   686k|			instance_ce = instance_ce->parent;
 2581|   686k|			if (instance_ce == ce) {
  ------------------
  |  Branch (2581:8): [True: 6.96k, False: 679k]
  ------------------
 2582|  6.96k|				return 1;
 2583|  6.96k|			}
 2584|   679k|			if (instance_ce == NULL) {
  ------------------
  |  Branch (2584:8): [True: 237k, False: 442k]
  ------------------
 2585|   237k|				return 0;
 2586|   237k|			}
 2587|   679k|		}
 2588|   244k|	}
 2589|   281k|}
increment_function:
 2709|  1.30k|{
 2710|  1.30k|try_again:
 2711|  1.30k|	switch (Z_TYPE_P(op1)) {
  ------------------
  |  |  669|  1.30k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.30k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2712|     46|		case IS_LONG:
  ------------------
  |  |  610|     46|#define IS_LONG						4
  ------------------
  |  Branch (2712:3): [True: 46, False: 1.25k]
  ------------------
 2713|     46|			fast_long_increment_function(op1);
 2714|     46|			break;
 2715|    740|		case IS_DOUBLE:
  ------------------
  |  |  611|    740|#define IS_DOUBLE					5
  ------------------
  |  Branch (2715:3): [True: 740, False: 564]
  ------------------
 2716|    740|			Z_DVAL_P(op1) = Z_DVAL_P(op1) + 1;
  ------------------
  |  |  979|    740|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    740|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              			Z_DVAL_P(op1) = Z_DVAL_P(op1) + 1;
  ------------------
  |  |  979|    740|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    740|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2717|    740|			break;
 2718|    153|		case IS_NULL:
  ------------------
  |  |  607|    153|#define IS_NULL						1
  ------------------
  |  Branch (2718:3): [True: 153, False: 1.15k]
  ------------------
 2719|    153|			ZVAL_LONG(op1, 1);
  ------------------
  |  | 1076|    153|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    153|		zval *__z = (z);				\
  |  | 1078|    153|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    153|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    153|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    153|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    153|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    153|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    153|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    153|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 153]
  |  |  ------------------
  ------------------
 2720|    153|			break;
 2721|    355|		case IS_STRING: {
  ------------------
  |  |  612|    355|#define IS_STRING					6
  ------------------
  |  Branch (2721:3): [True: 355, False: 949]
  ------------------
 2722|    355|				zend_long lval;
 2723|    355|				double dval;
 2724|       |
 2725|    355|				switch (is_numeric_str_function(Z_STR_P(op1), &lval, &dval)) {
  ------------------
  |  |  982|    355|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    355|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2726|     32|					case IS_LONG:
  ------------------
  |  |  610|     32|#define IS_LONG						4
  ------------------
  |  Branch (2726:6): [True: 32, False: 323]
  ------------------
 2727|     32|						zval_ptr_dtor_str(op1);
 2728|     32|						if (lval == ZEND_LONG_MAX) {
  ------------------
  |  |   34|     32|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  |  Branch (2728:11): [True: 1, False: 31]
  ------------------
 2729|       |							/* switch to double */
 2730|      1|							double d = (double)lval;
 2731|      1|							ZVAL_DOUBLE(op1, d+1);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2732|     31|						} else {
 2733|     31|							ZVAL_LONG(op1, lval+1);
  ------------------
  |  | 1076|     31|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     31|		zval *__z = (z);				\
  |  | 1078|     31|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     31|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     31|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     31|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     31|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 31]
  |  |  ------------------
  ------------------
 2734|     31|						}
 2735|     32|						break;
 2736|      9|					case IS_DOUBLE:
  ------------------
  |  |  611|      9|#define IS_DOUBLE					5
  ------------------
  |  Branch (2736:6): [True: 9, False: 346]
  ------------------
 2737|      9|						zval_ptr_dtor_str(op1);
 2738|      9|						ZVAL_DOUBLE(op1, dval+1);
  ------------------
  |  | 1082|      9|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      9|		zval *__z = (z);				\
  |  | 1084|      9|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      9|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      9|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      9|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      9|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 2739|      9|						break;
 2740|    314|					default:
  ------------------
  |  Branch (2740:6): [True: 314, False: 41]
  ------------------
 2741|       |						/* Perl style string increment */
 2742|    314|						increment_string(op1);
 2743|    314|						if (EG(exception)) {
  ------------------
  |  |   45|    314|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 314]
  |  |  ------------------
  ------------------
 2744|      0|							return FAILURE;
 2745|      0|						}
 2746|    314|						break;
 2747|    355|				}
 2748|    355|			}
 2749|    353|			break;
 2750|    353|		case IS_FALSE:
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (2750:3): [True: 1, False: 1.30k]
  ------------------
 2751|      9|		case IS_TRUE: {
  ------------------
  |  |  609|      9|#define IS_TRUE						3
  ------------------
  |  Branch (2751:3): [True: 8, False: 1.29k]
  ------------------
 2752|       |			/* Error handler can undef/change type of op1, save it and reset it in case those cases */
 2753|      9|			zval copy;
 2754|      9|			ZVAL_COPY_VALUE(&copy, op1);
  ------------------
  |  | 1416|      9|	do {												\
  |  | 1417|      9|		zval *_z1 = (z);								\
  |  | 1418|      9|		const zval *_z2 = (v);							\
  |  | 1419|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      9|	do {												\
  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 2755|      9|			zend_error(E_WARNING, "Increment on type bool has no effect, this will change in the next major version of PHP");
  ------------------
  |  |   23|      9|#define E_WARNING			(1<<1L)
  ------------------
 2756|      9|			zval_ptr_dtor(op1);
 2757|      9|			ZVAL_COPY_VALUE(op1, &copy);
  ------------------
  |  | 1416|      9|	do {												\
  |  | 1417|      9|		zval *_z1 = (z);								\
  |  | 1418|      9|		const zval *_z2 = (v);							\
  |  | 1419|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      9|	do {												\
  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 2758|      9|			if (EG(exception)) {
  ------------------
  |  |   45|      9|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 2759|      0|				return FAILURE;
 2760|      0|			}
 2761|      9|			break;
 2762|      9|		}
 2763|      9|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (2763:3): [True: 0, False: 1.30k]
  ------------------
 2764|      0|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2765|      0|			goto try_again;
 2766|      1|		case IS_OBJECT: {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (2766:3): [True: 1, False: 1.30k]
  ------------------
 2767|      1|			if (Z_OBJ_HANDLER_P(op1, do_operation)) {
  ------------------
  |  | 1006|      1|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      1|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1005:34): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2768|      0|				zval op2;
 2769|      0|				ZVAL_LONG(&op2, 1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2770|      0|				if (Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_ADD, op1, op1, &op2) == SUCCESS) {
  ------------------
  |  | 1006|      0|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      0|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_ADD, op1, op1, &op2) == SUCCESS) {
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (2770:9): [True: 0, False: 0]
  ------------------
 2771|      0|					return SUCCESS;
 2772|      0|				}
 2773|      0|			}
 2774|      1|			zval tmp;
 2775|      1|			if (Z_OBJ_HT_P(op1)->cast_object(Z_OBJ_P(op1), &tmp, _IS_NUMBER) == SUCCESS) {
  ------------------
  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op1)->cast_object(Z_OBJ_P(op1), &tmp, _IS_NUMBER) == SUCCESS) {
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op1)->cast_object(Z_OBJ_P(op1), &tmp, _IS_NUMBER) == SUCCESS) {
  ------------------
  |  |  636|      1|#define _IS_NUMBER					19
  ------------------
  |  Branch (2775:8): [True: 0, False: 1]
  ------------------
 2776|      0|				ZEND_ASSERT(Z_TYPE(tmp) == IS_LONG || Z_TYPE(tmp) == IS_DOUBLE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2776:5): [True: 0, False: 0]
  |  Branch (2776:5): [True: 0, False: 0]
  |  Branch (2776:5): [True: 0, False: 0]
  |  Branch (2776:5): [True: 0, False: 0]
  ------------------
 2777|      0|				zval_ptr_dtor(op1);
 2778|      0|				ZVAL_COPY_VALUE(op1, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2779|      0|				goto try_again;
 2780|      0|			}
 2781|      1|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      1|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2782|      1|		}
 2783|      1|		case IS_RESOURCE:
  ------------------
  |  |  615|      1|#define IS_RESOURCE					9
  ------------------
  |  Branch (2783:3): [True: 0, False: 1.30k]
  ------------------
 2784|      1|		case IS_ARRAY:
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (2784:3): [True: 0, False: 1.30k]
  ------------------
 2785|      1|			zend_type_error("Cannot increment %s", zend_zval_value_name(op1));
 2786|      1|			return FAILURE;
 2787|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2787:3): [True: 0, False: 1.30k]
  |  Branch (2787:12): [Folded, False: 0]
  |  Branch (2787:12): [Folded, False: 0]
  ------------------
 2788|  1.30k|	}
 2789|  1.30k|	return SUCCESS;
 2790|  1.30k|}
decrement_function:
 2794|    133|{
 2795|    133|	zend_long lval;
 2796|    133|	double dval;
 2797|       |
 2798|    133|try_again:
 2799|    133|	switch (Z_TYPE_P(op1)) {
  ------------------
  |  |  669|    133|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    133|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2800|      4|		case IS_LONG:
  ------------------
  |  |  610|      4|#define IS_LONG						4
  ------------------
  |  Branch (2800:3): [True: 4, False: 129]
  ------------------
 2801|      4|			fast_long_decrement_function(op1);
 2802|      4|			break;
 2803|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (2803:3): [True: 0, False: 133]
  ------------------
 2804|      0|			Z_DVAL_P(op1) = Z_DVAL_P(op1) - 1;
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              			Z_DVAL_P(op1) = Z_DVAL_P(op1) - 1;
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2805|      0|			break;
 2806|      1|		case IS_STRING:		/* Like perl we only support string increment */
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (2806:3): [True: 1, False: 132]
  ------------------
 2807|      1|			if (Z_STRLEN_P(op1) == 0) { /* consider as 0 */
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2807:8): [True: 0, False: 1]
  ------------------
 2808|      0|				zend_error(E_DEPRECATED, "Decrement on empty string is deprecated as non-numeric");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2809|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2810|      0|					return FAILURE;
 2811|      0|				}
 2812|       |				/* A userland error handler can change the type from string to something else */
 2813|      0|				zval_ptr_dtor(op1);
 2814|      0|				ZVAL_LONG(op1, -1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2815|      0|				break;
 2816|      0|			}
 2817|      1|			switch (is_numeric_str_function(Z_STR_P(op1), &lval, &dval)) {
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2818|      1|				case IS_LONG:
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (2818:5): [True: 1, False: 0]
  ------------------
 2819|      1|					zval_ptr_dtor_str(op1);
 2820|      1|					if (lval == ZEND_LONG_MIN) {
  ------------------
  |  |   35|      1|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (2820:10): [True: 1, False: 0]
  ------------------
 2821|      1|						double d = (double)lval;
 2822|      1|						ZVAL_DOUBLE(op1, d-1);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2823|      1|					} else {
 2824|      0|						ZVAL_LONG(op1, lval-1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2825|      0|					}
 2826|      1|					break;
 2827|      0|				case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (2827:5): [True: 0, False: 1]
  ------------------
 2828|      0|					zval_ptr_dtor_str(op1);
 2829|      0|					ZVAL_DOUBLE(op1, dval - 1);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2830|      0|					break;
 2831|      0|				default: {
  ------------------
  |  Branch (2831:5): [True: 0, False: 1]
  ------------------
 2832|       |					/* Error handler can unset the variable */
 2833|      0|					zend_string *zstr = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2834|      0|					zend_string_addref(zstr);
 2835|      0|					zend_error(E_DEPRECATED, "Decrement on non-numeric string has no effect and is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2836|      0|					if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2837|      0|						zend_string_release(zstr);
 2838|      0|						return FAILURE;
 2839|      0|					}
 2840|      0|					zval_ptr_dtor(op1);
 2841|      0|					ZVAL_STR(op1, zstr);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2842|      0|				}
 2843|      1|			}
 2844|      1|			break;
 2845|    127|		case IS_NULL: {
  ------------------
  |  |  607|    127|#define IS_NULL						1
  ------------------
  |  Branch (2845:3): [True: 127, False: 6]
  ------------------
 2846|       |			/* Error handler can undef/change type of op1, save it and reset it in case those cases */
 2847|    127|			zval copy;
 2848|    127|			ZVAL_COPY_VALUE(&copy, op1);
  ------------------
  |  | 1416|    127|	do {												\
  |  | 1417|    127|		zval *_z1 = (z);								\
  |  | 1418|    127|		const zval *_z2 = (v);							\
  |  | 1419|    127|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    127|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    127|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    127|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    127|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    127|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    127|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    127|	do {												\
  |  |  |  | 1408|    127|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    127|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    127|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    127|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    127|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    127|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    127|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 127]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    127|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 127]
  |  |  ------------------
  ------------------
 2849|    127|			zend_error(E_WARNING, "Decrement on type null has no effect, this will change in the next major version of PHP");
  ------------------
  |  |   23|    127|#define E_WARNING			(1<<1L)
  ------------------
 2850|    127|			zval_ptr_dtor(op1);
 2851|    127|			ZVAL_COPY_VALUE(op1, &copy);
  ------------------
  |  | 1416|    127|	do {												\
  |  | 1417|    127|		zval *_z1 = (z);								\
  |  | 1418|    127|		const zval *_z2 = (v);							\
  |  | 1419|    127|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    127|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    127|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    127|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    127|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    127|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    127|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    127|	do {												\
  |  |  |  | 1408|    127|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    127|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    127|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    127|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    127|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    127|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    127|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 127]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    127|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 127]
  |  |  ------------------
  ------------------
 2852|    127|			if (EG(exception)) {
  ------------------
  |  |   45|    127|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 127]
  |  |  ------------------
  ------------------
 2853|      0|				return FAILURE;
 2854|      0|			}
 2855|    127|			break;
 2856|    127|		}
 2857|    127|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (2857:3): [True: 0, False: 133]
  ------------------
 2858|      0|		case IS_TRUE: {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (2858:3): [True: 0, False: 133]
  ------------------
 2859|       |			/* Error handler can undef/change type of op1, save it and reset it in case those cases */
 2860|      0|			zval copy;
 2861|      0|			ZVAL_COPY_VALUE(&copy, op1);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2862|      0|			zend_error(E_WARNING, "Decrement on type bool has no effect, this will change in the next major version of PHP");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 2863|      0|			zval_ptr_dtor(op1);
 2864|      0|			ZVAL_COPY_VALUE(op1, &copy);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2865|      0|			if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2866|      0|				return FAILURE;
 2867|      0|			}
 2868|      0|			break;
 2869|      0|		}
 2870|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (2870:3): [True: 0, False: 133]
  ------------------
 2871|      0|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2872|      0|			goto try_again;
 2873|      1|		case IS_OBJECT: {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (2873:3): [True: 1, False: 132]
  ------------------
 2874|      1|			if (Z_OBJ_HANDLER_P(op1, do_operation)) {
  ------------------
  |  | 1006|      1|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      1|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1005:34): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2875|      0|				zval op2;
 2876|      0|				ZVAL_LONG(&op2, 1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2877|      0|				if (Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_SUB, op1, op1, &op2) == SUCCESS) {
  ------------------
  |  | 1006|      0|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      0|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_SUB, op1, op1, &op2) == SUCCESS) {
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (2877:9): [True: 0, False: 0]
  ------------------
 2878|      0|					return SUCCESS;
 2879|      0|				}
 2880|      0|			}
 2881|      1|			zval tmp;
 2882|      1|			if (Z_OBJ_HT_P(op1)->cast_object(Z_OBJ_P(op1), &tmp, _IS_NUMBER) == SUCCESS) {
  ------------------
  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op1)->cast_object(Z_OBJ_P(op1), &tmp, _IS_NUMBER) == SUCCESS) {
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op1)->cast_object(Z_OBJ_P(op1), &tmp, _IS_NUMBER) == SUCCESS) {
  ------------------
  |  |  636|      1|#define _IS_NUMBER					19
  ------------------
  |  Branch (2882:8): [True: 0, False: 1]
  ------------------
 2883|      0|				ZEND_ASSERT(Z_TYPE(tmp) == IS_LONG || Z_TYPE(tmp) == IS_DOUBLE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2883:5): [True: 0, False: 0]
  |  Branch (2883:5): [True: 0, False: 0]
  |  Branch (2883:5): [True: 0, False: 0]
  |  Branch (2883:5): [True: 0, False: 0]
  ------------------
 2884|      0|				zval_ptr_dtor(op1);
 2885|      0|				ZVAL_COPY_VALUE(op1, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2886|      0|				goto try_again;
 2887|      0|			}
 2888|      1|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      1|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2889|      1|		}
 2890|      1|		case IS_RESOURCE:
  ------------------
  |  |  615|      1|#define IS_RESOURCE					9
  ------------------
  |  Branch (2890:3): [True: 0, False: 133]
  ------------------
 2891|      1|		case IS_ARRAY:
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (2891:3): [True: 0, False: 133]
  ------------------
 2892|      1|			zend_type_error("Cannot decrement %s", zend_zval_value_name(op1));
 2893|      1|			return FAILURE;
 2894|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2894:3): [True: 0, False: 133]
  |  Branch (2894:12): [Folded, False: 0]
  |  Branch (2894:12): [Folded, False: 0]
  ------------------
 2895|    133|	}
 2896|       |
 2897|    132|	return SUCCESS;
 2898|    133|}
zend_is_true:
 2902|  5.45k|{
 2903|  5.45k|	return i_zend_is_true(op);
 2904|  5.45k|}
zend_update_current_locale:
 2920|      2|{
 2921|       |#ifdef ZEND_USE_TOLOWER_L
 2922|       |# if defined(ZEND_WIN32) && defined(_MSC_VER)
 2923|       |	current_locale = _get_current_locale();
 2924|       |# else
 2925|       |	current_locale = uselocale(0);
 2926|       |# endif
 2927|       |#endif
 2928|       |#if defined(ZEND_WIN32) && defined(_MSC_VER)
 2929|       |	if (MB_CUR_MAX > 1) {
 2930|       |		unsigned int cp = ___lc_codepage_func();
 2931|       |		CG(variable_width_locale) = 1;
 2932|       |		// TODO: EUC-* are also ASCII compatible ???
 2933|       |		CG(ascii_compatible_locale) =
 2934|       |			cp == 65001; /* UTF-8 */
 2935|       |	} else {
 2936|       |		CG(variable_width_locale) = 0;
 2937|       |		CG(ascii_compatible_locale) = 1;
 2938|       |	}
 2939|       |#elif defined(MB_CUR_MAX)
 2940|       |	/* Check if current locale uses variable width encoding */
 2941|      2|	if (MB_CUR_MAX > 1) {
  ------------------
  |  Branch (2941:6): [True: 2, False: 0]
  ------------------
 2942|      2|#ifdef HAVE_NL_LANGINFO
 2943|      2|		const char *charmap = nl_langinfo(CODESET);
 2944|       |#else
 2945|       |		char buf[16];
 2946|       |		const char *charmap = NULL;
 2947|       |		const char *locale = setlocale(LC_CTYPE, NULL);
 2948|       |
 2949|       |		if (locale) {
 2950|       |			const char *dot = strchr(locale, '.');
 2951|       |			const char *modifier;
 2952|       |
 2953|       |			if (dot) {
 2954|       |				dot++;
 2955|       |				modifier = strchr(dot, '@');
 2956|       |				if (!modifier) {
 2957|       |					charmap = dot;
 2958|       |				} else if (modifier - dot < sizeof(buf)) {
 2959|       |					memcpy(buf, dot, modifier - dot);
 2960|       |                    buf[modifier - dot] = '\0';
 2961|       |                    charmap = buf;
 2962|       |				}
 2963|       |			}
 2964|       |		}
 2965|       |#endif
 2966|      2|		CG(variable_width_locale) = 1;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 2967|      2|		CG(ascii_compatible_locale) = 0;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 2968|       |
 2969|      2|		if (charmap) {
  ------------------
  |  Branch (2969:7): [True: 2, False: 0]
  ------------------
 2970|      2|			size_t len = strlen(charmap);
 2971|      2|			static const char *ascii_compatible_charmaps[] = {
 2972|      2|				"utf-8",
 2973|      2|				"utf8",
 2974|       |				// TODO: EUC-* are also ASCII compatible ???
 2975|      2|				NULL
 2976|      2|			};
 2977|      2|			const char **p;
 2978|       |			/* Check if current locale is ASCII compatible */
 2979|      2|			for (p = ascii_compatible_charmaps; *p; p++) {
  ------------------
  |  Branch (2979:40): [True: 2, False: 0]
  ------------------
 2980|      2|				if (zend_binary_strcasecmp(charmap, len, *p, strlen(*p)) == 0) {
  ------------------
  |  Branch (2980:9): [True: 2, False: 0]
  ------------------
 2981|      2|					CG(ascii_compatible_locale) = 1;
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 2982|      2|					break;
 2983|      2|				}
 2984|      2|			}
 2985|      2|		}
 2986|       |
 2987|      2|	} else {
 2988|      0|		CG(variable_width_locale) = 0;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2989|      0|		CG(ascii_compatible_locale) = 1;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 2990|      0|	}
 2991|       |#else
 2992|       |	/* We can't determine current charset. Assume the worst case */
 2993|       |	CG(variable_width_locale) = 1;
 2994|       |	CG(ascii_compatible_locale) = 0;
 2995|       |#endif
 2996|      2|}
zend_reset_lc_ctype_locale:
 3000|      2|{
 3001|       |	/* Use the C.UTF-8 locale so that readline can process UTF-8 input, while not interfering
 3002|       |	 * with single-byte locale-dependent functions used by PHP. */
 3003|      2|	if (!setlocale(LC_CTYPE, "C.UTF-8")) {
  ------------------
  |  Branch (3003:6): [True: 0, False: 2]
  ------------------
 3004|       |		setlocale(LC_CTYPE, "C");
 3005|      0|	}
 3006|      2|}
zend_str_tolower_copy:
 3053|  1.83k|{
 3054|  1.83k|	zend_str_tolower_impl(dest, source, length);
 3055|  1.83k|	dest[length] = '\0';
 3056|  1.83k|	return dest;
 3057|  1.83k|}
zend_str_tolower_dup:
 3069|    126|{
 3070|       |	return zend_str_tolower_copy((char *)emalloc(length+1), source, length);
  ------------------
  |  |  150|    126|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    126|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    126|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    126|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    126|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3071|    126|}
zend_str_tolower:
 3081|    108|{
 3082|    108|	zend_str_tolower_impl(str, (const char*)str, length);
 3083|    108|}
zend_str_tolower_dup_ex:
 3094|      1|{
 3095|      1|	const unsigned char *p = (const unsigned char*)source;
 3096|      1|	const unsigned char *end = p + length;
 3097|       |
 3098|      1|	while (p < end) {
  ------------------
  |  Branch (3098:9): [True: 0, False: 1]
  ------------------
 3099|      0|		if (*p != zend_tolower_ascii(*p)) {
  ------------------
  |  |  469|      0|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
  |  Branch (3099:7): [True: 0, False: 0]
  ------------------
 3100|      0|			char *res = (char*)emalloc(length + 1);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3101|      0|			unsigned char *r;
 3102|       |
 3103|      0|			if (p != (const unsigned char*)source) {
  ------------------
  |  Branch (3103:8): [True: 0, False: 0]
  ------------------
 3104|      0|				memcpy(res, source, p - (const unsigned char*)source);
 3105|      0|			}
 3106|      0|			r = (unsigned char*)p + (res - source);
 3107|      0|			zend_str_tolower_impl((char *)r, (const char*)p, end - p);
 3108|      0|			res[length] = '\0';
 3109|      0|			return res;
 3110|      0|		}
 3111|      0|		p++;
 3112|      0|	}
 3113|      1|	return NULL;
 3114|      1|}
zend_string_tolower_ex:
 3142|  23.2k|{
 3143|  23.2k|	size_t length = ZSTR_LEN(str);
  ------------------
  |  |   68|  23.2k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3144|  23.2k|	unsigned char *p = (unsigned char *) ZSTR_VAL(str);
  ------------------
  |  |   67|  23.2k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3145|  23.2k|	unsigned char *end = p + length;
 3146|       |
 3147|  23.2k|#ifdef HAVE_BLOCKCONV
 3148|  23.2k|	BLOCKCONV_INIT_RANGE('A', 'Z');
  ------------------
  |  |   91|  23.2k|	const __m128i blconv_offset = _mm_set1_epi8((signed char)(SCHAR_MIN - start)); \
  |  |   92|  23.2k|	const __m128i blconv_threshold = _mm_set1_epi8(SCHAR_MIN + (end - start) + 1);
  ------------------
 3149|  25.2k|	while (p + BLOCKCONV_STRIDE <= end) {
  ------------------
  |  |   94|  25.2k|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
  |  Branch (3149:9): [True: 2.90k, False: 22.3k]
  ------------------
 3150|  2.90k|		BLOCKCONV_LOAD(p);
  ------------------
  |  |  100|  2.90k|	__m128i blconv_operand = _mm_loadu_si128((__m128i*)(input)); \
  |  |  101|  2.90k|	__m128i blconv_mask = _mm_cmplt_epi8(_mm_add_epi8(blconv_operand, blconv_offset), blconv_threshold);
  ------------------
 3151|  2.90k|		if (BLOCKCONV_FOUND()) {
  ------------------
  |  |  103|  2.90k|#define BLOCKCONV_FOUND() _mm_movemask_epi8(blconv_mask)
  |  |  ------------------
  |  |  |  Branch (103:27): [True: 922, False: 1.98k]
  |  |  ------------------
  ------------------
 3152|    922|			zend_string *res = zend_string_alloc(length, persistent);
 3153|    922|			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|    922|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|    922|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|    922|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3154|    922|			unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|    922|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|    922|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3155|       |
 3156|       |			/* Lowercase the chunk we already compared. */
 3157|    922|			BLOCKCONV_INIT_DELTA('a' - 'A');
  ------------------
  |  |   97|    922|	const __m128i blconv_delta = _mm_set1_epi8(delta);
  ------------------
 3158|    922|			BLOCKCONV_STORE(q);
  ------------------
  |  |  106|    922|	__m128i blconv_add = _mm_and_si128(blconv_mask, blconv_delta); \
  |  |  107|    922|	__m128i blconv_result = _mm_add_epi8(blconv_operand, blconv_add); \
  |  |  108|    922|	_mm_storeu_si128((__m128i *)(dest), blconv_result);
  ------------------
 3159|       |
 3160|       |			/* Lowercase the rest of the string. */
 3161|    922|			p += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|    922|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3162|    922|			q += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|    922|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3163|    922|			zend_str_tolower_impl((char *) q, (const char *) p, end - p);
 3164|    922|			ZSTR_VAL(res)[length] = '\0';
  ------------------
  |  |   67|    922|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3165|    922|			return res;
 3166|    922|		}
 3167|  1.98k|		p += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|  1.98k|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3168|  1.98k|	}
 3169|  22.3k|#endif
 3170|       |
 3171|   136k|	while (p < end) {
  ------------------
  |  Branch (3171:9): [True: 121k, False: 14.9k]
  ------------------
 3172|   121k|		if (*p != zend_tolower_ascii(*p)) {
  ------------------
  |  |  469|   121k|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
  |  Branch (3172:7): [True: 7.39k, False: 113k]
  ------------------
 3173|  7.39k|			zend_string *res = zend_string_alloc(length, persistent);
 3174|  7.39k|			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|  7.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|  7.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|  7.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3175|       |
 3176|  7.39k|			unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|  7.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|  7.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3177|  47.1k|			while (p < end) {
  ------------------
  |  Branch (3177:11): [True: 39.8k, False: 7.39k]
  ------------------
 3178|  39.8k|				*q++ = zend_tolower_ascii(*p++);
  ------------------
  |  |  469|  39.8k|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
 3179|  39.8k|			}
 3180|  7.39k|			ZSTR_VAL(res)[length] = '\0';
  ------------------
  |  |   67|  7.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3181|  7.39k|			return res;
 3182|  7.39k|		}
 3183|   113k|		p++;
 3184|   113k|	}
 3185|       |
 3186|  14.9k|	return zend_string_copy(str);
 3187|  22.3k|}
zend_string_toupper_ex:
 3191|      6|{
 3192|      6|	size_t length = ZSTR_LEN(str);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3193|      6|	unsigned char *p = (unsigned char *) ZSTR_VAL(str);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3194|      6|	unsigned char *end = p + length;
 3195|       |
 3196|      6|#ifdef HAVE_BLOCKCONV
 3197|      6|	BLOCKCONV_INIT_RANGE('a', 'z');
  ------------------
  |  |   91|      6|	const __m128i blconv_offset = _mm_set1_epi8((signed char)(SCHAR_MIN - start)); \
  |  |   92|      6|	const __m128i blconv_threshold = _mm_set1_epi8(SCHAR_MIN + (end - start) + 1);
  ------------------
 3198|      6|	while (p + BLOCKCONV_STRIDE <= end) {
  ------------------
  |  |   94|      6|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
  |  Branch (3198:9): [True: 0, False: 6]
  ------------------
 3199|      0|		BLOCKCONV_LOAD(p);
  ------------------
  |  |  100|      0|	__m128i blconv_operand = _mm_loadu_si128((__m128i*)(input)); \
  |  |  101|      0|	__m128i blconv_mask = _mm_cmplt_epi8(_mm_add_epi8(blconv_operand, blconv_offset), blconv_threshold);
  ------------------
 3200|      0|		if (BLOCKCONV_FOUND()) {
  ------------------
  |  |  103|      0|#define BLOCKCONV_FOUND() _mm_movemask_epi8(blconv_mask)
  |  |  ------------------
  |  |  |  Branch (103:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3201|      0|			zend_string *res = zend_string_alloc(length, persistent);
 3202|      0|			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3203|      0|			unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3204|       |
 3205|       |			/* Uppercase the chunk we already compared. */
 3206|      0|			BLOCKCONV_INIT_DELTA('A' - 'a');
  ------------------
  |  |   97|      0|	const __m128i blconv_delta = _mm_set1_epi8(delta);
  ------------------
 3207|      0|			BLOCKCONV_STORE(q);
  ------------------
  |  |  106|      0|	__m128i blconv_add = _mm_and_si128(blconv_mask, blconv_delta); \
  |  |  107|      0|	__m128i blconv_result = _mm_add_epi8(blconv_operand, blconv_add); \
  |  |  108|      0|	_mm_storeu_si128((__m128i *)(dest), blconv_result);
  ------------------
 3208|       |
 3209|       |			/* Uppercase the rest of the string. */
 3210|      0|			p += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|      0|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3211|      0|			q += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|      0|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3212|      0|			zend_str_toupper_impl((char *) q, (const char *) p, end - p);
 3213|      0|			ZSTR_VAL(res)[length] = '\0';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3214|      0|			return res;
 3215|      0|		}
 3216|      0|		p += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|      0|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3217|      0|	}
 3218|      6|#endif
 3219|       |
 3220|      6|	while (p < end) {
  ------------------
  |  Branch (3220:9): [True: 6, False: 0]
  ------------------
 3221|      6|		if (*p != zend_toupper_ascii(*p)) {
  ------------------
  |  |  470|      6|#define zend_toupper_ascii(c) (zend_toupper_map[(unsigned char)(c)])
  ------------------
  |  Branch (3221:7): [True: 6, False: 0]
  ------------------
 3222|      6|			zend_string *res = zend_string_alloc(length, persistent);
 3223|      6|			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3224|       |
 3225|      6|			unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str));
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3226|     33|			while (p < end) {
  ------------------
  |  Branch (3226:11): [True: 27, False: 6]
  ------------------
 3227|     27|				*q++ = zend_toupper_ascii(*p++);
  ------------------
  |  |  470|     27|#define zend_toupper_ascii(c) (zend_toupper_map[(unsigned char)(c)])
  ------------------
 3228|     27|			}
 3229|      6|			ZSTR_VAL(res)[length] = '\0';
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3230|      6|			return res;
 3231|      6|		}
 3232|      0|		p++;
 3233|      0|	}
 3234|       |
 3235|      0|	return zend_string_copy(str);
 3236|      6|}
zend_binary_strcmp:
 3240|    449|{
 3241|    449|	int retval;
 3242|       |
 3243|    449|	if (s1 == s2) {
  ------------------
  |  Branch (3243:6): [True: 1, False: 448]
  ------------------
 3244|      1|		return 0;
 3245|      1|	}
 3246|    448|	retval = memcmp(s1, s2, MIN(len1, len2));
  ------------------
  |  |  518|    448|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 355, False: 93]
  |  |  ------------------
  ------------------
 3247|    448|	if (!retval) {
  ------------------
  |  Branch (3247:6): [True: 17, False: 431]
  ------------------
 3248|     17|		return ZEND_THREEWAY_COMPARE(len1, len2);
  ------------------
  |  |  552|     17|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 4, False: 13]
  |  |  |  Branch (552:56): [True: 6, False: 7]
  |  |  ------------------
  ------------------
 3249|    431|	} else {
 3250|    431|		return retval;
 3251|    431|	}
 3252|    448|}
zend_binary_strcasecmp:
 3272|  7.49k|{
 3273|  7.49k|	size_t len;
 3274|  7.49k|	int c1, c2;
 3275|       |
 3276|  7.49k|	if (s1 == s2) {
  ------------------
  |  Branch (3276:6): [True: 175, False: 7.32k]
  ------------------
 3277|    175|		return 0;
 3278|    175|	}
 3279|       |
 3280|  7.32k|	len = MIN(len1, len2);
  ------------------
  |  |  518|  7.32k|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 570, False: 6.75k]
  |  |  ------------------
  ------------------
 3281|  19.2k|	while (len--) {
  ------------------
  |  Branch (3281:9): [True: 17.8k, False: 1.41k]
  ------------------
 3282|  17.8k|		c1 = zend_tolower_ascii(*(unsigned char *)s1++);
  ------------------
  |  |  469|  17.8k|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
 3283|  17.8k|		c2 = zend_tolower_ascii(*(unsigned char *)s2++);
  ------------------
  |  |  469|  17.8k|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
 3284|  17.8k|		if (c1 != c2) {
  ------------------
  |  Branch (3284:7): [True: 5.90k, False: 11.8k]
  ------------------
 3285|  5.90k|			return c1 - c2;
 3286|  5.90k|		}
 3287|  17.8k|	}
 3288|       |
 3289|  1.41k|	return ZEND_THREEWAY_COMPARE(len1, len2);
  ------------------
  |  |  552|  1.41k|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 1.38k, False: 30]
  |  |  |  Branch (552:56): [True: 17, False: 13]
  |  |  ------------------
  ------------------
 3290|  7.32k|}
zendi_smart_streq:
 3370|      3|{
 3371|      3|	uint8_t ret1, ret2;
 3372|      3|	int oflow1, oflow2;
 3373|      3|	zend_long lval1 = 0, lval2 = 0;
 3374|      3|	double dval1 = 0.0, dval2 = 0.0;
 3375|       |
 3376|      3|	if ((ret1 = is_numeric_string_ex(s1->val, s1->len, &lval1, &dval1, false, &oflow1, NULL)) &&
  ------------------
  |  Branch (3376:6): [True: 3, False: 0]
  ------------------
 3377|      3|		(ret2 = is_numeric_string_ex(s2->val, s2->len, &lval2, &dval2, false, &oflow2, NULL))) {
  ------------------
  |  Branch (3377:3): [True: 0, False: 3]
  ------------------
 3378|       |#if ZEND_ULONG_MAX == 0xFFFFFFFF
 3379|       |		if (oflow1 != 0 && oflow1 == oflow2 && dval1 - dval2 == 0. &&
 3380|       |			((oflow1 == 1 && dval1 > 9007199254740991. /*0x1FFFFFFFFFFFFF*/)
 3381|       |			|| (oflow1 == -1 && dval1 < -9007199254740991.))) {
 3382|       |#else
 3383|      0|		if (oflow1 != 0 && oflow1 == oflow2 && dval1 - dval2 == 0.) {
  ------------------
  |  Branch (3383:7): [True: 0, False: 0]
  |  Branch (3383:22): [True: 0, False: 0]
  |  Branch (3383:42): [True: 0, False: 0]
  ------------------
 3384|      0|#endif
 3385|       |			/* both values are integers overflown to the same side, and the
 3386|       |			 * double comparison may have resulted in crucial accuracy lost */
 3387|      0|			goto string_cmp;
 3388|      0|		}
 3389|      0|		if ((ret1 == IS_DOUBLE) || (ret2 == IS_DOUBLE)) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
              		if ((ret1 == IS_DOUBLE) || (ret2 == IS_DOUBLE)) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (3389:7): [True: 0, False: 0]
  |  Branch (3389:30): [True: 0, False: 0]
  ------------------
 3390|      0|			if (ret1 != IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (3390:8): [True: 0, False: 0]
  ------------------
 3391|      0|				if (oflow2) {
  ------------------
  |  Branch (3391:9): [True: 0, False: 0]
  ------------------
 3392|       |					/* 2nd operand is integer > LONG_MAX (oflow2==1) or < LONG_MIN (-1) */
 3393|      0|					return 0;
 3394|      0|				}
 3395|      0|				dval1 = (double) lval1;
 3396|      0|			} else if (ret2 != IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (3396:15): [True: 0, False: 0]
  ------------------
 3397|      0|				if (oflow1) {
  ------------------
  |  Branch (3397:9): [True: 0, False: 0]
  ------------------
 3398|      0|					return 0;
 3399|      0|				}
 3400|      0|				dval2 = (double) lval2;
 3401|      0|			} else if (dval1 == dval2 && !zend_finite(dval1)) {
  ------------------
  |  |  538|      0|# define zend_finite(a) isfinite(a)
  ------------------
  |  Branch (3401:15): [True: 0, False: 0]
  |  Branch (3401:33): [True: 0, False: 0]
  ------------------
 3402|       |				/* Both values overflowed and have the same sign,
 3403|       |				 * so a numeric comparison would be inaccurate */
 3404|      0|				goto string_cmp;
 3405|      0|			}
 3406|      0|			return dval1 == dval2;
 3407|      0|		} else { /* they both have to be long's */
 3408|      0|			return lval1 == lval2;
 3409|      0|		}
 3410|      3|	} else {
 3411|      3|string_cmp:
 3412|      3|		return zend_string_equal_content(s1, s2);
 3413|      3|	}
 3414|      3|}
zendi_smart_strcmp:
 3418|    101|{
 3419|    101|	uint8_t ret1, ret2;
 3420|    101|	int oflow1, oflow2;
 3421|    101|	zend_long lval1 = 0, lval2 = 0;
 3422|    101|	double dval1 = 0.0, dval2 = 0.0;
 3423|       |
 3424|    101|	if ((ret1 = is_numeric_string_ex(s1->val, s1->len, &lval1, &dval1, false, &oflow1, NULL)) &&
  ------------------
  |  Branch (3424:6): [True: 14, False: 87]
  ------------------
 3425|     14|		(ret2 = is_numeric_string_ex(s2->val, s2->len, &lval2, &dval2, false, &oflow2, NULL))) {
  ------------------
  |  Branch (3425:3): [True: 13, False: 1]
  ------------------
 3426|       |#if ZEND_ULONG_MAX == 0xFFFFFFFF
 3427|       |		if (oflow1 != 0 && oflow1 == oflow2 && dval1 - dval2 == 0. &&
 3428|       |			((oflow1 == 1 && dval1 > 9007199254740991. /*0x1FFFFFFFFFFFFF*/)
 3429|       |			|| (oflow1 == -1 && dval1 < -9007199254740991.))) {
 3430|       |#else
 3431|     13|		if (oflow1 != 0 && oflow1 == oflow2 && dval1 - dval2 == 0.) {
  ------------------
  |  Branch (3431:7): [True: 2, False: 11]
  |  Branch (3431:22): [True: 2, False: 0]
  |  Branch (3431:42): [True: 1, False: 1]
  ------------------
 3432|      1|#endif
 3433|       |			/* both values are integers overflowed to the same side, and the
 3434|       |			 * double comparison may have resulted in crucial accuracy lost */
 3435|      1|			goto string_cmp;
 3436|      1|		}
 3437|     12|		if ((ret1 == IS_DOUBLE) || (ret2 == IS_DOUBLE)) {
  ------------------
  |  |  611|     12|#define IS_DOUBLE					5
  ------------------
              		if ((ret1 == IS_DOUBLE) || (ret2 == IS_DOUBLE)) {
  ------------------
  |  |  611|     11|#define IS_DOUBLE					5
  ------------------
  |  Branch (3437:7): [True: 1, False: 11]
  |  Branch (3437:30): [True: 0, False: 11]
  ------------------
 3438|      1|			if (ret1 != IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (3438:8): [True: 0, False: 1]
  ------------------
 3439|      0|				if (oflow2) {
  ------------------
  |  Branch (3439:9): [True: 0, False: 0]
  ------------------
 3440|       |					/* 2nd operand is integer > LONG_MAX (oflow2==1) or < LONG_MIN (-1) */
 3441|      0|					return -1 * oflow2;
 3442|      0|				}
 3443|      0|				dval1 = (double) lval1;
 3444|      1|			} else if (ret2 != IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (3444:15): [True: 0, False: 1]
  ------------------
 3445|      0|				if (oflow1) {
  ------------------
  |  Branch (3445:9): [True: 0, False: 0]
  ------------------
 3446|      0|					return oflow1;
 3447|      0|				}
 3448|      0|				dval2 = (double) lval2;
 3449|      1|			} else if (dval1 == dval2 && !zend_finite(dval1)) {
  ------------------
  |  |  538|      0|# define zend_finite(a) isfinite(a)
  ------------------
  |  Branch (3449:15): [True: 0, False: 1]
  |  Branch (3449:33): [True: 0, False: 0]
  ------------------
 3450|       |				/* Both values overflowed and have the same sign,
 3451|       |				 * so a numeric comparison would be inaccurate */
 3452|      0|				goto string_cmp;
 3453|      0|			}
 3454|      1|			dval1 = dval1 - dval2;
 3455|      1|			return ZEND_NORMALIZE_BOOL(dval1);
  ------------------
  |  |  544|      1|	((n) ? (((n)<0) ? -1 : 1) : 0)
  |  |  ------------------
  |  |  |  Branch (544:3): [True: 1, False: 0]
  |  |  |  Branch (544:10): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3456|     11|		} else { /* they both have to be long's */
 3457|     11|			return lval1 > lval2 ? 1 : (lval1 < lval2 ? -1 : 0);
  ------------------
  |  Branch (3457:11): [True: 3, False: 8]
  |  Branch (3457:32): [True: 4, False: 4]
  ------------------
 3458|     11|		}
 3459|     88|	} else {
 3460|     88|		int strcmp_ret;
 3461|     89|string_cmp:
 3462|     89|		strcmp_ret = zend_binary_strcmp(s1->val, s1->len, s2->val, s2->len);
 3463|     89|		return ZEND_NORMALIZE_BOOL(strcmp_ret);
  ------------------
  |  |  544|     89|	((n) ? (((n)<0) ? -1 : 1) : 0)
  |  |  ------------------
  |  |  |  Branch (544:3): [True: 85, False: 4]
  |  |  |  Branch (544:10): [True: 31, False: 54]
  |  |  ------------------
  ------------------
 3464|     88|	}
 3465|    101|}
zend_compare_symbol_tables:
 3475|     10|{
 3476|     10|	if (ht1 == ht2) {
  ------------------
  |  Branch (3476:6): [True: 1, False: 9]
  ------------------
 3477|      1|		return 0;
 3478|      1|	}
 3479|       |
 3480|      9|	GC_TRY_ADDREF(ht1);
  ------------------
  |  |  722|      9|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 3481|      9|	GC_TRY_ADDREF(ht2);
  ------------------
  |  |  722|      9|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
 3482|       |
 3483|      9|	int ret = zend_hash_compare(ht1, ht2, (compare_func_t) hash_zval_compare_function, 0);
 3484|       |
 3485|      9|	GC_TRY_DTOR_NO_REF(ht1);
  ------------------
  |  |  746|      9|	do { \
  |  |  747|      9|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  748|      9|		if (!(_p->u.type_info & GC_IMMUTABLE)) { \
  |  |  ------------------
  |  |  |  |  801|      9|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  |  |  |  Branch (748:7): [True: 8, False: 1]
  |  |  ------------------
  |  |  749|      8|			if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (749:8): [True: 0, False: 8]
  |  |  ------------------
  |  |  750|      0|				rc_dtor_func((zend_refcounted *)_p); \
  |  |  751|      8|			} else { \
  |  |  752|      8|				gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  753|      8|			} \
  |  |  754|      8|		} \
  |  |  755|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (755:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 3486|      9|	GC_TRY_DTOR_NO_REF(ht2);
  ------------------
  |  |  746|      9|	do { \
  |  |  747|      9|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  748|      9|		if (!(_p->u.type_info & GC_IMMUTABLE)) { \
  |  |  ------------------
  |  |  |  |  801|      9|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  |  |  |  Branch (748:7): [True: 7, False: 2]
  |  |  ------------------
  |  |  749|      7|			if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (749:8): [True: 0, False: 7]
  |  |  ------------------
  |  |  750|      0|				rc_dtor_func((zend_refcounted *)_p); \
  |  |  751|      7|			} else { \
  |  |  752|      7|				gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  753|      7|			} \
  |  |  754|      7|		} \
  |  |  755|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (755:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 3487|       |
 3488|      9|	return ret;
 3489|     10|}
zend_compare_arrays:
 3493|     10|{
 3494|     10|	return zend_compare_symbol_tables(Z_ARRVAL_P(a1), Z_ARRVAL_P(a2));
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	return zend_compare_symbol_tables(Z_ARRVAL_P(a1), Z_ARRVAL_P(a2));
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3495|     10|}
zend_long_to_str:
 3513|  9.71k|{
 3514|  9.71k|	if ((zend_ulong)num <= 9) {
  ------------------
  |  Branch (3514:6): [True: 5.91k, False: 3.79k]
  ------------------
 3515|  5.91k|		return ZSTR_CHAR((zend_uchar)'0' + (zend_uchar)num);
 3516|  5.91k|	} else {
 3517|  3.79k|		char buf[MAX_LENGTH_OF_LONG + 1];
 3518|  3.79k|		char *res = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
 3519|  3.79k|		zend_string *str =  zend_string_init(res, buf + sizeof(buf) - 1 - res, 0);
 3520|  3.79k|		GC_ADD_FLAGS(str, IS_STR_VALID_UTF8);
  ------------------
  |  |  780|  3.79k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  3.79k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  3.79k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  3.79k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  3.79k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 3.79k]
  |  |  ------------------
  ------------------
 3521|  3.79k|		return str;
 3522|  3.79k|	}
 3523|  9.71k|}
zend_double_to_str:
 3597|  5.48k|{
 3598|  5.48k|	char buf[ZEND_DOUBLE_MAX_LENGTH];
 3599|       |	/* Model snprintf precision behavior. */
 3600|  5.48k|	int precision = (int) EG(precision);
  ------------------
  |  |   45|  5.48k|# define EG(v) (executor_globals.v)
  ------------------
 3601|  5.48k|	zend_gcvt(num, precision ? precision : 1, '.', 'E', buf);
  ------------------
  |  Branch (3601:17): [True: 5.48k, False: 0]
  ------------------
 3602|  5.48k|	zend_string *str =  zend_string_init(buf, strlen(buf), 0);
 3603|  5.48k|	if (UNEXPECTED(zend_isnan(num))) {
  ------------------
  |  |  457|  5.48k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 5.48k]
  |  |  ------------------
  ------------------
 3604|      2|		zend_nan_coerced_to_type_warning(IS_STRING);
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
 3605|      2|	}
 3606|  5.48k|	GC_ADD_FLAGS(str, IS_STR_VALID_UTF8);
  ------------------
  |  |  780|  5.48k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  5.48k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  5.48k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  5.48k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  5.48k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 5.48k]
  |  |  ------------------
  ------------------
 3607|  5.48k|	return str;
 3608|  5.48k|}
is_numeric_str_function:
 3611|    406|{
 3612|    406|	return is_numeric_string(ZSTR_VAL(str), ZSTR_LEN(str), lval, dval, false);
  ------------------
  |  |   67|    406|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	return is_numeric_string(ZSTR_VAL(str), ZSTR_LEN(str), lval, dval, false);
  ------------------
  |  |   68|    406|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3613|    406|}
_is_numeric_string_ex:
 3618|  3.71k|{
 3619|  3.71k|	const char *ptr;
 3620|  3.71k|	int digits = 0, dp_or_e = 0;
 3621|  3.71k|	double local_dval = 0.0;
 3622|  3.71k|	uint8_t type;
 3623|  3.71k|	zend_ulong tmp_lval = 0;
 3624|  3.71k|	int neg = 0;
 3625|       |
 3626|  3.71k|	if (!length) {
  ------------------
  |  Branch (3626:6): [True: 14, False: 3.70k]
  ------------------
 3627|     14|		return 0;
 3628|     14|	}
 3629|       |
 3630|  3.70k|	if (oflow_info != NULL) {
  ------------------
  |  Branch (3630:6): [True: 90, False: 3.61k]
  ------------------
 3631|     90|		*oflow_info = 0;
 3632|     90|	}
 3633|  3.70k|	if (trailing_data != NULL) {
  ------------------
  |  Branch (3633:6): [True: 3.17k, False: 531]
  ------------------
 3634|  3.17k|		*trailing_data = false;
 3635|  3.17k|	}
 3636|       |
 3637|       |	/* Skip any whitespace
 3638|       |	 * This is much faster than the isspace() function */
 3639|  3.71k|	while (*str == ' ' || *str == '\t' || *str == '\n' || *str == '\r' || *str == '\v' || *str == '\f') {
  ------------------
  |  Branch (3639:9): [True: 3, False: 3.71k]
  |  Branch (3639:24): [True: 0, False: 3.71k]
  |  Branch (3639:40): [True: 5, False: 3.70k]
  |  Branch (3639:56): [True: 4, False: 3.70k]
  |  Branch (3639:72): [True: 1, False: 3.70k]
  |  Branch (3639:88): [True: 2, False: 3.70k]
  ------------------
 3640|     15|		str++;
 3641|     15|		length--;
 3642|     15|	}
 3643|  3.70k|	ptr = str;
 3644|       |
 3645|  3.70k|	if (*ptr == '-') {
  ------------------
  |  Branch (3645:6): [True: 906, False: 2.79k]
  ------------------
 3646|    906|		neg = 1;
 3647|    906|		ptr++;
 3648|  2.79k|	} else if (*ptr == '+') {
  ------------------
  |  Branch (3648:13): [True: 4, False: 2.79k]
  ------------------
 3649|      4|		ptr++;
 3650|      4|	}
 3651|       |
 3652|  3.70k|	if (ZEND_IS_DIGIT(*ptr)) {
  ------------------
  |  |  172|  3.70k|#define ZEND_IS_DIGIT(c) ((c) >= '0' && (c) <= '9')
  |  |  ------------------
  |  |  |  Branch (172:27): [True: 3.42k, False: 274]
  |  |  |  Branch (172:41): [True: 3.42k, False: 3]
  |  |  ------------------
  ------------------
 3653|       |		/* Skip any leading 0s */
 3654|  4.99k|		while (*ptr == '0') {
  ------------------
  |  Branch (3654:10): [True: 1.57k, False: 3.42k]
  ------------------
 3655|  1.57k|			ptr++;
 3656|  1.57k|		}
 3657|       |
 3658|       |		/* Count the number of digits. If a decimal point/exponent is found,
 3659|       |		 * it's a double. Otherwise, if there's a dval or no need to check for
 3660|       |		 * a full match, stop when there are too many digits for a long */
 3661|  21.0k|		for (type = IS_LONG; !(digits >= MAX_LENGTH_OF_LONG && (dval || allow_errors)); digits++, ptr++) {
  ------------------
  |  |  610|  3.42k|#define IS_LONG						4
  ------------------
              		for (type = IS_LONG; !(digits >= MAX_LENGTH_OF_LONG && (dval || allow_errors)); digits++, ptr++) {
  ------------------
  |  |   96|  42.1k|# define MAX_LENGTH_OF_LONG 20
  ------------------
  |  Branch (3661:26): [True: 513, False: 20.5k]
  |  Branch (3661:59): [True: 513, False: 0]
  |  Branch (3661:67): [True: 0, False: 0]
  ------------------
 3662|  20.5k|check_digits:
 3663|  20.5k|			if (ZEND_IS_DIGIT(*ptr)) {
  ------------------
  |  |  172|  20.5k|#define ZEND_IS_DIGIT(c) ((c) >= '0' && (c) <= '9')
  |  |  ------------------
  |  |  |  Branch (172:27): [True: 18.0k, False: 2.57k]
  |  |  |  Branch (172:41): [True: 17.6k, False: 357]
  |  |  ------------------
  ------------------
 3664|  17.6k|				tmp_lval = tmp_lval * 10 + (*ptr) - '0';
 3665|  17.6k|				continue;
 3666|  17.6k|			} else if (*ptr == '.' && dp_or_e < 1) {
  ------------------
  |  Branch (3666:15): [True: 1.31k, False: 1.61k]
  |  Branch (3666:30): [True: 1.31k, False: 3]
  ------------------
 3667|  1.31k|				goto process_double;
 3668|  1.61k|			} else if ((*ptr == 'e' || *ptr == 'E') && dp_or_e < 2) {
  ------------------
  |  Branch (3668:16): [True: 11, False: 1.60k]
  |  Branch (3668:31): [True: 3, False: 1.60k]
  |  Branch (3668:47): [True: 14, False: 0]
  ------------------
 3669|     14|				const char *e = ptr + 1;
 3670|       |
 3671|     14|				if (*e == '-' || *e == '+') {
  ------------------
  |  Branch (3671:9): [True: 3, False: 11]
  |  Branch (3671:22): [True: 5, False: 6]
  ------------------
 3672|      8|					ptr = e++;
 3673|      8|				}
 3674|     14|				if (ZEND_IS_DIGIT(*e)) {
  ------------------
  |  |  172|     14|#define ZEND_IS_DIGIT(c) ((c) >= '0' && (c) <= '9')
  |  |  ------------------
  |  |  |  Branch (172:27): [True: 10, False: 4]
  |  |  |  Branch (172:41): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 3675|     10|					goto process_double;
 3676|     10|				}
 3677|     14|			}
 3678|       |
 3679|  1.60k|			break;
 3680|  20.5k|		}
 3681|       |
 3682|  2.11k|		if (digits >= MAX_LENGTH_OF_LONG) {
  ------------------
  |  |   96|  2.11k|# define MAX_LENGTH_OF_LONG 20
  ------------------
  |  Branch (3682:7): [True: 513, False: 1.60k]
  ------------------
 3683|    513|			if (oflow_info != NULL) {
  ------------------
  |  Branch (3683:8): [True: 1, False: 512]
  ------------------
 3684|      1|				*oflow_info = *str == '-' ? -1 : 1;
  ------------------
  |  Branch (3684:19): [True: 0, False: 1]
  ------------------
 3685|      1|			}
 3686|    513|			dp_or_e = -1;
 3687|    513|			goto process_double;
 3688|    513|		}
 3689|  2.11k|	} else if (*ptr == '.' && ZEND_IS_DIGIT(ptr[1])) {
  ------------------
  |  |  172|      6|#define ZEND_IS_DIGIT(c) ((c) >= '0' && (c) <= '9')
  |  |  ------------------
  |  |  |  Branch (172:27): [True: 4, False: 2]
  |  |  |  Branch (172:41): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (3689:13): [True: 6, False: 271]
  ------------------
 3690|  1.83k|process_double:
 3691|  1.83k|		type = IS_DOUBLE;
  ------------------
  |  |  611|  1.83k|#define IS_DOUBLE					5
  ------------------
 3692|       |
 3693|       |		/* If there's a dval, do the conversion; else continue checking
 3694|       |		 * the digits if we need to check for a full match */
 3695|  1.83k|		if (dval) {
  ------------------
  |  Branch (3695:7): [True: 1.82k, False: 16]
  ------------------
 3696|  1.82k|			local_dval = zend_strtod(str, &ptr);
 3697|  1.82k|		} else if (!allow_errors && dp_or_e != -1) {
  ------------------
  |  Branch (3697:14): [True: 16, False: 0]
  |  Branch (3697:31): [True: 16, False: 0]
  ------------------
 3698|     16|			dp_or_e = (*ptr++ == '.') ? 1 : 2;
  ------------------
  |  Branch (3698:14): [True: 12, False: 4]
  ------------------
 3699|     16|			goto check_digits;
 3700|     16|		}
 3701|  1.83k|	} else {
 3702|    275|		return 0;
 3703|    275|	}
 3704|       |
 3705|  3.42k|	if (ptr != str + length) {
  ------------------
  |  Branch (3705:6): [True: 2.20k, False: 1.22k]
  ------------------
 3706|  2.20k|		const char *endptr = ptr;
 3707|  2.28k|		while (*endptr == ' ' || *endptr == '\t' || *endptr == '\n' || *endptr == '\r' || *endptr == '\v' || *endptr == '\f') {
  ------------------
  |  Branch (3707:10): [True: 9, False: 2.27k]
  |  Branch (3707:28): [True: 68, False: 2.21k]
  |  Branch (3707:47): [True: 2, False: 2.20k]
  |  Branch (3707:66): [True: 0, False: 2.20k]
  |  Branch (3707:85): [True: 2, False: 2.20k]
  |  Branch (3707:104): [True: 6, False: 2.20k]
  ------------------
 3708|     87|			endptr++;
 3709|     87|			length--;
 3710|     87|		}
 3711|  2.20k|		if (ptr != str + length) {
  ------------------
  |  Branch (3711:7): [True: 2.20k, False: 0]
  ------------------
 3712|  2.20k|			if (!allow_errors) {
  ------------------
  |  Branch (3712:8): [True: 130, False: 2.07k]
  ------------------
 3713|    130|				return 0;
 3714|    130|			}
 3715|  2.07k|			if (trailing_data != NULL) {
  ------------------
  |  Branch (3715:8): [True: 2.06k, False: 3]
  ------------------
 3716|  2.06k|				*trailing_data = true;
 3717|  2.06k|			}
 3718|  2.07k|		}
 3719|  2.20k|	}
 3720|       |
 3721|  3.29k|	if (type == IS_LONG) {
  ------------------
  |  |  610|  3.29k|#define IS_LONG						4
  ------------------
  |  Branch (3721:6): [True: 1.55k, False: 1.74k]
  ------------------
 3722|  1.55k|		if (digits == MAX_LENGTH_OF_LONG - 1) {
  ------------------
  |  |   96|  1.55k|# define MAX_LENGTH_OF_LONG 20
  ------------------
  |  Branch (3722:7): [True: 30, False: 1.52k]
  ------------------
 3723|     30|			int cmp = strcmp(&ptr[-digits], long_min_digits);
 3724|       |
 3725|     30|			if (!(cmp < 0 || (cmp == 0 && *str == '-'))) {
  ------------------
  |  Branch (3725:10): [True: 18, False: 12]
  |  Branch (3725:22): [True: 7, False: 5]
  |  Branch (3725:34): [True: 3, False: 4]
  ------------------
 3726|      9|				if (dval) {
  ------------------
  |  Branch (3726:9): [True: 7, False: 2]
  ------------------
 3727|      7|					*dval = zend_strtod(str, NULL);
 3728|      7|				}
 3729|      9|				if (oflow_info != NULL) {
  ------------------
  |  Branch (3729:9): [True: 4, False: 5]
  ------------------
 3730|      4|					*oflow_info = *str == '-' ? -1 : 1;
  ------------------
  |  Branch (3730:20): [True: 0, False: 4]
  ------------------
 3731|      4|				}
 3732|       |
 3733|      9|				return IS_DOUBLE;
  ------------------
  |  |  611|      9|#define IS_DOUBLE					5
  ------------------
 3734|      9|			}
 3735|     30|		}
 3736|       |
 3737|  1.54k|		if (lval) {
  ------------------
  |  Branch (3737:7): [True: 1.53k, False: 4]
  ------------------
 3738|  1.53k|			if (neg) {
  ------------------
  |  Branch (3738:8): [True: 546, False: 991]
  ------------------
 3739|    546|				tmp_lval = -tmp_lval;
 3740|    546|			}
 3741|  1.53k|			*lval = (zend_long) tmp_lval;
 3742|  1.53k|		}
 3743|       |
 3744|  1.54k|		return IS_LONG;
  ------------------
  |  |  610|  1.54k|#define IS_LONG						4
  ------------------
 3745|  1.74k|	} else {
 3746|  1.74k|		if (dval) {
  ------------------
  |  Branch (3746:7): [True: 1.73k, False: 9]
  ------------------
 3747|  1.73k|			*dval = local_dval;
 3748|  1.73k|		}
 3749|       |
 3750|  1.74k|		return IS_DOUBLE;
  ------------------
  |  |  611|  1.74k|#define IS_DOUBLE					5
  ------------------
 3751|  1.74k|	}
 3752|  3.29k|}
zend_dval_to_lval_slow:
 3867|    973|{
 3868|    973|	double	two_pow_64 = pow(2., 64.),
 3869|    973|			dmod;
 3870|       |
 3871|    973|	dmod = fmod(d, two_pow_64);
 3872|    973|	if (dmod < 0) {
  ------------------
  |  Branch (3872:6): [True: 305, False: 668]
  ------------------
 3873|       |		/* no need to call ceil; original double must have had no
 3874|       |		 * fractional part, hence dmod does not have one either */
 3875|    305|		dmod += two_pow_64;
 3876|    305|	}
 3877|    973|	return (zend_long)(zend_ulong)dmod;
 3878|    973|}
zend_operators.c:zendi_try_get_long:
  378|  6.25k|{
  379|  6.25k|	*failed = false;
  380|  6.25k|try_again:
  381|  6.25k|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|  6.25k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  6.25k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  382|    684|		case IS_NULL:
  ------------------
  |  |  607|    684|#define IS_NULL						1
  ------------------
  |  Branch (382:3): [True: 684, False: 5.57k]
  ------------------
  383|  1.16k|		case IS_FALSE:
  ------------------
  |  |  608|  1.16k|#define IS_FALSE					2
  ------------------
  |  Branch (383:3): [True: 479, False: 5.77k]
  ------------------
  384|  1.16k|			return 0;
  385|    139|		case IS_TRUE:
  ------------------
  |  |  609|    139|#define IS_TRUE						3
  ------------------
  |  Branch (385:3): [True: 139, False: 6.11k]
  ------------------
  386|    139|			return 1;
  387|  4.80k|		case IS_DOUBLE: {
  ------------------
  |  |  611|  4.80k|#define IS_DOUBLE					5
  ------------------
  |  Branch (387:3): [True: 4.80k, False: 1.45k]
  ------------------
  388|  4.80k|			double dval = Z_DVAL_P(op);
  ------------------
  |  |  979|  4.80k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|  4.80k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  389|  4.80k|			zend_long lval = zend_dval_to_lval_safe(dval);
  390|  4.80k|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|  4.80k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.80k]
  |  |  ------------------
  ------------------
  391|      0|				*failed = true;
  392|      0|			}
  393|  4.80k|			return lval;
  394|    684|		}
  395|    143|		case IS_STRING:
  ------------------
  |  |  612|    143|#define IS_STRING					6
  ------------------
  |  Branch (395:3): [True: 143, False: 6.11k]
  ------------------
  396|    143|			{
  397|    143|				uint8_t type;
  398|    143|				zend_long lval;
  399|    143|				double dval;
  400|    143|				bool trailing_data = false;
  401|    143|				zend_string *op_str = NULL; /* protect against error handlers */
  402|       |
  403|       |				/* For BC reasons we allow errors so that we can warn on leading numeric string */
  404|    143|				type = is_numeric_string_ex(Z_STRVAL_P(op), Z_STRLEN_P(op), &lval, &dval,
  ------------------
  |  |  985|    143|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    143|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    143|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				type = is_numeric_string_ex(Z_STRVAL_P(op), Z_STRLEN_P(op), &lval, &dval,
  ------------------
  |  |  988|    143|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    143|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    143|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  405|    143|					/* allow errors */ true, NULL, &trailing_data);
  406|    143|				if (type == 0) {
  ------------------
  |  Branch (406:9): [True: 12, False: 131]
  ------------------
  407|     12|					*failed = true;
  408|     12|					return 0;
  409|     12|				}
  410|    131|				if (UNEXPECTED(trailing_data)) {
  ------------------
  |  |  457|    131|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 122]
  |  |  ------------------
  ------------------
  411|      9|					if (type != IS_LONG) {
  ------------------
  |  |  610|      9|#define IS_LONG						4
  ------------------
  |  Branch (411:10): [True: 2, False: 7]
  ------------------
  412|      2|						op_str = zend_string_copy(Z_STR_P(op));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  413|      2|					}
  414|      9|					zend_error(E_WARNING, "A non-numeric value encountered");
  ------------------
  |  |   23|      9|#define E_WARNING			(1<<1L)
  ------------------
  415|      9|					if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  416|      0|						*failed = true;
  417|      0|						zend_tmp_string_release(op_str);
  418|      0|						return 0;
  419|      0|					}
  420|      9|				}
  421|    131|				if (EXPECTED(type == IS_LONG)) {
  ------------------
  |  |  456|    131|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 124, False: 7]
  |  |  ------------------
  ------------------
  422|    124|					return lval;
  423|    124|				} else {
  424|       |					/* Previously we used strtol here, not is_numeric_string,
  425|       |					 * and strtol gives you LONG_MAX/_MIN on overflow.
  426|       |					 * We use use saturating conversion to emulate strtol()'s
  427|       |					 * behaviour.
  428|       |					 */
  429|      7|					lval = zend_dval_to_lval_cap(dval);
  430|      7|					if (!zend_is_long_compatible(dval, lval)) {
  ------------------
  |  Branch (430:10): [True: 5, False: 2]
  ------------------
  431|      5|						zend_incompatible_string_to_long_error(op_str ? op_str : Z_STR_P(op));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (431:46): [True: 2, False: 3]
  ------------------
  432|      5|						if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  433|      0|							*failed = true;
  434|      0|						}
  435|      5|					}
  436|      7|					zend_tmp_string_release(op_str);
  437|      7|					return lval;
  438|      7|				}
  439|    131|			}
  440|      3|		case IS_OBJECT:
  ------------------
  |  |  614|      3|#define IS_OBJECT					8
  ------------------
  |  Branch (440:3): [True: 3, False: 6.25k]
  ------------------
  441|      3|			{
  442|      3|				zval dst;
  443|      3|				if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &dst, IS_LONG) == FAILURE
  ------------------
  |  | 1003|      3|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      3|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &dst, IS_LONG) == FAILURE
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              				if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &dst, IS_LONG) == FAILURE
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
  |  Branch (443:9): [True: 3, False: 0]
  ------------------
  444|      3|						|| EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  445|      3|					*failed = true;
  446|      3|					return 0;
  447|      3|				}
  448|      0|				ZEND_ASSERT(Z_TYPE(dst) == IS_LONG);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (448:5): [True: 0, False: 0]
  |  Branch (448:5): [True: 0, False: 0]
  ------------------
  449|      0|				return Z_LVAL(dst);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  450|      0|			}
  451|      0|		case IS_UNDEF:
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (451:3): [True: 0, False: 6.25k]
  ------------------
  452|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (452:3): [True: 0, False: 6.25k]
  ------------------
  453|      4|		case IS_ARRAY:
  ------------------
  |  |  613|      4|#define IS_ARRAY					7
  ------------------
  |  Branch (453:3): [True: 4, False: 6.25k]
  ------------------
  454|      4|			*failed = true;
  455|      4|			return 0;
  456|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (456:3): [True: 0, False: 6.25k]
  ------------------
  457|      0|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  458|      0|			if (Z_TYPE_P(op) == IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op) == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (458:8): [True: 0, False: 0]
  ------------------
  459|      0|				return Z_LVAL_P(op);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  460|      0|			} else {
  461|      0|				goto try_again;
  462|      0|			}
  463|      0|			break;
  464|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (464:3): [True: 0, False: 6.25k]
  |  Branch (464:12): [Folded, False: 0]
  |  Branch (464:12): [Folded, False: 0]
  ------------------
  465|  6.25k|	}
  466|  6.25k|}
zend_operators.c:__zval_get_string_func:
 1063|  37.0k|{
 1064|  39.3k|try_again:
 1065|  39.3k|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|  39.3k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  39.3k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 1066|  13.4k|		case IS_UNDEF:
  ------------------
  |  |  606|  13.4k|#define IS_UNDEF					0
  ------------------
  |  Branch (1066:3): [True: 13.4k, False: 25.9k]
  ------------------
 1067|  19.7k|		case IS_NULL:
  ------------------
  |  |  607|  19.7k|#define IS_NULL						1
  ------------------
  |  Branch (1067:3): [True: 6.32k, False: 33.0k]
  ------------------
 1068|  19.7k|		case IS_FALSE:
  ------------------
  |  |  608|  19.7k|#define IS_FALSE					2
  ------------------
  |  Branch (1068:3): [True: 39, False: 39.3k]
  ------------------
 1069|  19.7k|			return ZSTR_EMPTY_ALLOC();
 1070|    274|		case IS_TRUE:
  ------------------
  |  |  609|    274|#define IS_TRUE						3
  ------------------
  |  Branch (1070:3): [True: 274, False: 39.1k]
  ------------------
 1071|    274|			return ZSTR_CHAR('1');
 1072|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (1072:3): [True: 0, False: 39.3k]
  ------------------
 1073|      0|			return zend_strpprintf(0, "Resource id #" ZEND_LONG_FMT, (zend_long)Z_RES_HANDLE_P(op));
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
              			return zend_strpprintf(0, "Resource id #" ZEND_LONG_FMT, (zend_long)Z_RES_HANDLE_P(op));
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1074|  9.13k|		case IS_LONG:
  ------------------
  |  |  610|  9.13k|#define IS_LONG						4
  ------------------
  |  Branch (1074:3): [True: 9.13k, False: 30.2k]
  ------------------
 1075|  9.13k|			return zend_long_to_str(Z_LVAL_P(op));
  ------------------
  |  |  976|  9.13k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  9.13k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1076|  5.24k|		case IS_DOUBLE:
  ------------------
  |  |  611|  5.24k|#define IS_DOUBLE					5
  ------------------
  |  Branch (1076:3): [True: 5.24k, False: 34.1k]
  ------------------
 1077|  5.24k|			return zend_double_to_str(Z_DVAL_P(op));
  ------------------
  |  |  979|  5.24k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|  5.24k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 1078|     27|		case IS_ARRAY:
  ------------------
  |  |  613|     27|#define IS_ARRAY					7
  ------------------
  |  Branch (1078:3): [True: 27, False: 39.3k]
  ------------------
 1079|     27|			zend_error(E_WARNING, "Array to string conversion");
  ------------------
  |  |   23|     27|#define E_WARNING			(1<<1L)
  ------------------
 1080|     27|			return (try && UNEXPECTED(EG(exception))) ?
  ------------------
  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  |  Branch (1080:12): [True: 17, False: 10]
  ------------------
 1081|     27|				NULL : ZSTR_KNOWN(ZEND_STR_ARRAY_CAPITALIZED);
 1082|  2.57k|		case IS_OBJECT: {
  ------------------
  |  |  614|  2.57k|#define IS_OBJECT					8
  ------------------
  |  Branch (1082:3): [True: 2.57k, False: 36.8k]
  ------------------
 1083|  2.57k|			zval tmp;
 1084|  2.57k|			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &tmp, IS_STRING) == SUCCESS) {
  ------------------
  |  | 1003|  2.57k|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|  2.57k|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  2.57k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &tmp, IS_STRING) == SUCCESS) {
  ------------------
  |  | 1000|  2.57k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  2.57k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), &tmp, IS_STRING) == SUCCESS) {
  ------------------
  |  |  612|  2.57k|#define IS_STRING					6
  ------------------
  |  Branch (1084:8): [True: 60, False: 2.51k]
  ------------------
 1085|     60|				return Z_STR(tmp);
  ------------------
  |  |  981|     60|#define Z_STR(zval)					(zval).value.str
  ------------------
 1086|     60|			}
 1087|  2.51k|			if (!EG(exception)) {
  ------------------
  |  |   45|  2.51k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1087:8): [True: 532, False: 1.98k]
  ------------------
 1088|    532|				zend_throw_error(NULL, "Object of class %s could not be converted to string", ZSTR_VAL(Z_OBJCE_P(op)->name));
  ------------------
  |  |   67|    532|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1089|    532|			}
 1090|  2.51k|			return try ? NULL : ZSTR_EMPTY_ALLOC();
  ------------------
  |  Branch (1090:11): [True: 8, False: 2.51k]
  ------------------
 1091|  2.57k|		}
 1092|  2.31k|		case IS_REFERENCE:
  ------------------
  |  |  616|  2.31k|#define IS_REFERENCE				10
  ------------------
  |  Branch (1092:3): [True: 2.31k, False: 37.0k]
  ------------------
 1093|  2.31k|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|  2.31k|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|  2.31k|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|  2.31k|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|  2.31k|			goto try_again;
 1095|     25|		case IS_STRING:
  ------------------
  |  |  612|     25|#define IS_STRING					6
  ------------------
  |  Branch (1095:3): [True: 25, False: 39.3k]
  ------------------
 1096|     25|			return zend_string_copy(Z_STR_P(op));
  ------------------
  |  |  982|     25|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     25|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1097|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1097:3): [True: 0, False: 39.3k]
  |  Branch (1097:12): [Folded, False: 0]
  |  Branch (1097:12): [Folded, False: 0]
  ------------------
 1098|  39.3k|	}
 1099|      0|	return NULL;
 1100|  39.3k|}
zend_operators.c:add_function_fast:
 1141|  7.75k|{
 1142|  7.75k|	uint8_t type_pair = TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2));
  ------------------
  |  |   60|  7.75k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
 1143|       |
 1144|  7.75k|	if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_LONG))) {
  ------------------
  |  |  456|  7.75k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.46k, False: 6.28k]
  |  |  ------------------
  ------------------
 1145|  1.46k|		fast_long_add_function(result, op1, op2);
 1146|  1.46k|		return SUCCESS;
 1147|  6.28k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_DOUBLE))) {
  ------------------
  |  |  456|  6.28k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.28k, False: 5.00k]
  |  |  ------------------
  ------------------
 1148|  1.28k|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
  ------------------
  |  | 1082|  1.28k|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|  1.28k|		zval *__z = (z);				\
  |  | 1084|  1.28k|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|  1.28k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|  1.28k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|  1.28k|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|  1.28k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.28k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|  1.28k|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|  1.28k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1.28k]
  |  |  ------------------
  ------------------
 1149|  1.28k|		return SUCCESS;
 1150|  5.00k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_DOUBLE))) {
  ------------------
  |  |  456|  5.00k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 492, False: 4.50k]
  |  |  ------------------
  ------------------
 1151|    492|		ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
  ------------------
  |  | 1082|    492|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    492|		zval *__z = (z);				\
  |  | 1084|    492|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    492|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    492|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    492|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    492|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    492|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    492|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    492|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 492]
  |  |  ------------------
  ------------------
 1152|    492|		return SUCCESS;
 1153|  4.50k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_LONG))) {
  ------------------
  |  |  456|  4.50k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 406, False: 4.10k]
  |  |  ------------------
  ------------------
 1154|    406|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
  ------------------
  |  | 1082|    406|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    406|		zval *__z = (z);				\
  |  | 1084|    406|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    406|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    406|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    406|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    406|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    406|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    406|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    406|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 406]
  |  |  ------------------
  ------------------
 1155|    406|		return SUCCESS;
 1156|  4.10k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_ARRAY, IS_ARRAY))) {
  ------------------
  |  |  456|  4.10k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 4.09k]
  |  |  ------------------
  ------------------
 1157|     11|		add_function_array(result, op1, op2);
 1158|     11|		return SUCCESS;
 1159|  4.09k|	} else {
 1160|  4.09k|		return FAILURE;
 1161|  4.09k|	}
 1162|  7.75k|} /* }}} */
zend_operators.c:add_function_array:
 1126|     11|{
 1127|     11|	if (result == op1 && Z_ARR_P(op1) == Z_ARR_P(op2)) {
  ------------------
  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
              	if (result == op1 && Z_ARR_P(op1) == Z_ARR_P(op2)) {
  ------------------
  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (1127:6): [True: 8, False: 3]
  |  Branch (1127:23): [True: 1, False: 7]
  ------------------
 1128|       |		/* $a += $a */
 1129|      1|		return;
 1130|      1|	}
 1131|     10|	if (result != op1) {
  ------------------
  |  Branch (1131:6): [True: 3, False: 7]
  ------------------
 1132|      3|		ZVAL_ARR(result, zend_array_dup(Z_ARR_P(op1)));
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1133|      7|	} else {
 1134|      7|		SEPARATE_ARRAY(result);
  ------------------
  |  | 1536|      7|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      7|		zval *__zv = (zv);								\
  |  | 1538|      7|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      7|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      7|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 5, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      5|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      5|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      5|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      5|		zval *__z = (z);						\
  |  |  |  | 1128|      5|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      5|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      5|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      5|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      5|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      5|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      5|		}												\
  |  | 1543|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1135|      7|	}
 1136|     10|	zend_hash_merge(Z_ARRVAL_P(result), Z_ARRVAL_P(op2), zval_add_ref, 0);
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	zend_hash_merge(Z_ARRVAL_P(result), Z_ARRVAL_P(op2), zval_add_ref, 0);
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1137|     10|}
zend_operators.c:add_function_slow:
 1165|  2.05k|{
 1166|  2.05k|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|  2.05k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.05k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.05k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 13, False: 2.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|     13|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|     13|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     13|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     13|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|     13|		}												\
  |  | 1478|  2.05k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.05k]
  |  |  ------------------
  ------------------
 1167|  2.05k|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|  2.05k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.05k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.05k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 12, False: 2.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|     12|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|     12|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     12|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     12|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|     12|		}												\
  |  | 1478|  2.05k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.05k]
  |  |  ------------------
  ------------------
 1168|  2.05k|	if (add_function_fast(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1168:6): [True: 11, False: 2.04k]
  ------------------
 1169|     11|		return SUCCESS;
 1170|     11|	}
 1171|       |
 1172|  2.05k|	ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_ADD);
  ------------------
  |  |  494|  2.04k|	ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode) \
  |  |  ------------------
  |  |  |  |  479|  2.04k|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  4.08k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|  2.04k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  495|  2.04k|	else \
  |  |  496|  2.04k|	ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode)
  |  |  ------------------
  |  |  |  |  487|  2.04k|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  4.08k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|  2.04k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.04k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|  2.04k|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  ------------------
 1173|       |
 1174|  2.04k|	zval op1_copy, op2_copy;
 1175|  2.04k|	if (UNEXPECTED(zendi_try_convert_scalar_to_number(op1, &op1_copy) == FAILURE)
  ------------------
  |  |  457|  4.08k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 2.02k]
  |  |  ------------------
  ------------------
 1176|  2.02k|			|| UNEXPECTED(zendi_try_convert_scalar_to_number(op2, &op2_copy) == FAILURE)) {
  ------------------
  |  |  457|  2.02k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 2.02k]
  |  |  ------------------
  ------------------
 1177|     20|		zend_binop_error("+", op1, op2);
 1178|     20|		if (result != op1) {
  ------------------
  |  Branch (1178:7): [True: 13, False: 7]
  ------------------
 1179|     13|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     13|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     13|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     13|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
 1180|     13|		}
 1181|     20|		return FAILURE;
 1182|     20|	}
 1183|       |
 1184|  2.02k|	if (result == op1) {
  ------------------
  |  Branch (1184:6): [True: 1.33k, False: 690]
  ------------------
 1185|  1.33k|		zval_ptr_dtor(result);
 1186|  1.33k|	}
 1187|       |
 1188|  2.02k|	if (add_function_fast(result, &op1_copy, &op2_copy) == SUCCESS) {
  ------------------
  |  Branch (1188:6): [True: 2.02k, False: 0]
  ------------------
 1189|  2.02k|		return SUCCESS;
 1190|  2.02k|	}
 1191|       |
 1192|      0|	ZEND_ASSERT(0 && "Operation must succeed");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1192:2): [Folded, False: 0]
  |  Branch (1192:2): [True: 0, False: 0]
  |  Branch (1192:2): [Folded, False: 0]
  |  Branch (1192:2): [True: 0, False: 0]
  ------------------
 1193|      0|	return FAILURE;
 1194|      0|} /* }}} */
zend_operators.c:sub_function_fast:
 1207|  8.01k|{
 1208|  8.01k|	uint8_t type_pair = TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2));
  ------------------
  |  |   60|  8.01k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
 1209|       |
 1210|  8.01k|	if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_LONG))) {
  ------------------
  |  |  456|  8.01k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.31k, False: 6.69k]
  |  |  ------------------
  ------------------
 1211|  1.31k|		fast_long_sub_function(result, op1, op2);
 1212|  1.31k|		return SUCCESS;
 1213|  6.69k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_DOUBLE))) {
  ------------------
  |  |  456|  6.69k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 242, False: 6.45k]
  |  |  ------------------
  ------------------
 1214|    242|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
  ------------------
  |  | 1082|    242|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    242|		zval *__z = (z);				\
  |  | 1084|    242|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    242|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    242|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    242|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    242|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    242|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    242|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    242|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 242]
  |  |  ------------------
  ------------------
 1215|    242|		return SUCCESS;
 1216|  6.45k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_DOUBLE))) {
  ------------------
  |  |  456|  6.45k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.07k, False: 5.37k]
  |  |  ------------------
  ------------------
 1217|  1.07k|		ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
  ------------------
  |  | 1082|  1.07k|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|  1.07k|		zval *__z = (z);				\
  |  | 1084|  1.07k|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|  1.07k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|  1.07k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|  1.07k|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|  1.07k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.07k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|  1.07k|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|  1.07k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1.07k]
  |  |  ------------------
  ------------------
 1218|  1.07k|		return SUCCESS;
 1219|  5.37k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_LONG))) {
  ------------------
  |  |  456|  5.37k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 412, False: 4.96k]
  |  |  ------------------
  ------------------
 1220|    412|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
  ------------------
  |  | 1082|    412|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    412|		zval *__z = (z);				\
  |  | 1084|    412|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    412|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    412|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    412|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    412|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    412|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    412|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    412|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 412]
  |  |  ------------------
  ------------------
 1221|    412|		return SUCCESS;
 1222|  4.96k|	} else {
 1223|  4.96k|		return FAILURE;
 1224|  4.96k|	}
 1225|  8.01k|}
zend_operators.c:sub_function_slow:
 1229|  2.48k|{
 1230|  2.48k|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|  2.48k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.48k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.48k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  2.48k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.48k]
  |  |  ------------------
  ------------------
 1231|  2.48k|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|  2.48k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  2.48k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  2.48k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  2.48k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2.48k]
  |  |  ------------------
  ------------------
 1232|  2.48k|	if (sub_function_fast(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1232:6): [True: 0, False: 2.48k]
  ------------------
 1233|      0|		return SUCCESS;
 1234|      0|	}
 1235|       |
 1236|  2.48k|	ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_SUB);
  ------------------
  |  |  494|  2.48k|	ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode) \
  |  |  ------------------
  |  |  |  |  479|  2.48k|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  4.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2.48k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|  2.48k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  495|  2.48k|	else \
  |  |  496|  2.48k|	ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode)
  |  |  ------------------
  |  |  |  |  487|  2.48k|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  4.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.48k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|  2.48k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.48k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|  2.48k|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  ------------------
 1237|       |
 1238|  2.48k|	zval op1_copy, op2_copy;
 1239|  2.48k|	if (UNEXPECTED(zendi_try_convert_scalar_to_number(op1, &op1_copy) == FAILURE)
  ------------------
  |  |  457|  4.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 2.47k]
  |  |  ------------------
  ------------------
 1240|  2.47k|			|| UNEXPECTED(zendi_try_convert_scalar_to_number(op2, &op2_copy) == FAILURE)) {
  ------------------
  |  |  457|  2.47k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2.47k]
  |  |  ------------------
  ------------------
 1241|      7|		zend_binop_error("-", op1, op2);
 1242|      7|		if (result != op1) {
  ------------------
  |  Branch (1242:7): [True: 7, False: 0]
  ------------------
 1243|      7|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      7|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      7|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1244|      7|		}
 1245|      7|		return FAILURE;
 1246|      7|	}
 1247|       |
 1248|  2.47k|	if (result == op1) {
  ------------------
  |  Branch (1248:6): [True: 670, False: 1.80k]
  ------------------
 1249|    670|		zval_ptr_dtor(result);
 1250|    670|	}
 1251|       |
 1252|  2.47k|	if (sub_function_fast(result, &op1_copy, &op2_copy) == SUCCESS) {
  ------------------
  |  Branch (1252:6): [True: 2.47k, False: 0]
  ------------------
 1253|  2.47k|		return SUCCESS;
 1254|  2.47k|	}
 1255|       |
 1256|      0|	ZEND_ASSERT(0 && "Operation must succeed");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1256:2): [Folded, False: 0]
  |  Branch (1256:2): [True: 0, False: 0]
  |  Branch (1256:2): [Folded, False: 0]
  |  Branch (1256:2): [True: 0, False: 0]
  ------------------
 1257|      0|	return FAILURE;
 1258|      0|}
zend_operators.c:mul_function_fast:
 1272|  4.25k|{
 1273|  4.25k|	uint8_t type_pair = TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2));
  ------------------
  |  |   60|  4.25k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
 1274|       |
 1275|  4.25k|	if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_LONG))) {
  ------------------
  |  |  456|  4.25k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 873, False: 3.37k]
  |  |  ------------------
  ------------------
 1276|    873|		zend_long overflow;
 1277|    873|		ZEND_SIGNED_MULTIPLY_LONG(
  ------------------
  |  |   26|    873|#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
  |  |   27|    873|	long __tmpvar;		 											\
  |  |   28|    873|	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
  |  |  ------------------
  |  |  |  Branch (28:6): [True: 13, False: 860]
  |  |  ------------------
  |  |   29|     13|		(dval) = (double) (a) * (double) (b);						\
  |  |   30|     13|	}																\
  |  |   31|    873|	else (lval) = __tmpvar;											\
  |  |   32|    873|} while (0)
  |  |  ------------------
  |  |  |  Branch (32:10): [Folded, False: 873]
  |  |  ------------------
  ------------------
 1278|    873|			Z_LVAL_P(op1), Z_LVAL_P(op2),
 1279|    873|			Z_LVAL_P(result), Z_DVAL_P(result), overflow);
 1280|    873|		Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  678|    873|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    873|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  611|     13|#define IS_DOUBLE					5
  ------------------
              		Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  610|  1.73k|#define IS_LONG						4
  ------------------
  |  Branch (1280:27): [True: 13, False: 860]
  ------------------
 1281|    873|		return SUCCESS;
 1282|  3.37k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_DOUBLE))) {
  ------------------
  |  |  456|  3.37k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 25, False: 3.35k]
  |  |  ------------------
  ------------------
 1283|     25|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
  ------------------
  |  | 1082|     25|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     25|		zval *__z = (z);				\
  |  | 1084|     25|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     25|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     25|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     25|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     25|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
 1284|     25|		return SUCCESS;
 1285|  3.35k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_DOUBLE))) {
  ------------------
  |  |  456|  3.35k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 23, False: 3.32k]
  |  |  ------------------
  ------------------
 1286|     23|		ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
  ------------------
  |  | 1082|     23|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     23|		zval *__z = (z);				\
  |  | 1084|     23|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     23|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     23|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     23|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     23|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
 1287|     23|		return SUCCESS;
 1288|  3.32k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_LONG))) {
  ------------------
  |  |  456|  3.32k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 743, False: 2.58k]
  |  |  ------------------
  ------------------
 1289|    743|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
  ------------------
  |  | 1082|    743|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    743|		zval *__z = (z);				\
  |  | 1084|    743|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    743|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    743|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    743|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    743|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    743|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    743|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    743|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 743]
  |  |  ------------------
  ------------------
 1290|    743|		return SUCCESS;
 1291|  2.58k|	} else {
 1292|  2.58k|		return FAILURE;
 1293|  2.58k|	}
 1294|  4.25k|}
zend_operators.c:mul_function_slow:
 1298|  1.29k|{
 1299|  1.29k|	ZVAL_DEREF(op1);
  ------------------
  |  | 1474|  1.29k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.29k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.29k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.29k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  1.29k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.29k]
  |  |  ------------------
  ------------------
 1300|  1.29k|	ZVAL_DEREF(op2);
  ------------------
  |  | 1474|  1.29k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.29k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.29k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.29k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  1.29k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.29k]
  |  |  ------------------
  ------------------
 1301|  1.29k|	if (mul_function_fast(result, op1, op2) == SUCCESS) {
  ------------------
  |  Branch (1301:6): [True: 0, False: 1.29k]
  ------------------
 1302|      0|		return SUCCESS;
 1303|      0|	}
 1304|       |
 1305|  1.29k|	ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_MUL);
  ------------------
  |  |  494|  1.29k|	ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(opcode) \
  |  |  ------------------
  |  |  |  |  479|  1.29k|	if (UNEXPECTED(Z_TYPE_P(op1) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.58k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.29k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  480|  1.29k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op1, do_operation))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  481|      0|		if (EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op1, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  482|      0|			return SUCCESS; \
  |  |  |  |  483|      0|		} \
  |  |  |  |  484|      0|	}
  |  |  ------------------
  |  |  495|  1.29k|	else \
  |  |  496|  1.29k|	ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(opcode)
  |  |  ------------------
  |  |  |  |  487|  1.29k|	if (UNEXPECTED(Z_TYPE_P(op2) == IS_OBJECT) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.58k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.29k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  488|  1.29k|		&& UNEXPECTED(Z_OBJ_HANDLER_P(op2, do_operation)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  1.29k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  489|  1.29k|		&& EXPECTED(SUCCESS == Z_OBJ_HANDLER_P(op2, do_operation)(opcode, result, op1, op2))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|		return SUCCESS; \
  |  |  |  |  491|      0|	}
  |  |  ------------------
  ------------------
 1306|       |
 1307|  1.29k|	zval op1_copy, op2_copy;
 1308|  1.29k|	if (UNEXPECTED(zendi_try_convert_scalar_to_number(op1, &op1_copy) == FAILURE)
  ------------------
  |  |  457|  2.58k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 1.28k]
  |  |  ------------------
  ------------------
 1309|  1.28k|			|| UNEXPECTED(zendi_try_convert_scalar_to_number(op2, &op2_copy) == FAILURE)) {
  ------------------
  |  |  457|  1.28k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1.28k]
  |  |  ------------------
  ------------------
 1310|     12|		zend_binop_error("*", op1, op2);
 1311|     12|		if (result != op1) {
  ------------------
  |  Branch (1311:7): [True: 12, False: 0]
  ------------------
 1312|     12|			ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     12|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     12|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     12|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1313|     12|		}
 1314|     12|		return FAILURE;
 1315|     12|	}
 1316|       |
 1317|  1.28k|	if (result == op1) {
  ------------------
  |  Branch (1317:6): [True: 19, False: 1.26k]
  ------------------
 1318|     19|		zval_ptr_dtor(result);
 1319|     19|	}
 1320|       |
 1321|  1.28k|	if (mul_function_fast(result, &op1_copy, &op2_copy) == SUCCESS) {
  ------------------
  |  Branch (1321:6): [True: 1.28k, False: 0]
  ------------------
 1322|  1.28k|		return SUCCESS;
 1323|  1.28k|	}
 1324|       |
 1325|      0|	ZEND_ASSERT(0 && "Operation must succeed");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1325:2): [Folded, False: 0]
  |  Branch (1325:2): [True: 0, False: 0]
  |  Branch (1325:2): [Folded, False: 0]
  |  Branch (1325:2): [True: 0, False: 0]
  ------------------
 1326|      0|	return FAILURE;
 1327|      0|}
zend_operators.c:pow_function_base:
 1355|    103|{
 1356|    103|	uint8_t type_pair = TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2));
  ------------------
  |  |   60|    103|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
 1357|       |
 1358|    103|	if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_LONG))) {
  ------------------
  |  |  456|    103|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 64, False: 39]
  |  |  ------------------
  ------------------
 1359|     64|		if (Z_LVAL_P(op2) >= 0) {
  ------------------
  |  |  976|     64|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     64|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1359:7): [True: 59, False: 5]
  ------------------
 1360|     59|			zend_long l1 = 1, l2 = Z_LVAL_P(op1), i = Z_LVAL_P(op2);
  ------------------
  |  |  976|     59|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     59|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              			zend_long l1 = 1, l2 = Z_LVAL_P(op1), i = Z_LVAL_P(op2);
  ------------------
  |  |  976|     59|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     59|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1361|       |
 1362|     59|			if (i == 0) {
  ------------------
  |  Branch (1362:8): [True: 8, False: 51]
  ------------------
 1363|      8|				ZVAL_LONG(result, 1L);
  ------------------
  |  | 1076|      8|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      8|		zval *__z = (z);				\
  |  | 1078|      8|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      8|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      8|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1364|      8|				return SUCCESS;
 1365|     51|			} else if (l2 == 0) {
  ------------------
  |  Branch (1365:15): [True: 3, False: 48]
  ------------------
 1366|      3|				ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      3|		zval *__z = (z);				\
  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1367|      3|				return SUCCESS;
 1368|      3|			}
 1369|       |
 1370|    239|			while (i >= 1) {
  ------------------
  |  Branch (1370:11): [True: 214, False: 25]
  ------------------
 1371|    214|				zend_long overflow;
 1372|    214|				double dval = 0.0;
 1373|       |
 1374|    214|				if (i % 2) {
  ------------------
  |  Branch (1374:9): [True: 71, False: 143]
  ------------------
 1375|     71|					--i;
 1376|     71|					ZEND_SIGNED_MULTIPLY_LONG(l1, l2, l1, dval, overflow);
  ------------------
  |  |   26|     71|#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
  |  |   27|     71|	long __tmpvar;		 											\
  |  |   28|     71|	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
  |  |  ------------------
  |  |  |  Branch (28:6): [True: 0, False: 71]
  |  |  ------------------
  |  |   29|      0|		(dval) = (double) (a) * (double) (b);						\
  |  |   30|      0|	}																\
  |  |   31|     71|	else (lval) = __tmpvar;											\
  |  |   32|     71|} while (0)
  |  |  ------------------
  |  |  |  Branch (32:10): [Folded, False: 71]
  |  |  ------------------
  ------------------
 1377|     71|					if (overflow) {
  ------------------
  |  Branch (1377:10): [True: 0, False: 71]
  ------------------
 1378|      0|						ZVAL_DOUBLE(result, dval * safe_pow(l2, i));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1379|      0|						return SUCCESS;
 1380|      0|					}
 1381|    143|				} else {
 1382|    143|					i /= 2;
 1383|    143|					ZEND_SIGNED_MULTIPLY_LONG(l2, l2, l2, dval, overflow);
  ------------------
  |  |   26|    143|#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
  |  |   27|    143|	long __tmpvar;		 											\
  |  |   28|    143|	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
  |  |  ------------------
  |  |  |  Branch (28:6): [True: 23, False: 120]
  |  |  ------------------
  |  |   29|     23|		(dval) = (double) (a) * (double) (b);						\
  |  |   30|     23|	}																\
  |  |   31|    143|	else (lval) = __tmpvar;											\
  |  |   32|    143|} while (0)
  |  |  ------------------
  |  |  |  Branch (32:10): [Folded, False: 143]
  |  |  ------------------
  ------------------
 1384|    143|					if (overflow) {
  ------------------
  |  Branch (1384:10): [True: 23, False: 120]
  ------------------
 1385|     23|						ZVAL_DOUBLE(result, (double)l1 * safe_pow(dval, i));
  ------------------
  |  | 1082|     23|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     23|		zval *__z = (z);				\
  |  | 1084|     23|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     23|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     23|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     23|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     23|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
 1386|     23|						return SUCCESS;
 1387|     23|					}
 1388|    143|				}
 1389|    214|			}
 1390|       |			/* i == 0 */
 1391|     25|			ZVAL_LONG(result, l1);
  ------------------
  |  | 1076|     25|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     25|		zval *__z = (z);				\
  |  | 1078|     25|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     25|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     25|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     25|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     25|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
 1392|     25|		} else {
 1393|      5|			ZVAL_DOUBLE(result, safe_pow((double)Z_LVAL_P(op1), (double)Z_LVAL_P(op2)));
  ------------------
  |  | 1082|      5|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      5|		zval *__z = (z);				\
  |  | 1084|      5|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      5|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      5|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      5|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      5|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1394|      5|		}
 1395|     30|		return SUCCESS;
 1396|     64|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_DOUBLE))) {
  ------------------
  |  |  456|     39|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 35]
  |  |  ------------------
  ------------------
 1397|      4|		ZVAL_DOUBLE(result, safe_pow(Z_DVAL_P(op1), Z_DVAL_P(op2)));
  ------------------
  |  | 1082|      4|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      4|		zval *__z = (z);				\
  |  | 1084|      4|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      4|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      4|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      4|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      4|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1398|      4|		return SUCCESS;
 1399|     35|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_DOUBLE))) {
  ------------------
  |  |  456|     35|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20, False: 15]
  |  |  ------------------
  ------------------
 1400|     20|		ZVAL_DOUBLE(result, safe_pow((double)Z_LVAL_P(op1), Z_DVAL_P(op2)));
  ------------------
  |  | 1082|     20|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     20|		zval *__z = (z);				\
  |  | 1084|     20|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     20|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     20|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     20|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     20|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1401|     20|		return SUCCESS;
 1402|     20|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_LONG))) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 14]
  |  |  ------------------
  ------------------
 1403|      1|		ZVAL_DOUBLE(result, safe_pow(Z_DVAL_P(op1), (double)Z_LVAL_P(op2)));
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1404|      1|		return SUCCESS;
 1405|     14|	} else {
 1406|     14|		return FAILURE;
 1407|     14|	}
 1408|    103|}
zend_operators.c:safe_pow:
 1346|     53|{
 1347|     53|	if (UNEXPECTED(base == 0.0 && exponent < 0.0)) {
  ------------------
  |  |  457|     57|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 53]
  |  |  |  Branch (457:52): [True: 4, False: 49]
  |  |  |  Branch (457:52): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1348|      0|		zend_power_base_0_exponent_lt_0_error();
 1349|      0|	}
 1350|       |
 1351|     53|	return pow(base, exponent);
 1352|     53|}
zend_operators.c:zendi_try_convert_scalar_to_number:
  367|  12.3k|{
  368|  12.3k|	if (Z_TYPE_P(op) == IS_LONG || Z_TYPE_P(op) == IS_DOUBLE) {
  ------------------
  |  |  669|  12.3k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  12.3k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_LONG || Z_TYPE_P(op) == IS_DOUBLE) {
  ------------------
  |  |  610|  24.6k|#define IS_LONG						4
  ------------------
              	if (Z_TYPE_P(op) == IS_LONG || Z_TYPE_P(op) == IS_DOUBLE) {
  ------------------
  |  |  669|  9.65k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  9.65k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_LONG || Z_TYPE_P(op) == IS_DOUBLE) {
  ------------------
  |  |  611|  9.65k|#define IS_DOUBLE					5
  ------------------
  |  Branch (368:6): [True: 2.67k, False: 9.65k]
  |  Branch (368:33): [True: 2.29k, False: 7.36k]
  ------------------
  369|  4.96k|		ZVAL_COPY_VALUE(holder, op);
  ------------------
  |  | 1416|  4.96k|	do {												\
  |  | 1417|  4.96k|		zval *_z1 = (z);								\
  |  | 1418|  4.96k|		const zval *_z2 = (v);							\
  |  | 1419|  4.96k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  4.96k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  4.96k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  4.96k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  4.96k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.96k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  4.96k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  4.96k|	do {												\
  |  |  |  | 1408|  4.96k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  4.96k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  4.96k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  4.96k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  4.96k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  4.96k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  4.96k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  4.96k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4.96k]
  |  |  ------------------
  ------------------
  370|  4.96k|		return SUCCESS;
  371|  7.36k|	} else {
  372|  7.36k|		return _zendi_try_convert_scalar_to_number(op, holder);
  373|  7.36k|	}
  374|  12.3k|}
zend_operators.c:_zendi_try_convert_scalar_to_number:
  325|  7.36k|{
  326|  7.36k|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|  7.36k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.36k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  327|  3.38k|		case IS_NULL:
  ------------------
  |  |  607|  3.38k|#define IS_NULL						1
  ------------------
  |  Branch (327:3): [True: 3.38k, False: 3.98k]
  ------------------
  328|  3.91k|		case IS_FALSE:
  ------------------
  |  |  608|  3.91k|#define IS_FALSE					2
  ------------------
  |  Branch (328:3): [True: 534, False: 6.82k]
  ------------------
  329|  3.91k|			ZVAL_LONG(holder, 0);
  ------------------
  |  | 1076|  3.91k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  3.91k|		zval *__z = (z);				\
  |  | 1078|  3.91k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  3.91k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  3.91k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  3.91k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  3.91k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.91k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  3.91k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  3.91k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3.91k]
  |  |  ------------------
  ------------------
  330|  3.91k|			return SUCCESS;
  331|    373|		case IS_TRUE:
  ------------------
  |  |  609|    373|#define IS_TRUE						3
  ------------------
  |  Branch (331:3): [True: 373, False: 6.99k]
  ------------------
  332|    373|			ZVAL_LONG(holder, 1);
  ------------------
  |  | 1076|    373|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    373|		zval *__z = (z);				\
  |  | 1078|    373|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    373|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    373|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    373|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    373|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    373|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    373|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    373|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 373]
  |  |  ------------------
  ------------------
  333|    373|			return SUCCESS;
  334|  3.04k|		case IS_STRING:
  ------------------
  |  |  612|  3.04k|#define IS_STRING					6
  ------------------
  |  Branch (334:3): [True: 3.04k, False: 4.32k]
  ------------------
  335|  3.04k|		{
  336|  3.04k|			bool trailing_data = false;
  337|       |			/* For BC reasons we allow errors so that we can warn on leading numeric string */
  338|  3.04k|			if (0 == (Z_TYPE_INFO_P(holder) = is_numeric_string_ex(Z_STRVAL_P(op), Z_STRLEN_P(op),
  ------------------
  |  |  678|  3.04k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|  3.04k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			if (0 == (Z_TYPE_INFO_P(holder) = is_numeric_string_ex(Z_STRVAL_P(op), Z_STRLEN_P(op),
  ------------------
  |  |  985|  3.04k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  3.04k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  3.04k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (0 == (Z_TYPE_INFO_P(holder) = is_numeric_string_ex(Z_STRVAL_P(op), Z_STRLEN_P(op),
  ------------------
  |  |  988|  3.04k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  3.04k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  3.04k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (338:8): [True: 21, False: 3.01k]
  ------------------
  339|  3.04k|					&Z_LVAL_P(holder), &Z_DVAL_P(holder),  /* allow errors */ true, NULL, &trailing_data))) {
  ------------------
  |  |  976|  3.04k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  3.04k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              					&Z_LVAL_P(holder), &Z_DVAL_P(holder),  /* allow errors */ true, NULL, &trailing_data))) {
  ------------------
  |  |  979|  3.04k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|  3.04k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  340|       |				/* Will lead to invalid OP type error */
  341|     21|				return FAILURE;
  342|     21|			}
  343|  3.01k|			if (UNEXPECTED(trailing_data)) {
  ------------------
  |  |  457|  3.01k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.05k, False: 966]
  |  |  ------------------
  ------------------
  344|  2.05k|				zend_error(E_WARNING, "A non-numeric value encountered");
  ------------------
  |  |   23|  2.05k|#define E_WARNING			(1<<1L)
  ------------------
  345|  2.05k|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|  2.05k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.05k]
  |  |  ------------------
  ------------------
  346|      0|					return FAILURE;
  347|      0|				}
  348|  2.05k|			}
  349|  3.01k|			return SUCCESS;
  350|  3.01k|		}
  351|      7|		case IS_OBJECT:
  ------------------
  |  |  614|      7|#define IS_OBJECT					8
  ------------------
  |  Branch (351:3): [True: 7, False: 7.35k]
  ------------------
  352|      7|			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), holder, _IS_NUMBER) == FAILURE
  ------------------
  |  | 1003|      7|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      7|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), holder, _IS_NUMBER) == FAILURE
  ------------------
  |  | 1000|      7|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), holder, _IS_NUMBER) == FAILURE
  ------------------
  |  |  636|      7|#define _IS_NUMBER					19
  ------------------
  |  Branch (352:8): [True: 7, False: 0]
  ------------------
  353|      7|					|| EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  354|      7|				return FAILURE;
  355|      7|			}
  356|      0|			ZEND_ASSERT(Z_TYPE_P(holder) == IS_LONG || Z_TYPE_P(holder) == IS_DOUBLE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (356:4): [True: 0, False: 0]
  |  Branch (356:4): [True: 0, False: 0]
  |  Branch (356:4): [True: 0, False: 0]
  |  Branch (356:4): [True: 0, False: 0]
  ------------------
  357|      0|			return SUCCESS;
  358|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (358:3): [True: 0, False: 7.36k]
  ------------------
  359|     27|		case IS_ARRAY:
  ------------------
  |  |  613|     27|#define IS_ARRAY					7
  ------------------
  |  Branch (359:3): [True: 27, False: 7.33k]
  ------------------
  360|     27|			return FAILURE;
  361|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (361:3): [True: 0, False: 7.36k]
  |  Branch (361:12): [Folded, False: 0]
  |  Branch (361:12): [Folded, False: 0]
  ------------------
  362|  7.36k|	}
  363|  7.36k|}
zend_operators.c:zend_binop_error:
 1115|     74|static ZEND_COLD zend_never_inline void ZEND_FASTCALL zend_binop_error(const char *operator, const zval *op1, const zval *op2) /* {{{ */ {
 1116|     74|	if (EG(exception)) {
  ------------------
  |  |   45|     74|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 74]
  |  |  ------------------
  ------------------
 1117|      0|		return;
 1118|      0|	}
 1119|       |
 1120|     74|	zend_type_error("Unsupported operand types: %s %s %s",
 1121|     74|		zend_zval_type_name(op1), operator, zend_zval_type_name(op2));
 1122|     74|}
zend_operators.c:div_function_base:
 1451|  1.21k|{
 1452|  1.21k|	uint8_t type_pair = TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2));
  ------------------
  |  |   60|  1.21k|#define TYPE_PAIR(t1,t2) (((t1) << 4) | (t2))
  ------------------
 1453|       |
 1454|  1.21k|	if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_LONG))) {
  ------------------
  |  |  456|  1.21k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 186, False: 1.02k]
  |  |  ------------------
  ------------------
 1455|    186|		if (Z_LVAL_P(op2) == 0) {
  ------------------
  |  |  976|    186|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    186|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1455:7): [True: 4, False: 182]
  ------------------
 1456|      4|			return DIV_BY_ZERO;
 1457|    182|		} else if (Z_LVAL_P(op2) == -1 && Z_LVAL_P(op1) == ZEND_LONG_MIN) {
  ------------------
  |  |  976|    182|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    182|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              		} else if (Z_LVAL_P(op2) == -1 && Z_LVAL_P(op1) == ZEND_LONG_MIN) {
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              		} else if (Z_LVAL_P(op2) == -1 && Z_LVAL_P(op1) == ZEND_LONG_MIN) {
  ------------------
  |  |   35|      1|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (1457:14): [True: 1, False: 181]
  |  Branch (1457:37): [True: 0, False: 1]
  ------------------
 1458|       |			/* Prevent overflow error/crash */
 1459|      0|			ZVAL_DOUBLE(result, (double) ZEND_LONG_MIN / -1);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1460|      0|			return DIV_SUCCESS;
 1461|      0|		}
 1462|    182|		if (Z_LVAL_P(op1) % Z_LVAL_P(op2) == 0) { /* integer */
  ------------------
  |  |  976|    182|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    182|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              		if (Z_LVAL_P(op1) % Z_LVAL_P(op2) == 0) { /* integer */
  ------------------
  |  |  976|    182|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    182|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1462:7): [True: 14, False: 168]
  ------------------
 1463|     14|			ZVAL_LONG(result, Z_LVAL_P(op1) / Z_LVAL_P(op2));
  ------------------
  |  | 1076|     14|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     14|		zval *__z = (z);				\
  |  | 1078|     14|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     14|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     14|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     14|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     14|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1464|    168|		} else {
 1465|    168|			ZVAL_DOUBLE(result, ((double) Z_LVAL_P(op1)) / Z_LVAL_P(op2));
  ------------------
  |  | 1082|    168|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    168|		zval *__z = (z);				\
  |  | 1084|    168|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    168|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    168|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    168|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    168|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    168|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    168|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    168|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1466|    168|		}
 1467|    182|		return DIV_SUCCESS;
 1468|  1.02k|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_DOUBLE))) {
  ------------------
  |  |  456|  1.02k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 222, False: 805]
  |  |  ------------------
  ------------------
 1469|    222|		if (Z_DVAL_P(op2) == 0) {
  ------------------
  |  |  979|    222|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    222|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (1469:7): [True: 1, False: 221]
  ------------------
 1470|      1|			return DIV_BY_ZERO;
 1471|      1|		}
 1472|    221|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) / Z_DVAL_P(op2));
  ------------------
  |  | 1082|    221|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    221|		zval *__z = (z);				\
  |  | 1084|    221|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    221|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    221|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    221|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    221|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    221|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    221|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    221|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 221]
  |  |  ------------------
  ------------------
 1473|    221|		return DIV_SUCCESS;
 1474|    805|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_DOUBLE, IS_LONG))) {
  ------------------
  |  |  456|    805|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 36, False: 769]
  |  |  ------------------
  ------------------
 1475|     36|		if (Z_LVAL_P(op2) == 0) {
  ------------------
  |  |  976|     36|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     36|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1475:7): [True: 1, False: 35]
  ------------------
 1476|      1|			return DIV_BY_ZERO;
 1477|      1|		}
 1478|     35|		ZVAL_DOUBLE(result, Z_DVAL_P(op1) / (double)Z_LVAL_P(op2));
  ------------------
  |  | 1082|     35|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     35|		zval *__z = (z);				\
  |  | 1084|     35|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     35|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     35|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     35|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     35|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     35|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     35|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     35|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 35]
  |  |  ------------------
  ------------------
 1479|     35|		return DIV_SUCCESS;
 1480|    769|	} else if (EXPECTED(type_pair == TYPE_PAIR(IS_LONG, IS_DOUBLE))) {
  ------------------
  |  |  456|    769|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 416, False: 353]
  |  |  ------------------
  ------------------
 1481|    416|		if (Z_DVAL_P(op2) == 0) {
  ------------------
  |  |  979|    416|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    416|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (1481:7): [True: 5, False: 411]
  ------------------
 1482|      5|			return DIV_BY_ZERO;
 1483|      5|		}
 1484|    411|		ZVAL_DOUBLE(result, (double)Z_LVAL_P(op1) / Z_DVAL_P(op2));
  ------------------
  |  | 1082|    411|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    411|		zval *__z = (z);				\
  |  | 1084|    411|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    411|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    411|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    411|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    411|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    411|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    411|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    411|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 411]
  |  |  ------------------
  ------------------
 1485|    411|		return DIV_SUCCESS;
 1486|    416|	} else {
 1487|    353|		return DIV_TYPES_NOT_HANDLED;
 1488|    353|	}
 1489|  1.21k|}
zend_operators.c:compare_long_to_string:
 2257|    118|{
 2258|    118|	zend_long str_lval;
 2259|    118|	double str_dval;
 2260|    118|	uint8_t type = is_numeric_string(ZSTR_VAL(str), ZSTR_LEN(str), &str_lval, &str_dval, 0);
  ------------------
  |  |   67|    118|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	uint8_t type = is_numeric_string(ZSTR_VAL(str), ZSTR_LEN(str), &str_lval, &str_dval, 0);
  ------------------
  |  |   68|    118|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2261|       |
 2262|    118|	if (type == IS_LONG) {
  ------------------
  |  |  610|    118|#define IS_LONG						4
  ------------------
  |  Branch (2262:6): [True: 4, False: 114]
  ------------------
 2263|      4|		return lval > str_lval ? 1 : lval < str_lval ? -1 : 0;
  ------------------
  |  Branch (2263:10): [True: 0, False: 4]
  |  Branch (2263:32): [True: 3, False: 1]
  ------------------
 2264|      4|	}
 2265|       |
 2266|    114|	if (type == IS_DOUBLE) {
  ------------------
  |  |  611|    114|#define IS_DOUBLE					5
  ------------------
  |  Branch (2266:6): [True: 1, False: 113]
  ------------------
 2267|      1|		return ZEND_THREEWAY_COMPARE((double) lval, str_dval);
  ------------------
  |  |  552|      1|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 0, False: 1]
  |  |  |  Branch (552:56): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2268|      1|	}
 2269|       |
 2270|    113|	zend_string *lval_as_str = zend_long_to_str(lval);
 2271|    113|	int cmp_result = zend_binary_strcmp(
 2272|    113|		ZSTR_VAL(lval_as_str), ZSTR_LEN(lval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|    113|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(lval_as_str), ZSTR_LEN(lval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|    113|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		ZSTR_VAL(lval_as_str), ZSTR_LEN(lval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|    113|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(lval_as_str), ZSTR_LEN(lval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|    113|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2273|    113|	zend_string_release(lval_as_str);
 2274|    113|	return ZEND_NORMALIZE_BOOL(cmp_result);
  ------------------
  |  |  544|    113|	((n) ? (((n)<0) ? -1 : 1) : 0)
  |  |  ------------------
  |  |  |  Branch (544:3): [True: 113, False: 0]
  |  |  |  Branch (544:10): [True: 109, False: 4]
  |  |  ------------------
  ------------------
 2275|    114|}
zend_operators.c:compare_double_to_string:
 2279|    232|{
 2280|    232|	zend_long str_lval;
 2281|    232|	double str_dval;
 2282|    232|	uint8_t type = is_numeric_string(ZSTR_VAL(str), ZSTR_LEN(str), &str_lval, &str_dval, 0);
  ------------------
  |  |   67|    232|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	uint8_t type = is_numeric_string(ZSTR_VAL(str), ZSTR_LEN(str), &str_lval, &str_dval, 0);
  ------------------
  |  |   68|    232|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2283|       |
 2284|    232|	ZEND_ASSERT(!zend_isnan(dval));
  ------------------
  |  |  112|    232|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2284:2): [True: 0, False: 232]
  |  Branch (2284:2): [True: 232, False: 0]
  ------------------
 2285|       |
 2286|    232|	if (type == IS_LONG) {
  ------------------
  |  |  610|    232|#define IS_LONG						4
  ------------------
  |  Branch (2286:6): [True: 1, False: 231]
  ------------------
 2287|      1|		return ZEND_THREEWAY_COMPARE(dval, (double) str_lval);
  ------------------
  |  |  552|      1|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 0, False: 1]
  |  |  |  Branch (552:56): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2288|      1|	}
 2289|       |
 2290|    231|	if (type == IS_DOUBLE) {
  ------------------
  |  |  611|    231|#define IS_DOUBLE					5
  ------------------
  |  Branch (2290:6): [True: 0, False: 231]
  ------------------
 2291|      0|		return ZEND_THREEWAY_COMPARE(dval, str_dval);
  ------------------
  |  |  552|      0|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 0, False: 0]
  |  |  |  Branch (552:56): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2292|      0|	}
 2293|       |
 2294|    231|	zend_string *dval_as_str = zend_double_to_str(dval);
 2295|    231|	int cmp_result = zend_binary_strcmp(
 2296|    231|		ZSTR_VAL(dval_as_str), ZSTR_LEN(dval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|    231|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(dval_as_str), ZSTR_LEN(dval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|    231|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		ZSTR_VAL(dval_as_str), ZSTR_LEN(dval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|    231|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(dval_as_str), ZSTR_LEN(dval_as_str), ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|    231|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2297|    231|	zend_string_release(dval_as_str);
 2298|    231|	return ZEND_NORMALIZE_BOOL(cmp_result);
  ------------------
  |  |  544|    231|	((n) ? (((n)<0) ? -1 : 1) : 0)
  |  |  ------------------
  |  |  |  Branch (544:3): [True: 231, False: 0]
  |  |  |  Branch (544:10): [True: 230, False: 1]
  |  |  ------------------
  ------------------
 2299|    231|}
zend_operators.c:_zendi_convert_scalar_to_number_silent:
  292|      4|{
  293|      4|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  294|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (294:3): [True: 0, False: 4]
  ------------------
  295|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (295:3): [True: 0, False: 4]
  ------------------
  296|      0|			ZVAL_LONG(holder, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  297|      0|			return holder;
  298|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (298:3): [True: 0, False: 4]
  ------------------
  299|      0|			ZVAL_LONG(holder, 1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  300|      0|			return holder;
  301|      2|		case IS_STRING:
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
  |  Branch (301:3): [True: 2, False: 2]
  ------------------
  302|      2|			if ((Z_TYPE_INFO_P(holder) = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL_P(holder), &Z_DVAL_P(holder), 1)) == 0) {
  ------------------
  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			if ((Z_TYPE_INFO_P(holder) = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL_P(holder), &Z_DVAL_P(holder), 1)) == 0) {
  ------------------
  |  |  985|      2|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      2|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if ((Z_TYPE_INFO_P(holder) = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL_P(holder), &Z_DVAL_P(holder), 1)) == 0) {
  ------------------
  |  |  988|      2|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      2|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if ((Z_TYPE_INFO_P(holder) = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL_P(holder), &Z_DVAL_P(holder), 1)) == 0) {
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              			if ((Z_TYPE_INFO_P(holder) = is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL_P(holder), &Z_DVAL_P(holder), 1)) == 0) {
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (302:8): [True: 2, False: 0]
  ------------------
  303|      2|				ZVAL_LONG(holder, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  304|      2|			}
  305|      2|			return holder;
  306|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (306:3): [True: 0, False: 4]
  ------------------
  307|      0|			ZVAL_LONG(holder, Z_RES_HANDLE_P(op));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  308|      0|			return holder;
  309|      0|		case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (309:3): [True: 0, False: 4]
  ------------------
  310|      0|			convert_object_to_type(op, holder, _IS_NUMBER);
  ------------------
  |  |  232|      0|	ZVAL_UNDEF(dst);																		\
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (Z_OBJ_HT_P(op)->cast_object(Z_OBJ_P(op), dst, ctype) == FAILURE) {					\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (233:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  234|      0|		zend_error(E_WARNING,																\
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  235|      0|			"Object of class %s could not be converted to %s", ZSTR_VAL(Z_OBJCE_P(op)->name),\
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |  236|      0|		zend_get_type_by_const(ctype));														\
  |  |  237|      0|	} 																						\
  ------------------
  311|      0|			if (UNEXPECTED(EG(exception)) ||
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  312|      0|			    UNEXPECTED(Z_TYPE_P(holder) != IS_LONG && Z_TYPE_P(holder) != IS_DOUBLE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  313|      0|				ZVAL_LONG(holder, 1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  314|      0|			}
  315|      0|			return holder;
  316|      0|		case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (316:3): [True: 0, False: 4]
  ------------------
  317|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (317:3): [True: 0, False: 4]
  ------------------
  318|      2|		default:
  ------------------
  |  Branch (318:3): [True: 2, False: 2]
  ------------------
  319|      2|			return op;
  320|      4|	}
  321|      4|}
zend_operators.c:hash_zval_identical_function:
 2463|     12|{
 2464|       |	/* is_identical_function() returns 1 in case of identity and 0 in case
 2465|       |	 * of a difference;
 2466|       |	 * whereas this comparison function is expected to return 0 on identity,
 2467|       |	 * and non zero otherwise.
 2468|       |	 */
 2469|     12|	ZVAL_DEREF(z1);
  ------------------
  |  | 1474|     12|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     12|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 8, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      8|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      8|		}												\
  |  | 1478|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 2470|     12|	ZVAL_DEREF(z2);
  ------------------
  |  | 1474|     12|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     12|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 2471|     12|	return fast_is_not_identical_function(z1, z2);
 2472|     12|}
zend_operators.c:increment_string:
 2610|    314|{
 2611|    314|	int carry=0;
 2612|    314|	size_t pos=Z_STRLEN_P(str)-1;
  ------------------
  |  |  988|    314|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    314|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    314|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2613|    314|	char *s;
 2614|    314|	zend_string *t;
 2615|    314|	int last=0; /* Shut up the compiler warning */
 2616|    314|	int ch;
 2617|       |
 2618|    314|	zend_string *zstr = Z_STR_P(str);
  ------------------
  |  |  982|    314|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    314|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2619|    314|	zend_string_addref(zstr);
 2620|    314|	zend_error(E_DEPRECATED, "Increment on non-numeric string is deprecated, use str_increment() instead");
  ------------------
  |  |   36|    314|#define E_DEPRECATED		(1<<13L)
  ------------------
 2621|    314|	if (EG(exception)) {
  ------------------
  |  |   45|    314|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 314]
  |  |  ------------------
  ------------------
 2622|      0|		zend_string_release(zstr);
 2623|      0|		return false;
 2624|      0|	}
 2625|       |	/* A userland error handler can change the type from string to something else */
 2626|    314|	zval_ptr_dtor(str);
 2627|    314|	ZVAL_STR(str, zstr);
  ------------------
  |  | 1088|    314|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    314|		zval *__z = (z);						\
  |  | 1090|    314|		zend_string *__s = (s);					\
  |  | 1091|    314|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    314|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    314|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    314|		/* interned strings support */			\
  |  | 1093|    314|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    314|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    314|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 3, False: 311]
  |  |  ------------------
  |  | 1094|    314|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    314|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    625|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    311|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    311|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    311|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    314|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 314]
  |  |  ------------------
  ------------------
 2628|       |
 2629|    314|	if (UNEXPECTED(Z_STRLEN_P(str) == 0)) {
  ------------------
  |  |  457|    314|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 314]
  |  |  ------------------
  ------------------
 2630|      0|		zval_ptr_dtor(str);
 2631|      0|		ZVAL_CHAR(str, '1');
  ------------------
  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      0|		char _c = (c);                          \
  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2632|      0|		return true;
 2633|      0|	}
 2634|       |
 2635|    314|	if (!Z_REFCOUNTED_P(str)) {
  ------------------
  |  |  942|    314|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|    314|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    314|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2635:6): [True: 3, False: 311]
  ------------------
 2636|      3|		Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  985|      3|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      3|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  988|      3|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      3|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2637|      3|		Z_TYPE_INFO_P(str) = IS_STRING_EX;
  ------------------
  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              		Z_TYPE_INFO_P(str) = IS_STRING_EX;
  ------------------
  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
 2638|    311|	} else if (Z_REFCOUNT_P(str) > 1) {
  ------------------
  |  | 1275|    311|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (2638:13): [True: 67, False: 244]
  ------------------
 2639|       |		/* Only release string after allocation succeeded. */
 2640|     67|		zend_string *orig_str = Z_STR_P(str);
  ------------------
  |  |  982|     67|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     67|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2641|     67|		Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  982|     67|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     67|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  985|     67|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     67|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     67|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_STR_P(str) = zend_string_init(Z_STRVAL_P(str), Z_STRLEN_P(str), 0);
  ------------------
  |  |  988|     67|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     67|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     67|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2642|     67|		GC_DELREF(orig_str);
  ------------------
  |  |  719|     67|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 2643|    244|	} else {
 2644|    244|		zend_string_forget_hash_val(Z_STR_P(str));
  ------------------
  |  |  982|    244|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    244|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2645|    244|	}
 2646|    314|	s = Z_STRVAL_P(str);
  ------------------
  |  |  985|    314|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    314|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    314|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2647|       |
 2648|    314|	do {
 2649|    314|		ch = s[pos];
 2650|    314|		if (ch >= 'a' && ch <= 'z') {
  ------------------
  |  Branch (2650:7): [True: 2, False: 312]
  |  Branch (2650:20): [True: 2, False: 0]
  ------------------
 2651|      2|			if (ch == 'z') {
  ------------------
  |  Branch (2651:8): [True: 0, False: 2]
  ------------------
 2652|      0|				s[pos] = 'a';
 2653|      0|				carry=1;
 2654|      2|			} else {
 2655|      2|				s[pos]++;
 2656|      2|				carry=0;
 2657|      2|			}
 2658|      2|			last=LOWER_CASE;
  ------------------
  |  | 2592|      2|#define LOWER_CASE 1
  ------------------
 2659|    312|		} else if (ch >= 'A' && ch <= 'Z') {
  ------------------
  |  Branch (2659:14): [True: 2, False: 310]
  |  Branch (2659:27): [True: 2, False: 0]
  ------------------
 2660|      2|			if (ch == 'Z') {
  ------------------
  |  Branch (2660:8): [True: 0, False: 2]
  ------------------
 2661|      0|				s[pos] = 'A';
 2662|      0|				carry=1;
 2663|      2|			} else {
 2664|      2|				s[pos]++;
 2665|      2|				carry=0;
 2666|      2|			}
 2667|      2|			last=UPPER_CASE;
  ------------------
  |  | 2593|      2|#define UPPER_CASE 2
  ------------------
 2668|    310|		} else if (ch >= '0' && ch <= '9') {
  ------------------
  |  Branch (2668:14): [True: 308, False: 2]
  |  Branch (2668:27): [True: 308, False: 0]
  ------------------
 2669|    308|			if (ch == '9') {
  ------------------
  |  Branch (2669:8): [True: 0, False: 308]
  ------------------
 2670|      0|				s[pos] = '0';
 2671|      0|				carry=1;
 2672|    308|			} else {
 2673|    308|				s[pos]++;
 2674|    308|				carry=0;
 2675|    308|			}
 2676|    308|			last = NUMERIC;
  ------------------
  |  | 2594|    308|#define NUMERIC 3
  ------------------
 2677|    308|		} else {
 2678|      2|			carry=0;
 2679|      2|			break;
 2680|      2|		}
 2681|    312|		if (carry == 0) {
  ------------------
  |  Branch (2681:7): [True: 312, False: 0]
  ------------------
 2682|    312|			break;
 2683|    312|		}
 2684|    312|	} while (pos-- > 0);
  ------------------
  |  Branch (2684:11): [True: 0, False: 0]
  ------------------
 2685|       |
 2686|    314|	if (carry) {
  ------------------
  |  Branch (2686:6): [True: 0, False: 314]
  ------------------
 2687|      0|		t = zend_string_alloc(Z_STRLEN_P(str)+1, 0);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2688|      0|		memcpy(ZSTR_VAL(t) + 1, Z_STRVAL_P(str), Z_STRLEN_P(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(t) + 1, Z_STRVAL_P(str), Z_STRLEN_P(str));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		memcpy(ZSTR_VAL(t) + 1, Z_STRVAL_P(str), Z_STRLEN_P(str));
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2689|      0|		ZSTR_VAL(t)[Z_STRLEN_P(str) + 1] = '\0';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(t)[Z_STRLEN_P(str) + 1] = '\0';
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2690|      0|		switch (last) {
  ------------------
  |  Branch (2690:11): [True: 0, False: 0]
  ------------------
 2691|      0|			case NUMERIC:
  ------------------
  |  | 2594|      0|#define NUMERIC 3
  ------------------
  |  Branch (2691:4): [True: 0, False: 0]
  ------------------
 2692|      0|				ZSTR_VAL(t)[0] = '1';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2693|      0|				break;
 2694|      0|			case UPPER_CASE:
  ------------------
  |  | 2593|      0|#define UPPER_CASE 2
  ------------------
  |  Branch (2694:4): [True: 0, False: 0]
  ------------------
 2695|      0|				ZSTR_VAL(t)[0] = 'A';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2696|      0|				break;
 2697|      0|			case LOWER_CASE:
  ------------------
  |  | 2592|      0|#define LOWER_CASE 1
  ------------------
  |  Branch (2697:4): [True: 0, False: 0]
  ------------------
 2698|      0|				ZSTR_VAL(t)[0] = 'a';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2699|      0|				break;
 2700|      0|		}
 2701|      0|		zend_string_free(Z_STR_P(str));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2702|      0|		ZVAL_NEW_STR(str, t);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2703|      0|	}
 2704|    314|	return true;
 2705|    314|}
zend_operators.c:zend_str_tolower_impl:
 3008|  2.86k|static zend_always_inline void zend_str_tolower_impl(char *dest, const char *str, size_t length) /* {{{ */ {
 3009|  2.86k|	unsigned char *p = (unsigned char*)str;
 3010|  2.86k|	unsigned char *q = (unsigned char*)dest;
 3011|  2.86k|	unsigned char *end = p + length;
 3012|  2.86k|#ifdef HAVE_BLOCKCONV
 3013|  2.86k|	if (length >= BLOCKCONV_STRIDE) {
  ------------------
  |  |   94|  2.86k|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
  |  Branch (3013:6): [True: 734, False: 2.13k]
  ------------------
 3014|    734|		BLOCKCONV_INIT_RANGE('A', 'Z');
  ------------------
  |  |   91|    734|	const __m128i blconv_offset = _mm_set1_epi8((signed char)(SCHAR_MIN - start)); \
  |  |   92|    734|	const __m128i blconv_threshold = _mm_set1_epi8(SCHAR_MIN + (end - start) + 1);
  ------------------
 3015|    734|		BLOCKCONV_INIT_DELTA('a' - 'A');
  ------------------
  |  |   97|    734|	const __m128i blconv_delta = _mm_set1_epi8(delta);
  ------------------
 3016|    769|		do {
 3017|    769|			BLOCKCONV_LOAD(p);
  ------------------
  |  |  100|    769|	__m128i blconv_operand = _mm_loadu_si128((__m128i*)(input)); \
  |  |  101|    769|	__m128i blconv_mask = _mm_cmplt_epi8(_mm_add_epi8(blconv_operand, blconv_offset), blconv_threshold);
  ------------------
 3018|    769|			BLOCKCONV_STORE(q);
  ------------------
  |  |  106|    769|	__m128i blconv_add = _mm_and_si128(blconv_mask, blconv_delta); \
  |  |  107|    769|	__m128i blconv_result = _mm_add_epi8(blconv_operand, blconv_add); \
  |  |  108|    769|	_mm_storeu_si128((__m128i *)(dest), blconv_result);
  ------------------
 3019|    769|			p += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|    769|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3020|    769|			q += BLOCKCONV_STRIDE;
  ------------------
  |  |   94|    769|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
 3021|    769|		} while (p + BLOCKCONV_STRIDE <= end);
  ------------------
  |  |   94|    769|#define BLOCKCONV_STRIDE sizeof(__m128i)
  ------------------
  |  Branch (3021:12): [True: 35, False: 734]
  ------------------
 3022|    734|	}
 3023|  2.86k|#endif
 3024|  18.9k|	while (p < end) {
  ------------------
  |  Branch (3024:9): [True: 16.0k, False: 2.86k]
  ------------------
 3025|  16.0k|		*q++ = zend_tolower_ascii(*p++);
  ------------------
  |  |  469|  16.0k|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
 3026|  16.0k|	}
 3027|  2.86k|}
zend_operators.c:hash_zval_compare_function:
 3469|      2|{
 3470|      2|	return zend_compare(z1, z2);
 3471|      2|}

php_date.c:instanceof_function:
   83|      2|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|      2|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 0, False: 2]
  |  Branch (84:30): [True: 2, False: 0]
  ------------------
   85|      2|}
json_encoder.c:zend_print_long_to_buf:
  980|      1|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|      1|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 1]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|      1|	} else {
  986|      1|	    return zend_print_ulong_to_buf(buf, num);
  987|      1|	}
  988|      1|}
json_encoder.c:zend_print_ulong_to_buf:
  970|      1|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|      1|	*buf = '\0';
  972|      2|	do {
  973|      2|		*--buf = (char) (num % 10) + '0';
  974|      2|		num /= 10;
  975|      2|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 1, False: 1]
  ------------------
  976|      1|	return buf;
  977|      1|}
json_encoder.c:instanceof_function:
   83|      2|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|      2|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 0, False: 2]
  |  Branch (84:30): [True: 0, False: 2]
  ------------------
   85|      2|}
ZendAccelerator.c:zend_print_long_to_buf:
  980|     72|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|     72|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 72]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|     72|	} else {
  986|     72|	    return zend_print_ulong_to_buf(buf, num);
  987|     72|	}
  988|     72|}
ZendAccelerator.c:zend_print_ulong_to_buf:
  970|     72|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|     72|	*buf = '\0';
  972|    432|	do {
  973|    432|		*--buf = (char) (num % 10) + '0';
  974|    432|		num /= 10;
  975|    432|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 360, False: 72]
  ------------------
  976|     72|	return buf;
  977|     72|}
php_reflection.c:zend_string_tolower:
  483|     36|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     36|}
php_reflection.c:zval_try_get_string:
  358|      4|static zend_always_inline zend_string *zval_try_get_string(const zval *op) {
  359|      4|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  360|      2|		zend_string *ret = zend_string_copy(Z_STR_P(op));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  361|      2|		ZEND_ASSUME(ret != NULL);
  ------------------
  |  |   99|      2|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  362|      2|		return ret;
  363|      2|	} else {
  364|      2|		return zval_try_get_string_func(op);
  365|      2|	}
  366|      4|}
php_reflection.c:instanceof_function:
   83|     23|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|     23|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 21, False: 2]
  |  Branch (84:30): [True: 0, False: 2]
  ------------------
   85|     23|}
php_reflection.c:zend_memrchr:
  231|      8|{
  232|      8|#if defined(HAVE_MEMRCHR) && !defined(__i386__)
  233|       |	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
  234|      8|	return (const void*)memrchr(s, c, n);
  235|       |#else
  236|       |	const unsigned char *e;
  237|       |	if (0 == n) {
  238|       |		return NULL;
  239|       |	}
  240|       |
  241|       |	for (e = (const unsigned char *)s + n - 1; e >= (const unsigned char *)s; e--) {
  242|       |		if (*e == (unsigned char)c) {
  243|       |			return (const void *)e;
  244|       |		}
  245|       |	}
  246|       |	return NULL;
  247|       |#endif
  248|      8|}
php_reflection.c:zval_get_tmp_string:
  343|      9|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|      9|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 8]
  |  |  ------------------
  ------------------
  345|      1|		*tmp = NULL;
  346|      1|		return Z_STR_P(op);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|      8|	} else {
  348|      8|		return *tmp = zval_get_string_func(op);
  349|      8|	}
  350|      9|}
php_reflection.c:zend_tmp_string_release:
  351|      9|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|      9|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 1]
  |  |  ------------------
  ------------------
  353|      8|		zend_string_release_ex(tmp, 0);
  354|      8|	}
  355|      9|}
php_reflection.c:zend_print_long_to_buf:
  980|     12|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|     12|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 12]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|     12|	} else {
  986|     12|	    return zend_print_ulong_to_buf(buf, num);
  987|     12|	}
  988|     12|}
php_reflection.c:zend_print_ulong_to_buf:
  970|     12|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|     12|	*buf = '\0';
  972|     12|	do {
  973|     12|		*--buf = (char) (num % 10) + '0';
  974|     12|		num /= 10;
  975|     12|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 0, False: 12]
  ------------------
  976|     12|	return buf;
  977|     12|}
spl_array.c:zend_dval_to_lval_safe:
  164|      1|{
  165|      1|	zend_long l = zend_dval_to_lval(d);
  166|      1|	if (!zend_is_long_compatible(d, l) && ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      1|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|      2|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      1|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 0, False: 1]
  |  |  |  Branch (114:70): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (166:6): [True: 1, False: 0]
  ------------------
  167|      1|		zend_incompatible_double_to_long_error(d);
  168|      1|	}
  169|      1|	return l;
  170|      1|}
spl_array.c:zend_dval_to_lval:
  126|      1|{
  127|      1|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  128|      0|		zend_oob_double_to_long_error(d);
  129|      0|		return 0;
  130|      1|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      1|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|      2|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      1|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 0, False: 1]
  |  |  |  Branch (114:70): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  131|      0|		zend_oob_double_to_long_error(d);
  132|      0|		return zend_dval_to_lval_slow(d);
  133|      0|	}
  134|      1|	return (zend_long)d;
  135|      1|}
spl_array.c:zend_is_long_compatible:
  159|      1|static zend_always_inline bool zend_is_long_compatible(double d, zend_long l) {
  160|      1|	return (double)l == d;
  161|      1|}
spl_iterators.c:instanceof_function:
   83|      6|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|      6|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 0, False: 6]
  |  Branch (84:30): [True: 6, False: 0]
  ------------------
   85|      6|}
spl_iterators.c:zend_unwrap_reference:
  997|      1|{
  998|      1|	if (Z_REFCOUNT_P(op) == 1) {
  ------------------
  |  | 1275|      1|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (998:6): [True: 1, False: 0]
  ------------------
  999|      1|		ZVAL_UNREF(op);
  ------------------
  |  | 1499|      1|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      1|		zval *_z = (z);									\
  |  | 1501|      1|		zend_reference *ref;							\
  |  | 1502|      1|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      1|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      1|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      1|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      1|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (999:3): [True: 0, False: 1]
  |  Branch (999:3): [True: 1, False: 0]
  ------------------
 1000|      1|	} else {
 1001|      0|		Z_DELREF_P(op);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
 1002|      0|		ZVAL_COPY(op, Z_REFVAL_P(op));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1003|      0|	}
 1004|      1|}
array.c:zend_print_long_to_buf:
  980|      6|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|      6|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 6]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|      6|	} else {
  986|      6|	    return zend_print_ulong_to_buf(buf, num);
  987|      6|	}
  988|      6|}
array.c:zend_print_ulong_to_buf:
  970|      6|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|      6|	*buf = '\0';
  972|      6|	do {
  973|      6|		*--buf = (char) (num % 10) + '0';
  974|      6|		num /= 10;
  975|      6|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 0, False: 6]
  ------------------
  976|      6|	return buf;
  977|      6|}
array.c:zend_dval_to_lval_silent:
  138|      2|{
  139|      2|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  140|      0|		return 0;
  141|      2|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      2|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|      4|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      1|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 1, False: 1]
  |  |  |  Branch (114:70): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  142|      1|		return zend_dval_to_lval_slow(d);
  143|      1|	}
  144|      1|	return (zend_long)d;
  145|      2|}
array.c:fast_equal_check_string:
  942|    514|{
  943|    514|	if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|    514|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 514, False: 0]
  |  |  ------------------
  ------------------
  944|    514|		return zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|    514|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    514|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		return zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|    514|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    514|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  945|    514|	}
  946|      0|	return zend_compare(op1, op2) == 0;
  947|    514|}
array.c:zend_fast_equal_strings:
  901|    514|{
  902|    514|	if (s1 == s2) {
  ------------------
  |  Branch (902:6): [True: 0, False: 514]
  ------------------
  903|      0|		return 1;
  904|    514|	} else if (ZSTR_VAL(s1)[0] > '9' || ZSTR_VAL(s2)[0] > '9') {
  ------------------
  |  |   67|    514|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	} else if (ZSTR_VAL(s1)[0] > '9' || ZSTR_VAL(s2)[0] > '9') {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (904:13): [True: 514, False: 0]
  |  Branch (904:38): [True: 0, False: 0]
  ------------------
  905|    514|		return zend_string_equal_content(s1, s2);
  906|    514|	} else {
  907|      0|		return zendi_smart_streq(s1, s2);
  908|      0|	}
  909|    514|}
array.c:zval_get_tmp_string:
  343|     93|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|     93|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|     93|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 72, False: 21]
  |  |  ------------------
  ------------------
  345|     72|		*tmp = NULL;
  346|     72|		return Z_STR_P(op);
  ------------------
  |  |  982|     72|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     72|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|     72|	} else {
  348|     21|		return *tmp = zval_get_string_func(op);
  349|     21|	}
  350|     93|}
array.c:zend_tmp_string_release:
  351|     93|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|     93|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|     93|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 72]
  |  |  ------------------
  ------------------
  353|     21|		zend_string_release_ex(tmp, 0);
  354|     21|	}
  355|     93|}
array.c:zend_is_long_compatible:
  159|      2|static zend_always_inline bool zend_is_long_compatible(double d, zend_long l) {
  160|      2|	return (double)l == d;
  161|      2|}
array.c:zend_unwrap_reference:
  997|     10|{
  998|     10|	if (Z_REFCOUNT_P(op) == 1) {
  ------------------
  |  | 1275|     10|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (998:6): [True: 6, False: 4]
  ------------------
  999|      6|		ZVAL_UNREF(op);
  ------------------
  |  | 1499|      6|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      6|		zval *_z = (z);									\
  |  | 1501|      6|		zend_reference *ref;							\
  |  | 1502|      6|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      6|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      6|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      6|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      6|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      6|	do {												\
  |  |  |  | 1417|      6|		zval *_z1 = (z);								\
  |  |  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      6|	do {												\
  |  |  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      6|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      6|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (999:3): [True: 0, False: 6]
  |  Branch (999:3): [True: 6, False: 0]
  ------------------
 1000|      6|	} else {
 1001|      4|		Z_DELREF_P(op);
  ------------------
  |  | 1278|      4|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
 1002|      4|		ZVAL_COPY(op, Z_REFVAL_P(op));
  ------------------
  |  | 1425|      4|	do {												\
  |  | 1426|      4|		zval *_z1 = (z);								\
  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1003|      4|	}
 1004|     10|}
array.c:fast_is_identical_function:
  950|  11.1k|{
  951|  11.1k|	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|  11.1k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  11.1k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|  11.1k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  11.1k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (951:6): [True: 4.14k, False: 7.03k]
  ------------------
  952|  4.14k|		return 0;
  953|  7.03k|	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  669|  7.03k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.03k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  609|  7.03k|#define IS_TRUE						3
  ------------------
  |  Branch (953:13): [True: 0, False: 7.03k]
  ------------------
  954|      0|		return 1;
  955|      0|	}
  956|  7.03k|	return zend_is_identical(op1, op2);
  957|  11.1k|}
assert.c:zval_try_get_string:
  358|      9|static zend_always_inline zend_string *zval_try_get_string(const zval *op) {
  359|      9|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  360|      0|		zend_string *ret = zend_string_copy(Z_STR_P(op));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  361|      0|		ZEND_ASSUME(ret != NULL);
  ------------------
  |  |   99|      0|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  362|      0|		return ret;
  363|      9|	} else {
  364|      9|		return zval_try_get_string_func(op);
  365|      9|	}
  366|      9|}
basic_functions.c:zval_get_tmp_string:
  343|     56|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|     56|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|     56|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 42, False: 14]
  |  |  ------------------
  ------------------
  345|     42|		*tmp = NULL;
  346|     42|		return Z_STR_P(op);
  ------------------
  |  |  982|     42|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     42|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|     42|	} else {
  348|     14|		return *tmp = zval_get_string_func(op);
  349|     14|	}
  350|     56|}
basic_functions.c:zend_tmp_string_release:
  351|     56|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|     56|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|     56|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 42]
  |  |  ------------------
  ------------------
  353|     14|		zend_string_release_ex(tmp, 0);
  354|     14|	}
  355|     56|}
basic_functions.c:is_numeric_string:
  183|    198|static zend_always_inline uint8_t is_numeric_string(const char *str, size_t length, zend_long *lval, double *dval, bool allow_errors) {
  184|    198|    return is_numeric_string_ex(str, length, lval, dval, allow_errors, NULL, NULL);
  185|    198|}
basic_functions.c:is_numeric_string_ex:
  176|    198|{
  177|    198|	if (*str > '9') {
  ------------------
  |  Branch (177:6): [True: 0, False: 198]
  ------------------
  178|      0|		return 0;
  179|      0|	}
  180|    198|	return _is_numeric_string_ex(str, length, lval, dval, allow_errors, oflow_info, trailing_data);
  181|    198|}
basic_functions.c:zend_unwrap_reference:
  997|      1|{
  998|      1|	if (Z_REFCOUNT_P(op) == 1) {
  ------------------
  |  | 1275|      1|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (998:6): [True: 1, False: 0]
  ------------------
  999|      1|		ZVAL_UNREF(op);
  ------------------
  |  | 1499|      1|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      1|		zval *_z = (z);									\
  |  | 1501|      1|		zend_reference *ref;							\
  |  | 1502|      1|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      1|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      1|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      1|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      1|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (999:3): [True: 0, False: 1]
  |  Branch (999:3): [True: 1, False: 0]
  ------------------
 1000|      1|	} else {
 1001|      0|		Z_DELREF_P(op);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
 1002|      0|		ZVAL_COPY(op, Z_REFVAL_P(op));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1003|      0|	}
 1004|      1|}
formatted_print.c:zval_get_tmp_string:
  343|      1|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|      1|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  345|      1|		*tmp = NULL;
  346|      1|		return Z_STR_P(op);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|      1|	} else {
  348|      0|		return *tmp = zval_get_string_func(op);
  349|      0|	}
  350|      1|}
formatted_print.c:zend_tmp_string_release:
  351|      1|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|      1|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  353|      0|		zend_string_release_ex(tmp, 0);
  354|      0|	}
  355|      1|}
formatted_print.c:zval_get_double:
  336|      2|static zend_always_inline double zval_get_double(const zval *op) {
  337|      2|	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  338|      2|}
info.c:zval_get_tmp_string:
  343|     72|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|     72|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|     72|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 70, False: 2]
  |  |  ------------------
  ------------------
  345|     70|		*tmp = NULL;
  346|     70|		return Z_STR_P(op);
  ------------------
  |  |  982|     70|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     70|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|     70|	} else {
  348|      2|		return *tmp = zval_get_string_func(op);
  349|      2|	}
  350|     72|}
info.c:zend_tmp_string_release:
  351|     72|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|     72|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|     72|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 70]
  |  |  ------------------
  ------------------
  353|      2|		zend_string_release_ex(tmp, 0);
  354|      2|	}
  355|     72|}
string.c:zend_memnstr:
  191|     12|{
  192|     12|	const char *p = haystack;
  193|     12|	size_t off_s;
  194|       |
  195|     12|	ZEND_ASSERT(end >= p);
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (195:2): [True: 0, False: 12]
  |  Branch (195:2): [True: 12, False: 0]
  ------------------
  196|       |
  197|     12|	if (needle_len == 1) {
  ------------------
  |  Branch (197:6): [True: 3, False: 9]
  ------------------
  198|      3|		return (const char *)memchr(p, *needle, (end-p));
  199|      9|	} else if (UNEXPECTED(needle_len == 0)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  200|      0|		return p;
  201|      0|	}
  202|       |
  203|      9|	off_s = (size_t)(end - p);
  204|       |
  205|      9|	if (needle_len > off_s) {
  ------------------
  |  Branch (205:6): [True: 0, False: 9]
  ------------------
  206|      0|		return NULL;
  207|      0|	}
  208|       |
  209|      9|	if (EXPECTED(off_s < 1024 || needle_len < 9)) {	/* glibc memchr is faster when needle is too short */
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  |  Branch (456:52): [True: 9, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  210|      9|		const char ne = needle[needle_len-1];
  211|      9|		end -= needle_len;
  212|       |
  213|     33|		while (p <= end) {
  ------------------
  |  Branch (213:10): [True: 33, False: 0]
  ------------------
  214|     33|			if ((p = (const char *)memchr(p, *needle, (end-p+1)))) {
  ------------------
  |  Branch (214:8): [True: 28, False: 5]
  ------------------
  215|     28|				if (ne == p[needle_len-1] && !memcmp(needle+1, p+1, needle_len-2)) {
  ------------------
  |  Branch (215:9): [True: 4, False: 24]
  |  Branch (215:34): [True: 4, False: 0]
  ------------------
  216|      4|					return p;
  217|      4|				}
  218|     28|			} else {
  219|      5|				return NULL;
  220|      5|			}
  221|     24|			p++;
  222|     24|		}
  223|       |
  224|      0|		return NULL;
  225|      9|	} else {
  226|      0|		return zend_memnstr_ex(haystack, needle, needle_len, end);
  227|      0|	}
  228|      9|}
string.c:zend_string_toupper:
  486|      6|static zend_always_inline zend_string* zend_string_toupper(zend_string *str) {
  487|       |	return zend_string_toupper_ex(str, false);
  488|      6|}
string.c:zend_string_tolower:
  483|      2|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|      2|}
string.c:zval_get_tmp_string:
  343|      7|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|      7|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  345|      0|		*tmp = NULL;
  346|      0|		return Z_STR_P(op);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|      7|	} else {
  348|      7|		return *tmp = zval_get_string_func(op);
  349|      7|	}
  350|      7|}
string.c:zend_tmp_string_release:
  351|      7|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|      7|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 0]
  |  |  ------------------
  ------------------
  353|      7|		zend_string_release_ex(tmp, 0);
  354|      7|	}
  355|      7|}
string.c:zend_mempcpy:
  304|      6|{
  305|      6|#if defined(HAVE_MEMPCPY)
  306|      6|	return mempcpy(dest, src, n);
  307|       |#else
  308|       |	return (char *)memcpy(dest, src, n) + n;
  309|       |#endif
  310|      6|}
var_unserializer.c:zend_string_tolower:
  483|     15|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     15|}
var.c:zend_print_long_to_buf:
  980|     59|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|     59|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 59]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|     59|	} else {
  986|     59|	    return zend_print_ulong_to_buf(buf, num);
  987|     59|	}
  988|     59|}
var.c:zend_print_ulong_to_buf:
  970|     97|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|     97|	*buf = '\0';
  972|    105|	do {
  973|    105|		*--buf = (char) (num % 10) + '0';
  974|    105|		num /= 10;
  975|    105|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 8, False: 97]
  ------------------
  976|     97|	return buf;
  977|     97|}
var.c:zend_mempcpy:
  304|    169|{
  305|    169|#if defined(HAVE_MEMPCPY)
  306|    169|	return mempcpy(dest, src, n);
  307|       |#else
  308|       |	return (char *)memcpy(dest, src, n) + n;
  309|       |#endif
  310|    169|}
php_ini.c:zval_get_long:
  330|      2|static zend_always_inline zend_long zval_get_long(const zval *op) {
  331|      2|	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  332|      2|}
php_glob.c:zend_strnlen:
  294|      2|{
  295|      2|#if defined(HAVE_STRNLEN)
  296|      2|	return strnlen(s, maxlen);
  297|       |#else
  298|       |	const char *p = (const char *)memchr(s, '\0', maxlen);
  299|       |	return p ? p-s : maxlen;
  300|       |#endif
  301|      2|}
php_variables.c:zend_dval_to_lval_silent:
  138|      4|{
  139|      4|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  140|      0|		return 0;
  141|      4|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      4|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|      8|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      4|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 0, False: 4]
  |  |  |  Branch (114:70): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  142|      0|		return zend_dval_to_lval_slow(d);
  143|      0|	}
  144|      4|	return (zend_long)d;
  145|      4|}
SAPI.c:zend_mempcpy:
  304|  67.1k|{
  305|  67.1k|#if defined(HAVE_MEMPCPY)
  306|  67.1k|	return mempcpy(dest, src, n);
  307|       |#else
  308|       |	return (char *)memcpy(dest, src, n) + n;
  309|       |#endif
  310|  67.1k|}
snprintf.c:zend_tmp_string_release:
  351|  34.8k|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|  34.8k|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|  34.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 34.8k]
  |  |  ------------------
  ------------------
  353|      0|		zend_string_release_ex(tmp, 0);
  354|      0|	}
  355|  34.8k|}
spprintf.c:zend_strnlen:
  294|      4|{
  295|      4|#if defined(HAVE_STRNLEN)
  296|      4|	return strnlen(s, maxlen);
  297|       |#else
  298|       |	const char *p = (const char *)memchr(s, '\0', maxlen);
  299|       |	return p ? p-s : maxlen;
  300|       |#endif
  301|      4|}
spprintf.c:zend_tmp_string_release:
  351|  8.67M|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|  8.67M|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|  8.67M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8.67M]
  |  |  ------------------
  ------------------
  353|      0|		zend_string_release_ex(tmp, 0);
  354|      0|	}
  355|  8.67M|}
userspace.c:try_convert_to_string:
  383|      1|static zend_always_inline bool try_convert_to_string(zval *op) {
  384|      1|	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (384:6): [True: 0, False: 1]
  ------------------
  385|      0|		return 1;
  386|      0|	}
  387|      1|	return _try_convert_to_string(op);
  388|      1|}
zend_API.c:zval_get_tmp_string:
  343|    441|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|    441|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|    441|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 306, False: 135]
  |  |  ------------------
  ------------------
  345|    306|		*tmp = NULL;
  346|    306|		return Z_STR_P(op);
  ------------------
  |  |  982|    306|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    306|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|    306|	} else {
  348|    135|		return *tmp = zval_get_string_func(op);
  349|    135|	}
  350|    441|}
zend_API.c:zend_tmp_string_release:
  351|    441|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|    441|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|    441|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 135, False: 306]
  |  |  ------------------
  ------------------
  353|    135|		zend_string_release_ex(tmp, 0);
  354|    135|	}
  355|    441|}
zend_API.c:try_convert_to_string:
  383|     25|static zend_always_inline bool try_convert_to_string(zval *op) {
  384|     25|	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|     25|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     25|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|     25|#define IS_STRING					6
  ------------------
  |  Branch (384:6): [True: 25, False: 0]
  ------------------
  385|     25|		return 1;
  386|     25|	}
  387|      0|	return _try_convert_to_string(op);
  388|     25|}
zend_API.c:instanceof_function:
   83|     17|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|     17|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 6, False: 11]
  |  Branch (84:30): [True: 11, False: 0]
  ------------------
   85|     17|}
zend_API.c:zend_dval_to_lval:
  126|      9|{
  127|      9|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  128|      0|		zend_oob_double_to_long_error(d);
  129|      0|		return 0;
  130|      9|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      9|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|     18|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      9|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 0, False: 9]
  |  |  |  Branch (114:70): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  131|      0|		zend_oob_double_to_long_error(d);
  132|      0|		return zend_dval_to_lval_slow(d);
  133|      0|	}
  134|      9|	return (zend_long)d;
  135|      9|}
zend_API.c:zend_is_long_compatible:
  159|      9|static zend_always_inline bool zend_is_long_compatible(double d, zend_long l) {
  160|      9|	return (double)l == d;
  161|      9|}
zend_API.c:zend_memrchr:
  231|  6.02k|{
  232|  6.02k|#if defined(HAVE_MEMRCHR) && !defined(__i386__)
  233|       |	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
  234|  6.02k|	return (const void*)memrchr(s, c, n);
  235|       |#else
  236|       |	const unsigned char *e;
  237|       |	if (0 == n) {
  238|       |		return NULL;
  239|       |	}
  240|       |
  241|       |	for (e = (const unsigned char *)s + n - 1; e >= (const unsigned char *)s; e--) {
  242|       |		if (*e == (unsigned char)c) {
  243|       |			return (const void *)e;
  244|       |		}
  245|       |	}
  246|       |	return NULL;
  247|       |#endif
  248|  6.02k|}
zend_API.c:zend_string_tolower:
  483|  6.01k|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|  6.01k|}
zend_ast.c:zend_string_tolower:
  483|     15|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     15|}
zend_ast.c:zend_memrchr:
  231|      2|{
  232|      2|#if defined(HAVE_MEMRCHR) && !defined(__i386__)
  233|       |	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
  234|      2|	return (const void*)memrchr(s, c, n);
  235|       |#else
  236|       |	const unsigned char *e;
  237|       |	if (0 == n) {
  238|       |		return NULL;
  239|       |	}
  240|       |
  241|       |	for (e = (const unsigned char *)s + n - 1; e >= (const unsigned char *)s; e--) {
  242|       |		if (*e == (unsigned char)c) {
  243|       |			return (const void *)e;
  244|       |		}
  245|       |	}
  246|       |	return NULL;
  247|       |#endif
  248|      2|}
zend_ast.c:try_convert_to_string:
  383|     12|static zend_always_inline bool try_convert_to_string(zval *op) {
  384|     12|	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|     12|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|     12|#define IS_STRING					6
  ------------------
  |  Branch (384:6): [True: 11, False: 1]
  ------------------
  385|     11|		return 1;
  386|     11|	}
  387|      1|	return _try_convert_to_string(op);
  388|     12|}
zend_ast.c:zend_print_long_to_buf:
  980|     27|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|     27|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 27]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|     27|	} else {
  986|     27|	    return zend_print_ulong_to_buf(buf, num);
  987|     27|	}
  988|     27|}
zend_ast.c:zend_print_ulong_to_buf:
  970|     27|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|     27|	*buf = '\0';
  972|     28|	do {
  973|     28|		*--buf = (char) (num % 10) + '0';
  974|     28|		num /= 10;
  975|     28|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 1, False: 27]
  ------------------
  976|     27|	return buf;
  977|     27|}
zend_builtin_functions.c:zend_memnstr:
  191|     34|{
  192|     34|	const char *p = haystack;
  193|     34|	size_t off_s;
  194|       |
  195|     34|	ZEND_ASSERT(end >= p);
  ------------------
  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (195:2): [True: 0, False: 34]
  |  Branch (195:2): [True: 34, False: 0]
  ------------------
  196|       |
  197|     34|	if (needle_len == 1) {
  ------------------
  |  Branch (197:6): [True: 0, False: 34]
  ------------------
  198|      0|		return (const char *)memchr(p, *needle, (end-p));
  199|     34|	} else if (UNEXPECTED(needle_len == 0)) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  ------------------
  ------------------
  200|      0|		return p;
  201|      0|	}
  202|       |
  203|     34|	off_s = (size_t)(end - p);
  204|       |
  205|     34|	if (needle_len > off_s) {
  ------------------
  |  Branch (205:6): [True: 15, False: 19]
  ------------------
  206|     15|		return NULL;
  207|     15|	}
  208|       |
  209|     19|	if (EXPECTED(off_s < 1024 || needle_len < 9)) {	/* glibc memchr is faster when needle is too short */
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 0]
  |  |  |  Branch (456:52): [True: 19, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  210|     19|		const char ne = needle[needle_len-1];
  211|     19|		end -= needle_len;
  212|       |
  213|     19|		while (p <= end) {
  ------------------
  |  Branch (213:10): [True: 19, False: 0]
  ------------------
  214|     19|			if ((p = (const char *)memchr(p, *needle, (end-p+1)))) {
  ------------------
  |  Branch (214:8): [True: 0, False: 19]
  ------------------
  215|      0|				if (ne == p[needle_len-1] && !memcmp(needle+1, p+1, needle_len-2)) {
  ------------------
  |  Branch (215:9): [True: 0, False: 0]
  |  Branch (215:34): [True: 0, False: 0]
  ------------------
  216|      0|					return p;
  217|      0|				}
  218|     19|			} else {
  219|     19|				return NULL;
  220|     19|			}
  221|      0|			p++;
  222|      0|		}
  223|       |
  224|      0|		return NULL;
  225|     19|	} else {
  226|      0|		return zend_memnstr_ex(haystack, needle, needle_len, end);
  227|      0|	}
  228|     19|}
zend_builtin_functions.c:zend_string_tolower:
  483|     23|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     23|}
zend_closures.c:instanceof_function:
   83|      5|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|      5|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 4, False: 1]
  |  Branch (84:30): [True: 0, False: 1]
  ------------------
   85|      5|}
zend_compile.c:zend_memrchr:
  231|  4.78k|{
  232|  4.78k|#if defined(HAVE_MEMRCHR) && !defined(__i386__)
  233|       |	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
  234|  4.78k|	return (const void*)memrchr(s, c, n);
  235|       |#else
  236|       |	const unsigned char *e;
  237|       |	if (0 == n) {
  238|       |		return NULL;
  239|       |	}
  240|       |
  241|       |	for (e = (const unsigned char *)s + n - 1; e >= (const unsigned char *)s; e--) {
  242|       |		if (*e == (unsigned char)c) {
  243|       |			return (const void *)e;
  244|       |		}
  245|       |	}
  246|       |	return NULL;
  247|       |#endif
  248|  4.78k|}
zend_compile.c:zend_strnlen:
  294|     62|{
  295|     62|#if defined(HAVE_STRNLEN)
  296|     62|	return strnlen(s, maxlen);
  297|       |#else
  298|       |	const char *p = (const char *)memchr(s, '\0', maxlen);
  299|       |	return p ? p-s : maxlen;
  300|       |#endif
  301|     62|}
zend_compile.c:zval_get_string:
  339|    144|static zend_always_inline zend_string *zval_get_string(const zval *op) {
  340|    144|	return EXPECTED(Z_TYPE_P(op) == IS_STRING) ? zend_string_copy(Z_STR_P(op)) : zval_get_string_func(op);
  ------------------
  |  |  456|    144|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 142, False: 2]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_STRING) ? zend_string_copy(Z_STR_P(op)) : zval_get_string_func(op);
  ------------------
  |  |  982|    142|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    142|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  341|    144|}
zend_compile.c:zend_is_long_compatible:
  159|    212|static zend_always_inline bool zend_is_long_compatible(double d, zend_long l) {
  160|    212|	return (double)l == d;
  161|    212|}
zend_compile.c:zend_dval_to_lval_silent:
  138|    212|{
  139|    212|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|    212|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 208]
  |  |  ------------------
  ------------------
  140|      4|		return 0;
  141|    208|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|    208|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|    416|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|    171|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 37, False: 171]
  |  |  |  Branch (114:70): [True: 9, False: 162]
  |  |  ------------------
  ------------------
  142|     46|		return zend_dval_to_lval_slow(d);
  143|     46|	}
  144|    162|	return (zend_long)d;
  145|    212|}
zend_compile.c:is_numeric_string:
  183|     80|static zend_always_inline uint8_t is_numeric_string(const char *str, size_t length, zend_long *lval, double *dval, bool allow_errors) {
  184|     80|    return is_numeric_string_ex(str, length, lval, dval, allow_errors, NULL, NULL);
  185|     80|}
zend_compile.c:is_numeric_string_ex:
  176|     80|{
  177|     80|	if (*str > '9') {
  ------------------
  |  Branch (177:6): [True: 14, False: 66]
  ------------------
  178|     14|		return 0;
  179|     14|	}
  180|     66|	return _is_numeric_string_ex(str, length, lval, dval, allow_errors, oflow_info, trailing_data);
  181|     80|}
zend_compile.c:zval_get_double:
  336|    204|static zend_always_inline double zval_get_double(const zval *op) {
  337|    204|	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  456|    204|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 21, False: 183]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  979|     21|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     21|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  338|    204|}
zend_compile.c:zval_get_long:
  330|     61|static zend_always_inline zend_long zval_get_long(const zval *op) {
  331|     61|	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  456|     61|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 54, False: 7]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  976|     54|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     54|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  332|     61|}
zend_compile.c:zend_string_tolower:
  483|  10.9k|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|  10.9k|}
zend_compile.c:zend_tmp_string_release:
  351|    450|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|    450|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|    450|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 450]
  |  |  ------------------
  ------------------
  353|      0|		zend_string_release_ex(tmp, 0);
  354|      0|	}
  355|    450|}
zend_constants.c:zend_memrchr:
  231|    152|{
  232|    152|#if defined(HAVE_MEMRCHR) && !defined(__i386__)
  233|       |	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
  234|    152|	return (const void*)memrchr(s, c, n);
  235|       |#else
  236|       |	const unsigned char *e;
  237|       |	if (0 == n) {
  238|       |		return NULL;
  239|       |	}
  240|       |
  241|       |	for (e = (const unsigned char *)s + n - 1; e >= (const unsigned char *)s; e--) {
  242|       |		if (*e == (unsigned char)c) {
  243|       |			return (const void *)e;
  244|       |		}
  245|       |	}
  246|       |	return NULL;
  247|       |#endif
  248|    152|}
zend_exceptions.c:instanceof_function:
   83|   274k|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|   274k|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 1.08k, False: 273k]
  |  Branch (84:30): [True: 35.9k, False: 237k]
  ------------------
   85|   274k|}
zend_exceptions.c:zval_get_string:
  339|  4.84k|static zend_always_inline zend_string *zval_get_string(const zval *op) {
  340|  4.84k|	return EXPECTED(Z_TYPE_P(op) == IS_STRING) ? zend_string_copy(Z_STR_P(op)) : zval_get_string_func(op);
  ------------------
  |  |  456|  4.84k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.86k, False: 1.98k]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_STRING) ? zend_string_copy(Z_STR_P(op)) : zval_get_string_func(op);
  ------------------
  |  |  982|  2.86k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  2.86k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  341|  4.84k|}
zend_exceptions.c:zval_get_long:
  330|  1.37k|static zend_always_inline zend_long zval_get_long(const zval *op) {
  331|  1.37k|	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  456|  1.37k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.37k, False: 0]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  976|  1.37k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  1.37k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  332|  1.37k|}
zend_exceptions.c:zend_print_long_to_buf:
  980|  2.18k|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|  2.18k|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 0, False: 2.18k]
  ------------------
  982|      0|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      0|	    *--result = '-';
  984|      0|		return result;
  985|  2.18k|	} else {
  986|  2.18k|	    return zend_print_ulong_to_buf(buf, num);
  987|  2.18k|	}
  988|  2.18k|}
zend_exceptions.c:zend_print_ulong_to_buf:
  970|  2.18k|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|  2.18k|	*buf = '\0';
  972|  2.19k|	do {
  973|  2.19k|		*--buf = (char) (num % 10) + '0';
  974|  2.19k|		num /= 10;
  975|  2.19k|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 10, False: 2.18k]
  ------------------
  976|  2.18k|	return buf;
  977|  2.18k|}
zend_execute_API.c:zend_string_tolower:
  483|  1.75k|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|  1.75k|}
zend_execute.c:instanceof_function:
   83|  7.49k|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|  7.49k|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 118, False: 7.38k]
  |  Branch (84:30): [True: 7.36k, False: 14]
  ------------------
   85|  7.49k|}
zend_execute.c:zend_dval_to_lval_safe:
  164|     28|{
  165|     28|	zend_long l = zend_dval_to_lval(d);
  166|     28|	if (!zend_is_long_compatible(d, l) && ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|     27|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|     54|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|     11|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 16, False: 11]
  |  |  |  Branch (114:70): [True: 5, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (166:6): [True: 27, False: 1]
  ------------------
  167|      6|		zend_incompatible_double_to_long_error(d);
  168|      6|	}
  169|     28|	return l;
  170|     28|}
zend_execute.c:zend_dval_to_lval:
  126|     28|{
  127|     28|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  ------------------
  ------------------
  128|      0|		zend_oob_double_to_long_error(d);
  129|      0|		return 0;
  130|     28|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|     28|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|     56|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|     12|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 16, False: 12]
  |  |  |  Branch (114:70): [True: 5, False: 7]
  |  |  ------------------
  ------------------
  131|     21|		zend_oob_double_to_long_error(d);
  132|     21|		return zend_dval_to_lval_slow(d);
  133|     21|	}
  134|      7|	return (zend_long)d;
  135|     28|}
zend_execute.c:zend_is_long_compatible:
  159|     28|static zend_always_inline bool zend_is_long_compatible(double d, zend_long l) {
  160|     28|	return (double)l == d;
  161|     28|}
zend_execute.c:is_numeric_string_ex:
  176|     15|{
  177|     15|	if (*str > '9') {
  ------------------
  |  Branch (177:6): [True: 6, False: 9]
  ------------------
  178|      6|		return 0;
  179|      6|	}
  180|      9|	return _is_numeric_string_ex(str, length, lval, dval, allow_errors, oflow_info, trailing_data);
  181|     15|}
zend_execute.c:zend_dval_to_lval_silent:
  138|      2|{
  139|      2|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  140|      0|		return 0;
  141|      2|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      2|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|      4|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      1|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 1, False: 1]
  |  |  |  Branch (114:70): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  142|      1|		return zend_dval_to_lval_slow(d);
  143|      1|	}
  144|      1|	return (zend_long)d;
  145|      2|}
zend_execute.c:zval_get_tmp_string:
  343|     43|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|     43|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|     43|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 23, False: 20]
  |  |  ------------------
  ------------------
  345|     23|		*tmp = NULL;
  346|     23|		return Z_STR_P(op);
  ------------------
  |  |  982|     23|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     23|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|     23|	} else {
  348|     20|		return *tmp = zval_get_string_func(op);
  349|     20|	}
  350|     43|}
zend_execute.c:zend_tmp_string_release:
  351|  18.1k|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|  18.1k|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|  18.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16.3k, False: 1.79k]
  |  |  ------------------
  ------------------
  353|  16.3k|		zend_string_release_ex(tmp, 0);
  354|  16.3k|	}
  355|  18.1k|}
zend_execute.c:fast_long_add_function:
  693|    789|{
  694|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  695|       |	__asm__ goto(
  696|       |		"movl	(%1), %%eax\n\t"
  697|       |		"addl   (%2), %%eax\n\t"
  698|       |		"jo     %l5\n\t"
  699|       |		"movl   %%eax, (%0)\n\t"
  700|       |		"movl   %3, %c4(%0)\n"
  701|       |		:
  702|       |		: "r"(&result->value),
  703|       |		  "r"(&op1->value),
  704|       |		  "r"(&op2->value),
  705|       |		  "n"(IS_LONG),
  706|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  707|       |		: "eax","cc", "memory"
  708|       |		: overflow);
  709|       |	return;
  710|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  711|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  712|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  713|       |	__asm__ goto(
  714|    789|		"movq	(%1), %%rax\n\t"
  715|    789|		"addq   (%2), %%rax\n\t"
  716|    789|		"jo     %l5\n\t"
  717|    789|		"movq   %%rax, (%0)\n\t"
  718|    789|		"movl   %3, %c4(%0)\n"
  719|    789|		:
  720|    789|		: "r"(&result->value),
  721|    789|		  "r"(&op1->value),
  722|    789|		  "r"(&op2->value),
  723|    789|		  "n"(IS_LONG),
  ------------------
  |  |  610|    789|#define IS_LONG						4
  ------------------
  724|    789|		  "n"(ZVAL_OFFSETOF_TYPE)
  ------------------
  |  |  526|    789|	(offsetof(zval, u1.type_info) - offsetof(zval, value))
  ------------------
  725|    789|		: "rax","cc", "memory"
  726|    789|		: overflow);
  727|    789|	return;
  728|      4|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  729|      4|	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  ------------------
  |  | 1082|      4|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      4|		zval *__z = (z);				\
  |  | 1084|      4|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      4|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      4|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      4|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      4|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  730|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  731|       |	__asm__ goto(
  732|       |		"ldr    x5, [%1]\n\t"
  733|       |		"ldr    x6, [%2]\n\t"
  734|       |		"adds	x5, x5, x6\n\t"
  735|       |		"bvs	%l5\n\t"
  736|       |		"mov	w6, %3\n\t"
  737|       |		"str	x5, [%0]\n\t"
  738|       |		"str	w6, [%0, %c4]\n"
  739|       |		:
  740|       |		: "r"(&result->value),
  741|       |		  "r"(&op1->value),
  742|       |		  "r"(&op2->value),
  743|       |		  "n"(IS_LONG),
  744|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  745|       |		: "x5", "x6", "cc", "memory"
  746|       |		: overflow);
  747|       |	return;
  748|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  749|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  750|       |#elif defined(PHP_HAVE_BUILTIN_SADDL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  751|       |	long lresult;
  752|       |	if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
  753|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  754|       |	} else {
  755|       |		ZVAL_LONG(result, lresult);
  756|       |	}
  757|       |#elif defined(PHP_HAVE_BUILTIN_SADDLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  758|       |	long long llresult;
  759|       |	if (UNEXPECTED(__builtin_saddll_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult))) {
  760|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  761|       |	} else {
  762|       |		ZVAL_LONG(result, llresult);
  763|       |	}
  764|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  765|       |	long lresult;
  766|       |	if (UNEXPECTED(FAILED(LongAdd(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult)))) {
  767|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  768|       |	} else {
  769|       |		ZVAL_LONG(result, lresult);
  770|       |	}
  771|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  772|       |	long long llresult;
  773|       |	if (UNEXPECTED(FAILED(LongLongAdd(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult)))) {
  774|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  775|       |	} else {
  776|       |		ZVAL_LONG(result, llresult);
  777|       |	}
  778|       |#else
  779|       |	/*
  780|       |	 * 'result' may alias with op1 or op2, so we need to
  781|       |	 * ensure that 'result' is not updated until after we
  782|       |	 * have read the values of op1 and op2.
  783|       |	 */
  784|       |
  785|       |	zend_long sum = (zend_long) ((zend_ulong) Z_LVAL_P(op1) + (zend_ulong) Z_LVAL_P(op2));
  786|       |
  787|       |	if (UNEXPECTED((Z_LVAL_P(op1) & LONG_SIGN_MASK) == (Z_LVAL_P(op2) & LONG_SIGN_MASK)
  788|       |		&& (Z_LVAL_P(op1) & LONG_SIGN_MASK) != (sum & LONG_SIGN_MASK))) {
  789|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  790|       |	} else {
  791|       |		ZVAL_LONG(result, sum);
  792|       |	}
  793|       |#endif
  794|      4|}
zend_execute.c:fast_long_sub_function:
  797|     35|{
  798|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  799|       |	__asm__ goto(
  800|       |		"movl	(%1), %%eax\n\t"
  801|       |		"subl   (%2), %%eax\n\t"
  802|       |		"jo     %l5\n\t"
  803|       |		"movl   %%eax, (%0)\n\t"
  804|       |		"movl   %3, %c4(%0)\n"
  805|       |		:
  806|       |		: "r"(&result->value),
  807|       |		  "r"(&op1->value),
  808|       |		  "r"(&op2->value),
  809|       |		  "n"(IS_LONG),
  810|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  811|       |		: "eax","cc", "memory"
  812|       |		: overflow);
  813|       |	return;
  814|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  815|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  816|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  817|       |	__asm__ goto(
  818|     35|		"movq	(%1), %%rax\n\t"
  819|     35|		"subq   (%2), %%rax\n\t"
  820|     35|		"jo     %l5\n\t"
  821|     35|		"movq   %%rax, (%0)\n\t"
  822|     35|		"movl   %3, %c4(%0)\n"
  823|     35|		:
  824|     35|		: "r"(&result->value),
  825|     35|		  "r"(&op1->value),
  826|     35|		  "r"(&op2->value),
  827|     35|		  "n"(IS_LONG),
  ------------------
  |  |  610|     35|#define IS_LONG						4
  ------------------
  828|     35|		  "n"(ZVAL_OFFSETOF_TYPE)
  ------------------
  |  |  526|     35|	(offsetof(zval, u1.type_info) - offsetof(zval, value))
  ------------------
  829|     35|		: "rax","cc", "memory"
  830|     35|		: overflow);
  831|     35|	return;
  832|      4|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  833|      4|	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  ------------------
  |  | 1082|      4|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      4|		zval *__z = (z);				\
  |  | 1084|      4|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      4|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      4|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      4|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      4|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  834|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  835|       |	__asm__ goto(
  836|       |		"ldr    x5, [%1]\n\t"
  837|       |		"ldr    x6, [%2]\n\t"
  838|       |		"subs	x5, x5, x6\n\t"
  839|       |		"bvs	%l5\n\t"
  840|       |		"mov	w6, %3\n\t"
  841|       |		"str	x5, [%0]\n\t"
  842|       |		"str	w6, [%0, %c4]\n"
  843|       |		:
  844|       |		: "r"(&result->value),
  845|       |		  "r"(&op1->value),
  846|       |		  "r"(&op2->value),
  847|       |		  "n"(IS_LONG),
  848|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  849|       |		: "x5", "x6", "cc", "memory"
  850|       |		: overflow);
  851|       |	return;
  852|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  853|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  854|       |#elif defined(PHP_HAVE_BUILTIN_SSUBL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  855|       |	long lresult;
  856|       |	if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
  857|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  858|       |	} else {
  859|       |		ZVAL_LONG(result, lresult);
  860|       |	}
  861|       |#elif defined(PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  862|       |	long long llresult;
  863|       |	if (UNEXPECTED(__builtin_ssubll_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult))) {
  864|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  865|       |	} else {
  866|       |		ZVAL_LONG(result, llresult);
  867|       |	}
  868|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  869|       |	long lresult;
  870|       |	if (UNEXPECTED(FAILED(LongSub(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult)))) {
  871|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  872|       |	} else {
  873|       |		ZVAL_LONG(result, lresult);
  874|       |	}
  875|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  876|       |	long long llresult;
  877|       |	if (UNEXPECTED(FAILED(LongLongSub(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult)))) {
  878|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  879|       |	} else {
  880|       |		ZVAL_LONG(result, llresult);
  881|       |	}
  882|       |#else
  883|       |	/*
  884|       |	 * 'result' may alias with op1 or op2, so we need to
  885|       |	 * ensure that 'result' is not updated until after we
  886|       |	 * have read the values of op1 and op2.
  887|       |	 */
  888|       |
  889|       |	zend_long sub = (zend_long) ((zend_ulong) Z_LVAL_P(op1) - (zend_ulong) Z_LVAL_P(op2));
  890|       |
  891|       |	if (UNEXPECTED((Z_LVAL_P(op1) & LONG_SIGN_MASK) != (Z_LVAL_P(op2) & LONG_SIGN_MASK)
  892|       |		&& (Z_LVAL_P(op1) & LONG_SIGN_MASK) != (sub & LONG_SIGN_MASK))) {
  893|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  894|       |	} else {
  895|       |		ZVAL_LONG(result, sub);
  896|       |	}
  897|       |#endif
  898|      4|}
zend_execute.c:i_zend_is_true:
  397|  19.2k|{
  398|  19.2k|	bool result = 0;
  399|       |
  400|  19.2k|again:
  401|  19.2k|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|  19.2k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  19.2k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  402|      1|		case IS_TRUE:
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (402:3): [True: 1, False: 19.2k]
  ------------------
  403|      1|			result = 1;
  404|      1|			break;
  405|  12.4k|		case IS_LONG:
  ------------------
  |  |  610|  12.4k|#define IS_LONG						4
  ------------------
  |  Branch (405:3): [True: 12.4k, False: 6.71k]
  ------------------
  406|  12.4k|			if (Z_LVAL_P(op)) {
  ------------------
  |  |  976|  12.4k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  12.4k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (975:25): [True: 12.3k, False: 131]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  407|  12.3k|				result = 1;
  408|  12.3k|			}
  409|  12.4k|			break;
  410|  2.37k|		case IS_DOUBLE:
  ------------------
  |  |  611|  2.37k|#define IS_DOUBLE					5
  ------------------
  |  Branch (410:3): [True: 2.37k, False: 16.8k]
  ------------------
  411|  2.37k|			if (UNEXPECTED(zend_isnan(Z_DVAL_P(op)))) {
  ------------------
  |  |  457|  2.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.37k]
  |  |  ------------------
  ------------------
  412|      0|				zend_nan_coerced_to_type_warning(_IS_BOOL);
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
  413|      0|			}
  414|  2.37k|			if (Z_DVAL_P(op)) {
  ------------------
  |  |  979|  2.37k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|  2.37k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (978:25): [True: 2.37k, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|  2.37k|				result = 1;
  416|  2.37k|			}
  417|  2.37k|			break;
  418|  3.49k|		case IS_STRING:
  ------------------
  |  |  612|  3.49k|#define IS_STRING					6
  ------------------
  |  Branch (418:3): [True: 3.49k, False: 15.7k]
  ------------------
  419|  3.49k|			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  988|  3.49k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  3.49k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  3.49k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  988|    206|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    206|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    412|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:25): [True: 206, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  985|    206|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    206|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    206|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (419:8): [True: 3.28k, False: 206]
  |  Branch (419:49): [True: 204, False: 2]
  ------------------
  420|  3.49k|				result = 1;
  421|  3.49k|			}
  422|  3.49k|			break;
  423|    575|		case IS_ARRAY:
  ------------------
  |  |  613|    575|#define IS_ARRAY					7
  ------------------
  |  Branch (423:3): [True: 575, False: 18.6k]
  ------------------
  424|    575|			if (zend_hash_num_elements(Z_ARRVAL_P(op))) {
  ------------------
  |  |  997|    575|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    575|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    575|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (424:8): [True: 492, False: 83]
  ------------------
  425|    492|				result = 1;
  426|    492|			}
  427|    575|			break;
  428|    254|		case IS_OBJECT:
  ------------------
  |  |  614|    254|#define IS_OBJECT					8
  ------------------
  |  Branch (428:3): [True: 254, False: 18.9k]
  ------------------
  429|    254|			if (EXPECTED(Z_OBJ_HT_P(op)->cast_object == zend_std_cast_object_tostring)) {
  ------------------
  |  |  456|    254|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 254, False: 0]
  |  |  ------------------
  ------------------
  430|    254|				result = 1;
  431|    254|			} else {
  432|      0|				result = zend_object_is_true(op);
  433|      0|			}
  434|    254|			break;
  435|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (435:3): [True: 0, False: 19.2k]
  ------------------
  436|      0|			if (EXPECTED(Z_RES_HANDLE_P(op))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  437|      0|				result = 1;
  438|      0|			}
  439|      0|			break;
  440|      2|		case IS_REFERENCE:
  ------------------
  |  |  616|      2|#define IS_REFERENCE				10
  ------------------
  |  Branch (440:3): [True: 2, False: 19.2k]
  ------------------
  441|      2|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|      2|			goto again;
  443|      0|			break;
  444|     10|		default:
  ------------------
  |  Branch (444:3): [True: 10, False: 19.1k]
  ------------------
  445|     10|			break;
  446|  19.2k|	}
  447|  19.2k|	return result;
  448|  19.2k|}
zend_execute.c:fast_is_identical_function:
  950|    327|{
  951|    327|	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|    327|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    327|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|    327|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    327|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (951:6): [True: 16, False: 311]
  ------------------
  952|     16|		return 0;
  953|    311|	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  669|    311|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    311|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  609|    311|#define IS_TRUE						3
  ------------------
  |  Branch (953:13): [True: 6, False: 305]
  ------------------
  954|      6|		return 1;
  955|      6|	}
  956|    305|	return zend_is_identical(op1, op2);
  957|    327|}
zend_execute.c:fast_is_not_identical_function:
  960|      1|{
  961|      1|	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (961:6): [True: 0, False: 1]
  ------------------
  962|      0|		return 1;
  963|      1|	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (963:13): [True: 1, False: 0]
  ------------------
  964|      1|		return 0;
  965|      1|	}
  966|      0|	return !zend_is_identical(op1, op2);
  967|      1|}
zend_execute.c:zend_fast_equal_strings:
  901|     11|{
  902|     11|	if (s1 == s2) {
  ------------------
  |  Branch (902:6): [True: 2, False: 9]
  ------------------
  903|      2|		return 1;
  904|      9|	} else if (ZSTR_VAL(s1)[0] > '9' || ZSTR_VAL(s2)[0] > '9') {
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	} else if (ZSTR_VAL(s1)[0] > '9' || ZSTR_VAL(s2)[0] > '9') {
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (904:13): [True: 6, False: 3]
  |  Branch (904:38): [True: 0, False: 3]
  ------------------
  905|      6|		return zend_string_equal_content(s1, s2);
  906|      6|	} else {
  907|      3|		return zendi_smart_streq(s1, s2);
  908|      3|	}
  909|     11|}
zend_execute.c:zval_try_get_tmp_string:
  369|  22.1k|static zend_always_inline zend_string *zval_try_get_tmp_string(const zval *op, zend_string **tmp) {
  370|  22.1k|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|  22.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3.79k, False: 18.3k]
  |  |  ------------------
  ------------------
  371|  3.79k|		zend_string *ret = Z_STR_P(op);
  ------------------
  |  |  982|  3.79k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  3.79k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  372|  3.79k|		*tmp = NULL;
  373|  3.79k|		ZEND_ASSUME(ret != NULL);
  ------------------
  |  |   99|  3.79k|# define ZEND_ASSUME(c)	__builtin_assume(c)
  ------------------
  374|  3.79k|		return ret;
  375|  18.3k|	} else {
  376|  18.3k|		return *tmp = zval_try_get_string_func(op);
  377|  18.3k|	}
  378|  22.1k|}
zend_execute.c:fast_long_increment_function:
  535|  7.21k|{
  536|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  537|       |	__asm__ goto(
  538|       |		"addl $1,(%0)\n\t"
  539|       |		"jo  %l1\n"
  540|       |		:
  541|       |		: "r"(&op1->value)
  542|       |		: "cc", "memory"
  543|       |		: overflow);
  544|       |	return;
  545|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  546|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  547|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  548|       |	__asm__ goto(
  549|  7.21k|		"addq $1,(%0)\n\t"
  550|  7.21k|		"jo  %l1\n"
  551|  7.21k|		:
  552|  7.21k|		: "r"(&op1->value)
  553|  7.21k|		: "cc", "memory"
  554|  7.21k|		: overflow);
  555|  7.21k|	return;
  556|      1|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  557|      1|	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  558|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  559|       |	__asm__ goto (
  560|       |		"ldr x5, [%0]\n\t"
  561|       |		"adds x5, x5, 1\n\t"
  562|       |		"bvs %l1\n"
  563|       |		"str x5, [%0]"
  564|       |		:
  565|       |		: "r"(&op1->value)
  566|       |		: "x5", "cc", "memory"
  567|       |		: overflow);
  568|       |	return;
  569|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  570|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  571|       |#elif defined(PHP_HAVE_BUILTIN_SADDL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  572|       |	long lresult;
  573|       |	if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
  574|       |		/* switch to double */
  575|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  576|       |	} else {
  577|       |		Z_LVAL_P(op1) = lresult;
  578|       |	}
  579|       |#elif defined(PHP_HAVE_BUILTIN_SADDLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  580|       |	long long llresult;
  581|       |	if (UNEXPECTED(__builtin_saddll_overflow(Z_LVAL_P(op1), 1, &llresult))) {
  582|       |		/* switch to double */
  583|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  584|       |	} else {
  585|       |		Z_LVAL_P(op1) = llresult;
  586|       |	}
  587|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  588|       |	long lresult;
  589|       |	if (UNEXPECTED(FAILED(LongAdd(Z_LVAL_P(op1), 1, &lresult)))) {
  590|       |		/* switch to double */
  591|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  592|       |	} else {
  593|       |		Z_LVAL_P(op1) = lresult;
  594|       |	}
  595|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  596|       |	long long llresult;
  597|       |	if (UNEXPECTED(FAILED(LongLongAdd(Z_LVAL_P(op1), 1, &llresult)))) {
  598|       |		/* switch to double */
  599|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  600|       |	} else {
  601|       |		Z_LVAL_P(op1) = llresult;
  602|       |	}
  603|       |#else
  604|       |	if (UNEXPECTED(Z_LVAL_P(op1) == ZEND_LONG_MAX)) {
  605|       |		/* switch to double */
  606|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  607|       |	} else {
  608|       |		Z_LVAL_P(op1)++;
  609|       |	}
  610|       |#endif
  611|      1|}
zend_execute.c:fast_long_decrement_function:
  614|    373|{
  615|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  616|       |	__asm__ goto(
  617|       |		"subl $1,(%0)\n\t"
  618|       |		"jo  %l1\n"
  619|       |		:
  620|       |		: "r"(&op1->value)
  621|       |		: "cc", "memory"
  622|       |		: overflow);
  623|       |	return;
  624|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  625|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  626|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  627|       |	__asm__ goto(
  628|    373|		"subq $1,(%0)\n\t"
  629|    373|		"jo  %l1\n"
  630|    373|		:
  631|    373|		: "r"(&op1->value)
  632|    373|		: "cc", "memory"
  633|    373|		: overflow);
  634|    373|	return;
  635|      3|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  636|      3|	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  ------------------
  |  | 1082|      3|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      3|		zval *__z = (z);				\
  |  | 1084|      3|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      3|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      3|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  637|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  638|       |	__asm__ goto (
  639|       |		"ldr x5, [%0]\n\t"
  640|       |		"subs x5 ,x5, 1\n\t"
  641|       |		"bvs %l1\n"
  642|       |		"str x5, [%0]"
  643|       |		:
  644|       |		: "r"(&op1->value)
  645|       |		: "x5", "cc", "memory"
  646|       |		: overflow);
  647|       |	return;
  648|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  649|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  650|       |#elif defined(PHP_HAVE_BUILTIN_SSUBL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  651|       |	long lresult;
  652|       |	if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
  653|       |		/* switch to double */
  654|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  655|       |	} else {
  656|       |		Z_LVAL_P(op1) = lresult;
  657|       |	}
  658|       |#elif defined(PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  659|       |	long long llresult;
  660|       |	if (UNEXPECTED(__builtin_ssubll_overflow(Z_LVAL_P(op1), 1, &llresult))) {
  661|       |		/* switch to double */
  662|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  663|       |	} else {
  664|       |		Z_LVAL_P(op1) = llresult;
  665|       |	}
  666|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  667|       |	long lresult;
  668|       |	if (UNEXPECTED(FAILED(LongSub(Z_LVAL_P(op1), 1, &lresult)))) {
  669|       |		/* switch to double */
  670|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  671|       |	} else {
  672|       |		Z_LVAL_P(op1) = lresult;
  673|       |	}
  674|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  675|       |	long long llresult;
  676|       |	if (UNEXPECTED(FAILED(LongLongSub(Z_LVAL_P(op1), 1, &llresult)))) {
  677|       |		/* switch to double */
  678|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  679|       |	} else {
  680|       |		Z_LVAL_P(op1) = llresult;
  681|       |	}
  682|       |#else
  683|       |	if (UNEXPECTED(Z_LVAL_P(op1) == ZEND_LONG_MIN)) {
  684|       |		/* switch to double */
  685|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  686|       |	} else {
  687|       |		Z_LVAL_P(op1)--;
  688|       |	}
  689|       |#endif
  690|      3|}
zend_execute.c:zval_get_long:
  330|     29|static zend_always_inline zend_long zval_get_long(const zval *op) {
  331|     29|	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  456|     29|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 16, False: 13]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, false);
  ------------------
  |  |  976|     16|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     16|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  332|     29|}
zend_execute.c:zval_get_double:
  336|     20|static zend_always_inline double zval_get_double(const zval *op) {
  337|     20|	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 20]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  338|     20|}
zend_execute.c:zval_get_string:
  339|     32|static zend_always_inline zend_string *zval_get_string(const zval *op) {
  340|     32|	return EXPECTED(Z_TYPE_P(op) == IS_STRING) ? zend_string_copy(Z_STR_P(op)) : zval_get_string_func(op);
  ------------------
  |  |  456|     32|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 21]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_STRING) ? zend_string_copy(Z_STR_P(op)) : zval_get_string_func(op);
  ------------------
  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  341|     32|}
zend_execute.c:is_numeric_string:
  183|      1|static zend_always_inline uint8_t is_numeric_string(const char *str, size_t length, zend_long *lval, double *dval, bool allow_errors) {
  184|      1|    return is_numeric_string_ex(str, length, lval, dval, allow_errors, NULL, NULL);
  185|      1|}
zend_execute.c:zval_get_long_ex:
  333|      1|static zend_always_inline zend_long zval_get_long_ex(const zval *op, bool is_strict) {
  334|      1|	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, is_strict);
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_LONG) ? Z_LVAL_P(op) : zval_get_long_func(op, is_strict);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  335|      1|}
zend_execute.c:zend_memrchr:
  231|     18|{
  232|     18|#if defined(HAVE_MEMRCHR) && !defined(__i386__)
  233|       |	/* On x86 memrchr() doesn't use SSE/AVX, so inlined version is faster */
  234|     18|	return (const void*)memrchr(s, c, n);
  235|       |#else
  236|       |	const unsigned char *e;
  237|       |	if (0 == n) {
  238|       |		return NULL;
  239|       |	}
  240|       |
  241|       |	for (e = (const unsigned char *)s + n - 1; e >= (const unsigned char *)s; e--) {
  242|       |		if (*e == (unsigned char)c) {
  243|       |			return (const void *)e;
  244|       |		}
  245|       |	}
  246|       |	return NULL;
  247|       |#endif
  248|     18|}
zend_execute.c:zend_string_tolower:
  483|     16|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     16|}
zend_execute.c:zend_unwrap_reference:
  997|     28|{
  998|     28|	if (Z_REFCOUNT_P(op) == 1) {
  ------------------
  |  | 1275|     28|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (998:6): [True: 2, False: 26]
  ------------------
  999|      2|		ZVAL_UNREF(op);
  ------------------
  |  | 1499|      2|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      2|		zval *_z = (z);									\
  |  | 1501|      2|		zend_reference *ref;							\
  |  | 1502|      2|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      2|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      2|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      2|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      2|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (999:3): [True: 0, False: 2]
  |  Branch (999:3): [True: 2, False: 0]
  ------------------
 1000|     26|	} else {
 1001|     26|		Z_DELREF_P(op);
  ------------------
  |  | 1278|     26|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
 1002|     26|		ZVAL_COPY(op, Z_REFVAL_P(op));
  ------------------
  |  | 1425|     26|	do {												\
  |  | 1426|     26|		zval *_z1 = (z);								\
  |  | 1427|     26|		const zval *_z2 = (v);							\
  |  | 1428|     26|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     26|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     26|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     26|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     26|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     26|	do {												\
  |  |  |  | 1408|     26|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     26|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     26|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     26|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     26|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     26|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     26|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     26|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 8, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      8|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      8|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      8|		}												\
  |  | 1434|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
 1003|     26|	}
 1004|     28|}
zend_fibers.c:instanceof_function:
   83|     10|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|     10|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 0, False: 10]
  |  Branch (84:30): [True: 10, False: 0]
  ------------------
   85|     10|}
zend_generators.c:instanceof_function:
   83|      4|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|      4|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 0, False: 4]
  |  Branch (84:30): [True: 3, False: 1]
  ------------------
   85|      4|}
zend_hash.c:zend_string_tolower:
  483|    140|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|    140|}
zend_inheritance.c:zend_string_tolower:
  483|     84|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     84|}
zend_inheritance.c:instanceof_function:
   83|     88|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|     88|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 0, False: 88]
  |  Branch (84:30): [True: 34, False: 54]
  ------------------
   85|     88|}
zend_inheritance.c:zval_get_tmp_string:
  343|      2|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|      2|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  345|      0|		*tmp = NULL;
  346|      0|		return Z_STR_P(op);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|      2|	} else {
  348|      2|		return *tmp = zval_get_string_func(op);
  349|      2|	}
  350|      2|}
zend_inheritance.c:zend_tmp_string_release:
  351|      2|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|      2|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  353|      2|		zend_string_release_ex(tmp, 0);
  354|      2|	}
  355|      2|}
zend_inheritance.c:fast_is_identical_function:
  950|      9|{
  951|      9|	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (951:6): [True: 2, False: 7]
  ------------------
  952|      2|		return 0;
  953|      7|	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  609|      7|#define IS_TRUE						3
  ------------------
  |  Branch (953:13): [True: 4, False: 3]
  ------------------
  954|      4|		return 1;
  955|      4|	}
  956|      3|	return zend_is_identical(op1, op2);
  957|      9|}
zend_ini_parser.c:is_numeric_string_ex:
  176|     18|{
  177|     18|	if (*str > '9') {
  ------------------
  |  Branch (177:6): [True: 0, False: 18]
  ------------------
  178|      0|		return 0;
  179|      0|	}
  180|     18|	return _is_numeric_string_ex(str, length, lval, dval, allow_errors, oflow_info, trailing_data);
  181|     18|}
zend_interfaces.c:i_zend_is_true:
  397|     15|{
  398|     15|	bool result = 0;
  399|       |
  400|     15|again:
  401|     15|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|     15|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     15|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  402|      7|		case IS_TRUE:
  ------------------
  |  |  609|      7|#define IS_TRUE						3
  ------------------
  |  Branch (402:3): [True: 7, False: 8]
  ------------------
  403|      7|			result = 1;
  404|      7|			break;
  405|      0|		case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (405:3): [True: 0, False: 15]
  ------------------
  406|      0|			if (Z_LVAL_P(op)) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (975:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  407|      0|				result = 1;
  408|      0|			}
  409|      0|			break;
  410|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (410:3): [True: 0, False: 15]
  ------------------
  411|      0|			if (UNEXPECTED(zend_isnan(Z_DVAL_P(op)))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  412|      0|				zend_nan_coerced_to_type_warning(_IS_BOOL);
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
  413|      0|			}
  414|      0|			if (Z_DVAL_P(op)) {
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (978:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|      0|				result = 1;
  416|      0|			}
  417|      0|			break;
  418|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (418:3): [True: 0, False: 15]
  ------------------
  419|      0|			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (419:8): [True: 0, False: 0]
  |  Branch (419:49): [True: 0, False: 0]
  ------------------
  420|      0|				result = 1;
  421|      0|			}
  422|      0|			break;
  423|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (423:3): [True: 0, False: 15]
  ------------------
  424|      0|			if (zend_hash_num_elements(Z_ARRVAL_P(op))) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (424:8): [True: 0, False: 0]
  ------------------
  425|      0|				result = 1;
  426|      0|			}
  427|      0|			break;
  428|      0|		case IS_OBJECT:
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (428:3): [True: 0, False: 15]
  ------------------
  429|      0|			if (EXPECTED(Z_OBJ_HT_P(op)->cast_object == zend_std_cast_object_tostring)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  430|      0|				result = 1;
  431|      0|			} else {
  432|      0|				result = zend_object_is_true(op);
  433|      0|			}
  434|      0|			break;
  435|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (435:3): [True: 0, False: 15]
  ------------------
  436|      0|			if (EXPECTED(Z_RES_HANDLE_P(op))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  437|      0|				result = 1;
  438|      0|			}
  439|      0|			break;
  440|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (440:3): [True: 0, False: 15]
  ------------------
  441|      0|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|      0|			goto again;
  443|      0|			break;
  444|      8|		default:
  ------------------
  |  Branch (444:3): [True: 8, False: 7]
  ------------------
  445|      8|			break;
  446|     15|	}
  447|     15|	return result;
  448|     15|}
zend_interfaces.c:zend_unwrap_reference:
  997|      3|{
  998|      3|	if (Z_REFCOUNT_P(op) == 1) {
  ------------------
  |  | 1275|      3|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (998:6): [True: 3, False: 0]
  ------------------
  999|      3|		ZVAL_UNREF(op);
  ------------------
  |  | 1499|      3|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      3|		zval *_z = (z);									\
  |  | 1501|      3|		zend_reference *ref;							\
  |  | 1502|      3|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      3|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      3|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      3|	do {												\
  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      3|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      3|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (999:3): [True: 0, False: 3]
  |  Branch (999:3): [True: 3, False: 0]
  ------------------
 1000|      3|	} else {
 1001|      0|		Z_DELREF_P(op);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
 1002|      0|		ZVAL_COPY(op, Z_REFVAL_P(op));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1003|      0|	}
 1004|      3|}
zend_object_handlers.c:zend_unwrap_reference:
  997|      2|{
  998|      2|	if (Z_REFCOUNT_P(op) == 1) {
  ------------------
  |  | 1275|      2|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (998:6): [True: 0, False: 2]
  ------------------
  999|      0|		ZVAL_UNREF(op);
  ------------------
  |  | 1499|      0|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      0|		zval *_z = (z);									\
  |  | 1501|      0|		zend_reference *ref;							\
  |  | 1502|      0|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      0|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      0|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      0|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (999:3): [True: 0, False: 0]
  |  Branch (999:3): [True: 0, False: 0]
  ------------------
 1000|      2|	} else {
 1001|      2|		Z_DELREF_P(op);
  ------------------
  |  | 1278|      2|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
 1002|      2|		ZVAL_COPY(op, Z_REFVAL_P(op));
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1003|      2|	}
 1004|      2|}
zend_object_handlers.c:zend_string_tolower:
  483|     15|static zend_always_inline zend_string* zend_string_tolower(zend_string *str) {
  484|       |	return zend_string_tolower_ex(str, false);
  485|     15|}
zend_object_handlers.c:instanceof_function:
   83|      2|		const zend_class_entry *instance_ce, const zend_class_entry *ce) {
   84|      2|	return instance_ce == ce || instanceof_function_slow(instance_ce, ce);
  ------------------
  |  Branch (84:9): [True: 2, False: 0]
  |  Branch (84:30): [True: 0, False: 0]
  ------------------
   85|      2|}
zend_operators.c:is_numeric_string:
  183|    766|static zend_always_inline uint8_t is_numeric_string(const char *str, size_t length, zend_long *lval, double *dval, bool allow_errors) {
  184|    766|    return is_numeric_string_ex(str, length, lval, dval, allow_errors, NULL, NULL);
  185|    766|}
zend_operators.c:zend_dval_to_lval:
  126|  5.03k|{
  127|  5.03k|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|  5.03k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 5.02k]
  |  |  ------------------
  ------------------
  128|      8|		zend_oob_double_to_long_error(d);
  129|      8|		return 0;
  130|  5.02k|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|  5.02k|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|  10.0k|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|  4.55k|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 463, False: 4.55k]
  |  |  |  Branch (114:70): [True: 441, False: 4.11k]
  |  |  ------------------
  ------------------
  131|    904|		zend_oob_double_to_long_error(d);
  132|    904|		return zend_dval_to_lval_slow(d);
  133|    904|	}
  134|  4.11k|	return (zend_long)d;
  135|  5.03k|}
zend_operators.c:zend_is_long_compatible:
  159|  5.02k|static zend_always_inline bool zend_is_long_compatible(double d, zend_long l) {
  160|  5.02k|	return (double)l == d;
  161|  5.02k|}
zend_operators.c:zend_dval_to_lval_cap:
  149|      9|{
  150|      9|	if (UNEXPECTED(!zend_finite(d))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  ------------------
  ------------------
  151|      1|		return 0;
  152|      8|	} else if (!ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|      8|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|     16|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|      5|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 3, False: 5]
  |  |  |  Branch (114:70): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  153|      3|		return (d > 0 ? ZEND_LONG_MAX : ZEND_LONG_MIN);
  ------------------
  |  |   34|      3|# define ZEND_LONG_MAX INT64_MAX
  ------------------
              		return (d > 0 ? ZEND_LONG_MAX : ZEND_LONG_MIN);
  ------------------
  |  |   35|      3|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (153:11): [True: 3, False: 0]
  ------------------
  154|      3|	}
  155|      5|	return (zend_long)d;
  156|      9|}
zend_operators.c:fast_long_add_function:
  693|  1.46k|{
  694|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  695|       |	__asm__ goto(
  696|       |		"movl	(%1), %%eax\n\t"
  697|       |		"addl   (%2), %%eax\n\t"
  698|       |		"jo     %l5\n\t"
  699|       |		"movl   %%eax, (%0)\n\t"
  700|       |		"movl   %3, %c4(%0)\n"
  701|       |		:
  702|       |		: "r"(&result->value),
  703|       |		  "r"(&op1->value),
  704|       |		  "r"(&op2->value),
  705|       |		  "n"(IS_LONG),
  706|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  707|       |		: "eax","cc", "memory"
  708|       |		: overflow);
  709|       |	return;
  710|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  711|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  712|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  713|       |	__asm__ goto(
  714|  1.46k|		"movq	(%1), %%rax\n\t"
  715|  1.46k|		"addq   (%2), %%rax\n\t"
  716|  1.46k|		"jo     %l5\n\t"
  717|  1.46k|		"movq   %%rax, (%0)\n\t"
  718|  1.46k|		"movl   %3, %c4(%0)\n"
  719|  1.46k|		:
  720|  1.46k|		: "r"(&result->value),
  721|  1.46k|		  "r"(&op1->value),
  722|  1.46k|		  "r"(&op2->value),
  723|  1.46k|		  "n"(IS_LONG),
  ------------------
  |  |  610|  1.46k|#define IS_LONG						4
  ------------------
  724|  1.46k|		  "n"(ZVAL_OFFSETOF_TYPE)
  ------------------
  |  |  526|  1.46k|	(offsetof(zval, u1.type_info) - offsetof(zval, value))
  ------------------
  725|  1.46k|		: "rax","cc", "memory"
  726|  1.46k|		: overflow);
  727|  1.46k|	return;
  728|      7|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  729|      7|	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  ------------------
  |  | 1082|      7|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      7|		zval *__z = (z);				\
  |  | 1084|      7|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      7|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      7|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      7|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      7|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  730|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  731|       |	__asm__ goto(
  732|       |		"ldr    x5, [%1]\n\t"
  733|       |		"ldr    x6, [%2]\n\t"
  734|       |		"adds	x5, x5, x6\n\t"
  735|       |		"bvs	%l5\n\t"
  736|       |		"mov	w6, %3\n\t"
  737|       |		"str	x5, [%0]\n\t"
  738|       |		"str	w6, [%0, %c4]\n"
  739|       |		:
  740|       |		: "r"(&result->value),
  741|       |		  "r"(&op1->value),
  742|       |		  "r"(&op2->value),
  743|       |		  "n"(IS_LONG),
  744|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  745|       |		: "x5", "x6", "cc", "memory"
  746|       |		: overflow);
  747|       |	return;
  748|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  749|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  750|       |#elif defined(PHP_HAVE_BUILTIN_SADDL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  751|       |	long lresult;
  752|       |	if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
  753|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  754|       |	} else {
  755|       |		ZVAL_LONG(result, lresult);
  756|       |	}
  757|       |#elif defined(PHP_HAVE_BUILTIN_SADDLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  758|       |	long long llresult;
  759|       |	if (UNEXPECTED(__builtin_saddll_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult))) {
  760|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  761|       |	} else {
  762|       |		ZVAL_LONG(result, llresult);
  763|       |	}
  764|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  765|       |	long lresult;
  766|       |	if (UNEXPECTED(FAILED(LongAdd(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult)))) {
  767|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  768|       |	} else {
  769|       |		ZVAL_LONG(result, lresult);
  770|       |	}
  771|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  772|       |	long long llresult;
  773|       |	if (UNEXPECTED(FAILED(LongLongAdd(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult)))) {
  774|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  775|       |	} else {
  776|       |		ZVAL_LONG(result, llresult);
  777|       |	}
  778|       |#else
  779|       |	/*
  780|       |	 * 'result' may alias with op1 or op2, so we need to
  781|       |	 * ensure that 'result' is not updated until after we
  782|       |	 * have read the values of op1 and op2.
  783|       |	 */
  784|       |
  785|       |	zend_long sum = (zend_long) ((zend_ulong) Z_LVAL_P(op1) + (zend_ulong) Z_LVAL_P(op2));
  786|       |
  787|       |	if (UNEXPECTED((Z_LVAL_P(op1) & LONG_SIGN_MASK) == (Z_LVAL_P(op2) & LONG_SIGN_MASK)
  788|       |		&& (Z_LVAL_P(op1) & LONG_SIGN_MASK) != (sum & LONG_SIGN_MASK))) {
  789|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2));
  790|       |	} else {
  791|       |		ZVAL_LONG(result, sum);
  792|       |	}
  793|       |#endif
  794|      7|}
zend_operators.c:fast_long_sub_function:
  797|  1.31k|{
  798|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  799|       |	__asm__ goto(
  800|       |		"movl	(%1), %%eax\n\t"
  801|       |		"subl   (%2), %%eax\n\t"
  802|       |		"jo     %l5\n\t"
  803|       |		"movl   %%eax, (%0)\n\t"
  804|       |		"movl   %3, %c4(%0)\n"
  805|       |		:
  806|       |		: "r"(&result->value),
  807|       |		  "r"(&op1->value),
  808|       |		  "r"(&op2->value),
  809|       |		  "n"(IS_LONG),
  810|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  811|       |		: "eax","cc", "memory"
  812|       |		: overflow);
  813|       |	return;
  814|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  815|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  816|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  817|       |	__asm__ goto(
  818|  1.31k|		"movq	(%1), %%rax\n\t"
  819|  1.31k|		"subq   (%2), %%rax\n\t"
  820|  1.31k|		"jo     %l5\n\t"
  821|  1.31k|		"movq   %%rax, (%0)\n\t"
  822|  1.31k|		"movl   %3, %c4(%0)\n"
  823|  1.31k|		:
  824|  1.31k|		: "r"(&result->value),
  825|  1.31k|		  "r"(&op1->value),
  826|  1.31k|		  "r"(&op2->value),
  827|  1.31k|		  "n"(IS_LONG),
  ------------------
  |  |  610|  1.31k|#define IS_LONG						4
  ------------------
  828|  1.31k|		  "n"(ZVAL_OFFSETOF_TYPE)
  ------------------
  |  |  526|  1.31k|	(offsetof(zval, u1.type_info) - offsetof(zval, value))
  ------------------
  829|  1.31k|		: "rax","cc", "memory"
  830|  1.31k|		: overflow);
  831|  1.31k|	return;
  832|      1|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  833|      1|	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  834|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  835|       |	__asm__ goto(
  836|       |		"ldr    x5, [%1]\n\t"
  837|       |		"ldr    x6, [%2]\n\t"
  838|       |		"subs	x5, x5, x6\n\t"
  839|       |		"bvs	%l5\n\t"
  840|       |		"mov	w6, %3\n\t"
  841|       |		"str	x5, [%0]\n\t"
  842|       |		"str	w6, [%0, %c4]\n"
  843|       |		:
  844|       |		: "r"(&result->value),
  845|       |		  "r"(&op1->value),
  846|       |		  "r"(&op2->value),
  847|       |		  "n"(IS_LONG),
  848|       |		  "n"(ZVAL_OFFSETOF_TYPE)
  849|       |		: "x5", "x6", "cc", "memory"
  850|       |		: overflow);
  851|       |	return;
  852|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  853|       |	ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  854|       |#elif defined(PHP_HAVE_BUILTIN_SSUBL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  855|       |	long lresult;
  856|       |	if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
  857|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  858|       |	} else {
  859|       |		ZVAL_LONG(result, lresult);
  860|       |	}
  861|       |#elif defined(PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  862|       |	long long llresult;
  863|       |	if (UNEXPECTED(__builtin_ssubll_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult))) {
  864|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  865|       |	} else {
  866|       |		ZVAL_LONG(result, llresult);
  867|       |	}
  868|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  869|       |	long lresult;
  870|       |	if (UNEXPECTED(FAILED(LongSub(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult)))) {
  871|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  872|       |	} else {
  873|       |		ZVAL_LONG(result, lresult);
  874|       |	}
  875|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  876|       |	long long llresult;
  877|       |	if (UNEXPECTED(FAILED(LongLongSub(Z_LVAL_P(op1), Z_LVAL_P(op2), &llresult)))) {
  878|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  879|       |	} else {
  880|       |		ZVAL_LONG(result, llresult);
  881|       |	}
  882|       |#else
  883|       |	/*
  884|       |	 * 'result' may alias with op1 or op2, so we need to
  885|       |	 * ensure that 'result' is not updated until after we
  886|       |	 * have read the values of op1 and op2.
  887|       |	 */
  888|       |
  889|       |	zend_long sub = (zend_long) ((zend_ulong) Z_LVAL_P(op1) - (zend_ulong) Z_LVAL_P(op2));
  890|       |
  891|       |	if (UNEXPECTED((Z_LVAL_P(op1) & LONG_SIGN_MASK) != (Z_LVAL_P(op2) & LONG_SIGN_MASK)
  892|       |		&& (Z_LVAL_P(op1) & LONG_SIGN_MASK) != (sub & LONG_SIGN_MASK))) {
  893|       |		ZVAL_DOUBLE(result, (double) Z_LVAL_P(op1) - (double) Z_LVAL_P(op2));
  894|       |	} else {
  895|       |		ZVAL_LONG(result, sub);
  896|       |	}
  897|       |#endif
  898|      1|}
zend_operators.c:zend_dval_to_lval_safe:
  164|  5.01k|{
  165|  5.01k|	zend_long l = zend_dval_to_lval(d);
  166|  5.01k|	if (!zend_is_long_compatible(d, l) && ZEND_DOUBLE_FITS_LONG(d)) {
  ------------------
  |  |  114|  4.86k|#	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   34|  9.73k|# define ZEND_LONG_MAX INT64_MAX
  |  |  ------------------
  |  |               #	define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN))
  |  |  ------------------
  |  |  |  |   35|  4.40k|# define ZEND_LONG_MIN INT64_MIN
  |  |  ------------------
  |  |  |  Branch (114:38): [True: 466, False: 4.40k]
  |  |  |  Branch (114:70): [True: 445, False: 3.95k]
  |  |  ------------------
  ------------------
  |  Branch (166:6): [True: 4.86k, False: 152]
  ------------------
  167|  3.95k|		zend_incompatible_double_to_long_error(d);
  168|  3.95k|	}
  169|  5.01k|	return l;
  170|  5.01k|}
zend_operators.c:zval_get_tmp_string:
  343|    132|static zend_always_inline zend_string *zval_get_tmp_string(const zval *op, zend_string **tmp) {
  344|    132|	if (EXPECTED(Z_TYPE_P(op) == IS_STRING)) {
  ------------------
  |  |  456|    132|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 92, False: 40]
  |  |  ------------------
  ------------------
  345|     92|		*tmp = NULL;
  346|     92|		return Z_STR_P(op);
  ------------------
  |  |  982|     92|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     92|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  347|     92|	} else {
  348|     40|		return *tmp = zval_get_string_func(op);
  349|     40|	}
  350|    132|}
zend_operators.c:zend_tmp_string_release:
  351|    139|static zend_always_inline void zend_tmp_string_release(zend_string *tmp) {
  352|    139|	if (UNEXPECTED(tmp)) {
  ------------------
  |  |  457|    139|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 42, False: 97]
  |  |  ------------------
  ------------------
  353|     42|		zend_string_release_ex(tmp, 0);
  354|     42|	}
  355|    139|}
zend_operators.c:zval_get_double:
  336|     10|static zend_always_inline double zval_get_double(const zval *op) {
  337|     10|	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 7]
  |  |  ------------------
  ------------------
              	return EXPECTED(Z_TYPE_P(op) == IS_DOUBLE) ? Z_DVAL_P(op) : zval_get_double_func(op);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  338|     10|}
zend_operators.c:fast_is_not_identical_function:
  960|     12|{
  961|     12|	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|     12|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) {
  ------------------
  |  |  669|     12|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (961:6): [True: 0, False: 12]
  ------------------
  962|      0|		return 1;
  963|     12|	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  669|     12|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op1) <= IS_TRUE) {
  ------------------
  |  |  609|     12|#define IS_TRUE						3
  ------------------
  |  Branch (963:13): [True: 1, False: 11]
  ------------------
  964|      1|		return 0;
  965|      1|	}
  966|     11|	return !zend_is_identical(op1, op2);
  967|     12|}
zend_operators.c:fast_long_increment_function:
  535|     46|{
  536|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  537|       |	__asm__ goto(
  538|       |		"addl $1,(%0)\n\t"
  539|       |		"jo  %l1\n"
  540|       |		:
  541|       |		: "r"(&op1->value)
  542|       |		: "cc", "memory"
  543|       |		: overflow);
  544|       |	return;
  545|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  546|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  547|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  548|       |	__asm__ goto(
  549|     46|		"addq $1,(%0)\n\t"
  550|     46|		"jo  %l1\n"
  551|     46|		:
  552|     46|		: "r"(&op1->value)
  553|     46|		: "cc", "memory"
  554|     46|		: overflow);
  555|     46|	return;
  556|      0|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  557|      0|	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  558|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  559|       |	__asm__ goto (
  560|       |		"ldr x5, [%0]\n\t"
  561|       |		"adds x5, x5, 1\n\t"
  562|       |		"bvs %l1\n"
  563|       |		"str x5, [%0]"
  564|       |		:
  565|       |		: "r"(&op1->value)
  566|       |		: "x5", "cc", "memory"
  567|       |		: overflow);
  568|       |	return;
  569|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  570|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  571|       |#elif defined(PHP_HAVE_BUILTIN_SADDL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  572|       |	long lresult;
  573|       |	if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
  574|       |		/* switch to double */
  575|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  576|       |	} else {
  577|       |		Z_LVAL_P(op1) = lresult;
  578|       |	}
  579|       |#elif defined(PHP_HAVE_BUILTIN_SADDLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  580|       |	long long llresult;
  581|       |	if (UNEXPECTED(__builtin_saddll_overflow(Z_LVAL_P(op1), 1, &llresult))) {
  582|       |		/* switch to double */
  583|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  584|       |	} else {
  585|       |		Z_LVAL_P(op1) = llresult;
  586|       |	}
  587|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  588|       |	long lresult;
  589|       |	if (UNEXPECTED(FAILED(LongAdd(Z_LVAL_P(op1), 1, &lresult)))) {
  590|       |		/* switch to double */
  591|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  592|       |	} else {
  593|       |		Z_LVAL_P(op1) = lresult;
  594|       |	}
  595|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  596|       |	long long llresult;
  597|       |	if (UNEXPECTED(FAILED(LongLongAdd(Z_LVAL_P(op1), 1, &llresult)))) {
  598|       |		/* switch to double */
  599|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  600|       |	} else {
  601|       |		Z_LVAL_P(op1) = llresult;
  602|       |	}
  603|       |#else
  604|       |	if (UNEXPECTED(Z_LVAL_P(op1) == ZEND_LONG_MAX)) {
  605|       |		/* switch to double */
  606|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MAX + 1.0);
  607|       |	} else {
  608|       |		Z_LVAL_P(op1)++;
  609|       |	}
  610|       |#endif
  611|      0|}
zend_operators.c:fast_long_decrement_function:
  614|      4|{
  615|       |#if ZEND_USE_ASM_ARITHMETIC && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
  616|       |	__asm__ goto(
  617|       |		"subl $1,(%0)\n\t"
  618|       |		"jo  %l1\n"
  619|       |		:
  620|       |		: "r"(&op1->value)
  621|       |		: "cc", "memory"
  622|       |		: overflow);
  623|       |	return;
  624|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  625|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  626|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__x86_64__)
  627|       |	__asm__ goto(
  628|      4|		"subq $1,(%0)\n\t"
  629|      4|		"jo  %l1\n"
  630|      4|		:
  631|      4|		: "r"(&op1->value)
  632|      4|		: "cc", "memory"
  633|      4|		: overflow);
  634|      4|	return;
  635|      0|overflow: ZEND_ATTRIBUTE_COLD_LABEL
  636|      0|	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  637|       |#elif ZEND_USE_ASM_ARITHMETIC && defined(__aarch64__)
  638|       |	__asm__ goto (
  639|       |		"ldr x5, [%0]\n\t"
  640|       |		"subs x5 ,x5, 1\n\t"
  641|       |		"bvs %l1\n"
  642|       |		"str x5, [%0]"
  643|       |		:
  644|       |		: "r"(&op1->value)
  645|       |		: "x5", "cc", "memory"
  646|       |		: overflow);
  647|       |	return;
  648|       |overflow: ZEND_ATTRIBUTE_COLD_LABEL
  649|       |	ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  650|       |#elif defined(PHP_HAVE_BUILTIN_SSUBL_OVERFLOW) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  651|       |	long lresult;
  652|       |	if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
  653|       |		/* switch to double */
  654|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  655|       |	} else {
  656|       |		Z_LVAL_P(op1) = lresult;
  657|       |	}
  658|       |#elif defined(PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  659|       |	long long llresult;
  660|       |	if (UNEXPECTED(__builtin_ssubll_overflow(Z_LVAL_P(op1), 1, &llresult))) {
  661|       |		/* switch to double */
  662|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  663|       |	} else {
  664|       |		Z_LVAL_P(op1) = llresult;
  665|       |	}
  666|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG == SIZEOF_ZEND_LONG
  667|       |	long lresult;
  668|       |	if (UNEXPECTED(FAILED(LongSub(Z_LVAL_P(op1), 1, &lresult)))) {
  669|       |		/* switch to double */
  670|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  671|       |	} else {
  672|       |		Z_LVAL_P(op1) = lresult;
  673|       |	}
  674|       |#elif defined(ZEND_WIN32) && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG
  675|       |	long long llresult;
  676|       |	if (UNEXPECTED(FAILED(LongLongSub(Z_LVAL_P(op1), 1, &llresult)))) {
  677|       |		/* switch to double */
  678|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  679|       |	} else {
  680|       |		Z_LVAL_P(op1) = llresult;
  681|       |	}
  682|       |#else
  683|       |	if (UNEXPECTED(Z_LVAL_P(op1) == ZEND_LONG_MIN)) {
  684|       |		/* switch to double */
  685|       |		ZVAL_DOUBLE(op1, (double)ZEND_LONG_MIN - 1.0);
  686|       |	} else {
  687|       |		Z_LVAL_P(op1)--;
  688|       |	}
  689|       |#endif
  690|      0|}
zend_operators.c:i_zend_is_true:
  397|  5.45k|{
  398|  5.45k|	bool result = 0;
  399|       |
  400|  5.45k|again:
  401|  5.45k|	switch (Z_TYPE_P(op)) {
  ------------------
  |  |  669|  5.45k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  5.45k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  402|    799|		case IS_TRUE:
  ------------------
  |  |  609|    799|#define IS_TRUE						3
  ------------------
  |  Branch (402:3): [True: 799, False: 4.65k]
  ------------------
  403|    799|			result = 1;
  404|    799|			break;
  405|  2.11k|		case IS_LONG:
  ------------------
  |  |  610|  2.11k|#define IS_LONG						4
  ------------------
  |  Branch (405:3): [True: 2.11k, False: 3.33k]
  ------------------
  406|  2.11k|			if (Z_LVAL_P(op)) {
  ------------------
  |  |  976|  2.11k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|  2.11k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (975:25): [True: 1.85k, False: 265]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  407|  1.85k|				result = 1;
  408|  1.85k|			}
  409|  2.11k|			break;
  410|  1.15k|		case IS_DOUBLE:
  ------------------
  |  |  611|  1.15k|#define IS_DOUBLE					5
  ------------------
  |  Branch (410:3): [True: 1.15k, False: 4.30k]
  ------------------
  411|  1.15k|			if (UNEXPECTED(zend_isnan(Z_DVAL_P(op)))) {
  ------------------
  |  |  457|  1.15k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.15k]
  |  |  ------------------
  ------------------
  412|      0|				zend_nan_coerced_to_type_warning(_IS_BOOL);
  ------------------
  |  |  635|      0|#define _IS_BOOL					18
  ------------------
  413|      0|			}
  414|  1.15k|			if (Z_DVAL_P(op)) {
  ------------------
  |  |  979|  1.15k|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|  1.15k|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (978:25): [True: 211, False: 944]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|    211|				result = 1;
  416|    211|			}
  417|  1.15k|			break;
  418|    149|		case IS_STRING:
  ------------------
  |  |  612|    149|#define IS_STRING					6
  ------------------
  |  Branch (418:3): [True: 149, False: 5.30k]
  ------------------
  419|    149|			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  988|    149|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    149|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    149|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  988|     16|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     16|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     32|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:25): [True: 12, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(op) > 1 || (Z_STRLEN_P(op) && Z_STRVAL_P(op)[0] != '0')) {
  ------------------
  |  |  985|     12|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     12|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (419:8): [True: 133, False: 16]
  |  Branch (419:49): [True: 12, False: 0]
  ------------------
  420|    145|				result = 1;
  421|    145|			}
  422|    149|			break;
  423|  1.17k|		case IS_ARRAY:
  ------------------
  |  |  613|  1.17k|#define IS_ARRAY					7
  ------------------
  |  Branch (423:3): [True: 1.17k, False: 4.27k]
  ------------------
  424|  1.17k|			if (zend_hash_num_elements(Z_ARRVAL_P(op))) {
  ------------------
  |  |  997|  1.17k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  1.17k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  1.17k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (424:8): [True: 1.10k, False: 78]
  ------------------
  425|  1.10k|				result = 1;
  426|  1.10k|			}
  427|  1.17k|			break;
  428|      2|		case IS_OBJECT:
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (428:3): [True: 2, False: 5.45k]
  ------------------
  429|      2|			if (EXPECTED(Z_OBJ_HT_P(op)->cast_object == zend_std_cast_object_tostring)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  430|      2|				result = 1;
  431|      2|			} else {
  432|      0|				result = zend_object_is_true(op);
  433|      0|			}
  434|      2|			break;
  435|      0|		case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (435:3): [True: 0, False: 5.45k]
  ------------------
  436|      0|			if (EXPECTED(Z_RES_HANDLE_P(op))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  437|      0|				result = 1;
  438|      0|			}
  439|      0|			break;
  440|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (440:3): [True: 0, False: 5.45k]
  ------------------
  441|      0|			op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|      0|			goto again;
  443|      0|			break;
  444|     56|		default:
  ------------------
  |  Branch (444:3): [True: 56, False: 5.39k]
  ------------------
  445|     56|			break;
  446|  5.45k|	}
  447|  5.45k|	return result;
  448|  5.45k|}
zend_operators.c:is_numeric_string_ex:
  176|  4.07k|{
  177|  4.07k|	if (*str > '9') {
  ------------------
  |  Branch (177:6): [True: 646, False: 3.42k]
  ------------------
  178|    646|		return 0;
  179|    646|	}
  180|  3.42k|	return _is_numeric_string_ex(str, length, lval, dval, allow_errors, oflow_info, trailing_data);
  181|  4.07k|}
zend_operators.c:zend_print_long_to_buf:
  980|  3.79k|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|  3.79k|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 1.13k, False: 2.65k]
  ------------------
  982|  1.13k|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|  1.13k|	    *--result = '-';
  984|  1.13k|		return result;
  985|  2.65k|	} else {
  986|  2.65k|	    return zend_print_ulong_to_buf(buf, num);
  987|  2.65k|	}
  988|  3.79k|}
zend_operators.c:zend_print_ulong_to_buf:
  970|  3.79k|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|  3.79k|	*buf = '\0';
  972|  10.0k|	do {
  973|  10.0k|		*--buf = (char) (num % 10) + '0';
  974|  10.0k|		num /= 10;
  975|  10.0k|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 6.25k, False: 3.79k]
  ------------------
  976|  3.79k|	return buf;
  977|  3.79k|}
zend_smart_str.c:zend_print_long_to_buf:
  980|     25|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|     25|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 2, False: 23]
  ------------------
  982|      2|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      2|	    *--result = '-';
  984|      2|		return result;
  985|     23|	} else {
  986|     23|	    return zend_print_ulong_to_buf(buf, num);
  987|     23|	}
  988|     25|}
zend_smart_str.c:zend_print_ulong_to_buf:
  970|     25|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|     25|	*buf = '\0';
  972|     55|	do {
  973|     55|		*--buf = (char) (num % 10) + '0';
  974|     55|		num /= 10;
  975|     55|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 30, False: 25]
  ------------------
  976|     25|	return buf;
  977|     25|}
zend_string.c:zend_mempcpy:
  304|  1.95k|{
  305|  1.95k|#if defined(HAVE_MEMPCPY)
  306|  1.95k|	return mempcpy(dest, src, n);
  307|       |#else
  308|       |	return (char *)memcpy(dest, src, n) + n;
  309|       |#endif
  310|  1.95k|}
zend.c:zend_print_ulong_to_buf:
  970|     91|static zend_always_inline char *zend_print_ulong_to_buf(char *buf, zend_ulong num) {
  971|     91|	*buf = '\0';
  972|    110|	do {
  973|    110|		*--buf = (char) (num % 10) + '0';
  974|    110|		num /= 10;
  975|    110|	} while (num > 0);
  ------------------
  |  Branch (975:11): [True: 19, False: 91]
  ------------------
  976|     91|	return buf;
  977|     91|}
zend.c:zend_print_long_to_buf:
  980|     91|static zend_always_inline char *zend_print_long_to_buf(char *buf, zend_long num) {
  981|     91|	if (num < 0) {
  ------------------
  |  Branch (981:6): [True: 2, False: 89]
  ------------------
  982|      2|	    char *result = zend_print_ulong_to_buf(buf, ~((zend_ulong) num) + 1);
  983|      2|	    *--result = '-';
  984|      2|		return result;
  985|     89|	} else {
  986|     89|	    return zend_print_ulong_to_buf(buf, num);
  987|     89|	}
  988|     91|}
fuzzer-sapi.c:zend_mempcpy:
  304|      2|{
  305|      2|#if defined(HAVE_MEMPCPY)
  306|      2|	return mempcpy(dest, src, n);
  307|       |#else
  308|       |	return (char *)memcpy(dest, src, n) + n;
  309|       |#endif
  310|      2|}

zend_hooked_object_build_properties:
  132|      2|{
  133|      2|	if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  134|      0|		zobj = zend_lazy_object_init(zobj);
  135|      0|		if (UNEXPECTED(!zobj)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  136|      0|			return (zend_array*) &zend_empty_array;
  137|      0|		}
  138|      0|	}
  139|       |
  140|      2|	return zho_build_properties_ex(zobj, false, false, true);
  141|      2|}
zend_hooked_object_get_iterator:
  367|      6|{
  368|      6|	zend_object *zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  369|      6|	if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
  370|      2|		zobj = zend_lazy_object_init(zobj);
  371|      2|		if (UNEXPECTED(!zobj)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  372|      2|			return NULL;
  373|      2|		}
  374|      2|	}
  375|       |
  376|      4|	zend_hooked_object_iterator *iterator = emalloc(sizeof(zend_hooked_object_iterator));
  ------------------
  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  377|      4|	zend_iterator_init(&iterator->it);
  378|       |
  379|      4|	ZVAL_OBJ_COPY(&iterator->it.data, zobj);
  ------------------
  |  | 1146|      4|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      4|		zval *__z = (z);						\
  |  | 1148|      4|		zend_object *__o = (o);					\
  |  | 1149|      4|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      4|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      4|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      4|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  380|      4|	iterator->it.funcs = &zend_hooked_object_it_funcs;
  381|      4|	iterator->by_ref = by_ref;
  382|      4|	zend_array *properties = zho_build_properties_ex(zobj, true, true, false);
  383|      4|	ZVAL_ARR(&iterator->declared_props, properties);
  ------------------
  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  | 1127|      4|		zval *__z = (z);						\
  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  384|      4|	iterator->declared_props_done = !zend_hash_num_elements(properties);
  385|      4|	zho_dynamic_it_init(iterator);
  386|      4|	ZVAL_UNDEF(&iterator->current_key);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  387|      4|	ZVAL_UNDEF(&iterator->current_data);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  388|       |
  389|      4|	return &iterator->it;
  390|      6|}
zend_property_hooks.c:zho_build_properties_ex:
   55|      6|{
   56|      6|	zend_class_entry *ce = zobj->ce;
   57|      6|	zend_array *properties = zend_new_array(include_dynamic_props && zobj->properties
  ------------------
  |  |  342|     20|	_zend_new_array(size)
  |  |  ------------------
  |  |  |  Branch (342:18): [True: 2, False: 4]
  |  |  |  Branch (342:18): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   58|      6|		? zend_hash_num_elements(zobj->properties)
   59|      6|		: ce->default_properties_count);
   60|      6|	zend_hash_real_init_mixed(properties);
   61|       |
   62|       |	/* Build list of parents */
   63|      6|	int32_t parent_count = 0;
   64|     13|	for (zend_class_entry *pce = ce; pce; pce = pce->parent) {
  ------------------
  |  Branch (64:35): [True: 7, False: 6]
  ------------------
   65|      7|		parent_count++;
   66|      7|	}
   67|      6|	zend_class_entry **parents = emalloc(sizeof(zend_class_entry*) * parent_count);
  ------------------
  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   68|      6|	int32_t i = 0;
   69|     13|	for (zend_class_entry *pce = ce; pce; pce = pce->parent) {
  ------------------
  |  Branch (69:35): [True: 7, False: 6]
  ------------------
   70|      7|		parents[i++] = pce;
   71|      7|	}
   72|       |
   73|       |	/* Iterate parents top to bottom */
   74|      6|	i--;
   75|     13|	for (; i >= 0; i--) {
  ------------------
  |  Branch (75:9): [True: 7, False: 6]
  ------------------
   76|      7|		zend_class_entry *pce = parents[i];
   77|       |
   78|      7|		zend_property_info *prop_info;
   79|     28|		ZEND_HASH_MAP_FOREACH_PTR(&pce->properties_info, prop_info) {
  ------------------
  |  | 1341|      7|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      7|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      7|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      7|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      7|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      7|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      7|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 7, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      7|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      7|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      7|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 7]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      7|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      7|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      7|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      7|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (79:3): [True: 0, False: 7]
  |  Branch (79:3): [True: 7, False: 0]
  ------------------
   80|     28|			if (prop_info->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      7|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (80:8): [True: 0, False: 7]
  ------------------
   81|      0|				continue;
   82|      0|			}
   83|      7|			zend_string *property_name = prop_info->name;
   84|       |			/* When promoting properties from protected to public, use the unmangled name to preserve order. */
   85|      7|			if (prop_info->flags & ZEND_ACC_PROTECTED) {
  ------------------
  |  |  220|      7|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (85:8): [True: 0, False: 7]
  ------------------
   86|      0|				const char *tmp = zend_get_unmangled_property_name(property_name);
   87|      0|				zend_string *unmangled_name = zend_string_init(tmp, strlen(tmp), false);
   88|      0|				zend_property_info *child_prop_info = zend_hash_find_ptr(&ce->properties_info, unmangled_name);
   89|      0|				if (child_prop_info && (child_prop_info->flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (89:9): [True: 0, False: 0]
  |  Branch (89:28): [True: 0, False: 0]
  ------------------
   90|      0|					property_name = unmangled_name;
   91|      0|				} else {
   92|      0|					zend_string_release(unmangled_name);
   93|      0|				}
   94|      0|			}
   95|      7|			if (check_access && zend_check_property_access(zobj, property_name, false) == FAILURE) {
  ------------------
  |  Branch (95:8): [True: 4, False: 3]
  |  Branch (95:24): [True: 0, False: 4]
  ------------------
   96|      0|				goto skip_property;
   97|      0|			}
   98|      7|			if (prop_info->hooks || force_ptr) {
  ------------------
  |  Branch (98:8): [True: 6, False: 1]
  |  Branch (98:28): [True: 0, False: 1]
  ------------------
   99|      6|				zend_hash_update_ptr(properties, property_name, prop_info);
  100|      6|			} else {
  101|      1|				if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  102|      1|					HT_FLAGS(properties) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              					HT_FLAGS(properties) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      1|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
  103|      1|				}
  104|      1|				zval *tmp = zend_hash_lookup(properties, property_name);
  105|      1|				ZVAL_INDIRECT(tmp, OBJ_PROP(zobj, prop_info->offset));
  ------------------
  |  | 1246|      1|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|      1|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|      1|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      1|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|      1|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|      1|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  106|      1|			}
  107|      7|skip_property:
  108|      7|			if (property_name != prop_info->name) {
  ------------------
  |  Branch (108:8): [True: 0, False: 7]
  ------------------
  109|      0|				zend_string_release(property_name);
  110|      0|			}
  111|      7|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      7|		} \
  |  | 1102|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  112|      7|	}
  113|       |
  114|      6|	efree(parents);
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|       |
  116|      6|	if (include_dynamic_props && zobj->properties) {
  ------------------
  |  Branch (116:6): [True: 2, False: 4]
  |  Branch (116:31): [True: 2, False: 0]
  ------------------
  117|      2|		zend_string *prop_name;
  118|      2|		zval *prop_value;
  119|      6|		ZEND_HASH_FOREACH_STR_KEY_VAL(zobj->properties, prop_name, prop_value) {
  ------------------
  |  | 1181|      2|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      2|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      2|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      2|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      2|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      2|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      2|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      4|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      2|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      2|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      2|			} else { \
  |  |  |  |  |  | 1060|      2|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      2|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      2|				__h = _p->h; \
  |  |  |  |  |  | 1063|      2|				__key = _p->key; \
  |  |  |  |  |  | 1064|      2|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      2|			} \
  |  |  |  |  |  | 1068|      2|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|      2|	_key = __key; \
  |  | 1183|      2|	_val = _z;
  ------------------
  120|      6|			if (Z_TYPE_P(prop_value) == IS_INDIRECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(prop_value) == IS_INDIRECT) {
  ------------------
  |  |  629|      2|#define IS_INDIRECT             	12
  ------------------
  |  Branch (120:8): [True: 1, False: 1]
  ------------------
  121|      1|				continue;
  122|      1|			}
  123|      1|			zval *tmp = zend_hash_add_new(properties, prop_name, prop_value);
  124|      1|			Z_TRY_ADDREF_P(tmp);
  ------------------
  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      1|	zval *_pz = (pz);				\
  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  125|      1|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      1|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  126|      2|	}
  127|       |
  128|      6|	return properties;
  129|      6|}
zend_property_hooks.c:zho_it_dtor:
  275|      4|{
  276|      4|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  277|      4|	zval_ptr_dtor(&iter->data);
  278|      4|	zval_ptr_dtor(&hooked_iter->declared_props);
  279|      4|	zval_ptr_dtor_nogc(&hooked_iter->current_key);
  280|      4|	zval_ptr_dtor(&hooked_iter->current_data);
  281|      4|	zend_hash_iterator_del(hooked_iter->dynamic_prop_it);
  282|      4|}
zend_property_hooks.c:zho_it_valid:
  285|      7|{
  286|      7|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  287|      7|	zho_it_fetch_current(iter);
  288|      7|	return Z_TYPE(hooked_iter->current_data) != IS_UNDEF ? SUCCESS : FAILURE;
  ------------------
  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	return Z_TYPE(hooked_iter->current_data) != IS_UNDEF ? SUCCESS : FAILURE;
  ------------------
  |  |  606|      7|#define IS_UNDEF					0
  ------------------
  |  Branch (288:9): [True: 3, False: 4]
  ------------------
  289|      7|}
zend_property_hooks.c:zho_it_fetch_current:
  253|     11|{
  254|     11|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  255|     11|	if (Z_TYPE(hooked_iter->current_data) != IS_UNDEF) {
  ------------------
  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(hooked_iter->current_data) != IS_UNDEF) {
  ------------------
  |  |  606|     11|#define IS_UNDEF					0
  ------------------
  |  Branch (255:6): [True: 4, False: 7]
  ------------------
  256|      4|		return;
  257|      4|	}
  258|       |
  259|     12|	while (true) {
  ------------------
  |  Branch (259:9): [True: 12, Folded]
  ------------------
  260|     12|		if (!hooked_iter->declared_props_done) {
  ------------------
  |  Branch (260:7): [True: 4, False: 8]
  ------------------
  261|      4|			zho_declared_it_fetch_current(iter);
  262|      8|		} else if (!hooked_iter->dynamic_props_done) {
  ------------------
  |  Branch (262:14): [True: 4, False: 4]
  ------------------
  263|      4|			zho_dynamic_it_fetch_current(iter);
  264|      4|		} else {
  265|      4|			break;
  266|      4|		}
  267|      8|		if (Z_TYPE(hooked_iter->current_data) != IS_UNDEF || EG(exception)) {
  ------------------
  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(hooked_iter->current_data) != IS_UNDEF || EG(exception)) {
  ------------------
  |  |  606|     16|#define IS_UNDEF					0
  ------------------
              		if (Z_TYPE(hooked_iter->current_data) != IS_UNDEF || EG(exception)) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (267:7): [True: 3, False: 5]
  ------------------
  268|      3|			break;
  269|      3|		}
  270|      5|		zho_it_move_forward(iter);
  271|      5|	}
  272|      7|}
zend_property_hooks.c:zho_declared_it_fetch_current:
  155|      4|{
  156|      4|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  157|      4|	zend_object *zobj = Z_OBJ_P(&iter->data);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  158|      4|	zend_array *properties = Z_ARR(hooked_iter->declared_props);
  ------------------
  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  159|       |
  160|      4|	zend_property_info *prop_info = Z_PTR_P(zend_hash_get_current_data(properties));
  ------------------
  |  | 1053|      4|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  161|      4|	if (prop_info->hooks) {
  ------------------
  |  Branch (161:6): [True: 4, False: 0]
  ------------------
  162|      4|		zend_function *get = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
  163|      4|		if (!get && (prop_info->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (163:7): [True: 2, False: 2]
  |  Branch (163:15): [True: 0, False: 2]
  ------------------
  164|      0|			return;
  165|      0|		}
  166|      4|		if (hooked_iter->by_ref
  ------------------
  |  Branch (166:7): [True: 0, False: 4]
  ------------------
  167|      0|		 && (get == NULL
  ------------------
  |  Branch (167:8): [True: 0, False: 0]
  ------------------
  168|      0|		  || !(get->common.fn_flags & ZEND_ACC_RETURN_REFERENCE))) {
  ------------------
  |  |  352|      0|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (168:8): [True: 0, False: 0]
  ------------------
  169|      0|			zend_throw_error(NULL, "Cannot create reference to property %s::$%s",
  170|      0|				ZSTR_VAL(zobj->ce->name), zend_get_unmangled_property_name(prop_info->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  171|      0|			return;
  172|      0|		}
  173|      4|		zend_string *unmangled_name = prop_info->name;
  174|      4|		if (ZSTR_VAL(unmangled_name)[0] == '\0') {
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (174:7): [True: 0, False: 4]
  ------------------
  175|      0|			const char *tmp = zend_get_unmangled_property_name(unmangled_name);
  176|      0|			unmangled_name = zend_string_init(tmp, strlen(tmp), false);
  177|      0|		}
  178|      4|		zval *value = zend_read_property_ex(prop_info->ce, zobj, unmangled_name, /* silent */ true, &hooked_iter->current_data);
  179|      4|		if (unmangled_name != prop_info->name) {
  ------------------
  |  Branch (179:7): [True: 0, False: 4]
  ------------------
  180|      0|			zend_string_release(unmangled_name);
  181|      0|		}
  182|      4|		if (value == &EG(uninitialized_zval)) {
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (182:7): [True: 1, False: 3]
  ------------------
  183|      1|			return;
  184|      3|		} else if (value != &hooked_iter->current_data) {
  ------------------
  |  Branch (184:14): [True: 1, False: 2]
  ------------------
  185|      1|			ZVAL_COPY(&hooked_iter->current_data, value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  186|      1|		}
  187|      4|	} else {
  188|      0|		zval *property = OBJ_PROP(zobj, prop_info->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
  189|      0|		ZVAL_DEINDIRECT(property);
  ------------------
  |  | 1480|      0|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      0|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  190|      0|		if (Z_TYPE_P(property) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(property) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (190:7): [True: 0, False: 0]
  ------------------
  191|      0|			return;
  192|      0|		}
  193|      0|		if (!hooked_iter->by_ref) {
  ------------------
  |  Branch (193:7): [True: 0, False: 0]
  ------------------
  194|      0|			ZVAL_DEREF(property);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  195|      0|		} else if (Z_TYPE_P(property) != IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(property) != IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (195:14): [True: 0, False: 0]
  ------------------
  196|      0|			if (UNEXPECTED(prop_info->flags & ZEND_ACC_READONLY)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  197|      0|				zend_throw_error(NULL,
  198|      0|					"Cannot acquire reference to readonly property %s::$%s",
  199|      0|					ZSTR_VAL(prop_info->ce->name), zend_get_unmangled_property_name(prop_info->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  200|      0|				return;
  201|      0|			}
  202|      0|			ZVAL_MAKE_REF(property);
  ------------------
  |  | 1492|      0|#define ZVAL_MAKE_REF(zv) do {							\
  |  | 1493|      0|		zval *__zv = (zv);								\
  |  | 1494|      0|		if (!Z_ISREF_P(__zv)) {							\
  |  |  ------------------
  |  |  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1494:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1495|      0|			ZVAL_NEW_REF(__zv, __zv);					\
  |  |  ------------------
  |  |  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  |  |  | 1206|      0|		zend_reference *_ref =									\
  |  |  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  |  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1214|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1496|      0|		}												\
  |  | 1497|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1497:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  203|      0|			if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  204|      0|				ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(property), prop_info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  205|      0|			}
  206|      0|		}
  207|      0|		ZVAL_COPY(&hooked_iter->current_data, property);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  208|      0|	}
  209|       |
  210|      3|	if (ZSTR_VAL(prop_info->name)[0] == '\0') {
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (210:6): [True: 0, False: 3]
  ------------------
  211|      0|		const char *tmp = zend_get_unmangled_property_name(prop_info->name);
  212|      0|		ZVAL_STR(&hooked_iter->current_key, zend_string_init(tmp, strlen(tmp), false));
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  213|      3|	} else {
  214|      3|		ZVAL_STR_COPY(&hooked_iter->current_key, prop_info->name);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      3|		zend_string *__s = (s);							\
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 1]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  215|      3|	}
  216|      3|}
zend_property_hooks.c:zho_dynamic_it_fetch_current:
  219|      4|{
  220|      4|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  221|      4|	zend_array *properties = Z_OBJ(iter->data)->properties;
  ------------------
  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  222|      4|	HashPosition pos = zend_hash_iterator_pos(hooked_iter->dynamic_prop_it, properties);
  223|       |
  224|      4|	if (pos >= properties->nNumUsed) {
  ------------------
  |  Branch (224:6): [True: 4, False: 0]
  ------------------
  225|      4|		hooked_iter->dynamic_props_done = true;
  226|      4|		return;
  227|      4|	}
  228|       |
  229|      0|	Bucket *bucket = properties->arData + pos;
  230|       |
  231|      0|	if (UNEXPECTED(Z_TYPE(bucket->val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  232|      0|		return;
  233|      0|	}
  234|       |
  235|      0|	zend_object *zobj = Z_OBJ_P(&hooked_iter->it.data);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  236|      0|	if (bucket->key && zend_check_property_access(zobj, bucket->key, true) != SUCCESS) {
  ------------------
  |  Branch (236:6): [True: 0, False: 0]
  |  Branch (236:21): [True: 0, False: 0]
  ------------------
  237|      0|		return;
  238|      0|	}
  239|       |
  240|      0|	if (hooked_iter->by_ref && Z_TYPE(bucket->val) != IS_REFERENCE) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (hooked_iter->by_ref && Z_TYPE(bucket->val) != IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (240:6): [True: 0, False: 0]
  |  Branch (240:29): [True: 0, False: 0]
  ------------------
  241|      0|		ZVAL_MAKE_REF(&bucket->val);
  ------------------
  |  | 1492|      0|#define ZVAL_MAKE_REF(zv) do {							\
  |  | 1493|      0|		zval *__zv = (zv);								\
  |  | 1494|      0|		if (!Z_ISREF_P(__zv)) {							\
  |  |  ------------------
  |  |  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1494:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1495|      0|			ZVAL_NEW_REF(__zv, __zv);					\
  |  |  ------------------
  |  |  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  |  |  | 1206|      0|		zend_reference *_ref =									\
  |  |  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  |  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1214|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1496|      0|		}												\
  |  | 1497|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1497:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  242|      0|	}
  243|      0|	ZVAL_COPY(&hooked_iter->current_data, &bucket->val);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  244|       |
  245|      0|	if (bucket->key) {
  ------------------
  |  Branch (245:6): [True: 0, False: 0]
  ------------------
  246|      0|		ZVAL_STR_COPY(&hooked_iter->current_key, bucket->key);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  247|      0|	} else {
  248|      0|		ZVAL_LONG(&hooked_iter->current_key, bucket->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  249|      0|	}
  250|      0|}
zend_property_hooks.c:zho_it_get_current_data:
  292|      3|{
  293|      3|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  294|      3|	zho_it_fetch_current(iter);
  295|      3|	return &hooked_iter->current_data;
  296|      3|}
zend_property_hooks.c:zho_it_get_current_key:
  299|      1|{
  300|      1|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  301|      1|	zho_it_fetch_current(iter);
  302|      1|	ZVAL_COPY(key, &hooked_iter->current_key);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  303|      1|}
zend_property_hooks.c:zho_it_move_forward:
  306|      8|{
  307|      8|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  308|       |
  309|      8|	zval_ptr_dtor(&hooked_iter->current_data);
  310|      8|	ZVAL_UNDEF(&hooked_iter->current_data);
  ------------------
  |  | 1055|      8|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      8|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      8|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  311|      8|	zval_ptr_dtor_nogc(&hooked_iter->current_key);
  312|      8|	ZVAL_UNDEF(&hooked_iter->current_key);
  ------------------
  |  | 1055|      8|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      8|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      8|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  313|       |
  314|      8|	if (!hooked_iter->declared_props_done) {
  ------------------
  |  Branch (314:6): [True: 4, False: 4]
  ------------------
  315|      4|		zend_array *properties = Z_ARR(hooked_iter->declared_props);
  ------------------
  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  316|      4|		zend_hash_move_forward(properties);
  317|      4|		if (zend_hash_has_more_elements(properties) != SUCCESS) {
  ------------------
  |  Branch (317:7): [True: 4, False: 0]
  ------------------
  318|      4|			hooked_iter->declared_props_done = true;
  319|      4|		}
  320|      4|	} else if (!hooked_iter->dynamic_props_done) {
  ------------------
  |  Branch (320:13): [True: 0, False: 4]
  ------------------
  321|      0|		zend_array *properties = Z_OBJ(iter->data)->properties;
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  322|      0|		HashPosition pos = zend_hash_iterator_pos(hooked_iter->dynamic_prop_it, properties);
  323|      0|		pos++;
  324|      0|		EG(ht_iterators)[hooked_iter->dynamic_prop_it].pos = pos;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  325|      0|	}
  326|      8|}
zend_property_hooks.c:zho_it_rewind:
  329|      4|{
  330|      4|	zend_hooked_object_iterator *hooked_iter = (zend_hooked_object_iterator*)iter;
  331|       |
  332|      4|	zval_ptr_dtor(&hooked_iter->current_data);
  333|      4|	ZVAL_UNDEF(&hooked_iter->current_data);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  334|      4|	zval_ptr_dtor_nogc(&hooked_iter->current_key);
  335|      4|	ZVAL_UNDEF(&hooked_iter->current_key);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  336|       |
  337|      4|	zend_array *properties = Z_ARR(hooked_iter->declared_props);
  ------------------
  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  338|      4|	zend_hash_internal_pointer_reset(properties);
  339|      4|	hooked_iter->declared_props_done = !zend_hash_num_elements(properties);
  340|      4|	hooked_iter->dynamic_props_done = false;
  341|      4|	EG(ht_iterators)[hooked_iter->dynamic_prop_it].pos = hooked_iter->dynamic_prop_offset;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
  342|      4|}
zend_property_hooks.c:zho_dynamic_it_init:
  144|      4|{
  145|      4|	zend_object *zobj = Z_OBJ_P(&hooked_iter->it.data);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  146|      4|	zend_array *properties = zobj->handlers->get_properties(zobj);
  147|       |	hooked_iter->dynamic_props_done = false;
  148|      4|	hooked_iter->dynamic_prop_offset = zho_find_dynamic_prop_offset(properties);
  149|      4|	hooked_iter->dynamic_prop_it = zend_hash_iterator_add(properties, hooked_iter->dynamic_prop_offset);
  150|      4|}
zend_property_hooks.c:zho_find_dynamic_prop_offset:
   40|      4|{
   41|      4|	uint32_t offset = 0;
   42|      4|	zval *value;
   43|       |
   44|     12|	ZEND_HASH_MAP_FOREACH_VAL(properties, value) {
  ------------------
  |  | 1325|      2|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      4|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      4|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      4|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      4|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      4|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      6|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 2, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      2|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      2|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|      2|	_val = _z;
  ------------------
  |  Branch (44:2): [True: 0, False: 4]
  |  Branch (44:2): [True: 4, False: 0]
  ------------------
   45|     12|		if (Z_TYPE_P(value) != IS_INDIRECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) != IS_INDIRECT) {
  ------------------
  |  |  629|      2|#define IS_INDIRECT             	12
  ------------------
  |  Branch (45:7): [True: 0, False: 2]
  ------------------
   46|      0|			break;
   47|      0|		}
   48|      2|		offset++;
   49|      2|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
   50|       |
   51|      4|	return offset;
   52|      4|}

zend_ptr_stack_init_ex:
   24|  49.5k|{
   25|       |	stack->top_element = stack->elements = NULL;
   26|  49.5k|	stack->top = stack->max = 0;
   27|  49.5k|	stack->persistent = persistent;
   28|  49.5k|}
zend_ptr_stack_init:
   31|  49.5k|{
   32|       |	zend_ptr_stack_init_ex(stack, false);
   33|  49.5k|}
zend_ptr_stack_destroy:
   72|  48.3k|{
   73|  48.3k|	if (stack->elements) {
  ------------------
  |  Branch (73:6): [True: 5.74k, False: 42.5k]
  ------------------
   74|       |		pefree(stack->elements, stack->persistent);
  ------------------
  |  |  190|  5.74k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  5.74k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  5.74k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  5.74k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  5.74k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  5.74k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 5.74k]
  |  |  ------------------
  ------------------
   75|  5.74k|	}
   76|  48.3k|}
zend_ptr_stack_apply:
   80|  48.3k|{
   81|  48.3k|	int i = stack->top;
   82|       |
   83|  72.7k|	while (--i >= 0) {
  ------------------
  |  Branch (83:9): [True: 24.4k, False: 48.3k]
  ------------------
   84|  24.4k|		func(stack->elements[i]);
   85|  24.4k|	}
   86|  48.3k|}
zend_ptr_stack_reverse_apply:
   89|  4.11k|{
   90|  4.11k|	int i = 0;
   91|       |
   92|  15.7k|	while (i < stack->top) {
  ------------------
  |  Branch (92:9): [True: 11.6k, False: 4.11k]
  ------------------
   93|  11.6k|		func(stack->elements[i++]);
   94|  11.6k|	}
   95|  4.11k|}
zend_ptr_stack_clean:
   99|  48.3k|{
  100|  48.3k|	zend_ptr_stack_apply(stack, func);
  101|  48.3k|	if (free_elements) {
  ------------------
  |  Branch (101:6): [True: 48.3k, False: 0]
  ------------------
  102|  48.3k|		int i = stack->top;
  103|       |
  104|  72.7k|		while (--i >= 0) {
  ------------------
  |  Branch (104:10): [True: 24.4k, False: 48.3k]
  ------------------
  105|       |			pefree(stack->elements[i], stack->persistent);
  ------------------
  |  |  190|  24.4k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  24.4k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  24.4k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  24.4k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  24.4k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  24.4k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 24.4k]
  |  |  ------------------
  ------------------
  106|  24.4k|		}
  107|  48.3k|	}
  108|  48.3k|	stack->top = 0;
  109|  48.3k|	stack->top_element = stack->elements;
  110|  48.3k|}

zend_language_scanner.c:zend_ptr_stack_push:
  101|  24.9k|{
  102|  24.9k|	ZEND_PTR_STACK_RESIZE_IF_NEEDED(stack, 1)
  ------------------
  |  |   47|  24.9k|	if (stack->top+count > stack->max) {					\
  |  |  ------------------
  |  |  |  Branch (47:6): [True: 5.74k, False: 19.2k]
  |  |  ------------------
  |  |   48|  5.74k|		/* we need to allocate more memory */				\
  |  |   49|  5.74k|		do {												\
  |  |   50|  5.74k|			stack->max += PTR_STACK_BLOCK_SIZE;				\
  |  |  ------------------
  |  |  |  |   32|  5.74k|#define PTR_STACK_BLOCK_SIZE 64
  |  |  ------------------
  |  |   51|  5.74k|		} while (stack->top+count > stack->max);			\
  |  |  ------------------
  |  |  |  Branch (51:12): [True: 0, False: 5.74k]
  |  |  ------------------
  |  |   52|  5.74k|		stack->elements = (void **) safe_perealloc(stack->elements, sizeof(void *), (stack->max), 0, stack->persistent);	\
  |  |  ------------------
  |  |  |  |  202|  5.74k|#define safe_perealloc(ptr, nmemb, size, offset, persistent)	((persistent)?_safe_realloc((ptr), (nmemb), (size), (offset)):safe_erealloc((ptr), (nmemb), (size), (offset)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  5.74k|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|  5.74k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|  5.74k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|  5.74k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|  5.74k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:63): [True: 0, False: 5.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  5.74k|		stack->top_element = stack->elements+stack->top;	\
  |  |   54|  5.74k|	}
  ------------------
  103|       |
  104|  24.9k|	stack->top++;
  105|  24.9k|	*(stack->top_element++) = ptr;
  106|  24.9k|}
zend_language_scanner.c:zend_ptr_stack_top:
  115|  7.44k|{
  116|  7.44k|    return stack->elements[stack->top - 1];
  117|  7.44k|}
zend_language_scanner.c:zend_ptr_stack_pop:
  109|    534|{
  110|    534|	stack->top--;
  111|    534|	return *(--stack->top_element);
  112|    534|}

zend_sigaction:
  230|  33.5k|{
  231|  33.5k|	struct sigaction sa;
  232|  33.5k|	sigset_t sigset;
  233|       |
  234|  33.5k|	if (oldact != NULL) {
  ------------------
  |  Branch (234:6): [True: 0, False: 33.5k]
  ------------------
  235|      0|		oldact->sa_flags   = SIGG(handlers)[signo-1].flags;
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  236|      0|		oldact->sa_handler = (void *) SIGG(handlers)[signo-1].handler;
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  237|      0|		oldact->sa_mask    = global_sigmask;
  238|      0|	}
  239|  33.5k|	if (act != NULL) {
  ------------------
  |  Branch (239:6): [True: 33.5k, False: 0]
  ------------------
  240|  33.5k|		SIGG(handlers)[signo-1].flags = act->sa_flags;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  241|  33.5k|		if (act->sa_flags & SA_SIGINFO) {
  ------------------
  |  Branch (241:7): [True: 0, False: 33.5k]
  ------------------
  242|      0|			SIGG(handlers)[signo-1].handler = (void *) act->sa_sigaction;
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  243|  33.5k|		} else {
  244|  33.5k|			SIGG(handlers)[signo-1].handler = (void *) act->sa_handler;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  245|  33.5k|		}
  246|       |
  247|  33.5k|		memset(&sa, 0, sizeof(sa));
  248|  33.5k|		if (SIGG(handlers)[signo-1].handler == (void *) SIG_IGN) {
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  |  Branch (248:7): [True: 0, False: 33.5k]
  ------------------
  249|      0|			sa.sa_sigaction = (void *) SIG_IGN;
  250|  33.5k|		} else {
  251|  33.5k|			sa.sa_flags     = SA_ONSTACK | SA_SIGINFO | (act->sa_flags & SA_FLAGS_MASK);
  ------------------
  |  |   75|  33.5k|#define SA_FLAGS_MASK ~(SA_NODEFER | SA_RESETHAND)
  ------------------
  252|  33.5k|			sa.sa_sigaction = zend_signal_handler_defer;
  253|  33.5k|			sa.sa_mask      = global_sigmask;
  254|  33.5k|		}
  255|       |
  256|  33.5k|		if (sigaction(signo, &sa, NULL) < 0) {
  ------------------
  |  Branch (256:7): [True: 0, False: 33.5k]
  ------------------
  257|      0|			zend_error_noreturn(E_ERROR, "Error installing signal handler for %d", signo);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  258|      0|		}
  259|       |
  260|       |		/* unsure this signal is not blocked */
  261|  33.5k|		sigemptyset(&sigset);
  262|  33.5k|		sigaddset(&sigset, signo);
  263|  33.5k|		zend_sigprocmask(SIG_UNBLOCK, &sigset, NULL);
  ------------------
  |  |   60|  33.5k|# define zend_sigprocmask(signo, set, oldset) sigprocmask((signo), (set), (oldset))
  ------------------
  264|  33.5k|	}
  265|  33.5k|}
zend_signal:
  271|  33.5k|{
  272|  33.5k|	struct sigaction sa;
  273|       |
  274|  33.5k|	memset(&sa, 0, sizeof(sa));
  275|  33.5k|	sa.sa_flags   = 0;
  276|  33.5k|	sa.sa_handler = handler;
  277|  33.5k|	sa.sa_mask    = global_sigmask;
  278|       |
  279|       |	zend_sigaction(signo, &sa, NULL);
  280|  33.5k|}
zend_signal_activate:
  319|  33.5k|{
  320|  33.5k|	size_t x;
  321|       |
  322|  33.5k|	memcpy(&SIGG(handlers), &global_orig_handlers, sizeof(global_orig_handlers));
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  323|       |
  324|  33.5k|	if (SIGG(reset)) {
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  ------------------
  |  |  |  Branch (71:19): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  325|      0|		for (x = 0; x < sizeof(zend_sigs) / sizeof(*zend_sigs); x++) {
  ------------------
  |  Branch (325:15): [True: 0, False: 0]
  ------------------
  326|      0|			zend_signal_register(zend_sigs[x], zend_signal_handler_defer);
  327|      0|		}
  328|      0|	}
  329|       |
  330|  33.5k|	SIGG(active) = 1;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  331|  33.5k|	SIGG(depth)  = 0;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  332|  33.5k|} /* }}} */
zend_signal_deactivate:
  336|  33.5k|{
  337|  33.5k|	if (SIGG(check)) {
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  ------------------
  |  |  |  Branch (71:19): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  338|      0|		size_t x;
  339|      0|		struct sigaction sa;
  340|       |
  341|      0|		if (SIGG(depth) != 0) {
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  |  Branch (341:7): [True: 0, False: 0]
  ------------------
  342|      0|			zend_error(E_CORE_WARNING, "zend_signal: shutdown with non-zero blocking depth (%d)", SIGG(depth));
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
              			zend_error(E_CORE_WARNING, "zend_signal: shutdown with non-zero blocking depth (%d)", SIGG(depth));
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  343|      0|		}
  344|       |
  345|       |		/* did anyone steal our installed handler */
  346|      0|		for (x = 0; x < sizeof(zend_sigs) / sizeof(*zend_sigs); x++) {
  ------------------
  |  Branch (346:15): [True: 0, False: 0]
  ------------------
  347|      0|			sigaction(zend_sigs[x], NULL, &sa);
  348|      0|			if (sa.sa_sigaction != zend_signal_handler_defer &&
  ------------------
  |  Branch (348:8): [True: 0, False: 0]
  ------------------
  349|      0|					sa.sa_sigaction != (void *) SIG_IGN) {
  ------------------
  |  Branch (349:6): [True: 0, False: 0]
  ------------------
  350|      0|				zend_error(E_CORE_WARNING, "zend_signal: handler was replaced for signal (%d) after startup", zend_sigs[x]);
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
  351|      0|			}
  352|      0|		}
  353|      0|	}
  354|       |
  355|       |	/* After active=0 is set, signal handlers will be called directly and other
  356|       |	 * state that is reset below will not be accessed. */
  357|  33.5k|	*((volatile int *) &SIGG(active)) = 0;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  358|       |
  359|  33.5k|	SIGG(running) = 0;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  360|  33.5k|	SIGG(blocked) = 0;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  361|  33.5k|	SIGG(depth) = 0;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  362|       |
  363|       |	/* If there are any queued signals because of a missed unblock, drop them. */
  364|  33.5k|	if (SIGG(phead) && SIGG(ptail)) {
  ------------------
  |  |   71|  67.1k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  ------------------
  |  |  |  Branch (71:19): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
              	if (SIGG(phead) && SIGG(ptail)) {
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  ------------------
  |  |  |  Branch (71:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  365|      0|		SIGG(ptail)->next = SIGG(pavail);
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
              		SIGG(ptail)->next = SIGG(pavail);
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  366|      0|		SIGG(pavail) = SIGG(phead);
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
              		SIGG(pavail) = SIGG(phead);
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  367|      0|		SIGG(phead) = NULL;
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  368|      0|		SIGG(ptail) = NULL;
  ------------------
  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  369|      0|	}
  370|  33.5k|}

smart_str_erealloc:
   29|  63.5k|{
   30|  63.5k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  63.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 63.2k, False: 237]
  |  |  ------------------
  ------------------
   31|  63.2k|		str->a = len <= SMART_STR_START_LEN
  ------------------
  |  |   22|  63.2k|#define SMART_STR_START_LEN  (SMART_STR_START_SIZE - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   21|  63.2k|#define SMART_STR_START_SIZE 256
  |  |  ------------------
  |  |               #define SMART_STR_START_LEN  (SMART_STR_START_SIZE - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   20|  63.2k|#define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  63.2k|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   34|  63.2k|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|  63.2k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|  63.2k|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 2114|  63.2k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|  63.2k|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (31:12): [True: 63.2k, False: 12]
  ------------------
   32|  63.2k|				? SMART_STR_START_LEN
  ------------------
  |  |   22|  63.2k|#define SMART_STR_START_LEN  (SMART_STR_START_SIZE - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   21|  63.2k|#define SMART_STR_START_SIZE 256
  |  |  ------------------
  |  |               #define SMART_STR_START_LEN  (SMART_STR_START_SIZE - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   20|  63.2k|#define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  63.2k|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   34|  63.2k|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|  63.2k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|  63.2k|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 2114|  63.2k|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|  63.2k|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   33|  63.2k|				: SMART_STR_NEW_LEN(len);
  ------------------
  |  |   26|  63.2k|	(ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STR_OVERHEAD, SMART_STR_PAGE) - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   37|     12|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  ------------------
  |  |               	(ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STR_OVERHEAD, SMART_STR_PAGE) - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   20|     12|#define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     12|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   34|     12|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|     12|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|     12|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 2114|     12|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|     12|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   34|  63.2k|		str->s = zend_string_alloc(str->a, 0);
   35|  63.2k|		ZSTR_LEN(str->s) = 0;
  ------------------
  |  |   68|  63.2k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   36|  63.2k|	} else {
   37|    237|		str->a = SMART_STR_NEW_LEN(len);
  ------------------
  |  |   26|    237|	(ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STR_OVERHEAD, SMART_STR_PAGE) - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   37|    237|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  ------------------
  |  |               	(ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STR_OVERHEAD, SMART_STR_PAGE) - SMART_STR_OVERHEAD)
  |  |  ------------------
  |  |  |  |   20|    237|#define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    237|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   34|    237|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|    237|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|    237|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 2114|    237|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define SMART_STR_OVERHEAD   (ZEND_MM_OVERHEAD + _ZSTR_HEADER_SIZE + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|    237|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|       |		str->s = (zend_string *) erealloc2(str->s, str->a + _ZSTR_HEADER_SIZE + 1, _ZSTR_HEADER_SIZE + ZSTR_LEN(str->s));
  ------------------
  |  |  159|    237|#define erealloc2(ptr, size, copy_size)		_erealloc2((ptr), (size), (copy_size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    237|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    237|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc2(ptr, size, copy_size)		_erealloc2((ptr), (size), (copy_size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    237|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    237|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   39|    237|	}
   40|  63.5k|}
smart_str_append_escaped:
   75|    802|ZEND_API void ZEND_FASTCALL smart_str_append_escaped(smart_str *str, const char *s, size_t l) {
   76|    802|	char *res;
   77|    802|	size_t i, len = zend_compute_escaped_string_len(s, l);
   78|       |
   79|    802|	smart_str_alloc(str, len, 0);
   80|    802|	res = &ZSTR_VAL(str->s)[ZSTR_LEN(str->s)];
  ------------------
  |  |   67|    802|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	res = &ZSTR_VAL(str->s)[ZSTR_LEN(str->s)];
  ------------------
  |  |   68|    802|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   81|    802|	ZSTR_LEN(str->s) += len;
  ------------------
  |  |   68|    802|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   82|       |
   83|  12.3k|	for (i = 0; i < l; ++i) {
  ------------------
  |  Branch (83:14): [True: 11.5k, False: 802]
  ------------------
   84|  11.5k|		unsigned char c = s[i];
   85|  11.5k|		if (c < 32 || c == '\\' || c > 126) {
  ------------------
  |  Branch (85:7): [True: 1.09k, False: 10.4k]
  |  Branch (85:17): [True: 0, False: 10.4k]
  |  Branch (85:30): [True: 829, False: 9.60k]
  ------------------
   86|  1.92k|			*res++ = '\\';
   87|  1.92k|			switch (c) {
   88|    132|				case '\n': *res++ = 'n'; break;
  ------------------
  |  Branch (88:5): [True: 132, False: 1.79k]
  ------------------
   89|     78|				case '\r': *res++ = 'r'; break;
  ------------------
  |  Branch (89:5): [True: 78, False: 1.84k]
  ------------------
   90|    391|				case '\t': *res++ = 't'; break;
  ------------------
  |  Branch (90:5): [True: 391, False: 1.53k]
  ------------------
   91|     40|				case '\f': *res++ = 'f'; break;
  ------------------
  |  Branch (91:5): [True: 40, False: 1.88k]
  ------------------
   92|    297|				case '\v': *res++ = 'v'; break;
  ------------------
  |  Branch (92:5): [True: 297, False: 1.62k]
  ------------------
   93|      0|				case '\\': *res++ = '\\'; break;
  ------------------
  |  Branch (93:5): [True: 0, False: 1.92k]
  ------------------
   94|      2|				case VK_ESCAPE: *res++ = 'e'; break;
  ------------------
  |  |   58|      2|#define VK_ESCAPE '\e'
  ------------------
  |  Branch (94:5): [True: 2, False: 1.92k]
  ------------------
   95|    982|				default:
  ------------------
  |  Branch (95:5): [True: 982, False: 940]
  ------------------
   96|    982|					*res++ = 'x';
   97|    982|					if ((c >> 4) < 10) {
  ------------------
  |  Branch (97:10): [True: 286, False: 696]
  ------------------
   98|    286|						*res++ = (c >> 4) + '0';
   99|    696|					} else {
  100|    696|						*res++ = (c >> 4) + 'A' - 10;
  101|    696|					}
  102|    982|					if ((c & 0xf) < 10) {
  ------------------
  |  Branch (102:10): [True: 703, False: 279]
  ------------------
  103|    703|						*res++ = (c & 0xf) + '0';
  104|    703|					} else {
  105|    279|						*res++ = (c & 0xf) + 'A' - 10;
  106|    279|					}
  107|  1.92k|			}
  108|  9.60k|		} else {
  109|  9.60k|			*res++ = c;
  110|  9.60k|		}
  111|  11.5k|	}
  112|    802|}
smart_str_append_double:
  115|      8|		smart_str *str, double num, int precision, bool zero_fraction) {
  116|      8|	char buf[ZEND_DOUBLE_MAX_LENGTH];
  117|       |	/* Model snprintf precision behavior. */
  118|      8|	zend_gcvt(num, precision ? precision : 1, '.', 'E', buf);
  ------------------
  |  Branch (118:17): [True: 8, False: 0]
  ------------------
  119|      8|	smart_str_appends(str, buf);
  120|      8|	if (zero_fraction && zend_finite(num) && !strchr(buf, '.')) {
  ------------------
  |  |  538|      8|# define zend_finite(a) isfinite(a)
  ------------------
  |  Branch (120:6): [True: 8, False: 0]
  |  Branch (120:23): [True: 8, False: 0]
  |  Branch (120:43): [True: 1, False: 7]
  ------------------
  121|      1|		smart_str_appendl(str, ".0", 2);
  122|      1|	}
  123|      8|}
smart_str_append_printf:
  125|  1.07k|ZEND_API void smart_str_append_printf(smart_str *dest, const char *format, ...) {
  126|  1.07k|	va_list arg;
  127|  1.07k|	va_start(arg, format);
  128|  1.07k|	zend_printf_to_smart_str(dest, format, arg);
  129|       |	va_end(arg);
  130|  1.07k|}
_smart_string_alloc:
  165|  6.65M|{
  166|  6.65M|	if (!str->c) {
  ------------------
  |  Branch (166:6): [True: 6.65M, False: 1]
  ------------------
  167|  6.65M|		str->len = 0;
  168|  6.65M|		if (len <= SMART_STRING_START_LEN) {
  ------------------
  |  |  141|  6.65M|#define SMART_STRING_START_LEN  (SMART_STRING_START_SIZE - SMART_STRING_OVERHEAD)
  |  |  ------------------
  |  |  |  |  140|  6.65M|#define SMART_STRING_START_SIZE 256
  |  |  ------------------
  |  |               #define SMART_STRING_START_LEN  (SMART_STRING_START_SIZE - SMART_STRING_OVERHEAD)
  |  |  ------------------
  |  |  |  |  139|  6.65M|#define SMART_STRING_OVERHEAD   (ZEND_MM_OVERHEAD + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  6.65M|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   34|  6.65M|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|  6.65M|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|  6.65M|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 2114|  6.65M|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (168:7): [True: 6.65M, False: 37]
  ------------------
  169|  6.65M|			str->a = SMART_STRING_START_LEN;
  ------------------
  |  |  141|  6.65M|#define SMART_STRING_START_LEN  (SMART_STRING_START_SIZE - SMART_STRING_OVERHEAD)
  |  |  ------------------
  |  |  |  |  140|  6.65M|#define SMART_STRING_START_SIZE 256
  |  |  ------------------
  |  |               #define SMART_STRING_START_LEN  (SMART_STRING_START_SIZE - SMART_STRING_OVERHEAD)
  |  |  ------------------
  |  |  |  |  139|  6.65M|#define SMART_STRING_OVERHEAD   (ZEND_MM_OVERHEAD + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  6.65M|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   34|  6.65M|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|  6.65M|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|  6.65M|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 2114|  6.65M|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|  6.65M|			str->c = emalloc(SMART_STRING_START_LEN + 1);
  ------------------
  |  |  150|  6.65M|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  6.65M|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.65M|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  6.65M|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.65M|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|  6.65M|		} else {
  172|     37|			str->a = ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STRING_OVERHEAD, SMART_STRING_PAGE) - SMART_STRING_OVERHEAD;
  ------------------
  |  |   37|     37|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
              			str->a = ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STRING_OVERHEAD, SMART_STRING_PAGE) - SMART_STRING_OVERHEAD;
  ------------------
  |  |  139|     37|#define SMART_STRING_OVERHEAD   (ZEND_MM_OVERHEAD + 1)
  |  |  ------------------
  |  |  |  |   57|     37|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|     37|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|     37|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   32|     37|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|     37|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  173|     37|			if (EXPECTED(str->a < (ZEND_MM_CHUNK_SIZE - SMART_STRING_OVERHEAD))) {
  ------------------
  |  |  456|     37|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 37, False: 0]
  |  |  ------------------
  ------------------
  174|     37|				str->c = emalloc_large(str->a + 1);
  ------------------
  |  |  151|     37|#define emalloc_large(size)					_emalloc_large((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  142|     37|#define _emalloc_large _emalloc
  |  |  ------------------
  |  |               #define emalloc_large(size)					_emalloc_large((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     37|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     37|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc_large(size)					_emalloc_large((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     37|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     37|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  175|     37|			} else {
  176|       |				/* allocate a huge chunk */
  177|      0|				str->c = emalloc(str->a + 1);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|      0|			}
  179|     37|		}
  180|  6.65M|	} else {
  181|      1|		if (UNEXPECTED((size_t) len > SIZE_MAX - str->len)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  182|      0|			zend_error_noreturn(E_ERROR, "String size overflow");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  183|      0|		}
  184|      1|		len += str->len;
  185|      1|		str->a = ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STRING_OVERHEAD, SMART_STRING_PAGE) - SMART_STRING_OVERHEAD;
  ------------------
  |  |   37|      1|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
              		str->a = ZEND_MM_ALIGNED_SIZE_EX(len + SMART_STRING_OVERHEAD, SMART_STRING_PAGE) - SMART_STRING_OVERHEAD;
  ------------------
  |  |  139|      1|#define SMART_STRING_OVERHEAD   (ZEND_MM_OVERHEAD + 1)
  |  |  ------------------
  |  |  |  |   57|      1|# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      1|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   32|      1|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 2114|      1|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|       |		str->c = erealloc2(str->c, str->a + 1, str->len);
  ------------------
  |  |  159|      1|#define erealloc2(ptr, size, copy_size)		_erealloc2((ptr), (size), (copy_size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc2(ptr, size, copy_size)		_erealloc2((ptr), (size), (copy_size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|      1|	}
  188|  6.65M|}
smart_str_append_escaped_truncated:
  191|    719|{
  192|    719|	smart_str_append_escaped(str, ZSTR_VAL(value), MIN(length, ZSTR_LEN(value)));
  ------------------
  |  |   67|    719|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_append_escaped(str, ZSTR_VAL(value), MIN(length, ZSTR_LEN(value)));
  ------------------
  |  |  518|    719|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 20, False: 699]
  |  |  ------------------
  ------------------
  193|       |
  194|    719|	if (ZSTR_LEN(value) > length) {
  ------------------
  |  |   68|    719|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (194:6): [True: 20, False: 699]
  ------------------
  195|     20|		smart_str_appendl(str, "...", sizeof("...")-1);
  196|     20|	}
  197|    719|}
smart_str_append_scalar:
  199|    784|ZEND_API void ZEND_FASTCALL smart_str_append_scalar(smart_str *dest, const zval *value, size_t truncate) {
  200|    784|	ZEND_ASSERT(Z_TYPE_P(value) <= IS_STRING);
  ------------------
  |  |  112|    784|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (200:2): [True: 0, False: 784]
  |  Branch (200:2): [True: 784, False: 0]
  ------------------
  201|       |
  202|    784|	switch (Z_TYPE_P(value)) {
  ------------------
  |  |  669|    784|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    784|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  203|      0|		case IS_UNDEF:
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (203:3): [True: 0, False: 784]
  ------------------
  204|     23|		case IS_NULL:
  ------------------
  |  |  607|     23|#define IS_NULL						1
  ------------------
  |  Branch (204:3): [True: 23, False: 761]
  ------------------
  205|     23|			smart_str_appendl(dest, "NULL", sizeof("NULL")-1);
  206|     23|		break;
  207|       |
  208|      6|		case IS_TRUE:
  ------------------
  |  |  609|      6|#define IS_TRUE						3
  ------------------
  |  Branch (208:3): [True: 6, False: 778]
  ------------------
  209|      6|			smart_str_appendl(dest, "true", sizeof("true")-1);
  210|      6|		break;
  211|       |
  212|      6|		case IS_FALSE:
  ------------------
  |  |  608|      6|#define IS_FALSE					2
  ------------------
  |  Branch (212:3): [True: 6, False: 778]
  ------------------
  213|      6|			smart_str_appendl(dest, "false", sizeof("false")-1);
  214|      6|		break;
  215|       |
  216|      5|		case IS_DOUBLE:
  ------------------
  |  |  611|      5|#define IS_DOUBLE					5
  ------------------
  |  Branch (216:3): [True: 5, False: 779]
  ------------------
  217|      5|			smart_str_append_double(dest, Z_DVAL_P(value), (int) EG(precision), true);
  ------------------
  |  |  979|      5|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      5|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              			smart_str_append_double(dest, Z_DVAL_P(value), (int) EG(precision), true);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  218|      5|		break;
  219|       |
  220|     25|		case IS_LONG:
  ------------------
  |  |  610|     25|#define IS_LONG						4
  ------------------
  |  Branch (220:3): [True: 25, False: 759]
  ------------------
  221|     25|			smart_str_append_long(dest, Z_LVAL_P(value));
  ------------------
  |  |  976|     25|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     25|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  222|     25|		break;
  223|       |
  224|    719|		case IS_STRING:
  ------------------
  |  |  612|    719|#define IS_STRING					6
  ------------------
  |  Branch (224:3): [True: 719, False: 65]
  ------------------
  225|    719|			smart_str_appendc(dest, '\'');
  226|    719|			smart_str_append_escaped_truncated(dest, Z_STR_P(value), truncate);
  ------------------
  |  |  982|    719|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    719|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  227|    719|			smart_str_appendc(dest, '\'');
  228|    719|		break;
  229|       |
  230|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (230:3): [True: 0, False: 784]
  |  Branch (230:12): [Folded, False: 0]
  |  Branch (230:12): [Folded, False: 0]
  ------------------
  231|    784|	}
  232|    784|}
smart_str_append_zval:
  235|  1.48k|{
  236|  1.48k|	if (Z_TYPE_P(value) <= IS_STRING) {
  ------------------
  |  |  669|  1.48k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.48k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) <= IS_STRING) {
  ------------------
  |  |  612|  1.48k|#define IS_STRING					6
  ------------------
  |  Branch (236:6): [True: 784, False: 702]
  ------------------
  237|    784|		smart_str_append_scalar(dest, value, truncate);
  238|    784|	} else if (Z_TYPE_P(value) == IS_OBJECT && (Z_OBJCE_P(value)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  669|    702|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    702|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(value) == IS_OBJECT && (Z_OBJCE_P(value)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  614|  1.40k|#define IS_OBJECT					8
  ------------------
              	} else if (Z_TYPE_P(value) == IS_OBJECT && (Z_OBJCE_P(value)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  | 1012|     17|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     17|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     17|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(value) == IS_OBJECT && (Z_OBJCE_P(value)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|     17|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (238:13): [True: 17, False: 685]
  |  Branch (238:45): [True: 1, False: 16]
  ------------------
  239|      1|		smart_str_append(dest, Z_OBJCE_P(value)->name);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|      1|		smart_str_appends(dest, "::");
  241|      1|		smart_str_append(dest, Z_STR_P(zend_enum_fetch_case_name(Z_OBJ_P(value))));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  242|    701|	} else {
  243|    701|		return FAILURE;
  244|    701|	}
  245|    785|	return SUCCESS;
  246|  1.48k|}
zend_smart_str.c:zend_compute_escaped_string_len:
   61|    802|static size_t zend_compute_escaped_string_len(const char *s, size_t l) {
   62|    802|	size_t i, len = l;
   63|  12.3k|	for (i = 0; i < l; ++i) {
  ------------------
  |  Branch (63:14): [True: 11.5k, False: 802]
  ------------------
   64|  11.5k|		char c = s[i];
   65|  11.5k|		if (c == '\n' || c == '\r' || c == '\t' ||
  ------------------
  |  Branch (65:7): [True: 132, False: 11.3k]
  |  Branch (65:20): [True: 78, False: 11.3k]
  |  Branch (65:33): [True: 391, False: 10.9k]
  ------------------
   66|  10.9k|			c == '\f' || c == '\v' || c == '\\' || c == VK_ESCAPE) {
  ------------------
  |  |   58|  10.5k|#define VK_ESCAPE '\e'
  ------------------
  |  Branch (66:4): [True: 40, False: 10.8k]
  |  Branch (66:17): [True: 297, False: 10.5k]
  |  Branch (66:30): [True: 0, False: 10.5k]
  |  Branch (66:43): [True: 2, False: 10.5k]
  ------------------
   67|    940|			len += 1;
   68|  10.5k|		} else if (c < 32 || c > 126) {
  ------------------
  |  Branch (68:14): [True: 973, False: 9.61k]
  |  Branch (68:24): [True: 9, False: 9.60k]
  ------------------
   69|    982|			len += 3;
   70|    982|		}
   71|  11.5k|	}
   72|    802|	return len;
   73|    802|}

php_date.c:smart_str_appendl:
  166|  1.24k|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|  1.24k|}
php_date.c:smart_str_appendl_ex:
  127|  1.24k|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|  1.24k|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|  1.24k|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|  1.24k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|  1.24k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|  1.24k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  1.24k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|  1.24k|}
php_date.c:smart_str_alloc:
   38|  1.24k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  1.24k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  1.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 29, False: 1.21k]
  |  |  ------------------
  ------------------
   40|     29|		goto do_smart_str_realloc;
   41|  1.21k|	} else {
   42|  1.21k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  1.21k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  1.21k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  1.21k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 1.21k]
  |  |  ------------------
  ------------------
   44|     34|do_smart_str_realloc:
   45|     34|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 34]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|     34|			} else {
   48|     34|				smart_str_erealloc(str, len);
   49|     34|			}
   50|     34|		}
   51|  1.21k|	}
   52|  1.24k|	return len;
   53|  1.24k|}
php_date.c:smart_str_0:
   80|     29|static zend_always_inline void smart_str_0(smart_str *str) {
   81|     29|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 29, False: 0]
  ------------------
   82|     29|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|     29|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|     29|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|     29|	}
   84|     29|}
json_encoder.c:smart_str_appendl:
  166|      5|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|      5|}
json_encoder.c:smart_str_appendl_ex:
  127|      6|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|      6|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|      6|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|      6|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|      6|}
json_encoder.c:smart_str_append_long:
  150|      1|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|      1|}
json_encoder.c:smart_str_append_long_ex:
  143|      1|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|      1|	char buf[32];
  145|      1|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|      1|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|      1|}
json_encoder.c:smart_str_alloc:
   38|     25|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|     25|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 23]
  |  |  ------------------
  ------------------
   40|      2|		goto do_smart_str_realloc;
   41|     23|	} else {
   42|     23|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|     23|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|     23|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  ------------------
  ------------------
   44|      2|do_smart_str_realloc:
   45|      2|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 2]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|      2|			} else {
   48|      2|				smart_str_erealloc(str, len);
   49|      2|			}
   50|      2|		}
   51|     23|	}
   52|     25|	return len;
   53|     25|}
json_encoder.c:smart_str_appendc:
  182|     16|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|     16|}
json_encoder.c:smart_str_appendc_ex:
  121|     16|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|     16|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|     16|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|     16|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|     16|}
json.c:smart_str_extract:
  117|      2|{
  118|       |	return smart_str_extract_ex(dest, false);
  119|      2|}
json.c:smart_str_extract_ex:
  103|      2|static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
  104|      2|	if (str->s) {
  ------------------
  |  Branch (104:6): [True: 2, False: 0]
  ------------------
  105|      2|		zend_string *res;
  106|      2|		smart_str_0(str);
  107|      2|		smart_str_trim_to_size_ex(str, persistent);
  108|      2|		res = str->s;
  109|      2|		str->s = NULL;
  110|      2|		return res;
  111|      2|	} else {
  112|      0|		return ZSTR_EMPTY_ALLOC();
  113|      0|	}
  114|      2|}
json.c:smart_str_0:
   80|      2|static zend_always_inline void smart_str_0(smart_str *str) {
   81|      2|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 2, False: 0]
  ------------------
   82|      2|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|      2|	}
   84|      2|}
json.c:smart_str_trim_to_size_ex:
   91|      2|{
   92|      2|	if (str->s && str->a > ZSTR_LEN(str->s)) {
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (92:6): [True: 2, False: 0]
  |  Branch (92:16): [True: 2, False: 0]
  ------------------
   93|      2|		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   94|      2|		str->a = ZSTR_LEN(str->s);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   95|      2|	}
   96|      2|}
php_reflection.c:smart_str_0:
   80|    114|static zend_always_inline void smart_str_0(smart_str *str) {
   81|    114|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 114, False: 0]
  ------------------
   82|    114|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|    114|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|    114|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|    114|	}
   84|    114|}
php_reflection.c:smart_str_free:
   76|    125|{
   77|       |	smart_str_free_ex(str, false);
   78|    125|}
php_reflection.c:smart_str_free_ex:
   67|    125|static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
   68|    125|	if (str->s) {
  ------------------
  |  Branch (68:6): [True: 91, False: 34]
  ------------------
   69|     91|		zend_string_release_ex(str->s, persistent);
   70|       |		str->s = NULL;
   71|     91|	}
   72|    125|	str->a = 0;
   73|    125|}
php_reflection.c:smart_str_extract:
  117|     35|{
  118|       |	return smart_str_extract_ex(dest, false);
  119|     35|}
php_reflection.c:smart_str_extract_ex:
  103|     35|static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
  104|     35|	if (str->s) {
  ------------------
  |  Branch (104:6): [True: 34, False: 1]
  ------------------
  105|     34|		zend_string *res;
  106|     34|		smart_str_0(str);
  107|     34|		smart_str_trim_to_size_ex(str, persistent);
  108|     34|		res = str->s;
  109|     34|		str->s = NULL;
  110|     34|		return res;
  111|     34|	} else {
  112|      1|		return ZSTR_EMPTY_ALLOC();
  113|      1|	}
  114|     35|}
php_reflection.c:smart_str_trim_to_size_ex:
   91|     34|{
   92|     34|	if (str->s && str->a > ZSTR_LEN(str->s)) {
  ------------------
  |  |   68|     34|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (92:6): [True: 34, False: 0]
  |  Branch (92:16): [True: 34, False: 0]
  ------------------
   93|     34|		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
  ------------------
  |  |   68|     34|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   94|     34|		str->a = ZSTR_LEN(str->s);
  ------------------
  |  |   68|     34|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   95|     34|	}
   96|     34|}
php_reflection.c:smart_str_append_smart_str:
  186|     25|{
  187|       |	smart_str_append_smart_str_ex(dest, src, false);
  188|     25|}
php_reflection.c:smart_str_append_smart_str_ex:
  137|     25|static zend_always_inline void smart_str_append_smart_str_ex(smart_str *dest, const smart_str *src, bool persistent) {
  138|     25|	if (src->s && ZSTR_LEN(src->s)) {
  ------------------
  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 11, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (138:6): [True: 11, False: 14]
  ------------------
  139|     11|		smart_str_append_ex(dest, src->s, persistent);
  140|     11|	}
  141|     25|}
php_reflection.c:smart_str_append_ex:
  133|    130|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|    130|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|    130|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|    130|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|    130|}
php_reflection.c:smart_str_appendl_ex:
  127|  1.01k|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|  1.01k|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|  1.01k|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|  1.01k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|  1.01k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|  1.01k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  1.01k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|  1.01k|}
php_reflection.c:smart_str_alloc:
   38|  1.36k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  1.36k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  1.36k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 1.35k]
  |  |  ------------------
  ------------------
   40|     16|		goto do_smart_str_realloc;
   41|  1.35k|	} else {
   42|  1.35k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  1.35k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  1.35k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  1.35k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 1.33k]
  |  |  ------------------
  ------------------
   44|     32|do_smart_str_realloc:
   45|     32|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 32]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|     32|			} else {
   48|     32|				smart_str_erealloc(str, len);
   49|     32|			}
   50|     32|		}
   51|  1.35k|	}
   52|  1.36k|	return len;
   53|  1.36k|}
php_reflection.c:smart_str_appends:
  174|    874|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|    874|}
php_reflection.c:smart_str_append:
  178|    119|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|    119|}
php_reflection.c:smart_str_append_long:
  150|     12|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|     12|}
php_reflection.c:smart_str_append_long_ex:
  143|     12|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|     12|	char buf[32];
  145|     12|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|     12|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|     12|}
php_reflection.c:smart_str_appendc:
  182|    352|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|    352|}
php_reflection.c:smart_str_appendc_ex:
  121|    352|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|    352|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|    352|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|    352|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|    352|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|    352|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|    352|}
string.c:smart_str_free:
   76|      5|{
   77|       |	smart_str_free_ex(str, false);
   78|      5|}
string.c:smart_str_free_ex:
   67|      5|static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
   68|      5|	if (str->s) {
  ------------------
  |  Branch (68:6): [True: 0, False: 5]
  ------------------
   69|      0|		zend_string_release_ex(str->s, persistent);
   70|       |		str->s = NULL;
   71|      0|	}
   72|      5|	str->a = 0;
   73|      5|}
url_scanner_ex.c:smart_str_free:
   76|   134k|{
   77|       |	smart_str_free_ex(str, false);
   78|   134k|}
url_scanner_ex.c:smart_str_free_ex:
   67|   134k|static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
   68|   134k|	if (str->s) {
  ------------------
  |  Branch (68:6): [True: 0, False: 134k]
  ------------------
   69|      0|		zend_string_release_ex(str->s, persistent);
   70|       |		str->s = NULL;
   71|      0|	}
   72|   134k|	str->a = 0;
   73|   134k|}
var.c:smart_str_appendl:
  166|    134|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|    134|}
var.c:smart_str_appendl_ex:
  127|    216|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|    216|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|    216|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|    216|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|    216|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|    216|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|    216|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|    216|}
var.c:smart_str_alloc:
   38|    396|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|    396|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|    396|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 18, False: 378]
  |  |  ------------------
  ------------------
   40|     18|		goto do_smart_str_realloc;
   41|    378|	} else {
   42|    378|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|    378|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|    378|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|    378|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 375]
  |  |  ------------------
  ------------------
   44|     21|do_smart_str_realloc:
   45|     21|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 21]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|     21|			} else {
   48|     21|				smart_str_erealloc(str, len);
   49|     21|			}
   50|     21|		}
   51|    378|	}
   52|    396|	return len;
   53|    396|}
var.c:smart_str_append_long:
  150|     10|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|     10|}
var.c:smart_str_append_long_ex:
  143|     10|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|     10|	char buf[32];
  145|     10|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|     10|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|     10|}
var.c:smart_str_appendc:
  182|    131|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|    131|}
var.c:smart_str_appendc_ex:
  121|    131|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|    131|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|    131|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|    131|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|    131|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|    131|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|    131|}
var.c:smart_str_append:
  178|     34|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|     34|}
var.c:smart_str_append_ex:
  133|     34|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|     34|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|     34|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|     34|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|     34|}
var.c:smart_str_0:
   80|     34|static zend_always_inline void smart_str_0(smart_str *str) {
   81|     34|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 32, False: 2]
  ------------------
   82|     32|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|     32|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|     32|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|     32|	}
   84|     34|}
var.c:smart_str_free:
   76|      6|{
   77|       |	smart_str_free_ex(str, false);
   78|      6|}
var.c:smart_str_free_ex:
   67|      6|static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
   68|      6|	if (str->s) {
  ------------------
  |  Branch (68:6): [True: 4, False: 2]
  ------------------
   69|      4|		zend_string_release_ex(str->s, persistent);
   70|       |		str->s = NULL;
   71|      4|	}
   72|      6|	str->a = 0;
   73|      6|}
var.c:smart_str_extract:
  117|     14|{
  118|       |	return smart_str_extract_ex(dest, false);
  119|     14|}
var.c:smart_str_extract_ex:
  103|     14|static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
  104|     14|	if (str->s) {
  ------------------
  |  Branch (104:6): [True: 14, False: 0]
  ------------------
  105|     14|		zend_string *res;
  106|     14|		smart_str_0(str);
  107|     14|		smart_str_trim_to_size_ex(str, persistent);
  108|     14|		res = str->s;
  109|     14|		str->s = NULL;
  110|     14|		return res;
  111|     14|	} else {
  112|      0|		return ZSTR_EMPTY_ALLOC();
  113|      0|	}
  114|     14|}
var.c:smart_str_trim_to_size_ex:
   91|     14|{
   92|     14|	if (str->s && str->a > ZSTR_LEN(str->s)) {
  ------------------
  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (92:6): [True: 14, False: 0]
  |  Branch (92:16): [True: 14, False: 0]
  ------------------
   93|     14|		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
  ------------------
  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   94|     14|		str->a = ZSTR_LEN(str->s);
  ------------------
  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   95|     14|	}
   96|     14|}
var.c:smart_str_extend:
   63|     49|{
   64|       |	return smart_str_extend_ex(dest, length, false);
   65|     49|}
var.c:smart_str_extend_ex:
   55|     49|static zend_always_inline char* smart_str_extend_ex(smart_str *dest, size_t len, bool persistent) {
   56|     49|	size_t new_len = smart_str_alloc(dest, len, persistent);
   57|     49|	char *ret = ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s);
  ------------------
  |  |   67|     49|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	char *ret = ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s);
  ------------------
  |  |   68|     49|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   58|     49|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|     49|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   59|     49|	return ret;
   60|     49|}
var.c:smart_str_append_unsigned:
  161|     38|{
  162|       |	smart_str_append_unsigned_ex(dest, num, false);
  163|     38|}
var.c:smart_str_append_unsigned_ex:
  154|     38|static zend_always_inline void smart_str_append_unsigned_ex(smart_str *dest, zend_ulong num, bool persistent) {
  155|     38|	char buf[32];
  156|     38|	char *result = zend_print_ulong_to_buf(buf + sizeof(buf) - 1, num);
  157|     38|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  158|     38|}
fopen_wrappers.c:smart_str_get_len:
   86|      1|static zend_always_inline size_t smart_str_get_len(smart_str *str) {
   87|      1|	return str->s ? ZSTR_LEN(str->s) : 0;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (87:9): [True: 0, False: 1]
  ------------------
   88|      1|}
fopen_wrappers.c:smart_str_alloc:
   38|      1|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|      1|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
   40|      1|		goto do_smart_str_realloc;
   41|      1|	} else {
   42|      0|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|      0|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   44|      1|do_smart_str_realloc:
   45|      1|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 1]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|      1|			} else {
   48|      1|				smart_str_erealloc(str, len);
   49|      1|			}
   50|      1|		}
   51|      0|	}
   52|      1|	return len;
   53|      1|}
fopen_wrappers.c:smart_str_appends:
  174|      1|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|      1|}
fopen_wrappers.c:smart_str_appendl_ex:
  127|      1|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|      1|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|      1|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|      1|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|      1|}
fopen_wrappers.c:smart_str_extract:
  117|      1|{
  118|       |	return smart_str_extract_ex(dest, false);
  119|      1|}
fopen_wrappers.c:smart_str_extract_ex:
  103|      1|static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
  104|      1|	if (str->s) {
  ------------------
  |  Branch (104:6): [True: 1, False: 0]
  ------------------
  105|      1|		zend_string *res;
  106|      1|		smart_str_0(str);
  107|      1|		smart_str_trim_to_size_ex(str, persistent);
  108|      1|		res = str->s;
  109|      1|		str->s = NULL;
  110|      1|		return res;
  111|      1|	} else {
  112|      0|		return ZSTR_EMPTY_ALLOC();
  113|      0|	}
  114|      1|}
fopen_wrappers.c:smart_str_0:
   80|      1|static zend_always_inline void smart_str_0(smart_str *str) {
   81|      1|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 1, False: 0]
  ------------------
   82|      1|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|      1|	}
   84|      1|}
fopen_wrappers.c:smart_str_trim_to_size_ex:
   91|      1|{
   92|      1|	if (str->s && str->a > ZSTR_LEN(str->s)) {
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (92:6): [True: 1, False: 0]
  |  Branch (92:16): [True: 1, False: 0]
  ------------------
   93|      1|		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   94|      1|		str->a = ZSTR_LEN(str->s);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   95|      1|	}
   96|      1|}
spprintf.c:smart_str_appendc:
  182|  1.48M|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|  1.48M|}
spprintf.c:smart_str_appendc_ex:
  121|  1.48M|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|  1.48M|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|  1.48M|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|  1.48M|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|  1.48M|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  1.48M|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|  1.48M|}
spprintf.c:smart_str_alloc:
   38|  1.57M|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  1.57M|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  1.57M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 61.4k, False: 1.51M]
  |  |  ------------------
  ------------------
   40|  61.4k|		goto do_smart_str_realloc;
   41|  1.51M|	} else {
   42|  1.51M|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  1.51M|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  1.51M|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  1.51M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 180, False: 1.51M]
  |  |  ------------------
  ------------------
   44|  61.6k|do_smart_str_realloc:
   45|  61.6k|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 61.6k]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|  61.6k|			} else {
   48|  61.6k|				smart_str_erealloc(str, len);
   49|  61.6k|			}
   50|  61.6k|		}
   51|  1.51M|	}
   52|  1.57M|	return len;
   53|  1.57M|}
spprintf.c:smart_str_appendl:
  166|  84.2k|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|  84.2k|}
spprintf.c:smart_str_appendl_ex:
  127|  84.2k|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|  84.2k|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|  84.2k|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|  84.2k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|  84.2k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|  84.2k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  84.2k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|  84.2k|}
zend_ast.c:smart_str_appends:
  174|  1.58k|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|  1.58k|}
zend_ast.c:smart_str_appendl_ex:
  127|  1.80k|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|  1.80k|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|  1.80k|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|  1.80k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|  1.80k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|  1.80k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  1.80k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|  1.80k|}
zend_ast.c:smart_str_alloc:
   38|  6.55k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  6.55k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  6.55k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 99, False: 6.45k]
  |  |  ------------------
  ------------------
   40|     99|		goto do_smart_str_realloc;
   41|  6.45k|	} else {
   42|  6.45k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  6.45k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  6.45k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  6.45k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 6.43k]
  |  |  ------------------
  ------------------
   44|    120|do_smart_str_realloc:
   45|    120|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 120]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|    120|			} else {
   48|    120|				smart_str_erealloc(str, len);
   49|    120|			}
   50|    120|		}
   51|  6.45k|	}
   52|  6.55k|	return len;
   53|  6.55k|}
zend_ast.c:smart_str_append_long:
  150|     27|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|     27|}
zend_ast.c:smart_str_append_long_ex:
  143|     27|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|     27|	char buf[32];
  145|     27|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|     27|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|     27|}
zend_ast.c:smart_str_append:
  178|    189|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|    189|}
zend_ast.c:smart_str_append_ex:
  133|    189|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|    189|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|    189|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|    189|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|    189|}
zend_ast.c:smart_str_appendc:
  182|  4.75k|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|  4.75k|}
zend_ast.c:smart_str_appendc_ex:
  121|  4.75k|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|  4.75k|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|  4.75k|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|  4.75k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|  4.75k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  4.75k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|  4.75k|}
zend_ast.c:smart_str_0:
   80|     99|static zend_always_inline void smart_str_0(smart_str *str) {
   81|     99|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 99, False: 0]
  ------------------
   82|     99|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|     99|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|     99|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|     99|	}
   84|     99|}
zend_attributes.c:smart_str_get_len:
   86|     16|static zend_always_inline size_t smart_str_get_len(smart_str *str) {
   87|     16|	return str->s ? ZSTR_LEN(str->s) : 0;
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (87:9): [True: 4, False: 12]
  ------------------
   88|     16|}
zend_attributes.c:smart_str_appends:
  174|     20|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|     20|}
zend_attributes.c:smart_str_appendl_ex:
  127|     20|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|     20|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|     20|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|     20|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|     20|}
zend_attributes.c:smart_str_alloc:
   38|     20|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|     20|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 12, False: 8]
  |  |  ------------------
  ------------------
   40|     12|		goto do_smart_str_realloc;
   41|     12|	} else {
   42|      8|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|      8|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
   44|     12|do_smart_str_realloc:
   45|     12|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 12]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|     12|			} else {
   48|     12|				smart_str_erealloc(str, len);
   49|     12|			}
   50|     12|		}
   51|      8|	}
   52|     20|	return len;
   53|     20|}
zend_attributes.c:smart_str_extract:
  117|     12|{
  118|       |	return smart_str_extract_ex(dest, false);
  119|     12|}
zend_attributes.c:smart_str_extract_ex:
  103|     12|static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
  104|     12|	if (str->s) {
  ------------------
  |  Branch (104:6): [True: 12, False: 0]
  ------------------
  105|     12|		zend_string *res;
  106|     12|		smart_str_0(str);
  107|     12|		smart_str_trim_to_size_ex(str, persistent);
  108|     12|		res = str->s;
  109|     12|		str->s = NULL;
  110|     12|		return res;
  111|     12|	} else {
  112|      0|		return ZSTR_EMPTY_ALLOC();
  113|      0|	}
  114|     12|}
zend_attributes.c:smart_str_0:
   80|     12|static zend_always_inline void smart_str_0(smart_str *str) {
   81|     12|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 12, False: 0]
  ------------------
   82|     12|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|     12|	}
   84|     12|}
zend_attributes.c:smart_str_trim_to_size_ex:
   91|     12|{
   92|     12|	if (str->s && str->a > ZSTR_LEN(str->s)) {
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (92:6): [True: 12, False: 0]
  |  Branch (92:16): [True: 12, False: 0]
  ------------------
   93|     12|		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   94|     12|		str->a = ZSTR_LEN(str->s);
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   95|     12|	}
   96|     12|}
zend_exceptions.c:smart_str_append:
  178|  1.49k|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|  1.49k|}
zend_exceptions.c:smart_str_append_ex:
  133|  1.49k|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|  1.49k|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|  1.49k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|  1.49k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|  1.49k|}
zend_exceptions.c:smart_str_appendl_ex:
  127|  8.64k|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|  8.64k|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|  8.64k|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|  8.64k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|  8.64k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|  8.64k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  8.64k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|  8.64k|}
zend_exceptions.c:smart_str_alloc:
   38|  12.3k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  12.3k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  12.3k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.39k, False: 10.9k]
  |  |  ------------------
  ------------------
   40|  1.39k|		goto do_smart_str_realloc;
   41|  10.9k|	} else {
   42|  10.9k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  10.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  10.9k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  10.9k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10.9k]
  |  |  ------------------
  ------------------
   44|  1.39k|do_smart_str_realloc:
   45|  1.39k|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 1.39k]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|  1.39k|			} else {
   48|  1.39k|				smart_str_erealloc(str, len);
   49|  1.39k|			}
   50|  1.39k|		}
   51|  10.9k|	}
   52|  12.3k|	return len;
   53|  12.3k|}
zend_exceptions.c:smart_str_appendc:
  182|  3.66k|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|  3.66k|}
zend_exceptions.c:smart_str_appendc_ex:
  121|  3.66k|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|  3.66k|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|  3.66k|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|  3.66k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|  3.66k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  3.66k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|  3.66k|}
zend_exceptions.c:smart_str_append_long:
  150|  2.18k|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|  2.18k|}
zend_exceptions.c:smart_str_append_long_ex:
  143|  2.18k|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|  2.18k|	char buf[32];
  145|  2.18k|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|  2.18k|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|  2.18k|}
zend_exceptions.c:smart_str_appends:
  174|  4.96k|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|  4.96k|}
zend_exceptions.c:smart_str_0:
   80|  1.39k|static zend_always_inline void smart_str_0(smart_str *str) {
   81|  1.39k|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 1.39k, False: 1]
  ------------------
   82|  1.39k|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|  1.39k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|  1.39k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|  1.39k|	}
   84|  1.39k|}
zend_execute.c:smart_str_0:
   80|      9|static zend_always_inline void smart_str_0(smart_str *str) {
   81|      9|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 9, False: 0]
  ------------------
   82|      9|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|      9|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|      9|	}
   84|      9|}
zend_execute.c:smart_str_free:
   76|      9|{
   77|       |	smart_str_free_ex(str, false);
   78|      9|}
zend_execute.c:smart_str_free_ex:
   67|      9|static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
   68|      9|	if (str->s) {
  ------------------
  |  Branch (68:6): [True: 9, False: 0]
  ------------------
   69|      9|		zend_string_release_ex(str->s, persistent);
   70|       |		str->s = NULL;
   71|      9|	}
   72|      9|	str->a = 0;
   73|      9|}
zend_inheritance.c:smart_str_appendc:
  182|    460|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|    460|}
zend_inheritance.c:smart_str_appendc_ex:
  121|    460|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|    460|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|    460|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|    460|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|    460|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|    460|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|    460|}
zend_inheritance.c:smart_str_alloc:
   38|  1.30k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  1.30k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  1.30k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 138, False: 1.16k]
  |  |  ------------------
  ------------------
   40|    138|		goto do_smart_str_realloc;
   41|  1.16k|	} else {
   42|  1.16k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  1.16k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  1.16k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  1.16k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.16k]
  |  |  ------------------
  ------------------
   44|    138|do_smart_str_realloc:
   45|    138|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 138]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|    138|			} else {
   48|    138|				smart_str_erealloc(str, len);
   49|    138|			}
   50|    138|		}
   51|  1.16k|	}
   52|  1.30k|	return len;
   53|  1.30k|}
zend_inheritance.c:smart_str_appends:
  174|    302|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|    302|}
zend_inheritance.c:smart_str_appendl_ex:
  127|    847|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|    847|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|    847|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|    847|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|    847|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|    847|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|    847|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|    847|}
zend_inheritance.c:smart_str_append:
  178|    544|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|    544|}
zend_inheritance.c:smart_str_append_ex:
  133|    544|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|    544|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|    544|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|    544|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|    544|}
zend_inheritance.c:smart_str_appendl:
  166|      1|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|      1|}
zend_inheritance.c:smart_str_0:
   80|    138|static zend_always_inline void smart_str_0(smart_str *str) {
   81|    138|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 138, False: 0]
  ------------------
   82|    138|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|    138|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|    138|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|    138|	}
   84|    138|}
zend_ini.c:smart_str_0:
   80|     81|static zend_always_inline void smart_str_0(smart_str *str) {
   81|     81|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 81, False: 0]
  ------------------
   82|     81|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|     81|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|     81|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|     81|	}
   84|     81|}
zend_ini.c:smart_str_free:
   76|     85|{
   77|       |	smart_str_free_ex(str, false);
   78|     85|}
zend_ini.c:smart_str_free_ex:
   67|     85|static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) {
   68|     85|	if (str->s) {
  ------------------
  |  Branch (68:6): [True: 81, False: 4]
  ------------------
   69|     81|		zend_string_release_ex(str->s, persistent);
   70|       |		str->s = NULL;
   71|     81|	}
   72|     85|	str->a = 0;
   73|     85|}
zend_smart_str.c:smart_str_alloc:
   38|  2.33k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  2.33k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  2.33k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 90, False: 2.24k]
  |  |  ------------------
  ------------------
   40|     90|		goto do_smart_str_realloc;
   41|  2.24k|	} else {
   42|  2.24k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  2.24k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  2.24k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  2.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2.24k]
  |  |  ------------------
  ------------------
   44|     92|do_smart_str_realloc:
   45|     92|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 92]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|     92|			} else {
   48|     92|				smart_str_erealloc(str, len);
   49|     92|			}
   50|     92|		}
   51|  2.24k|	}
   52|  2.33k|	return len;
   53|  2.33k|}
zend_smart_str.c:smart_str_appends:
  174|      9|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|      9|}
zend_smart_str.c:smart_str_appendl_ex:
  127|     92|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|     92|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|     92|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|     92|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|     92|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|     92|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|     92|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|     92|}
zend_smart_str.c:smart_str_appendl:
  166|     56|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|     56|}
zend_smart_str.c:smart_str_append_long:
  150|     25|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|     25|}
zend_smart_str.c:smart_str_append_long_ex:
  143|     25|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|     25|	char buf[32];
  145|     25|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|     25|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|     25|}
zend_smart_str.c:smart_str_appendc:
  182|  1.43k|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|  1.43k|}
zend_smart_str.c:smart_str_appendc_ex:
  121|  1.43k|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|  1.43k|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|  1.43k|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|  1.43k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|  1.43k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  1.43k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|  1.43k|}
zend_smart_str.c:smart_str_append:
  178|      2|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|      2|}
zend_smart_str.c:smart_str_append_ex:
  133|      2|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|      2|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|      2|}
zend.c:smart_str_extract:
  117|  61.3k|{
  118|       |	return smart_str_extract_ex(dest, false);
  119|  61.3k|}
zend.c:smart_str_extract_ex:
  103|  61.3k|static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) {
  104|  61.3k|	if (str->s) {
  ------------------
  |  Branch (104:6): [True: 61.3k, False: 0]
  ------------------
  105|  61.3k|		zend_string *res;
  106|  61.3k|		smart_str_0(str);
  107|  61.3k|		smart_str_trim_to_size_ex(str, persistent);
  108|  61.3k|		res = str->s;
  109|  61.3k|		str->s = NULL;
  110|  61.3k|		return res;
  111|  61.3k|	} else {
  112|      0|		return ZSTR_EMPTY_ALLOC();
  113|      0|	}
  114|  61.3k|}
zend.c:smart_str_trim_to_size_ex:
   91|  61.3k|{
   92|  61.3k|	if (str->s && str->a > ZSTR_LEN(str->s)) {
  ------------------
  |  |   68|  61.3k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (92:6): [True: 61.3k, False: 0]
  |  Branch (92:16): [True: 61.3k, False: 0]
  ------------------
   93|  61.3k|		str->s = zend_string_realloc(str->s, ZSTR_LEN(str->s), persistent);
  ------------------
  |  |   68|  61.3k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   94|  61.3k|		str->a = ZSTR_LEN(str->s);
  ------------------
  |  |   68|  61.3k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   95|  61.3k|	}
   96|  61.3k|}
zend.c:smart_str_appends:
  174|    473|{
  175|       |	smart_str_appendl_ex(dest, src, strlen(src), false);
  176|    473|}
zend.c:smart_str_appendl_ex:
  127|    682|static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, bool persistent) {
  128|    682|	size_t new_len = smart_str_alloc(dest, len, persistent);
  129|    682|	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   67|    682|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len);
  ------------------
  |  |   68|    682|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  130|    682|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|    682|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  131|    682|}
zend.c:smart_str_alloc:
   38|  2.82k|static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, bool persistent) {
   39|  2.82k|	if (UNEXPECTED(!str->s)) {
  ------------------
  |  |  457|  2.82k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 40, False: 2.78k]
  |  |  ------------------
  ------------------
   40|     40|		goto do_smart_str_realloc;
   41|  2.78k|	} else {
   42|  2.78k|		len += ZSTR_LEN(str->s);
  ------------------
  |  |   68|  2.78k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   43|  2.78k|		if (UNEXPECTED(len >= str->a)) {
  ------------------
  |  |  457|  2.78k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 2.77k]
  |  |  ------------------
  ------------------
   44|     50|do_smart_str_realloc:
   45|     50|			if (persistent) {
  ------------------
  |  Branch (45:8): [True: 0, False: 50]
  ------------------
   46|      0|				smart_str_realloc(str, len);
   47|     50|			} else {
   48|     50|				smart_str_erealloc(str, len);
   49|     50|			}
   50|     50|		}
   51|  2.78k|	}
   52|  2.82k|	return len;
   53|  2.82k|}
zend.c:smart_str_appendc:
  182|  2.14k|{
  183|       |	smart_str_appendc_ex(dest, ch, false);
  184|  2.14k|}
zend.c:smart_str_appendc_ex:
  121|  2.14k|static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) {
  122|  2.14k|	size_t new_len = smart_str_alloc(dest, 1, persistent);
  123|  2.14k|	ZSTR_VAL(dest->s)[new_len - 1] = ch;
  ------------------
  |  |   67|  2.14k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  124|  2.14k|	ZSTR_LEN(dest->s) = new_len;
  ------------------
  |  |   68|  2.14k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  125|  2.14k|}
zend.c:smart_str_append:
  178|     88|{
  179|       |	smart_str_append_ex(dest, src, false);
  180|     88|}
zend.c:smart_str_append_ex:
  133|     88|static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, bool persistent) {
  134|     88|	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   67|     88|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent);
  ------------------
  |  |   68|     88|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  135|     88|}
zend.c:smart_str_0:
   80|  61.3k|static zend_always_inline void smart_str_0(smart_str *str) {
   81|  61.3k|	if (str->s) {
  ------------------
  |  Branch (81:6): [True: 61.3k, False: 0]
  ------------------
   82|  61.3k|		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   67|  61.3k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
  ------------------
  |  |   68|  61.3k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   83|  61.3k|	}
   84|  61.3k|}
zend.c:smart_str_appendl:
  166|     30|{
  167|       |	smart_str_appendl_ex(dest, src, length, false);
  168|     30|}
zend.c:smart_str_append_long:
  150|     91|{
  151|       |	smart_str_append_long_ex(dest, num, false);
  152|     91|}
zend.c:smart_str_append_long_ex:
  143|     91|static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_long num, bool persistent) {
  144|     91|	char buf[32];
  145|     91|	char *result = zend_print_long_to_buf(buf + sizeof(buf) - 1, num);
  146|     91|	smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
  147|     91|}

spprintf.c:smart_string_appendc_ex:
   80|  26.2M|static zend_always_inline void smart_string_appendc_ex(smart_string *dest, char ch, bool persistent) {
   81|  26.2M|	dest->len = smart_string_alloc(dest, 1, persistent);
   82|  26.2M|	dest->c[dest->len - 1] = ch;
   83|  26.2M|}
spprintf.c:smart_string_alloc:
   55|  39.0M|static zend_always_inline size_t smart_string_alloc(smart_string *str, size_t len, bool persistent) {
   56|  39.0M|	if (UNEXPECTED(!str->c) || UNEXPECTED(len >= str->a - str->len)) {
  ------------------
  |  |  457|  78.0M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6.65M, False: 32.3M]
  |  |  ------------------
  ------------------
              	if (UNEXPECTED(!str->c) || UNEXPECTED(len >= str->a - str->len)) {
  ------------------
  |  |  457|  32.3M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 32.3M]
  |  |  ------------------
  ------------------
   57|  6.65M|		if (persistent) {
  ------------------
  |  Branch (57:7): [True: 0, False: 6.65M]
  ------------------
   58|      0|			_smart_string_alloc_persistent(str, len);
   59|  6.65M|		} else {
   60|  6.65M|			_smart_string_alloc(str, len);
   61|  6.65M|		}
   62|  6.65M|	}
   63|  39.0M|	return str->len + len;
   64|  39.0M|}
spprintf.c:smart_string_appendl_ex:
   85|  8.58M|static zend_always_inline void smart_string_appendl_ex(smart_string *dest, const char *str, size_t len, bool persistent) {
   86|  8.58M|	size_t new_len = smart_string_alloc(dest, len, persistent);
   87|  8.58M|	memcpy(dest->c + dest->len, str, len);
   88|  8.58M|	dest->len = new_len;
   89|       |
   90|  8.58M|}
zend.c:smart_string_0:
   74|  6.65M|static zend_always_inline void smart_string_0(smart_string *str) {
   75|  6.65M|	if (str->c) {
  ------------------
  |  Branch (75:6): [True: 6.65M, False: 0]
  ------------------
   76|  6.65M|		str->c[str->len] = '\0';
   77|  6.65M|	}
   78|  6.65M|}

zend_insert_sort:
   83|     74|ZEND_API void zend_insert_sort(void *base, size_t nmemb, size_t siz, compare_func_t cmp, swap_func_t swp) /* {{{ */{
   84|     74|	switch (nmemb) {
   85|      0|		case 0:
  ------------------
  |  Branch (85:3): [True: 0, False: 74]
  ------------------
   86|      1|		case 1:
  ------------------
  |  Branch (86:3): [True: 1, False: 73]
  ------------------
   87|      1|			break;
   88|     19|		case 2:
  ------------------
  |  Branch (88:3): [True: 19, False: 55]
  ------------------
   89|     19|			zend_sort_2(base, (char *)base + siz, cmp, swp);
   90|     19|			break;
   91|     14|		case 3:
  ------------------
  |  Branch (91:3): [True: 14, False: 60]
  ------------------
   92|     14|			zend_sort_3(base, (char *)base + siz, (char *)base + siz + siz, cmp, swp);
   93|     14|			break;
   94|     13|		case 4:
  ------------------
  |  Branch (94:3): [True: 13, False: 61]
  ------------------
   95|     13|			{
   96|     13|				size_t siz2 = siz + siz;
   97|     13|				zend_sort_4(base, (char *)base + siz, (char *)base + siz2, (char *)base + siz + siz2, cmp, swp);
   98|     13|			}
   99|     13|			break;
  100|      5|		case 5:
  ------------------
  |  Branch (100:3): [True: 5, False: 69]
  ------------------
  101|      5|			{
  102|      5|				size_t siz2 = siz + siz;
  103|      5|				zend_sort_5(base, (char *)base + siz, (char *)base + siz2, (char *)base + siz + siz2, (char *)base + siz2 + siz2, cmp, swp);
  104|      5|			}
  105|      5|			break;
  106|     22|		default:
  ------------------
  |  Branch (106:3): [True: 22, False: 52]
  ------------------
  107|     22|			{
  108|     22|				char *i, *j, *k;
  109|     22|				char *start = (char *)base;
  110|     22|				char *end = start + (nmemb * siz);
  111|     22|				size_t siz2= siz + siz;
  112|     22|				char *sentry = start + (6 * siz);
  113|    132|				for (i = start + siz; i < sentry; i += siz) {
  ------------------
  |  Branch (113:27): [True: 110, False: 22]
  ------------------
  114|    110|					j = i - siz;
  115|    110|					if (!(cmp(j, i) > 0)) {
  ------------------
  |  Branch (115:10): [True: 35, False: 75]
  ------------------
  116|     35|						continue;
  117|     35|					}
  118|    151|					while (j != start) {
  ------------------
  |  Branch (118:13): [True: 121, False: 30]
  ------------------
  119|    121|						j -= siz;
  120|    121|						if (!(cmp(j, i) > 0)) {
  ------------------
  |  Branch (120:11): [True: 45, False: 76]
  ------------------
  121|     45|							j += siz;
  122|     45|							break;
  123|     45|						}
  124|    121|					}
  125|    226|					for (k = i; k > j; k -= siz) {
  ------------------
  |  Branch (125:18): [True: 151, False: 75]
  ------------------
  126|    151|						swp(k, k - siz);
  127|    151|					}
  128|     75|				}
  129|    146|				for (i = sentry; i < end; i += siz) {
  ------------------
  |  Branch (129:22): [True: 124, False: 22]
  ------------------
  130|    124|					j = i - siz;
  131|    124|					if (!(cmp(j, i) > 0)) {
  ------------------
  |  Branch (131:10): [True: 13, False: 111]
  ------------------
  132|     13|						continue;
  133|     13|					}
  134|    260|					do {
  135|    260|						j -= siz2;
  136|    260|						if (!(cmp(j, i) > 0)) {
  ------------------
  |  Branch (136:11): [True: 90, False: 170]
  ------------------
  137|     90|							j += siz;
  138|     90|							if (!(cmp(j, i) > 0)) {
  ------------------
  |  Branch (138:12): [True: 39, False: 51]
  ------------------
  139|     39|								j += siz;
  140|     39|							}
  141|     90|							break;
  142|     90|						}
  143|    170|						if (j == start) {
  ------------------
  |  Branch (143:11): [True: 10, False: 160]
  ------------------
  144|     10|							break;
  145|     10|						}
  146|    160|						if (j == start + siz) {
  ------------------
  |  Branch (146:11): [True: 11, False: 149]
  ------------------
  147|     11|							j -= siz;
  148|     11|							if (cmp(i, j) > 0) {
  ------------------
  |  Branch (148:12): [True: 4, False: 7]
  ------------------
  149|      4|								j += siz;
  150|      4|							}
  151|     11|							break;
  152|     11|						}
  153|    160|					} while (1);
  ------------------
  |  Branch (153:15): [True: 149, Folded]
  ------------------
  154|    620|					for (k = i; k > j; k -= siz) {
  ------------------
  |  Branch (154:18): [True: 509, False: 111]
  ------------------
  155|    509|						swp(k, k - siz);
  156|    509|					}
  157|    111|				}
  158|     22|			}
  159|     22|			break;
  160|     74|	}
  161|     74|}
zend_sort:
  248|     74|{
  249|     87|	while (1) {
  ------------------
  |  Branch (249:9): [True: 87, Folded]
  ------------------
  250|     87|		if (nmemb <= 16) {
  ------------------
  |  Branch (250:7): [True: 74, False: 13]
  ------------------
  251|     74|			zend_insert_sort(base, nmemb, siz, cmp, swp);
  252|     74|			return;
  253|     74|		} else {
  254|     13|			char *i, *j;
  255|     13|			char *start = (char *)base;
  256|     13|			char *end = start + (nmemb * siz);
  257|     13|			size_t offset = (nmemb >> Z_L(1));
  ------------------
  |  |   37|     13|# define Z_L(i) INT64_C(i)
  ------------------
  258|     13|			char *pivot = start + (offset * siz);
  259|       |
  260|     13|			if ((nmemb >> Z_L(10))) {
  ------------------
  |  |   37|     13|# define Z_L(i) INT64_C(i)
  ------------------
  |  Branch (260:8): [True: 0, False: 13]
  ------------------
  261|      0|				size_t delta = (offset >> Z_L(1)) * siz;
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  262|      0|				zend_sort_5(start, start + delta, pivot, pivot + delta, end - siz, cmp, swp);
  263|     13|			} else {
  264|     13|				zend_sort_3(start, pivot, end - siz, cmp, swp);
  265|     13|			}
  266|     13|			swp(start + siz, pivot);
  267|     13|			pivot = start + siz;
  268|     13|			i = pivot + siz;
  269|     13|			j = end - siz;
  270|    166|			while (1) {
  ------------------
  |  Branch (270:11): [True: 166, Folded]
  ------------------
  271|    386|				while (cmp(pivot, i) > 0) {
  ------------------
  |  Branch (271:12): [True: 227, False: 159]
  ------------------
  272|    227|					i += siz;
  273|    227|					if (UNEXPECTED(i == j)) {
  ------------------
  |  |  457|    227|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 220]
  |  |  ------------------
  ------------------
  274|      7|						goto done;
  275|      7|					}
  276|    227|				}
  277|    159|				j -= siz;
  278|    159|				if (UNEXPECTED(j == i)) {
  ------------------
  |  |  457|    159|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 159]
  |  |  ------------------
  ------------------
  279|      0|					goto done;
  280|      0|				}
  281|    290|				while (cmp(j, pivot) > 0) {
  ------------------
  |  Branch (281:12): [True: 136, False: 154]
  ------------------
  282|    136|					j -= siz;
  283|    136|					if (UNEXPECTED(j == i)) {
  ------------------
  |  |  457|    136|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 131]
  |  |  ------------------
  ------------------
  284|      5|						goto done;
  285|      5|					}
  286|    136|				}
  287|    154|				swp(i, j);
  288|    154|				i += siz;
  289|    154|				if (UNEXPECTED(i == j)) {
  ------------------
  |  |  457|    154|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 153]
  |  |  ------------------
  ------------------
  290|      1|					goto done;
  291|      1|				}
  292|    154|			}
  293|     13|done:
  294|     13|			swp(pivot, i - siz);
  295|     13|			if ((i - siz) - start < end - i) {
  ------------------
  |  Branch (295:8): [True: 6, False: 7]
  ------------------
  296|      6|				zend_sort(start, (i - start)/siz - 1, siz, cmp, swp);
  297|      6|				base = i;
  298|      6|				nmemb = (end - i)/siz;
  299|      7|			} else {
  300|      7|				zend_sort(i, (end - i)/siz, siz, cmp, swp);
  301|      7|				nmemb = (i - start)/siz - 1;
  302|      7|			}
  303|     13|		}
  304|     87|	}
  305|     74|}
zend_sort.c:zend_sort_2:
   23|     19|static inline void zend_sort_2(void *a, void *b, compare_func_t cmp, swap_func_t swp) /* {{{ */ {
   24|     19|	if (cmp(a, b) > 0) {
  ------------------
  |  Branch (24:6): [True: 14, False: 5]
  ------------------
   25|     14|		swp(a, b);
   26|     14|	}
   27|     19|}
zend_sort.c:zend_sort_3:
   30|     45|static inline void zend_sort_3(void *a, void *b, void *c, compare_func_t cmp, swap_func_t swp) /* {{{ */ {
   31|     45|	if (!(cmp(a, b) > 0)) {
  ------------------
  |  Branch (31:6): [True: 13, False: 32]
  ------------------
   32|     13|		if (!(cmp(b, c) > 0)) {
  ------------------
  |  Branch (32:7): [True: 5, False: 8]
  ------------------
   33|      5|			return;
   34|      5|		}
   35|      8|		swp(b, c);
   36|      8|		if (cmp(a, b) > 0) {
  ------------------
  |  Branch (36:7): [True: 4, False: 4]
  ------------------
   37|      4|			swp(a, b);
   38|      4|		}
   39|      8|		return;
   40|     13|	}
   41|     32|	if (!(cmp(c, b) > 0)) {
  ------------------
  |  Branch (41:6): [True: 9, False: 23]
  ------------------
   42|      9|		swp(a, c);
   43|      9|		return;
   44|      9|	}
   45|     23|	swp(a, b);
   46|     23|	if (cmp(b, c) > 0) {
  ------------------
  |  Branch (46:6): [True: 7, False: 16]
  ------------------
   47|      7|		swp(b, c);
   48|      7|	}
   49|     23|}
zend_sort.c:zend_sort_4:
   52|     18|static void zend_sort_4(void *a, void *b, void *c, void *d, compare_func_t cmp, swap_func_t swp) /* {{{ */ {
   53|     18|	zend_sort_3(a, b, c, cmp, swp);
   54|     18|	if (cmp(c, d) > 0) {
  ------------------
  |  Branch (54:6): [True: 11, False: 7]
  ------------------
   55|     11|		swp(c, d);
   56|     11|		if (cmp(b, c) > 0) {
  ------------------
  |  Branch (56:7): [True: 6, False: 5]
  ------------------
   57|      6|			swp(b, c);
   58|      6|			if (cmp(a, b) > 0) {
  ------------------
  |  Branch (58:8): [True: 3, False: 3]
  ------------------
   59|      3|				swp(a, b);
   60|      3|			}
   61|      6|		}
   62|     11|	}
   63|     18|}
zend_sort.c:zend_sort_5:
   66|      5|static void zend_sort_5(void *a, void *b, void *c, void *d, void *e, compare_func_t cmp, swap_func_t swp) /* {{{ */ {
   67|      5|	zend_sort_4(a, b, c, d, cmp, swp);
   68|      5|	if (cmp(d, e) > 0) {
  ------------------
  |  Branch (68:6): [True: 5, False: 0]
  ------------------
   69|      5|		swp(d, e);
   70|      5|		if (cmp(c, d) > 0) {
  ------------------
  |  Branch (70:7): [True: 3, False: 2]
  ------------------
   71|      3|			swp(c, d);
   72|      3|			if (cmp(b, c) > 0) {
  ------------------
  |  Branch (72:8): [True: 1, False: 2]
  ------------------
   73|      1|				swp(b, c);
   74|      1|				if (cmp(a, b) > 0) {
  ------------------
  |  Branch (74:9): [True: 0, False: 1]
  ------------------
   75|      0|					swp(a, b);
   76|      0|				}
   77|      1|			}
   78|      3|		}
   79|      5|	}
   80|      5|}

zend_stack_init:
   25|   345k|{
   26|   345k|	stack->size = size;
   27|   345k|	stack->top = 0;
   28|   345k|	stack->max = 0;
   29|       |	stack->elements = NULL;
   30|   345k|}
zend_stack_push:
   33|   156k|{
   34|       |	/* We need to allocate more memory */
   35|   156k|	if (stack->top >= stack->max) {
  ------------------
  |  Branch (35:6): [True: 28.5k, False: 127k]
  ------------------
   36|  28.5k|		stack->max += STACK_BLOCK_SIZE;
  ------------------
  |  |   30|  28.5k|#define STACK_BLOCK_SIZE 16
  ------------------
   37|  28.5k|		stack->elements = safe_erealloc(stack->elements, stack->size, stack->max, 0);
  ------------------
  |  |  160|  28.5k|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  28.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  28.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  28.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  28.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|  28.5k|	}
   39|   156k|	memcpy(ZEND_STACK_ELEMENT(stack, stack->top), element, stack->size);
  ------------------
  |  |   22|   156k|#define ZEND_STACK_ELEMENT(stack, n) ((void *)((char *) (stack)->elements + (stack)->size * (n)))
  ------------------
   40|   156k|	return stack->top++;
   41|   156k|}
zend_stack_top:
   45|  99.9k|{
   46|  99.9k|	if (stack->top > 0) {
  ------------------
  |  Branch (46:6): [True: 99.9k, False: 60]
  ------------------
   47|  99.9k|		return ZEND_STACK_ELEMENT(stack, stack->top - 1);
  ------------------
  |  |   22|  99.9k|#define ZEND_STACK_ELEMENT(stack, n) ((void *)((char *) (stack)->elements + (stack)->size * (n)))
  ------------------
   48|  99.9k|	} else {
   49|       |		return NULL;
   50|     60|	}
   51|  99.9k|}
zend_stack_del_top:
   55|  86.4k|{
   56|  86.4k|	--stack->top;
   57|  86.4k|}
zend_stack_is_empty:
   72|  56.1k|{
   73|  56.1k|	return stack->top == 0;
   74|  56.1k|}
zend_stack_destroy:
   78|   342k|{
   79|   342k|	if (stack->elements) {
  ------------------
  |  Branch (79:6): [True: 27.2k, False: 315k]
  ------------------
   80|  27.2k|		efree(stack->elements);
  ------------------
  |  |  154|  27.2k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  27.2k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  27.2k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  27.2k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  27.2k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|       |		stack->elements = NULL;
   82|  27.2k|	}
   83|   342k|}
zend_stack_base:
   87|  5.09k|{
   88|  5.09k|	return stack->elements;
   89|  5.09k|}
zend_stack_count:
   93|  96.1k|{
   94|  96.1k|	return stack->top;
   95|  96.1k|}
zend_stack_clean:
  144|   100k|{
  145|   100k|	int i;
  146|       |
  147|   100k|	if (func) {
  ------------------
  |  Branch (147:6): [True: 67.1k, False: 33.5k]
  ------------------
  148|  67.1k|		for (i = 0; i < stack->top; i++) {
  ------------------
  |  Branch (148:15): [True: 8, False: 67.1k]
  ------------------
  149|      8|			func(ZEND_STACK_ELEMENT(stack, i));
  ------------------
  |  |   22|      8|#define ZEND_STACK_ELEMENT(stack, n) ((void *)((char *) (stack)->elements + (stack)->size * (n)))
  ------------------
  150|      8|		}
  151|  67.1k|	}
  152|   100k|	if (free_elements) {
  ------------------
  |  Branch (152:6): [True: 100k, False: 0]
  ------------------
  153|   100k|		if (stack->elements) {
  ------------------
  |  Branch (153:7): [True: 6, False: 100k]
  ------------------
  154|      6|			efree(stack->elements);
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|       |			stack->elements = NULL;
  156|      6|		}
  157|   100k|		stack->top = stack->max = 0;
  158|   100k|	}
  159|   100k|}

zend_stream_init_filename:
   69|  33.5k|ZEND_API void zend_stream_init_filename(zend_file_handle *handle, const char *filename) {
   70|  33.5k|	memset(handle, 0, sizeof(zend_file_handle));
   71|  33.5k|	handle->type = ZEND_HANDLE_FILENAME;
   72|  33.5k|	handle->filename = filename ? zend_string_init(filename, strlen(filename), 0) : NULL;
  ------------------
  |  Branch (72:21): [True: 33.5k, False: 0]
  ------------------
   73|  33.5k|}
zend_stream_init_filename_ex:
   75|  3.37k|ZEND_API void zend_stream_init_filename_ex(zend_file_handle *handle, zend_string *filename) {
   76|  3.37k|	memset(handle, 0, sizeof(zend_file_handle));
   77|  3.37k|	handle->type = ZEND_HANDLE_FILENAME;
   78|  3.37k|	handle->filename = zend_string_copy(filename);
   79|  3.37k|}
zend_stream_open:
   82|  1.34k|{
   83|  1.34k|	zend_string *opened_path;
   84|       |
   85|  1.34k|	ZEND_ASSERT(handle->type == ZEND_HANDLE_FILENAME);
  ------------------
  |  |  112|  1.34k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (85:2): [True: 0, False: 1.34k]
  |  Branch (85:2): [True: 1.34k, False: 0]
  ------------------
   86|  1.34k|	if (zend_stream_open_function) {
  ------------------
  |  Branch (86:6): [True: 1.34k, False: 0]
  ------------------
   87|  1.34k|		return zend_stream_open_function(handle);
   88|  1.34k|	}
   89|       |
   90|      0|	handle->handle.fp = zend_fopen(handle->filename, &opened_path);
   91|      0|	if (!handle->handle.fp) {
  ------------------
  |  Branch (91:6): [True: 0, False: 0]
  ------------------
   92|      0|		return FAILURE;
   93|      0|	}
   94|      0|	handle->type = ZEND_HANDLE_FP;
   95|      0|	return SUCCESS;
   96|      0|} /* }}} */
zend_stream_fixup:
  127|  8.36k|{
  128|  8.36k|	size_t file_size;
  129|       |
  130|  8.36k|	if (file_handle->buf) {
  ------------------
  |  Branch (130:6): [True: 7.02k, False: 1.33k]
  ------------------
  131|  7.02k|		*buf = file_handle->buf;
  132|  7.02k|		*len = file_handle->len;
  133|  7.02k|		return SUCCESS;
  134|  7.02k|	}
  135|       |
  136|  1.33k|	if (file_handle->type == ZEND_HANDLE_FILENAME) {
  ------------------
  |  Branch (136:6): [True: 1.33k, False: 3]
  ------------------
  137|  1.33k|		if (zend_stream_open(file_handle) == FAILURE) {
  ------------------
  |  Branch (137:7): [True: 665, False: 670]
  ------------------
  138|    665|			return FAILURE;
  139|    665|		}
  140|  1.33k|	}
  141|       |
  142|    673|	if (file_handle->type == ZEND_HANDLE_FP) {
  ------------------
  |  Branch (142:6): [True: 0, False: 673]
  ------------------
  143|      0|		if (!file_handle->handle.fp) {
  ------------------
  |  Branch (143:7): [True: 0, False: 0]
  ------------------
  144|      0|			return FAILURE;
  145|      0|		}
  146|       |
  147|      0|		file_handle->type = ZEND_HANDLE_STREAM;
  148|      0|		file_handle->handle.stream.handle = file_handle->handle.fp;
  149|      0|		file_handle->handle.stream.isatty = isatty(fileno((FILE *)file_handle->handle.stream.handle));
  150|      0|		file_handle->handle.stream.reader = (zend_stream_reader_t)zend_stream_stdio_reader;
  151|      0|		file_handle->handle.stream.closer = (zend_stream_closer_t)zend_stream_stdio_closer;
  152|      0|		file_handle->handle.stream.fsizer = (zend_stream_fsizer_t)zend_stream_stdio_fsizer;
  153|      0|	}
  154|       |
  155|    673|	file_size = zend_stream_fsize(file_handle);
  156|    673|	if (file_size == (size_t)-1) {
  ------------------
  |  Branch (156:6): [True: 0, False: 673]
  ------------------
  157|      0|		return FAILURE;
  158|      0|	}
  159|       |
  160|    673|	if (file_size) {
  ------------------
  |  Branch (160:6): [True: 0, False: 673]
  ------------------
  161|      0|		ssize_t read;
  162|      0|		size_t size = 0;
  163|      0|		*buf = safe_emalloc(1, file_size, ZEND_MMAP_AHEAD);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      0|		while ((read = zend_stream_read(file_handle, *buf + size, file_size - size)) > 0) {
  ------------------
  |  Branch (164:10): [True: 0, False: 0]
  ------------------
  165|      0|			size += read;
  166|      0|		}
  167|      0|		if (read < 0) {
  ------------------
  |  Branch (167:7): [True: 0, False: 0]
  ------------------
  168|      0|			efree(*buf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|      0|			return FAILURE;
  170|      0|		}
  171|      0|		file_handle->buf = *buf;
  172|      0|		file_handle->len = size;
  173|    673|	} else {
  174|    673|		size_t size = 0, remain = 4*1024;
  175|    673|		ssize_t read;
  176|    673|		*buf = emalloc(remain);
  ------------------
  |  |  150|    673|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    673|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    673|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    673|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    673|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|       |
  178|    673|		while ((read = zend_stream_read(file_handle, *buf + size, remain)) > 0) {
  ------------------
  |  Branch (178:10): [True: 0, False: 673]
  ------------------
  179|      0|			size   += read;
  180|      0|			remain -= read;
  181|       |
  182|      0|			if (remain == 0) {
  ------------------
  |  Branch (182:8): [True: 0, False: 0]
  ------------------
  183|      0|				*buf   = safe_erealloc(*buf, size, 2, 0);
  ------------------
  |  |  160|      0|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|      0|				remain = size;
  185|      0|			}
  186|      0|		}
  187|    673|		if (read < 0) {
  ------------------
  |  Branch (187:7): [True: 4, False: 669]
  ------------------
  188|      4|			efree(*buf);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      4|			return FAILURE;
  190|      4|		}
  191|       |
  192|    669|		file_handle->len = size;
  193|    669|		if (size && remain < ZEND_MMAP_AHEAD) {
  ------------------
  |  |   36|      0|#define ZEND_MMAP_AHEAD 32
  ------------------
  |  Branch (193:7): [True: 0, False: 669]
  |  Branch (193:15): [True: 0, False: 0]
  ------------------
  194|      0|			*buf = safe_erealloc(*buf, size, 1, ZEND_MMAP_AHEAD);
  ------------------
  |  |  160|      0|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|      0|		}
  196|    669|		file_handle->buf = *buf;
  197|    669|	}
  198|       |
  199|    669|	if (file_handle->len == 0) {
  ------------------
  |  Branch (199:6): [True: 5, False: 664]
  ------------------
  200|      5|		*buf = erealloc(*buf, ZEND_MMAP_AHEAD);
  ------------------
  |  |  158|      5|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|      5|		file_handle->buf = *buf;
  202|      5|	}
  203|       |
  204|    669|	memset(file_handle->buf + file_handle->len, 0, ZEND_MMAP_AHEAD);
  ------------------
  |  |   36|    669|#define ZEND_MMAP_AHEAD 32
  ------------------
  205|       |
  206|    669|	*buf = file_handle->buf;
  207|    669|	*len = file_handle->len;
  208|       |
  209|    669|	return SUCCESS;
  210|    673|} /* }}} */
zend_destroy_file_handle:
  268|  33.8k|{
  269|  33.8k|	if (file_handle->in_list) {
  ------------------
  |  Branch (269:6): [True: 7.18k, False: 26.6k]
  ------------------
  270|  7.18k|		zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles);
  ------------------
  |  |   35|  7.18k|# define CG(v) (compiler_globals.v)
  ------------------
  271|       |		/* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */
  272|  7.18k|		file_handle->opened_path = NULL;
  273|  7.18k|		file_handle->filename = NULL;
  274|  26.6k|	} else {
  275|  26.6k|		zend_file_handle_dtor(file_handle);
  276|  26.6k|	}
  277|  33.8k|} /* }}} */
zend_stream_init:
  280|  33.5k|{
  281|  33.5k|	zend_llist_init(&CG(open_files), sizeof(zend_file_handle), (void (*)(void *)) zend_file_handle_dtor, 0);
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  282|  33.5k|} /* }}} */
zend_stream_shutdown:
  285|  33.5k|{
  286|  33.5k|	zend_llist_destroy(&CG(open_files));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  287|  33.5k|} /* }}} */
zend_stream.c:zend_stream_fsize:
   54|      9|{
   55|      9|	ZEND_ASSERT(file_handle->type == ZEND_HANDLE_STREAM);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (55:2): [True: 0, False: 9]
  |  Branch (55:2): [True: 9, False: 0]
  ------------------
   56|      9|	if (file_handle->handle.stream.isatty) {
  ------------------
  |  Branch (56:6): [True: 0, False: 9]
  ------------------
   57|      0|		return 0;
   58|      0|	}
   59|      9|	return file_handle->handle.stream.fsizer(file_handle->handle.stream.handle);
   60|      9|} /* }}} */
zend_stream.c:zend_stream_read:
  109|      9|{
  110|      9|	if (file_handle->handle.stream.isatty) {
  ------------------
  |  Branch (110:6): [True: 0, False: 9]
  ------------------
  111|      0|		int c = '*';
  112|      0|		size_t n;
  113|       |
  114|      0|		for (n = 0; n < len && (c = zend_stream_getc(file_handle)) != EOF && c != '\n'; ++n)  {
  ------------------
  |  Branch (114:15): [True: 0, False: 0]
  |  Branch (114:26): [True: 0, False: 0]
  |  Branch (114:72): [True: 0, False: 0]
  ------------------
  115|      0|			buf[n] = (char)c;
  116|      0|		}
  117|      0|		if (c == '\n') {
  ------------------
  |  Branch (117:7): [True: 0, False: 0]
  ------------------
  118|      0|			buf[n++] = (char)c;
  119|      0|		}
  120|       |
  121|      0|		return n;
  122|      0|	}
  123|      9|	return file_handle->handle.stream.reader(file_handle->handle.stream.handle, buf, len);
  124|      9|} /* }}} */
zend_stream.c:zend_compare_file_handles:
  250|  7.18k|{
  251|  7.18k|	if (fh1->type != fh2->type) {
  ------------------
  |  Branch (251:6): [True: 0, False: 7.18k]
  ------------------
  252|      0|		return 0;
  253|      0|	}
  254|  7.18k|	switch (fh1->type) {
  255|    664|		case ZEND_HANDLE_FILENAME:
  ------------------
  |  Branch (255:3): [True: 664, False: 6.52k]
  ------------------
  256|    664|			return zend_string_equals(fh1->filename, fh2->filename);
  257|      0|		case ZEND_HANDLE_FP:
  ------------------
  |  Branch (257:3): [True: 0, False: 7.18k]
  ------------------
  258|      0|			return fh1->handle.fp == fh2->handle.fp;
  259|  6.52k|		case ZEND_HANDLE_STREAM:
  ------------------
  |  Branch (259:3): [True: 6.52k, False: 664]
  ------------------
  260|  6.52k|			return fh1->handle.stream.handle == fh2->handle.stream.handle;
  261|      0|		default:
  ------------------
  |  Branch (261:3): [True: 0, False: 7.18k]
  ------------------
  262|      0|			return 0;
  263|  7.18k|	}
  264|      0|	return 0;
  265|  7.18k|} /* }}} */
zend_stream.c:zend_file_handle_dtor:
  213|  34.3k|{
  214|  34.3k|	switch (fh->type) {
  ------------------
  |  Branch (214:10): [True: 34.3k, False: 0]
  ------------------
  215|      0|		case ZEND_HANDLE_FP:
  ------------------
  |  Branch (215:3): [True: 0, False: 34.3k]
  ------------------
  216|      0|			if (fh->handle.fp) {
  ------------------
  |  Branch (216:8): [True: 0, False: 0]
  ------------------
  217|      0|				fclose(fh->handle.fp);
  218|      0|				fh->handle.fp = NULL;
  219|      0|			}
  220|      0|			break;
  221|  33.6k|		case ZEND_HANDLE_STREAM:
  ------------------
  |  Branch (221:3): [True: 33.6k, False: 720]
  ------------------
  222|  33.6k|			if (fh->handle.stream.closer && fh->handle.stream.handle) {
  ------------------
  |  Branch (222:8): [True: 9, False: 33.5k]
  |  Branch (222:36): [True: 9, False: 0]
  ------------------
  223|      9|				fh->handle.stream.closer(fh->handle.stream.handle);
  224|      9|			}
  225|  33.6k|			fh->handle.stream.handle = NULL;
  226|  33.6k|			break;
  227|    720|		case ZEND_HANDLE_FILENAME:
  ------------------
  |  Branch (227:3): [True: 720, False: 33.6k]
  ------------------
  228|       |			/* We're only supposed to get here when destructing the used_files hash,
  229|       |			 * which doesn't really contain open files, but references to their names/paths
  230|       |			 */
  231|    720|			break;
  232|  34.3k|	}
  233|  34.3k|	if (fh->opened_path) {
  ------------------
  |  Branch (233:6): [True: 5, False: 34.3k]
  ------------------
  234|      5|		zend_string_release_ex(fh->opened_path, 0);
  235|      5|		fh->opened_path = NULL;
  236|      5|	}
  237|  34.3k|	if (fh->buf) {
  ------------------
  |  Branch (237:6): [True: 33.5k, False: 724]
  ------------------
  238|  33.5k|		efree(fh->buf);
  ------------------
  |  |  154|  33.5k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|  33.5k|		fh->buf = NULL;
  240|  33.5k|	}
  241|  34.3k|	if (fh->filename) {
  ------------------
  |  Branch (241:6): [True: 34.3k, False: 0]
  ------------------
  242|  34.3k|		zend_string_release(fh->filename);
  243|       |		fh->filename = NULL;
  244|  34.3k|	}
  245|  34.3k|}

zend_string_hash_func:
   56|   136k|{
   57|   136k|	return ZSTR_H(str) = zend_hash_func(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   69|   136k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
              	return ZSTR_H(str) = zend_hash_func(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|   136k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	return ZSTR_H(str) = zend_hash_func(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|   136k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   58|   136k|}
zend_hash_func:
   61|   136k|{
   62|   136k|	return zend_inline_hash_func(str, len);
   63|   136k|}
zend_interned_strings_init:
   87|      2|{
   88|      2|	char s[2];
   89|       |
   90|      2|	interned_string_request_handler = zend_new_interned_string_request;
   91|      2|	interned_string_init_request_handler = zend_string_init_interned_request;
   92|      2|	interned_string_init_existing_request_handler = zend_string_init_existing_interned_request;
   93|       |
   94|      2|	zend_empty_string = NULL;
   95|      2|	zend_known_strings = NULL;
   96|       |
   97|      2|	zend_init_interned_strings_ht(&interned_strings_permanent, true);
   98|       |
   99|      2|	zend_new_interned_string = zend_new_interned_string_permanent;
  100|      2|	zend_string_init_interned = zend_string_init_interned_permanent;
  101|      2|	zend_string_init_existing_interned = zend_string_init_existing_interned_permanent;
  102|       |
  103|       |	/* interned empty string */
  104|      2|	zend_empty_string = zend_string_init_interned_permanent("", 0, true);
  105|      2|	GC_ADD_FLAGS(zend_empty_string, IS_STR_VALID_UTF8);
  ------------------
  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  106|       |
  107|      2|	s[1] = 0;
  108|    514|	for (size_t i = 0; i < 256; i++) {
  ------------------
  |  Branch (108:21): [True: 512, False: 2]
  ------------------
  109|    512|		s[0] = i;
  110|    512|		zend_one_char_string[i] = zend_string_init_interned_permanent(s, 1, true);
  111|    512|		if (i < 0x80) {
  ------------------
  |  Branch (111:7): [True: 256, False: 256]
  ------------------
  112|    256|			GC_ADD_FLAGS(zend_one_char_string[i], IS_STR_VALID_UTF8);
  ------------------
  |  |  780|    256|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    256|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    256|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    256|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    256|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 256]
  |  |  ------------------
  ------------------
  113|    256|		}
  114|    512|	}
  115|       |
  116|       |	/* known strings */
  117|      2|	zend_known_strings = pemalloc(sizeof(zend_string*) * ((sizeof(known_strings) / sizeof(known_strings[0]) - 1)), 1);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, Folded]
  |  |  ------------------
  ------------------
  118|    180|	for (size_t i = 0; i < (sizeof(known_strings) / sizeof(known_strings[0])) - 1; i++) {
  ------------------
  |  Branch (118:21): [True: 178, False: 2]
  ------------------
  119|    178|		zend_known_strings[i] = zend_string_init_interned_permanent(known_strings[i], strlen(known_strings[i]), true);
  120|    178|		GC_ADD_FLAGS(zend_known_strings[i], IS_STR_VALID_UTF8);
  ------------------
  |  |  780|    178|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    178|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    178|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    178|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    178|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 178]
  |  |  ------------------
  ------------------
  121|    178|	}
  122|      2|}
zend_interned_strings_activate:
  347|  33.5k|{
  348|  33.5k|	zend_init_interned_strings_ht(&CG(interned_strings), false);
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  349|  33.5k|}
zend_interned_strings_deactivate:
  352|  33.5k|{
  353|  33.5k|	zend_hash_destroy(&CG(interned_strings));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  354|  33.5k|}
zend_interned_strings_set_request_storage_handlers:
  357|      2|{
  358|      2|	interned_string_request_handler = handler;
  359|      2|	interned_string_init_request_handler = init_handler;
  360|      2|	interned_string_init_existing_request_handler = init_existing_handler;
  361|      2|}
zend_interned_strings_switch_storage:
  364|      2|{
  365|      2|	if (request) {
  ------------------
  |  Branch (365:6): [True: 2, False: 0]
  ------------------
  366|      2|		zend_new_interned_string = interned_string_request_handler;
  367|      2|		zend_string_init_interned = interned_string_init_request_handler;
  368|      2|		zend_string_init_existing_interned = interned_string_init_existing_request_handler;
  369|      2|	} else {
  370|      0|		zend_new_interned_string = zend_new_interned_string_permanent;
  371|      0|		zend_string_init_interned = zend_string_init_interned_permanent;
  372|      0|		zend_string_init_existing_interned = zend_string_init_existing_interned_permanent;
  373|      0|	}
  374|      2|}
zend_string_equal_val:
  436|  96.0k|{
  437|  96.0k|	const char *ptr = ZSTR_VAL(s1);
  ------------------
  |  |   67|  96.0k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  438|  96.0k|	uintptr_t delta = (uintptr_t) s2 - (uintptr_t) s1;
  439|  96.0k|	size_t len = ZSTR_LEN(s1);
  ------------------
  |  |   68|  96.0k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  440|  96.0k|	zend_ulong ret;
  441|       |
  442|  96.0k|	__asm__ (
  443|  96.0k|		"0:\n\t"
  444|  96.0k|		"movq (%2,%3), %0\n\t"
  445|  96.0k|		"xorq (%2), %0\n\t"
  446|  96.0k|		"jne 1f\n\t"
  447|  96.0k|		"addq $0x8, %2\n\t"
  448|  96.0k|		"subq $0x8, %1\n\t"
  449|  96.0k|		"ja 0b\n\t"
  450|  96.0k|		"movq $0x1, %0\n\t"
  451|  96.0k|		"jmp 3f\n\t"
  452|  96.0k|		"1:\n\t"
  453|  96.0k|		"cmpq $0x8,%1\n\t"
  454|  96.0k|		"jb 2f\n\t"
  455|  96.0k|		"xorq %0, %0\n\t"
  456|  96.0k|		"jmp 3f\n\t"
  457|  96.0k|		"2:\n\t"
  458|  96.0k|		"negq %1\n\t"
  459|  96.0k|		"lea 0x40(,%1,8), %1\n\t"
  460|  96.0k|		"shlq %b1, %0\n\t"
  461|  96.0k|		"sete %b0\n\t"
  462|  96.0k|		"movzbq %b0, %0\n\t"
  463|  96.0k|		"3:\n"
  464|  96.0k|		: "=&a"(ret),
  465|  96.0k|		  "+c"(len),
  466|  96.0k|		  "+r"(ptr)
  467|  96.0k|		: "r"(delta)
  468|  96.0k|		: "cc");
  469|  96.0k|	return ret;
  470|  96.0k|}
zend_string_concat2:
  476|     31|{
  477|     31|	zend_string *res = zend_string_safe_alloc(1, str1_len, str2_len, 0);
  478|       |
  479|     31|	char *p = ZSTR_VAL(res);
  ------------------
  |  |   67|     31|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  480|     31|	p = zend_mempcpy(p, str1, str1_len);
  481|     31|	p = zend_mempcpy(p, str2, str2_len);
  482|     31|	*p++ = '\0';
  483|       |
  484|     31|	return res;
  485|     31|}
zend_string_concat3:
  491|    630|{
  492|    630|	size_t tmp_len = zend_safe_address_guarded(1, str1_len, str2_len);
  493|    630|	size_t len = zend_safe_address_guarded(1, tmp_len, str3_len);
  494|    630|	zend_string *res = zend_string_alloc(len, 0);
  495|       |
  496|    630|	char *p = ZSTR_VAL(res);
  ------------------
  |  |   67|    630|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  497|    630|	p = zend_mempcpy(p, str1, str1_len);
  498|    630|	p = zend_mempcpy(p, str2, str2_len);
  499|    630|	p = zend_mempcpy(p, str3, str3_len);
  500|    630|	*p++ = '\0';
  501|       |
  502|    630|	return res;
  503|    630|}
zend_string.c:zend_init_interned_strings_ht:
   79|  33.5k|{
   80|  33.5k|	zend_hash_init(interned_strings, 1024, NULL, _str_dtor, permanent);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   81|  33.5k|	if (permanent) {
  ------------------
  |  Branch (81:6): [True: 2, False: 33.5k]
  ------------------
   82|      2|		zend_hash_real_init_mixed(interned_strings);
   83|      2|	}
   84|  33.5k|}
zend_string.c:zend_interned_string_ht_lookup:
  152|  1.69k|{
  153|  1.69k|	zend_ulong h = ZSTR_H(str);
  ------------------
  |  |   69|  1.69k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  154|  1.69k|	uint32_t nIndex;
  155|  1.69k|	uint32_t idx;
  156|  1.69k|	Bucket *p;
  157|       |
  158|  1.69k|	nIndex = h | interned_strings->nTableMask;
  159|  1.69k|	idx = HT_HASH(interned_strings, nIndex);
  ------------------
  |  |  470|  1.69k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  1.69k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
  160|  2.21k|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|  2.21k|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (160:9): [True: 1.09k, False: 1.11k]
  ------------------
  161|  1.09k|		p = HT_HASH_TO_BUCKET(interned_strings, idx);
  ------------------
  |  |  546|  1.09k|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|  1.09k|	((data) + (idx))
  |  |  ------------------
  ------------------
  162|  1.09k|		if ((p->h == h) && zend_string_equal_content(p->key, str)) {
  ------------------
  |  Branch (162:7): [True: 584, False: 514]
  |  Branch (162:22): [True: 584, False: 0]
  ------------------
  163|    584|			return p->key;
  164|    584|		}
  165|    514|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|    514|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  166|    514|	}
  167|       |
  168|  1.11k|	return NULL;
  169|  1.69k|}
zend_string.c:zend_new_interned_string_permanent:
  205|  4.11k|{
  206|  4.11k|	zend_string *ret;
  207|       |
  208|  4.11k|	if (ZSTR_IS_INTERNED(str)) {
  ------------------
  |  Branch (208:6): [True: 2.42k, False: 1.69k]
  ------------------
  209|  2.42k|		return str;
  210|  2.42k|	}
  211|       |
  212|  1.69k|	zend_string_hash_val(str);
  213|  1.69k|	ret = zend_interned_string_ht_lookup(str, &interned_strings_permanent);
  214|  1.69k|	if (ret) {
  ------------------
  |  Branch (214:6): [True: 584, False: 1.11k]
  ------------------
  215|    584|		zend_string_release(str);
  216|    584|		return ret;
  217|    584|	}
  218|       |
  219|  1.11k|	ZEND_ASSERT(GC_FLAGS(str) & GC_PERSISTENT);
  ------------------
  |  |  112|  1.11k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (219:2): [True: 0, False: 1.11k]
  |  Branch (219:2): [True: 1.11k, False: 0]
  ------------------
  220|  1.11k|	if (GC_REFCOUNT(str) > 1) {
  ------------------
  |  |  716|  1.11k|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (220:6): [True: 20, False: 1.09k]
  ------------------
  221|     20|		str = zend_init_string_for_interning(str, true);
  222|     20|	}
  223|       |
  224|  1.11k|	return zend_add_interned_string(str, &interned_strings_permanent, IS_STR_PERMANENT);
  ------------------
  |  |  840|  1.11k|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  ------------------
  225|  1.11k|}
zend_string.c:zend_init_string_for_interning:
  194|     20|{
  195|     20|	uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(str);
  196|     20|	zend_ulong h = ZSTR_H(str);
  ------------------
  |  |   69|     20|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  197|     20|	zend_string_delref(str);
  198|     20|	str = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), persistent);
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	str = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), persistent);
  ------------------
  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|     20|	GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|     20|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     20|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
  200|     20|	ZSTR_H(str) = h;
  ------------------
  |  |   69|     20|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  201|     20|	return str;
  202|     20|}
zend_string.c:zend_add_interned_string:
  174|  7.84k|{
  175|  7.84k|	zval val;
  176|       |
  177|  7.84k|	GC_SET_REFCOUNT(str, 1);
  ------------------
  |  |  717|  7.84k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  178|  7.84k|	GC_ADD_FLAGS(str, IS_STR_INTERNED | flags);
  ------------------
  |  |  780|  7.84k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  7.84k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  7.84k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  7.84k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  7.84k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 7.84k]
  |  |  ------------------
  ------------------
  179|       |
  180|  7.84k|	ZVAL_INTERNED_STR(&val, str);
  ------------------
  |  | 1098|  7.84k|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|  7.84k|		zval *__z = (z);							\
  |  | 1100|  7.84k|		zend_string *__s = (s);						\
  |  | 1101|  7.84k|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|  7.84k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  7.84k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|  7.84k|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|  7.84k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  7.84k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|  7.84k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  7.84k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|  7.84k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 7.84k]
  |  |  ------------------
  ------------------
  181|       |
  182|  7.84k|	zend_hash_add_new(interned_strings, str, &val);
  183|       |
  184|  7.84k|	return str;
  185|  7.84k|}
zend_string.c:zend_string_init_interned_permanent:
  268|  13.2k|{
  269|  13.2k|	zend_string *ret;
  270|  13.2k|	zend_ulong h = zend_inline_hash_func(str, size);
  271|       |
  272|  13.2k|	ret = zend_interned_string_ht_lookup_ex(h, str, size, &interned_strings_permanent);
  273|  13.2k|	if (ret) {
  ------------------
  |  Branch (273:6): [True: 6.53k, False: 6.73k]
  ------------------
  274|  6.53k|		return ret;
  275|  6.53k|	}
  276|       |
  277|  6.73k|	ZEND_ASSERT(permanent);
  ------------------
  |  |  112|  6.73k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (277:2): [True: 0, False: 6.73k]
  |  Branch (277:2): [True: 6.73k, False: 0]
  ------------------
  278|  6.73k|	ret = zend_string_init(str, size, permanent);
  279|  6.73k|	ZSTR_H(ret) = h;
  ------------------
  |  |   69|  6.73k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  280|  6.73k|	return zend_add_interned_string(ret, &interned_strings_permanent, IS_STR_PERMANENT);
  ------------------
  |  |  840|  6.73k|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  ------------------
  281|  6.73k|}
zend_string.c:zend_interned_string_ht_lookup_ex:
  133|  13.2k|{
  134|  13.2k|	uint32_t nIndex;
  135|  13.2k|	uint32_t idx;
  136|  13.2k|	Bucket *p;
  137|       |
  138|  13.2k|	nIndex = h | interned_strings->nTableMask;
  139|  13.2k|	idx = HT_HASH(interned_strings, nIndex);
  ------------------
  |  |  470|  13.2k|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|  13.2k|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
  140|  16.8k|	while (idx != HT_INVALID_IDX) {
  ------------------
  |  |  435|  16.8k|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
  |  Branch (140:9): [True: 10.0k, False: 6.73k]
  ------------------
  141|  10.0k|		p = HT_HASH_TO_BUCKET(interned_strings, idx);
  ------------------
  |  |  546|  10.0k|	HT_HASH_TO_BUCKET_EX((ht)->arData, idx)
  |  |  ------------------
  |  |  |  |  458|  10.0k|	((data) + (idx))
  |  |  ------------------
  ------------------
  142|  10.0k|		if ((p->h == h) && zend_string_equals_cstr(p->key, str, size)) {
  ------------------
  |  Branch (142:7): [True: 6.53k, False: 3.54k]
  |  Branch (142:22): [True: 6.53k, False: 0]
  ------------------
  143|  6.53k|			return p->key;
  144|  6.53k|		}
  145|  3.54k|		idx = Z_NEXT(p->val);
  ------------------
  |  |  680|  3.54k|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
  146|  3.54k|	}
  147|       |
  148|  6.73k|	return NULL;
  149|  13.2k|}

php_date.c:ZSTR_KNOWN:
  114|    138|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    138|	return zend_known_strings[idx];
  116|    138|}
php_date.c:ZSTR_EMPTY_ALLOC:
  106|      3|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      3|	return zend_empty_string;
  108|      3|}
php_date.c:zend_string_alloc:
  181|     90|{
  182|     90|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     90|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     90|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     90|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     90|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     90|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 90, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|     90|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     90|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     90|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     90|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     90|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     90|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     90|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     90|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     90|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     90|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     90|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 90, False: 0]
  ------------------
  186|     90|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     90|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     90|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     90|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     90|	return ret;
  189|     90|}
php_date.c:zend_string_release_ex:
  360|     92|{
  361|     92|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 14, False: 78]
  ------------------
  362|     14|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     14|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 14, False: 0]
  ------------------
  363|     14|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 14, False: 0]
  ------------------
  364|     14|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 14]
  |  Branch (364:5): [True: 14, False: 0]
  ------------------
  365|     14|				free(s);
  366|     14|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|     14|		}
  371|     14|	}
  372|     92|}
php_date.c:ZSTR_IS_INTERNED:
   74|    229|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    229|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    229|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    229|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    229|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    229|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    229|}
php_date.c:zend_string_init:
  203|     90|{
  204|     90|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     90|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     90|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     90|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     90|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     90|	return ret;
  209|     90|}
php_pcre.c:zend_string_release_ex:
  360|      2|{
  361|      2|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 2]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|      2|}
php_pcre.c:zend_string_init:
  203|    298|{
  204|    298|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|    298|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|    298|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|    298|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|    298|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|    298|	return ret;
  209|    298|}
php_pcre.c:zend_string_release:
  351|    298|{
  352|    298|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 298, False: 0]
  ------------------
  353|    298|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    298|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 0, False: 298]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  355|      0|		}
  356|    298|	}
  357|    298|}
php_pcre.c:ZSTR_IS_VALID_UTF8:
   78|    164|static inline bool ZSTR_IS_VALID_UTF8(const zend_string *s) {
   79|    164|	return GC_FLAGS(s) & IS_STR_VALID_UTF8;
  ------------------
  |  |  777|    164|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    164|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_VALID_UTF8;
  ------------------
  |  |  841|    164|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  ------------------
   80|    164|}
php_pcre.c:ZSTR_IS_INTERNED:
   74|    506|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    506|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    506|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    506|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    506|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    506|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    506|}
php_pcre.c:zend_string_alloc:
  181|    307|{
  182|    307|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|    307|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    298|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    298|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    298|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    298|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      9|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 298, False: 9]
  |  |  ------------------
  ------------------
  183|       |
  184|    307|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|    307|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|    307|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|    307|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|    307|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|    307|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|    307|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|    307|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|    298|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|    298|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    307|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 298, False: 9]
  ------------------
  186|    307|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|    307|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|    307|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|    307|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|    307|	return ret;
  189|    307|}
php_pcre.c:zend_string_extend:
  273|     24|{
  274|     24|	zend_string *ret;
  275|       |
  276|     24|	ZEND_ASSERT(len >= ZSTR_LEN(s));
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (276:2): [True: 0, False: 24]
  |  Branch (276:2): [True: 24, False: 0]
  ------------------
  277|     24|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (277:6): [True: 24, False: 0]
  ------------------
  278|     24|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 24, False: 0]
  |  |  ------------------
  ------------------
  279|     24|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     24|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     24|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 24]
  |  |  ------------------
  ------------------
  280|     24|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     24|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  281|     24|			zend_string_forget_hash_val(ret);
  282|     24|			return ret;
  283|     24|		}
  284|     24|	}
  285|      0|	ret = zend_string_alloc(len, persistent);
  286|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  287|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (287:6): [True: 0, False: 0]
  ------------------
  288|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  289|      0|	}
  290|      0|	return ret;
  291|     24|}
php_pcre.c:zend_string_forget_hash_val:
  151|     33|{
  152|     33|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     33|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     33|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     33|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     33|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     33|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     33|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     33|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 33]
  |  |  ------------------
  ------------------
  154|     33|}
php_pcre.c:zend_string_copy:
  223|      7|{
  224|      7|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 1, False: 6]
  ------------------
  225|      1|		GC_ADDREF(s);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      1|	}
  227|      7|	return s;
  228|      7|}
php_pcre.c:zend_string_realloc:
  253|      9|{
  254|      9|	zend_string *ret;
  255|       |
  256|      9|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 9, False: 0]
  ------------------
  257|      9|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
  258|      9|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|      9|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      9|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  259|      9|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      9|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|      9|			zend_string_forget_hash_val(ret);
  261|      9|			return ret;
  262|      9|		}
  263|      9|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|      9|}
php_pcre.c:zend_string_init_fast:
  212|      2|{
  213|      2|	if (len > 1) {
  ------------------
  |  Branch (213:6): [True: 0, False: 2]
  ------------------
  214|      0|		return zend_string_init(str, len, 0);
  215|      2|	} else if (len == 0) {
  ------------------
  |  Branch (215:13): [True: 2, False: 0]
  ------------------
  216|      2|		return zend_empty_string;
  217|      2|	} else /* if (len == 1) */ {
  218|      0|		return ZSTR_CHAR((zend_uchar) *str);
  219|      0|	}
  220|      2|}
php_pcre.c:zend_string_safe_alloc:
  192|      4|{
  193|      4|	zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  189|      4|#define safe_pemalloc(nmemb, size, offset, persistent)	((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset))
  |  |  ------------------
  |  |  |  |  153|      4|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (189:57): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  194|       |
  195|      4|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      4|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  196|      4|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      4|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      4|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (196:36): [True: 0, False: 4]
  ------------------
  197|      4|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      4|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  198|      4|	ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|      4|	return ret;
  200|      4|}
hash.c:ZSTR_KNOWN:
  114|     14|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     14|	return zend_known_strings[idx];
  116|     14|}
json.c:zend_string_realloc:
  253|      2|{
  254|      2|	zend_string *ret;
  255|       |
  256|      2|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 2, False: 0]
  ------------------
  257|      2|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  258|      2|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|      2|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      2|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  259|      2|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|      2|			zend_string_forget_hash_val(ret);
  261|      2|			return ret;
  262|      2|		}
  263|      2|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|      2|}
json.c:zend_string_forget_hash_val:
  151|      2|{
  152|      2|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|      2|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|      2|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|      2|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|      2|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  154|      2|}
json.c:ZSTR_IS_INTERNED:
   74|      4|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      4|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      4|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      4|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      4|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      4|}
zend_accelerator_hash.c:zend_string_hash_val:
  146|  37.6k|{
  147|  37.6k|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|  37.6k|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 32, False: 37.5k]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     32|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|  37.6k|}
zend_accelerator_hash.c:zend_string_equals:
  396|  26.5k|{
  397|  26.5k|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 0, False: 26.5k]
  |  Branch (397:21): [True: 26.5k, False: 0]
  ------------------
  398|  26.5k|}
zend_accelerator_hash.c:zend_string_equal_content:
  391|  26.5k|{
  392|  26.5k|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  26.5k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  53.1k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 26.5k, False: 0]
  |  Branch (392:41): [True: 26.5k, False: 0]
  ------------------
  393|  26.5k|}
zend_accelerator_module.c:zend_string_release:
  351|      1|{
  352|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 1, False: 0]
  ------------------
  353|      1|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 1, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  355|      1|		}
  356|      1|	}
  357|      1|}
zend_accelerator_module.c:ZSTR_IS_INTERNED:
   74|      1|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      1|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      1|}
zend_persist.c:zend_string_release_ex:
  360|      1|{
  361|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 1, False: 0]
  ------------------
  362|      1|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 1]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      1|	}
  372|      1|}
zend_persist.c:ZSTR_IS_INTERNED:
   74|      1|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      1|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      1|}
zend_persist.c:zend_string_hash_val:
  146|      1|{
  147|      1|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|      1|}
zend_persist.c:ZSTR_IS_VALID_UTF8:
   78|      1|static inline bool ZSTR_IS_VALID_UTF8(const zend_string *s) {
   79|      1|	return GC_FLAGS(s) & IS_STR_VALID_UTF8;
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_VALID_UTF8;
  ------------------
  |  |  841|      1|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  ------------------
   80|      1|}
ZendAccelerator.c:zend_string_hash_val:
  146|  87.3k|{
  147|  87.3k|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|  87.3k|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 67.4k, False: 19.8k]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|  67.4k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|  87.3k|}
ZendAccelerator.c:zend_string_equal_content:
  391|  26.4k|{
  392|  26.4k|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  26.4k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  52.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 26.4k, False: 0]
  |  Branch (392:41): [True: 26.4k, False: 2]
  ------------------
  393|  26.4k|}
ZendAccelerator.c:ZSTR_IS_VALID_UTF8:
   78|  7.11k|static inline bool ZSTR_IS_VALID_UTF8(const zend_string *s) {
   79|  7.11k|	return GC_FLAGS(s) & IS_STR_VALID_UTF8;
  ------------------
  |  |  777|  7.11k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  7.11k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_VALID_UTF8;
  ------------------
  |  |  841|  7.11k|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  ------------------
   80|  7.11k|}
ZendAccelerator.c:zend_string_release:
  351|  43.2k|{
  352|  43.2k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 10.7k, False: 32.5k]
  ------------------
  353|  10.7k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  10.7k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 4.00k, False: 6.71k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  4.00k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  4.00k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  4.00k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  4.00k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  4.00k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  4.00k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 4.00k]
  |  |  ------------------
  ------------------
  355|  4.00k|		}
  356|  10.7k|	}
  357|  43.2k|}
ZendAccelerator.c:ZSTR_IS_INTERNED:
   74|  43.4k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  43.4k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  43.4k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  43.4k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  43.4k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  43.4k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  43.4k|}
ZendAccelerator.c:zend_string_init:
  203|    236|{
  204|    236|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|    236|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|    236|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|    236|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|    236|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|    236|	return ret;
  209|    236|}
ZendAccelerator.c:zend_string_alloc:
  181|    238|{
  182|    238|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|    238|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    236|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    236|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    236|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    236|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    236|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 236]
  |  |  ------------------
  ------------------
  183|       |
  184|    238|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|    238|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|    238|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|    238|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|    238|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|    238|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|    238|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|    238|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    238|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 236]
  ------------------
  186|    238|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|    238|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|    238|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|    238|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|    238|	return ret;
  189|    238|}
ZendAccelerator.c:zend_string_copy:
  223|      4|{
  224|      4|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 4, False: 0]
  ------------------
  225|      4|		GC_ADDREF(s);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      4|	}
  227|      4|	return s;
  228|      4|}
ZendAccelerator.c:zend_string_release_ex:
  360|     36|{
  361|     36|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 36, False: 0]
  ------------------
  362|     36|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     36|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 36, False: 0]
  ------------------
  363|     36|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 36]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     36|			} else {
  367|     36|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     36|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 36]
  |  Branch (367:5): [True: 36, False: 0]
  ------------------
  368|     36|				efree(s);
  ------------------
  |  |  154|     36|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     36|			}
  370|     36|		}
  371|     36|	}
  372|     36|}
ZendAccelerator.c:ZSTR_KNOWN:
  114|      3|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      3|	return zend_known_strings[idx];
  116|      3|}
ZendAccelerator.c:zend_string_starts_with_cstr:
  410|      1|{
  411|      1|	return ZSTR_LEN(str) >= prefix_length && !memcmp(ZSTR_VAL(str), prefix, prefix_length);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) >= prefix_length && !memcmp(ZSTR_VAL(str), prefix, prefix_length);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (411:9): [True: 1, False: 0]
  |  Branch (411:43): [True: 0, False: 1]
  ------------------
  412|      1|}
ZendAccelerator.c:zend_string_equals:
  396|      1|{
  397|      1|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 0, False: 1]
  |  Branch (397:21): [True: 1, False: 0]
  ------------------
  398|      1|}
ZendAccelerator.c:zend_inline_hash_func:
  469|    237|{
  470|    237|	zend_ulong hash = Z_UL(5381);
  ------------------
  |  |   38|    237|# define Z_UL(i) UINT64_C(i)
  ------------------
  471|       |
  472|    237|#if defined(_WIN32) || defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
  473|       |	/* Version with multiplication works better on modern CPU */
  474|    462|	for (; len >= 8; len -= 8, str += 8) {
  ------------------
  |  Branch (474:9): [True: 225, False: 237]
  ------------------
  475|       |# if defined(__aarch64__) && !defined(WORDS_BIGENDIAN)
  476|       |		/* On some architectures it is beneficial to load 8 bytes at a
  477|       |		   time and extract each byte with a bit field extract instr. */
  478|       |		uint64_t chunk;
  479|       |
  480|       |		memcpy(&chunk, str, sizeof(chunk));
  481|       |		hash =
  482|       |			hash                        * 33 * 33 * 33 * 33 +
  483|       |			((chunk >> (8 * 0)) & 0xff) * 33 * 33 * 33 +
  484|       |			((chunk >> (8 * 1)) & 0xff) * 33 * 33 +
  485|       |			((chunk >> (8 * 2)) & 0xff) * 33 +
  486|       |			((chunk >> (8 * 3)) & 0xff);
  487|       |		hash =
  488|       |			hash                        * 33 * 33 * 33 * 33 +
  489|       |			((chunk >> (8 * 4)) & 0xff) * 33 * 33 * 33 +
  490|       |			((chunk >> (8 * 5)) & 0xff) * 33 * 33 +
  491|       |			((chunk >> (8 * 6)) & 0xff) * 33 +
  492|       |			((chunk >> (8 * 7)) & 0xff);
  493|       |# else
  494|    225|		hash =
  495|    225|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  496|    225|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  497|    225|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  498|    225|			str[2] * Z_L(33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  499|    225|			str[3];
  500|    225|		hash =
  501|    225|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  502|    225|			str[4] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  503|    225|			str[5] * Z_L(33 * 33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  504|    225|			str[6] * Z_L(33) +
  ------------------
  |  |   37|    225|# define Z_L(i) INT64_C(i)
  ------------------
  505|    225|			str[7];
  506|    225|# endif
  507|    225|	}
  508|    237|	if (len >= 4) {
  ------------------
  |  Branch (508:6): [True: 120, False: 117]
  ------------------
  509|    120|		hash =
  510|    120|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|    120|# define Z_L(i) INT64_C(i)
  ------------------
  511|    120|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|    120|# define Z_L(i) INT64_C(i)
  ------------------
  512|    120|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|    120|# define Z_L(i) INT64_C(i)
  ------------------
  513|    120|			str[2] * Z_L(33) +
  ------------------
  |  |   37|    120|# define Z_L(i) INT64_C(i)
  ------------------
  514|    120|			str[3];
  515|    120|		len -= 4;
  516|    120|		str += 4;
  517|    120|	}
  518|    237|	if (len >= 2) {
  ------------------
  |  Branch (518:6): [True: 97, False: 140]
  ------------------
  519|     97|		if (len > 2) {
  ------------------
  |  Branch (519:7): [True: 59, False: 38]
  ------------------
  520|     59|			hash =
  521|     59|				hash   * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|     59|# define Z_L(i) INT64_C(i)
  ------------------
  522|     59|				str[0] * Z_L(33 * 33) +
  ------------------
  |  |   37|     59|# define Z_L(i) INT64_C(i)
  ------------------
  523|     59|				str[1] * Z_L(33) +
  ------------------
  |  |   37|     59|# define Z_L(i) INT64_C(i)
  ------------------
  524|     59|				str[2];
  525|     59|		} else {
  526|     38|			hash =
  527|     38|				hash   * Z_L(33 * 33) +
  ------------------
  |  |   37|     38|# define Z_L(i) INT64_C(i)
  ------------------
  528|     38|				str[0] * Z_L(33) +
  ------------------
  |  |   37|     38|# define Z_L(i) INT64_C(i)
  ------------------
  529|     38|				str[1];
  530|     38|		}
  531|    140|	} else if (len != 0) {
  ------------------
  |  Branch (531:13): [True: 74, False: 66]
  ------------------
  532|     74|		hash = hash * Z_L(33) + *str;
  ------------------
  |  |   37|     74|# define Z_L(i) INT64_C(i)
  ------------------
  533|     74|	}
  534|       |#else
  535|       |	/* variant with the hash unrolled eight times */
  536|       |	for (; len >= 8; len -= 8) {
  537|       |		hash = ((hash << 5) + hash) + *str++;
  538|       |		hash = ((hash << 5) + hash) + *str++;
  539|       |		hash = ((hash << 5) + hash) + *str++;
  540|       |		hash = ((hash << 5) + hash) + *str++;
  541|       |		hash = ((hash << 5) + hash) + *str++;
  542|       |		hash = ((hash << 5) + hash) + *str++;
  543|       |		hash = ((hash << 5) + hash) + *str++;
  544|       |		hash = ((hash << 5) + hash) + *str++;
  545|       |	}
  546|       |	switch (len) {
  547|       |		case 7: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  548|       |		case 6: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  549|       |		case 5: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  550|       |		case 4: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  551|       |		case 3: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  552|       |		case 2: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  553|       |		case 1: hash = ((hash << 5) + hash) + *str++; break;
  554|       |		case 0: break;
  555|       |default: ZEND_UNREACHABLE();
  556|       |	}
  557|       |#endif
  558|       |
  559|       |	/* Hash value can't be zero, so we always set the high bit */
  560|    237|#if SIZEOF_ZEND_LONG == 8
  561|    237|	return hash | Z_UL(0x8000000000000000);
  ------------------
  |  |   38|    237|# define Z_UL(i) UINT64_C(i)
  ------------------
  562|       |#elif SIZEOF_ZEND_LONG == 4
  563|       |	return hash | Z_UL(0x80000000);
  564|       |#else
  565|       |# error "Unknown SIZEOF_ZEND_LONG"
  566|       |#endif
  567|    237|}
ZendAccelerator.c:zend_string_equals_cstr:
  375|     37|{
  376|     37|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|     37|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|     37|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 37, False: 0]
  |  Branch (376:38): [True: 37, False: 0]
  ------------------
  377|     37|}
ZendAccelerator.c:ZSTR_CHAR:
  110|    512|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|    512|	return zend_one_char_string[c];
  112|    512|}
ZendAccelerator.c:zend_string_addref:
  165|     16|{
  166|     16|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 0, False: 16]
  ------------------
  167|      0|		return GC_ADDREF(s);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|      0|	}
  169|     16|	return 1;
  170|     16|}
random.c:zend_string_alloc:
  181|      8|{
  182|      8|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      8|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 8, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      8|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      8|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      8|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      8|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      8|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      8|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      8|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 8, False: 0]
  ------------------
  186|      8|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      8|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      8|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      8|	return ret;
  189|      8|}
random.c:zend_string_release_ex:
  360|      2|{
  361|      2|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2, False: 0]
  ------------------
  362|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2, False: 0]
  ------------------
  363|      2|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 2, False: 0]
  ------------------
  364|      2|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 2]
  |  Branch (364:5): [True: 2, False: 0]
  ------------------
  365|      2|				free(s);
  366|      2|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      2|		}
  371|      2|	}
  372|      2|}
random.c:ZSTR_IS_INTERNED:
   74|     10|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     10|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     10|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     10|}
random.c:zend_string_init:
  203|      8|{
  204|      8|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      8|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      8|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      8|	return ret;
  209|      8|}
random.c:ZSTR_KNOWN:
  114|     16|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     16|	return zend_known_strings[idx];
  116|     16|}
php_reflection.c:ZSTR_IS_INTERNED:
   74|  1.90k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  1.90k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  1.90k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.90k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  1.90k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  1.90k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  1.90k|}
php_reflection.c:ZSTR_KNOWN:
  114|     74|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     74|	return zend_known_strings[idx];
  116|     74|}
php_reflection.c:zend_string_release:
  351|    217|{
  352|    217|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 77, False: 140]
  ------------------
  353|     77|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     77|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 36, False: 41]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     36|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     36|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 36]
  |  |  ------------------
  ------------------
  355|     36|		}
  356|     77|	}
  357|    217|}
php_reflection.c:zend_string_realloc:
  253|     34|{
  254|     34|	zend_string *ret;
  255|       |
  256|     34|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 34, False: 0]
  ------------------
  257|     34|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     34|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  258|     34|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     34|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     34|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     34|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     34|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     34|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     34|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 34]
  |  |  ------------------
  ------------------
  259|     34|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     34|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|     34|			zend_string_forget_hash_val(ret);
  261|     34|			return ret;
  262|     34|		}
  263|     34|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|     34|}
php_reflection.c:zend_string_forget_hash_val:
  151|     34|{
  152|     34|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     34|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     34|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     34|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     34|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     34|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     34|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
  154|     34|}
php_reflection.c:zend_string_addref:
  165|      1|{
  166|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 0, False: 1]
  ------------------
  167|      0|		return GC_ADDREF(s);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|      0|	}
  169|      1|	return 1;
  170|      1|}
php_reflection.c:zend_string_init:
  203|     44|{
  204|     44|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     44|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     44|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     44|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     44|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     44|	return ret;
  209|     44|}
php_reflection.c:zend_string_release_ex:
  360|    204|{
  361|    204|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 128, False: 76]
  ------------------
  362|    128|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    128|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 120, False: 8]
  ------------------
  363|    120|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 120]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|    120|			} else {
  367|    120|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|    120|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 120]
  |  Branch (367:5): [True: 120, False: 0]
  ------------------
  368|    120|				efree(s);
  ------------------
  |  |  154|    120|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    120|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    120|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    120|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    120|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|    120|			}
  370|    120|		}
  371|    128|	}
  372|    204|}
php_reflection.c:ZSTR_EMPTY_ALLOC:
  106|      1|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      1|	return zend_empty_string;
  108|      1|}
php_reflection.c:zend_string_alloc:
  181|     55|{
  182|     55|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     55|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     43|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     43|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     43|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     43|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     43|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 12, False: 43]
  |  |  ------------------
  ------------------
  183|       |
  184|     55|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     55|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     55|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     55|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     55|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     55|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     55|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     55|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     12|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     12|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     55|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 12, False: 43]
  ------------------
  186|     55|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     55|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     55|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     55|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     55|	return ret;
  189|     55|}
php_reflection.c:zend_string_copy:
  223|     53|{
  224|     53|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 28, False: 25]
  ------------------
  225|     28|		GC_ADDREF(s);
  ------------------
  |  |  718|     28|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|     28|	}
  227|     53|	return s;
  228|     53|}
php_spl.c:ZSTR_IS_INTERNED:
   74|     55|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     55|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     55|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     55|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     55|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     55|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     55|}
spl_array.c:zend_string_release_ex:
  360|     10|{
  361|     10|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 10]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|     10|}
spl_array.c:ZSTR_IS_INTERNED:
   74|     10|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     10|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     10|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     10|}
spl_array.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
spl_directory.c:ZSTR_IS_INTERNED:
   74|     34|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     34|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     34|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     34|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     34|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     34|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     34|}
spl_directory.c:zend_string_release_ex:
  360|     32|{
  361|     32|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 32]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|     32|}
spl_directory.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
spl_dllist.c:ZSTR_IS_INTERNED:
   74|      8|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      8|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      8|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      8|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      8|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      8|}
spl_dllist.c:zend_string_release_ex:
  360|      8|{
  361|      8|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 8]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|      8|}
spl_fixedarray.c:ZSTR_KNOWN:
  114|      8|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      8|	return zend_known_strings[idx];
  116|      8|}
spl_fixedarray.c:ZSTR_IS_INTERNED:
   74|      4|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      4|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      4|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      4|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      4|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      4|}
spl_fixedarray.c:zend_string_init:
  203|      2|{
  204|      2|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      2|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      2|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      2|	return ret;
  209|      2|}
spl_fixedarray.c:zend_string_alloc:
  181|      2|{
  182|      2|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      2|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      2|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      2|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 0]
  ------------------
  186|      2|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      2|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      2|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      2|	return ret;
  189|      2|}
spl_heap.c:zend_string_release_ex:
  360|      6|{
  361|      6|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 6]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|      6|}
spl_heap.c:ZSTR_IS_INTERNED:
   74|      6|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      6|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      6|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      6|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      6|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      6|}
spl_iterators.c:zend_string_release:
  351|     14|{
  352|     14|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 8, False: 6]
  ------------------
  353|      8|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      8|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 8, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      8|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  355|      8|		}
  356|      8|	}
  357|     14|}
spl_iterators.c:ZSTR_IS_INTERNED:
   74|     66|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     66|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     66|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     66|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     66|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     66|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     66|}
spl_iterators.c:zend_string_release_ex:
  360|     52|{
  361|     52|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2, False: 50]
  ------------------
  362|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2, False: 0]
  ------------------
  363|      2|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 2, False: 0]
  ------------------
  364|      2|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 2]
  |  Branch (364:5): [True: 2, False: 0]
  ------------------
  365|      2|				free(s);
  366|      2|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      2|		}
  371|      2|	}
  372|     52|}
spl_iterators.c:ZSTR_EMPTY_ALLOC:
  106|      6|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      6|	return zend_empty_string;
  108|      6|}
spl_iterators.c:zend_string_init:
  203|     10|{
  204|     10|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     10|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     10|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     10|	return ret;
  209|     10|}
spl_iterators.c:zend_string_alloc:
  181|     10|{
  182|     10|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     10|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      8|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 8]
  |  |  ------------------
  ------------------
  183|       |
  184|     10|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     10|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     10|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     10|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     10|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 8]
  ------------------
  186|     10|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     10|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     10|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     10|	return ret;
  189|     10|}
spl_observer.c:zend_string_release_ex:
  360|      8|{
  361|      8|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 8]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|      8|}
spl_observer.c:zend_string_alloc:
  181|      6|{
  182|      6|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      6|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      6|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      6|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      6|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      6|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      6|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      6|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      6|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 6, False: 0]
  ------------------
  186|      6|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      6|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      6|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      6|	return ret;
  189|      6|}
spl_observer.c:ZSTR_IS_INTERNED:
   74|     20|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     20|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     20|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     20|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     20|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     20|}
spl_observer.c:ZSTR_KNOWN:
  114|     24|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     24|	return zend_known_strings[idx];
  116|     24|}
spl_observer.c:zend_string_init:
  203|      6|{
  204|      6|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      6|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      6|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      6|	return ret;
  209|      6|}
array.c:ZSTR_KNOWN:
  114|      9|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      9|	return zend_known_strings[idx];
  116|      9|}
array.c:zend_string_equal_content:
  391|    523|{
  392|    523|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|    523|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  1.04k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 3, False: 520]
  |  Branch (392:41): [True: 1, False: 2]
  ------------------
  393|    523|}
array.c:zend_string_equals_cstr:
  375|      2|{
  376|      2|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 0, False: 2]
  |  Branch (376:38): [True: 0, False: 0]
  ------------------
  377|      2|}
array.c:ZSTR_CHAR:
  110|    118|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|    118|	return zend_one_char_string[c];
  112|    118|}
array.c:zend_string_release:
  351|      1|{
  352|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 0, False: 1]
  ------------------
  353|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 0, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  355|      0|		}
  356|      0|	}
  357|      1|}
array.c:ZSTR_IS_INTERNED:
   74|     29|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     29|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     29|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     29|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     29|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     29|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     29|}
array.c:zend_string_release_ex:
  360|     21|{
  361|     21|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 1, False: 20]
  ------------------
  362|      1|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 1, False: 0]
  ------------------
  363|      1|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 1]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      1|			} else {
  367|      1|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 1]
  |  Branch (367:5): [True: 1, False: 0]
  ------------------
  368|      1|				efree(s);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      1|			}
  370|      1|		}
  371|      1|	}
  372|     21|}
array.c:zend_string_equals:
  396|      9|{
  397|      9|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 0, False: 9]
  |  Branch (397:21): [True: 1, False: 8]
  ------------------
  398|      9|}
array.c:zend_string_addref:
  165|      1|{
  166|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 1, False: 0]
  ------------------
  167|      1|		return GC_ADDREF(s);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|      1|	}
  169|      0|	return 1;
  170|      1|}
array.c:zend_string_hash_val:
  146|      1|{
  147|      1|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|      1|}
assert.c:zend_string_init:
  203|      9|{
  204|      9|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      9|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      9|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      9|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      9|	return ret;
  209|      9|}
assert.c:zend_string_alloc:
  181|      9|{
  182|      9|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      9|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      9|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  183|       |
  184|      9|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      9|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      9|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      9|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      9|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      9|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      9|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      9|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      9|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 9]
  ------------------
  186|      9|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      9|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      9|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      9|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      9|	return ret;
  189|      9|}
assert.c:ZSTR_IS_INTERNED:
   74|     28|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     28|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     28|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     28|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     28|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     28|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     28|}
assert.c:zend_string_release_ex:
  360|     18|{
  361|     18|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 9, False: 9]
  ------------------
  362|      9|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      9|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 9, False: 0]
  ------------------
  363|      9|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 9]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      9|			} else {
  367|      9|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 9]
  |  Branch (367:5): [True: 9, False: 0]
  ------------------
  368|      9|				efree(s);
  ------------------
  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      9|			}
  370|      9|		}
  371|      9|	}
  372|     18|}
basic_functions.c:zend_string_release:
  351|      7|{
  352|      7|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 7, False: 0]
  ------------------
  353|      7|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      7|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 5, False: 2]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      5|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  355|      5|		}
  356|      7|	}
  357|      7|}
basic_functions.c:zend_string_release_ex:
  360|     22|{
  361|     22|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 9, False: 13]
  ------------------
  362|      9|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      9|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 7, False: 2]
  ------------------
  363|      7|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 7]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      7|			} else {
  367|      7|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 7]
  |  Branch (367:5): [True: 7, False: 0]
  ------------------
  368|      7|				efree(s);
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      7|			}
  370|      7|		}
  371|      9|	}
  372|     22|}
basic_functions.c:zend_string_init:
  203|     14|{
  204|     14|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     14|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     14|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     14|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     14|	return ret;
  209|     14|}
basic_functions.c:zend_string_alloc:
  181|     14|{
  182|     14|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     14|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 8, False: 6]
  |  |  ------------------
  ------------------
  183|       |
  184|     14|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     14|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     14|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     14|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     14|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     14|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     14|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     14|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      8|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      8|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     14|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 8, False: 6]
  ------------------
  186|     14|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     14|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     14|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     14|	return ret;
  189|     14|}
basic_functions.c:ZSTR_IS_INTERNED:
   74|    132|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    132|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    132|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    132|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    132|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    132|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    132|}
basic_functions.c:ZSTR_KNOWN:
  114|     84|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     84|	return zend_known_strings[idx];
  116|     84|}
basic_functions.c:ZSTR_CHAR:
  110|      2|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|      2|	return zend_one_char_string[c];
  112|      2|}
basic_functions.c:zend_string_copy:
  223|      1|{
  224|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 1, False: 0]
  ------------------
  225|      1|		GC_ADDREF(s);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      1|	}
  227|      1|	return s;
  228|      1|}
basic_functions.c:zend_string_equals_cstr:
  375|    224|{
  376|    224|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|    224|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 13, False: 211]
  |  Branch (376:38): [True: 0, False: 13]
  ------------------
  377|    224|}
dir.c:ZSTR_KNOWN:
  114|      2|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      2|	return zend_known_strings[idx];
  116|      2|}
dir.c:zend_string_release_ex:
  360|      2|{
  361|      2|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2, False: 0]
  ------------------
  362|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2, False: 0]
  ------------------
  363|      2|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 2, False: 0]
  ------------------
  364|      2|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 2]
  |  Branch (364:5): [True: 2, False: 0]
  ------------------
  365|      2|				free(s);
  366|      2|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      2|		}
  371|      2|	}
  372|      2|}
dir.c:zend_string_init:
  203|      2|{
  204|      2|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      2|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      2|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      2|	return ret;
  209|      2|}
dir.c:zend_string_alloc:
  181|      2|{
  182|      2|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      2|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      2|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      2|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 0]
  ------------------
  186|      2|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      2|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      2|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      2|	return ret;
  189|      2|}
dir.c:ZSTR_IS_INTERNED:
   74|      2|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      2|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      2|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      2|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      2|}
exec.c:zend_string_safe_alloc:
  192|      1|{
  193|      1|	zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  189|      1|#define safe_pemalloc(nmemb, size, offset, persistent)	((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset))
  |  |  ------------------
  |  |  |  |  153|      1|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (189:57): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  194|       |
  195|      1|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  196|      1|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      1|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (196:36): [True: 0, False: 1]
  ------------------
  197|      1|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  198|      1|	ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|      1|	return ret;
  200|      1|}
exec.c:ZSTR_IS_INTERNED:
   74|      1|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      1|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      1|}
file.c:ZSTR_KNOWN:
  114|     16|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     16|	return zend_known_strings[idx];
  116|     16|}
file.c:ZSTR_IS_INTERNED:
   74|      8|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      8|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      8|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      8|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      8|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      8|}
file.c:zend_string_init:
  203|      2|{
  204|      2|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      2|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      2|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      2|	return ret;
  209|      2|}
file.c:zend_string_alloc:
  181|      2|{
  182|      2|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      2|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      2|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      2|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 0]
  ------------------
  186|      2|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      2|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      2|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      2|	return ret;
  189|      2|}
formatted_print.c:zend_string_alloc:
  181|      7|{
  182|      7|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      7|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  183|       |
  184|      7|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      7|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      7|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      7|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      7|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 7]
  ------------------
  186|      7|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      7|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      7|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      7|	return ret;
  189|      7|}
formatted_print.c:ZSTR_IS_INTERNED:
   74|      7|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      7|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      7|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      7|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      7|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      7|}
formatted_print.c:zend_string_efree:
  343|      4|{
  344|      4|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 4]
  |  Branch (344:2): [True: 4, False: 0]
  ------------------
  345|      4|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 4]
  |  Branch (345:2): [True: 4, False: 0]
  ------------------
  346|      4|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 4]
  |  Branch (346:2): [True: 4, False: 0]
  ------------------
  347|      4|	efree(s);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      4|}
head.c:zend_string_init:
  203|      1|{
  204|      1|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      1|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      1|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      1|	return ret;
  209|      1|}
head.c:zend_string_alloc:
  181|      1|{
  182|      1|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      1|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  183|       |
  184|      1|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      1|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      1|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 1]
  ------------------
  186|      1|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      1|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      1|	return ret;
  189|      1|}
html.c:zend_string_alloc:
  181|     63|{
  182|     63|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     63|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     63|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     63|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     63|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     63|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     63|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 63]
  |  |  ------------------
  ------------------
  183|       |
  184|     63|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     63|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     63|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     63|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     63|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     63|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     63|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     63|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     63|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 63]
  ------------------
  186|     63|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     63|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     63|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     63|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     63|	return ret;
  189|     63|}
html.c:zend_string_safe_realloc:
  315|     57|{
  316|     57|	zend_string *ret;
  317|       |
  318|     57|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (318:6): [True: 57, False: 0]
  ------------------
  319|     57|		if (GC_REFCOUNT(s) == 1) {
  ------------------
  |  |  716|     57|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (319:7): [True: 57, False: 0]
  ------------------
  320|     57|			ret = (zend_string *)safe_perealloc(s, n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  202|     57|#define safe_perealloc(ptr, nmemb, size, offset, persistent)	((persistent)?_safe_realloc((ptr), (nmemb), (size), (offset)):safe_erealloc((ptr), (nmemb), (size), (offset)))
  |  |  ------------------
  |  |  |  |  160|     57|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     57|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     57|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     57|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     57|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (202:63): [True: 0, False: 57]
  |  |  ------------------
  ------------------
  321|     57|			ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|     57|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  322|     57|			zend_string_forget_hash_val(ret);
  323|     57|			return ret;
  324|     57|		}
  325|     57|	}
  326|      0|	ret = zend_string_safe_alloc(n, m, l, persistent);
  327|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN((n * m) + l, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN((n * m) + l, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN((n * m) + l, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  328|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (328:6): [True: 0, False: 0]
  ------------------
  329|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  330|      0|	}
  331|      0|	return ret;
  332|     57|}
html.c:zend_string_forget_hash_val:
  151|     57|{
  152|     57|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     57|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     57|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     57|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     57|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     57|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     57|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     57|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 57]
  |  |  ------------------
  ------------------
  154|     57|}
html.c:zend_string_efree:
  343|      9|{
  344|      9|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 9]
  |  Branch (344:2): [True: 9, False: 0]
  ------------------
  345|      9|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 9]
  |  Branch (345:2): [True: 9, False: 0]
  ------------------
  346|      9|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 9]
  |  Branch (346:2): [True: 9, False: 0]
  ------------------
  347|      9|	efree(s);
  ------------------
  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      9|}
html.c:ZSTR_EMPTY_ALLOC:
  106|      9|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      9|	return zend_empty_string;
  108|      9|}
html.c:zend_inline_hash_func:
  469|      1|{
  470|      1|	zend_ulong hash = Z_UL(5381);
  ------------------
  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  ------------------
  471|       |
  472|      1|#if defined(_WIN32) || defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
  473|       |	/* Version with multiplication works better on modern CPU */
  474|      1|	for (; len >= 8; len -= 8, str += 8) {
  ------------------
  |  Branch (474:9): [True: 0, False: 1]
  ------------------
  475|       |# if defined(__aarch64__) && !defined(WORDS_BIGENDIAN)
  476|       |		/* On some architectures it is beneficial to load 8 bytes at a
  477|       |		   time and extract each byte with a bit field extract instr. */
  478|       |		uint64_t chunk;
  479|       |
  480|       |		memcpy(&chunk, str, sizeof(chunk));
  481|       |		hash =
  482|       |			hash                        * 33 * 33 * 33 * 33 +
  483|       |			((chunk >> (8 * 0)) & 0xff) * 33 * 33 * 33 +
  484|       |			((chunk >> (8 * 1)) & 0xff) * 33 * 33 +
  485|       |			((chunk >> (8 * 2)) & 0xff) * 33 +
  486|       |			((chunk >> (8 * 3)) & 0xff);
  487|       |		hash =
  488|       |			hash                        * 33 * 33 * 33 * 33 +
  489|       |			((chunk >> (8 * 4)) & 0xff) * 33 * 33 * 33 +
  490|       |			((chunk >> (8 * 5)) & 0xff) * 33 * 33 +
  491|       |			((chunk >> (8 * 6)) & 0xff) * 33 +
  492|       |			((chunk >> (8 * 7)) & 0xff);
  493|       |# else
  494|      0|		hash =
  495|      0|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  496|      0|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  497|      0|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  498|      0|			str[2] * Z_L(33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  499|      0|			str[3];
  500|      0|		hash =
  501|      0|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  502|      0|			str[4] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  503|      0|			str[5] * Z_L(33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  504|      0|			str[6] * Z_L(33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  505|      0|			str[7];
  506|      0|# endif
  507|      0|	}
  508|      1|	if (len >= 4) {
  ------------------
  |  Branch (508:6): [True: 0, False: 1]
  ------------------
  509|      0|		hash =
  510|      0|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  511|      0|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  512|      0|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  513|      0|			str[2] * Z_L(33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  514|      0|			str[3];
  515|      0|		len -= 4;
  516|      0|		str += 4;
  517|      0|	}
  518|      1|	if (len >= 2) {
  ------------------
  |  Branch (518:6): [True: 1, False: 0]
  ------------------
  519|      1|		if (len > 2) {
  ------------------
  |  Branch (519:7): [True: 0, False: 1]
  ------------------
  520|      0|			hash =
  521|      0|				hash   * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  522|      0|				str[0] * Z_L(33 * 33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  523|      0|				str[1] * Z_L(33) +
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  524|      0|				str[2];
  525|      1|		} else {
  526|      1|			hash =
  527|      1|				hash   * Z_L(33 * 33) +
  ------------------
  |  |   37|      1|# define Z_L(i) INT64_C(i)
  ------------------
  528|      1|				str[0] * Z_L(33) +
  ------------------
  |  |   37|      1|# define Z_L(i) INT64_C(i)
  ------------------
  529|      1|				str[1];
  530|      1|		}
  531|      1|	} else if (len != 0) {
  ------------------
  |  Branch (531:13): [True: 0, False: 0]
  ------------------
  532|      0|		hash = hash * Z_L(33) + *str;
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  533|      0|	}
  534|       |#else
  535|       |	/* variant with the hash unrolled eight times */
  536|       |	for (; len >= 8; len -= 8) {
  537|       |		hash = ((hash << 5) + hash) + *str++;
  538|       |		hash = ((hash << 5) + hash) + *str++;
  539|       |		hash = ((hash << 5) + hash) + *str++;
  540|       |		hash = ((hash << 5) + hash) + *str++;
  541|       |		hash = ((hash << 5) + hash) + *str++;
  542|       |		hash = ((hash << 5) + hash) + *str++;
  543|       |		hash = ((hash << 5) + hash) + *str++;
  544|       |		hash = ((hash << 5) + hash) + *str++;
  545|       |	}
  546|       |	switch (len) {
  547|       |		case 7: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  548|       |		case 6: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  549|       |		case 5: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  550|       |		case 4: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  551|       |		case 3: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  552|       |		case 2: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  553|       |		case 1: hash = ((hash << 5) + hash) + *str++; break;
  554|       |		case 0: break;
  555|       |default: ZEND_UNREACHABLE();
  556|       |	}
  557|       |#endif
  558|       |
  559|       |	/* Hash value can't be zero, so we always set the high bit */
  560|      1|#if SIZEOF_ZEND_LONG == 8
  561|      1|	return hash | Z_UL(0x8000000000000000);
  ------------------
  |  |   38|      1|# define Z_UL(i) UINT64_C(i)
  ------------------
  562|       |#elif SIZEOF_ZEND_LONG == 4
  563|       |	return hash | Z_UL(0x80000000);
  564|       |#else
  565|       |# error "Unknown SIZEOF_ZEND_LONG"
  566|       |#endif
  567|      1|}
html.c:ZSTR_IS_INTERNED:
   74|    129|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    129|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    129|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    129|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    129|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    129|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    129|}
incomplete_class.c:ZSTR_IS_INTERNED:
   74|      4|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      4|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      4|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      4|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      4|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      4|}
info.c:zend_string_init:
  203|      7|{
  204|      7|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      7|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      7|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      7|	return ret;
  209|      7|}
info.c:zend_string_alloc:
  181|      7|{
  182|      7|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      7|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  183|       |
  184|      7|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      7|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      7|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      7|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      7|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 7]
  ------------------
  186|      7|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      7|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      7|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      7|	return ret;
  189|      7|}
info.c:zend_string_free:
  335|      1|{
  336|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (336:6): [True: 1, False: 0]
  ------------------
  337|      1|		ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (337:3): [True: 0, False: 1]
  |  Branch (337:3): [True: 1, False: 0]
  ------------------
  338|      1|		pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  339|      1|	}
  340|      1|}
info.c:zend_string_release_ex:
  360|      2|{
  361|      2|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2, False: 0]
  ------------------
  362|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2, False: 0]
  ------------------
  363|      2|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 2]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      2|			} else {
  367|      2|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 2]
  |  Branch (367:5): [True: 2, False: 0]
  ------------------
  368|      2|				efree(s);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      2|			}
  370|      2|		}
  371|      2|	}
  372|      2|}
info.c:zend_string_efree:
  343|      7|{
  344|      7|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 7]
  |  Branch (344:2): [True: 7, False: 0]
  ------------------
  345|      7|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 7]
  |  Branch (345:2): [True: 7, False: 0]
  ------------------
  346|      7|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 7]
  |  Branch (346:2): [True: 7, False: 0]
  ------------------
  347|      7|	efree(s);
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      7|}
info.c:ZSTR_IS_INTERNED:
   74|     10|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     10|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     10|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     10|}
md5.c:zend_string_alloc:
  181|      2|{
  182|      2|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      2|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  183|       |
  184|      2|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      2|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      2|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 2]
  ------------------
  186|      2|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      2|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      2|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      2|	return ret;
  189|      2|}
quot_print.c:zend_string_safe_alloc:
  192|     13|{
  193|     13|	zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  189|     13|#define safe_pemalloc(nmemb, size, offset, persistent)	((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset))
  |  |  ------------------
  |  |  |  |  153|     13|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     13|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     13|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     13|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     13|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (189:57): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  194|       |
  195|     13|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     13|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  196|     13|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     13|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     13|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     13|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     13|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     13|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     13|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (196:36): [True: 0, False: 13]
  ------------------
  197|     13|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     13|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  198|     13|	ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|     13|	return ret;
  200|     13|}
quot_print.c:zend_string_truncate:
  294|     13|{
  295|     13|	zend_string *ret;
  296|       |
  297|     13|	ZEND_ASSERT(len <= ZSTR_LEN(s));
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (297:2): [True: 0, False: 13]
  |  Branch (297:2): [True: 13, False: 0]
  ------------------
  298|     13|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (298:6): [True: 13, False: 0]
  ------------------
  299|     13|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 0]
  |  |  ------------------
  ------------------
  300|     13|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     13|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     13|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     13|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     13|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     13|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     13|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  301|     13|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  302|     13|			zend_string_forget_hash_val(ret);
  303|     13|			return ret;
  304|     13|		}
  305|     13|	}
  306|      0|	ret = zend_string_alloc(len, persistent);
  307|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), len + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), len + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  308|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (308:6): [True: 0, False: 0]
  ------------------
  309|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  310|      0|	}
  311|      0|	return ret;
  312|     13|}
quot_print.c:zend_string_forget_hash_val:
  151|     13|{
  152|     13|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     13|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     13|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     13|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     13|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     13|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     13|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  154|     13|}
quot_print.c:ZSTR_IS_INTERNED:
   74|     26|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     26|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     26|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     26|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     26|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     26|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     26|}
string.c:ZSTR_IS_INTERNED:
   74|     56|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     56|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     56|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     56|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     56|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     56|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     56|}
string.c:zend_string_init:
  203|     45|{
  204|     45|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     45|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     45|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     45|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     45|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     45|	return ret;
  209|     45|}
string.c:ZSTR_EMPTY_ALLOC:
  106|      5|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      5|	return zend_empty_string;
  108|      5|}
string.c:zend_string_safe_alloc:
  192|     29|{
  193|     29|	zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  189|     29|#define safe_pemalloc(nmemb, size, offset, persistent)	((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset))
  |  |  ------------------
  |  |  |  |  153|     29|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     29|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     29|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     29|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     29|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (189:57): [True: 0, False: 29]
  |  |  ------------------
  ------------------
  194|       |
  195|     29|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     29|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  196|     29|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     29|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     29|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     29|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     29|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     29|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     29|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (196:36): [True: 0, False: 29]
  ------------------
  197|     29|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     29|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  198|     29|	ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|     29|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|     29|	return ret;
  200|     29|}
string.c:zend_string_forget_hash_val:
  151|     17|{
  152|     17|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     17|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     17|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     17|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     17|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     17|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     17|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
  154|     17|}
string.c:zend_string_truncate:
  294|     17|{
  295|     17|	zend_string *ret;
  296|       |
  297|     17|	ZEND_ASSERT(len <= ZSTR_LEN(s));
  ------------------
  |  |  112|     17|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (297:2): [True: 0, False: 17]
  |  Branch (297:2): [True: 17, False: 0]
  ------------------
  298|     17|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (298:6): [True: 17, False: 0]
  ------------------
  299|     17|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     17|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 17, False: 0]
  |  |  ------------------
  ------------------
  300|     17|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     17|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     17|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  301|     17|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  302|     17|			zend_string_forget_hash_val(ret);
  303|     17|			return ret;
  304|     17|		}
  305|     17|	}
  306|      0|	ret = zend_string_alloc(len, persistent);
  307|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), len + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), len + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  308|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (308:6): [True: 0, False: 0]
  ------------------
  309|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  310|      0|	}
  311|      0|	return ret;
  312|     17|}
string.c:zend_string_init_fast:
  212|      3|{
  213|      3|	if (len > 1) {
  ------------------
  |  Branch (213:6): [True: 3, False: 0]
  ------------------
  214|      3|		return zend_string_init(str, len, 0);
  215|      3|	} else if (len == 0) {
  ------------------
  |  Branch (215:13): [True: 0, False: 0]
  ------------------
  216|      0|		return zend_empty_string;
  217|      0|	} else /* if (len == 1) */ {
  218|      0|		return ZSTR_CHAR((zend_uchar) *str);
  219|      0|	}
  220|      3|}
string.c:ZSTR_GET_COPYABLE_CONCAT_PROPERTIES:
   87|      7|static inline uint32_t ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(const zend_string *s) {
   88|      7|	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |  777|      7|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|      7|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|      7|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
   89|      7|}
string.c:zend_string_release_ex:
  360|      7|{
  361|      7|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2, False: 5]
  ------------------
  362|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 2]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      2|	}
  372|      7|}
string.c:zend_string_copy:
  223|     12|{
  224|     12|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 10, False: 2]
  ------------------
  225|     10|		GC_ADDREF(s);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|     10|	}
  227|     12|	return s;
  228|     12|}
string.c:zend_string_alloc:
  181|     56|{
  182|     56|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     56|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     56|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     56|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     56|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     56|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     56|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 56]
  |  |  ------------------
  ------------------
  183|       |
  184|     56|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     56|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     56|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     56|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     56|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     56|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     56|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     56|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     56|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 56]
  ------------------
  186|     56|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     56|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     56|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     56|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     56|	return ret;
  189|     56|}
string.c:ZSTR_COPY_CONCAT_PROPERTIES:
   96|      7|static inline void ZSTR_COPY_CONCAT_PROPERTIES(zend_string *out, const zend_string *in) {
   97|      7|	uint32_t properties = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(in);
   98|      7|	GC_ADD_FLAGS(out, properties);
  ------------------
  |  |  780|      7|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      7|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
   99|      7|}
url_scanner_ex.c:ZSTR_IS_INTERNED:
   74|     10|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     10|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     10|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     10|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     10|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     10|}
url_scanner_ex.c:zend_string_release_ex:
  360|     10|{
  361|     10|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 10, False: 0]
  ------------------
  362|     10|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     10|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 10]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|     10|	}
  372|     10|}
url_scanner_ex.c:zend_string_init:
  203|     10|{
  204|     10|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     10|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     10|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     10|	return ret;
  209|     10|}
url_scanner_ex.c:zend_string_alloc:
  181|     10|{
  182|     10|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     10|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|     10|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     10|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     10|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     10|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     10|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     10|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     10|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 10, False: 0]
  ------------------
  186|     10|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     10|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     10|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     10|	return ret;
  189|     10|}
url_scanner_ex.c:zend_string_starts_with_cstr:
  410|      2|{
  411|      2|	return ZSTR_LEN(str) >= prefix_length && !memcmp(ZSTR_VAL(str), prefix, prefix_length);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(str) >= prefix_length && !memcmp(ZSTR_VAL(str), prefix, prefix_length);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (411:9): [True: 2, False: 0]
  |  Branch (411:43): [True: 2, False: 0]
  ------------------
  412|      2|}
user_filters.c:ZSTR_EMPTY_ALLOC:
  106|      4|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      4|	return zend_empty_string;
  108|      4|}
user_filters.c:zend_string_init:
  203|     18|{
  204|     18|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     18|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     18|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     18|	return ret;
  209|     18|}
user_filters.c:zend_string_alloc:
  181|     18|{
  182|     18|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     18|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     14|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     14|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     14|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     14|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 14, False: 4]
  |  |  ------------------
  ------------------
  183|       |
  184|     18|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     18|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     18|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     18|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     18|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     18|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     18|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     18|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     14|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     14|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     18|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 14, False: 4]
  ------------------
  186|     18|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     18|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     18|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     18|	return ret;
  189|     18|}
user_filters.c:zend_string_copy:
  223|      3|{
  224|      3|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 3, False: 0]
  ------------------
  225|      3|		GC_ADDREF(s);
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      3|	}
  227|      3|	return s;
  228|      3|}
user_filters.c:ZSTR_IS_INTERNED:
   74|     23|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     23|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     23|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     23|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     23|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     23|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     23|}
user_filters.c:zend_string_release:
  351|      3|{
  352|      3|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 3, False: 0]
  ------------------
  353|      3|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 3, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      3|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  355|      3|		}
  356|      3|	}
  357|      3|}
user_filters.c:zend_string_release_ex:
  360|     17|{
  361|     17|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 17, False: 0]
  ------------------
  362|     17|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     17|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 17, False: 0]
  ------------------
  363|     17|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 14, False: 3]
  ------------------
  364|     14|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 14]
  |  Branch (364:5): [True: 14, False: 0]
  ------------------
  365|     14|				free(s);
  366|     14|			} else {
  367|      3|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 3]
  |  Branch (367:5): [True: 3, False: 0]
  ------------------
  368|      3|				efree(s);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      3|			}
  370|     17|		}
  371|     17|	}
  372|     17|}
var_unserializer.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
var_unserializer.c:zend_string_release_ex:
  360|     41|{
  361|     41|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 30, False: 11]
  ------------------
  362|     30|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     30|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 24, False: 6]
  ------------------
  363|     24|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 24]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     24|			} else {
  367|     24|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     24|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 24]
  |  Branch (367:5): [True: 24, False: 0]
  ------------------
  368|     24|				efree(s);
  ------------------
  |  |  154|     24|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     24|			}
  370|     24|		}
  371|     30|	}
  372|     41|}
var_unserializer.c:zend_string_init:
  203|     12|{
  204|     12|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     12|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     12|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     12|	return ret;
  209|     12|}
var_unserializer.c:zend_string_alloc:
  181|     12|{
  182|     12|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     12|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  183|       |
  184|     12|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     12|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     12|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     12|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     12|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     12|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 12]
  ------------------
  186|     12|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     12|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     12|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     12|	return ret;
  189|     12|}
var_unserializer.c:ZSTR_IS_INTERNED:
   74|     65|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     65|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     65|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     65|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     65|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     65|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     65|}
var_unserializer.c:zend_string_safe_alloc:
  192|      2|{
  193|      2|	zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  189|      2|#define safe_pemalloc(nmemb, size, offset, persistent)	((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset))
  |  |  ------------------
  |  |  |  |  153|      2|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (189:57): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  194|       |
  195|      2|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  196|      2|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      2|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (196:36): [True: 0, False: 2]
  ------------------
  197|      2|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      2|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  198|      2|	ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|      2|	return ret;
  200|      2|}
var_unserializer.c:zend_string_efree:
  343|      1|{
  344|      1|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 1]
  |  Branch (344:2): [True: 1, False: 0]
  ------------------
  345|      1|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 1]
  |  Branch (345:2): [True: 1, False: 0]
  ------------------
  346|      1|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 1]
  |  Branch (346:2): [True: 1, False: 0]
  ------------------
  347|      1|	efree(s);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      1|}
var_unserializer.c:zend_string_init_fast:
  212|      3|{
  213|      3|	if (len > 1) {
  ------------------
  |  Branch (213:6): [True: 2, False: 1]
  ------------------
  214|      2|		return zend_string_init(str, len, 0);
  215|      2|	} else if (len == 0) {
  ------------------
  |  Branch (215:13): [True: 1, False: 0]
  ------------------
  216|      1|		return zend_empty_string;
  217|      1|	} else /* if (len == 1) */ {
  218|      0|		return ZSTR_CHAR((zend_uchar) *str);
  219|      0|	}
  220|      3|}
var.c:zend_string_release_ex:
  360|    304|{
  361|    304|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 118, False: 186]
  ------------------
  362|    118|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    118|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 18, False: 100]
  ------------------
  363|     18|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 18]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     18|			} else {
  367|     18|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 18]
  |  Branch (367:5): [True: 18, False: 0]
  ------------------
  368|     18|				efree(s);
  ------------------
  |  |  154|     18|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     18|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     18|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     18|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     18|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     18|			}
  370|     18|		}
  371|    118|	}
  372|    304|}
var.c:zend_string_release:
  351|      7|{
  352|      7|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 2, False: 5]
  ------------------
  353|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 2, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      2|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  355|      2|		}
  356|      2|	}
  357|      7|}
var.c:zend_string_free:
  335|     12|{
  336|     12|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (336:6): [True: 12, False: 0]
  ------------------
  337|     12|		ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (337:3): [True: 0, False: 12]
  |  Branch (337:3): [True: 12, False: 0]
  ------------------
  338|     12|		pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     12|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     12|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  339|     12|	}
  340|     12|}
var.c:zend_string_realloc:
  253|     14|{
  254|     14|	zend_string *ret;
  255|       |
  256|     14|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 14, False: 0]
  ------------------
  257|     14|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 0]
  |  |  ------------------
  ------------------
  258|     14|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     14|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     14|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     14|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     14|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     14|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     14|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 14]
  |  |  ------------------
  ------------------
  259|     14|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     14|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|     14|			zend_string_forget_hash_val(ret);
  261|     14|			return ret;
  262|     14|		}
  263|     14|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|     14|}
var.c:zend_string_forget_hash_val:
  151|     14|{
  152|     14|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     14|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     14|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     14|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     14|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     14|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     14|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  154|     14|}
var.c:ZSTR_IS_INTERNED:
   74|    358|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    358|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    358|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    358|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    358|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    358|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    358|}
var.c:zend_string_copy:
  223|      7|{
  224|      7|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 4, False: 3]
  ------------------
  225|      4|		GC_ADDREF(s);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      4|	}
  227|      7|	return s;
  228|      7|}
var.c:ZSTR_KNOWN:
  114|      5|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      5|	return zend_known_strings[idx];
  116|      5|}
php_uri.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
php_uri.c:ZSTR_IS_INTERNED:
   74|     12|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     12|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     12|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     12|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     12|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     12|}
php_uri.c:zend_string_release_ex:
  360|     12|{
  361|     12|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 6, False: 6]
  ------------------
  362|      6|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      6|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 6, False: 0]
  ------------------
  363|      6|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 6, False: 0]
  ------------------
  364|      6|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 6]
  |  Branch (364:5): [True: 6, False: 0]
  ------------------
  365|      6|				free(s);
  366|      6|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      6|		}
  371|      6|	}
  372|     12|}
php_uri.c:zend_string_init:
  203|      8|{
  204|      8|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      8|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      8|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      8|	return ret;
  209|      8|}
php_uri.c:zend_string_alloc:
  181|      8|{
  182|      8|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      8|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 8, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      8|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      8|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      8|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      8|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      8|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      8|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      8|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 8, False: 0]
  ------------------
  186|      8|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      8|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      8|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      8|	return ret;
  189|      8|}
fopen_wrappers.c:zend_string_realloc:
  253|      1|{
  254|      1|	zend_string *ret;
  255|       |
  256|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 1, False: 0]
  ------------------
  257|      1|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  258|      1|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|      1|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      1|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  259|      1|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|      1|			zend_string_forget_hash_val(ret);
  261|      1|			return ret;
  262|      1|		}
  263|      1|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|      1|}
fopen_wrappers.c:ZSTR_IS_INTERNED:
   74|      2|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      2|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      2|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      2|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      2|}
fopen_wrappers.c:zend_string_forget_hash_val:
  151|      1|{
  152|      1|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|      1|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|      1|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|      1|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  154|      1|}
fopen_wrappers.c:zend_string_release:
  351|      1|{
  352|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 1, False: 0]
  ------------------
  353|      1|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 1, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  355|      1|		}
  356|      1|	}
  357|      1|}
fopen_wrappers.c:zend_string_init:
  203|      8|{
  204|      8|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      8|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      8|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      8|	return ret;
  209|      8|}
fopen_wrappers.c:zend_string_alloc:
  181|      8|{
  182|      8|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      8|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      8|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  183|       |
  184|      8|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      8|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      8|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      8|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      8|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 8]
  ------------------
  186|      8|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      8|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      8|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      8|	return ret;
  189|      8|}
main.c:zend_string_free:
  335|    961|{
  336|    961|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (336:6): [True: 961, False: 0]
  ------------------
  337|    961|		ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|    961|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (337:3): [True: 0, False: 961]
  |  Branch (337:3): [True: 961, False: 0]
  ------------------
  338|    961|		pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|    961|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    961|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    961|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    961|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    961|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    961|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 961]
  |  |  ------------------
  ------------------
  339|    961|	}
  340|    961|}
main.c:ZSTR_IS_INTERNED:
   74|   269k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|   269k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|   269k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|   269k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|   269k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|   269k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|   269k|}
main.c:zend_string_release:
  351|   161k|{
  352|   161k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 108k, False: 52.7k]
  ------------------
  353|   108k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|   108k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 55.1k, False: 53.3k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  55.1k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  55.1k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  55.1k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  55.1k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  55.1k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  55.1k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 55.1k]
  |  |  ------------------
  ------------------
  355|  55.1k|		}
  356|   108k|	}
  357|   161k|}
main.c:ZSTR_EMPTY_ALLOC:
  106|  53.4k|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|  53.4k|	return zend_empty_string;
  108|  53.4k|}
main.c:zend_string_equals:
  396|      2|{
  397|      2|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 0, False: 2]
  |  Branch (397:21): [True: 0, False: 2]
  ------------------
  398|      2|}
main.c:zend_string_equal_content:
  391|      2|{
  392|      2|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 0, False: 2]
  |  Branch (392:41): [True: 0, False: 0]
  ------------------
  393|      2|}
main.c:ZSTR_KNOWN:
  114|      2|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      2|	return zend_known_strings[idx];
  116|      2|}
main.c:zend_string_copy:
  223|   106k|{
  224|   106k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 106k, False: 2]
  ------------------
  225|   106k|		GC_ADDREF(s);
  ------------------
  |  |  718|   106k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|   106k|	}
  227|   106k|	return s;
  228|   106k|}
main.c:zend_string_equals_cstr:
  375|     50|{
  376|     50|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|     50|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 20, False: 30]
  |  Branch (376:38): [True: 6, False: 14]
  ------------------
  377|     50|}
output.c:zend_string_addref:
  165|  2.18k|{
  166|  2.18k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 2.18k, False: 0]
  ------------------
  167|  2.18k|		return GC_ADDREF(s);
  ------------------
  |  |  718|  2.18k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|  2.18k|	}
  169|      0|	return 1;
  170|  2.18k|}
output.c:ZSTR_IS_INTERNED:
   74|  4.40k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  4.40k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  4.40k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  4.40k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  4.40k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  4.40k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  4.40k|}
output.c:zend_string_release:
  351|  2.18k|{
  352|  2.18k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 2.18k, False: 0]
  ------------------
  353|  2.18k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  2.18k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 875, False: 1.31k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|    875|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    875|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    875|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    875|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    875|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    875|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 875]
  |  |  ------------------
  ------------------
  355|    875|		}
  356|  2.18k|	}
  357|  2.18k|}
output.c:zend_string_init:
  203|     15|{
  204|     15|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     15|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     15|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     15|	return ret;
  209|     15|}
output.c:zend_string_alloc:
  181|     15|{
  182|     15|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     15|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     15|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     15|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     15|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     15|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     15|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 15]
  |  |  ------------------
  ------------------
  183|       |
  184|     15|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     15|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     15|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     15|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     15|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     15|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     15|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     15|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     15|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 15]
  ------------------
  186|     15|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     15|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     15|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     15|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     15|	return ret;
  189|     15|}
output.c:zend_string_release_ex:
  360|     22|{
  361|     22|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 22, False: 0]
  ------------------
  362|     22|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     22|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 5, False: 17]
  ------------------
  363|      5|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 5]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      5|			} else {
  367|      5|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 5]
  |  Branch (367:5): [True: 5, False: 0]
  ------------------
  368|      5|				efree(s);
  ------------------
  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      5|			}
  370|      5|		}
  371|     22|	}
  372|     22|}
output.c:zend_string_copy:
  223|     11|{
  224|     11|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 11, False: 0]
  ------------------
  225|     11|		GC_ADDREF(s);
  ------------------
  |  |  718|     11|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|     11|	}
  227|     11|	return s;
  228|     11|}
php_ini.c:ZSTR_IS_INTERNED:
   74|     22|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     22|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     22|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     22|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     22|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     22|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     22|}
php_ini.c:zend_string_init:
  203|     22|{
  204|     22|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     22|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     22|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     22|	return ret;
  209|     22|}
php_ini.c:zend_string_alloc:
  181|     22|{
  182|     22|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     22|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|     22|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     22|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     22|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     22|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     22|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     22|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     22|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     22|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     22|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     22|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     22|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 22, False: 0]
  ------------------
  186|     22|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     22|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     22|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     22|	return ret;
  189|     22|}
php_ini.c:zend_string_dup:
  231|     22|{
  232|     22|	if (ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (232:6): [True: 0, False: 22]
  ------------------
  233|      0|		return s;
  234|     22|	} else {
  235|     22|		return zend_string_init(ZSTR_VAL(s), ZSTR_LEN(s), persistent);
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_string_init(ZSTR_VAL(s), ZSTR_LEN(s), persistent);
  ------------------
  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  236|     22|	}
  237|     22|}
php_variables.c:zend_string_init_fast:
  212|  33.7k|{
  213|  33.7k|	if (len > 1) {
  ------------------
  |  Branch (213:6): [True: 33.7k, False: 25]
  ------------------
  214|  33.7k|		return zend_string_init(str, len, 0);
  215|  33.7k|	} else if (len == 0) {
  ------------------
  |  Branch (215:13): [True: 10, False: 15]
  ------------------
  216|     10|		return zend_empty_string;
  217|     15|	} else /* if (len == 1) */ {
  218|     15|		return ZSTR_CHAR((zend_uchar) *str);
  219|     15|	}
  220|  33.7k|}
php_variables.c:ZSTR_CHAR:
  110|     15|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|     15|	return zend_one_char_string[c];
  112|     15|}
php_variables.c:ZSTR_IS_INTERNED:
   74|  33.9k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  33.9k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  33.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  33.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  33.9k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  33.9k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  33.9k|}
php_variables.c:zend_string_release_ex:
  360|    183|{
  361|    183|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 178, False: 5]
  ------------------
  362|    178|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    178|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 178]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|    178|	}
  372|    183|}
php_variables.c:zend_string_init:
  203|  33.7k|{
  204|  33.7k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  33.7k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  33.7k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  33.7k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  33.7k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  33.7k|	return ret;
  209|  33.7k|}
php_variables.c:zend_string_alloc:
  181|  33.7k|{
  182|  33.7k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  33.7k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  33.7k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  33.7k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  33.7k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  33.7k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  33.7k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 33.7k]
  |  |  ------------------
  ------------------
  183|       |
  184|  33.7k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  33.7k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  33.7k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  33.7k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  33.7k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  33.7k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  33.7k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  33.7k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  33.7k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 33.7k]
  ------------------
  186|  33.7k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  33.7k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  33.7k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  33.7k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  33.7k|	return ret;
  189|  33.7k|}
php_variables.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
SAPI.c:zend_string_init:
  203|      4|{
  204|      4|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      4|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      4|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      4|	return ret;
  209|      4|}
SAPI.c:zend_string_alloc:
  181|      4|{
  182|      4|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      4|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|      4|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      4|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      4|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      4|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      4|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      4|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      4|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 4, False: 0]
  ------------------
  186|      4|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      4|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      4|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      4|	return ret;
  189|      4|}
SAPI.c:zend_string_release_ex:
  360|      4|{
  361|      4|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 4, False: 0]
  ------------------
  362|      4|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      4|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 4]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      4|	}
  372|      4|}
SAPI.c:ZSTR_IS_INTERNED:
   74|      4|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      4|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      4|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      4|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      4|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      4|}
filter.c:zend_string_release_ex:
  360|     12|{
  361|     12|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 12]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|     12|}
filter.c:ZSTR_IS_INTERNED:
   74|     12|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     12|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     12|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     12|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     12|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     12|}
memory.c:ZSTR_IS_INTERNED:
   74|     44|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     44|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     44|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     44|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     44|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     44|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     44|}
memory.c:zend_string_release:
  351|     22|{
  352|     22|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 22, False: 0]
  ------------------
  353|     22|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     22|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 0, False: 22]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  355|      0|		}
  356|     22|	}
  357|     22|}
memory.c:ZSTR_EMPTY_ALLOC:
  106|     22|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|     22|	return zend_empty_string;
  108|     22|}
memory.c:zend_string_copy:
  223|     22|{
  224|     22|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 22, False: 0]
  ------------------
  225|     22|		GC_ADDREF(s);
  ------------------
  |  |  718|     22|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|     22|	}
  227|     22|	return s;
  228|     22|}
plain_wrapper.c:zend_string_init:
  203|      5|{
  204|      5|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      5|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      5|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      5|	return ret;
  209|      5|}
plain_wrapper.c:zend_string_alloc:
  181|      5|{
  182|      5|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      5|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      5|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  183|       |
  184|      5|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      5|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      5|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      5|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      5|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 5]
  ------------------
  186|      5|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      5|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      5|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      5|	return ret;
  189|      5|}
stream_errors.c:zend_string_release:
  351|  1.38k|{
  352|  1.38k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 1.38k, False: 0]
  ------------------
  353|  1.38k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  1.38k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 1.38k, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  1.38k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  1.38k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.38k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.38k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  1.38k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  1.38k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1.38k]
  |  |  ------------------
  ------------------
  355|  1.38k|		}
  356|  1.38k|	}
  357|  1.38k|}
stream_errors.c:ZSTR_IS_INTERNED:
   74|  1.39k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  1.39k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  1.39k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.39k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  1.39k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  1.39k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  1.39k|}
stream_errors.c:zend_string_init:
  203|     10|{
  204|     10|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     10|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     10|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     10|	return ret;
  209|     10|}
stream_errors.c:zend_string_alloc:
  181|     10|{
  182|     10|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     10|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  183|       |
  184|     10|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     10|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     10|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     10|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     10|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     10|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     10|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 10, False: 0]
  ------------------
  186|     10|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     10|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     10|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     10|	return ret;
  189|     10|}
stream_errors.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
stream_errors.c:zend_string_release_ex:
  360|      8|{
  361|      8|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 8, False: 0]
  ------------------
  362|      8|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      8|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 8, False: 0]
  ------------------
  363|      8|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 8, False: 0]
  ------------------
  364|      8|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 8]
  |  Branch (364:5): [True: 8, False: 0]
  ------------------
  365|      8|				free(s);
  366|      8|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      8|		}
  371|      8|	}
  372|      8|}
streams.c:zend_string_alloc:
  181|      1|{
  182|      1|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      1|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  183|       |
  184|      1|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      1|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      1|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 1]
  ------------------
  186|      1|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      1|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      1|	return ret;
  189|      1|}
streams.c:ZSTR_IS_INTERNED:
   74|     19|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     19|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     19|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     19|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     19|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     19|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     19|}
streams.c:zend_string_free:
  335|      1|{
  336|      1|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (336:6): [True: 1, False: 0]
  ------------------
  337|      1|		ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (337:3): [True: 0, False: 1]
  |  Branch (337:3): [True: 1, False: 0]
  ------------------
  338|      1|		pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  339|      1|	}
  340|      1|}
streams.c:zend_string_release_ex:
  360|     18|{
  361|     18|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 6, False: 12]
  ------------------
  362|      6|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      6|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 6, False: 0]
  ------------------
  363|      6|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 6]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      6|			} else {
  367|      6|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 6]
  |  Branch (367:5): [True: 6, False: 0]
  ------------------
  368|      6|				efree(s);
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      6|			}
  370|      6|		}
  371|      6|	}
  372|     18|}
streams.c:ZSTR_KNOWN:
  114|      7|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      7|	return zend_known_strings[idx];
  116|      7|}
transports.c:zend_string_release_ex:
  360|      8|{
  361|      8|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 8]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|      8|}
transports.c:ZSTR_IS_INTERNED:
   74|      8|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      8|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      8|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      8|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      8|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      8|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      8|}
userspace.c:zend_string_init:
  203|  11.2k|{
  204|  11.2k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  11.2k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  11.2k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  11.2k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  11.2k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  11.2k|	return ret;
  209|  11.2k|}
userspace.c:zend_string_alloc:
  181|  11.2k|{
  182|  11.2k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  11.2k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  11.2k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  11.2k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  11.2k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  11.2k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  11.2k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 11.2k]
  |  |  ------------------
  ------------------
  183|       |
  184|  11.2k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  11.2k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  11.2k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  11.2k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  11.2k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  11.2k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  11.2k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  11.2k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  11.2k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 11.2k]
  ------------------
  186|  11.2k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  11.2k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  11.2k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  11.2k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  11.2k|	return ret;
  189|  11.2k|}
userspace.c:zend_string_release_ex:
  360|    684|{
  361|    684|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 684, False: 0]
  ------------------
  362|    684|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    684|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 683, False: 1]
  ------------------
  363|    683|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 683]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|    683|			} else {
  367|    683|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|    683|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 683]
  |  Branch (367:5): [True: 683, False: 0]
  ------------------
  368|    683|				efree(s);
  ------------------
  |  |  154|    683|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    683|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    683|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    683|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    683|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|    683|			}
  370|    683|		}
  371|    684|	}
  372|    684|}
userspace.c:ZSTR_IS_INTERNED:
   74|    684|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    684|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    684|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    684|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    684|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    684|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    684|}
zend_func_info.c:zend_string_release_ex:
  360|  1.06k|{
  361|  1.06k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 0, False: 1.06k]
  ------------------
  362|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 0]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      0|	}
  372|  1.06k|}
zend_func_info.c:ZSTR_IS_INTERNED:
   74|  1.06k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  1.06k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  1.06k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.06k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  1.06k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  1.06k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  1.06k|}
zend_API.c:ZSTR_KNOWN:
  114|    969|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    969|	return zend_known_strings[idx];
  116|    969|}
zend_API.c:zend_string_release:
  351|  4.51k|{
  352|  4.51k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 117, False: 4.39k]
  ------------------
  353|    117|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    117|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 97, False: 20]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     97|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     97|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     97|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     97|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     97|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     97|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 97]
  |  |  ------------------
  ------------------
  355|     97|		}
  356|    117|	}
  357|  4.51k|}
zend_API.c:zend_string_addref:
  165|  6.01k|{
  166|  6.01k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 5.98k, False: 23]
  ------------------
  167|  5.98k|		return GC_ADDREF(s);
  ------------------
  |  |  718|  5.98k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|  5.98k|	}
  169|     23|	return 1;
  170|  6.01k|}
zend_API.c:zend_string_init:
  203|  4.65k|{
  204|  4.65k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  4.65k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  4.65k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  4.65k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  4.65k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  4.65k|	return ret;
  209|  4.65k|}
zend_API.c:zend_string_release_ex:
  360|  17.2k|{
  361|  17.2k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 16.6k, False: 542]
  ------------------
  362|  16.6k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  16.6k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 30, False: 16.6k]
  ------------------
  363|     30|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 30]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     30|			} else {
  367|     30|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     30|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 30]
  |  Branch (367:5): [True: 30, False: 0]
  ------------------
  368|     30|				efree(s);
  ------------------
  |  |  154|     30|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     30|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     30|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     30|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     30|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     30|			}
  370|     30|		}
  371|  16.6k|	}
  372|  17.2k|}
zend_API.c:ZSTR_IS_INTERNED:
   74|  35.4k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  35.4k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  35.4k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  35.4k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  35.4k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  35.4k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  35.4k|}
zend_API.c:ZSTR_EMPTY_ALLOC:
  106|      1|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|      1|	return zend_empty_string;
  108|      1|}
zend_API.c:zend_string_alloc:
  181|  4.72k|{
  182|  4.72k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  4.72k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     26|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     26|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     26|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     26|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  4.69k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  4.69k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  4.69k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  4.69k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  4.69k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 26, False: 4.69k]
  |  |  ------------------
  ------------------
  183|       |
  184|  4.72k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  4.72k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  4.72k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  4.72k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  4.72k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  4.72k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  4.72k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  4.72k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     26|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     26|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  4.72k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 26, False: 4.69k]
  ------------------
  186|  4.72k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  4.72k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  4.72k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  4.72k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  4.72k|	return ret;
  189|  4.72k|}
zend_API.c:zend_string_efree:
  343|     10|{
  344|     10|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 10]
  |  Branch (344:2): [True: 10, False: 0]
  ------------------
  345|     10|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 10]
  |  Branch (345:2): [True: 10, False: 0]
  ------------------
  346|     10|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 10]
  |  Branch (346:2): [True: 10, False: 0]
  ------------------
  347|     10|	efree(s);
  ------------------
  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|     10|}
zend_API.c:zend_string_equals_cstr:
  375|  7.50k|{
  376|  7.50k|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|  7.50k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|  1.68k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 1.68k, False: 5.82k]
  |  Branch (376:38): [True: 1.16k, False: 528]
  ------------------
  377|  7.50k|}
zend_API.c:zend_string_equals:
  396|    139|{
  397|    139|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 28, False: 111]
  |  Branch (397:21): [True: 0, False: 111]
  ------------------
  398|    139|}
zend_API.c:zend_string_equal_content:
  391|    111|{
  392|    111|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|    111|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|    222|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 29, False: 82]
  |  Branch (392:41): [True: 0, False: 29]
  ------------------
  393|    111|}
zend_API.c:zend_string_copy:
  223|    886|{
  224|    886|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 360, False: 526]
  ------------------
  225|    360|		GC_ADDREF(s);
  ------------------
  |  |  718|    360|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|    360|	}
  227|    886|	return s;
  228|    886|}
zend_ast.c:ZSTR_IS_INTERNED:
   74|  3.22k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  3.22k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  3.22k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  3.22k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  3.22k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  3.22k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  3.22k|}
zend_ast.c:ZSTR_KNOWN:
  114|    599|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    599|	return zend_known_strings[idx];
  116|    599|}
zend_ast.c:zend_string_release:
  351|    129|{
  352|    129|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 129, False: 0]
  ------------------
  353|    129|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    129|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 120, False: 9]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|    120|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    120|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    120|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    120|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    120|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    120|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 120]
  |  |  ------------------
  ------------------
  355|    120|		}
  356|    129|	}
  357|    129|}
zend_ast.c:zend_string_release_ex:
  360|  2.66k|{
  361|  2.66k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 1.86k, False: 799]
  ------------------
  362|  1.86k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  1.86k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 171, False: 1.69k]
  ------------------
  363|    171|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 171]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|    171|			} else {
  367|    171|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|    171|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 171]
  |  Branch (367:5): [True: 171, False: 0]
  ------------------
  368|    171|				efree(s);
  ------------------
  |  |  154|    171|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    171|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    171|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    171|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    171|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|    171|			}
  370|    171|		}
  371|  1.86k|	}
  372|  2.66k|}
zend_attributes.c:ZSTR_KNOWN:
  114|    135|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    135|	return zend_known_strings[idx];
  116|    135|}
zend_attributes.c:ZSTR_IS_INTERNED:
   74|    670|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    670|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    670|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    670|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    670|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    670|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    670|}
zend_attributes.c:zend_string_equals_cstr:
  375|    348|{
  376|    348|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|    348|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|    135|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 135, False: 213]
  |  Branch (376:38): [True: 132, False: 3]
  ------------------
  377|    348|}
zend_attributes.c:zend_string_realloc:
  253|     12|{
  254|     12|	zend_string *ret;
  255|       |
  256|     12|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 12, False: 0]
  ------------------
  257|     12|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  258|     12|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     12|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     12|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  259|     12|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|     12|			zend_string_forget_hash_val(ret);
  261|     12|			return ret;
  262|     12|		}
  263|     12|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|     12|}
zend_attributes.c:zend_string_forget_hash_val:
  151|     12|{
  152|     12|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     12|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     12|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     12|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     12|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
  154|     12|}
zend_attributes.c:zend_string_alloc:
  181|      3|{
  182|      3|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      3|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  183|       |
  184|      3|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      3|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      3|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      3|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      3|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 1]
  ------------------
  186|      3|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      3|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      3|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      3|	return ret;
  189|      3|}
zend_attributes.c:zend_string_equals:
  396|     28|{
  397|     28|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 16, False: 12]
  |  Branch (397:21): [True: 2, False: 10]
  ------------------
  398|     28|}
zend_attributes.c:zend_string_equal_content:
  391|     12|{
  392|     12|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|     24|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 2, False: 10]
  |  Branch (392:41): [True: 2, False: 0]
  ------------------
  393|     12|}
zend_attributes.c:zend_string_copy:
  223|    295|{
  224|    295|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 148, False: 147]
  ------------------
  225|    148|		GC_ADDREF(s);
  ------------------
  |  |  718|    148|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|    148|	}
  227|    295|	return s;
  228|    295|}
zend_attributes.c:zend_string_init:
  203|      3|{
  204|      3|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      3|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      3|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      3|	return ret;
  209|      3|}
zend_attributes.c:zend_string_release:
  351|    260|{
  352|    260|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 251, False: 9]
  ------------------
  353|    251|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    251|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 219, False: 32]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|    219|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    217|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    217|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    217|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    217|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    217|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 2, False: 217]
  |  |  ------------------
  ------------------
  355|    219|		}
  356|    251|	}
  357|    260|}
zend_attributes.c:zend_string_release_ex:
  360|     36|{
  361|     36|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2, False: 34]
  ------------------
  362|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2, False: 0]
  ------------------
  363|      2|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 2, False: 0]
  ------------------
  364|      2|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 2]
  |  Branch (364:5): [True: 2, False: 0]
  ------------------
  365|      2|				free(s);
  366|      2|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      2|		}
  371|      2|	}
  372|     36|}
zend_autoload.c:ZSTR_IS_INTERNED:
   74|     12|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|     12|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|     12|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|     12|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|     12|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|     12|}
zend_builtin_functions.c:zend_string_init:
  203|     11|{
  204|     11|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     11|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     11|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     11|	return ret;
  209|     11|}
zend_builtin_functions.c:zend_string_release_ex:
  360|     41|{
  361|     41|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 31, False: 10]
  ------------------
  362|     31|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     31|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 22, False: 9]
  ------------------
  363|     22|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 22]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     22|			} else {
  367|     22|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 22]
  |  Branch (367:5): [True: 22, False: 0]
  ------------------
  368|     22|				efree(s);
  ------------------
  |  |  154|     22|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     22|			}
  370|     22|		}
  371|     31|	}
  372|     41|}
zend_builtin_functions.c:ZSTR_KNOWN:
  114|  52.0k|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|  52.0k|	return zend_known_strings[idx];
  116|  52.0k|}
zend_builtin_functions.c:zend_string_copy:
  223|  6.75k|{
  224|  6.75k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 19, False: 6.73k]
  ------------------
  225|     19|		GC_ADDREF(s);
  ------------------
  |  |  718|     19|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|     19|	}
  227|  6.75k|	return s;
  228|  6.75k|}
zend_builtin_functions.c:ZSTR_IS_INTERNED:
   74|  82.9k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  82.9k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  82.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  82.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  82.9k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  82.9k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  82.9k|}
zend_builtin_functions.c:zend_string_alloc:
  181|     11|{
  182|     11|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     11|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     11|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  183|       |
  184|     11|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     11|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     11|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     11|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     11|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     11|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 11]
  ------------------
  186|     11|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     11|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     11|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     11|	return ret;
  189|     11|}
zend_builtin_functions.c:zend_string_release:
  351|     14|{
  352|     14|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 12, False: 2]
  ------------------
  353|     12|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     12|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 12, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     12|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     12|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  355|     12|		}
  356|     12|	}
  357|     14|}
zend_builtin_functions.c:zend_string_equals:
  396|     12|{
  397|     12|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 12, False: 0]
  |  Branch (397:21): [True: 0, False: 0]
  ------------------
  398|     12|}
zend_closures.c:zend_string_addref:
  165|    562|{
  166|    562|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 529, False: 33]
  ------------------
  167|    529|		return GC_ADDREF(s);
  ------------------
  |  |  718|    529|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|    529|	}
  169|     33|	return 1;
  170|    562|}
zend_closures.c:ZSTR_IS_INTERNED:
   74|    674|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    674|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    674|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    674|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    674|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    674|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    674|}
zend_closures.c:zend_string_release_ex:
  360|     27|{
  361|     27|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 19, False: 8]
  ------------------
  362|     19|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     19|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 19]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|     19|	}
  372|     27|}
zend_closures.c:ZSTR_KNOWN:
  114|     95|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     95|	return zend_known_strings[idx];
  116|     95|}
zend_closures.c:zend_string_equals:
  396|     11|{
  397|     11|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 8, False: 3]
  |  Branch (397:21): [True: 0, False: 3]
  ------------------
  398|     11|}
zend_closures.c:zend_string_equal_content:
  391|      3|{
  392|      3|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 1, False: 2]
  |  Branch (392:41): [True: 0, False: 1]
  ------------------
  393|      3|}
zend_closures.c:zend_string_release:
  351|     45|{
  352|     45|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 12, False: 33]
  ------------------
  353|     12|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     12|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 4, False: 8]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      4|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  355|      4|		}
  356|     12|	}
  357|     45|}
zend_compile.c:zend_string_equals_cstr:
  375|   147k|{
  376|   147k|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|   147k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|  11.0k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 11.0k, False: 136k]
  |  Branch (376:38): [True: 451, False: 10.6k]
  ------------------
  377|   147k|}
zend_compile.c:zend_string_copy:
  223|  32.0k|{
  224|  32.0k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 24.8k, False: 7.21k]
  ------------------
  225|  24.8k|		GC_ADDREF(s);
  ------------------
  |  |  718|  24.8k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  24.8k|	}
  227|  32.0k|	return s;
  228|  32.0k|}
zend_compile.c:zend_string_release:
  351|  12.3k|{
  352|  12.3k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 11.6k, False: 673]
  ------------------
  353|  11.6k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  11.6k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 3.76k, False: 7.88k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  3.76k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  3.76k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  3.76k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  3.76k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  3.76k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  3.76k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 3.76k]
  |  |  ------------------
  ------------------
  355|  3.76k|		}
  356|  11.6k|	}
  357|  12.3k|}
zend_compile.c:ZSTR_IS_INTERNED:
   74|  98.6k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  98.6k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  98.6k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  98.6k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  98.6k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  98.6k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  98.6k|}
zend_compile.c:zend_string_addref:
  165|    198|{
  166|    198|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 144, False: 54]
  ------------------
  167|    144|		return GC_ADDREF(s);
  ------------------
  |  |  718|    144|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|    144|	}
  169|     54|	return 1;
  170|    198|}
zend_compile.c:ZSTR_KNOWN:
  114|  44.0k|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|  44.0k|	return zend_known_strings[idx];
  116|  44.0k|}
zend_compile.c:zend_string_alloc:
  181|  1.17k|{
  182|  1.17k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  1.17k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     34|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     34|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     34|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     34|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  1.13k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.13k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.13k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  1.13k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  1.13k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 34, False: 1.13k]
  |  |  ------------------
  ------------------
  183|       |
  184|  1.17k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  1.17k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  1.17k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  1.17k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  1.17k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  1.17k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  1.17k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  1.17k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     34|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     34|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.17k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 34, False: 1.13k]
  ------------------
  186|  1.17k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  1.17k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  1.17k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  1.17k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  1.17k|	return ret;
  189|  1.17k|}
zend_compile.c:zend_string_release_ex:
  360|  3.18k|{
  361|  3.18k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 2.60k, False: 582]
  ------------------
  362|  2.60k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  2.60k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 104, False: 2.50k]
  ------------------
  363|    104|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 104]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|    104|			} else {
  367|    104|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|    104|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 104]
  |  Branch (367:5): [True: 104, False: 0]
  ------------------
  368|    104|				efree(s);
  ------------------
  |  |  154|    104|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    104|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    104|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    104|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    104|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|    104|			}
  370|    104|		}
  371|  2.60k|	}
  372|  3.18k|}
zend_compile.c:zend_string_init:
  203|    857|{
  204|    857|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|    857|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|    857|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|    857|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|    857|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|    857|	return ret;
  209|    857|}
zend_compile.c:zend_string_equals:
  396|  25.5k|{
  397|  25.5k|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 3.64k, False: 21.9k]
  |  Branch (397:21): [True: 1.40k, False: 20.4k]
  ------------------
  398|  25.5k|}
zend_compile.c:zend_string_equal_content:
  391|  21.9k|{
  392|  21.9k|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  21.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  43.8k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 2.57k, False: 19.3k]
  |  Branch (392:41): [True: 1.40k, False: 1.16k]
  ------------------
  393|  21.9k|}
zend_compile.c:zend_string_hash_val:
  146|  10.9k|{
  147|  10.9k|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|  10.9k|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 10.9k, False: 2]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|  10.9k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|  10.9k|}
zend_compile.c:ZSTR_EMPTY_ALLOC:
  106|     19|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|     19|	return zend_empty_string;
  108|     19|}
zend_compile.c:ZSTR_CHAR:
  110|      6|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|      6|	return zend_one_char_string[c];
  112|      6|}
zend_compile.c:zend_string_efree:
  343|     26|{
  344|     26|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 26]
  |  Branch (344:2): [True: 26, False: 0]
  ------------------
  345|     26|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 26]
  |  Branch (345:2): [True: 26, False: 0]
  ------------------
  346|     26|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 26]
  |  Branch (346:2): [True: 26, False: 0]
  ------------------
  347|     26|	efree(s);
  ------------------
  |  |  154|     26|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     26|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     26|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     26|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     26|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|     26|}
zend_constants.c:zend_string_release_ex:
  360|      4|{
  361|      4|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 3, False: 1]
  ------------------
  362|      3|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 3, False: 0]
  ------------------
  363|      3|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 3]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      3|			} else {
  367|      3|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 3]
  |  Branch (367:5): [True: 3, False: 0]
  ------------------
  368|      3|				efree(s);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      3|			}
  370|      3|		}
  371|      3|	}
  372|      4|}
zend_constants.c:ZSTR_IS_INTERNED:
   74|    272|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    272|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    272|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    272|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    272|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    272|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    272|}
zend_constants.c:ZSTR_KNOWN:
  114|    152|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    152|	return zend_known_strings[idx];
  116|    152|}
zend_constants.c:zend_string_init:
  203|     28|{
  204|     28|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     28|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     28|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     28|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     28|	return ret;
  209|     28|}
zend_constants.c:zend_string_alloc:
  181|     28|{
  182|     28|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     28|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     26|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     26|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     26|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     26|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     26|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 2, False: 26]
  |  |  ------------------
  ------------------
  183|       |
  184|     28|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     28|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     28|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     28|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     28|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     28|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     28|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     28|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      2|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      2|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     28|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 2, False: 26]
  ------------------
  186|     28|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     28|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     28|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     28|	return ret;
  189|     28|}
zend_constants.c:zend_string_efree:
  343|      5|{
  344|      5|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 5]
  |  Branch (344:2): [True: 5, False: 0]
  ------------------
  345|      5|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 5]
  |  Branch (345:2): [True: 5, False: 0]
  ------------------
  346|      5|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 5]
  |  Branch (346:2): [True: 5, False: 0]
  ------------------
  347|      5|	efree(s);
  ------------------
  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      5|}
zend_constants.c:zend_string_copy:
  223|    131|{
  224|    131|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 131, False: 0]
  ------------------
  225|    131|		GC_ADDREF(s);
  ------------------
  |  |  718|    131|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|    131|	}
  227|    131|	return s;
  228|    131|}
zend_constants.c:zend_string_equals_cstr:
  375|  1.22k|{
  376|  1.22k|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|  1.22k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 22, False: 1.20k]
  |  Branch (376:38): [True: 2, False: 20]
  ------------------
  377|  1.22k|}
zend_constants.c:zend_string_release:
  351|     42|{
  352|     42|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 35, False: 7]
  ------------------
  353|     35|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     35|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 1, False: 34]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  355|      1|		}
  356|     35|	}
  357|     42|}
zend_enum.c:ZSTR_IS_INTERNED:
   74|  1.70k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  1.70k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  1.70k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  1.70k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  1.70k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  1.70k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  1.70k|}
zend_enum.c:zend_string_equals:
  396|    169|{
  397|    169|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 141, False: 28]
  |  Branch (397:21): [True: 0, False: 28]
  ------------------
  398|    169|}
zend_enum.c:zend_string_equal_content:
  391|     28|{
  392|     28|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|     28|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|     56|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 0, False: 28]
  |  Branch (392:41): [True: 0, False: 0]
  ------------------
  393|     28|}
zend_enum.c:zend_string_copy:
  223|    168|{
  224|    168|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 0, False: 168]
  ------------------
  225|      0|		GC_ADDREF(s);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      0|	}
  227|    168|	return s;
  228|    168|}
zend_enum.c:zend_string_init:
  203|    168|{
  204|    168|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|    168|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|    168|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|    168|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|    168|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|    168|	return ret;
  209|    168|}
zend_enum.c:zend_string_alloc:
  181|    168|{
  182|    168|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|    168|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    168|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    168|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    168|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    168|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    168|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 168]
  |  |  ------------------
  ------------------
  183|       |
  184|    168|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|    168|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|    168|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|    168|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|    168|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|    168|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|    168|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|    168|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    168|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 168]
  ------------------
  186|    168|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|    168|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|    168|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|    168|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|    168|	return ret;
  189|    168|}
zend_enum.c:ZSTR_KNOWN:
  114|    729|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    729|	return zend_known_strings[idx];
  116|    729|}
zend_enum.c:zend_string_release:
  351|    288|{
  352|    288|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 0, False: 288]
  ------------------
  353|      0|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 0, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  355|      0|		}
  356|      0|	}
  357|    288|}
zend_exceptions.c:ZSTR_KNOWN:
  114|   252k|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|   252k|	return zend_known_strings[idx];
  116|   252k|}
zend_exceptions.c:ZSTR_IS_INTERNED:
   74|  59.9k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  59.9k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  59.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  59.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  59.9k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  59.9k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  59.9k|}
zend_exceptions.c:zend_string_alloc:
  181|  22.1k|{
  182|  22.1k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  22.1k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  22.1k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  22.1k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  22.1k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  22.1k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  22.1k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 4, False: 22.1k]
  |  |  ------------------
  ------------------
  183|       |
  184|  22.1k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  22.1k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  22.1k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  22.1k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  22.1k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  22.1k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  22.1k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  22.1k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      4|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      4|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  22.1k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 4, False: 22.1k]
  ------------------
  186|  22.1k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  22.1k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  22.1k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  22.1k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  22.1k|	return ret;
  189|  22.1k|}
zend_exceptions.c:ZSTR_EMPTY_ALLOC:
  106|  2.69k|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|  2.69k|	return zend_empty_string;
  108|  2.69k|}
zend_exceptions.c:zend_string_release_ex:
  360|  4.16k|{
  361|  4.16k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 3.44k, False: 715]
  ------------------
  362|  3.44k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  3.44k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 1, False: 3.44k]
  ------------------
  363|      1|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 1]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      1|			} else {
  367|      1|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 1]
  |  Branch (367:5): [True: 1, False: 0]
  ------------------
  368|      1|				efree(s);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      1|			}
  370|      1|		}
  371|  3.44k|	}
  372|  4.16k|}
zend_exceptions.c:zend_string_copy:
  223|  3.56k|{
  224|  3.56k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 3.55k, False: 4]
  ------------------
  225|  3.55k|		GC_ADDREF(s);
  ------------------
  |  |  718|  3.55k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  3.55k|	}
  227|  3.56k|	return s;
  228|  3.56k|}
zend_exceptions.c:zend_string_init:
  203|  22.1k|{
  204|  22.1k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  22.1k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  22.1k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  22.1k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  22.1k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  22.1k|	return ret;
  209|  22.1k|}
zend_exceptions.c:zend_string_equals_cstr:
  375|    147|{
  376|    147|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|    147|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|    106|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 106, False: 41]
  |  Branch (376:38): [True: 106, False: 0]
  ------------------
  377|    147|}
zend_exceptions.c:zend_string_release:
  351|  19.4k|{
  352|  19.4k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 19.4k, False: 0]
  ------------------
  353|  19.4k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  19.4k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 0, False: 19.4k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  355|      0|		}
  356|  19.4k|	}
  357|  19.4k|}
zend_execute_API.c:zend_string_release_ex:
  360|  4.30k|{
  361|  4.30k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 3.38k, False: 921]
  ------------------
  362|  3.38k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  3.38k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2.80k, False: 585]
  ------------------
  363|  2.80k|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 2.80k]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|  2.80k|			} else {
  367|  2.80k|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  2.80k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 2.80k]
  |  Branch (367:5): [True: 2.80k, False: 0]
  ------------------
  368|  2.80k|				efree(s);
  ------------------
  |  |  154|  2.80k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  2.80k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  2.80k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  2.80k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  2.80k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  2.80k|			}
  370|  2.80k|		}
  371|  3.38k|	}
  372|  4.30k|}
zend_execute_API.c:zend_string_copy:
  223|    713|{
  224|    713|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 130, False: 583]
  ------------------
  225|    130|		GC_ADDREF(s);
  ------------------
  |  |  718|    130|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|    130|	}
  227|    713|	return s;
  228|    713|}
zend_execute_API.c:zend_string_init:
  203|      2|{
  204|      2|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      2|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      2|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      2|	return ret;
  209|      2|}
zend_execute_API.c:ZSTR_IS_INTERNED:
   74|  12.4k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  12.4k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  12.4k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  12.4k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  12.4k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  12.4k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  12.4k|}
zend_execute_API.c:zend_string_addref:
  165|  1.35k|{
  166|  1.35k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 1.35k, False: 0]
  ------------------
  167|  1.35k|		return GC_ADDREF(s);
  ------------------
  |  |  718|  1.35k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|  1.35k|	}
  169|      0|	return 1;
  170|  1.35k|}
zend_execute_API.c:zend_string_alloc:
  181|      6|{
  182|      6|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      6|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  183|       |
  184|      6|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      6|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      6|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      6|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      6|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 6]
  ------------------
  186|      6|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      6|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      6|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      6|	return ret;
  189|      6|}
zend_execute_API.c:zend_string_hash_val:
  146|     15|{
  147|     15|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     15|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 15, False: 0]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     15|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|     15|}
zend_execute.c:zend_string_release:
  351|    959|{
  352|    959|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 397, False: 562]
  ------------------
  353|    397|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    397|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 46, False: 351]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     46|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     46|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     46|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     46|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     46|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     46|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 46]
  |  |  ------------------
  ------------------
  355|     46|		}
  356|    397|	}
  357|    959|}
zend_execute.c:ZSTR_IS_INTERNED:
   74|  50.9k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  50.9k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  50.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  50.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  50.9k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  50.9k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  50.9k|}
zend_execute.c:zend_string_release_ex:
  360|  39.2k|{
  361|  39.2k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 17.8k, False: 21.3k]
  ------------------
  362|  17.8k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  17.8k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 3.64k, False: 14.2k]
  ------------------
  363|  3.64k|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 3.64k]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|  3.64k|			} else {
  367|  3.64k|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  3.64k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 3.64k]
  |  Branch (367:5): [True: 3.64k, False: 0]
  ------------------
  368|  3.64k|				efree(s);
  ------------------
  |  |  154|  3.64k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.64k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.64k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.64k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.64k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  3.64k|			}
  370|  3.64k|		}
  371|  17.8k|	}
  372|  39.2k|}
zend_execute.c:ZSTR_KNOWN:
  114|  5.68k|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|  5.68k|	return zend_known_strings[idx];
  116|  5.68k|}
zend_execute.c:ZSTR_EMPTY_ALLOC:
  106|    268|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|    268|	return zend_empty_string;
  108|    268|}
zend_execute.c:zend_string_addref:
  165|    845|{
  166|    845|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 330, False: 515]
  ------------------
  167|    330|		return GC_ADDREF(s);
  ------------------
  |  |  718|    330|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|    330|	}
  169|    515|	return 1;
  170|    845|}
zend_execute.c:ZSTR_CHAR:
  110|     16|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|     16|	return zend_one_char_string[c];
  112|     16|}
zend_execute.c:zend_string_equals:
  396|  5.62k|{
  397|  5.62k|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 16, False: 5.60k]
  |  Branch (397:21): [True: 50, False: 5.55k]
  ------------------
  398|  5.62k|}
zend_execute.c:zend_string_equal_content:
  391|  5.71k|{
  392|  5.71k|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  5.71k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  11.4k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 436, False: 5.27k]
  |  Branch (392:41): [True: 152, False: 284]
  ------------------
  393|  5.71k|}
zend_execute.c:ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH:
   92|    558|static inline uint32_t ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(const zend_string *s1, const zend_string *s2) {
   93|    558|	return ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(s1) & ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(s2);
   94|    558|}
zend_execute.c:ZSTR_GET_COPYABLE_CONCAT_PROPERTIES:
   87|  21.9k|static inline uint32_t ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(const zend_string *s) {
   88|  21.9k|	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |  777|  21.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  21.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|  21.9k|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|  21.9k|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
   89|  21.9k|}
zend_execute.c:zend_string_alloc:
  181|  5.69k|{
  182|  5.69k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  5.69k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  5.69k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  5.69k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  5.69k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  5.69k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  5.69k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 5.69k]
  |  |  ------------------
  ------------------
  183|       |
  184|  5.69k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  5.69k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  5.69k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  5.69k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  5.69k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  5.69k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  5.69k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  5.69k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  5.69k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 5.69k]
  ------------------
  186|  5.69k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  5.69k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  5.69k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  5.69k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  5.69k|	return ret;
  189|  5.69k|}
zend_execute.c:zend_string_extend:
  273|     38|{
  274|     38|	zend_string *ret;
  275|       |
  276|     38|	ZEND_ASSERT(len >= ZSTR_LEN(s));
  ------------------
  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (276:2): [True: 0, False: 38]
  |  Branch (276:2): [True: 38, False: 0]
  ------------------
  277|     38|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (277:6): [True: 38, False: 0]
  ------------------
  278|     38|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|     38|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 38, False: 0]
  |  |  ------------------
  ------------------
  279|     38|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|     38|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     38|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     38|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     38|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     38|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     38|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 38]
  |  |  ------------------
  ------------------
  280|     38|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     38|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  281|     38|			zend_string_forget_hash_val(ret);
  282|     38|			return ret;
  283|     38|		}
  284|     38|	}
  285|      0|	ret = zend_string_alloc(len, persistent);
  286|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  287|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (287:6): [True: 0, False: 0]
  ------------------
  288|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  289|      0|	}
  290|      0|	return ret;
  291|     38|}
zend_execute.c:zend_string_forget_hash_val:
  151|     40|{
  152|     40|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|     40|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|     40|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|     40|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|     40|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|     40|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|     40|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
  154|     40|}
zend_execute.c:zend_string_init:
  203|     20|{
  204|     20|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     20|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     20|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     20|	return ret;
  209|     20|}
zend_execute.c:zend_string_copy:
  223|  2.49k|{
  224|  2.49k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 2.43k, False: 57]
  ------------------
  225|  2.43k|		GC_ADDREF(s);
  ------------------
  |  |  718|  2.43k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  2.43k|	}
  227|  2.49k|	return s;
  228|  2.49k|}
zend_execute.c:ZSTR_COPY_CONCAT_PROPERTIES_BOTH:
  101|    446|static inline void ZSTR_COPY_CONCAT_PROPERTIES_BOTH(zend_string *out, const zend_string *in1, const zend_string *in2) {
  102|    446|	uint32_t properties = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(in1, in2);
  103|    446|	GC_ADD_FLAGS(out, properties);
  ------------------
  |  |  780|    446|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    446|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    446|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    446|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    446|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 446]
  |  |  ------------------
  ------------------
  104|    446|}
zend_generators.c:ZSTR_IS_INTERNED:
   74|      1|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      1|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      1|}
zend_generators.c:ZSTR_KNOWN:
  114|      2|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      2|	return zend_known_strings[idx];
  116|      2|}
zend_hash.c:zend_string_release:
  351|   144k|{
  352|   144k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 6.63k, False: 137k]
  ------------------
  353|  6.63k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  6.63k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 3.46k, False: 3.16k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  3.46k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  3.46k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  3.46k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  3.46k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  3.46k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  3.46k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 3.46k]
  |  |  ------------------
  ------------------
  355|  3.46k|		}
  356|  6.63k|	}
  357|   144k|}
zend_hash.c:zend_string_init:
  203|    826|{
  204|    826|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|    826|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|    826|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|    826|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|    826|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|    826|	return ret;
  209|    826|}
zend_hash.c:zend_string_alloc:
  181|    826|{
  182|    826|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|    826|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    826|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    826|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    826|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    826|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    826|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 826]
  |  |  ------------------
  ------------------
  183|       |
  184|    826|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|    826|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|    826|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|    826|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|    826|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|    826|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|    826|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|    826|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    826|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 826]
  ------------------
  186|    826|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|    826|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|    826|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|    826|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|    826|	return ret;
  189|    826|}
zend_hash.c:zend_string_hash_val:
  146|   556k|{
  147|   556k|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|   556k|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 479k, False: 77.0k]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|   479k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|   556k|}
zend_hash.c:ZSTR_IS_INTERNED:
   74|   379k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|   379k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|   379k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|   379k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|   379k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|   379k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|   379k|}
zend_hash.c:zend_string_addref:
  165|  20.1k|{
  166|  20.1k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 20.0k, False: 38]
  ------------------
  167|  20.0k|		return GC_ADDREF(s);
  ------------------
  |  |  718|  20.0k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|  20.0k|	}
  169|     38|	return 1;
  170|  20.1k|}
zend_hash.c:zend_string_equal_content:
  391|  38.9k|{
  392|  38.9k|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  38.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  77.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 38.9k, False: 0]
  |  Branch (392:41): [True: 38.9k, False: 5]
  ------------------
  393|  38.9k|}
zend_hash.c:zend_inline_hash_func:
  469|  63.9k|{
  470|  63.9k|	zend_ulong hash = Z_UL(5381);
  ------------------
  |  |   38|  63.9k|# define Z_UL(i) UINT64_C(i)
  ------------------
  471|       |
  472|  63.9k|#if defined(_WIN32) || defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
  473|       |	/* Version with multiplication works better on modern CPU */
  474|   170k|	for (; len >= 8; len -= 8, str += 8) {
  ------------------
  |  Branch (474:9): [True: 106k, False: 63.9k]
  ------------------
  475|       |# if defined(__aarch64__) && !defined(WORDS_BIGENDIAN)
  476|       |		/* On some architectures it is beneficial to load 8 bytes at a
  477|       |		   time and extract each byte with a bit field extract instr. */
  478|       |		uint64_t chunk;
  479|       |
  480|       |		memcpy(&chunk, str, sizeof(chunk));
  481|       |		hash =
  482|       |			hash                        * 33 * 33 * 33 * 33 +
  483|       |			((chunk >> (8 * 0)) & 0xff) * 33 * 33 * 33 +
  484|       |			((chunk >> (8 * 1)) & 0xff) * 33 * 33 +
  485|       |			((chunk >> (8 * 2)) & 0xff) * 33 +
  486|       |			((chunk >> (8 * 3)) & 0xff);
  487|       |		hash =
  488|       |			hash                        * 33 * 33 * 33 * 33 +
  489|       |			((chunk >> (8 * 4)) & 0xff) * 33 * 33 * 33 +
  490|       |			((chunk >> (8 * 5)) & 0xff) * 33 * 33 +
  491|       |			((chunk >> (8 * 6)) & 0xff) * 33 +
  492|       |			((chunk >> (8 * 7)) & 0xff);
  493|       |# else
  494|   106k|		hash =
  495|   106k|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  496|   106k|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  497|   106k|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  498|   106k|			str[2] * Z_L(33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  499|   106k|			str[3];
  500|   106k|		hash =
  501|   106k|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  502|   106k|			str[4] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  503|   106k|			str[5] * Z_L(33 * 33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  504|   106k|			str[6] * Z_L(33) +
  ------------------
  |  |   37|   106k|# define Z_L(i) INT64_C(i)
  ------------------
  505|   106k|			str[7];
  506|   106k|# endif
  507|   106k|	}
  508|  63.9k|	if (len >= 4) {
  ------------------
  |  Branch (508:6): [True: 8.68k, False: 55.2k]
  ------------------
  509|  8.68k|		hash =
  510|  8.68k|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|  8.68k|# define Z_L(i) INT64_C(i)
  ------------------
  511|  8.68k|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|  8.68k|# define Z_L(i) INT64_C(i)
  ------------------
  512|  8.68k|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|  8.68k|# define Z_L(i) INT64_C(i)
  ------------------
  513|  8.68k|			str[2] * Z_L(33) +
  ------------------
  |  |   37|  8.68k|# define Z_L(i) INT64_C(i)
  ------------------
  514|  8.68k|			str[3];
  515|  8.68k|		len -= 4;
  516|  8.68k|		str += 4;
  517|  8.68k|	}
  518|  63.9k|	if (len >= 2) {
  ------------------
  |  Branch (518:6): [True: 9.44k, False: 54.4k]
  ------------------
  519|  9.44k|		if (len > 2) {
  ------------------
  |  Branch (519:7): [True: 3.79k, False: 5.65k]
  ------------------
  520|  3.79k|			hash =
  521|  3.79k|				hash   * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|  3.79k|# define Z_L(i) INT64_C(i)
  ------------------
  522|  3.79k|				str[0] * Z_L(33 * 33) +
  ------------------
  |  |   37|  3.79k|# define Z_L(i) INT64_C(i)
  ------------------
  523|  3.79k|				str[1] * Z_L(33) +
  ------------------
  |  |   37|  3.79k|# define Z_L(i) INT64_C(i)
  ------------------
  524|  3.79k|				str[2];
  525|  5.65k|		} else {
  526|  5.65k|			hash =
  527|  5.65k|				hash   * Z_L(33 * 33) +
  ------------------
  |  |   37|  5.65k|# define Z_L(i) INT64_C(i)
  ------------------
  528|  5.65k|				str[0] * Z_L(33) +
  ------------------
  |  |   37|  5.65k|# define Z_L(i) INT64_C(i)
  ------------------
  529|  5.65k|				str[1];
  530|  5.65k|		}
  531|  54.4k|	} else if (len != 0) {
  ------------------
  |  Branch (531:13): [True: 10.4k, False: 44.0k]
  ------------------
  532|  10.4k|		hash = hash * Z_L(33) + *str;
  ------------------
  |  |   37|  10.4k|# define Z_L(i) INT64_C(i)
  ------------------
  533|  10.4k|	}
  534|       |#else
  535|       |	/* variant with the hash unrolled eight times */
  536|       |	for (; len >= 8; len -= 8) {
  537|       |		hash = ((hash << 5) + hash) + *str++;
  538|       |		hash = ((hash << 5) + hash) + *str++;
  539|       |		hash = ((hash << 5) + hash) + *str++;
  540|       |		hash = ((hash << 5) + hash) + *str++;
  541|       |		hash = ((hash << 5) + hash) + *str++;
  542|       |		hash = ((hash << 5) + hash) + *str++;
  543|       |		hash = ((hash << 5) + hash) + *str++;
  544|       |		hash = ((hash << 5) + hash) + *str++;
  545|       |	}
  546|       |	switch (len) {
  547|       |		case 7: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  548|       |		case 6: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  549|       |		case 5: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  550|       |		case 4: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  551|       |		case 3: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  552|       |		case 2: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  553|       |		case 1: hash = ((hash << 5) + hash) + *str++; break;
  554|       |		case 0: break;
  555|       |default: ZEND_UNREACHABLE();
  556|       |	}
  557|       |#endif
  558|       |
  559|       |	/* Hash value can't be zero, so we always set the high bit */
  560|  63.9k|#if SIZEOF_ZEND_LONG == 8
  561|  63.9k|	return hash | Z_UL(0x8000000000000000);
  ------------------
  |  |   38|  63.9k|# define Z_UL(i) UINT64_C(i)
  ------------------
  562|       |#elif SIZEOF_ZEND_LONG == 4
  563|       |	return hash | Z_UL(0x80000000);
  564|       |#else
  565|       |# error "Unknown SIZEOF_ZEND_LONG"
  566|       |#endif
  567|  63.9k|}
zend_hash.c:zend_string_equals_cstr:
  375|  62.5k|{
  376|  62.5k|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|  62.5k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|  62.5k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 62.5k, False: 0]
  |  Branch (376:38): [True: 62.5k, False: 0]
  ------------------
  377|  62.5k|}
zend_hash.c:zend_string_release_ex:
  360|  12.1k|{
  361|  12.1k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 12.0k, False: 126]
  ------------------
  362|  12.0k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  12.0k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 11.9k, False: 138]
  ------------------
  363|  11.9k|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 11.9k]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|  11.9k|			} else {
  367|  11.9k|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  11.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 11.9k]
  |  Branch (367:5): [True: 11.9k, False: 0]
  ------------------
  368|  11.9k|				efree(s);
  ------------------
  |  |  154|  11.9k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  11.9k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  11.9k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  11.9k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  11.9k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  11.9k|			}
  370|  11.9k|		}
  371|  12.0k|	}
  372|  12.1k|}
zend_hash.c:zend_string_delref:
  173|     26|{
  174|     26|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (174:6): [True: 0, False: 26]
  ------------------
  175|      0|		return GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  176|      0|	}
  177|     26|	return 1;
  178|     26|}
zend_highlight.c:ZSTR_IS_INTERNED:
   74|  65.8k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  65.8k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  65.8k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  65.8k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  65.8k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  65.8k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  65.8k|}
zend_inheritance.c:ZSTR_KNOWN:
  114|  2.03k|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|  2.03k|	return zend_known_strings[idx];
  116|  2.03k|}
zend_inheritance.c:zend_string_release:
  351|    225|{
  352|    225|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 116, False: 109]
  ------------------
  353|    116|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    116|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 85, False: 31]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     85|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     85|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     85|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     85|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     85|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     85|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 85]
  |  |  ------------------
  ------------------
  355|     85|		}
  356|    116|	}
  357|    225|}
zend_inheritance.c:ZSTR_IS_INTERNED:
   74|  7.63k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  7.63k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  7.63k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  7.63k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  7.63k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  7.63k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  7.63k|}
zend_inheritance.c:zend_string_release_ex:
  360|    750|{
  361|    750|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 417, False: 333]
  ------------------
  362|    417|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    417|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 314, False: 103]
  ------------------
  363|    314|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 314]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|    314|			} else {
  367|    314|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|    314|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 314]
  |  Branch (367:5): [True: 314, False: 0]
  ------------------
  368|    314|				efree(s);
  ------------------
  |  |  154|    314|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    314|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    314|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    314|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    314|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|    314|			}
  370|    314|		}
  371|    417|	}
  372|    750|}
zend_inheritance.c:zend_string_addref:
  165|  2.88k|{
  166|  2.88k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 76, False: 2.81k]
  ------------------
  167|     76|		return GC_ADDREF(s);
  ------------------
  |  |  718|     76|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|     76|	}
  169|  2.81k|	return 1;
  170|  2.88k|}
zend_inheritance.c:zend_string_efree:
  343|     14|{
  344|     14|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 14]
  |  Branch (344:2): [True: 14, False: 0]
  ------------------
  345|     14|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 14]
  |  Branch (345:2): [True: 14, False: 0]
  ------------------
  346|     14|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 14]
  |  Branch (346:2): [True: 14, False: 0]
  ------------------
  347|     14|	efree(s);
  ------------------
  |  |  154|     14|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     14|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     14|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     14|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     14|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|     14|}
zend_inheritance.c:zend_string_hash_val:
  146|     27|{
  147|     27|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     27|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 27, False: 0]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     27|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|     27|}
zend_inheritance.c:zend_string_copy:
  223|      3|{
  224|      3|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 3, False: 0]
  ------------------
  225|      3|		GC_ADDREF(s);
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|      3|	}
  227|      3|	return s;
  228|      3|}
zend_ini_parser.c:zend_string_release:
  351|   115k|{
  352|   115k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 114k, False: 1.46k]
  ------------------
  353|   114k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|   114k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 69.2k, False: 44.8k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  69.2k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  69.2k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  69.2k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  69.2k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  69.2k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  69.2k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 22, False: 69.2k]
  |  |  ------------------
  ------------------
  355|  69.2k|		}
  356|   114k|	}
  357|   115k|}
zend_ini_parser.c:ZSTR_IS_INTERNED:
   74|   390k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|   390k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|   390k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|   390k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|   390k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|   390k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|   390k|}
zend_ini_parser.c:zend_string_init:
  203|    978|{
  204|    978|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|    978|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|    978|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|    978|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|    978|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|    978|	return ret;
  209|    978|}
zend_ini_parser.c:zend_string_alloc:
  181|  31.7k|{
  182|  31.7k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  31.7k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  31.7k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  31.7k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  31.7k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  31.7k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  31.7k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 31.7k]
  |  |  ------------------
  ------------------
  183|       |
  184|  31.7k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  31.7k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  31.7k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  31.7k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  31.7k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  31.7k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  31.7k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  31.7k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  31.7k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 31.7k]
  ------------------
  186|  31.7k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  31.7k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  31.7k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  31.7k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  31.7k|	return ret;
  189|  31.7k|}
zend_ini_parser.c:ZSTR_EMPTY_ALLOC:
  106|  38.8k|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|  38.8k|	return zend_empty_string;
  108|  38.8k|}
zend_ini_parser.c:zend_string_extend:
  273|   121k|{
  274|   121k|	zend_string *ret;
  275|       |
  276|   121k|	ZEND_ASSERT(len >= ZSTR_LEN(s));
  ------------------
  |  |  112|   121k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (276:2): [True: 0, False: 121k]
  |  Branch (276:2): [True: 121k, False: 0]
  ------------------
  277|   121k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (277:6): [True: 90.5k, False: 30.8k]
  ------------------
  278|  90.5k|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|  90.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 90.5k, False: 0]
  |  |  ------------------
  ------------------
  279|  90.5k|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|  90.5k|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|  90.5k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  90.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  90.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  90.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  90.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 90.5k]
  |  |  ------------------
  ------------------
  280|  90.5k|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  90.5k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  281|  90.5k|			zend_string_forget_hash_val(ret);
  282|  90.5k|			return ret;
  283|  90.5k|		}
  284|  90.5k|	}
  285|  30.8k|	ret = zend_string_alloc(len, persistent);
  286|  30.8k|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|  30.8k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|  30.8k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   68|  30.8k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  287|  30.8k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (287:6): [True: 0, False: 30.8k]
  ------------------
  288|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  289|      0|	}
  290|  30.8k|	return ret;
  291|   121k|}
zend_ini_parser.c:zend_string_forget_hash_val:
  151|  90.5k|{
  152|  90.5k|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|  90.5k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|  90.5k|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|  90.5k|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|  90.5k|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|  90.5k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|  90.5k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|  90.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 90.5k]
  |  |  ------------------
  ------------------
  154|  90.5k|}
zend_ini_parser.c:zend_string_free:
  335|   123k|{
  336|   123k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (336:6): [True: 116k, False: 6.61k]
  ------------------
  337|   116k|		ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|   116k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (337:3): [True: 0, False: 116k]
  |  Branch (337:3): [True: 116k, False: 0]
  ------------------
  338|   116k|		pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|   116k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|   116k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|   116k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|   116k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|   116k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|   116k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 116k]
  |  |  ------------------
  ------------------
  339|   116k|	}
  340|   123k|}
zend_ini_scanner.c:zend_string_init:
  203|   198k|{
  204|   198k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|   198k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|   198k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|   198k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|   198k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|   198k|	return ret;
  209|   198k|}
zend_ini_scanner.c:zend_string_alloc:
  181|   198k|{
  182|   198k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|   198k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|     44|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     44|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|     44|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     44|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|   198k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|   198k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|   198k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|   198k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|   198k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 44, False: 198k]
  |  |  ------------------
  ------------------
  183|       |
  184|   198k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|   198k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|   198k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|   198k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|   198k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|   198k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|   198k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|   198k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|     44|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|     44|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   198k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 44, False: 198k]
  ------------------
  186|   198k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|   198k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|   198k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|   198k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|   198k|	return ret;
  189|   198k|}
zend_ini.c:zend_string_release_ex:
  360|     81|{
  361|     81|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 81, False: 0]
  ------------------
  362|     81|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     81|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 81, False: 0]
  ------------------
  363|     81|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 81]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     81|			} else {
  367|     81|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     81|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 81]
  |  Branch (367:5): [True: 81, False: 0]
  ------------------
  368|     81|				efree(s);
  ------------------
  |  |  154|     81|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     81|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     81|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     81|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     81|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     81|			}
  370|     81|		}
  371|     81|	}
  372|     81|}
zend_ini.c:ZSTR_IS_INTERNED:
   74|    303|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|    303|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|    303|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    303|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|    303|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|    303|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|    303|}
zend_ini.c:zend_string_copy:
  223|     92|{
  224|     92|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 64, False: 28]
  ------------------
  225|     64|		GC_ADDREF(s);
  ------------------
  |  |  718|     64|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|     64|	}
  227|     92|	return s;
  228|     92|}
zend_ini.c:zend_string_init:
  203|     11|{
  204|     11|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     11|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     11|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     11|	return ret;
  209|     11|}
zend_ini.c:zend_string_alloc:
  181|     11|{
  182|     11|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     11|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     11|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  183|       |
  184|     11|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     11|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     11|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     11|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     11|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     11|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 11]
  ------------------
  186|     11|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     11|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     11|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     11|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     11|	return ret;
  189|     11|}
zend_ini.c:zend_string_release:
  351|    130|{
  352|    130|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 104, False: 26]
  ------------------
  353|    104|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    104|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 78, False: 26]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     78|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     78|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     78|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     78|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     78|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     78|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 78]
  |  |  ------------------
  ------------------
  355|     78|		}
  356|    104|	}
  357|    130|}
zend_ini.c:ZSTR_EMPTY_ALLOC:
  106|     28|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|     28|	return zend_empty_string;
  108|     28|}
zend_interfaces.c:ZSTR_KNOWN:
  114|     78|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     78|	return zend_known_strings[idx];
  116|     78|}
zend_language_parser.c:zend_string_release_ex:
  360|      3|{
  361|      3|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 3, False: 0]
  ------------------
  362|      3|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 3, False: 0]
  ------------------
  363|      3|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 3]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      3|			} else {
  367|      3|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 3]
  |  Branch (367:5): [True: 3, False: 0]
  ------------------
  368|      3|				efree(s);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      3|			}
  370|      3|		}
  371|      3|	}
  372|      3|}
zend_language_parser.c:ZSTR_IS_INTERNED:
   74|      3|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      3|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      3|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      3|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      3|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      3|}
zend_language_parser.c:ZSTR_KNOWN:
  114|     71|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     71|	return zend_known_strings[idx];
  116|     71|}
zend_language_parser.c:ZSTR_EMPTY_ALLOC:
  106|     14|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|     14|	return zend_empty_string;
  108|     14|}
zend_language_scanner.c:zend_string_release_ex:
  360|  7.08k|{
  361|  7.08k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 7.08k, False: 0]
  ------------------
  362|  7.08k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  7.08k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 53, False: 7.03k]
  ------------------
  363|     53|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 53]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     53|			} else {
  367|     53|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     53|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 53]
  |  Branch (367:5): [True: 53, False: 0]
  ------------------
  368|     53|				efree(s);
  ------------------
  |  |  154|     53|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     53|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     53|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     53|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     53|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     53|			}
  370|     53|		}
  371|  7.08k|	}
  372|  7.08k|}
zend_language_scanner.c:zend_string_init:
  203|   117k|{
  204|   117k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|   117k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|   117k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|   117k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|   117k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|   117k|	return ret;
  209|   117k|}
zend_language_scanner.c:zend_string_alloc:
  181|   120k|{
  182|   120k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|   120k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|   120k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|   120k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|   120k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|   120k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|   120k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 120k]
  |  |  ------------------
  ------------------
  183|       |
  184|   120k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|   120k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|   120k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|   120k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|   120k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|   120k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|   120k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|   120k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   120k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 120k]
  ------------------
  186|   120k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|   120k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|   120k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|   120k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|   120k|	return ret;
  189|   120k|}
zend_language_scanner.c:zend_string_copy:
  223|  7.03k|{
  224|  7.03k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 7.03k, False: 0]
  ------------------
  225|  7.03k|		GC_ADDREF(s);
  ------------------
  |  |  718|  7.03k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  7.03k|	}
  227|  7.03k|	return s;
  228|  7.03k|}
zend_language_scanner.c:ZSTR_IS_INTERNED:
   74|  29.9k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  29.9k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  29.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  29.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  29.9k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  29.9k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  29.9k|}
zend_language_scanner.c:zend_string_extend:
  273|  3.44k|{
  274|  3.44k|	zend_string *ret;
  275|       |
  276|  3.44k|	ZEND_ASSERT(len >= ZSTR_LEN(s));
  ------------------
  |  |  112|  3.44k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (276:2): [True: 0, False: 3.44k]
  |  Branch (276:2): [True: 3.44k, False: 0]
  ------------------
  277|  3.44k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (277:6): [True: 3.44k, False: 0]
  ------------------
  278|  3.44k|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|  3.44k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3.44k]
  |  |  ------------------
  ------------------
  279|      0|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|      0|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  280|      0|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  281|      0|			zend_string_forget_hash_val(ret);
  282|      0|			return ret;
  283|      0|		}
  284|  3.44k|	}
  285|  3.44k|	ret = zend_string_alloc(len, persistent);
  286|  3.44k|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|  3.44k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|  3.44k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   68|  3.44k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  287|  3.44k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (287:6): [True: 3.44k, False: 0]
  ------------------
  288|  3.44k|		GC_DELREF(s);
  ------------------
  |  |  719|  3.44k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  289|  3.44k|	}
  290|  3.44k|	return ret;
  291|  3.44k|}
zend_language_scanner.c:zend_string_release:
  351|  3.44k|{
  352|  3.44k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 3.44k, False: 0]
  ------------------
  353|  3.44k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  3.44k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 0, False: 3.44k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  355|      0|		}
  356|  3.44k|	}
  357|  3.44k|}
zend_language_scanner.c:ZSTR_EMPTY_ALLOC:
  106|    345|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|    345|	return zend_empty_string;
  108|    345|}
zend_language_scanner.c:ZSTR_CHAR:
  110|  35.4k|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|  35.4k|	return zend_one_char_string[c];
  112|  35.4k|}
zend_language_scanner.c:zend_string_efree:
  343|  2.01k|{
  344|  2.01k|	ZEND_ASSERT(!ZSTR_IS_INTERNED(s));
  ------------------
  |  |  112|  2.01k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (344:2): [True: 0, False: 2.01k]
  |  Branch (344:2): [True: 2.01k, False: 0]
  ------------------
  345|  2.01k|	ZEND_ASSERT(GC_REFCOUNT(s) <= 1);
  ------------------
  |  |  112|  2.01k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (345:2): [True: 0, False: 2.01k]
  |  Branch (345:2): [True: 2.01k, False: 0]
  ------------------
  346|  2.01k|	ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  2.01k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (346:2): [True: 0, False: 2.01k]
  |  Branch (346:2): [True: 2.01k, False: 0]
  ------------------
  347|  2.01k|	efree(s);
  ------------------
  |  |  154|  2.01k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  2.01k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  2.01k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  2.01k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  2.01k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|  2.01k|}
zend_object_handlers.c:zend_string_addref:
  165|     41|{
  166|     41|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 41, False: 0]
  ------------------
  167|     41|		return GC_ADDREF(s);
  ------------------
  |  |  718|     41|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|     41|	}
  169|      0|	return 1;
  170|     41|}
zend_object_handlers.c:zend_string_hash_val:
  146|     41|{
  147|     41|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     41|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 41, False: 0]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     41|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|     41|}
zend_object_handlers.c:zend_string_init:
  203|      6|{
  204|      6|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|      6|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|      6|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|      6|	return ret;
  209|      6|}
zend_object_handlers.c:zend_string_alloc:
  181|      6|{
  182|      6|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|      6|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  183|       |
  184|      6|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|      6|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|      6|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|      6|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|      6|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 6]
  ------------------
  186|      6|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|      6|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|      6|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|      6|	return ret;
  189|      6|}
zend_object_handlers.c:zend_string_release_ex:
  360|     16|{
  361|     16|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 6, False: 10]
  ------------------
  362|      6|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      6|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 0, False: 6]
  ------------------
  363|      0|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      0|			} else {
  367|      0|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 0]
  |  Branch (367:5): [True: 0, False: 0]
  ------------------
  368|      0|				efree(s);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|			}
  370|      0|		}
  371|      6|	}
  372|     16|}
zend_object_handlers.c:zend_string_equal_content:
  391|      5|{
  392|      5|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 3, False: 2]
  |  Branch (392:41): [True: 3, False: 0]
  ------------------
  393|      5|}
zend_object_handlers.c:ZSTR_IS_INTERNED:
   74|  2.07k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  2.07k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  2.07k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  2.07k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  2.07k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  2.07k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  2.07k|}
zend_object_handlers.c:zend_string_copy:
  223|  1.66k|{
  224|  1.66k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 1.45k, False: 215]
  ------------------
  225|  1.45k|		GC_ADDREF(s);
  ------------------
  |  |  718|  1.45k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  1.45k|	}
  227|  1.66k|	return s;
  228|  1.66k|}
zend_object_handlers.c:zend_string_release:
  351|      2|{
  352|      2|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 2, False: 0]
  ------------------
  353|      2|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 2, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|      2|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  355|      2|		}
  356|      2|	}
  357|      2|}
zend_object_handlers.c:ZSTR_KNOWN:
  114|      8|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      8|	return zend_known_strings[idx];
  116|      8|}
zend_objects.c:ZSTR_IS_INTERNED:
   74|      7|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      7|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      7|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      7|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      7|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      7|}
zend_opcode.c:zend_string_copy:
  223|  6.59k|{
  224|  6.59k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 6.59k, False: 0]
  ------------------
  225|  6.59k|		GC_ADDREF(s);
  ------------------
  |  |  718|  6.59k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  6.59k|	}
  227|  6.59k|	return s;
  228|  6.59k|}
zend_opcode.c:ZSTR_IS_INTERNED:
   74|  24.9k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  24.9k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  24.9k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  24.9k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  24.9k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  24.9k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  24.9k|}
zend_opcode.c:zend_string_release:
  351|    315|{
  352|    315|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 112, False: 203]
  ------------------
  353|    112|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    112|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 76, False: 36]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     76|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     76|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     76|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     76|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     76|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     76|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 76]
  |  |  ------------------
  ------------------
  355|     76|		}
  356|    112|	}
  357|    315|}
zend_opcode.c:zend_string_release_ex:
  360|  18.0k|{
  361|  18.0k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 12.1k, False: 5.86k]
  ------------------
  362|  12.1k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  12.1k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 3.62k, False: 8.53k]
  ------------------
  363|  3.62k|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 3.62k]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|  3.62k|			} else {
  367|  3.62k|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  3.62k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 3.62k]
  |  Branch (367:5): [True: 3.62k, False: 0]
  ------------------
  368|  3.62k|				efree(s);
  ------------------
  |  |  154|  3.62k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.62k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.62k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.62k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.62k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  3.62k|			}
  370|  3.62k|		}
  371|  12.1k|	}
  372|  18.0k|}
zend_operators.c:zend_string_release_ex:
  360|  7.20k|{
  361|  7.20k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 3.29k, False: 3.91k]
  ------------------
  362|  3.29k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  3.29k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 3.24k, False: 52]
  ------------------
  363|  3.24k|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 3.24k]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|  3.24k|			} else {
  367|  3.24k|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  3.24k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 3.24k]
  |  Branch (367:5): [True: 3.24k, False: 0]
  ------------------
  368|  3.24k|				efree(s);
  ------------------
  |  |  154|  3.24k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.24k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.24k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.24k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.24k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  3.24k|			}
  370|  3.24k|		}
  371|  3.29k|	}
  372|  7.20k|}
zend_operators.c:ZSTR_EMPTY_ALLOC:
  106|  20.5k|static zend_always_inline zend_string *ZSTR_EMPTY_ALLOC(void) {
  107|  20.5k|	return zend_empty_string;
  108|  20.5k|}
zend_operators.c:ZSTR_CHAR:
  110|  6.20k|static zend_always_inline zend_string *ZSTR_CHAR(unsigned char c) {
  111|  6.20k|	return zend_one_char_string[c];
  112|  6.20k|}
zend_operators.c:ZSTR_IS_INTERNED:
   74|  34.2k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  34.2k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  34.2k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  34.2k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  34.2k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  34.2k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  34.2k|}
zend_operators.c:ZSTR_KNOWN:
  114|     28|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|     28|	return zend_known_strings[idx];
  116|     28|}
zend_operators.c:zend_string_alloc:
  181|  19.6k|{
  182|  19.6k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  19.6k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|  1.67k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  1.67k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|  1.67k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  1.67k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  17.9k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  17.9k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  17.9k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  17.9k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  17.9k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 1.67k, False: 17.9k]
  |  |  ------------------
  ------------------
  183|       |
  184|  19.6k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  19.6k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  19.6k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  19.6k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  19.6k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  19.6k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  19.6k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  19.6k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|  1.67k|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|  1.67k|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  19.6k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 1.67k, False: 17.9k]
  ------------------
  186|  19.6k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  19.6k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  19.6k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  19.6k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  19.6k|	return ret;
  189|  19.6k|}
zend_operators.c:zend_string_copy:
  223|  18.3k|{
  224|  18.3k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 14.3k, False: 4.04k]
  ------------------
  225|  14.3k|		GC_ADDREF(s);
  ------------------
  |  |  718|  14.3k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  14.3k|	}
  227|  18.3k|	return s;
  228|  18.3k|}
zend_operators.c:ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH:
   92|  5.81k|static inline uint32_t ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(const zend_string *s1, const zend_string *s2) {
   93|  5.81k|	return ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(s1) & ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(s2);
   94|  5.81k|}
zend_operators.c:ZSTR_GET_COPYABLE_CONCAT_PROPERTIES:
   87|  11.6k|static inline uint32_t ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(const zend_string *s) {
   88|  11.6k|	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |  777|  11.6k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  11.6k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|  11.6k|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|  11.6k|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
   89|  11.6k|}
zend_operators.c:zend_string_extend:
  273|  4.74k|{
  274|  4.74k|	zend_string *ret;
  275|       |
  276|  4.74k|	ZEND_ASSERT(len >= ZSTR_LEN(s));
  ------------------
  |  |  112|  4.74k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (276:2): [True: 0, False: 4.74k]
  |  Branch (276:2): [True: 4.74k, False: 0]
  ------------------
  277|  4.74k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (277:6): [True: 4.35k, False: 391]
  ------------------
  278|  4.35k|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|  4.35k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.00k, False: 346]
  |  |  ------------------
  ------------------
  279|  4.00k|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|  4.00k|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|  4.00k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  4.00k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  4.00k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  4.00k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  4.00k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 4.00k]
  |  |  ------------------
  ------------------
  280|  4.00k|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  4.00k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  281|  4.00k|			zend_string_forget_hash_val(ret);
  282|  4.00k|			return ret;
  283|  4.00k|		}
  284|  4.35k|	}
  285|    737|	ret = zend_string_alloc(len, persistent);
  286|    737|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|    737|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|    737|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), ZSTR_LEN(s) + 1);
  ------------------
  |  |   68|    737|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  287|    737|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (287:6): [True: 343, False: 394]
  ------------------
  288|    343|		GC_DELREF(s);
  ------------------
  |  |  719|    343|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  289|    343|	}
  290|    737|	return ret;
  291|  4.74k|}
zend_operators.c:zend_string_forget_hash_val:
  151|  4.24k|{
  152|  4.24k|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|  4.24k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|  4.24k|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|  4.24k|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|  4.24k|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|  4.24k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|  4.24k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|  4.24k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 4.24k]
  |  |  ------------------
  ------------------
  154|  4.24k|}
zend_operators.c:zend_string_equals:
  396|  7.04k|{
  397|  7.04k|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 2, False: 7.04k]
  |  Branch (397:21): [True: 9, False: 7.03k]
  ------------------
  398|  7.04k|}
zend_operators.c:zend_string_addref:
  165|    314|{
  166|    314|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (166:6): [True: 311, False: 3]
  ------------------
  167|    311|		return GC_ADDREF(s);
  ------------------
  |  |  718|    311|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  168|    311|	}
  169|      3|	return 1;
  170|    314|}
zend_operators.c:zend_string_release:
  351|    344|{
  352|    344|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 238, False: 106]
  ------------------
  353|    238|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    238|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 238, False: 0]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|    238|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|    238|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    238|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    238|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    238|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    238|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 238]
  |  |  ------------------
  ------------------
  355|    238|		}
  356|    238|	}
  357|    344|}
zend_operators.c:zend_string_equal_content:
  391|  7.04k|{
  392|  7.04k|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  7.04k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  14.0k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 403, False: 6.64k]
  |  Branch (392:41): [True: 9, False: 394]
  ------------------
  393|  7.04k|}
zend_operators.c:zend_string_init:
  203|  9.35k|{
  204|  9.35k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  9.35k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  9.35k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  9.35k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  9.35k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  9.35k|	return ret;
  209|  9.35k|}
zend_property_hooks.c:ZSTR_IS_INTERNED:
   74|      3|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|      3|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|      3|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|      3|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|      3|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|      3|}
zend_smart_str.c:zend_string_alloc:
  181|  63.2k|{
  182|  63.2k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  63.2k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  63.2k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  63.2k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  63.2k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  63.2k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  63.2k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 63.2k]
  |  |  ------------------
  ------------------
  183|       |
  184|  63.2k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  63.2k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  63.2k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  63.2k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  63.2k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  63.2k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  63.2k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  63.2k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  63.2k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 63.2k]
  ------------------
  186|  63.2k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  63.2k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  63.2k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  63.2k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  63.2k|	return ret;
  189|  63.2k|}
zend_stream.c:zend_string_init:
  203|  33.5k|{
  204|  33.5k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  33.5k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  33.5k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  33.5k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  33.5k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  33.5k|	return ret;
  209|  33.5k|}
zend_stream.c:zend_string_alloc:
  181|  33.5k|{
  182|  33.5k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  33.5k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  183|       |
  184|  33.5k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  33.5k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  33.5k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  33.5k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  33.5k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  33.5k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  33.5k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  33.5k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  33.5k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 33.5k]
  ------------------
  186|  33.5k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  33.5k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  33.5k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  33.5k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  33.5k|	return ret;
  189|  33.5k|}
zend_stream.c:zend_string_copy:
  223|  3.37k|{
  224|  3.37k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 1.38k, False: 1.98k]
  ------------------
  225|  1.38k|		GC_ADDREF(s);
  ------------------
  |  |  718|  1.38k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  1.38k|	}
  227|  3.37k|	return s;
  228|  3.37k|}
zend_stream.c:ZSTR_IS_INTERNED:
   74|  37.7k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  37.7k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  37.7k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  37.7k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  37.7k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  37.7k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  37.7k|}
zend_stream.c:zend_string_equals:
  396|    664|{
  397|    664|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 664, False: 0]
  |  Branch (397:21): [True: 0, False: 0]
  ------------------
  398|    664|}
zend_stream.c:zend_string_release_ex:
  360|      5|{
  361|      5|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 5, False: 0]
  ------------------
  362|      5|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|      5|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 2, False: 3]
  ------------------
  363|      2|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 2]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|      2|			} else {
  367|      2|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 2]
  |  Branch (367:5): [True: 2, False: 0]
  ------------------
  368|      2|				efree(s);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      2|			}
  370|      2|		}
  371|      5|	}
  372|      5|}
zend_stream.c:zend_string_release:
  351|  34.3k|{
  352|  34.3k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 34.3k, False: 5]
  ------------------
  353|  34.3k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  34.3k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 26.5k, False: 7.75k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|  26.5k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  26.5k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  26.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  26.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  26.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  26.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 26.5k]
  |  |  ------------------
  ------------------
  355|  26.5k|		}
  356|  34.3k|	}
  357|  34.3k|}
zend_string.c:zend_inline_hash_func:
  469|   150k|{
  470|   150k|	zend_ulong hash = Z_UL(5381);
  ------------------
  |  |   38|   150k|# define Z_UL(i) UINT64_C(i)
  ------------------
  471|       |
  472|   150k|#if defined(_WIN32) || defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
  473|       |	/* Version with multiplication works better on modern CPU */
  474|  27.5M|	for (; len >= 8; len -= 8, str += 8) {
  ------------------
  |  Branch (474:9): [True: 27.3M, False: 150k]
  ------------------
  475|       |# if defined(__aarch64__) && !defined(WORDS_BIGENDIAN)
  476|       |		/* On some architectures it is beneficial to load 8 bytes at a
  477|       |		   time and extract each byte with a bit field extract instr. */
  478|       |		uint64_t chunk;
  479|       |
  480|       |		memcpy(&chunk, str, sizeof(chunk));
  481|       |		hash =
  482|       |			hash                        * 33 * 33 * 33 * 33 +
  483|       |			((chunk >> (8 * 0)) & 0xff) * 33 * 33 * 33 +
  484|       |			((chunk >> (8 * 1)) & 0xff) * 33 * 33 +
  485|       |			((chunk >> (8 * 2)) & 0xff) * 33 +
  486|       |			((chunk >> (8 * 3)) & 0xff);
  487|       |		hash =
  488|       |			hash                        * 33 * 33 * 33 * 33 +
  489|       |			((chunk >> (8 * 4)) & 0xff) * 33 * 33 * 33 +
  490|       |			((chunk >> (8 * 5)) & 0xff) * 33 * 33 +
  491|       |			((chunk >> (8 * 6)) & 0xff) * 33 +
  492|       |			((chunk >> (8 * 7)) & 0xff);
  493|       |# else
  494|  27.3M|		hash =
  495|  27.3M|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  496|  27.3M|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  497|  27.3M|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  498|  27.3M|			str[2] * Z_L(33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  499|  27.3M|			str[3];
  500|  27.3M|		hash =
  501|  27.3M|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  502|  27.3M|			str[4] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  503|  27.3M|			str[5] * Z_L(33 * 33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  504|  27.3M|			str[6] * Z_L(33) +
  ------------------
  |  |   37|  27.3M|# define Z_L(i) INT64_C(i)
  ------------------
  505|  27.3M|			str[7];
  506|  27.3M|# endif
  507|  27.3M|	}
  508|   150k|	if (len >= 4) {
  ------------------
  |  Branch (508:6): [True: 79.9k, False: 70.2k]
  ------------------
  509|  79.9k|		hash =
  510|  79.9k|			hash   * Z_L(33 * 33 * 33 * 33) +
  ------------------
  |  |   37|  79.9k|# define Z_L(i) INT64_C(i)
  ------------------
  511|  79.9k|			str[0] * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|  79.9k|# define Z_L(i) INT64_C(i)
  ------------------
  512|  79.9k|			str[1] * Z_L(33 * 33) +
  ------------------
  |  |   37|  79.9k|# define Z_L(i) INT64_C(i)
  ------------------
  513|  79.9k|			str[2] * Z_L(33) +
  ------------------
  |  |   37|  79.9k|# define Z_L(i) INT64_C(i)
  ------------------
  514|  79.9k|			str[3];
  515|  79.9k|		len -= 4;
  516|  79.9k|		str += 4;
  517|  79.9k|	}
  518|   150k|	if (len >= 2) {
  ------------------
  |  Branch (518:6): [True: 88.3k, False: 61.8k]
  ------------------
  519|  88.3k|		if (len > 2) {
  ------------------
  |  Branch (519:7): [True: 63.8k, False: 24.5k]
  ------------------
  520|  63.8k|			hash =
  521|  63.8k|				hash   * Z_L(33 * 33 * 33) +
  ------------------
  |  |   37|  63.8k|# define Z_L(i) INT64_C(i)
  ------------------
  522|  63.8k|				str[0] * Z_L(33 * 33) +
  ------------------
  |  |   37|  63.8k|# define Z_L(i) INT64_C(i)
  ------------------
  523|  63.8k|				str[1] * Z_L(33) +
  ------------------
  |  |   37|  63.8k|# define Z_L(i) INT64_C(i)
  ------------------
  524|  63.8k|				str[2];
  525|  63.8k|		} else {
  526|  24.5k|			hash =
  527|  24.5k|				hash   * Z_L(33 * 33) +
  ------------------
  |  |   37|  24.5k|# define Z_L(i) INT64_C(i)
  ------------------
  528|  24.5k|				str[0] * Z_L(33) +
  ------------------
  |  |   37|  24.5k|# define Z_L(i) INT64_C(i)
  ------------------
  529|  24.5k|				str[1];
  530|  24.5k|		}
  531|  88.3k|	} else if (len != 0) {
  ------------------
  |  Branch (531:13): [True: 31.8k, False: 29.9k]
  ------------------
  532|  31.8k|		hash = hash * Z_L(33) + *str;
  ------------------
  |  |   37|  31.8k|# define Z_L(i) INT64_C(i)
  ------------------
  533|  31.8k|	}
  534|       |#else
  535|       |	/* variant with the hash unrolled eight times */
  536|       |	for (; len >= 8; len -= 8) {
  537|       |		hash = ((hash << 5) + hash) + *str++;
  538|       |		hash = ((hash << 5) + hash) + *str++;
  539|       |		hash = ((hash << 5) + hash) + *str++;
  540|       |		hash = ((hash << 5) + hash) + *str++;
  541|       |		hash = ((hash << 5) + hash) + *str++;
  542|       |		hash = ((hash << 5) + hash) + *str++;
  543|       |		hash = ((hash << 5) + hash) + *str++;
  544|       |		hash = ((hash << 5) + hash) + *str++;
  545|       |	}
  546|       |	switch (len) {
  547|       |		case 7: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  548|       |		case 6: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  549|       |		case 5: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  550|       |		case 4: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  551|       |		case 3: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  552|       |		case 2: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */
  553|       |		case 1: hash = ((hash << 5) + hash) + *str++; break;
  554|       |		case 0: break;
  555|       |default: ZEND_UNREACHABLE();
  556|       |	}
  557|       |#endif
  558|       |
  559|       |	/* Hash value can't be zero, so we always set the high bit */
  560|   150k|#if SIZEOF_ZEND_LONG == 8
  561|   150k|	return hash | Z_UL(0x8000000000000000);
  ------------------
  |  |   38|   150k|# define Z_UL(i) UINT64_C(i)
  ------------------
  562|       |#elif SIZEOF_ZEND_LONG == 4
  563|       |	return hash | Z_UL(0x80000000);
  564|       |#else
  565|       |# error "Unknown SIZEOF_ZEND_LONG"
  566|       |#endif
  567|   150k|}
zend_string.c:zend_string_hash_val:
  146|  1.69k|{
  147|  1.69k|	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|  1.69k|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 36, False: 1.66k]
  |  |  ------------------
  ------------------
              	return ZSTR_H(s) ? ZSTR_H(s) : zend_string_hash_func(s);
  ------------------
  |  |   69|     36|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  148|  1.69k|}
zend_string.c:zend_string_equal_content:
  391|    584|{
  392|    584|	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|    584|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == ZSTR_LEN(s2) && zend_string_equal_val(s1, s2);
  ------------------
  |  |   68|  1.16k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (392:9): [True: 584, False: 0]
  |  Branch (392:41): [True: 584, False: 0]
  ------------------
  393|    584|}
zend_string.c:ZSTR_IS_INTERNED:
   74|  4.72k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|  4.72k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|  4.72k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|  4.72k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|  4.72k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  4.72k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|  4.72k|}
zend_string.c:zend_string_release:
  351|    584|{
  352|    584|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 584, False: 0]
  ------------------
  353|    584|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|    584|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 536, False: 48]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|    536|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 536, False: 0]
  |  |  ------------------
  ------------------
  355|    536|		}
  356|    584|	}
  357|    584|}
zend_string.c:ZSTR_GET_COPYABLE_CONCAT_PROPERTIES:
   87|     20|static inline uint32_t ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(const zend_string *s) {
   88|     20|	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |  777|     20|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|     20|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|     20|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|     20|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
   89|     20|}
zend_string.c:zend_string_delref:
  173|     20|{
  174|     20|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (174:6): [True: 20, False: 0]
  ------------------
  175|     20|		return GC_DELREF(s);
  ------------------
  |  |  719|     20|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  176|     20|	}
  177|      0|	return 1;
  178|     20|}
zend_string.c:zend_string_init:
  203|  6.75k|{
  204|  6.75k|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|  6.75k|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|  6.75k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|  6.75k|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|  6.75k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|  6.75k|	return ret;
  209|  6.75k|}
zend_string.c:zend_string_equals_cstr:
  375|  6.53k|{
  376|  6.53k|	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   68|  6.53k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length);
  ------------------
  |  |   67|  6.53k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (376:9): [True: 6.53k, False: 0]
  |  Branch (376:38): [True: 6.53k, False: 0]
  ------------------
  377|  6.53k|}
zend_string.c:zend_string_safe_alloc:
  192|     31|{
  193|     31|	zend_string *ret = (zend_string *)safe_pemalloc(n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent);
  ------------------
  |  |  189|     31|#define safe_pemalloc(nmemb, size, offset, persistent)	((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset))
  |  |  ------------------
  |  |  |  |  153|     31|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     31|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     31|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     31|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     31|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (189:57): [True: 0, False: 31]
  |  |  ------------------
  ------------------
  194|       |
  195|     31|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     31|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  196|     31|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     31|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     31|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     31|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     31|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     31|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     31|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (196:36): [True: 0, False: 31]
  ------------------
  197|     31|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     31|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  198|     31|	ZSTR_LEN(ret) = (n * m) + l;
  ------------------
  |  |   68|     31|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  199|     31|	return ret;
  200|     31|}
zend_string.c:zend_string_alloc:
  181|  7.38k|{
  182|  7.38k|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|  7.38k|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|  6.75k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.75k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|  6.75k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.75k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|    630|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    630|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    630|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    630|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    630|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 6.75k, False: 630]
  |  |  ------------------
  ------------------
  183|       |
  184|  7.38k|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|  7.38k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|  7.38k|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|  7.38k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|  7.38k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  7.38k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  7.38k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  7.38k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|  6.75k|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|  6.75k|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  7.38k|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 6.75k, False: 630]
  ------------------
  186|  7.38k|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|  7.38k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|  7.38k|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  7.38k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|  7.38k|	return ret;
  189|  7.38k|}
zend_variables.c:ZSTR_IS_INTERNED:
   74|   154k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|   154k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|   154k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|   154k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|   154k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|   154k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|   154k|}
zend_variables.c:zend_string_dup:
  231|     19|{
  232|     19|	if (ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (232:6): [True: 0, False: 19]
  ------------------
  233|      0|		return s;
  234|     19|	} else {
  235|     19|		return zend_string_init(ZSTR_VAL(s), ZSTR_LEN(s), persistent);
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		return zend_string_init(ZSTR_VAL(s), ZSTR_LEN(s), persistent);
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  236|     19|	}
  237|     19|}
zend_variables.c:zend_string_init:
  203|     19|{
  204|     19|	zend_string *ret = zend_string_alloc(len, persistent);
  205|       |
  206|     19|	memcpy(ZSTR_VAL(ret), str, len);
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  207|     19|	ZSTR_VAL(ret)[len] = '\0';
  ------------------
  |  |   67|     19|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  208|     19|	return ret;
  209|     19|}
zend_variables.c:zend_string_alloc:
  181|     19|{
  182|     19|	zend_string *ret = (zend_string *)pemalloc(ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  188|     19|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|     19|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     19|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     19|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     19|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     19|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  183|       |
  184|     19|	GC_SET_REFCOUNT(ret, 1);
  ------------------
  |  |  717|     19|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  185|     19|	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|     19|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  806|     19|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|     19|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     19|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     19|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  839|      0|#define IS_STR_PERSISTENT			GC_PERSISTENT /* allocated using malloc */
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(ret) = GC_STRING | ((persistent ? IS_STR_PERSISTENT : 0) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     19|#define GC_FLAGS_SHIFT				0
  ------------------
  |  Branch (185:36): [True: 0, False: 19]
  ------------------
  186|     19|	ZSTR_H(ret) = 0;
  ------------------
  |  |   69|     19|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  187|     19|	ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  188|     19|	return ret;
  189|     19|}
zend_weakrefs.c:ZSTR_KNOWN:
  114|      6|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|      6|	return zend_known_strings[idx];
  116|      6|}
zend.c:zend_string_realloc:
  253|  61.3k|{
  254|  61.3k|	zend_string *ret;
  255|       |
  256|  61.3k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (256:6): [True: 61.3k, False: 0]
  ------------------
  257|  61.3k|		if (EXPECTED(GC_REFCOUNT(s) == 1)) {
  ------------------
  |  |  456|  61.3k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 61.3k, False: 0]
  |  |  ------------------
  ------------------
  258|  61.3k|			ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent);
  ------------------
  |  |  200|  61.3k|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|  61.3k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  61.3k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  61.3k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  61.3k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  61.3k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 61.3k]
  |  |  ------------------
  ------------------
  259|  61.3k|			ZSTR_LEN(ret) = len;
  ------------------
  |  |   68|  61.3k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  260|  61.3k|			zend_string_forget_hash_val(ret);
  261|  61.3k|			return ret;
  262|  61.3k|		}
  263|  61.3k|	}
  264|      0|	ret = zend_string_alloc(len, persistent);
  265|      0|	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(ret), ZSTR_VAL(s), MIN(len, ZSTR_LEN(s)) + 1);
  ------------------
  |  |  518|      0|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (518:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (266:6): [True: 0, False: 0]
  ------------------
  267|      0|		GC_DELREF(s);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  268|      0|	}
  269|      0|	return ret;
  270|  61.3k|}
zend.c:zend_string_forget_hash_val:
  151|  61.3k|{
  152|  61.3k|	ZSTR_H(s) = 0;
  ------------------
  |  |   69|  61.3k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  153|  61.3k|	GC_DEL_FLAGS(s, IS_STR_VALID_UTF8);
  ------------------
  |  |  783|  61.3k|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|  61.3k|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|  61.3k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|  61.3k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|  61.3k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 61.3k]
  |  |  ------------------
  ------------------
  154|  61.3k|}
zend.c:ZSTR_IS_INTERNED:
   74|   116k|static zend_always_inline bool ZSTR_IS_INTERNED(const zend_string *s) {
   75|   116k|	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  777|   116k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|   116k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	return GC_FLAGS(s) & IS_STR_INTERNED;
  ------------------
  |  |  838|   116k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|   116k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
   76|   116k|}
zend.c:zend_string_release_ex:
  360|     64|{
  361|     64|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (361:6): [True: 48, False: 16]
  ------------------
  362|     48|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|     48|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (362:7): [True: 41, False: 7]
  ------------------
  363|     41|			if (persistent) {
  ------------------
  |  Branch (363:8): [True: 0, False: 41]
  ------------------
  364|      0|				ZEND_ASSERT(GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (364:5): [True: 0, False: 0]
  |  Branch (364:5): [True: 0, False: 0]
  ------------------
  365|      0|				free(s);
  366|     41|			} else {
  367|     41|				ZEND_ASSERT(!(GC_FLAGS(s) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     41|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (367:5): [True: 0, False: 41]
  |  Branch (367:5): [True: 41, False: 0]
  ------------------
  368|     41|				efree(s);
  ------------------
  |  |  154|     41|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     41|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     41|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     41|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     41|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|     41|			}
  370|     41|		}
  371|     48|	}
  372|     64|}
zend.c:zend_string_copy:
  223|  1.49k|{
  224|  1.49k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (224:6): [True: 1.49k, False: 2]
  ------------------
  225|  1.49k|		GC_ADDREF(s);
  ------------------
  |  |  718|  1.49k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  226|  1.49k|	}
  227|  1.49k|	return s;
  228|  1.49k|}
zend.c:zend_string_release:
  351|  51.5k|{
  352|  51.5k|	if (!ZSTR_IS_INTERNED(s)) {
  ------------------
  |  Branch (352:6): [True: 51.5k, False: 2]
  ------------------
  353|  51.5k|		if (GC_DELREF(s) == 0) {
  ------------------
  |  |  719|  51.5k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (353:7): [True: 39, False: 51.4k]
  ------------------
  354|       |			pefree(s, GC_FLAGS(s) & IS_STR_PERSISTENT);
  ------------------
  |  |  190|     39|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     39|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     39|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     39|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     39|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     39|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 39]
  |  |  ------------------
  ------------------
  355|     39|		}
  356|  51.5k|	}
  357|  51.5k|}
zend.c:zend_string_equals:
  396|      2|{
  397|      2|	return s1 == s2 || zend_string_equal_content(s1, s2);
  ------------------
  |  Branch (397:9): [True: 2, False: 0]
  |  Branch (397:21): [True: 0, False: 0]
  ------------------
  398|      2|}
zend.c:ZSTR_KNOWN:
  114|    700|static zend_always_inline zend_string *ZSTR_KNOWN(size_t idx) {
  115|    700|	return zend_known_strings[idx];
  116|    700|}

zend_strtod:
 2523|  3.01k|{
 2524|  3.01k|	int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1;
 2525|  3.01k|	int esign, i, j, k, nd, nd0, nf, nz, nz0, nz1, sign;
 2526|  3.01k|	CONST char *s, *s0, *s1;
  ------------------
  |  |  307|  3.01k|#define CONST const
  ------------------
 2527|  3.01k|	volatile double aadj, aadj1;
 2528|  3.01k|	Long L;
  ------------------
  |  |  195|  3.01k|#define Long int32_t
  ------------------
 2529|  3.01k|	U aadj2, adj, rv, rv0;
 2530|  3.01k|	ULong y, z;
  ------------------
  |  |  198|  3.01k|#define ULong uint32_t
  ------------------
 2531|  3.01k|	BCinfo bc;
 2532|  3.01k|	Bigint *bb, *bb1, *bd, *bd0, *bs, *delta;
  ------------------
  |  |  206|  3.01k|#define Bigint      _zend_strtod_bigint
  ------------------
 2533|  3.01k|#ifdef Avoid_Underflow
 2534|  3.01k|	ULong Lsb, Lsb1;
  ------------------
  |  |  198|  3.01k|#define ULong uint32_t
  ------------------
 2535|  3.01k|#endif
 2536|       |#ifdef SET_INEXACT
 2537|       |	int oldinexact;
 2538|       |#endif
 2539|  3.01k|#ifndef NO_STRTOD_BIGCOMP
 2540|  3.01k|	int req_bigcomp = 0;
 2541|  3.01k|#endif
 2542|       |#ifdef Honor_FLT_ROUNDS /*{*/
 2543|       |#ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */
 2544|       |	bc.rounding = Flt_Rounds;
 2545|       |#else /*}{*/
 2546|       |	bc.rounding = 1;
 2547|       |	switch(fegetround()) {
 2548|       |	  case FE_TOWARDZERO:	bc.rounding = 0; break;
 2549|       |	  case FE_UPWARD:	bc.rounding = 2; break;
 2550|       |	  case FE_DOWNWARD:	bc.rounding = 3;
 2551|       |	  }
 2552|       |#endif /*}}*/
 2553|       |#endif /*}*/
 2554|       |#ifdef USE_LOCALE
 2555|       |	CONST char *s2;
 2556|       |#endif
 2557|       |
 2558|  3.01k|	sign = nz0 = nz1 = nz = bc.dplen = bc.uflchk = 0;
 2559|  3.01k|	dval(&rv) = 0.;
  ------------------
  |  |  324|  3.01k|#define dval(x) (x)->d
  ------------------
 2560|  3.01k|	for(s = s00;;s++) switch(*s) {
 2561|    346|		case '-':
  ------------------
  |  Branch (2561:3): [True: 346, False: 2.66k]
  ------------------
 2562|    346|			sign = 1;
 2563|    346|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|    346|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2564|    346|		case '+':
  ------------------
  |  Branch (2564:3): [True: 0, False: 3.01k]
  ------------------
 2565|    346|			if (*++s)
  ------------------
  |  Branch (2565:8): [True: 346, False: 0]
  ------------------
 2566|    346|				goto break2;
 2567|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2568|      2|		case 0:
  ------------------
  |  Branch (2568:3): [True: 2, False: 3.01k]
  ------------------
 2569|      2|			goto ret0;
 2570|      0|		case '\t':
  ------------------
  |  Branch (2570:3): [True: 0, False: 3.01k]
  ------------------
 2571|      0|		case '\n':
  ------------------
  |  Branch (2571:3): [True: 0, False: 3.01k]
  ------------------
 2572|      0|		case '\v':
  ------------------
  |  Branch (2572:3): [True: 0, False: 3.01k]
  ------------------
 2573|      0|		case '\f':
  ------------------
  |  Branch (2573:3): [True: 0, False: 3.01k]
  ------------------
 2574|      0|		case '\r':
  ------------------
  |  Branch (2574:3): [True: 0, False: 3.01k]
  ------------------
 2575|      0|		case ' ':
  ------------------
  |  Branch (2575:3): [True: 0, False: 3.01k]
  ------------------
 2576|      0|			continue;
 2577|  2.66k|		default:
  ------------------
  |  Branch (2577:3): [True: 2.66k, False: 348]
  ------------------
 2578|  2.66k|			goto break2;
 2579|  3.01k|		}
 2580|  3.01k| break2:
 2581|  3.01k|	if (*s == '0') {
  ------------------
  |  Branch (2581:6): [True: 398, False: 2.61k]
  ------------------
 2582|       |#ifndef NO_HEX_FP /*{*/
 2583|       |		switch(s[1]) {
 2584|       |		  case 'x':
 2585|       |		  case 'X':
 2586|       |#ifdef Honor_FLT_ROUNDS
 2587|       |			gethex(&s, &rv, bc.rounding, sign);
 2588|       |#else
 2589|       |			gethex(&s, &rv, 1, sign);
 2590|       |#endif
 2591|       |			goto ret;
 2592|       |		  }
 2593|       |#endif /*}*/
 2594|    398|		nz0 = 1;
 2595|    527|		while(*++s == '0') ;
  ------------------
  |  Branch (2595:9): [True: 129, False: 398]
  ------------------
 2596|    398|		if (!*s)
  ------------------
  |  Branch (2596:7): [True: 2, False: 396]
  ------------------
 2597|      2|			goto ret;
 2598|    398|		}
 2599|  3.00k|	s0 = s;
 2600|  3.00k|	y = z = 0;
 2601|  71.7k|	for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++)
  ------------------
  |  Branch (2601:19): [True: 68.9k, False: 2.75k]
  |  Branch (2601:38): [True: 68.7k, False: 258]
  ------------------
 2602|  68.7k|		if (nd < 9)
  ------------------
  |  Branch (2602:7): [True: 10.4k, False: 58.2k]
  ------------------
 2603|  10.4k|			y = 10*y + c - '0';
 2604|  58.2k|		else if (nd < DBL_DIG + 2)
  ------------------
  |  Branch (2604:12): [True: 5.78k, False: 52.4k]
  ------------------
 2605|  5.78k|			z = 10*z + c - '0';
 2606|  3.00k|	nd0 = nd;
 2607|  3.00k|	bc.dp0 = bc.dp1 = s - s0;
 2608|  3.31k|	for(s1 = s; s1 > s0 && *--s1 == '0'; )
  ------------------
  |  Branch (2608:14): [True: 2.44k, False: 870]
  |  Branch (2608:25): [True: 306, False: 2.13k]
  ------------------
 2609|    306|		++nz1;
 2610|       |#ifdef USE_LOCALE
 2611|       |	s1 = localeconv()->decimal_point;
 2612|       |	if (c == *s1) {
 2613|       |		c = '.';
 2614|       |		if (*++s1) {
 2615|       |			s2 = s;
 2616|       |			for(;;) {
 2617|       |				if (*++s2 != *s1) {
 2618|       |					c = 0;
 2619|       |					break;
 2620|       |					}
 2621|       |				if (!*++s1) {
 2622|       |					s = s2;
 2623|       |					break;
 2624|       |					}
 2625|       |				}
 2626|       |			}
 2627|       |		}
 2628|       |#endif
 2629|  3.00k|	if (c == '.') {
  ------------------
  |  Branch (2629:6): [True: 2.14k, False: 861]
  ------------------
 2630|  2.14k|		c = *++s;
 2631|  2.14k|		bc.dp1 = s - s0;
 2632|  2.14k|		bc.dplen = bc.dp1 - bc.dp0;
 2633|  2.14k|		if (!nd) {
  ------------------
  |  Branch (2633:7): [True: 847, False: 1.30k]
  ------------------
 2634|  1.23k|			for(; c == '0'; c = *++s)
  ------------------
  |  Branch (2634:10): [True: 388, False: 847]
  ------------------
 2635|    388|				nz++;
 2636|    847|			if (c > '0' && c <= '9') {
  ------------------
  |  Branch (2636:8): [True: 680, False: 167]
  |  Branch (2636:19): [True: 651, False: 29]
  ------------------
 2637|    651|				bc.dp0 = s0 - s;
 2638|    651|				bc.dp1 = bc.dp0 + bc.dplen;
 2639|    651|				s0 = s;
 2640|    651|				nf += nz;
 2641|    651|				nz = 0;
 2642|    651|				goto have_dig;
 2643|    651|				}
 2644|    196|			goto dig_done;
 2645|    847|			}
 2646|  13.1k|		for(; c >= '0' && c <= '9'; c = *++s) {
  ------------------
  |  Branch (2646:9): [True: 11.8k, False: 1.24k]
  |  Branch (2646:21): [True: 11.1k, False: 705]
  ------------------
 2647|  11.8k| have_dig:
 2648|  11.8k|			nz++;
 2649|  11.8k|			if (c -= '0') {
  ------------------
  |  Branch (2649:8): [True: 9.99k, False: 1.84k]
  ------------------
 2650|  9.99k|				nf += nz;
 2651|  11.4k|				for(i = 1; i < nz; i++)
  ------------------
  |  Branch (2651:16): [True: 1.50k, False: 9.99k]
  ------------------
 2652|  1.50k|					if (nd++ < 9)
  ------------------
  |  Branch (2652:10): [True: 815, False: 692]
  ------------------
 2653|    815|						y *= 10;
 2654|    692|					else if (nd <= DBL_DIG + 2)
  ------------------
  |  Branch (2654:15): [True: 479, False: 213]
  ------------------
 2655|    479|						z *= 10;
 2656|  9.99k|				if (nd++ < 9)
  ------------------
  |  Branch (2656:9): [True: 5.92k, False: 4.06k]
  ------------------
 2657|  5.92k|					y = 10*y + c;
 2658|  4.06k|				else if (nd <= DBL_DIG + 2)
  ------------------
  |  Branch (2658:14): [True: 3.50k, False: 566]
  ------------------
 2659|  3.50k|					z = 10*z + c;
 2660|  9.99k|				nz = nz1 = 0;
 2661|  9.99k|				}
 2662|  11.8k|			}
 2663|  1.30k|		}
 2664|  3.00k| dig_done:
 2665|  3.00k| 	if (nd < 0) {
  ------------------
  |  Branch (2665:7): [True: 0, False: 3.00k]
  ------------------
 2666|       | 		/* overflow */
 2667|      0| 		nd = DBL_DIG + 2;
 2668|      0| 	}
 2669|  3.00k| 	if (nf < 0) {
  ------------------
  |  Branch (2669:7): [True: 0, False: 3.00k]
  ------------------
 2670|       | 		/* overflow */
 2671|      0| 		nf = DBL_DIG + 2;
 2672|      0| 	}
 2673|  3.00k|	e = 0;
 2674|  3.00k|	if (c == 'e' || c == 'E') {
  ------------------
  |  Branch (2674:6): [True: 97, False: 2.91k]
  |  Branch (2674:18): [True: 613, False: 2.29k]
  ------------------
 2675|    710|		if (!nd && !nz && !nz0) {
  ------------------
  |  Branch (2675:7): [True: 12, False: 698]
  |  Branch (2675:14): [True: 10, False: 2]
  |  Branch (2675:21): [True: 0, False: 10]
  ------------------
 2676|      0|			goto ret0;
 2677|      0|			}
 2678|    710|		s00 = s;
 2679|    710|		esign = 0;
 2680|    710|		switch(c = *++s) {
  ------------------
  |  Branch (2680:10): [True: 546, False: 164]
  ------------------
 2681|     55|			case '-':
  ------------------
  |  Branch (2681:4): [True: 55, False: 655]
  ------------------
 2682|     55|				esign = 1;
 2683|     55|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     55|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 2684|    546|			case '+':
  ------------------
  |  Branch (2684:4): [True: 491, False: 219]
  ------------------
 2685|    546|				c = *++s;
 2686|    710|			}
 2687|    710|		if (c >= '0' && c <= '9') {
  ------------------
  |  Branch (2687:7): [True: 706, False: 4]
  |  Branch (2687:19): [True: 703, False: 3]
  ------------------
 2688|    869|			while(c == '0')
  ------------------
  |  Branch (2688:10): [True: 166, False: 703]
  ------------------
 2689|    166|				c = *++s;
 2690|    703|			if (c > '0' && c <= '9') {
  ------------------
  |  Branch (2690:8): [True: 676, False: 27]
  |  Branch (2690:19): [True: 647, False: 29]
  ------------------
 2691|    647|				L = c - '0';
 2692|    647|				s1 = s;
 2693|  1.74k|				while((c = *++s) >= '0' && c <= '9')
  ------------------
  |  Branch (2693:11): [True: 1.30k, False: 440]
  |  Branch (2693:32): [True: 1.09k, False: 207]
  ------------------
 2694|  1.09k|					L = (Long) (10*(ULong)L + (c - '0'));
 2695|    647|				if (s - s1 > 8 || L > 19999)
  ------------------
  |  Branch (2695:9): [True: 5, False: 642]
  |  Branch (2695:23): [True: 7, False: 635]
  ------------------
 2696|       |					/* Avoid confusion from exponents
 2697|       |					 * so large that e might overflow.
 2698|       |					 */
 2699|     12|					e = 19999; /* safe for 16 bit ints */
 2700|    635|				else
 2701|    635|					e = (int)L;
 2702|    647|				if (esign)
  ------------------
  |  Branch (2702:9): [True: 53, False: 594]
  ------------------
 2703|     53|					e = -e;
 2704|    647|				}
 2705|     56|			else
 2706|     56|				e = 0;
 2707|    703|			}
 2708|      7|		else
 2709|      7|			s = s00;
 2710|    710|		}
 2711|  3.00k|	if (!nd) {
  ------------------
  |  Branch (2711:6): [True: 219, False: 2.78k]
  ------------------
 2712|    219|		if (!nz && !nz0) {
  ------------------
  |  Branch (2712:7): [True: 34, False: 185]
  |  Branch (2712:14): [True: 13, False: 21]
  ------------------
 2713|       |#ifdef INFNAN_CHECK
 2714|       |			/* Check for Nan and Infinity */
 2715|       |			if (!bc.dplen)
 2716|       |			 switch(c) {
 2717|       |			  case 'i':
 2718|       |			  case 'I':
 2719|       |				if (match(&s,"nf")) {
 2720|       |					--s;
 2721|       |					if (!match(&s,"inity"))
 2722|       |						++s;
 2723|       |					word0(&rv) = 0x7ff00000;
 2724|       |					word1(&rv) = 0;
 2725|       |					goto ret;
 2726|       |					}
 2727|       |				break;
 2728|       |			  case 'n':
 2729|       |			  case 'N':
 2730|       |				if (match(&s, "an")) {
 2731|       |					word0(&rv) = NAN_WORD0;
 2732|       |					word1(&rv) = NAN_WORD1;
 2733|       |#ifndef No_Hex_NaN
 2734|       |					if (*s == '(') /*)*/
 2735|       |						hexnan(&rv, &s);
 2736|       |#endif
 2737|       |					goto ret;
 2738|       |					}
 2739|       |			  }
 2740|       |#endif /* INFNAN_CHECK */
 2741|     15| ret0:
 2742|     15|			s = s00;
 2743|     15|			sign = 0;
 2744|     15|			}
 2745|    221|		goto ret;
 2746|    219|		}
 2747|  2.78k|	bc.e0 = e1 = e -= nf;
 2748|       |
 2749|       |	/* Now we have nd0 digits, starting at s0, followed by a
 2750|       |	 * decimal point, followed by nd-nd0 digits.  The number we're
 2751|       |	 * after is the integer represented by those digits times
 2752|       |	 * 10**e */
 2753|       |
 2754|  2.78k|	if (!nd0)
  ------------------
  |  Branch (2754:6): [True: 651, False: 2.13k]
  ------------------
 2755|    651|		nd0 = nd;
 2756|  2.78k|	k = nd < DBL_DIG + 2 ? nd : DBL_DIG + 2;
  ------------------
  |  Branch (2756:6): [True: 1.97k, False: 816]
  ------------------
 2757|  2.78k|	dval(&rv) = y;
  ------------------
  |  |  324|  2.78k|#define dval(x) (x)->d
  ------------------
 2758|  2.78k|	if (k > 9) {
  ------------------
  |  Branch (2758:6): [True: 1.53k, False: 1.25k]
  ------------------
 2759|       |#ifdef SET_INEXACT
 2760|       |		if (k > DBL_DIG)
 2761|       |			oldinexact = get_inexact();
 2762|       |#endif
 2763|  1.53k|		dval(&rv) = tens[k - 9] * dval(&rv) + z;
  ------------------
  |  |  324|  1.53k|#define dval(x) (x)->d
  ------------------
              		dval(&rv) = tens[k - 9] * dval(&rv) + z;
  ------------------
  |  |  324|  1.53k|#define dval(x) (x)->d
  ------------------
 2764|  1.53k|		}
 2765|  2.78k|	bd0 = 0;
 2766|  2.78k|	if (nd <= DBL_DIG
  ------------------
  |  Branch (2766:6): [True: 1.96k, False: 820]
  ------------------
 2767|  1.96k|#ifndef RND_PRODQUOT
 2768|  1.96k|#ifndef Honor_FLT_ROUNDS
 2769|  1.96k|		&& Flt_Rounds == 1
  ------------------
  |  |  390|  1.96k|#define Flt_Rounds FLT_ROUNDS
  ------------------
  |  Branch (2769:6): [True: 1.96k, False: 0]
  ------------------
 2770|  2.78k|#endif
 2771|  2.78k|#endif
 2772|  2.78k|			) {
 2773|  1.96k|		if (!e)
  ------------------
  |  Branch (2773:7): [True: 172, False: 1.79k]
  ------------------
 2774|    172|			goto ret;
 2775|  1.79k|#ifndef ROUND_BIASED_without_Round_Up
 2776|  1.79k|		if (e > 0) {
  ------------------
  |  Branch (2776:7): [True: 581, False: 1.21k]
  ------------------
 2777|    581|			if (e <= Ten_pmax) {
  ------------------
  |  |  370|    581|#define Ten_pmax 22
  ------------------
  |  Branch (2777:8): [True: 239, False: 342]
  ------------------
 2778|       |#ifdef VAX
 2779|       |				goto vax_ovfl_check;
 2780|       |#else
 2781|       |#ifdef Honor_FLT_ROUNDS
 2782|       |				/* round correctly FLT_ROUNDS = 2 or 3 */
 2783|       |				if (sign) {
 2784|       |					rv.d = -rv.d;
 2785|       |					sign = 0;
 2786|       |					}
 2787|       |#endif
 2788|    239|				/* rv = */ rounded_product(dval(&rv), tens[e]);
  ------------------
  |  |  488|    239|#define rounded_product(a,b) a *= b
  ------------------
 2789|    239|				goto ret;
 2790|    239|#endif
 2791|    239|				}
 2792|    342|			i = DBL_DIG - nd;
 2793|    342|			if (e <= Ten_pmax + i) {
  ------------------
  |  |  370|    342|#define Ten_pmax 22
  ------------------
  |  Branch (2793:8): [True: 8, False: 334]
  ------------------
 2794|       |				/* A fancier test would sometimes let us do
 2795|       |				 * this for larger i values.
 2796|       |				 */
 2797|       |#ifdef Honor_FLT_ROUNDS
 2798|       |				/* round correctly FLT_ROUNDS = 2 or 3 */
 2799|       |				if (sign) {
 2800|       |					rv.d = -rv.d;
 2801|       |					sign = 0;
 2802|       |					}
 2803|       |#endif
 2804|      8|				e -= i;
 2805|      8|				dval(&rv) *= tens[i];
  ------------------
  |  |  324|      8|#define dval(x) (x)->d
  ------------------
 2806|       |#ifdef VAX
 2807|       |				/* VAX exponent range is so narrow we must
 2808|       |				 * worry about overflow here...
 2809|       |				 */
 2810|       | vax_ovfl_check:
 2811|       |				word0(&rv) -= P*Exp_msk1;
 2812|       |				/* rv = */ rounded_product(dval(&rv), tens[e]);
 2813|       |				if ((word0(&rv) & Exp_mask)
 2814|       |				 > Exp_msk1*(DBL_MAX_EXP+Bias-1-P))
 2815|       |					goto ovfl;
 2816|       |				word0(&rv) += P*Exp_msk1;
 2817|       |#else
 2818|      8|				/* rv = */ rounded_product(dval(&rv), tens[e]);
  ------------------
  |  |  488|      8|#define rounded_product(a,b) a *= b
  ------------------
 2819|      8|#endif
 2820|      8|				goto ret;
 2821|      8|				}
 2822|    342|			}
 2823|  1.21k|#ifndef Inaccurate_Divide
 2824|  1.21k|		else if (e >= -Ten_pmax) {
  ------------------
  |  |  370|  1.21k|#define Ten_pmax 22
  ------------------
  |  Branch (2824:12): [True: 1.17k, False: 40]
  ------------------
 2825|       |#ifdef Honor_FLT_ROUNDS
 2826|       |			/* round correctly FLT_ROUNDS = 2 or 3 */
 2827|       |			if (sign) {
 2828|       |				rv.d = -rv.d;
 2829|       |				sign = 0;
 2830|       |				}
 2831|       |#endif
 2832|  1.17k|			/* rv = */ rounded_quotient(dval(&rv), tens[-e]);
  ------------------
  |  |  489|  1.17k|#define rounded_quotient(a,b) a /= b
  ------------------
 2833|  1.17k|			goto ret;
 2834|  1.17k|			}
 2835|  1.79k|#endif
 2836|  1.79k|#endif /* ROUND_BIASED_without_Round_Up */
 2837|  1.79k|		}
 2838|  1.19k|	e1 += nd - k;
 2839|       |
 2840|  1.19k|#ifdef IEEE_Arith
 2841|       |#ifdef SET_INEXACT
 2842|       |	bc.inexact = 1;
 2843|       |	if (k <= DBL_DIG)
 2844|       |		oldinexact = get_inexact();
 2845|       |#endif
 2846|  1.19k|#ifdef Avoid_Underflow
 2847|  1.19k|	bc.scale = 0;
 2848|  1.19k|#endif
 2849|       |#ifdef Honor_FLT_ROUNDS
 2850|       |	if (bc.rounding >= 2) {
 2851|       |		if (sign)
 2852|       |			bc.rounding = bc.rounding == 2 ? 0 : 2;
 2853|       |		else
 2854|       |			if (bc.rounding != 2)
 2855|       |				bc.rounding = 0;
 2856|       |		}
 2857|       |#endif
 2858|  1.19k|#endif /*IEEE_Arith*/
 2859|       |
 2860|       |	/* Get starting approximation = rv * 10**e1 */
 2861|       |
 2862|  1.19k|	if (e1 > 0) {
  ------------------
  |  Branch (2862:6): [True: 1.01k, False: 180]
  ------------------
 2863|  1.01k|		if ((i = e1 & 15))
  ------------------
  |  Branch (2863:7): [True: 987, False: 27]
  ------------------
 2864|    987|			dval(&rv) *= tens[i];
  ------------------
  |  |  324|    987|#define dval(x) (x)->d
  ------------------
 2865|  1.01k|		if (e1 &= ~15) {
  ------------------
  |  Branch (2865:7): [True: 822, False: 192]
  ------------------
 2866|    822|			if (e1 > DBL_MAX_10_EXP) {
  ------------------
  |  Branch (2866:8): [True: 154, False: 668]
  ------------------
 2867|    168| ovfl:
 2868|       |				/* Can't trust HUGE_VAL */
 2869|    168|#ifdef IEEE_Arith
 2870|       |#ifdef Honor_FLT_ROUNDS
 2871|       |				switch(bc.rounding) {
 2872|       |				  case 0: /* toward 0 */
 2873|       |				  case 3: /* toward -infinity */
 2874|       |					word0(&rv) = Big0;
 2875|       |					word1(&rv) = Big1;
 2876|       |					break;
 2877|       |				  default:
 2878|       |					word0(&rv) = Exp_mask;
 2879|       |					word1(&rv) = 0;
 2880|       |				  }
 2881|       |#else /*Honor_FLT_ROUNDS*/
 2882|    168|				word0(&rv) = Exp_mask;
  ------------------
  |  |  318|    168|#define word0(x) (x)->L[1]
  ------------------
              				word0(&rv) = Exp_mask;
  ------------------
  |  |  359|    168|#define Exp_mask  0x7ff00000
  ------------------
 2883|    168|				word1(&rv) = 0;
  ------------------
  |  |  319|    168|#define word1(x) (x)->L[0]
  ------------------
 2884|    168|#endif /*Honor_FLT_ROUNDS*/
 2885|       |#ifdef SET_INEXACT
 2886|       |				/* set overflow bit */
 2887|       |				dval(&rv0) = 1e300;
 2888|       |				dval(&rv0) *= dval(&rv0);
 2889|       |#endif
 2890|       |#else /*IEEE_Arith*/
 2891|       |				word0(&rv) = Big0;
 2892|       |				word1(&rv) = Big1;
 2893|       |#endif /*IEEE_Arith*/
 2894|    171| range_err:
 2895|    171|				if (bd0) {
  ------------------
  |  Branch (2895:9): [True: 0, False: 171]
  ------------------
 2896|      0|					Bfree(bb);
 2897|      0|					Bfree(bd);
 2898|      0|					Bfree(bs);
 2899|      0|					Bfree(bd0);
 2900|      0|					Bfree(delta);
 2901|      0|					}
 2902|       |#ifndef NO_ERRNO
 2903|       |				errno = ERANGE;
 2904|       |#endif
 2905|    171|				goto ret;
 2906|    168|				}
 2907|    668|			e1 >>= 4;
 2908|  2.03k|			for(j = 0; e1 > 1; j++, e1 >>= 1)
  ------------------
  |  Branch (2908:15): [True: 1.36k, False: 668]
  ------------------
 2909|  1.36k|				if (e1 & 1)
  ------------------
  |  Branch (2909:9): [True: 478, False: 886]
  ------------------
 2910|    478|					dval(&rv) *= bigtens[j];
  ------------------
  |  |  324|    478|#define dval(x) (x)->d
  ------------------
 2911|       |		/* The last multiplication could overflow. */
 2912|    668|			word0(&rv) -= P*Exp_msk1;
  ------------------
  |  |  318|    668|#define word0(x) (x)->L[1]
  ------------------
              			word0(&rv) -= P*Exp_msk1;
  ------------------
  |  |  360|    668|#define P 53
  ------------------
              			word0(&rv) -= P*Exp_msk1;
  ------------------
  |  |  357|    668|#define Exp_msk1    0x100000
  ------------------
 2913|    668|			dval(&rv) *= bigtens[j];
  ------------------
  |  |  324|    668|#define dval(x) (x)->d
  ------------------
 2914|    668|			if ((z = word0(&rv) & Exp_mask)
  ------------------
  |  |  318|    668|#define word0(x) (x)->L[1]
  ------------------
              			if ((z = word0(&rv) & Exp_mask)
  ------------------
  |  |  359|    668|#define Exp_mask  0x7ff00000
  ------------------
  |  Branch (2914:8): [True: 14, False: 654]
  ------------------
 2915|    668|			 > Exp_msk1*(DBL_MAX_EXP+Bias-P))
  ------------------
  |  |  357|    668|#define Exp_msk1    0x100000
  ------------------
              			 > Exp_msk1*(DBL_MAX_EXP+Bias-P))
  ------------------
  |  |  362|    668|#define Bias 1023
  ------------------
              			 > Exp_msk1*(DBL_MAX_EXP+Bias-P))
  ------------------
  |  |  360|    668|#define P 53
  ------------------
 2916|     14|				goto ovfl;
 2917|    654|			if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) {
  ------------------
  |  |  357|    654|#define Exp_msk1    0x100000
  ------------------
              			if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) {
  ------------------
  |  |  362|    654|#define Bias 1023
  ------------------
              			if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) {
  ------------------
  |  |  360|    654|#define P 53
  ------------------
  |  Branch (2917:8): [True: 0, False: 654]
  ------------------
 2918|       |				/* set to largest number */
 2919|       |				/* (Can't trust DBL_MAX) */
 2920|      0|				word0(&rv) = Big0;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				word0(&rv) = Big0;
  ------------------
  |  |  492|      0|#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  369|      0|#define Frac_mask1 0xfffff
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  357|      0|#define Exp_msk1    0x100000
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  362|      0|#define Bias 1023
  |  |  ------------------
  ------------------
 2921|      0|				word1(&rv) = Big1;
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
              				word1(&rv) = Big1;
  ------------------
  |  |  493|      0|#define Big1 0xffffffff
  ------------------
 2922|      0|				}
 2923|    654|			else
 2924|    654|				word0(&rv) += P*Exp_msk1;
  ------------------
  |  |  318|    654|#define word0(x) (x)->L[1]
  ------------------
              				word0(&rv) += P*Exp_msk1;
  ------------------
  |  |  360|    654|#define P 53
  ------------------
              				word0(&rv) += P*Exp_msk1;
  ------------------
  |  |  357|    654|#define Exp_msk1    0x100000
  ------------------
 2925|    654|			}
 2926|  1.01k|		}
 2927|    180|	else if (e1 < 0) {
  ------------------
  |  Branch (2927:11): [True: 177, False: 3]
  ------------------
 2928|    177|		e1 = -e1;
 2929|    177|		if ((i = e1 & 15))
  ------------------
  |  Branch (2929:7): [True: 169, False: 8]
  ------------------
 2930|    169|			dval(&rv) /= tens[i];
  ------------------
  |  |  324|    169|#define dval(x) (x)->d
  ------------------
 2931|    177|		if (e1 >>= 4) {
  ------------------
  |  Branch (2931:7): [True: 54, False: 123]
  ------------------
 2932|     54|			if (e1 >= 1 << n_bigtens)
  ------------------
  |  | 1500|     54|#define n_bigtens 5
  ------------------
  |  Branch (2932:8): [True: 3, False: 51]
  ------------------
 2933|      3|				goto undfl;
 2934|     51|#ifdef Avoid_Underflow
 2935|     51|			if (e1 & Scale_Bit)
  ------------------
  |  | 1499|     51|#define Scale_Bit 0x10
  ------------------
  |  Branch (2935:8): [True: 19, False: 32]
  ------------------
 2936|     19|				bc.scale = 2*P;
  ------------------
  |  |  360|     19|#define P 53
  ------------------
 2937|    213|			for(j = 0; e1 > 0; j++, e1 >>= 1)
  ------------------
  |  Branch (2937:15): [True: 162, False: 51]
  ------------------
 2938|    162|				if (e1 & 1)
  ------------------
  |  Branch (2938:9): [True: 87, False: 75]
  ------------------
 2939|     87|					dval(&rv) *= tinytens[j];
  ------------------
  |  |  324|     87|#define dval(x) (x)->d
  ------------------
 2940|     51|			if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
  ------------------
  |  |  360|     19|#define P 53
  ------------------
              			if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
  ------------------
  |  |  318|     19|#define word0(x) (x)->L[1]
  ------------------
              			if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
  ------------------
  |  |  359|     19|#define Exp_mask  0x7ff00000
  ------------------
  |  Branch (2940:8): [True: 19, False: 32]
  |  Branch (2940:20): [True: 9, False: 10]
  ------------------
 2941|     19|						>> Exp_shift)) > 0) {
  ------------------
  |  |  355|     19|#define Exp_shift  20
  ------------------
 2942|       |				/* scaled rv is denormal; clear j low bits */
 2943|      9|				if (j >= 32) {
  ------------------
  |  Branch (2943:9): [True: 2, False: 7]
  ------------------
 2944|      2|					if (j > 54)
  ------------------
  |  Branch (2944:10): [True: 0, False: 2]
  ------------------
 2945|      0|						goto undfl;
 2946|      2|					word1(&rv) = 0;
  ------------------
  |  |  319|      2|#define word1(x) (x)->L[0]
  ------------------
 2947|      2|					if (j >= 53)
  ------------------
  |  Branch (2947:10): [True: 0, False: 2]
  ------------------
 2948|      0|					 word0(&rv) = (P+2)*Exp_msk1;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              					 word0(&rv) = (P+2)*Exp_msk1;
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              					 word0(&rv) = (P+2)*Exp_msk1;
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
 2949|      2|					else
 2950|      2|					 word0(&rv) &= 0xffffffff << (j-32);
  ------------------
  |  |  318|      2|#define word0(x) (x)->L[1]
  ------------------
 2951|      2|					}
 2952|      7|				else
 2953|      7|					word1(&rv) &= 0xffffffff << j;
  ------------------
  |  |  319|      7|#define word1(x) (x)->L[0]
  ------------------
 2954|      9|				}
 2955|       |#else
 2956|       |			for(j = 0; e1 > 1; j++, e1 >>= 1)
 2957|       |				if (e1 & 1)
 2958|       |					dval(&rv) *= tinytens[j];
 2959|       |			/* The last multiplication could underflow. */
 2960|       |			dval(&rv0) = dval(&rv);
 2961|       |			dval(&rv) *= tinytens[j];
 2962|       |			if (!dval(&rv)) {
 2963|       |				dval(&rv) = 2.*dval(&rv0);
 2964|       |				dval(&rv) *= tinytens[j];
 2965|       |#endif
 2966|     51|				if (!dval(&rv)) {
  ------------------
  |  |  324|     51|#define dval(x) (x)->d
  ------------------
  |  Branch (2966:9): [True: 0, False: 51]
  ------------------
 2967|      3| undfl:
 2968|      3|					dval(&rv) = 0.;
  ------------------
  |  |  324|      3|#define dval(x) (x)->d
  ------------------
 2969|      3|					goto range_err;
 2970|      0|					}
 2971|       |#ifndef Avoid_Underflow
 2972|       |				word0(&rv) = Tiny0;
 2973|       |				word1(&rv) = Tiny1;
 2974|       |				/* The refinement below will clean
 2975|       |				 * this approximation up.
 2976|       |				 */
 2977|       |				}
 2978|       |#endif
 2979|     51|			}
 2980|    177|		}
 2981|       |
 2982|       |	/* Now the hard part -- adjusting rv to the correct value.*/
 2983|       |
 2984|       |	/* Put digits into bd: true value = bd * 10^e */
 2985|       |
 2986|  1.02k|	bc.nd = nd - nz1;
 2987|  1.02k|#ifndef NO_STRTOD_BIGCOMP
 2988|  1.02k|	bc.nd0 = nd0;	/* Only needed if nd > strtod_diglim, but done here */
 2989|       |			/* to silence an erroneous warning about bc.nd0 */
 2990|       |			/* possibly not being initialized. */
 2991|  1.02k|	if (nd > strtod_diglim) {
  ------------------
  |  |  333|  1.02k|#define strtod_diglim STRTOD_DIGLIM
  |  |  ------------------
  |  |  |  |  327|  1.02k|#define STRTOD_DIGLIM 40
  |  |  ------------------
  ------------------
  |  Branch (2991:6): [True: 394, False: 629]
  ------------------
 2992|       |		/* ASSERT(strtod_diglim >= 18); 18 == one more than the */
 2993|       |		/* minimum number of decimal digits to distinguish double values */
 2994|       |		/* in IEEE arithmetic. */
 2995|    394|		i = j = 18;
 2996|    394|		if (i > nd0)
  ------------------
  |  Branch (2996:7): [True: 6, False: 388]
  ------------------
 2997|      6|			j += bc.dplen;
 2998|    608|		for(;;) {
 2999|    608|			if (--j < bc.dp1 && j >= bc.dp0)
  ------------------
  |  Branch (2999:8): [True: 565, False: 43]
  |  Branch (2999:24): [True: 3, False: 562]
  ------------------
 3000|      3|				j = bc.dp0 - 1;
 3001|    608|			if (s0[j] != '0')
  ------------------
  |  Branch (3001:8): [True: 394, False: 214]
  ------------------
 3002|    394|				break;
 3003|    214|			--i;
 3004|    214|			}
 3005|    394|		e += nd - i;
 3006|    394|		nd = i;
 3007|    394|		if (nd0 > nd)
  ------------------
  |  Branch (3007:7): [True: 388, False: 6]
  ------------------
 3008|    388|			nd0 = nd;
 3009|    394|		if (nd < 9) { /* must recompute y */
  ------------------
  |  Branch (3009:7): [True: 13, False: 381]
  ------------------
 3010|     13|			y = 0;
 3011|     87|			for(i = 0; i < nd0; ++i)
  ------------------
  |  Branch (3011:15): [True: 74, False: 13]
  ------------------
 3012|     74|				y = 10*y + s0[i] - '0';
 3013|     16|			for(j = bc.dp1; i < nd; ++i)
  ------------------
  |  Branch (3013:20): [True: 3, False: 13]
  ------------------
 3014|      3|				y = 10*y + s0[j++] - '0';
 3015|     13|			}
 3016|    394|		}
 3017|  1.02k|#endif
 3018|  1.02k|	bd0 = s2b(s0, nd0, nd, y, bc.dplen);
 3019|       |
 3020|  1.25k|	for(;;) {
 3021|  1.25k|		bd = Balloc(bd0->k);
 3022|  1.25k|		Bcopy(bd, bd0);
  ------------------
  |  |  634|  1.25k|#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
  |  |  635|  1.25k|y->wds*sizeof(Long) + 2*sizeof(int))
  ------------------
 3023|  1.25k|		bb = d2b(&rv, &bbe, &bbbits);	/* rv = bb * 2^bbe */
 3024|  1.25k|		bs = i2b(1);
 3025|       |
 3026|  1.25k|		if (e >= 0) {
  ------------------
  |  Branch (3026:7): [True: 1.05k, False: 194]
  ------------------
 3027|  1.05k|			bb2 = bb5 = 0;
 3028|  1.05k|			bd2 = bd5 = e;
 3029|  1.05k|			}
 3030|    194|		else {
 3031|    194|			bb2 = bb5 = -e;
 3032|    194|			bd2 = bd5 = 0;
 3033|    194|			}
 3034|  1.25k|		if (bbe >= 0)
  ------------------
  |  Branch (3034:7): [True: 1.07k, False: 182]
  ------------------
 3035|  1.07k|			bb2 += bbe;
 3036|    182|		else
 3037|    182|			bd2 -= bbe;
 3038|  1.25k|		bs2 = bb2;
 3039|       |#ifdef Honor_FLT_ROUNDS
 3040|       |		if (bc.rounding != 1)
 3041|       |			bs2++;
 3042|       |#endif
 3043|  1.25k|#ifdef Avoid_Underflow
 3044|  1.25k|		Lsb = LSB;
  ------------------
  |  |  374|  1.25k|#define LSB 1
  ------------------
 3045|  1.25k|		Lsb1 = 0;
 3046|  1.25k|		j = bbe - bc.scale;
 3047|  1.25k|		i = j + bbbits - 1;	/* logb(rv) */
 3048|  1.25k|		j = P + 1 - bbbits;
  ------------------
  |  |  360|  1.25k|#define P 53
  ------------------
 3049|  1.25k|		if (i < Emin) {	/* denormal */
  ------------------
  |  |  364|  1.25k|#define Emin (-1022)
  ------------------
  |  Branch (3049:7): [True: 14, False: 1.23k]
  ------------------
 3050|     14|			i = Emin - i;
  ------------------
  |  |  364|     14|#define Emin (-1022)
  ------------------
 3051|     14|			j -= i;
 3052|     14|			if (i < 32)
  ------------------
  |  Branch (3052:8): [True: 12, False: 2]
  ------------------
 3053|     12|				Lsb <<= i;
 3054|      2|			else if (i < 52)
  ------------------
  |  Branch (3054:13): [True: 2, False: 0]
  ------------------
 3055|      2|				Lsb1 = Lsb << (i-32);
 3056|      0|			else
 3057|      0|				Lsb1 = Exp_mask;
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
 3058|     14|			}
 3059|       |#else /*Avoid_Underflow*/
 3060|       |#ifdef Sudden_Underflow
 3061|       |#ifdef IBM
 3062|       |		j = 1 + 4*P - 3 - bbbits + ((bbe + bbbits - 1) & 3);
 3063|       |#else
 3064|       |		j = P + 1 - bbbits;
 3065|       |#endif
 3066|       |#else /*Sudden_Underflow*/
 3067|       |		j = bbe;
 3068|       |		i = j + bbbits - 1;	/* logb(rv) */
 3069|       |		if (i < Emin)	/* denormal */
 3070|       |			j += P - Emin;
 3071|       |		else
 3072|       |			j = P + 1 - bbbits;
 3073|       |#endif /*Sudden_Underflow*/
 3074|       |#endif /*Avoid_Underflow*/
 3075|  1.25k|		bb2 += j;
 3076|  1.25k|		bd2 += j;
 3077|  1.25k|#ifdef Avoid_Underflow
 3078|  1.25k|		bd2 += bc.scale;
 3079|  1.25k|#endif
 3080|  1.25k|		i = bb2 < bd2 ? bb2 : bd2;
  ------------------
  |  Branch (3080:7): [True: 170, False: 1.08k]
  ------------------
 3081|  1.25k|		if (i > bs2)
  ------------------
  |  Branch (3081:7): [True: 185, False: 1.06k]
  ------------------
 3082|    185|			i = bs2;
 3083|  1.25k|		if (i > 0) {
  ------------------
  |  Branch (3083:7): [True: 1.24k, False: 4]
  ------------------
 3084|  1.24k|			bb2 -= i;
 3085|  1.24k|			bd2 -= i;
 3086|  1.24k|			bs2 -= i;
 3087|  1.24k|			}
 3088|  1.25k|		if (bb5 > 0) {
  ------------------
  |  Branch (3088:7): [True: 194, False: 1.05k]
  ------------------
 3089|    194|			bs = pow5mult(bs, bb5);
 3090|    194|			bb1 = mult(bs, bb);
 3091|    194|			Bfree(bb);
 3092|    194|			bb = bb1;
 3093|    194|			}
 3094|  1.25k|		if (bb2 > 0)
  ------------------
  |  Branch (3094:7): [True: 1.25k, False: 0]
  ------------------
 3095|  1.25k|			bb = lshift(bb, bb2);
 3096|  1.25k|		if (bd5 > 0)
  ------------------
  |  Branch (3096:7): [True: 816, False: 437]
  ------------------
 3097|    816|			bd = pow5mult(bd, bd5);
 3098|  1.25k|		if (bd2 > 0)
  ------------------
  |  Branch (3098:7): [True: 185, False: 1.06k]
  ------------------
 3099|    185|			bd = lshift(bd, bd2);
 3100|  1.25k|		if (bs2 > 0)
  ------------------
  |  Branch (3100:7): [True: 1.06k, False: 187]
  ------------------
 3101|  1.06k|			bs = lshift(bs, bs2);
 3102|  1.25k|		delta = diff(bb, bd);
 3103|  1.25k|		bc.dsign = delta->sign;
 3104|  1.25k|		delta->sign = 0;
 3105|  1.25k|		i = cmp(delta, bs);
 3106|  1.25k|#ifndef NO_STRTOD_BIGCOMP /*{*/
 3107|  1.25k|		if (bc.nd > nd && i <= 0) {
  ------------------
  |  Branch (3107:7): [True: 602, False: 651]
  |  Branch (3107:21): [True: 393, False: 209]
  ------------------
 3108|    393|			if (bc.dsign) {
  ------------------
  |  Branch (3108:8): [True: 182, False: 211]
  ------------------
 3109|       |				/* Must use bigcomp(). */
 3110|    182|				req_bigcomp = 1;
 3111|    182|				break;
 3112|    182|				}
 3113|       |#ifdef Honor_FLT_ROUNDS
 3114|       |			if (bc.rounding != 1) {
 3115|       |				if (i < 0) {
 3116|       |					req_bigcomp = 1;
 3117|       |					break;
 3118|       |					}
 3119|       |				}
 3120|       |			else
 3121|       |#endif
 3122|    211|				i = -1;	/* Discarded digits make delta smaller. */
 3123|    211|			}
 3124|  1.07k|#endif /*}*/
 3125|       |#ifdef Honor_FLT_ROUNDS /*{*/
 3126|       |		if (bc.rounding != 1) {
 3127|       |			if (i < 0) {
 3128|       |				/* Error is less than an ulp */
 3129|       |				if (!delta->x[0] && delta->wds <= 1) {
 3130|       |					/* exact */
 3131|       |#ifdef SET_INEXACT
 3132|       |					bc.inexact = 0;
 3133|       |#endif
 3134|       |					break;
 3135|       |					}
 3136|       |				if (bc.rounding) {
 3137|       |					if (bc.dsign) {
 3138|       |						adj.d = 1.;
 3139|       |						goto apply_adj;
 3140|       |						}
 3141|       |					}
 3142|       |				else if (!bc.dsign) {
 3143|       |					adj.d = -1.;
 3144|       |					if (!word1(&rv)
 3145|       |					 && !(word0(&rv) & Frac_mask)) {
 3146|       |						y = word0(&rv) & Exp_mask;
 3147|       |#ifdef Avoid_Underflow
 3148|       |						if (!bc.scale || y > 2*P*Exp_msk1)
 3149|       |#else
 3150|       |						if (y)
 3151|       |#endif
 3152|       |						  {
 3153|       |						  delta = lshift(delta,Log2P);
 3154|       |						  if (cmp(delta, bs) <= 0)
 3155|       |							adj.d = -0.5;
 3156|       |						  }
 3157|       |						}
 3158|       | apply_adj:
 3159|       |#ifdef Avoid_Underflow /*{*/
 3160|       |					if (bc.scale && (y = word0(&rv) & Exp_mask)
 3161|       |						<= 2*P*Exp_msk1)
 3162|       |					  word0(&adj) += (2*P+1)*Exp_msk1 - y;
 3163|       |#else
 3164|       |#ifdef Sudden_Underflow
 3165|       |					if ((word0(&rv) & Exp_mask) <=
 3166|       |							P*Exp_msk1) {
 3167|       |						word0(&rv) += P*Exp_msk1;
 3168|       |						dval(&rv) += adj.d*ulp(dval(&rv));
 3169|       |						word0(&rv) -= P*Exp_msk1;
 3170|       |						}
 3171|       |					else
 3172|       |#endif /*Sudden_Underflow*/
 3173|       |#endif /*Avoid_Underflow}*/
 3174|       |					dval(&rv) += adj.d*ulp(&rv);
 3175|       |					}
 3176|       |				break;
 3177|       |				}
 3178|       |			adj.d = ratio(delta, bs);
 3179|       |			if (adj.d < 1.)
 3180|       |				adj.d = 1.;
 3181|       |			if (adj.d <= 0x7ffffffe) {
 3182|       |				/* adj = rounding ? ceil(adj) : floor(adj); */
 3183|       |				y = adj.d;
 3184|       |				if (y != adj.d) {
 3185|       |					if (!((bc.rounding>>1) ^ bc.dsign))
 3186|       |						y++;
 3187|       |					adj.d = y;
 3188|       |					}
 3189|       |				}
 3190|       |#ifdef Avoid_Underflow /*{*/
 3191|       |			if (bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
 3192|       |				word0(&adj) += (2*P+1)*Exp_msk1 - y;
 3193|       |#else
 3194|       |#ifdef Sudden_Underflow
 3195|       |			if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) {
 3196|       |				word0(&rv) += P*Exp_msk1;
 3197|       |				adj.d *= ulp(dval(&rv));
 3198|       |				if (bc.dsign)
 3199|       |					dval(&rv) += adj.d;
 3200|       |				else
 3201|       |					dval(&rv) -= adj.d;
 3202|       |				word0(&rv) -= P*Exp_msk1;
 3203|       |				goto cont;
 3204|       |				}
 3205|       |#endif /*Sudden_Underflow*/
 3206|       |#endif /*Avoid_Underflow}*/
 3207|       |			adj.d *= ulp(&rv);
 3208|       |			if (bc.dsign) {
 3209|       |				if (word0(&rv) == Big0 && word1(&rv) == Big1)
 3210|       |					goto ovfl;
 3211|       |				dval(&rv) += adj.d;
 3212|       |				}
 3213|       |			else
 3214|       |				dval(&rv) -= adj.d;
 3215|       |			goto cont;
 3216|       |			}
 3217|       |#endif /*}Honor_FLT_ROUNDS*/
 3218|       |
 3219|  1.07k|		if (i < 0) {
  ------------------
  |  Branch (3219:7): [True: 668, False: 403]
  ------------------
 3220|       |			/* Error is less than half an ulp -- check for
 3221|       |			 * special case of mantissa a power of two.
 3222|       |			 */
 3223|    668|			if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
  ------------------
  |  |  319|  1.17k|#define word1(x) (x)->L[0]
  |  |  ------------------
  |  |  |  Branch (319:18): [True: 452, False: 51]
  |  |  ------------------
  ------------------
              			if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
  ------------------
  |  |  318|     51|#define word0(x) (x)->L[1]
  ------------------
              			if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask
  ------------------
  |  |  372|    719|#define Bndry_mask  0xfffff
  ------------------
  |  Branch (3223:8): [True: 165, False: 503]
  |  Branch (3223:34): [True: 10, False: 41]
  ------------------
 3224|     41|#ifdef IEEE_Arith /*{*/
 3225|     41|#ifdef Avoid_Underflow
 3226|     41|			 || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
  ------------------
  |  |  318|     41|#define word0(x) (x)->L[1]
  ------------------
              			 || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
  ------------------
  |  |  359|     41|#define Exp_mask  0x7ff00000
  ------------------
              			 || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
  ------------------
  |  |  360|     41|#define P 53
  ------------------
              			 || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
  ------------------
  |  |  357|     41|#define Exp_msk1    0x100000
  ------------------
  |  Branch (3226:8): [True: 1, False: 40]
  ------------------
 3227|       |#else
 3228|       |			 || (word0(&rv) & Exp_mask) <= Exp_msk1
 3229|       |#endif
 3230|    668|#endif /*}*/
 3231|    668|				) {
 3232|       |#ifdef SET_INEXACT
 3233|       |				if (!delta->x[0] && delta->wds <= 1)
 3234|       |					bc.inexact = 0;
 3235|       |#endif
 3236|    628|				break;
 3237|    628|				}
 3238|     40|			if (!delta->x[0] && delta->wds <= 1) {
  ------------------
  |  Branch (3238:8): [True: 17, False: 23]
  |  Branch (3238:24): [True: 17, False: 0]
  ------------------
 3239|       |				/* exact result */
 3240|       |#ifdef SET_INEXACT
 3241|       |				bc.inexact = 0;
 3242|       |#endif
 3243|     17|				break;
 3244|     17|				}
 3245|     23|			delta = lshift(delta,Log2P);
  ------------------
  |  |  376|     23|#define Log2P 1
  ------------------
 3246|     23|			if (cmp(delta, bs) > 0)
  ------------------
  |  Branch (3246:8): [True: 0, False: 23]
  ------------------
 3247|      0|				goto drop_down;
 3248|     23|			break;
 3249|     23|			}
 3250|    403|		if (i == 0) {
  ------------------
  |  Branch (3250:7): [True: 1, False: 402]
  ------------------
 3251|       |			/* exactly half-way between */
 3252|      1|			if (bc.dsign) {
  ------------------
  |  Branch (3252:8): [True: 0, False: 1]
  ------------------
 3253|      0|				if ((word0(&rv) & Bndry_mask1) == Bndry_mask1
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				if ((word0(&rv) & Bndry_mask1) == Bndry_mask1
  ------------------
  |  |  373|      0|#define Bndry_mask1 0xfffff
  ------------------
              				if ((word0(&rv) & Bndry_mask1) == Bndry_mask1
  ------------------
  |  |  373|      0|#define Bndry_mask1 0xfffff
  ------------------
  |  Branch (3253:9): [True: 0, False: 0]
  ------------------
 3254|      0|				 &&  word1(&rv) == (
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (3254:10): [True: 0, False: 0]
  ------------------
 3255|      0|#ifdef Avoid_Underflow
 3256|      0|			(bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              			(bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
              			(bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              			(bc.scale && (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1)
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
  |  Branch (3256:5): [True: 0, False: 0]
  |  Branch (3256:17): [True: 0, False: 0]
  ------------------
 3257|      0|		? (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) :
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              		? (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) :
  ------------------
  |  |  355|      0|#define Exp_shift  20
  ------------------
 3258|      0|#endif
 3259|      0|						   0xffffffff)) {
 3260|       |					/*boundary case -- increment exponent*/
 3261|      0|					if (word0(&rv) == Big0 && word1(&rv) == Big1)
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              					if (word0(&rv) == Big0 && word1(&rv) == Big1)
  ------------------
  |  |  492|      0|#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  369|      0|#define Frac_mask1 0xfffff
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  357|      0|#define Exp_msk1    0x100000
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  362|      0|#define Bias 1023
  |  |  ------------------
  ------------------
              					if (word0(&rv) == Big0 && word1(&rv) == Big1)
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
              					if (word0(&rv) == Big0 && word1(&rv) == Big1)
  ------------------
  |  |  493|      0|#define Big1 0xffffffff
  ------------------
  |  Branch (3261:10): [True: 0, False: 0]
  |  Branch (3261:32): [True: 0, False: 0]
  ------------------
 3262|      0|						goto ovfl;
 3263|      0|					word0(&rv) = (word0(&rv) & Exp_mask)
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              					word0(&rv) = (word0(&rv) & Exp_mask)
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              					word0(&rv) = (word0(&rv) & Exp_mask)
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
 3264|      0|						+ Exp_msk1
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
 3265|       |#ifdef IBM
 3266|       |						| Exp_msk1 >> 4
 3267|       |#endif
 3268|      0|						;
 3269|      0|					word1(&rv) = 0;
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
 3270|      0|#ifdef Avoid_Underflow
 3271|      0|					bc.dsign = 0;
 3272|      0|#endif
 3273|      0|					break;
 3274|      0|					}
 3275|      0|				}
 3276|      1|			else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) {
  ------------------
  |  |  318|      1|#define word0(x) (x)->L[1]
  ------------------
              			else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) {
  ------------------
  |  |  372|      1|#define Bndry_mask  0xfffff
  ------------------
              			else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) {
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (3276:13): [True: 0, False: 1]
  |  Branch (3276:43): [True: 0, False: 0]
  ------------------
 3277|      0| drop_down:
 3278|       |				/* boundary case -- decrement exponent */
 3279|       |#ifdef Sudden_Underflow /*{{*/
 3280|       |				L = word0(&rv) & Exp_mask;
 3281|       |#ifdef IBM
 3282|       |				if (L <  Exp_msk1)
 3283|       |#else
 3284|       |#ifdef Avoid_Underflow
 3285|       |				if (L <= (bc.scale ? (2*P+1)*Exp_msk1 : Exp_msk1))
 3286|       |#else
 3287|       |				if (L <= Exp_msk1)
 3288|       |#endif /*Avoid_Underflow*/
 3289|       |#endif /*IBM*/
 3290|       |					{
 3291|       |					if (bc.nd >nd) {
 3292|       |						bc.uflchk = 1;
 3293|       |						break;
 3294|       |						}
 3295|       |					goto undfl;
 3296|       |					}
 3297|       |				L -= Exp_msk1;
 3298|       |#else /*Sudden_Underflow}{*/
 3299|      0|#ifdef Avoid_Underflow
 3300|      0|				if (bc.scale) {
  ------------------
  |  Branch (3300:9): [True: 0, False: 0]
  ------------------
 3301|      0|					L = word0(&rv) & Exp_mask;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              					L = word0(&rv) & Exp_mask;
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
 3302|      0|					if (L <= (2*P+1)*Exp_msk1) {
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              					if (L <= (2*P+1)*Exp_msk1) {
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
  |  Branch (3302:10): [True: 0, False: 0]
  ------------------
 3303|      0|						if (L > (P+2)*Exp_msk1)
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              						if (L > (P+2)*Exp_msk1)
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
  |  Branch (3303:11): [True: 0, False: 0]
  ------------------
 3304|       |							/* round even ==> */
 3305|       |							/* accept rv */
 3306|      0|							break;
 3307|       |						/* rv = smallest denormal */
 3308|      0|						if (bc.nd >nd) {
  ------------------
  |  Branch (3308:11): [True: 0, False: 0]
  ------------------
 3309|      0|							bc.uflchk = 1;
 3310|      0|							break;
 3311|      0|							}
 3312|      0|						goto undfl;
 3313|      0|						}
 3314|      0|					}
 3315|      0|#endif /*Avoid_Underflow*/
 3316|      0|				L = (word0(&rv) & Exp_mask) - Exp_msk1;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				L = (word0(&rv) & Exp_mask) - Exp_msk1;
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
              				L = (word0(&rv) & Exp_mask) - Exp_msk1;
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
 3317|      0|#endif /*Sudden_Underflow}}*/
 3318|      0|				word0(&rv) = L | Bndry_mask1;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				word0(&rv) = L | Bndry_mask1;
  ------------------
  |  |  373|      0|#define Bndry_mask1 0xfffff
  ------------------
 3319|      0|				word1(&rv) = 0xffffffff;
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
 3320|       |#ifdef IBM
 3321|       |				goto cont;
 3322|       |#else
 3323|      0|#ifndef NO_STRTOD_BIGCOMP
 3324|      0|				if (bc.nd > nd)
  ------------------
  |  Branch (3324:9): [True: 0, False: 0]
  ------------------
 3325|      0|					goto cont;
 3326|      0|#endif
 3327|      0|				break;
 3328|      0|#endif
 3329|      0|				}
 3330|      1|#ifndef ROUND_BIASED
 3331|      1|#ifdef Avoid_Underflow
 3332|      1|			if (Lsb1) {
  ------------------
  |  Branch (3332:8): [True: 0, False: 1]
  ------------------
 3333|      0|				if (!(word0(&rv) & Lsb1))
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
  |  Branch (3333:9): [True: 0, False: 0]
  ------------------
 3334|      0|					break;
 3335|      0|				}
 3336|      1|			else if (!(word1(&rv) & Lsb))
  ------------------
  |  |  319|      1|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (3336:13): [True: 1, False: 0]
  ------------------
 3337|      1|				break;
 3338|       |#else
 3339|       |			if (!(word1(&rv) & LSB))
 3340|       |				break;
 3341|       |#endif
 3342|      0|#endif
 3343|      0|			if (bc.dsign)
  ------------------
  |  Branch (3343:8): [True: 0, False: 0]
  ------------------
 3344|      0|#ifdef Avoid_Underflow
 3345|      0|				dval(&rv) += sulp(&rv, &bc);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 3346|       |#else
 3347|       |				dval(&rv) += ulp(&rv);
 3348|       |#endif
 3349|      0|#ifndef ROUND_BIASED
 3350|      0|			else {
 3351|      0|#ifdef Avoid_Underflow
 3352|      0|				dval(&rv) -= sulp(&rv, &bc);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 3353|       |#else
 3354|       |				dval(&rv) -= ulp(&rv);
 3355|       |#endif
 3356|      0|#ifndef Sudden_Underflow
 3357|      0|				if (!dval(&rv)) {
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (3357:9): [True: 0, False: 0]
  ------------------
 3358|      0|					if (bc.nd >nd) {
  ------------------
  |  Branch (3358:10): [True: 0, False: 0]
  ------------------
 3359|      0|						bc.uflchk = 1;
 3360|      0|						break;
 3361|      0|						}
 3362|      0|					goto undfl;
 3363|      0|					}
 3364|      0|#endif
 3365|      0|				}
 3366|      0|#ifdef Avoid_Underflow
 3367|      0|			bc.dsign = 1 - bc.dsign;
 3368|      0|#endif
 3369|      0|#endif
 3370|      0|			break;
 3371|      0|			}
 3372|    402|		if ((aadj = ratio(delta, bs)) <= 2.) {
  ------------------
  |  Branch (3372:7): [True: 279, False: 123]
  ------------------
 3373|    279|			if (bc.dsign)
  ------------------
  |  Branch (3373:8): [True: 92, False: 187]
  ------------------
 3374|     92|				aadj = aadj1 = 1.;
 3375|    187|			else if (word1(&rv) || word0(&rv) & Bndry_mask) {
  ------------------
  |  |  319|    374|#define word1(x) (x)->L[0]
  |  |  ------------------
  |  |  |  Branch (319:18): [True: 187, False: 0]
  |  |  ------------------
  ------------------
              			else if (word1(&rv) || word0(&rv) & Bndry_mask) {
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              			else if (word1(&rv) || word0(&rv) & Bndry_mask) {
  ------------------
  |  |  372|      0|#define Bndry_mask  0xfffff
  ------------------
  |  Branch (3375:27): [True: 0, False: 0]
  ------------------
 3376|    187|#ifndef Sudden_Underflow
 3377|    187|				if (word1(&rv) == Tiny1 && !word0(&rv)) {
  ------------------
  |  |  319|    187|#define word1(x) (x)->L[0]
  ------------------
              				if (word1(&rv) == Tiny1 && !word0(&rv)) {
  ------------------
  |  |  378|    374|#define Tiny1 1
  ------------------
              				if (word1(&rv) == Tiny1 && !word0(&rv)) {
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
  |  Branch (3377:9): [True: 0, False: 187]
  |  Branch (3377:32): [True: 0, False: 0]
  ------------------
 3378|      0|					if (bc.nd >nd) {
  ------------------
  |  Branch (3378:10): [True: 0, False: 0]
  ------------------
 3379|      0|						bc.uflchk = 1;
 3380|      0|						break;
 3381|      0|						}
 3382|      0|					goto undfl;
 3383|      0|					}
 3384|    187|#endif
 3385|    187|				aadj = 1.;
 3386|    187|				aadj1 = -1.;
 3387|    187|				}
 3388|      0|			else {
 3389|       |				/* special case -- power of FLT_RADIX to be */
 3390|       |				/* rounded down... */
 3391|       |
 3392|      0|				if (aadj < 2./FLT_RADIX)
  ------------------
  |  Branch (3392:9): [True: 0, False: 0]
  ------------------
 3393|      0|					aadj = 1./FLT_RADIX;
 3394|      0|				else
 3395|      0|					aadj *= 0.5;
 3396|      0|				aadj1 = -aadj;
 3397|      0|				}
 3398|    279|			}
 3399|    123|		else {
 3400|    123|			aadj *= 0.5;
 3401|    123|			aadj1 = bc.dsign ? aadj : -aadj;
  ------------------
  |  Branch (3401:12): [True: 21, False: 102]
  ------------------
 3402|       |#ifdef Check_FLT_ROUNDS
 3403|       |			switch(bc.rounding) {
 3404|       |				case 2: /* towards +infinity */
 3405|       |					aadj1 -= 0.5;
 3406|       |					break;
 3407|       |				case 0: /* towards 0 */
 3408|       |				case 3: /* towards -infinity */
 3409|       |					aadj1 += 0.5;
 3410|       |				}
 3411|       |#else
 3412|    123|			if (Flt_Rounds == 0)
  ------------------
  |  |  390|    123|#define Flt_Rounds FLT_ROUNDS
  ------------------
  |  Branch (3412:8): [True: 0, False: 123]
  ------------------
 3413|      0|				aadj1 += 0.5;
 3414|    123|#endif /*Check_FLT_ROUNDS*/
 3415|    123|			}
 3416|    402|		y = word0(&rv) & Exp_mask;
  ------------------
  |  |  318|    402|#define word0(x) (x)->L[1]
  ------------------
              		y = word0(&rv) & Exp_mask;
  ------------------
  |  |  359|    402|#define Exp_mask  0x7ff00000
  ------------------
 3417|       |
 3418|       |		/* Check for overflow */
 3419|       |
 3420|    402|		if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) {
  ------------------
  |  |  357|    402|#define Exp_msk1    0x100000
  ------------------
              		if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) {
  ------------------
  |  |  362|    402|#define Bias 1023
  ------------------
  |  Branch (3420:7): [True: 0, False: 402]
  ------------------
 3421|      0|			dval(&rv0) = dval(&rv);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              			dval(&rv0) = dval(&rv);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 3422|      0|			word0(&rv) -= P*Exp_msk1;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              			word0(&rv) -= P*Exp_msk1;
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              			word0(&rv) -= P*Exp_msk1;
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
 3423|      0|			adj.d = aadj1 * ulp(&rv);
 3424|      0|			dval(&rv) += adj.d;
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 3425|      0|			if ((word0(&rv) & Exp_mask) >=
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              			if ((word0(&rv) & Exp_mask) >=
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
  |  Branch (3425:8): [True: 0, False: 0]
  ------------------
 3426|      0|					Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
              					Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
  ------------------
  |  |  362|      0|#define Bias 1023
  ------------------
              					Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
  ------------------
  |  |  360|      0|#define P 53
  ------------------
 3427|      0|				if (word0(&rv0) == Big0 && word1(&rv0) == Big1)
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				if (word0(&rv0) == Big0 && word1(&rv0) == Big1)
  ------------------
  |  |  492|      0|#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  369|      0|#define Frac_mask1 0xfffff
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  357|      0|#define Exp_msk1    0x100000
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  362|      0|#define Bias 1023
  |  |  ------------------
  ------------------
              				if (word0(&rv0) == Big0 && word1(&rv0) == Big1)
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
              				if (word0(&rv0) == Big0 && word1(&rv0) == Big1)
  ------------------
  |  |  493|      0|#define Big1 0xffffffff
  ------------------
  |  Branch (3427:9): [True: 0, False: 0]
  |  Branch (3427:32): [True: 0, False: 0]
  ------------------
 3428|      0|					goto ovfl;
 3429|      0|				word0(&rv) = Big0;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				word0(&rv) = Big0;
  ------------------
  |  |  492|      0|#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  369|      0|#define Frac_mask1 0xfffff
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  357|      0|#define Exp_msk1    0x100000
  |  |  ------------------
  |  |               #define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
  |  |  ------------------
  |  |  |  |  362|      0|#define Bias 1023
  |  |  ------------------
  ------------------
 3430|      0|				word1(&rv) = Big1;
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
              				word1(&rv) = Big1;
  ------------------
  |  |  493|      0|#define Big1 0xffffffff
  ------------------
 3431|      0|				goto cont;
 3432|      0|				}
 3433|      0|			else
 3434|      0|				word0(&rv) += P*Exp_msk1;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				word0(&rv) += P*Exp_msk1;
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              				word0(&rv) += P*Exp_msk1;
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
 3435|      0|			}
 3436|    402|		else {
 3437|    402|#ifdef Avoid_Underflow
 3438|    402|			if (bc.scale && y <= 2*P*Exp_msk1) {
  ------------------
  |  |  360|     16|#define P 53
  ------------------
              			if (bc.scale && y <= 2*P*Exp_msk1) {
  ------------------
  |  |  357|     16|#define Exp_msk1    0x100000
  ------------------
  |  Branch (3438:8): [True: 16, False: 386]
  |  Branch (3438:20): [True: 6, False: 10]
  ------------------
 3439|      6|				if (aadj <= 0x7fffffff) {
  ------------------
  |  Branch (3439:9): [True: 6, False: 0]
  ------------------
 3440|      6|					if ((z = aadj) <= 0)
  ------------------
  |  Branch (3440:10): [True: 0, False: 6]
  ------------------
 3441|      0|						z = 1;
 3442|      6|					aadj = z;
 3443|      6|					aadj1 = bc.dsign ? aadj : -aadj;
  ------------------
  |  Branch (3443:14): [True: 5, False: 1]
  ------------------
 3444|      6|					}
 3445|      6|				dval(&aadj2) = aadj1;
  ------------------
  |  |  324|      6|#define dval(x) (x)->d
  ------------------
 3446|      6|				word0(&aadj2) += (2*P+1)*Exp_msk1 - y;
  ------------------
  |  |  318|      6|#define word0(x) (x)->L[1]
  ------------------
              				word0(&aadj2) += (2*P+1)*Exp_msk1 - y;
  ------------------
  |  |  360|      6|#define P 53
  ------------------
              				word0(&aadj2) += (2*P+1)*Exp_msk1 - y;
  ------------------
  |  |  357|      6|#define Exp_msk1    0x100000
  ------------------
 3447|      6|				aadj1 = dval(&aadj2);
  ------------------
  |  |  324|      6|#define dval(x) (x)->d
  ------------------
 3448|      6|				adj.d = aadj1 * ulp(&rv);
 3449|      6|				dval(&rv) += adj.d;
  ------------------
  |  |  324|      6|#define dval(x) (x)->d
  ------------------
 3450|      6|				if (rv.d == 0.)
  ------------------
  |  Branch (3450:9): [True: 0, False: 6]
  ------------------
 3451|       |#ifdef NO_STRTOD_BIGCOMP
 3452|       |					goto undfl;
 3453|       |#else
 3454|      0|					{
 3455|      0|					req_bigcomp = 1;
 3456|      0|					break;
 3457|      0|					}
 3458|      6|#endif
 3459|      6|				}
 3460|    396|			else {
 3461|    396|				adj.d = aadj1 * ulp(&rv);
 3462|    396|				dval(&rv) += adj.d;
  ------------------
  |  |  324|    396|#define dval(x) (x)->d
  ------------------
 3463|    396|				}
 3464|       |#else
 3465|       |#ifdef Sudden_Underflow
 3466|       |			if ((word0(&rv) & Exp_mask) <= P*Exp_msk1) {
 3467|       |				dval(&rv0) = dval(&rv);
 3468|       |				word0(&rv) += P*Exp_msk1;
 3469|       |				adj.d = aadj1 * ulp(&rv);
 3470|       |				dval(&rv) += adj.d;
 3471|       |#ifdef IBM
 3472|       |				if ((word0(&rv) & Exp_mask) <  P*Exp_msk1)
 3473|       |#else
 3474|       |				if ((word0(&rv) & Exp_mask) <= P*Exp_msk1)
 3475|       |#endif
 3476|       |					{
 3477|       |					if (word0(&rv0) == Tiny0
 3478|       |					 && word1(&rv0) == Tiny1) {
 3479|       |						if (bc.nd >nd) {
 3480|       |							bc.uflchk = 1;
 3481|       |							break;
 3482|       |							}
 3483|       |						goto undfl;
 3484|       |						}
 3485|       |					word0(&rv) = Tiny0;
 3486|       |					word1(&rv) = Tiny1;
 3487|       |					goto cont;
 3488|       |					}
 3489|       |				else
 3490|       |					word0(&rv) -= P*Exp_msk1;
 3491|       |				}
 3492|       |			else {
 3493|       |				adj.d = aadj1 * ulp(&rv);
 3494|       |				dval(&rv) += adj.d;
 3495|       |				}
 3496|       |#else /*Sudden_Underflow*/
 3497|       |			/* Compute adj so that the IEEE rounding rules will
 3498|       |			 * correctly round rv + adj in some half-way cases.
 3499|       |			 * If rv * ulp(rv) is denormalized (i.e.,
 3500|       |			 * y <= (P-1)*Exp_msk1), we must adjust aadj to avoid
 3501|       |			 * trouble from bits lost to denormalization;
 3502|       |			 * example: 1.2e-307 .
 3503|       |			 */
 3504|       |			if (y <= (P-1)*Exp_msk1 && aadj > 1.) {
 3505|       |				aadj1 = (double)(int)(aadj + 0.5);
 3506|       |				if (!bc.dsign)
 3507|       |					aadj1 = -aadj1;
 3508|       |				}
 3509|       |			adj.d = aadj1 * ulp(&rv);
 3510|       |			dval(&rv) += adj.d;
 3511|       |#endif /*Sudden_Underflow*/
 3512|       |#endif /*Avoid_Underflow*/
 3513|    402|			}
 3514|    402|		z = word0(&rv) & Exp_mask;
  ------------------
  |  |  318|    402|#define word0(x) (x)->L[1]
  ------------------
              		z = word0(&rv) & Exp_mask;
  ------------------
  |  |  359|    402|#define Exp_mask  0x7ff00000
  ------------------
 3515|    402|#ifndef SET_INEXACT
 3516|    402|		if (bc.nd == nd) {
  ------------------
  |  Branch (3516:7): [True: 187, False: 215]
  ------------------
 3517|    187|#ifdef Avoid_Underflow
 3518|    187|		if (!bc.scale)
  ------------------
  |  Branch (3518:7): [True: 172, False: 15]
  ------------------
 3519|    172|#endif
 3520|    172|		if (y == z) {
  ------------------
  |  Branch (3520:7): [True: 172, False: 0]
  ------------------
 3521|       |			/* Can we stop now? */
 3522|    172|			L = (Long)aadj;
 3523|    172|			aadj -= L;
 3524|       |			/* The tolerances below are conservative. */
 3525|    172|			if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
  ------------------
  |  |  319|    275|#define word1(x) (x)->L[0]
  |  |  ------------------
  |  |  |  Branch (319:18): [True: 103, False: 0]
  |  |  ------------------
  ------------------
              			if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              			if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
  ------------------
  |  |  372|      0|#define Bndry_mask  0xfffff
  ------------------
  |  Branch (3525:8): [True: 69, False: 103]
  |  Branch (3525:34): [True: 0, False: 0]
  ------------------
 3526|    172|				if (aadj < .4999999 || aadj > .5000001)
  ------------------
  |  Branch (3526:9): [True: 158, False: 14]
  |  Branch (3526:28): [True: 14, False: 0]
  ------------------
 3527|    172|					break;
 3528|    172|				}
 3529|      0|			else if (aadj < .4999999/FLT_RADIX)
  ------------------
  |  Branch (3529:13): [True: 0, False: 0]
  ------------------
 3530|      0|				break;
 3531|    172|			}
 3532|    187|		}
 3533|    230|#endif
 3534|    230| cont:
 3535|    230|		Bfree(bb);
 3536|    230|		Bfree(bd);
 3537|    230|		Bfree(bs);
 3538|    230|		Bfree(delta);
 3539|    230|		}
 3540|  1.02k|	Bfree(bb);
 3541|  1.02k|	Bfree(bd);
 3542|  1.02k|	Bfree(bs);
 3543|  1.02k|	Bfree(bd0);
 3544|  1.02k|	Bfree(delta);
 3545|  1.02k|#ifndef NO_STRTOD_BIGCOMP
 3546|  1.02k|	if (req_bigcomp) {
  ------------------
  |  Branch (3546:6): [True: 182, False: 841]
  ------------------
 3547|    182|		bd0 = 0;
 3548|    182|		bc.e0 += nz1;
 3549|    182|		bigcomp(&rv, s0, &bc);
 3550|    182|		y = word0(&rv) & Exp_mask;
  ------------------
  |  |  318|    182|#define word0(x) (x)->L[1]
  ------------------
              		y = word0(&rv) & Exp_mask;
  ------------------
  |  |  359|    182|#define Exp_mask  0x7ff00000
  ------------------
 3551|    182|		if (y == Exp_mask)
  ------------------
  |  |  359|    182|#define Exp_mask  0x7ff00000
  ------------------
  |  Branch (3551:7): [True: 0, False: 182]
  ------------------
 3552|      0|			goto ovfl;
 3553|    182|		if (y == 0 && rv.d == 0.)
  ------------------
  |  Branch (3553:7): [True: 0, False: 182]
  |  Branch (3553:17): [True: 0, False: 0]
  ------------------
 3554|      0|			goto undfl;
 3555|    182|		}
 3556|  1.02k|#endif
 3557|       |#ifdef SET_INEXACT
 3558|       |	if (bc.inexact) {
 3559|       |		if (!oldinexact) {
 3560|       |			word0(&rv0) = Exp_1 + (70 << Exp_shift);
 3561|       |			word1(&rv0) = 0;
 3562|       |			dval(&rv0) += 1.;
 3563|       |			}
 3564|       |		}
 3565|       |	else if (!oldinexact)
 3566|       |		clear_inexact();
 3567|       |#endif
 3568|  1.02k|#ifdef Avoid_Underflow
 3569|  1.02k|	if (bc.scale) {
  ------------------
  |  Branch (3569:6): [True: 19, False: 1.00k]
  ------------------
 3570|     19|		word0(&rv0) = Exp_1 - 2*P*Exp_msk1;
  ------------------
  |  |  318|     19|#define word0(x) (x)->L[1]
  ------------------
              		word0(&rv0) = Exp_1 - 2*P*Exp_msk1;
  ------------------
  |  |  365|     19|#define Exp_1  0x3ff00000
  ------------------
              		word0(&rv0) = Exp_1 - 2*P*Exp_msk1;
  ------------------
  |  |  360|     19|#define P 53
  ------------------
              		word0(&rv0) = Exp_1 - 2*P*Exp_msk1;
  ------------------
  |  |  357|     19|#define Exp_msk1    0x100000
  ------------------
 3571|     19|		word1(&rv0) = 0;
  ------------------
  |  |  319|     19|#define word1(x) (x)->L[0]
  ------------------
 3572|     19|		dval(&rv) *= dval(&rv0);
  ------------------
  |  |  324|     19|#define dval(x) (x)->d
  ------------------
              		dval(&rv) *= dval(&rv0);
  ------------------
  |  |  324|     19|#define dval(x) (x)->d
  ------------------
 3573|       |#ifndef NO_ERRNO
 3574|       |		/* try to avoid the bug of testing an 8087 register value */
 3575|       |#ifdef IEEE_Arith
 3576|       |		if (!(word0(&rv) & Exp_mask))
 3577|       |#else
 3578|       |		if (word0(&rv) == 0 && word1(&rv) == 0)
 3579|       |#endif
 3580|       |			errno = ERANGE;
 3581|       |#endif
 3582|     19|		}
 3583|  1.02k|#endif /* Avoid_Underflow */
 3584|       |#ifdef SET_INEXACT
 3585|       |	if (bc.inexact && !(word0(&rv) & Exp_mask)) {
 3586|       |		/* set underflow bit */
 3587|       |		dval(&rv0) = 1e-300;
 3588|       |		dval(&rv0) *= dval(&rv0);
 3589|       |		}
 3590|       |#endif
 3591|  3.01k| ret:
 3592|  3.01k|	if (se)
  ------------------
  |  Branch (3592:6): [True: 2.98k, False: 29]
  ------------------
 3593|  2.98k|		*se = (char *)s;
 3594|  3.01k|	return sign ? -dval(&rv) : dval(&rv);
  ------------------
  |  |  324|    344|#define dval(x) (x)->d
  ------------------
              	return sign ? -dval(&rv) : dval(&rv);
  ------------------
  |  |  324|  2.66k|#define dval(x) (x)->d
  ------------------
  |  Branch (3594:9): [True: 344, False: 2.66k]
  ------------------
 3595|  1.02k|	}
zend_freedtoa:
 3659|  10.4k|{
 3660|  10.4k|	Bigint *b = (Bigint *)((int *)s - 1);
  ------------------
  |  |  206|  10.4k|#define Bigint      _zend_strtod_bigint
  ------------------
 3661|  10.4k|	b->maxwds = 1 << (b->k = *(int*)b);
 3662|  10.4k|	Bfree(b);
 3663|  10.4k|#ifndef MULTIPLE_THREADS
 3664|  10.4k|	if (s == dtoa_result)
  ------------------
  |  |  209|  10.4k|#define dtoa_result (EG(strtod_state).result)
  |  |  ------------------
  |  |  |  |   45|  10.4k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (3664:6): [True: 10.4k, False: 0]
  ------------------
 3665|  10.4k|		dtoa_result = 0;
  ------------------
  |  |  209|  10.4k|#define dtoa_result (EG(strtod_state).result)
  |  |  ------------------
  |  |  |  |   45|  10.4k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
 3666|  10.4k|#endif
 3667|  10.4k|	}
zend_dtoa:
 3704|  10.4k|{
 3705|       | /*	Arguments ndigits, decpt, sign are similar to those
 3706|       |	of ecvt and fcvt; trailing zeros are suppressed from
 3707|       |	the returned string.  If not null, *rve is set to point
 3708|       |	to the end of the return value.  If d is +-Infinity or NaN,
 3709|       |	then *decpt is set to 9999.
 3710|       |
 3711|       |	mode:
 3712|       |		0 ==> shortest string that yields d when read in
 3713|       |			and rounded to nearest.
 3714|       |		1 ==> like 0, but with Steele & White stopping rule;
 3715|       |			e.g. with IEEE P754 arithmetic , mode 0 gives
 3716|       |			1e23 whereas mode 1 gives 9.999999999999999e22.
 3717|       |		2 ==> max(1,ndigits) significant digits.  This gives a
 3718|       |			return value similar to that of ecvt, except
 3719|       |			that trailing zeros are suppressed.
 3720|       |		3 ==> through ndigits past the decimal point.  This
 3721|       |			gives a return value similar to that from fcvt,
 3722|       |			except that trailing zeros are suppressed, and
 3723|       |			ndigits can be negative.
 3724|       |		4,5 ==> similar to 2 and 3, respectively, but (in
 3725|       |			round-nearest mode) with the tests of mode 0 to
 3726|       |			possibly return a shorter string that rounds to d.
 3727|       |			With IEEE arithmetic and compilation with
 3728|       |			-DHonor_FLT_ROUNDS, modes 4 and 5 behave the same
 3729|       |			as modes 2 and 3 when FLT_ROUNDS != 1.
 3730|       |		6-9 ==> Debugging modes similar to mode - 4:  don't try
 3731|       |			fast floating-point estimate (if applicable).
 3732|       |
 3733|       |		Values of mode other than 0-9 are treated as mode 0.
 3734|       |
 3735|       |		Sufficient space is allocated to the return value
 3736|       |		to hold the suppressed trailing zeros.
 3737|       |	*/
 3738|       |
 3739|  10.4k|	int bbits, b2, b5, be, dig, i, ieps, ilim = 0, ilim0, ilim1,
 3740|  10.4k|		j, j1 = 0, k, k0, k_check, leftright, m2, m5, s2, s5,
 3741|  10.4k|		spec_case = 0, try_quick;
 3742|  10.4k|	Long L;
  ------------------
  |  |  195|  10.4k|#define Long int32_t
  ------------------
 3743|  10.4k|#ifndef Sudden_Underflow
 3744|  10.4k|	int denorm;
 3745|  10.4k|	ULong x;
  ------------------
  |  |  198|  10.4k|#define ULong uint32_t
  ------------------
 3746|  10.4k|#endif
 3747|  10.4k|	Bigint *b, *b1, *delta, *mlo, *mhi, *S;
  ------------------
  |  |  206|  10.4k|#define Bigint      _zend_strtod_bigint
  ------------------
 3748|  10.4k|	U d2, eps, u;
 3749|  10.4k|	double ds;
 3750|  10.4k|	char *s, *s0;
 3751|  10.4k|#ifndef No_leftright
 3752|  10.4k|#ifdef IEEE_Arith
 3753|  10.4k|	U eps1;
 3754|  10.4k|#endif
 3755|  10.4k|#endif
 3756|       |#ifdef SET_INEXACT
 3757|       |	int inexact, oldinexact;
 3758|       |#endif
 3759|       |#ifdef Honor_FLT_ROUNDS /*{*/
 3760|       |	int Rounding;
 3761|       |#ifdef Trust_FLT_ROUNDS /*{{ only define this if FLT_ROUNDS really works! */
 3762|       |	Rounding = Flt_Rounds;
 3763|       |#else /*}{*/
 3764|       |	Rounding = 1;
 3765|       |	switch(fegetround()) {
 3766|       |	  case FE_TOWARDZERO:	Rounding = 0; break;
 3767|       |	  case FE_UPWARD:	Rounding = 2; break;
 3768|       |	  case FE_DOWNWARD:	Rounding = 3;
 3769|       |	  }
 3770|       |#endif /*}}*/
 3771|       |#endif /*}*/
 3772|       |
 3773|  10.4k|#ifndef MULTIPLE_THREADS
 3774|  10.4k|	if (dtoa_result) {
  ------------------
  |  |  209|  10.4k|#define dtoa_result (EG(strtod_state).result)
  |  |  ------------------
  |  |  |  |   45|  10.4k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (209:21): [True: 0, False: 10.4k]
  |  |  ------------------
  ------------------
 3775|      0|		zend_freedtoa(dtoa_result);
  ------------------
  |  |  209|      0|#define dtoa_result (EG(strtod_state).result)
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
 3776|      0|		dtoa_result = 0;
  ------------------
  |  |  209|      0|#define dtoa_result (EG(strtod_state).result)
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
 3777|      0|		}
 3778|  10.4k|#endif
 3779|       |
 3780|  10.4k|	u.d = dd;
 3781|  10.4k|	if (word0(&u) & Sign_bit) {
  ------------------
  |  |  318|  10.4k|#define word0(x) (x)->L[1]
  ------------------
              	if (word0(&u) & Sign_bit) {
  ------------------
  |  |  375|  10.4k|#define Sign_bit 0x80000000
  ------------------
  |  Branch (3781:6): [True: 3.09k, False: 7.36k]
  ------------------
 3782|       |		/* set sign for everything, including 0's and NaNs */
 3783|  3.09k|		*sign = 1;
 3784|  3.09k|		word0(&u) &= ~Sign_bit;	/* clear sign bit */
  ------------------
  |  |  318|  3.09k|#define word0(x) (x)->L[1]
  ------------------
              		word0(&u) &= ~Sign_bit;	/* clear sign bit */
  ------------------
  |  |  375|  3.09k|#define Sign_bit 0x80000000
  ------------------
 3785|  3.09k|		}
 3786|  7.36k|	else
 3787|  7.36k|		*sign = 0;
 3788|       |
 3789|  10.4k|#if defined(IEEE_Arith) + defined(VAX)
 3790|  10.4k|#ifdef IEEE_Arith
 3791|  10.4k|	if ((word0(&u) & Exp_mask) == Exp_mask)
  ------------------
  |  |  318|  10.4k|#define word0(x) (x)->L[1]
  ------------------
              	if ((word0(&u) & Exp_mask) == Exp_mask)
  ------------------
  |  |  359|  10.4k|#define Exp_mask  0x7ff00000
  ------------------
              	if ((word0(&u) & Exp_mask) == Exp_mask)
  ------------------
  |  |  359|  10.4k|#define Exp_mask  0x7ff00000
  ------------------
  |  Branch (3791:6): [True: 160, False: 10.3k]
  ------------------
 3792|       |#else
 3793|       |	if (word0(&u)  == 0x8000)
 3794|       |#endif
 3795|    160|		{
 3796|       |		/* Infinity or NaN */
 3797|    160|		*decpt = 9999;
 3798|    160|#ifdef IEEE_Arith
 3799|    160|		if (!word1(&u) && !(word0(&u) & 0xfffff))
  ------------------
  |  |  319|    320|#define word1(x) (x)->L[0]
  ------------------
              		if (!word1(&u) && !(word0(&u) & 0xfffff))
  ------------------
  |  |  318|    160|#define word0(x) (x)->L[1]
  ------------------
  |  Branch (3799:7): [True: 160, False: 0]
  |  Branch (3799:21): [True: 158, False: 2]
  ------------------
 3800|    158|			return nrv_alloc("Infinity", rve, 8);
 3801|      2|#endif
 3802|      2|		return nrv_alloc("NaN", rve, 3);
 3803|    160|		}
 3804|  10.3k|#endif
 3805|       |#ifdef IBM
 3806|       |	dval(&u) += 0; /* normalize */
 3807|       |#endif
 3808|  10.3k|	if (!dval(&u)) {
  ------------------
  |  |  324|  10.3k|#define dval(x) (x)->d
  ------------------
  |  Branch (3808:6): [True: 381, False: 9.92k]
  ------------------
 3809|    381|		*decpt = 1;
 3810|    381|		return nrv_alloc("0", rve, 1);
 3811|    381|		}
 3812|       |
 3813|       |#ifdef SET_INEXACT
 3814|       |	try_quick = oldinexact = get_inexact();
 3815|       |	inexact = 1;
 3816|       |#endif
 3817|       |#ifdef Honor_FLT_ROUNDS
 3818|       |	if (Rounding >= 2) {
 3819|       |		if (*sign)
 3820|       |			Rounding = Rounding == 2 ? 0 : 2;
 3821|       |		else
 3822|       |			if (Rounding != 2)
 3823|       |				Rounding = 0;
 3824|       |		}
 3825|       |#endif
 3826|       |
 3827|  9.92k|	b = d2b(&u, &be, &bbits);
 3828|       |#ifdef Sudden_Underflow
 3829|       |	i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1));
 3830|       |#else
 3831|  9.92k|	if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) {
  ------------------
  |  |  318|  9.92k|#define word0(x) (x)->L[1]
  ------------------
              	if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) {
  ------------------
  |  |  356|  9.92k|#define Exp_shift1 20
  ------------------
              	if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) {
  ------------------
  |  |  359|  9.92k|#define Exp_mask  0x7ff00000
  ------------------
              	if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) {
  ------------------
  |  |  356|  9.92k|#define Exp_shift1 20
  ------------------
  |  Branch (3831:6): [True: 9.92k, False: 3]
  ------------------
 3832|  9.92k|#endif
 3833|  9.92k|		dval(&d2) = dval(&u);
  ------------------
  |  |  324|  9.92k|#define dval(x) (x)->d
  ------------------
              		dval(&d2) = dval(&u);
  ------------------
  |  |  324|  9.92k|#define dval(x) (x)->d
  ------------------
 3834|  9.92k|		word0(&d2) &= Frac_mask1;
  ------------------
  |  |  318|  9.92k|#define word0(x) (x)->L[1]
  ------------------
              		word0(&d2) &= Frac_mask1;
  ------------------
  |  |  369|  9.92k|#define Frac_mask1 0xfffff
  ------------------
 3835|  9.92k|		word0(&d2) |= Exp_11;
  ------------------
  |  |  318|  9.92k|#define word0(x) (x)->L[1]
  ------------------
              		word0(&d2) |= Exp_11;
  ------------------
  |  |  366|  9.92k|#define Exp_11 0x3ff00000
  ------------------
 3836|       |#ifdef IBM
 3837|       |		if (j = 11 - hi0bits(word0(&d2) & Frac_mask))
 3838|       |			dval(&d2) /= 1 << j;
 3839|       |#endif
 3840|       |
 3841|       |		/* log(x)	~=~ log(1.5) + (x-1.5)/1.5
 3842|       |		 * log10(x)	 =  log(x) / log(10)
 3843|       |		 *		~=~ log(1.5)/log(10) + (x-1.5)/(1.5*log(10))
 3844|       |		 * log10(d) = (i-Bias)*log(2)/log(10) + log10(d2)
 3845|       |		 *
 3846|       |		 * This suggests computing an approximation k to log10(d) by
 3847|       |		 *
 3848|       |		 * k = (i - Bias)*0.301029995663981
 3849|       |		 *	+ ( (d2-1.5)*0.289529654602168 + 0.176091259055681 );
 3850|       |		 *
 3851|       |		 * We want k to be too large rather than too small.
 3852|       |		 * The error in the first-order Taylor series approximation
 3853|       |		 * is in our favor, so we just round up the constant enough
 3854|       |		 * to compensate for any error in the multiplication of
 3855|       |		 * (i - Bias) by 0.301029995663981; since |i - Bias| <= 1077,
 3856|       |		 * and 1077 * 0.30103 * 2^-52 ~=~ 7.2e-14,
 3857|       |		 * adding 1e-13 to the constant term more than suffices.
 3858|       |		 * Hence we adjust the constant term to 0.1760912590558.
 3859|       |		 * (We could get a more accurate k by invoking log10,
 3860|       |		 *  but this is probably not worthwhile.)
 3861|       |		 */
 3862|       |
 3863|  9.92k|		i -= Bias;
  ------------------
  |  |  362|  9.92k|#define Bias 1023
  ------------------
 3864|       |#ifdef IBM
 3865|       |		i <<= 2;
 3866|       |		i += j;
 3867|       |#endif
 3868|  9.92k|#ifndef Sudden_Underflow
 3869|  9.92k|		denorm = 0;
 3870|  9.92k|		}
 3871|      3|	else {
 3872|       |		/* d is denormalized */
 3873|       |
 3874|      3|		i = bbits + be + (Bias + (P-1) - 1);
  ------------------
  |  |  362|      3|#define Bias 1023
  ------------------
              		i = bbits + be + (Bias + (P-1) - 1);
  ------------------
  |  |  360|      3|#define P 53
  ------------------
 3875|      3|		x = i > 32  ? word0(&u) << (64 - i) | word1(&u) >> (i - 32)
  ------------------
  |  |  318|      3|#define word0(x) (x)->L[1]
  ------------------
              		x = i > 32  ? word0(&u) << (64 - i) | word1(&u) >> (i - 32)
  ------------------
  |  |  319|      3|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (3875:7): [True: 3, False: 0]
  ------------------
 3876|      3|			    : word1(&u) << (32 - i);
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
 3877|      3|		dval(&d2) = x;
  ------------------
  |  |  324|      3|#define dval(x) (x)->d
  ------------------
 3878|      3|		word0(&d2) -= 31*Exp_msk1; /* adjust exponent */
  ------------------
  |  |  318|      3|#define word0(x) (x)->L[1]
  ------------------
              		word0(&d2) -= 31*Exp_msk1; /* adjust exponent */
  ------------------
  |  |  357|      3|#define Exp_msk1    0x100000
  ------------------
 3879|      3|		i -= (Bias + (P-1) - 1) + 1;
  ------------------
  |  |  362|      3|#define Bias 1023
  ------------------
              		i -= (Bias + (P-1) - 1) + 1;
  ------------------
  |  |  360|      3|#define P 53
  ------------------
 3880|      3|		denorm = 1;
 3881|      3|		}
 3882|  9.92k|#endif
 3883|  9.92k|	ds = (dval(&d2)-1.5)*0.289529654602168 + 0.1760912590558 + i*0.301029995663981;
  ------------------
  |  |  324|  9.92k|#define dval(x) (x)->d
  ------------------
 3884|  9.92k|	k = (int)ds;
 3885|  9.92k|	if (ds < 0. && ds != k)
  ------------------
  |  Branch (3885:6): [True: 3.82k, False: 6.09k]
  |  Branch (3885:17): [True: 3.82k, False: 0]
  ------------------
 3886|  3.82k|		k--;	/* want k = floor(ds) */
 3887|  9.92k|	k_check = 1;
 3888|  9.92k|	if (k >= 0 && k <= Ten_pmax) {
  ------------------
  |  |  370|  6.09k|#define Ten_pmax 22
  ------------------
  |  Branch (3888:6): [True: 6.09k, False: 3.82k]
  |  Branch (3888:16): [True: 4.69k, False: 1.40k]
  ------------------
 3889|  4.69k|		if (dval(&u) < tens[k])
  ------------------
  |  |  324|  4.69k|#define dval(x) (x)->d
  ------------------
  |  Branch (3889:7): [True: 306, False: 4.39k]
  ------------------
 3890|    306|			k--;
 3891|  4.69k|		k_check = 0;
 3892|  4.69k|		}
 3893|  9.92k|	j = bbits - i - 1;
 3894|  9.92k|	if (j >= 0) {
  ------------------
  |  Branch (3894:6): [True: 7.72k, False: 2.20k]
  ------------------
 3895|  7.72k|		b2 = 0;
 3896|  7.72k|		s2 = j;
 3897|  7.72k|		}
 3898|  2.20k|	else {
 3899|  2.20k|		b2 = -j;
 3900|  2.20k|		s2 = 0;
 3901|  2.20k|		}
 3902|  9.92k|	if (k >= 0) {
  ------------------
  |  Branch (3902:6): [True: 5.80k, False: 4.11k]
  ------------------
 3903|  5.80k|		b5 = 0;
 3904|  5.80k|		s5 = k;
 3905|  5.80k|		s2 += k;
 3906|  5.80k|		}
 3907|  4.11k|	else {
 3908|  4.11k|		b2 -= k;
 3909|  4.11k|		b5 = -k;
 3910|  4.11k|		s5 = 0;
 3911|  4.11k|		}
 3912|  9.92k|	if (mode < 0 || mode > 9)
  ------------------
  |  Branch (3912:6): [True: 0, False: 9.92k]
  |  Branch (3912:18): [True: 0, False: 9.92k]
  ------------------
 3913|      0|		mode = 0;
 3914|       |
 3915|  9.92k|#ifndef SET_INEXACT
 3916|       |#ifdef Check_FLT_ROUNDS
 3917|       |	try_quick = Rounding == 1;
 3918|       |#else
 3919|  9.92k|	try_quick = 1;
 3920|  9.92k|#endif
 3921|  9.92k|#endif /*SET_INEXACT*/
 3922|       |
 3923|  9.92k|	if (mode > 5) {
  ------------------
  |  Branch (3923:6): [True: 0, False: 9.92k]
  ------------------
 3924|      0|		mode -= 4;
 3925|      0|		try_quick = 0;
 3926|      0|		}
 3927|  9.92k|	leftright = 1;
 3928|  9.92k|	ilim = ilim1 = -1;	/* Values for cases 0 and 1; done here to */
 3929|       |				/* silence erroneous "gcc -Wall" warning. */
 3930|  9.92k|	switch(mode) {
  ------------------
  |  Branch (3930:9): [True: 9.92k, False: 0]
  ------------------
 3931|  4.92k|		case 0:
  ------------------
  |  Branch (3931:3): [True: 4.92k, False: 4.99k]
  ------------------
 3932|  4.92k|		case 1:
  ------------------
  |  Branch (3932:3): [True: 0, False: 9.92k]
  ------------------
 3933|  4.92k|			i = 18;
 3934|  4.92k|			ndigits = 0;
 3935|  4.92k|			break;
 3936|  4.97k|		case 2:
  ------------------
  |  Branch (3936:3): [True: 4.97k, False: 4.94k]
  ------------------
 3937|  4.97k|			leftright = 0;
 3938|  4.97k|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|  4.97k|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 3939|  4.97k|		case 4:
  ------------------
  |  Branch (3939:3): [True: 0, False: 9.92k]
  ------------------
 3940|  4.97k|			if (ndigits <= 0)
  ------------------
  |  Branch (3940:8): [True: 0, False: 4.97k]
  ------------------
 3941|      0|				ndigits = 1;
 3942|  4.97k|			ilim = ilim1 = i = ndigits;
 3943|  4.97k|			break;
 3944|     17|		case 3:
  ------------------
  |  Branch (3944:3): [True: 17, False: 9.90k]
  ------------------
 3945|     17|			leftright = 0;
 3946|     17|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|     17|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 3947|     17|		case 5:
  ------------------
  |  Branch (3947:3): [True: 0, False: 9.92k]
  ------------------
 3948|     17|			i = ndigits + k + 1;
 3949|     17|			ilim = i;
 3950|     17|			ilim1 = i - 1;
 3951|     17|			if (i <= 0)
  ------------------
  |  Branch (3951:8): [True: 1, False: 16]
  ------------------
 3952|      1|				i = 1;
 3953|  9.92k|		}
 3954|  9.92k|	s = s0 = rv_alloc(i);
 3955|       |
 3956|       |#ifdef Honor_FLT_ROUNDS
 3957|       |	if (mode > 1 && Rounding != 1)
 3958|       |		leftright = 0;
 3959|       |#endif
 3960|       |
 3961|  9.92k|	if (ilim >= 0 && ilim <= Quick_max && try_quick) {
  ------------------
  |  |  379|  14.9k|#define Quick_max 14
  ------------------
  |  Branch (3961:6): [True: 4.99k, False: 4.92k]
  |  Branch (3961:19): [True: 4.98k, False: 10]
  |  Branch (3961:40): [True: 4.98k, False: 0]
  ------------------
 3962|       |
 3963|       |		/* Try to get by with floating-point arithmetic. */
 3964|       |
 3965|  4.98k|		i = 0;
 3966|  4.98k|		dval(&d2) = dval(&u);
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
              		dval(&d2) = dval(&u);
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
 3967|  4.98k|		k0 = k;
 3968|  4.98k|		ilim0 = ilim;
 3969|  4.98k|		ieps = 2; /* conservative */
 3970|  4.98k|		if (k > 0) {
  ------------------
  |  Branch (3970:7): [True: 2.22k, False: 2.76k]
  ------------------
 3971|  2.22k|			ds = tens[k&0xf];
 3972|  2.22k|			j = k >> 4;
 3973|  2.22k|			if (j & Bletch) {
  ------------------
  |  |  371|  2.22k|#define Bletch 0x10
  ------------------
  |  Branch (3973:8): [True: 133, False: 2.08k]
  ------------------
 3974|       |				/* prevent overflows */
 3975|    133|				j &= Bletch - 1;
  ------------------
  |  |  371|    133|#define Bletch 0x10
  ------------------
 3976|    133|				dval(&u) /= bigtens[n_bigtens-1];
  ------------------
  |  |  324|    133|#define dval(x) (x)->d
  ------------------
              				dval(&u) /= bigtens[n_bigtens-1];
  ------------------
  |  | 1500|    133|#define n_bigtens 5
  ------------------
 3977|    133|				ieps++;
 3978|    133|				}
 3979|  4.49k|			for(; j; j >>= 1, i++)
  ------------------
  |  Branch (3979:10): [True: 2.27k, False: 2.22k]
  ------------------
 3980|  2.27k|				if (j & 1) {
  ------------------
  |  Branch (3980:9): [True: 1.59k, False: 683]
  ------------------
 3981|  1.59k|					ieps++;
 3982|  1.59k|					ds *= bigtens[i];
 3983|  1.59k|					}
 3984|  2.22k|			dval(&u) /= ds;
  ------------------
  |  |  324|  2.22k|#define dval(x) (x)->d
  ------------------
 3985|  2.22k|			}
 3986|  2.76k|		else if ((j1 = -k)) {
  ------------------
  |  Branch (3986:12): [True: 2.47k, False: 289]
  ------------------
 3987|  2.47k|			dval(&u) *= tens[j1 & 0xf];
  ------------------
  |  |  324|  2.47k|#define dval(x) (x)->d
  ------------------
 3988|  2.51k|			for(j = j1 >> 4; j; j >>= 1, i++)
  ------------------
  |  Branch (3988:21): [True: 38, False: 2.47k]
  ------------------
 3989|     38|				if (j & 1) {
  ------------------
  |  Branch (3989:9): [True: 25, False: 13]
  ------------------
 3990|     25|					ieps++;
 3991|     25|					dval(&u) *= bigtens[i];
  ------------------
  |  |  324|     25|#define dval(x) (x)->d
  ------------------
 3992|     25|					}
 3993|  2.47k|			}
 3994|  4.98k|		if (k_check && dval(&u) < 1. && ilim > 0) {
  ------------------
  |  |  324|  2.94k|#define dval(x) (x)->d
  ------------------
  |  Branch (3994:7): [True: 2.94k, False: 2.04k]
  |  Branch (3994:18): [True: 4, False: 2.93k]
  |  Branch (3994:35): [True: 4, False: 0]
  ------------------
 3995|      4|			if (ilim1 <= 0)
  ------------------
  |  Branch (3995:8): [True: 0, False: 4]
  ------------------
 3996|      0|				goto fast_failed;
 3997|      4|			ilim = ilim1;
 3998|      4|			k--;
 3999|      4|			dval(&u) *= 10.;
  ------------------
  |  |  324|      4|#define dval(x) (x)->d
  ------------------
 4000|      4|			ieps++;
 4001|      4|			}
 4002|  4.98k|		dval(&eps) = ieps*dval(&u) + 7.;
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
              		dval(&eps) = ieps*dval(&u) + 7.;
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
 4003|  4.98k|		word0(&eps) -= (P-1)*Exp_msk1;
  ------------------
  |  |  318|  4.98k|#define word0(x) (x)->L[1]
  ------------------
              		word0(&eps) -= (P-1)*Exp_msk1;
  ------------------
  |  |  360|  4.98k|#define P 53
  ------------------
              		word0(&eps) -= (P-1)*Exp_msk1;
  ------------------
  |  |  357|  4.98k|#define Exp_msk1    0x100000
  ------------------
 4004|  4.98k|		if (ilim == 0) {
  ------------------
  |  Branch (4004:7): [True: 0, False: 4.98k]
  ------------------
 4005|      0|			S = mhi = 0;
 4006|      0|			dval(&u) -= 5.;
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4007|      0|			if (dval(&u) > dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              			if (dval(&u) > dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (4007:8): [True: 0, False: 0]
  ------------------
 4008|      0|				goto one_digit;
 4009|      0|			if (dval(&u) < -dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              			if (dval(&u) < -dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (4009:8): [True: 0, False: 0]
  ------------------
 4010|      0|				goto no_digits;
 4011|      0|			goto fast_failed;
 4012|      0|			}
 4013|  4.98k|#ifndef No_leftright
 4014|  4.98k|		if (leftright) {
  ------------------
  |  Branch (4014:7): [True: 0, False: 4.98k]
  ------------------
 4015|       |			/* Use Steele & White method of only
 4016|       |			 * generating digits needed.
 4017|       |			 */
 4018|      0|			dval(&eps) = 0.5/tens[ilim-1] - dval(&eps);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              			dval(&eps) = 0.5/tens[ilim-1] - dval(&eps);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4019|      0|#ifdef IEEE_Arith
 4020|      0|			if (k0 < 0 && j1 >= 307) {
  ------------------
  |  Branch (4020:8): [True: 0, False: 0]
  |  Branch (4020:18): [True: 0, False: 0]
  ------------------
 4021|      0|				eps1.d = 1.01e256; /* 1.01 allows roundoff in the next few lines */
 4022|      0|				word0(&eps1) -= Exp_msk1 * (Bias+P-1);
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              				word0(&eps1) -= Exp_msk1 * (Bias+P-1);
  ------------------
  |  |  357|      0|#define Exp_msk1    0x100000
  ------------------
              				word0(&eps1) -= Exp_msk1 * (Bias+P-1);
  ------------------
  |  |  362|      0|#define Bias 1023
  ------------------
              				word0(&eps1) -= Exp_msk1 * (Bias+P-1);
  ------------------
  |  |  360|      0|#define P 53
  ------------------
 4023|      0|				dval(&eps1) *= tens[j1 & 0xf];
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4024|      0|				for(i = 0, j = (j1-256) >> 4; j; j >>= 1, i++)
  ------------------
  |  Branch (4024:35): [True: 0, False: 0]
  ------------------
 4025|      0|					if (j & 1)
  ------------------
  |  Branch (4025:10): [True: 0, False: 0]
  ------------------
 4026|      0|						dval(&eps1) *= bigtens[i];
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4027|      0|				if (eps.d < eps1.d)
  ------------------
  |  Branch (4027:9): [True: 0, False: 0]
  ------------------
 4028|      0|					eps.d = eps1.d;
 4029|      0|				}
 4030|      0|#endif
 4031|      0|			for(i = 0;;) {
 4032|      0|				L = dval(&u);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4033|      0|				dval(&u) -= L;
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4034|      0|				*s++ = '0' + (int)L;
 4035|      0|				if (1. - dval(&u) < dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              				if (1. - dval(&u) < dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (4035:9): [True: 0, False: 0]
  ------------------
 4036|      0|					goto bump_up;
 4037|      0|				if (dval(&u) < dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              				if (dval(&u) < dval(&eps))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (4037:9): [True: 0, False: 0]
  ------------------
 4038|      0|					goto ret1;
 4039|      0|				if (++i >= ilim)
  ------------------
  |  Branch (4039:9): [True: 0, False: 0]
  ------------------
 4040|      0|					break;
 4041|      0|				dval(&eps) *= 10.;
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4042|      0|				dval(&u) *= 10.;
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4043|      0|				}
 4044|      0|			}
 4045|  4.98k|		else {
 4046|  4.98k|#endif
 4047|       |			/* Generate ilim digits, then fix them up. */
 4048|  4.98k|			dval(&eps) *= tens[ilim-1];
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
 4049|  59.3k|			for(i = 1;; i++, dval(&u) *= 10.) {
  ------------------
  |  |  324|  54.4k|#define dval(x) (x)->d
  ------------------
 4050|  59.3k|				L = (Long)(dval(&u));
  ------------------
  |  |  324|  59.3k|#define dval(x) (x)->d
  ------------------
 4051|  59.3k|				if (!(dval(&u) -= L))
  ------------------
  |  |  324|  59.3k|#define dval(x) (x)->d
  ------------------
  |  Branch (4051:9): [True: 920, False: 58.4k]
  ------------------
 4052|    920|					ilim = i;
 4053|  59.3k|				*s++ = '0' + (int)L;
 4054|  59.3k|				if (i == ilim) {
  ------------------
  |  Branch (4054:9): [True: 4.98k, False: 54.4k]
  ------------------
 4055|  4.98k|					if (dval(&u) > 0.5 + dval(&eps))
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
              					if (dval(&u) > 0.5 + dval(&eps))
  ------------------
  |  |  324|  4.98k|#define dval(x) (x)->d
  ------------------
  |  Branch (4055:10): [True: 1.74k, False: 3.24k]
  ------------------
 4056|  1.74k|						goto bump_up;
 4057|  3.24k|					else if (dval(&u) < 0.5 - dval(&eps)) {
  ------------------
  |  |  324|  3.24k|#define dval(x) (x)->d
  ------------------
              					else if (dval(&u) < 0.5 - dval(&eps)) {
  ------------------
  |  |  324|  3.24k|#define dval(x) (x)->d
  ------------------
  |  Branch (4057:15): [True: 2.99k, False: 241]
  ------------------
 4058|  10.7k|						while(*--s == '0');
  ------------------
  |  Branch (4058:13): [True: 7.80k, False: 2.99k]
  ------------------
 4059|  2.99k|						s++;
 4060|  2.99k|						goto ret1;
 4061|  2.99k|						}
 4062|    241|					break;
 4063|  4.98k|					}
 4064|  59.3k|				}
 4065|  4.98k|#ifndef No_leftright
 4066|  4.98k|			}
 4067|    241|#endif
 4068|    241| fast_failed:
 4069|    241|		s = s0;
 4070|    241|		dval(&u) = dval(&d2);
  ------------------
  |  |  324|    241|#define dval(x) (x)->d
  ------------------
              		dval(&u) = dval(&d2);
  ------------------
  |  |  324|    241|#define dval(x) (x)->d
  ------------------
 4071|    241|		k = k0;
 4072|    241|		ilim = ilim0;
 4073|    241|		}
 4074|       |
 4075|       |	/* Do we have a "small" integer? */
 4076|       |
 4077|  5.18k|	if (be >= 0 && k <= Int_max) {
  ------------------
  |  |  380|  1.03k|#define Int_max 14
  ------------------
  |  Branch (4077:6): [True: 1.03k, False: 4.15k]
  |  Branch (4077:17): [True: 18, False: 1.01k]
  ------------------
 4078|       |		/* Yes. */
 4079|     18|		ds = tens[k];
 4080|     18|		if (ndigits < 0 && ilim <= 0) {
  ------------------
  |  Branch (4080:7): [True: 0, False: 18]
  |  Branch (4080:22): [True: 0, False: 0]
  ------------------
 4081|      0|			S = mhi = 0;
 4082|      0|			if (ilim < 0 || dval(&u) <= 5*ds)
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (4082:8): [True: 0, False: 0]
  |  Branch (4082:20): [True: 0, False: 0]
  ------------------
 4083|      0|				goto no_digits;
 4084|      0|			goto one_digit;
 4085|      0|			}
 4086|     37|		for(i = 1;; i++, dval(&u) *= 10.) {
  ------------------
  |  |  324|     19|#define dval(x) (x)->d
  ------------------
 4087|     37|			L = (Long)(dval(&u) / ds);
  ------------------
  |  |  324|     37|#define dval(x) (x)->d
  ------------------
 4088|     37|			dval(&u) -= L*ds;
  ------------------
  |  |  324|     37|#define dval(x) (x)->d
  ------------------
 4089|       |#ifdef Check_FLT_ROUNDS
 4090|       |			/* If FLT_ROUNDS == 2, L will usually be high by 1 */
 4091|       |			if (dval(&u) < 0) {
 4092|       |				L--;
 4093|       |				dval(&u) += ds;
 4094|       |				}
 4095|       |#endif
 4096|     37|			*s++ = '0' + (int)L;
 4097|     37|			if (!dval(&u)) {
  ------------------
  |  |  324|     37|#define dval(x) (x)->d
  ------------------
  |  Branch (4097:8): [True: 18, False: 19]
  ------------------
 4098|       |#ifdef SET_INEXACT
 4099|       |				inexact = 0;
 4100|       |#endif
 4101|     18|				break;
 4102|     18|				}
 4103|     19|			if (i == ilim) {
  ------------------
  |  Branch (4103:8): [True: 0, False: 19]
  ------------------
 4104|       |#ifdef Honor_FLT_ROUNDS
 4105|       |				if (mode > 1)
 4106|       |				switch(Rounding) {
 4107|       |				  case 0: goto ret1;
 4108|       |				  case 2: goto bump_up;
 4109|       |				  }
 4110|       |#endif
 4111|      0|				dval(&u) += dval(&u);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              				dval(&u) += dval(&u);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 4112|       |#ifdef ROUND_BIASED
 4113|       |				if (dval(&u) >= ds)
 4114|       |#else
 4115|      0|				if (dval(&u) > ds || (dval(&u) == ds && L & 1))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
              				if (dval(&u) > ds || (dval(&u) == ds && L & 1))
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
  |  Branch (4115:9): [True: 0, False: 0]
  |  Branch (4115:27): [True: 0, False: 0]
  |  Branch (4115:45): [True: 0, False: 0]
  ------------------
 4116|      0|#endif
 4117|      0|					{
 4118|  1.74k| bump_up:
 4119|  4.10k|					while(*--s == '9')
  ------------------
  |  Branch (4119:12): [True: 2.36k, False: 1.74k]
  ------------------
 4120|  2.36k|						if (s == s0) {
  ------------------
  |  Branch (4120:11): [True: 4, False: 2.36k]
  ------------------
 4121|      4|							k++;
 4122|      4|							*s = '0';
 4123|      4|							break;
 4124|      4|							}
 4125|  1.74k|					++*s++;
 4126|  1.74k|					}
 4127|  1.74k|				break;
 4128|      0|				}
 4129|     19|			}
 4130|  1.76k|		goto ret1;
 4131|     18|		}
 4132|       |
 4133|  5.16k|	m2 = b2;
 4134|  5.16k|	m5 = b5;
 4135|  5.16k|	mhi = mlo = 0;
 4136|  5.16k|	if (leftright) {
  ------------------
  |  Branch (4136:6): [True: 4.91k, False: 252]
  ------------------
 4137|  4.91k|		i =
 4138|  4.91k|#ifndef Sudden_Underflow
 4139|  4.91k|			denorm ? be + (Bias + (P-1) - 1 + 1) :
  ------------------
  |  |  362|      0|#define Bias 1023
  ------------------
              			denorm ? be + (Bias + (P-1) - 1 + 1) :
  ------------------
  |  |  360|      0|#define P 53
  ------------------
  |  Branch (4139:4): [True: 0, False: 4.91k]
  ------------------
 4140|  4.91k|#endif
 4141|       |#ifdef IBM
 4142|       |			1 + 4*P - 3 - bbits + ((bbits + be - 1) & 3);
 4143|       |#else
 4144|  4.91k|			1 + P - bbits;
  ------------------
  |  |  360|  4.91k|#define P 53
  ------------------
 4145|  4.91k|#endif
 4146|  4.91k|		b2 += i;
 4147|  4.91k|		s2 += i;
 4148|  4.91k|		mhi = i2b(1);
 4149|  4.91k|		}
 4150|  5.16k|	if (m2 > 0 && s2 > 0) {
  ------------------
  |  Branch (4150:6): [True: 2.80k, False: 2.35k]
  |  Branch (4150:16): [True: 2.80k, False: 0]
  ------------------
 4151|  2.80k|		i = m2 < s2 ? m2 : s2;
  ------------------
  |  Branch (4151:7): [True: 2.08k, False: 725]
  ------------------
 4152|  2.80k|		b2 -= i;
 4153|  2.80k|		m2 -= i;
 4154|  2.80k|		s2 -= i;
 4155|  2.80k|		}
 4156|  5.16k|	if (b5 > 0) {
  ------------------
  |  Branch (4156:6): [True: 1.79k, False: 3.36k]
  ------------------
 4157|  1.79k|		if (leftright) {
  ------------------
  |  Branch (4157:7): [True: 1.64k, False: 157]
  ------------------
 4158|  1.64k|			if (m5 > 0) {
  ------------------
  |  Branch (4158:8): [True: 1.64k, False: 0]
  ------------------
 4159|  1.64k|				mhi = pow5mult(mhi, m5);
 4160|  1.64k|				b1 = mult(mhi, b);
 4161|  1.64k|				Bfree(b);
 4162|  1.64k|				b = b1;
 4163|  1.64k|				}
 4164|  1.64k|			if ((j = b5 - m5))
  ------------------
  |  Branch (4164:8): [True: 0, False: 1.64k]
  ------------------
 4165|      0|				b = pow5mult(b, j);
 4166|  1.64k|			}
 4167|    157|		else
 4168|    157|			b = pow5mult(b, b5);
 4169|  1.79k|		}
 4170|  5.16k|	S = i2b(1);
 4171|  5.16k|	if (s5 > 0)
  ------------------
  |  Branch (4171:6): [True: 2.96k, False: 2.20k]
  ------------------
 4172|  2.96k|		S = pow5mult(S, s5);
 4173|       |
 4174|       |	/* Check for special case that d is a normalized power of 2. */
 4175|       |
 4176|  5.16k|	spec_case = 0;
 4177|  5.16k|	if ((mode < 2 || leftright)
  ------------------
  |  Branch (4177:7): [True: 4.91k, False: 252]
  |  Branch (4177:19): [True: 0, False: 252]
  ------------------
 4178|       |#ifdef Honor_FLT_ROUNDS
 4179|       |			&& Rounding == 1
 4180|       |#endif
 4181|  5.16k|				) {
 4182|  4.91k|		if (!word1(&u) && !(word0(&u) & Bndry_mask)
  ------------------
  |  |  319|  9.82k|#define word1(x) (x)->L[0]
  ------------------
              		if (!word1(&u) && !(word0(&u) & Bndry_mask)
  ------------------
  |  |  318|    197|#define word0(x) (x)->L[1]
  ------------------
              		if (!word1(&u) && !(word0(&u) & Bndry_mask)
  ------------------
  |  |  372|    197|#define Bndry_mask  0xfffff
  ------------------
  |  Branch (4182:7): [True: 197, False: 4.71k]
  |  Branch (4182:21): [True: 186, False: 11]
  ------------------
 4183|    186|#ifndef Sudden_Underflow
 4184|    186|		 && word0(&u) & (Exp_mask & ~Exp_msk1)
  ------------------
  |  |  318|    186|#define word0(x) (x)->L[1]
  ------------------
              		 && word0(&u) & (Exp_mask & ~Exp_msk1)
  ------------------
  |  |  359|    186|#define Exp_mask  0x7ff00000
  ------------------
              		 && word0(&u) & (Exp_mask & ~Exp_msk1)
  ------------------
  |  |  357|    186|#define Exp_msk1    0x100000
  ------------------
  |  Branch (4184:7): [True: 186, False: 0]
  ------------------
 4185|  4.91k|#endif
 4186|  4.91k|				) {
 4187|       |			/* The special case */
 4188|    186|			b2 += Log2P;
  ------------------
  |  |  376|    186|#define Log2P 1
  ------------------
 4189|    186|			s2 += Log2P;
  ------------------
  |  |  376|    186|#define Log2P 1
  ------------------
 4190|    186|			spec_case = 1;
 4191|    186|			}
 4192|  4.91k|		}
 4193|       |
 4194|       |	/* Arrange for convenient computation of quotients:
 4195|       |	 * shift left if necessary so divisor has 4 leading 0 bits.
 4196|       |	 *
 4197|       |	 * Perhaps we should just compute leading 28 bits of S once
 4198|       |	 * and for all and pass them and a shift to quorem, so it
 4199|       |	 * can do shifts and ORs to compute the numerator for q.
 4200|       |	 */
 4201|  5.16k|	i = dshift(S, s2);
 4202|  5.16k|	b2 += i;
 4203|  5.16k|	m2 += i;
 4204|  5.16k|	s2 += i;
 4205|  5.16k|	if (b2 > 0)
  ------------------
  |  Branch (4205:6): [True: 5.16k, False: 1]
  ------------------
 4206|  5.16k|		b = lshift(b, b2);
 4207|  5.16k|	if (s2 > 0)
  ------------------
  |  Branch (4207:6): [True: 5.16k, False: 2]
  ------------------
 4208|  5.16k|		S = lshift(S, s2);
 4209|  5.16k|	if (k_check) {
  ------------------
  |  Branch (4209:6): [True: 2.48k, False: 2.67k]
  ------------------
 4210|  2.48k|		if (cmp(b,S) < 0) {
  ------------------
  |  Branch (4210:7): [True: 9, False: 2.48k]
  ------------------
 4211|      9|			k--;
 4212|      9|			b = multadd(b, 10, 0);	/* we botched the k estimate */
 4213|      9|			if (leftright)
  ------------------
  |  Branch (4213:8): [True: 8, False: 1]
  ------------------
 4214|      8|				mhi = multadd(mhi, 10, 0);
 4215|      9|			ilim = ilim1;
 4216|      9|			}
 4217|  2.48k|		}
 4218|  5.16k|	if (ilim <= 0 && (mode == 3 || mode == 5)) {
  ------------------
  |  Branch (4218:6): [True: 4.91k, False: 251]
  |  Branch (4218:20): [True: 1, False: 4.91k]
  |  Branch (4218:33): [True: 0, False: 4.91k]
  ------------------
 4219|      1|		if (ilim < 0 || cmp(b,S = multadd(S,5,0)) <= 0) {
  ------------------
  |  Branch (4219:7): [True: 1, False: 0]
  |  Branch (4219:19): [True: 0, False: 0]
  ------------------
 4220|       |			/* no digits, fcvt style */
 4221|      1| no_digits:
 4222|      1|			k = -1 - ndigits;
 4223|      1|			goto ret;
 4224|      1|			}
 4225|      0| one_digit:
 4226|      0|		*s++ = '1';
 4227|      0|		k++;
 4228|      0|		goto ret;
 4229|      1|		}
 4230|  5.16k|	if (leftright) {
  ------------------
  |  Branch (4230:6): [True: 4.91k, False: 251]
  ------------------
 4231|  4.91k|		if (m2 > 0)
  ------------------
  |  Branch (4231:7): [True: 4.90k, False: 1]
  ------------------
 4232|  4.90k|			mhi = lshift(mhi, m2);
 4233|       |
 4234|       |		/* Compute mlo -- check for special case
 4235|       |		 * that d is a normalized power of 2.
 4236|       |		 */
 4237|       |
 4238|  4.91k|		mlo = mhi;
 4239|  4.91k|		if (spec_case) {
  ------------------
  |  Branch (4239:7): [True: 186, False: 4.72k]
  ------------------
 4240|    186|			mhi = Balloc(mhi->k);
 4241|    186|			Bcopy(mhi, mlo);
  ------------------
  |  |  634|    186|#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
  |  |  635|    186|y->wds*sizeof(Long) + 2*sizeof(int))
  ------------------
 4242|    186|			mhi = lshift(mhi, Log2P);
  ------------------
  |  |  376|    186|#define Log2P 1
  ------------------
 4243|    186|			}
 4244|       |
 4245|  34.9k|		for(i = 1;;i++) {
 4246|  34.9k|			dig = quorem(b,S) + '0';
 4247|       |			/* Do we yet have the shortest decimal string
 4248|       |			 * that will round to d?
 4249|       |			 */
 4250|  34.9k|			j = cmp(b, mlo);
 4251|  34.9k|			delta = diff(S, mhi);
 4252|  34.9k|			j1 = delta->sign ? 1 : cmp(b, delta);
  ------------------
  |  Branch (4252:9): [True: 237, False: 34.6k]
  ------------------
 4253|  34.9k|			Bfree(delta);
 4254|  34.9k|#ifndef ROUND_BIASED
 4255|  34.9k|			if (j1 == 0 && mode != 1 && !(word1(&u) & 1)
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (4255:8): [True: 0, False: 34.9k]
  |  Branch (4255:19): [True: 0, False: 0]
  |  Branch (4255:32): [True: 0, False: 0]
  ------------------
 4256|       |#ifdef Honor_FLT_ROUNDS
 4257|       |				&& Rounding >= 1
 4258|       |#endif
 4259|  34.9k|								   ) {
 4260|      0|				if (dig == '9')
  ------------------
  |  Branch (4260:9): [True: 0, False: 0]
  ------------------
 4261|      0|					goto round_9_up;
 4262|      0|				if (j > 0)
  ------------------
  |  Branch (4262:9): [True: 0, False: 0]
  ------------------
 4263|      0|					dig++;
 4264|       |#ifdef SET_INEXACT
 4265|       |				else if (!b->x[0] && b->wds <= 1)
 4266|       |					inexact = 0;
 4267|       |#endif
 4268|      0|				*s++ = dig;
 4269|      0|				goto ret;
 4270|      0|				}
 4271|  34.9k|#endif
 4272|  34.9k|			if (j < 0 || (j == 0 && mode != 1
  ------------------
  |  Branch (4272:8): [True: 3.28k, False: 31.6k]
  |  Branch (4272:18): [True: 10, False: 31.6k]
  |  Branch (4272:28): [True: 10, False: 0]
  ------------------
 4273|     10|#ifndef ROUND_BIASED
 4274|     10|							&& !(word1(&u) & 1)
  ------------------
  |  |  319|     10|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (4274:11): [True: 1, False: 9]
  ------------------
 4275|  31.6k|#endif
 4276|  31.6k|					)) {
 4277|  3.28k|				if (!b->x[0] && b->wds <= 1) {
  ------------------
  |  Branch (4277:9): [True: 30, False: 3.25k]
  |  Branch (4277:21): [True: 8, False: 22]
  ------------------
 4278|       |#ifdef SET_INEXACT
 4279|       |					inexact = 0;
 4280|       |#endif
 4281|      8|					goto accept_dig;
 4282|      8|					}
 4283|       |#ifdef Honor_FLT_ROUNDS
 4284|       |				if (mode > 1)
 4285|       |				 switch(Rounding) {
 4286|       |				  case 0: goto accept_dig;
 4287|       |				  case 2: goto keep_dig;
 4288|       |				  }
 4289|       |#endif /*Honor_FLT_ROUNDS*/
 4290|  3.27k|				if (j1 > 0) {
  ------------------
  |  Branch (4290:9): [True: 284, False: 2.99k]
  ------------------
 4291|    284|					b = lshift(b, 1);
 4292|    284|					j1 = cmp(b, S);
 4293|       |#ifdef ROUND_BIASED
 4294|       |					if (j1 >= 0 /*)*/
 4295|       |#else
 4296|    284|					if ((j1 > 0 || (j1 == 0 && dig & 1))
  ------------------
  |  Branch (4296:11): [True: 218, False: 66]
  |  Branch (4296:22): [True: 0, False: 66]
  |  Branch (4296:33): [True: 0, False: 0]
  ------------------
 4297|    218|#endif
 4298|    218|					&& dig++ == '9')
  ------------------
  |  Branch (4298:9): [True: 0, False: 218]
  ------------------
 4299|      0|						goto round_9_up;
 4300|    284|					}
 4301|  3.28k| accept_dig:
 4302|  3.28k|				*s++ = dig;
 4303|  3.28k|				goto ret;
 4304|  3.27k|				}
 4305|  31.6k|			if (j1 > 0) {
  ------------------
  |  Branch (4305:8): [True: 1.62k, False: 30.0k]
  ------------------
 4306|       |#ifdef Honor_FLT_ROUNDS
 4307|       |				if (!Rounding)
 4308|       |					goto accept_dig;
 4309|       |#endif
 4310|  1.62k|				if (dig == '9') { /* possible if i == 1 */
  ------------------
  |  Branch (4310:9): [True: 2, False: 1.62k]
  ------------------
 4311|      2| round_9_up:
 4312|      2|					*s++ = '9';
 4313|      2|					goto roundoff;
 4314|      2|					}
 4315|  1.62k|				*s++ = dig + 1;
 4316|  1.62k|				goto ret;
 4317|  1.62k|				}
 4318|       |#ifdef Honor_FLT_ROUNDS
 4319|       | keep_dig:
 4320|       |#endif
 4321|  30.0k|			*s++ = dig;
 4322|  30.0k|			if (i == ilim)
  ------------------
  |  Branch (4322:8): [True: 0, False: 30.0k]
  ------------------
 4323|      0|				break;
 4324|  30.0k|			b = multadd(b, 10, 0);
 4325|  30.0k|			if (mlo == mhi)
  ------------------
  |  Branch (4325:8): [True: 27.2k, False: 2.78k]
  ------------------
 4326|  27.2k|				mlo = mhi = multadd(mhi, 10, 0);
 4327|  2.78k|			else {
 4328|  2.78k|				mlo = multadd(mlo, 10, 0);
 4329|  2.78k|				mhi = multadd(mhi, 10, 0);
 4330|  2.78k|				}
 4331|  30.0k|			}
 4332|  4.91k|		}
 4333|    251|	else
 4334|  3.58k|		for(i = 1;; i++) {
 4335|  3.58k|			*s++ = dig = quorem(b,S) + '0';
 4336|  3.58k|			if (!b->x[0] && b->wds <= 1) {
  ------------------
  |  Branch (4336:8): [True: 75, False: 3.51k]
  |  Branch (4336:20): [True: 8, False: 67]
  ------------------
 4337|       |#ifdef SET_INEXACT
 4338|       |				inexact = 0;
 4339|       |#endif
 4340|      8|				goto ret;
 4341|      8|				}
 4342|  3.57k|			if (i >= ilim)
  ------------------
  |  Branch (4342:8): [True: 243, False: 3.33k]
  ------------------
 4343|    243|				break;
 4344|  3.33k|			b = multadd(b, 10, 0);
 4345|  3.33k|			}
 4346|       |
 4347|       |	/* Round off last digit */
 4348|       |
 4349|       |#ifdef Honor_FLT_ROUNDS
 4350|       |	switch(Rounding) {
 4351|       |	  case 0: goto trimzeros;
 4352|       |	  case 2: goto roundoff;
 4353|       |	  }
 4354|       |#endif
 4355|    243|	b = lshift(b, 1);
 4356|    243|	j = cmp(b, S);
 4357|       |#ifdef ROUND_BIASED
 4358|       |	if (j >= 0)
 4359|       |#else
 4360|    243|	if (j > 0 || (j == 0 && dig & 1))
  ------------------
  |  Branch (4360:6): [True: 128, False: 115]
  |  Branch (4360:16): [True: 50, False: 65]
  |  Branch (4360:26): [True: 36, False: 14]
  ------------------
 4361|    164|#endif
 4362|    164|		{
 4363|    166| roundoff:
 4364|    166|		while(*--s == '9')
  ------------------
  |  Branch (4364:9): [True: 2, False: 164]
  ------------------
 4365|      2|			if (s == s0) {
  ------------------
  |  Branch (4365:8): [True: 2, False: 0]
  ------------------
 4366|      2|				k++;
 4367|      2|				*s++ = '1';
 4368|      2|				goto ret;
 4369|      2|				}
 4370|    164|		++*s++;
 4371|    164|		}
 4372|     79|	else {
 4373|       |#ifdef Honor_FLT_ROUNDS
 4374|       | trimzeros:
 4375|       |#endif
 4376|     80|		while(*--s == '0');
  ------------------
  |  Branch (4376:9): [True: 1, False: 79]
  ------------------
 4377|     79|		s++;
 4378|     79|		}
 4379|  5.16k| ret:
 4380|  5.16k|	Bfree(S);
 4381|  5.16k|	if (mhi) {
  ------------------
  |  Branch (4381:6): [True: 4.91k, False: 252]
  ------------------
 4382|  4.91k|		if (mlo && mlo != mhi)
  ------------------
  |  Branch (4382:7): [True: 4.91k, False: 0]
  |  Branch (4382:14): [True: 186, False: 4.72k]
  ------------------
 4383|    186|			Bfree(mlo);
 4384|  4.91k|		Bfree(mhi);
 4385|  4.91k|		}
 4386|  9.92k| ret1:
 4387|       |#ifdef SET_INEXACT
 4388|       |	if (inexact) {
 4389|       |		if (!oldinexact) {
 4390|       |			word0(&u) = Exp_1 + (70 << Exp_shift);
 4391|       |			word1(&u) = 0;
 4392|       |			dval(&u) += 1.;
 4393|       |			}
 4394|       |		}
 4395|       |	else if (!oldinexact)
 4396|       |		clear_inexact();
 4397|       |#endif
 4398|  9.92k|	Bfree(b);
 4399|  9.92k|	*s = 0;
 4400|  9.92k|	*decpt = k + 1;
 4401|  9.92k|	if (rve)
  ------------------
  |  Branch (4401:6): [True: 17, False: 9.90k]
  ------------------
 4402|     17|		*rve = s;
 4403|  9.92k|	return s0;
 4404|  5.16k|	}
zend_hex_strtod:
 4407|     15|{
 4408|     15|	const char *s = str;
 4409|     15|	char c;
 4410|     15|	int any = 0;
 4411|     15|	double value = 0;
 4412|       |
 4413|     15|	if (*s == '0' && (s[1] == 'x' || s[1] == 'X')) {
  ------------------
  |  Branch (4413:6): [True: 0, False: 15]
  |  Branch (4413:20): [True: 0, False: 0]
  |  Branch (4413:35): [True: 0, False: 0]
  ------------------
 4414|      0|		s += 2;
 4415|      0|	}
 4416|       |
 4417|    290|	while ((c = *s++)) {
  ------------------
  |  Branch (4417:9): [True: 284, False: 6]
  ------------------
 4418|    284|		if (c >= '0' && c <= '9') {
  ------------------
  |  Branch (4418:7): [True: 276, False: 8]
  |  Branch (4418:19): [True: 106, False: 170]
  ------------------
 4419|    106|			c -= '0';
 4420|    178|		} else if (c >= 'A' && c <= 'F') {
  ------------------
  |  Branch (4420:14): [True: 170, False: 8]
  |  Branch (4420:26): [True: 169, False: 1]
  ------------------
 4421|    169|			c -= 'A' - 10;
 4422|    169|		} else if (c >= 'a' && c <= 'f') {
  ------------------
  |  Branch (4422:14): [True: 1, False: 8]
  |  Branch (4422:26): [True: 0, False: 1]
  ------------------
 4423|      0|			c -= 'a' - 10;
 4424|      9|		} else {
 4425|      9|			break;
 4426|      9|		}
 4427|       |
 4428|    275|		any = 1;
 4429|    275|		value = value * 16 + c;
 4430|    275|	}
 4431|       |
 4432|     15|	if (endptr != NULL) {
  ------------------
  |  Branch (4432:6): [True: 15, False: 0]
  ------------------
 4433|     15|		*endptr = any ? s - 1 : str;
  ------------------
  |  Branch (4433:13): [True: 15, False: 0]
  ------------------
 4434|     15|	}
 4435|       |
 4436|     15|	return value;
 4437|     15|}
zend_oct_strtod:
 4440|      3|{
 4441|      3|	const char *s = str;
 4442|      3|	char c;
 4443|      3|	double value = 0;
 4444|      3|	int any = 0;
 4445|       |
 4446|      3|	if (str[0] == '\0') {
  ------------------
  |  Branch (4446:6): [True: 0, False: 3]
  ------------------
 4447|      0|		if (endptr != NULL) {
  ------------------
  |  Branch (4447:7): [True: 0, False: 0]
  ------------------
 4448|      0|			*endptr = str;
 4449|      0|		}
 4450|      0|		return 0.0;
 4451|      0|	}
 4452|       |
 4453|    124|	while ((c = *s++)) {
  ------------------
  |  Branch (4453:9): [True: 124, False: 0]
  ------------------
 4454|    124|		if (c < '0' || c > '7') {
  ------------------
  |  Branch (4454:7): [True: 1, False: 123]
  |  Branch (4454:18): [True: 2, False: 121]
  ------------------
 4455|       |			/* break and return the current value if the number is not well-formed
 4456|       |			 * that's what Linux strtol() does
 4457|       |			 */
 4458|      3|			break;
 4459|      3|		}
 4460|    121|		value = value * 8 + c - '0';
 4461|    121|		any = 1;
 4462|    121|	}
 4463|       |
 4464|      3|	if (endptr != NULL) {
  ------------------
  |  Branch (4464:6): [True: 3, False: 0]
  ------------------
 4465|      3|		*endptr = any ? s - 1 : str;
  ------------------
  |  Branch (4465:13): [True: 3, False: 0]
  ------------------
 4466|      3|	}
 4467|       |
 4468|      3|	return value;
 4469|      3|}
zend_gcvt:
 4510|  10.4k|{
 4511|  10.4k|	char *digits, *dst, *src;
 4512|  10.4k|	int i, decpt;
 4513|  10.4k|	bool sign;
 4514|  10.4k|	int mode = ndigit >= 0 ? 2 : 0;
  ------------------
  |  Branch (4514:13): [True: 5.49k, False: 4.95k]
  ------------------
 4515|       |
 4516|  10.4k|	if (mode == 0) {
  ------------------
  |  Branch (4516:6): [True: 4.95k, False: 5.49k]
  ------------------
 4517|  4.95k|		ndigit = 17;
 4518|  4.95k|	}
 4519|  10.4k|	digits = zend_dtoa(value, mode, ndigit, &decpt, &sign, NULL);
 4520|  10.4k|	if (decpt == 9999) {
  ------------------
  |  Branch (4520:6): [True: 160, False: 10.2k]
  ------------------
 4521|       |		/*
 4522|       |		 * Infinity or NaN, convert to inf or nan with sign.
 4523|       |		 * We assume the buffer is at least ndigit long.
 4524|       |		 */
 4525|    160|		snprintf(buf, ndigit + 1, "%s%s", (sign && *digits == 'I') ? "-" : "", *digits == 'I' ? "INF" : "NAN");
  ------------------
  |  Branch (4525:38): [True: 147, False: 13]
  |  Branch (4525:46): [True: 145, False: 2]
  |  Branch (4525:74): [True: 158, False: 2]
  ------------------
 4526|    160|		zend_freedtoa(digits);
 4527|    160|		return (buf);
 4528|    160|	}
 4529|       |
 4530|  10.2k|	dst = buf;
 4531|  10.2k|	if (sign) {
  ------------------
  |  Branch (4531:6): [True: 2.95k, False: 7.33k]
  ------------------
 4532|  2.95k|		*dst++ = '-';
 4533|  2.95k|	}
 4534|       |
 4535|  10.2k|	if ((decpt >= 0 && decpt > ndigit) || decpt < -3) { /* use E-style */
  ------------------
  |  Branch (4535:7): [True: 8.86k, False: 1.42k]
  |  Branch (4535:21): [True: 2.19k, False: 6.67k]
  |  Branch (4535:40): [True: 37, False: 8.06k]
  ------------------
 4536|       |		/* exponential format (e.g. 1.2345e+13) */
 4537|  2.22k|		if (--decpt < 0) {
  ------------------
  |  Branch (4537:7): [True: 37, False: 2.19k]
  ------------------
 4538|     37|			sign = true;
 4539|     37|			decpt = -decpt;
 4540|  2.19k|		} else {
 4541|  2.19k|			sign = false;
 4542|  2.19k|		}
 4543|  2.22k|		src = digits;
 4544|  2.22k|		*dst++ = *src++;
 4545|  2.22k|		*dst++ = dec_point;
 4546|  2.22k|		if (*src == '\0') {
  ------------------
  |  Branch (4546:7): [True: 118, False: 2.10k]
  ------------------
 4547|    118|			*dst++ = '0';
 4548|  2.10k|		} else {
 4549|  27.8k|			do {
 4550|  27.8k|				*dst++ = *src++;
 4551|  27.8k|			} while (*src != '\0');
  ------------------
  |  Branch (4551:13): [True: 25.7k, False: 2.10k]
  ------------------
 4552|  2.10k|		}
 4553|  2.22k|		*dst++ = exponent;
 4554|  2.22k|		if (sign) {
  ------------------
  |  Branch (4554:7): [True: 37, False: 2.19k]
  ------------------
 4555|     37|			*dst++ = '-';
 4556|  2.19k|		} else {
 4557|  2.19k|			*dst++ = '+';
 4558|  2.19k|		}
 4559|  2.22k|		if (decpt < 10) {
  ------------------
  |  Branch (4559:7): [True: 20, False: 2.20k]
  ------------------
 4560|     20|			*dst++ = '0' + decpt;
 4561|     20|			*dst = '\0';
 4562|  2.20k|		} else {
 4563|       |			/* XXX - optimize */
 4564|  2.20k|			int n;
 4565|  4.88k|			for (n = decpt, i = 0; (n /= 10) != 0; i++);
  ------------------
  |  Branch (4565:27): [True: 2.67k, False: 2.20k]
  ------------------
 4566|  2.20k|			dst[i + 1] = '\0';
 4567|  7.08k|			while (decpt != 0) {
  ------------------
  |  Branch (4567:11): [True: 4.88k, False: 2.20k]
  ------------------
 4568|  4.88k|				dst[i--] = '0' + decpt % 10;
 4569|  4.88k|				decpt /= 10;
 4570|  4.88k|			}
 4571|  2.20k|		}
 4572|  8.06k|	} else if (decpt < 0) {
  ------------------
  |  Branch (4572:13): [True: 1.38k, False: 6.67k]
  ------------------
 4573|       |		/* standard format 0. */
 4574|  1.38k|		*dst++ = '0';   /* zero before decimal point */
 4575|  1.38k|		*dst++ = dec_point;
 4576|  1.40k|		do {
 4577|  1.40k|			*dst++ = '0';
 4578|  1.40k|		} while (++decpt < 0);
  ------------------
  |  Branch (4578:12): [True: 13, False: 1.38k]
  ------------------
 4579|  1.38k|		src = digits;
 4580|  5.68k|		while (*src != '\0') {
  ------------------
  |  Branch (4580:10): [True: 4.29k, False: 1.38k]
  ------------------
 4581|  4.29k|			*dst++ = *src++;
 4582|  4.29k|		}
 4583|  1.38k|		*dst = '\0';
 4584|  6.67k|	} else {
 4585|       |		/* standard format */
 4586|  21.4k|		for (i = 0, src = digits; i < decpt; i++) {
  ------------------
  |  Branch (4586:29): [True: 14.7k, False: 6.67k]
  ------------------
 4587|  14.7k|			if (*src != '\0') {
  ------------------
  |  Branch (4587:8): [True: 14.7k, False: 30]
  ------------------
 4588|  14.7k|				*dst++ = *src++;
 4589|  14.7k|			} else {
 4590|     30|				*dst++ = '0';
 4591|     30|			}
 4592|  14.7k|		}
 4593|  6.67k|		if (*src != '\0') {
  ------------------
  |  Branch (4593:7): [True: 6.00k, False: 670]
  ------------------
 4594|  6.00k|			if (src == digits) {
  ------------------
  |  Branch (4594:8): [True: 2.69k, False: 3.31k]
  ------------------
 4595|  2.69k|				*dst++ = '0';   /* zero before decimal point */
 4596|  2.69k|			}
 4597|  6.00k|			*dst++ = dec_point;
 4598|  41.4k|			for (i = decpt; digits[i] != '\0'; i++) {
  ------------------
  |  Branch (4598:20): [True: 35.4k, False: 6.00k]
  ------------------
 4599|  35.4k|				*dst++ = digits[i];
 4600|  35.4k|			}
 4601|  6.00k|		}
 4602|  6.67k|		*dst = '\0';
 4603|  6.67k|	}
 4604|  10.2k|	zend_freedtoa(digits);
 4605|  10.2k|	return (buf);
 4606|  10.4k|}
zend_strtod.c:Bfree:
  621|  99.0k|{
  622|  99.0k|	if (v) {
  ------------------
  |  Branch (622:6): [True: 99.0k, False: 0]
  ------------------
  623|  99.0k|		if (v->k > Kmax)
  ------------------
  |  |  533|  99.0k|#define Kmax ZEND_STRTOD_K_MAX
  |  |  ------------------
  |  |  |  |   25|  99.0k|#define ZEND_STRTOD_K_MAX 7
  |  |  ------------------
  ------------------
  |  Branch (623:7): [True: 1, False: 99.0k]
  ------------------
  624|      1|			FREE((void*)v);
  ------------------
  |  |  238|      1|#define FREE   free
  ------------------
  625|  99.0k|		else {
  626|  99.0k|			ACQUIRE_DTOA_LOCK(0);
  627|  99.0k|			v->next = freelist[v->k];
  ------------------
  |  |  207|  99.0k|#define freelist    (EG(strtod_state).freelist)
  |  |  ------------------
  |  |  |  |   45|  99.0k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  628|  99.0k|			freelist[v->k] = v;
  ------------------
  |  |  207|  99.0k|#define freelist    (EG(strtod_state).freelist)
  |  |  ------------------
  |  |  |  |   45|  99.0k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  629|  99.0k|			FREE_DTOA_LOCK(0);
  630|  99.0k|			}
  631|  99.0k|		}
  632|  99.0k|	}
zend_strtod.c:s2b:
  701|  1.02k|{
  702|  1.02k|	Bigint *b;
  ------------------
  |  |  206|  1.02k|#define Bigint      _zend_strtod_bigint
  ------------------
  703|  1.02k|	int i, k;
  704|  1.02k|	Long x, y;
  ------------------
  |  |  195|  1.02k|#define Long int32_t
  ------------------
  705|       |
  706|  1.02k|	x = (nd + 8) / 9;
  707|  2.34k|	for(k = 0, y = 1; x > y; y <<= 1, k++) ;
  ------------------
  |  Branch (707:20): [True: 1.31k, False: 1.02k]
  ------------------
  708|  1.02k|#ifdef Pack_32
  709|  1.02k|	b = Balloc(k);
  710|  1.02k|	b->x[0] = y9;
  711|  1.02k|	b->wds = 1;
  712|       |#else
  713|       |	b = Balloc(k+1);
  714|       |	b->x[0] = y9 & 0xffff;
  715|       |	b->wds = (b->x[1] = y9 >> 16) ? 2 : 1;
  716|       |#endif
  717|       |
  718|  1.02k|	i = 9;
  719|  1.02k|	if (9 < nd0) {
  ------------------
  |  Branch (719:6): [True: 671, False: 352]
  ------------------
  720|    671|		s += 9;
  721|  7.76k|		do b = multadd(b, 10, *s++ - '0');
  722|  7.76k|			while(++i < nd0);
  ------------------
  |  Branch (722:10): [True: 7.09k, False: 671]
  ------------------
  723|    671|		s += dplen;
  724|    671|		}
  725|    352|	else
  726|    352|		s += dplen + 9;
  727|  3.34k|	for(; i < nd; i++)
  ------------------
  |  Branch (727:8): [True: 2.31k, False: 1.02k]
  ------------------
  728|  2.31k|		b = multadd(b, 10, *s++ - '0');
  729|  1.02k|	return b;
  730|  1.02k|	}
zend_strtod.c:Balloc:
  572|  99.0k|{
  573|  99.0k|	int x;
  574|  99.0k|	Bigint *rv;
  ------------------
  |  |  206|  99.0k|#define Bigint      _zend_strtod_bigint
  ------------------
  575|       |#ifndef Omit_Private_Memory
  576|       |	unsigned int len;
  577|       |#endif
  578|       |
  579|  99.0k|	ACQUIRE_DTOA_LOCK(0);
  580|       |	/* The k > Kmax case does not need ACQUIRE_DTOA_LOCK(0), */
  581|       |	/* but this case seems very unlikely. */
  582|  99.0k|	if (k <= Kmax && (rv = freelist[k]))
  ------------------
  |  |  533|  99.0k|#define Kmax ZEND_STRTOD_K_MAX
  |  |  ------------------
  |  |  |  |   25|   198k|#define ZEND_STRTOD_K_MAX 7
  |  |  ------------------
  ------------------
              	if (k <= Kmax && (rv = freelist[k]))
  ------------------
  |  |  207|  99.0k|#define freelist    (EG(strtod_state).freelist)
  |  |  ------------------
  |  |  |  |   45|  99.0k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (582:6): [True: 99.0k, False: 1]
  |  Branch (582:19): [True: 99.0k, False: 32]
  ------------------
  583|  99.0k|		freelist[k] = rv->next;
  ------------------
  |  |  207|  99.0k|#define freelist    (EG(strtod_state).freelist)
  |  |  ------------------
  |  |  |  |   45|  99.0k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  584|     33|	else {
  585|     33|		x = 1 << k;
  586|     33|#ifdef Omit_Private_Memory
  587|     33|		rv = (Bigint *)MALLOC(sizeof(Bigint) + (x-1)*sizeof(ULong));
  ------------------
  |  |  237|     33|#define MALLOC malloc
  ------------------
  588|     33|		if (!rv) {
  ------------------
  |  Branch (588:7): [True: 0, False: 33]
  ------------------
  589|      0|			FREE_DTOA_LOCK(0);
  590|      0|			zend_error_noreturn(E_ERROR, "Balloc() failed to allocate memory");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  591|      0|		}
  592|       |#else
  593|       |		len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
  594|       |			/sizeof(double);
  595|       |		if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) {
  596|       |			rv = (Bigint*)pmem_next;
  597|       |			pmem_next += len;
  598|       |			}
  599|       |		else
  600|       |			rv = (Bigint*)MALLOC(len*sizeof(double));
  601|       |			if (!rv) {
  602|       |				FREE_DTOA_LOCK(0);
  603|       |				zend_error_noreturn(E_ERROR, "Balloc() failed to allocate memory");
  604|       |			}
  605|       |#endif
  606|     33|		rv->k = k;
  607|     33|		rv->maxwds = x;
  608|     33|		}
  609|  99.0k|	FREE_DTOA_LOCK(0);
  610|  99.0k|	rv->sign = rv->wds = 0;
  611|  99.0k|	return rv;
  612|  99.0k|	}
zend_strtod.c:d2b:
 1308|  11.3k|{
 1309|  11.3k|	Bigint *b;
  ------------------
  |  |  206|  11.3k|#define Bigint      _zend_strtod_bigint
  ------------------
 1310|  11.3k|	int de, k;
 1311|  11.3k|	ULong *x, y, z;
  ------------------
  |  |  198|  11.3k|#define ULong uint32_t
  ------------------
 1312|  11.3k|#ifndef Sudden_Underflow
 1313|  11.3k|	int i;
 1314|  11.3k|#endif
 1315|       |#ifdef VAX
 1316|       |	ULong d0, d1;
 1317|       |	d0 = word0(d) >> 16 | word0(d) << 16;
 1318|       |	d1 = word1(d) >> 16 | word1(d) << 16;
 1319|       |#else
 1320|  11.3k|#define d0 word0(d)
 1321|  11.3k|#define d1 word1(d)
 1322|  11.3k|#endif
 1323|       |
 1324|  11.3k|#ifdef Pack_32
 1325|  11.3k|	b = Balloc(1);
 1326|       |#else
 1327|       |	b = Balloc(2);
 1328|       |#endif
 1329|  11.3k|	x = b->x;
 1330|       |
 1331|  11.3k|	z = d0 & Frac_mask;
  ------------------
  |  | 1320|  11.3k|#define d0 word0(d)
  |  |  ------------------
  |  |  |  |  318|  11.3k|#define word0(x) (x)->L[1]
  |  |  ------------------
  ------------------
              	z = d0 & Frac_mask;
  ------------------
  |  |  368|  11.3k|#define Frac_mask  0xfffff
  ------------------
 1332|  11.3k|	d0 &= 0x7fffffff;	/* clear sign bit, which we ignore */
  ------------------
  |  | 1320|  11.3k|#define d0 word0(d)
  |  |  ------------------
  |  |  |  |  318|  11.3k|#define word0(x) (x)->L[1]
  |  |  ------------------
  ------------------
 1333|       |#ifdef Sudden_Underflow
 1334|       |	de = (int)(d0 >> Exp_shift);
 1335|       |#ifndef IBM
 1336|       |	z |= Exp_msk11;
 1337|       |#endif
 1338|       |#else
 1339|  11.3k|	if ((de = (int)(d0 >> Exp_shift)))
  ------------------
  |  | 1320|  11.3k|#define d0 word0(d)
  |  |  ------------------
  |  |  |  |  318|  11.3k|#define word0(x) (x)->L[1]
  |  |  ------------------
  ------------------
              	if ((de = (int)(d0 >> Exp_shift)))
  ------------------
  |  |  355|  11.3k|#define Exp_shift  20
  ------------------
  |  Branch (1339:6): [True: 11.3k, False: 3]
  ------------------
 1340|  11.3k|		z |= Exp_msk1;
  ------------------
  |  |  357|  11.3k|#define Exp_msk1    0x100000
  ------------------
 1341|  11.3k|#endif
 1342|  11.3k|#ifdef Pack_32
 1343|  11.3k|	if ((y = d1)) {
  ------------------
  |  | 1321|  11.3k|#define d1 word1(d)
  |  |  ------------------
  |  |  |  |  319|  11.3k|#define word1(x) (x)->L[0]
  |  |  ------------------
  ------------------
  |  Branch (1343:6): [True: 9.96k, False: 1.39k]
  ------------------
 1344|  9.96k|		if ((k = lo0bits(&y))) {
  ------------------
  |  Branch (1344:7): [True: 5.25k, False: 4.71k]
  ------------------
 1345|  5.25k|			x[0] = y | z << (32 - k);
 1346|  5.25k|			z >>= k;
 1347|  5.25k|			}
 1348|  4.71k|		else
 1349|  4.71k|			x[0] = y;
 1350|  9.96k|#ifndef Sudden_Underflow
 1351|  9.96k|		i =
 1352|  9.96k|#endif
 1353|  9.96k|		    b->wds = (x[1] = z) ? 2 : 1;
  ------------------
  |  Branch (1353:16): [True: 9.74k, False: 219]
  ------------------
 1354|  9.96k|		}
 1355|  1.39k|	else {
 1356|  1.39k|		k = lo0bits(&z);
 1357|  1.39k|		x[0] = z;
 1358|  1.39k|#ifndef Sudden_Underflow
 1359|  1.39k|		i =
 1360|  1.39k|#endif
 1361|  1.39k|		    b->wds = 1;
 1362|  1.39k|		k += 32;
 1363|  1.39k|		}
 1364|       |#else
 1365|       |	if (y = d1) {
 1366|       |		if (k = lo0bits(&y))
 1367|       |			if (k >= 16) {
 1368|       |				x[0] = y | z << 32 - k & 0xffff;
 1369|       |				x[1] = z >> k - 16 & 0xffff;
 1370|       |				x[2] = z >> k;
 1371|       |				i = 2;
 1372|       |				}
 1373|       |			else {
 1374|       |				x[0] = y & 0xffff;
 1375|       |				x[1] = y >> 16 | z << 16 - k & 0xffff;
 1376|       |				x[2] = z >> k & 0xffff;
 1377|       |				x[3] = z >> k+16;
 1378|       |				i = 3;
 1379|       |				}
 1380|       |		else {
 1381|       |			x[0] = y & 0xffff;
 1382|       |			x[1] = y >> 16;
 1383|       |			x[2] = z & 0xffff;
 1384|       |			x[3] = z >> 16;
 1385|       |			i = 3;
 1386|       |			}
 1387|       |		}
 1388|       |	else {
 1389|       |#ifdef DEBUG
 1390|       |		if (!z)
 1391|       |			Bug("Zero passed to d2b");
 1392|       |#endif
 1393|       |		k = lo0bits(&z);
 1394|       |		if (k >= 16) {
 1395|       |			x[0] = z;
 1396|       |			i = 0;
 1397|       |			}
 1398|       |		else {
 1399|       |			x[0] = z & 0xffff;
 1400|       |			x[1] = z >> 16;
 1401|       |			i = 1;
 1402|       |			}
 1403|       |		k += 32;
 1404|       |		}
 1405|       |	while(!x[i])
 1406|       |		--i;
 1407|       |	b->wds = i + 1;
 1408|       |#endif
 1409|  11.3k|#ifndef Sudden_Underflow
 1410|  11.3k|	if (de) {
  ------------------
  |  Branch (1410:6): [True: 11.3k, False: 3]
  ------------------
 1411|  11.3k|#endif
 1412|       |#ifdef IBM
 1413|       |		*e = (de - Bias - (P-1) << 2) + k;
 1414|       |		*bits = 4*P + 8 - k - hi0bits(word0(d) & Frac_mask);
 1415|       |#else
 1416|  11.3k|		*e = de - Bias - (P-1) + k;
  ------------------
  |  |  362|  11.3k|#define Bias 1023
  ------------------
              		*e = de - Bias - (P-1) + k;
  ------------------
  |  |  360|  11.3k|#define P 53
  ------------------
 1417|  11.3k|		*bits = P - k;
  ------------------
  |  |  360|  11.3k|#define P 53
  ------------------
 1418|  11.3k|#endif
 1419|  11.3k|#ifndef Sudden_Underflow
 1420|  11.3k|		}
 1421|      3|	else {
 1422|      3|		*e = de - Bias - (P-1) + 1 + k;
  ------------------
  |  |  362|      3|#define Bias 1023
  ------------------
              		*e = de - Bias - (P-1) + 1 + k;
  ------------------
  |  |  360|      3|#define P 53
  ------------------
 1423|      3|#ifdef Pack_32
 1424|      3|		*bits = 32*i - hi0bits(x[i-1]);
 1425|       |#else
 1426|       |		*bits = (i+2)*16 - hi0bits(x[i]);
 1427|       |#endif
 1428|      3|		}
 1429|  11.3k|#endif
 1430|  11.3k|	return b;
 1431|  11.3k|	}
zend_strtod.c:lo0bits:
  773|  11.3k|{
  774|  11.3k|	int k;
  775|  11.3k|	ULong x = *y;
  ------------------
  |  |  198|  11.3k|#define ULong uint32_t
  ------------------
  776|       |
  777|  11.3k|	if (x & 7) {
  ------------------
  |  Branch (777:6): [True: 8.59k, False: 2.76k]
  ------------------
  778|  8.59k|		if (x & 1)
  ------------------
  |  Branch (778:7): [True: 4.75k, False: 3.84k]
  ------------------
  779|  4.75k|			return 0;
  780|  3.84k|		if (x & 2) {
  ------------------
  |  Branch (780:7): [True: 2.42k, False: 1.41k]
  ------------------
  781|  2.42k|			*y = x >> 1;
  782|  2.42k|			return 1;
  783|  2.42k|			}
  784|  1.41k|		*y = x >> 2;
  785|  1.41k|		return 2;
  786|  3.84k|		}
  787|  2.76k|	k = 0;
  788|  2.76k|	if (!(x & 0xffff)) {
  ------------------
  |  Branch (788:6): [True: 1.35k, False: 1.40k]
  ------------------
  789|  1.35k|		k = 16;
  790|  1.35k|		x >>= 16;
  791|  1.35k|		}
  792|  2.76k|	if (!(x & 0xff)) {
  ------------------
  |  Branch (792:6): [True: 525, False: 2.23k]
  ------------------
  793|    525|		k += 8;
  794|    525|		x >>= 8;
  795|    525|		}
  796|  2.76k|	if (!(x & 0xf)) {
  ------------------
  |  Branch (796:6): [True: 1.53k, False: 1.22k]
  ------------------
  797|  1.53k|		k += 4;
  798|  1.53k|		x >>= 4;
  799|  1.53k|		}
  800|  2.76k|	if (!(x & 0x3)) {
  ------------------
  |  Branch (800:6): [True: 1.17k, False: 1.58k]
  ------------------
  801|  1.17k|		k += 2;
  802|  1.17k|		x >>= 2;
  803|  1.17k|		}
  804|  2.76k|	if (!(x & 1)) {
  ------------------
  |  Branch (804:6): [True: 1.28k, False: 1.48k]
  ------------------
  805|  1.28k|		k++;
  806|  1.28k|		x >>= 1;
  807|  1.28k|		if (!x)
  ------------------
  |  Branch (807:7): [True: 0, False: 1.28k]
  ------------------
  808|      0|			return 32;
  809|  1.28k|		}
  810|  2.76k|	*y = x;
  811|  2.76k|	return k;
  812|  2.76k|	}
zend_strtod.c:hi0bits:
  739|  6.15k|{
  740|  6.15k|	int k = 0;
  741|       |
  742|  6.15k|	if (!(x & 0xffff0000)) {
  ------------------
  |  Branch (742:6): [True: 5.08k, False: 1.06k]
  ------------------
  743|  5.08k|		k = 16;
  744|  5.08k|		x <<= 16;
  745|  5.08k|		}
  746|  6.15k|	if (!(x & 0xff000000)) {
  ------------------
  |  Branch (746:6): [True: 4.21k, False: 1.94k]
  ------------------
  747|  4.21k|		k += 8;
  748|  4.21k|		x <<= 8;
  749|  4.21k|		}
  750|  6.15k|	if (!(x & 0xf0000000)) {
  ------------------
  |  Branch (750:6): [True: 4.02k, False: 2.12k]
  ------------------
  751|  4.02k|		k += 4;
  752|  4.02k|		x <<= 4;
  753|  4.02k|		}
  754|  6.15k|	if (!(x & 0xc0000000)) {
  ------------------
  |  Branch (754:6): [True: 4.34k, False: 1.80k]
  ------------------
  755|  4.34k|		k += 2;
  756|  4.34k|		x <<= 2;
  757|  4.34k|		}
  758|  6.15k|	if (!(x & 0x80000000)) {
  ------------------
  |  Branch (758:6): [True: 4.62k, False: 1.52k]
  ------------------
  759|  4.62k|		k++;
  760|  4.62k|		if (!(x & 0x40000000))
  ------------------
  |  Branch (760:7): [True: 0, False: 4.62k]
  ------------------
  761|      0|			return 32;
  762|  4.62k|		}
  763|  6.15k|	return k;
  764|  6.15k|	}
zend_strtod.c:i2b:
  821|  11.5k|{
  822|  11.5k|	Bigint *b;
  ------------------
  |  |  206|  11.5k|#define Bigint      _zend_strtod_bigint
  ------------------
  823|       |
  824|  11.5k|	b = Balloc(1);
  825|  11.5k|	b->x[0] = i;
  826|  11.5k|	b->wds = 1;
  827|  11.5k|	return b;
  828|  11.5k|	}
zend_strtod.c:pow5mult:
  951|  5.95k|{
  952|  5.95k|	Bigint *b1, *p5, *p51;
  ------------------
  |  |  206|  5.95k|#define Bigint      _zend_strtod_bigint
  ------------------
  953|  5.95k|	int i;
  954|  5.95k|	static const int p05[3] = { 5, 25, 125 };
  955|       |
  956|  5.95k|	if ((i = k & 3))
  ------------------
  |  Branch (956:6): [True: 5.19k, False: 758]
  ------------------
  957|  5.19k|		b = multadd(b, p05[i-1], 0);
  958|       |
  959|  5.95k|	if (!(k >>= 2))
  ------------------
  |  Branch (959:6): [True: 3.02k, False: 2.93k]
  ------------------
  960|  3.02k|		return b;
  961|  2.93k|	if (!(p5 = p5s)) {
  ------------------
  |  |  208|  2.93k|#define p5s         (EG(strtod_state).p5s)
  |  |  ------------------
  |  |  |  |   45|  2.93k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (961:6): [True: 1, False: 2.92k]
  ------------------
  962|       |		/* first time */
  963|       |#ifdef MULTIPLE_THREADS
  964|       |		ACQUIRE_DTOA_LOCK(1);
  965|       |		if (!(p5 = p5s)) {
  966|       |			p5 = p5s = i2b(625);
  967|       |			p5->next = 0;
  968|       |			}
  969|       |		FREE_DTOA_LOCK(1);
  970|       |#else
  971|      1|		p5 = p5s = i2b(625);
  ------------------
  |  |  208|      1|#define p5s         (EG(strtod_state).p5s)
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  972|      1|		p5->next = 0;
  973|      1|#endif
  974|      1|		}
  975|  10.2k|	for(;;) {
  976|  10.2k|		if (k & 1) {
  ------------------
  |  Branch (976:7): [True: 6.13k, False: 4.08k]
  ------------------
  977|  6.13k|			b1 = mult(b, p5);
  978|  6.13k|			Bfree(b);
  979|  6.13k|			b = b1;
  980|  6.13k|			}
  981|  10.2k|		if (!(k >>= 1))
  ------------------
  |  Branch (981:7): [True: 2.93k, False: 7.28k]
  ------------------
  982|  2.93k|			break;
  983|  7.28k|		if (!(p51 = p5->next)) {
  ------------------
  |  Branch (983:7): [True: 6, False: 7.27k]
  ------------------
  984|       |#ifdef MULTIPLE_THREADS
  985|       |			ACQUIRE_DTOA_LOCK(1);
  986|       |			if (!(p51 = p5->next)) {
  987|       |				p51 = p5->next = mult(p5,p5);
  988|       |				p51->next = 0;
  989|       |				}
  990|       |			FREE_DTOA_LOCK(1);
  991|       |#else
  992|      6|			p51 = p5->next = mult(p5,p5);
  993|      6|			p51->next = 0;
  994|      6|#endif
  995|      6|			}
  996|  7.28k|		p5 = p51;
  997|  7.28k|		}
  998|  2.93k|	return b;
  999|  5.95k|	}
zend_strtod.c:mult:
  837|  7.97k|{
  838|  7.97k|	Bigint *c;
  ------------------
  |  |  206|  7.97k|#define Bigint      _zend_strtod_bigint
  ------------------
  839|  7.97k|	int k, wa, wb, wc;
  840|  7.97k|	ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0;
  ------------------
  |  |  198|  7.97k|#define ULong uint32_t
  ------------------
  841|  7.97k|	ULong y;
  ------------------
  |  |  198|  7.97k|#define ULong uint32_t
  ------------------
  842|  7.97k|#ifdef ULLong
  843|  7.97k|	ULLong carry, z;
  ------------------
  |  |  524|  7.97k|#define ULLong unsigned Llong
  ------------------
  844|       |#else
  845|       |	ULong carry, z;
  846|       |#ifdef Pack_32
  847|       |	ULong z2;
  848|       |#endif
  849|       |#endif
  850|       |
  851|  7.97k|	if (a->wds < b->wds) {
  ------------------
  |  Branch (851:6): [True: 3.55k, False: 4.41k]
  ------------------
  852|  3.55k|		c = a;
  853|  3.55k|		a = b;
  854|  3.55k|		b = c;
  855|  3.55k|		}
  856|  7.97k|	k = a->k;
  857|  7.97k|	wa = a->wds;
  858|  7.97k|	wb = b->wds;
  859|  7.97k|	wc = wa + wb;
  860|  7.97k|	if (wc > a->maxwds)
  ------------------
  |  Branch (860:6): [True: 4.47k, False: 3.50k]
  ------------------
  861|  4.47k|		k++;
  862|  7.97k|	c = Balloc(k);
  863|  45.6k|	for(x = c->x, xa = x + wc; x < xa; x++)
  ------------------
  |  Branch (863:29): [True: 37.6k, False: 7.97k]
  ------------------
  864|  37.6k|		*x = 0;
  865|  7.97k|	xa = a->x;
  866|  7.97k|	xae = xa + wa;
  867|  7.97k|	xb = b->x;
  868|  7.97k|	xbe = xb + wb;
  869|  7.97k|	xc0 = c->x;
  870|  7.97k|#ifdef ULLong
  871|  21.7k|	for(; xb < xbe; xc0++) {
  ------------------
  |  Branch (871:8): [True: 13.7k, False: 7.97k]
  ------------------
  872|  13.7k|		if ((y = *xb++)) {
  ------------------
  |  Branch (872:7): [True: 13.7k, False: 0]
  ------------------
  873|  13.7k|			x = xa;
  874|  13.7k|			xc = xc0;
  875|  13.7k|			carry = 0;
  876|  68.0k|			do {
  877|  68.0k|				z = *x++ * (ULLong)y + *xc + carry;
  878|  68.0k|				carry = z >> 32;
  879|  68.0k|				*xc++ = z & FFFFFFFF;
  ------------------
  |  |  506|  68.0k|#define FFFFFFFF 0xffffffffUL
  ------------------
  880|  68.0k|				}
  881|  68.0k|				while(x < xae);
  ------------------
  |  Branch (881:11): [True: 54.2k, False: 13.7k]
  ------------------
  882|  13.7k|			*xc = carry;
  883|  13.7k|			}
  884|  13.7k|		}
  885|       |#else
  886|       |#ifdef Pack_32
  887|       |	for(; xb < xbe; xb++, xc0++) {
  888|       |		if (y = *xb & 0xffff) {
  889|       |			x = xa;
  890|       |			xc = xc0;
  891|       |			carry = 0;
  892|       |			do {
  893|       |				z = (*x & 0xffff) * y + (*xc & 0xffff) + carry;
  894|       |				carry = z >> 16;
  895|       |				z2 = (*x++ >> 16) * y + (*xc >> 16) + carry;
  896|       |				carry = z2 >> 16;
  897|       |				Storeinc(xc, z2, z);
  898|       |				}
  899|       |				while(x < xae);
  900|       |			*xc = carry;
  901|       |			}
  902|       |		if (y = *xb >> 16) {
  903|       |			x = xa;
  904|       |			xc = xc0;
  905|       |			carry = 0;
  906|       |			z2 = *xc;
  907|       |			do {
  908|       |				z = (*x & 0xffff) * y + (*xc >> 16) + carry;
  909|       |				carry = z >> 16;
  910|       |				Storeinc(xc, z, z2);
  911|       |				z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry;
  912|       |				carry = z2 >> 16;
  913|       |				}
  914|       |				while(x < xae);
  915|       |			*xc = z2;
  916|       |			}
  917|       |		}
  918|       |#else
  919|       |	for(; xb < xbe; xc0++) {
  920|       |		if (y = *xb++) {
  921|       |			x = xa;
  922|       |			xc = xc0;
  923|       |			carry = 0;
  924|       |			do {
  925|       |				z = *x++ * y + *xc + carry;
  926|       |				carry = z >> 16;
  927|       |				*xc++ = z & 0xffff;
  928|       |				}
  929|       |				while(x < xae);
  930|       |			*xc = carry;
  931|       |			}
  932|       |		}
  933|       |#endif
  934|       |#endif
  935|  14.3k|	for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;
  ------------------
  |  Branch (935:33): [True: 14.3k, False: 0]
  |  Branch (935:43): [True: 6.36k, False: 7.97k]
  ------------------
  936|  7.97k|	c->wds = wc;
  937|  7.97k|	return c;
  938|  7.97k|	}
zend_strtod.c:lshift:
 1008|  19.0k|{
 1009|  19.0k|	int i, k1, n, n1;
 1010|  19.0k|	Bigint *b1;
  ------------------
  |  |  206|  19.0k|#define Bigint      _zend_strtod_bigint
  ------------------
 1011|  19.0k|	ULong *x, *x1, *xe, z;
  ------------------
  |  |  198|  19.0k|#define ULong uint32_t
  ------------------
 1012|       |
 1013|  19.0k|#ifdef Pack_32
 1014|  19.0k|	n = k >> 5;
 1015|       |#else
 1016|       |	n = k >> 4;
 1017|       |#endif
 1018|  19.0k|	k1 = b->k;
 1019|  19.0k|	n1 = n + b->wds + 1;
 1020|  33.2k|	for(i = b->maxwds; n1 > i; i <<= 1)
  ------------------
  |  Branch (1020:21): [True: 14.2k, False: 19.0k]
  ------------------
 1021|  14.2k|		k1++;
 1022|  19.0k|	b1 = Balloc(k1);
 1023|  19.0k|	x1 = b1->x;
 1024|  44.6k|	for(i = 0; i < n; i++)
  ------------------
  |  Branch (1024:13): [True: 25.5k, False: 19.0k]
  ------------------
 1025|  25.5k|		*x1++ = 0;
 1026|  19.0k|	x = b->x;
 1027|  19.0k|	xe = x + b->wds;
 1028|  19.0k|#ifdef Pack_32
 1029|  19.0k|	if (k &= 0x1f) {
  ------------------
  |  Branch (1029:6): [True: 18.8k, False: 194]
  ------------------
 1030|  18.8k|		k1 = 32 - k;
 1031|  18.8k|		z = 0;
 1032|  32.4k|		do {
 1033|  32.4k|			*x1++ = *x << k | z;
 1034|  32.4k|			z = *x++ >> k1;
 1035|  32.4k|			}
 1036|  32.4k|			while(x < xe);
  ------------------
  |  Branch (1036:10): [True: 13.5k, False: 18.8k]
  ------------------
 1037|  18.8k|		if ((*x1 = z))
  ------------------
  |  Branch (1037:7): [True: 695, False: 18.1k]
  ------------------
 1038|    695|			++n1;
 1039|  18.8k|		}
 1040|       |#else
 1041|       |	if (k &= 0xf) {
 1042|       |		k1 = 16 - k;
 1043|       |		z = 0;
 1044|       |		do {
 1045|       |			*x1++ = *x << k  & 0xffff | z;
 1046|       |			z = *x++ >> k1;
 1047|       |			}
 1048|       |			while(x < xe);
 1049|       |		if (*x1 = z)
 1050|       |			++n1;
 1051|       |		}
 1052|       |#endif
 1053|    194|	else do
 1054|    336|		*x1++ = *x++;
 1055|    336|		while(x < xe);
  ------------------
  |  Branch (1055:9): [True: 142, False: 194]
  ------------------
 1056|  19.0k|	b1->wds = n1 - 1;
 1057|  19.0k|	Bfree(b);
 1058|  19.0k|	return b1;
 1059|  19.0k|	}
zend_strtod.c:diff:
 1102|  36.1k|{
 1103|  36.1k|	Bigint *c;
  ------------------
  |  |  206|  36.1k|#define Bigint      _zend_strtod_bigint
  ------------------
 1104|  36.1k|	int i, wa, wb;
 1105|  36.1k|	ULong *xa, *xae, *xb, *xbe, *xc;
  ------------------
  |  |  198|  36.1k|#define ULong uint32_t
  ------------------
 1106|  36.1k|#ifdef ULLong
 1107|  36.1k|	ULLong borrow, y;
  ------------------
  |  |  524|  36.1k|#define ULLong unsigned Llong
  ------------------
 1108|       |#else
 1109|       |	ULong borrow, y;
 1110|       |#ifdef Pack_32
 1111|       |	ULong z;
 1112|       |#endif
 1113|       |#endif
 1114|       |
 1115|  36.1k|	i = cmp(a,b);
 1116|  36.1k|	if (!i) {
  ------------------
  |  Branch (1116:6): [True: 21, False: 36.1k]
  ------------------
 1117|     21|		c = Balloc(0);
 1118|     21|		c->wds = 1;
 1119|     21|		c->x[0] = 0;
 1120|     21|		return c;
 1121|     21|		}
 1122|  36.1k|	if (i < 0) {
  ------------------
  |  Branch (1122:6): [True: 697, False: 35.4k]
  ------------------
 1123|    697|		c = a;
 1124|    697|		a = b;
 1125|    697|		b = c;
 1126|    697|		i = 1;
 1127|    697|		}
 1128|  35.4k|	else
 1129|  35.4k|		i = 0;
 1130|  36.1k|	c = Balloc(a->k);
 1131|  36.1k|	c->sign = i;
 1132|  36.1k|	wa = a->wds;
 1133|  36.1k|	xa = a->x;
 1134|  36.1k|	xae = xa + wa;
 1135|  36.1k|	wb = b->wds;
 1136|  36.1k|	xb = b->x;
 1137|  36.1k|	xbe = xb + wb;
 1138|  36.1k|	xc = c->x;
 1139|  36.1k|	borrow = 0;
 1140|  36.1k|#ifdef ULLong
 1141|  62.7k|	do {
 1142|  62.7k|		y = (ULLong)*xa++ - *xb++ - borrow;
 1143|  62.7k|		borrow = y >> 32 & (ULong)1;
 1144|  62.7k|		*xc++ = y & FFFFFFFF;
  ------------------
  |  |  506|  62.7k|#define FFFFFFFF 0xffffffffUL
  ------------------
 1145|  62.7k|		}
 1146|  62.7k|		while(xb < xbe);
  ------------------
  |  Branch (1146:9): [True: 26.5k, False: 36.1k]
  ------------------
 1147|  61.5k|	while(xa < xae) {
  ------------------
  |  Branch (1147:8): [True: 25.3k, False: 36.1k]
  ------------------
 1148|  25.3k|		y = *xa++ - borrow;
 1149|  25.3k|		borrow = y >> 32 & (ULong)1;
 1150|  25.3k|		*xc++ = y & FFFFFFFF;
  ------------------
  |  |  506|  25.3k|#define FFFFFFFF 0xffffffffUL
  ------------------
 1151|  25.3k|		}
 1152|       |#else
 1153|       |#ifdef Pack_32
 1154|       |	do {
 1155|       |		y = (*xa & 0xffff) - (*xb & 0xffff) - borrow;
 1156|       |		borrow = (y & 0x10000) >> 16;
 1157|       |		z = (*xa++ >> 16) - (*xb++ >> 16) - borrow;
 1158|       |		borrow = (z & 0x10000) >> 16;
 1159|       |		Storeinc(xc, z, y);
 1160|       |		}
 1161|       |		while(xb < xbe);
 1162|       |	while(xa < xae) {
 1163|       |		y = (*xa & 0xffff) - borrow;
 1164|       |		borrow = (y & 0x10000) >> 16;
 1165|       |		z = (*xa++ >> 16) - borrow;
 1166|       |		borrow = (z & 0x10000) >> 16;
 1167|       |		Storeinc(xc, z, y);
 1168|       |		}
 1169|       |#else
 1170|       |	do {
 1171|       |		y = *xa++ - *xb++ - borrow;
 1172|       |		borrow = (y & 0x10000) >> 16;
 1173|       |		*xc++ = y & 0xffff;
 1174|       |		}
 1175|       |		while(xb < xbe);
 1176|       |	while(xa < xae) {
 1177|       |		y = *xa++ - borrow;
 1178|       |		borrow = (y & 0x10000) >> 16;
 1179|       |		*xc++ = y & 0xffff;
 1180|       |		}
 1181|       |#endif
 1182|       |#endif
 1183|  38.2k|	while(!*--xc)
  ------------------
  |  Branch (1183:8): [True: 2.11k, False: 36.1k]
  ------------------
 1184|  2.11k|		wa--;
 1185|  36.1k|	c->wds = wa;
 1186|  36.1k|	return c;
 1187|  36.1k|	}
zend_strtod.c:cmp:
 1068|   151k|{
 1069|   151k|	ULong *xa, *xa0, *xb, *xb0;
  ------------------
  |  |  198|   151k|#define ULong uint32_t
  ------------------
 1070|   151k|	int i, j;
 1071|       |
 1072|   151k|	i = a->wds;
 1073|   151k|	j = b->wds;
 1074|       |#ifdef DEBUG
 1075|       |	if (i > 1 && !a->x[i-1])
 1076|       |		Bug("cmp called with a->x[a->wds-1] == 0");
 1077|       |	if (j > 1 && !b->x[j-1])
 1078|       |		Bug("cmp called with b->x[b->wds-1] == 0");
 1079|       |#endif
 1080|   151k|	if (i -= j)
  ------------------
  |  Branch (1080:6): [True: 51.7k, False: 99.8k]
  ------------------
 1081|  51.7k|		return i;
 1082|  99.8k|	xa0 = a->x;
 1083|  99.8k|	xa = xa0 + j;
 1084|  99.8k|	xb0 = b->x;
 1085|  99.8k|	xb = xb0 + j;
 1086|   105k|	for(;;) {
 1087|   105k|		if (*--xa != *--xb)
  ------------------
  |  Branch (1087:7): [True: 99.7k, False: 5.78k]
  ------------------
 1088|  99.7k|			return *xa < *xb ? -1 : 1;
  ------------------
  |  Branch (1088:11): [True: 73.1k, False: 26.5k]
  ------------------
 1089|  5.78k|		if (xa <= xa0)
  ------------------
  |  Branch (1089:7): [True: 98, False: 5.68k]
  ------------------
 1090|     98|			break;
 1091|  5.78k|		}
 1092|     98|	return 0;
 1093|  99.8k|	}
zend_strtod.c:ratio:
 1442|    402|{
 1443|    402|	U da, db;
 1444|    402|	int k, ka, kb;
 1445|       |
 1446|    402|	dval(&da) = b2d(a, &ka);
  ------------------
  |  |  324|    402|#define dval(x) (x)->d
  ------------------
 1447|    402|	dval(&db) = b2d(b, &kb);
  ------------------
  |  |  324|    402|#define dval(x) (x)->d
  ------------------
 1448|    402|#ifdef Pack_32
 1449|    402|	k = ka - kb + 32*(a->wds - b->wds);
 1450|       |#else
 1451|       |	k = ka - kb + 16*(a->wds - b->wds);
 1452|       |#endif
 1453|       |#ifdef IBM
 1454|       |	if (k > 0) {
 1455|       |		word0(&da) += (k >> 2)*Exp_msk1;
 1456|       |		if (k &= 3)
 1457|       |			dval(&da) *= 1 << k;
 1458|       |		}
 1459|       |	else {
 1460|       |		k = -k;
 1461|       |		word0(&db) += (k >> 2)*Exp_msk1;
 1462|       |		if (k &= 3)
 1463|       |			dval(&db) *= 1 << k;
 1464|       |		}
 1465|       |#else
 1466|    402|	if (k > 0)
  ------------------
  |  Branch (1466:6): [True: 149, False: 253]
  ------------------
 1467|    149|		word0(&da) += k*Exp_msk1;
  ------------------
  |  |  318|    149|#define word0(x) (x)->L[1]
  ------------------
              		word0(&da) += k*Exp_msk1;
  ------------------
  |  |  357|    149|#define Exp_msk1    0x100000
  ------------------
 1468|    253|	else {
 1469|    253|		k = -k;
 1470|    253|		word0(&db) += k*Exp_msk1;
  ------------------
  |  |  318|    253|#define word0(x) (x)->L[1]
  ------------------
              		word0(&db) += k*Exp_msk1;
  ------------------
  |  |  357|    253|#define Exp_msk1    0x100000
  ------------------
 1471|    253|		}
 1472|    402|#endif
 1473|    402|	return dval(&da) / dval(&db);
  ------------------
  |  |  324|    402|#define dval(x) (x)->d
  ------------------
              	return dval(&da) / dval(&db);
  ------------------
  |  |  324|    402|#define dval(x) (x)->d
  ------------------
 1474|    402|	}
zend_strtod.c:b2d:
 1238|    804|{
 1239|    804|	ULong *xa, *xa0, w, y, z;
  ------------------
  |  |  198|    804|#define ULong uint32_t
  ------------------
 1240|    804|	int k;
 1241|    804|	U d;
 1242|       |#ifdef VAX
 1243|       |	ULong d0, d1;
 1244|       |#else
 1245|    804|#define d0 word0(&d)
 1246|    804|#define d1 word1(&d)
 1247|    804|#endif
 1248|       |
 1249|    804|	xa0 = a->x;
 1250|    804|	xa = xa0 + a->wds;
 1251|    804|	y = *--xa;
 1252|       |#ifdef DEBUG
 1253|       |	if (!y) Bug("zero y in b2d");
 1254|       |#endif
 1255|    804|	k = hi0bits(y);
 1256|    804|	*e = 32 - k;
 1257|    804|#ifdef Pack_32
 1258|    804|	if (k < Ebits) {
  ------------------
  |  |  367|    804|#define Ebits 11
  ------------------
  |  Branch (1258:6): [True: 272, False: 532]
  ------------------
 1259|    272|		d0 = Exp_1 | y >> (Ebits - k);
  ------------------
  |  | 1245|    272|#define d0 word0(&d)
  |  |  ------------------
  |  |  |  |  318|    272|#define word0(x) (x)->L[1]
  |  |  ------------------
  ------------------
              		d0 = Exp_1 | y >> (Ebits - k);
  ------------------
  |  |  365|    272|#define Exp_1  0x3ff00000
  ------------------
              		d0 = Exp_1 | y >> (Ebits - k);
  ------------------
  |  |  367|    272|#define Ebits 11
  ------------------
 1260|    272|		w = xa > xa0 ? *--xa : 0;
  ------------------
  |  Branch (1260:7): [True: 226, False: 46]
  ------------------
 1261|    272|		d1 = y << ((32-Ebits) + k) | w >> (Ebits - k);
  ------------------
  |  | 1246|    272|#define d1 word1(&d)
  |  |  ------------------
  |  |  |  |  319|    272|#define word1(x) (x)->L[0]
  |  |  ------------------
  ------------------
              		d1 = y << ((32-Ebits) + k) | w >> (Ebits - k);
  ------------------
  |  |  367|    272|#define Ebits 11
  ------------------
              		d1 = y << ((32-Ebits) + k) | w >> (Ebits - k);
  ------------------
  |  |  367|    272|#define Ebits 11
  ------------------
 1262|    272|		goto ret_d;
 1263|    272|		}
 1264|    532|	z = xa > xa0 ? *--xa : 0;
  ------------------
  |  Branch (1264:6): [True: 468, False: 64]
  ------------------
 1265|    532|	if (k -= Ebits) {
  ------------------
  |  |  367|    532|#define Ebits 11
  ------------------
  |  Branch (1265:6): [True: 507, False: 25]
  ------------------
 1266|    507|		d0 = Exp_1 | y << k | z >> (32 - k);
  ------------------
  |  | 1245|    507|#define d0 word0(&d)
  |  |  ------------------
  |  |  |  |  318|    507|#define word0(x) (x)->L[1]
  |  |  ------------------
  ------------------
              		d0 = Exp_1 | y << k | z >> (32 - k);
  ------------------
  |  |  365|    507|#define Exp_1  0x3ff00000
  ------------------
 1267|    507|		y = xa > xa0 ? *--xa : 0;
  ------------------
  |  Branch (1267:7): [True: 319, False: 188]
  ------------------
 1268|    507|		d1 = z << k | y >> (32 - k);
  ------------------
  |  | 1246|    507|#define d1 word1(&d)
  |  |  ------------------
  |  |  |  |  319|    507|#define word1(x) (x)->L[0]
  |  |  ------------------
  ------------------
 1269|    507|		}
 1270|     25|	else {
 1271|     25|		d0 = Exp_1 | y;
  ------------------
  |  | 1245|     25|#define d0 word0(&d)
  |  |  ------------------
  |  |  |  |  318|     25|#define word0(x) (x)->L[1]
  |  |  ------------------
  ------------------
              		d0 = Exp_1 | y;
  ------------------
  |  |  365|     25|#define Exp_1  0x3ff00000
  ------------------
 1272|     25|		d1 = z;
  ------------------
  |  | 1246|     25|#define d1 word1(&d)
  |  |  ------------------
  |  |  |  |  319|     25|#define word1(x) (x)->L[0]
  |  |  ------------------
  ------------------
 1273|     25|		}
 1274|       |#else
 1275|       |	if (k < Ebits + 16) {
 1276|       |		z = xa > xa0 ? *--xa : 0;
 1277|       |		d0 = Exp_1 | y << k - Ebits | z >> Ebits + 16 - k;
 1278|       |		w = xa > xa0 ? *--xa : 0;
 1279|       |		y = xa > xa0 ? *--xa : 0;
 1280|       |		d1 = z << k + 16 - Ebits | w << k - Ebits | y >> 16 + Ebits - k;
 1281|       |		goto ret_d;
 1282|       |		}
 1283|       |	z = xa > xa0 ? *--xa : 0;
 1284|       |	w = xa > xa0 ? *--xa : 0;
 1285|       |	k -= Ebits + 16;
 1286|       |	d0 = Exp_1 | y << k + 16 | z << k | w >> 16 - k;
 1287|       |	y = xa > xa0 ? *--xa : 0;
 1288|       |	d1 = w << k + 16 | y << k;
 1289|       |#endif
 1290|    804| ret_d:
 1291|       |#ifdef VAX
 1292|       |	word0(&d) = d0 >> 16 | d0 << 16;
 1293|       |	word1(&d) = d1 >> 16 | d1 << 16;
 1294|       |#else
 1295|    804|#undef d0
 1296|    804|#undef d1
 1297|    804|#endif
 1298|    804|	return dval(&d);
  ------------------
  |  |  324|    804|#define dval(x) (x)->d
  ------------------
 1299|    532|	}
zend_strtod.c:ulp:
 1196|    402|{
 1197|    402|	Long L;
  ------------------
  |  |  195|    402|#define Long int32_t
  ------------------
 1198|    402|	U u;
 1199|       |
 1200|    402|	L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
  ------------------
  |  |  318|    402|#define word0(x) (x)->L[1]
  ------------------
              	L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
  ------------------
  |  |  359|    402|#define Exp_mask  0x7ff00000
  ------------------
              	L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
  ------------------
  |  |  360|    402|#define P 53
  ------------------
              	L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
  ------------------
  |  |  357|    402|#define Exp_msk1    0x100000
  ------------------
 1201|       |#ifndef Avoid_Underflow
 1202|       |#ifndef Sudden_Underflow
 1203|       |	if (L > 0) {
 1204|       |#endif
 1205|       |#endif
 1206|       |#ifdef IBM
 1207|       |		L |= Exp_msk1 >> 4;
 1208|       |#endif
 1209|    402|		word0(&u) = L;
  ------------------
  |  |  318|    402|#define word0(x) (x)->L[1]
  ------------------
 1210|    402|		word1(&u) = 0;
  ------------------
  |  |  319|    402|#define word1(x) (x)->L[0]
  ------------------
 1211|       |#ifndef Avoid_Underflow
 1212|       |#ifndef Sudden_Underflow
 1213|       |		}
 1214|       |	else {
 1215|       |		L = -L >> Exp_shift;
 1216|       |		if (L < Exp_shift) {
 1217|       |			word0(&u) = 0x80000 >> L;
 1218|       |			word1(&u) = 0;
 1219|       |			}
 1220|       |		else {
 1221|       |			word0(&u) = 0;
 1222|       |			L -= Exp_shift;
 1223|       |			word1(&u) = L >= 31 ? 1 : 1 << 31 - L;
 1224|       |			}
 1225|       |		}
 1226|       |#endif
 1227|       |#endif
 1228|    402|	return dval(&u);
  ------------------
  |  |  324|    402|#define dval(x) (x)->d
  ------------------
 1229|    402|	}
zend_strtod.c:bigcomp:
 2315|    182|{
 2316|    182|	Bigint *b, *d;
  ------------------
  |  |  206|    182|#define Bigint      _zend_strtod_bigint
  ------------------
 2317|    182|	int b2, bbits, d2, dd, dig, dsign, i, j, nd, nd0, p2, p5, speccase;
 2318|       |
 2319|    182|	dsign = bc->dsign;
 2320|    182|	nd = bc->nd;
 2321|    182|	nd0 = bc->nd0;
 2322|    182|	p5 = nd + bc->e0 - 1;
 2323|    182|	speccase = 0;
 2324|    182|#ifndef Sudden_Underflow
 2325|    182|	if (rv->d == 0.) {	/* special case: value near underflow-to-zero */
  ------------------
  |  Branch (2325:6): [True: 0, False: 182]
  ------------------
 2326|       |				/* threshold was rounded to zero */
 2327|      0|		b = i2b(1);
 2328|      0|		p2 = Emin - P + 1;
  ------------------
  |  |  364|      0|#define Emin (-1022)
  ------------------
              		p2 = Emin - P + 1;
  ------------------
  |  |  360|      0|#define P 53
  ------------------
 2329|      0|		bbits = 1;
 2330|      0|#ifdef Avoid_Underflow
 2331|      0|		word0(rv) = (P+2) << Exp_shift;
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              		word0(rv) = (P+2) << Exp_shift;
  ------------------
  |  |  360|      0|#define P 53
  ------------------
              		word0(rv) = (P+2) << Exp_shift;
  ------------------
  |  |  355|      0|#define Exp_shift  20
  ------------------
 2332|       |#else
 2333|       |		word1(rv) = 1;
 2334|       |#endif
 2335|      0|		i = 0;
 2336|       |#ifdef Honor_FLT_ROUNDS
 2337|       |		if (bc->rounding == 1)
 2338|       |#endif
 2339|      0|			{
 2340|      0|			speccase = 1;
 2341|      0|			--p2;
 2342|      0|			dsign = 0;
 2343|      0|			goto have_i;
 2344|      0|			}
 2345|      0|		}
 2346|    182|	else
 2347|    182|#endif
 2348|    182|		b = d2b(rv, &p2, &bbits);
 2349|    182|#ifdef Avoid_Underflow
 2350|    182|	p2 -= bc->scale;
 2351|    182|#endif
 2352|       |	/* floor(log2(rv)) == bbits - 1 + p2 */
 2353|       |	/* Check for denormal case. */
 2354|    182|	i = P - bbits;
  ------------------
  |  |  360|    182|#define P 53
  ------------------
 2355|    182|	if (i > (j = P - Emin - 1 + p2)) {
  ------------------
  |  |  360|    182|#define P 53
  ------------------
              	if (i > (j = P - Emin - 1 + p2)) {
  ------------------
  |  |  364|    182|#define Emin (-1022)
  ------------------
  |  Branch (2355:6): [True: 0, False: 182]
  ------------------
 2356|       |#ifdef Sudden_Underflow
 2357|       |		Bfree(b);
 2358|       |		b = i2b(1);
 2359|       |		p2 = Emin;
 2360|       |		i = P - 1;
 2361|       |#ifdef Avoid_Underflow
 2362|       |		word0(rv) = (1 + bc->scale) << Exp_shift;
 2363|       |#else
 2364|       |		word0(rv) = Exp_msk1;
 2365|       |#endif
 2366|       |		word1(rv) = 0;
 2367|       |#else
 2368|      0|		i = j;
 2369|      0|#endif
 2370|      0|		}
 2371|       |#ifdef Honor_FLT_ROUNDS
 2372|       |	if (bc->rounding != 1) {
 2373|       |		if (i > 0)
 2374|       |			b = lshift(b, i);
 2375|       |		if (dsign)
 2376|       |			b = increment(b);
 2377|       |		}
 2378|       |	else
 2379|       |#endif
 2380|    182|		{
 2381|    182|		b = lshift(b, ++i);
 2382|    182|		b->x[0] |= 1;
 2383|    182|		}
 2384|    182|#ifndef Sudden_Underflow
 2385|    182| have_i:
 2386|    182|#endif
 2387|    182|	p2 -= p5 + i;
 2388|    182|	d = i2b(1);
 2389|       |	/* Arrange for convenient computation of quotients:
 2390|       |	 * shift left if necessary so divisor has 4 leading 0 bits.
 2391|       |	 */
 2392|    182|	if (p5 > 0)
  ------------------
  |  Branch (2392:6): [True: 182, False: 0]
  ------------------
 2393|    182|		d = pow5mult(d, p5);
 2394|      0|	else if (p5 < 0)
  ------------------
  |  Branch (2394:11): [True: 0, False: 0]
  ------------------
 2395|      0|		b = pow5mult(b, -p5);
 2396|    182|	if (p2 > 0) {
  ------------------
  |  Branch (2396:6): [True: 180, False: 2]
  ------------------
 2397|    180|		b2 = p2;
 2398|    180|		d2 = 0;
 2399|    180|		}
 2400|      2|	else {
 2401|      2|		b2 = 0;
 2402|      2|		d2 = -p2;
 2403|      2|		}
 2404|    182|	i = dshift(d, d2);
 2405|    182|	if ((b2 += i) > 0)
  ------------------
  |  Branch (2405:6): [True: 182, False: 0]
  ------------------
 2406|    182|		b = lshift(b, b2);
 2407|    182|	if ((d2 += i) > 0)
  ------------------
  |  Branch (2407:6): [True: 178, False: 4]
  ------------------
 2408|    178|		d = lshift(d, d2);
 2409|       |
 2410|       |	/* Now b/d = exactly half-way between the two floating-point values */
 2411|       |	/* on either side of the input string.  Compute first digit of b/d. */
 2412|       |
 2413|    182|	if (!(dig = quorem(b,d))) {
  ------------------
  |  Branch (2413:6): [True: 0, False: 182]
  ------------------
 2414|      0|		b = multadd(b, 10, 0);	/* very unlikely */
 2415|      0|		dig = quorem(b,d);
 2416|      0|		}
 2417|       |
 2418|       |	/* Compare b/d with s0 */
 2419|       |
 2420|  3.08k|	for(i = 0; i < nd0; ) {
  ------------------
  |  Branch (2420:13): [True: 3.07k, False: 3]
  ------------------
 2421|  3.07k|		if ((dd = s0[i++] - '0' - dig))
  ------------------
  |  Branch (2421:7): [True: 179, False: 2.89k]
  ------------------
 2422|    179|			goto ret;
 2423|  2.89k|		if (!b->x[0] && b->wds == 1) {
  ------------------
  |  Branch (2423:7): [True: 178, False: 2.72k]
  |  Branch (2423:19): [True: 0, False: 178]
  ------------------
 2424|      0|			if (i < nd)
  ------------------
  |  Branch (2424:8): [True: 0, False: 0]
  ------------------
 2425|      0|				dd = 1;
 2426|      0|			goto ret;
 2427|      0|			}
 2428|  2.89k|		b = multadd(b, 10, 0);
 2429|  2.89k|		dig = quorem(b,d);
 2430|  2.89k|		}
 2431|     35|	for(j = bc->dp1; i++ < nd;) {
  ------------------
  |  Branch (2431:19): [True: 35, False: 0]
  ------------------
 2432|     35|		if ((dd = s0[j++] - '0' - dig))
  ------------------
  |  Branch (2432:7): [True: 3, False: 32]
  ------------------
 2433|      3|			goto ret;
 2434|     32|		if (!b->x[0] && b->wds == 1) {
  ------------------
  |  Branch (2434:7): [True: 12, False: 20]
  |  Branch (2434:19): [True: 0, False: 12]
  ------------------
 2435|      0|			if (i < nd)
  ------------------
  |  Branch (2435:8): [True: 0, False: 0]
  ------------------
 2436|      0|				dd = 1;
 2437|      0|			goto ret;
 2438|      0|			}
 2439|     32|		b = multadd(b, 10, 0);
 2440|     32|		dig = quorem(b,d);
 2441|     32|		}
 2442|      0|	if (dig > 0 || b->x[0] || b->wds > 1)
  ------------------
  |  Branch (2442:6): [True: 0, False: 0]
  |  Branch (2442:17): [True: 0, False: 0]
  |  Branch (2442:28): [True: 0, False: 0]
  ------------------
 2443|      0|		dd = -1;
 2444|    182| ret:
 2445|    182|	Bfree(b);
 2446|    182|	Bfree(d);
 2447|       |#ifdef Honor_FLT_ROUNDS
 2448|       |	if (bc->rounding != 1) {
 2449|       |		if (dd < 0) {
 2450|       |			if (bc->rounding == 0) {
 2451|       |				if (!dsign)
 2452|       |					goto retlow1;
 2453|       |				}
 2454|       |			else if (dsign)
 2455|       |				goto rethi1;
 2456|       |			}
 2457|       |		else if (dd > 0) {
 2458|       |			if (bc->rounding == 0) {
 2459|       |				if (dsign)
 2460|       |					goto rethi1;
 2461|       |				goto ret1;
 2462|       |				}
 2463|       |			if (!dsign)
 2464|       |				goto rethi1;
 2465|       |			dval(rv) += 2.*sulp(rv,bc);
 2466|       |			}
 2467|       |		else {
 2468|       |			bc->inexact = 0;
 2469|       |			if (dsign)
 2470|       |				goto rethi1;
 2471|       |			}
 2472|       |		}
 2473|       |	else
 2474|       |#endif
 2475|    182|	if (speccase) {
  ------------------
  |  Branch (2475:6): [True: 0, False: 182]
  ------------------
 2476|      0|		if (dd <= 0)
  ------------------
  |  Branch (2476:7): [True: 0, False: 0]
  ------------------
 2477|      0|			rv->d = 0.;
 2478|      0|		}
 2479|    182|	else if (dd < 0) {
  ------------------
  |  Branch (2479:11): [True: 182, False: 0]
  ------------------
 2480|    182|		if (!dsign)	/* does not happen for round-near */
  ------------------
  |  Branch (2480:7): [True: 0, False: 182]
  ------------------
 2481|      0|retlow1:
 2482|      0|			dval(rv) -= sulp(rv,bc);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 2483|    182|		}
 2484|      0|	else if (dd > 0) {
  ------------------
  |  Branch (2484:11): [True: 0, False: 0]
  ------------------
 2485|      0|		if (dsign) {
  ------------------
  |  Branch (2485:7): [True: 0, False: 0]
  ------------------
 2486|      0| rethi1:
 2487|      0|			dval(rv) += sulp(rv,bc);
  ------------------
  |  |  324|      0|#define dval(x) (x)->d
  ------------------
 2488|      0|			}
 2489|      0|		}
 2490|      0|	else {
 2491|       |		/* Exact half-way case:  apply round-even rule. */
 2492|      0|		if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
              		if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
  ------------------
  |  |  359|      0|#define Exp_mask  0x7ff00000
  ------------------
              		if ((j = ((word0(rv) & Exp_mask) >> Exp_shift) - bc->scale) <= 0) {
  ------------------
  |  |  355|      0|#define Exp_shift  20
  ------------------
  |  Branch (2492:7): [True: 0, False: 0]
  ------------------
 2493|      0|			i = 1 - j;
 2494|      0|			if (i <= 31) {
  ------------------
  |  Branch (2494:8): [True: 0, False: 0]
  ------------------
 2495|      0|				if (word1(rv) & (0x1 << i))
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (2495:9): [True: 0, False: 0]
  ------------------
 2496|      0|					goto odd;
 2497|      0|				}
 2498|      0|			else if (word0(rv) & (0x1 << (i-32)))
  ------------------
  |  |  318|      0|#define word0(x) (x)->L[1]
  ------------------
  |  Branch (2498:13): [True: 0, False: 0]
  ------------------
 2499|      0|				goto odd;
 2500|      0|			}
 2501|      0|		else if (word1(rv) & 1) {
  ------------------
  |  |  319|      0|#define word1(x) (x)->L[0]
  ------------------
  |  Branch (2501:12): [True: 0, False: 0]
  ------------------
 2502|      0| odd:
 2503|      0|			if (dsign)
  ------------------
  |  Branch (2503:8): [True: 0, False: 0]
  ------------------
 2504|      0|				goto rethi1;
 2505|      0|			goto retlow1;
 2506|      0|			}
 2507|      0|		}
 2508|       |
 2509|       |#ifdef Honor_FLT_ROUNDS
 2510|       | ret1:
 2511|       |#endif
 2512|    182|	return;
 2513|    182|	}
zend_strtod.c:nrv_alloc:
 3637|    541|{
 3638|    541|	char *rv, *t;
 3639|       |
 3640|    541|	t = rv = rv_alloc(n);
 3641|  2.19k|	while((*t = *s++)) t++;
  ------------------
  |  Branch (3641:8): [True: 1.65k, False: 541]
  ------------------
 3642|    541|	if (rve)
  ------------------
  |  Branch (3642:6): [True: 0, False: 541]
  ------------------
 3643|      0|		*rve = t;
 3644|    541|	return rv;
 3645|    541|	}
zend_strtod.c:rv_alloc:
 3607|  10.4k|{
 3608|       |
 3609|  10.4k|	int j, k, *r;
 3610|  10.4k|	size_t rem;
 3611|       |
 3612|  10.4k|	rem = sizeof(Bigint) - sizeof(ULong) - sizeof(int);
 3613|       |
 3614|       |
 3615|  10.4k|	j = sizeof(ULong);
 3616|  10.4k|	if (i > ((INT_MAX >> 2) + rem))
  ------------------
  |  Branch (3616:6): [True: 1, False: 10.4k]
  ------------------
 3617|      1|		i = (INT_MAX >> 2) + rem;
 3618|  10.4k|	for(k = 0;
 3619|  10.5k|		rem + j <= (size_t)i; j <<= 1)
  ------------------
  |  Branch (3619:3): [True: 37, False: 10.4k]
  ------------------
 3620|     37|			k++;
 3621|       |
 3622|  10.4k|	r = (int*)Balloc(k);
 3623|  10.4k|	*r = k;
 3624|  10.4k|	return
 3625|  10.4k|#ifndef MULTIPLE_THREADS
 3626|  10.4k|	dtoa_result =
  ------------------
  |  |  209|  10.4k|#define dtoa_result (EG(strtod_state).result)
  |  |  ------------------
  |  |  |  |   45|  10.4k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
 3627|  10.4k|#endif
 3628|  10.4k|		(char *)(r+1);
 3629|  10.4k|	}
zend_strtod.c:dshift:
 2153|  5.34k|{
 2154|  5.34k|	int rv = hi0bits(b->x[b->wds-1]) - 4;
 2155|  5.34k|	if (p2 > 0)
  ------------------
  |  Branch (2155:6): [True: 4.61k, False: 734]
  ------------------
 2156|  4.61k|		rv -= p2;
 2157|  5.34k|	return rv & kmask;
  ------------------
  |  | 1672|  5.34k|#define kmask 31
  ------------------
 2158|  5.34k|	}
zend_strtod.c:multadd:
  644|  84.3k|{
  645|  84.3k|	int i, wds;
  646|  84.3k|#ifdef ULLong
  647|  84.3k|	ULong *x;
  ------------------
  |  |  198|  84.3k|#define ULong uint32_t
  ------------------
  648|  84.3k|	ULLong carry, y;
  ------------------
  |  |  524|  84.3k|#define ULLong unsigned Llong
  ------------------
  649|       |#else
  650|       |	ULong carry, *x, y;
  651|       |#ifdef Pack_32
  652|       |	ULong xi, z;
  653|       |#endif
  654|       |#endif
  655|  84.3k|	Bigint *b1;
  ------------------
  |  |  206|  84.3k|#define Bigint      _zend_strtod_bigint
  ------------------
  656|       |
  657|  84.3k|	wds = b->wds;
  658|  84.3k|	x = b->x;
  659|  84.3k|	i = 0;
  660|  84.3k|	carry = a;
  661|   175k|	do {
  662|   175k|#ifdef ULLong
  663|   175k|		y = *x * (ULLong)m + carry;
  664|   175k|		carry = y >> 32;
  665|   175k|		*x++ = y & FFFFFFFF;
  ------------------
  |  |  506|   175k|#define FFFFFFFF 0xffffffffUL
  ------------------
  666|       |#else
  667|       |#ifdef Pack_32
  668|       |		xi = *x;
  669|       |		y = (xi & 0xffff) * m + carry;
  670|       |		z = (xi >> 16) * m + (y >> 16);
  671|       |		carry = z >> 16;
  672|       |		*x++ = (z << 16) + (y & 0xffff);
  673|       |#else
  674|       |		y = *x * m + carry;
  675|       |		carry = y >> 16;
  676|       |		*x++ = y & 0xffff;
  677|       |#endif
  678|       |#endif
  679|   175k|		}
  680|   175k|		while(++i < wds);
  ------------------
  |  Branch (680:9): [True: 90.8k, False: 84.3k]
  ------------------
  681|  84.3k|	if (carry) {
  ------------------
  |  Branch (681:6): [True: 3.68k, False: 80.7k]
  ------------------
  682|  3.68k|		if (wds >= b->maxwds) {
  ------------------
  |  Branch (682:7): [True: 118, False: 3.56k]
  ------------------
  683|    118|			b1 = Balloc(b->k+1);
  684|    118|			Bcopy(b1, b);
  ------------------
  |  |  634|    118|#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
  |  |  635|    118|y->wds*sizeof(Long) + 2*sizeof(int))
  ------------------
  685|    118|			Bfree(b);
  686|    118|			b = b1;
  687|    118|			}
  688|  3.68k|		b->x[wds++] = carry;
  689|  3.68k|		b->wds = wds;
  690|  3.68k|		}
  691|  84.3k|	return b;
  692|  84.3k|	}
zend_strtod.c:quorem:
 2167|  41.6k|{
 2168|  41.6k|	int n;
 2169|  41.6k|	ULong *bx, *bxe, q, *sx, *sxe;
  ------------------
  |  |  198|  41.6k|#define ULong uint32_t
  ------------------
 2170|  41.6k|#ifdef ULLong
 2171|  41.6k|	ULLong borrow, carry, y, ys;
  ------------------
  |  |  524|  41.6k|#define ULLong unsigned Llong
  ------------------
 2172|       |#else
 2173|       |	ULong borrow, carry, y, ys;
 2174|       |#ifdef Pack_32
 2175|       |	ULong si, z, zs;
 2176|       |#endif
 2177|       |#endif
 2178|       |
 2179|  41.6k|	n = S->wds;
 2180|       |#ifdef DEBUG
 2181|       |	/*debug*/ if (b->wds > n)
 2182|       |	/*debug*/	Bug("oversize b in quorem");
 2183|       |#endif
 2184|  41.6k|	if (b->wds < n)
  ------------------
  |  Branch (2184:6): [True: 161, False: 41.4k]
  ------------------
 2185|    161|		return 0;
 2186|  41.4k|	sx = S->x;
 2187|  41.4k|	sxe = sx + --n;
 2188|  41.4k|	bx = b->x;
 2189|  41.4k|	bxe = bx + n;
 2190|  41.4k|	q = *bxe / (*sxe + 1);	/* ensure q <= true quotient */
 2191|       |#ifdef DEBUG
 2192|       |#ifdef NO_STRTOD_BIGCOMP
 2193|       |	/*debug*/ if (q > 9)
 2194|       |#else
 2195|       |	/* An oversized q is possible when quorem is called from bigcomp and */
 2196|       |	/* the input is near, e.g., twice the smallest denormalized number. */
 2197|       |	/*debug*/ if (q > 15)
 2198|       |#endif
 2199|       |	/*debug*/	Bug("oversized quotient in quorem");
 2200|       |#endif
 2201|  41.4k|	if (q) {
  ------------------
  |  Branch (2201:6): [True: 36.2k, False: 5.27k]
  ------------------
 2202|  36.2k|		borrow = 0;
 2203|  36.2k|		carry = 0;
 2204|   102k|		do {
 2205|   102k|#ifdef ULLong
 2206|   102k|			ys = *sx++ * (ULLong)q + carry;
 2207|   102k|			carry = ys >> 32;
 2208|   102k|			y = *bx - (ys & FFFFFFFF) - borrow;
  ------------------
  |  |  506|   102k|#define FFFFFFFF 0xffffffffUL
  ------------------
 2209|   102k|			borrow = y >> 32 & (ULong)1;
 2210|   102k|			*bx++ = y & FFFFFFFF;
  ------------------
  |  |  506|   102k|#define FFFFFFFF 0xffffffffUL
  ------------------
 2211|       |#else
 2212|       |#ifdef Pack_32
 2213|       |			si = *sx++;
 2214|       |			ys = (si & 0xffff) * q + carry;
 2215|       |			zs = (si >> 16) * q + (ys >> 16);
 2216|       |			carry = zs >> 16;
 2217|       |			y = (*bx & 0xffff) - (ys & 0xffff) - borrow;
 2218|       |			borrow = (y & 0x10000) >> 16;
 2219|       |			z = (*bx >> 16) - (zs & 0xffff) - borrow;
 2220|       |			borrow = (z & 0x10000) >> 16;
 2221|       |			Storeinc(bx, z, y);
 2222|       |#else
 2223|       |			ys = *sx++ * q + carry;
 2224|       |			carry = ys >> 16;
 2225|       |			y = *bx - (ys & 0xffff) - borrow;
 2226|       |			borrow = (y & 0x10000) >> 16;
 2227|       |			*bx++ = y & 0xffff;
 2228|       |#endif
 2229|       |#endif
 2230|   102k|			}
 2231|   102k|			while(sx <= sxe);
  ------------------
  |  Branch (2231:10): [True: 66.1k, False: 36.2k]
  ------------------
 2232|  36.2k|		if (!*bxe) {
  ------------------
  |  Branch (2232:7): [True: 2, False: 36.1k]
  ------------------
 2233|      2|			bx = b->x;
 2234|      2|			while(--bxe > bx && !*bxe)
  ------------------
  |  Branch (2234:10): [True: 1, False: 1]
  |  Branch (2234:24): [True: 0, False: 1]
  ------------------
 2235|      0|				--n;
 2236|      2|			b->wds = n;
 2237|      2|			}
 2238|  36.2k|		}
 2239|  41.4k|	if (cmp(b, S) >= 0) {
  ------------------
  |  Branch (2239:6): [True: 2.82k, False: 38.6k]
  ------------------
 2240|  2.82k|		q++;
 2241|  2.82k|		borrow = 0;
 2242|  2.82k|		carry = 0;
 2243|  2.82k|		bx = b->x;
 2244|  2.82k|		sx = S->x;
 2245|  7.65k|		do {
 2246|  7.65k|#ifdef ULLong
 2247|  7.65k|			ys = *sx++ + carry;
 2248|  7.65k|			carry = ys >> 32;
 2249|  7.65k|			y = *bx - (ys & FFFFFFFF) - borrow;
  ------------------
  |  |  506|  7.65k|#define FFFFFFFF 0xffffffffUL
  ------------------
 2250|  7.65k|			borrow = y >> 32 & (ULong)1;
 2251|  7.65k|			*bx++ = y & FFFFFFFF;
  ------------------
  |  |  506|  7.65k|#define FFFFFFFF 0xffffffffUL
  ------------------
 2252|       |#else
 2253|       |#ifdef Pack_32
 2254|       |			si = *sx++;
 2255|       |			ys = (si & 0xffff) + carry;
 2256|       |			zs = (si >> 16) + (ys >> 16);
 2257|       |			carry = zs >> 16;
 2258|       |			y = (*bx & 0xffff) - (ys & 0xffff) - borrow;
 2259|       |			borrow = (y & 0x10000) >> 16;
 2260|       |			z = (*bx >> 16) - (zs & 0xffff) - borrow;
 2261|       |			borrow = (z & 0x10000) >> 16;
 2262|       |			Storeinc(bx, z, y);
 2263|       |#else
 2264|       |			ys = *sx++ + carry;
 2265|       |			carry = ys >> 16;
 2266|       |			y = *bx - (ys & 0xffff) - borrow;
 2267|       |			borrow = (y & 0x10000) >> 16;
 2268|       |			*bx++ = y & 0xffff;
 2269|       |#endif
 2270|       |#endif
 2271|  7.65k|			}
 2272|  7.65k|			while(sx <= sxe);
  ------------------
  |  Branch (2272:10): [True: 4.82k, False: 2.82k]
  ------------------
 2273|  2.82k|		bx = b->x;
 2274|  2.82k|		bxe = bx + n;
 2275|  2.82k|		if (!*bxe) {
  ------------------
  |  Branch (2275:7): [True: 2.81k, False: 6]
  ------------------
 2276|  2.82k|			while(--bxe > bx && !*bxe)
  ------------------
  |  Branch (2276:10): [True: 140, False: 2.68k]
  |  Branch (2276:24): [True: 4, False: 136]
  ------------------
 2277|      4|				--n;
 2278|  2.81k|			b->wds = n;
 2279|  2.81k|			}
 2280|  2.82k|		}
 2281|  41.4k|	return q;
 2282|  41.6k|	}

zend_add_system_entropy:
   28|      2|{
   29|      2|	if (finalized == 0) {
  ------------------
  |  Branch (29:6): [True: 2, False: 0]
  ------------------
   30|      2|		PHP_MD5Update(&context, module_name, strlen(module_name));
   31|      2|		PHP_MD5Update(&context, hook_name, strlen(hook_name));
   32|      2|		if (size) {
  ------------------
  |  Branch (32:7): [True: 2, False: 0]
  ------------------
   33|      2|			PHP_MD5Update(&context, data, size);
   34|      2|		}
   35|      2|		return SUCCESS;
   36|      2|	}
   37|      0|	return FAILURE;
   38|      2|}
zend_startup_system_id:
   43|      2|{
   44|      2|	PHP_MD5Init(&context);
  ------------------
  |  |   41|      2|#define PHP_MD5Init(ctx) PHP_MD5InitArgs(ctx, NULL)
  ------------------
   45|      2|	PHP_MD5Update(&context, PHP_VERSION, sizeof(PHP_VERSION)-1);
  ------------------
  |  |    7|      2|#define PHP_VERSION "8.6.0-dev"
  ------------------
              	PHP_MD5Update(&context, PHP_VERSION, sizeof(PHP_VERSION)-1);
  ------------------
  |  |    7|      2|#define PHP_VERSION "8.6.0-dev"
  ------------------
   46|      2|	PHP_MD5Update(&context, ZEND_EXTENSION_BUILD_ID, sizeof(ZEND_EXTENSION_BUILD_ID)-1);
  ------------------
  |  |   53|      2|#define ZEND_EXTENSION_BUILD_ID "API" ZEND_TOSTR(ZEND_EXTENSION_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA
  |  |  ------------------
  |  |  |  |   31|      2|#define ZEND_BUILD_DEBUG ",debug"
  |  |  ------------------
  ------------------
              	PHP_MD5Update(&context, ZEND_EXTENSION_BUILD_ID, sizeof(ZEND_EXTENSION_BUILD_ID)-1);
  ------------------
  |  |   53|      2|#define ZEND_EXTENSION_BUILD_ID "API" ZEND_TOSTR(ZEND_EXTENSION_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA
  |  |  ------------------
  |  |  |  |   31|      2|#define ZEND_BUILD_DEBUG ",debug"
  |  |  ------------------
  ------------------
   47|      2|	PHP_MD5Update(&context, ZEND_BIN_ID, sizeof(ZEND_BIN_ID)-1);
  ------------------
  |  |   40|      2|#define ZEND_BIN_ID "BIN_" ZEND_TOSTR(SIZEOF_INT) ZEND_TOSTR(SIZEOF_LONG) ZEND_TOSTR(SIZEOF_SIZE_T) ZEND_TOSTR(SIZEOF_ZEND_LONG) ZEND_TOSTR(ZEND_MM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   22|      2|#define ZEND_TOSTR(x) ZEND_TOSTR_(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   21|      2|#define ZEND_TOSTR_(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	PHP_MD5Update(&context, ZEND_BIN_ID, sizeof(ZEND_BIN_ID)-1);
  ------------------
  |  |   40|      2|#define ZEND_BIN_ID "BIN_" ZEND_TOSTR(SIZEOF_INT) ZEND_TOSTR(SIZEOF_LONG) ZEND_TOSTR(SIZEOF_SIZE_T) ZEND_TOSTR(SIZEOF_ZEND_LONG) ZEND_TOSTR(ZEND_MM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   22|      2|#define ZEND_TOSTR(x) ZEND_TOSTR_(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   21|      2|#define ZEND_TOSTR_(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   48|      2|	if (strstr(PHP_VERSION, "-dev") != 0) {
  ------------------
  |  |    7|      2|#define PHP_VERSION "8.6.0-dev"
  ------------------
  |  Branch (48:6): [True: 2, False: 0]
  ------------------
   49|       |		/* Development versions may be changed from build to build */
   50|      2|		PHP_MD5Update(&context, __DATE__, sizeof(__DATE__)-1);
   51|      2|		PHP_MD5Update(&context, __TIME__, sizeof(__TIME__)-1);
   52|      2|	}
   53|      2|	zend_system_id[0] = '\0';
   54|      2|}
zend_finalize_system_id:
   63|      2|{
   64|      2|	unsigned char digest[16];
   65|      2|	uint8_t hooks = 0;
   66|       |
   67|      2|	if (zend_ast_process) {
  ------------------
  |  Branch (67:6): [True: 0, False: 2]
  ------------------
   68|      0|		hooks |= ZEND_HOOK_AST_PROCESS;
  ------------------
  |  |   56|      0|#define ZEND_HOOK_AST_PROCESS        (1 << 0)
  ------------------
   69|      0|	}
   70|      2|	if (zend_compile_file != compile_file) {
  ------------------
  |  Branch (70:6): [True: 0, False: 2]
  ------------------
   71|      0|		hooks |= ZEND_HOOK_COMPILE_FILE;
  ------------------
  |  |   57|      0|#define ZEND_HOOK_COMPILE_FILE       (1 << 1)
  ------------------
   72|      0|	}
   73|      2|	if (zend_execute_ex != execute_ex) {
  ------------------
  |  Branch (73:6): [True: 0, False: 2]
  ------------------
   74|      0|		hooks |= ZEND_HOOK_EXECUTE_EX;
  ------------------
  |  |   58|      0|#define ZEND_HOOK_EXECUTE_EX         (1 << 2)
  ------------------
   75|      0|	}
   76|      2|	if (zend_execute_internal) {
  ------------------
  |  Branch (76:6): [True: 0, False: 2]
  ------------------
   77|      0|		hooks |= ZEND_HOOK_EXECUTE_INTERNAL;
  ------------------
  |  |   59|      0|#define ZEND_HOOK_EXECUTE_INTERNAL   (1 << 3)
  ------------------
   78|      0|	}
   79|      2|	if (zend_interrupt_function) {
  ------------------
  |  Branch (79:6): [True: 0, False: 2]
  ------------------
   80|      0|		hooks |= ZEND_HOOK_INTERRUPT_FUNCTION;
  ------------------
  |  |   60|      0|#define ZEND_HOOK_INTERRUPT_FUNCTION (1 << 4)
  ------------------
   81|      0|	}
   82|      2|	PHP_MD5Update(&context, &hooks, sizeof hooks);
   83|       |
   84|    514|	for (int16_t i = 0; i < 256; i++) {
  ------------------
  |  Branch (84:22): [True: 512, False: 2]
  ------------------
   85|    512|		if (zend_get_user_opcode_handler((uint8_t) i) != NULL) {
  ------------------
  |  Branch (85:7): [True: 0, False: 512]
  ------------------
   86|      0|			PHP_MD5Update(&context, &i, sizeof i);
   87|      0|		}
   88|    512|	}
   89|       |
   90|      2|	PHP_MD5Final(digest, &context);
   91|      2|	php_hash_bin2hex(zend_system_id, digest, sizeof digest);
   92|      2|	finalized = 1;
   93|      2|}

php_date.c:zend_gc_set_refcount:
 1333|     90|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     90|	p->refcount = rc;
 1335|     90|	return p->refcount;
 1336|     90|}
php_date.c:zend_gc_delref:
 1357|     14|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     14|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 14]
  |  Branch (1358:2): [True: 14, False: 0]
  ------------------
 1359|     14|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     14|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1360|     14|	return --(p->refcount);
 1361|     14|}
php_date.c:zval_gc_flags:
  767|    243|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    243|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    243|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    243|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    243|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    243|}
php_date.c:zval_get_type:
  658|    723|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    723|	return pz->u1.v.type;
  660|    723|}
php_date.c:zend_gc_addref:
 1338|      8|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      8|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      8|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1340|      8|	return ++(p->refcount);
 1341|      8|}
php_pcre.c:zend_gc_delref:
 1357|    298|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    298|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    298|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 298]
  |  Branch (1358:2): [True: 298, False: 0]
  ------------------
 1359|    298|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    298|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 298]
  |  |  ------------------
  ------------------
 1360|    298|	return --(p->refcount);
 1361|    298|}
php_pcre.c:zval_get_type:
  658|  8.54M|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  8.54M|	return pz->u1.v.type;
  660|  8.54M|}
php_pcre.c:zval_gc_flags:
  767|  1.26k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  1.26k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.26k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  1.26k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.26k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  1.26k|}
php_pcre.c:zend_gc_addref:
 1338|      2|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1340|      2|	return ++(p->refcount);
 1341|      2|}
php_pcre.c:zend_gc_set_refcount:
 1333|    311|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|    311|	p->refcount = rc;
 1335|    311|	return p->refcount;
 1336|    311|}
php_pcre.c:zend_gc_refcount:
 1329|     33|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     33|	return p->refcount;
 1331|     33|}
hash.c:zval_get_type:
  658|     60|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     60|	return pz->u1.v.type;
  660|     60|}
json_encoder.c:zval_get_type:
  658|     17|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     17|	return pz->u1.v.type;
  660|     17|}
json_encoder.c:zend_gc_addref:
 1338|      2|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1340|      2|	return ++(p->refcount);
 1341|      2|}
json_encoder.c:zval_gc_flags:
  767|      8|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      8|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      8|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      8|}
json_encoder.c:zend_gc_delref:
 1357|      4|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      4|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 4]
  |  Branch (1358:2): [True: 4, False: 0]
  ------------------
 1359|      4|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      4|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1360|      4|	return --(p->refcount);
 1361|      4|}
json_encoder.c:zval_delref_p:
 1392|      2|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      2|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 2]
  |  Branch (1393:2): [True: 2, False: 0]
  ------------------
 1394|      2|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      2|}
json.c:zval_gc_flags:
  767|      4|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      4|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      4|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      4|}
json.c:zend_gc_refcount:
 1329|      2|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      2|	return p->refcount;
 1331|      2|}
zend_accelerator_module.c:zend_gc_delref:
 1357|      1|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      1|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 1]
  |  Branch (1358:2): [True: 1, False: 0]
  ------------------
 1359|      1|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      1|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1360|      1|	return --(p->refcount);
 1361|      1|}
zend_accelerator_module.c:zval_gc_flags:
  767|      2|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      2|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      2|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      2|}
zend_persist_calc.c:zval_get_type:
  658|      2|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      2|	return pz->u1.v.type;
  660|      2|}
zend_persist.c:zval_gc_flags:
  767|      2|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      2|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      2|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      2|}
zend_persist.c:zend_gc_set_refcount:
 1333|      1|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      1|	p->refcount = rc;
 1335|      1|	return p->refcount;
 1336|      1|}
zend_persist.c:zend_gc_delref:
 1357|      1|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      1|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 1]
  |  Branch (1358:2): [True: 1, False: 0]
  ------------------
 1359|      1|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      1|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1360|      1|	return --(p->refcount);
 1361|      1|}
zend_persist.c:zval_get_type:
  658|      2|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      2|	return pz->u1.v.type;
  660|      2|}
ZendAccelerator.c:zend_gc_set_refcount:
 1333|  7.69k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  7.69k|	p->refcount = rc;
 1335|  7.69k|	return p->refcount;
 1336|  7.69k|}
ZendAccelerator.c:zval_gc_flags:
  767|  78.9k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  78.9k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  78.9k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  78.9k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  78.9k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  78.9k|}
ZendAccelerator.c:zend_gc_refcount:
 1329|  39.3k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  39.3k|	return p->refcount;
 1331|  39.3k|}
ZendAccelerator.c:zend_gc_delref:
 1357|  10.7k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  10.7k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  10.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 10.7k]
  |  Branch (1358:2): [True: 10.7k, False: 0]
  ------------------
 1359|  10.7k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  10.7k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 10.7k]
  |  |  ------------------
  ------------------
 1360|  10.7k|	return --(p->refcount);
 1361|  10.7k|}
ZendAccelerator.c:zend_gc_addref:
 1338|      4|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      4|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      4|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1340|      4|	return ++(p->refcount);
 1341|      4|}
ZendAccelerator.c:zval_get_type:
  658|  10.9k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  10.9k|	return pz->u1.v.type;
  660|  10.9k|}
random.c:zend_gc_set_refcount:
 1333|      8|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      8|	p->refcount = rc;
 1335|      8|	return p->refcount;
 1336|      8|}
random.c:zval_get_type:
  658|     12|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     12|	return pz->u1.v.type;
  660|     12|}
random.c:zend_gc_delref:
 1357|      2|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      2|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 2]
  |  Branch (1358:2): [True: 2, False: 0]
  ------------------
 1359|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1360|      2|	return --(p->refcount);
 1361|      2|}
random.c:zval_gc_flags:
  767|     12|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     12|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     12|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     12|}
randomizer.c:zend_gc_delref:
 1357|      2|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      2|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 2]
  |  Branch (1358:2): [True: 2, False: 0]
  ------------------
 1359|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1360|      2|	return --(p->refcount);
 1361|      2|}
php_reflection.c:zend_gc_addref:
 1338|    183|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    183|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    183|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 183]
  |  |  ------------------
  ------------------
 1340|    183|	return ++(p->refcount);
 1341|    183|}
php_reflection.c:zend_gc_set_refcount:
 1333|     56|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     56|	p->refcount = rc;
 1335|     56|	return p->refcount;
 1336|     56|}
php_reflection.c:zend_gc_delref:
 1357|    205|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    205|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    205|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 205]
  |  Branch (1358:2): [True: 205, False: 0]
  ------------------
 1359|    205|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    205|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 205]
  |  |  ------------------
  ------------------
 1360|    205|	return --(p->refcount);
 1361|    205|}
php_reflection.c:zend_gc_refcount:
 1329|     34|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     34|	return p->refcount;
 1331|     34|}
php_reflection.c:zval_get_type:
  658|  3.41k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  3.41k|	return pz->u1.v.type;
  660|  3.41k|}
php_reflection.c:zval_addref_p:
 1387|      3|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      3|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 3]
  |  Branch (1388:2): [True: 3, False: 0]
  ------------------
 1389|      3|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      3|}
php_reflection.c:zval_gc_flags:
  767|  2.06k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  2.06k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  2.06k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  2.06k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  2.06k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  2.06k|}
php_spl.c:zval_get_type:
  658|     67|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     67|	return pz->u1.v.type;
  660|     67|}
php_spl.c:zval_gc_flags:
  767|     55|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     55|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     55|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     55|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     55|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     55|}
spl_array.c:zval_gc_flags:
  767|     10|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     10|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     10|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     10|}
spl_array.c:zval_addref_p:
 1387|      1|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 1]
  |  Branch (1388:2): [True: 1, False: 0]
  ------------------
 1389|      1|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      1|}
spl_array.c:zval_refcount_p:
 1375|     13|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|     13|#if ZEND_DEBUG
 1377|     13|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 13, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 13, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|     13|#endif
 1379|     13|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|     13|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|     13|}
spl_array.c:zval_get_type:
  658|    162|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    162|	return pz->u1.v.type;
  660|    162|}
spl_array.c:zend_gc_refcount:
 1329|     13|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     13|	return p->refcount;
 1331|     13|}
spl_array.c:zend_gc_addref:
 1338|     13|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     13|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     13|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 13]
  |  |  ------------------
  ------------------
 1340|     13|	return ++(p->refcount);
 1341|     13|}
spl_directory.c:zval_gc_flags:
  767|     34|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     34|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     34|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     34|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     34|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     34|}
spl_dllist.c:zval_gc_flags:
  767|      8|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      8|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      8|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      8|}
spl_fixedarray.c:zval_get_type:
  658|      7|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      7|	return pz->u1.v.type;
  660|      7|}
spl_fixedarray.c:zend_gc_addref:
 1338|      1|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      1|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      1|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1340|      1|	return ++(p->refcount);
 1341|      1|}
spl_fixedarray.c:zval_addref_p:
 1387|      1|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 1]
  |  Branch (1388:2): [True: 1, False: 0]
  ------------------
 1389|      1|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      1|}
spl_fixedarray.c:zval_gc_flags:
  767|      4|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      4|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      4|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      4|}
spl_fixedarray.c:zend_gc_set_refcount:
 1333|      2|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      2|	p->refcount = rc;
 1335|      2|	return p->refcount;
 1336|      2|}
spl_heap.c:zval_gc_flags:
  767|      6|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      6|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      6|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      6|}
spl_iterators.c:zval_addref_p:
 1387|     10|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|     10|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 10]
  |  Branch (1388:2): [True: 10, False: 0]
  ------------------
 1389|     10|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|     10|}
spl_iterators.c:zval_get_type:
  658|    164|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    164|	return pz->u1.v.type;
  660|    164|}
spl_iterators.c:zend_gc_delref:
 1357|     11|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     11|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 11]
  |  Branch (1358:2): [True: 11, False: 0]
  ------------------
 1359|     11|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     11|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1360|     11|	return --(p->refcount);
 1361|     11|}
spl_iterators.c:zval_gc_flags:
  767|     76|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     76|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     76|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     76|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     76|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     76|}
spl_iterators.c:zval_refcount_p:
 1375|      1|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|      1|#if ZEND_DEBUG
 1377|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 1, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 1, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|      1|#endif
 1379|      1|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|      1|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|      1|}
spl_iterators.c:zend_gc_refcount:
 1329|      1|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      1|	return p->refcount;
 1331|      1|}
spl_iterators.c:zend_gc_addref:
 1338|     11|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     11|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     11|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1340|     11|	return ++(p->refcount);
 1341|     11|}
spl_iterators.c:zend_gc_set_refcount:
 1333|     10|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     10|	p->refcount = rc;
 1335|     10|	return p->refcount;
 1336|     10|}
spl_observer.c:zval_gc_flags:
  767|     20|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     20|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     20|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     20|}
spl_observer.c:zend_gc_set_refcount:
 1333|      6|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      6|	p->refcount = rc;
 1335|      6|	return p->refcount;
 1336|      6|}
array.c:zval_gc_flags:
  767|     32|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     32|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     32|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     32|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     32|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     32|}
array.c:zval_get_type:
  658|  56.7k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  56.7k|	return pz->u1.v.type;
  660|  56.7k|}
array.c:zend_gc_refcount:
 1329|    434|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|    434|	return p->refcount;
 1331|    434|}
array.c:zend_gc_try_delref:
 1350|     33|static zend_always_inline void zend_gc_try_delref(zend_refcounted_h *p) {
 1351|     33|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|     33|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1351:6): [True: 25, False: 8]
  ------------------
 1352|     25|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     25|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 25]
  |  |  ------------------
  ------------------
 1353|     25|		--p->refcount;
 1354|     25|	}
 1355|     33|}
array.c:zval_addref_p:
 1387|    265|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|    265|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|    265|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 265]
  |  Branch (1388:2): [True: 265, False: 0]
  ------------------
 1389|    265|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|    265|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|    265|}
array.c:zend_gc_addref:
 1338|    527|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    527|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    527|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 527]
  |  |  ------------------
  ------------------
 1340|    527|	return ++(p->refcount);
 1341|    527|}
array.c:zend_gc_set_refcount:
 1333|      7|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      7|	p->refcount = rc;
 1335|      7|	return p->refcount;
 1336|      7|}
array.c:zval_delref_p:
 1392|      5|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      5|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 5]
  |  Branch (1393:2): [True: 5, False: 0]
  ------------------
 1394|      5|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      5|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      5|}
array.c:zval_refcount_p:
 1375|     18|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|     18|#if ZEND_DEBUG
 1377|     18|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 18, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 18, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|     18|#endif
 1379|     18|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|     18|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|     18|}
array.c:zend_gc_delref:
 1357|    261|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    261|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    261|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 261]
  |  Branch (1358:2): [True: 261, False: 0]
  ------------------
 1359|    261|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    261|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 261]
  |  |  ------------------
  ------------------
 1360|    261|	return --(p->refcount);
 1361|    261|}
assert.c:zval_get_type:
  658|  33.9k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  33.9k|	return pz->u1.v.type;
  660|  33.9k|}
assert.c:zend_gc_addref:
 1338|      5|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      5|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      5|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1340|      5|	return ++(p->refcount);
 1341|      5|}
assert.c:zend_gc_set_refcount:
 1333|      9|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      9|	p->refcount = rc;
 1335|      9|	return p->refcount;
 1336|      9|}
assert.c:zval_gc_flags:
  767|     37|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     37|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     37|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     37|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     37|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     37|}
assert.c:zend_gc_delref:
 1357|      9|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      9|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 9]
  |  Branch (1358:2): [True: 9, False: 0]
  ------------------
 1359|      9|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      9|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1360|      9|	return --(p->refcount);
 1361|      9|}
basic_functions.c:zend_gc_delref:
 1357|     29|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     29|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 29]
  |  Branch (1358:2): [True: 29, False: 0]
  ------------------
 1359|     29|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     29|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 29]
  |  |  ------------------
  ------------------
 1360|     29|	return --(p->refcount);
 1361|     29|}
basic_functions.c:zval_gc_flags:
  767|    153|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    153|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    153|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    153|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    153|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    153|}
basic_functions.c:zend_gc_addref:
 1338|  38.1k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  38.1k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  38.1k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 38.1k]
  |  |  ------------------
  ------------------
 1340|  38.1k|	return ++(p->refcount);
 1341|  38.1k|}
basic_functions.c:zval_get_type:
  658|  15.0k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  15.0k|	return pz->u1.v.type;
  660|  15.0k|}
basic_functions.c:zend_gc_set_refcount:
 1333|     14|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     14|	p->refcount = rc;
 1335|     14|	return p->refcount;
 1336|     14|}
basic_functions.c:zval_refcount_p:
 1375|      1|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|      1|#if ZEND_DEBUG
 1377|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 1, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 1, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|      1|#endif
 1379|      1|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|      1|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|      1|}
basic_functions.c:zend_gc_refcount:
 1329|      1|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      1|	return p->refcount;
 1331|      1|}
basic_functions.c:zval_addref_p:
 1387|  38.1k|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|  38.1k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  38.1k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 38.1k]
  |  Branch (1388:2): [True: 38.1k, False: 0]
  ------------------
 1389|  38.1k|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|  38.1k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|  38.1k|}
dir.c:zend_gc_delref:
 1357|      2|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      2|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 2]
  |  Branch (1358:2): [True: 2, False: 0]
  ------------------
 1359|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1360|      2|	return --(p->refcount);
 1361|      2|}
dir.c:zval_gc_flags:
  767|      4|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      4|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      4|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      4|}
dir.c:zval_get_type:
  658|      6|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      6|	return pz->u1.v.type;
  660|      6|}
dir.c:zend_gc_set_refcount:
 1333|      2|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      2|	p->refcount = rc;
 1335|      2|	return p->refcount;
 1336|      2|}
exec.c:zend_gc_set_refcount:
 1333|      1|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      1|	p->refcount = rc;
 1335|      1|	return p->refcount;
 1336|      1|}
exec.c:zval_get_type:
  658|      1|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      1|	return pz->u1.v.type;
  660|      1|}
exec.c:zval_gc_flags:
  767|      1|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      1|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      1|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      1|}
file.c:zend_gc_addref:
 1338|      2|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1340|      2|	return ++(p->refcount);
 1341|      2|}
file.c:zval_get_type:
  658|     13|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     13|	return pz->u1.v.type;
  660|     13|}
file.c:zval_gc_flags:
  767|      8|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      8|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      8|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      8|}
file.c:zend_gc_set_refcount:
 1333|      2|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      2|	p->refcount = rc;
 1335|      2|	return p->refcount;
 1336|      2|}
formatted_print.c:zval_get_type:
  658|     10|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     10|	return pz->u1.v.type;
  660|     10|}
formatted_print.c:zend_gc_set_refcount:
 1333|      7|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      7|	p->refcount = rc;
 1335|      7|	return p->refcount;
 1336|      7|}
formatted_print.c:zend_gc_refcount:
 1329|      4|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      4|	return p->refcount;
 1331|      4|}
formatted_print.c:zval_gc_flags:
  767|     11|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     11|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     11|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     11|}
head.c:zval_get_type:
  658|      3|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      3|	return pz->u1.v.type;
  660|      3|}
head.c:zend_gc_set_refcount:
 1333|      1|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      1|	p->refcount = rc;
 1335|      1|	return p->refcount;
 1336|      1|}
html.c:zend_gc_set_refcount:
 1333|     63|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     63|	p->refcount = rc;
 1335|     63|	return p->refcount;
 1336|     63|}
html.c:zend_gc_refcount:
 1329|     66|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     66|	return p->refcount;
 1331|     66|}
html.c:zval_gc_flags:
  767|    138|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    138|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    138|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    138|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    138|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    138|}
html.c:zval_get_type:
  658|    273|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    273|	return pz->u1.v.type;
  660|    273|}
image.c:zval_get_type:
  658|     22|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     22|	return pz->u1.v.type;
  660|     22|}
incomplete_class.c:zval_gc_flags:
  767|      4|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      4|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      4|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      4|}
incomplete_class.c:zend_gc_addref:
 1338|      4|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      4|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      4|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1340|      4|	return ++(p->refcount);
 1341|      4|}
info.c:zend_gc_set_refcount:
 1333|      7|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      7|	p->refcount = rc;
 1335|      7|	return p->refcount;
 1336|      7|}
info.c:zend_gc_refcount:
 1329|      8|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      8|	return p->refcount;
 1331|      8|}
info.c:zval_gc_flags:
  767|     20|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     20|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     20|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     20|}
info.c:zval_get_type:
  658|    344|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    344|	return pz->u1.v.type;
  660|    344|}
info.c:zend_gc_delref:
 1357|      2|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      2|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 2]
  |  Branch (1358:2): [True: 2, False: 0]
  ------------------
 1359|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1360|      2|	return --(p->refcount);
 1361|      2|}
math.c:zval_get_type:
  658|     16|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     16|	return pz->u1.v.type;
  660|     16|}
md5.c:zval_get_type:
  658|      2|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      2|	return pz->u1.v.type;
  660|      2|}
md5.c:zend_gc_set_refcount:
 1333|      2|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      2|	p->refcount = rc;
 1335|      2|	return p->refcount;
 1336|      2|}
quot_print.c:zend_gc_set_refcount:
 1333|     13|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     13|	p->refcount = rc;
 1335|     13|	return p->refcount;
 1336|     13|}
quot_print.c:zend_gc_refcount:
 1329|     13|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     13|	return p->refcount;
 1331|     13|}
quot_print.c:zval_get_type:
  658|     13|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     13|	return pz->u1.v.type;
  660|     13|}
quot_print.c:zval_gc_flags:
  767|     26|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     26|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     26|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     26|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     26|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     26|}
string.c:zval_gc_flags:
  767|     63|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     63|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     63|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     63|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     63|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     63|}
string.c:zval_get_type:
  658|    601|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    601|	return pz->u1.v.type;
  660|    601|}
string.c:zend_gc_addref:
 1338|     10|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     10|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     10|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1340|     10|	return ++(p->refcount);
 1341|     10|}
string.c:zend_gc_set_refcount:
 1333|     85|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     85|	p->refcount = rc;
 1335|     85|	return p->refcount;
 1336|     85|}
string.c:zend_gc_refcount:
 1329|     17|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     17|	return p->refcount;
 1331|     17|}
string.c:zend_gc_delref:
 1357|      2|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      2|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 2]
  |  Branch (1358:2): [True: 2, False: 0]
  ------------------
 1359|      2|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1360|      2|	return --(p->refcount);
 1361|      2|}
type.c:zval_get_type:
  658|      1|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      1|	return pz->u1.v.type;
  660|      1|}
url_scanner_ex.c:zval_gc_flags:
  767|     20|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     20|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     20|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     20|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     20|}
url_scanner_ex.c:zend_gc_delref:
 1357|     10|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     10|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 10]
  |  Branch (1358:2): [True: 10, False: 0]
  ------------------
 1359|     10|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     10|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1360|     10|	return --(p->refcount);
 1361|     10|}
url_scanner_ex.c:zend_gc_set_refcount:
 1333|     10|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     10|	p->refcount = rc;
 1335|     10|	return p->refcount;
 1336|     10|}
user_filters.c:zend_gc_set_refcount:
 1333|     19|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     19|	p->refcount = rc;
 1335|     19|	return p->refcount;
 1336|     19|}
user_filters.c:zend_gc_delref:
 1357|     20|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     20|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 20]
  |  Branch (1358:2): [True: 20, False: 0]
  ------------------
 1359|     20|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     20|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1360|     20|	return --(p->refcount);
 1361|     20|}
user_filters.c:zval_get_type:
  658|     11|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     11|	return pz->u1.v.type;
  660|     11|}
user_filters.c:zval_gc_flags:
  767|     43|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     43|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     43|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     43|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     43|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     43|}
user_filters.c:zend_gc_addref:
 1338|      3|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      3|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      3|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1340|      3|	return ++(p->refcount);
 1341|      3|}
var_unserializer.c:zend_gc_addref:
 1338|      5|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      5|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      5|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1340|      5|	return ++(p->refcount);
 1341|      5|}
var_unserializer.c:zval_get_type:
  658|     71|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     71|	return pz->u1.v.type;
  660|     71|}
var_unserializer.c:zend_gc_delref:
 1357|     38|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     38|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 38]
  |  Branch (1358:2): [True: 38, False: 0]
  ------------------
 1359|     38|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     38|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 38]
  |  |  ------------------
  ------------------
 1360|     38|	return --(p->refcount);
 1361|     38|}
var_unserializer.c:zend_gc_set_refcount:
 1333|     15|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     15|	p->refcount = rc;
 1335|     15|	return p->refcount;
 1336|     15|}
var_unserializer.c:zval_gc_flags:
  767|    112|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    112|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    112|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    112|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    112|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    112|}
var_unserializer.c:zend_gc_refcount:
 1329|     17|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     17|	return p->refcount;
 1331|     17|}
var_unserializer.c:zval_delref_p:
 1392|      3|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      3|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 3]
  |  Branch (1393:2): [True: 3, False: 0]
  ------------------
 1394|      3|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      3|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      3|}
var.c:zval_get_type:
  658|  10.4M|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  10.4M|	return pz->u1.v.type;
  660|  10.4M|}
var.c:zval_gc_flags:
  767|  1.88k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  1.88k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.88k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  1.88k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.88k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  1.88k|}
var.c:zend_gc_addref:
 1338|    301|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    301|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    301|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 301]
  |  |  ------------------
  ------------------
 1340|    301|	return ++(p->refcount);
 1341|    301|}
var.c:zend_gc_delref:
 1357|    690|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    690|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    690|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 690]
  |  Branch (1358:2): [True: 690, False: 0]
  ------------------
 1359|    690|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    690|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 690]
  |  |  ------------------
  ------------------
 1360|    690|	return --(p->refcount);
 1361|    690|}
var.c:zval_refcount_p:
 1375|    137|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|    137|#if ZEND_DEBUG
 1377|    137|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|    137|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 137, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 137, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|    137|#endif
 1379|    137|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|    137|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|    137|}
var.c:zend_gc_refcount:
 1329|    192|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|    192|	return p->refcount;
 1331|    192|}
var.c:zval_addref_p:
 1387|     10|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|     10|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 10]
  |  Branch (1388:2): [True: 10, False: 0]
  ------------------
 1389|     10|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|     10|}
php_uri.c:zend_gc_delref:
 1357|      6|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      6|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 6]
  |  Branch (1358:2): [True: 6, False: 0]
  ------------------
 1359|      6|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      6|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1360|      6|	return --(p->refcount);
 1361|      6|}
php_uri.c:zval_gc_flags:
  767|     18|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     18|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     18|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     18|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     18|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     18|}
php_uri.c:zend_gc_set_refcount:
 1333|      8|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      8|	p->refcount = rc;
 1335|      8|	return p->refcount;
 1336|      8|}
fopen_wrappers.c:zval_gc_flags:
  767|      3|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      3|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      3|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      3|}
fopen_wrappers.c:zend_gc_refcount:
 1329|      1|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      1|	return p->refcount;
 1331|      1|}
fopen_wrappers.c:zend_gc_delref:
 1357|      1|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      1|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 1]
  |  Branch (1358:2): [True: 1, False: 0]
  ------------------
 1359|      1|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      1|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1360|      1|	return --(p->refcount);
 1361|      1|}
fopen_wrappers.c:zend_gc_set_refcount:
 1333|      8|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      8|	p->refcount = rc;
 1335|      8|	return p->refcount;
 1336|      8|}
main.c:zend_gc_refcount:
 1329|    961|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|    961|	return p->refcount;
 1331|    961|}
main.c:zval_gc_flags:
  767|   325k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   325k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   325k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   325k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   325k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   325k|}
main.c:zend_gc_delref:
 1357|   108k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|   108k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|   108k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 108k]
  |  Branch (1358:2): [True: 108k, False: 0]
  ------------------
 1359|   108k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|   108k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 108k]
  |  |  ------------------
  ------------------
 1360|   108k|	return --(p->refcount);
 1361|   108k|}
main.c:zval_get_type:
  658|  53.4k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  53.4k|	return pz->u1.v.type;
  660|  53.4k|}
main.c:zend_gc_addref:
 1338|   106k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|   106k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|   106k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 106k]
  |  |  ------------------
  ------------------
 1340|   106k|	return ++(p->refcount);
 1341|   106k|}
output.c:zval_gc_flags:
  767|  5.28k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  5.28k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  5.28k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  5.28k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  5.28k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  5.28k|}
output.c:zend_gc_delref:
 1357|  2.20k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  2.20k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  2.20k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 2.20k]
  |  Branch (1358:2): [True: 2.20k, False: 0]
  ------------------
 1359|  2.20k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  2.20k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2.20k]
  |  |  ------------------
  ------------------
 1360|  2.20k|	return --(p->refcount);
 1361|  2.20k|}
output.c:zend_gc_set_refcount:
 1333|     15|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     15|	p->refcount = rc;
 1335|     15|	return p->refcount;
 1336|     15|}
output.c:zval_get_type:
  658|     27|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     27|	return pz->u1.v.type;
  660|     27|}
output.c:zend_gc_addref:
 1338|  2.20k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  2.20k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  2.20k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2.20k]
  |  |  ------------------
  ------------------
 1340|  2.20k|	return ++(p->refcount);
 1341|  2.20k|}
php_ini.c:zval_get_type:
  658|  1.43k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  1.43k|	return pz->u1.v.type;
  660|  1.43k|}
php_ini.c:zval_gc_flags:
  767|     22|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     22|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     22|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     22|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     22|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     22|}
php_ini.c:zend_gc_set_refcount:
 1333|     22|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     22|	p->refcount = rc;
 1335|     22|	return p->refcount;
 1336|     22|}
php_variables.c:zval_gc_flags:
  767|  33.9k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  33.9k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  33.9k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  33.9k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  33.9k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  33.9k|}
php_variables.c:zval_get_type:
  658|  33.5k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  33.5k|	return pz->u1.v.type;
  660|  33.5k|}
php_variables.c:zend_gc_delref:
 1357|  33.7k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  33.7k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  33.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 33.7k]
  |  Branch (1358:2): [True: 33.7k, False: 0]
  ------------------
 1359|  33.7k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  33.7k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 33.7k]
  |  |  ------------------
  ------------------
 1360|  33.7k|	return --(p->refcount);
 1361|  33.7k|}
php_variables.c:zval_delref_p:
 1392|  33.5k|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|  33.5k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 33.5k]
  |  Branch (1393:2): [True: 33.5k, False: 0]
  ------------------
 1394|  33.5k|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|  33.5k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|  33.5k|}
php_variables.c:zend_gc_set_refcount:
 1333|  33.7k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  33.7k|	p->refcount = rc;
 1335|  33.7k|	return p->refcount;
 1336|  33.7k|}
php_variables.c:zval_addref_p:
 1387|   134k|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|   134k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|   134k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 134k]
  |  Branch (1388:2): [True: 134k, False: 0]
  ------------------
 1389|   134k|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|   134k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|   134k|}
php_variables.c:zend_gc_addref:
 1338|   134k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|   134k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|   134k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 134k]
  |  |  ------------------
  ------------------
 1340|   134k|	return ++(p->refcount);
 1341|   134k|}
SAPI.c:zval_get_type:
  658|  33.5k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  33.5k|	return pz->u1.v.type;
  660|  33.5k|}
SAPI.c:zend_gc_set_refcount:
 1333|      4|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      4|	p->refcount = rc;
 1335|      4|	return p->refcount;
 1336|      4|}
SAPI.c:zend_gc_delref:
 1357|      4|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      4|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 4]
  |  Branch (1358:2): [True: 4, False: 0]
  ------------------
 1359|      4|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      4|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1360|      4|	return --(p->refcount);
 1361|      4|}
SAPI.c:zval_gc_flags:
  767|      8|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      8|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      8|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      8|}
filter.c:zval_gc_flags:
  767|     12|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     12|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     12|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     12|}
memory.c:zval_gc_flags:
  767|     44|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     44|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     44|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     44|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     44|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     44|}
memory.c:zend_gc_delref:
 1357|     22|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     22|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 22]
  |  Branch (1358:2): [True: 22, False: 0]
  ------------------
 1359|     22|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     22|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1360|     22|	return --(p->refcount);
 1361|     22|}
memory.c:zend_gc_addref:
 1338|     22|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     22|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     22|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1340|     22|	return ++(p->refcount);
 1341|     22|}
plain_wrapper.c:zend_gc_set_refcount:
 1333|      5|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      5|	p->refcount = rc;
 1335|      5|	return p->refcount;
 1336|      5|}
stream_errors.c:zend_gc_delref:
 1357|  1.39k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  1.39k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  1.39k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 1.39k]
  |  Branch (1358:2): [True: 1.39k, False: 0]
  ------------------
 1359|  1.39k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.39k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.39k]
  |  |  ------------------
  ------------------
 1360|  1.39k|	return --(p->refcount);
 1361|  1.39k|}
stream_errors.c:zval_gc_flags:
  767|  3.44k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  3.44k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  3.44k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  3.44k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  3.44k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  3.44k|}
stream_errors.c:zend_gc_set_refcount:
 1333|     10|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     10|	p->refcount = rc;
 1335|     10|	return p->refcount;
 1336|     10|}
streams.c:zval_get_type:
  658|     36|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     36|	return pz->u1.v.type;
  660|     36|}
streams.c:zend_gc_addref:
 1338|      1|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      1|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      1|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1340|      1|	return ++(p->refcount);
 1341|      1|}
streams.c:zend_gc_set_refcount:
 1333|      1|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      1|	p->refcount = rc;
 1335|      1|	return p->refcount;
 1336|      1|}
streams.c:zval_gc_flags:
  767|     26|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     26|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     26|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     26|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     26|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     26|}
streams.c:zend_gc_delref:
 1357|      6|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      6|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 6]
  |  Branch (1358:2): [True: 6, False: 0]
  ------------------
 1359|      6|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      6|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1360|      6|	return --(p->refcount);
 1361|      6|}
streams.c:zend_gc_refcount:
 1329|      1|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      1|	return p->refcount;
 1331|      1|}
transports.c:zval_gc_flags:
  767|      8|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      8|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      8|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      8|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      8|}
userspace.c:zend_gc_addref:
 1338|  1.33k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  1.33k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.33k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.33k]
  |  |  ------------------
  ------------------
 1340|  1.33k|	return ++(p->refcount);
 1341|  1.33k|}
userspace.c:zval_get_type:
  658|  6.64k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  6.64k|	return pz->u1.v.type;
  660|  6.64k|}
userspace.c:zend_gc_set_refcount:
 1333|  11.9k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  11.9k|	p->refcount = rc;
 1335|  11.9k|	return p->refcount;
 1336|  11.9k|}
userspace.c:zend_gc_delref:
 1357|    684|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    684|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    684|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 684]
  |  Branch (1358:2): [True: 684, False: 0]
  ------------------
 1359|    684|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    684|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 684]
  |  |  ------------------
  ------------------
 1360|    684|	return --(p->refcount);
 1361|    684|}
userspace.c:zval_gc_flags:
  767|  1.36k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  1.36k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.36k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  1.36k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.36k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  1.36k|}
compact_literals.c:zval_get_type:
  658|      1|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      1|	return pz->u1.v.type;
  660|      1|}
sccp.c:zval_get_type:
  658|      1|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      1|	return pz->u1.v.type;
  660|      1|}
zend_func_info.c:zval_gc_flags:
  767|  1.06k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  1.06k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.06k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  1.06k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.06k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  1.06k|}
zend_inference.c:zval_get_type:
  658|      5|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      5|	return pz->u1.v.type;
  660|      5|}
zend_optimizer.c:zval_get_type:
  658|      4|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      4|	return pz->u1.v.type;
  660|      4|}
zend_alloc.c:zval_get_type:
  658|   163k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   163k|	return pz->u1.v.type;
  660|   163k|}
zend_API.c:zval_get_type:
  658|  20.7k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  20.7k|	return pz->u1.v.type;
  660|  20.7k|}
zend_API.c:zend_gc_delref:
 1357|  16.7k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  16.7k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  16.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 16.7k]
  |  Branch (1358:2): [True: 16.7k, False: 0]
  ------------------
 1359|  16.7k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  16.7k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 16.7k]
  |  |  ------------------
  ------------------
 1360|  16.7k|	return --(p->refcount);
 1361|  16.7k|}
zend_API.c:zval_gc_flags:
  767|  35.6k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  35.6k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  35.6k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  35.6k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  35.6k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  35.6k|}
zend_API.c:zend_gc_refcount:
 1329|     10|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     10|	return p->refcount;
 1331|     10|}
zend_API.c:zval_addref_p:
 1387|    198|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|    198|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|    198|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 198]
  |  Branch (1388:2): [True: 198, False: 0]
  ------------------
 1389|    198|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|    198|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|    198|}
zend_API.c:zend_gc_addref:
 1338|  6.57k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  6.57k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  6.57k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 6.57k]
  |  |  ------------------
  ------------------
 1340|  6.57k|	return ++(p->refcount);
 1341|  6.57k|}
zend_API.c:zend_gc_set_refcount:
 1333|  4.76k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  4.76k|	p->refcount = rc;
 1335|  4.76k|	return p->refcount;
 1336|  4.76k|}
zend_ast.c:zval_gc_flags:
  767|  3.54k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  3.54k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  3.54k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  3.54k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  3.54k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  3.54k|}
zend_ast.c:zval_get_type:
  658|  1.37k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  1.37k|	return pz->u1.v.type;
  660|  1.37k|}
zend_ast.c:zend_gc_delref:
 1357|  26.4k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  26.4k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  26.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 26.4k]
  |  Branch (1358:2): [True: 26.4k, False: 0]
  ------------------
 1359|  26.4k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  26.4k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 26.4k]
  |  |  ------------------
  ------------------
 1360|  26.4k|	return --(p->refcount);
 1361|  26.4k|}
zend_ast.c:zval_delref_p:
 1392|  24.4k|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|  24.4k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  24.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 24.4k]
  |  Branch (1393:2): [True: 24.4k, False: 0]
  ------------------
 1394|  24.4k|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|  24.4k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|  24.4k|}
zend_ast.c:zend_gc_addref:
 1338|    521|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    521|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    521|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 521]
  |  |  ------------------
  ------------------
 1340|    521|	return ++(p->refcount);
 1341|    521|}
zend_ast.c:zend_gc_set_refcount:
 1333|    297|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|    297|	p->refcount = rc;
 1335|    297|	return p->refcount;
 1336|    297|}
zend_attributes.c:zval_get_type:
  658|    664|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    664|	return pz->u1.v.type;
  660|    664|}
zend_attributes.c:zend_gc_addref:
 1338|    162|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    162|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    162|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 162]
  |  |  ------------------
  ------------------
 1340|    162|	return ++(p->refcount);
 1341|    162|}
zend_attributes.c:zval_gc_flags:
  767|  1.21k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  1.21k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.21k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  1.21k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.21k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  1.21k|}
zend_attributes.c:zval_gc_type:
  763|     19|static zend_always_inline uint8_t zval_gc_type(uint32_t gc_type_info) {
  764|     19|	return (gc_type_info & GC_TYPE_MASK);
  ------------------
  |  |  757|     19|#define GC_TYPE_MASK				0x0000000f
  ------------------
  765|     19|}
zend_attributes.c:zend_gc_refcount:
 1329|     12|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     12|	return p->refcount;
 1331|     12|}
zend_attributes.c:zend_gc_set_refcount:
 1333|      3|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      3|	p->refcount = rc;
 1335|      3|	return p->refcount;
 1336|      3|}
zend_attributes.c:zend_gc_delref:
 1357|    253|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    253|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 253]
  |  Branch (1358:2): [True: 253, False: 0]
  ------------------
 1359|    253|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    253|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 253]
  |  |  ------------------
  ------------------
 1360|    253|	return --(p->refcount);
 1361|    253|}
zend_autoload.c:zend_gc_addref:
 1338|     11|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     11|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     11|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1340|     11|	return ++(p->refcount);
 1341|     11|}
zend_autoload.c:zval_gc_flags:
  767|     28|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|     28|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     28|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|     28|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|     28|#define GC_FLAGS_SHIFT				0
  ------------------
  769|     28|}
zend_autoload.c:zend_gc_delref:
 1357|     11|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     11|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 11]
  |  Branch (1358:2): [True: 11, False: 0]
  ------------------
 1359|     11|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     11|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 11]
  |  |  ------------------
  ------------------
 1360|     11|	return --(p->refcount);
 1361|     11|}
zend_builtin_functions.c:zend_gc_refcount:
 1329|      5|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      5|	return p->refcount;
 1331|      5|}
zend_builtin_functions.c:zend_gc_delref:
 1357|     44|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     44|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     44|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 44]
  |  Branch (1358:2): [True: 44, False: 0]
  ------------------
 1359|     44|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     44|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 44]
  |  |  ------------------
  ------------------
 1360|     44|	return --(p->refcount);
 1361|     44|}
zend_builtin_functions.c:zval_get_type:
  658|  94.6k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  94.6k|	return pz->u1.v.type;
  660|  94.6k|}
zend_builtin_functions.c:zval_addref_p:
 1387|  11.0k|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|  11.0k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  11.0k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 11.0k]
  |  Branch (1388:2): [True: 11.0k, False: 0]
  ------------------
 1389|  11.0k|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|  11.0k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|  11.0k|}
zend_builtin_functions.c:zend_gc_addref:
 1338|  24.2k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  24.2k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  24.2k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 24.2k]
  |  |  ------------------
  ------------------
 1340|  24.2k|	return ++(p->refcount);
 1341|  24.2k|}
zend_builtin_functions.c:zval_gc_flags:
  767|  82.9k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  82.9k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  82.9k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  82.9k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  82.9k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  82.9k|}
zend_builtin_functions.c:zend_gc_set_refcount:
 1333|     11|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     11|	p->refcount = rc;
 1335|     11|	return p->refcount;
 1336|     11|}
zend_builtin_functions.c:zend_gc_try_delref:
 1350|      3|static zend_always_inline void zend_gc_try_delref(zend_refcounted_h *p) {
 1351|      3|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      3|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1351:6): [True: 0, False: 3]
  ------------------
 1352|      0|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      0|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1353|      0|		--p->refcount;
 1354|      0|	}
 1355|      3|}
zend_closures.c:zval_gc_flags:
  767|    678|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    678|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    678|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    678|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    678|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    678|}
zend_closures.c:zend_gc_delref:
 1357|     32|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     32|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 32]
  |  Branch (1358:2): [True: 32, False: 0]
  ------------------
 1359|     32|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     32|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 32]
  |  |  ------------------
  ------------------
 1360|     32|	return --(p->refcount);
 1361|     32|}
zend_closures.c:zval_get_type:
  658|  3.27k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  3.27k|	return pz->u1.v.type;
  660|  3.27k|}
zend_closures.c:zval_refcount_p:
 1375|      2|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|      2|#if ZEND_DEBUG
 1377|      2|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 2, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 2, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|      2|#endif
 1379|      2|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|      2|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|      2|}
zend_closures.c:zend_gc_refcount:
 1329|      2|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      2|	return p->refcount;
 1331|      2|}
zend_closures.c:zend_gc_addref:
 1338|    580|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    580|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    580|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 580]
  |  |  ------------------
  ------------------
 1340|    580|	return ++(p->refcount);
 1341|    580|}
zend_compile.c:zend_gc_delref:
 1357|  14.3k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  14.3k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  14.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 14.3k]
  |  Branch (1358:2): [True: 14.3k, False: 0]
  ------------------
 1359|  14.3k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  14.3k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 14.3k]
  |  |  ------------------
  ------------------
 1360|  14.3k|	return --(p->refcount);
 1361|  14.3k|}
zend_compile.c:zval_gc_flags:
  767|   102k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   102k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   102k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   102k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   102k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   102k|}
zend_compile.c:zval_get_type:
  658|   678k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   678k|	return pz->u1.v.type;
  660|   678k|}
zend_compile.c:zend_gc_set_refcount:
 1333|  1.17k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  1.17k|	p->refcount = rc;
 1335|  1.17k|	return p->refcount;
 1336|  1.17k|}
zend_compile.c:zend_gc_refcount:
 1329|     26|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     26|	return p->refcount;
 1331|     26|}
zend_compile.c:zval_delref_p:
 1392|     81|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|     81|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     81|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 81]
  |  Branch (1393:2): [True: 81, False: 0]
  ------------------
 1394|     81|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|     81|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|     81|}
zend_compile.c:zend_gc_addref:
 1338|  32.6k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  32.6k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  32.6k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 32.6k]
  |  |  ------------------
  ------------------
 1340|  32.6k|	return ++(p->refcount);
 1341|  32.6k|}
zend_compile.c:zval_addref_p:
 1387|    286|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|    286|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|    286|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 286]
  |  Branch (1388:2): [True: 286, False: 0]
  ------------------
 1389|    286|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|    286|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|    286|}
zend_constants.c:zval_delref_p:
 1392|      4|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      4|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 4]
  |  Branch (1393:2): [True: 4, False: 0]
  ------------------
 1394|      4|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      4|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      4|}
zend_constants.c:zend_gc_delref:
 1357|     42|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     42|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     42|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 42]
  |  Branch (1358:2): [True: 42, False: 0]
  ------------------
 1359|     42|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     42|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 42]
  |  |  ------------------
  ------------------
 1360|     42|	return --(p->refcount);
 1361|     42|}
zend_constants.c:zval_gc_flags:
  767|    327|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    327|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    327|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    327|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    327|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    327|}
zend_constants.c:zend_gc_refcount:
 1329|      5|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      5|	return p->refcount;
 1331|      5|}
zend_constants.c:zval_get_type:
  658|     35|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     35|	return pz->u1.v.type;
  660|     35|}
zend_constants.c:zend_gc_set_refcount:
 1333|     28|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     28|	p->refcount = rc;
 1335|     28|	return p->refcount;
 1336|     28|}
zend_constants.c:zend_gc_addref:
 1338|    131|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    131|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    131|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 131]
  |  |  ------------------
  ------------------
 1340|    131|	return ++(p->refcount);
 1341|    131|}
zend_constants.c:zend_gc_try_addref:
 1343|     12|static zend_always_inline void zend_gc_try_addref(zend_refcounted_h *p) {
 1344|     12|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|     12|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1344:6): [True: 12, False: 0]
  ------------------
 1345|     12|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     12|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1346|     12|		++p->refcount;
 1347|     12|	}
 1348|     12|}
zend_enum.c:zval_gc_flags:
  767|  1.70k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  1.70k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.70k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  1.70k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  1.70k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  1.70k|}
zend_enum.c:zend_gc_addref:
 1338|    124|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    124|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    124|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 124]
  |  |  ------------------
  ------------------
 1340|    124|	return ++(p->refcount);
 1341|    124|}
zend_enum.c:zend_gc_set_refcount:
 1333|    456|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|    456|	p->refcount = rc;
 1335|    456|	return p->refcount;
 1336|    456|}
zend_enum.c:zval_get_type:
  658|    838|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    838|	return pz->u1.v.type;
  660|    838|}
zend_enum.c:zval_addref_p:
 1387|     32|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|     32|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 32]
  |  Branch (1388:2): [True: 32, False: 0]
  ------------------
 1389|     32|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|     32|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|     32|}
zend_exceptions.c:zval_get_type:
  658|   339k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   339k|	return pz->u1.v.type;
  660|   339k|}
zend_exceptions.c:zend_gc_delref:
 1357|  37.2k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  37.2k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  37.2k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 37.2k]
  |  Branch (1358:2): [True: 37.2k, False: 0]
  ------------------
 1359|  37.2k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  37.2k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 37.2k]
  |  |  ------------------
  ------------------
 1360|  37.2k|	return --(p->refcount);
 1361|  37.2k|}
zend_exceptions.c:zend_gc_addref:
 1338|  15.3k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  15.3k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  15.3k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 15.3k]
  |  |  ------------------
  ------------------
 1340|  15.3k|	return ++(p->refcount);
 1341|  15.3k|}
zend_exceptions.c:zval_addref_p:
 1387|      2|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      2|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 2]
  |  Branch (1388:2): [True: 2, False: 0]
  ------------------
 1389|      2|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      2|}
zend_exceptions.c:zend_gc_set_refcount:
 1333|  22.1k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  22.1k|	p->refcount = rc;
 1335|  22.1k|	return p->refcount;
 1336|  22.1k|}
zend_exceptions.c:zval_gc_flags:
  767|  60.6k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  60.6k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  60.6k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  60.6k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  60.6k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  60.6k|}
zend_execute_API.c:zval_refcount_p:
 1375|    743|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|    743|#if ZEND_DEBUG
 1377|    743|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|    743|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 743, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 743, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|    743|#endif
 1379|    743|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|    743|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|    743|}
zend_execute_API.c:zval_get_type:
  658|  6.36M|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  6.36M|	return pz->u1.v.type;
  660|  6.36M|}
zend_execute_API.c:zval_delref_p:
 1392|    438|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|    438|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|    438|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 438]
  |  Branch (1393:2): [True: 438, False: 0]
  ------------------
 1394|    438|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|    438|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|    438|}
zend_execute_API.c:zval_gc_flags:
  767|  19.8k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  19.8k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  19.8k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  19.8k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  19.8k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  19.8k|}
zend_execute_API.c:zend_gc_addref:
 1338|  7.51k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  7.51k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  7.51k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 7.51k]
  |  |  ------------------
  ------------------
 1340|  7.51k|	return ++(p->refcount);
 1341|  7.51k|}
zend_execute_API.c:zend_gc_delref:
 1357|  7.91k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  7.91k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  7.91k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 7.91k]
  |  Branch (1358:2): [True: 7.91k, False: 0]
  ------------------
 1359|  7.91k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  7.91k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 7.91k]
  |  |  ------------------
  ------------------
 1360|  7.91k|	return --(p->refcount);
 1361|  7.91k|}
zend_execute_API.c:zval_addref_p:
 1387|      1|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 1]
  |  Branch (1388:2): [True: 1, False: 0]
  ------------------
 1389|      1|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      1|}
zend_execute_API.c:zend_gc_set_refcount:
 1333|     32|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     32|	p->refcount = rc;
 1335|     32|	return p->refcount;
 1336|     32|}
zend_execute_API.c:zend_gc_refcount:
 1329|  4.47k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  4.47k|	return p->refcount;
 1331|  4.47k|}
zend_execute.c:zval_get_type:
  658|   466k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   466k|	return pz->u1.v.type;
  660|   466k|}
zend_execute.c:zval_addref_p:
 1387|  27.2k|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|  27.2k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  27.2k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 27.2k]
  |  Branch (1388:2): [True: 27.2k, False: 0]
  ------------------
 1389|  27.2k|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|  27.2k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|  27.2k|}
zend_execute.c:zval_gc_flags:
  767|  83.8k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  83.8k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  83.8k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  83.8k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  83.8k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  83.8k|}
zend_execute.c:zend_gc_addref:
 1338|  50.6k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  50.6k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  50.6k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 50.6k]
  |  |  ------------------
  ------------------
 1340|  50.6k|	return ++(p->refcount);
 1341|  50.6k|}
zend_execute.c:zend_gc_delref:
 1357|  71.3k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  71.3k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  71.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 71.3k]
  |  Branch (1358:2): [True: 71.3k, False: 0]
  ------------------
 1359|  71.3k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  71.3k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 71.3k]
  |  |  ------------------
  ------------------
 1360|  71.3k|	return --(p->refcount);
 1361|  71.3k|}
zend_execute.c:zend_gc_refcount:
 1329|  17.2k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  17.2k|	return p->refcount;
 1331|  17.2k|}
zend_execute.c:zend_gc_try_addref:
 1343|     50|static zend_always_inline void zend_gc_try_addref(zend_refcounted_h *p) {
 1344|     50|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|     50|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1344:6): [True: 50, False: 0]
  ------------------
 1345|     50|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     50|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 50]
  |  |  ------------------
  ------------------
 1346|     50|		++p->refcount;
 1347|     50|	}
 1348|     50|}
zend_execute.c:zval_delref_p:
 1392|  29.4k|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|  29.4k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  29.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 29.4k]
  |  Branch (1393:2): [True: 29.4k, False: 0]
  ------------------
 1394|  29.4k|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|  29.4k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|  29.4k|}
zend_execute.c:zend_gc_set_refcount:
 1333|  7.29k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  7.29k|	p->refcount = rc;
 1335|  7.29k|	return p->refcount;
 1336|  7.29k|}
zend_execute.c:zend_gc_try_delref:
 1350|    313|static zend_always_inline void zend_gc_try_delref(zend_refcounted_h *p) {
 1351|    313|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|    313|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1351:6): [True: 258, False: 55]
  ------------------
 1352|    258|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    258|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 258]
  |  |  ------------------
  ------------------
 1353|    258|		--p->refcount;
 1354|    258|	}
 1355|    313|}
zend_execute.c:zval_refcount_p:
 1375|     62|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|     62|#if ZEND_DEBUG
 1377|     62|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|     62|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 62, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 62, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|     62|#endif
 1379|     62|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|     62|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|     62|}
zend_execute.c:zval_gc_type:
  763|      2|static zend_always_inline uint8_t zval_gc_type(uint32_t gc_type_info) {
  764|      2|	return (gc_type_info & GC_TYPE_MASK);
  ------------------
  |  |  757|      2|#define GC_TYPE_MASK				0x0000000f
  ------------------
  765|      2|}
zend_execute.c:zval_set_refcount_p:
 1382|      5|static zend_always_inline uint32_t zval_set_refcount_p(zval* pz, uint32_t rc) {
 1383|      5|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1383:2): [True: 0, False: 5]
  |  Branch (1383:2): [True: 5, False: 0]
  ------------------
 1384|      5|	return GC_SET_REFCOUNT(Z_COUNTED_P(pz), rc);
  ------------------
  |  |  717|      5|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
 1385|      5|}
zend_fibers.c:zval_get_type:
  658|    892|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    892|	return pz->u1.v.type;
  660|    892|}
zend_fibers.c:zval_addref_p:
 1387|    301|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|    301|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|    301|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 301]
  |  Branch (1388:2): [True: 301, False: 0]
  ------------------
 1389|    301|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|    301|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|    301|}
zend_fibers.c:zend_gc_addref:
 1338|    592|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|    592|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    592|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 592]
  |  |  ------------------
  ------------------
 1340|    592|	return ++(p->refcount);
 1341|    592|}
zend_gc.c:zval_gc_type:
  763|   142k|static zend_always_inline uint8_t zval_gc_type(uint32_t gc_type_info) {
  764|   142k|	return (gc_type_info & GC_TYPE_MASK);
  ------------------
  |  |  757|   142k|#define GC_TYPE_MASK				0x0000000f
  ------------------
  765|   142k|}
zend_gc.c:zval_gc_info:
  771|   133k|static zend_always_inline uint32_t zval_gc_info(uint32_t gc_type_info) {
  772|   133k|	return (gc_type_info >> GC_INFO_SHIFT);
  ------------------
  |  |  761|   133k|#define GC_INFO_SHIFT				10
  ------------------
  773|   133k|}
zend_gc.c:zval_get_type:
  658|  1.95k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  1.95k|	return pz->u1.v.type;
  660|  1.95k|}
zend_gc.c:zend_gc_refcount:
 1329|  1.29k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  1.29k|	return p->refcount;
 1331|  1.29k|}
zend_gc.c:zval_gc_flags:
  767|  5.05k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  5.05k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  5.05k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  5.05k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  5.05k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  5.05k|}
zend_gc.c:zend_gc_addref:
 1338|  1.71k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  1.71k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.71k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.71k]
  |  |  ------------------
  ------------------
 1340|  1.71k|	return ++(p->refcount);
 1341|  1.71k|}
zend_gc.c:zend_gc_delref:
 1357|  1.71k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  1.71k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  1.71k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 1.71k]
  |  Branch (1358:2): [True: 1.71k, False: 0]
  ------------------
 1359|  1.71k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.71k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.71k]
  |  |  ------------------
  ------------------
 1360|  1.71k|	return --(p->refcount);
 1361|  1.71k|}
zend_generators.c:zend_gc_delref:
 1357|     32|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     32|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 32]
  |  Branch (1358:2): [True: 32, False: 0]
  ------------------
 1359|     32|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     32|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 32]
  |  |  ------------------
  ------------------
 1360|     32|	return --(p->refcount);
 1361|     32|}
zend_generators.c:zval_get_type:
  658|  1.28k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  1.28k|	return pz->u1.v.type;
  660|  1.28k|}
zend_generators.c:zval_gc_flags:
  767|      6|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      6|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      6|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      6|}
zend_generators.c:zend_gc_addref:
 1338|     47|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     47|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     47|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 47]
  |  |  ------------------
  ------------------
 1340|     47|	return ++(p->refcount);
 1341|     47|}
zend_generators.c:zval_addref_p:
 1387|      7|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      7|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 7]
  |  Branch (1388:2): [True: 7, False: 0]
  ------------------
 1389|      7|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      7|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      7|}
zend_hash.c:zend_gc_refcount:
 1329|  20.3M|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  20.3M|	return p->refcount;
 1331|  20.3M|}
zend_hash.c:zval_gc_flags:
  767|   588k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   588k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   588k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   588k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   588k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   588k|}
zend_hash.c:zval_get_type:
  658|  8.72M|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  8.72M|	return pz->u1.v.type;
  660|  8.72M|}
zend_hash.c:zend_gc_try_delref:
 1350|    128|static zend_always_inline void zend_gc_try_delref(zend_refcounted_h *p) {
 1351|    128|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|    128|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1351:6): [True: 128, False: 0]
  ------------------
 1352|    128|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    128|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 128]
  |  |  ------------------
  ------------------
 1353|    128|		--p->refcount;
 1354|    128|	}
 1355|    128|}
zend_hash.c:zend_gc_set_refcount:
 1333|   517k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|   517k|	p->refcount = rc;
 1335|   517k|	return p->refcount;
 1336|   517k|}
zend_hash.c:zval_refcount_p:
 1375|    151|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|    151|#if ZEND_DEBUG
 1377|    151|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|    151|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 151, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 151, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|    151|#endif
 1379|    151|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|    151|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|    151|}
zend_hash.c:zval_addref_p:
 1387|    380|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|    380|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|    380|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 380]
  |  Branch (1388:2): [True: 380, False: 0]
  ------------------
 1389|    380|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|    380|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|    380|}
zend_hash.c:zend_gc_addref:
 1338|  20.5k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  20.5k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  20.5k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 20.5k]
  |  |  ------------------
  ------------------
 1340|  20.5k|	return ++(p->refcount);
 1341|  20.5k|}
zend_hash.c:zend_gc_delref:
 1357|  76.4k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  76.4k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  76.4k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 76.4k]
  |  Branch (1358:2): [True: 76.4k, False: 0]
  ------------------
 1359|  76.4k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  76.4k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 76.4k]
  |  |  ------------------
  ------------------
 1360|  76.4k|	return --(p->refcount);
 1361|  76.4k|}
zend_highlight.c:zval_get_type:
  658|   789k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   789k|	return pz->u1.v.type;
  660|   789k|}
zend_highlight.c:zval_delref_p:
 1392|  65.8k|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|  65.8k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  65.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 65.8k]
  |  Branch (1393:2): [True: 65.8k, False: 0]
  ------------------
 1394|  65.8k|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|  65.8k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|  65.8k|}
zend_highlight.c:zend_gc_delref:
 1357|  65.8k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  65.8k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  65.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 65.8k]
  |  Branch (1358:2): [True: 65.8k, False: 0]
  ------------------
 1359|  65.8k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  65.8k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 65.8k]
  |  |  ------------------
  ------------------
 1360|  65.8k|	return --(p->refcount);
 1361|  65.8k|}
zend_highlight.c:zval_gc_flags:
  767|   131k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   131k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   131k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   131k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   131k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   131k|}
zend_inheritance.c:zval_get_type:
  658|  8.53k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  8.53k|	return pz->u1.v.type;
  660|  8.53k|}
zend_inheritance.c:zend_gc_delref:
 1357|    534|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    534|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    534|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 534]
  |  Branch (1358:2): [True: 534, False: 0]
  ------------------
 1359|    534|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    534|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 534]
  |  |  ------------------
  ------------------
 1360|    534|	return --(p->refcount);
 1361|    534|}
zend_inheritance.c:zend_gc_addref:
 1338|     90|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     90|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     90|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 90]
  |  |  ------------------
  ------------------
 1340|     90|	return ++(p->refcount);
 1341|     90|}
zend_inheritance.c:zval_delref_p:
 1392|      1|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 1]
  |  Branch (1393:2): [True: 1, False: 0]
  ------------------
 1394|      1|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      1|}
zend_inheritance.c:zval_addref_p:
 1387|      3|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      3|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 3]
  |  Branch (1388:2): [True: 3, False: 0]
  ------------------
 1389|      3|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      3|}
zend_inheritance.c:zval_gc_flags:
  767|  8.37k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  8.37k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  8.37k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  8.37k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  8.37k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  8.37k|}
zend_inheritance.c:zend_gc_refcount:
 1329|     14|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     14|	return p->refcount;
 1331|     14|}
zend_ini_parser.c:zend_gc_delref:
 1357|   114k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|   114k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|   114k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 114k]
  |  Branch (1358:2): [True: 114k, False: 0]
  ------------------
 1359|   114k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|   114k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 114k]
  |  |  ------------------
  ------------------
 1360|   114k|	return --(p->refcount);
 1361|   114k|}
zend_ini_parser.c:zval_gc_flags:
  767|   576k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   576k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   576k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   576k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   576k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   576k|}
zend_ini_parser.c:zval_get_type:
  658|   290k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   290k|	return pz->u1.v.type;
  660|   290k|}
zend_ini_parser.c:zend_gc_set_refcount:
 1333|  31.7k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  31.7k|	p->refcount = rc;
 1335|  31.7k|	return p->refcount;
 1336|  31.7k|}
zend_ini_parser.c:zend_gc_refcount:
 1329|   207k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|   207k|	return p->refcount;
 1331|   207k|}
zend_ini_scanner.c:zend_gc_set_refcount:
 1333|   198k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|   198k|	p->refcount = rc;
 1335|   198k|	return p->refcount;
 1336|   198k|}
zend_ini.c:zval_get_type:
  658|     85|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     85|	return pz->u1.v.type;
  660|     85|}
zend_ini.c:zend_gc_delref:
 1357|    185|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    185|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    185|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 185]
  |  Branch (1358:2): [True: 185, False: 0]
  ------------------
 1359|    185|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    185|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 185]
  |  |  ------------------
  ------------------
 1360|    185|	return --(p->refcount);
 1361|    185|}
zend_ini.c:zval_gc_flags:
  767|    462|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|    462|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    462|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|    462|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|    462|#define GC_FLAGS_SHIFT				0
  ------------------
  769|    462|}
zend_ini.c:zend_gc_addref:
 1338|     64|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     64|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     64|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 64]
  |  |  ------------------
  ------------------
 1340|     64|	return ++(p->refcount);
 1341|     64|}
zend_ini.c:zend_gc_set_refcount:
 1333|     11|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     11|	p->refcount = rc;
 1335|     11|	return p->refcount;
 1336|     11|}
zend_interfaces.c:zval_get_type:
  658|     52|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     52|	return pz->u1.v.type;
  660|     52|}
zend_interfaces.c:zval_refcount_p:
 1375|      3|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|      3|#if ZEND_DEBUG
 1377|      3|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 3, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 3, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|      3|#endif
 1379|      3|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|      3|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|      3|}
zend_interfaces.c:zend_gc_refcount:
 1329|      3|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|      3|	return p->refcount;
 1331|      3|}
zend_interfaces.c:zend_gc_addref:
 1338|      9|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      9|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      9|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1340|      9|	return ++(p->refcount);
 1341|      9|}
zend_iterators.c:zend_gc_delref:
 1357|     20|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     20|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     20|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 20]
  |  Branch (1358:2): [True: 20, False: 0]
  ------------------
 1359|     20|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     20|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1360|     20|	return --(p->refcount);
 1361|     20|}
zend_iterators.c:zval_get_type:
  658|    238|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    238|	return pz->u1.v.type;
  660|    238|}
zend_language_parser.c:zend_gc_delref:
 1357|      3|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      3|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 3]
  |  Branch (1358:2): [True: 3, False: 0]
  ------------------
 1359|      3|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      3|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1360|      3|	return --(p->refcount);
 1361|      3|}
zend_language_parser.c:zval_gc_flags:
  767|      6|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      6|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      6|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      6|}
zend_language_parser.c:zval_get_type:
  658|  3.19k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  3.19k|	return pz->u1.v.type;
  660|  3.19k|}
zend_language_scanner.c:zend_gc_delref:
 1357|  31.7k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  31.7k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  31.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 31.7k]
  |  Branch (1358:2): [True: 31.7k, False: 0]
  ------------------
 1359|  31.7k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  31.7k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 31.7k]
  |  |  ------------------
  ------------------
 1360|  31.7k|	return --(p->refcount);
 1361|  31.7k|}
zend_language_scanner.c:zval_gc_flags:
  767|  32.0k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  32.0k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  32.0k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  32.0k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  32.0k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  32.0k|}
zend_language_scanner.c:zend_gc_set_refcount:
 1333|   120k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|   120k|	p->refcount = rc;
 1335|   120k|	return p->refcount;
 1336|   120k|}
zend_language_scanner.c:zend_gc_addref:
 1338|  10.4k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  10.4k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  10.4k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 10.4k]
  |  |  ------------------
  ------------------
 1340|  10.4k|	return ++(p->refcount);
 1341|  10.4k|}
zend_language_scanner.c:zval_delref_p:
 1392|  17.7k|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|  17.7k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  17.7k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 17.7k]
  |  Branch (1393:2): [True: 17.7k, False: 0]
  ------------------
 1394|  17.7k|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|  17.7k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|  17.7k|}
zend_language_scanner.c:zend_gc_refcount:
 1329|  5.45k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  5.45k|	return p->refcount;
 1331|  5.45k|}
zend_language_scanner.c:zval_get_type:
  658|  44.5k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  44.5k|	return pz->u1.v.type;
  660|  44.5k|}
zend_lazy_objects.c:zend_gc_addref:
 1338|     12|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     12|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     12|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1340|     12|	return ++(p->refcount);
 1341|     12|}
zend_lazy_objects.c:zend_gc_delref:
 1357|      8|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      8|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 8]
  |  Branch (1358:2): [True: 8, False: 0]
  ------------------
 1359|      8|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      8|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1360|      8|	return --(p->refcount);
 1361|      8|}
zend_lazy_objects.c:zval_get_type:
  658|      4|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      4|	return pz->u1.v.type;
  660|      4|}
zend_list.c:zend_gc_set_refcount:
 1333|    720|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|    720|	p->refcount = rc;
 1335|    720|	return p->refcount;
 1336|    720|}
zend_list.c:zend_gc_delref:
 1357|     40|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|     40|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 40]
  |  Branch (1358:2): [True: 40, False: 0]
  ------------------
 1359|     40|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     40|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 40]
  |  |  ------------------
  ------------------
 1360|     40|	return --(p->refcount);
 1361|     40|}
zend_list.c:zend_gc_refcount:
 1329|     34|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|     34|	return p->refcount;
 1331|     34|}
zend_list.c:zval_get_type:
  658|   110k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   110k|	return pz->u1.v.type;
  660|   110k|}
zend_object_handlers.c:zval_get_type:
  658|   226k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   226k|	return pz->u1.v.type;
  660|   226k|}
zend_object_handlers.c:zval_refcount_p:
 1375|      9|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|      9|#if ZEND_DEBUG
 1377|      9|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 9, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 9, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|      9|#endif
 1379|      9|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|      9|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|      9|}
zend_object_handlers.c:zval_addref_p:
 1387|  27.3k|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|  27.3k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  27.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 27.3k]
  |  Branch (1388:2): [True: 27.3k, False: 0]
  ------------------
 1389|  27.3k|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|  27.3k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|  27.3k|}
zend_object_handlers.c:zval_delref_p:
 1392|      2|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      2|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 2]
  |  Branch (1393:2): [True: 2, False: 0]
  ------------------
 1394|      2|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      2|}
zend_object_handlers.c:zend_gc_addref:
 1338|  44.0k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  44.0k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  44.0k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 44.0k]
  |  |  ------------------
  ------------------
 1340|  44.0k|	return ++(p->refcount);
 1341|  44.0k|}
zend_object_handlers.c:zend_gc_delref:
 1357|  13.8k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  13.8k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  13.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 13.8k]
  |  Branch (1358:2): [True: 13.8k, False: 0]
  ------------------
 1359|  13.8k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  13.8k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 13.8k]
  |  |  ------------------
  ------------------
 1360|  13.8k|	return --(p->refcount);
 1361|  13.8k|}
zend_object_handlers.c:zend_gc_refcount:
 1329|    332|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|    332|	return p->refcount;
 1331|    332|}
zend_object_handlers.c:zval_gc_flags:
  767|  2.09k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  2.09k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  2.09k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  2.09k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  2.09k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  2.09k|}
zend_object_handlers.c:zend_gc_set_refcount:
 1333|  1.36k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  1.36k|	p->refcount = rc;
 1335|  1.36k|	return p->refcount;
 1336|  1.36k|}
zend_object_handlers.c:zend_gc_try_addref:
 1343|    265|static zend_always_inline void zend_gc_try_addref(zend_refcounted_h *p) {
 1344|    265|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|    265|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1344:6): [True: 265, False: 0]
  ------------------
 1345|    265|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    265|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 265]
  |  |  ------------------
  ------------------
 1346|    265|		++p->refcount;
 1347|    265|	}
 1348|    265|}
zend_objects_API.c:zval_gc_flags:
  767|  61.5k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  61.5k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  61.5k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  61.5k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  61.5k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  61.5k|}
zend_objects_API.c:zend_gc_addref:
 1338|  6.94k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  6.94k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  6.94k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 6.94k]
  |  |  ------------------
  ------------------
 1340|  6.94k|	return ++(p->refcount);
 1341|  6.94k|}
zend_objects_API.c:zend_gc_delref:
 1357|    640|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    640|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    640|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 640]
  |  Branch (1358:2): [True: 640, False: 0]
  ------------------
 1359|    640|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    640|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 640]
  |  |  ------------------
  ------------------
 1360|    640|	return --(p->refcount);
 1361|    640|}
zend_objects_API.c:zend_gc_refcount:
 1329|  47.7k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  47.7k|	return p->refcount;
 1331|  47.7k|}
zend_objects_API.c:zval_gc_type:
  763|  24.6k|static zend_always_inline uint8_t zval_gc_type(uint32_t gc_type_info) {
  764|  24.6k|	return (gc_type_info & GC_TYPE_MASK);
  ------------------
  |  |  757|  24.6k|#define GC_TYPE_MASK				0x0000000f
  ------------------
  765|  24.6k|}
zend_objects_API.c:zend_gc_set_refcount:
 1333|  24.9k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  24.9k|	p->refcount = rc;
 1335|  24.9k|	return p->refcount;
 1336|  24.9k|}
zend_objects_API.c:zval_get_type:
  658|      3|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|      3|	return pz->u1.v.type;
  660|      3|}
zend_objects.c:zend_gc_set_refcount:
 1333|  29.7k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  29.7k|	p->refcount = rc;
 1335|  29.7k|	return p->refcount;
 1336|  29.7k|}
zend_objects.c:zval_gc_flags:
  767|  34.8k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  34.8k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  34.8k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  34.8k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  34.8k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  34.8k|}
zend_objects.c:zend_gc_delref:
 1357|  64.1k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  64.1k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  64.1k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 64.1k]
  |  Branch (1358:2): [True: 64.1k, False: 0]
  ------------------
 1359|  64.1k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  64.1k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 64.1k]
  |  |  ------------------
  ------------------
 1360|  64.1k|	return --(p->refcount);
 1361|  64.1k|}
zend_objects.c:zval_gc_type:
  763|  5.09k|static zend_always_inline uint8_t zval_gc_type(uint32_t gc_type_info) {
  764|  5.09k|	return (gc_type_info & GC_TYPE_MASK);
  ------------------
  |  |  757|  5.09k|#define GC_TYPE_MASK				0x0000000f
  ------------------
  765|  5.09k|}
zend_objects.c:zval_get_type:
  658|  59.2k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  59.2k|	return pz->u1.v.type;
  660|  59.2k|}
zend_objects.c:zval_delref_p:
 1392|     10|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|     10|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 10]
  |  Branch (1393:2): [True: 10, False: 0]
  ------------------
 1394|     10|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|     10|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|     10|}
zend_objects.c:zend_gc_addref:
 1338|  1.70k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  1.70k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.70k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.70k]
  |  |  ------------------
  ------------------
 1340|  1.70k|	return ++(p->refcount);
 1341|  1.70k|}
zend_opcode.c:zval_gc_flags:
  767|  28.8k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  28.8k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  28.8k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  28.8k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  28.8k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  28.8k|}
zend_opcode.c:zend_gc_addref:
 1338|  6.59k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  6.59k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  6.59k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 6.59k]
  |  |  ------------------
  ------------------
 1340|  6.59k|	return ++(p->refcount);
 1341|  6.59k|}
zend_opcode.c:zend_gc_delref:
 1357|  21.5k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  21.5k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  21.5k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 21.5k]
  |  Branch (1358:2): [True: 21.5k, False: 0]
  ------------------
 1359|  21.5k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  21.5k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 21.5k]
  |  |  ------------------
  ------------------
 1360|  21.5k|	return --(p->refcount);
 1361|  21.5k|}
zend_opcode.c:zval_get_type:
  658|  1.41k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  1.41k|	return pz->u1.v.type;
  660|  1.41k|}
zend_opcode.c:zval_delref_p:
 1392|  9.17k|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|  9.17k|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|  9.17k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 9.17k]
  |  Branch (1393:2): [True: 9.17k, False: 0]
  ------------------
 1394|  9.17k|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|  9.17k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|  9.17k|}
zend_operators.c:zval_get_type:
  658|   297k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|   297k|	return pz->u1.v.type;
  660|   297k|}
zend_operators.c:zval_refcount_p:
 1375|    311|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|    311|#if ZEND_DEBUG
 1377|    311|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|    311|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 311, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 311, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|    311|#endif
 1379|    311|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|    311|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|    311|}
zend_operators.c:zend_gc_refcount:
 1329|  4.67k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  4.67k|	return p->refcount;
 1331|  4.67k|}
zend_operators.c:zval_delref_p:
 1392|     40|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|     40|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 40]
  |  Branch (1393:2): [True: 40, False: 0]
  ------------------
 1394|     40|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|     40|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|     40|}
zend_operators.c:zval_gc_flags:
  767|  49.3k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  49.3k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  49.3k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  49.3k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  49.3k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  49.3k|}
zend_operators.c:zend_gc_delref:
 1357|  6.27k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  6.27k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  6.27k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 6.27k]
  |  Branch (1358:2): [True: 6.27k, False: 0]
  ------------------
 1359|  6.27k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  6.27k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 6.27k]
  |  |  ------------------
  ------------------
 1360|  6.27k|	return --(p->refcount);
 1361|  6.27k|}
zend_operators.c:zend_gc_try_delref:
 1350|      5|static zend_always_inline void zend_gc_try_delref(zend_refcounted_h *p) {
 1351|      5|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      5|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1351:6): [True: 2, False: 3]
  ------------------
 1352|      2|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1353|      2|		--p->refcount;
 1354|      2|	}
 1355|      5|}
zend_operators.c:zend_gc_set_refcount:
 1333|  19.6k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  19.6k|	p->refcount = rc;
 1335|  19.6k|	return p->refcount;
 1336|  19.6k|}
zend_operators.c:zend_gc_addref:
 1338|  14.6k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  14.6k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  14.6k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 14.6k]
  |  |  ------------------
  ------------------
 1340|  14.6k|	return ++(p->refcount);
 1341|  14.6k|}
zend_operators.c:zend_gc_try_addref:
 1343|     18|static zend_always_inline void zend_gc_try_addref(zend_refcounted_h *p) {
 1344|     18|	if (!(p->u.type_info & GC_IMMUTABLE)) {
  ------------------
  |  |  801|     18|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (1344:6): [True: 15, False: 3]
  ------------------
 1345|     15|		ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     15|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 15]
  |  |  ------------------
  ------------------
 1346|     15|		++p->refcount;
 1347|     15|	}
 1348|     18|}
zend_property_hooks.c:zval_get_type:
  658|     42|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     42|	return pz->u1.v.type;
  660|     42|}
zend_property_hooks.c:zend_gc_delref:
 1357|      1|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|      1|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 1]
  |  Branch (1358:2): [True: 1, False: 0]
  ------------------
 1359|      1|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      1|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1360|      1|	return --(p->refcount);
 1361|      1|}
zend_property_hooks.c:zval_gc_flags:
  767|      3|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|      3|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|      3|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  ------------------
  769|      3|}
zend_property_hooks.c:zval_addref_p:
 1387|      1|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 1]
  |  Branch (1388:2): [True: 1, False: 0]
  ------------------
 1389|      1|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|      1|}
zend_property_hooks.c:zend_gc_addref:
 1338|      7|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|      7|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|      7|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1340|      7|	return ++(p->refcount);
 1341|      7|}
zend_property_hooks.c:zval_delref_p:
 1392|      1|static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 1393|      1|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1393:2): [True: 0, False: 1]
  |  Branch (1393:2): [True: 1, False: 0]
  ------------------
 1394|      1|	return GC_DELREF(Z_COUNTED_P(pz));
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 1395|      1|}
zend_smart_str.c:zend_gc_set_refcount:
 1333|  63.2k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  63.2k|	p->refcount = rc;
 1335|  63.2k|	return p->refcount;
 1336|  63.2k|}
zend_smart_str.c:zval_get_type:
  658|  3.75k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  3.75k|	return pz->u1.v.type;
  660|  3.75k|}
zend_stream.c:zend_gc_set_refcount:
 1333|  33.5k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  33.5k|	p->refcount = rc;
 1335|  33.5k|	return p->refcount;
 1336|  33.5k|}
zend_stream.c:zval_gc_flags:
  767|  64.2k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  64.2k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  64.2k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  64.2k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  64.2k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  64.2k|}
zend_stream.c:zend_gc_addref:
 1338|  1.38k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  1.38k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.38k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.38k]
  |  |  ------------------
  ------------------
 1340|  1.38k|	return ++(p->refcount);
 1341|  1.38k|}
zend_stream.c:zend_gc_delref:
 1357|  34.3k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  34.3k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  34.3k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 34.3k]
  |  Branch (1358:2): [True: 34.3k, False: 0]
  ------------------
 1359|  34.3k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  34.3k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 34.3k]
  |  |  ------------------
  ------------------
 1360|  34.3k|	return --(p->refcount);
 1361|  34.3k|}
zend_string.c:zval_gc_flags:
  767|  6.39k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|  6.39k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  6.39k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|  6.39k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|  6.39k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|  6.39k|}
zend_string.c:zend_gc_delref:
 1357|    604|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|    604|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|    604|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 604]
  |  Branch (1358:2): [True: 604, False: 0]
  ------------------
 1359|    604|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|    604|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 604]
  |  |  ------------------
  ------------------
 1360|    604|	return --(p->refcount);
 1361|    604|}
zend_string.c:zend_gc_refcount:
 1329|  1.11k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  1.11k|	return p->refcount;
 1331|  1.11k|}
zend_string.c:zend_gc_set_refcount:
 1333|  15.2k|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|  15.2k|	p->refcount = rc;
 1335|  15.2k|	return p->refcount;
 1336|  15.2k|}
zend_variables.c:zval_gc_type:
  763|   693k|static zend_always_inline uint8_t zval_gc_type(uint32_t gc_type_info) {
  764|   693k|	return (gc_type_info & GC_TYPE_MASK);
  ------------------
  |  |  757|   693k|#define GC_TYPE_MASK				0x0000000f
  ------------------
  765|   693k|}
zend_variables.c:zend_gc_refcount:
 1329|   154k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|   154k|	return p->refcount;
 1331|   154k|}
zend_variables.c:zend_gc_delref:
 1357|   314k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|   314k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|   314k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 314k]
  |  Branch (1358:2): [True: 314k, False: 0]
  ------------------
 1359|   314k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|   314k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 314k]
  |  |  ------------------
  ------------------
 1360|   314k|	return --(p->refcount);
 1361|   314k|}
zend_variables.c:zval_get_type:
  658|     60|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|     60|	return pz->u1.v.type;
  660|     60|}
zend_variables.c:zval_gc_flags:
  767|   309k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   309k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   309k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   309k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   309k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   309k|}
zend_variables.c:zval_refcount_p:
 1375|      2|static zend_always_inline uint32_t zval_refcount_p(const zval* pz) {
 1376|      2|#if ZEND_DEBUG
 1377|      2|	ZEND_ASSERT(Z_REFCOUNTED_P(pz) || Z_TYPE_P(pz) == IS_ARRAY);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1377:2): [True: 2, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  |  Branch (1377:2): [True: 2, False: 0]
  |  Branch (1377:2): [True: 0, False: 0]
  ------------------
 1378|      2|#endif
 1379|      2|	return GC_REFCOUNT(Z_COUNTED_P(pz));
  ------------------
  |  |  716|      2|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1380|      2|}
zend_variables.c:zend_gc_addref:
 1338|     22|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     22|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     22|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1340|     22|	return ++(p->refcount);
 1341|     22|}
zend_variables.c:zval_addref_p:
 1387|     21|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|     21|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 21]
  |  Branch (1388:2): [True: 21, False: 0]
  ------------------
 1389|     21|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|     21|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|     21|}
zend_variables.c:zend_gc_set_refcount:
 1333|     19|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|     19|	p->refcount = rc;
 1335|     19|	return p->refcount;
 1336|     19|}
zend_weakrefs.c:zend_gc_addref:
 1338|     17|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|     17|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|     17|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 17]
  |  |  ------------------
  ------------------
 1340|     17|	return ++(p->refcount);
 1341|     17|}
zend_weakrefs.c:zval_get_type:
  658|    105|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|    105|	return pz->u1.v.type;
  660|    105|}
zend_weakrefs.c:zend_gc_set_refcount:
 1333|      2|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|      2|	p->refcount = rc;
 1335|      2|	return p->refcount;
 1336|      2|}
zend_weakrefs.c:zval_addref_p:
 1387|     12|static zend_always_inline uint32_t zval_addref_p(zval* pz) {
 1388|     12|	ZEND_ASSERT(Z_REFCOUNTED_P(pz));
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1388:2): [True: 0, False: 12]
  |  Branch (1388:2): [True: 12, False: 0]
  ------------------
 1389|     12|	return GC_ADDREF(Z_COUNTED_P(pz));
  ------------------
  |  |  718|     12|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1390|     12|}
zend.c:zend_gc_refcount:
 1329|  61.3k|static zend_always_inline uint32_t zend_gc_refcount(const zend_refcounted_h *p) {
 1330|  61.3k|	return p->refcount;
 1331|  61.3k|}
zend.c:zend_gc_delref:
 1357|  51.6k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  51.6k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  51.6k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 51.6k]
  |  Branch (1358:2): [True: 51.6k, False: 0]
  ------------------
 1359|  51.6k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  51.6k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 51.6k]
  |  |  ------------------
  ------------------
 1360|  51.6k|	return --(p->refcount);
 1361|  51.6k|}
zend.c:zval_get_type:
  658|  53.1k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  53.1k|	return pz->u1.v.type;
  660|  53.1k|}
zend.c:zval_gc_flags:
  767|   121k|static zend_always_inline uint32_t zval_gc_flags(uint32_t gc_type_info) {
  768|   121k|	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   121k|#define GC_FLAGS_SHIFT				0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  758|   121k|#define GC_FLAGS_MASK				0x000003f0
  ------------------
              	return (gc_type_info >> GC_FLAGS_SHIFT) & (GC_FLAGS_MASK >> GC_FLAGS_SHIFT);
  ------------------
  |  |  760|   121k|#define GC_FLAGS_SHIFT				0
  ------------------
  769|   121k|}
zend.c:zend_gc_addref:
 1338|  1.49k|static zend_always_inline uint32_t zend_gc_addref(zend_refcounted_h *p) {
 1339|  1.49k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  1.49k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 1.49k]
  |  |  ------------------
  ------------------
 1340|  1.49k|	return ++(p->refcount);
 1341|  1.49k|}
zend.c:zend_gc_set_refcount:
 1333|    348|static zend_always_inline uint32_t zend_gc_set_refcount(zend_refcounted_h *p, uint32_t rc) {
 1334|    348|	p->refcount = rc;
 1335|    348|	return p->refcount;
 1336|    348|}
fuzzer-execute.c:zval_get_type:
  658|  21.8k|static zend_always_inline uint8_t zval_get_type(const zval* pz) {
  659|  21.8k|	return pz->u1.v.type;
  660|  21.8k|}
fuzzer-sapi.c:zend_gc_delref:
 1357|  3.71k|static zend_always_inline uint32_t zend_gc_delref(zend_refcounted_h *p) {
 1358|  3.71k|	ZEND_ASSERT(p->refcount > 0);
  ------------------
  |  |  112|  3.71k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1358:2): [True: 0, False: 3.71k]
  |  Branch (1358:2): [True: 3.71k, False: 0]
  ------------------
 1359|  3.71k|	ZEND_RC_MOD_CHECK(p);
  ------------------
  |  | 1324|  3.71k|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1324:16): [Folded, False: 3.71k]
  |  |  ------------------
  ------------------
 1360|  3.71k|	return --(p->refcount);
 1361|  3.71k|}

rc_dtor_func:
   54|   346k|{
   55|   346k|	ZEND_ASSERT(GC_TYPE(p) <= IS_CONSTANT_AST);
  ------------------
  |  |  112|   346k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (55:2): [True: 0, False: 346k]
  |  Branch (55:2): [True: 346k, False: 0]
  ------------------
   56|   346k|	zend_rc_dtor_func[GC_TYPE(p)](p);
  ------------------
  |  |  776|   346k|#define GC_TYPE(p)					zval_gc_type(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|   346k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
   57|   346k|}
zval_ptr_dtor:
   82|  2.67M|{
   83|  2.67M|	i_zval_ptr_dtor(zval_ptr);
   84|  2.67M|}
zval_ptr_safe_dtor:
   88|  56.9k|{
   89|  56.9k|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  56.9k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  56.9k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  56.9k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 2, False: 56.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|      2|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   91|       |
   92|      2|		if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (92:7): [True: 1, False: 1]
  ------------------
   93|      1|			ZVAL_NULL(zval_ptr);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
   94|      1|			rc_dtor_func(ref);
   95|      1|		} else {
   96|      1|			gc_check_possible_root(ref);
   97|      1|		}
   98|      2|	}
   99|  56.9k|}
zval_add_ref:
  127|     31|{
  128|     31|	if (Z_REFCOUNTED_P(p)) {
  ------------------
  |  |  942|     31|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     31|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     31|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 22, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|     22|		if (Z_ISREF_P(p) && Z_REFCOUNT_P(p) == 1) {
  ------------------
  |  |  964|     22|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     44|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     22|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     22|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(p) && Z_REFCOUNT_P(p) == 1) {
  ------------------
  |  | 1275|      2|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (129:23): [True: 1, False: 1]
  ------------------
  130|      1|			ZVAL_COPY(p, Z_REFVAL_P(p));
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  131|     21|		} else {
  132|     21|			Z_ADDREF_P(p);
  ------------------
  |  | 1277|     21|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  133|     21|		}
  134|     22|	}
  135|     31|}
zval_copy_ctor_func:
  138|     19|{
  139|     19|	if (EXPECTED(Z_TYPE_P(zvalue) == IS_ARRAY)) {
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  140|      0|		ZVAL_ARR(zvalue, zend_array_dup(Z_ARRVAL_P(zvalue)));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  141|     19|	} else if (EXPECTED(Z_TYPE_P(zvalue) == IS_STRING)) {
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 0]
  |  |  ------------------
  ------------------
  142|     19|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zvalue)));
  ------------------
  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (142:3): [True: 0, False: 19]
  |  Branch (142:3): [True: 19, False: 0]
  ------------------
  143|     19|		CHECK_ZVAL_STRING(Z_STR_P(zvalue));
  ------------------
  |  |  949|     19|	ZEND_ASSERT(ZSTR_VAL(str)[ZSTR_LEN(str)] == '\0' && "String is not null-terminated");
  |  |  ------------------
  |  |  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (143:3): [True: 0, False: 19]
  |  Branch (143:3): [True: 0, False: 0]
  |  Branch (143:3): [True: 19, False: 0]
  |  Branch (143:3): [True: 19, False: 0]
  ------------------
  144|     19|		ZVAL_NEW_STR(zvalue, zend_string_dup(Z_STR_P(zvalue), 0));
  ------------------
  |  | 1105|     19|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     19|		zval *__z = (z);						\
  |  | 1107|     19|		zend_string *__s = (s);					\
  |  | 1108|     19|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     19|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     19|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     19|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     19|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     19|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
  145|     19|	} else {
  146|       |		ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (146:3): [Folded, False: 0]
  |  Branch (146:3): [Folded, False: 0]
  ------------------
  147|      0|	}
  148|     19|}
zend_variables.c:zend_empty_destroy:
   78|     42|{
   79|     42|}
zend_variables.c:zend_string_destroy:
   61|   154k|{
   62|   154k|	CHECK_ZVAL_STRING(str);
  ------------------
  |  |  949|   154k|	ZEND_ASSERT(ZSTR_VAL(str)[ZSTR_LEN(str)] == '\0' && "String is not null-terminated");
  |  |  ------------------
  |  |  |  |  112|   154k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (62:2): [True: 0, False: 154k]
  |  Branch (62:2): [True: 0, False: 0]
  |  Branch (62:2): [True: 154k, False: 0]
  |  Branch (62:2): [True: 154k, False: 0]
  ------------------
   63|   154k|	ZEND_ASSERT(!ZSTR_IS_INTERNED(str));
  ------------------
  |  |  112|   154k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (63:2): [True: 0, False: 154k]
  |  Branch (63:2): [True: 154k, False: 0]
  ------------------
   64|   154k|	ZEND_ASSERT(GC_REFCOUNT(str) == 0);
  ------------------
  |  |  112|   154k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (64:2): [True: 0, False: 154k]
  |  Branch (64:2): [True: 154k, False: 0]
  ------------------
   65|   154k|	ZEND_ASSERT(!(GC_FLAGS(str) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|   154k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (65:2): [True: 0, False: 154k]
  |  Branch (65:2): [True: 154k, False: 0]
  ------------------
   66|   154k|	efree(str);
  ------------------
  |  |  154|   154k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|   154k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|   154k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|   154k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|   154k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|   154k|}
zend_variables.c:zend_reference_destroy:
   71|  1.90k|{
   72|  1.90k|	ZEND_ASSERT(!ZEND_REF_HAS_TYPE_SOURCES(ref));
  ------------------
  |  |  112|  1.90k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:2): [True: 0, False: 1.90k]
  |  Branch (72:2): [True: 1.90k, False: 0]
  ------------------
   73|  1.90k|	i_zval_ptr_dtor(&ref->val);
   74|       |	efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|  1.90k|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|  1.90k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.90k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.90k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  1.90k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  1.90k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|  1.90k|}

json_encoder.c:zval_ptr_dtor_nogc:
   33|      2|{
   34|      2|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      2|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 0, False: 2]
  ------------------
   35|      0|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|      0|	}
   37|      2|}
array.c:zval_ptr_dtor_str:
   70|     32|{
   71|     32|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     32|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     64|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     32|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 1, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      1|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 0, False: 1]
  ------------------
   72|      0|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 0]
  |  Branch (72:3): [True: 0, False: 0]
  ------------------
   73|      0|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 0]
  |  Branch (73:3): [True: 0, False: 0]
  ------------------
   74|      0|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 0]
  |  Branch (74:3): [True: 0, False: 0]
  ------------------
   75|      0|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      0|	}
   77|     32|}
basic_functions.c:zval_ptr_dtor_str:
   70|     25|{
   71|     25|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     25|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     50|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     25|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 0, False: 0]
  ------------------
   72|      0|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 0]
  |  Branch (72:3): [True: 0, False: 0]
  ------------------
   73|      0|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 0]
  |  Branch (73:3): [True: 0, False: 0]
  ------------------
   74|      0|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 0]
  |  Branch (74:3): [True: 0, False: 0]
  ------------------
   75|      0|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      0|	}
   77|     25|}
var_unserializer.c:i_zval_ptr_dtor:
   40|      5|{
   41|      5|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|      5|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      5|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      5|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|      5|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|      5|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|      5|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 4, False: 1]
  ------------------
   44|      4|			rc_dtor_func(ref);
   45|      4|		} else {
   46|      1|			gc_check_possible_root(ref);
   47|      1|		}
   48|      5|	}
   49|      5|}
var_unserializer.c:zval_ptr_dtor_str:
   70|     21|{
   71|     21|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     21|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     42|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     21|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 3, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      3|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 0, False: 3]
  ------------------
   72|      0|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 0]
  |  Branch (72:3): [True: 0, False: 0]
  ------------------
   73|      0|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 0]
  |  Branch (73:3): [True: 0, False: 0]
  ------------------
   74|      0|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 0]
  |  Branch (74:3): [True: 0, False: 0]
  ------------------
   75|      0|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      0|	}
   77|     21|}
php_variables.c:zval_ptr_dtor_nogc:
   33|   134k|{
   34|   134k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|   134k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|   268k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|   134k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 33.5k, False: 100k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|  33.5k|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 33.5k, False: 0]
  ------------------
   35|  33.5k|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|  33.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  33.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|  33.5k|	}
   37|   134k|}
zend_ast.c:zval_ptr_dtor_nogc:
   33|  41.6k|{
   34|  41.6k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|  41.6k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  83.3k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  41.6k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 24.4k, False: 17.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|  24.4k|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 13.5k, False: 10.9k]
  ------------------
   35|  13.5k|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|  13.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  13.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|  13.5k|	}
   37|  41.6k|}
zend_compile.c:zval_ptr_dtor_str:
   70|     43|{
   71|     43|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     43|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     86|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     43|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 34, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|     34|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 0, False: 34]
  ------------------
   72|      0|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 0]
  |  Branch (72:3): [True: 0, False: 0]
  ------------------
   73|      0|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 0]
  |  Branch (73:3): [True: 0, False: 0]
  ------------------
   74|      0|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 0]
  |  Branch (74:3): [True: 0, False: 0]
  ------------------
   75|      0|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      0|	}
   77|     43|}
zend_compile.c:zval_ptr_dtor_nogc:
   33|  1.04k|{
   34|  1.04k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|  1.04k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  2.08k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  1.04k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 47, False: 996]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|     47|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 7, False: 40]
  ------------------
   35|      7|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|      7|	}
   37|  1.04k|}
zend_constants.c:zval_ptr_dtor_nogc:
   33|     10|{
   34|     10|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     10|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     20|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     10|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 4, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      4|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 0, False: 4]
  ------------------
   35|      0|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|      0|	}
   37|     10|}
zend_execute_API.c:zval_ptr_dtor_nogc:
   33|    667|{
   34|    667|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|    667|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  1.33k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    667|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 438, False: 229]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|    438|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 308, False: 130]
  ------------------
   35|    308|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|    308|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    308|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|    308|	}
   37|    667|}
zend_execute_API.c:i_zval_ptr_dtor:
   40|  5.24k|{
   41|  5.24k|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  5.24k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  5.24k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  5.24k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 3.86k, False: 1.38k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|  3.86k|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|  3.86k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  3.86k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|  3.86k|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|  3.86k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 3.73k, False: 129]
  ------------------
   44|  3.73k|			rc_dtor_func(ref);
   45|  3.73k|		} else {
   46|    129|			gc_check_possible_root(ref);
   47|    129|		}
   48|  3.86k|	}
   49|  5.24k|}
zend_execute.c:zval_ptr_dtor_nogc:
   33|  75.1k|{
   34|  75.1k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|  75.1k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|   150k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  75.1k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 29.3k, False: 45.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|  29.3k|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 6.39k, False: 22.9k]
  ------------------
   35|  6.39k|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|  6.39k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  6.39k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|  6.39k|	}
   37|  75.1k|}
zend_execute.c:i_zval_ptr_dtor:
   40|  37.4k|{
   41|  37.4k|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  37.4k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  37.4k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  37.4k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 6.43k, False: 31.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|  6.43k|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|  6.43k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  6.43k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|  6.43k|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|  6.43k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 3.28k, False: 3.14k]
  ------------------
   44|  3.28k|			rc_dtor_func(ref);
   45|  3.28k|		} else {
   46|  3.14k|			gc_check_possible_root(ref);
   47|  3.14k|		}
   48|  6.43k|	}
   49|  37.4k|}
zend_execute.c:zval_ptr_dtor_str:
   70|      8|{
   71|      8|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     16|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 7, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      7|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 6, False: 1]
  ------------------
   72|      6|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 6]
  |  Branch (72:3): [True: 6, False: 0]
  ------------------
   73|      6|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 6]
  |  Branch (73:3): [True: 6, False: 0]
  ------------------
   74|      6|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 6]
  |  Branch (74:3): [True: 6, False: 0]
  ------------------
   75|      6|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      6|	}
   77|      8|}
zend_generators.c:i_zval_ptr_dtor:
   40|      4|{
   41|      4|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|      4|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      4|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|      4|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|      4|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|      4|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 4, False: 0]
  ------------------
   44|      4|			rc_dtor_func(ref);
   45|      4|		} else {
   46|      0|			gc_check_possible_root(ref);
   47|      0|		}
   48|      4|	}
   49|      4|}
zend_hash.c:i_zval_ptr_dtor:
   40|  2.37M|{
   41|  2.37M|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  2.37M|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  2.37M|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  2.37M|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 57.7k, False: 2.31M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|  57.7k|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|  57.7k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  57.7k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|  57.7k|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|  57.7k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 33.4k, False: 24.3k]
  ------------------
   44|  33.4k|			rc_dtor_func(ref);
   45|  33.4k|		} else {
   46|  24.3k|			gc_check_possible_root(ref);
   47|  24.3k|		}
   48|  57.7k|	}
   49|  2.37M|}
zend_highlight.c:zval_ptr_dtor_str:
   70|  82.2k|{
   71|  82.2k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|  82.2k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|   164k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  82.2k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 65.8k, False: 16.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|  65.8k|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 65.8k, False: 0]
  ------------------
   72|  65.8k|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|  65.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 65.8k]
  |  Branch (72:3): [True: 65.8k, False: 0]
  ------------------
   73|  65.8k|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|  65.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 65.8k]
  |  Branch (73:3): [True: 65.8k, False: 0]
  ------------------
   74|  65.8k|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|  65.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 65.8k]
  |  Branch (74:3): [True: 65.8k, False: 0]
  ------------------
   75|  65.8k|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|  65.8k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  65.8k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  65.8k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  65.8k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  65.8k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|  65.8k|	}
   77|  82.2k|}
zend_inheritance.c:zval_ptr_dtor_nogc:
   33|     51|{
   34|     51|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     51|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|    102|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     51|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 1, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      1|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 0, False: 1]
  ------------------
   35|      0|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|      0|	}
   37|     51|}
zend_language_scanner.c:zval_ptr_dtor_str:
   70|     23|{
   71|     23|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     23|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     46|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     23|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 23, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|     23|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 23, False: 0]
  ------------------
   72|     23|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 23]
  |  Branch (72:3): [True: 23, False: 0]
  ------------------
   73|     23|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 23]
  |  Branch (73:3): [True: 23, False: 0]
  ------------------
   74|     23|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 23]
  |  Branch (74:3): [True: 23, False: 0]
  ------------------
   75|     23|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|     23|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     23|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     23|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     23|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     23|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|     23|	}
   77|     23|}
zend_language_scanner.c:zval_ptr_dtor_nogc:
   33|   123k|{
   34|   123k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|   123k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|   247k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|   123k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 17.7k, False: 106k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|  17.7k|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 17.7k, False: 0]
  ------------------
   35|  17.7k|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|  17.7k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  17.7k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|  17.7k|	}
   37|   123k|}
zend_lazy_objects.c:i_zval_ptr_dtor:
   40|      2|{
   41|      2|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|      0|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|      0|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 0, False: 0]
  ------------------
   44|      0|			rc_dtor_func(ref);
   45|      0|		} else {
   46|      0|			gc_check_possible_root(ref);
   47|      0|		}
   48|      0|	}
   49|      2|}
zend_object_handlers.c:zval_ptr_dtor_str:
   70|      2|{
   71|      2|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 0, False: 0]
  ------------------
   72|      0|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 0]
  |  Branch (72:3): [True: 0, False: 0]
  ------------------
   73|      0|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 0]
  |  Branch (73:3): [True: 0, False: 0]
  ------------------
   74|      0|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 0]
  |  Branch (74:3): [True: 0, False: 0]
  ------------------
   75|      0|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      0|	}
   77|      2|}
zend_objects.c:i_zval_ptr_dtor:
   40|  58.8k|{
   41|  58.8k|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  58.8k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  58.8k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  58.8k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 58.8k, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|  58.8k|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|  58.8k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  58.8k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|  58.8k|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|  58.8k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 48.2k, False: 10.5k]
  ------------------
   44|  48.2k|			rc_dtor_func(ref);
   45|  48.2k|		} else {
   46|  10.5k|			gc_check_possible_root(ref);
   47|  10.5k|		}
   48|  58.8k|	}
   49|  58.8k|}
zend_objects.c:zval_ptr_dtor_str:
   70|     21|{
   71|     21|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     21|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     42|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     21|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 10, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|     10|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 7, False: 3]
  ------------------
   72|      7|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 7]
  |  Branch (72:3): [True: 7, False: 0]
  ------------------
   73|      7|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 7]
  |  Branch (73:3): [True: 7, False: 0]
  ------------------
   74|      7|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 7]
  |  Branch (74:3): [True: 7, False: 0]
  ------------------
   75|      7|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      7|	}
   77|     21|}
zend_opcode.c:i_zval_ptr_dtor:
   40|    787|{
   41|    787|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|    787|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|    787|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|    787|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 29, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|     29|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|     29|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     29|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|     29|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|     29|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 24, False: 5]
  ------------------
   44|     24|			rc_dtor_func(ref);
   45|     24|		} else {
   46|      5|			gc_check_possible_root(ref);
   47|      5|		}
   48|     29|	}
   49|    787|}
zend_opcode.c:zval_ptr_dtor_nogc:
   33|  28.3k|{
   34|  28.3k|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|  28.3k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  56.7k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  28.3k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 9.17k, False: 19.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|  9.17k|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 7.27k, False: 1.89k]
  ------------------
   35|  7.27k|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|  7.27k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  7.27k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|  7.27k|	}
   37|  28.3k|}
zend_operators.c:zval_ptr_dtor_str:
   70|     43|{
   71|     43|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     43|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     86|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     43|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 40, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|     40|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (71:34): [True: 25, False: 15]
  ------------------
   72|     25|		ZEND_ASSERT(Z_TYPE_P(zval_ptr) == IS_STRING);
  ------------------
  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (72:3): [True: 0, False: 25]
  |  Branch (72:3): [True: 25, False: 0]
  ------------------
   73|     25|		ZEND_ASSERT(!ZSTR_IS_INTERNED(Z_STR_P(zval_ptr)));
  ------------------
  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (73:3): [True: 0, False: 25]
  |  Branch (73:3): [True: 25, False: 0]
  ------------------
   74|     25|		ZEND_ASSERT(!(GC_FLAGS(Z_STR_P(zval_ptr)) & IS_STR_PERSISTENT));
  ------------------
  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (74:3): [True: 0, False: 25]
  |  Branch (74:3): [True: 25, False: 0]
  ------------------
   75|     25|		efree(Z_STR_P(zval_ptr));
  ------------------
  |  |  154|     25|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|     25|	}
   77|     43|}
zend_operators.c:i_zval_ptr_dtor:
   40|  3.92k|{
   41|  3.92k|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  3.92k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  3.92k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  3.92k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 2.28k, False: 1.63k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|  2.28k|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|  2.28k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|  2.28k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|  2.28k|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|  2.28k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 22, False: 2.26k]
  ------------------
   44|     22|			rc_dtor_func(ref);
   45|  2.26k|		} else {
   46|  2.26k|			gc_check_possible_root(ref);
   47|  2.26k|		}
   48|  2.28k|	}
   49|  3.92k|}
zend_property_hooks.c:zval_ptr_dtor_nogc:
   33|     16|{
   34|     16|	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  |  942|     16|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     32|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     16|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 1, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(zval_ptr) && !Z_DELREF_P(zval_ptr)) {
  ------------------
  |  | 1278|      1|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (34:34): [True: 0, False: 1]
  ------------------
   35|      0|		rc_dtor_func(Z_COUNTED_P(zval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   36|      0|	}
   37|     16|}
zend_variables.c:i_zval_ptr_dtor:
   40|  2.67M|{
   41|  2.67M|	if (Z_REFCOUNTED_P(zval_ptr)) {
  ------------------
  |  |  942|  2.67M|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|  2.67M|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|  2.67M|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 314k, False: 2.36M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|   314k|		zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
  ------------------
  |  |  708|   314k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|   314k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
   43|   314k|		if (!GC_DELREF(ref)) {
  ------------------
  |  |  719|   314k|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43:7): [True: 173k, False: 140k]
  ------------------
   44|   173k|			rc_dtor_func(ref);
   45|   173k|		} else {
   46|   140k|			gc_check_possible_root(ref);
   47|   140k|		}
   48|   314k|	}
   49|  2.67M|}

virtual_cwd_main_cwd_init:
  174|      2|{
  175|      2|	char cwd[MAXPATHLEN];
  176|      2|	char *result;
  177|       |
  178|      2|	if (reinit) {
  ------------------
  |  Branch (178:6): [True: 0, False: 2]
  ------------------
  179|      0|		free(main_cwd_state.cwd);
  180|      0|	}
  181|       |
  182|       |#ifdef ZEND_WIN32
  183|       |	ZeroMemory(&cwd, sizeof(cwd));
  184|       |	result = php_win32_ioutil_getcwd(cwd, sizeof(cwd));
  185|       |#else
  186|      2|	result = getcwd(cwd, sizeof(cwd));
  187|      2|#endif
  188|       |
  189|      2|	if (!result) {
  ------------------
  |  Branch (189:6): [True: 0, False: 2]
  ------------------
  190|      0|		cwd[0] = '\0';
  191|      0|	}
  192|       |
  193|      2|	main_cwd_state.cwd_length = strlen(cwd);
  194|       |#ifdef ZEND_WIN32
  195|       |	if (main_cwd_state.cwd_length >= 2 && cwd[1] == ':') {
  196|       |		cwd[0] = toupper((unsigned char)cwd[0]);
  197|       |	}
  198|       |#endif
  199|      2|	main_cwd_state.cwd = strdup(cwd);
  200|      2|}
virtual_cwd_startup:
  204|      2|{
  205|      2|	virtual_cwd_main_cwd_init(0);
  206|       |#ifdef ZTS
  207|       |	ts_allocate_fast_id(&cwd_globals_id, &cwd_globals_offset, sizeof(virtual_cwd_globals), (ts_allocate_ctor) cwd_globals_ctor, (ts_allocate_dtor) cwd_globals_dtor);
  208|       |#else
  209|      2|	cwd_globals_ctor(&cwd_globals);
  210|      2|#endif
  211|       |
  212|       |#if (defined(ZEND_WIN32)) && defined(ZTS)
  213|       |	cwd_mutex = tsrm_mutex_alloc();
  214|       |#endif
  215|      2|}
virtual_cwd_activate:
  232|      2|{
  233|      2|	if (CWDG(cwd).cwd == NULL) {
  ------------------
  |  |  250|      2|# define CWDG(v) (cwd_globals.v)
  ------------------
  |  Branch (233:6): [True: 2, False: 0]
  ------------------
  234|       |		CWD_STATE_COPY(&CWDG(cwd), &main_cwd_state);
  ------------------
  |  |  101|      2|	(d)->cwd_length = (s)->cwd_length;		\
  |  |  102|      2|	(d)->cwd = (char *) emalloc((s)->cwd_length+1);	\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      2|	memcpy((d)->cwd, (s)->cwd, (s)->cwd_length+1);
  ------------------
  235|      2|	}
  236|      2|}
virtual_cwd_deactivate:
  240|  33.5k|{
  241|  33.5k|	if (CWDG(cwd).cwd != NULL) {
  ------------------
  |  |  250|  33.5k|# define CWDG(v) (cwd_globals.v)
  ------------------
  |  Branch (241:6): [True: 3, False: 33.5k]
  ------------------
  242|      3|		CWD_STATE_FREE(&CWDG(cwd));
  ------------------
  |  |  106|      3|	efree((s)->cwd); \
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      3|	(s)->cwd_length = 0;
  ------------------
  243|      3|		CWDG(cwd).cwd = NULL;
  ------------------
  |  |  250|      3|# define CWDG(v) (cwd_globals.v)
  ------------------
  244|      3|	}
  245|  33.5k|}
virtual_file_ex:
 1007|    395|{
 1008|    395|	size_t path_length = strlen(path);
 1009|    395|	char resolved_path[MAXPATHLEN];
 1010|    395|	size_t start = 1;
 1011|    395|	int ll = 0;
 1012|    395|	time_t t;
 1013|    395|	int ret;
 1014|    395|	bool add_slash;
 1015|    395|	void *tmp;
 1016|       |
 1017|    395|	if (!path_length || path_length >= MAXPATHLEN-1) {
  ------------------
  |  Branch (1017:6): [True: 0, False: 395]
  |  Branch (1017:22): [True: 0, False: 395]
  ------------------
 1018|       |#ifdef ZEND_WIN32
 1019|       |		SET_ERRNO_FROM_WIN32_CODE(ERROR_INVALID_PARAMETER);
 1020|       |#else
 1021|      0|		errno = EINVAL;
 1022|      0|#endif
 1023|      0|		return 1;
 1024|      0|	}
 1025|       |
 1026|       |#if VIRTUAL_CWD_DEBUG
 1027|       |	fprintf(stderr,"cwd = %s path = %s\n", state->cwd, path);
 1028|       |#endif
 1029|       |
 1030|       |	/* cwd_length can be 0 when getcwd() fails.
 1031|       |	 * This can happen under solaris when a dir does not have read permissions
 1032|       |	 * but *does* have execute permissions */
 1033|    395|	if (!IS_ABSOLUTE_PATH(path, path_length)) {
  ------------------
  |  |  127|    395|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|    395|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  ------------------
  |  Branch (1033:6): [True: 72, False: 323]
  ------------------
 1034|     72|		if (state->cwd_length == 0) {
  ------------------
  |  Branch (1034:7): [True: 0, False: 72]
  ------------------
 1035|       |			/* resolve relative path */
 1036|      0|			start = 0;
 1037|      0|			memcpy(resolved_path , path, path_length + 1);
 1038|     72|		} else {
 1039|     72|			size_t state_cwd_length = state->cwd_length;
 1040|       |
 1041|       |#ifdef ZEND_WIN32
 1042|       |			if (IS_SLASH(path[0])) {
 1043|       |				if (state->cwd[1] == ':') {
 1044|       |					/* Copy only the drive name */
 1045|       |					state_cwd_length = 2;
 1046|       |				} else if (IS_UNC_PATH(state->cwd, state->cwd_length)) {
 1047|       |					/* Copy only the share name */
 1048|       |					state_cwd_length = 2;
 1049|       |					while (IS_SLASH(state->cwd[state_cwd_length])) {
 1050|       |						state_cwd_length++;
 1051|       |					}
 1052|       |					while (state->cwd[state_cwd_length] &&
 1053|       |							!IS_SLASH(state->cwd[state_cwd_length])) {
 1054|       |						state_cwd_length++;
 1055|       |					}
 1056|       |					while (IS_SLASH(state->cwd[state_cwd_length])) {
 1057|       |						state_cwd_length++;
 1058|       |					}
 1059|       |					while (state->cwd[state_cwd_length] &&
 1060|       |							!IS_SLASH(state->cwd[state_cwd_length])) {
 1061|       |						state_cwd_length++;
 1062|       |					}
 1063|       |				}
 1064|       |			}
 1065|       |#endif
 1066|     72|			if (path_length + state_cwd_length + 1 >= MAXPATHLEN-1) {
  ------------------
  |  Branch (1066:8): [True: 0, False: 72]
  ------------------
 1067|       |#ifdef ZEND_WIN32
 1068|       |				SET_ERRNO_FROM_WIN32_CODE(ERROR_BUFFER_OVERFLOW);
 1069|       |#else
 1070|      0|				errno = ENAMETOOLONG;
 1071|      0|#endif
 1072|      0|				return 1;
 1073|      0|			}
 1074|     72|			memcpy(resolved_path, state->cwd, state_cwd_length);
 1075|     72|			if (resolved_path[state_cwd_length-1] == DEFAULT_SLASH) {
  ------------------
  |  |  105|     72|#define DEFAULT_SLASH '/'
  ------------------
  |  Branch (1075:8): [True: 0, False: 72]
  ------------------
 1076|      0|				memcpy(resolved_path + state_cwd_length, path, path_length + 1);
 1077|      0|				path_length += state_cwd_length;
 1078|     72|			} else {
 1079|     72|				resolved_path[state_cwd_length] = DEFAULT_SLASH;
  ------------------
  |  |  105|     72|#define DEFAULT_SLASH '/'
  ------------------
 1080|     72|				memcpy(resolved_path + state_cwd_length + 1, path, path_length + 1);
 1081|     72|				path_length += state_cwd_length + 1;
 1082|     72|			}
 1083|     72|		}
 1084|    323|	} else {
 1085|       |#ifdef ZEND_WIN32
 1086|       |		if (path_length > 2 && path[1] == ':' && !IS_SLASH(path[2])) {
 1087|       |			resolved_path[0] = path[0];
 1088|       |			resolved_path[1] = ':';
 1089|       |			resolved_path[2] = DEFAULT_SLASH;
 1090|       |			memcpy(resolved_path + 3, path + 2, path_length - 1);
 1091|       |			path_length++;
 1092|       |		} else
 1093|       |#endif
 1094|    323|		memcpy(resolved_path, path, path_length + 1);
 1095|    323|	}
 1096|       |
 1097|       |#ifdef ZEND_WIN32
 1098|       |	if (memchr(resolved_path, '*', path_length) ||
 1099|       |		memchr(resolved_path, '?', path_length)) {
 1100|       |		SET_ERRNO_FROM_WIN32_CODE(ERROR_INVALID_NAME);
 1101|       |		return 1;
 1102|       |	}
 1103|       |#endif
 1104|       |
 1105|       |#ifdef ZEND_WIN32
 1106|       |	if (IS_UNC_PATH(resolved_path, path_length)) {
 1107|       |		/* skip UNC name */
 1108|       |		resolved_path[0] = DEFAULT_SLASH;
 1109|       |		resolved_path[1] = DEFAULT_SLASH;
 1110|       |		start = 2;
 1111|       |		while (!IS_SLASH(resolved_path[start])) {
 1112|       |			if (resolved_path[start] == 0) {
 1113|       |				goto verify;
 1114|       |			}
 1115|       |			resolved_path[start] = toupper((unsigned char)resolved_path[start]);
 1116|       |			start++;
 1117|       |		}
 1118|       |		resolved_path[start++] = DEFAULT_SLASH;
 1119|       |		while (!IS_SLASH(resolved_path[start])) {
 1120|       |			if (resolved_path[start] == 0) {
 1121|       |				goto verify;
 1122|       |			}
 1123|       |			resolved_path[start] = toupper((unsigned char)resolved_path[start]);
 1124|       |			start++;
 1125|       |		}
 1126|       |		resolved_path[start++] = DEFAULT_SLASH;
 1127|       |	} else if (IS_ABSOLUTE_PATH(resolved_path, path_length)) {
 1128|       |		/* skip DRIVE name */
 1129|       |		resolved_path[0] = toupper((unsigned char)resolved_path[0]);
 1130|       |		resolved_path[2] = DEFAULT_SLASH;
 1131|       |		if (path_length == 2) {
 1132|       |			resolved_path[3] = '\0';
 1133|       |		}
 1134|       |		start = 3;
 1135|       |	}
 1136|       |#endif
 1137|       |
 1138|    395|	add_slash = (use_realpath != CWD_REALPATH) && path_length > 0 && IS_SLASH(resolved_path[path_length-1]);
  ------------------
  |  |  210|    395|#define CWD_REALPATH 2 /* call realpath(), resolve symlinks. File must exist */
  ------------------
              	add_slash = (use_realpath != CWD_REALPATH) && path_length > 0 && IS_SLASH(resolved_path[path_length-1]);
  ------------------
  |  |  113|    545|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 5, False: 145]
  |  |  ------------------
  ------------------
  |  Branch (1138:14): [True: 150, False: 245]
  |  Branch (1138:48): [True: 150, False: 0]
  ------------------
 1139|    395|	t = CWDG(realpath_cache_ttl) ? 0 : -1;
  ------------------
  |  |  250|    395|# define CWDG(v) (cwd_globals.v)
  |  |  ------------------
  |  |  |  Branch (250:18): [True: 395, False: 0]
  |  |  ------------------
  ------------------
 1140|    395|	path_length = tsrm_realpath_r(resolved_path, start, path_length, &ll, &t, use_realpath, false, NULL);
 1141|       |
 1142|    395|	if (path_length == (size_t)-1) {
  ------------------
  |  Branch (1142:6): [True: 175, False: 220]
  ------------------
 1143|       |#ifdef ZEND_WIN32
 1144|       |		if (errno != EACCES) {
 1145|       |			errno = ENOENT;
 1146|       |		}
 1147|       |#else
 1148|    175|		errno = ENOENT;
 1149|    175|#endif
 1150|    175|		return 1;
 1151|    175|	}
 1152|       |
 1153|    220|	if (!start && !path_length) {
  ------------------
  |  Branch (1153:6): [True: 0, False: 220]
  |  Branch (1153:16): [True: 0, False: 0]
  ------------------
 1154|      0|		resolved_path[path_length++] = '.';
 1155|      0|	}
 1156|       |
 1157|    220|	if (add_slash && path_length && !IS_SLASH(resolved_path[path_length-1])) {
  ------------------
  |  |  113|      5|#define IS_SLASH(c)	((c) == '/')
  ------------------
  |  Branch (1157:6): [True: 5, False: 215]
  |  Branch (1157:19): [True: 5, False: 0]
  |  Branch (1157:34): [True: 5, False: 0]
  ------------------
 1158|      5|		if (path_length >= MAXPATHLEN-1) {
  ------------------
  |  Branch (1158:7): [True: 0, False: 5]
  ------------------
 1159|      0|			return -1;
 1160|      0|		}
 1161|      5|		resolved_path[path_length++] = DEFAULT_SLASH;
  ------------------
  |  |  105|      5|#define DEFAULT_SLASH '/'
  ------------------
 1162|      5|	}
 1163|    220|	resolved_path[path_length] = 0;
 1164|       |
 1165|       |#ifdef ZEND_WIN32
 1166|       |verify:
 1167|       |#endif
 1168|    220|	if (verify_path) {
  ------------------
  |  Branch (1168:6): [True: 0, False: 220]
  ------------------
 1169|      0|		cwd_state old_state;
 1170|       |
 1171|      0|		CWD_STATE_COPY(&old_state, state);
  ------------------
  |  |  101|      0|	(d)->cwd_length = (s)->cwd_length;		\
  |  |  102|      0|	(d)->cwd = (char *) emalloc((s)->cwd_length+1);	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|	memcpy((d)->cwd, (s)->cwd, (s)->cwd_length+1);
  ------------------
 1172|      0|		state->cwd_length = path_length;
 1173|       |
 1174|      0|		tmp = erealloc(state->cwd, state->cwd_length+1);
  ------------------
  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1175|      0|		state->cwd = (char *) tmp;
 1176|       |
 1177|      0|		memcpy(state->cwd, resolved_path, state->cwd_length+1);
 1178|      0|		if (verify_path(state)) {
  ------------------
  |  Branch (1178:7): [True: 0, False: 0]
  ------------------
 1179|      0|			CWD_STATE_FREE(state);
  ------------------
  |  |  106|      0|	efree((s)->cwd); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|	(s)->cwd_length = 0;
  ------------------
 1180|      0|			*state = old_state;
 1181|      0|			ret = 1;
 1182|      0|		} else {
 1183|      0|			CWD_STATE_FREE(&old_state);
  ------------------
  |  |  106|      0|	efree((s)->cwd); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|	(s)->cwd_length = 0;
  ------------------
 1184|      0|			ret = 0;
 1185|      0|		}
 1186|    220|	} else {
 1187|    220|		state->cwd_length = path_length;
 1188|    220|		tmp = erealloc(state->cwd, state->cwd_length+1);
  ------------------
  |  |  158|    220|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    220|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    220|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    220|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    220|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|    220|		state->cwd = (char *) tmp;
 1190|       |
 1191|    220|		memcpy(state->cwd, resolved_path, state->cwd_length+1);
 1192|    220|		ret = 0;
 1193|    220|	}
 1194|       |
 1195|       |#if VIRTUAL_CWD_DEBUG
 1196|       |	fprintf (stderr, "virtual_file_ex() = %s\n",state->cwd);
 1197|       |#endif
 1198|    220|	return (ret);
 1199|    220|}
tsrm_realpath:
 1717|    245|{
 1718|    245|	cwd_state new_state;
 1719|    245|	char cwd[MAXPATHLEN];
 1720|       |
 1721|       |	/* realpath("") returns CWD */
 1722|    245|	if (!*path) {
  ------------------
  |  Branch (1722:6): [True: 0, False: 245]
  ------------------
 1723|      0|		new_state.cwd = (char*)emalloc(1);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1724|      0|		new_state.cwd[0] = '\0';
 1725|      0|		new_state.cwd_length = 0;
 1726|      0|		if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
  ------------------
  |  |  328|      0|#define VCWD_GETCWD(buff, size) getcwd(buff, size)
  |  |  ------------------
  |  |  |  Branch (328:33): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1727|      0|			path = cwd;
 1728|      0|		}
 1729|    245|	} else if (!IS_ABSOLUTE_PATH(path, strlen(path)) &&
  ------------------
  |  |  127|    490|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|    245|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  ------------------
  |  Branch (1729:13): [True: 40, False: 205]
  ------------------
 1730|     40|					VCWD_GETCWD(cwd, MAXPATHLEN)) {
  ------------------
  |  |  328|     40|#define VCWD_GETCWD(buff, size) getcwd(buff, size)
  |  |  ------------------
  |  |  |  Branch (328:33): [True: 40, False: 0]
  |  |  ------------------
  ------------------
 1731|     40|		new_state.cwd = estrdup(cwd);
  ------------------
  |  |  163|     40|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     40|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     40|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     40|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     40|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1732|     40|		new_state.cwd_length = strlen(cwd);
 1733|    205|	} else {
 1734|    205|		new_state.cwd = (char*)emalloc(1);
  ------------------
  |  |  150|    205|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    205|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    205|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    205|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    205|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1735|    205|		new_state.cwd[0] = '\0';
 1736|    205|		new_state.cwd_length = 0;
 1737|    205|	}
 1738|       |
 1739|    245|	if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)) {
  ------------------
  |  |  210|    245|#define CWD_REALPATH 2 /* call realpath(), resolve symlinks. File must exist */
  ------------------
  |  Branch (1739:6): [True: 175, False: 70]
  ------------------
 1740|    175|		efree(new_state.cwd);
  ------------------
  |  |  154|    175|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    175|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    175|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    175|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    175|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1741|    175|		return NULL;
 1742|    175|	}
 1743|       |
 1744|     70|	if (real_path) {
  ------------------
  |  Branch (1744:6): [True: 62, False: 8]
  ------------------
 1745|     62|		size_t copy_len = new_state.cwd_length>MAXPATHLEN-1 ? MAXPATHLEN-1 : new_state.cwd_length;
  ------------------
  |  Branch (1745:21): [True: 0, False: 62]
  ------------------
 1746|     62|		memcpy(real_path, new_state.cwd, copy_len);
 1747|     62|		real_path[copy_len] = '\0';
 1748|     62|		efree(new_state.cwd);
  ------------------
  |  |  154|     62|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     62|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     62|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     62|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     62|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1749|     62|		return real_path;
 1750|     62|	} else {
 1751|      8|		return new_state.cwd;
 1752|      8|	}
 1753|     70|}
zend_virtual_cwd.c:cwd_globals_ctor:
  142|      2|{
  143|      2|	CWD_STATE_COPY(&cwd_g->cwd, &main_cwd_state);
  ------------------
  |  |  101|      2|	(d)->cwd_length = (s)->cwd_length;		\
  |  |  102|      2|	(d)->cwd = (char *) emalloc((s)->cwd_length+1);	\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      2|	memcpy((d)->cwd, (s)->cwd, (s)->cwd_length+1);
  ------------------
  144|      2|	cwd_g->realpath_cache_size = 0;
  145|      2|	cwd_g->realpath_cache_size_limit = REALPATH_CACHE_SIZE;
  ------------------
  |  |  217|      2|#define REALPATH_CACHE_SIZE 0      /* disabled while php.ini isn't loaded */
  ------------------
  146|      2|	cwd_g->realpath_cache_ttl = REALPATH_CACHE_TTL;
  ------------------
  |  |  216|      2|#define REALPATH_CACHE_TTL  (2*60) /* 2 minutes */
  ------------------
  147|      2|	memset(cwd_g->realpath_cache, 0, sizeof(cwd_g->realpath_cache));
  148|      2|}
zend_virtual_cwd.c:tsrm_realpath_r:
  488|    655|{
  489|    655|	size_t i, j;
  490|    655|	int directory = 0, save;
  491|       |#ifdef ZEND_WIN32
  492|       |	WIN32_FIND_DATAW dataw;
  493|       |	HANDLE hFind = INVALID_HANDLE_VALUE;
  494|       |	ALLOCA_FLAG(use_heap_large)
  495|       |	wchar_t *pathw = NULL;
  496|       |	int may_retry_reparse_point;
  497|       |#define FREE_PATHW() \
  498|       |	do { free(pathw); } while(0);
  499|       |
  500|       |#else
  501|    655|	zend_stat_t st = {0};
  502|    655|#endif
  503|    655|	realpath_cache_bucket *bucket;
  504|    655|	char *tmp;
  505|    655|	ALLOCA_FLAG(use_heap)
  506|       |
  507|    686|	while (1) {
  ------------------
  |  Branch (507:9): [True: 686, Folded]
  ------------------
  508|    686|		if (len <= start) {
  ------------------
  |  Branch (508:7): [True: 1, False: 685]
  ------------------
  509|      1|			if (link_is_dir) {
  ------------------
  |  Branch (509:8): [True: 0, False: 1]
  ------------------
  510|      0|				*link_is_dir = 1;
  511|      0|			}
  512|      1|			return start;
  513|      1|		}
  514|       |
  515|    685|		i = len;
  516|  7.66k|		while (i > start && !IS_SLASH(path[i-1])) {
  ------------------
  |  |  113|  7.44k|#define IS_SLASH(c)	((c) == '/')
  ------------------
  |  Branch (516:10): [True: 7.44k, False: 221]
  |  Branch (516:23): [True: 6.98k, False: 464]
  ------------------
  517|  6.98k|			i--;
  518|  6.98k|		}
  519|    685|		assert(i < MAXPATHLEN);
  ------------------
  |  Branch (519:3): [True: 0, False: 685]
  |  Branch (519:3): [True: 685, False: 0]
  ------------------
  520|       |
  521|    685|		if (i == len ||
  ------------------
  |  Branch (521:7): [True: 29, False: 656]
  ------------------
  522|    656|			(i + 1 == len && path[i] == '.')) {
  ------------------
  |  Branch (522:5): [True: 23, False: 633]
  |  Branch (522:21): [True: 2, False: 21]
  ------------------
  523|       |			/* remove double slashes and '.' */
  524|     31|			len = EXPECTED(i > 0) ? i - 1 : 0;
  ------------------
  |  |  456|     31|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 31, False: 0]
  |  |  ------------------
  ------------------
  525|     31|			is_dir = true;
  526|     31|			continue;
  527|    654|		} else if (i + 2 == len && path[i] == '.' && path[i+1] == '.') {
  ------------------
  |  Branch (527:14): [True: 24, False: 630]
  |  Branch (527:30): [True: 18, False: 6]
  |  Branch (527:48): [True: 15, False: 3]
  ------------------
  528|       |			/* remove '..' and previous directory */
  529|     15|			is_dir = true;
  530|     15|			if (link_is_dir) {
  ------------------
  |  Branch (530:8): [True: 0, False: 15]
  ------------------
  531|      0|				*link_is_dir = 1;
  532|      0|			}
  533|     15|			if (i <= start + 1) {
  ------------------
  |  Branch (533:8): [True: 0, False: 15]
  ------------------
  534|      0|				return start ? start : len;
  ------------------
  |  Branch (534:12): [True: 0, False: 0]
  ------------------
  535|      0|			}
  536|     15|			j = tsrm_realpath_r(path, start, i-1, ll, t, use_realpath, true, NULL);
  537|     15|			if (j > start && j != (size_t)-1) {
  ------------------
  |  Branch (537:8): [True: 7, False: 8]
  |  Branch (537:21): [True: 7, False: 0]
  ------------------
  538|      7|				j--;
  539|      7|				assert(i < MAXPATHLEN);
  ------------------
  |  Branch (539:5): [True: 0, False: 7]
  |  Branch (539:5): [True: 7, False: 0]
  ------------------
  540|     90|				while (j > start && !IS_SLASH(path[j])) {
  ------------------
  |  |  113|     88|#define IS_SLASH(c)	((c) == '/')
  ------------------
  |  Branch (540:12): [True: 88, False: 2]
  |  Branch (540:25): [True: 83, False: 5]
  ------------------
  541|     83|					j--;
  542|     83|				}
  543|      7|				assert(i < MAXPATHLEN);
  ------------------
  |  Branch (543:5): [True: 0, False: 7]
  |  Branch (543:5): [True: 7, False: 0]
  ------------------
  544|      7|				if (!start) {
  ------------------
  |  Branch (544:9): [True: 0, False: 7]
  ------------------
  545|       |					/* leading '..' must not be removed in case of relative path */
  546|      0|					if (j == 0 && path[0] == '.' && path[1] == '.' &&
  ------------------
  |  Branch (546:10): [True: 0, False: 0]
  |  Branch (546:20): [True: 0, False: 0]
  |  Branch (546:38): [True: 0, False: 0]
  ------------------
  547|      0|							IS_SLASH(path[2])) {
  ------------------
  |  |  113|      0|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  548|      0|						path[3] = '.';
  549|      0|						path[4] = '.';
  550|      0|						path[5] = DEFAULT_SLASH;
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
  551|      0|						j = 5;
  552|      0|					} else if (j > 0 &&
  ------------------
  |  Branch (552:17): [True: 0, False: 0]
  ------------------
  553|      0|							path[j+1] == '.' && path[j+2] == '.' &&
  ------------------
  |  Branch (553:8): [True: 0, False: 0]
  |  Branch (553:28): [True: 0, False: 0]
  ------------------
  554|      0|							IS_SLASH(path[j+3])) {
  ------------------
  |  |  113|      0|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  555|      0|						j += 4;
  556|      0|						path[j++] = '.';
  557|      0|						path[j++] = '.';
  558|      0|						path[j] = DEFAULT_SLASH;
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
  559|      0|					}
  560|      0|				}
  561|      8|			} else if (!start && !j) {
  ------------------
  |  Branch (561:15): [True: 0, False: 8]
  |  Branch (561:25): [True: 0, False: 0]
  ------------------
  562|       |				/* leading '..' must not be removed in case of relative path */
  563|      0|				path[0] = '.';
  564|      0|				path[1] = '.';
  565|      0|				path[2] = DEFAULT_SLASH;
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
  566|      0|				j = 2;
  567|      0|			}
  568|     15|			return j;
  569|     15|		}
  570|       |
  571|    639|		path[len] = 0;
  572|       |
  573|    639|		save = (use_realpath != CWD_EXPAND);
  ------------------
  |  |  208|    639|#define CWD_EXPAND   0 /* expand "." and ".." but don't resolve symlinks     */
  ------------------
  574|       |
  575|    639|		if (start && save && CWDG(realpath_cache_size_limit)) {
  ------------------
  |  |  250|    639|# define CWDG(v) (cwd_globals.v)
  |  |  ------------------
  |  |  |  Branch (250:18): [True: 0, False: 639]
  |  |  ------------------
  ------------------
  |  Branch (575:7): [True: 639, False: 0]
  |  Branch (575:16): [True: 639, False: 0]
  ------------------
  576|       |			/* cache lookup for absolute path */
  577|      0|			if (!*t) {
  ------------------
  |  Branch (577:8): [True: 0, False: 0]
  ------------------
  578|      0|				*t = time(0);
  579|      0|			}
  580|      0|			if ((bucket = realpath_cache_find(path, len, *t)) != NULL) {
  ------------------
  |  Branch (580:8): [True: 0, False: 0]
  ------------------
  581|      0|				if (is_dir && !bucket->is_dir) {
  ------------------
  |  Branch (581:9): [True: 0, False: 0]
  |  Branch (581:19): [True: 0, False: 0]
  ------------------
  582|       |					/* not a directory */
  583|      0|					return (size_t)-1;
  584|      0|				} else {
  585|      0|					if (link_is_dir) {
  ------------------
  |  Branch (585:10): [True: 0, False: 0]
  ------------------
  586|      0|						*link_is_dir = bucket->is_dir;
  587|      0|					}
  588|      0|					memcpy(path, bucket->realpath, bucket->realpath_len + 1);
  589|      0|					return bucket->realpath_len;
  590|      0|				}
  591|      0|			}
  592|      0|		}
  593|       |
  594|       |#ifdef ZEND_WIN32
  595|       |retry_reparse_point:
  596|       |		may_retry_reparse_point = 0;
  597|       |		if (save) {
  598|       |			pathw = php_win32_ioutil_any_to_w(path);
  599|       |			if (!pathw) {
  600|       |				return (size_t)-1;
  601|       |			}
  602|       |			PHP_WIN32_IOUTIL_CHECK_PATH_W(pathw, (size_t)-1, 1);
  603|       |			hFind = FindFirstFileExW(pathw, FindExInfoBasic, &dataw, FindExSearchNameMatch, NULL, 0);
  604|       |			if (INVALID_HANDLE_VALUE == hFind) {
  605|       |				if (use_realpath == CWD_REALPATH) {
  606|       |					/* file not found */
  607|       |					FREE_PATHW()
  608|       |					return (size_t)-1;
  609|       |				}
  610|       |				/* continue resolution anyway but don't save result in the cache */
  611|       |				save = 0;
  612|       |			} else {
  613|       |				FindClose(hFind);
  614|       |			}
  615|       |		}
  616|       |
  617|       |		tmp = do_alloca(len+1, use_heap);
  618|       |		memcpy(tmp, path, len+1);
  619|       |
  620|       |retry_reparse_tag_cloud:
  621|       |		if(save &&
  622|       |				!(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
  623|       |                               (dataw.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
  624|       |				) {
  625|       |			/* File is a reparse point. Get the target */
  626|       |			HANDLE hLink = NULL;
  627|       |			PHP_WIN32_IOUTIL_REPARSE_DATA_BUFFER * pbuffer;
  628|       |			DWORD retlength = 0;
  629|       |			size_t bufindex = 0;
  630|       |			uint8_t isabsolute = 0;
  631|       |			wchar_t * reparsetarget;
  632|       |			BOOL isVolume = FALSE;
  633|       |#if VIRTUAL_CWD_DEBUG
  634|       |			char *printname = NULL;
  635|       |#endif
  636|       |			char *substitutename = NULL;
  637|       |			size_t substitutename_len;
  638|       |			size_t substitutename_off = 0;
  639|       |			wchar_t tmpsubstname[MAXPATHLEN];
  640|       |
  641|       |			if(++(*ll) > LINK_MAX) {
  642|       |				free_alloca(tmp, use_heap);
  643|       |				FREE_PATHW()
  644|       |				return (size_t)-1;
  645|       |			}
  646|       |
  647|       |			hLink = CreateFileW(pathw,
  648|       |					0,
  649|       |					PHP_WIN32_IOUTIL_DEFAULT_SHARE_MODE,
  650|       |					NULL,
  651|       |					OPEN_EXISTING,
  652|       |					FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS,
  653|       |					NULL);
  654|       |			if(hLink == INVALID_HANDLE_VALUE) {
  655|       |				free_alloca(tmp, use_heap);
  656|       |				FREE_PATHW()
  657|       |				return (size_t)-1;
  658|       |			}
  659|       |
  660|       |			pbuffer = (PHP_WIN32_IOUTIL_REPARSE_DATA_BUFFER *)do_alloca(MAXIMUM_REPARSE_DATA_BUFFER_SIZE, use_heap_large);
  661|       |			if (pbuffer == NULL) {
  662|       |				CloseHandle(hLink);
  663|       |				free_alloca(tmp, use_heap);
  664|       |				FREE_PATHW()
  665|       |				return (size_t)-1;
  666|       |			}
  667|       |			if(!DeviceIoControl(hLink, FSCTL_GET_REPARSE_POINT, NULL, 0, pbuffer,  MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &retlength, NULL)) {
  668|       |				BY_HANDLE_FILE_INFORMATION fileInformation;
  669|       |
  670|       |				free_alloca(pbuffer, use_heap_large);
  671|       |				if ((dataw.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) &&
  672|       |						(dataw.dwReserved0 & ~IO_REPARSE_TAG_CLOUD_MASK) == IO_REPARSE_TAG_CLOUD &&
  673|       |						EG(windows_version_info).dwMajorVersion >= 10 &&
  674|       |						EG(windows_version_info).dwMinorVersion == 0 &&
  675|       |						EG(windows_version_info).dwBuildNumber >= 18362 &&
  676|       |						GetFileInformationByHandle(hLink, &fileInformation) &&
  677|       |						!(fileInformation.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
  678|       |					dataw.dwFileAttributes = fileInformation.dwFileAttributes;
  679|       |					CloseHandle(hLink);
  680|       |					(*ll)--;
  681|       |					goto retry_reparse_tag_cloud;
  682|       |				}
  683|       |				free_alloca(tmp, use_heap);
  684|       |				CloseHandle(hLink);
  685|       |				FREE_PATHW()
  686|       |				return (size_t)-1;
  687|       |			}
  688|       |
  689|       |			CloseHandle(hLink);
  690|       |
  691|       |			if(pbuffer->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
  692|       |				may_retry_reparse_point = 1;
  693|       |				reparsetarget = pbuffer->SymbolicLinkReparseBuffer.ReparseTarget;
  694|       |				isabsolute = pbuffer->SymbolicLinkReparseBuffer.Flags == 0;
  695|       |#if VIRTUAL_CWD_DEBUG
  696|       |				printname = php_win32_ioutil_w_to_any(reparsetarget + pbuffer->MountPointReparseBuffer.PrintNameOffset  / sizeof(WCHAR));
  697|       |				if (!printname) {
  698|       |					free_alloca(pbuffer, use_heap_large);
  699|       |					free_alloca(tmp, use_heap);
  700|       |					FREE_PATHW()
  701|       |					return (size_t)-1;
  702|       |				}
  703|       |#endif
  704|       |
  705|       |				substitutename_len = pbuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR);
  706|       |				if (substitutename_len >= MAXPATHLEN) {
  707|       |					free_alloca(pbuffer, use_heap_large);
  708|       |					free_alloca(tmp, use_heap);
  709|       |					FREE_PATHW()
  710|       |					return (size_t)-1;
  711|       |				}
  712|       |				memcpy(tmpsubstname, reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR), pbuffer->MountPointReparseBuffer.SubstituteNameLength);
  713|       |				tmpsubstname[substitutename_len] = L'\0';
  714|       |				substitutename = php_win32_cp_conv_w_to_any(tmpsubstname, substitutename_len, &substitutename_len);
  715|       |				if (!substitutename || substitutename_len >= MAXPATHLEN) {
  716|       |					free_alloca(pbuffer, use_heap_large);
  717|       |					free_alloca(tmp, use_heap);
  718|       |					free(substitutename);
  719|       |#if VIRTUAL_CWD_DEBUG
  720|       |					free(printname);
  721|       |#endif
  722|       |					FREE_PATHW()
  723|       |					return (size_t)-1;
  724|       |				}
  725|       |			}
  726|       |			else if(pbuffer->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) {
  727|       |				isabsolute = 1;
  728|       |				reparsetarget = pbuffer->MountPointReparseBuffer.ReparseTarget;
  729|       |#if VIRTUAL_CWD_DEBUG
  730|       |				printname = php_win32_ioutil_w_to_any(reparsetarget + pbuffer->MountPointReparseBuffer.PrintNameOffset  / sizeof(WCHAR));
  731|       |				if (!printname) {
  732|       |					free_alloca(pbuffer, use_heap_large);
  733|       |					free_alloca(tmp, use_heap);
  734|       |					FREE_PATHW()
  735|       |					return (size_t)-1;
  736|       |				}
  737|       |#endif
  738|       |
  739|       |
  740|       |				substitutename_len = pbuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR);
  741|       |				if (substitutename_len >= MAXPATHLEN) {
  742|       |					free_alloca(pbuffer, use_heap_large);
  743|       |					free_alloca(tmp, use_heap);
  744|       |					FREE_PATHW()
  745|       |					return (size_t)-1;
  746|       |				}
  747|       |				memcpy(tmpsubstname, reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR), pbuffer->MountPointReparseBuffer.SubstituteNameLength);
  748|       |				tmpsubstname[substitutename_len] = L'\0';
  749|       |				substitutename = php_win32_cp_conv_w_to_any(tmpsubstname, substitutename_len, &substitutename_len);
  750|       |				if (!substitutename || substitutename_len >= MAXPATHLEN) {
  751|       |					free_alloca(pbuffer, use_heap_large);
  752|       |					free_alloca(tmp, use_heap);
  753|       |					free(substitutename);
  754|       |#if VIRTUAL_CWD_DEBUG
  755|       |					free(printname);
  756|       |#endif
  757|       |					FREE_PATHW()
  758|       |					return (size_t)-1;
  759|       |				}
  760|       |			}
  761|       |			else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP ||
  762|       |					/* Starting with 1709. */
  763|       |					(pbuffer->ReparseTag & ~IO_REPARSE_TAG_CLOUD_MASK) == IO_REPARSE_TAG_CLOUD ||
  764|       |					IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag ||
  765|       |					IO_REPARSE_TAG_ACTIVISION_HSM == pbuffer->ReparseTag ||
  766|       |					IO_REPARSE_TAG_PROJFS == pbuffer->ReparseTag) {
  767|       |				isabsolute = 1;
  768|       |				substitutename = malloc((len + 1) * sizeof(char));
  769|       |				if (!substitutename) {
  770|       |					free_alloca(pbuffer, use_heap_large);
  771|       |					free_alloca(tmp, use_heap);
  772|       |					FREE_PATHW()
  773|       |					return (size_t)-1;
  774|       |				}
  775|       |				memcpy(substitutename, path, len + 1);
  776|       |				substitutename_len = len;
  777|       |			} else {
  778|       |				/* XXX this might be not the end, restart handling with REPARSE_GUID_DATA_BUFFER should be implemented. */
  779|       |				free_alloca(pbuffer, use_heap_large);
  780|       |				free_alloca(tmp, use_heap);
  781|       |				FREE_PATHW()
  782|       |				return (size_t)-1;
  783|       |			}
  784|       |
  785|       |			if(isabsolute && substitutename_len > 4) {
  786|       |				/* Do not resolve volumes (for now). A mounted point can
  787|       |				   target a volume without a drive, it is not certain that
  788|       |				   all IO functions we use in php and its deps support
  789|       |				   path with volume GUID instead of the DOS way, like:
  790|       |				   d:\test\mnt\foo
  791|       |				   \\?\Volume{62d1c3f8-83b9-11de-b108-806e6f6e6963}\foo
  792|       |				*/
  793|       |				if (strncmp(substitutename, "\\??\\Volume{",11) == 0
  794|       |					|| strncmp(substitutename, "\\\\?\\Volume{",11) == 0
  795|       |					|| strncmp(substitutename, "\\??\\UNC\\", 8) == 0
  796|       |					) {
  797|       |					isVolume = TRUE;
  798|       |					substitutename_off = 0;
  799|       |				} else
  800|       |					/* do not use the \??\ and \\?\ prefix*/
  801|       |					if (strncmp(substitutename, "\\??\\", 4) == 0
  802|       |						|| strncmp(substitutename, "\\\\?\\", 4) == 0) {
  803|       |					substitutename_off = 4;
  804|       |				}
  805|       |			}
  806|       |
  807|       |			if (!isVolume) {
  808|       |				char * tmp2 = substitutename + substitutename_off;
  809|       |				for (bufindex = 0; bufindex + substitutename_off < substitutename_len; bufindex++) {
  810|       |					*(path + bufindex) = *(tmp2 + bufindex);
  811|       |				}
  812|       |
  813|       |				*(path + bufindex) = 0;
  814|       |				j = bufindex;
  815|       |			} else {
  816|       |				j = len;
  817|       |			}
  818|       |
  819|       |
  820|       |#if VIRTUAL_CWD_DEBUG
  821|       |			fprintf(stderr, "reparse: print: %s ", printname);
  822|       |			fprintf(stderr, "sub: %s ", substitutename);
  823|       |			fprintf(stderr, "resolved: %s ", path);
  824|       |			free(printname);
  825|       |#endif
  826|       |			free_alloca(pbuffer, use_heap_large);
  827|       |			free(substitutename);
  828|       |
  829|       |			if (may_retry_reparse_point) {
  830|       |				DWORD attrs;
  831|       |
  832|       |				FREE_PATHW()
  833|       |				pathw = php_win32_ioutil_any_to_w(path);
  834|       |				if (!pathw) {
  835|       |					return (size_t)-1;
  836|       |				}
  837|       |				attrs = GetFileAttributesW(pathw);
  838|       |				if (!isVolume && attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_REPARSE_POINT)) {
  839|       |					free_alloca(tmp, use_heap);
  840|       |					FREE_PATHW()
  841|       |					goto retry_reparse_point;
  842|       |				}
  843|       |			}
  844|       |
  845|       |			if(isabsolute == 1) {
  846|       |				if (!((j == 3) && (path[1] == ':') && (path[2] == '\\'))) {
  847|       |					/* use_realpath is 0 in the call below coz path is absolute*/
  848|       |					j = tsrm_realpath_r(path, 0, j, ll, t, 0, is_dir, &directory);
  849|       |					if(j == (size_t)-1) {
  850|       |						free_alloca(tmp, use_heap);
  851|       |						FREE_PATHW()
  852|       |						return (size_t)-1;
  853|       |					}
  854|       |				}
  855|       |			}
  856|       |			else {
  857|       |				if(i + j >= MAXPATHLEN - 1) {
  858|       |					free_alloca(tmp, use_heap);
  859|       |					FREE_PATHW()
  860|       |					return (size_t)-1;
  861|       |				}
  862|       |
  863|       |				memmove(path+i, path, j+1);
  864|       |				memcpy(path, tmp, i-1);
  865|       |				path[i-1] = DEFAULT_SLASH;
  866|       |				j  = tsrm_realpath_r(path, start, i + j, ll, t, use_realpath, is_dir, &directory);
  867|       |				if(j == (size_t)-1) {
  868|       |					free_alloca(tmp, use_heap);
  869|       |					FREE_PATHW()
  870|       |					return (size_t)-1;
  871|       |				}
  872|       |			}
  873|       |			directory = (dataw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
  874|       |
  875|       |			if(link_is_dir) {
  876|       |				*link_is_dir = directory;
  877|       |			}
  878|       |		}
  879|       |		else {
  880|       |			if (save) {
  881|       |				directory = (dataw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
  882|       |				if (is_dir && !directory) {
  883|       |					/* not a directory */
  884|       |					free_alloca(tmp, use_heap);
  885|       |					FREE_PATHW()
  886|       |					return (size_t)-1;
  887|       |				}
  888|       |			}
  889|       |#else
  890|    639|		if (save && php_sys_lstat(path, &st) < 0) {
  ------------------
  |  |  156|    639|# define php_sys_lstat lstat
  ------------------
  |  Branch (890:7): [True: 639, False: 0]
  |  Branch (890:15): [True: 268, False: 371]
  ------------------
  891|    268|			if (use_realpath == CWD_REALPATH) {
  ------------------
  |  |  210|    268|#define CWD_REALPATH 2 /* call realpath(), resolve symlinks. File must exist */
  ------------------
  |  Branch (891:8): [True: 175, False: 93]
  ------------------
  892|       |				/* file not found */
  893|    175|				return (size_t)-1;
  894|    175|			}
  895|       |			/* continue resolution anyway but don't save result in the cache */
  896|     93|			save = 0;
  897|     93|		}
  898|       |
  899|    464|		tmp = do_alloca(len+1, use_heap);
  ------------------
  |  |  247|    464|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|    464|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    464|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    464|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    464|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    464|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  900|    464|		memcpy(tmp, path, len+1);
  901|       |
  902|    464|		if (save && S_ISLNK(st.st_mode)) {
  ------------------
  |  Branch (902:7): [True: 371, False: 93]
  |  Branch (902:15): [True: 0, False: 371]
  ------------------
  903|      0|			if (++(*ll) > LINK_MAX || (j = (size_t)php_sys_readlink(tmp, path, MAXPATHLEN)) == (size_t)-1) {
  ------------------
  |  |  485|      0|#define LINK_MAX 32
  ------------------
              			if (++(*ll) > LINK_MAX || (j = (size_t)php_sys_readlink(tmp, path, MAXPATHLEN)) == (size_t)-1) {
  ------------------
  |  |  159|      0|# define php_sys_readlink(link, target, target_len) readlink(link, target, target_len)
  ------------------
  |  Branch (903:8): [True: 0, False: 0]
  |  Branch (903:30): [True: 0, False: 0]
  ------------------
  904|       |				/* too many links or broken symlinks */
  905|      0|				free_alloca(tmp, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  906|      0|				return (size_t)-1;
  907|      0|			}
  908|      0|			path[j] = 0;
  909|      0|			if (IS_ABSOLUTE_PATH(path, j)) {
  ------------------
  |  |  127|      0|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|      0|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (127:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  910|      0|				j = tsrm_realpath_r(path, 1, j, ll, t, use_realpath, is_dir, &directory);
  911|      0|				if (j == (size_t)-1) {
  ------------------
  |  Branch (911:9): [True: 0, False: 0]
  ------------------
  912|      0|					free_alloca(tmp, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  913|      0|					return (size_t)-1;
  914|      0|				}
  915|      0|			} else {
  916|      0|				if (i + j >= MAXPATHLEN-1) {
  ------------------
  |  Branch (916:9): [True: 0, False: 0]
  ------------------
  917|      0|					free_alloca(tmp, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  918|      0|					return (size_t)-1; /* buffer overflow */
  919|      0|				}
  920|      0|				memmove(path+i, path, j+1);
  921|      0|				memcpy(path, tmp, i-1);
  922|      0|				path[i-1] = DEFAULT_SLASH;
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
  923|      0|				j = tsrm_realpath_r(path, start, i + j, ll, t, use_realpath, is_dir, &directory);
  924|      0|				if (j == (size_t)-1) {
  ------------------
  |  Branch (924:9): [True: 0, False: 0]
  ------------------
  925|      0|					free_alloca(tmp, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  926|      0|					return (size_t)-1;
  927|      0|				}
  928|      0|			}
  929|      0|			if (link_is_dir) {
  ------------------
  |  Branch (929:8): [True: 0, False: 0]
  ------------------
  930|      0|				*link_is_dir = directory;
  931|      0|			}
  932|    464|		} else {
  933|    464|			if (save) {
  ------------------
  |  Branch (933:8): [True: 371, False: 93]
  ------------------
  934|    371|				directory = S_ISDIR(st.st_mode);
  935|    371|				if (link_is_dir) {
  ------------------
  |  Branch (935:9): [True: 0, False: 371]
  ------------------
  936|      0|					*link_is_dir = directory;
  937|      0|				}
  938|    371|				if (is_dir && !directory) {
  ------------------
  |  Branch (938:9): [True: 229, False: 142]
  |  Branch (938:19): [True: 0, False: 229]
  ------------------
  939|       |					/* not a directory */
  940|      0|					free_alloca(tmp, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  941|      0|					return (size_t)-1;
  942|      0|				}
  943|    371|			}
  944|    464|#endif
  945|    464|			if (i <= start + 1) {
  ------------------
  |  Branch (945:8): [True: 219, False: 245]
  ------------------
  946|    219|				j = start;
  947|    245|			} else {
  948|       |				/* some leading directories may be inaccessible */
  949|    245|				j = tsrm_realpath_r(path, start, i-1, ll, t, save ? CWD_FILEPATH : use_realpath, true,
  ------------------
  |  |  209|    152|#define CWD_FILEPATH 1 /* resolve symlinks if file is exist otherwise expand */
  ------------------
  |  Branch (949:50): [True: 152, False: 93]
  ------------------
  950|    245|						    NULL);
  951|    245|				if (j > start && j != (size_t)-1) {
  ------------------
  |  Branch (951:9): [True: 242, False: 3]
  |  Branch (951:22): [True: 242, False: 0]
  ------------------
  952|    242|					path[j++] = DEFAULT_SLASH;
  ------------------
  |  |  105|    242|#define DEFAULT_SLASH '/'
  ------------------
  953|    242|				}
  954|    245|			}
  955|       |#ifdef ZEND_WIN32
  956|       |			if (j == (size_t)-1 || j + len >= MAXPATHLEN - 1 + i) {
  957|       |				free_alloca(tmp, use_heap);
  958|       |				FREE_PATHW()
  959|       |				return (size_t)-1;
  960|       |			}
  961|       |			if (save) {
  962|       |				size_t sz;
  963|       |				char *tmp_path = php_win32_ioutil_conv_w_to_any(dataw.cFileName, PHP_WIN32_CP_IGNORE_LEN, &sz);
  964|       |				if (!tmp_path) {
  965|       |					free_alloca(tmp, use_heap);
  966|       |					FREE_PATHW()
  967|       |					return (size_t)-1;
  968|       |				}
  969|       |				i = sz;
  970|       |				memcpy(path+j, tmp_path, i+1);
  971|       |				free(tmp_path);
  972|       |				j += i;
  973|       |			} else {
  974|       |				/* use the original file or directory name as it wasn't found */
  975|       |				memcpy(path+j, tmp+i, len-i+1);
  976|       |				j += (len-i);
  977|       |			}
  978|       |		}
  979|       |#else
  980|    464|			if (j == (size_t)-1 || j + len >= MAXPATHLEN - 1 + i) {
  ------------------
  |  Branch (980:8): [True: 0, False: 464]
  |  Branch (980:27): [True: 0, False: 464]
  ------------------
  981|      0|				free_alloca(tmp, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  982|      0|				return (size_t)-1;
  983|      0|			}
  984|    464|			memcpy(path+j, tmp+i, len-i+1);
  985|    464|			j += (len-i);
  986|    464|		}
  987|    464|#endif
  988|       |
  989|    464|		if (save && start && CWDG(realpath_cache_size_limit)) {
  ------------------
  |  |  250|    371|# define CWDG(v) (cwd_globals.v)
  |  |  ------------------
  |  |  |  Branch (250:18): [True: 0, False: 371]
  |  |  ------------------
  ------------------
  |  Branch (989:7): [True: 371, False: 93]
  |  Branch (989:15): [True: 371, False: 0]
  ------------------
  990|       |			/* save absolute path in the cache */
  991|      0|			realpath_cache_add(tmp, len, path, j, directory, *t);
  992|      0|		}
  993|       |
  994|    464|		free_alloca(tmp, use_heap);
  ------------------
  |  |  248|    464|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|    464|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    464|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    464|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    464|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    464|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  995|       |#ifdef ZEND_WIN32
  996|       |		FREE_PATHW()
  997|       |#undef FREE_PATHW
  998|       |#endif
  999|    464|		return j;
 1000|    464|	}
 1001|    655|}

zend_execute:
11559|  30.9k|{
11559|  30.9k|	zend_execute_data *execute_data;
11559|  30.9k|	void *object_or_called_scope;
11559|  30.9k|	uint32_t call_info;
11559|       |
11559|  30.9k|	if (EG(exception) != NULL) {
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (115595:6): [True: 0, False: 30.9k]
  ------------------
11559|      0|		return;
11559|      0|	}
11559|       |
11559|  30.9k|	object_or_called_scope = zend_get_this_object(EG(current_execute_data));
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  ------------------
11560|  30.9k|	if (EXPECTED(!object_or_called_scope)) {
  ------------------
  |  |  456|  30.9k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 30.9k, False: 0]
  |  |  ------------------
  ------------------
11560|  30.9k|		object_or_called_scope = zend_get_called_scope(EG(current_execute_data));
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  ------------------
11560|  30.9k|		call_info = ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE;
  ------------------
  |  |  684|  30.9k|#define ZEND_CALL_TOP_CODE           (ZEND_CALL_CODE | ZEND_CALL_TOP)
  |  |  ------------------
  |  |  |  |  661|  30.9k|#define ZEND_CALL_CODE               (1 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_TOP_CODE           (ZEND_CALL_CODE | ZEND_CALL_TOP)
  |  |  ------------------
  |  |  |  |  663|  30.9k|#define ZEND_CALL_TOP                (1 << 17)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE;
  ------------------
  |  |  666|  30.9k|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
11560|  30.9k|	} else {
11560|      0|		call_info = ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  684|      0|#define ZEND_CALL_TOP_CODE           (ZEND_CALL_CODE | ZEND_CALL_TOP)
  |  |  ------------------
  |  |  |  |  661|      0|#define ZEND_CALL_CODE               (1 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_TOP_CODE           (ZEND_CALL_CODE | ZEND_CALL_TOP)
  |  |  ------------------
  |  |  |  |  663|      0|#define ZEND_CALL_TOP                (1 << 17)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  666|      0|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
              		call_info = ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11560|      0|	}
11560|  30.9k|	execute_data = zend_vm_stack_push_call_frame(call_info,
11560|  30.9k|		(zend_function*)op_array, 0, object_or_called_scope);
11560|  30.9k|	if (EG(current_execute_data)) {
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 30.9k]
  |  |  ------------------
  ------------------
11560|      0|		execute_data->symbol_table = zend_rebuild_symbol_table();
11561|  30.9k|	} else {
11561|  30.9k|		execute_data->symbol_table = &EG(symbol_table);
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  ------------------
11561|  30.9k|	}
11561|  30.9k|	EX(prev_execute_data) = EG(current_execute_data);
  ------------------
  |  |  730|  30.9k|#define EX(element) 			((execute_data)->element)
  ------------------
              	EX(prev_execute_data) = EG(current_execute_data);
  ------------------
  |  |   45|  30.9k|# define EG(v) (executor_globals.v)
  ------------------
11561|  30.9k|	i_init_code_execute_data(execute_data, op_array, return_value);
11561|  30.9k|	ZEND_OBSERVER_FCALL_BEGIN(execute_data);
  ------------------
  |  |   48|  30.9k|#define ZEND_OBSERVER_FCALL_BEGIN(execute_data) do { \
  |  |   49|  30.9k|		if (ZEND_OBSERVER_ENABLED) { \
  |  |  ------------------
  |  |  |  |   46|  30.9k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (46:31): [True: 0, False: 30.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|			zend_observer_fcall_begin(execute_data); \
  |  |   51|      0|		} \
  |  |   52|  30.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (52:11): [Folded, False: 30.9k]
  |  |  ------------------
  ------------------
11561|  30.9k|	zend_execute_ex(execute_data);
11561|       |	/* Observer end handlers are called from ZEND_RETURN */
11561|  30.9k|	zend_vm_stack_free_call_frame(execute_data);
11561|  30.9k|}
zend_vm_init:
11562|      2|{
11562|      2|	static zend_vm_opcode_handler_func_t const funcs[] = {
11562|      2|		ZEND_NOP_SPEC_HANDLER,
11562|      2|		ZEND_ADD_SPEC_CONST_CONST_HANDLER,
11562|      2|		ZEND_ADD_SPEC_CONST_TMPVARCV_HANDLER,
11562|      2|		ZEND_ADD_SPEC_CONST_TMPVARCV_HANDLER,
11562|      2|		ZEND_NULL_HANDLER,
11563|      2|		ZEND_ADD_SPEC_CONST_TMPVARCV_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_CONST_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11563|      2|		ZEND_NULL_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_CONST_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11563|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11563|      2|		ZEND_NULL_HANDLER,
11564|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11564|      2|		ZEND_NULL_HANDLER,
11564|      2|		ZEND_NULL_HANDLER,
11564|      2|		ZEND_NULL_HANDLER,
11564|      2|		ZEND_NULL_HANDLER,
11564|      2|		ZEND_NULL_HANDLER,
11564|      2|		ZEND_ADD_SPEC_TMPVARCV_CONST_HANDLER,
11564|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11564|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11564|      2|		ZEND_NULL_HANDLER,
11565|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11565|      2|		ZEND_SUB_SPEC_CONST_CONST_HANDLER,
11565|      2|		ZEND_SUB_SPEC_CONST_TMPVARCV_HANDLER,
11565|      2|		ZEND_SUB_SPEC_CONST_TMPVARCV_HANDLER,
11565|      2|		ZEND_NULL_HANDLER,
11565|      2|		ZEND_SUB_SPEC_CONST_TMPVARCV_HANDLER,
11565|      2|		ZEND_SUB_SPEC_TMPVARCV_CONST_HANDLER,
11565|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11565|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11565|      2|		ZEND_NULL_HANDLER,
11566|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11566|      2|		ZEND_SUB_SPEC_TMPVARCV_CONST_HANDLER,
11566|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11566|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11566|      2|		ZEND_NULL_HANDLER,
11566|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11566|      2|		ZEND_NULL_HANDLER,
11566|      2|		ZEND_NULL_HANDLER,
11566|      2|		ZEND_NULL_HANDLER,
11566|      2|		ZEND_NULL_HANDLER,
11567|      2|		ZEND_NULL_HANDLER,
11567|      2|		ZEND_SUB_SPEC_TMPVARCV_CONST_HANDLER,
11567|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11567|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11567|      2|		ZEND_NULL_HANDLER,
11567|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11567|      2|		ZEND_MUL_SPEC_CONST_CONST_HANDLER,
11567|      2|		ZEND_NULL_HANDLER,
11567|      2|		ZEND_NULL_HANDLER,
11567|      2|		ZEND_NULL_HANDLER,
11568|      2|		ZEND_NULL_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_CONST_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11568|      2|		ZEND_NULL_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_CONST_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11568|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11568|      2|		ZEND_NULL_HANDLER,
11569|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11569|      2|		ZEND_NULL_HANDLER,
11569|      2|		ZEND_NULL_HANDLER,
11569|      2|		ZEND_NULL_HANDLER,
11569|      2|		ZEND_NULL_HANDLER,
11569|      2|		ZEND_NULL_HANDLER,
11569|      2|		ZEND_MUL_SPEC_TMPVARCV_CONST_HANDLER,
11569|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11569|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11569|      2|		ZEND_NULL_HANDLER,
11570|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11570|      2|		ZEND_DIV_SPEC_CONST_CONST_HANDLER,
11570|      2|		ZEND_DIV_SPEC_CONST_TMP_HANDLER,
11570|      2|		ZEND_NULL_HANDLER,
11570|      2|		ZEND_NULL_HANDLER,
11570|      2|		ZEND_DIV_SPEC_CONST_CV_HANDLER,
11570|      2|		ZEND_DIV_SPEC_TMP_CONST_HANDLER,
11570|      2|		ZEND_DIV_SPEC_TMP_TMP_HANDLER,
11570|      2|		ZEND_NULL_HANDLER,
11570|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_DIV_SPEC_TMP_CV_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11571|      2|		ZEND_NULL_HANDLER,
11572|      2|		ZEND_NULL_HANDLER,
11572|      2|		ZEND_DIV_SPEC_CV_CONST_HANDLER,
11572|      2|		ZEND_DIV_SPEC_CV_TMP_HANDLER,
11572|      2|		ZEND_NULL_HANDLER,
11572|      2|		ZEND_NULL_HANDLER,
11572|      2|		ZEND_DIV_SPEC_CV_CV_HANDLER,
11572|      2|		ZEND_MOD_SPEC_CONST_CONST_HANDLER,
11572|      2|		ZEND_MOD_SPEC_CONST_TMPVARCV_HANDLER,
11572|      2|		ZEND_MOD_SPEC_CONST_TMPVARCV_HANDLER,
11572|      2|		ZEND_NULL_HANDLER,
11573|      2|		ZEND_MOD_SPEC_CONST_TMPVARCV_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_CONST_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11573|      2|		ZEND_NULL_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_CONST_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11573|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11573|      2|		ZEND_NULL_HANDLER,
11574|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11574|      2|		ZEND_NULL_HANDLER,
11574|      2|		ZEND_NULL_HANDLER,
11574|      2|		ZEND_NULL_HANDLER,
11574|      2|		ZEND_NULL_HANDLER,
11574|      2|		ZEND_NULL_HANDLER,
11574|      2|		ZEND_MOD_SPEC_TMPVARCV_CONST_HANDLER,
11574|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11574|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11574|      2|		ZEND_NULL_HANDLER,
11575|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11575|      2|		ZEND_SL_SPEC_CONST_CONST_HANDLER,
11575|      2|		ZEND_SL_SPEC_CONST_TMPVARCV_HANDLER,
11575|      2|		ZEND_SL_SPEC_CONST_TMPVARCV_HANDLER,
11575|      2|		ZEND_NULL_HANDLER,
11575|      2|		ZEND_SL_SPEC_CONST_TMPVARCV_HANDLER,
11575|      2|		ZEND_SL_SPEC_TMPVARCV_CONST_HANDLER,
11575|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11575|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11575|      2|		ZEND_NULL_HANDLER,
11576|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11576|      2|		ZEND_SL_SPEC_TMPVARCV_CONST_HANDLER,
11576|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11576|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11576|      2|		ZEND_NULL_HANDLER,
11576|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11576|      2|		ZEND_NULL_HANDLER,
11576|      2|		ZEND_NULL_HANDLER,
11576|      2|		ZEND_NULL_HANDLER,
11576|      2|		ZEND_NULL_HANDLER,
11577|      2|		ZEND_NULL_HANDLER,
11577|      2|		ZEND_SL_SPEC_TMPVARCV_CONST_HANDLER,
11577|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11577|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11577|      2|		ZEND_NULL_HANDLER,
11577|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11577|      2|		ZEND_SR_SPEC_CONST_CONST_HANDLER,
11577|      2|		ZEND_SR_SPEC_CONST_TMPVARCV_HANDLER,
11577|      2|		ZEND_SR_SPEC_CONST_TMPVARCV_HANDLER,
11577|      2|		ZEND_NULL_HANDLER,
11578|      2|		ZEND_SR_SPEC_CONST_TMPVARCV_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_CONST_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11578|      2|		ZEND_NULL_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_CONST_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11578|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11578|      2|		ZEND_NULL_HANDLER,
11579|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11579|      2|		ZEND_NULL_HANDLER,
11579|      2|		ZEND_NULL_HANDLER,
11579|      2|		ZEND_NULL_HANDLER,
11579|      2|		ZEND_NULL_HANDLER,
11579|      2|		ZEND_NULL_HANDLER,
11579|      2|		ZEND_SR_SPEC_TMPVARCV_CONST_HANDLER,
11579|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11579|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11579|      2|		ZEND_NULL_HANDLER,
11580|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11580|      2|		ZEND_NULL_HANDLER,
11580|      2|		ZEND_CONCAT_SPEC_CONST_TMP_HANDLER,
11580|      2|		ZEND_NULL_HANDLER,
11580|      2|		ZEND_NULL_HANDLER,
11580|      2|		ZEND_CONCAT_SPEC_CONST_CV_HANDLER,
11580|      2|		ZEND_CONCAT_SPEC_TMP_CONST_HANDLER,
11580|      2|		ZEND_CONCAT_SPEC_TMP_TMP_HANDLER,
11580|      2|		ZEND_NULL_HANDLER,
11580|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_CONCAT_SPEC_TMP_CV_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11581|      2|		ZEND_NULL_HANDLER,
11582|      2|		ZEND_NULL_HANDLER,
11582|      2|		ZEND_CONCAT_SPEC_CV_CONST_HANDLER,
11582|      2|		ZEND_CONCAT_SPEC_CV_TMP_HANDLER,
11582|      2|		ZEND_NULL_HANDLER,
11582|      2|		ZEND_NULL_HANDLER,
11582|      2|		ZEND_CONCAT_SPEC_CV_CV_HANDLER,
11582|      2|		ZEND_BW_OR_SPEC_CONST_CONST_HANDLER,
11582|      2|		ZEND_NULL_HANDLER,
11582|      2|		ZEND_NULL_HANDLER,
11582|      2|		ZEND_NULL_HANDLER,
11583|      2|		ZEND_NULL_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_CONST_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11583|      2|		ZEND_NULL_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_CONST_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11583|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11583|      2|		ZEND_NULL_HANDLER,
11584|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11584|      2|		ZEND_NULL_HANDLER,
11584|      2|		ZEND_NULL_HANDLER,
11584|      2|		ZEND_NULL_HANDLER,
11584|      2|		ZEND_NULL_HANDLER,
11584|      2|		ZEND_NULL_HANDLER,
11584|      2|		ZEND_BW_OR_SPEC_TMPVARCV_CONST_HANDLER,
11584|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11584|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11584|      2|		ZEND_NULL_HANDLER,
11585|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11585|      2|		ZEND_BW_AND_SPEC_CONST_CONST_HANDLER,
11585|      2|		ZEND_NULL_HANDLER,
11585|      2|		ZEND_NULL_HANDLER,
11585|      2|		ZEND_NULL_HANDLER,
11585|      2|		ZEND_NULL_HANDLER,
11585|      2|		ZEND_BW_AND_SPEC_TMPVARCV_CONST_HANDLER,
11585|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11585|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11585|      2|		ZEND_NULL_HANDLER,
11586|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11586|      2|		ZEND_BW_AND_SPEC_TMPVARCV_CONST_HANDLER,
11586|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11586|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11586|      2|		ZEND_NULL_HANDLER,
11586|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11586|      2|		ZEND_NULL_HANDLER,
11586|      2|		ZEND_NULL_HANDLER,
11586|      2|		ZEND_NULL_HANDLER,
11586|      2|		ZEND_NULL_HANDLER,
11587|      2|		ZEND_NULL_HANDLER,
11587|      2|		ZEND_BW_AND_SPEC_TMPVARCV_CONST_HANDLER,
11587|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11587|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11587|      2|		ZEND_NULL_HANDLER,
11587|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11587|      2|		ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER,
11587|      2|		ZEND_NULL_HANDLER,
11587|      2|		ZEND_NULL_HANDLER,
11587|      2|		ZEND_NULL_HANDLER,
11588|      2|		ZEND_NULL_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_CONST_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11588|      2|		ZEND_NULL_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_CONST_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11588|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11588|      2|		ZEND_NULL_HANDLER,
11589|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11589|      2|		ZEND_NULL_HANDLER,
11589|      2|		ZEND_NULL_HANDLER,
11589|      2|		ZEND_NULL_HANDLER,
11589|      2|		ZEND_NULL_HANDLER,
11589|      2|		ZEND_NULL_HANDLER,
11589|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_CONST_HANDLER,
11589|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11589|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11589|      2|		ZEND_NULL_HANDLER,
11590|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11590|      2|		ZEND_POW_SPEC_CONST_CONST_HANDLER,
11590|      2|		ZEND_POW_SPEC_CONST_TMP_HANDLER,
11590|      2|		ZEND_NULL_HANDLER,
11590|      2|		ZEND_NULL_HANDLER,
11590|      2|		ZEND_POW_SPEC_CONST_CV_HANDLER,
11590|      2|		ZEND_POW_SPEC_TMP_CONST_HANDLER,
11590|      2|		ZEND_POW_SPEC_TMP_TMP_HANDLER,
11590|      2|		ZEND_NULL_HANDLER,
11590|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_POW_SPEC_TMP_CV_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11591|      2|		ZEND_NULL_HANDLER,
11592|      2|		ZEND_NULL_HANDLER,
11592|      2|		ZEND_POW_SPEC_CV_CONST_HANDLER,
11592|      2|		ZEND_POW_SPEC_CV_TMP_HANDLER,
11592|      2|		ZEND_NULL_HANDLER,
11592|      2|		ZEND_NULL_HANDLER,
11592|      2|		ZEND_POW_SPEC_CV_CV_HANDLER,
11592|      2|		ZEND_BW_NOT_SPEC_CONST_HANDLER,
11592|      2|		ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER,
11592|      2|		ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER,
11592|      2|		ZEND_NULL_HANDLER,
11593|      2|		ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER,
11593|      2|		ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
11593|      2|		ZEND_BOOL_NOT_SPEC_TMP_HANDLER,
11593|      2|		ZEND_NULL_HANDLER,
11593|      2|		ZEND_NULL_HANDLER,
11593|      2|		ZEND_BOOL_NOT_SPEC_CV_HANDLER,
11593|      2|		ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER,
11593|      2|		ZEND_NULL_HANDLER,
11593|      2|		ZEND_NULL_HANDLER,
11593|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_BOOL_XOR_SPEC_TMP_CONST_HANDLER,
11594|      2|		ZEND_BOOL_XOR_SPEC_TMP_TMP_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11594|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER,
11595|      2|		ZEND_BOOL_XOR_SPEC_CV_TMP_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11595|      2|		ZEND_NULL_HANDLER,
11596|      2|		ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER,
11596|      2|		ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER,
11596|      2|		ZEND_NULL_HANDLER,
11596|      2|		ZEND_NULL_HANDLER,
11596|      2|		ZEND_NULL_HANDLER,
11596|      2|		ZEND_NULL_HANDLER,
11596|      2|		ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER,
11596|      2|		ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER,
11596|      2|		ZEND_NULL_HANDLER,
11596|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11597|      2|		ZEND_NULL_HANDLER,
11598|      2|		ZEND_NULL_HANDLER,
11598|      2|		ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER,
11598|      2|		ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER,
11598|      2|		ZEND_NULL_HANDLER,
11598|      2|		ZEND_NULL_HANDLER,
11598|      2|		ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER,
11598|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER,
11598|      2|		ZEND_NULL_HANDLER,
11598|      2|		ZEND_NULL_HANDLER,
11598|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER,
11599|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11599|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER,
11600|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11600|      2|		ZEND_NULL_HANDLER,
11601|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER,
11601|      2|		ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
11601|      2|		ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
11601|      2|		ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
11601|      2|		ZEND_NULL_HANDLER,
11601|      2|		ZEND_NULL_HANDLER,
11601|      2|		ZEND_NULL_HANDLER,
11601|      2|		ZEND_NULL_HANDLER,
11601|      2|		ZEND_NULL_HANDLER,
11601|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_NULL_HANDLER,
11602|      2|		ZEND_IS_EQUAL_SPEC_TMP_CONST_HANDLER,
11602|      2|		ZEND_IS_EQUAL_SPEC_TMP_CONST_JMPZ_HANDLER,
11602|      2|		ZEND_IS_EQUAL_SPEC_TMP_CONST_JMPNZ_HANDLER,
11602|      2|		ZEND_IS_EQUAL_SPEC_TMP_TMP_HANDLER,
11603|      2|		ZEND_IS_EQUAL_SPEC_TMP_TMP_JMPZ_HANDLER,
11603|      2|		ZEND_IS_EQUAL_SPEC_TMP_TMP_JMPNZ_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11603|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11604|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11605|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11606|      2|		ZEND_NULL_HANDLER,
11607|      2|		ZEND_NULL_HANDLER,
11607|      2|		ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER,
11607|      2|		ZEND_IS_EQUAL_SPEC_CV_CONST_JMPZ_HANDLER,
11607|      2|		ZEND_IS_EQUAL_SPEC_CV_CONST_JMPNZ_HANDLER,
11607|      2|		ZEND_IS_EQUAL_SPEC_CV_TMP_HANDLER,
11607|      2|		ZEND_IS_EQUAL_SPEC_CV_TMP_JMPZ_HANDLER,
11607|      2|		ZEND_IS_EQUAL_SPEC_CV_TMP_JMPNZ_HANDLER,
11607|      2|		ZEND_NULL_HANDLER,
11607|      2|		ZEND_NULL_HANDLER,
11607|      2|		ZEND_NULL_HANDLER,
11608|      2|		ZEND_NULL_HANDLER,
11608|      2|		ZEND_NULL_HANDLER,
11608|      2|		ZEND_NULL_HANDLER,
11608|      2|		ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER,
11608|      2|		ZEND_IS_EQUAL_SPEC_CV_CV_JMPZ_HANDLER,
11608|      2|		ZEND_IS_EQUAL_SPEC_CV_CV_JMPNZ_HANDLER,
11608|      2|		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
11608|      2|		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
11608|      2|		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
11608|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11609|      2|		ZEND_NULL_HANDLER,
11610|      2|		ZEND_NULL_HANDLER,
11610|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_HANDLER,
11610|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_JMPZ_HANDLER,
11610|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_JMPNZ_HANDLER,
11610|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_HANDLER,
11610|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_JMPZ_HANDLER,
11610|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_JMPNZ_HANDLER,
11610|      2|		ZEND_NULL_HANDLER,
11610|      2|		ZEND_NULL_HANDLER,
11610|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11611|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11612|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11613|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_NULL_HANDLER,
11614|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER,
11614|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_JMPZ_HANDLER,
11614|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_JMPNZ_HANDLER,
11614|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_HANDLER,
11615|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_JMPZ_HANDLER,
11615|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_JMPNZ_HANDLER,
11615|      2|		ZEND_NULL_HANDLER,
11615|      2|		ZEND_NULL_HANDLER,
11615|      2|		ZEND_NULL_HANDLER,
11615|      2|		ZEND_NULL_HANDLER,
11615|      2|		ZEND_NULL_HANDLER,
11615|      2|		ZEND_NULL_HANDLER,
11615|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER,
11615|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_JMPZ_HANDLER,
11616|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_JMPNZ_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11616|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11617|      2|		ZEND_NULL_HANDLER,
11617|      2|		ZEND_NULL_HANDLER,
11617|      2|		ZEND_NULL_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11617|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11618|      2|		ZEND_NULL_HANDLER,
11618|      2|		ZEND_NULL_HANDLER,
11618|      2|		ZEND_NULL_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11618|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11619|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11620|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11620|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11620|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11620|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11621|      2|		ZEND_NULL_HANDLER,
11622|      2|		ZEND_NULL_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11622|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11623|      2|		ZEND_NULL_HANDLER,
11623|      2|		ZEND_NULL_HANDLER,
11623|      2|		ZEND_NULL_HANDLER,
11623|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11623|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11623|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11623|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
11623|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
11623|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
11623|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11624|      2|		ZEND_NULL_HANDLER,
11624|      2|		ZEND_NULL_HANDLER,
11624|      2|		ZEND_NULL_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_HANDLER,
11624|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11625|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11626|      2|		ZEND_NULL_HANDLER,
11626|      2|		ZEND_NULL_HANDLER,
11626|      2|		ZEND_NULL_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11626|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11627|      2|		ZEND_NULL_HANDLER,
11627|      2|		ZEND_NULL_HANDLER,
11627|      2|		ZEND_NULL_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11627|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11628|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11628|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_NULL_HANDLER,
11629|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_HANDLER,
11629|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11629|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11629|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11630|      2|		ZEND_NULL_HANDLER,
11630|      2|		ZEND_NULL_HANDLER,
11630|      2|		ZEND_NULL_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11630|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11631|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11631|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11632|      2|		ZEND_NULL_HANDLER,
11633|      2|		ZEND_NULL_HANDLER,
11633|      2|		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER,
11633|      2|		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER,
11633|      2|		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER,
11633|      2|		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER,
11633|      2|		ZEND_NULL_HANDLER,
11633|      2|		ZEND_NULL_HANDLER,
11633|      2|		ZEND_NULL_HANDLER,
11633|      2|		ZEND_NULL_HANDLER,
11633|      2|		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER,
11634|      2|		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11634|      2|		ZEND_NULL_HANDLER,
11635|      2|		ZEND_NULL_HANDLER,
11635|      2|		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER,
11635|      2|		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER,
11635|      2|		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER,
11635|      2|		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER,
11635|      2|		ZEND_NULL_HANDLER,
11635|      2|		ZEND_NULL_HANDLER,
11635|      2|		ZEND_NULL_HANDLER,
11635|      2|		ZEND_NULL_HANDLER,
11635|      2|		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER,
11636|      2|		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11636|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11637|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11638|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11639|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11640|      2|		ZEND_NULL_HANDLER,
11641|      2|		ZEND_NULL_HANDLER,
11641|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER,
11641|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER,
11641|      2|		ZEND_NULL_HANDLER,
11641|      2|		ZEND_NULL_HANDLER,
11641|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
11641|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_CONST_HANDLER,
11641|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_TMP_HANDLER,
11641|      2|		ZEND_NULL_HANDLER,
11641|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_CV_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER,
11642|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11642|      2|		ZEND_NULL_HANDLER,
11643|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER,
11643|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER,
11643|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER,
11643|      2|		ZEND_NULL_HANDLER,
11643|      2|		ZEND_NULL_HANDLER,
11643|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
11643|      2|		ZEND_NULL_HANDLER,
11643|      2|		ZEND_NULL_HANDLER,
11643|      2|		ZEND_NULL_HANDLER,
11643|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11644|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11645|      2|		ZEND_NULL_HANDLER,
11646|      2|		ZEND_NULL_HANDLER,
11646|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
11646|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
11646|      2|		ZEND_NULL_HANDLER,
11646|      2|		ZEND_NULL_HANDLER,
11646|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
11646|      2|		ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_CONST_HANDLER,
11646|      2|		ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_TMP_HANDLER,
11646|      2|		ZEND_NULL_HANDLER,
11646|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_CV_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER,
11647|      2|		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11647|      2|		ZEND_NULL_HANDLER,
11648|      2|		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER,
11648|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER,
11648|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER,
11648|      2|		ZEND_NULL_HANDLER,
11648|      2|		ZEND_NULL_HANDLER,
11648|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER,
11648|      2|		ZEND_NULL_HANDLER,
11648|      2|		ZEND_NULL_HANDLER,
11648|      2|		ZEND_NULL_HANDLER,
11648|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11649|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11650|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11651|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11652|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER,
11653|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11653|      2|		ZEND_NULL_HANDLER,
11654|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
11654|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_OP_DATA_CONST_HANDLER,
11654|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_OP_DATA_TMP_HANDLER,
11654|      2|		ZEND_NULL_HANDLER,
11654|      2|		ZEND_NULL_HANDLER,
11654|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_OP_DATA_CV_HANDLER,
11654|      2|		ZEND_NULL_HANDLER,
11654|      2|		ZEND_NULL_HANDLER,
11654|      2|		ZEND_NULL_HANDLER,
11654|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER,
11655|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11655|      2|		ZEND_NULL_HANDLER,
11656|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
11656|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER,
11656|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER,
11656|      2|		ZEND_NULL_HANDLER,
11656|      2|		ZEND_NULL_HANDLER,
11656|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER,
11656|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_CONST_HANDLER,
11656|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_TMP_HANDLER,
11656|      2|		ZEND_NULL_HANDLER,
11656|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_CV_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11657|      2|		ZEND_NULL_HANDLER,
11658|      2|		ZEND_NULL_HANDLER,
11658|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER,
11658|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER,
11658|      2|		ZEND_NULL_HANDLER,
11658|      2|		ZEND_NULL_HANDLER,
11658|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER,
11658|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
11658|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
11658|      2|		ZEND_NULL_HANDLER,
11658|      2|		ZEND_NULL_HANDLER,
11659|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
11659|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_CONST_HANDLER,
11659|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_TMP_HANDLER,
11659|      2|		ZEND_NULL_HANDLER,
11659|      2|		ZEND_NULL_HANDLER,
11659|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_CV_HANDLER,
11659|      2|		ZEND_NULL_HANDLER,
11659|      2|		ZEND_NULL_HANDLER,
11659|      2|		ZEND_NULL_HANDLER,
11659|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER,
11660|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11660|      2|		ZEND_NULL_HANDLER,
11661|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER,
11661|      2|		ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_CONST_HANDLER,
11661|      2|		ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_TMP_HANDLER,
11661|      2|		ZEND_NULL_HANDLER,
11661|      2|		ZEND_NULL_HANDLER,
11661|      2|		ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_CV_HANDLER,
11661|      2|		ZEND_NULL_HANDLER,
11661|      2|		ZEND_NULL_HANDLER,
11661|      2|		ZEND_NULL_HANDLER,
11661|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_ASSIGN_OP_SPEC_VAR_CONST_HANDLER,
11662|      2|		ZEND_ASSIGN_OP_SPEC_VAR_TMP_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11662|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_ASSIGN_OP_SPEC_VAR_CV_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_ASSIGN_OP_SPEC_CV_CONST_HANDLER,
11663|      2|		ZEND_ASSIGN_OP_SPEC_CV_TMP_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11663|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_ASSIGN_OP_SPEC_CV_CV_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11664|      2|		ZEND_NULL_HANDLER,
11665|      2|		ZEND_NULL_HANDLER,
11665|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_CONST_HANDLER,
11665|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_TMP_HANDLER,
11665|      2|		ZEND_NULL_HANDLER,
11665|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_UNUSED_HANDLER,
11665|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_CV_HANDLER,
11665|      2|		ZEND_NULL_HANDLER,
11665|      2|		ZEND_NULL_HANDLER,
11665|      2|		ZEND_NULL_HANDLER,
11665|      2|		ZEND_NULL_HANDLER,
11666|      2|		ZEND_NULL_HANDLER,
11666|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_CONST_HANDLER,
11666|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_TMP_HANDLER,
11666|      2|		ZEND_NULL_HANDLER,
11666|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_UNUSED_HANDLER,
11666|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_CV_HANDLER,
11666|      2|		ZEND_NULL_HANDLER,
11666|      2|		ZEND_NULL_HANDLER,
11666|      2|		ZEND_NULL_HANDLER,
11666|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_VAR_CONST_HANDLER,
11667|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_VAR_TMP_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11667|      2|		ZEND_NULL_HANDLER,
11668|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_VAR_CV_HANDLER,
11668|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_CONST_HANDLER,
11668|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_TMP_HANDLER,
11668|      2|		ZEND_NULL_HANDLER,
11668|      2|		ZEND_NULL_HANDLER,
11668|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_CV_HANDLER,
11668|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_CV_CONST_HANDLER,
11668|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_CV_TMP_HANDLER,
11668|      2|		ZEND_NULL_HANDLER,
11668|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_CV_CV_HANDLER,
11669|      2|		ZEND_ASSIGN_STATIC_PROP_OP_SPEC_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11669|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11670|      2|		ZEND_NULL_HANDLER,
11671|      2|		ZEND_NULL_HANDLER,
11671|      2|		ZEND_NULL_HANDLER,
11671|      2|		ZEND_NULL_HANDLER,
11671|      2|		ZEND_NULL_HANDLER,
11671|      2|		ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER,
11671|      2|		ZEND_NULL_HANDLER,
11671|      2|		ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER,
11671|      2|		ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
11671|      2|		ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
11671|      2|		ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11672|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11673|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11674|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11675|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11676|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_NULL_HANDLER,
11677|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMP_OP_DATA_VAR_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMP_OP_DATA_CV_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11678|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_NULL_HANDLER,
11679|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11680|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11680|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMP_OP_DATA_VAR_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11680|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMP_OP_DATA_CV_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11680|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_NULL_HANDLER,
11681|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER,
11682|      2|		ZEND_NULL_HANDLER,
11682|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER,
11682|      2|		ZEND_NULL_HANDLER,
11682|      2|		ZEND_NULL_HANDLER,
11682|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
11682|      2|		ZEND_NULL_HANDLER,
11682|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
11682|      2|		ZEND_NULL_HANDLER,
11682|      2|		ZEND_NULL_HANDLER,
11682|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMP_OP_DATA_VAR_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMP_OP_DATA_CV_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11683|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_HANDLER,
11684|      2|		ZEND_ASSIGN_STATIC_PROP_REF_SPEC_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11684|      2|		ZEND_NULL_HANDLER,
11685|      2|		ZEND_NULL_HANDLER,
11685|      2|		ZEND_NULL_HANDLER,
11685|      2|		ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
11685|      2|		ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER,
11685|      2|		ZEND_NULL_HANDLER,
11685|      2|		ZEND_NULL_HANDLER,
11685|      2|		ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER,
11685|      2|		ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER,
11685|      2|		ZEND_NULL_HANDLER,
11685|      2|		ZEND_NULL_HANDLER,
11686|      2|		ZEND_NULL_HANDLER,
11686|      2|		ZEND_NULL_HANDLER,
11686|      2|		ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
11686|      2|		ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER,
11686|      2|		ZEND_NULL_HANDLER,
11686|      2|		ZEND_NULL_HANDLER,
11686|      2|		ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER,
11686|      2|		ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER,
11686|      2|		ZEND_NULL_HANDLER,
11686|      2|		ZEND_NULL_HANDLER,
11687|      2|		ZEND_POST_INC_SPEC_VAR_HANDLER,
11687|      2|		ZEND_NULL_HANDLER,
11687|      2|		ZEND_POST_INC_SPEC_CV_HANDLER,
11687|      2|		ZEND_NULL_HANDLER,
11687|      2|		ZEND_NULL_HANDLER,
11687|      2|		ZEND_POST_DEC_SPEC_VAR_HANDLER,
11687|      2|		ZEND_NULL_HANDLER,
11687|      2|		ZEND_POST_DEC_SPEC_CV_HANDLER,
11687|      2|		ZEND_PRE_INC_STATIC_PROP_SPEC_HANDLER,
11687|      2|		ZEND_POST_INC_STATIC_PROP_SPEC_HANDLER,
11688|      2|		ZEND_JMP_SPEC_HANDLER,
11688|      2|		ZEND_JMPZ_SPEC_CONST_HANDLER,
11688|      2|		ZEND_JMPZ_SPEC_TMP_HANDLER,
11688|      2|		ZEND_NULL_HANDLER,
11688|      2|		ZEND_NULL_HANDLER,
11688|      2|		ZEND_JMPZ_SPEC_CV_HANDLER,
11688|      2|		ZEND_JMPNZ_SPEC_CONST_HANDLER,
11688|      2|		ZEND_JMPNZ_SPEC_TMP_HANDLER,
11688|      2|		ZEND_NULL_HANDLER,
11688|      2|		ZEND_NULL_HANDLER,
11689|      2|		ZEND_JMPNZ_SPEC_CV_HANDLER,
11689|      2|		ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
11689|      2|		ZEND_JMPZ_EX_SPEC_TMP_HANDLER,
11689|      2|		ZEND_NULL_HANDLER,
11689|      2|		ZEND_NULL_HANDLER,
11689|      2|		ZEND_JMPZ_EX_SPEC_CV_HANDLER,
11689|      2|		ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
11689|      2|		ZEND_JMPNZ_EX_SPEC_TMP_HANDLER,
11689|      2|		ZEND_NULL_HANDLER,
11689|      2|		ZEND_NULL_HANDLER,
11690|      2|		ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
11690|      2|		ZEND_CASE_SPEC_TMP_CONST_HANDLER,
11690|      2|		ZEND_CASE_SPEC_TMP_TMP_HANDLER,
11690|      2|		ZEND_NULL_HANDLER,
11690|      2|		ZEND_NULL_HANDLER,
11690|      2|		ZEND_CASE_SPEC_TMP_CV_HANDLER,
11690|      2|		ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER,
11690|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST_HANDLER,
11690|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST_HANDLER,
11690|      2|		ZEND_NULL_HANDLER,
11691|      2|		ZEND_NULL_HANDLER,
11691|      2|		ZEND_NULL_HANDLER,
11691|      2|		ZEND_NULL_HANDLER,
11691|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_HANDLER,
11691|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_QUICK_HANDLER,
11691|      2|		ZEND_NULL_HANDLER,
11691|      2|		ZEND_NULL_HANDLER,
11691|      2|		ZEND_CAST_SPEC_CONST_HANDLER,
11691|      2|		ZEND_CAST_SPEC_TMP_HANDLER,
11691|      2|		ZEND_NULL_HANDLER,
11692|      2|		ZEND_NULL_HANDLER,
11692|      2|		ZEND_CAST_SPEC_CV_HANDLER,
11692|      2|		ZEND_BOOL_SPEC_CONST_HANDLER,
11692|      2|		ZEND_BOOL_SPEC_TMP_HANDLER,
11692|      2|		ZEND_NULL_HANDLER,
11692|      2|		ZEND_NULL_HANDLER,
11692|      2|		ZEND_BOOL_SPEC_CV_HANDLER,
11692|      2|		ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER,
11692|      2|		ZEND_FAST_CONCAT_SPEC_CONST_TMP_HANDLER,
11692|      2|		ZEND_NULL_HANDLER,
11693|      2|		ZEND_NULL_HANDLER,
11693|      2|		ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER,
11693|      2|		ZEND_FAST_CONCAT_SPEC_TMP_CONST_HANDLER,
11693|      2|		ZEND_FAST_CONCAT_SPEC_TMP_TMP_HANDLER,
11693|      2|		ZEND_NULL_HANDLER,
11693|      2|		ZEND_NULL_HANDLER,
11693|      2|		ZEND_FAST_CONCAT_SPEC_TMP_CV_HANDLER,
11693|      2|		ZEND_NULL_HANDLER,
11693|      2|		ZEND_NULL_HANDLER,
11693|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11694|      2|		ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER,
11694|      2|		ZEND_FAST_CONCAT_SPEC_CV_TMP_HANDLER,
11694|      2|		ZEND_NULL_HANDLER,
11695|      2|		ZEND_NULL_HANDLER,
11695|      2|		ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER,
11695|      2|		ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER,
11695|      2|		ZEND_ROPE_INIT_SPEC_UNUSED_TMP_HANDLER,
11695|      2|		ZEND_NULL_HANDLER,
11695|      2|		ZEND_NULL_HANDLER,
11695|      2|		ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER,
11695|      2|		ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER,
11695|      2|		ZEND_ROPE_ADD_SPEC_TMP_TMP_HANDLER,
11695|      2|		ZEND_NULL_HANDLER,
11696|      2|		ZEND_NULL_HANDLER,
11696|      2|		ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER,
11696|      2|		ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER,
11696|      2|		ZEND_ROPE_END_SPEC_TMP_TMP_HANDLER,
11696|      2|		ZEND_NULL_HANDLER,
11696|      2|		ZEND_NULL_HANDLER,
11696|      2|		ZEND_ROPE_END_SPEC_TMP_CV_HANDLER,
11696|      2|		ZEND_BEGIN_SILENCE_SPEC_HANDLER,
11696|      2|		ZEND_END_SILENCE_SPEC_TMP_HANDLER,
11696|      2|		ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
11697|      2|		ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER,
11697|      2|		ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER,
11697|      2|		ZEND_DO_FCALL_SPEC_OBSERVER_HANDLER,
11697|      2|		ZEND_DO_FCALL_SPEC_OBSERVER_HANDLER,
11697|      2|		ZEND_INIT_FCALL_SPEC_CONST_HANDLER,
11697|      2|		ZEND_RETURN_SPEC_CONST_HANDLER,
11697|      2|		ZEND_RETURN_SPEC_OBSERVER_HANDLER,
11697|      2|		ZEND_RETURN_SPEC_TMP_HANDLER,
11697|      2|		ZEND_RETURN_SPEC_OBSERVER_HANDLER,
11697|      2|		ZEND_NULL_HANDLER,
11698|      2|		ZEND_NULL_HANDLER,
11698|      2|		ZEND_NULL_HANDLER,
11698|      2|		ZEND_NULL_HANDLER,
11698|      2|		ZEND_RETURN_SPEC_CV_HANDLER,
11698|      2|		ZEND_RETURN_SPEC_OBSERVER_HANDLER,
11698|      2|		ZEND_RECV_SPEC_UNUSED_HANDLER,
11698|      2|		ZEND_RECV_INIT_SPEC_CONST_HANDLER,
11698|      2|		ZEND_SEND_VAL_SPEC_CONST_CONST_HANDLER,
11698|      2|		ZEND_NULL_HANDLER,
11698|      2|		ZEND_NULL_HANDLER,
11699|      2|		ZEND_SEND_VAL_SPEC_CONST_UNUSED_HANDLER,
11699|      2|		ZEND_NULL_HANDLER,
11699|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_CONST_HANDLER,
11699|      2|		ZEND_NULL_HANDLER,
11699|      2|		ZEND_NULL_HANDLER,
11699|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED_HANDLER,
11699|      2|		ZEND_NULL_HANDLER,
11699|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_CONST_HANDLER,
11699|      2|		ZEND_NULL_HANDLER,
11699|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11700|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11701|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11702|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_CONST_HANDLER,
11703|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_CONST_HANDLER,
11703|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_NULL_HANDLER,
11703|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_HANDLER,
11703|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_QUICK_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11704|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_SEND_VAR_EX_SPEC_CV_CONST_HANDLER,
11705|      2|		ZEND_SEND_VAR_EX_SPEC_CV_CONST_HANDLER,
11705|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_NULL_HANDLER,
11705|      2|		ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_HANDLER,
11705|      2|		ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_QUICK_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11706|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_SEND_REF_SPEC_VAR_CONST_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_SEND_REF_SPEC_VAR_UNUSED_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11707|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_SEND_REF_SPEC_CV_CONST_HANDLER,
11708|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_SEND_REF_SPEC_CV_UNUSED_HANDLER,
11708|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_NEW_SPEC_CONST_UNUSED_HANDLER,
11708|      2|		ZEND_NULL_HANDLER,
11708|      2|		ZEND_NEW_SPEC_VAR_UNUSED_HANDLER,
11709|      2|		ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER,
11709|      2|		ZEND_NULL_HANDLER,
11709|      2|		ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
11709|      2|		ZEND_FREE_SPEC_TMPVAR_HANDLER,
11709|      2|		ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER,
11709|      2|		ZEND_INIT_ARRAY_SPEC_CONST_TMP_HANDLER,
11709|      2|		ZEND_NULL_HANDLER,
11709|      2|		ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER,
11709|      2|		ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER,
11709|      2|		ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_TMP_TMP_HANDLER,
11710|      2|		ZEND_NULL_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_VAR_TMP_HANDLER,
11710|      2|		ZEND_NULL_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER,
11710|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_CONST_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_TMP_HANDLER,
11711|      2|		ZEND_NULL_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_CV_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_CV_TMP_HANDLER,
11711|      2|		ZEND_NULL_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER,
11711|      2|		ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER,
11711|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER,
11712|      2|		ZEND_NULL_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER,
11712|      2|		ZEND_NULL_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER,
11712|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER,
11713|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER,
11713|      2|		ZEND_NULL_HANDLER,
11713|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER,
11713|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER,
11713|      2|		ZEND_NULL_HANDLER,
11713|      2|		ZEND_NULL_HANDLER,
11713|      2|		ZEND_NULL_HANDLER,
11713|      2|		ZEND_NULL_HANDLER,
11713|      2|		ZEND_NULL_HANDLER,
11713|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER,
11714|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER,
11714|      2|		ZEND_NULL_HANDLER,
11714|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER,
11714|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER,
11714|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
11714|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_HANDLER,
11714|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER,
11714|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_HANDLER,
11714|      2|		ZEND_NULL_HANDLER,
11714|      2|		ZEND_NULL_HANDLER,
11715|      2|		ZEND_NULL_HANDLER,
11715|      2|		ZEND_NULL_HANDLER,
11715|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
11715|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_HANDLER,
11715|      2|		ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER,
11715|      2|		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
11715|      2|		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
11715|      2|		ZEND_NULL_HANDLER,
11715|      2|		ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER,
11715|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_NULL_HANDLER,
11716|      2|		ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER,
11717|      2|		ZEND_UNSET_DIM_SPEC_VAR_TMP_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_NULL_HANDLER,
11717|      2|		ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER,
11718|      2|		ZEND_UNSET_DIM_SPEC_CV_TMP_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11718|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER,
11719|      2|		ZEND_UNSET_OBJ_SPEC_VAR_TMP_HANDLER,
11719|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_NULL_HANDLER,
11719|      2|		ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER,
11719|      2|		ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER,
11720|      2|		ZEND_UNSET_OBJ_SPEC_UNUSED_TMP_HANDLER,
11720|      2|		ZEND_NULL_HANDLER,
11720|      2|		ZEND_NULL_HANDLER,
11720|      2|		ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER,
11720|      2|		ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER,
11720|      2|		ZEND_UNSET_OBJ_SPEC_CV_TMP_HANDLER,
11720|      2|		ZEND_NULL_HANDLER,
11720|      2|		ZEND_NULL_HANDLER,
11720|      2|		ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER,
11720|      2|		ZEND_FE_RESET_R_SPEC_CONST_HANDLER,
11721|      2|		ZEND_FE_RESET_R_SPEC_TMP_HANDLER,
11721|      2|		ZEND_NULL_HANDLER,
11721|      2|		ZEND_NULL_HANDLER,
11721|      2|		ZEND_FE_RESET_R_SPEC_CV_HANDLER,
11721|      2|		ZEND_FE_FETCH_R_SPEC_TMP_HANDLER,
11721|      2|		ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER,
11721|      2|		ZEND_FETCH_R_SPEC_TMP_UNUSED_HANDLER,
11721|      2|		ZEND_NULL_HANDLER,
11721|      2|		ZEND_NULL_HANDLER,
11721|      2|		ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER,
11722|      2|		ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER,
11722|      2|		ZEND_FETCH_DIM_R_SPEC_CONST_TMP_HANDLER,
11722|      2|		ZEND_NULL_HANDLER,
11722|      2|		ZEND_NULL_HANDLER,
11722|      2|		ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER,
11722|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER,
11722|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMP_HANDLER,
11722|      2|		ZEND_NULL_HANDLER,
11722|      2|		ZEND_NULL_HANDLER,
11722|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER,
11723|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER,
11723|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMP_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11723|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11723|      2|		ZEND_NULL_HANDLER,
11724|      2|		ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER,
11724|      2|		ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER,
11724|      2|		ZEND_NULL_HANDLER,
11724|      2|		ZEND_NULL_HANDLER,
11724|      2|		ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER,
11724|      2|		ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER,
11724|      2|		ZEND_FETCH_OBJ_R_SPEC_CONST_TMP_HANDLER,
11724|      2|		ZEND_NULL_HANDLER,
11724|      2|		ZEND_NULL_HANDLER,
11724|      2|		ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER,
11725|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER,
11725|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMP_HANDLER,
11725|      2|		ZEND_NULL_HANDLER,
11725|      2|		ZEND_NULL_HANDLER,
11725|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER,
11725|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER,
11725|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMP_HANDLER,
11725|      2|		ZEND_NULL_HANDLER,
11725|      2|		ZEND_NULL_HANDLER,
11725|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER,
11726|      2|		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER,
11726|      2|		ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER,
11726|      2|		ZEND_NULL_HANDLER,
11726|      2|		ZEND_NULL_HANDLER,
11726|      2|		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER,
11726|      2|		ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER,
11726|      2|		ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER,
11726|      2|		ZEND_NULL_HANDLER,
11726|      2|		ZEND_NULL_HANDLER,
11726|      2|		ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER,
11727|      2|		ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER,
11727|      2|		ZEND_FETCH_W_SPEC_TMP_UNUSED_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11727|      2|		ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11727|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER,
11728|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_TMP_HANDLER,
11728|      2|		ZEND_NULL_HANDLER,
11728|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER,
11728|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER,
11729|      2|		ZEND_NULL_HANDLER,
11729|      2|		ZEND_NULL_HANDLER,
11729|      2|		ZEND_NULL_HANDLER,
11729|      2|		ZEND_NULL_HANDLER,
11729|      2|		ZEND_NULL_HANDLER,
11729|      2|		ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER,
11729|      2|		ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER,
11729|      2|		ZEND_NULL_HANDLER,
11729|      2|		ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER,
11729|      2|		ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11730|      2|		ZEND_NULL_HANDLER,
11731|      2|		ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER,
11731|      2|		ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER,
11731|      2|		ZEND_NULL_HANDLER,
11731|      2|		ZEND_NULL_HANDLER,
11731|      2|		ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER,
11731|      2|		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER,
11731|      2|		ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER,
11731|      2|		ZEND_NULL_HANDLER,
11731|      2|		ZEND_NULL_HANDLER,
11731|      2|		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER,
11732|      2|		ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER,
11732|      2|		ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER,
11732|      2|		ZEND_NULL_HANDLER,
11732|      2|		ZEND_NULL_HANDLER,
11732|      2|		ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER,
11732|      2|		ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER,
11732|      2|		ZEND_FETCH_RW_SPEC_TMP_UNUSED_HANDLER,
11732|      2|		ZEND_NULL_HANDLER,
11732|      2|		ZEND_NULL_HANDLER,
11732|      2|		ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11733|      2|		ZEND_NULL_HANDLER,
11734|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER,
11734|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_HANDLER,
11734|      2|		ZEND_NULL_HANDLER,
11734|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER,
11734|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER,
11734|      2|		ZEND_NULL_HANDLER,
11734|      2|		ZEND_NULL_HANDLER,
11734|      2|		ZEND_NULL_HANDLER,
11734|      2|		ZEND_NULL_HANDLER,
11734|      2|		ZEND_NULL_HANDLER,
11735|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER,
11735|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_TMP_HANDLER,
11735|      2|		ZEND_NULL_HANDLER,
11735|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER,
11735|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER,
11735|      2|		ZEND_NULL_HANDLER,
11735|      2|		ZEND_NULL_HANDLER,
11735|      2|		ZEND_NULL_HANDLER,
11735|      2|		ZEND_NULL_HANDLER,
11735|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER,
11736|      2|		ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_NULL_HANDLER,
11736|      2|		ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER,
11737|      2|		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER,
11737|      2|		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER,
11737|      2|		ZEND_NULL_HANDLER,
11737|      2|		ZEND_NULL_HANDLER,
11737|      2|		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER,
11737|      2|		ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER,
11737|      2|		ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER,
11737|      2|		ZEND_NULL_HANDLER,
11737|      2|		ZEND_NULL_HANDLER,
11737|      2|		ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER,
11738|      2|		ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER,
11738|      2|		ZEND_FETCH_IS_SPEC_TMP_UNUSED_HANDLER,
11738|      2|		ZEND_NULL_HANDLER,
11738|      2|		ZEND_NULL_HANDLER,
11738|      2|		ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER,
11738|      2|		ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER,
11738|      2|		ZEND_FETCH_DIM_IS_SPEC_CONST_TMP_HANDLER,
11738|      2|		ZEND_NULL_HANDLER,
11738|      2|		ZEND_NULL_HANDLER,
11738|      2|		ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER,
11739|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER,
11739|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMP_HANDLER,
11739|      2|		ZEND_NULL_HANDLER,
11739|      2|		ZEND_NULL_HANDLER,
11739|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER,
11739|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER,
11739|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMP_HANDLER,
11739|      2|		ZEND_NULL_HANDLER,
11739|      2|		ZEND_NULL_HANDLER,
11739|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER,
11740|      2|		ZEND_FETCH_DIM_IS_SPEC_CV_TMP_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_NULL_HANDLER,
11740|      2|		ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER,
11741|      2|		ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER,
11741|      2|		ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_HANDLER,
11741|      2|		ZEND_NULL_HANDLER,
11741|      2|		ZEND_NULL_HANDLER,
11741|      2|		ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER,
11741|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER,
11741|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMP_HANDLER,
11741|      2|		ZEND_NULL_HANDLER,
11741|      2|		ZEND_NULL_HANDLER,
11741|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER,
11742|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER,
11742|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMP_HANDLER,
11742|      2|		ZEND_NULL_HANDLER,
11742|      2|		ZEND_NULL_HANDLER,
11742|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER,
11742|      2|		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER,
11742|      2|		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_HANDLER,
11742|      2|		ZEND_NULL_HANDLER,
11742|      2|		ZEND_NULL_HANDLER,
11742|      2|		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER,
11743|      2|		ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER,
11743|      2|		ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_HANDLER,
11743|      2|		ZEND_NULL_HANDLER,
11743|      2|		ZEND_NULL_HANDLER,
11743|      2|		ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER,
11743|      2|		ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
11743|      2|		ZEND_FETCH_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER,
11743|      2|		ZEND_NULL_HANDLER,
11743|      2|		ZEND_NULL_HANDLER,
11743|      2|		ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMP_HANDLER,
11744|      2|		ZEND_NULL_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMP_HANDLER,
11744|      2|		ZEND_NULL_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER,
11744|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER,
11745|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
11745|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_HANDLER,
11745|      2|		ZEND_NULL_HANDLER,
11745|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER,
11745|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER,
11745|      2|		ZEND_NULL_HANDLER,
11745|      2|		ZEND_NULL_HANDLER,
11745|      2|		ZEND_NULL_HANDLER,
11745|      2|		ZEND_NULL_HANDLER,
11745|      2|		ZEND_NULL_HANDLER,
11746|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER,
11746|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER,
11746|      2|		ZEND_NULL_HANDLER,
11746|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
11746|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER,
11746|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
11746|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMP_HANDLER,
11746|      2|		ZEND_NULL_HANDLER,
11746|      2|		ZEND_NULL_HANDLER,
11746|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER,
11747|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER,
11747|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMP_HANDLER,
11747|      2|		ZEND_NULL_HANDLER,
11747|      2|		ZEND_NULL_HANDLER,
11747|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER,
11747|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
11747|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_HANDLER,
11747|      2|		ZEND_NULL_HANDLER,
11747|      2|		ZEND_NULL_HANDLER,
11747|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER,
11748|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER,
11748|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER,
11748|      2|		ZEND_NULL_HANDLER,
11748|      2|		ZEND_NULL_HANDLER,
11748|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER,
11748|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER,
11748|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER,
11748|      2|		ZEND_NULL_HANDLER,
11748|      2|		ZEND_NULL_HANDLER,
11748|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER,
11749|      2|		ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER,
11749|      2|		ZEND_FETCH_UNSET_SPEC_TMP_UNUSED_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11749|      2|		ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11749|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER,
11750|      2|		ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_NULL_HANDLER,
11750|      2|		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER,
11751|      2|		ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_NULL_HANDLER,
11751|      2|		ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11752|      2|		ZEND_NULL_HANDLER,
11753|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER,
11753|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_HANDLER,
11753|      2|		ZEND_NULL_HANDLER,
11753|      2|		ZEND_NULL_HANDLER,
11753|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER,
11753|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER,
11753|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER,
11753|      2|		ZEND_NULL_HANDLER,
11753|      2|		ZEND_NULL_HANDLER,
11753|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER,
11754|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER,
11754|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER,
11754|      2|		ZEND_NULL_HANDLER,
11754|      2|		ZEND_NULL_HANDLER,
11754|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER,
11754|      2|		ZEND_FETCH_LIST_R_SPEC_CONST_CONST_HANDLER,
11754|      2|		ZEND_FETCH_LIST_R_SPEC_CONST_TMP_HANDLER,
11754|      2|		ZEND_NULL_HANDLER,
11754|      2|		ZEND_NULL_HANDLER,
11754|      2|		ZEND_FETCH_LIST_R_SPEC_CONST_CV_HANDLER,
11755|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER,
11755|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_HANDLER,
11755|      2|		ZEND_NULL_HANDLER,
11755|      2|		ZEND_NULL_HANDLER,
11755|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER,
11755|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER,
11755|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_HANDLER,
11755|      2|		ZEND_NULL_HANDLER,
11755|      2|		ZEND_NULL_HANDLER,
11755|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER,
11756|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_NULL_HANDLER,
11756|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER,
11757|      2|		ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
11757|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER,
11757|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER,
11757|      2|		ZEND_NULL_HANDLER,
11757|      2|		ZEND_NULL_HANDLER,
11757|      2|		ZEND_NULL_HANDLER,
11757|      2|		ZEND_NULL_HANDLER,
11757|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_HANDLER,
11757|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_QUICK_HANDLER,
11757|      2|		ZEND_NULL_HANDLER,
11758|      2|		ZEND_NULL_HANDLER,
11758|      2|		ZEND_EXT_STMT_SPEC_HANDLER,
11758|      2|		ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
11758|      2|		ZEND_EXT_FCALL_END_SPEC_HANDLER,
11758|      2|		ZEND_EXT_NOP_SPEC_HANDLER,
11758|      2|		ZEND_TICKS_SPEC_HANDLER,
11758|      2|		ZEND_SEND_VAR_NO_REF_SPEC_VAR_CONST_HANDLER,
11758|      2|		ZEND_NULL_HANDLER,
11758|      2|		ZEND_NULL_HANDLER,
11758|      2|		ZEND_SEND_VAR_NO_REF_SPEC_VAR_UNUSED_HANDLER,
11759|      2|		ZEND_NULL_HANDLER,
11759|      2|		ZEND_CATCH_SPEC_CONST_HANDLER,
11759|      2|		ZEND_THROW_SPEC_CONST_HANDLER,
11759|      2|		ZEND_THROW_SPEC_TMP_HANDLER,
11759|      2|		ZEND_NULL_HANDLER,
11759|      2|		ZEND_NULL_HANDLER,
11759|      2|		ZEND_THROW_SPEC_CV_HANDLER,
11759|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_CONST_HANDLER,
11759|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_TMP_HANDLER,
11759|      2|		ZEND_NULL_HANDLER,
11760|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
11760|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_CV_HANDLER,
11760|      2|		ZEND_CLONE_SPEC_CONST_HANDLER,
11760|      2|		ZEND_CLONE_SPEC_TMP_HANDLER,
11760|      2|		ZEND_NULL_HANDLER,
11760|      2|		ZEND_CLONE_SPEC_UNUSED_HANDLER,
11760|      2|		ZEND_CLONE_SPEC_CV_HANDLER,
11760|      2|		ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER,
11760|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_HANDLER,
11760|      2|		ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER,
11761|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_HANDLER,
11761|      2|		ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER,
11761|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_HANDLER,
11761|      2|		ZEND_NULL_HANDLER,
11761|      2|		ZEND_NULL_HANDLER,
11761|      2|		ZEND_RETURN_BY_REF_SPEC_CV_HANDLER,
11761|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_HANDLER,
11761|      2|		ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
11761|      2|		ZEND_INIT_METHOD_CALL_SPEC_CONST_TMP_HANDLER,
11761|      2|		ZEND_NULL_HANDLER,
11762|      2|		ZEND_NULL_HANDLER,
11762|      2|		ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER,
11762|      2|		ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER,
11762|      2|		ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER,
11762|      2|		ZEND_NULL_HANDLER,
11762|      2|		ZEND_NULL_HANDLER,
11762|      2|		ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER,
11762|      2|		ZEND_NULL_HANDLER,
11762|      2|		ZEND_NULL_HANDLER,
11762|      2|		ZEND_NULL_HANDLER,
11763|      2|		ZEND_NULL_HANDLER,
11763|      2|		ZEND_NULL_HANDLER,
11763|      2|		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
11763|      2|		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER,
11763|      2|		ZEND_NULL_HANDLER,
11763|      2|		ZEND_NULL_HANDLER,
11763|      2|		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
11763|      2|		ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER,
11763|      2|		ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER,
11763|      2|		ZEND_NULL_HANDLER,
11764|      2|		ZEND_NULL_HANDLER,
11764|      2|		ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER,
11764|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
11764|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER,
11764|      2|		ZEND_NULL_HANDLER,
11764|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER,
11764|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER,
11764|      2|		ZEND_NULL_HANDLER,
11764|      2|		ZEND_NULL_HANDLER,
11764|      2|		ZEND_NULL_HANDLER,
11765|      2|		ZEND_NULL_HANDLER,
11765|      2|		ZEND_NULL_HANDLER,
11765|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER,
11765|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER,
11765|      2|		ZEND_NULL_HANDLER,
11765|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER,
11765|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER,
11765|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
11765|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER,
11765|      2|		ZEND_NULL_HANDLER,
11766|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER,
11766|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
11766|      2|		ZEND_NULL_HANDLER,
11766|      2|		ZEND_NULL_HANDLER,
11766|      2|		ZEND_NULL_HANDLER,
11766|      2|		ZEND_NULL_HANDLER,
11766|      2|		ZEND_NULL_HANDLER,
11766|      2|		ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER,
11766|      2|		ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_UNUSED_HANDLER,
11766|      2|		ZEND_NULL_HANDLER,
11767|      2|		ZEND_NULL_HANDLER,
11767|      2|		ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER,
11767|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER,
11767|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMP_HANDLER,
11767|      2|		ZEND_NULL_HANDLER,
11767|      2|		ZEND_NULL_HANDLER,
11767|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER,
11767|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CONST_HANDLER,
11767|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_TMP_HANDLER,
11767|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CV_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11768|      2|		ZEND_NULL_HANDLER,
11769|      2|		ZEND_NULL_HANDLER,
11769|      2|		ZEND_NULL_HANDLER,
11769|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER,
11769|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMP_HANDLER,
11769|      2|		ZEND_NULL_HANDLER,
11769|      2|		ZEND_NULL_HANDLER,
11769|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER,
11769|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_CONST_HANDLER,
11769|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_CONST_HANDLER,
11769|      2|		ZEND_NULL_HANDLER,
11770|      2|		ZEND_NULL_HANDLER,
11770|      2|		ZEND_NULL_HANDLER,
11770|      2|		ZEND_NULL_HANDLER,
11770|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_HANDLER,
11770|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_QUICK_HANDLER,
11770|      2|		ZEND_NULL_HANDLER,
11770|      2|		ZEND_NULL_HANDLER,
11770|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_CONST_HANDLER,
11770|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_CONST_HANDLER,
11770|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_HANDLER,
11771|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_QUICK_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11771|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11772|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11773|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11774|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_SEND_VAR_SPEC_VAR_CONST_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11775|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_SEND_VAR_SPEC_VAR_UNUSED_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_SEND_VAR_SPEC_CV_CONST_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11776|      2|		ZEND_NULL_HANDLER,
11777|      2|		ZEND_SEND_VAR_SPEC_CV_UNUSED_HANDLER,
11777|      2|		ZEND_NULL_HANDLER,
11777|      2|		ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER,
11777|      2|		ZEND_INIT_USER_CALL_SPEC_CONST_TMP_HANDLER,
11777|      2|		ZEND_NULL_HANDLER,
11777|      2|		ZEND_NULL_HANDLER,
11777|      2|		ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER,
11777|      2|		ZEND_SEND_ARRAY_SPEC_HANDLER,
11777|      2|		ZEND_SEND_USER_SPEC_CONST_HANDLER,
11777|      2|		ZEND_SEND_USER_SPEC_TMP_HANDLER,
11778|      2|		ZEND_NULL_HANDLER,
11778|      2|		ZEND_NULL_HANDLER,
11778|      2|		ZEND_SEND_USER_SPEC_CV_HANDLER,
11778|      2|		ZEND_STRLEN_SPEC_CONST_HANDLER,
11778|      2|		ZEND_STRLEN_SPEC_TMP_HANDLER,
11778|      2|		ZEND_NULL_HANDLER,
11778|      2|		ZEND_NULL_HANDLER,
11778|      2|		ZEND_STRLEN_SPEC_CV_HANDLER,
11778|      2|		ZEND_DEFINED_SPEC_CONST_HANDLER,
11778|      2|		ZEND_TYPE_CHECK_SPEC_CONST_HANDLER,
11779|      2|		ZEND_TYPE_CHECK_SPEC_TMP_HANDLER,
11779|      2|		ZEND_NULL_HANDLER,
11779|      2|		ZEND_NULL_HANDLER,
11779|      2|		ZEND_TYPE_CHECK_SPEC_CV_HANDLER,
11779|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER,
11779|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER,
11779|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER,
11779|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER,
11779|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER,
11779|      2|		ZEND_FE_RESET_RW_SPEC_CONST_HANDLER,
11780|      2|		ZEND_FE_RESET_RW_SPEC_TMP_HANDLER,
11780|      2|		ZEND_FE_RESET_RW_SPEC_VAR_HANDLER,
11780|      2|		ZEND_NULL_HANDLER,
11780|      2|		ZEND_FE_RESET_RW_SPEC_CV_HANDLER,
11780|      2|		ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER,
11780|      2|		ZEND_FE_FREE_SPEC_TMPVAR_HANDLER,
11780|      2|		ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER,
11780|      2|		ZEND_INIT_DYNAMIC_CALL_SPEC_TMP_HANDLER,
11780|      2|		ZEND_NULL_HANDLER,
11780|      2|		ZEND_NULL_HANDLER,
11781|      2|		ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER,
11781|      2|		ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER,
11781|      2|		ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER,
11781|      2|		ZEND_DO_ICALL_SPEC_OBSERVER_HANDLER,
11781|      2|		ZEND_DO_ICALL_SPEC_OBSERVER_HANDLER,
11781|      2|		ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER,
11781|      2|		ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER,
11781|      2|		ZEND_DO_UCALL_SPEC_OBSERVER_HANDLER,
11781|      2|		ZEND_DO_UCALL_SPEC_OBSERVER_HANDLER,
11781|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER,
11782|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER,
11782|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER_HANDLER,
11782|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11782|      2|		ZEND_NULL_HANDLER,
11783|      2|		ZEND_NULL_HANDLER,
11783|      2|		ZEND_NULL_HANDLER,
11783|      2|		ZEND_NULL_HANDLER,
11783|      2|		ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER,
11783|      2|		ZEND_PRE_INC_OBJ_SPEC_VAR_TMP_HANDLER,
11783|      2|		ZEND_NULL_HANDLER,
11783|      2|		ZEND_NULL_HANDLER,
11783|      2|		ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER,
11783|      2|		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
11783|      2|		ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMP_HANDLER,
11784|      2|		ZEND_NULL_HANDLER,
11784|      2|		ZEND_NULL_HANDLER,
11784|      2|		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
11784|      2|		ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER,
11784|      2|		ZEND_PRE_INC_OBJ_SPEC_CV_TMP_HANDLER,
11784|      2|		ZEND_NULL_HANDLER,
11784|      2|		ZEND_NULL_HANDLER,
11784|      2|		ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER,
11784|      2|		ZEND_NULL_HANDLER,
11784|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_NULL_HANDLER,
11785|      2|		ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER,
11785|      2|		ZEND_POST_INC_OBJ_SPEC_VAR_TMP_HANDLER,
11786|      2|		ZEND_NULL_HANDLER,
11786|      2|		ZEND_NULL_HANDLER,
11786|      2|		ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER,
11786|      2|		ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
11786|      2|		ZEND_POST_INC_OBJ_SPEC_UNUSED_TMP_HANDLER,
11786|      2|		ZEND_NULL_HANDLER,
11786|      2|		ZEND_NULL_HANDLER,
11786|      2|		ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
11786|      2|		ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER,
11786|      2|		ZEND_POST_INC_OBJ_SPEC_CV_TMP_HANDLER,
11787|      2|		ZEND_NULL_HANDLER,
11787|      2|		ZEND_NULL_HANDLER,
11787|      2|		ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER,
11787|      2|		ZEND_ECHO_SPEC_CONST_HANDLER,
11787|      2|		ZEND_ECHO_SPEC_TMP_HANDLER,
11787|      2|		ZEND_NULL_HANDLER,
11787|      2|		ZEND_NULL_HANDLER,
11787|      2|		ZEND_ECHO_SPEC_CV_HANDLER,
11787|      2|		ZEND_NULL_HANDLER,
11787|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_INSTANCEOF_SPEC_TMP_CONST_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_INSTANCEOF_SPEC_TMP_VAR_HANDLER,
11788|      2|		ZEND_INSTANCEOF_SPEC_TMP_UNUSED_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11788|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_NULL_HANDLER,
11789|      2|		ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER,
11790|      2|		ZEND_NULL_HANDLER,
11790|      2|		ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER,
11790|      2|		ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER,
11790|      2|		ZEND_NULL_HANDLER,
11790|      2|		ZEND_GENERATOR_CREATE_SPEC_HANDLER,
11790|      2|		ZEND_NULL_HANDLER,
11790|      2|		ZEND_NULL_HANDLER,
11790|      2|		ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER,
11790|      2|		ZEND_NULL_HANDLER,
11790|      2|		ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER,
11791|      2|		ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
11791|      2|		ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_HANDLER,
11791|      2|		ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER,
11791|      2|		ZEND_DECLARE_CLASS_SPEC_CONST_HANDLER,
11791|      2|		ZEND_DECLARE_CLASS_DELAYED_SPEC_CONST_CONST_HANDLER,
11791|      2|		ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER,
11791|      2|		ZEND_ADD_ARRAY_UNPACK_SPEC_HANDLER,
11791|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER,
11791|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMP_HANDLER,
11791|      2|		ZEND_NULL_HANDLER,
11792|      2|		ZEND_NULL_HANDLER,
11792|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER,
11792|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CONST_HANDLER,
11792|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_TMP_HANDLER,
11792|      2|		ZEND_NULL_HANDLER,
11792|      2|		ZEND_NULL_HANDLER,
11792|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CV_HANDLER,
11792|      2|		ZEND_NULL_HANDLER,
11792|      2|		ZEND_NULL_HANDLER,
11792|      2|		ZEND_NULL_HANDLER,
11793|      2|		ZEND_NULL_HANDLER,
11793|      2|		ZEND_NULL_HANDLER,
11793|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER,
11793|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMP_HANDLER,
11793|      2|		ZEND_NULL_HANDLER,
11793|      2|		ZEND_NULL_HANDLER,
11793|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER,
11793|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER,
11793|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMP_HANDLER,
11793|      2|		ZEND_NULL_HANDLER,
11794|      2|		ZEND_NULL_HANDLER,
11794|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER,
11794|      2|		ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
11794|      2|		ZEND_USER_OPCODE_SPEC_HANDLER,
11794|      2|		ZEND_ASSERT_CHECK_SPEC_HANDLER,
11794|      2|		ZEND_JMP_SET_SPEC_CONST_HANDLER,
11794|      2|		ZEND_JMP_SET_SPEC_TMP_HANDLER,
11794|      2|		ZEND_NULL_HANDLER,
11794|      2|		ZEND_NULL_HANDLER,
11794|      2|		ZEND_JMP_SET_SPEC_CV_HANDLER,
11795|      2|		ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER,
11795|      2|		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_HANDLER,
11795|      2|		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_HANDLER,
11795|      2|		ZEND_FETCH_LIST_W_SPEC_VAR_CONST_HANDLER,
11795|      2|		ZEND_FETCH_LIST_W_SPEC_VAR_TMP_HANDLER,
11795|      2|		ZEND_NULL_HANDLER,
11795|      2|		ZEND_NULL_HANDLER,
11795|      2|		ZEND_FETCH_LIST_W_SPEC_VAR_CV_HANDLER,
11795|      2|		ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER,
11795|      2|		ZEND_NULL_HANDLER,
11796|      2|		ZEND_FETCH_CLASS_NAME_SPEC_TMP_HANDLER,
11796|      2|		ZEND_NULL_HANDLER,
11796|      2|		ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_HANDLER,
11796|      2|		ZEND_FETCH_CLASS_NAME_SPEC_CV_HANDLER,
11796|      2|		ZEND_CALL_TRAMPOLINE_SPEC_HANDLER,
11796|      2|		ZEND_CALL_TRAMPOLINE_SPEC_OBSERVER_HANDLER,
11796|      2|		ZEND_DISCARD_EXCEPTION_SPEC_HANDLER,
11796|      2|		ZEND_YIELD_SPEC_CONST_CONST_HANDLER,
11796|      2|		ZEND_YIELD_SPEC_CONST_TMP_HANDLER,
11796|      2|		ZEND_NULL_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_CONST_CV_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_TMP_CONST_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_TMP_TMP_HANDLER,
11797|      2|		ZEND_NULL_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_TMP_CV_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_VAR_CONST_HANDLER,
11797|      2|		ZEND_YIELD_SPEC_VAR_TMP_HANDLER,
11797|      2|		ZEND_NULL_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_VAR_CV_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER,
11798|      2|		ZEND_NULL_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_UNUSED_CV_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_CV_CONST_HANDLER,
11798|      2|		ZEND_YIELD_SPEC_CV_TMP_HANDLER,
11798|      2|		ZEND_NULL_HANDLER,
11799|      2|		ZEND_YIELD_SPEC_CV_UNUSED_HANDLER,
11799|      2|		ZEND_YIELD_SPEC_CV_CV_HANDLER,
11799|      2|		ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER,
11799|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_HANDLER,
11799|      2|		ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER,
11799|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_HANDLER,
11799|      2|		ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER,
11799|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_HANDLER,
11799|      2|		ZEND_NULL_HANDLER,
11799|      2|		ZEND_NULL_HANDLER,
11800|      2|		ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER,
11800|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_HANDLER,
11800|      2|		ZEND_FAST_CALL_SPEC_HANDLER,
11800|      2|		ZEND_FAST_RET_SPEC_HANDLER,
11800|      2|		ZEND_RECV_VARIADIC_SPEC_UNUSED_HANDLER,
11800|      2|		ZEND_SEND_UNPACK_SPEC_HANDLER,
11800|      2|		ZEND_YIELD_FROM_SPEC_CONST_HANDLER,
11800|      2|		ZEND_YIELD_FROM_SPEC_TMP_HANDLER,
11800|      2|		ZEND_NULL_HANDLER,
11800|      2|		ZEND_NULL_HANDLER,
11801|      2|		ZEND_YIELD_FROM_SPEC_CV_HANDLER,
11801|      2|		ZEND_COPY_TMP_SPEC_TMPVAR_UNUSED_HANDLER,
11801|      2|		ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER,
11801|      2|		ZEND_COALESCE_SPEC_CONST_HANDLER,
11801|      2|		ZEND_COALESCE_SPEC_TMP_HANDLER,
11801|      2|		ZEND_NULL_HANDLER,
11801|      2|		ZEND_NULL_HANDLER,
11801|      2|		ZEND_COALESCE_SPEC_CV_HANDLER,
11801|      2|		ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER,
11801|      2|		ZEND_SPACESHIP_SPEC_CONST_TMP_HANDLER,
11802|      2|		ZEND_NULL_HANDLER,
11802|      2|		ZEND_NULL_HANDLER,
11802|      2|		ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER,
11802|      2|		ZEND_SPACESHIP_SPEC_TMP_CONST_HANDLER,
11802|      2|		ZEND_SPACESHIP_SPEC_TMP_TMP_HANDLER,
11802|      2|		ZEND_NULL_HANDLER,
11802|      2|		ZEND_NULL_HANDLER,
11802|      2|		ZEND_SPACESHIP_SPEC_TMP_CV_HANDLER,
11802|      2|		ZEND_NULL_HANDLER,
11802|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_NULL_HANDLER,
11803|      2|		ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER,
11803|      2|		ZEND_SPACESHIP_SPEC_CV_TMP_HANDLER,
11804|      2|		ZEND_NULL_HANDLER,
11804|      2|		ZEND_NULL_HANDLER,
11804|      2|		ZEND_SPACESHIP_SPEC_CV_CV_HANDLER,
11804|      2|		ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
11804|      2|		ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER,
11804|      2|		ZEND_NULL_HANDLER,
11804|      2|		ZEND_NULL_HANDLER,
11804|      2|		ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
11804|      2|		ZEND_NULL_HANDLER,
11804|      2|		ZEND_FETCH_STATIC_PROP_R_SPEC_HANDLER,
11805|      2|		ZEND_FETCH_STATIC_PROP_W_SPEC_HANDLER,
11805|      2|		ZEND_FETCH_STATIC_PROP_RW_SPEC_HANDLER,
11805|      2|		ZEND_FETCH_STATIC_PROP_IS_SPEC_HANDLER,
11805|      2|		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_HANDLER,
11805|      2|		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_HANDLER,
11805|      2|		ZEND_UNSET_STATIC_PROP_SPEC_HANDLER,
11805|      2|		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_HANDLER,
11805|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER,
11805|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_TMPVARCV_HANDLER,
11805|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_TMPVARCV_HANDLER,
11806|      2|		ZEND_NULL_HANDLER,
11806|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_TMPVARCV_HANDLER,
11806|      2|		ZEND_NULL_HANDLER,
11806|      2|		ZEND_NULL_HANDLER,
11806|      2|		ZEND_NULL_HANDLER,
11806|      2|		ZEND_NULL_HANDLER,
11806|      2|		ZEND_NULL_HANDLER,
11806|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER,
11806|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_TMPVARCV_HANDLER,
11806|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_TMPVARCV_HANDLER,
11807|      2|		ZEND_NULL_HANDLER,
11807|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_TMPVARCV_HANDLER,
11807|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
11807|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_TMPVARCV_HANDLER,
11807|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_TMPVARCV_HANDLER,
11807|      2|		ZEND_NULL_HANDLER,
11807|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_TMPVARCV_HANDLER,
11807|      2|		ZEND_NULL_HANDLER,
11807|      2|		ZEND_NULL_HANDLER,
11807|      2|		ZEND_NULL_HANDLER,
11808|      2|		ZEND_NULL_HANDLER,
11808|      2|		ZEND_NULL_HANDLER,
11808|      2|		ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER,
11808|      2|		ZEND_BIND_STATIC_SPEC_CV_HANDLER,
11808|      2|		ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER,
11808|      2|		ZEND_SEND_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
11808|      2|		ZEND_NULL_HANDLER,
11808|      2|		ZEND_NULL_HANDLER,
11808|      2|		ZEND_SEND_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER,
11808|      2|		ZEND_NULL_HANDLER,
11809|      2|		ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER,
11809|      2|		ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER,
11809|      2|		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11809|      2|		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11809|      2|		ZEND_NULL_HANDLER,
11809|      2|		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11809|      2|		ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER,
11809|      2|		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER,
11809|      2|		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER,
11809|      2|		ZEND_NULL_HANDLER,
11810|      2|		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER,
11810|      2|		ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER,
11810|      2|		ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER,
11810|      2|		ZEND_NULL_HANDLER,
11810|      2|		ZEND_NULL_HANDLER,
11810|      2|		ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER,
11810|      2|		ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER,
11810|      2|		ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER,
11810|      2|		ZEND_NULL_HANDLER,
11810|      2|		ZEND_NULL_HANDLER,
11811|      2|		ZEND_COUNT_SPEC_CV_UNUSED_HANDLER,
11811|      2|		ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER,
11811|      2|		ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER,
11811|      2|		ZEND_NULL_HANDLER,
11811|      2|		ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
11811|      2|		ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER,
11811|      2|		ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
11811|      2|		ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER,
11811|      2|		ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER,
11811|      2|		ZEND_NULL_HANDLER,
11812|      2|		ZEND_NULL_HANDLER,
11812|      2|		ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER,
11812|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST_HANDLER,
11812|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMP_HANDLER,
11812|      2|		ZEND_NULL_HANDLER,
11812|      2|		ZEND_NULL_HANDLER,
11812|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV_HANDLER,
11812|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_TMP_CONST_HANDLER,
11812|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_TMP_TMP_HANDLER,
11812|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_TMP_CV_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11813|      2|		ZEND_NULL_HANDLER,
11814|      2|		ZEND_NULL_HANDLER,
11814|      2|		ZEND_NULL_HANDLER,
11814|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST_HANDLER,
11814|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMP_HANDLER,
11814|      2|		ZEND_NULL_HANDLER,
11814|      2|		ZEND_NULL_HANDLER,
11814|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV_HANDLER,
11814|      2|		ZEND_MATCH_SPEC_CONST_CONST_HANDLER,
11814|      2|		ZEND_MATCH_SPEC_TMPVARCV_CONST_HANDLER,
11814|      2|		ZEND_MATCH_SPEC_TMPVARCV_CONST_HANDLER,
11815|      2|		ZEND_NULL_HANDLER,
11815|      2|		ZEND_MATCH_SPEC_TMPVARCV_CONST_HANDLER,
11815|      2|		ZEND_CASE_STRICT_SPEC_TMP_CONST_HANDLER,
11815|      2|		ZEND_CASE_STRICT_SPEC_TMP_TMP_HANDLER,
11815|      2|		ZEND_NULL_HANDLER,
11815|      2|		ZEND_NULL_HANDLER,
11815|      2|		ZEND_CASE_STRICT_SPEC_TMP_CV_HANDLER,
11815|      2|		ZEND_MATCH_ERROR_SPEC_CONST_UNUSED_HANDLER,
11815|      2|		ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_HANDLER,
11815|      2|		ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_HANDLER,
11816|      2|		ZEND_NULL_HANDLER,
11816|      2|		ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_HANDLER,
11816|      2|		ZEND_JMP_NULL_SPEC_CONST_HANDLER,
11816|      2|		ZEND_JMP_NULL_SPEC_TMP_HANDLER,
11816|      2|		ZEND_NULL_HANDLER,
11816|      2|		ZEND_NULL_HANDLER,
11816|      2|		ZEND_JMP_NULL_SPEC_CV_HANDLER,
11816|      2|		ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
11816|      2|		ZEND_FETCH_GLOBALS_SPEC_UNUSED_UNUSED_HANDLER,
11816|      2|		ZEND_VERIFY_NEVER_TYPE_SPEC_UNUSED_UNUSED_HANDLER,
11817|      2|		ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED_HANDLER,
11817|      2|		ZEND_BIND_INIT_STATIC_OR_JMP_SPEC_CV_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_0_SPEC_UNUSED_UNUSED_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_0_SPEC_OBSERVER_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_1_SPEC_OBSERVER_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_2_SPEC_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_2_SPEC_OBSERVER_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_3_SPEC_HANDLER,
11817|      2|		ZEND_FRAMELESS_ICALL_3_SPEC_OBSERVER_HANDLER,
11818|      2|		ZEND_JMP_FRAMELESS_SPEC_CONST_HANDLER,
11818|      2|		ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_HANDLER,
11818|      2|		ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_HANDLER,
11818|      2|		ZEND_TYPE_ASSERT_SPEC_CONST_HANDLER,
11818|      2|		ZEND_INIT_FCALL_OFFSET_SPEC_CONST_HANDLER,
11818|      2|		ZEND_RECV_NOTYPE_SPEC_HANDLER,
11818|      2|		ZEND_NULL_HANDLER,
11818|      2|		ZEND_COUNT_ARRAY_SPEC_TMP_UNUSED_HANDLER,
11818|      2|		ZEND_NULL_HANDLER,
11818|      2|		ZEND_NULL_HANDLER,
11819|      2|		ZEND_COUNT_ARRAY_SPEC_CV_UNUSED_HANDLER,
11819|      2|		ZEND_JMP_FORWARD_SPEC_HANDLER,
11819|      2|		ZEND_NULL_HANDLER,
11819|      2|		ZEND_NULL_HANDLER,
11819|      2|		ZEND_NULL_HANDLER,
11819|      2|		ZEND_NULL_HANDLER,
11819|      2|		ZEND_NULL_HANDLER,
11819|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11819|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11819|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11820|      2|		ZEND_NULL_HANDLER,
11820|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11820|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11820|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11820|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11820|      2|		ZEND_NULL_HANDLER,
11820|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11820|      2|		ZEND_NULL_HANDLER,
11820|      2|		ZEND_NULL_HANDLER,
11820|      2|		ZEND_NULL_HANDLER,
11821|      2|		ZEND_NULL_HANDLER,
11821|      2|		ZEND_NULL_HANDLER,
11821|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11821|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11821|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11821|      2|		ZEND_NULL_HANDLER,
11821|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11821|      2|		ZEND_NULL_HANDLER,
11821|      2|		ZEND_NULL_HANDLER,
11821|      2|		ZEND_NULL_HANDLER,
11822|      2|		ZEND_NULL_HANDLER,
11822|      2|		ZEND_NULL_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11822|      2|		ZEND_NULL_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11822|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11823|      2|		ZEND_NULL_HANDLER,
11823|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11823|      2|		ZEND_NULL_HANDLER,
11823|      2|		ZEND_NULL_HANDLER,
11823|      2|		ZEND_NULL_HANDLER,
11823|      2|		ZEND_NULL_HANDLER,
11823|      2|		ZEND_NULL_HANDLER,
11823|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11823|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11823|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11824|      2|		ZEND_NULL_HANDLER,
11824|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11824|      2|		ZEND_NULL_HANDLER,
11824|      2|		ZEND_NULL_HANDLER,
11824|      2|		ZEND_NULL_HANDLER,
11824|      2|		ZEND_NULL_HANDLER,
11824|      2|		ZEND_NULL_HANDLER,
11824|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11824|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11824|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11825|      2|		ZEND_NULL_HANDLER,
11825|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11825|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11825|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11825|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11825|      2|		ZEND_NULL_HANDLER,
11825|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11825|      2|		ZEND_NULL_HANDLER,
11825|      2|		ZEND_NULL_HANDLER,
11825|      2|		ZEND_NULL_HANDLER,
11826|      2|		ZEND_NULL_HANDLER,
11826|      2|		ZEND_NULL_HANDLER,
11826|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11826|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11826|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11826|      2|		ZEND_NULL_HANDLER,
11826|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11826|      2|		ZEND_NULL_HANDLER,
11826|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
11826|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
11827|      2|		ZEND_NULL_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11827|      2|		ZEND_NULL_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11827|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11828|      2|		ZEND_NULL_HANDLER,
11828|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11828|      2|		ZEND_NULL_HANDLER,
11828|      2|		ZEND_NULL_HANDLER,
11828|      2|		ZEND_NULL_HANDLER,
11828|      2|		ZEND_NULL_HANDLER,
11828|      2|		ZEND_NULL_HANDLER,
11828|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11828|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11828|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11829|      2|		ZEND_NULL_HANDLER,
11829|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11829|      2|		ZEND_NULL_HANDLER,
11829|      2|		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11829|      2|		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11829|      2|		ZEND_NULL_HANDLER,
11829|      2|		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11829|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11829|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11829|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11830|      2|		ZEND_NULL_HANDLER,
11830|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11830|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11830|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11830|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11830|      2|		ZEND_NULL_HANDLER,
11830|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11830|      2|		ZEND_NULL_HANDLER,
11830|      2|		ZEND_NULL_HANDLER,
11830|      2|		ZEND_NULL_HANDLER,
11831|      2|		ZEND_NULL_HANDLER,
11831|      2|		ZEND_NULL_HANDLER,
11831|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11831|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11831|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11831|      2|		ZEND_NULL_HANDLER,
11831|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11831|      2|		ZEND_NULL_HANDLER,
11831|      2|		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11831|      2|		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11832|      2|		ZEND_NULL_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11832|      2|		ZEND_NULL_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11832|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11833|      2|		ZEND_NULL_HANDLER,
11833|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11833|      2|		ZEND_NULL_HANDLER,
11833|      2|		ZEND_NULL_HANDLER,
11833|      2|		ZEND_NULL_HANDLER,
11833|      2|		ZEND_NULL_HANDLER,
11833|      2|		ZEND_NULL_HANDLER,
11833|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11833|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11833|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11834|      2|		ZEND_NULL_HANDLER,
11834|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11834|      2|		ZEND_NULL_HANDLER,
11834|      2|		ZEND_NULL_HANDLER,
11834|      2|		ZEND_NULL_HANDLER,
11834|      2|		ZEND_NULL_HANDLER,
11834|      2|		ZEND_NULL_HANDLER,
11834|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11834|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11834|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11835|      2|		ZEND_NULL_HANDLER,
11835|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11835|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11835|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11835|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11835|      2|		ZEND_NULL_HANDLER,
11835|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11835|      2|		ZEND_NULL_HANDLER,
11835|      2|		ZEND_NULL_HANDLER,
11835|      2|		ZEND_NULL_HANDLER,
11836|      2|		ZEND_NULL_HANDLER,
11836|      2|		ZEND_NULL_HANDLER,
11836|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
11836|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11836|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11836|      2|		ZEND_NULL_HANDLER,
11836|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11836|      2|		ZEND_NULL_HANDLER,
11836|      2|		ZEND_NULL_HANDLER,
11836|      2|		ZEND_NULL_HANDLER,
11837|      2|		ZEND_NULL_HANDLER,
11837|      2|		ZEND_NULL_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11837|      2|		ZEND_NULL_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11837|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11838|      2|		ZEND_NULL_HANDLER,
11838|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11838|      2|		ZEND_NULL_HANDLER,
11838|      2|		ZEND_NULL_HANDLER,
11838|      2|		ZEND_NULL_HANDLER,
11838|      2|		ZEND_NULL_HANDLER,
11838|      2|		ZEND_NULL_HANDLER,
11838|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11838|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11838|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11839|      2|		ZEND_NULL_HANDLER,
11839|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11839|      2|		ZEND_NULL_HANDLER,
11839|      2|		ZEND_NULL_HANDLER,
11839|      2|		ZEND_NULL_HANDLER,
11839|      2|		ZEND_NULL_HANDLER,
11839|      2|		ZEND_NULL_HANDLER,
11839|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11839|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11839|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11840|      2|		ZEND_NULL_HANDLER,
11840|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11840|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11840|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11840|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11840|      2|		ZEND_NULL_HANDLER,
11840|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11840|      2|		ZEND_NULL_HANDLER,
11840|      2|		ZEND_NULL_HANDLER,
11840|      2|		ZEND_NULL_HANDLER,
11841|      2|		ZEND_NULL_HANDLER,
11841|      2|		ZEND_NULL_HANDLER,
11841|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11841|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11841|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11841|      2|		ZEND_NULL_HANDLER,
11841|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11841|      2|		ZEND_NULL_HANDLER,
11841|      2|		ZEND_NULL_HANDLER,
11841|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11842|      2|		ZEND_NULL_HANDLER,
11843|      2|		ZEND_NULL_HANDLER,
11843|      2|		ZEND_NULL_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11843|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11844|      2|		ZEND_NULL_HANDLER,
11844|      2|		ZEND_NULL_HANDLER,
11844|      2|		ZEND_NULL_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11844|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11845|      2|		ZEND_NULL_HANDLER,
11845|      2|		ZEND_NULL_HANDLER,
11845|      2|		ZEND_NULL_HANDLER,
11845|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11846|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11846|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11846|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_NULL_HANDLER,
11847|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11847|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11847|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11848|      2|		ZEND_NULL_HANDLER,
11848|      2|		ZEND_NULL_HANDLER,
11848|      2|		ZEND_NULL_HANDLER,
11848|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11849|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11849|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11849|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_NULL_HANDLER,
11850|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11850|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11850|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11851|      2|		ZEND_NULL_HANDLER,
11851|      2|		ZEND_NULL_HANDLER,
11851|      2|		ZEND_NULL_HANDLER,
11851|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11852|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11853|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11853|      2|		ZEND_NULL_HANDLER,
11853|      2|		ZEND_NULL_HANDLER,
11853|      2|		ZEND_NULL_HANDLER,
11853|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11853|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11853|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11853|      2|		ZEND_NULL_HANDLER,
11853|      2|		ZEND_NULL_HANDLER,
11853|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11854|      2|		ZEND_NULL_HANDLER,
11855|      2|		ZEND_NULL_HANDLER,
11855|      2|		ZEND_NULL_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11855|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11856|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11856|      2|		ZEND_NULL_HANDLER,
11856|      2|		ZEND_NULL_HANDLER,
11856|      2|		ZEND_NULL_HANDLER,
11856|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11856|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11856|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11856|      2|		ZEND_NULL_HANDLER,
11856|      2|		ZEND_NULL_HANDLER,
11856|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11857|      2|		ZEND_NULL_HANDLER,
11858|      2|		ZEND_NULL_HANDLER,
11858|      2|		ZEND_NULL_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11858|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11859|      2|		ZEND_NULL_HANDLER,
11859|      2|		ZEND_NULL_HANDLER,
11859|      2|		ZEND_NULL_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11859|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11860|      2|		ZEND_NULL_HANDLER,
11860|      2|		ZEND_NULL_HANDLER,
11860|      2|		ZEND_NULL_HANDLER,
11860|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11861|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11861|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11861|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_NULL_HANDLER,
11862|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11862|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11862|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11863|      2|		ZEND_NULL_HANDLER,
11863|      2|		ZEND_NULL_HANDLER,
11863|      2|		ZEND_NULL_HANDLER,
11863|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11864|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11864|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11864|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_NULL_HANDLER,
11865|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11865|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11865|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11866|      2|		ZEND_NULL_HANDLER,
11866|      2|		ZEND_NULL_HANDLER,
11866|      2|		ZEND_NULL_HANDLER,
11866|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11867|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11868|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11868|      2|		ZEND_NULL_HANDLER,
11868|      2|		ZEND_NULL_HANDLER,
11868|      2|		ZEND_NULL_HANDLER,
11868|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11868|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11868|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11868|      2|		ZEND_NULL_HANDLER,
11868|      2|		ZEND_NULL_HANDLER,
11868|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11869|      2|		ZEND_NULL_HANDLER,
11870|      2|		ZEND_NULL_HANDLER,
11870|      2|		ZEND_NULL_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11870|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11871|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11871|      2|		ZEND_NULL_HANDLER,
11871|      2|		ZEND_NULL_HANDLER,
11871|      2|		ZEND_NULL_HANDLER,
11871|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11871|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11871|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11871|      2|		ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_HANDLER,
11871|      2|		ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11871|      2|		ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11872|      2|		ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_HANDLER,
11872|      2|		ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11872|      2|		ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11872|      2|		ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST_HANDLER,
11872|      2|		ZEND_NULL_HANDLER,
11872|      2|		ZEND_NULL_HANDLER,
11872|      2|		ZEND_NULL_HANDLER,
11872|      2|		ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV_HANDLER,
11872|      2|		ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST_HANDLER,
11872|      2|		ZEND_NULL_HANDLER,
11873|      2|		ZEND_NULL_HANDLER,
11873|      2|		ZEND_NULL_HANDLER,
11873|      2|		ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV_HANDLER,
11873|      2|		ZEND_NULL_HANDLER,
11873|      2|		ZEND_NULL_HANDLER,
11873|      2|		ZEND_NULL_HANDLER,
11873|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11873|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11873|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11873|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11874|      2|		ZEND_NULL_HANDLER,
11874|      2|		ZEND_NULL_HANDLER,
11874|      2|		ZEND_NULL_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11874|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11875|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11875|      2|		ZEND_NULL_HANDLER,
11875|      2|		ZEND_NULL_HANDLER,
11875|      2|		ZEND_NULL_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11876|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11877|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11877|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11877|      2|		ZEND_NULL_HANDLER,
11877|      2|		ZEND_NULL_HANDLER,
11877|      2|		ZEND_NULL_HANDLER,
11877|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11877|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11877|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11877|      2|		ZEND_NULL_HANDLER,
11877|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11878|      2|		ZEND_NULL_HANDLER,
11879|      2|		ZEND_NULL_HANDLER,
11879|      2|		ZEND_NULL_HANDLER,
11879|      2|		ZEND_NULL_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11879|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11880|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11880|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11880|      2|		ZEND_NULL_HANDLER,
11880|      2|		ZEND_NULL_HANDLER,
11880|      2|		ZEND_NULL_HANDLER,
11880|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11880|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11880|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11880|      2|		ZEND_NULL_HANDLER,
11880|      2|		ZEND_NULL_HANDLER,
11881|      2|		ZEND_NULL_HANDLER,
11881|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11881|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11881|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11881|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11881|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11881|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11881|      2|		ZEND_NULL_HANDLER,
11881|      2|		ZEND_NULL_HANDLER,
11881|      2|		ZEND_NULL_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11882|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11883|      2|		ZEND_NULL_HANDLER,
11883|      2|		ZEND_NULL_HANDLER,
11883|      2|		ZEND_NULL_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11883|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11884|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11884|      2|		ZEND_NULL_HANDLER,
11884|      2|		ZEND_NULL_HANDLER,
11884|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11885|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11885|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11885|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_NULL_HANDLER,
11886|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11886|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11887|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11887|      2|		ZEND_NULL_HANDLER,
11887|      2|		ZEND_NULL_HANDLER,
11887|      2|		ZEND_NULL_HANDLER,
11888|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11888|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11888|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11888|      2|		ZEND_NULL_HANDLER,
11888|      2|		ZEND_NULL_HANDLER,
11888|      2|		ZEND_NULL_HANDLER,
11888|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11888|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11888|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11888|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11889|      2|		ZEND_NULL_HANDLER,
11889|      2|		ZEND_NULL_HANDLER,
11889|      2|		ZEND_NULL_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11889|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11890|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11890|      2|		ZEND_NULL_HANDLER,
11890|      2|		ZEND_NULL_HANDLER,
11890|      2|		ZEND_NULL_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11891|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11892|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11892|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11892|      2|		ZEND_NULL_HANDLER,
11892|      2|		ZEND_NULL_HANDLER,
11892|      2|		ZEND_NULL_HANDLER,
11892|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11892|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11892|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11892|      2|		ZEND_NULL_HANDLER,
11892|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11893|      2|		ZEND_NULL_HANDLER,
11894|      2|		ZEND_NULL_HANDLER,
11894|      2|		ZEND_NULL_HANDLER,
11894|      2|		ZEND_NULL_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11894|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11895|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11895|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11895|      2|		ZEND_NULL_HANDLER,
11895|      2|		ZEND_NULL_HANDLER,
11895|      2|		ZEND_NULL_HANDLER,
11895|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11895|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11895|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11895|      2|		ZEND_NULL_HANDLER,
11895|      2|		ZEND_NULL_HANDLER,
11896|      2|		ZEND_NULL_HANDLER,
11896|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11896|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11896|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11896|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11896|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11896|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11896|      2|		ZEND_NULL_HANDLER,
11896|      2|		ZEND_NULL_HANDLER,
11896|      2|		ZEND_NULL_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11897|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11898|      2|		ZEND_NULL_HANDLER,
11898|      2|		ZEND_NULL_HANDLER,
11898|      2|		ZEND_NULL_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11898|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11899|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11899|      2|		ZEND_NULL_HANDLER,
11899|      2|		ZEND_NULL_HANDLER,
11899|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11900|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11900|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11900|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_NULL_HANDLER,
11901|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
11901|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11902|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11902|      2|		ZEND_NULL_HANDLER,
11902|      2|		ZEND_NULL_HANDLER,
11902|      2|		ZEND_NULL_HANDLER,
11903|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
11903|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
11903|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
11903|      2|		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER,
11903|      2|		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER,
11903|      2|		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER,
11903|      2|		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER,
11903|      2|		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER,
11903|      2|		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER,
11903|      2|		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER,
11904|      2|		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER,
11904|      2|		ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER,
11904|      2|		ZEND_POST_INC_LONG_SPEC_CV_HANDLER,
11904|      2|		ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER,
11904|      2|		ZEND_POST_DEC_LONG_SPEC_CV_HANDLER,
11904|      2|		ZEND_QM_ASSIGN_LONG_SPEC_CONST_HANDLER,
11904|      2|		ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_HANDLER,
11904|      2|		ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_HANDLER,
11904|      2|		ZEND_NULL_HANDLER,
11904|      2|		ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
11905|      2|		ZEND_NULL_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
11905|      2|		ZEND_NULL_HANDLER,
11905|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
11906|      2|		ZEND_NULL_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER,
11906|      2|		ZEND_NULL_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
11906|      2|		ZEND_NULL_HANDLER,
11906|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
11907|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER,
11907|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
11907|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
11907|      2|		ZEND_NULL_HANDLER,
11907|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
11907|      2|		ZEND_NULL_HANDLER,
11907|      2|		ZEND_NULL_HANDLER,
11907|      2|		ZEND_NULL_HANDLER,
11907|      2|		ZEND_NULL_HANDLER,
11907|      2|		ZEND_NULL_HANDLER,
11908|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER,
11908|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER,
11908|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER,
11908|      2|		ZEND_NULL_HANDLER,
11908|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER,
11908|      2|		ZEND_NULL_HANDLER,
11908|      2|		ZEND_NULL_HANDLER,
11908|      2|		ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER,
11908|      2|		ZEND_NULL_HANDLER,
11908|      2|		ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER,
11909|      2|		ZEND_NULL_HANDLER,
11909|      2|		ZEND_NULL_HANDLER,
11909|      2|		ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED_HANDLER,
11909|      2|		ZEND_NULL_HANDLER,
11909|      2|		ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED_HANDLER,
11909|      2|		ZEND_SEND_VAL_SIMPLE_SPEC_CONST_HANDLER,
11909|      2|		ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST_HANDLER,
11909|      2|		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER,
11909|      2|		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER,
11909|      2|		ZEND_NULL_HANDLER
11910|      2|	};
11910|      2|#if ZEND_VM_KIND == ZEND_VM_KIND_TAILCALL || ZEND_VM_KIND == ZEND_VM_KIND_SWITCH
11910|      2|	static zend_vm_opcode_handler_t const handlers[] = {
11910|      2|		ZEND_NOP_SPEC_TAILCALL_HANDLER,
11910|      2|		ZEND_ADD_SPEC_CONST_CONST_TAILCALL_HANDLER,
11910|      2|		ZEND_ADD_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11910|      2|		ZEND_ADD_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11910|      2|		ZEND_NULL_TAILCALL_HANDLER,
11910|      2|		ZEND_ADD_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11910|      2|		ZEND_ADD_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11911|      2|		ZEND_NULL_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11911|      2|		ZEND_NULL_TAILCALL_HANDLER,
11911|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11911|      2|		ZEND_NULL_TAILCALL_HANDLER,
11912|      2|		ZEND_NULL_TAILCALL_HANDLER,
11912|      2|		ZEND_NULL_TAILCALL_HANDLER,
11912|      2|		ZEND_NULL_TAILCALL_HANDLER,
11912|      2|		ZEND_NULL_TAILCALL_HANDLER,
11912|      2|		ZEND_ADD_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11912|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11912|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11912|      2|		ZEND_NULL_TAILCALL_HANDLER,
11912|      2|		ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11912|      2|		ZEND_SUB_SPEC_CONST_CONST_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11913|      2|		ZEND_NULL_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11913|      2|		ZEND_NULL_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11913|      2|		ZEND_SUB_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11914|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11914|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11914|      2|		ZEND_NULL_TAILCALL_HANDLER,
11914|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11914|      2|		ZEND_NULL_TAILCALL_HANDLER,
11914|      2|		ZEND_NULL_TAILCALL_HANDLER,
11914|      2|		ZEND_NULL_TAILCALL_HANDLER,
11914|      2|		ZEND_NULL_TAILCALL_HANDLER,
11914|      2|		ZEND_NULL_TAILCALL_HANDLER,
11914|      2|		ZEND_SUB_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11915|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11915|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11915|      2|		ZEND_NULL_TAILCALL_HANDLER,
11915|      2|		ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11915|      2|		ZEND_MUL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11915|      2|		ZEND_NULL_TAILCALL_HANDLER,
11915|      2|		ZEND_NULL_TAILCALL_HANDLER,
11915|      2|		ZEND_NULL_TAILCALL_HANDLER,
11915|      2|		ZEND_NULL_TAILCALL_HANDLER,
11915|      2|		ZEND_MUL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11916|      2|		ZEND_NULL_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11916|      2|		ZEND_NULL_TAILCALL_HANDLER,
11916|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11916|      2|		ZEND_NULL_TAILCALL_HANDLER,
11917|      2|		ZEND_NULL_TAILCALL_HANDLER,
11917|      2|		ZEND_NULL_TAILCALL_HANDLER,
11917|      2|		ZEND_NULL_TAILCALL_HANDLER,
11917|      2|		ZEND_NULL_TAILCALL_HANDLER,
11917|      2|		ZEND_MUL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11917|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11917|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11917|      2|		ZEND_NULL_TAILCALL_HANDLER,
11917|      2|		ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11917|      2|		ZEND_DIV_SPEC_CONST_CONST_TAILCALL_HANDLER,
11918|      2|		ZEND_DIV_SPEC_CONST_TMP_TAILCALL_HANDLER,
11918|      2|		ZEND_NULL_TAILCALL_HANDLER,
11918|      2|		ZEND_NULL_TAILCALL_HANDLER,
11918|      2|		ZEND_DIV_SPEC_CONST_CV_TAILCALL_HANDLER,
11918|      2|		ZEND_DIV_SPEC_TMP_CONST_TAILCALL_HANDLER,
11918|      2|		ZEND_DIV_SPEC_TMP_TMP_TAILCALL_HANDLER,
11918|      2|		ZEND_NULL_TAILCALL_HANDLER,
11918|      2|		ZEND_NULL_TAILCALL_HANDLER,
11918|      2|		ZEND_DIV_SPEC_TMP_CV_TAILCALL_HANDLER,
11918|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_NULL_TAILCALL_HANDLER,
11919|      2|		ZEND_DIV_SPEC_CV_CONST_TAILCALL_HANDLER,
11920|      2|		ZEND_DIV_SPEC_CV_TMP_TAILCALL_HANDLER,
11920|      2|		ZEND_NULL_TAILCALL_HANDLER,
11920|      2|		ZEND_NULL_TAILCALL_HANDLER,
11920|      2|		ZEND_DIV_SPEC_CV_CV_TAILCALL_HANDLER,
11920|      2|		ZEND_MOD_SPEC_CONST_CONST_TAILCALL_HANDLER,
11920|      2|		ZEND_MOD_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11920|      2|		ZEND_MOD_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11920|      2|		ZEND_NULL_TAILCALL_HANDLER,
11920|      2|		ZEND_MOD_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11920|      2|		ZEND_MOD_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11921|      2|		ZEND_NULL_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11921|      2|		ZEND_NULL_TAILCALL_HANDLER,
11921|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11921|      2|		ZEND_NULL_TAILCALL_HANDLER,
11922|      2|		ZEND_NULL_TAILCALL_HANDLER,
11922|      2|		ZEND_NULL_TAILCALL_HANDLER,
11922|      2|		ZEND_NULL_TAILCALL_HANDLER,
11922|      2|		ZEND_NULL_TAILCALL_HANDLER,
11922|      2|		ZEND_MOD_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11922|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11922|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11922|      2|		ZEND_NULL_TAILCALL_HANDLER,
11922|      2|		ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11922|      2|		ZEND_SL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11923|      2|		ZEND_NULL_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11923|      2|		ZEND_NULL_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11923|      2|		ZEND_SL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11924|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11924|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11924|      2|		ZEND_NULL_TAILCALL_HANDLER,
11924|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11924|      2|		ZEND_NULL_TAILCALL_HANDLER,
11924|      2|		ZEND_NULL_TAILCALL_HANDLER,
11924|      2|		ZEND_NULL_TAILCALL_HANDLER,
11924|      2|		ZEND_NULL_TAILCALL_HANDLER,
11924|      2|		ZEND_NULL_TAILCALL_HANDLER,
11924|      2|		ZEND_SL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11925|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11925|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11925|      2|		ZEND_NULL_TAILCALL_HANDLER,
11925|      2|		ZEND_SL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11925|      2|		ZEND_SR_SPEC_CONST_CONST_TAILCALL_HANDLER,
11925|      2|		ZEND_SR_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11925|      2|		ZEND_SR_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11925|      2|		ZEND_NULL_TAILCALL_HANDLER,
11925|      2|		ZEND_SR_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11925|      2|		ZEND_SR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11926|      2|		ZEND_NULL_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11926|      2|		ZEND_NULL_TAILCALL_HANDLER,
11926|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11926|      2|		ZEND_NULL_TAILCALL_HANDLER,
11927|      2|		ZEND_NULL_TAILCALL_HANDLER,
11927|      2|		ZEND_NULL_TAILCALL_HANDLER,
11927|      2|		ZEND_NULL_TAILCALL_HANDLER,
11927|      2|		ZEND_NULL_TAILCALL_HANDLER,
11927|      2|		ZEND_SR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11927|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11927|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11927|      2|		ZEND_NULL_TAILCALL_HANDLER,
11927|      2|		ZEND_SR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11927|      2|		ZEND_NULL_TAILCALL_HANDLER,
11928|      2|		ZEND_CONCAT_SPEC_CONST_TMP_TAILCALL_HANDLER,
11928|      2|		ZEND_NULL_TAILCALL_HANDLER,
11928|      2|		ZEND_NULL_TAILCALL_HANDLER,
11928|      2|		ZEND_CONCAT_SPEC_CONST_CV_TAILCALL_HANDLER,
11928|      2|		ZEND_CONCAT_SPEC_TMP_CONST_TAILCALL_HANDLER,
11928|      2|		ZEND_CONCAT_SPEC_TMP_TMP_TAILCALL_HANDLER,
11928|      2|		ZEND_NULL_TAILCALL_HANDLER,
11928|      2|		ZEND_NULL_TAILCALL_HANDLER,
11928|      2|		ZEND_CONCAT_SPEC_TMP_CV_TAILCALL_HANDLER,
11928|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_NULL_TAILCALL_HANDLER,
11929|      2|		ZEND_CONCAT_SPEC_CV_CONST_TAILCALL_HANDLER,
11930|      2|		ZEND_CONCAT_SPEC_CV_TMP_TAILCALL_HANDLER,
11930|      2|		ZEND_NULL_TAILCALL_HANDLER,
11930|      2|		ZEND_NULL_TAILCALL_HANDLER,
11930|      2|		ZEND_CONCAT_SPEC_CV_CV_TAILCALL_HANDLER,
11930|      2|		ZEND_BW_OR_SPEC_CONST_CONST_TAILCALL_HANDLER,
11930|      2|		ZEND_NULL_TAILCALL_HANDLER,
11930|      2|		ZEND_NULL_TAILCALL_HANDLER,
11930|      2|		ZEND_NULL_TAILCALL_HANDLER,
11930|      2|		ZEND_NULL_TAILCALL_HANDLER,
11930|      2|		ZEND_BW_OR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11931|      2|		ZEND_NULL_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11931|      2|		ZEND_NULL_TAILCALL_HANDLER,
11931|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11931|      2|		ZEND_NULL_TAILCALL_HANDLER,
11932|      2|		ZEND_NULL_TAILCALL_HANDLER,
11932|      2|		ZEND_NULL_TAILCALL_HANDLER,
11932|      2|		ZEND_NULL_TAILCALL_HANDLER,
11932|      2|		ZEND_NULL_TAILCALL_HANDLER,
11932|      2|		ZEND_BW_OR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11932|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11932|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11932|      2|		ZEND_NULL_TAILCALL_HANDLER,
11932|      2|		ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11932|      2|		ZEND_BW_AND_SPEC_CONST_CONST_TAILCALL_HANDLER,
11933|      2|		ZEND_NULL_TAILCALL_HANDLER,
11933|      2|		ZEND_NULL_TAILCALL_HANDLER,
11933|      2|		ZEND_NULL_TAILCALL_HANDLER,
11933|      2|		ZEND_NULL_TAILCALL_HANDLER,
11933|      2|		ZEND_BW_AND_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11933|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11933|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11933|      2|		ZEND_NULL_TAILCALL_HANDLER,
11933|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11933|      2|		ZEND_BW_AND_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11934|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11934|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11934|      2|		ZEND_NULL_TAILCALL_HANDLER,
11934|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11934|      2|		ZEND_NULL_TAILCALL_HANDLER,
11934|      2|		ZEND_NULL_TAILCALL_HANDLER,
11934|      2|		ZEND_NULL_TAILCALL_HANDLER,
11934|      2|		ZEND_NULL_TAILCALL_HANDLER,
11934|      2|		ZEND_NULL_TAILCALL_HANDLER,
11934|      2|		ZEND_BW_AND_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11935|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11935|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11935|      2|		ZEND_NULL_TAILCALL_HANDLER,
11935|      2|		ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11935|      2|		ZEND_BW_XOR_SPEC_CONST_CONST_TAILCALL_HANDLER,
11935|      2|		ZEND_NULL_TAILCALL_HANDLER,
11935|      2|		ZEND_NULL_TAILCALL_HANDLER,
11935|      2|		ZEND_NULL_TAILCALL_HANDLER,
11935|      2|		ZEND_NULL_TAILCALL_HANDLER,
11935|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11936|      2|		ZEND_NULL_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11936|      2|		ZEND_NULL_TAILCALL_HANDLER,
11936|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11936|      2|		ZEND_NULL_TAILCALL_HANDLER,
11937|      2|		ZEND_NULL_TAILCALL_HANDLER,
11937|      2|		ZEND_NULL_TAILCALL_HANDLER,
11937|      2|		ZEND_NULL_TAILCALL_HANDLER,
11937|      2|		ZEND_NULL_TAILCALL_HANDLER,
11937|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11937|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11937|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11937|      2|		ZEND_NULL_TAILCALL_HANDLER,
11937|      2|		ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11937|      2|		ZEND_POW_SPEC_CONST_CONST_TAILCALL_HANDLER,
11938|      2|		ZEND_POW_SPEC_CONST_TMP_TAILCALL_HANDLER,
11938|      2|		ZEND_NULL_TAILCALL_HANDLER,
11938|      2|		ZEND_NULL_TAILCALL_HANDLER,
11938|      2|		ZEND_POW_SPEC_CONST_CV_TAILCALL_HANDLER,
11938|      2|		ZEND_POW_SPEC_TMP_CONST_TAILCALL_HANDLER,
11938|      2|		ZEND_POW_SPEC_TMP_TMP_TAILCALL_HANDLER,
11938|      2|		ZEND_NULL_TAILCALL_HANDLER,
11938|      2|		ZEND_NULL_TAILCALL_HANDLER,
11938|      2|		ZEND_POW_SPEC_TMP_CV_TAILCALL_HANDLER,
11938|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_NULL_TAILCALL_HANDLER,
11939|      2|		ZEND_POW_SPEC_CV_CONST_TAILCALL_HANDLER,
11940|      2|		ZEND_POW_SPEC_CV_TMP_TAILCALL_HANDLER,
11940|      2|		ZEND_NULL_TAILCALL_HANDLER,
11940|      2|		ZEND_NULL_TAILCALL_HANDLER,
11940|      2|		ZEND_POW_SPEC_CV_CV_TAILCALL_HANDLER,
11940|      2|		ZEND_BW_NOT_SPEC_CONST_TAILCALL_HANDLER,
11940|      2|		ZEND_BW_NOT_SPEC_TMPVARCV_TAILCALL_HANDLER,
11940|      2|		ZEND_BW_NOT_SPEC_TMPVARCV_TAILCALL_HANDLER,
11940|      2|		ZEND_NULL_TAILCALL_HANDLER,
11940|      2|		ZEND_BW_NOT_SPEC_TMPVARCV_TAILCALL_HANDLER,
11940|      2|		ZEND_BOOL_NOT_SPEC_CONST_TAILCALL_HANDLER,
11941|      2|		ZEND_BOOL_NOT_SPEC_TMP_TAILCALL_HANDLER,
11941|      2|		ZEND_NULL_TAILCALL_HANDLER,
11941|      2|		ZEND_NULL_TAILCALL_HANDLER,
11941|      2|		ZEND_BOOL_NOT_SPEC_CV_TAILCALL_HANDLER,
11941|      2|		ZEND_BOOL_XOR_SPEC_CONST_CONST_TAILCALL_HANDLER,
11941|      2|		ZEND_NULL_TAILCALL_HANDLER,
11941|      2|		ZEND_NULL_TAILCALL_HANDLER,
11941|      2|		ZEND_NULL_TAILCALL_HANDLER,
11941|      2|		ZEND_NULL_TAILCALL_HANDLER,
11941|      2|		ZEND_BOOL_XOR_SPEC_TMP_CONST_TAILCALL_HANDLER,
11942|      2|		ZEND_BOOL_XOR_SPEC_TMP_TMP_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11942|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_BOOL_XOR_SPEC_CV_CONST_TAILCALL_HANDLER,
11943|      2|		ZEND_BOOL_XOR_SPEC_CV_TMP_TAILCALL_HANDLER,
11943|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_NULL_TAILCALL_HANDLER,
11943|      2|		ZEND_BOOL_XOR_SPEC_CV_CV_TAILCALL_HANDLER,
11943|      2|		ZEND_IS_IDENTICAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_IS_IDENTICAL_SPEC_TMP_CONST_TAILCALL_HANDLER,
11944|      2|		ZEND_IS_IDENTICAL_SPEC_TMP_TMP_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11944|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_NULL_TAILCALL_HANDLER,
11945|      2|		ZEND_IS_IDENTICAL_SPEC_CV_CONST_TAILCALL_HANDLER,
11946|      2|		ZEND_IS_IDENTICAL_SPEC_CV_TMP_TAILCALL_HANDLER,
11946|      2|		ZEND_NULL_TAILCALL_HANDLER,
11946|      2|		ZEND_NULL_TAILCALL_HANDLER,
11946|      2|		ZEND_IS_IDENTICAL_SPEC_CV_CV_TAILCALL_HANDLER,
11946|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11946|      2|		ZEND_NULL_TAILCALL_HANDLER,
11946|      2|		ZEND_NULL_TAILCALL_HANDLER,
11946|      2|		ZEND_NULL_TAILCALL_HANDLER,
11946|      2|		ZEND_NULL_TAILCALL_HANDLER,
11946|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_TAILCALL_HANDLER,
11947|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11947|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_TAILCALL_HANDLER,
11948|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_TAILCALL_HANDLER,
11948|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_NULL_TAILCALL_HANDLER,
11948|      2|		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_TAILCALL_HANDLER,
11948|      2|		ZEND_IS_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11949|      2|		ZEND_IS_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11949|      2|		ZEND_IS_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11949|      2|		ZEND_NULL_TAILCALL_HANDLER,
11950|      2|		ZEND_NULL_TAILCALL_HANDLER,
11950|      2|		ZEND_NULL_TAILCALL_HANDLER,
11950|      2|		ZEND_NULL_TAILCALL_HANDLER,
11950|      2|		ZEND_NULL_TAILCALL_HANDLER,
11950|      2|		ZEND_IS_EQUAL_SPEC_TMP_CONST_TAILCALL_HANDLER,
11950|      2|		ZEND_IS_EQUAL_SPEC_TMP_CONST_JMPZ_TAILCALL_HANDLER,
11950|      2|		ZEND_IS_EQUAL_SPEC_TMP_CONST_JMPNZ_TAILCALL_HANDLER,
11950|      2|		ZEND_IS_EQUAL_SPEC_TMP_TMP_TAILCALL_HANDLER,
11950|      2|		ZEND_IS_EQUAL_SPEC_TMP_TMP_JMPZ_TAILCALL_HANDLER,
11950|      2|		ZEND_IS_EQUAL_SPEC_TMP_TMP_JMPNZ_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11951|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11952|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11953|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_NULL_TAILCALL_HANDLER,
11954|      2|		ZEND_IS_EQUAL_SPEC_CV_CONST_TAILCALL_HANDLER,
11955|      2|		ZEND_IS_EQUAL_SPEC_CV_CONST_JMPZ_TAILCALL_HANDLER,
11955|      2|		ZEND_IS_EQUAL_SPEC_CV_CONST_JMPNZ_TAILCALL_HANDLER,
11955|      2|		ZEND_IS_EQUAL_SPEC_CV_TMP_TAILCALL_HANDLER,
11955|      2|		ZEND_IS_EQUAL_SPEC_CV_TMP_JMPZ_TAILCALL_HANDLER,
11955|      2|		ZEND_IS_EQUAL_SPEC_CV_TMP_JMPNZ_TAILCALL_HANDLER,
11955|      2|		ZEND_NULL_TAILCALL_HANDLER,
11955|      2|		ZEND_NULL_TAILCALL_HANDLER,
11955|      2|		ZEND_NULL_TAILCALL_HANDLER,
11955|      2|		ZEND_NULL_TAILCALL_HANDLER,
11955|      2|		ZEND_NULL_TAILCALL_HANDLER,
11956|      2|		ZEND_NULL_TAILCALL_HANDLER,
11956|      2|		ZEND_IS_EQUAL_SPEC_CV_CV_TAILCALL_HANDLER,
11956|      2|		ZEND_IS_EQUAL_SPEC_CV_CV_JMPZ_TAILCALL_HANDLER,
11956|      2|		ZEND_IS_EQUAL_SPEC_CV_CV_JMPNZ_TAILCALL_HANDLER,
11956|      2|		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11956|      2|		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11956|      2|		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11956|      2|		ZEND_NULL_TAILCALL_HANDLER,
11956|      2|		ZEND_NULL_TAILCALL_HANDLER,
11956|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_NULL_TAILCALL_HANDLER,
11957|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_TAILCALL_HANDLER,
11958|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_JMPZ_TAILCALL_HANDLER,
11958|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_JMPNZ_TAILCALL_HANDLER,
11958|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_TAILCALL_HANDLER,
11958|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_JMPZ_TAILCALL_HANDLER,
11958|      2|		ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_JMPNZ_TAILCALL_HANDLER,
11958|      2|		ZEND_NULL_TAILCALL_HANDLER,
11958|      2|		ZEND_NULL_TAILCALL_HANDLER,
11958|      2|		ZEND_NULL_TAILCALL_HANDLER,
11958|      2|		ZEND_NULL_TAILCALL_HANDLER,
11958|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11959|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11960|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11961|      2|		ZEND_NULL_TAILCALL_HANDLER,
11962|      2|		ZEND_NULL_TAILCALL_HANDLER,
11962|      2|		ZEND_NULL_TAILCALL_HANDLER,
11962|      2|		ZEND_NULL_TAILCALL_HANDLER,
11962|      2|		ZEND_NULL_TAILCALL_HANDLER,
11962|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_TAILCALL_HANDLER,
11962|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_JMPZ_TAILCALL_HANDLER,
11962|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_JMPNZ_TAILCALL_HANDLER,
11962|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_TAILCALL_HANDLER,
11962|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_JMPZ_TAILCALL_HANDLER,
11962|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_JMPNZ_TAILCALL_HANDLER,
11963|      2|		ZEND_NULL_TAILCALL_HANDLER,
11963|      2|		ZEND_NULL_TAILCALL_HANDLER,
11963|      2|		ZEND_NULL_TAILCALL_HANDLER,
11963|      2|		ZEND_NULL_TAILCALL_HANDLER,
11963|      2|		ZEND_NULL_TAILCALL_HANDLER,
11963|      2|		ZEND_NULL_TAILCALL_HANDLER,
11963|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_TAILCALL_HANDLER,
11963|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_JMPZ_TAILCALL_HANDLER,
11963|      2|		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_JMPNZ_TAILCALL_HANDLER,
11963|      2|		ZEND_IS_SMALLER_SPEC_CONST_CONST_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_CONST_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_CONST_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11964|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11964|      2|		ZEND_NULL_TAILCALL_HANDLER,
11964|      2|		ZEND_NULL_TAILCALL_HANDLER,
11965|      2|		ZEND_NULL_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11965|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11966|      2|		ZEND_NULL_TAILCALL_HANDLER,
11966|      2|		ZEND_NULL_TAILCALL_HANDLER,
11966|      2|		ZEND_NULL_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11966|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11967|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11967|      2|		ZEND_NULL_TAILCALL_HANDLER,
11967|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11968|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11968|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11968|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_NULL_TAILCALL_HANDLER,
11969|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11970|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11970|      2|		ZEND_NULL_TAILCALL_HANDLER,
11970|      2|		ZEND_NULL_TAILCALL_HANDLER,
11971|      2|		ZEND_NULL_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11971|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11972|      2|		ZEND_NULL_TAILCALL_HANDLER,
11972|      2|		ZEND_NULL_TAILCALL_HANDLER,
11972|      2|		ZEND_NULL_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11972|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11973|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11973|      2|		ZEND_NULL_TAILCALL_HANDLER,
11973|      2|		ZEND_NULL_TAILCALL_HANDLER,
11974|      2|		ZEND_NULL_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11974|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11975|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11975|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11975|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11975|      2|		ZEND_NULL_TAILCALL_HANDLER,
11975|      2|		ZEND_NULL_TAILCALL_HANDLER,
11975|      2|		ZEND_NULL_TAILCALL_HANDLER,
11975|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11975|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11975|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11975|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11976|      2|		ZEND_NULL_TAILCALL_HANDLER,
11977|      2|		ZEND_NULL_TAILCALL_HANDLER,
11977|      2|		ZEND_NULL_TAILCALL_HANDLER,
11977|      2|		ZEND_NULL_TAILCALL_HANDLER,
11977|      2|		ZEND_NULL_TAILCALL_HANDLER,
11977|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
11977|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
11977|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
11977|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11977|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11977|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11978|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11978|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11978|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11978|      2|		ZEND_NULL_TAILCALL_HANDLER,
11978|      2|		ZEND_NULL_TAILCALL_HANDLER,
11978|      2|		ZEND_NULL_TAILCALL_HANDLER,
11978|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
11978|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
11978|      2|		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
11978|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11979|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_NULL_TAILCALL_HANDLER,
11980|      2|		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_TAILCALL_HANDLER,
11981|      2|		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_TAILCALL_HANDLER,
11981|      2|		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_TAILCALL_HANDLER,
11981|      2|		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_TAILCALL_HANDLER,
11981|      2|		ZEND_NULL_TAILCALL_HANDLER,
11981|      2|		ZEND_NULL_TAILCALL_HANDLER,
11981|      2|		ZEND_NULL_TAILCALL_HANDLER,
11981|      2|		ZEND_NULL_TAILCALL_HANDLER,
11981|      2|		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
11981|      2|		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_TAILCALL_HANDLER,
11981|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_NULL_TAILCALL_HANDLER,
11982|      2|		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_TAILCALL_HANDLER,
11983|      2|		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_TAILCALL_HANDLER,
11983|      2|		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_TAILCALL_HANDLER,
11983|      2|		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_TAILCALL_HANDLER,
11983|      2|		ZEND_NULL_TAILCALL_HANDLER,
11983|      2|		ZEND_NULL_TAILCALL_HANDLER,
11983|      2|		ZEND_NULL_TAILCALL_HANDLER,
11983|      2|		ZEND_NULL_TAILCALL_HANDLER,
11983|      2|		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
11983|      2|		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_TAILCALL_HANDLER,
11983|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11984|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11985|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11986|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11987|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_NULL_TAILCALL_HANDLER,
11988|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_TAILCALL_HANDLER,
11989|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_TAILCALL_HANDLER,
11989|      2|		ZEND_NULL_TAILCALL_HANDLER,
11989|      2|		ZEND_NULL_TAILCALL_HANDLER,
11989|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_TAILCALL_HANDLER,
11989|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_CONST_TAILCALL_HANDLER,
11989|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_TMP_TAILCALL_HANDLER,
11989|      2|		ZEND_NULL_TAILCALL_HANDLER,
11989|      2|		ZEND_NULL_TAILCALL_HANDLER,
11989|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_CV_TAILCALL_HANDLER,
11989|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_TAILCALL_HANDLER,
11990|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_TAILCALL_HANDLER,
11990|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_NULL_TAILCALL_HANDLER,
11990|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_TAILCALL_HANDLER,
11990|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_TAILCALL_HANDLER,
11991|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11991|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11992|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_NULL_TAILCALL_HANDLER,
11993|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_TAILCALL_HANDLER,
11994|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_TAILCALL_HANDLER,
11994|      2|		ZEND_NULL_TAILCALL_HANDLER,
11994|      2|		ZEND_NULL_TAILCALL_HANDLER,
11994|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_TAILCALL_HANDLER,
11994|      2|		ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_CONST_TAILCALL_HANDLER,
11994|      2|		ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_TMP_TAILCALL_HANDLER,
11994|      2|		ZEND_NULL_TAILCALL_HANDLER,
11994|      2|		ZEND_NULL_TAILCALL_HANDLER,
11994|      2|		ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_CV_TAILCALL_HANDLER,
11994|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_TAILCALL_HANDLER,
11995|      2|		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_TAILCALL_HANDLER,
11995|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_NULL_TAILCALL_HANDLER,
11995|      2|		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_TAILCALL_HANDLER,
11995|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_TAILCALL_HANDLER,
11996|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11996|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11997|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11998|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
11999|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12000|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_TAILCALL_HANDLER,
12001|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_TAILCALL_HANDLER,
12001|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_NULL_TAILCALL_HANDLER,
12001|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_TAILCALL_HANDLER,
12001|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_OP_DATA_CONST_TAILCALL_HANDLER,
12002|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_OP_DATA_TMP_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_OP_DATA_CV_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12002|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_TAILCALL_HANDLER,
12003|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_TAILCALL_HANDLER,
12003|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_NULL_TAILCALL_HANDLER,
12003|      2|		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_TAILCALL_HANDLER,
12003|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_TAILCALL_HANDLER,
12004|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_TAILCALL_HANDLER,
12004|      2|		ZEND_NULL_TAILCALL_HANDLER,
12004|      2|		ZEND_NULL_TAILCALL_HANDLER,
12004|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_TAILCALL_HANDLER,
12004|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_CONST_TAILCALL_HANDLER,
12004|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_TMP_TAILCALL_HANDLER,
12004|      2|		ZEND_NULL_TAILCALL_HANDLER,
12004|      2|		ZEND_NULL_TAILCALL_HANDLER,
12004|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_CV_TAILCALL_HANDLER,
12004|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_NULL_TAILCALL_HANDLER,
12005|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_TAILCALL_HANDLER,
12006|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_TAILCALL_HANDLER,
12006|      2|		ZEND_NULL_TAILCALL_HANDLER,
12006|      2|		ZEND_NULL_TAILCALL_HANDLER,
12006|      2|		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_TAILCALL_HANDLER,
12006|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_TAILCALL_HANDLER,
12006|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_TAILCALL_HANDLER,
12006|      2|		ZEND_NULL_TAILCALL_HANDLER,
12006|      2|		ZEND_NULL_TAILCALL_HANDLER,
12006|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_TAILCALL_HANDLER,
12006|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_CONST_TAILCALL_HANDLER,
12007|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_TMP_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_CV_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12007|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_TAILCALL_HANDLER,
12008|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_TAILCALL_HANDLER,
12008|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_NULL_TAILCALL_HANDLER,
12008|      2|		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_TAILCALL_HANDLER,
12008|      2|		ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_CONST_TAILCALL_HANDLER,
12009|      2|		ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_TMP_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_CV_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12009|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_ASSIGN_OP_SPEC_VAR_CONST_TAILCALL_HANDLER,
12010|      2|		ZEND_ASSIGN_OP_SPEC_VAR_TMP_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12010|      2|		ZEND_ASSIGN_OP_SPEC_VAR_CV_TAILCALL_HANDLER,
12010|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_ASSIGN_OP_SPEC_CV_CONST_TAILCALL_HANDLER,
12011|      2|		ZEND_ASSIGN_OP_SPEC_CV_TMP_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12011|      2|		ZEND_ASSIGN_OP_SPEC_CV_CV_TAILCALL_HANDLER,
12011|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_NULL_TAILCALL_HANDLER,
12012|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_CONST_TAILCALL_HANDLER,
12013|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_TMP_TAILCALL_HANDLER,
12013|      2|		ZEND_NULL_TAILCALL_HANDLER,
12013|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12013|      2|		ZEND_ASSIGN_DIM_OP_SPEC_VAR_CV_TAILCALL_HANDLER,
12013|      2|		ZEND_NULL_TAILCALL_HANDLER,
12013|      2|		ZEND_NULL_TAILCALL_HANDLER,
12013|      2|		ZEND_NULL_TAILCALL_HANDLER,
12013|      2|		ZEND_NULL_TAILCALL_HANDLER,
12013|      2|		ZEND_NULL_TAILCALL_HANDLER,
12013|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_CONST_TAILCALL_HANDLER,
12014|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_TMP_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12014|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12014|      2|		ZEND_ASSIGN_DIM_OP_SPEC_CV_CV_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12014|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_VAR_CONST_TAILCALL_HANDLER,
12015|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_VAR_TMP_TAILCALL_HANDLER,
12015|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_NULL_TAILCALL_HANDLER,
12015|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_VAR_CV_TAILCALL_HANDLER,
12015|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12016|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12016|      2|		ZEND_NULL_TAILCALL_HANDLER,
12016|      2|		ZEND_NULL_TAILCALL_HANDLER,
12016|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12016|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_CV_CONST_TAILCALL_HANDLER,
12016|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_CV_TMP_TAILCALL_HANDLER,
12016|      2|		ZEND_NULL_TAILCALL_HANDLER,
12016|      2|		ZEND_NULL_TAILCALL_HANDLER,
12016|      2|		ZEND_ASSIGN_OBJ_OP_SPEC_CV_CV_TAILCALL_HANDLER,
12016|      2|		ZEND_ASSIGN_STATIC_PROP_OP_SPEC_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12017|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_ASSIGN_REF_SPEC_VAR_VAR_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_ASSIGN_REF_SPEC_VAR_CV_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12018|      2|		ZEND_NULL_TAILCALL_HANDLER,
12019|      2|		ZEND_NULL_TAILCALL_HANDLER,
12019|      2|		ZEND_NULL_TAILCALL_HANDLER,
12019|      2|		ZEND_ASSIGN_REF_SPEC_CV_VAR_TAILCALL_HANDLER,
12019|      2|		ZEND_NULL_TAILCALL_HANDLER,
12019|      2|		ZEND_ASSIGN_REF_SPEC_CV_CV_TAILCALL_HANDLER,
12019|      2|		ZEND_QM_ASSIGN_SPEC_CONST_TAILCALL_HANDLER,
12019|      2|		ZEND_QM_ASSIGN_SPEC_TMP_TAILCALL_HANDLER,
12019|      2|		ZEND_QM_ASSIGN_SPEC_VAR_TAILCALL_HANDLER,
12019|      2|		ZEND_NULL_TAILCALL_HANDLER,
12019|      2|		ZEND_QM_ASSIGN_SPEC_CV_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12020|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12021|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12022|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12023|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12024|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_TAILCALL_HANDLER,
12025|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_TAILCALL_HANDLER,
12025|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMP_OP_DATA_VAR_TAILCALL_HANDLER,
12025|      2|		ZEND_NULL_TAILCALL_HANDLER,
12025|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMP_OP_DATA_CV_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12026|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_TAILCALL_HANDLER,
12027|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV_TAILCALL_HANDLER,
12027|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR_TAILCALL_HANDLER,
12027|      2|		ZEND_NULL_TAILCALL_HANDLER,
12027|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMP_OP_DATA_VAR_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMP_OP_DATA_CV_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12028|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR_TAILCALL_HANDLER,
12029|      2|		ZEND_NULL_TAILCALL_HANDLER,
12029|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV_TAILCALL_HANDLER,
12030|      2|		ZEND_NULL_TAILCALL_HANDLER,
12030|      2|		ZEND_NULL_TAILCALL_HANDLER,
12030|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_TAILCALL_HANDLER,
12030|      2|		ZEND_NULL_TAILCALL_HANDLER,
12030|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_TAILCALL_HANDLER,
12030|      2|		ZEND_NULL_TAILCALL_HANDLER,
12030|      2|		ZEND_NULL_TAILCALL_HANDLER,
12030|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMP_OP_DATA_VAR_TAILCALL_HANDLER,
12030|      2|		ZEND_NULL_TAILCALL_HANDLER,
12030|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMP_OP_DATA_CV_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12031|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_TAILCALL_HANDLER,
12032|      2|		ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12032|      2|		ZEND_NULL_TAILCALL_HANDLER,
12033|      2|		ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_TAILCALL_HANDLER,
12033|      2|		ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_TAILCALL_HANDLER,
12033|      2|		ZEND_NULL_TAILCALL_HANDLER,
12033|      2|		ZEND_NULL_TAILCALL_HANDLER,
12033|      2|		ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12033|      2|		ZEND_PRE_INC_SPEC_CV_RETVAL_USED_TAILCALL_HANDLER,
12033|      2|		ZEND_NULL_TAILCALL_HANDLER,
12033|      2|		ZEND_NULL_TAILCALL_HANDLER,
12033|      2|		ZEND_NULL_TAILCALL_HANDLER,
12033|      2|		ZEND_NULL_TAILCALL_HANDLER,
12034|      2|		ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_TAILCALL_HANDLER,
12034|      2|		ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_TAILCALL_HANDLER,
12034|      2|		ZEND_NULL_TAILCALL_HANDLER,
12034|      2|		ZEND_NULL_TAILCALL_HANDLER,
12034|      2|		ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12034|      2|		ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_TAILCALL_HANDLER,
12034|      2|		ZEND_NULL_TAILCALL_HANDLER,
12034|      2|		ZEND_NULL_TAILCALL_HANDLER,
12034|      2|		ZEND_POST_INC_SPEC_VAR_TAILCALL_HANDLER,
12034|      2|		ZEND_NULL_TAILCALL_HANDLER,
12035|      2|		ZEND_POST_INC_SPEC_CV_TAILCALL_HANDLER,
12035|      2|		ZEND_NULL_TAILCALL_HANDLER,
12035|      2|		ZEND_NULL_TAILCALL_HANDLER,
12035|      2|		ZEND_POST_DEC_SPEC_VAR_TAILCALL_HANDLER,
12035|      2|		ZEND_NULL_TAILCALL_HANDLER,
12035|      2|		ZEND_POST_DEC_SPEC_CV_TAILCALL_HANDLER,
12035|      2|		ZEND_PRE_INC_STATIC_PROP_SPEC_TAILCALL_HANDLER,
12035|      2|		ZEND_POST_INC_STATIC_PROP_SPEC_TAILCALL_HANDLER,
12035|      2|		ZEND_JMP_SPEC_TAILCALL_HANDLER,
12035|      2|		ZEND_JMPZ_SPEC_CONST_TAILCALL_HANDLER,
12036|      2|		ZEND_JMPZ_SPEC_TMP_TAILCALL_HANDLER,
12036|      2|		ZEND_NULL_TAILCALL_HANDLER,
12036|      2|		ZEND_NULL_TAILCALL_HANDLER,
12036|      2|		ZEND_JMPZ_SPEC_CV_TAILCALL_HANDLER,
12036|      2|		ZEND_JMPNZ_SPEC_CONST_TAILCALL_HANDLER,
12036|      2|		ZEND_JMPNZ_SPEC_TMP_TAILCALL_HANDLER,
12036|      2|		ZEND_NULL_TAILCALL_HANDLER,
12036|      2|		ZEND_NULL_TAILCALL_HANDLER,
12036|      2|		ZEND_JMPNZ_SPEC_CV_TAILCALL_HANDLER,
12036|      2|		ZEND_JMPZ_EX_SPEC_CONST_TAILCALL_HANDLER,
12037|      2|		ZEND_JMPZ_EX_SPEC_TMP_TAILCALL_HANDLER,
12037|      2|		ZEND_NULL_TAILCALL_HANDLER,
12037|      2|		ZEND_NULL_TAILCALL_HANDLER,
12037|      2|		ZEND_JMPZ_EX_SPEC_CV_TAILCALL_HANDLER,
12037|      2|		ZEND_JMPNZ_EX_SPEC_CONST_TAILCALL_HANDLER,
12037|      2|		ZEND_JMPNZ_EX_SPEC_TMP_TAILCALL_HANDLER,
12037|      2|		ZEND_NULL_TAILCALL_HANDLER,
12037|      2|		ZEND_NULL_TAILCALL_HANDLER,
12037|      2|		ZEND_JMPNZ_EX_SPEC_CV_TAILCALL_HANDLER,
12037|      2|		ZEND_CASE_SPEC_TMP_CONST_TAILCALL_HANDLER,
12038|      2|		ZEND_CASE_SPEC_TMP_TMP_TAILCALL_HANDLER,
12038|      2|		ZEND_NULL_TAILCALL_HANDLER,
12038|      2|		ZEND_NULL_TAILCALL_HANDLER,
12038|      2|		ZEND_CASE_SPEC_TMP_CV_TAILCALL_HANDLER,
12038|      2|		ZEND_CHECK_VAR_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12038|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST_TAILCALL_HANDLER,
12038|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_CONST_TAILCALL_HANDLER,
12038|      2|		ZEND_NULL_TAILCALL_HANDLER,
12038|      2|		ZEND_NULL_TAILCALL_HANDLER,
12038|      2|		ZEND_NULL_TAILCALL_HANDLER,
12039|      2|		ZEND_NULL_TAILCALL_HANDLER,
12039|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12039|      2|		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_QUICK_TAILCALL_HANDLER,
12039|      2|		ZEND_NULL_TAILCALL_HANDLER,
12039|      2|		ZEND_NULL_TAILCALL_HANDLER,
12039|      2|		ZEND_CAST_SPEC_CONST_TAILCALL_HANDLER,
12039|      2|		ZEND_CAST_SPEC_TMP_TAILCALL_HANDLER,
12039|      2|		ZEND_NULL_TAILCALL_HANDLER,
12039|      2|		ZEND_NULL_TAILCALL_HANDLER,
12039|      2|		ZEND_CAST_SPEC_CV_TAILCALL_HANDLER,
12040|      2|		ZEND_BOOL_SPEC_CONST_TAILCALL_HANDLER,
12040|      2|		ZEND_BOOL_SPEC_TMP_TAILCALL_HANDLER,
12040|      2|		ZEND_NULL_TAILCALL_HANDLER,
12040|      2|		ZEND_NULL_TAILCALL_HANDLER,
12040|      2|		ZEND_BOOL_SPEC_CV_TAILCALL_HANDLER,
12040|      2|		ZEND_FAST_CONCAT_SPEC_CONST_CONST_TAILCALL_HANDLER,
12040|      2|		ZEND_FAST_CONCAT_SPEC_CONST_TMP_TAILCALL_HANDLER,
12040|      2|		ZEND_NULL_TAILCALL_HANDLER,
12040|      2|		ZEND_NULL_TAILCALL_HANDLER,
12040|      2|		ZEND_FAST_CONCAT_SPEC_CONST_CV_TAILCALL_HANDLER,
12041|      2|		ZEND_FAST_CONCAT_SPEC_TMP_CONST_TAILCALL_HANDLER,
12041|      2|		ZEND_FAST_CONCAT_SPEC_TMP_TMP_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12041|      2|		ZEND_FAST_CONCAT_SPEC_TMP_CV_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12041|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_FAST_CONCAT_SPEC_CV_CONST_TAILCALL_HANDLER,
12042|      2|		ZEND_FAST_CONCAT_SPEC_CV_TMP_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_NULL_TAILCALL_HANDLER,
12042|      2|		ZEND_FAST_CONCAT_SPEC_CV_CV_TAILCALL_HANDLER,
12043|      2|		ZEND_ROPE_INIT_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12043|      2|		ZEND_ROPE_INIT_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12043|      2|		ZEND_NULL_TAILCALL_HANDLER,
12043|      2|		ZEND_NULL_TAILCALL_HANDLER,
12043|      2|		ZEND_ROPE_INIT_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12043|      2|		ZEND_ROPE_ADD_SPEC_TMP_CONST_TAILCALL_HANDLER,
12043|      2|		ZEND_ROPE_ADD_SPEC_TMP_TMP_TAILCALL_HANDLER,
12043|      2|		ZEND_NULL_TAILCALL_HANDLER,
12043|      2|		ZEND_NULL_TAILCALL_HANDLER,
12043|      2|		ZEND_ROPE_ADD_SPEC_TMP_CV_TAILCALL_HANDLER,
12044|      2|		ZEND_ROPE_END_SPEC_TMP_CONST_TAILCALL_HANDLER,
12044|      2|		ZEND_ROPE_END_SPEC_TMP_TMP_TAILCALL_HANDLER,
12044|      2|		ZEND_NULL_TAILCALL_HANDLER,
12044|      2|		ZEND_NULL_TAILCALL_HANDLER,
12044|      2|		ZEND_ROPE_END_SPEC_TMP_CV_TAILCALL_HANDLER,
12044|      2|		ZEND_BEGIN_SILENCE_SPEC_TAILCALL_HANDLER,
12044|      2|		ZEND_END_SILENCE_SPEC_TMP_TAILCALL_HANDLER,
12044|      2|		ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_TAILCALL_HANDLER,
12044|      2|		ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_TAILCALL_HANDLER,
12044|      2|		ZEND_DO_FCALL_SPEC_RETVAL_USED_TAILCALL_HANDLER,
12045|      2|		ZEND_DO_FCALL_SPEC_OBSERVER_TAILCALL_HANDLER,
12045|      2|		ZEND_DO_FCALL_SPEC_OBSERVER_TAILCALL_HANDLER,
12045|      2|		ZEND_INIT_FCALL_SPEC_CONST_TAILCALL_HANDLER,
12045|      2|		ZEND_RETURN_SPEC_CONST_TAILCALL_HANDLER,
12045|      2|		ZEND_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12045|      2|		ZEND_RETURN_SPEC_TMP_TAILCALL_HANDLER,
12045|      2|		ZEND_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12045|      2|		ZEND_NULL_TAILCALL_HANDLER,
12045|      2|		ZEND_NULL_TAILCALL_HANDLER,
12045|      2|		ZEND_NULL_TAILCALL_HANDLER,
12046|      2|		ZEND_NULL_TAILCALL_HANDLER,
12046|      2|		ZEND_RETURN_SPEC_CV_TAILCALL_HANDLER,
12046|      2|		ZEND_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12046|      2|		ZEND_RECV_SPEC_UNUSED_TAILCALL_HANDLER,
12046|      2|		ZEND_RECV_INIT_SPEC_CONST_TAILCALL_HANDLER,
12046|      2|		ZEND_SEND_VAL_SPEC_CONST_CONST_TAILCALL_HANDLER,
12046|      2|		ZEND_NULL_TAILCALL_HANDLER,
12046|      2|		ZEND_NULL_TAILCALL_HANDLER,
12046|      2|		ZEND_SEND_VAL_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12046|      2|		ZEND_NULL_TAILCALL_HANDLER,
12047|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12047|      2|		ZEND_NULL_TAILCALL_HANDLER,
12047|      2|		ZEND_NULL_TAILCALL_HANDLER,
12047|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED_TAILCALL_HANDLER,
12047|      2|		ZEND_NULL_TAILCALL_HANDLER,
12047|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12047|      2|		ZEND_NULL_TAILCALL_HANDLER,
12047|      2|		ZEND_NULL_TAILCALL_HANDLER,
12047|      2|		ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED_TAILCALL_HANDLER,
12047|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12048|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12049|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12050|      2|		ZEND_NULL_TAILCALL_HANDLER,
12051|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_CONST_TAILCALL_HANDLER,
12051|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_CONST_TAILCALL_HANDLER,
12051|      2|		ZEND_NULL_TAILCALL_HANDLER,
12051|      2|		ZEND_NULL_TAILCALL_HANDLER,
12051|      2|		ZEND_NULL_TAILCALL_HANDLER,
12051|      2|		ZEND_NULL_TAILCALL_HANDLER,
12051|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12051|      2|		ZEND_SEND_VAR_EX_SPEC_VAR_UNUSED_QUICK_TAILCALL_HANDLER,
12051|      2|		ZEND_NULL_TAILCALL_HANDLER,
12051|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12052|      2|		ZEND_NULL_TAILCALL_HANDLER,
12053|      2|		ZEND_SEND_VAR_EX_SPEC_CV_CONST_TAILCALL_HANDLER,
12053|      2|		ZEND_SEND_VAR_EX_SPEC_CV_CONST_TAILCALL_HANDLER,
12053|      2|		ZEND_NULL_TAILCALL_HANDLER,
12053|      2|		ZEND_NULL_TAILCALL_HANDLER,
12053|      2|		ZEND_NULL_TAILCALL_HANDLER,
12053|      2|		ZEND_NULL_TAILCALL_HANDLER,
12053|      2|		ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12053|      2|		ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_QUICK_TAILCALL_HANDLER,
12053|      2|		ZEND_NULL_TAILCALL_HANDLER,
12053|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12054|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_SEND_REF_SPEC_VAR_CONST_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_SEND_REF_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12055|      2|		ZEND_NULL_TAILCALL_HANDLER,
12056|      2|		ZEND_SEND_REF_SPEC_CV_CONST_TAILCALL_HANDLER,
12056|      2|		ZEND_NULL_TAILCALL_HANDLER,
12056|      2|		ZEND_NULL_TAILCALL_HANDLER,
12056|      2|		ZEND_SEND_REF_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12056|      2|		ZEND_NULL_TAILCALL_HANDLER,
12056|      2|		ZEND_NEW_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12056|      2|		ZEND_NULL_TAILCALL_HANDLER,
12056|      2|		ZEND_NEW_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12056|      2|		ZEND_NEW_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12056|      2|		ZEND_NULL_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_TAILCALL_HANDLER,
12057|      2|		ZEND_FREE_SPEC_TMPVAR_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_ARRAY_SPEC_CONST_CONST_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_ARRAY_SPEC_CONST_TMP_TAILCALL_HANDLER,
12057|      2|		ZEND_NULL_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_ARRAY_SPEC_CONST_CV_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_ARRAY_SPEC_TMP_CONST_TAILCALL_HANDLER,
12057|      2|		ZEND_INIT_ARRAY_SPEC_TMP_TMP_TAILCALL_HANDLER,
12057|      2|		ZEND_NULL_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_TMP_CV_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_VAR_CONST_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_VAR_TMP_TAILCALL_HANDLER,
12058|      2|		ZEND_NULL_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_VAR_CV_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12058|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12058|      2|		ZEND_NULL_TAILCALL_HANDLER,
12059|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12059|      2|		ZEND_INIT_ARRAY_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12059|      2|		ZEND_INIT_ARRAY_SPEC_CV_CONST_TAILCALL_HANDLER,
12059|      2|		ZEND_INIT_ARRAY_SPEC_CV_TMP_TAILCALL_HANDLER,
12059|      2|		ZEND_NULL_TAILCALL_HANDLER,
12059|      2|		ZEND_INIT_ARRAY_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12059|      2|		ZEND_INIT_ARRAY_SPEC_CV_CV_TAILCALL_HANDLER,
12059|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_TAILCALL_HANDLER,
12059|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_TAILCALL_HANDLER,
12059|      2|		ZEND_NULL_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_TAILCALL_HANDLER,
12060|      2|		ZEND_NULL_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_TAILCALL_HANDLER,
12060|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_TAILCALL_HANDLER,
12060|      2|		ZEND_NULL_TAILCALL_HANDLER,
12061|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12061|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_TAILCALL_HANDLER,
12061|      2|		ZEND_NULL_TAILCALL_HANDLER,
12061|      2|		ZEND_NULL_TAILCALL_HANDLER,
12061|      2|		ZEND_NULL_TAILCALL_HANDLER,
12061|      2|		ZEND_NULL_TAILCALL_HANDLER,
12061|      2|		ZEND_NULL_TAILCALL_HANDLER,
12061|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_TAILCALL_HANDLER,
12061|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_TAILCALL_HANDLER,
12061|      2|		ZEND_NULL_TAILCALL_HANDLER,
12062|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12062|      2|		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_TAILCALL_HANDLER,
12062|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_CONST_TAILCALL_HANDLER,
12062|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_TAILCALL_HANDLER,
12062|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_TMP_TAILCALL_HANDLER,
12062|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_TAILCALL_HANDLER,
12062|      2|		ZEND_NULL_TAILCALL_HANDLER,
12062|      2|		ZEND_NULL_TAILCALL_HANDLER,
12062|      2|		ZEND_NULL_TAILCALL_HANDLER,
12062|      2|		ZEND_NULL_TAILCALL_HANDLER,
12063|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_CV_TAILCALL_HANDLER,
12063|      2|		ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_TAILCALL_HANDLER,
12063|      2|		ZEND_UNSET_VAR_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12063|      2|		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_TAILCALL_HANDLER,
12063|      2|		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_TAILCALL_HANDLER,
12063|      2|		ZEND_NULL_TAILCALL_HANDLER,
12063|      2|		ZEND_UNSET_VAR_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12063|      2|		ZEND_NULL_TAILCALL_HANDLER,
12063|      2|		ZEND_NULL_TAILCALL_HANDLER,
12063|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12064|      2|		ZEND_UNSET_DIM_SPEC_VAR_CONST_TAILCALL_HANDLER,
12064|      2|		ZEND_UNSET_DIM_SPEC_VAR_TMP_TAILCALL_HANDLER,
12064|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_UNSET_DIM_SPEC_VAR_CV_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12065|      2|		ZEND_UNSET_DIM_SPEC_CV_CONST_TAILCALL_HANDLER,
12065|      2|		ZEND_UNSET_DIM_SPEC_CV_TMP_TAILCALL_HANDLER,
12065|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_UNSET_DIM_SPEC_CV_CV_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12066|      2|		ZEND_NULL_TAILCALL_HANDLER,
12067|      2|		ZEND_NULL_TAILCALL_HANDLER,
12067|      2|		ZEND_NULL_TAILCALL_HANDLER,
12067|      2|		ZEND_UNSET_OBJ_SPEC_VAR_CONST_TAILCALL_HANDLER,
12067|      2|		ZEND_UNSET_OBJ_SPEC_VAR_TMP_TAILCALL_HANDLER,
12067|      2|		ZEND_NULL_TAILCALL_HANDLER,
12067|      2|		ZEND_NULL_TAILCALL_HANDLER,
12067|      2|		ZEND_UNSET_OBJ_SPEC_VAR_CV_TAILCALL_HANDLER,
12067|      2|		ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12067|      2|		ZEND_UNSET_OBJ_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12067|      2|		ZEND_NULL_TAILCALL_HANDLER,
12068|      2|		ZEND_NULL_TAILCALL_HANDLER,
12068|      2|		ZEND_UNSET_OBJ_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12068|      2|		ZEND_UNSET_OBJ_SPEC_CV_CONST_TAILCALL_HANDLER,
12068|      2|		ZEND_UNSET_OBJ_SPEC_CV_TMP_TAILCALL_HANDLER,
12068|      2|		ZEND_NULL_TAILCALL_HANDLER,
12068|      2|		ZEND_NULL_TAILCALL_HANDLER,
12068|      2|		ZEND_UNSET_OBJ_SPEC_CV_CV_TAILCALL_HANDLER,
12068|      2|		ZEND_FE_RESET_R_SPEC_CONST_TAILCALL_HANDLER,
12068|      2|		ZEND_FE_RESET_R_SPEC_TMP_TAILCALL_HANDLER,
12068|      2|		ZEND_NULL_TAILCALL_HANDLER,
12069|      2|		ZEND_NULL_TAILCALL_HANDLER,
12069|      2|		ZEND_FE_RESET_R_SPEC_CV_TAILCALL_HANDLER,
12069|      2|		ZEND_FE_FETCH_R_SPEC_TMP_TAILCALL_HANDLER,
12069|      2|		ZEND_FETCH_R_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12069|      2|		ZEND_FETCH_R_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12069|      2|		ZEND_NULL_TAILCALL_HANDLER,
12069|      2|		ZEND_NULL_TAILCALL_HANDLER,
12069|      2|		ZEND_FETCH_R_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12069|      2|		ZEND_FETCH_DIM_R_SPEC_CONST_CONST_TAILCALL_HANDLER,
12069|      2|		ZEND_FETCH_DIM_R_SPEC_CONST_TMP_TAILCALL_HANDLER,
12070|      2|		ZEND_NULL_TAILCALL_HANDLER,
12070|      2|		ZEND_NULL_TAILCALL_HANDLER,
12070|      2|		ZEND_FETCH_DIM_R_SPEC_CONST_CV_TAILCALL_HANDLER,
12070|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12070|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12070|      2|		ZEND_NULL_TAILCALL_HANDLER,
12070|      2|		ZEND_NULL_TAILCALL_HANDLER,
12070|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12070|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12070|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_NULL_TAILCALL_HANDLER,
12071|      2|		ZEND_FETCH_DIM_R_SPEC_CV_CONST_TAILCALL_HANDLER,
12071|      2|		ZEND_FETCH_DIM_R_SPEC_CV_TMP_TAILCALL_HANDLER,
12072|      2|		ZEND_NULL_TAILCALL_HANDLER,
12072|      2|		ZEND_NULL_TAILCALL_HANDLER,
12072|      2|		ZEND_FETCH_DIM_R_SPEC_CV_CV_TAILCALL_HANDLER,
12072|      2|		ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_TAILCALL_HANDLER,
12072|      2|		ZEND_FETCH_OBJ_R_SPEC_CONST_TMP_TAILCALL_HANDLER,
12072|      2|		ZEND_NULL_TAILCALL_HANDLER,
12072|      2|		ZEND_NULL_TAILCALL_HANDLER,
12072|      2|		ZEND_FETCH_OBJ_R_SPEC_CONST_CV_TAILCALL_HANDLER,
12072|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12072|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12073|      2|		ZEND_NULL_TAILCALL_HANDLER,
12073|      2|		ZEND_NULL_TAILCALL_HANDLER,
12073|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12073|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12073|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12073|      2|		ZEND_NULL_TAILCALL_HANDLER,
12073|      2|		ZEND_NULL_TAILCALL_HANDLER,
12073|      2|		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12073|      2|		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12073|      2|		ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12074|      2|		ZEND_NULL_TAILCALL_HANDLER,
12074|      2|		ZEND_NULL_TAILCALL_HANDLER,
12074|      2|		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12074|      2|		ZEND_FETCH_OBJ_R_SPEC_CV_CONST_TAILCALL_HANDLER,
12074|      2|		ZEND_FETCH_OBJ_R_SPEC_CV_TMP_TAILCALL_HANDLER,
12074|      2|		ZEND_NULL_TAILCALL_HANDLER,
12074|      2|		ZEND_NULL_TAILCALL_HANDLER,
12074|      2|		ZEND_FETCH_OBJ_R_SPEC_CV_CV_TAILCALL_HANDLER,
12074|      2|		ZEND_FETCH_W_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12074|      2|		ZEND_FETCH_W_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_FETCH_W_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12075|      2|		ZEND_NULL_TAILCALL_HANDLER,
12076|      2|		ZEND_NULL_TAILCALL_HANDLER,
12076|      2|		ZEND_NULL_TAILCALL_HANDLER,
12076|      2|		ZEND_NULL_TAILCALL_HANDLER,
12076|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_CONST_TAILCALL_HANDLER,
12076|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_TMP_TAILCALL_HANDLER,
12076|      2|		ZEND_NULL_TAILCALL_HANDLER,
12076|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12076|      2|		ZEND_FETCH_DIM_W_SPEC_VAR_CV_TAILCALL_HANDLER,
12076|      2|		ZEND_NULL_TAILCALL_HANDLER,
12076|      2|		ZEND_NULL_TAILCALL_HANDLER,
12077|      2|		ZEND_NULL_TAILCALL_HANDLER,
12077|      2|		ZEND_NULL_TAILCALL_HANDLER,
12077|      2|		ZEND_NULL_TAILCALL_HANDLER,
12077|      2|		ZEND_FETCH_DIM_W_SPEC_CV_CONST_TAILCALL_HANDLER,
12077|      2|		ZEND_FETCH_DIM_W_SPEC_CV_TMP_TAILCALL_HANDLER,
12077|      2|		ZEND_NULL_TAILCALL_HANDLER,
12077|      2|		ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12077|      2|		ZEND_FETCH_DIM_W_SPEC_CV_CV_TAILCALL_HANDLER,
12077|      2|		ZEND_NULL_TAILCALL_HANDLER,
12077|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_NULL_TAILCALL_HANDLER,
12078|      2|		ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_TAILCALL_HANDLER,
12078|      2|		ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_TAILCALL_HANDLER,
12079|      2|		ZEND_NULL_TAILCALL_HANDLER,
12079|      2|		ZEND_NULL_TAILCALL_HANDLER,
12079|      2|		ZEND_FETCH_OBJ_W_SPEC_VAR_CV_TAILCALL_HANDLER,
12079|      2|		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12079|      2|		ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12079|      2|		ZEND_NULL_TAILCALL_HANDLER,
12079|      2|		ZEND_NULL_TAILCALL_HANDLER,
12079|      2|		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12079|      2|		ZEND_FETCH_OBJ_W_SPEC_CV_CONST_TAILCALL_HANDLER,
12079|      2|		ZEND_FETCH_OBJ_W_SPEC_CV_TMP_TAILCALL_HANDLER,
12080|      2|		ZEND_NULL_TAILCALL_HANDLER,
12080|      2|		ZEND_NULL_TAILCALL_HANDLER,
12080|      2|		ZEND_FETCH_OBJ_W_SPEC_CV_CV_TAILCALL_HANDLER,
12080|      2|		ZEND_FETCH_RW_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12080|      2|		ZEND_FETCH_RW_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12080|      2|		ZEND_NULL_TAILCALL_HANDLER,
12080|      2|		ZEND_NULL_TAILCALL_HANDLER,
12080|      2|		ZEND_FETCH_RW_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12080|      2|		ZEND_NULL_TAILCALL_HANDLER,
12080|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_NULL_TAILCALL_HANDLER,
12081|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_TAILCALL_HANDLER,
12081|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_TAILCALL_HANDLER,
12082|      2|		ZEND_NULL_TAILCALL_HANDLER,
12082|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12082|      2|		ZEND_FETCH_DIM_RW_SPEC_VAR_CV_TAILCALL_HANDLER,
12082|      2|		ZEND_NULL_TAILCALL_HANDLER,
12082|      2|		ZEND_NULL_TAILCALL_HANDLER,
12082|      2|		ZEND_NULL_TAILCALL_HANDLER,
12082|      2|		ZEND_NULL_TAILCALL_HANDLER,
12082|      2|		ZEND_NULL_TAILCALL_HANDLER,
12082|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_CONST_TAILCALL_HANDLER,
12082|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_TMP_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12083|      2|		ZEND_FETCH_DIM_RW_SPEC_CV_CV_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12083|      2|		ZEND_NULL_TAILCALL_HANDLER,
12084|      2|		ZEND_NULL_TAILCALL_HANDLER,
12084|      2|		ZEND_NULL_TAILCALL_HANDLER,
12084|      2|		ZEND_NULL_TAILCALL_HANDLER,
12084|      2|		ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_TAILCALL_HANDLER,
12084|      2|		ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_TAILCALL_HANDLER,
12084|      2|		ZEND_NULL_TAILCALL_HANDLER,
12084|      2|		ZEND_NULL_TAILCALL_HANDLER,
12084|      2|		ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_TAILCALL_HANDLER,
12084|      2|		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12084|      2|		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12085|      2|		ZEND_NULL_TAILCALL_HANDLER,
12085|      2|		ZEND_NULL_TAILCALL_HANDLER,
12085|      2|		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12085|      2|		ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_TAILCALL_HANDLER,
12085|      2|		ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_TAILCALL_HANDLER,
12085|      2|		ZEND_NULL_TAILCALL_HANDLER,
12085|      2|		ZEND_NULL_TAILCALL_HANDLER,
12085|      2|		ZEND_FETCH_OBJ_RW_SPEC_CV_CV_TAILCALL_HANDLER,
12085|      2|		ZEND_FETCH_IS_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12085|      2|		ZEND_FETCH_IS_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12086|      2|		ZEND_NULL_TAILCALL_HANDLER,
12086|      2|		ZEND_NULL_TAILCALL_HANDLER,
12086|      2|		ZEND_FETCH_IS_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12086|      2|		ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_TAILCALL_HANDLER,
12086|      2|		ZEND_FETCH_DIM_IS_SPEC_CONST_TMP_TAILCALL_HANDLER,
12086|      2|		ZEND_NULL_TAILCALL_HANDLER,
12086|      2|		ZEND_NULL_TAILCALL_HANDLER,
12086|      2|		ZEND_FETCH_DIM_IS_SPEC_CONST_CV_TAILCALL_HANDLER,
12086|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12086|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12087|      2|		ZEND_NULL_TAILCALL_HANDLER,
12087|      2|		ZEND_NULL_TAILCALL_HANDLER,
12087|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12087|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12087|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12087|      2|		ZEND_NULL_TAILCALL_HANDLER,
12087|      2|		ZEND_NULL_TAILCALL_HANDLER,
12087|      2|		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12087|      2|		ZEND_NULL_TAILCALL_HANDLER,
12087|      2|		ZEND_NULL_TAILCALL_HANDLER,
12088|      2|		ZEND_NULL_TAILCALL_HANDLER,
12088|      2|		ZEND_NULL_TAILCALL_HANDLER,
12088|      2|		ZEND_NULL_TAILCALL_HANDLER,
12088|      2|		ZEND_FETCH_DIM_IS_SPEC_CV_CONST_TAILCALL_HANDLER,
12088|      2|		ZEND_FETCH_DIM_IS_SPEC_CV_TMP_TAILCALL_HANDLER,
12088|      2|		ZEND_NULL_TAILCALL_HANDLER,
12088|      2|		ZEND_NULL_TAILCALL_HANDLER,
12088|      2|		ZEND_FETCH_DIM_IS_SPEC_CV_CV_TAILCALL_HANDLER,
12088|      2|		ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_TAILCALL_HANDLER,
12088|      2|		ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_TAILCALL_HANDLER,
12089|      2|		ZEND_NULL_TAILCALL_HANDLER,
12089|      2|		ZEND_NULL_TAILCALL_HANDLER,
12089|      2|		ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_TAILCALL_HANDLER,
12089|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12089|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12089|      2|		ZEND_NULL_TAILCALL_HANDLER,
12089|      2|		ZEND_NULL_TAILCALL_HANDLER,
12089|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12089|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12089|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMP_TAILCALL_HANDLER,
12090|      2|		ZEND_NULL_TAILCALL_HANDLER,
12090|      2|		ZEND_NULL_TAILCALL_HANDLER,
12090|      2|		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_TAILCALL_HANDLER,
12090|      2|		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12090|      2|		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12090|      2|		ZEND_NULL_TAILCALL_HANDLER,
12090|      2|		ZEND_NULL_TAILCALL_HANDLER,
12090|      2|		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12090|      2|		ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_TAILCALL_HANDLER,
12090|      2|		ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_TAILCALL_HANDLER,
12091|      2|		ZEND_NULL_TAILCALL_HANDLER,
12091|      2|		ZEND_NULL_TAILCALL_HANDLER,
12091|      2|		ZEND_FETCH_OBJ_IS_SPEC_CV_CV_TAILCALL_HANDLER,
12091|      2|		ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12091|      2|		ZEND_FETCH_FUNC_ARG_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12091|      2|		ZEND_NULL_TAILCALL_HANDLER,
12091|      2|		ZEND_NULL_TAILCALL_HANDLER,
12091|      2|		ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12091|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_TAILCALL_HANDLER,
12091|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMP_TAILCALL_HANDLER,
12092|      2|		ZEND_NULL_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMP_TAILCALL_HANDLER,
12092|      2|		ZEND_NULL_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_TAILCALL_HANDLER,
12092|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_TAILCALL_HANDLER,
12093|      2|		ZEND_NULL_TAILCALL_HANDLER,
12093|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12093|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_TAILCALL_HANDLER,
12093|      2|		ZEND_NULL_TAILCALL_HANDLER,
12093|      2|		ZEND_NULL_TAILCALL_HANDLER,
12093|      2|		ZEND_NULL_TAILCALL_HANDLER,
12093|      2|		ZEND_NULL_TAILCALL_HANDLER,
12093|      2|		ZEND_NULL_TAILCALL_HANDLER,
12093|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_TAILCALL_HANDLER,
12093|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_TAILCALL_HANDLER,
12094|      2|		ZEND_NULL_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMP_TAILCALL_HANDLER,
12094|      2|		ZEND_NULL_TAILCALL_HANDLER,
12094|      2|		ZEND_NULL_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_TAILCALL_HANDLER,
12094|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMP_TAILCALL_HANDLER,
12095|      2|		ZEND_NULL_TAILCALL_HANDLER,
12095|      2|		ZEND_NULL_TAILCALL_HANDLER,
12095|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_TAILCALL_HANDLER,
12095|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_TAILCALL_HANDLER,
12095|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_TAILCALL_HANDLER,
12095|      2|		ZEND_NULL_TAILCALL_HANDLER,
12095|      2|		ZEND_NULL_TAILCALL_HANDLER,
12095|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_TAILCALL_HANDLER,
12095|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12095|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12096|      2|		ZEND_NULL_TAILCALL_HANDLER,
12096|      2|		ZEND_NULL_TAILCALL_HANDLER,
12096|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12096|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_TAILCALL_HANDLER,
12096|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_TAILCALL_HANDLER,
12096|      2|		ZEND_NULL_TAILCALL_HANDLER,
12096|      2|		ZEND_NULL_TAILCALL_HANDLER,
12096|      2|		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_TAILCALL_HANDLER,
12096|      2|		ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12096|      2|		ZEND_FETCH_UNSET_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_FETCH_UNSET_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12097|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_TAILCALL_HANDLER,
12098|      2|		ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12098|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_TAILCALL_HANDLER,
12099|      2|		ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12099|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_NULL_TAILCALL_HANDLER,
12100|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_TAILCALL_HANDLER,
12100|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_TAILCALL_HANDLER,
12101|      2|		ZEND_NULL_TAILCALL_HANDLER,
12101|      2|		ZEND_NULL_TAILCALL_HANDLER,
12101|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_TAILCALL_HANDLER,
12101|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12101|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12101|      2|		ZEND_NULL_TAILCALL_HANDLER,
12101|      2|		ZEND_NULL_TAILCALL_HANDLER,
12101|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12101|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_TAILCALL_HANDLER,
12101|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_TAILCALL_HANDLER,
12102|      2|		ZEND_NULL_TAILCALL_HANDLER,
12102|      2|		ZEND_NULL_TAILCALL_HANDLER,
12102|      2|		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_TAILCALL_HANDLER,
12102|      2|		ZEND_FETCH_LIST_R_SPEC_CONST_CONST_TAILCALL_HANDLER,
12102|      2|		ZEND_FETCH_LIST_R_SPEC_CONST_TMP_TAILCALL_HANDLER,
12102|      2|		ZEND_NULL_TAILCALL_HANDLER,
12102|      2|		ZEND_NULL_TAILCALL_HANDLER,
12102|      2|		ZEND_FETCH_LIST_R_SPEC_CONST_CV_TAILCALL_HANDLER,
12102|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12102|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_TAILCALL_HANDLER,
12103|      2|		ZEND_NULL_TAILCALL_HANDLER,
12103|      2|		ZEND_NULL_TAILCALL_HANDLER,
12103|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_TAILCALL_HANDLER,
12103|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12103|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_TAILCALL_HANDLER,
12103|      2|		ZEND_NULL_TAILCALL_HANDLER,
12103|      2|		ZEND_NULL_TAILCALL_HANDLER,
12103|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_TAILCALL_HANDLER,
12103|      2|		ZEND_NULL_TAILCALL_HANDLER,
12103|      2|		ZEND_NULL_TAILCALL_HANDLER,
12104|      2|		ZEND_NULL_TAILCALL_HANDLER,
12104|      2|		ZEND_NULL_TAILCALL_HANDLER,
12104|      2|		ZEND_NULL_TAILCALL_HANDLER,
12104|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12104|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_TAILCALL_HANDLER,
12104|      2|		ZEND_NULL_TAILCALL_HANDLER,
12104|      2|		ZEND_NULL_TAILCALL_HANDLER,
12104|      2|		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_TAILCALL_HANDLER,
12104|      2|		ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12104|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12105|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12105|      2|		ZEND_NULL_TAILCALL_HANDLER,
12105|      2|		ZEND_NULL_TAILCALL_HANDLER,
12105|      2|		ZEND_NULL_TAILCALL_HANDLER,
12105|      2|		ZEND_NULL_TAILCALL_HANDLER,
12105|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12105|      2|		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_QUICK_TAILCALL_HANDLER,
12105|      2|		ZEND_NULL_TAILCALL_HANDLER,
12105|      2|		ZEND_NULL_TAILCALL_HANDLER,
12105|      2|		ZEND_EXT_STMT_SPEC_TAILCALL_HANDLER,
12106|      2|		ZEND_EXT_FCALL_BEGIN_SPEC_TAILCALL_HANDLER,
12106|      2|		ZEND_EXT_FCALL_END_SPEC_TAILCALL_HANDLER,
12106|      2|		ZEND_EXT_NOP_SPEC_TAILCALL_HANDLER,
12106|      2|		ZEND_TICKS_SPEC_TAILCALL_HANDLER,
12106|      2|		ZEND_SEND_VAR_NO_REF_SPEC_VAR_CONST_TAILCALL_HANDLER,
12106|      2|		ZEND_NULL_TAILCALL_HANDLER,
12106|      2|		ZEND_NULL_TAILCALL_HANDLER,
12106|      2|		ZEND_SEND_VAR_NO_REF_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12106|      2|		ZEND_NULL_TAILCALL_HANDLER,
12106|      2|		ZEND_CATCH_SPEC_CONST_TAILCALL_HANDLER,
12107|      2|		ZEND_THROW_SPEC_CONST_TAILCALL_HANDLER,
12107|      2|		ZEND_THROW_SPEC_TMP_TAILCALL_HANDLER,
12107|      2|		ZEND_NULL_TAILCALL_HANDLER,
12107|      2|		ZEND_NULL_TAILCALL_HANDLER,
12107|      2|		ZEND_THROW_SPEC_CV_TAILCALL_HANDLER,
12107|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12107|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12107|      2|		ZEND_NULL_TAILCALL_HANDLER,
12107|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12107|      2|		ZEND_FETCH_CLASS_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12108|      2|		ZEND_CLONE_SPEC_CONST_TAILCALL_HANDLER,
12108|      2|		ZEND_CLONE_SPEC_TMP_TAILCALL_HANDLER,
12108|      2|		ZEND_NULL_TAILCALL_HANDLER,
12108|      2|		ZEND_CLONE_SPEC_UNUSED_TAILCALL_HANDLER,
12108|      2|		ZEND_CLONE_SPEC_CV_TAILCALL_HANDLER,
12108|      2|		ZEND_RETURN_BY_REF_SPEC_CONST_TAILCALL_HANDLER,
12108|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_TAILCALL_HANDLER,
12108|      2|		ZEND_RETURN_BY_REF_SPEC_TMP_TAILCALL_HANDLER,
12108|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_TAILCALL_HANDLER,
12108|      2|		ZEND_RETURN_BY_REF_SPEC_VAR_TAILCALL_HANDLER,
12109|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_TAILCALL_HANDLER,
12109|      2|		ZEND_NULL_TAILCALL_HANDLER,
12109|      2|		ZEND_NULL_TAILCALL_HANDLER,
12109|      2|		ZEND_RETURN_BY_REF_SPEC_CV_TAILCALL_HANDLER,
12109|      2|		ZEND_RETURN_BY_REF_SPEC_OBSERVER_TAILCALL_HANDLER,
12109|      2|		ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_TAILCALL_HANDLER,
12109|      2|		ZEND_INIT_METHOD_CALL_SPEC_CONST_TMP_TAILCALL_HANDLER,
12109|      2|		ZEND_NULL_TAILCALL_HANDLER,
12109|      2|		ZEND_NULL_TAILCALL_HANDLER,
12109|      2|		ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_TAILCALL_HANDLER,
12110|      2|		ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_TAILCALL_HANDLER,
12110|      2|		ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12110|      2|		ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12110|      2|		ZEND_NULL_TAILCALL_HANDLER,
12111|      2|		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12111|      2|		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12111|      2|		ZEND_NULL_TAILCALL_HANDLER,
12111|      2|		ZEND_NULL_TAILCALL_HANDLER,
12111|      2|		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12111|      2|		ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_TAILCALL_HANDLER,
12111|      2|		ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_TAILCALL_HANDLER,
12111|      2|		ZEND_NULL_TAILCALL_HANDLER,
12111|      2|		ZEND_NULL_TAILCALL_HANDLER,
12111|      2|		ZEND_INIT_METHOD_CALL_SPEC_CV_CV_TAILCALL_HANDLER,
12112|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_TAILCALL_HANDLER,
12112|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_TAILCALL_HANDLER,
12112|      2|		ZEND_NULL_TAILCALL_HANDLER,
12112|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12112|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_TAILCALL_HANDLER,
12112|      2|		ZEND_NULL_TAILCALL_HANDLER,
12112|      2|		ZEND_NULL_TAILCALL_HANDLER,
12112|      2|		ZEND_NULL_TAILCALL_HANDLER,
12112|      2|		ZEND_NULL_TAILCALL_HANDLER,
12112|      2|		ZEND_NULL_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_TAILCALL_HANDLER,
12113|      2|		ZEND_NULL_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12113|      2|		ZEND_NULL_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12113|      2|		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12114|      2|		ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_NULL_TAILCALL_HANDLER,
12114|      2|		ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12115|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_TAILCALL_HANDLER,
12115|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMP_TAILCALL_HANDLER,
12115|      2|		ZEND_NULL_TAILCALL_HANDLER,
12115|      2|		ZEND_NULL_TAILCALL_HANDLER,
12115|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_TAILCALL_HANDLER,
12115|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CONST_TAILCALL_HANDLER,
12115|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_TMP_TAILCALL_HANDLER,
12115|      2|		ZEND_NULL_TAILCALL_HANDLER,
12115|      2|		ZEND_NULL_TAILCALL_HANDLER,
12115|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CV_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12116|      2|		ZEND_NULL_TAILCALL_HANDLER,
12117|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_TAILCALL_HANDLER,
12117|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMP_TAILCALL_HANDLER,
12117|      2|		ZEND_NULL_TAILCALL_HANDLER,
12117|      2|		ZEND_NULL_TAILCALL_HANDLER,
12117|      2|		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_TAILCALL_HANDLER,
12117|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_CONST_TAILCALL_HANDLER,
12117|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_CONST_TAILCALL_HANDLER,
12117|      2|		ZEND_NULL_TAILCALL_HANDLER,
12117|      2|		ZEND_NULL_TAILCALL_HANDLER,
12117|      2|		ZEND_NULL_TAILCALL_HANDLER,
12118|      2|		ZEND_NULL_TAILCALL_HANDLER,
12118|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12118|      2|		ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_QUICK_TAILCALL_HANDLER,
12118|      2|		ZEND_NULL_TAILCALL_HANDLER,
12118|      2|		ZEND_NULL_TAILCALL_HANDLER,
12118|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_CONST_TAILCALL_HANDLER,
12118|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_CONST_TAILCALL_HANDLER,
12118|      2|		ZEND_NULL_TAILCALL_HANDLER,
12118|      2|		ZEND_NULL_TAILCALL_HANDLER,
12118|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12119|      2|		ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_QUICK_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12119|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12120|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12121|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12122|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_SEND_VAR_SPEC_VAR_CONST_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12123|      2|		ZEND_SEND_VAR_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12123|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_SEND_VAR_SPEC_CV_CONST_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12124|      2|		ZEND_SEND_VAR_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12124|      2|		ZEND_NULL_TAILCALL_HANDLER,
12125|      2|		ZEND_INIT_USER_CALL_SPEC_CONST_CONST_TAILCALL_HANDLER,
12125|      2|		ZEND_INIT_USER_CALL_SPEC_CONST_TMP_TAILCALL_HANDLER,
12125|      2|		ZEND_NULL_TAILCALL_HANDLER,
12125|      2|		ZEND_NULL_TAILCALL_HANDLER,
12125|      2|		ZEND_INIT_USER_CALL_SPEC_CONST_CV_TAILCALL_HANDLER,
12125|      2|		ZEND_SEND_ARRAY_SPEC_TAILCALL_HANDLER,
12125|      2|		ZEND_SEND_USER_SPEC_CONST_TAILCALL_HANDLER,
12125|      2|		ZEND_SEND_USER_SPEC_TMP_TAILCALL_HANDLER,
12125|      2|		ZEND_NULL_TAILCALL_HANDLER,
12125|      2|		ZEND_NULL_TAILCALL_HANDLER,
12126|      2|		ZEND_SEND_USER_SPEC_CV_TAILCALL_HANDLER,
12126|      2|		ZEND_STRLEN_SPEC_CONST_TAILCALL_HANDLER,
12126|      2|		ZEND_STRLEN_SPEC_TMP_TAILCALL_HANDLER,
12126|      2|		ZEND_NULL_TAILCALL_HANDLER,
12126|      2|		ZEND_NULL_TAILCALL_HANDLER,
12126|      2|		ZEND_STRLEN_SPEC_CV_TAILCALL_HANDLER,
12126|      2|		ZEND_DEFINED_SPEC_CONST_TAILCALL_HANDLER,
12126|      2|		ZEND_TYPE_CHECK_SPEC_CONST_TAILCALL_HANDLER,
12126|      2|		ZEND_TYPE_CHECK_SPEC_TMP_TAILCALL_HANDLER,
12126|      2|		ZEND_NULL_TAILCALL_HANDLER,
12127|      2|		ZEND_NULL_TAILCALL_HANDLER,
12127|      2|		ZEND_TYPE_CHECK_SPEC_CV_TAILCALL_HANDLER,
12127|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12127|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12127|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12127|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12127|      2|		ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12127|      2|		ZEND_FE_RESET_RW_SPEC_CONST_TAILCALL_HANDLER,
12127|      2|		ZEND_FE_RESET_RW_SPEC_TMP_TAILCALL_HANDLER,
12127|      2|		ZEND_FE_RESET_RW_SPEC_VAR_TAILCALL_HANDLER,
12128|      2|		ZEND_NULL_TAILCALL_HANDLER,
12128|      2|		ZEND_FE_RESET_RW_SPEC_CV_TAILCALL_HANDLER,
12128|      2|		ZEND_FE_FETCH_RW_SPEC_VAR_TAILCALL_HANDLER,
12128|      2|		ZEND_FE_FREE_SPEC_TMPVAR_TAILCALL_HANDLER,
12128|      2|		ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_TAILCALL_HANDLER,
12128|      2|		ZEND_INIT_DYNAMIC_CALL_SPEC_TMP_TAILCALL_HANDLER,
12128|      2|		ZEND_NULL_TAILCALL_HANDLER,
12128|      2|		ZEND_NULL_TAILCALL_HANDLER,
12128|      2|		ZEND_INIT_DYNAMIC_CALL_SPEC_CV_TAILCALL_HANDLER,
12128|      2|		ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_ICALL_SPEC_RETVAL_USED_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_ICALL_SPEC_OBSERVER_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_ICALL_SPEC_OBSERVER_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_UCALL_SPEC_RETVAL_USED_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_UCALL_SPEC_OBSERVER_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_UCALL_SPEC_OBSERVER_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_TAILCALL_HANDLER,
12129|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER_TAILCALL_HANDLER,
12130|      2|		ZEND_DO_FCALL_BY_NAME_SPEC_OBSERVER_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12130|      2|		ZEND_NULL_TAILCALL_HANDLER,
12131|      2|		ZEND_NULL_TAILCALL_HANDLER,
12131|      2|		ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_TAILCALL_HANDLER,
12131|      2|		ZEND_PRE_INC_OBJ_SPEC_VAR_TMP_TAILCALL_HANDLER,
12131|      2|		ZEND_NULL_TAILCALL_HANDLER,
12131|      2|		ZEND_NULL_TAILCALL_HANDLER,
12131|      2|		ZEND_PRE_INC_OBJ_SPEC_VAR_CV_TAILCALL_HANDLER,
12131|      2|		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12131|      2|		ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12131|      2|		ZEND_NULL_TAILCALL_HANDLER,
12131|      2|		ZEND_NULL_TAILCALL_HANDLER,
12132|      2|		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12132|      2|		ZEND_PRE_INC_OBJ_SPEC_CV_CONST_TAILCALL_HANDLER,
12132|      2|		ZEND_PRE_INC_OBJ_SPEC_CV_TMP_TAILCALL_HANDLER,
12132|      2|		ZEND_NULL_TAILCALL_HANDLER,
12132|      2|		ZEND_NULL_TAILCALL_HANDLER,
12132|      2|		ZEND_PRE_INC_OBJ_SPEC_CV_CV_TAILCALL_HANDLER,
12132|      2|		ZEND_NULL_TAILCALL_HANDLER,
12132|      2|		ZEND_NULL_TAILCALL_HANDLER,
12132|      2|		ZEND_NULL_TAILCALL_HANDLER,
12132|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_POST_INC_OBJ_SPEC_VAR_CONST_TAILCALL_HANDLER,
12133|      2|		ZEND_POST_INC_OBJ_SPEC_VAR_TMP_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12133|      2|		ZEND_NULL_TAILCALL_HANDLER,
12134|      2|		ZEND_POST_INC_OBJ_SPEC_VAR_CV_TAILCALL_HANDLER,
12134|      2|		ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12134|      2|		ZEND_POST_INC_OBJ_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12134|      2|		ZEND_NULL_TAILCALL_HANDLER,
12134|      2|		ZEND_NULL_TAILCALL_HANDLER,
12134|      2|		ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12134|      2|		ZEND_POST_INC_OBJ_SPEC_CV_CONST_TAILCALL_HANDLER,
12134|      2|		ZEND_POST_INC_OBJ_SPEC_CV_TMP_TAILCALL_HANDLER,
12134|      2|		ZEND_NULL_TAILCALL_HANDLER,
12134|      2|		ZEND_NULL_TAILCALL_HANDLER,
12135|      2|		ZEND_POST_INC_OBJ_SPEC_CV_CV_TAILCALL_HANDLER,
12135|      2|		ZEND_ECHO_SPEC_CONST_TAILCALL_HANDLER,
12135|      2|		ZEND_ECHO_SPEC_TMP_TAILCALL_HANDLER,
12135|      2|		ZEND_NULL_TAILCALL_HANDLER,
12135|      2|		ZEND_NULL_TAILCALL_HANDLER,
12135|      2|		ZEND_ECHO_SPEC_CV_TAILCALL_HANDLER,
12135|      2|		ZEND_NULL_TAILCALL_HANDLER,
12135|      2|		ZEND_NULL_TAILCALL_HANDLER,
12135|      2|		ZEND_NULL_TAILCALL_HANDLER,
12135|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_INSTANCEOF_SPEC_TMP_CONST_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_INSTANCEOF_SPEC_TMP_VAR_TAILCALL_HANDLER,
12136|      2|		ZEND_INSTANCEOF_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12136|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_INSTANCEOF_SPEC_CV_CONST_TAILCALL_HANDLER,
12137|      2|		ZEND_NULL_TAILCALL_HANDLER,
12137|      2|		ZEND_INSTANCEOF_SPEC_CV_VAR_TAILCALL_HANDLER,
12138|      2|		ZEND_INSTANCEOF_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12138|      2|		ZEND_NULL_TAILCALL_HANDLER,
12138|      2|		ZEND_GENERATOR_CREATE_SPEC_TAILCALL_HANDLER,
12138|      2|		ZEND_NULL_TAILCALL_HANDLER,
12138|      2|		ZEND_NULL_TAILCALL_HANDLER,
12138|      2|		ZEND_MAKE_REF_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12138|      2|		ZEND_NULL_TAILCALL_HANDLER,
12138|      2|		ZEND_MAKE_REF_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12138|      2|		ZEND_DECLARE_FUNCTION_SPEC_TAILCALL_HANDLER,
12138|      2|		ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_TAILCALL_HANDLER,
12139|      2|		ZEND_DECLARE_CONST_SPEC_CONST_CONST_TAILCALL_HANDLER,
12139|      2|		ZEND_DECLARE_CLASS_SPEC_CONST_TAILCALL_HANDLER,
12139|      2|		ZEND_DECLARE_CLASS_DELAYED_SPEC_CONST_CONST_TAILCALL_HANDLER,
12139|      2|		ZEND_DECLARE_ANON_CLASS_SPEC_TAILCALL_HANDLER,
12139|      2|		ZEND_ADD_ARRAY_UNPACK_SPEC_TAILCALL_HANDLER,
12139|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_TAILCALL_HANDLER,
12139|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMP_TAILCALL_HANDLER,
12139|      2|		ZEND_NULL_TAILCALL_HANDLER,
12139|      2|		ZEND_NULL_TAILCALL_HANDLER,
12139|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_TAILCALL_HANDLER,
12140|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CONST_TAILCALL_HANDLER,
12140|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_TMP_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12140|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CV_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12140|      2|		ZEND_NULL_TAILCALL_HANDLER,
12141|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12141|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12141|      2|		ZEND_NULL_TAILCALL_HANDLER,
12141|      2|		ZEND_NULL_TAILCALL_HANDLER,
12141|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12141|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_TAILCALL_HANDLER,
12141|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMP_TAILCALL_HANDLER,
12141|      2|		ZEND_NULL_TAILCALL_HANDLER,
12141|      2|		ZEND_NULL_TAILCALL_HANDLER,
12141|      2|		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_TAILCALL_HANDLER,
12142|      2|		ZEND_HANDLE_EXCEPTION_SPEC_TAILCALL_HANDLER,
12142|      2|		ZEND_USER_OPCODE_SPEC_TAILCALL_HANDLER,
12142|      2|		ZEND_ASSERT_CHECK_SPEC_TAILCALL_HANDLER,
12142|      2|		ZEND_JMP_SET_SPEC_CONST_TAILCALL_HANDLER,
12142|      2|		ZEND_JMP_SET_SPEC_TMP_TAILCALL_HANDLER,
12142|      2|		ZEND_NULL_TAILCALL_HANDLER,
12142|      2|		ZEND_NULL_TAILCALL_HANDLER,
12142|      2|		ZEND_JMP_SET_SPEC_CV_TAILCALL_HANDLER,
12142|      2|		ZEND_UNSET_CV_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12142|      2|		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_TAILCALL_HANDLER,
12143|      2|		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_TAILCALL_HANDLER,
12143|      2|		ZEND_FETCH_LIST_W_SPEC_VAR_CONST_TAILCALL_HANDLER,
12143|      2|		ZEND_FETCH_LIST_W_SPEC_VAR_TMP_TAILCALL_HANDLER,
12143|      2|		ZEND_NULL_TAILCALL_HANDLER,
12143|      2|		ZEND_NULL_TAILCALL_HANDLER,
12143|      2|		ZEND_FETCH_LIST_W_SPEC_VAR_CV_TAILCALL_HANDLER,
12143|      2|		ZEND_SEPARATE_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12143|      2|		ZEND_NULL_TAILCALL_HANDLER,
12143|      2|		ZEND_FETCH_CLASS_NAME_SPEC_TMP_TAILCALL_HANDLER,
12143|      2|		ZEND_NULL_TAILCALL_HANDLER,
12144|      2|		ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_TAILCALL_HANDLER,
12144|      2|		ZEND_FETCH_CLASS_NAME_SPEC_CV_TAILCALL_HANDLER,
12144|      2|		ZEND_CALL_TRAMPOLINE_SPEC_TAILCALL_HANDLER,
12144|      2|		ZEND_CALL_TRAMPOLINE_SPEC_OBSERVER_TAILCALL_HANDLER,
12144|      2|		ZEND_DISCARD_EXCEPTION_SPEC_TAILCALL_HANDLER,
12144|      2|		ZEND_YIELD_SPEC_CONST_CONST_TAILCALL_HANDLER,
12144|      2|		ZEND_YIELD_SPEC_CONST_TMP_TAILCALL_HANDLER,
12144|      2|		ZEND_NULL_TAILCALL_HANDLER,
12144|      2|		ZEND_YIELD_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12144|      2|		ZEND_YIELD_SPEC_CONST_CV_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_TMP_CONST_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_TMP_TMP_TAILCALL_HANDLER,
12145|      2|		ZEND_NULL_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_TMP_CV_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_VAR_CONST_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_VAR_TMP_TAILCALL_HANDLER,
12145|      2|		ZEND_NULL_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12145|      2|		ZEND_YIELD_SPEC_VAR_CV_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_UNUSED_TMP_TAILCALL_HANDLER,
12146|      2|		ZEND_NULL_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_UNUSED_CV_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_CV_CONST_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_CV_TMP_TAILCALL_HANDLER,
12146|      2|		ZEND_NULL_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12146|      2|		ZEND_YIELD_SPEC_CV_CV_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_CONST_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_TMP_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_VAR_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12147|      2|		ZEND_NULL_TAILCALL_HANDLER,
12147|      2|		ZEND_NULL_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_CV_TAILCALL_HANDLER,
12147|      2|		ZEND_GENERATOR_RETURN_SPEC_OBSERVER_TAILCALL_HANDLER,
12148|      2|		ZEND_FAST_CALL_SPEC_TAILCALL_HANDLER,
12148|      2|		ZEND_FAST_RET_SPEC_TAILCALL_HANDLER,
12148|      2|		ZEND_RECV_VARIADIC_SPEC_UNUSED_TAILCALL_HANDLER,
12148|      2|		ZEND_SEND_UNPACK_SPEC_TAILCALL_HANDLER,
12148|      2|		ZEND_YIELD_FROM_SPEC_CONST_TAILCALL_HANDLER,
12148|      2|		ZEND_YIELD_FROM_SPEC_TMP_TAILCALL_HANDLER,
12148|      2|		ZEND_NULL_TAILCALL_HANDLER,
12148|      2|		ZEND_NULL_TAILCALL_HANDLER,
12148|      2|		ZEND_YIELD_FROM_SPEC_CV_TAILCALL_HANDLER,
12148|      2|		ZEND_COPY_TMP_SPEC_TMPVAR_UNUSED_TAILCALL_HANDLER,
12149|      2|		ZEND_BIND_GLOBAL_SPEC_CV_CONST_TAILCALL_HANDLER,
12149|      2|		ZEND_COALESCE_SPEC_CONST_TAILCALL_HANDLER,
12149|      2|		ZEND_COALESCE_SPEC_TMP_TAILCALL_HANDLER,
12149|      2|		ZEND_NULL_TAILCALL_HANDLER,
12149|      2|		ZEND_NULL_TAILCALL_HANDLER,
12149|      2|		ZEND_COALESCE_SPEC_CV_TAILCALL_HANDLER,
12149|      2|		ZEND_SPACESHIP_SPEC_CONST_CONST_TAILCALL_HANDLER,
12149|      2|		ZEND_SPACESHIP_SPEC_CONST_TMP_TAILCALL_HANDLER,
12149|      2|		ZEND_NULL_TAILCALL_HANDLER,
12149|      2|		ZEND_NULL_TAILCALL_HANDLER,
12150|      2|		ZEND_SPACESHIP_SPEC_CONST_CV_TAILCALL_HANDLER,
12150|      2|		ZEND_SPACESHIP_SPEC_TMP_CONST_TAILCALL_HANDLER,
12150|      2|		ZEND_SPACESHIP_SPEC_TMP_TMP_TAILCALL_HANDLER,
12150|      2|		ZEND_NULL_TAILCALL_HANDLER,
12150|      2|		ZEND_NULL_TAILCALL_HANDLER,
12150|      2|		ZEND_SPACESHIP_SPEC_TMP_CV_TAILCALL_HANDLER,
12150|      2|		ZEND_NULL_TAILCALL_HANDLER,
12150|      2|		ZEND_NULL_TAILCALL_HANDLER,
12150|      2|		ZEND_NULL_TAILCALL_HANDLER,
12150|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_SPACESHIP_SPEC_CV_CONST_TAILCALL_HANDLER,
12151|      2|		ZEND_SPACESHIP_SPEC_CV_TMP_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12151|      2|		ZEND_NULL_TAILCALL_HANDLER,
12152|      2|		ZEND_SPACESHIP_SPEC_CV_CV_TAILCALL_HANDLER,
12152|      2|		ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12152|      2|		ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12152|      2|		ZEND_NULL_TAILCALL_HANDLER,
12152|      2|		ZEND_NULL_TAILCALL_HANDLER,
12152|      2|		ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12152|      2|		ZEND_NULL_TAILCALL_HANDLER,
12152|      2|		ZEND_FETCH_STATIC_PROP_R_SPEC_TAILCALL_HANDLER,
12152|      2|		ZEND_FETCH_STATIC_PROP_W_SPEC_TAILCALL_HANDLER,
12152|      2|		ZEND_FETCH_STATIC_PROP_RW_SPEC_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_STATIC_PROP_IS_SPEC_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TAILCALL_HANDLER,
12153|      2|		ZEND_UNSET_STATIC_PROP_SPEC_TAILCALL_HANDLER,
12153|      2|		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12153|      2|		ZEND_NULL_TAILCALL_HANDLER,
12153|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12154|      2|		ZEND_NULL_TAILCALL_HANDLER,
12154|      2|		ZEND_NULL_TAILCALL_HANDLER,
12154|      2|		ZEND_NULL_TAILCALL_HANDLER,
12154|      2|		ZEND_NULL_TAILCALL_HANDLER,
12154|      2|		ZEND_NULL_TAILCALL_HANDLER,
12154|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_TAILCALL_HANDLER,
12154|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_TMPVARCV_TAILCALL_HANDLER,
12154|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_TMPVARCV_TAILCALL_HANDLER,
12154|      2|		ZEND_NULL_TAILCALL_HANDLER,
12154|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_TMPVARCV_TAILCALL_HANDLER,
12155|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_TAILCALL_HANDLER,
12155|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_TMPVARCV_TAILCALL_HANDLER,
12155|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_TMPVARCV_TAILCALL_HANDLER,
12155|      2|		ZEND_NULL_TAILCALL_HANDLER,
12155|      2|		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_TMPVARCV_TAILCALL_HANDLER,
12155|      2|		ZEND_NULL_TAILCALL_HANDLER,
12155|      2|		ZEND_NULL_TAILCALL_HANDLER,
12155|      2|		ZEND_NULL_TAILCALL_HANDLER,
12155|      2|		ZEND_NULL_TAILCALL_HANDLER,
12155|      2|		ZEND_NULL_TAILCALL_HANDLER,
12156|      2|		ZEND_BIND_LEXICAL_SPEC_TMP_CV_TAILCALL_HANDLER,
12156|      2|		ZEND_BIND_STATIC_SPEC_CV_TAILCALL_HANDLER,
12156|      2|		ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12156|      2|		ZEND_SEND_FUNC_ARG_SPEC_VAR_CONST_TAILCALL_HANDLER,
12156|      2|		ZEND_NULL_TAILCALL_HANDLER,
12156|      2|		ZEND_NULL_TAILCALL_HANDLER,
12156|      2|		ZEND_SEND_FUNC_ARG_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12156|      2|		ZEND_NULL_TAILCALL_HANDLER,
12156|      2|		ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12156|      2|		ZEND_SWITCH_LONG_SPEC_CONST_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_NULL_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_STRING_SPEC_CONST_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_NULL_TAILCALL_HANDLER,
12157|      2|		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12157|      2|		ZEND_IN_ARRAY_SPEC_CONST_CONST_TAILCALL_HANDLER,
12158|      2|		ZEND_IN_ARRAY_SPEC_TMP_CONST_TAILCALL_HANDLER,
12158|      2|		ZEND_NULL_TAILCALL_HANDLER,
12158|      2|		ZEND_NULL_TAILCALL_HANDLER,
12158|      2|		ZEND_IN_ARRAY_SPEC_CV_CONST_TAILCALL_HANDLER,
12158|      2|		ZEND_COUNT_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12158|      2|		ZEND_COUNT_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12158|      2|		ZEND_NULL_TAILCALL_HANDLER,
12158|      2|		ZEND_NULL_TAILCALL_HANDLER,
12158|      2|		ZEND_COUNT_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12158|      2|		ZEND_GET_CLASS_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_CLASS_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_NULL_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_CLASS_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_TYPE_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_TYPE_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12159|      2|		ZEND_NULL_TAILCALL_HANDLER,
12159|      2|		ZEND_NULL_TAILCALL_HANDLER,
12159|      2|		ZEND_GET_TYPE_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12160|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST_TAILCALL_HANDLER,
12160|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMP_TAILCALL_HANDLER,
12160|      2|		ZEND_NULL_TAILCALL_HANDLER,
12160|      2|		ZEND_NULL_TAILCALL_HANDLER,
12160|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV_TAILCALL_HANDLER,
12160|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_TMP_CONST_TAILCALL_HANDLER,
12160|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_TMP_TMP_TAILCALL_HANDLER,
12160|      2|		ZEND_NULL_TAILCALL_HANDLER,
12160|      2|		ZEND_NULL_TAILCALL_HANDLER,
12160|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_TMP_CV_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12161|      2|		ZEND_NULL_TAILCALL_HANDLER,
12162|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST_TAILCALL_HANDLER,
12162|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMP_TAILCALL_HANDLER,
12162|      2|		ZEND_NULL_TAILCALL_HANDLER,
12162|      2|		ZEND_NULL_TAILCALL_HANDLER,
12162|      2|		ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV_TAILCALL_HANDLER,
12162|      2|		ZEND_MATCH_SPEC_CONST_CONST_TAILCALL_HANDLER,
12162|      2|		ZEND_MATCH_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12162|      2|		ZEND_MATCH_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12162|      2|		ZEND_NULL_TAILCALL_HANDLER,
12162|      2|		ZEND_MATCH_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12163|      2|		ZEND_CASE_STRICT_SPEC_TMP_CONST_TAILCALL_HANDLER,
12163|      2|		ZEND_CASE_STRICT_SPEC_TMP_TMP_TAILCALL_HANDLER,
12163|      2|		ZEND_NULL_TAILCALL_HANDLER,
12163|      2|		ZEND_NULL_TAILCALL_HANDLER,
12163|      2|		ZEND_CASE_STRICT_SPEC_TMP_CV_TAILCALL_HANDLER,
12163|      2|		ZEND_MATCH_ERROR_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12163|      2|		ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_TAILCALL_HANDLER,
12163|      2|		ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_TAILCALL_HANDLER,
12163|      2|		ZEND_NULL_TAILCALL_HANDLER,
12163|      2|		ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_TAILCALL_HANDLER,
12164|      2|		ZEND_JMP_NULL_SPEC_CONST_TAILCALL_HANDLER,
12164|      2|		ZEND_JMP_NULL_SPEC_TMP_TAILCALL_HANDLER,
12164|      2|		ZEND_NULL_TAILCALL_HANDLER,
12164|      2|		ZEND_NULL_TAILCALL_HANDLER,
12164|      2|		ZEND_JMP_NULL_SPEC_CV_TAILCALL_HANDLER,
12164|      2|		ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12164|      2|		ZEND_FETCH_GLOBALS_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12164|      2|		ZEND_VERIFY_NEVER_TYPE_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12164|      2|		ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12164|      2|		ZEND_BIND_INIT_STATIC_OR_JMP_SPEC_CV_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_0_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_0_SPEC_OBSERVER_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_1_SPEC_OBSERVER_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_2_SPEC_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_2_SPEC_OBSERVER_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_3_SPEC_TAILCALL_HANDLER,
12165|      2|		ZEND_FRAMELESS_ICALL_3_SPEC_OBSERVER_TAILCALL_HANDLER,
12165|      2|		ZEND_JMP_FRAMELESS_SPEC_CONST_TAILCALL_HANDLER,
12165|      2|		ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_TAILCALL_HANDLER,
12166|      2|		ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_TAILCALL_HANDLER,
12166|      2|		ZEND_TYPE_ASSERT_SPEC_CONST_TAILCALL_HANDLER,
12166|      2|		ZEND_INIT_FCALL_OFFSET_SPEC_CONST_TAILCALL_HANDLER,
12166|      2|		ZEND_RECV_NOTYPE_SPEC_TAILCALL_HANDLER,
12166|      2|		ZEND_NULL_TAILCALL_HANDLER,
12166|      2|		ZEND_COUNT_ARRAY_SPEC_TMP_UNUSED_TAILCALL_HANDLER,
12166|      2|		ZEND_NULL_TAILCALL_HANDLER,
12166|      2|		ZEND_NULL_TAILCALL_HANDLER,
12166|      2|		ZEND_COUNT_ARRAY_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12166|      2|		ZEND_JMP_FORWARD_SPEC_TAILCALL_HANDLER,
12167|      2|		ZEND_NULL_TAILCALL_HANDLER,
12167|      2|		ZEND_NULL_TAILCALL_HANDLER,
12167|      2|		ZEND_NULL_TAILCALL_HANDLER,
12167|      2|		ZEND_NULL_TAILCALL_HANDLER,
12167|      2|		ZEND_NULL_TAILCALL_HANDLER,
12167|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12167|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12167|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12167|      2|		ZEND_NULL_TAILCALL_HANDLER,
12167|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12168|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12168|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12168|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12168|      2|		ZEND_NULL_TAILCALL_HANDLER,
12168|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12168|      2|		ZEND_NULL_TAILCALL_HANDLER,
12168|      2|		ZEND_NULL_TAILCALL_HANDLER,
12168|      2|		ZEND_NULL_TAILCALL_HANDLER,
12168|      2|		ZEND_NULL_TAILCALL_HANDLER,
12168|      2|		ZEND_NULL_TAILCALL_HANDLER,
12169|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12169|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12169|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12169|      2|		ZEND_NULL_TAILCALL_HANDLER,
12169|      2|		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12169|      2|		ZEND_NULL_TAILCALL_HANDLER,
12169|      2|		ZEND_NULL_TAILCALL_HANDLER,
12169|      2|		ZEND_NULL_TAILCALL_HANDLER,
12169|      2|		ZEND_NULL_TAILCALL_HANDLER,
12169|      2|		ZEND_NULL_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12170|      2|		ZEND_NULL_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12170|      2|		ZEND_NULL_TAILCALL_HANDLER,
12170|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12171|      2|		ZEND_NULL_TAILCALL_HANDLER,
12171|      2|		ZEND_NULL_TAILCALL_HANDLER,
12171|      2|		ZEND_NULL_TAILCALL_HANDLER,
12171|      2|		ZEND_NULL_TAILCALL_HANDLER,
12171|      2|		ZEND_NULL_TAILCALL_HANDLER,
12171|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12171|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12171|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12171|      2|		ZEND_NULL_TAILCALL_HANDLER,
12171|      2|		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12172|      2|		ZEND_NULL_TAILCALL_HANDLER,
12172|      2|		ZEND_NULL_TAILCALL_HANDLER,
12172|      2|		ZEND_NULL_TAILCALL_HANDLER,
12172|      2|		ZEND_NULL_TAILCALL_HANDLER,
12172|      2|		ZEND_NULL_TAILCALL_HANDLER,
12172|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12172|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12172|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12172|      2|		ZEND_NULL_TAILCALL_HANDLER,
12172|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12173|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12173|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12173|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12173|      2|		ZEND_NULL_TAILCALL_HANDLER,
12173|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12173|      2|		ZEND_NULL_TAILCALL_HANDLER,
12173|      2|		ZEND_NULL_TAILCALL_HANDLER,
12173|      2|		ZEND_NULL_TAILCALL_HANDLER,
12173|      2|		ZEND_NULL_TAILCALL_HANDLER,
12173|      2|		ZEND_NULL_TAILCALL_HANDLER,
12174|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12174|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12174|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12174|      2|		ZEND_NULL_TAILCALL_HANDLER,
12174|      2|		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12174|      2|		ZEND_NULL_TAILCALL_HANDLER,
12174|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12174|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12174|      2|		ZEND_NULL_TAILCALL_HANDLER,
12174|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12175|      2|		ZEND_NULL_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12175|      2|		ZEND_NULL_TAILCALL_HANDLER,
12175|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12176|      2|		ZEND_NULL_TAILCALL_HANDLER,
12176|      2|		ZEND_NULL_TAILCALL_HANDLER,
12176|      2|		ZEND_NULL_TAILCALL_HANDLER,
12176|      2|		ZEND_NULL_TAILCALL_HANDLER,
12176|      2|		ZEND_NULL_TAILCALL_HANDLER,
12176|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12176|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12176|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12176|      2|		ZEND_NULL_TAILCALL_HANDLER,
12176|      2|		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12177|      2|		ZEND_NULL_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12177|      2|		ZEND_NULL_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12177|      2|		ZEND_NULL_TAILCALL_HANDLER,
12177|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12178|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12178|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12178|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12178|      2|		ZEND_NULL_TAILCALL_HANDLER,
12178|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12178|      2|		ZEND_NULL_TAILCALL_HANDLER,
12178|      2|		ZEND_NULL_TAILCALL_HANDLER,
12178|      2|		ZEND_NULL_TAILCALL_HANDLER,
12178|      2|		ZEND_NULL_TAILCALL_HANDLER,
12178|      2|		ZEND_NULL_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12179|      2|		ZEND_NULL_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12179|      2|		ZEND_NULL_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12179|      2|		ZEND_NULL_TAILCALL_HANDLER,
12179|      2|		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12180|      2|		ZEND_NULL_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12180|      2|		ZEND_NULL_TAILCALL_HANDLER,
12180|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12181|      2|		ZEND_NULL_TAILCALL_HANDLER,
12181|      2|		ZEND_NULL_TAILCALL_HANDLER,
12181|      2|		ZEND_NULL_TAILCALL_HANDLER,
12181|      2|		ZEND_NULL_TAILCALL_HANDLER,
12181|      2|		ZEND_NULL_TAILCALL_HANDLER,
12181|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12181|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12181|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12181|      2|		ZEND_NULL_TAILCALL_HANDLER,
12181|      2|		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12182|      2|		ZEND_NULL_TAILCALL_HANDLER,
12182|      2|		ZEND_NULL_TAILCALL_HANDLER,
12182|      2|		ZEND_NULL_TAILCALL_HANDLER,
12182|      2|		ZEND_NULL_TAILCALL_HANDLER,
12182|      2|		ZEND_NULL_TAILCALL_HANDLER,
12182|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12182|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12182|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12182|      2|		ZEND_NULL_TAILCALL_HANDLER,
12182|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12183|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12183|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12183|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12183|      2|		ZEND_NULL_TAILCALL_HANDLER,
12183|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12183|      2|		ZEND_NULL_TAILCALL_HANDLER,
12183|      2|		ZEND_NULL_TAILCALL_HANDLER,
12183|      2|		ZEND_NULL_TAILCALL_HANDLER,
12183|      2|		ZEND_NULL_TAILCALL_HANDLER,
12183|      2|		ZEND_NULL_TAILCALL_HANDLER,
12184|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12184|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12184|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12184|      2|		ZEND_NULL_TAILCALL_HANDLER,
12184|      2|		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12184|      2|		ZEND_NULL_TAILCALL_HANDLER,
12184|      2|		ZEND_NULL_TAILCALL_HANDLER,
12184|      2|		ZEND_NULL_TAILCALL_HANDLER,
12184|      2|		ZEND_NULL_TAILCALL_HANDLER,
12184|      2|		ZEND_NULL_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12185|      2|		ZEND_NULL_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12185|      2|		ZEND_NULL_TAILCALL_HANDLER,
12185|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12186|      2|		ZEND_NULL_TAILCALL_HANDLER,
12186|      2|		ZEND_NULL_TAILCALL_HANDLER,
12186|      2|		ZEND_NULL_TAILCALL_HANDLER,
12186|      2|		ZEND_NULL_TAILCALL_HANDLER,
12186|      2|		ZEND_NULL_TAILCALL_HANDLER,
12186|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12186|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12186|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12186|      2|		ZEND_NULL_TAILCALL_HANDLER,
12186|      2|		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12187|      2|		ZEND_NULL_TAILCALL_HANDLER,
12187|      2|		ZEND_NULL_TAILCALL_HANDLER,
12187|      2|		ZEND_NULL_TAILCALL_HANDLER,
12187|      2|		ZEND_NULL_TAILCALL_HANDLER,
12187|      2|		ZEND_NULL_TAILCALL_HANDLER,
12187|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12187|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12187|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12187|      2|		ZEND_NULL_TAILCALL_HANDLER,
12187|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12188|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12188|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12188|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12188|      2|		ZEND_NULL_TAILCALL_HANDLER,
12188|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12188|      2|		ZEND_NULL_TAILCALL_HANDLER,
12188|      2|		ZEND_NULL_TAILCALL_HANDLER,
12188|      2|		ZEND_NULL_TAILCALL_HANDLER,
12188|      2|		ZEND_NULL_TAILCALL_HANDLER,
12188|      2|		ZEND_NULL_TAILCALL_HANDLER,
12189|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12189|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12189|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12189|      2|		ZEND_NULL_TAILCALL_HANDLER,
12189|      2|		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12189|      2|		ZEND_NULL_TAILCALL_HANDLER,
12189|      2|		ZEND_NULL_TAILCALL_HANDLER,
12189|      2|		ZEND_NULL_TAILCALL_HANDLER,
12189|      2|		ZEND_NULL_TAILCALL_HANDLER,
12189|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12190|      2|		ZEND_NULL_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12191|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12191|      2|		ZEND_NULL_TAILCALL_HANDLER,
12192|      2|		ZEND_NULL_TAILCALL_HANDLER,
12192|      2|		ZEND_NULL_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12192|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12193|      2|		ZEND_NULL_TAILCALL_HANDLER,
12193|      2|		ZEND_NULL_TAILCALL_HANDLER,
12193|      2|		ZEND_NULL_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12193|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12194|      2|		ZEND_NULL_TAILCALL_HANDLER,
12195|      2|		ZEND_NULL_TAILCALL_HANDLER,
12195|      2|		ZEND_NULL_TAILCALL_HANDLER,
12195|      2|		ZEND_NULL_TAILCALL_HANDLER,
12195|      2|		ZEND_NULL_TAILCALL_HANDLER,
12195|      2|		ZEND_NULL_TAILCALL_HANDLER,
12195|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12195|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12195|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12195|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12195|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12196|      2|		ZEND_NULL_TAILCALL_HANDLER,
12196|      2|		ZEND_NULL_TAILCALL_HANDLER,
12196|      2|		ZEND_NULL_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12196|      2|		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12197|      2|		ZEND_NULL_TAILCALL_HANDLER,
12198|      2|		ZEND_NULL_TAILCALL_HANDLER,
12198|      2|		ZEND_NULL_TAILCALL_HANDLER,
12198|      2|		ZEND_NULL_TAILCALL_HANDLER,
12198|      2|		ZEND_NULL_TAILCALL_HANDLER,
12198|      2|		ZEND_NULL_TAILCALL_HANDLER,
12198|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12198|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12198|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12198|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12198|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12199|      2|		ZEND_NULL_TAILCALL_HANDLER,
12199|      2|		ZEND_NULL_TAILCALL_HANDLER,
12199|      2|		ZEND_NULL_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12199|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12200|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12200|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12201|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12201|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12201|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12202|      2|		ZEND_NULL_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12203|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12203|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12204|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12204|      2|		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12204|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12205|      2|		ZEND_NULL_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12206|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12206|      2|		ZEND_NULL_TAILCALL_HANDLER,
12207|      2|		ZEND_NULL_TAILCALL_HANDLER,
12207|      2|		ZEND_NULL_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12207|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12208|      2|		ZEND_NULL_TAILCALL_HANDLER,
12208|      2|		ZEND_NULL_TAILCALL_HANDLER,
12208|      2|		ZEND_NULL_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12208|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12209|      2|		ZEND_NULL_TAILCALL_HANDLER,
12210|      2|		ZEND_NULL_TAILCALL_HANDLER,
12210|      2|		ZEND_NULL_TAILCALL_HANDLER,
12210|      2|		ZEND_NULL_TAILCALL_HANDLER,
12210|      2|		ZEND_NULL_TAILCALL_HANDLER,
12210|      2|		ZEND_NULL_TAILCALL_HANDLER,
12210|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12210|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12210|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12210|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12210|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12211|      2|		ZEND_NULL_TAILCALL_HANDLER,
12211|      2|		ZEND_NULL_TAILCALL_HANDLER,
12211|      2|		ZEND_NULL_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12211|      2|		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12212|      2|		ZEND_NULL_TAILCALL_HANDLER,
12213|      2|		ZEND_NULL_TAILCALL_HANDLER,
12213|      2|		ZEND_NULL_TAILCALL_HANDLER,
12213|      2|		ZEND_NULL_TAILCALL_HANDLER,
12213|      2|		ZEND_NULL_TAILCALL_HANDLER,
12213|      2|		ZEND_NULL_TAILCALL_HANDLER,
12213|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12213|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12213|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12213|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12213|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12214|      2|		ZEND_NULL_TAILCALL_HANDLER,
12214|      2|		ZEND_NULL_TAILCALL_HANDLER,
12214|      2|		ZEND_NULL_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12214|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12215|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12215|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12216|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12216|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12216|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12217|      2|		ZEND_NULL_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12218|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12218|      2|		ZEND_NULL_TAILCALL_HANDLER,
12219|      2|		ZEND_NULL_TAILCALL_HANDLER,
12219|      2|		ZEND_NULL_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12219|      2|		ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12220|      2|		ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12220|      2|		ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST_TAILCALL_HANDLER,
12220|      2|		ZEND_NULL_TAILCALL_HANDLER,
12220|      2|		ZEND_NULL_TAILCALL_HANDLER,
12220|      2|		ZEND_NULL_TAILCALL_HANDLER,
12220|      2|		ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV_TAILCALL_HANDLER,
12220|      2|		ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST_TAILCALL_HANDLER,
12220|      2|		ZEND_NULL_TAILCALL_HANDLER,
12220|      2|		ZEND_NULL_TAILCALL_HANDLER,
12220|      2|		ZEND_NULL_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV_TAILCALL_HANDLER,
12221|      2|		ZEND_NULL_TAILCALL_HANDLER,
12221|      2|		ZEND_NULL_TAILCALL_HANDLER,
12221|      2|		ZEND_NULL_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12221|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12222|      2|		ZEND_NULL_TAILCALL_HANDLER,
12222|      2|		ZEND_NULL_TAILCALL_HANDLER,
12222|      2|		ZEND_NULL_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12222|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12223|      2|		ZEND_NULL_TAILCALL_HANDLER,
12223|      2|		ZEND_NULL_TAILCALL_HANDLER,
12223|      2|		ZEND_NULL_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12223|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12224|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12225|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12225|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12225|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12225|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12226|      2|		ZEND_NULL_TAILCALL_HANDLER,
12227|      2|		ZEND_NULL_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12227|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12228|      2|		ZEND_NULL_TAILCALL_HANDLER,
12228|      2|		ZEND_NULL_TAILCALL_HANDLER,
12228|      2|		ZEND_NULL_TAILCALL_HANDLER,
12228|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12228|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12228|      2|		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12228|      2|		ZEND_NULL_TAILCALL_HANDLER,
12228|      2|		ZEND_NULL_TAILCALL_HANDLER,
12228|      2|		ZEND_NULL_TAILCALL_HANDLER,
12228|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12229|      2|		ZEND_NULL_TAILCALL_HANDLER,
12229|      2|		ZEND_NULL_TAILCALL_HANDLER,
12229|      2|		ZEND_NULL_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12229|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12230|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12231|      2|		ZEND_NULL_TAILCALL_HANDLER,
12231|      2|		ZEND_NULL_TAILCALL_HANDLER,
12231|      2|		ZEND_NULL_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12231|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12232|      2|		ZEND_NULL_TAILCALL_HANDLER,
12232|      2|		ZEND_NULL_TAILCALL_HANDLER,
12232|      2|		ZEND_NULL_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12232|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12233|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12233|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_NULL_TAILCALL_HANDLER,
12234|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12234|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12234|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12234|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12235|      2|		ZEND_NULL_TAILCALL_HANDLER,
12235|      2|		ZEND_NULL_TAILCALL_HANDLER,
12235|      2|		ZEND_NULL_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12235|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12236|      2|		ZEND_NULL_TAILCALL_HANDLER,
12236|      2|		ZEND_NULL_TAILCALL_HANDLER,
12236|      2|		ZEND_NULL_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12236|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12237|      2|		ZEND_NULL_TAILCALL_HANDLER,
12237|      2|		ZEND_NULL_TAILCALL_HANDLER,
12237|      2|		ZEND_NULL_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12237|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12238|      2|		ZEND_NULL_TAILCALL_HANDLER,
12238|      2|		ZEND_NULL_TAILCALL_HANDLER,
12238|      2|		ZEND_NULL_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12238|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12239|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12240|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12240|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12240|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12240|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12241|      2|		ZEND_NULL_TAILCALL_HANDLER,
12242|      2|		ZEND_NULL_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12242|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12243|      2|		ZEND_NULL_TAILCALL_HANDLER,
12243|      2|		ZEND_NULL_TAILCALL_HANDLER,
12243|      2|		ZEND_NULL_TAILCALL_HANDLER,
12243|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12243|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12243|      2|		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12243|      2|		ZEND_NULL_TAILCALL_HANDLER,
12243|      2|		ZEND_NULL_TAILCALL_HANDLER,
12243|      2|		ZEND_NULL_TAILCALL_HANDLER,
12243|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12244|      2|		ZEND_NULL_TAILCALL_HANDLER,
12244|      2|		ZEND_NULL_TAILCALL_HANDLER,
12244|      2|		ZEND_NULL_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12244|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12245|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12246|      2|		ZEND_NULL_TAILCALL_HANDLER,
12246|      2|		ZEND_NULL_TAILCALL_HANDLER,
12246|      2|		ZEND_NULL_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12246|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12247|      2|		ZEND_NULL_TAILCALL_HANDLER,
12247|      2|		ZEND_NULL_TAILCALL_HANDLER,
12247|      2|		ZEND_NULL_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12247|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12248|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12248|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_NULL_TAILCALL_HANDLER,
12249|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_TAILCALL_HANDLER,
12249|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_TAILCALL_HANDLER,
12249|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_TAILCALL_HANDLER,
12249|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12250|      2|		ZEND_NULL_TAILCALL_HANDLER,
12250|      2|		ZEND_NULL_TAILCALL_HANDLER,
12250|      2|		ZEND_NULL_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_TAILCALL_HANDLER,
12250|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_TAILCALL_HANDLER,
12251|      2|		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12251|      2|		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_TAILCALL_HANDLER,
12251|      2|		ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_TAILCALL_HANDLER,
12252|      2|		ZEND_POST_INC_LONG_SPEC_CV_TAILCALL_HANDLER,
12252|      2|		ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_TAILCALL_HANDLER,
12252|      2|		ZEND_POST_DEC_LONG_SPEC_CV_TAILCALL_HANDLER,
12252|      2|		ZEND_QM_ASSIGN_LONG_SPEC_CONST_TAILCALL_HANDLER,
12252|      2|		ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_TAILCALL_HANDLER,
12252|      2|		ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_TAILCALL_HANDLER,
12252|      2|		ZEND_NULL_TAILCALL_HANDLER,
12252|      2|		ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_TAILCALL_HANDLER,
12252|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_TAILCALL_HANDLER,
12252|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_TAILCALL_HANDLER,
12253|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_TAILCALL_HANDLER,
12253|      2|		ZEND_NULL_TAILCALL_HANDLER,
12253|      2|		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_TAILCALL_HANDLER,
12253|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_CONST_TAILCALL_HANDLER,
12253|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_TAILCALL_HANDLER,
12253|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_TAILCALL_HANDLER,
12253|      2|		ZEND_NULL_TAILCALL_HANDLER,
12253|      2|		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_TAILCALL_HANDLER,
12253|      2|		ZEND_NULL_TAILCALL_HANDLER,
12253|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12254|      2|		ZEND_NULL_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_TAILCALL_HANDLER,
12254|      2|		ZEND_NULL_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_TAILCALL_HANDLER,
12254|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_TAILCALL_HANDLER,
12255|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_TAILCALL_HANDLER,
12255|      2|		ZEND_NULL_TAILCALL_HANDLER,
12255|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_TAILCALL_HANDLER,
12255|      2|		ZEND_NULL_TAILCALL_HANDLER,
12255|      2|		ZEND_NULL_TAILCALL_HANDLER,
12255|      2|		ZEND_NULL_TAILCALL_HANDLER,
12255|      2|		ZEND_NULL_TAILCALL_HANDLER,
12255|      2|		ZEND_NULL_TAILCALL_HANDLER,
12255|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_TAILCALL_HANDLER,
12255|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_TAILCALL_HANDLER,
12256|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_TAILCALL_HANDLER,
12256|      2|		ZEND_NULL_TAILCALL_HANDLER,
12256|      2|		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_TAILCALL_HANDLER,
12256|      2|		ZEND_NULL_TAILCALL_HANDLER,
12256|      2|		ZEND_NULL_TAILCALL_HANDLER,
12256|      2|		ZEND_SEND_VAR_SIMPLE_SPEC_VAR_TAILCALL_HANDLER,
12256|      2|		ZEND_NULL_TAILCALL_HANDLER,
12256|      2|		ZEND_SEND_VAR_SIMPLE_SPEC_CV_TAILCALL_HANDLER,
12256|      2|		ZEND_NULL_TAILCALL_HANDLER,
12256|      2|		ZEND_NULL_TAILCALL_HANDLER,
12257|      2|		ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED_TAILCALL_HANDLER,
12257|      2|		ZEND_NULL_TAILCALL_HANDLER,
12257|      2|		ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED_TAILCALL_HANDLER,
12257|      2|		ZEND_SEND_VAL_SIMPLE_SPEC_CONST_TAILCALL_HANDLER,
12257|      2|		ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST_TAILCALL_HANDLER,
12257|      2|		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_TAILCALL_HANDLER,
12257|      2|		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_TAILCALL_HANDLER,
12257|      2|		ZEND_NULL_TAILCALL_HANDLER
12257|      2|	};
12257|      2|	zend_handlers_count = sizeof(handlers) / sizeof(handlers[0]);
12258|       |#elif ZEND_VM_KIND != ZEND_VM_KIND_HYBRID
12258|       |	static zend_vm_opcode_handler_t const *handlers = funcs;
12258|       |	zend_handlers_count = sizeof(funcs) / sizeof(funcs[0]);
12258|       |#endif
12258|      2|	static const uint32_t specs[] = {
12258|      2|		0,
12258|      2|		1 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12258|      2|		26 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		26 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12258|      2|		51 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		51 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		51 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12258|      2|		76 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		76 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12259|      2|		101 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		101 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12259|      2|		126 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		126 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12259|      2|		151 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		151 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12259|      2|		176 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		176 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12259|      2|		201 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		201 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		201 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12259|      2|		226 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		226 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		226 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12259|      2|		251 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		251 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		251 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12259|      2|		276 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		276 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12259|      2|		301 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12259|      2|		306 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12260|      2|		311 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		311 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		311 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12260|      2|		336 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		336 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		336 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12260|      2|		361 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		361 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		361 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12260|      2|		386 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		386 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		386 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  317|      2|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              		386 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12260|      2|		461 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		461 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		461 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  317|      2|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              		461 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE,
  ------------------
  |  |  318|      2|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12260|      2|		536 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		536 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		536 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH,
  ------------------
  |  |  317|      2|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
12260|      2|		611 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		611 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		611 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH,
  ------------------
  |  |  317|      2|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
12260|      2|		686 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		686 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		686 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12260|      2|		736 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		736 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		736 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  314|      2|#define SPEC_RULE_OP_DATA      0x00040000
  ------------------
12260|      2|		861 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		861 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		861 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  314|      2|#define SPEC_RULE_OP_DATA      0x00040000
  ------------------
12261|      2|		986 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  314|      2|#define SPEC_RULE_OP_DATA      0x00040000
  ------------------
12261|      2|		991 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		991 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12261|      2|		1016 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1016 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12261|      2|		1041 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1041 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12261|      2|		1066,
12261|      2|		1067 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1067 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12261|      2|		1092 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12261|      2|		1097 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1097 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		1097 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
  ------------------
  |  |  314|      2|#define SPEC_RULE_OP_DATA      0x00040000
  ------------------
12261|      2|		1222,
12261|      2|		1223 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1223 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12262|      2|		1233 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1233 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12262|      2|		1243 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12262|      2|		1248 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12262|      2|		1253,
12262|      2|		1253,
12262|      2|		1254,
12262|      2|		1254,
12262|      2|		1255,
12262|      2|		1256 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12262|      2|		1261 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12263|      2|		3474,
12263|      2|		1266 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12263|      2|		1271 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12263|      2|		1276 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12263|      2|		1281,
12263|      2|		1282 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		1282 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  316|      2|#define SPEC_RULE_QUICK_ARG    0x00100000
  ------------------
12263|      2|		1292 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12263|      2|		1297 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12263|      2|		1302 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1302 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12263|      2|		1327 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12264|      2|		1332 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12264|      2|		1337 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12264|      2|		1342,
12264|      2|		1343,
12264|      2|		1344,
12264|      2|		1345 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
              		1345 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12264|      2|		1349,
12264|      2|		1350 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1350 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12264|      2|		1360,
12264|      2|		1361,
12265|      2|		1362 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1362 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12265|      2|		1387 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1387 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		1387 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  316|      2|#define SPEC_RULE_QUICK_ARG    0x00100000
  ------------------
12265|      2|		1437 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1437 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12265|      2|		1462 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12265|      2|		1467,
12265|      2|		1468,
12265|      2|		1469 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1469 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12265|      2|		1494 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1494 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12265|      2|		1519 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1519 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12265|      2|		1529 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12266|      2|		1534 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1534 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12266|      2|		1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12266|      2|		1584 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12266|      2|		1589,
12266|      2|		3474,
12266|      2|		1590 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12266|      2|		1595 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1595 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12266|      2|		1620 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1620 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12266|      2|		1645 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12266|      2|		1650 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1650 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1675 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1675 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1700 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12267|      2|		1705 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1705 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1730 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1730 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1755 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12267|      2|		1760 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1760 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1785 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1785 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1810 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12267|      2|		1815 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1815 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12267|      2|		1840 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1840 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12268|      2|		1865 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12268|      2|		1870 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1870 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12268|      2|		1895 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1895 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12268|      2|		1920 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1920 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12268|      2|		1945,
12268|      2|		1946 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		1946 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  316|      2|#define SPEC_RULE_QUICK_ARG    0x00100000
  ------------------
12268|      2|		1956,
12268|      2|		1957,
12268|      2|		1958,
12268|      2|		1959,
12269|      2|		1960,
12269|      2|		1961 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12269|      2|		1966,
12269|      2|		1967 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12269|      2|		1972 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12269|      2|		1977 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12269|      2|		1982 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1982 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12269|      2|		1992 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		1992 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12269|      2|		2017 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2017 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12269|      2|		2042 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12270|      2|		2047 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2047 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12270|      2|		2072 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2072 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
              		2072 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_QUICK_ARG,
  ------------------
  |  |  316|      2|#define SPEC_RULE_QUICK_ARG    0x00100000
  ------------------
12270|      2|		2122 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2122 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12270|      2|		2147 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12270|      2|		2152,
12270|      2|		2153 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12270|      2|		2158 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12270|      2|		2163,
12270|      2|		2164 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12270|      2|		2169 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12271|      2|		2174 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12271|      2|		2179,
12271|      2|		2180,
12271|      2|		2181 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12271|      2|		2186 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
              		2186 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12271|      2|		2190 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
              		2190 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12271|      2|		2194 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  315|      2|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
              		2194 | SPEC_RULE_RETVAL | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12271|      2|		2198 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2198 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12271|      2|		2198 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2198 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12271|      2|		2223 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2223 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12272|      2|		2223 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2223 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12272|      2|		2248 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12272|      2|		2253,
12272|      2|		2254 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2254 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12272|      2|		2279,
12272|      2|		2280 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12272|      2|		2285,
12272|      2|		2286,
12272|      2|		2287,
12272|      2|		2288,
12273|      2|		2289,
12273|      2|		2290,
12273|      2|		2291,
12273|      2|		2292 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2292 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12273|      2|		2317,
12273|      2|		2318,
12273|      2|		2319,
12273|      2|		2320 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12273|      2|		2325,
12273|      2|		2326 | SPEC_RULE_ISSET,
  ------------------
  |  |  319|      2|#define SPEC_RULE_ISSET        0x01000000
  ------------------
12274|      2|		2328 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12274|      2|		2333,
12274|      2|		2334 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12274|      2|		2339 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12274|      2|		2341,
12274|      2|		2342 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2342 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12274|      2|		2367 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2367 | SPEC_RULE_OP1 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12274|      2|		2377,
12274|      2|		2378,
12274|      2|		2379,
12275|      2|		2380,
12275|      2|		2381 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12275|      2|		2386,
12275|      2|		2387,
12275|      2|		2388 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12275|      2|		2393 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2393 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12275|      2|		2418,
12275|      2|		2419 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12275|      2|		2424,
12275|      2|		2425,
12276|      2|		2426,
12276|      2|		2427,
12276|      2|		2428,
12276|      2|		2429,
12276|      2|		2430,
12276|      2|		2431,
12276|      2|		2432 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2432 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12276|      2|		2457,
12276|      2|		2458,
12276|      2|		2459,
12277|      2|		2460 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12277|      2|		2465,
12277|      2|		2466 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12277|      2|		2471 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12277|      2|		2476 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12277|      2|		2481 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12277|      2|		2486 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12277|      2|		2491,
12277|      2|		2492 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12277|      2|		2497 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
              		2497 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12278|      2|		2522 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12278|      2|		2527 | SPEC_RULE_OP2,
  ------------------
  |  |  313|      2|#define SPEC_RULE_OP2          0x00020000
  ------------------
12278|      2|		2532 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12278|      2|		2537 | SPEC_RULE_OP1,
  ------------------
  |  |  312|      2|#define SPEC_RULE_OP1          0x00010000
  ------------------
12278|      2|		2542,
12278|      2|		2543,
12278|      2|		2544,
12278|      2|		2545,
12278|      2|		2546,
12278|      2|		2547 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12279|      2|		2549 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12279|      2|		2551 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12279|      2|		2553 | SPEC_RULE_OBSERVER,
  ------------------
  |  |  320|      2|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
12279|      2|		2555,
12279|      2|		2556,
12279|      2|		2557,
12279|      2|		2558,
12279|      2|		3474,
12279|      2|		3474,
12279|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12280|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12281|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12282|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12283|      2|		3474,
12284|      2|		3474,
12284|      2|	};
12284|       |#if 0
12284|       |#elif (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
12284|       |	zend_opcode_handler_funcs = funcs;
12284|       |	zend_spec_handlers = specs;
12284|       |	execute_ex(NULL);
12284|       |#elif ZEND_VM_KIND == ZEND_VM_KIND_TAILCALL
12284|       |	zend_opcode_handler_funcs = funcs;
12284|      2|	zend_opcode_handlers = handlers;
12285|      2|	zend_spec_handlers = specs;
12285|       |#else
12285|       |	zend_opcode_handlers = handlers;
12285|       |	zend_spec_handlers = specs;
12285|       |#endif
12285|      2|	VM_TRACE_START();
12285|      2|}
zend_get_opcode_handler_func:
12290|   271k|{
12290|   271k|#if ZEND_VM_KIND == ZEND_VM_KIND_HYBRID || ZEND_VM_KIND == ZEND_VM_KIND_TAILCALL
12290|   271k|	zval *zv;
12290|       |
12290|   271k|	if (!zend_handlers_table) {
  ------------------
  |  Branch (122907:6): [True: 1, False: 271k]
  ------------------
12290|      1|		init_opcode_serialiser();
12290|      1|	}
12291|   271k|	zv = zend_hash_index_find(zend_handlers_table, (zend_ulong)(uintptr_t)op->handler);
12291|   271k|	ZEND_ASSERT(zv != NULL);
  ------------------
  |  |  112|   271k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (122911:2): [True: 0, False: 271k]
  |  Branch (122911:2): [True: 271k, False: 0]
  ------------------
12291|   271k|	return zend_opcode_handler_funcs[Z_LVAL_P(zv)];
  ------------------
  |  |  976|   271k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|   271k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
12291|       |#elif ZEND_VM_KIND == ZEND_VM_KIND_CALL
12291|       |	return op->handler;
12291|       |#else
12291|       |	return NULL;
12291|       |#endif
12291|   271k|}
zend_vm_set_opcode_handler:
12301|  47.8k|{
12301|  47.8k|	uint8_t opcode = zend_user_opcodes[op->opcode];
12301|       |
12301|  47.8k|	if (zend_spec_handlers[op->opcode] & SPEC_RULE_COMMUTATIVE) {
  ------------------
  |  |  318|  47.8k|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
  |  Branch (123015:6): [True: 601, False: 47.2k]
  ------------------
12301|    601|		if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123016:7): [True: 88, False: 513]
  ------------------
12301|     88|			zend_swap_operands(op);
12301|     88|		}
12301|    601|	}
12302|  47.8k|	op->handler = zend_opcode_handlers[zend_vm_get_opcode_handler_idx(zend_spec_handlers[opcode], op)];
12302|  47.8k|}
zend_vm_set_opcode_handler_ex:
12302|      1|{
12302|      1|	uint8_t opcode = zend_user_opcodes[op->opcode];
12302|      1|	uint32_t spec = zend_spec_handlers[opcode];
12302|      1|	switch (opcode) {
12302|      0|		case ZEND_ADD:
  ------------------
  |  |  125|      0|#define ZEND_ADD                              1
  ------------------
  |  Branch (123028:3): [True: 0, False: 1]
  ------------------
12302|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123029:8): [True: 0, False: 0]
  |  Branch (123029:35): [True: 0, False: 0]
  |  Branch (123029:62): [True: 0, False: 0]
  ------------------
12303|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123030:9): [True: 0, False: 0]
  |  Branch (123030:37): [True: 0, False: 0]
  ------------------
12303|      0|					break;
12303|      0|				}
12303|      0|				spec = 2567 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2567 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2567 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12303|      0|				if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123034:9): [True: 0, False: 0]
  ------------------
12303|      0|					zend_swap_operands(op);
12303|      0|				}
12303|      0|			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123037:15): [True: 0, False: 0]
  |  Branch (123037:42): [True: 0, False: 0]
  ------------------
12303|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123038:9): [True: 0, False: 0]
  |  Branch (123038:37): [True: 0, False: 0]
  ------------------
12303|      0|					break;
12304|      0|				}
12304|      0|				spec = 2592 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2592 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2592 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12304|      0|				if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123042:9): [True: 0, False: 0]
  ------------------
12304|      0|					zend_swap_operands(op);
12304|      0|				}
12304|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123045:15): [True: 0, False: 0]
  |  Branch (123045:44): [True: 0, False: 0]
  ------------------
12304|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123046:9): [True: 0, False: 0]
  |  Branch (123046:37): [True: 0, False: 0]
  ------------------
12304|      0|					break;
12304|      0|				}
12304|      0|				spec = 2617 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2617 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2617 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12305|      0|				if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123050:9): [True: 0, False: 0]
  ------------------
12305|      0|					zend_swap_operands(op);
12305|      0|				}
12305|      0|			}
12305|      0|			break;
12305|      0|		case ZEND_SUB:
  ------------------
  |  |  126|      0|#define ZEND_SUB                              2
  ------------------
  |  Branch (123055:3): [True: 0, False: 1]
  ------------------
12305|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123056:8): [True: 0, False: 0]
  |  Branch (123056:35): [True: 0, False: 0]
  |  Branch (123056:62): [True: 0, False: 0]
  ------------------
12305|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123057:9): [True: 0, False: 0]
  |  Branch (123057:37): [True: 0, False: 0]
  ------------------
12305|      0|					break;
12305|      0|				}
12306|      0|				spec = 2642 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2642 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
12306|      0|			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123061:15): [True: 0, False: 0]
  |  Branch (123061:42): [True: 0, False: 0]
  ------------------
12306|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123062:9): [True: 0, False: 0]
  |  Branch (123062:37): [True: 0, False: 0]
  ------------------
12306|      0|					break;
12306|      0|				}
12306|      0|				spec = 2667 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2667 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
12306|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123066:15): [True: 0, False: 0]
  |  Branch (123066:44): [True: 0, False: 0]
  ------------------
12306|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123067:9): [True: 0, False: 0]
  |  Branch (123067:37): [True: 0, False: 0]
  ------------------
12306|      0|					break;
12306|      0|				}
12307|      0|				spec = 2692 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2692 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
12307|      0|			}
12307|      0|			break;
12307|      0|		case ZEND_MUL:
  ------------------
  |  |  127|      0|#define ZEND_MUL                              3
  ------------------
  |  Branch (123073:3): [True: 0, False: 1]
  ------------------
12307|      0|			if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123074:8): [True: 0, False: 0]
  ------------------
12307|      0|				zend_swap_operands(op);
12307|      0|			}
12307|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123077:8): [True: 0, False: 0]
  |  Branch (123077:35): [True: 0, False: 0]
  |  Branch (123077:62): [True: 0, False: 0]
  ------------------
12307|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123078:9): [True: 0, False: 0]
  |  Branch (123078:37): [True: 0, False: 0]
  ------------------
12307|      0|					break;
12308|      0|				}
12308|      0|				spec = 2717 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2717 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2717 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12308|      0|			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123082:15): [True: 0, False: 0]
  |  Branch (123082:42): [True: 0, False: 0]
  ------------------
12308|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123083:9): [True: 0, False: 0]
  |  Branch (123083:37): [True: 0, False: 0]
  ------------------
12308|      0|					break;
12308|      0|				}
12308|      0|				spec = 2742 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2742 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2742 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12308|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123087:15): [True: 0, False: 0]
  |  Branch (123087:44): [True: 0, False: 0]
  ------------------
12308|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123088:9): [True: 0, False: 0]
  |  Branch (123088:37): [True: 0, False: 0]
  ------------------
12308|      0|					break;
12309|      0|				}
12309|      0|				spec = 2767 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2767 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2767 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12309|      0|			}
12309|      0|			break;
12309|      0|		case ZEND_IS_IDENTICAL:
  ------------------
  |  |  140|      0|#define ZEND_IS_IDENTICAL                    16
  ------------------
  |  Branch (123094:3): [True: 0, False: 1]
  ------------------
12309|      0|			if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123095:8): [True: 0, False: 0]
  ------------------
12309|      0|				zend_swap_operands(op);
12309|      0|			}
12309|      0|			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123098:8): [True: 0, False: 0]
  |  Branch (123098:35): [True: 0, False: 0]
  ------------------
12309|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123099:9): [True: 0, False: 0]
  |  Branch (123099:37): [True: 0, False: 0]
  ------------------
12310|      0|					break;
12310|      0|				}
12310|      0|				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12310|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123103:15): [True: 0, False: 0]
  |  Branch (123103:44): [True: 0, False: 0]
  ------------------
12310|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123104:9): [True: 0, False: 0]
  |  Branch (123104:37): [True: 0, False: 0]
  ------------------
12310|      0|					break;
12310|      0|				}
12310|      0|				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12310|      0|			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (123108:15): [True: 0, False: 0]
  |  Branch (123108:44): [True: 0, False: 0]
  |  Branch (123108:94): [True: 0, False: 0]
  ------------------
12310|      0|				spec = 3092 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 3092 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12311|      0|			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (123110:15): [True: 0, False: 0]
  |  Branch (123110:40): [True: 0, False: 0]
  |  Branch (123110:77): [True: 0, False: 0]
  |  Branch (123110:120): [True: 0, False: 0]
  ------------------
12311|      0|				spec = 3098 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3098 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12311|      0|			}
12311|      0|			break;
12311|      0|		case ZEND_IS_NOT_IDENTICAL:
  ------------------
  |  |  141|      0|#define ZEND_IS_NOT_IDENTICAL                17
  ------------------
  |  Branch (123114:3): [True: 0, False: 1]
  ------------------
12311|      0|			if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123115:8): [True: 0, False: 0]
  ------------------
12311|      0|				zend_swap_operands(op);
12311|      0|			}
12311|      0|			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123118:8): [True: 0, False: 0]
  |  Branch (123118:35): [True: 0, False: 0]
  ------------------
12311|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123119:9): [True: 0, False: 0]
  |  Branch (123119:37): [True: 0, False: 0]
  ------------------
12312|      0|					break;
12312|      0|				}
12312|      0|				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12312|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123123:15): [True: 0, False: 0]
  |  Branch (123123:44): [True: 0, False: 0]
  ------------------
12312|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123124:9): [True: 0, False: 0]
  |  Branch (123124:37): [True: 0, False: 0]
  ------------------
12312|      0|					break;
12312|      0|				}
12312|      0|				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12312|      0|			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              			} else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) {
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (123128:15): [True: 0, False: 0]
  |  Branch (123128:44): [True: 0, False: 0]
  |  Branch (123128:94): [True: 0, False: 0]
  ------------------
12312|      0|				spec = 3095 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 3095 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12313|      0|			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			} else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (123130:15): [True: 0, False: 0]
  |  Branch (123130:40): [True: 0, False: 0]
  |  Branch (123130:77): [True: 0, False: 0]
  |  Branch (123130:120): [True: 0, False: 0]
  ------------------
12313|      0|				spec = 3103 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3103 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12313|      0|			}
12313|      0|			break;
12313|      0|		case ZEND_IS_EQUAL:
  ------------------
  |  |  142|      0|#define ZEND_IS_EQUAL                        18
  ------------------
  |  Branch (123134:3): [True: 0, False: 1]
  ------------------
12313|      0|			if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123135:8): [True: 0, False: 0]
  ------------------
12313|      0|				zend_swap_operands(op);
12313|      0|			}
12313|      0|			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123138:8): [True: 0, False: 0]
  |  Branch (123138:35): [True: 0, False: 0]
  ------------------
12313|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123139:9): [True: 0, False: 0]
  |  Branch (123139:37): [True: 0, False: 0]
  ------------------
12314|      0|					break;
12314|      0|				}
12314|      0|				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12314|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123143:15): [True: 0, False: 0]
  |  Branch (123143:44): [True: 0, False: 0]
  ------------------
12314|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123144:9): [True: 0, False: 0]
  |  Branch (123144:37): [True: 0, False: 0]
  ------------------
12314|      0|					break;
12314|      0|				}
12314|      0|				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12314|      0|			}
12314|      0|			break;
12315|      0|		case ZEND_IS_NOT_EQUAL:
  ------------------
  |  |  143|      0|#define ZEND_IS_NOT_EQUAL                    19
  ------------------
  |  Branch (123150:3): [True: 0, False: 1]
  ------------------
12315|      0|			if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123151:8): [True: 0, False: 0]
  ------------------
12315|      0|				zend_swap_operands(op);
12315|      0|			}
12315|      0|			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123154:8): [True: 0, False: 0]
  |  Branch (123154:35): [True: 0, False: 0]
  ------------------
12315|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123155:9): [True: 0, False: 0]
  |  Branch (123155:37): [True: 0, False: 0]
  ------------------
12315|      0|					break;
12315|      0|				}
12315|      0|				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12315|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123159:15): [True: 0, False: 0]
  |  Branch (123159:44): [True: 0, False: 0]
  ------------------
12316|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123160:9): [True: 0, False: 0]
  |  Branch (123160:37): [True: 0, False: 0]
  ------------------
12316|      0|					break;
12316|      0|				}
12316|      0|				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
              				spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
12316|      0|			}
12316|      0|			break;
12316|      0|		case ZEND_IS_SMALLER:
  ------------------
  |  |  144|      0|#define ZEND_IS_SMALLER                      20
  ------------------
  |  Branch (123166:3): [True: 0, False: 1]
  ------------------
12316|      0|			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123167:8): [True: 0, False: 0]
  |  Branch (123167:35): [True: 0, False: 0]
  ------------------
12316|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123168:9): [True: 0, False: 0]
  |  Branch (123168:37): [True: 0, False: 0]
  ------------------
12316|      0|					break;
12317|      0|				}
12317|      0|				spec = 3108 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3108 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3108 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
12317|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123172:15): [True: 0, False: 0]
  |  Branch (123172:44): [True: 0, False: 0]
  ------------------
12317|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123173:9): [True: 0, False: 0]
  |  Branch (123173:37): [True: 0, False: 0]
  ------------------
12317|      0|					break;
12317|      0|				}
12317|      0|				spec = 3183 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3183 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3183 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
12317|      0|			}
12317|      0|			break;
12317|      0|		case ZEND_IS_SMALLER_OR_EQUAL:
  ------------------
  |  |  145|      0|#define ZEND_IS_SMALLER_OR_EQUAL             21
  ------------------
  |  Branch (123179:3): [True: 0, False: 1]
  ------------------
12318|      0|			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123180:8): [True: 0, False: 0]
  |  Branch (123180:35): [True: 0, False: 0]
  ------------------
12318|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123181:9): [True: 0, False: 0]
  |  Branch (123181:37): [True: 0, False: 0]
  ------------------
12318|      0|					break;
12318|      0|				}
12318|      0|				spec = 3258 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3258 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3258 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
12318|      0|			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
              			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123185:15): [True: 0, False: 0]
  |  Branch (123185:44): [True: 0, False: 0]
  ------------------
12318|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123186:9): [True: 0, False: 0]
  |  Branch (123186:37): [True: 0, False: 0]
  ------------------
12318|      0|					break;
12318|      0|				}
12318|      0|				spec = 3333 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3333 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
              				spec = 3333 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
  ------------------
  |  |  317|      0|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
12319|      0|			}
12319|      0|			break;
12319|      0|		case ZEND_QM_ASSIGN:
  ------------------
  |  |  155|      0|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (123192:3): [True: 0, False: 1]
  ------------------
12319|      0|			if (op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123193:8): [True: 0, False: 0]
  ------------------
12319|      0|				spec = 3420 | SPEC_RULE_OP1;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
12319|      0|			} else if (op1_info == MAY_BE_DOUBLE) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123195:15): [True: 0, False: 0]
  ------------------
12319|      0|				spec = 3425 | SPEC_RULE_OP1;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
12319|      0|			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
  ------------------
  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  ------------------
  |  Branch (123197:15): [True: 0, False: 0]
  |  Branch (123197:15): [True: 0, False: 0]
  ------------------
12319|      0|				spec = 3430 | SPEC_RULE_OP1;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
12319|      0|			}
12320|      0|			break;
12320|      0|		case ZEND_PRE_INC:
  ------------------
  |  |  158|      0|#define ZEND_PRE_INC                         34
  ------------------
  |  Branch (123201:3): [True: 0, False: 1]
  ------------------
12320|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123202:8): [True: 0, False: 0]
  |  Branch (123202:35): [True: 0, False: 0]
  ------------------
12320|      0|				spec = 3408 | SPEC_RULE_RETVAL;
  ------------------
  |  |  315|      0|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12320|      0|			} else if (op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123204:15): [True: 0, False: 0]
  ------------------
12320|      0|				spec = 3410 | SPEC_RULE_RETVAL;
  ------------------
  |  |  315|      0|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12320|      0|			}
12320|      0|			break;
12320|      0|		case ZEND_PRE_DEC:
  ------------------
  |  |  159|      0|#define ZEND_PRE_DEC                         35
  ------------------
  |  Branch (123208:3): [True: 0, False: 1]
  ------------------
12320|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123209:8): [True: 0, False: 0]
  |  Branch (123209:35): [True: 0, False: 0]
  ------------------
12321|      0|				spec = 3412 | SPEC_RULE_RETVAL;
  ------------------
  |  |  315|      0|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12321|      0|			} else if (op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123211:15): [True: 0, False: 0]
  ------------------
12321|      0|				spec = 3414 | SPEC_RULE_RETVAL;
  ------------------
  |  |  315|      0|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12321|      0|			}
12321|      0|			break;
12321|      0|		case ZEND_POST_INC:
  ------------------
  |  |  160|      0|#define ZEND_POST_INC                        36
  ------------------
  |  Branch (123215:3): [True: 0, False: 1]
  ------------------
12321|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123216:8): [True: 0, False: 0]
  |  Branch (123216:35): [True: 0, False: 0]
  ------------------
12321|      0|				spec = 3416;
12321|      0|			} else if (op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123218:15): [True: 0, False: 0]
  ------------------
12321|      0|				spec = 3417;
12322|      0|			}
12322|      0|			break;
12322|      0|		case ZEND_POST_DEC:
  ------------------
  |  |  161|      0|#define ZEND_POST_DEC                        37
  ------------------
  |  Branch (123222:3): [True: 0, False: 1]
  ------------------
12322|      0|			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
              			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123223:8): [True: 0, False: 0]
  |  Branch (123223:35): [True: 0, False: 0]
  ------------------
12322|      0|				spec = 3418;
12322|      0|			} else if (op1_info == MAY_BE_LONG) {
  ------------------
  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  ------------------
  |  Branch (123225:15): [True: 0, False: 0]
  ------------------
12322|      0|				spec = 3419;
12322|      0|			}
12322|      0|			break;
12322|      0|		case ZEND_JMP:
  ------------------
  |  |  166|      0|#define ZEND_JMP                             42
  ------------------
  |  Branch (123229:3): [True: 0, False: 1]
  ------------------
12323|      0|			if (OP_JMP_ADDR(op, op->op1) > op) {
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
  |  Branch (123230:8): [True: 0, False: 0]
  ------------------
12323|      0|				spec = 2566;
12323|      0|			}
12323|      0|			break;
12323|      0|		case ZEND_INIT_FCALL:
  ------------------
  |  |  184|      0|#define ZEND_INIT_FCALL                      61
  ------------------
  |  Branch (123234:3): [True: 0, False: 1]
  ------------------
12323|      0|			if (Z_EXTRA_P(RT_CONSTANT(op, op->op2)) != 0) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
  |  Branch (123235:8): [True: 0, False: 0]
  ------------------
12323|      0|				spec = 2559;
12323|      0|			}
12323|      0|			break;
12323|      0|		case ZEND_RECV:
  ------------------
  |  |  186|      0|#define ZEND_RECV                            63
  ------------------
  |  Branch (123239:3): [True: 0, False: 1]
  ------------------
12324|      0|			if (op->op2.num == MAY_BE_ANY) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (123240:8): [True: 0, False: 0]
  ------------------
12324|      0|				spec = 2560;
12324|      0|			}
12324|      0|			break;
12324|      0|		case ZEND_SEND_VAL:
  ------------------
  |  |  188|      0|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (123244:3): [True: 0, False: 1]
  ------------------
12324|      0|			if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (123245:8): [True: 0, False: 0]
  |  Branch (123245:36): [True: 0, False: 0]
  |  Branch (123245:65): [True: 0, False: 0]
  ------------------
12324|      0|				spec = 3470;
12324|      0|			}
12324|      0|			break;
12324|      0|		case ZEND_SEND_VAR_EX:
  ------------------
  |  |  189|      0|#define ZEND_SEND_VAR_EX                     66
  ------------------
  |  Branch (123249:3): [True: 0, False: 1]
  ------------------
12325|      0|			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  | 1173|      0|#define MAX_ARG_FLAG_NUM 12
  ------------------
              			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (123250:8): [True: 0, False: 0]
  |  Branch (123250:37): [True: 0, False: 0]
  |  Branch (123250:72): [True: 0, False: 0]
  ------------------
12325|      0|				spec = 3465 | SPEC_RULE_OP1;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
12325|      0|			}
12325|      0|			break;
12325|      0|		case ZEND_FE_FETCH_R:
  ------------------
  |  |  201|      0|#define ZEND_FE_FETCH_R                      78
  ------------------
  |  Branch (123254:3): [True: 0, False: 1]
  ------------------
12325|      0|			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
  |  Branch (123255:8): [True: 0, False: 0]
  |  Branch (123255:33): [True: 0, False: 0]
  ------------------
12325|      0|				spec = 3472 | SPEC_RULE_RETVAL;
  ------------------
  |  |  315|      0|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
12325|      0|			}
12325|      0|			break;
12325|      0|		case ZEND_FETCH_DIM_R:
  ------------------
  |  |  203|      0|#define ZEND_FETCH_DIM_R                     81
  ------------------
  |  Branch (123259:3): [True: 0, False: 1]
  ------------------
12326|      0|			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
              			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  ------------------
              			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  ------------------
  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  ------------------
  ------------------
              			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
              			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (123260:8): [True: 0, False: 0]
  ------------------
12326|      0|				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (123261:9): [True: 0, False: 0]
  |  Branch (123261:37): [True: 0, False: 0]
  ------------------
12326|      0|					break;
12326|      0|				}
12326|      0|				spec = 3435 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
              				spec = 3435 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
  ------------------
  |  |  313|      0|#define SPEC_RULE_OP2          0x00020000
  ------------------
12326|      0|			}
12326|      0|			break;
12326|      0|		case ZEND_SEND_VAL_EX:
  ------------------
  |  |  238|      0|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (123267:3): [True: 0, False: 1]
  ------------------
12326|      0|			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  | 1173|      0|#define MAX_ARG_FLAG_NUM 12
  ------------------
              			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (123268:8): [True: 0, False: 0]
  |  Branch (123268:37): [True: 0, False: 0]
  |  Branch (123268:72): [True: 0, False: 0]
  |  Branch (123268:100): [True: 0, False: 0]
  ------------------
12326|      0|				spec = 3471;
12327|      0|			}
12327|      0|			break;
12327|      0|		case ZEND_SEND_VAR:
  ------------------
  |  |  239|      0|#define ZEND_SEND_VAR                       117
  ------------------
  |  Branch (123272:3): [True: 0, False: 1]
  ------------------
12327|      0|			if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
  |  Branch (123273:8): [True: 0, False: 0]
  |  Branch (123273:37): [True: 0, False: 0]
  ------------------
12327|      0|				spec = 3460 | SPEC_RULE_OP1;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
12327|      0|			}
12327|      0|			break;
12327|      0|		case ZEND_COUNT:
  ------------------
  |  |  312|      0|#define ZEND_COUNT                          190
  ------------------
  |  Branch (123277:3): [True: 0, False: 1]
  ------------------
12327|      0|			if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   34|      0|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      0|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      0|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      0|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      0|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      0|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      0|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   23|      0|#define MAY_BE_UNDEF                (1 << IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
              			if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   35|      0|#define MAY_BE_REF                  (1 << IS_REFERENCE) /* may be reference */
  |  |  ------------------
  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  ------------------
  ------------------
              			if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) {
  ------------------
  |  |   31|      0|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
  |  Branch (123278:8): [True: 0, False: 0]
  ------------------
12327|      0|				spec = 2561 | SPEC_RULE_OP1;
  ------------------
  |  |  312|      0|#define SPEC_RULE_OP1          0x00010000
  ------------------
12328|      0|			}
12328|      0|			break;
12328|      0|		case ZEND_BW_OR:
  ------------------
  |  |  133|      0|#define ZEND_BW_OR                            9
  ------------------
  |  Branch (123282:3): [True: 0, False: 1]
  ------------------
12328|      0|		case ZEND_BW_AND:
  ------------------
  |  |  134|      0|#define ZEND_BW_AND                          10
  ------------------
  |  Branch (123283:3): [True: 0, False: 1]
  ------------------
12328|      0|		case ZEND_BW_XOR:
  ------------------
  |  |  135|      0|#define ZEND_BW_XOR                          11
  ------------------
  |  Branch (123284:3): [True: 0, False: 1]
  ------------------
12328|      0|		case ZEND_BOOL_XOR:
  ------------------
  |  |  139|      0|#define ZEND_BOOL_XOR                        15
  ------------------
  |  Branch (123285:3): [True: 0, False: 1]
  ------------------
12328|      0|			if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123286:8): [True: 0, False: 0]
  ------------------
12328|      0|				zend_swap_operands(op);
12328|      0|			}
12328|      0|			break;
12329|      0|		case ZEND_USER_OPCODE:
  ------------------
  |  |  272|      0|#define ZEND_USER_OPCODE                    150
  ------------------
  |  Branch (123290:3): [True: 0, False: 1]
  ------------------
12329|      0|			if (zend_spec_handlers[op->opcode] & SPEC_RULE_COMMUTATIVE) {
  ------------------
  |  |  318|      0|#define SPEC_RULE_COMMUTATIVE  0x00800000
  ------------------
  |  Branch (123291:8): [True: 0, False: 0]
  ------------------
12329|      0|				if (op->op1_type < op->op2_type) {
  ------------------
  |  Branch (123292:9): [True: 0, False: 0]
  ------------------
12329|      0|					zend_swap_operands(op);
12329|      0|				}
12329|      0|			}
12329|      0|			break;
12329|      1|		default:
  ------------------
  |  Branch (123297:3): [True: 1, False: 0]
  ------------------
12329|      1|			break;
12329|      1|	}
12330|      1|	op->handler = zend_opcode_handlers[zend_vm_get_opcode_handler_idx(spec, op)];
12330|      1|}
zend_execute.c:ZEND_NOP_SPEC_HANDLER:
 3315|  1.14k|{
 3316|  1.14k|	USE_OPLINE
 3317|       |
 3318|  1.14k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  1.14k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.14k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.14k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1.14k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.14k|	} else { \
  |  |  |  | 5761|  1.14k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.14k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  1.14k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.14k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  1.14k|	} \
  |  |  |  | 5764|  1.14k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.14k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3318:2): [True: 0, False: 1.14k]
  |  Branch (3318:2): [True: 1.14k, False: 0]
  ------------------
 3319|  1.14k|}
zend_execute.c:ZEND_ADD_SPEC_CONST_CONST_HANDLER:
 6286|      4|{
 6287|      4|	USE_OPLINE
 6288|      4|	zval *op1, *op2, *result;
 6289|      4|	double d1, d2;
 6290|       |
 6291|      4|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6292|      4|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6293|      4|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6293:6): [True: 0, Folded]
  |  Branch (6293:11): [True: 0, Folded]
  |  Branch (6293:35): [True: 4, Folded]
  ------------------
 6294|       |		/* pass */
 6295|      4|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6296|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6297|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6298|      0|			fast_long_add_function(result, op1, op2);
 6299|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6299:4): [True: 0, False: 0]
  |  Branch (6299:4): [True: 0, False: 0]
  ------------------
 6300|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6301|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6302|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6303|      0|			goto add_double;
 6304|      0|		}
 6305|      0|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6306|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6307|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6308|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6309|      0|add_double:
 6310|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6311|      0|			ZVAL_DOUBLE(result, d1 + d2);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6312|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6312:4): [True: 0, False: 0]
  |  Branch (6312:4): [True: 0, False: 0]
  ------------------
 6313|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6314|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6315|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6316|      0|			goto add_double;
 6317|      0|		}
 6318|      0|	}
 6319|       |
 6320|      4|	ZEND_VM_DISPATCH_TO_HELPER(zend_add_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      4|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      4|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6321|      4|}
zend_execute.c:zend_add_helper_SPEC:
  459|    714|{
  460|    714|	USE_OPLINE
  461|       |
  462|    714|	SAVE_OPLINE();
  ------------------
  |  |  428|    714|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    714|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  463|    714|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|    714|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 398, False: 316]
  |  |  ------------------
  ------------------
  464|    398|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    398|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    398|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  465|    398|	}
  466|    714|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|    714|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 502, False: 212]
  |  |  ------------------
  ------------------
  467|    502|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    502|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    502|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  468|    502|	}
  469|    714|	add_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|    714|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    714|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  470|    714|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    714|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    714|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (470:6): [True: 21, False: 693]
  ------------------
  471|     21|		zval_ptr_dtor_nogc(op_1);
  472|     21|	}
  473|    714|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    714|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    714|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (473:6): [True: 175, False: 539]
  ------------------
  474|    175|		zval_ptr_dtor_nogc(op_2);
  475|    175|	}
  476|    714|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    714|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    714|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    714|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 714, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    714|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    714|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    714|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    714|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    714|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    714|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (476:2): [True: 0, False: 0]
  |  Branch (476:2): [True: 0, False: 0]
  ------------------
  477|    714|}
zend_execute.c:ZEND_ADD_SPEC_CONST_TMPVARCV_HANDLER:
 8665|    607|{
 8666|    607|	USE_OPLINE
 8667|    607|	zval *op1, *op2, *result;
 8668|    607|	double d1, d2;
 8669|       |
 8670|    607|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    607|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8671|    607|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    607|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    607|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8672|    607|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|    607|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8672:6): [True: 0, Folded]
  |  Branch (8672:11): [True: 0, Folded]
  |  Branch (8672:35): [Folded, False: 0]
  ------------------
 8673|       |		/* pass */
 8674|    607|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    607|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 601, False: 6]
  |  |  ------------------
  ------------------
 8675|    601|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    601|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 331, False: 270]
  |  |  ------------------
  ------------------
 8676|    331|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    331|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    331|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8677|    331|			fast_long_add_function(result, op1, op2);
 8678|    331|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    331|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    331|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    331|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 331]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    331|	} else { \
  |  |  |  | 5761|    331|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    331|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    331|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    331|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    331|	} \
  |  |  |  | 5764|    331|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    331|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8678:4): [True: 0, False: 331]
  |  Branch (8678:4): [True: 331, False: 0]
  ------------------
 8679|    331|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    270|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 270]
  |  |  ------------------
  ------------------
 8680|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8681|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8682|      0|			goto add_double;
 8683|      0|		}
 8684|    601|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
 8685|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8686|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8687|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8688|      1|add_double:
 8689|      1|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8690|      1|			ZVAL_DOUBLE(result, d1 + d2);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 8691|      1|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8691:4): [True: 0, False: 1]
  |  Branch (8691:4): [True: 1, False: 0]
  ------------------
 8692|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 8693|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8694|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8695|      1|			goto add_double;
 8696|      1|		}
 8697|      1|	}
 8698|       |
 8699|    275|	ZEND_VM_DISPATCH_TO_HELPER(zend_add_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    275|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    275|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8700|    607|}
zend_execute.c:ZEND_ADD_SPEC_TMPVARCV_CONST_HANDLER:
13561|    139|{
13562|    139|	USE_OPLINE
13563|    139|	zval *op1, *op2, *result;
13564|    139|	double d1, d2;
13565|       |
13566|    139|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    139|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    139|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13567|    139|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    139|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13568|    139|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    139|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13568:6): [True: 0, Folded]
  |  Branch (13568:11): [Folded, False: 0]
  |  Branch (13568:52): [True: 0, Folded]
  ------------------
13569|       |		/* pass */
13570|    139|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    139|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 125, False: 14]
  |  |  ------------------
  ------------------
13571|    125|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    125|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 124, False: 1]
  |  |  ------------------
  ------------------
13572|    124|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    124|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    124|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13573|    124|			fast_long_add_function(result, op1, op2);
13574|    124|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    124|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    124|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    124|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 124]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    124|	} else { \
  |  |  |  | 5761|    124|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    124|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    124|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    124|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    124|	} \
  |  |  |  | 5764|    124|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    124|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13574:4): [True: 0, False: 124]
  |  Branch (13574:4): [True: 124, False: 0]
  ------------------
13575|    124|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13576|      1|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13577|      1|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13578|      1|			goto add_double;
13579|      1|		}
13580|    125|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 14]
  |  |  ------------------
  ------------------
13581|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13582|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13583|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13584|      1|add_double:
13585|      1|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13586|      1|			ZVAL_DOUBLE(result, d1 + d2);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
13587|      1|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13587:4): [True: 0, False: 1]
  |  Branch (13587:4): [True: 1, False: 0]
  ------------------
13588|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13589|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13590|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13591|      0|			goto add_double;
13592|      0|		}
13593|      0|	}
13594|       |
13595|     14|	ZEND_VM_DISPATCH_TO_HELPER(zend_add_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     14|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     14|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13596|    139|}
zend_execute.c:ZEND_ADD_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14666|    864|{
14667|    864|	USE_OPLINE
14668|    864|	zval *op1, *op2, *result;
14669|    864|	double d1, d2;
14670|       |
14671|    864|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    864|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    864|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14672|    864|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    864|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    864|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14673|    864|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|    864|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14673:6): [True: 0, Folded]
  |  Branch (14673:11): [Folded, False: 0]
  |  Branch (14673:52): [Folded, False: 0]
  ------------------
14674|       |		/* pass */
14675|    864|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    864|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 342, False: 522]
  |  |  ------------------
  ------------------
14676|    342|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    342|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 334, False: 8]
  |  |  ------------------
  ------------------
14677|    334|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    334|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    334|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14678|    334|			fast_long_add_function(result, op1, op2);
14679|    334|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    334|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    334|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    334|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 334]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    334|	} else { \
  |  |  |  | 5761|    334|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    334|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    334|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    334|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    334|	} \
  |  |  |  | 5764|    334|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    334|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14679:4): [True: 0, False: 334]
  |  Branch (14679:4): [True: 334, False: 0]
  ------------------
14680|    334|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 5]
  |  |  ------------------
  ------------------
14681|      3|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14682|      3|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14683|      3|			goto add_double;
14684|      3|		}
14685|    522|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    522|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 106, False: 416]
  |  |  ------------------
  ------------------
14686|    106|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    106|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 103, False: 3]
  |  |  ------------------
  ------------------
14687|    103|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|    103|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    103|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14688|    103|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|    103|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    103|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14689|    109|add_double:
14690|    109|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    109|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    109|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14691|    109|			ZVAL_DOUBLE(result, d1 + d2);
  ------------------
  |  | 1082|    109|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    109|		zval *__z = (z);				\
  |  | 1084|    109|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    109|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    109|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    109|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    109|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    109|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    109|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    109|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 109]
  |  |  ------------------
  ------------------
14692|    109|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    109|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    109|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    109|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 109]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    109|	} else { \
  |  |  |  | 5761|    109|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    109|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    109|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    109|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    109|	} \
  |  |  |  | 5764|    109|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    109|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14692:4): [True: 0, False: 109]
  |  Branch (14692:4): [True: 109, False: 0]
  ------------------
14693|    109|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
14694|      3|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14695|      3|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14696|      3|			goto add_double;
14697|      3|		}
14698|    106|	}
14699|       |
14700|    421|	ZEND_VM_DISPATCH_TO_HELPER(zend_add_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    421|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    421|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14701|    864|}
zend_execute.c:ZEND_SUB_SPEC_CONST_CONST_HANDLER:
 6324|     17|{
 6325|     17|	USE_OPLINE
 6326|     17|	zval *op1, *op2, *result;
 6327|     17|	double d1, d2;
 6328|       |
 6329|     17|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     17|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6330|     17|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     17|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6331|     17|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6331:6): [True: 0, Folded]
  |  Branch (6331:11): [True: 0, Folded]
  |  Branch (6331:35): [True: 17, Folded]
  ------------------
 6332|       |		/* pass */
 6333|     17|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6334|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6335|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6336|      0|			fast_long_sub_function(result, op1, op2);
 6337|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6337:4): [True: 0, False: 0]
  |  Branch (6337:4): [True: 0, False: 0]
  ------------------
 6338|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6339|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6340|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6341|      0|			goto sub_double;
 6342|      0|		}
 6343|      0|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6344|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6345|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6346|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6347|      0|sub_double:
 6348|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6349|      0|			ZVAL_DOUBLE(result, d1 - d2);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6350|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6350:4): [True: 0, False: 0]
  |  Branch (6350:4): [True: 0, False: 0]
  ------------------
 6351|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6352|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6353|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6354|      0|			goto sub_double;
 6355|      0|		}
 6356|      0|	}
 6357|       |
 6358|     17|	ZEND_VM_DISPATCH_TO_HELPER(zend_sub_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     17|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     17|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6359|     17|}
zend_execute.c:zend_sub_helper_SPEC:
  480|  1.80k|{
  481|  1.80k|	USE_OPLINE
  482|       |
  483|  1.80k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.80k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.80k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  484|  1.80k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.80k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.23k, False: 575]
  |  |  ------------------
  ------------------
  485|  1.23k|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|  1.23k|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|  1.23k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  486|  1.23k|	}
  487|  1.80k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.80k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 365, False: 1.44k]
  |  |  ------------------
  ------------------
  488|    365|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    365|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    365|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  489|    365|	}
  490|  1.80k|	sub_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|  1.80k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.80k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  491|  1.80k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.80k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.80k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (491:6): [True: 190, False: 1.61k]
  ------------------
  492|    190|		zval_ptr_dtor_nogc(op_1);
  493|    190|	}
  494|  1.80k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.80k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.80k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (494:6): [True: 84, False: 1.72k]
  ------------------
  495|     84|		zval_ptr_dtor_nogc(op_2);
  496|     84|	}
  497|  1.80k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.80k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.80k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.80k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.80k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.80k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.80k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.80k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.80k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.80k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.80k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (497:2): [True: 0, False: 0]
  |  Branch (497:2): [True: 0, False: 0]
  ------------------
  498|  1.80k|}
zend_execute.c:ZEND_SUB_SPEC_CONST_TMPVARCV_HANDLER:
 8703|    368|{
 8704|    368|	USE_OPLINE
 8705|    368|	zval *op1, *op2, *result;
 8706|    368|	double d1, d2;
 8707|       |
 8708|    368|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    368|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8709|    368|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    368|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    368|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8710|    368|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|    368|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8710:6): [True: 0, Folded]
  |  Branch (8710:11): [True: 0, Folded]
  |  Branch (8710:35): [Folded, False: 0]
  ------------------
 8711|       |		/* pass */
 8712|    368|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    368|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 365]
  |  |  ------------------
  ------------------
 8713|      3|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 8714|      3|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8715|      3|			fast_long_sub_function(result, op1, op2);
 8716|      3|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8716:4): [True: 0, False: 3]
  |  Branch (8716:4): [True: 3, False: 0]
  ------------------
 8717|      3|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8718|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8719|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8720|      0|			goto sub_double;
 8721|      0|		}
 8722|    365|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    365|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 365, False: 0]
  |  |  ------------------
  ------------------
 8723|    365|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    365|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 365]
  |  |  ------------------
  ------------------
 8724|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8725|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8726|      0|sub_double:
 8727|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8728|      0|			ZVAL_DOUBLE(result, d1 - d2);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8729|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8729:4): [True: 0, False: 0]
  |  Branch (8729:4): [True: 0, False: 0]
  ------------------
 8730|    365|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    365|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 365]
  |  |  ------------------
  ------------------
 8731|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8732|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8733|      0|			goto sub_double;
 8734|      0|		}
 8735|    365|	}
 8736|       |
 8737|    365|	ZEND_VM_DISPATCH_TO_HELPER(zend_sub_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    365|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    365|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8738|    368|}
zend_execute.c:ZEND_SUB_SPEC_TMPVARCV_CONST_HANDLER:
13599|  2.12k|{
13600|  2.12k|	USE_OPLINE
13601|  2.12k|	zval *op1, *op2, *result;
13602|  2.12k|	double d1, d2;
13603|       |
13604|  2.12k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  2.12k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.12k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13605|  2.12k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  2.12k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13606|  2.12k|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  2.12k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13606:6): [True: 0, Folded]
  |  Branch (13606:11): [Folded, False: 0]
  |  Branch (13606:52): [True: 0, Folded]
  ------------------
13607|       |		/* pass */
13608|  2.12k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|  2.12k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 680, False: 1.44k]
  |  |  ------------------
  ------------------
13609|    680|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    680|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 28, False: 652]
  |  |  ------------------
  ------------------
13610|     28|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     28|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     28|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13611|     28|			fast_long_sub_function(result, op1, op2);
13612|     28|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     28|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     28|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     28|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 28]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     28|	} else { \
  |  |  |  | 5761|     28|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     28|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     28|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     28|	} \
  |  |  |  | 5764|     28|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     28|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13612:4): [True: 0, False: 28]
  |  Branch (13612:4): [True: 28, False: 0]
  ------------------
13613|    652|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    652|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 652, False: 0]
  |  |  ------------------
  ------------------
13614|    652|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|    652|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    652|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13615|    652|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|    652|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    652|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13616|    652|			goto sub_double;
13617|    652|		}
13618|  1.44k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|  1.44k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 104, False: 1.34k]
  |  |  ------------------
  ------------------
13619|    104|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    104|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 101, False: 3]
  |  |  ------------------
  ------------------
13620|    101|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|    101|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    101|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13621|    101|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|    101|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    101|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13622|    756|sub_double:
13623|    756|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    756|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    756|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13624|    756|			ZVAL_DOUBLE(result, d1 - d2);
  ------------------
  |  | 1082|    756|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    756|		zval *__z = (z);				\
  |  | 1084|    756|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    756|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    756|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    756|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    756|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    756|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    756|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    756|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 756]
  |  |  ------------------
  ------------------
13625|    756|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    756|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    756|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    756|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 756]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    756|	} else { \
  |  |  |  | 5761|    756|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    756|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    756|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    756|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    756|	} \
  |  |  |  | 5764|    756|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    756|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13625:4): [True: 0, False: 756]
  |  Branch (13625:4): [True: 756, False: 0]
  ------------------
13626|    756|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
13627|      3|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13628|      3|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13629|      3|			goto sub_double;
13630|      3|		}
13631|    104|	}
13632|       |
13633|  1.34k|	ZEND_VM_DISPATCH_TO_HELPER(zend_sub_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|  1.34k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  1.34k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13634|  2.12k|}
zend_execute.c:ZEND_SUB_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14704|     90|{
14705|     90|	USE_OPLINE
14706|     90|	zval *op1, *op2, *result;
14707|     90|	double d1, d2;
14708|       |
14709|     90|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     90|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     90|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14710|     90|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|     90|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     90|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14711|     90|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|     90|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14711:6): [True: 0, Folded]
  |  Branch (14711:11): [Folded, False: 0]
  |  Branch (14711:52): [Folded, False: 0]
  ------------------
14712|       |		/* pass */
14713|     90|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     90|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 86]
  |  |  ------------------
  ------------------
14714|      4|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
14715|      4|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14716|      4|			fast_long_sub_function(result, op1, op2);
14717|      4|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      4|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      4|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14717:4): [True: 0, False: 4]
  |  Branch (14717:4): [True: 4, False: 0]
  ------------------
14718|      4|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
14719|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14720|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14721|      0|			goto sub_double;
14722|      0|		}
14723|     86|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|     86|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 86]
  |  |  ------------------
  ------------------
14724|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
14725|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14726|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14727|      0|sub_double:
14728|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14729|      0|			ZVAL_DOUBLE(result, d1 - d2);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
14730|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14730:4): [True: 0, False: 0]
  |  Branch (14730:4): [True: 0, False: 0]
  ------------------
14731|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
14732|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14733|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14734|      0|			goto sub_double;
14735|      0|		}
14736|      0|	}
14737|       |
14738|     86|	ZEND_VM_DISPATCH_TO_HELPER(zend_sub_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     86|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     86|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14739|     90|}
zend_execute.c:ZEND_MUL_SPEC_CONST_CONST_HANDLER:
 6362|     11|{
 6363|     11|	USE_OPLINE
 6364|     11|	zval *op1, *op2, *result;
 6365|     11|	double d1, d2;
 6366|       |
 6367|     11|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     11|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6368|     11|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     11|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6369|     11|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6369:6): [True: 0, Folded]
  |  Branch (6369:11): [True: 0, Folded]
  |  Branch (6369:35): [True: 11, Folded]
  ------------------
 6370|       |		/* pass */
 6371|     11|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6372|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6373|      0|			zend_long overflow;
 6374|       |
 6375|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6376|      0|			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
  ------------------
  |  |   26|      0|#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
  |  |   27|      0|	long __tmpvar;		 											\
  |  |   28|      0|	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
  |  |  ------------------
  |  |  |  Branch (28:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   29|      0|		(dval) = (double) (a) * (double) (b);						\
  |  |   30|      0|	}																\
  |  |   31|      0|	else (lval) = __tmpvar;											\
  |  |   32|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (32:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6377|      0|			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
              			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (6377:28): [True: 0, False: 0]
  ------------------
 6378|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6378:4): [True: 0, False: 0]
  |  Branch (6378:4): [True: 0, False: 0]
  ------------------
 6379|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6380|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6381|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6382|      0|			goto mul_double;
 6383|      0|		}
 6384|      0|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6385|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6386|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6387|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6388|      0|mul_double:
 6389|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6390|      0|			ZVAL_DOUBLE(result, d1 * d2);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6391|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6391:4): [True: 0, False: 0]
  |  Branch (6391:4): [True: 0, False: 0]
  ------------------
 6392|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6393|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 6394|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6395|      0|			goto mul_double;
 6396|      0|		}
 6397|      0|	}
 6398|       |
 6399|     11|	ZEND_VM_DISPATCH_TO_HELPER(zend_mul_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     11|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     11|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6400|     11|}
zend_execute.c:zend_mul_helper_SPEC:
  501|  1.26k|{
  502|  1.26k|	USE_OPLINE
  503|       |
  504|  1.26k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.26k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.26k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  505|  1.26k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 234, False: 1.03k]
  |  |  ------------------
  ------------------
  506|    234|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    234|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    234|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  507|    234|	}
  508|  1.26k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.26k]
  |  |  ------------------
  ------------------
  509|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  510|      0|	}
  511|  1.26k|	mul_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|  1.26k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.26k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  512|  1.26k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.26k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.26k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (512:6): [True: 1.01k, False: 247]
  ------------------
  513|  1.01k|		zval_ptr_dtor_nogc(op_1);
  514|  1.01k|	}
  515|  1.26k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.26k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.26k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (515:6): [True: 7, False: 1.25k]
  ------------------
  516|      7|		zval_ptr_dtor_nogc(op_2);
  517|      7|	}
  518|  1.26k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.26k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.26k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.26k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.26k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.26k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.26k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.26k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.26k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.26k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.26k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (518:2): [True: 0, False: 0]
  |  Branch (518:2): [True: 0, False: 0]
  ------------------
  519|  1.26k|}
zend_execute.c:ZEND_MUL_SPEC_TMPVARCV_CONST_HANDLER:
13637|  2.03k|{
13638|  2.03k|	USE_OPLINE
13639|  2.03k|	zval *op1, *op2, *result;
13640|  2.03k|	double d1, d2;
13641|       |
13642|  2.03k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  2.03k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.03k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13643|  2.03k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  2.03k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13644|  2.03k|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  2.03k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13644:6): [True: 0, Folded]
  |  Branch (13644:11): [Folded, False: 0]
  |  Branch (13644:52): [True: 0, Folded]
  ------------------
13645|       |		/* pass */
13646|  2.03k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|  2.03k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 445, False: 1.59k]
  |  |  ------------------
  ------------------
13647|    445|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    445|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 440, False: 5]
  |  |  ------------------
  ------------------
13648|    440|			zend_long overflow;
13649|       |
13650|    440|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    440|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    440|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13651|    440|			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
  ------------------
  |  |   26|    440|#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
  |  |   27|    440|	long __tmpvar;		 											\
  |  |   28|    440|	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
  |  |  ------------------
  |  |  |  Branch (28:6): [True: 1, False: 439]
  |  |  ------------------
  |  |   29|      1|		(dval) = (double) (a) * (double) (b);						\
  |  |   30|      1|	}																\
  |  |   31|    440|	else (lval) = __tmpvar;											\
  |  |   32|    440|} while (0)
  |  |  ------------------
  |  |  |  Branch (32:10): [Folded, False: 440]
  |  |  ------------------
  ------------------
13652|    440|			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  678|    440|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    440|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
              			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  610|    879|#define IS_LONG						4
  ------------------
  |  Branch (13652:28): [True: 1, False: 439]
  ------------------
13653|    440|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    440|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    440|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    440|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 440]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    440|	} else { \
  |  |  |  | 5761|    440|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    440|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    440|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    440|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    440|	} \
  |  |  |  | 5764|    440|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    440|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13653:4): [True: 0, False: 440]
  |  Branch (13653:4): [True: 440, False: 0]
  ------------------
13654|    440|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
13655|      5|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13656|      5|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      5|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      5|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13657|      5|			goto mul_double;
13658|      5|		}
13659|  1.59k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|  1.59k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 344, False: 1.24k]
  |  |  ------------------
  ------------------
13660|    344|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    344|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 341]
  |  |  ------------------
  ------------------
13661|      3|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13662|      3|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13663|    349|mul_double:
13664|    349|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    349|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    349|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13665|    349|			ZVAL_DOUBLE(result, d1 * d2);
  ------------------
  |  | 1082|    349|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|    349|		zval *__z = (z);				\
  |  | 1084|    349|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|    349|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|    349|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|    349|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|    349|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    349|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|    349|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|    349|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 349]
  |  |  ------------------
  ------------------
13666|    349|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    349|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    349|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    349|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 349]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    349|	} else { \
  |  |  |  | 5761|    349|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    349|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    349|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    349|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    349|	} \
  |  |  |  | 5764|    349|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    349|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13666:4): [True: 0, False: 349]
  |  Branch (13666:4): [True: 349, False: 0]
  ------------------
13667|    349|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    341|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 341, False: 0]
  |  |  ------------------
  ------------------
13668|    341|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|    341|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    341|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13669|    341|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|    341|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    341|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13670|    341|			goto mul_double;
13671|    341|		}
13672|    344|	}
13673|       |
13674|  1.24k|	ZEND_VM_DISPATCH_TO_HELPER(zend_mul_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|  1.24k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  1.24k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13675|  2.03k|}
zend_execute.c:ZEND_MUL_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14742|     13|{
14743|     13|	USE_OPLINE
14744|     13|	zval *op1, *op2, *result;
14745|     13|	double d1, d2;
14746|       |
14747|     13|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     13|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     13|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14748|     13|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|     13|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     13|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14749|     13|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14749:6): [True: 0, Folded]
  |  Branch (14749:11): [Folded, False: 0]
  |  Branch (14749:52): [Folded, False: 0]
  ------------------
14750|       |		/* pass */
14751|     13|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 8]
  |  |  ------------------
  ------------------
14752|      5|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 2]
  |  |  ------------------
  ------------------
14753|      3|			zend_long overflow;
14754|       |
14755|      3|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14756|      3|			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
  ------------------
  |  |   26|      3|#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
  |  |   27|      3|	long __tmpvar;		 											\
  |  |   28|      3|	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
  |  |  ------------------
  |  |  |  Branch (28:6): [True: 0, False: 3]
  |  |  ------------------
  |  |   29|      0|		(dval) = (double) (a) * (double) (b);						\
  |  |   30|      0|	}																\
  |  |   31|      3|	else (lval) = __tmpvar;											\
  |  |   32|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (32:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
14757|      3|			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
              			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
  ------------------
  |  |  610|      6|#define IS_LONG						4
  ------------------
  |  Branch (14757:28): [True: 0, False: 3]
  ------------------
14758|      3|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14758:4): [True: 0, False: 3]
  |  Branch (14758:4): [True: 3, False: 0]
  ------------------
14759|      3|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
14760|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14761|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14762|      0|			goto mul_double;
14763|      0|		}
14764|      8|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 6]
  |  |  ------------------
  ------------------
14765|      2|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
14766|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14767|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14768|      1|mul_double:
14769|      1|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14770|      1|			ZVAL_DOUBLE(result, d1 * d2);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
14771|      1|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14771:4): [True: 0, False: 1]
  |  Branch (14771:4): [True: 1, False: 0]
  ------------------
14772|      2|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
14773|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14774|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14775|      1|			goto mul_double;
14776|      1|		}
14777|      2|	}
14778|       |
14779|      9|	ZEND_VM_DISPATCH_TO_HELPER(zend_mul_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      9|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      9|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14780|     13|}
zend_execute.c:ZEND_DIV_SPEC_CONST_CONST_HANDLER:
 6403|      6|{
 6404|      6|	USE_OPLINE
 6405|      6|	zval *op1, *op2;
 6406|       |
 6407|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6408|      6|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6409|      6|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6410|      6|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6411|       |
 6412|       |
 6413|       |
 6414|       |
 6415|      6|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6415:2): [True: 0, False: 0]
  |  Branch (6415:2): [True: 0, False: 0]
  ------------------
 6416|      6|}
zend_execute.c:ZEND_DIV_SPEC_CONST_TMP_HANDLER:
 9450|      2|{
 9451|      2|	USE_OPLINE
 9452|      2|	zval *op1, *op2;
 9453|       |
 9454|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9455|      2|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9456|      2|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9457|      2|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9458|       |
 9459|       |
 9460|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9461|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9461:2): [True: 0, False: 0]
  |  Branch (9461:2): [True: 0, False: 0]
  ------------------
 9462|      2|}
zend_execute.c:ZEND_DIV_SPEC_CONST_CV_HANDLER:
12044|      1|{
12045|      1|	USE_OPLINE
12046|      1|	zval *op1, *op2;
12047|       |
12048|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12049|      1|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
12050|      1|	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12051|      1|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12052|       |
12053|       |
12054|       |
12055|       |
12056|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12056:2): [True: 0, False: 0]
  |  Branch (12056:2): [True: 0, False: 0]
  ------------------
12057|      1|}
zend_execute.c:ZEND_DIV_SPEC_TMP_CONST_HANDLER:
18296|    107|{
18297|    107|	USE_OPLINE
18298|    107|	zval *op1, *op2;
18299|       |
18300|    107|	SAVE_OPLINE();
  ------------------
  |  |  428|    107|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    107|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18301|    107|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    107|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    107|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18302|    107|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    107|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18303|    107|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|    107|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    107|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18304|    107|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    107|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    107|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18305|       |
18306|       |
18307|    107|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    107|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    107|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    107|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 107, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    107|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    107|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    107|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    107|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    107|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    107|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18307:2): [True: 0, False: 0]
  |  Branch (18307:2): [True: 0, False: 0]
  ------------------
18308|    107|}
zend_execute.c:ZEND_DIV_SPEC_TMP_TMP_HANDLER:
19886|    366|{
19887|    366|	USE_OPLINE
19888|    366|	zval *op1, *op2;
19889|       |
19890|    366|	SAVE_OPLINE();
  ------------------
  |  |  428|    366|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    366|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19891|    366|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    366|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    366|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19892|    366|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    366|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    366|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19893|    366|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|    366|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    366|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19894|    366|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    366|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    366|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19895|    366|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    366|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    366|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19896|    366|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    366|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    366|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    366|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 366, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    366|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    366|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    366|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    366|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    366|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    366|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19896:2): [True: 0, False: 0]
  |  Branch (19896:2): [True: 0, False: 0]
  ------------------
19897|    366|}
zend_execute.c:ZEND_DIV_SPEC_TMP_CV_HANDLER:
22125|      2|{
22126|      2|	USE_OPLINE
22127|      2|	zval *op1, *op2;
22128|       |
22129|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22130|      2|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22131|      2|	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22132|      2|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22133|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22134|       |
22135|       |
22136|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22136:2): [True: 0, False: 0]
  |  Branch (22136:2): [True: 0, False: 0]
  ------------------
22137|      2|}
zend_execute.c:ZEND_DIV_SPEC_CV_CONST_HANDLER:
41137|      5|{
41138|      5|	USE_OPLINE
41139|      5|	zval *op1, *op2;
41140|       |
41141|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41142|      5|	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41143|      5|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41144|      5|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41145|       |
41146|       |
41147|       |
41148|       |
41149|      5|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (41149:2): [True: 0, False: 0]
  |  Branch (41149:2): [True: 0, False: 0]
  ------------------
41150|      5|}
zend_execute.c:ZEND_DIV_SPEC_CV_TMP_HANDLER:
44983|      2|{
44984|      2|	USE_OPLINE
44985|      2|	zval *op1, *op2;
44986|       |
44987|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44988|      2|	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44989|      2|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44990|      2|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44991|       |
44992|       |
44993|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44994|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44994:2): [True: 0, False: 0]
  |  Branch (44994:2): [True: 0, False: 0]
  ------------------
44995|      2|}
zend_execute.c:ZEND_DIV_SPEC_CV_CV_HANDLER:
50081|      3|{
50082|      3|	USE_OPLINE
50083|      3|	zval *op1, *op2;
50084|       |
50085|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50086|      3|	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50087|      3|	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50088|      3|	div_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50089|       |
50090|       |
50091|       |
50092|       |
50093|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50093:2): [True: 0, False: 0]
  |  Branch (50093:2): [True: 0, False: 0]
  ------------------
50094|      3|}
zend_execute.c:ZEND_MOD_SPEC_CONST_CONST_HANDLER:
 6419|  1.89k|{
 6420|  1.89k|	USE_OPLINE
 6421|  1.89k|	zval *op1, *op2, *result;
 6422|       |
 6423|  1.89k|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  1.89k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6424|  1.89k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  1.89k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6425|  1.89k|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  1.89k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6425:6): [True: 0, Folded]
  |  Branch (6425:11): [True: 0, Folded]
  |  Branch (6425:35): [True: 0, Folded]
  ------------------
 6426|       |		/* pass */
 6427|  1.89k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6428|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6429|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6430|      0|			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6431|      0|				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 6432|      0|			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6433|       |				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
 6434|      0|				ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6435|      0|			} else {
 6436|      0|				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6437|      0|			}
 6438|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6438:4): [True: 0, False: 0]
  |  Branch (6438:4): [True: 0, False: 0]
  ------------------
 6439|      0|		}
 6440|      0|	}
 6441|       |
 6442|  1.89k|	ZEND_VM_DISPATCH_TO_HELPER(zend_mod_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|  1.89k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  1.89k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6443|  1.89k|}
zend_execute.c:zend_mod_helper_SPEC:
  532|  1.99k|{
  533|  1.99k|	USE_OPLINE
  534|       |
  535|  1.99k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.99k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.99k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  536|  1.99k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.99k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 1.99k]
  |  |  ------------------
  ------------------
  537|      3|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      3|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  538|      3|	}
  539|  1.99k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.99k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.99k]
  |  |  ------------------
  ------------------
  540|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  541|      0|	}
  542|  1.99k|	mod_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|  1.99k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.99k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  543|  1.99k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.99k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.99k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (543:6): [True: 5, False: 1.99k]
  ------------------
  544|      5|		zval_ptr_dtor_nogc(op_1);
  545|      5|	}
  546|  1.99k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.99k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.99k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (546:6): [True: 101, False: 1.89k]
  ------------------
  547|    101|		zval_ptr_dtor_nogc(op_2);
  548|    101|	}
  549|  1.99k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.99k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.99k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.99k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.99k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.99k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.99k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.99k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.99k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.99k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.99k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (549:2): [True: 0, False: 0]
  |  Branch (549:2): [True: 0, False: 0]
  ------------------
  550|  1.99k|}
zend_execute.c:ZEND_MOD_SPEC_CONST_TMPVARCV_HANDLER:
 8741|     96|{
 8742|     96|	USE_OPLINE
 8743|     96|	zval *op1, *op2, *result;
 8744|       |
 8745|     96|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     96|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8746|     96|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|     96|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     96|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8747|     96|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|     96|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8747:6): [True: 0, Folded]
  |  Branch (8747:11): [True: 0, Folded]
  |  Branch (8747:35): [Folded, False: 0]
  ------------------
 8748|       |		/* pass */
 8749|     96|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     96|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 96]
  |  |  ------------------
  ------------------
 8750|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8751|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8752|      0|			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8753|      0|				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 8754|      0|			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8755|       |				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
 8756|      0|				ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8757|      0|			} else {
 8758|      0|				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8759|      0|			}
 8760|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8760:4): [True: 0, False: 0]
  |  Branch (8760:4): [True: 0, False: 0]
  ------------------
 8761|      0|		}
 8762|      0|	}
 8763|       |
 8764|     96|	ZEND_VM_DISPATCH_TO_HELPER(zend_mod_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     96|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     96|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8765|     96|}
zend_execute.c:ZEND_MOD_SPEC_TMPVARCV_CONST_HANDLER:
13678|     16|{
13679|     16|	USE_OPLINE
13680|     16|	zval *op1, *op2, *result;
13681|       |
13682|     16|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     16|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     16|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13683|     16|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     16|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13684|     16|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13684:6): [True: 0, Folded]
  |  Branch (13684:11): [Folded, False: 0]
  |  Branch (13684:52): [True: 0, Folded]
  ------------------
13685|       |		/* pass */
13686|     16|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 2]
  |  |  ------------------
  ------------------
13687|     14|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 1]
  |  |  ------------------
  ------------------
13688|     13|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     13|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     13|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13689|     13|			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
13690|      0|				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
13691|     13|			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
13692|       |				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
13693|      0|				ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13694|     13|			} else {
13695|     13|				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
  ------------------
  |  | 1076|     13|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     13|		zval *__z = (z);				\
  |  | 1078|     13|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     13|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     13|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     13|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     13|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
13696|     13|			}
13697|     13|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     13|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     13|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     13|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     13|	} else { \
  |  |  |  | 5761|     13|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     13|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     13|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     13|	} \
  |  |  |  | 5764|     13|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     13|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13697:4): [True: 0, False: 13]
  |  Branch (13697:4): [True: 13, False: 0]
  ------------------
13698|     13|		}
13699|     14|	}
13700|       |
13701|      3|	ZEND_VM_DISPATCH_TO_HELPER(zend_mod_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      3|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13702|     16|}
zend_execute.c:ZEND_MOD_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14783|      8|{
14784|      8|	USE_OPLINE
14785|      8|	zval *op1, *op2, *result;
14786|       |
14787|      8|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14788|      8|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14789|      8|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14789:6): [True: 0, Folded]
  |  Branch (14789:11): [Folded, False: 0]
  |  Branch (14789:52): [Folded, False: 0]
  ------------------
14790|       |		/* pass */
14791|      8|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 5]
  |  |  ------------------
  ------------------
14792|      3|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
14793|      3|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14794|      3|			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
14795|      0|				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
14796|      3|			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
14797|       |				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
14798|      0|				ZVAL_LONG(result, 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
14799|      3|			} else {
14800|      3|				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
  ------------------
  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      3|		zval *__z = (z);				\
  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
14801|      3|			}
14802|      3|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14802:4): [True: 0, False: 3]
  |  Branch (14802:4): [True: 3, False: 0]
  ------------------
14803|      3|		}
14804|      3|	}
14805|       |
14806|      5|	ZEND_VM_DISPATCH_TO_HELPER(zend_mod_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      5|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14807|      8|}
zend_execute.c:ZEND_SL_SPEC_CONST_CONST_HANDLER:
 6446|     27|{
 6447|     27|	USE_OPLINE
 6448|     27|	zval *op1, *op2;
 6449|       |
 6450|     27|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     27|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6451|     27|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     27|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6452|     27|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     27|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6452:6): [True: 0, Folded]
  |  Branch (6452:11): [True: 0, Folded]
  |  Branch (6452:35): [True: 0, Folded]
  ------------------
 6453|       |		/* pass */
 6454|     27|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6455|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6456|      0|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6457|       |		/* Perform shift on unsigned numbers to get well-defined wrap behavior. */
 6458|      0|		ZVAL_LONG(EX_VAR(opline->result.var),
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6459|      0|			(zend_long) ((zend_ulong) Z_LVAL_P(op1) << Z_LVAL_P(op2)));
 6460|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6460:3): [True: 0, False: 0]
  |  Branch (6460:3): [True: 0, False: 0]
  ------------------
 6461|      0|	}
 6462|       |
 6463|     27|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_left_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     27|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     27|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6464|     27|}
zend_execute.c:zend_shift_left_helper_SPEC:
  553|    326|{
  554|    326|	USE_OPLINE
  555|       |
  556|    326|	SAVE_OPLINE();
  ------------------
  |  |  428|    326|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    326|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  557|    326|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|    326|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 326]
  |  |  ------------------
  ------------------
  558|      0|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  559|      0|	}
  560|    326|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|    326|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 326]
  |  |  ------------------
  ------------------
  561|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  562|      0|	}
  563|    326|	shift_left_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|    326|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    326|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  564|    326|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    326|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    326|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (564:6): [True: 10, False: 316]
  ------------------
  565|     10|		zval_ptr_dtor_nogc(op_1);
  566|     10|	}
  567|    326|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    326|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    326|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (567:6): [True: 10, False: 316]
  ------------------
  568|     10|		zval_ptr_dtor_nogc(op_2);
  569|     10|	}
  570|    326|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    326|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    326|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    326|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 326, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    326|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    326|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    326|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    326|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    326|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    326|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (570:2): [True: 0, False: 0]
  |  Branch (570:2): [True: 0, False: 0]
  ------------------
  571|    326|}
zend_execute.c:ZEND_SL_SPEC_CONST_TMPVARCV_HANDLER:
 8768|      6|{
 8769|      6|	USE_OPLINE
 8770|      6|	zval *op1, *op2;
 8771|       |
 8772|      6|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8773|      6|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8774|      6|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8774:6): [True: 0, Folded]
  |  Branch (8774:11): [True: 0, Folded]
  |  Branch (8774:35): [Folded, False: 0]
  ------------------
 8775|       |		/* pass */
 8776|      6|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
 8777|      1|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 8778|      1|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 8779|       |		/* Perform shift on unsigned numbers to get well-defined wrap behavior. */
 8780|      1|		ZVAL_LONG(EX_VAR(opline->result.var),
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 8781|      1|			(zend_long) ((zend_ulong) Z_LVAL_P(op1) << Z_LVAL_P(op2)));
 8782|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8782:3): [True: 0, False: 1]
  |  Branch (8782:3): [True: 1, False: 0]
  ------------------
 8783|      1|	}
 8784|       |
 8785|      5|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_left_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      5|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8786|      6|}
zend_execute.c:ZEND_SL_SPEC_TMPVARCV_CONST_HANDLER:
13705|    293|{
13706|    293|	USE_OPLINE
13707|    293|	zval *op1, *op2;
13708|       |
13709|    293|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    293|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    293|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13710|    293|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    293|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13711|    293|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    293|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13711:6): [True: 0, Folded]
  |  Branch (13711:11): [Folded, False: 0]
  |  Branch (13711:52): [True: 0, Folded]
  ------------------
13712|       |		/* pass */
13713|    293|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|    586|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 293, False: 0]
  |  |  ------------------
  ------------------
13714|    293|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|    586|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 286]
  |  |  ------------------
  ------------------
13715|      7|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 3]
  |  |  ------------------
  ------------------
13716|       |		/* Perform shift on unsigned numbers to get well-defined wrap behavior. */
13717|      4|		ZVAL_LONG(EX_VAR(opline->result.var),
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
13718|      4|			(zend_long) ((zend_ulong) Z_LVAL_P(op1) << Z_LVAL_P(op2)));
13719|      4|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      4|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      4|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13719:3): [True: 0, False: 4]
  |  Branch (13719:3): [True: 4, False: 0]
  ------------------
13720|      4|	}
13721|       |
13722|    289|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_left_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    289|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    289|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13723|    293|}
zend_execute.c:ZEND_SL_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14810|      5|{
14811|      5|	USE_OPLINE
14812|      5|	zval *op1, *op2;
14813|       |
14814|      5|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14815|      5|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14816|      5|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14816:6): [True: 0, Folded]
  |  Branch (14816:11): [Folded, False: 0]
  |  Branch (14816:52): [Folded, False: 0]
  ------------------
14817|       |		/* pass */
14818|      5|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  ------------------
  ------------------
14819|      4|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
14820|      1|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14821|       |		/* Perform shift on unsigned numbers to get well-defined wrap behavior. */
14822|      0|		ZVAL_LONG(EX_VAR(opline->result.var),
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
14823|      0|			(zend_long) ((zend_ulong) Z_LVAL_P(op1) << Z_LVAL_P(op2)));
14824|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14824:3): [True: 0, False: 0]
  |  Branch (14824:3): [True: 0, False: 0]
  ------------------
14825|      0|	}
14826|       |
14827|      5|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_left_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      5|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14828|      5|}
zend_execute.c:ZEND_SR_SPEC_CONST_CONST_HANDLER:
 6467|      3|{
 6468|      3|	USE_OPLINE
 6469|      3|	zval *op1, *op2;
 6470|       |
 6471|      3|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6472|      3|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6473|      3|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6473:6): [True: 0, Folded]
  |  Branch (6473:11): [True: 0, Folded]
  |  Branch (6473:35): [True: 0, Folded]
  ------------------
 6474|       |		/* pass */
 6475|      3|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6476|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6477|      0|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6478|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6479|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6479:3): [True: 0, False: 0]
  |  Branch (6479:3): [True: 0, False: 0]
  ------------------
 6480|      0|	}
 6481|       |
 6482|      3|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_right_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      3|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6483|      3|}
zend_execute.c:zend_shift_right_helper_SPEC:
  574|     19|{
  575|     19|	USE_OPLINE
  576|       |
  577|     19|	SAVE_OPLINE();
  ------------------
  |  |  428|     19|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     19|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  578|     19|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 15]
  |  |  ------------------
  ------------------
  579|      4|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      4|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  580|      4|	}
  581|     19|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  582|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  583|      0|	}
  584|     19|	shift_right_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|     19|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     19|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  585|     19|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     19|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     19|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (585:6): [True: 8, False: 11]
  ------------------
  586|      8|		zval_ptr_dtor_nogc(op_1);
  587|      8|	}
  588|     19|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     19|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     19|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (588:6): [True: 6, False: 13]
  ------------------
  589|      6|		zval_ptr_dtor_nogc(op_2);
  590|      6|	}
  591|     19|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     19|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     19|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     19|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 19, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     19|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     19|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     19|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     19|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     19|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     19|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (591:2): [True: 0, False: 0]
  |  Branch (591:2): [True: 0, False: 0]
  ------------------
  592|     19|}
zend_execute.c:ZEND_SR_SPEC_CONST_TMPVARCV_HANDLER:
 8789|      1|{
 8790|      1|	USE_OPLINE
 8791|      1|	zval *op1, *op2;
 8792|       |
 8793|      1|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8794|      1|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8795|      1|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8795:6): [True: 0, Folded]
  |  Branch (8795:11): [True: 0, Folded]
  |  Branch (8795:35): [Folded, False: 0]
  ------------------
 8796|       |		/* pass */
 8797|      1|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8798|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8799|      0|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8800|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8801|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8801:3): [True: 0, False: 0]
  |  Branch (8801:3): [True: 0, False: 0]
  ------------------
 8802|      0|	}
 8803|       |
 8804|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_right_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8805|      1|}
zend_execute.c:ZEND_SR_SPEC_TMPVARCV_CONST_HANDLER:
13726|     10|{
13727|     10|	USE_OPLINE
13728|     10|	zval *op1, *op2;
13729|       |
13730|     10|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13731|     10|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     10|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13732|     10|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13732:6): [True: 0, Folded]
  |  Branch (13732:11): [Folded, False: 0]
  |  Branch (13732:52): [True: 0, Folded]
  ------------------
13733|       |		/* pass */
13734|     10|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
13735|      1|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
13736|      0|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13737|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13738|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13738:3): [True: 0, False: 0]
  |  Branch (13738:3): [True: 0, False: 0]
  ------------------
13739|      0|	}
13740|       |
13741|     10|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_right_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     10|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     10|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13742|     10|}
zend_execute.c:ZEND_SR_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14831|      5|{
14832|      5|	USE_OPLINE
14833|      5|	zval *op1, *op2;
14834|       |
14835|      5|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14836|      5|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14837|      5|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14837:6): [True: 0, Folded]
  |  Branch (14837:11): [Folded, False: 0]
  |  Branch (14837:52): [Folded, False: 0]
  ------------------
14838|       |		/* pass */
14839|      5|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  ------------------
  ------------------
14840|      4|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
14841|      3|			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
14842|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
14843|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14843:3): [True: 0, False: 0]
  |  Branch (14843:3): [True: 0, False: 0]
  ------------------
14844|      0|	}
14845|       |
14846|      5|	ZEND_VM_DISPATCH_TO_HELPER(zend_shift_right_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      5|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14847|      5|}
zend_execute.c:ZEND_CONCAT_SPEC_CONST_TMP_HANDLER:
 9480|     27|{
 9481|     27|	USE_OPLINE
 9482|     27|	zval *op1, *op2;
 9483|       |
 9484|     27|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     27|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9485|     27|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     27|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     27|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9486|       |
 9487|     27|	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|     27|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|     54|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9487:7): [True: 27, Folded]
  ------------------
 9488|     27|	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  865|     27|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|     54|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|     27|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (9488:7): [Folded, False: 27]
  ------------------
 9489|     19|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 9490|     19|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 9491|     19|		zend_string *str;
 9492|     19|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
 9493|       |
 9494|     19|		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|     19|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|     38|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9494:7): [Folded, False: 19]
  ------------------
 9495|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (9495:8): [Folded, False: 0]
  |  Branch (9495:34): [Folded, False: 0]
  ------------------
 9496|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9497|      0|			} else {
 9498|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9499|      0|			}
 9500|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9500:8): [Folded, False: 0]
  ------------------
 9501|      0|				zend_string_release_ex(op1_str, 0);
 9502|      0|			}
 9503|     19|		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  865|     19|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|     38|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 17]
  |  |  ------------------
  ------------------
  |  Branch (9503:14): [True: 19, Folded]
  ------------------
 9504|      2|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (9504:8): [True: 2, Folded]
  |  Branch (9504:32): [Folded, False: 0]
  ------------------
 9505|      2|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 1]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 9506|      2|			} else {
 9507|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9508|      0|			}
 9509|      2|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9509:8): [True: 2, Folded]
  ------------------
 9510|      2|				zend_string_release_ex(op2_str, 0);
 9511|      2|			}
 9512|     17|		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|     34|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (9512:14): [Folded, False: 17]
  |  Branch (9512:38): [True: 0, Folded]
  ------------------
 9513|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (9513:7): [True: 0, False: 0]
  |  Branch (9513:37): [True: 0, False: 0]
  ------------------
 9514|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9515|       |
 9516|      0|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9517|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 9518|      0|			}
 9519|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9520|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9521|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9522|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9523|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9523:8): [True: 0, Folded]
  ------------------
 9524|      0|				zend_string_release_ex(op2_str, 0);
 9525|      0|			}
 9526|     17|		} else {
 9527|     17|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9528|     17|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9529|     17|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|     17|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 9530|     17|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|     17|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     17|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     17|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     17|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 9531|     17|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|     17|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     17|		zval *__z = (z);						\
  |  | 1107|     17|		zend_string *__s = (s);					\
  |  | 1108|     17|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     17|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     17|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     17|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     17|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     17|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     17|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     17|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 9532|     17|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9532:8): [Folded, False: 17]
  ------------------
 9533|      0|				zend_string_release_ex(op1_str, 0);
 9534|      0|			}
 9535|     17|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9535:8): [True: 17, Folded]
  ------------------
 9536|     17|				zend_string_release_ex(op2_str, 0);
 9537|     17|			}
 9538|     17|		}
 9539|     19|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     19|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     19|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     19|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     19|	} else { \
  |  |  |  | 5761|     19|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     19|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     19|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     19|	} \
  |  |  |  | 5764|     19|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     19|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9539:3): [True: 0, False: 19]
  |  Branch (9539:3): [True: 19, False: 0]
  ------------------
 9540|     19|	} else {
 9541|      8|		SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9542|       |
 9543|      8|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|     16|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9543:7): [Folded, False: 8]
  ------------------
 9544|      0|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9545|      0|		}
 9546|      8|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|     16|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9546:7): [Folded, False: 8]
  ------------------
 9547|      0|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9548|      0|		}
 9549|      8|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9550|       |
 9551|       |
 9552|      8|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9553|      8|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9553:3): [True: 0, False: 0]
  |  Branch (9553:3): [True: 0, False: 0]
  ------------------
 9554|      8|	}
 9555|     27|}
zend_execute.c:ZEND_CONCAT_SPEC_CONST_CV_HANDLER:
12076|    923|{
12077|    923|	USE_OPLINE
12078|    923|	zval *op1, *op2;
12079|       |
12080|    923|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    923|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
12081|    923|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    923|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    923|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12082|       |
12083|    923|	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    923|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|  1.84k|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12083:7): [True: 923, Folded]
  ------------------
12084|    923|	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  867|    923|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|  1.84k|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|    923|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 918]
  |  |  ------------------
  ------------------
  |  Branch (12084:7): [Folded, False: 923]
  ------------------
12085|      5|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12086|      5|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12087|      5|		zend_string *str;
12088|      5|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
12089|       |
12090|      5|		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12090:7): [Folded, False: 5]
  ------------------
12091|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12091:8): [Folded, False: 0]
  |  Branch (12091:29): [True: 0, Folded]
  ------------------
12092|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12093|      0|			} else {
12094|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12095|      0|			}
12096|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12096:8): [Folded, False: 0]
  ------------------
12097|      0|				zend_string_release_ex(op1_str, 0);
12098|      0|			}
12099|      5|		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (12099:14): [True: 5, Folded]
  ------------------
12100|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12100:8): [True: 0, Folded]
  |  Branch (12100:32): [Folded, False: 0]
  ------------------
12101|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12102|      0|			} else {
12103|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12104|      0|			}
12105|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12105:8): [Folded, False: 0]
  ------------------
12106|      0|				zend_string_release_ex(op2_str, 0);
12107|      0|			}
12108|      5|		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12108:14): [Folded, False: 5]
  |  Branch (12108:38): [True: 0, Folded]
  ------------------
12109|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (12109:7): [True: 0, False: 0]
  |  Branch (12109:37): [True: 0, False: 0]
  ------------------
12110|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12111|       |
12112|      0|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12113|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
12114|      0|			}
12115|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12116|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12117|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12118|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12119|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12119:8): [Folded, False: 0]
  ------------------
12120|      0|				zend_string_release_ex(op2_str, 0);
12121|      0|			}
12122|      5|		} else {
12123|      5|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12124|      5|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12125|      5|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12126|      5|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      5|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      5|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
12127|      5|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      5|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      5|		zval *__z = (z);						\
  |  | 1107|      5|		zend_string *__s = (s);					\
  |  | 1108|      5|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      5|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      5|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
12128|      5|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12128:8): [Folded, False: 5]
  ------------------
12129|      0|				zend_string_release_ex(op1_str, 0);
12130|      0|			}
12131|      5|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12131:8): [Folded, False: 5]
  ------------------
12132|      0|				zend_string_release_ex(op2_str, 0);
12133|      0|			}
12134|      5|		}
12135|      5|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      5|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12135:3): [True: 0, False: 5]
  |  Branch (12135:3): [True: 5, False: 0]
  ------------------
12136|    918|	} else {
12137|    918|		SAVE_OPLINE();
  ------------------
  |  |  428|    918|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    918|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12138|       |
12139|    918|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  864|    918|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.83k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12139:7): [Folded, False: 918]
  ------------------
12140|      0|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12141|      0|		}
12142|    918|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    918|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.83k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|    918|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 917]
  |  |  ------------------
  ------------------
  |  Branch (12142:7): [True: 918, Folded]
  ------------------
12143|      1|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12144|      1|		}
12145|    918|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|    918|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    918|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12146|       |
12147|       |
12148|       |
12149|       |
12150|    918|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    918|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    918|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    918|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 918, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    918|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    918|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    918|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    918|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    918|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    918|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12150:3): [True: 0, False: 0]
  |  Branch (12150:3): [True: 0, False: 0]
  ------------------
12151|    918|	}
12152|    923|}
zend_execute.c:ZEND_CONCAT_SPEC_TMP_CONST_HANDLER:
18326|    212|{
18327|    212|	USE_OPLINE
18328|    212|	zval *op1, *op2;
18329|       |
18330|    212|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    212|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    212|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18331|    212|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    212|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18332|       |
18333|    212|	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  865|    212|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    424|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|    212|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 66, False: 146]
  |  |  ------------------
  ------------------
  |  Branch (18333:7): [Folded, False: 212]
  ------------------
18334|     66|	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18334:7): [True: 0, Folded]
  ------------------
18335|     66|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|     66|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     66|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18336|     66|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|     66|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     66|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18337|     66|		zend_string *str;
18338|     66|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
18339|       |
18340|     66|		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  865|     66|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|    132|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 66]
  |  |  ------------------
  ------------------
  |  Branch (18340:7): [True: 66, Folded]
  ------------------
18341|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18341:8): [True: 0, Folded]
  |  Branch (18341:32): [Folded, False: 0]
  ------------------
18342|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18343|      0|			} else {
18344|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18345|      0|			}
18346|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18346:8): [True: 0, Folded]
  ------------------
18347|      0|				zend_string_release_ex(op1_str, 0);
18348|      0|			}
18349|     66|		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|     66|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|    132|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18349:14): [Folded, False: 66]
  ------------------
18350|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18350:8): [Folded, False: 0]
  |  Branch (18350:34): [Folded, False: 0]
  ------------------
18351|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18352|      0|			} else {
18353|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18354|      0|			}
18355|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18355:8): [Folded, False: 0]
  ------------------
18356|      0|				zend_string_release_ex(op2_str, 0);
18357|      0|			}
18358|     66|		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|     66|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  864|    132|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  867|     66|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18358:14): [True: 0, Folded]
  |  Branch (18358:40): [True: 0, Folded]
  ------------------
18359|     66|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|     54|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (18359:7): [True: 54, False: 12]
  |  Branch (18359:37): [True: 26, False: 28]
  ------------------
18360|     26|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|     26|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18361|       |
18362|     26|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  ------------------
  ------------------
18363|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
18364|      0|			}
18365|     26|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|     26|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18366|     26|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|     26|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18367|     26|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|     26|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     26|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     26|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     26|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
18368|     26|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|     26|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     26|		zval *__z = (z);						\
  |  | 1107|     26|		zend_string *__s = (s);					\
  |  | 1108|     26|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     26|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     26|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     26|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     26|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     26|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     26|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     26|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
18369|     26|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|     26|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     26|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     26|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18369:8): [Folded, False: 26]
  ------------------
18370|      0|				zend_string_release_ex(op2_str, 0);
18371|      0|			}
18372|     40|		} else {
18373|     40|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18374|     40|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18375|     40|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|     40|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|     40|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18376|     40|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|     40|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     40|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     40|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     40|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
18377|     40|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|     40|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|     40|		zval *__z = (z);						\
  |  | 1107|     40|		zend_string *__s = (s);					\
  |  | 1108|     40|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     40|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     40|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|     40|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|     40|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     40|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     40|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     40|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
18378|     40|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     40|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     40|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18378:8): [True: 40, Folded]
  ------------------
18379|     40|				zend_string_release_ex(op1_str, 0);
18380|     40|			}
18381|     40|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|     40|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     40|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18381:8): [Folded, False: 40]
  ------------------
18382|      0|				zend_string_release_ex(op2_str, 0);
18383|      0|			}
18384|     40|		}
18385|     66|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     66|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     66|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     66|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 66]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     66|	} else { \
  |  |  |  | 5761|     66|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     66|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     66|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     66|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     66|	} \
  |  |  |  | 5764|     66|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     66|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18385:3): [True: 0, False: 66]
  |  Branch (18385:3): [True: 66, False: 0]
  ------------------
18386|    146|	} else {
18387|    146|		SAVE_OPLINE();
  ------------------
  |  |  428|    146|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    146|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18388|       |
18389|    146|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  865|    146|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|    292|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18389:7): [Folded, False: 146]
  ------------------
18390|      0|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18391|      0|		}
18392|    146|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  864|    146|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    292|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18392:7): [Folded, False: 146]
  ------------------
18393|      0|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18394|      0|		}
18395|    146|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|    146|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    146|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18396|    146|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    146|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    146|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18397|       |
18398|       |
18399|    146|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    146|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    146|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    146|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 146, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    146|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    146|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    146|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    146|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    146|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    146|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18399:3): [True: 0, False: 0]
  |  Branch (18399:3): [True: 0, False: 0]
  ------------------
18400|    146|	}
18401|    212|}
zend_execute.c:ZEND_CONCAT_SPEC_TMP_TMP_HANDLER:
19914|     67|{
19915|     67|	USE_OPLINE
19916|     67|	zval *op1, *op2;
19917|       |
19918|     67|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     67|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     67|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19919|     67|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     67|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     67|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19920|       |
19921|     67|	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  865|     67|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    134|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|     67|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 52, False: 15]
  |  |  ------------------
  ------------------
  |  Branch (19921:7): [Folded, False: 67]
  ------------------
19922|     52|	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  865|     52|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|     52|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 45]
  |  |  ------------------
  ------------------
  |  Branch (19922:7): [Folded, False: 52]
  ------------------
19923|      7|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19924|      7|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19925|      7|		zend_string *str;
19926|      7|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
19927|       |
19928|      7|		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (19928:7): [True: 7, Folded]
  ------------------
19929|      1|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19929:8): [Folded, False: 0]
  |  Branch (19929:34): [Folded, False: 0]
  ------------------
19930|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19931|      1|			} else {
19932|      1|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      1|		zval *__z = (z);						\
  |  | 1090|      1|		zend_string *__s = (s);					\
  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      1|		/* interned strings support */			\
  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 0]
  |  |  ------------------
  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
19933|      1|			}
19934|      1|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19934:8): [True: 1, Folded]
  ------------------
19935|      1|				zend_string_release_ex(op1_str, 0);
19936|      1|			}
19937|      6|		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (19937:14): [True: 6, Folded]
  ------------------
19938|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19938:8): [Folded, False: 0]
  |  Branch (19938:34): [Folded, False: 0]
  ------------------
19939|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19940|      0|			} else {
19941|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19942|      0|			}
19943|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19943:8): [True: 0, Folded]
  ------------------
19944|      0|				zend_string_release_ex(op2_str, 0);
19945|      0|			}
19946|      6|		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19946:14): [True: 0, Folded]
  |  Branch (19946:40): [True: 0, Folded]
  ------------------
19947|      6|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      6|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (19947:7): [True: 6, False: 0]
  |  Branch (19947:37): [True: 2, False: 4]
  ------------------
19948|      2|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19949|       |
19950|      2|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
19951|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
19952|      0|			}
19953|      2|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19954|      2|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19955|      2|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
19956|      2|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      2|		zval *__z = (z);						\
  |  | 1107|      2|		zend_string *__s = (s);					\
  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
19957|      2|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19957:8): [True: 2, Folded]
  ------------------
19958|      2|				zend_string_release_ex(op2_str, 0);
19959|      2|			}
19960|      4|		} else {
19961|      4|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19962|      4|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19963|      4|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19964|      4|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      4|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      4|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
19965|      4|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      4|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      4|		zval *__z = (z);						\
  |  | 1107|      4|		zend_string *__s = (s);					\
  |  | 1108|      4|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      4|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
19966|      4|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19966:8): [True: 4, Folded]
  ------------------
19967|      4|				zend_string_release_ex(op1_str, 0);
19968|      4|			}
19969|      4|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19969:8): [True: 4, Folded]
  ------------------
19970|      4|				zend_string_release_ex(op2_str, 0);
19971|      4|			}
19972|      4|		}
19973|      7|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      7|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      7|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      7|	} else { \
  |  |  |  | 5761|      7|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      7|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      7|	} \
  |  |  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19973:3): [True: 0, False: 7]
  |  Branch (19973:3): [True: 7, False: 0]
  ------------------
19974|     60|	} else {
19975|     60|		SAVE_OPLINE();
  ------------------
  |  |  428|     60|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     60|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19976|       |
19977|     60|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  865|     60|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|    120|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19977:7): [Folded, False: 60]
  ------------------
19978|      0|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19979|      0|		}
19980|     60|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  865|     60|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    120|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19980:7): [Folded, False: 60]
  ------------------
19981|      0|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19982|      0|		}
19983|     60|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|     60|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     60|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19984|     60|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     60|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     60|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19985|     60|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     60|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     60|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19986|     60|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     60|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     60|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     60|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 60, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     60|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     60|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     60|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     60|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     60|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     60|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19986:3): [True: 0, False: 0]
  |  Branch (19986:3): [True: 0, False: 0]
  ------------------
19987|     60|	}
19988|     67|}
zend_execute.c:ZEND_CONCAT_SPEC_TMP_CV_HANDLER:
22155|      4|{
22156|      4|	USE_OPLINE
22157|      4|	zval *op1, *op2;
22158|       |
22159|      4|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22160|      4|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22161|       |
22162|      4|	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (22162:7): [Folded, False: 4]
  ------------------
22163|      3|	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (22163:7): [Folded, False: 3]
  ------------------
22164|      0|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22165|      0|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22166|      0|		zend_string *str;
22167|      0|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
22168|       |
22169|      0|		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (22169:7): [True: 0, Folded]
  ------------------
22170|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22170:8): [Folded, False: 0]
  |  Branch (22170:29): [True: 0, Folded]
  ------------------
22171|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22172|      0|			} else {
22173|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22174|      0|			}
22175|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22175:8): [True: 0, Folded]
  ------------------
22176|      0|				zend_string_release_ex(op1_str, 0);
22177|      0|			}
22178|      0|		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (22178:14): [True: 0, Folded]
  ------------------
22179|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22179:8): [Folded, False: 0]
  |  Branch (22179:34): [Folded, False: 0]
  ------------------
22180|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22181|      0|			} else {
22182|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22183|      0|			}
22184|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22184:8): [Folded, False: 0]
  ------------------
22185|      0|				zend_string_release_ex(op2_str, 0);
22186|      0|			}
22187|      0|		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22187:14): [True: 0, Folded]
  |  Branch (22187:40): [True: 0, Folded]
  ------------------
22188|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (22188:7): [True: 0, False: 0]
  |  Branch (22188:37): [True: 0, False: 0]
  ------------------
22189|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22190|       |
22191|      0|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22192|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
22193|      0|			}
22194|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22195|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22196|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22197|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22198|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22198:8): [Folded, False: 0]
  ------------------
22199|      0|				zend_string_release_ex(op2_str, 0);
22200|      0|			}
22201|      0|		} else {
22202|      0|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22203|      0|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22204|      0|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22205|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22206|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22207|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22207:8): [True: 0, Folded]
  ------------------
22208|      0|				zend_string_release_ex(op1_str, 0);
22209|      0|			}
22210|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22210:8): [Folded, False: 0]
  ------------------
22211|      0|				zend_string_release_ex(op2_str, 0);
22212|      0|			}
22213|      0|		}
22214|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22214:3): [True: 0, False: 0]
  |  Branch (22214:3): [True: 0, False: 0]
  ------------------
22215|      4|	} else {
22216|      4|		SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22217|       |
22218|      4|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (22218:7): [Folded, False: 4]
  ------------------
22219|      0|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22220|      0|		}
22221|      4|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (22221:7): [True: 4, Folded]
  ------------------
22222|      0|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22223|      0|		}
22224|      4|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22225|      4|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22226|       |
22227|       |
22228|      4|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22228:3): [True: 0, False: 0]
  |  Branch (22228:3): [True: 0, False: 0]
  ------------------
22229|      4|	}
22230|      4|}
zend_execute.c:ZEND_CONCAT_SPEC_CV_CONST_HANDLER:
41169|    314|{
41170|    314|	USE_OPLINE
41171|    314|	zval *op1, *op2;
41172|       |
41173|    314|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    314|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    314|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41174|    314|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    314|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41175|       |
41176|    314|	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  867|    314|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    628|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|    314|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 307]
  |  |  ------------------
  ------------------
  |  Branch (41176:7): [Folded, False: 314]
  ------------------
41177|      7|	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41177:7): [True: 0, Folded]
  ------------------
41178|      7|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41179|      7|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41180|      7|		zend_string *str;
41181|      7|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
41182|       |
41183|      7|		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (41183:7): [True: 7, Folded]
  ------------------
41184|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41184:8): [True: 0, Folded]
  |  Branch (41184:32): [Folded, False: 0]
  ------------------
41185|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41186|      0|			} else {
41187|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41188|      0|			}
41189|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41189:8): [Folded, False: 0]
  ------------------
41190|      0|				zend_string_release_ex(op1_str, 0);
41191|      0|			}
41192|      7|		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41192:14): [Folded, False: 7]
  ------------------
41193|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41193:8): [Folded, False: 0]
  |  Branch (41193:29): [True: 0, Folded]
  ------------------
41194|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41195|      0|			} else {
41196|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41197|      0|			}
41198|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41198:8): [Folded, False: 0]
  ------------------
41199|      0|				zend_string_release_ex(op2_str, 0);
41200|      0|			}
41201|      7|		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41201:14): [True: 0, Folded]
  |  Branch (41201:35): [Folded, False: 0]
  ------------------
41202|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (41202:7): [True: 0, False: 0]
  |  Branch (41202:37): [True: 0, False: 0]
  ------------------
41203|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
41204|       |
41205|      0|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41206|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
41207|      0|			}
41208|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
41209|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
41210|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41211|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41212|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41212:8): [Folded, False: 0]
  ------------------
41213|      0|				zend_string_release_ex(op2_str, 0);
41214|      0|			}
41215|      7|		} else {
41216|      7|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
41217|      7|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
41218|      7|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
41219|      7|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      7|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      7|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
41220|      7|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      7|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      7|		zval *__z = (z);						\
  |  | 1107|      7|		zend_string *__s = (s);					\
  |  | 1108|      7|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      7|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      7|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
41221|      7|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      7|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41221:8): [Folded, False: 7]
  ------------------
41222|      0|				zend_string_release_ex(op1_str, 0);
41223|      0|			}
41224|      7|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      7|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41224:8): [Folded, False: 7]
  ------------------
41225|      0|				zend_string_release_ex(op2_str, 0);
41226|      0|			}
41227|      7|		}
41228|      7|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      7|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      7|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      7|	} else { \
  |  |  |  | 5761|      7|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      7|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      7|	} \
  |  |  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (41228:3): [True: 0, False: 7]
  |  Branch (41228:3): [True: 7, False: 0]
  ------------------
41229|    307|	} else {
41230|    307|		SAVE_OPLINE();
  ------------------
  |  |  428|    307|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    307|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41231|       |
41232|    307|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|    307|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|    614|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|    307|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 299, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (41232:7): [True: 307, Folded]
  ------------------
41233|    299|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    299|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    299|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41234|    299|		}
41235|    307|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  864|    307|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    614|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41235:7): [Folded, False: 307]
  ------------------
41236|      0|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41237|      0|		}
41238|    307|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|    307|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    307|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41239|       |
41240|       |
41241|       |
41242|       |
41243|    307|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    307|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    307|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    307|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 307, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    307|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    307|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    307|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    307|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    307|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    307|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (41243:3): [True: 0, False: 0]
  |  Branch (41243:3): [True: 0, False: 0]
  ------------------
41244|    307|	}
41245|    314|}
zend_execute.c:ZEND_CONCAT_SPEC_CV_TMP_HANDLER:
45013|  1.00k|{
45014|  1.00k|	USE_OPLINE
45015|  1.00k|	zval *op1, *op2;
45016|       |
45017|  1.00k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.00k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.00k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45018|  1.00k|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.00k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.00k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45019|       |
45020|  1.00k|	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  867|  1.00k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|  2.00k|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|  1.00k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1.00k]
  |  |  ------------------
  ------------------
  |  Branch (45020:7): [Folded, False: 1.00k]
  ------------------
45021|      1|	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45021:7): [Folded, False: 1]
  ------------------
45022|      1|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
45023|      1|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
45024|      1|		zend_string *str;
45025|      1|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
45026|       |
45027|      1|		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (45027:7): [True: 1, Folded]
  ------------------
45028|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (45028:8): [Folded, False: 0]
  |  Branch (45028:34): [Folded, False: 0]
  ------------------
45029|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45030|      0|			} else {
45031|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45032|      0|			}
45033|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45033:8): [Folded, False: 0]
  ------------------
45034|      0|				zend_string_release_ex(op1_str, 0);
45035|      0|			}
45036|      1|		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (45036:14): [True: 1, Folded]
  ------------------
45037|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (45037:8): [Folded, False: 0]
  |  Branch (45037:29): [True: 0, Folded]
  ------------------
45038|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45039|      0|			} else {
45040|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45041|      0|			}
45042|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45042:8): [True: 0, Folded]
  ------------------
45043|      0|				zend_string_release_ex(op2_str, 0);
45044|      0|			}
45045|      1|		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (45045:14): [True: 0, Folded]
  |  Branch (45045:35): [Folded, False: 0]
  ------------------
45046|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (45046:7): [True: 0, False: 0]
  |  Branch (45046:37): [True: 0, False: 0]
  ------------------
45047|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
45048|       |
45049|      0|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45050|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
45051|      0|			}
45052|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
45053|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
45054|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45055|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45056|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45056:8): [True: 0, Folded]
  ------------------
45057|      0|				zend_string_release_ex(op2_str, 0);
45058|      0|			}
45059|      1|		} else {
45060|      1|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
45061|      1|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
45062|      1|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
45063|      1|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      1|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      1|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
45064|      1|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      1|		zval *__z = (z);						\
  |  | 1107|      1|		zend_string *__s = (s);					\
  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
45065|      1|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45065:8): [Folded, False: 1]
  ------------------
45066|      0|				zend_string_release_ex(op1_str, 0);
45067|      0|			}
45068|      1|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45068:8): [True: 1, Folded]
  ------------------
45069|      1|				zend_string_release_ex(op2_str, 0);
45070|      1|			}
45071|      1|		}
45072|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (45072:3): [True: 0, False: 1]
  |  Branch (45072:3): [True: 1, False: 0]
  ------------------
45073|  1.00k|	} else {
45074|  1.00k|		SAVE_OPLINE();
  ------------------
  |  |  428|  1.00k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.00k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45075|       |
45076|  1.00k|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.00k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|  2.00k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.00k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.00k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45076:7): [True: 1.00k, Folded]
  ------------------
45077|  1.00k|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|  1.00k|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|  1.00k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45078|  1.00k|		}
45079|  1.00k|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  865|  1.00k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|  2.00k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45079:7): [Folded, False: 1.00k]
  ------------------
45080|      0|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45081|      0|		}
45082|  1.00k|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|  1.00k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.00k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45083|       |
45084|       |
45085|  1.00k|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|  1.00k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.00k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45086|  1.00k|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.00k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.00k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.00k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.00k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.00k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.00k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.00k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.00k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.00k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.00k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (45086:3): [True: 0, False: 0]
  |  Branch (45086:3): [True: 0, False: 0]
  ------------------
45087|  1.00k|	}
45088|  1.00k|}
zend_execute.c:ZEND_CONCAT_SPEC_CV_CV_HANDLER:
50113|      4|{
50114|      4|	USE_OPLINE
50115|      4|	zval *op1, *op2;
50116|       |
50117|      4|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50118|      4|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50119|       |
50120|      4|	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (50120:7): [Folded, False: 4]
  ------------------
50121|      1|	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (50121:7): [Folded, False: 1]
  ------------------
50122|      0|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
50123|      0|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
50124|      0|		zend_string *str;
50125|      0|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
50126|       |
50127|      0|		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (50127:7): [True: 0, Folded]
  ------------------
50128|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (50128:8): [Folded, False: 0]
  |  Branch (50128:29): [True: 0, Folded]
  ------------------
50129|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50130|      0|			} else {
50131|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50132|      0|			}
50133|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50133:8): [Folded, False: 0]
  ------------------
50134|      0|				zend_string_release_ex(op1_str, 0);
50135|      0|			}
50136|      0|		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (50136:14): [True: 0, Folded]
  ------------------
50137|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (50137:8): [Folded, False: 0]
  |  Branch (50137:29): [True: 0, Folded]
  ------------------
50138|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50139|      0|			} else {
50140|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50141|      0|			}
50142|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50142:8): [Folded, False: 0]
  ------------------
50143|      0|				zend_string_release_ex(op2_str, 0);
50144|      0|			}
50145|      0|		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (50145:14): [True: 0, Folded]
  |  Branch (50145:35): [Folded, False: 0]
  ------------------
50146|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (50146:7): [True: 0, False: 0]
  |  Branch (50146:37): [True: 0, False: 0]
  ------------------
50147|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
50148|       |
50149|      0|			if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50150|      0|				zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
50151|      0|			}
50152|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
50153|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
50154|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50155|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50156|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50156:8): [Folded, False: 0]
  ------------------
50157|      0|				zend_string_release_ex(op2_str, 0);
50158|      0|			}
50159|      0|		} else {
50160|      0|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
50161|      0|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
50162|      0|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
50163|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50164|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50165|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50165:8): [Folded, False: 0]
  ------------------
50166|      0|				zend_string_release_ex(op1_str, 0);
50167|      0|			}
50168|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50168:8): [Folded, False: 0]
  ------------------
50169|      0|				zend_string_release_ex(op2_str, 0);
50170|      0|			}
50171|      0|		}
50172|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50172:3): [True: 0, False: 0]
  |  Branch (50172:3): [True: 0, False: 0]
  ------------------
50173|      4|	} else {
50174|      4|		SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50175|       |
50176|      4|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (50176:7): [True: 4, Folded]
  ------------------
50177|      1|			op1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50178|      1|		}
50179|      4|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (50179:7): [True: 4, Folded]
  ------------------
50180|      1|			op2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50181|      1|		}
50182|      4|		concat_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50183|       |
50184|       |
50185|       |
50186|       |
50187|      4|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50187:3): [True: 0, False: 0]
  |  Branch (50187:3): [True: 0, False: 0]
  ------------------
50188|      4|	}
50189|      4|}
zend_execute.c:ZEND_BW_OR_SPEC_CONST_CONST_HANDLER:
 6758|      5|{
 6759|      5|	USE_OPLINE
 6760|      5|	zval *op1, *op2;
 6761|       |
 6762|      5|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6763|      5|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6764|      5|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6764:6): [True: 0, Folded]
  |  Branch (6764:11): [True: 0, Folded]
  |  Branch (6764:35): [True: 0, Folded]
  ------------------
 6765|       |		/* pass */
 6766|      5|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6767|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6768|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6769|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6769:3): [True: 0, False: 0]
  |  Branch (6769:3): [True: 0, False: 0]
  ------------------
 6770|      0|	}
 6771|       |
 6772|      5|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_or_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      5|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6773|      5|}
zend_execute.c:zend_bw_or_helper_SPEC:
  683|     24|{
  684|     24|	USE_OPLINE
  685|       |
  686|     24|	SAVE_OPLINE();
  ------------------
  |  |  428|     24|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  687|     24|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 20]
  |  |  ------------------
  ------------------
  688|      4|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      4|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  689|      4|	}
  690|     24|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 21]
  |  |  ------------------
  ------------------
  691|      3|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      3|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  692|      3|	}
  693|     24|	bitwise_or_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|     24|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     24|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  694|     24|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     24|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     24|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (694:6): [True: 12, False: 12]
  ------------------
  695|     12|		zval_ptr_dtor_nogc(op_1);
  696|     12|	}
  697|     24|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     24|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     24|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (697:6): [True: 2, False: 22]
  ------------------
  698|      2|		zval_ptr_dtor_nogc(op_2);
  699|      2|	}
  700|     24|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     24|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     24|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     24|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 24, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     24|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     24|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     24|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     24|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     24|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (700:2): [True: 0, False: 0]
  |  Branch (700:2): [True: 0, False: 0]
  ------------------
  701|     24|}
zend_execute.c:ZEND_BW_OR_SPEC_TMPVARCV_CONST_HANDLER:
14015|     21|{
14016|     21|	USE_OPLINE
14017|     21|	zval *op1, *op2;
14018|       |
14019|     21|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     21|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     21|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14020|     21|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     21|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
14021|     21|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14021:6): [True: 0, Folded]
  |  Branch (14021:11): [Folded, False: 0]
  |  Branch (14021:52): [True: 0, Folded]
  ------------------
14022|       |		/* pass */
14023|     21|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|     42|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 16, False: 5]
  |  |  ------------------
  ------------------
14024|     16|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 6]
  |  |  ------------------
  ------------------
14025|     10|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
  ------------------
  |  | 1076|     10|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     10|		zval *__z = (z);				\
  |  | 1078|     10|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     10|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     10|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
14026|     10|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     10|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     10|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     10|	} else { \
  |  |  |  | 5761|     10|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     10|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     10|	} \
  |  |  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14026:3): [True: 0, False: 10]
  |  Branch (14026:3): [True: 10, False: 0]
  ------------------
14027|     10|	}
14028|       |
14029|     11|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_or_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     11|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     11|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14030|     21|}
zend_execute.c:ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER:
15120|      8|{
15121|      8|	USE_OPLINE
15122|      8|	zval *op1, *op2;
15123|       |
15124|      8|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15125|      8|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15126|      8|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15126:6): [True: 0, Folded]
  |  Branch (15126:11): [Folded, False: 0]
  |  Branch (15126:52): [Folded, False: 0]
  ------------------
15127|       |		/* pass */
15128|      8|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
15129|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15130|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15131|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15131:3): [True: 0, False: 0]
  |  Branch (15131:3): [True: 0, False: 0]
  ------------------
15132|      0|	}
15133|       |
15134|      8|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_or_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      8|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      8|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
15135|      8|}
zend_execute.c:ZEND_BW_AND_SPEC_CONST_CONST_HANDLER:
 6776|    117|{
 6777|    117|	USE_OPLINE
 6778|    117|	zval *op1, *op2;
 6779|       |
 6780|    117|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    117|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6781|    117|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    117|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6782|    117|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    117|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6782:6): [True: 0, Folded]
  |  Branch (6782:11): [True: 0, Folded]
  |  Branch (6782:35): [True: 0, Folded]
  ------------------
 6783|       |		/* pass */
 6784|    117|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6785|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6786|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6787|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6787:3): [True: 0, False: 0]
  |  Branch (6787:3): [True: 0, False: 0]
  ------------------
 6788|      0|	}
 6789|       |
 6790|    117|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_and_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    117|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    117|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6791|    117|}
zend_execute.c:zend_bw_and_helper_SPEC:
  704|    924|{
  705|    924|	USE_OPLINE
  706|       |
  707|    924|	SAVE_OPLINE();
  ------------------
  |  |  428|    924|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    924|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  708|    924|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|    924|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 652, False: 272]
  |  |  ------------------
  ------------------
  709|    652|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    652|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    652|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  710|    652|	}
  711|    924|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|    924|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 923]
  |  |  ------------------
  ------------------
  712|      1|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  713|      1|	}
  714|    924|	bitwise_and_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|    924|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    924|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  715|    924|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    924|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    924|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (715:6): [True: 27, False: 897]
  ------------------
  716|     27|		zval_ptr_dtor_nogc(op_1);
  717|     27|	}
  718|    924|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    924|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    924|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (718:6): [True: 300, False: 624]
  ------------------
  719|    300|		zval_ptr_dtor_nogc(op_2);
  720|    300|	}
  721|    924|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    924|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    924|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    924|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 924, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    924|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    924|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    924|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    924|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    924|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    924|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (721:2): [True: 0, False: 0]
  |  Branch (721:2): [True: 0, False: 0]
  ------------------
  722|    924|}
zend_execute.c:ZEND_BW_AND_SPEC_TMPVARCV_CONST_HANDLER:
14033|    519|{
14034|    519|	USE_OPLINE
14035|    519|	zval *op1, *op2;
14036|       |
14037|    519|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    519|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    519|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14038|    519|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    519|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
14039|    519|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    519|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14039:6): [True: 0, Folded]
  |  Branch (14039:11): [Folded, False: 0]
  |  Branch (14039:52): [True: 0, Folded]
  ------------------
14040|       |		/* pass */
14041|    519|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|  1.03k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 32, False: 487]
  |  |  ------------------
  ------------------
14042|     32|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     32|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 14]
  |  |  ------------------
  ------------------
14043|     18|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
  ------------------
  |  | 1076|     18|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     18|		zval *__z = (z);				\
  |  | 1078|     18|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     18|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     18|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     18|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     18|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     18|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     18|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
14044|     18|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     18|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     18|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     18|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     18|	} else { \
  |  |  |  | 5761|     18|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     18|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     18|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     18|	} \
  |  |  |  | 5764|     18|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14044:3): [True: 0, False: 18]
  |  Branch (14044:3): [True: 18, False: 0]
  ------------------
14045|     18|	}
14046|       |
14047|    501|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_and_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    501|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    501|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14048|    519|}
zend_execute.c:ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER:
15138|    312|{
15139|    312|	USE_OPLINE
15140|    312|	zval *op1, *op2;
15141|       |
15142|    312|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    312|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    312|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15143|    312|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    312|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    312|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15144|    312|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|    312|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15144:6): [True: 0, Folded]
  |  Branch (15144:11): [Folded, False: 0]
  |  Branch (15144:52): [Folded, False: 0]
  ------------------
15145|       |		/* pass */
15146|    312|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|    624|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 133, False: 179]
  |  |  ------------------
  ------------------
15147|    133|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    133|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 127]
  |  |  ------------------
  ------------------
15148|      6|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
  ------------------
  |  | 1076|      6|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      6|		zval *__z = (z);				\
  |  | 1078|      6|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      6|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      6|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
15149|      6|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      6|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      6|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      6|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      6|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15149:3): [True: 0, False: 6]
  |  Branch (15149:3): [True: 6, False: 0]
  ------------------
15150|      6|	}
15151|       |
15152|    306|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_and_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    306|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    306|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
15153|    312|}
zend_execute.c:ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER:
 6794|  2.12k|{
 6795|  2.12k|	USE_OPLINE
 6796|  2.12k|	zval *op1, *op2;
 6797|       |
 6798|  2.12k|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  2.12k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6799|  2.12k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  2.12k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6800|  2.12k|	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  2.12k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6800:6): [True: 0, Folded]
  |  Branch (6800:11): [True: 0, Folded]
  |  Branch (6800:35): [True: 0, Folded]
  ------------------
 6801|       |		/* pass */
 6802|  2.12k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6803|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6804|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6805|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6805:3): [True: 0, False: 0]
  |  Branch (6805:3): [True: 0, False: 0]
  ------------------
 6806|      0|	}
 6807|       |
 6808|  2.12k|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_xor_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|  2.12k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  2.12k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 6809|  2.12k|}
zend_execute.c:zend_bw_xor_helper_SPEC:
  725|  2.22k|{
  726|  2.22k|	USE_OPLINE
  727|       |
  728|  2.22k|	SAVE_OPLINE();
  ------------------
  |  |  428|  2.22k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  2.22k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  729|  2.22k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  2.22k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.22k]
  |  |  ------------------
  ------------------
  730|      0|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  731|      0|	}
  732|  2.22k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  2.22k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.22k]
  |  |  ------------------
  ------------------
  733|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  734|      0|	}
  735|  2.22k|	bitwise_xor_function(EX_VAR(opline->result.var), op_1, op_2);
  ------------------
  |  |  755|  2.22k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.22k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  736|  2.22k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  2.22k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  2.22k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (736:6): [True: 92, False: 2.12k]
  ------------------
  737|     92|		zval_ptr_dtor_nogc(op_1);
  738|     92|	}
  739|  2.22k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  2.22k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  2.22k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (739:6): [True: 0, False: 2.22k]
  ------------------
  740|      0|		zval_ptr_dtor_nogc(op_2);
  741|      0|	}
  742|  2.22k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  2.22k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  2.22k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  2.22k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2.22k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  2.22k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  2.22k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  2.22k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  2.22k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  2.22k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  2.22k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (742:2): [True: 0, False: 0]
  |  Branch (742:2): [True: 0, False: 0]
  ------------------
  743|  2.22k|}
zend_execute.c:ZEND_BW_XOR_SPEC_TMPVARCV_CONST_HANDLER:
14051|  1.93k|{
14052|  1.93k|	USE_OPLINE
14053|  1.93k|	zval *op1, *op2;
14054|       |
14055|  1.93k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.93k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.93k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14056|  1.93k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  1.93k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
14057|  1.93k|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  1.93k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14057:6): [True: 0, Folded]
  |  Branch (14057:11): [Folded, False: 0]
  |  Branch (14057:52): [True: 0, Folded]
  ------------------
14058|       |		/* pass */
14059|  1.93k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|  3.87k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.84k, False: 91]
  |  |  ------------------
  ------------------
14060|  1.84k|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|  1.84k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.84k, False: 1]
  |  |  ------------------
  ------------------
14061|  1.84k|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
  ------------------
  |  | 1076|  1.84k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  1.84k|		zval *__z = (z);				\
  |  | 1078|  1.84k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  1.84k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  1.84k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  1.84k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  1.84k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.84k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  1.84k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  1.84k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1.84k]
  |  |  ------------------
  ------------------
14062|  1.84k|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  1.84k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.84k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.84k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1.84k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.84k|	} else { \
  |  |  |  | 5761|  1.84k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.84k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  1.84k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.84k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  1.84k|	} \
  |  |  |  | 5764|  1.84k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.84k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14062:3): [True: 0, False: 1.84k]
  |  Branch (14062:3): [True: 1.84k, False: 0]
  ------------------
14063|  1.84k|	}
14064|       |
14065|     92|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_xor_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     92|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     92|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14066|  1.93k|}
zend_execute.c:ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER:
15156|      4|{
15157|      4|	USE_OPLINE
15158|      4|	zval *op1, *op2;
15159|       |
15160|      4|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15161|      4|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15162|      4|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15162:6): [True: 0, Folded]
  |  Branch (15162:11): [Folded, False: 0]
  |  Branch (15162:52): [Folded, False: 0]
  ------------------
15163|       |		/* pass */
15164|      4|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
15165|      0|			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15166|      0|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15167|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15167:3): [True: 0, False: 0]
  |  Branch (15167:3): [True: 0, False: 0]
  ------------------
15168|      0|	}
15169|       |
15170|      4|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_xor_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      4|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      4|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
15171|      4|}
zend_execute.c:ZEND_POW_SPEC_CONST_CONST_HANDLER:
 6486|      1|{
 6487|      1|	USE_OPLINE
 6488|      1|	zval *op1, *op2;
 6489|       |
 6490|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6491|      1|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6492|      1|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6493|      1|	pow_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6494|       |
 6495|       |
 6496|       |
 6497|       |
 6498|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6498:2): [True: 0, False: 0]
  |  Branch (6498:2): [True: 0, False: 0]
  ------------------
 6499|      1|}
zend_execute.c:ZEND_POW_SPEC_CONST_TMP_HANDLER:
 9465|      4|{
 9466|      4|	USE_OPLINE
 9467|      4|	zval *op1, *op2;
 9468|       |
 9469|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9470|      4|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9471|      4|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9472|      4|	pow_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9473|       |
 9474|       |
 9475|      4|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9476|      4|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9476:2): [True: 0, False: 0]
  |  Branch (9476:2): [True: 0, False: 0]
  ------------------
 9477|      4|}
zend_execute.c:ZEND_POW_SPEC_CV_CONST_HANDLER:
41153|      2|{
41154|      2|	USE_OPLINE
41155|      2|	zval *op1, *op2;
41156|       |
41157|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41158|      2|	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41159|      2|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41160|      2|	pow_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41161|       |
41162|       |
41163|       |
41164|       |
41165|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (41165:2): [True: 0, False: 0]
  |  Branch (41165:2): [True: 0, False: 0]
  ------------------
41166|      2|}
zend_execute.c:ZEND_POW_SPEC_CV_CV_HANDLER:
50097|      2|{
50098|      2|	USE_OPLINE
50099|      2|	zval *op1, *op2;
50100|       |
50101|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50102|      2|	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50103|      2|	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50104|      2|	pow_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50105|       |
50106|       |
50107|       |
50108|       |
50109|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50109:2): [True: 0, False: 0]
  |  Branch (50109:2): [True: 0, False: 0]
  ------------------
50110|      2|}
zend_execute.c:ZEND_BW_NOT_SPEC_CONST_HANDLER:
 4526|     18|{
 4527|     18|	USE_OPLINE
 4528|     18|	zval *op1;
 4529|       |
 4530|     18|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     18|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4531|     18|	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     18|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 18]
  |  |  ------------------
  ------------------
 4532|      0|		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4533|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4533:3): [True: 0, False: 0]
  |  Branch (4533:3): [True: 0, False: 0]
  ------------------
 4534|      0|	}
 4535|       |
 4536|     18|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_not_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1));
  ------------------
  |  |  410|     18|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     18|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 4537|     18|}
zend_execute.c:zend_bw_not_helper_SPEC:
  746|    329|{
  747|    329|	USE_OPLINE
  748|       |
  749|    329|	SAVE_OPLINE();
  ------------------
  |  |  428|    329|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    329|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  750|    329|	if (UNEXPECTED(Z_TYPE_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|    329|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 329]
  |  |  ------------------
  ------------------
  751|      0|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  752|      0|	}
  753|    329|	bitwise_not_function(EX_VAR(opline->result.var), op_1);
  ------------------
  |  |  755|    329|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    329|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  754|    329|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|    329|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|    329|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|    329|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 304, False: 25]
  |  |  ------------------
  |  |  178|    304|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|    304|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|    304|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|    304|	}
  ------------------
  755|    329|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    329|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    329|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    329|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 329, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    329|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    329|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    329|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    329|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    329|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    329|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (755:2): [True: 0, False: 0]
  |  Branch (755:2): [True: 0, False: 0]
  ------------------
  756|    329|}
zend_execute.c:ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER:
13517|    533|{
13518|    533|	USE_OPLINE
13519|    533|	zval *op1;
13520|       |
13521|    533|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    533|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    533|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13522|    533|	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    533|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 222, False: 311]
  |  |  ------------------
  ------------------
13523|    222|		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
  ------------------
  |  | 1076|    222|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    222|		zval *__z = (z);				\
  |  | 1078|    222|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    222|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    222|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    222|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    222|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    222|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    222|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    222|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 222]
  |  |  ------------------
  ------------------
13524|    222|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    222|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    222|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    222|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 222]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    222|	} else { \
  |  |  |  | 5761|    222|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    222|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    222|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    222|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    222|	} \
  |  |  |  | 5764|    222|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    222|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13524:3): [True: 0, False: 222]
  |  Branch (13524:3): [True: 222, False: 0]
  ------------------
13525|    222|	}
13526|       |
13527|    311|	ZEND_VM_DISPATCH_TO_HELPER(zend_bw_not_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1));
  ------------------
  |  |  410|    311|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    311|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13528|    533|}
zend_execute.c:ZEND_BOOL_NOT_SPEC_CONST_HANDLER:
 4540|      8|{
 4541|      8|	USE_OPLINE
 4542|      8|	zval *val;
 4543|       |
 4544|      8|	val = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4545|      8|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|      8|#define IS_TRUE						3
  ------------------
  |  Branch (4545:6): [True: 0, False: 8]
  ------------------
 4546|      0|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4547|      8|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 4548|       |		/* The result and op1 can be the same cv zval */
 4549|      0|		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 4550|      0|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4551|      0|		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4551:7): [Folded, False: 0]
  ------------------
 4552|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4553|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4554|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4554:4): [True: 0, False: 0]
  |  Branch (4554:4): [True: 0, False: 0]
  ------------------
 4555|      0|		}
 4556|      8|	} else {
 4557|      8|		SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4558|      8|		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
  ------------------
  |  | 1071|      8|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      8|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      8|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     16|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 8]
  |  |  ------------------
  |  | 1074|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 4559|       |
 4560|       |
 4561|      8|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4561:3): [True: 0, False: 0]
  |  Branch (4561:3): [True: 0, False: 0]
  ------------------
 4562|      8|	}
 4563|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      8|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4563:2): [True: 0, False: 0]
  |  Branch (4563:2): [True: 0, False: 0]
  ------------------
 4564|      0|}
zend_execute.c:ZEND_BOOL_NOT_SPEC_TMP_HANDLER:
16916|  5.55k|{
16917|  5.55k|	USE_OPLINE
16918|  5.55k|	zval *val;
16919|       |
16920|  5.55k|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  5.55k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  5.55k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16921|  5.55k|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|  5.55k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|  5.55k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|  5.55k|#define IS_TRUE						3
  ------------------
  |  Branch (16921:6): [True: 3.39k, False: 2.15k]
  ------------------
16922|  3.39k|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|  3.39k|#define ZVAL_FALSE(z) do {				\
  |  | 1064|  3.39k|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|  3.39k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.39k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|  3.39k|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|  3.39k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 3.39k]
  |  |  ------------------
  ------------------
16923|  3.39k|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|  2.15k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 909, False: 1.25k]
  |  |  ------------------
  ------------------
16924|       |		/* The result and op1 can be the same cv zval */
16925|    909|		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
  ------------------
  |  |  678|    909|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    909|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
16926|    909|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|    909|#define ZVAL_TRUE(z) do {				\
  |  | 1068|    909|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|    909|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    909|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|    909|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|    909|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 909]
  |  |  ------------------
  ------------------
16927|    909|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  865|    909|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  867|  1.81k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16927:7): [Folded, False: 909]
  ------------------
16928|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16929|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16930|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16930:4): [True: 0, False: 0]
  |  Branch (16930:4): [True: 0, False: 0]
  ------------------
16931|      0|		}
16932|  1.25k|	} else {
16933|  1.25k|		SAVE_OPLINE();
  ------------------
  |  |  428|  1.25k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.25k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16934|  1.25k|		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
  ------------------
  |  | 1071|  1.25k|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|  1.25k|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|  1.25k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.25k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|  1.25k|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|    198|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|  2.30k|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 198, False: 1.05k]
  |  |  ------------------
  |  | 1074|  1.25k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 1.25k]
  |  |  ------------------
  ------------------
16935|  1.25k|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|  1.25k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.25k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16936|  1.25k|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.25k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.25k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.25k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.25k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.25k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.25k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.25k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.25k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.25k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.25k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16936:3): [True: 0, False: 0]
  |  Branch (16936:3): [True: 0, False: 0]
  ------------------
16937|  1.25k|	}
16938|  4.30k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  5.55k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  4.30k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  4.30k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4.30k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  4.30k|	} else { \
  |  |  |  | 5761|  4.30k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  4.30k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  4.30k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  4.30k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  4.30k|	} \
  |  |  |  | 5764|  4.30k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  4.30k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16938:2): [True: 0, False: 4.30k]
  |  Branch (16938:2): [True: 4.30k, False: 0]
  ------------------
16939|  4.30k|}
zend_execute.c:ZEND_BOOL_NOT_SPEC_CV_HANDLER:
39343|    321|{
39344|    321|	USE_OPLINE
39345|    321|	zval *val;
39346|       |
39347|    321|	val = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    321|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    321|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39348|    321|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|    321|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    321|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|    321|#define IS_TRUE						3
  ------------------
  |  Branch (39348:6): [True: 248, False: 73]
  ------------------
39349|    248|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|    248|#define ZVAL_FALSE(z) do {				\
  |  | 1064|    248|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|    248|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    248|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|    248|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|    248|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 248]
  |  |  ------------------
  ------------------
39350|    248|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|     73|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 69, False: 4]
  |  |  ------------------
  ------------------
39351|       |		/* The result and op1 can be the same cv zval */
39352|     69|		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
  ------------------
  |  |  678|     69|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|     69|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
39353|     69|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|     69|#define ZVAL_TRUE(z) do {				\
  |  | 1068|     69|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|     69|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     69|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|     69|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|     69|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 69]
  |  |  ------------------
  ------------------
39354|     69|		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  867|     69|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  867|    138|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  457|     69|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 68, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (39354:7): [True: 69, Folded]
  ------------------
39355|     68|			SAVE_OPLINE();
  ------------------
  |  |  428|     68|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     68|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39356|     68|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|     68|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|     68|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39357|     68|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     68|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     68|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     68|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 68, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     68|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     68|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     68|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     68|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     68|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     68|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39357:4): [True: 0, False: 0]
  |  Branch (39357:4): [True: 0, False: 0]
  ------------------
39358|     68|		}
39359|     69|	} else {
39360|      4|		SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39361|      4|		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
  ------------------
  |  | 1071|      4|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      4|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      4|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      7|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 1, False: 3]
  |  |  ------------------
  |  | 1074|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
39362|       |
39363|       |
39364|      4|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39364:3): [True: 0, False: 0]
  |  Branch (39364:3): [True: 0, False: 0]
  ------------------
39365|      4|	}
39366|    249|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    321|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    249|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    249|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 249]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    249|	} else { \
  |  |  |  | 5761|    249|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    249|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    249|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    249|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    249|	} \
  |  |  |  | 5764|    249|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    249|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39366:2): [True: 0, False: 249]
  |  Branch (39366:2): [True: 249, False: 0]
  ------------------
39367|    249|}
zend_execute.c:ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER:
 6502|      7|{
 6503|      7|	USE_OPLINE
 6504|      7|	zval *op1, *op2;
 6505|      7|	bool result;
 6506|       |
 6507|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6508|      7|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      7|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6509|      7|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      7|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6510|      7|	result = fast_is_identical_function(op1, op2);
 6511|       |
 6512|       |
 6513|       |
 6514|       |
 6515|      7|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      7|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      7|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 7, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      7|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      7|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      7|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 5, False: 2]
  |  |  ------------------
  |  | 5819|      5|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      5|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      5|			} else { \
  |  | 5821|      2|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      2|			} \
  |  | 5823|      7|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      7|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6516|      7|}
zend_execute.c:ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER:
18404|      3|{
18405|      3|	USE_OPLINE
18406|      3|	zval *op1, *op2;
18407|      3|	bool result;
18408|       |
18409|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18410|      3|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18411|      3|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18412|      3|	result = fast_is_identical_function(op1, op2);
18413|      3|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18414|       |
18415|       |
18416|      3|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      3|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      3|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      1|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 1, False: 0]
  |  |  ------------------
  |  | 5813|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      1|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      2|		} else { \
  |  | 5824|      2|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      2|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      2|		} \
  |  | 5827|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18417|      3|}
zend_execute.c:ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER:
19991|      4|{
19992|      4|	USE_OPLINE
19993|      4|	zval *op1, *op2;
19994|      4|	bool result;
19995|       |
19996|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19997|      4|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19998|      4|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19999|      4|	result = fast_is_identical_function(op1, op2);
20000|      4|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20001|      4|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20002|      4|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      4|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      4|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 4, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      4|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      4|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      1|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 1, False: 0]
  |  |  ------------------
  |  | 5819|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      1|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      3|		} else { \
  |  | 5824|      3|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      3|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      3|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      3|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      3|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      3|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      3|		} \
  |  | 5827|      4|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20003|      4|}
zend_execute.c:ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER:
41248|    294|{
41249|    294|	USE_OPLINE
41250|    294|	zval *op1, *op2;
41251|    294|	bool result;
41252|       |
41253|    294|	SAVE_OPLINE();
  ------------------
  |  |  428|    294|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    294|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41254|    294|	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    294|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    294|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41255|    294|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    294|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41256|    294|	result = fast_is_identical_function(op1, op2);
41257|       |
41258|       |
41259|       |
41260|       |
41261|    294|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|    294|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|    294|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|    294|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 291]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 294, Folded]
  |  |  ------------------
  |  | 5810|      3|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      3|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|    291|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|    291|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 127, False: 164]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|    127|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 4, False: 123]
  |  |  ------------------
  |  | 5813|      4|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      4|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|    123|			} else { \
  |  | 5815|    123|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    123|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    123|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    123|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    123|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    123|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    123|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    123|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    123|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 123]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    123|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 123]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|    123|			} \
  |  | 5817|    164|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|    164|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 6, False: 158]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      6|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 2, False: 4]
  |  |  ------------------
  |  | 5819|      2|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      4|			} else { \
  |  | 5821|      4|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      4|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      4|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      4|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      4|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      4|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      4|			} \
  |  | 5823|    158|		} else { \
  |  | 5824|    158|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|    158|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|    158|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    158|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    158|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|    158|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    313|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 3, False: 155]
  |  |  |  |  ------------------
  |  |  |  | 1074|    158|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 158]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|    158|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|    158|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|    158|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    158|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|    158|		} \
  |  | 5827|    294|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    294|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|    294|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41262|    294|}
zend_execute.c:ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER:
45091|      3|{
45092|      3|	USE_OPLINE
45093|      3|	zval *op1, *op2;
45094|      3|	bool result;
45095|       |
45096|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45097|      3|	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45098|      3|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45099|      3|	result = fast_is_identical_function(op1, op2);
45100|       |
45101|       |
45102|      3|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45103|      3|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      3|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      3|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      3|		} else { \
  |  | 5824|      3|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      3|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      3|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      3|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      3|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      3|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      3|		} \
  |  | 5827|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45104|      3|}
zend_execute.c:ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER:
50192|      9|{
50193|      9|	USE_OPLINE
50194|      9|	zval *op1, *op2;
50195|      9|	bool result;
50196|       |
50197|      9|	SAVE_OPLINE();
  ------------------
  |  |  428|      9|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50198|      9|	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50199|      9|	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50200|      9|	result = fast_is_identical_function(op1, op2);
50201|       |
50202|       |
50203|       |
50204|       |
50205|      9|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      9|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      9|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 9, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      9|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      2|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 1, False: 1]
  |  |  ------------------
  |  | 5813|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      1|			} else { \
  |  | 5815|      1|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      1|			} \
  |  | 5817|      7|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      7|		} else { \
  |  | 5824|      7|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      7|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      7|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      7|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      6|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      8|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 6, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      7|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      7|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      7|		} \
  |  | 5827|      9|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50206|      9|}
zend_execute.c:ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER:
50209|      1|{
50210|      1|	USE_OPLINE
50211|      1|	zval *op1, *op2;
50212|      1|	bool result;
50213|       |
50214|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50215|      1|	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50216|      1|	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50217|      1|	result = fast_is_not_identical_function(op1, op2);
50218|       |
50219|       |
50220|       |
50221|       |
50222|      1|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      1|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      1|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50223|      1|}
zend_execute.c:zend_is_equal_helper_SPEC:
  595|    756|{
  596|    756|	int ret;
  597|    756|	USE_OPLINE
  598|       |
  599|    756|	SAVE_OPLINE();
  ------------------
  |  |  428|    756|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    756|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  600|    756|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|    756|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 461, False: 295]
  |  |  ------------------
  ------------------
  601|    461|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    461|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    461|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  602|    461|	}
  603|    756|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|    756|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 204, False: 552]
  |  |  ------------------
  ------------------
  604|    204|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    204|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    204|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  605|    204|	}
  606|    756|	ret = zend_compare(op_1, op_2);
  607|    756|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    756|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    756|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (607:6): [True: 119, False: 637]
  ------------------
  608|    119|		zval_ptr_dtor_nogc(op_1);
  609|    119|	}
  610|    756|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    756|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    756|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (610:6): [True: 115, False: 641]
  ------------------
  611|    115|		zval_ptr_dtor_nogc(op_2);
  612|    115|	}
  613|    756|	ZEND_VM_SMART_BRANCH(ret == 0, 1);
  ------------------
  |  | 5808|    756|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|    756|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|    756|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 756]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 756, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|    756|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|    756|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 168, False: 588]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|    168|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 9, False: 159]
  |  |  ------------------
  |  | 5813|      9|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      9|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|    159|			} else { \
  |  | 5815|    159|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    159|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    159|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    159|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    159|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    159|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    159|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    159|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    159|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 159]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    159|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 159]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|    159|			} \
  |  | 5817|    588|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|    588|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 370, False: 218]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|    370|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 3, False: 367]
  |  |  ------------------
  |  | 5819|      3|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      3|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|    367|			} else { \
  |  | 5821|    367|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    367|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    367|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    367|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    367|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    367|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    367|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    367|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    367|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 367]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    367|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 367]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|    367|			} \
  |  | 5823|    370|		} else { \
  |  | 5824|    218|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|    218|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|    218|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    218|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    218|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|    218|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    205|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    231|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 205, False: 13]
  |  |  |  |  ------------------
  |  |  |  | 1074|    218|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 218]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|    218|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|    218|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|    218|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    218|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|    218|		} \
  |  | 5827|    756|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    756|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|    756|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  614|    756|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_TMP_CONST_HANDLER:
18451|     12|{
18452|     12|	USE_OPLINE
18453|     12|	zval *op1, *op2;
18454|     12|	double d1, d2;
18455|       |
18456|     12|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18457|     12|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     12|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18458|     12|	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18458:6): [True: 0, Folded]
  |  Branch (18458:11): [Folded, False: 0]
  |  Branch (18458:37): [True: 0, Folded]
  ------------------
18459|       |		/* pass */
18460|     12|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 6]
  |  |  ------------------
  ------------------
18461|      6|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 3]
  |  |  ------------------
  ------------------
18462|      3|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
18463|      5|is_equal_true:
18464|      5|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      5|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      5|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      5|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      5|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      5|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      5|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      5|	} else { \
  |  |  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      5|	} \
  |  |  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18464:5): [True: 0, False: 5]
  |  Branch (18464:5): [True: 5, False: 0]
  ------------------
18465|      5|			} else {
18466|      3|is_equal_false:
18467|      3|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      3|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      3|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      3|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      3|	} else { \
  |  |  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      3|	} \
  |  |  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18467:5): [True: 0, False: 3]
  |  Branch (18467:5): [True: 3, False: 0]
  ------------------
18468|      3|			}
18469|      3|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
18470|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18471|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18472|      0|			goto is_equal_double;
18473|      0|		}
18474|      6|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
18475|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18476|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18477|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18478|      0|is_equal_double:
18479|      0|			if (d1 == d2) {
  ------------------
  |  Branch (18479:8): [True: 0, False: 0]
  ------------------
18480|      0|				goto is_equal_true;
18481|      0|			} else {
18482|      0|				goto is_equal_false;
18483|      0|			}
18484|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18485|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18486|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18487|      0|			goto is_equal_double;
18488|      0|		}
18489|      6|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
18490|      6|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
18491|      5|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18492|      5|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18492:8): [True: 5, Folded]
  ------------------
18493|      5|				zval_ptr_dtor_str(op1);
18494|      5|			}
18495|      5|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18495:8): [Folded, False: 5]
  ------------------
18496|      0|				zval_ptr_dtor_str(op2);
18497|      0|			}
18498|      5|			if (result) {
  ------------------
  |  Branch (18498:8): [True: 3, False: 2]
  ------------------
18499|      3|				goto is_equal_true;
18500|      3|			} else {
18501|      2|				goto is_equal_false;
18502|      2|			}
18503|      5|		}
18504|      6|	}
18505|      4|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      4|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      4|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
18506|     12|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_TMP_CONST_JMPZ_HANDLER:
18509|     74|{
18510|     74|	USE_OPLINE
18511|     74|	zval *op1, *op2;
18512|     74|	double d1, d2;
18513|       |
18514|     74|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     74|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     74|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18515|     74|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     74|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18516|     74|	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     74|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18516:6): [True: 0, Folded]
  |  Branch (18516:11): [Folded, False: 0]
  |  Branch (18516:37): [True: 0, Folded]
  ------------------
18517|       |		/* pass */
18518|     74|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     74|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 74, False: 0]
  |  |  ------------------
  ------------------
18519|     74|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     74|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 74, False: 0]
  |  |  ------------------
  ------------------
18520|     74|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|     74|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 66]
  |  |  ------------------
  ------------------
18521|      8|is_equal_true:
18522|      8|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      8|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      8|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      8|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      8|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18523|     66|			} else {
18524|     66|is_equal_false:
18525|     66|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|     66|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|     66|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|     66|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     66|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     66|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     66|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     66|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     66|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     66|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 66]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     66|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 66]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|     66|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     66|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|     66|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18526|     66|			}
18527|     74|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18528|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18529|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18530|      0|			goto is_equal_double;
18531|      0|		}
18532|     74|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18533|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18534|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18535|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18536|      0|is_equal_double:
18537|      0|			if (d1 == d2) {
  ------------------
  |  Branch (18537:8): [True: 0, False: 0]
  ------------------
18538|      0|				goto is_equal_true;
18539|      0|			} else {
18540|      0|				goto is_equal_false;
18541|      0|			}
18542|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18543|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18544|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18545|      0|			goto is_equal_double;
18546|      0|		}
18547|      0|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18548|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18549|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18550|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18550:8): [True: 0, Folded]
  ------------------
18551|      0|				zval_ptr_dtor_str(op1);
18552|      0|			}
18553|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18553:8): [Folded, False: 0]
  ------------------
18554|      0|				zval_ptr_dtor_str(op2);
18555|      0|			}
18556|      0|			if (result) {
  ------------------
  |  Branch (18556:8): [True: 0, False: 0]
  ------------------
18557|      0|				goto is_equal_true;
18558|      0|			} else {
18559|      0|				goto is_equal_false;
18560|      0|			}
18561|      0|		}
18562|      0|	}
18563|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
18564|     74|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_TMP_CONST_JMPNZ_HANDLER:
18567|      2|{
18568|      2|	USE_OPLINE
18569|      2|	zval *op1, *op2;
18570|      2|	double d1, d2;
18571|       |
18572|      2|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18573|      2|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18574|      2|	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18574:6): [True: 0, Folded]
  |  Branch (18574:11): [Folded, False: 0]
  |  Branch (18574:37): [True: 0, Folded]
  ------------------
18575|       |		/* pass */
18576|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
18577|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18578|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18579|      0|is_equal_true:
18580|      0|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      0|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18581|      0|			} else {
18582|      0|is_equal_false:
18583|      0|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      0|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      0|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18584|      0|			}
18585|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18586|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18587|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18588|      0|			goto is_equal_double;
18589|      0|		}
18590|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
18591|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18592|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18593|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18594|      0|is_equal_double:
18595|      0|			if (d1 == d2) {
  ------------------
  |  Branch (18595:8): [True: 0, False: 0]
  ------------------
18596|      0|				goto is_equal_true;
18597|      0|			} else {
18598|      0|				goto is_equal_false;
18599|      0|			}
18600|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18601|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18602|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18603|      0|			goto is_equal_double;
18604|      0|		}
18605|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
18606|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18607|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18608|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18608:8): [True: 0, Folded]
  ------------------
18609|      0|				zval_ptr_dtor_str(op1);
18610|      0|			}
18611|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18611:8): [Folded, False: 0]
  ------------------
18612|      0|				zval_ptr_dtor_str(op2);
18613|      0|			}
18614|      0|			if (result) {
  ------------------
  |  Branch (18614:8): [True: 0, False: 0]
  ------------------
18615|      0|				goto is_equal_true;
18616|      0|			} else {
18617|      0|				goto is_equal_false;
18618|      0|			}
18619|      0|		}
18620|      0|	}
18621|      2|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      2|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
18622|      2|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_TMP_TMP_HANDLER:
20035|      4|{
20036|      4|	USE_OPLINE
20037|      4|	zval *op1, *op2;
20038|      4|	double d1, d2;
20039|       |
20040|      4|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20041|      4|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20042|      4|	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20042:6): [True: 0, Folded]
  |  Branch (20042:11): [Folded, False: 0]
  |  Branch (20042:37): [Folded, False: 0]
  ------------------
20043|       |		/* pass */
20044|      4|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
20045|      2|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
20046|      2|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
20047|      2|is_equal_true:
20048|      2|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      2|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      2|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      2|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      2|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      2|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      2|	} else { \
  |  |  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      2|	} \
  |  |  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20048:5): [True: 0, False: 2]
  |  Branch (20048:5): [True: 2, False: 0]
  ------------------
20049|      2|			} else {
20050|      1|is_equal_false:
20051|      1|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      1|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      1|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      1|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      1|	} else { \
  |  |  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      1|	} \
  |  |  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20051:5): [True: 0, False: 1]
  |  Branch (20051:5): [True: 1, False: 0]
  ------------------
20052|      1|			}
20053|      2|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20054|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20055|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20056|      0|			goto is_equal_double;
20057|      0|		}
20058|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
20059|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20060|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20061|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20062|      0|is_equal_double:
20063|      0|			if (d1 == d2) {
  ------------------
  |  Branch (20063:8): [True: 0, False: 0]
  ------------------
20064|      0|				goto is_equal_true;
20065|      0|			} else {
20066|      0|				goto is_equal_false;
20067|      0|			}
20068|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20069|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20070|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20071|      0|			goto is_equal_double;
20072|      0|		}
20073|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
20074|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20075|      1|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20076|      1|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20076:8): [True: 1, Folded]
  ------------------
20077|      1|				zval_ptr_dtor_str(op1);
20078|      1|			}
20079|      1|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20079:8): [True: 1, Folded]
  ------------------
20080|      1|				zval_ptr_dtor_str(op2);
20081|      1|			}
20082|      1|			if (result) {
  ------------------
  |  Branch (20082:8): [True: 1, False: 0]
  ------------------
20083|      1|				goto is_equal_true;
20084|      1|			} else {
20085|      0|				goto is_equal_false;
20086|      0|			}
20087|      1|		}
20088|      1|	}
20089|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
20090|      4|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_TMP_TMP_JMPZ_HANDLER:
20093|      1|{
20094|      1|	USE_OPLINE
20095|      1|	zval *op1, *op2;
20096|      1|	double d1, d2;
20097|       |
20098|      1|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20099|      1|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20100|      1|	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20100:6): [True: 0, Folded]
  |  Branch (20100:11): [Folded, False: 0]
  |  Branch (20100:37): [Folded, False: 0]
  ------------------
20101|       |		/* pass */
20102|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
20103|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20104|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20105|      0|is_equal_true:
20106|      0|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      0|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      0|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20107|      0|			} else {
20108|      1|is_equal_false:
20109|      1|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|      1|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|      1|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20110|      1|			}
20111|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20112|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20113|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20114|      0|			goto is_equal_double;
20115|      0|		}
20116|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20117|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
20118|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20119|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20120|      1|is_equal_double:
20121|      1|			if (d1 == d2) {
  ------------------
  |  Branch (20121:8): [True: 0, False: 1]
  ------------------
20122|      0|				goto is_equal_true;
20123|      1|			} else {
20124|      1|				goto is_equal_false;
20125|      1|			}
20126|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20127|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20128|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20129|      1|			goto is_equal_double;
20130|      1|		}
20131|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20132|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20133|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20134|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20134:8): [True: 0, Folded]
  ------------------
20135|      0|				zval_ptr_dtor_str(op1);
20136|      0|			}
20137|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20137:8): [True: 0, Folded]
  ------------------
20138|      0|				zval_ptr_dtor_str(op2);
20139|      0|			}
20140|      0|			if (result) {
  ------------------
  |  Branch (20140:8): [True: 0, False: 0]
  ------------------
20141|      0|				goto is_equal_true;
20142|      0|			} else {
20143|      0|				goto is_equal_false;
20144|      0|			}
20145|      0|		}
20146|      0|	}
20147|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
20148|      1|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_TMP_TMP_JMPNZ_HANDLER:
20151|    224|{
20152|    224|	USE_OPLINE
20153|    224|	zval *op1, *op2;
20154|    224|	double d1, d2;
20155|       |
20156|    224|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    224|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    224|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20157|    224|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    224|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    224|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20158|    224|	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    224|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20158:6): [True: 0, Folded]
  |  Branch (20158:11): [Folded, False: 0]
  |  Branch (20158:37): [Folded, False: 0]
  ------------------
20159|       |		/* pass */
20160|    224|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    224|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 224, False: 0]
  |  |  ------------------
  ------------------
20161|    224|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    224|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 224]
  |  |  ------------------
  ------------------
20162|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20163|    111|is_equal_true:
20164|    111|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|    111|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|    111|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    111|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    111|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    111|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    111|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    111|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    111|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    111|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    111|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 111]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    111|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 111]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|    111|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    111|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|    111|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20165|    111|			} else {
20166|      1|is_equal_false:
20167|      1|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      1|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20168|      1|			}
20169|    224|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    224|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 112, False: 112]
  |  |  ------------------
  ------------------
20170|    112|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|    112|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    112|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20171|    112|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|    112|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    112|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20172|    112|			goto is_equal_double;
20173|    112|		}
20174|    224|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20175|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20176|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20177|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20178|    112|is_equal_double:
20179|    112|			if (d1 == d2) {
  ------------------
  |  Branch (20179:8): [True: 111, False: 1]
  ------------------
20180|    111|				goto is_equal_true;
20181|    111|			} else {
20182|      1|				goto is_equal_false;
20183|      1|			}
20184|    112|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20185|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20186|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20187|      0|			goto is_equal_double;
20188|      0|		}
20189|      0|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20190|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20191|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20192|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20192:8): [True: 0, Folded]
  ------------------
20193|      0|				zval_ptr_dtor_str(op1);
20194|      0|			}
20195|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20195:8): [True: 0, Folded]
  ------------------
20196|      0|				zval_ptr_dtor_str(op2);
20197|      0|			}
20198|      0|			if (result) {
  ------------------
  |  Branch (20198:8): [True: 0, False: 0]
  ------------------
20199|      0|				goto is_equal_true;
20200|      0|			} else {
20201|      0|				goto is_equal_false;
20202|      0|			}
20203|      0|		}
20204|      0|	}
20205|    112|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    112|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    112|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
20206|    224|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER:
41282|      5|{
41283|      5|	USE_OPLINE
41284|      5|	zval *op1, *op2;
41285|      5|	double d1, d2;
41286|       |
41287|      5|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41288|      5|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41289|      5|	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41289:6): [True: 0, Folded]
  |  Branch (41289:11): [Folded, False: 0]
  |  Branch (41289:32): [True: 0, Folded]
  ------------------
41290|       |		/* pass */
41291|      5|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
41292|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41293|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41294|      0|is_equal_true:
41295|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41295:5): [True: 0, False: 0]
  |  Branch (41295:5): [True: 0, False: 0]
  ------------------
41296|      0|			} else {
41297|      0|is_equal_false:
41298|      0|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      0|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      0|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41298:5): [True: 0, False: 0]
  |  Branch (41298:5): [True: 0, False: 0]
  ------------------
41299|      0|			}
41300|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41301|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41302|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41303|      0|			goto is_equal_double;
41304|      0|		}
41305|      5|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
41306|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41307|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41308|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41309|      0|is_equal_double:
41310|      0|			if (d1 == d2) {
  ------------------
  |  Branch (41310:8): [True: 0, False: 0]
  ------------------
41311|      0|				goto is_equal_true;
41312|      0|			} else {
41313|      0|				goto is_equal_false;
41314|      0|			}
41315|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41316|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41317|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41318|      0|			goto is_equal_double;
41319|      0|		}
41320|      5|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
41321|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41322|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41323|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41323:8): [Folded, False: 0]
  ------------------
41324|      0|				zval_ptr_dtor_str(op1);
41325|      0|			}
41326|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41326:8): [Folded, False: 0]
  ------------------
41327|      0|				zval_ptr_dtor_str(op2);
41328|      0|			}
41329|      0|			if (result) {
  ------------------
  |  Branch (41329:8): [True: 0, False: 0]
  ------------------
41330|      0|				goto is_equal_true;
41331|      0|			} else {
41332|      0|				goto is_equal_false;
41333|      0|			}
41334|      0|		}
41335|      0|	}
41336|      5|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      5|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
41337|      5|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_CV_CONST_JMPZ_HANDLER:
41340|    174|{
41341|    174|	USE_OPLINE
41342|    174|	zval *op1, *op2;
41343|    174|	double d1, d2;
41344|       |
41345|    174|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    174|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    174|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41346|    174|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    174|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41347|    174|	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    174|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41347:6): [True: 0, Folded]
  |  Branch (41347:11): [Folded, False: 0]
  |  Branch (41347:32): [True: 0, Folded]
  ------------------
41348|       |		/* pass */
41349|    174|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    174|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 168]
  |  |  ------------------
  ------------------
41350|      6|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
41351|      6|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
41352|      2|is_equal_true:
41353|      2|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      2|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      2|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41354|      4|			} else {
41355|      4|is_equal_false:
41356|      4|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|      4|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|      4|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      4|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      4|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      4|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      4|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      4|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|      4|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41357|      4|			}
41358|      6|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41359|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41360|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41361|      0|			goto is_equal_double;
41362|      0|		}
41363|    168|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    168|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 168]
  |  |  ------------------
  ------------------
41364|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41365|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41366|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41367|      0|is_equal_double:
41368|      0|			if (d1 == d2) {
  ------------------
  |  Branch (41368:8): [True: 0, False: 0]
  ------------------
41369|      0|				goto is_equal_true;
41370|      0|			} else {
41371|      0|				goto is_equal_false;
41372|      0|			}
41373|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41374|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41375|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41376|      0|			goto is_equal_double;
41377|      0|		}
41378|    168|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    168|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 168]
  |  |  ------------------
  ------------------
41379|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41380|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41381|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41381:8): [Folded, False: 0]
  ------------------
41382|      0|				zval_ptr_dtor_str(op1);
41383|      0|			}
41384|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41384:8): [Folded, False: 0]
  ------------------
41385|      0|				zval_ptr_dtor_str(op2);
41386|      0|			}
41387|      0|			if (result) {
  ------------------
  |  Branch (41387:8): [True: 0, False: 0]
  ------------------
41388|      0|				goto is_equal_true;
41389|      0|			} else {
41390|      0|				goto is_equal_false;
41391|      0|			}
41392|      0|		}
41393|      0|	}
41394|    168|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    168|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    168|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
41395|    174|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_CV_CONST_JMPNZ_HANDLER:
41398|    260|{
41399|    260|	USE_OPLINE
41400|    260|	zval *op1, *op2;
41401|    260|	double d1, d2;
41402|       |
41403|    260|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    260|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    260|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41404|    260|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    260|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41405|    260|	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    260|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41405:6): [True: 0, Folded]
  |  Branch (41405:11): [Folded, False: 0]
  |  Branch (41405:32): [True: 0, Folded]
  ------------------
41406|       |		/* pass */
41407|    260|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    260|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 257]
  |  |  ------------------
  ------------------
41408|      3|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
41409|      3|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
41410|      2|is_equal_true:
41411|      2|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      2|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      2|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41412|      2|			} else {
41413|      2|is_equal_false:
41414|      2|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      2|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      2|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41415|      2|			}
41416|      3|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41417|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41418|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41419|      0|			goto is_equal_double;
41420|      0|		}
41421|    257|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    257|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 256]
  |  |  ------------------
  ------------------
41422|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
41423|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41424|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41425|      0|is_equal_double:
41426|      0|			if (d1 == d2) {
  ------------------
  |  Branch (41426:8): [True: 0, False: 0]
  ------------------
41427|      0|				goto is_equal_true;
41428|      0|			} else {
41429|      0|				goto is_equal_false;
41430|      0|			}
41431|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
41432|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41433|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41434|      0|			goto is_equal_double;
41435|      0|		}
41436|    256|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    256|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 250]
  |  |  ------------------
  ------------------
41437|      6|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
41438|      1|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41439|      1|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41439:8): [Folded, False: 1]
  ------------------
41440|      0|				zval_ptr_dtor_str(op1);
41441|      0|			}
41442|      1|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41442:8): [Folded, False: 1]
  ------------------
41443|      0|				zval_ptr_dtor_str(op2);
41444|      0|			}
41445|      1|			if (result) {
  ------------------
  |  Branch (41445:8): [True: 0, False: 1]
  ------------------
41446|      0|				goto is_equal_true;
41447|      1|			} else {
41448|      1|				goto is_equal_false;
41449|      1|			}
41450|      1|		}
41451|      6|	}
41452|    256|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    256|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    256|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
41453|    260|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_CV_TMP_HANDLER:
45123|      2|{
45124|      2|	USE_OPLINE
45125|      2|	zval *op1, *op2;
45126|      2|	double d1, d2;
45127|       |
45128|      2|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45129|      2|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45130|      2|	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (45130:6): [True: 0, Folded]
  |  Branch (45130:11): [Folded, False: 0]
  |  Branch (45130:32): [Folded, False: 0]
  ------------------
45131|       |		/* pass */
45132|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
45133|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45134|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45135|      0|is_equal_true:
45136|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45136:5): [True: 0, False: 0]
  |  Branch (45136:5): [True: 0, False: 0]
  ------------------
45137|      0|			} else {
45138|      0|is_equal_false:
45139|      0|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      0|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      0|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45139:5): [True: 0, False: 0]
  |  Branch (45139:5): [True: 0, False: 0]
  ------------------
45140|      0|			}
45141|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45142|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
45143|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45144|      0|			goto is_equal_double;
45145|      0|		}
45146|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
45147|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45148|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45149|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45150|      0|is_equal_double:
45151|      0|			if (d1 == d2) {
  ------------------
  |  Branch (45151:8): [True: 0, False: 0]
  ------------------
45152|      0|				goto is_equal_true;
45153|      0|			} else {
45154|      0|				goto is_equal_false;
45155|      0|			}
45156|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45157|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45158|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
45159|      0|			goto is_equal_double;
45160|      0|		}
45161|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
45162|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45163|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
45164|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45164:8): [Folded, False: 0]
  ------------------
45165|      0|				zval_ptr_dtor_str(op1);
45166|      0|			}
45167|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45167:8): [True: 0, Folded]
  ------------------
45168|      0|				zval_ptr_dtor_str(op2);
45169|      0|			}
45170|      0|			if (result) {
  ------------------
  |  Branch (45170:8): [True: 0, False: 0]
  ------------------
45171|      0|				goto is_equal_true;
45172|      0|			} else {
45173|      0|				goto is_equal_false;
45174|      0|			}
45175|      0|		}
45176|      0|	}
45177|      2|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      2|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
45178|      2|}
zend_execute.c:ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER:
50226|    206|{
50227|    206|	USE_OPLINE
50228|    206|	zval *op1, *op2;
50229|    206|	double d1, d2;
50230|       |
50231|    206|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    206|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    206|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50232|    206|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    206|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    206|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50233|    206|	if (1 && IS_CV == IS_CONST && IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CV == IS_CONST) {
  ------------------
  |  |  864|    206|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (50233:6): [True: 0, Folded]
  |  Branch (50233:11): [Folded, False: 0]
  |  Branch (50233:32): [Folded, False: 0]
  ------------------
50234|       |		/* pass */
50235|    206|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    206|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 206]
  |  |  ------------------
  ------------------
50236|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50237|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50238|      0|is_equal_true:
50239|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (50239:5): [True: 0, False: 0]
  |  Branch (50239:5): [True: 0, False: 0]
  ------------------
50240|      0|			} else {
50241|      0|is_equal_false:
50242|      0|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      0|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      0|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (50242:5): [True: 0, False: 0]
  |  Branch (50242:5): [True: 0, False: 0]
  ------------------
50243|      0|			}
50244|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50245|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
50246|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
50247|      0|			goto is_equal_double;
50248|      0|		}
50249|    206|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    206|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 206]
  |  |  ------------------
  ------------------
50250|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50251|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
50252|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
50253|      0|is_equal_double:
50254|      0|			if (d1 == d2) {
  ------------------
  |  Branch (50254:8): [True: 0, False: 0]
  ------------------
50255|      0|				goto is_equal_true;
50256|      0|			} else {
50257|      0|				goto is_equal_false;
50258|      0|			}
50259|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50260|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
50261|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
50262|      0|			goto is_equal_double;
50263|      0|		}
50264|    206|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    206|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 206]
  |  |  ------------------
  ------------------
50265|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50266|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
50267|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50267:8): [Folded, False: 0]
  ------------------
50268|      0|				zval_ptr_dtor_str(op1);
50269|      0|			}
50270|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (50270:8): [Folded, False: 0]
  ------------------
50271|      0|				zval_ptr_dtor_str(op2);
50272|      0|			}
50273|      0|			if (result) {
  ------------------
  |  Branch (50273:8): [True: 0, False: 0]
  ------------------
50274|      0|				goto is_equal_true;
50275|      0|			} else {
50276|      0|				goto is_equal_false;
50277|      0|			}
50278|      0|		}
50279|      0|	}
50280|    206|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    206|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    206|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
50281|    206|}
zend_execute.c:zend_is_not_equal_helper_SPEC:
  617|  1.75k|{
  618|  1.75k|	int ret;
  619|  1.75k|	USE_OPLINE
  620|       |
  621|  1.75k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.75k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.75k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  622|  1.75k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.75k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.20k, False: 549]
  |  |  ------------------
  ------------------
  623|  1.20k|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|  1.20k|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|  1.20k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  624|  1.20k|	}
  625|  1.75k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.75k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.75k]
  |  |  ------------------
  ------------------
  626|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  627|      0|	}
  628|  1.75k|	ret = zend_compare(op_1, op_2);
  629|  1.75k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.75k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.75k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (629:6): [True: 2, False: 1.75k]
  ------------------
  630|      2|		zval_ptr_dtor_nogc(op_1);
  631|      2|	}
  632|  1.75k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.75k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.75k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (632:6): [True: 417, False: 1.34k]
  ------------------
  633|    417|		zval_ptr_dtor_nogc(op_2);
  634|    417|	}
  635|  1.75k|	ZEND_VM_SMART_BRANCH(ret != 0, 1);
  ------------------
  |  | 5808|  1.75k|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|  1.75k|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|  1.75k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.75k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1.75k, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|  1.75k|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|  1.75k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1.75k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|  1.75k|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|  1.75k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1.29k, False: 460]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|  1.29k|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 2, False: 1.29k]
  |  |  ------------------
  |  | 5819|      2|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|  1.29k|			} else { \
  |  | 5821|  1.29k|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|  1.29k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|  1.29k|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|  1.29k|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|  1.29k|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|  1.29k|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|  1.29k|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|  1.29k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.29k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.29k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|  1.29k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1.29k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|  1.29k|			} \
  |  | 5823|  1.29k|		} else { \
  |  | 5824|    460|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|    460|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|    460|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    460|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    460|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|    460|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    334|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    586|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 334, False: 126]
  |  |  |  |  ------------------
  |  |  |  | 1074|    460|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 460]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|    460|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|    460|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|    460|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    460|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|    460|		} \
  |  | 5827|  1.75k|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|  1.75k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|  1.75k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  636|  1.75k|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_HANDLER:
18625|      3|{
18626|      3|	USE_OPLINE
18627|      3|	zval *op1, *op2;
18628|      3|	double d1, d2;
18629|       |
18630|      3|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18631|      3|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18632|      3|	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18632:6): [True: 0, Folded]
  |  Branch (18632:11): [Folded, False: 0]
  |  Branch (18632:37): [True: 0, Folded]
  ------------------
18633|       |		/* pass */
18634|      3|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
18635|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
18636|      1|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
18637|      2|is_not_equal_true:
18638|      2|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      2|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      2|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      2|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      2|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      2|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      2|	} else { \
  |  |  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      2|	} \
  |  |  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18638:5): [True: 0, False: 2]
  |  Branch (18638:5): [True: 2, False: 0]
  ------------------
18639|      2|			} else {
18640|      0|is_not_equal_false:
18641|      0|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      0|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      0|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18641:5): [True: 0, False: 0]
  |  Branch (18641:5): [True: 0, False: 0]
  ------------------
18642|      0|			}
18643|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18644|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18645|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18646|      0|			goto is_not_equal_double;
18647|      0|		}
18648|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
18649|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18650|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18651|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18652|      1|is_not_equal_double:
18653|      1|			if (d1 != d2) {
  ------------------
  |  Branch (18653:8): [True: 1, False: 0]
  ------------------
18654|      1|				goto is_not_equal_true;
18655|      1|			} else {
18656|      0|				goto is_not_equal_false;
18657|      0|			}
18658|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
18659|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18660|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18661|      1|			goto is_not_equal_double;
18662|      1|		}
18663|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18664|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18665|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18666|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18666:8): [True: 0, Folded]
  ------------------
18667|      0|				zval_ptr_dtor_str(op1);
18668|      0|			}
18669|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18669:8): [Folded, False: 0]
  ------------------
18670|      0|				zval_ptr_dtor_str(op2);
18671|      0|			}
18672|      0|			if (!result) {
  ------------------
  |  Branch (18672:8): [True: 0, False: 0]
  ------------------
18673|      0|				goto is_not_equal_true;
18674|      0|			} else {
18675|      0|				goto is_not_equal_false;
18676|      0|			}
18677|      0|		}
18678|      0|	}
18679|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
18680|      3|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_JMPZ_HANDLER:
18683|      2|{
18684|      2|	USE_OPLINE
18685|      2|	zval *op1, *op2;
18686|      2|	double d1, d2;
18687|       |
18688|      2|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18689|      2|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18690|      2|	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18690:6): [True: 0, Folded]
  |  Branch (18690:11): [Folded, False: 0]
  |  Branch (18690:37): [True: 0, Folded]
  ------------------
18691|       |		/* pass */
18692|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
18693|      2|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
18694|      2|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
18695|      1|is_not_equal_true:
18696|      1|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      1|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18697|      1|			} else {
18698|      1|is_not_equal_false:
18699|      1|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|      1|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|      1|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18700|      1|			}
18701|      2|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18702|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18703|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18704|      0|			goto is_not_equal_double;
18705|      0|		}
18706|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18707|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18708|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18709|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18710|      0|is_not_equal_double:
18711|      0|			if (d1 != d2) {
  ------------------
  |  Branch (18711:8): [True: 0, False: 0]
  ------------------
18712|      0|				goto is_not_equal_true;
18713|      0|			} else {
18714|      0|				goto is_not_equal_false;
18715|      0|			}
18716|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18717|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
18718|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
18719|      0|			goto is_not_equal_double;
18720|      0|		}
18721|      0|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18722|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18723|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18724|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18724:8): [True: 0, Folded]
  ------------------
18725|      0|				zval_ptr_dtor_str(op1);
18726|      0|			}
18727|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18727:8): [Folded, False: 0]
  ------------------
18728|      0|				zval_ptr_dtor_str(op2);
18729|      0|			}
18730|      0|			if (!result) {
  ------------------
  |  Branch (18730:8): [True: 0, False: 0]
  ------------------
18731|      0|				goto is_not_equal_true;
18732|      0|			} else {
18733|      0|				goto is_not_equal_false;
18734|      0|			}
18735|      0|		}
18736|      0|	}
18737|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
18738|      2|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_HANDLER:
20209|      2|{
20210|      2|	USE_OPLINE
20211|      2|	zval *op1, *op2;
20212|      2|	double d1, d2;
20213|       |
20214|      2|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20215|      2|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20216|      2|	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20216:6): [True: 0, Folded]
  |  Branch (20216:11): [Folded, False: 0]
  |  Branch (20216:37): [Folded, False: 0]
  ------------------
20217|       |		/* pass */
20218|      2|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
20219|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20220|      1|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
20221|      0|is_not_equal_true:
20222|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20222:5): [True: 0, False: 0]
  |  Branch (20222:5): [True: 0, False: 0]
  ------------------
20223|      1|			} else {
20224|      1|is_not_equal_false:
20225|      1|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      1|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      1|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      1|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      1|	} else { \
  |  |  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      1|	} \
  |  |  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20225:5): [True: 0, False: 1]
  |  Branch (20225:5): [True: 1, False: 0]
  ------------------
20226|      1|			}
20227|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20228|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20229|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20230|      0|			goto is_not_equal_double;
20231|      0|		}
20232|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
20233|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20234|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20235|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20236|      0|is_not_equal_double:
20237|      0|			if (d1 != d2) {
  ------------------
  |  Branch (20237:8): [True: 0, False: 0]
  ------------------
20238|      0|				goto is_not_equal_true;
20239|      0|			} else {
20240|      0|				goto is_not_equal_false;
20241|      0|			}
20242|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20243|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20244|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20245|      0|			goto is_not_equal_double;
20246|      0|		}
20247|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
20248|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20249|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20250|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20250:8): [True: 0, Folded]
  ------------------
20251|      0|				zval_ptr_dtor_str(op1);
20252|      0|			}
20253|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20253:8): [True: 0, Folded]
  ------------------
20254|      0|				zval_ptr_dtor_str(op2);
20255|      0|			}
20256|      0|			if (!result) {
  ------------------
  |  Branch (20256:8): [True: 0, False: 0]
  ------------------
20257|      0|				goto is_not_equal_true;
20258|      0|			} else {
20259|      0|				goto is_not_equal_false;
20260|      0|			}
20261|      0|		}
20262|      0|	}
20263|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
20264|      2|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_JMPZ_HANDLER:
20267|      1|{
20268|      1|	USE_OPLINE
20269|      1|	zval *op1, *op2;
20270|      1|	double d1, d2;
20271|       |
20272|      1|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20273|      1|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20274|      1|	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_TMP_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20274:6): [True: 0, Folded]
  |  Branch (20274:11): [Folded, False: 0]
  |  Branch (20274:37): [Folded, False: 0]
  ------------------
20275|       |		/* pass */
20276|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20277|      1|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20278|      1|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
20279|      1|is_not_equal_true:
20280|      1|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      1|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20281|      1|			} else {
20282|      0|is_not_equal_false:
20283|      0|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|      0|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20284|      0|			}
20285|      1|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20286|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20287|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20288|      0|			goto is_not_equal_double;
20289|      0|		}
20290|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20291|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20292|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20293|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20294|      0|is_not_equal_double:
20295|      0|			if (d1 != d2) {
  ------------------
  |  Branch (20295:8): [True: 0, False: 0]
  ------------------
20296|      0|				goto is_not_equal_true;
20297|      0|			} else {
20298|      0|				goto is_not_equal_false;
20299|      0|			}
20300|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20301|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20302|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20303|      0|			goto is_not_equal_double;
20304|      0|		}
20305|      0|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20306|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20307|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20308|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20308:8): [True: 0, Folded]
  ------------------
20309|      0|				zval_ptr_dtor_str(op1);
20310|      0|			}
20311|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20311:8): [True: 0, Folded]
  ------------------
20312|      0|				zval_ptr_dtor_str(op2);
20313|      0|			}
20314|      0|			if (!result) {
  ------------------
  |  Branch (20314:8): [True: 0, False: 0]
  ------------------
20315|      0|				goto is_not_equal_true;
20316|      0|			} else {
20317|      0|				goto is_not_equal_false;
20318|      0|			}
20319|      0|		}
20320|      0|	}
20321|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
20322|      1|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER:
41456|    430|{
41457|    430|	USE_OPLINE
41458|    430|	zval *op1, *op2;
41459|    430|	double d1, d2;
41460|       |
41461|    430|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    430|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    430|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41462|    430|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    430|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41463|    430|	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    430|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41463:6): [True: 0, Folded]
  |  Branch (41463:11): [Folded, False: 0]
  |  Branch (41463:32): [True: 0, Folded]
  ------------------
41464|       |		/* pass */
41465|    430|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    430|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 185, False: 245]
  |  |  ------------------
  ------------------
41466|    185|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    185|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 166, False: 19]
  |  |  ------------------
  ------------------
41467|    166|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|    166|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 166, False: 0]
  |  |  ------------------
  ------------------
41468|    188|is_not_equal_true:
41469|    188|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|    188|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|    188|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|    188|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|    188|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    188|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    188|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    188|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|    188|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 188]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|    188|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|    188|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|    188|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|    188|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 188]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|    188|	} else { \
  |  |  |  |  |  | 5761|    188|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    188|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|    188|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    188|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|    188|	} \
  |  |  |  |  |  | 5764|    188|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|    188|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|    188|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41469:5): [True: 0, False: 188]
  |  Branch (41469:5): [True: 188, False: 0]
  ------------------
41470|    188|			} else {
41471|      0|is_not_equal_false:
41472|      0|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      0|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      0|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41472:5): [True: 0, False: 0]
  |  Branch (41472:5): [True: 0, False: 0]
  ------------------
41473|      0|			}
41474|    166|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 0]
  |  |  ------------------
  ------------------
41475|     19|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|     19|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     19|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41476|     19|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|     19|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     19|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41477|     19|			goto is_not_equal_double;
41478|     19|		}
41479|    245|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    245|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 242]
  |  |  ------------------
  ------------------
41480|      3|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
41481|      3|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41482|      3|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41483|     22|is_not_equal_double:
41484|     22|			if (d1 != d2) {
  ------------------
  |  Branch (41484:8): [True: 22, False: 0]
  ------------------
41485|     22|				goto is_not_equal_true;
41486|     22|			} else {
41487|      0|				goto is_not_equal_false;
41488|      0|			}
41489|     22|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41490|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41491|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41492|      0|			goto is_not_equal_double;
41493|      0|		}
41494|    242|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    242|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 227, False: 15]
  |  |  ------------------
  ------------------
41495|    227|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|    227|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 227]
  |  |  ------------------
  ------------------
41496|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41497|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41497:8): [Folded, False: 0]
  ------------------
41498|      0|				zval_ptr_dtor_str(op1);
41499|      0|			}
41500|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41500:8): [Folded, False: 0]
  ------------------
41501|      0|				zval_ptr_dtor_str(op2);
41502|      0|			}
41503|      0|			if (!result) {
  ------------------
  |  Branch (41503:8): [True: 0, False: 0]
  ------------------
41504|      0|				goto is_not_equal_true;
41505|      0|			} else {
41506|      0|				goto is_not_equal_false;
41507|      0|			}
41508|      0|		}
41509|    227|	}
41510|    242|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    242|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    242|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
41511|    430|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_JMPNZ_HANDLER:
41572|  1.09k|{
41573|  1.09k|	USE_OPLINE
41574|  1.09k|	zval *op1, *op2;
41575|  1.09k|	double d1, d2;
41576|       |
41577|  1.09k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.09k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.09k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41578|  1.09k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  1.09k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41579|  1.09k|	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  1.09k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41579:6): [True: 0, Folded]
  |  Branch (41579:11): [Folded, False: 0]
  |  Branch (41579:32): [True: 0, Folded]
  ------------------
41580|       |		/* pass */
41581|  1.09k|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|  1.09k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1.09k]
  |  |  ------------------
  ------------------
41582|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41583|      0|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41584|      0|is_not_equal_true:
41585|      0|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      0|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41586|      0|			} else {
41587|      0|is_not_equal_false:
41588|      0|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      0|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      0|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41589|      0|			}
41590|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41591|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41592|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41593|      0|			goto is_not_equal_double;
41594|      0|		}
41595|  1.09k|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|  1.09k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1.09k]
  |  |  ------------------
  ------------------
41596|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41597|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41598|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41599|      0|is_not_equal_double:
41600|      0|			if (d1 != d2) {
  ------------------
  |  Branch (41600:8): [True: 0, False: 0]
  ------------------
41601|      0|				goto is_not_equal_true;
41602|      0|			} else {
41603|      0|				goto is_not_equal_false;
41604|      0|			}
41605|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41606|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
41607|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
41608|      0|			goto is_not_equal_double;
41609|      0|		}
41610|  1.09k|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|  1.09k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 97, False: 1.00k]
  |  |  ------------------
  ------------------
41611|     97|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|     97|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 97]
  |  |  ------------------
  ------------------
41612|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41613|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41613:8): [Folded, False: 0]
  ------------------
41614|      0|				zval_ptr_dtor_str(op1);
41615|      0|			}
41616|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (41616:8): [Folded, False: 0]
  ------------------
41617|      0|				zval_ptr_dtor_str(op2);
41618|      0|			}
41619|      0|			if (!result) {
  ------------------
  |  Branch (41619:8): [True: 0, False: 0]
  ------------------
41620|      0|				goto is_not_equal_true;
41621|      0|			} else {
41622|      0|				goto is_not_equal_false;
41623|      0|			}
41624|      0|		}
41625|     97|	}
41626|  1.09k|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|  1.09k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  1.09k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
41627|  1.09k|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_HANDLER:
45297|    216|{
45298|    216|	USE_OPLINE
45299|    216|	zval *op1, *op2;
45300|    216|	double d1, d2;
45301|       |
45302|    216|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    216|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    216|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45303|    216|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    216|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    216|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45304|    216|	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    216|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (45304:6): [True: 0, Folded]
  |  Branch (45304:11): [Folded, False: 0]
  |  Branch (45304:32): [Folded, False: 0]
  ------------------
45305|       |		/* pass */
45306|    216|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    216|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 216]
  |  |  ------------------
  ------------------
45307|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45308|      0|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45309|      0|is_not_equal_true:
45310|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45310:5): [True: 0, False: 0]
  |  Branch (45310:5): [True: 0, False: 0]
  ------------------
45311|      0|			} else {
45312|      0|is_not_equal_false:
45313|      0|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      0|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      0|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (45313:5): [True: 0, False: 0]
  |  Branch (45313:5): [True: 0, False: 0]
  ------------------
45314|      0|			}
45315|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45316|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
45317|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45318|      0|			goto is_not_equal_double;
45319|      0|		}
45320|    216|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    216|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 216]
  |  |  ------------------
  ------------------
45321|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45322|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45323|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45324|      0|is_not_equal_double:
45325|      0|			if (d1 != d2) {
  ------------------
  |  Branch (45325:8): [True: 0, False: 0]
  ------------------
45326|      0|				goto is_not_equal_true;
45327|      0|			} else {
45328|      0|				goto is_not_equal_false;
45329|      0|			}
45330|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45331|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45332|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
45333|      0|			goto is_not_equal_double;
45334|      0|		}
45335|    216|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    216|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 90, False: 126]
  |  |  ------------------
  ------------------
45336|     90|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|     90|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 90]
  |  |  ------------------
  ------------------
45337|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
45338|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45338:8): [Folded, False: 0]
  ------------------
45339|      0|				zval_ptr_dtor_str(op1);
45340|      0|			}
45341|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45341:8): [True: 0, Folded]
  ------------------
45342|      0|				zval_ptr_dtor_str(op2);
45343|      0|			}
45344|      0|			if (!result) {
  ------------------
  |  Branch (45344:8): [True: 0, False: 0]
  ------------------
45345|      0|				goto is_not_equal_true;
45346|      0|			} else {
45347|      0|				goto is_not_equal_false;
45348|      0|			}
45349|      0|		}
45350|     90|	}
45351|    216|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    216|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    216|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
45352|    216|}
zend_execute.c:ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_JMPNZ_HANDLER:
45413|    200|{
45414|    200|	USE_OPLINE
45415|    200|	zval *op1, *op2;
45416|    200|	double d1, d2;
45417|       |
45418|    200|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    200|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    200|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45419|    200|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    200|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    200|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45420|    200|	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    200|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CV == IS_CONST && IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (45420:6): [True: 0, Folded]
  |  Branch (45420:11): [Folded, False: 0]
  |  Branch (45420:32): [Folded, False: 0]
  ------------------
45421|       |		/* pass */
45422|    200|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    200|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 200]
  |  |  ------------------
  ------------------
45423|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45424|      0|			if (EXPECTED(Z_LVAL_P(op1) != Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45425|      0|is_not_equal_true:
45426|      0|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      0|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45427|      0|			} else {
45428|      0|is_not_equal_false:
45429|      0|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      0|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      0|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
45430|      0|			}
45431|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45432|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
45433|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45434|      0|			goto is_not_equal_double;
45435|      0|		}
45436|    200|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    200|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 200]
  |  |  ------------------
  ------------------
45437|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45438|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45439|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45440|      0|is_not_equal_double:
45441|      0|			if (d1 != d2) {
  ------------------
  |  Branch (45441:8): [True: 0, False: 0]
  ------------------
45442|      0|				goto is_not_equal_true;
45443|      0|			} else {
45444|      0|				goto is_not_equal_false;
45445|      0|			}
45446|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45447|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
45448|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
45449|      0|			goto is_not_equal_double;
45450|      0|		}
45451|    200|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    200|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 200]
  |  |  ------------------
  ------------------
45452|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45453|      0|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
45454|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45454:8): [Folded, False: 0]
  ------------------
45455|      0|				zval_ptr_dtor_str(op1);
45456|      0|			}
45457|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45457:8): [True: 0, Folded]
  ------------------
45458|      0|				zval_ptr_dtor_str(op2);
45459|      0|			}
45460|      0|			if (!result) {
  ------------------
  |  Branch (45460:8): [True: 0, False: 0]
  ------------------
45461|      0|				goto is_not_equal_true;
45462|      0|			} else {
45463|      0|				goto is_not_equal_false;
45464|      0|			}
45465|      0|		}
45466|      0|	}
45467|    200|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_not_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    200|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    200|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
45468|    200|}
zend_execute.c:zend_is_smaller_helper_SPEC:
  639|  3.37k|{
  640|  3.37k|	int ret;
  641|  3.37k|	USE_OPLINE
  642|       |
  643|  3.37k|	SAVE_OPLINE();
  ------------------
  |  |  428|  3.37k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  3.37k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  644|  3.37k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  3.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 723, False: 2.65k]
  |  |  ------------------
  ------------------
  645|    723|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    723|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    723|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  646|    723|	}
  647|  3.37k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  3.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.30k, False: 1.07k]
  |  |  ------------------
  ------------------
  648|  2.30k|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|  2.30k|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|  2.30k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  649|  2.30k|	}
  650|  3.37k|	ret = zend_compare(op_1, op_2);
  651|  3.37k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  3.37k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  3.37k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (651:6): [True: 2.46k, False: 910]
  ------------------
  652|  2.46k|		zval_ptr_dtor_nogc(op_1);
  653|  2.46k|	}
  654|  3.37k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  3.37k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  3.37k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (654:6): [True: 789, False: 2.58k]
  ------------------
  655|    789|		zval_ptr_dtor_nogc(op_2);
  656|    789|	}
  657|  3.37k|	ZEND_VM_SMART_BRANCH(ret < 0, 1);
  ------------------
  |  | 5808|  3.37k|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|  3.37k|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|  3.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 3.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3.37k, Folded]
  |  |  ------------------
  |  | 5810|      1|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|  3.37k|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|  3.37k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 146, False: 3.22k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|    146|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 146]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|    146|			} else { \
  |  | 5815|    146|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    146|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    146|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    146|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    146|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    146|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    146|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    146|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    146|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 146]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    146|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 146]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|    146|			} \
  |  | 5817|  3.22k|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|  3.22k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 102, False: 3.12k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|    102|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 102]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|    102|			} else { \
  |  | 5821|    102|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    102|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    102|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    102|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    102|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    102|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    102|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    102|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    102|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 102]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    102|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 102]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|    102|			} \
  |  | 5823|  3.12k|		} else { \
  |  | 5824|  3.12k|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|  3.12k|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|  3.12k|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  3.12k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  3.12k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|  3.12k|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    385|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|  5.86k|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 385, False: 2.73k]
  |  |  |  |  ------------------
  |  |  |  | 1074|  3.12k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 3.12k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|  3.12k|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|  3.12k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|  3.12k|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  3.12k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|  3.12k|		} \
  |  | 5827|  3.37k|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|  3.37k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|  3.37k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  658|  3.37k|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_HANDLER:
 8808|     53|{
 8809|     53|	USE_OPLINE
 8810|     53|	zval *op1, *op2;
 8811|     53|	double d1, d2;
 8812|       |
 8813|     53|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     53|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8814|     53|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|     53|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     53|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8815|     53|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|     53|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8815:6): [True: 0, Folded]
  |  Branch (8815:11): [True: 0, Folded]
  |  Branch (8815:35): [Folded, False: 0]
  ------------------
 8816|       |		/* pass */
 8817|     53|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     53|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 37, False: 16]
  |  |  ------------------
  ------------------
 8818|     37|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     37|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 15, False: 22]
  |  |  ------------------
  ------------------
 8819|     15|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 11]
  |  |  ------------------
  ------------------
 8820|      5|is_smaller_true:
 8821|      5|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      5|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      5|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      5|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      5|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      5|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      5|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      5|	} else { \
  |  |  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      5|	} \
  |  |  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (8821:5): [True: 0, False: 5]
  |  Branch (8821:5): [True: 5, False: 0]
  ------------------
 8822|     11|			} else {
 8823|     16|is_smaller_false:
 8824|     16|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|     16|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|     16|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|     16|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|     16|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     16|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|     16|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|     16|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|     16|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|     16|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|     16|	} else { \
  |  |  |  |  |  | 5761|     16|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|     16|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     16|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|     16|	} \
  |  |  |  |  |  | 5764|     16|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|     16|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (8824:5): [True: 0, False: 16]
  |  Branch (8824:5): [True: 16, False: 0]
  ------------------
 8825|     16|			}
 8826|     22|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|     22|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 20]
  |  |  ------------------
  ------------------
 8827|      2|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8828|      2|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8829|      2|			goto is_smaller_double;
 8830|      2|		}
 8831|     37|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 12]
  |  |  ------------------
  ------------------
 8832|      4|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
 8833|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8834|      1|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8835|      6|is_smaller_double:
 8836|      6|			if (d1 < d2) {
  ------------------
  |  Branch (8836:8): [True: 1, False: 5]
  ------------------
 8837|      1|				goto is_smaller_true;
 8838|      5|			} else {
 8839|      5|				goto is_smaller_false;
 8840|      5|			}
 8841|      6|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 8842|      3|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8843|      3|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8844|      3|			goto is_smaller_double;
 8845|      3|		}
 8846|      4|	}
 8847|     32|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|     32|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     32|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8848|     53|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPZ_HANDLER:
 8851|    262|{
 8852|    262|	USE_OPLINE
 8853|    262|	zval *op1, *op2;
 8854|    262|	double d1, d2;
 8855|       |
 8856|    262|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    262|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8857|    262|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    262|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    262|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8858|    262|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|    262|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8858:6): [True: 0, Folded]
  |  Branch (8858:11): [True: 0, Folded]
  |  Branch (8858:35): [Folded, False: 0]
  ------------------
 8859|       |		/* pass */
 8860|    262|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    262|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 261, False: 1]
  |  |  ------------------
  ------------------
 8861|    261|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    261|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 116, False: 145]
  |  |  ------------------
  ------------------
 8862|    116|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|    116|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 115]
  |  |  ------------------
  ------------------
 8863|      1|is_smaller_true:
 8864|      1|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      1|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8865|    115|			} else {
 8866|    115|is_smaller_false:
 8867|    115|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|    115|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|    115|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    115|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    115|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    115|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    115|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    115|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    115|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    115|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    115|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 115]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    115|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 115]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|    115|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    115|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|    115|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8868|    115|			}
 8869|    145|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    145|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 145]
  |  |  ------------------
  ------------------
 8870|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8871|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8872|      0|			goto is_smaller_double;
 8873|      0|		}
 8874|    261|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 8875|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8876|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8877|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8878|      0|is_smaller_double:
 8879|      0|			if (d1 < d2) {
  ------------------
  |  Branch (8879:8): [True: 0, False: 0]
  ------------------
 8880|      0|				goto is_smaller_true;
 8881|      0|			} else {
 8882|      0|				goto is_smaller_false;
 8883|      0|			}
 8884|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8885|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8886|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8887|      0|			goto is_smaller_double;
 8888|      0|		}
 8889|      1|	}
 8890|    146|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    146|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    146|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8891|    262|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER:
 8894|      1|{
 8895|      1|	USE_OPLINE
 8896|      1|	zval *op1, *op2;
 8897|      1|	double d1, d2;
 8898|       |
 8899|      1|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8900|      1|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8901|      1|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8901:6): [True: 0, Folded]
  |  Branch (8901:11): [True: 0, Folded]
  |  Branch (8901:35): [Folded, False: 0]
  ------------------
 8902|       |		/* pass */
 8903|      1|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 8904|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 8905|      1|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8906|      0|is_smaller_true:
 8907|      0|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      0|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8908|      1|			} else {
 8909|      1|is_smaller_false:
 8910|      1|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      1|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8911|      1|			}
 8912|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8913|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8914|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8915|      0|			goto is_smaller_double;
 8916|      0|		}
 8917|      1|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8918|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8919|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8920|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8921|      0|is_smaller_double:
 8922|      0|			if (d1 < d2) {
  ------------------
  |  Branch (8922:8): [True: 0, False: 0]
  ------------------
 8923|      0|				goto is_smaller_true;
 8924|      0|			} else {
 8925|      0|				goto is_smaller_false;
 8926|      0|			}
 8927|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8928|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8929|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8930|      0|			goto is_smaller_double;
 8931|      0|		}
 8932|      0|	}
 8933|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 8934|      1|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_HANDLER:
13745|    130|{
13746|    130|	USE_OPLINE
13747|    130|	zval *op1, *op2;
13748|    130|	double d1, d2;
13749|       |
13750|    130|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    130|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    130|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13751|    130|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    130|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13752|    130|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    130|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13752:6): [True: 0, Folded]
  |  Branch (13752:11): [Folded, False: 0]
  |  Branch (13752:52): [True: 0, Folded]
  ------------------
13753|       |		/* pass */
13754|    130|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    130|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 120, False: 10]
  |  |  ------------------
  ------------------
13755|    120|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    120|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 120, False: 0]
  |  |  ------------------
  ------------------
13756|    120|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|    120|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 117, False: 3]
  |  |  ------------------
  ------------------
13757|    118|is_smaller_true:
13758|    118|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|    118|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|    118|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|    118|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|    118|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    118|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    118|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    118|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|    118|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 118]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|    118|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|    118|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|    118|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|    118|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 118]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|    118|	} else { \
  |  |  |  |  |  | 5761|    118|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    118|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|    118|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    118|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|    118|	} \
  |  |  |  |  |  | 5764|    118|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|    118|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|    118|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13758:5): [True: 0, False: 118]
  |  Branch (13758:5): [True: 118, False: 0]
  ------------------
13759|    118|			} else {
13760|      3|is_smaller_false:
13761|      3|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      3|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      3|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      3|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      3|	} else { \
  |  |  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      3|	} \
  |  |  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13761:5): [True: 0, False: 3]
  |  Branch (13761:5): [True: 3, False: 0]
  ------------------
13762|      3|			}
13763|    120|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13764|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13765|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13766|      0|			goto is_smaller_double;
13767|      0|		}
13768|    120|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
13769|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
13770|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13771|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13772|      1|is_smaller_double:
13773|      1|			if (d1 < d2) {
  ------------------
  |  Branch (13773:8): [True: 1, False: 0]
  ------------------
13774|      1|				goto is_smaller_true;
13775|      1|			} else {
13776|      0|				goto is_smaller_false;
13777|      0|			}
13778|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13779|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13780|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13781|      1|			goto is_smaller_double;
13782|      1|		}
13783|      1|	}
13784|      9|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      9|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      9|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13785|    130|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPZ_HANDLER:
13788|    122|{
13789|    122|	USE_OPLINE
13790|    122|	zval *op1, *op2;
13791|    122|	double d1, d2;
13792|       |
13793|    122|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    122|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    122|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13794|    122|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    122|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13795|    122|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    122|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13795:6): [True: 0, Folded]
  |  Branch (13795:11): [Folded, False: 0]
  |  Branch (13795:52): [True: 0, Folded]
  ------------------
13796|       |		/* pass */
13797|    122|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    122|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 122, False: 0]
  |  |  ------------------
  ------------------
13798|    122|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    122|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 121, False: 1]
  |  |  ------------------
  ------------------
13799|    121|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|    121|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 110]
  |  |  ------------------
  ------------------
13800|     12|is_smaller_true:
13801|     12|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|     12|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|     12|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|     12|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|     12|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     12|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|     12|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13802|    110|			} else {
13803|    110|is_smaller_false:
13804|    110|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|    110|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|    110|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    110|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    110|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    110|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    110|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    110|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    110|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    110|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    110|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 110]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    110|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 110]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|    110|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    110|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|    110|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13805|    110|			}
13806|    121|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13807|      1|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13808|      1|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13809|      1|			goto is_smaller_double;
13810|      1|		}
13811|    122|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13812|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13813|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13814|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13815|      1|is_smaller_double:
13816|      1|			if (d1 < d2) {
  ------------------
  |  Branch (13816:8): [True: 1, False: 0]
  ------------------
13817|      1|				goto is_smaller_true;
13818|      1|			} else {
13819|      0|				goto is_smaller_false;
13820|      0|			}
13821|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13822|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13823|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13824|      0|			goto is_smaller_double;
13825|      0|		}
13826|      0|	}
13827|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13828|    122|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER:
13831|  1.87k|{
13832|  1.87k|	USE_OPLINE
13833|  1.87k|	zval *op1, *op2;
13834|  1.87k|	double d1, d2;
13835|       |
13836|  1.87k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.87k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.87k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13837|  1.87k|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  1.87k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13838|  1.87k|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  1.87k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13838:6): [True: 0, Folded]
  |  Branch (13838:11): [Folded, False: 0]
  |  Branch (13838:52): [True: 0, Folded]
  ------------------
13839|       |		/* pass */
13840|  1.87k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|  1.87k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.76k, False: 102]
  |  |  ------------------
  ------------------
13841|  1.76k|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|  1.76k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.76k, False: 0]
  |  |  ------------------
  ------------------
13842|  1.76k|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|  1.76k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.75k, False: 9]
  |  |  ------------------
  ------------------
13843|  1.75k|is_smaller_true:
13844|  1.75k|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|  1.75k|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|  1.75k|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|  1.75k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|  1.75k|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|  1.75k|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|  1.75k|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|  1.75k|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|  1.75k|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|  1.75k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.75k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.75k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|  1.75k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1.75k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|  1.75k|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|  1.75k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|  1.75k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13845|  1.75k|			} else {
13846|      9|is_smaller_false:
13847|      9|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      9|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      9|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      9|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      9|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13848|      9|			}
13849|  1.76k|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13850|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13851|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13852|      0|			goto is_smaller_double;
13853|      0|		}
13854|  1.76k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    102|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 102]
  |  |  ------------------
  ------------------
13855|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13856|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13857|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13858|      0|is_smaller_double:
13859|      0|			if (d1 < d2) {
  ------------------
  |  Branch (13859:8): [True: 0, False: 0]
  ------------------
13860|      0|				goto is_smaller_true;
13861|      0|			} else {
13862|      0|				goto is_smaller_false;
13863|      0|			}
13864|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13865|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13866|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13867|      0|			goto is_smaller_double;
13868|      0|		}
13869|      0|	}
13870|    102|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    102|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    102|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13871|  1.87k|}
zend_execute.c:ZEND_IS_SMALLER_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14850|  3.15k|{
14851|  3.15k|	USE_OPLINE
14852|  3.15k|	zval *op1, *op2;
14853|  3.15k|	double d1, d2;
14854|       |
14855|  3.15k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  3.15k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  3.15k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14856|  3.15k|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|  3.15k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  3.15k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14857|  3.15k|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|  3.15k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14857:6): [True: 0, Folded]
  |  Branch (14857:11): [Folded, False: 0]
  |  Branch (14857:52): [Folded, False: 0]
  ------------------
14858|       |		/* pass */
14859|  3.15k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|  3.15k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 75, False: 3.08k]
  |  |  ------------------
  ------------------
14860|     75|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     75|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 73]
  |  |  ------------------
  ------------------
14861|      2|			if (EXPECTED(Z_LVAL_P(op1) < Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
14862|      0|is_smaller_true:
14863|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (14863:5): [True: 0, False: 0]
  |  Branch (14863:5): [True: 0, False: 0]
  ------------------
14864|      2|			} else {
14865|     72|is_smaller_false:
14866|     72|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|     72|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|     72|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|     72|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|     72|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     72|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     72|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     72|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|     72|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|     72|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|     72|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|     72|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|     72|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 72]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|     72|	} else { \
  |  |  |  |  |  | 5761|     72|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     72|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|     72|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     72|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|     72|	} \
  |  |  |  |  |  | 5764|     72|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|     72|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|     72|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (14866:5): [True: 0, False: 72]
  |  Branch (14866:5): [True: 72, False: 0]
  ------------------
14867|     72|			}
14868|     73|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|     73|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 70, False: 3]
  |  |  ------------------
  ------------------
14869|     70|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|     70|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     70|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14870|     70|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|     70|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     70|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14871|     70|			goto is_smaller_double;
14872|     70|		}
14873|  3.08k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|  3.08k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3.08k]
  |  |  ------------------
  ------------------
14874|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14875|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14876|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14877|     70|is_smaller_double:
14878|     70|			if (d1 < d2) {
  ------------------
  |  Branch (14878:8): [True: 0, False: 70]
  ------------------
14879|      0|				goto is_smaller_true;
14880|     70|			} else {
14881|     70|				goto is_smaller_false;
14882|     70|			}
14883|     70|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14884|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14885|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14886|      0|			goto is_smaller_double;
14887|      0|		}
14888|      1|	}
14889|  3.08k|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|  3.08k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  3.08k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14890|  3.15k|}
zend_execute.c:zend_is_smaller_or_equal_helper_SPEC:
  661|  1.42k|{
  662|  1.42k|	int ret;
  663|  1.42k|	USE_OPLINE
  664|       |
  665|  1.42k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.42k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.42k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  666|  1.42k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 475, False: 948]
  |  |  ------------------
  ------------------
  667|    475|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    475|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    475|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  668|    475|	}
  669|  1.42k|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|  1.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 946, False: 477]
  |  |  ------------------
  ------------------
  670|    946|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    946|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    946|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  671|    946|	}
  672|  1.42k|	ret = zend_compare(op_1, op_2);
  673|  1.42k|	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.42k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.42k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (673:6): [True: 500, False: 923]
  ------------------
  674|    500|		zval_ptr_dtor_nogc(op_1);
  675|    500|	}
  676|  1.42k|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  1.42k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  1.42k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (676:6): [True: 0, False: 1.42k]
  ------------------
  677|      0|		zval_ptr_dtor_nogc(op_2);
  678|      0|	}
  679|  1.42k|	ZEND_VM_SMART_BRANCH(ret <= 0, 1);
  ------------------
  |  | 5808|  1.42k|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|  1.42k|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|  1.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.42k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1.42k, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|  1.42k|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|  1.42k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 1.42k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      2|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 2]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      2|			} else { \
  |  | 5815|      2|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      2|			} \
  |  | 5817|  1.42k|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|  1.42k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1.41k, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|  1.41k|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 1, False: 1.41k]
  |  |  ------------------
  |  | 5819|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|  1.41k|			} else { \
  |  | 5821|  1.41k|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|  1.41k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|  1.41k|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|  1.41k|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|  1.41k|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|  1.41k|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|  1.41k|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|  1.41k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.41k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.41k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|  1.41k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1.41k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|  1.41k|			} \
  |  | 5823|  1.41k|		} else { \
  |  | 5824|      2|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      2|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      2|		} \
  |  | 5827|  1.42k|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|  1.42k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|  1.42k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  680|  1.42k|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPZ_HANDLER:
 8984|     66|{
 8985|     66|	USE_OPLINE
 8986|     66|	zval *op1, *op2;
 8987|     66|	double d1, d2;
 8988|       |
 8989|     66|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     66|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8990|     66|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|     66|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     66|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8991|     66|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|     66|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8991:6): [True: 0, Folded]
  |  Branch (8991:11): [True: 0, Folded]
  |  Branch (8991:35): [Folded, False: 0]
  ------------------
 8992|       |		/* pass */
 8993|     66|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     66|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 66, False: 0]
  |  |  ------------------
  ------------------
 8994|     66|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     66|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 65, False: 1]
  |  |  ------------------
  ------------------
 8995|     65|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|     65|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 64]
  |  |  ------------------
  ------------------
 8996|      1|is_smaller_or_equal_true:
 8997|      1|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      1|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8998|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8999|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8999:5): [True: 0, False: 0]
  |  Branch (8999:5): [True: 0, False: 0]
  ------------------
 9000|     64|			} else {
 9001|     64|is_smaller_or_equal_false:
 9002|     64|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|     64|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|     64|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|     64|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     64|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     64|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     64|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     64|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     64|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     64|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 64]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     64|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|     64|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     64|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|     64|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9003|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9004|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9004:5): [True: 0, False: 0]
  |  Branch (9004:5): [True: 0, False: 0]
  ------------------
 9005|      0|			}
 9006|     65|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 9007|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 9008|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9009|      0|			goto is_smaller_or_equal_double;
 9010|      0|		}
 9011|     66|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9012|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9013|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9014|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9015|      0|is_smaller_or_equal_double:
 9016|      0|			if (d1 <= d2) {
  ------------------
  |  Branch (9016:8): [True: 0, False: 0]
  ------------------
 9017|      0|				goto is_smaller_or_equal_true;
 9018|      0|			} else {
 9019|      0|				goto is_smaller_or_equal_false;
 9020|      0|			}
 9021|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9022|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9023|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 9024|      0|			goto is_smaller_or_equal_double;
 9025|      0|		}
 9026|      0|	}
 9027|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 9028|     66|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER:
 9031|    333|{
 9032|    333|	USE_OPLINE
 9033|    333|	zval *op1, *op2;
 9034|    333|	double d1, d2;
 9035|       |
 9036|    333|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    333|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9037|    333|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    333|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    333|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9038|    333|	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|    333|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && IS_CONST == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (9038:6): [True: 0, Folded]
  |  Branch (9038:11): [True: 0, Folded]
  |  Branch (9038:35): [Folded, False: 0]
  ------------------
 9039|       |		/* pass */
 9040|    333|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    333|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 333]
  |  |  ------------------
  ------------------
 9041|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9042|      0|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9043|      0|is_smaller_or_equal_true:
 9044|      0|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      0|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9045|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9046|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9046:5): [True: 0, False: 0]
  |  Branch (9046:5): [True: 0, False: 0]
  ------------------
 9047|      0|			} else {
 9048|      0|is_smaller_or_equal_false:
 9049|      0|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      0|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      0|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9050|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9051|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9051:5): [True: 0, False: 0]
  |  Branch (9051:5): [True: 0, False: 0]
  ------------------
 9052|      0|			}
 9053|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9054|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 9055|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9056|      0|			goto is_smaller_or_equal_double;
 9057|      0|		}
 9058|    333|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    333|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 333, False: 0]
  |  |  ------------------
  ------------------
 9059|    333|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    333|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 333]
  |  |  ------------------
  ------------------
 9060|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9061|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9062|      0|is_smaller_or_equal_double:
 9063|      0|			if (d1 <= d2) {
  ------------------
  |  Branch (9063:8): [True: 0, False: 0]
  ------------------
 9064|      0|				goto is_smaller_or_equal_true;
 9065|      0|			} else {
 9066|      0|				goto is_smaller_or_equal_false;
 9067|      0|			}
 9068|    333|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    333|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 333]
  |  |  ------------------
  ------------------
 9069|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 9070|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 9071|      0|			goto is_smaller_or_equal_double;
 9072|      0|		}
 9073|    333|	}
 9074|    333|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    333|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    333|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 9075|    333|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_HANDLER:
13874|    128|{
13875|    128|	USE_OPLINE
13876|    128|	zval *op1, *op2;
13877|    128|	double d1, d2;
13878|       |
13879|    128|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    128|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    128|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13880|    128|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    128|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13881|    128|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    128|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13881:6): [True: 0, Folded]
  |  Branch (13881:11): [Folded, False: 0]
  |  Branch (13881:52): [True: 0, Folded]
  ------------------
13882|       |		/* pass */
13883|    128|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    128|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 127, False: 1]
  |  |  ------------------
  ------------------
13884|    127|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    127|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 127, False: 0]
  |  |  ------------------
  ------------------
13885|    127|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|    127|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 125, False: 2]
  |  |  ------------------
  ------------------
13886|    126|is_smaller_or_equal_true:
13887|    126|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|    126|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|    126|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|    126|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|    126|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    126|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    126|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|    126|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|    126|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 126]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|    126|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|    126|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|    126|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|    126|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 126]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|    126|	} else { \
  |  |  |  |  |  | 5761|    126|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    126|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|    126|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    126|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|    126|	} \
  |  |  |  |  |  | 5764|    126|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|    126|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|    126|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13887:5): [True: 0, False: 126]
  |  Branch (13887:5): [True: 126, False: 0]
  ------------------
13888|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13889|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13889:5): [True: 0, False: 0]
  |  Branch (13889:5): [True: 0, False: 0]
  ------------------
13890|      2|			} else {
13891|      2|is_smaller_or_equal_false:
13892|      2|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      2|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      2|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      2|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      2|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      2|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      2|	} else { \
  |  |  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      2|	} \
  |  |  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13892:5): [True: 0, False: 2]
  |  Branch (13892:5): [True: 2, False: 0]
  ------------------
13893|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13894|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13894:5): [True: 0, False: 0]
  |  Branch (13894:5): [True: 0, False: 0]
  ------------------
13895|      0|			}
13896|    127|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13897|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13898|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13899|      0|			goto is_smaller_or_equal_double;
13900|      0|		}
13901|    127|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13902|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
13903|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13904|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13905|      1|is_smaller_or_equal_double:
13906|      1|			if (d1 <= d2) {
  ------------------
  |  Branch (13906:8): [True: 1, False: 0]
  ------------------
13907|      1|				goto is_smaller_or_equal_true;
13908|      1|			} else {
13909|      0|				goto is_smaller_or_equal_false;
13910|      0|			}
13911|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13912|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13913|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13914|      1|			goto is_smaller_or_equal_double;
13915|      1|		}
13916|      1|	}
13917|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13918|    128|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPZ_HANDLER:
13921|     28|{
13922|     28|	USE_OPLINE
13923|     28|	zval *op1, *op2;
13924|     28|	double d1, d2;
13925|       |
13926|     28|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     28|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     28|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13927|     28|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     28|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13928|     28|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     28|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13928:6): [True: 0, Folded]
  |  Branch (13928:11): [Folded, False: 0]
  |  Branch (13928:52): [True: 0, Folded]
  ------------------
13929|       |		/* pass */
13930|     28|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|     28|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 28, False: 0]
  |  |  ------------------
  ------------------
13931|     28|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|     28|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 27, False: 1]
  |  |  ------------------
  ------------------
13932|     27|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|     27|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 24, False: 3]
  |  |  ------------------
  ------------------
13933|     24|is_smaller_or_equal_true:
13934|     24|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|     24|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|     24|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|     24|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|     24|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     24|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|     24|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     24|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13935|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13936|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13936:5): [True: 0, False: 0]
  |  Branch (13936:5): [True: 0, False: 0]
  ------------------
13937|      3|			} else {
13938|      3|is_smaller_or_equal_false:
13939|      3|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|      3|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|      3|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      3|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      3|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      3|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      3|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      3|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13940|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13941|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13941:5): [True: 0, False: 0]
  |  Branch (13941:5): [True: 0, False: 0]
  ------------------
13942|      0|			}
13943|     27|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
13944|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13945|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13946|      0|			goto is_smaller_or_equal_double;
13947|      0|		}
13948|     28|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13949|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13950|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13951|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13952|      0|is_smaller_or_equal_double:
13953|      0|			if (d1 <= d2) {
  ------------------
  |  Branch (13953:8): [True: 0, False: 0]
  ------------------
13954|      0|				goto is_smaller_or_equal_true;
13955|      0|			} else {
13956|      0|				goto is_smaller_or_equal_false;
13957|      0|			}
13958|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13959|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13960|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13961|      0|			goto is_smaller_or_equal_double;
13962|      0|		}
13963|      0|	}
13964|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
13965|     28|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER:
13968|    485|{
13969|    485|	USE_OPLINE
13970|    485|	zval *op1, *op2;
13971|    485|	double d1, d2;
13972|       |
13973|    485|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    485|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    485|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13974|    485|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    485|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13975|    485|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    485|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13975:6): [True: 0, Folded]
  |  Branch (13975:11): [Folded, False: 0]
  |  Branch (13975:52): [True: 0, Folded]
  ------------------
13976|       |		/* pass */
13977|    485|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|    485|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 476]
  |  |  ------------------
  ------------------
13978|      9|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
13979|      9|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 1]
  |  |  ------------------
  ------------------
13980|      8|is_smaller_or_equal_true:
13981|      8|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|      8|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|      8|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      8|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      8|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      8|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      8|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      8|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      8|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|      8|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13982|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13983|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13983:5): [True: 0, False: 0]
  |  Branch (13983:5): [True: 0, False: 0]
  ------------------
13984|      1|			} else {
13985|      2|is_smaller_or_equal_false:
13986|      2|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      2|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      2|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13987|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13988|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13988:5): [True: 0, False: 0]
  |  Branch (13988:5): [True: 0, False: 0]
  ------------------
13989|      0|			}
13990|      9|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13991|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13992|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13993|      0|			goto is_smaller_or_equal_double;
13994|      0|		}
13995|    476|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|    476|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 475]
  |  |  ------------------
  ------------------
13996|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13997|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13998|      1|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13999|      1|is_smaller_or_equal_double:
14000|      1|			if (d1 <= d2) {
  ------------------
  |  Branch (14000:8): [True: 0, False: 1]
  ------------------
14001|      0|				goto is_smaller_or_equal_true;
14002|      1|			} else {
14003|      1|				goto is_smaller_or_equal_false;
14004|      1|			}
14005|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
14006|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
14007|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14008|      0|			goto is_smaller_or_equal_double;
14009|      0|		}
14010|      1|	}
14011|    475|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    475|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    475|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
14012|    485|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_HANDLER:
14979|      3|{
14980|      3|	USE_OPLINE
14981|      3|	zval *op1, *op2;
14982|      3|	double d1, d2;
14983|       |
14984|      3|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14985|      3|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14986|      3|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (14986:6): [True: 0, Folded]
  |  Branch (14986:11): [Folded, False: 0]
  |  Branch (14986:52): [Folded, False: 0]
  ------------------
14987|       |		/* pass */
14988|      3|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
14989|      2|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
14990|      1|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14991|      0|is_smaller_or_equal_true:
14992|      0|				ZEND_VM_SMART_BRANCH_TRUE_NONE();
  ------------------
  |  | 5873|      0|#define ZEND_VM_SMART_BRANCH_TRUE_NONE() do { \
  |  | 5874|      0|		ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5875|      0|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      0|	} else { \
  |  |  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      0|	} \
  |  |  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5876|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5876:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (14992:5): [True: 0, False: 0]
  |  Branch (14992:5): [True: 0, False: 0]
  ------------------
14993|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
14994|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14994:5): [True: 0, False: 0]
  |  Branch (14994:5): [True: 0, False: 0]
  ------------------
14995|      1|			} else {
14996|      1|is_smaller_or_equal_false:
14997|      1|				ZEND_VM_SMART_BRANCH_FALSE_NONE();
  ------------------
  |  | 5896|      1|#define ZEND_VM_SMART_BRANCH_FALSE_NONE() do { \
  |  | 5897|      1|		ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5898|      1|		ZEND_VM_NEXT_OPCODE(); \
  |  |  ------------------
  |  |  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5760|      1|	} else { \
  |  |  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5763|      1|	} \
  |  |  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5899|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5899:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (14997:5): [True: 0, False: 1]
  |  Branch (14997:5): [True: 1, False: 0]
  ------------------
14998|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
14999|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14999:5): [True: 0, False: 0]
  |  Branch (14999:5): [True: 0, False: 0]
  ------------------
15000|      0|			}
15001|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
15002|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
15003|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15004|      0|			goto is_smaller_or_equal_double;
15005|      0|		}
15006|      2|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
15007|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15008|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15009|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15010|      0|is_smaller_or_equal_double:
15011|      0|			if (d1 <= d2) {
  ------------------
  |  Branch (15011:8): [True: 0, False: 0]
  ------------------
15012|      0|				goto is_smaller_or_equal_true;
15013|      0|			} else {
15014|      0|				goto is_smaller_or_equal_false;
15015|      0|			}
15016|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15017|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15018|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
15019|      0|			goto is_smaller_or_equal_double;
15020|      0|		}
15021|      0|	}
15022|      2|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      2|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
15023|      3|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER:
15026|      1|{
15027|      1|	USE_OPLINE
15028|      1|	zval *op1, *op2;
15029|      1|	double d1, d2;
15030|       |
15031|      1|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15032|      1|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15033|      1|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15033:6): [True: 0, Folded]
  |  Branch (15033:11): [Folded, False: 0]
  |  Branch (15033:52): [Folded, False: 0]
  ------------------
15034|       |		/* pass */
15035|      1|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
15036|      0|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15037|      0|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15038|      1|is_smaller_or_equal_true:
15039|      1|				ZEND_VM_SMART_BRANCH_TRUE_JMPZ();
  ------------------
  |  | 5865|      1|#define ZEND_VM_SMART_BRANCH_TRUE_JMPZ() do { \
  |  | 5866|      1|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5867|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5868|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5868:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15040|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15041|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15041:5): [True: 0, False: 0]
  |  Branch (15041:5): [True: 0, False: 0]
  ------------------
15042|      0|			} else {
15043|      0|is_smaller_or_equal_false:
15044|      0|				ZEND_VM_SMART_BRANCH_FALSE_JMPZ();
  ------------------
  |  | 5888|      0|#define ZEND_VM_SMART_BRANCH_FALSE_JMPZ() do { \
  |  | 5889|      0|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5890|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5891|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15045|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15046|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15046:5): [True: 0, False: 0]
  |  Branch (15046:5): [True: 0, False: 0]
  ------------------
15047|      0|			}
15048|      0|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15049|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
15050|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15051|      0|			goto is_smaller_or_equal_double;
15052|      0|		}
15053|      1|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
15054|      1|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
15055|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15056|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15057|      1|is_smaller_or_equal_double:
15058|      1|			if (d1 <= d2) {
  ------------------
  |  Branch (15058:8): [True: 1, False: 0]
  ------------------
15059|      1|				goto is_smaller_or_equal_true;
15060|      1|			} else {
15061|      0|				goto is_smaller_or_equal_false;
15062|      0|			}
15063|      1|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
15064|      1|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15065|      1|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
15066|      1|			goto is_smaller_or_equal_double;
15067|      1|		}
15068|      1|	}
15069|      0|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
15070|      1|}
zend_execute.c:ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER:
15073|  1.12k|{
15074|  1.12k|	USE_OPLINE
15075|  1.12k|	zval *op1, *op2;
15076|  1.12k|	double d1, d2;
15077|       |
15078|  1.12k|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.12k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.12k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15079|  1.12k|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|  1.12k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.12k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15080|  1.12k|	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|  1.12k|#define IS_CONST	(1<<0)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (1 && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15080:6): [True: 0, Folded]
  |  Branch (15080:11): [Folded, False: 0]
  |  Branch (15080:52): [Folded, False: 0]
  ------------------
15081|       |		/* pass */
15082|  1.12k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|  1.12k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 117, False: 1.01k]
  |  |  ------------------
  ------------------
15083|    117|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    117|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 110]
  |  |  ------------------
  ------------------
15084|      7|			if (EXPECTED(Z_LVAL_P(op1) <= Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 1]
  |  |  ------------------
  ------------------
15085|    516|is_smaller_or_equal_true:
15086|    516|				ZEND_VM_SMART_BRANCH_TRUE_JMPNZ();
  ------------------
  |  | 5869|    516|#define ZEND_VM_SMART_BRANCH_TRUE_JMPNZ() do { \
  |  | 5870|    516|		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    516|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    516|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    516|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    516|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    516|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    516|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    516|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    516|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 516]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    516|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 516]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5871|    516|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    516|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5872|    516|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5872:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15087|      0|				ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15088|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15088:5): [True: 0, False: 0]
  |  Branch (15088:5): [True: 0, False: 0]
  ------------------
15089|      1|			} else {
15090|      2|is_smaller_or_equal_false:
15091|      2|				ZEND_VM_SMART_BRANCH_FALSE_JMPNZ();
  ------------------
  |  | 5892|      2|#define ZEND_VM_SMART_BRANCH_FALSE_JMPNZ() do { \
  |  | 5893|      2|		ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5894|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5895|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15092|      0|				ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15093|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15093:5): [True: 0, False: 0]
  |  Branch (15093:5): [True: 0, False: 0]
  ------------------
15094|      0|			}
15095|    110|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|    110|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 110]
  |  |  ------------------
  ------------------
15096|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
15097|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15098|      0|			goto is_smaller_or_equal_double;
15099|      0|		}
15100|  1.01k|	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|  1.01k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.01k, False: 2]
  |  |  ------------------
  ------------------
15101|  1.01k|		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|  1.01k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 499, False: 511]
  |  |  ------------------
  ------------------
15102|    499|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|    499|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    499|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15103|    499|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|    499|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|    499|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15104|    511|is_smaller_or_equal_double:
15105|    511|			if (d1 <= d2) {
  ------------------
  |  Branch (15105:8): [True: 510, False: 1]
  ------------------
15106|    510|				goto is_smaller_or_equal_true;
15107|    510|			} else {
15108|      1|				goto is_smaller_or_equal_false;
15109|      1|			}
15110|    511|		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|    511|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 499]
  |  |  ------------------
  ------------------
15111|     12|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|     12|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     12|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
15112|     12|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|     12|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     12|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
15113|     12|			goto is_smaller_or_equal_double;
15114|     12|		}
15115|  1.01k|	}
15116|    611|	ZEND_VM_DISPATCH_TO_HELPER(zend_is_smaller_or_equal_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|    611|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    611|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
15117|  1.12k|}
zend_execute.c:ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER:
25378|    134|{
25379|    134|	USE_OPLINE
25380|    134|	zval *value;
25381|    134|	zval *variable_ptr;
25382|       |
25383|    134|	SAVE_OPLINE();
  ------------------
  |  |  428|    134|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    134|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25384|    134|	value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    134|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25385|    134|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    134|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    134|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25386|       |
25387|    134|	if (0 || UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25387:6): [Folded, False: 0]
  ------------------
25388|      0|		zend_refcounted *garbage = NULL;
25389|       |
25390|      0|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25391|      0|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
25392|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25393|      0|		}
25394|      0|		if (garbage) {
  ------------------
  |  Branch (25394:7): [True: 0, False: 0]
  ------------------
25395|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25396|      0|		}
25397|    134|	} else {
25398|    134|		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  864|    134|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|    134|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    134|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    134|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25399|    134|	}
25400|    134|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    134|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    134|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25401|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
25402|       |
25403|    134|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    134|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    134|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    134|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 134, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    134|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    134|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    134|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    134|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    134|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    134|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25403:2): [True: 0, False: 0]
  |  Branch (25403:2): [True: 0, False: 0]
  ------------------
25404|    134|}
zend_execute.c:ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER:
25407|    490|{
25408|    490|	USE_OPLINE
25409|    490|	zval *value;
25410|    490|	zval *variable_ptr;
25411|       |
25412|    490|	SAVE_OPLINE();
  ------------------
  |  |  428|    490|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    490|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25413|    490|	value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    490|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25414|    490|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    490|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    490|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25415|       |
25416|    490|	if (0 || UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
  |  Branch (25416:6): [Folded, False: 0]
  ------------------
25417|    490|		zend_refcounted *garbage = NULL;
25418|       |
25419|    490|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|    490|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|    490|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    490|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    490|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25420|    490|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|    490|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 490, Folded]
  |  |  ------------------
  ------------------
25421|    490|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|    490|	do {												\
  |  | 1426|    490|		zval *_z1 = (z);								\
  |  | 1427|    490|		const zval *_z2 = (v);							\
  |  | 1428|    490|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    490|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    490|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    490|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    490|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    490|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    490|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    490|	do {												\
  |  |  |  | 1408|    490|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    490|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    490|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    490|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    490|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    490|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    490|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 490]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    490|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    490|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    490|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 485, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    485|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    485|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    485|		}												\
  |  | 1434|    490|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 490]
  |  |  ------------------
  ------------------
25422|    490|		}
25423|    490|		if (garbage) {
  ------------------
  |  Branch (25423:7): [True: 481, False: 9]
  ------------------
25424|    481|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|    481|	do { \
  |  |  737|    481|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|    481|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 1, False: 480]
  |  |  ------------------
  |  |  739|      1|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|    480|		} else { \
  |  |  741|    480|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|    480|		} \
  |  |  743|    481|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 481]
  |  |  ------------------
  ------------------
25425|    481|		}
25426|    490|	} else {
25427|      0|		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25428|      0|	}
25429|    490|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    490|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    490|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25430|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
25431|       |
25432|    490|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    490|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    490|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    490|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 490, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    490|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    490|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    490|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    490|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    490|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    490|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25432:2): [True: 0, False: 0]
  |  Branch (25432:2): [True: 0, False: 0]
  ------------------
25433|    490|}
zend_execute.c:ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER:
28080|    503|{
28081|    503|	USE_OPLINE
28082|    503|	zval *value;
28083|    503|	zval *variable_ptr;
28084|       |
28085|    503|	SAVE_OPLINE();
  ------------------
  |  |  428|    503|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    503|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28086|    503|	value = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    503|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    503|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28087|    503|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    503|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    503|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28088|       |
28089|    503|	if (0 || UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (28089:6): [Folded, False: 0]
  ------------------
28090|      0|		zend_refcounted *garbage = NULL;
28091|       |
28092|      0|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28093|      0|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
28094|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
28095|      0|		}
28096|      0|		if (garbage) {
  ------------------
  |  Branch (28096:7): [True: 0, False: 0]
  ------------------
28097|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
28098|      0|		}
28099|    503|	} else {
28100|    503|		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  865|    503|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|    503|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    503|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    503|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28101|    503|	}
28102|    503|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    503|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    503|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28103|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
28104|       |
28105|    503|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    503|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    503|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    503|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 503, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    503|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    503|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    503|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    503|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    503|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    503|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28105:2): [True: 0, False: 0]
  |  Branch (28105:2): [True: 0, False: 0]
  ------------------
28106|    503|}
zend_execute.c:ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER:
28109|    374|{
28110|    374|	USE_OPLINE
28111|    374|	zval *value;
28112|    374|	zval *variable_ptr;
28113|       |
28114|    374|	SAVE_OPLINE();
  ------------------
  |  |  428|    374|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    374|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28115|    374|	value = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    374|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    374|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28116|    374|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    374|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    374|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28117|       |
28118|    374|	if (0 || UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
  |  Branch (28118:6): [Folded, False: 0]
  ------------------
28119|    374|		zend_refcounted *garbage = NULL;
28120|       |
28121|    374|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|    374|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|    374|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    374|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    374|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28122|    374|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|    374|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 374, Folded]
  |  |  ------------------
  ------------------
28123|    374|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|    374|	do {												\
  |  | 1426|    374|		zval *_z1 = (z);								\
  |  | 1427|    374|		const zval *_z2 = (v);							\
  |  | 1428|    374|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    374|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    374|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    374|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    374|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    374|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    374|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    374|	do {												\
  |  |  |  | 1408|    374|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    374|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    374|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    374|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    374|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    374|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    374|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 374]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    374|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    374|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    374|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 96, False: 278]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     96|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     96|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     96|		}												\
  |  | 1434|    374|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 374]
  |  |  ------------------
  ------------------
28124|    374|		}
28125|    374|		if (garbage) {
  ------------------
  |  Branch (28125:7): [True: 49, False: 325]
  ------------------
28126|     49|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|     49|	do { \
  |  |  737|     49|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|     49|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 37, False: 12]
  |  |  ------------------
  |  |  739|     37|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|     37|		} else { \
  |  |  741|     12|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|     12|		} \
  |  |  743|     49|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 49]
  |  |  ------------------
  ------------------
28127|     49|		}
28128|    374|	} else {
28129|      0|		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28130|      0|	}
28131|    374|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    374|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    374|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28132|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
28133|       |
28134|    374|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    374|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    374|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    374|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 374, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    374|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    374|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    374|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    374|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    374|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    374|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28134:2): [True: 0, False: 0]
  |  Branch (28134:2): [True: 0, False: 0]
  ------------------
28135|    374|}
zend_execute.c:ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER:
31910|      2|{
31911|      2|	USE_OPLINE
31912|      2|	zval *value;
31913|      2|	zval *variable_ptr;
31914|       |
31915|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
31916|      2|	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31917|      2|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31918|       |
31919|      2|	if (0 || UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (31919:6): [Folded, False: 0]
  ------------------
31920|      0|		zend_refcounted *garbage = NULL;
31921|       |
31922|      0|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
31923|      0|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
31924|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
31925|      0|		}
31926|      0|		if (garbage) {
  ------------------
  |  Branch (31926:7): [True: 0, False: 0]
  ------------------
31927|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
31928|      0|		}
31929|      2|	} else {
31930|      2|		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      2|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      2|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      2|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
31931|      2|	}
31932|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
31933|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
31934|       |
31935|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (31935:2): [True: 0, False: 0]
  |  Branch (31935:2): [True: 0, False: 0]
  ------------------
31936|      2|}
zend_execute.c:ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER:
31939|      1|{
31940|      1|	USE_OPLINE
31941|      1|	zval *value;
31942|      1|	zval *variable_ptr;
31943|       |
31944|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
31945|      1|	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31946|      1|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31947|       |
31948|      1|	if (0 || UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
  |  Branch (31948:6): [Folded, False: 0]
  ------------------
31949|      1|		zend_refcounted *garbage = NULL;
31950|       |
31951|      1|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
31952|      1|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, Folded]
  |  |  ------------------
  ------------------
31953|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
31954|      1|		}
31955|      1|		if (garbage) {
  ------------------
  |  Branch (31955:7): [True: 0, False: 1]
  ------------------
31956|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
31957|      0|		}
31958|      1|	} else {
31959|      0|		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
31960|      0|	}
31961|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
31962|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
31963|       |
31964|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (31964:2): [True: 0, False: 0]
  |  Branch (31964:2): [True: 0, False: 0]
  ------------------
31965|      1|}
zend_execute.c:ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER:
43486|  1.61k|{
43487|  1.61k|	USE_OPLINE
43488|  1.61k|	zval *value;
43489|  1.61k|	zval *variable_ptr;
43490|       |
43491|  1.61k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.61k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.61k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43492|  1.61k|	value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  1.61k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43493|  1.61k|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.61k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.61k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43494|       |
43495|  1.61k|	if (0 || UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43495:6): [Folded, False: 0]
  ------------------
43496|      0|		zend_refcounted *garbage = NULL;
43497|       |
43498|      0|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43499|      0|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
43500|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43501|      0|		}
43502|      0|		if (garbage) {
  ------------------
  |  Branch (43502:7): [True: 0, False: 0]
  ------------------
43503|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43504|      0|		}
43505|  1.61k|	} else {
43506|  1.61k|		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  864|  1.61k|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|  1.61k|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|  1.61k|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|  1.61k|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43507|  1.61k|	}
43508|       |
43509|       |
43510|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
43511|       |
43512|  1.61k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.61k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.61k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.61k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.61k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.61k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.61k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.61k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.61k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.61k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.61k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (43512:2): [True: 0, False: 0]
  |  Branch (43512:2): [True: 0, False: 0]
  ------------------
43513|  1.61k|}
zend_execute.c:ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER:
43516|  7.96k|{
43517|  7.96k|	USE_OPLINE
43518|  7.96k|	zval *value;
43519|  7.96k|	zval *variable_ptr;
43520|       |
43521|  7.96k|	SAVE_OPLINE();
  ------------------
  |  |  428|  7.96k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  7.96k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43522|  7.96k|	value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  7.96k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43523|  7.96k|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  7.96k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  7.96k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43524|       |
43525|  7.96k|	if (0 || UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
  |  Branch (43525:6): [Folded, False: 0]
  ------------------
43526|  7.96k|		zend_refcounted *garbage = NULL;
43527|       |
43528|  7.96k|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|  7.96k|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|  7.96k|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|  7.96k|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|  7.96k|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43529|  7.96k|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|  7.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7.96k, Folded]
  |  |  ------------------
  ------------------
43530|  7.96k|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|  7.96k|	do {												\
  |  | 1426|  7.96k|		zval *_z1 = (z);								\
  |  | 1427|  7.96k|		const zval *_z2 = (v);							\
  |  | 1428|  7.96k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  7.96k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  7.96k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  7.96k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  7.96k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  7.96k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  7.96k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  7.96k|	do {												\
  |  |  |  | 1408|  7.96k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  7.96k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  7.96k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  7.96k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  7.96k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  7.96k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  7.96k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 7.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  7.96k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  7.96k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  7.96k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6.30k, False: 1.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|  6.30k|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|  6.30k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|  6.30k|		}												\
  |  | 1434|  7.96k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 7.96k]
  |  |  ------------------
  ------------------
43531|  7.96k|		}
43532|  7.96k|		if (garbage) {
  ------------------
  |  Branch (43532:7): [True: 6.46k, False: 1.50k]
  ------------------
43533|  6.46k|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|  6.46k|	do { \
  |  |  737|  6.46k|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|  6.46k|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 216, False: 6.24k]
  |  |  ------------------
  |  |  739|    216|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|  6.24k|		} else { \
  |  |  741|  6.24k|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|  6.24k|		} \
  |  |  743|  6.46k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 6.46k]
  |  |  ------------------
  ------------------
43534|  6.46k|		}
43535|  7.96k|	} else {
43536|      0|		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43537|      0|	}
43538|       |
43539|       |
43540|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
43541|       |
43542|  7.96k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  7.96k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  7.96k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  7.96k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 7.96k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  7.96k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  7.96k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  7.96k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  7.96k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  7.96k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  7.96k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (43542:2): [True: 0, False: 0]
  |  Branch (43542:2): [True: 0, False: 0]
  ------------------
43543|  7.96k|}
zend_execute.c:ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER:
47303|  2.12k|{
47304|  2.12k|	USE_OPLINE
47305|  2.12k|	zval *value;
47306|  2.12k|	zval *variable_ptr;
47307|       |
47308|  2.12k|	SAVE_OPLINE();
  ------------------
  |  |  428|  2.12k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  2.12k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
47309|  2.12k|	value = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  2.12k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  2.12k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47310|  2.12k|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  2.12k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.12k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47311|       |
47312|  2.12k|	if (0 || UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47312:6): [Folded, False: 0]
  ------------------
47313|      0|		zend_refcounted *garbage = NULL;
47314|       |
47315|      0|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47316|      0|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
47317|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47318|      0|		}
47319|      0|		if (garbage) {
  ------------------
  |  Branch (47319:7): [True: 0, False: 0]
  ------------------
47320|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47321|      0|		}
47322|  2.12k|	} else {
47323|  2.12k|		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  865|  2.12k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|  2.12k|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|  2.12k|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|  2.12k|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47324|  2.12k|	}
47325|       |
47326|       |
47327|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
47328|       |
47329|  2.12k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  2.12k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  2.12k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  2.12k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2.12k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  2.12k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  2.12k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  2.12k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  2.12k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  2.12k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  2.12k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (47329:2): [True: 0, False: 0]
  |  Branch (47329:2): [True: 0, False: 0]
  ------------------
47330|  2.12k|}
zend_execute.c:ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER:
47333|  7.21k|{
47334|  7.21k|	USE_OPLINE
47335|  7.21k|	zval *value;
47336|  7.21k|	zval *variable_ptr;
47337|       |
47338|  7.21k|	SAVE_OPLINE();
  ------------------
  |  |  428|  7.21k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  7.21k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
47339|  7.21k|	value = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  7.21k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  7.21k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47340|  7.21k|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  7.21k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  7.21k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47341|       |
47342|  7.21k|	if (0 || UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
  |  Branch (47342:6): [Folded, False: 0]
  ------------------
47343|  7.21k|		zend_refcounted *garbage = NULL;
47344|       |
47345|  7.21k|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|  7.21k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|  7.21k|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|  7.21k|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|  7.21k|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47346|  7.21k|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|  7.21k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7.21k, Folded]
  |  |  ------------------
  ------------------
47347|  7.21k|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|  7.21k|	do {												\
  |  | 1426|  7.21k|		zval *_z1 = (z);								\
  |  | 1427|  7.21k|		const zval *_z2 = (v);							\
  |  | 1428|  7.21k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  7.21k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  7.21k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  7.21k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  7.21k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  7.21k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  7.21k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  7.21k|	do {												\
  |  |  |  | 1408|  7.21k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  7.21k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  7.21k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  7.21k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  7.21k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  7.21k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  7.21k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 7.21k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  7.21k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  7.21k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  7.21k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5.02k, False: 2.18k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|  5.02k|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|  5.02k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|  5.02k|		}												\
  |  | 1434|  7.21k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 7.21k]
  |  |  ------------------
  ------------------
47348|  7.21k|		}
47349|  7.21k|		if (garbage) {
  ------------------
  |  Branch (47349:7): [True: 4.87k, False: 2.33k]
  ------------------
47350|  4.87k|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|  4.87k|	do { \
  |  |  737|  4.87k|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|  4.87k|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 4.45k, False: 423]
  |  |  ------------------
  |  |  739|  4.45k|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|  4.45k|		} else { \
  |  |  741|    423|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|    423|		} \
  |  |  743|  4.87k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 4.87k]
  |  |  ------------------
  ------------------
47351|  4.87k|		}
47352|  7.21k|	} else {
47353|      0|		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47354|      0|	}
47355|       |
47356|       |
47357|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
47358|       |
47359|  7.21k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  7.21k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  7.21k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  7.21k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 7.21k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  7.21k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  7.21k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  7.21k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  7.21k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  7.21k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  7.21k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (47359:2): [True: 0, False: 0]
  |  Branch (47359:2): [True: 0, False: 0]
  ------------------
47360|  7.21k|}
zend_execute.c:ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER:
52425|    175|{
52426|    175|	USE_OPLINE
52427|    175|	zval *value;
52428|    175|	zval *variable_ptr;
52429|       |
52430|    175|	SAVE_OPLINE();
  ------------------
  |  |  428|    175|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    175|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52431|    175|	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    175|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    175|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52432|    175|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    175|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    175|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52433|       |
52434|    175|	if (0 || UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52434:6): [Folded, False: 0]
  ------------------
52435|      0|		zend_refcounted *garbage = NULL;
52436|       |
52437|      0|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52438|      0|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  ------------------
  ------------------
52439|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52440|      0|		}
52441|      0|		if (garbage) {
  ------------------
  |  Branch (52441:7): [True: 0, False: 0]
  ------------------
52442|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52443|      0|		}
52444|    175|	} else {
52445|    175|		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  867|    175|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|    175|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    175|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    175|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52446|    175|	}
52447|       |
52448|       |
52449|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
52450|       |
52451|    175|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    175|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    175|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    175|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 175, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    175|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    175|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    175|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    175|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    175|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    175|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (52451:2): [True: 0, False: 0]
  |  Branch (52451:2): [True: 0, False: 0]
  ------------------
52452|    175|}
zend_execute.c:ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER:
52455|      1|{
52456|      1|	USE_OPLINE
52457|      1|	zval *value;
52458|      1|	zval *variable_ptr;
52459|       |
52460|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52461|      1|	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52462|      1|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52463|       |
52464|      1|	if (0 || UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
  |  Branch (52464:6): [Folded, False: 0]
  ------------------
52465|      1|		zend_refcounted *garbage = NULL;
52466|       |
52467|      1|		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52468|      1|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, Folded]
  |  |  ------------------
  ------------------
52469|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
52470|      1|		}
52471|      1|		if (garbage) {
  ------------------
  |  Branch (52471:7): [True: 0, False: 1]
  ------------------
52472|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52473|      0|		}
52474|      1|	} else {
52475|      0|		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52476|      0|	}
52477|       |
52478|       |
52479|       |	/* zend_assign_to_variable() always takes care of op2, never free it! */
52480|       |
52481|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (52481:2): [True: 0, False: 0]
  |  Branch (52481:2): [True: 0, False: 0]
  ------------------
52482|      1|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER:
24908|     11|{
24909|     11|	USE_OPLINE
24910|     11|	zval *object_ptr, *orig_object_ptr;
24911|     11|	zval *value;
24912|     11|	zval *variable_ptr;
24913|     11|	zval *dim;
24914|     11|	zend_refcounted *garbage = NULL;
24915|       |
24916|     11|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24917|     11|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24918|       |
24919|     11|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 6]
  |  |  ------------------
  ------------------
24920|     11|try_assign_dim_array:
24921|     11|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     11|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     11|		zval *__zv = (zv);								\
  |  | 1538|     11|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     11|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 4, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      4|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      4|		zval *__z = (z);						\
  |  |  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      4|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      4|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      4|		}												\
  |  | 1543|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
24922|     11|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (24922:7): [Folded, False: 11]
  ------------------
24923|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24924|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (24924:8): [Folded, False: 0]
  ------------------
24925|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24926|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (24926:9): [True: 0, False: 0]
  ------------------
24927|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
24928|      0|				}
24929|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24930|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (24930:9): [True: 0, False: 0]
  |  Branch (24930:49): [True: 0, False: 0]
  ------------------
24931|      0|					zend_array_destroy(ht);
24932|      0|					goto assign_dim_error;
24933|      0|				}
24934|      0|			}
24935|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24935:8): [Folded, False: 0]
  |  Branch (24935:29): [Folded, False: 0]
  ------------------
24936|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24937|      0|			}
24938|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24939|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24940|      0|				zend_cannot_add_element();
24941|      0|				goto assign_dim_error;
24942|      0|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (24942:15): [Folded, False: 0]
  ------------------
24943|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24944|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
24945|      0|				}
24946|      0|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24946:15): [Folded, False: 0]
  ------------------
24947|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24948|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24949|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24950|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
24951|      0|					}
24952|      0|					zval_ptr_dtor_nogc(free_op_data);
24953|      0|				}
24954|      0|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24954:15): [True: 0, Folded]
  ------------------
24955|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24956|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
24957|      0|				}
24958|      0|			}
24959|     11|		} else {
24960|     11|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     11|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24961|     11|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24961:8): [True: 11, Folded]
  ------------------
24962|     11|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|     11|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     11|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24963|     11|			} else {
24964|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24965|      0|			}
24966|     11|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
24967|      0|				goto assign_dim_error;
24968|      0|			}
24969|     11|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|     11|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24970|     11|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|     11|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     11|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     11|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24971|     11|		}
24972|     11|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
24973|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24974|      0|		}
24975|     11|		if (garbage) {
  ------------------
  |  Branch (24975:7): [True: 0, False: 11]
  ------------------
24976|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24977|      0|		}
24978|     11|	} else {
24979|      6|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
24980|      5|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      5|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      5|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24981|      5|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
24982|      5|				goto try_assign_dim_array;
24983|      5|			}
24984|      5|		}
24985|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
24986|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
24987|       |
24988|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
24989|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24990|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (24990:8): [Folded, False: 0]
  ------------------
24991|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24992|      0|			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (24992:15): [True: 0, Folded]
  |  Branch (24992:39): [True: 0, False: 0]
  ------------------
24993|      0|				dim++;
24994|      0|			}
24995|       |
24996|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24997|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (24997:8): [Folded, False: 0]
  ------------------
24998|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24999|      0|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24999:15): [Folded, False: 0]
  ------------------
25000|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25001|      0|			}
25002|       |
25003|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25004|       |
25005|       |
25006|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25007|      0|				zend_objects_store_del(obj);
25008|      0|			}
25009|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25010|      0|			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25010:8): [Folded, False: 0]
  ------------------
25011|      0|				zend_use_new_element_for_string();
25012|       |
25013|       |
25014|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25015|      0|			} else {
25016|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25017|      0|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25018|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25019|       |
25020|       |
25021|      0|			}
25022|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
25023|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25024|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      1|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25025|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (25025:8): [True: 0, False: 0]
  ------------------
25026|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25027|       |
25028|       |
25029|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25030|      1|			} else {
25031|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
25032|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
25033|       |
25034|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
25035|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25036|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25037|      0|					zend_false_to_array_deprecated();
25038|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25039|      0|						zend_array_destroy(ht);
25040|      0|						goto assign_dim_error;
25041|      0|					}
25042|      0|				}
25043|      1|				goto try_assign_dim_array;
25044|      1|			}
25045|      1|		} else {
25046|      0|			zend_use_scalar_as_array();
25047|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25048|      0|assign_dim_error:
25049|       |
25050|       |
25051|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25052|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25053|      0|			}
25054|      0|		}
25055|      1|	}
25056|     11|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25056:6): [True: 11, Folded]
  ------------------
25057|       |
25058|       |
25059|     11|	}
25060|     11|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     11|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     11|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25061|       |	/* assign_dim has two opcodes! */
25062|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     11|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  ------------------
  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     11|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     11|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25062:2): [True: 0, False: 0]
  |  Branch (25062:2): [True: 0, False: 0]
  ------------------
25063|     11|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER:
25066|     12|{
25067|     12|	USE_OPLINE
25068|     12|	zval *object_ptr, *orig_object_ptr;
25069|     12|	zval *value;
25070|     12|	zval *variable_ptr;
25071|     12|	zval *dim;
25072|     12|	zend_refcounted *garbage = NULL;
25073|       |
25074|     12|	SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25075|     12|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25076|       |
25077|     12|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 6]
  |  |  ------------------
  ------------------
25078|     11|try_assign_dim_array:
25079|     11|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     11|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     11|		zval *__zv = (zv);								\
  |  | 1538|     11|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     11|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 4, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      4|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      4|		zval *__z = (z);						\
  |  |  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      4|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      4|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      4|		}												\
  |  | 1543|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
25080|     11|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25080:7): [Folded, False: 11]
  ------------------
25081|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25082|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25082:8): [Folded, False: 0]
  ------------------
25083|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25084|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (25084:9): [True: 0, False: 0]
  ------------------
25085|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25086|      0|				}
25087|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25088|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (25088:9): [True: 0, False: 0]
  |  Branch (25088:49): [True: 0, False: 0]
  ------------------
25089|      0|					zend_array_destroy(ht);
25090|      0|					goto assign_dim_error;
25091|      0|				}
25092|      0|			}
25093|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (25093:8): [Folded, False: 0]
  |  Branch (25093:31): [Folded, False: 0]
  ------------------
25094|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25095|      0|			}
25096|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25097|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25098|      0|				zend_cannot_add_element();
25099|      0|				goto assign_dim_error;
25100|      0|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (25100:15): [Folded, False: 0]
  ------------------
25101|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25102|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25103|      0|				}
25104|      0|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (25104:15): [Folded, False: 0]
  ------------------
25105|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25106|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25107|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25108|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25109|      0|					}
25110|      0|					zval_ptr_dtor_nogc(free_op_data);
25111|      0|				}
25112|      0|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25112:15): [Folded, False: 0]
  ------------------
25113|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25114|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25115|      0|				}
25116|      0|			}
25117|     11|		} else {
25118|     11|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     11|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25119|     11|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25119:8): [True: 11, Folded]
  ------------------
25120|     11|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|     11|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     11|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25121|     11|			} else {
25122|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25123|      0|			}
25124|     11|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
25125|      0|				goto assign_dim_error;
25126|      0|			}
25127|     11|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25128|     11|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|     11|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     11|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     11|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25129|     11|		}
25130|     11|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 6]
  |  |  ------------------
  ------------------
25131|      5|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
25132|      5|		}
25133|     11|		if (garbage) {
  ------------------
  |  Branch (25133:7): [True: 2, False: 9]
  ------------------
25134|      2|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      2|	do { \
  |  |  737|      2|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      2|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 2, False: 0]
  |  |  ------------------
  |  |  739|      2|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      2|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
25135|      2|		}
25136|     11|	} else {
25137|      6|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
25138|      1|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25139|      1|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25140|      0|				goto try_assign_dim_array;
25141|      0|			}
25142|      1|		}
25143|      6|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
25144|      1|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
25145|       |
25146|      1|			GC_ADDREF(obj);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25147|      1|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25148|      1|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25148:8): [Folded, False: 1]
  ------------------
25149|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25150|      1|			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      1|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (25150:15): [True: 1, Folded]
  |  Branch (25150:39): [True: 0, False: 1]
  ------------------
25151|      0|				dim++;
25152|      0|			}
25153|       |
25154|      1|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25155|      1|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25155:8): [Folded, False: 1]
  ------------------
25156|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25157|      1|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (25157:15): [Folded, False: 1]
  ------------------
25158|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25159|      0|			}
25160|       |
25161|      1|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25162|       |
25163|      1|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25164|      1|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25165|      0|				zend_objects_store_del(obj);
25166|      0|			}
25167|      5|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
25168|      0|			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25168:8): [Folded, False: 0]
  ------------------
25169|      0|				zend_use_new_element_for_string();
25170|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25171|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25172|      0|			} else {
25173|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25174|      0|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25175|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25176|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25177|      0|			}
25178|      5|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
25179|      5|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      5|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     10|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25180|      1|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      6|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      1|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25181|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (25181:8): [True: 0, False: 0]
  ------------------
25182|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25183|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25184|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25185|      5|			} else {
25186|      5|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      5|	_zend_new_array(size)
  ------------------
25187|      5|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
25188|       |
25189|      5|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      5|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      5|		zend_array *__arr = (a);				\
  |  | 1127|      5|		zval *__z = (z);						\
  |  | 1128|      5|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      5|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      5|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      5|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
25190|      5|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
25191|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25192|      0|					zend_false_to_array_deprecated();
25193|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25194|      0|						zend_array_destroy(ht);
25195|      0|						goto assign_dim_error;
25196|      0|					}
25197|      0|				}
25198|      5|				goto try_assign_dim_array;
25199|      5|			}
25200|      5|		} else {
25201|      0|			zend_use_scalar_as_array();
25202|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25203|      0|assign_dim_error:
25204|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25205|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25206|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25207|      0|			}
25208|      0|		}
25209|      6|	}
25210|     12|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25210:6): [True: 12, Folded]
  ------------------
25211|       |
25212|       |
25213|     12|	}
25214|     12|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25215|       |	/* assign_dim has two opcodes! */
25216|     12|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     12|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     12|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 12, Folded]
  |  |  ------------------
  |  | 5759|     12|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     12|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     12|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     12|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25216:2): [True: 0, False: 0]
  |  Branch (25216:2): [True: 0, False: 0]
  ------------------
25217|     12|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER:
25220|      2|{
25221|      2|	USE_OPLINE
25222|      2|	zval *object_ptr, *orig_object_ptr;
25223|      2|	zval *value;
25224|      2|	zval *variable_ptr;
25225|      2|	zval *dim;
25226|      2|	zend_refcounted *garbage = NULL;
25227|       |
25228|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25229|      2|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25230|       |
25231|      2|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
25232|      2|try_assign_dim_array:
25233|      2|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      2|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      2|		zval *__zv = (zv);								\
  |  | 1538|      2|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      2|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
25234|      2|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25234:7): [Folded, False: 2]
  ------------------
25235|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25236|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25236:8): [True: 0, Folded]
  ------------------
25237|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25238|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (25238:9): [True: 0, False: 0]
  ------------------
25239|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25240|      0|				}
25241|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25242|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (25242:9): [True: 0, False: 0]
  |  Branch (25242:49): [True: 0, False: 0]
  ------------------
25243|      0|					zend_array_destroy(ht);
25244|      0|					goto assign_dim_error;
25245|      0|				}
25246|      0|			}
25247|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (25247:8): [True: 0, Folded]
  |  Branch (25247:26): [Folded, False: 0]
  ------------------
25248|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25249|      0|			}
25250|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25251|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25252|      0|				zend_cannot_add_element();
25253|      0|				goto assign_dim_error;
25254|      0|			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (25254:15): [True: 0, Folded]
  ------------------
25255|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25256|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25257|      0|				}
25258|      0|			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (25258:15): [Folded, False: 0]
  ------------------
25259|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25260|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25261|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25262|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25263|      0|					}
25264|      0|					zval_ptr_dtor_nogc(free_op_data);
25265|      0|				}
25266|      0|			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25266:15): [Folded, False: 0]
  ------------------
25267|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25268|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25269|      0|				}
25270|      0|			}
25271|      2|		} else {
25272|      2|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25273|      2|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25273:8): [True: 2, Folded]
  ------------------
25274|      2|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25275|      2|			} else {
25276|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25277|      0|			}
25278|      2|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
25279|      0|				goto assign_dim_error;
25280|      0|			}
25281|      2|			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25282|      2|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      2|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      2|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      2|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25283|      2|		}
25284|      2|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
25285|      2|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
25286|      2|		}
25287|      2|		if (garbage) {
  ------------------
  |  Branch (25287:7): [True: 0, False: 2]
  ------------------
25288|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25289|      0|		}
25290|      2|	} else {
25291|      1|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25292|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25293|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25294|      0|				goto try_assign_dim_array;
25295|      0|			}
25296|      0|		}
25297|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25298|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
25299|       |
25300|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25301|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25302|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25302:8): [Folded, False: 0]
  ------------------
25303|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25304|      0|			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (25304:15): [True: 0, Folded]
  |  Branch (25304:39): [True: 0, False: 0]
  ------------------
25305|      0|				dim++;
25306|      0|			}
25307|       |
25308|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25309|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25309:8): [True: 0, Folded]
  ------------------
25310|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25311|      0|			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (25311:15): [True: 0, Folded]
  ------------------
25312|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25313|      0|			}
25314|       |
25315|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25316|       |
25317|       |
25318|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25319|      0|				zend_objects_store_del(obj);
25320|      0|			}
25321|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25322|      0|			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25322:8): [Folded, False: 0]
  ------------------
25323|      0|				zend_use_new_element_for_string();
25324|       |
25325|       |
25326|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25327|      0|			} else {
25328|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25329|      0|				value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25330|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25331|       |
25332|       |
25333|      0|			}
25334|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
25335|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25336|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      1|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25337|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (25337:8): [True: 0, False: 0]
  ------------------
25338|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25339|       |
25340|       |
25341|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25342|      1|			} else {
25343|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
25344|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
25345|       |
25346|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
25347|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25348|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
25349|      0|					zend_false_to_array_deprecated();
25350|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25351|      0|						zend_array_destroy(ht);
25352|      0|						goto assign_dim_error;
25353|      0|					}
25354|      0|				}
25355|      1|				goto try_assign_dim_array;
25356|      1|			}
25357|      1|		} else {
25358|      0|			zend_use_scalar_as_array();
25359|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25360|      0|assign_dim_error:
25361|       |
25362|       |
25363|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25364|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25365|      0|			}
25366|      0|		}
25367|      1|	}
25368|      2|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25368:6): [True: 2, Folded]
  ------------------
25369|       |
25370|       |
25371|      2|	}
25372|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25373|       |	/* assign_dim has two opcodes! */
25374|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25374:2): [True: 0, False: 0]
  |  Branch (25374:2): [True: 0, False: 0]
  ------------------
25375|      2|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_CONST_HANDLER:
27613|      1|{
27614|      1|	USE_OPLINE
27615|      1|	zval *object_ptr, *orig_object_ptr;
27616|      1|	zval *value;
27617|      1|	zval *variable_ptr;
27618|      1|	zval *dim;
27619|      1|	zend_refcounted *garbage = NULL;
27620|       |
27621|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
27622|      1|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27623|       |
27624|      1|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27625|      1|try_assign_dim_array:
27626|      1|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
27627|      1|		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (27627:7): [Folded, False: 1]
  ------------------
27628|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
27629|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (27629:8): [Folded, False: 0]
  ------------------
27630|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27631|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (27631:9): [True: 0, False: 0]
  ------------------
27632|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
27633|      0|				}
27634|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27635|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (27635:9): [True: 0, False: 0]
  |  Branch (27635:49): [True: 0, False: 0]
  ------------------
27636|      0|					zend_array_destroy(ht);
27637|      0|					goto assign_dim_error;
27638|      0|				}
27639|      0|			}
27640|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27640:8): [Folded, False: 0]
  |  Branch (27640:29): [Folded, False: 0]
  ------------------
27641|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27642|      0|			}
27643|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27644|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27645|      0|				zend_cannot_add_element();
27646|      0|				goto assign_dim_error;
27647|      0|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (27647:15): [Folded, False: 0]
  ------------------
27648|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27649|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
27650|      0|				}
27651|      0|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27651:15): [Folded, False: 0]
  ------------------
27652|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27653|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27654|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27655|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
27656|      0|					}
27657|      0|					zval_ptr_dtor_nogc(free_op_data);
27658|      0|				}
27659|      0|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (27659:15): [True: 0, Folded]
  ------------------
27660|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27661|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
27662|      0|				}
27663|      0|			}
27664|      1|		} else {
27665|      1|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27666|      1|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (27666:8): [Folded, False: 1]
  ------------------
27667|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27668|      1|			} else {
27669|      1|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27670|      1|			}
27671|      1|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27672|      0|				goto assign_dim_error;
27673|      0|			}
27674|      1|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
27675|      1|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27676|      1|		}
27677|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27678|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27679|      0|		}
27680|      1|		if (garbage) {
  ------------------
  |  Branch (27680:7): [True: 0, False: 1]
  ------------------
27681|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27682|      0|		}
27683|      1|	} else {
27684|      1|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
27685|      1|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27686|      1|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27687|      0|				goto try_assign_dim_array;
27688|      0|			}
27689|      1|		}
27690|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27691|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
27692|       |
27693|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
27694|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27695|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (27695:8): [Folded, False: 0]
  ------------------
27696|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27697|      0|			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (27697:15): [Folded, False: 0]
  |  Branch (27697:41): [True: 0, False: 0]
  ------------------
27698|      0|				dim++;
27699|      0|			}
27700|       |
27701|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
27702|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (27702:8): [Folded, False: 0]
  ------------------
27703|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27704|      0|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27704:15): [Folded, False: 0]
  ------------------
27705|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27706|      0|			}
27707|       |
27708|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27709|       |
27710|       |
27711|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27712|      0|				zend_objects_store_del(obj);
27713|      0|			}
27714|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27715|      0|			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (27715:8): [Folded, False: 0]
  ------------------
27716|      0|				zend_use_new_element_for_string();
27717|       |
27718|       |
27719|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27720|      0|			} else {
27721|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27722|      0|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
27723|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27724|       |
27725|       |
27726|      0|			}
27727|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
27728|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27729|      1|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      2|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      1|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27730|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (27730:8): [True: 0, False: 0]
  ------------------
27731|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27732|       |
27733|       |
27734|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27735|      1|			} else {
27736|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
27737|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
27738|       |
27739|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
27740|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27741|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
27742|      0|					zend_false_to_array_deprecated();
27743|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27744|      0|						zend_array_destroy(ht);
27745|      0|						goto assign_dim_error;
27746|      0|					}
27747|      0|				}
27748|      1|				goto try_assign_dim_array;
27749|      1|			}
27750|      1|		} else {
27751|      0|			zend_use_scalar_as_array();
27752|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27753|      0|assign_dim_error:
27754|       |
27755|       |
27756|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27757|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27758|      0|			}
27759|      0|		}
27760|      1|	}
27761|      1|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (27761:6): [True: 1, Folded]
  ------------------
27762|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27763|      1|	}
27764|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27765|       |	/* assign_dim has two opcodes! */
27766|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (27766:2): [True: 0, False: 0]
  |  Branch (27766:2): [True: 0, False: 0]
  ------------------
27767|      1|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_TMP_OP_DATA_TMP_HANDLER:
27770|      1|{
27771|      1|	USE_OPLINE
27772|      1|	zval *object_ptr, *orig_object_ptr;
27773|      1|	zval *value;
27774|      1|	zval *variable_ptr;
27775|      1|	zval *dim;
27776|      1|	zend_refcounted *garbage = NULL;
27777|       |
27778|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
27779|      1|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27780|       |
27781|      1|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27782|      1|try_assign_dim_array:
27783|      1|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
27784|      1|		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (27784:7): [Folded, False: 1]
  ------------------
27785|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27786|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (27786:8): [Folded, False: 0]
  ------------------
27787|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27788|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (27788:9): [True: 0, False: 0]
  ------------------
27789|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
27790|      0|				}
27791|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27792|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (27792:9): [True: 0, False: 0]
  |  Branch (27792:49): [True: 0, False: 0]
  ------------------
27793|      0|					zend_array_destroy(ht);
27794|      0|					goto assign_dim_error;
27795|      0|				}
27796|      0|			}
27797|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27797:8): [Folded, False: 0]
  |  Branch (27797:31): [Folded, False: 0]
  ------------------
27798|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27799|      0|			}
27800|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27801|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27802|      0|				zend_cannot_add_element();
27803|      0|				goto assign_dim_error;
27804|      0|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (27804:15): [Folded, False: 0]
  ------------------
27805|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27806|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
27807|      0|				}
27808|      0|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27808:15): [Folded, False: 0]
  ------------------
27809|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27810|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27811|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27812|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
27813|      0|					}
27814|      0|					zval_ptr_dtor_nogc(free_op_data);
27815|      0|				}
27816|      0|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (27816:15): [Folded, False: 0]
  ------------------
27817|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27818|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
27819|      0|				}
27820|      0|			}
27821|      1|		} else {
27822|      1|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27823|      1|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (27823:8): [Folded, False: 1]
  ------------------
27824|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27825|      1|			} else {
27826|      1|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27827|      1|			}
27828|      1|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27829|      0|				goto assign_dim_error;
27830|      0|			}
27831|      1|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27832|      1|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27833|      1|		}
27834|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27835|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27836|      0|		}
27837|      1|		if (garbage) {
  ------------------
  |  Branch (27837:7): [True: 0, False: 1]
  ------------------
27838|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27839|      0|		}
27840|      1|	} else {
27841|      1|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
27842|      1|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27843|      1|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27844|      0|				goto try_assign_dim_array;
27845|      0|			}
27846|      1|		}
27847|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27848|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
27849|       |
27850|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
27851|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27852|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (27852:8): [Folded, False: 0]
  ------------------
27853|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27854|      0|			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (27854:15): [Folded, False: 0]
  |  Branch (27854:41): [True: 0, False: 0]
  ------------------
27855|      0|				dim++;
27856|      0|			}
27857|       |
27858|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27859|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (27859:8): [Folded, False: 0]
  ------------------
27860|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27861|      0|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27861:15): [Folded, False: 0]
  ------------------
27862|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27863|      0|			}
27864|       |
27865|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27866|       |
27867|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27868|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27869|      0|				zend_objects_store_del(obj);
27870|      0|			}
27871|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27872|      0|			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (27872:8): [Folded, False: 0]
  ------------------
27873|      0|				zend_use_new_element_for_string();
27874|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27875|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27876|      0|			} else {
27877|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27878|      0|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27879|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27880|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27881|      0|			}
27882|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
27883|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
27884|      1|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      2|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      1|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27885|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (27885:8): [True: 0, False: 0]
  ------------------
27886|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27887|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27888|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27889|      1|			} else {
27890|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
27891|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
27892|       |
27893|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
27894|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
27895|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
27896|      0|					zend_false_to_array_deprecated();
27897|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27898|      0|						zend_array_destroy(ht);
27899|      0|						goto assign_dim_error;
27900|      0|					}
27901|      0|				}
27902|      1|				goto try_assign_dim_array;
27903|      1|			}
27904|      1|		} else {
27905|      0|			zend_use_scalar_as_array();
27906|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27907|      0|assign_dim_error:
27908|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27909|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
27910|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
27911|      0|			}
27912|      0|		}
27913|      1|	}
27914|      1|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (27914:6): [True: 1, Folded]
  ------------------
27915|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27916|      1|	}
27917|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27918|       |	/* assign_dim has two opcodes! */
27919|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (27919:2): [True: 0, False: 0]
  |  Branch (27919:2): [True: 0, False: 0]
  ------------------
27920|      1|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER:
28943|      3|{
28944|      3|	USE_OPLINE
28945|      3|	zval *object_ptr, *orig_object_ptr;
28946|      3|	zval *value;
28947|      3|	zval *variable_ptr;
28948|      3|	zval *dim;
28949|      3|	zend_refcounted *garbage = NULL;
28950|       |
28951|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28952|      3|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28953|       |
28954|      3|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
28955|      3|try_assign_dim_array:
28956|      3|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      3|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      3|		zval *__zv = (zv);								\
  |  | 1538|      3|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      3|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      2|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      2|		zval *__z = (z);						\
  |  |  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      2|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      2|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      2|		}												\
  |  | 1543|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
28957|      3|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (28957:7): [True: 3, Folded]
  ------------------
28958|      3|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
28959|      3|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (28959:8): [Folded, False: 3]
  ------------------
28960|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28961|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (28961:9): [True: 0, False: 0]
  ------------------
28962|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
28963|      0|				}
28964|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28965|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (28965:9): [True: 0, False: 0]
  |  Branch (28965:49): [True: 0, False: 0]
  ------------------
28966|      0|					zend_array_destroy(ht);
28967|      0|					goto assign_dim_error;
28968|      0|				}
28969|      0|			}
28970|      3|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (28970:8): [Folded, False: 0]
  |  Branch (28970:29): [Folded, False: 0]
  ------------------
28971|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
28972|      0|			}
28973|      3|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28974|      3|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
28975|      0|				zend_cannot_add_element();
28976|      0|				goto assign_dim_error;
28977|      3|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (28977:15): [Folded, False: 3]
  ------------------
28978|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28979|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
28980|      0|				}
28981|      3|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (28981:15): [Folded, False: 3]
  ------------------
28982|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28983|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28984|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28985|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
28986|      0|					}
28987|      0|					zval_ptr_dtor_nogc(free_op_data);
28988|      0|				}
28989|      3|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28989:15): [True: 3, Folded]
  ------------------
28990|      3|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
28991|      1|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
28992|      1|				}
28993|      3|			}
28994|      3|		} else {
28995|      0|			dim = NULL;
28996|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28996:8): [Folded, False: 0]
  ------------------
28997|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28998|      0|			} else {
28999|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29000|      0|			}
29001|      0|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29002|      0|				goto assign_dim_error;
29003|      0|			}
29004|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
29005|      0|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29006|      0|		}
29007|      3|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
29008|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29009|      0|		}
29010|      3|		if (garbage) {
  ------------------
  |  Branch (29010:7): [True: 0, False: 3]
  ------------------
29011|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29012|      0|		}
29013|      3|	} else {
29014|      2|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
29015|      2|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29016|      2|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
29017|      2|				goto try_assign_dim_array;
29018|      2|			}
29019|      2|		}
29020|      0|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29021|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
29022|       |
29023|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29024|      0|			dim = NULL;
29025|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29025:8): [Folded, False: 0]
  ------------------
29026|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29027|      0|			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (29027:15): [Folded, False: 0]
  |  Branch (29027:40): [True: 0, False: 0]
  ------------------
29028|      0|				dim++;
29029|      0|			}
29030|       |
29031|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
29032|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29032:8): [Folded, False: 0]
  ------------------
29033|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29034|      0|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29034:15): [Folded, False: 0]
  ------------------
29035|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29036|      0|			}
29037|       |
29038|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29039|       |
29040|       |
29041|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29042|      0|				zend_objects_store_del(obj);
29043|      0|			}
29044|      0|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29045|      0|			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29045:8): [True: 0, Folded]
  ------------------
29046|      0|				zend_use_new_element_for_string();
29047|       |
29048|       |
29049|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29050|      0|			} else {
29051|      0|				dim = NULL;
29052|      0|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
29053|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29054|       |
29055|       |
29056|      0|			}
29057|      0|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29058|      0|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29059|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      0|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29060|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (29060:8): [True: 0, False: 0]
  ------------------
29061|      0|				dim = NULL;
29062|       |
29063|       |
29064|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29065|      0|			} else {
29066|      0|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
29067|      0|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
29068|       |
29069|      0|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29070|      0|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29071|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29072|      0|					zend_false_to_array_deprecated();
29073|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29074|      0|						zend_array_destroy(ht);
29075|      0|						goto assign_dim_error;
29076|      0|					}
29077|      0|				}
29078|      0|				goto try_assign_dim_array;
29079|      0|			}
29080|      0|		} else {
29081|      0|			zend_use_scalar_as_array();
29082|      0|			dim = NULL;
29083|      0|assign_dim_error:
29084|       |
29085|       |
29086|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29087|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29088|      0|			}
29089|      0|		}
29090|      0|	}
29091|      3|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29091:6): [Folded, False: 3]
  ------------------
29092|       |
29093|       |
29094|      0|	}
29095|      3|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29096|       |	/* assign_dim has two opcodes! */
29097|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      3|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  ------------------
  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      3|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      3|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29097:2): [True: 0, False: 0]
  |  Branch (29097:2): [True: 0, False: 0]
  ------------------
29098|      3|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER:
29101|     12|{
29102|     12|	USE_OPLINE
29103|     12|	zval *object_ptr, *orig_object_ptr;
29104|     12|	zval *value;
29105|     12|	zval *variable_ptr;
29106|     12|	zval *dim;
29107|     12|	zend_refcounted *garbage = NULL;
29108|       |
29109|     12|	SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29110|     12|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29111|       |
29112|     12|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 11]
  |  |  ------------------
  ------------------
29113|     12|try_assign_dim_array:
29114|     12|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     12|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     12|		zval *__zv = (zv);								\
  |  | 1538|     12|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     12|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     12|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     12|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 4, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      4|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      4|		zval *__z = (z);						\
  |  |  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      4|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      4|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      4|		}												\
  |  | 1543|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
29115|     12|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29115:7): [True: 12, Folded]
  ------------------
29116|     12|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29117|     12|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     24|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29117:8): [Folded, False: 12]
  ------------------
29118|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29119|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (29119:9): [True: 0, False: 0]
  ------------------
29120|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29121|      0|				}
29122|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29123|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (29123:9): [True: 0, False: 0]
  |  Branch (29123:49): [True: 0, False: 0]
  ------------------
29124|      0|					zend_array_destroy(ht);
29125|      0|					goto assign_dim_error;
29126|      0|				}
29127|      0|			}
29128|     12|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|     24|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29128:8): [Folded, False: 0]
  |  Branch (29128:31): [Folded, False: 0]
  ------------------
29129|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29130|      0|			}
29131|     12|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|     12|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     12|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     12|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29132|     12|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
29133|      0|				zend_cannot_add_element();
29134|      0|				goto assign_dim_error;
29135|     12|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (29135:15): [Folded, False: 12]
  ------------------
29136|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29137|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29138|      0|				}
29139|     12|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|     12|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29139:15): [Folded, False: 12]
  ------------------
29140|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29141|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29142|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29143|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29144|      0|					}
29145|      0|					zval_ptr_dtor_nogc(free_op_data);
29146|      0|				}
29147|     12|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29147:15): [Folded, False: 12]
  ------------------
29148|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29149|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29150|      0|				}
29151|      0|			}
29152|     12|		} else {
29153|      0|			dim = NULL;
29154|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29154:8): [Folded, False: 0]
  ------------------
29155|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29156|      0|			} else {
29157|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29158|      0|			}
29159|      0|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29160|      0|				goto assign_dim_error;
29161|      0|			}
29162|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29163|      0|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29164|      0|		}
29165|     12|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 6]
  |  |  ------------------
  ------------------
29166|      6|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
29167|      6|		}
29168|     12|		if (garbage) {
  ------------------
  |  Branch (29168:7): [True: 0, False: 12]
  ------------------
29169|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29170|      0|		}
29171|     12|	} else {
29172|     11|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 4]
  |  |  ------------------
  ------------------
29173|      7|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      7|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      7|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      7|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29174|      7|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 2]
  |  |  ------------------
  ------------------
29175|      5|				goto try_assign_dim_array;
29176|      5|			}
29177|      7|		}
29178|      6|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
29179|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
29180|       |
29181|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29182|      0|			dim = NULL;
29183|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29183:8): [Folded, False: 0]
  ------------------
29184|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29185|      0|			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (29185:15): [Folded, False: 0]
  |  Branch (29185:40): [True: 0, False: 0]
  ------------------
29186|      0|				dim++;
29187|      0|			}
29188|       |
29189|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29190|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29190:8): [Folded, False: 0]
  ------------------
29191|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29192|      0|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29192:15): [Folded, False: 0]
  ------------------
29193|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29194|      0|			}
29195|       |
29196|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29197|       |
29198|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29199|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29200|      0|				zend_objects_store_del(obj);
29201|      0|			}
29202|      6|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
29203|      0|			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29203:8): [True: 0, Folded]
  ------------------
29204|      0|				zend_use_new_element_for_string();
29205|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29206|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29207|      0|			} else {
29208|      0|				dim = NULL;
29209|      0|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29210|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29211|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29212|      0|			}
29213|      6|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
29214|      6|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      6|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     12|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29215|      2|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      8|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      2|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
29216|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (29216:8): [True: 0, False: 0]
  ------------------
29217|      0|				dim = NULL;
29218|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29219|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29220|      6|			} else {
29221|      6|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      6|	_zend_new_array(size)
  ------------------
29222|      6|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
29223|       |
29224|      6|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      6|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      6|		zend_array *__arr = (a);				\
  |  | 1127|      6|		zval *__z = (z);						\
  |  | 1128|      6|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      6|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      6|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      6|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      6|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
29225|      6|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
29226|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29227|      0|					zend_false_to_array_deprecated();
29228|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29229|      0|						zend_array_destroy(ht);
29230|      0|						goto assign_dim_error;
29231|      0|					}
29232|      0|				}
29233|      6|				goto try_assign_dim_array;
29234|      6|			}
29235|      6|		} else {
29236|      0|			zend_use_scalar_as_array();
29237|      0|			dim = NULL;
29238|      0|assign_dim_error:
29239|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29240|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29241|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29242|      0|			}
29243|      0|		}
29244|      6|	}
29245|     12|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29245:6): [Folded, False: 12]
  ------------------
29246|       |
29247|       |
29248|      0|	}
29249|     12|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29250|       |	/* assign_dim has two opcodes! */
29251|     12|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     12|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     12|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 12, Folded]
  |  |  ------------------
  |  | 5759|     12|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     12|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     12|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     12|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29251:2): [True: 0, False: 0]
  |  Branch (29251:2): [True: 0, False: 0]
  ------------------
29252|     12|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER:
29255|      1|{
29256|      1|	USE_OPLINE
29257|      1|	zval *object_ptr, *orig_object_ptr;
29258|      1|	zval *value;
29259|      1|	zval *variable_ptr;
29260|      1|	zval *dim;
29261|      1|	zend_refcounted *garbage = NULL;
29262|       |
29263|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29264|      1|	orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29265|       |
29266|      1|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29267|      1|try_assign_dim_array:
29268|      1|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
29269|      1|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29269:7): [True: 1, Folded]
  ------------------
29270|      1|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29271|      1|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (29271:8): [True: 1, Folded]
  ------------------
29272|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29273|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (29273:9): [True: 0, False: 0]
  ------------------
29274|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29275|      0|				}
29276|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29277|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (29277:9): [True: 0, False: 0]
  |  Branch (29277:49): [True: 0, False: 0]
  ------------------
29278|      0|					zend_array_destroy(ht);
29279|      0|					goto assign_dim_error;
29280|      0|				}
29281|      0|			}
29282|      1|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29282:8): [True: 1, Folded]
  |  Branch (29282:26): [Folded, False: 0]
  ------------------
29283|      1|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
29284|      1|			}
29285|      1|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29286|      1|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29287|      0|				zend_cannot_add_element();
29288|      0|				goto assign_dim_error;
29289|      1|			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (29289:15): [True: 1, Folded]
  ------------------
29290|      1|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29291|      1|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29292|      1|				}
29293|      1|			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29293:15): [Folded, False: 0]
  ------------------
29294|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29295|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29296|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29297|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29298|      0|					}
29299|      0|					zval_ptr_dtor_nogc(free_op_data);
29300|      0|				}
29301|      0|			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29301:15): [Folded, False: 0]
  ------------------
29302|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29303|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29304|      0|				}
29305|      0|			}
29306|      1|		} else {
29307|      0|			dim = NULL;
29308|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29308:8): [Folded, False: 0]
  ------------------
29309|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29310|      0|			} else {
29311|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29312|      0|			}
29313|      0|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29314|      0|				goto assign_dim_error;
29315|      0|			}
29316|      0|			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29317|      0|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29318|      0|		}
29319|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29320|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29321|      0|		}
29322|      1|		if (garbage) {
  ------------------
  |  Branch (29322:7): [True: 0, False: 1]
  ------------------
29323|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29324|      0|		}
29325|      1|	} else {
29326|      1|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29327|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29328|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29329|      0|				goto try_assign_dim_array;
29330|      0|			}
29331|      0|		}
29332|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29333|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
29334|       |
29335|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29336|      0|			dim = NULL;
29337|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29337:8): [Folded, False: 0]
  ------------------
29338|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29339|      0|			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (29339:15): [Folded, False: 0]
  |  Branch (29339:40): [True: 0, False: 0]
  ------------------
29340|      0|				dim++;
29341|      0|			}
29342|       |
29343|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29344|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29344:8): [True: 0, Folded]
  ------------------
29345|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29346|      0|			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29346:15): [True: 0, Folded]
  ------------------
29347|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29348|      0|			}
29349|       |
29350|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29351|       |
29352|       |
29353|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29354|      0|				zend_objects_store_del(obj);
29355|      0|			}
29356|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29357|      0|			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29357:8): [True: 0, Folded]
  ------------------
29358|      0|				zend_use_new_element_for_string();
29359|       |
29360|       |
29361|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29362|      0|			} else {
29363|      0|				dim = NULL;
29364|      0|				value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29365|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29366|       |
29367|       |
29368|      0|			}
29369|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
29370|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29371|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      1|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29372|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (29372:8): [True: 0, False: 0]
  ------------------
29373|      0|				dim = NULL;
29374|       |
29375|       |
29376|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29377|      1|			} else {
29378|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
29379|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
29380|       |
29381|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
29382|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
29383|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
29384|      0|					zend_false_to_array_deprecated();
29385|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29386|      0|						zend_array_destroy(ht);
29387|      0|						goto assign_dim_error;
29388|      0|					}
29389|      0|				}
29390|      1|				goto try_assign_dim_array;
29391|      1|			}
29392|      1|		} else {
29393|      0|			zend_use_scalar_as_array();
29394|      0|			dim = NULL;
29395|      0|assign_dim_error:
29396|       |
29397|       |
29398|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29399|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29400|      0|			}
29401|      0|		}
29402|      1|	}
29403|      1|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29403:6): [Folded, False: 1]
  ------------------
29404|       |
29405|       |
29406|      0|	}
29407|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29408|       |	/* assign_dim has two opcodes! */
29409|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29409:2): [True: 0, False: 0]
  |  Branch (29409:2): [True: 0, False: 0]
  ------------------
29410|      1|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER:
43013|     52|{
43014|     52|	USE_OPLINE
43015|     52|	zval *object_ptr, *orig_object_ptr;
43016|     52|	zval *value;
43017|     52|	zval *variable_ptr;
43018|     52|	zval *dim;
43019|     52|	zend_refcounted *garbage = NULL;
43020|       |
43021|     52|	SAVE_OPLINE();
  ------------------
  |  |  428|     52|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     52|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43022|     52|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     52|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     52|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43023|       |
43024|     52|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     52|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 34]
  |  |  ------------------
  ------------------
43025|     34|try_assign_dim_array:
43026|     34|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     34|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     34|		zval *__zv = (zv);								\
  |  | 1538|     34|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     34|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     34|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     34|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 8, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      8|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      8|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      8|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      8|		zval *__z = (z);						\
  |  |  |  | 1128|      8|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      8|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      8|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      8|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      8|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      8|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      8|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      8|		}												\
  |  | 1543|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
43027|     34|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|     34|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|     34|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43027:7): [Folded, False: 34]
  ------------------
43028|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43029|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43029:8): [Folded, False: 0]
  ------------------
43030|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43031|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (43031:9): [True: 0, False: 0]
  ------------------
43032|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43033|      0|				}
43034|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43035|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43035:9): [True: 0, False: 0]
  |  Branch (43035:49): [True: 0, False: 0]
  ------------------
43036|      0|					zend_array_destroy(ht);
43037|      0|					goto assign_dim_error;
43038|      0|				}
43039|      0|			}
43040|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43040:8): [Folded, False: 0]
  |  Branch (43040:29): [Folded, False: 0]
  ------------------
43041|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43042|      0|			}
43043|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43044|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43045|      0|				zend_cannot_add_element();
43046|      0|				goto assign_dim_error;
43047|      0|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43047:15): [Folded, False: 0]
  ------------------
43048|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43049|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43050|      0|				}
43051|      0|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43051:15): [Folded, False: 0]
  ------------------
43052|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43053|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43054|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43055|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43056|      0|					}
43057|      0|					zval_ptr_dtor_nogc(free_op_data);
43058|      0|				}
43059|      0|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43059:15): [True: 0, Folded]
  ------------------
43060|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43061|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43062|      0|				}
43063|      0|			}
43064|     34|		} else {
43065|     34|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     34|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43066|     34|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     34|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     34|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43066:8): [True: 34, Folded]
  ------------------
43067|     34|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|     34|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     34|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     34|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|     34|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     34|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43068|     34|			} else {
43069|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43070|      0|			}
43071|     34|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 34]
  |  |  ------------------
  ------------------
43072|      0|				goto assign_dim_error;
43073|      0|			}
43074|     34|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|     34|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43075|     34|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|     34|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|     34|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     34|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     34|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43076|     34|		}
43077|     34|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 28]
  |  |  ------------------
  ------------------
43078|      6|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
43079|      6|		}
43080|     34|		if (garbage) {
  ------------------
  |  Branch (43080:7): [True: 4, False: 30]
  ------------------
43081|      4|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      4|	do { \
  |  |  737|      4|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      4|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 1, False: 3]
  |  |  ------------------
  |  |  739|      1|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      3|		} else { \
  |  |  741|      3|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      3|		} \
  |  |  743|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
43082|      4|		}
43083|     34|	} else {
43084|     34|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|     34|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 24]
  |  |  ------------------
  ------------------
43085|     10|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|     10|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     10|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43086|     10|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  ------------------
  ------------------
43087|     10|				goto try_assign_dim_array;
43088|     10|			}
43089|     10|		}
43090|     24|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 24]
  |  |  ------------------
  ------------------
43091|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
43092|       |
43093|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43094|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43095|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43095:8): [Folded, False: 0]
  ------------------
43096|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43097|      0|			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (43097:15): [True: 0, Folded]
  |  Branch (43097:39): [True: 0, False: 0]
  ------------------
43098|      0|				dim++;
43099|      0|			}
43100|       |
43101|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43102|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43102:8): [Folded, False: 0]
  ------------------
43103|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43104|      0|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43104:15): [Folded, False: 0]
  ------------------
43105|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43106|      0|			}
43107|       |
43108|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43109|       |
43110|       |
43111|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43112|      0|				zend_objects_store_del(obj);
43113|      0|			}
43114|     24|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 18, False: 6]
  |  |  ------------------
  ------------------
43115|     18|			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|     18|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|     18|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43115:8): [Folded, False: 18]
  ------------------
43116|      0|				zend_use_new_element_for_string();
43117|       |
43118|       |
43119|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43120|     18|			} else {
43121|     18|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     18|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43122|     18|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|     18|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43123|     18|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     18|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     18|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     18|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     18|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43124|       |
43125|       |
43126|     18|			}
43127|     18|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
43128|      6|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      6|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     12|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43129|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      6|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43130|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (43130:8): [True: 0, False: 0]
  ------------------
43131|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43132|       |
43133|       |
43134|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43135|      6|			} else {
43136|      6|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      6|	_zend_new_array(size)
  ------------------
43137|      6|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
43138|       |
43139|      6|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      6|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      6|		zend_array *__arr = (a);				\
  |  | 1127|      6|		zval *__z = (z);						\
  |  | 1128|      6|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      6|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      6|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      6|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      6|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
43140|      6|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
43141|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43142|      0|					zend_false_to_array_deprecated();
43143|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43144|      0|						zend_array_destroy(ht);
43145|      0|						goto assign_dim_error;
43146|      0|					}
43147|      0|				}
43148|      6|				goto try_assign_dim_array;
43149|      6|			}
43150|      6|		} else {
43151|      0|			zend_use_scalar_as_array();
43152|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43153|      0|assign_dim_error:
43154|       |
43155|       |
43156|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43157|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43158|      0|			}
43159|      0|		}
43160|     24|	}
43161|     52|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     52|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     52|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43161:6): [True: 45, Folded]
  ------------------
43162|       |
43163|       |
43164|     45|	}
43165|       |
43166|       |
43167|       |	/* assign_dim has two opcodes! */
43168|     52|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     45|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     52|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 45, Folded]
  |  |  ------------------
  |  | 5759|     45|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     45|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     45|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     45|	} else { \
  |  | 5761|      7|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      7|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     45|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     45|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43168:2): [True: 0, False: 7]
  |  Branch (43168:2): [True: 0, False: 7]
  ------------------
43169|     52|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER:
43172|     44|{
43173|     44|	USE_OPLINE
43174|     44|	zval *object_ptr, *orig_object_ptr;
43175|     44|	zval *value;
43176|     44|	zval *variable_ptr;
43177|     44|	zval *dim;
43178|     44|	zend_refcounted *garbage = NULL;
43179|       |
43180|     44|	SAVE_OPLINE();
  ------------------
  |  |  428|     44|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     44|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43181|     44|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     44|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     44|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43182|       |
43183|     44|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     44|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 25, False: 19]
  |  |  ------------------
  ------------------
43184|     41|try_assign_dim_array:
43185|     41|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     41|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     41|		zval *__zv = (zv);								\
  |  | 1538|     41|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     41|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     41|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     41|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     41|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 24, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|     24|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|     24|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|     24|		zend_array *__arr = (a);				\
  |  |  |  | 1127|     24|		zval *__z = (z);						\
  |  |  |  | 1128|     24|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     24|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|     24|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|     24|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|     24|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|     24|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|     24|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|     24|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|     24|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|     24|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|     24|		}												\
  |  | 1543|     41|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 41]
  |  |  ------------------
  ------------------
43186|     41|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|     41|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|     41|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43186:7): [Folded, False: 41]
  ------------------
43187|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43188|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43188:8): [Folded, False: 0]
  ------------------
43189|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43190|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (43190:9): [True: 0, False: 0]
  ------------------
43191|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43192|      0|				}
43193|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43194|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43194:9): [True: 0, False: 0]
  |  Branch (43194:49): [True: 0, False: 0]
  ------------------
43195|      0|					zend_array_destroy(ht);
43196|      0|					goto assign_dim_error;
43197|      0|				}
43198|      0|			}
43199|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43199:8): [Folded, False: 0]
  |  Branch (43199:31): [Folded, False: 0]
  ------------------
43200|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43201|      0|			}
43202|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43203|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43204|      0|				zend_cannot_add_element();
43205|      0|				goto assign_dim_error;
43206|      0|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43206:15): [Folded, False: 0]
  ------------------
43207|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43208|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43209|      0|				}
43210|      0|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43210:15): [Folded, False: 0]
  ------------------
43211|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43212|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43213|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43214|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43215|      0|					}
43216|      0|					zval_ptr_dtor_nogc(free_op_data);
43217|      0|				}
43218|      0|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43218:15): [Folded, False: 0]
  ------------------
43219|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43220|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43221|      0|				}
43222|      0|			}
43223|     41|		} else {
43224|     41|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     41|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43225|     41|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     41|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     41|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43225:8): [True: 41, Folded]
  ------------------
43226|     41|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|     41|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     41|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     41|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|     41|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     41|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43227|     41|			} else {
43228|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43229|      0|			}
43230|     41|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|     41|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 41]
  |  |  ------------------
  ------------------
43231|      0|				goto assign_dim_error;
43232|      0|			}
43233|     41|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     41|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     41|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43234|     41|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|     41|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|     41|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     41|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     41|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43235|     41|		}
43236|     41|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     41|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 38]
  |  |  ------------------
  ------------------
43237|      3|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
43238|      3|		}
43239|     41|		if (garbage) {
  ------------------
  |  Branch (43239:7): [True: 9, False: 32]
  ------------------
43240|      9|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      9|	do { \
  |  |  737|      9|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      9|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 2, False: 7]
  |  |  ------------------
  |  |  739|      2|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      7|		} else { \
  |  |  741|      7|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      7|		} \
  |  |  743|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
43241|      9|		}
43242|     41|	} else {
43243|     19|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 14]
  |  |  ------------------
  ------------------
43244|      5|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      5|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      5|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43245|      5|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
43246|      5|				goto try_assign_dim_array;
43247|      5|			}
43248|      5|		}
43249|     14|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 12]
  |  |  ------------------
  ------------------
43250|      2|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
43251|       |
43252|      2|			GC_ADDREF(obj);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43253|      2|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43254|      2|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43254:8): [Folded, False: 2]
  ------------------
43255|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43256|      2|			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      2|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      2|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      2|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (43256:15): [True: 2, Folded]
  |  Branch (43256:39): [True: 0, False: 2]
  ------------------
43257|      0|				dim++;
43258|      0|			}
43259|       |
43260|      2|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43261|      2|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43261:8): [Folded, False: 2]
  ------------------
43262|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43263|      2|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43263:15): [Folded, False: 2]
  ------------------
43264|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43265|      0|			}
43266|       |
43267|      2|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43268|       |
43269|      2|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43270|      2|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
43271|      0|				zend_objects_store_del(obj);
43272|      0|			}
43273|     12|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 11]
  |  |  ------------------
  ------------------
43274|      1|			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43274:8): [Folded, False: 1]
  ------------------
43275|      0|				zend_use_new_element_for_string();
43276|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43277|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43278|      1|			} else {
43279|      1|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43280|      1|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43281|      1|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43282|      1|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43283|      1|			}
43284|     11|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 0]
  |  |  ------------------
  ------------------
43285|     11|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|     11|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     22|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     11|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43286|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|     11|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43287|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (43287:8): [True: 0, False: 0]
  ------------------
43288|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43289|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43290|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43291|     11|			} else {
43292|     11|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|     11|	_zend_new_array(size)
  ------------------
43293|     11|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
43294|       |
43295|     11|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|     11|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     11|		zend_array *__arr = (a);				\
  |  | 1127|     11|		zval *__z = (z);						\
  |  | 1128|     11|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     11|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     11|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     11|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     11|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
43296|     11|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
43297|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43298|      0|					zend_false_to_array_deprecated();
43299|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43300|      0|						zend_array_destroy(ht);
43301|      0|						goto assign_dim_error;
43302|      0|					}
43303|      0|				}
43304|     11|				goto try_assign_dim_array;
43305|     11|			}
43306|     11|		} else {
43307|      0|			zend_use_scalar_as_array();
43308|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43309|      0|assign_dim_error:
43310|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43311|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43312|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43313|      0|			}
43314|      0|		}
43315|     14|	}
43316|     44|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     44|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     44|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43316:6): [True: 44, Folded]
  ------------------
43317|       |
43318|       |
43319|     44|	}
43320|       |
43321|       |
43322|       |	/* assign_dim has two opcodes! */
43323|     44|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     44|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     44|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 44, Folded]
  |  |  ------------------
  |  | 5759|     44|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     44|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     44|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     44|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     44|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     44|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43323:2): [True: 0, False: 0]
  |  Branch (43323:2): [True: 0, False: 0]
  ------------------
43324|     44|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER:
43327|     11|{
43328|     11|	USE_OPLINE
43329|     11|	zval *object_ptr, *orig_object_ptr;
43330|     11|	zval *value;
43331|     11|	zval *variable_ptr;
43332|     11|	zval *dim;
43333|     11|	zend_refcounted *garbage = NULL;
43334|       |
43335|     11|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43336|     11|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     11|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     11|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43337|       |
43338|     11|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 9]
  |  |  ------------------
  ------------------
43339|      8|try_assign_dim_array:
43340|      8|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      8|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      8|		zval *__zv = (zv);								\
  |  | 1538|      8|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      8|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
43341|      8|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43341:7): [Folded, False: 8]
  ------------------
43342|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43343|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43343:8): [True: 0, Folded]
  ------------------
43344|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43345|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (43345:9): [True: 0, False: 0]
  ------------------
43346|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43347|      0|				}
43348|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43349|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43349:9): [True: 0, False: 0]
  |  Branch (43349:49): [True: 0, False: 0]
  ------------------
43350|      0|					zend_array_destroy(ht);
43351|      0|					goto assign_dim_error;
43352|      0|				}
43353|      0|			}
43354|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43354:8): [True: 0, Folded]
  |  Branch (43354:26): [Folded, False: 0]
  ------------------
43355|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43356|      0|			}
43357|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43358|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43359|      0|				zend_cannot_add_element();
43360|      0|				goto assign_dim_error;
43361|      0|			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43361:15): [True: 0, Folded]
  ------------------
43362|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43363|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43364|      0|				}
43365|      0|			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43365:15): [Folded, False: 0]
  ------------------
43366|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43367|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43368|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43369|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43370|      0|					}
43371|      0|					zval_ptr_dtor_nogc(free_op_data);
43372|      0|				}
43373|      0|			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43373:15): [Folded, False: 0]
  ------------------
43374|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43375|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43376|      0|				}
43377|      0|			}
43378|      8|		} else {
43379|      8|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43380|      8|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43380:8): [True: 8, Folded]
  ------------------
43381|      8|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43382|      8|			} else {
43383|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43384|      0|			}
43385|      8|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
43386|      0|				goto assign_dim_error;
43387|      0|			}
43388|      8|			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43389|      8|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      8|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      8|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      8|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43390|      8|		}
43391|      8|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 5]
  |  |  ------------------
  ------------------
43392|      3|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
43393|      3|		}
43394|      8|		if (garbage) {
  ------------------
  |  Branch (43394:7): [True: 1, False: 7]
  ------------------
43395|      1|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      1|	do { \
  |  |  737|      1|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      1|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      1|		} else { \
  |  |  741|      1|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      1|		} \
  |  |  743|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
43396|      1|		}
43397|      9|	} else {
43398|      9|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 7]
  |  |  ------------------
  ------------------
43399|      2|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43400|      2|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
43401|      1|				goto try_assign_dim_array;
43402|      1|			}
43403|      2|		}
43404|      8|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 5]
  |  |  ------------------
  ------------------
43405|      3|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
43406|       |
43407|      3|			GC_ADDREF(obj);
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43408|      3|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43409|      3|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43409:8): [Folded, False: 3]
  ------------------
43410|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43411|      3|			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      3|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      3|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      3|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (43411:15): [True: 3, Folded]
  |  Branch (43411:39): [True: 0, False: 3]
  ------------------
43412|      0|				dim++;
43413|      0|			}
43414|       |
43415|      3|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43416|      3|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (43416:8): [True: 3, Folded]
  ------------------
43417|      1|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43418|      2|			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43418:15): [True: 2, Folded]
  ------------------
43419|      2|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      2|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      2|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
43420|      2|			}
43421|       |
43422|      3|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43423|       |
43424|       |
43425|      3|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
43426|      0|				zend_objects_store_del(obj);
43427|      0|			}
43428|      5|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
43429|      0|			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43429:8): [Folded, False: 0]
  ------------------
43430|      0|				zend_use_new_element_for_string();
43431|       |
43432|       |
43433|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43434|      0|			} else {
43435|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43436|      0|				value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43437|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43438|       |
43439|       |
43440|      0|			}
43441|      5|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
43442|      5|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      5|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     10|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43443|      1|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      6|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      1|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
43444|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (43444:8): [True: 0, False: 0]
  ------------------
43445|      0|				dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43446|       |
43447|       |
43448|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43449|      5|			} else {
43450|      5|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      5|	_zend_new_array(size)
  ------------------
43451|      5|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
43452|       |
43453|      5|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      5|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      5|		zend_array *__arr = (a);				\
  |  | 1127|      5|		zval *__z = (z);						\
  |  | 1128|      5|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      5|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      5|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      5|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
43454|      5|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
43455|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43456|      0|					zend_false_to_array_deprecated();
43457|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43458|      0|						zend_array_destroy(ht);
43459|      0|						goto assign_dim_error;
43460|      0|					}
43461|      0|				}
43462|      5|				goto try_assign_dim_array;
43463|      5|			}
43464|      5|		} else {
43465|      0|			zend_use_scalar_as_array();
43466|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43467|      0|assign_dim_error:
43468|       |
43469|       |
43470|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43471|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43472|      0|			}
43473|      0|		}
43474|      8|	}
43475|     11|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43475:6): [True: 11, Folded]
  ------------------
43476|       |
43477|       |
43478|     11|	}
43479|       |
43480|       |
43481|       |	/* assign_dim has two opcodes! */
43482|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     11|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  ------------------
  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     11|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     11|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43482:2): [True: 0, False: 0]
  |  Branch (43482:2): [True: 0, False: 0]
  ------------------
43483|     11|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_CONST_HANDLER:
46833|    326|{
46834|    326|	USE_OPLINE
46835|    326|	zval *object_ptr, *orig_object_ptr;
46836|    326|	zval *value;
46837|    326|	zval *variable_ptr;
46838|    326|	zval *dim;
46839|    326|	zend_refcounted *garbage = NULL;
46840|       |
46841|    326|	SAVE_OPLINE();
  ------------------
  |  |  428|    326|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    326|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46842|    326|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    326|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    326|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46843|       |
46844|    326|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|    326|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 320, False: 6]
  |  |  ------------------
  ------------------
46845|    323|try_assign_dim_array:
46846|    323|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|    323|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|    323|		zval *__zv = (zv);								\
  |  | 1538|    323|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|    323|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    323|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|    323|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|    323|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 323]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|    323|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 323]
  |  |  ------------------
  ------------------
46847|    323|		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|    323|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|    323|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (46847:7): [Folded, False: 323]
  ------------------
46848|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
46849|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (46849:8): [Folded, False: 0]
  ------------------
46850|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46851|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (46851:9): [True: 0, False: 0]
  ------------------
46852|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
46853|      0|				}
46854|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46855|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (46855:9): [True: 0, False: 0]
  |  Branch (46855:49): [True: 0, False: 0]
  ------------------
46856|      0|					zend_array_destroy(ht);
46857|      0|					goto assign_dim_error;
46858|      0|				}
46859|      0|			}
46860|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46860:8): [Folded, False: 0]
  |  Branch (46860:29): [Folded, False: 0]
  ------------------
46861|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46862|      0|			}
46863|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46864|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46865|      0|				zend_cannot_add_element();
46866|      0|				goto assign_dim_error;
46867|      0|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (46867:15): [Folded, False: 0]
  ------------------
46868|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46869|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
46870|      0|				}
46871|      0|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46871:15): [Folded, False: 0]
  ------------------
46872|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46873|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46874|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46875|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
46876|      0|					}
46877|      0|					zval_ptr_dtor_nogc(free_op_data);
46878|      0|				}
46879|      0|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46879:15): [True: 0, Folded]
  ------------------
46880|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46881|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
46882|      0|				}
46883|      0|			}
46884|    323|		} else {
46885|    323|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    323|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    323|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46886|    323|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|    323|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    323|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46886:8): [Folded, False: 323]
  ------------------
46887|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46888|    323|			} else {
46889|    323|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|    323|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    323|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    323|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|    323|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    323|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46890|    323|			}
46891|    323|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|    323|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 322]
  |  |  ------------------
  ------------------
46892|      1|				goto assign_dim_error;
46893|      1|			}
46894|    322|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|    322|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
46895|    322|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|    322|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|    322|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    322|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    322|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46896|    322|		}
46897|    322|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    322|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 142, False: 180]
  |  |  ------------------
  ------------------
46898|    142|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|    142|	do {												\
  |  | 1426|    142|		zval *_z1 = (z);								\
  |  | 1427|    142|		const zval *_z2 = (v);							\
  |  | 1428|    142|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    142|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    142|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    142|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    142|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    142|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    142|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    142|	do {												\
  |  |  |  | 1408|    142|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    142|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    142|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    142|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    142|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    142|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    142|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 142]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    142|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    142|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    142|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 142]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|    142|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 142]
  |  |  ------------------
  ------------------
46899|    142|		}
46900|    322|		if (garbage) {
  ------------------
  |  Branch (46900:7): [True: 0, False: 322]
  ------------------
46901|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46902|      0|		}
46903|    322|	} else {
46904|      6|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
46905|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46906|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46907|      0|				goto try_assign_dim_array;
46908|      0|			}
46909|      0|		}
46910|      6|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
46911|      1|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
46912|       |
46913|      1|			GC_ADDREF(obj);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
46914|      1|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46915|      1|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (46915:8): [Folded, False: 1]
  ------------------
46916|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46917|      1|			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (46917:15): [Folded, False: 1]
  |  Branch (46917:41): [True: 0, False: 0]
  ------------------
46918|      0|				dim++;
46919|      0|			}
46920|       |
46921|      1|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
46922|      1|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (46922:8): [Folded, False: 1]
  ------------------
46923|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46924|      1|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46924:15): [Folded, False: 1]
  ------------------
46925|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46926|      0|			}
46927|       |
46928|      1|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46929|       |
46930|       |
46931|      1|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
46932|      0|				zend_objects_store_del(obj);
46933|      0|			}
46934|      5|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
46935|      2|			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (46935:8): [Folded, False: 2]
  ------------------
46936|      0|				zend_use_new_element_for_string();
46937|       |
46938|       |
46939|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46940|      2|			} else {
46941|      2|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46942|      2|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
46943|      2|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46944|       |
46945|       |
46946|      2|			}
46947|      3|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
46948|      3|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46949|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      3|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46950|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (46950:8): [True: 0, False: 0]
  ------------------
46951|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46952|       |
46953|       |
46954|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46955|      3|			} else {
46956|      3|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      3|	_zend_new_array(size)
  ------------------
46957|      3|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
46958|       |
46959|      3|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
46960|      3|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
46961|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
46962|      0|					zend_false_to_array_deprecated();
46963|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46964|      0|						zend_array_destroy(ht);
46965|      0|						goto assign_dim_error;
46966|      0|					}
46967|      0|				}
46968|      3|				goto try_assign_dim_array;
46969|      3|			}
46970|      3|		} else {
46971|      0|			zend_use_scalar_as_array();
46972|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46973|      1|assign_dim_error:
46974|       |
46975|       |
46976|      1|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
46977|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46978|      0|			}
46979|      1|		}
46980|      6|	}
46981|    326|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|    326|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|    326|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (46981:6): [True: 326, Folded]
  ------------------
46982|    326|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    326|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    326|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46983|    326|	}
46984|       |
46985|       |
46986|       |	/* assign_dim has two opcodes! */
46987|    326|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|    326|	CHECK_SYMBOL_TABLES() \
  |  | 5758|    326|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 326, Folded]
  |  |  ------------------
  |  | 5759|    326|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|    326|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|    326|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|    326|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|    326|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    326|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (46987:2): [True: 0, False: 0]
  |  Branch (46987:2): [True: 0, False: 0]
  ------------------
46988|    326|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_TMP_HANDLER:
46991|     10|{
46992|     10|	USE_OPLINE
46993|     10|	zval *object_ptr, *orig_object_ptr;
46994|     10|	zval *value;
46995|     10|	zval *variable_ptr;
46996|     10|	zval *dim;
46997|     10|	zend_refcounted *garbage = NULL;
46998|       |
46999|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
47000|     10|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47001|       |
47002|     10|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 3]
  |  |  ------------------
  ------------------
47003|     10|try_assign_dim_array:
47004|     10|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     10|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     10|		zval *__zv = (zv);								\
  |  | 1538|     10|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     10|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     10|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      3|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      3|		zval *__z = (z);						\
  |  |  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      3|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      3|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      3|		}												\
  |  | 1543|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
47005|     10|		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47005:7): [Folded, False: 10]
  ------------------
47006|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47007|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47007:8): [Folded, False: 0]
  ------------------
47008|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47009|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (47009:9): [True: 0, False: 0]
  ------------------
47010|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
47011|      0|				}
47012|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47013|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (47013:9): [True: 0, False: 0]
  |  Branch (47013:49): [True: 0, False: 0]
  ------------------
47014|      0|					zend_array_destroy(ht);
47015|      0|					goto assign_dim_error;
47016|      0|				}
47017|      0|			}
47018|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47018:8): [Folded, False: 0]
  |  Branch (47018:31): [Folded, False: 0]
  ------------------
47019|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47020|      0|			}
47021|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47022|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47023|      0|				zend_cannot_add_element();
47024|      0|				goto assign_dim_error;
47025|      0|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (47025:15): [Folded, False: 0]
  ------------------
47026|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47027|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47028|      0|				}
47029|      0|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47029:15): [Folded, False: 0]
  ------------------
47030|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47031|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47032|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47033|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47034|      0|					}
47035|      0|					zval_ptr_dtor_nogc(free_op_data);
47036|      0|				}
47037|      0|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (47037:15): [Folded, False: 0]
  ------------------
47038|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47039|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47040|      0|				}
47041|      0|			}
47042|     10|		} else {
47043|     10|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47044|     10|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (47044:8): [Folded, False: 10]
  ------------------
47045|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47046|     10|			} else {
47047|     10|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47048|     10|			}
47049|     10|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
47050|      0|				goto assign_dim_error;
47051|      0|			}
47052|     10|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47053|     10|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|     10|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|     10|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|     10|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47054|     10|		}
47055|     10|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 7]
  |  |  ------------------
  ------------------
47056|      3|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
47057|      3|		}
47058|     10|		if (garbage) {
  ------------------
  |  Branch (47058:7): [True: 0, False: 10]
  ------------------
47059|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47060|      0|		}
47061|     10|	} else {
47062|      3|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
47063|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47064|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47065|      0|				goto try_assign_dim_array;
47066|      0|			}
47067|      0|		}
47068|      3|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
47069|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
47070|       |
47071|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
47072|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47073|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47073:8): [Folded, False: 0]
  ------------------
47074|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47075|      0|			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (47075:15): [Folded, False: 0]
  |  Branch (47075:41): [True: 0, False: 0]
  ------------------
47076|      0|				dim++;
47077|      0|			}
47078|       |
47079|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47080|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47080:8): [Folded, False: 0]
  ------------------
47081|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47082|      0|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47082:15): [Folded, False: 0]
  ------------------
47083|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47084|      0|			}
47085|       |
47086|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47087|       |
47088|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47089|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47090|      0|				zend_objects_store_del(obj);
47091|      0|			}
47092|      3|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
47093|      0|			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47093:8): [Folded, False: 0]
  ------------------
47094|      0|				zend_use_new_element_for_string();
47095|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47096|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47097|      0|			} else {
47098|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47099|      0|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47100|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47101|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47102|      0|			}
47103|      3|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
47104|      3|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47105|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      3|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47106|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (47106:8): [True: 0, False: 0]
  ------------------
47107|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47108|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47109|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47110|      3|			} else {
47111|      3|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      3|	_zend_new_array(size)
  ------------------
47112|      3|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
47113|       |
47114|      3|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
47115|      3|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
47116|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
47117|      0|					zend_false_to_array_deprecated();
47118|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47119|      0|						zend_array_destroy(ht);
47120|      0|						goto assign_dim_error;
47121|      0|					}
47122|      0|				}
47123|      3|				goto try_assign_dim_array;
47124|      3|			}
47125|      3|		} else {
47126|      0|			zend_use_scalar_as_array();
47127|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47128|      0|assign_dim_error:
47129|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47130|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47131|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47132|      0|			}
47133|      0|		}
47134|      3|	}
47135|     10|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47135:6): [True: 10, Folded]
  ------------------
47136|     10|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47137|     10|	}
47138|       |
47139|       |
47140|       |	/* assign_dim has two opcodes! */
47141|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     10|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  ------------------
  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     10|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     10|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (47141:2): [True: 0, False: 0]
  |  Branch (47141:2): [True: 0, False: 0]
  ------------------
47142|     10|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_TMP_OP_DATA_CV_HANDLER:
47145|      1|{
47146|      1|	USE_OPLINE
47147|      1|	zval *object_ptr, *orig_object_ptr;
47148|      1|	zval *value;
47149|      1|	zval *variable_ptr;
47150|      1|	zval *dim;
47151|      1|	zend_refcounted *garbage = NULL;
47152|       |
47153|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
47154|      1|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47155|       |
47156|      1|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47157|      1|try_assign_dim_array:
47158|      1|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
47159|      1|		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47159:7): [Folded, False: 1]
  ------------------
47160|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47161|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47161:8): [True: 0, Folded]
  ------------------
47162|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47163|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (47163:9): [True: 0, False: 0]
  ------------------
47164|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
47165|      0|				}
47166|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47167|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (47167:9): [True: 0, False: 0]
  |  Branch (47167:49): [True: 0, False: 0]
  ------------------
47168|      0|					zend_array_destroy(ht);
47169|      0|					goto assign_dim_error;
47170|      0|				}
47171|      0|			}
47172|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47172:8): [True: 0, Folded]
  |  Branch (47172:26): [Folded, False: 0]
  ------------------
47173|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47174|      0|			}
47175|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47176|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47177|      0|				zend_cannot_add_element();
47178|      0|				goto assign_dim_error;
47179|      0|			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (47179:15): [True: 0, Folded]
  ------------------
47180|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47181|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47182|      0|				}
47183|      0|			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47183:15): [Folded, False: 0]
  ------------------
47184|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47185|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47186|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47187|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47188|      0|					}
47189|      0|					zval_ptr_dtor_nogc(free_op_data);
47190|      0|				}
47191|      0|			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (47191:15): [Folded, False: 0]
  ------------------
47192|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47193|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47194|      0|				}
47195|      0|			}
47196|      1|		} else {
47197|      1|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47198|      1|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (47198:8): [Folded, False: 1]
  ------------------
47199|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47200|      1|			} else {
47201|      1|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47202|      1|			}
47203|      1|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47204|      0|				goto assign_dim_error;
47205|      0|			}
47206|      1|			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47207|      1|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47208|      1|		}
47209|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
47210|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
47211|      1|		}
47212|      1|		if (garbage) {
  ------------------
  |  Branch (47212:7): [True: 0, False: 1]
  ------------------
47213|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47214|      0|		}
47215|      1|	} else {
47216|      1|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47217|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47218|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47219|      0|				goto try_assign_dim_array;
47220|      0|			}
47221|      0|		}
47222|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47223|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
47224|       |
47225|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
47226|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47227|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47227:8): [Folded, False: 0]
  ------------------
47228|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47229|      0|			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (47229:15): [Folded, False: 0]
  |  Branch (47229:41): [True: 0, False: 0]
  ------------------
47230|      0|				dim++;
47231|      0|			}
47232|       |
47233|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47234|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47234:8): [True: 0, Folded]
  ------------------
47235|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47236|      0|			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47236:15): [True: 0, Folded]
  ------------------
47237|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47238|      0|			}
47239|       |
47240|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47241|       |
47242|       |
47243|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47244|      0|				zend_objects_store_del(obj);
47245|      0|			}
47246|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47247|      0|			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47247:8): [Folded, False: 0]
  ------------------
47248|      0|				zend_use_new_element_for_string();
47249|       |
47250|       |
47251|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47252|      0|			} else {
47253|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47254|      0|				value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47255|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47256|       |
47257|       |
47258|      0|			}
47259|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
47260|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47261|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      1|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47262|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (47262:8): [True: 0, False: 0]
  ------------------
47263|      0|				dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47264|       |
47265|       |
47266|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47267|      1|			} else {
47268|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
47269|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
47270|       |
47271|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
47272|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47273|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
47274|      0|					zend_false_to_array_deprecated();
47275|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47276|      0|						zend_array_destroy(ht);
47277|      0|						goto assign_dim_error;
47278|      0|					}
47279|      0|				}
47280|      1|				goto try_assign_dim_array;
47281|      1|			}
47282|      1|		} else {
47283|      0|			zend_use_scalar_as_array();
47284|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47285|      0|assign_dim_error:
47286|       |
47287|       |
47288|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47289|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47290|      0|			}
47291|      0|		}
47292|      1|	}
47293|      1|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47293:6): [True: 1, Folded]
  ------------------
47294|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47295|      1|	}
47296|       |
47297|       |
47298|       |	/* assign_dim has two opcodes! */
47299|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (47299:2): [True: 0, False: 0]
  |  Branch (47299:2): [True: 0, False: 0]
  ------------------
47300|      1|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER:
48674|    140|{
48675|    140|	USE_OPLINE
48676|    140|	zval *object_ptr, *orig_object_ptr;
48677|    140|	zval *value;
48678|    140|	zval *variable_ptr;
48679|    140|	zval *dim;
48680|    140|	zend_refcounted *garbage = NULL;
48681|       |
48682|    140|	SAVE_OPLINE();
  ------------------
  |  |  428|    140|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    140|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48683|    140|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    140|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    140|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48684|       |
48685|    140|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|    140|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 129]
  |  |  ------------------
  ------------------
48686|    137|try_assign_dim_array:
48687|    137|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|    137|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|    137|		zval *__zv = (zv);								\
  |  | 1538|    137|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|    137|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    137|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|    137|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|    137|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 7, False: 130]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      7|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      7|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      7|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      7|		zval *__z = (z);						\
  |  |  |  | 1128|      7|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      7|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      7|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      7|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      7|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      7|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      7|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      7|		}												\
  |  | 1543|    137|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 137]
  |  |  ------------------
  ------------------
48688|    137|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|    137|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|    137|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48688:7): [True: 137, Folded]
  ------------------
48689|    137|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|    137|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
48690|    137|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|    137|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|    274|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48690:8): [Folded, False: 137]
  ------------------
48691|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48692|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (48692:9): [True: 0, False: 0]
  ------------------
48693|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48694|      0|				}
48695|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48696|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (48696:9): [True: 0, False: 0]
  |  Branch (48696:49): [True: 0, False: 0]
  ------------------
48697|      0|					zend_array_destroy(ht);
48698|      0|					goto assign_dim_error;
48699|      0|				}
48700|      0|			}
48701|    137|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|    137|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|    274|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48701:8): [Folded, False: 0]
  |  Branch (48701:29): [Folded, False: 0]
  ------------------
48702|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48703|      0|			}
48704|    137|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|    137|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    137|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    137|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48705|    137|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|    137|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 136]
  |  |  ------------------
  ------------------
48706|      1|				zend_cannot_add_element();
48707|      1|				goto assign_dim_error;
48708|    136|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|    136|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|    136|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (48708:15): [Folded, False: 136]
  ------------------
48709|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48710|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
48711|      0|				}
48712|    136|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|    136|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|    136|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48712:15): [Folded, False: 136]
  ------------------
48713|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48714|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48715|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48716|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
48717|      0|					}
48718|      0|					zval_ptr_dtor_nogc(free_op_data);
48719|      0|				}
48720|    136|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    136|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    136|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48720:15): [True: 136, Folded]
  ------------------
48721|    136|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|    136|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 125, False: 11]
  |  |  ------------------
  ------------------
48722|    125|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|    125|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
48723|    125|				}
48724|    136|			}
48725|    137|		} else {
48726|      0|			dim = NULL;
48727|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48727:8): [Folded, False: 0]
  ------------------
48728|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48729|      0|			} else {
48730|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48731|      0|			}
48732|      0|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48733|      0|				goto assign_dim_error;
48734|      0|			}
48735|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
48736|      0|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48737|      0|		}
48738|    136|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    136|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 135]
  |  |  ------------------
  ------------------
48739|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
48740|      1|		}
48741|    136|		if (garbage) {
  ------------------
  |  Branch (48741:7): [True: 0, False: 136]
  ------------------
48742|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48743|      0|		}
48744|    136|	} else {
48745|    129|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|    129|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 123, False: 6]
  |  |  ------------------
  ------------------
48746|    123|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|    123|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    123|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    123|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48747|    123|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|    123|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 123, False: 0]
  |  |  ------------------
  ------------------
48748|    123|				goto try_assign_dim_array;
48749|    123|			}
48750|    123|		}
48751|      6|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
48752|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
48753|       |
48754|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48755|      0|			dim = NULL;
48756|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48756:8): [Folded, False: 0]
  ------------------
48757|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48758|      0|			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (48758:15): [Folded, False: 0]
  |  Branch (48758:40): [True: 0, False: 0]
  ------------------
48759|      0|				dim++;
48760|      0|			}
48761|       |
48762|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
48763|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48763:8): [Folded, False: 0]
  ------------------
48764|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48765|      0|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48765:15): [Folded, False: 0]
  ------------------
48766|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48767|      0|			}
48768|       |
48769|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48770|       |
48771|       |
48772|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48773|      0|				zend_objects_store_del(obj);
48774|      0|			}
48775|      6|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 3]
  |  |  ------------------
  ------------------
48776|      3|			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48776:8): [True: 3, Folded]
  ------------------
48777|      3|				zend_use_new_element_for_string();
48778|       |
48779|       |
48780|      3|				UNDEF_RESULT();
  ------------------
  |  | 5907|      3|#define UNDEF_RESULT() do { \
  |  | 5908|      3|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      3|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 3]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
48781|      3|			} else {
48782|      0|				dim = NULL;
48783|      0|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
48784|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48785|       |
48786|       |
48787|      0|			}
48788|      3|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
48789|      3|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48790|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      3|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48791|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (48791:8): [True: 0, False: 0]
  ------------------
48792|      0|				dim = NULL;
48793|       |
48794|       |
48795|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48796|      3|			} else {
48797|      3|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      3|	_zend_new_array(size)
  ------------------
48798|      3|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
48799|       |
48800|      3|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
48801|      3|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
48802|      1|					GC_ADDREF(ht);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48803|      1|					zend_false_to_array_deprecated();
48804|      1|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
48805|      0|						zend_array_destroy(ht);
48806|      0|						goto assign_dim_error;
48807|      0|					}
48808|      1|				}
48809|      3|				goto try_assign_dim_array;
48810|      3|			}
48811|      3|		} else {
48812|      0|			zend_use_scalar_as_array();
48813|      0|			dim = NULL;
48814|      1|assign_dim_error:
48815|       |
48816|       |
48817|      1|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
48818|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48819|      0|			}
48820|      1|		}
48821|      6|	}
48822|    140|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|    140|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|    140|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48822:6): [Folded, False: 140]
  ------------------
48823|       |
48824|       |
48825|      0|	}
48826|       |
48827|       |
48828|       |	/* assign_dim has two opcodes! */
48829|    140|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|    140|	CHECK_SYMBOL_TABLES() \
  |  | 5758|    140|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 140, Folded]
  |  |  ------------------
  |  | 5759|    140|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|    140|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|    140|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|    140|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|    140|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    140|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (48829:2): [True: 0, False: 0]
  |  Branch (48829:2): [True: 0, False: 0]
  ------------------
48830|    140|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER:
48833|     11|{
48834|     11|	USE_OPLINE
48835|     11|	zval *object_ptr, *orig_object_ptr;
48836|     11|	zval *value;
48837|     11|	zval *variable_ptr;
48838|     11|	zval *dim;
48839|     11|	zend_refcounted *garbage = NULL;
48840|       |
48841|     11|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48842|     11|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     11|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     11|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48843|       |
48844|     11|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 8]
  |  |  ------------------
  ------------------
48845|     11|try_assign_dim_array:
48846|     11|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|     11|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     11|		zval *__zv = (zv);								\
  |  | 1538|     11|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     11|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
48847|     11|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48847:7): [True: 11, Folded]
  ------------------
48848|     11|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48849|     11|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48849:8): [Folded, False: 11]
  ------------------
48850|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48851|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (48851:9): [True: 0, False: 0]
  ------------------
48852|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48853|      0|				}
48854|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48855|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (48855:9): [True: 0, False: 0]
  |  Branch (48855:49): [True: 0, False: 0]
  ------------------
48856|      0|					zend_array_destroy(ht);
48857|      0|					goto assign_dim_error;
48858|      0|				}
48859|      0|			}
48860|     11|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48860:8): [Folded, False: 0]
  |  Branch (48860:31): [Folded, False: 0]
  ------------------
48861|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48862|      0|			}
48863|     11|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|     11|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     11|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48864|     11|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
48865|      0|				zend_cannot_add_element();
48866|      0|				goto assign_dim_error;
48867|     11|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|     11|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (48867:15): [Folded, False: 11]
  ------------------
48868|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48869|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
48870|      0|				}
48871|     11|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|     11|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48871:15): [Folded, False: 11]
  ------------------
48872|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48873|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48874|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48875|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
48876|      0|					}
48877|      0|					zval_ptr_dtor_nogc(free_op_data);
48878|      0|				}
48879|     11|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     11|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48879:15): [Folded, False: 11]
  ------------------
48880|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48881|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
48882|      0|				}
48883|      0|			}
48884|     11|		} else {
48885|      0|			dim = NULL;
48886|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48886:8): [Folded, False: 0]
  ------------------
48887|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48888|      0|			} else {
48889|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48890|      0|			}
48891|      0|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48892|      0|				goto assign_dim_error;
48893|      0|			}
48894|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48895|      0|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48896|      0|		}
48897|     11|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 10]
  |  |  ------------------
  ------------------
48898|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
48899|      1|		}
48900|     11|		if (garbage) {
  ------------------
  |  Branch (48900:7): [True: 0, False: 11]
  ------------------
48901|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48902|      0|		}
48903|     11|	} else {
48904|      8|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 7]
  |  |  ------------------
  ------------------
48905|      1|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48906|      1|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
48907|      1|				goto try_assign_dim_array;
48908|      1|			}
48909|      1|		}
48910|      7|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
48911|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
48912|       |
48913|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48914|      0|			dim = NULL;
48915|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48915:8): [Folded, False: 0]
  ------------------
48916|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48917|      0|			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (48917:15): [Folded, False: 0]
  |  Branch (48917:40): [True: 0, False: 0]
  ------------------
48918|      0|				dim++;
48919|      0|			}
48920|       |
48921|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48922|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48922:8): [Folded, False: 0]
  ------------------
48923|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48924|      0|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48924:15): [Folded, False: 0]
  ------------------
48925|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48926|      0|			}
48927|       |
48928|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48929|       |
48930|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48931|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48932|      0|				zend_objects_store_del(obj);
48933|      0|			}
48934|      7|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
48935|      0|			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48935:8): [True: 0, Folded]
  ------------------
48936|      0|				zend_use_new_element_for_string();
48937|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48938|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48939|      0|			} else {
48940|      0|				dim = NULL;
48941|      0|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48942|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48943|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48944|      0|			}
48945|      7|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 0]
  |  |  ------------------
  ------------------
48946|      7|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      7|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     14|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48947|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      7|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48948|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (48948:8): [True: 0, False: 0]
  ------------------
48949|      0|				dim = NULL;
48950|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48951|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48952|      7|			} else {
48953|      7|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      7|	_zend_new_array(size)
  ------------------
48954|      7|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
48955|       |
48956|      7|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      7|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      7|		zend_array *__arr = (a);				\
  |  | 1127|      7|		zval *__z = (z);						\
  |  | 1128|      7|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      7|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      7|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      7|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      7|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
48957|      7|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
48958|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48959|      0|					zend_false_to_array_deprecated();
48960|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48961|      0|						zend_array_destroy(ht);
48962|      0|						goto assign_dim_error;
48963|      0|					}
48964|      0|				}
48965|      7|				goto try_assign_dim_array;
48966|      7|			}
48967|      7|		} else {
48968|      0|			zend_use_scalar_as_array();
48969|      0|			dim = NULL;
48970|      0|assign_dim_error:
48971|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48972|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48973|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48974|      0|			}
48975|      0|		}
48976|      7|	}
48977|     11|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48977:6): [Folded, False: 11]
  ------------------
48978|       |
48979|       |
48980|      0|	}
48981|       |
48982|       |
48983|       |	/* assign_dim has two opcodes! */
48984|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     11|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  ------------------
  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     11|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     11|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (48984:2): [True: 0, False: 0]
  |  Branch (48984:2): [True: 0, False: 0]
  ------------------
48985|     11|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER:
48988|      2|{
48989|      2|	USE_OPLINE
48990|      2|	zval *object_ptr, *orig_object_ptr;
48991|      2|	zval *value;
48992|      2|	zval *variable_ptr;
48993|      2|	zval *dim;
48994|      2|	zend_refcounted *garbage = NULL;
48995|       |
48996|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48997|      2|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48998|       |
48999|      2|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
49000|      2|try_assign_dim_array:
49001|      2|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      2|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      2|		zval *__zv = (zv);								\
  |  | 1538|      2|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      2|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
49002|      2|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49002:7): [True: 2, Folded]
  ------------------
49003|      2|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49004|      2|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (49004:8): [True: 2, Folded]
  ------------------
49005|      1|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49006|      1|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      1|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (49006:9): [True: 1, False: 0]
  ------------------
49007|      1|					GC_ADDREF(ht);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
49008|      1|				}
49009|      1|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49010|      1|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      1|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (49010:9): [True: 1, False: 0]
  |  Branch (49010:49): [True: 0, False: 1]
  ------------------
49011|      0|					zend_array_destroy(ht);
49012|      0|					goto assign_dim_error;
49013|      0|				}
49014|      1|			}
49015|      2|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49015:8): [True: 2, Folded]
  |  Branch (49015:26): [Folded, False: 0]
  ------------------
49016|      2|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      2|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      2|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
49017|      2|			}
49018|      2|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49019|      2|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
49020|      0|				zend_cannot_add_element();
49021|      0|				goto assign_dim_error;
49022|      2|			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49022:15): [True: 2, Folded]
  ------------------
49023|      2|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49024|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49025|      0|				}
49026|      2|			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49026:15): [Folded, False: 0]
  ------------------
49027|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49028|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49029|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49030|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49031|      0|					}
49032|      0|					zval_ptr_dtor_nogc(free_op_data);
49033|      0|				}
49034|      0|			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49034:15): [Folded, False: 0]
  ------------------
49035|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49036|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49037|      0|				}
49038|      0|			}
49039|      2|		} else {
49040|      0|			dim = NULL;
49041|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49041:8): [Folded, False: 0]
  ------------------
49042|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49043|      0|			} else {
49044|      0|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49045|      0|			}
49046|      0|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49047|      0|				goto assign_dim_error;
49048|      0|			}
49049|      0|			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49050|      0|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49051|      0|		}
49052|      2|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
49053|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
49054|      1|		}
49055|      2|		if (garbage) {
  ------------------
  |  Branch (49055:7): [True: 0, False: 2]
  ------------------
49056|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49057|      0|		}
49058|      2|	} else {
49059|      1|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
49060|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49061|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49062|      0|				goto try_assign_dim_array;
49063|      0|			}
49064|      0|		}
49065|      1|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
49066|      0|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
49067|       |
49068|      0|			GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
49069|      0|			dim = NULL;
49070|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49070:8): [Folded, False: 0]
  ------------------
49071|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49072|      0|			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (49072:15): [Folded, False: 0]
  |  Branch (49072:40): [True: 0, False: 0]
  ------------------
49073|      0|				dim++;
49074|      0|			}
49075|       |
49076|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49077|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49077:8): [True: 0, Folded]
  ------------------
49078|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49079|      0|			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49079:15): [True: 0, Folded]
  ------------------
49080|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49081|      0|			}
49082|       |
49083|      0|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49084|       |
49085|       |
49086|      0|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49087|      0|				zend_objects_store_del(obj);
49088|      0|			}
49089|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
49090|      0|			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49090:8): [True: 0, Folded]
  ------------------
49091|      0|				zend_use_new_element_for_string();
49092|       |
49093|       |
49094|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49095|      0|			} else {
49096|      0|				dim = NULL;
49097|      0|				value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49098|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49099|       |
49100|       |
49101|      0|			}
49102|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
49103|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49104|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      1|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49105|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (49105:8): [True: 0, False: 0]
  ------------------
49106|      0|				dim = NULL;
49107|       |
49108|       |
49109|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49110|      1|			} else {
49111|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
49112|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
49113|       |
49114|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
49115|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
49116|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
49117|      0|					zend_false_to_array_deprecated();
49118|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49119|      0|						zend_array_destroy(ht);
49120|      0|						goto assign_dim_error;
49121|      0|					}
49122|      0|				}
49123|      1|				goto try_assign_dim_array;
49124|      1|			}
49125|      1|		} else {
49126|      0|			zend_use_scalar_as_array();
49127|      0|			dim = NULL;
49128|      0|assign_dim_error:
49129|       |
49130|       |
49131|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49132|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49133|      0|			}
49134|      0|		}
49135|      1|	}
49136|      2|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49136:6): [Folded, False: 2]
  ------------------
49137|       |
49138|       |
49139|      0|	}
49140|       |
49141|       |
49142|       |	/* assign_dim has two opcodes! */
49143|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49143:2): [True: 0, False: 0]
  |  Branch (49143:2): [True: 0, False: 0]
  ------------------
49144|      2|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER:
51952|    399|{
51953|    399|	USE_OPLINE
51954|    399|	zval *object_ptr, *orig_object_ptr;
51955|    399|	zval *value;
51956|    399|	zval *variable_ptr;
51957|    399|	zval *dim;
51958|    399|	zend_refcounted *garbage = NULL;
51959|       |
51960|    399|	SAVE_OPLINE();
  ------------------
  |  |  428|    399|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    399|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51961|    399|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    399|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    399|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51962|       |
51963|    399|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|    399|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 393, False: 6]
  |  |  ------------------
  ------------------
51964|    396|try_assign_dim_array:
51965|    396|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|    396|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|    396|		zval *__zv = (zv);								\
  |  | 1538|    396|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|    396|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    396|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|    396|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|    396|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 393]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      3|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      3|		zval *__z = (z);						\
  |  |  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      3|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      3|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      3|		}												\
  |  | 1543|    396|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 396]
  |  |  ------------------
  ------------------
51966|    396|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|    396|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|    396|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (51966:7): [Folded, False: 396]
  ------------------
51967|      0|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
51968|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (51968:8): [Folded, False: 0]
  ------------------
51969|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51970|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (51970:9): [True: 0, False: 0]
  ------------------
51971|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
51972|      0|				}
51973|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51974|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (51974:9): [True: 0, False: 0]
  |  Branch (51974:49): [True: 0, False: 0]
  ------------------
51975|      0|					zend_array_destroy(ht);
51976|      0|					goto assign_dim_error;
51977|      0|				}
51978|      0|			}
51979|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51979:8): [Folded, False: 0]
  |  Branch (51979:29): [Folded, False: 0]
  ------------------
51980|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51981|      0|			}
51982|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51983|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51984|      0|				zend_cannot_add_element();
51985|      0|				goto assign_dim_error;
51986|      0|			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (51986:15): [Folded, False: 0]
  ------------------
51987|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51988|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
51989|      0|				}
51990|      0|			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51990:15): [Folded, False: 0]
  ------------------
51991|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51992|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51993|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51994|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
51995|      0|					}
51996|      0|					zval_ptr_dtor_nogc(free_op_data);
51997|      0|				}
51998|      0|			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51998:15): [True: 0, Folded]
  ------------------
51999|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52000|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52001|      0|				}
52002|      0|			}
52003|    396|		} else {
52004|    396|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    396|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    396|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52005|    396|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    396|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    396|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52005:8): [Folded, False: 396]
  ------------------
52006|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52007|    396|			} else {
52008|    396|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|    396|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    396|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    396|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|    396|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    396|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52009|    396|			}
52010|    396|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|    396|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 396]
  |  |  ------------------
  ------------------
52011|      0|				goto assign_dim_error;
52012|      0|			}
52013|    396|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|    396|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
52014|    396|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|    396|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|    396|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    396|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    396|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52015|    396|		}
52016|    396|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    396|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 126, False: 270]
  |  |  ------------------
  ------------------
52017|    126|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|    126|	do {												\
  |  | 1426|    126|		zval *_z1 = (z);								\
  |  | 1427|    126|		const zval *_z2 = (v);							\
  |  | 1428|    126|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    126|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    126|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    126|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    126|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    126|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    126|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    126|	do {												\
  |  |  |  | 1408|    126|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    126|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    126|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    126|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    126|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    126|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    126|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 126]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    126|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    126|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    126|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 125, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    125|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    125|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    125|		}												\
  |  | 1434|    126|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 126]
  |  |  ------------------
  ------------------
52018|    126|		}
52019|    396|		if (garbage) {
  ------------------
  |  Branch (52019:7): [True: 0, False: 396]
  ------------------
52020|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52021|      0|		}
52022|    396|	} else {
52023|      6|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
52024|      1|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52025|      1|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
52026|      1|				goto try_assign_dim_array;
52027|      1|			}
52028|      1|		}
52029|      5|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 2]
  |  |  ------------------
  ------------------
52030|      3|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
52031|       |
52032|      3|			GC_ADDREF(obj);
  ------------------
  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52033|      3|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52034|      3|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (52034:8): [True: 3, Folded]
  ------------------
52035|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52036|      3|			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (52036:15): [Folded, False: 3]
  |  Branch (52036:36): [True: 0, False: 0]
  ------------------
52037|      0|				dim++;
52038|      0|			}
52039|       |
52040|      3|			value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
52041|      3|			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52041:8): [Folded, False: 3]
  ------------------
52042|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52043|      3|			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52043:15): [Folded, False: 3]
  ------------------
52044|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52045|      0|			}
52046|       |
52047|      3|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52048|       |
52049|       |
52050|      3|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
52051|      0|				zend_objects_store_del(obj);
52052|      0|			}
52053|      3|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
52054|      0|			if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52054:8): [Folded, False: 0]
  ------------------
52055|      0|				zend_use_new_element_for_string();
52056|       |
52057|       |
52058|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52059|      0|			} else {
52060|      0|				dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52061|      0|				value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
52062|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52063|       |
52064|       |
52065|      0|			}
52066|      2|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
52067|      2|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52068|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      2|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52069|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (52069:8): [True: 0, False: 0]
  ------------------
52070|      0|				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52071|       |
52072|       |
52073|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52074|      2|			} else {
52075|      2|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      2|	_zend_new_array(size)
  ------------------
52076|      2|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
52077|       |
52078|      2|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
52079|      2|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
52080|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52081|      0|					zend_false_to_array_deprecated();
52082|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52083|      0|						zend_array_destroy(ht);
52084|      0|						goto assign_dim_error;
52085|      0|					}
52086|      0|				}
52087|      2|				goto try_assign_dim_array;
52088|      2|			}
52089|      2|		} else {
52090|      0|			zend_use_scalar_as_array();
52091|      0|			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52092|      0|assign_dim_error:
52093|       |
52094|       |
52095|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52096|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52097|      0|			}
52098|      0|		}
52099|      5|	}
52100|    399|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|    399|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|    399|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52100:6): [True: 399, Folded]
  ------------------
52101|       |
52102|       |
52103|    399|	}
52104|       |
52105|       |
52106|       |	/* assign_dim has two opcodes! */
52107|    399|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|    399|	CHECK_SYMBOL_TABLES() \
  |  | 5758|    399|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 399, Folded]
  |  |  ------------------
  |  | 5759|    399|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|    399|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|    399|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|    399|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|    399|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    399|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (52107:2): [True: 0, False: 0]
  |  Branch (52107:2): [True: 0, False: 0]
  ------------------
52108|    399|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER:
52111|    275|{
52112|    275|	USE_OPLINE
52113|    275|	zval *object_ptr, *orig_object_ptr;
52114|    275|	zval *value;
52115|    275|	zval *variable_ptr;
52116|    275|	zval *dim;
52117|    275|	zend_refcounted *garbage = NULL;
52118|       |
52119|    275|	SAVE_OPLINE();
  ------------------
  |  |  428|    275|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    275|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52120|    275|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    275|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    275|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52121|       |
52122|    275|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|    275|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 265, False: 10]
  |  |  ------------------
  ------------------
52123|    271|try_assign_dim_array:
52124|    271|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|    271|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|    271|		zval *__zv = (zv);								\
  |  | 1538|    271|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|    271|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    271|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|    271|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|    271|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 270]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|    271|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 271]
  |  |  ------------------
  ------------------
52125|    271|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|    271|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|    271|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52125:7): [Folded, False: 271]
  ------------------
52126|      0|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52127|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52127:8): [Folded, False: 0]
  ------------------
52128|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52129|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (52129:9): [True: 0, False: 0]
  ------------------
52130|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52131|      0|				}
52132|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52133|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (52133:9): [True: 0, False: 0]
  |  Branch (52133:49): [True: 0, False: 0]
  ------------------
52134|      0|					zend_array_destroy(ht);
52135|      0|					goto assign_dim_error;
52136|      0|				}
52137|      0|			}
52138|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52138:8): [Folded, False: 0]
  |  Branch (52138:31): [Folded, False: 0]
  ------------------
52139|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52140|      0|			}
52141|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52142|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52143|      0|				zend_cannot_add_element();
52144|      0|				goto assign_dim_error;
52145|      0|			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (52145:15): [Folded, False: 0]
  ------------------
52146|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52147|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52148|      0|				}
52149|      0|			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52149:15): [Folded, False: 0]
  ------------------
52150|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52151|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52152|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52153|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52154|      0|					}
52155|      0|					zval_ptr_dtor_nogc(free_op_data);
52156|      0|				}
52157|      0|			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52157:15): [Folded, False: 0]
  ------------------
52158|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52159|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52160|      0|				}
52161|      0|			}
52162|    271|		} else {
52163|    271|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    271|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    271|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52164|    271|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    271|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    271|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52164:8): [Folded, False: 271]
  ------------------
52165|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52166|    271|			} else {
52167|    271|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|    271|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    271|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    271|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|    271|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    271|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52168|    271|			}
52169|    271|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|    271|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 271]
  |  |  ------------------
  ------------------
52170|      0|				goto assign_dim_error;
52171|      0|			}
52172|    271|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    271|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    271|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52173|    271|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|    271|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|    271|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    271|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    271|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52174|    271|		}
52175|    271|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    271|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 271]
  |  |  ------------------
  ------------------
52176|      0|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52177|      0|		}
52178|    271|		if (garbage) {
  ------------------
  |  Branch (52178:7): [True: 0, False: 271]
  ------------------
52179|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52180|      0|		}
52181|    271|	} else {
52182|     10|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
52183|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52184|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52185|      0|				goto try_assign_dim_array;
52186|      0|			}
52187|      0|		}
52188|     10|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 6]
  |  |  ------------------
  ------------------
52189|      4|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
52190|       |
52191|      4|			GC_ADDREF(obj);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52192|      4|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52193|      4|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (52193:8): [True: 4, Folded]
  ------------------
52194|      0|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52195|      4|			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (52195:15): [Folded, False: 4]
  |  Branch (52195:36): [True: 0, False: 0]
  ------------------
52196|      0|				dim++;
52197|      0|			}
52198|       |
52199|      4|			value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52200|      4|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52200:8): [Folded, False: 4]
  ------------------
52201|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52202|      4|			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_TMP_VAR & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52202:15): [Folded, False: 4]
  ------------------
52203|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52204|      0|			}
52205|       |
52206|      4|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52207|       |
52208|      4|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52209|      4|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
52210|      0|				zend_objects_store_del(obj);
52211|      0|			}
52212|      6|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
52213|      0|			if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52213:8): [Folded, False: 0]
  ------------------
52214|      0|				zend_use_new_element_for_string();
52215|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52216|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52217|      0|			} else {
52218|      0|				dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52219|      0|				value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52220|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52221|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52222|      0|			}
52223|      6|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
52224|      6|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      6|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     12|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52225|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      6|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52226|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (52226:8): [True: 0, False: 0]
  ------------------
52227|      0|				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52228|      0|				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52229|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52230|      6|			} else {
52231|      6|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      6|	_zend_new_array(size)
  ------------------
52232|      6|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
52233|       |
52234|      6|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      6|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      6|		zend_array *__arr = (a);				\
  |  | 1127|      6|		zval *__z = (z);						\
  |  | 1128|      6|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      6|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      6|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      6|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      6|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
52235|      6|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
52236|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52237|      0|					zend_false_to_array_deprecated();
52238|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52239|      0|						zend_array_destroy(ht);
52240|      0|						goto assign_dim_error;
52241|      0|					}
52242|      0|				}
52243|      6|				goto try_assign_dim_array;
52244|      6|			}
52245|      6|		} else {
52246|      0|			zend_use_scalar_as_array();
52247|      0|			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52248|      0|assign_dim_error:
52249|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52250|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52251|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52252|      0|			}
52253|      0|		}
52254|     10|	}
52255|    275|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|    275|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|    275|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52255:6): [True: 275, Folded]
  ------------------
52256|       |
52257|       |
52258|    275|	}
52259|       |
52260|       |
52261|       |	/* assign_dim has two opcodes! */
52262|    275|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|    275|	CHECK_SYMBOL_TABLES() \
  |  | 5758|    275|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 275, Folded]
  |  |  ------------------
  |  | 5759|    275|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|    275|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|    275|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|    275|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|    275|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    275|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (52262:2): [True: 0, False: 0]
  |  Branch (52262:2): [True: 0, False: 0]
  ------------------
52263|    275|}
zend_execute.c:ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER:
52266|      7|{
52267|      7|	USE_OPLINE
52268|      7|	zval *object_ptr, *orig_object_ptr;
52269|      7|	zval *value;
52270|      7|	zval *variable_ptr;
52271|      7|	zval *dim;
52272|      7|	zend_refcounted *garbage = NULL;
52273|       |
52274|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52275|      7|	orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52276|       |
52277|      7|	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
52278|      1|try_assign_dim_array:
52279|      1|		SEPARATE_ARRAY(object_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
52280|      1|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52280:7): [Folded, False: 1]
  ------------------
52281|      0|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52282|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52282:8): [True: 0, Folded]
  ------------------
52283|      0|				HashTable *ht = Z_ARRVAL_P(object_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52284|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (52284:9): [True: 0, False: 0]
  ------------------
52285|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52286|      0|				}
52287|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52288|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (52288:9): [True: 0, False: 0]
  |  Branch (52288:49): [True: 0, False: 0]
  ------------------
52289|      0|					zend_array_destroy(ht);
52290|      0|					goto assign_dim_error;
52291|      0|				}
52292|      0|			}
52293|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52293:8): [True: 0, Folded]
  |  Branch (52293:26): [Folded, False: 0]
  ------------------
52294|      0|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52295|      0|			}
52296|      0|			value = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52297|      0|			if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52298|      0|				zend_cannot_add_element();
52299|      0|				goto assign_dim_error;
52300|      0|			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (52300:15): [True: 0, Folded]
  ------------------
52301|      0|				if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52302|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52303|      0|				}
52304|      0|			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52304:15): [Folded, False: 0]
  ------------------
52305|      0|				zval *free_op_data = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52306|      0|				if (Z_ISREF_P(free_op_data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52307|      0|					if (Z_REFCOUNTED_P(value)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52308|      0|						Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52309|      0|					}
52310|      0|					zval_ptr_dtor_nogc(free_op_data);
52311|      0|				}
52312|      0|			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52312:15): [Folded, False: 0]
  ------------------
52313|      0|				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52314|      0|					Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
52315|      0|				}
52316|      0|			}
52317|      1|		} else {
52318|      1|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52319|      1|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52319:8): [Folded, False: 1]
  ------------------
52320|      0|				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52321|      1|			} else {
52322|      1|				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52323|      1|			}
52324|      1|			if (UNEXPECTED(variable_ptr == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
52325|      0|				goto assign_dim_error;
52326|      0|			}
52327|      1|			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52328|      1|			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_assign_to_variable_ex(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52329|      1|		}
52330|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
52331|      1|			ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
52332|      1|		}
52333|      1|		if (garbage) {
  ------------------
  |  Branch (52333:7): [True: 0, False: 1]
  ------------------
52334|      0|			GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52335|      0|		}
52336|      7|	} else {
52337|      7|		if (EXPECTED(Z_ISREF_P(object_ptr))) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
52338|      0|			object_ptr = Z_REFVAL_P(object_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52339|      0|			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52340|      0|				goto try_assign_dim_array;
52341|      0|			}
52342|      0|		}
52343|      7|		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 1]
  |  |  ------------------
  ------------------
52344|      6|			zend_object *obj = Z_OBJ_P(object_ptr);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
52345|       |
52346|      6|			GC_ADDREF(obj);
  ------------------
  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52347|      6|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52348|      6|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (52348:8): [True: 6, Folded]
  ------------------
52349|      1|				dim = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52350|      5|			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (52350:15): [Folded, False: 5]
  |  Branch (52350:36): [True: 0, False: 0]
  ------------------
52351|      0|				dim++;
52352|      0|			}
52353|       |
52354|      6|			value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52355|      6|			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(value))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (52355:8): [True: 6, Folded]
  ------------------
52356|      0|				value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52357|      6|			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV & (IS_CV|IS_VAR)) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52357:15): [True: 6, Folded]
  ------------------
52358|      6|				ZVAL_DEREF(value);
  ------------------
  |  | 1474|      6|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      6|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
52359|      6|			}
52360|       |
52361|      6|			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      6|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      6|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52362|       |
52363|       |
52364|      6|			if (UNEXPECTED(GC_DELREF(obj) == 0)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
52365|      0|				zend_objects_store_del(obj);
52366|      0|			}
52367|      6|		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
52368|      0|			if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52368:8): [Folded, False: 0]
  ------------------
52369|      0|				zend_use_new_element_for_string();
52370|       |
52371|       |
52372|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52373|      0|			} else {
52374|      0|				dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52375|      0|				value = EX_VAR((opline+1)->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52376|      0|				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52377|       |
52378|       |
52379|      0|			}
52380|      1|		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
52381|      1|			if (Z_ISREF_P(orig_object_ptr)
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
52382|      0|			 && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr))
  ------------------
  |  |  123|      1|	(ZEND_REF_TYPE_SOURCES(ref).ptr != NULL)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  |  |  |  Branch (123:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52383|      0|			 && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) {
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
  |  Branch (52383:8): [True: 0, False: 0]
  ------------------
52384|      0|				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52385|       |
52386|       |
52387|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52388|      1|			} else {
52389|      1|				HashTable *ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
52390|      1|				uint8_t old_type = Z_TYPE_P(object_ptr);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
52391|       |
52392|      1|				ZVAL_ARR(object_ptr, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
52393|      1|				if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
52394|      0|					GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52395|      0|					zend_false_to_array_deprecated();
52396|      0|					if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52397|      0|						zend_array_destroy(ht);
52398|      0|						goto assign_dim_error;
52399|      0|					}
52400|      0|				}
52401|      1|				goto try_assign_dim_array;
52402|      1|			}
52403|      1|		} else {
52404|      0|			zend_use_scalar_as_array();
52405|      0|			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52406|      0|assign_dim_error:
52407|       |
52408|       |
52409|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52410|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52411|      0|			}
52412|      0|		}
52413|      7|	}
52414|      7|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      7|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52414:6): [True: 7, Folded]
  ------------------
52415|       |
52416|       |
52417|      7|	}
52418|       |
52419|       |
52420|       |	/* assign_dim has two opcodes! */
52421|      7|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      7|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 7, Folded]
  |  |  ------------------
  |  | 5759|      7|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      7|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      7|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (52421:2): [True: 0, False: 0]
  |  Branch (52421:2): [True: 0, False: 0]
  ------------------
52422|      7|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER:
24439|     22|{
24440|     22|	USE_OPLINE
24441|     22|	zval *object, *value, tmp;
24442|     22|	zend_object *zobj;
24443|     22|	zend_string *name, *tmp_name;
24444|     22|	zend_refcounted *garbage = NULL;
24445|       |
24446|     22|	SAVE_OPLINE();
  ------------------
  |  |  428|     22|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     22|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24447|     22|	object = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     22|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     22|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24448|     22|	value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|     22|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24449|       |
24450|     22|	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  866|     22|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     44|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (24450:6): [True: 22, Folded]
  ------------------
24451|      9|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      9|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     18|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      9|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 7, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      7|#define IS_OBJECT					8
  ------------------
  |  Branch (24451:28): [True: 7, False: 0]
  ------------------
24452|      7|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      7|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      7|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      7|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24453|      7|			goto assign_object;
24454|      7|		}
24455|      2|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24456|      2|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
24457|      2|		goto free_and_exit_assign_obj;
24458|      9|	}
24459|       |
24460|     20|assign_object:
24461|     20|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|     20|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     20|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
24462|     20|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24462:6): [True: 20, Folded]
  ------------------
24463|     20|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 20]
  |  |  ------------------
  ------------------
24464|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24465|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24466|      0|			zval *property_val;
24467|      0|			zend_property_info *prop_info;
24468|       |
24469|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24470|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24471|       |
24472|      0|assign_obj_simple:
24473|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
24474|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (24474:9): [True: 0, False: 0]
  ------------------
24475|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (24475:10): [True: 0, False: 0]
  ------------------
24476|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24477|      0|						goto free_and_exit_assign_obj;
24478|      0|					} else {
24479|      0|fast_assign_obj:
24480|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24481|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24482|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24483|      0|						}
24484|      0|						goto exit_assign_obj;
24485|      0|					}
24486|      0|				}
24487|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24488|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
24489|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24490|      0|					zobj = zend_lazy_object_init(zobj);
24491|      0|					if (!zobj) {
  ------------------
  |  Branch (24491:10): [True: 0, False: 0]
  ------------------
24492|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
24493|      0|						goto free_and_exit_assign_obj;
24494|      0|					}
24495|      0|				}
24496|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (24496:9): [True: 0, False: 0]
  |  Branch (24496:29): [True: 0, False: 0]
  ------------------
24497|      0|					rebuild_object_properties_internal(zobj);
24498|      0|				}
24499|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24500|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24501|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24502|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
24503|      0|						}
24504|      0|						zobj->properties = zend_array_dup(zobj->properties);
24505|      0|					}
24506|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
24507|      0|					if (property_val) {
  ------------------
  |  Branch (24507:10): [True: 0, False: 0]
  ------------------
24508|      0|						goto fast_assign_obj;
24509|      0|					}
24510|      0|				}
24511|       |
24512|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (24512:9): [True: 0, False: 0]
  |  Branch (24512:29): [True: 0, False: 0]
  ------------------
24513|      0|					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24513:10): [True: 0, Folded]
  ------------------
24514|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24515|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
24516|      0|						}
24517|      0|					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (24517:17): [True: 0, Folded]
  ------------------
24518|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24519|      0|							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24519:12): [Folded, False: 0]
  ------------------
24520|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
24521|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (24521:13): [True: 0, False: 0]
  ------------------
24522|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24523|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24524|      0|									value = &tmp;
24525|      0|								} else {
24526|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24527|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24528|      0|								}
24529|      0|							} else {
24530|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24531|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24532|      0|							}
24533|      0|						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (24533:18): [Folded, False: 0]
  ------------------
24534|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24535|      0|						}
24536|      0|					}
24537|      0|					zend_hash_add_new(zobj->properties, name, value);
24538|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24539|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24540|      0|					}
24541|      0|					goto exit_assign_obj;
24542|      0|				}
24543|      0|			} else {
24544|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (24544:5): [True: 0, False: 0]
  |  Branch (24544:5): [True: 0, False: 0]
  |  Branch (24544:5): [True: 0, False: 0]
  |  Branch (24544:5): [True: 0, False: 0]
  ------------------
24545|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24546|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24547|      0|					prop_offset = prop_info->offset;
24548|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (24548:10): [True: 0, False: 0]
  ------------------
24549|      0|						prop_info = NULL;
24550|      0|					}
24551|      0|					goto assign_obj_simple;
24552|      0|				}
24553|       |				/* Fall through to write_property for hooks. */
24554|      0|			}
24555|      0|		}
24556|     20|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     20|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     20|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
24557|     20|	} else {
24558|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24559|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24560|       |
24561|       |
24562|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24563|      0|			goto exit_assign_obj;
24564|      0|		}
24565|      0|	}
24566|       |
24567|     20|	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|     40|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24567:6): [Folded, False: 0]
  |  Branch (24567:27): [Folded, False: 0]
  ------------------
24568|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24569|      0|	}
24570|       |
24571|     20|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|     20|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     20|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (24571:60): [True: 20, Folded]
  ------------------
24572|       |
24573|     20|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24573:6): [Folded, False: 20]
  ------------------
24574|      0|		zend_tmp_string_release(tmp_name);
24575|      0|	}
24576|       |
24577|     22|free_and_exit_assign_obj:
24578|     22|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     44|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 19]
  |  |  ------------------
  ------------------
  |  Branch (24578:47): [True: 1, False: 2]
  ------------------
24579|      1|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      1|		zval *_z3 = (v);								\
  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
24580|      1|	}
24581|       |
24582|       |
24583|     22|exit_assign_obj:
24584|     22|	if (garbage) {
  ------------------
  |  Branch (24584:6): [True: 0, False: 22]
  ------------------
24585|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24586|      0|	}
24587|       |
24588|       |
24589|     22|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     22|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     22|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24590|       |	/* assign_obj has two opcodes! */
24591|     22|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     22|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     22|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 22, Folded]
  |  |  ------------------
  |  | 5759|     22|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     22|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     22|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     22|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     22|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     22|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (24591:2): [True: 0, False: 0]
  |  Branch (24591:2): [True: 0, False: 0]
  ------------------
24592|     22|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER:
24596|      7|{
24597|      7|	USE_OPLINE
24598|      7|	zval *object, *value, tmp;
24599|      7|	zend_object *zobj;
24600|      7|	zend_string *name, *tmp_name;
24601|      7|	zend_refcounted *garbage = NULL;
24602|       |
24603|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24604|      7|	object = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      7|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      7|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24605|      7|	value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      7|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      7|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24606|       |
24607|      7|	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  866|      7|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     14|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (24607:6): [True: 7, Folded]
  ------------------
24608|      1|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (24608:28): [True: 0, False: 0]
  ------------------
24609|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24610|      0|			goto assign_object;
24611|      0|		}
24612|      1|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24613|      1|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
24614|      1|		goto free_and_exit_assign_obj;
24615|      1|	}
24616|       |
24617|      6|assign_object:
24618|      6|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
24619|      6|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24619:6): [True: 6, Folded]
  ------------------
24620|      6|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
24621|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24622|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24623|      0|			zval *property_val;
24624|      0|			zend_property_info *prop_info;
24625|       |
24626|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24627|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24628|       |
24629|      0|assign_obj_simple:
24630|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
24631|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (24631:9): [True: 0, False: 0]
  ------------------
24632|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (24632:10): [True: 0, False: 0]
  ------------------
24633|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24634|      0|						goto free_and_exit_assign_obj;
24635|      0|					} else {
24636|      0|fast_assign_obj:
24637|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24638|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24639|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24640|      0|						}
24641|      0|						goto exit_assign_obj;
24642|      0|					}
24643|      0|				}
24644|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24645|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
24646|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24647|      0|					zobj = zend_lazy_object_init(zobj);
24648|      0|					if (!zobj) {
  ------------------
  |  Branch (24648:10): [True: 0, False: 0]
  ------------------
24649|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
24650|      0|						goto free_and_exit_assign_obj;
24651|      0|					}
24652|      0|				}
24653|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (24653:9): [True: 0, False: 0]
  |  Branch (24653:29): [True: 0, False: 0]
  ------------------
24654|      0|					rebuild_object_properties_internal(zobj);
24655|      0|				}
24656|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24657|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24658|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24659|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
24660|      0|						}
24661|      0|						zobj->properties = zend_array_dup(zobj->properties);
24662|      0|					}
24663|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
24664|      0|					if (property_val) {
  ------------------
  |  Branch (24664:10): [True: 0, False: 0]
  ------------------
24665|      0|						goto fast_assign_obj;
24666|      0|					}
24667|      0|				}
24668|       |
24669|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (24669:9): [True: 0, False: 0]
  |  Branch (24669:29): [True: 0, False: 0]
  ------------------
24670|      0|					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24670:10): [Folded, False: 0]
  ------------------
24671|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24672|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
24673|      0|						}
24674|      0|					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (24674:17): [Folded, False: 0]
  ------------------
24675|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24676|      0|							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24676:12): [Folded, False: 0]
  ------------------
24677|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
24678|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (24678:13): [True: 0, False: 0]
  ------------------
24679|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24680|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24681|      0|									value = &tmp;
24682|      0|								} else {
24683|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24684|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24685|      0|								}
24686|      0|							} else {
24687|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24688|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24689|      0|							}
24690|      0|						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (24690:18): [Folded, False: 0]
  ------------------
24691|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24692|      0|						}
24693|      0|					}
24694|      0|					zend_hash_add_new(zobj->properties, name, value);
24695|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24696|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24697|      0|					}
24698|      0|					goto exit_assign_obj;
24699|      0|				}
24700|      0|			} else {
24701|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (24701:5): [True: 0, False: 0]
  |  Branch (24701:5): [True: 0, False: 0]
  |  Branch (24701:5): [True: 0, False: 0]
  |  Branch (24701:5): [True: 0, False: 0]
  ------------------
24702|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24703|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24704|      0|					prop_offset = prop_info->offset;
24705|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (24705:10): [True: 0, False: 0]
  ------------------
24706|      0|						prop_info = NULL;
24707|      0|					}
24708|      0|					goto assign_obj_simple;
24709|      0|				}
24710|       |				/* Fall through to write_property for hooks. */
24711|      0|			}
24712|      0|		}
24713|      6|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
24714|      6|	} else {
24715|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24716|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24717|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24718|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24719|      0|			goto exit_assign_obj;
24720|      0|		}
24721|      0|	}
24722|       |
24723|      6|	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24723:6): [Folded, False: 0]
  |  Branch (24723:29): [Folded, False: 0]
  ------------------
24724|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24725|      0|	}
24726|       |
24727|      6|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      6|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (24727:60): [True: 6, Folded]
  ------------------
24728|       |
24729|      6|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24729:6): [Folded, False: 6]
  ------------------
24730|      0|		zend_tmp_string_release(tmp_name);
24731|      0|	}
24732|       |
24733|      7|free_and_exit_assign_obj:
24734|      7|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (24734:47): [True: 0, False: 0]
  ------------------
24735|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24736|      0|	}
24737|      7|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24738|      7|exit_assign_obj:
24739|      7|	if (garbage) {
  ------------------
  |  Branch (24739:6): [True: 0, False: 7]
  ------------------
24740|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24741|      0|	}
24742|       |
24743|       |
24744|      7|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24745|       |	/* assign_obj has two opcodes! */
24746|      7|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      7|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 7, Folded]
  |  |  ------------------
  |  | 5759|      7|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      7|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      7|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (24746:2): [True: 0, False: 0]
  |  Branch (24746:2): [True: 0, False: 0]
  ------------------
24747|      7|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER:
24751|      1|{
24752|      1|	USE_OPLINE
24753|      1|	zval *object, *value, tmp;
24754|      1|	zend_object *zobj;
24755|      1|	zend_string *name, *tmp_name;
24756|      1|	zend_refcounted *garbage = NULL;
24757|       |
24758|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24759|      1|	object = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24760|      1|	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24761|       |
24762|      1|	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (24762:6): [True: 1, Folded]
  ------------------
24763|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (24763:28): [True: 0, False: 0]
  ------------------
24764|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24765|      0|			goto assign_object;
24766|      0|		}
24767|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24768|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
24769|      0|		goto free_and_exit_assign_obj;
24770|      0|	}
24771|       |
24772|      1|assign_object:
24773|      1|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
24774|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24774:6): [True: 1, Folded]
  ------------------
24775|      1|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
24776|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24777|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24778|      0|			zval *property_val;
24779|      0|			zend_property_info *prop_info;
24780|       |
24781|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24782|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24783|       |
24784|      0|assign_obj_simple:
24785|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
24786|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (24786:9): [True: 0, False: 0]
  ------------------
24787|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (24787:10): [True: 0, False: 0]
  ------------------
24788|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24789|      0|						goto free_and_exit_assign_obj;
24790|      0|					} else {
24791|      0|fast_assign_obj:
24792|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24793|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24794|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24795|      0|						}
24796|      0|						goto exit_assign_obj;
24797|      0|					}
24798|      0|				}
24799|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24800|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
24801|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24802|      0|					zobj = zend_lazy_object_init(zobj);
24803|      0|					if (!zobj) {
  ------------------
  |  Branch (24803:10): [True: 0, False: 0]
  ------------------
24804|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
24805|      0|						goto free_and_exit_assign_obj;
24806|      0|					}
24807|      0|				}
24808|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (24808:9): [True: 0, False: 0]
  |  Branch (24808:29): [True: 0, False: 0]
  ------------------
24809|      0|					rebuild_object_properties_internal(zobj);
24810|      0|				}
24811|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24812|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24813|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24814|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
24815|      0|						}
24816|      0|						zobj->properties = zend_array_dup(zobj->properties);
24817|      0|					}
24818|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
24819|      0|					if (property_val) {
  ------------------
  |  Branch (24819:10): [True: 0, False: 0]
  ------------------
24820|      0|						goto fast_assign_obj;
24821|      0|					}
24822|      0|				}
24823|       |
24824|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (24824:9): [True: 0, False: 0]
  |  Branch (24824:29): [True: 0, False: 0]
  ------------------
24825|      0|					if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24825:10): [Folded, False: 0]
  ------------------
24826|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24827|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
24828|      0|						}
24829|      0|					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (24829:17): [True: 0, Folded]
  ------------------
24830|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24831|      0|							if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24831:12): [Folded, False: 0]
  ------------------
24832|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
24833|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (24833:13): [True: 0, False: 0]
  ------------------
24834|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24835|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24836|      0|									value = &tmp;
24837|      0|								} else {
24838|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24839|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24840|      0|								}
24841|      0|							} else {
24842|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24843|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24844|      0|							}
24845|      0|						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (24845:18): [True: 0, Folded]
  ------------------
24846|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
24847|      0|						}
24848|      0|					}
24849|      0|					zend_hash_add_new(zobj->properties, name, value);
24850|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24851|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24852|      0|					}
24853|      0|					goto exit_assign_obj;
24854|      0|				}
24855|      0|			} else {
24856|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (24856:5): [True: 0, False: 0]
  |  Branch (24856:5): [True: 0, False: 0]
  |  Branch (24856:5): [True: 0, False: 0]
  |  Branch (24856:5): [True: 0, False: 0]
  ------------------
24857|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24858|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
24859|      0|					prop_offset = prop_info->offset;
24860|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (24860:10): [True: 0, False: 0]
  ------------------
24861|      0|						prop_info = NULL;
24862|      0|					}
24863|      0|					goto assign_obj_simple;
24864|      0|				}
24865|       |				/* Fall through to write_property for hooks. */
24866|      0|			}
24867|      0|		}
24868|      1|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
24869|      1|	} else {
24870|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24871|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24872|       |
24873|       |
24874|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24875|      0|			goto exit_assign_obj;
24876|      0|		}
24877|      0|	}
24878|       |
24879|      1|	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24879:6): [True: 1, Folded]
  |  Branch (24879:24): [Folded, False: 0]
  ------------------
24880|      1|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
24881|      1|	}
24882|       |
24883|      1|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (24883:60): [True: 1, Folded]
  ------------------
24884|       |
24885|      1|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24885:6): [Folded, False: 1]
  ------------------
24886|      0|		zend_tmp_string_release(tmp_name);
24887|      0|	}
24888|       |
24889|      1|free_and_exit_assign_obj:
24890|      1|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (24890:47): [True: 0, False: 0]
  ------------------
24891|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24892|      0|	}
24893|       |
24894|       |
24895|      1|exit_assign_obj:
24896|      1|	if (garbage) {
  ------------------
  |  Branch (24896:6): [True: 0, False: 1]
  ------------------
24897|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24898|      0|	}
24899|       |
24900|       |
24901|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24902|       |	/* assign_obj has two opcodes! */
24903|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (24903:2): [True: 0, False: 0]
  |  Branch (24903:2): [True: 0, False: 0]
  ------------------
24904|      1|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER:
33505|      5|{
33506|      5|	USE_OPLINE
33507|      5|	zval *object, *value, tmp;
33508|      5|	zend_object *zobj;
33509|      5|	zend_string *name, *tmp_name;
33510|      5|	zend_refcounted *garbage = NULL;
33511|       |
33512|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33513|      5|	object = &EX(This);
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
33514|      5|	value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33515|       |
33516|      5|	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (33516:6): [Folded, False: 5]
  ------------------
33517|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (33517:28): [True: 0, False: 0]
  ------------------
33518|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33519|      0|			goto assign_object;
33520|      0|		}
33521|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33522|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33523|      0|		goto free_and_exit_assign_obj;
33524|      0|	}
33525|       |
33526|      5|assign_object:
33527|      5|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
33528|      5|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33528:6): [True: 5, Folded]
  ------------------
33529|      5|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
33530|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33531|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33532|      0|			zval *property_val;
33533|      0|			zend_property_info *prop_info;
33534|       |
33535|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33536|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33537|       |
33538|      0|assign_obj_simple:
33539|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
33540|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (33540:9): [True: 0, False: 0]
  ------------------
33541|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (33541:10): [True: 0, False: 0]
  ------------------
33542|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33543|      0|						goto free_and_exit_assign_obj;
33544|      0|					} else {
33545|      0|fast_assign_obj:
33546|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33547|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33548|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33549|      0|						}
33550|      0|						goto exit_assign_obj;
33551|      0|					}
33552|      0|				}
33553|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33554|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33555|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33556|      0|					zobj = zend_lazy_object_init(zobj);
33557|      0|					if (!zobj) {
  ------------------
  |  Branch (33557:10): [True: 0, False: 0]
  ------------------
33558|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33559|      0|						goto free_and_exit_assign_obj;
33560|      0|					}
33561|      0|				}
33562|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (33562:9): [True: 0, False: 0]
  |  Branch (33562:29): [True: 0, False: 0]
  ------------------
33563|      0|					rebuild_object_properties_internal(zobj);
33564|      0|				}
33565|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33566|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33567|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33568|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
33569|      0|						}
33570|      0|						zobj->properties = zend_array_dup(zobj->properties);
33571|      0|					}
33572|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
33573|      0|					if (property_val) {
  ------------------
  |  Branch (33573:10): [True: 0, False: 0]
  ------------------
33574|      0|						goto fast_assign_obj;
33575|      0|					}
33576|      0|				}
33577|       |
33578|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (33578:9): [True: 0, False: 0]
  |  Branch (33578:29): [True: 0, False: 0]
  ------------------
33579|      0|					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33579:10): [True: 0, Folded]
  ------------------
33580|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33581|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
33582|      0|						}
33583|      0|					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (33583:17): [True: 0, Folded]
  ------------------
33584|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33585|      0|							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33585:12): [Folded, False: 0]
  ------------------
33586|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
33587|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (33587:13): [True: 0, False: 0]
  ------------------
33588|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33589|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33590|      0|									value = &tmp;
33591|      0|								} else {
33592|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33593|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33594|      0|								}
33595|      0|							} else {
33596|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33597|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33598|      0|							}
33599|      0|						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (33599:18): [Folded, False: 0]
  ------------------
33600|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33601|      0|						}
33602|      0|					}
33603|      0|					zend_hash_add_new(zobj->properties, name, value);
33604|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33605|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33606|      0|					}
33607|      0|					goto exit_assign_obj;
33608|      0|				}
33609|      0|			} else {
33610|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33610:5): [True: 0, False: 0]
  |  Branch (33610:5): [True: 0, False: 0]
  |  Branch (33610:5): [True: 0, False: 0]
  |  Branch (33610:5): [True: 0, False: 0]
  ------------------
33611|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33612|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33613|      0|					prop_offset = prop_info->offset;
33614|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (33614:10): [True: 0, False: 0]
  ------------------
33615|      0|						prop_info = NULL;
33616|      0|					}
33617|      0|					goto assign_obj_simple;
33618|      0|				}
33619|       |				/* Fall through to write_property for hooks. */
33620|      0|			}
33621|      0|		}
33622|      5|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33623|      5|	} else {
33624|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33625|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33626|       |
33627|       |
33628|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33629|      0|			goto exit_assign_obj;
33630|      0|		}
33631|      0|	}
33632|       |
33633|      5|	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33633:6): [Folded, False: 0]
  |  Branch (33633:27): [Folded, False: 0]
  ------------------
33634|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33635|      0|	}
33636|       |
33637|      5|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      5|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (33637:60): [True: 5, Folded]
  ------------------
33638|       |
33639|      5|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33639:6): [Folded, False: 5]
  ------------------
33640|      0|		zend_tmp_string_release(tmp_name);
33641|      0|	}
33642|       |
33643|      5|free_and_exit_assign_obj:
33644|      5|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (33644:47): [True: 0, False: 0]
  ------------------
33645|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33646|      0|	}
33647|       |
33648|       |
33649|      5|exit_assign_obj:
33650|      5|	if (garbage) {
  ------------------
  |  Branch (33650:6): [True: 0, False: 5]
  ------------------
33651|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33652|      0|	}
33653|       |
33654|       |
33655|       |
33656|       |
33657|       |	/* assign_obj has two opcodes! */
33658|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      5|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  ------------------
  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      5|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      5|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (33658:2): [True: 0, False: 0]
  |  Branch (33658:2): [True: 0, False: 0]
  ------------------
33659|      5|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER:
33663|      3|{
33664|      3|	USE_OPLINE
33665|      3|	zval *object, *value, tmp;
33666|      3|	zend_object *zobj;
33667|      3|	zend_string *name, *tmp_name;
33668|      3|	zend_refcounted *garbage = NULL;
33669|       |
33670|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33671|      3|	object = &EX(This);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
33672|      3|	value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33673|       |
33674|      3|	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (33674:6): [Folded, False: 3]
  ------------------
33675|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (33675:28): [True: 0, False: 0]
  ------------------
33676|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33677|      0|			goto assign_object;
33678|      0|		}
33679|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33680|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33681|      0|		goto free_and_exit_assign_obj;
33682|      0|	}
33683|       |
33684|      3|assign_object:
33685|      3|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
33686|      3|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33686:6): [True: 3, Folded]
  ------------------
33687|      3|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
33688|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33689|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33690|      0|			zval *property_val;
33691|      0|			zend_property_info *prop_info;
33692|       |
33693|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33694|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33695|       |
33696|      0|assign_obj_simple:
33697|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
33698|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (33698:9): [True: 0, False: 0]
  ------------------
33699|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (33699:10): [True: 0, False: 0]
  ------------------
33700|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33701|      0|						goto free_and_exit_assign_obj;
33702|      0|					} else {
33703|      0|fast_assign_obj:
33704|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33705|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33706|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33707|      0|						}
33708|      0|						goto exit_assign_obj;
33709|      0|					}
33710|      0|				}
33711|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33712|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33713|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33714|      0|					zobj = zend_lazy_object_init(zobj);
33715|      0|					if (!zobj) {
  ------------------
  |  Branch (33715:10): [True: 0, False: 0]
  ------------------
33716|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33717|      0|						goto free_and_exit_assign_obj;
33718|      0|					}
33719|      0|				}
33720|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (33720:9): [True: 0, False: 0]
  |  Branch (33720:29): [True: 0, False: 0]
  ------------------
33721|      0|					rebuild_object_properties_internal(zobj);
33722|      0|				}
33723|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33724|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33725|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33726|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
33727|      0|						}
33728|      0|						zobj->properties = zend_array_dup(zobj->properties);
33729|      0|					}
33730|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
33731|      0|					if (property_val) {
  ------------------
  |  Branch (33731:10): [True: 0, False: 0]
  ------------------
33732|      0|						goto fast_assign_obj;
33733|      0|					}
33734|      0|				}
33735|       |
33736|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (33736:9): [True: 0, False: 0]
  |  Branch (33736:29): [True: 0, False: 0]
  ------------------
33737|      0|					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33737:10): [Folded, False: 0]
  ------------------
33738|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33739|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
33740|      0|						}
33741|      0|					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (33741:17): [Folded, False: 0]
  ------------------
33742|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33743|      0|							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33743:12): [Folded, False: 0]
  ------------------
33744|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
33745|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (33745:13): [True: 0, False: 0]
  ------------------
33746|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33747|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33748|      0|									value = &tmp;
33749|      0|								} else {
33750|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33751|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33752|      0|								}
33753|      0|							} else {
33754|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33755|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33756|      0|							}
33757|      0|						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (33757:18): [Folded, False: 0]
  ------------------
33758|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33759|      0|						}
33760|      0|					}
33761|      0|					zend_hash_add_new(zobj->properties, name, value);
33762|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33763|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33764|      0|					}
33765|      0|					goto exit_assign_obj;
33766|      0|				}
33767|      0|			} else {
33768|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33768:5): [True: 0, False: 0]
  |  Branch (33768:5): [True: 0, False: 0]
  |  Branch (33768:5): [True: 0, False: 0]
  |  Branch (33768:5): [True: 0, False: 0]
  ------------------
33769|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33770|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33771|      0|					prop_offset = prop_info->offset;
33772|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (33772:10): [True: 0, False: 0]
  ------------------
33773|      0|						prop_info = NULL;
33774|      0|					}
33775|      0|					goto assign_obj_simple;
33776|      0|				}
33777|       |				/* Fall through to write_property for hooks. */
33778|      0|			}
33779|      0|		}
33780|      3|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33781|      3|	} else {
33782|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33783|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33784|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
33785|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33786|      0|			goto exit_assign_obj;
33787|      0|		}
33788|      0|	}
33789|       |
33790|      3|	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33790:6): [Folded, False: 0]
  |  Branch (33790:29): [Folded, False: 0]
  ------------------
33791|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33792|      0|	}
33793|       |
33794|      3|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      3|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (33794:60): [True: 3, Folded]
  ------------------
33795|       |
33796|      3|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33796:6): [Folded, False: 3]
  ------------------
33797|      0|		zend_tmp_string_release(tmp_name);
33798|      0|	}
33799|       |
33800|      3|free_and_exit_assign_obj:
33801|      3|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (33801:47): [True: 0, False: 0]
  ------------------
33802|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33803|      0|	}
33804|      3|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
33805|      3|exit_assign_obj:
33806|      3|	if (garbage) {
  ------------------
  |  Branch (33806:6): [True: 0, False: 3]
  ------------------
33807|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33808|      0|	}
33809|       |
33810|       |
33811|       |
33812|       |
33813|       |	/* assign_obj has two opcodes! */
33814|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      3|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  ------------------
  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      3|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      3|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (33814:2): [True: 0, False: 0]
  |  Branch (33814:2): [True: 0, False: 0]
  ------------------
33815|      3|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER:
33819|     17|{
33820|     17|	USE_OPLINE
33821|     17|	zval *object, *value, tmp;
33822|     17|	zend_object *zobj;
33823|     17|	zend_string *name, *tmp_name;
33824|     17|	zend_refcounted *garbage = NULL;
33825|       |
33826|     17|	SAVE_OPLINE();
  ------------------
  |  |  428|     17|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33827|     17|	object = &EX(This);
  ------------------
  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  ------------------
33828|     17|	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     17|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     17|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33829|       |
33830|     17|	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     17|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     34|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (33830:6): [Folded, False: 17]
  ------------------
33831|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (33831:28): [True: 0, False: 0]
  ------------------
33832|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33833|      0|			goto assign_object;
33834|      0|		}
33835|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33836|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33837|      0|		goto free_and_exit_assign_obj;
33838|      0|	}
33839|       |
33840|     17|assign_object:
33841|     17|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|     17|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     17|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
33842|     17|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33842:6): [True: 17, Folded]
  ------------------
33843|     17|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|     17|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 8]
  |  |  ------------------
  ------------------
33844|      9|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      9|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33845|      9|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      9|	(slot)[0]
  ------------------
33846|      9|			zval *property_val;
33847|      9|			zend_property_info *prop_info;
33848|       |
33849|      9|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
33850|      9|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      9|	(slot)[0]
  ------------------
33851|       |
33852|      9|assign_obj_simple:
33853|      9|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      9|	((zval*)((char*)(obj) + offset))
  ------------------
33854|      9|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      9|#define IS_UNDEF					0
  ------------------
  |  Branch (33854:9): [True: 9, False: 0]
  ------------------
33855|      9|					if (prop_info != NULL) {
  ------------------
  |  Branch (33855:10): [True: 0, False: 9]
  ------------------
33856|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33857|      0|						goto free_and_exit_assign_obj;
33858|      9|					} else {
33859|      9|fast_assign_obj:
33860|      9|						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      9|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      9|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      9|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33861|      9|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
33862|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33863|      0|						}
33864|      9|						goto exit_assign_obj;
33865|      9|					}
33866|      9|				}
33867|      9|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33868|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33869|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33870|      0|					zobj = zend_lazy_object_init(zobj);
33871|      0|					if (!zobj) {
  ------------------
  |  Branch (33871:10): [True: 0, False: 0]
  ------------------
33872|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33873|      0|						goto free_and_exit_assign_obj;
33874|      0|					}
33875|      0|				}
33876|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (33876:9): [True: 0, False: 0]
  |  Branch (33876:29): [True: 0, False: 0]
  ------------------
33877|      0|					rebuild_object_properties_internal(zobj);
33878|      0|				}
33879|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33880|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33881|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33882|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
33883|      0|						}
33884|      0|						zobj->properties = zend_array_dup(zobj->properties);
33885|      0|					}
33886|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
33887|      0|					if (property_val) {
  ------------------
  |  Branch (33887:10): [True: 0, False: 0]
  ------------------
33888|      0|						goto fast_assign_obj;
33889|      0|					}
33890|      0|				}
33891|       |
33892|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (33892:9): [True: 0, False: 0]
  |  Branch (33892:29): [True: 0, False: 0]
  ------------------
33893|      0|					if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33893:10): [Folded, False: 0]
  ------------------
33894|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33895|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
33896|      0|						}
33897|      0|					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (33897:17): [True: 0, Folded]
  ------------------
33898|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33899|      0|							if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33899:12): [Folded, False: 0]
  ------------------
33900|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
33901|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (33901:13): [True: 0, False: 0]
  ------------------
33902|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33903|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33904|      0|									value = &tmp;
33905|      0|								} else {
33906|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33907|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33908|      0|								}
33909|      0|							} else {
33910|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33911|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33912|      0|							}
33913|      0|						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (33913:18): [True: 0, Folded]
  ------------------
33914|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33915|      0|						}
33916|      0|					}
33917|      0|					zend_hash_add_new(zobj->properties, name, value);
33918|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33919|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33920|      0|					}
33921|      0|					goto exit_assign_obj;
33922|      0|				}
33923|      0|			} else {
33924|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33924:5): [True: 0, False: 0]
  |  Branch (33924:5): [True: 0, False: 0]
  |  Branch (33924:5): [True: 0, False: 0]
  |  Branch (33924:5): [True: 0, False: 0]
  ------------------
33925|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33926|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33927|      0|					prop_offset = prop_info->offset;
33928|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (33928:10): [True: 0, False: 0]
  ------------------
33929|      0|						prop_info = NULL;
33930|      0|					}
33931|      0|					goto assign_obj_simple;
33932|      0|				}
33933|       |				/* Fall through to write_property for hooks. */
33934|      0|			}
33935|      9|		}
33936|      8|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33937|      8|	} else {
33938|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33939|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33940|       |
33941|       |
33942|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33943|      0|			goto exit_assign_obj;
33944|      0|		}
33945|      0|	}
33946|       |
33947|      8|	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|     16|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33947:6): [True: 8, Folded]
  |  Branch (33947:24): [Folded, False: 0]
  ------------------
33948|      8|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      8|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      8|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
33949|      8|	}
33950|       |
33951|      8|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      8|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (33951:60): [True: 8, Folded]
  ------------------
33952|       |
33953|      8|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33953:6): [Folded, False: 8]
  ------------------
33954|      0|		zend_tmp_string_release(tmp_name);
33955|      0|	}
33956|       |
33957|      8|free_and_exit_assign_obj:
33958|      8|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (33958:47): [True: 0, False: 0]
  ------------------
33959|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33960|      0|	}
33961|       |
33962|       |
33963|     17|exit_assign_obj:
33964|     17|	if (garbage) {
  ------------------
  |  Branch (33964:6): [True: 0, False: 17]
  ------------------
33965|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33966|      0|	}
33967|       |
33968|       |
33969|       |
33970|       |
33971|       |	/* assign_obj has two opcodes! */
33972|     17|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     17|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     17|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 17, Folded]
  |  |  ------------------
  |  | 5759|     17|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     17|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     17|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     17|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     17|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (33972:2): [True: 0, False: 0]
  |  Branch (33972:2): [True: 0, False: 0]
  ------------------
33973|     17|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_OP_DATA_TMP_HANDLER:
35760|      2|{
35761|      2|	USE_OPLINE
35762|      2|	zval *object, *value, tmp;
35763|      2|	zend_object *zobj;
35764|      2|	zend_string *name, *tmp_name;
35765|      2|	zend_refcounted *garbage = NULL;
35766|       |
35767|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
35768|      2|	object = &EX(This);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
35769|      2|	value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35770|       |
35771|      2|	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (35771:6): [Folded, False: 2]
  ------------------
35772|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (35772:28): [True: 0, False: 0]
  ------------------
35773|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35774|      0|			goto assign_object;
35775|      0|		}
35776|      0|		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35777|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
35778|      0|		goto free_and_exit_assign_obj;
35779|      0|	}
35780|       |
35781|      2|assign_object:
35782|      2|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
35783|      2|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (35783:6): [Folded, False: 2]
  ------------------
35784|      0|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35785|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
35786|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
35787|      0|			zval *property_val;
35788|      0|			zend_property_info *prop_info;
35789|       |
35790|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35791|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
35792|       |
35793|      0|assign_obj_simple:
35794|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
35795|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (35795:9): [True: 0, False: 0]
  ------------------
35796|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (35796:10): [True: 0, False: 0]
  ------------------
35797|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35798|      0|						goto free_and_exit_assign_obj;
35799|      0|					} else {
35800|      0|fast_assign_obj:
35801|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35802|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35803|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35804|      0|						}
35805|      0|						goto exit_assign_obj;
35806|      0|					}
35807|      0|				}
35808|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35809|      0|				name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
35810|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35811|      0|					zobj = zend_lazy_object_init(zobj);
35812|      0|					if (!zobj) {
  ------------------
  |  Branch (35812:10): [True: 0, False: 0]
  ------------------
35813|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
35814|      0|						goto free_and_exit_assign_obj;
35815|      0|					}
35816|      0|				}
35817|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (35817:9): [True: 0, False: 0]
  |  Branch (35817:29): [True: 0, False: 0]
  ------------------
35818|      0|					rebuild_object_properties_internal(zobj);
35819|      0|				}
35820|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35821|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35822|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35823|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
35824|      0|						}
35825|      0|						zobj->properties = zend_array_dup(zobj->properties);
35826|      0|					}
35827|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
35828|      0|					if (property_val) {
  ------------------
  |  Branch (35828:10): [True: 0, False: 0]
  ------------------
35829|      0|						goto fast_assign_obj;
35830|      0|					}
35831|      0|				}
35832|       |
35833|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (35833:9): [True: 0, False: 0]
  |  Branch (35833:29): [True: 0, False: 0]
  ------------------
35834|      0|					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (35834:10): [Folded, False: 0]
  ------------------
35835|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35836|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
35837|      0|						}
35838|      0|					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (35838:17): [Folded, False: 0]
  ------------------
35839|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35840|      0|							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (35840:12): [Folded, False: 0]
  ------------------
35841|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
35842|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (35842:13): [True: 0, False: 0]
  ------------------
35843|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35844|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35845|      0|									value = &tmp;
35846|      0|								} else {
35847|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35848|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
35849|      0|								}
35850|      0|							} else {
35851|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35852|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
35853|      0|							}
35854|      0|						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (35854:18): [Folded, False: 0]
  ------------------
35855|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
35856|      0|						}
35857|      0|					}
35858|      0|					zend_hash_add_new(zobj->properties, name, value);
35859|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35860|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35861|      0|					}
35862|      0|					goto exit_assign_obj;
35863|      0|				}
35864|      0|			} else {
35865|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (35865:5): [True: 0, False: 0]
  |  Branch (35865:5): [True: 0, False: 0]
  |  Branch (35865:5): [True: 0, False: 0]
  |  Branch (35865:5): [True: 0, False: 0]
  ------------------
35866|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35867|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
35868|      0|					prop_offset = prop_info->offset;
35869|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (35869:10): [True: 0, False: 0]
  ------------------
35870|      0|						prop_info = NULL;
35871|      0|					}
35872|      0|					goto assign_obj_simple;
35873|      0|				}
35874|       |				/* Fall through to write_property for hooks. */
35875|      0|			}
35876|      0|		}
35877|      0|		name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
35878|      2|	} else {
35879|      2|		name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35880|      2|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
35881|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35882|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35883|      0|			goto exit_assign_obj;
35884|      0|		}
35885|      2|	}
35886|       |
35887|      2|	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (35887:6): [Folded, False: 0]
  |  Branch (35887:29): [Folded, False: 0]
  ------------------
35888|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35889|      0|	}
35890|       |
35891|      2|	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (35891:60): [Folded, False: 2]
  ------------------
35892|       |
35893|      2|	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (35893:6): [True: 2, Folded]
  ------------------
35894|      2|		zend_tmp_string_release(tmp_name);
35895|      2|	}
35896|       |
35897|      2|free_and_exit_assign_obj:
35898|      2|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (35898:47): [True: 0, False: 0]
  ------------------
35899|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35900|      0|	}
35901|      2|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35902|      2|exit_assign_obj:
35903|      2|	if (garbage) {
  ------------------
  |  Branch (35903:6): [True: 0, False: 2]
  ------------------
35904|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35905|      0|	}
35906|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35907|       |
35908|       |
35909|       |	/* assign_obj has two opcodes! */
35910|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (35910:2): [True: 0, False: 0]
  |  Branch (35910:2): [True: 0, False: 0]
  ------------------
35911|      2|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER:
38486|      1|{
38487|      1|	USE_OPLINE
38488|      1|	zval *object, *value, tmp;
38489|      1|	zend_object *zobj;
38490|      1|	zend_string *name, *tmp_name;
38491|      1|	zend_refcounted *garbage = NULL;
38492|       |
38493|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
38494|      1|	object = &EX(This);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
38495|      1|	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38496|       |
38497|      1|	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (38497:6): [Folded, False: 1]
  ------------------
38498|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (38498:28): [True: 0, False: 0]
  ------------------
38499|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38500|      0|			goto assign_object;
38501|      0|		}
38502|      0|		zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38503|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
38504|      0|		goto free_and_exit_assign_obj;
38505|      0|	}
38506|       |
38507|      1|assign_object:
38508|      1|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
38509|      1|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (38509:6): [Folded, False: 1]
  ------------------
38510|      0|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38511|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
38512|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
38513|      0|			zval *property_val;
38514|      0|			zend_property_info *prop_info;
38515|       |
38516|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38517|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
38518|       |
38519|      0|assign_obj_simple:
38520|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
38521|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (38521:9): [True: 0, False: 0]
  ------------------
38522|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (38522:10): [True: 0, False: 0]
  ------------------
38523|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38524|      0|						goto free_and_exit_assign_obj;
38525|      0|					} else {
38526|      0|fast_assign_obj:
38527|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38528|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38529|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38530|      0|						}
38531|      0|						goto exit_assign_obj;
38532|      0|					}
38533|      0|				}
38534|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38535|      0|				name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38536|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38537|      0|					zobj = zend_lazy_object_init(zobj);
38538|      0|					if (!zobj) {
  ------------------
  |  Branch (38538:10): [True: 0, False: 0]
  ------------------
38539|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
38540|      0|						goto free_and_exit_assign_obj;
38541|      0|					}
38542|      0|				}
38543|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (38543:9): [True: 0, False: 0]
  |  Branch (38543:29): [True: 0, False: 0]
  ------------------
38544|      0|					rebuild_object_properties_internal(zobj);
38545|      0|				}
38546|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38547|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38548|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38549|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
38550|      0|						}
38551|      0|						zobj->properties = zend_array_dup(zobj->properties);
38552|      0|					}
38553|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
38554|      0|					if (property_val) {
  ------------------
  |  Branch (38554:10): [True: 0, False: 0]
  ------------------
38555|      0|						goto fast_assign_obj;
38556|      0|					}
38557|      0|				}
38558|       |
38559|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (38559:9): [True: 0, False: 0]
  |  Branch (38559:29): [True: 0, False: 0]
  ------------------
38560|      0|					if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (38560:10): [Folded, False: 0]
  ------------------
38561|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38562|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
38563|      0|						}
38564|      0|					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (38564:17): [True: 0, Folded]
  ------------------
38565|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38566|      0|							if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (38566:12): [Folded, False: 0]
  ------------------
38567|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
38568|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (38568:13): [True: 0, False: 0]
  ------------------
38569|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38570|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38571|      0|									value = &tmp;
38572|      0|								} else {
38573|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38574|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
38575|      0|								}
38576|      0|							} else {
38577|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38578|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
38579|      0|							}
38580|      0|						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (38580:18): [True: 0, Folded]
  ------------------
38581|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
38582|      0|						}
38583|      0|					}
38584|      0|					zend_hash_add_new(zobj->properties, name, value);
38585|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38586|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38587|      0|					}
38588|      0|					goto exit_assign_obj;
38589|      0|				}
38590|      0|			} else {
38591|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (38591:5): [True: 0, False: 0]
  |  Branch (38591:5): [True: 0, False: 0]
  |  Branch (38591:5): [True: 0, False: 0]
  |  Branch (38591:5): [True: 0, False: 0]
  ------------------
38592|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38593|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
38594|      0|					prop_offset = prop_info->offset;
38595|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (38595:10): [True: 0, False: 0]
  ------------------
38596|      0|						prop_info = NULL;
38597|      0|					}
38598|      0|					goto assign_obj_simple;
38599|      0|				}
38600|       |				/* Fall through to write_property for hooks. */
38601|      0|			}
38602|      0|		}
38603|      0|		name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38604|      1|	} else {
38605|      1|		name = zval_try_get_tmp_string(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38606|      1|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
38607|       |
38608|       |
38609|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38610|      0|			goto exit_assign_obj;
38611|      0|		}
38612|      1|	}
38613|       |
38614|      1|	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (38614:6): [True: 1, Folded]
  |  Branch (38614:24): [Folded, False: 0]
  ------------------
38615|      1|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
38616|      1|	}
38617|       |
38618|      1|	value = zobj->handlers->write_property(zobj, name, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (38618:60): [Folded, False: 1]
  ------------------
38619|       |
38620|      1|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (38620:6): [True: 1, Folded]
  ------------------
38621|      1|		zend_tmp_string_release(tmp_name);
38622|      1|	}
38623|       |
38624|      1|free_and_exit_assign_obj:
38625|      1|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (38625:47): [True: 0, False: 0]
  ------------------
38626|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38627|      0|	}
38628|       |
38629|       |
38630|      1|exit_assign_obj:
38631|      1|	if (garbage) {
  ------------------
  |  Branch (38631:6): [True: 0, False: 1]
  ------------------
38632|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38633|      0|	}
38634|       |
38635|       |
38636|       |
38637|       |
38638|       |	/* assign_obj has two opcodes! */
38639|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (38639:2): [True: 0, False: 0]
  |  Branch (38639:2): [True: 0, False: 0]
  ------------------
38640|      1|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER:
42541|    170|{
42542|    170|	USE_OPLINE
42543|    170|	zval *object, *value, tmp;
42544|    170|	zend_object *zobj;
42545|    170|	zend_string *name, *tmp_name;
42546|    170|	zend_refcounted *garbage = NULL;
42547|       |
42548|    170|	SAVE_OPLINE();
  ------------------
  |  |  428|    170|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    170|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42549|    170|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    170|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    170|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42550|    170|	value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|    170|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42551|       |
42552|    170|	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|    170|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|    340|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|    170|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 168]
  |  |  ------------------
  ------------------
  |  Branch (42552:6): [True: 170, Folded]
  ------------------
42553|      2|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (42553:28): [True: 2, False: 0]
  ------------------
42554|      2|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42555|      2|			goto assign_object;
42556|      2|		}
42557|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42558|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42559|      0|		goto free_and_exit_assign_obj;
42560|      2|	}
42561|       |
42562|    170|assign_object:
42563|    170|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|    170|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    170|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
42564|    170|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    170|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    170|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42564:6): [True: 170, Folded]
  ------------------
42565|    170|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|    170|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 108, False: 62]
  |  |  ------------------
  ------------------
42566|    108|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|    108|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|    108|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42567|    108|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|    108|	(slot)[0]
  ------------------
42568|    108|			zval *property_val;
42569|    108|			zend_property_info *prop_info;
42570|       |
42571|    108|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|    108|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 104]
  |  |  ------------------
  ------------------
42572|      4|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      4|	(slot)[0]
  ------------------
42573|       |
42574|      4|assign_obj_simple:
42575|      4|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      4|	((zval*)((char*)(obj) + offset))
  ------------------
42576|      4|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (42576:9): [True: 4, False: 0]
  ------------------
42577|      4|					if (prop_info != NULL) {
  ------------------
  |  Branch (42577:10): [True: 4, False: 0]
  ------------------
42578|      4|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42579|      4|						goto free_and_exit_assign_obj;
42580|      4|					} else {
42581|    100|fast_assign_obj:
42582|    100|						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|    100|#define IS_CONST	(1<<0)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|    100|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    100|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    100|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42583|    100|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    100|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 99, False: 1]
  |  |  ------------------
  ------------------
42584|     99|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|     99|	do {												\
  |  | 1426|     99|		zval *_z1 = (z);								\
  |  | 1427|     99|		const zval *_z2 = (v);							\
  |  | 1428|     99|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     99|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     99|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     99|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     99|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     99|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     99|	do {												\
  |  |  |  | 1408|     99|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     99|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     99|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     99|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     99|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     99|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 99]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     99|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     99|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     99|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 99]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|     99|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 99]
  |  |  ------------------
  ------------------
42585|     99|						}
42586|    100|						goto exit_assign_obj;
42587|      0|					}
42588|      4|				}
42589|    104|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|    104|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 104, False: 0]
  |  |  ------------------
  ------------------
42590|    104|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|    104|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    104|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42591|    104|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|    104|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 104]
  |  |  ------------------
  ------------------
42592|      0|					zobj = zend_lazy_object_init(zobj);
42593|      0|					if (!zobj) {
  ------------------
  |  Branch (42593:10): [True: 0, False: 0]
  ------------------
42594|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42595|      0|						goto free_and_exit_assign_obj;
42596|      0|					}
42597|      0|				}
42598|    104|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|    104|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (42598:9): [True: 104, False: 0]
  |  Branch (42598:29): [True: 5, False: 99]
  ------------------
42599|      5|					rebuild_object_properties_internal(zobj);
42600|      5|				}
42601|    104|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|    104|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 104, False: 0]
  |  |  ------------------
  ------------------
42602|    104|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|    104|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 104]
  |  |  ------------------
  ------------------
42603|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42604|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
42605|      0|						}
42606|      0|						zobj->properties = zend_array_dup(zobj->properties);
42607|      0|					}
42608|    104|					property_val = zend_hash_find_known_hash(zobj->properties, name);
42609|    104|					if (property_val) {
  ------------------
  |  Branch (42609:10): [True: 100, False: 4]
  ------------------
42610|    100|						goto fast_assign_obj;
42611|    100|					}
42612|    104|				}
42613|       |
42614|      4|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      4|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (42614:9): [True: 4, False: 0]
  |  Branch (42614:29): [True: 4, False: 0]
  ------------------
42615|      4|					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42615:10): [True: 4, Folded]
  ------------------
42616|      4|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
42617|      4|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
42618|      4|						}
42619|      4|					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42619:17): [True: 0, Folded]
  ------------------
42620|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42621|      0|							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42621:12): [Folded, False: 0]
  ------------------
42622|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
42623|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (42623:13): [True: 0, False: 0]
  ------------------
42624|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42625|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42626|      0|									value = &tmp;
42627|      0|								} else {
42628|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42629|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42630|      0|								}
42631|      0|							} else {
42632|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42633|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42634|      0|							}
42635|      0|						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (42635:18): [Folded, False: 0]
  ------------------
42636|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42637|      0|						}
42638|      0|					}
42639|      4|					zend_hash_add_new(zobj->properties, name, value);
42640|      4|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
42641|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42642|      0|					}
42643|      4|					goto exit_assign_obj;
42644|      4|				}
42645|      4|			} else {
42646|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42646:5): [True: 0, False: 0]
  |  Branch (42646:5): [True: 0, False: 0]
  |  Branch (42646:5): [True: 0, False: 0]
  |  Branch (42646:5): [True: 0, False: 0]
  ------------------
42647|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42648|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42649|      0|					prop_offset = prop_info->offset;
42650|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (42650:10): [True: 0, False: 0]
  ------------------
42651|      0|						prop_info = NULL;
42652|      0|					}
42653|      0|					goto assign_obj_simple;
42654|      0|				}
42655|       |				/* Fall through to write_property for hooks. */
42656|      0|			}
42657|    108|		}
42658|     62|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     62|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     62|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42659|     62|	} else {
42660|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42661|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42662|       |
42663|       |
42664|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42665|      0|			goto exit_assign_obj;
42666|      0|		}
42667|      0|	}
42668|       |
42669|     62|	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|    124|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42669:6): [Folded, False: 0]
  |  Branch (42669:27): [Folded, False: 0]
  ------------------
42670|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42671|      0|	}
42672|       |
42673|     62|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|     62|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     62|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (42673:60): [True: 62, Folded]
  ------------------
42674|       |
42675|     62|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     62|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42675:6): [Folded, False: 62]
  ------------------
42676|      0|		zend_tmp_string_release(tmp_name);
42677|      0|	}
42678|       |
42679|     66|free_and_exit_assign_obj:
42680|     66|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|    132|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 58]
  |  |  ------------------
  ------------------
  |  Branch (42680:47): [True: 7, False: 1]
  ------------------
42681|      7|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      7|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      7|		zval *_z3 = (v);								\
  |  | 1510|      7|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      7|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      7|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      7|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      7|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      2|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      2|			} else {									\
  |  | 1517|      2|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      2|			}											\
  |  | 1519|      2|		}												\
  |  | 1520|      7|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      7|	do {												\
  |  |  |  | 1417|      7|		zval *_z1 = (z);								\
  |  |  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      7|	do {												\
  |  |  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
42682|      7|	}
42683|       |
42684|       |
42685|    170|exit_assign_obj:
42686|    170|	if (garbage) {
  ------------------
  |  Branch (42686:6): [True: 0, False: 170]
  ------------------
42687|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42688|      0|	}
42689|       |
42690|       |
42691|       |
42692|       |
42693|       |	/* assign_obj has two opcodes! */
42694|    170|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|    170|	CHECK_SYMBOL_TABLES() \
  |  | 5758|    170|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 170, Folded]
  |  |  ------------------
  |  | 5759|    170|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|    170|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|    170|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|    170|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|    170|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    170|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (42694:2): [True: 0, False: 0]
  |  Branch (42694:2): [True: 0, False: 0]
  ------------------
42695|    170|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER:
42699|     21|{
42700|     21|	USE_OPLINE
42701|     21|	zval *object, *value, tmp;
42702|     21|	zend_object *zobj;
42703|     21|	zend_string *name, *tmp_name;
42704|     21|	zend_refcounted *garbage = NULL;
42705|       |
42706|     21|	SAVE_OPLINE();
  ------------------
  |  |  428|     21|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     21|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42707|     21|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     21|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     21|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42708|     21|	value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     21|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     21|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42709|       |
42710|     21|	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|     21|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     42|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  ------------------
  ------------------
  |  Branch (42710:6): [True: 21, Folded]
  ------------------
42711|      0|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (42711:28): [True: 0, False: 0]
  ------------------
42712|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42713|      0|			goto assign_object;
42714|      0|		}
42715|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42716|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42717|      0|		goto free_and_exit_assign_obj;
42718|      0|	}
42719|       |
42720|     21|assign_object:
42721|     21|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|     21|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     21|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
42722|     21|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42722:6): [True: 21, Folded]
  ------------------
42723|     21|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|     21|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 21]
  |  |  ------------------
  ------------------
42724|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42725|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42726|      0|			zval *property_val;
42727|      0|			zend_property_info *prop_info;
42728|       |
42729|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42730|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42731|       |
42732|      0|assign_obj_simple:
42733|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
42734|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (42734:9): [True: 0, False: 0]
  ------------------
42735|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (42735:10): [True: 0, False: 0]
  ------------------
42736|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42737|      0|						goto free_and_exit_assign_obj;
42738|      0|					} else {
42739|      0|fast_assign_obj:
42740|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42741|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42742|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42743|      0|						}
42744|      0|						goto exit_assign_obj;
42745|      0|					}
42746|      0|				}
42747|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42748|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42749|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42750|      0|					zobj = zend_lazy_object_init(zobj);
42751|      0|					if (!zobj) {
  ------------------
  |  Branch (42751:10): [True: 0, False: 0]
  ------------------
42752|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42753|      0|						goto free_and_exit_assign_obj;
42754|      0|					}
42755|      0|				}
42756|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (42756:9): [True: 0, False: 0]
  |  Branch (42756:29): [True: 0, False: 0]
  ------------------
42757|      0|					rebuild_object_properties_internal(zobj);
42758|      0|				}
42759|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42760|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42761|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42762|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
42763|      0|						}
42764|      0|						zobj->properties = zend_array_dup(zobj->properties);
42765|      0|					}
42766|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
42767|      0|					if (property_val) {
  ------------------
  |  Branch (42767:10): [True: 0, False: 0]
  ------------------
42768|      0|						goto fast_assign_obj;
42769|      0|					}
42770|      0|				}
42771|       |
42772|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (42772:9): [True: 0, False: 0]
  |  Branch (42772:29): [True: 0, False: 0]
  ------------------
42773|      0|					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42773:10): [Folded, False: 0]
  ------------------
42774|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42775|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
42776|      0|						}
42777|      0|					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42777:17): [Folded, False: 0]
  ------------------
42778|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42779|      0|							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42779:12): [Folded, False: 0]
  ------------------
42780|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
42781|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (42781:13): [True: 0, False: 0]
  ------------------
42782|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42783|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42784|      0|									value = &tmp;
42785|      0|								} else {
42786|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42787|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42788|      0|								}
42789|      0|							} else {
42790|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42791|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42792|      0|							}
42793|      0|						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (42793:18): [Folded, False: 0]
  ------------------
42794|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42795|      0|						}
42796|      0|					}
42797|      0|					zend_hash_add_new(zobj->properties, name, value);
42798|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42799|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42800|      0|					}
42801|      0|					goto exit_assign_obj;
42802|      0|				}
42803|      0|			} else {
42804|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42804:5): [True: 0, False: 0]
  |  Branch (42804:5): [True: 0, False: 0]
  |  Branch (42804:5): [True: 0, False: 0]
  |  Branch (42804:5): [True: 0, False: 0]
  ------------------
42805|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42806|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42807|      0|					prop_offset = prop_info->offset;
42808|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (42808:10): [True: 0, False: 0]
  ------------------
42809|      0|						prop_info = NULL;
42810|      0|					}
42811|      0|					goto assign_obj_simple;
42812|      0|				}
42813|       |				/* Fall through to write_property for hooks. */
42814|      0|			}
42815|      0|		}
42816|     21|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     21|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     21|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42817|     21|	} else {
42818|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42819|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42820|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42821|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42822|      0|			goto exit_assign_obj;
42823|      0|		}
42824|      0|	}
42825|       |
42826|     21|	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     21|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|     42|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42826:6): [Folded, False: 0]
  |  Branch (42826:29): [Folded, False: 0]
  ------------------
42827|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42828|      0|	}
42829|       |
42830|     21|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|     21|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     21|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (42830:60): [True: 21, Folded]
  ------------------
42831|       |
42832|     21|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42832:6): [Folded, False: 21]
  ------------------
42833|      0|		zend_tmp_string_release(tmp_name);
42834|      0|	}
42835|       |
42836|     21|free_and_exit_assign_obj:
42837|     21|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     42|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 19]
  |  |  ------------------
  ------------------
  |  Branch (42837:47): [True: 1, False: 1]
  ------------------
42838|      1|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      1|		zval *_z3 = (v);								\
  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      1|			} else {									\
  |  | 1517|      1|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      1|			}											\
  |  | 1519|      1|		}												\
  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
42839|      1|	}
42840|     21|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|     21|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     21|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42841|     21|exit_assign_obj:
42842|     21|	if (garbage) {
  ------------------
  |  Branch (42842:6): [True: 0, False: 21]
  ------------------
42843|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42844|      0|	}
42845|       |
42846|       |
42847|       |
42848|       |
42849|       |	/* assign_obj has two opcodes! */
42850|     21|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     21|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     21|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 21, Folded]
  |  |  ------------------
  |  | 5759|     21|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     21|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     21|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     21|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     21|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     21|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (42850:2): [True: 0, False: 0]
  |  Branch (42850:2): [True: 0, False: 0]
  ------------------
42851|     21|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER:
42855|     13|{
42856|     13|	USE_OPLINE
42857|     13|	zval *object, *value, tmp;
42858|     13|	zend_object *zobj;
42859|     13|	zend_string *name, *tmp_name;
42860|     13|	zend_refcounted *garbage = NULL;
42861|       |
42862|     13|	SAVE_OPLINE();
  ------------------
  |  |  428|     13|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42863|     13|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     13|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     13|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42864|     13|	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     13|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     13|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42865|       |
42866|     13|	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|     13|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     26|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 12]
  |  |  ------------------
  ------------------
  |  Branch (42866:6): [True: 13, Folded]
  ------------------
42867|      1|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (42867:28): [True: 1, False: 0]
  ------------------
42868|      1|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42869|      1|			goto assign_object;
42870|      1|		}
42871|      0|		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42872|      0|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42873|      0|		goto free_and_exit_assign_obj;
42874|      1|	}
42875|       |
42876|     13|assign_object:
42877|     13|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|     13|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
42878|     13|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42878:6): [True: 13, Folded]
  ------------------
42879|     13|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
42880|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42881|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42882|      0|			zval *property_val;
42883|      0|			zend_property_info *prop_info;
42884|       |
42885|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42886|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42887|       |
42888|      0|assign_obj_simple:
42889|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
42890|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (42890:9): [True: 0, False: 0]
  ------------------
42891|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (42891:10): [True: 0, False: 0]
  ------------------
42892|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42893|      0|						goto free_and_exit_assign_obj;
42894|      0|					} else {
42895|      0|fast_assign_obj:
42896|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42897|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42898|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42899|      0|						}
42900|      0|						goto exit_assign_obj;
42901|      0|					}
42902|      0|				}
42903|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42904|      0|				name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42905|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42906|      0|					zobj = zend_lazy_object_init(zobj);
42907|      0|					if (!zobj) {
  ------------------
  |  Branch (42907:10): [True: 0, False: 0]
  ------------------
42908|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42909|      0|						goto free_and_exit_assign_obj;
42910|      0|					}
42911|      0|				}
42912|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (42912:9): [True: 0, False: 0]
  |  Branch (42912:29): [True: 0, False: 0]
  ------------------
42913|      0|					rebuild_object_properties_internal(zobj);
42914|      0|				}
42915|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42916|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42917|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42918|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
42919|      0|						}
42920|      0|						zobj->properties = zend_array_dup(zobj->properties);
42921|      0|					}
42922|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
42923|      0|					if (property_val) {
  ------------------
  |  Branch (42923:10): [True: 0, False: 0]
  ------------------
42924|      0|						goto fast_assign_obj;
42925|      0|					}
42926|      0|				}
42927|       |
42928|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (42928:9): [True: 0, False: 0]
  |  Branch (42928:29): [True: 0, False: 0]
  ------------------
42929|      0|					if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42929:10): [Folded, False: 0]
  ------------------
42930|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42931|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
42932|      0|						}
42933|      0|					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42933:17): [True: 0, Folded]
  ------------------
42934|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42935|      0|							if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42935:12): [Folded, False: 0]
  ------------------
42936|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
42937|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (42937:13): [True: 0, False: 0]
  ------------------
42938|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42939|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42940|      0|									value = &tmp;
42941|      0|								} else {
42942|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42943|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42944|      0|								}
42945|      0|							} else {
42946|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42947|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42948|      0|							}
42949|      0|						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (42949:18): [True: 0, Folded]
  ------------------
42950|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42951|      0|						}
42952|      0|					}
42953|      0|					zend_hash_add_new(zobj->properties, name, value);
42954|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42955|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42956|      0|					}
42957|      0|					goto exit_assign_obj;
42958|      0|				}
42959|      0|			} else {
42960|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42960:5): [True: 0, False: 0]
  |  Branch (42960:5): [True: 0, False: 0]
  |  Branch (42960:5): [True: 0, False: 0]
  |  Branch (42960:5): [True: 0, False: 0]
  ------------------
42961|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42962|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42963|      0|					prop_offset = prop_info->offset;
42964|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (42964:10): [True: 0, False: 0]
  ------------------
42965|      0|						prop_info = NULL;
42966|      0|					}
42967|      0|					goto assign_obj_simple;
42968|      0|				}
42969|       |				/* Fall through to write_property for hooks. */
42970|      0|			}
42971|      0|		}
42972|     13|		name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     13|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     13|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42973|     13|	} else {
42974|      0|		name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42975|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42976|       |
42977|       |
42978|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42979|      0|			goto exit_assign_obj;
42980|      0|		}
42981|      0|	}
42982|       |
42983|     13|	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|     13|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|     26|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42983:6): [True: 13, Folded]
  |  Branch (42983:24): [Folded, False: 0]
  ------------------
42984|     13|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|     13|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     13|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
42985|     13|	}
42986|       |
42987|     13|	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|     13|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (42987:60): [True: 13, Folded]
  ------------------
42988|       |
42989|     13|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     13|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42989:6): [Folded, False: 13]
  ------------------
42990|      0|		zend_tmp_string_release(tmp_name);
42991|      0|	}
42992|       |
42993|     13|free_and_exit_assign_obj:
42994|     13|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (42994:47): [True: 0, False: 0]
  ------------------
42995|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42996|      0|	}
42997|       |
42998|       |
42999|     13|exit_assign_obj:
43000|     13|	if (garbage) {
  ------------------
  |  Branch (43000:6): [True: 0, False: 13]
  ------------------
43001|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43002|      0|	}
43003|       |
43004|       |
43005|       |
43006|       |
43007|       |	/* assign_obj has two opcodes! */
43008|     13|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     13|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     13|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 13, Folded]
  |  |  ------------------
  |  | 5759|     13|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     13|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     13|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     13|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     13|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43008:2): [True: 0, False: 0]
  |  Branch (43008:2): [True: 0, False: 0]
  ------------------
43009|     13|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_TMP_HANDLER:
46521|      1|{
46522|      1|	USE_OPLINE
46523|      1|	zval *object, *value, tmp;
46524|      1|	zend_object *zobj;
46525|      1|	zend_string *name, *tmp_name;
46526|      1|	zend_refcounted *garbage = NULL;
46527|       |
46528|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46529|      1|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46530|      1|	value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46531|       |
46532|      1|	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (46532:6): [True: 1, Folded]
  ------------------
46533|      1|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (46533:28): [True: 0, False: 0]
  ------------------
46534|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46535|      0|			goto assign_object;
46536|      0|		}
46537|      1|		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46538|      1|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
46539|      1|		goto free_and_exit_assign_obj;
46540|      1|	}
46541|       |
46542|      0|assign_object:
46543|      0|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
46544|      0|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46544:6): [Folded, False: 0]
  ------------------
46545|      0|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46546|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46547|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46548|      0|			zval *property_val;
46549|      0|			zend_property_info *prop_info;
46550|       |
46551|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46552|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46553|       |
46554|      0|assign_obj_simple:
46555|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
46556|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (46556:9): [True: 0, False: 0]
  ------------------
46557|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (46557:10): [True: 0, False: 0]
  ------------------
46558|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46559|      0|						goto free_and_exit_assign_obj;
46560|      0|					} else {
46561|      0|fast_assign_obj:
46562|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46563|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46564|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46565|      0|						}
46566|      0|						goto exit_assign_obj;
46567|      0|					}
46568|      0|				}
46569|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46570|      0|				name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
46571|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46572|      0|					zobj = zend_lazy_object_init(zobj);
46573|      0|					if (!zobj) {
  ------------------
  |  Branch (46573:10): [True: 0, False: 0]
  ------------------
46574|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
46575|      0|						goto free_and_exit_assign_obj;
46576|      0|					}
46577|      0|				}
46578|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (46578:9): [True: 0, False: 0]
  |  Branch (46578:29): [True: 0, False: 0]
  ------------------
46579|      0|					rebuild_object_properties_internal(zobj);
46580|      0|				}
46581|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46582|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46583|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46584|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
46585|      0|						}
46586|      0|						zobj->properties = zend_array_dup(zobj->properties);
46587|      0|					}
46588|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
46589|      0|					if (property_val) {
  ------------------
  |  Branch (46589:10): [True: 0, False: 0]
  ------------------
46590|      0|						goto fast_assign_obj;
46591|      0|					}
46592|      0|				}
46593|       |
46594|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (46594:9): [True: 0, False: 0]
  |  Branch (46594:29): [True: 0, False: 0]
  ------------------
46595|      0|					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46595:10): [Folded, False: 0]
  ------------------
46596|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46597|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
46598|      0|						}
46599|      0|					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (46599:17): [Folded, False: 0]
  ------------------
46600|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46601|      0|							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              							if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46601:12): [Folded, False: 0]
  ------------------
46602|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
46603|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (46603:13): [True: 0, False: 0]
  ------------------
46604|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46605|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46606|      0|									value = &tmp;
46607|      0|								} else {
46608|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46609|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
46610|      0|								}
46611|      0|							} else {
46612|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46613|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
46614|      0|							}
46615|      0|						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (46615:18): [Folded, False: 0]
  ------------------
46616|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
46617|      0|						}
46618|      0|					}
46619|      0|					zend_hash_add_new(zobj->properties, name, value);
46620|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46621|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46622|      0|					}
46623|      0|					goto exit_assign_obj;
46624|      0|				}
46625|      0|			} else {
46626|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (46626:5): [True: 0, False: 0]
  |  Branch (46626:5): [True: 0, False: 0]
  |  Branch (46626:5): [True: 0, False: 0]
  |  Branch (46626:5): [True: 0, False: 0]
  ------------------
46627|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46628|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46629|      0|					prop_offset = prop_info->offset;
46630|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (46630:10): [True: 0, False: 0]
  ------------------
46631|      0|						prop_info = NULL;
46632|      0|					}
46633|      0|					goto assign_obj_simple;
46634|      0|				}
46635|       |				/* Fall through to write_property for hooks. */
46636|      0|			}
46637|      0|		}
46638|      0|		name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
46639|      0|	} else {
46640|      0|		name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46641|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46642|      0|			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46643|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46644|      0|			goto exit_assign_obj;
46645|      0|		}
46646|      0|	}
46647|       |
46648|      0|	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46648:6): [Folded, False: 0]
  |  Branch (46648:29): [Folded, False: 0]
  ------------------
46649|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46650|      0|	}
46651|       |
46652|      0|	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (46652:60): [Folded, False: 0]
  ------------------
46653|       |
46654|      0|	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46654:6): [True: 0, Folded]
  ------------------
46655|      0|		zend_tmp_string_release(tmp_name);
46656|      0|	}
46657|       |
46658|      1|free_and_exit_assign_obj:
46659|      1|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (46659:47): [True: 0, False: 0]
  ------------------
46660|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46661|      0|	}
46662|      1|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46663|      1|exit_assign_obj:
46664|      1|	if (garbage) {
  ------------------
  |  Branch (46664:6): [True: 0, False: 1]
  ------------------
46665|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46666|      0|	}
46667|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46668|       |
46669|       |
46670|       |	/* assign_obj has two opcodes! */
46671|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (46671:2): [True: 0, False: 0]
  |  Branch (46671:2): [True: 0, False: 0]
  ------------------
46672|      1|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_CV_TMP_OP_DATA_CV_HANDLER:
46676|    201|{
46677|    201|	USE_OPLINE
46678|    201|	zval *object, *value, tmp;
46679|    201|	zend_object *zobj;
46680|    201|	zend_string *name, *tmp_name;
46681|    201|	zend_refcounted *garbage = NULL;
46682|       |
46683|    201|	SAVE_OPLINE();
  ------------------
  |  |  428|    201|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    201|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46684|    201|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    201|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    201|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46685|    201|	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    201|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    201|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46686|       |
46687|    201|	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|    201|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|    402|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|    201|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 201, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (46687:6): [True: 201, Folded]
  ------------------
46688|    201|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|    201|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    402|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    201|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    201|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 200, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|    200|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    200|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|    200|#define IS_OBJECT					8
  ------------------
  |  Branch (46688:28): [True: 199, False: 1]
  ------------------
46689|    199|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|    199|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    199|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    199|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46690|    199|			goto assign_object;
46691|    199|		}
46692|      2|		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46693|      2|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
46694|      2|		goto free_and_exit_assign_obj;
46695|    201|	}
46696|       |
46697|    199|assign_object:
46698|    199|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|    199|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    199|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
46699|    199|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|    199|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    199|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46699:6): [Folded, False: 199]
  ------------------
46700|      0|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46701|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46702|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46703|      0|			zval *property_val;
46704|      0|			zend_property_info *prop_info;
46705|       |
46706|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46707|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46708|       |
46709|      0|assign_obj_simple:
46710|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
46711|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (46711:9): [True: 0, False: 0]
  ------------------
46712|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (46712:10): [True: 0, False: 0]
  ------------------
46713|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46714|      0|						goto free_and_exit_assign_obj;
46715|      0|					} else {
46716|      0|fast_assign_obj:
46717|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46718|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46719|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46720|      0|						}
46721|      0|						goto exit_assign_obj;
46722|      0|					}
46723|      0|				}
46724|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46725|      0|				name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
46726|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46727|      0|					zobj = zend_lazy_object_init(zobj);
46728|      0|					if (!zobj) {
  ------------------
  |  Branch (46728:10): [True: 0, False: 0]
  ------------------
46729|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
46730|      0|						goto free_and_exit_assign_obj;
46731|      0|					}
46732|      0|				}
46733|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (46733:9): [True: 0, False: 0]
  |  Branch (46733:29): [True: 0, False: 0]
  ------------------
46734|      0|					rebuild_object_properties_internal(zobj);
46735|      0|				}
46736|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46737|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46738|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46739|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
46740|      0|						}
46741|      0|						zobj->properties = zend_array_dup(zobj->properties);
46742|      0|					}
46743|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
46744|      0|					if (property_val) {
  ------------------
  |  Branch (46744:10): [True: 0, False: 0]
  ------------------
46745|      0|						goto fast_assign_obj;
46746|      0|					}
46747|      0|				}
46748|       |
46749|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (46749:9): [True: 0, False: 0]
  |  Branch (46749:29): [True: 0, False: 0]
  ------------------
46750|      0|					if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46750:10): [Folded, False: 0]
  ------------------
46751|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46752|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
46753|      0|						}
46754|      0|					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (46754:17): [True: 0, Folded]
  ------------------
46755|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46756|      0|							if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              							if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46756:12): [Folded, False: 0]
  ------------------
46757|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
46758|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (46758:13): [True: 0, False: 0]
  ------------------
46759|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46760|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46761|      0|									value = &tmp;
46762|      0|								} else {
46763|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46764|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
46765|      0|								}
46766|      0|							} else {
46767|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46768|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
46769|      0|							}
46770|      0|						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (46770:18): [True: 0, Folded]
  ------------------
46771|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
46772|      0|						}
46773|      0|					}
46774|      0|					zend_hash_add_new(zobj->properties, name, value);
46775|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46776|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46777|      0|					}
46778|      0|					goto exit_assign_obj;
46779|      0|				}
46780|      0|			} else {
46781|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (46781:5): [True: 0, False: 0]
  |  Branch (46781:5): [True: 0, False: 0]
  |  Branch (46781:5): [True: 0, False: 0]
  |  Branch (46781:5): [True: 0, False: 0]
  ------------------
46782|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46783|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46784|      0|					prop_offset = prop_info->offset;
46785|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (46785:10): [True: 0, False: 0]
  ------------------
46786|      0|						prop_info = NULL;
46787|      0|					}
46788|      0|					goto assign_obj_simple;
46789|      0|				}
46790|       |				/* Fall through to write_property for hooks. */
46791|      0|			}
46792|      0|		}
46793|      0|		name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
46794|    199|	} else {
46795|    199|		name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|    199|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    199|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46796|    199|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|    199|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 199]
  |  |  ------------------
  ------------------
46797|       |
46798|       |
46799|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46800|      0|			goto exit_assign_obj;
46801|      0|		}
46802|    199|	}
46803|       |
46804|    199|	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|    199|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|    398|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46804:6): [True: 199, Folded]
  |  Branch (46804:24): [Folded, False: 0]
  ------------------
46805|    199|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|    199|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    199|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    199|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 199, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|    199|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|    199|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|    199|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|    199|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|    199|		}												\
  |  | 1478|    199|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 199]
  |  |  ------------------
  ------------------
46806|    199|	}
46807|       |
46808|    199|	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  865|    199|#define IS_TMP_VAR	(1<<1)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|    199|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (46808:60): [Folded, False: 199]
  ------------------
46809|       |
46810|    199|	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|    199|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|    199|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46810:6): [True: 199, Folded]
  ------------------
46811|    199|		zend_tmp_string_release(tmp_name);
46812|    199|	}
46813|       |
46814|    201|free_and_exit_assign_obj:
46815|    201|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|    402|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 201]
  |  |  ------------------
  ------------------
  |  Branch (46815:47): [True: 0, False: 0]
  ------------------
46816|      0|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46817|      0|	}
46818|       |
46819|       |
46820|    201|exit_assign_obj:
46821|    201|	if (garbage) {
  ------------------
  |  Branch (46821:6): [True: 0, False: 201]
  ------------------
46822|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46823|      0|	}
46824|    201|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    201|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    201|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46825|       |
46826|       |
46827|       |	/* assign_obj has two opcodes! */
46828|    201|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|    201|	CHECK_SYMBOL_TABLES() \
  |  | 5758|    201|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 201, Folded]
  |  |  ------------------
  |  | 5759|    201|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|    201|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|    201|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|    201|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|    201|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    201|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (46828:2): [True: 0, False: 0]
  |  Branch (46828:2): [True: 0, False: 0]
  ------------------
46829|    201|}
zend_execute.c:ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER:
51480|     10|{
51481|     10|	USE_OPLINE
51482|     10|	zval *object, *value, tmp;
51483|     10|	zend_object *zobj;
51484|     10|	zend_string *name, *tmp_name;
51485|     10|	zend_refcounted *garbage = NULL;
51486|       |
51487|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51488|     10|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51489|     10|	value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|     10|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
51490|       |
51491|     10|	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     20|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (51491:6): [True: 10, Folded]
  ------------------
51492|      2|		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (51492:28): [True: 0, False: 0]
  ------------------
51493|      0|			object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51494|      0|			goto assign_object;
51495|      0|		}
51496|      2|		zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51497|      2|		value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
51498|      2|		goto free_and_exit_assign_obj;
51499|      2|	}
51500|       |
51501|      8|assign_object:
51502|      8|	zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
51503|      8|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51503:6): [Folded, False: 8]
  ------------------
51504|      0|		if (EXPECTED(zobj->ce == CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51505|      0|			void **cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51506|      0|			uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
51507|      0|			zval *property_val;
51508|      0|			zend_property_info *prop_info;
51509|       |
51510|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51511|      0|				prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
51512|       |
51513|      0|assign_obj_simple:
51514|      0|				property_val = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
51515|      0|				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(property_val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (51515:9): [True: 0, False: 0]
  ------------------
51516|      0|					if (prop_info != NULL) {
  ------------------
  |  Branch (51516:10): [True: 0, False: 0]
  ------------------
51517|      0|						value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51518|      0|						goto free_and_exit_assign_obj;
51519|      0|					} else {
51520|      0|fast_assign_obj:
51521|      0|						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						value = zend_assign_to_variable_ex(property_val, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51522|      0|						if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51523|      0|							ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51524|      0|						}
51525|      0|						goto exit_assign_obj;
51526|      0|					}
51527|      0|				}
51528|      0|			} else if (EXPECTED(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51529|      0|				name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
51530|      0|				if (UNEXPECTED(zend_lazy_object_must_init(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51531|      0|					zobj = zend_lazy_object_init(zobj);
51532|      0|					if (!zobj) {
  ------------------
  |  Branch (51532:10): [True: 0, False: 0]
  ------------------
51533|      0|						value = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
51534|      0|						goto free_and_exit_assign_obj;
51535|      0|					}
51536|      0|				}
51537|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (51537:9): [True: 0, False: 0]
  |  Branch (51537:29): [True: 0, False: 0]
  ------------------
51538|      0|					rebuild_object_properties_internal(zobj);
51539|      0|				}
51540|      0|				if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51541|      0|					if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51542|      0|						if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51543|      0|							GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
51544|      0|						}
51545|      0|						zobj->properties = zend_array_dup(zobj->properties);
51546|      0|					}
51547|      0|					property_val = zend_hash_find_known_hash(zobj->properties, name);
51548|      0|					if (property_val) {
  ------------------
  |  Branch (51548:10): [True: 0, False: 0]
  ------------------
51549|      0|						goto fast_assign_obj;
51550|      0|					}
51551|      0|				}
51552|       |
51553|      0|				if (!zobj->ce->__set && (zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      0|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (51553:9): [True: 0, False: 0]
  |  Branch (51553:29): [True: 0, False: 0]
  ------------------
51554|      0|					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51554:10): [True: 0, Folded]
  ------------------
51555|      0|						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51556|      0|							Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
51557|      0|						}
51558|      0|					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (51558:17): [True: 0, Folded]
  ------------------
51559|      0|						if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51560|      0|							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              							if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51560:12): [Folded, False: 0]
  ------------------
51561|      0|								zend_reference *ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
51562|      0|								if (GC_DELREF(ref) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (51562:13): [True: 0, False: 0]
  ------------------
51563|      0|									ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51564|      0|									efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51565|      0|									value = &tmp;
51566|      0|								} else {
51567|      0|									value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51568|      0|									Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
51569|      0|								}
51570|      0|							} else {
51571|      0|								value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51572|      0|								Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
51573|      0|							}
51574|      0|						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (51574:18): [Folded, False: 0]
  ------------------
51575|      0|							Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
51576|      0|						}
51577|      0|					}
51578|      0|					zend_hash_add_new(zobj->properties, name, value);
51579|      0|					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51580|      0|						ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51581|      0|					}
51582|      0|					goto exit_assign_obj;
51583|      0|				}
51584|      0|			} else {
51585|      0|				ZEND_ASSERT(IS_HOOKED_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (51585:5): [True: 0, False: 0]
  |  Branch (51585:5): [True: 0, False: 0]
  |  Branch (51585:5): [True: 0, False: 0]
  |  Branch (51585:5): [True: 0, False: 0]
  ------------------
51586|      0|				if (ZEND_IS_PROPERTY_HOOK_SIMPLE_WRITE(prop_offset)) {
  ------------------
  |  |   52|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT) != 0)
  |  |  ------------------
  |  |  |  |   47|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_WRITE_BIT 4u
  |  |  ------------------
  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51587|      0|					prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
51588|      0|					prop_offset = prop_info->offset;
51589|      0|					if (!ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (51589:10): [True: 0, False: 0]
  ------------------
51590|      0|						prop_info = NULL;
51591|      0|					}
51592|      0|					goto assign_obj_simple;
51593|      0|				}
51594|       |				/* Fall through to write_property for hooks. */
51595|      0|			}
51596|      0|		}
51597|      0|		name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
51598|      8|	} else {
51599|      8|		name = zval_try_get_tmp_string(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51600|      8|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
51601|       |
51602|       |
51603|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51604|      0|			goto exit_assign_obj;
51605|      0|		}
51606|      8|	}
51607|       |
51608|      8|	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|     16|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51608:6): [Folded, False: 0]
  |  Branch (51608:27): [Folded, False: 0]
  ------------------
51609|      0|		ZVAL_DEREF(value);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51610|      0|	}
51611|       |
51612|      8|	value = zobj->handlers->write_property(zobj, name, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	value = zobj->handlers->write_property(zobj, name, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (51612:60): [Folded, False: 8]
  ------------------
51613|       |
51614|      8|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51614:6): [True: 8, Folded]
  ------------------
51615|      8|		zend_tmp_string_release(tmp_name);
51616|      8|	}
51617|       |
51618|     10|free_and_exit_assign_obj:
51619|     10|	if (UNEXPECTED(RETURN_VALUE_USED(opline)) && value) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 9]
  |  |  ------------------
  ------------------
  |  Branch (51619:47): [True: 1, False: 0]
  ------------------
51620|      1|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      1|		zval *_z3 = (v);								\
  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
51621|      1|	}
51622|       |
51623|       |
51624|     10|exit_assign_obj:
51625|     10|	if (garbage) {
  ------------------
  |  Branch (51625:6): [True: 0, False: 10]
  ------------------
51626|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51627|      0|	}
51628|       |
51629|       |
51630|       |
51631|       |
51632|       |	/* assign_obj has two opcodes! */
51633|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     10|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  ------------------
  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     10|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     10|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (51633:2): [True: 0, False: 0]
  |  Branch (51633:2): [True: 0, False: 0]
  ------------------
51634|     10|}
zend_execute.c:ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_CONST_HANDLER:
  989|     16|{
  990|     16|	USE_OPLINE
  991|     16|	zval *prop, *value;
  992|     16|	zend_property_info *prop_info;
  993|     16|	zend_refcounted *garbage = NULL;
  994|       |
  995|     16|	SAVE_OPLINE();
  ------------------
  |  |  428|     16|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  996|       |
  997|     16|	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|     16|#define BP_VAR_W			1
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     16|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     16|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     16|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     16|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  998|     16|	if (UNEXPECTED(!prop)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 14]
  |  |  ------------------
  ------------------
  999|       |
 1000|       |
 1001|      2|		UNDEF_RESULT();
  ------------------
  |  | 5907|      2|#define UNDEF_RESULT() do { \
  |  | 5908|      2|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 1, False: 1]
  |  |  ------------------
  |  | 5909|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      1|		} \
  |  | 5911|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1002|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1002:3): [True: 0, False: 2]
  |  Branch (1002:3): [True: 2, False: 0]
  ------------------
 1003|      2|	}
 1004|       |
 1005|     14|	value = RT_CONSTANT((opline+1), (opline+1)->op1);
  ------------------
  |  |  841|     14|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 1006|       |
 1007|     14|	if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     14|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     14|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 6, False: 8]
  |  |  ------------------
  ------------------
 1008|      6|		value = zend_assign_to_typed_prop(prop_info, prop, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1009|       |
 1010|       |
 1011|      8|	} else {
 1012|      8|		value = zend_assign_to_variable_ex(prop, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		value = zend_assign_to_variable_ex(prop, value, IS_CONST, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      8|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      8|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      8|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1013|      8|	}
 1014|       |
 1015|     14|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 12]
  |  |  ------------------
  ------------------
 1016|      2|		ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1017|      2|	}
 1018|       |
 1019|     14|	if (garbage) {
  ------------------
  |  Branch (1019:6): [True: 6, False: 8]
  ------------------
 1020|      6|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      6|	do { \
  |  |  737|      6|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      6|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 3, False: 3]
  |  |  ------------------
  |  |  739|      3|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      3|		} else { \
  |  |  741|      3|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      3|		} \
  |  |  743|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1021|      6|	}
 1022|       |
 1023|       |	/* assign_static_prop has two opcodes! */
 1024|     14|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     14|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 14, Folded]
  |  |  ------------------
  |  | 5759|     14|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     14|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     14|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1024:2): [True: 0, False: 0]
  |  Branch (1024:2): [True: 0, False: 0]
  ------------------
 1025|     14|}
zend_execute.c:ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_TMP_HANDLER:
 1028|     16|{
 1029|     16|	USE_OPLINE
 1030|     16|	zval *prop, *value;
 1031|     16|	zend_property_info *prop_info;
 1032|     16|	zend_refcounted *garbage = NULL;
 1033|       |
 1034|     16|	SAVE_OPLINE();
  ------------------
  |  |  428|     16|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1035|       |
 1036|     16|	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|     16|#define BP_VAR_W			1
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     16|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     16|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     16|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     16|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1037|     16|	if (UNEXPECTED(!prop)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 14]
  |  |  ------------------
  ------------------
 1038|      2|		zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 1039|      2|		UNDEF_RESULT();
  ------------------
  |  | 5907|      2|#define UNDEF_RESULT() do { \
  |  | 5908|      2|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1040|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1040:3): [True: 0, False: 2]
  |  Branch (1040:3): [True: 2, False: 0]
  ------------------
 1041|      2|	}
 1042|       |
 1043|     14|	value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1044|       |
 1045|     14|	if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     14|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     14|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 6, False: 8]
  |  |  ------------------
  ------------------
 1046|      6|		value = zend_assign_to_typed_prop(prop_info, prop, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1047|      6|		zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 1048|      8|	} else {
 1049|      8|		value = zend_assign_to_variable_ex(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              		value = zend_assign_to_variable_ex(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      8|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      8|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      8|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1050|      8|	}
 1051|       |
 1052|     14|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 12]
  |  |  ------------------
  ------------------
 1053|      2|		ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1054|      2|	}
 1055|       |
 1056|     14|	if (garbage) {
  ------------------
  |  Branch (1056:6): [True: 2, False: 12]
  ------------------
 1057|      2|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      2|	do { \
  |  |  737|      2|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      2|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 2, False: 0]
  |  |  ------------------
  |  |  739|      2|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      2|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1058|      2|	}
 1059|       |
 1060|       |	/* assign_static_prop has two opcodes! */
 1061|     14|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     14|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 14, Folded]
  |  |  ------------------
  |  | 5759|     14|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     14|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     14|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1061:2): [True: 0, False: 0]
  |  Branch (1061:2): [True: 0, False: 0]
  ------------------
 1062|     14|}
zend_execute.c:ZEND_ASSIGN_STATIC_PROP_SPEC_OP_DATA_CV_HANDLER:
 1065|      1|{
 1066|      1|	USE_OPLINE
 1067|      1|	zval *prop, *value;
 1068|      1|	zend_property_info *prop_info;
 1069|      1|	zend_refcounted *garbage = NULL;
 1070|       |
 1071|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1072|       |
 1073|      1|	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      1|#define BP_VAR_W			1
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1074|      1|	if (UNEXPECTED(!prop)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1075|       |
 1076|       |
 1077|      1|		UNDEF_RESULT();
  ------------------
  |  | 5907|      1|#define UNDEF_RESULT() do { \
  |  | 5908|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1078|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1078:3): [True: 0, False: 1]
  |  Branch (1078:3): [True: 1, False: 0]
  ------------------
 1079|      1|	}
 1080|       |
 1081|      0|	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1082|       |
 1083|      0|	if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1084|      0|		value = zend_assign_to_typed_prop(prop_info, prop, value, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1085|       |
 1086|       |
 1087|      0|	} else {
 1088|      0|		value = zend_assign_to_variable_ex(prop, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		value = zend_assign_to_variable_ex(prop, value, IS_CV, EX_USES_STRICT_TYPES(), &garbage);
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|      0|	}
 1090|       |
 1091|      0|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1092|      0|		ZVAL_COPY(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1093|      0|	}
 1094|       |
 1095|      0|	if (garbage) {
  ------------------
  |  Branch (1095:6): [True: 0, False: 0]
  ------------------
 1096|      0|		GC_DTOR_NO_REF(garbage);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1097|      0|	}
 1098|       |
 1099|       |	/* assign_static_prop has two opcodes! */
 1100|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      0|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  ------------------
  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      0|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1100:2): [True: 0, False: 0]
  |  Branch (1100:2): [True: 0, False: 0]
  ------------------
 1101|      0|}
zend_execute.c:ZEND_ASSIGN_OP_SPEC_VAR_CONST_HANDLER:
24101|      2|{
24102|      2|	USE_OPLINE
24103|      2|	zval *var_ptr;
24104|      2|	zval *value;
24105|       |
24106|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24107|      2|	value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24108|      2|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24109|       |
24110|      2|	do {
24111|      2|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
24112|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
24113|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24114|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24115|      0|				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24116|      0|				break;
24117|      0|			}
24118|      0|		}
24119|      2|		zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
24120|      2|	} while (0);
  ------------------
  |  Branch (24120:11): [Folded, False: 2]
  ------------------
24121|       |
24122|      2|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
24123|      0|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24124|      0|	}
24125|       |
24126|       |
24127|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24128|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24128:2): [True: 0, False: 0]
  |  Branch (24128:2): [True: 0, False: 0]
  ------------------
24129|      2|}
zend_execute.c:ZEND_ASSIGN_OP_SPEC_VAR_TMP_HANDLER:
26815|  2.72k|{
26816|  2.72k|	USE_OPLINE
26817|  2.72k|	zval *var_ptr;
26818|  2.72k|	zval *value;
26819|       |
26820|  2.72k|	SAVE_OPLINE();
  ------------------
  |  |  428|  2.72k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  2.72k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
26821|  2.72k|	value = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  2.72k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  2.72k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26822|  2.72k|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  2.72k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  2.72k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26823|       |
26824|  2.72k|	do {
26825|  2.72k|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|  2.72k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2.72k]
  |  |  ------------------
  ------------------
26826|      1|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
26827|      1|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26828|      1|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26829|      0|				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26830|      0|				break;
26831|      0|			}
26832|      1|		}
26833|  2.72k|		zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|  2.72k|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|  2.72k|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
26834|  2.72k|	} while (0);
  ------------------
  |  Branch (26834:11): [Folded, False: 2.72k]
  ------------------
26835|       |
26836|  2.72k|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|  2.72k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2.63k, False: 94]
  |  |  ------------------
  ------------------
26837|  2.63k|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|  2.63k|	do {												\
  |  | 1426|  2.63k|		zval *_z1 = (z);								\
  |  | 1427|  2.63k|		const zval *_z2 = (v);							\
  |  | 1428|  2.63k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  2.63k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  2.63k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  2.63k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  2.63k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.63k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  2.63k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  2.63k|	do {												\
  |  |  |  | 1408|  2.63k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  2.63k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  2.63k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  2.63k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  2.63k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  2.63k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  2.63k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2.63k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  2.63k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  2.63k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  2.63k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 726, False: 1.90k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    726|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    726|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    726|		}												\
  |  | 1434|  2.63k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2.63k]
  |  |  ------------------
  ------------------
26838|  2.63k|	}
26839|       |
26840|  2.72k|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|  2.72k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.72k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26841|  2.72k|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|  2.72k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.72k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26842|  2.72k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  2.72k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  2.72k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  2.72k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2.72k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  2.72k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  2.72k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  2.72k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  2.72k|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  2.72k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  2.72k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (26842:2): [True: 0, False: 1]
  |  Branch (26842:2): [True: 0, False: 1]
  ------------------
26843|  2.72k|}
zend_execute.c:ZEND_ASSIGN_OP_SPEC_VAR_CV_HANDLER:
30633|    114|{
30634|    114|	USE_OPLINE
30635|    114|	zval *var_ptr;
30636|    114|	zval *value;
30637|       |
30638|    114|	SAVE_OPLINE();
  ------------------
  |  |  428|    114|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    114|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30639|    114|	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    114|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    114|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30640|    114|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    114|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    114|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30641|       |
30642|    114|	do {
30643|    114|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|    114|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 114]
  |  |  ------------------
  ------------------
30644|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
30645|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30646|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30647|      0|				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30648|      0|				break;
30649|      0|			}
30650|      0|		}
30651|    114|		zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|    114|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    114|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
30652|    114|	} while (0);
  ------------------
  |  Branch (30652:11): [Folded, False: 114]
  ------------------
30653|       |
30654|    114|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    114|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 112, False: 2]
  |  |  ------------------
  ------------------
30655|    112|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|    112|	do {												\
  |  | 1426|    112|		zval *_z1 = (z);								\
  |  | 1427|    112|		const zval *_z2 = (v);							\
  |  | 1428|    112|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    112|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    112|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    112|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    112|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    112|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    112|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    112|	do {												\
  |  |  |  | 1408|    112|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    112|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    112|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    112|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    112|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    112|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    112|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 112]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    112|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    112|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    112|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 112]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|    112|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 112]
  |  |  ------------------
  ------------------
30656|    112|	}
30657|       |
30658|       |
30659|    114|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    114|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    114|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30660|    114|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    114|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    114|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    114|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 114, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    114|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    114|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    114|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    114|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    114|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    114|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30660:2): [True: 0, False: 0]
  |  Branch (30660:2): [True: 0, False: 0]
  ------------------
30661|    114|}
zend_execute.c:ZEND_ASSIGN_OP_SPEC_CV_CONST_HANDLER:
41859|  1.98k|{
41860|  1.98k|	USE_OPLINE
41861|  1.98k|	zval *var_ptr;
41862|  1.98k|	zval *value;
41863|       |
41864|  1.98k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.98k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.98k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41865|  1.98k|	value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  1.98k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41866|  1.98k|	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.98k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.98k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41867|       |
41868|  1.98k|	do {
41869|  1.98k|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|  1.98k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 38, False: 1.94k]
  |  |  ------------------
  ------------------
41870|     38|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|     38|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|     38|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
41871|     38|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|     38|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     38|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     38|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41872|     38|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 36]
  |  |  ------------------
  ------------------
41873|      2|				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41874|      2|				break;
41875|      2|			}
41876|     38|		}
41877|  1.98k|		zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|  1.98k|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|  1.98k|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
41878|  1.98k|	} while (0);
  ------------------
  |  Branch (41878:11): [Folded, False: 1.98k]
  ------------------
41879|       |
41880|  1.98k|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|  1.98k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.92k, False: 64]
  |  |  ------------------
  ------------------
41881|  1.92k|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|  1.92k|	do {												\
  |  | 1426|  1.92k|		zval *_z1 = (z);								\
  |  | 1427|  1.92k|		const zval *_z2 = (v);							\
  |  | 1428|  1.92k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  1.92k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  1.92k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  1.92k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  1.92k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.92k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  1.92k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  1.92k|	do {												\
  |  |  |  | 1408|  1.92k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  1.92k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  1.92k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  1.92k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.92k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.92k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  1.92k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1.92k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  1.92k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  1.92k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  1.92k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 963, False: 958]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    963|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    963|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    963|		}												\
  |  | 1434|  1.92k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1.92k]
  |  |  ------------------
  ------------------
41882|  1.92k|	}
41883|       |
41884|       |
41885|       |
41886|       |
41887|  1.98k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.98k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.98k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.98k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.98k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.98k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.98k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.98k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.98k|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.98k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.98k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (41887:2): [True: 0, False: 2]
  |  Branch (41887:2): [True: 0, False: 2]
  ------------------
41888|  1.98k|}
zend_execute.c:ZEND_ASSIGN_OP_SPEC_CV_TMP_HANDLER:
45697|  4.45k|{
45698|  4.45k|	USE_OPLINE
45699|  4.45k|	zval *var_ptr;
45700|  4.45k|	zval *value;
45701|       |
45702|  4.45k|	SAVE_OPLINE();
  ------------------
  |  |  428|  4.45k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  4.45k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45703|  4.45k|	value = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  4.45k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  4.45k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45704|  4.45k|	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  4.45k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  4.45k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45705|       |
45706|  4.45k|	do {
45707|  4.45k|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|  4.45k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 4.44k]
  |  |  ------------------
  ------------------
45708|      3|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
45709|      3|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
45710|      3|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
45711|      1|				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45712|      1|				break;
45713|      1|			}
45714|      3|		}
45715|  4.45k|		zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|  4.45k|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|  4.45k|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
45716|  4.45k|	} while (0);
  ------------------
  |  Branch (45716:11): [Folded, False: 4.45k]
  ------------------
45717|       |
45718|  4.45k|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|  4.45k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4.40k, False: 49]
  |  |  ------------------
  ------------------
45719|  4.40k|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|  4.40k|	do {												\
  |  | 1426|  4.40k|		zval *_z1 = (z);								\
  |  | 1427|  4.40k|		const zval *_z2 = (v);							\
  |  | 1428|  4.40k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  4.40k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  4.40k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|  4.40k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  4.40k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.40k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|  4.40k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  4.40k|	do {												\
  |  |  |  | 1408|  4.40k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  4.40k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  4.40k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  4.40k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  4.40k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  4.40k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  4.40k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|  4.40k|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|  4.40k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|  4.40k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2.99k, False: 1.41k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|  2.99k|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|  2.99k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|  2.99k|		}												\
  |  | 1434|  4.40k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 4.40k]
  |  |  ------------------
  ------------------
45720|  4.40k|	}
45721|       |
45722|  4.45k|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|  4.45k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  4.45k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45723|       |
45724|       |
45725|  4.45k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  4.45k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  4.44k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  4.45k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4.44k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  4.44k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  4.44k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  4.44k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  4.44k|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  4.44k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  4.44k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (45725:2): [True: 0, False: 4]
  |  Branch (45725:2): [True: 0, False: 4]
  ------------------
45726|  4.45k|}
zend_execute.c:ZEND_ASSIGN_OP_SPEC_CV_CV_HANDLER:
50803|    134|{
50804|    134|	USE_OPLINE
50805|    134|	zval *var_ptr;
50806|    134|	zval *value;
50807|       |
50808|    134|	SAVE_OPLINE();
  ------------------
  |  |  428|    134|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    134|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50809|    134|	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    134|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    134|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50810|    134|	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    134|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    134|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50811|       |
50812|    134|	do {
50813|    134|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|    134|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 134]
  |  |  ------------------
  ------------------
50814|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
50815|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50816|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50817|      0|				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50818|      0|				break;
50819|      0|			}
50820|      0|		}
50821|    134|		zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|    134|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    134|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
50822|    134|	} while (0);
  ------------------
  |  Branch (50822:11): [Folded, False: 134]
  ------------------
50823|       |
50824|    134|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    134|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 133]
  |  |  ------------------
  ------------------
50825|      1|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
50826|      1|	}
50827|       |
50828|       |
50829|       |
50830|       |
50831|    134|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    134|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    133|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    134|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 133, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    133|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    133|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    133|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    133|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    133|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    133|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50831:2): [True: 0, False: 1]
  |  Branch (50831:2): [True: 0, False: 1]
  ------------------
50832|    134|}
zend_execute.c:ZEND_ASSIGN_DIM_OP_SPEC_VAR_CONST_HANDLER:
24000|      2|{
24001|      2|	USE_OPLINE
24002|      2|	zval *var_ptr;
24003|      2|	zval *value, *container, *dim;
24004|      2|	HashTable *ht;
24005|       |
24006|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24007|      2|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24008|       |
24009|      2|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
24010|      1|assign_dim_op_array:
24011|      1|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
24012|      1|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24013|      2|assign_dim_op_new_array:
24014|      2|		dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24015|      2|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (24015:7): [Folded, False: 2]
  ------------------
24016|      0|			var_ptr = zend_hash_next_index_insert(ht, &EG(uninitialized_zval));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
24017|      0|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24018|      0|				zend_cannot_add_element();
24019|      0|				goto assign_dim_op_ret_null;
24020|      0|			}
24021|      2|		} else {
24022|      2|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (24022:8): [True: 2, Folded]
  ------------------
24023|      2|				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24024|      2|			} else {
24025|      0|				var_ptr = zend_fetch_dimension_address_inner_RW(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24026|      0|			}
24027|      2|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
24028|      0|				goto assign_dim_op_ret_null;
24029|      0|			}
24030|      2|		}
24031|       |
24032|      2|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      2|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24033|       |
24034|      2|		do {
24035|      2|			if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (24035:8): [True: 2, Folded]
  ------------------
24036|      0|				zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
24037|      0|				var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24038|      0|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24039|      0|					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24040|      0|					break;
24041|      0|				}
24042|      0|			}
24043|      2|			zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
24044|      2|		} while (0);
  ------------------
  |  Branch (24044:12): [Folded, False: 2]
  ------------------
24045|       |
24046|      2|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
24047|      0|			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24048|      0|		}
24049|      2|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
24050|      2|	} else {
24051|      1|		if (EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
24052|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24053|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24054|      0|				goto assign_dim_op_array;
24055|      0|			}
24056|      0|		}
24057|       |
24058|      1|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
24059|      0|			zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
24060|       |
24061|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24062|      0|			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (24062:8): [True: 0, Folded]
  |  Branch (24062:32): [True: 0, False: 0]
  ------------------
24063|      0|				dim++;
24064|      0|			}
24065|      0|			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24066|      1|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
24067|      1|			uint8_t old_type;
24068|       |
24069|      1|			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (24069:8): [Folded, False: 1]
  ------------------
24070|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24071|      0|			}
24072|      1|			ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
24073|      1|			old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
24074|      1|			ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
24075|      1|			if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
24076|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
24077|      0|				zend_false_to_array_deprecated();
24078|      0|				if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24079|      0|					zend_array_destroy(ht);
24080|      0|					goto assign_dim_op_ret_null;
24081|      0|				}
24082|      0|			}
24083|      1|			goto assign_dim_op_new_array;
24084|      1|		} else {
24085|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24086|      0|			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24087|      0|assign_dim_op_ret_null:
24088|      0|			FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
24089|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24090|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
24091|      0|			}
24092|      0|		}
24093|      1|	}
24094|       |
24095|       |
24096|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24097|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (24097:2): [True: 0, False: 0]
  |  Branch (24097:2): [True: 0, False: 0]
  ------------------
24098|      2|}
zend_execute.c:ZEND_ASSIGN_DIM_OP_SPEC_VAR_TMP_HANDLER:
26714|      1|{
26715|      1|	USE_OPLINE
26716|      1|	zval *var_ptr;
26717|      1|	zval *value, *container, *dim;
26718|      1|	HashTable *ht;
26719|       |
26720|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
26721|      1|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26722|       |
26723|      1|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26724|      0|assign_dim_op_array:
26725|      0|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
26726|      0|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26727|      1|assign_dim_op_new_array:
26728|      1|		dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26729|      1|		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (26729:7): [Folded, False: 1]
  ------------------
26730|      0|			var_ptr = zend_hash_next_index_insert(ht, &EG(uninitialized_zval));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
26731|      0|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26732|      0|				zend_cannot_add_element();
26733|      0|				goto assign_dim_op_ret_null;
26734|      0|			}
26735|      1|		} else {
26736|      1|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (26736:8): [Folded, False: 1]
  ------------------
26737|      0|				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26738|      1|			} else {
26739|      1|				var_ptr = zend_fetch_dimension_address_inner_RW(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26740|      1|			}
26741|      1|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26742|      0|				goto assign_dim_op_ret_null;
26743|      0|			}
26744|      1|		}
26745|       |
26746|      1|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      1|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26747|       |
26748|      1|		do {
26749|      1|			if (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (26749:8): [True: 1, Folded]
  ------------------
26750|      0|				zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
26751|      0|				var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26752|      0|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26753|      0|					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26754|      0|					break;
26755|      0|				}
26756|      0|			}
26757|      1|			zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
26758|      1|		} while (0);
  ------------------
  |  Branch (26758:12): [Folded, False: 1]
  ------------------
26759|       |
26760|      1|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26761|      0|			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
26762|      0|		}
26763|      1|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      1|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  178|      1|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      1|	}
  ------------------
26764|      1|	} else {
26765|      1|		if (EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26766|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26767|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26768|      0|				goto assign_dim_op_array;
26769|      0|			}
26770|      0|		}
26771|       |
26772|      1|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26773|      0|			zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
26774|       |
26775|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26776|      0|			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (26776:8): [Folded, False: 0]
  |  Branch (26776:34): [True: 0, False: 0]
  ------------------
26777|      0|				dim++;
26778|      0|			}
26779|      0|			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26780|      1|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
26781|      1|			uint8_t old_type;
26782|       |
26783|      1|			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26783:8): [Folded, False: 1]
  ------------------
26784|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26785|      0|			}
26786|      1|			ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
26787|      1|			old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
26788|      1|			ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
26789|      1|			if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
26790|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
26791|      0|				zend_false_to_array_deprecated();
26792|      0|				if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26793|      0|					zend_array_destroy(ht);
26794|      0|					goto assign_dim_op_ret_null;
26795|      0|				}
26796|      0|			}
26797|      1|			goto assign_dim_op_new_array;
26798|      1|		} else {
26799|      0|			dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26800|      0|			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26801|      0|assign_dim_op_ret_null:
26802|      0|			FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
26803|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26804|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
26805|      0|			}
26806|      0|		}
26807|      1|	}
26808|       |
26809|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26810|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26811|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (26811:2): [True: 0, False: 0]
  |  Branch (26811:2): [True: 0, False: 0]
  ------------------
26812|      1|}
zend_execute.c:ZEND_ASSIGN_DIM_OP_SPEC_VAR_CV_HANDLER:
30532|      5|{
30533|      5|	USE_OPLINE
30534|      5|	zval *var_ptr;
30535|      5|	zval *value, *container, *dim;
30536|      5|	HashTable *ht;
30537|       |
30538|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30539|      5|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30540|       |
30541|      5|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
30542|      1|assign_dim_op_array:
30543|      1|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
30544|      1|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30545|      5|assign_dim_op_new_array:
30546|      5|		dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30547|      5|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (30547:7): [Folded, False: 5]
  ------------------
30548|      0|			var_ptr = zend_hash_next_index_insert(ht, &EG(uninitialized_zval));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
30549|      0|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30550|      0|				zend_cannot_add_element();
30551|      0|				goto assign_dim_op_ret_null;
30552|      0|			}
30553|      5|		} else {
30554|      5|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (30554:8): [Folded, False: 5]
  ------------------
30555|      0|				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30556|      5|			} else {
30557|      5|				var_ptr = zend_fetch_dimension_address_inner_RW(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30558|      5|			}
30559|      5|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
30560|      0|				goto assign_dim_op_ret_null;
30561|      0|			}
30562|      5|		}
30563|       |
30564|      5|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      5|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30565|       |
30566|      5|		do {
30567|      5|			if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (30567:8): [True: 5, Folded]
  ------------------
30568|      0|				zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
30569|      0|				var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30570|      0|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30571|      0|					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30572|      0|					break;
30573|      0|				}
30574|      0|			}
30575|      5|			zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
30576|      5|		} while (0);
  ------------------
  |  Branch (30576:12): [Folded, False: 5]
  ------------------
30577|       |
30578|      5|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
30579|      2|			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
30580|      2|		}
30581|      5|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      5|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      5|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 3, False: 2]
  |  |  ------------------
  |  |  178|      3|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      3|	}
  ------------------
30582|      5|	} else {
30583|      4|		if (EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
30584|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30585|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30586|      0|				goto assign_dim_op_array;
30587|      0|			}
30588|      0|		}
30589|       |
30590|      4|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
30591|      0|			zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
30592|       |
30593|      0|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30594|      0|			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (30594:8): [Folded, False: 0]
  |  Branch (30594:29): [True: 0, False: 0]
  ------------------
30595|      0|				dim++;
30596|      0|			}
30597|      0|			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30598|      4|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
30599|      4|			uint8_t old_type;
30600|       |
30601|      4|			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (30601:8): [Folded, False: 4]
  ------------------
30602|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30603|      0|			}
30604|      4|			ht = zend_new_array(8);
  ------------------
  |  |  342|      4|	_zend_new_array(size)
  ------------------
30605|      4|			old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
30606|      4|			ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  | 1127|      4|		zval *__z = (z);						\
  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
30607|      4|			if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
30608|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
30609|      0|				zend_false_to_array_deprecated();
30610|      0|				if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30611|      0|					zend_array_destroy(ht);
30612|      0|					goto assign_dim_op_ret_null;
30613|      0|				}
30614|      0|			}
30615|      4|			goto assign_dim_op_new_array;
30616|      4|		} else {
30617|      0|			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30618|      0|			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30619|      0|assign_dim_op_ret_null:
30620|      0|			FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
30621|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30622|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30623|      0|			}
30624|      0|		}
30625|      4|	}
30626|       |
30627|       |
30628|      5|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30629|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      5|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  ------------------
  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      5|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      5|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30629:2): [True: 0, False: 0]
  |  Branch (30629:2): [True: 0, False: 0]
  ------------------
30630|      5|}
zend_execute.c:ZEND_ASSIGN_DIM_OP_SPEC_CV_CONST_HANDLER:
41757|     21|{
41758|     21|	USE_OPLINE
41759|     21|	zval *var_ptr;
41760|     21|	zval *value, *container, *dim;
41761|     21|	HashTable *ht;
41762|       |
41763|     21|	SAVE_OPLINE();
  ------------------
  |  |  428|     21|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     21|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41764|     21|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     21|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     21|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41765|       |
41766|     21|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     21|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 11]
  |  |  ------------------
  ------------------
41767|     10|assign_dim_op_array:
41768|     10|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|     10|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     10|		zval *__zv = (zv);								\
  |  | 1538|     10|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     10|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     10|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
41769|     10|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41770|     21|assign_dim_op_new_array:
41771|     21|		dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     21|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41772|     21|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|     21|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (41772:7): [Folded, False: 21]
  ------------------
41773|      0|			var_ptr = zend_hash_next_index_insert(ht, &EG(uninitialized_zval));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
41774|      0|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41775|      0|				zend_cannot_add_element();
41776|      0|				goto assign_dim_op_ret_null;
41777|      0|			}
41778|     21|		} else {
41779|     21|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41779:8): [True: 21, Folded]
  ------------------
41780|     21|				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|     21|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     21|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41781|     21|			} else {
41782|      0|				var_ptr = zend_fetch_dimension_address_inner_RW(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41783|      0|			}
41784|     21|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  ------------------
  ------------------
41785|      0|				goto assign_dim_op_ret_null;
41786|      0|			}
41787|     21|		}
41788|       |
41789|     21|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|     21|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|     21|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     21|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|     21|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     21|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41790|       |
41791|     21|		do {
41792|     21|			if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  864|     21|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|     42|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  ------------------
  ------------------
  |  Branch (41792:8): [True: 21, Folded]
  ------------------
41793|      0|				zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
41794|      0|				var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41795|      0|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41796|      0|					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41797|      0|					break;
41798|      0|				}
41799|      0|			}
41800|     21|			zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|     21|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     21|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
41801|     21|		} while (0);
  ------------------
  |  Branch (41801:12): [Folded, False: 21]
  ------------------
41802|       |
41803|     21|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 10]
  |  |  ------------------
  ------------------
41804|     11|			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|     11|	do {												\
  |  | 1426|     11|		zval *_z1 = (z);								\
  |  | 1427|     11|		const zval *_z2 = (v);							\
  |  | 1428|     11|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     11|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     11|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     11|	do {												\
  |  |  |  | 1408|     11|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     11|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     11|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     11|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     11|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
41805|     11|		}
41806|     21|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|     21|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|     21|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|     21|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 19, False: 2]
  |  |  ------------------
  |  |  178|     19|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|     19|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|     19|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|     19|	}
  ------------------
41807|     21|	} else {
41808|     11|		if (EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
41809|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41810|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41811|      0|				goto assign_dim_op_array;
41812|      0|			}
41813|      0|		}
41814|       |
41815|     11|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
41816|      0|			zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
41817|       |
41818|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41819|      0|			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (41819:8): [True: 0, Folded]
  |  Branch (41819:32): [True: 0, False: 0]
  ------------------
41820|      0|				dim++;
41821|      0|			}
41822|      0|			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41823|     11|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 0]
  |  |  ------------------
  ------------------
41824|     11|			uint8_t old_type;
41825|       |
41826|     11|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|     11|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41826:8): [True: 11, Folded]
  ------------------
41827|     11|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|     11|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41828|     11|			}
41829|     11|			ht = zend_new_array(8);
  ------------------
  |  |  342|     11|	_zend_new_array(size)
  ------------------
41830|     11|			old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
41831|     11|			ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|     11|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     11|		zend_array *__arr = (a);				\
  |  | 1127|     11|		zval *__z = (z);						\
  |  | 1128|     11|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     11|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     11|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     11|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     11|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
41832|     11|			if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
41833|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
41834|      0|				zend_false_to_array_deprecated();
41835|      0|				if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41836|      0|					zend_array_destroy(ht);
41837|      0|					goto assign_dim_op_ret_null;
41838|      0|				}
41839|      0|			}
41840|     11|			goto assign_dim_op_new_array;
41841|     11|		} else {
41842|      0|			dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41843|      0|			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41844|      0|assign_dim_op_ret_null:
41845|      0|			FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
41846|      0|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41847|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41848|      0|			}
41849|      0|		}
41850|     11|	}
41851|       |
41852|       |
41853|       |
41854|       |
41855|     21|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     21|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     21|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 21, Folded]
  |  |  ------------------
  |  | 5759|     21|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     21|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     21|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     21|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     21|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     21|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (41855:2): [True: 0, False: 0]
  |  Branch (41855:2): [True: 0, False: 0]
  ------------------
41856|     21|}
zend_execute.c:ZEND_ASSIGN_DIM_OP_SPEC_CV_UNUSED_HANDLER:
48378|      4|{
48379|      4|	USE_OPLINE
48380|      4|	zval *var_ptr;
48381|      4|	zval *value, *container, *dim;
48382|      4|	HashTable *ht;
48383|       |
48384|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48385|      4|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48386|       |
48387|      4|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
48388|      2|assign_dim_op_array:
48389|      2|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|      2|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      2|		zval *__zv = (zv);								\
  |  | 1538|      2|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      2|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
48390|      2|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48391|      3|assign_dim_op_new_array:
48392|      3|		dim = NULL;
48393|      3|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48393:7): [True: 3, Folded]
  ------------------
48394|      3|			var_ptr = zend_hash_next_index_insert(ht, &EG(uninitialized_zval));
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
48395|      3|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
48396|      0|				zend_cannot_add_element();
48397|      0|				goto assign_dim_op_ret_null;
48398|      0|			}
48399|      3|		} else {
48400|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48400:8): [Folded, False: 0]
  ------------------
48401|      0|				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48402|      0|			} else {
48403|      0|				var_ptr = zend_fetch_dimension_address_inner_RW(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48404|      0|			}
48405|      0|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48406|      0|				goto assign_dim_op_ret_null;
48407|      0|			}
48408|      0|		}
48409|       |
48410|      3|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      3|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48411|       |
48412|      3|		do {
48413|      3|			if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48413:8): [Folded, False: 3]
  ------------------
48414|      0|				zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
48415|      0|				var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48416|      0|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48417|      0|					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48418|      0|					break;
48419|      0|				}
48420|      0|			}
48421|      3|			zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
48422|      3|		} while (0);
  ------------------
  |  Branch (48422:12): [Folded, False: 3]
  ------------------
48423|       |
48424|      3|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
48425|      0|			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48426|      0|		}
48427|      3|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      3|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      3|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 2, False: 1]
  |  |  ------------------
  |  |  178|      2|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      2|	}
  ------------------
48428|      3|	} else {
48429|      2|		if (EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
48430|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48431|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48432|      0|				goto assign_dim_op_array;
48433|      0|			}
48434|      0|		}
48435|       |
48436|      2|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
48437|      0|			zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
48438|       |
48439|      0|			dim = NULL;
48440|      0|			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (48440:8): [Folded, False: 0]
  |  Branch (48440:33): [True: 0, False: 0]
  ------------------
48441|      0|				dim++;
48442|      0|			}
48443|      0|			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48444|      2|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
48445|      1|			uint8_t old_type;
48446|       |
48447|      1|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48447:8): [True: 1, Folded]
  ------------------
48448|      1|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48449|      1|			}
48450|      1|			ht = zend_new_array(8);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
48451|      1|			old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
48452|      1|			ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
48453|      1|			if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
48454|      0|				GC_ADDREF(ht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
48455|      0|				zend_false_to_array_deprecated();
48456|      0|				if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48457|      0|					zend_array_destroy(ht);
48458|      0|					goto assign_dim_op_ret_null;
48459|      0|				}
48460|      0|			}
48461|      1|			goto assign_dim_op_new_array;
48462|      1|		} else {
48463|      1|			dim = NULL;
48464|      1|			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48465|      1|assign_dim_op_ret_null:
48466|      1|			FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      1|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  178|      1|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      1|	}
  ------------------
48467|      1|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
48468|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48469|      0|			}
48470|      1|		}
48471|      2|	}
48472|       |
48473|       |
48474|       |
48475|       |
48476|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      4|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  ------------------
  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      4|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      4|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (48476:2): [True: 0, False: 0]
  |  Branch (48476:2): [True: 0, False: 0]
  ------------------
48477|      4|}
zend_execute.c:ZEND_ASSIGN_DIM_OP_SPEC_CV_CV_HANDLER:
50701|      6|{
50702|      6|	USE_OPLINE
50703|      6|	zval *var_ptr;
50704|      6|	zval *value, *container, *dim;
50705|      6|	HashTable *ht;
50706|       |
50707|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50708|      6|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50709|       |
50710|      6|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
50711|      2|assign_dim_op_array:
50712|      2|		SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|      2|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      2|		zval *__zv = (zv);								\
  |  | 1538|      2|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      2|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      2|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      2|		zval *__z = (z);						\
  |  |  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      2|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      2|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      2|		}												\
  |  | 1543|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
50713|      2|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50714|      6|assign_dim_op_new_array:
50715|      6|		dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50716|      6|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (50716:7): [Folded, False: 6]
  ------------------
50717|      0|			var_ptr = zend_hash_next_index_insert(ht, &EG(uninitialized_zval));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
50718|      0|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50719|      0|				zend_cannot_add_element();
50720|      0|				goto assign_dim_op_ret_null;
50721|      0|			}
50722|      6|		} else {
50723|      6|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (50723:8): [Folded, False: 6]
  ------------------
50724|      0|				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50725|      6|			} else {
50726|      6|				var_ptr = zend_fetch_dimension_address_inner_RW(ht, dim EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50727|      6|			}
50728|      6|			if (UNEXPECTED(!var_ptr)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
50729|      2|				goto assign_dim_op_ret_null;
50730|      2|			}
50731|      6|		}
50732|       |
50733|      4|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      4|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50734|       |
50735|      4|		do {
50736|      4|			if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (50736:8): [True: 4, Folded]
  ------------------
50737|      0|				zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
50738|      0|				var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50739|      0|				if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50740|      0|					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50741|      0|					break;
50742|      0|				}
50743|      0|			}
50744|      4|			zend_binary_op(var_ptr, var_ptr, value OPLINE_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
50745|      4|		} while (0);
  ------------------
  |  Branch (50745:12): [Folded, False: 4]
  ------------------
50746|       |
50747|      4|		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
50748|      2|			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
50749|      2|		}
50750|      4|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      4|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      4|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 3, False: 1]
  |  |  ------------------
  |  |  178|      3|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      3|	}
  ------------------
50751|      4|	} else {
50752|      4|		if (EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
50753|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50754|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50755|      0|				goto assign_dim_op_array;
50756|      0|			}
50757|      0|		}
50758|       |
50759|      4|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
50760|      0|			zend_object *obj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
50761|       |
50762|      0|			dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50763|      0|			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (50763:8): [Folded, False: 0]
  |  Branch (50763:29): [True: 0, False: 0]
  ------------------
50764|      0|				dim++;
50765|      0|			}
50766|      0|			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50767|      4|		} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
50768|      4|			uint8_t old_type;
50769|       |
50770|      4|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (50770:8): [True: 4, Folded]
  ------------------
50771|      3|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      3|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50772|      3|			}
50773|      4|			ht = zend_new_array(8);
  ------------------
  |  |  342|      4|	_zend_new_array(size)
  ------------------
50774|      4|			old_type = Z_TYPE_P(container);
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
50775|      4|			ZVAL_ARR(container, ht);
  ------------------
  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  | 1127|      4|		zval *__z = (z);						\
  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
50776|      4|			if (UNEXPECTED(old_type == IS_FALSE)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
50777|      1|				GC_ADDREF(ht);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
50778|      1|				zend_false_to_array_deprecated();
50779|      1|				if (UNEXPECTED(GC_DELREF(ht) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
50780|      0|					zend_array_destroy(ht);
50781|      0|					goto assign_dim_op_ret_null;
50782|      0|				}
50783|      1|			}
50784|      4|			goto assign_dim_op_new_array;
50785|      4|		} else {
50786|      0|			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50787|      0|			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50788|      2|assign_dim_op_ret_null:
50789|      2|			FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 2, False: 0]
  |  |  ------------------
  |  |  178|      2|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      2|	}
  ------------------
50790|      2|			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
50791|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50792|      0|			}
50793|      2|		}
50794|      4|	}
50795|       |
50796|       |
50797|       |
50798|       |
50799|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      6|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  ------------------
  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      6|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      6|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (50799:2): [True: 0, False: 0]
  |  Branch (50799:2): [True: 0, False: 0]
  ------------------
50800|      6|}
zend_execute.c:ZEND_ASSIGN_OBJ_OP_SPEC_VAR_CONST_HANDLER:
23906|      2|{
23907|      2|	USE_OPLINE
23908|      2|	zval *object;
23909|      2|	zval *property;
23910|      2|	zval *value;
23911|      2|	zval *zptr;
23912|      2|	void *_cache_slot[3] = {0};
23913|      2|	void **cache_slot;
23914|      2|	zend_property_info *prop_info;
23915|      2|	zend_object *zobj;
23916|      2|	zend_string *name, *tmp_name;
23917|       |
23918|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23919|      2|	object = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23920|      2|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
23921|       |
23922|      2|	do {
23923|      2|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      2|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23924|       |
23925|      2|		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (23925:7): [True: 2, Folded]
  ------------------
23926|      1|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (23926:29): [True: 0, False: 0]
  ------------------
23927|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23928|      0|				goto assign_op_object;
23929|      0|			}
23930|      1|			if (IS_VAR == IS_CV
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (23930:8): [Folded, False: 1]
  ------------------
23931|      0|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23932|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23933|      0|			}
23934|      1|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23935|      1|			break;
23936|      1|		}
23937|       |
23938|      1|assign_op_object:
23939|       |		/* here we are sure we are dealing with an object */
23940|      1|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
23941|      1|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (23941:7): [True: 1, Folded]
  ------------------
23942|      1|			name = Z_STR_P(property);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
23943|      1|		} else {
23944|      0|			name = zval_try_get_tmp_string(property, &tmp_name);
23945|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23946|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23947|      0|				break;
23948|      0|			}
23949|      0|		}
23950|      1|		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (23950:16): [True: 1, Folded]
  ------------------
23951|      1|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23952|      1|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23953|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23954|      0|					ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23955|      0|				}
23956|      1|			} else {
23957|      1|				zend_reference *ref;
23958|       |
23959|      1|				do {
23960|      1|					if (UNEXPECTED(Z_ISREF_P(zptr))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23961|      0|						ref = Z_REF_P(zptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
23962|      0|						zptr = Z_REFVAL_P(zptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23963|      0|						if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23964|      0|							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23965|      0|							break;
23966|      0|						}
23967|      0|					}
23968|       |
23969|      1|					prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      1|	(slot)[0]
  ------------------
23970|      1|					if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23970:10): [True: 0, False: 1]
  ------------------
23971|       |						/* special case for typed properties */
23972|      0|						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23973|      1|					} else {
23974|      1|						zend_binary_op(zptr, zptr, value OPLINE_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
23975|      1|					}
23976|      1|				} while (0);
  ------------------
  |  Branch (23976:14): [Folded, False: 1]
  ------------------
23977|       |
23978|      1|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23979|      0|					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23980|      0|				}
23981|      1|			}
23982|      1|		} else {
23983|      0|			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23984|      0|		}
23985|      1|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (23985:7): [Folded, False: 1]
  ------------------
23986|      0|			zend_tmp_string_release(tmp_name);
23987|      0|		}
23988|      1|	} while (0);
  ------------------
  |  Branch (23988:11): [Folded, False: 1]
  ------------------
23989|       |
23990|      2|	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 1, False: 1]
  |  |  ------------------
  |  |  178|      1|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      1|	}
  ------------------
23991|       |
23992|       |
23993|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23994|       |	/* assign_obj has two opcodes! */
23995|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23995:2): [True: 0, False: 0]
  |  Branch (23995:2): [True: 0, False: 0]
  ------------------
23996|      2|}
zend_execute.c:ZEND_ASSIGN_OBJ_OP_SPEC_VAR_TMP_HANDLER:
26621|      2|{
26622|      2|	USE_OPLINE
26623|      2|	zval *object;
26624|      2|	zval *property;
26625|      2|	zval *value;
26626|      2|	zval *zptr;
26627|      2|	void *_cache_slot[3] = {0};
26628|      2|	void **cache_slot;
26629|      2|	zend_property_info *prop_info;
26630|      2|	zend_object *zobj;
26631|      2|	zend_string *name, *tmp_name;
26632|       |
26633|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
26634|      2|	object = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26635|      2|	property = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26636|       |
26637|      2|	do {
26638|      2|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      2|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26639|       |
26640|      2|		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26640:7): [True: 2, Folded]
  ------------------
26641|      2|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (26641:29): [True: 0, False: 0]
  ------------------
26642|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26643|      0|				goto assign_op_object;
26644|      0|			}
26645|      2|			if (IS_VAR == IS_CV
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (26645:8): [Folded, False: 2]
  ------------------
26646|      0|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26647|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26648|      0|			}
26649|      2|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26650|      2|			break;
26651|      2|		}
26652|       |
26653|      0|assign_op_object:
26654|       |		/* here we are sure we are dealing with an object */
26655|      0|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
26656|      0|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (26656:7): [Folded, False: 0]
  ------------------
26657|      0|			name = Z_STR_P(property);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
26658|      0|		} else {
26659|      0|			name = zval_try_get_tmp_string(property, &tmp_name);
26660|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26661|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
26662|      0|				break;
26663|      0|			}
26664|      0|		}
26665|      0|		cache_slot = (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		cache_slot = (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_TMP_VAR == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (26665:16): [Folded, False: 0]
  ------------------
26666|      0|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26667|      0|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26668|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26669|      0|					ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
26670|      0|				}
26671|      0|			} else {
26672|      0|				zend_reference *ref;
26673|       |
26674|      0|				do {
26675|      0|					if (UNEXPECTED(Z_ISREF_P(zptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26676|      0|						ref = Z_REF_P(zptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
26677|      0|						zptr = Z_REFVAL_P(zptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26678|      0|						if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26679|      0|							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26680|      0|							break;
26681|      0|						}
26682|      0|					}
26683|       |
26684|      0|					prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
26685|      0|					if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26685:10): [True: 0, False: 0]
  ------------------
26686|       |						/* special case for typed properties */
26687|      0|						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26688|      0|					} else {
26689|      0|						zend_binary_op(zptr, zptr, value OPLINE_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
26690|      0|					}
26691|      0|				} while (0);
  ------------------
  |  Branch (26691:14): [Folded, False: 0]
  ------------------
26692|       |
26693|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26694|      0|					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
26695|      0|				}
26696|      0|			}
26697|      0|		} else {
26698|      0|			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26699|      0|		}
26700|      0|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (26700:7): [True: 0, Folded]
  ------------------
26701|      0|			zend_tmp_string_release(tmp_name);
26702|      0|		}
26703|      0|	} while (0);
  ------------------
  |  Branch (26703:11): [Folded, False: 0]
  ------------------
26704|       |
26705|      2|	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
26706|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26707|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26708|       |	/* assign_obj has two opcodes! */
26709|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (26709:2): [True: 0, False: 0]
  |  Branch (26709:2): [True: 0, False: 0]
  ------------------
26710|      2|}
zend_execute.c:ZEND_ASSIGN_OBJ_OP_SPEC_UNUSED_CONST_HANDLER:
32891|      5|{
32892|      5|	USE_OPLINE
32893|      5|	zval *object;
32894|      5|	zval *property;
32895|      5|	zval *value;
32896|      5|	zval *zptr;
32897|      5|	void *_cache_slot[3] = {0};
32898|      5|	void **cache_slot;
32899|      5|	zend_property_info *prop_info;
32900|      5|	zend_object *zobj;
32901|      5|	zend_string *name, *tmp_name;
32902|       |
32903|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32904|      5|	object = &EX(This);
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
32905|      5|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
32906|       |
32907|      5|	do {
32908|      5|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      5|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
32909|       |
32910|      5|		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (32910:7): [Folded, False: 5]
  ------------------
32911|      0|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (32911:29): [True: 0, False: 0]
  ------------------
32912|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
32913|      0|				goto assign_op_object;
32914|      0|			}
32915|      0|			if (IS_UNUSED == IS_CV
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (32915:8): [Folded, False: 0]
  ------------------
32916|      0|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32917|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32918|      0|			}
32919|      0|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32920|      0|			break;
32921|      0|		}
32922|       |
32923|      5|assign_op_object:
32924|       |		/* here we are sure we are dealing with an object */
32925|      5|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
32926|      5|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32926:7): [True: 5, Folded]
  ------------------
32927|      5|			name = Z_STR_P(property);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
32928|      5|		} else {
32929|      0|			name = zval_try_get_tmp_string(property, &tmp_name);
32930|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32931|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32932|      0|				break;
32933|      0|			}
32934|      0|		}
32935|      5|		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  524|      5|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (32935:16): [True: 5, Folded]
  ------------------
32936|      5|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
32937|      5|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
32938|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32939|      0|					ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32940|      0|				}
32941|      5|			} else {
32942|      5|				zend_reference *ref;
32943|       |
32944|      5|				do {
32945|      5|					if (UNEXPECTED(Z_ISREF_P(zptr))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
32946|      0|						ref = Z_REF_P(zptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
32947|      0|						zptr = Z_REFVAL_P(zptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
32948|      0|						if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32949|      0|							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32950|      0|							break;
32951|      0|						}
32952|      0|					}
32953|       |
32954|      5|					prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      5|	(slot)[0]
  ------------------
32955|      5|					if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      2|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      2|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (32955:10): [True: 2, False: 3]
  ------------------
32956|       |						/* special case for typed properties */
32957|      0|						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32958|      5|					} else {
32959|      5|						zend_binary_op(zptr, zptr, value OPLINE_CC);
  ------------------
  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
32960|      5|					}
32961|      5|				} while (0);
  ------------------
  |  Branch (32961:14): [Folded, False: 5]
  ------------------
32962|       |
32963|      5|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
32964|      1|					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
32965|      1|				}
32966|      5|			}
32967|      5|		} else {
32968|      0|			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32969|      0|		}
32970|      5|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32970:7): [Folded, False: 5]
  ------------------
32971|      0|			zend_tmp_string_release(tmp_name);
32972|      0|		}
32973|      5|	} while (0);
  ------------------
  |  Branch (32973:11): [Folded, False: 5]
  ------------------
32974|       |
32975|      5|	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      5|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      5|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 3, False: 2]
  |  |  ------------------
  |  |  178|      3|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      3|	}
  ------------------
32976|       |
32977|       |
32978|       |
32979|       |
32980|       |	/* assign_obj has two opcodes! */
32981|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      5|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  ------------------
  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      5|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      5|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32981:2): [True: 0, False: 0]
  |  Branch (32981:2): [True: 0, False: 0]
  ------------------
32982|      5|}
zend_execute.c:ZEND_ASSIGN_OBJ_OP_SPEC_CV_CONST_HANDLER:
41662|      3|{
41663|      3|	USE_OPLINE
41664|      3|	zval *object;
41665|      3|	zval *property;
41666|      3|	zval *value;
41667|      3|	zval *zptr;
41668|      3|	void *_cache_slot[3] = {0};
41669|      3|	void **cache_slot;
41670|      3|	zend_property_info *prop_info;
41671|      3|	zend_object *zobj;
41672|      3|	zend_string *name, *tmp_name;
41673|       |
41674|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41675|      3|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41676|      3|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41677|       |
41678|      3|	do {
41679|      3|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      3|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41680|       |
41681|      3|		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (41681:7): [True: 3, Folded]
  ------------------
41682|      0|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (41682:29): [True: 0, False: 0]
  ------------------
41683|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41684|      0|				goto assign_op_object;
41685|      0|			}
41686|      0|			if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41686:8): [True: 0, Folded]
  ------------------
41687|      0|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41688|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41689|      0|			}
41690|      0|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41691|      0|			break;
41692|      0|		}
41693|       |
41694|      3|assign_op_object:
41695|       |		/* here we are sure we are dealing with an object */
41696|      3|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
41697|      3|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41697:7): [True: 3, Folded]
  ------------------
41698|      3|			name = Z_STR_P(property);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41699|      3|		} else {
41700|      0|			name = zval_try_get_tmp_string(property, &tmp_name);
41701|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41702|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41703|      0|				break;
41704|      0|			}
41705|      0|		}
41706|      3|		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  524|      3|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (41706:16): [True: 3, Folded]
  ------------------
41707|      3|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
41708|      2|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
41709|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41710|      0|					ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41711|      0|				}
41712|      2|			} else {
41713|      2|				zend_reference *ref;
41714|       |
41715|      2|				do {
41716|      2|					if (UNEXPECTED(Z_ISREF_P(zptr))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
41717|      0|						ref = Z_REF_P(zptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
41718|      0|						zptr = Z_REFVAL_P(zptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41719|      0|						if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41720|      0|							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41721|      0|							break;
41722|      0|						}
41723|      0|					}
41724|       |
41725|      2|					prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      2|	(slot)[0]
  ------------------
41726|      2|					if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (41726:10): [True: 0, False: 2]
  ------------------
41727|       |						/* special case for typed properties */
41728|      0|						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41729|      2|					} else {
41730|      2|						zend_binary_op(zptr, zptr, value OPLINE_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
41731|      2|					}
41732|      2|				} while (0);
  ------------------
  |  Branch (41732:14): [Folded, False: 2]
  ------------------
41733|       |
41734|      2|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
41735|      0|					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41736|      0|				}
41737|      2|			}
41738|      2|		} else {
41739|      1|			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41740|      1|		}
41741|      3|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41741:7): [Folded, False: 3]
  ------------------
41742|      0|			zend_tmp_string_release(tmp_name);
41743|      0|		}
41744|      3|	} while (0);
  ------------------
  |  Branch (41744:11): [Folded, False: 3]
  ------------------
41745|       |
41746|      3|	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      3|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      3|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 3]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
41747|       |
41748|       |
41749|       |
41750|       |
41751|       |	/* assign_obj has two opcodes! */
41752|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      3|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  ------------------
  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      3|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      3|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (41752:2): [True: 0, False: 0]
  |  Branch (41752:2): [True: 0, False: 0]
  ------------------
41753|      3|}
zend_execute.c:ZEND_ASSIGN_OBJ_OP_SPEC_CV_CV_HANDLER:
50606|      4|{
50607|      4|	USE_OPLINE
50608|      4|	zval *object;
50609|      4|	zval *property;
50610|      4|	zval *value;
50611|      4|	zval *zptr;
50612|      4|	void *_cache_slot[3] = {0};
50613|      4|	void **cache_slot;
50614|      4|	zend_property_info *prop_info;
50615|      4|	zend_object *zobj;
50616|      4|	zend_string *name, *tmp_name;
50617|       |
50618|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50619|      4|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50620|      4|	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50621|       |
50622|      4|	do {
50623|      4|		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1);
  ------------------
  |  |  123|      4|#define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_op_data_zval_ptr_r(op_type, node) _get_op_data_zval_ptr_r(op_type, node EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50624|       |
50625|      4|		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (50625:7): [True: 4, Folded]
  ------------------
50626|      0|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (50626:29): [True: 0, False: 0]
  ------------------
50627|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50628|      0|				goto assign_op_object;
50629|      0|			}
50630|      0|			if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (50630:8): [True: 0, Folded]
  ------------------
50631|      0|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50632|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50633|      0|			}
50634|      0|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50635|      0|			break;
50636|      0|		}
50637|       |
50638|      4|assign_op_object:
50639|       |		/* here we are sure we are dealing with an object */
50640|      4|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
50641|      4|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (50641:7): [Folded, False: 4]
  ------------------
50642|      0|			name = Z_STR_P(property);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
50643|      4|		} else {
50644|      4|			name = zval_try_get_tmp_string(property, &tmp_name);
50645|      4|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
50646|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50647|      0|				break;
50648|      0|			}
50649|      4|		}
50650|      4|		cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : _cache_slot;
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (50650:16): [Folded, False: 4]
  ------------------
50651|      4|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
50652|      4|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
50653|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50654|      0|					ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50655|      0|				}
50656|      4|			} else {
50657|      4|				zend_reference *ref;
50658|       |
50659|      4|				do {
50660|      4|					if (UNEXPECTED(Z_ISREF_P(zptr))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
50661|      0|						ref = Z_REF_P(zptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
50662|      0|						zptr = Z_REFVAL_P(zptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50663|      0|						if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50664|      0|							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              							zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50665|      0|							break;
50666|      0|						}
50667|      0|					}
50668|       |
50669|      4|					prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      4|	(slot)[0]
  ------------------
50670|      4|					if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (50670:10): [True: 0, False: 4]
  ------------------
50671|       |						/* special case for typed properties */
50672|      0|						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              						zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50673|      4|					} else {
50674|      4|						zend_binary_op(zptr, zptr, value OPLINE_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
50675|      4|					}
50676|      4|				} while (0);
  ------------------
  |  Branch (50676:14): [Folded, False: 4]
  ------------------
50677|       |
50678|      4|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
50679|      1|					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
50680|      1|				}
50681|      4|			}
50682|      4|		} else {
50683|      0|			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50684|      0|		}
50685|      4|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (50685:7): [True: 4, Folded]
  ------------------
50686|      4|			zend_tmp_string_release(tmp_name);
50687|      4|		}
50688|      4|	} while (0);
  ------------------
  |  Branch (50688:11): [Folded, False: 4]
  ------------------
50689|       |
50690|      4|	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      4|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      4|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 4]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
50691|       |
50692|       |
50693|       |
50694|       |
50695|       |	/* assign_obj has two opcodes! */
50696|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      4|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  ------------------
  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      4|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      4|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (50696:2): [True: 0, False: 0]
  |  Branch (50696:2): [True: 0, False: 0]
  ------------------
50697|      4|}
zend_execute.c:ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER:
28746|    449|{
28747|    449|	USE_OPLINE
28748|    449|	zval *variable_ptr;
28749|    449|	zval *value_ptr;
28750|    449|	zend_refcounted *garbage = NULL;
28751|       |
28752|    449|	SAVE_OPLINE();
  ------------------
  |  |  428|    449|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    449|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28753|    449|	value_ptr = _get_zval_ptr_ptr_var(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    449|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    449|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28754|    449|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    449|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    449|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28755|       |
28756|    449|	if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    449|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    898|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (28756:6): [True: 449, Folded]
  ------------------
28757|    449|	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
  ------------------
  |  |  457|    449|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 449]
  |  |  ------------------
  ------------------
28758|       |
28759|      0|		zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
28760|      0|		variable_ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
28761|    449|	} else if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    449|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    898|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (28761:13): [True: 449, Folded]
  ------------------
28762|    449|	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
  ------------------
  |  | 1206|    898|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (28762:13): [True: 4, False: 445]
  ------------------
28763|      4|			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
28764|       |
28765|      4|		variable_ptr = zend_wrong_assign_to_variable_reference(
28766|      4|			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28767|    445|	} else {
28768|    445|		zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage);
28769|    445|	}
28770|       |
28771|    449|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    449|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 440]
  |  |  ------------------
  ------------------
28772|      9|		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
  ------------------
  |  | 1425|      9|	do {												\
  |  | 1426|      9|		zval *_z1 = (z);								\
  |  | 1427|      9|		const zval *_z2 = (v);							\
  |  | 1428|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      9|	do {												\
  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      9|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      9|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      9|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
28773|      9|	}
28774|       |
28775|    449|	if (garbage) {
  ------------------
  |  Branch (28775:6): [True: 282, False: 167]
  ------------------
28776|    282|		GC_DTOR(garbage);
  ------------------
  |  |  726|    282|	do { \
  |  |  727|    282|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|    282|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 3, False: 279]
  |  |  ------------------
  |  |  729|      3|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|    279|		} else { \
  |  |  731|    279|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|    279|		} \
  |  |  733|    282|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 282]
  |  |  ------------------
  ------------------
28777|    282|	}
28778|       |
28779|    449|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    449|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    449|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28780|    449|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    449|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    449|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28781|    449|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    449|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    449|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    449|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 449, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    449|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    449|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    449|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    449|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    449|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    449|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28781:2): [True: 0, False: 0]
  |  Branch (28781:2): [True: 0, False: 0]
  ------------------
28782|    449|}
zend_execute.c:ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER:
31968|    275|{
31969|    275|	USE_OPLINE
31970|    275|	zval *variable_ptr;
31971|    275|	zval *value_ptr;
31972|    275|	zend_refcounted *garbage = NULL;
31973|       |
31974|    275|	SAVE_OPLINE();
  ------------------
  |  |  428|    275|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    275|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
31975|    275|	value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    275|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    275|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31976|    275|	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    275|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    275|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31977|       |
31978|    275|	if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    275|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    550|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (31978:6): [True: 275, Folded]
  ------------------
31979|    275|	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
  ------------------
  |  |  457|    275|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 275]
  |  |  ------------------
  ------------------
31980|       |
31981|      0|		zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
31982|      0|		variable_ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
31983|    275|	} else if (IS_CV == IS_VAR &&
  ------------------
  |  |  867|    275|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV == IS_VAR &&
  ------------------
  |  |  866|    550|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (31983:13): [Folded, False: 275]
  ------------------
31984|      0|	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
  ------------------
  |  | 1206|    275|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (31984:13): [True: 0, False: 0]
  ------------------
31985|      0|			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
31986|       |
31987|      0|		variable_ptr = zend_wrong_assign_to_variable_reference(
31988|      0|			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
31989|    275|	} else {
31990|    275|		zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage);
31991|    275|	}
31992|       |
31993|    275|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    275|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 270]
  |  |  ------------------
  ------------------
31994|      5|		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
31995|      5|	}
31996|       |
31997|    275|	if (garbage) {
  ------------------
  |  Branch (31997:6): [True: 3, False: 272]
  ------------------
31998|      3|		GC_DTOR(garbage);
  ------------------
  |  |  726|      3|	do { \
  |  |  727|      3|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|      3|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 1, False: 2]
  |  |  ------------------
  |  |  729|      1|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|      2|		} else { \
  |  |  731|      2|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|      2|		} \
  |  |  733|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
31999|      3|	}
32000|       |
32001|       |
32002|    275|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    275|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    275|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
32003|    275|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    275|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    275|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    275|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 275, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    275|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    275|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    275|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    275|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    275|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    275|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (32003:2): [True: 0, False: 0]
  |  Branch (32003:2): [True: 0, False: 0]
  ------------------
32004|    275|}
zend_execute.c:ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER:
48291|     70|{
48292|     70|	USE_OPLINE
48293|     70|	zval *variable_ptr;
48294|     70|	zval *value_ptr;
48295|     70|	zend_refcounted *garbage = NULL;
48296|       |
48297|     70|	SAVE_OPLINE();
  ------------------
  |  |  428|     70|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     70|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48298|     70|	value_ptr = _get_zval_ptr_ptr_var(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     70|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     70|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48299|     70|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     70|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     70|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48300|       |
48301|     70|	if (IS_CV == IS_VAR &&
  ------------------
  |  |  867|     70|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR &&
  ------------------
  |  |  866|    140|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48301:6): [Folded, False: 70]
  ------------------
48302|      0|	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48303|       |
48304|      0|		zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
48305|      0|		variable_ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
48306|     70|	} else if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|     70|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_VAR &&
  ------------------
  |  |  866|    140|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48306:13): [True: 70, Folded]
  ------------------
48307|     70|	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
  ------------------
  |  | 1206|    140|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (48307:13): [True: 18, False: 52]
  ------------------
48308|     18|			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 15]
  |  |  ------------------
  ------------------
48309|       |
48310|      3|		variable_ptr = zend_wrong_assign_to_variable_reference(
48311|      3|			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48312|     67|	} else {
48313|     67|		zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage);
48314|     67|	}
48315|       |
48316|     70|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     70|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 65]
  |  |  ------------------
  ------------------
48317|      5|		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 4, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      4|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      4|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
48318|      5|	}
48319|       |
48320|     70|	if (garbage) {
  ------------------
  |  Branch (48320:6): [True: 24, False: 46]
  ------------------
48321|     24|		GC_DTOR(garbage);
  ------------------
  |  |  726|     24|	do { \
  |  |  727|     24|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|     24|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 9, False: 15]
  |  |  ------------------
  |  |  729|      9|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|     15|		} else { \
  |  |  731|     15|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|     15|		} \
  |  |  733|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
48322|     24|	}
48323|       |
48324|     70|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     70|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     70|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48325|       |
48326|       |
48327|     70|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     70|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     70|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     70|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 70, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     70|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     70|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     70|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     70|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     70|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     70|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (48327:2): [True: 0, False: 0]
  |  Branch (48327:2): [True: 0, False: 0]
  ------------------
48328|     70|}
zend_execute.c:ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER:
52485|    390|{
52486|    390|	USE_OPLINE
52487|    390|	zval *variable_ptr;
52488|    390|	zval *value_ptr;
52489|    390|	zend_refcounted *garbage = NULL;
52490|       |
52491|    390|	SAVE_OPLINE();
  ------------------
  |  |  428|    390|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    390|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52492|    390|	value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    390|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    390|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52493|    390|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    390|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    390|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52494|       |
52495|    390|	if (IS_CV == IS_VAR &&
  ------------------
  |  |  867|    390|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR &&
  ------------------
  |  |  866|    780|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52495:6): [Folded, False: 390]
  ------------------
52496|      0|	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52497|       |
52498|      0|		zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
52499|      0|		variable_ptr = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
52500|    390|	} else if (IS_CV == IS_VAR &&
  ------------------
  |  |  867|    390|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV == IS_VAR &&
  ------------------
  |  |  866|    780|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52500:13): [Folded, False: 390]
  ------------------
52501|      0|	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
  ------------------
  |  | 1206|    390|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (52501:13): [True: 0, False: 0]
  ------------------
52502|      0|			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52503|       |
52504|      0|		variable_ptr = zend_wrong_assign_to_variable_reference(
52505|      0|			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52506|    390|	} else {
52507|    390|		zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage);
52508|    390|	}
52509|       |
52510|    390|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    390|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 379]
  |  |  ------------------
  ------------------
52511|     11|		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
  ------------------
  |  | 1425|     11|	do {												\
  |  | 1426|     11|		zval *_z1 = (z);								\
  |  | 1427|     11|		const zval *_z2 = (v);							\
  |  | 1428|     11|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     11|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     11|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     11|	do {												\
  |  |  |  | 1408|     11|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     11|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     11|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     11|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     11|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     11|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     11|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     11|		}												\
  |  | 1434|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
52512|     11|	}
52513|       |
52514|    390|	if (garbage) {
  ------------------
  |  Branch (52514:6): [True: 335, False: 55]
  ------------------
52515|    335|		GC_DTOR(garbage);
  ------------------
  |  |  726|    335|	do { \
  |  |  727|    335|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|    335|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 4, False: 331]
  |  |  ------------------
  |  |  729|      4|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|    331|		} else { \
  |  |  731|    331|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|    331|		} \
  |  |  733|    335|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 335]
  |  |  ------------------
  ------------------
52516|    335|	}
52517|       |
52518|       |
52519|       |
52520|       |
52521|    390|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    390|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    390|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    390|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 390, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    390|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    390|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    390|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    390|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    390|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    390|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (52521:2): [True: 0, False: 0]
  |  Branch (52521:2): [True: 0, False: 0]
  ------------------
52522|    390|}
zend_execute.c:ZEND_QM_ASSIGN_SPEC_CONST_HANDLER:
 5872|     43|{
 5873|     43|	USE_OPLINE
 5874|     43|	zval *value;
 5875|     43|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     43|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     43|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5876|       |
 5877|     43|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     43|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5878|     43|	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|     43|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     86|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5878:6): [Folded, False: 43]
  ------------------
 5879|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5880|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5881|      0|		ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5882|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5882:3): [True: 0, False: 0]
  |  Branch (5882:3): [True: 0, False: 0]
  ------------------
 5883|      0|	}
 5884|       |
 5885|     43|	if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|     43|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|     43|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5885:6): [Folded, False: 43]
  ------------------
 5886|      0|		ZVAL_COPY_DEREF(result, value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5887|     43|	} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|     43|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|     43|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (5887:13): [Folded, False: 43]
  ------------------
 5888|      0|		if (UNEXPECTED(Z_ISREF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5889|      0|			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5890|      0|			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5891|      0|				efree_size(Z_REF_P(value), sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5892|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5893|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5894|      0|			}
 5895|      0|		} else {
 5896|      0|			ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5897|      0|		}
 5898|     43|	} else {
 5899|     43|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|     43|	do {												\
  |  | 1417|     43|		zval *_z1 = (z);								\
  |  | 1418|     43|		const zval *_z2 = (v);							\
  |  | 1419|     43|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     43|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     43|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     43|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     43|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     43|	do {												\
  |  |  |  | 1408|     43|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     43|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     43|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     43|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     43|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 43]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
 5900|     43|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     43|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     43|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5900:7): [True: 43, Folded]
  ------------------
 5901|     43|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
  ------------------
  |  |  457|     43|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 37]
  |  |  ------------------
  ------------------
 5902|      6|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5903|      6|			}
 5904|     43|		}
 5905|     43|	}
 5906|     43|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     43|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     43|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     43|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 43]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     43|	} else { \
  |  |  |  | 5761|     43|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     43|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     43|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     43|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     43|	} \
  |  |  |  | 5764|     43|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     43|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5906:2): [True: 0, False: 43]
  |  Branch (5906:2): [True: 43, False: 0]
  ------------------
 5907|     43|}
zend_execute.c:ZEND_QM_ASSIGN_SPEC_TMP_HANDLER:
17996|     35|{
17997|     35|	USE_OPLINE
17998|     35|	zval *value;
17999|     35|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     35|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     35|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18000|       |
18001|     35|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     35|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     35|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18002|     35|	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|     35|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     70|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18002:6): [Folded, False: 35]
  ------------------
18003|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18004|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18005|      0|		ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18006|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18006:3): [True: 0, False: 0]
  |  Branch (18006:3): [True: 0, False: 0]
  ------------------
18007|      0|	}
18008|       |
18009|     35|	if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|     35|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|     35|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18009:6): [Folded, False: 35]
  ------------------
18010|      0|		ZVAL_COPY_DEREF(result, value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18011|     35|	} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     35|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|     35|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18011:13): [Folded, False: 35]
  ------------------
18012|      0|		if (UNEXPECTED(Z_ISREF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18013|      0|			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18014|      0|			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18015|      0|				efree_size(Z_REF_P(value), sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18016|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18017|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
18018|      0|			}
18019|      0|		} else {
18020|      0|			ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18021|      0|		}
18022|     35|	} else {
18023|     35|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|     35|	do {												\
  |  | 1417|     35|		zval *_z1 = (z);								\
  |  | 1418|     35|		const zval *_z2 = (v);							\
  |  | 1419|     35|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     35|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     35|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     35|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     35|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     35|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     35|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     35|	do {												\
  |  |  |  | 1408|     35|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     35|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     35|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     35|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     35|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     35|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     35|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     35|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 35]
  |  |  ------------------
  ------------------
18024|     35|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     35|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     35|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18024:7): [Folded, False: 35]
  ------------------
18025|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18026|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
18027|      0|			}
18028|      0|		}
18029|     35|	}
18030|     35|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     35|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     35|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     35|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     35|	} else { \
  |  |  |  | 5761|     35|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     35|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     35|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     35|	} \
  |  |  |  | 5764|     35|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     35|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18030:2): [True: 0, False: 35]
  |  Branch (18030:2): [True: 35, False: 0]
  ------------------
18031|     35|}
zend_execute.c:ZEND_QM_ASSIGN_SPEC_VAR_HANDLER:
23851|     40|{
23852|     40|	USE_OPLINE
23853|     40|	zval *value;
23854|     40|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     40|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     40|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23855|       |
23856|     40|	value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     40|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     40|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23857|     40|	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     80|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23857:6): [Folded, False: 40]
  ------------------
23858|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23859|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23860|      0|		ZVAL_NULL(result);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23861|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23861:3): [True: 0, False: 0]
  |  Branch (23861:3): [True: 0, False: 0]
  ------------------
23862|      0|	}
23863|       |
23864|     40|	if (IS_VAR == IS_CV) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CV) {
  ------------------
  |  |  867|     40|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (23864:6): [Folded, False: 40]
  ------------------
23865|      0|		ZVAL_COPY_DEREF(result, value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23866|     40|	} else if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|     40|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (23866:13): [True: 40, Folded]
  ------------------
23867|     40|		if (UNEXPECTED(Z_ISREF_P(value))) {
  ------------------
  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 34, False: 6]
  |  |  ------------------
  ------------------
23868|     34|			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
  ------------------
  |  | 1416|     34|	do {												\
  |  | 1417|     34|		zval *_z1 = (z);								\
  |  | 1418|     34|		const zval *_z2 = (v);							\
  |  | 1419|     34|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     34|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     34|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     34|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     34|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     34|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     34|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     34|	do {												\
  |  |  |  | 1408|     34|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     34|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     34|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     34|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     34|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     34|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     34|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
23869|     34|			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 30]
  |  |  ------------------
  ------------------
23870|      4|				efree_size(Z_REF_P(value), sizeof(zend_reference));
  ------------------
  |  |  138|      4|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23871|     30|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|     30|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|     30|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|     30|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|     30|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 13, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23872|     13|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|     13|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23873|     13|			}
23874|     34|		} else {
23875|      6|			ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
23876|      6|		}
23877|     40|	} else {
23878|      0|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23879|      0|		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (23879:7): [Folded, False: 0]
  ------------------
23880|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23881|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23882|      0|			}
23883|      0|		}
23884|      0|	}
23885|     40|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     40|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     40|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     40|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     40|	} else { \
  |  |  |  | 5761|     40|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     40|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     40|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     40|	} \
  |  |  |  | 5764|     40|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     40|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23885:2): [True: 0, False: 40]
  |  Branch (23885:2): [True: 40, False: 0]
  ------------------
23886|     40|}
zend_execute.c:ZEND_QM_ASSIGN_SPEC_CV_HANDLER:
40583|     49|{
40584|     49|	USE_OPLINE
40585|     49|	zval *value;
40586|     49|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     49|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     49|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40587|       |
40588|     49|	value = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     49|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     49|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40589|     49|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     49|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|     98|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 41]
  |  |  ------------------
  ------------------
  |  Branch (40589:6): [True: 49, Folded]
  ------------------
40590|      8|		SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40591|      8|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      8|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40592|      8|		ZVAL_NULL(result);
  ------------------
  |  | 1059|      8|#define ZVAL_NULL(z) do {				\
  |  | 1060|      8|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      8|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
40593|      8|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40593:3): [True: 0, False: 0]
  |  Branch (40593:3): [True: 0, False: 0]
  ------------------
40594|      8|	}
40595|       |
40596|     41|	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     41|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     41|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40596:6): [True: 41, Folded]
  ------------------
40597|     41|		ZVAL_COPY_DEREF(result, value);
  ------------------
  |  | 1508|     41|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     41|		zval *_z3 = (v);								\
  |  | 1510|     41|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     41|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     41|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     41|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     41|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 32, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     32|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     32|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 9, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      9|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      9|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      9|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      9|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      9|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      9|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      9|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      9|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      9|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 5, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      5|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      5|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      5|				}										\
  |  | 1516|     23|			} else {									\
  |  | 1517|     23|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     23|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     23|			}											\
  |  | 1519|     32|		}												\
  |  | 1520|     41|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     41|	do {												\
  |  |  |  | 1417|     41|		zval *_z1 = (z);								\
  |  |  |  | 1418|     41|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     41|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     41|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     41|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     41|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     41|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     41|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     41|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     41|	do {												\
  |  |  |  |  |  | 1408|     41|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     41|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     41|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     41|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     41|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     41|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     41|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 41]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     41|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 41]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     41|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 41]
  |  |  ------------------
  ------------------
40598|     41|	} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (40598:13): [Folded, False: 0]
  ------------------
40599|      0|		if (UNEXPECTED(Z_ISREF_P(value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40600|      0|			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40601|      0|			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40602|      0|				efree_size(Z_REF_P(value), sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40603|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40604|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40605|      0|			}
40606|      0|		} else {
40607|      0|			ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40608|      0|		}
40609|      0|	} else {
40610|      0|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40611|      0|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (40611:7): [Folded, False: 0]
  ------------------
40612|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40613|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40614|      0|			}
40615|      0|		}
40616|      0|	}
40617|     41|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     41|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     41|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     41|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 41]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     41|	} else { \
  |  |  |  | 5761|     41|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     41|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     41|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     41|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     41|	} \
  |  |  |  | 5764|     41|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     41|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40617:2): [True: 0, False: 41]
  |  Branch (40617:2): [True: 41, False: 0]
  ------------------
40618|     41|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER:
25436|     14|{
25437|     14|	USE_OPLINE
25438|     14|	zval *property, *container, *value_ptr;
25439|       |
25440|     14|	SAVE_OPLINE();
  ------------------
  |  |  428|     14|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25441|       |
25442|     14|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25443|     14|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     14|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25444|       |
25445|     14|	value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25446|       |
25447|     14|	if (1) {
  ------------------
  |  Branch (25447:6): [True: 14, Folded]
  ------------------
25448|     14|		if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|     14|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|     14|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25448:7): [Folded, False: 14]
  ------------------
25449|      0|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25449:8): [True: 0, Folded]
  ------------------
25450|      0|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25451|      0|			} else {
25452|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25453|      0|			}
25454|     14|		} else {
25455|     14|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25455:8): [True: 14, Folded]
  ------------------
25456|     14|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     14|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     14|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25457|     14|			} else {
25458|      0|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25459|      0|			}
25460|     14|		}
25461|     14|	} else {
25462|      0|		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25463|      0|	}
25464|       |
25465|     14|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25466|       |
25467|       |
25468|     14|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25469|     14|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     14|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 14, Folded]
  |  |  ------------------
  |  | 5759|     14|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     14|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     14|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25469:2): [True: 0, False: 0]
  |  Branch (25469:2): [True: 0, False: 0]
  ------------------
25470|     14|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_HANDLER:
25474|      2|{
25475|      2|	USE_OPLINE
25476|      2|	zval *property, *container, *value_ptr;
25477|       |
25478|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25479|       |
25480|      2|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25481|      2|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25482|       |
25483|      2|	value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25484|       |
25485|      2|	if (1) {
  ------------------
  |  Branch (25485:6): [True: 2, Folded]
  ------------------
25486|      2|		if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25486:7): [Folded, False: 2]
  ------------------
25487|      0|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25487:8): [True: 0, Folded]
  ------------------
25488|      0|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25489|      0|			} else {
25490|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25491|      0|			}
25492|      2|		} else {
25493|      2|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25493:8): [True: 2, Folded]
  ------------------
25494|      2|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25495|      2|			} else {
25496|      0|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25497|      0|			}
25498|      2|		}
25499|      2|	} else {
25500|      0|		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25501|      0|	}
25502|       |
25503|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25504|       |
25505|       |
25506|       |
25507|       |
25508|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25508:2): [True: 0, False: 0]
  |  Branch (25508:2): [True: 0, False: 0]
  ------------------
25509|      2|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_HANDLER:
32007|      1|{
32008|      1|	USE_OPLINE
32009|      1|	zval *property, *container, *value_ptr;
32010|       |
32011|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32012|       |
32013|      1|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32014|      1|	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32015|       |
32016|      1|	value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32017|       |
32018|      1|	if (1) {
  ------------------
  |  Branch (32018:6): [True: 1, Folded]
  ------------------
32019|      1|		if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (32019:7): [Folded, False: 1]
  ------------------
32020|      0|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32020:8): [Folded, False: 0]
  ------------------
32021|      0|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32022|      0|			} else {
32023|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32024|      0|			}
32025|      1|		} else {
32026|      1|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32026:8): [Folded, False: 1]
  ------------------
32027|      0|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32028|      1|			} else {
32029|      1|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32030|      1|			}
32031|      1|		}
32032|      1|	} else {
32033|      0|		zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32034|      0|	}
32035|       |
32036|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
32037|       |
32038|       |
32039|      1|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
32040|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      1|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  ------------------
  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      1|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      1|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32040:2): [True: 0, False: 0]
  |  Branch (32040:2): [True: 0, False: 0]
  ------------------
32041|      1|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER:
34015|      4|{
34016|      4|	USE_OPLINE
34017|      4|	zval *property, *container, *value_ptr;
34018|       |
34019|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34020|       |
34021|      4|	container = &EX(This);
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
34022|      4|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34023|       |
34024|      4|	value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34025|       |
34026|      4|	if (1) {
  ------------------
  |  Branch (34026:6): [True: 4, Folded]
  ------------------
34027|      4|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (34027:7): [True: 4, Folded]
  ------------------
34028|      4|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34028:8): [True: 4, Folded]
  ------------------
34029|      4|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34030|      4|			} else {
34031|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34032|      0|			}
34033|      4|		} else {
34034|      0|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34034:8): [True: 0, Folded]
  ------------------
34035|      0|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34036|      0|			} else {
34037|      0|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34038|      0|			}
34039|      0|		}
34040|      4|	} else {
34041|      0|		zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34042|      0|	}
34043|       |
34044|       |
34045|       |
34046|       |
34047|       |
34048|       |
34049|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      4|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  ------------------
  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      4|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      4|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34049:2): [True: 0, False: 0]
  |  Branch (34049:2): [True: 0, False: 0]
  ------------------
34050|      4|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_HANDLER:
43546|      5|{
43547|      5|	USE_OPLINE
43548|      5|	zval *property, *container, *value_ptr;
43549|       |
43550|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43551|       |
43552|      5|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43553|      5|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43554|       |
43555|      5|	value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43556|       |
43557|      5|	if (1) {
  ------------------
  |  Branch (43557:6): [True: 5, Folded]
  ------------------
43558|      5|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43558:7): [Folded, False: 5]
  ------------------
43559|      0|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43559:8): [True: 0, Folded]
  ------------------
43560|      0|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43561|      0|			} else {
43562|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43563|      0|			}
43564|      5|		} else {
43565|      5|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43565:8): [True: 5, Folded]
  ------------------
43566|      5|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43567|      5|			} else {
43568|      0|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43569|      0|			}
43570|      5|		}
43571|      5|	} else {
43572|      0|		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43573|      0|	}
43574|       |
43575|       |
43576|       |
43577|       |
43578|      5|	zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43579|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      5|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  ------------------
  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      5|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      5|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43579:2): [True: 0, False: 0]
  |  Branch (43579:2): [True: 0, False: 0]
  ------------------
43580|      5|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_HANDLER:
43584|     10|{
43585|     10|	USE_OPLINE
43586|     10|	zval *property, *container, *value_ptr;
43587|       |
43588|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43589|       |
43590|     10|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43591|     10|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     10|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43592|       |
43593|     10|	value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43594|       |
43595|     10|	if (1) {
  ------------------
  |  Branch (43595:6): [True: 10, Folded]
  ------------------
43596|     10|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43596:7): [Folded, False: 10]
  ------------------
43597|      0|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43597:8): [True: 0, Folded]
  ------------------
43598|      0|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43599|      0|			} else {
43600|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43601|      0|			}
43602|     10|		} else {
43603|     10|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43603:8): [True: 10, Folded]
  ------------------
43604|     10|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     10|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     10|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43605|     10|			} else {
43606|      0|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43607|      0|			}
43608|     10|		}
43609|     10|	} else {
43610|      0|		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43611|      0|	}
43612|       |
43613|       |
43614|       |
43615|       |
43616|       |
43617|       |
43618|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     10|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  ------------------
  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     10|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     10|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43618:2): [True: 0, False: 0]
  |  Branch (43618:2): [True: 0, False: 0]
  ------------------
43619|     10|}
zend_execute.c:ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_HANDLER:
52563|      2|{
52564|      2|	USE_OPLINE
52565|      2|	zval *property, *container, *value_ptr;
52566|       |
52567|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52568|       |
52569|      2|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52570|      2|	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52571|       |
52572|      2|	value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52573|       |
52574|      2|	if (1) {
  ------------------
  |  Branch (52574:6): [True: 2, Folded]
  ------------------
52575|      2|		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (52575:7): [Folded, False: 2]
  ------------------
52576|      0|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52576:8): [Folded, False: 0]
  ------------------
52577|      0|				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52578|      0|			} else {
52579|      0|				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52580|      0|			}
52581|      2|		} else {
52582|      2|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52582:8): [Folded, False: 2]
  ------------------
52583|      0|				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52584|      2|			} else {
52585|      2|				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52586|      2|			}
52587|      2|		}
52588|      2|	} else {
52589|      0|		zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52590|      0|	}
52591|       |
52592|       |
52593|       |
52594|       |
52595|       |
52596|       |
52597|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      2|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  ------------------
  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      2|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      2|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (52597:2): [True: 0, False: 0]
  |  Branch (52597:2): [True: 0, False: 0]
  ------------------
52598|      2|}
zend_execute.c:ZEND_ASSIGN_STATIC_PROP_REF_SPEC_HANDLER:
 1104|     10|{
 1105|     10|	USE_OPLINE
 1106|     10|	zval *prop, *value_ptr;
 1107|     10|	zend_property_info *prop_info;
 1108|     10|	zend_refcounted *garbage = NULL;
 1109|       |
 1110|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1111|       |
 1112|     10|	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1206|     10|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|     10|#define BP_VAR_W			1
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     10|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     10|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1113|     10|	if (UNEXPECTED(!prop)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 1114|      0|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 1115|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1116|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1116:3): [True: 0, False: 0]
  |  Branch (1116:3): [True: 0, False: 0]
  ------------------
 1117|      0|	}
 1118|       |
 1119|     10|	if (UNEXPECTED(prop_info->flags & ZEND_ACC_PPP_SET_MASK)
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 1120|      0|	 && UNEXPECTED(!zend_asymmetric_property_has_set_access(prop_info))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1121|      0|		zend_asymmetric_visibility_property_modification_error(prop_info, "indirectly modify");
 1122|      0|		FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 1123|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1124|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1124:3): [True: 0, False: 0]
  |  Branch (1124:3): [True: 0, False: 0]
  ------------------
 1125|      0|	}
 1126|       |
 1127|     10|	value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, BP_VAR_W);
  ------------------
  |  |  125|     10|#define get_zval_ptr_ptr(op_type, node, type) _get_zval_ptr_ptr(op_type, node, type EXECUTE_DATA_CC)
  |  |  ------------------
  |  |  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1128|       |
 1129|     10|	if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  866|     20|#define IS_VAR		(1<<2)
  ------------------
              	if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  | 1206|      2|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
              	if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1129:6): [True: 2, False: 8]
  |  Branch (1129:40): [True: 0, False: 2]
  ------------------
 1130|      0|		if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1131|      0|			prop = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1132|      0|		}
 1133|     10|	} else if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|     10|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     10|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 7, False: 3]
  |  |  ------------------
  ------------------
 1134|      7|		prop = zend_assign_to_typed_property_reference(prop_info, prop, value_ptr, &garbage EXECUTE_DATA_CC);
  ------------------
  |  |   89|      7|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      7|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1135|      7|	} else {
 1136|      3|		zend_assign_to_variable_reference(prop, value_ptr, &garbage);
 1137|      3|	}
 1138|       |
 1139|     10|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 4]
  |  |  ------------------
  ------------------
 1140|      6|		ZVAL_COPY(EX_VAR(opline->result.var), prop);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1141|      6|	}
 1142|       |
 1143|     10|	if (garbage) {
  ------------------
  |  Branch (1143:6): [True: 3, False: 7]
  ------------------
 1144|      3|		GC_DTOR(garbage);
  ------------------
  |  |  726|      3|	do { \
  |  |  727|      3|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|      3|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 3, False: 0]
  |  |  ------------------
  |  |  729|      3|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|      3|		} else { \
  |  |  731|      0|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|      0|		} \
  |  |  733|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1145|      3|	}
 1146|       |
 1147|     10|	FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
  ------------------
  |  |  177|     10|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|     10|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 2, False: 8]
  |  |  ------------------
  |  |  178|      2|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      2|	}
  ------------------
 1148|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     10|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  ------------------
  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     10|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     10|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (1148:2): [True: 0, False: 0]
  |  Branch (1148:2): [True: 0, False: 0]
  ------------------
 1149|     10|}
zend_execute.c:ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER:
23231|  2.64k|{
23232|  2.64k|	USE_OPLINE
23233|  2.64k|	zval *var_ptr;
23234|       |
23235|  2.64k|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  2.64k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  2.64k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23236|       |
23237|  2.64k|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|  2.64k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.10k, False: 547]
  |  |  ------------------
  ------------------
23238|  2.10k|		fast_long_increment_function(var_ptr);
23239|  2.10k|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|  2.10k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 2.10k]
  |  |  ------------------
  ------------------
23240|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23241|      0|		}
23242|  2.10k|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  2.10k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  2.10k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  2.10k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2.10k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  2.10k|	} else { \
  |  |  |  | 5761|  2.10k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  2.10k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  2.10k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  2.10k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  2.10k|	} \
  |  |  |  | 5764|  2.10k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  2.10k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23242:3): [True: 0, False: 2.10k]
  |  Branch (23242:3): [True: 2.10k, False: 0]
  ------------------
23243|  2.10k|	}
23244|       |
23245|    547|	ZEND_VM_TAIL_CALL(zend_pre_inc_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    547|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
23246|  2.64k|}
zend_execute.c:zend_pre_inc_helper_SPEC_VAR:
23198|    547|{
23199|    547|	USE_OPLINE
23200|    547|	zval *var_ptr;
23201|       |
23202|    547|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    547|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    547|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23203|       |
23204|    547|	SAVE_OPLINE();
  ------------------
  |  |  428|    547|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    547|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23205|    547|	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  866|    547|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.09k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23205:6): [Folded, False: 547]
  ------------------
23206|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23207|      0|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23208|      0|	}
23209|       |
23210|    547|	do {
23211|    547|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|    547|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 547]
  |  |  ------------------
  ------------------
23212|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
23213|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23214|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23215|      0|				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23216|      0|				break;
23217|      0|			}
23218|      0|		}
23219|    547|		increment_function(var_ptr);
23220|    547|	} while (0);
  ------------------
  |  Branch (23220:11): [Folded, False: 547]
  ------------------
23221|       |
23222|    547|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    547|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 547]
  |  |  ------------------
  ------------------
23223|      0|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23224|      0|	}
23225|       |
23226|    547|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    547|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    547|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23227|    547|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    547|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    545|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    547|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 545, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    545|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    545|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    545|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    545|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    545|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    545|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23227:2): [True: 0, False: 2]
  |  Branch (23227:2): [True: 0, False: 2]
  ------------------
23228|    547|}
zend_execute.c:ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER:
39403|  4.17k|{
39404|  4.17k|	USE_OPLINE
39405|  4.17k|	zval *var_ptr;
39406|       |
39407|  4.17k|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  4.17k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  4.17k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39408|       |
39409|  4.17k|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|  4.17k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3.86k, False: 310]
  |  |  ------------------
  ------------------
39410|  3.86k|		fast_long_increment_function(var_ptr);
39411|  3.86k|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|  3.86k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 3.86k]
  |  |  ------------------
  ------------------
39412|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39413|      0|		}
39414|  3.86k|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  3.86k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  3.86k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  3.86k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3.86k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  3.86k|	} else { \
  |  |  |  | 5761|  3.86k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  3.86k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  3.86k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  3.86k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  3.86k|	} \
  |  |  |  | 5764|  3.86k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  3.86k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39414:3): [True: 0, False: 3.86k]
  |  Branch (39414:3): [True: 3.86k, False: 0]
  ------------------
39415|  3.86k|	}
39416|       |
39417|    310|	ZEND_VM_TAIL_CALL(zend_pre_inc_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    310|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39418|  4.17k|}
zend_execute.c:zend_pre_inc_helper_SPEC_CV:
39370|    329|{
39371|    329|	USE_OPLINE
39372|    329|	zval *var_ptr;
39373|       |
39374|    329|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    329|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    329|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39375|       |
39376|    329|	SAVE_OPLINE();
  ------------------
  |  |  428|    329|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    329|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39377|    329|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    329|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    658|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|    329|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 20, False: 309]
  |  |  ------------------
  ------------------
  |  Branch (39377:6): [True: 329, Folded]
  ------------------
39378|     20|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|     20|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|     20|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39379|     20|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|     20|#define ZVAL_NULL(z) do {				\
  |  | 1060|     20|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     20|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
39380|     20|	}
39381|       |
39382|    329|	do {
39383|    329|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|    329|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 53, False: 276]
  |  |  ------------------
  ------------------
39384|     53|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|     53|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|     53|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
39385|     53|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|     53|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     53|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     53|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39386|     53|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|     53|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 50]
  |  |  ------------------
  ------------------
39387|      3|				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39388|      3|				break;
39389|      3|			}
39390|     53|		}
39391|    326|		increment_function(var_ptr);
39392|    326|	} while (0);
  ------------------
  |  Branch (39392:11): [Folded, False: 326]
  ------------------
39393|       |
39394|    329|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|    329|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 19, False: 310]
  |  |  ------------------
  ------------------
39395|     19|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|     19|	do {												\
  |  | 1426|     19|		zval *_z1 = (z);								\
  |  | 1427|     19|		const zval *_z2 = (v);							\
  |  | 1428|     19|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     19|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     19|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     19|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     19|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     19|	do {												\
  |  |  |  | 1408|     19|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     19|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     19|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     19|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     19|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     19|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     19|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     19|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
39396|     19|	}
39397|       |
39398|       |
39399|    329|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    329|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    329|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    329|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 329, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    329|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    329|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    329|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    329|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    329|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    329|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39399:2): [True: 0, False: 0]
  |  Branch (39399:2): [True: 0, False: 0]
  ------------------
39400|    329|}
zend_execute.c:ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER:
39421|     24|{
39422|     24|	USE_OPLINE
39423|     24|	zval *var_ptr;
39424|       |
39425|     24|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     24|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     24|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39426|       |
39427|     24|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|     24|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 19]
  |  |  ------------------
  ------------------
39428|      5|		fast_long_increment_function(var_ptr);
39429|      5|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, Folded]
  |  |  ------------------
  ------------------
39430|      5|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
39431|      5|		}
39432|      5|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      5|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39432:3): [True: 0, False: 5]
  |  Branch (39432:3): [True: 5, False: 0]
  ------------------
39433|      5|	}
39434|       |
39435|     19|	ZEND_VM_TAIL_CALL(zend_pre_inc_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     19|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39436|     24|}
zend_execute.c:zend_pre_dec_helper_SPEC_VAR:
23267|      2|{
23268|      2|	USE_OPLINE
23269|      2|	zval *var_ptr;
23270|       |
23271|      2|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23272|       |
23273|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23274|      2|	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23274:6): [Folded, False: 2]
  ------------------
23275|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23276|      0|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23277|      0|	}
23278|       |
23279|      2|	do {
23280|      2|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
23281|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
23282|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23283|       |
23284|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23285|      0|				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23286|      0|				break;
23287|      0|			}
23288|      0|		}
23289|      2|		decrement_function(var_ptr);
23290|      2|	} while (0);
  ------------------
  |  Branch (23290:11): [Folded, False: 2]
  ------------------
23291|       |
23292|      2|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
23293|      2|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
23294|      2|	}
23295|       |
23296|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23297|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23297:2): [True: 0, False: 0]
  |  Branch (23297:2): [True: 0, False: 0]
  ------------------
23298|      2|}
zend_execute.c:ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER:
23319|      2|{
23320|      2|	USE_OPLINE
23321|      2|	zval *var_ptr;
23322|       |
23323|      2|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23324|       |
23325|      2|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
23326|      0|		fast_long_decrement_function(var_ptr);
23327|      0|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
23328|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23329|      0|		}
23330|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23330:3): [True: 0, False: 0]
  |  Branch (23330:3): [True: 0, False: 0]
  ------------------
23331|      0|	}
23332|       |
23333|      2|	ZEND_VM_TAIL_CALL(zend_pre_dec_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
23334|      2|}
zend_execute.c:ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER:
39473|      2|{
39474|      2|	USE_OPLINE
39475|      2|	zval *var_ptr;
39476|       |
39477|      2|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39478|       |
39479|      2|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
39480|      1|		fast_long_decrement_function(var_ptr);
39481|      1|		if (UNEXPECTED(0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 1]
  |  |  ------------------
  ------------------
39482|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39483|      0|		}
39484|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39484:3): [True: 0, False: 1]
  |  Branch (39484:3): [True: 1, False: 0]
  ------------------
39485|      1|	}
39486|       |
39487|      1|	ZEND_VM_TAIL_CALL(zend_pre_dec_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39488|      2|}
zend_execute.c:zend_pre_dec_helper_SPEC_CV:
39439|      2|{
39440|      2|	USE_OPLINE
39441|      2|	zval *var_ptr;
39442|       |
39443|      2|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39444|       |
39445|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39446|      2|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (39446:6): [True: 2, Folded]
  ------------------
39447|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39448|      0|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39449|      0|	}
39450|       |
39451|      2|	do {
39452|      2|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
39453|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
39454|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39455|       |
39456|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39457|      0|				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39458|      0|				break;
39459|      0|			}
39460|      0|		}
39461|      2|		decrement_function(var_ptr);
39462|      2|	} while (0);
  ------------------
  |  Branch (39462:11): [Folded, False: 2]
  ------------------
39463|       |
39464|      2|	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
39465|      1|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
39466|      1|	}
39467|       |
39468|       |
39469|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39469:2): [True: 0, False: 0]
  |  Branch (39469:2): [True: 0, False: 0]
  ------------------
39470|      2|}
zend_execute.c:ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER:
39491|      1|{
39492|      1|	USE_OPLINE
39493|      1|	zval *var_ptr;
39494|       |
39495|      1|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39496|       |
39497|      1|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
39498|      0|		fast_long_decrement_function(var_ptr);
39499|      0|		if (UNEXPECTED(1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
39500|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39501|      0|		}
39502|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39502:3): [True: 0, False: 0]
  |  Branch (39502:3): [True: 0, False: 0]
  ------------------
39503|      0|	}
39504|       |
39505|      1|	ZEND_VM_TAIL_CALL(zend_pre_dec_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39506|      1|}
zend_execute.c:ZEND_POST_INC_SPEC_VAR_HANDLER:
23369|     66|{
23370|     66|	USE_OPLINE
23371|     66|	zval *var_ptr;
23372|       |
23373|     66|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     66|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     66|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23374|       |
23375|     66|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|     66|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 23, False: 43]
  |  |  ------------------
  ------------------
23376|     23|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
  ------------------
  |  | 1076|     23|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     23|		zval *__z = (z);				\
  |  | 1078|     23|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     23|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     23|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     23|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     23|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
23377|     23|		fast_long_increment_function(var_ptr);
23378|     23|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     23|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     23|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     23|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 23]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     23|	} else { \
  |  |  |  | 5761|     23|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     23|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     23|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     23|	} \
  |  |  |  | 5764|     23|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     23|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23378:3): [True: 0, False: 23]
  |  Branch (23378:3): [True: 23, False: 0]
  ------------------
23379|     23|	}
23380|       |
23381|     43|	ZEND_VM_TAIL_CALL(zend_post_inc_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     43|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
23382|     66|}
zend_execute.c:zend_post_inc_helper_SPEC_VAR:
23337|     43|{
23338|     43|	USE_OPLINE
23339|     43|	zval *var_ptr;
23340|       |
23341|     43|	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     43|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     43|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23342|       |
23343|     43|	SAVE_OPLINE();
  ------------------
  |  |  428|     43|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     43|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23344|     43|	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  866|     43|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|     86|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23344:6): [Folded, False: 43]
  ------------------
23345|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23346|      0|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23347|      0|	}
23348|       |
23349|     43|	do {
23350|     43|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|     43|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 43]
  |  |  ------------------
  ------------------
23351|      0|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
23352|      0|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23353|       |
23354|      0|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23355|      0|				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23356|      0|				break;
23357|      0|			}
23358|      0|		}
23359|     43|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|     43|	do {												\
  |  | 1426|     43|		zval *_z1 = (z);								\
  |  | 1427|     43|		const zval *_z2 = (v);							\
  |  | 1428|     43|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     43|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     43|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     43|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     43|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     43|	do {												\
  |  |  |  | 1408|     43|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     43|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     43|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     43|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     43|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 43]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     43|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     43|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     43|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 43]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
23360|       |
23361|     43|		increment_function(var_ptr);
23362|     43|	} while (0);
  ------------------
  |  Branch (23362:11): [Folded, False: 43]
  ------------------
23363|       |
23364|     43|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     43|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     43|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23365|     43|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     43|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     43|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     43|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 43, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     43|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     43|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     43|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     43|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     43|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     43|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23365:2): [True: 0, False: 0]
  |  Branch (23365:2): [True: 0, False: 0]
  ------------------
23366|     43|}
zend_execute.c:ZEND_POST_INC_SPEC_CV_HANDLER:
39541|  1.61k|{
39542|  1.61k|	USE_OPLINE
39543|  1.61k|	zval *var_ptr;
39544|       |
39545|  1.61k|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.61k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.61k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39546|       |
39547|  1.61k|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|  1.61k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.22k, False: 383]
  |  |  ------------------
  ------------------
39548|  1.22k|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
  ------------------
  |  | 1076|  1.22k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  1.22k|		zval *__z = (z);				\
  |  | 1078|  1.22k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  1.22k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  1.22k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  1.22k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  1.22k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.22k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  1.22k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  1.22k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1.22k]
  |  |  ------------------
  ------------------
39549|  1.22k|		fast_long_increment_function(var_ptr);
39550|  1.22k|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  1.22k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.22k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.22k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1.22k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.22k|	} else { \
  |  |  |  | 5761|  1.22k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.22k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  1.22k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.22k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  1.22k|	} \
  |  |  |  | 5764|  1.22k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.22k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39550:3): [True: 0, False: 1.22k]
  |  Branch (39550:3): [True: 1.22k, False: 0]
  ------------------
39551|  1.22k|	}
39552|       |
39553|    383|	ZEND_VM_TAIL_CALL(zend_post_inc_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    383|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39554|  1.61k|}
zend_execute.c:zend_post_inc_helper_SPEC_CV:
39509|    383|{
39510|    383|	USE_OPLINE
39511|    383|	zval *var_ptr;
39512|       |
39513|    383|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    383|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    383|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39514|       |
39515|    383|	SAVE_OPLINE();
  ------------------
  |  |  428|    383|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    383|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39516|    383|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    383|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    766|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|    383|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 28, False: 355]
  |  |  ------------------
  ------------------
  |  Branch (39516:6): [True: 383, Folded]
  ------------------
39517|     28|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|     28|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|     28|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39518|     28|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|     28|#define ZVAL_NULL(z) do {				\
  |  | 1060|     28|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     28|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
39519|     28|	}
39520|       |
39521|    383|	do {
39522|    383|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|    383|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 381]
  |  |  ------------------
  ------------------
39523|      2|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
39524|      2|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39525|       |
39526|      2|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
39527|      0|				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39528|      0|				break;
39529|      0|			}
39530|      2|		}
39531|    383|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|    383|	do {												\
  |  | 1426|    383|		zval *_z1 = (z);								\
  |  | 1427|    383|		const zval *_z2 = (v);							\
  |  | 1428|    383|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    383|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    383|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    383|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    383|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    383|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    383|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    383|	do {												\
  |  |  |  | 1408|    383|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    383|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    383|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    383|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    383|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    383|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    383|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 383]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    383|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    383|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    383|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 383]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|    383|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 383]
  |  |  ------------------
  ------------------
39532|       |
39533|    383|		increment_function(var_ptr);
39534|    383|	} while (0);
  ------------------
  |  Branch (39534:11): [Folded, False: 383]
  ------------------
39535|       |
39536|       |
39537|    383|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    383|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    383|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    383|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 383, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    383|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    383|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    383|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    383|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    383|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    383|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39537:2): [True: 0, False: 0]
  |  Branch (39537:2): [True: 0, False: 0]
  ------------------
39538|    383|}
zend_execute.c:ZEND_POST_DEC_SPEC_CV_HANDLER:
39589|    378|{
39590|    378|	USE_OPLINE
39591|    378|	zval *var_ptr;
39592|       |
39593|    378|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    378|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    378|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39594|       |
39595|    378|	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
  ------------------
  |  |  456|    378|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 250, False: 128]
  |  |  ------------------
  ------------------
39596|    250|		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
  ------------------
  |  | 1076|    250|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    250|		zval *__z = (z);				\
  |  | 1078|    250|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    250|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    250|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    250|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    250|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    250|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    250|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    250|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 250]
  |  |  ------------------
  ------------------
39597|    250|		fast_long_decrement_function(var_ptr);
39598|    250|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    250|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    250|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    250|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 250]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    250|	} else { \
  |  |  |  | 5761|    250|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    250|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    250|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    250|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    250|	} \
  |  |  |  | 5764|    250|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    250|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39598:3): [True: 0, False: 250]
  |  Branch (39598:3): [True: 250, False: 0]
  ------------------
39599|    250|	}
39600|       |
39601|    128|	ZEND_VM_TAIL_CALL(zend_post_dec_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    128|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39602|    378|}
zend_execute.c:zend_post_dec_helper_SPEC_CV:
39557|    128|{
39558|    128|	USE_OPLINE
39559|    128|	zval *var_ptr;
39560|       |
39561|    128|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    128|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    128|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39562|       |
39563|    128|	SAVE_OPLINE();
  ------------------
  |  |  428|    128|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    128|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39564|    128|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    128|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    256|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|    128|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 125, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (39564:6): [True: 128, Folded]
  ------------------
39565|    125|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    125|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    125|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39566|    125|		ZVAL_NULL(var_ptr);
  ------------------
  |  | 1059|    125|#define ZVAL_NULL(z) do {				\
  |  | 1060|    125|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    125|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    125|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    125|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    125|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 125]
  |  |  ------------------
  ------------------
39567|    125|	}
39568|       |
39569|    128|	do {
39570|    128|		if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
  ------------------
  |  |  457|    128|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 125]
  |  |  ------------------
  ------------------
39571|      3|			zend_reference *ref = Z_REF_P(var_ptr);
  ------------------
  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
39572|      3|			var_ptr = Z_REFVAL_P(var_ptr);
  ------------------
  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39573|       |
39574|      3|			if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
39575|      0|				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              				zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39576|      0|				break;
39577|      0|			}
39578|      3|		}
39579|    128|		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
  ------------------
  |  | 1425|    128|	do {												\
  |  | 1426|    128|		zval *_z1 = (z);								\
  |  | 1427|    128|		const zval *_z2 = (v);							\
  |  | 1428|    128|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    128|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    128|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    128|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    128|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    128|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    128|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    128|	do {												\
  |  |  |  | 1408|    128|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    128|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    128|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    128|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    128|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    128|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    128|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 128]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    128|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    128|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    128|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 128]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|    128|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 128]
  |  |  ------------------
  ------------------
39580|       |
39581|    128|		decrement_function(var_ptr);
39582|    128|	} while (0);
  ------------------
  |  Branch (39582:11): [Folded, False: 128]
  ------------------
39583|       |
39584|       |
39585|    128|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    128|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    128|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    128|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 128, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    128|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    128|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    128|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    128|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    128|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    128|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39585:2): [True: 0, False: 0]
  |  Branch (39585:2): [True: 0, False: 0]
  ------------------
39586|    128|}
zend_execute.c:ZEND_POST_INC_STATIC_PROP_SPEC_HANDLER:
  863|    125|{
  864|    125|	USE_OPLINE
  865|    125|	zval *prop;
  866|    125|	zend_property_info *prop_info;
  867|       |
  868|    125|	SAVE_OPLINE();
  ------------------
  |  |  428|    125|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    125|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  869|       |
  870|    125|	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1076|    125|#define BP_VAR_RW			2
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    125|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    125|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    125|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    125|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  871|    125|	if (UNEXPECTED(!prop)) {
  ------------------
  |  |  457|    125|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 124]
  |  |  ------------------
  ------------------
  872|      1|		UNDEF_RESULT();
  ------------------
  |  | 5907|      1|#define UNDEF_RESULT() do { \
  |  | 5908|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 1, False: 0]
  |  |  ------------------
  |  | 5909|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      1|		} \
  |  | 5911|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  873|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (873:3): [True: 0, False: 1]
  |  Branch (873:3): [True: 1, False: 0]
  ------------------
  874|      1|	}
  875|       |
  876|    124|	if (UNEXPECTED(prop_info->flags & ZEND_ACC_PPP_SET_MASK)
  ------------------
  |  |  457|    248|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 124]
  |  |  ------------------
  ------------------
  877|      0|	 && UNEXPECTED(!zend_asymmetric_property_has_set_access(prop_info))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  878|      0|		zend_asymmetric_visibility_property_modification_error(prop_info, "indirectly modify");
  879|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  880|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (880:3): [True: 0, False: 0]
  |  Branch (880:3): [True: 0, False: 0]
  ------------------
  881|      0|	}
  882|       |
  883|    124|	zend_post_incdec_property_zval(prop,
  884|    124|		ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  152|    124|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|    124|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 124]
  |  |  ------------------
  ------------------
              		ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    124|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    124|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    124|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    124|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  885|       |
  886|    124|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    124|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    124|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    124|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 124, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    124|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    124|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    124|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    124|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    124|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    124|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (886:2): [True: 0, False: 0]
  |  Branch (886:2): [True: 0, False: 0]
  ------------------
  887|    124|}
zend_execute.c:ZEND_JMP_SPEC_HANDLER:
 1294|  3.19k|{
 1295|  3.19k|	USE_OPLINE
 1296|       |
 1297|       |	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op1), 0);
  ------------------
  |  | 5787|  3.19k|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|  3.19k|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|  3.19k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 3.19k]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|  3.19k|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|  3.19k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|  3.19k|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|  3.19k|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|  3.19k|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|  3.19k|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|  3.19k|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|  3.19k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  3.19k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3.19k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|  3.19k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 3.19k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|  3.19k|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|  3.19k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|  3.19k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1297:2): [True: 0, False: 0]
  |  Branch (1297:2): [True: 0, False: 0]
  ------------------
 1298|  3.19k|}
zend_execute.c:ZEND_JMPZ_SPEC_CONST_HANDLER:
 4596|    104|{
 4597|    104|	USE_OPLINE
 4598|    104|	zval *val;
 4599|    104|	uint8_t op1_type;
 4600|       |
 4601|    104|	val = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    104|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4602|       |
 4603|    104|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|    104|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    104|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|    104|#define IS_TRUE						3
  ------------------
  |  Branch (4603:6): [True: 6, False: 98]
  ------------------
 4604|      6|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      6|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      6|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      6|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      6|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4604:3): [True: 0, False: 6]
  |  Branch (4604:3): [True: 6, False: 0]
  ------------------
 4605|     98|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|     98|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 94]
  |  |  ------------------
  ------------------
 4606|      4|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4606:7): [Folded, False: 4]
  ------------------
 4607|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4608|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4609|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4610|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4610:5): [True: 0, False: 0]
  |  Branch (4610:5): [True: 0, False: 0]
  ------------------
 4611|      0|			}
 4612|      0|		}
 4613|      4|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      4|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      4|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 4]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      4|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      4|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      4|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      4|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      4|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      4|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      4|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4613:3): [True: 0, False: 0]
  |  Branch (4613:3): [True: 0, False: 0]
  ------------------
 4614|      4|	}
 4615|       |
 4616|    104|	SAVE_OPLINE();
  ------------------
  |  |  428|     94|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     94|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4617|     94|	op1_type = IS_CONST;
  ------------------
  |  |  864|     94|#define IS_CONST	(1<<0)
  ------------------
 4618|     94|	if (i_zend_is_true(val)) {
  ------------------
  |  Branch (4618:6): [True: 93, False: 1]
  ------------------
 4619|     93|		opline++;
 4620|     93|	} else {
 4621|      1|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      1|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      1|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
 4622|      1|	}
 4623|     94|	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|     94|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|     94|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (4623:6): [True: 0, False: 94]
  ------------------
 4624|      0|		zval_ptr_dtor_nogc(val);
 4625|      0|	}
 4626|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|     94|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|     94|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|     94|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    188|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 94]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 94, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|     94|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|     94|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|     94|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|     94|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|     94|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|     94|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|     94|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|     94|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|     94|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 94]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|     94|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 94]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|     94|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     94|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|     94|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4626:2): [True: 0, False: 0]
  |  Branch (4626:2): [True: 0, False: 0]
  ------------------
 4627|     94|}
zend_execute.c:ZEND_JMPZ_SPEC_TMP_HANDLER:
16971|    301|{
16972|    301|	USE_OPLINE
16973|    301|	zval *val;
16974|    301|	uint8_t op1_type;
16975|       |
16976|    301|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    301|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    301|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16977|       |
16978|    301|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|    301|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    301|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|    301|#define IS_TRUE						3
  ------------------
  |  Branch (16978:6): [True: 8, False: 293]
  ------------------
16979|      8|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      8|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16979:3): [True: 0, False: 8]
  |  Branch (16979:3): [True: 8, False: 0]
  ------------------
16980|    293|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|    293|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 290]
  |  |  ------------------
  ------------------
16981|      3|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16981:7): [Folded, False: 3]
  ------------------
16982|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16983|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16984|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16985|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (16985:5): [True: 0, False: 0]
  |  Branch (16985:5): [True: 0, False: 0]
  ------------------
16986|      0|			}
16987|      0|		}
16988|      3|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      3|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      3|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 3]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      3|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      3|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      3|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      3|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      3|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      3|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16988:3): [True: 0, False: 0]
  |  Branch (16988:3): [True: 0, False: 0]
  ------------------
16989|      3|	}
16990|       |
16991|    301|	SAVE_OPLINE();
  ------------------
  |  |  428|    290|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    290|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16992|    290|	op1_type = IS_TMP_VAR;
  ------------------
  |  |  865|    290|#define IS_TMP_VAR	(1<<1)
  ------------------
16993|    290|	if (i_zend_is_true(val)) {
  ------------------
  |  Branch (16993:6): [True: 287, False: 3]
  ------------------
16994|    287|		opline++;
16995|    287|	} else {
16996|      3|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      3|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      3|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
16997|      3|	}
16998|    290|	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    290|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    290|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16998:6): [True: 290, False: 0]
  ------------------
16999|    290|		zval_ptr_dtor_nogc(val);
17000|    290|	}
17001|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|    290|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|    290|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|    290|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    580|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 290]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 290, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|    290|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|    290|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|    290|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|    290|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|    290|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|    290|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|    290|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|    290|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|    290|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 290]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|    290|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 290]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|    290|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    290|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|    290|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17001:2): [True: 0, False: 0]
  |  Branch (17001:2): [True: 0, False: 0]
  ------------------
17002|    290|}
zend_execute.c:ZEND_JMPZ_SPEC_CV_HANDLER:
39634|      4|{
39635|      4|	USE_OPLINE
39636|      4|	zval *val;
39637|      4|	uint8_t op1_type;
39638|       |
39639|      4|	val = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39640|       |
39641|      4|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|      4|#define IS_TRUE						3
  ------------------
  |  Branch (39641:6): [True: 0, False: 4]
  ------------------
39642|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39642:3): [True: 0, False: 0]
  |  Branch (39642:3): [True: 0, False: 0]
  ------------------
39643|      4|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
39644|      2|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (39644:7): [True: 2, Folded]
  ------------------
39645|      1|			SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39646|      1|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39647|      1|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
39648|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (39648:5): [True: 0, False: 0]
  |  Branch (39648:5): [True: 0, False: 0]
  ------------------
39649|      0|			}
39650|      1|		}
39651|      2|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 2]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (39651:3): [True: 0, False: 0]
  |  Branch (39651:3): [True: 0, False: 0]
  ------------------
39652|      2|	}
39653|       |
39654|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39655|      2|	op1_type = IS_CV;
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
39656|      2|	if (i_zend_is_true(val)) {
  ------------------
  |  Branch (39656:6): [True: 1, False: 1]
  ------------------
39657|      1|		opline++;
39658|      1|	} else {
39659|      1|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      1|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      1|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
39660|      1|	}
39661|      2|	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (39661:6): [True: 0, False: 2]
  ------------------
39662|      0|		zval_ptr_dtor_nogc(val);
39663|      0|	}
39664|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|      2|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39664:2): [True: 0, False: 0]
  |  Branch (39664:2): [True: 0, False: 0]
  ------------------
39665|      2|}
zend_execute.c:ZEND_JMPNZ_SPEC_CONST_HANDLER:
 4630|  9.35k|{
 4631|  9.35k|	USE_OPLINE
 4632|  9.35k|	zval *val;
 4633|  9.35k|	uint8_t op1_type;
 4634|       |
 4635|  9.35k|	val = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  9.35k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4636|       |
 4637|  9.35k|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|  9.35k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|  9.35k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|  9.35k|#define IS_TRUE						3
  ------------------
  |  Branch (4637:6): [True: 942, False: 8.41k]
  ------------------
 4638|    942|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|    942|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|    942|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|    942|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 942]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|    942|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|    942|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    942|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    942|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    942|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    942|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    942|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    942|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    942|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 942]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    942|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 942]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|    942|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    942|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|    942|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4638:3): [True: 0, False: 0]
  |  Branch (4638:3): [True: 0, False: 0]
  ------------------
 4639|  8.41k|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|  8.41k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8.41k]
  |  |  ------------------
  ------------------
 4640|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4640:7): [Folded, False: 0]
  ------------------
 4641|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4642|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4643|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4644|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4644:5): [True: 0, False: 0]
  |  Branch (4644:5): [True: 0, False: 0]
  ------------------
 4645|      0|			}
 4646|      0|		}
 4647|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4647:3): [True: 0, False: 0]
  |  Branch (4647:3): [True: 0, False: 0]
  ------------------
 4648|      0|	}
 4649|       |
 4650|  9.35k|	SAVE_OPLINE();
  ------------------
  |  |  428|  8.41k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  8.41k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4651|  8.41k|	op1_type = IS_CONST;
  ------------------
  |  |  864|  8.41k|#define IS_CONST	(1<<0)
  ------------------
 4652|  8.41k|	if (i_zend_is_true(val)) {
  ------------------
  |  Branch (4652:6): [True: 8.41k, False: 1]
  ------------------
 4653|  8.41k|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|  8.41k|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|  8.41k|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
 4654|  8.41k|	} else {
 4655|      1|		opline++;
 4656|      1|	}
 4657|  8.41k|	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  8.41k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  8.41k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (4657:6): [True: 0, False: 8.41k]
  ------------------
 4658|      0|		zval_ptr_dtor_nogc(val);
 4659|      0|	}
 4660|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|  8.41k|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|  8.41k|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|  8.41k|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  16.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8.41k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 8.41k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|  8.41k|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|  8.41k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|  8.41k|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|  8.41k|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|  8.41k|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|  8.41k|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|  8.41k|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|  8.41k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|  8.41k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8.41k]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|  8.41k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 8.41k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|  8.41k|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  8.41k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|  8.41k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4660:2): [True: 0, False: 0]
  |  Branch (4660:2): [True: 0, False: 0]
  ------------------
 4661|  8.41k|}
zend_execute.c:ZEND_JMPNZ_SPEC_TMP_HANDLER:
17005|  9.09k|{
17006|  9.09k|	USE_OPLINE
17007|  9.09k|	zval *val;
17008|  9.09k|	uint8_t op1_type;
17009|       |
17010|  9.09k|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  9.09k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  9.09k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17011|       |
17012|  9.09k|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|  9.09k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|  9.09k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|  9.09k|#define IS_TRUE						3
  ------------------
  |  Branch (17012:6): [True: 0, False: 9.09k]
  ------------------
17013|      0|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17013:3): [True: 0, False: 0]
  |  Branch (17013:3): [True: 0, False: 0]
  ------------------
17014|  9.09k|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|  9.09k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 9.09k]
  |  |  ------------------
  ------------------
17015|      1|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17015:7): [Folded, False: 1]
  ------------------
17016|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17017|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17018|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17019|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17019:5): [True: 0, False: 0]
  |  Branch (17019:5): [True: 0, False: 0]
  ------------------
17020|      0|			}
17021|      0|		}
17022|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17022:3): [True: 0, False: 1]
  |  Branch (17022:3): [True: 1, False: 0]
  ------------------
17023|      1|	}
17024|       |
17025|  9.09k|	SAVE_OPLINE();
  ------------------
  |  |  428|  9.09k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  9.09k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17026|  9.09k|	op1_type = IS_TMP_VAR;
  ------------------
  |  |  865|  9.09k|#define IS_TMP_VAR	(1<<1)
  ------------------
17027|  9.09k|	if (i_zend_is_true(val)) {
  ------------------
  |  Branch (17027:6): [True: 9.09k, False: 5]
  ------------------
17028|  9.09k|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|  9.09k|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|  9.09k|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
17029|  9.09k|	} else {
17030|      5|		opline++;
17031|      5|	}
17032|  9.09k|	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|  9.09k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|  9.09k|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17032:6): [True: 9.09k, False: 0]
  ------------------
17033|  9.09k|		zval_ptr_dtor_nogc(val);
17034|  9.09k|	}
17035|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|  9.09k|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|  9.09k|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|  9.09k|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  18.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9.09k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 9.09k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|  9.09k|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|  9.09k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|  9.09k|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|  9.09k|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|  9.09k|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|  9.09k|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|  9.09k|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|  9.09k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|  9.09k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9.09k]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|  9.09k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 9.09k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|  9.09k|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  9.09k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|  9.09k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17035:2): [True: 0, False: 0]
  |  Branch (17035:2): [True: 0, False: 0]
  ------------------
17036|  9.09k|}
zend_execute.c:ZEND_JMPNZ_SPEC_CV_HANDLER:
39668|      2|{
39669|      2|	USE_OPLINE
39670|      2|	zval *val;
39671|      2|	uint8_t op1_type;
39672|       |
39673|      2|	val = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39674|       |
39675|      2|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|      2|#define IS_TRUE						3
  ------------------
  |  Branch (39675:6): [True: 0, False: 2]
  ------------------
39676|      0|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (39676:3): [True: 0, False: 0]
  |  Branch (39676:3): [True: 0, False: 0]
  ------------------
39677|      2|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
39678|      2|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (39678:7): [True: 2, Folded]
  ------------------
39679|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39680|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39681|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39682|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (39682:5): [True: 0, False: 0]
  |  Branch (39682:5): [True: 0, False: 0]
  ------------------
39683|      0|			}
39684|      0|		}
39685|      2|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39685:3): [True: 0, False: 2]
  |  Branch (39685:3): [True: 2, False: 0]
  ------------------
39686|      2|	}
39687|       |
39688|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39689|      0|	op1_type = IS_CV;
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
39690|      0|	if (i_zend_is_true(val)) {
  ------------------
  |  Branch (39690:6): [True: 0, False: 0]
  ------------------
39691|      0|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
39692|      0|	} else {
39693|      0|		opline++;
39694|      0|	}
39695|      0|	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (op1_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (39695:6): [True: 0, False: 0]
  ------------------
39696|      0|		zval_ptr_dtor_nogc(val);
39697|      0|	}
39698|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39698:2): [True: 0, False: 0]
  |  Branch (39698:2): [True: 0, False: 0]
  ------------------
39699|      0|}
zend_execute.c:ZEND_JMPZ_EX_SPEC_TMP_HANDLER:
17039|    119|{
17040|    119|	USE_OPLINE
17041|    119|	zval *val;
17042|    119|	bool ret;
17043|       |
17044|    119|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    119|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    119|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17045|       |
17046|    119|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|    119|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    119|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|    119|#define IS_TRUE						3
  ------------------
  |  Branch (17046:6): [True: 5, False: 114]
  ------------------
17047|      5|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      5|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      5|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      5|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
17048|      5|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      5|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17048:3): [True: 0, False: 5]
  |  Branch (17048:3): [True: 5, False: 0]
  ------------------
17049|    114|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|    114|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 103, False: 11]
  |  |  ------------------
  ------------------
17050|    103|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|    103|#define ZVAL_FALSE(z) do {				\
  |  | 1064|    103|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|    103|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    103|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|    103|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|    103|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 103]
  |  |  ------------------
  ------------------
17051|    103|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  865|    103|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|    206|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17051:7): [Folded, False: 103]
  ------------------
17052|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17053|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17054|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17055|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17055:5): [True: 0, False: 0]
  |  Branch (17055:5): [True: 0, False: 0]
  ------------------
17056|      0|			}
17057|      0|		}
17058|    103|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|    103|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|    103|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|    103|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 103]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|    103|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|    103|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    103|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    103|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    103|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    103|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    103|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    103|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    103|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 103]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    103|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 103]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|    103|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    103|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|    103|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17058:3): [True: 0, False: 0]
  |  Branch (17058:3): [True: 0, False: 0]
  ------------------
17059|    103|	}
17060|       |
17061|    119|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17062|     11|	ret = i_zend_is_true(val);
17063|     11|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     11|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     11|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17064|     11|	if (ret) {
  ------------------
  |  Branch (17064:6): [True: 6, False: 5]
  ------------------
17065|      6|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      6|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      6|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      6|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
17066|      6|		opline++;
17067|      6|	} else {
17068|      5|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      5|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      5|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      5|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
17069|      5|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      5|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      5|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
17070|      5|	}
17071|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|     11|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|     11|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|     11|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 11, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|     11|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|     11|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|     11|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|     11|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|     11|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|     11|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|     11|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|     11|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|     11|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|     11|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17071:2): [True: 0, False: 0]
  |  Branch (17071:2): [True: 0, False: 0]
  ------------------
17072|     11|}
zend_execute.c:ZEND_JMPZ_EX_SPEC_CV_HANDLER:
39702|      5|{
39703|      5|	USE_OPLINE
39704|      5|	zval *val;
39705|      5|	bool ret;
39706|       |
39707|      5|	val = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39708|       |
39709|      5|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|      5|#define IS_TRUE						3
  ------------------
  |  Branch (39709:6): [True: 3, False: 2]
  ------------------
39710|      3|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      3|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      3|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
39711|      3|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39711:3): [True: 0, False: 3]
  |  Branch (39711:3): [True: 3, False: 0]
  ------------------
39712|      3|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
39713|      2|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      2|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      2|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
39714|      2|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (39714:7): [True: 2, Folded]
  ------------------
39715|      2|			SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39716|      2|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      2|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39717|      2|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
39718|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (39718:5): [True: 0, False: 0]
  |  Branch (39718:5): [True: 0, False: 0]
  ------------------
39719|      0|			}
39720|      2|		}
39721|      2|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 2]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (39721:3): [True: 0, False: 0]
  |  Branch (39721:3): [True: 0, False: 0]
  ------------------
39722|      2|	}
39723|       |
39724|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39725|      0|	ret = i_zend_is_true(val);
39726|       |
39727|       |
39728|      0|	if (ret) {
  ------------------
  |  Branch (39728:6): [True: 0, False: 0]
  ------------------
39729|      0|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39730|      0|		opline++;
39731|      0|	} else {
39732|      0|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39733|      0|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      0|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      0|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
39734|      0|	}
39735|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39735:2): [True: 0, False: 0]
  |  Branch (39735:2): [True: 0, False: 0]
  ------------------
39736|      0|}
zend_execute.c:ZEND_JMPNZ_EX_SPEC_TMP_HANDLER:
17075|      5|{
17076|      5|	USE_OPLINE
17077|      5|	zval *val;
17078|      5|	bool ret;
17079|       |
17080|      5|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17081|       |
17082|      5|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|      5|#define IS_TRUE						3
  ------------------
  |  Branch (17082:6): [True: 3, False: 2]
  ------------------
17083|      3|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      3|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      3|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
17084|      3|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      3|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      3|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 3]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      3|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      3|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      3|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      3|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      3|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      3|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17084:3): [True: 0, False: 0]
  |  Branch (17084:3): [True: 0, False: 0]
  ------------------
17085|      3|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
17086|      1|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17087|      1|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17087:7): [Folded, False: 1]
  ------------------
17088|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17089|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17090|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17090:4): [True: 0, False: 0]
  |  Branch (17090:4): [True: 0, False: 0]
  ------------------
17091|      1|		} else {
17092|      1|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17092:4): [True: 0, False: 1]
  |  Branch (17092:4): [True: 1, False: 0]
  ------------------
17093|      1|		}
17094|      1|	}
17095|       |
17096|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17097|      1|	ret = i_zend_is_true(val);
17098|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17099|      1|	if (ret) {
  ------------------
  |  Branch (17099:6): [True: 1, False: 0]
  ------------------
17100|      1|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17101|      1|		opline = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      1|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      1|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
17102|      1|	} else {
17103|      0|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17104|      0|		opline++;
17105|      0|	}
17106|       |	ZEND_VM_JMP(opline);
  ------------------
  |  | 5796|      1|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      1|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      1|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      1|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      1|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17106:2): [True: 0, False: 0]
  |  Branch (17106:2): [True: 0, False: 0]
  ------------------
17107|      1|}
zend_execute.c:ZEND_CASE_SPEC_TMP_CONST_HANDLER:
19297|      8|{
19298|      8|	USE_OPLINE
19299|      8|	zval *op1, *op2;
19300|      8|	double d1, d2;
19301|       |
19302|      8|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19303|      8|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19304|      8|	if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
19305|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19306|      0|			if (EXPECTED(Z_LVAL_P(op1) == Z_LVAL_P(op2))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19307|      2|case_true:
19308|      2|				ZEND_VM_SMART_BRANCH_TRUE();
  ------------------
  |  | 5854|      2|#define ZEND_VM_SMART_BRANCH_TRUE() do { \
  |  | 5855|      2|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5856|      2|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5857|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5858|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5859|      0|		} else { \
  |  | 5860|      0|			ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5861|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5862|      0|		} \
  |  | 5863|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5864|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5864:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19309|      2|			} else {
19310|      2|case_false:
19311|      2|				ZEND_VM_SMART_BRANCH_FALSE();
  ------------------
  |  | 5877|      2|#define ZEND_VM_SMART_BRANCH_FALSE() do { \
  |  | 5878|      2|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5879|      2|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5880|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5881|      0|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5882|      0|		} else { \
  |  | 5883|      0|			ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5884|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5885|      0|		} \
  |  | 5886|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5887|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5887:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19312|      2|			}
19313|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19314|      0|			d1 = (double)Z_LVAL_P(op1);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
19315|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
19316|      0|			goto case_double;
19317|      0|		}
19318|      8|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
19319|      0|		if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19320|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
19321|      0|			d2 = Z_DVAL_P(op2);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
19322|      0|case_double:
19323|      0|			if (d1 == d2) {
  ------------------
  |  Branch (19323:8): [True: 0, False: 0]
  ------------------
19324|      0|				goto case_true;
19325|      0|			} else {
19326|      0|				goto case_false;
19327|      0|			}
19328|      0|		} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19329|      0|			d1 = Z_DVAL_P(op1);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
19330|      0|			d2 = (double)Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
19331|      0|			goto case_double;
19332|      0|		}
19333|      8|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 2]
  |  |  ------------------
  ------------------
19334|      6|		if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 2]
  |  |  ------------------
  ------------------
19335|      4|			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			bool result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19336|       |
19337|       |
19338|      4|			if (result) {
  ------------------
  |  Branch (19338:8): [True: 2, False: 2]
  ------------------
19339|      2|				goto case_true;
19340|      2|			} else {
19341|      2|				goto case_false;
19342|      2|			}
19343|      4|		}
19344|      6|	}
19345|      4|	ZEND_VM_DISPATCH_TO_HELPER(zend_case_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX op1, op2));
  ------------------
  |  |  410|      4|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      4|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
19346|      8|}
zend_execute.c:zend_case_helper_SPEC:
 2833|      4|{
 2834|      4|	int ret;
 2835|      4|	USE_OPLINE
 2836|       |
 2837|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2838|      4|	if (UNEXPECTED(Z_TYPE_INFO_P(op_1) == IS_UNDEF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 2839|      0|		op_1 = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2840|      0|	}
 2841|      4|	if (UNEXPECTED(Z_TYPE_INFO_P(op_2) == IS_UNDEF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 2842|      0|		op_2 = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2843|      0|	}
 2844|      4|	ret = zend_compare(op_1, op_2);
 2845|      4|	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (opline->op2_type & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (2845:6): [True: 0, False: 4]
  ------------------
 2846|      0|		zval_ptr_dtor_nogc(op_2);
 2847|      0|	}
 2848|      4|	ZEND_VM_SMART_BRANCH(ret == 0, 1);
  ------------------
  |  | 5808|      4|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      4|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 4, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      4|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      4|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      4|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 2, False: 2]
  |  |  ------------------
  |  | 5819|      2|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      2|			} else { \
  |  | 5821|      2|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      2|			} \
  |  | 5823|      4|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      4|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2849|      4|}
zend_execute.c:ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_UNUSED_QUICK_HANDLER:
29764|     27|{
29765|     27|	USE_OPLINE
29766|     27|	zval *varptr, *arg;
29767|     27|	uint32_t arg_num;
29768|       |
29769|     27|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|     27|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|     27|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29769:6): [Folded, False: 27]
  ------------------
29770|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29771|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
29772|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29773|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29774|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29775|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29775:4): [True: 0, False: 0]
  |  Branch (29775:4): [True: 0, False: 0]
  ------------------
29776|      0|		}
29777|     27|	} else {
29778|     27|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|     27|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
29779|     27|		arg_num = opline->op2.num;
29780|     27|	}
29781|       |
29782|     27|	if (EXPECTED(1)) {
  ------------------
  |  |  456|     27|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 27, Folded]
  |  |  ------------------
  ------------------
29783|     27|		if (!QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1193|     27|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|     27|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  ------------------
  ------------------
  |  Branch (29783:7): [True: 25, False: 2]
  ------------------
29784|     25|			goto send_var;
29785|     25|		}
29786|       |
29787|      2|		varptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29788|      2|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
29789|       |
29790|      2|		if (EXPECTED(Z_ISREF_P(varptr) ||
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  |  Branch (456:52): [True: 0, False: 2]
  |  |  |  Branch (456:52): [True: 1, False: 1]
  |  |  ------------------
  ------------------
29791|      2|		    QUICK_ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
29792|      1|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29792:4): [True: 0, False: 1]
  |  Branch (29792:4): [True: 1, False: 0]
  ------------------
29793|      1|		}
29794|      2|	} else {
29795|      0|		if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  ------------------
  |  Branch (29795:7): [True: 0, False: 0]
  ------------------
29796|      0|			goto send_var;
29797|      0|		}
29798|       |
29799|      0|		varptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29800|      0|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29801|       |
29802|      0|		if (EXPECTED(Z_ISREF_P(varptr) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29803|      0|		    ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
29804|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29804:4): [True: 0, False: 0]
  |  Branch (29804:4): [True: 0, False: 0]
  ------------------
29805|      0|		}
29806|      0|	}
29807|       |
29808|     27|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29809|      1|	ZVAL_NEW_REF(arg, arg);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
29810|      1|	zend_error(E_NOTICE, "Only variables should be passed by reference");
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
29811|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29811:2): [True: 0, False: 0]
  |  Branch (29811:2): [True: 0, False: 0]
  ------------------
29812|       |
29813|     25|send_var:
29814|     25|	varptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     25|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     25|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29815|     25|	if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 25]
  |  |  ------------------
  ------------------
29816|      0|		zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
29817|       |
29818|      0|		varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29819|      0|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29820|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29821|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29822|      0|		} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29823|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29824|      0|		}
29825|     25|	} else {
29826|     25|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|     25|	do {												\
  |  | 1417|     25|		zval *_z1 = (z);								\
  |  | 1418|     25|		const zval *_z2 = (v);							\
  |  | 1419|     25|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     25|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     25|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     25|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     25|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     25|	do {												\
  |  |  |  | 1408|     25|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     25|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     25|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     25|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     25|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
29827|     25|	}
29828|     25|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     25|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     25|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     25|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     25|	} else { \
  |  |  |  | 5761|     25|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     25|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     25|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     25|	} \
  |  |  |  | 5764|     25|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     25|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29828:2): [True: 0, False: 25]
  |  Branch (29828:2): [True: 25, False: 0]
  ------------------
29829|     25|}
zend_execute.c:ZEND_CAST_SPEC_CONST_HANDLER:
 5333|     39|{
 5334|     39|	USE_OPLINE
 5335|     39|	zval *expr;
 5336|     39|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     39|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     39|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5337|       |
 5338|     39|	SAVE_OPLINE();
  ------------------
  |  |  428|     39|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     39|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5339|     39|	expr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     39|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5340|       |
 5341|     39|	switch (opline->extended_value) {
 5342|      8|		case IS_LONG:
  ------------------
  |  |  610|      8|#define IS_LONG						4
  ------------------
  |  Branch (5342:3): [True: 8, False: 31]
  ------------------
 5343|      8|			ZVAL_LONG(result, zval_get_long(expr));
  ------------------
  |  | 1076|      8|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      8|		zval *__z = (z);				\
  |  | 1078|      8|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      8|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      8|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 5344|      8|			break;
 5345|      6|		case IS_DOUBLE:
  ------------------
  |  |  611|      6|#define IS_DOUBLE					5
  ------------------
  |  Branch (5345:3): [True: 6, False: 33]
  ------------------
 5346|      6|			ZVAL_DOUBLE(result, zval_get_double(expr));
  ------------------
  |  | 1082|      6|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      6|		zval *__z = (z);				\
  |  | 1084|      6|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      6|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      6|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      6|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      6|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 5347|      6|			break;
 5348|      8|		case IS_STRING:
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
  |  Branch (5348:3): [True: 8, False: 31]
  ------------------
 5349|      8|			ZVAL_STR(result, zval_get_string(expr));
  ------------------
  |  | 1088|      8|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      8|		zval *__z = (z);						\
  |  | 1090|      8|		zend_string *__s = (s);					\
  |  | 1091|      8|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      8|		/* interned strings support */			\
  |  | 1093|      8|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 4, False: 4]
  |  |  ------------------
  |  | 1094|      8|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      8|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     12|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 5350|      8|			break;
 5351|     17|		default:
  ------------------
  |  Branch (5351:3): [True: 17, False: 22]
  ------------------
 5352|     17|			ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
  ------------------
  |  |  112|     17|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5352:4): [True: 0, False: 17]
  |  Branch (5352:4): [True: 0, False: 0]
  |  Branch (5352:4): [True: 17, False: 0]
  |  Branch (5352:4): [True: 17, False: 0]
  ------------------
 5353|     17|			if (IS_CONST & (IS_VAR|IS_CV)) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_VAR|IS_CV)) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_CONST & (IS_VAR|IS_CV)) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5353:8): [Folded, False: 17]
  ------------------
 5354|      0|				ZVAL_DEREF(expr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5355|      0|			}
 5356|       |			/* If value is already of correct type, return it directly */
 5357|     17|			if (Z_TYPE_P(expr) == opline->extended_value) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (5357:8): [True: 0, False: 17]
  ------------------
 5358|      0|				ZVAL_COPY_VALUE(result, expr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5359|      0|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5359:9): [True: 0, Folded]
  ------------------
 5360|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5361|      0|				} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				} else if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (5361:16): [True: 0, Folded]
  ------------------
 5362|      0|					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5363|      0|				}
 5364|       |
 5365|       |
 5366|      0|				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5366:5): [True: 0, False: 0]
  |  Branch (5366:5): [True: 0, False: 0]
  ------------------
 5367|      0|			}
 5368|       |
 5369|     17|			if (opline->extended_value == IS_ARRAY) {
  ------------------
  |  |  613|     17|#define IS_ARRAY					7
  ------------------
  |  Branch (5369:8): [True: 0, False: 17]
  ------------------
 5370|      0|				zend_cast_zval_to_array(result, expr, IS_CONST);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
 5371|     17|			} else {
 5372|     17|				ZEND_ASSERT(opline->extended_value == IS_OBJECT);
  ------------------
  |  |  112|     17|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5372:5): [True: 0, False: 17]
  |  Branch (5372:5): [True: 17, False: 0]
  ------------------
 5373|     17|				zend_cast_zval_to_object(result, expr, IS_CONST);
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
 5374|     17|			}
 5375|     39|	}
 5376|       |
 5377|       |
 5378|     39|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     39|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     39|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     39|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 39, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     39|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     39|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     39|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     39|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     39|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     39|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5378:2): [True: 0, False: 0]
  |  Branch (5378:2): [True: 0, False: 0]
  ------------------
 5379|     39|}
zend_execute.c:ZEND_CAST_SPEC_TMP_HANDLER:
17454|     33|{
17455|     33|	USE_OPLINE
17456|     33|	zval *expr;
17457|     33|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     33|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     33|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17458|       |
17459|     33|	SAVE_OPLINE();
  ------------------
  |  |  428|     33|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     33|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17460|     33|	expr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     33|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     33|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17461|       |
17462|     33|	switch (opline->extended_value) {
17463|      5|		case IS_LONG:
  ------------------
  |  |  610|      5|#define IS_LONG						4
  ------------------
  |  Branch (17463:3): [True: 5, False: 28]
  ------------------
17464|      5|			ZVAL_LONG(result, zval_get_long(expr));
  ------------------
  |  | 1076|      5|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      5|		zval *__z = (z);				\
  |  | 1078|      5|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      5|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      5|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
17465|      5|			break;
17466|      3|		case IS_DOUBLE:
  ------------------
  |  |  611|      3|#define IS_DOUBLE					5
  ------------------
  |  Branch (17466:3): [True: 3, False: 30]
  ------------------
17467|      3|			ZVAL_DOUBLE(result, zval_get_double(expr));
  ------------------
  |  | 1082|      3|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      3|		zval *__z = (z);				\
  |  | 1084|      3|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      3|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      3|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
17468|      3|			break;
17469|     16|		case IS_STRING:
  ------------------
  |  |  612|     16|#define IS_STRING					6
  ------------------
  |  Branch (17469:3): [True: 16, False: 17]
  ------------------
17470|     16|			ZVAL_STR(result, zval_get_string(expr));
  ------------------
  |  | 1088|     16|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     16|		zval *__z = (z);						\
  |  | 1090|     16|		zend_string *__s = (s);					\
  |  | 1091|     16|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     16|		/* interned strings support */			\
  |  | 1093|     16|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 14]
  |  |  ------------------
  |  | 1094|     16|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     16|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     30|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     14|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     14|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     14|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
17471|     16|			break;
17472|      9|		default:
  ------------------
  |  Branch (17472:3): [True: 9, False: 24]
  ------------------
17473|      9|			ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17473:4): [True: 0, False: 9]
  |  Branch (17473:4): [True: 0, False: 0]
  |  Branch (17473:4): [True: 9, False: 0]
  |  Branch (17473:4): [True: 9, False: 0]
  ------------------
17474|      9|			if (IS_TMP_VAR & (IS_VAR|IS_CV)) {
  ------------------
  |  |  865|      9|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_VAR|IS_CV)) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_TMP_VAR & (IS_VAR|IS_CV)) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17474:8): [Folded, False: 9]
  ------------------
17475|      0|				ZVAL_DEREF(expr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17476|      0|			}
17477|       |			/* If value is already of correct type, return it directly */
17478|      9|			if (Z_TYPE_P(expr) == opline->extended_value) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (17478:8): [True: 3, False: 6]
  ------------------
17479|      3|				ZVAL_COPY_VALUE(result, expr);
  ------------------
  |  | 1416|      3|	do {												\
  |  | 1417|      3|		zval *_z1 = (z);								\
  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
17480|      3|				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17480:9): [Folded, False: 3]
  ------------------
17481|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17482|      3|				} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              				} else if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (17482:16): [Folded, False: 3]
  ------------------
17483|      0|					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17484|      0|				}
17485|       |
17486|       |
17487|      3|				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17487:5): [True: 0, False: 0]
  |  Branch (17487:5): [True: 0, False: 0]
  ------------------
17488|      3|			}
17489|       |
17490|      6|			if (opline->extended_value == IS_ARRAY) {
  ------------------
  |  |  613|      6|#define IS_ARRAY					7
  ------------------
  |  Branch (17490:8): [True: 3, False: 3]
  ------------------
17491|      3|				zend_cast_zval_to_array(result, expr, IS_TMP_VAR);
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
17492|      3|			} else {
17493|      3|				ZEND_ASSERT(opline->extended_value == IS_OBJECT);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17493:5): [True: 0, False: 3]
  |  Branch (17493:5): [True: 3, False: 0]
  ------------------
17494|      3|				zend_cast_zval_to_object(result, expr, IS_TMP_VAR);
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
17495|      3|			}
17496|     33|	}
17497|       |
17498|     30|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     30|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     30|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17499|     30|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     30|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     30|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     30|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 30, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     30|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     30|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     30|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     30|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     30|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     30|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17499:2): [True: 0, False: 0]
  |  Branch (17499:2): [True: 0, False: 0]
  ------------------
17500|     30|}
zend_execute.c:ZEND_CAST_SPEC_CV_HANDLER:
40127|     48|{
40128|     48|	USE_OPLINE
40129|     48|	zval *expr;
40130|     48|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     48|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     48|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40131|       |
40132|     48|	SAVE_OPLINE();
  ------------------
  |  |  428|     48|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     48|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40133|     48|	expr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     48|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     48|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40134|       |
40135|     48|	switch (opline->extended_value) {
40136|     14|		case IS_LONG:
  ------------------
  |  |  610|     14|#define IS_LONG						4
  ------------------
  |  Branch (40136:3): [True: 14, False: 34]
  ------------------
40137|     14|			ZVAL_LONG(result, zval_get_long(expr));
  ------------------
  |  | 1076|     14|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     14|		zval *__z = (z);				\
  |  | 1078|     14|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     14|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     14|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     14|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     14|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
40138|     14|			break;
40139|     11|		case IS_DOUBLE:
  ------------------
  |  |  611|     11|#define IS_DOUBLE					5
  ------------------
  |  Branch (40139:3): [True: 11, False: 37]
  ------------------
40140|     11|			ZVAL_DOUBLE(result, zval_get_double(expr));
  ------------------
  |  | 1082|     11|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|     11|		zval *__z = (z);				\
  |  | 1084|     11|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|     11|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|     11|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|     11|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|     11|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
40141|     11|			break;
40142|      8|		case IS_STRING:
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
  |  Branch (40142:3): [True: 8, False: 40]
  ------------------
40143|      8|			ZVAL_STR(result, zval_get_string(expr));
  ------------------
  |  | 1088|      8|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      8|		zval *__z = (z);						\
  |  | 1090|      8|		zend_string *__s = (s);					\
  |  | 1091|      8|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      8|		/* interned strings support */			\
  |  | 1093|      8|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 4, False: 4]
  |  |  ------------------
  |  | 1094|      8|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      8|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     12|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
40144|      8|			break;
40145|     15|		default:
  ------------------
  |  Branch (40145:3): [True: 15, False: 33]
  ------------------
40146|     15|			ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
  ------------------
  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40146:4): [True: 0, False: 15]
  |  Branch (40146:4): [True: 0, False: 0]
  |  Branch (40146:4): [True: 15, False: 0]
  |  Branch (40146:4): [True: 15, False: 0]
  ------------------
40147|     15|			if (IS_CV & (IS_VAR|IS_CV)) {
  ------------------
  |  |  867|     15|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_VAR|IS_CV)) {
  ------------------
  |  |  866|     15|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_CV & (IS_VAR|IS_CV)) {
  ------------------
  |  |  867|     15|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40147:8): [True: 15, Folded]
  ------------------
40148|     15|				ZVAL_DEREF(expr);
  ------------------
  |  | 1474|     15|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     15|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
40149|     15|			}
40150|       |			/* If value is already of correct type, return it directly */
40151|     15|			if (Z_TYPE_P(expr) == opline->extended_value) {
  ------------------
  |  |  669|     15|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     15|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (40151:8): [True: 6, False: 9]
  ------------------
40152|      6|				ZVAL_COPY_VALUE(result, expr);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
40153|      6|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (40153:9): [Folded, False: 6]
  ------------------
40154|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40155|      6|				} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				} else if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (40155:16): [True: 6, Folded]
  ------------------
40156|      6|					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      6|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      6|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40157|      6|				}
40158|       |
40159|       |
40160|      6|				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40160:5): [True: 0, False: 0]
  |  Branch (40160:5): [True: 0, False: 0]
  ------------------
40161|      6|			}
40162|       |
40163|      9|			if (opline->extended_value == IS_ARRAY) {
  ------------------
  |  |  613|      9|#define IS_ARRAY					7
  ------------------
  |  Branch (40163:8): [True: 4, False: 5]
  ------------------
40164|      4|				zend_cast_zval_to_array(result, expr, IS_CV);
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
40165|      5|			} else {
40166|      5|				ZEND_ASSERT(opline->extended_value == IS_OBJECT);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40166:5): [True: 0, False: 5]
  |  Branch (40166:5): [True: 5, False: 0]
  ------------------
40167|      5|				zend_cast_zval_to_object(result, expr, IS_CV);
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
40168|      5|			}
40169|     48|	}
40170|       |
40171|       |
40172|     42|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     48|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     42|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     42|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 42, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     42|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     42|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     42|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     42|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     42|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     42|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40172:2): [True: 0, False: 0]
  |  Branch (40172:2): [True: 0, False: 0]
  ------------------
40173|     42|}
zend_execute.c:ZEND_BOOL_SPEC_CONST_HANDLER:
 5238|     15|{
 5239|     15|	USE_OPLINE
 5240|     15|	zval *val;
 5241|       |
 5242|     15|	val = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     15|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5243|     15|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|     15|#define IS_TRUE						3
  ------------------
  |  Branch (5243:6): [True: 4, False: 11]
  ------------------
 5244|      4|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      4|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      4|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      4|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 5245|     11|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 5246|       |		/* The result and op1 can be the same cv zval */
 5247|      0|		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 5248|      0|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5249|      0|		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5249:7): [Folded, False: 0]
  ------------------
 5250|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5251|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5252|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5252:4): [True: 0, False: 0]
  |  Branch (5252:4): [True: 0, False: 0]
  ------------------
 5253|      0|		}
 5254|     11|	} else {
 5255|     11|		SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5256|     11|		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
  ------------------
  |  | 1071|     11|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|     11|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|     11|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|     10|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|     12|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 10, False: 1]
  |  |  ------------------
  |  | 1074|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 5257|       |
 5258|       |
 5259|     11|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     11|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     11|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     11|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5259:3): [True: 0, False: 0]
  |  Branch (5259:3): [True: 0, False: 0]
  ------------------
 5260|     11|	}
 5261|      4|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     15|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      4|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5261:2): [True: 0, False: 4]
  |  Branch (5261:2): [True: 4, False: 0]
  ------------------
 5262|      4|}
zend_execute.c:ZEND_BOOL_SPEC_TMP_HANDLER:
17363|      3|{
17364|      3|	USE_OPLINE
17365|      3|	zval *val;
17366|       |
17367|      3|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17368|      3|	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
  ------------------
  |  |  609|      3|#define IS_TRUE						3
  ------------------
  |  Branch (17368:6): [True: 0, False: 3]
  ------------------
17369|      0|		ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17370|      3|	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
17371|       |		/* The result and op1 can be the same cv zval */
17372|      1|		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
  ------------------
  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
17373|      1|		ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17374|      1|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17374:7): [Folded, False: 1]
  ------------------
17375|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17376|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17377|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17377:4): [True: 0, False: 0]
  |  Branch (17377:4): [True: 0, False: 0]
  ------------------
17378|      0|		}
17379|      2|	} else {
17380|      2|		SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17381|      2|		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
  ------------------
  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 2, False: 0]
  |  |  ------------------
  |  | 1074|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17382|      2|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17383|      2|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17383:3): [True: 0, False: 0]
  |  Branch (17383:3): [True: 0, False: 0]
  ------------------
17384|      2|	}
17385|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17385:2): [True: 0, False: 1]
  |  Branch (17385:2): [True: 1, False: 0]
  ------------------
17386|      1|}
zend_execute.c:ZEND_FAST_CONCAT_SPEC_CONST_TMP_HANDLER:
 9988|     92|{
 9989|     92|	USE_OPLINE
 9990|     92|	zval *op1, *op2;
 9991|     92|	zend_string *op1_str, *op2_str, *str;
 9992|       |
 9993|       |
 9994|     92|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     92|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9995|     92|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     92|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     92|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9996|     92|	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    184|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9996:7): [True: 92, Folded]
  ------------------
 9997|     92|	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  865|     92|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|    184|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|     92|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 92]
  |  |  ------------------
  ------------------
  |  Branch (9997:7): [Folded, False: 92]
  ------------------
 9998|      0|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 9999|      0|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10000|      0|		zend_string *str;
10001|      0|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
10002|       |
10003|      0|		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10003:7): [Folded, False: 0]
  ------------------
10004|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10004:8): [Folded, False: 0]
  |  Branch (10004:34): [Folded, False: 0]
  ------------------
10005|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10006|      0|			} else {
10007|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10008|      0|			}
10009|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10009:8): [Folded, False: 0]
  ------------------
10010|      0|				zend_string_release_ex(op1_str, 0);
10011|      0|			}
10012|      0|		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10012:14): [True: 0, Folded]
  ------------------
10013|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10013:8): [True: 0, Folded]
  |  Branch (10013:32): [Folded, False: 0]
  ------------------
10014|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10015|      0|			} else {
10016|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10017|      0|			}
10018|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10018:8): [True: 0, Folded]
  ------------------
10019|      0|				zend_string_release_ex(op2_str, 0);
10020|      0|			}
10021|      0|		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10021:14): [Folded, False: 0]
  |  Branch (10021:38): [True: 0, Folded]
  ------------------
10022|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (10022:7): [True: 0, False: 0]
  |  Branch (10022:37): [True: 0, False: 0]
  ------------------
10023|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10024|       |
10025|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10026|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10027|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10028|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10029|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10029:8): [True: 0, Folded]
  ------------------
10030|      0|				zend_string_release_ex(op2_str, 0);
10031|      0|			}
10032|      0|		} else {
10033|      0|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10034|      0|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10035|      0|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10036|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10037|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10038|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10038:8): [Folded, False: 0]
  ------------------
10039|      0|				zend_string_release_ex(op1_str, 0);
10040|      0|			}
10041|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10041:8): [True: 0, Folded]
  ------------------
10042|      0|				zend_string_release_ex(op2_str, 0);
10043|      0|			}
10044|      0|		}
10045|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10045:3): [True: 0, False: 0]
  |  Branch (10045:3): [True: 0, False: 0]
  ------------------
10046|      0|	}
10047|       |
10048|     92|	SAVE_OPLINE();
  ------------------
  |  |  428|     92|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     92|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10049|     92|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10049:6): [True: 92, Folded]
  ------------------
10050|     92|		op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|     92|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     92|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10051|     92|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10052|      0|		op1_str = zend_string_copy(Z_STR_P(op1));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10053|      0|	} else {
10054|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10054:7): [Folded, False: 0]
  ------------------
10055|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10056|      0|		}
10057|      0|		op1_str = zval_get_string_func(op1);
10058|      0|	}
10059|     92|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     92|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10059:6): [Folded, False: 92]
  ------------------
10060|      0|		op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10061|     92|	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|     92|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 92]
  |  |  ------------------
  ------------------
10062|      0|		op2_str = zend_string_copy(Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10063|     92|	} else {
10064|     92|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  865|     92|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    184|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10064:7): [Folded, False: 92]
  ------------------
10065|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10066|      0|		}
10067|     92|		op2_str = zval_get_string_func(op2);
10068|     92|	}
10069|     92|	do {
10070|     92|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10070:7): [Folded, False: 92]
  ------------------
10071|      0|			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10072|      0|				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10072:9): [Folded, False: 0]
  ------------------
10073|      0|					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10074|      0|						GC_ADDREF(op2_str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
10075|      0|					}
10076|      0|				}
10077|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10078|      0|				zend_string_release_ex(op1_str, 0);
10079|      0|				break;
10080|      0|			}
10081|      0|		}
10082|     92|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|     92|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10082:7): [True: 92, Folded]
  ------------------
10083|     92|			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|     92|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 92, False: 0]
  |  |  ------------------
  ------------------
10084|     92|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10084:9): [True: 92, Folded]
  ------------------
10085|     92|					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
  ------------------
  |  |  457|     92|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 92, False: 0]
  |  |  ------------------
  ------------------
10086|     92|						GC_ADDREF(op1_str);
  ------------------
  |  |  718|     92|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
10087|     92|					}
10088|     92|				}
10089|     92|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|     92|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     92|		zval *__z = (z);						\
  |  | 1090|     92|		zend_string *__s = (s);					\
  |  | 1091|     92|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     92|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     92|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     92|		/* interned strings support */			\
  |  | 1093|     92|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     92|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     92|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 92]
  |  |  ------------------
  |  | 1094|     92|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     92|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    184|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     92|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     92|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     92|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     92|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 92]
  |  |  ------------------
  ------------------
10090|     92|				zend_string_release_ex(op2_str, 0);
10091|     92|				break;
10092|     92|			}
10093|     92|		}
10094|      0|		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10095|      0|		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10096|      0|		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
10097|       |
10098|      0|		ZSTR_COPY_CONCAT_PROPERTIES_BOTH(str, op1_str, op2_str);
10099|      0|		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10100|      0|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10100:7): [Folded, False: 0]
  ------------------
10101|      0|			zend_string_release_ex(op1_str, 0);
10102|      0|		}
10103|      0|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10103:7): [True: 0, Folded]
  ------------------
10104|      0|			zend_string_release_ex(op2_str, 0);
10105|      0|		}
10106|      0|	} while (0);
  ------------------
  |  Branch (10106:11): [Folded, False: 0]
  ------------------
10107|       |
10108|       |
10109|     92|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     92|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     92|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10110|     92|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     92|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     92|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     92|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 92, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     92|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     92|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     92|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     92|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     92|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     92|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10110:2): [True: 0, False: 0]
  |  Branch (10110:2): [True: 0, False: 0]
  ------------------
10111|     92|}
zend_execute.c:ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER:
12591|    133|{
12592|    133|	USE_OPLINE
12593|    133|	zval *op1, *op2;
12594|    133|	zend_string *op1_str, *op2_str, *str;
12595|       |
12596|       |
12597|    133|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    133|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
12598|    133|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    133|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    133|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12599|    133|	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    133|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    266|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12599:7): [True: 133, Folded]
  ------------------
12600|    133|	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  867|    133|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|    266|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|    133|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 131]
  |  |  ------------------
  ------------------
  |  Branch (12600:7): [Folded, False: 133]
  ------------------
12601|      2|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12602|      2|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12603|      2|		zend_string *str;
12604|      2|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
12605|       |
12606|      2|		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12606:7): [Folded, False: 2]
  ------------------
12607|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12607:8): [Folded, False: 0]
  |  Branch (12607:29): [True: 0, Folded]
  ------------------
12608|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12609|      0|			} else {
12610|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12611|      0|			}
12612|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12612:8): [Folded, False: 0]
  ------------------
12613|      0|				zend_string_release_ex(op1_str, 0);
12614|      0|			}
12615|      2|		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (12615:14): [True: 2, Folded]
  ------------------
12616|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12616:8): [True: 0, Folded]
  |  Branch (12616:32): [Folded, False: 0]
  ------------------
12617|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12618|      0|			} else {
12619|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12620|      0|			}
12621|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12621:8): [Folded, False: 0]
  ------------------
12622|      0|				zend_string_release_ex(op2_str, 0);
12623|      0|			}
12624|      2|		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12624:14): [Folded, False: 2]
  |  Branch (12624:38): [True: 0, Folded]
  ------------------
12625|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (12625:7): [True: 0, False: 0]
  |  Branch (12625:37): [True: 0, False: 0]
  ------------------
12626|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12627|       |
12628|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12629|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12630|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12631|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12632|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12632:8): [Folded, False: 0]
  ------------------
12633|      0|				zend_string_release_ex(op2_str, 0);
12634|      0|			}
12635|      2|		} else {
12636|      2|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12637|      2|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12638|      2|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12639|      2|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
12640|      2|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      2|		zval *__z = (z);						\
  |  | 1107|      2|		zend_string *__s = (s);					\
  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
12641|      2|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12641:8): [Folded, False: 2]
  ------------------
12642|      0|				zend_string_release_ex(op1_str, 0);
12643|      0|			}
12644|      2|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12644:8): [Folded, False: 2]
  ------------------
12645|      0|				zend_string_release_ex(op2_str, 0);
12646|      0|			}
12647|      2|		}
12648|      2|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12648:3): [True: 0, False: 2]
  |  Branch (12648:3): [True: 2, False: 0]
  ------------------
12649|      2|	}
12650|       |
12651|    133|	SAVE_OPLINE();
  ------------------
  |  |  428|    131|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    131|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12652|    131|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    131|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    131|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12652:6): [True: 131, Folded]
  ------------------
12653|    131|		op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|    131|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    131|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12654|    131|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12655|      0|		op1_str = zend_string_copy(Z_STR_P(op1));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12656|      0|	} else {
12657|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12657:7): [Folded, False: 0]
  ------------------
12658|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12659|      0|		}
12660|      0|		op1_str = zval_get_string_func(op1);
12661|      0|	}
12662|    131|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    131|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    131|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12662:6): [Folded, False: 131]
  ------------------
12663|      0|		op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12664|    131|	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|    131|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 131]
  |  |  ------------------
  ------------------
12665|      0|		op2_str = zend_string_copy(Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12666|    131|	} else {
12667|    131|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    131|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|    262|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|    131|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 129, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (12667:7): [True: 131, Folded]
  ------------------
12668|    129|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    129|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    129|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12669|    129|		}
12670|    131|		op2_str = zval_get_string_func(op2);
12671|    131|	}
12672|    131|	do {
12673|    131|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    131|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    131|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12673:7): [Folded, False: 131]
  ------------------
12674|      0|			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12675|      0|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12675:9): [Folded, False: 0]
  ------------------
12676|      0|					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12677|      0|						GC_ADDREF(op2_str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
12678|      0|					}
12679|      0|				}
12680|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12681|      0|				zend_string_release_ex(op1_str, 0);
12682|      0|				break;
12683|      0|			}
12684|      0|		}
12685|    131|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|    131|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|    131|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12685:7): [True: 131, Folded]
  ------------------
12686|    131|			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|    131|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 129, False: 2]
  |  |  ------------------
  ------------------
12687|    129|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    129|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    129|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12687:9): [True: 129, Folded]
  ------------------
12688|    129|					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
  ------------------
  |  |  457|    129|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 128, False: 1]
  |  |  ------------------
  ------------------
12689|    128|						GC_ADDREF(op1_str);
  ------------------
  |  |  718|    128|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
12690|    128|					}
12691|    129|				}
12692|    129|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|    129|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    129|		zval *__z = (z);						\
  |  | 1090|    129|		zend_string *__s = (s);					\
  |  | 1091|    129|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    129|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    129|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    129|		/* interned strings support */			\
  |  | 1093|    129|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    129|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    129|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 128]
  |  |  ------------------
  |  | 1094|    129|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    129|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    257|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    128|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    128|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    128|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    129|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 129]
  |  |  ------------------
  ------------------
12693|    129|				zend_string_release_ex(op2_str, 0);
12694|    129|				break;
12695|    129|			}
12696|    131|		}
12697|      2|		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12698|      2|		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12699|      2|		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
12700|       |
12701|      2|		ZSTR_COPY_CONCAT_PROPERTIES_BOTH(str, op1_str, op2_str);
12702|      2|		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      2|		zval *__z = (z);						\
  |  | 1107|      2|		zend_string *__s = (s);					\
  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
12703|      2|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12703:7): [Folded, False: 2]
  ------------------
12704|      0|			zend_string_release_ex(op1_str, 0);
12705|      0|		}
12706|      2|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12706:7): [True: 2, Folded]
  ------------------
12707|      2|			zend_string_release_ex(op2_str, 0);
12708|      2|		}
12709|      2|	} while (0);
  ------------------
  |  Branch (12709:11): [Folded, False: 2]
  ------------------
12710|       |
12711|       |
12712|       |
12713|       |
12714|    131|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    131|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    131|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    131|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 131, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    131|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    131|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    131|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    131|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    131|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    131|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12714:2): [True: 0, False: 0]
  |  Branch (12714:2): [True: 0, False: 0]
  ------------------
12715|    131|}
zend_execute.c:ZEND_FAST_CONCAT_SPEC_TMP_CONST_HANDLER:
18877|     67|{
18878|     67|	USE_OPLINE
18879|     67|	zval *op1, *op2;
18880|     67|	zend_string *op1_str, *op2_str, *str;
18881|       |
18882|       |
18883|     67|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     67|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     67|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18884|     67|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     67|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18885|     67|	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  865|     67|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|    134|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_TMP_VAR == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|     67|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 65]
  |  |  ------------------
  ------------------
  |  Branch (18885:7): [Folded, False: 67]
  ------------------
18886|      2|	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18886:7): [True: 0, Folded]
  ------------------
18887|      2|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18888|      2|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18889|      2|		zend_string *str;
18890|      2|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
18891|       |
18892|      2|		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_TMP_VAR != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (18892:7): [True: 2, Folded]
  ------------------
18893|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18893:8): [True: 0, Folded]
  |  Branch (18893:32): [Folded, False: 0]
  ------------------
18894|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18895|      0|			} else {
18896|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18897|      0|			}
18898|      0|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18898:8): [True: 0, Folded]
  ------------------
18899|      0|				zend_string_release_ex(op1_str, 0);
18900|      0|			}
18901|      2|		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18901:14): [Folded, False: 2]
  ------------------
18902|      0|			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18902:8): [Folded, False: 0]
  |  Branch (18902:34): [Folded, False: 0]
  ------------------
18903|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18904|      0|			} else {
18905|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18906|      0|			}
18907|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18907:8): [Folded, False: 0]
  ------------------
18908|      0|				zend_string_release_ex(op2_str, 0);
18909|      0|			}
18910|      2|		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_CV &&
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (18910:14): [True: 0, Folded]
  |  Branch (18910:40): [True: 0, Folded]
  ------------------
18911|      2|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      1|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (18911:7): [True: 1, False: 1]
  |  Branch (18911:37): [True: 0, False: 1]
  ------------------
18912|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18913|       |
18914|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18915|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18916|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18917|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18918|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18918:8): [Folded, False: 0]
  ------------------
18919|      0|				zend_string_release_ex(op2_str, 0);
18920|      0|			}
18921|      2|		} else {
18922|      2|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18923|      2|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18924|      2|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18925|      2|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
18926|      2|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      2|		zval *__z = (z);						\
  |  | 1107|      2|		zend_string *__s = (s);					\
  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
18927|      2|			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18927:8): [True: 2, Folded]
  ------------------
18928|      2|				zend_string_release_ex(op1_str, 0);
18929|      2|			}
18930|      2|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18930:8): [Folded, False: 2]
  ------------------
18931|      0|				zend_string_release_ex(op2_str, 0);
18932|      0|			}
18933|      2|		}
18934|      2|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18934:3): [True: 0, False: 2]
  |  Branch (18934:3): [True: 2, False: 0]
  ------------------
18935|      2|	}
18936|       |
18937|     67|	SAVE_OPLINE();
  ------------------
  |  |  428|     65|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     65|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18938|     65|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     65|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18938:6): [Folded, False: 65]
  ------------------
18939|      0|		op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18940|     65|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|     65|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 65]
  |  |  ------------------
  ------------------
18941|      0|		op1_str = zend_string_copy(Z_STR_P(op1));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18942|     65|	} else {
18943|     65|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  865|     65|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|    130|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18943:7): [Folded, False: 65]
  ------------------
18944|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18945|      0|		}
18946|     65|		op1_str = zval_get_string_func(op1);
18947|     65|	}
18948|     65|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18948:6): [True: 65, Folded]
  ------------------
18949|     65|		op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|     65|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     65|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18950|     65|	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18951|      0|		op2_str = zend_string_copy(Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
18952|      0|	} else {
18953|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18953:7): [Folded, False: 0]
  ------------------
18954|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18955|      0|		}
18956|      0|		op2_str = zval_get_string_func(op2);
18957|      0|	}
18958|     65|	do {
18959|     65|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|     65|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18959:7): [True: 65, Folded]
  ------------------
18960|     65|			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|     65|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 65, False: 0]
  |  |  ------------------
  ------------------
18961|     65|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     65|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18961:9): [True: 65, Folded]
  ------------------
18962|     65|					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
  ------------------
  |  |  457|     65|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 63, False: 2]
  |  |  ------------------
  ------------------
18963|     63|						GC_ADDREF(op2_str);
  ------------------
  |  |  718|     63|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
18964|     63|					}
18965|     65|				}
18966|     65|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|     65|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     65|		zval *__z = (z);						\
  |  | 1090|     65|		zend_string *__s = (s);					\
  |  | 1091|     65|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     65|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     65|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     65|		/* interned strings support */			\
  |  | 1093|     65|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     65|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     65|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 63]
  |  |  ------------------
  |  | 1094|     65|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     65|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    128|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     63|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     63|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     63|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     65|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 65]
  |  |  ------------------
  ------------------
18967|     65|				zend_string_release_ex(op1_str, 0);
18968|     65|				break;
18969|     65|			}
18970|     65|		}
18971|      0|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18971:7): [Folded, False: 0]
  ------------------
18972|      0|			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18973|      0|				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18973:9): [Folded, False: 0]
  ------------------
18974|      0|					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18975|      0|						GC_ADDREF(op1_str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
18976|      0|					}
18977|      0|				}
18978|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18979|      0|				zend_string_release_ex(op2_str, 0);
18980|      0|				break;
18981|      0|			}
18982|      0|		}
18983|      0|		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18984|      0|		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18985|      0|		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
18986|       |
18987|      0|		ZSTR_COPY_CONCAT_PROPERTIES_BOTH(str, op1_str, op2_str);
18988|      0|		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18989|      0|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18989:7): [True: 0, Folded]
  ------------------
18990|      0|			zend_string_release_ex(op1_str, 0);
18991|      0|		}
18992|      0|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (18992:7): [Folded, False: 0]
  ------------------
18993|      0|			zend_string_release_ex(op2_str, 0);
18994|      0|		}
18995|      0|	} while (0);
  ------------------
  |  Branch (18995:11): [Folded, False: 0]
  ------------------
18996|     65|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     65|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     65|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18997|       |
18998|       |
18999|     65|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     65|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     65|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     65|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 65, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     65|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     65|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     65|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     65|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     65|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     65|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18999:2): [True: 0, False: 0]
  |  Branch (18999:2): [True: 0, False: 0]
  ------------------
19000|     65|}
zend_execute.c:ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER:
43623|    851|{
43624|    851|	USE_OPLINE
43625|    851|	zval *op1, *op2;
43626|    851|	zend_string *op1_str, *op2_str, *str;
43627|       |
43628|       |
43629|    851|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    851|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    851|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43630|    851|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    851|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43631|    851|	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  867|    851|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|  1.70k|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|    851|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 848]
  |  |  ------------------
  ------------------
  |  Branch (43631:7): [Folded, False: 851]
  ------------------
43632|      3|	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43632:7): [True: 0, Folded]
  ------------------
43633|      3|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43634|      3|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43635|      3|		zend_string *str;
43636|      3|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
43637|       |
43638|      3|		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (43638:7): [True: 3, Folded]
  ------------------
43639|      0|			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43639:8): [True: 0, Folded]
  |  Branch (43639:32): [Folded, False: 0]
  ------------------
43640|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43641|      0|			} else {
43642|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43643|      0|			}
43644|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43644:8): [Folded, False: 0]
  ------------------
43645|      0|				zend_string_release_ex(op1_str, 0);
43646|      0|			}
43647|      3|		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43647:14): [Folded, False: 3]
  ------------------
43648|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43648:8): [Folded, False: 0]
  |  Branch (43648:29): [True: 0, Folded]
  ------------------
43649|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43650|      0|			} else {
43651|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43652|      0|			}
43653|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43653:8): [Folded, False: 0]
  ------------------
43654|      0|				zend_string_release_ex(op2_str, 0);
43655|      0|			}
43656|      3|		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43656:14): [True: 0, Folded]
  |  Branch (43656:35): [Folded, False: 0]
  ------------------
43657|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (43657:7): [True: 0, False: 0]
  |  Branch (43657:37): [True: 0, False: 0]
  ------------------
43658|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43659|       |
43660|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43661|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43662|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43663|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43664|      0|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43664:8): [Folded, False: 0]
  ------------------
43665|      0|				zend_string_release_ex(op2_str, 0);
43666|      0|			}
43667|      3|		} else {
43668|      3|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43669|      3|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43670|      3|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43671|      3|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      3|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      3|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
43672|      3|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      3|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      3|		zval *__z = (z);						\
  |  | 1107|      3|		zend_string *__s = (s);					\
  |  | 1108|      3|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      3|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
43673|      3|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43673:8): [Folded, False: 3]
  ------------------
43674|      0|				zend_string_release_ex(op1_str, 0);
43675|      0|			}
43676|      3|			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43676:8): [Folded, False: 3]
  ------------------
43677|      0|				zend_string_release_ex(op2_str, 0);
43678|      0|			}
43679|      3|		}
43680|      3|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (43680:3): [True: 0, False: 3]
  |  Branch (43680:3): [True: 3, False: 0]
  ------------------
43681|      3|	}
43682|       |
43683|    851|	SAVE_OPLINE();
  ------------------
  |  |  428|    848|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    848|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43684|    848|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    848|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    848|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43684:6): [Folded, False: 848]
  ------------------
43685|      0|		op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43686|    848|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|    848|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 848]
  |  |  ------------------
  ------------------
43687|      0|		op1_str = zend_string_copy(Z_STR_P(op1));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43688|    848|	} else {
43689|    848|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|    848|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.69k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|    848|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 402, False: 446]
  |  |  ------------------
  ------------------
  |  Branch (43689:7): [True: 848, Folded]
  ------------------
43690|    402|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    402|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    402|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43691|    402|		}
43692|    848|		op1_str = zval_get_string_func(op1);
43693|    848|	}
43694|    848|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    848|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    848|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43694:6): [True: 848, Folded]
  ------------------
43695|    848|		op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|    848|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    848|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43696|    848|	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43697|      0|		op2_str = zend_string_copy(Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43698|      0|	} else {
43699|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43699:7): [Folded, False: 0]
  ------------------
43700|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43701|      0|		}
43702|      0|		op2_str = zval_get_string_func(op2);
43703|      0|	}
43704|    848|	do {
43705|    848|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|    848|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|    848|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43705:7): [True: 848, Folded]
  ------------------
43706|    848|			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|    848|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 404, False: 444]
  |  |  ------------------
  ------------------
43707|    404|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    404|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    404|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43707:9): [True: 404, Folded]
  ------------------
43708|    404|					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
  ------------------
  |  |  457|    404|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 247, False: 157]
  |  |  ------------------
  ------------------
43709|    247|						GC_ADDREF(op2_str);
  ------------------
  |  |  718|    247|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43710|    247|					}
43711|    404|				}
43712|    404|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|    404|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    404|		zval *__z = (z);						\
  |  | 1090|    404|		zend_string *__s = (s);					\
  |  | 1091|    404|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    404|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    404|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    404|		/* interned strings support */			\
  |  | 1093|    404|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    404|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    404|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 157, False: 247]
  |  |  ------------------
  |  | 1094|    404|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|    157|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    157|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    404|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|    651|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    247|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    247|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    247|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    404|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 404]
  |  |  ------------------
  ------------------
43713|    404|				zend_string_release_ex(op1_str, 0);
43714|    404|				break;
43715|    404|			}
43716|    848|		}
43717|    444|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    444|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    444|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43717:7): [Folded, False: 444]
  ------------------
43718|      0|			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43719|      0|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43719:9): [Folded, False: 0]
  ------------------
43720|      0|					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43721|      0|						GC_ADDREF(op1_str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43722|      0|					}
43723|      0|				}
43724|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
43725|      0|				zend_string_release_ex(op2_str, 0);
43726|      0|				break;
43727|      0|			}
43728|      0|		}
43729|    444|		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|    444|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|    444|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43730|    444|		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|    444|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|    444|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|    444|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43731|    444|		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|    444|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|    444|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|    444|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|    444|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
43732|       |
43733|    444|		ZSTR_COPY_CONCAT_PROPERTIES_BOTH(str, op1_str, op2_str);
43734|    444|		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|    444|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|    444|		zval *__z = (z);						\
  |  | 1107|    444|		zend_string *__s = (s);					\
  |  | 1108|    444|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    444|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    444|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|    444|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|    444|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    444|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|    444|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    444|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    444|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    444|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|    444|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 444]
  |  |  ------------------
  ------------------
43735|    444|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|    444|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|    444|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43735:7): [True: 444, Folded]
  ------------------
43736|    444|			zend_string_release_ex(op1_str, 0);
43737|    444|		}
43738|    444|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    444|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    444|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43738:7): [Folded, False: 444]
  ------------------
43739|      0|			zend_string_release_ex(op2_str, 0);
43740|      0|		}
43741|    444|	} while (0);
  ------------------
  |  Branch (43741:11): [Folded, False: 444]
  ------------------
43742|       |
43743|       |
43744|       |
43745|       |
43746|    848|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    848|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    848|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    848|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 848, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    848|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    848|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    848|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    848|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    848|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    848|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (43746:2): [True: 0, False: 0]
  |  Branch (43746:2): [True: 0, False: 0]
  ------------------
43747|    848|}
zend_execute.c:ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER:
52602|      1|{
52603|      1|	USE_OPLINE
52604|      1|	zval *op1, *op2;
52605|      1|	zend_string *op1_str, *op2_str, *str;
52606|       |
52607|       |
52608|      1|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52609|      1|	op2 = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
52610|      1|	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (52610:7): [Folded, False: 1]
  ------------------
52611|      0|	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52611:7): [Folded, False: 0]
  ------------------
52612|      0|		zend_string *op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
52613|      0|		zend_string *op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
52614|      0|		zend_string *str;
52615|      0|		uint32_t flags = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(op1_str, op2_str);
52616|       |
52617|      0|		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52617:7): [True: 0, Folded]
  ------------------
52618|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (52618:8): [Folded, False: 0]
  |  Branch (52618:29): [True: 0, Folded]
  ------------------
52619|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52620|      0|			} else {
52621|      0|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52622|      0|			}
52623|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52623:8): [Folded, False: 0]
  ------------------
52624|      0|				zend_string_release_ex(op1_str, 0);
52625|      0|			}
52626|      0|		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52626:14): [True: 0, Folded]
  ------------------
52627|      0|			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (52627:8): [Folded, False: 0]
  |  Branch (52627:29): [True: 0, Folded]
  ------------------
52628|      0|				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52629|      0|			} else {
52630|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52631|      0|			}
52632|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52632:8): [Folded, False: 0]
  ------------------
52633|      0|				zend_string_release_ex(op2_str, 0);
52634|      0|			}
52635|      0|		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (52635:14): [True: 0, Folded]
  |  Branch (52635:35): [Folded, False: 0]
  ------------------
52636|      0|		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (52636:7): [True: 0, False: 0]
  |  Branch (52636:37): [True: 0, False: 0]
  ------------------
52637|      0|			size_t len = ZSTR_LEN(op1_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52638|       |
52639|      0|			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52640|      0|			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52641|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52642|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52643|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52643:8): [Folded, False: 0]
  ------------------
52644|      0|				zend_string_release_ex(op2_str, 0);
52645|      0|			}
52646|      0|		} else {
52647|      0|			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52648|      0|			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52649|      0|			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52650|      0|			GC_ADD_FLAGS(str, flags);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52651|      0|			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52652|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52652:8): [Folded, False: 0]
  ------------------
52653|      0|				zend_string_release_ex(op1_str, 0);
52654|      0|			}
52655|      0|			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (52655:8): [Folded, False: 0]
  ------------------
52656|      0|				zend_string_release_ex(op2_str, 0);
52657|      0|			}
52658|      0|		}
52659|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (52659:3): [True: 0, False: 0]
  |  Branch (52659:3): [True: 0, False: 0]
  ------------------
52660|      0|	}
52661|       |
52662|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
52663|      1|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52663:6): [Folded, False: 1]
  ------------------
52664|      0|		op1_str = Z_STR_P(op1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
52665|      1|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
52666|      0|		op1_str = zend_string_copy(Z_STR_P(op1));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
52667|      1|	} else {
52668|      1|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52668:7): [True: 1, Folded]
  ------------------
52669|      1|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52670|      1|		}
52671|      1|		op1_str = zval_get_string_func(op1);
52672|      1|	}
52673|      1|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52673:6): [Folded, False: 1]
  ------------------
52674|      0|		op2_str = Z_STR_P(op2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
52675|      1|	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
52676|      0|		op2_str = zend_string_copy(Z_STR_P(op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
52677|      1|	} else {
52678|      1|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (52678:7): [True: 1, Folded]
  ------------------
52679|      1|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
52680|      1|		}
52681|      1|		op2_str = zval_get_string_func(op2);
52682|      1|	}
52683|      1|	do {
52684|      1|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52684:7): [True: 1, Folded]
  ------------------
52685|      1|			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
52686|      1|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52686:9): [Folded, False: 1]
  ------------------
52687|      0|					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52688|      0|						GC_ADDREF(op2_str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52689|      0|					}
52690|      0|				}
52691|      1|				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
  ------------------
  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      1|		zval *__z = (z);						\
  |  | 1090|      1|		zend_string *__s = (s);					\
  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      1|		/* interned strings support */			\
  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 0]
  |  |  ------------------
  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
52692|      1|				zend_string_release_ex(op1_str, 0);
52693|      1|				break;
52694|      1|			}
52695|      1|		}
52696|      0|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52696:7): [True: 0, Folded]
  ------------------
52697|      0|			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52698|      0|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52698:9): [Folded, False: 0]
  ------------------
52699|      0|					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
52700|      0|						GC_ADDREF(op1_str);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
52701|      0|					}
52702|      0|				}
52703|      0|				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52704|      0|				zend_string_release_ex(op2_str, 0);
52705|      0|				break;
52706|      0|			}
52707|      0|		}
52708|      0|		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52709|      0|		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52710|      0|		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
52711|       |
52712|      0|		ZSTR_COPY_CONCAT_PROPERTIES_BOTH(str, op1_str, op2_str);
52713|      0|		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
52714|      0|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52714:7): [True: 0, Folded]
  ------------------
52715|      0|			zend_string_release_ex(op1_str, 0);
52716|      0|		}
52717|      0|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (52717:7): [True: 0, Folded]
  ------------------
52718|      0|			zend_string_release_ex(op2_str, 0);
52719|      0|		}
52720|      0|	} while (0);
  ------------------
  |  Branch (52720:11): [Folded, False: 0]
  ------------------
52721|       |
52722|       |
52723|       |
52724|       |
52725|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (52725:2): [True: 0, False: 0]
  |  Branch (52725:2): [True: 0, False: 0]
  ------------------
52726|      1|}
zend_execute.c:ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER:
34054|  5.00k|{
34055|  5.00k|	USE_OPLINE
34056|  5.00k|	zend_string **rope;
34057|  5.00k|	zval *var;
34058|       |
34059|       |	/* Compiler allocates the necessary number of zval slots to keep the rope */
34060|  5.00k|	rope = (zend_string**)EX_VAR(opline->result.var);
  ------------------
  |  |  755|  5.00k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  5.00k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
34061|  5.00k|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  5.00k|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  5.00k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34061:6): [True: 5.00k, Folded]
  ------------------
34062|  5.00k|		var = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  5.00k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34063|  5.00k|		rope[0] = Z_STR_P(var);
  ------------------
  |  |  982|  5.00k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  5.00k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
34064|  5.00k|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|  5.00k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4.31k, False: 684]
  |  |  ------------------
  ------------------
34065|  4.31k|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|  4.31k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
34066|  4.31k|		}
34067|  5.00k|	} else {
34068|      0|		var = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34069|      0|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34070|      0|			if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (34070:8): [Folded, False: 0]
  ------------------
34071|      0|				rope[0] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
34072|      0|			} else {
34073|      0|				rope[0] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
34074|      0|			}
34075|      0|		} else {
34076|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34077|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34077:8): [Folded, False: 0]
  ------------------
34078|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34079|      0|			}
34080|      0|			rope[0] = zval_get_string_func(var);
34081|       |
34082|       |
34083|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34083:4): [True: 0, False: 0]
  |  Branch (34083:4): [True: 0, False: 0]
  ------------------
34084|      0|		}
34085|      0|	}
34086|  5.00k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  5.00k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  5.00k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  5.00k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5.00k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  5.00k|	} else { \
  |  |  |  | 5761|  5.00k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  5.00k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  5.00k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  5.00k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  5.00k|	} \
  |  |  |  | 5764|  5.00k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  5.00k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34086:2): [True: 0, False: 5.00k]
  |  Branch (34086:2): [True: 5.00k, False: 0]
  ------------------
34087|  5.00k|}
zend_execute.c:ZEND_ROPE_INIT_SPEC_UNUSED_TMP_HANDLER:
36147|      2|{
36148|      2|	USE_OPLINE
36149|      2|	zend_string **rope;
36150|      2|	zval *var;
36151|       |
36152|       |	/* Compiler allocates the necessary number of zval slots to keep the rope */
36153|      2|	rope = (zend_string**)EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
36154|      2|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36154:6): [Folded, False: 2]
  ------------------
36155|      0|		var = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36156|      0|		rope[0] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36157|      0|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36158|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
36159|      0|		}
36160|      2|	} else {
36161|      2|		var = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36162|      2|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
36163|      2|			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (36163:8): [Folded, False: 2]
  ------------------
36164|      0|				rope[0] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36165|      2|			} else {
36166|      2|				rope[0] = Z_STR_P(var);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36167|      2|			}
36168|      2|		} else {
36169|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36170|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (36170:8): [Folded, False: 0]
  ------------------
36171|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36172|      0|			}
36173|      0|			rope[0] = zval_get_string_func(var);
36174|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
36175|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36175:4): [True: 0, False: 0]
  |  Branch (36175:4): [True: 0, False: 0]
  ------------------
36176|      0|		}
36177|      2|	}
36178|      2|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36178:2): [True: 0, False: 2]
  |  Branch (36178:2): [True: 2, False: 0]
  ------------------
36179|      2|}
zend_execute.c:ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER:
38721|    150|{
38722|    150|	USE_OPLINE
38723|    150|	zend_string **rope;
38724|    150|	zval *var;
38725|       |
38726|       |	/* Compiler allocates the necessary number of zval slots to keep the rope */
38727|    150|	rope = (zend_string**)EX_VAR(opline->result.var);
  ------------------
  |  |  755|    150|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    150|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
38728|    150|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    150|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    150|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (38728:6): [Folded, False: 150]
  ------------------
38729|      0|		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38730|      0|		rope[0] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38731|      0|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38732|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
38733|      0|		}
38734|    150|	} else {
38735|    150|		var = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    150|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    150|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
38736|    150|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|    150|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 14, False: 136]
  |  |  ------------------
  ------------------
38737|     14|			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (38737:8): [True: 14, Folded]
  ------------------
38738|     14|				rope[0] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|     14|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     14|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38739|     14|			} else {
38740|      0|				rope[0] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38741|      0|			}
38742|    136|		} else {
38743|    136|			SAVE_OPLINE();
  ------------------
  |  |  428|    136|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    136|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
38744|    136|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|    136|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|    272|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|    136|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 133]
  |  |  ------------------
  ------------------
  |  Branch (38744:8): [True: 136, Folded]
  ------------------
38745|      3|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      3|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38746|      3|			}
38747|    136|			rope[0] = zval_get_string_func(var);
38748|       |
38749|       |
38750|    136|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    136|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    136|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    136|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 136, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    136|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    136|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    136|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    136|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    136|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    136|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (38750:4): [True: 0, False: 0]
  |  Branch (38750:4): [True: 0, False: 0]
  ------------------
38751|    136|		}
38752|    150|	}
38753|     14|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    150|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     14|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     14|	} else { \
  |  |  |  | 5761|     14|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     14|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     14|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     14|	} \
  |  |  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (38753:2): [True: 0, False: 14]
  |  Branch (38753:2): [True: 14, False: 0]
  ------------------
38754|     14|}
zend_execute.c:ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER:
19003|  3.15k|{
19004|  3.15k|	USE_OPLINE
19005|  3.15k|	zend_string **rope;
19006|  3.15k|	zval *var;
19007|       |
19008|       |	/* op1 and result are the same */
19009|  3.15k|	rope = (zend_string**)EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  3.15k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  3.15k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19010|  3.15k|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  3.15k|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  3.15k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19010:6): [True: 3.15k, Folded]
  ------------------
19011|  3.15k|		var = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  3.15k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19012|  3.15k|		rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|  3.15k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  3.15k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19013|  3.15k|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|  3.15k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3.05k, False: 100]
  |  |  ------------------
  ------------------
19014|  3.05k|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|  3.05k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
19015|  3.05k|		}
19016|  3.15k|	} else {
19017|      0|		var = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19018|      0|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19019|      0|			if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19019:8): [Folded, False: 0]
  ------------------
19020|      0|				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19021|      0|			} else {
19022|      0|				rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19023|      0|			}
19024|      0|		} else {
19025|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19026|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19026:8): [Folded, False: 0]
  ------------------
19027|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19028|      0|			}
19029|      0|			rope[opline->extended_value] = zval_get_string_func(var);
19030|       |
19031|       |
19032|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19032:4): [True: 0, False: 0]
  |  Branch (19032:4): [True: 0, False: 0]
  ------------------
19033|      0|		}
19034|      0|	}
19035|  3.15k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  3.15k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  3.15k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  3.15k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3.15k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  3.15k|	} else { \
  |  |  |  | 5761|  3.15k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  3.15k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  3.15k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  3.15k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  3.15k|	} \
  |  |  |  | 5764|  3.15k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  3.15k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19035:2): [True: 0, False: 3.15k]
  |  Branch (19035:2): [True: 3.15k, False: 0]
  ------------------
19036|  3.15k|}
zend_execute.c:ZEND_ROPE_ADD_SPEC_TMP_TMP_HANDLER:
20584|    115|{
20585|    115|	USE_OPLINE
20586|    115|	zend_string **rope;
20587|    115|	zval *var;
20588|       |
20589|       |	/* op1 and result are the same */
20590|    115|	rope = (zend_string**)EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    115|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    115|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20591|    115|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    115|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20591:6): [Folded, False: 115]
  ------------------
20592|      0|		var = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20593|      0|		rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20594|      0|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20595|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
20596|      0|		}
20597|    115|	} else {
20598|    115|		var = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    115|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    115|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20599|    115|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|    115|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 110]
  |  |  ------------------
  ------------------
20600|      5|			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (20600:8): [Folded, False: 5]
  ------------------
20601|      0|				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20602|      5|			} else {
20603|      5|				rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20604|      5|			}
20605|    110|		} else {
20606|    110|			SAVE_OPLINE();
  ------------------
  |  |  428|    110|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    110|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
20607|    110|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  865|    110|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|    220|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20607:8): [Folded, False: 110]
  ------------------
20608|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20609|      0|			}
20610|    110|			rope[opline->extended_value] = zval_get_string_func(var);
20611|    110|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    110|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    110|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20612|    110|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    110|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    110|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    110|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 110, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    110|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    110|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    110|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    110|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    110|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    110|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (20612:4): [True: 0, False: 0]
  |  Branch (20612:4): [True: 0, False: 0]
  ------------------
20613|    110|		}
20614|    115|	}
20615|      5|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    115|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      5|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (20615:2): [True: 0, False: 5]
  |  Branch (20615:2): [True: 5, False: 0]
  ------------------
20616|      5|}
zend_execute.c:ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER:
22437|  7.27k|{
22438|  7.27k|	USE_OPLINE
22439|  7.27k|	zend_string **rope;
22440|  7.27k|	zval *var;
22441|       |
22442|       |	/* op1 and result are the same */
22443|  7.27k|	rope = (zend_string**)EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  7.27k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  7.27k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22444|  7.27k|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|  7.27k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|  7.27k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (22444:6): [Folded, False: 7.27k]
  ------------------
22445|      0|		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22446|      0|		rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22447|      0|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22448|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
22449|      0|		}
22450|  7.27k|	} else {
22451|  7.27k|		var = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|  7.27k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  7.27k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22452|  7.27k|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|  7.27k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.30k, False: 4.96k]
  |  |  ------------------
  ------------------
22453|  2.30k|			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|  2.30k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|  2.30k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22453:8): [True: 2.30k, Folded]
  ------------------
22454|  2.30k|				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|  2.30k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  2.30k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22455|  2.30k|			} else {
22456|      0|				rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22457|      0|			}
22458|  4.96k|		} else {
22459|  4.96k|			SAVE_OPLINE();
  ------------------
  |  |  428|  4.96k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  4.96k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22460|  4.96k|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|  4.96k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|  9.93k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|  4.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4.50k, False: 464]
  |  |  ------------------
  ------------------
  |  Branch (22460:8): [True: 4.96k, Folded]
  ------------------
22461|  4.50k|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|  4.50k|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|  4.50k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22462|  4.50k|			}
22463|  4.96k|			rope[opline->extended_value] = zval_get_string_func(var);
22464|       |
22465|       |
22466|  4.96k|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  4.96k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  4.96k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  4.96k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4.96k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  4.96k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  4.96k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  4.96k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  4.96k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  4.96k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  4.96k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22466:4): [True: 0, False: 0]
  |  Branch (22466:4): [True: 0, False: 0]
  ------------------
22467|  4.96k|		}
22468|  7.27k|	}
22469|  2.30k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  7.27k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  2.30k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  2.30k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2.30k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  2.30k|	} else { \
  |  |  |  | 5761|  2.30k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  2.30k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  2.30k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  2.30k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  2.30k|	} \
  |  |  |  | 5764|  2.30k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  2.30k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22469:2): [True: 0, False: 2.30k]
  |  Branch (22469:2): [True: 2.30k, False: 0]
  ------------------
22470|  2.30k|}
zend_execute.c:ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER:
19039|  4.36k|{
19040|  4.36k|	USE_OPLINE
19041|  4.36k|	zend_string **rope;
19042|  4.36k|	zval *var, *ret;
19043|  4.36k|	uint32_t i;
19044|       |
19045|  4.36k|	rope = (zend_string**)EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  4.36k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  4.36k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19046|  4.36k|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  4.36k|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  4.36k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19046:6): [True: 4.36k, Folded]
  ------------------
19047|  4.36k|		var = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  4.36k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19048|  4.36k|		rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|  4.36k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  4.36k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19049|  4.36k|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|  4.36k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4.11k, False: 248]
  |  |  ------------------
  ------------------
19050|  4.11k|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|  4.11k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
19051|  4.11k|		}
19052|  4.36k|	} else {
19053|      0|		var = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19054|      0|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19055|      0|			if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19055:8): [Folded, False: 0]
  ------------------
19056|      0|				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19057|      0|			} else {
19058|      0|				rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19059|      0|			}
19060|      0|		} else {
19061|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19062|      0|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19062:8): [Folded, False: 0]
  ------------------
19063|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19064|      0|			}
19065|      0|			rope[opline->extended_value] = zval_get_string_func(var);
19066|       |
19067|       |
19068|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19069|      0|				for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (19069:17): [True: 0, False: 0]
  ------------------
19070|      0|					zend_string_release_ex(rope[i], 0);
19071|      0|				}
19072|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19073|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19073:5): [True: 0, False: 0]
  |  Branch (19073:5): [True: 0, False: 0]
  ------------------
19074|      0|			}
19075|      0|		}
19076|      0|	}
19077|       |
19078|  4.36k|	size_t len = 0;
19079|  4.36k|	uint32_t flags = ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|  4.36k|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|  4.36k|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
19080|  21.2k|	for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (19080:14): [True: 16.8k, False: 4.36k]
  ------------------
19081|  16.8k|		flags &= ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(rope[i]);
19082|  16.8k|		len += ZSTR_LEN(rope[i]);
  ------------------
  |  |   68|  16.8k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19083|  16.8k|	}
19084|  4.36k|	ret = EX_VAR(opline->result.var);
  ------------------
  |  |  755|  4.36k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  4.36k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19085|  4.36k|	ZVAL_STR(ret, zend_string_alloc(len, 0));
  ------------------
  |  | 1088|  4.36k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  4.36k|		zval *__z = (z);						\
  |  | 1090|  4.36k|		zend_string *__s = (s);					\
  |  | 1091|  4.36k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  4.36k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  4.36k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  4.36k|		/* interned strings support */			\
  |  | 1093|  4.36k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  4.36k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.36k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 4.36k]
  |  |  ------------------
  |  | 1094|  4.36k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  4.36k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  8.72k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  4.36k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  4.36k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  4.36k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  4.36k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 4.36k]
  |  |  ------------------
  ------------------
19086|  4.36k|	GC_ADD_FLAGS(Z_STR_P(ret), flags);
  ------------------
  |  |  780|  4.36k|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|  4.36k|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|  4.36k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|  4.36k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|  4.36k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 4.36k]
  |  |  ------------------
  ------------------
19087|       |
19088|  4.36k|	char *target = Z_STRVAL_P(ret);
  ------------------
  |  |  985|  4.36k|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|  4.36k|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  4.36k|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19089|  21.2k|	for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (19089:14): [True: 16.8k, False: 4.36k]
  ------------------
19090|  16.8k|		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
  ------------------
  |  |   67|  16.8k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
  ------------------
  |  |   68|  16.8k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19091|  16.8k|		target += ZSTR_LEN(rope[i]);
  ------------------
  |  |   68|  16.8k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
19092|  16.8k|		zend_string_release_ex(rope[i], 0);
19093|  16.8k|	}
19094|  4.36k|	*target = '\0';
19095|       |
19096|  4.36k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  4.36k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  4.36k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  4.36k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4.36k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  4.36k|	} else { \
  |  |  |  | 5761|  4.36k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  4.36k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  4.36k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  4.36k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  4.36k|	} \
  |  |  |  | 5764|  4.36k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  4.36k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19096:2): [True: 0, False: 4.36k]
  |  Branch (19096:2): [True: 4.36k, False: 0]
  ------------------
19097|  4.36k|}
zend_execute.c:ZEND_ROPE_END_SPEC_TMP_TMP_HANDLER:
20619|      3|{
20620|      3|	USE_OPLINE
20621|      3|	zend_string **rope;
20622|      3|	zval *var, *ret;
20623|      3|	uint32_t i;
20624|       |
20625|      3|	rope = (zend_string**)EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20626|      3|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20626:6): [Folded, False: 3]
  ------------------
20627|      0|		var = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20628|      0|		rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20629|      0|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20630|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
20631|      0|		}
20632|      3|	} else {
20633|      3|		var = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20634|      3|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
20635|      2|			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (20635:8): [Folded, False: 2]
  ------------------
20636|      0|				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20637|      2|			} else {
20638|      2|				rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20639|      2|			}
20640|      2|		} else {
20641|      1|			SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
20642|      1|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20642:8): [Folded, False: 1]
  ------------------
20643|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20644|      0|			}
20645|      1|			rope[opline->extended_value] = zval_get_string_func(var);
20646|      1|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20647|      1|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
20648|      0|				for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (20648:17): [True: 0, False: 0]
  ------------------
20649|      0|					zend_string_release_ex(rope[i], 0);
20650|      0|				}
20651|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20652|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (20652:5): [True: 0, False: 0]
  |  Branch (20652:5): [True: 0, False: 0]
  ------------------
20653|      0|			}
20654|      1|		}
20655|      3|	}
20656|       |
20657|      3|	size_t len = 0;
20658|      3|	uint32_t flags = ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|      3|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|      3|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
20659|     19|	for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (20659:14): [True: 16, False: 3]
  ------------------
20660|     16|		flags &= ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(rope[i]);
20661|     16|		len += ZSTR_LEN(rope[i]);
  ------------------
  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
20662|     16|	}
20663|      3|	ret = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20664|      3|	ZVAL_STR(ret, zend_string_alloc(len, 0));
  ------------------
  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      3|		zval *__z = (z);						\
  |  | 1090|      3|		zend_string *__s = (s);					\
  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      3|		/* interned strings support */			\
  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 3]
  |  |  ------------------
  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
20665|      3|	GC_ADD_FLAGS(Z_STR_P(ret), flags);
  ------------------
  |  |  780|      3|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      3|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
20666|       |
20667|      3|	char *target = Z_STRVAL_P(ret);
  ------------------
  |  |  985|      3|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      3|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20668|     19|	for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (20668:14): [True: 16, False: 3]
  ------------------
20669|     16|		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
  ------------------
  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
20670|     16|		target += ZSTR_LEN(rope[i]);
  ------------------
  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
20671|     16|		zend_string_release_ex(rope[i], 0);
20672|     16|	}
20673|      3|	*target = '\0';
20674|       |
20675|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (20675:2): [True: 0, False: 3]
  |  Branch (20675:2): [True: 3, False: 0]
  ------------------
20676|      3|}
zend_execute.c:ZEND_ROPE_END_SPEC_TMP_CV_HANDLER:
22473|    780|{
22474|    780|	USE_OPLINE
22475|    780|	zend_string **rope;
22476|    780|	zval *var, *ret;
22477|    780|	uint32_t i;
22478|       |
22479|    780|	rope = (zend_string**)EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    780|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    780|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22480|    780|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    780|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    780|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (22480:6): [Folded, False: 780]
  ------------------
22481|      0|		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22482|      0|		rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22483|      0|		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22484|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
22485|      0|		}
22486|    780|	} else {
22487|    780|		var = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    780|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    780|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22488|    780|		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
  ------------------
  |  |  456|    780|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 57, False: 723]
  |  |  ------------------
  ------------------
22489|     57|			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     57|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     57|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22489:8): [True: 57, Folded]
  ------------------
22490|     57|				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
  ------------------
  |  |  982|     57|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     57|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22491|     57|			} else {
22492|      0|				rope[opline->extended_value] = Z_STR_P(var);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22493|      0|			}
22494|    723|		} else {
22495|    723|			SAVE_OPLINE();
  ------------------
  |  |  428|    723|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    723|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22496|    723|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|    723|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.44k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
  ------------------
  |  |  457|    723|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 723, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (22496:8): [True: 723, Folded]
  ------------------
22497|    723|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    723|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    723|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22498|    723|			}
22499|    723|			rope[opline->extended_value] = zval_get_string_func(var);
22500|       |
22501|       |
22502|    723|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|    723|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 723]
  |  |  ------------------
  ------------------
22503|      0|				for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (22503:17): [True: 0, False: 0]
  ------------------
22504|      0|					zend_string_release_ex(rope[i], 0);
22505|      0|				}
22506|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22507|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (22507:5): [True: 0, False: 0]
  |  Branch (22507:5): [True: 0, False: 0]
  ------------------
22508|      0|			}
22509|    723|		}
22510|    780|	}
22511|       |
22512|    780|	size_t len = 0;
22513|    780|	uint32_t flags = ZSTR_COPYABLE_CONCAT_PROPERTIES;
  ------------------
  |  |   85|    780|#define ZSTR_COPYABLE_CONCAT_PROPERTIES		(IS_STR_VALID_UTF8)
  |  |  ------------------
  |  |  |  |  841|    780|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  ------------------
  ------------------
22514|  4.71k|	for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (22514:14): [True: 3.93k, False: 780]
  ------------------
22515|  3.93k|		flags &= ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(rope[i]);
22516|  3.93k|		len += ZSTR_LEN(rope[i]);
  ------------------
  |  |   68|  3.93k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22517|  3.93k|	}
22518|    780|	ret = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    780|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    780|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22519|    780|	ZVAL_STR(ret, zend_string_alloc(len, 0));
  ------------------
  |  | 1088|    780|#define ZVAL_STR(z, s) do {						\
  |  | 1089|    780|		zval *__z = (z);						\
  |  | 1090|    780|		zend_string *__s = (s);					\
  |  | 1091|    780|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|    780|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|    780|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|    780|		/* interned strings support */			\
  |  | 1093|    780|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|    780|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    780|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 780]
  |  |  ------------------
  |  | 1094|    780|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|    780|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  1.56k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|    780|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    780|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    780|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|    780|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 780]
  |  |  ------------------
  ------------------
22520|    780|	GC_ADD_FLAGS(Z_STR_P(ret), flags);
  ------------------
  |  |  780|    780|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    780|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    780|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    780|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    780|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 780]
  |  |  ------------------
  ------------------
22521|       |
22522|    780|	char *target = Z_STRVAL_P(ret);
  ------------------
  |  |  985|    780|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    780|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    780|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22523|  4.71k|	for (i = 0; i <= opline->extended_value; i++) {
  ------------------
  |  Branch (22523:14): [True: 3.93k, False: 780]
  ------------------
22524|  3.93k|		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
  ------------------
  |  |   67|  3.93k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
  ------------------
  |  |   68|  3.93k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22525|  3.93k|		target += ZSTR_LEN(rope[i]);
  ------------------
  |  |   68|  3.93k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
22526|  3.93k|		zend_string_release_ex(rope[i], 0);
22527|  3.93k|	}
22528|    780|	*target = '\0';
22529|       |
22530|    780|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    780|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    780|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    780|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 780]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    780|	} else { \
  |  |  |  | 5761|    780|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    780|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    780|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    780|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    780|	} \
  |  |  |  | 5764|    780|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    780|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22530:2): [True: 0, False: 780]
  |  Branch (22530:2): [True: 780, False: 0]
  ------------------
22531|    780|}
zend_execute.c:ZEND_BEGIN_SILENCE_SPEC_HANDLER:
 3185|    413|{
 3186|    413|	USE_OPLINE
 3187|       |
 3188|    413|	ZVAL_LONG(EX_VAR(opline->result.var), EG(error_reporting));
  ------------------
  |  | 1076|    413|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    413|		zval *__z = (z);				\
  |  | 1078|    413|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    413|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    413|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    413|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    413|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    413|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    413|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    413|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 413]
  |  |  ------------------
  ------------------
 3189|       |
 3190|    413|	if (!E_HAS_ONLY_FATAL_ERRORS(EG(error_reporting))) {
  ------------------
  |  |   48|    413|#define E_HAS_ONLY_FATAL_ERRORS(mask) !((mask) & ~E_FATAL_ERRORS)
  |  |  ------------------
  |  |  |  |   46|    413|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|    413|#define E_ERROR				(1<<0L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    413|#define E_CORE_ERROR		(1<<4L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|    413|#define E_COMPILE_ERROR		(1<<6L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|    413|#define E_USER_ERROR		(1<<8L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    413|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|    413|#define E_PARSE				(1<<2L)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3190:6): [True: 5, False: 408]
  ------------------
 3191|      5|		do {
 3192|       |			/* Do not silence fatal errors */
 3193|      5|			EG(error_reporting) &= E_FATAL_ERRORS;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
              			EG(error_reporting) &= E_FATAL_ERRORS;
  ------------------
  |  |   46|      5|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   22|      5|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   26|      5|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   28|      5|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   30|      5|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   35|      5|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  ------------------
  |  |  |  |   24|      5|#define E_PARSE				(1<<2L)
  |  |  ------------------
  ------------------
 3194|      5|			if (!EG(error_reporting_ini_entry)) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3194:8): [True: 0, False: 5]
  ------------------
 3195|      0|				zval *zv = zend_hash_find_known_hash(EG(ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3196|      0|				if (zv) {
  ------------------
  |  Branch (3196:9): [True: 0, False: 0]
  ------------------
 3197|      0|					EG(error_reporting_ini_entry) = (zend_ini_entry *)Z_PTR_P(zv);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					EG(error_reporting_ini_entry) = (zend_ini_entry *)Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 3198|      0|				} else {
 3199|      0|					break;
 3200|      0|				}
 3201|      0|			}
 3202|      5|			if (!EG(error_reporting_ini_entry)->modified) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3202:8): [True: 0, False: 5]
  ------------------
 3203|      0|				if (!EG(modified_ini_directives)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3203:9): [True: 0, False: 0]
  ------------------
 3204|      0|					ALLOC_HASHTABLE(EG(modified_ini_directives));
  ------------------
  |  |  232|      0|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3205|      0|					zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, 0);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 3206|      0|				}
 3207|      0|				if (EXPECTED(zend_hash_add_ptr(EG(modified_ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING), EG(error_reporting_ini_entry)) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3208|      0|					EG(error_reporting_ini_entry)->orig_value = EG(error_reporting_ini_entry)->value;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					EG(error_reporting_ini_entry)->orig_value = EG(error_reporting_ini_entry)->value;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3209|      0|					EG(error_reporting_ini_entry)->orig_modifiable = EG(error_reporting_ini_entry)->modifiable;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					EG(error_reporting_ini_entry)->orig_modifiable = EG(error_reporting_ini_entry)->modifiable;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3210|      0|					EG(error_reporting_ini_entry)->modified = 1;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3211|      0|				}
 3212|      0|			}
 3213|      5|		} while (0);
  ------------------
  |  Branch (3213:12): [Folded, False: 5]
  ------------------
 3214|      5|	}
 3215|    413|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    413|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    413|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    413|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 413]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    413|	} else { \
  |  |  |  | 5761|    413|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    413|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    413|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    413|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    413|	} \
  |  |  |  | 5764|    413|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    413|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3215:2): [True: 0, False: 413]
  |  Branch (3215:2): [True: 413, False: 0]
  ------------------
 3216|    413|}
zend_execute.c:ZEND_END_SILENCE_SPEC_TMP_HANDLER:
17853|    339|{
17854|    339|	USE_OPLINE
17855|       |
17856|    339|	if (E_HAS_ONLY_FATAL_ERRORS(EG(error_reporting))
  ------------------
  |  |   48|    678|#define E_HAS_ONLY_FATAL_ERRORS(mask) !((mask) & ~E_FATAL_ERRORS)
  |  |  ------------------
  |  |  |  |   46|    339|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|    339|#define E_ERROR				(1<<0L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    339|#define E_CORE_ERROR		(1<<4L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|    339|#define E_COMPILE_ERROR		(1<<6L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|    339|#define E_USER_ERROR		(1<<8L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    339|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|    339|#define E_PARSE				(1<<2L)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (48:39): [True: 337, False: 2]
  |  |  ------------------
  ------------------
17857|    337|			&& !E_HAS_ONLY_FATAL_ERRORS(Z_LVAL_P(EX_VAR(opline->op1.var)))) {
  ------------------
  |  |   48|    337|#define E_HAS_ONLY_FATAL_ERRORS(mask) !((mask) & ~E_FATAL_ERRORS)
  |  |  ------------------
  |  |  |  |   46|    337|#define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|    337|#define E_ERROR				(1<<0L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    337|#define E_CORE_ERROR		(1<<4L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   28|    337|#define E_COMPILE_ERROR		(1<<6L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   30|    337|#define E_USER_ERROR		(1<<8L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|    337|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  |  |  ------------------
  |  |  |  |               #define E_FATAL_ERRORS (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|    337|#define E_PARSE				(1<<2L)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17857:7): [True: 3, False: 334]
  ------------------
17858|      3|		EG(error_reporting) = Z_LVAL_P(EX_VAR(opline->op1.var));
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
              		EG(error_reporting) = Z_LVAL_P(EX_VAR(opline->op1.var));
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
17859|      3|	}
17860|    339|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    339|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    339|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    339|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 339]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    339|	} else { \
  |  |  |  | 5761|    339|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    339|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    339|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    339|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    339|	} \
  |  |  |  | 5764|    339|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    339|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17860:2): [True: 0, False: 339]
  |  Branch (17860:2): [True: 339, False: 0]
  ------------------
17861|    339|}
zend_execute.c:ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER:
 4064|    208|{
 4065|    208|	USE_OPLINE
 4066|    208|	zend_function *fbc;
 4067|    208|	zval *function_name, *func;
 4068|    208|	zend_execute_data *call;
 4069|       |
 4070|    208|	fbc = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|    208|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    208|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4071|    208|	if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|    208|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 188, False: 20]
  |  |  ------------------
  ------------------
 4072|    188|		function_name = (zval*)RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    188|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4073|    188|		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(function_name+1));
  ------------------
  |  |   45|    188|# define EG(v) (executor_globals.v)
  ------------------
              		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(function_name+1));
  ------------------
  |  |  982|    188|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    188|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4074|    188|		if (UNEXPECTED(func == NULL)) {
  ------------------
  |  |  457|    188|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 154, False: 34]
  |  |  ------------------
  ------------------
 4075|    154|			ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    154|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 4076|    154|		}
 4077|     34|		fbc = Z_FUNC_P(func);
  ------------------
  |  | 1050|     34|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|     34|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 4078|     34|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|     68|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 33, False: 1]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 26, False: 7]
  |  |  |  Branch (457:52): [True: 0, False: 33]
  |  |  ------------------
  ------------------
 4079|     26|			init_func_run_time_cache(&fbc->op_array);
 4080|     26|		}
 4081|     34|		CACHE_PTR(opline->result.num, fbc);
  ------------------
  |  |  529|     34|#define CACHE_PTR(num, ptr) do { \
  |  |  530|     34|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|     34|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
 4082|     34|	}
 4083|     54|	call = _zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
  ------------------
  |  | 5743|     54|# define _zend_vm_stack_push_call_frame    zend_vm_stack_push_call_frame
  ------------------
              	call = _zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
  ------------------
  |  |  681|     54|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|     54|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|     54|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
 4084|     54|		fbc, opline->extended_value, NULL);
 4085|     54|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|     54|#define EX(element) 			((execute_data)->element)
  ------------------
 4086|     54|	EX(call) = call;
  ------------------
  |  |  730|     54|#define EX(element) 			((execute_data)->element)
  ------------------
 4087|       |
 4088|     54|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     54|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     54|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     54|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 54]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     54|	} else { \
  |  |  |  | 5761|     54|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     54|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     54|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     54|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     54|	} \
  |  |  |  | 5764|     54|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     54|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4088:2): [True: 0, False: 54]
  |  Branch (4088:2): [True: 54, False: 0]
  ------------------
 4089|     54|}
zend_execute.c:zend_undefined_function_helper_SPEC:
  769|    162|{
  770|    162|	USE_OPLINE
  771|    162|	zval *function_name;
  772|       |
  773|    162|	SAVE_OPLINE();
  ------------------
  |  |  428|    162|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    162|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  774|    162|	function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    162|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  775|    162|	zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(function_name));
  ------------------
  |  |  985|    162|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    162|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    162|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  776|    162|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|    162|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|    162|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|    162|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    162|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    162|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (776:2): [True: 0, False: 162]
  |  Branch (776:2): [True: 162, False: 0]
  ------------------
  777|    162|}
zend_execute.c:ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER:
 1939|  11.4k|{
 1940|  11.4k|	USE_OPLINE
 1941|  11.4k|	zend_execute_data *call = EX(call);
  ------------------
  |  |  730|  11.4k|#define EX(element) 			((execute_data)->element)
  ------------------
 1942|  11.4k|	zend_function *fbc = call->func;
 1943|  11.4k|	zval *ret;
 1944|  11.4k|	zval retval;
 1945|       |
 1946|  11.4k|	SAVE_OPLINE();
  ------------------
  |  |  428|  11.4k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  11.4k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1947|  11.4k|	EX(call) = call->prev_execute_data;
  ------------------
  |  |  730|  11.4k|#define EX(element) 			((execute_data)->element)
  ------------------
 1948|       |
 1949|  11.4k|	const uint32_t no_discard = 0 ? 0 : ZEND_ACC_NODISCARD;
  ------------------
  |  |  410|  22.8k|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  |  Branch (1949:30): [Folded, False: 11.4k]
  ------------------
 1950|       |
 1951|  11.4k|	if (UNEXPECTED(fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard))) {
  ------------------
  |  |  457|  11.4k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 26, False: 11.3k]
  |  |  ------------------
  ------------------
 1952|     26|		if (fbc->common.fn_flags & ZEND_ACC_DEPRECATED) {
  ------------------
  |  |  258|     26|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (1952:7): [True: 22, False: 4]
  ------------------
 1953|     22|			zend_deprecated_function(fbc);
 1954|     22|		}
 1955|     26|		if ((fbc->common.fn_flags & no_discard) && EG(exception) == NULL) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1955:7): [True: 5, False: 21]
  |  Branch (1955:46): [True: 5, False: 0]
  ------------------
 1956|      5|			zend_nodiscard_function(fbc);
 1957|      5|		}
 1958|     26|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 22]
  |  |  ------------------
  ------------------
 1959|      4|			if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1960|      0|				OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1961|      0|			}
 1962|      4|			UNDEF_RESULT();
  ------------------
  |  | 5907|      4|#define UNDEF_RESULT() do { \
  |  | 5908|      4|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      4|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 4]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1963|      4|			if (!0) {
  ------------------
  |  Branch (1963:8): [True: 4, Folded]
  ------------------
 1964|      4|				ret = &retval;
 1965|      4|				ZVAL_UNDEF(ret);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1966|      4|			}
 1967|      4|			goto fcall_end;
 1968|      4|		}
 1969|     26|	}
 1970|       |
 1971|  11.4k|	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
  ------------------
  |  |  456|  11.4k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 557, False: 10.8k]
  |  |  ------------------
  ------------------
 1972|    557|		ret = NULL;
 1973|    557|		if (0) {
  ------------------
  |  Branch (1973:7): [Folded, False: 557]
  ------------------
 1974|      0|			ret = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 1975|      0|		}
 1976|       |
 1977|    557|		call->prev_execute_data = execute_data;
 1978|    557|		execute_data = call;
 1979|    557|		i_init_func_execute_data(&fbc->op_array, ret, 1 EXECUTE_DATA_CC);
  ------------------
  |  |   89|    557|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    557|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 1980|       |
 1981|    557|		if (EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|    557|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 557]
  |  |  ------------------
  ------------------
 1982|      0|			LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1983|       |
 1984|       |
 1985|       |
 1986|       |
 1987|      0|			ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 1988|    557|		} else {
 1989|    557|			SAVE_OPLINE_EX();
 1990|       |
 1991|       |
 1992|    557|			execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|    557|#define EX(element) 			((execute_data)->element)
  ------------------
 1993|    557|			LOAD_OPLINE();
  ------------------
  |  |  425|    557|# define LOAD_OPLINE() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|    557|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1994|    557|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
  ------------------
  |  |  703|    557|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|    557|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|    557|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|    557|		call_info |= (flag); \
  |  |  |  |  697|    557|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 557]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|    557|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 557]
  |  |  ------------------
  ------------------
 1995|    557|			zend_execute_ex(call);
 1996|    557|		}
 1997|  10.8k|	} else {
 1998|  10.8k|		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|  10.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1998:3): [True: 0, False: 10.8k]
  |  Branch (1998:3): [True: 10.8k, False: 0]
  ------------------
 1999|  10.8k|		if (0) {
  ------------------
  |  Branch (1999:7): [Folded, False: 10.8k]
  ------------------
 2000|      0|			ret = NULL;
 2001|      0|		}
 2002|       |
 2003|  10.8k|		call->prev_execute_data = execute_data;
 2004|  10.8k|		EG(current_execute_data) = call;
  ------------------
  |  |   45|  10.8k|# define EG(v) (executor_globals.v)
  ------------------
 2005|       |
 2006|  10.8k|#if ZEND_DEBUG
 2007|  10.8k|		bool should_throw = zend_internal_call_should_throw(fbc, call);
 2008|  10.8k|#endif
 2009|       |
 2010|  10.8k|		ret = 0 ? EX_VAR(opline->result.var) : &retval;
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (2010:9): [Folded, False: 10.8k]
  ------------------
 2011|  10.8k|		ZVAL_NULL(ret);
  ------------------
  |  | 1059|  10.8k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  10.8k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  10.8k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  10.8k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  10.8k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  10.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 10.8k]
  |  |  ------------------
  ------------------
 2012|       |
 2013|       |
 2014|  10.8k|		if (!zend_execute_internal) {
  ------------------
  |  Branch (2014:7): [True: 0, False: 10.8k]
  ------------------
 2015|       |			/* saves one function call if zend_execute_internal is not used */
 2016|      0|			fbc->internal_function.handler(call, ret);
 2017|  10.8k|		} else {
 2018|  10.8k|			zend_execute_internal(call, ret);
 2019|  10.8k|		}
 2020|       |
 2021|  10.8k|#if ZEND_DEBUG
 2022|  10.8k|		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |   45|  21.7k|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |  385|  9.53k|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (2022:7): [True: 9.53k, False: 1.32k]
  |  Branch (2022:25): [True: 9.53k, False: 6]
  |  Branch (2022:39): [True: 9.52k, False: 1]
  ------------------
 2023|  9.52k|			if (should_throw) {
  ------------------
  |  Branch (2023:8): [True: 0, False: 9.52k]
  ------------------
 2024|      0|				zend_internal_call_arginfo_violation(call->func);
 2025|      0|			}
 2026|  9.52k|			if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|  9.52k|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (2026:8): [True: 8.76k, False: 764]
  ------------------
 2027|  8.76k|				bool result = zend_verify_internal_return_type(call->func, ret);
 2028|  8.76k|				ZEND_ASSERT(result);
  ------------------
  |  |  112|  8.76k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2028:5): [True: 0, False: 8.76k]
  |  Branch (2028:5): [True: 8.76k, False: 0]
  ------------------
 2029|  8.76k|			}
 2030|  9.52k|			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  112|  9.52k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2030:4): [True: 0, False: 9.52k]
  |  Branch (2030:4): [True: 0, False: 9.52k]
  |  Branch (2030:4): [True: 0, False: 9.52k]
  |  Branch (2030:4): [True: 9.52k, False: 0]
  ------------------
 2031|  9.52k|				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
 2032|  9.52k|			zend_verify_internal_func_info(call->func, ret);
 2033|  9.52k|			ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
  ------------------
  |  |  112|  9.52k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2033:4): [True: 9.52k, False: 0]
  |  Branch (2033:4): [True: 0, False: 0]
  |  Branch (2033:4): [True: 9.52k, False: 1]
  |  Branch (2033:4): [True: 1, False: 0]
  ------------------
 2034|  9.52k|					|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
 2035|  9.52k|		}
 2036|  10.8k|		ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret));
  ------------------
  |  |  112|  10.8k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2036:3): [True: 10.8k, False: 0]
  |  Branch (2036:3): [True: 0, False: 0]
  |  Branch (2036:3): [True: 10.8k, False: 0]
  |  Branch (2036:3): [True: 0, False: 0]
  ------------------
 2037|  10.8k|#endif
 2038|       |
 2039|       |
 2040|  10.8k|		ZEND_VM_FCALL_INTERRUPT_CHECK(call);
  ------------------
  |  | 4336|  10.6k|#define ZEND_VM_FCALL_INTERRUPT_CHECK(call) do { \
  |  | 4337|  10.6k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  ------------------
  |  |  |  |  457|  10.6k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 10.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4338|      0|			zend_fcall_interrupt(call); \
  |  | 4339|      0|		} \
  |  | 4340|  10.6k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (4340:11): [Folded, False: 10.6k]
  |  |  ------------------
  ------------------
 2041|       |
 2042|  10.6k|		EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|  10.6k|# define EG(v) (executor_globals.v)
  ------------------
 2043|       |
 2044|  10.6k|		goto fcall_end;
 2045|  10.8k|	}
 2046|       |
 2047|    557|	if (0) {
  ------------------
  |  Branch (2047:6): [Folded, False: 557]
  ------------------
 2048|  10.6k|fcall_end:
 2049|       |
 2050|  10.6k|		zend_vm_stack_free_args(call);
 2051|  10.6k|		if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|  10.6k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 10.6k]
  |  |  ------------------
  ------------------
 2052|      5|			zend_free_extra_named_params(call->extra_named_params);
 2053|      5|		}
 2054|       |
 2055|  10.6k|		if (!0) {
  ------------------
  |  Branch (2055:7): [True: 10.6k, Folded]
  ------------------
 2056|  10.6k|			i_zval_ptr_dtor(ret);
 2057|  10.6k|		}
 2058|  10.6k|	}
 2059|       |
 2060|  11.1k|	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
  ------------------
  |  |  457|  11.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.91k, False: 9.28k]
  |  |  ------------------
  ------------------
 2061|  1.91k|		OBJ_RELEASE(Z_OBJ(call->This));
  ------------------
  |  |   44|  1.91k|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2062|  1.91k|	}
 2063|       |
 2064|  11.1k|	zend_vm_stack_free_call_frame(call);
 2065|  11.1k|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|  11.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.18k, False: 10.0k]
  |  |  ------------------
  ------------------
 2066|  1.18k|		zend_rethrow_exception(execute_data);
 2067|  1.18k|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|  1.18k|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|  1.18k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|  1.18k|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.18k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|  1.18k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2067:3): [True: 0, False: 1.18k]
  |  Branch (2067:3): [True: 1.18k, False: 0]
  ------------------
 2068|  1.18k|	}
 2069|  11.1k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(opline + 1);
  ------------------
  |  | 5777|  11.1k|	CHECK_SYMBOL_TABLES() \
  |  | 5778|  11.1k|	OPLINE = new_op
  |  |  ------------------
  |  |  |  |  423|  10.0k|# define OPLINE opline
  |  |  ------------------
  ------------------
 2070|  10.0k|	ZEND_VM_CONTINUE();
  ------------------
  |  |  405|  10.0k|# define ZEND_VM_CONTINUE()      return opline
  ------------------
 2071|  11.1k|}
zend_execute.c:ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER:
 2074|  9.45k|{
 2075|  9.45k|	USE_OPLINE
 2076|  9.45k|	zend_execute_data *call = EX(call);
  ------------------
  |  |  730|  9.45k|#define EX(element) 			((execute_data)->element)
  ------------------
 2077|  9.45k|	zend_function *fbc = call->func;
 2078|  9.45k|	zval *ret;
 2079|  9.45k|	zval retval;
 2080|       |
 2081|  9.45k|	SAVE_OPLINE();
  ------------------
  |  |  428|  9.45k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  9.45k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2082|  9.45k|	EX(call) = call->prev_execute_data;
  ------------------
  |  |  730|  9.45k|#define EX(element) 			((execute_data)->element)
  ------------------
 2083|       |
 2084|  9.45k|	const uint32_t no_discard = 1 ? 0 : ZEND_ACC_NODISCARD;
  ------------------
  |  |  410|  9.45k|#define ZEND_ACC_NODISCARD               (1 << 29) /*     |  X  |     |     */
  ------------------
  |  Branch (2084:30): [True: 9.45k, Folded]
  ------------------
 2085|       |
 2086|  9.45k|	if (UNEXPECTED(fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard))) {
  ------------------
  |  |  457|  9.45k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 9.44k]
  |  |  ------------------
  ------------------
 2087|      2|		if (fbc->common.fn_flags & ZEND_ACC_DEPRECATED) {
  ------------------
  |  |  258|      2|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (2087:7): [True: 2, False: 0]
  ------------------
 2088|      2|			zend_deprecated_function(fbc);
 2089|      2|		}
 2090|      2|		if ((fbc->common.fn_flags & no_discard) && EG(exception) == NULL) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2090:7): [True: 0, False: 2]
  |  Branch (2090:46): [True: 0, False: 0]
  ------------------
 2091|      0|			zend_nodiscard_function(fbc);
 2092|      0|		}
 2093|      2|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2094|      0|			if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2095|      0|				OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2096|      0|			}
 2097|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2098|      0|			if (!1) {
  ------------------
  |  Branch (2098:8): [Folded, False: 0]
  ------------------
 2099|      0|				ret = &retval;
 2100|      0|				ZVAL_UNDEF(ret);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2101|      0|			}
 2102|      0|			goto fcall_end;
 2103|      0|		}
 2104|      2|	}
 2105|       |
 2106|  9.45k|	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
  ------------------
  |  |  456|  9.45k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 311, False: 9.13k]
  |  |  ------------------
  ------------------
 2107|    311|		ret = NULL;
 2108|    311|		if (1) {
  ------------------
  |  Branch (2108:7): [True: 311, Folded]
  ------------------
 2109|    311|			ret = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    311|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    311|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 2110|    311|		}
 2111|       |
 2112|    311|		call->prev_execute_data = execute_data;
 2113|    311|		execute_data = call;
 2114|    311|		i_init_func_execute_data(&fbc->op_array, ret, 1 EXECUTE_DATA_CC);
  ------------------
  |  |   89|    311|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    311|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2115|       |
 2116|    311|		if (EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|    311|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 311]
  |  |  ------------------
  ------------------
 2117|      0|			LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2118|       |
 2119|       |
 2120|       |
 2121|       |
 2122|      0|			ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 2123|    311|		} else {
 2124|    311|			SAVE_OPLINE_EX();
 2125|       |
 2126|       |
 2127|    311|			execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|    311|#define EX(element) 			((execute_data)->element)
  ------------------
 2128|    311|			LOAD_OPLINE();
  ------------------
  |  |  425|    311|# define LOAD_OPLINE() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|    311|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2129|    311|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
  ------------------
  |  |  703|    311|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|    311|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|    311|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|    311|		call_info |= (flag); \
  |  |  |  |  697|    311|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 311]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|    311|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 311]
  |  |  ------------------
  ------------------
 2130|    311|			zend_execute_ex(call);
 2131|    311|		}
 2132|  9.13k|	} else {
 2133|  9.13k|		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|  9.13k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2133:3): [True: 0, False: 9.13k]
  |  Branch (2133:3): [True: 9.13k, False: 0]
  ------------------
 2134|  9.13k|		if (0) {
  ------------------
  |  Branch (2134:7): [Folded, False: 9.13k]
  ------------------
 2135|      0|			ret = NULL;
 2136|      0|		}
 2137|       |
 2138|  9.13k|		call->prev_execute_data = execute_data;
 2139|  9.13k|		EG(current_execute_data) = call;
  ------------------
  |  |   45|  9.13k|# define EG(v) (executor_globals.v)
  ------------------
 2140|       |
 2141|  9.13k|#if ZEND_DEBUG
 2142|  9.13k|		bool should_throw = zend_internal_call_should_throw(fbc, call);
 2143|  9.13k|#endif
 2144|       |
 2145|  9.13k|		ret = 1 ? EX_VAR(opline->result.var) : &retval;
  ------------------
  |  |  755|  9.13k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  9.13k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (2145:9): [True: 9.13k, Folded]
  ------------------
 2146|  9.13k|		ZVAL_NULL(ret);
  ------------------
  |  | 1059|  9.13k|#define ZVAL_NULL(z) do {				\
  |  | 1060|  9.13k|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  9.13k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  9.13k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  9.13k|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  9.13k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 9.13k]
  |  |  ------------------
  ------------------
 2147|       |
 2148|       |
 2149|  9.13k|		if (!zend_execute_internal) {
  ------------------
  |  Branch (2149:7): [True: 0, False: 9.13k]
  ------------------
 2150|       |			/* saves one function call if zend_execute_internal is not used */
 2151|      0|			fbc->internal_function.handler(call, ret);
 2152|  9.13k|		} else {
 2153|  9.13k|			zend_execute_internal(call, ret);
 2154|  9.13k|		}
 2155|       |
 2156|  9.13k|#if ZEND_DEBUG
 2157|  9.13k|		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |   45|  18.2k|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && call->func && !(call->func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
  ------------------
  |  |  385|  9.05k|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (2157:7): [True: 9.05k, False: 81]
  |  Branch (2157:25): [True: 9.05k, False: 3]
  |  Branch (2157:39): [True: 9.03k, False: 16]
  ------------------
 2158|  9.03k|			if (should_throw) {
  ------------------
  |  Branch (2158:8): [True: 0, False: 9.03k]
  ------------------
 2159|      0|				zend_internal_call_arginfo_violation(call->func);
 2160|      0|			}
 2161|  9.03k|			if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|  9.03k|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (2161:8): [True: 9.03k, False: 2]
  ------------------
 2162|  9.03k|				bool result = zend_verify_internal_return_type(call->func, ret);
 2163|  9.03k|				ZEND_ASSERT(result);
  ------------------
  |  |  112|  9.03k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2163:5): [True: 0, False: 9.03k]
  |  Branch (2163:5): [True: 9.03k, False: 0]
  ------------------
 2164|  9.03k|			}
 2165|  9.03k|			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  112|  9.03k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2165:4): [True: 0, False: 9.03k]
  |  Branch (2165:4): [True: 0, False: 9.03k]
  |  Branch (2165:4): [True: 0, False: 9.03k]
  |  Branch (2165:4): [True: 9.03k, False: 0]
  ------------------
 2166|  9.03k|				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
 2167|  9.03k|			zend_verify_internal_func_info(call->func, ret);
 2168|  9.03k|			ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
  ------------------
  |  |  112|  9.03k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2168:4): [True: 9.03k, False: 0]
  |  Branch (2168:4): [True: 0, False: 0]
  |  Branch (2168:4): [True: 9.02k, False: 10]
  |  Branch (2168:4): [True: 10, False: 0]
  ------------------
 2169|  9.03k|					|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
 2170|  9.03k|		}
 2171|  9.13k|		ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret));
  ------------------
  |  |  112|  9.13k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2171:3): [True: 9.13k, False: 0]
  |  Branch (2171:3): [True: 0, False: 0]
  |  Branch (2171:3): [True: 57, False: 9.08k]
  |  Branch (2171:3): [True: 9.08k, False: 0]
  ------------------
 2172|  9.13k|#endif
 2173|       |
 2174|       |
 2175|  9.13k|		ZEND_VM_FCALL_INTERRUPT_CHECK(call);
  ------------------
  |  | 4336|  9.11k|#define ZEND_VM_FCALL_INTERRUPT_CHECK(call) do { \
  |  | 4337|  9.11k|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  ------------------
  |  |  |  |  457|  9.11k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 9.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4338|      0|			zend_fcall_interrupt(call); \
  |  | 4339|      0|		} \
  |  | 4340|  9.11k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (4340:11): [Folded, False: 9.11k]
  |  |  ------------------
  ------------------
 2176|       |
 2177|  9.11k|		EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|  9.11k|# define EG(v) (executor_globals.v)
  ------------------
 2178|       |
 2179|  9.11k|		goto fcall_end;
 2180|  9.13k|	}
 2181|       |
 2182|    311|	if (0) {
  ------------------
  |  Branch (2182:6): [Folded, False: 311]
  ------------------
 2183|  9.11k|fcall_end:
 2184|       |
 2185|  9.11k|		zend_vm_stack_free_args(call);
 2186|  9.11k|		if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|  9.11k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9.11k]
  |  |  ------------------
  ------------------
 2187|      0|			zend_free_extra_named_params(call->extra_named_params);
 2188|      0|		}
 2189|       |
 2190|  9.11k|		if (!1) {
  ------------------
  |  Branch (2190:7): [Folded, False: 9.11k]
  ------------------
 2191|      0|			i_zval_ptr_dtor(ret);
 2192|      0|		}
 2193|  9.11k|	}
 2194|       |
 2195|  9.42k|	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
  ------------------
  |  |  457|  9.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 311, False: 9.11k]
  |  |  ------------------
  ------------------
 2196|    311|		OBJ_RELEASE(Z_OBJ(call->This));
  ------------------
  |  |   44|    311|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 2197|    311|	}
 2198|       |
 2199|  9.42k|	zend_vm_stack_free_call_frame(call);
 2200|  9.42k|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|  9.42k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 85, False: 9.34k]
  |  |  ------------------
  ------------------
 2201|     85|		zend_rethrow_exception(execute_data);
 2202|     85|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|     85|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     85|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     85|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     85|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     85|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2202:3): [True: 0, False: 85]
  |  Branch (2202:3): [True: 85, False: 0]
  ------------------
 2203|     85|	}
 2204|  9.42k|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(opline + 1);
  ------------------
  |  | 5777|  9.42k|	CHECK_SYMBOL_TABLES() \
  |  | 5778|  9.42k|	OPLINE = new_op
  |  |  ------------------
  |  |  |  |  423|  9.34k|# define OPLINE opline
  |  |  ------------------
  ------------------
 2205|  9.34k|	ZEND_VM_CONTINUE();
  ------------------
  |  |  405|  9.34k|# define ZEND_VM_CONTINUE()      return opline
  ------------------
 2206|  9.42k|}
zend_execute.c:ZEND_INIT_FCALL_SPEC_CONST_HANDLER:
 4179|  18.0k|{
 4180|  18.0k|	USE_OPLINE
 4181|  18.0k|	zval *fname;
 4182|  18.0k|	zval *func;
 4183|  18.0k|	zend_function *fbc;
 4184|  18.0k|	zend_execute_data *call;
 4185|       |
 4186|  18.0k|	fbc = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|  18.0k|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|  18.0k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4187|  18.0k|	if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|  18.0k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3.40k, False: 14.6k]
  |  |  ------------------
  ------------------
 4188|  3.40k|		fname = (zval*)RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|  3.40k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4189|  3.40k|		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(fname));
  ------------------
  |  |   45|  3.40k|# define EG(v) (executor_globals.v)
  ------------------
              		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(fname));
  ------------------
  |  |  982|  3.40k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  3.40k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4190|  3.40k|		ZEND_ASSERT(func != NULL && "Function existence must be checked at compile time");
  ------------------
  |  |  112|  3.40k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4190:3): [True: 0, False: 3.40k]
  |  Branch (4190:3): [True: 0, False: 0]
  |  Branch (4190:3): [True: 3.40k, False: 0]
  |  Branch (4190:3): [True: 3.40k, False: 0]
  ------------------
 4191|  3.40k|		fbc = Z_FUNC_P(func);
  ------------------
  |  | 1050|  3.40k|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|  3.40k|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 4192|  3.40k|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|  6.80k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 437, False: 2.96k]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|    874|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 344, False: 93]
  |  |  |  Branch (457:52): [True: 0, False: 437]
  |  |  ------------------
  ------------------
 4193|    344|			init_func_run_time_cache(&fbc->op_array);
 4194|    344|		}
 4195|  3.40k|		CACHE_PTR(opline->result.num, fbc);
  ------------------
  |  |  529|  3.40k|#define CACHE_PTR(num, ptr) do { \
  |  |  530|  3.40k|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|  3.40k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|  3.40k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 3.40k]
  |  |  ------------------
  ------------------
 4196|  3.40k|	}
 4197|       |
 4198|  18.0k|	call = _zend_vm_stack_push_call_frame_ex(
  ------------------
  |  | 5742|  18.0k|# define _zend_vm_stack_push_call_frame_ex zend_vm_stack_push_call_frame_ex
  ------------------
 4199|  18.0k|		opline->op1.num, ZEND_CALL_NESTED_FUNCTION,
  ------------------
  |  |  681|  18.0k|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|  18.0k|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|  18.0k|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
 4200|  18.0k|		fbc, opline->extended_value, NULL);
 4201|  18.0k|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|  18.0k|#define EX(element) 			((execute_data)->element)
  ------------------
 4202|  18.0k|	EX(call) = call;
  ------------------
  |  |  730|  18.0k|#define EX(element) 			((execute_data)->element)
  ------------------
 4203|       |
 4204|  18.0k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  18.0k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  18.0k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  18.0k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 18.0k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  18.0k|	} else { \
  |  |  |  | 5761|  18.0k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  18.0k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  18.0k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  18.0k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  18.0k|	} \
  |  |  |  | 5764|  18.0k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  18.0k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4204:2): [True: 0, False: 18.0k]
  |  Branch (4204:2): [True: 18.0k, False: 0]
  ------------------
 4205|  18.0k|}
zend_execute.c:ZEND_RETURN_SPEC_CONST_HANDLER:
 4737|  30.2k|{
 4738|  30.2k|	USE_OPLINE
 4739|  30.2k|	zval *retval_ptr;
 4740|  30.2k|	zval *return_value;
 4741|       |
 4742|       |
 4743|  30.2k|	retval_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  30.2k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4744|  30.2k|	return_value = EX(return_value);
  ------------------
  |  |  730|  30.2k|#define EX(element) 			((execute_data)->element)
  ------------------
 4745|       |
 4746|       |
 4747|  30.2k|	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  864|  30.2k|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|  60.5k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4747:6): [Folded, False: 30.2k]
  ------------------
 4748|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4749|      0|		retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4750|      0|		if (return_value) {
  ------------------
  |  Branch (4750:7): [True: 0, False: 0]
  ------------------
 4751|      0|			ZVAL_NULL(return_value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4752|      0|		}
 4753|  30.2k|	} else if (!return_value) {
  ------------------
  |  Branch (4753:13): [True: 29.3k, False: 960]
  ------------------
 4754|  29.3k|		if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|  29.3k|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|  29.3k|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|  29.3k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4754:7): [Folded, False: 29.3k]
  ------------------
 4755|      0|			if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (4755:38): [True: 0, False: 0]
  ------------------
 4756|      0|				SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4757|      0|				rc_dtor_func(Z_COUNTED_P(retval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 4758|      0|			}
 4759|      0|		}
 4760|  29.3k|	} else {
 4761|    960|		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|    960|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|    960|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|    960|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4761:7): [True: 960, Folded]
  ------------------
 4762|    960|			ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|    960|	do {												\
  |  | 1417|    960|		zval *_z1 = (z);								\
  |  | 1418|    960|		const zval *_z2 = (v);							\
  |  | 1419|    960|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    960|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    960|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    960|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    960|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    960|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    960|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    960|	do {												\
  |  |  |  | 1408|    960|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    960|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    960|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    960|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    960|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    960|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    960|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 960]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    960|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 960]
  |  |  ------------------
  ------------------
 4763|    960|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    960|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    960|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (4763:8): [True: 960, Folded]
  ------------------
 4764|    960|				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
  ------------------
  |  |  457|    960|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 31, False: 929]
  |  |  ------------------
  ------------------
 4765|     31|					Z_ADDREF_P(return_value);
  ------------------
  |  | 1277|     31|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4766|     31|				}
 4767|    960|			}
 4768|    960|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (4768:14): [Folded, False: 0]
  ------------------
 4769|      0|			do {
 4770|      0|				if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4771|      0|					if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4772|      0|						if (EXPECTED(!(EX_CALL_INFO() & (ZEND_CALL_CODE|ZEND_CALL_OBSERVED)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4773|      0|							zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 4774|      0|							ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4775|      0|							if (GC_MAY_LEAK(ref)) {
  ------------------
  |  |   84|      0|	((GC_TYPE_INFO(ref) & \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  |  Branch (84:2): [True: 0, False: 0]
  |  |  ------------------
  |  |   85|      0|		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  759|      0|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |               		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
 4776|      0|								SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4777|      0|								gc_possible_root(ref);
 4778|      0|							}
 4779|      0|							ZVAL_NULL(retval_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4780|      0|							break;
 4781|      0|						} else {
 4782|      0|							Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4783|      0|						}
 4784|      0|					} else {
 4785|      0|						retval_ptr = Z_REFVAL_P(retval_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4786|      0|						if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4787|      0|							Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4788|      0|						}
 4789|      0|					}
 4790|      0|				}
 4791|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4792|      0|			} while (0);
  ------------------
  |  Branch (4792:13): [Folded, False: 0]
  ------------------
 4793|      0|		} else /* if (IS_CONST == IS_VAR) */ {
 4794|      0|			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4795|      0|				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 4796|       |
 4797|      0|				retval_ptr = Z_REFVAL_P(retval_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4798|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4799|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4800|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4801|      0|				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4802|      0|					Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4803|      0|				}
 4804|      0|			} else {
 4805|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4806|      0|			}
 4807|      0|		}
 4808|    960|	}
 4809|       |
 4810|       |
 4811|       |
 4812|       |
 4813|       |
 4814|       |
 4815|  30.2k|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|  30.2k|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 4816|  30.2k|}
zend_execute.c:zend_leave_helper_SPEC:
 1152|  33.7k|{
 1153|  33.7k|	zend_execute_data *old_execute_data;
 1154|  33.7k|	uint32_t call_info = EX_CALL_INFO();
  ------------------
  |  |  732|  33.7k|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|  33.7k|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.7k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1155|       |#if ZEND_VM_KIND != ZEND_VM_KIND_TAILCALL
 1156|       |	/* zend_leave_helper may be called with opline=call_leave_op in TAILCALL VM */
 1157|       |	SAVE_OPLINE();
 1158|       |#endif
 1159|       |
 1160|  33.7k|	if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP|ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED|ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) == 0)) {
  ------------------
  |  |  456|  33.7k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 33.7k]
  |  |  ------------------
  ------------------
 1161|      0|		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1162|      0|		i_free_compiled_variables(execute_data);
 1163|       |
 1164|       |#ifdef ZEND_PREFER_RELOAD
 1165|       |		call_info = EX_CALL_INFO();
 1166|       |#endif
 1167|      0|		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1168|      0|			OBJ_RELEASE(Z_OBJ(execute_data->This));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1169|      0|		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1170|      0|			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1171|      0|		}
 1172|      0|		EG(vm_stack_top) = (zval*)execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1173|      0|		execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1174|       |
 1175|      0|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1176|      0|			zend_rethrow_exception(execute_data);
 1177|      0|			HANDLE_EXCEPTION_LEAVE();
  ------------------
  |  |  432|      0|#define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1177:4): [True: 0, False: 0]
  |  Branch (1177:4): [True: 0, False: 0]
  ------------------
 1178|      0|		}
 1179|       |
 1180|      0|		LOAD_NEXT_OPLINE();
  ------------------
  |  |  427|      0|# define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1181|      0|		ZEND_VM_LEAVE();
  ------------------
  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 1182|  33.7k|	} else if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) {
  ------------------
  |  |  456|  33.7k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 33.7k]
  |  |  ------------------
  ------------------
 1183|      0|		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1184|      0|		i_free_compiled_variables(execute_data);
 1185|       |
 1186|       |#ifdef ZEND_PREFER_RELOAD
 1187|       |		call_info = EX_CALL_INFO();
 1188|       |#endif
 1189|      0|		if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1190|      0|			zend_clean_and_cache_symbol_table(EX(symbol_table));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1191|      0|		}
 1192|       |
 1193|      0|		if (UNEXPECTED(call_info & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1194|      0|			zend_free_extra_named_params(EX(extra_named_params));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1195|      0|		}
 1196|       |
 1197|       |		/* Free extra args before releasing the closure,
 1198|       |		 * as that may free the op_array. */
 1199|      0|		zend_vm_stack_free_extra_args_ex(call_info, execute_data);
 1200|       |
 1201|      0|		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1202|      0|			OBJ_RELEASE(Z_OBJ(execute_data->This));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1203|      0|		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1204|      0|			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1205|      0|		}
 1206|       |
 1207|      0|		old_execute_data = execute_data;
 1208|      0|		execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1209|      0|		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
 1210|       |
 1211|      0|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1212|      0|			zend_rethrow_exception(execute_data);
 1213|      0|			HANDLE_EXCEPTION_LEAVE();
  ------------------
  |  |  432|      0|#define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1213:4): [True: 0, False: 0]
  |  Branch (1213:4): [True: 0, False: 0]
  ------------------
 1214|      0|		}
 1215|       |
 1216|      0|		LOAD_NEXT_OPLINE();
  ------------------
  |  |  427|      0|# define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1217|      0|		ZEND_VM_LEAVE();
  ------------------
  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 1218|  33.7k|	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
  ------------------
  |  |  456|  33.7k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 33.7k]
  |  |  ------------------
  ------------------
 1219|      0|		if (EX(func)->op_array.last_var > 0) {
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1219:7): [True: 0, False: 0]
  ------------------
 1220|      0|			zend_detach_symbol_table(execute_data);
 1221|      0|			call_info |= ZEND_CALL_NEEDS_REATTACH;
  ------------------
  |  |  678|      0|#define ZEND_CALL_NEEDS_REATTACH     (1 << 30)
  ------------------
 1222|      0|		}
 1223|      0|		zend_destroy_static_vars(&EX(func)->op_array);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1224|      0|		destroy_op_array(&EX(func)->op_array);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1225|      0|		efree_size(EX(func), sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1226|      0|		old_execute_data = execute_data;
 1227|      0|		execute_data = EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		execute_data = EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 1228|      0|		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
 1229|       |
 1230|      0|		if (call_info & ZEND_CALL_NEEDS_REATTACH) {
  ------------------
  |  |  678|      0|#define ZEND_CALL_NEEDS_REATTACH     (1 << 30)
  ------------------
  |  Branch (1230:7): [True: 0, False: 0]
  ------------------
 1231|      0|			if (EX(func)->op_array.last_var > 0) {
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1231:8): [True: 0, False: 0]
  ------------------
 1232|      0|				zend_attach_symbol_table(execute_data);
 1233|      0|			} else {
 1234|      0|				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_NEEDS_REATTACH);
  ------------------
  |  |  703|      0|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      0|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      0|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      0|		call_info |= (flag); \
  |  |  |  |  697|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1235|      0|			}
 1236|      0|		}
 1237|      0|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1238|      0|			zend_rethrow_exception(execute_data);
 1239|      0|			HANDLE_EXCEPTION_LEAVE();
  ------------------
  |  |  432|      0|#define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1239:4): [True: 0, False: 0]
  |  Branch (1239:4): [True: 0, False: 0]
  ------------------
 1240|      0|		}
 1241|       |
 1242|      0|		LOAD_NEXT_OPLINE();
  ------------------
  |  |  427|      0|# define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1243|      0|		ZEND_VM_LEAVE();
  ------------------
  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 1244|  33.7k|	} else {
 1245|  33.7k|		if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) {
  ------------------
  |  |  456|  33.7k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3.14k, False: 30.6k]
  |  |  ------------------
  ------------------
 1246|  3.14k|			EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|  3.14k|# define EG(v) (executor_globals.v)
  ------------------
              			EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|  3.14k|#define EX(element) 			((execute_data)->element)
  ------------------
 1247|  3.14k|			i_free_compiled_variables(execute_data);
 1248|       |#ifdef ZEND_PREFER_RELOAD
 1249|       |			call_info = EX_CALL_INFO();
 1250|       |#endif
 1251|  3.14k|			if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_HAS_EXTRA_NAMED_PARAMS))) {
  ------------------
  |  |  457|  3.14k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 817, False: 2.32k]
  |  |  ------------------
  ------------------
 1252|    817|				if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  457|    817|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 115, False: 702]
  |  |  ------------------
  ------------------
 1253|    115|					zend_clean_and_cache_symbol_table(EX(symbol_table));
  ------------------
  |  |  730|    115|#define EX(element) 			((execute_data)->element)
  ------------------
 1254|    115|				}
 1255|    817|				zend_vm_stack_free_extra_args_ex(call_info, execute_data);
 1256|    817|				if (UNEXPECTED(call_info & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|    817|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 816]
  |  |  ------------------
  ------------------
 1257|      1|					zend_free_extra_named_params(EX(extra_named_params));
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 1258|      1|				}
 1259|    817|			}
 1260|  3.14k|			if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
  ------------------
  |  |  457|  3.14k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 470, False: 2.67k]
  |  |  ------------------
  ------------------
 1261|    470|				OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
  ------------------
  |  |   44|    470|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1262|    470|			}
 1263|  3.14k|			ZEND_VM_RETURN();
  ------------------
  |  |  406|  3.14k|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|  3.14k|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 1264|  30.6k|		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
 1265|  30.6k|			zend_array *symbol_table = EX(symbol_table);
  ------------------
  |  |  730|  30.6k|#define EX(element) 			((execute_data)->element)
  ------------------
 1266|       |
 1267|  30.6k|			if (EX(func)->op_array.last_var > 0) {
  ------------------
  |  |  730|  30.6k|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (1267:8): [True: 2.21k, False: 28.3k]
  ------------------
 1268|  2.21k|				zend_detach_symbol_table(execute_data);
 1269|  2.21k|				call_info |= ZEND_CALL_NEEDS_REATTACH;
  ------------------
  |  |  678|  2.21k|#define ZEND_CALL_NEEDS_REATTACH     (1 << 30)
  ------------------
 1270|  2.21k|			}
 1271|  30.6k|			if (call_info & ZEND_CALL_NEEDS_REATTACH) {
  ------------------
  |  |  678|  30.6k|#define ZEND_CALL_NEEDS_REATTACH     (1 << 30)
  ------------------
  |  Branch (1271:8): [True: 2.21k, False: 28.3k]
  ------------------
 1272|  2.21k|				old_execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|  2.21k|#define EX(element) 			((execute_data)->element)
  ------------------
 1273|  2.21k|				while (old_execute_data) {
  ------------------
  |  Branch (1273:12): [True: 2, False: 2.21k]
  ------------------
 1274|      2|					if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  687|      2|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              					if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
  ------------------
  |  |  666|      2|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (1274:10): [True: 2, False: 0]
  |  Branch (1274:36): [True: 2, False: 0]
  ------------------
 1275|      2|						if (old_execute_data->symbol_table == symbol_table) {
  ------------------
  |  Branch (1275:11): [True: 2, False: 0]
  ------------------
 1276|      2|							if (old_execute_data->func->op_array.last_var > 0) {
  ------------------
  |  Branch (1276:12): [True: 1, False: 1]
  ------------------
 1277|      1|								zend_attach_symbol_table(old_execute_data);
 1278|      1|							} else {
 1279|      1|								ZEND_ADD_CALL_FLAG(old_execute_data, ZEND_CALL_NEEDS_REATTACH);
  ------------------
  |  |  703|      1|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      1|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      1|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      1|		call_info |= (flag); \
  |  |  |  |  697|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1280|      1|							}
 1281|      2|						}
 1282|      2|						break;
 1283|      2|					}
 1284|      0|					old_execute_data = old_execute_data->prev_execute_data;
 1285|      0|				}
 1286|  2.21k|			}
 1287|  30.6k|			EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|  30.6k|# define EG(v) (executor_globals.v)
  ------------------
              			EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|  30.6k|#define EX(element) 			((execute_data)->element)
  ------------------
 1288|  30.6k|			ZEND_VM_RETURN();
  ------------------
  |  |  406|  30.6k|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|  30.6k|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 1289|  30.6k|		}
 1290|  33.7k|	}
 1291|  33.7k|}
zend_execute.c:ZEND_RETURN_SPEC_TMP_HANDLER:
17110|     87|{
17111|     87|	USE_OPLINE
17112|     87|	zval *retval_ptr;
17113|     87|	zval *return_value;
17114|       |
17115|       |
17116|     87|	retval_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     87|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     87|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17117|     87|	return_value = EX(return_value);
  ------------------
  |  |  730|     87|#define EX(element) 			((execute_data)->element)
  ------------------
17118|       |
17119|       |
17120|     87|	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  865|     87|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    174|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17120:6): [Folded, False: 87]
  ------------------
17121|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17122|      0|		retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17123|      0|		if (return_value) {
  ------------------
  |  Branch (17123:7): [True: 0, False: 0]
  ------------------
17124|      0|			ZVAL_NULL(return_value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17125|      0|		}
17126|     87|	} else if (!return_value) {
  ------------------
  |  Branch (17126:13): [True: 7, False: 80]
  ------------------
17127|      7|		if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      7|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (17127:7): [True: 7, Folded]
  ------------------
17128|      7|			if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
  ------------------
  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     14|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (17128:38): [True: 0, False: 0]
  ------------------
17129|      0|				SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17130|      0|				rc_dtor_func(Z_COUNTED_P(retval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
17131|      0|			}
17132|      7|		}
17133|     80|	} else {
17134|     80|		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|     80|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|     80|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|     80|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (17134:7): [True: 80, Folded]
  ------------------
17135|     80|			ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|     80|	do {												\
  |  | 1417|     80|		zval *_z1 = (z);								\
  |  | 1418|     80|		const zval *_z2 = (v);							\
  |  | 1419|     80|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     80|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     80|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     80|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     80|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     80|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     80|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     80|	do {												\
  |  |  |  | 1408|     80|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     80|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     80|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     80|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     80|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     80|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     80|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 80]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     80|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 80]
  |  |  ------------------
  ------------------
17136|     80|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     80|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     80|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17136:8): [Folded, False: 80]
  ------------------
17137|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17138|      0|					Z_ADDREF_P(return_value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17139|      0|				}
17140|      0|			}
17141|     80|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17141:14): [Folded, False: 0]
  ------------------
17142|      0|			do {
17143|      0|				if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17144|      0|					if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17145|      0|						if (EXPECTED(!(EX_CALL_INFO() & (ZEND_CALL_CODE|ZEND_CALL_OBSERVED)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17146|      0|							zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
17147|      0|							ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17148|      0|							if (GC_MAY_LEAK(ref)) {
  ------------------
  |  |   84|      0|	((GC_TYPE_INFO(ref) & \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  |  Branch (84:2): [True: 0, False: 0]
  |  |  ------------------
  |  |   85|      0|		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  759|      0|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |               		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
17149|      0|								SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17150|      0|								gc_possible_root(ref);
17151|      0|							}
17152|      0|							ZVAL_NULL(retval_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17153|      0|							break;
17154|      0|						} else {
17155|      0|							Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17156|      0|						}
17157|      0|					} else {
17158|      0|						retval_ptr = Z_REFVAL_P(retval_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17159|      0|						if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17160|      0|							Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17161|      0|						}
17162|      0|					}
17163|      0|				}
17164|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17165|      0|			} while (0);
  ------------------
  |  Branch (17165:13): [Folded, False: 0]
  ------------------
17166|      0|		} else /* if (IS_TMP_VAR == IS_VAR) */ {
17167|      0|			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17168|      0|				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
17169|       |
17170|      0|				retval_ptr = Z_REFVAL_P(retval_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17171|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17172|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17173|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17174|      0|				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17175|      0|					Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17176|      0|				}
17177|      0|			} else {
17178|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17179|      0|			}
17180|      0|		}
17181|     80|	}
17182|       |
17183|       |
17184|       |
17185|       |
17186|       |
17187|       |
17188|     87|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     87|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
17189|     87|}
zend_execute.c:ZEND_RETURN_SPEC_CV_HANDLER:
39775|     64|{
39776|     64|	USE_OPLINE
39777|     64|	zval *retval_ptr;
39778|     64|	zval *return_value;
39779|       |
39780|       |
39781|     64|	retval_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     64|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     64|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39782|     64|	return_value = EX(return_value);
  ------------------
  |  |  730|     64|#define EX(element) 			((execute_data)->element)
  ------------------
39783|       |
39784|       |
39785|     64|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|     64|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    128|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
  ------------------
  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 56]
  |  |  ------------------
  ------------------
  |  Branch (39785:6): [True: 64, Folded]
  ------------------
39786|      8|		SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39787|      8|		retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      8|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39788|      8|		if (return_value) {
  ------------------
  |  Branch (39788:7): [True: 5, False: 3]
  ------------------
39789|      5|			ZVAL_NULL(return_value);
  ------------------
  |  | 1059|      5|#define ZVAL_NULL(z) do {				\
  |  | 1060|      5|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
39790|      5|		}
39791|     56|	} else if (!return_value) {
  ------------------
  |  Branch (39791:13): [True: 13, False: 43]
  ------------------
39792|     13|		if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|     13|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     13|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     13|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (39792:7): [Folded, False: 13]
  ------------------
39793|      0|			if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (39793:38): [True: 0, False: 0]
  ------------------
39794|      0|				SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39795|      0|				rc_dtor_func(Z_COUNTED_P(retval_ptr));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
39796|      0|			}
39797|      0|		}
39798|     43|	} else {
39799|     43|		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  867|     43|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|     43|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|     43|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (39799:7): [Folded, False: 43]
  ------------------
39800|      0|			ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39801|      0|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (39801:8): [Folded, False: 0]
  ------------------
39802|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39803|      0|					Z_ADDREF_P(return_value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
39804|      0|				}
39805|      0|			}
39806|     43|		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     43|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     43|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (39806:14): [True: 43, Folded]
  ------------------
39807|     43|			do {
39808|     43|				if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|     43|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|     43|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|     43|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|     43|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 19, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39809|     19|					if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 15, False: 4]
  |  |  ------------------
  ------------------
39810|     15|						if (EXPECTED(!(EX_CALL_INFO() & (ZEND_CALL_CODE|ZEND_CALL_OBSERVED)))) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 15, False: 0]
  |  |  ------------------
  ------------------
39811|     15|							zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
  ------------------
  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
39812|     15|							ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|     15|	do {												\
  |  | 1417|     15|		zval *_z1 = (z);								\
  |  | 1418|     15|		const zval *_z2 = (v);							\
  |  | 1419|     15|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     15|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     15|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     15|	do {												\
  |  |  |  | 1408|     15|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     15|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
39813|     15|							if (GC_MAY_LEAK(ref)) {
  ------------------
  |  |   84|     15|	((GC_TYPE_INFO(ref) & \
  |  |  ------------------
  |  |  |  |  775|     15|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |  |  Branch (84:2): [True: 13, False: 2]
  |  |  ------------------
  |  |   85|     15|		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  759|     15|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |               		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  799|     15|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               		(GC_INFO_MASK | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))) == 0)
  |  |  ------------------
  |  |  |  |  760|     15|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
39814|     13|								SAVE_OPLINE();
  ------------------
  |  |  428|     13|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39815|     13|								gc_possible_root(ref);
39816|     13|							}
39817|     15|							ZVAL_NULL(retval_ptr);
  ------------------
  |  | 1059|     15|#define ZVAL_NULL(z) do {				\
  |  | 1060|     15|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     15|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
39818|     15|							break;
39819|     15|						} else {
39820|      0|							Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
39821|      0|						}
39822|     15|					} else {
39823|      4|						retval_ptr = Z_REFVAL_P(retval_ptr);
  ------------------
  |  | 1033|      4|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      4|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39824|      4|						if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39825|      4|							Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
39826|      4|						}
39827|      4|					}
39828|     19|				}
39829|     28|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|     28|	do {												\
  |  | 1417|     28|		zval *_z1 = (z);								\
  |  | 1418|     28|		const zval *_z2 = (v);							\
  |  | 1419|     28|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     28|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     28|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     28|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     28|	do {												\
  |  |  |  | 1408|     28|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     28|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     28|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     28|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     28|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
39830|     28|			} while (0);
  ------------------
  |  Branch (39830:13): [Folded, False: 28]
  ------------------
39831|     43|		} else /* if (IS_CV == IS_VAR) */ {
39832|      0|			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39833|      0|				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
39834|       |
39835|      0|				retval_ptr = Z_REFVAL_P(retval_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39836|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39837|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39838|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39839|      0|				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39840|      0|					Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
39841|      0|				}
39842|      0|			} else {
39843|      0|				ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39844|      0|			}
39845|      0|		}
39846|     43|	}
39847|       |
39848|       |
39849|       |
39850|       |
39851|       |
39852|       |
39853|     64|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     64|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39854|     64|}
zend_execute.c:ZEND_RECV_SPEC_UNUSED_HANDLER:
 4329|    101|{
 4330|    101|	USE_OPLINE
 4331|    101|	uint32_t arg_num = opline->op1.num;
 4332|    101|	zval *param;
 4333|       |
 4334|    101|	if (UNEXPECTED(arg_num > EX_NUM_ARGS())) {
  ------------------
  |  |  457|    101|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 97]
  |  |  ------------------
  ------------------
 4335|      4|		ZEND_VM_TAIL_CALL(zend_missing_arg_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      4|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 4336|      4|	}
 4337|       |
 4338|     97|	param = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     97|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     97|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4339|       |
 4340|     97|	if (UNEXPECTED(!(opline->op2.num & (1u << Z_TYPE_P(param))))) {
  ------------------
  |  |  457|     97|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 48, False: 49]
  |  |  ------------------
  ------------------
 4341|     48|		ZEND_VM_DISPATCH_TO_HELPER(zend_verify_recv_arg_type_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX param));
  ------------------
  |  |  410|     48|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     48|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 4342|     48|	}
 4343|       |
 4344|     49|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     97|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     49|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     49|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 49]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     49|	} else { \
  |  |  |  | 5761|     49|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     49|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     49|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     49|	} \
  |  |  |  | 5764|     49|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     49|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4344:2): [True: 0, False: 49]
  |  Branch (4344:2): [True: 49, False: 0]
  ------------------
 4345|     49|}
zend_execute.c:zend_missing_arg_helper_SPEC:
 2799|      4|{
 2800|      4|	USE_OPLINE
 2801|       |
 2802|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2803|       |
 2804|      4|	zend_missing_arg_error(execute_data);
 2805|      4|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2805:2): [True: 0, False: 4]
  |  Branch (2805:2): [True: 4, False: 0]
  ------------------
 2806|      4|}
zend_execute.c:zend_verify_recv_arg_type_helper_SPEC:
 2809|     48|{
 2810|     48|	USE_OPLINE
 2811|       |
 2812|     48|	SAVE_OPLINE();
  ------------------
  |  |  428|     48|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     48|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2813|     48|	if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), opline->op1.num, op_1))) {
  ------------------
  |  |  457|     48|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 17, False: 31]
  |  |  ------------------
  ------------------
 2814|     17|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|     17|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     17|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     17|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     17|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2814:3): [True: 0, False: 17]
  |  Branch (2814:3): [True: 17, False: 0]
  ------------------
 2815|     17|	}
 2816|       |
 2817|     31|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     48|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     31|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     31|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 31]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     31|	} else { \
  |  |  |  | 5761|     31|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     31|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     31|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     31|	} \
  |  |  |  | 5764|     31|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     31|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2817:2): [True: 0, False: 31]
  |  Branch (2817:2): [True: 31, False: 0]
  ------------------
 2818|     31|}
zend_execute.c:ZEND_RECV_INIT_SPEC_CONST_HANDLER:
 4226|     51|{
 4227|     51|	USE_OPLINE
 4228|     51|	uint32_t arg_num;
 4229|     51|	zval *param;
 4230|       |
 4231|     55|	ZEND_VM_REPEATABLE_OPCODE
  ------------------
  |  | 5803|     55|	do {
  ------------------
 4232|       |
 4233|     55|	arg_num = opline->op1.num;
 4234|     55|	param = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     55|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     55|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4235|     55|	if (arg_num > EX_NUM_ARGS()) {
  ------------------
  |  |  734|     55|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|     55|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
  |  Branch (4235:6): [True: 38, False: 17]
  ------------------
 4236|     38|		zval *default_value = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     38|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4237|       |
 4238|     38|		if (Z_OPT_TYPE_P(default_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  949|     38|#define Z_OPT_TYPE_P(zval_p)		Z_OPT_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  948|     38|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     38|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|     38|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_OPT_TYPE_P(default_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|     38|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (4238:7): [True: 24, False: 14]
  ------------------
 4239|     24|			zval *cache_val = (zval*)CACHE_ADDR(Z_CACHE_SLOT_P(default_value));
  ------------------
  |  |  524|     24|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4240|       |
 4241|       |			/* we keep in cache only not refcounted values */
 4242|     24|			if (Z_TYPE_P(cache_val) != IS_UNDEF) {
  ------------------
  |  |  669|     24|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(cache_val) != IS_UNDEF) {
  ------------------
  |  |  606|     24|#define IS_UNDEF					0
  ------------------
  |  Branch (4242:8): [True: 0, False: 24]
  ------------------
 4243|      0|				ZVAL_COPY_VALUE(param, cache_val);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4244|     24|			} else {
 4245|     24|				SAVE_OPLINE();
  ------------------
  |  |  428|     24|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4246|     24|				ZVAL_COPY(param, default_value);
  ------------------
  |  | 1425|     24|	do {												\
  |  | 1426|     24|		zval *_z1 = (z);								\
  |  | 1427|     24|		const zval *_z2 = (v);							\
  |  | 1428|     24|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     24|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     24|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     24|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     24|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     24|	do {												\
  |  |  |  | 1408|     24|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     24|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     24|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     24|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     24|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     24|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     24|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     24|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 24, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     24|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     24|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     24|		}												\
  |  | 1434|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
 4247|     24|				zend_ast_evaluate_ctx ctx = {0};
 4248|     24|				if (UNEXPECTED(zval_update_constant_with_ctx(param, EX(func)->op_array.scope, &ctx) != SUCCESS)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 15, False: 9]
  |  |  ------------------
  ------------------
 4249|     15|					zval_ptr_dtor_nogc(param);
 4250|     15|					ZVAL_UNDEF(param);
  ------------------
  |  | 1055|     15|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     15|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     15|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 4251|     15|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|     15|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     15|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     15|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     15|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4251:6): [True: 0, False: 15]
  |  Branch (4251:6): [True: 15, False: 0]
  ------------------
 4252|     15|				}
 4253|      9|				if (!Z_REFCOUNTED_P(param) && !ctx.had_side_effects) {
  ------------------
  |  |  942|      9|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     18|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      9|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4253:9): [True: 5, False: 4]
  |  Branch (4253:35): [True: 5, False: 0]
  ------------------
 4254|      5|					ZVAL_COPY_VALUE(cache_val, param);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 4255|      5|				}
 4256|      9|			}
 4257|      9|			goto recv_init_check_type;
 4258|     24|		} else {
 4259|     14|			ZVAL_COPY(param, default_value);
  ------------------
  |  | 1425|     14|	do {												\
  |  | 1426|     14|		zval *_z1 = (z);								\
  |  | 1427|     14|		const zval *_z2 = (v);							\
  |  | 1428|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     14|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     14|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     14|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 4260|     14|		}
 4261|     38|	} else {
 4262|     26|recv_init_check_type:
 4263|     26|		if ((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0) {
  ------------------
  |  |  730|     26|#define EX(element) 			((execute_data)->element)
  ------------------
              		if ((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0) {
  ------------------
  |  |  244|     26|#define ZEND_ACC_HAS_TYPE_HINTS          (1 <<  8) /*  X  |  X  |     |     */
  ------------------
  |  Branch (4263:7): [True: 22, False: 4]
  ------------------
 4264|     22|			SAVE_OPLINE();
  ------------------
  |  |  428|     22|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     22|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4265|     22|			if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), arg_num, param))) {
  ------------------
  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 18]
  |  |  ------------------
  ------------------
 4266|      4|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4266:5): [True: 0, False: 4]
  |  Branch (4266:5): [True: 4, False: 0]
  ------------------
 4267|      4|			}
 4268|     22|		}
 4269|     26|	}
 4270|       |
 4271|     55|	ZEND_VM_REPEAT_OPCODE(ZEND_RECV_INIT);
  ------------------
  |  | 5805|     55|	} while (UNEXPECTED((++opline)->opcode == _opcode)); \
  |  |  ------------------
  |  |  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 4, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5806|     32|	OPLINE = opline; \
  |  |  ------------------
  |  |  |  |  423|     32|# define OPLINE opline
  |  |  ------------------
  |  | 5807|     51|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     51|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
 4272|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     32|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4272:2): [True: 0, False: 0]
  |  Branch (4272:2): [True: 0, False: 0]
  ------------------
 4273|      0|}
zend_execute.c:ZEND_SEND_VAL_SPEC_CONST_CONST_HANDLER:
 7750|      5|{
 7751|      5|	USE_OPLINE
 7752|      5|	zval *value, *arg;
 7753|       |
 7754|      5|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7754:6): [True: 5, Folded]
  ------------------
 7755|      5|		SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7756|      5|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7757|      5|		uint32_t arg_num;
 7758|      5|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      5|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7759|      5|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
 7760|       |
 7761|       |
 7762|      2|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7762:4): [True: 0, False: 2]
  |  Branch (7762:4): [True: 2, False: 0]
  ------------------
 7763|      2|		}
 7764|      5|	} else {
 7765|      0|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
 7766|      0|	}
 7767|       |
 7768|      3|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7769|      3|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|      3|	do {												\
  |  | 1417|      3|		zval *_z1 = (z);								\
  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 7770|      3|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7770:6): [True: 3, Folded]
  ------------------
 7771|      3|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 7772|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 7773|      0|		}
 7774|      3|	}
 7775|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7775:2): [True: 0, False: 3]
  |  Branch (7775:2): [True: 3, False: 0]
  ------------------
 7776|      3|}
zend_execute.c:ZEND_SEND_VAL_SPEC_CONST_UNUSED_HANDLER:
11264|  4.98k|{
11265|  4.98k|	USE_OPLINE
11266|  4.98k|	zval *value, *arg;
11267|       |
11268|  4.98k|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|  4.98k|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|  4.98k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11268:6): [Folded, False: 4.98k]
  ------------------
11269|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11270|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11271|      0|		uint32_t arg_num;
11272|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11273|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11274|       |
11275|       |
11276|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11276:4): [True: 0, False: 0]
  |  Branch (11276:4): [True: 0, False: 0]
  ------------------
11277|      0|		}
11278|  4.98k|	} else {
11279|  4.98k|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|  4.98k|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
11280|  4.98k|	}
11281|       |
11282|  4.98k|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  4.98k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11283|  4.98k|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|  4.98k|	do {												\
  |  | 1417|  4.98k|		zval *_z1 = (z);								\
  |  | 1418|  4.98k|		const zval *_z2 = (v);							\
  |  | 1419|  4.98k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  4.98k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  4.98k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  4.98k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  4.98k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.98k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  4.98k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  4.98k|	do {												\
  |  |  |  | 1408|  4.98k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  4.98k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  4.98k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  4.98k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  4.98k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  4.98k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  4.98k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4.98k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  4.98k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4.98k]
  |  |  ------------------
  ------------------
11284|  4.98k|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  4.98k|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  4.98k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11284:6): [True: 4.98k, Folded]
  ------------------
11285|  4.98k|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|  4.98k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3.00k, False: 1.97k]
  |  |  ------------------
  ------------------
11286|  3.00k|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|  3.00k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11287|  3.00k|		}
11288|  4.98k|	}
11289|  4.98k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  4.98k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  4.98k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  4.98k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4.98k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  4.98k|	} else { \
  |  |  |  | 5761|  4.98k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  4.98k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  4.98k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  4.98k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  4.98k|	} \
  |  |  |  | 5764|  4.98k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  4.98k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11289:2): [True: 0, False: 4.98k]
  |  Branch (11289:2): [True: 4.98k, False: 0]
  ------------------
11290|  4.98k|}
zend_execute.c:ZEND_SEND_VAL_SPEC_TMPVAR_UNUSED_HANDLER:
16486|  14.1k|{
16487|  14.1k|	USE_OPLINE
16488|  14.1k|	zval *value, *arg;
16489|       |
16490|  14.1k|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|  14.1k|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|  14.1k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16490:6): [Folded, False: 14.1k]
  ------------------
16491|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16492|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16493|      0|		uint32_t arg_num;
16494|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16495|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16496|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16497|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (16497:4): [True: 0, False: 0]
  |  Branch (16497:4): [True: 0, False: 0]
  ------------------
16498|      0|		}
16499|  14.1k|	} else {
16500|  14.1k|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|  14.1k|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
16501|  14.1k|	}
16502|       |
16503|  14.1k|	value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  14.1k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  14.1k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16504|  14.1k|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|  14.1k|	do {												\
  |  | 1417|  14.1k|		zval *_z1 = (z);								\
  |  | 1418|  14.1k|		const zval *_z2 = (v);							\
  |  | 1419|  14.1k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  14.1k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  14.1k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  14.1k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  14.1k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  14.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  14.1k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  14.1k|	do {												\
  |  |  |  | 1408|  14.1k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  14.1k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  14.1k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  14.1k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  14.1k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  14.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  14.1k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  14.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 14.1k]
  |  |  ------------------
  ------------------
16505|  14.1k|	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
  ------------------
  |  |  865|  14.1k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
  ------------------
  |  |  866|  14.1k|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
  ------------------
  |  |  864|  14.1k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16505:6): [Folded, False: 14.1k]
  ------------------
16506|      0|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16507|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
16508|      0|		}
16509|      0|	}
16510|  14.1k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  14.1k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  14.1k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  14.1k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 14.1k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  14.1k|	} else { \
  |  |  |  | 5761|  14.1k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  14.1k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  14.1k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  14.1k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  14.1k|	} \
  |  |  |  | 5764|  14.1k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  14.1k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16510:2): [True: 0, False: 14.1k]
  |  Branch (16510:2): [True: 14.1k, False: 0]
  ------------------
16511|  14.1k|}
zend_execute.c:ZEND_SEND_VAR_EX_SPEC_CV_CONST_HANDLER:
43992|      1|{
43993|      1|	USE_OPLINE
43994|      1|	zval *varptr, *arg;
43995|      1|	uint32_t arg_num;
43996|       |
43997|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43997:6): [True: 1, Folded]
  ------------------
43998|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43999|      1|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44000|      1|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44001|      1|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
44002|       |
44003|       |
44004|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (44004:4): [True: 0, False: 0]
  |  Branch (44004:4): [True: 0, False: 0]
  ------------------
44005|      0|		}
44006|      1|	} else {
44007|      0|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
44008|      0|		arg_num = opline->op2.num;
44009|      0|	}
44010|       |
44011|      1|	if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
44012|      1|		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1193|      1|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|      1|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44013|      0|			goto send_var_by_ref;
44014|      0|		}
44015|      1|	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44016|      0|send_var_by_ref:
44017|      0|		varptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44018|      0|		if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44019|      0|			Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
44020|      0|		} else {
44021|      0|			ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44022|      0|		}
44023|      0|		ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44024|       |
44025|       |
44026|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44026:3): [True: 0, False: 0]
  |  Branch (44026:3): [True: 0, False: 0]
  ------------------
44027|      0|	}
44028|       |
44029|      1|	varptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44030|      1|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44030:6): [True: 1, Folded]
  ------------------
44031|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44032|      1|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44033|      1|		ZVAL_NULL(arg);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
44034|      1|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44034:3): [True: 0, False: 0]
  |  Branch (44034:3): [True: 0, False: 0]
  ------------------
44035|      1|	}
44036|       |
44037|      0|	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (44037:6): [True: 0, Folded]
  ------------------
44038|      0|		ZVAL_COPY_DEREF(arg, varptr);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44039|      0|	} else /* if (IS_CV == IS_VAR) */ {
44040|      0|		if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44041|      0|			zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
44042|       |
44043|      0|			varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44044|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44045|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44046|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44047|      0|			} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44048|      0|				Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
44049|      0|			}
44050|      0|		} else {
44051|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44052|      0|		}
44053|      0|	}
44054|       |
44055|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44055:2): [True: 0, False: 0]
  |  Branch (44055:2): [True: 0, False: 0]
  ------------------
44056|      0|}
zend_execute.c:ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_HANDLER:
49293|      1|{
49294|      1|	USE_OPLINE
49295|      1|	zval *varptr, *arg;
49296|      1|	uint32_t arg_num;
49297|       |
49298|      1|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49298:6): [Folded, False: 1]
  ------------------
49299|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49300|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49301|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49302|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49303|       |
49304|       |
49305|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49305:4): [True: 0, False: 0]
  |  Branch (49305:4): [True: 0, False: 0]
  ------------------
49306|      0|		}
49307|      1|	} else {
49308|      1|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
49309|      1|		arg_num = opline->op2.num;
49310|      1|	}
49311|       |
49312|      1|	if (EXPECTED(0)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [Folded, False: 1]
  |  |  ------------------
  ------------------
49313|      0|		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1193|      0|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|      0|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49314|      0|			goto send_var_by_ref;
49315|      0|		}
49316|      1|	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      1|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      1|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      1|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
49317|      1|send_var_by_ref:
49318|      1|		varptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49319|      1|		if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49320|      0|			Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49321|      1|		} else {
49322|      1|			ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|      1|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      1|		zval *_z = (z);											\
  |  | 1218|      1|		zend_reference *_ref =									\
  |  | 1219|      1|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      1|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      1|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      1|		_ref->sources.ptr = NULL;									\
  |  | 1224|      1|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      1|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
49323|      1|		}
49324|      1|		ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|      1|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      1|		zval *__z = (z);										\
  |  | 1191|      1|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      1|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
49325|       |
49326|       |
49327|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49327:3): [True: 0, False: 1]
  |  Branch (49327:3): [True: 1, False: 0]
  ------------------
49328|      1|	}
49329|       |
49330|      0|	varptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49331|      0|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49331:6): [True: 0, Folded]
  ------------------
49332|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49333|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49334|      0|		ZVAL_NULL(arg);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49335|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49335:3): [True: 0, False: 0]
  |  Branch (49335:3): [True: 0, False: 0]
  ------------------
49336|      0|	}
49337|       |
49338|      0|	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49338:6): [True: 0, Folded]
  ------------------
49339|      0|		ZVAL_COPY_DEREF(arg, varptr);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49340|      0|	} else /* if (IS_CV == IS_VAR) */ {
49341|      0|		if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49342|      0|			zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
49343|       |
49344|      0|			varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49345|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49346|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49347|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49348|      0|			} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49349|      0|				Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49350|      0|			}
49351|      0|		} else {
49352|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49353|      0|		}
49354|      0|	}
49355|       |
49356|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49356:2): [True: 0, False: 0]
  |  Branch (49356:2): [True: 0, False: 0]
  ------------------
49357|      0|}
zend_execute.c:ZEND_SEND_VAR_EX_SPEC_CV_UNUSED_QUICK_HANDLER:
49360|    232|{
49361|    232|	USE_OPLINE
49362|    232|	zval *varptr, *arg;
49363|    232|	uint32_t arg_num;
49364|       |
49365|    232|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|    232|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|    232|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49365:6): [Folded, False: 232]
  ------------------
49366|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49367|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49368|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49369|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49370|       |
49371|       |
49372|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49372:4): [True: 0, False: 0]
  |  Branch (49372:4): [True: 0, False: 0]
  ------------------
49373|      0|		}
49374|    232|	} else {
49375|    232|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|    232|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
49376|    232|		arg_num = opline->op2.num;
49377|    232|	}
49378|       |
49379|    232|	if (EXPECTED(1)) {
  ------------------
  |  |  456|    232|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 232, Folded]
  |  |  ------------------
  ------------------
49380|    232|		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1193|    232|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|    232|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 32, False: 200]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49381|     32|			goto send_var_by_ref;
49382|     32|		}
49383|    232|	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49384|     32|send_var_by_ref:
49385|     32|		varptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     32|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     32|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49386|     32|		if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|     32|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     32|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     32|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49387|      1|			Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49388|     31|		} else {
49389|     31|			ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|     31|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|     31|		zval *_z = (z);											\
  |  | 1218|     31|		zend_reference *_ref =									\
  |  | 1219|     31|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|     31|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     31|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     31|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     31|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     31|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|     31|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|     31|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|     31|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     31|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     31|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     31|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     31|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     31|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|     31|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|     31|	do {												\
  |  |  |  | 1417|     31|		zval *_z1 = (z);								\
  |  |  |  | 1418|     31|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     31|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     31|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     31|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     31|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     31|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     31|	do {												\
  |  |  |  |  |  | 1408|     31|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     31|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     31|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     31|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     31|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     31|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|     31|		_ref->sources.ptr = NULL;									\
  |  | 1224|     31|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     31|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     31|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|     31|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     31|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     31|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     31|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     31|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     31|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     31|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 31]
  |  |  ------------------
  ------------------
49390|     31|		}
49391|     32|		ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|     32|#define ZVAL_REF(z, r) do {										\
  |  | 1190|     32|		zval *__z = (z);										\
  |  | 1191|     32|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|     32|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     32|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|     32|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     32|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     32|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     32|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     32|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     32|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     32|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
49392|       |
49393|       |
49394|     32|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     32|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     32|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     32|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     32|	} else { \
  |  |  |  | 5761|     32|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     32|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     32|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     32|	} \
  |  |  |  | 5764|     32|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     32|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49394:3): [True: 0, False: 32]
  |  Branch (49394:3): [True: 32, False: 0]
  ------------------
49395|     32|	}
49396|       |
49397|    200|	varptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    200|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    200|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49398|    200|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    200|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|    400|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  457|    200|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 197]
  |  |  ------------------
  ------------------
  |  Branch (49398:6): [True: 200, Folded]
  ------------------
49399|      3|		SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49400|      3|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      3|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49401|      3|		ZVAL_NULL(arg);
  ------------------
  |  | 1059|      3|#define ZVAL_NULL(z) do {				\
  |  | 1060|      3|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
49402|      3|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49402:3): [True: 0, False: 0]
  |  Branch (49402:3): [True: 0, False: 0]
  ------------------
49403|      3|	}
49404|       |
49405|    197|	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    197|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    197|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49405:6): [True: 197, Folded]
  ------------------
49406|    197|		ZVAL_COPY_DEREF(arg, varptr);
  ------------------
  |  | 1508|    197|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|    197|		zval *_z3 = (v);								\
  |  | 1510|    197|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|    197|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|    197|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|    197|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|    197|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 170, False: 27]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|    170|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|    170|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 10, False: 160]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|     10|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|     10|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     10|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|     10|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|     10|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     10|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     10|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     10|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 4, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      4|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      4|				}										\
  |  | 1516|    160|			} else {									\
  |  | 1517|    160|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|    160|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|    160|			}											\
  |  | 1519|    170|		}												\
  |  | 1520|    197|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|    197|	do {												\
  |  |  |  | 1417|    197|		zval *_z1 = (z);								\
  |  |  |  | 1418|    197|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    197|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    197|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    197|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    197|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    197|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    197|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    197|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    197|	do {												\
  |  |  |  |  |  | 1408|    197|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    197|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    197|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    197|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    197|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    197|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    197|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 197]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    197|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 197]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|    197|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 197]
  |  |  ------------------
  ------------------
49407|    197|	} else /* if (IS_CV == IS_VAR) */ {
49408|      0|		if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49409|      0|			zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
49410|       |
49411|      0|			varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49412|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49413|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49414|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49415|      0|			} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49416|      0|				Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49417|      0|			}
49418|      0|		} else {
49419|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49420|      0|		}
49421|      0|	}
49422|       |
49423|    197|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    197|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    197|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    197|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 197]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    197|	} else { \
  |  |  |  | 5761|    197|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    197|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    197|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    197|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    197|	} \
  |  |  |  | 5764|    197|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    197|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49423:2): [True: 0, False: 197]
  |  Branch (49423:2): [True: 197, False: 0]
  ------------------
49424|    197|}
zend_execute.c:ZEND_SEND_REF_SPEC_VAR_UNUSED_HANDLER:
29832|      4|{
29833|      4|	USE_OPLINE
29834|      4|	zval *varptr, *arg;
29835|       |
29836|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29837|      4|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29837:6): [Folded, False: 4]
  ------------------
29838|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
29839|      0|		uint32_t arg_num;
29840|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29841|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29842|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29843|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29843:4): [True: 0, False: 0]
  |  Branch (29843:4): [True: 0, False: 0]
  ------------------
29844|      0|		}
29845|      4|	} else {
29846|      4|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
29847|      4|	}
29848|       |
29849|      4|	varptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29850|      4|	if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|      4|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      4|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
29851|      0|		Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
29852|      4|	} else {
29853|      4|		ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|      4|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      4|		zval *_z = (z);											\
  |  | 1218|      4|		zend_reference *_ref =									\
  |  | 1219|      4|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      4|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      4|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      4|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      4|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      4|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      4|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      4|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      4|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      4|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      4|	do {												\
  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      4|		_ref->sources.ptr = NULL;									\
  |  | 1224|      4|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      4|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      4|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      4|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      4|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
29854|      4|	}
29855|      4|	ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|      4|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      4|		zval *__z = (z);										\
  |  | 1191|      4|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      4|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      4|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      4|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      4|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
29856|       |
29857|      4|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29858|      4|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      4|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      4|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29858:2): [True: 0, False: 4]
  |  Branch (29858:2): [True: 4, False: 0]
  ------------------
29859|      4|}
zend_execute.c:ZEND_SEND_REF_SPEC_CV_UNUSED_HANDLER:
49262|    430|{
49263|    430|	USE_OPLINE
49264|    430|	zval *varptr, *arg;
49265|       |
49266|    430|	SAVE_OPLINE();
  ------------------
  |  |  428|    430|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    430|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49267|    430|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|    430|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|    430|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49267:6): [Folded, False: 430]
  ------------------
49268|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49269|      0|		uint32_t arg_num;
49270|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49271|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49272|       |
49273|       |
49274|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49274:4): [True: 0, False: 0]
  |  Branch (49274:4): [True: 0, False: 0]
  ------------------
49275|      0|		}
49276|    430|	} else {
49277|    430|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|    430|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
49278|    430|	}
49279|       |
49280|    430|	varptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    430|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    430|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49281|    430|	if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|    430|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    430|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    430|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    430|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 369, False: 61]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49282|    369|		Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|    369|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49283|    369|	} else {
49284|     61|		ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|     61|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|     61|		zval *_z = (z);											\
  |  | 1218|     61|		zend_reference *_ref =									\
  |  | 1219|     61|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|     61|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     61|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     61|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     61|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     61|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|     61|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|     61|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|     61|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     61|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     61|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     61|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     61|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     61|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|     61|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|     61|	do {												\
  |  |  |  | 1417|     61|		zval *_z1 = (z);								\
  |  |  |  | 1418|     61|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     61|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     61|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     61|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     61|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     61|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     61|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     61|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     61|	do {												\
  |  |  |  |  |  | 1408|     61|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     61|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     61|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     61|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     61|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     61|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     61|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 61]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     61|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 61]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|     61|		_ref->sources.ptr = NULL;									\
  |  | 1224|     61|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     61|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     61|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|     61|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     61|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     61|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     61|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     61|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     61|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     61|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     61|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     61|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|     61|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 61]
  |  |  ------------------
  ------------------
49285|     61|	}
49286|    430|	ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|    430|#define ZVAL_REF(z, r) do {										\
  |  | 1190|    430|		zval *__z = (z);										\
  |  | 1191|    430|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|    430|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    430|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|    430|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|    430|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    430|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|    430|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    430|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    430|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    430|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    430|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    430|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|    430|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 430]
  |  |  ------------------
  ------------------
49287|       |
49288|       |
49289|    430|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    430|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    430|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    430|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 430]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    430|	} else { \
  |  |  |  | 5761|    430|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    430|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    430|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    430|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    430|	} \
  |  |  |  | 5764|    430|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    430|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49289:2): [True: 0, False: 430]
  |  Branch (49289:2): [True: 430, False: 0]
  ------------------
49290|    430|}
zend_execute.c:ZEND_NEW_SPEC_CONST_UNUSED_HANDLER:
11369|  3.67k|{
11370|  3.67k|	USE_OPLINE
11371|  3.67k|	zval *result;
11372|  3.67k|	zend_function *constructor;
11373|  3.67k|	zend_class_entry *ce;
11374|  3.67k|	zend_execute_data *call;
11375|       |
11376|  3.67k|	SAVE_OPLINE();
  ------------------
  |  |  428|  3.67k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  3.67k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11377|  3.67k|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  3.67k|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|  3.67k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11377:6): [True: 3.67k, Folded]
  ------------------
11378|  3.67k|		ce = CACHED_PTR(opline->op2.num);
  ------------------
  |  |  527|  3.67k|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|  3.67k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11379|  3.67k|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|  3.67k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.54k, False: 2.12k]
  |  |  ------------------
  ------------------
11380|  1.54k|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|  1.54k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.54k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|  1.54k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.54k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|  1.54k|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|  1.54k|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
11381|  1.54k|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|  1.54k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 23, False: 1.52k]
  |  |  ------------------
  ------------------
11382|     23|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|     23|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     23|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     23|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
11383|     23|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|     23|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     23|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     23|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     23|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     23|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11383:5): [True: 0, False: 23]
  |  Branch (11383:5): [True: 23, False: 0]
  ------------------
11384|     23|			}
11385|  1.52k|			CACHE_PTR(opline->op2.num, ce);
  ------------------
  |  |  529|  1.52k|#define CACHE_PTR(num, ptr) do { \
  |  |  530|  1.52k|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|  1.52k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|  1.52k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 1.52k]
  |  |  ------------------
  ------------------
11386|  1.52k|		}
11387|  3.67k|	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11387:13): [Folded, False: 0]
  ------------------
11388|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
11389|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11390|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11391|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11391:4): [True: 0, False: 0]
  |  Branch (11391:4): [True: 0, False: 0]
  ------------------
11392|      0|		}
11393|      0|	} else {
11394|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
11395|      0|	}
11396|       |
11397|  3.65k|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|  3.65k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  3.65k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
11398|  3.65k|	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
  ------------------
  |  |  457|  3.65k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 3.64k]
  |  |  ------------------
  ------------------
11399|      9|		ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      9|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      9|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      9|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
11400|      9|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      9|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      9|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11400:3): [True: 0, False: 9]
  |  Branch (11400:3): [True: 9, False: 0]
  ------------------
11401|      9|	}
11402|       |
11403|  3.64k|	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1003|  3.64k|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|  3.64k|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|  3.64k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1000|  3.64k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  3.64k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
11404|  3.64k|	if (constructor == NULL) {
  ------------------
  |  Branch (11404:6): [True: 2.36k, False: 1.27k]
  ------------------
11405|       |		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
11406|       |		 * opcode is DO_FCALL in case EXT instructions are used. */
11407|  2.36k|		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
  ------------------
  |  |  456|  4.72k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2.36k, False: 4]
  |  |  |  Branch (456:52): [True: 2.36k, False: 3]
  |  |  |  Branch (456:52): [True: 2.36k, False: 1]
  |  |  ------------------
  ------------------
11408|  2.36k|			ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|  2.36k|	CHECK_SYMBOL_TABLES() \
  |  | 5758|  2.36k|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 2.36k, Folded]
  |  |  ------------------
  |  | 5759|  2.36k|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|  2.36k|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|  2.36k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|  2.36k|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|  2.36k|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|  2.36k|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11408:4): [True: 0, False: 0]
  |  Branch (11408:4): [True: 0, False: 0]
  ------------------
11409|  2.36k|		}
11410|       |
11411|      4|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
11412|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11412:4): [True: 0, False: 1]
  |  Branch (11412:4): [True: 1, False: 0]
  ------------------
11413|      1|		}
11414|       |
11415|       |		/* Perform a dummy function call */
11416|      3|		call = zend_vm_stack_push_call_frame(
11417|      3|			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
  ------------------
  |  |  660|      3|#define ZEND_CALL_FUNCTION           (0 << 16)
  ------------------
11418|      3|			opline->extended_value, NULL);
11419|  1.27k|	} else {
11420|  1.27k|		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&constructor->op_array))) {
  ------------------
  |  |  456|  2.55k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 36, False: 1.24k]
  |  |  ------------------
  ------------------
              		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&constructor->op_array))) {
  ------------------
  |  |  457|     72|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 30, False: 6]
  |  |  |  Branch (457:52): [True: 0, False: 36]
  |  |  ------------------
  ------------------
11421|     30|			init_func_run_time_cache(&constructor->op_array);
11422|     30|		}
11423|       |		/* We are not handling overloaded classes right now */
11424|  1.27k|		call = zend_vm_stack_push_call_frame(
11425|  1.27k|			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  660|  1.27k|#define ZEND_CALL_FUNCTION           (0 << 16)
  ------------------
              			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  667|  1.27k|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  657|  1.27k|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|  1.27k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  1.27k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.27k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.27k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  1.27k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.27k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11426|  1.27k|			constructor,
11427|  1.27k|			opline->extended_value,
11428|  1.27k|			Z_OBJ_P(result));
  ------------------
  |  | 1000|  1.27k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  1.27k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
11429|  1.27k|		Z_ADDREF_P(result);
  ------------------
  |  | 1277|  1.27k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11430|  1.27k|	}
11431|       |
11432|  1.27k|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|  1.27k|#define EX(element) 			((execute_data)->element)
  ------------------
11433|  1.27k|	EX(call) = call;
  ------------------
  |  |  730|  1.27k|#define EX(element) 			((execute_data)->element)
  ------------------
11434|  1.27k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  1.27k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.27k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.27k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1.27k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.27k|	} else { \
  |  |  |  | 5761|  1.27k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.27k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  1.27k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.27k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  1.27k|	} \
  |  |  |  | 5764|  1.27k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.27k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11434:2): [True: 0, False: 1.27k]
  |  Branch (11434:2): [True: 1.27k, False: 0]
  ------------------
11435|  1.27k|}
zend_execute.c:ZEND_NEW_SPEC_VAR_UNUSED_HANDLER:
30045|    333|{
30046|    333|	USE_OPLINE
30047|    333|	zval *result;
30048|    333|	zend_function *constructor;
30049|    333|	zend_class_entry *ce;
30050|    333|	zend_execute_data *call;
30051|       |
30052|    333|	SAVE_OPLINE();
  ------------------
  |  |  428|    333|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    333|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30053|    333|	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|    333|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|    333|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (30053:6): [Folded, False: 333]
  ------------------
30054|      0|		ce = CACHED_PTR(opline->op2.num);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30055|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30056|      0|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
30057|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30058|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30059|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30059:5): [True: 0, False: 0]
  |  Branch (30059:5): [True: 0, False: 0]
  ------------------
30060|      0|			}
30061|      0|			CACHE_PTR(opline->op2.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30062|      0|		}
30063|    333|	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|    333|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|    333|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (30063:13): [Folded, False: 333]
  ------------------
30064|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
30065|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30066|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30067|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30067:4): [True: 0, False: 0]
  |  Branch (30067:4): [True: 0, False: 0]
  ------------------
30068|      0|		}
30069|    333|	} else {
30070|    333|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|    333|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|    333|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
30071|    333|	}
30072|       |
30073|    333|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|    333|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    333|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30074|    333|	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
  ------------------
  |  |  457|    333|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 33, False: 300]
  |  |  ------------------
  ------------------
30075|     33|		ZVAL_UNDEF(result);
  ------------------
  |  | 1055|     33|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     33|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     33|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     33|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     33|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     33|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33]
  |  |  ------------------
  ------------------
30076|     33|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|     33|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     33|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     33|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     33|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     33|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30076:3): [True: 0, False: 33]
  |  Branch (30076:3): [True: 33, False: 0]
  ------------------
30077|     33|	}
30078|       |
30079|    300|	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1003|    300|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|    300|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    300|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1000|    300|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    300|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
30080|    300|	if (constructor == NULL) {
  ------------------
  |  Branch (30080:6): [True: 94, False: 206]
  ------------------
30081|       |		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
30082|       |		 * opcode is DO_FCALL in case EXT instructions are used. */
30083|     94|		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
  ------------------
  |  |  456|    177|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 83, False: 11]
  |  |  |  Branch (456:52): [True: 83, False: 11]
  |  |  |  Branch (456:52): [True: 83, False: 0]
  |  |  ------------------
  ------------------
30084|     83|			ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     83|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     83|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 83, Folded]
  |  |  ------------------
  |  | 5759|     83|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     83|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     83|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     83|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     83|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     83|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30084:4): [True: 0, False: 0]
  |  Branch (30084:4): [True: 0, False: 0]
  ------------------
30085|     83|		}
30086|       |
30087|     11|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
30088|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30088:4): [True: 0, False: 0]
  |  Branch (30088:4): [True: 0, False: 0]
  ------------------
30089|      0|		}
30090|       |
30091|       |		/* Perform a dummy function call */
30092|     11|		call = zend_vm_stack_push_call_frame(
30093|     11|			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
  ------------------
  |  |  660|     11|#define ZEND_CALL_FUNCTION           (0 << 16)
  ------------------
30094|     11|			opline->extended_value, NULL);
30095|    206|	} else {
30096|    206|		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&constructor->op_array))) {
  ------------------
  |  |  456|    412|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 11, False: 195]
  |  |  ------------------
  ------------------
              		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&constructor->op_array))) {
  ------------------
  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 9]
  |  |  |  Branch (457:52): [True: 0, False: 11]
  |  |  ------------------
  ------------------
30097|      2|			init_func_run_time_cache(&constructor->op_array);
30098|      2|		}
30099|       |		/* We are not handling overloaded classes right now */
30100|    206|		call = zend_vm_stack_push_call_frame(
30101|    206|			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  660|    206|#define ZEND_CALL_FUNCTION           (0 << 16)
  ------------------
              			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  667|    206|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  657|    206|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|    206|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    206|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    206|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    206|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    206|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    206|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30102|    206|			constructor,
30103|    206|			opline->extended_value,
30104|    206|			Z_OBJ_P(result));
  ------------------
  |  | 1000|    206|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    206|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
30105|    206|		Z_ADDREF_P(result);
  ------------------
  |  | 1277|    206|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30106|    206|	}
30107|       |
30108|    217|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|    217|#define EX(element) 			((execute_data)->element)
  ------------------
30109|    217|	EX(call) = call;
  ------------------
  |  |  730|    217|#define EX(element) 			((execute_data)->element)
  ------------------
30110|    217|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    217|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    217|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    217|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 217]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    217|	} else { \
  |  |  |  | 5761|    217|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    217|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    217|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    217|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    217|	} \
  |  |  |  | 5764|    217|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    217|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30110:2): [True: 0, False: 217]
  |  Branch (30110:2): [True: 217, False: 0]
  ------------------
30111|    217|}
zend_execute.c:ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER:
37090|      5|{
37091|      5|	USE_OPLINE
37092|      5|	zval *result;
37093|      5|	zend_function *constructor;
37094|      5|	zend_class_entry *ce;
37095|      5|	zend_execute_data *call;
37096|       |
37097|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37098|      5|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37098:6): [Folded, False: 5]
  ------------------
37099|      0|		ce = CACHED_PTR(opline->op2.num);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37100|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37101|      0|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
37102|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37103|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37104|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37104:5): [True: 0, False: 0]
  |  Branch (37104:5): [True: 0, False: 0]
  ------------------
37105|      0|			}
37106|      0|			CACHE_PTR(opline->op2.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37107|      0|		}
37108|      5|	} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (37108:13): [True: 5, Folded]
  ------------------
37109|      5|		ce = zend_fetch_class(NULL, opline->op1.num);
37110|      5|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
37111|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37112|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37112:4): [True: 0, False: 0]
  |  Branch (37112:4): [True: 0, False: 0]
  ------------------
37113|      0|		}
37114|      5|	} else {
37115|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
37116|      0|	}
37117|       |
37118|      5|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37119|      5|	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
37120|      0|		ZVAL_UNDEF(result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37121|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37121:3): [True: 0, False: 0]
  |  Branch (37121:3): [True: 0, False: 0]
  ------------------
37122|      0|	}
37123|       |
37124|      5|	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1003|      5|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      5|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
37125|      5|	if (constructor == NULL) {
  ------------------
  |  Branch (37125:6): [True: 5, False: 0]
  ------------------
37126|       |		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
37127|       |		 * opcode is DO_FCALL in case EXT instructions are used. */
37128|      5|		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  |  Branch (456:52): [True: 5, False: 0]
  |  |  |  Branch (456:52): [True: 5, False: 0]
  |  |  ------------------
  ------------------
37129|      5|			ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      5|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  ------------------
  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      5|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      5|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37129:4): [True: 0, False: 0]
  |  Branch (37129:4): [True: 0, False: 0]
  ------------------
37130|      5|		}
37131|       |
37132|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37133|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37133:4): [True: 0, False: 0]
  |  Branch (37133:4): [True: 0, False: 0]
  ------------------
37134|      0|		}
37135|       |
37136|       |		/* Perform a dummy function call */
37137|      0|		call = zend_vm_stack_push_call_frame(
37138|      0|			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
  ------------------
  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  ------------------
37139|      0|			opline->extended_value, NULL);
37140|      0|	} else {
37141|      0|		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&constructor->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&constructor->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37142|      0|			init_func_run_time_cache(&constructor->op_array);
37143|      0|		}
37144|       |		/* We are not handling overloaded classes right now */
37145|      0|		call = zend_vm_stack_push_call_frame(
37146|      0|			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  ------------------
              			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37147|      0|			constructor,
37148|      0|			opline->extended_value,
37149|      0|			Z_OBJ_P(result));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
37150|      0|		Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
37151|      0|	}
37152|       |
37153|      0|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
37154|      0|	EX(call) = call;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
37155|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37155:2): [True: 0, False: 0]
  |  Branch (37155:2): [True: 0, False: 0]
  ------------------
37156|      0|}
zend_execute.c:ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER:
 4146|    150|{
 4147|    150|	USE_OPLINE
 4148|    150|	zval *func_name;
 4149|    150|	zval *func;
 4150|    150|	zend_function *fbc;
 4151|    150|	zend_execute_data *call;
 4152|       |
 4153|    150|	fbc = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|    150|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    150|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4154|    150|	if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|    150|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 147, False: 3]
  |  |  ------------------
  ------------------
 4155|    147|		func_name = (zval *)RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    147|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4156|    147|		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(func_name + 1));
  ------------------
  |  |   45|    147|# define EG(v) (executor_globals.v)
  ------------------
              		func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(func_name + 1));
  ------------------
  |  |  982|    147|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    147|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4157|    147|		if (func == NULL) {
  ------------------
  |  Branch (4157:7): [True: 134, False: 13]
  ------------------
 4158|    134|			func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(func_name + 2));
  ------------------
  |  |   45|    134|# define EG(v) (executor_globals.v)
  ------------------
              			func = zend_hash_find_known_hash(EG(function_table), Z_STR_P(func_name + 2));
  ------------------
  |  |  982|    134|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    134|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4159|    134|			if (UNEXPECTED(func == NULL)) {
  ------------------
  |  |  457|    134|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 8, False: 126]
  |  |  ------------------
  ------------------
 4160|      8|				ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      8|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 4161|      8|			}
 4162|    134|		}
 4163|    139|		fbc = Z_FUNC_P(func);
  ------------------
  |  | 1050|    139|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|    139|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
 4164|    139|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|    278|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 126]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 13, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 4165|     13|			init_func_run_time_cache(&fbc->op_array);
 4166|     13|		}
 4167|    139|		CACHE_PTR(opline->result.num, fbc);
  ------------------
  |  |  529|    139|#define CACHE_PTR(num, ptr) do { \
  |  |  530|    139|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|    139|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|    139|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 139]
  |  |  ------------------
  ------------------
 4168|    139|	}
 4169|       |
 4170|    142|	call = _zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
  ------------------
  |  | 5743|    142|# define _zend_vm_stack_push_call_frame    zend_vm_stack_push_call_frame
  ------------------
              	call = _zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
  ------------------
  |  |  681|    142|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    142|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    142|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
 4171|    142|		fbc, opline->extended_value, NULL);
 4172|    142|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|    142|#define EX(element) 			((execute_data)->element)
  ------------------
 4173|    142|	EX(call) = call;
  ------------------
  |  |  730|    142|#define EX(element) 			((execute_data)->element)
  ------------------
 4174|       |
 4175|    142|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    142|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    142|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    142|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 142]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    142|	} else { \
  |  |  |  | 5761|    142|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    142|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    142|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    142|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    142|	} \
  |  |  |  | 5764|    142|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    142|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4175:2): [True: 0, False: 142]
  |  Branch (4175:2): [True: 142, False: 0]
  ------------------
 4176|    142|}
zend_execute.c:ZEND_FREE_SPEC_TMPVAR_HANDLER:
15608|  7.75k|{
15609|  7.75k|	USE_OPLINE
15610|       |
15611|  7.75k|	SAVE_OPLINE();
  ------------------
  |  |  428|  7.75k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  7.75k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15612|  7.75k|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|  7.75k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  7.75k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15613|  7.75k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  7.75k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  6.75k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  7.75k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6.75k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  6.75k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  6.75k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  6.75k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  6.75k|	} else { \
  |  |  |  | 5761|    999|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    999|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    999|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  6.75k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  6.75k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15613:2): [True: 0, False: 999]
  |  Branch (15613:2): [True: 0, False: 999]
  ------------------
15614|  7.75k|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER:
 8072|      5|{
 8073|      5|	zval *array;
 8074|      5|	uint32_t size;
 8075|      5|	USE_OPLINE
 8076|       |
 8077|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 8078|      5|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8079|      5|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (8079:6): [True: 5, Folded]
  ------------------
 8080|      5|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      5|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
 8081|      5|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      5|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      5|		zend_array *__arr = (a);				\
  |  | 1127|      5|		zval *__z = (z);						\
  |  | 1128|      5|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      5|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      5|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      5|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 8082|       |		/* Explicitly initialize array as not-packed if flag is set */
 8083|      5|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      5|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (8083:7): [True: 0, False: 5]
  ------------------
 8084|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8085|      0|		}
 8086|      5|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      5|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 8087|      5|	} else {
 8088|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8089|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8089:3): [True: 0, False: 0]
  |  Branch (8089:3): [True: 0, False: 0]
  ------------------
 8090|      0|	}
 8091|      5|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CONST_TMP_HANDLER:
10588|      2|{
10589|      2|	zval *array;
10590|      2|	uint32_t size;
10591|      2|	USE_OPLINE
10592|       |
10593|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10594|      2|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10595|      2|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (10595:6): [True: 2, Folded]
  ------------------
10596|      2|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      2|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
10597|      2|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
10598|       |		/* Explicitly initialize array as not-packed if flag is set */
10599|      2|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      2|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (10599:7): [True: 0, False: 2]
  ------------------
10600|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10601|      0|		}
10602|      2|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
10603|      2|	} else {
10604|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10605|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10605:3): [True: 0, False: 0]
  |  Branch (10605:3): [True: 0, False: 0]
  ------------------
10606|      0|	}
10607|      2|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER:
11550|     23|{
11551|     23|	zval *array;
11552|     23|	uint32_t size;
11553|     23|	USE_OPLINE
11554|       |
11555|     23|	SAVE_OPLINE();
  ------------------
  |  |  428|     23|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     23|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11556|     23|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     23|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     23|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
11557|     23|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     23|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11557:6): [True: 23, Folded]
  ------------------
11558|     23|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|     23|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
11559|     23|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|     23|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     23|		zend_array *__arr = (a);				\
  |  | 1127|     23|		zval *__z = (z);						\
  |  | 1128|     23|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     23|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     23|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     23|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     23|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     23|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     23|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     23|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
11560|       |		/* Explicitly initialize array as not-packed if flag is set */
11561|     23|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|     23|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (11561:7): [True: 1, False: 22]
  ------------------
11562|      1|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11563|      1|		}
11564|     23|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     23|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
11565|     23|	} else {
11566|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11567|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11567:3): [True: 0, False: 0]
  |  Branch (11567:3): [True: 0, False: 0]
  ------------------
11568|      0|	}
11569|     23|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER:
13205|      1|{
13206|      1|	zval *array;
13207|      1|	uint32_t size;
13208|      1|	USE_OPLINE
13209|       |
13210|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
13211|      1|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13212|      1|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (13212:6): [True: 1, Folded]
  ------------------
13213|      1|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      1|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
13214|      1|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
13215|       |		/* Explicitly initialize array as not-packed if flag is set */
13216|      1|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      1|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (13216:7): [True: 0, False: 1]
  ------------------
13217|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13218|      0|		}
13219|      1|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
13220|      1|	} else {
13221|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13222|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13222:3): [True: 0, False: 0]
  |  Branch (13222:3): [True: 0, False: 0]
  ------------------
13223|      0|	}
13224|      1|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER:
19460|      7|{
19461|      7|	zval *array;
19462|      7|	uint32_t size;
19463|      7|	USE_OPLINE
19464|       |
19465|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19466|      7|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19467|      7|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      7|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (19467:6): [True: 7, Folded]
  ------------------
19468|      7|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      7|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
19469|      7|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      7|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      7|		zend_array *__arr = (a);				\
  |  | 1127|      7|		zval *__z = (z);						\
  |  | 1128|      7|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      7|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      7|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      7|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      7|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
19470|       |		/* Explicitly initialize array as not-packed if flag is set */
19471|      7|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      7|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (19471:7): [True: 2, False: 5]
  ------------------
19472|      2|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19473|      2|		}
19474|      7|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      7|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
19475|      7|	} else {
19476|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19477|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19477:3): [True: 0, False: 0]
  |  Branch (19477:3): [True: 0, False: 0]
  ------------------
19478|      0|	}
19479|      7|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_TMP_TMP_HANDLER:
20995|      2|{
20996|      2|	zval *array;
20997|      2|	uint32_t size;
20998|      2|	USE_OPLINE
20999|       |
21000|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21001|      2|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21002|      2|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21002:6): [True: 2, Folded]
  ------------------
21003|      2|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      2|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
21004|      2|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  | 1127|      2|		zval *__z = (z);						\
  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
21005|       |		/* Explicitly initialize array as not-packed if flag is set */
21006|      2|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      2|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (21006:7): [True: 0, False: 2]
  ------------------
21007|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21008|      0|		}
21009|      2|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
21010|      2|	} else {
21011|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21012|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21012:3): [True: 0, False: 0]
  |  Branch (21012:3): [True: 0, False: 0]
  ------------------
21013|      0|	}
21014|      2|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER:
21758|     49|{
21759|     49|	zval *array;
21760|     49|	uint32_t size;
21761|     49|	USE_OPLINE
21762|       |
21763|     49|	SAVE_OPLINE();
  ------------------
  |  |  428|     49|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     49|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21764|     49|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     49|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     49|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21765|     49|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|     49|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|     49|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21765:6): [True: 49, Folded]
  ------------------
21766|     49|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|     49|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
21767|     49|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|     49|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     49|		zend_array *__arr = (a);				\
  |  | 1127|     49|		zval *__z = (z);						\
  |  | 1128|     49|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     49|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     49|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     49|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     49|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     49|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     49|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     49|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     49|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     49|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     49|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     49|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     49|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 49]
  |  |  ------------------
  ------------------
21768|       |		/* Explicitly initialize array as not-packed if flag is set */
21769|     49|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|     49|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (21769:7): [True: 0, False: 49]
  ------------------
21770|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21771|      0|		}
21772|     49|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     49|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
21773|     49|	} else {
21774|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21775|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21775:3): [True: 0, False: 0]
  |  Branch (21775:3): [True: 0, False: 0]
  ------------------
21776|      0|	}
21777|     49|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER:
22857|      8|{
22858|      8|	zval *array;
22859|      8|	uint32_t size;
22860|      8|	USE_OPLINE
22861|       |
22862|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22863|      8|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22864|      8|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (22864:6): [True: 8, Folded]
  ------------------
22865|      8|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      8|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
22866|      8|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      8|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      8|		zend_array *__arr = (a);				\
  |  | 1127|      8|		zval *__z = (z);						\
  |  | 1128|      8|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      8|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      8|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      8|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      8|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
22867|       |		/* Explicitly initialize array as not-packed if flag is set */
22868|      8|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      8|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (22868:7): [True: 0, False: 8]
  ------------------
22869|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22870|      0|		}
22871|      8|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      8|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
22872|      8|	} else {
22873|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22874|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22874:3): [True: 0, False: 0]
  |  Branch (22874:3): [True: 0, False: 0]
  ------------------
22875|      0|	}
22876|      8|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER:
30225|      3|{
30226|      3|	zval *array;
30227|      3|	uint32_t size;
30228|      3|	USE_OPLINE
30229|       |
30230|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30231|      3|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30232|      3|	if (IS_VAR != IS_UNUSED) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (30232:6): [True: 3, Folded]
  ------------------
30233|      3|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      3|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
30234|      3|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
30235|       |		/* Explicitly initialize array as not-packed if flag is set */
30236|      3|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      3|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (30236:7): [True: 0, False: 3]
  ------------------
30237|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30238|      0|		}
30239|      3|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
30240|      3|	} else {
30241|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30242|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30242:3): [True: 0, False: 0]
  |  Branch (30242:3): [True: 0, False: 0]
  ------------------
30243|      0|	}
30244|      3|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED_HANDLER:
37159|      8|{
37160|      8|	zval *array;
37161|      8|	uint32_t size;
37162|      8|	USE_OPLINE
37163|       |
37164|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37165|      8|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37166|      8|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (37166:6): [Folded, False: 8]
  ------------------
37167|      0|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      0|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
37168|      0|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37169|       |		/* Explicitly initialize array as not-packed if flag is set */
37170|      0|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      0|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (37170:7): [True: 0, False: 0]
  ------------------
37171|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37172|      0|		}
37173|      0|		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
37174|      8|	} else {
37175|      8|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      8|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      8|		zend_array *__arr = (a);				\
  |  | 1127|      8|		zval *__z = (z);						\
  |  | 1128|      8|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      8|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      8|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      8|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      8|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
37176|      8|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      8|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37176:3): [True: 0, False: 8]
  |  Branch (37176:3): [True: 8, False: 0]
  ------------------
37177|      8|	}
37178|      8|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER:
44171|      4|{
44172|      4|	zval *array;
44173|      4|	uint32_t size;
44174|      4|	USE_OPLINE
44175|       |
44176|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44177|      4|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44178|      4|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (44178:6): [True: 4, Folded]
  ------------------
44179|      4|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      4|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
44180|      4|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  | 1127|      4|		zval *__z = (z);						\
  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
44181|       |		/* Explicitly initialize array as not-packed if flag is set */
44182|      4|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      4|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (44182:7): [True: 4, False: 0]
  ------------------
44183|      4|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44184|      4|		}
44185|      4|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      4|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
44186|      4|	} else {
44187|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44188|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44188:3): [True: 0, False: 0]
  |  Branch (44188:3): [True: 0, False: 0]
  ------------------
44189|      0|	}
44190|      4|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CV_TMP_HANDLER:
47833|      1|{
47834|      1|	zval *array;
47835|      1|	uint32_t size;
47836|      1|	USE_OPLINE
47837|       |
47838|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
47839|      1|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47840|      1|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47840:6): [True: 1, Folded]
  ------------------
47841|      1|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|      1|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
47842|      1|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
47843|       |		/* Explicitly initialize array as not-packed if flag is set */
47844|      1|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|      1|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (47844:7): [True: 0, False: 1]
  ------------------
47845|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47846|      0|		}
47847|      1|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
47848|      1|	} else {
47849|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47850|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (47850:3): [True: 0, False: 0]
  |  Branch (47850:3): [True: 0, False: 0]
  ------------------
47851|      0|	}
47852|      1|}
zend_execute.c:ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER:
49539|     43|{
49540|     43|	zval *array;
49541|     43|	uint32_t size;
49542|     43|	USE_OPLINE
49543|       |
49544|     43|	SAVE_OPLINE();
  ------------------
  |  |  428|     43|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     43|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49545|     43|	array = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     43|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     43|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49546|     43|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|     43|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|     43|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49546:6): [True: 43, Folded]
  ------------------
49547|     43|		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
  ------------------
  |  | 1211|     43|#define ZEND_ARRAY_SIZE_SHIFT		2
  ------------------
49548|     43|		ZVAL_ARR(array, zend_new_array(size));
  ------------------
  |  | 1125|     43|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     43|		zend_array *__arr = (a);				\
  |  | 1127|     43|		zval *__z = (z);						\
  |  | 1128|     43|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     43|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     43|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     43|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     43|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     43|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     43|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     43|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     43|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     43|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
49549|       |		/* Explicitly initialize array as not-packed if flag is set */
49550|     43|		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
  ------------------
  |  | 1210|     43|#define ZEND_ARRAY_NOT_PACKED		(1<<1)
  ------------------
  |  Branch (49550:7): [True: 0, False: 43]
  ------------------
49551|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49552|      0|		}
49553|     43|		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     43|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
49554|     43|	} else {
49555|      0|		ZVAL_ARR(array, zend_new_array(0));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49556|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49556:3): [True: 0, False: 0]
  |  Branch (49556:3): [True: 0, False: 0]
  ------------------
49557|      0|	}
49558|     43|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER:
 7960|      8|{
 7961|      8|	USE_OPLINE
 7962|      8|	zval *expr_ptr, new_expr;
 7963|       |
 7964|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7965|      8|	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  866|     16|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (7965:7): [Folded, False: 0]
  |  Branch (7965:29): [Folded, False: 0]
  ------------------
 7966|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7967|      0|		expr_ptr = zend_get_bad_ptr();
 7968|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7969|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 7970|      0|		} else {
 7971|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7972|      0|		}
 7973|       |
 7974|       |
 7975|      8|	} else {
 7976|      8|		expr_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7977|      8|		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (7977:7): [Folded, False: 8]
  ------------------
 7978|       |			/* pass */
 7979|      8|		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7979:14): [True: 8, Folded]
  ------------------
 7980|      8|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      8|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      8|	zval *_pz = (pz);				\
  |  | 1287|      8|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
 7981|      8|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (7981:14): [Folded, False: 0]
  ------------------
 7982|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7983|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7984|      0|		} else /* if (IS_CONST == IS_VAR) */ {
 7985|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7986|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 7987|       |
 7988|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7989|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7990|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7991|      0|					expr_ptr = &new_expr;
 7992|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7993|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7994|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 7995|      0|				}
 7996|      0|			}
 7997|      0|		}
 7998|      8|	}
 7999|       |
 8000|      8|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (8000:6): [True: 8, Folded]
  ------------------
 8001|      8|		zval *offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8002|      8|		zend_string *str;
 8003|      8|		zend_ulong hval;
 8004|       |
 8005|      8|add_again:
 8006|      8|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 8007|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 8008|      0|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8008:8): [Folded, False: 0]
  ------------------
 8009|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8010|      0|					goto num_index;
 8011|      0|				}
 8012|      0|			}
 8013|      2|str_index:
 8014|      2|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8015|      8|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 6]
  |  |  ------------------
  ------------------
 8016|      2|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8017|      6|num_index:
 8018|      6|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8019|      6|		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (8019:14): [Folded, False: 6]
  ------------------
 8020|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8021|      0|			goto add_again;
 8022|      6|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
 8023|      2|			zval tmp;
 8024|      2|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (8024:8): [Folded, False: 0]
  |  Branch (8024:29): [Folded, False: 0]
  ------------------
 8025|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8026|      0|			}
 8027|      2|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      2|#define E_DEPRECATED		(1<<13L)
  ------------------
 8028|      2|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (8028:8): [Folded, False: 0]
  |  Branch (8028:29): [Folded, False: 0]
  ------------------
 8029|       |				/* A userland error handler can do funky things to the expression, so reset it */
 8030|      0|				zval_ptr_dtor(expr_ptr);
 8031|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8032|      0|			}
 8033|      2|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 8034|      0|				zval_ptr_dtor_nogc(expr_ptr);
 8035|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (8035:5): [True: 0, False: 0]
  |  Branch (8035:5): [True: 0, False: 0]
  ------------------
 8036|      0|			}
 8037|      2|			str = ZSTR_EMPTY_ALLOC();
 8038|      2|			goto str_index;
 8039|      4|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      4|#define IS_DOUBLE					5
  ------------------
  |  Branch (8039:14): [True: 4, False: 0]
  ------------------
 8040|      4|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      4|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      4|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 8041|      4|			goto num_index;
 8042|      4|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (8042:14): [True: 0, False: 0]
  ------------------
 8043|      0|			hval = 0;
 8044|      0|			goto num_index;
 8045|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (8045:14): [True: 0, False: 0]
  ------------------
 8046|      0|			hval = 1;
 8047|      0|			goto num_index;
 8048|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (8048:14): [True: 0, False: 0]
  ------------------
 8049|      0|			zend_use_resource_as_offset(offset);
 8050|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8051|      0|			goto num_index;
 8052|      0|		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (8052:14): [Folded, False: 0]
  |  Branch (8052:35): [True: 0, False: 0]
  ------------------
 8053|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 8054|      0|			str = ZSTR_EMPTY_ALLOC();
 8055|      0|			goto str_index;
 8056|      0|		} else {
 8057|      0|			zend_illegal_array_offset_access(offset);
 8058|      0|			zval_ptr_dtor_nogc(expr_ptr);
 8059|      0|		}
 8060|       |
 8061|       |
 8062|      8|	} else {
 8063|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8063:7): [True: 0, False: 0]
  ------------------
 8064|      0|			zend_cannot_add_element();
 8065|      0|			zval_ptr_dtor_nogc(expr_ptr);
 8066|      0|		}
 8067|      0|	}
 8068|      8|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8068:2): [True: 0, False: 0]
  |  Branch (8068:2): [True: 0, False: 0]
  ------------------
 8069|      8|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER:
10477|      2|{
10478|      2|	USE_OPLINE
10479|      2|	zval *expr_ptr, new_expr;
10480|       |
10481|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10482|      2|	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10482:7): [Folded, False: 0]
  |  Branch (10482:29): [Folded, False: 0]
  ------------------
10483|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10484|      0|		expr_ptr = zend_get_bad_ptr();
10485|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10486|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
10487|      0|		} else {
10488|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10489|      0|		}
10490|       |
10491|       |
10492|      2|	} else {
10493|      2|		expr_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
10494|      2|		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (10494:7): [Folded, False: 2]
  ------------------
10495|       |			/* pass */
10496|      2|		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10496:14): [True: 2, Folded]
  ------------------
10497|      2|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
10498|      2|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10498:14): [Folded, False: 0]
  ------------------
10499|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10500|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
10501|      0|		} else /* if (IS_CONST == IS_VAR) */ {
10502|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10503|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
10504|       |
10505|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10506|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10507|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10508|      0|					expr_ptr = &new_expr;
10509|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10510|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10511|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
10512|      0|				}
10513|      0|			}
10514|      0|		}
10515|      2|	}
10516|       |
10517|      2|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (10517:6): [True: 2, Folded]
  ------------------
10518|      2|		zval *offset = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10519|      2|		zend_string *str;
10520|      2|		zend_ulong hval;
10521|       |
10522|      2|add_again:
10523|      2|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
10524|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10525|      0|			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10525:8): [True: 0, Folded]
  ------------------
10526|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10527|      0|					goto num_index;
10528|      0|				}
10529|      0|			}
10530|      0|str_index:
10531|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10532|      2|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
10533|      1|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
10534|      1|num_index:
10535|      1|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10536|      1|		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10536:14): [Folded, False: 1]
  ------------------
10537|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10538|      0|			goto add_again;
10539|      1|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
10540|      0|			zval tmp;
10541|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10541:8): [Folded, False: 0]
  |  Branch (10541:29): [Folded, False: 0]
  ------------------
10542|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10543|      0|			}
10544|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
10545|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (10545:8): [Folded, False: 0]
  |  Branch (10545:29): [Folded, False: 0]
  ------------------
10546|       |				/* A userland error handler can do funky things to the expression, so reset it */
10547|      0|				zval_ptr_dtor(expr_ptr);
10548|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10549|      0|			}
10550|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10551|      0|				zval_ptr_dtor_nogc(expr_ptr);
10552|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10552:5): [True: 0, False: 0]
  |  Branch (10552:5): [True: 0, False: 0]
  ------------------
10553|      0|			}
10554|      0|			str = ZSTR_EMPTY_ALLOC();
10555|      0|			goto str_index;
10556|      1|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (10556:14): [True: 0, False: 1]
  ------------------
10557|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
10558|      0|			goto num_index;
10559|      1|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (10559:14): [True: 0, False: 1]
  ------------------
10560|      0|			hval = 0;
10561|      0|			goto num_index;
10562|      1|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (10562:14): [True: 0, False: 1]
  ------------------
10563|      0|			hval = 1;
10564|      0|			goto num_index;
10565|      1|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      1|#define IS_RESOURCE					9
  ------------------
  |  Branch (10565:14): [True: 0, False: 1]
  ------------------
10566|      0|			zend_use_resource_as_offset(offset);
10567|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10568|      0|			goto num_index;
10569|      1|		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (10569:14): [Folded, False: 1]
  |  Branch (10569:37): [True: 0, False: 0]
  ------------------
10570|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10571|      0|			str = ZSTR_EMPTY_ALLOC();
10572|      0|			goto str_index;
10573|      1|		} else {
10574|      1|			zend_illegal_array_offset_access(offset);
10575|      1|			zval_ptr_dtor_nogc(expr_ptr);
10576|      1|		}
10577|      2|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10578|      2|	} else {
10579|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10579:7): [True: 0, False: 0]
  ------------------
10580|      0|			zend_cannot_add_element();
10581|      0|			zval_ptr_dtor_nogc(expr_ptr);
10582|      0|		}
10583|      0|	}
10584|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10584:2): [True: 0, False: 0]
  |  Branch (10584:2): [True: 0, False: 0]
  ------------------
10585|      2|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER:
11438|     87|{
11439|     87|	USE_OPLINE
11440|     87|	zval *expr_ptr, new_expr;
11441|       |
11442|     87|	SAVE_OPLINE();
  ------------------
  |  |  428|     87|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     87|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11443|     87|	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|     87|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  866|    174|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (11443:7): [Folded, False: 0]
  |  Branch (11443:29): [Folded, False: 0]
  ------------------
11444|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11445|      0|		expr_ptr = zend_get_bad_ptr();
11446|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11447|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11448|      0|		} else {
11449|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11450|      0|		}
11451|       |
11452|       |
11453|     87|	} else {
11454|     87|		expr_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     87|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11455|     87|		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  864|     87|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  865|     87|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (11455:7): [Folded, False: 87]
  ------------------
11456|       |			/* pass */
11457|     87|		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     87|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     87|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11457:14): [True: 87, Folded]
  ------------------
11458|     87|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|     87|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     87|	zval *_pz = (pz);				\
  |  | 1287|     87|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     87|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     87|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     87|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 35, False: 52]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|     35|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|     35|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|     35|	}								\
  |  | 1290|     87|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 87]
  |  |  ------------------
  ------------------
11459|     87|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (11459:14): [Folded, False: 0]
  ------------------
11460|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11461|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
11462|      0|		} else /* if (IS_CONST == IS_VAR) */ {
11463|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11464|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
11465|       |
11466|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11467|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11468|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11469|      0|					expr_ptr = &new_expr;
11470|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11471|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11472|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11473|      0|				}
11474|      0|			}
11475|      0|		}
11476|     87|	}
11477|       |
11478|     87|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     87|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     87|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11478:6): [Folded, False: 87]
  ------------------
11479|      0|		zval *offset = NULL;
11480|      0|		zend_string *str;
11481|      0|		zend_ulong hval;
11482|       |
11483|      0|add_again:
11484|      0|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11485|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11486|      0|			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11486:8): [True: 0, Folded]
  ------------------
11487|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11488|      0|					goto num_index;
11489|      0|				}
11490|      0|			}
11491|      0|str_index:
11492|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11493|      0|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11494|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
11495|      0|num_index:
11496|      0|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11497|      0|		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11497:14): [Folded, False: 0]
  ------------------
11498|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11499|      0|			goto add_again;
11500|      0|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11501|      0|			zval tmp;
11502|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (11502:8): [Folded, False: 0]
  |  Branch (11502:29): [Folded, False: 0]
  ------------------
11503|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11504|      0|			}
11505|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
11506|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (11506:8): [Folded, False: 0]
  |  Branch (11506:29): [Folded, False: 0]
  ------------------
11507|       |				/* A userland error handler can do funky things to the expression, so reset it */
11508|      0|				zval_ptr_dtor(expr_ptr);
11509|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11510|      0|			}
11511|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11512|      0|				zval_ptr_dtor_nogc(expr_ptr);
11513|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11513:5): [True: 0, False: 0]
  |  Branch (11513:5): [True: 0, False: 0]
  ------------------
11514|      0|			}
11515|      0|			str = ZSTR_EMPTY_ALLOC();
11516|      0|			goto str_index;
11517|      0|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (11517:14): [True: 0, False: 0]
  ------------------
11518|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
11519|      0|			goto num_index;
11520|      0|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (11520:14): [True: 0, False: 0]
  ------------------
11521|      0|			hval = 0;
11522|      0|			goto num_index;
11523|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (11523:14): [True: 0, False: 0]
  ------------------
11524|      0|			hval = 1;
11525|      0|			goto num_index;
11526|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (11526:14): [True: 0, False: 0]
  ------------------
11527|      0|			zend_use_resource_as_offset(offset);
11528|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11529|      0|			goto num_index;
11530|      0|		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (11530:14): [Folded, False: 0]
  |  Branch (11530:36): [True: 0, False: 0]
  ------------------
11531|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11532|      0|			str = ZSTR_EMPTY_ALLOC();
11533|      0|			goto str_index;
11534|      0|		} else {
11535|      0|			zend_illegal_array_offset_access(offset);
11536|      0|			zval_ptr_dtor_nogc(expr_ptr);
11537|      0|		}
11538|       |
11539|       |
11540|     87|	} else {
11541|     87|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|     87|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     87|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     87|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11541:7): [True: 0, False: 87]
  ------------------
11542|      0|			zend_cannot_add_element();
11543|      0|			zval_ptr_dtor_nogc(expr_ptr);
11544|      0|		}
11545|     87|	}
11546|     87|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     87|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     87|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     87|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 87, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     87|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     87|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     87|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     87|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     87|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     87|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11546:2): [True: 0, False: 0]
  |  Branch (11546:2): [True: 0, False: 0]
  ------------------
11547|     87|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER:
13093|      1|{
13094|      1|	USE_OPLINE
13095|      1|	zval *expr_ptr, new_expr;
13096|       |
13097|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
13098|      1|	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (13098:7): [Folded, False: 0]
  |  Branch (13098:29): [Folded, False: 0]
  ------------------
13099|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13100|      0|		expr_ptr = zend_get_bad_ptr();
13101|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13102|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
13103|      0|		} else {
13104|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13105|      0|		}
13106|       |
13107|       |
13108|      1|	} else {
13109|      1|		expr_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13110|      1|		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (13110:7): [Folded, False: 1]
  ------------------
13111|       |			/* pass */
13112|      1|		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13112:14): [True: 1, Folded]
  ------------------
13113|      1|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      1|	zval *_pz = (pz);				\
  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
13114|      1|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (13114:14): [Folded, False: 0]
  ------------------
13115|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13116|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
13117|      0|		} else /* if (IS_CONST == IS_VAR) */ {
13118|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13119|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
13120|       |
13121|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13122|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13123|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13124|      0|					expr_ptr = &new_expr;
13125|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13126|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13127|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
13128|      0|				}
13129|      0|			}
13130|      0|		}
13131|      1|	}
13132|       |
13133|      1|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (13133:6): [True: 1, Folded]
  ------------------
13134|      1|		zval *offset = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13135|      1|		zend_string *str;
13136|      1|		zend_ulong hval;
13137|       |
13138|      1|add_again:
13139|      1|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
13140|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
13141|      0|			if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (13141:8): [True: 0, Folded]
  ------------------
13142|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13143|      0|					goto num_index;
13144|      0|				}
13145|      0|			}
13146|      0|str_index:
13147|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13148|      1|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
13149|      1|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
13150|      1|num_index:
13151|      1|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13152|      1|		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13152:14): [True: 0, Folded]
  ------------------
13153|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13154|      0|			goto add_again;
13155|      0|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13156|      0|			zval tmp;
13157|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (13157:8): [Folded, False: 0]
  |  Branch (13157:29): [Folded, False: 0]
  ------------------
13158|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13159|      0|			}
13160|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
13161|      0|			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (13161:8): [Folded, False: 0]
  |  Branch (13161:29): [Folded, False: 0]
  ------------------
13162|       |				/* A userland error handler can do funky things to the expression, so reset it */
13163|      0|				zval_ptr_dtor(expr_ptr);
13164|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13165|      0|			}
13166|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13167|      0|				zval_ptr_dtor_nogc(expr_ptr);
13168|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (13168:5): [True: 0, False: 0]
  |  Branch (13168:5): [True: 0, False: 0]
  ------------------
13169|      0|			}
13170|      0|			str = ZSTR_EMPTY_ALLOC();
13171|      0|			goto str_index;
13172|      0|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (13172:14): [True: 0, False: 0]
  ------------------
13173|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
13174|      0|			goto num_index;
13175|      0|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (13175:14): [True: 0, False: 0]
  ------------------
13176|      0|			hval = 0;
13177|      0|			goto num_index;
13178|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (13178:14): [True: 0, False: 0]
  ------------------
13179|      0|			hval = 1;
13180|      0|			goto num_index;
13181|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (13181:14): [True: 0, False: 0]
  ------------------
13182|      0|			zend_use_resource_as_offset(offset);
13183|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13184|      0|			goto num_index;
13185|      0|		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (13185:14): [True: 0, Folded]
  |  Branch (13185:32): [True: 0, False: 0]
  ------------------
13186|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
13187|      0|			str = ZSTR_EMPTY_ALLOC();
13188|      0|			goto str_index;
13189|      0|		} else {
13190|      0|			zend_illegal_array_offset_access(offset);
13191|      0|			zval_ptr_dtor_nogc(expr_ptr);
13192|      0|		}
13193|       |
13194|       |
13195|      1|	} else {
13196|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13196:7): [True: 0, False: 0]
  ------------------
13197|      0|			zend_cannot_add_element();
13198|      0|			zval_ptr_dtor_nogc(expr_ptr);
13199|      0|		}
13200|      0|	}
13201|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13201:2): [True: 0, False: 0]
  |  Branch (13201:2): [True: 0, False: 0]
  ------------------
13202|      1|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER:
19349|     10|{
19350|     10|	USE_OPLINE
19351|     10|	zval *expr_ptr, new_expr;
19352|       |
19353|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19354|     10|	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  866|     20|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19354:7): [Folded, False: 0]
  |  Branch (19354:31): [Folded, False: 0]
  ------------------
19355|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19356|      0|		expr_ptr = zend_get_bad_ptr();
19357|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19358|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
19359|      0|		} else {
19360|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19361|      0|		}
19362|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19363|     10|	} else {
19364|     10|		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19365|     10|		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (19365:7): [True: 10, Folded]
  ------------------
19366|       |			/* pass */
19367|     10|		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19367:14): [Folded, False: 0]
  ------------------
19368|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
19369|      0|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19369:14): [Folded, False: 0]
  ------------------
19370|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19371|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
19372|      0|		} else /* if (IS_TMP_VAR == IS_VAR) */ {
19373|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19374|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
19375|       |
19376|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19377|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19378|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19379|      0|					expr_ptr = &new_expr;
19380|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19381|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19382|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
19383|      0|				}
19384|      0|			}
19385|      0|		}
19386|     10|	}
19387|       |
19388|     10|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (19388:6): [True: 10, Folded]
  ------------------
19389|     10|		zval *offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     10|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19390|     10|		zend_string *str;
19391|     10|		zend_ulong hval;
19392|       |
19393|     10|add_again:
19394|     10|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 8]
  |  |  ------------------
  ------------------
19395|      2|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19396|      2|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19396:8): [Folded, False: 2]
  ------------------
19397|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19398|      0|					goto num_index;
19399|      0|				}
19400|      0|			}
19401|      2|str_index:
19402|      2|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19403|      8|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 4]
  |  |  ------------------
  ------------------
19404|      4|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
19405|      8|num_index:
19406|      8|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19407|      8|		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19407:14): [Folded, False: 4]
  ------------------
19408|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19409|      0|			goto add_again;
19410|      4|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
19411|      0|			zval tmp;
19412|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19412:8): [Folded, False: 0]
  |  Branch (19412:31): [Folded, False: 0]
  ------------------
19413|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19414|      0|			}
19415|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
19416|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19416:8): [Folded, False: 0]
  |  Branch (19416:31): [Folded, False: 0]
  ------------------
19417|       |				/* A userland error handler can do funky things to the expression, so reset it */
19418|      0|				zval_ptr_dtor(expr_ptr);
19419|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19420|      0|			}
19421|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19422|      0|				zval_ptr_dtor_nogc(expr_ptr);
19423|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19423:5): [True: 0, False: 0]
  |  Branch (19423:5): [True: 0, False: 0]
  ------------------
19424|      0|			}
19425|      0|			str = ZSTR_EMPTY_ALLOC();
19426|      0|			goto str_index;
19427|      4|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      4|#define IS_DOUBLE					5
  ------------------
  |  Branch (19427:14): [True: 3, False: 1]
  ------------------
19428|      3|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
19429|      3|			goto num_index;
19430|      3|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (19430:14): [True: 1, False: 0]
  ------------------
19431|      1|			hval = 0;
19432|      1|			goto num_index;
19433|      1|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (19433:14): [True: 0, False: 0]
  ------------------
19434|      0|			hval = 1;
19435|      0|			goto num_index;
19436|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (19436:14): [True: 0, False: 0]
  ------------------
19437|      0|			zend_use_resource_as_offset(offset);
19438|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19439|      0|			goto num_index;
19440|      0|		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (19440:14): [Folded, False: 0]
  |  Branch (19440:35): [True: 0, False: 0]
  ------------------
19441|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19442|      0|			str = ZSTR_EMPTY_ALLOC();
19443|      0|			goto str_index;
19444|      0|		} else {
19445|      0|			zend_illegal_array_offset_access(offset);
19446|      0|			zval_ptr_dtor_nogc(expr_ptr);
19447|      0|		}
19448|       |
19449|       |
19450|     10|	} else {
19451|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19451:7): [True: 0, False: 0]
  ------------------
19452|      0|			zend_cannot_add_element();
19453|      0|			zval_ptr_dtor_nogc(expr_ptr);
19454|      0|		}
19455|      0|	}
19456|     10|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     10|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     10|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19456:2): [True: 0, False: 0]
  |  Branch (19456:2): [True: 0, False: 0]
  ------------------
19457|     10|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER:
20885|      4|{
20886|      4|	USE_OPLINE
20887|      4|	zval *expr_ptr, new_expr;
20888|       |
20889|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
20890|      4|	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  866|      8|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (20890:7): [Folded, False: 0]
  |  Branch (20890:31): [Folded, False: 0]
  ------------------
20891|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20892|      0|		expr_ptr = zend_get_bad_ptr();
20893|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20894|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
20895|      0|		} else {
20896|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20897|      0|		}
20898|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20899|      4|	} else {
20900|      4|		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20901|      4|		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (20901:7): [True: 4, Folded]
  ------------------
20902|       |			/* pass */
20903|      4|		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20903:14): [Folded, False: 0]
  ------------------
20904|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
20905|      0|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (20905:14): [Folded, False: 0]
  ------------------
20906|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20907|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
20908|      0|		} else /* if (IS_TMP_VAR == IS_VAR) */ {
20909|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20910|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
20911|       |
20912|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20913|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20914|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20915|      0|					expr_ptr = &new_expr;
20916|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20917|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20918|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
20919|      0|				}
20920|      0|			}
20921|      0|		}
20922|      4|	}
20923|       |
20924|      4|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (20924:6): [True: 4, Folded]
  ------------------
20925|      4|		zval *offset = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20926|      4|		zend_string *str;
20927|      4|		zend_ulong hval;
20928|       |
20929|      4|add_again:
20930|      4|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
20931|      1|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
20932|      1|			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (20932:8): [True: 1, Folded]
  ------------------
20933|      1|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      1|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      1|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20934|      0|					goto num_index;
20935|      0|				}
20936|      1|			}
20937|      1|str_index:
20938|      1|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20939|      3|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
20940|      1|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
20941|      3|num_index:
20942|      3|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20943|      3|		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (20943:14): [Folded, False: 2]
  ------------------
20944|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20945|      0|			goto add_again;
20946|      2|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
20947|      0|			zval tmp;
20948|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20948:8): [Folded, False: 0]
  |  Branch (20948:31): [Folded, False: 0]
  ------------------
20949|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20950|      0|			}
20951|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
20952|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (20952:8): [Folded, False: 0]
  |  Branch (20952:31): [Folded, False: 0]
  ------------------
20953|       |				/* A userland error handler can do funky things to the expression, so reset it */
20954|      0|				zval_ptr_dtor(expr_ptr);
20955|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20956|      0|			}
20957|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20958|      0|				zval_ptr_dtor_nogc(expr_ptr);
20959|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (20959:5): [True: 0, False: 0]
  |  Branch (20959:5): [True: 0, False: 0]
  ------------------
20960|      0|			}
20961|      0|			str = ZSTR_EMPTY_ALLOC();
20962|      0|			goto str_index;
20963|      2|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      2|#define IS_DOUBLE					5
  ------------------
  |  Branch (20963:14): [True: 0, False: 2]
  ------------------
20964|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
20965|      0|			goto num_index;
20966|      2|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      2|#define IS_FALSE					2
  ------------------
  |  Branch (20966:14): [True: 1, False: 1]
  ------------------
20967|      1|			hval = 0;
20968|      1|			goto num_index;
20969|      1|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (20969:14): [True: 1, False: 0]
  ------------------
20970|      1|			hval = 1;
20971|      1|			goto num_index;
20972|      1|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (20972:14): [True: 0, False: 0]
  ------------------
20973|      0|			zend_use_resource_as_offset(offset);
20974|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20975|      0|			goto num_index;
20976|      0|		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (20976:14): [Folded, False: 0]
  |  Branch (20976:37): [True: 0, False: 0]
  ------------------
20977|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20978|      0|			str = ZSTR_EMPTY_ALLOC();
20979|      0|			goto str_index;
20980|      0|		} else {
20981|      0|			zend_illegal_array_offset_access(offset);
20982|      0|			zval_ptr_dtor_nogc(expr_ptr);
20983|      0|		}
20984|      4|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20985|      4|	} else {
20986|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (20986:7): [True: 0, False: 0]
  ------------------
20987|      0|			zend_cannot_add_element();
20988|      0|			zval_ptr_dtor_nogc(expr_ptr);
20989|      0|		}
20990|      0|	}
20991|      4|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (20991:2): [True: 0, False: 0]
  |  Branch (20991:2): [True: 0, False: 0]
  ------------------
20992|      4|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER:
21647|     84|{
21648|     84|	USE_OPLINE
21649|     84|	zval *expr_ptr, new_expr;
21650|       |
21651|     84|	SAVE_OPLINE();
  ------------------
  |  |  428|     84|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     84|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21652|     84|	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|     84|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  866|    168|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (21652:7): [Folded, False: 0]
  |  Branch (21652:31): [Folded, False: 0]
  ------------------
21653|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21654|      0|		expr_ptr = zend_get_bad_ptr();
21655|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21656|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
21657|      0|		} else {
21658|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21659|      0|		}
21660|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21661|     84|	} else {
21662|     84|		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     84|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     84|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21663|     84|		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|     84|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|     84|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (21663:7): [True: 84, Folded]
  ------------------
21664|       |			/* pass */
21665|     84|		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21665:14): [Folded, False: 0]
  ------------------
21666|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
21667|      0|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (21667:14): [Folded, False: 0]
  ------------------
21668|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21669|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
21670|      0|		} else /* if (IS_TMP_VAR == IS_VAR) */ {
21671|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21672|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
21673|       |
21674|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21675|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21676|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21677|      0|					expr_ptr = &new_expr;
21678|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21679|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21680|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
21681|      0|				}
21682|      0|			}
21683|      0|		}
21684|     84|	}
21685|       |
21686|     84|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     84|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     84|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21686:6): [Folded, False: 84]
  ------------------
21687|      0|		zval *offset = NULL;
21688|      0|		zend_string *str;
21689|      0|		zend_ulong hval;
21690|       |
21691|      0|add_again:
21692|      0|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21693|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
21694|      0|			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21694:8): [True: 0, Folded]
  ------------------
21695|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21696|      0|					goto num_index;
21697|      0|				}
21698|      0|			}
21699|      0|str_index:
21700|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21701|      0|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21702|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
21703|      0|num_index:
21704|      0|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21705|      0|		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (21705:14): [Folded, False: 0]
  ------------------
21706|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21707|      0|			goto add_again;
21708|      0|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21709|      0|			zval tmp;
21710|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (21710:8): [Folded, False: 0]
  |  Branch (21710:31): [Folded, False: 0]
  ------------------
21711|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21712|      0|			}
21713|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
21714|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (21714:8): [Folded, False: 0]
  |  Branch (21714:31): [Folded, False: 0]
  ------------------
21715|       |				/* A userland error handler can do funky things to the expression, so reset it */
21716|      0|				zval_ptr_dtor(expr_ptr);
21717|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21718|      0|			}
21719|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21720|      0|				zval_ptr_dtor_nogc(expr_ptr);
21721|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21721:5): [True: 0, False: 0]
  |  Branch (21721:5): [True: 0, False: 0]
  ------------------
21722|      0|			}
21723|      0|			str = ZSTR_EMPTY_ALLOC();
21724|      0|			goto str_index;
21725|      0|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (21725:14): [True: 0, False: 0]
  ------------------
21726|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
21727|      0|			goto num_index;
21728|      0|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (21728:14): [True: 0, False: 0]
  ------------------
21729|      0|			hval = 0;
21730|      0|			goto num_index;
21731|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (21731:14): [True: 0, False: 0]
  ------------------
21732|      0|			hval = 1;
21733|      0|			goto num_index;
21734|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (21734:14): [True: 0, False: 0]
  ------------------
21735|      0|			zend_use_resource_as_offset(offset);
21736|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21737|      0|			goto num_index;
21738|      0|		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (21738:14): [Folded, False: 0]
  |  Branch (21738:36): [True: 0, False: 0]
  ------------------
21739|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21740|      0|			str = ZSTR_EMPTY_ALLOC();
21741|      0|			goto str_index;
21742|      0|		} else {
21743|      0|			zend_illegal_array_offset_access(offset);
21744|      0|			zval_ptr_dtor_nogc(expr_ptr);
21745|      0|		}
21746|       |
21747|       |
21748|     84|	} else {
21749|     84|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|     84|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     84|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     84|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21749:7): [True: 1, False: 83]
  ------------------
21750|      1|			zend_cannot_add_element();
21751|      1|			zval_ptr_dtor_nogc(expr_ptr);
21752|      1|		}
21753|     84|	}
21754|     84|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     84|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     84|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     84|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 84, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     84|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     84|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     84|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     84|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     84|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     84|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21754:2): [True: 0, False: 0]
  |  Branch (21754:2): [True: 0, False: 0]
  ------------------
21755|     84|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER:
22746|      8|{
22747|      8|	USE_OPLINE
22748|      8|	zval *expr_ptr, new_expr;
22749|       |
22750|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22751|      8|	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  866|     16|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22751:7): [Folded, False: 0]
  |  Branch (22751:31): [Folded, False: 0]
  ------------------
22752|      0|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22753|      0|		expr_ptr = zend_get_bad_ptr();
22754|      0|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22755|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
22756|      0|		} else {
22757|      0|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22758|      0|		}
22759|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22760|      8|	} else {
22761|      8|		expr_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22762|      8|		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (22762:7): [True: 8, Folded]
  ------------------
22763|       |			/* pass */
22764|      8|		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (22764:14): [Folded, False: 0]
  ------------------
22765|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
22766|      0|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (22766:14): [Folded, False: 0]
  ------------------
22767|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22768|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
22769|      0|		} else /* if (IS_TMP_VAR == IS_VAR) */ {
22770|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22771|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
22772|       |
22773|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22774|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22775|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22776|      0|					expr_ptr = &new_expr;
22777|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22778|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22779|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
22780|      0|				}
22781|      0|			}
22782|      0|		}
22783|      8|	}
22784|       |
22785|      8|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (22785:6): [True: 8, Folded]
  ------------------
22786|      8|		zval *offset = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22787|      8|		zend_string *str;
22788|      8|		zend_ulong hval;
22789|       |
22790|      8|add_again:
22791|      8|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
22792|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
22793|      0|			if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (22793:8): [True: 0, Folded]
  ------------------
22794|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22795|      0|					goto num_index;
22796|      0|				}
22797|      0|			}
22798|      0|str_index:
22799|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22800|      8|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 3]
  |  |  ------------------
  ------------------
22801|      5|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
22802|      8|num_index:
22803|      8|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22804|      8|		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (22804:14): [True: 3, Folded]
  ------------------
22805|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22806|      0|			goto add_again;
22807|      3|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
22808|      0|			zval tmp;
22809|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22809:8): [Folded, False: 0]
  |  Branch (22809:31): [Folded, False: 0]
  ------------------
22810|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22811|      0|			}
22812|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
22813|      0|			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (22813:8): [Folded, False: 0]
  |  Branch (22813:31): [Folded, False: 0]
  ------------------
22814|       |				/* A userland error handler can do funky things to the expression, so reset it */
22815|      0|				zval_ptr_dtor(expr_ptr);
22816|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22817|      0|			}
22818|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22819|      0|				zval_ptr_dtor_nogc(expr_ptr);
22820|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (22820:5): [True: 0, False: 0]
  |  Branch (22820:5): [True: 0, False: 0]
  ------------------
22821|      0|			}
22822|      0|			str = ZSTR_EMPTY_ALLOC();
22823|      0|			goto str_index;
22824|      3|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      3|#define IS_DOUBLE					5
  ------------------
  |  Branch (22824:14): [True: 3, False: 0]
  ------------------
22825|      3|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
22826|      3|			goto num_index;
22827|      3|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (22827:14): [True: 0, False: 0]
  ------------------
22828|      0|			hval = 0;
22829|      0|			goto num_index;
22830|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (22830:14): [True: 0, False: 0]
  ------------------
22831|      0|			hval = 1;
22832|      0|			goto num_index;
22833|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (22833:14): [True: 0, False: 0]
  ------------------
22834|      0|			zend_use_resource_as_offset(offset);
22835|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22836|      0|			goto num_index;
22837|      0|		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (22837:14): [True: 0, Folded]
  |  Branch (22837:32): [True: 0, False: 0]
  ------------------
22838|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22839|      0|			str = ZSTR_EMPTY_ALLOC();
22840|      0|			goto str_index;
22841|      0|		} else {
22842|      0|			zend_illegal_array_offset_access(offset);
22843|      0|			zval_ptr_dtor_nogc(expr_ptr);
22844|      0|		}
22845|       |
22846|       |
22847|      8|	} else {
22848|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22848:7): [True: 0, False: 0]
  ------------------
22849|      0|			zend_cannot_add_element();
22850|      0|			zval_ptr_dtor_nogc(expr_ptr);
22851|      0|		}
22852|      0|	}
22853|      8|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22853:2): [True: 0, False: 0]
  |  Branch (22853:2): [True: 0, False: 0]
  ------------------
22854|      8|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER:
30114|      3|{
30115|      3|	USE_OPLINE
30116|      3|	zval *expr_ptr, new_expr;
30117|       |
30118|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30119|      3|	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (30119:7): [True: 3, Folded]
  |  Branch (30119:27): [Folded, False: 0]
  ------------------
30120|      3|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
30121|      3|		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30122|      3|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      3|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30123|      1|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30124|      2|		} else {
30125|      2|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      2|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      2|		zval *_z = (z);											\
  |  | 1218|      2|		zend_reference *_ref =									\
  |  | 1219|      2|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      2|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      2|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      2|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      2|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      2|		_ref->sources.ptr = NULL;									\
  |  | 1224|      2|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      2|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      2|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
30126|      2|		}
30127|      3|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30128|      3|	} else {
30129|      0|		expr_ptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30130|      0|		if (IS_VAR == IS_TMP_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (30130:7): [Folded, False: 0]
  ------------------
30131|       |			/* pass */
30132|      0|		} else if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (30132:14): [Folded, False: 0]
  ------------------
30133|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
30134|      0|		} else if (IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if (IS_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (30134:14): [Folded, False: 0]
  ------------------
30135|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30136|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
30137|      0|		} else /* if (IS_VAR == IS_VAR) */ {
30138|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30139|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
30140|       |
30141|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30142|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30143|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30144|      0|					expr_ptr = &new_expr;
30145|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30146|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30147|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30148|      0|				}
30149|      0|			}
30150|      0|		}
30151|      0|	}
30152|       |
30153|      3|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (30153:6): [Folded, False: 3]
  ------------------
30154|      0|		zval *offset = NULL;
30155|      0|		zend_string *str;
30156|      0|		zend_ulong hval;
30157|       |
30158|      0|add_again:
30159|      0|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30160|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
30161|      0|			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (30161:8): [True: 0, Folded]
  ------------------
30162|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30163|      0|					goto num_index;
30164|      0|				}
30165|      0|			}
30166|      0|str_index:
30167|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30168|      0|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30169|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
30170|      0|num_index:
30171|      0|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30172|      0|		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (30172:14): [Folded, False: 0]
  ------------------
30173|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30174|      0|			goto add_again;
30175|      0|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30176|      0|			zval tmp;
30177|      0|			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (30177:8): [Folded, False: 0]
  |  Branch (30177:27): [True: 0, Folded]
  ------------------
30178|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30179|      0|			}
30180|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
30181|      0|			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (30181:8): [Folded, False: 0]
  |  Branch (30181:27): [True: 0, Folded]
  ------------------
30182|       |				/* A userland error handler can do funky things to the expression, so reset it */
30183|      0|				zval_ptr_dtor(expr_ptr);
30184|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30185|      0|			}
30186|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30187|      0|				zval_ptr_dtor_nogc(expr_ptr);
30188|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30188:5): [True: 0, False: 0]
  |  Branch (30188:5): [True: 0, False: 0]
  ------------------
30189|      0|			}
30190|      0|			str = ZSTR_EMPTY_ALLOC();
30191|      0|			goto str_index;
30192|      0|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (30192:14): [True: 0, False: 0]
  ------------------
30193|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
30194|      0|			goto num_index;
30195|      0|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (30195:14): [True: 0, False: 0]
  ------------------
30196|      0|			hval = 0;
30197|      0|			goto num_index;
30198|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (30198:14): [True: 0, False: 0]
  ------------------
30199|      0|			hval = 1;
30200|      0|			goto num_index;
30201|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (30201:14): [True: 0, False: 0]
  ------------------
30202|      0|			zend_use_resource_as_offset(offset);
30203|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30204|      0|			goto num_index;
30205|      0|		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (30205:14): [Folded, False: 0]
  |  Branch (30205:36): [True: 0, False: 0]
  ------------------
30206|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30207|      0|			str = ZSTR_EMPTY_ALLOC();
30208|      0|			goto str_index;
30209|      0|		} else {
30210|      0|			zend_illegal_array_offset_access(offset);
30211|      0|			zval_ptr_dtor_nogc(expr_ptr);
30212|      0|		}
30213|       |
30214|       |
30215|      3|	} else {
30216|      3|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30216:7): [True: 0, False: 3]
  ------------------
30217|      0|			zend_cannot_add_element();
30218|      0|			zval_ptr_dtor_nogc(expr_ptr);
30219|      0|		}
30220|      3|	}
30221|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30221:2): [True: 0, False: 0]
  |  Branch (30221:2): [True: 0, False: 0]
  ------------------
30222|      3|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER:
44059|      6|{
44060|      6|	USE_OPLINE
44061|      6|	zval *expr_ptr, new_expr;
44062|       |
44063|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44064|      6|	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  866|     12|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (44064:7): [Folded, False: 0]
  |  Branch (44064:26): [True: 0, Folded]
  ------------------
44065|      6|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
44066|      2|		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44067|      2|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44068|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
44069|      2|		} else {
44070|      2|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      2|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      2|		zval *_z = (z);											\
  |  | 1218|      2|		zend_reference *_ref =									\
  |  | 1219|      2|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      2|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      2|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      2|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      2|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      2|		_ref->sources.ptr = NULL;									\
  |  | 1224|      2|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      2|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      2|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
44071|      2|		}
44072|       |
44073|       |
44074|      4|	} else {
44075|      4|		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44076|      4|		if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (44076:7): [Folded, False: 4]
  ------------------
44077|       |			/* pass */
44078|      4|		} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44078:14): [Folded, False: 4]
  ------------------
44079|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
44080|      4|		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (44080:14): [True: 4, Folded]
  ------------------
44081|      4|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      4|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      4|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
44082|      4|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      4|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      4|	zval *_pz = (pz);				\
  |  | 1287|      4|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      4|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      4|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      4|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
44083|      4|		} else /* if (IS_CV == IS_VAR) */ {
44084|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44085|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
44086|       |
44087|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44088|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44089|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44090|      0|					expr_ptr = &new_expr;
44091|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44092|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44093|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
44094|      0|				}
44095|      0|			}
44096|      0|		}
44097|      4|	}
44098|       |
44099|      6|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (44099:6): [True: 6, Folded]
  ------------------
44100|      6|		zval *offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
44101|      6|		zend_string *str;
44102|      6|		zend_ulong hval;
44103|       |
44104|      6|add_again:
44105|      6|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 1]
  |  |  ------------------
  ------------------
44106|      5|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44107|      5|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44107:8): [Folded, False: 5]
  ------------------
44108|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44109|      0|					goto num_index;
44110|      0|				}
44111|      0|			}
44112|      5|str_index:
44113|      5|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44114|      5|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
44115|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
44116|      1|num_index:
44117|      1|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44118|      1|		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44118:14): [Folded, False: 1]
  ------------------
44119|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44120|      0|			goto add_again;
44121|      1|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
44122|      0|			zval tmp;
44123|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (44123:8): [True: 0, Folded]
  |  Branch (44123:26): [Folded, False: 0]
  ------------------
44124|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44125|      0|			}
44126|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
44127|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (44127:8): [True: 0, Folded]
  |  Branch (44127:26): [Folded, False: 0]
  ------------------
44128|       |				/* A userland error handler can do funky things to the expression, so reset it */
44129|      0|				zval_ptr_dtor(expr_ptr);
44130|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44131|      0|			}
44132|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44133|      0|				zval_ptr_dtor_nogc(expr_ptr);
44134|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (44134:5): [True: 0, False: 0]
  |  Branch (44134:5): [True: 0, False: 0]
  ------------------
44135|      0|			}
44136|      0|			str = ZSTR_EMPTY_ALLOC();
44137|      0|			goto str_index;
44138|      1|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (44138:14): [True: 0, False: 1]
  ------------------
44139|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
44140|      0|			goto num_index;
44141|      1|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (44141:14): [True: 1, False: 0]
  ------------------
44142|      1|			hval = 0;
44143|      1|			goto num_index;
44144|      1|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (44144:14): [True: 0, False: 0]
  ------------------
44145|      0|			hval = 1;
44146|      0|			goto num_index;
44147|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (44147:14): [True: 0, False: 0]
  ------------------
44148|      0|			zend_use_resource_as_offset(offset);
44149|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44150|      0|			goto num_index;
44151|      0|		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (44151:14): [Folded, False: 0]
  |  Branch (44151:35): [True: 0, False: 0]
  ------------------
44152|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44153|      0|			str = ZSTR_EMPTY_ALLOC();
44154|      0|			goto str_index;
44155|      0|		} else {
44156|      0|			zend_illegal_array_offset_access(offset);
44157|      0|			zval_ptr_dtor_nogc(expr_ptr);
44158|      0|		}
44159|       |
44160|       |
44161|      6|	} else {
44162|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44162:7): [True: 0, False: 0]
  ------------------
44163|      0|			zend_cannot_add_element();
44164|      0|			zval_ptr_dtor_nogc(expr_ptr);
44165|      0|		}
44166|      0|	}
44167|      6|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44167:2): [True: 0, False: 0]
  |  Branch (44167:2): [True: 0, False: 0]
  ------------------
44168|      6|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER:
47722|      1|{
47723|      1|	USE_OPLINE
47724|      1|	zval *expr_ptr, new_expr;
47725|       |
47726|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
47727|      1|	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (47727:7): [Folded, False: 0]
  |  Branch (47727:26): [True: 0, Folded]
  ------------------
47728|      1|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
47729|      1|		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47730|      1|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47731|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47732|      1|		} else {
47733|      1|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|      1|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      1|		zval *_z = (z);											\
  |  | 1218|      1|		zend_reference *_ref =									\
  |  | 1219|      1|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      1|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      1|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      1|		_ref->sources.ptr = NULL;									\
  |  | 1224|      1|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      1|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
47734|      1|		}
47735|       |
47736|       |
47737|      1|	} else {
47738|      0|		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47739|      0|		if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (47739:7): [Folded, False: 0]
  ------------------
47740|       |			/* pass */
47741|      0|		} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (47741:14): [Folded, False: 0]
  ------------------
47742|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
47743|      0|		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (47743:14): [True: 0, Folded]
  ------------------
47744|      0|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47745|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
47746|      0|		} else /* if (IS_CV == IS_VAR) */ {
47747|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47748|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
47749|       |
47750|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47751|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47752|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47753|      0|					expr_ptr = &new_expr;
47754|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47755|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47756|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
47757|      0|				}
47758|      0|			}
47759|      0|		}
47760|      0|	}
47761|       |
47762|      1|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (47762:6): [True: 1, Folded]
  ------------------
47763|      1|		zval *offset = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47764|      1|		zend_string *str;
47765|      1|		zend_ulong hval;
47766|       |
47767|      1|add_again:
47768|      1|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47769|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
47770|      0|			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (47770:8): [True: 0, Folded]
  ------------------
47771|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47772|      0|					goto num_index;
47773|      0|				}
47774|      0|			}
47775|      0|str_index:
47776|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47777|      1|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47778|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
47779|      1|num_index:
47780|      1|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47781|      1|		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (47781:14): [Folded, False: 1]
  ------------------
47782|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47783|      0|			goto add_again;
47784|      1|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
47785|      0|			zval tmp;
47786|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47786:8): [True: 0, Folded]
  |  Branch (47786:26): [Folded, False: 0]
  ------------------
47787|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47788|      0|			}
47789|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
47790|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (47790:8): [True: 0, Folded]
  |  Branch (47790:26): [Folded, False: 0]
  ------------------
47791|       |				/* A userland error handler can do funky things to the expression, so reset it */
47792|      0|				zval_ptr_dtor(expr_ptr);
47793|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
47794|      0|			}
47795|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
47796|      0|				zval_ptr_dtor_nogc(expr_ptr);
47797|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (47797:5): [True: 0, False: 0]
  |  Branch (47797:5): [True: 0, False: 0]
  ------------------
47798|      0|			}
47799|      0|			str = ZSTR_EMPTY_ALLOC();
47800|      0|			goto str_index;
47801|      1|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (47801:14): [True: 0, False: 1]
  ------------------
47802|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
47803|      0|			goto num_index;
47804|      1|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (47804:14): [True: 0, False: 1]
  ------------------
47805|      0|			hval = 0;
47806|      0|			goto num_index;
47807|      1|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (47807:14): [True: 1, False: 0]
  ------------------
47808|      1|			hval = 1;
47809|      1|			goto num_index;
47810|      1|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (47810:14): [True: 0, False: 0]
  ------------------
47811|      0|			zend_use_resource_as_offset(offset);
47812|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
47813|      0|			goto num_index;
47814|      0|		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (47814:14): [Folded, False: 0]
  |  Branch (47814:37): [True: 0, False: 0]
  ------------------
47815|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
47816|      0|			str = ZSTR_EMPTY_ALLOC();
47817|      0|			goto str_index;
47818|      0|		} else {
47819|      0|			zend_illegal_array_offset_access(offset);
47820|      0|			zval_ptr_dtor_nogc(expr_ptr);
47821|      0|		}
47822|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
47823|      1|	} else {
47824|      0|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (47824:7): [True: 0, False: 0]
  ------------------
47825|      0|			zend_cannot_add_element();
47826|      0|			zval_ptr_dtor_nogc(expr_ptr);
47827|      0|		}
47828|      0|	}
47829|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (47829:2): [True: 0, False: 0]
  |  Branch (47829:2): [True: 0, False: 0]
  ------------------
47830|      1|}
zend_execute.c:ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER:
49427|     51|{
49428|     51|	USE_OPLINE
49429|     51|	zval *expr_ptr, new_expr;
49430|       |
49431|     51|	SAVE_OPLINE();
  ------------------
  |  |  428|     51|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     51|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49432|     51|	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|     51|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  866|    102|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49432:7): [Folded, False: 0]
  |  Branch (49432:26): [True: 0, Folded]
  ------------------
49433|     51|	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
  ------------------
  |  |  457|     51|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 12, False: 39]
  |  |  ------------------
  ------------------
49434|     12|		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49435|     12|		if (Z_ISREF_P(expr_ptr)) {
  ------------------
  |  |  964|     12|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     12|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     12|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49436|      0|			Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49437|     12|		} else {
49438|     12|			ZVAL_MAKE_REF_EX(expr_ptr, 2);
  ------------------
  |  | 1216|     12|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|     12|		zval *_z = (z);											\
  |  | 1218|     12|		zend_reference *_ref =									\
  |  | 1219|     12|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|     12|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|     12|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|     12|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     12|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     12|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     12|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     12|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     12|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|     12|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|     12|	do {												\
  |  |  |  | 1417|     12|		zval *_z1 = (z);								\
  |  |  |  | 1418|     12|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     12|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     12|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     12|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     12|	do {												\
  |  |  |  |  |  | 1408|     12|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     12|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     12|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|     12|		_ref->sources.ptr = NULL;									\
  |  | 1224|     12|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     12|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     12|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|     12|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     12|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     12|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     12|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     12|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     12|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     12|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
49439|     12|		}
49440|       |
49441|       |
49442|     39|	} else {
49443|     39|		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     39|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     39|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49444|     39|		if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  867|     39|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  865|     39|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (49444:7): [Folded, False: 39]
  ------------------
49445|       |			/* pass */
49446|     39|		} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|     39|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|     39|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49446:14): [Folded, False: 39]
  ------------------
49447|      0|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
49448|     39|		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     39|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     39|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49448:14): [True: 39, Folded]
  ------------------
49449|     39|			ZVAL_DEREF(expr_ptr);
  ------------------
  |  | 1474|     39|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     39|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     39|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 8, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      8|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      8|		}												\
  |  | 1478|     39|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 39]
  |  |  ------------------
  ------------------
49450|     39|			Z_TRY_ADDREF_P(expr_ptr);
  ------------------
  |  | 1285|     39|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     39|	zval *_pz = (pz);				\
  |  | 1287|     39|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     39|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     39|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     39|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 27, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|     27|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|     27|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|     27|	}								\
  |  | 1290|     39|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 39]
  |  |  ------------------
  ------------------
49451|     39|		} else /* if (IS_CV == IS_VAR) */ {
49452|      0|			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49453|      0|				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
49454|       |
49455|      0|				expr_ptr = Z_REFVAL_P(expr_ptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49456|      0|				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49457|      0|					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49458|      0|					expr_ptr = &new_expr;
49459|      0|					efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49460|      0|				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49461|      0|					Z_ADDREF_P(expr_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49462|      0|				}
49463|      0|			}
49464|      0|		}
49465|     39|	}
49466|       |
49467|     51|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     51|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     51|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49467:6): [Folded, False: 51]
  ------------------
49468|      0|		zval *offset = NULL;
49469|      0|		zend_string *str;
49470|      0|		zend_ulong hval;
49471|       |
49472|      0|add_again:
49473|      0|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49474|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49475|      0|			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49475:8): [True: 0, Folded]
  ------------------
49476|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49477|      0|					goto num_index;
49478|      0|				}
49479|      0|			}
49480|      0|str_index:
49481|      0|			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49482|      0|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49483|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
49484|      0|num_index:
49485|      0|			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49486|      0|		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49486:14): [Folded, False: 0]
  ------------------
49487|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49488|      0|			goto add_again;
49489|      0|		} else if (UNEXPECTED(Z_TYPE_P(offset) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49490|      0|			zval tmp;
49491|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49491:8): [True: 0, Folded]
  |  Branch (49491:26): [Folded, False: 0]
  ------------------
49492|      0|				ZVAL_COPY(&tmp, expr_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49493|      0|			}
49494|      0|			zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
49495|      0|			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49495:8): [True: 0, Folded]
  |  Branch (49495:26): [Folded, False: 0]
  ------------------
49496|       |				/* A userland error handler can do funky things to the expression, so reset it */
49497|      0|				zval_ptr_dtor(expr_ptr);
49498|      0|				ZVAL_COPY_VALUE(expr_ptr, &tmp);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49499|      0|			}
49500|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49501|      0|				zval_ptr_dtor_nogc(expr_ptr);
49502|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49502:5): [True: 0, False: 0]
  |  Branch (49502:5): [True: 0, False: 0]
  ------------------
49503|      0|			}
49504|      0|			str = ZSTR_EMPTY_ALLOC();
49505|      0|			goto str_index;
49506|      0|		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (49506:14): [True: 0, False: 0]
  ------------------
49507|      0|			hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
49508|      0|			goto num_index;
49509|      0|		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (49509:14): [True: 0, False: 0]
  ------------------
49510|      0|			hval = 0;
49511|      0|			goto num_index;
49512|      0|		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (49512:14): [True: 0, False: 0]
  ------------------
49513|      0|			hval = 1;
49514|      0|			goto num_index;
49515|      0|		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (49515:14): [True: 0, False: 0]
  ------------------
49516|      0|			zend_use_resource_as_offset(offset);
49517|      0|			hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49518|      0|			goto num_index;
49519|      0|		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (49519:14): [Folded, False: 0]
  |  Branch (49519:36): [True: 0, False: 0]
  ------------------
49520|      0|			ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49521|      0|			str = ZSTR_EMPTY_ALLOC();
49522|      0|			goto str_index;
49523|      0|		} else {
49524|      0|			zend_illegal_array_offset_access(offset);
49525|      0|			zval_ptr_dtor_nogc(expr_ptr);
49526|      0|		}
49527|       |
49528|       |
49529|     51|	} else {
49530|     51|		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
  ------------------
  |  |  997|     51|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     51|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     51|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49530:7): [True: 0, False: 51]
  ------------------
49531|      0|			zend_cannot_add_element();
49532|      0|			zval_ptr_dtor_nogc(expr_ptr);
49533|      0|		}
49534|     51|	}
49535|     51|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     51|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     51|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     51|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 51, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     51|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     51|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     51|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     51|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     51|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     51|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49535:2): [True: 0, False: 0]
  |  Branch (49535:2): [True: 0, False: 0]
  ------------------
49536|     51|}
zend_execute.c:ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER:
 5382|  5.38k|{
 5383|  5.38k|	USE_OPLINE
 5384|  5.38k|	zend_op_array *new_op_array;
 5385|  5.38k|	zval *inc_filename;
 5386|       |
 5387|  5.38k|	SAVE_OPLINE();
  ------------------
  |  |  428|  5.38k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  5.38k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5388|  5.38k|	inc_filename = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  5.38k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5389|  5.38k|	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
 5390|  5.38k|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|  5.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 706, False: 4.67k]
  |  |  ------------------
  ------------------
 5391|       |
 5392|       |
 5393|    706|		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
  ------------------
  |  | 5301|  1.41k|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
  |  Branch (5393:7): [True: 706, False: 0]
  |  Branch (5393:45): [True: 0, False: 706]
  ------------------
 5394|      0|			destroy_op_array(new_op_array);
 5395|      0|			efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5396|      0|		}
 5397|    706|		UNDEF_RESULT();
  ------------------
  |  | 5907|    706|#define UNDEF_RESULT() do { \
  |  | 5908|    706|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|    706|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|    706|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 706]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|    706|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 706]
  |  |  ------------------
  ------------------
 5398|    706|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|    706|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|    706|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|    706|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    706|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|    706|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5398:3): [True: 0, False: 706]
  |  Branch (5398:3): [True: 706, False: 0]
  ------------------
 5399|  4.67k|	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
  ------------------
  |  | 5301|  4.67k|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
  |  Branch (5399:13): [True: 0, False: 4.67k]
  ------------------
 5400|      0|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5401|      0|			ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5402|      0|		}
 5403|  4.67k|	} else if (UNEXPECTED(new_op_array == NULL)) {
  ------------------
  |  |  457|  4.67k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 21, False: 4.65k]
  |  |  ------------------
  ------------------
 5404|     21|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|     21|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|     21|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 21]
  |  |  ------------------
  ------------------
 5405|      0|			ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5406|      0|		}
 5407|  4.65k|	} else if (new_op_array->last == 1
  ------------------
  |  Branch (5407:13): [True: 13, False: 4.64k]
  ------------------
 5408|     13|			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
  ------------------
  |  |  185|  4.66k|#define ZEND_RETURN                          62
  ------------------
  |  Branch (5408:7): [True: 13, False: 0]
  ------------------
 5409|     13|			&& new_op_array->opcodes[0].op1_type == IS_CONST
  ------------------
  |  |  864|  4.66k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5409:7): [True: 13, False: 0]
  ------------------
 5410|     13|			&& EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 5411|      0|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5412|      0|			const zend_op *op = new_op_array->opcodes;
 5413|       |
 5414|      0|			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5415|      0|		}
 5416|      0|		zend_destroy_static_vars(new_op_array);
 5417|      0|		destroy_op_array(new_op_array);
 5418|      0|		efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5419|  4.65k|	} else {
 5420|  4.65k|		zval *return_value = NULL;
 5421|  4.65k|		zend_execute_data *call;
 5422|  4.65k|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|  4.65k|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|  4.65k|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 3, False: 4.65k]
  |  |  ------------------
  ------------------
 5423|      3|			return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5424|      3|		}
 5425|       |
 5426|  4.65k|		new_op_array->scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|  4.65k|#define EX(element) 			((execute_data)->element)
  ------------------
 5427|       |
 5428|  4.65k|		call = zend_vm_stack_push_call_frame(
 5429|  4.65k|			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  677|  4.65k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  657|  4.65k|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|  4.65k|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|  4.65k|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  4.65k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  4.65k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  4.65k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  4.65k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  682|  4.65k|#define ZEND_CALL_NESTED_CODE        (ZEND_CALL_CODE | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  661|  4.65k|#define ZEND_CALL_CODE               (1 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_CODE        (ZEND_CALL_CODE | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|  4.65k|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  666|  4.65k|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
 5430|  4.65k|			(zend_function*)new_op_array, 0,
 5431|  4.65k|			Z_PTR(EX(This)));
  ------------------
  |  | 1052|  4.65k|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
 5432|       |
 5433|  4.65k|		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  732|  4.65k|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|  4.65k|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  4.65k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  666|  4.65k|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (5433:7): [True: 21, False: 4.63k]
  ------------------
 5434|     21|			call->symbol_table = EX(symbol_table);
  ------------------
  |  |  730|     21|#define EX(element) 			((execute_data)->element)
  ------------------
 5435|  4.63k|		} else {
 5436|  4.63k|			call->symbol_table = zend_rebuild_symbol_table();
 5437|  4.63k|		}
 5438|       |
 5439|  4.65k|		call->prev_execute_data = execute_data;
 5440|  4.65k|		i_init_code_execute_data(call, new_op_array, return_value);
 5441|       |
 5442|       |
 5443|  4.65k|		if (EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|  4.65k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4.65k]
  |  |  ------------------
  ------------------
 5444|       |
 5445|       |
 5446|      0|			ZEND_VM_ENTER();
  ------------------
  |  |  444|      0|# define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |               # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5447|  4.65k|		} else {
 5448|  4.65k|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
  ------------------
  |  |  703|  4.65k|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|  4.65k|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|  4.65k|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|  4.65k|		call_info |= (flag); \
  |  |  |  |  697|  4.65k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 4.65k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|  4.65k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 4.65k]
  |  |  ------------------
  ------------------
 5449|  4.65k|			zend_execute_ex(call);
 5450|  4.65k|			zend_vm_stack_free_call_frame(call);
 5451|  4.65k|		}
 5452|       |
 5453|  4.65k|		zend_destroy_static_vars(new_op_array);
 5454|  4.65k|		destroy_op_array(new_op_array);
 5455|  4.65k|		efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|  4.65k|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|  4.65k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  4.65k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  4.65k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  4.65k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  4.65k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5456|  4.65k|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|  4.65k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.65k]
  |  |  ------------------
  ------------------
 5457|      0|			zend_rethrow_exception(execute_data);
 5458|       |
 5459|       |
 5460|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5461|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5461:4): [True: 0, False: 0]
  |  Branch (5461:4): [True: 0, False: 0]
  ------------------
 5462|      0|		}
 5463|  4.65k|	}
 5464|       |
 5465|       |
 5466|  4.67k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  5.38k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     46|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  4.67k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4.67k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  4.67k|	} else { \
  |  |  |  | 5761|  4.67k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  4.67k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  4.67k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     46|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     46|	} \
  |  |  |  | 5764|  4.67k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     46|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5466:2): [True: 0, False: 4.67k]
  |  Branch (5466:2): [True: 46, False: 4.62k]
  ------------------
 5467|  4.67k|}
zend_execute.c:ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER:
17503|      7|{
17504|      7|	USE_OPLINE
17505|      7|	zend_op_array *new_op_array;
17506|      7|	zval *inc_filename;
17507|       |
17508|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17509|      7|	inc_filename = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      7|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      7|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17510|      7|	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
17511|      7|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 5]
  |  |  ------------------
  ------------------
17512|      2|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17513|      2|		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
  ------------------
  |  | 5301|      4|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
  |  Branch (17513:7): [True: 2, False: 0]
  |  Branch (17513:45): [True: 0, False: 2]
  ------------------
17514|      0|			destroy_op_array(new_op_array);
17515|      0|			efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17516|      0|		}
17517|      2|		UNDEF_RESULT();
  ------------------
  |  | 5907|      2|#define UNDEF_RESULT() do { \
  |  | 5908|      2|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 1, False: 1]
  |  |  ------------------
  |  | 5909|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      1|		} \
  |  | 5911|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17518|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17518:3): [True: 0, False: 2]
  |  Branch (17518:3): [True: 2, False: 0]
  ------------------
17519|      5|	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
  ------------------
  |  | 5301|      5|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
  |  Branch (17519:13): [True: 0, False: 5]
  ------------------
17520|      0|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17521|      0|			ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17522|      0|		}
17523|      5|	} else if (UNEXPECTED(new_op_array == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
17524|      1|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      1|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17525|      0|			ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17526|      0|		}
17527|      4|	} else if (new_op_array->last == 1
  ------------------
  |  Branch (17527:13): [True: 0, False: 4]
  ------------------
17528|      0|			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
  ------------------
  |  |  185|      4|#define ZEND_RETURN                          62
  ------------------
  |  Branch (17528:7): [True: 0, False: 0]
  ------------------
17529|      0|			&& new_op_array->opcodes[0].op1_type == IS_CONST
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17529:7): [True: 0, False: 0]
  ------------------
17530|      0|			&& EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17531|      0|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17532|      0|			const zend_op *op = new_op_array->opcodes;
17533|       |
17534|      0|			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17535|      0|		}
17536|      0|		zend_destroy_static_vars(new_op_array);
17537|      0|		destroy_op_array(new_op_array);
17538|      0|		efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17539|      4|	} else {
17540|      4|		zval *return_value = NULL;
17541|      4|		zend_execute_data *call;
17542|      4|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      4|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 2, False: 2]
  |  |  ------------------
  ------------------
17543|      2|			return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17544|      2|		}
17545|       |
17546|      4|		new_op_array->scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
17547|       |
17548|      4|		call = zend_vm_stack_push_call_frame(
17549|      4|			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  657|      4|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      4|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      4|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  682|      4|#define ZEND_CALL_NESTED_CODE        (ZEND_CALL_CODE | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  661|      4|#define ZEND_CALL_CODE               (1 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_CODE        (ZEND_CALL_CODE | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      4|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  666|      4|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
17550|      4|			(zend_function*)new_op_array, 0,
17551|      4|			Z_PTR(EX(This)));
  ------------------
  |  | 1052|      4|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
17552|       |
17553|      4|		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  732|      4|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|      4|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  666|      4|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (17553:7): [True: 2, False: 2]
  ------------------
17554|      2|			call->symbol_table = EX(symbol_table);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
17555|      2|		} else {
17556|      2|			call->symbol_table = zend_rebuild_symbol_table();
17557|      2|		}
17558|       |
17559|      4|		call->prev_execute_data = execute_data;
17560|      4|		i_init_code_execute_data(call, new_op_array, return_value);
17561|       |
17562|       |
17563|      4|		if (EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
17564|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17565|      0|			ZEND_VM_ENTER();
  ------------------
  |  |  444|      0|# define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |               # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17566|      4|		} else {
17567|      4|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
  ------------------
  |  |  703|      4|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      4|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      4|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      4|		call_info |= (flag); \
  |  |  |  |  697|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
17568|      4|			zend_execute_ex(call);
17569|      4|			zend_vm_stack_free_call_frame(call);
17570|      4|		}
17571|       |
17572|      4|		zend_destroy_static_vars(new_op_array);
17573|      4|		destroy_op_array(new_op_array);
17574|      4|		efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      4|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17575|      4|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
17576|      2|			zend_rethrow_exception(execute_data);
17577|      2|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17578|      2|			UNDEF_RESULT();
  ------------------
  |  | 5907|      2|#define UNDEF_RESULT() do { \
  |  | 5908|      2|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17579|      2|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17579:4): [True: 0, False: 2]
  |  Branch (17579:4): [True: 2, False: 0]
  ------------------
17580|      2|		}
17581|      4|	}
17582|      3|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17583|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17583:2): [True: 0, False: 3]
  |  Branch (17583:2): [True: 3, False: 0]
  ------------------
17584|      3|}
zend_execute.c:ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER:
40176|      6|{
40177|      6|	USE_OPLINE
40178|      6|	zend_op_array *new_op_array;
40179|      6|	zval *inc_filename;
40180|       |
40181|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40182|      6|	inc_filename = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40183|      6|	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
40184|      6|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 3]
  |  |  ------------------
  ------------------
40185|       |
40186|       |
40187|      3|		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
  ------------------
  |  | 5301|      6|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
  |  Branch (40187:7): [True: 3, False: 0]
  |  Branch (40187:45): [True: 0, False: 3]
  ------------------
40188|      0|			destroy_op_array(new_op_array);
40189|      0|			efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40190|      0|		}
40191|      3|		UNDEF_RESULT();
  ------------------
  |  | 5907|      3|#define UNDEF_RESULT() do { \
  |  | 5908|      3|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      3|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 3]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
40192|      3|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      3|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      3|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40192:3): [True: 0, False: 3]
  |  Branch (40192:3): [True: 3, False: 0]
  ------------------
40193|      3|	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
  ------------------
  |  | 5301|      3|#define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1)
  ------------------
  |  Branch (40193:13): [True: 0, False: 3]
  ------------------
40194|      0|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40195|      0|			ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40196|      0|		}
40197|      3|	} else if (UNEXPECTED(new_op_array == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
40198|      1|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      1|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
40199|      0|			ZVAL_FALSE(EX_VAR(opline->result.var));
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40200|      0|		}
40201|      2|	} else if (new_op_array->last == 1
  ------------------
  |  Branch (40201:13): [True: 1, False: 1]
  ------------------
40202|      1|			&& new_op_array->opcodes[0].opcode == ZEND_RETURN
  ------------------
  |  |  185|      3|#define ZEND_RETURN                          62
  ------------------
  |  Branch (40202:7): [True: 1, False: 0]
  ------------------
40203|      1|			&& new_op_array->opcodes[0].op1_type == IS_CONST
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (40203:7): [True: 1, False: 0]
  ------------------
40204|      1|			&& EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
40205|      0|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40206|      0|			const zend_op *op = new_op_array->opcodes;
40207|       |
40208|      0|			ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40209|      0|		}
40210|      0|		zend_destroy_static_vars(new_op_array);
40211|      0|		destroy_op_array(new_op_array);
40212|      0|		efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40213|      2|	} else {
40214|      2|		zval *return_value = NULL;
40215|      2|		zend_execute_data *call;
40216|      2|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      2|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 2]
  |  |  ------------------
  ------------------
40217|      0|			return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40218|      0|		}
40219|       |
40220|      2|		new_op_array->scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
40221|       |
40222|      2|		call = zend_vm_stack_push_call_frame(
40223|      2|			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  657|      2|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  682|      2|#define ZEND_CALL_NESTED_CODE        (ZEND_CALL_CODE | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  661|      2|#define ZEND_CALL_CODE               (1 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_CODE        (ZEND_CALL_CODE | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      2|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			(Z_TYPE_INFO(EX(This)) & ZEND_CALL_HAS_THIS) | ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
  ------------------
  |  |  666|      2|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
40224|      2|			(zend_function*)new_op_array, 0,
40225|      2|			Z_PTR(EX(This)));
  ------------------
  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
40226|       |
40227|      2|		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  732|      2|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|      2|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
  ------------------
  |  |  666|      2|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (40227:7): [True: 2, False: 0]
  ------------------
40228|      2|			call->symbol_table = EX(symbol_table);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
40229|      2|		} else {
40230|      0|			call->symbol_table = zend_rebuild_symbol_table();
40231|      0|		}
40232|       |
40233|      2|		call->prev_execute_data = execute_data;
40234|      2|		i_init_code_execute_data(call, new_op_array, return_value);
40235|       |
40236|       |
40237|      2|		if (EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
40238|       |
40239|       |
40240|      0|			ZEND_VM_ENTER();
  ------------------
  |  |  444|      0|# define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |               # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
  |  |  ------------------
  |  |  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40241|      2|		} else {
40242|      2|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
  ------------------
  |  |  703|      2|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      2|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      2|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      2|		call_info |= (flag); \
  |  |  |  |  697|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
40243|      2|			zend_execute_ex(call);
40244|      2|			zend_vm_stack_free_call_frame(call);
40245|      2|		}
40246|       |
40247|      2|		zend_destroy_static_vars(new_op_array);
40248|      2|		destroy_op_array(new_op_array);
40249|      2|		efree_size(new_op_array, sizeof(zend_op_array));
  ------------------
  |  |  138|      2|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40250|      2|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
40251|      0|			zend_rethrow_exception(execute_data);
40252|       |
40253|       |
40254|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40255|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40255:4): [True: 0, False: 0]
  |  Branch (40255:4): [True: 0, False: 0]
  ------------------
40256|      0|		}
40257|      2|	}
40258|       |
40259|       |
40260|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      6|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40260:2): [True: 0, False: 3]
  |  Branch (40260:2): [True: 3, False: 0]
  ------------------
40261|      3|}
zend_execute.c:ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER:
11572|      3|{
11573|      3|	USE_OPLINE
11574|      3|	zval *varname;
11575|      3|	zend_string *name, *tmp_name;
11576|      3|	HashTable *target_symbol_table;
11577|       |
11578|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11579|       |
11580|      3|	varname = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11581|       |
11582|      3|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11582:6): [True: 3, Folded]
  ------------------
11583|      3|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11584|      3|	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11585|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11586|      0|		tmp_name = NULL;
11587|      0|	} else {
11588|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11588:7): [Folded, False: 0]
  ------------------
11589|      0|			varname = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11590|      0|		}
11591|      0|		name = zval_try_get_tmp_string(varname, &tmp_name);
11592|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11593|       |
11594|       |
11595|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11595:4): [True: 0, False: 0]
  |  Branch (11595:4): [True: 0, False: 0]
  ------------------
11596|      0|		}
11597|      0|	}
11598|       |
11599|      3|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11600|      3|	zend_hash_del_ind(target_symbol_table, name);
11601|       |
11602|      3|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11602:6): [Folded, False: 3]
  ------------------
11603|      0|		zend_tmp_string_release(tmp_name);
11604|      0|	}
11605|       |
11606|       |
11607|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11607:2): [True: 0, False: 0]
  |  Branch (11607:2): [True: 0, False: 0]
  ------------------
11608|      3|}
zend_execute.c:ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER:
16514|      2|{
16515|      2|	USE_OPLINE
16516|      2|	zval *varname;
16517|      2|	zend_string *name, *tmp_name;
16518|      2|	HashTable *target_symbol_table;
16519|       |
16520|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16521|       |
16522|      2|	varname = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16523|       |
16524|      2|	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16524:6): [Folded, False: 2]
  ------------------
16525|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16526|      2|	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
16527|      2|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16528|      2|		tmp_name = NULL;
16529|      2|	} else {
16530|      0|		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16530:7): [Folded, False: 0]
  ------------------
16531|      0|			varname = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16532|      0|		}
16533|      0|		name = zval_try_get_tmp_string(varname, &tmp_name);
16534|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16535|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16536|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (16536:4): [True: 0, False: 0]
  |  Branch (16536:4): [True: 0, False: 0]
  ------------------
16537|      0|		}
16538|      0|	}
16539|       |
16540|      2|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16541|      2|	zend_hash_del_ind(target_symbol_table, name);
16542|       |
16543|      2|	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16543:6): [True: 2, Folded]
  ------------------
16544|      2|		zend_tmp_string_release(tmp_name);
16545|      2|	}
16546|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16547|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16547:2): [True: 0, False: 0]
  |  Branch (16547:2): [True: 0, False: 0]
  ------------------
16548|      2|}
zend_execute.c:ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER:
49579|     14|{
49580|     14|	USE_OPLINE
49581|     14|	zval *varname;
49582|     14|	zend_string *name, *tmp_name;
49583|     14|	HashTable *target_symbol_table;
49584|       |
49585|     14|	SAVE_OPLINE();
  ------------------
  |  |  428|     14|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49586|       |
49587|     14|	varname = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49588|       |
49589|     14|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49589:6): [Folded, False: 14]
  ------------------
49590|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49591|     14|	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 5]
  |  |  ------------------
  ------------------
49592|      9|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49593|      9|		tmp_name = NULL;
49594|      9|	} else {
49595|      5|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (49595:7): [True: 5, Folded]
  ------------------
49596|      2|			varname = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      2|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49597|      2|		}
49598|      5|		name = zval_try_get_tmp_string(varname, &tmp_name);
49599|      5|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
49600|       |
49601|       |
49602|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49602:4): [True: 0, False: 0]
  |  Branch (49602:4): [True: 0, False: 0]
  ------------------
49603|      0|		}
49604|      5|	}
49605|       |
49606|     14|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49607|     14|	zend_hash_del_ind(target_symbol_table, name);
49608|       |
49609|     14|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49609:6): [True: 14, Folded]
  ------------------
49610|     14|		zend_tmp_string_release(tmp_name);
49611|     14|	}
49612|       |
49613|       |
49614|     14|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     14|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     14|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 14, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     14|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     14|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     14|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49614:2): [True: 0, False: 0]
  |  Branch (49614:2): [True: 0, False: 0]
  ------------------
49615|     14|}
zend_execute.c:ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER:
26220|     13|{
26221|     13|	USE_OPLINE
26222|     13|	zval *container;
26223|     13|	zval *offset;
26224|     13|	zend_ulong hval;
26225|     13|	zend_string *key;
26226|       |
26227|     13|	SAVE_OPLINE();
  ------------------
  |  |  428|     13|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
26228|     13|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     13|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     13|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26229|     13|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     13|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
26230|       |
26231|     13|	do {
26232|     13|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 5]
  |  |  ------------------
  ------------------
26233|      8|			HashTable *ht;
26234|       |
26235|      8|unset_dim_array:
26236|      8|			SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|      8|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      8|		zval *__zv = (zv);								\
  |  | 1538|      8|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      8|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      2|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      2|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      2|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      2|		zval *__z = (z);						\
  |  |  |  | 1128|      2|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      2|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      2|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      2|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      2|		}												\
  |  | 1543|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
26237|      8|			ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26238|      8|offset_again:
26239|      8|			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
26240|      0|				key = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
26241|      0|				if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (26241:9): [Folded, False: 0]
  ------------------
26242|      0|					if (ZEND_HANDLE_NUMERIC(key, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26243|      0|						goto num_index_dim;
26244|      0|					}
26245|      0|				}
26246|      6|str_index_dim:
26247|      6|				ZEND_ASSERT(ht != &EG(symbol_table));
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (26247:5): [True: 0, False: 6]
  |  Branch (26247:5): [True: 6, False: 0]
  ------------------
26248|      6|				zend_hash_del(ht, key);
26249|      8|			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 6]
  |  |  ------------------
  ------------------
26250|      2|				hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
26251|      2|num_index_dim:
26252|      2|				zend_hash_index_del(ht, hval);
26253|      6|			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26253:15): [Folded, False: 6]
  ------------------
26254|      0|				offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26255|      0|				goto offset_again;
26256|      6|			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      6|#define IS_DOUBLE					5
  ------------------
  |  Branch (26256:15): [True: 0, False: 6]
  ------------------
26257|       |				/* The array may be destroyed while throwing a warning in case the float is not representable as an int.
26258|       |				 * Temporarily increase the refcount to detect this situation. */
26259|      0|				GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      0|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
26260|      0|				hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
26261|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (26261:9): [True: 0, False: 0]
  |  Branch (26261:49): [True: 0, False: 0]
  ------------------
26262|      0|					zend_array_destroy(ht);
26263|      0|					break;
26264|      0|				}
26265|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26266|      0|					break;
26267|      0|				}
26268|      0|				goto num_index_dim;
26269|      6|			} else if (Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  607|      6|#define IS_NULL						1
  ------------------
  |  Branch (26269:15): [True: 6, False: 0]
  ------------------
26270|      6|				key = ZSTR_EMPTY_ALLOC();
26271|      6|				goto str_index_dim;
26272|      6|			} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (26272:15): [True: 0, False: 0]
  ------------------
26273|      0|				hval = 0;
26274|      0|				goto num_index_dim;
26275|      0|			} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (26275:15): [True: 0, False: 0]
  ------------------
26276|      0|				hval = 1;
26277|      0|				goto num_index_dim;
26278|      0|			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (26278:15): [True: 0, False: 0]
  ------------------
26279|      0|				zend_use_resource_as_offset(offset);
26280|      0|				hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26281|      0|				goto num_index_dim;
26282|      0|			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (26282:15): [Folded, False: 0]
  |  Branch (26282:36): [True: 0, False: 0]
  ------------------
26283|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26284|      0|				key = ZSTR_EMPTY_ALLOC();
26285|      0|				goto str_index_dim;
26286|      0|			} else {
26287|      0|				zend_illegal_array_offset_unset(offset);
26288|      0|			}
26289|      8|			break;
26290|      8|		} else if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|      5|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      5|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26291|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26292|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26293|      0|				goto unset_dim_array;
26294|      0|			}
26295|      0|		}
26296|      5|		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26296:7): [Folded, False: 5]
  ------------------
26297|      0|			container = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26298|      0|		}
26299|      5|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26299:7): [Folded, False: 5]
  ------------------
26300|      0|			offset = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26301|      0|		}
26302|      5|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
26303|      0|			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (26303:8): [True: 0, Folded]
  |  Branch (26303:32): [True: 0, False: 0]
  ------------------
26304|      0|				offset++;
26305|      0|			}
26306|      0|			Z_OBJ_HT_P(container)->unset_dimension(Z_OBJ_P(container), offset);
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			Z_OBJ_HT_P(container)->unset_dimension(Z_OBJ_P(container), offset);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
26307|      5|		} else if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
26308|      0|			zend_throw_error(NULL, "Cannot unset string offsets");
26309|      5|		} else if (UNEXPECTED(Z_TYPE_P(container) > IS_FALSE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
26310|      0|			zend_throw_error(NULL, "Cannot unset offset in a non-array variable");
26311|      5|		} else if (UNEXPECTED(Z_TYPE_P(container) == IS_FALSE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
26312|      0|			zend_false_to_array_deprecated();
26313|      0|		}
26314|      5|	} while (0);
  ------------------
  |  Branch (26314:11): [Folded, False: 5]
  ------------------
26315|       |
26316|       |
26317|     13|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     13|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     13|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26318|     13|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     13|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     13|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     13|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 13, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     13|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     13|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     13|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     13|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     13|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (26318:2): [True: 0, False: 0]
  |  Branch (26318:2): [True: 0, False: 0]
  ------------------
26319|     13|}
zend_execute.c:ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER:
44193|     15|{
44194|     15|	USE_OPLINE
44195|     15|	zval *container;
44196|     15|	zval *offset;
44197|     15|	zend_ulong hval;
44198|     15|	zend_string *key;
44199|       |
44200|     15|	SAVE_OPLINE();
  ------------------
  |  |  428|     15|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     15|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44201|     15|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     15|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     15|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44202|     15|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     15|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
44203|       |
44204|     15|	do {
44205|     15|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 3]
  |  |  ------------------
  ------------------
44206|     12|			HashTable *ht;
44207|       |
44208|     15|unset_dim_array:
44209|     15|			SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|     15|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     15|		zval *__zv = (zv);								\
  |  | 1538|     15|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     15|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     15|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     15|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 9, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      9|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      9|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      9|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      9|		zval *__z = (z);						\
  |  |  |  | 1128|      9|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      9|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      9|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      9|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      9|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      9|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      9|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      9|		}												\
  |  | 1543|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
44210|     15|			ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|     15|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     15|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     15|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44211|     15|offset_again:
44212|     15|			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|     15|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 14]
  |  |  ------------------
  ------------------
44213|      1|				key = Z_STR_P(offset);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44214|      1|				if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44214:9): [Folded, False: 1]
  ------------------
44215|      0|					if (ZEND_HANDLE_NUMERIC(key, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44216|      0|						goto num_index_dim;
44217|      0|					}
44218|      0|				}
44219|      1|str_index_dim:
44220|      1|				ZEND_ASSERT(ht != &EG(symbol_table));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (44220:5): [True: 0, False: 1]
  |  Branch (44220:5): [True: 1, False: 0]
  ------------------
44221|      1|				zend_hash_del(ht, key);
44222|     14|			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 1]
  |  |  ------------------
  ------------------
44223|     13|				hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|     13|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     13|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
44224|     14|num_index_dim:
44225|     14|				zend_hash_index_del(ht, hval);
44226|     14|			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44226:15): [Folded, False: 1]
  ------------------
44227|      0|				offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44228|      0|				goto offset_again;
44229|      1|			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (44229:15): [True: 1, False: 0]
  ------------------
44230|       |				/* The array may be destroyed while throwing a warning in case the float is not representable as an int.
44231|       |				 * Temporarily increase the refcount to detect this situation. */
44232|      1|				GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      1|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
44233|      1|				hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
44234|      1|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      1|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (44234:9): [True: 1, False: 0]
  |  Branch (44234:49): [True: 0, False: 1]
  ------------------
44235|      0|					zend_array_destroy(ht);
44236|      0|					break;
44237|      0|				}
44238|      1|				if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
44239|      0|					break;
44240|      0|				}
44241|      1|				goto num_index_dim;
44242|      1|			} else if (Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (44242:15): [True: 0, False: 0]
  ------------------
44243|      0|				key = ZSTR_EMPTY_ALLOC();
44244|      0|				goto str_index_dim;
44245|      0|			} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (44245:15): [True: 0, False: 0]
  ------------------
44246|      0|				hval = 0;
44247|      0|				goto num_index_dim;
44248|      0|			} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (44248:15): [True: 0, False: 0]
  ------------------
44249|      0|				hval = 1;
44250|      0|				goto num_index_dim;
44251|      0|			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (44251:15): [True: 0, False: 0]
  ------------------
44252|      0|				zend_use_resource_as_offset(offset);
44253|      0|				hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44254|      0|				goto num_index_dim;
44255|      0|			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (44255:15): [Folded, False: 0]
  |  Branch (44255:36): [True: 0, False: 0]
  ------------------
44256|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44257|      0|				key = ZSTR_EMPTY_ALLOC();
44258|      0|				goto str_index_dim;
44259|      0|			} else {
44260|      0|				zend_illegal_array_offset_unset(offset);
44261|      0|			}
44262|     15|			break;
44263|     15|		} else if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      3|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44264|      3|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44265|      3|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
44266|      3|				goto unset_dim_array;
44267|      3|			}
44268|      3|		}
44269|      0|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44269:7): [True: 0, Folded]
  ------------------
44270|      0|			container = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44271|      0|		}
44272|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44272:7): [Folded, False: 0]
  ------------------
44273|      0|			offset = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44274|      0|		}
44275|      0|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44276|      0|			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (44276:8): [True: 0, Folded]
  |  Branch (44276:32): [True: 0, False: 0]
  ------------------
44277|      0|				offset++;
44278|      0|			}
44279|      0|			Z_OBJ_HT_P(container)->unset_dimension(Z_OBJ_P(container), offset);
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			Z_OBJ_HT_P(container)->unset_dimension(Z_OBJ_P(container), offset);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
44280|      0|		} else if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44281|      0|			zend_throw_error(NULL, "Cannot unset string offsets");
44282|      0|		} else if (UNEXPECTED(Z_TYPE_P(container) > IS_FALSE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44283|      0|			zend_throw_error(NULL, "Cannot unset offset in a non-array variable");
44284|      0|		} else if (UNEXPECTED(Z_TYPE_P(container) == IS_FALSE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44285|      0|			zend_false_to_array_deprecated();
44286|      0|		}
44287|      0|	} while (0);
  ------------------
  |  Branch (44287:11): [Folded, False: 0]
  ------------------
44288|       |
44289|       |
44290|       |
44291|       |
44292|     15|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     15|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     15|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     15|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 15, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     15|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     15|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     15|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     15|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     15|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     15|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44292:2): [True: 0, False: 0]
  |  Branch (44292:2): [True: 0, False: 0]
  ------------------
44293|     15|}
zend_execute.c:ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER:
53026|    125|{
53027|    125|	USE_OPLINE
53028|    125|	zval *container;
53029|    125|	zval *offset;
53030|    125|	zend_ulong hval;
53031|    125|	zend_string *key;
53032|       |
53033|    125|	SAVE_OPLINE();
  ------------------
  |  |  428|    125|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    125|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
53034|    125|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    125|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    125|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
53035|    125|	offset = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    125|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    125|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
53036|       |
53037|    125|	do {
53038|    125|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|    125|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 124]
  |  |  ------------------
  ------------------
53039|      1|			HashTable *ht;
53040|       |
53041|    123|unset_dim_array:
53042|    123|			SEPARATE_ARRAY(container);
  ------------------
  |  | 1536|    123|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|    123|		zval *__zv = (zv);								\
  |  | 1538|    123|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|    123|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    123|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|    123|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|    123|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 122]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|    123|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 123]
  |  |  ------------------
  ------------------
53043|    123|			ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|    123|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    123|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    123|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53044|    123|offset_again:
53045|    123|			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|    123|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 122]
  |  |  ------------------
  ------------------
53046|      1|				key = Z_STR_P(offset);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
53047|      1|				if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (53047:9): [True: 1, Folded]
  ------------------
53048|      1|					if (ZEND_HANDLE_NUMERIC(key, hval)) {
  ------------------
  |  |  424|      1|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      1|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53049|      0|						goto num_index_dim;
53050|      0|					}
53051|      1|				}
53052|      1|str_index_dim:
53053|      1|				ZEND_ASSERT(ht != &EG(symbol_table));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (53053:5): [True: 0, False: 1]
  |  Branch (53053:5): [True: 1, False: 0]
  ------------------
53054|      1|				zend_hash_del(ht, key);
53055|    122|			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|    122|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 122, False: 0]
  |  |  ------------------
  ------------------
53056|    122|				hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|    122|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    122|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
53057|    122|num_index_dim:
53058|    122|				zend_hash_index_del(ht, hval);
53059|    122|			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (53059:15): [True: 0, Folded]
  ------------------
53060|      0|				offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53061|      0|				goto offset_again;
53062|      0|			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (53062:15): [True: 0, False: 0]
  ------------------
53063|       |				/* The array may be destroyed while throwing a warning in case the float is not representable as an int.
53064|       |				 * Temporarily increase the refcount to detect this situation. */
53065|      0|				GC_TRY_ADDREF(ht);
  ------------------
  |  |  722|      0|#define GC_TRY_ADDREF(p)			zend_gc_try_addref(&(p)->gc)
  ------------------
53066|      0|				hval = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
53067|      0|				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              				if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (53067:9): [True: 0, False: 0]
  |  Branch (53067:49): [True: 0, False: 0]
  ------------------
53068|      0|					zend_array_destroy(ht);
53069|      0|					break;
53070|      0|				}
53071|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
53072|      0|					break;
53073|      0|				}
53074|      0|				goto num_index_dim;
53075|      0|			} else if (Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (53075:15): [True: 0, False: 0]
  ------------------
53076|      0|				key = ZSTR_EMPTY_ALLOC();
53077|      0|				goto str_index_dim;
53078|      0|			} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (53078:15): [True: 0, False: 0]
  ------------------
53079|      0|				hval = 0;
53080|      0|				goto num_index_dim;
53081|      0|			} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_TRUE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (53081:15): [True: 0, False: 0]
  ------------------
53082|      0|				hval = 1;
53083|      0|				goto num_index_dim;
53084|      0|			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (53084:15): [True: 0, False: 0]
  ------------------
53085|      0|				zend_use_resource_as_offset(offset);
53086|      0|				hval = Z_RES_HANDLE_P(offset);
  ------------------
  |  | 1021|      0|#define Z_RES_HANDLE_P(zval_p)		Z_RES_HANDLE(*zval_p)
  |  |  ------------------
  |  |  |  | 1020|      0|#define Z_RES_HANDLE(zval)			Z_RES(zval)->handle
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53087|      0|				goto num_index_dim;
53088|      0|			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (53088:15): [True: 0, Folded]
  |  Branch (53088:33): [True: 0, False: 0]
  ------------------
53089|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53090|      0|				key = ZSTR_EMPTY_ALLOC();
53091|      0|				goto str_index_dim;
53092|      0|			} else {
53093|      0|				zend_illegal_array_offset_unset(offset);
53094|      0|			}
53095|    123|			break;
53096|    124|		} else if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|    124|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    124|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    124|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    124|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 122, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53097|    122|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|    122|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    122|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    122|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53098|    122|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|    122|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 122, False: 0]
  |  |  ------------------
  ------------------
53099|    122|				goto unset_dim_array;
53100|    122|			}
53101|    122|		}
53102|      2|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (53102:7): [True: 2, Folded]
  ------------------
53103|      2|			container = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      2|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53104|      2|		}
53105|      2|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (53105:7): [True: 2, Folded]
  ------------------
53106|      1|			offset = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53107|      1|		}
53108|      2|		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
53109|      0|			if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (53109:8): [Folded, False: 0]
  |  Branch (53109:29): [True: 0, False: 0]
  ------------------
53110|      0|				offset++;
53111|      0|			}
53112|      0|			Z_OBJ_HT_P(container)->unset_dimension(Z_OBJ_P(container), offset);
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			Z_OBJ_HT_P(container)->unset_dimension(Z_OBJ_P(container), offset);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
53113|      2|		} else if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
53114|      0|			zend_throw_error(NULL, "Cannot unset string offsets");
53115|      2|		} else if (UNEXPECTED(Z_TYPE_P(container) > IS_FALSE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
53116|      0|			zend_throw_error(NULL, "Cannot unset offset in a non-array variable");
53117|      2|		} else if (UNEXPECTED(Z_TYPE_P(container) == IS_FALSE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
53118|      0|			zend_false_to_array_deprecated();
53119|      0|		}
53120|      2|	} while (0);
  ------------------
  |  Branch (53120:11): [Folded, False: 2]
  ------------------
53121|       |
53122|       |
53123|       |
53124|       |
53125|    125|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    125|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    125|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    125|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 125, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    125|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    125|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    125|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    125|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    125|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    125|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (53125:2): [True: 0, False: 0]
  |  Branch (53125:2): [True: 0, False: 0]
  ------------------
53126|    125|}
zend_execute.c:ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER:
26322|      6|{
26323|      6|	USE_OPLINE
26324|      6|	zval *container;
26325|      6|	zval *offset;
26326|      6|	zend_string *name, *tmp_name;
26327|       |
26328|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
26329|      6|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26330|      6|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
26331|       |
26332|      6|	do {
26333|      6|		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (26333:7): [True: 6, Folded]
  ------------------
26334|      6|			if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|      6|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26335|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
26336|      0|				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (26336:9): [True: 0, False: 0]
  ------------------
26337|      0|					if (IS_VAR == IS_CV
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_VAR == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (26337:10): [Folded, False: 0]
  ------------------
26338|      0|					 && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26339|      0|						ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
26340|      0|					}
26341|      0|					break;
26342|      0|				}
26343|      6|			} else {
26344|      6|				break;
26345|      6|			}
26346|      6|		}
26347|      0|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (26347:7): [True: 0, Folded]
  ------------------
26348|      0|			name = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
26349|      0|		} else {
26350|      0|			name = zval_try_get_tmp_string(offset, &tmp_name);
26351|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
26352|      0|				break;
26353|      0|			}
26354|      0|		}
26355|      0|		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (26355:68): [True: 0, Folded]
  ------------------
26356|      0|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (26356:7): [Folded, False: 0]
  ------------------
26357|      0|			zend_tmp_string_release(tmp_name);
26358|      0|		}
26359|      0|	} while (0);
  ------------------
  |  Branch (26359:11): [Folded, False: 0]
  ------------------
26360|       |
26361|       |
26362|      6|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
26363|      6|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (26363:2): [True: 0, False: 0]
  |  Branch (26363:2): [True: 0, False: 0]
  ------------------
26364|      6|}
zend_execute.c:ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER:
39123|      1|{
39124|      1|	USE_OPLINE
39125|      1|	zval *container;
39126|      1|	zval *offset;
39127|      1|	zend_string *name, *tmp_name;
39128|       |
39129|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39130|      1|	container = &EX(This);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
39131|      1|	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39132|       |
39133|      1|	do {
39134|      1|		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (39134:7): [Folded, False: 1]
  ------------------
39135|      0|			if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39136|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39137|      0|				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (39137:9): [True: 0, False: 0]
  ------------------
39138|      0|					if (IS_UNUSED == IS_CV
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              					if (IS_UNUSED == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (39138:10): [Folded, False: 0]
  ------------------
39139|      0|					 && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39140|      0|						ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39141|      0|					}
39142|      0|					break;
39143|      0|				}
39144|      0|			} else {
39145|      0|				break;
39146|      0|			}
39147|      0|		}
39148|      1|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (39148:7): [Folded, False: 1]
  ------------------
39149|      0|			name = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
39150|      1|		} else {
39151|      1|			name = zval_try_get_tmp_string(offset, &tmp_name);
39152|      1|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
39153|      0|				break;
39154|      0|			}
39155|      1|		}
39156|      1|		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (39156:68): [Folded, False: 1]
  ------------------
39157|      1|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (39157:7): [True: 1, Folded]
  ------------------
39158|      1|			zend_tmp_string_release(tmp_name);
39159|      1|		}
39160|      1|	} while (0);
  ------------------
  |  Branch (39160:11): [Folded, False: 1]
  ------------------
39161|       |
39162|       |
39163|       |
39164|       |
39165|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39165:2): [True: 0, False: 0]
  |  Branch (39165:2): [True: 0, False: 0]
  ------------------
39166|      1|}
zend_execute.c:ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER:
44296|      6|{
44297|      6|	USE_OPLINE
44298|      6|	zval *container;
44299|      6|	zval *offset;
44300|      6|	zend_string *name, *tmp_name;
44301|       |
44302|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44303|      6|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44304|      6|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
44305|       |
44306|      6|	do {
44307|      6|		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  863|     12|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (44307:7): [True: 6, Folded]
  ------------------
44308|      0|			if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44309|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44310|      0|				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (44310:9): [True: 0, False: 0]
  ------------------
44311|      0|					if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (44311:10): [True: 0, Folded]
  ------------------
44312|      0|					 && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44313|      0|						ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44314|      0|					}
44315|      0|					break;
44316|      0|				}
44317|      0|			} else {
44318|      0|				break;
44319|      0|			}
44320|      0|		}
44321|      6|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44321:7): [True: 6, Folded]
  ------------------
44322|      6|			name = Z_STR_P(offset);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44323|      6|		} else {
44324|      0|			name = zval_try_get_tmp_string(offset, &tmp_name);
44325|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44326|      0|				break;
44327|      0|			}
44328|      0|		}
44329|      6|		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1003|      6|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      6|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  524|      6|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (44329:68): [True: 6, Folded]
  ------------------
44330|      6|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44330:7): [Folded, False: 6]
  ------------------
44331|      0|			zend_tmp_string_release(tmp_name);
44332|      0|		}
44333|      6|	} while (0);
  ------------------
  |  Branch (44333:11): [Folded, False: 6]
  ------------------
44334|       |
44335|       |
44336|       |
44337|       |
44338|      6|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44338:2): [True: 0, False: 0]
  |  Branch (44338:2): [True: 0, False: 0]
  ------------------
44339|      6|}
zend_execute.c:ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER:
53129|      1|{
53130|      1|	USE_OPLINE
53131|      1|	zval *container;
53132|      1|	zval *offset;
53133|      1|	zend_string *name, *tmp_name;
53134|       |
53135|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
53136|      1|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
53137|      1|	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53138|       |
53139|      1|	do {
53140|      1|		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (53140:7): [True: 1, Folded]
  ------------------
53141|      0|			if (Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53142|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53143|      0|				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(container) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (53143:9): [True: 0, False: 0]
  ------------------
53144|      0|					if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (53144:10): [True: 0, Folded]
  ------------------
53145|      0|					 && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
53146|      0|						ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53147|      0|					}
53148|      0|					break;
53149|      0|				}
53150|      0|			} else {
53151|      0|				break;
53152|      0|			}
53153|      0|		}
53154|      1|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (53154:7): [Folded, False: 1]
  ------------------
53155|      0|			name = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
53156|      1|		} else {
53157|      1|			name = zval_try_get_tmp_string(offset, &tmp_name);
53158|      1|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
53159|      0|				break;
53160|      0|			}
53161|      1|		}
53162|      1|		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->unset_property(Z_OBJ_P(container), name, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (53162:68): [Folded, False: 1]
  ------------------
53163|      1|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (53163:7): [True: 1, Folded]
  ------------------
53164|      1|			zend_tmp_string_release(tmp_name);
53165|      1|		}
53166|      1|	} while (0);
  ------------------
  |  Branch (53166:11): [Folded, False: 1]
  ------------------
53167|       |
53168|       |
53169|       |
53170|       |
53171|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (53171:2): [True: 0, False: 0]
  |  Branch (53171:2): [True: 0, False: 0]
  ------------------
53172|      1|}
zend_execute.c:ZEND_FE_RESET_R_SPEC_CONST_HANDLER:
 5553|     13|{
 5554|     13|	USE_OPLINE
 5555|     13|	zval *array_ptr, *result;
 5556|       |
 5557|     13|	SAVE_OPLINE();
  ------------------
  |  |  428|     13|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5558|       |
 5559|     13|	array_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     13|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5560|     13|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     13|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 1]
  |  |  ------------------
  ------------------
 5561|     12|		result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5562|     12|		ZVAL_COPY_VALUE(result, array_ptr);
  ------------------
  |  | 1416|     12|	do {												\
  |  | 1417|     12|		zval *_z1 = (z);								\
  |  | 1418|     12|		const zval *_z2 = (v);							\
  |  | 1419|     12|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     12|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     12|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     12|	do {												\
  |  |  |  | 1408|     12|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     12|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 5563|     12|		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  865|     24|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|     12|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|     12|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|     12|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|     12|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 12, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5563:7): [True: 12, Folded]
  ------------------
 5564|     12|			Z_ADDREF_P(array_ptr);
  ------------------
  |  | 1277|     12|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5565|     12|		}
 5566|     12|		Z_FE_POS_P(result) = 0;
  ------------------
  |  |  693|     12|#define Z_FE_POS_P(zval_p)			Z_FE_POS(*(zval_p))
  |  |  ------------------
  |  |  |  |  692|     12|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  |  |  ------------------
  ------------------
 5567|       |
 5568|       |
 5569|     12|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     12|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     12|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     12|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     12|	} else { \
  |  |  |  | 5761|     12|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     12|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     12|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     12|	} \
  |  |  |  | 5764|     12|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5569:3): [True: 0, False: 12]
  |  Branch (5569:3): [True: 12, False: 0]
  ------------------
 5570|     12|	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5570:13): [Folded, False: 1]
  ------------------
 5571|      0|		zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5572|      0|		if (!zobj->ce->get_iterator) {
  ------------------
  |  Branch (5572:7): [True: 0, False: 0]
  ------------------
 5573|      0|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5574|      0|				zobj = zend_lazy_object_init(zobj);
 5575|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5576|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5577|       |
 5578|       |
 5579|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5579:6): [True: 0, False: 0]
  |  Branch (5579:6): [True: 0, False: 0]
  ------------------
 5580|      0|				}
 5581|      0|			}
 5582|      0|			HashTable *properties = zobj->properties;
 5583|      0|			if (properties) {
  ------------------
  |  Branch (5583:8): [True: 0, False: 0]
  ------------------
 5584|      0|				if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5585|      0|					if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5586|      0|						GC_DELREF(properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 5587|      0|					}
 5588|      0|					properties = zobj->properties = zend_array_dup(properties);
 5589|      0|				}
 5590|      0|			} else {
 5591|      0|				properties = zobj->handlers->get_properties(zobj);
 5592|      0|			}
 5593|       |
 5594|      0|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5595|      0|			ZVAL_COPY_VALUE(result, array_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5596|      0|			if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (5596:8): [True: 0, Folded]
  ------------------
 5597|      0|				Z_ADDREF_P(array_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5598|      0|			}
 5599|       |
 5600|      0|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (5600:8): [True: 0, False: 0]
  ------------------
 5601|      0|				Z_FE_ITER_P(result) = (uint32_t) -1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5602|       |
 5603|       |
 5604|      0|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5604:5): [True: 0, False: 0]
  |  Branch (5604:5): [True: 0, False: 0]
  ------------------
 5605|      0|			}
 5606|       |
 5607|      0|			Z_FE_ITER_P(result) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5608|       |
 5609|       |
 5610|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5610:4): [True: 0, False: 0]
  |  Branch (5610:4): [True: 0, False: 0]
  ------------------
 5611|      0|		} else {
 5612|      0|			bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5613|       |
 5614|       |
 5615|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5616|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5616:5): [True: 0, False: 0]
  |  Branch (5616:5): [True: 0, False: 0]
  ------------------
 5617|      0|			} else if (is_empty) {
  ------------------
  |  Branch (5617:15): [True: 0, False: 0]
  ------------------
 5618|      0|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5618:5): [True: 0, False: 0]
  |  Branch (5618:5): [True: 0, False: 0]
  ------------------
 5619|      0|			} else {
 5620|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5620:5): [True: 0, False: 0]
  |  Branch (5620:5): [True: 0, False: 0]
  ------------------
 5621|      0|			}
 5622|      0|		}
 5623|      1|	} else {
 5624|      1|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 5625|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5626|      1|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5627|       |
 5628|       |
 5629|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      1|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      1|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      1|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      1|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      1|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5629:3): [True: 0, False: 0]
  |  Branch (5629:3): [True: 0, False: 0]
  ------------------
 5630|      1|	}
 5631|     13|}
zend_execute.c:ZEND_FE_RESET_R_SPEC_TMP_HANDLER:
17587|     45|{
17588|     45|	USE_OPLINE
17589|     45|	zval *array_ptr, *result;
17590|       |
17591|     45|	SAVE_OPLINE();
  ------------------
  |  |  428|     45|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     45|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17592|       |
17593|     45|	array_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     45|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     45|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17594|     45|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     45|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 19, False: 26]
  |  |  ------------------
  ------------------
17595|     19|		result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     19|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     19|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17596|     19|		ZVAL_COPY_VALUE(result, array_ptr);
  ------------------
  |  | 1416|     19|	do {												\
  |  | 1417|     19|		zval *_z1 = (z);								\
  |  | 1418|     19|		const zval *_z2 = (v);							\
  |  | 1419|     19|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     19|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     19|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     19|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     19|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     19|	do {												\
  |  |  |  | 1408|     19|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     19|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     19|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     19|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     19|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
17597|     19|		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  865|     19|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  865|     38|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17597:7): [Folded, False: 19]
  ------------------
17598|      0|			Z_ADDREF_P(array_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17599|      0|		}
17600|     19|		Z_FE_POS_P(result) = 0;
  ------------------
  |  |  693|     19|#define Z_FE_POS_P(zval_p)			Z_FE_POS(*(zval_p))
  |  |  ------------------
  |  |  |  |  692|     19|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  |  |  ------------------
  ------------------
17601|       |
17602|       |
17603|     19|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     19|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     19|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     19|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     19|	} else { \
  |  |  |  | 5761|     19|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     19|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     19|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     19|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     19|	} \
  |  |  |  | 5764|     19|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     19|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17603:3): [True: 0, False: 19]
  |  Branch (17603:3): [True: 19, False: 0]
  ------------------
17604|     26|	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  865|     26|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|     52|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|     26|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 25, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (17604:13): [True: 26, Folded]
  ------------------
17605|     25|		zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|     25|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     25|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
17606|     25|		if (!zobj->ce->get_iterator) {
  ------------------
  |  Branch (17606:7): [True: 2, False: 23]
  ------------------
17607|      2|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
17608|      0|				zobj = zend_lazy_object_init(zobj);
17609|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17610|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17611|       |
17612|       |
17613|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17613:6): [True: 0, False: 0]
  |  Branch (17613:6): [True: 0, False: 0]
  ------------------
17614|      0|				}
17615|      0|			}
17616|      2|			HashTable *properties = zobj->properties;
17617|      2|			if (properties) {
  ------------------
  |  Branch (17617:8): [True: 0, False: 2]
  ------------------
17618|      0|				if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17619|      0|					if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17620|      0|						GC_DELREF(properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
17621|      0|					}
17622|      0|					properties = zobj->properties = zend_array_dup(properties);
17623|      0|				}
17624|      2|			} else {
17625|      2|				properties = zobj->handlers->get_properties(zobj);
17626|      2|			}
17627|       |
17628|      2|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17629|      2|			ZVAL_COPY_VALUE(result, array_ptr);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17630|      2|			if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_TMP_VAR) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (17630:8): [Folded, False: 2]
  ------------------
17631|      0|				Z_ADDREF_P(array_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17632|      0|			}
17633|       |
17634|      2|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (17634:8): [True: 1, False: 1]
  ------------------
17635|      1|				Z_FE_ITER_P(result) = (uint32_t) -1;
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
17636|       |
17637|       |
17638|      1|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      1|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      1|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      1|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      1|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      1|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17638:5): [True: 0, False: 0]
  |  Branch (17638:5): [True: 0, False: 0]
  ------------------
17639|      1|			}
17640|       |
17641|      1|			Z_FE_ITER_P(result) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
17642|       |
17643|       |
17644|      1|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17644:4): [True: 0, False: 0]
  |  Branch (17644:4): [True: 0, False: 0]
  ------------------
17645|     23|		} else {
17646|     23|			bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     23|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     23|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     23|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     23|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17647|       |
17648|     23|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     23|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     23|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17649|     23|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 22]
  |  |  ------------------
  ------------------
17650|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17650:5): [True: 0, False: 1]
  |  Branch (17650:5): [True: 1, False: 0]
  ------------------
17651|     22|			} else if (is_empty) {
  ------------------
  |  Branch (17651:15): [True: 1, False: 21]
  ------------------
17652|      1|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      1|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      1|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 1]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      1|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17652:5): [True: 0, False: 0]
  |  Branch (17652:5): [True: 0, False: 0]
  ------------------
17653|     21|			} else {
17654|     21|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     21|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     21|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     21|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     21|	} else { \
  |  |  |  | 5761|     21|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     21|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     21|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     21|	} \
  |  |  |  | 5764|     21|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     21|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17654:5): [True: 0, False: 21]
  |  Branch (17654:5): [True: 21, False: 0]
  ------------------
17655|     21|			}
17656|     23|		}
17657|     25|	} else {
17658|      1|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
17659|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17660|      1|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
17661|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17662|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      1|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      1|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      1|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      1|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      1|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17662:3): [True: 0, False: 0]
  |  Branch (17662:3): [True: 0, False: 0]
  ------------------
17663|      1|	}
17664|     45|}
zend_execute.c:ZEND_FE_RESET_R_SPEC_CV_HANDLER:
40264|     54|{
40265|     54|	USE_OPLINE
40266|     54|	zval *array_ptr, *result;
40267|       |
40268|     54|	SAVE_OPLINE();
  ------------------
  |  |  428|     54|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     54|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40269|       |
40270|     54|	array_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     54|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     54|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40271|     54|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     54|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 31, False: 23]
  |  |  ------------------
  ------------------
40272|     31|		result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     31|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     31|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40273|     31|		ZVAL_COPY_VALUE(result, array_ptr);
  ------------------
  |  | 1416|     31|	do {												\
  |  | 1417|     31|		zval *_z1 = (z);								\
  |  | 1418|     31|		const zval *_z2 = (v);							\
  |  | 1419|     31|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     31|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     31|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     31|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     31|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     31|	do {												\
  |  |  |  | 1408|     31|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     31|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     31|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     31|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     31|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 31]
  |  |  ------------------
  ------------------
40274|     31|		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  867|     31|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  865|     62|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|     31|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|     31|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|     31|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|     31|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 31, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40274:7): [True: 31, Folded]
  ------------------
40275|     31|			Z_ADDREF_P(array_ptr);
  ------------------
  |  | 1277|     31|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40276|     31|		}
40277|     31|		Z_FE_POS_P(result) = 0;
  ------------------
  |  |  693|     31|#define Z_FE_POS_P(zval_p)			Z_FE_POS(*(zval_p))
  |  |  ------------------
  |  |  |  |  692|     31|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  |  |  ------------------
  ------------------
40278|       |
40279|       |
40280|     31|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     31|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     31|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     31|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 31]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     31|	} else { \
  |  |  |  | 5761|     31|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     31|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     31|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     31|	} \
  |  |  |  | 5764|     31|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     31|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40280:3): [True: 0, False: 31]
  |  Branch (40280:3): [True: 31, False: 0]
  ------------------
40281|     31|	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  867|     23|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|     46|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|     23|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (40281:13): [True: 23, Folded]
  ------------------
40282|     20|		zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|     20|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     20|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
40283|     20|		if (!zobj->ce->get_iterator) {
  ------------------
  |  Branch (40283:7): [True: 7, False: 13]
  ------------------
40284|      7|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
40285|      0|				zobj = zend_lazy_object_init(zobj);
40286|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40287|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40288|       |
40289|       |
40290|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40290:6): [True: 0, False: 0]
  |  Branch (40290:6): [True: 0, False: 0]
  ------------------
40291|      0|				}
40292|      0|			}
40293|      7|			HashTable *properties = zobj->properties;
40294|      7|			if (properties) {
  ------------------
  |  Branch (40294:8): [True: 6, False: 1]
  ------------------
40295|      6|				if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
40296|      1|					if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
40297|      1|						GC_DELREF(properties);
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
40298|      1|					}
40299|      1|					properties = zobj->properties = zend_array_dup(properties);
40300|      1|				}
40301|      6|			} else {
40302|      1|				properties = zobj->handlers->get_properties(zobj);
40303|      1|			}
40304|       |
40305|      7|			result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40306|      7|			ZVAL_COPY_VALUE(result, array_ptr);
  ------------------
  |  | 1416|      7|	do {												\
  |  | 1417|      7|		zval *_z1 = (z);								\
  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      7|	do {												\
  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
40307|      7|			if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_TMP_VAR) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (40307:8): [True: 7, Folded]
  ------------------
40308|      7|				Z_ADDREF_P(array_ptr);
  ------------------
  |  | 1277|      7|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40309|      7|			}
40310|       |
40311|      7|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (40311:8): [True: 0, False: 7]
  ------------------
40312|      0|				Z_FE_ITER_P(result) = (uint32_t) -1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
40313|       |
40314|       |
40315|      0|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40315:5): [True: 0, False: 0]
  |  Branch (40315:5): [True: 0, False: 0]
  ------------------
40316|      0|			}
40317|       |
40318|      7|			Z_FE_ITER_P(result) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      7|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      7|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
40319|       |
40320|       |
40321|      7|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      7|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      7|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 7, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      7|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      7|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40321:4): [True: 0, False: 0]
  |  Branch (40321:4): [True: 0, False: 0]
  ------------------
40322|     13|		} else {
40323|     13|			bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     13|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     13|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     13|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     13|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40324|       |
40325|       |
40326|     13|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 11]
  |  |  ------------------
  ------------------
40327|      2|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40327:5): [True: 0, False: 2]
  |  Branch (40327:5): [True: 2, False: 0]
  ------------------
40328|     11|			} else if (is_empty) {
  ------------------
  |  Branch (40328:15): [True: 2, False: 9]
  ------------------
40329|      2|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 2]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40329:5): [True: 0, False: 0]
  |  Branch (40329:5): [True: 0, False: 0]
  ------------------
40330|      9|			} else {
40331|      9|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      9|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      9|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      9|	} else { \
  |  |  |  | 5761|      9|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      9|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      9|	} \
  |  |  |  | 5764|      9|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40331:5): [True: 0, False: 9]
  |  Branch (40331:5): [True: 9, False: 0]
  ------------------
40332|      9|			}
40333|     13|		}
40334|     20|	} else {
40335|      3|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
40336|      3|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
40337|      3|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      3|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      3|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
40338|       |
40339|       |
40340|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      3|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      3|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      3|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      3|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      3|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      3|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      3|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      3|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      3|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      3|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40340:3): [True: 0, False: 0]
  |  Branch (40340:3): [True: 0, False: 0]
  ------------------
40341|      3|	}
40342|     54|}
zend_execute.c:ZEND_FE_FETCH_R_SPEC_TMP_HANDLER:
17769|  1.01k|{
17770|  1.01k|	USE_OPLINE
17771|  1.01k|	zval *array;
17772|  1.01k|	zval *value;
17773|  1.01k|	uint32_t value_type;
17774|  1.01k|	HashTable *fe_ht;
17775|  1.01k|	HashPosition pos;
17776|       |
17777|  1.01k|	array = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.01k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.01k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17778|  1.01k|	if (UNEXPECTED(Z_TYPE_P(array) != IS_ARRAY)) {
  ------------------
  |  |  457|  1.01k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 234, False: 780]
  |  |  ------------------
  ------------------
17779|    234|		ZEND_VM_TAIL_CALL(zend_fe_fetch_object_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    234|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
17780|    234|	}
17781|    780|	fe_ht = Z_ARRVAL_P(array);
  ------------------
  |  |  997|    780|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    780|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    780|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17782|    780|	pos = Z_FE_POS_P(array);
  ------------------
  |  |  693|    780|#define Z_FE_POS_P(zval_p)			Z_FE_POS(*(zval_p))
  |  |  ------------------
  |  |  |  |  692|    780|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  |  |  ------------------
  ------------------
17783|    780|	if (HT_IS_PACKED(fe_ht)) {
  ------------------
  |  |   62|    780|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    780|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    780|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 766, False: 14]
  |  |  ------------------
  ------------------
17784|    766|		value = fe_ht->arPacked + pos;
17785|    766|		while (1) {
  ------------------
  |  Branch (17785:10): [True: 766, Folded]
  ------------------
17786|    766|			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
  ------------------
  |  |  457|    766|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 38, False: 728]
  |  |  ------------------
  ------------------
17787|       |				/* reached end of iteration */
17788|     38|				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
  ------------------
  |  | 5785|     38|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|     38|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     38|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     38|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     38|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     38|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     38|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     38|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     38|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17789|     38|				ZEND_VM_CONTINUE();
  ------------------
  |  |  405|     38|# define ZEND_VM_CONTINUE()      return opline
  ------------------
17790|     38|			}
17791|    728|			value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|    728|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    728|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
17792|    728|			ZEND_ASSERT(value_type != IS_INDIRECT);
  ------------------
  |  |  112|    728|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17792:4): [True: 0, False: 728]
  |  Branch (17792:4): [True: 728, False: 0]
  ------------------
17793|    728|			if (EXPECTED(value_type != IS_UNDEF)) {
  ------------------
  |  |  456|    728|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 728, False: 0]
  |  |  ------------------
  ------------------
17794|    728|				break;
17795|    728|			}
17796|      0|			pos++;
17797|      0|			value++;
17798|      0|		}
17799|    728|		Z_FE_POS_P(array) = pos + 1;
  ------------------
  |  |  693|    728|#define Z_FE_POS_P(zval_p)			Z_FE_POS(*(zval_p))
  |  |  ------------------
  |  |  |  |  692|    728|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  |  |  ------------------
  ------------------
17800|    728|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|    728|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|    728|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 2, False: 726]
  |  |  ------------------
  ------------------
17801|      2|			ZVAL_LONG(EX_VAR(opline->result.var), pos);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17802|      2|		}
17803|    728|	} else {
17804|     14|		Bucket *p;
17805|       |
17806|     14|		p = fe_ht->arData + pos;
17807|     14|		while (1) {
  ------------------
  |  Branch (17807:10): [True: 14, Folded]
  ------------------
17808|     14|			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 9]
  |  |  ------------------
  ------------------
17809|       |				/* reached end of iteration */
17810|      5|				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
  ------------------
  |  | 5785|      5|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|      5|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      5|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      5|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      5|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      5|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17811|      5|				ZEND_VM_CONTINUE();
  ------------------
  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  ------------------
17812|      5|			}
17813|      9|			pos++;
17814|      9|			value = &p->val;
17815|      9|			value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
17816|      9|			ZEND_ASSERT(value_type != IS_INDIRECT);
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17816:4): [True: 0, False: 9]
  |  Branch (17816:4): [True: 9, False: 0]
  ------------------
17817|      9|			if (EXPECTED(value_type != IS_UNDEF)) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
17818|      9|				break;
17819|      9|			}
17820|      0|			p++;
17821|      0|		}
17822|      9|		Z_FE_POS_P(array) = pos;
  ------------------
  |  |  693|      9|#define Z_FE_POS_P(zval_p)			Z_FE_POS(*(zval_p))
  |  |  ------------------
  |  |  |  |  692|      9|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  |  |  ------------------
  ------------------
17823|      9|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      9|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      9|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 7, False: 2]
  |  |  ------------------
  ------------------
17824|      7|			if (!p->key) {
  ------------------
  |  Branch (17824:8): [True: 0, False: 7]
  ------------------
17825|      0|				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17826|      7|			} else {
17827|      7|				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
  ------------------
  |  | 1112|      7|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      7|		zval *__z = (z);								\
  |  | 1114|      7|		zend_string *__s = (s);							\
  |  | 1115|      7|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      7|		/* interned strings support */					\
  |  | 1117|      7|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 7, False: 0]
  |  |  ------------------
  |  | 1118|      7|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      7|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      7|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
17828|      7|			}
17829|      7|		}
17830|      9|	}
17831|    737|	if (EXPECTED(opline->op2_type == IS_CV)) {
  ------------------
  |  |  456|    737|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 730, False: 7]
  |  |  ------------------
  ------------------
17832|    730|		zval *variable_ptr = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    730|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    730|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17833|    730|		SAVE_OPLINE();
  ------------------
  |  |  428|    730|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    730|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17834|    730|		zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  867|    730|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|    730|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    730|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    730|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17835|    730|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    730|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    730|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    730|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 730, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    730|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    730|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    730|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    730|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    730|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    730|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17835:3): [True: 0, False: 0]
  |  Branch (17835:3): [True: 0, False: 0]
  ------------------
17836|    730|	} else {
17837|      7|		if (UNEXPECTED(Z_ISREF_P(value))) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
17838|      0|			value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17839|      0|			value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
17840|      0|		}
17841|      7|		zval *res = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17842|      7|		zend_refcounted *gc = Z_COUNTED_P(value);
  ------------------
  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
17843|       |
17844|      7|		ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
  ------------------
  |  | 1407|      7|	do {												\
  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  ------------------
  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1410|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
17845|      7|		if (Z_TYPE_INFO_REFCOUNTED(value_type)) {
  ------------------
  |  |  820|      7|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  ------------------
  |  |  |  |  711|      7|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  ------------------
  |  |  |  Branch (820:36): [True: 4, False: 3]
  |  |  ------------------
  ------------------
17846|      4|			GC_ADDREF(gc);
  ------------------
  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
17847|      4|		}
17848|      7|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      7|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      7|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      7|	} else { \
  |  |  |  | 5761|      7|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      7|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      7|	} \
  |  |  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17848:3): [True: 0, False: 7]
  |  Branch (17848:3): [True: 7, False: 0]
  ------------------
17849|      7|	}
17850|    737|}
zend_execute.c:zend_fe_fetch_object_helper_SPEC:
 3043|    234|{
 3044|    234|	USE_OPLINE
 3045|    234|	zval *array;
 3046|    234|	zval *value;
 3047|    234|	uint32_t value_type;
 3048|    234|	HashTable *fe_ht;
 3049|    234|	HashPosition pos;
 3050|    234|	Bucket *p;
 3051|    234|	zend_object_iterator *iter;
 3052|       |
 3053|    234|	array = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    234|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    234|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3054|    234|	SAVE_OPLINE();
  ------------------
  |  |  428|    234|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    234|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3055|       |
 3056|    234|	ZEND_ASSERT(Z_TYPE_P(array) == IS_OBJECT);
  ------------------
  |  |  112|    234|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3056:2): [True: 0, False: 234]
  |  Branch (3056:2): [True: 234, False: 0]
  ------------------
 3057|    234|	if ((iter = zend_iterator_unwrap(array)) == NULL) {
  ------------------
  |  Branch (3057:6): [True: 26, False: 208]
  ------------------
 3058|       |		/* plain object */
 3059|       |
 3060|     26|		fe_ht = Z_OBJPROP_P(array);
  ------------------
  |  | 1015|     26|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|     26|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|     26|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|     26|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     26|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3061|     26|		pos = zend_hash_iterator_pos(Z_FE_ITER_P(array), fe_ht);
  ------------------
  |  |  696|     26|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|     26|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 3062|     26|		p = fe_ht->arData + pos;
 3063|     27|		while (1) {
  ------------------
  |  Branch (3063:10): [True: 27, Folded]
  ------------------
 3064|     27|			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
  ------------------
  |  |  457|     27|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 20]
  |  |  ------------------
  ------------------
 3065|       |				/* reached end of iteration */
 3066|      7|				goto fe_fetch_r_exit;
 3067|      7|			}
 3068|     20|			pos++;
 3069|     20|			value = &p->val;
 3070|     20|			value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 3071|     20|			if (EXPECTED(value_type != IS_UNDEF)) {
  ------------------
  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20, False: 0]
  |  |  ------------------
  ------------------
 3072|     20|				if (UNEXPECTED(value_type == IS_INDIRECT)) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 17]
  |  |  ------------------
  ------------------
 3073|      3|					value = Z_INDIRECT_P(value);
  ------------------
  |  | 1044|      3|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      3|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 3074|      3|					value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 3075|      3|					if (EXPECTED(value_type != IS_UNDEF)
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 3076|      2|					 && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key, 0) == SUCCESS)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 3077|      2|						break;
 3078|      2|					}
 3079|     17|				} else if (EXPECTED(Z_OBJCE_P(array)->default_properties_count == 0)
  ------------------
  |  |  456|     34|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 17, False: 0]
  |  |  ------------------
  ------------------
 3080|      0|						|| !p->key
  ------------------
  |  Branch (3080:10): [True: 0, False: 0]
  ------------------
 3081|     17|						|| zend_check_property_access(Z_OBJ_P(array), p->key, 1) == SUCCESS) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (3081:10): [True: 0, False: 0]
  ------------------
 3082|     17|					break;
 3083|     17|				}
 3084|     20|			}
 3085|      1|			p++;
 3086|      1|		}
 3087|     19|		EG(ht_iterators)[Z_FE_ITER_P(array)].pos = pos;
  ------------------
  |  |   45|     19|# define EG(v) (executor_globals.v)
  ------------------
              		EG(ht_iterators)[Z_FE_ITER_P(array)].pos = pos;
  ------------------
  |  |  696|     19|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|     19|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 3088|     19|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|     19|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|     19|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 18, False: 1]
  |  |  ------------------
  ------------------
 3089|     18|			if (UNEXPECTED(!p->key)) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 18]
  |  |  ------------------
  ------------------
 3090|      0|				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3091|     18|			} else if (ZSTR_VAL(p->key)[0]) {
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3091:15): [True: 15, False: 3]
  ------------------
 3092|     15|				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
  ------------------
  |  | 1112|     15|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     15|		zval *__z = (z);								\
  |  | 1114|     15|		zend_string *__s = (s);							\
  |  | 1115|     15|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     15|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     15|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     15|		/* interned strings support */					\
  |  | 1117|     15|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 11, False: 4]
  |  |  ------------------
  |  | 1118|     11|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     11|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     11|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
 3093|     15|			} else {
 3094|      3|				const char *class_name, *prop_name;
 3095|      3|				size_t prop_name_len;
 3096|      3|				zend_unmangle_property_name_ex(
 3097|      3|					p->key, &class_name, &prop_name, &prop_name_len);
 3098|      3|				ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
  ------------------
  |  |  963|      3|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      3|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      3|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      3|		zval *__z = (z);						\
  |  |  |  | 1107|      3|		zend_string *__s = (s);					\
  |  |  |  | 1108|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      3|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3099|      3|			}
 3100|     18|		}
 3101|    208|	} else {
 3102|    208|		const zend_object_iterator_funcs *funcs = iter->funcs;
 3103|    208|		if (EXPECTED(++iter->index > 0)) {
  ------------------
  |  |  456|    208|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 178, False: 30]
  |  |  ------------------
  ------------------
 3104|       |			/* This could cause an endless loop if index becomes zero again.
 3105|       |			 * In case that ever happens we need an additional flag. */
 3106|    178|			funcs->move_forward(iter);
 3107|    178|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|    178|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 175]
  |  |  ------------------
  ------------------
 3108|      3|				UNDEF_RESULT();
  ------------------
  |  | 5907|      3|#define UNDEF_RESULT() do { \
  |  | 5908|      3|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      3|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 3]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3109|      3|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      3|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      3|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (3109:5): [True: 0, False: 3]
  |  Branch (3109:5): [True: 3, False: 0]
  ------------------
 3110|      3|			}
 3111|    175|			if (UNEXPECTED(funcs->valid(iter) == FAILURE)) {
  ------------------
  |  |  457|    175|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 24, False: 151]
  |  |  ------------------
  ------------------
 3112|       |				/* reached end of iteration */
 3113|     24|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 24]
  |  |  ------------------
  ------------------
 3114|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3115|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (3115:6): [True: 0, False: 0]
  |  Branch (3115:6): [True: 0, False: 0]
  ------------------
 3116|      0|				}
 3117|     31|fe_fetch_r_exit:
 3118|     31|				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
  ------------------
  |  | 5785|     31|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|     31|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     31|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     31|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     31|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     31|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     31|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     31|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     31|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3119|     31|				ZEND_VM_CONTINUE();
  ------------------
  |  |  405|     31|# define ZEND_VM_CONTINUE()      return opline
  ------------------
 3120|     31|			}
 3121|    175|		}
 3122|    181|		value = funcs->get_current_data(iter);
 3123|    181|		if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|    181|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 181]
  |  |  ------------------
  ------------------
 3124|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3125|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (3125:4): [True: 0, False: 0]
  |  Branch (3125:4): [True: 0, False: 0]
  ------------------
 3126|      0|		}
 3127|    181|		if (!value) {
  ------------------
  |  Branch (3127:7): [True: 0, False: 181]
  ------------------
 3128|       |			/* failure in get_current_data */
 3129|      0|			goto fe_fetch_r_exit;
 3130|      0|		}
 3131|    181|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|    181|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|    181|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 9, False: 172]
  |  |  ------------------
  ------------------
 3132|      9|			if (funcs->get_current_key) {
  ------------------
  |  Branch (3132:8): [True: 9, False: 0]
  ------------------
 3133|      9|				funcs->get_current_key(iter, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      9|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      9|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3134|      9|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 3135|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3136|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (3136:6): [True: 0, False: 0]
  |  Branch (3136:6): [True: 0, False: 0]
  ------------------
 3137|      0|				}
 3138|      9|			} else {
 3139|      0|				ZVAL_LONG(EX_VAR(opline->result.var), iter->index);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3140|      0|			}
 3141|      9|		}
 3142|    181|		value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|    181|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    181|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 3143|    181|	}
 3144|       |
 3145|    200|	if (EXPECTED(opline->op2_type == IS_CV)) {
  ------------------
  |  |  456|    200|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 196, False: 4]
  |  |  ------------------
  ------------------
 3146|    196|		zval *variable_ptr = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    196|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    196|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3147|    196|		zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  867|    196|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
  ------------------
  |  |  740|    196|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|    196|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|    196|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3148|    196|	} else {
 3149|      4|		if (UNEXPECTED(Z_ISREF_P(value))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 3150|      2|			value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3151|      2|			value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
 3152|      2|		}
 3153|      4|		zval *res = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3154|      4|		zend_refcounted *gc = Z_COUNTED_P(value);
  ------------------
  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 3155|       |
 3156|      4|		ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
  ------------------
  |  | 1407|      4|	do {												\
  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1410|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3157|      4|		if (Z_TYPE_INFO_REFCOUNTED(value_type)) {
  ------------------
  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  ------------------
  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  ------------------
  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 3158|      0|			GC_ADDREF(gc);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3159|      0|		}
 3160|      4|	}
 3161|    200|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    200|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    199|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    200|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 199, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    199|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    199|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    199|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    199|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    199|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    199|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3161:2): [True: 0, False: 1]
  |  Branch (3161:2): [True: 0, False: 1]
  ------------------
 3162|    200|}
zend_execute.c:ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER:
11000|    252|{
11001|    252|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_R));
  ------------------
  |  |  410|    252|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    252|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
11002|    252|}
zend_execute.c:zend_fetch_var_address_helper_SPEC_CONST_UNUSED:
10897|    292|{
10898|    292|	USE_OPLINE
10899|    292|	zval *varname;
10900|    292|	zval *retval;
10901|    292|	zend_string *name, *tmp_name;
10902|    292|	HashTable *target_symbol_table;
10903|       |
10904|    292|	SAVE_OPLINE();
  ------------------
  |  |  428|    292|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    292|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10905|    292|	varname = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    292|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
10906|       |
10907|    292|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    292|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    292|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10907:6): [True: 292, Folded]
  ------------------
10908|    292|		name = Z_STR_P(varname);
  ------------------
  |  |  982|    292|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    292|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10909|    292|	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10910|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10911|      0|		tmp_name = NULL;
10912|      0|	} else {
10913|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10913:7): [Folded, False: 0]
  ------------------
10914|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10915|      0|		}
10916|      0|		name = zval_try_get_tmp_string(varname, &tmp_name);
10917|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10918|      0|			if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
  ------------------
  |  | 1092|      0|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (10918:8): [True: 0, False: 0]
  ------------------
10919|       |
10920|       |
10921|      0|			}
10922|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10923|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10923:4): [True: 0, False: 0]
  |  Branch (10923:4): [True: 0, False: 0]
  ------------------
10924|      0|		}
10925|      0|	}
10926|       |
10927|    292|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|    292|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    292|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10928|    292|	retval = zend_hash_find_ex(target_symbol_table, name, IS_CONST == IS_CONST);
  ------------------
  |  |  864|    292|#define IS_CONST	(1<<0)
  ------------------
              	retval = zend_hash_find_ex(target_symbol_table, name, IS_CONST == IS_CONST);
  ------------------
  |  |  864|    292|#define IS_CONST	(1<<0)
  ------------------
10929|    292|	if (retval == NULL) {
  ------------------
  |  Branch (10929:6): [True: 252, False: 40]
  ------------------
10930|    252|		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
  ------------------
  |  |  457|    252|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 252]
  |  |  ------------------
  ------------------
10931|      0|fetch_this:
10932|      0|			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10933|      0|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10933:8): [Folded, False: 0]
  ------------------
10934|      0|				zend_tmp_string_release(tmp_name);
10935|      0|			}
10936|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10936:4): [True: 0, False: 0]
  |  Branch (10936:4): [True: 0, False: 0]
  ------------------
10937|      0|		}
10938|    252|		if (type == BP_VAR_W) {
  ------------------
  |  | 1075|    252|#define BP_VAR_W			1
  ------------------
  |  Branch (10938:7): [True: 5, False: 247]
  ------------------
10939|      5|			retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
10940|    247|		} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1077|    494|#define BP_VAR_IS			3
  ------------------
              		} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|    244|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (10940:14): [True: 3, False: 244]
  |  Branch (10940:35): [True: 1, False: 243]
  ------------------
10941|      4|			retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
10942|    243|		} else {
10943|    243|			if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|    243|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|    243|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10943:8): [Folded, False: 243]
  ------------------
10944|       |				/* Keep name alive in case an error handler tries to free it. */
10945|      0|				zend_string_addref(name);
10946|      0|			}
10947|    243|			zend_error_unchecked(E_WARNING, "Undefined %svariable $%S",
  ------------------
  |  |   23|    243|#define E_WARNING			(1<<1L)
  ------------------
10948|    243|				(opline->extended_value & ZEND_FETCH_GLOBAL ? "global " : ""), name);
  ------------------
  |  | 1090|    243|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
  |  Branch (10948:6): [True: 3, False: 240]
  ------------------
10949|    243|			if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  | 1076|    486|#define BP_VAR_RW			2
  ------------------
              			if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (10949:8): [True: 1, False: 242]
  |  Branch (10949:29): [True: 1, False: 0]
  ------------------
10950|      1|				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
10951|    242|			} else {
10952|    242|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|    242|# define EG(v) (executor_globals.v)
  ------------------
10953|    242|			}
10954|    243|			if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|    243|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|    243|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (10954:8): [Folded, False: 243]
  ------------------
10955|      0|				zend_string_release(name);
10956|      0|			}
10957|    243|		}
10958|       |	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
10959|    252|	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  669|     40|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     40|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  629|     40|#define IS_INDIRECT             	12
  ------------------
  |  Branch (10959:13): [True: 30, False: 10]
  ------------------
10960|     30|		retval = Z_INDIRECT_P(retval);
  ------------------
  |  | 1044|     30|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|     30|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
10961|     30|		if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  669|     30|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  606|     30|#define IS_UNDEF					0
  ------------------
  |  Branch (10961:7): [True: 4, False: 26]
  ------------------
10962|      4|			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
10963|      0|				goto fetch_this;
10964|      0|			}
10965|      4|			if (type == BP_VAR_W) {
  ------------------
  |  | 1075|      4|#define BP_VAR_W			1
  ------------------
  |  Branch (10965:8): [True: 1, False: 3]
  ------------------
10966|      1|				ZVAL_NULL(retval);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
10967|      3|			} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1077|      6|#define BP_VAR_IS			3
  ------------------
              			} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|      3|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (10967:15): [True: 0, False: 3]
  |  Branch (10967:36): [True: 0, False: 3]
  ------------------
10968|      0|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
10969|      3|			} else {
10970|      3|				zend_error_unchecked(E_WARNING, "Undefined %svariable $%S",
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
10971|      3|					(opline->extended_value & ZEND_FETCH_GLOBAL ? "global " : ""), name);
  ------------------
  |  | 1090|      3|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
  |  Branch (10971:7): [True: 0, False: 3]
  ------------------
10972|      3|				if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  | 1076|      6|#define BP_VAR_RW			2
  ------------------
              				if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (10972:9): [True: 0, False: 3]
  |  Branch (10972:30): [True: 0, False: 0]
  ------------------
10973|      0|					ZVAL_NULL(retval);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10974|      3|				} else {
10975|      3|					retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
10976|      3|				}
10977|      3|			}
10978|      4|		}
10979|     30|	}
10980|       |
10981|    292|	if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
  ------------------
  |  | 1092|    292|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (10981:6): [True: 292, False: 0]
  ------------------
10982|       |
10983|       |
10984|    292|	}
10985|       |
10986|    292|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    292|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    292|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10986:6): [Folded, False: 292]
  ------------------
10987|      0|		zend_tmp_string_release(tmp_name);
10988|      0|	}
10989|       |
10990|    292|	ZEND_ASSERT(retval != NULL);
  ------------------
  |  |  112|    292|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10990:2): [True: 0, False: 292]
  |  Branch (10990:2): [True: 292, False: 0]
  ------------------
10991|    292|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|    584|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|     40|#define BP_VAR_IS			3
  ------------------
  |  Branch (10991:6): [True: 252, False: 40]
  |  Branch (10991:26): [True: 3, False: 37]
  ------------------
10992|    255|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|    255|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|    255|		zval *_z3 = (v);								\
  |  | 1510|    255|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|    255|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|    255|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|    255|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|    255|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 252]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      3|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      2|			} else {									\
  |  | 1517|      2|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      2|			}											\
  |  | 1519|      3|		}												\
  |  | 1520|    255|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|    255|	do {												\
  |  |  |  | 1417|    255|		zval *_z1 = (z);								\
  |  |  |  | 1418|    255|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    255|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    255|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    255|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    255|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    255|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    255|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    255|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    255|	do {												\
  |  |  |  |  |  | 1408|    255|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    255|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    255|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    255|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    255|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    255|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    255|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 255]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    255|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 255]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|    255|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 255]
  |  |  ------------------
  ------------------
10993|    255|	} else {
10994|     37|		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1246|     37|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|     37|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|     37|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|     37|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|     37|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|     37|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     37|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|     37|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
10995|     37|	}
10996|    292|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    292|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    292|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    292|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 292, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    292|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    292|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    292|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    292|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    292|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    292|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10996:2): [True: 0, False: 0]
  |  Branch (10996:2): [True: 0, False: 0]
  ------------------
10997|    292|}
zend_execute.c:ZEND_FETCH_R_SPEC_TMP_UNUSED_HANDLER:
21447|  7.41k|{
21448|  7.41k|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_TMP_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_R));
  ------------------
  |  |  410|  7.41k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  7.41k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
21449|  7.41k|}
zend_execute.c:zend_fetch_var_address_helper_SPEC_TMP_UNUSED:
21346|  8.64k|{
21347|  8.64k|	USE_OPLINE
21348|  8.64k|	zval *varname;
21349|  8.64k|	zval *retval;
21350|  8.64k|	zend_string *name, *tmp_name;
21351|  8.64k|	HashTable *target_symbol_table;
21352|       |
21353|  8.64k|	SAVE_OPLINE();
  ------------------
  |  |  428|  8.64k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  8.64k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21354|  8.64k|	varname = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  8.64k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  8.64k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21355|       |
21356|  8.64k|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|  8.64k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|  8.64k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21356:6): [Folded, False: 8.64k]
  ------------------
21357|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
21358|  8.64k|	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|  8.64k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 328, False: 8.31k]
  |  |  ------------------
  ------------------
21359|    328|		name = Z_STR_P(varname);
  ------------------
  |  |  982|    328|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    328|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
21360|    328|		tmp_name = NULL;
21361|  8.31k|	} else {
21362|  8.31k|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  865|  8.31k|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|  16.6k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (21362:7): [Folded, False: 8.31k]
  ------------------
21363|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21364|      0|		}
21365|  8.31k|		name = zval_try_get_tmp_string(varname, &tmp_name);
21366|  8.31k|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|  8.31k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 8.31k]
  |  |  ------------------
  ------------------
21367|      1|			if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
  ------------------
  |  | 1092|      1|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (21367:8): [True: 0, False: 1]
  ------------------
21368|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21369|      0|			}
21370|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
21371|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21371:4): [True: 0, False: 1]
  |  Branch (21371:4): [True: 1, False: 0]
  ------------------
21372|      1|		}
21373|  8.31k|	}
21374|       |
21375|  8.64k|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|  8.64k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  8.64k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21376|  8.64k|	retval = zend_hash_find_ex(target_symbol_table, name, IS_TMP_VAR == IS_CONST);
  ------------------
  |  |  865|  8.64k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	retval = zend_hash_find_ex(target_symbol_table, name, IS_TMP_VAR == IS_CONST);
  ------------------
  |  |  864|  8.64k|#define IS_CONST	(1<<0)
  ------------------
21377|  8.64k|	if (retval == NULL) {
  ------------------
  |  Branch (21377:6): [True: 4.29k, False: 4.34k]
  ------------------
21378|  4.29k|		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
  ------------------
  |  |  457|  4.29k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.29k]
  |  |  ------------------
  ------------------
21379|      0|fetch_this:
21380|      0|			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21381|      0|			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21381:8): [True: 0, Folded]
  ------------------
21382|      0|				zend_tmp_string_release(tmp_name);
21383|      0|			}
21384|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21384:4): [True: 0, False: 0]
  |  Branch (21384:4): [True: 0, False: 0]
  ------------------
21385|      0|		}
21386|  4.29k|		if (type == BP_VAR_W) {
  ------------------
  |  | 1075|  4.29k|#define BP_VAR_W			1
  ------------------
  |  Branch (21386:7): [True: 161, False: 4.13k]
  ------------------
21387|    161|			retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|    161|# define EG(v) (executor_globals.v)
  ------------------
21388|  4.13k|		} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1077|  8.27k|#define BP_VAR_IS			3
  ------------------
              		} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|  4.13k|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (21388:14): [True: 0, False: 4.13k]
  |  Branch (21388:35): [True: 1, False: 4.13k]
  ------------------
21389|      1|			retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
21390|  4.13k|		} else {
21391|  4.13k|			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|  4.13k|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|  4.13k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (21391:8): [Folded, False: 4.13k]
  ------------------
21392|       |				/* Keep name alive in case an error handler tries to free it. */
21393|      0|				zend_string_addref(name);
21394|      0|			}
21395|  4.13k|			zend_error_unchecked(E_WARNING, "Undefined %svariable $%S",
  ------------------
  |  |   23|  4.13k|#define E_WARNING			(1<<1L)
  ------------------
21396|  4.13k|				(opline->extended_value & ZEND_FETCH_GLOBAL ? "global " : ""), name);
  ------------------
  |  | 1090|  4.13k|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
  |  Branch (21396:6): [True: 0, False: 4.13k]
  ------------------
21397|  4.13k|			if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  | 1076|  8.26k|#define BP_VAR_RW			2
  ------------------
              			if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  |   45|     30|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (21397:8): [True: 30, False: 4.10k]
  |  Branch (21397:29): [True: 30, False: 0]
  ------------------
21398|     30|				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|     30|# define EG(v) (executor_globals.v)
  ------------------
21399|  4.10k|			} else {
21400|  4.10k|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|  4.10k|# define EG(v) (executor_globals.v)
  ------------------
21401|  4.10k|			}
21402|  4.13k|			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|  4.13k|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|  4.13k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (21402:8): [Folded, False: 4.13k]
  ------------------
21403|      0|				zend_string_release(name);
21404|      0|			}
21405|  4.13k|		}
21406|       |	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
21407|  4.34k|	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  669|  4.34k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  4.34k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  629|  4.34k|#define IS_INDIRECT             	12
  ------------------
  |  Branch (21407:13): [True: 24, False: 4.32k]
  ------------------
21408|     24|		retval = Z_INDIRECT_P(retval);
  ------------------
  |  | 1044|     24|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|     24|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
21409|     24|		if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  669|     24|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  606|     24|#define IS_UNDEF					0
  ------------------
  |  Branch (21409:7): [True: 4, False: 20]
  ------------------
21410|      4|			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
21411|      0|				goto fetch_this;
21412|      0|			}
21413|      4|			if (type == BP_VAR_W) {
  ------------------
  |  | 1075|      4|#define BP_VAR_W			1
  ------------------
  |  Branch (21413:8): [True: 4, False: 0]
  ------------------
21414|      4|				ZVAL_NULL(retval);
  ------------------
  |  | 1059|      4|#define ZVAL_NULL(z) do {				\
  |  | 1060|      4|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
21415|      4|			} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
              			} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (21415:15): [True: 0, False: 0]
  |  Branch (21415:36): [True: 0, False: 0]
  ------------------
21416|      0|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
21417|      0|			} else {
21418|      0|				zend_error_unchecked(E_WARNING, "Undefined %svariable $%S",
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
21419|      0|					(opline->extended_value & ZEND_FETCH_GLOBAL ? "global " : ""), name);
  ------------------
  |  | 1090|      0|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
  |  Branch (21419:7): [True: 0, False: 0]
  ------------------
21420|      0|				if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
              				if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (21420:9): [True: 0, False: 0]
  |  Branch (21420:30): [True: 0, False: 0]
  ------------------
21421|      0|					ZVAL_NULL(retval);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21422|      0|				} else {
21423|      0|					retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
21424|      0|				}
21425|      0|			}
21426|      4|		}
21427|     24|	}
21428|       |
21429|  8.64k|	if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
  ------------------
  |  | 1092|  8.64k|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (21429:6): [True: 8.63k, False: 8]
  ------------------
21430|  8.63k|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|  8.63k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  8.63k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21431|  8.63k|	}
21432|       |
21433|  8.64k|	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|  8.64k|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|  8.64k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21433:6): [True: 8.64k, Folded]
  ------------------
21434|  8.64k|		zend_tmp_string_release(tmp_name);
21435|  8.64k|	}
21436|       |
21437|  8.64k|	ZEND_ASSERT(retval != NULL);
  ------------------
  |  |  112|  8.64k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (21437:2): [True: 0, False: 8.64k]
  |  Branch (21437:2): [True: 8.64k, False: 0]
  ------------------
21438|  8.64k|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|  17.2k|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|  1.22k|#define BP_VAR_IS			3
  ------------------
  |  Branch (21438:6): [True: 7.41k, False: 1.22k]
  |  Branch (21438:26): [True: 0, False: 1.22k]
  ------------------
21439|  7.41k|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|  7.41k|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|  7.41k|		zval *_z3 = (v);								\
  |  | 1510|  7.41k|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|  7.41k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|  7.41k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|  7.41k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|  7.41k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 62, False: 7.35k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     62|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 60, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|     60|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|     60|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     60|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     60|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|     60|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|     60|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     60|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     60|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     60|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 60]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|     60|			} else {									\
  |  | 1517|      2|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      2|			}											\
  |  | 1519|     62|		}												\
  |  | 1520|  7.41k|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|  7.41k|	do {												\
  |  |  |  | 1417|  7.41k|		zval *_z1 = (z);								\
  |  |  |  | 1418|  7.41k|		const zval *_z2 = (v);							\
  |  |  |  | 1419|  7.41k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  7.41k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  7.41k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|  7.41k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  7.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  7.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|  7.41k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|  7.41k|	do {												\
  |  |  |  |  |  | 1408|  7.41k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  7.41k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  7.41k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|  7.41k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  7.41k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  7.41k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|  7.41k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7.41k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|  7.41k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 7.41k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|  7.41k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 7.41k]
  |  |  ------------------
  ------------------
21440|  7.41k|	} else {
21441|  1.22k|		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1246|  1.22k|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|  1.22k|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|  1.22k|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|  1.22k|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|  1.22k|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|  1.22k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.22k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|  1.22k|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|  1.22k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 1.22k]
  |  |  ------------------
  ------------------
21442|  1.22k|	}
21443|  8.64k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  8.64k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  8.64k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  8.64k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8.64k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  8.64k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  8.64k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  8.64k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  8.64k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  8.64k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  8.64k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21443:2): [True: 0, False: 0]
  |  Branch (21443:2): [True: 0, False: 0]
  ------------------
21444|  8.64k|}
zend_execute.c:ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER:
48583|  2.46k|{
48584|  2.46k|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CV_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_R));
  ------------------
  |  |  410|  2.46k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  2.46k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
48585|  2.46k|}
zend_execute.c:zend_fetch_var_address_helper_SPEC_CV_UNUSED:
48480|  8.33k|{
48481|  8.33k|	USE_OPLINE
48482|  8.33k|	zval *varname;
48483|  8.33k|	zval *retval;
48484|  8.33k|	zend_string *name, *tmp_name;
48485|  8.33k|	HashTable *target_symbol_table;
48486|       |
48487|  8.33k|	SAVE_OPLINE();
  ------------------
  |  |  428|  8.33k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  8.33k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48488|  8.33k|	varname = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  8.33k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  8.33k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48489|       |
48490|  8.33k|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|  8.33k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|  8.33k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48490:6): [Folded, False: 8.33k]
  ------------------
48491|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
48492|  8.33k|	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
  ------------------
  |  |  456|  8.33k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 291, False: 8.04k]
  |  |  ------------------
  ------------------
48493|    291|		name = Z_STR_P(varname);
  ------------------
  |  |  982|    291|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    291|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
48494|    291|		tmp_name = NULL;
48495|  8.04k|	} else {
48496|  8.04k|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|  8.04k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  867|  16.0k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
  ------------------
  |  |  457|  8.04k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7.64k, False: 394]
  |  |  ------------------
  ------------------
  |  Branch (48496:7): [True: 8.04k, Folded]
  ------------------
48497|  7.64k|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|  7.64k|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|  7.64k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48498|  7.64k|		}
48499|  8.04k|		name = zval_try_get_tmp_string(varname, &tmp_name);
48500|  8.04k|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|  8.04k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8.04k]
  |  |  ------------------
  ------------------
48501|      0|			if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
  ------------------
  |  | 1092|      0|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (48501:8): [True: 0, False: 0]
  ------------------
48502|       |
48503|       |
48504|      0|			}
48505|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48506|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (48506:4): [True: 0, False: 0]
  |  Branch (48506:4): [True: 0, False: 0]
  ------------------
48507|      0|		}
48508|  8.04k|	}
48509|       |
48510|  8.33k|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|  8.33k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  8.33k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48511|  8.33k|	retval = zend_hash_find_ex(target_symbol_table, name, IS_CV == IS_CONST);
  ------------------
  |  |  867|  8.33k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	retval = zend_hash_find_ex(target_symbol_table, name, IS_CV == IS_CONST);
  ------------------
  |  |  864|  8.33k|#define IS_CONST	(1<<0)
  ------------------
48512|  8.33k|	if (retval == NULL) {
  ------------------
  |  Branch (48512:6): [True: 949, False: 7.38k]
  ------------------
48513|    949|		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
  ------------------
  |  |  457|    949|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 946]
  |  |  ------------------
  ------------------
48514|      3|fetch_this:
48515|      3|			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48516|      3|			if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48516:8): [True: 3, Folded]
  ------------------
48517|      3|				zend_tmp_string_release(tmp_name);
48518|      3|			}
48519|      3|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (48519:4): [True: 0, False: 0]
  |  Branch (48519:4): [True: 0, False: 0]
  ------------------
48520|      3|		}
48521|    946|		if (type == BP_VAR_W) {
  ------------------
  |  | 1075|    946|#define BP_VAR_W			1
  ------------------
  |  Branch (48521:7): [True: 111, False: 835]
  ------------------
48522|    111|			retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|    111|# define EG(v) (executor_globals.v)
  ------------------
48523|    835|		} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1077|  1.67k|#define BP_VAR_IS			3
  ------------------
              		} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|    835|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (48523:14): [True: 0, False: 835]
  |  Branch (48523:35): [True: 0, False: 835]
  ------------------
48524|      0|			retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
48525|    835|		} else {
48526|    835|			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    835|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    835|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (48526:8): [True: 835, Folded]
  ------------------
48527|       |				/* Keep name alive in case an error handler tries to free it. */
48528|    835|				zend_string_addref(name);
48529|    835|			}
48530|    835|			zend_error_unchecked(E_WARNING, "Undefined %svariable $%S",
  ------------------
  |  |   23|    835|#define E_WARNING			(1<<1L)
  ------------------
48531|    835|				(opline->extended_value & ZEND_FETCH_GLOBAL ? "global " : ""), name);
  ------------------
  |  | 1090|    835|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
  |  Branch (48531:6): [True: 0, False: 835]
  ------------------
48532|    835|			if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  | 1076|  1.67k|#define BP_VAR_RW			2
  ------------------
              			if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  |   45|    368|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (48532:8): [True: 368, False: 467]
  |  Branch (48532:29): [True: 368, False: 0]
  ------------------
48533|    368|				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
  ------------------
  |  |   45|    368|# define EG(v) (executor_globals.v)
  ------------------
48534|    467|			} else {
48535|    467|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|    467|# define EG(v) (executor_globals.v)
  ------------------
48536|    467|			}
48537|    835|			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    835|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    835|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (48537:8): [True: 834, Folded]
  ------------------
48538|    834|				zend_string_release(name);
48539|    834|			}
48540|    835|		}
48541|       |	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
48542|  7.38k|	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  669|  7.38k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  7.38k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  629|  7.38k|#define IS_INDIRECT             	12
  ------------------
  |  Branch (48542:13): [True: 19, False: 7.36k]
  ------------------
48543|     19|		retval = Z_INDIRECT_P(retval);
  ------------------
  |  | 1044|     19|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|     19|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
48544|     19|		if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  669|     19|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     19|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  606|     19|#define IS_UNDEF					0
  ------------------
  |  Branch (48544:7): [True: 4, False: 15]
  ------------------
48545|      4|			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
48546|      0|				goto fetch_this;
48547|      0|			}
48548|      4|			if (type == BP_VAR_W) {
  ------------------
  |  | 1075|      4|#define BP_VAR_W			1
  ------------------
  |  Branch (48548:8): [True: 2, False: 2]
  ------------------
48549|      2|				ZVAL_NULL(retval);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
48550|      2|			} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1077|      4|#define BP_VAR_IS			3
  ------------------
              			} else if (type == BP_VAR_IS || type == BP_VAR_UNSET) {
  ------------------
  |  | 1079|      2|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (48550:15): [True: 0, False: 2]
  |  Branch (48550:36): [True: 0, False: 2]
  ------------------
48551|      0|				retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
48552|      2|			} else {
48553|      2|				zend_error_unchecked(E_WARNING, "Undefined %svariable $%S",
  ------------------
  |  |   23|      2|#define E_WARNING			(1<<1L)
  ------------------
48554|      2|					(opline->extended_value & ZEND_FETCH_GLOBAL ? "global " : ""), name);
  ------------------
  |  | 1090|      2|#define ZEND_FETCH_GLOBAL		(1<<1)
  ------------------
  |  Branch (48554:7): [True: 0, False: 2]
  ------------------
48555|      2|				if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  | 1076|      4|#define BP_VAR_RW			2
  ------------------
              				if (type == BP_VAR_RW && !EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (48555:9): [True: 1, False: 1]
  |  Branch (48555:30): [True: 1, False: 0]
  ------------------
48556|      1|					ZVAL_NULL(retval);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
48557|      1|				} else {
48558|      1|					retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
48559|      1|				}
48560|      2|			}
48561|      4|		}
48562|     19|	}
48563|       |
48564|  8.33k|	if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
  ------------------
  |  | 1092|  8.33k|#define ZEND_FETCH_GLOBAL_LOCK	(1<<3)
  ------------------
  |  Branch (48564:6): [True: 8.33k, False: 1]
  ------------------
48565|       |
48566|       |
48567|  8.33k|	}
48568|       |
48569|  8.33k|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|  8.33k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|  8.33k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48569:6): [True: 8.33k, Folded]
  ------------------
48570|  8.33k|		zend_tmp_string_release(tmp_name);
48571|  8.33k|	}
48572|       |
48573|  8.33k|	ZEND_ASSERT(retval != NULL);
  ------------------
  |  |  112|  8.33k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (48573:2): [True: 0, False: 8.33k]
  |  Branch (48573:2): [True: 8.33k, False: 1]
  ------------------
48574|  8.33k|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|  16.6k|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|  5.86k|#define BP_VAR_IS			3
  ------------------
  |  Branch (48574:6): [True: 2.46k, False: 5.86k]
  |  Branch (48574:26): [True: 0, False: 5.86k]
  ------------------
48575|  2.46k|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|  2.46k|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|  2.46k|		zval *_z3 = (v);								\
  |  | 1510|  2.46k|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|  2.46k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|  2.46k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|  2.46k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|  2.46k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 291, False: 2.17k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|    291|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|    291|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 11, False: 280]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|     11|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|     11|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     11|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     11|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|     11|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|     11|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     11|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     11|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     11|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 6, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      6|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      6|				}										\
  |  | 1516|    280|			} else {									\
  |  | 1517|    280|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|    280|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|    280|			}											\
  |  | 1519|    291|		}												\
  |  | 1520|  2.46k|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|  2.46k|	do {												\
  |  |  |  | 1417|  2.46k|		zval *_z1 = (z);								\
  |  |  |  | 1418|  2.46k|		const zval *_z2 = (v);							\
  |  |  |  | 1419|  2.46k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  2.46k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  2.46k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|  2.46k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  2.46k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  2.46k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|  2.46k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|  2.46k|	do {												\
  |  |  |  |  |  | 1408|  2.46k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  2.46k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  2.46k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|  2.46k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  2.46k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  2.46k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|  2.46k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2.46k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|  2.46k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|  2.46k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 2.46k]
  |  |  ------------------
  ------------------
48576|  5.86k|	} else {
48577|  5.86k|		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1246|  5.86k|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|  5.86k|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|  5.86k|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|  5.86k|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|  5.86k|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|  5.86k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  5.86k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|  5.86k|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|  5.86k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 5.86k]
  |  |  ------------------
  ------------------
48578|  5.86k|	}
48579|  8.33k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  8.33k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  8.33k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  8.33k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8.33k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  8.33k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  8.33k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  8.33k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  8.33k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  8.33k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  8.33k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (48579:2): [True: 0, False: 0]
  |  Branch (48579:2): [True: 0, False: 0]
  ------------------
48580|  8.33k|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER:
 6828|     16|{
 6829|     16|	USE_OPLINE
 6830|     16|	zval *container, *dim, *value;
 6831|       |
 6832|     16|	SAVE_OPLINE();
  ------------------
  |  |  428|     16|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6833|     16|	container = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     16|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6834|     16|	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     16|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     16|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (6834:6): [Folded, False: 16]
  ------------------
 6835|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
 6836|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6836:3): [True: 0, False: 0]
  |  Branch (6836:3): [True: 0, False: 0]
  ------------------
 6837|      0|	}
 6838|     16|	dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     16|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6839|     16|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6839:6): [Folded, False: 16]
  ------------------
 6840|      0|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6841|      0|fetch_dim_r_array:
 6842|      0|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 6843|      0|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6844|      0|		} else if (IS_CONST == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6844:14): [Folded, False: 0]
  ------------------
 6845|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6846|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6847|      0|				goto fetch_dim_r_array;
 6848|      0|			} else {
 6849|      0|				goto fetch_dim_r_slow;
 6850|      0|			}
 6851|      0|		} else {
 6852|      0|fetch_dim_r_slow:
 6853|      0|			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (6853:8): [True: 0, Folded]
  |  Branch (6853:32): [True: 0, False: 0]
  ------------------
 6854|      0|				dim++;
 6855|      0|			}
 6856|      0|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 6857|      0|		}
 6858|     16|	} else {
 6859|     16|		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     16|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     16|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     16|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     16|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 6860|     16|	}
 6861|       |
 6862|       |
 6863|       |
 6864|       |
 6865|     16|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     16|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     16|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     16|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 16, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     16|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     16|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     16|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     16|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     16|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6865:2): [True: 0, False: 0]
  |  Branch (6865:2): [True: 0, False: 0]
  ------------------
 6866|     16|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_CONST_TMP_HANDLER:
 9573|      4|{
 9574|      4|	USE_OPLINE
 9575|      4|	zval *container, *dim, *value;
 9576|       |
 9577|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9578|      4|	container = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9579|      4|	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (9579:6): [Folded, False: 4]
  ------------------
 9580|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
 9581|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9581:3): [True: 0, False: 0]
  |  Branch (9581:3): [True: 0, False: 0]
  ------------------
 9582|      0|	}
 9583|      4|	dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9584|      4|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (9584:6): [Folded, False: 4]
  ------------------
 9585|      0|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9586|      0|fetch_dim_r_array:
 9587|      0|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9588|      0|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9589|      0|		} else if (IS_CONST == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9589:14): [Folded, False: 0]
  ------------------
 9590|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9591|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9592|      0|				goto fetch_dim_r_array;
 9593|      0|			} else {
 9594|      0|				goto fetch_dim_r_slow;
 9595|      0|			}
 9596|      0|		} else {
 9597|      0|fetch_dim_r_slow:
 9598|      0|			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (9598:8): [Folded, False: 0]
  |  Branch (9598:34): [True: 0, False: 0]
  ------------------
 9599|      0|				dim++;
 9600|      0|			}
 9601|      0|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9602|      0|		}
 9603|      4|	} else {
 9604|      4|		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9605|      4|	}
 9606|      4|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9607|       |
 9608|       |
 9609|      4|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9609:2): [True: 0, False: 0]
  |  Branch (9609:2): [True: 0, False: 0]
  ------------------
 9610|      4|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER:
15642|     28|{
15643|     28|	USE_OPLINE
15644|     28|	zval *container, *dim, *value;
15645|       |
15646|     28|	SAVE_OPLINE();
  ------------------
  |  |  428|     28|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     28|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15647|     28|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     28|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     28|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15648|     28|	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     28|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     28|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     28|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     28|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (15648:6): [True: 28, Folded]
  ------------------
15649|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
15650|     28|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (15650:3): [True: 0, False: 28]
  |  Branch (15650:3): [True: 28, False: 0]
  ------------------
15651|     28|	}
15652|     28|	dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     28|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
15653|     28|	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  865|     28|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  866|     28|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  864|     28|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15653:6): [True: 28, Folded]
  ------------------
15654|     28|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     28|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20, False: 8]
  |  |  ------------------
  ------------------
15655|     20|fetch_dim_r_array:
15656|     20|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|     20|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     20|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     20|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|     20|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|     20|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     20|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15657|     20|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|     20|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     20|		zval *_z3 = (v);								\
  |  | 1510|     20|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     20|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     20|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     20|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     20|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 14, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     14|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|     14|			} else {									\
  |  | 1517|     14|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     14|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     14|			}											\
  |  | 1519|     14|		}												\
  |  | 1520|     20|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     20|	do {												\
  |  |  |  | 1417|     20|		zval *_z1 = (z);								\
  |  |  |  | 1418|     20|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     20|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     20|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     20|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     20|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     20|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     20|	do {												\
  |  |  |  |  |  | 1408|     20|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     20|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     20|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     20|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     20|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 20]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     20|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
15658|     20|		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  866|      8|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|     16|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (15658:14): [Folded, False: 8]
  ------------------
15659|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15660|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15661|      0|				goto fetch_dim_r_array;
15662|      0|			} else {
15663|      0|				goto fetch_dim_r_slow;
15664|      0|			}
15665|      8|		} else {
15666|      8|fetch_dim_r_slow:
15667|      8|			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      8|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      8|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      8|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (15667:8): [True: 8, Folded]
  |  Branch (15667:32): [True: 0, False: 8]
  ------------------
15668|      0|				dim++;
15669|      0|			}
15670|      8|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      8|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      8|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15671|      8|		}
15672|     28|	} else {
15673|      0|		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15674|      0|	}
15675|       |
15676|       |
15677|     28|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     28|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     28|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15678|     28|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     28|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     28|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     28|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 28, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     28|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     28|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     28|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     28|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     28|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     28|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15678:2): [True: 0, False: 0]
  |  Branch (15678:2): [True: 0, False: 0]
  ------------------
15679|     28|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMP_HANDLER:
16135|     10|{
16136|     10|	USE_OPLINE
16137|     10|	zval *container, *dim, *value;
16138|       |
16139|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16140|     10|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16141|     10|	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     10|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     10|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (16141:6): [True: 10, Folded]
  ------------------
16142|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
16143|     10|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16143:3): [True: 0, False: 10]
  |  Branch (16143:3): [True: 10, False: 0]
  ------------------
16144|     10|	}
16145|     10|	dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16146|     10|	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  866|     10|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16146:6): [True: 10, Folded]
  ------------------
16147|     10|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  ------------------
  ------------------
16148|     10|fetch_dim_r_array:
16149|     10|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|     10|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     10|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|     10|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16150|     10|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|     10|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     10|		zval *_z3 = (v);								\
  |  | 1510|     10|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     10|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     10|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     10|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     10|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 9, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      9|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      9|			} else {									\
  |  | 1517|      9|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      9|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      9|			}											\
  |  | 1519|      9|		}												\
  |  | 1520|     10|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     10|	do {												\
  |  |  |  | 1417|     10|		zval *_z1 = (z);								\
  |  |  |  | 1418|     10|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     10|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     10|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     10|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     10|	do {												\
  |  |  |  |  |  | 1408|     10|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     10|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     10|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
16151|     10|		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16151:14): [Folded, False: 0]
  ------------------
16152|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16153|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16154|      0|				goto fetch_dim_r_array;
16155|      0|			} else {
16156|      0|				goto fetch_dim_r_slow;
16157|      0|			}
16158|      0|		} else {
16159|      0|fetch_dim_r_slow:
16160|      0|			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (16160:8): [Folded, False: 0]
  |  Branch (16160:34): [True: 0, False: 0]
  ------------------
16161|      0|				dim++;
16162|      0|			}
16163|      0|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16164|      0|		}
16165|     10|	} else {
16166|      0|		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16167|      0|	}
16168|     10|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16169|     10|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16170|     10|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     10|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     10|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16170:2): [True: 0, False: 0]
  |  Branch (16170:2): [True: 0, False: 0]
  ------------------
16171|     10|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER:
42023|    229|{
42024|    229|	USE_OPLINE
42025|    229|	zval *container, *dim, *value;
42026|       |
42027|    229|	SAVE_OPLINE();
  ------------------
  |  |  428|    229|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    229|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42028|    229|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    229|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    229|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42029|    229|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|    229|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    229|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    229|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42029:6): [Folded, False: 229]
  ------------------
42030|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
42031|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42031:3): [True: 0, False: 0]
  |  Branch (42031:3): [True: 0, False: 0]
  ------------------
42032|      0|	}
42033|    229|	dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    229|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42034|    229|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|    229|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|    229|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42034:6): [True: 229, Folded]
  ------------------
42035|    229|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|    229|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 86, False: 143]
  |  |  ------------------
  ------------------
42036|     87|fetch_dim_r_array:
42037|     87|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|     87|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     87|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     87|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  864|     87|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|     87|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|     87|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     87|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42038|     87|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|     87|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     87|		zval *_z3 = (v);								\
  |  | 1510|     87|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     87|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     87|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     87|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     87|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 64, False: 23]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     64|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 8, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      8|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      8|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      8|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      8|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      8|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      8|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      3|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      3|				}										\
  |  | 1516|     56|			} else {									\
  |  | 1517|     56|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     56|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     56|			}											\
  |  | 1519|     64|		}												\
  |  | 1520|     87|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     87|	do {												\
  |  |  |  | 1417|     87|		zval *_z1 = (z);								\
  |  |  |  | 1418|     87|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     87|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     87|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     87|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     87|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     87|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     87|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     87|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     87|	do {												\
  |  |  |  |  |  | 1408|     87|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     87|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     87|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     87|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     87|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     87|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     87|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 87]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     87|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 87]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     87|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 87]
  |  |  ------------------
  ------------------
42039|    143|		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|    143|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|    286|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|    143|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 141]
  |  |  ------------------
  ------------------
  |  Branch (42039:14): [True: 143, Folded]
  ------------------
42040|      2|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42041|      2|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
42042|      1|				goto fetch_dim_r_array;
42043|      1|			} else {
42044|      1|				goto fetch_dim_r_slow;
42045|      1|			}
42046|    141|		} else {
42047|    142|fetch_dim_r_slow:
42048|    142|			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|    142|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|    284|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|    142|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|    142|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|    142|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (42048:8): [True: 142, Folded]
  |  Branch (42048:32): [True: 2, False: 140]
  ------------------
42049|      2|				dim++;
42050|      2|			}
42051|    142|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    142|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    142|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    142|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    142|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42052|    142|		}
42053|    229|	} else {
42054|      0|		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42055|      0|	}
42056|       |
42057|       |
42058|       |
42059|       |
42060|    229|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    229|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    229|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    229|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 229, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    229|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    229|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    229|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    229|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    229|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    229|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42060:2): [True: 0, False: 0]
  |  Branch (42060:2): [True: 0, False: 0]
  ------------------
42061|    229|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER:
45861|     26|{
45862|     26|	USE_OPLINE
45863|     26|	zval *container, *dim, *value;
45864|       |
45865|     26|	SAVE_OPLINE();
  ------------------
  |  |  428|     26|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     26|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45866|     26|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     26|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     26|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45867|     26|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|     26|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     26|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     26|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (45867:6): [Folded, False: 26]
  ------------------
45868|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
45869|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (45869:3): [True: 0, False: 0]
  |  Branch (45869:3): [True: 0, False: 0]
  ------------------
45870|      0|	}
45871|     26|	dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     26|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     26|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45872|     26|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|     26|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|     26|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (45872:6): [True: 26, Folded]
  ------------------
45873|     26|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     26|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 24, False: 2]
  |  |  ------------------
  ------------------
45874|     24|fetch_dim_r_array:
45875|     24|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|     24|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     24|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     24|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  865|     24|#define IS_TMP_VAR	(1<<1)
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|     24|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_TMP_VAR, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|     24|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     24|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45876|     24|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|     24|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     24|		zval *_z3 = (v);								\
  |  | 1510|     24|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     24|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     24|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     24|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     24|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 14, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     14|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 4, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      4|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      4|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      4|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      4|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|     10|			} else {									\
  |  | 1517|     10|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     10|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     10|			}											\
  |  | 1519|     14|		}												\
  |  | 1520|     24|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     24|	do {												\
  |  |  |  | 1417|     24|		zval *_z1 = (z);								\
  |  |  |  | 1418|     24|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     24|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     24|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     24|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     24|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     24|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     24|	do {												\
  |  |  |  |  |  | 1408|     24|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     24|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     24|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     24|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     24|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     24|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
45877|     24|		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (45877:14): [True: 2, Folded]
  ------------------
45878|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
45879|      0|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
45880|      0|				goto fetch_dim_r_array;
45881|      0|			} else {
45882|      0|				goto fetch_dim_r_slow;
45883|      0|			}
45884|      2|		} else {
45885|      2|fetch_dim_r_slow:
45886|      2|			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_TMP_VAR == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (45886:8): [Folded, False: 2]
  |  Branch (45886:34): [True: 0, False: 0]
  ------------------
45887|      0|				dim++;
45888|      0|			}
45889|      2|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45890|      2|		}
45891|     26|	} else {
45892|      0|		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45893|      0|	}
45894|     26|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     26|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     26|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45895|       |
45896|       |
45897|     26|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     26|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     26|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     26|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 26, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     26|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     26|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     26|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     26|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     26|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     26|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (45897:2): [True: 0, False: 0]
  |  Branch (45897:2): [True: 0, False: 0]
  ------------------
45898|     26|}
zend_execute.c:ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER:
50967|    294|{
50968|    294|	USE_OPLINE
50969|    294|	zval *container, *dim, *value;
50970|       |
50971|    294|	SAVE_OPLINE();
  ------------------
  |  |  428|    294|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    294|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50972|    294|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    294|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    294|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50973|    294|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|    294|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    294|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    294|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (50973:6): [Folded, False: 294]
  ------------------
50974|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
50975|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (50975:3): [True: 0, False: 0]
  |  Branch (50975:3): [True: 0, False: 0]
  ------------------
50976|      0|	}
50977|    294|	dim = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    294|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    294|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50978|    294|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|    294|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|    294|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (50978:6): [True: 294, Folded]
  ------------------
50979|    294|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|    294|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 283, False: 11]
  |  |  ------------------
  ------------------
50980|    284|fetch_dim_r_array:
50981|    284|			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  997|    284|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    284|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    284|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |  867|    284|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  | 1074|    284|#define BP_VAR_R			0
  ------------------
              			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
  ------------------
  |  |   89|    284|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    284|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50982|    284|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1508|    284|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|    284|		zval *_z3 = (v);								\
  |  | 1510|    284|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|    284|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|    284|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|    284|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|    284|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 271, False: 13]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|    271|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|    271|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 269]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      2|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      2|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      2|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      2|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|    269|			} else {									\
  |  | 1517|    269|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|    269|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|    269|			}											\
  |  | 1519|    271|		}												\
  |  | 1520|    284|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|    284|	do {												\
  |  |  |  | 1417|    284|		zval *_z1 = (z);								\
  |  |  |  | 1418|    284|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    284|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    284|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    284|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    284|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    284|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    284|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    284|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    284|	do {												\
  |  |  |  |  |  | 1408|    284|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    284|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    284|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    284|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    284|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    284|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    284|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 284]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    284|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 284]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|    284|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 284]
  |  |  ------------------
  ------------------
50983|    284|		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|     11|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
  ------------------
  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 10]
  |  |  ------------------
  ------------------
  |  Branch (50983:14): [True: 11, Folded]
  ------------------
50984|      1|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50985|      1|			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
50986|      1|				goto fetch_dim_r_array;
50987|      1|			} else {
50988|      0|				goto fetch_dim_r_slow;
50989|      0|			}
50990|     10|		} else {
50991|     10|fetch_dim_r_slow:
50992|     10|			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      0|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (50992:8): [Folded, False: 10]
  |  Branch (50992:29): [True: 0, False: 0]
  ------------------
50993|      0|				dim++;
50994|      0|			}
50995|     10|			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     10|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     10|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50996|     10|		}
50997|    294|	} else {
50998|      0|		zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50999|      0|	}
51000|       |
51001|       |
51002|       |
51003|       |
51004|    294|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    294|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    294|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    294|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 294, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    294|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    294|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    294|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    294|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    294|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    294|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51004:2): [True: 0, False: 0]
  |  Branch (51004:2): [True: 0, False: 0]
  ------------------
51005|    294|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER:
 6911|      4|{
 6912|      4|	USE_OPLINE
 6913|      4|	zval *container;
 6914|      4|	void **cache_slot = NULL;
 6915|       |
 6916|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6917|      4|	container = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6918|      4|	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (6918:6): [Folded, False: 4]
  ------------------
 6919|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
 6920|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6920:3): [True: 0, False: 0]
  |  Branch (6920:3): [True: 0, False: 0]
  ------------------
 6921|      0|	}
 6922|       |
 6923|      4|	if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6923:6): [True: 4, Folded]
  ------------------
 6924|      4|	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6924:7): [True: 0, Folded]
  ------------------
 6925|      4|		do {
 6926|      4|			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6926:8): [Folded, False: 4]
  ------------------
 6927|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6928|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6929|      0|					break;
 6930|      0|				}
 6931|      0|			}
 6932|      4|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6932:8): [Folded, False: 4]
  ------------------
 6933|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 6934|      0|			}
 6935|      4|			zend_wrong_property_read(container, RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6936|      4|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      4|#define ZVAL_NULL(z) do {				\
  |  | 1060|      4|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 6937|      4|			goto fetch_obj_r_finish;
 6938|      4|		} while (0);
  ------------------
  |  Branch (6938:12): [Folded, False: 0]
  ------------------
 6939|      4|	}
 6940|       |
 6941|       |	/* here we are sure we are dealing with an object */
 6942|      0|	do {
 6943|      0|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 6944|      0|		zend_string *name, *tmp_name;
 6945|      0|		zval *retval;
 6946|       |
 6947|      0|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (6947:7): [True: 0, Folded]
  ------------------
 6948|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6949|       |
 6950|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6951|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
 6952|       |
 6953|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6954|      0|fetch_obj_r_simple:
 6955|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 6956|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6957|      0|						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (6957:11): [Folded, False: 0]
  |  Branch (6957:16): [Folded, False: 0]
  ------------------
 6958|      0|							goto fetch_obj_r_copy;
 6959|      0|						} else {
 6960|      0|fetch_obj_r_fast_copy:
 6961|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6962|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6962:8): [True: 0, False: 0]
  |  Branch (6962:8): [True: 0, False: 0]
  ------------------
 6963|      0|						}
 6964|      0|					}
 6965|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6966|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
 6967|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6968|      0|						prop_offset = prop_info->offset;
 6969|      0|						goto fetch_obj_r_simple;
 6970|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6971|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
 6972|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6972:7): [True: 0, False: 0]
  |  Branch (6972:7): [True: 0, False: 0]
  ------------------
 6973|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6973:7): [True: 0, False: 0]
  |  Branch (6973:7): [True: 0, False: 0]
  |  Branch (6973:7): [True: 0, False: 0]
  |  Branch (6973:7): [True: 0, False: 0]
  ------------------
 6974|       |
 6975|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6976|      0|						if (IS_CONST & IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (6976:11): [Folded, False: 0]
  ------------------
 6977|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 6978|      0|						}
 6979|      0|						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (6979:11): [Folded, False: 0]
  ------------------
 6980|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
 6981|      0|						}
 6982|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
 6983|      0|						call->prev_execute_data = execute_data;
 6984|      0|						call->call = NULL;
 6985|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6986|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6987|       |
 6988|      0|						execute_data = call;
 6989|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 6990|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 6991|       |
 6992|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 6993|       |						opline = hook->op_array.opcodes;
 6994|       |#else
 6995|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 6996|      0|#endif
 6997|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6998|       |
 6999|       |
 7000|       |
 7001|       |
 7002|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 7003|      0|					}
 7004|       |					/* Fall through to read_property for hooks. */
 7005|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7006|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7006:6): [True: 0, False: 0]
  |  Branch (7006:6): [True: 0, False: 0]
  ------------------
 7007|      0|					name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7008|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (7008:10): [True: 0, False: 0]
  ------------------
 7009|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
 7010|       |
 7011|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7012|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 7013|       |
 7014|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7015|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7016|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7017|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7018|      0|								retval = &p->val;
 7019|      0|								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (7019:13): [Folded, False: 0]
  |  Branch (7019:18): [Folded, False: 0]
  ------------------
 7020|      0|									goto fetch_obj_r_copy;
 7021|      0|								} else {
 7022|      0|									goto fetch_obj_r_fast_copy;
 7023|      0|								}
 7024|      0|							}
 7025|      0|						}
 7026|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7027|      0|					}
 7028|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
 7029|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7030|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
 7031|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7032|      0|						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (7032:11): [Folded, False: 0]
  |  Branch (7032:16): [Folded, False: 0]
  ------------------
 7033|      0|							goto fetch_obj_r_copy;
 7034|      0|						} else {
 7035|      0|							goto fetch_obj_r_fast_copy;
 7036|      0|						}
 7037|      0|					}
 7038|      0|				}
 7039|      0|			}
 7040|      0|			name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7041|      0|		} else {
 7042|      0|			name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7043|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7044|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7045|      0|				break;
 7046|      0|			}
 7047|      0|		}
 7048|       |
 7049|      0|#if ZEND_DEBUG
 7050|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
 7051|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
 7052|      0|		zend_property_info *prop_info = NULL;
 7053|      0|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (7053:7): [True: 0, False: 0]
  ------------------
 7054|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
 7055|      0|		}
 7056|      0|#endif
 7057|      0|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 7058|      0|#if ZEND_DEBUG
 7059|      0|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (7059:7): [True: 0, False: 0]
  |  Branch (7059:25): [True: 0, False: 0]
  |  Branch (7059:38): [True: 0, False: 0]
  ------------------
 7060|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7061|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7062|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
 7063|      0|		}
 7064|      0|#endif
 7065|       |
 7066|      0|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7066:7): [Folded, False: 0]
  ------------------
 7067|      0|			zend_tmp_string_release(tmp_name);
 7068|      0|		}
 7069|       |
 7070|      0|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (7070:7): [True: 0, False: 0]
  ------------------
 7071|      0|fetch_obj_r_copy:
 7072|      0|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7073|      0|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7074|      0|			zend_unwrap_reference(retval);
 7075|      0|		}
 7076|      0|	} while (0);
  ------------------
  |  Branch (7076:11): [Folded, False: 0]
  ------------------
 7077|       |
 7078|      4|fetch_obj_r_finish:
 7079|       |
 7080|       |
 7081|       |
 7082|       |
 7083|      4|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7083:2): [True: 0, False: 0]
  |  Branch (7083:2): [True: 0, False: 0]
  ------------------
 7084|      4|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CONST_TMP_HANDLER:
 9654|      1|{
 9655|      1|	USE_OPLINE
 9656|      1|	zval *container;
 9657|      1|	void **cache_slot = NULL;
 9658|       |
 9659|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9660|      1|	container = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9661|      1|	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (9661:6): [Folded, False: 1]
  ------------------
 9662|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
 9663|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9663:3): [True: 0, False: 0]
  |  Branch (9663:3): [True: 0, False: 0]
  ------------------
 9664|      0|	}
 9665|       |
 9666|      1|	if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (9666:6): [True: 1, Folded]
  ------------------
 9667|      1|	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9667:7): [True: 0, Folded]
  ------------------
 9668|      1|		do {
 9669|      1|			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9669:8): [Folded, False: 1]
  ------------------
 9670|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9671|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9672|      0|					break;
 9673|      0|				}
 9674|      0|			}
 9675|      1|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9675:8): [Folded, False: 1]
  ------------------
 9676|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9677|      0|			}
 9678|      1|			zend_wrong_property_read(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9679|      1|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 9680|      1|			goto fetch_obj_r_finish;
 9681|      1|		} while (0);
  ------------------
  |  Branch (9681:12): [Folded, False: 0]
  ------------------
 9682|      1|	}
 9683|       |
 9684|       |	/* here we are sure we are dealing with an object */
 9685|      0|	do {
 9686|      0|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 9687|      0|		zend_string *name, *tmp_name;
 9688|      0|		zval *retval;
 9689|       |
 9690|      0|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (9690:7): [Folded, False: 0]
  ------------------
 9691|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9692|       |
 9693|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9694|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
 9695|       |
 9696|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9697|      0|fetch_obj_r_simple:
 9698|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 9699|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9700|      0|						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9700:11): [Folded, False: 0]
  |  Branch (9700:16): [Folded, False: 0]
  ------------------
 9701|      0|							goto fetch_obj_r_copy;
 9702|      0|						} else {
 9703|      0|fetch_obj_r_fast_copy:
 9704|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9705|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9705:8): [True: 0, False: 0]
  |  Branch (9705:8): [True: 0, False: 0]
  ------------------
 9706|      0|						}
 9707|      0|					}
 9708|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9709|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
 9710|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9711|      0|						prop_offset = prop_info->offset;
 9712|      0|						goto fetch_obj_r_simple;
 9713|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9714|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
 9715|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9715:7): [True: 0, False: 0]
  |  Branch (9715:7): [True: 0, False: 0]
  ------------------
 9716|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9716:7): [True: 0, False: 0]
  |  Branch (9716:7): [True: 0, False: 0]
  |  Branch (9716:7): [True: 0, False: 0]
  |  Branch (9716:7): [True: 0, False: 0]
  ------------------
 9717|       |
 9718|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9719|      0|						if (IS_CONST & IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (9719:11): [Folded, False: 0]
  ------------------
 9720|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 9721|      0|						}
 9722|      0|						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (9722:11): [Folded, False: 0]
  ------------------
 9723|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
 9724|      0|						}
 9725|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
 9726|      0|						call->prev_execute_data = execute_data;
 9727|      0|						call->call = NULL;
 9728|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9729|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9730|       |
 9731|      0|						execute_data = call;
 9732|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 9733|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9734|       |
 9735|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
 9736|       |						opline = hook->op_array.opcodes;
 9737|       |#else
 9738|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 9739|      0|#endif
 9740|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9741|       |
 9742|       |
 9743|       |
 9744|       |
 9745|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 9746|      0|					}
 9747|       |					/* Fall through to read_property for hooks. */
 9748|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9749|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (9749:6): [True: 0, False: 0]
  |  Branch (9749:6): [True: 0, False: 0]
  ------------------
 9750|      0|					name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 9751|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (9751:10): [True: 0, False: 0]
  ------------------
 9752|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
 9753|       |
 9754|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9755|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
 9756|       |
 9757|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9758|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9759|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9760|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9761|      0|								retval = &p->val;
 9762|      0|								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9762:13): [Folded, False: 0]
  |  Branch (9762:18): [Folded, False: 0]
  ------------------
 9763|      0|									goto fetch_obj_r_copy;
 9764|      0|								} else {
 9765|      0|									goto fetch_obj_r_fast_copy;
 9766|      0|								}
 9767|      0|							}
 9768|      0|						}
 9769|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9770|      0|					}
 9771|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
 9772|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9773|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
 9774|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9775|      0|						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (9775:11): [Folded, False: 0]
  |  Branch (9775:16): [Folded, False: 0]
  ------------------
 9776|      0|							goto fetch_obj_r_copy;
 9777|      0|						} else {
 9778|      0|							goto fetch_obj_r_fast_copy;
 9779|      0|						}
 9780|      0|					}
 9781|      0|				}
 9782|      0|			}
 9783|      0|			name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 9784|      0|		} else {
 9785|      0|			name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9786|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9787|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9788|      0|				break;
 9789|      0|			}
 9790|      0|		}
 9791|       |
 9792|      0|#if ZEND_DEBUG
 9793|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
 9794|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
 9795|      0|		zend_property_info *prop_info = NULL;
 9796|      0|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (9796:7): [True: 0, False: 0]
  ------------------
 9797|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
 9798|      0|		}
 9799|      0|#endif
 9800|      0|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9801|      0|#if ZEND_DEBUG
 9802|      0|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (9802:7): [True: 0, False: 0]
  |  Branch (9802:25): [True: 0, False: 0]
  |  Branch (9802:38): [True: 0, False: 0]
  ------------------
 9803|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9804|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9805|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
 9806|      0|		}
 9807|      0|#endif
 9808|       |
 9809|      0|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (9809:7): [True: 0, Folded]
  ------------------
 9810|      0|			zend_tmp_string_release(tmp_name);
 9811|      0|		}
 9812|       |
 9813|      0|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (9813:7): [True: 0, False: 0]
  ------------------
 9814|      0|fetch_obj_r_copy:
 9815|      0|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 9816|      0|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9817|      0|			zend_unwrap_reference(retval);
 9818|      0|		}
 9819|      0|	} while (0);
  ------------------
  |  Branch (9819:11): [Folded, False: 0]
  ------------------
 9820|       |
 9821|      1|fetch_obj_r_finish:
 9822|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9823|       |
 9824|       |
 9825|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9825:2): [True: 0, False: 0]
  |  Branch (9825:2): [True: 0, False: 0]
  ------------------
 9826|      1|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER:
12254|      1|{
12255|      1|	USE_OPLINE
12256|      1|	zval *container;
12257|      1|	void **cache_slot = NULL;
12258|       |
12259|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12260|      1|	container = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
12261|      1|	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (12261:6): [Folded, False: 1]
  ------------------
12262|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
12263|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12263:3): [True: 0, False: 0]
  |  Branch (12263:3): [True: 0, False: 0]
  ------------------
12264|      0|	}
12265|       |
12266|      1|	if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12266:6): [True: 1, Folded]
  ------------------
12267|      1|	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12267:7): [True: 0, Folded]
  ------------------
12268|      1|		do {
12269|      1|			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12269:8): [Folded, False: 1]
  ------------------
12270|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12271|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12272|      0|					break;
12273|      0|				}
12274|      0|			}
12275|      1|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12275:8): [Folded, False: 1]
  ------------------
12276|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12277|      0|			}
12278|      1|			zend_wrong_property_read(container, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12279|      1|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
12280|      1|			goto fetch_obj_r_finish;
12281|      1|		} while (0);
  ------------------
  |  Branch (12281:12): [Folded, False: 0]
  ------------------
12282|      1|	}
12283|       |
12284|       |	/* here we are sure we are dealing with an object */
12285|      0|	do {
12286|      0|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
12287|      0|		zend_string *name, *tmp_name;
12288|      0|		zval *retval;
12289|       |
12290|      0|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12290:7): [Folded, False: 0]
  ------------------
12291|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12292|       |
12293|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12294|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
12295|       |
12296|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12297|      0|fetch_obj_r_simple:
12298|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
12299|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12300|      0|						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12300:11): [Folded, False: 0]
  |  Branch (12300:16): [Folded, False: 0]
  ------------------
12301|      0|							goto fetch_obj_r_copy;
12302|      0|						} else {
12303|      0|fetch_obj_r_fast_copy:
12304|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12305|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12305:8): [True: 0, False: 0]
  |  Branch (12305:8): [True: 0, False: 0]
  ------------------
12306|      0|						}
12307|      0|					}
12308|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12309|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
12310|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12311|      0|						prop_offset = prop_info->offset;
12312|      0|						goto fetch_obj_r_simple;
12313|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12314|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
12315|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12315:7): [True: 0, False: 0]
  |  Branch (12315:7): [True: 0, False: 0]
  ------------------
12316|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12316:7): [True: 0, False: 0]
  |  Branch (12316:7): [True: 0, False: 0]
  |  Branch (12316:7): [True: 0, False: 0]
  |  Branch (12316:7): [True: 0, False: 0]
  ------------------
12317|       |
12318|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12319|      0|						if (IS_CONST & IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (12319:11): [Folded, False: 0]
  ------------------
12320|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
12321|      0|						}
12322|      0|						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_CONST & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (12322:11): [Folded, False: 0]
  ------------------
12323|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
12324|      0|						}
12325|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
12326|      0|						call->prev_execute_data = execute_data;
12327|      0|						call->call = NULL;
12328|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12329|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12330|       |
12331|      0|						execute_data = call;
12332|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
12333|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12334|       |
12335|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
12336|       |						opline = hook->op_array.opcodes;
12337|       |#else
12338|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
12339|      0|#endif
12340|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12341|       |
12342|       |
12343|       |
12344|       |
12345|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
12346|      0|					}
12347|       |					/* Fall through to read_property for hooks. */
12348|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12349|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (12349:6): [True: 0, False: 0]
  |  Branch (12349:6): [True: 0, False: 0]
  ------------------
12350|      0|					name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12351|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (12351:10): [True: 0, False: 0]
  ------------------
12352|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
12353|       |
12354|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12355|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
12356|       |
12357|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12358|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12359|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12360|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12361|      0|								retval = &p->val;
12362|      0|								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12362:13): [Folded, False: 0]
  |  Branch (12362:18): [Folded, False: 0]
  ------------------
12363|      0|									goto fetch_obj_r_copy;
12364|      0|								} else {
12365|      0|									goto fetch_obj_r_fast_copy;
12366|      0|								}
12367|      0|							}
12368|      0|						}
12369|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12370|      0|					}
12371|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
12372|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12373|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
12374|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12375|      0|						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CONST & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (12375:11): [Folded, False: 0]
  |  Branch (12375:16): [Folded, False: 0]
  ------------------
12376|      0|							goto fetch_obj_r_copy;
12377|      0|						} else {
12378|      0|							goto fetch_obj_r_fast_copy;
12379|      0|						}
12380|      0|					}
12381|      0|				}
12382|      0|			}
12383|      0|			name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12384|      0|		} else {
12385|      0|			name = zval_try_get_tmp_string(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12386|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12387|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12388|      0|				break;
12389|      0|			}
12390|      0|		}
12391|       |
12392|      0|#if ZEND_DEBUG
12393|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
12394|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
12395|      0|		zend_property_info *prop_info = NULL;
12396|      0|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (12396:7): [True: 0, False: 0]
  ------------------
12397|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
12398|      0|		}
12399|      0|#endif
12400|      0|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12401|      0|#if ZEND_DEBUG
12402|      0|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (12402:7): [True: 0, False: 0]
  |  Branch (12402:25): [True: 0, False: 0]
  |  Branch (12402:38): [True: 0, False: 0]
  ------------------
12403|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12404|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12405|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
12406|      0|		}
12407|      0|#endif
12408|       |
12409|      0|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12409:7): [True: 0, Folded]
  ------------------
12410|      0|			zend_tmp_string_release(tmp_name);
12411|      0|		}
12412|       |
12413|      0|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (12413:7): [True: 0, False: 0]
  ------------------
12414|      0|fetch_obj_r_copy:
12415|      0|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12416|      0|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12417|      0|			zend_unwrap_reference(retval);
12418|      0|		}
12419|      0|	} while (0);
  ------------------
  |  Branch (12419:11): [Folded, False: 0]
  ------------------
12420|       |
12421|      1|fetch_obj_r_finish:
12422|       |
12423|       |
12424|       |
12425|       |
12426|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12426:2): [True: 0, False: 0]
  |  Branch (12426:2): [True: 0, False: 0]
  ------------------
12427|      1|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER:
15698|     32|{
15699|     32|	USE_OPLINE
15700|     32|	zval *container;
15701|     32|	void **cache_slot = NULL;
15702|       |
15703|     32|	SAVE_OPLINE();
  ------------------
  |  |  428|     32|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     32|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15704|     32|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     32|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     32|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15705|     32|	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     32|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     32|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     32|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     32|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (15705:6): [True: 32, Folded]
  ------------------
15706|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
15707|     32|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|     32|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (15707:3): [True: 0, False: 32]
  |  Branch (15707:3): [True: 32, False: 0]
  ------------------
15708|     32|	}
15709|       |
15710|     32|	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  865|     32|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  866|     32|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  864|     64|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15710:6): [Folded, False: 32]
  ------------------
15711|     32|	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  865|     32|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  866|     32|#define IS_VAR		(1<<2)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|     64|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|     32|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 9, False: 23]
  |  |  ------------------
  ------------------
  |  Branch (15711:7): [True: 32, Folded]
  ------------------
15712|      9|		do {
15713|      9|			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  865|      9|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15713:8): [Folded, False: 9]
  ------------------
15714|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15715|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15716|      0|					break;
15717|      0|				}
15718|      0|			}
15719|      9|			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  865|      9|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|     18|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (15719:8): [Folded, False: 9]
  ------------------
15720|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15721|      0|			}
15722|      9|			zend_wrong_property_read(container, RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  841|      9|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
15723|      9|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      9|#define ZVAL_NULL(z) do {				\
  |  | 1060|      9|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      9|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
15724|      9|			goto fetch_obj_r_finish;
15725|      9|		} while (0);
  ------------------
  |  Branch (15725:12): [Folded, False: 0]
  ------------------
15726|      9|	}
15727|       |
15728|       |	/* here we are sure we are dealing with an object */
15729|     23|	do {
15730|     23|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|     23|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     23|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
15731|     23|		zend_string *name, *tmp_name;
15732|     23|		zval *retval;
15733|       |
15734|     23|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15734:7): [True: 23, Folded]
  ------------------
15735|     23|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|     23|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     23|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15736|       |
15737|     23|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|     23|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 23]
  |  |  ------------------
  ------------------
15738|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
15739|       |
15740|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15741|      0|fetch_obj_r_simple:
15742|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
15743|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15744|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (15744:11): [Folded, False: 0]
  |  Branch (15744:16): [True: 0, Folded]
  ------------------
15745|      0|							goto fetch_obj_r_copy;
15746|      0|						} else {
15747|      0|fetch_obj_r_fast_copy:
15748|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15749|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15749:8): [True: 0, False: 0]
  |  Branch (15749:8): [True: 0, False: 0]
  ------------------
15750|      0|						}
15751|      0|					}
15752|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15753|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
15754|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15755|      0|						prop_offset = prop_info->offset;
15756|      0|						goto fetch_obj_r_simple;
15757|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15758|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
15759|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (15759:7): [True: 0, False: 0]
  |  Branch (15759:7): [True: 0, False: 0]
  ------------------
15760|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (15760:7): [True: 0, False: 0]
  |  Branch (15760:7): [True: 0, False: 0]
  |  Branch (15760:7): [True: 0, False: 0]
  |  Branch (15760:7): [True: 0, False: 0]
  ------------------
15761|       |
15762|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15763|      0|						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (15763:11): [Folded, False: 0]
  ------------------
15764|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
15765|      0|						}
15766|      0|						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (15766:11): [True: 0, Folded]
  ------------------
15767|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
15768|      0|						}
15769|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
15770|      0|						call->prev_execute_data = execute_data;
15771|      0|						call->call = NULL;
15772|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15773|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15774|       |
15775|      0|						execute_data = call;
15776|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
15777|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15778|       |
15779|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
15780|       |						opline = hook->op_array.opcodes;
15781|       |#else
15782|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
15783|      0|#endif
15784|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15785|       |
15786|       |
15787|       |
15788|       |
15789|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
15790|      0|					}
15791|       |					/* Fall through to read_property for hooks. */
15792|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15793|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (15793:6): [True: 0, False: 0]
  |  Branch (15793:6): [True: 0, False: 0]
  ------------------
15794|      0|					name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
15795|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (15795:10): [True: 0, False: 0]
  ------------------
15796|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
15797|       |
15798|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15799|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
15800|       |
15801|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15802|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15803|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15804|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15805|      0|								retval = &p->val;
15806|      0|								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (15806:13): [Folded, False: 0]
  |  Branch (15806:18): [True: 0, Folded]
  ------------------
15807|      0|									goto fetch_obj_r_copy;
15808|      0|								} else {
15809|      0|									goto fetch_obj_r_fast_copy;
15810|      0|								}
15811|      0|							}
15812|      0|						}
15813|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15814|      0|					}
15815|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
15816|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15817|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
15818|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15819|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (15819:11): [Folded, False: 0]
  |  Branch (15819:16): [True: 0, Folded]
  ------------------
15820|      0|							goto fetch_obj_r_copy;
15821|      0|						} else {
15822|      0|							goto fetch_obj_r_fast_copy;
15823|      0|						}
15824|      0|					}
15825|      0|				}
15826|      0|			}
15827|     23|			name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     23|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     23|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
15828|     23|		} else {
15829|      0|			name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
15830|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15831|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15832|      0|				break;
15833|      0|			}
15834|      0|		}
15835|       |
15836|     23|#if ZEND_DEBUG
15837|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
15838|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
15839|     23|		zend_property_info *prop_info = NULL;
15840|     23|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (15840:7): [True: 0, False: 23]
  ------------------
15841|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
15842|      0|		}
15843|     23|#endif
15844|     23|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|     23|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|     23|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     23|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15845|     23|#if ZEND_DEBUG
15846|     23|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|     46|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|     23|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (15846:7): [True: 23, False: 0]
  |  Branch (15846:25): [True: 0, False: 23]
  |  Branch (15846:38): [True: 0, False: 0]
  ------------------
15847|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15848|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15849|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
15850|      0|		}
15851|     23|#endif
15852|       |
15853|     23|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15853:7): [Folded, False: 23]
  ------------------
15854|      0|			zend_tmp_string_release(tmp_name);
15855|      0|		}
15856|       |
15857|     23|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|     23|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     23|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (15857:7): [True: 21, False: 2]
  ------------------
15858|     21|fetch_obj_r_copy:
15859|     21|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|     21|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     21|		zval *_z3 = (v);								\
  |  | 1510|     21|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     21|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     21|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     21|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     21|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 5, False: 16]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      5|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      4|			} else {									\
  |  | 1517|      4|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      4|			}											\
  |  | 1519|      5|		}												\
  |  | 1520|     21|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     21|	do {												\
  |  |  |  | 1417|     21|		zval *_z1 = (z);								\
  |  |  |  | 1418|     21|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     21|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     21|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     21|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     21|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     21|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     21|	do {												\
  |  |  |  |  |  | 1408|     21|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     21|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     21|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     21|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     21|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     21|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
15860|     21|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
15861|      0|			zend_unwrap_reference(retval);
15862|      0|		}
15863|     23|	} while (0);
  ------------------
  |  Branch (15863:11): [Folded, False: 23]
  ------------------
15864|       |
15865|     32|fetch_obj_r_finish:
15866|       |
15867|       |
15868|     32|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     32|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     32|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15869|     32|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     32|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     32|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     32|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 32, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     32|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     32|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     32|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     32|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     32|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     32|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15869:2): [True: 0, False: 0]
  |  Branch (15869:2): [True: 0, False: 0]
  ------------------
15870|     32|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMP_HANDLER:
16189|    126|{
16190|    126|	USE_OPLINE
16191|    126|	zval *container;
16192|    126|	void **cache_slot = NULL;
16193|       |
16194|    126|	SAVE_OPLINE();
  ------------------
  |  |  428|    126|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    126|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16195|    126|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    126|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    126|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16196|    126|	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    126|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    126|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    126|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    126|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (16196:6): [True: 126, Folded]
  ------------------
16197|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
16198|    126|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|    126|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16198:3): [True: 0, False: 126]
  |  Branch (16198:3): [True: 126, False: 0]
  ------------------
16199|    126|	}
16200|       |
16201|    126|	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  865|    126|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  866|    126|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  864|    252|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16201:6): [Folded, False: 126]
  ------------------
16202|    126|	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  865|    126|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  866|    126|#define IS_VAR		(1<<2)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|    252|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|    126|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 125, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (16202:7): [True: 126, Folded]
  ------------------
16203|    125|		do {
16204|    125|			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  865|    125|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|    125|#define IS_VAR		(1<<2)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|    125|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16204:8): [Folded, False: 125]
  ------------------
16205|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16206|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16207|      0|					break;
16208|      0|				}
16209|      0|			}
16210|    125|			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  865|    125|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|    125|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|    250|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16210:8): [Folded, False: 125]
  ------------------
16211|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16212|      0|			}
16213|    125|			zend_wrong_property_read(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|    125|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    125|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16214|    125|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|    125|#define ZVAL_NULL(z) do {				\
  |  | 1060|    125|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    125|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    125|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    125|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    125|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 125]
  |  |  ------------------
  ------------------
16215|    125|			goto fetch_obj_r_finish;
16216|    125|		} while (0);
  ------------------
  |  Branch (16216:12): [Folded, False: 0]
  ------------------
16217|    125|	}
16218|       |
16219|       |	/* here we are sure we are dealing with an object */
16220|      1|	do {
16221|      1|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
16222|      1|		zend_string *name, *tmp_name;
16223|      1|		zval *retval;
16224|       |
16225|      1|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16225:7): [Folded, False: 1]
  ------------------
16226|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16227|       |
16228|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16229|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
16230|       |
16231|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16232|      0|fetch_obj_r_simple:
16233|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
16234|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16235|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16235:11): [Folded, False: 0]
  |  Branch (16235:16): [True: 0, Folded]
  ------------------
16236|      0|							goto fetch_obj_r_copy;
16237|      0|						} else {
16238|      0|fetch_obj_r_fast_copy:
16239|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16240|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16240:8): [True: 0, False: 0]
  |  Branch (16240:8): [True: 0, False: 0]
  ------------------
16241|      0|						}
16242|      0|					}
16243|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16244|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
16245|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16246|      0|						prop_offset = prop_info->offset;
16247|      0|						goto fetch_obj_r_simple;
16248|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16249|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
16250|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16250:7): [True: 0, False: 0]
  |  Branch (16250:7): [True: 0, False: 0]
  ------------------
16251|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16251:7): [True: 0, False: 0]
  |  Branch (16251:7): [True: 0, False: 0]
  |  Branch (16251:7): [True: 0, False: 0]
  |  Branch (16251:7): [True: 0, False: 0]
  ------------------
16252|       |
16253|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16254|      0|						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (16254:11): [Folded, False: 0]
  ------------------
16255|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
16256|      0|						}
16257|      0|						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (16257:11): [True: 0, Folded]
  ------------------
16258|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
16259|      0|						}
16260|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
16261|      0|						call->prev_execute_data = execute_data;
16262|      0|						call->call = NULL;
16263|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16264|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16265|       |
16266|      0|						execute_data = call;
16267|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
16268|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16269|       |
16270|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
16271|       |						opline = hook->op_array.opcodes;
16272|       |#else
16273|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
16274|      0|#endif
16275|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16276|       |
16277|       |
16278|       |
16279|       |
16280|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
16281|      0|					}
16282|       |					/* Fall through to read_property for hooks. */
16283|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16284|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16284:6): [True: 0, False: 0]
  |  Branch (16284:6): [True: 0, False: 0]
  ------------------
16285|      0|					name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16286|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (16286:10): [True: 0, False: 0]
  ------------------
16287|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
16288|       |
16289|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16290|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
16291|       |
16292|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16293|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16294|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16295|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16296|      0|								retval = &p->val;
16297|      0|								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16297:13): [Folded, False: 0]
  |  Branch (16297:18): [True: 0, Folded]
  ------------------
16298|      0|									goto fetch_obj_r_copy;
16299|      0|								} else {
16300|      0|									goto fetch_obj_r_fast_copy;
16301|      0|								}
16302|      0|							}
16303|      0|						}
16304|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16305|      0|					}
16306|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
16307|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16308|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
16309|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16310|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16310:11): [Folded, False: 0]
  |  Branch (16310:16): [True: 0, Folded]
  ------------------
16311|      0|							goto fetch_obj_r_copy;
16312|      0|						} else {
16313|      0|							goto fetch_obj_r_fast_copy;
16314|      0|						}
16315|      0|					}
16316|      0|				}
16317|      0|			}
16318|      0|			name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16319|      1|		} else {
16320|      1|			name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16321|      1|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
16322|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16323|      0|				break;
16324|      0|			}
16325|      1|		}
16326|       |
16327|      1|#if ZEND_DEBUG
16328|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
16329|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
16330|      1|		zend_property_info *prop_info = NULL;
16331|      1|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (16331:7): [True: 0, False: 1]
  ------------------
16332|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
16333|      0|		}
16334|      1|#endif
16335|      1|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16336|      1|#if ZEND_DEBUG
16337|      1|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      1|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (16337:7): [True: 1, False: 0]
  |  Branch (16337:25): [True: 0, False: 1]
  |  Branch (16337:38): [True: 0, False: 0]
  ------------------
16338|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16339|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16340|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
16341|      0|		}
16342|      1|#endif
16343|       |
16344|      1|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16344:7): [True: 1, Folded]
  ------------------
16345|      1|			zend_tmp_string_release(tmp_name);
16346|      1|		}
16347|       |
16348|      1|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (16348:7): [True: 1, False: 0]
  ------------------
16349|      1|fetch_obj_r_copy:
16350|      1|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      1|		zval *_z3 = (v);								\
  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
16351|      1|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16352|      0|			zend_unwrap_reference(retval);
16353|      0|		}
16354|      1|	} while (0);
  ------------------
  |  Branch (16354:11): [Folded, False: 1]
  ------------------
16355|       |
16356|    126|fetch_obj_r_finish:
16357|    126|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    126|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    126|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16358|    126|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    126|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    126|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16359|    126|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    126|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    126|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    126|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 126, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    126|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    126|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    126|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    126|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    126|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    126|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16359:2): [True: 0, False: 0]
  |  Branch (16359:2): [True: 0, False: 0]
  ------------------
16360|    126|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER:
16617|    115|{
16618|    115|	USE_OPLINE
16619|    115|	zval *container;
16620|    115|	void **cache_slot = NULL;
16621|       |
16622|    115|	SAVE_OPLINE();
  ------------------
  |  |  428|    115|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    115|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16623|    115|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    115|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    115|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16624|    115|	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    115|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    115|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (16624:6): [True: 115, Folded]
  ------------------
16625|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
16626|    115|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|    115|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16626:3): [True: 0, False: 115]
  |  Branch (16626:3): [True: 115, False: 0]
  ------------------
16627|    115|	}
16628|       |
16629|    115|	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  866|    115|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  864|    230|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16629:6): [Folded, False: 115]
  ------------------
16630|    115|	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  866|    115|#define IS_VAR		(1<<2)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|    230|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|    115|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 115, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16630:7): [True: 115, Folded]
  ------------------
16631|    115|		do {
16632|    115|			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|    115|#define IS_VAR		(1<<2)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|    115|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16632:8): [Folded, False: 115]
  ------------------
16633|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16634|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16635|      0|					break;
16636|      0|				}
16637|      0|			}
16638|    115|			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  865|    115|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  866|    115|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|    230|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16638:8): [Folded, False: 115]
  ------------------
16639|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16640|      0|			}
16641|    115|			zend_wrong_property_read(container, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|    115|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    115|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16642|    115|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|    115|#define ZVAL_NULL(z) do {				\
  |  | 1060|    115|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    115|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    115|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    115|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    115|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 115]
  |  |  ------------------
  ------------------
16643|    115|			goto fetch_obj_r_finish;
16644|    115|		} while (0);
  ------------------
  |  Branch (16644:12): [Folded, False: 0]
  ------------------
16645|    115|	}
16646|       |
16647|       |	/* here we are sure we are dealing with an object */
16648|      0|	do {
16649|      0|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
16650|      0|		zend_string *name, *tmp_name;
16651|      0|		zval *retval;
16652|       |
16653|      0|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16653:7): [Folded, False: 0]
  ------------------
16654|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16655|       |
16656|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16657|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
16658|       |
16659|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16660|      0|fetch_obj_r_simple:
16661|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
16662|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16663|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16663:11): [Folded, False: 0]
  |  Branch (16663:16): [True: 0, Folded]
  ------------------
16664|      0|							goto fetch_obj_r_copy;
16665|      0|						} else {
16666|      0|fetch_obj_r_fast_copy:
16667|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16668|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16668:8): [True: 0, False: 0]
  |  Branch (16668:8): [True: 0, False: 0]
  ------------------
16669|      0|						}
16670|      0|					}
16671|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16672|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
16673|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16674|      0|						prop_offset = prop_info->offset;
16675|      0|						goto fetch_obj_r_simple;
16676|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16677|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
16678|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16678:7): [True: 0, False: 0]
  |  Branch (16678:7): [True: 0, False: 0]
  ------------------
16679|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16679:7): [True: 0, False: 0]
  |  Branch (16679:7): [True: 0, False: 0]
  |  Branch (16679:7): [True: 0, False: 0]
  |  Branch (16679:7): [True: 0, False: 0]
  ------------------
16680|       |
16681|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16682|      0|						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (16682:11): [Folded, False: 0]
  ------------------
16683|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
16684|      0|						}
16685|      0|						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (16685:11): [True: 0, Folded]
  ------------------
16686|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
16687|      0|						}
16688|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
16689|      0|						call->prev_execute_data = execute_data;
16690|      0|						call->call = NULL;
16691|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16692|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16693|       |
16694|      0|						execute_data = call;
16695|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
16696|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16697|       |
16698|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
16699|       |						opline = hook->op_array.opcodes;
16700|       |#else
16701|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
16702|      0|#endif
16703|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16704|       |
16705|       |
16706|       |
16707|       |
16708|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
16709|      0|					}
16710|       |					/* Fall through to read_property for hooks. */
16711|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16712|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (16712:6): [True: 0, False: 0]
  |  Branch (16712:6): [True: 0, False: 0]
  ------------------
16713|      0|					name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16714|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (16714:10): [True: 0, False: 0]
  ------------------
16715|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
16716|       |
16717|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16718|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
16719|       |
16720|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16721|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16722|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16723|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16724|      0|								retval = &p->val;
16725|      0|								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16725:13): [Folded, False: 0]
  |  Branch (16725:18): [True: 0, Folded]
  ------------------
16726|      0|									goto fetch_obj_r_copy;
16727|      0|								} else {
16728|      0|									goto fetch_obj_r_fast_copy;
16729|      0|								}
16730|      0|							}
16731|      0|						}
16732|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16733|      0|					}
16734|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
16735|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16736|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
16737|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16738|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (16738:11): [Folded, False: 0]
  |  Branch (16738:16): [True: 0, Folded]
  ------------------
16739|      0|							goto fetch_obj_r_copy;
16740|      0|						} else {
16741|      0|							goto fetch_obj_r_fast_copy;
16742|      0|						}
16743|      0|					}
16744|      0|				}
16745|      0|			}
16746|      0|			name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16747|      0|		} else {
16748|      0|			name = zval_try_get_tmp_string(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16749|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16750|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16751|      0|				break;
16752|      0|			}
16753|      0|		}
16754|       |
16755|      0|#if ZEND_DEBUG
16756|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
16757|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
16758|      0|		zend_property_info *prop_info = NULL;
16759|      0|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (16759:7): [True: 0, False: 0]
  ------------------
16760|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
16761|      0|		}
16762|      0|#endif
16763|      0|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16764|      0|#if ZEND_DEBUG
16765|      0|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      0|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (16765:7): [True: 0, False: 0]
  |  Branch (16765:25): [True: 0, False: 0]
  |  Branch (16765:38): [True: 0, False: 0]
  ------------------
16766|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16767|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16768|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
16769|      0|		}
16770|      0|#endif
16771|       |
16772|      0|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (16772:7): [True: 0, Folded]
  ------------------
16773|      0|			zend_tmp_string_release(tmp_name);
16774|      0|		}
16775|       |
16776|      0|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (16776:7): [True: 0, False: 0]
  ------------------
16777|      0|fetch_obj_r_copy:
16778|      0|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
16779|      0|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
16780|      0|			zend_unwrap_reference(retval);
16781|      0|		}
16782|      0|	} while (0);
  ------------------
  |  Branch (16782:11): [Folded, False: 0]
  ------------------
16783|       |
16784|    115|fetch_obj_r_finish:
16785|       |
16786|       |
16787|    115|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|    115|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    115|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16788|    115|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    115|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    115|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    115|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 115, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    115|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    115|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    115|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    115|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    115|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    115|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16788:2): [True: 0, False: 0]
  |  Branch (16788:2): [True: 0, False: 0]
  ------------------
16789|    115|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER:
33294|     14|{
33295|     14|	ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_INLINE_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     14|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
33296|     14|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_INLINE_HANDLER:
33118|     14|{
33119|     14|	USE_OPLINE
33120|     14|	zval *container;
33121|     14|	void **cache_slot = NULL;
33122|       |
33123|     14|	SAVE_OPLINE();
  ------------------
  |  |  428|     14|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33124|     14|	container = &EX(This);
  ------------------
  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  ------------------
33125|     14|	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  863|     14|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     14|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     14|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (33125:6): [Folded, False: 14]
  ------------------
33126|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
33127|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33127:3): [True: 0, False: 0]
  |  Branch (33127:3): [True: 0, False: 0]
  ------------------
33128|      0|	}
33129|       |
33130|     14|	if (IS_UNUSED == IS_CONST ||
  ------------------
  |  |  863|     14|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST ||
  ------------------
  |  |  864|     28|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33130:6): [Folded, False: 0]
  ------------------
33131|      0|	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (33131:7): [Folded, False: 0]
  ------------------
33132|      0|		do {
33133|      0|			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (33133:8): [Folded, False: 0]
  ------------------
33134|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33135|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33136|      0|					break;
33137|      0|				}
33138|      0|			}
33139|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (33139:8): [Folded, False: 0]
  ------------------
33140|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33141|      0|			}
33142|      0|			zend_wrong_property_read(container, RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33143|      0|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33144|      0|			goto fetch_obj_r_finish;
33145|      0|		} while (0);
  ------------------
  |  Branch (33145:12): [Folded, False: 0]
  ------------------
33146|      0|	}
33147|       |
33148|       |	/* here we are sure we are dealing with an object */
33149|     14|	do {
33150|     14|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
33151|     14|		zend_string *name, *tmp_name;
33152|     14|		zval *retval;
33153|       |
33154|     14|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33154:7): [True: 14, Folded]
  ------------------
33155|     14|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|     14|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33156|       |
33157|     14|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 14]
  |  |  ------------------
  ------------------
33158|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33159|       |
33160|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33161|      0|fetch_obj_r_simple:
33162|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
33163|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33164|      0|						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33164:11): [Folded, False: 0]
  |  Branch (33164:16): [Folded, False: 0]
  ------------------
33165|      0|							goto fetch_obj_r_copy;
33166|      0|						} else {
33167|      0|fetch_obj_r_fast_copy:
33168|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33169|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (33169:8): [True: 0, False: 0]
  |  Branch (33169:8): [True: 0, False: 0]
  ------------------
33170|      0|						}
33171|      0|					}
33172|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33173|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
33174|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33175|      0|						prop_offset = prop_info->offset;
33176|      0|						goto fetch_obj_r_simple;
33177|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33178|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
33179|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33179:7): [True: 0, False: 0]
  |  Branch (33179:7): [True: 0, False: 0]
  ------------------
33180|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33180:7): [True: 0, False: 0]
  |  Branch (33180:7): [True: 0, False: 0]
  |  Branch (33180:7): [True: 0, False: 0]
  |  Branch (33180:7): [True: 0, False: 0]
  ------------------
33181|       |
33182|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33183|      0|						if (IS_UNUSED & IS_CV) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (33183:11): [Folded, False: 0]
  ------------------
33184|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
33185|      0|						}
33186|      0|						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (33186:11): [Folded, False: 0]
  ------------------
33187|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
33188|      0|						}
33189|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
33190|      0|						call->prev_execute_data = execute_data;
33191|      0|						call->call = NULL;
33192|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
33193|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
33194|       |
33195|      0|						execute_data = call;
33196|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
33197|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33198|       |
33199|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
33200|       |						opline = hook->op_array.opcodes;
33201|       |#else
33202|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
33203|      0|#endif
33204|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33205|       |
33206|       |
33207|       |
33208|       |
33209|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
33210|      0|					}
33211|       |					/* Fall through to read_property for hooks. */
33212|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33213|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (33213:6): [True: 0, False: 0]
  |  Branch (33213:6): [True: 0, False: 0]
  ------------------
33214|      0|					name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33215|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (33215:10): [True: 0, False: 0]
  ------------------
33216|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
33217|       |
33218|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33219|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
33220|       |
33221|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33222|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33223|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33224|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33225|      0|								retval = &p->val;
33226|      0|								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33226:13): [Folded, False: 0]
  |  Branch (33226:18): [Folded, False: 0]
  ------------------
33227|      0|									goto fetch_obj_r_copy;
33228|      0|								} else {
33229|      0|									goto fetch_obj_r_fast_copy;
33230|      0|								}
33231|      0|							}
33232|      0|						}
33233|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33234|      0|					}
33235|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
33236|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33237|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
33238|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33239|      0|						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33239:11): [Folded, False: 0]
  |  Branch (33239:16): [Folded, False: 0]
  ------------------
33240|      0|							goto fetch_obj_r_copy;
33241|      0|						} else {
33242|      0|							goto fetch_obj_r_fast_copy;
33243|      0|						}
33244|      0|					}
33245|      0|				}
33246|      0|			}
33247|     14|			name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     14|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     14|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
33248|     14|		} else {
33249|      0|			name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33250|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33251|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33252|      0|				break;
33253|      0|			}
33254|      0|		}
33255|       |
33256|     14|#if ZEND_DEBUG
33257|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
33258|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
33259|     14|		zend_property_info *prop_info = NULL;
33260|     14|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (33260:7): [True: 0, False: 14]
  ------------------
33261|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
33262|      0|		}
33263|     14|#endif
33264|     14|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|     14|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
33265|     14|#if ZEND_DEBUG
33266|     14|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|     28|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|     14|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (33266:7): [True: 13, False: 1]
  |  Branch (33266:25): [True: 0, False: 13]
  |  Branch (33266:38): [True: 0, False: 0]
  ------------------
33267|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33268|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
33269|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
33270|      0|		}
33271|     14|#endif
33272|       |
33273|     14|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (33273:7): [Folded, False: 14]
  ------------------
33274|      0|			zend_tmp_string_release(tmp_name);
33275|      0|		}
33276|       |
33277|     14|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (33277:7): [True: 14, False: 0]
  ------------------
33278|     14|fetch_obj_r_copy:
33279|     14|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|     14|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     14|		zval *_z3 = (v);								\
  |  | 1510|     14|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     14|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     14|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     14|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     14|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      3|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      3|			} else {									\
  |  | 1517|      3|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      3|			}											\
  |  | 1519|      3|		}												\
  |  | 1520|     14|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     14|	do {												\
  |  |  |  | 1417|     14|		zval *_z1 = (z);								\
  |  |  |  | 1418|     14|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     14|	do {												\
  |  |  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
33280|     14|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
33281|      0|			zend_unwrap_reference(retval);
33282|      0|		}
33283|     14|	} while (0);
  ------------------
  |  Branch (33283:11): [Folded, False: 14]
  ------------------
33284|       |
33285|     14|fetch_obj_r_finish:
33286|       |
33287|       |
33288|       |
33289|       |
33290|     14|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     14|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     14|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 14, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     14|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     14|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     14|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (33290:2): [True: 0, False: 0]
  |  Branch (33290:2): [True: 0, False: 0]
  ------------------
33291|     14|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER:
35226|      2|{
35227|      2|	USE_OPLINE
35228|      2|	zval *container;
35229|      2|	void **cache_slot = NULL;
35230|       |
35231|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
35232|      2|	container = &EX(This);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
35233|      2|	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (35233:6): [Folded, False: 2]
  ------------------
35234|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
35235|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (35235:3): [True: 0, False: 0]
  |  Branch (35235:3): [True: 0, False: 0]
  ------------------
35236|      0|	}
35237|       |
35238|      2|	if (IS_UNUSED == IS_CONST ||
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST ||
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (35238:6): [Folded, False: 0]
  ------------------
35239|      0|	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (35239:7): [Folded, False: 0]
  ------------------
35240|      0|		do {
35241|      0|			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (35241:8): [Folded, False: 0]
  ------------------
35242|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35243|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35244|      0|					break;
35245|      0|				}
35246|      0|			}
35247|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (35247:8): [Folded, False: 0]
  ------------------
35248|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35249|      0|			}
35250|      0|			zend_wrong_property_read(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35251|      0|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35252|      0|			goto fetch_obj_r_finish;
35253|      0|		} while (0);
  ------------------
  |  Branch (35253:12): [Folded, False: 0]
  ------------------
35254|      0|	}
35255|       |
35256|       |	/* here we are sure we are dealing with an object */
35257|      2|	do {
35258|      2|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
35259|      2|		zend_string *name, *tmp_name;
35260|      2|		zval *retval;
35261|       |
35262|      2|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (35262:7): [Folded, False: 2]
  ------------------
35263|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
35264|       |
35265|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35266|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
35267|       |
35268|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35269|      0|fetch_obj_r_simple:
35270|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
35271|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35272|      0|						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (35272:11): [Folded, False: 0]
  |  Branch (35272:16): [Folded, False: 0]
  ------------------
35273|      0|							goto fetch_obj_r_copy;
35274|      0|						} else {
35275|      0|fetch_obj_r_fast_copy:
35276|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35277|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (35277:8): [True: 0, False: 0]
  |  Branch (35277:8): [True: 0, False: 0]
  ------------------
35278|      0|						}
35279|      0|					}
35280|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35281|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
35282|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35283|      0|						prop_offset = prop_info->offset;
35284|      0|						goto fetch_obj_r_simple;
35285|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35286|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
35287|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (35287:7): [True: 0, False: 0]
  |  Branch (35287:7): [True: 0, False: 0]
  ------------------
35288|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (35288:7): [True: 0, False: 0]
  |  Branch (35288:7): [True: 0, False: 0]
  |  Branch (35288:7): [True: 0, False: 0]
  |  Branch (35288:7): [True: 0, False: 0]
  ------------------
35289|       |
35290|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35291|      0|						if (IS_UNUSED & IS_CV) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (35291:11): [Folded, False: 0]
  ------------------
35292|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
35293|      0|						}
35294|      0|						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (35294:11): [Folded, False: 0]
  ------------------
35295|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
35296|      0|						}
35297|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
35298|      0|						call->prev_execute_data = execute_data;
35299|      0|						call->call = NULL;
35300|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35301|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
35302|       |
35303|      0|						execute_data = call;
35304|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
35305|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35306|       |
35307|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
35308|       |						opline = hook->op_array.opcodes;
35309|       |#else
35310|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
35311|      0|#endif
35312|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
35313|       |
35314|       |
35315|       |
35316|       |
35317|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
35318|      0|					}
35319|       |					/* Fall through to read_property for hooks. */
35320|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35321|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (35321:6): [True: 0, False: 0]
  |  Branch (35321:6): [True: 0, False: 0]
  ------------------
35322|      0|					name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
35323|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (35323:10): [True: 0, False: 0]
  ------------------
35324|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
35325|       |
35326|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35327|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
35328|       |
35329|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35330|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35331|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35332|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35333|      0|								retval = &p->val;
35334|      0|								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (35334:13): [Folded, False: 0]
  |  Branch (35334:18): [Folded, False: 0]
  ------------------
35335|      0|									goto fetch_obj_r_copy;
35336|      0|								} else {
35337|      0|									goto fetch_obj_r_fast_copy;
35338|      0|								}
35339|      0|							}
35340|      0|						}
35341|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35342|      0|					}
35343|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
35344|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35345|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
35346|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35347|      0|						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (35347:11): [Folded, False: 0]
  |  Branch (35347:16): [Folded, False: 0]
  ------------------
35348|      0|							goto fetch_obj_r_copy;
35349|      0|						} else {
35350|      0|							goto fetch_obj_r_fast_copy;
35351|      0|						}
35352|      0|					}
35353|      0|				}
35354|      0|			}
35355|      0|			name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
35356|      2|		} else {
35357|      2|			name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35358|      2|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
35359|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35360|      0|				break;
35361|      0|			}
35362|      2|		}
35363|       |
35364|      2|#if ZEND_DEBUG
35365|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
35366|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
35367|      2|		zend_property_info *prop_info = NULL;
35368|      2|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (35368:7): [True: 0, False: 2]
  ------------------
35369|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
35370|      0|		}
35371|      2|#endif
35372|      2|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      2|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35373|      2|#if ZEND_DEBUG
35374|      2|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      2|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (35374:7): [True: 2, False: 0]
  |  Branch (35374:25): [True: 0, False: 2]
  |  Branch (35374:38): [True: 0, False: 0]
  ------------------
35375|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35376|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
35377|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
35378|      0|		}
35379|      2|#endif
35380|       |
35381|      2|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (35381:7): [True: 2, Folded]
  ------------------
35382|      2|			zend_tmp_string_release(tmp_name);
35383|      2|		}
35384|       |
35385|      2|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (35385:7): [True: 2, False: 0]
  ------------------
35386|      2|fetch_obj_r_copy:
35387|      2|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      2|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      2|		zval *_z3 = (v);								\
  |  | 1510|      2|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      2|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      2|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      2|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
35388|      2|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
35389|      0|			zend_unwrap_reference(retval);
35390|      0|		}
35391|      2|	} while (0);
  ------------------
  |  Branch (35391:11): [Folded, False: 2]
  ------------------
35392|       |
35393|      2|fetch_obj_r_finish:
35394|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35395|       |
35396|       |
35397|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (35397:2): [True: 0, False: 0]
  |  Branch (35397:2): [True: 0, False: 0]
  ------------------
35398|      2|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER:
37790|      3|{
37791|      3|	USE_OPLINE
37792|      3|	zval *container;
37793|      3|	void **cache_slot = NULL;
37794|       |
37795|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37796|      3|	container = &EX(This);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
37797|      3|	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_UNUSED & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (37797:6): [Folded, False: 3]
  ------------------
37798|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
37799|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37799:3): [True: 0, False: 0]
  |  Branch (37799:3): [True: 0, False: 0]
  ------------------
37800|      0|	}
37801|       |
37802|      3|	if (IS_UNUSED == IS_CONST ||
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST ||
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37802:6): [Folded, False: 0]
  ------------------
37803|      0|	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (37803:7): [Folded, False: 0]
  ------------------
37804|      0|		do {
37805|      0|			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_UNUSED & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37805:8): [Folded, False: 0]
  ------------------
37806|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37807|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37808|      0|					break;
37809|      0|				}
37810|      0|			}
37811|      0|			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (37811:8): [Folded, False: 0]
  ------------------
37812|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
37813|      0|			}
37814|      0|			zend_wrong_property_read(container, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
37815|      0|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37816|      0|			goto fetch_obj_r_finish;
37817|      0|		} while (0);
  ------------------
  |  Branch (37817:12): [Folded, False: 0]
  ------------------
37818|      0|	}
37819|       |
37820|       |	/* here we are sure we are dealing with an object */
37821|      3|	do {
37822|      3|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
37823|      3|		zend_string *name, *tmp_name;
37824|      3|		zval *retval;
37825|       |
37826|      3|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37826:7): [Folded, False: 3]
  ------------------
37827|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37828|       |
37829|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37830|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
37831|       |
37832|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37833|      0|fetch_obj_r_simple:
37834|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
37835|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37836|      0|						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (37836:11): [Folded, False: 0]
  |  Branch (37836:16): [Folded, False: 0]
  ------------------
37837|      0|							goto fetch_obj_r_copy;
37838|      0|						} else {
37839|      0|fetch_obj_r_fast_copy:
37840|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37841|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37841:8): [True: 0, False: 0]
  |  Branch (37841:8): [True: 0, False: 0]
  ------------------
37842|      0|						}
37843|      0|					}
37844|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37845|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
37846|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37847|      0|						prop_offset = prop_info->offset;
37848|      0|						goto fetch_obj_r_simple;
37849|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37850|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
37851|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37851:7): [True: 0, False: 0]
  |  Branch (37851:7): [True: 0, False: 0]
  ------------------
37852|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37852:7): [True: 0, False: 0]
  |  Branch (37852:7): [True: 0, False: 0]
  |  Branch (37852:7): [True: 0, False: 0]
  |  Branch (37852:7): [True: 0, False: 0]
  ------------------
37853|       |
37854|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37855|      0|						if (IS_UNUSED & IS_CV) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (37855:11): [Folded, False: 0]
  ------------------
37856|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
37857|      0|						}
37858|      0|						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_UNUSED & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (37858:11): [Folded, False: 0]
  ------------------
37859|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
37860|      0|						}
37861|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
37862|      0|						call->prev_execute_data = execute_data;
37863|      0|						call->call = NULL;
37864|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37865|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37866|       |
37867|      0|						execute_data = call;
37868|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
37869|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
37870|       |
37871|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
37872|       |						opline = hook->op_array.opcodes;
37873|       |#else
37874|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
37875|      0|#endif
37876|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37877|       |
37878|       |
37879|       |
37880|       |
37881|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
37882|      0|					}
37883|       |					/* Fall through to read_property for hooks. */
37884|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37885|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37885:6): [True: 0, False: 0]
  |  Branch (37885:6): [True: 0, False: 0]
  ------------------
37886|      0|					name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
37887|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (37887:10): [True: 0, False: 0]
  ------------------
37888|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
37889|       |
37890|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37891|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
37892|       |
37893|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37894|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37895|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37896|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37897|      0|								retval = &p->val;
37898|      0|								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (37898:13): [Folded, False: 0]
  |  Branch (37898:18): [Folded, False: 0]
  ------------------
37899|      0|									goto fetch_obj_r_copy;
37900|      0|								} else {
37901|      0|									goto fetch_obj_r_fast_copy;
37902|      0|								}
37903|      0|							}
37904|      0|						}
37905|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37906|      0|					}
37907|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
37908|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37909|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
37910|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37911|      0|						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_UNUSED & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (37911:11): [Folded, False: 0]
  |  Branch (37911:16): [Folded, False: 0]
  ------------------
37912|      0|							goto fetch_obj_r_copy;
37913|      0|						} else {
37914|      0|							goto fetch_obj_r_fast_copy;
37915|      0|						}
37916|      0|					}
37917|      0|				}
37918|      0|			}
37919|      0|			name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
37920|      3|		} else {
37921|      3|			name = zval_try_get_tmp_string(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
37922|      3|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
37923|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37924|      0|				break;
37925|      0|			}
37926|      3|		}
37927|       |
37928|      3|#if ZEND_DEBUG
37929|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
37930|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
37931|      3|		zend_property_info *prop_info = NULL;
37932|      3|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (37932:7): [True: 0, False: 3]
  ------------------
37933|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
37934|      0|		}
37935|      3|#endif
37936|      3|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      3|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37937|      3|#if ZEND_DEBUG
37938|      3|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      3|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (37938:7): [True: 2, False: 1]
  |  Branch (37938:25): [True: 0, False: 2]
  |  Branch (37938:38): [True: 0, False: 0]
  ------------------
37939|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37940|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37941|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
37942|      0|		}
37943|      3|#endif
37944|       |
37945|      3|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37945:7): [True: 3, Folded]
  ------------------
37946|      3|			zend_tmp_string_release(tmp_name);
37947|      3|		}
37948|       |
37949|      3|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (37949:7): [True: 2, False: 1]
  ------------------
37950|      2|fetch_obj_r_copy:
37951|      2|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      2|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      2|		zval *_z3 = (v);								\
  |  | 1510|      2|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      2|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      2|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      2|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
37952|      2|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
37953|      0|			zend_unwrap_reference(retval);
37954|      0|		}
37955|      3|	} while (0);
  ------------------
  |  Branch (37955:11): [Folded, False: 3]
  ------------------
37956|       |
37957|      3|fetch_obj_r_finish:
37958|       |
37959|       |
37960|       |
37961|       |
37962|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37962:2): [True: 0, False: 0]
  |  Branch (37962:2): [True: 0, False: 0]
  ------------------
37963|      3|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER:
42330|    338|{
42331|    338|	ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CONST_INLINE_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|    338|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
42332|    338|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CV_CONST_INLINE_HANDLER:
42154|    338|{
42155|    338|	USE_OPLINE
42156|    338|	zval *container;
42157|    338|	void **cache_slot = NULL;
42158|       |
42159|    338|	SAVE_OPLINE();
  ------------------
  |  |  428|    338|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    338|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42160|    338|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    338|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    338|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42161|    338|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|    338|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    338|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    338|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42161:6): [Folded, False: 338]
  ------------------
42162|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
42163|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42163:3): [True: 0, False: 0]
  |  Branch (42163:3): [True: 0, False: 0]
  ------------------
42164|      0|	}
42165|       |
42166|    338|	if (IS_CV == IS_CONST ||
  ------------------
  |  |  867|    338|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST ||
  ------------------
  |  |  864|    676|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42166:6): [Folded, False: 338]
  ------------------
42167|    338|	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  867|    338|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|    676|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|    338|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 166, False: 172]
  |  |  ------------------
  ------------------
  |  Branch (42167:7): [True: 338, Folded]
  ------------------
42168|    166|		do {
42169|    166|			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|    166|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|    166|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|    166|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    166|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    166|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    166|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 4, False: 162]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42169:8): [True: 166, Folded]
  ------------------
42170|      4|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      4|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      4|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42171|      4|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
42172|      2|					break;
42173|      2|				}
42174|      4|			}
42175|    164|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|    164|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|    328|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|    164|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 162, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (42175:8): [True: 164, Folded]
  ------------------
42176|    162|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    162|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    162|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42177|    162|			}
42178|    164|			zend_wrong_property_read(container, RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  841|    164|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42179|    164|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|    164|#define ZVAL_NULL(z) do {				\
  |  | 1060|    164|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    164|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    164|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    164|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    164|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 164]
  |  |  ------------------
  ------------------
42180|    164|			goto fetch_obj_r_finish;
42181|    166|		} while (0);
  ------------------
  |  Branch (42181:12): [Folded, False: 0]
  ------------------
42182|    166|	}
42183|       |
42184|       |	/* here we are sure we are dealing with an object */
42185|    174|	do {
42186|    174|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|    174|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    174|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
42187|    174|		zend_string *name, *tmp_name;
42188|    174|		zval *retval;
42189|       |
42190|    174|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    174|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    174|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42190:7): [True: 174, Folded]
  ------------------
42191|    174|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|    174|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|    174|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42192|       |
42193|    174|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|    174|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 103, False: 71]
  |  |  ------------------
  ------------------
42194|    103|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|    103|	(slot)[0]
  ------------------
42195|       |
42196|    103|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|    103|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 99]
  |  |  ------------------
  ------------------
42197|      4|fetch_obj_r_simple:
42198|      4|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      4|	((zval*)((char*)(obj) + offset))
  ------------------
42199|      4|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
42200|      4|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42200:11): [Folded, False: 0]
  |  Branch (42200:16): [Folded, False: 0]
  ------------------
42201|      0|							goto fetch_obj_r_copy;
42202|      4|						} else {
42203|    102|fetch_obj_r_fast_copy:
42204|    102|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|    102|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|    102|		zval *_z3 = (v);								\
  |  | 1510|    102|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|    102|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|    102|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|    102|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|    102|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 102]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|    102|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|    102|	do {												\
  |  |  |  | 1417|    102|		zval *_z1 = (z);								\
  |  |  |  | 1418|    102|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    102|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    102|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    102|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    102|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    102|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    102|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    102|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    102|	do {												\
  |  |  |  |  |  | 1408|    102|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    102|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    102|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    102|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    102|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    102|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    102|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 102]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    102|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 102]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|    102|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 102]
  |  |  ------------------
  ------------------
42205|    102|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    102|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    102|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    102|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 102]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    102|	} else { \
  |  |  |  | 5761|    102|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    102|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    102|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    102|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    102|	} \
  |  |  |  | 5764|    102|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    102|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42205:8): [True: 0, False: 102]
  |  Branch (42205:8): [True: 102, False: 0]
  ------------------
42206|    102|						}
42207|      4|					}
42208|     99|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|     99|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 99]
  |  |  |  Branch (457:52): [True: 0, False: 99]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42209|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42210|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42211|      0|						prop_offset = prop_info->offset;
42212|      0|						goto fetch_obj_r_simple;
42213|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42214|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
42215|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42215:7): [True: 0, False: 0]
  |  Branch (42215:7): [True: 0, False: 0]
  ------------------
42216|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42216:7): [True: 0, False: 0]
  |  Branch (42216:7): [True: 0, False: 0]
  |  Branch (42216:7): [True: 0, False: 0]
  |  Branch (42216:7): [True: 0, False: 0]
  ------------------
42217|       |
42218|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42219|      0|						if (IS_CV & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (42219:11): [True: 0, Folded]
  ------------------
42220|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
42221|      0|						}
42222|      0|						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42222:11): [True: 0, Folded]
  ------------------
42223|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
42224|      0|						}
42225|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
42226|      0|						call->prev_execute_data = execute_data;
42227|      0|						call->call = NULL;
42228|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42229|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42230|       |
42231|      0|						execute_data = call;
42232|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
42233|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42234|       |
42235|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
42236|       |						opline = hook->op_array.opcodes;
42237|       |#else
42238|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
42239|      0|#endif
42240|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42241|       |
42242|       |
42243|       |
42244|       |
42245|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
42246|      0|					}
42247|       |					/* Fall through to read_property for hooks. */
42248|     99|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|     99|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 99, False: 0]
  |  |  ------------------
  ------------------
42249|     99|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|     99|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42249:6): [True: 0, False: 99]
  |  Branch (42249:6): [True: 99, False: 0]
  ------------------
42250|     99|					name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     99|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     99|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42251|     99|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|     99|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|     99|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (42251:10): [True: 98, False: 1]
  ------------------
42252|     98|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|     98|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
42253|       |
42254|     98|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|     98|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 98, False: 0]
  |  |  ------------------
  ------------------
42255|     98|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
42256|       |
42257|     98|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|    196|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 98]
  |  |  ------------------
  ------------------
42258|     98|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|    196|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 98, False: 0]
  |  |  ------------------
  ------------------
42259|     98|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|    196|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 98, False: 0]
  |  |  ------------------
  ------------------
42260|     98|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|     98|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 98, False: 0]
  |  |  ------------------
  ------------------
42261|     98|								retval = &p->val;
42262|     98|								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42262:13): [Folded, False: 0]
  |  Branch (42262:18): [Folded, False: 0]
  ------------------
42263|      0|									goto fetch_obj_r_copy;
42264|     98|								} else {
42265|     98|									goto fetch_obj_r_fast_copy;
42266|     98|								}
42267|     98|							}
42268|     98|						}
42269|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42270|      0|					}
42271|      1|					retval = zend_hash_find_known_hash(zobj->properties, name);
42272|      1|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
42273|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
42274|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42275|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42275:11): [Folded, False: 0]
  |  Branch (42275:16): [Folded, False: 0]
  ------------------
42276|      0|							goto fetch_obj_r_copy;
42277|      0|						} else {
42278|      0|							goto fetch_obj_r_fast_copy;
42279|      0|						}
42280|      0|					}
42281|      1|				}
42282|    103|			}
42283|     72|			name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     72|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     72|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42284|     72|		} else {
42285|      0|			name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42286|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42287|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42288|      0|				break;
42289|      0|			}
42290|      0|		}
42291|       |
42292|     72|#if ZEND_DEBUG
42293|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
42294|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
42295|     72|		zend_property_info *prop_info = NULL;
42296|     72|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (42296:7): [True: 0, False: 72]
  ------------------
42297|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
42298|      0|		}
42299|     72|#endif
42300|     72|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|     72|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|     72|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     72|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42301|     72|#if ZEND_DEBUG
42302|     72|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|    144|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|     72|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (42302:7): [True: 67, False: 5]
  |  Branch (42302:25): [True: 0, False: 67]
  |  Branch (42302:38): [True: 0, False: 0]
  ------------------
42303|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42304|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42305|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
42306|      0|		}
42307|     72|#endif
42308|       |
42309|     72|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     72|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     72|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42309:7): [Folded, False: 72]
  ------------------
42310|      0|			zend_tmp_string_release(tmp_name);
42311|      0|		}
42312|       |
42313|     72|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|     72|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     72|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (42313:7): [True: 56, False: 16]
  ------------------
42314|     56|fetch_obj_r_copy:
42315|     56|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|     56|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     56|		zval *_z3 = (v);								\
  |  | 1510|     56|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     56|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     56|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     56|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     56|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 26, False: 30]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     26|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 13, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|     13|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|     13|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     13|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     13|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|     13|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|     13|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     13|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     13|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     13|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 6, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      6|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      6|				}										\
  |  | 1516|     13|			} else {									\
  |  | 1517|     13|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     13|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     13|			}											\
  |  | 1519|     26|		}												\
  |  | 1520|     56|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     56|	do {												\
  |  |  |  | 1417|     56|		zval *_z1 = (z);								\
  |  |  |  | 1418|     56|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     56|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     56|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     56|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     56|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     56|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     56|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     56|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     56|	do {												\
  |  |  |  |  |  | 1408|     56|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     56|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     56|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     56|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     56|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     56|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     56|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     56|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     56|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 56]
  |  |  ------------------
  ------------------
42316|     56|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  ------------------
  ------------------
42317|      0|			zend_unwrap_reference(retval);
42318|      0|		}
42319|     72|	} while (0);
  ------------------
  |  Branch (42319:11): [Folded, False: 72]
  ------------------
42320|       |
42321|    236|fetch_obj_r_finish:
42322|       |
42323|       |
42324|       |
42325|       |
42326|    236|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    236|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    236|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    236|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 236, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    236|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    236|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    236|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    236|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    236|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    236|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42326:2): [True: 0, False: 0]
  |  Branch (42326:2): [True: 0, False: 0]
  ------------------
42327|    236|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER:
45987|    167|{
45988|    167|	USE_OPLINE
45989|    167|	zval *container;
45990|    167|	void **cache_slot = NULL;
45991|       |
45992|    167|	SAVE_OPLINE();
  ------------------
  |  |  428|    167|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    167|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45993|    167|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    167|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    167|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45994|    167|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|    167|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    167|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    167|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (45994:6): [Folded, False: 167]
  ------------------
45995|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
45996|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (45996:3): [True: 0, False: 0]
  |  Branch (45996:3): [True: 0, False: 0]
  ------------------
45997|      0|	}
45998|       |
45999|    167|	if (IS_CV == IS_CONST ||
  ------------------
  |  |  867|    167|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST ||
  ------------------
  |  |  864|    334|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (45999:6): [Folded, False: 167]
  ------------------
46000|    167|	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  867|    167|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|    334|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|    167|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 167]
  |  |  ------------------
  ------------------
  |  Branch (46000:7): [True: 167, Folded]
  ------------------
46001|      0|		do {
46002|      0|			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (46002:8): [True: 0, Folded]
  ------------------
46003|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46004|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46005|      0|					break;
46006|      0|				}
46007|      0|			}
46008|      0|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (46008:8): [True: 0, Folded]
  ------------------
46009|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46010|      0|			}
46011|      0|			zend_wrong_property_read(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46012|      0|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46013|      0|			goto fetch_obj_r_finish;
46014|      0|		} while (0);
  ------------------
  |  Branch (46014:12): [Folded, False: 0]
  ------------------
46015|      0|	}
46016|       |
46017|       |	/* here we are sure we are dealing with an object */
46018|    167|	do {
46019|    167|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|    167|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    167|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
46020|    167|		zend_string *name, *tmp_name;
46021|    167|		zval *retval;
46022|       |
46023|    167|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|    167|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    167|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46023:7): [Folded, False: 167]
  ------------------
46024|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46025|       |
46026|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46027|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46028|       |
46029|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46030|      0|fetch_obj_r_simple:
46031|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
46032|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46033|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46033:11): [Folded, False: 0]
  |  Branch (46033:16): [Folded, False: 0]
  ------------------
46034|      0|							goto fetch_obj_r_copy;
46035|      0|						} else {
46036|      0|fetch_obj_r_fast_copy:
46037|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46038|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (46038:8): [True: 0, False: 0]
  |  Branch (46038:8): [True: 0, False: 0]
  ------------------
46039|      0|						}
46040|      0|					}
46041|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46042|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
46043|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46044|      0|						prop_offset = prop_info->offset;
46045|      0|						goto fetch_obj_r_simple;
46046|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46047|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
46048|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (46048:7): [True: 0, False: 0]
  |  Branch (46048:7): [True: 0, False: 0]
  ------------------
46049|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (46049:7): [True: 0, False: 0]
  |  Branch (46049:7): [True: 0, False: 0]
  |  Branch (46049:7): [True: 0, False: 0]
  |  Branch (46049:7): [True: 0, False: 0]
  ------------------
46050|       |
46051|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46052|      0|						if (IS_CV & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (46052:11): [True: 0, Folded]
  ------------------
46053|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
46054|      0|						}
46055|      0|						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (46055:11): [True: 0, Folded]
  ------------------
46056|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
46057|      0|						}
46058|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
46059|      0|						call->prev_execute_data = execute_data;
46060|      0|						call->call = NULL;
46061|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46062|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
46063|       |
46064|      0|						execute_data = call;
46065|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
46066|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46067|       |
46068|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
46069|       |						opline = hook->op_array.opcodes;
46070|       |#else
46071|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
46072|      0|#endif
46073|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
46074|       |
46075|       |
46076|       |
46077|       |
46078|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
46079|      0|					}
46080|       |					/* Fall through to read_property for hooks. */
46081|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46082|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (46082:6): [True: 0, False: 0]
  |  Branch (46082:6): [True: 0, False: 0]
  ------------------
46083|      0|					name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
46084|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (46084:10): [True: 0, False: 0]
  ------------------
46085|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
46086|       |
46087|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46088|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
46089|       |
46090|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46091|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46092|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46093|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46094|      0|								retval = &p->val;
46095|      0|								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46095:13): [Folded, False: 0]
  |  Branch (46095:18): [Folded, False: 0]
  ------------------
46096|      0|									goto fetch_obj_r_copy;
46097|      0|								} else {
46098|      0|									goto fetch_obj_r_fast_copy;
46099|      0|								}
46100|      0|							}
46101|      0|						}
46102|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46103|      0|					}
46104|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
46105|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46106|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
46107|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46108|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (46108:11): [Folded, False: 0]
  |  Branch (46108:16): [Folded, False: 0]
  ------------------
46109|      0|							goto fetch_obj_r_copy;
46110|      0|						} else {
46111|      0|							goto fetch_obj_r_fast_copy;
46112|      0|						}
46113|      0|					}
46114|      0|				}
46115|      0|			}
46116|      0|			name = Z_STR_P(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
46117|    167|		} else {
46118|    167|			name = zval_try_get_tmp_string(_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|    167|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    167|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
46119|    167|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|    167|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 166]
  |  |  ------------------
  ------------------
46120|      1|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
46121|      1|				break;
46122|      1|			}
46123|    167|		}
46124|       |
46125|    166|#if ZEND_DEBUG
46126|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
46127|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
46128|    166|		zend_property_info *prop_info = NULL;
46129|    166|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (46129:7): [True: 0, False: 166]
  ------------------
46130|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
46131|      0|		}
46132|    166|#endif
46133|    166|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|    166|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|    166|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    166|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46134|    166|#if ZEND_DEBUG
46135|    166|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|    332|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|    166|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (46135:7): [True: 166, False: 0]
  |  Branch (46135:25): [True: 0, False: 166]
  |  Branch (46135:38): [True: 0, False: 0]
  ------------------
46136|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46137|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
46138|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
46139|      0|		}
46140|    166|#endif
46141|       |
46142|    166|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|    166|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|    166|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (46142:7): [True: 166, Folded]
  ------------------
46143|    166|			zend_tmp_string_release(tmp_name);
46144|    166|		}
46145|       |
46146|    166|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|    166|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    166|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (46146:7): [True: 166, False: 0]
  ------------------
46147|    166|fetch_obj_r_copy:
46148|    166|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|    166|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|    166|		zval *_z3 = (v);								\
  |  | 1510|    166|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|    166|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|    166|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|    166|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|    166|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 166]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|    166|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|    166|	do {												\
  |  |  |  | 1417|    166|		zval *_z1 = (z);								\
  |  |  |  | 1418|    166|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    166|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    166|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    166|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    166|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    166|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    166|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    166|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    166|	do {												\
  |  |  |  |  |  | 1408|    166|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    166|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    166|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    166|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    166|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    166|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    166|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 166]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    166|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 166]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|    166|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 166]
  |  |  ------------------
  ------------------
46149|    166|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
46150|      0|			zend_unwrap_reference(retval);
46151|      0|		}
46152|    166|	} while (0);
  ------------------
  |  Branch (46152:11): [Folded, False: 166]
  ------------------
46153|       |
46154|    167|fetch_obj_r_finish:
46155|    167|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|    167|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    167|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
46156|       |
46157|       |
46158|    167|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    167|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    167|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    167|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 167, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    167|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    167|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    167|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    167|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    167|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    167|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (46158:2): [True: 0, False: 0]
  |  Branch (46158:2): [True: 0, False: 0]
  ------------------
46159|    167|}
zend_execute.c:ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER:
51098|     24|{
51099|     24|	USE_OPLINE
51100|     24|	zval *container;
51101|     24|	void **cache_slot = NULL;
51102|       |
51103|     24|	SAVE_OPLINE();
  ------------------
  |  |  428|     24|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51104|     24|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     24|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     24|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51105|     24|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|     24|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     24|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     24|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (51105:6): [Folded, False: 24]
  ------------------
51106|       |		/* Handler accepts VAR only for FUNC_ARG, which will unwrap before dispatching. */
51107|      0|		ZEND_ASSERT(Z_TYPE_P(container) != IS_REFERENCE);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (51107:3): [True: 0, False: 0]
  |  Branch (51107:3): [True: 0, False: 0]
  ------------------
51108|      0|	}
51109|       |
51110|     24|	if (IS_CV == IS_CONST ||
  ------------------
  |  |  867|     24|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST ||
  ------------------
  |  |  864|     48|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51110:6): [Folded, False: 24]
  ------------------
51111|     24|	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  867|     24|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|     48|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 17, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (51111:7): [True: 24, Folded]
  ------------------
51112|     17|		do {
51113|     17|			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & IS_CV) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|     17|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     17|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     17|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51113:8): [True: 17, Folded]
  ------------------
51114|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51115|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51116|      0|					break;
51117|      0|				}
51118|      0|			}
51119|     17|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  867|     34|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
  ------------------
  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 10]
  |  |  ------------------
  ------------------
  |  Branch (51119:8): [True: 17, Folded]
  ------------------
51120|      7|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      7|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      7|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51121|      7|			}
51122|     17|			zend_wrong_property_read(container, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |   89|     17|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     17|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51123|     17|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|     17|#define ZVAL_NULL(z) do {				\
  |  | 1060|     17|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     17|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
51124|     17|			goto fetch_obj_r_finish;
51125|     17|		} while (0);
  ------------------
  |  Branch (51125:12): [Folded, False: 0]
  ------------------
51126|     17|	}
51127|       |
51128|       |	/* here we are sure we are dealing with an object */
51129|      7|	do {
51130|      7|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      7|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
51131|      7|		zend_string *name, *tmp_name;
51132|      7|		zval *retval;
51133|       |
51134|      7|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51134:7): [Folded, False: 7]
  ------------------
51135|      0|			cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51136|       |
51137|      0|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51138|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
51139|       |
51140|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51141|      0|fetch_obj_r_simple:
51142|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
51143|      0|					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51144|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51144:11): [Folded, False: 0]
  |  Branch (51144:16): [Folded, False: 0]
  ------------------
51145|      0|							goto fetch_obj_r_copy;
51146|      0|						} else {
51147|      0|fetch_obj_r_fast_copy:
51148|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51149|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51149:8): [True: 0, False: 0]
  |  Branch (51149:8): [True: 0, False: 0]
  ------------------
51150|      0|						}
51151|      0|					}
51152|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51153|      0|					zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
51154|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51155|      0|						prop_offset = prop_info->offset;
51156|      0|						goto fetch_obj_r_simple;
51157|      0|					} else if (EXPECTED(ZEND_IS_PROPERTY_HOOK_SIMPLE_GET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51158|      0|						zend_function *hook = prop_info->hooks[ZEND_PROPERTY_HOOK_GET];
51159|      0|						ZEND_ASSERT(hook->type == ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (51159:7): [True: 0, False: 0]
  |  Branch (51159:7): [True: 0, False: 0]
  ------------------
51160|      0|						ZEND_ASSERT(RUN_TIME_CACHE(&hook->op_array));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (51160:7): [True: 0, False: 0]
  |  Branch (51160:7): [True: 0, False: 0]
  |  Branch (51160:7): [True: 0, False: 0]
  |  Branch (51160:7): [True: 0, False: 0]
  ------------------
51161|       |
51162|      0|						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              						uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51163|      0|						if (IS_CV & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (51163:11): [True: 0, Folded]
  ------------------
51164|      0|							GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
51165|      0|						}
51166|      0|						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (IS_CV & (IS_CV|IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (51166:11): [True: 0, Folded]
  ------------------
51167|      0|							call_info |= ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
51168|      0|						}
51169|      0|						zend_execute_data *call = zend_vm_stack_push_call_frame(call_info, hook, 0, zobj);
51170|      0|						call->prev_execute_data = execute_data;
51171|      0|						call->call = NULL;
51172|      0|						call->return_value = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51173|      0|						call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
51174|       |
51175|      0|						execute_data = call;
51176|      0|						EG(current_execute_data) = execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
51177|      0|						zend_init_cvs(0, hook->op_array.last_var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51178|       |
51179|       |#if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID))
51180|       |						opline = hook->op_array.opcodes;
51181|       |#else
51182|      0|						EX(opline) = hook->op_array.opcodes;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
51183|      0|#endif
51184|      0|						LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51185|       |
51186|       |
51187|       |
51188|       |
51189|      0|						ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
51190|      0|					}
51191|       |					/* Fall through to read_property for hooks. */
51192|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51193|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (51193:6): [True: 0, False: 0]
  |  Branch (51193:6): [True: 0, False: 0]
  ------------------
51194|      0|					name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
51195|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (51195:10): [True: 0, False: 0]
  ------------------
51196|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
51197|       |
51198|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51199|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
51200|       |
51201|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51202|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51203|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51204|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51205|      0|								retval = &p->val;
51206|      0|								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51206:13): [Folded, False: 0]
  |  Branch (51206:18): [Folded, False: 0]
  ------------------
51207|      0|									goto fetch_obj_r_copy;
51208|      0|								} else {
51209|      0|									goto fetch_obj_r_fast_copy;
51210|      0|								}
51211|      0|							}
51212|      0|						}
51213|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51214|      0|					}
51215|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
51216|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51217|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
51218|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51219|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51219:11): [Folded, False: 0]
  |  Branch (51219:16): [Folded, False: 0]
  ------------------
51220|      0|							goto fetch_obj_r_copy;
51221|      0|						} else {
51222|      0|							goto fetch_obj_r_fast_copy;
51223|      0|						}
51224|      0|					}
51225|      0|				}
51226|      0|			}
51227|      0|			name = Z_STR_P(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
51228|      7|		} else {
51229|      7|			name = zval_try_get_tmp_string(_get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC), &tmp_name);
  ------------------
  |  |   89|      7|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      7|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51230|      7|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
51231|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51232|      0|				break;
51233|      0|			}
51234|      7|		}
51235|       |
51236|      7|#if ZEND_DEBUG
51237|       |		/* For non-standard object handlers, verify a declared property type in debug builds.
51238|       |		 * Fetch prop_info before calling read_property(), as it may deallocate the object. */
51239|      7|		zend_property_info *prop_info = NULL;
51240|      7|		if (zobj->handlers->read_property != zend_std_read_property) {
  ------------------
  |  Branch (51240:7): [True: 0, False: 7]
  ------------------
51241|      0|			prop_info = zend_get_property_info(zobj->ce, name, /* silent */ true);
51242|      0|		}
51243|      7|#endif
51244|      7|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1074|      7|#define BP_VAR_R			0
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51245|      7|#if ZEND_DEBUG
51246|      7|		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  ------------------
              		if (!EG(exception) && prop_info && prop_info != ZEND_WRONG_PROPERTY_INFO
  ------------------
  |  |   32|      7|	((struct _zend_property_info*)((intptr_t)-1))
  ------------------
  |  Branch (51246:7): [True: 6, False: 1]
  |  Branch (51246:25): [True: 0, False: 6]
  |  Branch (51246:38): [True: 0, False: 0]
  ------------------
51247|      0|				&& ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
51248|      0|			ZVAL_OPT_DEREF(retval);
  ------------------
  |  | 1486|      0|#define ZVAL_OPT_DEREF(z) do {							\
  |  | 1487|      0|		if (UNEXPECTED(Z_OPT_ISREF_P(z))) {				\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1488|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1489|      0|		}												\
  |  | 1490|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1490:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
51249|      0|			zend_verify_property_type(prop_info, retval, /* strict */ true);
51250|      0|		}
51251|      7|#endif
51252|       |
51253|      7|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      7|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (51253:7): [True: 7, Folded]
  ------------------
51254|      7|			zend_tmp_string_release(tmp_name);
51255|      7|		}
51256|       |
51257|      7|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (51257:7): [True: 6, False: 1]
  ------------------
51258|      6|fetch_obj_r_copy:
51259|      6|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      6|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      6|		zval *_z3 = (v);								\
  |  | 1510|      6|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      6|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      6|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      1|			} else {									\
  |  | 1517|      1|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      1|			}											\
  |  | 1519|      1|		}												\
  |  | 1520|      6|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      6|	do {												\
  |  |  |  | 1417|      6|		zval *_z1 = (z);								\
  |  |  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      6|	do {												\
  |  |  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
51260|      6|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
51261|      0|			zend_unwrap_reference(retval);
51262|      0|		}
51263|      7|	} while (0);
  ------------------
  |  Branch (51263:11): [Folded, False: 7]
  ------------------
51264|       |
51265|     24|fetch_obj_r_finish:
51266|       |
51267|       |
51268|       |
51269|       |
51270|     24|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     24|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     24|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     24|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 24, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     24|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     24|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     24|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     24|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     24|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51270:2): [True: 0, False: 0]
  |  Branch (51270:2): [True: 0, False: 0]
  ------------------
51271|     24|}
zend_execute.c:ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER:
11005|     35|{
11006|     35|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_W));
  ------------------
  |  |  410|     35|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     35|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
11007|     35|}
zend_execute.c:ZEND_FETCH_W_SPEC_TMP_UNUSED_HANDLER:
21452|    386|{
21453|    386|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_TMP_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_W));
  ------------------
  |  |  410|    386|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    386|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
21454|    386|}
zend_execute.c:ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER:
48588|  1.14k|{
48589|  1.14k|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CV_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_W));
  ------------------
  |  |  410|  1.14k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  1.14k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
48590|  1.14k|}
zend_execute.c:ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER:
24262|    146|{
24263|    146|	USE_OPLINE
24264|    146|	zval *container;
24265|       |
24266|    146|	SAVE_OPLINE();
  ------------------
  |  |  428|    146|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    146|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24267|    146|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    146|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    146|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24268|    146|	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|    146|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|    146|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    146|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    146|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    146|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    146|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24269|       |
24270|       |
24271|    146|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|    146|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|    146|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24271:6): [True: 146, Folded]
  ------------------
24272|    146|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|    146|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|    146|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|    146|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|    146|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|    146|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|    146|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 146]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|    146|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 146]
  |  |  ------------------
  ------------------
24273|    146|	}
24274|    146|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    146|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    146|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    146|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 146, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    146|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    146|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    146|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    146|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    146|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    146|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24274:2): [True: 0, False: 0]
  |  Branch (24274:2): [True: 0, False: 0]
  ------------------
24275|    146|}
zend_execute.c:ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER:
28886|     11|{
28887|     11|	USE_OPLINE
28888|     11|	zval *container;
28889|       |
28890|     11|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28891|     11|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28892|     11|	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     11|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     11|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     11|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28893|       |
28894|       |
28895|     11|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|     11|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|     11|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (28895:6): [True: 11, Folded]
  ------------------
28896|     11|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|     11|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|     11|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|     11|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|     11|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|     11|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|     11|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 11]
  |  |  ------------------
  ------------------
28897|     11|	}
28898|     11|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     11|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     11|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     11|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28898:2): [True: 0, False: 0]
  |  Branch (28898:2): [True: 0, False: 0]
  ------------------
28899|     11|}
zend_execute.c:ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER:
42064|    372|{
42065|    372|	USE_OPLINE
42066|    372|	zval *container;
42067|       |
42068|    372|	SAVE_OPLINE();
  ------------------
  |  |  428|    372|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    372|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42069|    372|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    372|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    372|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42070|    372|	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|    372|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|    372|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    372|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    372|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    372|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    372|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42071|       |
42072|       |
42073|    372|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|    372|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|    372|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42073:6): [Folded, False: 372]
  ------------------
42074|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42075|      0|	}
42076|    372|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    372|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    372|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    372|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 372, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    372|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    372|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    372|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    372|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    372|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    372|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42076:2): [True: 0, False: 0]
  |  Branch (42076:2): [True: 0, False: 0]
  ------------------
42077|    372|}
zend_execute.c:ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER:
45901|     14|{
45902|     14|	USE_OPLINE
45903|     14|	zval *container;
45904|       |
45905|     14|	SAVE_OPLINE();
  ------------------
  |  |  428|     14|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45906|     14|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45907|     14|	zend_fetch_dimension_address_W(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|     14|#define IS_TMP_VAR	(1<<1)
  ------------------
              	zend_fetch_dimension_address_W(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     14|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     14|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     14|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     14|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45908|     14|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45909|     14|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|     14|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (45909:6): [Folded, False: 14]
  ------------------
45910|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
45911|      0|	}
45912|     14|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     14|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     14|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 14, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     14|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     14|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     14|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (45912:2): [True: 0, False: 0]
  |  Branch (45912:2): [True: 0, False: 0]
  ------------------
45913|     14|}
zend_execute.c:ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER:
48617|     18|{
48618|     18|	USE_OPLINE
48619|     18|	zval *container;
48620|       |
48621|     18|	SAVE_OPLINE();
  ------------------
  |  |  428|     18|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48622|     18|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     18|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     18|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48623|     18|	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  863|     18|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     18|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     18|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     18|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     18|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48624|       |
48625|       |
48626|     18|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|     18|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|     18|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48626:6): [Folded, False: 18]
  ------------------
48627|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
48628|      0|	}
48629|     18|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     18|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     18|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     18|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 18, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     18|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     18|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     18|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     18|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (48629:2): [True: 0, False: 0]
  |  Branch (48629:2): [True: 0, False: 0]
  ------------------
48630|     18|}
zend_execute.c:ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER:
51008|    768|{
51009|    768|	USE_OPLINE
51010|    768|	zval *container;
51011|       |
51012|    768|	SAVE_OPLINE();
  ------------------
  |  |  428|    768|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    768|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51013|    768|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    768|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    768|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51014|    768|	zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|    768|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    768|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|    768|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    768|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    768|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    768|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    768|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51015|       |
51016|       |
51017|    768|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|    768|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|    768|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51017:6): [Folded, False: 768]
  ------------------
51018|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
51019|      0|	}
51020|    768|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    768|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    768|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    768|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 768, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    768|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    768|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    768|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    768|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    768|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    768|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51020:2): [True: 0, False: 0]
  |  Branch (51020:2): [True: 0, False: 0]
  ------------------
51021|    768|}
zend_execute.c:ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER:
24335|      6|{
24336|      6|	USE_OPLINE
24337|      6|	zval *property, *container, *result;
24338|       |
24339|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24340|       |
24341|      6|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24342|      6|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24343|      6|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24344|      6|	zend_fetch_property_address(
24345|      6|		result, container, IS_VAR, property, IS_CONST,
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              		result, container, IS_VAR, property, IS_CONST,
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
24346|      6|		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  524|      6|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (24346:4): [True: 6, Folded]
  ------------------
24347|      6|		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      6|#define BP_VAR_W			1
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      6|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      6|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24348|       |
24349|       |
24350|      6|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24350:6): [True: 6, Folded]
  ------------------
24351|      6|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      6|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      6|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      6|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      3|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      3|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      2|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      2|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      2|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      2|	do {												\
  |  |  |  | 1426|      2|		zval *_z1 = (z);								\
  |  |  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      2|		}												\
  |  |  |  | 1434|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      2|			}																\
  |  |  171|      2|			rc_dtor_func(__ref);											\
  |  |  172|      2|		}																	\
  |  |  173|      3|	}																		\
  |  |  174|      6|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
24352|      6|	}
24353|      6|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24353:2): [True: 0, False: 0]
  |  Branch (24353:2): [True: 0, False: 0]
  ------------------
24354|      6|}
zend_execute.c:ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER:
27046|      1|{
27047|      1|	USE_OPLINE
27048|      1|	zval *property, *container, *result;
27049|       |
27050|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
27051|       |
27052|      1|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27053|      1|	property = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27054|      1|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27055|      1|	zend_fetch_property_address(
27056|      1|		result, container, IS_VAR, property, IS_TMP_VAR,
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		result, container, IS_VAR, property, IS_TMP_VAR,
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
27057|      1|		((IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		((IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		((IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (27057:4): [Folded, False: 1]
  ------------------
27058|      1|		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      1|#define BP_VAR_W			1
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27059|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27060|      1|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27060:6): [True: 1, Folded]
  ------------------
27061|      1|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      1|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      1|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      1|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
27062|      1|	}
27063|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (27063:2): [True: 0, False: 0]
  |  Branch (27063:2): [True: 0, False: 0]
  ------------------
27064|      1|}
zend_execute.c:ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER:
33299|      8|{
33300|      8|	USE_OPLINE
33301|      8|	zval *property, *container, *result;
33302|       |
33303|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
33304|       |
33305|      8|	container = &EX(This);
  ------------------
  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  ------------------
33306|      8|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
33307|      8|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
33308|      8|	zend_fetch_property_address(
33309|      8|		result, container, IS_UNUSED, property, IS_CONST,
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		result, container, IS_UNUSED, property, IS_CONST,
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
33310|      8|		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  524|      8|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (33310:4): [True: 8, Folded]
  ------------------
33311|      8|		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      8|#define BP_VAR_W			1
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      8|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      8|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
33312|       |
33313|       |
33314|      8|	if (IS_UNUSED == IS_VAR) {
  ------------------
  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_VAR) {
  ------------------
  |  |  866|      8|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (33314:6): [Folded, False: 8]
  ------------------
33315|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
33316|      0|	}
33317|      8|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (33317:2): [True: 0, False: 0]
  |  Branch (33317:2): [True: 0, False: 0]
  ------------------
33318|      8|}
zend_execute.c:ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER:
35401|      1|{
35402|      1|	USE_OPLINE
35403|      1|	zval *property, *container, *result;
35404|       |
35405|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
35406|       |
35407|      1|	container = &EX(This);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
35408|      1|	property = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35409|      1|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35410|      1|	zend_fetch_property_address(
35411|      1|		result, container, IS_UNUSED, property, IS_TMP_VAR,
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		result, container, IS_UNUSED, property, IS_TMP_VAR,
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
35412|      1|		((IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		((IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		((IS_TMP_VAR == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (35412:4): [Folded, False: 1]
  ------------------
35413|      1|		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      1|#define BP_VAR_W			1
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
35414|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
35415|      1|	if (IS_UNUSED == IS_VAR) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (35415:6): [Folded, False: 1]
  ------------------
35416|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
35417|      0|	}
35418|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (35418:2): [True: 0, False: 0]
  |  Branch (35418:2): [True: 0, False: 0]
  ------------------
35419|      1|}
zend_execute.c:ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER:
42335|     86|{
42336|     86|	USE_OPLINE
42337|     86|	zval *property, *container, *result;
42338|       |
42339|     86|	SAVE_OPLINE();
  ------------------
  |  |  428|     86|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     86|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42340|       |
42341|     86|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     86|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     86|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42342|     86|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     86|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42343|     86|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     86|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     86|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42344|     86|	zend_fetch_property_address(
42345|     86|		result, container, IS_CV, property, IS_CONST,
  ------------------
  |  |  867|     86|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		result, container, IS_CV, property, IS_CONST,
  ------------------
  |  |  864|     86|#define IS_CONST	(1<<0)
  ------------------
42346|     86|		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|     86|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|     86|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  524|     86|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     86|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (42346:4): [True: 86, Folded]
  ------------------
42347|     86|		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|     86|#define BP_VAR_W			1
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     86|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     86|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     86|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     86|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42348|       |
42349|       |
42350|     86|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|     86|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|     86|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42350:6): [Folded, False: 86]
  ------------------
42351|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42352|      0|	}
42353|     86|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     86|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     86|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     86|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 86, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     86|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     86|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     86|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     86|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     86|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     86|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42353:2): [True: 0, False: 0]
  |  Branch (42353:2): [True: 0, False: 0]
  ------------------
42354|     86|}
zend_execute.c:ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER:
51274|      9|{
51275|      9|	USE_OPLINE
51276|      9|	zval *property, *container, *result;
51277|       |
51278|      9|	SAVE_OPLINE();
  ------------------
  |  |  428|      9|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
51279|       |
51280|      9|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      9|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      9|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51281|      9|	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51282|      9|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      9|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      9|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
51283|      9|	zend_fetch_property_address(
51284|      9|		result, container, IS_CV, property, IS_CV,
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		result, container, IS_CV, property, IS_CV,
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
51285|      9|		((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  864|      9|#define IS_CONST	(1<<0)
  ------------------
              		((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (51285:4): [Folded, False: 9]
  ------------------
51286|      9|		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|      9|#define BP_VAR_W			1
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      9|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      9|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
51287|       |
51288|       |
51289|      9|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (51289:6): [Folded, False: 9]
  ------------------
51290|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
51291|      0|	}
51292|      9|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      9|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      9|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 9, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      9|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      9|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      9|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51292:2): [True: 0, False: 0]
  |  Branch (51292:2): [True: 0, False: 0]
  ------------------
51293|      9|}
zend_execute.c:ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER:
11010|      1|{
11011|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_RW));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
11012|      1|}
zend_execute.c:ZEND_FETCH_RW_SPEC_TMP_UNUSED_HANDLER:
21457|    843|{
21458|    843|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_TMP_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_RW));
  ------------------
  |  |  410|    843|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    843|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
21459|    843|}
zend_execute.c:ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER:
48593|  4.72k|{
48594|  4.72k|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CV_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_RW));
  ------------------
  |  |  410|  4.72k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  4.72k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
48595|  4.72k|}
zend_execute.c:ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER:
24278|      5|{
24279|      5|	USE_OPLINE
24280|      5|	zval *container;
24281|       |
24282|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24283|      5|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24284|      5|	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24285|       |
24286|       |
24287|      5|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24287:6): [True: 5, Folded]
  ------------------
24288|      5|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      5|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      5|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      5|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      3|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      3|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      3|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      3|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      2|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      2|	do {												\
  |  |  |  | 1426|      2|		zval *_z1 = (z);								\
  |  |  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      2|			}																\
  |  |  171|      3|			rc_dtor_func(__ref);											\
  |  |  172|      3|		}																	\
  |  |  173|      3|	}																		\
  |  |  174|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 5]
  |  |  ------------------
  ------------------
24289|      5|	}
24290|      5|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24290:2): [True: 0, False: 0]
  |  Branch (24290:2): [True: 0, False: 0]
  ------------------
24291|      5|}
zend_execute.c:ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER:
28902|      1|{
28903|      1|	USE_OPLINE
28904|      1|	zval *container;
28905|       |
28906|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28907|      1|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28908|      1|	zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28909|       |
28910|       |
28911|      1|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (28911:6): [True: 1, Folded]
  ------------------
28912|      1|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      1|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      1|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      1|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      1|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      1|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      1|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      1|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      1|			rc_dtor_func(__ref);											\
  |  |  172|      1|		}																	\
  |  |  173|      1|	}																		\
  |  |  174|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
28913|      1|	}
28914|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28914:2): [True: 0, False: 0]
  |  Branch (28914:2): [True: 0, False: 0]
  ------------------
28915|      1|}
zend_execute.c:ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER:
42080|      3|{
42081|      3|	USE_OPLINE
42082|      3|	zval *container;
42083|       |
42084|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42085|      3|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42086|      3|	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42087|       |
42088|       |
42089|      3|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42089:6): [Folded, False: 3]
  ------------------
42090|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42091|      0|	}
42092|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42092:2): [True: 0, False: 0]
  |  Branch (42092:2): [True: 0, False: 0]
  ------------------
42093|      3|}
zend_execute.c:ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER:
24357|      2|{
24358|      2|	USE_OPLINE
24359|      2|	zval *property, *container, *result;
24360|       |
24361|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24362|      2|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24363|      2|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24364|      2|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24365|      2|	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  524|      2|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1076|      2|#define BP_VAR_RW			2
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (24365:78): [True: 2, Folded]
  ------------------
24366|       |
24367|       |
24368|      2|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24368:6): [True: 2, Folded]
  ------------------
24369|      2|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      2|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      2|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      2|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      2|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      2|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      2|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      2|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      2|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      2|	do {												\
  |  |  |  | 1426|      2|		zval *_z1 = (z);								\
  |  |  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      2|		}												\
  |  |  |  | 1434|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      2|			}																\
  |  |  171|      2|			rc_dtor_func(__ref);											\
  |  |  172|      2|		}																	\
  |  |  173|      2|	}																		\
  |  |  174|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
24370|      2|	}
24371|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24371:2): [True: 0, False: 0]
  |  Branch (24371:2): [True: 0, False: 0]
  ------------------
24372|      2|}
zend_execute.c:ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER:
42357|      1|{
42358|      1|	USE_OPLINE
42359|      1|	zval *property, *container, *result;
42360|       |
42361|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42362|      1|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42363|      1|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42364|      1|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42365|      1|	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1076|      1|#define BP_VAR_RW			2
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (42365:77): [True: 1, Folded]
  ------------------
42366|       |
42367|       |
42368|      1|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42368:6): [Folded, False: 1]
  ------------------
42369|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42370|      0|	}
42371|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42371:2): [True: 0, False: 0]
  |  Branch (42371:2): [True: 0, False: 0]
  ------------------
42372|      1|}
zend_execute.c:ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER:
11028|      3|{
11029|      3|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_IS));
  ------------------
  |  |  410|      3|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
11030|      3|}
zend_execute.c:ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER:
15682|     15|{
15683|     15|	USE_OPLINE
15684|     15|	zval *container;
15685|       |
15686|     15|	SAVE_OPLINE();
  ------------------
  |  |  428|     15|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     15|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15687|     15|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     15|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     15|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15688|       |	/* Unlike FETCH_DIM_R, this may receive references through return-by-ref
15689|       |	 * calls using ??=, i.e. foo()['bar'] ??= baz. */
15690|     15|	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|     15|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|     15|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     15|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     15|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     15|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     15|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15691|       |
15692|       |
15693|     15|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     15|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     15|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15694|     15|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     15|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     15|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     15|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 15, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     15|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     15|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     15|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     15|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     15|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     15|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15694:2): [True: 0, False: 0]
  |  Branch (15694:2): [True: 0, False: 0]
  ------------------
15695|     15|}
zend_execute.c:ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER:
42096|     12|{
42097|     12|	USE_OPLINE
42098|     12|	zval *container;
42099|       |
42100|     12|	SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42101|     12|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42102|       |	/* Unlike FETCH_DIM_R, this may receive references through return-by-ref
42103|       |	 * calls using ??=, i.e. foo()['bar'] ??= baz. */
42104|     12|	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|     12|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     12|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     12|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42105|       |
42106|       |
42107|       |
42108|       |
42109|     12|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     12|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     12|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     12|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 12, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     12|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     12|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     12|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     12|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42109:2): [True: 0, False: 0]
  |  Branch (42109:2): [True: 0, False: 0]
  ------------------
42110|     12|}
zend_execute.c:ZEND_FETCH_DIM_IS_SPEC_CV_TMP_HANDLER:
45931|      5|{
45932|      5|	USE_OPLINE
45933|      5|	zval *container;
45934|       |
45935|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
45936|      5|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45937|       |	/* Unlike FETCH_DIM_R, this may receive references through return-by-ref
45938|       |	 * calls using ??=, i.e. foo()['bar'] ??= baz. */
45939|      5|	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
45940|      5|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
45941|       |
45942|       |
45943|      5|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (45943:2): [True: 0, False: 0]
  |  Branch (45943:2): [True: 0, False: 0]
  ------------------
45944|      5|}
zend_execute.c:ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER:
15873|      1|{
15874|      1|	USE_OPLINE
15875|      1|	zval *container;
15876|      1|	void **cache_slot = NULL;
15877|       |
15878|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15879|      1|	container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15880|       |	/* Unlike FETCH_OBJ_R, this may receive references through return-by-ref
15881|       |	 * calls using ??=, i.e. foo()->bar ??= baz. */
15882|       |
15883|      1|	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15883:6): [Folded, False: 1]
  ------------------
15884|      1|	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (15884:7): [True: 1, Folded]
  ------------------
15885|      0|		do {
15886|      0|			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15886:8): [True: 0, Folded]
  ------------------
15887|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15888|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15889|      0|					break;
15890|      0|				}
15891|      0|			}
15892|      0|			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (15892:8): [Folded, False: 0]
  |  Branch (15892:29): [True: 0, False: 0]
  ------------------
15893|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15894|      0|			}
15895|      0|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15896|      0|			goto fetch_obj_is_finish;
15897|      0|		} while (0);
  ------------------
  |  Branch (15897:12): [Folded, False: 0]
  ------------------
15898|      0|	}
15899|       |
15900|       |	/* here we are sure we are dealing with an object */
15901|      1|	do {
15902|      1|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
15903|      1|		zend_string *name, *tmp_name;
15904|      1|		zval *retval;
15905|       |
15906|      1|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15906:7): [True: 1, Folded]
  ------------------
15907|      1|			cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15908|       |
15909|      1|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
15910|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
15911|       |
15912|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15913|      0|fetch_obj_is_simple:
15914|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
15915|      0|					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15916|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (15916:11): [Folded, False: 0]
  |  Branch (15916:16): [True: 0, Folded]
  ------------------
15917|      0|							goto fetch_obj_is_copy;
15918|      0|						} else {
15919|      0|fetch_obj_is_fast_copy:
15920|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15921|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15921:8): [True: 0, False: 0]
  |  Branch (15921:8): [True: 0, False: 0]
  ------------------
15922|      0|						}
15923|      0|					}
15924|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15925|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15926|      0|						zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
15927|      0|						prop_offset = prop_info->offset;
15928|      0|						goto fetch_obj_is_simple;
15929|      0|					}
15930|       |					/* Fall through to read_property for hooks. */
15931|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15932|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (15932:6): [True: 0, False: 0]
  |  Branch (15932:6): [True: 0, False: 0]
  ------------------
15933|      0|					name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
15934|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (15934:10): [True: 0, False: 0]
  ------------------
15935|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
15936|       |
15937|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15938|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
15939|       |
15940|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15941|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15942|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15943|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15944|      0|								retval = &p->val;
15945|      0|								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (15945:13): [Folded, False: 0]
  |  Branch (15945:18): [True: 0, Folded]
  ------------------
15946|      0|									goto fetch_obj_is_copy;
15947|      0|								} else {
15948|      0|									goto fetch_obj_is_fast_copy;
15949|      0|								}
15950|      0|							}
15951|      0|						}
15952|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15953|      0|					}
15954|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
15955|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15956|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
15957|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15958|      0|						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (15958:11): [Folded, False: 0]
  |  Branch (15958:16): [True: 0, Folded]
  ------------------
15959|      0|							goto fetch_obj_is_copy;
15960|      0|						} else {
15961|      0|							goto fetch_obj_is_fast_copy;
15962|      0|						}
15963|      0|					}
15964|      0|				}
15965|      0|			}
15966|      1|			name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
15967|      1|		} else {
15968|      0|			name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
15969|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15970|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
15971|      0|				break;
15972|      0|			}
15973|      0|		}
15974|       |
15975|      1|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1077|      1|#define BP_VAR_IS			3
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15976|       |
15977|      1|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (15977:7): [Folded, False: 1]
  ------------------
15978|      0|			zend_tmp_string_release(tmp_name);
15979|      0|		}
15980|       |
15981|      1|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (15981:7): [True: 1, False: 0]
  ------------------
15982|      1|fetch_obj_is_copy:
15983|      1|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      1|		zval *_z3 = (v);								\
  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
15984|      1|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
15985|      0|			zend_unwrap_reference(retval);
15986|      0|		}
15987|      1|	} while (0);
  ------------------
  |  Branch (15987:11): [Folded, False: 1]
  ------------------
15988|       |
15989|      1|fetch_obj_is_finish:
15990|       |
15991|       |
15992|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15993|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15993:2): [True: 0, False: 0]
  |  Branch (15993:2): [True: 0, False: 0]
  ------------------
15994|      1|}
zend_execute.c:ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER:
42375|      5|{
42376|      5|	USE_OPLINE
42377|      5|	zval *container;
42378|      5|	void **cache_slot = NULL;
42379|       |
42380|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42381|      5|	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42382|       |	/* Unlike FETCH_OBJ_R, this may receive references through return-by-ref
42383|       |	 * calls using ??=, i.e. foo()->bar ??= baz. */
42384|       |
42385|      5|	if (IS_CV == IS_CONST ||
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST ||
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42385:6): [Folded, False: 5]
  ------------------
42386|      5|	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (42386:7): [True: 5, Folded]
  ------------------
42387|      1|		do {
42388|      1|			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42388:8): [True: 1, Folded]
  ------------------
42389|      0|				container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
42390|      0|				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42391|      0|					break;
42392|      0|				}
42393|      0|			}
42394|      1|			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (IS_CONST == IS_CV && Z_TYPE_P(EX_VAR(opline->op2.var)) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (42394:8): [Folded, False: 1]
  |  Branch (42394:29): [True: 0, False: 0]
  ------------------
42395|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42396|      0|			}
42397|      1|			ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
42398|      1|			goto fetch_obj_is_finish;
42399|      1|		} while (0);
  ------------------
  |  Branch (42399:12): [Folded, False: 0]
  ------------------
42400|      1|	}
42401|       |
42402|       |	/* here we are sure we are dealing with an object */
42403|      4|	do {
42404|      4|		zend_object *zobj = Z_OBJ_P(container);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
42405|      4|		zend_string *name, *tmp_name;
42406|      4|		zval *retval;
42407|       |
42408|      4|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42408:7): [True: 4, Folded]
  ------------------
42409|      4|			cache_slot = CACHE_ADDR(opline->extended_value);
  ------------------
  |  |  524|      4|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42410|       |
42411|      4|			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
42412|      0|				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42413|       |
42414|      0|				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42415|      0|fetch_obj_is_simple:
42416|      0|					retval = OBJ_PROP(zobj, prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
42417|      0|					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42418|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42418:11): [Folded, False: 0]
  |  Branch (42418:16): [Folded, False: 0]
  ------------------
42419|      0|							goto fetch_obj_is_copy;
42420|      0|						} else {
42421|      0|fetch_obj_is_fast_copy:
42422|      0|							ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42423|      0|							ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42423:8): [True: 0, False: 0]
  |  Branch (42423:8): [True: 0, False: 0]
  ------------------
42424|      0|						}
42425|      0|					}
42426|      0|				} else if (UNEXPECTED(IS_HOOKED_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42427|      0|					if (ZEND_IS_PROPERTY_HOOK_SIMPLE_READ(prop_offset)) {
  ------------------
  |  |   50|      0|	(((offset) & ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT) != 0)
  |  |  ------------------
  |  |  |  |   46|      0|#define ZEND_PROPERTY_HOOK_SIMPLE_READ_BIT 2u
  |  |  ------------------
  |  |  |  Branch (50:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42428|      0|						zend_property_info *prop_info = CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42429|      0|						prop_offset = prop_info->offset;
42430|      0|						goto fetch_obj_is_simple;
42431|      0|					}
42432|       |					/* Fall through to read_property for hooks. */
42433|      0|				} else if (EXPECTED(zobj->properties != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42434|      0|					ZEND_ASSERT(IS_DYNAMIC_PROPERTY_OFFSET(prop_offset));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (42434:6): [True: 0, False: 0]
  |  Branch (42434:6): [True: 0, False: 0]
  ------------------
42435|      0|					name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42436|      0|					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
  ------------------
  |  |   77|      0|#define IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(offset) (offset == ZEND_DYNAMIC_PROPERTY_OFFSET)
  |  |  ------------------
  |  |  |  |   34|      0|#define ZEND_DYNAMIC_PROPERTY_OFFSET               ((uintptr_t)(intptr_t)(-1))
  |  |  ------------------
  ------------------
  |  Branch (42436:10): [True: 0, False: 0]
  ------------------
42437|      0|						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
  ------------------
  |  |   78|      0|#define ZEND_DECODE_DYN_PROP_OFFSET(offset)        ((uintptr_t)(-(intptr_t)(offset) - 2))
  ------------------
42438|       |
42439|      0|						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42440|      0|							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
42441|       |
42442|      0|							if (EXPECTED(p->key == name) ||
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42443|      0|							    (EXPECTED(p->h == ZSTR_H(name)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42444|      0|							     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42445|      0|							     EXPECTED(zend_string_equal_content(p->key, name)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42446|      0|								retval = &p->val;
42447|      0|								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              								if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42447:13): [Folded, False: 0]
  |  Branch (42447:18): [Folded, False: 0]
  ------------------
42448|      0|									goto fetch_obj_is_copy;
42449|      0|								} else {
42450|      0|									goto fetch_obj_is_fast_copy;
42451|      0|								}
42452|      0|							}
42453|      0|						}
42454|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42455|      0|					}
42456|      0|					retval = zend_hash_find_known_hash(zobj->properties, name);
42457|      0|					if (EXPECTED(retval)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42458|      0|						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
42459|      0|						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
  ------------------
  |  |  547|      0|#define CACHE_PTR_EX(slot, ptr) do { \
  |  |  548|      0|		(slot)[0] = (ptr); \
  |  |  549|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (549:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42460|      0|						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (0 || (IS_CV & (IS_TMP_VAR|IS_VAR)) != 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42460:11): [Folded, False: 0]
  |  Branch (42460:16): [Folded, False: 0]
  ------------------
42461|      0|							goto fetch_obj_is_copy;
42462|      0|						} else {
42463|      0|							goto fetch_obj_is_fast_copy;
42464|      0|						}
42465|      0|					}
42466|      0|				}
42467|      0|			}
42468|      4|			name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
42469|      4|		} else {
42470|      0|			name = zval_try_get_tmp_string(RT_CONSTANT(opline, opline->op2), &tmp_name);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42471|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42472|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42473|      0|				break;
42474|      0|			}
42475|      0|		}
42476|       |
42477|      4|		retval = zobj->handlers->read_property(zobj, name, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  | 1077|      4|#define BP_VAR_IS			3
  ------------------
              		retval = zobj->handlers->read_property(zobj, name, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42478|       |
42479|      4|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42479:7): [Folded, False: 4]
  ------------------
42480|      0|			zend_tmp_string_release(tmp_name);
42481|      0|		}
42482|       |
42483|      4|		if (retval != EX_VAR(opline->result.var)) {
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
  |  Branch (42483:7): [True: 4, False: 0]
  ------------------
42484|      4|fetch_obj_is_copy:
42485|      4|			ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
  ------------------
  |  | 1508|      4|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      4|		zval *_z3 = (v);								\
  |  | 1510|      4|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      1|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      1|				}										\
  |  | 1516|      1|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      1|		}												\
  |  | 1520|      4|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      4|	do {												\
  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
42486|      4|		} else if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42487|      0|			zend_unwrap_reference(retval);
42488|      0|		}
42489|      4|	} while (0);
  ------------------
  |  Branch (42489:11): [Folded, False: 4]
  ------------------
42490|       |
42491|      5|fetch_obj_is_finish:
42492|       |
42493|       |
42494|       |
42495|       |
42496|      5|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42496:2): [True: 0, False: 0]
  |  Branch (42496:2): [True: 0, False: 0]
  ------------------
42497|      5|}
zend_execute.c:ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER:
48598|      1|{
48599|      1|	int fetch_type =
48600|      1|		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  ------------------
  |  Branch (48600:3): [True: 0, False: 1]
  ------------------
48601|      1|			BP_VAR_W : BP_VAR_R;
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
              			BP_VAR_W : BP_VAR_R;
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
48602|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CV_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX fetch_type));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
48603|      1|}
zend_execute.c:ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER:
 6886|      1|{
 6887|       |#if 0
 6888|       |	USE_OPLINE
 6889|       |#endif
 6890|       |
 6891|      1|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 6892|      1|		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (6892:7): [True: 1, Folded]
  ------------------
 6893|      1|			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 6894|      1|		}
 6895|      1|		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 6896|      1|	} else {
 6897|      0|		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (6897:7): [Folded, False: 0]
  ------------------
 6898|      0|			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 6899|      0|		}
 6900|      0|		if (IS_CONST & IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (6900:7): [Folded, False: 0]
  ------------------
 6901|      0|			zval *op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 6902|      0|			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (6902:8): [True: 0, False: 0]
  ------------------
 6903|      0|				zend_unwrap_reference(op1);
 6904|      0|			}
 6905|      0|		}
 6906|      0|		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 6907|      0|	}
 6908|      1|}
zend_execute.c:zend_use_tmp_in_write_context_helper_SPEC:
  965|      2|{
  966|      2|	USE_OPLINE
  967|       |
  968|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  969|      2|	zend_throw_error(NULL, "Cannot use temporary expression in write context");
  970|      2|	FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
  971|      2|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
  972|      2|	ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  973|      2|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (973:2): [True: 0, False: 2]
  |  Branch (973:2): [True: 2, False: 0]
  ------------------
  974|      2|}
zend_execute.c:zend_use_undef_in_read_context_helper_SPEC:
  977|      1|{
  978|      1|	USE_OPLINE
  979|       |
  980|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  981|      1|	zend_throw_error(NULL, "Cannot use [] for reading");
  982|      1|	FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|      1|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 1]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
  983|      1|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      1|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 1]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
  984|      1|	ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  985|      1|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (985:2): [True: 0, False: 1]
  |  Branch (985:2): [True: 1, False: 0]
  ------------------
  986|      1|}
zend_execute.c:ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER:
48649|      1|{
48650|       |#if 0
48651|       |	USE_OPLINE
48652|       |#endif
48653|       |
48654|      1|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
48655|      0|		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (48655:7): [Folded, False: 0]
  ------------------
48656|      0|			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
48657|      0|		}
48658|      0|		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
48659|      1|	} else {
48660|      1|		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48660:7): [True: 1, Folded]
  ------------------
48661|      1|			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
48662|      1|		}
48663|      0|		if (IS_CV & IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (48663:7): [Folded, False: 0]
  ------------------
48664|      0|			zval *op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48665|      0|			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (48665:8): [True: 0, False: 0]
  ------------------
48666|      0|				zend_unwrap_reference(op1);
48667|      0|			}
48668|      0|		}
48669|      0|		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
48670|      1|	}
48671|      1|}
zend_execute.c:ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER:
 7212|      1|{
 7213|       |#if 0
 7214|       |	USE_OPLINE
 7215|       |#endif
 7216|       |
 7217|      1|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 7218|       |		/* Behave like FETCH_OBJ_W */
 7219|      1|		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (7219:7): [True: 1, Folded]
  ------------------
 7220|      1|			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 7221|      1|		}
 7222|      1|		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 7223|      1|	} else {
 7224|      0|		if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (7224:7): [Folded, False: 0]
  ------------------
 7225|      0|			zval *op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 7226|      0|			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (7226:8): [True: 0, False: 0]
  ------------------
 7227|      0|				zend_unwrap_reference(op1);
 7228|      0|			}
 7229|      0|		}
 7230|      0|		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 7231|      0|	}
 7232|      1|}
zend_execute.c:ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER:
42500|      3|{
42501|       |#if 0
42502|       |	USE_OPLINE
42503|       |#endif
42504|       |
42505|      3|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
42506|       |		/* Behave like FETCH_OBJ_W */
42507|      3|		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (42507:7): [Folded, False: 3]
  ------------------
42508|      0|			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
42509|      0|		}
42510|      3|		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
42511|      3|	} else {
42512|      0|		if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42512:7): [Folded, False: 0]
  ------------------
42513|      0|			zval *op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42514|      0|			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (42514:8): [True: 0, False: 0]
  ------------------
42515|      0|				zend_unwrap_reference(op1);
42516|      0|			}
42517|      0|		}
42518|      0|		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
42519|      0|	}
42520|      3|}
zend_execute.c:ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER:
11023|      1|{
11024|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_UNSET));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
11025|      1|}
zend_execute.c:ZEND_FETCH_UNSET_SPEC_TMP_UNUSED_HANDLER:
21470|      1|{
21471|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_var_address_helper_SPEC_TMP_UNUSED(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_UNSET));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
21472|      1|}
zend_execute.c:ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER:
24319|      3|{
24320|      3|	USE_OPLINE
24321|      3|	zval *container;
24322|       |
24323|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24324|      3|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24325|      3|	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24326|       |
24327|       |
24328|      3|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24328:6): [True: 3, Folded]
  ------------------
24329|      3|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      3|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      3|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      3|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
24330|      3|	}
24331|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24331:2): [True: 0, False: 0]
  |  Branch (24331:2): [True: 0, False: 0]
  ------------------
24332|      3|}
zend_execute.c:ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER:
30851|      2|{
30852|      2|	USE_OPLINE
30853|      2|	zval *container;
30854|       |
30855|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30856|      2|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30857|      2|	zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30858|       |
30859|       |
30860|      2|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (30860:6): [True: 2, Folded]
  ------------------
30861|      2|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      2|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      2|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      2|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
30862|      2|	}
30863|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30863:2): [True: 0, False: 0]
  |  Branch (30863:2): [True: 0, False: 0]
  ------------------
30864|      2|}
zend_execute.c:ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER:
42138|      3|{
42139|      3|	USE_OPLINE
42140|      3|	zval *container;
42141|       |
42142|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42143|      3|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42144|      3|	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42145|       |
42146|       |
42147|      3|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42147:6): [Folded, False: 3]
  ------------------
42148|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42149|      0|	}
42150|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42150:2): [True: 0, False: 0]
  |  Branch (42150:2): [True: 0, False: 0]
  ------------------
42151|      3|}
zend_execute.c:ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER:
24398|      6|{
24399|      6|	USE_OPLINE
24400|      6|	zval *container, *property, *result;
24401|       |
24402|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24403|      6|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24404|      6|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24405|      6|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
24406|      6|	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  524|      6|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1079|      6|#define BP_VAR_UNSET		5
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      6|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      6|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (24406:78): [True: 6, Folded]
  ------------------
24407|       |
24408|       |
24409|      6|	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24409:6): [True: 6, Folded]
  ------------------
24410|      6|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      6|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      6|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      6|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      2|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      2|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      2|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      2|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      2|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      2|	do {												\
  |  |  |  | 1426|      2|		zval *_z1 = (z);								\
  |  |  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      1|		}												\
  |  |  |  | 1434|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      2|			}																\
  |  |  171|      2|			rc_dtor_func(__ref);											\
  |  |  172|      2|		}																	\
  |  |  173|      2|	}																		\
  |  |  174|      6|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
24411|      6|	}
24412|      6|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      6|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      6|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24412:2): [True: 0, False: 0]
  |  Branch (24412:2): [True: 0, False: 0]
  ------------------
24413|      6|}
zend_execute.c:ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER:
42523|      5|{
42524|      5|	USE_OPLINE
42525|      5|	zval *container, *property, *result;
42526|       |
42527|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
42528|      5|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42529|      5|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
42530|      5|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
42531|      5|	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  524|      5|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1079|      5|#define BP_VAR_UNSET		5
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      5|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      5|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (42531:77): [True: 5, Folded]
  ------------------
42532|       |
42533|       |
42534|      5|	if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (42534:6): [Folded, False: 5]
  ------------------
42535|      0|		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var);
  ------------------
  |  |  162|      0|#define FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_var) do {			\
  |  |  163|      0|	zval *__container_to_free = EX_VAR(free_var);							\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  164|      0|	if (UNEXPECTED(Z_REFCOUNTED_P(__container_to_free))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|      0|		zend_refcounted *__ref = Z_COUNTED_P(__container_to_free);			\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  166|      0|		if (UNEXPECTED(!GC_DELREF(__ref))) {								\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  167|      0|			zval *__zv = EX_VAR(opline->result.var);						\
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|      0|			if (EXPECTED(Z_TYPE_P(__zv) == IS_INDIRECT)) {					\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  169|      0|				ZVAL_COPY(__zv, Z_INDIRECT_P(__zv));						\
  |  |  ------------------
  |  |  |  | 1425|      0|	do {												\
  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1433|      0|		}												\
  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  170|      0|			}																\
  |  |  171|      0|			rc_dtor_func(__ref);											\
  |  |  172|      0|		}																	\
  |  |  173|      0|	}																		\
  |  |  174|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (174:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
42536|      0|	}
42537|      5|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42537:2): [True: 0, False: 0]
  |  Branch (42537:2): [True: 0, False: 0]
  ------------------
42538|      5|}
zend_execute.c:ZEND_FETCH_LIST_R_SPEC_CONST_CONST_HANDLER:
 7235|     18|{
 7236|     18|	USE_OPLINE
 7237|     18|	zval *container;
 7238|       |
 7239|     18|	SAVE_OPLINE();
  ------------------
  |  |  428|     18|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7240|     18|	container = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     18|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7241|     18|	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|     18|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|     18|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     18|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     18|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     18|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     18|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 7242|       |
 7243|       |
 7244|     18|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     18|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     18|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     18|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 18, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     18|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     18|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     18|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     18|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7244:2): [True: 0, False: 0]
  |  Branch (7244:2): [True: 0, False: 0]
  ------------------
 7245|     18|}
zend_execute.c:ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER:
14069|     67|{
14070|     67|	USE_OPLINE
14071|     67|	zval *container;
14072|       |
14073|     67|	SAVE_OPLINE();
  ------------------
  |  |  428|     67|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     67|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
14074|     67|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     67|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     67|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14075|     67|	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|     67|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|     67|#define IS_CONST	(1<<0)
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     67|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     67|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     67|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     67|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
14076|       |
14077|       |
14078|     67|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     67|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     67|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     67|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 67, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     67|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     67|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     67|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     67|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     67|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     67|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14078:2): [True: 0, False: 0]
  |  Branch (14078:2): [True: 0, False: 0]
  ------------------
14079|     67|}
zend_execute.c:ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMP_HANDLER:
15572|      8|{
15573|      8|	USE_OPLINE
15574|      8|	zval *container;
15575|       |
15576|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15577|      8|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15578|      8|	zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      8|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      8|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC), IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
15579|      8|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15580|      8|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15580:2): [True: 0, False: 0]
  |  Branch (15580:2): [True: 0, False: 0]
  ------------------
15581|      8|}
zend_execute.c:ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER:
34466|    572|{
34467|    572|	USE_OPLINE
34468|    572|	zend_constant *c;
34469|       |
34470|    572|	c = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|    572|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    572|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34471|    572|	if (EXPECTED(c != NULL) && EXPECTED(!IS_SPECIAL_CACHE_VAL(c))) {
  ------------------
  |  |  456|  1.14k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 76, False: 496]
  |  |  ------------------
  ------------------
              	if (EXPECTED(c != NULL) && EXPECTED(!IS_SPECIAL_CACHE_VAL(c))) {
  ------------------
  |  |  456|     76|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 76, False: 0]
  |  |  ------------------
  ------------------
34472|     76|		ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value);
  ------------------
  |  | 1457|     76|	do {																\
  |  | 1458|     76|		zval *_z1 = (z);												\
  |  | 1459|     76|		const zval *_z2 = (v);											\
  |  | 1460|     76|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     76|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     76|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     76|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     76|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     76|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     76|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     76|	do {												\
  |  |  |  | 1408|     76|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     76|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     76|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     76|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     76|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     76|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     76|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 76]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     76|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     76|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     76|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 76]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|     76|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 76]
  |  |  ------------------
  ------------------
34473|     76|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     76|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     76|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     76|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 76]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     76|	} else { \
  |  |  |  | 5761|     76|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     76|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     76|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     76|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     76|	} \
  |  |  |  | 5764|     76|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     76|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34473:3): [True: 0, False: 76]
  |  Branch (34473:3): [True: 76, False: 0]
  ------------------
34474|     76|	}
34475|       |
34476|    572|	SAVE_OPLINE();
  ------------------
  |  |  428|    496|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    496|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34477|    496|	zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  841|    496|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|    496|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|    496|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|    496|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    496|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34478|    496|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    496|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    496|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    496|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 496, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    496|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    496|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    496|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    496|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    496|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    496|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34478:2): [True: 0, False: 0]
  |  Branch (34478:2): [True: 0, False: 0]
  ------------------
34479|    496|}
zend_execute.c:ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER:
34434|      1|{
34435|      1|	USE_OPLINE
34436|      1|	uint32_t arg_num;
34437|       |
34438|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34438:6): [True: 1, Folded]
  ------------------
34439|      1|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
34440|      1|		arg_num = zend_get_arg_offset_by_name(
34441|      1|			EX(call)->func, arg_name, CACHE_ADDR(opline->result.num)) + 1;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              			EX(call)->func, arg_name, CACHE_ADDR(opline->result.num)) + 1;
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34442|      1|		if (UNEXPECTED(arg_num == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34443|       |			/* Treat this as a by-value argument, and throw an error during SEND. */
34444|      0|			ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  707|      0|#define ZEND_DEL_CALL_FLAG(call, flag) do { \
  |  |  708|      0|		ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  699|      0|#define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  700|      0|		call_info &= ~(flag); \
  |  |  |  |  701|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (701:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  709|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (709:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34445|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34445:4): [True: 0, False: 0]
  |  Branch (34445:4): [True: 0, False: 0]
  ------------------
34446|      0|		}
34447|      1|	} else {
34448|      0|		arg_num = opline->op2.num;
34449|      0|	}
34450|       |
34451|      1|	if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
34452|      1|		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1193|      1|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|      1|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
34453|      0|			ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  703|      0|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      0|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      0|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      0|		call_info |= (flag); \
  |  |  |  |  697|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34454|      1|		} else {
34455|      1|			ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  707|      1|#define ZEND_DEL_CALL_FLAG(call, flag) do { \
  |  |  708|      1|		ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  699|      1|#define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  700|      1|		call_info &= ~(flag); \
  |  |  |  |  701|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (701:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  709|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (709:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
34456|      1|		}
34457|      1|	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34458|      0|		ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  703|      0|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      0|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      0|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      0|		call_info |= (flag); \
  |  |  |  |  697|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34459|      0|	} else {
34460|      0|		ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  707|      0|#define ZEND_DEL_CALL_FLAG(call, flag) do { \
  |  |  708|      0|		ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  699|      0|#define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  700|      0|		call_info &= ~(flag); \
  |  |  |  |  701|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (701:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  709|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (709:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34461|      0|	}
34462|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34462:2): [True: 0, False: 1]
  |  Branch (34462:2): [True: 1, False: 0]
  ------------------
34463|      1|}
zend_execute.c:ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_UNUSED_QUICK_HANDLER:
37044|     10|{
37045|     10|	USE_OPLINE
37046|     10|	uint32_t arg_num;
37047|       |
37048|     10|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37048:6): [Folded, False: 10]
  ------------------
37049|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
37050|      0|		arg_num = zend_get_arg_offset_by_name(
37051|      0|			EX(call)->func, arg_name, CACHE_ADDR(opline->result.num)) + 1;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              			EX(call)->func, arg_name, CACHE_ADDR(opline->result.num)) + 1;
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37052|      0|		if (UNEXPECTED(arg_num == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37053|       |			/* Treat this as a by-value argument, and throw an error during SEND. */
37054|      0|			ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  707|      0|#define ZEND_DEL_CALL_FLAG(call, flag) do { \
  |  |  708|      0|		ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  699|      0|#define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  700|      0|		call_info &= ~(flag); \
  |  |  |  |  701|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (701:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  709|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (709:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37055|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37055:4): [True: 0, False: 0]
  |  Branch (37055:4): [True: 0, False: 0]
  ------------------
37056|      0|		}
37057|     10|	} else {
37058|     10|		arg_num = opline->op2.num;
37059|     10|	}
37060|       |
37061|     10|	if (EXPECTED(1)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, Folded]
  |  |  ------------------
  ------------------
37062|     10|		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1193|     10|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1186|     10|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 5, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37063|      5|			ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  703|      5|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      5|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      5|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      5|		call_info |= (flag); \
  |  |  |  |  697|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
37064|      5|		} else {
37065|      5|			ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  707|      5|#define ZEND_DEL_CALL_FLAG(call, flag) do { \
  |  |  708|      5|		ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  699|      5|#define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  700|      5|		call_info &= ~(flag); \
  |  |  |  |  701|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (701:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  709|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (709:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
37066|      5|		}
37067|     10|	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37068|      0|		ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  703|      0|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      0|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      0|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      0|		call_info |= (flag); \
  |  |  |  |  697|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37069|      0|	} else {
37070|      0|		ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
  ------------------
  |  |  707|      0|#define ZEND_DEL_CALL_FLAG(call, flag) do { \
  |  |  708|      0|		ZEND_DEL_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  699|      0|#define ZEND_DEL_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  700|      0|		call_info &= ~(flag); \
  |  |  |  |  701|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (701:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  709|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (709:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37071|      0|	}
37072|     10|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     10|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     10|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     10|	} else { \
  |  |  |  | 5761|     10|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     10|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     10|	} \
  |  |  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37072:2): [True: 0, False: 10]
  |  Branch (37072:2): [True: 10, False: 0]
  ------------------
37073|     10|}
zend_execute.c:ZEND_TICKS_SPEC_HANDLER:
 3291|     18|{
 3292|     18|	USE_OPLINE
 3293|       |
 3294|     18|	if (++EG(ticks_count) >= opline->extended_value) {
  ------------------
  |  |   45|     18|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3294:6): [True: 18, False: 0]
  ------------------
 3295|     18|		EG(ticks_count) = 0;
  ------------------
  |  |   45|     18|# define EG(v) (executor_globals.v)
  ------------------
 3296|     18|		if (zend_ticks_function) {
  ------------------
  |  Branch (3296:7): [True: 18, False: 0]
  ------------------
 3297|     18|			SAVE_OPLINE();
  ------------------
  |  |  428|     18|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3298|     18|			zend_fiber_switch_block();
 3299|     18|			zend_ticks_function(opline->extended_value);
 3300|     18|			zend_fiber_switch_unblock();
 3301|     18|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     18|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     18|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     18|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 18, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     18|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     18|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     18|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     18|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3301:4): [True: 0, False: 0]
  |  Branch (3301:4): [True: 0, False: 0]
  ------------------
 3302|     18|		}
 3303|     18|	}
 3304|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     18|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3304:2): [True: 0, False: 0]
  |  Branch (3304:2): [True: 0, False: 0]
  ------------------
 3305|      0|}
zend_execute.c:ZEND_CATCH_SPEC_CONST_HANDLER:
 5167|    591|{
 5168|    591|	USE_OPLINE
 5169|    591|	zend_class_entry *ce, *catch_ce;
 5170|    591|	zend_object *exception;
 5171|       |
 5172|    591|	SAVE_OPLINE();
  ------------------
  |  |  428|    591|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    591|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5173|       |	/* Check whether an exception has been thrown, if not, jump over code */
 5174|    591|	if (EG(exception) == NULL) {
  ------------------
  |  |   45|    591|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (5174:6): [True: 0, False: 591]
  ------------------
 5175|      0|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5175:3): [True: 0, False: 0]
  |  Branch (5175:3): [True: 0, False: 0]
  ------------------
 5176|      0|	}
 5177|    591|	catch_ce = CACHED_PTR(opline->extended_value & ~ZEND_LAST_CATCH);
  ------------------
  |  |  527|    591|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    591|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5178|    591|	if (UNEXPECTED(catch_ce == NULL)) {
  ------------------
  |  |  457|    591|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 149, False: 442]
  |  |  ------------------
  ------------------
 5179|    149|		catch_ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  |  982|    149|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    149|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		catch_ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  |  982|    149|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    149|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		catch_ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1050|    149|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
              		catch_ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD | ZEND_FETCH_CLASS_SILENT);
  ------------------
  |  | 1051|    149|#define ZEND_FETCH_CLASS_SILENT      0x0100
  ------------------
 5180|       |
 5181|    149|		CACHE_PTR(opline->extended_value & ~ZEND_LAST_CATCH, catch_ce);
  ------------------
  |  |  529|    149|#define CACHE_PTR(num, ptr) do { \
  |  |  530|    149|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|    149|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|    149|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 149]
  |  |  ------------------
  ------------------
 5182|    149|	}
 5183|    591|	ce = EG(exception)->ce;
  ------------------
  |  |   45|    591|# define EG(v) (executor_globals.v)
  ------------------
 5184|       |
 5185|       |#ifdef HAVE_DTRACE
 5186|       |	if (DTRACE_EXCEPTION_CAUGHT_ENABLED()) {
 5187|       |		DTRACE_EXCEPTION_CAUGHT((char *)ce->name);
 5188|       |	}
 5189|       |#endif /* HAVE_DTRACE */
 5190|       |
 5191|    591|	if (ce != catch_ce) {
  ------------------
  |  Branch (5191:6): [True: 497, False: 94]
  ------------------
 5192|    497|		if (!catch_ce || !instanceof_function(ce, catch_ce)) {
  ------------------
  |  Branch (5192:7): [True: 13, False: 484]
  |  Branch (5192:20): [True: 5, False: 479]
  ------------------
 5193|     18|			if (opline->extended_value & ZEND_LAST_CATCH) {
  ------------------
  |  | 1110|     18|#define ZEND_LAST_CATCH			(1<<0)
  ------------------
  |  Branch (5193:8): [True: 18, False: 0]
  ------------------
 5194|     18|				zend_rethrow_exception(execute_data);
 5195|     18|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|     18|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     18|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5195:5): [True: 0, False: 18]
  |  Branch (5195:5): [True: 18, False: 0]
  ------------------
 5196|     18|			}
 5197|      0|			ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5197:4): [True: 0, False: 0]
  |  Branch (5197:4): [True: 0, False: 0]
  ------------------
 5198|      0|		}
 5199|    497|	}
 5200|       |
 5201|    573|	exception = EG(exception);
  ------------------
  |  |   45|    573|# define EG(v) (executor_globals.v)
  ------------------
 5202|    573|	EG(exception) = NULL;
  ------------------
  |  |   45|    573|# define EG(v) (executor_globals.v)
  ------------------
 5203|    573|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|    573|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|    573|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 145, False: 428]
  |  |  ------------------
  ------------------
 5204|       |		/* Always perform a strict assignment. There is a reasonable expectation that if you
 5205|       |		 * write "catch (Exception $e)" then $e will actually be instanceof Exception. As such,
 5206|       |		 * we should not permit coercion to string here. */
 5207|    145|		zval tmp;
 5208|    145|		ZVAL_OBJ(&tmp, exception);
  ------------------
  |  | 1140|    145|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|    145|		zval *__z = (z);						\
  |  | 1142|    145|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|    145|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    145|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|    145|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|    145|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    145|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|    145|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    145|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    145|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    145|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    145|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    145|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|    145|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 145]
  |  |  ------------------
  ------------------
 5209|    145|		zend_assign_to_variable(EX_VAR(opline->result.var), &tmp, IS_TMP_VAR, /* strict */ 1);
  ------------------
  |  |  755|    145|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    145|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
              		zend_assign_to_variable(EX_VAR(opline->result.var), &tmp, IS_TMP_VAR, /* strict */ 1);
  ------------------
  |  |  865|    145|#define IS_TMP_VAR	(1<<1)
  ------------------
 5210|    428|	} else {
 5211|    428|		OBJ_RELEASE(exception);
  ------------------
  |  |   44|    428|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 5212|    428|	}
 5213|    573|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    573|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    573|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    573|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 573, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    573|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    573|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    573|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    573|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    573|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    573|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5213:2): [True: 0, False: 0]
  |  Branch (5213:2): [True: 0, False: 0]
  ------------------
 5214|    573|}
zend_execute.c:ZEND_THROW_SPEC_CONST_HANDLER:
 5131|      1|{
 5132|      1|	USE_OPLINE
 5133|      1|	zval *value;
 5134|       |
 5135|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5136|      1|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5137|       |
 5138|      1|	do {
 5139|      1|		if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5139:7): [True: 1, Folded]
  ------------------
 5140|      1|			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5140:8): [Folded, False: 1]
  ------------------
 5141|      0|				value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5142|      0|				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5143|      0|					break;
 5144|      0|				}
 5145|      0|			}
 5146|      1|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5146:8): [Folded, False: 1]
  ------------------
 5147|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5148|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5149|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5149:6): [True: 0, False: 0]
  |  Branch (5149:6): [True: 0, False: 0]
  ------------------
 5150|      0|				}
 5151|      0|			}
 5152|      1|			zend_throw_error(NULL, "Can only throw objects");
 5153|       |
 5154|       |
 5155|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5155:4): [True: 0, False: 1]
  |  Branch (5155:4): [True: 1, False: 0]
  ------------------
 5156|      1|		}
 5157|      1|	} while (0);
  ------------------
  |  Branch (5157:11): [Folded, False: 0]
  ------------------
 5158|       |
 5159|      0|	Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5160|      0|	zend_throw_exception_object(value);
 5161|       |
 5162|       |
 5163|      0|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5163:2): [True: 0, False: 0]
  |  Branch (5163:2): [True: 0, False: 0]
  ------------------
 5164|      0|}
zend_execute.c:ZEND_THROW_SPEC_TMP_HANDLER:
17308|     48|{
17309|     48|	USE_OPLINE
17310|     48|	zval *value;
17311|       |
17312|     48|	SAVE_OPLINE();
  ------------------
  |  |  428|     48|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     48|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17313|     48|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     48|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     48|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17314|       |
17315|     48|	do {
17316|     48|		if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  865|     48|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  864|     96|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  457|     48|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 48]
  |  |  ------------------
  ------------------
  |  Branch (17316:7): [Folded, False: 48]
  ------------------
17317|      0|			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17317:8): [Folded, False: 0]
  ------------------
17318|      0|				value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17319|      0|				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17320|      0|					break;
17321|      0|				}
17322|      0|			}
17323|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17323:8): [Folded, False: 0]
  ------------------
17324|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17325|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17326|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17326:6): [True: 0, False: 0]
  |  Branch (17326:6): [True: 0, False: 0]
  ------------------
17327|      0|				}
17328|      0|			}
17329|      0|			zend_throw_error(NULL, "Can only throw objects");
17330|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17331|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17331:4): [True: 0, False: 0]
  |  Branch (17331:4): [True: 0, False: 0]
  ------------------
17332|      0|		}
17333|     48|	} while (0);
  ------------------
  |  Branch (17333:11): [Folded, False: 48]
  ------------------
17334|       |
17335|     48|	Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|     48|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     48|	zval *_pz = (pz);				\
  |  | 1287|     48|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     48|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     48|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     48|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 48, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|     48|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|     48|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|     48|	}								\
  |  | 1290|     48|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 48]
  |  |  ------------------
  ------------------
17336|     48|	zend_throw_exception_object(value);
17337|     48|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     48|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     48|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17338|     48|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|     48|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     48|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     48|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     48|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     48|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17338:2): [True: 0, False: 48]
  |  Branch (17338:2): [True: 48, False: 0]
  ------------------
17339|     48|}
zend_execute.c:ZEND_THROW_SPEC_CV_HANDLER:
39975|      3|{
39976|      3|	USE_OPLINE
39977|      3|	zval *value;
39978|       |
39979|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39980|      3|	value = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39981|       |
39982|      3|	do {
39983|      3|		if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (39983:7): [Folded, False: 3]
  ------------------
39984|      2|			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39984:8): [True: 2, Folded]
  ------------------
39985|      2|				value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39986|      2|				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
39987|      1|					break;
39988|      1|				}
39989|      2|			}
39990|      1|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (39990:8): [True: 1, Folded]
  ------------------
39991|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39992|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
39993|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (39993:6): [True: 0, False: 0]
  |  Branch (39993:6): [True: 0, False: 0]
  ------------------
39994|      0|				}
39995|      0|			}
39996|      1|			zend_throw_error(NULL, "Can only throw objects");
39997|       |
39998|       |
39999|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (39999:4): [True: 0, False: 1]
  |  Branch (39999:4): [True: 1, False: 0]
  ------------------
40000|      1|		}
40001|      3|	} while (0);
  ------------------
  |  Branch (40001:11): [Folded, False: 1]
  ------------------
40002|       |
40003|      2|	Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
40004|      2|	zend_throw_exception_object(value);
40005|       |
40006|       |
40007|      2|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40007:2): [True: 0, False: 2]
  |  Branch (40007:2): [True: 2, False: 0]
  ------------------
40008|      2|}
zend_execute.c:ZEND_FETCH_CLASS_SPEC_UNUSED_TMP_HANDLER:
36182|     42|{
36183|     42|	zval *class_name;
36184|     42|	USE_OPLINE
36185|       |
36186|     42|	SAVE_OPLINE();
  ------------------
  |  |  428|     42|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     42|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36187|     42|	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|     42|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|     42|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (36187:6): [Folded, False: 42]
  ------------------
36188|      0|		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->op1.num);
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
36189|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36189:3): [True: 0, False: 0]
  |  Branch (36189:3): [True: 0, False: 0]
  ------------------
36190|     42|	} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     42|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     42|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36190:13): [Folded, False: 42]
  ------------------
36191|      0|		zend_class_entry *ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36192|       |
36193|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36194|      0|			class_name = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36195|      0|			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), opline->op1.num);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), opline->op1.num);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36196|      0|			CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
36197|      0|		}
36198|      0|		Z_CE_P(EX_VAR(opline->result.var)) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
36199|     42|	} else {
36200|     42|		class_name = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     42|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     42|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36201|     42|try_class_name:
36202|     42|		if (Z_TYPE_P(class_name) == IS_OBJECT) {
  ------------------
  |  |  669|     42|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     42|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(class_name) == IS_OBJECT) {
  ------------------
  |  |  614|     42|#define IS_OBJECT					8
  ------------------
  |  Branch (36202:7): [True: 2, False: 40]
  ------------------
36203|      2|			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
  ------------------
  |  | 1047|      2|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      2|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
              			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
  ------------------
  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
36204|     40|		} else if (Z_TYPE_P(class_name) == IS_STRING) {
  ------------------
  |  |  669|     40|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     40|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(class_name) == IS_STRING) {
  ------------------
  |  |  612|     40|#define IS_STRING					6
  ------------------
  |  Branch (36204:14): [True: 14, False: 26]
  ------------------
36205|     14|			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
  ------------------
  |  | 1047|     14|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|     14|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
              			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
  ------------------
  |  |  982|     14|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     14|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36206|     26|		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  865|     26|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  866|     26|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  867|     26|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (36206:14): [Folded, False: 26]
  |  Branch (36206:47): [True: 0, False: 0]
  ------------------
36207|      0|			class_name = Z_REFVAL_P(class_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
36208|      0|			goto try_class_name;
36209|     26|		} else {
36210|     26|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
  ------------------
  |  |  865|     26|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
  ------------------
  |  |  867|     52|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (36210:8): [Folded, False: 26]
  ------------------
36211|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36212|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36213|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36213:6): [True: 0, False: 0]
  |  Branch (36213:6): [True: 0, False: 0]
  ------------------
36214|      0|				}
36215|      0|			}
36216|     26|			zend_throw_error(NULL, "Class name must be a valid object or a string");
36217|     26|		}
36218|     42|	}
36219|       |
36220|     42|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     42|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     42|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
36221|     42|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     42|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     42|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     42|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 42, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     42|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     42|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     42|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     42|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     42|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     42|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36221:2): [True: 0, False: 0]
  |  Branch (36221:2): [True: 0, False: 0]
  ------------------
36222|     42|}
zend_execute.c:ZEND_FETCH_CLASS_SPEC_UNUSED_CV_HANDLER:
38757|    436|{
38758|    436|	zval *class_name;
38759|    436|	USE_OPLINE
38760|       |
38761|    436|	SAVE_OPLINE();
  ------------------
  |  |  428|    436|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    436|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
38762|    436|	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|    436|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|    436|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (38762:6): [Folded, False: 436]
  ------------------
38763|      0|		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->op1.num);
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
38764|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (38764:3): [True: 0, False: 0]
  |  Branch (38764:3): [True: 0, False: 0]
  ------------------
38765|    436|	} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    436|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    436|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (38765:13): [Folded, False: 436]
  ------------------
38766|      0|		zend_class_entry *ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
38767|       |
38768|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
38769|      0|			class_name = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
38770|      0|			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), opline->op1.num);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), opline->op1.num);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38771|      0|			CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
38772|      0|		}
38773|      0|		Z_CE_P(EX_VAR(opline->result.var)) = ce;
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
38774|    436|	} else {
38775|    436|		class_name = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    436|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    436|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
38776|    436|try_class_name:
38777|    436|		if (Z_TYPE_P(class_name) == IS_OBJECT) {
  ------------------
  |  |  669|    436|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    436|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(class_name) == IS_OBJECT) {
  ------------------
  |  |  614|    436|#define IS_OBJECT					8
  ------------------
  |  Branch (38777:7): [True: 1, False: 435]
  ------------------
38778|      1|			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
  ------------------
  |  | 1047|      1|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      1|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
              			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38779|    435|		} else if (Z_TYPE_P(class_name) == IS_STRING) {
  ------------------
  |  |  669|    435|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    435|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(class_name) == IS_STRING) {
  ------------------
  |  |  612|    435|#define IS_STRING					6
  ------------------
  |  Branch (38779:14): [True: 277, False: 158]
  ------------------
38780|    277|			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
  ------------------
  |  | 1047|    277|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|    277|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
              			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
  ------------------
  |  |  982|    277|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    277|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
38781|    277|		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  867|    158|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  866|    158|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  867|    158|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  669|    158|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    158|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
  ------------------
  |  |  616|    158|#define IS_REFERENCE				10
  ------------------
  |  Branch (38781:14): [True: 158, Folded]
  |  Branch (38781:42): [True: 0, False: 158]
  ------------------
38782|      0|			class_name = Z_REFVAL_P(class_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
38783|      0|			goto try_class_name;
38784|    158|		} else {
38785|    158|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
  ------------------
  |  |  867|    158|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
  ------------------
  |  |  867|    316|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
  ------------------
  |  |  457|    158|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 158, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (38785:8): [True: 158, Folded]
  ------------------
38786|    158|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|    158|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    158|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
38787|    158|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|    158|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 158]
  |  |  ------------------
  ------------------
38788|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (38788:6): [True: 0, False: 0]
  |  Branch (38788:6): [True: 0, False: 0]
  ------------------
38789|      0|				}
38790|    158|			}
38791|    158|			zend_throw_error(NULL, "Class name must be a valid object or a string");
38792|    158|		}
38793|    436|	}
38794|       |
38795|       |
38796|    436|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    436|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    436|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    436|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 436, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    436|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    436|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    436|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    436|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    436|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    436|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (38796:2): [True: 0, False: 0]
  |  Branch (38796:2): [True: 0, False: 0]
  ------------------
38797|    436|}
zend_execute.c:ZEND_CLONE_SPEC_CONST_HANDLER:
 5265|      1|{
 5266|      1|	USE_OPLINE
 5267|      1|	zval *obj;
 5268|      1|	zend_object *zobj;
 5269|      1|	zend_class_entry *ce, *scope;
 5270|      1|	zend_function *clone;
 5271|      1|	zend_object_clone_obj_t clone_call;
 5272|       |
 5273|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5274|      1|	obj = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5275|       |
 5276|       |	/* ZEND_CLONE also exists as the clone() function and both implementations must be kept in sync.
 5277|       |	 * The OPcode intentionally does not support a clone-with property list to keep it simple. */
 5278|       |
 5279|      1|	do {
 5280|      1|		if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST ||
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5280:7): [True: 1, Folded]
  ------------------
 5281|      1|		    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5281:8): [True: 0, Folded]
  ------------------
 5282|      1|			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5282:8): [Folded, False: 1]
  ------------------
 5283|      0|				obj = Z_REFVAL_P(obj);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5284|      0|				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5285|      0|					break;
 5286|      0|				}
 5287|      0|			}
 5288|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5289|      1|			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5289:8): [Folded, False: 1]
  ------------------
 5290|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5291|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5292|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5292:6): [True: 0, False: 0]
  |  Branch (5292:6): [True: 0, False: 0]
  ------------------
 5293|      0|				}
 5294|      0|			}
 5295|      1|			zend_type_error("clone(): Argument #1 ($object) must be of type object, %s given", zend_zval_value_name(obj));
 5296|       |
 5297|       |
 5298|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5298:4): [True: 0, False: 1]
  |  Branch (5298:4): [True: 1, False: 0]
  ------------------
 5299|      1|		}
 5300|      1|	} while (0);
  ------------------
  |  Branch (5300:11): [Folded, False: 0]
  ------------------
 5301|       |
 5302|      0|	zobj = Z_OBJ_P(obj);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5303|      0|	ce = zobj->ce;
 5304|      0|	clone = ce->clone;
 5305|      0|	clone_call = zobj->handlers->clone_obj;
 5306|      0|	if (UNEXPECTED(clone_call == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5307|      0|		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5308|       |
 5309|       |
 5310|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5311|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5311:3): [True: 0, False: 0]
  |  Branch (5311:3): [True: 0, False: 0]
  ------------------
 5312|      0|	}
 5313|       |
 5314|      0|	if (clone && !(clone->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (5314:6): [True: 0, False: 0]
  |  Branch (5314:15): [True: 0, False: 0]
  ------------------
 5315|      0|		scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 5316|      0|		ZEND_ASSERT(!(clone->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5316:3): [True: 0, False: 0]
  |  Branch (5316:3): [True: 0, False: 0]
  ------------------
 5317|      0|		if (!zend_check_method_accessible(clone, scope)) {
  ------------------
  |  Branch (5317:7): [True: 0, False: 0]
  ------------------
 5318|      0|			zend_bad_method_call(clone, clone->common.function_name, scope);
 5319|       |
 5320|       |
 5321|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5322|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5322:4): [True: 0, False: 0]
  |  Branch (5322:4): [True: 0, False: 0]
  ------------------
 5323|      0|		}
 5324|      0|	}
 5325|       |
 5326|      0|	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(zobj));
  ------------------
  |  | 1140|      0|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      0|		zval *__z = (z);						\
  |  | 1142|      0|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5327|       |
 5328|       |
 5329|      0|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5329:2): [True: 0, False: 0]
  |  Branch (5329:2): [True: 0, False: 0]
  ------------------
 5330|      0|}
zend_execute.c:ZEND_CLONE_SPEC_TMP_HANDLER:
17389|     13|{
17390|     13|	USE_OPLINE
17391|     13|	zval *obj;
17392|     13|	zend_object *zobj;
17393|     13|	zend_class_entry *ce, *scope;
17394|     13|	zend_function *clone;
17395|     13|	zend_object_clone_obj_t clone_call;
17396|       |
17397|     13|	SAVE_OPLINE();
  ------------------
  |  |  428|     13|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17398|     13|	obj = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     13|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     13|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17399|       |
17400|       |	/* ZEND_CLONE also exists as the clone() function and both implementations must be kept in sync.
17401|       |	 * The OPcode intentionally does not support a clone-with property list to keep it simple. */
17402|       |
17403|     13|	do {
17404|     13|		if (IS_TMP_VAR == IS_CONST ||
  ------------------
  |  |  865|     13|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST ||
  ------------------
  |  |  864|     26|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17404:7): [Folded, False: 13]
  ------------------
17405|     13|		    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  865|     13|#define IS_TMP_VAR	(1<<1)
  ------------------
              		    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  863|     26|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (17405:8): [True: 13, Folded]
  ------------------
17406|      0|			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17406:8): [Folded, False: 0]
  ------------------
17407|      0|				obj = Z_REFVAL_P(obj);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17408|      0|				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17409|      0|					break;
17410|      0|				}
17411|      0|			}
17412|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17413|      0|			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17413:8): [Folded, False: 0]
  ------------------
17414|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17415|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17416|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17416:6): [True: 0, False: 0]
  |  Branch (17416:6): [True: 0, False: 0]
  ------------------
17417|      0|				}
17418|      0|			}
17419|      0|			zend_type_error("clone(): Argument #1 ($object) must be of type object, %s given", zend_zval_value_name(obj));
17420|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17421|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17421:4): [True: 0, False: 0]
  |  Branch (17421:4): [True: 0, False: 0]
  ------------------
17422|      0|		}
17423|     13|	} while (0);
  ------------------
  |  Branch (17423:11): [Folded, False: 13]
  ------------------
17424|       |
17425|     13|	zobj = Z_OBJ_P(obj);
  ------------------
  |  | 1000|     13|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
17426|     13|	ce = zobj->ce;
17427|     13|	clone = ce->clone;
17428|     13|	clone_call = zobj->handlers->clone_obj;
17429|     13|	if (UNEXPECTED(clone_call == NULL)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 12]
  |  |  ------------------
  ------------------
17430|      1|		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
17431|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17432|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17433|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17433:3): [True: 0, False: 1]
  |  Branch (17433:3): [True: 1, False: 0]
  ------------------
17434|      1|	}
17435|       |
17436|     12|	if (clone && !(clone->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (17436:6): [True: 1, False: 11]
  |  Branch (17436:15): [True: 0, False: 1]
  ------------------
17437|      0|		scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
17438|      0|		ZEND_ASSERT(!(clone->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17438:3): [True: 0, False: 0]
  |  Branch (17438:3): [True: 0, False: 0]
  ------------------
17439|      0|		if (!zend_check_method_accessible(clone, scope)) {
  ------------------
  |  Branch (17439:7): [True: 0, False: 0]
  ------------------
17440|      0|			zend_bad_method_call(clone, clone->common.function_name, scope);
17441|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17442|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17443|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17443:4): [True: 0, False: 0]
  |  Branch (17443:4): [True: 0, False: 0]
  ------------------
17444|      0|		}
17445|      0|	}
17446|       |
17447|     12|	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(zobj));
  ------------------
  |  | 1140|     12|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     12|		zval *__z = (z);						\
  |  | 1142|     12|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     12|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     12|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     12|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     12|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     12|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     12|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     12|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     12|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     12|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
17448|       |
17449|     12|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17450|     12|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     12|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     12|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     12|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 12, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     12|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     12|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     12|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     12|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17450:2): [True: 0, False: 0]
  |  Branch (17450:2): [True: 0, False: 0]
  ------------------
17451|     12|}
zend_execute.c:ZEND_CLONE_SPEC_CV_HANDLER:
40059|     20|{
40060|     20|	USE_OPLINE
40061|     20|	zval *obj;
40062|     20|	zend_object *zobj;
40063|     20|	zend_class_entry *ce, *scope;
40064|     20|	zend_function *clone;
40065|     20|	zend_object_clone_obj_t clone_call;
40066|       |
40067|     20|	SAVE_OPLINE();
  ------------------
  |  |  428|     20|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     20|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40068|     20|	obj = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     20|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     20|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40069|       |
40070|       |	/* ZEND_CLONE also exists as the clone() function and both implementations must be kept in sync.
40071|       |	 * The OPcode intentionally does not support a clone-with property list to keep it simple. */
40072|       |
40073|     20|	do {
40074|     20|		if (IS_CV == IS_CONST ||
  ------------------
  |  |  867|     20|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST ||
  ------------------
  |  |  864|     40|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (40074:7): [Folded, False: 20]
  ------------------
40075|     20|		    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  867|     20|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  863|     40|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (40075:8): [True: 20, Folded]
  ------------------
40076|      2|			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40076:8): [True: 2, Folded]
  ------------------
40077|      0|				obj = Z_REFVAL_P(obj);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40078|      0|				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40079|      0|					break;
40080|      0|				}
40081|      0|			}
40082|      2|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
40083|      2|			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (40083:8): [True: 2, Folded]
  ------------------
40084|      1|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40085|      1|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
40086|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40086:6): [True: 0, False: 0]
  |  Branch (40086:6): [True: 0, False: 0]
  ------------------
40087|      0|				}
40088|      1|			}
40089|      2|			zend_type_error("clone(): Argument #1 ($object) must be of type object, %s given", zend_zval_value_name(obj));
40090|       |
40091|       |
40092|      2|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40092:4): [True: 0, False: 2]
  |  Branch (40092:4): [True: 2, False: 0]
  ------------------
40093|      2|		}
40094|     20|	} while (0);
  ------------------
  |  Branch (40094:11): [Folded, False: 18]
  ------------------
40095|       |
40096|     18|	zobj = Z_OBJ_P(obj);
  ------------------
  |  | 1000|     18|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     18|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
40097|     18|	ce = zobj->ce;
40098|     18|	clone = ce->clone;
40099|     18|	clone_call = zobj->handlers->clone_obj;
40100|     18|	if (UNEXPECTED(clone_call == NULL)) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 17]
  |  |  ------------------
  ------------------
40101|      1|		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
40102|       |
40103|       |
40104|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
40105|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40105:3): [True: 0, False: 1]
  |  Branch (40105:3): [True: 1, False: 0]
  ------------------
40106|      1|	}
40107|       |
40108|     17|	if (clone && !(clone->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (40108:6): [True: 1, False: 16]
  |  Branch (40108:15): [True: 0, False: 1]
  ------------------
40109|      0|		scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
40110|      0|		ZEND_ASSERT(!(clone->common.fn_flags & ZEND_ACC_PUBLIC));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40110:3): [True: 0, False: 0]
  |  Branch (40110:3): [True: 0, False: 0]
  ------------------
40111|      0|		if (!zend_check_method_accessible(clone, scope)) {
  ------------------
  |  Branch (40111:7): [True: 0, False: 0]
  ------------------
40112|      0|			zend_bad_method_call(clone, clone->common.function_name, scope);
40113|       |
40114|       |
40115|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40116|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40116:4): [True: 0, False: 0]
  |  Branch (40116:4): [True: 0, False: 0]
  ------------------
40117|      0|		}
40118|      0|	}
40119|       |
40120|     17|	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(zobj));
  ------------------
  |  | 1140|     17|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     17|		zval *__z = (z);						\
  |  | 1142|     17|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     17|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     17|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     17|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     17|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     17|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     17|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     17|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     17|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     17|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
40121|       |
40122|       |
40123|     17|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     17|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     17|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     17|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 17, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     17|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     17|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     17|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     17|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     17|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40123:2): [True: 0, False: 0]
  |  Branch (40123:2): [True: 0, False: 0]
  ------------------
40124|     17|}
zend_execute.c:ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER:
 4897|      7|{
 4898|      7|	USE_OPLINE
 4899|      7|	zval *retval_ptr;
 4900|      7|	zval *return_value;
 4901|       |
 4902|       |
 4903|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4904|       |
 4905|      7|	return_value = EX(return_value);
  ------------------
  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  ------------------
 4906|       |
 4907|       |
 4908|      7|	do {
 4909|      7|		if ((IS_CONST & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4909:7): [True: 7, Folded]
  ------------------
 4910|      7|		    (IS_CONST == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		    (IS_CONST == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		    (IS_CONST == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  | 1207|      0|#define ZEND_RETURNS_VALUE    (1<<1)
  ------------------
  |  Branch (4910:8): [Folded, False: 0]
  |  Branch (4910:30): [True: 0, False: 0]
  ------------------
 4911|       |			/* Not supposed to happen, but we'll allow it */
 4912|      7|			zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      7|#define E_NOTICE			(1<<3L)
  ------------------
 4913|       |
 4914|      7|			retval_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      7|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4915|      7|			if (!return_value) {
  ------------------
  |  Branch (4915:8): [True: 0, False: 7]
  ------------------
 4916|       |
 4917|       |
 4918|      7|			} else {
 4919|      7|				if (IS_CONST == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  866|     14|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_CONST == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4919:9): [Folded, False: 7]
  ------------------
 4920|      0|					ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4921|      0|					break;
 4922|      0|				}
 4923|       |
 4924|      7|				ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      7|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      7|		zend_reference *_ref =									\
  |  | 1207|      7|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      7|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      7|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      7|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      7|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      7|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      7|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      7|	do {												\
  |  |  |  | 1417|      7|		zval *_z1 = (z);								\
  |  |  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      7|	do {												\
  |  |  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      7|		_ref->sources.ptr = NULL;									\
  |  | 1212|      7|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      7|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      7|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      7|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      7|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 4925|      7|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      7|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (4925:9): [True: 7, Folded]
  ------------------
 4926|      7|					Z_TRY_ADDREF_P(retval_ptr);
  ------------------
  |  | 1285|      7|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      7|	zval *_pz = (pz);				\
  |  | 1287|      7|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      7|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
 4927|      7|				}
 4928|      7|			}
 4929|      7|			break;
 4930|      7|		}
 4931|       |
 4932|      0|		retval_ptr = zend_get_bad_ptr();
 4933|       |
 4934|      0|		if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (4934:7): [Folded, False: 0]
  ------------------
 4935|      0|			ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4935:4): [True: 0, False: 0]
  |  Branch (4935:4): [True: 0, False: 0]
  ------------------
 4936|      0|			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
              			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4936:8): [True: 0, False: 0]
  |  Branch (4936:59): [True: 0, False: 0]
  ------------------
 4937|      0|				zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 4938|      0|				if (return_value) {
  ------------------
  |  Branch (4938:9): [True: 0, False: 0]
  ------------------
 4939|      0|					ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4940|      0|				} else {
 4941|       |
 4942|       |
 4943|      0|				}
 4944|      0|				break;
 4945|      0|			}
 4946|      0|		}
 4947|       |
 4948|      0|		if (return_value) {
  ------------------
  |  Branch (4948:7): [True: 0, False: 0]
  ------------------
 4949|      0|			if (Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4950|      0|				Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4951|      0|			} else {
 4952|      0|				ZVAL_MAKE_REF_EX(retval_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4953|      0|			}
 4954|      0|			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4955|      0|		}
 4956|       |
 4957|       |
 4958|      0|	} while (0);
  ------------------
  |  Branch (4958:11): [Folded, False: 0]
  ------------------
 4959|       |
 4960|       |
 4961|       |
 4962|       |
 4963|      7|	zend_return_unwrap_ref(execute_data, return_value);
 4964|       |
 4965|      7|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      7|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 4966|      7|}
zend_execute.c:ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER:
17192|      6|{
17193|      6|	USE_OPLINE
17194|      6|	zval *retval_ptr;
17195|      6|	zval *return_value;
17196|       |
17197|       |
17198|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17199|       |
17200|      6|	return_value = EX(return_value);
  ------------------
  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  ------------------
17201|       |
17202|       |
17203|      6|	do {
17204|      6|		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (17204:7): [True: 6, Folded]
  ------------------
17205|      6|		    (IS_TMP_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		    (IS_TMP_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		    (IS_TMP_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  | 1207|      0|#define ZEND_RETURNS_VALUE    (1<<1)
  ------------------
  |  Branch (17205:8): [Folded, False: 0]
  |  Branch (17205:32): [True: 0, False: 0]
  ------------------
17206|       |			/* Not supposed to happen, but we'll allow it */
17207|      6|			zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      6|#define E_NOTICE			(1<<3L)
  ------------------
17208|       |
17209|      6|			retval_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17210|      6|			if (!return_value) {
  ------------------
  |  Branch (17210:8): [True: 0, False: 6]
  ------------------
17211|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17212|      6|			} else {
17213|      6|				if (IS_TMP_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  866|     12|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_TMP_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17213:9): [Folded, False: 6]
  ------------------
17214|      0|					ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17215|      0|					break;
17216|      0|				}
17217|       |
17218|      6|				ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      6|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      6|		zend_reference *_ref =									\
  |  | 1207|      6|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      6|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      6|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      6|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      6|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      6|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      6|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      6|	do {												\
  |  |  |  | 1417|      6|		zval *_z1 = (z);								\
  |  |  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      6|	do {												\
  |  |  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      6|		_ref->sources.ptr = NULL;									\
  |  | 1212|      6|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      6|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      6|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      6|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      6|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
17219|      6|				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17219:9): [Folded, False: 6]
  ------------------
17220|      0|					Z_TRY_ADDREF_P(retval_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
17221|      0|				}
17222|      6|			}
17223|      6|			break;
17224|      6|		}
17225|       |
17226|      0|		retval_ptr = zend_get_bad_ptr();
17227|       |
17228|      0|		if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17228:7): [Folded, False: 0]
  ------------------
17229|      0|			ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17229:4): [True: 0, False: 0]
  |  Branch (17229:4): [True: 0, False: 0]
  ------------------
17230|      0|			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
              			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17230:8): [True: 0, False: 0]
  |  Branch (17230:59): [True: 0, False: 0]
  ------------------
17231|      0|				zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
17232|      0|				if (return_value) {
  ------------------
  |  Branch (17232:9): [True: 0, False: 0]
  ------------------
17233|      0|					ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17234|      0|				} else {
17235|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17236|      0|				}
17237|      0|				break;
17238|      0|			}
17239|      0|		}
17240|       |
17241|      0|		if (return_value) {
  ------------------
  |  Branch (17241:7): [True: 0, False: 0]
  ------------------
17242|      0|			if (Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17243|      0|				Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17244|      0|			} else {
17245|      0|				ZVAL_MAKE_REF_EX(retval_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17246|      0|			}
17247|      0|			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17248|      0|		}
17249|       |
17250|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17251|      0|	} while (0);
  ------------------
  |  Branch (17251:11): [Folded, False: 0]
  ------------------
17252|       |
17253|       |
17254|       |
17255|       |
17256|      6|	zend_return_unwrap_ref(execute_data, return_value);
17257|       |
17258|      6|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      6|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
17259|      6|}
zend_execute.c:ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER:
23433|     17|{
23434|     17|	USE_OPLINE
23435|     17|	zval *retval_ptr;
23436|     17|	zval *return_value;
23437|       |
23438|       |
23439|     17|	SAVE_OPLINE();
  ------------------
  |  |  428|     17|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23440|       |
23441|     17|	return_value = EX(return_value);
  ------------------
  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  ------------------
23442|       |
23443|       |
23444|     17|	do {
23445|     17|		if ((IS_VAR & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_VAR & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_VAR & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (23445:7): [Folded, False: 17]
  ------------------
23446|     17|		    (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              		    (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  866|     34|#define IS_VAR		(1<<2)
  ------------------
              		    (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  | 1207|     17|#define ZEND_RETURNS_VALUE    (1<<1)
  ------------------
  |  Branch (23446:8): [True: 17, Folded]
  |  Branch (23446:28): [True: 0, False: 17]
  ------------------
23447|       |			/* Not supposed to happen, but we'll allow it */
23448|      0|			zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
23449|       |
23450|      0|			retval_ptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23451|      0|			if (!return_value) {
  ------------------
  |  Branch (23451:8): [True: 0, False: 0]
  ------------------
23452|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23453|      0|			} else {
23454|      0|				if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23454:9): [True: 0, Folded]
  ------------------
23455|      0|					ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23456|      0|					break;
23457|      0|				}
23458|       |
23459|      0|				ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23460|      0|				if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (23460:9): [Folded, False: 0]
  ------------------
23461|      0|					Z_TRY_ADDREF_P(retval_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
23462|      0|				}
23463|      0|			}
23464|      0|			break;
23465|      0|		}
23466|       |
23467|     17|		retval_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     17|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     17|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23468|       |
23469|     17|		if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (23469:7): [True: 17, Folded]
  ------------------
23470|     17|			ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|     17|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (23470:4): [True: 0, False: 17]
  |  Branch (23470:4): [True: 17, False: 0]
  ------------------
23471|     17|			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  | 1206|     34|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
              			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      3|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23471:8): [True: 3, False: 14]
  |  Branch (23471:59): [True: 1, False: 2]
  ------------------
23472|      1|				zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
23473|      1|				if (return_value) {
  ------------------
  |  Branch (23473:9): [True: 1, False: 0]
  ------------------
23474|      1|					ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
23475|      1|				} else {
23476|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23477|      0|				}
23478|      1|				break;
23479|      1|			}
23480|     17|		}
23481|       |
23482|     16|		if (return_value) {
  ------------------
  |  Branch (23482:7): [True: 16, False: 0]
  ------------------
23483|     16|			if (Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|     16|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     16|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 9, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23484|      9|				Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      9|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23485|      9|			} else {
23486|      7|				ZVAL_MAKE_REF_EX(retval_ptr, 2);
  ------------------
  |  | 1216|      7|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      7|		zval *_z = (z);											\
  |  | 1218|      7|		zend_reference *_ref =									\
  |  | 1219|      7|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      7|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      7|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      7|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      7|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      7|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      7|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      7|	do {												\
  |  |  |  | 1417|      7|		zval *_z1 = (z);								\
  |  |  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      7|	do {												\
  |  |  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      7|		_ref->sources.ptr = NULL;									\
  |  | 1224|      7|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      7|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      7|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      7|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      7|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
23487|      7|			}
23488|     16|			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
  ------------------
  |  | 1189|     16|#define ZVAL_REF(z, r) do {										\
  |  | 1190|     16|		zval *__z = (z);										\
  |  | 1191|     16|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|     16|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     16|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|     16|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     16|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     16|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     16|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     16|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     16|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
23489|     16|		}
23490|       |
23491|     16|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     16|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     16|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23492|     16|	} while (0);
  ------------------
  |  Branch (23492:11): [Folded, False: 16]
  ------------------
23493|       |
23494|       |
23495|       |
23496|       |
23497|     17|	zend_return_unwrap_ref(execute_data, return_value);
23498|       |
23499|     17|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     17|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
23500|     17|}
zend_execute.c:ZEND_RETURN_BY_REF_SPEC_CV_HANDLER:
39857|     38|{
39858|     38|	USE_OPLINE
39859|     38|	zval *retval_ptr;
39860|     38|	zval *return_value;
39861|       |
39862|       |
39863|     38|	SAVE_OPLINE();
  ------------------
  |  |  428|     38|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     38|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39864|       |
39865|     38|	return_value = EX(return_value);
  ------------------
  |  |  730|     38|#define EX(element) 			((execute_data)->element)
  ------------------
39866|       |
39867|       |
39868|     38|	do {
39869|     38|		if ((IS_CV & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  867|     38|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  864|     38|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CV & (IS_CONST|IS_TMP_VAR)) ||
  ------------------
  |  |  865|     38|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (39869:7): [Folded, False: 0]
  ------------------
39870|      0|		    (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		    (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		    (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
  ------------------
  |  | 1207|      0|#define ZEND_RETURNS_VALUE    (1<<1)
  ------------------
  |  Branch (39870:8): [Folded, False: 0]
  |  Branch (39870:27): [True: 0, False: 0]
  ------------------
39871|       |			/* Not supposed to happen, but we'll allow it */
39872|      0|			zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
39873|       |
39874|      0|			retval_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39875|      0|			if (!return_value) {
  ------------------
  |  Branch (39875:8): [True: 0, False: 0]
  ------------------
39876|       |
39877|       |
39878|      0|			} else {
39879|      0|				if (IS_CV == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_CV == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (39879:9): [Folded, False: 0]
  ------------------
39880|      0|					ZVAL_COPY_VALUE(return_value, retval_ptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39881|      0|					break;
39882|      0|				}
39883|       |
39884|      0|				ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39885|      0|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (39885:9): [Folded, False: 0]
  ------------------
39886|      0|					Z_TRY_ADDREF_P(retval_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
39887|      0|				}
39888|      0|			}
39889|      0|			break;
39890|      0|		}
39891|       |
39892|     38|		retval_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     38|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     38|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39893|       |
39894|     38|		if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|     38|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|     38|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (39894:7): [Folded, False: 38]
  ------------------
39895|      0|			ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (39895:4): [True: 0, False: 0]
  |  Branch (39895:4): [True: 0, False: 0]
  ------------------
39896|      0|			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
              			if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39896:8): [True: 0, False: 0]
  |  Branch (39896:59): [True: 0, False: 0]
  ------------------
39897|      0|				zend_error(E_NOTICE, "Only variable references should be returned by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
39898|      0|				if (return_value) {
  ------------------
  |  Branch (39898:9): [True: 0, False: 0]
  ------------------
39899|      0|					ZVAL_NEW_REF(return_value, retval_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
39900|      0|				} else {
39901|       |
39902|       |
39903|      0|				}
39904|      0|				break;
39905|      0|			}
39906|      0|		}
39907|       |
39908|     38|		if (return_value) {
  ------------------
  |  Branch (39908:7): [True: 38, False: 0]
  ------------------
39909|     38|			if (Z_ISREF_P(retval_ptr)) {
  ------------------
  |  |  964|     38|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     38|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     38|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     38|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 6, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
39910|      6|				Z_ADDREF_P(retval_ptr);
  ------------------
  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
39911|     32|			} else {
39912|     32|				ZVAL_MAKE_REF_EX(retval_ptr, 2);
  ------------------
  |  | 1216|     32|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|     32|		zval *_z = (z);											\
  |  | 1218|     32|		zend_reference *_ref =									\
  |  | 1219|     32|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|     32|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     32|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     32|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     32|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     32|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|     32|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|     32|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|     32|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     32|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     32|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     32|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     32|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     32|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|     32|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|     32|	do {												\
  |  |  |  | 1417|     32|		zval *_z1 = (z);								\
  |  |  |  | 1418|     32|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     32|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     32|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     32|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     32|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     32|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     32|	do {												\
  |  |  |  |  |  | 1408|     32|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     32|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     32|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     32|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     32|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     32|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|     32|		_ref->sources.ptr = NULL;									\
  |  | 1224|     32|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     32|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     32|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|     32|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     32|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     32|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     32|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     32|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     32|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     32|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
39913|     32|			}
39914|     38|			ZVAL_REF(return_value, Z_REF_P(retval_ptr));
  ------------------
  |  | 1189|     38|#define ZVAL_REF(z, r) do {										\
  |  | 1190|     38|		zval *__z = (z);										\
  |  | 1191|     38|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|     38|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     38|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|     38|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     38|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     38|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     38|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     38|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     38|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     38|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     38|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     38|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|     38|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 38]
  |  |  ------------------
  ------------------
39915|     38|		}
39916|       |
39917|       |
39918|     38|	} while (0);
  ------------------
  |  Branch (39918:11): [Folded, False: 38]
  ------------------
39919|       |
39920|       |
39921|       |
39922|       |
39923|     38|	zend_return_unwrap_ref(execute_data, return_value);
39924|       |
39925|     38|	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|     38|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
39926|     38|}
zend_execute.c:ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER:
 7375|      3|{
 7376|      3|	USE_OPLINE
 7377|      3|	zval *function_name;
 7378|      3|	zval *object;
 7379|      3|	zend_function *fbc;
 7380|      3|	zend_class_entry *called_scope;
 7381|      3|	zend_object *obj;
 7382|      3|	zend_execute_data *call;
 7383|      3|	uint32_t call_info;
 7384|       |
 7385|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7386|       |
 7387|      3|	object = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7388|       |
 7389|      3|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7389:6): [Folded, False: 3]
  ------------------
 7390|      0|		function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7391|      0|	}
 7392|       |
 7393|      3|	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7393:6): [Folded, False: 3]
  ------------------
 7394|      0|	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7395|      0|		do {
 7396|      0|			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7396:8): [Folded, False: 0]
  ------------------
 7397|      0|				function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7398|      0|				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7399|      0|					break;
 7400|      0|				}
 7401|      0|			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7401:15): [Folded, False: 0]
  ------------------
 7402|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 7403|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7404|       |
 7405|       |
 7406|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7406:6): [True: 0, False: 0]
  |  Branch (7406:6): [True: 0, False: 0]
  ------------------
 7407|      0|				}
 7408|      0|			}
 7409|      0|			zend_throw_error(NULL, "Method name must be a string");
 7410|       |
 7411|       |
 7412|       |
 7413|       |
 7414|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7414:4): [True: 0, False: 0]
  |  Branch (7414:4): [True: 0, False: 0]
  ------------------
 7415|      0|		} while (0);
  ------------------
  |  Branch (7415:12): [Folded, False: 0]
  ------------------
 7416|      0|	}
 7417|       |
 7418|      3|	if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (7418:6): [Folded, False: 3]
  ------------------
 7419|      0|		obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 7420|      3|	} else {
 7421|      3|		do {
 7422|      3|			if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7422:8): [Folded, False: 3]
  ------------------
 7423|      0|				obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 7424|      3|			} else {
 7425|      3|				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7425:9): [Folded, False: 3]
  ------------------
 7426|      0|					zend_reference *ref = Z_REF_P(object);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 7427|       |
 7428|      0|					object = &ref->val;
 7429|      0|					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7430|      0|						obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 7431|      0|						if (IS_CONST & IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (7431:11): [Folded, False: 0]
  ------------------
 7432|      0|							if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7433|      0|								efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7434|      0|							} else {
 7435|      0|								Z_ADDREF_P(object);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 7436|      0|							}
 7437|      0|						}
 7438|      0|						break;
 7439|      0|					}
 7440|      0|				}
 7441|      3|				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7441:9): [Folded, False: 3]
  ------------------
 7442|      0|					object = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 7443|      0|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7444|      0|						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7444:11): [Folded, False: 0]
  ------------------
 7445|       |
 7446|       |
 7447|      0|						}
 7448|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7448:7): [True: 0, False: 0]
  |  Branch (7448:7): [True: 0, False: 0]
  ------------------
 7449|      0|					}
 7450|      0|				}
 7451|      3|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7451:9): [True: 3, Folded]
  ------------------
 7452|      3|					function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7453|      3|				}
 7454|      3|				zend_invalid_method_call(object, function_name);
 7455|       |
 7456|       |
 7457|       |
 7458|       |
 7459|      3|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      3|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      3|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7459:5): [True: 0, False: 3]
  |  Branch (7459:5): [True: 3, False: 0]
  ------------------
 7460|      3|			}
 7461|      3|		} while (0);
  ------------------
  |  Branch (7461:12): [Folded, False: 0]
  ------------------
 7462|      3|	}
 7463|       |
 7464|      0|	called_scope = obj->ce;
 7465|       |
 7466|      0|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7466:6): [True: 0, Folded]
  ------------------
 7467|      0|	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7468|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7469|      0|	} else {
 7470|      0|		zend_object *orig_obj = obj;
 7471|       |
 7472|      0|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7472:7): [True: 0, Folded]
  ------------------
 7473|      0|			function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7474|      0|		}
 7475|       |
 7476|       |		/* First, locate the function. */
 7477|      0|		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (7477:66): [True: 0, Folded]
  ------------------
 7478|      0|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7479|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7480|      0|				zend_undefined_method(orig_obj->ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7481|      0|			}
 7482|       |
 7483|       |
 7484|      0|			if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (7484:8): [Folded, False: 0]
  |  Branch (7484:44): [True: 0, False: 0]
  ------------------
 7485|      0|				zend_objects_store_del(orig_obj);
 7486|      0|			}
 7487|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7487:4): [True: 0, False: 0]
  |  Branch (7487:4): [True: 0, False: 0]
  ------------------
 7488|      0|		}
 7489|      0|		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7489:7): [True: 0, Folded]
  ------------------
 7490|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7491|      0|		    EXPECTED(obj == orig_obj)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7492|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7493|      0|		}
 7494|      0|		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7494:7): [Folded, False: 0]
  ------------------
 7495|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 7496|      0|			if (GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (7496:8): [True: 0, False: 0]
  ------------------
 7497|      0|				zend_objects_store_del(orig_obj);
 7498|      0|			}
 7499|      0|		}
 7500|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7501|      0|			init_func_run_time_cache(&fbc->op_array);
 7502|      0|		}
 7503|      0|	}
 7504|       |
 7505|      0|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7505:6): [Folded, False: 0]
  ------------------
 7506|       |
 7507|       |
 7508|      0|	}
 7509|       |
 7510|      0|	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7511|      0|	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7512|      0|		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (7512:7): [Folded, False: 0]
  |  Branch (7512:43): [True: 0, False: 0]
  ------------------
 7513|      0|			zend_objects_store_del(obj);
 7514|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7515|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7515:5): [True: 0, False: 0]
  |  Branch (7515:5): [True: 0, False: 0]
  ------------------
 7516|      0|			}
 7517|      0|		}
 7518|       |		/* call static method */
 7519|      0|		obj = (zend_object*)called_scope;
 7520|      0|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
 7521|      0|	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (7521:13): [Folded, False: 0]
  ------------------
 7522|      0|		if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (7522:7): [Folded, False: 0]
  ------------------
 7523|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 7524|      0|		}
 7525|       |		/* CV may be changed indirectly (e.g. when it's a reference) */
 7526|      0|		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
 7527|      0|	}
 7528|       |
 7529|      0|	call = zend_vm_stack_push_call_frame(call_info,
 7530|      0|		fbc, opline->extended_value, obj);
 7531|      0|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 7532|      0|	EX(call) = call;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 7533|       |
 7534|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7534:2): [True: 0, False: 0]
  |  Branch (7534:2): [True: 0, False: 0]
  ------------------
 7535|      0|}
zend_execute.c:ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER:
19100|    359|{
19101|    359|	USE_OPLINE
19102|    359|	zval *function_name;
19103|    359|	zval *object;
19104|    359|	zend_function *fbc;
19105|    359|	zend_class_entry *called_scope;
19106|    359|	zend_object *obj;
19107|    359|	zend_execute_data *call;
19108|    359|	uint32_t call_info;
19109|       |
19110|    359|	SAVE_OPLINE();
  ------------------
  |  |  428|    359|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    359|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19111|       |
19112|    359|	object = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    359|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    359|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19113|       |
19114|    359|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    359|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    359|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19114:6): [Folded, False: 359]
  ------------------
19115|      0|		function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19116|      0|	}
19117|       |
19118|    359|	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|    359|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|    718|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19118:6): [Folded, False: 359]
  ------------------
19119|      0|	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19120|      0|		do {
19121|      0|			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19121:8): [Folded, False: 0]
  ------------------
19122|      0|				function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19123|      0|				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19124|      0|					break;
19125|      0|				}
19126|      0|			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19126:15): [Folded, False: 0]
  ------------------
19127|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19128|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19129|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19130|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19130:6): [True: 0, False: 0]
  |  Branch (19130:6): [True: 0, False: 0]
  ------------------
19131|      0|				}
19132|      0|			}
19133|      0|			zend_throw_error(NULL, "Method name must be a string");
19134|       |
19135|       |
19136|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19137|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19137:4): [True: 0, False: 0]
  |  Branch (19137:4): [True: 0, False: 0]
  ------------------
19138|      0|		} while (0);
  ------------------
  |  Branch (19138:12): [Folded, False: 0]
  ------------------
19139|      0|	}
19140|       |
19141|    359|	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|    359|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|    359|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (19141:6): [Folded, False: 359]
  ------------------
19142|      0|		obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
19143|    359|	} else {
19144|    359|		do {
19145|    359|			if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  865|    359|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  864|    718|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|    359|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 358, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (19145:8): [True: 359, Folded]
  ------------------
19146|    358|				obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|    358|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    358|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
19147|    358|			} else {
19148|      1|				if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              				if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19148:9): [Folded, False: 1]
  ------------------
19149|      0|					zend_reference *ref = Z_REF_P(object);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
19150|       |
19151|      0|					object = &ref->val;
19152|      0|					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19153|      0|						obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
19154|      0|						if (IS_TMP_VAR & IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              						if (IS_TMP_VAR & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (19154:11): [Folded, False: 0]
  ------------------
19155|      0|							if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19156|      0|								efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19157|      0|							} else {
19158|      0|								Z_ADDREF_P(object);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
19159|      0|							}
19160|      0|						}
19161|      0|						break;
19162|      0|					}
19163|      0|				}
19164|      1|				if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19164:9): [Folded, False: 1]
  ------------------
19165|      0|					object = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19166|      0|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19167|      0|						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19167:11): [Folded, False: 0]
  ------------------
19168|       |
19169|       |
19170|      0|						}
19171|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19171:7): [True: 0, False: 0]
  |  Branch (19171:7): [True: 0, False: 0]
  ------------------
19172|      0|					}
19173|      0|				}
19174|      1|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19174:9): [True: 1, Folded]
  ------------------
19175|      1|					function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19176|      1|				}
19177|      1|				zend_invalid_method_call(object, function_name);
19178|       |
19179|       |
19180|      1|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19181|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19181:5): [True: 0, False: 1]
  |  Branch (19181:5): [True: 1, False: 0]
  ------------------
19182|      1|			}
19183|    359|		} while (0);
  ------------------
  |  Branch (19183:12): [Folded, False: 358]
  ------------------
19184|    359|	}
19185|       |
19186|    358|	called_scope = obj->ce;
19187|       |
19188|    358|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    358|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    716|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19188:6): [True: 358, Folded]
  ------------------
19189|    358|	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
  ------------------
  |  |  456|    358|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 266, False: 92]
  |  |  ------------------
  ------------------
19190|    266|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|    266|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    266|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19191|    266|	} else {
19192|     92|		zend_object *orig_obj = obj;
19193|       |
19194|     92|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19194:7): [True: 92, Folded]
  ------------------
19195|     92|			function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     92|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19196|     92|		}
19197|       |
19198|       |		/* First, locate the function. */
19199|     92|		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|     92|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     92|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|     92|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (19199:66): [True: 92, Folded]
  ------------------
19200|     92|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|     92|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 91]
  |  |  ------------------
  ------------------
19201|      1|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
19202|      1|				zend_undefined_method(orig_obj->ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19203|      1|			}
19204|       |
19205|       |
19206|      1|			if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      1|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (19206:8): [True: 1, Folded]
  |  Branch (19206:46): [True: 0, False: 1]
  ------------------
19207|      0|				zend_objects_store_del(orig_obj);
19208|      0|			}
19209|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19209:4): [True: 0, False: 1]
  |  Branch (19209:4): [True: 1, False: 0]
  ------------------
19210|      1|		}
19211|     91|		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|     91|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    182|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19211:7): [True: 91, Folded]
  ------------------
19212|     91|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|    182|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 88, False: 3]
  |  |  ------------------
  ------------------
19213|     88|		    EXPECTED(obj == orig_obj)) {
  ------------------
  |  |  456|     88|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 88, False: 0]
  |  |  ------------------
  ------------------
19214|     88|			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
  ------------------
  |  |  538|     88|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|     88|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|     88|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|     88|		slot[0] = (ce); \
  |  |  541|     88|		slot[1] = (ptr); \
  |  |  542|     88|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 88]
  |  |  ------------------
  ------------------
19215|     88|		}
19216|     91|		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  865|     91|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  866|     91|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  865|     91|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  457|     91|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  ------------------
  ------------------
  |  Branch (19216:7): [True: 91, Folded]
  ------------------
19217|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
19218|      0|			if (GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (19218:8): [True: 0, False: 0]
  ------------------
19219|      0|				zend_objects_store_del(orig_obj);
19220|      0|			}
19221|      0|		}
19222|     91|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|    182|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 17, False: 74]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|     34|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 17]
  |  |  ------------------
  ------------------
19223|     14|			init_func_run_time_cache(&fbc->op_array);
19224|     14|		}
19225|     91|	}
19226|       |
19227|    357|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    357|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    357|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19227:6): [Folded, False: 357]
  ------------------
19228|       |
19229|       |
19230|      0|	}
19231|       |
19232|    357|	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|    357|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    357|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    357|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|    357|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|    357|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    357|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    357|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    357|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    357|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    357|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19233|    357|	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
  ------------------
  |  |  457|    357|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 357]
  |  |  ------------------
  ------------------
19234|      0|		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (19234:7): [True: 0, Folded]
  |  Branch (19234:45): [True: 0, False: 0]
  ------------------
19235|      0|			zend_objects_store_del(obj);
19236|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19237|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19237:5): [True: 0, False: 0]
  |  Branch (19237:5): [True: 0, False: 0]
  ------------------
19238|      0|			}
19239|      0|		}
19240|       |		/* call static method */
19241|      0|		obj = (zend_object*)called_scope;
19242|      0|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
19243|    357|	} else if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  865|    357|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  866|    357|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  865|    357|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  867|    357|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19243:13): [True: 357, Folded]
  ------------------
19244|    357|		if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|    357|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|    357|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19244:7): [Folded, False: 357]
  ------------------
19245|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
19246|      0|		}
19247|       |		/* CV may be changed indirectly (e.g. when it's a reference) */
19248|    357|		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  681|    357|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    357|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    357|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  657|    357|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|    357|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    357|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    357|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    357|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    357|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    357|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|    357|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
19249|    357|	}
19250|       |
19251|    357|	call = zend_vm_stack_push_call_frame(call_info,
19252|    357|		fbc, opline->extended_value, obj);
19253|    357|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|    357|#define EX(element) 			((execute_data)->element)
  ------------------
19254|    357|	EX(call) = call;
  ------------------
  |  |  730|    357|#define EX(element) 			((execute_data)->element)
  ------------------
19255|       |
19256|    357|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    357|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    357|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    357|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 357]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    357|	} else { \
  |  |  |  | 5761|    357|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    357|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    357|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    357|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    357|	} \
  |  |  |  | 5764|    357|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    357|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19256:2): [True: 0, False: 357]
  |  Branch (19256:2): [True: 357, False: 0]
  ------------------
19257|    357|}
zend_execute.c:ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER:
34133|      1|{
34134|      1|	USE_OPLINE
34135|      1|	zval *function_name;
34136|      1|	zval *object;
34137|      1|	zend_function *fbc;
34138|      1|	zend_class_entry *called_scope;
34139|      1|	zend_object *obj;
34140|      1|	zend_execute_data *call;
34141|      1|	uint32_t call_info;
34142|       |
34143|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34144|       |
34145|      1|	object = &EX(This);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
34146|       |
34147|      1|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34147:6): [Folded, False: 1]
  ------------------
34148|      0|		function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34149|      0|	}
34150|       |
34151|      1|	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34151:6): [Folded, False: 1]
  ------------------
34152|      0|	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34153|      0|		do {
34154|      0|			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34154:8): [Folded, False: 0]
  ------------------
34155|      0|				function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
34156|      0|				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34157|      0|					break;
34158|      0|				}
34159|      0|			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34159:15): [Folded, False: 0]
  ------------------
34160|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34161|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34162|       |
34163|       |
34164|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34164:6): [True: 0, False: 0]
  |  Branch (34164:6): [True: 0, False: 0]
  ------------------
34165|      0|				}
34166|      0|			}
34167|      0|			zend_throw_error(NULL, "Method name must be a string");
34168|       |
34169|       |
34170|       |
34171|       |
34172|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34172:4): [True: 0, False: 0]
  |  Branch (34172:4): [True: 0, False: 0]
  ------------------
34173|      0|		} while (0);
  ------------------
  |  Branch (34173:12): [Folded, False: 0]
  ------------------
34174|      0|	}
34175|       |
34176|      1|	if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (34176:6): [True: 1, Folded]
  ------------------
34177|      1|		obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
34178|      1|	} else {
34179|      0|		do {
34180|      0|			if (IS_UNUSED != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_UNUSED != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34180:8): [True: 0, Folded]
  ------------------
34181|      0|				obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
34182|      0|			} else {
34183|      0|				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34183:9): [Folded, False: 0]
  ------------------
34184|      0|					zend_reference *ref = Z_REF_P(object);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
34185|       |
34186|      0|					object = &ref->val;
34187|      0|					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34188|      0|						obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
34189|      0|						if (IS_UNUSED & IS_VAR) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              						if (IS_UNUSED & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (34189:11): [Folded, False: 0]
  ------------------
34190|      0|							if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34191|      0|								efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
34192|      0|							} else {
34193|      0|								Z_ADDREF_P(object);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
34194|      0|							}
34195|      0|						}
34196|      0|						break;
34197|      0|					}
34198|      0|				}
34199|      0|				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34199:9): [Folded, False: 0]
  ------------------
34200|      0|					object = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
34201|      0|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34202|      0|						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34202:11): [Folded, False: 0]
  ------------------
34203|       |
34204|       |
34205|      0|						}
34206|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34206:7): [True: 0, False: 0]
  |  Branch (34206:7): [True: 0, False: 0]
  ------------------
34207|      0|					}
34208|      0|				}
34209|      0|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34209:9): [True: 0, Folded]
  ------------------
34210|      0|					function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34211|      0|				}
34212|      0|				zend_invalid_method_call(object, function_name);
34213|       |
34214|       |
34215|       |
34216|       |
34217|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34217:5): [True: 0, False: 0]
  |  Branch (34217:5): [True: 0, False: 0]
  ------------------
34218|      0|			}
34219|      0|		} while (0);
  ------------------
  |  Branch (34219:12): [Folded, False: 0]
  ------------------
34220|      0|	}
34221|       |
34222|      1|	called_scope = obj->ce;
34223|       |
34224|      1|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34224:6): [True: 1, Folded]
  ------------------
34225|      1|	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34226|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34227|      1|	} else {
34228|      1|		zend_object *orig_obj = obj;
34229|       |
34230|      1|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34230:7): [True: 1, Folded]
  ------------------
34231|      1|			function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34232|      1|		}
34233|       |
34234|       |		/* First, locate the function. */
34235|      1|		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (34235:66): [True: 1, Folded]
  ------------------
34236|      1|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34237|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34238|      0|				zend_undefined_method(orig_obj->ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
34239|      0|			}
34240|       |
34241|       |
34242|      0|			if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (34242:8): [Folded, False: 0]
  |  Branch (34242:45): [True: 0, False: 0]
  ------------------
34243|      0|				zend_objects_store_del(orig_obj);
34244|      0|			}
34245|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34245:4): [True: 0, False: 0]
  |  Branch (34245:4): [True: 0, False: 0]
  ------------------
34246|      0|		}
34247|      1|		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34247:7): [True: 1, Folded]
  ------------------
34248|      1|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
34249|      1|		    EXPECTED(obj == orig_obj)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
34250|      1|			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
  ------------------
  |  |  538|      1|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      1|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      1|		slot[0] = (ce); \
  |  |  541|      1|		slot[1] = (ptr); \
  |  |  542|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
34251|      1|		}
34252|      1|		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34252:7): [Folded, False: 1]
  ------------------
34253|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
34254|      0|			if (GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (34254:8): [True: 0, False: 0]
  ------------------
34255|      0|				zend_objects_store_del(orig_obj);
34256|      0|			}
34257|      0|		}
34258|      1|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34259|      1|			init_func_run_time_cache(&fbc->op_array);
34260|      1|		}
34261|      1|	}
34262|       |
34263|      1|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34263:6): [Folded, False: 1]
  ------------------
34264|       |
34265|       |
34266|      0|	}
34267|       |
34268|      1|	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      1|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      1|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      1|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      1|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
34269|      1|	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34270|      0|		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (34270:7): [Folded, False: 0]
  |  Branch (34270:44): [True: 0, False: 0]
  ------------------
34271|      0|			zend_objects_store_del(obj);
34272|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34273|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34273:5): [True: 0, False: 0]
  |  Branch (34273:5): [True: 0, False: 0]
  ------------------
34274|      0|			}
34275|      0|		}
34276|       |		/* call static method */
34277|      0|		obj = (zend_object*)called_scope;
34278|      0|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
34279|      1|	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (34279:13): [Folded, False: 1]
  ------------------
34280|      0|		if (IS_UNUSED == IS_CV) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (34280:7): [Folded, False: 0]
  ------------------
34281|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
34282|      0|		}
34283|       |		/* CV may be changed indirectly (e.g. when it's a reference) */
34284|      0|		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
34285|      0|	}
34286|       |
34287|      1|	call = zend_vm_stack_push_call_frame(call_info,
34288|      1|		fbc, opline->extended_value, obj);
34289|      1|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
34290|      1|	EX(call) = call;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
34291|       |
34292|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34292:2): [True: 0, False: 1]
  |  Branch (34292:2): [True: 1, False: 0]
  ------------------
34293|      1|}
zend_execute.c:ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER:
43750|    397|{
43751|    397|	USE_OPLINE
43752|    397|	zval *function_name;
43753|    397|	zval *object;
43754|    397|	zend_function *fbc;
43755|    397|	zend_class_entry *called_scope;
43756|    397|	zend_object *obj;
43757|    397|	zend_execute_data *call;
43758|    397|	uint32_t call_info;
43759|       |
43760|    397|	SAVE_OPLINE();
  ------------------
  |  |  428|    397|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    397|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43761|       |
43762|    397|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    397|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    397|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
43763|       |
43764|    397|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    397|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    397|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43764:6): [Folded, False: 397]
  ------------------
43765|      0|		function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43766|      0|	}
43767|       |
43768|    397|	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|    397|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|    794|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43768:6): [Folded, False: 397]
  ------------------
43769|      0|	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43770|      0|		do {
43771|      0|			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (43771:8): [Folded, False: 0]
  ------------------
43772|      0|				function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43773|      0|				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43774|      0|					break;
43775|      0|				}
43776|      0|			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43776:15): [Folded, False: 0]
  ------------------
43777|      0|				ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43778|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43779|       |
43780|       |
43781|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43781:6): [True: 0, False: 0]
  |  Branch (43781:6): [True: 0, False: 0]
  ------------------
43782|      0|				}
43783|      0|			}
43784|      0|			zend_throw_error(NULL, "Method name must be a string");
43785|       |
43786|       |
43787|       |
43788|       |
43789|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43789:4): [True: 0, False: 0]
  |  Branch (43789:4): [True: 0, False: 0]
  ------------------
43790|      0|		} while (0);
  ------------------
  |  Branch (43790:12): [Folded, False: 0]
  ------------------
43791|      0|	}
43792|       |
43793|    397|	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|    397|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|    397|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (43793:6): [Folded, False: 397]
  ------------------
43794|      0|		obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
43795|    397|	} else {
43796|    397|		do {
43797|    397|			if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  867|    397|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  864|    794|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|    397|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 391, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (43797:8): [True: 397, Folded]
  ------------------
43798|    391|				obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|    391|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    391|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
43799|    391|			} else {
43800|      6|				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (43800:9): [True: 6, Folded]
  ------------------
43801|      0|					zend_reference *ref = Z_REF_P(object);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
43802|       |
43803|      0|					object = &ref->val;
43804|      0|					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43805|      0|						obj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
43806|      0|						if (IS_CV & IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              						if (IS_CV & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (43806:11): [Folded, False: 0]
  ------------------
43807|      0|							if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43808|      0|								efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43809|      0|							} else {
43810|      0|								Z_ADDREF_P(object);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
43811|      0|							}
43812|      0|						}
43813|      0|						break;
43814|      0|					}
43815|      0|				}
43816|      6|				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (43816:9): [True: 6, Folded]
  ------------------
43817|      3|					object = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      3|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
43818|      3|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
43819|      0|						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              						if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43819:11): [Folded, False: 0]
  ------------------
43820|       |
43821|       |
43822|      0|						}
43823|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43823:7): [True: 0, False: 0]
  |  Branch (43823:7): [True: 0, False: 0]
  ------------------
43824|      0|					}
43825|      3|				}
43826|      6|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43826:9): [True: 6, Folded]
  ------------------
43827|      6|					function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43828|      6|				}
43829|      6|				zend_invalid_method_call(object, function_name);
43830|       |
43831|       |
43832|       |
43833|       |
43834|      6|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      6|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      6|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43834:5): [True: 0, False: 6]
  |  Branch (43834:5): [True: 6, False: 0]
  ------------------
43835|      6|			}
43836|    397|		} while (0);
  ------------------
  |  Branch (43836:12): [Folded, False: 391]
  ------------------
43837|    397|	}
43838|       |
43839|    391|	called_scope = obj->ce;
43840|       |
43841|    391|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    391|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    782|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43841:6): [True: 391, Folded]
  ------------------
43842|    391|	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
  ------------------
  |  |  456|    391|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 391]
  |  |  ------------------
  ------------------
43843|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
43844|    391|	} else {
43845|    391|		zend_object *orig_obj = obj;
43846|       |
43847|    391|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    391|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    391|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43847:7): [True: 391, Folded]
  ------------------
43848|    391|			function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    391|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
43849|    391|		}
43850|       |
43851|       |		/* First, locate the function. */
43852|    391|		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|    391|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    391|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|    391|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|    391|#define IS_CONST	(1<<0)
  ------------------
              		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|    391|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (43852:66): [True: 391, Folded]
  ------------------
43853|    391|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|    391|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 381]
  |  |  ------------------
  ------------------
43854|     10|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 2]
  |  |  ------------------
  ------------------
43855|      8|				zend_undefined_method(orig_obj->ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      8|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      8|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
43856|      8|			}
43857|       |
43858|       |
43859|     10|			if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  866|     10|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43859:8): [Folded, False: 10]
  |  Branch (43859:41): [True: 0, False: 0]
  ------------------
43860|      0|				zend_objects_store_del(orig_obj);
43861|      0|			}
43862|     10|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|     10|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     10|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43862:4): [True: 0, False: 10]
  |  Branch (43862:4): [True: 10, False: 0]
  ------------------
43863|     10|		}
43864|    381|		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    381|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    762|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43864:7): [True: 381, Folded]
  ------------------
43865|    381|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|    762|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 372, False: 9]
  |  |  ------------------
  ------------------
43866|    372|		    EXPECTED(obj == orig_obj)) {
  ------------------
  |  |  456|    372|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 369, False: 3]
  |  |  ------------------
  ------------------
43867|    369|			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
  ------------------
  |  |  538|    369|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|    369|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|    369|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|    369|		slot[0] = (ce); \
  |  |  541|    369|		slot[1] = (ptr); \
  |  |  542|    369|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 369]
  |  |  ------------------
  ------------------
43868|    369|		}
43869|    381|		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  867|    381|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  866|    381|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  865|    381|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43869:7): [Folded, False: 381]
  ------------------
43870|      0|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43871|      0|			if (GC_DELREF(orig_obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43871:8): [True: 0, False: 0]
  ------------------
43872|      0|				zend_objects_store_del(orig_obj);
43873|      0|			}
43874|      0|		}
43875|    381|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|    762|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 34, False: 347]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|     68|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 26, False: 8]
  |  |  |  Branch (457:52): [True: 0, False: 34]
  |  |  ------------------
  ------------------
43876|     26|			init_func_run_time_cache(&fbc->op_array);
43877|     26|		}
43878|    381|	}
43879|       |
43880|    381|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    381|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    381|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (43880:6): [Folded, False: 381]
  ------------------
43881|       |
43882|       |
43883|      0|	}
43884|       |
43885|    381|	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|    381|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    381|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    381|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|    381|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|    381|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    381|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    381|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    381|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    381|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    381|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
43886|    381|	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
  ------------------
  |  |  457|    381|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 379]
  |  |  ------------------
  ------------------
43887|      2|		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && GC_DELREF(obj) == 0) {
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (43887:7): [Folded, False: 2]
  |  Branch (43887:40): [True: 0, False: 0]
  ------------------
43888|      0|			zend_objects_store_del(obj);
43889|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
43890|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (43890:5): [True: 0, False: 0]
  |  Branch (43890:5): [True: 0, False: 0]
  ------------------
43891|      0|			}
43892|      0|		}
43893|       |		/* call static method */
43894|      2|		obj = (zend_object*)called_scope;
43895|      2|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      2|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      2|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      2|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
43896|    379|	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  867|    379|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  866|    379|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  865|    379|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
  ------------------
  |  |  867|    379|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43896:13): [True: 379, Folded]
  ------------------
43897|    379|		if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    379|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    379|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (43897:7): [True: 379, Folded]
  ------------------
43898|    379|			GC_ADDREF(obj); /* For $this pointer */
  ------------------
  |  |  718|    379|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
43899|    379|		}
43900|       |		/* CV may be changed indirectly (e.g. when it's a reference) */
43901|    379|		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  681|    379|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    379|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    379|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  657|    379|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|    379|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|    379|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    379|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    379|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    379|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    379|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS | ZEND_CALL_RELEASE_THIS;
  ------------------
  |  |  667|    379|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
43902|    379|	}
43903|       |
43904|    381|	call = zend_vm_stack_push_call_frame(call_info,
43905|    381|		fbc, opline->extended_value, obj);
43906|    381|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|    381|#define EX(element) 			((execute_data)->element)
  ------------------
43907|    381|	EX(call) = call;
  ------------------
  |  |  730|    381|#define EX(element) 			((execute_data)->element)
  ------------------
43908|       |
43909|    381|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    381|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    381|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    381|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 381]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    381|	} else { \
  |  |  |  | 5761|    381|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    381|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    381|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    381|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    381|	} \
  |  |  |  | 5764|    381|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    381|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (43909:2): [True: 0, False: 381]
  |  Branch (43909:2): [True: 381, False: 0]
  ------------------
43910|    381|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER:
 7538|    366|{
 7539|    366|	USE_OPLINE
 7540|    366|	zval *function_name;
 7541|    366|	zend_class_entry *ce;
 7542|    366|	uint32_t call_info;
 7543|    366|	zend_function *fbc;
 7544|    366|	zend_execute_data *call;
 7545|       |
 7546|    366|	SAVE_OPLINE();
  ------------------
  |  |  428|    366|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    366|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7547|       |
 7548|    366|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    366|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    366|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7548:6): [True: 366, Folded]
  ------------------
 7549|       |		/* no function found. try a static method in class */
 7550|    366|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|    366|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|    366|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7551|    366|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|    366|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 106, False: 260]
  |  |  ------------------
  ------------------
 7552|    106|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|    106|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    106|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|    106|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    106|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|    106|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    106|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 7553|    106|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|    106|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 104]
  |  |  ------------------
  ------------------
 7554|       |
 7555|       |
 7556|      2|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7556:5): [True: 0, False: 2]
  |  Branch (7556:5): [True: 2, False: 0]
  ------------------
 7557|      2|			}
 7558|    104|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7558:8): [Folded, False: 104]
  ------------------
 7559|      0|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7560|      0|			}
 7561|    104|		}
 7562|    366|	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (7562:13): [Folded, False: 0]
  ------------------
 7563|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
 7564|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7565|       |
 7566|       |
 7567|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7567:4): [True: 0, False: 0]
  |  Branch (7567:4): [True: 0, False: 0]
  ------------------
 7568|      0|		}
 7569|      0|	} else {
 7570|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 7571|      0|	}
 7572|       |
 7573|    364|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    364|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    728|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7573:6): [True: 0, Folded]
  ------------------
 7574|      0|	    IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    364|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7574:6): [True: 0, Folded]
  ------------------
 7575|    364|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|    364|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 260, False: 104]
  |  |  ------------------
  ------------------
 7576|       |		/* nothing to do */
 7577|    260|	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|    208|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7577:13): [Folded, False: 104]
  ------------------
 7578|      0|	           IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	           IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7578:13): [True: 0, Folded]
  ------------------
 7579|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7580|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7581|    104|	} else if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|    104|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (7581:13): [True: 104, Folded]
  ------------------
 7582|    104|		function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    104|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7583|    104|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7583:7): [Folded, False: 104]
  ------------------
 7584|      0|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7585|      0|				do {
 7586|      0|					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7586:10): [Folded, False: 0]
  ------------------
 7587|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7588|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7589|      0|							break;
 7590|      0|						}
 7591|      0|					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7591:17): [Folded, False: 0]
  ------------------
 7592|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 7593|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7594|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7594:8): [True: 0, False: 0]
  |  Branch (7594:8): [True: 0, False: 0]
  ------------------
 7595|      0|						}
 7596|      0|					}
 7597|      0|					zend_throw_error(NULL, "Method name must be a string");
 7598|       |
 7599|       |
 7600|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7600:6): [True: 0, False: 0]
  |  Branch (7600:6): [True: 0, False: 0]
  ------------------
 7601|      0|				} while (0);
  ------------------
  |  Branch (7601:14): [Folded, False: 0]
  ------------------
 7602|      0|			}
 7603|      0|		}
 7604|       |
 7605|    104|		if (ce->get_static_method) {
  ------------------
  |  Branch (7605:7): [True: 0, False: 104]
  ------------------
 7606|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7607|    104|		} else {
 7608|    104|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|    104|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    104|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|    104|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|    104|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (7608:66): [True: 104, Folded]
  ------------------
 7609|    104|		}
 7610|    104|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|    104|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 99]
  |  |  ------------------
  ------------------
 7611|      5|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  ------------------
  ------------------
 7612|      4|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7613|      4|			}
 7614|       |
 7615|       |
 7616|      5|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      5|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      5|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7616:4): [True: 0, False: 5]
  |  Branch (7616:4): [True: 5, False: 0]
  ------------------
 7617|      5|		}
 7618|     99|		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|     99|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|    198|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7618:7): [True: 99, Folded]
  ------------------
 7619|     99|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|    198|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 95, False: 4]
  |  |  ------------------
  ------------------
 7620|     95|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|     95|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 95, False: 0]
  |  |  ------------------
  ------------------
 7621|     95|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|     95|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|     95|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|     95|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|     95|		slot[0] = (ce); \
  |  |  541|     95|		slot[1] = (ptr); \
  |  |  542|     95|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 95]
  |  |  ------------------
  ------------------
 7622|     95|		}
 7623|     99|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|    198|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 34, False: 65]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|     68|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 20, False: 14]
  |  |  |  Branch (457:52): [True: 0, False: 34]
  |  |  ------------------
  ------------------
 7624|     20|			init_func_run_time_cache(&fbc->op_array);
 7625|     20|		}
 7626|     99|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     99|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|     99|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7626:7): [Folded, False: 99]
  ------------------
 7627|       |
 7628|       |
 7629|      0|		}
 7630|     99|	} else {
 7631|      0|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7632|      0|			zend_throw_error(NULL, "Cannot call constructor");
 7633|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7633:4): [True: 0, False: 0]
  |  Branch (7633:4): [True: 0, False: 0]
  ------------------
 7634|      0|		}
 7635|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (7635:7): [True: 0, False: 0]
  |  Branch (7635:40): [True: 0, False: 0]
  |  Branch (7635:96): [True: 0, False: 0]
  ------------------
 7636|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7637|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7637:4): [True: 0, False: 0]
  |  Branch (7637:4): [True: 0, False: 0]
  ------------------
 7638|      0|		}
 7639|      0|		fbc = ce->constructor;
 7640|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7641|      0|			init_func_run_time_cache(&fbc->op_array);
 7642|      0|		}
 7643|      0|	}
 7644|       |
 7645|    359|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|    359|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (7645:6): [True: 4, False: 355]
  ------------------
 7646|      4|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      8|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (7646:7): [True: 1, False: 3]
  |  Branch (7646:40): [True: 0, False: 1]
  ------------------
 7647|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 7648|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7649|      4|		} else {
 7650|      4|			zend_non_static_method_call(fbc);
 7651|      4|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7651:4): [True: 0, False: 4]
  |  Branch (7651:4): [True: 4, False: 0]
  ------------------
 7652|      4|		}
 7653|    355|	} else {
 7654|       |		/* previous opcode is ZEND_FETCH_CLASS */
 7655|    355|		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  864|    355|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  863|    710|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (7655:7): [Folded, False: 355]
  ------------------
 7656|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (7656:8): [True: 0, False: 0]
  ------------------
 7657|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (7657:8): [True: 0, False: 0]
  ------------------
 7658|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (7658:8): [True: 0, False: 0]
  ------------------
 7659|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 7660|      0|			} else {
 7661|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
 7662|      0|			}
 7663|      0|		}
 7664|    355|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|    355|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|    355|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|    355|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
 7665|    355|	}
 7666|       |
 7667|    355|	call = zend_vm_stack_push_call_frame(call_info,
 7668|    355|		fbc, opline->extended_value, ce);
 7669|    355|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|    355|#define EX(element) 			((execute_data)->element)
  ------------------
 7670|    355|	EX(call) = call;
  ------------------
  |  |  730|    355|#define EX(element) 			((execute_data)->element)
  ------------------
 7671|       |
 7672|    355|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    355|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    355|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    355|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 355]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    355|	} else { \
  |  |  |  | 5761|    355|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    355|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    355|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    355|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    355|	} \
  |  |  |  | 5764|    355|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    355|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7672:2): [True: 0, False: 355]
  |  Branch (7672:2): [True: 355, False: 0]
  ------------------
 7673|    355|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER:
10272|      6|{
10273|      6|	USE_OPLINE
10274|      6|	zval *function_name;
10275|      6|	zend_class_entry *ce;
10276|      6|	uint32_t call_info;
10277|      6|	zend_function *fbc;
10278|      6|	zend_execute_data *call;
10279|       |
10280|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10281|       |
10282|      6|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10282:6): [True: 6, Folded]
  ------------------
10283|       |		/* no function found. try a static method in class */
10284|      6|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      6|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10285|      6|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
10286|      6|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      6|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      6|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
10287|      6|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  ------------------
  ------------------
10288|      1|				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10289|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10289:5): [True: 0, False: 1]
  |  Branch (10289:5): [True: 1, False: 0]
  ------------------
10290|      1|			}
10291|      5|			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10291:8): [True: 5, Folded]
  ------------------
10292|      5|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      5|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      5|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
10293|      5|			}
10294|      5|		}
10295|      6|	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (10295:13): [Folded, False: 0]
  ------------------
10296|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
10297|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10298|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10299|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10299:4): [True: 0, False: 0]
  |  Branch (10299:4): [True: 0, False: 0]
  ------------------
10300|      0|		}
10301|      0|	} else {
10302|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
10303|      0|	}
10304|       |
10305|      5|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10305:6): [True: 0, Folded]
  ------------------
10306|      0|	    IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10306:6): [Folded, False: 0]
  ------------------
10307|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10308|       |		/* nothing to do */
10309|      5|	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10309:13): [Folded, False: 5]
  ------------------
10310|      0|	           IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	           IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10310:13): [Folded, False: 0]
  ------------------
10311|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10312|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10313|      5|	} else if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (10313:13): [True: 5, Folded]
  ------------------
10314|      5|		function_name = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10315|      5|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10315:7): [True: 5, Folded]
  ------------------
10316|      5|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
10317|      0|				do {
10318|      0|					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10318:10): [Folded, False: 0]
  ------------------
10319|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10320|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10321|      0|							break;
10322|      0|						}
10323|      0|					} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10323:17): [Folded, False: 0]
  ------------------
10324|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10325|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10326|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10326:8): [True: 0, False: 0]
  |  Branch (10326:8): [True: 0, False: 0]
  ------------------
10327|      0|						}
10328|      0|					}
10329|      0|					zend_throw_error(NULL, "Method name must be a string");
10330|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10331|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10331:6): [True: 0, False: 0]
  |  Branch (10331:6): [True: 0, False: 0]
  ------------------
10332|      0|				} while (0);
  ------------------
  |  Branch (10332:14): [Folded, False: 0]
  ------------------
10333|      0|			}
10334|      5|		}
10335|       |
10336|      5|		if (ce->get_static_method) {
  ------------------
  |  Branch (10336:7): [True: 0, False: 5]
  ------------------
10337|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10338|      5|		} else {
10339|      5|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (10339:66): [Folded, False: 5]
  ------------------
10340|      5|		}
10341|      5|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
10342|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10343|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
10344|      0|			}
10345|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10346|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10346:4): [True: 0, False: 0]
  |  Branch (10346:4): [True: 0, False: 0]
  ------------------
10347|      0|		}
10348|      5|		if (IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10348:7): [Folded, False: 5]
  ------------------
10349|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10350|      0|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10351|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
10352|      0|		}
10353|      5|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 5]
  |  |  ------------------
  ------------------
10354|      2|			init_func_run_time_cache(&fbc->op_array);
10355|      2|		}
10356|      5|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (10356:7): [True: 5, Folded]
  ------------------
10357|      5|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10358|      5|		}
10359|      5|	} else {
10360|      0|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10361|      0|			zend_throw_error(NULL, "Cannot call constructor");
10362|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10362:4): [True: 0, False: 0]
  |  Branch (10362:4): [True: 0, False: 0]
  ------------------
10363|      0|		}
10364|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (10364:7): [True: 0, False: 0]
  |  Branch (10364:40): [True: 0, False: 0]
  |  Branch (10364:96): [True: 0, False: 0]
  ------------------
10365|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
10366|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10366:4): [True: 0, False: 0]
  |  Branch (10366:4): [True: 0, False: 0]
  ------------------
10367|      0|		}
10368|      0|		fbc = ce->constructor;
10369|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10370|      0|			init_func_run_time_cache(&fbc->op_array);
10371|      0|		}
10372|      0|	}
10373|       |
10374|      5|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      5|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (10374:6): [True: 0, False: 5]
  ------------------
10375|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (10375:7): [True: 0, False: 0]
  |  Branch (10375:40): [True: 0, False: 0]
  ------------------
10376|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
10377|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10378|      0|		} else {
10379|      0|			zend_non_static_method_call(fbc);
10380|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10380:4): [True: 0, False: 0]
  |  Branch (10380:4): [True: 0, False: 0]
  ------------------
10381|      0|		}
10382|      5|	} else {
10383|       |		/* previous opcode is ZEND_FETCH_CLASS */
10384|      5|		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (10384:7): [Folded, False: 5]
  ------------------
10385|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (10385:8): [True: 0, False: 0]
  ------------------
10386|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (10386:8): [True: 0, False: 0]
  ------------------
10387|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (10387:8): [True: 0, False: 0]
  ------------------
10388|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
10389|      0|			} else {
10390|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
10391|      0|			}
10392|      0|		}
10393|      5|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      5|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      5|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      5|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
10394|      5|	}
10395|       |
10396|      5|	call = zend_vm_stack_push_call_frame(call_info,
10397|      5|		fbc, opline->extended_value, ce);
10398|      5|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
10399|      5|	EX(call) = call;
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
10400|       |
10401|      5|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      5|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10401:2): [True: 0, False: 5]
  |  Branch (10401:2): [True: 5, False: 0]
  ------------------
10402|      5|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER:
11059|      1|{
11060|      1|	USE_OPLINE
11061|      1|	zval *function_name;
11062|      1|	zend_class_entry *ce;
11063|      1|	uint32_t call_info;
11064|      1|	zend_function *fbc;
11065|      1|	zend_execute_data *call;
11066|       |
11067|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11068|       |
11069|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11069:6): [True: 1, Folded]
  ------------------
11070|       |		/* no function found. try a static method in class */
11071|      1|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      1|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11072|      1|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
11073|      1|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      1|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      1|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
11074|      1|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
11075|       |
11076|       |
11077|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11077:5): [True: 0, False: 0]
  |  Branch (11077:5): [True: 0, False: 0]
  ------------------
11078|      0|			}
11079|      1|			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11079:8): [True: 1, Folded]
  ------------------
11080|      1|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      1|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      1|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11081|      1|			}
11082|      1|		}
11083|      1|	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11083:13): [Folded, False: 0]
  ------------------
11084|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
11085|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11086|       |
11087|       |
11088|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11088:4): [True: 0, False: 0]
  |  Branch (11088:4): [True: 0, False: 0]
  ------------------
11089|      0|		}
11090|      0|	} else {
11091|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
11092|      0|	}
11093|       |
11094|      1|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11094:6): [True: 0, Folded]
  ------------------
11095|      0|	    IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11095:6): [Folded, False: 0]
  ------------------
11096|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11097|       |		/* nothing to do */
11098|      1|	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11098:13): [Folded, False: 1]
  ------------------
11099|      0|	           IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	           IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11099:13): [Folded, False: 0]
  ------------------
11100|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11101|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11102|      1|	} else if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	} else if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11102:13): [Folded, False: 1]
  ------------------
11103|      0|		function_name = NULL;
11104|      0|		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11104:7): [True: 0, Folded]
  ------------------
11105|      0|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11106|      0|				do {
11107|      0|					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11107:10): [Folded, False: 0]
  ------------------
11108|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11109|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11110|      0|							break;
11111|      0|						}
11112|      0|					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11112:17): [Folded, False: 0]
  ------------------
11113|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11114|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11115|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11115:8): [True: 0, False: 0]
  |  Branch (11115:8): [True: 0, False: 0]
  ------------------
11116|      0|						}
11117|      0|					}
11118|      0|					zend_throw_error(NULL, "Method name must be a string");
11119|       |
11120|       |
11121|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11121:6): [True: 0, False: 0]
  |  Branch (11121:6): [True: 0, False: 0]
  ------------------
11122|      0|				} while (0);
  ------------------
  |  Branch (11122:14): [Folded, False: 0]
  ------------------
11123|      0|			}
11124|      0|		}
11125|       |
11126|      0|		if (ce->get_static_method) {
  ------------------
  |  Branch (11126:7): [True: 0, False: 0]
  ------------------
11127|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11128|      0|		} else {
11129|      0|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (11129:66): [Folded, False: 0]
  ------------------
11130|      0|		}
11131|      0|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11132|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11133|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11134|      0|			}
11135|       |
11136|       |
11137|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11137:4): [True: 0, False: 0]
  |  Branch (11137:4): [True: 0, False: 0]
  ------------------
11138|      0|		}
11139|      0|		if (IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11139:7): [Folded, False: 0]
  ------------------
11140|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11141|      0|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11142|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11143|      0|		}
11144|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11145|      0|			init_func_run_time_cache(&fbc->op_array);
11146|      0|		}
11147|      0|		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11147:7): [True: 0, Folded]
  ------------------
11148|       |
11149|       |
11150|      0|		}
11151|      1|	} else {
11152|      1|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
11153|      1|			zend_throw_error(NULL, "Cannot call constructor");
11154|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11154:4): [True: 0, False: 1]
  |  Branch (11154:4): [True: 1, False: 0]
  ------------------
11155|      1|		}
11156|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (11156:7): [True: 0, False: 0]
  |  Branch (11156:40): [True: 0, False: 0]
  |  Branch (11156:96): [True: 0, False: 0]
  ------------------
11157|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
11158|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11158:4): [True: 0, False: 0]
  |  Branch (11158:4): [True: 0, False: 0]
  ------------------
11159|      0|		}
11160|      0|		fbc = ce->constructor;
11161|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11162|      0|			init_func_run_time_cache(&fbc->op_array);
11163|      0|		}
11164|      0|	}
11165|       |
11166|      0|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (11166:6): [True: 0, False: 0]
  ------------------
11167|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (11167:7): [True: 0, False: 0]
  |  Branch (11167:40): [True: 0, False: 0]
  ------------------
11168|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
11169|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11170|      0|		} else {
11171|      0|			zend_non_static_method_call(fbc);
11172|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11172:4): [True: 0, False: 0]
  |  Branch (11172:4): [True: 0, False: 0]
  ------------------
11173|      0|		}
11174|      0|	} else {
11175|       |		/* previous opcode is ZEND_FETCH_CLASS */
11176|      0|		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11176:7): [Folded, False: 0]
  ------------------
11177|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (11177:8): [True: 0, False: 0]
  ------------------
11178|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (11178:8): [True: 0, False: 0]
  ------------------
11179|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (11179:8): [True: 0, False: 0]
  ------------------
11180|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
11181|      0|			} else {
11182|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
11183|      0|			}
11184|      0|		}
11185|      0|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
11186|      0|	}
11187|       |
11188|      0|	call = zend_vm_stack_push_call_frame(call_info,
11189|      0|		fbc, opline->extended_value, ce);
11190|      0|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
11191|      0|	EX(call) = call;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
11192|       |
11193|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11193:2): [True: 0, False: 0]
  |  Branch (11193:2): [True: 0, False: 0]
  ------------------
11194|      0|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER:
12881|      5|{
12882|      5|	USE_OPLINE
12883|      5|	zval *function_name;
12884|      5|	zend_class_entry *ce;
12885|      5|	uint32_t call_info;
12886|      5|	zend_function *fbc;
12887|      5|	zend_execute_data *call;
12888|       |
12889|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12890|       |
12891|      5|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12891:6): [True: 5, Folded]
  ------------------
12892|       |		/* no function found. try a static method in class */
12893|      5|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      5|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12894|      5|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
12895|      5|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      5|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      5|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
12896|      5|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
12897|       |
12898|       |
12899|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12899:5): [True: 0, False: 0]
  |  Branch (12899:5): [True: 0, False: 0]
  ------------------
12900|      0|			}
12901|      5|			if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12901:8): [True: 5, Folded]
  ------------------
12902|      5|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      5|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      5|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
12903|      5|			}
12904|      5|		}
12905|      5|	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (12905:13): [Folded, False: 0]
  ------------------
12906|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
12907|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12908|       |
12909|       |
12910|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12910:4): [True: 0, False: 0]
  |  Branch (12910:4): [True: 0, False: 0]
  ------------------
12911|      0|		}
12912|      0|	} else {
12913|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
12914|      0|	}
12915|       |
12916|      5|	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12916:6): [True: 0, Folded]
  ------------------
12917|      0|	    IS_CV == IS_CONST &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    IS_CV == IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12917:6): [Folded, False: 0]
  ------------------
12918|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12919|       |		/* nothing to do */
12920|      5|	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST &&
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12920:13): [Folded, False: 5]
  ------------------
12921|      0|	           IS_CV == IS_CONST &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	           IS_CV == IS_CONST &&
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12921:13): [Folded, False: 0]
  ------------------
12922|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12923|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
12924|      5|	} else if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (12924:13): [True: 5, Folded]
  ------------------
12925|      5|		function_name = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
12926|      5|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12926:7): [True: 5, Folded]
  ------------------
12927|      5|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
12928|      2|				do {
12929|      2|					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12929:10): [True: 2, Folded]
  ------------------
12930|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12931|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12932|      0|							break;
12933|      0|						}
12934|      2|					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (12934:17): [True: 2, Folded]
  ------------------
12935|      1|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      1|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
12936|      1|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
12937|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12937:8): [True: 0, False: 0]
  |  Branch (12937:8): [True: 0, False: 0]
  ------------------
12938|      0|						}
12939|      1|					}
12940|      2|					zend_throw_error(NULL, "Method name must be a string");
12941|       |
12942|       |
12943|      2|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12943:6): [True: 0, False: 2]
  |  Branch (12943:6): [True: 2, False: 0]
  ------------------
12944|      2|				} while (0);
  ------------------
  |  Branch (12944:14): [Folded, False: 0]
  ------------------
12945|      2|			}
12946|      5|		}
12947|       |
12948|      3|		if (ce->get_static_method) {
  ------------------
  |  Branch (12948:7): [True: 0, False: 3]
  ------------------
12949|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12950|      3|		} else {
12951|      3|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (12951:66): [Folded, False: 3]
  ------------------
12952|      3|		}
12953|      3|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
12954|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12955|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12956|      0|			}
12957|       |
12958|       |
12959|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12959:4): [True: 0, False: 0]
  |  Branch (12959:4): [True: 0, False: 0]
  ------------------
12960|      0|		}
12961|      3|		if (IS_CV == IS_CONST &&
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST &&
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12961:7): [Folded, False: 3]
  ------------------
12962|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12963|      0|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12964|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12965|      0|		}
12966|      3|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  ------------------
  ------------------
12967|      0|			init_func_run_time_cache(&fbc->op_array);
12968|      0|		}
12969|      3|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (12969:7): [True: 3, Folded]
  ------------------
12970|       |
12971|       |
12972|      3|		}
12973|      3|	} else {
12974|      0|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12975|      0|			zend_throw_error(NULL, "Cannot call constructor");
12976|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12976:4): [True: 0, False: 0]
  |  Branch (12976:4): [True: 0, False: 0]
  ------------------
12977|      0|		}
12978|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (12978:7): [True: 0, False: 0]
  |  Branch (12978:40): [True: 0, False: 0]
  |  Branch (12978:96): [True: 0, False: 0]
  ------------------
12979|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
12980|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12980:4): [True: 0, False: 0]
  |  Branch (12980:4): [True: 0, False: 0]
  ------------------
12981|      0|		}
12982|      0|		fbc = ce->constructor;
12983|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12984|      0|			init_func_run_time_cache(&fbc->op_array);
12985|      0|		}
12986|      0|	}
12987|       |
12988|      3|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      3|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (12988:6): [True: 0, False: 3]
  ------------------
12989|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (12989:7): [True: 0, False: 0]
  |  Branch (12989:40): [True: 0, False: 0]
  ------------------
12990|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
12991|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12992|      0|		} else {
12993|      0|			zend_non_static_method_call(fbc);
12994|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12994:4): [True: 0, False: 0]
  |  Branch (12994:4): [True: 0, False: 0]
  ------------------
12995|      0|		}
12996|      3|	} else {
12997|       |		/* previous opcode is ZEND_FETCH_CLASS */
12998|      3|		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_UNUSED
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (12998:7): [Folded, False: 3]
  ------------------
12999|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (12999:8): [True: 0, False: 0]
  ------------------
13000|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (13000:8): [True: 0, False: 0]
  ------------------
13001|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (13001:8): [True: 0, False: 0]
  ------------------
13002|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
13003|      0|			} else {
13004|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
13005|      0|			}
13006|      0|		}
13007|      3|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      3|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      3|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      3|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
13008|      3|	}
13009|       |
13010|      3|	call = zend_vm_stack_push_call_frame(call_info,
13011|      3|		fbc, opline->extended_value, ce);
13012|      3|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
13013|      3|	EX(call) = call;
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
13014|       |
13015|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13015:2): [True: 0, False: 3]
  |  Branch (13015:2): [True: 3, False: 0]
  ------------------
13016|      3|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER:
25513|      2|{
25514|      2|	USE_OPLINE
25515|      2|	zval *function_name;
25516|      2|	zend_class_entry *ce;
25517|      2|	uint32_t call_info;
25518|      2|	zend_function *fbc;
25519|      2|	zend_execute_data *call;
25520|       |
25521|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25522|       |
25523|      2|	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25523:6): [Folded, False: 2]
  ------------------
25524|       |		/* no function found. try a static method in class */
25525|      0|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25526|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25527|      0|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
25528|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25529|       |
25530|       |
25531|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25531:5): [True: 0, False: 0]
  |  Branch (25531:5): [True: 0, False: 0]
  ------------------
25532|      0|			}
25533|      0|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25533:8): [Folded, False: 0]
  ------------------
25534|      0|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25535|      0|			}
25536|      0|		}
25537|      2|	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25537:13): [Folded, False: 2]
  ------------------
25538|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
25539|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25540|       |
25541|       |
25542|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25542:4): [True: 0, False: 0]
  |  Branch (25542:4): [True: 0, False: 0]
  ------------------
25543|      0|		}
25544|      2|	} else {
25545|      2|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      2|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      2|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
25546|      2|	}
25547|       |
25548|      2|	if (IS_VAR == IS_CONST &&
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25548:6): [Folded, False: 2]
  ------------------
25549|      0|	    IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	    IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25549:6): [True: 0, Folded]
  ------------------
25550|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25551|       |		/* nothing to do */
25552|      2|	} else if (IS_VAR != IS_CONST &&
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR != IS_CONST &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25552:13): [True: 0, Folded]
  ------------------
25553|      0|	           IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	           IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25553:13): [True: 0, Folded]
  ------------------
25554|      2|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
25555|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25556|      2|	} else if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25556:13): [True: 2, Folded]
  ------------------
25557|      2|		function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
25558|      2|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25558:7): [Folded, False: 2]
  ------------------
25559|      0|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25560|      0|				do {
25561|      0|					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25561:10): [Folded, False: 0]
  ------------------
25562|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25563|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25564|      0|							break;
25565|      0|						}
25566|      0|					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (25566:17): [Folded, False: 0]
  ------------------
25567|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25568|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25569|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25569:8): [True: 0, False: 0]
  |  Branch (25569:8): [True: 0, False: 0]
  ------------------
25570|      0|						}
25571|      0|					}
25572|      0|					zend_throw_error(NULL, "Method name must be a string");
25573|       |
25574|       |
25575|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25575:6): [True: 0, False: 0]
  |  Branch (25575:6): [True: 0, False: 0]
  ------------------
25576|      0|				} while (0);
  ------------------
  |  Branch (25576:14): [Folded, False: 0]
  ------------------
25577|      0|			}
25578|      0|		}
25579|       |
25580|      2|		if (ce->get_static_method) {
  ------------------
  |  Branch (25580:7): [True: 0, False: 2]
  ------------------
25581|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
25582|      2|		} else {
25583|      2|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (25583:66): [True: 2, Folded]
  ------------------
25584|      2|		}
25585|      2|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
25586|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25587|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
25588|      0|			}
25589|       |
25590|       |
25591|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25591:4): [True: 0, False: 0]
  |  Branch (25591:4): [True: 0, False: 0]
  ------------------
25592|      0|		}
25593|      2|		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25593:7): [True: 2, Folded]
  ------------------
25594|      2|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
25595|      2|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
25596|      2|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      2|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      2|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      2|		slot[0] = (ce); \
  |  |  541|      2|		slot[1] = (ptr); \
  |  |  542|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
25597|      2|		}
25598|      2|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
25599|      0|			init_func_run_time_cache(&fbc->op_array);
25600|      0|		}
25601|      2|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25601:7): [Folded, False: 2]
  ------------------
25602|       |
25603|       |
25604|      0|		}
25605|      2|	} else {
25606|      0|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25607|      0|			zend_throw_error(NULL, "Cannot call constructor");
25608|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25608:4): [True: 0, False: 0]
  |  Branch (25608:4): [True: 0, False: 0]
  ------------------
25609|      0|		}
25610|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (25610:7): [True: 0, False: 0]
  |  Branch (25610:40): [True: 0, False: 0]
  |  Branch (25610:96): [True: 0, False: 0]
  ------------------
25611|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
25612|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25612:4): [True: 0, False: 0]
  |  Branch (25612:4): [True: 0, False: 0]
  ------------------
25613|      0|		}
25614|      0|		fbc = ce->constructor;
25615|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
25616|      0|			init_func_run_time_cache(&fbc->op_array);
25617|      0|		}
25618|      0|	}
25619|       |
25620|      2|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      2|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (25620:6): [True: 0, False: 2]
  ------------------
25621|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (25621:7): [True: 0, False: 0]
  |  Branch (25621:40): [True: 0, False: 0]
  ------------------
25622|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
25623|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25624|      0|		} else {
25625|      0|			zend_non_static_method_call(fbc);
25626|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25626:4): [True: 0, False: 0]
  |  Branch (25626:4): [True: 0, False: 0]
  ------------------
25627|      0|		}
25628|      2|	} else {
25629|       |		/* previous opcode is ZEND_FETCH_CLASS */
25630|      2|		if (IS_VAR == IS_UNUSED
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_UNUSED
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (25630:7): [Folded, False: 2]
  ------------------
25631|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (25631:8): [True: 0, False: 0]
  ------------------
25632|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (25632:8): [True: 0, False: 0]
  ------------------
25633|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (25633:8): [True: 0, False: 0]
  ------------------
25634|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
25635|      0|			} else {
25636|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
25637|      0|			}
25638|      0|		}
25639|      2|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      2|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      2|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      2|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
25640|      2|	}
25641|       |
25642|      2|	call = zend_vm_stack_push_call_frame(call_info,
25643|      2|		fbc, opline->extended_value, ce);
25644|      2|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
25645|      2|	EX(call) = call;
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
25646|       |
25647|      2|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25647:2): [True: 0, False: 2]
  |  Branch (25647:2): [True: 2, False: 0]
  ------------------
25648|      2|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER:
28213|      1|{
28214|      1|	USE_OPLINE
28215|      1|	zval *function_name;
28216|      1|	zend_class_entry *ce;
28217|      1|	uint32_t call_info;
28218|      1|	zend_function *fbc;
28219|      1|	zend_execute_data *call;
28220|       |
28221|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28222|       |
28223|      1|	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28223:6): [Folded, False: 1]
  ------------------
28224|       |		/* no function found. try a static method in class */
28225|      0|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28226|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28227|      0|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
28228|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28229|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28230|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28230:5): [True: 0, False: 0]
  |  Branch (28230:5): [True: 0, False: 0]
  ------------------
28231|      0|			}
28232|      0|			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28232:8): [True: 0, Folded]
  ------------------
28233|      0|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
28234|      0|			}
28235|      0|		}
28236|      1|	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (28236:13): [Folded, False: 1]
  ------------------
28237|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
28238|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28239|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28240|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28240:4): [True: 0, False: 0]
  |  Branch (28240:4): [True: 0, False: 0]
  ------------------
28241|      0|		}
28242|      1|	} else {
28243|      1|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      1|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      1|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
28244|      1|	}
28245|       |
28246|      1|	if (IS_VAR == IS_CONST &&
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28246:6): [Folded, False: 1]
  ------------------
28247|      0|	    IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28247:6): [Folded, False: 0]
  ------------------
28248|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28249|       |		/* nothing to do */
28250|      1|	} else if (IS_VAR != IS_CONST &&
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR != IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28250:13): [True: 0, Folded]
  ------------------
28251|      0|	           IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	           IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28251:13): [Folded, False: 0]
  ------------------
28252|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28253|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
28254|      1|	} else if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (28254:13): [True: 1, Folded]
  ------------------
28255|      1|		function_name = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28256|      1|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28256:7): [True: 1, Folded]
  ------------------
28257|      1|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
28258|      0|				do {
28259|      0|					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_TMP_VAR & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28259:10): [Folded, False: 0]
  ------------------
28260|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28261|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28262|      0|							break;
28263|      0|						}
28264|      0|					} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (28264:17): [Folded, False: 0]
  ------------------
28265|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
28266|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28267|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28267:8): [True: 0, False: 0]
  |  Branch (28267:8): [True: 0, False: 0]
  ------------------
28268|      0|						}
28269|      0|					}
28270|      0|					zend_throw_error(NULL, "Method name must be a string");
28271|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28272|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28272:6): [True: 0, False: 0]
  |  Branch (28272:6): [True: 0, False: 0]
  ------------------
28273|      0|				} while (0);
  ------------------
  |  Branch (28273:14): [Folded, False: 0]
  ------------------
28274|      0|			}
28275|      1|		}
28276|       |
28277|      1|		if (ce->get_static_method) {
  ------------------
  |  Branch (28277:7): [True: 0, False: 1]
  ------------------
28278|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
28279|      1|		} else {
28280|      1|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_TMP_VAR == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (28280:66): [Folded, False: 1]
  ------------------
28281|      1|		}
28282|      1|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
28283|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28284|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
28285|      0|			}
28286|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28287|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28287:4): [True: 0, False: 0]
  |  Branch (28287:4): [True: 0, False: 0]
  ------------------
28288|      0|		}
28289|      1|		if (IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28289:7): [Folded, False: 1]
  ------------------
28290|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28291|      0|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28292|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
28293|      0|		}
28294|      1|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
28295|      0|			init_func_run_time_cache(&fbc->op_array);
28296|      0|		}
28297|      1|		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (28297:7): [True: 1, Folded]
  ------------------
28298|      1|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
28299|      1|		}
28300|      1|	} else {
28301|      0|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28302|      0|			zend_throw_error(NULL, "Cannot call constructor");
28303|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28303:4): [True: 0, False: 0]
  |  Branch (28303:4): [True: 0, False: 0]
  ------------------
28304|      0|		}
28305|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (28305:7): [True: 0, False: 0]
  |  Branch (28305:40): [True: 0, False: 0]
  |  Branch (28305:96): [True: 0, False: 0]
  ------------------
28306|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
28307|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28307:4): [True: 0, False: 0]
  |  Branch (28307:4): [True: 0, False: 0]
  ------------------
28308|      0|		}
28309|      0|		fbc = ce->constructor;
28310|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
28311|      0|			init_func_run_time_cache(&fbc->op_array);
28312|      0|		}
28313|      0|	}
28314|       |
28315|      1|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      1|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (28315:6): [True: 0, False: 1]
  ------------------
28316|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (28316:7): [True: 0, False: 0]
  |  Branch (28316:40): [True: 0, False: 0]
  ------------------
28317|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
28318|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
28319|      0|		} else {
28320|      0|			zend_non_static_method_call(fbc);
28321|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (28321:4): [True: 0, False: 0]
  |  Branch (28321:4): [True: 0, False: 0]
  ------------------
28322|      0|		}
28323|      1|	} else {
28324|       |		/* previous opcode is ZEND_FETCH_CLASS */
28325|      1|		if (IS_VAR == IS_UNUSED
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_UNUSED
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (28325:7): [Folded, False: 1]
  ------------------
28326|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (28326:8): [True: 0, False: 0]
  ------------------
28327|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (28327:8): [True: 0, False: 0]
  ------------------
28328|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (28328:8): [True: 0, False: 0]
  ------------------
28329|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
28330|      0|			} else {
28331|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
28332|      0|			}
28333|      0|		}
28334|      1|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      1|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      1|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      1|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
28335|      1|	}
28336|       |
28337|      1|	call = zend_vm_stack_push_call_frame(call_info,
28338|      1|		fbc, opline->extended_value, ce);
28339|      1|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
28340|      1|	EX(call) = call;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
28341|       |
28342|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (28342:2): [True: 0, False: 1]
  |  Branch (28342:2): [True: 1, False: 0]
  ------------------
28343|      1|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER:
32084|      2|{
32085|      2|	USE_OPLINE
32086|      2|	zval *function_name;
32087|      2|	zend_class_entry *ce;
32088|      2|	uint32_t call_info;
32089|      2|	zend_function *fbc;
32090|      2|	zend_execute_data *call;
32091|       |
32092|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32093|       |
32094|      2|	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32094:6): [Folded, False: 2]
  ------------------
32095|       |		/* no function found. try a static method in class */
32096|      0|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32097|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32098|      0|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
32099|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32100|       |
32101|       |
32102|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32102:5): [True: 0, False: 0]
  |  Branch (32102:5): [True: 0, False: 0]
  ------------------
32103|      0|			}
32104|      0|			if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32104:8): [True: 0, Folded]
  ------------------
32105|      0|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32106|      0|			}
32107|      0|		}
32108|      2|	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (32108:13): [Folded, False: 2]
  ------------------
32109|      0|		ce = zend_fetch_class(NULL, opline->op1.num);
32110|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32111|       |
32112|       |
32113|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32113:4): [True: 0, False: 0]
  |  Branch (32113:4): [True: 0, False: 0]
  ------------------
32114|      0|		}
32115|      2|	} else {
32116|      2|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      2|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      2|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
32117|      2|	}
32118|       |
32119|      2|	if (IS_VAR == IS_CONST &&
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CONST &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32119:6): [Folded, False: 2]
  ------------------
32120|      0|	    IS_CV == IS_CONST &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    IS_CV == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32120:6): [Folded, False: 0]
  ------------------
32121|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32122|       |		/* nothing to do */
32123|      2|	} else if (IS_VAR != IS_CONST &&
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR != IS_CONST &&
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32123:13): [True: 0, Folded]
  ------------------
32124|      0|	           IS_CV == IS_CONST &&
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	           IS_CV == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32124:13): [Folded, False: 0]
  ------------------
32125|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32126|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32127|      2|	} else if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (32127:13): [True: 2, Folded]
  ------------------
32128|      2|		function_name = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
32129|      2|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32129:7): [True: 2, Folded]
  ------------------
32130|      2|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
32131|      1|				do {
32132|      1|					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (32132:10): [True: 1, Folded]
  ------------------
32133|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
32134|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32135|      0|							break;
32136|      0|						}
32137|      1|					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (32137:17): [True: 1, Folded]
  ------------------
32138|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
32139|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32140|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32140:8): [True: 0, False: 0]
  |  Branch (32140:8): [True: 0, False: 0]
  ------------------
32141|      0|						}
32142|      0|					}
32143|      1|					zend_throw_error(NULL, "Method name must be a string");
32144|       |
32145|       |
32146|      1|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32146:6): [True: 0, False: 1]
  |  Branch (32146:6): [True: 1, False: 0]
  ------------------
32147|      1|				} while (0);
  ------------------
  |  Branch (32147:14): [Folded, False: 0]
  ------------------
32148|      1|			}
32149|      2|		}
32150|       |
32151|      1|		if (ce->get_static_method) {
  ------------------
  |  Branch (32151:7): [True: 0, False: 1]
  ------------------
32152|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
32153|      1|		} else {
32154|      1|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (32154:66): [Folded, False: 1]
  ------------------
32155|      1|		}
32156|      1|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
32157|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32158|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
32159|      0|			}
32160|       |
32161|       |
32162|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32162:4): [True: 0, False: 0]
  |  Branch (32162:4): [True: 0, False: 0]
  ------------------
32163|      0|		}
32164|      1|		if (IS_CV == IS_CONST &&
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST &&
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32164:7): [Folded, False: 1]
  ------------------
32165|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32166|      0|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32167|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32168|      0|		}
32169|      1|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  ------------------
  ------------------
32170|      0|			init_func_run_time_cache(&fbc->op_array);
32171|      0|		}
32172|      1|		if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (32172:7): [True: 1, Folded]
  ------------------
32173|       |
32174|       |
32175|      1|		}
32176|      1|	} else {
32177|      0|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32178|      0|			zend_throw_error(NULL, "Cannot call constructor");
32179|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32179:4): [True: 0, False: 0]
  |  Branch (32179:4): [True: 0, False: 0]
  ------------------
32180|      0|		}
32181|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (32181:7): [True: 0, False: 0]
  |  Branch (32181:40): [True: 0, False: 0]
  |  Branch (32181:96): [True: 0, False: 0]
  ------------------
32182|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
32183|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32183:4): [True: 0, False: 0]
  |  Branch (32183:4): [True: 0, False: 0]
  ------------------
32184|      0|		}
32185|      0|		fbc = ce->constructor;
32186|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32187|      0|			init_func_run_time_cache(&fbc->op_array);
32188|      0|		}
32189|      0|	}
32190|       |
32191|      1|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      1|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (32191:6): [True: 0, False: 1]
  ------------------
32192|      0|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (32192:7): [True: 0, False: 0]
  |  Branch (32192:40): [True: 0, False: 0]
  ------------------
32193|      0|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
32194|      0|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
32195|      0|		} else {
32196|      0|			zend_non_static_method_call(fbc);
32197|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32197:4): [True: 0, False: 0]
  |  Branch (32197:4): [True: 0, False: 0]
  ------------------
32198|      0|		}
32199|      1|	} else {
32200|       |		/* previous opcode is ZEND_FETCH_CLASS */
32201|      1|		if (IS_VAR == IS_UNUSED
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_UNUSED
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (32201:7): [Folded, False: 1]
  ------------------
32202|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (32202:8): [True: 0, False: 0]
  ------------------
32203|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (32203:8): [True: 0, False: 0]
  ------------------
32204|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (32204:8): [True: 0, False: 0]
  ------------------
32205|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
32206|      0|			} else {
32207|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
32208|      0|			}
32209|      0|		}
32210|      1|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      1|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      1|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      1|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
32211|      1|	}
32212|       |
32213|      1|	call = zend_vm_stack_push_call_frame(call_info,
32214|      1|		fbc, opline->extended_value, ce);
32215|      1|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
32216|      1|	EX(call) = call;
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
32217|       |
32218|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (32218:2): [True: 0, False: 1]
  |  Branch (32218:2): [True: 1, False: 0]
  ------------------
32219|      1|}
zend_execute.c:ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER:
36800|      3|{
36801|      3|	USE_OPLINE
36802|      3|	zval *function_name;
36803|      3|	zend_class_entry *ce;
36804|      3|	uint32_t call_info;
36805|      3|	zend_function *fbc;
36806|      3|	zend_execute_data *call;
36807|       |
36808|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36809|       |
36810|      3|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36810:6): [Folded, False: 3]
  ------------------
36811|       |		/* no function found. try a static method in class */
36812|      0|		ce = CACHED_PTR(opline->result.num);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36813|      0|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36814|      0|			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
36815|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36816|       |
36817|       |
36818|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36818:5): [True: 0, False: 0]
  |  Branch (36818:5): [True: 0, False: 0]
  ------------------
36819|      0|			}
36820|      0|			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36820:8): [True: 0, Folded]
  ------------------
36821|      0|				CACHE_PTR(opline->result.num, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
36822|      0|			}
36823|      0|		}
36824|      3|	} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (36824:13): [True: 3, Folded]
  ------------------
36825|      3|		ce = zend_fetch_class(NULL, opline->op1.num);
36826|      3|		if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
36827|       |
36828|       |
36829|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36829:4): [True: 0, False: 0]
  |  Branch (36829:4): [True: 0, False: 0]
  ------------------
36830|      0|		}
36831|      3|	} else {
36832|      0|		ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
36833|      0|	}
36834|       |
36835|      3|	if (IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36835:6): [Folded, False: 3]
  ------------------
36836|      0|	    IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36836:6): [Folded, False: 0]
  ------------------
36837|      0|	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36838|       |		/* nothing to do */
36839|      3|	} else if (IS_UNUSED != IS_CONST &&
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	} else if (IS_UNUSED != IS_CONST &&
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36839:13): [True: 0, Folded]
  ------------------
36840|      0|	           IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	           IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36840:13): [Folded, False: 0]
  ------------------
36841|      0|	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36842|      0|		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36843|      3|	} else if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	} else if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (36843:13): [Folded, False: 3]
  ------------------
36844|      0|		function_name = NULL;
36845|      0|		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36845:7): [True: 0, Folded]
  ------------------
36846|      0|			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36847|      0|				do {
36848|      0|					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36848:10): [Folded, False: 0]
  ------------------
36849|      0|						function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
36850|      0|						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36851|      0|							break;
36852|      0|						}
36853|      0|					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (36853:17): [Folded, False: 0]
  ------------------
36854|      0|						ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
36855|      0|						if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36856|      0|							HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36856:8): [True: 0, False: 0]
  |  Branch (36856:8): [True: 0, False: 0]
  ------------------
36857|      0|						}
36858|      0|					}
36859|      0|					zend_throw_error(NULL, "Method name must be a string");
36860|       |
36861|       |
36862|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36862:6): [True: 0, False: 0]
  |  Branch (36862:6): [True: 0, False: 0]
  ------------------
36863|      0|				} while (0);
  ------------------
  |  Branch (36863:14): [Folded, False: 0]
  ------------------
36864|      0|			}
36865|      0|		}
36866|       |
36867|      0|		if (ce->get_static_method) {
  ------------------
  |  Branch (36867:7): [True: 0, False: 0]
  ------------------
36868|      0|			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36869|      0|		} else {
36870|      0|			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  |  Branch (36870:66): [Folded, False: 0]
  ------------------
36871|      0|		}
36872|      0|		if (UNEXPECTED(fbc == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36873|      0|			if (EXPECTED(!EG(exception))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36874|      0|				zend_undefined_method(ce, Z_STR_P(function_name));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
36875|      0|			}
36876|       |
36877|       |
36878|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36878:4): [True: 0, False: 0]
  |  Branch (36878:4): [True: 0, False: 0]
  ------------------
36879|      0|		}
36880|      0|		if (IS_UNUSED == IS_CONST &&
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_CONST &&
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36880:7): [Folded, False: 0]
  ------------------
36881|      0|		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36882|      0|			EXPECTED(!(fbc->common.scope->ce_flags & ZEND_ACC_TRAIT))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36883|      0|			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
36884|      0|		}
36885|      0|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36886|      0|			init_func_run_time_cache(&fbc->op_array);
36887|      0|		}
36888|      0|		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (36888:7): [True: 0, Folded]
  ------------------
36889|       |
36890|       |
36891|      0|		}
36892|      3|	} else {
36893|      3|		if (UNEXPECTED(ce->constructor == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
36894|      0|			zend_throw_error(NULL, "Cannot call constructor");
36895|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36895:4): [True: 0, False: 0]
  |  Branch (36895:4): [True: 0, False: 0]
  ------------------
36896|      0|		}
36897|      3|		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  614|      6|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      3|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (36897:7): [True: 3, False: 0]
  |  Branch (36897:40): [True: 3, False: 0]
  |  Branch (36897:96): [True: 0, False: 3]
  ------------------
36898|      0|			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
36899|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36899:4): [True: 0, False: 0]
  |  Branch (36899:4): [True: 0, False: 0]
  ------------------
36900|      0|		}
36901|      3|		fbc = ce->constructor;
36902|      3|		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
              		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
36903|      0|			init_func_run_time_cache(&fbc->op_array);
36904|      0|		}
36905|      3|	}
36906|       |
36907|      3|	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      3|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (36907:6): [True: 3, False: 0]
  ------------------
36908|      3|		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  |  614|      6|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
  ------------------
  |  | 1011|      3|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (36908:7): [True: 3, False: 0]
  |  Branch (36908:40): [True: 3, False: 0]
  ------------------
36909|      3|			ce = (zend_class_entry*)Z_OBJ(EX(This));
  ------------------
  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
36910|      3|			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  681|      3|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      3|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      3|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      3|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      3|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      3|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
36911|      3|		} else {
36912|      0|			zend_non_static_method_call(fbc);
36913|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36913:4): [True: 0, False: 0]
  |  Branch (36913:4): [True: 0, False: 0]
  ------------------
36914|      0|		}
36915|      3|	} else {
36916|       |		/* previous opcode is ZEND_FETCH_CLASS */
36917|      0|		if (IS_UNUSED == IS_UNUSED
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_UNUSED
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (36917:7): [True: 0, Folded]
  ------------------
36918|      0|		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		 && ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (36918:8): [True: 0, False: 0]
  ------------------
36919|      0|		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1049|      0|#define ZEND_FETCH_CLASS_MASK        0x0f
  ------------------
              		     (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF)) {
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (36919:8): [True: 0, False: 0]
  ------------------
36920|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (36920:8): [True: 0, False: 0]
  ------------------
36921|      0|				ce = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
36922|      0|			} else {
36923|      0|				ce = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
36924|      0|			}
36925|      0|		}
36926|      0|		call_info = ZEND_CALL_NESTED_FUNCTION;
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
36927|      0|	}
36928|       |
36929|      3|	call = zend_vm_stack_push_call_frame(call_info,
36930|      3|		fbc, opline->extended_value, ce);
36931|      3|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
36932|      3|	EX(call) = call;
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
36933|       |
36934|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36934:2): [True: 0, False: 3]
  |  Branch (36934:2): [True: 3, False: 0]
  ------------------
36935|      3|}
zend_execute.c:ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER:
11612|      1|{
11613|      1|	USE_OPLINE
11614|      1|	zval *value;
11615|      1|	bool result;
11616|      1|	zval *varname;
11617|      1|	zend_string *name, *tmp_name;
11618|      1|	HashTable *target_symbol_table;
11619|       |
11620|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11621|      1|	varname = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11622|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11622:6): [True: 1, Folded]
  ------------------
11623|      1|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11624|      1|	} else {
11625|      0|		name = zval_get_tmp_string(varname, &tmp_name);
11626|      0|	}
11627|       |
11628|      1|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11629|      1|	value = zend_hash_find_ex(target_symbol_table, name, IS_CONST == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	value = zend_hash_find_ex(target_symbol_table, name, IS_CONST == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
11630|       |
11631|      1|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11631:6): [Folded, False: 1]
  ------------------
11632|      0|		zend_tmp_string_release(tmp_name);
11633|      0|	}
11634|       |
11635|       |
11636|      1|	if (!value) {
  ------------------
  |  Branch (11636:6): [True: 0, False: 1]
  ------------------
11637|      0|		result = (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
11638|      1|	} else {
11639|      1|		if (Z_TYPE_P(value) == IS_INDIRECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) == IS_INDIRECT) {
  ------------------
  |  |  629|      1|#define IS_INDIRECT             	12
  ------------------
  |  Branch (11639:7): [True: 0, False: 1]
  ------------------
11640|      0|			value = Z_INDIRECT_P(value);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
11641|      0|		}
11642|      1|		if (!(opline->extended_value & ZEND_ISEMPTY)) {
  ------------------
  |  | 1108|      1|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (11642:7): [True: 1, False: 0]
  ------------------
11643|      1|			if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11644|      0|				value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11645|      0|			}
11646|      1|			result = Z_TYPE_P(value) > IS_NULL;
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			result = Z_TYPE_P(value) > IS_NULL;
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
11647|      1|		} else {
11648|      0|			result = !i_zend_is_true(value);
11649|      0|		}
11650|      1|	}
11651|       |
11652|      1|	ZEND_VM_SMART_BRANCH(result, true);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      1|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      1|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11653|      1|}
zend_execute.c:ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER:
49663|     12|{
49664|     12|	USE_OPLINE
49665|     12|	zval *value;
49666|     12|	bool result;
49667|     12|	zval *varname;
49668|     12|	zend_string *name, *tmp_name;
49669|     12|	HashTable *target_symbol_table;
49670|       |
49671|     12|	SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49672|     12|	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49673|     12|	if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49673:6): [Folded, False: 12]
  ------------------
49674|      0|		name = Z_STR_P(varname);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49675|     12|	} else {
49676|     12|		name = zval_get_tmp_string(varname, &tmp_name);
49677|     12|	}
49678|       |
49679|     12|	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49680|     12|	value = zend_hash_find_ex(target_symbol_table, name, IS_CV == IS_CONST);
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	value = zend_hash_find_ex(target_symbol_table, name, IS_CV == IS_CONST);
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
49681|       |
49682|     12|	if (IS_CV != IS_CONST) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49682:6): [True: 12, Folded]
  ------------------
49683|     12|		zend_tmp_string_release(tmp_name);
49684|     12|	}
49685|       |
49686|       |
49687|     12|	if (!value) {
  ------------------
  |  Branch (49687:6): [True: 6, False: 6]
  ------------------
49688|      6|		result = (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      6|#define ZEND_ISEMPTY			(1<<0)
  ------------------
49689|      6|	} else {
49690|      6|		if (Z_TYPE_P(value) == IS_INDIRECT) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) == IS_INDIRECT) {
  ------------------
  |  |  629|      6|#define IS_INDIRECT             	12
  ------------------
  |  Branch (49690:7): [True: 2, False: 4]
  ------------------
49691|      2|			value = Z_INDIRECT_P(value);
  ------------------
  |  | 1044|      2|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      2|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
49692|      2|		}
49693|      6|		if (!(opline->extended_value & ZEND_ISEMPTY)) {
  ------------------
  |  | 1108|      6|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (49693:7): [True: 6, False: 0]
  ------------------
49694|      6|			if (Z_ISREF_P(value)) {
  ------------------
  |  |  964|      6|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49695|      0|				value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49696|      0|			}
49697|      6|			result = Z_TYPE_P(value) > IS_NULL;
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			result = Z_TYPE_P(value) > IS_NULL;
  ------------------
  |  |  607|      6|#define IS_NULL						1
  ------------------
49698|      6|		} else {
49699|      0|			result = !i_zend_is_true(value);
49700|      0|		}
49701|      6|	}
49702|       |
49703|     12|	ZEND_VM_SMART_BRANCH(result, true);
  ------------------
  |  | 5808|     12|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|     12|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 12, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|     12|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|     12|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|     12|		} else { \
  |  | 5824|     12|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|     12|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|     12|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|     12|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      5|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     19|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 5, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1074|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|     12|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|     12|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|     12|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     12|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|     12|		} \
  |  | 5827|     12|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49704|     12|}
zend_execute.c:ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CONST_HANDLER:
19482|     10|{
19483|     10|	USE_OPLINE
19484|     10|	zval *container;
19485|     10|	bool result;
19486|     10|	zend_ulong hval;
19487|     10|	zval *offset;
19488|       |
19489|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19490|     10|	container = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19491|     10|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     10|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19492|       |
19493|     10|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
19494|      0|		HashTable *ht;
19495|      0|		zval *value;
19496|      0|		zend_string *str;
19497|       |
19498|      0|isset_dim_obj_array:
19499|      0|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19500|      0|isset_again:
19501|      0|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19502|      0|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19503|      0|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19503:8): [Folded, False: 0]
  ------------------
19504|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19505|      0|					goto num_index_prop;
19506|      0|				}
19507|      0|			}
19508|      0|			value = zend_hash_find_ex(ht, str, IS_CONST == IS_CONST);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_hash_find_ex(ht, str, IS_CONST == IS_CONST);
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
19509|      0|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19510|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
19511|      0|num_index_prop:
19512|      0|			value = zend_hash_index_find(ht, hval);
19513|      0|		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19513:14): [Folded, False: 0]
  ------------------
19514|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19515|      0|			goto isset_again;
19516|      0|		} else {
19517|      0|			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19518|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19519|      0|				result = 0;
19520|      0|				goto isset_dim_obj_exit;
19521|      0|			}
19522|      0|		}
19523|       |
19524|      0|		if (!(opline->extended_value & ZEND_ISEMPTY)) {
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (19524:7): [True: 0, False: 0]
  ------------------
19525|       |			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
19526|      0|			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (19526:13): [True: 0, False: 0]
  |  Branch (19526:30): [True: 0, False: 0]
  ------------------
19527|      0|			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (19527:9): [True: 0, False: 0]
  |  Branch (19527:30): [True: 0, False: 0]
  ------------------
19528|       |
19529|      0|			if (IS_TMP_VAR & (IS_CONST|IS_CV)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_CONST|IS_CV)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR & (IS_CONST|IS_CV)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (19529:8): [Folded, False: 0]
  ------------------
19530|       |				/* avoid exception check */
19531|       |
19532|       |
19533|      0|				ZEND_VM_SMART_BRANCH(result, 0);
  ------------------
  |  | 5808|      0|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      0|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      0|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19534|      0|			}
19535|      0|		} else {
19536|      0|			result = (value == NULL || !i_zend_is_true(value));
  ------------------
  |  Branch (19536:14): [True: 0, False: 0]
  |  Branch (19536:31): [True: 0, False: 0]
  ------------------
19537|      0|		}
19538|      0|		goto isset_dim_obj_exit;
19539|     10|	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  866|     10|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19539:13): [Folded, False: 10]
  ------------------
19540|      0|		container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19541|      0|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19542|      0|			goto isset_dim_obj_array;
19543|      0|		}
19544|      0|	}
19545|       |
19546|     10|	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|     10|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|     10|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|     10|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (19546:6): [True: 10, Folded]
  |  Branch (19546:30): [True: 0, False: 10]
  ------------------
19547|      0|		offset++;
19548|      0|	}
19549|     10|	if (!(opline->extended_value & ZEND_ISEMPTY)) {
  ------------------
  |  | 1108|     10|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (19549:6): [True: 10, False: 0]
  ------------------
19550|     10|		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19551|     10|	} else {
19552|      0|		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19553|      0|	}
19554|       |
19555|     10|isset_dim_obj_exit:
19556|       |
19557|       |
19558|     10|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19559|     10|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|     10|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|     10|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 10, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|     10|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|     10|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|     10|		} else { \
  |  | 5824|     10|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|     10|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|     10|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|     10|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     20|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 1074|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|     10|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|     10|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|     10|		} \
  |  | 5827|     10|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19560|     10|}
zend_execute.c:ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER:
44342|      4|{
44343|      4|	USE_OPLINE
44344|      4|	zval *container;
44345|      4|	bool result;
44346|      4|	zend_ulong hval;
44347|      4|	zval *offset;
44348|       |
44349|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44350|      4|	container = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44351|      4|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
44352|       |
44353|      4|	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
44354|      1|		HashTable *ht;
44355|      1|		zval *value;
44356|      1|		zend_string *str;
44357|       |
44358|      1|isset_dim_obj_array:
44359|      1|		ht = Z_ARRVAL_P(container);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44360|      1|isset_again:
44361|      1|		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
44362|      1|			str = Z_STR_P(offset);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44363|      1|			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44363:8): [Folded, False: 1]
  ------------------
44364|      0|				if (ZEND_HANDLE_NUMERIC(str, hval)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44365|      0|					goto num_index_prop;
44366|      0|				}
44367|      0|			}
44368|      1|			value = zend_hash_find_ex(ht, str, IS_CONST == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			value = zend_hash_find_ex(ht, str, IS_CONST == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
44369|      1|		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44370|      0|			hval = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
44371|      0|num_index_prop:
44372|      0|			value = zend_hash_index_find(ht, hval);
44373|      0|		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44373:14): [Folded, False: 0]
  ------------------
44374|      0|			offset = Z_REFVAL_P(offset);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44375|      0|			goto isset_again;
44376|      0|		} else {
44377|      0|			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44378|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44379|      0|				result = 0;
44380|      0|				goto isset_dim_obj_exit;
44381|      0|			}
44382|      0|		}
44383|       |
44384|      1|		if (!(opline->extended_value & ZEND_ISEMPTY)) {
  ------------------
  |  | 1108|      1|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (44384:7): [True: 1, False: 0]
  ------------------
44385|       |			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
44386|      1|			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (44386:13): [True: 0, False: 1]
  |  Branch (44386:30): [True: 0, False: 0]
  ------------------
44387|      0|			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (44387:9): [True: 0, False: 0]
  |  Branch (44387:30): [True: 0, False: 0]
  ------------------
44388|       |
44389|      1|			if (IS_CV & (IS_CONST|IS_CV)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_CONST|IS_CV)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV & (IS_CONST|IS_CV)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (44389:8): [True: 1, Folded]
  ------------------
44390|       |				/* avoid exception check */
44391|       |
44392|       |
44393|      1|				ZEND_VM_SMART_BRANCH(result, 0);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [Folded, False: 1]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      1|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      1|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44394|      1|			}
44395|      1|		} else {
44396|      0|			result = (value == NULL || !i_zend_is_true(value));
  ------------------
  |  Branch (44396:14): [True: 0, False: 0]
  |  Branch (44396:31): [True: 0, False: 0]
  ------------------
44397|      0|		}
44398|      0|		goto isset_dim_obj_exit;
44399|      3|	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (44399:13): [True: 3, Folded]
  ------------------
44400|      0|		container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44401|      0|		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44402|      0|			goto isset_dim_obj_array;
44403|      0|		}
44404|      0|	}
44405|       |
44406|      3|	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  705|      3|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      3|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
  ------------------
  |  |  873|      3|#define ZEND_EXTRA_VALUE 1
  ------------------
  |  Branch (44406:6): [True: 3, Folded]
  |  Branch (44406:30): [True: 1, False: 2]
  ------------------
44407|      1|		offset++;
44408|      1|	}
44409|      3|	if (!(opline->extended_value & ZEND_ISEMPTY)) {
  ------------------
  |  | 1108|      3|#define ZEND_ISEMPTY			(1<<0)
  ------------------
  |  Branch (44409:6): [True: 3, False: 0]
  ------------------
44410|      3|		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44411|      3|	} else {
44412|      0|		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44413|      0|	}
44414|       |
44415|      3|isset_dim_obj_exit:
44416|       |
44417|       |
44418|       |
44419|       |
44420|      3|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      3|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      3|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      3|		} else { \
  |  | 5824|      3|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      3|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      3|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      3|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      3|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      3|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      3|		} \
  |  | 5827|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44421|      3|}
zend_execute.c:ZEND_SEND_VAL_EX_SPEC_CONST_CONST_HANDLER:
 7779|     12|{
 7780|     12|	USE_OPLINE
 7781|     12|	zval *value, *arg;
 7782|     12|	uint32_t arg_num;
 7783|       |
 7784|     12|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     12|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7784:6): [True: 12, Folded]
  ------------------
 7785|     12|		SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7786|     12|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7787|     12|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|     12|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7788|     12|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 10]
  |  |  ------------------
  ------------------
 7789|       |
 7790|       |
 7791|      2|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7791:4): [True: 0, False: 2]
  |  Branch (7791:4): [True: 2, False: 0]
  ------------------
 7792|      2|		}
 7793|     12|	} else {
 7794|      0|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
 7795|      0|		arg_num = opline->op2.num;
 7796|      0|	}
 7797|       |
 7798|     10|	if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 7799|     10|		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1190|     10|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1186|     10|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 1, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7800|      1|			goto send_val_by_ref;
 7801|      1|		}
 7802|     10|	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7803|      1|send_val_by_ref:;
 7804|      1|		ZEND_VM_DISPATCH_TO_HELPER(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX arg_num, arg));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 7805|      0|	}
 7806|      9|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      9|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7807|      9|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|      9|	do {												\
  |  | 1417|      9|		zval *_z1 = (z);								\
  |  | 1418|      9|		const zval *_z2 = (v);							\
  |  | 1419|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      9|	do {												\
  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 7808|      9|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      9|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      9|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7808:6): [True: 9, Folded]
  ------------------
 7809|      9|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  ------------------
  ------------------
 7810|      1|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 7811|      1|		}
 7812|      9|	}
 7813|      9|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      9|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      9|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      9|	} else { \
  |  |  |  | 5761|      9|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      9|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      9|	} \
  |  |  |  | 5764|      9|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7813:2): [True: 0, False: 9]
  |  Branch (7813:2): [True: 9, False: 0]
  ------------------
 7814|      9|}
zend_execute.c:zend_cannot_pass_by_ref_helper_SPEC:
 2418|      5|{
 2419|      5|	USE_OPLINE
 2420|       |
 2421|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2422|       |
 2423|      5|	zend_cannot_pass_by_reference(_arg_num);
 2424|      5|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      5|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      5|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 2, False: 3]
  |  |  ------------------
  |  |  178|      2|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      2|	}
  ------------------
 2425|      5|	ZVAL_UNDEF(_arg);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 2426|      5|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      5|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      5|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2426:2): [True: 0, False: 5]
  |  Branch (2426:2): [True: 5, False: 0]
  ------------------
 2427|      5|}
zend_execute.c:ZEND_SEND_VAL_EX_SPEC_CONST_UNUSED_QUICK_HANDLER:
11331|    267|{
11332|    267|	USE_OPLINE
11333|    267|	zval *value, *arg;
11334|    267|	uint32_t arg_num;
11335|       |
11336|    267|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|    267|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|    267|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11336:6): [Folded, False: 267]
  ------------------
11337|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11338|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
11339|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11340|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11341|       |
11342|       |
11343|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11343:4): [True: 0, False: 0]
  |  Branch (11343:4): [True: 0, False: 0]
  ------------------
11344|      0|		}
11345|    267|	} else {
11346|    267|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|    267|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
11347|    267|		arg_num = opline->op2.num;
11348|    267|	}
11349|       |
11350|    267|	if (EXPECTED(1)) {
  ------------------
  |  |  456|    267|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 267, Folded]
  |  |  ------------------
  ------------------
11351|    267|		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1190|    267|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1186|    267|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 2, False: 265]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11352|      2|			goto send_val_by_ref;
11353|      2|		}
11354|    267|	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11355|      2|send_val_by_ref:;
11356|      2|		ZEND_VM_DISPATCH_TO_HELPER(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX arg_num, arg));
  ------------------
  |  |  410|      2|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
11357|      0|	}
11358|    265|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    265|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11359|    265|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|    265|	do {												\
  |  | 1417|    265|		zval *_z1 = (z);								\
  |  | 1418|    265|		const zval *_z2 = (v);							\
  |  | 1419|    265|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    265|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    265|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    265|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    265|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    265|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    265|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    265|	do {												\
  |  |  |  | 1408|    265|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    265|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    265|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    265|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    265|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    265|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    265|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 265]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    265|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 265]
  |  |  ------------------
  ------------------
11360|    265|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    265|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    265|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11360:6): [True: 265, Folded]
  ------------------
11361|    265|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|    265|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 132, False: 133]
  |  |  ------------------
  ------------------
11362|    132|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|    132|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11363|    132|		}
11364|    265|	}
11365|    265|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    265|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    265|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    265|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 265]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    265|	} else { \
  |  |  |  | 5761|    265|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    265|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    265|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    265|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    265|	} \
  |  |  |  | 5764|    265|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    265|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11365:2): [True: 0, False: 265]
  |  Branch (11365:2): [True: 265, False: 0]
  ------------------
11366|    265|}
zend_execute.c:ZEND_SEND_VAL_EX_SPEC_TMP_CONST_HANDLER:
19260|      1|{
19261|      1|	USE_OPLINE
19262|      1|	zval *value, *arg;
19263|      1|	uint32_t arg_num;
19264|       |
19265|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19265:6): [True: 1, Folded]
  ------------------
19266|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19267|      1|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19268|      1|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19269|      1|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
19270|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19271|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19271:4): [True: 0, False: 0]
  |  Branch (19271:4): [True: 0, False: 0]
  ------------------
19272|      0|		}
19273|      1|	} else {
19274|      0|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
19275|      0|		arg_num = opline->op2.num;
19276|      0|	}
19277|       |
19278|      1|	if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
19279|      1|		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1190|      1|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1186|      1|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19280|      0|			goto send_val_by_ref;
19281|      0|		}
19282|      1|	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19283|      0|send_val_by_ref:;
19284|      0|		ZEND_VM_DISPATCH_TO_HELPER(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX arg_num, arg));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
19285|      0|	}
19286|      1|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19287|      1|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
19288|      1|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19288:6): [Folded, False: 1]
  ------------------
19289|      0|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19290|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
19291|      0|		}
19292|      0|	}
19293|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19293:2): [True: 0, False: 1]
  |  Branch (19293:2): [True: 1, False: 0]
  ------------------
19294|      1|}
zend_execute.c:ZEND_SEND_VAL_EX_SPEC_TMP_UNUSED_QUICK_HANDLER:
21610|    108|{
21611|    108|	USE_OPLINE
21612|    108|	zval *value, *arg;
21613|    108|	uint32_t arg_num;
21614|       |
21615|    108|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|    108|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|    108|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21615:6): [Folded, False: 108]
  ------------------
21616|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21617|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
21618|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21619|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21620|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21621|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21621:4): [True: 0, False: 0]
  |  Branch (21621:4): [True: 0, False: 0]
  ------------------
21622|      0|		}
21623|    108|	} else {
21624|    108|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|    108|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
21625|    108|		arg_num = opline->op2.num;
21626|    108|	}
21627|       |
21628|    108|	if (EXPECTED(1)) {
  ------------------
  |  |  456|    108|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 108, Folded]
  |  |  ------------------
  ------------------
21629|    108|		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1190|    108|	ZEND_CHECK_ARG_FLAG(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1186|    108|	(((zf)->quick_arg_flags >> (((arg_num) + 3) * 2)) & (mask))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1186:2): [True: 2, False: 106]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21630|      2|			goto send_val_by_ref;
21631|      2|		}
21632|    108|	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21633|      2|send_val_by_ref:;
21634|      2|		ZEND_VM_DISPATCH_TO_HELPER(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX arg_num, arg));
  ------------------
  |  |  410|      2|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
21635|      0|	}
21636|    106|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    106|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    106|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21637|    106|	ZVAL_COPY_VALUE(arg, value);
  ------------------
  |  | 1416|    106|	do {												\
  |  | 1417|    106|		zval *_z1 = (z);								\
  |  | 1418|    106|		const zval *_z2 = (v);							\
  |  | 1419|    106|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    106|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    106|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    106|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    106|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    106|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    106|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    106|	do {												\
  |  |  |  | 1408|    106|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    106|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    106|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    106|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    106|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    106|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    106|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 106]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    106|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 106]
  |  |  ------------------
  ------------------
21638|    106|	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|    106|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|    106|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21638:6): [Folded, False: 106]
  ------------------
21639|      0|		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21640|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
21641|      0|		}
21642|      0|	}
21643|    106|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    106|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    106|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    106|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 106]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    106|	} else { \
  |  |  |  | 5761|    106|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    106|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    106|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    106|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    106|	} \
  |  |  |  | 5764|    106|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    106|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21643:2): [True: 0, False: 106]
  |  Branch (21643:2): [True: 106, False: 0]
  ------------------
21644|    106|}
zend_execute.c:ZEND_SEND_VAR_SPEC_CV_UNUSED_HANDLER:
49214|  2.00k|{
49215|  2.00k|	USE_OPLINE
49216|  2.00k|	zval *varptr, *arg;
49217|       |
49218|  2.00k|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|  2.00k|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|  2.00k|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49218:6): [Folded, False: 2.00k]
  ------------------
49219|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49220|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
49221|      0|		uint32_t arg_num;
49222|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49223|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49224|       |
49225|       |
49226|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49226:4): [True: 0, False: 0]
  |  Branch (49226:4): [True: 0, False: 0]
  ------------------
49227|      0|		}
49228|  2.00k|	} else {
49229|  2.00k|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|  2.00k|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
49230|  2.00k|	}
49231|       |
49232|  2.00k|	varptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  2.00k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  2.00k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49233|  2.00k|	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|  2.00k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  867|  4.01k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
  ------------------
  |  |  457|  2.00k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 546, False: 1.46k]
  |  |  ------------------
  ------------------
  |  Branch (49233:6): [True: 2.00k, Folded]
  ------------------
49234|    546|		SAVE_OPLINE();
  ------------------
  |  |  428|    546|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    546|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49235|    546|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    546|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    546|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49236|    546|		ZVAL_NULL(arg);
  ------------------
  |  | 1059|    546|#define ZVAL_NULL(z) do {				\
  |  | 1060|    546|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    546|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    546|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    546|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    546|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 546]
  |  |  ------------------
  ------------------
49237|    546|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    546|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    546|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    546|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 546, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    546|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    546|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    546|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    546|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    546|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    546|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49237:3): [True: 0, False: 0]
  |  Branch (49237:3): [True: 0, False: 0]
  ------------------
49238|    546|	}
49239|       |
49240|  1.46k|	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|  1.46k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|  1.46k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49240:6): [True: 1.46k, Folded]
  ------------------
49241|  1.46k|		ZVAL_COPY_DEREF(arg, varptr);
  ------------------
  |  | 1508|  1.46k|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|  1.46k|		zval *_z3 = (v);								\
  |  | 1510|  1.46k|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|  1.46k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|  1.46k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|  1.46k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|  1.46k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1.01k, False: 449]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|  1.01k|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|  1.01k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 143, False: 868]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|    143|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|    143|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|    143|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|    143|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|    143|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|    143|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|    143|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|    143|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|    143|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 80, False: 63]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|     80|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|     80|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|     80|				}										\
  |  | 1516|    868|			} else {									\
  |  | 1517|    868|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|    868|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|    868|			}											\
  |  | 1519|  1.01k|		}												\
  |  | 1520|  1.46k|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|  1.46k|	do {												\
  |  |  |  | 1417|  1.46k|		zval *_z1 = (z);								\
  |  |  |  | 1418|  1.46k|		const zval *_z2 = (v);							\
  |  |  |  | 1419|  1.46k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  1.46k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  1.46k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|  1.46k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  1.46k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  1.46k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|  1.46k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|  1.46k|	do {												\
  |  |  |  |  |  | 1408|  1.46k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  1.46k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  1.46k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|  1.46k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  1.46k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  1.46k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|  1.46k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1.46k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|  1.46k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|  1.46k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 1.46k]
  |  |  ------------------
  ------------------
49242|  1.46k|	} else /* if (IS_CV == IS_VAR) */ {
49243|      0|		if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49244|      0|			zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
49245|       |
49246|      0|			varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49247|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49248|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49249|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49250|      0|			} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49251|      0|				Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49252|      0|			}
49253|      0|		} else {
49254|      0|			ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49255|      0|		}
49256|      0|	}
49257|       |
49258|  1.46k|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|  1.46k|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.46k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.46k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1.46k]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.46k|	} else { \
  |  |  |  | 5761|  1.46k|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.46k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|  1.46k|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.46k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|  1.46k|	} \
  |  |  |  | 5764|  1.46k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.46k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49258:2): [True: 0, False: 1.46k]
  |  Branch (49258:2): [True: 1.46k, False: 0]
  ------------------
49259|  1.46k|}
zend_execute.c:ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER:
 7676|      5|{
 7677|      5|	USE_OPLINE
 7678|      5|	zval *function_name;
 7679|      5|	zend_fcall_info_cache fcc;
 7680|      5|	char *error = NULL;
 7681|      5|	zend_function *func;
 7682|      5|	void *object_or_called_scope;
 7683|      5|	zend_execute_data *call;
 7684|      5|	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  681|      5|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      5|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      5|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  671|      5|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
 7685|       |
 7686|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7687|      5|	function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7688|      5|	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
  ------------------
  |  Branch (7688:6): [True: 3, False: 2]
  ------------------
 7689|      3|		ZEND_ASSERT(!error);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7689:3): [True: 0, False: 3]
  |  Branch (7689:3): [True: 3, False: 0]
  ------------------
 7690|       |
 7691|       |		/* Deprecation can be emitted from zend_is_callable_ex(), which can
 7692|       |		 * invoke a user error handler and throw an exception.
 7693|       |		 * For the CONST and CV case we reuse the same exception block below
 7694|       |		 * to make sure we don't increase VM size too much. */
 7695|      3|		if (!(IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if (!(IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (!(IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              		if (!(IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (7695:7): [True: 3, Folded]
  ------------------
 7696|       |
 7697|       |
 7698|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7698:4): [True: 0, False: 0]
  |  Branch (7698:4): [True: 0, False: 0]
  ------------------
 7699|      0|		}
 7700|       |
 7701|      3|		func = fcc.function_handler;
 7702|      3|		object_or_called_scope = fcc.called_scope;
 7703|      3|		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|      3|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (7703:7): [True: 0, False: 3]
  ------------------
 7704|       |			/* Delay closure destruction until its invocation */
 7705|      0|			GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 7706|      0|			call_info |= ZEND_CALL_CLOSURE;
  ------------------
  |  |  668|      0|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
 7707|      0|			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
  ------------------
  |  |  385|      0|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (7707:8): [True: 0, False: 0]
  ------------------
 7708|      0|				call_info |= ZEND_CALL_FAKE_CLOSURE;
  ------------------
  |  |  669|      0|#define ZEND_CALL_FAKE_CLOSURE       (1 << 23) /* Same as ZEND_ACC_FAKE_CLOSURE */
  ------------------
 7709|      0|			}
 7710|      0|			if (fcc.object) {
  ------------------
  |  Branch (7710:8): [True: 0, False: 0]
  ------------------
 7711|      0|				object_or_called_scope = fcc.object;
 7712|      0|				call_info |= ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7713|      0|			}
 7714|      3|		} else if (fcc.object) {
  ------------------
  |  Branch (7714:14): [True: 0, False: 3]
  ------------------
 7715|      0|			GC_ADDREF(fcc.object); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 7716|      0|			object_or_called_scope = fcc.object;
 7717|      0|			call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              			call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7718|      0|		}
 7719|       |
 7720|       |
 7721|      3|		if ((IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7721:7): [Folded, False: 3]
  ------------------
 7722|      0|			if (call_info & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  668|      0|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
  |  Branch (7722:8): [True: 0, False: 0]
  ------------------
 7723|      0|				zend_object_release(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |   28|      0|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
 7724|      0|			} else if (call_info & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (7724:15): [True: 0, False: 0]
  ------------------
 7725|      0|				zend_object_release(fcc.object);
 7726|      0|			}
 7727|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7727:4): [True: 0, False: 0]
  |  Branch (7727:4): [True: 0, False: 0]
  ------------------
 7728|      0|		}
 7729|       |
 7730|      3|		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&func->op_array))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&func->op_array))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 7731|      2|			init_func_run_time_cache(&func->op_array);
 7732|      2|		}
 7733|      3|	} else {
 7734|      2|		zend_type_error("%s(): Argument #1 ($callback) must be a valid callback, %s", Z_STRVAL_P(RT_CONSTANT(opline, opline->op1)), error);
  ------------------
  |  |  985|      2|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      2|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7735|      2|		efree(error);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7736|       |
 7737|       |
 7738|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7738:3): [True: 0, False: 2]
  |  Branch (7738:3): [True: 2, False: 0]
  ------------------
 7739|      2|	}
 7740|       |
 7741|      3|	call = zend_vm_stack_push_call_frame(call_info,
 7742|      3|		func, opline->extended_value, object_or_called_scope);
 7743|      3|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
 7744|      3|	EX(call) = call;
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
 7745|       |
 7746|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7746:2): [True: 0, False: 3]
  |  Branch (7746:2): [True: 3, False: 0]
  ------------------
 7747|      3|}
zend_execute.c:ZEND_INIT_USER_CALL_SPEC_CONST_TMP_HANDLER:
10405|      5|{
10406|      5|	USE_OPLINE
10407|      5|	zval *function_name;
10408|      5|	zend_fcall_info_cache fcc;
10409|      5|	char *error = NULL;
10410|      5|	zend_function *func;
10411|      5|	void *object_or_called_scope;
10412|      5|	zend_execute_data *call;
10413|      5|	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  681|      5|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      5|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      5|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  671|      5|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
10414|       |
10415|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
10416|      5|	function_name = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
10417|      5|	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
  ------------------
  |  Branch (10417:6): [True: 3, False: 2]
  ------------------
10418|      3|		ZEND_ASSERT(!error);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (10418:3): [True: 0, False: 3]
  |  Branch (10418:3): [True: 3, False: 0]
  ------------------
10419|       |
10420|       |		/* Deprecation can be emitted from zend_is_callable_ex(), which can
10421|       |		 * invoke a user error handler and throw an exception.
10422|       |		 * For the CONST and CV case we reuse the same exception block below
10423|       |		 * to make sure we don't increase VM size too much. */
10424|      3|		if (!(IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (!(IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (!(IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              		if (!(IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (10424:7): [Folded, False: 3]
  ------------------
10425|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10426|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10426:4): [True: 0, False: 0]
  |  Branch (10426:4): [True: 0, False: 0]
  ------------------
10427|      0|		}
10428|       |
10429|      3|		func = fcc.function_handler;
10430|      3|		object_or_called_scope = fcc.called_scope;
10431|      3|		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|      3|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (10431:7): [True: 1, False: 2]
  ------------------
10432|       |			/* Delay closure destruction until its invocation */
10433|      1|			GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
10434|      1|			call_info |= ZEND_CALL_CLOSURE;
  ------------------
  |  |  668|      1|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
10435|      1|			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
  ------------------
  |  |  385|      1|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (10435:8): [True: 0, False: 1]
  ------------------
10436|      0|				call_info |= ZEND_CALL_FAKE_CLOSURE;
  ------------------
  |  |  669|      0|#define ZEND_CALL_FAKE_CLOSURE       (1 << 23) /* Same as ZEND_ACC_FAKE_CLOSURE */
  ------------------
10437|      0|			}
10438|      1|			if (fcc.object) {
  ------------------
  |  Branch (10438:8): [True: 1, False: 0]
  ------------------
10439|      1|				object_or_called_scope = fcc.object;
10440|      1|				call_info |= ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      1|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10441|      1|			}
10442|      2|		} else if (fcc.object) {
  ------------------
  |  Branch (10442:14): [True: 2, False: 0]
  ------------------
10443|      2|			GC_ADDREF(fcc.object); /* For $this pointer */
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
10444|      2|			object_or_called_scope = fcc.object;
10445|      2|			call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  667|      2|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              			call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      2|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10446|      2|		}
10447|       |
10448|      3|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10449|      3|		if ((IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (10449:7): [True: 3, Folded]
  ------------------
10450|      0|			if (call_info & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  668|      0|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
  |  Branch (10450:8): [True: 0, False: 0]
  ------------------
10451|      0|				zend_object_release(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |   28|      0|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
10452|      0|			} else if (call_info & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (10452:15): [True: 0, False: 0]
  ------------------
10453|      0|				zend_object_release(fcc.object);
10454|      0|			}
10455|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10455:4): [True: 0, False: 0]
  |  Branch (10455:4): [True: 0, False: 0]
  ------------------
10456|      0|		}
10457|       |
10458|      3|		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&func->op_array))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
              		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&func->op_array))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
10459|      1|			init_func_run_time_cache(&func->op_array);
10460|      1|		}
10461|      3|	} else {
10462|      2|		zend_type_error("%s(): Argument #1 ($callback) must be a valid callback, %s", Z_STRVAL_P(RT_CONSTANT(opline, opline->op1)), error);
  ------------------
  |  |  985|      2|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      2|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10463|      2|		efree(error);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10464|      2|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
10465|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (10465:3): [True: 0, False: 2]
  |  Branch (10465:3): [True: 2, False: 0]
  ------------------
10466|      2|	}
10467|       |
10468|      3|	call = zend_vm_stack_push_call_frame(call_info,
10469|      3|		func, opline->extended_value, object_or_called_scope);
10470|      3|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
10471|      3|	EX(call) = call;
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
10472|       |
10473|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10473:2): [True: 0, False: 3]
  |  Branch (10473:2): [True: 3, False: 0]
  ------------------
10474|      3|}
zend_execute.c:ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER:
13019|      2|{
13020|      2|	USE_OPLINE
13021|      2|	zval *function_name;
13022|      2|	zend_fcall_info_cache fcc;
13023|      2|	char *error = NULL;
13024|      2|	zend_function *func;
13025|      2|	void *object_or_called_scope;
13026|      2|	zend_execute_data *call;
13027|      2|	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  681|      2|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      2|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      2|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
  ------------------
  |  |  671|      2|#define ZEND_CALL_DYNAMIC            (1 << 25)
  ------------------
13028|       |
13029|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
13030|      2|	function_name = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
13031|      2|	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
  ------------------
  |  Branch (13031:6): [True: 2, False: 0]
  ------------------
13032|      2|		ZEND_ASSERT(!error);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (13032:3): [True: 0, False: 2]
  |  Branch (13032:3): [True: 2, False: 0]
  ------------------
13033|       |
13034|       |		/* Deprecation can be emitted from zend_is_callable_ex(), which can
13035|       |		 * invoke a user error handler and throw an exception.
13036|       |		 * For the CONST and CV case we reuse the same exception block below
13037|       |		 * to make sure we don't increase VM size too much. */
13038|      2|		if (!(IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (!(IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (!(IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (!(IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (13038:7): [True: 2, Folded]
  ------------------
13039|       |
13040|       |
13041|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (13041:4): [True: 0, False: 0]
  |  Branch (13041:4): [True: 0, False: 0]
  ------------------
13042|      0|		}
13043|       |
13044|      2|		func = fcc.function_handler;
13045|      2|		object_or_called_scope = fcc.called_scope;
13046|      2|		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|      2|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (13046:7): [True: 0, False: 2]
  ------------------
13047|       |			/* Delay closure destruction until its invocation */
13048|      0|			GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
13049|      0|			call_info |= ZEND_CALL_CLOSURE;
  ------------------
  |  |  668|      0|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
13050|      0|			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
  ------------------
  |  |  385|      0|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
  |  Branch (13050:8): [True: 0, False: 0]
  ------------------
13051|      0|				call_info |= ZEND_CALL_FAKE_CLOSURE;
  ------------------
  |  |  669|      0|#define ZEND_CALL_FAKE_CLOSURE       (1 << 23) /* Same as ZEND_ACC_FAKE_CLOSURE */
  ------------------
13052|      0|			}
13053|      0|			if (fcc.object) {
  ------------------
  |  Branch (13053:8): [True: 0, False: 0]
  ------------------
13054|      0|				object_or_called_scope = fcc.object;
13055|      0|				call_info |= ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13056|      0|			}
13057|      2|		} else if (fcc.object) {
  ------------------
  |  Branch (13057:14): [True: 0, False: 2]
  ------------------
13058|      0|			GC_ADDREF(fcc.object); /* For $this pointer */
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
13059|      0|			object_or_called_scope = fcc.object;
13060|      0|			call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              			call_info |= ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_THIS;
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13061|      0|		}
13062|       |
13063|       |
13064|      2|		if ((IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13064:7): [Folded, False: 2]
  ------------------
13065|      0|			if (call_info & ZEND_CALL_CLOSURE) {
  ------------------
  |  |  668|      0|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
  |  Branch (13065:8): [True: 0, False: 0]
  ------------------
13066|      0|				zend_object_release(ZEND_CLOSURE_OBJECT(func));
  ------------------
  |  |   28|      0|	((zend_object*)((char*)(op_array) - sizeof(zend_object)))
  ------------------
13067|      0|			} else if (call_info & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|      0|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (13067:15): [True: 0, False: 0]
  ------------------
13068|      0|				zend_object_release(fcc.object);
13069|      0|			}
13070|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (13070:4): [True: 0, False: 0]
  |  Branch (13070:4): [True: 0, False: 0]
  ------------------
13071|      0|		}
13072|       |
13073|      2|		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&func->op_array))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&func->op_array))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
13074|      0|			init_func_run_time_cache(&func->op_array);
13075|      0|		}
13076|      2|	} else {
13077|      0|		zend_type_error("%s(): Argument #1 ($callback) must be a valid callback, %s", Z_STRVAL_P(RT_CONSTANT(opline, opline->op1)), error);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13078|      0|		efree(error);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13079|       |
13080|       |
13081|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (13081:3): [True: 0, False: 0]
  |  Branch (13081:3): [True: 0, False: 0]
  ------------------
13082|      0|	}
13083|       |
13084|      2|	call = zend_vm_stack_push_call_frame(call_info,
13085|      2|		func, opline->extended_value, object_or_called_scope);
13086|      2|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
13087|      2|	EX(call) = call;
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
13088|       |
13089|      2|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13089:2): [True: 0, False: 2]
  |  Branch (13089:2): [True: 2, False: 0]
  ------------------
13090|      2|}
zend_execute.c:ZEND_SEND_ARRAY_SPEC_HANDLER:
 2648|      4|{
 2649|      4|	USE_OPLINE
 2650|      4|	zval *args;
 2651|       |
 2652|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2653|      4|	args = get_zval_ptr(opline->op1_type, opline->op1, BP_VAR_R);
  ------------------
  |  |  120|      4|#define get_zval_ptr(op_type, node, type) _get_zval_ptr(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      4|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      4|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_zval_ptr(op_type, node, type) _get_zval_ptr(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      4|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      4|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2654|       |
 2655|      4|	if (UNEXPECTED(Z_TYPE_P(args) != IS_ARRAY)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 2656|      2|		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_ISREF_P(args)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_ISREF_P(args)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_ISREF_P(args)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2656:7): [True: 1, False: 1]
  ------------------
 2657|      0|			args = Z_REFVAL_P(args);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2658|      0|			if (EXPECTED(Z_TYPE_P(args) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2659|      0|				goto send_array;
 2660|      0|			}
 2661|      0|		}
 2662|      2|		zend_type_error("call_user_func_array(): Argument #2 ($args) must be of type array, %s given", zend_zval_value_name(args));
 2663|      2|		FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2664|      2|		FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2665|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2665:3): [True: 0, False: 2]
  |  Branch (2665:3): [True: 2, False: 0]
  ------------------
 2666|      2|	} else {
 2667|      2|		uint32_t arg_num;
 2668|      2|		HashTable *ht;
 2669|      2|		zval *arg, *param;
 2670|       |
 2671|      2|send_array:
 2672|      2|		ht = Z_ARRVAL_P(args);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2673|      2|		if (opline->op2_type != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (2673:7): [True: 0, False: 2]
  ------------------
 2674|       |			/* We don't need to handle named params in this case,
 2675|       |			 * because array_slice() is called with $preserve_keys == false. */
 2676|      0|			zval *op2 = get_zval_ptr_deref(opline->op2_type, opline->op2, BP_VAR_R);
  ------------------
  |  |  121|      0|#define get_zval_ptr_deref(op_type, node, type) _get_zval_ptr_deref(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_zval_ptr_deref(op_type, node, type) _get_zval_ptr_deref(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2677|      0|			uint32_t skip = opline->extended_value;
 2678|      0|			uint32_t count = zend_hash_num_elements(ht);
 2679|      0|			zend_long len;
 2680|      0|			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2681|      0|				len = Z_LVAL_P(op2);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2682|      0|			} else if (Z_TYPE_P(op2) == IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if (Z_TYPE_P(op2) == IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (2682:15): [True: 0, False: 0]
  ------------------
 2683|      0|				len = count - skip;
 2684|      0|			} else if (EX_USES_STRICT_TYPES()
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (737:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2685|      0|					|| !zend_parse_arg_long_weak(op2, &len, /* arg_num */ 3)) {
  ------------------
  |  Branch (2685:9): [True: 0, False: 0]
  ------------------
 2686|      0|				zend_type_error(
 2687|      0|					"array_slice(): Argument #3 ($length) must be of type ?int, %s given",
 2688|      0|					zend_zval_value_name(op2));
 2689|      0|				FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2690|      0|				FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2691|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2691:5): [True: 0, False: 0]
  |  Branch (2691:5): [True: 0, False: 0]
  ------------------
 2692|      0|			}
 2693|       |
 2694|      0|			if (len < 0) {
  ------------------
  |  Branch (2694:8): [True: 0, False: 0]
  ------------------
 2695|      0|				len += (zend_long)(count - skip);
 2696|      0|			}
 2697|      0|			if (skip < count && len > 0) {
  ------------------
  |  Branch (2697:8): [True: 0, False: 0]
  |  Branch (2697:24): [True: 0, False: 0]
  ------------------
 2698|      0|				if (len > (zend_long)(count - skip)) {
  ------------------
  |  Branch (2698:9): [True: 0, False: 0]
  ------------------
 2699|      0|					len = (zend_long)(count - skip);
 2700|      0|				}
 2701|      0|				zend_vm_stack_extend_call_frame(&EX(call), 0, len);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2702|      0|				arg_num = 1;
 2703|      0|				param = ZEND_CALL_ARG(EX(call), 1);
  ------------------
  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2704|      0|				ZEND_HASH_FOREACH_VAL(ht, arg) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 2705|      0|					bool must_wrap = 0;
 2706|      0|					if (skip > 0) {
  ------------------
  |  Branch (2706:10): [True: 0, False: 0]
  ------------------
 2707|      0|						skip--;
 2708|      0|						continue;
 2709|      0|					} else if ((zend_long)(arg_num - 1) >= len) {
  ------------------
  |  Branch (2709:17): [True: 0, False: 0]
  ------------------
 2710|      0|						break;
 2711|      0|					} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2712|      0|						if (UNEXPECTED(!Z_ISREF_P(arg))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2713|      0|							if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1170|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      0|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  ------------------
  |  Branch (2713:12): [True: 0, False: 0]
  ------------------
 2714|       |								/* By-value send is not allowed -- emit a warning,
 2715|       |								 * but still perform the call. */
 2716|      0|								zend_param_must_be_ref(EX(call)->func, arg_num);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2717|      0|								must_wrap = 1;
 2718|      0|							}
 2719|      0|						}
 2720|      0|					} else {
 2721|      0|						if (Z_ISREF_P(arg) &&
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2722|      0|						    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              						    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (2722:11): [True: 0, False: 0]
  ------------------
 2723|       |							/* don't separate references for __call */
 2724|      0|							arg = Z_REFVAL_P(arg);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2725|      0|						}
 2726|      0|					}
 2727|      0|					if (EXPECTED(!must_wrap)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2728|      0|						ZVAL_COPY(param, arg);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2729|      0|					} else {
 2730|      0|						Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2731|      0|						ZVAL_NEW_REF(param, arg);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2732|      0|					}
 2733|      0|					ZEND_CALL_NUM_ARGS(EX(call))++;
  ------------------
  |  |  712|      0|	(call)->This.u2.num_args
  ------------------
 2734|      0|					arg_num++;
 2735|      0|					param++;
 2736|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2737|      0|			}
 2738|      0|			FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2739|      2|		} else {
 2740|      2|			zend_string *name;
 2741|      2|			bool have_named_params;
 2742|      2|			zend_vm_stack_extend_call_frame(&EX(call), 0, zend_hash_num_elements(ht));
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
 2743|      2|			arg_num = 1;
 2744|      2|			param = ZEND_CALL_ARG(EX(call), 1);
  ------------------
  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2745|      2|			have_named_params = 0;
 2746|      6|			ZEND_HASH_FOREACH_STR_KEY_VAL(ht, name, arg) {
  ------------------
  |  | 1181|      2|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      2|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      2|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      2|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      2|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      2|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      2|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      4|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      2|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      2|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 1, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      1|				__z++; \
  |  |  |  |  |  | 1057|      1|				__h = _idx; \
  |  |  |  |  |  | 1058|      1|				_idx++; \
  |  |  |  |  |  | 1059|      1|			} else { \
  |  |  |  |  |  | 1060|      1|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      1|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      1|				__h = _p->h; \
  |  |  |  |  |  | 1063|      1|				__key = _p->key; \
  |  |  |  |  |  | 1064|      1|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      1|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      1|			} \
  |  |  |  |  |  | 1068|      2|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|      2|	_key = __key; \
  |  | 1183|      2|	_val = _z;
  ------------------
 2747|      6|				if (name) {
  ------------------
  |  Branch (2747:9): [True: 1, False: 1]
  ------------------
 2748|      1|					void *cache_slot[2] = {NULL, NULL};
 2749|      1|					have_named_params = 1;
 2750|      1|					param = zend_handle_named_arg(&EX(call), name, &arg_num, cache_slot);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 2751|      1|					if (!param) {
  ------------------
  |  Branch (2751:10): [True: 0, False: 1]
  ------------------
 2752|      0|						FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2753|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2753:7): [True: 0, False: 0]
  |  Branch (2753:7): [True: 0, False: 0]
  ------------------
 2754|      0|					}
 2755|      1|				} else if (have_named_params) {
  ------------------
  |  Branch (2755:16): [True: 0, False: 1]
  ------------------
 2756|      0|					zend_throw_error(NULL,
 2757|      0|						"Cannot use positional argument after named argument");
 2758|      0|					FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2759|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2759:6): [True: 0, False: 0]
  |  Branch (2759:6): [True: 0, False: 0]
  ------------------
 2760|      0|				}
 2761|       |
 2762|      6|				bool must_wrap = 0;
 2763|      2|				if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|      2|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|      2|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      2|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2764|      1|					if (UNEXPECTED(!Z_ISREF_P(arg))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2765|      1|						if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1170|      1|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|      1|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  ------------------
  |  Branch (2765:11): [True: 0, False: 1]
  ------------------
 2766|       |							/* By-value send is not allowed -- emit a warning,
 2767|       |							 * but still perform the call. */
 2768|      0|							zend_param_must_be_ref(EX(call)->func, arg_num);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2769|      0|							must_wrap = 1;
 2770|      0|						}
 2771|      1|					}
 2772|      1|				} else {
 2773|      1|					if (Z_ISREF_P(arg) &&
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2774|      0|					    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              					    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (2774:10): [True: 0, False: 0]
  ------------------
 2775|       |						/* don't separate references for __call */
 2776|      0|						arg = Z_REFVAL_P(arg);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2777|      0|					}
 2778|      1|				}
 2779|       |
 2780|      2|				if (EXPECTED(!must_wrap)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2781|      2|					ZVAL_COPY(param, arg);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2782|      2|				} else {
 2783|      0|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2784|      0|					ZVAL_NEW_REF(param, arg);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2785|      0|				}
 2786|      2|				if (!name) {
  ------------------
  |  Branch (2786:9): [True: 1, False: 1]
  ------------------
 2787|      1|					ZEND_CALL_NUM_ARGS(EX(call))++;
  ------------------
  |  |  712|      1|	(call)->This.u2.num_args
  ------------------
 2788|      1|					arg_num++;
 2789|      1|					param++;
 2790|      1|				}
 2791|      2|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2792|      2|		}
 2793|      2|	}
 2794|      2|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      2|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2795|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2795:2): [True: 0, False: 0]
  |  Branch (2795:2): [True: 0, False: 0]
  ------------------
 2796|      2|}
zend_execute.c:ZEND_SEND_USER_SPEC_CONST_HANDLER:
 5217|      7|{
 5218|      7|	USE_OPLINE
 5219|      7|	zval *arg, *param;
 5220|       |
 5221|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5222|       |
 5223|      7|	arg = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      7|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5224|      7|	param = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
 5225|      7|	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 4]
  |  |  ------------------
  ------------------
 5226|      3|		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
 5227|      3|		Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      3|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      3|	zval *_pz = (pz);				\
  |  | 1287|      3|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      3|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      3|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
 5228|      3|		ZVAL_NEW_REF(param, arg);
  ------------------
  |  | 1205|      3|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      3|		zend_reference *_ref =									\
  |  | 1207|      3|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      3|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      3|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      3|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      3|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      3|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      3|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      3|	do {												\
  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      3|		_ref->sources.ptr = NULL;									\
  |  | 1212|      3|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      3|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      3|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 5229|      4|	} else {
 5230|      4|		ZVAL_COPY(param, arg);
  ------------------
  |  | 1425|      4|	do {												\
  |  | 1426|      4|		zval *_z1 = (z);								\
  |  | 1427|      4|		const zval *_z2 = (v);							\
  |  | 1428|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      4|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      4|		}												\
  |  | 1434|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 5231|      4|	}
 5232|       |
 5233|       |
 5234|      7|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      7|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      7|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 7, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      7|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      7|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5234:2): [True: 0, False: 0]
  |  Branch (5234:2): [True: 0, False: 0]
  ------------------
 5235|      7|}
zend_execute.c:ZEND_SEND_USER_SPEC_TMP_HANDLER:
17342|      2|{
17343|      2|	USE_OPLINE
17344|      2|	zval *arg, *param;
17345|       |
17346|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17347|       |
17348|      2|	arg = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17349|      2|	param = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
17350|      2|	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
17351|      2|		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
17352|      2|		Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
17353|      2|		ZVAL_NEW_REF(param, arg);
  ------------------
  |  | 1205|      2|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      2|		zend_reference *_ref =									\
  |  | 1207|      2|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      2|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      2|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      2|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      2|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      2|		_ref->sources.ptr = NULL;									\
  |  | 1212|      2|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      2|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      2|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17354|      2|	} else {
17355|      0|		ZVAL_COPY(param, arg);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17356|      0|	}
17357|       |
17358|      2|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17359|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17359:2): [True: 0, False: 0]
  |  Branch (17359:2): [True: 0, False: 0]
  ------------------
17360|      2|}
zend_execute.c:ZEND_SEND_USER_SPEC_CV_HANDLER:
40011|      2|{
40012|      2|	USE_OPLINE
40013|      2|	zval *arg, *param;
40014|       |
40015|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40016|       |
40017|      2|	arg = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40018|      2|	param = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
40019|      2|	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
40020|      2|		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
40021|      2|		Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
40022|      2|		ZVAL_NEW_REF(param, arg);
  ------------------
  |  | 1205|      2|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      2|		zend_reference *_ref =									\
  |  | 1207|      2|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      2|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      2|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      2|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      2|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      2|	do {												\
  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      2|		_ref->sources.ptr = NULL;									\
  |  | 1212|      2|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      2|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      2|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
40023|      2|	} else {
40024|      0|		ZVAL_COPY(param, arg);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40025|      0|	}
40026|       |
40027|       |
40028|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40028:2): [True: 0, False: 0]
  |  Branch (40028:2): [True: 0, False: 0]
  ------------------
40029|      2|}
zend_execute.c:ZEND_STRLEN_SPEC_TMP_HANDLER:
18136|      1|{
18137|      1|	USE_OPLINE
18138|      1|	zval *value;
18139|       |
18140|      1|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18141|      1|	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
18142|      1|		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18143|      1|		if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18143:7): [True: 1, Folded]
  ------------------
18144|      1|			zval_ptr_dtor_str(value);
18145|      1|		}
18146|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18146:3): [True: 0, False: 1]
  |  Branch (18146:3): [True: 1, False: 0]
  ------------------
18147|      1|	} else {
18148|      0|		bool strict;
18149|       |
18150|      0|		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (18150:7): [Folded, False: 0]
  |  Branch (18150:40): [True: 0, False: 0]
  ------------------
18151|      0|			value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18152|      0|			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18153|      0|				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18154|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18155|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18155:5): [True: 0, False: 0]
  |  Branch (18155:5): [True: 0, False: 0]
  ------------------
18156|      0|			}
18157|      0|		}
18158|       |
18159|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18160|      0|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18160:7): [Folded, False: 0]
  ------------------
18161|      0|			value = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18162|      0|		}
18163|      0|		strict = EX_USES_STRICT_TYPES();
  ------------------
  |  |  740|      0|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      0|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18164|      0|		do {
18165|      0|			if (EXPECTED(!strict)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18166|      0|				zend_string *str;
18167|      0|				zval tmp;
18168|       |
18169|      0|				if (UNEXPECTED(Z_TYPE_P(value) == IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18170|      0|					zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
18171|      0|						"strlen(): Passing null to parameter #1 ($string) of type string is deprecated");
18172|      0|					ZVAL_LONG(EX_VAR(opline->result.var), 0);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18173|      0|					if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18174|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18174:7): [True: 0, False: 0]
  |  Branch (18174:7): [True: 0, False: 0]
  ------------------
18175|      0|					}
18176|      0|					break;
18177|      0|				}
18178|       |
18179|      0|				ZVAL_COPY(&tmp, value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18180|      0|				if ((str = zend_parse_arg_str_weak(&tmp, 1)) != NULL) {
  ------------------
  |  Branch (18180:9): [True: 0, False: 0]
  ------------------
18181|      0|					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18182|      0|					zval_ptr_dtor(&tmp);
18183|      0|					break;
18184|      0|				}
18185|      0|				zval_ptr_dtor(&tmp);
18186|      0|			}
18187|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (18187:8): [True: 0, False: 0]
  ------------------
18188|      0|				zend_type_error("strlen(): Argument #1 ($string) must be of type string, %s given", zend_zval_value_name(value));
18189|      0|			}
18190|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18191|      0|		} while (0);
  ------------------
  |  Branch (18191:12): [Folded, False: 0]
  ------------------
18192|      0|	}
18193|      0|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18194|      0|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18194:2): [True: 0, False: 0]
  |  Branch (18194:2): [True: 0, False: 0]
  ------------------
18195|      0|}
zend_execute.c:ZEND_STRLEN_SPEC_CV_HANDLER:
40726|      5|{
40727|      5|	USE_OPLINE
40728|      5|	zval *value;
40729|       |
40730|      5|	value = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40731|      5|	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  ------------------
  ------------------
40732|      4|		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
40733|      4|		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (40733:7): [Folded, False: 4]
  ------------------
40734|      0|			zval_ptr_dtor_str(value);
40735|      0|		}
40736|      4|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      4|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      4|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40736:3): [True: 0, False: 4]
  |  Branch (40736:3): [True: 4, False: 0]
  ------------------
40737|      4|	} else {
40738|      1|		bool strict;
40739|       |
40740|      1|		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (40740:7): [True: 1, Folded]
  |  Branch (40740:35): [True: 0, False: 1]
  ------------------
40741|      0|			value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40742|      0|			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40743|      0|				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40744|       |
40745|       |
40746|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40746:5): [True: 0, False: 0]
  |  Branch (40746:5): [True: 0, False: 0]
  ------------------
40747|      0|			}
40748|      0|		}
40749|       |
40750|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40751|      1|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (40751:7): [True: 1, Folded]
  ------------------
40752|      0|			value = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40753|      0|		}
40754|      1|		strict = EX_USES_STRICT_TYPES();
  ------------------
  |  |  740|      1|	ZEND_CALL_USES_STRICT_TYPES(execute_data)
  |  |  ------------------
  |  |  |  |  737|      1|	(((call)->func->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      1|#define ZEND_ACC_STRICT_TYPES            (1U << 31) /*    |  X  |     |     */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40755|      1|		do {
40756|      1|			if (EXPECTED(!strict)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
40757|      1|				zend_string *str;
40758|      1|				zval tmp;
40759|       |
40760|      1|				if (UNEXPECTED(Z_TYPE_P(value) == IS_NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
40761|      1|					zend_error(E_DEPRECATED,
  ------------------
  |  |   36|      1|#define E_DEPRECATED		(1<<13L)
  ------------------
40762|      1|						"strlen(): Passing null to parameter #1 ($string) of type string is deprecated");
40763|      1|					ZVAL_LONG(EX_VAR(opline->result.var), 0);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
40764|      1|					if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
40765|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40765:7): [True: 0, False: 0]
  |  Branch (40765:7): [True: 0, False: 0]
  ------------------
40766|      0|					}
40767|      1|					break;
40768|      1|				}
40769|       |
40770|      0|				ZVAL_COPY(&tmp, value);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40771|      0|				if ((str = zend_parse_arg_str_weak(&tmp, 1)) != NULL) {
  ------------------
  |  Branch (40771:9): [True: 0, False: 0]
  ------------------
40772|      0|					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40773|      0|					zval_ptr_dtor(&tmp);
40774|      0|					break;
40775|      0|				}
40776|      0|				zval_ptr_dtor(&tmp);
40777|      0|			}
40778|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (40778:8): [True: 0, False: 0]
  ------------------
40779|      0|				zend_type_error("strlen(): Argument #1 ($string) must be of type string, %s given", zend_zval_value_name(value));
40780|      0|			}
40781|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40782|      0|		} while (0);
  ------------------
  |  Branch (40782:12): [Folded, False: 0]
  ------------------
40783|      1|	}
40784|       |
40785|       |
40786|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40786:2): [True: 0, False: 0]
  |  Branch (40786:2): [True: 0, False: 0]
  ------------------
40787|      1|}
zend_execute.c:ZEND_DEFINED_SPEC_CONST_HANDLER:
 6184|      3|{
 6185|      3|	USE_OPLINE
 6186|      3|	zend_constant *c;
 6187|       |
 6188|      3|	c = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      3|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6189|      3|	if (EXPECTED(c != NULL)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 6190|      0|		if (!IS_SPECIAL_CACHE_VAL(c)) {
  ------------------
  |  |  562|      0|	(((uintptr_t)(ptr)) & CACHE_SPECIAL)
  |  |  ------------------
  |  |  |  |  559|      0|#define CACHE_SPECIAL (1<<0)
  |  |  ------------------
  ------------------
  |  Branch (6190:7): [True: 0, False: 0]
  ------------------
 6191|      1|defined_true:
 6192|      1|			ZEND_VM_SMART_BRANCH_TRUE();
  ------------------
  |  | 5854|      1|#define ZEND_VM_SMART_BRANCH_TRUE() do { \
  |  | 5855|      1|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5856|      0|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5857|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5858|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5859|      1|		} else { \
  |  | 5860|      0|			ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5861|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5862|      0|		} \
  |  | 5863|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5864|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5864:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6193|      1|		} else if (EXPECTED(zend_hash_num_elements(EG(zend_constants)) == DECODE_SPECIAL_CACHE_NUM(c))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6194|      2|defined_false:
 6195|      2|			ZEND_VM_SMART_BRANCH_FALSE();
  ------------------
  |  | 5877|      2|#define ZEND_VM_SMART_BRANCH_FALSE() do { \
  |  | 5878|      2|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5879|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5880|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5881|      1|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5882|      1|		} else { \
  |  | 5883|      1|			ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5884|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5885|      1|		} \
  |  | 5886|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5887|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5887:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6196|      2|		}
 6197|      0|	}
 6198|      3|	if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
  ------------------
  |  |  102|      3|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      3|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              	if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (6198:6): [True: 2, False: 1]
  ------------------
 6199|      2|		CACHE_PTR(opline->extended_value, ENCODE_SPECIAL_CACHE_NUM(zend_hash_num_elements(EG(zend_constants))));
  ------------------
  |  |  529|      2|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      2|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 6200|      2|		goto defined_false;
 6201|      2|	} else {
 6202|      1|		goto defined_true;
 6203|      1|	}
 6204|      3|}
zend_execute.c:ZEND_TYPE_CHECK_SPEC_CONST_HANDLER:
 6115|      1|{
 6116|      1|	USE_OPLINE
 6117|      1|	zval *value;
 6118|      1|	int result = 0;
 6119|       |
 6120|      1|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6121|      1|	if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (6121:6): [True: 0, False: 1]
  ------------------
 6122|      0|type_check_resource:
 6123|      0|		if (opline->extended_value != MAY_BE_RESOURCE
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
  |  Branch (6123:7): [True: 0, False: 0]
  ------------------
 6124|      0|		 || EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6125|      0|			result = 1;
 6126|      0|		}
 6127|      1|	} else if ((IS_CONST & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	} else if ((IS_CONST & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CONST & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CONST & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6127:13): [Folded, False: 1]
  ------------------
 6128|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6129|      0|		if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (6129:7): [True: 0, False: 0]
  ------------------
 6130|      0|			goto type_check_resource;
 6131|      0|		}
 6132|      1|	} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6132:13): [Folded, False: 1]
  ------------------
 6133|      0|		result = ((1 << IS_NULL) & opline->extended_value) != 0;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
 6134|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6135|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 6136|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6137|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6138|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (6138:4): [True: 0, False: 0]
  |  Branch (6138:4): [True: 0, False: 0]
  ------------------
 6139|      0|		}
 6140|      0|	}
 6141|      1|	if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (6141:6): [Folded, False: 1]
  ------------------
 6142|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6143|       |
 6144|       |
 6145|      0|		ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      0|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      0|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 0, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      0|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6146|      1|	} else {
 6147|      1|		ZEND_VM_SMART_BRANCH(result, 0);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [Folded, False: 1]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      1|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      1|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6148|      1|	}
 6149|      1|}
zend_execute.c:ZEND_TYPE_CHECK_SPEC_TMP_HANDLER:
18198|      1|{
18199|      1|	USE_OPLINE
18200|      1|	zval *value;
18201|      1|	int result = 0;
18202|       |
18203|      1|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18204|      1|	if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (18204:6): [True: 0, False: 1]
  ------------------
18205|      0|type_check_resource:
18206|      0|		if (opline->extended_value != MAY_BE_RESOURCE
  ------------------
  |  |   33|      0|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
  |  Branch (18206:7): [True: 0, False: 0]
  ------------------
18207|      0|		 || EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18208|      0|			result = 1;
18209|      0|		}
18210|      1|	} else if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18210:13): [Folded, False: 1]
  ------------------
18211|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18212|      0|		if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (18212:7): [True: 0, False: 0]
  ------------------
18213|      0|			goto type_check_resource;
18214|      0|		}
18215|      1|	} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18215:13): [Folded, False: 1]
  ------------------
18216|      0|		result = ((1 << IS_NULL) & opline->extended_value) != 0;
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
18217|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18218|      0|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18219|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18220|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18221|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18221:4): [True: 0, False: 0]
  |  Branch (18221:4): [True: 0, False: 0]
  ------------------
18222|      0|		}
18223|      0|	}
18224|      1|	if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (18224:6): [True: 1, Folded]
  ------------------
18225|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18226|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18227|      1|		ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      1|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      1|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18228|      1|	} else {
18229|      0|		ZEND_VM_SMART_BRANCH(result, 0);
  ------------------
  |  | 5808|      0|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      0|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      0|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18230|      0|	}
18231|      1|}
zend_execute.c:ZEND_TYPE_CHECK_SPEC_CV_HANDLER:
40790|    444|{
40791|    444|	USE_OPLINE
40792|    444|	zval *value;
40793|    444|	int result = 0;
40794|       |
40795|    444|	value = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    444|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    444|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40796|    444|	if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
  ------------------
  |  |  669|    444|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    444|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (40796:6): [True: 191, False: 253]
  ------------------
40797|    191|type_check_resource:
40798|    191|		if (opline->extended_value != MAY_BE_RESOURCE
  ------------------
  |  |   33|    382|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  ------------------
  |  |  |  |  615|    191|#define IS_RESOURCE					9
  |  |  ------------------
  ------------------
  |  Branch (40798:7): [True: 191, False: 0]
  ------------------
40799|    191|		 || EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40800|    191|			result = 1;
40801|    191|		}
40802|    253|	} else if ((IS_CV & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|    253|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|    253|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|    253|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CV & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|    253|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    253|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    253|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    253|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 252]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40802:13): [True: 253, Folded]
  ------------------
40803|      1|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40804|      1|		if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (40804:7): [True: 0, False: 1]
  ------------------
40805|      0|			goto type_check_resource;
40806|      0|		}
40807|    252|	} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|    252|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  867|    504|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|    252|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 248, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (40807:13): [True: 252, Folded]
  ------------------
40808|    248|		result = ((1 << IS_NULL) & opline->extended_value) != 0;
  ------------------
  |  |  607|    248|#define IS_NULL						1
  ------------------
40809|    248|		SAVE_OPLINE();
  ------------------
  |  |  428|    248|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    248|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40810|    248|		ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|    248|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|    248|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40811|    248|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|    248|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 248]
  |  |  ------------------
  ------------------
40812|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40813|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40813:4): [True: 0, False: 0]
  |  Branch (40813:4): [True: 0, False: 0]
  ------------------
40814|      0|		}
40815|    248|	}
40816|    444|	if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  867|    444|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  865|    444|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
  ------------------
  |  |  866|    444|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (40816:6): [Folded, False: 444]
  ------------------
40817|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40818|       |
40819|       |
40820|      0|		ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      0|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      0|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 0, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      0|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40821|    444|	} else {
40822|    444|		ZEND_VM_SMART_BRANCH(result, 0);
  ------------------
  |  | 5808|    444|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|    444|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [Folded, False: 444]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|    444|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|    444|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 443]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      1|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 1, False: 0]
  |  |  ------------------
  |  | 5813|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      1|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|    443|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|    443|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 189, False: 254]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|    189|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 1, False: 188]
  |  |  ------------------
  |  | 5819|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|    188|			} else { \
  |  | 5821|    188|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|    188|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    188|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    188|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    188|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    188|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    188|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    188|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    188|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 188]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    188|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 188]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|    188|			} \
  |  | 5823|    254|		} else { \
  |  | 5824|    254|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|    254|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|    254|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    254|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    254|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|    254|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|    506|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 2, False: 252]
  |  |  |  |  ------------------
  |  |  |  | 1074|    254|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 254]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|    254|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|    254|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|    254|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    254|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|    254|		} \
  |  | 5827|    444|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    444|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|    444|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40823|    444|	}
40824|    444|}
zend_execute.c:ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER:
11197|      6|{
11198|      6|	if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11198:6): [Folded, False: 6]
  ------------------
11199|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11200|      0|		zend_verify_missing_return_type(EX(func));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
11201|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11201:3): [True: 0, False: 0]
  |  Branch (11201:3): [True: 0, False: 0]
  ------------------
11202|      6|	} else {
11203|       |/* prevents "undefined variable opline" errors */
11204|      6|#if 0 || (IS_CONST != IS_UNUSED)
11205|      6|		USE_OPLINE
11206|      6|		zval *retval_ref, *retval_ptr;
11207|      6|		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
  ------------------
  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  ------------------
11208|      6|		retval_ref = retval_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11209|       |
11210|      6|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11210:7): [True: 6, Folded]
  ------------------
11211|      6|			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
11212|      6|			retval_ref = retval_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
11213|      6|		} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (11213:14): [Folded, False: 0]
  ------------------
11214|      0|			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11215|      0|				retval_ref = retval_ptr = Z_INDIRECT_P(retval_ptr);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
11216|      0|			}
11217|      0|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11218|      0|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (11218:14): [Folded, False: 0]
  ------------------
11219|      0|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11220|      0|		}
11221|       |
11222|      6|		if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(ret_info->type, Z_TYPE_P(retval_ptr)))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
11223|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11223:4): [True: 0, False: 0]
  |  Branch (11223:4): [True: 0, False: 0]
  ------------------
11224|      0|		}
11225|       |
11226|      6|		if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11226:7): [Folded, False: 6]
  ------------------
11227|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11228|      0|			retval_ref = retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11229|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11230|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11230:5): [True: 0, False: 0]
  |  Branch (11230:5): [True: 0, False: 0]
  ------------------
11231|      0|			}
11232|      0|			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (11232:8): [True: 0, False: 0]
  ------------------
11233|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11233:5): [True: 0, False: 0]
  |  Branch (11233:5): [True: 0, False: 0]
  ------------------
11234|      0|			}
11235|      0|		}
11236|       |
11237|      6|		zend_reference *ref = NULL;
11238|      6|		if (UNEXPECTED(retval_ref != retval_ptr)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
11239|      0|			if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11240|      0|				ref = Z_REF_P(retval_ref);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
11241|      0|			} else {
11242|       |				/* A cast might happen - unwrap the reference if this is a by-value return */
11243|      0|				if (Z_REFCOUNT_P(retval_ref) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (11243:9): [True: 0, False: 0]
  ------------------
11244|      0|					ZVAL_UNREF(retval_ref);
  ------------------
  |  | 1499|      0|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      0|		zval *_z = (z);									\
  |  | 1501|      0|		zend_reference *ref;							\
  |  | 1502|      0|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      0|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      0|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      0|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11244:6): [True: 0, False: 0]
  |  Branch (11244:6): [True: 0, False: 0]
  ------------------
11245|      0|				} else {
11246|      0|					Z_DELREF_P(retval_ref);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
11247|      0|					ZVAL_COPY(retval_ref, retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11248|      0|				}
11249|      0|				retval_ptr = retval_ref;
11250|      0|			}
11251|      0|		}
11252|       |
11253|      6|		SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11254|      6|		if (UNEXPECTED(!zend_check_type_slow(&ret_info->type, retval_ptr, ref, 1, 0))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
11255|      6|			zend_verify_return_error(EX(func), retval_ptr);
  ------------------
  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  ------------------
11256|      6|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      6|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      6|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11256:4): [True: 0, False: 6]
  |  Branch (11256:4): [True: 6, False: 0]
  ------------------
11257|      6|		}
11258|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      6|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11258:3): [True: 0, False: 0]
  |  Branch (11258:3): [True: 0, False: 0]
  ------------------
11259|      0|#endif
11260|      0|	}
11261|      6|}
zend_execute.c:ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER:
21506|     18|{
21507|     18|	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|     18|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|     18|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21507:6): [Folded, False: 18]
  ------------------
21508|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21509|      0|		zend_verify_missing_return_type(EX(func));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
21510|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21510:3): [True: 0, False: 0]
  |  Branch (21510:3): [True: 0, False: 0]
  ------------------
21511|     18|	} else {
21512|       |/* prevents "undefined variable opline" errors */
21513|     18|#if 0 || (IS_TMP_VAR != IS_UNUSED)
21514|     18|		USE_OPLINE
21515|     18|		zval *retval_ref, *retval_ptr;
21516|     18|		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
  ------------------
  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  ------------------
21517|     18|		retval_ref = retval_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     18|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     18|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21518|       |
21519|     18|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|     18|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|     18|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21519:7): [Folded, False: 18]
  ------------------
21520|      0|			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21521|      0|			retval_ref = retval_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21522|     18|		} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|     18|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|     18|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (21522:14): [Folded, False: 18]
  ------------------
21523|      0|			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21524|      0|				retval_ref = retval_ptr = Z_INDIRECT_P(retval_ptr);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
21525|      0|			}
21526|      0|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21527|     18|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|     18|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|     18|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (21527:14): [Folded, False: 18]
  ------------------
21528|      0|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21529|      0|		}
21530|       |
21531|     18|		if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(ret_info->type, Z_TYPE_P(retval_ptr)))) {
  ------------------
  |  |  456|     18|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 9]
  |  |  ------------------
  ------------------
21532|      9|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      9|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      9|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      9|	} else { \
  |  |  |  | 5761|      9|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      9|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      9|	} \
  |  |  |  | 5764|      9|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21532:4): [True: 0, False: 9]
  |  Branch (21532:4): [True: 9, False: 0]
  ------------------
21533|      9|		}
21534|       |
21535|      9|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  865|      9|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  867|     18|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (21535:7): [Folded, False: 9]
  ------------------
21536|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21537|      0|			retval_ref = retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21538|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21539|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21539:5): [True: 0, False: 0]
  |  Branch (21539:5): [True: 0, False: 0]
  ------------------
21540|      0|			}
21541|      0|			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (21541:8): [True: 0, False: 0]
  ------------------
21542|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21542:5): [True: 0, False: 0]
  |  Branch (21542:5): [True: 0, False: 0]
  ------------------
21543|      0|			}
21544|      0|		}
21545|       |
21546|      9|		zend_reference *ref = NULL;
21547|      9|		if (UNEXPECTED(retval_ref != retval_ptr)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
21548|      0|			if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21549|      0|				ref = Z_REF_P(retval_ref);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
21550|      0|			} else {
21551|       |				/* A cast might happen - unwrap the reference if this is a by-value return */
21552|      0|				if (Z_REFCOUNT_P(retval_ref) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (21552:9): [True: 0, False: 0]
  ------------------
21553|      0|					ZVAL_UNREF(retval_ref);
  ------------------
  |  | 1499|      0|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      0|		zval *_z = (z);									\
  |  | 1501|      0|		zend_reference *ref;							\
  |  | 1502|      0|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      0|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      0|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      0|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (21553:6): [True: 0, False: 0]
  |  Branch (21553:6): [True: 0, False: 0]
  ------------------
21554|      0|				} else {
21555|      0|					Z_DELREF_P(retval_ref);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
21556|      0|					ZVAL_COPY(retval_ref, retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21557|      0|				}
21558|      0|				retval_ptr = retval_ref;
21559|      0|			}
21560|      0|		}
21561|       |
21562|      9|		SAVE_OPLINE();
  ------------------
  |  |  428|      9|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21563|      9|		if (UNEXPECTED(!zend_check_type_slow(&ret_info->type, retval_ptr, ref, 1, 0))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  ------------------
  ------------------
21564|      1|			zend_verify_return_error(EX(func), retval_ptr);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
21565|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21565:4): [True: 0, False: 1]
  |  Branch (21565:4): [True: 1, False: 0]
  ------------------
21566|      1|		}
21567|      8|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      9|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21567:3): [True: 0, False: 8]
  |  Branch (21567:3): [True: 8, False: 0]
  ------------------
21568|      8|#endif
21569|      8|	}
21570|     18|}
zend_execute.c:ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER:
29551|      9|{
29552|      9|	if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      9|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (29552:6): [Folded, False: 9]
  ------------------
29553|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29554|      0|		zend_verify_missing_return_type(EX(func));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
29555|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29555:3): [True: 0, False: 0]
  |  Branch (29555:3): [True: 0, False: 0]
  ------------------
29556|      9|	} else {
29557|       |/* prevents "undefined variable opline" errors */
29558|      9|#if 0 || (IS_VAR != IS_UNUSED)
29559|      9|		USE_OPLINE
29560|      9|		zval *retval_ref, *retval_ptr;
29561|      9|		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
  ------------------
  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  ------------------
29562|      9|		retval_ref = retval_ptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29563|       |
29564|      9|		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      9|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29564:7): [Folded, False: 9]
  ------------------
29565|      0|			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29566|      0|			retval_ref = retval_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
29567|      9|		} else if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              		} else if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (29567:14): [True: 9, Folded]
  ------------------
29568|      9|			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 5]
  |  |  ------------------
  ------------------
29569|      4|				retval_ref = retval_ptr = Z_INDIRECT_P(retval_ptr);
  ------------------
  |  | 1044|      4|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      4|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
29570|      4|			}
29571|      9|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      9|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      9|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 5, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      5|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      5|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      5|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      5|		}												\
  |  | 1478|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
29572|      9|		} else if (IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if (IS_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (29572:14): [Folded, False: 0]
  ------------------
29573|      0|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29574|      0|		}
29575|       |
29576|      9|		if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(ret_info->type, Z_TYPE_P(retval_ptr)))) {
  ------------------
  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 4]
  |  |  ------------------
  ------------------
29577|      5|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      5|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      5|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      5|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29577:4): [True: 0, False: 5]
  |  Branch (29577:4): [True: 5, False: 0]
  ------------------
29578|      5|		}
29579|       |
29580|      4|		if (IS_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  867|      8|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_VAR == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29580:7): [Folded, False: 4]
  ------------------
29581|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29582|      0|			retval_ref = retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
29583|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
29584|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29584:5): [True: 0, False: 0]
  |  Branch (29584:5): [True: 0, False: 0]
  ------------------
29585|      0|			}
29586|      0|			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (29586:8): [True: 0, False: 0]
  ------------------
29587|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29587:5): [True: 0, False: 0]
  |  Branch (29587:5): [True: 0, False: 0]
  ------------------
29588|      0|			}
29589|      0|		}
29590|       |
29591|      4|		zend_reference *ref = NULL;
29592|      4|		if (UNEXPECTED(retval_ref != retval_ptr)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
29593|      3|			if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
29594|      3|				ref = Z_REF_P(retval_ref);
  ------------------
  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
29595|      3|			} else {
29596|       |				/* A cast might happen - unwrap the reference if this is a by-value return */
29597|      0|				if (Z_REFCOUNT_P(retval_ref) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (29597:9): [True: 0, False: 0]
  ------------------
29598|      0|					ZVAL_UNREF(retval_ref);
  ------------------
  |  | 1499|      0|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      0|		zval *_z = (z);									\
  |  | 1501|      0|		zend_reference *ref;							\
  |  | 1502|      0|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      0|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      0|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      0|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (29598:6): [True: 0, False: 0]
  |  Branch (29598:6): [True: 0, False: 0]
  ------------------
29599|      0|				} else {
29600|      0|					Z_DELREF_P(retval_ref);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
29601|      0|					ZVAL_COPY(retval_ref, retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
29602|      0|				}
29603|      0|				retval_ptr = retval_ref;
29604|      0|			}
29605|      3|		}
29606|       |
29607|      4|		SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
29608|      4|		if (UNEXPECTED(!zend_check_type_slow(&ret_info->type, retval_ptr, ref, 1, 0))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
29609|      4|			zend_verify_return_error(EX(func), retval_ptr);
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
29610|      4|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (29610:4): [True: 0, False: 4]
  |  Branch (29610:4): [True: 4, False: 0]
  ------------------
29611|      4|		}
29612|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      4|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (29612:3): [True: 0, False: 0]
  |  Branch (29612:3): [True: 0, False: 0]
  ------------------
29613|      0|#endif
29614|      0|	}
29615|      9|}
zend_execute.c:ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER:
36938|      4|{
36939|      4|	if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (36939:6): [True: 4, Folded]
  ------------------
36940|      4|		SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
36941|      4|		zend_verify_missing_return_type(EX(func));
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
36942|      4|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (36942:3): [True: 0, False: 4]
  |  Branch (36942:3): [True: 4, False: 0]
  ------------------
36943|      4|	} else {
36944|       |/* prevents "undefined variable opline" errors */
36945|       |#if 0 || (IS_UNUSED != IS_UNUSED)
36946|       |		USE_OPLINE
36947|       |		zval *retval_ref, *retval_ptr;
36948|       |		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
36949|       |		retval_ref = retval_ptr = NULL;
36950|       |
36951|       |		if (IS_UNUSED == IS_CONST) {
36952|       |			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
36953|       |			retval_ref = retval_ptr = EX_VAR(opline->result.var);
36954|       |		} else if (IS_UNUSED == IS_VAR) {
36955|       |			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
36956|       |				retval_ref = retval_ptr = Z_INDIRECT_P(retval_ptr);
36957|       |			}
36958|       |			ZVAL_DEREF(retval_ptr);
36959|       |		} else if (IS_UNUSED == IS_CV) {
36960|       |			ZVAL_DEREF(retval_ptr);
36961|       |		}
36962|       |
36963|       |		if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(ret_info->type, Z_TYPE_P(retval_ptr)))) {
36964|       |			ZEND_VM_NEXT_OPCODE();
36965|       |		}
36966|       |
36967|       |		if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
36968|       |			SAVE_OPLINE();
36969|       |			retval_ref = retval_ptr = ZVAL_UNDEFINED_OP1();
36970|       |			if (UNEXPECTED(EG(exception))) {
36971|       |				HANDLE_EXCEPTION();
36972|       |			}
36973|       |			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
36974|       |				ZEND_VM_NEXT_OPCODE();
36975|       |			}
36976|       |		}
36977|       |
36978|       |		zend_reference *ref = NULL;
36979|       |		if (UNEXPECTED(retval_ref != retval_ptr)) {
36980|       |			if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
36981|       |				ref = Z_REF_P(retval_ref);
36982|       |			} else {
36983|       |				/* A cast might happen - unwrap the reference if this is a by-value return */
36984|       |				if (Z_REFCOUNT_P(retval_ref) == 1) {
36985|       |					ZVAL_UNREF(retval_ref);
36986|       |				} else {
36987|       |					Z_DELREF_P(retval_ref);
36988|       |					ZVAL_COPY(retval_ref, retval_ptr);
36989|       |				}
36990|       |				retval_ptr = retval_ref;
36991|       |			}
36992|       |		}
36993|       |
36994|       |		SAVE_OPLINE();
36995|       |		if (UNEXPECTED(!zend_check_type_slow(&ret_info->type, retval_ptr, ref, 1, 0))) {
36996|       |			zend_verify_return_error(EX(func), retval_ptr);
36997|       |			HANDLE_EXCEPTION();
36998|       |		}
36999|       |		ZEND_VM_NEXT_OPCODE();
37000|       |#endif
37001|      0|	}
37002|      4|}
zend_execute.c:ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER:
49147|     17|{
49148|     17|	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|     17|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49148:6): [Folded, False: 17]
  ------------------
49149|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49150|      0|		zend_verify_missing_return_type(EX(func));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
49151|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49151:3): [True: 0, False: 0]
  |  Branch (49151:3): [True: 0, False: 0]
  ------------------
49152|     17|	} else {
49153|       |/* prevents "undefined variable opline" errors */
49154|     17|#if 0 || (IS_CV != IS_UNUSED)
49155|     17|		USE_OPLINE
49156|     17|		zval *retval_ref, *retval_ptr;
49157|     17|		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
  ------------------
  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  ------------------
49158|     17|		retval_ref = retval_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     17|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     17|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49159|       |
49160|     17|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|     17|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49160:7): [Folded, False: 17]
  ------------------
49161|      0|			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49162|      0|			retval_ref = retval_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49163|     17|		} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49163:14): [Folded, False: 17]
  ------------------
49164|      0|			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49165|      0|				retval_ref = retval_ptr = Z_INDIRECT_P(retval_ptr);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
49166|      0|			}
49167|      0|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49168|     17|		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49168:14): [True: 17, Folded]
  ------------------
49169|     17|			ZVAL_DEREF(retval_ptr);
  ------------------
  |  | 1474|     17|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     17|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
49170|     17|		}
49171|       |
49172|     17|		if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(ret_info->type, Z_TYPE_P(retval_ptr)))) {
  ------------------
  |  |  456|     17|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 9]
  |  |  ------------------
  ------------------
49173|      8|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      8|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49173:4): [True: 0, False: 8]
  |  Branch (49173:4): [True: 8, False: 0]
  ------------------
49174|      8|		}
49175|       |
49176|      9|		if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  867|     18|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(retval_ptr))) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (49176:7): [True: 9, Folded]
  ------------------
49177|      5|			SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49178|      5|			retval_ref = retval_ptr = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      5|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49179|      5|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
49180|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49180:5): [True: 0, False: 0]
  |  Branch (49180:5): [True: 0, False: 0]
  ------------------
49181|      0|			}
49182|      5|			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |  261|      5|	((t).type_mask)
  ------------------
              			if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
  ------------------
  |  |   24|      5|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (49182:8): [True: 4, False: 1]
  ------------------
49183|      4|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      4|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      4|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      4|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      4|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49183:5): [True: 0, False: 4]
  |  Branch (49183:5): [True: 4, False: 0]
  ------------------
49184|      4|			}
49185|      5|		}
49186|       |
49187|      5|		zend_reference *ref = NULL;
49188|      5|		if (UNEXPECTED(retval_ref != retval_ptr)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
49189|      1|			if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
49190|      1|				ref = Z_REF_P(retval_ref);
  ------------------
  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
49191|      1|			} else {
49192|       |				/* A cast might happen - unwrap the reference if this is a by-value return */
49193|      0|				if (Z_REFCOUNT_P(retval_ref) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (49193:9): [True: 0, False: 0]
  ------------------
49194|      0|					ZVAL_UNREF(retval_ref);
  ------------------
  |  | 1499|      0|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      0|		zval *_z = (z);									\
  |  | 1501|      0|		zend_reference *ref;							\
  |  | 1502|      0|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      0|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      0|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      0|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49194:6): [True: 0, False: 0]
  |  Branch (49194:6): [True: 0, False: 0]
  ------------------
49195|      0|				} else {
49196|      0|					Z_DELREF_P(retval_ref);
  ------------------
  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
49197|      0|					ZVAL_COPY(retval_ref, retval_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49198|      0|				}
49199|      0|				retval_ptr = retval_ref;
49200|      0|			}
49201|      1|		}
49202|       |
49203|      5|		SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49204|      5|		if (UNEXPECTED(!zend_check_type_slow(&ret_info->type, retval_ptr, ref, 1, 0))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  ------------------
  ------------------
49205|      2|			zend_verify_return_error(EX(func), retval_ptr);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
49206|      2|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (49206:4): [True: 0, False: 2]
  |  Branch (49206:4): [True: 2, False: 0]
  ------------------
49207|      2|		}
49208|      3|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      5|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49208:3): [True: 0, False: 3]
  |  Branch (49208:3): [True: 3, False: 0]
  ------------------
49209|      3|#endif
49210|      3|	}
49211|     17|}
zend_execute.c:ZEND_FE_RESET_RW_SPEC_CONST_HANDLER:
 5634|     55|{
 5635|     55|	USE_OPLINE
 5636|     55|	zval *array_ptr, *array_ref;
 5637|       |
 5638|     55|	SAVE_OPLINE();
  ------------------
  |  |  428|     55|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     55|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5639|       |
 5640|     55|	if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  864|     55|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  866|    110|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5640:6): [Folded, False: 0]
  |  Branch (5640:28): [Folded, False: 0]
  ------------------
 5641|      0|		array_ref = array_ptr = zend_get_bad_ptr();
 5642|      0|		if (Z_ISREF_P(array_ref)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5643|      0|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5644|      0|		}
 5645|     55|	} else {
 5646|     55|		array_ref = array_ptr = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     55|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5647|     55|	}
 5648|       |
 5649|     55|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     55|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 55, False: 0]
  |  |  ------------------
  ------------------
 5650|     55|		if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  864|     55|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  866|    110|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5650:7): [Folded, False: 0]
  |  Branch (5650:29): [Folded, False: 0]
  ------------------
 5651|      0|			if (array_ptr == array_ref) {
  ------------------
  |  Branch (5651:8): [True: 0, False: 0]
  ------------------
 5652|      0|				ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5653|      0|				array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5654|      0|			}
 5655|      0|			Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5656|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5657|     55|		} else {
 5658|     55|			array_ref = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     55|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     55|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5659|     55|			ZVAL_NEW_REF(array_ref, array_ptr);
  ------------------
  |  | 1205|     55|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|     55|		zend_reference *_ref =									\
  |  | 1207|     55|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|     55|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     55|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     55|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     55|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     55|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|     55|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|     55|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|     55|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     55|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     55|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     55|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     55|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     55|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|     55|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|     55|	do {												\
  |  |  |  | 1417|     55|		zval *_z1 = (z);								\
  |  |  |  | 1418|     55|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     55|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     55|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     55|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     55|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     55|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     55|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     55|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     55|	do {												\
  |  |  |  |  |  | 1408|     55|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     55|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     55|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     55|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     55|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     55|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     55|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 55]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     55|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 55]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|     55|		_ref->sources.ptr = NULL;									\
  |  | 1212|     55|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     55|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     55|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|     55|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|     55|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     55|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|     55|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     55|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     55|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     55|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     55|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     55|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|     55|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 55]
  |  |  ------------------
  ------------------
 5660|     55|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|     55|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     55|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     55|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5661|     55|		}
 5662|     55|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     55|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     55|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5662:7): [True: 55, Folded]
  ------------------
 5663|     55|			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
  ------------------
  |  | 1125|     55|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     55|		zend_array *__arr = (a);				\
  |  | 1127|     55|		zval *__z = (z);						\
  |  | 1128|     55|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     55|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     55|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     55|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     55|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     55|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     55|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     55|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     55|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     55|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     55|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     55|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     55|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 55]
  |  |  ------------------
  ------------------
 5664|     55|		} else {
 5665|      0|			SEPARATE_ARRAY(array_ptr);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5666|      0|		}
 5667|     55|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  696|     55|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|     55|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
              		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  997|     55|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     55|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     55|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5668|       |
 5669|       |
 5670|     55|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     55|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     55|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     55|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 55]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     55|	} else { \
  |  |  |  | 5761|     55|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     55|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     55|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     55|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     55|	} \
  |  |  |  | 5764|     55|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     55|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5670:3): [True: 0, False: 55]
  |  Branch (5670:3): [True: 55, False: 0]
  ------------------
 5671|     55|	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5671:13): [Folded, False: 0]
  ------------------
 5672|      0|		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5672:7): [True: 0, False: 0]
  ------------------
 5673|      0|			zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5674|      0|			HashTable *properties;
 5675|      0|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5676|      0|				zobj = zend_lazy_object_init(zobj);
 5677|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5678|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5679|       |
 5680|       |
 5681|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5681:6): [True: 0, False: 0]
  |  Branch (5681:6): [True: 0, False: 0]
  ------------------
 5682|      0|				}
 5683|      0|			}
 5684|      0|			if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5684:8): [Folded, False: 0]
  |  Branch (5684:30): [Folded, False: 0]
  ------------------
 5685|      0|				if (array_ptr == array_ref) {
  ------------------
  |  Branch (5685:9): [True: 0, False: 0]
  ------------------
 5686|      0|					ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5687|      0|					array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5688|      0|				}
 5689|      0|				Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5690|      0|				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5691|      0|			} else {
 5692|      0|				array_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5693|      0|				ZVAL_COPY_VALUE(array_ptr, array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5694|      0|			}
 5695|      0|			if (Z_OBJ_P(array_ptr)->properties
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (5695:8): [True: 0, False: 0]
  ------------------
 5696|      0|			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5697|      0|				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5698|      0|					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
 5699|      0|				}
 5700|      0|				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5701|      0|			}
 5702|       |
 5703|      0|			properties = Z_OBJPROP_P(array_ptr);
  ------------------
  |  | 1015|      0|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      0|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5704|      0|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (5704:8): [True: 0, False: 0]
  ------------------
 5705|      0|				Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t) -1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5706|       |
 5707|       |
 5708|      0|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5708:5): [True: 0, False: 0]
  |  Branch (5708:5): [True: 0, False: 0]
  ------------------
 5709|      0|			}
 5710|       |
 5711|      0|			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5712|       |
 5713|       |
 5714|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5714:4): [True: 0, False: 0]
  |  Branch (5714:4): [True: 0, False: 0]
  ------------------
 5715|      0|		} else {
 5716|      0|			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5717|       |
 5718|       |
 5719|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5720|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5720:5): [True: 0, False: 0]
  |  Branch (5720:5): [True: 0, False: 0]
  ------------------
 5721|      0|			} else if (is_empty) {
  ------------------
  |  Branch (5721:15): [True: 0, False: 0]
  ------------------
 5722|      0|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5722:5): [True: 0, False: 0]
  |  Branch (5722:5): [True: 0, False: 0]
  ------------------
 5723|      0|			} else {
 5724|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5724:5): [True: 0, False: 0]
  |  Branch (5724:5): [True: 0, False: 0]
  ------------------
 5725|      0|			}
 5726|      0|		}
 5727|      0|	} else {
 5728|      0|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 5729|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5730|      0|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
 5731|       |
 5732|       |
 5733|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5733:3): [True: 0, False: 0]
  |  Branch (5733:3): [True: 0, False: 0]
  ------------------
 5734|      0|	}
 5735|     55|}
zend_execute.c:ZEND_FE_RESET_RW_SPEC_TMP_HANDLER:
17667|      2|{
17668|      2|	USE_OPLINE
17669|      2|	zval *array_ptr, *array_ref;
17670|       |
17671|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17672|       |
17673|      2|	if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17673:6): [Folded, False: 0]
  |  Branch (17673:30): [Folded, False: 0]
  ------------------
17674|      0|		array_ref = array_ptr = zend_get_bad_ptr();
17675|      0|		if (Z_ISREF_P(array_ref)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17676|      0|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17677|      0|		}
17678|      2|	} else {
17679|      2|		array_ref = array_ptr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17680|      2|	}
17681|       |
17682|      2|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
17683|      1|		if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17683:7): [Folded, False: 0]
  |  Branch (17683:31): [Folded, False: 0]
  ------------------
17684|      0|			if (array_ptr == array_ref) {
  ------------------
  |  Branch (17684:8): [True: 0, False: 0]
  ------------------
17685|      0|				ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17686|      0|				array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17687|      0|			}
17688|      0|			Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17689|      0|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17690|      1|		} else {
17691|      1|			array_ref = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17692|      1|			ZVAL_NEW_REF(array_ref, array_ptr);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17693|      1|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17694|      1|		}
17695|      1|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17695:7): [Folded, False: 1]
  ------------------
17696|      0|			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17697|      1|		} else {
17698|      1|			SEPARATE_ARRAY(array_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17699|      1|		}
17700|      1|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
              		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17701|       |
17702|       |
17703|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17703:3): [True: 0, False: 1]
  |  Branch (17703:3): [True: 1, False: 0]
  ------------------
17704|      1|	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (17704:13): [True: 1, Folded]
  ------------------
17705|      0|		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17705:7): [True: 0, False: 0]
  ------------------
17706|      0|			zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
17707|      0|			HashTable *properties;
17708|      0|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17709|      0|				zobj = zend_lazy_object_init(zobj);
17710|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17711|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17712|       |
17713|       |
17714|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17714:6): [True: 0, False: 0]
  |  Branch (17714:6): [True: 0, False: 0]
  ------------------
17715|      0|				}
17716|      0|			}
17717|      0|			if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17717:8): [Folded, False: 0]
  |  Branch (17717:32): [Folded, False: 0]
  ------------------
17718|      0|				if (array_ptr == array_ref) {
  ------------------
  |  Branch (17718:9): [True: 0, False: 0]
  ------------------
17719|      0|					ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17720|      0|					array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17721|      0|				}
17722|      0|				Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17723|      0|				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17724|      0|			} else {
17725|      0|				array_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17726|      0|				ZVAL_COPY_VALUE(array_ptr, array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17727|      0|			}
17728|      0|			if (Z_OBJ_P(array_ptr)->properties
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (17728:8): [True: 0, False: 0]
  ------------------
17729|      0|			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17730|      0|				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17731|      0|					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
17732|      0|				}
17733|      0|				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
17734|      0|			}
17735|       |
17736|      0|			properties = Z_OBJPROP_P(array_ptr);
  ------------------
  |  | 1015|      0|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      0|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17737|      0|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (17737:8): [True: 0, False: 0]
  ------------------
17738|      0|				Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t) -1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
17739|       |
17740|       |
17741|      0|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17741:5): [True: 0, False: 0]
  |  Branch (17741:5): [True: 0, False: 0]
  ------------------
17742|      0|			}
17743|       |
17744|      0|			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
17745|       |
17746|       |
17747|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17747:4): [True: 0, False: 0]
  |  Branch (17747:4): [True: 0, False: 0]
  ------------------
17748|      0|		} else {
17749|      0|			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17750|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17751|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17752|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17752:5): [True: 0, False: 0]
  |  Branch (17752:5): [True: 0, False: 0]
  ------------------
17753|      0|			} else if (is_empty) {
  ------------------
  |  Branch (17753:15): [True: 0, False: 0]
  ------------------
17754|      0|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17754:5): [True: 0, False: 0]
  |  Branch (17754:5): [True: 0, False: 0]
  ------------------
17755|      0|			} else {
17756|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17756:5): [True: 0, False: 0]
  |  Branch (17756:5): [True: 0, False: 0]
  ------------------
17757|      0|			}
17758|      0|		}
17759|      1|	} else {
17760|      1|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
17761|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17762|      1|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
17763|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17764|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      1|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      1|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      1|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      1|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      1|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17764:3): [True: 0, False: 0]
  |  Branch (17764:3): [True: 0, False: 0]
  ------------------
17765|      1|	}
17766|      2|}
zend_execute.c:ZEND_FE_RESET_RW_SPEC_VAR_HANDLER:
23549|      1|{
23550|      1|	USE_OPLINE
23551|      1|	zval *array_ptr, *array_ref;
23552|       |
23553|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23554|       |
23555|      1|	if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (23555:6): [True: 1, Folded]
  |  Branch (23555:26): [Folded, False: 0]
  ------------------
23556|      1|		array_ref = array_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23557|      1|		if (Z_ISREF_P(array_ref)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23558|      1|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23559|      1|		}
23560|      1|	} else {
23561|      0|		array_ref = array_ptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23562|      0|	}
23563|       |
23564|      1|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23565|      1|		if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (23565:7): [True: 1, Folded]
  |  Branch (23565:27): [Folded, False: 0]
  ------------------
23566|      1|			if (array_ptr == array_ref) {
  ------------------
  |  Branch (23566:8): [True: 0, False: 1]
  ------------------
23567|      0|				ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23568|      0|				array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23569|      0|			}
23570|      1|			Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23571|      1|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
23572|      1|		} else {
23573|      0|			array_ref = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23574|      0|			ZVAL_NEW_REF(array_ref, array_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23575|      0|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23576|      0|		}
23577|      1|		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (23577:7): [Folded, False: 1]
  ------------------
23578|      0|			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23579|      1|		} else {
23580|      1|			SEPARATE_ARRAY(array_ptr);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
23581|      1|		}
23582|      1|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
              		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23583|       |
23584|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23585|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23585:3): [True: 0, False: 1]
  |  Branch (23585:3): [True: 1, False: 0]
  ------------------
23586|      1|	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23586:13): [True: 0, Folded]
  ------------------
23587|      0|		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23587:7): [True: 0, False: 0]
  ------------------
23588|      0|			zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
23589|      0|			HashTable *properties;
23590|      0|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23591|      0|				zobj = zend_lazy_object_init(zobj);
23592|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23593|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23594|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23595|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23595:6): [True: 0, False: 0]
  |  Branch (23595:6): [True: 0, False: 0]
  ------------------
23596|      0|				}
23597|      0|			}
23598|      0|			if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (23598:8): [True: 0, Folded]
  |  Branch (23598:28): [Folded, False: 0]
  ------------------
23599|      0|				if (array_ptr == array_ref) {
  ------------------
  |  Branch (23599:9): [True: 0, False: 0]
  ------------------
23600|      0|					ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23601|      0|					array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23602|      0|				}
23603|      0|				Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23604|      0|				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23605|      0|			} else {
23606|      0|				array_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23607|      0|				ZVAL_COPY_VALUE(array_ptr, array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23608|      0|			}
23609|      0|			if (Z_OBJ_P(array_ptr)->properties
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (23609:8): [True: 0, False: 0]
  ------------------
23610|      0|			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23611|      0|				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23612|      0|					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
23613|      0|				}
23614|      0|				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
23615|      0|			}
23616|       |
23617|      0|			properties = Z_OBJPROP_P(array_ptr);
  ------------------
  |  | 1015|      0|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      0|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23618|      0|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (23618:8): [True: 0, False: 0]
  ------------------
23619|      0|				Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t) -1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23620|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23621|      0|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23621:5): [True: 0, False: 0]
  |  Branch (23621:5): [True: 0, False: 0]
  ------------------
23622|      0|			}
23623|       |
23624|      0|			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23625|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23626|      0|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23626:4): [True: 0, False: 0]
  |  Branch (23626:4): [True: 0, False: 0]
  ------------------
23627|      0|		} else {
23628|      0|			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23629|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23630|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23631|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23631:5): [True: 0, False: 0]
  |  Branch (23631:5): [True: 0, False: 0]
  ------------------
23632|      0|			} else if (is_empty) {
  ------------------
  |  Branch (23632:15): [True: 0, False: 0]
  ------------------
23633|      0|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (23633:5): [True: 0, False: 0]
  |  Branch (23633:5): [True: 0, False: 0]
  ------------------
23634|      0|			} else {
23635|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23635:5): [True: 0, False: 0]
  |  Branch (23635:5): [True: 0, False: 0]
  ------------------
23636|      0|			}
23637|      0|		}
23638|      0|	} else {
23639|      0|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
23640|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23641|      0|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23642|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23643|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23643:3): [True: 0, False: 0]
  |  Branch (23643:3): [True: 0, False: 0]
  ------------------
23644|      0|	}
23645|      1|}
zend_execute.c:ZEND_FE_RESET_RW_SPEC_CV_HANDLER:
40345|     63|{
40346|     63|	USE_OPLINE
40347|     63|	zval *array_ptr, *array_ref;
40348|       |
40349|     63|	SAVE_OPLINE();
  ------------------
  |  |  428|     63|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     63|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40350|       |
40351|     63|	if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|     63|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  866|    126|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40351:6): [Folded, False: 0]
  |  Branch (40351:25): [True: 0, Folded]
  ------------------
40352|     63|		array_ref = array_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     63|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     63|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40353|     63|		if (Z_ISREF_P(array_ref)) {
  ------------------
  |  |  964|     63|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     63|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     63|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     63|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 8, False: 55]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40354|      8|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      8|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      8|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      8|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40355|      8|		}
40356|     63|	} else {
40357|      0|		array_ref = array_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40358|      0|	}
40359|       |
40360|     63|	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
  ------------------
  |  |  456|     63|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 60, False: 3]
  |  |  ------------------
  ------------------
40361|     60|		if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|     60|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  866|    120|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40361:7): [Folded, False: 0]
  |  Branch (40361:26): [True: 0, Folded]
  ------------------
40362|     60|			if (array_ptr == array_ref) {
  ------------------
  |  Branch (40362:8): [True: 52, False: 8]
  ------------------
40363|     52|				ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|     52|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|     52|		zend_reference *_ref =									\
  |  | 1207|     52|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|     52|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     52|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     52|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     52|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     52|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|     52|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|     52|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|     52|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     52|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     52|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     52|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     52|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     52|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|     52|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|     52|	do {												\
  |  |  |  | 1417|     52|		zval *_z1 = (z);								\
  |  |  |  | 1418|     52|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     52|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     52|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     52|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     52|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     52|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     52|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     52|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     52|	do {												\
  |  |  |  |  |  | 1408|     52|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     52|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     52|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     52|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     52|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     52|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     52|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 52]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     52|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 52]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|     52|		_ref->sources.ptr = NULL;									\
  |  | 1212|     52|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     52|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     52|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|     52|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|     52|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     52|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|     52|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     52|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     52|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     52|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     52|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     52|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|     52|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 52]
  |  |  ------------------
  ------------------
40364|     52|				array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|     52|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|     52|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     52|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40365|     52|			}
40366|     60|			Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|     60|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40367|     60|			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|     60|	do {												\
  |  | 1417|     60|		zval *_z1 = (z);								\
  |  | 1418|     60|		const zval *_z2 = (v);							\
  |  | 1419|     60|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     60|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     60|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     60|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     60|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     60|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     60|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     60|	do {												\
  |  |  |  | 1408|     60|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     60|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     60|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     60|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     60|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     60|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     60|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 60]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     60|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 60]
  |  |  ------------------
  ------------------
40368|     60|		} else {
40369|      0|			array_ref = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40370|      0|			ZVAL_NEW_REF(array_ref, array_ptr);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40371|      0|			array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40372|      0|		}
40373|     60|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|     60|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|     60|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (40373:7): [Folded, False: 60]
  ------------------
40374|      0|			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40375|     60|		} else {
40376|     60|			SEPARATE_ARRAY(array_ptr);
  ------------------
  |  | 1536|     60|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|     60|		zval *__zv = (zv);								\
  |  | 1538|     60|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|     60|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     60|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|     60|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|     60|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 43, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|     43|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|     43|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|     43|		zend_array *__arr = (a);				\
  |  |  |  | 1127|     43|		zval *__z = (z);						\
  |  |  |  | 1128|     43|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     43|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|     43|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|     43|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     43|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     43|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|     43|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|     43|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     43|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     43|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|     43|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     43|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|     43|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 43]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|     43|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|     43|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|     43|		}												\
  |  | 1543|     60|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 60]
  |  |  ------------------
  ------------------
40377|     60|		}
40378|     60|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  696|     60|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|     60|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
              		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
  ------------------
  |  |  997|     60|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     60|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     60|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40379|       |
40380|       |
40381|     60|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     60|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     60|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     60|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 60]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     60|	} else { \
  |  |  |  | 5761|     60|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     60|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     60|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     60|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     60|	} \
  |  |  |  | 5764|     60|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     60|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40381:3): [True: 0, False: 60]
  |  Branch (40381:3): [True: 60, False: 0]
  ------------------
40382|     60|	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40382:13): [True: 3, Folded]
  ------------------
40383|      3|		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
  ------------------
  |  | 1012|      3|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      3|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40383:7): [True: 1, False: 2]
  ------------------
40384|      1|			zend_object *zobj = Z_OBJ_P(array_ptr);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
40385|      1|			HashTable *properties;
40386|      1|			if (UNEXPECTED(zend_object_is_lazy(zobj))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
40387|      0|				zobj = zend_lazy_object_init(zobj);
40388|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40389|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40390|       |
40391|       |
40392|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40392:6): [True: 0, False: 0]
  |  Branch (40392:6): [True: 0, False: 0]
  ------------------
40393|      0|				}
40394|      0|			}
40395|      1|			if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_VAR || IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40395:8): [Folded, False: 0]
  |  Branch (40395:27): [True: 0, Folded]
  ------------------
40396|      1|				if (array_ptr == array_ref) {
  ------------------
  |  Branch (40396:9): [True: 1, False: 0]
  ------------------
40397|      1|					ZVAL_NEW_REF(array_ref, array_ref);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
40398|      1|					array_ptr = Z_REFVAL_P(array_ref);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40399|      1|				}
40400|      1|				Z_ADDREF_P(array_ref);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40401|      1|				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
40402|      1|			} else {
40403|      0|				array_ptr = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40404|      0|				ZVAL_COPY_VALUE(array_ptr, array_ref);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40405|      0|			}
40406|      1|			if (Z_OBJ_P(array_ptr)->properties
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (40406:8): [True: 0, False: 1]
  ------------------
40407|      0|			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40408|      0|				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40409|      0|					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
40410|      0|				}
40411|      0|				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
40412|      0|			}
40413|       |
40414|      1|			properties = Z_OBJPROP_P(array_ptr);
  ------------------
  |  | 1015|      1|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      1|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40415|      1|			if (zend_hash_num_elements(properties) == 0) {
  ------------------
  |  Branch (40415:8): [True: 0, False: 1]
  ------------------
40416|      0|				Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t) -1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
40417|       |
40418|       |
40419|      0|				ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40419:5): [True: 0, False: 0]
  |  Branch (40419:5): [True: 0, False: 0]
  ------------------
40420|      0|			}
40421|       |
40422|      1|			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
40423|       |
40424|       |
40425|      1|			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40425:4): [True: 0, False: 0]
  |  Branch (40425:4): [True: 0, False: 0]
  ------------------
40426|      2|		} else {
40427|      2|			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40428|       |
40429|       |
40430|      2|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
40431|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40431:5): [True: 0, False: 1]
  |  Branch (40431:5): [True: 1, False: 0]
  ------------------
40432|      1|			} else if (is_empty) {
  ------------------
  |  Branch (40432:15): [True: 0, False: 1]
  ------------------
40433|      0|				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40433:5): [True: 0, False: 0]
  |  Branch (40433:5): [True: 0, False: 0]
  ------------------
40434|      1|			} else {
40435|      1|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40435:5): [True: 0, False: 1]
  |  Branch (40435:5): [True: 1, False: 0]
  ------------------
40436|      1|			}
40437|      2|		}
40438|      3|	} else {
40439|      0|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array_ptr));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
40440|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40441|      0|		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
  ------------------
  |  |  696|      0|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      0|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
40442|       |
40443|       |
40444|       |		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
  ------------------
  |  | 5796|      0|	ZEND_VM_JMP_EX(new_op, 1)
  |  |  ------------------
  |  |  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  |  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5788:7): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5790|      0|		} \
  |  |  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  |  | 5793|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40444:3): [True: 0, False: 0]
  |  Branch (40444:3): [True: 0, False: 0]
  ------------------
40445|      0|	}
40446|     63|}
zend_execute.c:ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER:
23648|  1.14k|{
23649|  1.14k|	USE_OPLINE
23650|  1.14k|	zval *array;
23651|  1.14k|	zval *value;
23652|  1.14k|	uint32_t value_type;
23653|  1.14k|	HashTable *fe_ht;
23654|  1.14k|	HashPosition pos;
23655|  1.14k|	Bucket *p;
23656|       |
23657|  1.14k|	array = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|  1.14k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.14k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23658|  1.14k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.14k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.14k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23659|       |
23660|  1.14k|	ZVAL_DEREF(array);
  ------------------
  |  | 1474|  1.14k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  1.14k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  1.14k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1.14k, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|  1.14k|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|  1.14k|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|  1.14k|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|  1.14k|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|  1.14k|		}												\
  |  | 1478|  1.14k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1.14k]
  |  |  ------------------
  ------------------
23661|  1.14k|	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
  ------------------
  |  |  456|  1.14k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.13k, False: 5]
  |  |  ------------------
  ------------------
23662|  1.13k|		pos = zend_hash_iterator_pos_ex(Z_FE_ITER_P(EX_VAR(opline->op1.var)), array);
  ------------------
  |  |  696|  1.13k|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|  1.13k|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23663|  1.13k|		fe_ht = Z_ARRVAL_P(array);
  ------------------
  |  |  997|  1.13k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  1.13k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  1.13k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23664|  1.13k|		if (HT_IS_PACKED(fe_ht)) {
  ------------------
  |  |   62|  1.13k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|  1.13k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|  1.13k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1.01k, False: 126]
  |  |  ------------------
  ------------------
23665|  1.01k|			value = fe_ht->arPacked + pos;
23666|  1.04k|			while (1) {
  ------------------
  |  Branch (23666:11): [True: 1.04k, Folded]
  ------------------
23667|  1.04k|				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
  ------------------
  |  |  457|  1.04k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 90, False: 955]
  |  |  ------------------
  ------------------
23668|       |					/* reached end of iteration */
23669|     90|					goto fe_fetch_w_exit;
23670|     90|				}
23671|    955|				value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|    955|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    955|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
23672|    955|				ZEND_ASSERT(value_type != IS_INDIRECT);
  ------------------
  |  |  112|    955|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (23672:5): [True: 0, False: 955]
  |  Branch (23672:5): [True: 955, False: 0]
  ------------------
23673|    955|				if (EXPECTED(value_type != IS_UNDEF)) {
  ------------------
  |  |  456|    955|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 921, False: 34]
  |  |  ------------------
  ------------------
23674|    921|					break;
23675|    921|				}
23676|     34|				pos++;
23677|     34|				value++;
23678|     34|			}
23679|    921|			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos + 1;
  ------------------
  |  |   45|    921|# define EG(v) (executor_globals.v)
  ------------------
              			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos + 1;
  ------------------
  |  |  696|    921|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|    921|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23680|    921|			if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|    921|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|    921|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 29, False: 892]
  |  |  ------------------
  ------------------
23681|     29|				ZVAL_LONG(EX_VAR(opline->result.var), pos);
  ------------------
  |  | 1076|     29|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     29|		zval *__z = (z);				\
  |  | 1078|     29|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     29|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     29|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     29|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     29|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     29|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     29|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     29|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 29]
  |  |  ------------------
  ------------------
23682|     29|			}
23683|    921|		} else {
23684|    126|			p = fe_ht->arData + pos;
23685|    127|			while (1) {
  ------------------
  |  Branch (23685:11): [True: 127, Folded]
  ------------------
23686|    127|				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
  ------------------
  |  |  457|    127|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 122]
  |  |  ------------------
  ------------------
23687|       |					/* reached end of iteration */
23688|      5|					goto fe_fetch_w_exit;
23689|      5|				}
23690|    122|				pos++;
23691|    122|				value = &p->val;
23692|    122|				value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|    122|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|    122|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
23693|    122|				ZEND_ASSERT(value_type != IS_INDIRECT);
  ------------------
  |  |  112|    122|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (23693:5): [True: 0, False: 122]
  |  Branch (23693:5): [True: 122, False: 0]
  ------------------
23694|    122|				if (EXPECTED(value_type != IS_UNDEF)) {
  ------------------
  |  |  456|    122|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 121, False: 1]
  |  |  ------------------
  ------------------
23695|    121|					break;
23696|    121|				}
23697|      1|				p++;
23698|      1|			}
23699|    121|			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
  ------------------
  |  |   45|    121|# define EG(v) (executor_globals.v)
  ------------------
              			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
  ------------------
  |  |  696|    121|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|    121|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23700|    121|			if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|    121|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|    121|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 121, False: 0]
  |  |  ------------------
  ------------------
23701|    121|				if (!p->key) {
  ------------------
  |  Branch (23701:9): [True: 119, False: 2]
  ------------------
23702|    119|					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
  ------------------
  |  | 1076|    119|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    119|		zval *__z = (z);				\
  |  | 1078|    119|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    119|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    119|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    119|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    119|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    119|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    119|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    119|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 119]
  |  |  ------------------
  ------------------
23703|    119|				} else {
23704|      2|					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 0]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
23705|      2|				}
23706|    121|			}
23707|    121|		}
23708|  1.13k|	} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  ------------------
  ------------------
23709|      4|		zend_object_iterator *iter;
23710|       |
23711|      4|		if ((iter = zend_iterator_unwrap(array)) == NULL) {
  ------------------
  |  Branch (23711:7): [True: 2, False: 2]
  ------------------
23712|       |			/* plain object */
23713|       |
23714|      2|			fe_ht = Z_OBJPROP_P(array);
  ------------------
  |  | 1015|      2|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      2|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      2|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23715|      2|			pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
  ------------------
  |  |  696|      2|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      2|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23716|      2|			p = fe_ht->arData + pos;
23717|      2|			while (1) {
  ------------------
  |  Branch (23717:11): [True: 2, Folded]
  ------------------
23718|      2|				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
23719|       |					/* reached end of iteration */
23720|      1|					goto fe_fetch_w_exit_exc;
23721|      1|				}
23722|      1|				pos++;
23723|      1|				value = &p->val;
23724|      1|				value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
23725|      1|				if (EXPECTED(value_type != IS_UNDEF)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23726|      1|					if (UNEXPECTED(value_type == IS_INDIRECT)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23727|      1|						value = Z_INDIRECT_P(value);
  ------------------
  |  | 1044|      1|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      1|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
23728|      1|						value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
23729|      1|						if (EXPECTED(value_type != IS_UNDEF)
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23730|      1|						 && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key, 0) == SUCCESS)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23731|      1|							if ((value_type & Z_TYPE_MASK) != IS_REFERENCE) {
  ------------------
  |  |  710|      1|#define Z_TYPE_MASK					0xff
  ------------------
              							if ((value_type & Z_TYPE_MASK) != IS_REFERENCE) {
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (23731:12): [True: 1, False: 0]
  ------------------
23732|      1|								zend_property_info *prop_info =
23733|      1|									zend_get_property_info_for_slot(Z_OBJ_P(array), value);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
23734|      1|								if (prop_info) {
  ------------------
  |  Branch (23734:13): [True: 1, False: 0]
  ------------------
23735|      1|									if (UNEXPECTED(prop_info->flags & ZEND_ACC_READONLY)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23736|      0|										zend_throw_error(NULL,
23737|      0|											"Cannot acquire reference to readonly property %s::$%s",
23738|      0|											ZSTR_VAL(prop_info->ce->name), ZSTR_VAL(p->key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              											ZSTR_VAL(prop_info->ce->name), ZSTR_VAL(p->key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
23739|      0|										UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23740|      0|										HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23740:11): [True: 0, False: 0]
  |  Branch (23740:11): [True: 0, False: 0]
  ------------------
23741|      0|									}
23742|      1|									if (ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      1|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      1|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23743|      1|										ZVAL_NEW_REF(value, value);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
23744|      1|										ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(value), prop_info);
  ------------------
  |  |  592|      1|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      1|	(ref)->sources
  |  |  ------------------
  ------------------
23745|      1|										value_type = IS_REFERENCE_EX;
  ------------------
  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
23746|      1|									}
23747|      1|								}
23748|      1|							}
23749|      1|							break;
23750|      1|						}
23751|      1|					} else if (EXPECTED(Z_OBJCE_P(array)->default_properties_count == 0)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23752|      0|							|| !p->key
  ------------------
  |  Branch (23752:11): [True: 0, False: 0]
  ------------------
23753|      0|							|| zend_check_property_access(Z_OBJ_P(array), p->key, 1) == SUCCESS) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (23753:11): [True: 0, False: 0]
  ------------------
23754|      0|						break;
23755|      0|					}
23756|      1|				}
23757|      0|				p++;
23758|      0|			}
23759|      1|			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
  ------------------
  |  |  696|      1|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|      1|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
23760|      1|			if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      1|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23761|      0|				if (UNEXPECTED(!p->key)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23762|      0|					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23763|      0|				} else if (ZSTR_VAL(p->key)[0]) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (23763:16): [True: 0, False: 0]
  ------------------
23764|      0|					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23765|      0|				} else {
23766|      0|					const char *class_name, *prop_name;
23767|      0|					size_t prop_name_len;
23768|      0|					zend_unmangle_property_name_ex(
23769|      0|						p->key, &class_name, &prop_name, &prop_name_len);
23770|      0|					ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
  ------------------
  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23771|      0|				}
23772|      0|			}
23773|      2|		} else {
23774|      2|			const zend_object_iterator_funcs *funcs = iter->funcs;
23775|      2|			if (++iter->index > 0) {
  ------------------
  |  Branch (23775:8): [True: 1, False: 1]
  ------------------
23776|       |				/* This could cause an endless loop if index becomes zero again.
23777|       |				 * In case that ever happens we need an additional flag. */
23778|      1|				funcs->move_forward(iter);
23779|      1|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23780|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23781|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23781:6): [True: 0, False: 0]
  |  Branch (23781:6): [True: 0, False: 0]
  ------------------
23782|      0|				}
23783|      1|				if (UNEXPECTED(funcs->valid(iter) == FAILURE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
23784|       |					/* reached end of iteration */
23785|      1|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23786|      0|						UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23787|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23787:7): [True: 0, False: 0]
  |  Branch (23787:7): [True: 0, False: 0]
  ------------------
23788|      0|					}
23789|      1|					goto fe_fetch_w_exit;
23790|      1|				}
23791|      1|			}
23792|      1|			value = funcs->get_current_data(iter);
23793|      1|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23794|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23795|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23795:5): [True: 0, False: 0]
  |  Branch (23795:5): [True: 0, False: 0]
  ------------------
23796|      0|			}
23797|      1|			if (!value) {
  ------------------
  |  Branch (23797:8): [True: 0, False: 1]
  ------------------
23798|       |				/* failure in get_current_data */
23799|      0|				goto fe_fetch_w_exit;
23800|      0|			}
23801|      1|			if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      1|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
23802|      0|				if (funcs->get_current_key) {
  ------------------
  |  Branch (23802:9): [True: 0, False: 0]
  ------------------
23803|      0|					funcs->get_current_key(iter, EX_VAR(opline->result.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23804|      0|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23805|      0|						UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23806|      0|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23806:7): [True: 0, False: 0]
  |  Branch (23806:7): [True: 0, False: 0]
  ------------------
23807|      0|					}
23808|      0|				} else {
23809|      0|					ZVAL_LONG(EX_VAR(opline->result.var), iter->index);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23810|      0|				}
23811|      0|			}
23812|      1|			value_type = Z_TYPE_INFO_P(value);
  ------------------
  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
23813|      1|		}
23814|      4|	} else {
23815|      1|		zend_error(E_WARNING, "foreach() argument must be of type array|object, %s given", zend_zval_value_name(array));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
23816|      2|fe_fetch_w_exit_exc:
23817|      2|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
23818|      0|			UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
23819|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23819:4): [True: 0, False: 0]
  |  Branch (23819:4): [True: 0, False: 0]
  ------------------
23820|      0|		}
23821|     98|fe_fetch_w_exit:
23822|     98|		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
  ------------------
  |  | 5785|     98|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|     98|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     98|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     98|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     98|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     98|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     98|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     98|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     98|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 98]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     98|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 98]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23823|     98|		ZEND_VM_CONTINUE();
  ------------------
  |  |  405|     98|# define ZEND_VM_CONTINUE()      return opline
  ------------------
23824|     98|	}
23825|       |
23826|  1.04k|	if (EXPECTED((value_type & Z_TYPE_MASK) != IS_REFERENCE)) {
  ------------------
  |  |  456|  1.04k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 628, False: 416]
  |  |  ------------------
  ------------------
23827|    628|		zend_refcounted *gc = Z_COUNTED_P(value);
  ------------------
  |  |  708|    628|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|    628|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
23828|    628|		zval *ref;
23829|    628|		ZVAL_NEW_EMPTY_REF(value);
  ------------------
  |  | 1195|    628|#define ZVAL_NEW_EMPTY_REF(z) do {								\
  |  | 1196|    628|		zend_reference *_ref =									\
  |  | 1197|    628|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|    628|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    628|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    628|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    628|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    628|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1198|    628|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|    628|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1199|    628|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|    628|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|    628|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    628|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|    628|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    628|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1200|    628|		_ref->sources.ptr = NULL;									\
  |  | 1201|    628|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|    628|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    628|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1202|    628|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|    628|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    628|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|    628|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    628|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    628|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    628|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    628|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    628|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1203|    628|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1203:11): [Folded, False: 628]
  |  |  ------------------
  ------------------
23830|    628|		ref = Z_REFVAL_P(value);
  ------------------
  |  | 1033|    628|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    628|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    628|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23831|    628|		ZVAL_COPY_VALUE_EX(ref, value, gc, value_type);
  ------------------
  |  | 1407|    628|	do {												\
  |  | 1408|    628|		Z_COUNTED_P(z) = gc;							\
  |  |  ------------------
  |  |  |  |  708|    628|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    628|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1409|    628|		Z_TYPE_INFO_P(z) = t;							\
  |  |  ------------------
  |  |  |  |  678|    628|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    628|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1410|    628|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1410:11): [Folded, False: 628]
  |  |  ------------------
  ------------------
23832|    628|	}
23833|  1.04k|	if (EXPECTED(opline->op2_type == IS_CV)) {
  ------------------
  |  |  456|  1.04k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.03k, False: 10]
  |  |  ------------------
  ------------------
23834|  1.03k|		zval *variable_ptr = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|  1.03k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.03k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23835|  1.03k|		if (EXPECTED(variable_ptr != value)) {
  ------------------
  |  |  456|  1.03k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.03k, False: 0]
  |  |  ------------------
  ------------------
23836|  1.03k|			zend_reference *ref;
23837|       |
23838|  1.03k|			ref = Z_REF_P(value);
  ------------------
  |  | 1030|  1.03k|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|  1.03k|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
23839|  1.03k|			GC_ADDREF(ref);
  ------------------
  |  |  718|  1.03k|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
23840|  1.03k|			i_zval_ptr_dtor(variable_ptr);
23841|  1.03k|			ZVAL_REF(variable_ptr, ref);
  ------------------
  |  | 1189|  1.03k|#define ZVAL_REF(z, r) do {										\
  |  | 1190|  1.03k|		zval *__z = (z);										\
  |  | 1191|  1.03k|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|  1.03k|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|  1.03k|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|  1.03k|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|  1.03k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.03k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|  1.03k|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  1.03k|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.03k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.03k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|  1.03k|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.03k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|  1.03k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 1.03k]
  |  |  ------------------
  ------------------
23842|  1.03k|		}
23843|  1.03k|	} else {
23844|     10|		Z_ADDREF_P(value);
  ------------------
  |  | 1277|     10|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23845|     10|		ZVAL_REF(EX_VAR(opline->op2.var), Z_REF_P(value));
  ------------------
  |  | 1189|     10|#define ZVAL_REF(z, r) do {										\
  |  | 1190|     10|		zval *__z = (z);										\
  |  | 1191|     10|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|     10|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|     10|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     10|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     10|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
23846|     10|	}
23847|  1.04k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.04k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.04k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.04k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.04k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.04k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.04k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.04k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.04k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.04k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.04k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23847:2): [True: 0, False: 0]
  |  Branch (23847:2): [True: 0, False: 0]
  ------------------
23848|  1.04k|}
zend_execute.c:ZEND_FE_FREE_SPEC_TMPVAR_HANDLER:
15617|    195|{
15618|    195|	zval *var;
15619|    195|	USE_OPLINE
15620|       |
15621|    195|	var = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    195|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    195|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15622|    195|	if (Z_TYPE_P(var) != IS_ARRAY) {
  ------------------
  |  |  669|    195|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    195|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(var) != IS_ARRAY) {
  ------------------
  |  |  613|    195|#define IS_ARRAY					7
  ------------------
  |  Branch (15622:6): [True: 147, False: 48]
  ------------------
15623|    147|		SAVE_OPLINE();
  ------------------
  |  |  428|    147|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    147|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15624|    147|		if (Z_FE_ITER_P(var) != (uint32_t)-1) {
  ------------------
  |  |  696|    147|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|    147|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
  |  Branch (15624:7): [True: 111, False: 36]
  ------------------
15625|    111|			zend_hash_iterator_del(Z_FE_ITER_P(var));
  ------------------
  |  |  696|    111|#define Z_FE_ITER_P(zval_p)			Z_FE_ITER(*(zval_p))
  |  |  ------------------
  |  |  |  |  695|    111|#define Z_FE_ITER(zval)				(zval).u2.fe_iter_idx
  |  |  ------------------
  ------------------
15626|    111|		}
15627|    147|		zval_ptr_dtor_nogc(var);
15628|    147|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    147|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    147|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    147|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 147, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    147|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    147|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    147|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    147|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    147|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    147|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15628:3): [True: 0, False: 0]
  |  Branch (15628:3): [True: 0, False: 0]
  ------------------
15629|    147|	}
15630|       |
15631|       |	/* This is freeing an array. Use an inlined version of zval_ptr_dtor_nogc. */
15632|       |	/* PHP only needs to save the opline and check for an exception if the last reference to the array was garbage collected (destructors of elements in the array could throw an exception) */
15633|     48|	if (Z_REFCOUNTED_P(var) && !Z_DELREF_P(var)) {
  ------------------
  |  |  942|     48|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     96|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     48|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 48, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (Z_REFCOUNTED_P(var) && !Z_DELREF_P(var)) {
  ------------------
  |  | 1278|     48|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  ------------------
  |  Branch (15633:29): [True: 11, False: 37]
  ------------------
15634|     11|		SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15635|     11|		rc_dtor_func(Z_COUNTED_P(var));
  ------------------
  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
15636|     11|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     11|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     11|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     11|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15636:3): [True: 0, False: 0]
  |  Branch (15636:3): [True: 0, False: 0]
  ------------------
15637|     11|	}
15638|     37|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     48|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     37|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     37|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 37]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     37|	} else { \
  |  |  |  | 5761|     37|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     37|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     37|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     37|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     37|	} \
  |  |  |  | 5764|     37|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     37|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15638:2): [True: 0, False: 37]
  |  Branch (15638:2): [True: 37, False: 0]
  ------------------
15639|     37|}
zend_execute.c:ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER:
 4092|      4|{
 4093|      4|	USE_OPLINE
 4094|      4|	zval *function_name;
 4095|      4|	zend_execute_data *call;
 4096|       |
 4097|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4098|      4|	function_name = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4099|       |
 4100|      4|try_function_name:
 4101|      4|	if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4101:6): [Folded, False: 4]
  ------------------
 4102|      0|		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4103|      4|	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  864|      8|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4103:13): [Folded, False: 4]
  ------------------
 4104|      0|		call = zend_init_dynamic_call_object(Z_OBJ_P(function_name), opline->extended_value);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4105|      4|	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 4106|      4|		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4107|      4|	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4107:13): [Folded, False: 0]
  ------------------
 4108|      0|		function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4109|      0|		goto try_function_name;
 4110|      0|	} else {
 4111|      0|		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4111:7): [Folded, False: 0]
  ------------------
 4112|      0|			function_name = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4113|      0|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4114|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4114:5): [True: 0, False: 0]
  |  Branch (4114:5): [True: 0, False: 0]
  ------------------
 4115|      0|			}
 4116|      0|		}
 4117|      0|		zend_throw_error(NULL, "Value of type %s is not callable",
 4118|      0|			zend_zval_type_name(function_name));
 4119|      0|		call = NULL;
 4120|      0|	}
 4121|       |
 4122|      4|	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|      4|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4122:6): [Folded, False: 4]
  ------------------
 4123|       |
 4124|       |
 4125|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4126|      0|			if (call) {
  ------------------
  |  Branch (4126:8): [True: 0, False: 0]
  ------------------
 4127|      0|				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (4127:10): [True: 0, False: 0]
  ------------------
 4128|      0|					zend_string_release_ex(call->func->common.function_name, 0);
 4129|      0|					zend_free_trampoline(call->func);
  ------------------
  |  |  344|      0|#define zend_free_trampoline(func) do { \
  |  |  345|      0|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      0|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4130|      0|				}
 4131|      0|				zend_vm_stack_free_call_frame(call);
 4132|      0|			}
 4133|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4133:4): [True: 0, False: 0]
  |  Branch (4133:4): [True: 0, False: 0]
  ------------------
 4134|      0|		}
 4135|      4|	} else if (!call) {
  ------------------
  |  Branch (4135:13): [True: 2, False: 2]
  ------------------
 4136|      2|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4136:3): [True: 0, False: 2]
  |  Branch (4136:3): [True: 2, False: 0]
  ------------------
 4137|      2|	}
 4138|       |
 4139|      2|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
 4140|      2|	EX(call) = call;
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
 4141|       |
 4142|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4142:2): [True: 0, False: 0]
  |  Branch (4142:2): [True: 0, False: 0]
  ------------------
 4143|      2|}
zend_execute.c:ZEND_INIT_DYNAMIC_CALL_SPEC_TMP_HANDLER:
 4276|     46|{
 4277|     46|	USE_OPLINE
 4278|     46|	zval *function_name;
 4279|     46|	zend_execute_data *call;
 4280|       |
 4281|     46|	SAVE_OPLINE();
  ------------------
  |  |  428|     46|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     46|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4282|     46|	function_name = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     46|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     46|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4283|       |
 4284|     46|try_function_name:
 4285|     46|	if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  865|     46|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  864|     92|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|     46|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 37]
  |  |  ------------------
  ------------------
  |  Branch (4285:6): [True: 46, Folded]
  ------------------
 4286|      9|		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
  ------------------
  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4287|     37|	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  865|     37|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  864|     74|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  456|     37|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 34, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (4287:13): [True: 37, Folded]
  ------------------
 4288|     34|		call = zend_init_dynamic_call_object(Z_OBJ_P(function_name), opline->extended_value);
  ------------------
  |  | 1000|     34|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     34|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4289|     34|	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 4290|      0|		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4291|      3|	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4291:13): [Folded, False: 3]
  ------------------
 4292|      0|		function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4293|      0|		goto try_function_name;
 4294|      3|	} else {
 4295|      3|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4295:7): [Folded, False: 3]
  ------------------
 4296|      0|			function_name = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      0|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4297|      0|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4298|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4298:5): [True: 0, False: 0]
  |  Branch (4298:5): [True: 0, False: 0]
  ------------------
 4299|      0|			}
 4300|      0|		}
 4301|      3|		zend_throw_error(NULL, "Value of type %s is not callable",
 4302|      3|			zend_zval_type_name(function_name));
 4303|      3|		call = NULL;
 4304|      3|	}
 4305|       |
 4306|     46|	if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     46|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|     46|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|     46|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4306:6): [True: 46, Folded]
  ------------------
 4307|     46|		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     46|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     46|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4308|     46|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 40]
  |  |  ------------------
  ------------------
 4309|      6|			if (call) {
  ------------------
  |  Branch (4309:8): [True: 0, False: 6]
  ------------------
 4310|      0|				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (4310:10): [True: 0, False: 0]
  ------------------
 4311|      0|					zend_string_release_ex(call->func->common.function_name, 0);
 4312|      0|					zend_free_trampoline(call->func);
  ------------------
  |  |  344|      0|#define zend_free_trampoline(func) do { \
  |  |  345|      0|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      0|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4313|      0|				}
 4314|      0|				zend_vm_stack_free_call_frame(call);
 4315|      0|			}
 4316|      6|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      6|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      6|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4316:4): [True: 0, False: 6]
  |  Branch (4316:4): [True: 6, False: 0]
  ------------------
 4317|      6|		}
 4318|     46|	} else if (!call) {
  ------------------
  |  Branch (4318:13): [True: 0, False: 0]
  ------------------
 4319|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4319:3): [True: 0, False: 0]
  |  Branch (4319:3): [True: 0, False: 0]
  ------------------
 4320|      0|	}
 4321|       |
 4322|     40|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|     40|#define EX(element) 			((execute_data)->element)
  ------------------
 4323|     40|	EX(call) = call;
  ------------------
  |  |  730|     40|#define EX(element) 			((execute_data)->element)
  ------------------
 4324|       |
 4325|     40|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     40|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     40|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     40|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 40, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     40|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     40|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     40|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     40|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     40|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     40|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4325:2): [True: 0, False: 0]
  |  Branch (4325:2): [True: 0, False: 0]
  ------------------
 4326|     40|}
zend_execute.c:ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER:
 4472|    239|{
 4473|    239|	USE_OPLINE
 4474|    239|	zval *function_name;
 4475|    239|	zend_execute_data *call;
 4476|       |
 4477|    239|	SAVE_OPLINE();
  ------------------
  |  |  428|    239|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    239|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4478|    239|	function_name = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|    239|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    239|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4479|       |
 4480|    240|try_function_name:
 4481|    240|	if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  867|    240|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  864|    480|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
  ------------------
  |  |  456|    240|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 9, False: 231]
  |  |  ------------------
  ------------------
  |  Branch (4481:6): [True: 240, Folded]
  ------------------
 4482|      9|		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
  ------------------
  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4483|    231|	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  867|    231|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  864|    462|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
  ------------------
  |  |  456|    231|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 212, False: 19]
  |  |  ------------------
  ------------------
  |  Branch (4483:13): [True: 231, Folded]
  ------------------
 4484|    212|		call = zend_init_dynamic_call_object(Z_OBJ_P(function_name), opline->extended_value);
  ------------------
  |  | 1000|    212|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    212|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4485|    212|	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
  ------------------
  |  |  456|     19|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 12]
  |  |  ------------------
  ------------------
 4486|      7|		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
  ------------------
  |  |  997|      7|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      7|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4487|     12|	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  866|     12|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 11]
  |  |  ------------------
  ------------------
  |  Branch (4487:13): [True: 12, Folded]
  ------------------
 4488|      1|		function_name = Z_REFVAL_P(function_name);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4489|      1|		goto try_function_name;
 4490|     11|	} else {
 4491|     11|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|     11|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4491:7): [True: 11, Folded]
  ------------------
 4492|     11|			function_name = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|     11|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4493|     11|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
 4494|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4494:5): [True: 0, False: 0]
  |  Branch (4494:5): [True: 0, False: 0]
  ------------------
 4495|      0|			}
 4496|     11|		}
 4497|     11|		zend_throw_error(NULL, "Value of type %s is not callable",
 4498|     11|			zend_zval_type_name(function_name));
 4499|     11|		call = NULL;
 4500|     11|	}
 4501|       |
 4502|    239|	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  867|    239|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  866|    239|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
  ------------------
  |  |  865|    239|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (4502:6): [Folded, False: 239]
  ------------------
 4503|       |
 4504|       |
 4505|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4506|      0|			if (call) {
  ------------------
  |  Branch (4506:8): [True: 0, False: 0]
  ------------------
 4507|      0|				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (4507:10): [True: 0, False: 0]
  ------------------
 4508|      0|					zend_string_release_ex(call->func->common.function_name, 0);
 4509|      0|					zend_free_trampoline(call->func);
  ------------------
  |  |  344|      0|#define zend_free_trampoline(func) do { \
  |  |  345|      0|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      0|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4510|      0|				}
 4511|      0|				zend_vm_stack_free_call_frame(call);
 4512|      0|			}
 4513|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4513:4): [True: 0, False: 0]
  |  Branch (4513:4): [True: 0, False: 0]
  ------------------
 4514|      0|		}
 4515|    239|	} else if (!call) {
  ------------------
  |  Branch (4515:13): [True: 18, False: 221]
  ------------------
 4516|     18|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|     18|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     18|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     18|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4516:3): [True: 0, False: 18]
  |  Branch (4516:3): [True: 18, False: 0]
  ------------------
 4517|     18|	}
 4518|       |
 4519|    221|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|    221|#define EX(element) 			((execute_data)->element)
  ------------------
 4520|    221|	EX(call) = call;
  ------------------
  |  |  730|    221|#define EX(element) 			((execute_data)->element)
  ------------------
 4521|       |
 4522|    221|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    221|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    221|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    221|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 221, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    221|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    221|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    221|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    221|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    221|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    221|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4522:2): [True: 0, False: 0]
  |  Branch (4522:2): [True: 0, False: 0]
  ------------------
 4523|    221|}
zend_execute.c:ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER:
41891|      2|{
41892|      2|	USE_OPLINE
41893|      2|	zval *object;
41894|      2|	zval *property;
41895|      2|	zval *zptr;
41896|      2|	void *_cache_slot[3] = {0};
41897|      2|	void **cache_slot;
41898|      2|	zend_property_info *prop_info;
41899|      2|	zend_object *zobj;
41900|      2|	zend_string *name, *tmp_name;
41901|       |
41902|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41903|      2|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41904|      2|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41905|       |
41906|      2|	do {
41907|      2|		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (41907:7): [True: 2, Folded]
  ------------------
41908|      0|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (41908:29): [True: 0, False: 0]
  ------------------
41909|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41910|      0|				goto pre_incdec_object;
41911|      0|			}
41912|      0|			if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41912:8): [True: 0, Folded]
  ------------------
41913|      0|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41914|      0|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41915|      0|			}
41916|      0|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41917|      0|			break;
41918|      0|		}
41919|       |
41920|      2|pre_incdec_object:
41921|       |		/* here we are sure we are dealing with an object */
41922|      2|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
41923|      2|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41923:7): [True: 2, Folded]
  ------------------
41924|      2|			name = Z_STR_P(property);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41925|      2|		} else {
41926|      0|			name = zval_try_get_tmp_string(property, &tmp_name);
41927|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41928|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41929|      0|				break;
41930|      0|			}
41931|      0|		}
41932|      2|		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : _cache_slot;
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : _cache_slot;
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : _cache_slot;
  ------------------
  |  |  524|      2|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (41932:16): [True: 2, Folded]
  ------------------
41933|      2|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
41934|      2|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
41935|      0|				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41936|      0|					ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41937|      0|				}
41938|      2|			} else {
41939|      2|				prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      2|	(slot)[0]
  ------------------
41940|      2|				zend_pre_incdec_property_zval(zptr,
41941|      2|					prop_info && ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					prop_info && ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					prop_info && ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (41941:6): [True: 0, False: 2]
  ------------------
41942|      2|			}
41943|      2|		} else {
41944|      0|			zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41945|      0|		}
41946|      2|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41946:7): [Folded, False: 2]
  ------------------
41947|      0|			zend_tmp_string_release(tmp_name);
41948|      0|		}
41949|      2|	} while (0);
  ------------------
  |  Branch (41949:11): [Folded, False: 2]
  ------------------
41950|       |
41951|       |
41952|       |
41953|       |
41954|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (41954:2): [True: 0, False: 0]
  |  Branch (41954:2): [True: 0, False: 0]
  ------------------
41955|      2|}
zend_execute.c:ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER:
41958|      3|{
41959|      3|	USE_OPLINE
41960|      3|	zval *object;
41961|      3|	zval *property;
41962|      3|	zval *zptr;
41963|      3|	void *_cache_slot[3] = {0};
41964|      3|	void **cache_slot;
41965|      3|	zend_property_info *prop_info;
41966|      3|	zend_object *zobj;
41967|      3|	zend_string *name, *tmp_name;
41968|       |
41969|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
41970|      3|	object = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
41971|      3|	property = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
41972|       |
41973|      3|	do {
41974|      3|		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (41974:7): [True: 3, Folded]
  ------------------
41975|      1|			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (41975:29): [True: 0, False: 0]
  ------------------
41976|      0|				object = Z_REFVAL_P(object);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
41977|      0|				goto post_incdec_object;
41978|      0|			}
41979|      1|			if (IS_CV == IS_CV
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CV
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (41979:8): [True: 1, Folded]
  ------------------
41980|      1|			 && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
41981|      1|				ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41982|      1|			}
41983|      1|			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
41984|      1|			break;
41985|      1|		}
41986|       |
41987|      2|post_incdec_object:
41988|       |		/* here we are sure we are dealing with an object */
41989|      2|		zobj = Z_OBJ_P(object);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
41990|      2|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (41990:7): [True: 2, Folded]
  ------------------
41991|      2|			name = Z_STR_P(property);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
41992|      2|		} else {
41993|      0|			name = zval_try_get_tmp_string(property, &tmp_name);
41994|      0|			if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
41995|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
41996|      0|				break;
41997|      0|			}
41998|      0|		}
41999|      2|		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : _cache_slot;
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : _cache_slot;
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : _cache_slot;
  ------------------
  |  |  524|      2|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (41999:16): [True: 2, Folded]
  ------------------
42000|      2|		if (EXPECTED((zptr = zobj->handlers->get_property_ptr_ptr(zobj, name, BP_VAR_RW, cache_slot)) != NULL)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
42001|      0|			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
42002|      0|				ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
42003|      0|			} else {
42004|      0|				prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
  ------------------
  |  |  545|      0|	(slot)[0]
  ------------------
42005|      0|				zend_post_incdec_property_zval(zptr,
42006|      0|					prop_info && ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					prop_info && ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              					prop_info && ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (42006:6): [True: 0, False: 0]
  ------------------
42007|      0|			}
42008|      2|		} else {
42009|      2|			zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              			zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
42010|      2|		}
42011|      2|		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (42011:7): [Folded, False: 2]
  ------------------
42012|      0|			zend_tmp_string_release(tmp_name);
42013|      0|		}
42014|      2|	} while (0);
  ------------------
  |  Branch (42014:11): [Folded, False: 2]
  ------------------
42015|       |
42016|       |
42017|       |
42018|       |
42019|      3|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42019:2): [True: 0, False: 0]
  |  Branch (42019:2): [True: 0, False: 0]
  ------------------
42020|      3|}
zend_execute.c:ZEND_ECHO_SPEC_CONST_HANDLER:
 4567|  1.42k|{
 4568|  1.42k|	USE_OPLINE
 4569|  1.42k|	zval *z;
 4570|       |
 4571|  1.42k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.42k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.42k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4572|  1.42k|	z = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|  1.42k|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 4573|       |
 4574|  1.42k|	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  669|  1.42k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.42k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  612|  1.42k|#define IS_STRING					6
  ------------------
  |  Branch (4574:6): [True: 1.40k, False: 19]
  ------------------
 4575|  1.40k|		zend_string *str = Z_STR_P(z);
  ------------------
  |  |  982|  1.40k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.40k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4576|       |
 4577|  1.40k|		if (ZSTR_LEN(str) != 0) {
  ------------------
  |  |   68|  1.40k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4577:7): [True: 1.40k, False: 5]
  ------------------
 4578|  1.40k|			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|  1.40k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|  1.40k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4579|  1.40k|		}
 4580|  1.40k|	} else {
 4581|     19|		zend_string *str = zval_get_string_func(z);
 4582|       |
 4583|     19|		if (ZSTR_LEN(str) != 0) {
  ------------------
  |  |   68|     19|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4583:7): [True: 18, False: 1]
  ------------------
 4584|     18|			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4585|     18|		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4585:14): [Folded, False: 1]
  ------------------
 4586|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 4587|      0|		}
 4588|     19|		zend_string_release_ex(str, 0);
 4589|     19|	}
 4590|       |
 4591|       |
 4592|  1.42k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.42k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.42k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.42k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.42k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.42k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.42k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.42k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.42k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.42k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.42k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4592:2): [True: 0, False: 0]
  |  Branch (4592:2): [True: 0, False: 0]
  ------------------
 4593|  1.42k|}
zend_execute.c:ZEND_ECHO_SPEC_TMP_HANDLER:
16942|  1.35k|{
16943|  1.35k|	USE_OPLINE
16944|  1.35k|	zval *z;
16945|       |
16946|  1.35k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.35k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.35k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
16947|  1.35k|	z = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.35k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.35k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16948|       |
16949|  1.35k|	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  669|  1.35k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  1.35k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  612|  1.35k|#define IS_STRING					6
  ------------------
  |  Branch (16949:6): [True: 1.14k, False: 217]
  ------------------
16950|  1.14k|		zend_string *str = Z_STR_P(z);
  ------------------
  |  |  982|  1.14k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  1.14k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
16951|       |
16952|  1.14k|		if (ZSTR_LEN(str) != 0) {
  ------------------
  |  |   68|  1.14k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (16952:7): [True: 1.14k, False: 2]
  ------------------
16953|  1.14k|			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|  1.14k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|  1.14k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
16954|  1.14k|		}
16955|  1.14k|	} else {
16956|    217|		zend_string *str = zval_get_string_func(z);
16957|       |
16958|    217|		if (ZSTR_LEN(str) != 0) {
  ------------------
  |  |   68|    217|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (16958:7): [True: 189, False: 28]
  ------------------
16959|    189|			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|    189|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|    189|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
16960|    189|		} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  865|     28|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  867|     56|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (16960:14): [Folded, False: 28]
  ------------------
16961|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16962|      0|		}
16963|    217|		zend_string_release_ex(str, 0);
16964|    217|	}
16965|       |
16966|  1.35k|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|  1.35k|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|  1.35k|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16967|  1.35k|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|  1.35k|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|  1.35k|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|  1.35k|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1.35k, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|  1.35k|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|  1.35k|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|  1.35k|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|  1.35k|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|  1.35k|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|  1.35k|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16967:2): [True: 0, False: 0]
  |  Branch (16967:2): [True: 0, False: 0]
  ------------------
16968|  1.35k|}
zend_execute.c:ZEND_ECHO_SPEC_CV_HANDLER:
39605|    562|{
39606|    562|	USE_OPLINE
39607|    562|	zval *z;
39608|       |
39609|    562|	SAVE_OPLINE();
  ------------------
  |  |  428|    562|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    562|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
39610|    562|	z = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    562|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    562|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
39611|       |
39612|    562|	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  669|    562|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    562|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(z) == IS_STRING) {
  ------------------
  |  |  612|    562|#define IS_STRING					6
  ------------------
  |  Branch (39612:6): [True: 33, False: 529]
  ------------------
39613|     33|		zend_string *str = Z_STR_P(z);
  ------------------
  |  |  982|     33|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     33|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
39614|       |
39615|     33|		if (ZSTR_LEN(str) != 0) {
  ------------------
  |  |   68|     33|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (39615:7): [True: 33, False: 0]
  ------------------
39616|     33|			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|     33|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|     33|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
39617|     33|		}
39618|    529|	} else {
39619|    529|		zend_string *str = zval_get_string_func(z);
39620|       |
39621|    529|		if (ZSTR_LEN(str) != 0) {
  ------------------
  |  |   68|    529|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (39621:7): [True: 23, False: 506]
  ------------------
39622|     23|			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|     23|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|     23|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
39623|    506|		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  867|    506|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  867|  1.01k|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
  ------------------
  |  |  457|    506|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 500]
  |  |  ------------------
  ------------------
  |  Branch (39623:14): [True: 506, Folded]
  ------------------
39624|      6|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      6|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
39625|      6|		}
39626|    529|		zend_string_release_ex(str, 0);
39627|    529|	}
39628|       |
39629|       |
39630|    562|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    562|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    562|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    562|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 562, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    562|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    562|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    562|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    562|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    562|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    562|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39630:2): [True: 0, False: 0]
  |  Branch (39630:2): [True: 0, False: 0]
  ------------------
39631|    562|}
zend_execute.c:ZEND_INSTANCEOF_SPEC_TMP_CONST_HANDLER:
19647|     16|{
19648|     16|	USE_OPLINE
19649|     16|	zval *expr;
19650|     16|	bool result;
19651|       |
19652|     16|	SAVE_OPLINE();
  ------------------
  |  |  428|     16|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19653|     16|	expr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     16|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     16|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19654|       |
19655|     16|try_instanceof:
19656|     16|	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  669|     16|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  614|     16|#define IS_OBJECT					8
  ------------------
  |  Branch (19656:6): [True: 16, False: 0]
  ------------------
19657|     16|		zend_class_entry *ce;
19658|       |
19659|     16|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     16|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19659:7): [True: 16, Folded]
  ------------------
19660|     16|			ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|     16|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|     16|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19661|     16|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 0]
  |  |  ------------------
  ------------------
19662|     16|				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|     16|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     16|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|     16|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
19663|     16|				if (EXPECTED(ce)) {
  ------------------
  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 13, False: 3]
  |  |  ------------------
  ------------------
19664|     13|					CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|     13|#define CACHE_PTR(num, ptr) do { \
  |  |  530|     13|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
19665|     13|				}
19666|     16|			}
19667|     16|		} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (19667:14): [Folded, False: 0]
  ------------------
19668|      0|			ce = zend_fetch_class(NULL, opline->op2.num);
19669|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19670|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19671|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19672|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (19672:5): [True: 0, False: 0]
  |  Branch (19672:5): [True: 0, False: 0]
  ------------------
19673|      0|			}
19674|      0|		} else {
19675|      0|			ce = Z_CE_P(EX_VAR(opline->op2.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
19676|      0|		}
19677|     16|		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
  ------------------
  |  | 1012|     13|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     13|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19677:12): [True: 13, False: 3]
  |  Branch (19677:18): [True: 9, False: 4]
  ------------------
19678|     16|	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (19678:13): [Folded, False: 0]
  |  Branch (19678:46): [True: 0, False: 0]
  ------------------
19679|      0|		expr = Z_REFVAL_P(expr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19680|      0|		goto try_instanceof;
19681|      0|	} else {
19682|      0|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19682:7): [Folded, False: 0]
  ------------------
19683|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19684|      0|		}
19685|      0|		result = 0;
19686|      0|	}
19687|     16|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     16|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     16|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19688|     16|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|     16|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|     16|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 16, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|     16|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|     16|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|     16|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|     16|		} else { \
  |  | 5824|     16|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|     16|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|     16|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|     16|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      9|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     23|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 9, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1074|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|     16|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|     16|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|     16|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     16|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|     16|		} \
  |  | 5827|     16|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     16|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19689|     16|}
zend_execute.c:ZEND_INSTANCEOF_SPEC_TMP_UNUSED_HANDLER:
21825|      1|{
21826|      1|	USE_OPLINE
21827|      1|	zval *expr;
21828|      1|	bool result;
21829|       |
21830|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21831|      1|	expr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21832|       |
21833|      1|try_instanceof:
21834|      1|	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (21834:6): [True: 1, False: 0]
  ------------------
21835|      1|		zend_class_entry *ce;
21836|       |
21837|      1|		if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21837:7): [Folded, False: 1]
  ------------------
21838|      0|			ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21839|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21840|      0|				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|      0|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
21841|      0|				if (EXPECTED(ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21842|      0|					CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21843|      0|				}
21844|      0|			}
21845|      1|		} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21845:14): [True: 1, Folded]
  ------------------
21846|      1|			ce = zend_fetch_class(NULL, opline->op2.num);
21847|      1|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
21848|      1|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21849|      1|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
21850|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (21850:5): [True: 0, False: 1]
  |  Branch (21850:5): [True: 1, False: 0]
  ------------------
21851|      1|			}
21852|      1|		} else {
21853|      0|			ce = Z_CE_P(EX_VAR(opline->op2.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
21854|      0|		}
21855|      0|		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21855:12): [True: 0, False: 0]
  |  Branch (21855:18): [True: 0, False: 0]
  ------------------
21856|      0|	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (21856:13): [Folded, False: 0]
  |  Branch (21856:46): [True: 0, False: 0]
  ------------------
21857|      0|		expr = Z_REFVAL_P(expr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21858|      0|		goto try_instanceof;
21859|      0|	} else {
21860|      0|		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (21860:7): [Folded, False: 0]
  ------------------
21861|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21862|      0|		}
21863|      0|		result = 0;
21864|      0|	}
21865|      0|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21866|      0|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      0|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      0|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 0, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      0|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21867|      0|}
zend_execute.c:ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER:
44510|      3|{
44511|      3|	USE_OPLINE
44512|      3|	zval *expr;
44513|      3|	bool result;
44514|       |
44515|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44516|      3|	expr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44517|       |
44518|      3|try_instanceof:
44519|      3|	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  614|      3|#define IS_OBJECT					8
  ------------------
  |  Branch (44519:6): [True: 3, False: 0]
  ------------------
44520|      3|		zend_class_entry *ce;
44521|       |
44522|      3|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44522:7): [True: 3, Folded]
  ------------------
44523|      3|			ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      3|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44524|      3|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
44525|      3|				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|      3|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
44526|      3|				if (EXPECTED(ce)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
44527|      2|					CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|      2|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      2|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
44528|      2|				}
44529|      3|			}
44530|      3|		} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (44530:14): [Folded, False: 0]
  ------------------
44531|      0|			ce = zend_fetch_class(NULL, opline->op2.num);
44532|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44533|       |
44534|       |
44535|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44536|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (44536:5): [True: 0, False: 0]
  |  Branch (44536:5): [True: 0, False: 0]
  ------------------
44537|      0|			}
44538|      0|		} else {
44539|      0|			ce = Z_CE_P(EX_VAR(opline->op2.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
44540|      0|		}
44541|      3|		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
  ------------------
  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44541:12): [True: 2, False: 1]
  |  Branch (44541:18): [True: 2, False: 0]
  ------------------
44542|      3|	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (44542:13): [True: 0, Folded]
  |  Branch (44542:41): [True: 0, False: 0]
  ------------------
44543|      0|		expr = Z_REFVAL_P(expr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44544|      0|		goto try_instanceof;
44545|      0|	} else {
44546|      0|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (44546:7): [True: 0, Folded]
  ------------------
44547|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44548|      0|		}
44549|      0|		result = 0;
44550|      0|	}
44551|       |
44552|       |
44553|      3|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      3|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      3|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      3|		} else { \
  |  | 5824|      3|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      3|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      3|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      3|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      3|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      3|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      3|		} \
  |  | 5827|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44554|      3|}
zend_execute.c:ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER:
48331|      2|{
48332|      2|	USE_OPLINE
48333|      2|	zval *expr;
48334|      2|	bool result;
48335|       |
48336|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48337|      2|	expr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
48338|       |
48339|      2|try_instanceof:
48340|      2|	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(expr) == IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (48340:6): [True: 1, False: 1]
  ------------------
48341|      1|		zend_class_entry *ce;
48342|       |
48343|      1|		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (48343:7): [Folded, False: 1]
  ------------------
48344|      0|			ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
48345|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48346|      0|				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_lookup_class_ex(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_NO_AUTOLOAD);
  ------------------
  |  | 1050|      0|#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80
  ------------------
48347|      0|				if (EXPECTED(ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48348|      0|					CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48349|      0|				}
48350|      0|			}
48351|      1|		} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		} else if (IS_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (48351:14): [Folded, False: 1]
  ------------------
48352|      0|			ce = zend_fetch_class(NULL, opline->op2.num);
48353|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
48354|       |
48355|       |
48356|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48357|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (48357:5): [True: 0, False: 0]
  |  Branch (48357:5): [True: 0, False: 0]
  ------------------
48358|      0|			}
48359|      1|		} else {
48360|      1|			ce = Z_CE_P(EX_VAR(opline->op2.var));
  ------------------
  |  | 1047|      1|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      1|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
48361|      1|		}
48362|      1|		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (48362:12): [True: 1, False: 0]
  |  Branch (48362:18): [True: 1, False: 0]
  ------------------
48363|      1|	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (48363:13): [True: 1, Folded]
  |  Branch (48363:41): [True: 0, False: 1]
  ------------------
48364|      0|		expr = Z_REFVAL_P(expr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
48365|      0|		goto try_instanceof;
48366|      1|	} else {
48367|      1|		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (48367:7): [True: 1, Folded]
  ------------------
48368|      1|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      1|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
48369|      1|		}
48370|      1|		result = 0;
48371|      1|	}
48372|       |
48373|       |
48374|      2|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      2|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      2|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 2, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      2|		} else { \
  |  | 5824|      2|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      2|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      2|		} \
  |  | 5827|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
48375|      2|}
zend_execute.c:ZEND_GENERATOR_CREATE_SPEC_HANDLER:
 2340|    101|{
 2341|    101|	zval *return_value = EX(return_value);
  ------------------
  |  |  730|    101|#define EX(element) 			((execute_data)->element)
  ------------------
 2342|       |
 2343|    101|	if (EXPECTED(return_value)) {
  ------------------
  |  |  456|    101|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 99, False: 2]
  |  |  ------------------
  ------------------
 2344|     99|		USE_OPLINE
 2345|     99|		zend_generator *generator;
 2346|     99|		zend_execute_data *gen_execute_data;
 2347|     99|		uint32_t num_args, used_stack, call_info;
 2348|       |
 2349|     99|		SAVE_OPLINE();
  ------------------
  |  |  428|     99|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     99|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2350|     99|		object_init_ex(return_value, zend_ce_generator);
 2351|       |
 2352|       |		/*
 2353|       |		 * Normally the execute_data is allocated on the VM stack (because it does
 2354|       |		 * not actually do any allocation and thus is faster). For generators
 2355|       |		 * though this behavior would be suboptimal, because the (rather large)
 2356|       |		 * structure would have to be copied back and forth every time execution is
 2357|       |		 * suspended or resumed. That's why for generators the execution context
 2358|       |		 * is allocated on heap.
 2359|       |		 */
 2360|     99|		num_args = EX_NUM_ARGS();
  ------------------
  |  |  734|     99|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|     99|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 2361|     99|		if (EXPECTED(num_args <= EX(func)->op_array.num_args)) {
  ------------------
  |  |  456|     99|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 96, False: 3]
  |  |  ------------------
  ------------------
 2362|     96|			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
  ------------------
  |  |  719|     96|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
  ------------------
  |  |  730|     96|#define EX(element) 			((execute_data)->element)
  ------------------
              			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
  ------------------
  |  |  730|     96|#define EX(element) 			((execute_data)->element)
  ------------------
 2363|     96|			gen_execute_data = (zend_execute_data*)emalloc(used_stack);
  ------------------
  |  |  150|     96|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     96|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     96|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     96|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     96|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2364|     96|			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var) * sizeof(zval);
  ------------------
  |  |  719|     96|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var) * sizeof(zval);
  ------------------
  |  |  730|     96|#define EX(element) 			((execute_data)->element)
  ------------------
 2365|     96|		} else {
 2366|      3|			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);
  ------------------
  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  ------------------
              			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);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
              			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);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
              			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);
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
 2367|      3|			gen_execute_data = (zend_execute_data*)emalloc(used_stack);
  ------------------
  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2368|      3|		}
 2369|     99|		memcpy(gen_execute_data, execute_data, used_stack);
 2370|       |
 2371|       |		/* Save execution context in generator object. */
 2372|     99|		generator = (zend_generator *) Z_OBJ_P(EX(return_value));
  ------------------
  |  | 1000|     99|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     99|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2373|     99|		generator->func = gen_execute_data->func;
 2374|     99|		generator->execute_data = gen_execute_data;
 2375|     99|		generator->frozen_call_stack = NULL;
 2376|     99|		generator->execute_fake.opline = NULL;
 2377|     99|		generator->execute_fake.func = NULL;
 2378|     99|		generator->execute_fake.prev_execute_data = NULL;
 2379|     99|		ZVAL_OBJ(&generator->execute_fake.This, (zend_object *) generator);
  ------------------
  |  | 1140|     99|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     99|		zval *__z = (z);						\
  |  | 1142|     99|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     99|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     99|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     99|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     99|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     99|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     99|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     99|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     99|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     99|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     99|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     99|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 99]
  |  |  ------------------
  ------------------
 2380|       |
 2381|     99|		gen_execute_data->opline = opline;
 2382|       |		/* EX(return_value) keeps pointer to zend_object (not a real zval) */
 2383|     99|		gen_execute_data->return_value = (zval*)generator;
 2384|     99|		call_info = Z_TYPE_INFO(EX(This));
  ------------------
  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
 2385|     99|		if ((call_info & Z_TYPE_MASK) == IS_OBJECT
  ------------------
  |  |  710|     99|#define Z_TYPE_MASK					0xff
  ------------------
              		if ((call_info & Z_TYPE_MASK) == IS_OBJECT
  ------------------
  |  |  614|    198|#define IS_OBJECT					8
  ------------------
  |  Branch (2385:7): [True: 3, False: 96]
  ------------------
 2386|      3|		 && (!(call_info & (ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS))
  ------------------
  |  |  668|      3|#define ZEND_CALL_CLOSURE            (1 << 22)
  ------------------
              		 && (!(call_info & (ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS))
  ------------------
  |  |  667|      3|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (2386:8): [True: 0, False: 3]
  ------------------
 2387|       |			 /* Bug #72523 */
 2388|      3|			|| UNEXPECTED(zend_execute_ex != execute_ex))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 2389|      3|			ZEND_ADD_CALL_FLAG_EX(call_info, ZEND_CALL_RELEASE_THIS);
  ------------------
  |  |  695|      3|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  696|      3|		call_info |= (flag); \
  |  |  697|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (697:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2390|      3|			Z_ADDREF(gen_execute_data->This);
  ------------------
  |  | 1282|      3|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      3|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
 2391|      3|		}
 2392|     99|		ZEND_ADD_CALL_FLAG_EX(call_info, (ZEND_CALL_TOP_FUNCTION | ZEND_CALL_ALLOCATED | ZEND_CALL_GENERATOR));
  ------------------
  |  |  695|     99|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  696|     99|		call_info |= (flag); \
  |  |  697|     99|	} while (0)
  |  |  ------------------
  |  |  |  Branch (697:11): [Folded, False: 99]
  |  |  ------------------
  ------------------
 2393|     99|		Z_TYPE_INFO(gen_execute_data->This) = call_info;
  ------------------
  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
 2394|     99|		gen_execute_data->prev_execute_data = NULL;
 2395|       |
 2396|     99|		call_info = EX_CALL_INFO();
  ------------------
  |  |  732|     99|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|     99|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     99|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2397|     99|		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|     99|# define EG(v) (executor_globals.v)
  ------------------
              		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|     99|#define EX(element) 			((execute_data)->element)
  ------------------
 2398|     99|		if (EXPECTED(!(call_info & (ZEND_CALL_TOP|ZEND_CALL_ALLOCATED)))) {
  ------------------
  |  |  456|     99|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 99]
  |  |  ------------------
  ------------------
 2399|      0|			EG(vm_stack_top) = (zval*)execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2400|      0|			execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2401|      0|			LOAD_NEXT_OPLINE();
  ------------------
  |  |  427|      0|# define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2402|      0|			ZEND_VM_LEAVE();
  ------------------
  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 2403|     99|		} else if (EXPECTED(!(call_info & ZEND_CALL_TOP))) {
  ------------------
  |  |  456|     99|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 99]
  |  |  ------------------
  ------------------
 2404|      0|			zend_execute_data *old_execute_data = execute_data;
 2405|      0|			execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2406|      0|			zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
 2407|      0|			LOAD_NEXT_OPLINE();
  ------------------
  |  |  427|      0|# define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2408|      0|			ZEND_VM_LEAVE();
  ------------------
  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 2409|     99|		} else {
 2410|     99|			ZEND_VM_RETURN();
  ------------------
  |  |  406|     99|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|     99|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 2411|     99|		}
 2412|     99|	} else {
 2413|      2|		ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      2|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 2414|      2|	}
 2415|    101|}
zend_execute.c:ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER:
30383|    484|{
30384|    484|	USE_OPLINE
30385|    484|	zval *op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    484|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    484|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30386|       |
30387|    484|	if (IS_VAR == IS_CV) {
  ------------------
  |  |  866|    484|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_CV) {
  ------------------
  |  |  867|    484|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (30387:6): [Folded, False: 484]
  ------------------
30388|      0|		if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30389|      0|			ZVAL_NEW_EMPTY_REF(op1);
  ------------------
  |  | 1195|      0|#define ZVAL_NEW_EMPTY_REF(z) do {								\
  |  | 1196|      0|		zend_reference *_ref =									\
  |  | 1197|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1198|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1199|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1200|      0|		_ref->sources.ptr = NULL;									\
  |  | 1201|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1202|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1203|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1203:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30390|      0|			Z_SET_REFCOUNT_P(op1, 2);
  ------------------
  |  | 1276|      0|#define Z_SET_REFCOUNT_P(pz, rc)	zval_set_refcount_p(pz, rc)
  ------------------
30391|      0|			ZVAL_NULL(Z_REFVAL_P(op1));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30392|      0|			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30393|      0|		} else {
30394|      0|			if (Z_ISREF_P(op1)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30395|      0|				Z_ADDREF_P(op1);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30396|      0|			} else {
30397|      0|				ZVAL_MAKE_REF_EX(op1, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30398|      0|			}
30399|      0|			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30400|      0|		}
30401|    484|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) {
  ------------------
  |  |  456|    484|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 475, False: 9]
  |  |  ------------------
  ------------------
30402|    475|		op1 = Z_INDIRECT_P(op1);
  ------------------
  |  | 1044|    475|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|    475|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
30403|    475|		if (EXPECTED(!Z_ISREF_P(op1))) {
  ------------------
  |  |  456|    475|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 463, False: 12]
  |  |  ------------------
  ------------------
30404|    463|			ZVAL_MAKE_REF_EX(op1, 2);
  ------------------
  |  | 1216|    463|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|    463|		zval *_z = (z);											\
  |  | 1218|    463|		zend_reference *_ref =									\
  |  | 1219|    463|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|    463|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    463|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    463|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    463|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    463|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|    463|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|    463|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|    463|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|    463|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|    463|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    463|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|    463|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    463|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|    463|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|    463|	do {												\
  |  |  |  | 1417|    463|		zval *_z1 = (z);								\
  |  |  |  | 1418|    463|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    463|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    463|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    463|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    463|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    463|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    463|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    463|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    463|	do {												\
  |  |  |  |  |  | 1408|    463|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    463|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    463|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    463|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    463|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    463|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    463|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 463]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    463|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 463]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|    463|		_ref->sources.ptr = NULL;									\
  |  | 1224|    463|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|    463|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    463|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|    463|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|    463|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    463|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|    463|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    463|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    463|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    463|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    463|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    463|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|    463|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 463]
  |  |  ------------------
  ------------------
30405|    463|		} else {
30406|     12|			GC_ADDREF(Z_REF_P(op1));
  ------------------
  |  |  718|     12|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
30407|     12|		}
30408|    475|		ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
  ------------------
  |  | 1189|    475|#define ZVAL_REF(z, r) do {										\
  |  | 1190|    475|		zval *__z = (z);										\
  |  | 1191|    475|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|    475|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    475|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|    475|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|    475|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    475|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|    475|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    475|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    475|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    475|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    475|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    475|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|    475|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 475]
  |  |  ------------------
  ------------------
30409|    475|	} else {
30410|      9|		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), op1);
  ------------------
  |  | 1416|      9|	do {												\
  |  | 1417|      9|		zval *_z1 = (z);								\
  |  | 1418|      9|		const zval *_z2 = (v);							\
  |  | 1419|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      9|	do {												\
  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
30411|      9|	}
30412|    484|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    484|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    484|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    484|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 484]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    484|	} else { \
  |  |  |  | 5761|    484|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    484|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    484|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    484|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    484|	} \
  |  |  |  | 5764|    484|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    484|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30412:2): [True: 0, False: 484]
  |  Branch (30412:2): [True: 484, False: 0]
  ------------------
30413|    484|}
zend_execute.c:ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER:
49890|     14|{
49891|     14|	USE_OPLINE
49892|     14|	zval *op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49893|       |
49894|     14|	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CV) {
  ------------------
  |  |  867|     14|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49894:6): [True: 14, Folded]
  ------------------
49895|     14|		if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 9]
  |  |  ------------------
  ------------------
49896|      5|			ZVAL_NEW_EMPTY_REF(op1);
  ------------------
  |  | 1195|      5|#define ZVAL_NEW_EMPTY_REF(z) do {								\
  |  | 1196|      5|		zend_reference *_ref =									\
  |  | 1197|      5|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      5|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1198|      5|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      5|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1199|      5|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      5|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      5|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1200|      5|		_ref->sources.ptr = NULL;									\
  |  | 1201|      5|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      5|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1202|      5|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      5|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1203|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1203:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
49897|      5|			Z_SET_REFCOUNT_P(op1, 2);
  ------------------
  |  | 1276|      5|#define Z_SET_REFCOUNT_P(pz, rc)	zval_set_refcount_p(pz, rc)
  ------------------
49898|      5|			ZVAL_NULL(Z_REFVAL_P(op1));
  ------------------
  |  | 1059|      5|#define ZVAL_NULL(z) do {				\
  |  | 1060|      5|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
49899|      5|			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
  ------------------
  |  | 1189|      5|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      5|		zval *__z = (z);										\
  |  | 1191|      5|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      5|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      5|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      5|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
49900|      9|		} else {
49901|      9|			if (Z_ISREF_P(op1)) {
  ------------------
  |  |  964|      9|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      9|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      9|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 4, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49902|      4|				Z_ADDREF_P(op1);
  ------------------
  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49903|      5|			} else {
49904|      5|				ZVAL_MAKE_REF_EX(op1, 2);
  ------------------
  |  | 1216|      5|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      5|		zval *_z = (z);											\
  |  | 1218|      5|		zend_reference *_ref =									\
  |  | 1219|      5|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      5|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      5|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      5|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      5|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      5|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      5|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      5|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      5|	do {												\
  |  |  |  | 1417|      5|		zval *_z1 = (z);								\
  |  |  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      5|	do {												\
  |  |  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      5|		_ref->sources.ptr = NULL;									\
  |  | 1224|      5|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      5|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      5|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      5|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
49905|      5|			}
49906|      9|			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
  ------------------
  |  | 1189|      9|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      9|		zval *__z = (z);										\
  |  | 1191|      9|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      9|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      9|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      9|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      9|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      9|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
49907|      9|		}
49908|     14|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49909|      0|		op1 = Z_INDIRECT_P(op1);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
49910|      0|		if (EXPECTED(!Z_ISREF_P(op1))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49911|      0|			ZVAL_MAKE_REF_EX(op1, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49912|      0|		} else {
49913|      0|			GC_ADDREF(Z_REF_P(op1));
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
49914|      0|		}
49915|      0|		ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49916|      0|	} else {
49917|      0|		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), op1);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49918|      0|	}
49919|     14|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     14|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     14|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     14|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     14|	} else { \
  |  |  |  | 5761|     14|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     14|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     14|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     14|	} \
  |  |  |  | 5764|     14|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49919:2): [True: 0, False: 14]
  |  Branch (49919:2): [True: 14, False: 0]
  ------------------
49920|     14|}
zend_execute.c:ZEND_DECLARE_FUNCTION_SPEC_HANDLER:
 3280|      4|{
 3281|      4|	zend_function *func;
 3282|      4|	USE_OPLINE
 3283|       |
 3284|      4|	SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3285|      4|	func = (zend_function *) EX(func)->op_array.dynamic_func_defs[opline->op2.num];
  ------------------
  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  ------------------
 3286|      4|	do_bind_function(func, RT_CONSTANT(opline, opline->op1));
  ------------------
  |  |  841|      4|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 3287|      4|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      4|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      4|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      4|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      4|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      4|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      4|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      4|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3287:2): [True: 0, False: 0]
  |  Branch (3287:2): [True: 0, False: 0]
  ------------------
 3288|      4|}
zend_execute.c:ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_HANDLER:
 5919|    496|{
 5920|    496|	USE_OPLINE
 5921|    496|	zend_function *func;
 5922|    496|	zval *object;
 5923|    496|	zend_class_entry *called_scope;
 5924|       |
 5925|    496|	func = (zend_function *) EX(func)->op_array.dynamic_func_defs[opline->op2.num];
  ------------------
  |  |  730|    496|#define EX(element) 			((execute_data)->element)
  ------------------
 5926|    496|	if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|    496|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|    496|#define IS_OBJECT					8
  ------------------
  |  Branch (5926:6): [True: 5, False: 491]
  ------------------
 5927|      5|		called_scope = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      5|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5928|      5|		if (UNEXPECTED((func->common.fn_flags & ZEND_ACC_STATIC) ||
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  Branch (457:52): [True: 0, False: 5]
  |  |  |  Branch (457:52): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 5929|      5|				(EX(func)->common.fn_flags & ZEND_ACC_STATIC))) {
 5930|      0|			object = NULL;
 5931|      5|		} else {
 5932|      5|			object = &EX(This);
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
 5933|      5|		}
 5934|    491|	} else {
 5935|    491|		called_scope = Z_CE(EX(This));
  ------------------
  |  | 1046|    491|#define Z_CE(zval)					(zval).value.ce
  ------------------
 5936|    491|		object = NULL;
 5937|    491|	}
 5938|    496|	SAVE_OPLINE();
  ------------------
  |  |  428|    496|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    496|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5939|    496|	zend_create_closure(EX_VAR(opline->result.var), func,
  ------------------
  |  |  755|    496|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    496|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5940|    496|		EX(func)->op_array.scope, called_scope, object);
  ------------------
  |  |  730|    496|#define EX(element) 			((execute_data)->element)
  ------------------
 5941|       |
 5942|    496|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    496|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    496|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    496|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 496]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    496|	} else { \
  |  |  |  | 5761|    496|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    496|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    496|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    496|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    496|	} \
  |  |  |  | 5764|    496|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    496|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5942:2): [True: 0, False: 496]
  |  Branch (5942:2): [True: 496, False: 0]
  ------------------
 5943|    496|}
zend_execute.c:ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER:
 8282|    116|{
 8283|    116|	USE_OPLINE
 8284|    116|	zval *name;
 8285|    116|	zval *val;
 8286|    116|	zend_constant c;
 8287|       |
 8288|    116|	SAVE_OPLINE();
  ------------------
  |  |  428|    116|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    116|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 8289|    116|	name  = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|    116|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8290|    116|	val   = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    116|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8291|       |
 8292|    116|	ZVAL_COPY(&c.value, val);
  ------------------
  |  | 1425|    116|	do {												\
  |  | 1426|    116|		zval *_z1 = (z);								\
  |  | 1427|    116|		const zval *_z2 = (v);							\
  |  | 1428|    116|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    116|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    116|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    116|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    116|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    116|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    116|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    116|	do {												\
  |  |  |  | 1408|    116|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    116|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    116|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    116|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    116|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    116|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    116|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 116]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    116|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    116|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    116|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 75, False: 41]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     75|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     75|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     75|		}												\
  |  | 1434|    116|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 116]
  |  |  ------------------
  ------------------
 8293|    116|	if (Z_OPT_CONSTANT(c.value)) {
  ------------------
  |  |  951|    116|#define Z_OPT_CONSTANT(zval)		(Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  948|    116|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    116|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|    116|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define Z_OPT_CONSTANT(zval)		(Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  617|    116|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  |  |  |  Branch (951:31): [True: 54, False: 62]
  |  |  ------------------
  ------------------
 8294|     54|		if (UNEXPECTED(zval_update_constant_ex(&c.value, EX(func)->op_array.scope) != SUCCESS)) {
  ------------------
  |  |  457|     54|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 31, False: 23]
  |  |  ------------------
  ------------------
 8295|     31|			zval_ptr_dtor_nogc(&c.value);
 8296|       |
 8297|       |
 8298|       |
 8299|       |
 8300|     31|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|     31|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     31|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     31|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     31|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (8300:4): [True: 0, False: 31]
  |  Branch (8300:4): [True: 31, False: 0]
  ------------------
 8301|     31|		}
 8302|     54|	}
 8303|       |	/* non persistent, case sensitive */
 8304|     85|	ZEND_CONSTANT_SET_FLAGS(&c, 0, PHP_USER_CONSTANT);
  ------------------
  |  |   56|     85|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|     85|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|     85|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|     85|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|     85|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 85]
  |  |  ------------------
  ------------------
 8305|     85|	c.name = zend_string_copy(Z_STR_P(name));
  ------------------
  |  |  982|     85|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     85|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 8306|       |
 8307|     85|	if (zend_register_constant(&c) == NULL) {
  ------------------
  |  Branch (8307:6): [True: 7, False: 78]
  ------------------
 8308|      7|	}
 8309|       |
 8310|       |
 8311|       |
 8312|       |
 8313|     85|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     85|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     85|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     85|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 85, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     85|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     85|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     85|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     85|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     85|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     85|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8313:2): [True: 0, False: 0]
  |  Branch (8313:2): [True: 0, False: 0]
  ------------------
 8314|     85|}
zend_execute.c:ZEND_DECLARE_CLASS_SPEC_CONST_HANDLER:
 5910|    359|{
 5911|    359|	USE_OPLINE
 5912|       |
 5913|    359|	SAVE_OPLINE();
  ------------------
  |  |  428|    359|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    359|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5914|    359|	do_bind_class(RT_CONSTANT(opline, opline->op1), (opline->op2_type == IS_CONST) ? Z_STR_P(RT_CONSTANT(opline, opline->op2)) : NULL);
  ------------------
  |  |  841|    359|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
              	do_bind_class(RT_CONSTANT(opline, opline->op1), (opline->op2_type == IS_CONST) ? Z_STR_P(RT_CONSTANT(opline, opline->op2)) : NULL);
  ------------------
  |  |  864|    359|#define IS_CONST	(1<<0)
  ------------------
              	do_bind_class(RT_CONSTANT(opline, opline->op1), (opline->op2_type == IS_CONST) ? Z_STR_P(RT_CONSTANT(opline, opline->op2)) : NULL);
  ------------------
  |  |  982|     53|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     53|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (5914:50): [True: 53, False: 306]
  ------------------
 5915|    359|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    359|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    218|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    359|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 218, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    218|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    218|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    218|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    218|	} else { \
  |  |  |  | 5761|    141|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    141|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    141|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    218|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    218|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5915:2): [True: 0, False: 141]
  |  Branch (5915:2): [True: 0, False: 141]
  ------------------
 5916|    359|}
zend_execute.c:ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER:
 3255|     52|{
 3256|     52|	zval *zv;
 3257|     52|	zend_class_entry *ce;
 3258|     52|	USE_OPLINE
 3259|       |
 3260|     52|	ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|     52|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|     52|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3261|     52|	if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|     52|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 34, False: 18]
  |  |  ------------------
  ------------------
 3262|     34|		zend_string *rtd_key = Z_STR_P(RT_CONSTANT(opline, opline->op1));
  ------------------
  |  |  982|     34|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     34|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3263|     34|		zv = zend_hash_find_known_hash(EG(class_table), rtd_key);
  ------------------
  |  |   45|     34|# define EG(v) (executor_globals.v)
  ------------------
 3264|     34|		ZEND_ASSERT(zv != NULL);
  ------------------
  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3264:3): [True: 0, False: 34]
  |  Branch (3264:3): [True: 34, False: 0]
  ------------------
 3265|     34|		ce = Z_CE_P(zv);
  ------------------
  |  | 1047|     34|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|     34|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3266|     34|		if (!(ce->ce_flags & ZEND_ACC_LINKED)) {
  ------------------
  |  |  287|     34|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (3266:7): [True: 5, False: 29]
  ------------------
 3267|      5|			SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3268|      5|			ce = zend_do_link_class(ce, (opline->op2_type == IS_CONST) ? Z_STR_P(RT_CONSTANT(opline, opline->op2)) : NULL, rtd_key);
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			ce = zend_do_link_class(ce, (opline->op2_type == IS_CONST) ? Z_STR_P(RT_CONSTANT(opline, opline->op2)) : NULL, rtd_key);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (3268:32): [True: 2, False: 3]
  ------------------
 3269|      5|			if (EG(exception)) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 3270|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (3270:5): [True: 0, False: 0]
  |  Branch (3270:5): [True: 0, False: 0]
  ------------------
 3271|      0|			}
 3272|      5|		}
 3273|     34|		CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|     34|#define CACHE_PTR(num, ptr) do { \
  |  |  530|     34|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|     34|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|     34|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 34]
  |  |  ------------------
  ------------------
 3274|     34|	}
 3275|     52|	Z_CE_P(EX_VAR(opline->result.var)) = ce;
  ------------------
  |  | 1047|     52|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|     52|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 3276|     52|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     52|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     49|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     52|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 52]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     52|	} else { \
  |  |  |  | 5761|     52|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     52|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     52|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     49|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     49|	} \
  |  |  |  | 5764|     49|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     49|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3276:2): [True: 0, False: 52]
  |  Branch (3276:2): [True: 49, False: 3]
  ------------------
 3277|     52|}
zend_execute.c:ZEND_ADD_ARRAY_UNPACK_SPEC_HANDLER:
 2852|      8|{
 2853|      8|	USE_OPLINE
 2854|      8|	zval *op1;
 2855|      8|	HashTable *result_ht;
 2856|       |
 2857|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2858|      8|	op1 = get_zval_ptr(opline->op1_type, opline->op1, BP_VAR_R);
  ------------------
  |  |  120|      8|#define get_zval_ptr(op_type, node, type) _get_zval_ptr(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_zval_ptr(op_type, node, type) _get_zval_ptr(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      8|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      8|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2859|      8|	result_ht = Z_ARRVAL_P(EX_VAR(opline->result.var));
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2860|       |
 2861|      8|add_unpack_again:
 2862|      8|	if (EXPECTED(Z_TYPE_P(op1) == IS_ARRAY)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 3]
  |  |  ------------------
  ------------------
 2863|      5|		HashTable *ht = Z_ARRVAL_P(op1);
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2864|      5|		zval *val;
 2865|       |
 2866|      5|		if (HT_IS_PACKED(ht) && (zend_hash_num_elements(result_ht) == 0 || HT_IS_PACKED(result_ht))) {
  ------------------
  |  |   62|     10|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      5|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      5|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 5, False: 0]
  |  |  ------------------
  ------------------
              		if (HT_IS_PACKED(ht) && (zend_hash_num_elements(result_ht) == 0 || HT_IS_PACKED(result_ht))) {
  ------------------
  |  |   62|      1|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2866:28): [True: 4, False: 1]
  ------------------
 2867|       |			/* zend_hash_extend() skips initialization when the number of elements is 0,
 2868|       |			 * but the code below expects that result_ht is initialized as packed.
 2869|       |			 * We can just skip the work in that case. */
 2870|      5|			if (result_ht->nNumUsed + zend_hash_num_elements(ht) > 0) {
  ------------------
  |  Branch (2870:8): [True: 3, False: 2]
  ------------------
 2871|      3|				zend_hash_extend(result_ht, result_ht->nNumUsed + zend_hash_num_elements(ht), 1);
 2872|      3|				ZEND_HASH_FILL_PACKED(result_ht) {
  ------------------
  |  | 1542|      3|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      3|		HashTable *__fill_ht = (ht); \
  |  | 1544|      3|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      3|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      3|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2872:5): [True: 0, False: 3]
  |  Branch (2872:5): [True: 3, False: 0]
  ------------------
 2873|     20|					ZEND_HASH_PACKED_FOREACH_VAL(ht, val) {
  ------------------
  |  | 1494|      7|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      3|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      3|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      3|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      3|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      3|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      3|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      3|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|     10|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 7, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|      7|			(void) _idx; \
  |  |  |  |  |  | 1478|      7|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1495|      7|	_val = _z;
  ------------------
  |  Branch (2873:6): [True: 0, False: 3]
  |  Branch (2873:6): [True: 3, False: 0]
  ------------------
 2874|     20|						if (UNEXPECTED(Z_ISREF_P(val)) &&
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  ------------------
  ------------------
 2875|      1|							UNEXPECTED(Z_REFCOUNT_P(val) == 1)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2876|      1|							val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2877|      1|						}
 2878|     20|						Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|      7|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      7|	zval *_pz = (pz);				\
  |  | 1287|      7|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      7|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      7|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      7|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
 2879|     20|						ZEND_HASH_FILL_ADD(val);
  ------------------
  |  | 1584|      7|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|      7|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|      7|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      7|	do {												\
  |  |  |  |  |  | 1417|      7|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      7|	do {												\
  |  |  |  |  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|      7|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|      7|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|      7|		__fill_val++; \
  |  |  |  | 1581|      7|		__fill_idx++; \
  |  |  |  | 1582|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 2880|     20|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      7|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2881|      3|				} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      3|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      3|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      3|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      3|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      3|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      3|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2882|      3|			}
 2883|      5|		} else {
 2884|      0|			zend_string *key;
 2885|       |
 2886|      0|			ZEND_HASH_FOREACH_STR_KEY_VAL(ht, key, val) {
  ------------------
  |  | 1181|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|      0|	_key = __key; \
  |  | 1183|      0|	_val = _z;
  ------------------
 2887|      0|				if (UNEXPECTED(Z_ISREF_P(val)) &&
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2888|      0|					UNEXPECTED(Z_REFCOUNT_P(val) == 1)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2889|      0|					val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2890|      0|				}
 2891|      0|				Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2892|      0|				if (key) {
  ------------------
  |  Branch (2892:9): [True: 0, False: 0]
  ------------------
 2893|      0|					zend_hash_update(result_ht, key, val);
 2894|      0|				} else {
 2895|      0|					if (!zend_hash_next_index_insert(result_ht, val)) {
  ------------------
  |  Branch (2895:10): [True: 0, False: 0]
  ------------------
 2896|      0|						zend_cannot_add_element();
 2897|      0|						zval_ptr_dtor_nogc(val);
 2898|      0|						break;
 2899|      0|					}
 2900|      0|				}
 2901|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2902|      0|		}
 2903|      5|	} else if (EXPECTED(Z_TYPE_P(op1) == IS_OBJECT)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 2904|      1|		zend_class_entry *ce = Z_OBJCE_P(op1);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2905|      1|		zend_object_iterator *iter;
 2906|       |
 2907|      1|		if (!ce || !ce->get_iterator) {
  ------------------
  |  Branch (2907:7): [True: 0, False: 1]
  |  Branch (2907:14): [True: 0, False: 1]
  ------------------
 2908|      0|			zend_type_error("Only arrays and Traversables can be unpacked, %s given", zend_zval_value_name(op1));
 2909|      1|		} else {
 2910|      1|			iter = ce->get_iterator(ce, op1, 0);
 2911|      1|			if (UNEXPECTED(!iter)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2912|      0|				FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2913|      0|				if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2913:9): [True: 0, False: 0]
  ------------------
 2914|      0|					zend_throw_exception_ex(
 2915|      0|						NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name)
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2916|      0|					);
 2917|      0|				}
 2918|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2918:5): [True: 0, False: 0]
  |  Branch (2918:5): [True: 0, False: 0]
  ------------------
 2919|      0|			}
 2920|       |
 2921|      1|			const zend_object_iterator_funcs *funcs = iter->funcs;
 2922|      1|			if (funcs->rewind) {
  ------------------
  |  Branch (2922:8): [True: 1, False: 0]
  ------------------
 2923|      1|				funcs->rewind(iter);
 2924|      1|			}
 2925|       |
 2926|      1|			for (; funcs->valid(iter) == SUCCESS; ) {
  ------------------
  |  Branch (2926:11): [True: 1, False: 0]
  ------------------
 2927|      1|				zval *val;
 2928|       |
 2929|      1|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2930|      0|					break;
 2931|      0|				}
 2932|       |
 2933|      1|				val = funcs->get_current_data(iter);
 2934|      1|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2935|      0|					break;
 2936|      0|				}
 2937|       |
 2938|      1|				zval key;
 2939|      1|				if (funcs->get_current_key) {
  ------------------
  |  Branch (2939:9): [True: 1, False: 0]
  ------------------
 2940|      1|					funcs->get_current_key(iter, &key);
 2941|      1|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2942|      0|						break;
 2943|      0|					}
 2944|       |
 2945|      1|					if (UNEXPECTED(Z_TYPE(key) != IS_LONG && Z_TYPE(key) != IS_STRING)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 1, False: 0]
  |  |  |  Branch (457:52): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2946|      1|						zend_throw_error(NULL,
 2947|      1|							"Keys must be of type int|string during array unpacking");
 2948|      1|						zval_ptr_dtor(&key);
 2949|      1|						break;
 2950|      1|					}
 2951|      1|				} else {
 2952|      0|					ZVAL_UNDEF(&key);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2953|      0|				}
 2954|       |
 2955|      0|				ZVAL_DEREF(val);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2956|      0|				Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2957|       |
 2958|      0|				zend_ulong num_key;
 2959|      0|				if (Z_TYPE(key) == IS_STRING && !ZEND_HANDLE_NUMERIC(Z_STR(key), num_key)) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(key) == IS_STRING && !ZEND_HANDLE_NUMERIC(Z_STR(key), num_key)) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
              				if (Z_TYPE(key) == IS_STRING && !ZEND_HANDLE_NUMERIC(Z_STR(key), num_key)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  ------------------
  ------------------
  |  Branch (2959:9): [True: 0, False: 0]
  |  Branch (2959:37): [True: 0, False: 0]
  ------------------
 2960|      0|					zend_hash_update(result_ht, Z_STR(key), val);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 2961|      0|					zval_ptr_dtor_str(&key);
 2962|      0|				} else {
 2963|      0|					zval_ptr_dtor(&key);
 2964|      0|					if (!zend_hash_next_index_insert(result_ht, val)) {
  ------------------
  |  Branch (2964:10): [True: 0, False: 0]
  ------------------
 2965|      0|						zend_cannot_add_element();
 2966|      0|						zval_ptr_dtor_nogc(val);
 2967|      0|						break;
 2968|      0|					}
 2969|      0|				}
 2970|       |
 2971|      0|				funcs->move_forward(iter);
 2972|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2973|      0|					break;
 2974|      0|				}
 2975|      0|			}
 2976|       |
 2977|      1|			zend_iterator_dtor(iter);
 2978|      1|		}
 2979|      2|	} else if (EXPECTED(Z_ISREF_P(op1))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2980|      0|		op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2981|      0|		goto add_unpack_again;
 2982|      2|	} else {
 2983|      2|		zend_throw_error(NULL, "Only arrays and Traversables can be unpacked, %s given", zend_zval_value_name(op1));
 2984|      2|	}
 2985|       |
 2986|      8|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      8|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      8|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      8|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 1, False: 7]
  |  |  ------------------
  |  |  178|      1|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      1|	}
  ------------------
 2987|      8|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2987:2): [True: 0, False: 0]
  |  Branch (2987:2): [True: 0, False: 0]
  ------------------
 2988|      8|}
zend_execute.c:ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CONST_HANDLER:
19563|      5|{
19564|      5|	USE_OPLINE
19565|      5|	zval *container;
19566|      5|	int result;
19567|      5|	zval *offset;
19568|      5|	zend_string *name, *tmp_name;
19569|       |
19570|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
19571|      5|	container = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
19572|      5|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
19573|       |
19574|      5|	if (IS_TMP_VAR == IS_CONST ||
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_CONST ||
  ------------------
  |  |  864|     10|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19574:6): [Folded, False: 5]
  ------------------
19575|      5|	    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              	    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|     10|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (19575:7): [True: 5, Folded]
  ------------------
19576|      5|		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (19576:7): [Folded, False: 5]
  ------------------
19577|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19578|      0|			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19579|      0|				result = (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
19580|      0|				goto isset_object_finish;
19581|      0|			}
19582|      5|		} else {
19583|      5|			result = (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      5|#define ZEND_ISEMPTY			(1<<0)
  ------------------
19584|      5|			goto isset_object_finish;
19585|      5|		}
19586|      5|	}
19587|       |
19588|      0|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19588:6): [True: 0, Folded]
  ------------------
19589|      0|		name = Z_STR_P(offset);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
19590|      0|	} else {
19591|      0|		name = zval_try_get_tmp_string(offset, &tmp_name);
19592|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19593|      0|			result = 0;
19594|      0|			goto isset_object_finish;
19595|      0|		}
19596|      0|	}
19597|       |
19598|      0|	result =
19599|      0|		(opline->extended_value & ZEND_ISEMPTY) ^
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
19600|      0|		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (19600:107): [True: 0, Folded]
  ------------------
19601|       |
19602|      0|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (19602:6): [Folded, False: 0]
  ------------------
19603|      0|		zend_tmp_string_release(tmp_name);
19604|      0|	}
19605|       |
19606|      5|isset_object_finish:
19607|       |
19608|       |
19609|      5|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
19610|      5|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      5|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      5|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 5, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      5|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      5|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      5|		} else { \
  |  | 5824|      5|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      5|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      5|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      5|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     10|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1074|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      5|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      5|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      5|		} \
  |  | 5827|      5|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
19611|      5|}
zend_execute.c:ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER:
44424|      2|{
44425|      2|	USE_OPLINE
44426|      2|	zval *container;
44427|      2|	int result;
44428|      2|	zval *offset;
44429|      2|	zend_string *name, *tmp_name;
44430|       |
44431|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44432|      2|	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
44433|      2|	offset = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
44434|       |
44435|      2|	if (IS_CV == IS_CONST ||
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_CONST ||
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44435:6): [Folded, False: 2]
  ------------------
44436|      2|	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (44436:7): [True: 2, Folded]
  ------------------
44437|      0|		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44437:7): [True: 0, Folded]
  ------------------
44438|      0|			container = Z_REFVAL_P(container);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
44439|      0|			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44440|      0|				result = (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
44441|      0|				goto isset_object_finish;
44442|      0|			}
44443|      0|		} else {
44444|      0|			result = (opline->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      0|#define ZEND_ISEMPTY			(1<<0)
  ------------------
44445|      0|			goto isset_object_finish;
44446|      0|		}
44447|      0|	}
44448|       |
44449|      2|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44449:6): [True: 2, Folded]
  ------------------
44450|      2|		name = Z_STR_P(offset);
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44451|      2|	} else {
44452|      0|		name = zval_try_get_tmp_string(offset, &tmp_name);
44453|      0|		if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44454|      0|			result = 0;
44455|      0|			goto isset_object_finish;
44456|      0|		}
44457|      0|	}
44458|       |
44459|      2|	result =
44460|      2|		(opline->extended_value & ZEND_ISEMPTY) ^
  ------------------
  |  | 1108|      2|#define ZEND_ISEMPTY			(1<<0)
  ------------------
44461|      2|		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  | 1003|      2|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      2|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  | 1108|      2|#define ZEND_ISEMPTY			(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		Z_OBJ_HT_P(container)->has_property(Z_OBJ_P(container), name, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
  ------------------
  |  |  524|      2|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  |  Branch (44461:107): [True: 2, Folded]
  ------------------
44462|       |
44463|      2|	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (44463:6): [Folded, False: 2]
  ------------------
44464|      0|		zend_tmp_string_release(tmp_name);
44465|      0|	}
44466|       |
44467|      2|isset_object_finish:
44468|       |
44469|       |
44470|       |
44471|       |
44472|      2|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      2|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      2|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 2, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      2|		} else { \
  |  | 5824|      2|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      2|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      2|		} \
  |  | 5827|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44473|      2|}
zend_execute.c:ZEND_HANDLE_EXCEPTION_SPEC_HANDLER:
 3399|  3.86k|{
 3400|  3.86k|	const zend_op *throw_op = EG(opline_before_exception);
  ------------------
  |  |   45|  3.86k|# define EG(v) (executor_globals.v)
  ------------------
 3401|       |
 3402|       |	/* Exception was thrown before executing any op */
 3403|  3.86k|	if (UNEXPECTED(!throw_op)) {
  ------------------
  |  |  457|  3.86k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3.86k]
  |  |  ------------------
  ------------------
 3404|      0|		ZEND_VM_DISPATCH_TO_HELPER(zend_dispatch_try_catch_finally_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX -1, 0));
  ------------------
  |  |  410|      0|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 3405|      0|	}
 3406|       |
 3407|  3.86k|	uint32_t throw_op_num = throw_op - EX(func)->op_array.opcodes;
  ------------------
  |  |  730|  3.86k|#define EX(element) 			((execute_data)->element)
  ------------------
 3408|  3.86k|	uint32_t current_try_catch_offset = -1;
 3409|       |
 3410|  3.86k|	if ((throw_op->opcode == ZEND_FREE || throw_op->opcode == ZEND_FE_FREE)
  ------------------
  |  |  193|  7.72k|#define ZEND_FREE                            70
  ------------------
              	if ((throw_op->opcode == ZEND_FREE || throw_op->opcode == ZEND_FE_FREE)
  ------------------
  |  |  249|  3.84k|#define ZEND_FE_FREE                        127
  ------------------
  |  Branch (3410:7): [True: 15, False: 3.84k]
  |  Branch (3410:40): [True: 1, False: 3.84k]
  ------------------
 3411|     16|		&& throw_op->extended_value & ZEND_FREE_ON_RETURN) {
  ------------------
  |  | 1112|     16|#define ZEND_FREE_ON_RETURN     (1<<0)
  ------------------
  |  Branch (3411:6): [True: 1, False: 15]
  ------------------
 3412|       |		/* exceptions thrown because of loop var destruction on return/break/...
 3413|       |		 * are logically thrown at the end of the foreach loop, so adjust the
 3414|       |		 * throw_op_num to the final loop variable FREE.
 3415|       |		 */
 3416|      1|		uint32_t new_throw_op_num = throw_op_num + throw_op->op2.opline_num;
 3417|      1|		cleanup_live_vars(execute_data, throw_op_num, new_throw_op_num);
 3418|      1|		throw_op_num = new_throw_op_num;
 3419|      1|	}
 3420|       |
 3421|       |	/* Find the innermost try/catch/finally the exception was thrown in */
 3422|  4.64k|	for (uint32_t i = 0; i < EX(func)->op_array.last_try_catch; i++) {
  ------------------
  |  |  730|  4.64k|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (3422:23): [True: 795, False: 3.85k]
  ------------------
 3423|    795|		zend_try_catch_element *try_catch = &EX(func)->op_array.try_catch_array[i];
  ------------------
  |  |  730|    795|#define EX(element) 			((execute_data)->element)
  ------------------
 3424|    795|		if (try_catch->try_op > throw_op_num) {
  ------------------
  |  Branch (3424:7): [True: 9, False: 786]
  ------------------
 3425|       |			/* further blocks will not be relevant... */
 3426|      9|			break;
 3427|      9|		}
 3428|    786|		if (throw_op_num < try_catch->catch_op || throw_op_num < try_catch->finally_end) {
  ------------------
  |  Branch (3428:7): [True: 591, False: 195]
  |  Branch (3428:45): [True: 157, False: 38]
  ------------------
 3429|    748|			current_try_catch_offset = i;
 3430|    748|		}
 3431|    786|	}
 3432|       |
 3433|  3.86k|	cleanup_unfinished_calls(execute_data, throw_op_num);
 3434|       |
 3435|  3.86k|	if (throw_op->result_type & (IS_VAR | IS_TMP_VAR)) {
  ------------------
  |  |  866|  3.86k|#define IS_VAR		(1<<2)
  ------------------
              	if (throw_op->result_type & (IS_VAR | IS_TMP_VAR)) {
  ------------------
  |  |  865|  3.86k|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (3435:6): [True: 916, False: 2.94k]
  ------------------
 3436|    916|		switch (throw_op->opcode) {
 3437|      1|			case ZEND_ADD_ARRAY_ELEMENT:
  ------------------
  |  |  195|      1|#define ZEND_ADD_ARRAY_ELEMENT               72
  ------------------
  |  Branch (3437:4): [True: 1, False: 915]
  ------------------
 3438|      4|			case ZEND_ADD_ARRAY_UNPACK:
  ------------------
  |  |  269|      4|#define ZEND_ADD_ARRAY_UNPACK               147
  ------------------
  |  Branch (3438:4): [True: 3, False: 913]
  ------------------
 3439|      5|			case ZEND_ROPE_INIT:
  ------------------
  |  |  177|      5|#define ZEND_ROPE_INIT                       54
  ------------------
  |  Branch (3439:4): [True: 1, False: 915]
  ------------------
 3440|      5|			case ZEND_ROPE_ADD:
  ------------------
  |  |  178|      5|#define ZEND_ROPE_ADD                        55
  ------------------
  |  Branch (3440:4): [True: 0, False: 916]
  ------------------
 3441|      5|				break; /* exception while building structures, live range handling will free those */
 3442|       |
 3443|    184|			case ZEND_FETCH_CLASS:
  ------------------
  |  |  231|    184|#define ZEND_FETCH_CLASS                    109
  ------------------
  |  Branch (3443:4): [True: 184, False: 732]
  ------------------
 3444|    184|			case ZEND_DECLARE_ANON_CLASS:
  ------------------
  |  |  268|    184|#define ZEND_DECLARE_ANON_CLASS             146
  ------------------
  |  Branch (3444:4): [True: 0, False: 916]
  ------------------
 3445|    184|				break; /* return value is zend_class_entry pointer */
 3446|       |
 3447|    727|			default:
  ------------------
  |  Branch (3447:4): [True: 727, False: 189]
  ------------------
 3448|       |				/* smart branch opcodes may not initialize result */
 3449|    727|				if (!zend_is_smart_branch(throw_op)) {
  ------------------
  |  Branch (3449:9): [True: 722, False: 5]
  ------------------
 3450|    722|					zval_ptr_dtor_nogc(EX_VAR(throw_op->result.var));
  ------------------
  |  |  755|    722|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    722|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3451|    722|				}
 3452|    916|		}
 3453|    916|	}
 3454|       |
 3455|  3.86k|	ZEND_VM_DISPATCH_TO_HELPER(zend_dispatch_try_catch_finally_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX current_try_catch_offset, throw_op_num));
  ------------------
  |  |  410|  3.86k|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|  3.86k|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 3456|  3.86k|}
zend_execute.c:zend_dispatch_try_catch_finally_helper_SPEC:
 3322|  4.00k|{
 3323|       |	/* May be NULL during generator closing (only finally blocks are executed) */
 3324|  4.00k|	zend_object *ex = EG(exception);
  ------------------
  |  |   45|  4.00k|# define EG(v) (executor_globals.v)
  ------------------
 3325|       |
 3326|       |	/* Walk try/catch/finally structures upwards, performing the necessary actions */
 3327|  4.01k|	for (; try_catch_offset != (uint32_t) -1; try_catch_offset--) {
  ------------------
  |  Branch (3327:9): [True: 747, False: 3.26k]
  ------------------
 3328|    747|		zend_try_catch_element *try_catch =
 3329|    747|			&EX(func)->op_array.try_catch_array[try_catch_offset];
  ------------------
  |  |  730|    747|#define EX(element) 			((execute_data)->element)
  ------------------
 3330|       |
 3331|    747|		if (op_num < try_catch->catch_op && ex) {
  ------------------
  |  Branch (3331:7): [True: 591, False: 156]
  |  Branch (3331:39): [True: 591, False: 0]
  ------------------
 3332|       |			/* Go to catch block */
 3333|    591|			cleanup_live_vars(execute_data, op_num, try_catch->catch_op);
 3334|    591|			ZEND_VM_JMP_EX(&EX(func)->op_array.opcodes[try_catch->catch_op], 0);
  ------------------
  |  | 5787|    591|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|    591|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|    591|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 591]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|    591|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|    591|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    591|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    591|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    591|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    591|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    591|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    591|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    591|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 591]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    591|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 591]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|    591|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    591|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|    591|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3334:4): [True: 0, False: 0]
  |  Branch (3334:4): [True: 0, False: 0]
  ------------------
 3335|       |
 3336|    591|		} else if (op_num < try_catch->finally_op) {
  ------------------
  |  Branch (3336:14): [True: 147, False: 9]
  ------------------
 3337|    147|			if (ex && zend_is_unwind_exit(ex)) {
  ------------------
  |  Branch (3337:8): [True: 147, False: 0]
  |  Branch (3337:14): [True: 1, False: 146]
  ------------------
 3338|       |				/* Don't execute finally blocks on exit (for now) */
 3339|      1|				continue;
 3340|      1|			}
 3341|       |
 3342|       |			/* Go to finally block */
 3343|    146|			zval *fast_call = EX_VAR(EX(func)->op_array.opcodes[try_catch->finally_end].op1.var);
  ------------------
  |  |  755|    146|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    146|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3344|    146|			cleanup_live_vars(execute_data, op_num, try_catch->finally_op);
 3345|    146|			Z_OBJ_P(fast_call) = EG(exception);
  ------------------
  |  | 1000|    146|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    146|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			Z_OBJ_P(fast_call) = EG(exception);
  ------------------
  |  |   45|    146|# define EG(v) (executor_globals.v)
  ------------------
 3346|    146|			EG(exception) = NULL;
  ------------------
  |  |   45|    146|# define EG(v) (executor_globals.v)
  ------------------
 3347|    146|			Z_OPLINE_NUM_P(fast_call) = (uint32_t)-1;
  ------------------
  |  |  690|    146|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|    146|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
 3348|    146|			ZEND_VM_JMP_EX(&EX(func)->op_array.opcodes[try_catch->finally_op], 0);
  ------------------
  |  | 5787|    146|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|    146|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|    146|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 146]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|    146|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|    146|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|    146|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|    146|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|    146|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|    146|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|    146|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|    146|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    146|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 146]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|    146|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 146]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|    146|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|    146|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|    146|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3348:4): [True: 0, False: 0]
  |  Branch (3348:4): [True: 0, False: 0]
  ------------------
 3349|       |
 3350|    146|		} else if (op_num < try_catch->finally_end) {
  ------------------
  |  Branch (3350:14): [True: 9, False: 0]
  ------------------
 3351|      9|			zval *fast_call = EX_VAR(EX(func)->op_array.opcodes[try_catch->finally_end].op1.var);
  ------------------
  |  |  755|      9|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      9|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3352|       |
 3353|       |			/* cleanup incomplete RETURN statement */
 3354|      9|			if (Z_OPLINE_NUM_P(fast_call) != (uint32_t)-1
  ------------------
  |  |  690|      9|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      9|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
  |  Branch (3354:8): [True: 1, False: 8]
  ------------------
 3355|      1|			 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              			 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  690|      1|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      1|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
              			 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (3355:8): [True: 1, False: 0]
  ------------------
 3356|      1|				zval *return_value = EX_VAR(EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3357|       |
 3358|      1|				zval_ptr_dtor(return_value);
 3359|      1|			}
 3360|       |
 3361|       |			/* Chain potential exception from wrapping finally block */
 3362|      9|			if (Z_OBJ_P(fast_call)) {
  ------------------
  |  | 1000|      9|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (999:25): [True: 8, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3363|      8|				if (ex) {
  ------------------
  |  Branch (3363:9): [True: 8, False: 0]
  ------------------
 3364|      8|					if (zend_is_unwind_exit(ex) || zend_is_graceful_exit(ex)) {
  ------------------
  |  Branch (3364:10): [True: 1, False: 7]
  |  Branch (3364:37): [True: 1, False: 6]
  ------------------
 3365|       |						/* discard the previously thrown exception */
 3366|      2|						OBJ_RELEASE(Z_OBJ_P(fast_call));
  ------------------
  |  |   44|      2|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 3367|      6|					} else {
 3368|      6|						zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3369|      6|					}
 3370|      8|				} else {
 3371|      0|					ex = EG(exception) = Z_OBJ_P(fast_call);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              					ex = EG(exception) = Z_OBJ_P(fast_call);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3372|      0|				}
 3373|      8|			}
 3374|      9|		}
 3375|    747|	}
 3376|       |
 3377|       |	/* Uncaught exception */
 3378|       |
 3379|       |	/* Don't use 0 because it gets replaced by zend_vm_gen.php. */
 3380|  3.26k|	if (zend_observer_fcall_op_array_extension != -1) {
  ------------------
  |  Branch (3380:6): [True: 0, False: 3.26k]
  ------------------
 3381|      0|		zend_observer_fcall_end(execute_data, NULL);
 3382|      0|	}
 3383|  3.26k|	cleanup_live_vars(execute_data, op_num, 0);
 3384|  3.26k|	if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
  ------------------
  |  |  457|  3.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 17, False: 3.24k]
  |  |  ------------------
  ------------------
 3385|     17|		zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|     17|# define EXECUTE_DATA_C     execute_data
  ------------------
 3386|     17|		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|     17|# define EG(v) (executor_globals.v)
  ------------------
              		EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  ------------------
 3387|     17|		zend_generator_close(generator, 1);
 3388|     17|		ZEND_VM_RETURN();
  ------------------
  |  |  406|     17|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|     17|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 3389|  3.24k|	} else {
 3390|       |		/* We didn't execute RETURN, and have to initialize return_value */
 3391|  3.24k|		if (EX(return_value)) {
  ------------------
  |  |  730|  3.24k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (730:24): [True: 1.56k, False: 1.68k]
  |  |  ------------------
  ------------------
 3392|  1.56k|			ZVAL_UNDEF(EX(return_value));
  ------------------
  |  | 1055|  1.56k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  1.56k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  1.56k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.56k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  1.56k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  1.56k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1.56k]
  |  |  ------------------
  ------------------
 3393|  1.56k|		}
 3394|  3.24k|		ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|  3.24k|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 3395|  3.24k|	}
 3396|  3.26k|}
zend_execute.c:ZEND_ASSERT_CHECK_SPEC_HANDLER:
 3562|    177|{
 3563|    177|	USE_OPLINE
 3564|       |
 3565|    177|	if (EG(assertions) <= 0) {
  ------------------
  |  |   45|    177|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3565:6): [True: 6, False: 171]
  ------------------
 3566|      6|		zend_op *target = OP_JMP_ADDR(opline, opline->op2);
  ------------------
  |  |  797|      6|	ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset)
  |  |  ------------------
  |  |  |  |  768|      6|	((zend_op*)(((char*)(base)) + (int)offset))
  |  |  ------------------
  ------------------
 3567|      6|		if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      6|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 3568|      6|			ZVAL_TRUE(EX_VAR(opline->result.var));
  ------------------
  |  | 1067|      6|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      6|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      6|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 3569|      6|		}
 3570|      6|		ZEND_VM_JMP_EX(target, 0);
  ------------------
  |  | 5787|      6|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      6|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 6]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      6|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      6|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      6|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      6|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      6|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      6|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      6|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3570:3): [True: 0, False: 0]
  |  Branch (3570:3): [True: 0, False: 0]
  ------------------
 3571|    171|	} else {
 3572|    171|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|    171|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|    171|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    171|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 171]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    171|	} else { \
  |  |  |  | 5761|    171|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    171|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|    171|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    171|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|    171|	} \
  |  |  |  | 5764|    171|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    171|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3572:3): [True: 0, False: 171]
  |  Branch (3572:3): [True: 171, False: 0]
  ------------------
 3573|    171|	}
 3574|    177|}
zend_execute.c:ZEND_JMP_SET_SPEC_TMP_HANDLER:
17864|     12|{
17865|     12|	USE_OPLINE
17866|     12|	zval *value;
17867|     12|	zend_reference *ref = NULL;
17868|     12|	bool ret;
17869|       |
17870|     12|	SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17871|     12|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     12|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     12|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17872|       |
17873|     12|	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
  ------------------
  |  |  865|     12|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|     24|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17873:7): [Folded, False: 0]
  |  Branch (17873:31): [Folded, False: 0]
  ------------------
17874|      0|		if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17874:7): [Folded, False: 0]
  ------------------
17875|      0|			ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
17876|      0|		}
17877|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17878|      0|	}
17879|       |
17880|     12|	ret = i_zend_is_true(value);
17881|       |
17882|     12|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
17883|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17884|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17885|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17885:3): [True: 0, False: 0]
  |  Branch (17885:3): [True: 0, False: 0]
  ------------------
17886|      0|	}
17887|       |
17888|     12|	if (ret) {
  ------------------
  |  Branch (17888:6): [True: 2, False: 10]
  ------------------
17889|      2|		zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17890|       |
17891|      2|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17892|      2|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17892:7): [Folded, False: 2]
  ------------------
17893|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17894|      2|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17894:14): [Folded, False: 2]
  ------------------
17895|      0|			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17896|      2|		} else if (IS_TMP_VAR == IS_VAR && ref) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_VAR && ref) {
  ------------------
  |  |  866|      4|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17896:14): [Folded, False: 2]
  |  Branch (17896:38): [True: 0, False: 0]
  ------------------
17897|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17898|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17899|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17900|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17901|      0|			}
17902|      0|		}
17903|      2|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 2]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17903:3): [True: 0, False: 0]
  |  Branch (17903:3): [True: 0, False: 0]
  ------------------
17904|      2|	}
17905|       |
17906|     10|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17907|     10|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     10|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     10|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     10|	} else { \
  |  |  |  | 5761|     10|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     10|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     10|	} \
  |  |  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17907:2): [True: 0, False: 10]
  |  Branch (17907:2): [True: 10, False: 0]
  ------------------
17908|     10|}
zend_execute.c:ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER:
49561|     56|{
49562|     56|	USE_OPLINE
49563|     56|	zval *var = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     56|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     56|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49564|       |
49565|     56|	if (Z_REFCOUNTED_P(var)) {
  ------------------
  |  |  942|     56|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|     56|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|     56|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 49, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49566|     49|		zend_refcounted *garbage = Z_COUNTED_P(var);
  ------------------
  |  |  708|     49|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     49|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
49567|       |
49568|     49|		ZVAL_UNDEF(var);
  ------------------
  |  | 1055|     49|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     49|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     49|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     49|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     49|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     49|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 49]
  |  |  ------------------
  ------------------
49569|     49|		SAVE_OPLINE();
  ------------------
  |  |  428|     49|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     49|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49570|     49|		GC_DTOR(garbage);
  ------------------
  |  |  726|     49|	do { \
  |  |  727|     49|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  728|     49|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (728:7): [True: 19, False: 30]
  |  |  ------------------
  |  |  729|     19|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  730|     30|		} else { \
  |  |  731|     30|			gc_check_possible_root((zend_refcounted *)_p); \
  |  |  732|     30|		} \
  |  |  733|     49|	} while (0)
  |  |  ------------------
  |  |  |  Branch (733:11): [Folded, False: 49]
  |  |  ------------------
  ------------------
49571|     49|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     49|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     49|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     49|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 49, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     49|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     49|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     49|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     49|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     49|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     49|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49571:3): [True: 0, False: 0]
  |  Branch (49571:3): [True: 0, False: 0]
  ------------------
49572|     49|	} else {
49573|      7|		ZVAL_UNDEF(var);
  ------------------
  |  | 1055|      7|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      7|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
49574|      7|	}
49575|      7|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     56|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      7|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      7|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      7|	} else { \
  |  |  |  | 5761|      7|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      7|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      7|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      7|	} \
  |  |  |  | 5764|      7|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49575:2): [True: 0, False: 7]
  |  Branch (49575:2): [True: 7, False: 0]
  ------------------
49576|      7|}
zend_execute.c:ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_HANDLER:
49619|      4|{
49620|      4|	USE_OPLINE
49621|      4|	zval *value;
49622|       |
49623|      4|	value = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49624|      4|	if (!(0)) {
  ------------------
  |  Branch (49624:6): [True: 4, Folded]
  ------------------
49625|      4|		if (Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  607|      8|#define IS_NULL						1
  ------------------
  |  Branch (49625:7): [True: 1, False: 3]
  ------------------
49626|      1|		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (49626:8): [True: 1, False: 0]
  |  Branch (49626:29): [True: 0, False: 0]
  ------------------
49627|      1|			ZEND_VM_SMART_BRANCH_TRUE();
  ------------------
  |  | 5854|      1|#define ZEND_VM_SMART_BRANCH_TRUE() do { \
  |  | 5855|      1|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5856|      0|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5857|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5858|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5859|      1|		} else { \
  |  | 5860|      1|			ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5861|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5862|      1|		} \
  |  | 5863|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5864|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5864:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49628|      3|		} else {
49629|      3|			ZEND_VM_SMART_BRANCH_FALSE();
  ------------------
  |  | 5877|      3|#define ZEND_VM_SMART_BRANCH_FALSE() do { \
  |  | 5878|      3|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5879|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5880|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5881|      0|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5882|      3|		} else { \
  |  | 5883|      3|			ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5884|      3|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      3|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5885|      3|		} \
  |  | 5886|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5887|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5887:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49630|      3|		}
49631|      4|	} else {
49632|      0|		bool result;
49633|       |
49634|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49635|      0|		result = !i_zend_is_true(value);
49636|      0|		ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      0|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      0|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 0, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      0|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49637|      0|	}
49638|      4|}
zend_execute.c:ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_HANDLER:
49641|      1|{
49642|      1|	USE_OPLINE
49643|      1|	zval *value;
49644|       |
49645|      1|	value = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49646|      1|	if (!(1)) {
  ------------------
  |  Branch (49646:6): [Folded, False: 1]
  ------------------
49647|      0|		if (Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) > IS_NULL &&
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (49647:7): [True: 0, False: 0]
  ------------------
49648|      0|		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (49648:8): [True: 0, False: 0]
  |  Branch (49648:29): [True: 0, False: 0]
  ------------------
49649|      0|			ZEND_VM_SMART_BRANCH_TRUE();
  ------------------
  |  | 5854|      0|#define ZEND_VM_SMART_BRANCH_TRUE() do { \
  |  | 5855|      0|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5856|      0|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5857|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5858|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5859|      0|		} else { \
  |  | 5860|      0|			ZVAL_TRUE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5861|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5862|      0|		} \
  |  | 5863|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5864|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5864:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49650|      0|		} else {
49651|      0|			ZEND_VM_SMART_BRANCH_FALSE();
  ------------------
  |  | 5877|      0|#define ZEND_VM_SMART_BRANCH_FALSE() do { \
  |  | 5878|      0|		if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5879|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5880|      0|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5881|      0|			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5882|      0|		} else { \
  |  | 5883|      0|			ZVAL_FALSE(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5884|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5885|      0|		} \
  |  | 5886|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5887|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5887:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49652|      0|		}
49653|      1|	} else {
49654|      1|		bool result;
49655|       |
49656|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49657|      1|		result = !i_zend_is_true(value);
49658|      1|		ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      1|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      1|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      1|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49659|      1|	}
49660|      1|}
zend_execute.c:ZEND_FETCH_LIST_W_SPEC_VAR_CONST_HANDLER:
24416|     17|{
24417|     17|	USE_OPLINE
24418|     17|	zval *container, *dim;
24419|       |
24420|     17|	SAVE_OPLINE();
  ------------------
  |  |  428|     17|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
24421|     17|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     17|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     17|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24422|     17|	dim = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     17|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
24423|       |
24424|     17|	if (IS_VAR == IS_VAR
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR
  ------------------
  |  |  866|     34|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (24424:6): [True: 17, Folded]
  ------------------
24425|     17|		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
  ------------------
  |  |  629|     34|#define IS_INDIRECT             	12
  ------------------
  |  Branch (24425:6): [True: 17, False: 0]
  ------------------
24426|     17|		&& UNEXPECTED(!Z_ISREF_P(container))
  ------------------
  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 15]
  |  |  ------------------
  ------------------
24427|     17|	) {
24428|      2|		zend_error(E_NOTICE, "Attempting to set reference to non referenceable value");
  ------------------
  |  |   25|      2|#define E_NOTICE			(1<<3L)
  ------------------
24429|      2|		zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24430|     15|	} else {
24431|     15|		zend_fetch_dimension_address_W(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  864|     15|#define IS_CONST	(1<<0)
  ------------------
              		zend_fetch_dimension_address_W(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     15|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     15|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_W(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     15|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     15|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
24432|     15|	}
24433|       |
24434|       |
24435|     17|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     17|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     17|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     17|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 17, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     17|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     17|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     17|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     17|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     17|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (24435:2): [True: 0, False: 0]
  |  Branch (24435:2): [True: 0, False: 0]
  ------------------
24436|     17|}
zend_execute.c:ZEND_FETCH_LIST_W_SPEC_VAR_TMP_HANDLER:
27124|     10|{
27125|     10|	USE_OPLINE
27126|     10|	zval *container, *dim;
27127|       |
27128|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
27129|     10|	container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27130|     10|	dim = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27131|       |
27132|     10|	if (IS_VAR == IS_VAR
  ------------------
  |  |  866|     10|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR == IS_VAR
  ------------------
  |  |  866|     20|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (27132:6): [True: 10, Folded]
  ------------------
27133|     10|		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
  ------------------
  |  |  669|     10|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
  ------------------
  |  |  629|     20|#define IS_INDIRECT             	12
  ------------------
  |  Branch (27133:6): [True: 10, False: 0]
  ------------------
27134|     10|		&& UNEXPECTED(!Z_ISREF_P(container))
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
27135|     10|	) {
27136|      0|		zend_error(E_NOTICE, "Attempting to set reference to non referenceable value");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
27137|      0|		zend_fetch_dimension_address_LIST_r(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		zend_fetch_dimension_address_LIST_r(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_LIST_r(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27138|     10|	} else {
27139|     10|		zend_fetch_dimension_address_W(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  865|     10|#define IS_TMP_VAR	(1<<1)
  ------------------
              		zend_fetch_dimension_address_W(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     10|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     10|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_fetch_dimension_address_W(container, dim, IS_TMP_VAR OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
27140|     10|	}
27141|       |
27142|     10|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
27143|     10|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     10|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     10|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     10|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 10, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     10|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     10|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     10|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     10|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     10|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (27143:2): [True: 0, False: 0]
  |  Branch (27143:2): [True: 0, False: 0]
  ------------------
27144|     10|}
zend_execute.c:ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER:
30247|     18|{
30248|     18|	USE_OPLINE
30249|     18|	zval *var_ptr;
30250|       |
30251|     18|	var_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     18|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     18|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30252|     18|	if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 15]
  |  |  ------------------
  ------------------
30253|      3|		if (UNEXPECTED(Z_REFCOUNT_P(var_ptr) == 1)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
30254|      1|			ZVAL_UNREF(var_ptr);
  ------------------
  |  | 1499|      1|#define ZVAL_UNREF(z) do {								\
  |  | 1500|      1|		zval *_z = (z);									\
  |  | 1501|      1|		zend_reference *ref;							\
  |  | 1502|      1|		ZEND_ASSERT(Z_ISREF_P(_z));						\
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1503|      1|		ref = Z_REF_P(_z);								\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1504|      1|		ZVAL_COPY_VALUE(_z, &ref->val);					\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1505|      1|		efree_size(ref, sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  138|      1|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1506|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1506:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (30254:4): [True: 0, False: 1]
  |  Branch (30254:4): [True: 1, False: 0]
  ------------------
30255|      1|		}
30256|      3|	}
30257|       |
30258|     18|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     18|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     18|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     18|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     18|	} else { \
  |  |  |  | 5761|     18|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     18|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     18|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     18|	} \
  |  |  |  | 5764|     18|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30258:2): [True: 0, False: 18]
  |  Branch (30258:2): [True: 18, False: 0]
  ------------------
30259|     18|}
zend_execute.c:ZEND_FETCH_CLASS_NAME_SPEC_TMP_HANDLER:
18234|      1|{
18235|      1|	uint32_t fetch_type;
18236|      1|	zend_class_entry *called_scope, *scope;
18237|      1|	USE_OPLINE
18238|       |
18239|      1|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (18239:6): [True: 1, Folded]
  ------------------
18240|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18241|      1|		zval *op = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18242|      1|		if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18243|      0|			ZVAL_DEREF(op);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18244|      0|			if (Z_TYPE_P(op) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (18244:8): [True: 0, False: 0]
  ------------------
18245|      0|				zend_type_error("Cannot use \"::class\" on %s", zend_zval_value_name(op));
18246|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18247|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18248|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18248:5): [True: 0, False: 0]
  |  Branch (18248:5): [True: 0, False: 0]
  ------------------
18249|      0|			}
18250|      0|		}
18251|       |
18252|      1|		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op)->name);
  ------------------
  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      1|		zval *__z = (z);								\
  |  | 1114|      1|		zend_string *__s = (s);							\
  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      1|		/* interned strings support */					\
  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 0]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18253|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18254|      1|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18254:3): [True: 0, False: 0]
  |  Branch (18254:3): [True: 0, False: 0]
  ------------------
18255|      1|	}
18256|       |
18257|      0|	fetch_type = opline->op1.num;
18258|      0|	scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
18259|      0|	if (UNEXPECTED(scope == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18260|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18261|      0|		zend_throw_error(NULL, "Cannot use \"%s\" in the global scope",
18262|      0|			fetch_type == ZEND_FETCH_CLASS_SELF ? "self" :
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (18262:4): [True: 0, False: 0]
  ------------------
18263|      0|			fetch_type == ZEND_FETCH_CLASS_PARENT ? "parent" : "static");
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (18263:4): [True: 0, False: 0]
  ------------------
18264|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18265|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18265:3): [True: 0, False: 0]
  |  Branch (18265:3): [True: 0, False: 0]
  ------------------
18266|      0|	}
18267|       |
18268|      0|	switch (fetch_type) {
18269|      0|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (18269:3): [True: 0, False: 0]
  ------------------
18270|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18271|      0|			break;
18272|      0|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (18272:3): [True: 0, False: 0]
  ------------------
18273|      0|			if (UNEXPECTED(scope->parent == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18274|      0|				SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18275|      0|				zend_throw_error(NULL,
18276|      0|					"Cannot use \"parent\" when current class scope has no parent");
18277|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18278|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18278:5): [True: 0, False: 0]
  |  Branch (18278:5): [True: 0, False: 0]
  ------------------
18279|      0|			}
18280|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->parent->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18281|      0|			break;
18282|      0|		case ZEND_FETCH_CLASS_STATIC:
  ------------------
  |  | 1045|      0|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (18282:3): [True: 0, False: 0]
  ------------------
18283|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (18283:8): [True: 0, False: 0]
  ------------------
18284|      0|				called_scope = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
18285|      0|			} else {
18286|      0|				called_scope = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
18287|      0|			}
18288|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18289|      0|			break;
18290|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (18290:3): [True: 0, False: 0]
  |  Branch (18290:12): [Folded, False: 0]
  |  Branch (18290:12): [Folded, False: 0]
  ------------------
18291|      0|	}
18292|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18292:2): [True: 0, False: 0]
  |  Branch (18292:2): [True: 0, False: 0]
  ------------------
18293|      0|}
zend_execute.c:ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_HANDLER:
32827|     13|{
32828|     13|	uint32_t fetch_type;
32829|     13|	zend_class_entry *called_scope, *scope;
32830|     13|	USE_OPLINE
32831|       |
32832|     13|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     13|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     13|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (32832:6): [Folded, False: 13]
  ------------------
32833|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32834|      0|		zval *op = NULL;
32835|      0|		if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
32836|      0|			ZVAL_DEREF(op);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32837|      0|			if (Z_TYPE_P(op) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (32837:8): [True: 0, False: 0]
  ------------------
32838|      0|				zend_type_error("Cannot use \"::class\" on %s", zend_zval_value_name(op));
32839|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32840|       |
32841|       |
32842|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32842:5): [True: 0, False: 0]
  |  Branch (32842:5): [True: 0, False: 0]
  ------------------
32843|      0|			}
32844|      0|		}
32845|       |
32846|      0|		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op)->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32847|       |
32848|       |
32849|      0|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      0|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (32849:3): [True: 0, False: 0]
  |  Branch (32849:3): [True: 0, False: 0]
  ------------------
32850|      0|	}
32851|       |
32852|     13|	fetch_type = opline->op1.num;
32853|     13|	scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  ------------------
32854|     13|	if (UNEXPECTED(scope == NULL)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 9]
  |  |  ------------------
  ------------------
32855|      4|		SAVE_OPLINE();
  ------------------
  |  |  428|      4|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32856|      4|		zend_throw_error(NULL, "Cannot use \"%s\" in the global scope",
32857|      4|			fetch_type == ZEND_FETCH_CLASS_SELF ? "self" :
  ------------------
  |  | 1043|      4|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (32857:4): [True: 2, False: 2]
  ------------------
32858|      4|			fetch_type == ZEND_FETCH_CLASS_PARENT ? "parent" : "static");
  ------------------
  |  | 1044|      2|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (32858:4): [True: 1, False: 1]
  ------------------
32859|      4|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
32860|      4|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32860:3): [True: 0, False: 4]
  |  Branch (32860:3): [True: 4, False: 0]
  ------------------
32861|      4|	}
32862|       |
32863|      9|	switch (fetch_type) {
32864|      3|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      3|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (32864:3): [True: 3, False: 6]
  ------------------
32865|      3|			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->name);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      3|		zend_string *__s = (s);							\
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 2]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
32866|      3|			break;
32867|      1|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      1|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (32867:3): [True: 1, False: 8]
  ------------------
32868|      1|			if (UNEXPECTED(scope->parent == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
32869|      1|				SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
32870|      1|				zend_throw_error(NULL,
32871|      1|					"Cannot use \"parent\" when current class scope has no parent");
32872|      1|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
32873|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (32873:5): [True: 0, False: 1]
  |  Branch (32873:5): [True: 1, False: 0]
  ------------------
32874|      1|			}
32875|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->parent->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
32876|      0|			break;
32877|      5|		case ZEND_FETCH_CLASS_STATIC:
  ------------------
  |  | 1045|      5|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (32877:3): [True: 5, False: 4]
  ------------------
32878|      5|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      5|#define IS_OBJECT					8
  ------------------
  |  Branch (32878:8): [True: 3, False: 2]
  ------------------
32879|      3|				called_scope = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      3|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
32880|      3|			} else {
32881|      2|				called_scope = Z_CE(EX(This));
  ------------------
  |  | 1046|      2|#define Z_CE(zval)					(zval).value.ce
  ------------------
32882|      2|			}
32883|      5|			ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name);
  ------------------
  |  | 1112|      5|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      5|		zval *__z = (z);								\
  |  | 1114|      5|		zend_string *__s = (s);							\
  |  | 1115|      5|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      5|		/* interned strings support */					\
  |  | 1117|      5|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 4]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
32884|      5|			break;
32885|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (32885:3): [True: 0, False: 9]
  |  Branch (32885:12): [Folded, False: 0]
  |  Branch (32885:12): [Folded, False: 0]
  ------------------
32886|      9|	}
32887|      8|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      9|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (32887:2): [True: 0, False: 8]
  |  Branch (32887:2): [True: 8, False: 0]
  ------------------
32888|      8|}
zend_execute.c:ZEND_FETCH_CLASS_NAME_SPEC_CV_HANDLER:
40827|     13|{
40828|     13|	uint32_t fetch_type;
40829|     13|	zend_class_entry *called_scope, *scope;
40830|     13|	USE_OPLINE
40831|       |
40832|     13|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|     13|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|     13|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (40832:6): [True: 13, Folded]
  ------------------
40833|     13|		SAVE_OPLINE();
  ------------------
  |  |  428|     13|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40834|     13|		zval *op = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     13|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     13|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40835|     13|		if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 10]
  |  |  ------------------
  ------------------
40836|      3|			ZVAL_DEREF(op);
  ------------------
  |  | 1474|      3|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      3|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
40837|      3|			if (Z_TYPE_P(op) != IS_OBJECT) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op) != IS_OBJECT) {
  ------------------
  |  |  614|      3|#define IS_OBJECT					8
  ------------------
  |  Branch (40837:8): [True: 2, False: 1]
  ------------------
40838|      2|				zend_type_error("Cannot use \"::class\" on %s", zend_zval_value_name(op));
40839|      2|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
40840|       |
40841|       |
40842|      2|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40842:5): [True: 0, False: 2]
  |  Branch (40842:5): [True: 2, False: 0]
  ------------------
40843|      2|			}
40844|      3|		}
40845|       |
40846|     11|		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op)->name);
  ------------------
  |  | 1112|     11|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     11|		zval *__z = (z);								\
  |  | 1114|     11|		zend_string *__s = (s);							\
  |  | 1115|     11|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     11|		/* interned strings support */					\
  |  | 1117|     11|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 10, False: 1]
  |  |  ------------------
  |  | 1118|     10|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     10|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     10|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
40847|       |
40848|       |
40849|     11|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     11|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     11|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     11|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 11, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     11|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     11|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     11|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     11|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40849:3): [True: 0, False: 0]
  |  Branch (40849:3): [True: 0, False: 0]
  ------------------
40850|     11|	}
40851|       |
40852|      0|	fetch_type = opline->op1.num;
40853|      0|	scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
40854|      0|	if (UNEXPECTED(scope == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40855|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40856|      0|		zend_throw_error(NULL, "Cannot use \"%s\" in the global scope",
40857|      0|			fetch_type == ZEND_FETCH_CLASS_SELF ? "self" :
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (40857:4): [True: 0, False: 0]
  ------------------
40858|      0|			fetch_type == ZEND_FETCH_CLASS_PARENT ? "parent" : "static");
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (40858:4): [True: 0, False: 0]
  ------------------
40859|      0|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40860|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40860:3): [True: 0, False: 0]
  |  Branch (40860:3): [True: 0, False: 0]
  ------------------
40861|      0|	}
40862|       |
40863|      0|	switch (fetch_type) {
40864|      0|		case ZEND_FETCH_CLASS_SELF:
  ------------------
  |  | 1043|      0|#define ZEND_FETCH_CLASS_SELF		1
  ------------------
  |  Branch (40864:3): [True: 0, False: 0]
  ------------------
40865|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40866|      0|			break;
40867|      0|		case ZEND_FETCH_CLASS_PARENT:
  ------------------
  |  | 1044|      0|#define ZEND_FETCH_CLASS_PARENT		2
  ------------------
  |  Branch (40867:3): [True: 0, False: 0]
  ------------------
40868|      0|			if (UNEXPECTED(scope->parent == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40869|      0|				SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40870|      0|				zend_throw_error(NULL,
40871|      0|					"Cannot use \"parent\" when current class scope has no parent");
40872|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40873|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40873:5): [True: 0, False: 0]
  |  Branch (40873:5): [True: 0, False: 0]
  ------------------
40874|      0|			}
40875|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->parent->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40876|      0|			break;
40877|      0|		case ZEND_FETCH_CLASS_STATIC:
  ------------------
  |  | 1045|      0|#define ZEND_FETCH_CLASS_STATIC		3
  ------------------
  |  Branch (40877:3): [True: 0, False: 0]
  ------------------
40878|      0|			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (40878:8): [True: 0, False: 0]
  ------------------
40879|      0|				called_scope = Z_OBJCE(EX(This));
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
40880|      0|			} else {
40881|      0|				called_scope = Z_CE(EX(This));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
40882|      0|			}
40883|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40884|      0|			break;
40885|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40885:3): [True: 0, False: 0]
  |  Branch (40885:12): [Folded, False: 0]
  |  Branch (40885:12): [Folded, False: 0]
  ------------------
40886|      0|	}
40887|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40887:2): [True: 0, False: 0]
  |  Branch (40887:2): [True: 0, False: 0]
  ------------------
40888|      0|}
zend_execute.c:ZEND_CALL_TRAMPOLINE_SPEC_HANDLER:
 3577|  1.33k|{
 3578|  1.33k|	zend_array *args = NULL;
 3579|  1.33k|	zend_function *fbc = EX(func);
  ------------------
  |  |  730|  1.33k|#define EX(element) 			((execute_data)->element)
  ------------------
 3580|  1.33k|	zval *ret = EX(return_value);
  ------------------
  |  |  730|  1.33k|#define EX(element) 			((execute_data)->element)
  ------------------
 3581|  1.33k|	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_EXTRA_NAMED_PARAMS);
  ------------------
  |  |  732|  1.33k|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|  1.33k|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.33k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_EXTRA_NAMED_PARAMS);
  ------------------
  |  |  662|  1.33k|#define ZEND_CALL_NESTED             (0 << 17)
  ------------------
              	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_EXTRA_NAMED_PARAMS);
  ------------------
  |  |  663|  1.33k|#define ZEND_CALL_TOP                (1 << 17)
  ------------------
              	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_EXTRA_NAMED_PARAMS);
  ------------------
  |  |  667|  1.33k|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
              	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS | ZEND_CALL_HAS_EXTRA_NAMED_PARAMS);
  ------------------
  |  |  673|  1.33k|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
 3582|  1.33k|	uint32_t num_args = EX_NUM_ARGS();
  ------------------
  |  |  734|  1.33k|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|  1.33k|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 3583|  1.33k|	zend_execute_data *call;
 3584|       |
 3585|  1.33k|	SAVE_OPLINE();
  ------------------
  |  |  428|  1.33k|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|  1.33k|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3586|       |
 3587|  1.33k|	if (num_args) {
  ------------------
  |  Branch (3587:6): [True: 670, False: 669]
  ------------------
 3588|    670|		zval *p = ZEND_CALL_ARG(execute_data, 1);
  ------------------
  |  |  728|    670|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|    670|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|    670|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3589|    670|		zval *end = p + num_args;
 3590|       |
 3591|    670|		args = zend_new_array(num_args);
  ------------------
  |  |  342|    670|	_zend_new_array(size)
  ------------------
 3592|    670|		zend_hash_real_init_packed(args);
 3593|    670|		ZEND_HASH_FILL_PACKED(args) {
  ------------------
  |  | 1542|    670|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|    670|		HashTable *__fill_ht = (ht); \
  |  | 1544|    670|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|    670|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|    670|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|    670|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (3593:3): [True: 0, False: 670]
  |  Branch (3593:3): [True: 670, False: 0]
  ------------------
 3594|  2.00k|			do {
 3595|  2.00k|				ZEND_HASH_FILL_ADD(p);
  ------------------
  |  | 1584|  2.00k|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|  2.00k|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|  2.00k|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|  2.00k|	do {												\
  |  |  |  |  |  | 1417|  2.00k|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|  2.00k|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|  2.00k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  2.00k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  2.00k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|  2.00k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  2.00k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  2.00k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|  2.00k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|  2.00k|	do {												\
  |  |  |  |  |  |  |  | 1408|  2.00k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|  2.00k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|  2.00k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|  2.00k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|  2.00k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|  2.00k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|  2.00k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2.00k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|  2.00k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 2.00k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|  2.00k|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|  2.00k|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|  2.00k|		__fill_val++; \
  |  |  |  | 1581|  2.00k|		__fill_idx++; \
  |  |  |  | 1582|  2.00k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 2.00k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|  2.00k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 2.00k]
  |  |  ------------------
  ------------------
 3596|  2.00k|				p++;
 3597|  2.00k|			} while (p != end);
  ------------------
  |  Branch (3597:13): [True: 1.33k, False: 670]
  ------------------
 3598|    670|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|    670|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|    670|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|    670|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|    670|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|    670|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|    670|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|    670|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 670]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|    670|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 670]
  |  |  ------------------
  ------------------
 3599|    670|	}
 3600|       |
 3601|  1.33k|	call = execute_data;
 3602|  1.33k|	execute_data = EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|  1.33k|# define EG(v) (executor_globals.v)
  ------------------
              	execute_data = EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|  1.33k|#define EX(element) 			((execute_data)->element)
  ------------------
 3603|       |
 3604|  1.33k|	call->func = (fbc->op_array.fn_flags & ZEND_ACC_STATIC) ? fbc->op_array.scope->__callstatic : fbc->op_array.scope->__call;
  ------------------
  |  |  227|  1.33k|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (3604:15): [True: 3, False: 1.33k]
  ------------------
 3605|  1.33k|	ZEND_ASSERT(zend_vm_calc_used_stack(2, call->func) <= (size_t)(((char*)EG(vm_stack_end)) - (char*)call));
  ------------------
  |  |  112|  1.33k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3605:2): [True: 0, False: 1.33k]
  |  Branch (3605:2): [True: 1.33k, False: 0]
  ------------------
 3606|  1.33k|	ZEND_CALL_NUM_ARGS(call) = 2;
  ------------------
  |  |  712|  1.33k|	(call)->This.u2.num_args
  ------------------
 3607|       |
 3608|  1.33k|	ZVAL_STR(ZEND_CALL_ARG(call, 1), fbc->common.function_name);
  ------------------
  |  | 1088|  1.33k|#define ZVAL_STR(z, s) do {						\
  |  | 1089|  1.33k|		zval *__z = (z);						\
  |  | 1090|  1.33k|		zend_string *__s = (s);					\
  |  | 1091|  1.33k|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|  1.33k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  1.33k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|  1.33k|		/* interned strings support */			\
  |  | 1093|  1.33k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|  1.33k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.33k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 1.33k]
  |  |  ------------------
  |  | 1094|  1.33k|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|  1.33k|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|  2.67k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.33k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.33k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|  1.33k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|  1.33k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 1.33k]
  |  |  ------------------
  ------------------
 3609|       |
 3610|  1.33k|	zval *call_args = ZEND_CALL_ARG(call, 2);
  ------------------
  |  |  728|  1.33k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|  1.33k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  1.33k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3611|  1.33k|	if (args) {
  ------------------
  |  Branch (3611:6): [True: 670, False: 669]
  ------------------
 3612|    670|		ZVAL_ARR(call_args, args);
  ------------------
  |  | 1125|    670|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|    670|		zend_array *__arr = (a);				\
  |  | 1127|    670|		zval *__z = (z);						\
  |  | 1128|    670|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|    670|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    670|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|    670|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|    670|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    670|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|    670|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|    670|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    670|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    670|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    670|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    670|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|    670|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 670]
  |  |  ------------------
  ------------------
 3613|    670|	} else {
 3614|    669|		ZVAL_EMPTY_ARRAY(call_args);
  ------------------
  |  |   89|    669|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|    669|		zval *__z = (z);								\
  |  |   91|    669|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|    669|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    669|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|    669|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|    669|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    669|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|    669|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|    669|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 669]
  |  |  ------------------
  ------------------
 3615|    669|	}
 3616|  1.33k|	if (UNEXPECTED(call_info & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|  1.33k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1.33k]
  |  |  ------------------
  ------------------
 3617|      0|		if (zend_hash_num_elements(Z_ARRVAL_P(call_args)) == 0) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3617:7): [True: 0, False: 0]
  ------------------
 3618|      0|			GC_ADDREF(call->extra_named_params);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3619|      0|			ZVAL_ARR(call_args, call->extra_named_params);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3620|      0|		} else {
 3621|      0|			SEPARATE_ARRAY(call_args);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3622|      0|			zend_hash_copy(Z_ARRVAL_P(call_args), call->extra_named_params, zval_add_ref);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3623|      0|		}
 3624|      0|	}
 3625|  1.33k|	zend_free_trampoline(fbc);
  ------------------
  |  |  344|  1.33k|#define zend_free_trampoline(func) do { \
  |  |  345|  1.33k|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|  1.33k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 5, False: 1.33k]
  |  |  ------------------
  |  |  346|      5|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      5|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|  1.33k|		} else { \
  |  |  349|  1.33k|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|  1.33k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.33k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.33k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  1.33k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  1.33k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|  1.33k|		} \
  |  |  351|  1.33k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 1.33k]
  |  |  ------------------
  ------------------
 3626|  1.33k|	fbc = call->func;
 3627|       |
 3628|  1.33k|	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
  ------------------
  |  |  456|  1.33k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1.33k, False: 0]
  |  |  ------------------
  ------------------
 3629|  1.33k|		if (UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
  ------------------
  |  |  457|  2.67k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 1.32k]
  |  |  |  Branch (457:52): [True: 0, False: 1.33k]
  |  |  ------------------
  ------------------
 3630|     11|			init_func_run_time_cache(&fbc->op_array);
 3631|     11|		}
 3632|  1.33k|		execute_data = call;
 3633|  1.33k|		i_init_func_execute_data(&fbc->op_array, ret, 0 EXECUTE_DATA_CC);
  ------------------
  |  |   89|  1.33k|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|  1.33k|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 3634|  1.33k|		if (EXPECTED(zend_execute_ex == execute_ex)) {
  ------------------
  |  |  456|  1.33k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1.33k]
  |  |  ------------------
  ------------------
 3635|      0|			LOAD_OPLINE_EX();
  ------------------
  |  |  426|      0|# define LOAD_OPLINE_EX() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3636|       |
 3637|       |
 3638|       |
 3639|       |
 3640|      0|			ZEND_VM_ENTER_EX();
  ------------------
  |  |  443|      0|# define ZEND_VM_ENTER_EX()        return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 3641|  1.33k|		} else {
 3642|  1.33k|			SAVE_OPLINE_EX();
 3643|       |
 3644|       |
 3645|  1.33k|			execute_data = EX(prev_execute_data);
  ------------------
  |  |  730|  1.33k|#define EX(element) 			((execute_data)->element)
  ------------------
 3646|  1.33k|			if (execute_data) {
  ------------------
  |  Branch (3646:8): [True: 677, False: 662]
  ------------------
 3647|    677|				LOAD_OPLINE();
  ------------------
  |  |  425|    677|# define LOAD_OPLINE() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|    677|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3648|    677|			}
 3649|  1.33k|			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
  ------------------
  |  |  703|  1.33k|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|  1.33k|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|  1.33k|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|  1.33k|		call_info |= (flag); \
  |  |  |  |  697|  1.33k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 1.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|  1.33k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 1.33k]
  |  |  ------------------
  ------------------
 3650|  1.33k|			zend_execute_ex(call);
 3651|  1.33k|		}
 3652|  1.33k|	} else {
 3653|      0|		zval retval;
 3654|       |
 3655|      0|		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3655:3): [True: 0, False: 0]
  |  Branch (3655:3): [True: 0, False: 0]
  ------------------
 3656|       |
 3657|      0|		EG(current_execute_data) = call;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3658|       |
 3659|      0|#if ZEND_DEBUG
 3660|      0|		bool should_throw = zend_internal_call_should_throw(fbc, call);
 3661|      0|#endif
 3662|       |
 3663|      0|		if (ret == NULL) {
  ------------------
  |  Branch (3663:7): [True: 0, False: 0]
  ------------------
 3664|      0|			ret = &retval;
 3665|      0|		}
 3666|       |
 3667|      0|		ZVAL_NULL(ret);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3668|       |
 3669|       |
 3670|      0|		if (!zend_execute_internal) {
  ------------------
  |  Branch (3670:7): [True: 0, False: 0]
  ------------------
 3671|       |			/* saves one function call if zend_execute_internal is not used */
 3672|      0|			fbc->internal_function.handler(call, ret);
 3673|      0|		} else {
 3674|      0|			zend_execute_internal(call, ret);
 3675|      0|		}
 3676|       |
 3677|      0|#if ZEND_DEBUG
 3678|      0|		if (!EG(exception) && call->func) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3678:7): [True: 0, False: 0]
  |  Branch (3678:25): [True: 0, False: 0]
  ------------------
 3679|      0|			if (should_throw) {
  ------------------
  |  Branch (3679:8): [True: 0, False: 0]
  ------------------
 3680|      0|				zend_internal_call_arginfo_violation(call->func);
 3681|      0|			}
 3682|      0|			if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (3682:8): [True: 0, False: 0]
  ------------------
 3683|      0|				bool result = zend_verify_internal_return_type(call->func, ret);
 3684|      0|				ZEND_ASSERT(result);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3684:5): [True: 0, False: 0]
  |  Branch (3684:5): [True: 0, False: 0]
  ------------------
 3685|      0|			}
 3686|      0|			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3686:4): [True: 0, False: 0]
  |  Branch (3686:4): [True: 0, False: 0]
  |  Branch (3686:4): [True: 0, False: 0]
  |  Branch (3686:4): [True: 0, False: 0]
  ------------------
 3687|      0|				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
 3688|      0|			zend_verify_internal_func_info(call->func, ret);
 3689|      0|			ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC)
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3689:4): [True: 0, False: 0]
  |  Branch (3689:4): [True: 0, False: 0]
  |  Branch (3689:4): [True: 0, False: 0]
  |  Branch (3689:4): [True: 0, False: 0]
  ------------------
 3690|      0|					|| !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS));
 3691|      0|		}
 3692|      0|#endif
 3693|       |
 3694|       |
 3695|      0|		EG(current_execute_data) = call->prev_execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3696|       |
 3697|      0|		zend_vm_stack_free_args(call);
 3698|      0|		if (UNEXPECTED(call_info & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3699|      0|			zend_free_extra_named_params(call->extra_named_params);
 3700|      0|		}
 3701|      0|		if (ret == &retval) {
  ------------------
  |  Branch (3701:7): [True: 0, False: 0]
  ------------------
 3702|      0|			zval_ptr_dtor(ret);
 3703|      0|		}
 3704|      0|	}
 3705|       |
 3706|  1.33k|	execute_data = EG(current_execute_data);
  ------------------
  |  |   45|  1.33k|# define EG(v) (executor_globals.v)
  ------------------
 3707|       |
 3708|  1.33k|	if (!execute_data || !EX(func) || !ZEND_USER_CODE(EX(func)->type) || (call_info & ZEND_CALL_TOP)) {
  ------------------
  |  |  730|  1.35k|#define EX(element) 			((execute_data)->element)
  ------------------
              	if (!execute_data || !EX(func) || !ZEND_USER_CODE(EX(func)->type) || (call_info & ZEND_CALL_TOP)) {
  ------------------
  |  | 1081|  1.35k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
              	if (!execute_data || !EX(func) || !ZEND_USER_CODE(EX(func)->type) || (call_info & ZEND_CALL_TOP)) {
  ------------------
  |  |  663|     15|#define ZEND_CALL_TOP                (1 << 17)
  ------------------
  |  Branch (3708:6): [True: 1.32k, False: 15]
  |  Branch (3708:23): [True: 0, False: 15]
  |  Branch (3708:36): [True: 0, False: 15]
  |  Branch (3708:71): [True: 15, False: 0]
  ------------------
 3709|    677|		ZEND_VM_RETURN();
  ------------------
  |  |  406|    677|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|    677|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 3710|    677|	}
 3711|       |
 3712|    662|	if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
  ------------------
  |  |  457|    662|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 662]
  |  |  ------------------
  ------------------
 3713|      0|		zend_object *object = Z_OBJ(call->This);
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 3714|      0|		OBJ_RELEASE(object);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 3715|      0|	}
 3716|    662|	zend_vm_stack_free_call_frame(call);
 3717|       |
 3718|    662|	if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|    662|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 662]
  |  |  ------------------
  ------------------
 3719|      0|		zend_rethrow_exception(execute_data);
 3720|      0|		HANDLE_EXCEPTION_LEAVE();
  ------------------
  |  |  432|      0|#define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION_LEAVE() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_LEAVE()
  |  |  ------------------
  |  |  |  |  445|      0|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  442|      0|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3720:3): [True: 0, False: 0]
  |  Branch (3720:3): [True: 0, False: 0]
  ------------------
 3721|      0|	}
 3722|       |
 3723|    662|	LOAD_OPLINE();
  ------------------
  |  |  425|    662|# define LOAD_OPLINE() opline = EX(opline)
  |  |  ------------------
  |  |  |  |  730|    662|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3724|    662|	ZEND_VM_INC_OPCODE();
  ------------------
  |  | 5799|    662|	OPLINE++
  |  |  ------------------
  |  |  |  |  423|    662|# define OPLINE opline
  |  |  ------------------
  ------------------
 3725|    662|	ZEND_VM_LEAVE();
  ------------------
  |  |  445|    662|# define ZEND_VM_LEAVE()           return (zend_op*)((uintptr_t)opline | ZEND_VM_ENTER_BIT)
  |  |  ------------------
  |  |  |  |  442|    662|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 3726|    662|}
zend_execute.c:ZEND_DISCARD_EXCEPTION_SPEC_HANDLER:
 3503|      5|{
 3504|      5|	USE_OPLINE
 3505|      5|	zval *fast_call = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3506|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3507|       |
 3508|       |	/* cleanup incomplete RETURN statement */
 3509|      5|	if (Z_OPLINE_NUM_P(fast_call) != (uint32_t)-1
  ------------------
  |  |  690|      5|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      5|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
  |  Branch (3509:6): [True: 5, False: 0]
  ------------------
 3510|      5|	 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  ------------------
              	 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  690|      5|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      5|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
              	 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              	 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (3510:6): [True: 4, False: 1]
  ------------------
 3511|      4|		zval *return_value = EX_VAR(EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2.var);
  ------------------
  |  |  755|      4|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3512|       |
 3513|      4|		zval_ptr_dtor(return_value);
 3514|       |		/* Clear return value in case we hit both DISCARD_EXCEPTION and
 3515|       |		 * zend_dispatch_try_catch_finally_helper, which will free the return
 3516|       |		 * value again. See OSS-Fuzz #438780145. */
 3517|      4|		ZVAL_NULL(return_value);
  ------------------
  |  | 1059|      4|#define ZVAL_NULL(z) do {				\
  |  | 1060|      4|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3518|      4|	}
 3519|       |
 3520|       |	/* cleanup delayed exception */
 3521|      5|	if (Z_OBJ_P(fast_call) != NULL) {
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (3521:6): [True: 0, False: 5]
  ------------------
 3522|       |		/* discard the previously thrown exception */
 3523|      0|		OBJ_RELEASE(Z_OBJ_P(fast_call));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 3524|      0|		Z_OBJ_P(fast_call) = NULL;
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3525|      0|	}
 3526|       |
 3527|      5|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      5|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      5|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 5, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      5|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      5|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      5|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3527:2): [True: 0, False: 0]
  |  Branch (3527:2): [True: 0, False: 0]
  ------------------
 3528|      5|}
zend_execute.c:ZEND_YIELD_SPEC_CONST_CONST_HANDLER:
 8364|      5|{
 8365|      5|	USE_OPLINE
 8366|       |
 8367|      5|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  ------------------
 8368|       |
 8369|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 8370|      5|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 8371|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
 8372|      0|	}
 8373|       |
 8374|       |	/* Destroy the previously yielded value */
 8375|      5|	zval_ptr_dtor(&generator->value);
 8376|       |
 8377|       |	/* Destroy the previously yielded key */
 8378|      5|	zval_ptr_dtor(&generator->key);
 8379|       |
 8380|       |	/* Set the new yielded value */
 8381|      5|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (8381:6): [True: 5, Folded]
  ------------------
 8382|      5|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 8383|       |			/* Constants and temporary variables aren't yieldable by reference,
 8384|       |			 * but we still allow them with a notice. */
 8385|      0|			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (8385:8): [True: 0, Folded]
  ------------------
 8386|      0|				zval *value;
 8387|       |
 8388|      0|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 8389|       |
 8390|      0|				value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8391|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8392|      0|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8392:9): [True: 0, Folded]
  ------------------
 8393|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8394|      0|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
 8395|      0|					}
 8396|      0|				}
 8397|      0|			} else {
 8398|      0|				zval *value_ptr = zend_get_bad_ptr();
 8399|       |
 8400|       |				/* If a function call result is yielded and the function did
 8401|       |				 * not return by reference we throw a notice. */
 8402|      0|				do {
 8403|      0|					if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (8403:10): [Folded, False: 0]
  ------------------
 8404|      0|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (8404:7): [True: 0, False: 0]
  |  Branch (8404:7): [True: 0, False: 0]
  ------------------
 8405|      0|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (8405:11): [True: 0, False: 0]
  ------------------
 8406|      0|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8406:11): [True: 0, False: 0]
  ------------------
 8407|      0|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 8408|      0|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8409|      0|							break;
 8410|      0|						}
 8411|      0|					}
 8412|      0|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8413|      0|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 8414|      0|					} else {
 8415|      0|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8416|      0|					}
 8417|      0|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8418|      0|				} while (0);
  ------------------
  |  Branch (8418:14): [Folded, False: 0]
  ------------------
 8419|       |
 8420|       |
 8421|      0|			}
 8422|      5|		} else {
 8423|      5|			zval *value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8424|       |
 8425|       |			/* Consts, temporary variables and references need copying */
 8426|      5|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (8426:8): [True: 5, Folded]
  ------------------
 8427|      5|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 8428|      5|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 8429|      1|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      1|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
 8430|      1|				}
 8431|      5|			} else if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (8431:15): [Folded, False: 0]
  ------------------
 8432|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8433|      0|			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8433:15): [Folded, False: 0]
  ------------------
 8434|      0|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8435|       |
 8436|       |
 8437|      0|			} else {
 8438|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8439|      0|				if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (8439:9): [Folded, False: 0]
  ------------------
 8440|      0|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 8441|      0|				}
 8442|      0|			}
 8443|      5|		}
 8444|      5|	} else {
 8445|       |		/* If no value was specified yield null */
 8446|      0|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8447|      0|	}
 8448|       |
 8449|       |	/* Set the new yielded key */
 8450|      5|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (8450:6): [True: 5, Folded]
  ------------------
 8451|      5|		zval *key = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      5|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8452|      5|		if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
              		if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      5|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      5|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (8452:7): [Folded, False: 5]
  ------------------
 8453|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8454|      0|		}
 8455|      5|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 8456|       |
 8457|       |
 8458|      5|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|     10|#define IS_LONG						4
  ------------------
  |  Branch (8458:7): [True: 1, False: 4]
  ------------------
 8459|      1|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (8459:10): [True: 1, False: 0]
  ------------------
 8460|      5|		) {
 8461|      1|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
 8462|      1|		}
 8463|      5|	} else {
 8464|       |		/* If no key was specified we use auto-increment keys */
 8465|      0|		generator->largest_used_integer_key++;
 8466|      0|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8467|      0|	}
 8468|       |
 8469|      5|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      5|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      5|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 8470|       |		/* If the return value of yield is used set the send
 8471|       |		 * target and initialize it to NULL */
 8472|      0|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 8473|      0|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8474|      5|	} else {
 8475|      5|		generator->send_target = NULL;
 8476|      5|	}
 8477|       |
 8478|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
 8479|       |	 * variable in execute_data so we don't resume at an old position. */
 8480|      5|	SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 8481|       |
 8482|      5|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      5|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      5|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 8483|      5|}
zend_execute.c:ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER:
11657|     24|{
11658|     24|	USE_OPLINE
11659|       |
11660|     24|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|     24|# define EXECUTE_DATA_C     execute_data
  ------------------
11661|       |
11662|     24|	SAVE_OPLINE();
  ------------------
  |  |  428|     24|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11663|     24|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 24]
  |  |  ------------------
  ------------------
11664|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
11665|      0|	}
11666|       |
11667|       |	/* Destroy the previously yielded value */
11668|     24|	zval_ptr_dtor(&generator->value);
11669|       |
11670|       |	/* Destroy the previously yielded key */
11671|     24|	zval_ptr_dtor(&generator->key);
11672|       |
11673|       |	/* Set the new yielded value */
11674|     24|	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  864|     24|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST != IS_UNUSED) {
  ------------------
  |  |  863|     24|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11674:6): [True: 24, Folded]
  ------------------
11675|     24|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 23]
  |  |  ------------------
  ------------------
11676|       |			/* Constants and temporary variables aren't yieldable by reference,
11677|       |			 * but we still allow them with a notice. */
11678|      1|			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (11678:8): [True: 1, Folded]
  ------------------
11679|      1|				zval *value;
11680|       |
11681|      1|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
11682|       |
11683|      1|				value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11684|      1|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11685|      1|				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11685:9): [True: 1, Folded]
  ------------------
11686|      1|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
11687|      1|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      1|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
11688|      1|					}
11689|      1|				}
11690|      1|			} else {
11691|      0|				zval *value_ptr = zend_get_bad_ptr();
11692|       |
11693|       |				/* If a function call result is yielded and the function did
11694|       |				 * not return by reference we throw a notice. */
11695|      0|				do {
11696|      0|					if (IS_CONST == IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              					if (IS_CONST == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (11696:10): [Folded, False: 0]
  ------------------
11697|      0|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11697:7): [True: 0, False: 0]
  |  Branch (11697:7): [True: 0, False: 0]
  ------------------
11698|      0|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (11698:11): [True: 0, False: 0]
  ------------------
11699|      0|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11699:11): [True: 0, False: 0]
  ------------------
11700|      0|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
11701|      0|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11702|      0|							break;
11703|      0|						}
11704|      0|					}
11705|      0|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11706|      0|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11707|      0|					} else {
11708|      0|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11709|      0|					}
11710|      0|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11711|      0|				} while (0);
  ------------------
  |  Branch (11711:14): [Folded, False: 0]
  ------------------
11712|       |
11713|       |
11714|      0|			}
11715|     23|		} else {
11716|     23|			zval *value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     23|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11717|       |
11718|       |			/* Consts, temporary variables and references need copying */
11719|     23|			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     23|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (11719:8): [True: 23, Folded]
  ------------------
11720|     23|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|     23|	do {												\
  |  | 1417|     23|		zval *_z1 = (z);								\
  |  | 1418|     23|		const zval *_z2 = (v);							\
  |  | 1419|     23|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     23|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     23|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     23|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     23|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     23|	do {												\
  |  |  |  | 1408|     23|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     23|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     23|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     23|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     23|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
11721|     23|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 17]
  |  |  ------------------
  ------------------
11722|      6|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      6|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
11723|      6|				}
11724|     23|			} else if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if (IS_CONST == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (11724:15): [Folded, False: 0]
  ------------------
11725|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11726|      0|			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11726:15): [Folded, False: 0]
  ------------------
11727|      0|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11728|       |
11729|       |
11730|      0|			} else {
11731|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11732|      0|				if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              				if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (11732:9): [Folded, False: 0]
  ------------------
11733|      0|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
11734|      0|				}
11735|      0|			}
11736|     23|		}
11737|     24|	} else {
11738|       |		/* If no value was specified yield null */
11739|      0|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11740|      0|	}
11741|       |
11742|       |	/* Set the new yielded key */
11743|     24|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     24|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     24|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (11743:6): [Folded, False: 24]
  ------------------
11744|      0|		zval *key = NULL;
11745|      0|		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11745:7): [Folded, False: 0]
  ------------------
11746|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11747|      0|		}
11748|      0|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11749|       |
11750|       |
11751|      0|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (11751:7): [True: 0, False: 0]
  ------------------
11752|      0|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (11752:10): [True: 0, False: 0]
  ------------------
11753|      0|		) {
11754|      0|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
11755|      0|		}
11756|     24|	} else {
11757|       |		/* If no key was specified we use auto-increment keys */
11758|     24|		generator->largest_used_integer_key++;
11759|     24|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|     24|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     24|		zval *__z = (z);				\
  |  | 1078|     24|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     24|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     24|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     24|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     24|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
11760|     24|	}
11761|       |
11762|     24|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|     24|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|     24|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 24]
  |  |  ------------------
  ------------------
11763|       |		/* If the return value of yield is used set the send
11764|       |		 * target and initialize it to NULL */
11765|      0|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
11766|      0|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
11767|     24|	} else {
11768|     24|		generator->send_target = NULL;
11769|     24|	}
11770|       |
11771|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
11772|       |	 * variable in execute_data so we don't resume at an old position. */
11773|     24|	SAVE_OPLINE();
  ------------------
  |  |  428|     24|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     24|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11774|       |
11775|     24|	ZEND_VM_RETURN();
  ------------------
  |  |  406|     24|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|     24|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
11776|     24|}
zend_execute.c:ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER:
21870|     11|{
21871|     11|	USE_OPLINE
21872|       |
21873|     11|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|     11|# define EXECUTE_DATA_C     execute_data
  ------------------
21874|       |
21875|     11|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21876|     11|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  ------------------
  ------------------
21877|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
21878|      0|	}
21879|       |
21880|       |	/* Destroy the previously yielded value */
21881|     11|	zval_ptr_dtor(&generator->value);
21882|       |
21883|       |	/* Destroy the previously yielded key */
21884|     11|	zval_ptr_dtor(&generator->key);
21885|       |
21886|       |	/* Set the new yielded value */
21887|     11|	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21887:6): [True: 11, Folded]
  ------------------
21888|     11|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 5]
  |  |  ------------------
  ------------------
21889|       |			/* Constants and temporary variables aren't yieldable by reference,
21890|       |			 * but we still allow them with a notice. */
21891|      6|			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (21891:8): [True: 6, Folded]
  ------------------
21892|      6|				zval *value;
21893|       |
21894|      6|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      6|#define E_NOTICE			(1<<3L)
  ------------------
21895|       |
21896|      6|				value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21897|      6|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
21898|      6|				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21898:9): [Folded, False: 6]
  ------------------
21899|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21900|      0|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
21901|      0|					}
21902|      0|				}
21903|      6|			} else {
21904|      0|				zval *value_ptr = zend_get_bad_ptr();
21905|       |
21906|       |				/* If a function call result is yielded and the function did
21907|       |				 * not return by reference we throw a notice. */
21908|      0|				do {
21909|      0|					if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              					if (IS_TMP_VAR == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (21909:10): [Folded, False: 0]
  ------------------
21910|      0|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (21910:7): [True: 0, False: 0]
  |  Branch (21910:7): [True: 0, False: 0]
  ------------------
21911|      0|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (21911:11): [True: 0, False: 0]
  ------------------
21912|      0|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21912:11): [True: 0, False: 0]
  ------------------
21913|      0|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
21914|      0|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21915|      0|							break;
21916|      0|						}
21917|      0|					}
21918|      0|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21919|      0|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
21920|      0|					} else {
21921|      0|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21922|      0|					}
21923|      0|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21924|      0|				} while (0);
  ------------------
  |  Branch (21924:14): [Folded, False: 0]
  ------------------
21925|       |
21926|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21927|      0|			}
21928|      6|		} else {
21929|      5|			zval *value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      5|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21930|       |
21931|       |			/* Consts, temporary variables and references need copying */
21932|      5|			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      5|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (21932:8): [Folded, False: 5]
  ------------------
21933|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21934|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21935|      0|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
21936|      0|				}
21937|      5|			} else if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if (IS_TMP_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      5|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (21937:15): [True: 5, Folded]
  ------------------
21938|      5|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
21939|      5|			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (21939:15): [Folded, False: 0]
  ------------------
21940|      0|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21941|       |
21942|       |
21943|      0|			} else {
21944|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21945|      0|				if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (21945:9): [Folded, False: 0]
  ------------------
21946|      0|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
21947|      0|				}
21948|      0|			}
21949|      5|		}
21950|     11|	} else {
21951|       |		/* If no value was specified yield null */
21952|      0|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21953|      0|	}
21954|       |
21955|       |	/* Set the new yielded key */
21956|     11|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (21956:6): [Folded, False: 11]
  ------------------
21957|      0|		zval *key = NULL;
21958|      0|		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (21958:7): [Folded, False: 0]
  ------------------
21959|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21960|      0|		}
21961|      0|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
21962|       |
21963|       |
21964|      0|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (21964:7): [True: 0, False: 0]
  ------------------
21965|      0|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (21965:10): [True: 0, False: 0]
  ------------------
21966|      0|		) {
21967|      0|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
21968|      0|		}
21969|     11|	} else {
21970|       |		/* If no key was specified we use auto-increment keys */
21971|     11|		generator->largest_used_integer_key++;
21972|     11|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|     11|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     11|		zval *__z = (z);				\
  |  | 1078|     11|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     11|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     11|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     11|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     11|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
21973|     11|	}
21974|       |
21975|     11|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|     11|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|     11|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 1, False: 10]
  |  |  ------------------
  ------------------
21976|       |		/* If the return value of yield is used set the send
21977|       |		 * target and initialize it to NULL */
21978|      1|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
21979|      1|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
21980|     10|	} else {
21981|     10|		generator->send_target = NULL;
21982|     10|	}
21983|       |
21984|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
21985|       |	 * variable in execute_data so we don't resume at an old position. */
21986|     11|	SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21987|       |
21988|     11|	ZEND_VM_RETURN();
  ------------------
  |  |  406|     11|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|     11|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
21989|     11|}
zend_execute.c:ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER:
30262|      2|{
30263|      2|	USE_OPLINE
30264|       |
30265|      2|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  ------------------
30266|       |
30267|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30268|      2|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
30269|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
30270|      0|	}
30271|       |
30272|       |	/* Destroy the previously yielded value */
30273|      2|	zval_ptr_dtor(&generator->value);
30274|       |
30275|       |	/* Destroy the previously yielded key */
30276|      2|	zval_ptr_dtor(&generator->key);
30277|       |
30278|       |	/* Set the new yielded value */
30279|      2|	if (IS_VAR != IS_UNUSED) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              	if (IS_VAR != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (30279:6): [True: 2, Folded]
  ------------------
30280|      2|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
30281|       |			/* Constants and temporary variables aren't yieldable by reference,
30282|       |			 * but we still allow them with a notice. */
30283|      2|			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (30283:8): [Folded, False: 2]
  ------------------
30284|      0|				zval *value;
30285|       |
30286|      0|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
30287|       |
30288|      0|				value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30289|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30290|      0|				if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (30290:9): [Folded, False: 0]
  ------------------
30291|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30292|      0|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
30293|      0|					}
30294|      0|				}
30295|      2|			} else {
30296|      2|				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30297|       |
30298|       |				/* If a function call result is yielded and the function did
30299|       |				 * not return by reference we throw a notice. */
30300|      2|				do {
30301|      2|					if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
              					if (IS_VAR == IS_VAR) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (30301:10): [True: 2, Folded]
  ------------------
30302|      2|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (30302:7): [True: 0, False: 2]
  |  Branch (30302:7): [True: 2, False: 0]
  ------------------
30303|      2|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      4|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (30303:11): [True: 1, False: 1]
  ------------------
30304|      1|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30304:11): [True: 1, False: 0]
  ------------------
30305|      1|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
30306|      1|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
30307|      1|							break;
30308|      1|						}
30309|      2|					}
30310|      1|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30311|      0|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30312|      1|					} else {
30313|      1|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      1|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      1|		zval *_z = (z);											\
  |  | 1218|      1|		zend_reference *_ref =									\
  |  | 1219|      1|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      1|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      1|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      1|		_ref->sources.ptr = NULL;									\
  |  | 1224|      1|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      1|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
30314|      1|					}
30315|      1|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      1|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      1|		zval *__z = (z);										\
  |  | 1191|      1|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      1|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
30316|      1|				} while (0);
  ------------------
  |  Branch (30316:14): [Folded, False: 1]
  ------------------
30317|       |
30318|      2|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30319|      2|			}
30320|      2|		} else {
30321|      0|			zval *value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30322|       |
30323|       |			/* Consts, temporary variables and references need copying */
30324|      0|			if (IS_VAR == IS_CONST) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if (IS_VAR == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (30324:8): [Folded, False: 0]
  ------------------
30325|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30326|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30327|      0|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
30328|      0|				}
30329|      0|			} else if (IS_VAR == IS_TMP_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if (IS_VAR == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (30329:15): [Folded, False: 0]
  ------------------
30330|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30331|      0|			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30331:15): [True: 0, Folded]
  ------------------
30332|      0|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30333|      0|				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30334|      0|			} else {
30335|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30336|      0|				if (IS_VAR == IS_CV) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              				if (IS_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (30336:9): [Folded, False: 0]
  ------------------
30337|      0|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30338|      0|				}
30339|      0|			}
30340|      0|		}
30341|      2|	} else {
30342|       |		/* If no value was specified yield null */
30343|      0|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30344|      0|	}
30345|       |
30346|       |	/* Set the new yielded key */
30347|      2|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (30347:6): [Folded, False: 2]
  ------------------
30348|      0|		zval *key = NULL;
30349|      0|		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (30349:7): [Folded, False: 0]
  ------------------
30350|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30351|      0|		}
30352|      0|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30353|       |
30354|       |
30355|      0|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (30355:7): [True: 0, False: 0]
  ------------------
30356|      0|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (30356:10): [True: 0, False: 0]
  ------------------
30357|      0|		) {
30358|      0|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
30359|      0|		}
30360|      2|	} else {
30361|       |		/* If no key was specified we use auto-increment keys */
30362|      2|		generator->largest_used_integer_key++;
30363|      2|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
30364|      2|	}
30365|       |
30366|      2|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      2|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 2]
  |  |  ------------------
  ------------------
30367|       |		/* If the return value of yield is used set the send
30368|       |		 * target and initialize it to NULL */
30369|      0|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30370|      0|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30371|      2|	} else {
30372|      2|		generator->send_target = NULL;
30373|      2|	}
30374|       |
30375|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
30376|       |	 * variable in execute_data so we don't resume at an old position. */
30377|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30378|       |
30379|      2|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      2|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      2|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
30380|      2|}
zend_execute.c:ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER:
37181|     28|{
37182|     28|	USE_OPLINE
37183|       |
37184|     28|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|     28|# define EXECUTE_DATA_C     execute_data
  ------------------
37185|       |
37186|     28|	SAVE_OPLINE();
  ------------------
  |  |  428|     28|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     28|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37187|     28|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  ------------------
  ------------------
37188|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
37189|      0|	}
37190|       |
37191|       |	/* Destroy the previously yielded value */
37192|     28|	zval_ptr_dtor(&generator->value);
37193|       |
37194|       |	/* Destroy the previously yielded key */
37195|     28|	zval_ptr_dtor(&generator->key);
37196|       |
37197|       |	/* Set the new yielded value */
37198|     28|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     28|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     28|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (37198:6): [Folded, False: 28]
  ------------------
37199|      0|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37200|       |			/* Constants and temporary variables aren't yieldable by reference,
37201|       |			 * but we still allow them with a notice. */
37202|      0|			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (37202:8): [Folded, False: 0]
  ------------------
37203|      0|				zval *value;
37204|       |
37205|      0|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
37206|       |
37207|      0|				value = NULL;
37208|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37209|      0|				if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              				if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37209:9): [Folded, False: 0]
  ------------------
37210|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37211|      0|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
37212|      0|					}
37213|      0|				}
37214|      0|			} else {
37215|      0|				zval *value_ptr = NULL;
37216|       |
37217|       |				/* If a function call result is yielded and the function did
37218|       |				 * not return by reference we throw a notice. */
37219|      0|				do {
37220|      0|					if (IS_UNUSED == IS_VAR) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              					if (IS_UNUSED == IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (37220:10): [Folded, False: 0]
  ------------------
37221|      0|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37221:7): [True: 0, False: 0]
  |  Branch (37221:7): [True: 0, False: 0]
  ------------------
37222|      0|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (37222:11): [True: 0, False: 0]
  ------------------
37223|      0|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37223:11): [True: 0, False: 0]
  ------------------
37224|      0|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
37225|      0|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37226|      0|							break;
37227|      0|						}
37228|      0|					}
37229|      0|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37230|      0|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
37231|      0|					} else {
37232|      0|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37233|      0|					}
37234|      0|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37235|      0|				} while (0);
  ------------------
  |  Branch (37235:14): [Folded, False: 0]
  ------------------
37236|       |
37237|       |
37238|      0|			}
37239|      0|		} else {
37240|      0|			zval *value = NULL;
37241|       |
37242|       |			/* Consts, temporary variables and references need copying */
37243|      0|			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37243:8): [Folded, False: 0]
  ------------------
37244|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37245|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37246|      0|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
37247|      0|				}
37248|      0|			} else if (IS_UNUSED == IS_TMP_VAR) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if (IS_UNUSED == IS_TMP_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (37248:15): [Folded, False: 0]
  ------------------
37249|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37250|      0|			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37250:15): [Folded, False: 0]
  ------------------
37251|      0|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37252|       |
37253|       |
37254|      0|			} else {
37255|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37256|      0|				if (IS_UNUSED == IS_CV) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              				if (IS_UNUSED == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (37256:9): [Folded, False: 0]
  ------------------
37257|      0|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
37258|      0|				}
37259|      0|			}
37260|      0|		}
37261|     28|	} else {
37262|       |		/* If no value was specified yield null */
37263|     28|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|     28|#define ZVAL_NULL(z) do {				\
  |  | 1060|     28|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     28|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
37264|     28|	}
37265|       |
37266|       |	/* Set the new yielded key */
37267|     28|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     28|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|     28|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (37267:6): [Folded, False: 28]
  ------------------
37268|      0|		zval *key = NULL;
37269|      0|		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (37269:7): [Folded, False: 0]
  ------------------
37270|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37271|      0|		}
37272|      0|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37273|       |
37274|       |
37275|      0|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (37275:7): [True: 0, False: 0]
  ------------------
37276|      0|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (37276:10): [True: 0, False: 0]
  ------------------
37277|      0|		) {
37278|      0|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
37279|      0|		}
37280|     28|	} else {
37281|       |		/* If no key was specified we use auto-increment keys */
37282|     28|		generator->largest_used_integer_key++;
37283|     28|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|     28|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     28|		zval *__z = (z);				\
  |  | 1078|     28|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     28|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     28|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     28|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     28|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
37284|     28|	}
37285|       |
37286|     28|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|     28|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|     28|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 12, False: 16]
  |  |  ------------------
  ------------------
37287|       |		/* If the return value of yield is used set the send
37288|       |		 * target and initialize it to NULL */
37289|     12|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37290|     12|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|     12|#define ZVAL_NULL(z) do {				\
  |  | 1060|     12|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     12|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
37291|     16|	} else {
37292|     16|		generator->send_target = NULL;
37293|     16|	}
37294|       |
37295|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
37296|       |	 * variable in execute_data so we don't resume at an old position. */
37297|     28|	SAVE_OPLINE();
  ------------------
  |  |  428|     28|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     28|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37298|       |
37299|     28|	ZEND_VM_RETURN();
  ------------------
  |  |  406|     28|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|     28|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
37300|     28|}
zend_execute.c:ZEND_YIELD_SPEC_CV_UNUSED_HANDLER:
49755|    142|{
49756|    142|	USE_OPLINE
49757|       |
49758|    142|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|    142|# define EXECUTE_DATA_C     execute_data
  ------------------
49759|       |
49760|    142|	SAVE_OPLINE();
  ------------------
  |  |  428|    142|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    142|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49761|    142|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|    142|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 142]
  |  |  ------------------
  ------------------
49762|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
49763|      0|	}
49764|       |
49765|       |	/* Destroy the previously yielded value */
49766|    142|	zval_ptr_dtor(&generator->value);
49767|       |
49768|       |	/* Destroy the previously yielded key */
49769|    142|	zval_ptr_dtor(&generator->key);
49770|       |
49771|       |	/* Set the new yielded value */
49772|    142|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|    142|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|    142|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49772:6): [True: 142, Folded]
  ------------------
49773|    142|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|    142|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 141]
  |  |  ------------------
  ------------------
49774|       |			/* Constants and temporary variables aren't yieldable by reference,
49775|       |			 * but we still allow them with a notice. */
49776|      1|			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (49776:8): [Folded, False: 1]
  ------------------
49777|      0|				zval *value;
49778|       |
49779|      0|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
49780|       |
49781|      0|				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49782|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49783|      0|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49783:9): [Folded, False: 0]
  ------------------
49784|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49785|      0|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
49786|      0|					}
49787|      0|				}
49788|      1|			} else {
49789|      1|				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49790|       |
49791|       |				/* If a function call result is yielded and the function did
49792|       |				 * not return by reference we throw a notice. */
49793|      1|				do {
49794|      1|					if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (49794:10): [Folded, False: 1]
  ------------------
49795|      0|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (49795:7): [True: 0, False: 0]
  |  Branch (49795:7): [True: 0, False: 0]
  ------------------
49796|      0|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (49796:11): [True: 0, False: 0]
  ------------------
49797|      0|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49797:11): [True: 0, False: 0]
  ------------------
49798|      0|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
49799|      0|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49800|      0|							break;
49801|      0|						}
49802|      0|					}
49803|      1|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49804|      0|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49805|      1|					} else {
49806|      1|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      1|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      1|		zval *_z = (z);											\
  |  | 1218|      1|		zend_reference *_ref =									\
  |  | 1219|      1|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      1|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      1|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      1|		_ref->sources.ptr = NULL;									\
  |  | 1224|      1|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      1|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
49807|      1|					}
49808|      1|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      1|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      1|		zval *__z = (z);										\
  |  | 1191|      1|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      1|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
49809|      1|				} while (0);
  ------------------
  |  Branch (49809:14): [Folded, False: 1]
  ------------------
49810|       |
49811|       |
49812|      1|			}
49813|    141|		} else {
49814|    141|			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|    141|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|    141|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49815|       |
49816|       |			/* Consts, temporary variables and references need copying */
49817|    141|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|    141|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|    141|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (49817:8): [Folded, False: 141]
  ------------------
49818|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49819|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49820|      0|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
49821|      0|				}
49822|    141|			} else if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  867|    141|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  865|    141|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (49822:15): [Folded, False: 141]
  ------------------
49823|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49824|    141|			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|    141|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|    141|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|    141|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|    141|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|    141|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|    141|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    141|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 141]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49824:15): [True: 141, Folded]
  ------------------
49825|      0|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49826|       |
49827|       |
49828|    141|			} else {
49829|    141|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|    141|	do {												\
  |  | 1417|    141|		zval *_z1 = (z);								\
  |  | 1418|    141|		const zval *_z2 = (v);							\
  |  | 1419|    141|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    141|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    141|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|    141|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    141|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    141|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|    141|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    141|	do {												\
  |  |  |  | 1408|    141|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    141|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    141|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    141|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    141|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    141|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    141|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 141]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|    141|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 141]
  |  |  ------------------
  ------------------
49830|    141|				if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    141|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CV) {
  ------------------
  |  |  867|    141|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (49830:9): [True: 141, Folded]
  ------------------
49831|    141|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|    141|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|    141|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|    141|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|    141|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 139]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
49832|    141|				}
49833|    141|			}
49834|    141|		}
49835|    142|	} else {
49836|       |		/* If no value was specified yield null */
49837|      0|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49838|      0|	}
49839|       |
49840|       |	/* Set the new yielded key */
49841|    142|	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|    142|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED != IS_UNUSED) {
  ------------------
  |  |  863|    142|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49841:6): [Folded, False: 142]
  ------------------
49842|      0|		zval *key = NULL;
49843|      0|		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_UNUSED & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49843:7): [Folded, False: 0]
  ------------------
49844|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49845|      0|		}
49846|      0|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49847|       |
49848|       |
49849|      0|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (49849:7): [True: 0, False: 0]
  ------------------
49850|      0|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (49850:10): [True: 0, False: 0]
  ------------------
49851|      0|		) {
49852|      0|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
49853|      0|		}
49854|    142|	} else {
49855|       |		/* If no key was specified we use auto-increment keys */
49856|    142|		generator->largest_used_integer_key++;
49857|    142|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|    142|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    142|		zval *__z = (z);				\
  |  | 1078|    142|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    142|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    142|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    142|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    142|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    142|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    142|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    142|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 142]
  |  |  ------------------
  ------------------
49858|    142|	}
49859|       |
49860|    142|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|    142|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|    142|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 142]
  |  |  ------------------
  ------------------
49861|       |		/* If the return value of yield is used set the send
49862|       |		 * target and initialize it to NULL */
49863|      0|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49864|      0|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
49865|    142|	} else {
49866|    142|		generator->send_target = NULL;
49867|    142|	}
49868|       |
49869|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
49870|       |	 * variable in execute_data so we don't resume at an old position. */
49871|    142|	SAVE_OPLINE();
  ------------------
  |  |  428|    142|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    142|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49872|       |
49873|    142|	ZEND_VM_RETURN();
  ------------------
  |  |  406|    142|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|    142|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
49874|    142|}
zend_execute.c:ZEND_YIELD_SPEC_CV_CV_HANDLER:
53343|      9|{
53344|      9|	USE_OPLINE
53345|       |
53346|      9|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  ------------------
53347|       |
53348|      9|	SAVE_OPLINE();
  ------------------
  |  |  428|      9|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
53349|      9|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
53350|      0|		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
53351|      0|	}
53352|       |
53353|       |	/* Destroy the previously yielded value */
53354|      9|	zval_ptr_dtor(&generator->value);
53355|       |
53356|       |	/* Destroy the previously yielded key */
53357|      9|	zval_ptr_dtor(&generator->key);
53358|       |
53359|       |	/* Set the new yielded value */
53360|      9|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      9|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (53360:6): [True: 9, Folded]
  ------------------
53361|      9|		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 3]
  |  |  ------------------
  ------------------
53362|       |			/* Constants and temporary variables aren't yieldable by reference,
53363|       |			 * but we still allow them with a notice. */
53364|      6|			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
  ------------------
  |  |  865|      6|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (53364:8): [Folded, False: 6]
  ------------------
53365|      0|				zval *value;
53366|       |
53367|      0|				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
53368|       |
53369|      0|				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53370|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53371|      0|				if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (53371:9): [Folded, False: 0]
  ------------------
53372|      0|					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
53373|      0|						Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
53374|      0|					}
53375|      0|				}
53376|      6|			} else {
53377|      6|				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      6|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      6|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53378|       |
53379|       |				/* If a function call result is yielded and the function did
53380|       |				 * not return by reference we throw a notice. */
53381|      6|				do {
53382|      6|					if (IS_CV == IS_VAR) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              					if (IS_CV == IS_VAR) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (53382:10): [Folded, False: 6]
  ------------------
53383|      0|						ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (53383:7): [True: 0, False: 0]
  |  Branch (53383:7): [True: 0, False: 0]
  ------------------
53384|      0|						if (opline->extended_value == ZEND_RETURNS_FUNCTION
  ------------------
  |  | 1206|      0|#define ZEND_RETURNS_FUNCTION (1<<0)
  ------------------
  |  Branch (53384:11): [True: 0, False: 0]
  ------------------
53385|      0|						 && !Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (53385:11): [True: 0, False: 0]
  ------------------
53386|      0|							zend_error(E_NOTICE, "Only variable references should be yielded by reference");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
53387|      0|							ZVAL_COPY(&generator->value, value_ptr);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53388|      0|							break;
53389|      0|						}
53390|      0|					}
53391|      6|					if (Z_ISREF_P(value_ptr)) {
  ------------------
  |  |  964|      6|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      6|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 5, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53392|      5|						Z_ADDREF_P(value_ptr);
  ------------------
  |  | 1277|      5|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
53393|      5|					} else {
53394|      1|						ZVAL_MAKE_REF_EX(value_ptr, 2);
  ------------------
  |  | 1216|      1|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      1|		zval *_z = (z);											\
  |  | 1218|      1|		zend_reference *_ref =									\
  |  | 1219|      1|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      1|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      1|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      1|		_ref->sources.ptr = NULL;									\
  |  | 1224|      1|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      1|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
53395|      1|					}
53396|      6|					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
  ------------------
  |  | 1189|      6|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      6|		zval *__z = (z);										\
  |  | 1191|      6|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      6|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      6|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      6|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      6|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      6|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
53397|      6|				} while (0);
  ------------------
  |  Branch (53397:14): [Folded, False: 6]
  ------------------
53398|       |
53399|       |
53400|      6|			}
53401|      6|		} else {
53402|      3|			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53403|       |
53404|       |			/* Consts, temporary variables and references need copying */
53405|      3|			if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (53405:8): [Folded, False: 3]
  ------------------
53406|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53407|      0|				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
53408|      0|					Z_ADDREF(generator->value);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
53409|      0|				}
53410|      3|			} else if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if (IS_CV == IS_TMP_VAR) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (53410:15): [Folded, False: 3]
  ------------------
53411|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53412|      3|			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      3|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (53412:15): [True: 3, Folded]
  ------------------
53413|      3|				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
  ------------------
  |  | 1425|      3|	do {												\
  |  | 1426|      3|		zval *_z1 = (z);								\
  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
53414|       |
53415|       |
53416|      3|			} else {
53417|      0|				ZVAL_COPY_VALUE(&generator->value, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53418|      0|				if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (53418:9): [True: 0, Folded]
  ------------------
53419|      0|					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
53420|      0|				}
53421|      0|			}
53422|      3|		}
53423|      9|	} else {
53424|       |		/* If no value was specified yield null */
53425|      0|		ZVAL_NULL(&generator->value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53426|      0|	}
53427|       |
53428|       |	/* Set the new yielded key */
53429|      9|	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV != IS_UNUSED) {
  ------------------
  |  |  863|      9|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (53429:6): [True: 9, Folded]
  ------------------
53430|      9|		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      9|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      9|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
53431|      9|		if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  867|      9|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  866|      9|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_TYPE_P(key) == IS_REFERENCE)) {
  ------------------
  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  |  Branch (53431:7): [True: 9, Folded]
  ------------------
53432|      0|			key = Z_REFVAL_P(key);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
53433|      0|		}
53434|      9|		ZVAL_COPY(&generator->key, key);
  ------------------
  |  | 1425|      9|	do {												\
  |  | 1426|      9|		zval *_z1 = (z);								\
  |  | 1427|      9|		const zval *_z2 = (v);							\
  |  | 1428|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      9|	do {												\
  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      9|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      9|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      9|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
53435|       |
53436|       |
53437|      9|		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(generator->key) == IS_LONG
  ------------------
  |  |  610|     18|#define IS_LONG						4
  ------------------
  |  Branch (53437:7): [True: 9, False: 0]
  ------------------
53438|      9|		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
  ------------------
  |  |  975|      9|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  |  Branch (53438:10): [True: 9, False: 0]
  ------------------
53439|      9|		) {
53440|      9|			generator->largest_used_integer_key = Z_LVAL(generator->key);
  ------------------
  |  |  975|      9|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
53441|      9|		}
53442|      9|	} else {
53443|       |		/* If no key was specified we use auto-increment keys */
53444|      0|		generator->largest_used_integer_key++;
53445|      0|		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
53446|      0|	}
53447|       |
53448|      9|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      9|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      9|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 3, False: 6]
  |  |  ------------------
  ------------------
53449|       |		/* If the return value of yield is used set the send
53450|       |		 * target and initialize it to NULL */
53451|      3|		generator->send_target = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
53452|      3|		ZVAL_NULL(generator->send_target);
  ------------------
  |  | 1059|      3|#define ZVAL_NULL(z) do {				\
  |  | 1060|      3|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
53453|      6|	} else {
53454|      6|		generator->send_target = NULL;
53455|      6|	}
53456|       |
53457|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
53458|       |	 * variable in execute_data so we don't resume at an old position. */
53459|      9|	SAVE_OPLINE();
  ------------------
  |  |  428|      9|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
53460|       |
53461|      9|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      9|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      9|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
53462|      9|}
zend_execute.c:ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER:
 5038|     40|{
 5039|     40|	USE_OPLINE
 5040|     40|	zval *retval;
 5041|       |
 5042|     40|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|     40|# define EXECUTE_DATA_C     execute_data
  ------------------
 5043|       |
 5044|     40|	SAVE_OPLINE();
  ------------------
  |  |  428|     40|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     40|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5045|     40|	retval = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     40|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5046|       |
 5047|       |	/* Copy return value into generator->retval */
 5048|     40|	if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|     40|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|     40|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|     40|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (5048:6): [True: 40, Folded]
  ------------------
 5049|     40|		ZVAL_COPY_VALUE(&generator->retval, retval);
  ------------------
  |  | 1416|     40|	do {												\
  |  | 1417|     40|		zval *_z1 = (z);								\
  |  | 1418|     40|		const zval *_z2 = (v);							\
  |  | 1419|     40|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     40|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     40|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     40|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     40|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     40|	do {												\
  |  |  |  | 1408|     40|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     40|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     40|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     40|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     40|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     40|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 40]
  |  |  ------------------
  ------------------
 5050|     40|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     40|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|     40|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5050:7): [True: 40, Folded]
  ------------------
 5051|     40|			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
  ------------------
  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 40]
  |  |  ------------------
  ------------------
 5052|      0|				Z_ADDREF(generator->retval);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
 5053|      0|			}
 5054|     40|		}
 5055|     40|	} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5055:13): [Folded, False: 0]
  ------------------
 5056|      0|		ZVAL_COPY_DEREF(&generator->retval, retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5057|      0|	} else /* if (IS_CONST == IS_VAR) */ {
 5058|      0|		if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5059|      0|			zend_refcounted *ref = Z_COUNTED_P(retval);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 5060|       |
 5061|      0|			retval = Z_REFVAL_P(retval);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5062|      0|			ZVAL_COPY_VALUE(&generator->retval, retval);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5063|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5064|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5065|      0|			} else if (Z_OPT_REFCOUNTED_P(retval)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5066|      0|				Z_ADDREF_P(retval);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5067|      0|			}
 5068|      0|		} else {
 5069|      0|			ZVAL_COPY_VALUE(&generator->retval, retval);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5070|      0|		}
 5071|      0|	}
 5072|       |
 5073|       |
 5074|     40|	EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|     40|# define EG(v) (executor_globals.v)
  ------------------
              	EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|     40|#define EX(element) 			((execute_data)->element)
  ------------------
 5075|       |
 5076|       |	/* Close the generator to free up resources */
 5077|     40|	zend_generator_close(generator, 1);
 5078|       |
 5079|       |	/* Pass execution back to handling code */
 5080|     40|	ZEND_VM_RETURN();
  ------------------
  |  |  406|     40|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|     40|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 5081|     40|}
zend_execute.c:ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER:
17262|      1|{
17263|      1|	USE_OPLINE
17264|      1|	zval *retval;
17265|       |
17266|      1|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  ------------------
17267|       |
17268|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17269|      1|	retval = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17270|       |
17271|       |	/* Copy return value into generator->retval */
17272|      1|	if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (17272:6): [True: 1, Folded]
  ------------------
17273|      1|		ZVAL_COPY_VALUE(&generator->retval, retval);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
17274|      1|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17274:7): [Folded, False: 1]
  ------------------
17275|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17276|      0|				Z_ADDREF(generator->retval);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
17277|      0|			}
17278|      0|		}
17279|      1|	} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17279:13): [Folded, False: 0]
  ------------------
17280|      0|		ZVAL_COPY_DEREF(&generator->retval, retval);
  ------------------
  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|      0|		zval *_z3 = (v);								\
  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      0|			} else {									\
  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      0|			}											\
  |  | 1519|      0|		}												\
  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17281|      0|	} else /* if (IS_TMP_VAR == IS_VAR) */ {
17282|      0|		if (UNEXPECTED(Z_ISREF_P(retval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17283|      0|			zend_refcounted *ref = Z_COUNTED_P(retval);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
17284|       |
17285|      0|			retval = Z_REFVAL_P(retval);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17286|      0|			ZVAL_COPY_VALUE(&generator->retval, retval);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17287|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17288|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17289|      0|			} else if (Z_OPT_REFCOUNTED_P(retval)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17290|      0|				Z_ADDREF_P(retval);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17291|      0|			}
17292|      0|		} else {
17293|      0|			ZVAL_COPY_VALUE(&generator->retval, retval);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17294|      0|		}
17295|      0|	}
17296|       |
17297|       |
17298|      1|	EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              	EG(current_execute_data) = EX(prev_execute_data);
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
17299|       |
17300|       |	/* Close the generator to free up resources */
17301|      1|	zend_generator_close(generator, 1);
17302|       |
17303|       |	/* Pass execution back to handling code */
17304|      1|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      1|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      1|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
17305|      1|}
zend_execute.c:ZEND_FAST_CALL_SPEC_HANDLER:
 3531|     14|{
 3532|     14|	USE_OPLINE
 3533|     14|	zval *fast_call = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     14|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     14|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3534|       |
 3535|     14|	Z_OBJ_P(fast_call) = NULL;
  ------------------
  |  | 1000|     14|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     14|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3536|       |	/* set return address */
 3537|     14|	Z_OPLINE_NUM_P(fast_call) = opline - EX(func)->op_array.opcodes;
  ------------------
  |  |  690|     14|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|     14|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
              	Z_OPLINE_NUM_P(fast_call) = opline - EX(func)->op_array.opcodes;
  ------------------
  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  ------------------
 3538|       |	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op1), 0);
  ------------------
  |  | 5787|     14|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|     14|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 14]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|     14|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|     14|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     14|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     14|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     14|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     14|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     14|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     14|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     14|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|     14|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3538:2): [True: 0, False: 0]
  |  Branch (3538:2): [True: 0, False: 0]
  ------------------
 3539|     14|}
zend_execute.c:ZEND_FAST_RET_SPEC_HANDLER:
 3542|    148|{
 3543|    148|	USE_OPLINE
 3544|    148|	zval *fast_call = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    148|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    148|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 3545|    148|	uint32_t current_try_catch_offset, current_op_num;
 3546|       |
 3547|    148|	if (Z_OPLINE_NUM_P(fast_call) != (uint32_t)-1) {
  ------------------
  |  |  690|    148|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|    148|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
  |  Branch (3547:6): [True: 9, False: 139]
  ------------------
 3548|      9|		const zend_op *fast_ret = EX(func)->op_array.opcodes + Z_OPLINE_NUM_P(fast_call);
  ------------------
  |  |  730|      9|#define EX(element) 			((execute_data)->element)
  ------------------
              		const zend_op *fast_ret = EX(func)->op_array.opcodes + Z_OPLINE_NUM_P(fast_call);
  ------------------
  |  |  690|      9|#define Z_OPLINE_NUM_P(zval_p)		Z_OPLINE_NUM(*(zval_p))
  |  |  ------------------
  |  |  |  |  689|      9|#define Z_OPLINE_NUM(zval)			(zval).u2.opline_num
  |  |  ------------------
  ------------------
 3549|       |
 3550|      9|		ZEND_VM_JMP_EX(fast_ret + 1, 0);
  ------------------
  |  | 5787|      9|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      9|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 9]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      9|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      9|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      9|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      9|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      9|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      9|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      9|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      9|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      9|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      9|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      9|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3550:3): [True: 0, False: 0]
  |  Branch (3550:3): [True: 0, False: 0]
  ------------------
 3551|      9|	}
 3552|       |
 3553|       |	/* special case for unhandled exceptions */
 3554|    139|	EG(exception) = Z_OBJ_P(fast_call);
  ------------------
  |  |   45|    139|# define EG(v) (executor_globals.v)
  ------------------
              	EG(exception) = Z_OBJ_P(fast_call);
  ------------------
  |  | 1000|    139|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    139|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3555|    139|	Z_OBJ_P(fast_call) = NULL;
  ------------------
  |  | 1000|    139|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    139|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 3556|    139|	current_try_catch_offset = opline->op2.num;
 3557|    139|	current_op_num = opline - EX(func)->op_array.opcodes;
  ------------------
  |  |  730|    139|#define EX(element) 			((execute_data)->element)
  ------------------
 3558|    139|	ZEND_VM_DISPATCH_TO_HELPER(zend_dispatch_try_catch_finally_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX current_try_catch_offset, current_op_num));
  ------------------
  |  |  410|    139|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|    139|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
 3559|    148|}
zend_execute.c:ZEND_RECV_VARIADIC_SPEC_UNUSED_HANDLER:
 4348|     35|{
 4349|     35|	USE_OPLINE
 4350|     35|	uint32_t arg_num = opline->op1.num;
 4351|     35|	uint32_t arg_count = EX_NUM_ARGS();
  ------------------
  |  |  734|     35|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|     35|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
 4352|     35|	zval *params;
 4353|       |
 4354|     35|	SAVE_OPLINE();
  ------------------
  |  |  428|     35|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     35|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4355|       |
 4356|     35|	params = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     35|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     35|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 4357|       |
 4358|     35|	if (arg_num <= arg_count) {
  ------------------
  |  Branch (4358:6): [True: 27, False: 8]
  ------------------
 4359|     27|		ZEND_ASSERT(EX(func)->common.fn_flags & ZEND_ACC_VARIADIC);
  ------------------
  |  |  112|     27|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4359:3): [True: 0, False: 27]
  |  Branch (4359:3): [True: 27, False: 0]
  ------------------
 4360|     27|		ZEND_ASSERT(EX(func)->common.num_args == arg_num - 1);
  ------------------
  |  |  112|     27|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4360:3): [True: 0, False: 27]
  |  Branch (4360:3): [True: 27, False: 0]
  ------------------
 4361|     27|		zend_arg_info *arg_info = &EX(func)->common.arg_info[arg_num - 1];
  ------------------
  |  |  730|     27|#define EX(element) 			((execute_data)->element)
  ------------------
 4362|       |
 4363|     27|		array_init_size(params, arg_count - arg_num + 1);
 4364|     27|		zend_hash_real_init_packed(Z_ARRVAL_P(params));
  ------------------
  |  |  997|     27|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     27|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     27|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4365|     27|		ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(params)) {
  ------------------
  |  | 1542|     27|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|     27|		HashTable *__fill_ht = (ht); \
  |  | 1544|     27|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|     27|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|     27|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|     27|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (4365:3): [True: 0, False: 27]
  |  Branch (4365:3): [True: 27, False: 0]
  ------------------
 4366|     27|			zval *param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T);
  ------------------
  |  |  756|     27|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|     27|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|     27|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4367|     27|			if (ZEND_TYPE_IS_SET(arg_info->type)) {
  ------------------
  |  |  152|     27|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     27|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 7, False: 20]
  |  |  ------------------
  ------------------
 4368|      7|				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_FREE_EXTRA_ARGS);
  ------------------
  |  |  703|      7|#define ZEND_ADD_CALL_FLAG(call, flag) do { \
  |  |  704|      7|		ZEND_ADD_CALL_FLAG_EX(Z_TYPE_INFO((call)->This), flag); \
  |  |  ------------------
  |  |  |  |  695|      7|#define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
  |  |  |  |  696|      7|		call_info |= (flag); \
  |  |  |  |  697|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (697:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  705|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (705:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 4369|     13|				do {
 4370|     13|					if (UNEXPECTED(!zend_verify_variadic_arg_type(EX(func), arg_info, arg_num, param))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 9]
  |  |  ------------------
  ------------------
 4371|      4|						ZEND_HASH_FILL_FINISH();
  ------------------
  |  | 1589|      4|#define ZEND_HASH_FILL_FINISH() do { \
  |  | 1590|      4|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  | 1591|      4|		__fill_ht->nNumUsed = __fill_idx; \
  |  | 1592|      4|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  | 1593|      4|		__fill_ht->nInternalPointer = 0; \
  |  | 1594|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1594:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 4372|      4|						HANDLE_EXCEPTION();
  ------------------
  |  |  431|      4|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      4|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      4|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4372:7): [True: 0, False: 4]
  |  Branch (4372:7): [True: 4, False: 0]
  ------------------
 4373|      4|					}
 4374|       |
 4375|      9|					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
  ------------------
  |  |  955|      9|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      9|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      9|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      9|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
  ------------------
  |  | 1277|      9|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4376|      9|					ZEND_HASH_FILL_ADD(param);
  ------------------
  |  | 1584|      9|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|      9|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|      9|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      9|	do {												\
  |  |  |  |  |  | 1417|      9|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      9|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      9|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      9|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      9|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      9|	do {												\
  |  |  |  |  |  |  |  | 1408|      9|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      9|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      9|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      9|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      9|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      9|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|      9|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|      9|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|      9|		__fill_val++; \
  |  |  |  | 1581|      9|		__fill_idx++; \
  |  |  |  | 1582|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 4377|      9|					param++;
 4378|      9|				} while (++arg_num <= arg_count);
  ------------------
  |  Branch (4378:14): [True: 6, False: 3]
  ------------------
 4379|     20|			} else {
 4380|  61.4k|				do {
 4381|  61.4k|					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
  ------------------
  |  |  955|  61.4k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|  61.4k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|  61.4k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|  61.4k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 28, False: 61.4k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
  ------------------
  |  | 1277|     28|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4382|  61.4k|					ZEND_HASH_FILL_ADD(param);
  ------------------
  |  | 1584|  61.4k|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|  61.4k|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|  61.4k|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|  61.4k|	do {												\
  |  |  |  |  |  | 1417|  61.4k|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|  61.4k|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|  61.4k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  61.4k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  61.4k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|  61.4k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  61.4k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  61.4k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|  61.4k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|  61.4k|	do {												\
  |  |  |  |  |  |  |  | 1408|  61.4k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|  61.4k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|  61.4k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|  61.4k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|  61.4k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|  61.4k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|  61.4k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 61.4k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|  61.4k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 61.4k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|  61.4k|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|  61.4k|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|  61.4k|		__fill_val++; \
  |  |  |  | 1581|  61.4k|		__fill_idx++; \
  |  |  |  | 1582|  61.4k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 61.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|  61.4k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 61.4k]
  |  |  ------------------
  ------------------
 4383|  61.4k|					param++;
 4384|  61.4k|				} while (++arg_num <= arg_count);
  ------------------
  |  Branch (4384:14): [True: 61.4k, False: 20]
  ------------------
 4385|     20|			}
 4386|     27|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|     23|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|     23|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|     23|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|     23|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|     23|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|     23|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|     23|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
 4387|     27|	} else {
 4388|      8|		ZVAL_EMPTY_ARRAY(params);
  ------------------
  |  |   89|      8|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      8|		zval *__z = (z);								\
  |  |   91|      8|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      8|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      8|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 4389|      8|	}
 4390|       |
 4391|     31|	if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  732|     31|#define EX_CALL_INFO()			ZEND_CALL_INFO(execute_data)
  |  |  ------------------
  |  |  |  |  687|     31|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (EX_CALL_INFO() & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) {
  ------------------
  |  |  673|     31|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  ------------------
  |  Branch (4391:6): [True: 1, False: 30]
  ------------------
 4392|      1|		zend_string *name;
 4393|      1|		zval *param;
 4394|      1|		zend_arg_info *arg_info = &EX(func)->common.arg_info[EX(func)->common.num_args];
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              		zend_arg_info *arg_info = &EX(func)->common.arg_info[EX(func)->common.num_args];
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
 4395|      1|		if (ZEND_TYPE_IS_SET(arg_info->type)) {
  ------------------
  |  |  152|      1|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      1|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 4396|      0|			SEPARATE_ARRAY(params);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4397|      0|			ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
  ------------------
  |  | 1389|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      0|	_key = _p->key; \
  |  | 1391|      0|	_val = _z;
  ------------------
  |  Branch (4397:4): [True: 0, False: 0]
  |  Branch (4397:4): [True: 0, False: 0]
  ------------------
 4398|      0|				if (UNEXPECTED(!zend_verify_variadic_arg_type(EX(func), arg_info, arg_num, param))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4399|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (4399:6): [True: 0, False: 0]
  |  Branch (4399:6): [True: 0, False: 0]
  ------------------
 4400|      0|				}
 4401|      0|				Z_TRY_ADDREF_P(param);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4402|      0|				zend_hash_add_new(Z_ARRVAL_P(params), name, param);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4403|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4404|      1|		} else if (zend_hash_num_elements(Z_ARRVAL_P(params)) == 0) {
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4404:14): [True: 1, False: 0]
  ------------------
 4405|      1|			GC_ADDREF(EX(extra_named_params));
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 4406|      1|			ZVAL_ARR(params, EX(extra_named_params));
  ------------------
  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  | 1127|      1|		zval *__z = (z);						\
  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4407|      1|		} else {
 4408|      0|			SEPARATE_ARRAY(params);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4409|      0|			ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(EX(extra_named_params), name, param) {
  ------------------
  |  | 1389|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      0|	_key = _p->key; \
  |  | 1391|      0|	_val = _z;
  ------------------
  |  Branch (4409:4): [True: 0, False: 0]
  |  Branch (4409:4): [True: 0, False: 0]
  ------------------
 4410|      0|				Z_TRY_ADDREF_P(param);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4411|      0|				zend_hash_add_new(Z_ARRVAL_P(params), name, param);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4412|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4413|      0|		}
 4414|      1|	}
 4415|       |
 4416|     31|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     31|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     31|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     31|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 31, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     31|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     31|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     31|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     31|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     31|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     31|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4416:2): [True: 0, False: 0]
  |  Branch (4416:2): [True: 0, False: 0]
  ------------------
 4417|     31|}
zend_execute.c:ZEND_SEND_UNPACK_SPEC_HANDLER:
 2430|     38|{
 2431|     38|	USE_OPLINE
 2432|     38|	zval *args;
 2433|     38|	uint32_t arg_num;
 2434|       |
 2435|     38|	SAVE_OPLINE();
  ------------------
  |  |  428|     38|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     38|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2436|     38|	args = get_zval_ptr_undef(opline->op1_type, opline->op1, BP_VAR_R);
  ------------------
  |  |  122|     38|#define get_zval_ptr_undef(op_type, node, type) _get_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|     38|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     38|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_zval_ptr_undef(op_type, node, type) _get_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|     38|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     38|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2437|     38|	arg_num = ZEND_CALL_NUM_ARGS(EX(call)) + 1;
  ------------------
  |  |  712|     38|	(call)->This.u2.num_args
  ------------------
 2438|       |
 2439|     38|send_again:
 2440|     38|	if (EXPECTED(Z_TYPE_P(args) == IS_ARRAY)) {
  ------------------
  |  |  456|     38|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 31, False: 7]
  |  |  ------------------
  ------------------
 2441|     31|		HashTable *ht = Z_ARRVAL_P(args);
  ------------------
  |  |  997|     31|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     31|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     31|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2442|     31|		zval *arg, *top;
 2443|     31|		zend_string *name;
 2444|     31|		bool have_named_params = 0;
 2445|       |
 2446|     31|		zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, zend_hash_num_elements(ht));
  ------------------
  |  |  730|     31|#define EX(element) 			((execute_data)->element)
  ------------------
 2447|       |
 2448|       |		// TODO: Speed this up using a flag that specifies whether there are any ref parameters.
 2449|     31|		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_REFCOUNT_P(args) > 1) {
  ------------------
  |  |  866|     31|#define IS_VAR		(1<<2)
  ------------------
              		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_REFCOUNT_P(args) > 1) {
  ------------------
  |  |  867|     31|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_REFCOUNT_P(args) > 1) {
  ------------------
  |  | 1275|     15|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (2449:7): [True: 15, False: 16]
  |  Branch (2449:46): [True: 4, False: 11]
  ------------------
 2450|      4|			uint32_t tmp_arg_num = arg_num;
 2451|      4|			bool separate = 0;
 2452|       |
 2453|       |			/* check if any of arguments are going to be passed by reference */
 2454|     28|			ZEND_HASH_FOREACH_STR_KEY_VAL(ht, name, arg) {
  ------------------
  |  | 1181|     12|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      4|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      4|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      4|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      4|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      4|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      4|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      4|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      4|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      4|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      4|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     15|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 12, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     12|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     12|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     12|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     12|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 12, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|     12|				__z++; \
  |  |  |  |  |  | 1057|     12|				__h = _idx; \
  |  |  |  |  |  | 1058|     12|				_idx++; \
  |  |  |  |  |  | 1059|     12|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|     12|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     12|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|     12|	_key = __key; \
  |  | 1183|     12|	_val = _z;
  ------------------
 2455|     28|				if (UNEXPECTED(name)) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 2456|      0|					void *cache_slot[2] = {NULL, NULL};
 2457|      0|					tmp_arg_num = zend_get_arg_offset_by_name(
 2458|      0|						EX(call)->func, name, cache_slot) + 1;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2459|      0|				}
 2460|     28|				if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, tmp_arg_num)) {
  ------------------
  |  | 1167|     12|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|     12|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|     12|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 1, False: 11]
  |  |  ------------------
  ------------------
 2461|      1|					separate = 1;
 2462|      1|					break;
 2463|      1|				}
 2464|     11|				tmp_arg_num++;
 2465|     11|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     11|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 2466|      4|			if (separate) {
  ------------------
  |  Branch (2466:8): [True: 1, False: 3]
  ------------------
 2467|      1|				SEPARATE_ARRAY(args);
  ------------------
  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      1|		zval *__zv = (zv);								\
  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      1|		}												\
  |  | 1543|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2468|      1|				ht = Z_ARRVAL_P(args);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2469|      1|			}
 2470|      4|		}
 2471|       |
 2472|   162k|		ZEND_HASH_FOREACH_STR_KEY_VAL(ht, name, arg) {
  ------------------
  |  | 1181|  81.4k|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     31|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     31|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     31|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     31|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     31|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     31|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     31|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     31|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     31|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     31|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     31|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     31|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     31|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     31|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|  81.5k|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 81.4k, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|  81.4k|			zval *_z = __z; \
  |  |  |  |  |  | 1055|  81.4k|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  81.4k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|  81.4k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|  81.4k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 81.4k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|  81.4k|				__z++; \
  |  |  |  |  |  | 1057|  81.4k|				__h = _idx; \
  |  |  |  |  |  | 1058|  81.4k|				_idx++; \
  |  |  |  |  |  | 1059|  81.4k|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|  81.4k|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|  81.4k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  81.4k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 30, False: 81.4k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|  81.4k|	_key = __key; \
  |  | 1183|  81.4k|	_val = _z;
  ------------------
 2473|   162k|			if (UNEXPECTED(name)) {
  ------------------
  |  |  457|  81.4k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 81.4k]
  |  |  ------------------
  ------------------
 2474|      0|				void *cache_slot[2] = {NULL, NULL};
 2475|      0|				have_named_params = 1;
 2476|      0|				top = zend_handle_named_arg(&EX(call), name, &arg_num, cache_slot);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2477|      0|				if (UNEXPECTED(!top)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2478|      0|					FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2479|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2479:6): [True: 0, False: 0]
  |  Branch (2479:6): [True: 0, False: 0]
  ------------------
 2480|      0|				}
 2481|  81.4k|			} else {
 2482|  81.4k|				if (have_named_params) {
  ------------------
  |  Branch (2482:9): [True: 0, False: 81.4k]
  ------------------
 2483|      0|					zend_throw_error(NULL,
 2484|      0|						"Cannot use positional argument after named argument during unpacking");
 2485|      0|					FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2486|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2486:6): [True: 0, False: 0]
  |  Branch (2486:6): [True: 0, False: 0]
  ------------------
 2487|      0|				}
 2488|       |
 2489|  81.4k|				top = ZEND_CALL_ARG(EX(call), arg_num);
  ------------------
  |  |  728|  81.4k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|  81.4k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|  81.4k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2490|  81.4k|				ZEND_CALL_NUM_ARGS(EX(call))++;
  ------------------
  |  |  712|  81.4k|	(call)->This.u2.num_args
  ------------------
 2491|  81.4k|			}
 2492|       |
 2493|  81.4k|			if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1167|  81.4k|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1117|  81.4k|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |               	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF|ZEND_SEND_PREFER_REF)
  |  |  ------------------
  |  |  |  | 1118|  81.4k|#define ZEND_SEND_PREFER_REF 2u
  |  |  ------------------
  |  |  |  Branch (1167:2): [True: 3, False: 81.4k]
  |  |  ------------------
  ------------------
 2494|      3|				if (Z_ISREF_P(arg)) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      3|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2495|      0|					Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 2496|      0|					ZVAL_REF(top, Z_REF_P(arg));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2497|      3|				} else if (opline->op1_type & (IS_VAR|IS_CV)) {
  ------------------
  |  |  866|      3|#define IS_VAR		(1<<2)
  ------------------
              				} else if (opline->op1_type & (IS_VAR|IS_CV)) {
  ------------------
  |  |  867|      3|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (2497:16): [True: 3, False: 0]
  ------------------
 2498|       |					/* array is already separated above */
 2499|      3|					ZVAL_MAKE_REF_EX(arg, 2);
  ------------------
  |  | 1216|      3|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      3|		zval *_z = (z);											\
  |  | 1218|      3|		zend_reference *_ref =									\
  |  | 1219|      3|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      3|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      3|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      3|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      3|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      3|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      3|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      3|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      3|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      3|	do {												\
  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      3|		_ref->sources.ptr = NULL;									\
  |  | 1224|      3|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      3|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      3|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2500|      3|					ZVAL_REF(top, Z_REF_P(arg));
  ------------------
  |  | 1189|      3|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      3|		zval *__z = (z);										\
  |  | 1191|      3|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      3|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      3|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      3|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2501|      3|				} else {
 2502|      0|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2503|      0|					ZVAL_NEW_REF(top, arg);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2504|      0|				}
 2505|  81.4k|			} else {
 2506|  81.4k|				ZVAL_COPY_DEREF(top, arg);
  ------------------
  |  | 1508|  81.4k|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|  81.4k|		zval *_z3 = (v);								\
  |  | 1510|  81.4k|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|  81.4k|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|  81.4k|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|  81.4k|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|  81.4k|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 12, False: 81.4k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|     12|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|     12|			} else {									\
  |  | 1517|     12|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|     12|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|     12|			}											\
  |  | 1519|     12|		}												\
  |  | 1520|  81.4k|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|  81.4k|	do {												\
  |  |  |  | 1417|  81.4k|		zval *_z1 = (z);								\
  |  |  |  | 1418|  81.4k|		const zval *_z2 = (v);							\
  |  |  |  | 1419|  81.4k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  81.4k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  81.4k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|  81.4k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  81.4k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  81.4k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|  81.4k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|  81.4k|	do {												\
  |  |  |  |  |  | 1408|  81.4k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|  81.4k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|  81.4k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|  81.4k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  81.4k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  81.4k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|  81.4k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 81.4k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|  81.4k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 81.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|  81.4k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 81.4k]
  |  |  ------------------
  ------------------
 2507|  81.4k|			}
 2508|       |
 2509|  81.4k|			arg_num++;
 2510|  81.4k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  81.4k|		} \
  |  | 1102|     31|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 31]
  |  |  ------------------
  ------------------
 2511|       |
 2512|     31|	} else if (EXPECTED(Z_TYPE_P(args) == IS_OBJECT)) {
  ------------------
  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 7, False: 0]
  |  |  ------------------
  ------------------
 2513|      7|		zend_class_entry *ce = Z_OBJCE_P(args);
  ------------------
  |  | 1012|      7|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      7|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2514|      7|		zend_object_iterator *iter;
 2515|      7|		bool have_named_params = 0;
 2516|       |
 2517|      7|		if (!ce || !ce->get_iterator) {
  ------------------
  |  Branch (2517:7): [True: 0, False: 7]
  |  Branch (2517:14): [True: 0, False: 7]
  ------------------
 2518|      0|			zend_type_error("Only arrays and Traversables can be unpacked, %s given", zend_zval_value_name(args));
 2519|      7|		} else {
 2520|       |
 2521|      7|			iter = ce->get_iterator(ce, args, 0);
 2522|      7|			if (UNEXPECTED(!iter)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 2523|      0|				FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|      0|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  178|      0|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      0|	}
  ------------------
 2524|      0|				if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2524:9): [True: 0, False: 0]
  ------------------
 2525|      0|					zend_throw_exception_ex(
 2526|      0|						NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name)
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2527|      0|					);
 2528|      0|				}
 2529|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (2529:5): [True: 0, False: 0]
  |  Branch (2529:5): [True: 0, False: 0]
  ------------------
 2530|      0|			}
 2531|       |
 2532|      7|			const zend_object_iterator_funcs *funcs = iter->funcs;
 2533|      7|			if (funcs->rewind) {
  ------------------
  |  Branch (2533:8): [True: 7, False: 0]
  ------------------
 2534|      7|				funcs->rewind(iter);
 2535|      7|			}
 2536|       |
 2537|     20|			for (; funcs->valid(iter) == SUCCESS; ++arg_num) {
  ------------------
  |  Branch (2537:11): [True: 13, False: 7]
  ------------------
 2538|     13|				zval *arg, *top;
 2539|       |
 2540|     13|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 2541|      0|					break;
 2542|      0|				}
 2543|       |
 2544|     13|				arg = funcs->get_current_data(iter);
 2545|     13|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 2546|      0|					break;
 2547|      0|				}
 2548|       |
 2549|     13|				zend_string *name = NULL;
 2550|     13|				if (funcs->get_current_key) {
  ------------------
  |  Branch (2550:9): [True: 13, False: 0]
  ------------------
 2551|     13|					zval key;
 2552|     13|					funcs->get_current_key(iter, &key);
 2553|     13|					if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 2554|      0|						break;
 2555|      0|					}
 2556|       |
 2557|     13|					if (UNEXPECTED(Z_TYPE(key) != IS_LONG)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 2558|      0|						if (UNEXPECTED(Z_TYPE(key) != IS_STRING)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2559|      0|							zend_throw_error(NULL,
 2560|      0|								"Keys must be of type int|string during argument unpacking");
 2561|      0|							zval_ptr_dtor(&key);
 2562|      0|							break;
 2563|      0|						}
 2564|       |
 2565|      0|						name = Z_STR_P(&key);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2566|       |
 2567|      0|						zend_ulong tmp;
 2568|      0|						if (ZEND_HANDLE_NUMERIC(name, tmp)) {
  ------------------
  |  |  424|      0|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2569|      0|							name = NULL;
 2570|      0|						}
 2571|      0|					}
 2572|     13|				}
 2573|       |
 2574|     13|				if (UNEXPECTED(name)) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 2575|      0|					void *cache_slot[2] = {NULL, NULL};
 2576|      0|					have_named_params = 1;
 2577|      0|					top = zend_handle_named_arg(&EX(call), name, &arg_num, cache_slot);
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
 2578|      0|					if (UNEXPECTED(!top)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2579|      0|						zend_string_release(name);
 2580|      0|						break;
 2581|      0|					}
 2582|       |
 2583|      0|					ZVAL_DEREF(arg);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2584|      0|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2585|       |
 2586|      0|					if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1164|      0|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|      0|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2587|      0|						zend_error(
 2588|      0|							E_WARNING, "Cannot pass by-reference argument %d of %s%s%s()"
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 2589|      0|							" by unpacking a Traversable, passing by-value instead", arg_num,
 2590|      0|							EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              							EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2590:8): [True: 0, False: 0]
  ------------------
 2591|      0|							EX(call)->func->common.scope ? "::" : "",
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (2591:8): [True: 0, False: 0]
  ------------------
 2592|      0|							ZSTR_VAL(EX(call)->func->common.function_name)
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2593|      0|						);
 2594|      0|						ZVAL_NEW_REF(top, arg);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2595|      0|					} else {
 2596|      0|						ZVAL_COPY_VALUE(top, arg);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2597|      0|					}
 2598|       |
 2599|      0|					zend_string_release(name);
 2600|     13|				} else {
 2601|     13|					if (have_named_params) {
  ------------------
  |  Branch (2601:10): [True: 0, False: 13]
  ------------------
 2602|      0|						zend_throw_error(NULL,
 2603|      0|							"Cannot use positional argument after named argument during unpacking");
 2604|      0|						break;
 2605|      0|					}
 2606|       |
 2607|     13|					zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, 1);
  ------------------
  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  ------------------
 2608|     13|					top = ZEND_CALL_ARG(EX(call), arg_num);
  ------------------
  |  |  728|     13|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  ------------------
  |  |  |  |  725|     13|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|     13|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2609|     13|					ZVAL_DEREF(arg);
  ------------------
  |  | 1474|     13|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     13|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 6, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      6|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      6|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      6|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      6|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      6|		}												\
  |  | 1478|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
 2610|     13|					Z_TRY_ADDREF_P(arg);
  ------------------
  |  | 1285|     13|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     13|	zval *_pz = (pz);				\
  |  | 1287|     13|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     13|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     13|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     13|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|     13|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 13]
  |  |  ------------------
  ------------------
 2611|       |
 2612|     13|					if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
  ------------------
  |  | 1164|     13|	zend_check_arg_send_type(zf, arg_num, ZEND_SEND_BY_REF)
  |  |  ------------------
  |  |  |  | 1117|     13|#define ZEND_SEND_BY_REF     1u
  |  |  ------------------
  |  |  |  Branch (1164:2): [True: 1, False: 12]
  |  |  ------------------
  ------------------
 2613|      1|						zend_error(
 2614|      1|							E_WARNING, "Cannot pass by-reference argument %d of %s%s%s()"
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 2615|      1|							" by unpacking a Traversable, passing by-value instead", arg_num,
 2616|      1|							EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              							EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2616:8): [True: 0, False: 1]
  ------------------
 2617|      1|							EX(call)->func->common.scope ? "::" : "",
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
  |  Branch (2617:8): [True: 0, False: 1]
  ------------------
 2618|      1|							ZSTR_VAL(EX(call)->func->common.function_name)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2619|      1|						);
 2620|      1|						ZVAL_NEW_REF(top, arg);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2621|     12|					} else {
 2622|     12|						ZVAL_COPY_VALUE(top, arg);
  ------------------
  |  | 1416|     12|	do {												\
  |  | 1417|     12|		zval *_z1 = (z);								\
  |  | 1418|     12|		const zval *_z2 = (v);							\
  |  | 1419|     12|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     12|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     12|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     12|	do {												\
  |  |  |  | 1408|     12|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     12|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 2623|     12|					}
 2624|       |
 2625|     13|					ZEND_CALL_NUM_ARGS(EX(call))++;
  ------------------
  |  |  712|     13|	(call)->This.u2.num_args
  ------------------
 2626|     13|				}
 2627|       |
 2628|     13|				funcs->move_forward(iter);
 2629|     13|			}
 2630|       |
 2631|      7|			zend_iterator_dtor(iter);
 2632|      7|		}
 2633|      7|	} else if (EXPECTED(Z_ISREF_P(args))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2634|      0|		args = Z_REFVAL_P(args);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2635|      0|		goto send_again;
 2636|      0|	} else {
 2637|      0|		if (opline->op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(args) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (opline->op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(args) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2637:7): [True: 0, False: 0]
  ------------------
 2638|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 2639|      0|		}
 2640|      0|		zend_type_error("Only arrays and Traversables can be unpacked, %s given", zend_zval_value_name(args));
 2641|      0|	}
 2642|       |
 2643|     38|	FREE_OP(opline->op1_type, opline->op1.var);
  ------------------
  |  |  177|     38|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|     38|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|     38|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 5, False: 33]
  |  |  ------------------
  |  |  178|      5|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|      5|	}
  ------------------
 2644|     38|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     38|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     38|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     38|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 38, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     38|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     38|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     38|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     38|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     38|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     38|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2644:2): [True: 0, False: 0]
  |  Branch (2644:2): [True: 0, False: 0]
  ------------------
 2645|     38|}
zend_execute.c:ZEND_YIELD_FROM_SPEC_CONST_HANDLER:
 5946|      3|{
 5947|      3|	USE_OPLINE
 5948|      3|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  ------------------
 5949|      3|	zval *val;
 5950|       |
 5951|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5952|      3|	val = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5953|       |
 5954|      3|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 5955|      0|		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
 5956|       |
 5957|       |
 5958|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5959|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5959:3): [True: 0, False: 0]
  |  Branch (5959:3): [True: 0, False: 0]
  ------------------
 5960|      0|	}
 5961|       |
 5962|      3|yield_from_try_again:
 5963|      3|	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  613|      3|#define IS_ARRAY					7
  ------------------
  |  Branch (5963:6): [True: 3, False: 0]
  ------------------
 5964|      3|		ZVAL_COPY_VALUE(&generator->values, val);
  ------------------
  |  | 1416|      3|	do {												\
  |  | 1417|      3|		zval *_z1 = (z);								\
  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 5965|      3|		if (Z_OPT_REFCOUNTED_P(val)) {
  ------------------
  |  |  955|      3|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      3|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5966|      2|			Z_ADDREF_P(val);
  ------------------
  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5967|      2|		}
 5968|      3|		Z_FE_POS(generator->values) = 0;
  ------------------
  |  |  692|      3|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  ------------------
 5969|       |
 5970|       |
 5971|      3|	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5971:13): [Folded, False: 0]
  |  Branch (5971:37): [True: 0, False: 0]
  |  Branch (5971:67): [True: 0, False: 0]
  ------------------
 5972|      0|		zend_class_entry *ce = Z_OBJCE_P(val);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5973|      0|		if (ce == zend_ce_generator) {
  ------------------
  |  Branch (5973:7): [True: 0, False: 0]
  ------------------
 5974|      0|			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5975|       |
 5976|      0|			Z_ADDREF_P(val);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5977|       |
 5978|       |
 5979|      0|			if (UNEXPECTED(new_gen->execute_data == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5980|      0|				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
 5981|      0|				zval_ptr_dtor(val);
 5982|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5983|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5983:5): [True: 0, False: 0]
  |  Branch (5983:5): [True: 0, False: 0]
  ------------------
 5984|      0|			} else if (Z_ISUNDEF(new_gen->retval)) {
  ------------------
  |  |  966|      0|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5985|      0|				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5986|      0|					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
 5987|      0|					zval_ptr_dtor(val);
 5988|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5989|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5989:6): [True: 0, False: 0]
  |  Branch (5989:6): [True: 0, False: 0]
  ------------------
 5990|      0|				} else {
 5991|      0|					zend_generator_yield_from(generator, new_gen);
 5992|      0|				}
 5993|      0|			} else {
 5994|      0|				if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5995|      0|					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5996|      0|				}
 5997|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5997:5): [True: 0, False: 0]
  |  Branch (5997:5): [True: 0, False: 0]
  ------------------
 5998|      0|			}
 5999|      0|		} else {
 6000|      0|			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
 6001|       |
 6002|       |
 6003|      0|			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6004|      0|				if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (6004:9): [True: 0, False: 0]
  ------------------
 6005|      0|					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 6006|      0|				}
 6007|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6008|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (6008:5): [True: 0, False: 0]
  |  Branch (6008:5): [True: 0, False: 0]
  ------------------
 6009|      0|			}
 6010|       |
 6011|      0|			iter->index = 0;
 6012|      0|			if (iter->funcs->rewind) {
  ------------------
  |  Branch (6012:8): [True: 0, False: 0]
  ------------------
 6013|      0|				iter->funcs->rewind(iter);
 6014|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6015|      0|					OBJ_RELEASE(&iter->std);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 6016|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6017|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (6017:6): [True: 0, False: 0]
  |  Branch (6017:6): [True: 0, False: 0]
  ------------------
 6018|      0|				}
 6019|      0|			}
 6020|       |
 6021|      0|			ZVAL_OBJ(&generator->values, &iter->std);
  ------------------
  |  | 1140|      0|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      0|		zval *__z = (z);						\
  |  | 1142|      0|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6022|      0|		}
 6023|      0|	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (6023:13): [Folded, False: 0]
  |  Branch (6023:44): [True: 0, False: 0]
  ------------------
 6024|      0|		val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6025|      0|		goto yield_from_try_again;
 6026|      0|	} else {
 6027|      0|		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
 6028|       |
 6029|       |
 6030|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6031|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (6031:3): [True: 0, False: 0]
  |  Branch (6031:3): [True: 0, False: 0]
  ------------------
 6032|      0|	}
 6033|       |
 6034|       |	/* This is the default return value
 6035|       |	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
 6036|      3|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      3|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 6037|      0|		ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6038|      0|	}
 6039|       |
 6040|       |	/* This generator has no send target (though the generator we delegate to might have one) */
 6041|      3|	generator->send_target = NULL;
 6042|       |
 6043|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
 6044|       |	 * variable in execute_data so we don't resume at an old position. */
 6045|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6046|       |
 6047|      3|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      3|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      3|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
 6048|      3|}
zend_execute.c:ZEND_YIELD_FROM_SPEC_TMP_HANDLER:
18034|      8|{
18035|      8|	USE_OPLINE
18036|      8|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  ------------------
18037|      8|	zval *val;
18038|       |
18039|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18040|      8|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18041|       |
18042|      8|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
18043|      0|		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
18044|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18045|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18046|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18046:3): [True: 0, False: 0]
  |  Branch (18046:3): [True: 0, False: 0]
  ------------------
18047|      0|	}
18048|       |
18049|      8|yield_from_try_again:
18050|      8|	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  613|      8|#define IS_ARRAY					7
  ------------------
  |  Branch (18050:6): [True: 1, False: 7]
  ------------------
18051|      1|		ZVAL_COPY_VALUE(&generator->values, val);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18052|      1|		if (Z_OPT_REFCOUNTED_P(val)) {
  ------------------
  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18053|      1|			Z_ADDREF_P(val);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
18054|      1|		}
18055|      1|		Z_FE_POS(generator->values) = 0;
  ------------------
  |  |  692|      1|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  ------------------
18056|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18057|      7|	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  865|      7|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  864|     14|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  614|     14|#define IS_OBJECT					8
  ------------------
              	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  | 1012|      7|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      7|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18057:13): [True: 7, Folded]
  |  Branch (18057:39): [True: 7, False: 0]
  |  Branch (18057:69): [True: 6, False: 1]
  ------------------
18058|      6|		zend_class_entry *ce = Z_OBJCE_P(val);
  ------------------
  |  | 1012|      6|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      6|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18059|      6|		if (ce == zend_ce_generator) {
  ------------------
  |  Branch (18059:7): [True: 5, False: 1]
  ------------------
18060|      5|			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
18061|       |
18062|      5|			Z_ADDREF_P(val);
  ------------------
  |  | 1277|      5|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
18063|      5|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      5|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      5|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18064|       |
18065|      5|			if (UNEXPECTED(new_gen->execute_data == NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
18066|      0|				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
18067|      0|				zval_ptr_dtor(val);
18068|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18069|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18069:5): [True: 0, False: 0]
  |  Branch (18069:5): [True: 0, False: 0]
  ------------------
18070|      5|			} else if (Z_ISUNDEF(new_gen->retval)) {
  ------------------
  |  |  966|      5|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 5, False: 0]
  |  |  ------------------
  ------------------
18071|      5|				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  ------------------
  ------------------
18072|      1|					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
18073|      1|					zval_ptr_dtor(val);
18074|      1|					UNDEF_RESULT();
  ------------------
  |  | 5907|      1|#define UNDEF_RESULT() do { \
  |  | 5908|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18075|      1|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18075:6): [True: 0, False: 1]
  |  Branch (18075:6): [True: 1, False: 0]
  ------------------
18076|      4|				} else {
18077|      4|					zend_generator_yield_from(generator, new_gen);
18078|      4|				}
18079|      5|			} else {
18080|      0|				if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
18081|      0|					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18082|      0|				}
18083|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (18083:5): [True: 0, False: 0]
  |  Branch (18083:5): [True: 0, False: 0]
  ------------------
18084|      0|			}
18085|      5|		} else {
18086|      1|			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
18087|      1|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18088|       |
18089|      1|			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18090|      0|				if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (18090:9): [True: 0, False: 0]
  ------------------
18091|      0|					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
18092|      0|				}
18093|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18094|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18094:5): [True: 0, False: 0]
  |  Branch (18094:5): [True: 0, False: 0]
  ------------------
18095|      0|			}
18096|       |
18097|      1|			iter->index = 0;
18098|      1|			if (iter->funcs->rewind) {
  ------------------
  |  Branch (18098:8): [True: 1, False: 0]
  ------------------
18099|      1|				iter->funcs->rewind(iter);
18100|      1|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18101|      0|					OBJ_RELEASE(&iter->std);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
18102|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18103|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18103:6): [True: 0, False: 0]
  |  Branch (18103:6): [True: 0, False: 0]
  ------------------
18104|      0|				}
18105|      1|			}
18106|       |
18107|      1|			ZVAL_OBJ(&generator->values, &iter->std);
  ------------------
  |  | 1140|      1|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      1|		zval *__z = (z);						\
  |  | 1142|      1|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18108|      1|		}
18109|      6|	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (18109:13): [Folded, False: 1]
  |  Branch (18109:46): [True: 0, False: 0]
  ------------------
18110|      0|		val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18111|      0|		goto yield_from_try_again;
18112|      1|	} else {
18113|      1|		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
18114|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
18115|      1|		UNDEF_RESULT();
  ------------------
  |  | 5907|      1|#define UNDEF_RESULT() do { \
  |  | 5908|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18116|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (18116:3): [True: 0, False: 1]
  |  Branch (18116:3): [True: 1, False: 0]
  ------------------
18117|      1|	}
18118|       |
18119|       |	/* This is the default return value
18120|       |	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
18121|      6|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      6|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 1, False: 5]
  |  |  ------------------
  ------------------
18122|      1|		ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
18123|      1|	}
18124|       |
18125|       |	/* This generator has no send target (though the generator we delegate to might have one) */
18126|      6|	generator->send_target = NULL;
18127|       |
18128|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
18129|       |	 * variable in execute_data so we don't resume at an old position. */
18130|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18131|       |
18132|      6|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      6|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      6|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
18133|      8|}
zend_execute.c:ZEND_YIELD_FROM_SPEC_CV_HANDLER:
40621|     10|{
40622|     10|	USE_OPLINE
40623|     10|	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
  ------------------
  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  ------------------
40624|     10|	zval *val;
40625|       |
40626|     10|	SAVE_OPLINE();
  ------------------
  |  |  428|     10|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40627|     10|	val = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     10|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     10|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40628|       |
40629|     10|	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
40630|      0|		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
40631|       |
40632|       |
40633|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40634|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40634:3): [True: 0, False: 0]
  |  Branch (40634:3): [True: 0, False: 0]
  ------------------
40635|      0|	}
40636|       |
40637|     10|yield_from_try_again:
40638|     10|	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  669|     10|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  613|     10|#define IS_ARRAY					7
  ------------------
  |  Branch (40638:6): [True: 0, False: 10]
  ------------------
40639|      0|		ZVAL_COPY_VALUE(&generator->values, val);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40640|      0|		if (Z_OPT_REFCOUNTED_P(val)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40641|      0|			Z_ADDREF_P(val);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40642|      0|		}
40643|      0|		Z_FE_POS(generator->values) = 0;
  ------------------
  |  |  692|      0|#define Z_FE_POS(zval)				(zval).u2.fe_pos
  ------------------
40644|       |
40645|       |
40646|     10|	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  867|     10|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  864|     20|#define IS_CONST	(1<<0)
  ------------------
              	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  669|     10|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  |  614|     20|#define IS_OBJECT					8
  ------------------
              	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
  ------------------
  |  | 1012|     10|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     10|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40646:13): [True: 10, Folded]
  |  Branch (40646:34): [True: 10, False: 0]
  |  Branch (40646:64): [True: 10, False: 0]
  ------------------
40647|     10|		zend_class_entry *ce = Z_OBJCE_P(val);
  ------------------
  |  | 1012|     10|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     10|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40648|     10|		if (ce == zend_ce_generator) {
  ------------------
  |  Branch (40648:7): [True: 10, False: 0]
  ------------------
40649|     10|			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
  ------------------
  |  | 1000|     10|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
40650|       |
40651|     10|			Z_ADDREF_P(val);
  ------------------
  |  | 1277|     10|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40652|       |
40653|       |
40654|     10|			if (UNEXPECTED(new_gen->execute_data == NULL)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 8]
  |  |  ------------------
  ------------------
40655|      2|				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
40656|      2|				zval_ptr_dtor(val);
40657|      2|				UNDEF_RESULT();
  ------------------
  |  | 5907|      2|#define UNDEF_RESULT() do { \
  |  | 5908|      2|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      2|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
40658|      2|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40658:5): [True: 0, False: 2]
  |  Branch (40658:5): [True: 2, False: 0]
  ------------------
40659|      8|			} else if (Z_ISUNDEF(new_gen->retval)) {
  ------------------
  |  |  966|      8|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      8|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 8, False: 0]
  |  |  ------------------
  ------------------
40660|      8|				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
40661|      0|					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
40662|      0|					zval_ptr_dtor(val);
40663|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40664|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40664:6): [True: 0, False: 0]
  |  Branch (40664:6): [True: 0, False: 0]
  ------------------
40665|      8|				} else {
40666|      8|					zend_generator_yield_from(generator, new_gen);
40667|      8|				}
40668|      8|			} else {
40669|      0|				if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      0|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40670|      0|					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40671|      0|				}
40672|      0|				ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40672:5): [True: 0, False: 0]
  |  Branch (40672:5): [True: 0, False: 0]
  ------------------
40673|      0|			}
40674|     10|		} else {
40675|      0|			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
40676|       |
40677|       |
40678|      0|			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40679|      0|				if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (40679:9): [True: 0, False: 0]
  ------------------
40680|      0|					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
40681|      0|				}
40682|      0|				UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40683|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40683:5): [True: 0, False: 0]
  |  Branch (40683:5): [True: 0, False: 0]
  ------------------
40684|      0|			}
40685|       |
40686|      0|			iter->index = 0;
40687|      0|			if (iter->funcs->rewind) {
  ------------------
  |  Branch (40687:8): [True: 0, False: 0]
  ------------------
40688|      0|				iter->funcs->rewind(iter);
40689|      0|				if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40690|      0|					OBJ_RELEASE(&iter->std);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
40691|      0|					UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40692|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40692:6): [True: 0, False: 0]
  |  Branch (40692:6): [True: 0, False: 0]
  ------------------
40693|      0|				}
40694|      0|			}
40695|       |
40696|      0|			ZVAL_OBJ(&generator->values, &iter->std);
  ------------------
  |  | 1140|      0|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      0|		zval *__z = (z);						\
  |  | 1142|      0|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40697|      0|		}
40698|     10|	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (40698:13): [True: 0, Folded]
  |  Branch (40698:41): [True: 0, False: 0]
  ------------------
40699|      0|		val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40700|      0|		goto yield_from_try_again;
40701|      0|	} else {
40702|      0|		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
40703|       |
40704|       |
40705|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40706|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40706:3): [True: 0, False: 0]
  |  Branch (40706:3): [True: 0, False: 0]
  ------------------
40707|      0|	}
40708|       |
40709|       |	/* This is the default return value
40710|       |	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
40711|      8|	if (RETURN_VALUE_USED(opline)) {
  ------------------
  |  |  132|      8|#define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED)
  |  |  ------------------
  |  |  |  |  863|      8|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (132:35): [True: 0, False: 8]
  |  |  ------------------
  ------------------
40712|      0|		ZVAL_NULL(EX_VAR(opline->result.var));
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40713|      0|	}
40714|       |
40715|       |	/* This generator has no send target (though the generator we delegate to might have one) */
40716|      8|	generator->send_target = NULL;
40717|       |
40718|       |	/* The GOTO VM uses a local opline variable. We need to set the opline
40719|       |	 * variable in execute_data so we don't resume at an old position. */
40720|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40721|       |
40722|      8|	ZEND_VM_RETURN();
  ------------------
  |  |  406|      8|# define ZEND_VM_RETURN()        return (const zend_op*)ZEND_VM_ENTER_BIT
  |  |  ------------------
  |  |  |  |  442|      8|# define ZEND_VM_ENTER_BIT         1ULL
  |  |  ------------------
  ------------------
40723|     10|}
zend_execute.c:ZEND_COPY_TMP_SPEC_TMPVAR_UNUSED_HANDLER:
16552|      8|{
16553|      8|	USE_OPLINE
16554|      8|	zval *value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      8|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      8|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
16555|      8|	zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
16556|      8|	ZVAL_COPY(result, value);
  ------------------
  |  | 1425|      8|	do {												\
  |  | 1426|      8|		zval *_z1 = (z);								\
  |  | 1427|      8|		const zval *_z2 = (v);							\
  |  | 1428|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      8|	do {												\
  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      8|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      8|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      8|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 3, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      3|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      3|		}												\
  |  | 1434|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
16557|      8|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      8|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (16557:2): [True: 0, False: 8]
  |  Branch (16557:2): [True: 8, False: 0]
  ------------------
16558|      8|}
zend_execute.c:ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER:
44679|     18|{
44680|     18|	USE_OPLINE
44681|     18|	zend_string *varname;
44682|     18|	zval *value;
44683|     18|	zval *variable_ptr;
44684|     18|	uintptr_t idx;
44685|     18|	zend_reference *ref;
44686|       |
44687|     20|	ZEND_VM_REPEATABLE_OPCODE
  ------------------
  |  | 5803|     20|	do {
  ------------------
44688|       |
44689|     20|	varname = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|     20|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     20|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
44690|       |
44691|       |	/* We store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
44692|     20|	idx = (uintptr_t)CACHED_PTR(opline->extended_value) - 1;
  ------------------
  |  |  527|     20|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|     20|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44693|     20|	if (EXPECTED(idx < EG(symbol_table).nNumUsed * sizeof(Bucket))) {
  ------------------
  |  |  456|     20|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 15]
  |  |  ------------------
  ------------------
44694|      5|		Bucket *p = (Bucket*)((char*)EG(symbol_table).arData + idx);
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
44695|       |
44696|      5|		if (EXPECTED(p->key == varname) ||
  ------------------
  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
44697|      0|		    (EXPECTED(p->h == ZSTR_H(varname)) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44698|      0|		     EXPECTED(p->key != NULL) &&
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44699|      5|		     EXPECTED(zend_string_equal_content(p->key, varname)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44700|       |
44701|      5|			value = (zval*)p; /* value = &p->val; */
44702|      5|			goto check_indirect;
44703|      5|		}
44704|      5|	}
44705|       |
44706|     15|	value = zend_hash_find_known_hash(&EG(symbol_table), varname);
  ------------------
  |  |   45|     15|# define EG(v) (executor_globals.v)
  ------------------
44707|     15|	if (UNEXPECTED(value == NULL)) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 12]
  |  |  ------------------
  ------------------
44708|      3|		value = zend_hash_add_new(&EG(symbol_table), varname, &EG(uninitialized_zval));
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
              		value = zend_hash_add_new(&EG(symbol_table), varname, &EG(uninitialized_zval));
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
44709|      3|		idx = (char*)value - (char*)EG(symbol_table).arData;
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
44710|       |		/* Store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
44711|      3|		CACHE_PTR(opline->extended_value, (void*)(idx + 1));
  ------------------
  |  |  529|      3|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      3|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
44712|     12|	} else {
44713|     12|		idx = (char*)value - (char*)EG(symbol_table).arData;
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
44714|       |		/* Store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
44715|     12|		CACHE_PTR(opline->extended_value, (void*)(idx + 1));
  ------------------
  |  |  529|     12|#define CACHE_PTR(num, ptr) do { \
  |  |  530|     12|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
44716|     17|check_indirect:
44717|       |		/* GLOBAL variable may be an INDIRECT pointer to CV */
44718|     17|		if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
  ------------------
  |  |  457|     17|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 6]
  |  |  ------------------
  ------------------
44719|     11|			value = Z_INDIRECT_P(value);
  ------------------
  |  | 1044|     11|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|     11|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
44720|     11|			if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
  ------------------
  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 9]
  |  |  ------------------
  ------------------
44721|      2|				ZVAL_NULL(value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
44722|      2|			}
44723|     11|		}
44724|     17|	}
44725|       |
44726|     20|	if (UNEXPECTED(!Z_ISREF_P(value))) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 10]
  |  |  ------------------
  ------------------
44727|     10|		ZVAL_MAKE_REF_EX(value, 2);
  ------------------
  |  | 1216|     10|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|     10|		zval *_z = (z);											\
  |  | 1218|     10|		zend_reference *_ref =									\
  |  | 1219|     10|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|     10|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|     10|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|     10|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     10|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     10|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     10|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     10|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     10|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|     10|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|     10|	do {												\
  |  |  |  | 1417|     10|		zval *_z1 = (z);								\
  |  |  |  | 1418|     10|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     10|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     10|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     10|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     10|	do {												\
  |  |  |  |  |  | 1408|     10|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     10|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     10|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     10|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     10|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|     10|		_ref->sources.ptr = NULL;									\
  |  | 1224|     10|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     10|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|     10|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     10|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     10|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
44728|     10|		ref = Z_REF_P(value);
  ------------------
  |  | 1030|     10|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
44729|     10|	} else {
44730|     10|		ref = Z_REF_P(value);
  ------------------
  |  | 1030|     10|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
44731|     10|		GC_ADDREF(ref);
  ------------------
  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
44732|     10|	}
44733|       |
44734|     20|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     20|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     20|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
44735|       |
44736|     20|	if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
  ------------------
  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 11, False: 9]
  |  |  ------------------
  ------------------
44737|     11|		zend_refcounted *garbage = Z_COUNTED_P(variable_ptr);
  ------------------
  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
44738|       |
44739|     11|		ZVAL_REF(variable_ptr, ref);
  ------------------
  |  | 1189|     11|#define ZVAL_REF(z, r) do {										\
  |  | 1190|     11|		zval *__z = (z);										\
  |  | 1191|     11|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|     11|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     11|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|     11|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     11|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     11|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     11|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
44740|     11|		SAVE_OPLINE();
  ------------------
  |  |  428|     11|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     11|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
44741|     11|		if (GC_DELREF(garbage) == 0) {
  ------------------
  |  |  719|     11|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  |  Branch (44741:7): [True: 0, False: 11]
  ------------------
44742|      0|			rc_dtor_func(garbage);
44743|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
44744|      0|				ZVAL_NULL(variable_ptr);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
44745|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (44745:5): [True: 0, False: 0]
  |  Branch (44745:5): [True: 0, False: 0]
  ------------------
44746|      0|			}
44747|     11|		} else {
44748|     11|			gc_check_possible_root(garbage);
44749|     11|		}
44750|     11|	} else {
44751|      9|		ZVAL_REF(variable_ptr, ref);
  ------------------
  |  | 1189|      9|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      9|		zval *__z = (z);										\
  |  | 1191|      9|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      9|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      9|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      9|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      9|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      9|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
44752|      9|	}
44753|       |
44754|     20|	ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
  ------------------
  |  | 5805|     20|	} while (UNEXPECTED((++opline)->opcode == _opcode)); \
  |  |  ------------------
  |  |  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 2, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5806|     18|	OPLINE = opline; \
  |  |  ------------------
  |  |  |  |  423|     18|# define OPLINE opline
  |  |  ------------------
  |  | 5807|     18|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     18|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
44755|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     18|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44755:2): [True: 0, False: 0]
  |  Branch (44755:2): [True: 0, False: 0]
  ------------------
44756|      0|}
zend_execute.c:ZEND_COALESCE_SPEC_CONST_HANDLER:
 5786|      6|{
 5787|      6|	USE_OPLINE
 5788|      6|	zval *value;
 5789|      6|	zend_reference *ref = NULL;
 5790|       |
 5791|      6|	SAVE_OPLINE();
  ------------------
  |  |  428|      6|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5792|      6|	value = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      6|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5793|       |
 5794|      6|	if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      6|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      6|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5794:6): [Folded, False: 6]
  ------------------
 5795|      0|		if (IS_CONST & IS_VAR) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (5795:7): [Folded, False: 0]
  ------------------
 5796|      0|			ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
 5797|      0|		}
 5798|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5799|      0|	}
 5800|       |
 5801|      6|	if (Z_TYPE_P(value) > IS_NULL) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) > IS_NULL) {
  ------------------
  |  |  607|      6|#define IS_NULL						1
  ------------------
  |  Branch (5801:6): [True: 6, False: 0]
  ------------------
 5802|      6|		zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      6|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      6|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5803|      6|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 5804|      6|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (5804:7): [True: 6, Folded]
  ------------------
 5805|      6|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5806|      6|		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5806:14): [Folded, False: 0]
  ------------------
 5807|      0|			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5808|      0|		} else if ((IS_CONST & IS_VAR) && ref) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & IS_VAR) && ref) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (5808:14): [Folded, False: 0]
  |  Branch (5808:37): [True: 0, False: 0]
  ------------------
 5809|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5810|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5811|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5812|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 5813|      0|			}
 5814|      0|		}
 5815|      6|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      6|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      6|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 6]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      6|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      6|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      6|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      6|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      6|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      6|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      6|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5815:3): [True: 0, False: 0]
  |  Branch (5815:3): [True: 0, False: 0]
  ------------------
 5816|      6|	}
 5817|       |
 5818|      0|	if ((IS_CONST & IS_VAR) && ref) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              	if ((IS_CONST & IS_VAR) && ref) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (5818:6): [Folded, False: 0]
  |  Branch (5818:29): [True: 0, False: 0]
  ------------------
 5819|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5820|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5821|      0|		}
 5822|      0|	}
 5823|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5823:2): [True: 0, False: 0]
  |  Branch (5823:2): [True: 0, False: 0]
  ------------------
 5824|      0|}
zend_execute.c:ZEND_COALESCE_SPEC_TMP_HANDLER:
17911|     17|{
17912|     17|	USE_OPLINE
17913|     17|	zval *value;
17914|     17|	zend_reference *ref = NULL;
17915|       |
17916|     17|	SAVE_OPLINE();
  ------------------
  |  |  428|     17|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     17|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17917|     17|	value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     17|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     17|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17918|       |
17919|     17|	if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  865|     17|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|     17|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|     17|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17919:6): [Folded, False: 17]
  ------------------
17920|      0|		if (IS_TMP_VAR & IS_VAR) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17920:7): [Folded, False: 0]
  ------------------
17921|      0|			ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
17922|      0|		}
17923|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17924|      0|	}
17925|       |
17926|     17|	if (Z_TYPE_P(value) > IS_NULL) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) > IS_NULL) {
  ------------------
  |  |  607|     17|#define IS_NULL						1
  ------------------
  |  Branch (17926:6): [True: 2, False: 15]
  ------------------
17927|      2|		zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17928|      2|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
17929|      2|		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (17929:7): [Folded, False: 2]
  ------------------
17930|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17931|      2|		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17931:14): [Folded, False: 2]
  ------------------
17932|      0|			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17933|      2|		} else if ((IS_TMP_VAR & IS_VAR) && ref) {
  ------------------
  |  |  865|      2|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR & IS_VAR) && ref) {
  ------------------
  |  |  866|      2|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17933:14): [Folded, False: 2]
  |  Branch (17933:39): [True: 0, False: 0]
  ------------------
17934|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17935|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17936|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17937|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
17938|      0|			}
17939|      0|		}
17940|      2|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 2]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17940:3): [True: 0, False: 0]
  |  Branch (17940:3): [True: 0, False: 0]
  ------------------
17941|      2|	}
17942|       |
17943|     15|	if ((IS_TMP_VAR & IS_VAR) && ref) {
  ------------------
  |  |  865|     15|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if ((IS_TMP_VAR & IS_VAR) && ref) {
  ------------------
  |  |  866|     15|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (17943:6): [Folded, False: 15]
  |  Branch (17943:31): [True: 0, False: 0]
  ------------------
17944|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17945|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17946|      0|		}
17947|      0|	}
17948|     15|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     15|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     15|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     15|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     15|	} else { \
  |  |  |  | 5761|     15|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     15|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     15|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     15|	} \
  |  |  |  | 5764|     15|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     15|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17948:2): [True: 0, False: 15]
  |  Branch (17948:2): [True: 15, False: 0]
  ------------------
17949|     15|}
zend_execute.c:ZEND_COALESCE_SPEC_CV_HANDLER:
40497|      1|{
40498|      1|	USE_OPLINE
40499|      1|	zval *value;
40500|      1|	zend_reference *ref = NULL;
40501|       |
40502|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40503|      1|	value = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40504|       |
40505|      1|	if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              	if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40505:6): [True: 1, Folded]
  ------------------
40506|      0|		if (IS_CV & IS_VAR) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV & IS_VAR) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (40506:7): [Folded, False: 0]
  ------------------
40507|      0|			ref = Z_REF_P(value);
  ------------------
  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
40508|      0|		}
40509|      0|		value = Z_REFVAL_P(value);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40510|      0|	}
40511|       |
40512|      1|	if (Z_TYPE_P(value) > IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) > IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (40512:6): [True: 0, False: 1]
  ------------------
40513|      0|		zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40514|      0|		ZVAL_COPY_VALUE(result, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40515|      0|		if (IS_CV == IS_CONST) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (40515:7): [Folded, False: 0]
  ------------------
40516|      0|			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40517|      0|		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40517:14): [True: 0, Folded]
  ------------------
40518|      0|			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40519|      0|		} else if ((IS_CV & IS_VAR) && ref) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & IS_VAR) && ref) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (40519:14): [Folded, False: 0]
  |  Branch (40519:34): [True: 0, False: 0]
  ------------------
40520|      0|			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40521|      0|				efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40522|      0|			} else if (Z_OPT_REFCOUNTED_P(result)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40523|      0|				Z_ADDREF_P(result);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40524|      0|			}
40525|      0|		}
40526|      0|		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      0|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      0|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 0]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      0|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      0|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40526:3): [True: 0, False: 0]
  |  Branch (40526:3): [True: 0, False: 0]
  ------------------
40527|      0|	}
40528|       |
40529|      1|	if ((IS_CV & IS_VAR) && ref) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if ((IS_CV & IS_VAR) && ref) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
  |  Branch (40529:6): [Folded, False: 1]
  |  Branch (40529:26): [True: 0, False: 0]
  ------------------
40530|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
40531|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40532|      0|		}
40533|      0|	}
40534|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40534:2): [True: 0, False: 1]
  |  Branch (40534:2): [True: 1, False: 0]
  ------------------
40535|      1|}
zend_execute.c:ZEND_SPACESHIP_SPEC_CONST_TMP_HANDLER:
 9558|      1|{
 9559|      1|	USE_OPLINE
 9560|      1|	zval *op1, *op2;
 9561|       |
 9562|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 9563|      1|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 9564|      1|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 9565|      1|	compare_function(EX_VAR(opline->result.var), op1, op2);
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9566|       |
 9567|       |
 9568|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 9569|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9569:2): [True: 0, False: 0]
  |  Branch (9569:2): [True: 0, False: 0]
  ------------------
 9570|      1|}
zend_execute.c:ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER:
37408|      3|{
37409|      3|	USE_OPLINE
37410|      3|	zend_array *ht;
37411|      3|	uint32_t arg_count, result_size, skip;
37412|       |
37413|      3|	arg_count = EX_NUM_ARGS();
  ------------------
  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  ------------------
  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  ------------------
  ------------------
37414|      3|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      3|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (37414:6): [Folded, False: 3]
  ------------------
37415|      0|		skip = Z_LVAL_P(RT_CONSTANT(opline, opline->op1));
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
37416|      0|		if (arg_count < skip) {
  ------------------
  |  Branch (37416:7): [True: 0, False: 0]
  ------------------
37417|      0|			result_size = 0;
37418|      0|		} else {
37419|      0|			result_size = arg_count - skip;
37420|      0|		}
37421|      3|	} else {
37422|      3|		skip = 0;
37423|      3|		result_size = arg_count;
37424|      3|	}
37425|       |
37426|      3|	if (result_size) {
  ------------------
  |  Branch (37426:6): [True: 3, False: 0]
  ------------------
37427|      3|		SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37428|      3|		uint32_t first_extra_arg = EX(func)->op_array.num_args;
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
37429|       |
37430|      3|		ht = zend_new_array(result_size);
  ------------------
  |  |  342|      3|	_zend_new_array(size)
  ------------------
37431|      3|		ZVAL_ARR(EX_VAR(opline->result.var), ht);
  ------------------
  |  | 1125|      3|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      3|		zend_array *__arr = (a);				\
  |  | 1127|      3|		zval *__z = (z);						\
  |  | 1128|      3|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      3|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      3|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      3|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      3|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
37432|      3|		zend_hash_real_init_packed(ht);
37433|      3|		ZEND_HASH_FILL_PACKED(ht) {
  ------------------
  |  | 1542|      3|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      3|		HashTable *__fill_ht = (ht); \
  |  | 1544|      3|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      3|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      3|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (37433:3): [True: 0, False: 3]
  |  Branch (37433:3): [True: 3, False: 0]
  ------------------
37434|      3|			zval *p, *q;
37435|      3|			uint32_t i = skip;
37436|      3|			p = EX_VAR_NUM(i);
  ------------------
  |  |  756|      3|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37437|      3|			if (arg_count > first_extra_arg) {
  ------------------
  |  Branch (37437:8): [True: 3, False: 0]
  ------------------
37438|      3|				while (i < first_extra_arg) {
  ------------------
  |  Branch (37438:12): [True: 0, False: 3]
  ------------------
37439|      0|					q = p;
37440|      0|					if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
37441|      0|						ZVAL_DEREF(q);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37442|      0|						if (Z_OPT_REFCOUNTED_P(q)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37443|      0|							Z_ADDREF_P(q);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
37444|      0|						}
37445|      0|						ZEND_HASH_FILL_SET(q);
  ------------------
  |  | 1559|      0|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37446|      0|					} else {
37447|      0|						ZEND_HASH_FILL_SET_NULL();
  ------------------
  |  | 1562|      0|		ZVAL_NULL(__fill_val)
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37448|      0|					}
37449|      0|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|      0|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|      0|		__fill_val++; \
  |  | 1581|      0|		__fill_idx++; \
  |  | 1582|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37450|      0|					p++;
37451|      0|					i++;
37452|      0|				}
37453|      3|				if (skip < first_extra_arg) {
  ------------------
  |  Branch (37453:9): [True: 0, False: 3]
  ------------------
37454|      0|					skip = 0;
37455|      3|				} else {
37456|      3|					skip -= first_extra_arg;
37457|      3|				}
37458|      3|				p = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T + skip);
  ------------------
  |  |  756|      3|#define EX_VAR_NUM(n)			ZEND_CALL_VAR_NUM(execute_data, n)
  |  |  ------------------
  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  ------------------
  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37459|      3|			}
37460|      7|			while (i < arg_count) {
  ------------------
  |  Branch (37460:11): [True: 4, False: 3]
  ------------------
37461|      4|				q = p;
37462|      4|				if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  ------------------
  ------------------
37463|      4|					ZVAL_DEREF(q);
  ------------------
  |  | 1474|      4|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      4|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
37464|      4|					if (Z_OPT_REFCOUNTED_P(q)) {
  ------------------
  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37465|      2|						Z_ADDREF_P(q);
  ------------------
  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
37466|      2|					}
37467|      4|					ZEND_HASH_FILL_SET(q);
  ------------------
  |  | 1559|      4|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1416|      4|	do {												\
  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37468|      4|				} else {
37469|      0|					ZEND_HASH_FILL_SET_NULL();
  ------------------
  |  | 1562|      0|		ZVAL_NULL(__fill_val)
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
37470|      0|				}
37471|      4|				ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|      4|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|      4|		__fill_val++; \
  |  | 1581|      4|		__fill_idx++; \
  |  | 1582|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
37472|      4|				p++;
37473|      4|				i++;
37474|      4|			}
37475|      3|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      3|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      3|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      3|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      3|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      3|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      3|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
37476|      3|		ht->nNumOfElements = result_size;
37477|      3|	} else {
37478|      0|		ZVAL_EMPTY_ARRAY(EX_VAR(opline->result.var));
  ------------------
  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      0|		zval *__z = (z);								\
  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37479|      0|	}
37480|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37480:2): [True: 0, False: 3]
  |  Branch (37480:2): [True: 3, False: 0]
  ------------------
37481|      3|}
zend_execute.c:ZEND_FETCH_STATIC_PROP_R_SPEC_HANDLER:
  926|     18|{
  927|     18|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_static_prop_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_R));
  ------------------
  |  |  410|     18|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|     18|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
  928|     18|}
zend_execute.c:zend_fetch_static_prop_helper_SPEC:
  891|     35|{
  892|     35|	USE_OPLINE
  893|     35|	zval *prop;
  894|     35|	zend_property_info *prop_info;
  895|       |
  896|     35|	SAVE_OPLINE();
  ------------------
  |  |  428|     35|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     35|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  897|       |
  898|     35|	prop = zend_fetch_static_property_address(
  899|     35|		&prop_info, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type,
  ------------------
  |  | 1099|     35|#define ZEND_FETCH_OBJ_FLAGS	3
  ------------------
  900|     35|		type == BP_VAR_W ? opline->extended_value : 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  | 1075|     35|#define BP_VAR_W			1
  ------------------
              		type == BP_VAR_W ? opline->extended_value : 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|     35|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|     35|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		type == BP_VAR_W ? opline->extended_value : 0 OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|     35|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     35|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
  |  Branch (900:3): [True: 7, False: 28]
  ------------------
  901|     35|	if (UNEXPECTED(!prop)) {
  ------------------
  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 12, False: 23]
  |  |  ------------------
  ------------------
  902|     12|		ZEND_ASSERT(EG(exception) || (type == BP_VAR_IS) || (type == BP_VAR_UNSET));
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (902:3): [True: 12, False: 0]
  |  Branch (902:3): [True: 0, False: 0]
  |  Branch (902:3): [True: 0, False: 0]
  |  Branch (902:3): [True: 8, False: 4]
  |  Branch (902:3): [True: 1, False: 3]
  |  Branch (902:3): [True: 3, False: 0]
  ------------------
  903|     12|		prop = &EG(uninitialized_zval);
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
  904|     23|	} else if (UNEXPECTED(prop_info->flags & ZEND_ACC_PPP_SET_MASK)
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  ------------------
  ------------------
  905|      0|	 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
              	 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
              	 && (type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET)
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (905:7): [True: 0, False: 0]
  |  Branch (905:27): [True: 0, False: 0]
  |  Branch (905:48): [True: 0, False: 0]
  ------------------
  906|      0|	 && UNEXPECTED(!zend_asymmetric_property_has_set_access(prop_info))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  907|      0|		if (Z_TYPE_P(prop) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(prop) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (907:7): [True: 0, False: 0]
  ------------------
  908|      0|			goto copy_deref;
  909|      0|		} else if (type != BP_VAR_UNSET || Z_TYPE_P(prop) != IS_UNDEF) {
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
              		} else if (type != BP_VAR_UNSET || Z_TYPE_P(prop) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (type != BP_VAR_UNSET || Z_TYPE_P(prop) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (909:14): [True: 0, False: 0]
  |  Branch (909:38): [True: 0, False: 0]
  ------------------
  910|      0|			zend_asymmetric_visibility_property_modification_error(prop_info, "indirectly modify");
  911|      0|		}
  912|      0|		prop = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  913|      0|	}
  914|       |
  915|     35|	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1074|     70|#define BP_VAR_R			0
  ------------------
              	if (type == BP_VAR_R || type == BP_VAR_IS) {
  ------------------
  |  | 1077|     17|#define BP_VAR_IS			3
  ------------------
  |  Branch (915:6): [True: 18, False: 17]
  |  Branch (915:26): [True: 1, False: 16]
  ------------------
  916|     19|copy_deref:
  917|     19|		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
  ------------------
  |  | 1508|     19|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  | 1509|     19|		zval *_z3 = (v);								\
  |  | 1510|     19|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  ------------------
  |  |  |  |  955|     19|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|     19|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|     19|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|     19|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 4, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1511|      4|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  ------------------
  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1515|      0|				}										\
  |  | 1516|      4|			} else {									\
  |  | 1517|      4|				Z_ADDREF_P(_z3);						\
  |  |  ------------------
  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1518|      4|			}											\
  |  | 1519|      4|		}												\
  |  | 1520|     19|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  ------------------
  |  |  |  | 1416|     19|	do {												\
  |  |  |  | 1417|     19|		zval *_z1 = (z);								\
  |  |  |  | 1418|     19|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     19|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     19|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     19|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     19|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     19|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     19|	do {												\
  |  |  |  |  |  | 1408|     19|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     19|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     19|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     19|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     19|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     19|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1521|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1521:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
  918|     19|	} else {
  919|     16|		ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
  ------------------
  |  | 1246|     16|#define ZVAL_INDIRECT(z, v) do {								\
  |  | 1247|     16|		Z_INDIRECT_P(z) = (v);									\
  |  |  ------------------
  |  |  |  | 1044|     16|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|     16|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1248|     16|		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_INDIRECT;							\
  |  |  ------------------
  |  |  |  |  629|     16|#define IS_INDIRECT             	12
  |  |  ------------------
  |  | 1249|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1249:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  920|     16|	}
  921|     35|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|     35|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|     35|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     35|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 35, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|     35|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     35|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     35|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     35|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|     35|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     35|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (921:2): [True: 0, False: 0]
  |  Branch (921:2): [True: 0, False: 0]
  ------------------
  922|     35|}
zend_execute.c:ZEND_FETCH_STATIC_PROP_W_SPEC_HANDLER:
  932|      7|{
  933|      7|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_static_prop_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_W));
  ------------------
  |  |  410|      7|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      7|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
  934|      7|}
zend_execute.c:ZEND_FETCH_STATIC_PROP_IS_SPEC_HANDLER:
  960|      1|{
  961|      1|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_static_prop_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_IS));
  ------------------
  |  |  410|      1|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      1|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
  962|      1|}
zend_execute.c:ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_HANDLER:
  944|      3|{
  945|      3|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  946|      0|		ZEND_VM_TAIL_CALL(ZEND_FETCH_STATIC_PROP_W_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
  947|      3|	} else {
  948|      3|		ZEND_VM_TAIL_CALL(ZEND_FETCH_STATIC_PROP_R_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
  949|      3|	}
  950|      3|}
zend_execute.c:ZEND_FETCH_STATIC_PROP_UNSET_SPEC_HANDLER:
  954|      9|{
  955|      9|	ZEND_VM_DISPATCH_TO_HELPER(zend_fetch_static_prop_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX BP_VAR_UNSET));
  ------------------
  |  |  410|      9|#define ZEND_VM_DISPATCH_TO_HELPER(call) ZEND_VM_TAIL_CALL(call)
  |  |  ------------------
  |  |  |  |  404|      9|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  ------------------
  ------------------
  956|      9|}
zend_execute.c:ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER:
 7817|    120|{
 7818|    120|	zend_class_entry *ce, *scope;
 7819|    120|	zend_class_constant *c;
 7820|    120|	zval *value, *zv, *constant_zv;
 7821|    120|	zend_string *constant_name;
 7822|    120|	USE_OPLINE
 7823|       |
 7824|    120|	SAVE_OPLINE();
  ------------------
  |  |  428|    120|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    120|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7825|       |
 7826|    120|	do {
 7827|    120|		if (IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    120|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    240|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7827:7): [True: 0, Folded]
  |  Branch (7827:31): [True: 0, Folded]
  ------------------
 7828|    120|			if (EXPECTED(CACHED_PTR(opline->extended_value + sizeof(void*)))) {
  ------------------
  |  |  456|    120|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 120]
  |  |  ------------------
  ------------------
 7829|      0|				value = CACHED_PTR(opline->extended_value + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7830|      0|				break;
 7831|      0|			}
 7832|    120|		}
 7833|    120|		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    120|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|    120|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7833:7): [True: 120, Folded]
  ------------------
 7834|    120|			if (EXPECTED(CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|    120|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 120]
  |  |  ------------------
  ------------------
 7835|      0|				ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7836|    120|			} else {
 7837|    120|				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|    120|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    120|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|    120|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    120|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|    120|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|    120|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
 7838|    120|				if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|    120|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 14, False: 106]
  |  |  ------------------
  ------------------
 7839|     14|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|     14|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     14|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     14|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 7840|       |
 7841|       |
 7842|     14|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|     14|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|     14|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|     14|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     14|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7842:6): [True: 0, False: 14]
  |  Branch (7842:6): [True: 14, False: 0]
  ------------------
 7843|     14|				}
 7844|    106|				CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|    106|#define CACHE_PTR(num, ptr) do { \
  |  |  530|    106|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|    106|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|    106|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 106]
  |  |  ------------------
  ------------------
 7845|    106|			}
 7846|    120|		} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_UNUSED) {
  ------------------
  |  |  863|      0|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (7846:14): [Folded, False: 0]
  ------------------
 7847|      0|			ce = zend_fetch_class(NULL, opline->op1.num);
 7848|      0|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7849|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7850|       |
 7851|       |
 7852|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7852:5): [True: 0, False: 0]
  |  Branch (7852:5): [True: 0, False: 0]
  ------------------
 7853|      0|			}
 7854|      0|		} else {
 7855|      0|			ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
 7856|      0|		}
 7857|    106|		if (IS_CONST != IS_CONST
  ------------------
  |  |  864|    106|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST
  ------------------
  |  |  864|    212|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7857:7): [Folded, False: 106]
  ------------------
 7858|      0|			&& IS_CONST == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			&& IS_CONST == IS_CONST
  ------------------
  |  |  864|    106|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7858:7): [True: 0, Folded]
  ------------------
 7859|      0|			&& EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7860|      0|			value = CACHED_PTR(opline->extended_value + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7861|      0|			break;
 7862|      0|		}
 7863|       |
 7864|    106|		constant_zv = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|    106|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 7865|    106|		if (UNEXPECTED(Z_TYPE_P(constant_zv) != IS_STRING)) {
  ------------------
  |  |  457|    106|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 106]
  |  |  ------------------
  ------------------
 7866|      0|			zend_invalid_class_constant_type_error(Z_TYPE_P(constant_zv));
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 7867|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7868|       |
 7869|       |
 7870|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7870:4): [True: 0, False: 0]
  |  Branch (7870:4): [True: 0, False: 0]
  ------------------
 7871|      0|		}
 7872|    106|		constant_name = Z_STR_P(constant_zv);
  ------------------
  |  |  982|    106|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    106|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 7873|       |		/* Magic 'class' for constant OP2 is caught at compile-time */
 7874|    106|		if (IS_CONST != IS_CONST && UNEXPECTED(zend_string_equals_literal_ci(constant_name, "class"))) {
  ------------------
  |  |  864|    106|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(zend_string_equals_literal_ci(constant_name, "class"))) {
  ------------------
  |  |  864|    212|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(zend_string_equals_literal_ci(constant_name, "class"))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7874:7): [Folded, False: 106]
  ------------------
 7875|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7876|       |
 7877|       |
 7878|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7878:4): [True: 0, False: 0]
  |  Branch (7878:4): [True: 0, False: 0]
  ------------------
 7879|      0|		}
 7880|    106|		zv = IS_CONST == IS_CONST
  ------------------
  |  |  864|    106|#define IS_CONST	(1<<0)
  ------------------
              		zv = IS_CONST == IS_CONST
  ------------------
  |  |  864|    106|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7880:8): [True: 106, Folded]
  ------------------
 7881|    106|			? zend_hash_find_known_hash(CE_CONSTANTS_TABLE(ce), constant_name)
  ------------------
  |  |  334|    106|	zend_class_constants_table(ce)
  ------------------
 7882|    106|			: zend_hash_find(CE_CONSTANTS_TABLE(ce), constant_name);
  ------------------
  |  |  334|      0|	zend_class_constants_table(ce)
  ------------------
 7883|       |
 7884|    106|		if (EXPECTED(zv != NULL)) {
  ------------------
  |  |  456|    106|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 104, False: 2]
  |  |  ------------------
  ------------------
 7885|    104|			c = Z_PTR_P(zv);
  ------------------
  |  | 1053|    104|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    104|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 7886|    104|			scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|    104|#define EX(element) 			((execute_data)->element)
  ------------------
 7887|    104|			if (!zend_verify_const_access(c, scope)) {
  ------------------
  |  Branch (7887:8): [True: 1, False: 103]
  ------------------
 7888|      1|				zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |  498|      1|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      1|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              				zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7889|      1|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7890|       |
 7891|       |
 7892|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7892:5): [True: 0, False: 1]
  |  Branch (7892:5): [True: 1, False: 0]
  ------------------
 7893|      1|			}
 7894|       |
 7895|    103|			if (ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|    103|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (7895:8): [True: 1, False: 102]
  ------------------
 7896|      1|				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7897|      1|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7898|       |
 7899|       |
 7900|      1|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7900:5): [True: 0, False: 1]
  |  Branch (7900:5): [True: 1, False: 0]
  ------------------
 7901|      1|			}
 7902|       |
 7903|    103|			bool is_constant_deprecated = ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED;
  ------------------
  |  |  498|    102|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|    102|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			bool is_constant_deprecated = ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|    102|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
 7904|    102|			if (UNEXPECTED(is_constant_deprecated) && !CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |  457|    204|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 99]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(is_constant_deprecated) && !CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |   31|      3|#define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               #define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |   29|      3|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  ------------------
  |  Branch (7904:46): [True: 3, False: 0]
  ------------------
 7905|      3|				if (c->ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (7905:9): [True: 3, False: 0]
  ------------------
 7906|       |					/* Recursion protection only applied to user constants, GH-18463 */
 7907|      3|					CONST_PROTECT_RECURSION(c);
  ------------------
  |  |   33|      3|	do { \
  |  |   34|      3|		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      3|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   35|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (35:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 7908|      3|				}
 7909|      3|				zend_deprecated_class_constant(c, constant_name);
 7910|      3|				if (c->ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (7910:9): [True: 3, False: 0]
  ------------------
 7911|      3|					CONST_UNPROTECT_RECURSION(c);
  ------------------
  |  |   37|      3|	do { \
  |  |   38|      3|		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      3|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   39|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (39:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 7912|      3|				}
 7913|       |
 7914|      3|				if (EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 7915|      0|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7916|       |
 7917|       |
 7918|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7918:6): [True: 0, False: 0]
  |  Branch (7918:6): [True: 0, False: 0]
  ------------------
 7919|      0|				}
 7920|      3|			}
 7921|       |
 7922|    102|			value = &c->value;
 7923|       |			// Enums require loading of all class constants to build the backed enum table
 7924|    102|			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  284|    204|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
              			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  606|    177|#define IS_UNDEF					0
  ------------------
              			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  298|     21|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
  |  Branch (7924:8): [True: 75, False: 27]
  |  Branch (7924:40): [True: 21, False: 54]
  |  Branch (7924:77): [True: 21, False: 0]
  |  Branch (7924:108): [True: 14, False: 7]
  ------------------
 7925|     14|				if (UNEXPECTED(zend_update_class_constants(ce) == FAILURE)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 13]
  |  |  ------------------
  ------------------
 7926|      1|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7927|       |
 7928|       |
 7929|      1|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7929:6): [True: 0, False: 1]
  |  Branch (7929:6): [True: 1, False: 0]
  ------------------
 7930|      1|				}
 7931|     14|			}
 7932|    101|			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|    101|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    101|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|    101|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (7932:8): [True: 57, False: 44]
  ------------------
 7933|     57|				if (UNEXPECTED(zend_update_class_constant(c, constant_name, c->ce) != SUCCESS)) {
  ------------------
  |  |  457|     57|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 7, False: 50]
  |  |  ------------------
  ------------------
 7934|      7|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      7|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      7|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 7935|       |
 7936|       |
 7937|      7|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      7|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      7|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7937:6): [True: 0, False: 7]
  |  Branch (7937:6): [True: 7, False: 0]
  ------------------
 7938|      7|				}
 7939|     57|			}
 7940|     94|			if (IS_CONST == IS_CONST && !is_constant_deprecated) {
  ------------------
  |  |  864|     94|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && !is_constant_deprecated) {
  ------------------
  |  |  864|    188|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (7940:8): [True: 94, Folded]
  |  Branch (7940:32): [True: 91, False: 3]
  ------------------
 7941|     91|				CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, value);
  ------------------
  |  |  538|     91|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|     91|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|     91|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|     91|		slot[0] = (ce); \
  |  |  541|     91|		slot[1] = (ptr); \
  |  |  542|     91|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 91]
  |  |  ------------------
  ------------------
 7942|     91|			}
 7943|     94|		} else {
 7944|      2|			zend_throw_error(NULL, "Undefined constant %s::%s",
 7945|      2|				ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7946|      2|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 7947|       |
 7948|       |
 7949|      2|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (7949:4): [True: 0, False: 2]
  |  Branch (7949:4): [True: 2, False: 0]
  ------------------
 7950|      2|		}
 7951|    106|	} while (0);
  ------------------
  |  Branch (7951:11): [Folded, False: 94]
  ------------------
 7952|       |
 7953|     94|	ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1457|     94|	do {																\
  |  | 1458|     94|		zval *_z1 = (z);												\
  |  | 1459|     94|		const zval *_z2 = (v);											\
  |  | 1460|     94|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|     94|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     94|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|     94|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|     94|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     94|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|     94|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|     94|	do {												\
  |  |  |  | 1408|     94|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     94|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     94|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     94|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     94|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     94|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     94|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 94]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|     94|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|     94|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     94|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 86, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|     86|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|     86|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|     88|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 86, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 84, False: 2]
  |  |  |  |  |  Branch (456:52): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|     86|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|     86|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|     86|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|     86|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|     86|		}																\
  |  | 1472|     94|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 94]
  |  |  ------------------
  ------------------
 7954|       |
 7955|       |
 7956|     94|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     94|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     94|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     94|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 94]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     94|	} else { \
  |  |  |  | 5761|     94|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     94|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     94|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     94|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     94|	} \
  |  |  |  | 5764|     94|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     94|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7956:2): [True: 0, False: 94]
  |  Branch (7956:2): [True: 94, False: 0]
  ------------------
 7957|     94|}
zend_execute.c:ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER:
34482|      1|{
34483|      1|	zend_class_entry *ce, *scope;
34484|      1|	zend_class_constant *c;
34485|      1|	zval *value, *zv, *constant_zv;
34486|      1|	zend_string *constant_name;
34487|      1|	USE_OPLINE
34488|       |
34489|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34490|       |
34491|      1|	do {
34492|      1|		if (IS_UNUSED == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_UNUSED == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_UNUSED == IS_CONST && IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34492:7): [Folded, False: 1]
  |  Branch (34492:32): [True: 0, Folded]
  ------------------
34493|      0|			if (EXPECTED(CACHED_PTR(opline->extended_value + sizeof(void*)))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34494|      0|				value = CACHED_PTR(opline->extended_value + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34495|      0|				break;
34496|      0|			}
34497|      0|		}
34498|      1|		if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34498:7): [Folded, False: 1]
  ------------------
34499|      0|			if (EXPECTED(CACHED_PTR(opline->extended_value))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34500|      0|				ce = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34501|      0|			} else {
34502|      0|				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1042|      0|#define ZEND_FETCH_CLASS_DEFAULT	0
  ------------------
              				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      0|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
34503|      0|				if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34504|      0|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34505|       |
34506|       |
34507|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34507:6): [True: 0, False: 0]
  |  Branch (34507:6): [True: 0, False: 0]
  ------------------
34508|      0|				}
34509|      0|				CACHE_PTR(opline->extended_value, ce);
  ------------------
  |  |  529|      0|#define CACHE_PTR(num, ptr) do { \
  |  |  530|      0|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34510|      0|			}
34511|      1|		} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		} else if (IS_UNUSED == IS_UNUSED) {
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (34511:14): [True: 1, Folded]
  ------------------
34512|      1|			ce = zend_fetch_class(NULL, opline->op1.num);
34513|      1|			if (UNEXPECTED(ce == NULL)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34514|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34515|       |
34516|       |
34517|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34517:5): [True: 0, False: 0]
  |  Branch (34517:5): [True: 0, False: 0]
  ------------------
34518|      0|			}
34519|      1|		} else {
34520|      0|			ce = Z_CE_P(EX_VAR(opline->op1.var));
  ------------------
  |  | 1047|      0|#define Z_CE_P(zval_p)				Z_CE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  ------------------
34521|      0|		}
34522|      1|		if (IS_UNUSED != IS_CONST
  ------------------
  |  |  863|      1|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              		if (IS_UNUSED != IS_CONST
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34522:7): [True: 0, Folded]
  ------------------
34523|      0|			&& IS_CONST == IS_CONST
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			&& IS_CONST == IS_CONST
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34523:7): [True: 0, Folded]
  ------------------
34524|      1|			&& EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34525|      0|			value = CACHED_PTR(opline->extended_value + sizeof(void*));
  ------------------
  |  |  527|      0|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
34526|      0|			break;
34527|      0|		}
34528|       |
34529|      1|		constant_zv = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
34530|      1|		if (UNEXPECTED(Z_TYPE_P(constant_zv) != IS_STRING)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34531|      0|			zend_invalid_class_constant_type_error(Z_TYPE_P(constant_zv));
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
34532|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34533|       |
34534|       |
34535|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34535:4): [True: 0, False: 0]
  |  Branch (34535:4): [True: 0, False: 0]
  ------------------
34536|      0|		}
34537|      1|		constant_name = Z_STR_P(constant_zv);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
34538|       |		/* Magic 'class' for constant OP2 is caught at compile-time */
34539|      1|		if (IS_CONST != IS_CONST && UNEXPECTED(zend_string_equals_literal_ci(constant_name, "class"))) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(zend_string_equals_literal_ci(constant_name, "class"))) {
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST != IS_CONST && UNEXPECTED(zend_string_equals_literal_ci(constant_name, "class"))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (34539:7): [Folded, False: 1]
  ------------------
34540|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34541|       |
34542|       |
34543|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34543:4): [True: 0, False: 0]
  |  Branch (34543:4): [True: 0, False: 0]
  ------------------
34544|      0|		}
34545|      1|		zv = IS_CONST == IS_CONST
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		zv = IS_CONST == IS_CONST
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34545:8): [True: 1, Folded]
  ------------------
34546|      1|			? zend_hash_find_known_hash(CE_CONSTANTS_TABLE(ce), constant_name)
  ------------------
  |  |  334|      1|	zend_class_constants_table(ce)
  ------------------
34547|      1|			: zend_hash_find(CE_CONSTANTS_TABLE(ce), constant_name);
  ------------------
  |  |  334|      0|	zend_class_constants_table(ce)
  ------------------
34548|       |
34549|      1|		if (EXPECTED(zv != NULL)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
34550|      0|			c = Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
34551|      0|			scope = EX(func)->op_array.scope;
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
34552|      0|			if (!zend_verify_const_access(c, scope)) {
  ------------------
  |  Branch (34552:8): [True: 0, False: 0]
  ------------------
34553|      0|				zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |  498|      0|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              				zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "Cannot access %s constant %s::%s", zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c)), ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
34554|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34555|       |
34556|       |
34557|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34557:5): [True: 0, False: 0]
  |  Branch (34557:5): [True: 0, False: 0]
  ------------------
34558|      0|			}
34559|       |
34560|      0|			if (ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|      0|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (34560:8): [True: 0, False: 0]
  ------------------
34561|      0|				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
34562|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34563|       |
34564|       |
34565|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34565:5): [True: 0, False: 0]
  |  Branch (34565:5): [True: 0, False: 0]
  ------------------
34566|      0|			}
34567|       |
34568|      0|			bool is_constant_deprecated = ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED;
  ------------------
  |  |  498|      0|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			bool is_constant_deprecated = ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_DEPRECATED;
  ------------------
  |  |  258|      0|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
34569|      0|			if (UNEXPECTED(is_constant_deprecated) && !CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (UNEXPECTED(is_constant_deprecated) && !CONST_IS_RECURSIVE(c)) {
  ------------------
  |  |   31|      0|#define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               #define CONST_IS_RECURSIVE(c) (Z_CONSTANT_FLAGS((c)->value) & CONST_RECURSIVE)
  |  |  ------------------
  |  |  |  |   29|      0|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  ------------------
  |  Branch (34569:46): [True: 0, False: 0]
  ------------------
34570|      0|				if (c->ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (34570:9): [True: 0, False: 0]
  ------------------
34571|       |					/* Recursion protection only applied to user constants, GH-18463 */
34572|      0|					CONST_PROTECT_RECURSION(c);
  ------------------
  |  |   33|      0|	do { \
  |  |   34|      0|		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) |= CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      0|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   35|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (35:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34573|      0|				}
34574|      0|				zend_deprecated_class_constant(c, constant_name);
34575|      0|				if (c->ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (34575:9): [True: 0, False: 0]
  ------------------
34576|      0|					CONST_UNPROTECT_RECURSION(c);
  ------------------
  |  |   37|      0|	do { \
  |  |   38|      0|		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |  701|      0|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |               		Z_CONSTANT_FLAGS((c)->value) &= ~CONST_RECURSIVE; \
  |  |  ------------------
  |  |  |  |   29|      0|#define CONST_RECURSIVE			(1<<4)				/* Recursion protection for constant evaluation */
  |  |  ------------------
  |  |   39|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (39:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34577|      0|				}
34578|       |
34579|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34580|      0|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34581|       |
34582|       |
34583|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34583:6): [True: 0, False: 0]
  |  Branch (34583:6): [True: 0, False: 0]
  ------------------
34584|      0|				}
34585|      0|			}
34586|       |
34587|      0|			value = &c->value;
34588|       |			// Enums require loading of all class constants to build the backed enum table
34589|      0|			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  284|      0|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
              			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
              			if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
  ------------------
  |  |  298|      0|#define ZEND_ACC_CONSTANTS_UPDATED       (1 << 12) /*  X  |     |     |     */
  ------------------
  |  Branch (34589:8): [True: 0, False: 0]
  |  Branch (34589:40): [True: 0, False: 0]
  |  Branch (34589:77): [True: 0, False: 0]
  |  Branch (34589:108): [True: 0, False: 0]
  ------------------
34590|      0|				if (UNEXPECTED(zend_update_class_constants(ce) == FAILURE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34591|      0|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34592|       |
34593|       |
34594|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34594:6): [True: 0, False: 0]
  |  Branch (34594:6): [True: 0, False: 0]
  ------------------
34595|      0|				}
34596|      0|			}
34597|      0|			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (34597:8): [True: 0, False: 0]
  ------------------
34598|      0|				if (UNEXPECTED(zend_update_class_constant(c, constant_name, c->ce) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
34599|      0|					ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34600|       |
34601|       |
34602|      0|					HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34602:6): [True: 0, False: 0]
  |  Branch (34602:6): [True: 0, False: 0]
  ------------------
34603|      0|				}
34604|      0|			}
34605|      0|			if (IS_CONST == IS_CONST && !is_constant_deprecated) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if (IS_CONST == IS_CONST && !is_constant_deprecated) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (34605:8): [True: 0, Folded]
  |  Branch (34605:32): [True: 0, False: 0]
  ------------------
34606|      0|				CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, value);
  ------------------
  |  |  538|      0|#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
  |  |  539|      0|		void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  540|      0|		slot[0] = (ce); \
  |  |  541|      0|		slot[1] = (ptr); \
  |  |  542|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (542:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34607|      0|			}
34608|      1|		} else {
34609|      1|			zend_throw_error(NULL, "Undefined constant %s::%s",
34610|      1|				ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				ZSTR_VAL(ce->name), ZSTR_VAL(constant_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
34611|      1|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
34612|       |
34613|       |
34614|      1|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (34614:4): [True: 0, False: 1]
  |  Branch (34614:4): [True: 1, False: 0]
  ------------------
34615|      1|		}
34616|      1|	} while (0);
  ------------------
  |  Branch (34616:11): [Folded, False: 0]
  ------------------
34617|       |
34618|      0|	ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), value);
  ------------------
  |  | 1457|      0|	do {																\
  |  | 1458|      0|		zval *_z1 = (z);												\
  |  | 1459|      0|		const zval *_z2 = (v);											\
  |  | 1460|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
34619|       |
34620|       |
34621|      0|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (34621:2): [True: 0, False: 0]
  |  Branch (34621:2): [True: 0, False: 0]
  ------------------
34622|      0|}
zend_execute.c:ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER:
23166|     40|{
23167|     40|	USE_OPLINE
23168|     40|	zval *closure, *var;
23169|       |
23170|     40|	closure = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     40|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     40|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23171|     40|	if (opline->extended_value & ZEND_BIND_REF) {
  ------------------
  |  | 1202|     40|#define ZEND_BIND_REF      1
  ------------------
  |  Branch (23171:6): [True: 16, False: 24]
  ------------------
23172|       |		/* By-ref binding */
23173|     16|		var = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     16|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     16|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23174|     16|		if (Z_ISREF_P(var)) {
  ------------------
  |  |  964|     16|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     16|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23175|      0|			Z_ADDREF_P(var);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
23176|     16|		} else {
23177|     16|			ZVAL_MAKE_REF_EX(var, 2);
  ------------------
  |  | 1216|     16|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|     16|		zval *_z = (z);											\
  |  | 1218|     16|		zend_reference *_ref =									\
  |  | 1219|     16|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|     16|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     16|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     16|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     16|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     16|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|     16|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|     16|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|     16|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|     16|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|     16|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|     16|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     16|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|     16|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|     16|	do {												\
  |  |  |  | 1417|     16|		zval *_z1 = (z);								\
  |  |  |  | 1418|     16|		const zval *_z2 = (v);							\
  |  |  |  | 1419|     16|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|     16|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|     16|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|     16|	do {												\
  |  |  |  |  |  | 1408|     16|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|     16|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|     16|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|     16|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|     16|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|     16|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|     16|		_ref->sources.ptr = NULL;									\
  |  | 1224|     16|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|     16|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     16|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|     16|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     16|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     16|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     16|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     16|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     16|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     16|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
23178|     16|		}
23179|     24|	} else {
23180|     24|		var = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|     24|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     24|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
23181|     24|		if (UNEXPECTED(Z_ISUNDEF_P(var)) && !(opline->extended_value & ZEND_BIND_IMPLICIT)) {
  ------------------
  |  |  457|     48|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 10, False: 14]
  |  |  ------------------
  ------------------
              		if (UNEXPECTED(Z_ISUNDEF_P(var)) && !(opline->extended_value & ZEND_BIND_IMPLICIT)) {
  ------------------
  |  | 1203|     10|#define ZEND_BIND_IMPLICIT 2
  ------------------
  |  Branch (23181:39): [True: 5, False: 5]
  ------------------
23182|      5|			SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
23183|      5|			var = ZVAL_UNDEFINED_OP2();
  ------------------
  |  |  295|      5|#define ZVAL_UNDEFINED_OP2() _zval_undefined_op2(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
23184|      5|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
23185|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (23185:5): [True: 0, False: 0]
  |  Branch (23185:5): [True: 0, False: 0]
  ------------------
23186|      0|			}
23187|      5|		}
23188|     24|		ZVAL_DEREF(var);
  ------------------
  |  | 1474|     24|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     24|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
23189|     24|		Z_TRY_ADDREF_P(var);
  ------------------
  |  | 1285|     24|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     24|	zval *_pz = (pz);				\
  |  | 1287|     24|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     24|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     24|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     24|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 6, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      6|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      6|	}								\
  |  | 1290|     24|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 24]
  |  |  ------------------
  ------------------
23190|     24|	}
23191|       |
23192|     40|	zend_closure_bind_var_ex(closure,
23193|     40|		(opline->extended_value & ~(ZEND_BIND_REF|ZEND_BIND_IMPLICIT)), var);
  ------------------
  |  | 1202|     40|#define ZEND_BIND_REF      1
  ------------------
              		(opline->extended_value & ~(ZEND_BIND_REF|ZEND_BIND_IMPLICIT)), var);
  ------------------
  |  | 1203|     40|#define ZEND_BIND_IMPLICIT 2
  ------------------
23194|     40|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     40|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     40|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     40|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     40|	} else { \
  |  |  |  | 5761|     40|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     40|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     40|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     40|	} \
  |  |  |  | 5764|     40|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     40|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23194:2): [True: 0, False: 40]
  |  Branch (23194:2): [True: 40, False: 0]
  ------------------
23195|     40|}
zend_execute.c:ZEND_BIND_STATIC_SPEC_CV_HANDLER:
40891|    216|{
40892|    216|	USE_OPLINE
40893|    216|	HashTable *ht;
40894|    216|	zval *value;
40895|    216|	zval *variable_ptr;
40896|       |
40897|    216|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|    216|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|    216|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40898|       |
40899|    216|	SAVE_OPLINE();
  ------------------
  |  |  428|    216|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|    216|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40900|       |
40901|    216|	ht = ZEND_MAP_PTR_GET(EX(func)->op_array.static_variables_ptr);
  ------------------
  |  |   54|    216|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|    216|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|    216|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 216]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|    216|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|    216|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|    216|	ptr ## __ptr
  |  |  ------------------
  ------------------
40902|    216|	if (!ht) {
  ------------------
  |  Branch (40902:6): [True: 23, False: 193]
  ------------------
40903|     23|		ht = zend_array_dup(EX(func)->op_array.static_variables);
  ------------------
  |  |  730|     23|#define EX(element) 			((execute_data)->element)
  ------------------
40904|     23|		ZEND_MAP_PTR_SET(EX(func)->op_array.static_variables_ptr, ht);
  ------------------
  |  |   59|     23|# define ZEND_MAP_PTR_SET(ptr, val) do { \
  |  |   60|     23|		if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
  |  |  ------------------
  |  |  |  |   52|     23|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     23|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|			ZEND_MAP_PTR_SET_IMM(ptr, val); \
  |  |  ------------------
  |  |  |  |   66|      0|# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
  |  |  |  |   67|      0|		void **__p = ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   68|      0|		*__p = (val); \
  |  |  |  |   69|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     23|		} else { \
  |  |   63|     23|			ZEND_MAP_PTR_INIT(ptr, val); \
  |  |  ------------------
  |  |  |  |   38|     23|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |  |  |   39|     23|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     23|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |   40|     23|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [Folded, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|     23|		} \
  |  |   65|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (65:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
40905|     23|	}
40906|    216|	ZEND_ASSERT(GC_REFCOUNT(ht) == 1);
  ------------------
  |  |  112|    216|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40906:2): [True: 0, False: 216]
  |  Branch (40906:2): [True: 216, False: 0]
  ------------------
40907|       |
40908|    216|	value = (zval*)((char*)ht->arData + (opline->extended_value & ~(ZEND_BIND_REF|ZEND_BIND_IMPLICIT|ZEND_BIND_EXPLICIT)));
  ------------------
  |  | 1202|    216|#define ZEND_BIND_REF      1
  ------------------
              	value = (zval*)((char*)ht->arData + (opline->extended_value & ~(ZEND_BIND_REF|ZEND_BIND_IMPLICIT|ZEND_BIND_EXPLICIT)));
  ------------------
  |  | 1203|    216|#define ZEND_BIND_IMPLICIT 2
  ------------------
              	value = (zval*)((char*)ht->arData + (opline->extended_value & ~(ZEND_BIND_REF|ZEND_BIND_IMPLICIT|ZEND_BIND_EXPLICIT)));
  ------------------
  |  | 1204|    216|#define ZEND_BIND_EXPLICIT 4
  ------------------
40909|       |
40910|    216|	if (opline->extended_value & ZEND_BIND_REF) {
  ------------------
  |  | 1202|    216|#define ZEND_BIND_REF      1
  ------------------
  |  Branch (40910:6): [True: 202, False: 14]
  ------------------
40911|    202|		if (UNEXPECTED(!Z_ISREF_P(value))) {
  ------------------
  |  |  457|    202|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 24, False: 178]
  |  |  ------------------
  ------------------
40912|     24|			zend_reference *ref = (zend_reference*)emalloc(sizeof(zend_reference));
  ------------------
  |  |  150|     24|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40913|     24|			GC_SET_REFCOUNT(ref, 2);
  ------------------
  |  |  717|     24|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
40914|     24|			GC_TYPE_INFO(ref) = GC_REFERENCE;
  ------------------
  |  |  775|     24|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              			GC_TYPE_INFO(ref) = GC_REFERENCE;
  ------------------
  |  |  810|     24|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  616|     24|#define IS_REFERENCE				10
  |  |  ------------------
  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|     24|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|     24|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
40915|     24|			if (opline->op2_type == IS_UNUSED) {
  ------------------
  |  |  863|     24|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (40915:8): [True: 13, False: 11]
  ------------------
40916|     13|				ZVAL_COPY_VALUE(&ref->val, value);
  ------------------
  |  | 1416|     13|	do {												\
  |  | 1417|     13|		zval *_z1 = (z);								\
  |  | 1418|     13|		const zval *_z2 = (v);							\
  |  | 1419|     13|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     13|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     13|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     13|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     13|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     13|	do {												\
  |  |  |  | 1408|     13|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     13|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     13|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     13|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     13|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
40917|     13|			} else {
40918|     11|				ZEND_ASSERT(!Z_REFCOUNTED_P(value));
  ------------------
  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40918:5): [True: 0, False: 11]
  |  Branch (40918:5): [True: 11, False: 0]
  ------------------
40919|     11|				ZVAL_COPY(&ref->val, get_zval_ptr_deref(opline->op2_type, opline->op2, BP_VAR_R));
  ------------------
  |  | 1425|     11|	do {												\
  |  | 1426|     11|		zval *_z1 = (z);								\
  |  | 1427|     11|		const zval *_z2 = (v);							\
  |  | 1428|     11|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     11|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     11|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     11|	do {												\
  |  |  |  | 1408|     11|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     11|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     11|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     11|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     11|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     11|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     11|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|     11|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|     11|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|     11|		}												\
  |  | 1434|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
40920|     11|				FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|     11|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|     11|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 10, False: 1]
  |  |  ------------------
  |  |  178|     10|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|     10|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|     10|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|     10|	}
  ------------------
40921|     11|			}
40922|     24|			ref->sources.ptr = NULL;
40923|     24|			Z_REF_P(value) = ref;
  ------------------
  |  | 1030|     24|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  ------------------
  |  |  |  | 1029|     24|#define Z_REF(zval)					(zval).value.ref
  |  |  ------------------
  ------------------
40924|     24|			Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
  ------------------
  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  ------------------
  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              			Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
  ------------------
  |  |  832|     24|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  616|     24|#define IS_REFERENCE				10
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  815|     24|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  ------------------
  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  ------------------
  ------------------
40925|     24|			i_zval_ptr_dtor(variable_ptr);
40926|     24|			ZVAL_REF(variable_ptr, ref);
  ------------------
  |  | 1189|     24|#define ZVAL_REF(z, r) do {										\
  |  | 1190|     24|		zval *__z = (z);										\
  |  | 1191|     24|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|     24|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|     24|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|     24|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|     24|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     24|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     24|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
40927|    178|		} else {
40928|    178|			Z_ADDREF_P(value);
  ------------------
  |  | 1277|    178|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40929|    178|			i_zval_ptr_dtor(variable_ptr);
40930|    178|			ZVAL_REF(variable_ptr, Z_REF_P(value));
  ------------------
  |  | 1189|    178|#define ZVAL_REF(z, r) do {										\
  |  | 1190|    178|		zval *__z = (z);										\
  |  | 1191|    178|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|    178|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    178|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|    178|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|    178|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    178|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|    178|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    178|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    178|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    178|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    178|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    178|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|    178|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 178]
  |  |  ------------------
  ------------------
40931|    178|			if (opline->op2_type != IS_UNUSED) {
  ------------------
  |  |  863|    178|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (40931:8): [True: 11, False: 167]
  ------------------
40932|     11|				FREE_OP(opline->op2_type, opline->op2.var);
  ------------------
  |  |  177|     11|	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|     11|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |               	if ((type) & (IS_TMP_VAR|IS_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|     11|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |  |  Branch (177:6): [True: 11, False: 0]
  |  |  ------------------
  |  |  178|     11|		zval_ptr_dtor_nogc(EX_VAR(var)); \
  |  |  ------------------
  |  |  |  |  755|     11|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  722|     11|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  179|     11|	}
  ------------------
40933|     11|			}
40934|    178|		}
40935|    202|	} else {
40936|     14|		i_zval_ptr_dtor(variable_ptr);
40937|     14|		ZVAL_COPY(variable_ptr, value);
  ------------------
  |  | 1425|     14|	do {												\
  |  | 1426|     14|		zval *_z1 = (z);								\
  |  | 1427|     14|		const zval *_z2 = (v);							\
  |  | 1428|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     14|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     14|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     14|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
40938|     14|	}
40939|       |
40940|    216|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|    216|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|    216|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|    216|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 216, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|    216|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|    216|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|    216|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|    216|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|    216|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|    216|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40940:2): [True: 0, False: 0]
  |  Branch (40940:2): [True: 0, False: 0]
  ------------------
40941|    216|}
zend_execute.c:ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER:
37303|     32|{
37304|     32|	USE_OPLINE
37305|       |
37306|     32|	if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
  ------------------
  |  |  456|     32|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 29, False: 3]
  |  |  ------------------
  ------------------
37307|     29|		zval *result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     29|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     29|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37308|       |
37309|     29|		ZVAL_OBJ(result, Z_OBJ(EX(This)));
  ------------------
  |  | 1140|     29|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|     29|		zval *__z = (z);						\
  |  | 1142|     29|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|     29|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     29|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|     29|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     29|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     29|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     29|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     29|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     29|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     29|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     29|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     29|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|     29|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 29]
  |  |  ------------------
  ------------------
37310|     29|		Z_ADDREF_P(result);
  ------------------
  |  | 1277|     29|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
37311|     29|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     29|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     29|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     29|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 29]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     29|	} else { \
  |  |  |  | 5761|     29|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     29|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     29|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     29|	} \
  |  |  |  | 5764|     29|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     29|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37311:3): [True: 0, False: 29]
  |  Branch (37311:3): [True: 29, False: 0]
  ------------------
37312|     29|	} else {
37313|      3|		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  ------------------
  |  |  404|      3|# define ZEND_VM_TAIL_CALL(call) return call
  ------------------
37314|      3|	}
37315|     32|}
zend_execute.c:zend_this_not_in_object_context_helper_SPEC:
  759|      3|{
  760|      3|	USE_OPLINE
  761|       |
  762|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  763|      3|	zend_throw_error(NULL, "Using $this when not in object context");
  764|      3|	UNDEF_RESULT();
  ------------------
  |  | 5907|      3|#define UNDEF_RESULT() do { \
  |  | 5908|      3|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      3|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 3, False: 0]
  |  |  ------------------
  |  | 5909|      3|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      3|		} \
  |  | 5911|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  765|      3|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      3|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      3|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (765:2): [True: 0, False: 3]
  |  Branch (765:2): [True: 3, False: 0]
  ------------------
  766|      3|}
zend_execute.c:ZEND_SEND_FUNC_ARG_SPEC_VAR_CONST_HANDLER:
25893|      1|{
25894|      1|	USE_OPLINE
25895|      1|	zval *varptr, *arg;
25896|       |
25897|      1|	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              	if (IS_CONST == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (25897:6): [True: 1, Folded]
  ------------------
25898|       |		// TODO: Would it make sense to share the cache slot with CHECK_FUNC_ARG?
25899|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25900|      1|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
25901|      1|		uint32_t arg_num;
25902|      1|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      1|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
25903|      1|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25904|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25905|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (25905:4): [True: 0, False: 0]
  |  Branch (25905:4): [True: 0, False: 0]
  ------------------
25906|      0|		}
25907|      1|	} else {
25908|      0|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
25909|      0|	}
25910|       |
25911|      1|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25912|      0|		varptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25913|      0|		if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25914|      0|			Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25915|      0|		} else {
25916|      0|			ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25917|      0|		}
25918|      0|		ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|      0|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      0|		zval *__z = (z);										\
  |  | 1191|      0|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      0|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25919|       |
25920|      0|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
25921|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25921:3): [True: 0, False: 0]
  |  Branch (25921:3): [True: 0, False: 0]
  ------------------
25922|      0|	}
25923|       |
25924|      1|	varptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
25925|       |
25926|      1|	if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
25927|      1|		zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
25928|       |
25929|      1|		varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25930|      1|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
25931|      1|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
25932|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25933|      1|		} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
25934|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
25935|      0|		}
25936|      1|	} else {
25937|      0|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
25938|      0|	}
25939|       |
25940|      1|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25940:2): [True: 0, False: 1]
  |  Branch (25940:2): [True: 1, False: 0]
  ------------------
25941|      1|}
zend_execute.c:ZEND_SEND_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER:
29994|      4|{
29995|      4|	USE_OPLINE
29996|      4|	zval *varptr, *arg;
29997|       |
29998|      4|	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  863|      4|#define IS_UNUSED	0		/* Unused operand */
  ------------------
              	if (IS_UNUSED == IS_CONST) {
  ------------------
  |  |  864|      4|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (29998:6): [Folded, False: 4]
  ------------------
29999|       |		// TODO: Would it make sense to share the cache slot with CHECK_FUNC_ARG?
30000|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30001|      0|		zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
30002|      0|		uint32_t arg_num;
30003|      0|		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  ------------------
              		arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num));
  ------------------
  |  |  524|      0|	((void**)((char*)EX(run_time_cache) + (num)))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
30004|      0|		if (UNEXPECTED(!arg)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30005|      0|			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30006|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (30006:4): [True: 0, False: 0]
  |  Branch (30006:4): [True: 0, False: 0]
  ------------------
30007|      0|		}
30008|      4|	} else {
30009|      4|		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
  ------------------
  |  |  722|      4|	((zval*)(((char*)(call)) + ((int)(n))))
  ------------------
30010|      4|	}
30011|       |
30012|      4|	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
30013|      1|		varptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30014|      1|		if (Z_ISREF_P(varptr)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30015|      1|			Z_ADDREF_P(varptr);
  ------------------
  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30016|      1|		} else {
30017|      0|			ZVAL_MAKE_REF_EX(varptr, 2);
  ------------------
  |  | 1216|      0|#define ZVAL_MAKE_REF_EX(z, refcount) do {						\
  |  | 1217|      0|		zval *_z = (z);											\
  |  | 1218|      0|		zend_reference *_ref =									\
  |  | 1219|      0|			(zend_reference *) emalloc(sizeof(zend_reference));	\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1220|      0|		GC_SET_REFCOUNT(_ref, (refcount));						\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1221|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1222|      0|		ZVAL_COPY_VALUE(&_ref->val, _z);						\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1223|      0|		_ref->sources.ptr = NULL;									\
  |  | 1224|      0|		Z_REF_P(_z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1225|      0|		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1226|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1226:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30018|      0|		}
30019|      1|		ZVAL_REF(arg, Z_REF_P(varptr));
  ------------------
  |  | 1189|      1|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      1|		zval *__z = (z);										\
  |  | 1191|      1|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      1|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
30020|       |
30021|      1|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
30022|      1|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30022:3): [True: 0, False: 1]
  |  Branch (30022:3): [True: 1, False: 0]
  ------------------
30023|      1|	}
30024|       |
30025|      3|	varptr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
30026|       |
30027|      3|	if (UNEXPECTED(Z_ISREF_P(varptr))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
30028|      0|		zend_refcounted *ref = Z_COUNTED_P(varptr);
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
30029|       |
30030|      0|		varptr = Z_REFVAL_P(varptr);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30031|      0|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
30032|      0|		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
30033|      0|			efree_size(ref, sizeof(zend_reference));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30034|      0|		} else if (Z_OPT_REFCOUNTED_P(arg)) {
  ------------------
  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
30035|      0|			Z_ADDREF_P(arg);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
30036|      0|		}
30037|      3|	} else {
30038|      3|		ZVAL_COPY_VALUE(arg, varptr);
  ------------------
  |  | 1416|      3|	do {												\
  |  | 1417|      3|		zval *_z1 = (z);								\
  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
30039|      3|	}
30040|       |
30041|      3|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      3|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      3|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      3|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (30041:2): [True: 0, False: 3]
  |  Branch (30041:2): [True: 3, False: 0]
  ------------------
30042|      3|}
zend_execute.c:ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER:
37328|      2|{
37329|      2|	USE_OPLINE
37330|       |
37331|      2|	ZVAL_BOOL(EX_VAR(opline->result.var),
  ------------------
  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 2]
  |  |  ------------------
  |  | 1074|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
37332|      2|		(opline->extended_value & ZEND_ISEMPTY) ^
37333|      2|		 (Z_TYPE(EX(This)) == IS_OBJECT));
37334|      2|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37334:2): [True: 0, False: 2]
  |  Branch (37334:2): [True: 2, False: 0]
  ------------------
37335|      2|}
zend_execute.c:ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER:
11790|      1|{
11791|      1|	USE_OPLINE
11792|      1|	zval *op1;
11793|      1|	zend_long count;
11794|       |
11795|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11796|      1|	op1 = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11797|       |
11798|      1|	while (1) {
  ------------------
  |  Branch (11798:9): [True: 1, Folded]
  ------------------
11799|      1|		if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (11799:7): [True: 0, False: 1]
  ------------------
11800|      0|			count = zend_hash_num_elements(Z_ARRVAL_P(op1));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11801|      0|			break;
11802|      1|		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (11802:14): [True: 0, False: 1]
  ------------------
11803|      0|			zend_object *zobj = Z_OBJ_P(op1);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
11804|       |
11805|       |			/* first, we check if the handler is defined */
11806|      0|			if (zobj->handlers->count_elements) {
  ------------------
  |  Branch (11806:8): [True: 0, False: 0]
  ------------------
11807|      0|				if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) {
  ------------------
  |  Branch (11807:9): [True: 0, False: 0]
  ------------------
11808|      0|					break;
11809|      0|				}
11810|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11811|      0|					count = 0;
11812|      0|					break;
11813|      0|				}
11814|      0|			}
11815|       |
11816|       |			/* if not and the object implements Countable we call its count() method */
11817|      0|			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
  ------------------
  |  Branch (11817:8): [True: 0, False: 0]
  ------------------
11818|      0|				zval retval;
11819|       |
11820|      0|				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
11821|      0|				GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
11822|      0|				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
11823|      0|				OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
11824|      0|				count = zval_get_long(&retval);
11825|      0|				zval_ptr_dtor(&retval);
11826|      0|				break;
11827|      0|			}
11828|       |
11829|       |			/* If There's no handler and it doesn't implement Countable then emit a TypeError */
11830|      1|		} else if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (11830:14): [Folded, False: 1]
  |  Branch (11830:50): [True: 0, False: 0]
  ------------------
11831|      0|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11832|      0|			continue;
11833|      1|		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11833:14): [Folded, False: 1]
  ------------------
11834|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
11835|      0|		}
11836|      1|		count = 0;
11837|      1|		zend_type_error("%s(): Argument #1 ($value) must be of type Countable|array, %s given", opline->extended_value ? "sizeof" : "count", zend_zval_value_name(op1));
  ------------------
  |  Branch (11837:91): [True: 1, False: 0]
  ------------------
11838|      1|		break;
11839|      1|	}
11840|       |
11841|      1|	ZVAL_LONG(EX_VAR(opline->result.var), count);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11842|       |
11843|       |
11844|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11844:2): [True: 0, False: 0]
  |  Branch (11844:2): [True: 0, False: 0]
  ------------------
11845|      1|}
zend_execute.c:ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER:
21992|      1|{
21993|      1|	USE_OPLINE
21994|      1|	zval *op1;
21995|      1|	zend_long count;
21996|       |
21997|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
21998|      1|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
21999|       |
22000|      1|	while (1) {
  ------------------
  |  Branch (22000:9): [True: 1, Folded]
  ------------------
22001|      1|		if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (22001:7): [True: 1, False: 0]
  ------------------
22002|      1|			count = zend_hash_num_elements(Z_ARRVAL_P(op1));
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22003|      1|			break;
22004|      1|		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (22004:14): [True: 0, False: 0]
  ------------------
22005|      0|			zend_object *zobj = Z_OBJ_P(op1);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
22006|       |
22007|       |			/* first, we check if the handler is defined */
22008|      0|			if (zobj->handlers->count_elements) {
  ------------------
  |  Branch (22008:8): [True: 0, False: 0]
  ------------------
22009|      0|				if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) {
  ------------------
  |  Branch (22009:9): [True: 0, False: 0]
  ------------------
22010|      0|					break;
22011|      0|				}
22012|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22013|      0|					count = 0;
22014|      0|					break;
22015|      0|				}
22016|      0|			}
22017|       |
22018|       |			/* if not and the object implements Countable we call its count() method */
22019|      0|			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
  ------------------
  |  Branch (22019:8): [True: 0, False: 0]
  ------------------
22020|      0|				zval retval;
22021|       |
22022|      0|				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
22023|      0|				GC_ADDREF(zobj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
22024|      0|				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
22025|      0|				OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
22026|      0|				count = zval_get_long(&retval);
22027|      0|				zval_ptr_dtor(&retval);
22028|      0|				break;
22029|      0|			}
22030|       |
22031|       |			/* If There's no handler and it doesn't implement Countable then emit a TypeError */
22032|      0|		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (22032:14): [Folded, False: 0]
  |  Branch (22032:52): [True: 0, False: 0]
  ------------------
22033|      0|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22034|      0|			continue;
22035|      0|		} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (22035:14): [Folded, False: 0]
  ------------------
22036|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22037|      0|		}
22038|      0|		count = 0;
22039|      0|		zend_type_error("%s(): Argument #1 ($value) must be of type Countable|array, %s given", opline->extended_value ? "sizeof" : "count", zend_zval_value_name(op1));
  ------------------
  |  Branch (22039:91): [True: 0, False: 0]
  ------------------
22040|      0|		break;
22041|      1|	}
22042|       |
22043|      1|	ZVAL_LONG(EX_VAR(opline->result.var), count);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
22044|      1|	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      1|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      1|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22045|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22045:2): [True: 0, False: 0]
  |  Branch (22045:2): [True: 0, False: 0]
  ------------------
22046|      1|}
zend_execute.c:ZEND_COUNT_SPEC_CV_UNUSED_HANDLER:
49923|      8|{
49924|      8|	USE_OPLINE
49925|      8|	zval *op1;
49926|      8|	zend_long count;
49927|       |
49928|      8|	SAVE_OPLINE();
  ------------------
  |  |  428|      8|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
49929|      8|	op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      8|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      8|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
49930|       |
49931|      9|	while (1) {
  ------------------
  |  Branch (49931:9): [True: 9, Folded]
  ------------------
49932|      9|		if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(op1) == IS_ARRAY) {
  ------------------
  |  |  613|      9|#define IS_ARRAY					7
  ------------------
  |  Branch (49932:7): [True: 5, False: 4]
  ------------------
49933|      5|			count = zend_hash_num_elements(Z_ARRVAL_P(op1));
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49934|      5|			break;
49935|      5|		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  614|      4|#define IS_OBJECT					8
  ------------------
  |  Branch (49935:14): [True: 3, False: 1]
  ------------------
49936|      3|			zend_object *zobj = Z_OBJ_P(op1);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
49937|       |
49938|       |			/* first, we check if the handler is defined */
49939|      3|			if (zobj->handlers->count_elements) {
  ------------------
  |  Branch (49939:8): [True: 0, False: 3]
  ------------------
49940|      0|				if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) {
  ------------------
  |  Branch (49940:9): [True: 0, False: 0]
  ------------------
49941|      0|					break;
49942|      0|				}
49943|      0|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
49944|      0|					count = 0;
49945|      0|					break;
49946|      0|				}
49947|      0|			}
49948|       |
49949|       |			/* if not and the object implements Countable we call its count() method */
49950|      3|			if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) {
  ------------------
  |  Branch (49950:8): [True: 2, False: 1]
  ------------------
49951|      2|				zval retval;
49952|       |
49953|      2|				zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
49954|      2|				GC_ADDREF(zobj);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
49955|      2|				zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval);
49956|      2|				OBJ_RELEASE(zobj);
  ------------------
  |  |   44|      2|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
49957|      2|				count = zval_get_long(&retval);
49958|      2|				zval_ptr_dtor(&retval);
49959|      2|				break;
49960|      2|			}
49961|       |
49962|       |			/* If There's no handler and it doesn't implement Countable then emit a TypeError */
49963|      3|		} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (49963:14): [True: 1, Folded]
  |  Branch (49963:47): [True: 1, False: 0]
  ------------------
49964|      1|			op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
49965|      1|			continue;
49966|      1|		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (49966:14): [True: 0, Folded]
  ------------------
49967|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
49968|      0|		}
49969|      1|		count = 0;
49970|      1|		zend_type_error("%s(): Argument #1 ($value) must be of type Countable|array, %s given", opline->extended_value ? "sizeof" : "count", zend_zval_value_name(op1));
  ------------------
  |  Branch (49970:91): [True: 0, False: 1]
  ------------------
49971|      1|		break;
49972|      9|	}
49973|       |
49974|      8|	ZVAL_LONG(EX_VAR(opline->result.var), count);
  ------------------
  |  | 1076|      8|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      8|		zval *__z = (z);				\
  |  | 1078|      8|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      8|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      8|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      8|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      8|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
49975|       |
49976|       |
49977|      8|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      8|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 8, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      8|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      8|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (49977:2): [True: 0, False: 0]
  |  Branch (49977:2): [True: 0, False: 0]
  ------------------
49978|      8|}
zend_execute.c:ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER:
22064|      3|{
22065|      3|	USE_OPLINE
22066|       |
22067|      3|	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  865|      3|#define IS_TMP_VAR	(1<<1)
  ------------------
              	if (IS_TMP_VAR == IS_UNUSED) {
  ------------------
  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (22067:6): [Folded, False: 3]
  ------------------
22068|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22069|      0|		if (UNEXPECTED(!EX(func)->common.scope)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22070|      0|			zend_throw_error(NULL, "get_class() without arguments must be called from within a class");
22071|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22072|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (22072:4): [True: 0, False: 0]
  |  Branch (22072:4): [True: 0, False: 0]
  ------------------
22073|      0|		} else {
22074|      0|			zend_error(E_DEPRECATED, "Calling get_class() without arguments is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
22075|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22076|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22077|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (22077:5): [True: 0, False: 0]
  |  Branch (22077:5): [True: 0, False: 0]
  ------------------
22078|      0|			}
22079|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22079:4): [True: 0, False: 0]
  |  Branch (22079:4): [True: 0, False: 0]
  ------------------
22080|      0|		}
22081|      3|	} else {
22082|      3|		zval *op1;
22083|       |
22084|      3|		SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22085|      3|		op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22086|      3|		while (1) {
  ------------------
  |  Branch (22086:10): [True: 3, Folded]
  ------------------
22087|      3|			if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  614|      3|#define IS_OBJECT					8
  ------------------
  |  Branch (22087:8): [True: 3, False: 0]
  ------------------
22088|      3|				ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      3|		zend_string *__s = (s);							\
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 2]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
22089|      3|			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (22089:15): [Folded, False: 0]
  |  Branch (22089:53): [True: 0, False: 0]
  ------------------
22090|      0|				op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22091|      0|				continue;
22092|      0|			} else {
22093|      0|				if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              				if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (22093:9): [Folded, False: 0]
  ------------------
22094|      0|					ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22095|      0|				}
22096|      0|				zend_type_error("get_class(): Argument #1 ($object) must be of type object, %s given", zend_zval_value_name(op1));
22097|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22098|      0|			}
22099|      3|			break;
22100|      3|		}
22101|      3|		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
22102|      3|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      3|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      3|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      3|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 3, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      3|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      3|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      3|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      3|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (22102:3): [True: 0, False: 0]
  |  Branch (22102:3): [True: 0, False: 0]
  ------------------
22103|      3|	}
22104|      3|}
zend_execute.c:ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER:
49996|      2|{
49997|      2|	USE_OPLINE
49998|       |
49999|      2|	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              	if (IS_CV == IS_UNUSED) {
  ------------------
  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  ------------------
  |  Branch (49999:6): [Folded, False: 2]
  ------------------
50000|      0|		SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50001|      0|		if (UNEXPECTED(!EX(func)->common.scope)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50002|      0|			zend_throw_error(NULL, "get_class() without arguments must be called from within a class");
50003|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50004|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (50004:4): [True: 0, False: 0]
  |  Branch (50004:4): [True: 0, False: 0]
  ------------------
50005|      0|		} else {
50006|      0|			zend_error(E_DEPRECATED, "Calling get_class() without arguments is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
50007|      0|			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50008|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
50009|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (50009:5): [True: 0, False: 0]
  |  Branch (50009:5): [True: 0, False: 0]
  ------------------
50010|      0|			}
50011|      0|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50011:4): [True: 0, False: 0]
  |  Branch (50011:4): [True: 0, False: 0]
  ------------------
50012|      0|		}
50013|      2|	} else {
50014|      2|		zval *op1;
50015|       |
50016|      2|		SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50017|      2|		op1 = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
50018|      2|		while (1) {
  ------------------
  |  Branch (50018:10): [True: 2, Folded]
  ------------------
50019|      2|			if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(op1) == IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (50019:8): [True: 2, False: 0]
  ------------------
50020|      2|				ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 1]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      1|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
50021|      2|			} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			} else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (50021:15): [True: 0, Folded]
  |  Branch (50021:48): [True: 0, False: 0]
  ------------------
50022|      0|				op1 = Z_REFVAL_P(op1);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
50023|      0|				continue;
50024|      0|			} else {
50025|      0|				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (50025:9): [True: 0, Folded]
  ------------------
50026|      0|					ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50027|      0|				}
50028|      0|				zend_type_error("get_class(): Argument #1 ($object) must be of type object, %s given", zend_zval_value_name(op1));
50029|      0|				ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50030|      0|			}
50031|      2|			break;
50032|      2|		}
50033|       |
50034|       |
50035|      2|		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50035:3): [True: 0, False: 0]
  |  Branch (50035:3): [True: 0, False: 0]
  ------------------
50036|      2|	}
50037|      2|}
zend_execute.c:ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER:
37382|      3|{
37383|      3|	USE_OPLINE
37384|       |
37385|      3|	if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(EX(This)) == IS_OBJECT) {
  ------------------
  |  |  614|      3|#define IS_OBJECT					8
  ------------------
  |  Branch (37385:6): [True: 0, False: 3]
  ------------------
37386|      0|		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE(EX(This))->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37387|      3|	} else if (Z_CE(EX(This))) {
  ------------------
  |  | 1046|      3|#define Z_CE(zval)					(zval).value.ce
  |  |  ------------------
  |  |  |  Branch (1046:24): [True: 2, False: 1]
  |  |  ------------------
  ------------------
37388|      2|		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_CE(EX(This))->name);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 0]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
37389|      2|	} else {
37390|      1|		ZEND_ASSERT(!EX(func)->common.scope);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37390:3): [True: 0, False: 1]
  |  Branch (37390:3): [True: 1, False: 0]
  ------------------
37391|      1|		SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37392|      1|		zend_throw_error(NULL, "get_called_class() must be called from within a class");
37393|      1|		ZVAL_UNDEF(EX_VAR(opline->result.var));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
37394|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37394:3): [True: 0, False: 1]
  |  Branch (37394:3): [True: 1, False: 0]
  ------------------
37395|      1|	}
37396|      2|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      3|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37396:2): [True: 0, False: 2]
  |  Branch (37396:2): [True: 2, False: 0]
  ------------------
37397|      2|}
zend_execute.c:ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER:
50040|      1|{
50041|      1|	USE_OPLINE
50042|      1|	zval *op1;
50043|      1|	zend_string *type;
50044|       |
50045|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
50046|      1|	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
50047|      1|	type = zend_zval_get_legacy_type(op1);
50048|      1|	if (EXPECTED(type)) {
  ------------------
  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
50049|      1|		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
  ------------------
  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  | 1099|      1|		zval *__z = (z);							\
  |  | 1100|      1|		zend_string *__s = (s);						\
  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  ------------------
  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1103|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
50050|      1|	} else {
50051|      0|		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
50052|      0|	}
50053|       |
50054|       |
50055|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50055:2): [True: 0, False: 0]
  |  Branch (50055:2): [True: 0, False: 0]
  ------------------
50056|      1|}
zend_execute.c:ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV_HANDLER:
13361|      2|{
13362|      2|	USE_OPLINE
13363|       |
13364|      2|	zval *key, *subject;
13365|      2|	HashTable *ht;
13366|      2|	bool result;
13367|       |
13368|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
13369|       |
13370|      2|	key = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
13371|      2|	subject = EX_VAR(opline->op2.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
13372|       |
13373|      2|	if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
13374|      2|array_key_exists_array:
13375|      2|		ht = Z_ARRVAL_P(subject);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13376|      2|		result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      2|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      2|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      2|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      2|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
13377|      2|	} else {
13378|      0|		if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13378:7): [True: 0, Folded]
  ------------------
13379|      0|			subject = Z_REFVAL_P(subject);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13380|      0|			if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13381|      0|				goto array_key_exists_array;
13382|      0|			}
13383|      0|		}
13384|      0|		zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |  102|      0|# define OPLINE_CC          , OPLINE_C
  |  |  ------------------
  |  |  |  |  100|      0|# define OPLINE_C           opline
  |  |  ------------------
  ------------------
              		zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC);
  ------------------
  |  |   89|      0|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
13385|      0|		result = 0;
13386|      0|	}
13387|       |
13388|       |
13389|       |
13390|       |
13391|      2|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      2|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      2|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 2, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      2|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      0|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5819|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      0|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      2|		} else { \
  |  | 5824|      2|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      2|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      2|		} \
  |  | 5827|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
13392|      2|}
zend_execute.c:ZEND_MATCH_SPEC_CONST_CONST_HANDLER:
 8547|      1|{
 8548|      1|	USE_OPLINE
 8549|      1|	zval *op, *jump_zv;
 8550|      1|	HashTable *jumptable;
 8551|       |
 8552|      1|	op = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      1|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8553|      1|	jumptable = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8554|       |
 8555|      1|match_try_again:
 8556|      1|	if (Z_TYPE_P(op) == IS_LONG) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_LONG) {
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (8556:6): [True: 0, False: 1]
  ------------------
 8557|      0|		jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 8558|      1|	} else if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (8558:13): [True: 1, False: 0]
  ------------------
 8559|      1|		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), IS_CONST == IS_CONST);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), IS_CONST == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
              		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), IS_CONST == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
 8560|      1|	} else if (Z_TYPE_P(op) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (8560:13): [True: 0, False: 0]
  ------------------
 8561|      0|		op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8562|      0|		goto match_try_again;
 8563|      0|	} else {
 8564|      0|		if (UNEXPECTED((IS_CONST & IS_CV) && Z_TYPE_P(op) == IS_UNDEF)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [Folded, False: 0]
  |  |  |  Branch (457:52): [Folded, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8565|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 8566|      0|			op = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 8567|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8568|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (8568:5): [True: 0, False: 0]
  |  Branch (8568:5): [True: 0, False: 0]
  ------------------
 8569|      0|			}
 8570|      0|			goto match_try_again;
 8571|      0|		}
 8572|       |
 8573|      0|		goto default_branch;
 8574|      0|	}
 8575|       |
 8576|      1|	if (jump_zv != NULL) {
  ------------------
  |  Branch (8576:6): [True: 1, False: 0]
  ------------------
 8577|      1|		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
  ------------------
  |  | 5785|      1|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8578|      1|		ZEND_VM_CONTINUE();
  ------------------
  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  ------------------
 8579|      1|	} else {
 8580|      0|default_branch:
 8581|       |		/* default */
 8582|      0|		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
  ------------------
  |  | 5785|      0|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8583|      0|		ZEND_VM_CONTINUE();
  ------------------
  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  ------------------
 8584|      0|	}
 8585|      1|}
zend_execute.c:ZEND_MATCH_SPEC_TMPVARCV_CONST_HANDLER:
14143|     16|{
14144|     16|	USE_OPLINE
14145|     16|	zval *op, *jump_zv;
14146|     16|	HashTable *jumptable;
14147|       |
14148|     16|	op = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     16|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     16|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
14149|     16|	jumptable = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
  ------------------
  |  |  997|     16|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     16|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     16|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14150|       |
14151|     19|match_try_again:
14152|     19|	if (Z_TYPE_P(op) == IS_LONG) {
  ------------------
  |  |  669|     19|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     19|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(op) == IS_LONG) {
  ------------------
  |  |  610|     19|#define IS_LONG						4
  ------------------
  |  Branch (14152:6): [True: 11, False: 8]
  ------------------
14153|     11|		jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
  ------------------
  |  |  976|     11|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     11|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
14154|     11|	} else if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op) == IS_STRING) {
  ------------------
  |  |  612|      8|#define IS_STRING					6
  ------------------
  |  Branch (14154:13): [True: 1, False: 7]
  ------------------
14155|      1|		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST);
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST);
  ------------------
  |  |  866|      1|#define IS_VAR		(1<<2)
  ------------------
              		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST);
  ------------------
  |  |  867|      1|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST);
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
14156|      7|	} else if (Z_TYPE_P(op) == IS_REFERENCE) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(op) == IS_REFERENCE) {
  ------------------
  |  |  616|      7|#define IS_REFERENCE				10
  ------------------
  |  Branch (14156:13): [True: 0, False: 7]
  ------------------
14157|      0|		op = Z_REFVAL_P(op);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14158|      0|		goto match_try_again;
14159|      7|	} else {
14160|      7|		if (UNEXPECTED(((IS_TMP_VAR|IS_VAR|IS_CV) & IS_CV) && Z_TYPE_P(op) == IS_UNDEF)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 4]
  |  |  |  Branch (457:52): [True: 7, Folded]
  |  |  |  Branch (457:52): [True: 3, False: 4]
  |  |  ------------------
  ------------------
14161|      3|			SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
14162|      3|			op = ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      3|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
14163|      3|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
14164|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (14164:5): [True: 0, False: 0]
  |  Branch (14164:5): [True: 0, False: 0]
  ------------------
14165|      0|			}
14166|      3|			goto match_try_again;
14167|      3|		}
14168|       |
14169|      4|		goto default_branch;
14170|      7|	}
14171|       |
14172|     12|	if (jump_zv != NULL) {
  ------------------
  |  Branch (14172:6): [True: 11, False: 1]
  ------------------
14173|     11|		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
  ------------------
  |  | 5785|     11|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|     11|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     11|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     11|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     11|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     11|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     11|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     11|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     11|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14174|     11|		ZEND_VM_CONTINUE();
  ------------------
  |  |  405|     11|# define ZEND_VM_CONTINUE()      return opline
  ------------------
14175|     11|	} else {
14176|      5|default_branch:
14177|       |		/* default */
14178|      5|		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
  ------------------
  |  | 5785|      5|	ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset))
  |  |  ------------------
  |  |  |  | 5781|      5|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      5|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      5|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      5|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      5|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14179|      5|		ZEND_VM_CONTINUE();
  ------------------
  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  ------------------
14180|      5|	}
14181|     12|}
zend_execute.c:ZEND_CASE_STRICT_SPEC_TMP_CONST_HANDLER:
18420|      3|{
18421|      3|	USE_OPLINE
18422|      3|	zval *op1, *op2;
18423|      3|	bool result;
18424|       |
18425|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
18426|      3|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
18427|      3|	op2 = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|      3|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
18428|      3|	result = fast_is_identical_function(op1, op2);
18429|       |
18430|       |
18431|      3|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      3|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      3|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      3|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 2, False: 1]
  |  |  ------------------
  |  | 5819|      2|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      2|			} else { \
  |  | 5821|      1|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      1|			} \
  |  | 5823|      3|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
18432|      3|}
zend_execute.c:ZEND_CASE_STRICT_SPEC_TMP_TMP_HANDLER:
20006|      3|{
20007|      3|	USE_OPLINE
20008|      3|	zval *op1, *op2;
20009|      3|	bool result;
20010|       |
20011|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
20012|      3|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20013|      3|	op2 = _get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      3|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      3|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
20014|      3|	result = fast_is_identical_function(op1, op2);
20015|      3|	zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
  ------------------
  |  |  755|      3|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      3|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
20016|      3|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      3|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      3|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 3, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      3|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      3|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 2, False: 1]
  |  |  ------------------
  |  | 5819|      2|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      2|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      2|			} else { \
  |  | 5821|      1|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      1|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      1|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      1|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      1|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      1|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      1|			} \
  |  | 5823|      3|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      3|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      3|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
20017|      3|}
zend_execute.c:ZEND_CASE_STRICT_SPEC_TMP_CV_HANDLER:
22233|      1|{
22234|      1|	USE_OPLINE
22235|      1|	zval *op1, *op2;
22236|      1|	bool result;
22237|       |
22238|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
22239|      1|	op1 = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22240|      1|	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
22241|      1|	result = fast_is_identical_function(op1, op2);
22242|       |
22243|       |
22244|      1|	ZEND_VM_SMART_BRANCH(result, 1);
  ------------------
  |  | 5808|      1|#define ZEND_VM_SMART_BRANCH(_result, _check) do { \
  |  | 5809|      1|		if ((_check) && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5809:7): [True: 1, Folded]
  |  |  ------------------
  |  | 5810|      0|			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               			OPLINE = EX(opline); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5811|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5812|      0|			if (_result) { \
  |  |  ------------------
  |  |  |  Branch (5812:8): [True: 0, False: 0]
  |  |  ------------------
  |  | 5813|      0|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5814|      0|			} else { \
  |  | 5815|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5816|      0|			} \
  |  | 5817|      1|		} else if (EXPECTED(opline->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR))) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5818|      1|			if (!(_result)) { \
  |  |  ------------------
  |  |  |  Branch (5818:8): [True: 1, False: 0]
  |  |  ------------------
  |  | 5819|      1|				ZEND_VM_SET_NEXT_OPCODE(opline + 2); \
  |  |  ------------------
  |  |  |  | 5773|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      1|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5820|      1|			} else { \
  |  | 5821|      0|				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline + 1, (opline+1)->op2)); \
  |  |  ------------------
  |  |  |  | 5781|      0|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      0|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      0|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      0|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      0|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5822|      0|			} \
  |  | 5823|      1|		} else { \
  |  | 5824|      0|			ZVAL_BOOL(EX_VAR(opline->result.var), _result); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5825|      0|			ZEND_VM_SET_NEXT_OPCODE(opline + 1); \
  |  |  ------------------
  |  |  |  | 5773|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5774|      0|	OPLINE = new_op
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5826|      0|		} \
  |  | 5827|      1|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5828|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5828:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
22245|      1|}
zend_execute.c:ZEND_MATCH_ERROR_SPEC_CONST_UNUSED_HANDLER:
11779|      2|{
11780|      2|	USE_OPLINE
11781|      2|	zval *op;
11782|       |
11783|      2|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11784|      2|	op = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      2|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
11785|      2|	zend_match_unhandled_error(op);
11786|      2|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      2|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      2|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11786:2): [True: 0, False: 2]
  |  Branch (11786:2): [True: 2, False: 0]
  ------------------
11787|      2|}
zend_execute.c:ZEND_MATCH_ERROR_SPEC_TMPVARCV_UNUSED_HANDLER:
15584|      7|{
15585|      7|	USE_OPLINE
15586|      7|	zval *op;
15587|       |
15588|      7|	SAVE_OPLINE();
  ------------------
  |  |  428|      7|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
15589|      7|	op = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
15590|      7|	zend_match_unhandled_error(op);
15591|      7|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      7|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      7|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      7|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (15591:2): [True: 0, False: 7]
  |  Branch (15591:2): [True: 7, False: 0]
  ------------------
15592|      7|}
zend_execute.c:ZEND_JMP_NULL_SPEC_CONST_HANDLER:
 5827|      8|{
 5828|      8|	USE_OPLINE
 5829|      8|	zval *val, *result;
 5830|       |
 5831|      8|	val = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      8|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 5832|       |
 5833|      8|	if (Z_TYPE_P(val) > IS_NULL) {
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) > IS_NULL) {
  ------------------
  |  |  607|      8|#define IS_NULL						1
  ------------------
  |  Branch (5833:6): [True: 6, False: 2]
  ------------------
 5834|      6|		do {
 5835|      6|			if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  864|      6|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  864|      0|#define IS_CONST	(1<<0)
  ------------------
              			if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (5835:9): [Folded, False: 0]
  |  Branch (5835:30): [Folded, False: 0]
  |  Branch (5835:53): [True: 0, False: 0]
  ------------------
 5836|      0|				val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5837|      0|				if (Z_TYPE_P(val) <= IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) <= IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (5837:9): [True: 0, False: 0]
  ------------------
 5838|       |
 5839|       |
 5840|      0|					break;
 5841|      0|				}
 5842|      0|			}
 5843|      6|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      6|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      6|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      6|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      6|	} else { \
  |  |  |  | 5761|      6|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      6|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      6|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      6|	} \
  |  |  |  | 5764|      6|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      6|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5843:4): [True: 0, False: 6]
  |  Branch (5843:4): [True: 6, False: 0]
  ------------------
 5844|      6|		} while (0);
  ------------------
  |  Branch (5844:12): [Folded, False: 0]
  ------------------
 5845|      6|	}
 5846|       |
 5847|      2|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|      2|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      2|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
 5848|      2|	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
  ------------------
  |  |  448|      2|#define ZEND_SHORT_CIRCUITING_CHAIN_MASK 0x3
  ------------------
 5849|      2|	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 5850|      2|		ZVAL_NULL(result);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 5851|      2|		if (IS_CONST == IS_CV
  ------------------
  |  |  864|      2|#define IS_CONST	(1<<0)
  ------------------
              		if (IS_CONST == IS_CV
  ------------------
  |  |  867|      4|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (5851:7): [Folded, False: 2]
  ------------------
 5852|      0|			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5853|      0|			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
  ------------------
  |  |  454|      0|#define ZEND_JMP_NULL_BP_VAR_IS 4
  ------------------
  |  Branch (5853:7): [True: 0, False: 0]
  ------------------
 5854|      2|		) {
 5855|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5856|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
 5857|      0|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5858|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (5858:5): [True: 0, False: 0]
  |  Branch (5858:5): [True: 0, False: 0]
  ------------------
 5859|      0|			}
 5860|      0|		}
 5861|      2|	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
  ------------------
  |  |  450|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1
  ------------------
  |  Branch (5861:13): [True: 0, False: 0]
  ------------------
 5862|      0|		ZVAL_FALSE(result);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5863|      0|	} else {
 5864|      0|		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5864:3): [True: 0, False: 0]
  |  Branch (5864:3): [True: 0, False: 0]
  ------------------
 5865|      0|		ZVAL_TRUE(result);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5866|      0|	}
 5867|       |
 5868|      2|	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|      2|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      2|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 2]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      2|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      2|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      2|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      2|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      2|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      2|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      2|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5868:2): [True: 0, False: 0]
  |  Branch (5868:2): [True: 0, False: 0]
  ------------------
 5869|      2|}
zend_execute.c:ZEND_JMP_NULL_SPEC_TMP_HANDLER:
17952|     23|{
17953|     23|	USE_OPLINE
17954|     23|	zval *val, *result;
17955|       |
17956|     23|	val = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
  ------------------
  |  |   89|     23|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  ------------------
  |  |  |  |   87|     23|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17957|       |
17958|     23|	if (Z_TYPE_P(val) > IS_NULL) {
  ------------------
  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) > IS_NULL) {
  ------------------
  |  |  607|     23|#define IS_NULL						1
  ------------------
  |  Branch (17958:6): [True: 1, False: 22]
  ------------------
17959|      1|		do {
17960|      1|			if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|      2|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  ------------------
              			if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (17960:9): [Folded, False: 0]
  |  Branch (17960:32): [Folded, False: 0]
  |  Branch (17960:57): [True: 0, False: 0]
  ------------------
17961|      0|				val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17962|      0|				if (Z_TYPE_P(val) <= IS_NULL) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) <= IS_NULL) {
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (17962:9): [True: 0, False: 0]
  ------------------
17963|      0|					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
  ------------------
  |  |  755|      0|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      0|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17964|      0|					break;
17965|      0|				}
17966|      0|			}
17967|      1|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      1|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      1|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      1|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      1|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (17967:4): [True: 0, False: 1]
  |  Branch (17967:4): [True: 1, False: 0]
  ------------------
17968|      1|		} while (0);
  ------------------
  |  Branch (17968:12): [Folded, False: 0]
  ------------------
17969|      1|	}
17970|       |
17971|     22|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     22|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     22|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
17972|     22|	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
  ------------------
  |  |  448|     22|#define ZEND_SHORT_CIRCUITING_CHAIN_MASK 0x3
  ------------------
17973|     22|	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
  ------------------
  |  |  456|     22|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 22, False: 0]
  |  |  ------------------
  ------------------
17974|     22|		ZVAL_NULL(result);
  ------------------
  |  | 1059|     22|#define ZVAL_NULL(z) do {				\
  |  | 1060|     22|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     22|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     22|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     22|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
17975|     22|		if (IS_TMP_VAR == IS_CV
  ------------------
  |  |  865|     22|#define IS_TMP_VAR	(1<<1)
  ------------------
              		if (IS_TMP_VAR == IS_CV
  ------------------
  |  |  867|     44|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (17975:7): [Folded, False: 22]
  ------------------
17976|      0|			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
  ------------------
  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17977|      0|			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
  ------------------
  |  |  454|      0|#define ZEND_JMP_NULL_BP_VAR_IS 4
  ------------------
  |  Branch (17977:7): [True: 0, False: 0]
  ------------------
17978|     22|		) {
17979|      0|			SAVE_OPLINE();
  ------------------
  |  |  428|      0|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
17980|      0|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      0|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      0|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
17981|      0|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
17982|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (17982:5): [True: 0, False: 0]
  |  Branch (17982:5): [True: 0, False: 0]
  ------------------
17983|      0|			}
17984|      0|		}
17985|     22|	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
  ------------------
  |  |  450|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1
  ------------------
  |  Branch (17985:13): [True: 0, False: 0]
  ------------------
17986|      0|		ZVAL_FALSE(result);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17987|      0|	} else {
17988|      0|		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (17988:3): [True: 0, False: 0]
  |  Branch (17988:3): [True: 0, False: 0]
  ------------------
17989|      0|		ZVAL_TRUE(result);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
17990|      0|	}
17991|       |
17992|     22|	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|     22|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|     22|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 22]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|     22|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|     22|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     22|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     22|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     22|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     22|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     22|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     22|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     22|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|     22|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     22|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (17992:2): [True: 0, False: 0]
  |  Branch (17992:2): [True: 0, False: 0]
  ------------------
17993|     22|}
zend_execute.c:ZEND_JMP_NULL_SPEC_CV_HANDLER:
40538|     20|{
40539|     20|	USE_OPLINE
40540|     20|	zval *val, *result;
40541|       |
40542|     20|	val = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     20|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     20|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40543|       |
40544|     20|	if (Z_TYPE_P(val) > IS_NULL) {
  ------------------
  |  |  669|     20|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     20|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) > IS_NULL) {
  ------------------
  |  |  607|     20|#define IS_NULL						1
  ------------------
  |  Branch (40544:6): [True: 11, False: 9]
  ------------------
40545|     11|		do {
40546|     11|			if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|     11|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|     22|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  867|      0|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              			if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  866|      0|#define IS_VAR		(1<<2)
  ------------------
              			if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  669|     11|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_TYPE_P(val) == IS_REFERENCE) {
  ------------------
  |  |  616|     11|#define IS_REFERENCE				10
  ------------------
  |  Branch (40546:9): [True: 11, Folded]
  |  Branch (40546:27): [Folded, False: 0]
  |  Branch (40546:47): [True: 7, False: 4]
  ------------------
40547|      7|				val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      7|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      7|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      7|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
40548|      7|				if (Z_TYPE_P(val) <= IS_NULL) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) <= IS_NULL) {
  ------------------
  |  |  607|      7|#define IS_NULL						1
  ------------------
  |  Branch (40548:9): [True: 3, False: 4]
  ------------------
40549|       |
40550|       |
40551|      3|					break;
40552|      3|				}
40553|      7|			}
40554|      8|			ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     11|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      8|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      8|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      8|	} else { \
  |  |  |  | 5761|      8|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      8|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      8|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      8|	} \
  |  |  |  | 5764|      8|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      8|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40554:4): [True: 0, False: 8]
  |  Branch (40554:4): [True: 8, False: 0]
  ------------------
40555|      8|		} while (0);
  ------------------
  |  Branch (40555:12): [Folded, False: 0]
  ------------------
40556|     11|	}
40557|       |
40558|     12|	result = EX_VAR(opline->result.var);
  ------------------
  |  |  755|     12|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     12|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40559|     12|	uint32_t short_circuiting_type = opline->extended_value & ZEND_SHORT_CIRCUITING_CHAIN_MASK;
  ------------------
  |  |  448|     12|#define ZEND_SHORT_CIRCUITING_CHAIN_MASK 0x3
  ------------------
40560|     12|	if (EXPECTED(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EXPR)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
40561|     12|		ZVAL_NULL(result);
  ------------------
  |  | 1059|     12|#define ZVAL_NULL(z) do {				\
  |  | 1060|     12|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|     12|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
40562|     12|		if (IS_CV == IS_CV
  ------------------
  |  |  867|     12|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
              		if (IS_CV == IS_CV
  ------------------
  |  |  867|     24|#define IS_CV		(1<<3)	/* Compiled variable */
  ------------------
  |  Branch (40562:7): [True: 12, Folded]
  ------------------
40563|     12|			&& UNEXPECTED(Z_TYPE_P(val) == IS_UNDEF)
  ------------------
  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 6]
  |  |  ------------------
  ------------------
40564|      6|			&& (opline->extended_value & ZEND_JMP_NULL_BP_VAR_IS) == 0
  ------------------
  |  |  454|      6|#define ZEND_JMP_NULL_BP_VAR_IS 4
  ------------------
  |  Branch (40564:7): [True: 5, False: 1]
  ------------------
40565|     12|		) {
40566|      5|			SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40567|      5|			ZVAL_UNDEFINED_OP1();
  ------------------
  |  |  294|      5|#define ZVAL_UNDEFINED_OP1() _zval_undefined_op1(EXECUTE_DATA_C)
  |  |  ------------------
  |  |  |  |   87|      5|# define EXECUTE_DATA_C     execute_data
  |  |  ------------------
  ------------------
40568|      5|			if (UNEXPECTED(EG(exception) != NULL)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
40569|      0|				HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (40569:5): [True: 0, False: 0]
  |  Branch (40569:5): [True: 0, False: 0]
  ------------------
40570|      0|			}
40571|      5|		}
40572|     12|	} else if (short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_ISSET) {
  ------------------
  |  |  450|      0|#define ZEND_SHORT_CIRCUITING_CHAIN_ISSET 1
  ------------------
  |  Branch (40572:13): [True: 0, False: 0]
  ------------------
40573|      0|		ZVAL_FALSE(result);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40574|      0|	} else {
40575|      0|		ZEND_ASSERT(short_circuiting_type == ZEND_SHORT_CIRCUITING_CHAIN_EMPTY);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40575:3): [True: 0, False: 0]
  |  Branch (40575:3): [True: 0, False: 0]
  ------------------
40576|      0|		ZVAL_TRUE(result);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
40577|      0|	}
40578|       |
40579|     12|	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
  ------------------
  |  | 5787|     12|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|     12|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [Folded, False: 12]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|     12|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|     12|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|     12|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|     12|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|     12|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|     12|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|     12|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|     12|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|     12|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|     12|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40579:2): [True: 0, False: 0]
  |  Branch (40579:2): [True: 0, False: 0]
  ------------------
40580|     12|}
zend_execute.c:ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED_HANDLER:
37076|     40|{
37077|     40|	USE_OPLINE
37078|       |
37079|     40|	zend_execute_data *call = execute_data->call;
37080|     40|	if (EXPECTED(!(ZEND_CALL_INFO(call) & ZEND_CALL_MAY_HAVE_UNDEF))) {
  ------------------
  |  |  456|     40|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 38, False: 2]
  |  |  ------------------
  ------------------
37081|     38|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     38|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     38|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     38|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     38|	} else { \
  |  |  |  | 5761|     38|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     38|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     38|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     38|	} \
  |  |  |  | 5764|     38|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     38|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37081:3): [True: 0, False: 38]
  |  Branch (37081:3): [True: 38, False: 0]
  ------------------
37082|     38|	}
37083|       |
37084|     40|	SAVE_OPLINE();
  ------------------
  |  |  428|      2|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37085|      2|	zend_handle_undef_args(call);
37086|      2|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      2|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      2|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37086:2): [True: 0, False: 0]
  |  Branch (37086:2): [True: 0, False: 0]
  ------------------
37087|      2|}
zend_execute.c:ZEND_FETCH_GLOBALS_SPEC_UNUSED_UNUSED_HANDLER:
37318|     21|{
37319|     21|	USE_OPLINE
37320|       |
37321|       |	/* For symbol tables we need to deal with exactly the same problems as for property tables. */
37322|     21|	ZVAL_ARR(EX_VAR(opline->result.var),
  ------------------
  |  | 1125|     21|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     21|		zend_array *__arr = (a);				\
  |  | 1127|     21|		zval *__z = (z);						\
  |  | 1128|     21|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     21|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     21|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     21|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     21|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     21|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     21|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     21|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     21|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     21|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
37323|     21|		zend_proptable_to_symtable(&EG(symbol_table), /* always_duplicate */ 1));
37324|     21|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     21|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     21|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     21|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     21|	} else { \
  |  |  |  | 5761|     21|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     21|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     21|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     21|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     21|	} \
  |  |  |  | 5764|     21|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     21|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37324:2): [True: 0, False: 21]
  |  Branch (37324:2): [True: 21, False: 0]
  ------------------
37325|     21|}
zend_execute.c:ZEND_VERIFY_NEVER_TYPE_SPEC_UNUSED_UNUSED_HANDLER:
37005|      1|{
37006|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37007|      1|	zend_verify_never_error(EX(func));
  ------------------
  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  ------------------
37008|      1|	HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (37008:2): [True: 0, False: 1]
  |  Branch (37008:2): [True: 1, False: 0]
  ------------------
37009|      1|}
zend_execute.c:ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED_HANDLER:
37485|     29|{
37486|     29|	USE_OPLINE
37487|     29|	zend_execute_data *call = EX(call);
  ------------------
  |  |  730|     29|#define EX(element) 			((execute_data)->element)
  ------------------
37488|       |
37489|     29|	if (opline->extended_value != (uint32_t)-1) {
  ------------------
  |  Branch (37489:6): [True: 22, False: 7]
  ------------------
37490|     22|		zend_object *closure = CACHED_PTR(opline->extended_value);
  ------------------
  |  |  527|     22|	((void**)((char*)EX(run_time_cache) + (num)))[0]
  |  |  ------------------
  |  |  |  |  730|     22|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
37491|     22|		if (closure) {
  ------------------
  |  Branch (37491:7): [True: 0, False: 22]
  ------------------
37492|      0|			ZVAL_OBJ_COPY(EX_VAR(opline->result.var), closure);
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
37493|     22|		} else {
37494|       |			/* Rotate the key for better hash distribution. */
37495|     22|			const int shift = sizeof(size_t) == 4 ? 6 : 7;
  ------------------
  |  Branch (37495:22): [Folded, False: 22]
  ------------------
37496|     22|			zend_ulong key = (zend_ulong)(uintptr_t)call->func;
37497|     22|			key = (key >> shift) | (key << ((sizeof(key) * 8) - shift));
37498|     22|			zval *closure_zv = zend_hash_index_lookup(&EG(callable_convert_cache), key);
  ------------------
  |  |   45|     22|# define EG(v) (executor_globals.v)
  ------------------
37499|     22|			if (Z_TYPE_P(closure_zv) == IS_NULL) {
  ------------------
  |  |  669|     22|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     22|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(closure_zv) == IS_NULL) {
  ------------------
  |  |  607|     22|#define IS_NULL						1
  ------------------
  |  Branch (37499:8): [True: 19, False: 3]
  ------------------
37500|     19|				zend_closure_from_frame(closure_zv, call);
37501|     19|			}
37502|     22|			ZEND_ASSERT(Z_TYPE_P(closure_zv) == IS_OBJECT);
  ------------------
  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (37502:4): [True: 0, False: 22]
  |  Branch (37502:4): [True: 22, False: 0]
  ------------------
37503|     22|			closure = Z_OBJ_P(closure_zv);
  ------------------
  |  | 1000|     22|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     22|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
37504|     22|			ZVAL_OBJ_COPY(EX_VAR(opline->result.var), closure);
  ------------------
  |  | 1146|     22|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|     22|		zval *__z = (z);						\
  |  | 1148|     22|		zend_object *__o = (o);					\
  |  | 1149|     22|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|     22|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|     22|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|     22|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     22|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|     22|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     22|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     22|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     22|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     22|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     22|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     22|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     22|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     22|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
37505|     22|			CACHE_PTR(opline->extended_value, closure);
  ------------------
  |  |  529|     22|#define CACHE_PTR(num, ptr) do { \
  |  |  530|     22|		((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
  |  |  ------------------
  |  |  |  |  730|     22|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  531|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (531:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
37506|     22|		}
37507|     22|	} else {
37508|      7|		zend_closure_from_frame(EX_VAR(opline->result.var), call);
  ------------------
  |  |  755|      7|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|      7|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
37509|      7|	}
37510|       |
37511|     29|	if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  687|     29|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|     29|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              	if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) {
  ------------------
  |  |  667|     29|#define ZEND_CALL_RELEASE_THIS       (1 << 21)
  ------------------
  |  Branch (37511:6): [True: 3, False: 26]
  ------------------
37512|      3|		OBJ_RELEASE(Z_OBJ(call->This));
  ------------------
  |  |   44|      3|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
37513|      3|	}
37514|       |
37515|     29|	EX(call) = call->prev_execute_data;
  ------------------
  |  |  730|     29|#define EX(element) 			((execute_data)->element)
  ------------------
37516|       |
37517|     29|	zend_vm_stack_free_call_frame(call);
37518|       |
37519|     29|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     29|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     29|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     29|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 29]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     29|	} else { \
  |  |  |  | 5761|     29|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     29|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     29|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     29|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     29|	} \
  |  |  |  | 5764|     29|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     29|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (37519:2): [True: 0, False: 29]
  |  Branch (37519:2): [True: 29, False: 0]
  ------------------
37520|     29|}
zend_execute.c:ZEND_BIND_INIT_STATIC_OR_JMP_SPEC_CV_HANDLER:
40944|     39|{
40945|     39|	USE_OPLINE
40946|     39|	HashTable *ht;
40947|     39|	zval *value;
40948|     39|	zval *variable_ptr;
40949|       |
40950|     39|	variable_ptr = EX_VAR(opline->op1.var);
  ------------------
  |  |  755|     39|#define EX_VAR(n)				ZEND_CALL_VAR(execute_data, n)
  |  |  ------------------
  |  |  |  |  722|     39|	((zval*)(((char*)(call)) + ((int)(n))))
  |  |  ------------------
  ------------------
40951|       |
40952|     39|	ht = ZEND_MAP_PTR_GET(EX(func)->op_array.static_variables_ptr);
  ------------------
  |  |   54|     39|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|     39|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|     39|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 39]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|     39|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|     39|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|     39|	ptr ## __ptr
  |  |  ------------------
  ------------------
40953|     39|	if (!ht) {
  ------------------
  |  Branch (40953:6): [True: 34, False: 5]
  ------------------
40954|     34|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|     34|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|     34|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|     34|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|     34|	} else { \
  |  |  |  | 5761|     34|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     34|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|     34|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|     34|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|     34|	} \
  |  |  |  | 5764|     34|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|     34|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40954:3): [True: 0, False: 34]
  |  Branch (40954:3): [True: 34, False: 0]
  ------------------
40955|     34|	}
40956|      5|	ZEND_ASSERT(GC_REFCOUNT(ht) == 1);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40956:2): [True: 0, False: 5]
  |  Branch (40956:2): [True: 5, False: 0]
  ------------------
40957|       |
40958|      5|	value = (zval*)((char*)ht->arData + opline->extended_value);
40959|      5|	if (Z_TYPE_P(value) == IS_NULL) {
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) == IS_NULL) {
  ------------------
  |  |  607|      5|#define IS_NULL						1
  ------------------
  |  Branch (40959:6): [True: 0, False: 5]
  ------------------
40960|      0|		ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      0|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      0|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      0|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (40960:3): [True: 0, False: 0]
  |  Branch (40960:3): [True: 0, False: 0]
  ------------------
40961|      5|	} else {
40962|      5|		SAVE_OPLINE();
  ------------------
  |  |  428|      5|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
40963|      5|		zval_ptr_dtor(variable_ptr);
40964|      5|		ZEND_ASSERT(Z_TYPE_P(value) == IS_REFERENCE);
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (40964:3): [True: 0, False: 5]
  |  Branch (40964:3): [True: 5, False: 0]
  ------------------
40965|      5|		Z_ADDREF_P(value);
  ------------------
  |  | 1277|      5|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
40966|      5|		ZVAL_REF(variable_ptr, Z_REF_P(value));
  ------------------
  |  | 1189|      5|#define ZVAL_REF(z, r) do {										\
  |  | 1190|      5|		zval *__z = (z);										\
  |  | 1191|      5|		Z_REF_P(__z) = (r);										\
  |  |  ------------------
  |  |  |  | 1030|      5|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      5|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1192|      5|		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX;					\
  |  |  ------------------
  |  |  |  |  832|      5|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      5|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1193|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1193:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
40967|       |		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 1);
  ------------------
  |  | 5787|      5|#define ZEND_VM_JMP_EX(new_op, check_exception) do { \
  |  | 5788|      5|		if (check_exception && UNEXPECTED(EG(exception))) { \
  |  |  ------------------
  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5788:7): [True: 5, Folded]
  |  |  ------------------
  |  | 5789|      0|			HANDLE_EXCEPTION(); \
  |  |  ------------------
  |  |  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5790|      0|		} \
  |  | 5791|      5|		ZEND_VM_SET_OPCODE(new_op); \
  |  |  ------------------
  |  |  |  | 5781|      5|	ZEND_VM_SET_OPCODE_NO_INTERRUPT(new_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 5777|      5|	CHECK_SYMBOL_TABLES() \
  |  |  |  |  |  | 5778|      5|	OPLINE = new_op
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  423|      5|# define OPLINE opline
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 5782|      5|	ZEND_VM_INTERRUPT_CHECK()
  |  |  |  |  ------------------
  |  |  |  |  |  | 4324|      5|#define ZEND_VM_INTERRUPT_CHECK() do { \
  |  |  |  |  |  | 4325|      5|		if (UNEXPECTED(zend_atomic_bool_load_ex(&EG(vm_interrupt)))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4326|      0|			ZEND_VM_INTERRUPT(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  447|      0|#define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  404|      0|# define ZEND_VM_TAIL_CALL(call) return call
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 4327|      0|		} \
  |  |  |  |  |  | 4328|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (4328:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5792|      5|		ZEND_VM_CONTINUE(); \
  |  |  ------------------
  |  |  |  |  405|      5|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  |  | 5793|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5793:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (40967:3): [True: 0, False: 0]
  |  Branch (40967:3): [True: 0, False: 0]
  ------------------
40968|      5|	}
40969|      5|}
zend_execute.c:ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_HANDLER:
11988|      3|{
11989|      3|	USE_OPLINE
11990|      3|	SAVE_OPLINE();
  ------------------
  |  |  428|      3|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
11991|       |
11992|      3|	zend_class_entry *ce = EX(func)->common.scope;
  ------------------
  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  ------------------
11993|      3|	ZEND_ASSERT(ce);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (11993:2): [True: 0, False: 3]
  |  Branch (11993:2): [True: 3, False: 0]
  ------------------
11994|       |
11995|      3|	zend_class_entry *parent_ce = ce->parent;
11996|      3|	if (!parent_ce) {
  ------------------
  |  Branch (11996:6): [True: 1, False: 2]
  ------------------
11997|      1|		zend_throw_error(NULL, "Cannot use \"parent\" when current class scope has no parent");
11998|      1|		UNDEF_RESULT();
  ------------------
  |  | 5907|      1|#define UNDEF_RESULT() do { \
  |  | 5908|      1|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      1|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      1|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
11999|      1|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      1|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      1|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (11999:3): [True: 0, False: 1]
  |  Branch (11999:3): [True: 1, False: 0]
  ------------------
12000|      1|	}
12001|       |
12002|      2|	zend_string *property_name = Z_STR_P(RT_CONSTANT(opline, opline->op1));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
12003|      2|	zend_property_hook_kind hook_kind = opline->op2.num;
12004|       |
12005|      2|	zend_property_info *prop_info = zend_hash_find_ptr(&parent_ce->properties_info, property_name);
12006|      2|	if (!prop_info) {
  ------------------
  |  Branch (12006:6): [True: 0, False: 2]
  ------------------
12007|      0|		zend_throw_error(NULL, "Undefined property %s::$%s", ZSTR_VAL(parent_ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_throw_error(NULL, "Undefined property %s::$%s", ZSTR_VAL(parent_ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
12008|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12009|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12009:3): [True: 0, False: 0]
  |  Branch (12009:3): [True: 0, False: 0]
  ------------------
12010|      0|	}
12011|      2|	if (prop_info->flags & ZEND_ACC_PRIVATE) {
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (12011:6): [True: 0, False: 2]
  ------------------
12012|      0|		zend_throw_error(NULL, "Cannot access private property %s::$%s", ZSTR_VAL(parent_ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_throw_error(NULL, "Cannot access private property %s::$%s", ZSTR_VAL(parent_ce->name), ZSTR_VAL(property_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
12013|      0|		UNDEF_RESULT();
  ------------------
  |  | 5907|      0|#define UNDEF_RESULT() do { \
  |  | 5908|      0|		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  866|      0|#define IS_VAR		(1<<2)
  |  |  ------------------
  |  |               		if (opline->result_type & (IS_VAR | IS_TMP_VAR)) { \
  |  |  ------------------
  |  |  |  |  865|      0|#define IS_TMP_VAR	(1<<1)
  |  |  ------------------
  |  |  |  Branch (5908:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 5909|      0|			ZVAL_UNDEF(EX_VAR(opline->result.var)); \
  |  |  ------------------
  |  |  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  |  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  | 1057|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5910|      0|		} \
  |  | 5911|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (5911:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
12014|      0|		HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (12014:3): [True: 0, False: 0]
  |  Branch (12014:3): [True: 0, False: 0]
  ------------------
12015|      0|	}
12016|       |
12017|      2|	zend_function **hooks = prop_info->hooks;
12018|      2|	zend_function *hook = hooks ? hooks[hook_kind] : NULL;
  ------------------
  |  Branch (12018:24): [True: 0, False: 2]
  ------------------
12019|       |
12020|      2|	zend_execute_data *call;
12021|      2|	if (hook) {
  ------------------
  |  Branch (12021:6): [True: 0, False: 2]
  ------------------
12022|      0|		call = zend_vm_stack_push_call_frame(
12023|      0|			ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  681|      0|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      0|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      0|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  657|      0|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12024|      0|			hook, opline->extended_value, Z_OBJ_P(ZEND_THIS));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
12025|      0|		if (EXPECTED(hook->type == ZEND_USER_FUNCTION)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12026|      0|			if (UNEXPECTED(!RUN_TIME_CACHE(&hook->op_array))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12027|      0|				init_func_run_time_cache(&hook->op_array);
12028|      0|			}
12029|      0|			call->run_time_cache = RUN_TIME_CACHE(&hook->op_array);
  ------------------
  |  |  858|      0|	ZEND_MAP_PTR_GET((op_array)->run_time_cache)
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12030|      0|		}
12031|      2|	} else {
12032|      2|		zend_function *fbc = zend_get_property_hook_trampoline(prop_info, hook_kind, property_name);
12033|      2|		call = zend_vm_stack_push_call_frame(
12034|      2|			ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  681|      2|#define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  660|      2|#define ZEND_CALL_FUNCTION           (0 << 16)
  |  |  ------------------
  |  |               #define ZEND_CALL_NESTED_FUNCTION    (ZEND_CALL_FUNCTION | ZEND_CALL_NESTED)
  |  |  ------------------
  |  |  |  |  662|      2|#define ZEND_CALL_NESTED             (0 << 17)
  |  |  ------------------
  ------------------
              			ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_HAS_THIS,
  ------------------
  |  |  657|      2|#define ZEND_CALL_HAS_THIS           IS_OBJECT_EX
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12035|      2|			fbc, opline->extended_value, Z_OBJ_P(ZEND_THIS));
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
12036|      2|	}
12037|       |
12038|      2|	call->prev_execute_data = EX(call);
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
12039|      2|	EX(call) = call;
  ------------------
  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  ------------------
12040|      2|	ZEND_VM_NEXT_OPCODE();
  ------------------
  |  | 5770|      2|	ZEND_VM_NEXT_OPCODE_EX(0, 1)
  |  |  ------------------
  |  |  |  | 5757|      2|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      2|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      2|	} else { \
  |  |  |  | 5761|      2|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      2|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      2|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      2|	} \
  |  |  |  | 5764|      2|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      2|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12040:2): [True: 0, False: 2]
  |  Branch (12040:2): [True: 2, False: 0]
  ------------------
12041|      2|}
zend_execute.c:ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_HANDLER:
 8317|     12|{
 8318|     12|	USE_OPLINE
 8319|     12|	zval *name;
 8320|     12|	zval *val;
 8321|     12|	zend_constant c, *registered;
 8322|       |
 8323|     12|	SAVE_OPLINE();
  ------------------
  |  |  428|     12|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 8324|     12|	name  = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|     12|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8325|     12|	val   = RT_CONSTANT(opline, opline->op2);
  ------------------
  |  |  841|     12|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 8326|       |
 8327|     12|	ZVAL_COPY(&c.value, val);
  ------------------
  |  | 1425|     12|	do {												\
  |  | 1426|     12|		zval *_z1 = (z);								\
  |  | 1427|     12|		const zval *_z2 = (v);							\
  |  | 1428|     12|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     12|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     12|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     12|	do {												\
  |  |  |  | 1408|     12|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     12|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     12|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     12|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     12|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     12|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     12|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 3, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      3|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      3|		}												\
  |  | 1434|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 8328|     12|	if (Z_OPT_CONSTANT(c.value)) {
  ------------------
  |  |  951|     12|#define Z_OPT_CONSTANT(zval)		(Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  948|     12|#define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OPT_TYPE(zval)			(Z_TYPE_INFO(zval) & Z_TYPE_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |  710|     12|#define Z_TYPE_MASK					0xff
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define Z_OPT_CONSTANT(zval)		(Z_OPT_TYPE(zval) == IS_CONSTANT_AST)
  |  |  ------------------
  |  |  |  |  617|     12|#define IS_CONSTANT_AST				11 /* Constant expressions */
  |  |  ------------------
  |  |  |  Branch (951:31): [True: 1, False: 11]
  |  |  ------------------
  ------------------
 8329|      1|		if (UNEXPECTED(zval_update_constant_ex(&c.value, EX(func)->op_array.scope) != SUCCESS)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 8330|      0|			zval_ptr_dtor_nogc(&c.value);
 8331|       |
 8332|       |
 8333|       |
 8334|       |
 8335|      0|			HANDLE_EXCEPTION();
  ------------------
  |  |  431|      0|#define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  425|      0|# define LOAD_OPLINE() opline = EX(opline)
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HANDLE_EXCEPTION() ZEND_ASSERT(EG(exception)); LOAD_OPLINE(); ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (8335:4): [True: 0, False: 0]
  |  Branch (8335:4): [True: 0, False: 0]
  ------------------
 8336|      0|		}
 8337|      1|	}
 8338|       |	/* non persistent, case sensitive */
 8339|     12|	ZEND_CONSTANT_SET_FLAGS(&c, 0, PHP_USER_CONSTANT);
  ------------------
  |  |   56|     12|#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
  |  |   57|     12|		Z_CONSTANT_FLAGS((c)->value) = \
  |  |  ------------------
  |  |  |  |  701|     12|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  |  |   58|     12|			((_flags) & 0xff) | ((_module_number) << 8); \
  |  |   59|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (59:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 8340|     12|	c.name = zend_string_copy(Z_STR_P(name));
  ------------------
  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 8341|       |
 8342|     12|	registered = zend_register_constant(&c);
 8343|     12|	if (registered == NULL) {
  ------------------
  |  Branch (8343:6): [True: 0, False: 12]
  ------------------
 8344|       |
 8345|       |
 8346|       |
 8347|       |
 8348|       |		/* two opcodes used, second one is the data with attributes */
 8349|      0|		ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|      0|	CHECK_SYMBOL_TABLES() \
  |  | 5758|      0|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 0, Folded]
  |  |  ------------------
  |  | 5759|      0|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|      0|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|      0|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|      0|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (8349:3): [True: 0, False: 0]
  |  Branch (8349:3): [True: 0, False: 0]
  ------------------
 8350|      0|	}
 8351|       |
 8352|     12|	HashTable *attributes = Z_PTR_P(get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1));
  ------------------
  |  | 1053|     12|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     12|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 8353|     12|	ZEND_ASSERT(attributes != NULL);
  ------------------
  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (8353:2): [True: 0, False: 12]
  |  Branch (8353:2): [True: 12, False: 0]
  ------------------
 8354|     12|	zend_constant_add_attributes(registered, attributes);
 8355|       |
 8356|       |
 8357|       |
 8358|       |
 8359|       |	/* two opcodes used, second one is the data with attributes */
 8360|     12|	ZEND_VM_NEXT_OPCODE_EX(1, 2);
  ------------------
  |  | 5757|     12|	CHECK_SYMBOL_TABLES() \
  |  | 5758|     12|	if (check_exception) { \
  |  |  ------------------
  |  |  |  Branch (5758:6): [True: 12, Folded]
  |  |  ------------------
  |  | 5759|     12|		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  423|     12|# define OPLINE opline
  |  |  ------------------
  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  | 5760|     12|	} else { \
  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  ------------------
  |  |  |  |  423|      0|# define OPLINE opline
  |  |  ------------------
  |  | 5763|      0|	} \
  |  | 5764|     12|	ZEND_VM_CONTINUE()
  |  |  ------------------
  |  |  |  |  405|     12|# define ZEND_VM_CONTINUE()      return opline
  |  |  ------------------
  ------------------
  |  Branch (8360:2): [True: 0, False: 0]
  |  Branch (8360:2): [True: 0, False: 0]
  ------------------
 8361|     12|}
zend_execute.c:ZEND_TYPE_ASSERT_SPEC_CONST_HANDLER:
 6152|      1|{
 6153|      1|	USE_OPLINE
 6154|      1|	SAVE_OPLINE();
  ------------------
  |  |  428|      1|# define SAVE_OPLINE() EX(opline) = opline
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6155|       |
 6156|      1|	zval *value = get_zval_ptr_undef(opline->op2_type, opline->op2, BP_VAR_R);
  ------------------
  |  |  122|      1|#define get_zval_ptr_undef(op_type, node, type) _get_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |   89|      1|# define EXECUTE_DATA_CC    , EXECUTE_DATA_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      1|# define EXECUTE_DATA_C     execute_data
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define get_zval_ptr_undef(op_type, node, type) _get_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
  |  |  ------------------
  |  |  |  |  102|      1|# define OPLINE_CC          , OPLINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|      1|# define OPLINE_C           opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6157|       |
 6158|      1|	uint8_t actual_type = Z_TYPE_P(value);
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 6159|      1|	uint8_t expected_type = opline->extended_value & 0xff;
 6160|       |	/* Simple types can be checked directly. */
 6161|      1|	if (UNEXPECTED(actual_type != expected_type)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 6162|      0|		zend_function *fbc;
 6163|      0|		{
 6164|      0|			zval *fname = (zval*)RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
 6165|      0|			ZEND_ASSERT(Z_EXTRA_P(fname) != 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6165:4): [True: 0, False: 0]
  |  Branch (6165:4): [True: 0, False: 0]
  ------------------
 6166|      0|			fbc = Z_FUNC(EG(function_table)->arData[Z_EXTRA_P(fname)].val);
  ------------------
  |  | 1049|      0|#define Z_FUNC(zval)				(zval).value.func
  ------------------
 6167|      0|			ZEND_ASSERT(fbc->type != ZEND_USER_FUNCTION);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6167:4): [True: 0, False: 0]
  |  Branch (6167:4): [True: 0, False: 0]
  ------------------
 6168|      0|		}
 6169|      0|		uint16_t argno = opline->extended_value >> 16;
 6170|      0|		zend_arg_info *arginfo = &fbc->common.arg_info[argno - 1];
 6171|       |
 6172|      0|		if (!zend_check_type(&arginfo->type, value, /* is_return_type */ false, /* is_internal */ true)) {
  ------------------
  |  Branch (6172:7): [True: 0, False: 0]
  ------------------
 6173|      0|			const char *param_name = get_function_arg_name(fbc, argno);
 6174|      0|			zend_string *expected = zend_type_to_string(arginfo->type);
 6175|      0|			zend_type_error("%s(): Argument #%d%s%s%s must be of type %s, %s given", ZSTR_VAL(fbc->common.function_name), argno, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : "", ZSTR_VAL(expected), zend_zval_value_name(value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_type_error("%s(): Argument #%d%s%s%s must be of type %s, %s given", ZSTR_VAL(fbc->common.function_name), argno, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : "", ZSTR_VAL(expected), zend_zval_value_name(value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (6175:121): [True: 0, False: 0]
  |  Branch (6175:146): [True: 0, False: 0]
  |  Branch (6175:176): [True: 0, False: 0]
  ------------------
 6176|      0|			zend_string_release(expected);
 6177|      0|		}
 6178|      0|	}
 6179|       |
 6180|      1|	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
  ------------------
  |  | 5767|      1|	ZEND_VM_NEXT_OPCODE_EX(1, 1)
  |  |  ------------------
  |  |  |  | 5757|      1|	CHECK_SYMBOL_TABLES() \
  |  |  |  | 5758|      1|	if (check_exception) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (5758:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 5759|      1|		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      1|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  |               		OPLINE = EX(opline) + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  |  | 5760|      1|	} else { \
  |  |  |  | 5761|      0|		ZEND_ASSERT(!EG(exception)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 5762|      0|		OPLINE = opline + (skip); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  423|      0|# define OPLINE opline
  |  |  |  |  ------------------
  |  |  |  | 5763|      0|	} \
  |  |  |  | 5764|      1|	ZEND_VM_CONTINUE()
  |  |  |  |  ------------------
  |  |  |  |  |  |  405|      1|# define ZEND_VM_CONTINUE()      return opline
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6180:2): [True: 0, False: 0]
  |  Branch (6180:2): [True: 0, False: 0]
  ------------------
 6181|      1|}
zend_execute.c:init_opcode_serialiser:
12287|      1|{
12287|      1|	int i;
12287|      1|	zval tmp;
12287|       |
12287|      1|	zend_handlers_table = malloc(sizeof(HashTable));
12287|      1|	zend_hash_init(zend_handlers_table, zend_handlers_count, NULL, NULL, 1);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
12287|      1|	zend_hash_real_init(zend_handlers_table, 0);
12287|      1|	Z_TYPE_INFO(tmp) = IS_LONG;
  ------------------
  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  ------------------
              	Z_TYPE_INFO(tmp) = IS_LONG;
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
12287|  3.47k|	for (i = 0; i < zend_handlers_count; i++) {
  ------------------
  |  Branch (122879:14): [True: 3.47k, False: 1]
  ------------------
12288|  3.47k|		Z_LVAL(tmp) = i;
  ------------------
  |  |  975|  3.47k|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
12288|  3.47k|		zend_hash_index_add(zend_handlers_table, (zend_ulong)(uintptr_t)zend_opcode_handlers[i], &tmp);
12288|  3.47k|	}
12288|      1|}
zend_execute.c:zend_vm_get_opcode_handler_idx:
12295|  47.8k|{
12295|  47.8k|	static const int zend_vm_decode[] = {
12295|  47.8k|		_UNUSED_CODE, /* 0 = IS_UNUSED  */
  ------------------
  |  |  115|  47.8k|#define _UNUSED_CODE 3
  ------------------
12295|  47.8k|		_CONST_CODE,  /* 1 = IS_CONST   */
  ------------------
  |  |  112|  47.8k|#define _CONST_CODE  0
  ------------------
12295|  47.8k|		_TMP_CODE,    /* 2 = IS_TMP_VAR */
  ------------------
  |  |  113|  47.8k|#define _TMP_CODE    1
  ------------------
12295|  47.8k|		_UNUSED_CODE, /* 3              */
  ------------------
  |  |  115|  47.8k|#define _UNUSED_CODE 3
  ------------------
12295|  47.8k|		_VAR_CODE,    /* 4 = IS_VAR     */
  ------------------
  |  |  114|  47.8k|#define _VAR_CODE    2
  ------------------
12295|  47.8k|		_UNUSED_CODE, /* 5              */
  ------------------
  |  |  115|  47.8k|#define _UNUSED_CODE 3
  ------------------
12295|  47.8k|		_UNUSED_CODE, /* 6              */
  ------------------
  |  |  115|  47.8k|#define _UNUSED_CODE 3
  ------------------
12296|  47.8k|		_UNUSED_CODE, /* 7              */
  ------------------
  |  |  115|  47.8k|#define _UNUSED_CODE 3
  ------------------
12296|  47.8k|		_CV_CODE      /* 8 = IS_CV      */
  ------------------
  |  |  116|  47.8k|#define _CV_CODE     4
  ------------------
12296|  47.8k|	};
12296|  47.8k|	uint32_t offset = 0;
12296|  47.8k|	if (spec & SPEC_RULE_OP1) offset = offset * 5 + zend_vm_decode[op->op1_type];
  ------------------
  |  |  312|  47.8k|#define SPEC_RULE_OP1          0x00010000
  ------------------
  |  Branch (122964:6): [True: 28.1k, False: 19.6k]
  ------------------
12296|  47.8k|	if (spec & SPEC_RULE_OP2) offset = offset * 5 + zend_vm_decode[op->op2_type];
  ------------------
  |  |  313|  47.8k|#define SPEC_RULE_OP2          0x00020000
  ------------------
  |  Branch (122965:6): [True: 16.2k, False: 31.5k]
  ------------------
12296|  47.8k|	if (spec & SPEC_EXTRA_MASK) {
  ------------------
  |  |  311|  47.8k|#define SPEC_EXTRA_MASK        0xfffc0000
  ------------------
  |  Branch (122966:6): [True: 18.3k, False: 29.5k]
  ------------------
12296|  18.3k|		if (spec & SPEC_RULE_RETVAL) {
  ------------------
  |  |  315|  18.3k|#define SPEC_RULE_RETVAL       0x00080000
  ------------------
  |  Branch (122967:7): [True: 9.70k, False: 8.61k]
  ------------------
12296|  9.70k|			offset = offset * 2 + (op->result_type != IS_UNUSED);
  ------------------
  |  |  863|  9.70k|#define IS_UNUSED	0		/* Unused operand */
  ------------------
12296|  9.70k|			if ((spec & SPEC_RULE_OBSERVER) && ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |  320|  9.70k|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
              			if ((spec & SPEC_RULE_OBSERVER) && ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |   46|  6.69k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  ------------------
  |  |  |  Branch (46:31): [True: 0, False: 6.69k]
  |  |  ------------------
  ------------------
  |  Branch (122969:8): [True: 6.69k, False: 3.01k]
  ------------------
12297|      0|				offset += 2;
12297|      0|			}
12297|  9.70k|		} else if (spec & SPEC_RULE_QUICK_ARG) {
  ------------------
  |  |  316|  8.61k|#define SPEC_RULE_QUICK_ARG    0x00100000
  ------------------
  |  Branch (122972:14): [True: 872, False: 7.74k]
  ------------------
12297|    872|			offset = offset * 2 + (op->op2.num <= MAX_ARG_FLAG_NUM);
  ------------------
  |  | 1173|    872|#define MAX_ARG_FLAG_NUM 12
  ------------------
12297|  7.74k|		} else if (spec & SPEC_RULE_OP_DATA) {
  ------------------
  |  |  314|  7.74k|#define SPEC_RULE_OP_DATA      0x00040000
  ------------------
  |  Branch (122974:14): [True: 514, False: 7.22k]
  ------------------
12297|    514|			offset = offset * 5 + zend_vm_decode[(op + 1)->op1_type];
12297|  7.22k|		} else if (spec & SPEC_RULE_ISSET) {
  ------------------
  |  |  319|  7.22k|#define SPEC_RULE_ISSET        0x01000000
  ------------------
  |  Branch (122976:14): [True: 8, False: 7.21k]
  ------------------
12297|      8|			offset = offset * 2 + (op->extended_value & ZEND_ISEMPTY);
  ------------------
  |  | 1108|      8|#define ZEND_ISEMPTY			(1<<0)
  ------------------
12297|  7.21k|		} else if (spec & SPEC_RULE_SMART_BRANCH) {
  ------------------
  |  |  317|  7.21k|#define SPEC_RULE_SMART_BRANCH 0x00200000
  ------------------
  |  Branch (122978:14): [True: 376, False: 6.84k]
  ------------------
12297|    376|			offset = offset * 3;
12298|    376|			if (op->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR)) {
  ------------------
  |  |  870|    376|#define IS_SMART_BRANCH_JMPZ  (1<<4)
  ------------------
              			if (op->result_type == (IS_SMART_BRANCH_JMPZ|IS_TMP_VAR)) {
  ------------------
  |  |  865|    376|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (122980:8): [True: 56, False: 320]
  ------------------
12298|     56|				offset += 1;
12298|    320|			} else if (op->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR)) {
  ------------------
  |  |  871|    320|#define IS_SMART_BRANCH_JMPNZ (1<<5)
  ------------------
              			} else if (op->result_type == (IS_SMART_BRANCH_JMPNZ|IS_TMP_VAR)) {
  ------------------
  |  |  865|    320|#define IS_TMP_VAR	(1<<1)
  ------------------
  |  Branch (122982:15): [True: 61, False: 259]
  ------------------
12298|     61|				offset += 2;
12298|     61|			}
12298|  6.84k|		} else if (spec & SPEC_RULE_OBSERVER) {
  ------------------
  |  |  320|  6.84k|#define SPEC_RULE_OBSERVER     0x02000000
  ------------------
  |  Branch (122985:14): [True: 6.35k, False: 488]
  ------------------
12298|  6.35k|			offset = offset * 2;
12298|  6.35k|			if (ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |   46|  6.35k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  ------------------
  |  |  |  Branch (46:31): [True: 0, False: 6.35k]
  |  |  ------------------
  ------------------
12298|      0|				offset += 1;
12298|      0|			}
12299|  6.35k|		}
12299|  18.3k|	}
12299|  47.8k|	return (spec & SPEC_START_MASK) + offset;
  ------------------
  |  |  310|  47.8k|#define SPEC_START_MASK        0x0000ffff
  ------------------
12299|  47.8k|}

zend_weakrefs_init:
  204|  33.5k|void zend_weakrefs_init(void) {
  205|  33.5k|	zend_hash_init(&EG(weakrefs), 8, NULL, NULL, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  206|  33.5k|}
zend_weakrefs_notify:
  210|      9|void zend_weakrefs_notify(zend_object *object) {
  211|       |	/* Annoyingly we can't use the HT destructor here, because we need access to the key (which
  212|       |	 * is the object address), which is not provided to the dtor. */
  213|      9|	const zend_ulong obj_key = zend_object_to_weakref_key(object);
  214|      9|	void *tagged_ptr = zend_hash_index_find_ptr(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|      9|# define EG(v) (executor_globals.v)
  ------------------
  215|      9|#if ZEND_DEBUG
  216|      9|	ZEND_ASSERT(tagged_ptr && "Tracking of the IS_OBJ_WEAKLY_REFERENCE flag should be precise");
  ------------------
  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (216:2): [True: 0, False: 9]
  |  Branch (216:2): [True: 0, False: 0]
  |  Branch (216:2): [True: 9, False: 0]
  |  Branch (216:2): [True: 9, False: 0]
  ------------------
  217|      9|#endif
  218|      9|	if (tagged_ptr) {
  ------------------
  |  Branch (218:6): [True: 9, False: 0]
  ------------------
  219|      9|		zend_weakref_unref(object, tagged_ptr);
  220|      9|		zend_hash_index_del(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|      9|# define EG(v) (executor_globals.v)
  ------------------
  221|      9|	}
  222|      9|}
zend_weakrefs_shutdown:
  224|  33.5k|void zend_weakrefs_shutdown(void) {
  225|  33.5k|	zend_hash_destroy(&EG(weakrefs));
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
  226|  33.5k|}
zim_WeakReference___construct:
  312|      3|{
  313|       |	zend_throw_error(NULL, "Direct instantiation of WeakReference is not allowed, use WeakReference::create instead");
  314|      3|}
zim_WeakReference_create:
  317|      5|{
  318|      5|	zend_object *referent;
  319|       |
  320|     15|	ZEND_PARSE_PARAMETERS_START(1,1)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  321|     20|		Z_PARAM_OBJ(referent)
  ------------------
  |  | 1964|      5|	Z_PARAM_OBJ_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1956|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1957|      5|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1958|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1958:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1959|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1960|      0|			break; \
  |  |  |  | 1961|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (321:3): [True: 5, False: 0]
  |  Branch (321:3): [True: 0, False: 0]
  |  Branch (321:3): [True: 5, False: 0]
  |  Branch (321:3): [True: 0, False: 0]
  |  Branch (321:3): [True: 5, False: 0]
  |  Branch (321:3): [True: 0, False: 0]
  |  Branch (321:3): [True: 0, False: 5]
  |  Branch (321:3): [True: 5, False: 0]
  |  Branch (321:3): [True: 0, False: 0]
  |  Branch (321:3): [True: 0, False: 0]
  ------------------
  322|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      5|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (322:2): [True: 5, False: 0]
  |  Branch (322:2): [True: 0, False: 0]
  |  Branch (322:2): [True: 5, False: 0]
  |  Branch (322:2): [True: 0, False: 0]
  ------------------
  323|       |
  324|      5|	if (zend_weakref_find(referent, return_value)) {
  ------------------
  |  Branch (324:6): [True: 1, False: 4]
  ------------------
  325|      1|	    return;
  326|      1|	}
  327|       |
  328|      4|	zend_weakref_create(referent, return_value);
  329|      4|}
zend_weakmap_get_gc:
  503|      2|{
  504|      2|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|      2|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
  505|      2|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  506|      2|	zval *val;
  507|     12|	ZEND_HASH_MAP_FOREACH_VAL(&wm->ht, val) {
  ------------------
  |  | 1325|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      6|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|      4|	_val = _z;
  ------------------
  |  Branch (507:2): [True: 0, False: 2]
  |  Branch (507:2): [True: 2, False: 0]
  ------------------
  508|     12|		zend_get_gc_buffer_add_zval(gc_buffer, val);
  509|     12|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      4|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  510|      2|	zend_get_gc_buffer_use(gc_buffer, table, n);
  511|       |	return NULL;
  512|      2|}
zend_weakmap_get_key_entry_gc:
  515|      5|{
  516|      5|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|      5|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|      5|	_Generic( \
  |  |  |  |  408|      5|		(ptr), \
  |  |  |  |  409|      5|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      5|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      5|	)
  |  |  ------------------
  ------------------
  517|      5|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  518|      5|	zend_ulong h;
  519|      5|	zval *val;
  520|     22|	ZEND_HASH_MAP_FOREACH_NUM_KEY_VAL(&wm->ht, h, val) {
  ------------------
  |  | 1379|      6|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      5|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      5|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      5|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      5|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      5|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     11|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 6, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      6|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      6|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      6|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 6]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      6|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1380|      6|	_h = _p->h; \
  |  | 1381|      6|	_val = _z;
  ------------------
  |  Branch (520:2): [True: 0, False: 5]
  |  Branch (520:2): [True: 5, False: 0]
  ------------------
  521|     22|		zend_object *key = zend_weakref_key_to_object(h);
  522|     22|		zend_get_gc_buffer_add_obj(gc_buffer, key);
  523|     22|		zend_get_gc_buffer_add_ptr(gc_buffer, val);
  524|     22|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      6|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  525|      5|	zend_get_gc_buffer_use(gc_buffer, table, n);
  526|       |	return NULL;
  527|      5|}
zend_weakmap_get_entry_gc:
  530|      9|{
  531|      9|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|      9|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|      9|	_Generic( \
  |  |  |  |  408|      9|		(ptr), \
  |  |  |  |  409|      9|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      9|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      9|	)
  |  |  ------------------
  ------------------
  532|      9|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  533|      9|	zval *val;
  534|     46|	ZEND_HASH_MAP_FOREACH_VAL(&wm->ht, val) {
  ------------------
  |  | 1325|     14|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      9|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      9|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      9|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      9|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      9|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      9|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     23|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 14, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     14|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     14|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     14|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 14]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     14|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|     14|	_val = _z;
  ------------------
  |  Branch (534:2): [True: 0, False: 9]
  |  Branch (534:2): [True: 9, False: 0]
  ------------------
  535|     46|		zend_get_gc_buffer_add_ptr(gc_buffer, val);
  536|     46|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     14|		} \
  |  | 1102|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
  537|      9|	zend_get_gc_buffer_use(gc_buffer, table, n);
  538|       |	return NULL;
  539|      9|}
zend_weakmap_get_object_key_entry_gc:
  542|     13|{
  543|     13|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  544|     13|	const zend_ulong obj_key = zend_object_to_weakref_key(object);
  545|     13|	void *tagged_ptr = zend_hash_index_find_ptr(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|     13|# define EG(v) (executor_globals.v)
  ------------------
  546|     13|#if ZEND_DEBUG
  547|     13|	ZEND_ASSERT(tagged_ptr && "Tracking of the IS_OBJ_WEAKLY_REFERENCE flag should be precise");
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (547:2): [True: 0, False: 13]
  |  Branch (547:2): [True: 0, False: 0]
  |  Branch (547:2): [True: 13, False: 0]
  |  Branch (547:2): [True: 13, False: 0]
  ------------------
  548|     13|#endif
  549|     13|	void *ptr = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|     13|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  550|     13|	uintptr_t tag = ZEND_WEAKREF_GET_TAG(tagged_ptr);
  ------------------
  |  |   52|     13|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
  551|       |
  552|     13|	if (tag == ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   50|     13|#define ZEND_WEAKREF_TAG_HT      2
  ------------------
  |  Branch (552:6): [True: 0, False: 13]
  ------------------
  553|      0|		HashTable *ht = ptr;
  554|      0|		ZEND_HASH_MAP_FOREACH_PTR(ht, tagged_ptr) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (554:3): [True: 0, False: 0]
  |  Branch (554:3): [True: 0, False: 0]
  ------------------
  555|      0|			if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_MAP) {
  ------------------
  |  |   52|      0|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
              			if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_MAP) {
  ------------------
  |  |   49|      0|#define ZEND_WEAKREF_TAG_MAP     1
  ------------------
  |  Branch (555:8): [True: 0, False: 0]
  ------------------
  556|      0|				zend_weakmap *wm = (zend_weakmap*) ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      0|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  557|      0|				zval *zv = zend_hash_index_find(&wm->ht, obj_key);
  558|      0|				ZEND_ASSERT(zv);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (558:5): [True: 0, False: 0]
  |  Branch (558:5): [True: 0, False: 0]
  ------------------
  559|      0|				zend_get_gc_buffer_add_ptr(gc_buffer, zv);
  560|      0|				zend_get_gc_buffer_add_obj(gc_buffer, &wm->std);
  561|      0|			} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
  ------------------
  |  |   52|      0|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
              			} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
  ------------------
  |  |   51|      0|#define ZEND_WEAKREF_TAG_BARE_HT 3
  ------------------
  |  Branch (561:15): [True: 0, False: 0]
  ------------------
  562|       |				/* Bare HashTables are intentionally ignored, since they are
  563|       |				 * intended for internal usage by extensions and might not be
  564|       |				 * collectable. */
  565|      0|			}
  566|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  567|     13|	} else if (tag == ZEND_WEAKREF_TAG_MAP) {
  ------------------
  |  |   49|     13|#define ZEND_WEAKREF_TAG_MAP     1
  ------------------
  |  Branch (567:13): [True: 13, False: 0]
  ------------------
  568|     13|		zend_weakmap *wm = (zend_weakmap*) ptr;
  569|     13|		zval *zv = zend_hash_index_find(&wm->ht, obj_key);
  570|     13|		ZEND_ASSERT(zv);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (570:3): [True: 0, False: 13]
  |  Branch (570:3): [True: 13, False: 0]
  ------------------
  571|     13|		zend_get_gc_buffer_add_ptr(gc_buffer, zv);
  572|     13|		zend_get_gc_buffer_add_obj(gc_buffer, &wm->std);
  573|     13|	} else if (tag == ZEND_WEAKREF_TAG_BARE_HT) {
  ------------------
  |  |   51|      0|#define ZEND_WEAKREF_TAG_BARE_HT 3
  ------------------
  |  Branch (573:13): [True: 0, False: 0]
  ------------------
  574|       |		/* Bare HashTables are intentionally ignored (see above) */
  575|      0|	}
  576|       |
  577|     13|	zend_get_gc_buffer_use(gc_buffer, table, n);
  578|       |
  579|       |	return NULL;
  580|     13|}
zend_weakmap_get_object_entry_gc:
  583|     10|{
  584|     10|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
  585|     10|	const zend_ulong obj_key = zend_object_to_weakref_key(object);
  586|     10|	void *tagged_ptr = zend_hash_index_find_ptr(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|     10|# define EG(v) (executor_globals.v)
  ------------------
  587|     10|#if ZEND_DEBUG
  588|     10|	ZEND_ASSERT(tagged_ptr && "Tracking of the IS_OBJ_WEAKLY_REFERENCE flag should be precise");
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (588:2): [True: 0, False: 10]
  |  Branch (588:2): [True: 0, False: 0]
  |  Branch (588:2): [True: 10, False: 0]
  |  Branch (588:2): [True: 10, False: 0]
  ------------------
  589|     10|#endif
  590|     10|	void *ptr = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|     10|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  591|     10|	uintptr_t tag = ZEND_WEAKREF_GET_TAG(tagged_ptr);
  ------------------
  |  |   52|     10|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
  592|       |
  593|     10|	if (tag == ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   50|     10|#define ZEND_WEAKREF_TAG_HT      2
  ------------------
  |  Branch (593:6): [True: 0, False: 10]
  ------------------
  594|      0|		HashTable *ht = ptr;
  595|      0|		ZEND_HASH_MAP_FOREACH_PTR(ht, tagged_ptr) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (595:3): [True: 0, False: 0]
  |  Branch (595:3): [True: 0, False: 0]
  ------------------
  596|      0|			if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_MAP) {
  ------------------
  |  |   52|      0|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
              			if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_MAP) {
  ------------------
  |  |   49|      0|#define ZEND_WEAKREF_TAG_MAP     1
  ------------------
  |  Branch (596:8): [True: 0, False: 0]
  ------------------
  597|      0|				zend_weakmap *wm = (zend_weakmap*) ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      0|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  598|      0|				zval *zv = zend_hash_index_find(&wm->ht, obj_key);
  599|      0|				ZEND_ASSERT(zv);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (599:5): [True: 0, False: 0]
  |  Branch (599:5): [True: 0, False: 0]
  ------------------
  600|      0|				zend_get_gc_buffer_add_ptr(gc_buffer, zv);
  601|      0|			} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
  ------------------
  |  |   52|      0|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
              			} else if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_BARE_HT) {
  ------------------
  |  |   51|      0|#define ZEND_WEAKREF_TAG_BARE_HT 3
  ------------------
  |  Branch (601:15): [True: 0, False: 0]
  ------------------
  602|       |				/* Bare HashTables are intentionally ignored
  603|       |				 * (see zend_weakmap_get_object_key_entry_gc) */
  604|      0|			}
  605|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  606|     10|	} else if (tag == ZEND_WEAKREF_TAG_MAP) {
  ------------------
  |  |   49|     10|#define ZEND_WEAKREF_TAG_MAP     1
  ------------------
  |  Branch (606:13): [True: 10, False: 0]
  ------------------
  607|     10|		zend_weakmap *wm = (zend_weakmap*) ptr;
  608|     10|		zval *zv = zend_hash_index_find(&wm->ht, obj_key);
  609|     10|		ZEND_ASSERT(zv);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (609:3): [True: 0, False: 10]
  |  Branch (609:3): [True: 10, False: 0]
  ------------------
  610|     10|		zend_get_gc_buffer_add_ptr(gc_buffer, zv);
  611|     10|	} else if (tag == ZEND_WEAKREF_TAG_BARE_HT) {
  ------------------
  |  |   51|      0|#define ZEND_WEAKREF_TAG_BARE_HT 3
  ------------------
  |  Branch (611:13): [True: 0, False: 0]
  ------------------
  612|       |		/* Bare HashTables are intentionally ignored
  613|       |		 * (see zend_weakmap_get_object_key_entry_gc) */
  614|      0|	}
  615|       |
  616|     10|	zend_get_gc_buffer_use(gc_buffer, table, n);
  617|       |
  618|       |	return NULL;
  619|     10|}
zim_WeakMap_offsetGet:
  727|      1|{
  728|      1|	zval *key;
  729|       |
  730|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &key) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (730:6): [True: 0, False: 1]
  ------------------
  731|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (731:3): [True: 0, False: 0]
  |  Branch (731:3): [True: 0, False: 0]
  ------------------
  732|      0|	}
  733|       |
  734|      1|	zval *zv = zend_weakmap_read_dimension(Z_OBJ_P(ZEND_THIS), key, BP_VAR_R, NULL);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	zval *zv = zend_weakmap_read_dimension(Z_OBJ_P(ZEND_THIS), key, BP_VAR_R, NULL);
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
  735|      1|	if (!zv) {
  ------------------
  |  Branch (735:6): [True: 0, False: 1]
  ------------------
  736|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (736:3): [True: 0, False: 0]
  |  Branch (736:3): [True: 0, False: 0]
  ------------------
  737|      0|	}
  738|       |
  739|      1|	RETURN_COPY_DEREF(zv);
  ------------------
  |  | 1067|      1|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      1|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      1|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      1|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      1|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      1|		}												\
  |  |  |  |  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  740|      1|}
zend_register_weakref_ce:
  792|      2|{
  793|      2|	zend_ce_weakref = register_class_WeakReference();
  794|       |
  795|      2|	zend_ce_weakref->create_object = zend_weakref_new;
  796|      2|	zend_ce_weakref->default_object_handlers = &zend_weakref_handlers;
  797|       |
  798|      2|	memcpy(&zend_weakref_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  799|      2|	zend_weakref_handlers.offset = offsetof(zend_weakref, std);
  800|       |
  801|      2|	zend_weakref_handlers.free_obj = zend_weakref_free;
  802|      2|	zend_weakref_handlers.get_debug_info = zend_weakref_get_debug_info;
  803|      2|	zend_weakref_handlers.clone_obj = NULL;
  804|       |
  805|      2|	zend_ce_weakmap = register_class_WeakMap(zend_ce_arrayaccess, zend_ce_countable, zend_ce_aggregate);
  806|       |
  807|      2|	zend_ce_weakmap->create_object = zend_weakmap_create_object;
  808|      2|	zend_ce_weakmap->get_iterator = zend_weakmap_get_iterator;
  809|      2|	zend_ce_weakmap->default_object_handlers = &zend_weakmap_handlers;
  810|       |
  811|      2|	memcpy(&zend_weakmap_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  812|       |	zend_weakmap_handlers.offset = offsetof(zend_weakmap, std);
  813|      2|	zend_weakmap_handlers.free_obj = zend_weakmap_free_obj;
  814|      2|	zend_weakmap_handlers.read_dimension = zend_weakmap_read_dimension;
  815|      2|	zend_weakmap_handlers.write_dimension = zend_weakmap_write_dimension;
  816|      2|	zend_weakmap_handlers.has_dimension = zend_weakmap_has_dimension;
  817|      2|	zend_weakmap_handlers.unset_dimension = zend_weakmap_unset_dimension;
  818|      2|	zend_weakmap_handlers.count_elements = zend_weakmap_count_elements;
  819|      2|	zend_weakmap_handlers.get_properties_for = zend_weakmap_get_properties_for;
  820|      2|	zend_weakmap_handlers.get_gc = zend_weakmap_get_gc;
  821|      2|	zend_weakmap_handlers.clone_obj = zend_weakmap_clone_obj;
  822|      2|}
zend_weakrefs.c:zend_weakref_register:
   97|     18|static void zend_weakref_register(zend_object *object, void *payload) {
   98|     18|	GC_ADD_FLAGS(object, IS_OBJ_WEAKLY_REFERENCED);
  ------------------
  |  |  780|     18|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|     18|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|     18|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|     18|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
   99|       |
  100|     18|	zend_ulong obj_key = zend_object_to_weakref_key(object);
  101|     18|	zval *zv = zend_hash_index_lookup(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|     18|# define EG(v) (executor_globals.v)
  ------------------
  102|     18|	if (Z_TYPE_P(zv) == IS_NULL) {
  ------------------
  |  |  669|     18|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     18|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_NULL) {
  ------------------
  |  |  607|     18|#define IS_NULL						1
  ------------------
  |  Branch (102:6): [True: 16, False: 2]
  ------------------
  103|     16|		ZVAL_PTR(zv, payload);
  ------------------
  |  | 1251|     16|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|     16|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|     16|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|     16|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|     16|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     16|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|     16|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  104|     16|		return;
  105|     16|	}
  106|       |
  107|      2|	void *tagged_ptr = Z_PTR_P(zv);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  108|      2|	if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   52|      2|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
              	if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   50|      2|#define ZEND_WEAKREF_TAG_HT      2
  ------------------
  |  Branch (108:6): [True: 0, False: 2]
  ------------------
  109|      0|		HashTable *ht = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      0|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  110|      0|		zend_hash_index_add_new_ptr(ht, (zend_ulong)(uintptr_t) payload, payload);
  111|      0|		return;
  112|      0|	}
  113|       |
  114|       |	/* Convert simple pointer to hashtable. */
  115|      2|	HashTable *ht = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|      2|	zend_hash_init(ht, 0, NULL, NULL, 0);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  117|      2|	zend_hash_index_add_new_ptr(ht, (zend_ulong)(uintptr_t) tagged_ptr, tagged_ptr);
  118|      2|	zend_hash_index_add_new_ptr(ht, (zend_ulong)(uintptr_t) payload, payload);
  119|       |	/* Replace the single WeakMap or WeakReference entry in EG(weakrefs) with a HashTable with 2 entries in place. */
  120|      2|	ZVAL_PTR(zv, ZEND_WEAKREF_ENCODE(ht, ZEND_WEAKREF_TAG_HT));
  ------------------
  |  | 1251|      2|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      2|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      2|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      2|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  121|      2|}
zend_weakrefs.c:zend_weakref_unregister:
  123|      8|static void zend_weakref_unregister(zend_object *object, void *payload, bool weakref_free) {
  124|      8|	zend_ulong obj_key = zend_object_to_weakref_key(object);
  125|      8|	void *tagged_ptr = zend_hash_index_find_ptr(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  ------------------
  126|      8|	ZEND_ASSERT(tagged_ptr && "Weakref not registered?");
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (126:2): [True: 0, False: 8]
  |  Branch (126:2): [True: 0, False: 0]
  |  Branch (126:2): [True: 8, False: 0]
  |  Branch (126:2): [True: 8, False: 0]
  ------------------
  127|       |
  128|      8|	void *ptr = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      8|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  129|      8|	uintptr_t tag = ZEND_WEAKREF_GET_TAG(tagged_ptr);
  ------------------
  |  |   52|      8|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
  130|      8|	if (tag != ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   50|      8|#define ZEND_WEAKREF_TAG_HT      2
  ------------------
  |  Branch (130:6): [True: 7, False: 1]
  ------------------
  131|      7|		ZEND_ASSERT(tagged_ptr == payload);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (131:3): [True: 0, False: 7]
  |  Branch (131:3): [True: 7, False: 0]
  ------------------
  132|      7|		zend_hash_index_del(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
  133|      7|		GC_DEL_FLAGS(object, IS_OBJ_WEAKLY_REFERENCED);
  ------------------
  |  |  783|      7|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|      7|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  134|       |
  135|       |		/* Do this last, as it may destroy the object. */
  136|      7|		if (weakref_free) {
  ------------------
  |  Branch (136:7): [True: 0, False: 7]
  ------------------
  137|      0|			zend_weakref_unref_single(ptr, tag, object);
  138|      7|		} else {
  139|       |			/* The optimization of skipping unref is used for zend_weakrefs_hash_clean_ex() */
  140|      7|			ZEND_ASSERT(ZEND_WEAKREF_GET_TAG(payload) == ZEND_WEAKREF_TAG_MAP || ZEND_WEAKREF_GET_TAG(payload) == ZEND_WEAKREF_TAG_BARE_HT);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (140:4): [True: 7, False: 0]
  |  Branch (140:4): [True: 0, False: 0]
  |  Branch (140:4): [True: 7, False: 0]
  |  Branch (140:4): [True: 0, False: 0]
  ------------------
  141|      7|		}
  142|      7|		return;
  143|      7|	}
  144|       |
  145|      1|	HashTable *ht = ptr;
  146|      1|#if ZEND_DEBUG
  147|      1|	void *old_payload = zend_hash_index_find_ptr(ht, (zend_ulong)(uintptr_t) payload);
  148|      1|	ZEND_ASSERT(old_payload && "Weakref not registered?");
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (148:2): [True: 0, False: 1]
  |  Branch (148:2): [True: 0, False: 0]
  |  Branch (148:2): [True: 1, False: 0]
  |  Branch (148:2): [True: 1, False: 0]
  ------------------
  149|      1|	ZEND_ASSERT(old_payload == payload);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (149:2): [True: 0, False: 1]
  |  Branch (149:2): [True: 1, False: 0]
  ------------------
  150|      1|#endif
  151|      1|	zend_hash_index_del(ht, (zend_ulong)(uintptr_t) payload);
  152|      1|	if (zend_hash_num_elements(ht) == 0) {
  ------------------
  |  Branch (152:6): [True: 0, False: 1]
  ------------------
  153|      0|		GC_DEL_FLAGS(object, IS_OBJ_WEAKLY_REFERENCED);
  ------------------
  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  785|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  154|      0|		zend_hash_destroy(ht);
  155|      0|		FREE_HASHTABLE(ht);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|      0|		zend_hash_index_del(&EG(weakrefs), obj_key);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  157|      0|	}
  158|       |
  159|       |	/* Do this last, as it may destroy the object. */
  160|      1|	if (weakref_free)  {
  ------------------
  |  Branch (160:6): [True: 0, False: 1]
  ------------------
  161|      0|		zend_weakref_unref_single(
  162|      0|			ZEND_WEAKREF_GET_PTR(payload), ZEND_WEAKREF_GET_TAG(payload), object);
  ------------------
  |  |   53|      0|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
              			ZEND_WEAKREF_GET_PTR(payload), ZEND_WEAKREF_GET_TAG(payload), object);
  ------------------
  |  |   52|      0|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
  163|      1|	} else {
  164|       |		/* The optimization of skipping unref is used for zend_weakrefs_hash_clean_ex() */
  165|       |		ZEND_ASSERT(ZEND_WEAKREF_GET_TAG(payload) == ZEND_WEAKREF_TAG_MAP || ZEND_WEAKREF_GET_TAG(payload) == ZEND_WEAKREF_TAG_BARE_HT);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (165:3): [True: 1, False: 0]
  |  Branch (165:3): [True: 0, False: 0]
  |  Branch (165:3): [True: 1, False: 0]
  |  Branch (165:3): [True: 0, False: 0]
  ------------------
  166|      1|	}
  167|      1|}
zend_weakrefs.c:zend_weakref_unref_single:
   69|     10|{
   70|     10|	if (tag == ZEND_WEAKREF_TAG_REF) {
  ------------------
  |  |   48|     10|#define ZEND_WEAKREF_TAG_REF     0
  ------------------
  |  Branch (70:6): [True: 4, False: 6]
  ------------------
   71|       |		/* Unreferencing WeakReference (at ptr) singleton that pointed to object. */
   72|      4|		zend_weakref *wr = ptr;
   73|      4|		wr->referent = NULL;
   74|      6|	} else {
   75|       |		/* unreferencing WeakMap or bare HashTable entry (at ptr) with a key of object. */
   76|      6|		ZEND_ASSERT(tag == ZEND_WEAKREF_TAG_MAP || tag == ZEND_WEAKREF_TAG_BARE_HT);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (76:3): [True: 6, False: 0]
  |  Branch (76:3): [True: 0, False: 0]
  |  Branch (76:3): [True: 6, False: 0]
  |  Branch (76:3): [True: 0, False: 0]
  ------------------
   77|      6|		zend_hash_index_del((HashTable *) ptr, zend_object_to_weakref_key(object));
   78|      6|	}
   79|     10|}
zend_weakrefs.c:zend_weakrefs_hash_clean_ex:
  188|     18|static void zend_weakrefs_hash_clean_ex(HashTable *ht, int type) {
  189|     18|	zend_ulong obj_key;
  190|     52|	ZEND_HASH_MAP_FOREACH_NUM_KEY(ht, obj_key) {
  ------------------
  |  | 1353|      8|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|     18|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|     18|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|     18|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|     18|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|     18|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|     18|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     26|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 8, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      8|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      8|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      8|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 8]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1354|      8|	_h = _p->h;
  ------------------
  |  Branch (190:2): [True: 0, False: 18]
  |  Branch (190:2): [True: 18, False: 0]
  ------------------
  191|       |		/* Optimization: Don't call zend_weakref_unref_single to free individual entries from ht when unregistering (which would do a hash table lookup, call zend_hash_index_del, and skip over any bucket collisions).
  192|       |		 * Let freeing the corresponding values for WeakMap entries be done in zend_hash_clean, freeing objects sequentially.
  193|       |		 * The performance difference is notable for larger WeakMaps with worse cache locality. */
  194|     52|		zend_weakref_unregister(
  195|     52|			zend_weakref_key_to_object(obj_key), ZEND_WEAKREF_ENCODE(ht, type), false);
  ------------------
  |  |   54|      8|#define ZEND_WEAKREF_ENCODE(p, t) ((void *) (((uintptr_t) (p)) | (t)))
  ------------------
  196|     52|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
  197|     18|	zend_hash_clean(ht);
  198|     18|}
zend_weakrefs.c:zend_weakref_unref:
   81|      9|static void zend_weakref_unref(zend_object *object, void *tagged_ptr) {
   82|      9|	void *ptr = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      9|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
   83|      9|	uintptr_t tag = ZEND_WEAKREF_GET_TAG(tagged_ptr);
  ------------------
  |  |   52|      9|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
   84|      9|	if (tag == ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   50|      9|#define ZEND_WEAKREF_TAG_HT      2
  ------------------
  |  Branch (84:6): [True: 2, False: 7]
  ------------------
   85|      2|		HashTable *ht = ptr;
   86|     11|		ZEND_HASH_MAP_FOREACH_PTR(ht, tagged_ptr) {
  ------------------
  |  | 1341|      4|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      6|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      4|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      4|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      4|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      3|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (86:3): [True: 0, False: 2]
  |  Branch (86:3): [True: 2, False: 0]
  ------------------
   87|     11|			zend_weakref_unref_single(
   88|     11|				ZEND_WEAKREF_GET_PTR(tagged_ptr), ZEND_WEAKREF_GET_TAG(tagged_ptr), object);
  ------------------
  |  |   53|      3|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
              				ZEND_WEAKREF_GET_PTR(tagged_ptr), ZEND_WEAKREF_GET_TAG(tagged_ptr), object);
  ------------------
  |  |   52|      3|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
   89|     11|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   90|      2|		zend_hash_destroy(ht);
   91|      2|		FREE_HASHTABLE(ht);
  ------------------
  |  |  235|      2|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      2|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|      7|	} else {
   93|      7|		zend_weakref_unref_single(ptr, tag, object);
   94|      7|	}
   95|      9|}
zend_weakrefs.c:zend_weakref_find:
  235|      5|static zend_always_inline bool zend_weakref_find(zend_object *referent, zval *return_value) {
  236|      5|	void *tagged_ptr = zend_hash_index_find_ptr(&EG(weakrefs), zend_object_to_weakref_key(referent));
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  ------------------
  237|      5|	if (!tagged_ptr) {
  ------------------
  |  Branch (237:6): [True: 4, False: 1]
  ------------------
  238|      4|		return false;
  239|      4|	}
  240|       |
  241|      1|	void *ptr = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      1|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  242|      1|	uintptr_t tag = ZEND_WEAKREF_GET_TAG(tagged_ptr);
  ------------------
  |  |   52|      1|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
  243|      1|	if (tag == ZEND_WEAKREF_TAG_REF) {
  ------------------
  |  |   48|      1|#define ZEND_WEAKREF_TAG_REF     0
  ------------------
  |  Branch (243:6): [True: 1, False: 0]
  ------------------
  244|      1|		zend_weakref *wr;
  245|      1|found_weakref:
  246|      1|		wr = ptr;
  247|      1|		RETVAL_OBJ_COPY(&wr->std);
  ------------------
  |  | 1038|      1|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  ------------------
  |  |  |  | 1146|      1|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  | 1147|      1|		zval *__z = (z);						\
  |  |  |  | 1148|      1|		zend_object *__o = (o);					\
  |  |  |  | 1149|      1|		GC_ADDREF(__o);							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1150|      1|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1151|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1152|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1152:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|      1|		return true;
  249|      1|	}
  250|       |
  251|      0|	if (tag == ZEND_WEAKREF_TAG_HT) {
  ------------------
  |  |   50|      0|#define ZEND_WEAKREF_TAG_HT      2
  ------------------
  |  Branch (251:6): [True: 0, False: 0]
  ------------------
  252|      0|		ZEND_HASH_MAP_FOREACH_PTR(ptr, tagged_ptr) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (252:3): [True: 0, False: 0]
  |  Branch (252:3): [True: 0, False: 0]
  ------------------
  253|      0|			if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_REF) {
  ------------------
  |  |   52|      0|#define ZEND_WEAKREF_GET_TAG(p) (((uintptr_t) (p)) & 3)
  ------------------
              			if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_REF) {
  ------------------
  |  |   48|      0|#define ZEND_WEAKREF_TAG_REF     0
  ------------------
  |  Branch (253:8): [True: 0, False: 0]
  ------------------
  254|      0|				ptr = ZEND_WEAKREF_GET_PTR(tagged_ptr);
  ------------------
  |  |   53|      0|#define ZEND_WEAKREF_GET_PTR(p) ((void *) (((uintptr_t) (p)) & ~3))
  ------------------
  255|      0|				goto found_weakref;
  256|      0|			}
  257|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  258|      0|	}
  259|       |
  260|      0|	return false;
  261|      0|}
zend_weakrefs.c:zend_weakref_create:
  263|      4|static zend_always_inline void zend_weakref_create(zend_object *referent, zval *return_value) {
  264|      4|	zend_weakref *wr;
  265|       |
  266|      4|	object_init_ex(return_value, zend_ce_weakref);
  267|       |
  268|      4|	wr = zend_weakref_fetch(return_value);
  ------------------
  |  |   62|      4|#define zend_weakref_fetch(z) zend_weakref_from(Z_OBJ_P(z))
  |  |  ------------------
  |  |  |  |   61|      4|#define zend_weakref_from(o) (ZEND_CONTAINER_OF(o, zend_weakref, std))
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|      4|	wr->referent = referent;
  270|       |
  271|      4|	zend_weakref_register(wr->referent, ZEND_WEAKREF_ENCODE(wr, ZEND_WEAKREF_TAG_REF));
  ------------------
  |  |   54|      4|#define ZEND_WEAKREF_ENCODE(p, t) ((void *) (((uintptr_t) (p)) | (t)))
  ------------------
  272|      4|}
zend_weakrefs.c:zend_weakmap_read_dimension:
  356|      7|{
  357|      7|	if (offset == NULL) {
  ------------------
  |  Branch (357:6): [True: 0, False: 7]
  ------------------
  358|      0|		zend_throw_error(NULL, "Cannot append to WeakMap");
  359|      0|		return NULL;
  360|      0|	}
  361|       |
  362|      7|	ZVAL_DEREF(offset);
  ------------------
  |  | 1474|      7|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      7|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  363|      7|	if (Z_TYPE_P(offset) != IS_OBJECT) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(offset) != IS_OBJECT) {
  ------------------
  |  |  614|      7|#define IS_OBJECT					8
  ------------------
  |  Branch (363:6): [True: 0, False: 7]
  ------------------
  364|      0|		zend_type_error("WeakMap key must be an object");
  365|      0|		return NULL;
  366|      0|	}
  367|       |
  368|      7|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|      7|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      7|	)
  |  |  ------------------
  ------------------
  369|      7|	zend_object *obj_addr = Z_OBJ_P(offset);
  ------------------
  |  | 1000|      7|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      7|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  370|      7|	zval *zv = zend_hash_index_find(&wm->ht, zend_object_to_weakref_key(obj_addr));
  371|      7|	if (type == BP_VAR_W || type == BP_VAR_RW) {
  ------------------
  |  | 1075|     14|#define BP_VAR_W			1
  ------------------
              	if (type == BP_VAR_W || type == BP_VAR_RW) {
  ------------------
  |  | 1076|      5|#define BP_VAR_RW			2
  ------------------
  |  Branch (371:6): [True: 2, False: 5]
  |  Branch (371:26): [True: 0, False: 5]
  ------------------
  372|      2|		if (zv == NULL) {
  ------------------
  |  Branch (372:7): [True: 1, False: 1]
  ------------------
  373|      1|			zval value;
  374|      1|			zend_weakref_register(obj_addr, ZEND_WEAKREF_ENCODE(&wm->ht, ZEND_WEAKREF_TAG_MAP));
  ------------------
  |  |   54|      1|#define ZEND_WEAKREF_ENCODE(p, t) ((void *) (((uintptr_t) (p)) | (t)))
  ------------------
  375|      1|			ZVAL_NULL(&value);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  376|      1|			zv = zend_hash_index_add_new(&wm->ht, zend_object_to_weakref_key(obj_addr), &value);
  377|      1|		}
  378|      2|		ZVAL_MAKE_REF(zv);
  ------------------
  |  | 1492|      2|#define ZVAL_MAKE_REF(zv) do {							\
  |  | 1493|      2|		zval *__zv = (zv);								\
  |  | 1494|      2|		if (!Z_ISREF_P(__zv)) {							\
  |  |  ------------------
  |  |  |  |  964|      2|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1494:7): [True: 2, False: 0]
  |  |  ------------------
  |  | 1495|      2|			ZVAL_NEW_REF(__zv, __zv);					\
  |  |  ------------------
  |  |  |  | 1205|      2|#define ZVAL_NEW_REF(z, r) do {									\
  |  |  |  | 1206|      2|		zend_reference *_ref =									\
  |  |  |  | 1207|      2|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1208|      2|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      2|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  | 1209|      2|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  810|      2|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      2|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      2|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      2|	do {												\
  |  |  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1211|      2|		_ref->sources.ptr = NULL;									\
  |  |  |  | 1212|      2|		Z_REF_P(z) = _ref;										\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      2|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1213|      2|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  832|      2|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      2|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1214|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1214:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1496|      2|		}												\
  |  | 1497|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1497:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  379|      5|	} else {
  380|      5|		if (zv == NULL) {
  ------------------
  |  Branch (380:7): [True: 0, False: 5]
  ------------------
  381|      0|			if (type != BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (381:8): [True: 0, False: 0]
  ------------------
  382|      0|				zend_throw_error(NULL,
  383|      0|					"Object %s#%d not contained in WeakMap", ZSTR_VAL(obj_addr->ce->name), obj_addr->handle);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  384|      0|				return NULL;
  385|      0|			}
  386|      0|			return NULL;
  387|      0|		}
  388|      5|	}
  389|       |
  390|      7|	return zv;
  391|      7|}
zend_weakrefs.c:zend_weakmap_write_dimension:
  394|     14|{
  395|     14|	if (offset == NULL) {
  ------------------
  |  Branch (395:6): [True: 0, False: 14]
  ------------------
  396|      0|		zend_throw_error(NULL, "Cannot append to WeakMap");
  397|      0|		return;
  398|      0|	}
  399|       |
  400|     14|	ZVAL_DEREF(offset);
  ------------------
  |  | 1474|     14|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     14|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
  401|     14|	if (Z_TYPE_P(offset) != IS_OBJECT) {
  ------------------
  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(offset) != IS_OBJECT) {
  ------------------
  |  |  614|     14|#define IS_OBJECT					8
  ------------------
  |  Branch (401:6): [True: 1, False: 13]
  ------------------
  402|      1|		zend_type_error("WeakMap key must be an object");
  403|      1|		return;
  404|      1|	}
  405|       |
  406|     13|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|     13|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|     13|	_Generic( \
  |  |  |  |  408|     13|		(ptr), \
  |  |  |  |  409|     13|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     13|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     13|	)
  |  |  ------------------
  ------------------
  407|     13|	zend_object *obj_addr = Z_OBJ_P(offset);
  ------------------
  |  | 1000|     13|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  408|     13|	zend_ulong obj_key = zend_object_to_weakref_key(obj_addr);
  409|     13|	Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|     13|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|     13|	zval *_pz = (pz);				\
  |  | 1287|     13|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|     13|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|     13|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|     13|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 10, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|     10|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|     10|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|     10|	}								\
  |  | 1290|     13|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 13]
  |  |  ------------------
  ------------------
  410|       |
  411|     13|	zval *zv = zend_hash_index_find(&wm->ht, obj_key);
  412|     13|	if (zv) {
  ------------------
  |  Branch (412:6): [True: 0, False: 13]
  ------------------
  413|       |		/* Because the destructors can have side effects such as resizing or rehashing the WeakMap storage,
  414|       |		 * free the zval only after overwriting the original value. */
  415|      0|		zval zv_orig;
  416|      0|		ZVAL_COPY_VALUE(&zv_orig, zv);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  417|      0|		ZVAL_COPY_VALUE(zv, value);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  418|      0|		zval_ptr_dtor(&zv_orig);
  419|      0|		return;
  420|      0|	}
  421|       |
  422|     13|	zend_weakref_register(obj_addr, ZEND_WEAKREF_ENCODE(&wm->ht, ZEND_WEAKREF_TAG_MAP));
  ------------------
  |  |   54|     13|#define ZEND_WEAKREF_ENCODE(p, t) ((void *) (((uintptr_t) (p)) | (t)))
  ------------------
  423|     13|	zend_hash_index_add_new(&wm->ht, obj_key, value);
  424|     13|}
zend_weakrefs.c:zend_weakref_new:
  228|      7|static zend_object* zend_weakref_new(zend_class_entry *ce) {
  229|      7|	zend_weakref *wr = zend_object_alloc(sizeof(zend_weakref), zend_ce_weakref);
  230|       |
  231|      7|	zend_object_std_init(&wr->std, zend_ce_weakref);
  232|      7|	return &wr->std;
  233|      7|}
zend_weakrefs.c:zend_weakref_free:
  282|      7|static void zend_weakref_free(zend_object *zo) {
  283|      7|	zend_weakref *wr = zend_weakref_from(zo);
  ------------------
  |  |   61|      7|#define zend_weakref_from(o) (ZEND_CONTAINER_OF(o, zend_weakref, std))
  |  |  ------------------
  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      7|	)
  |  |  ------------------
  ------------------
  284|       |
  285|      7|	if (wr->referent) {
  ------------------
  |  Branch (285:6): [True: 0, False: 7]
  ------------------
  286|      0|		zend_weakref_unregister(wr->referent, ZEND_WEAKREF_ENCODE(wr, ZEND_WEAKREF_TAG_REF), true);
  ------------------
  |  |   54|      0|#define ZEND_WEAKREF_ENCODE(p, t) ((void *) (((uintptr_t) (p)) | (t)))
  ------------------
  287|      0|	}
  288|       |
  289|      7|	zend_object_std_dtor(&wr->std);
  290|      7|}
zend_weakrefs.c:zend_weakref_get_debug_info:
  293|      6|{
  294|      6|	*is_temp = 1;
  295|       |
  296|      6|	HashTable *ht = zend_new_array(1);
  ------------------
  |  |  342|      6|	_zend_new_array(size)
  ------------------
  297|       |
  298|      6|	zend_object *referent = zend_weakref_from(object)->referent;
  ------------------
  |  |   61|      6|#define zend_weakref_from(o) (ZEND_CONTAINER_OF(o, zend_weakref, std))
  |  |  ------------------
  |  |  |  |  407|      6|	_Generic( \
  |  |  |  |  408|      6|		(ptr), \
  |  |  |  |  409|      6|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      6|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      6|	)
  |  |  ------------------
  ------------------
  299|      6|	zval value;
  300|      6|	if (referent) {
  ------------------
  |  Branch (300:6): [True: 2, False: 4]
  ------------------
  301|      2|		ZVAL_OBJ_COPY(&value, referent);
  ------------------
  |  | 1146|      2|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      2|		zval *__z = (z);						\
  |  | 1148|      2|		zend_object *__o = (o);					\
  |  | 1149|      2|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      2|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  302|      4|	} else {
  303|      4|		ZVAL_NULL(&value);
  ------------------
  |  | 1059|      4|#define ZVAL_NULL(z) do {				\
  |  | 1060|      4|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  304|      4|	}
  305|       |
  306|      6|	zend_hash_update(ht, ZSTR_KNOWN(ZEND_STR_OBJECT), &value);
  307|       |
  308|      6|	return ht;
  309|      6|}
zend_weakrefs.c:zend_weakmap_create_object:
  339|     18|{
  340|     18|	zend_weakmap *wm = zend_object_alloc(sizeof(zend_weakmap), ce);
  341|     18|	zend_object_std_init(&wm->std, ce);
  342|       |
  343|     18|	zend_hash_init(&wm->ht, 0, NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|     18|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  344|     18|	return &wm->std;
  345|     18|}
zend_weakrefs.c:zend_weakmap_free_obj:
  348|     18|{
  349|     18|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|     18|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|     18|	_Generic( \
  |  |  |  |  408|     18|		(ptr), \
  |  |  |  |  409|     18|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     18|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     18|	)
  |  |  ------------------
  ------------------
  350|     18|	zend_weakrefs_hash_clean_ex(&wm->ht, ZEND_WEAKREF_TAG_MAP);
  ------------------
  |  |   49|     18|#define ZEND_WEAKREF_TAG_MAP     1
  ------------------
  351|     18|	zend_hash_destroy(&wm->ht);
  352|     18|	zend_object_std_dtor(&wm->std);
  353|     18|}
zend_weakrefs.c:zend_weakmap_get_properties_for:
  474|      2|{
  475|      2|	if (purpose != ZEND_PROP_PURPOSE_DEBUG) {
  ------------------
  |  Branch (475:6): [True: 0, False: 2]
  ------------------
  476|      0|		return NULL;
  477|      0|	}
  478|       |
  479|      2|	zend_weakmap *wm = zend_weakmap_from(object);
  ------------------
  |  |   64|      2|#define zend_weakmap_from(o) (ZEND_CONTAINER_OF(o, zend_weakmap, std))
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
  480|      2|	HashTable *ht;
  481|      2|	ALLOC_HASHTABLE(ht);
  ------------------
  |  |  232|      2|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  482|      2|	zend_hash_init(ht, zend_hash_num_elements(&wm->ht), NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  483|       |
  484|      2|	zend_ulong obj_key;
  485|      2|	zval *val;
  486|      8|	ZEND_HASH_MAP_FOREACH_NUM_KEY_VAL(&wm->ht, obj_key, val) {
  ------------------
  |  | 1379|      2|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      4|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      2|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      2|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1380|      2|	_h = _p->h; \
  |  | 1381|      2|	_val = _z;
  ------------------
  |  Branch (486:2): [True: 0, False: 2]
  |  Branch (486:2): [True: 2, False: 0]
  ------------------
  487|      8|		zend_object *obj = zend_weakref_key_to_object(obj_key);
  488|      8|		zval pair;
  489|      8|		array_init(&pair);
  490|       |
  491|      8|		GC_ADDREF(obj);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  492|      8|		add_assoc_object(&pair, "key", obj);
  493|      8|		Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  494|      8|		add_assoc_zval(&pair, "value", val);
  495|       |
  496|      8|		zend_hash_next_index_insert_new(ht, &pair);
  497|      8|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  498|       |
  499|      2|	return ht;
  500|      2|}

zend_weakrefs.c:zend_object_to_weakref_key:
   59|     90|{
   60|     90|	ZEND_ASSERT(((uintptr_t)object) % ZEND_MM_ALIGNMENT == 0);
  ------------------
  |  |  112|     90|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (60:2): [True: 0, False: 90]
  |  Branch (60:2): [True: 90, False: 0]
  ------------------
   61|     90|	return ((uintptr_t) object) >> ZEND_MM_ALIGNMENT_LOG2;
  ------------------
  |  | 2117|     90|#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3
  ------------------
   62|     90|}
zend_weakrefs.c:zend_weakref_key_to_object:
   65|     16|{
   66|     16|	return (zend_object *) (((uintptr_t) key) << ZEND_MM_ALIGNMENT_LOG2);
  ------------------
  |  | 2117|     16|#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3
  ------------------
   67|     16|}

zend_weakrefs.c:register_class_WeakReference:
   65|      2|{
   66|      2|	zend_class_entry ce, *class_entry;
   67|       |
   68|      2|	INIT_CLASS_ENTRY(ce, "WeakReference", class_WeakReference_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   69|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
   70|       |
   71|      2|	return class_entry;
   72|      2|}
zend_weakrefs.c:register_class_WeakMap:
   75|      2|{
   76|      2|	zend_class_entry ce, *class_entry;
   77|       |
   78|      2|	INIT_CLASS_ENTRY(ce, "WeakMap", class_WeakMap_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   79|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
   80|      2|	zend_class_implements(class_entry, 3, class_entry_ArrayAccess, class_entry_Countable, class_entry_IteratorAggregate);
   81|       |
   82|      2|	return class_entry;
   83|      2|}

timelib_day_of_week:
   68|     80|{
   69|     80|	return timelib_day_of_week_ex(y, m, d, 0);
   70|     80|}
timelib_iso_day_of_week:
   73|     11|{
   74|     11|	return timelib_day_of_week_ex(y, m, d, 1);
   75|     11|}
timelib_day_of_year:
   84|     24|{
   85|     24|	return (timelib_is_leap(y) ? d_table_leap[m] : d_table_common[m]) + d - 1;
  ------------------
  |  |  105|     24|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 0, False: 24]
  |  |  |  Branch (105:46): [True: 0, False: 0]
  |  |  |  Branch (105:64): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   86|     24|}
timelib_days_in_month:
   89|    197|{
   90|    197|	return timelib_is_leap(y) ? ml_table_leap[m] : ml_table_common[m];
  ------------------
  |  |  105|    197|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 41, False: 156]
  |  |  |  Branch (105:46): [True: 23, False: 18]
  |  |  |  Branch (105:64): [True: 15, False: 3]
  |  |  ------------------
  ------------------
   91|    197|}
timelib_isoweek_from_date:
   94|     11|{
   95|     11|	int y_leap, prev_y_leap, doy, jan1weekday, weekday;
   96|       |
   97|     11|	y_leap = timelib_is_leap(y);
  ------------------
  |  |  105|     11|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 0, False: 11]
  |  |  |  Branch (105:46): [True: 0, False: 0]
  |  |  |  Branch (105:64): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   98|     11|	prev_y_leap = timelib_is_leap(y-1);
  ------------------
  |  |  105|     11|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 0, False: 11]
  |  |  |  Branch (105:46): [True: 0, False: 0]
  |  |  |  Branch (105:64): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   99|     11|	doy = timelib_day_of_year(y, m, d) + 1;
  100|     11|	if (y_leap && m > 2) {
  ------------------
  |  Branch (100:6): [True: 0, False: 11]
  |  Branch (100:16): [True: 0, False: 0]
  ------------------
  101|      0|		doy++;
  102|      0|	}
  103|     11|	jan1weekday = timelib_day_of_week(y, 1, 1);
  104|     11|	weekday = timelib_day_of_week(y, m, d);
  105|     11|	if (weekday == 0) weekday = 7;
  ------------------
  |  Branch (105:6): [True: 0, False: 11]
  ------------------
  106|     11|	if (jan1weekday == 0) jan1weekday = 7;
  ------------------
  |  Branch (106:6): [True: 0, False: 11]
  ------------------
  107|       |	/* Find if Y M D falls in YearNumber Y-1, WeekNumber 52 or 53 */
  108|     11|	if (doy <= (8 - jan1weekday) && jan1weekday > 4) {
  ------------------
  |  Branch (108:6): [True: 0, False: 11]
  |  Branch (108:34): [True: 0, False: 0]
  ------------------
  109|      0|		*iy = y - 1;
  110|      0|		if (jan1weekday == 5 || (jan1weekday == 6 && prev_y_leap)) {
  ------------------
  |  Branch (110:7): [True: 0, False: 0]
  |  Branch (110:28): [True: 0, False: 0]
  |  Branch (110:48): [True: 0, False: 0]
  ------------------
  111|      0|			*iw = 53;
  112|      0|		} else {
  113|      0|			*iw = 52;
  114|      0|		}
  115|     11|	} else {
  116|     11|		*iy = y;
  117|     11|	}
  118|       |	/* 8. Find if Y M D falls in YearNumber Y+1, WeekNumber 1 */
  119|     11|	if (*iy == y) {
  ------------------
  |  Branch (119:6): [True: 11, False: 0]
  ------------------
  120|     11|		int i;
  121|       |
  122|     11|		i = y_leap ? 366 : 365;
  ------------------
  |  Branch (122:7): [True: 0, False: 11]
  ------------------
  123|     11|		if ((i - (doy - y_leap)) < (4 - weekday)) {
  ------------------
  |  Branch (123:7): [True: 0, False: 11]
  ------------------
  124|      0|			*iy = y + 1;
  125|      0|			*iw = 1;
  126|      0|			return;
  127|      0|		}
  128|     11|	}
  129|       |	/* 9. Find if Y M D falls in YearNumber Y, WeekNumber 1 through 53 */
  130|     11|	if (*iy == y) {
  ------------------
  |  Branch (130:6): [True: 11, False: 0]
  ------------------
  131|     11|		int j;
  132|       |
  133|     11|		j = doy + (7 - weekday) + (jan1weekday - 1);
  134|     11|		*iw = j / 7;
  135|     11|		if (jan1weekday > 4) {
  ------------------
  |  Branch (135:7): [True: 0, False: 11]
  ------------------
  136|      0|			*iw -= 1;
  137|      0|		}
  138|     11|	}
  139|     11|}
timelib_daynr_from_weeknr:
  148|      2|{
  149|      2|	timelib_sll dow, day;
  150|       |
  151|       |	/* Figure out the dayofweek for y-1-1 */
  152|      2|	dow = timelib_day_of_week(iy, 1, 1);
  153|       |	/* then use that to figure out the offset for day 1 of week 1 */
  154|      2|	day = 0 - (dow > 4 ? dow - 7 : dow);
  ------------------
  |  Branch (154:13): [True: 0, False: 2]
  ------------------
  155|       |
  156|       |	/* Add weeks and days */
  157|      2|	return day + ((iw - 1) * 7) + id;
  158|      2|}
timelib_valid_time:
  196|    273|{
  197|    273|	if (h < 0 || h > 23 || i < 0 || i > 59 || s < 0 || s > 59) {
  ------------------
  |  Branch (197:6): [True: 0, False: 273]
  |  Branch (197:15): [True: 2, False: 271]
  |  Branch (197:25): [True: 0, False: 271]
  |  Branch (197:34): [True: 0, False: 271]
  |  Branch (197:44): [True: 0, False: 271]
  |  Branch (197:53): [True: 1, False: 270]
  ------------------
  198|      3|		return 0;
  199|      3|	}
  200|    270|	return 1;
  201|    273|}
timelib_valid_date:
  204|    265|{
  205|    265|	if (m < 1 || m > 12 || d < 1 || d > timelib_days_in_month(y, m)) {
  ------------------
  |  Branch (205:6): [True: 21, False: 244]
  |  Branch (205:15): [True: 0, False: 244]
  |  Branch (205:25): [True: 68, False: 176]
  |  Branch (205:34): [True: 61, False: 115]
  ------------------
  206|    150|		return 0;
  207|    150|	}
  208|    115|	return 1;
  209|    265|}
dow.c:timelib_day_of_week_ex:
   49|     91|{
   50|     91|	timelib_sll c1, y1, m1, dow;
   51|       |
   52|       |	/* Only valid for Gregorian calendar, commented out as we don't handle
   53|       |	 * Julian calendar. We just return the 'wrong' day of week to be
   54|       |	 * consistent. */
   55|     91|	c1 = century_value(positive_mod(y, 400) / 100);
   56|     91|	y1 = positive_mod(y, 100);
   57|     91|	m1 = timelib_is_leap(y) ? m_table_leap[m] : m_table_common[m];
  ------------------
  |  |  105|     91|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 5, False: 86]
  |  |  |  Branch (105:46): [True: 4, False: 1]
  |  |  |  Branch (105:64): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   58|     91|	dow = positive_mod((c1 + y1 + m1 + (y1 / 4) + d), 7);
   59|     91|	if (iso) {
  ------------------
  |  Branch (59:6): [True: 11, False: 80]
  ------------------
   60|     11|		if (dow == 0) {
  ------------------
  |  Branch (60:7): [True: 0, False: 11]
  ------------------
   61|      0|			dow = 7;
   62|      0|		}
   63|     11|	}
   64|     91|	return dow;
   65|     91|}
dow.c:century_value:
   44|     91|{
   45|     91|	return 6 - positive_mod(j, 4) * 2;
   46|     91|}
dow.c:positive_mod:
   32|    364|{
   33|    364|	timelib_sll tmp;
   34|       |
   35|    364|	tmp = x % y;
   36|    364|	if (tmp < 0) {
  ------------------
  |  Branch (36:6): [True: 5, False: 359]
  ------------------
   37|      5|		tmp += y;
   38|      5|	}
   39|       |
   40|    364|	return tmp;
   41|    364|}

timelib_parse_zone:
  948|    553|{
  949|    553|	timelib_tzinfo *res;
  950|    553|	timelib_long            retval = 0;
  951|    553|	size_t paren_count = 0;
  952|       |
  953|    553|	*tz_not_found = 0;
  954|       |
  955|    554|	while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
  ------------------
  |  Branch (955:9): [True: 0, False: 554]
  |  Branch (955:25): [True: 0, False: 554]
  |  Branch (955:42): [True: 1, False: 553]
  ------------------
  956|      1|		paren_count += **ptr == '(';
  957|      1|		++*ptr;
  958|      1|	}
  959|    553|	if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
  ------------------
  |  Branch (959:6): [True: 7, False: 546]
  |  Branch (959:26): [True: 5, False: 2]
  |  Branch (959:46): [True: 2, False: 3]
  |  Branch (959:67): [True: 0, False: 2]
  |  Branch (959:87): [True: 0, False: 2]
  ------------------
  960|      0|		*ptr += 3;
  961|      0|	}
  962|    553|	if (**ptr == '+') {
  ------------------
  |  Branch (962:6): [True: 9, False: 544]
  ------------------
  963|      9|		++*ptr;
  964|      9|		t->is_localtime = 1;
  965|      9|		t->zone_type = TIMELIB_ZONETYPE_OFFSET;
  ------------------
  |  |  327|      9|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  966|      9|		t->dst = 0;
  967|       |
  968|      9|		retval = timelib_parse_tz_cor(ptr, tz_not_found);
  969|    544|	} else if (**ptr == '-') {
  ------------------
  |  Branch (969:13): [True: 75, False: 469]
  ------------------
  970|     75|		++*ptr;
  971|     75|		t->is_localtime = 1;
  972|     75|		t->zone_type = TIMELIB_ZONETYPE_OFFSET;
  ------------------
  |  |  327|     75|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  973|     75|		t->dst = 0;
  974|       |
  975|     75|		retval = -1 * timelib_parse_tz_cor(ptr, tz_not_found);
  976|    469|	} else {
  977|    469|		int found = 0;
  978|    469|		timelib_long offset = 0;
  979|    469|		char *tz_abbr;
  980|       |
  981|    469|		t->is_localtime = 1;
  982|       |
  983|       |		/* First, we lookup by abbreviation only */
  984|    469|		offset = timelib_lookup_abbr(ptr, dst, &tz_abbr, &found);
  985|    469|		if (found) {
  ------------------
  |  Branch (985:7): [True: 196, False: 273]
  ------------------
  986|    196|			t->zone_type = TIMELIB_ZONETYPE_ABBR;
  ------------------
  |  |  328|    196|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  987|    196|			t->dst = *dst;
  988|    196|			timelib_time_tz_abbr_update(t, tz_abbr);
  989|    196|		}
  990|       |
  991|       |		/* Otherwise, we look if we have a TimeZone identifier */
  992|    469|		if (!found || strcmp("UTC", tz_abbr) == 0) {
  ------------------
  |  Branch (992:7): [True: 273, False: 196]
  |  Branch (992:17): [True: 0, False: 196]
  ------------------
  993|    273|			int dummy_error_code;
  994|       |
  995|    273|			if ((res = tz_wrapper(tz_abbr, tzdb, &dummy_error_code)) != NULL) {
  ------------------
  |  Branch (995:8): [True: 10, False: 263]
  ------------------
  996|     10|				t->tz_info = res;
  997|     10|				t->zone_type = TIMELIB_ZONETYPE_ID;
  ------------------
  |  |  329|     10|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  998|     10|				found++;
  999|     10|			}
 1000|    273|		}
 1001|    469|		timelib_free(tz_abbr);
  ------------------
  |  |   16|    469|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    469|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    469|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    469|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    469|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    469|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1002|    469|		*tz_not_found = (found == 0);
 1003|    469|		retval = offset;
 1004|    469|	}
 1005|    553|	while (paren_count > 0 && **ptr == ')') {
  ------------------
  |  Branch (1005:9): [True: 1, False: 552]
  |  Branch (1005:28): [True: 0, False: 1]
  ------------------
 1006|      0|		++*ptr;
 1007|      0|		paren_count--;
 1008|      0|	}
 1009|    553|	return retval;
 1010|    553|}
timelib_strtotime:
24860|    652|{
24861|    652|	Scanner in;
24862|    652|	int t;
24863|    652|	const char *e = s + len - 1;
24864|       |
24865|    652|	memset(&in, 0, sizeof(in));
24866|    652|	in.errors = timelib_malloc(sizeof(timelib_error_container));
  ------------------
  |  |   11|    652|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|    652|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    652|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    652|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    652|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    652|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24867|    652|	in.errors->warning_count = 0;
24868|    652|	in.errors->warning_messages = NULL;
24869|    652|	in.errors->error_count = 0;
24870|    652|	in.errors->error_messages = NULL;
24871|       |
24872|    652|	if (len > 0) {
  ------------------
  |  Branch (24872:6): [True: 652, False: 0]
  ------------------
24873|    707|		while (isspace((unsigned char)*s) && s < e) {
  ------------------
  |  Branch (24873:10): [True: 55, False: 652]
  |  Branch (24873:40): [True: 55, False: 0]
  ------------------
24874|     55|			s++;
24875|     55|		}
24876|    745|		while (isspace((unsigned char)*e) && e > s) {
  ------------------
  |  Branch (24876:10): [True: 93, False: 652]
  |  Branch (24876:40): [True: 93, False: 0]
  ------------------
24877|     93|			e--;
24878|     93|		}
24879|    652|	}
24880|    652|	if (e - s < 0) {
  ------------------
  |  Branch (24880:6): [True: 0, False: 652]
  ------------------
24881|      0|		in.time = timelib_time_ctor();
24882|      0|		add_error(&in, TIMELIB_ERR_EMPTY_STRING, "Empty string");
  ------------------
  |  |  292|      0|#define TIMELIB_ERR_EMPTY_STRING               0x206
  ------------------
24883|      0|		if (errors) {
  ------------------
  |  Branch (24883:7): [True: 0, False: 0]
  ------------------
24884|      0|			*errors = in.errors;
24885|      0|		} else {
24886|      0|			timelib_error_container_dtor(in.errors);
24887|      0|		}
24888|      0|		in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->us = in.time->dst = in.time->z = TIMELIB_UNSET;
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
24889|      0|		in.time->is_localtime = in.time->zone_type = 0;
24890|      0|		return in.time;
24891|      0|	}
24892|    652|	e++;
24893|       |
24894|    652|	in.str = timelib_malloc((e - s) + YYMAXFILL);
  ------------------
  |  |   11|    652|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|    652|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    652|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    652|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    652|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    652|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24895|    652|	memset(in.str, 0, (e - s) + YYMAXFILL);
  ------------------
  |  |24856|    652|#define YYMAXFILL 36
  ------------------
24896|    652|	memcpy(in.str, s, (e - s));
24897|    652|	in.lim = in.str + (e - s) + YYMAXFILL;
  ------------------
  |  |24856|    652|#define YYMAXFILL 36
  ------------------
24898|    652|	in.cur = in.str;
24899|    652|	in.time = timelib_time_ctor();
24900|    652|	in.time->y = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24901|    652|	in.time->d = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24902|    652|	in.time->m = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24903|    652|	in.time->h = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24904|    652|	in.time->i = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24905|    652|	in.time->s = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24906|    652|	in.time->us = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24907|    652|	in.time->z = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24908|    652|	in.time->dst = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24909|    652|	in.tzdb = tzdb;
24910|    652|	in.time->is_localtime = 0;
24911|    652|	in.time->zone_type = 0;
24912|    652|	in.time->relative.days = TIMELIB_UNSET;
  ------------------
  |  |  382|    652|#define TIMELIB_UNSET   -9999999
  ------------------
24913|       |
24914|  9.66k|	do {
24915|  9.66k|		t = scan(&in, tz_get_wrapper);
24916|       |#ifdef DEBUG_PARSER
24917|       |		printf("%d\n", t);
24918|       |#endif
24919|  9.66k|	} while(t != EOI);
  ------------------
  |  |   47|  9.66k|#define EOI      257
  ------------------
  |  Branch (24919:10): [True: 9.01k, False: 652]
  ------------------
24920|       |
24921|       |	/* do funky checking whether the parsed time was valid time */
24922|    652|	if (in.time->have_time && !timelib_valid_time( in.time->h, in.time->i, in.time->s)) {
  ------------------
  |  Branch (24922:6): [True: 273, False: 379]
  |  Branch (24922:28): [True: 3, False: 270]
  ------------------
24923|      3|		add_warning(&in, TIMELIB_WARN_INVALID_TIME, "The parsed time was invalid");
  ------------------
  |  |  283|      3|#define TIMELIB_WARN_INVALID_TIME              0x102
  ------------------
24924|      3|	}
24925|       |	/* do funky checking whether the parsed date was valid date */
24926|    652|	if (in.time->have_date && !timelib_valid_date( in.time->y, in.time->m, in.time->d)) {
  ------------------
  |  Branch (24926:6): [True: 265, False: 387]
  |  Branch (24926:28): [True: 150, False: 115]
  ------------------
24927|    150|		add_warning(&in, TIMELIB_WARN_INVALID_DATE, "The parsed date was invalid");
  ------------------
  |  |  284|    150|#define TIMELIB_WARN_INVALID_DATE              0x103
  ------------------
24928|    150|	}
24929|       |
24930|    652|	timelib_free(in.str);
  ------------------
  |  |   16|    652|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    652|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    652|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    652|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    652|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    652|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24931|    652|	if (errors) {
  ------------------
  |  Branch (24931:6): [True: 652, False: 0]
  ------------------
24932|    652|		*errors = in.errors;
24933|    652|	} else {
24934|      0|		timelib_error_container_dtor(in.errors);
24935|      0|	}
24936|    652|	return in.time;
24937|    652|}
timelib_fill_holes:
25540|     24|{
25541|     24|	if (!(options & TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) {
  ------------------
  |  |  379|     24|#define TIMELIB_OVERRIDE_TIME    0x01
  ------------------
  |  Branch (25541:6): [True: 24, False: 0]
  |  Branch (25541:44): [True: 3, False: 21]
  |  Branch (25541:65): [True: 3, False: 0]
  ------------------
25542|      3|		parsed->h = 0;
25543|      3|		parsed->i = 0;
25544|      3|		parsed->s = 0;
25545|      3|		parsed->us = 0;
25546|      3|	}
25547|     24|	if (
25548|     24|		parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
  ------------------
  |  |  382|     48|#define TIMELIB_UNSET   -9999999
  ------------------
              		parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
  ------------------
  |  |  382|     27|#define TIMELIB_UNSET   -9999999
  ------------------
              		parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
  ------------------
  |  |  382|     27|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25548:3): [True: 21, False: 3]
  |  Branch (25548:33): [True: 0, False: 3]
  |  Branch (25548:63): [True: 0, False: 3]
  ------------------
25549|      3|		parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
  ------------------
  |  |  382|     27|#define TIMELIB_UNSET   -9999999
  ------------------
              		parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
  ------------------
  |  |  382|     27|#define TIMELIB_UNSET   -9999999
  ------------------
              		parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
  ------------------
  |  |  382|      3|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25549:3): [True: 0, False: 3]
  |  Branch (25549:33): [True: 0, False: 3]
  |  Branch (25549:63): [True: 0, False: 3]
  ------------------
25550|     24|	) {
25551|     21|		if (parsed->us == TIMELIB_UNSET) parsed->us = 0;
  ------------------
  |  |  382|     21|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25551:7): [True: 2, False: 19]
  ------------------
25552|     21|	} else {
25553|      3|		if (parsed->us == TIMELIB_UNSET) parsed->us = now->us != TIMELIB_UNSET ? now->us : 0;
  ------------------
  |  |  382|      3|#define TIMELIB_UNSET   -9999999
  ------------------
              		if (parsed->us == TIMELIB_UNSET) parsed->us = now->us != TIMELIB_UNSET ? now->us : 0;
  ------------------
  |  |  382|      3|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25553:7): [True: 3, False: 0]
  |  Branch (25553:49): [True: 3, False: 0]
  ------------------
25554|      3|	}
25555|     24|	if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
  ------------------
  |  |  382|     24|#define TIMELIB_UNSET   -9999999
  ------------------
              	if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
  ------------------
  |  |  382|      3|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25555:6): [True: 3, False: 21]
  |  Branch (25555:46): [True: 3, False: 0]
  ------------------
25556|     24|	if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
  ------------------
  |  |  382|     24|#define TIMELIB_UNSET   -9999999
  ------------------
              	if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
  ------------------
  |  |  382|      7|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25556:6): [True: 7, False: 17]
  |  Branch (25556:46): [True: 7, False: 0]
  ------------------
25557|     24|	if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
  ------------------
  |  |  382|     24|#define TIMELIB_UNSET   -9999999
  ------------------
              	if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
  ------------------
  |  |  382|      7|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25557:6): [True: 7, False: 17]
  |  Branch (25557:46): [True: 7, False: 0]
  ------------------
25558|     24|	if (parsed->h == TIMELIB_UNSET) parsed->h = now->h != TIMELIB_UNSET ? now->h : 0;
  ------------------
  |  |  382|     24|#define TIMELIB_UNSET   -9999999
  ------------------
              	if (parsed->h == TIMELIB_UNSET) parsed->h = now->h != TIMELIB_UNSET ? now->h : 0;
  ------------------
  |  |  382|      5|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25558:6): [True: 5, False: 19]
  |  Branch (25558:46): [True: 5, False: 0]
  ------------------
25559|     24|	if (parsed->i == TIMELIB_UNSET) parsed->i = now->i != TIMELIB_UNSET ? now->i : 0;
  ------------------
  |  |  382|     24|#define TIMELIB_UNSET   -9999999
  ------------------
              	if (parsed->i == TIMELIB_UNSET) parsed->i = now->i != TIMELIB_UNSET ? now->i : 0;
  ------------------
  |  |  382|      5|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25559:6): [True: 5, False: 19]
  |  Branch (25559:46): [True: 5, False: 0]
  ------------------
25560|     24|	if (parsed->s == TIMELIB_UNSET) parsed->s = now->s != TIMELIB_UNSET ? now->s : 0;
  ------------------
  |  |  382|     24|#define TIMELIB_UNSET   -9999999
  ------------------
              	if (parsed->s == TIMELIB_UNSET) parsed->s = now->s != TIMELIB_UNSET ? now->s : 0;
  ------------------
  |  |  382|      5|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25560:6): [True: 5, False: 19]
  |  Branch (25560:46): [True: 5, False: 0]
  ------------------
25561|       |
25562|     24|	if (!parsed->tz_info) {
  ------------------
  |  Branch (25562:6): [True: 22, False: 2]
  ------------------
25563|     22|		parsed->tz_info = now->tz_info ? (!(options & TIMELIB_NO_CLONE) ? timelib_tzinfo_clone(now->tz_info) : now->tz_info) : NULL;
  ------------------
  |  |  380|     22|#define TIMELIB_NO_CLONE         0x02
  ------------------
  |  Branch (25563:21): [True: 22, False: 0]
  |  Branch (25563:37): [True: 0, False: 22]
  ------------------
25564|       |
25565|     22|		if (parsed->z == TIMELIB_UNSET) parsed->z = now->z != TIMELIB_UNSET ? now->z : 0;
  ------------------
  |  |  382|     22|#define TIMELIB_UNSET   -9999999
  ------------------
              		if (parsed->z == TIMELIB_UNSET) parsed->z = now->z != TIMELIB_UNSET ? now->z : 0;
  ------------------
  |  |  382|      3|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25565:7): [True: 3, False: 19]
  |  Branch (25565:47): [True: 3, False: 0]
  ------------------
25566|     22|		if (parsed->dst == TIMELIB_UNSET) parsed->dst = now->dst != TIMELIB_UNSET ? now->dst : 0;
  ------------------
  |  |  382|     22|#define TIMELIB_UNSET   -9999999
  ------------------
              		if (parsed->dst == TIMELIB_UNSET) parsed->dst = now->dst != TIMELIB_UNSET ? now->dst : 0;
  ------------------
  |  |  382|      3|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (25566:7): [True: 3, False: 19]
  |  Branch (25566:51): [True: 3, False: 0]
  ------------------
25567|       |
25568|     22|		if (!parsed->tz_abbr) {
  ------------------
  |  Branch (25568:7): [True: 17, False: 5]
  ------------------
25569|     17|			parsed->tz_abbr = now->tz_abbr ? timelib_strdup(now->tz_abbr) : NULL;
  ------------------
  |  |   14|     17|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|     17|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (25569:22): [True: 17, False: 0]
  ------------------
25570|     17|		}
25571|     22|	}
25572|       |
25573|     24|	if (parsed->zone_type == 0 && now->zone_type != 0) {
  ------------------
  |  Branch (25573:6): [True: 3, False: 21]
  |  Branch (25573:32): [True: 3, False: 0]
  ------------------
25574|      3|		parsed->zone_type = now->zone_type;
25575|       |/*		parsed->tz_abbr = now->tz_abbr ? timelib_strdup(now->tz_abbr) : NULL;
25576|       |		parsed->tz_info = now->tz_info ? timelib_tzinfo_clone(now->tz_info) : NULL;
25577|      3|*/		parsed->is_localtime = 1;
25578|      3|	}
25579|       |/*	timelib_dump_date(parsed, 2);
25580|       |	timelib_dump_date(now, 2);
25581|       |*/
25582|     24|}
parse_date.c:timelib_parse_tz_cor:
  856|     84|{
  857|     84|	const char *begin = *ptr, *end;
  858|     84|	timelib_long  tmp;
  859|       |
  860|     84|	*tz_not_found = 1;
  861|       |
  862|    308|	while (isdigit((unsigned char)**ptr) || **ptr == ':') {
  ------------------
  |  Branch (862:9): [True: 206, False: 102]
  |  Branch (862:42): [True: 18, False: 84]
  ------------------
  863|    224|		++*ptr;
  864|    224|	}
  865|     84|	end = *ptr;
  866|     84|	switch (end - begin) {
  ------------------
  |  Branch (866:10): [True: 84, False: 0]
  ------------------
  867|     32|		case 1: /* H */
  ------------------
  |  Branch (867:3): [True: 32, False: 52]
  ------------------
  868|     45|		case 2: /* HH */
  ------------------
  |  Branch (868:3): [True: 13, False: 71]
  ------------------
  869|     45|			*tz_not_found = 0;
  870|     45|			return sHOUR(strtol(begin, NULL, 10));
  ------------------
  |  |  852|     45|#define sHOUR(a) (int)(a * 3600)
  ------------------
  871|       |
  872|     11|		case 3: /* H:M */
  ------------------
  |  Branch (872:3): [True: 11, False: 73]
  ------------------
  873|     27|		case 4: /* H:MM, HH:M, HHMM */
  ------------------
  |  Branch (873:3): [True: 16, False: 68]
  ------------------
  874|     27|			if (begin[1] == ':') {
  ------------------
  |  Branch (874:8): [True: 15, False: 12]
  ------------------
  875|     15|				*tz_not_found = 0;
  876|     15|				tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 2, NULL, 10));
  ------------------
  |  |  852|     15|#define sHOUR(a) (int)(a * 3600)
  ------------------
              				tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 2, NULL, 10));
  ------------------
  |  |  853|     15|#define sMIN(a) (int)(a * 60)
  ------------------
  877|     15|				return tmp;
  878|     15|			} else if (begin[2] == ':') {
  ------------------
  |  Branch (878:15): [True: 0, False: 12]
  ------------------
  879|      0|				*tz_not_found = 0;
  880|      0|				tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
  ------------------
  |  |  852|      0|#define sHOUR(a) (int)(a * 3600)
  ------------------
              				tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
  ------------------
  |  |  853|      0|#define sMIN(a) (int)(a * 60)
  ------------------
  881|      0|				return tmp;
  882|     12|			} else {
  883|     12|				*tz_not_found = 0;
  884|     12|				tmp = strtol(begin, NULL, 10);
  885|     12|				return sHOUR(tmp / 100) + sMIN(tmp % 100);
  ------------------
  |  |  852|     12|#define sHOUR(a) (int)(a * 3600)
  ------------------
              				return sHOUR(tmp / 100) + sMIN(tmp % 100);
  ------------------
  |  |  853|     12|#define sMIN(a) (int)(a * 60)
  ------------------
  886|     12|			}
  887|       |
  888|      3|		case 5: /* HH:MM */
  ------------------
  |  Branch (888:3): [True: 3, False: 81]
  ------------------
  889|      3|			if (begin[2] != ':') {
  ------------------
  |  Branch (889:8): [True: 0, False: 3]
  ------------------
  890|      0|				break;
  891|      0|			}
  892|       |
  893|      3|			*tz_not_found = 0;
  894|      3|			tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
  ------------------
  |  |  852|      3|#define sHOUR(a) (int)(a * 3600)
  ------------------
              			tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
  ------------------
  |  |  853|      3|#define sMIN(a) (int)(a * 60)
  ------------------
  895|      3|			return tmp;
  896|       |
  897|      9|		case 6: /* HHMMSS */
  ------------------
  |  Branch (897:3): [True: 9, False: 75]
  ------------------
  898|      9|			*tz_not_found = 0;
  899|      9|			tmp = strtol(begin, NULL, 10);
  900|      9|			tmp = sHOUR(tmp / 10000) + sMIN((tmp / 100) % 100) + (tmp % 100);
  ------------------
  |  |  852|      9|#define sHOUR(a) (int)(a * 3600)
  ------------------
              			tmp = sHOUR(tmp / 10000) + sMIN((tmp / 100) % 100) + (tmp % 100);
  ------------------
  |  |  853|      9|#define sMIN(a) (int)(a * 60)
  ------------------
  901|      9|			return tmp;
  902|       |
  903|      0|		case 8: /* HH:MM:SS */
  ------------------
  |  Branch (903:3): [True: 0, False: 84]
  ------------------
  904|      0|			if (begin[2] != ':' || begin[5] != ':') {
  ------------------
  |  Branch (904:8): [True: 0, False: 0]
  |  Branch (904:27): [True: 0, False: 0]
  ------------------
  905|      0|				break;
  906|      0|			}
  907|       |
  908|      0|			*tz_not_found = 0;
  909|      0|			tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10)) + strtol(begin + 6, NULL, 10);
  ------------------
  |  |  852|      0|#define sHOUR(a) (int)(a * 3600)
  ------------------
              			tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10)) + strtol(begin + 6, NULL, 10);
  ------------------
  |  |  853|      0|#define sMIN(a) (int)(a * 60)
  ------------------
  910|      0|			return tmp;
  911|       |
  912|     84|	}
  913|      0|	return 0;
  914|     84|}
parse_date.c:timelib_lookup_abbr:
  820|    469|{
  821|    469|	char *word;
  822|    469|	const char *begin = *ptr, *end;
  823|    469|	timelib_long  value = 0;
  824|    469|	const timelib_tz_lookup_table *tp;
  825|       |
  826|       |	/* Only include A-Z, a-z, 0-9, /, _, and - in abbreviations/TZ IDs */
  827|    469|	while (
  828|  1.63k|		(**ptr >= 'A' && **ptr <= 'Z') ||
  ------------------
  |  Branch (828:4): [True: 1.16k, False: 472]
  |  Branch (828:20): [True: 333, False: 827]
  ------------------
  829|  1.29k|		(**ptr >= 'a' && **ptr <= 'z') ||
  ------------------
  |  Branch (829:4): [True: 824, False: 475]
  |  Branch (829:20): [True: 824, False: 0]
  ------------------
  830|    475|		(**ptr >= '0' && **ptr <= '9') ||
  ------------------
  |  Branch (830:4): [True: 3, False: 472]
  |  Branch (830:20): [True: 0, False: 3]
  ------------------
  831|    475|		**ptr == '/' || **ptr == '_' || **ptr == '-' || **ptr == '+'
  ------------------
  |  Branch (831:3): [True: 1, False: 474]
  |  Branch (831:19): [True: 3, False: 471]
  |  Branch (831:35): [True: 2, False: 469]
  |  Branch (831:51): [True: 0, False: 469]
  ------------------
  832|  1.16k|	) {
  833|  1.16k|		++*ptr;
  834|  1.16k|	}
  835|    469|	end = *ptr;
  836|    469|	word = timelib_calloc(1, end - begin + 1);
  ------------------
  |  |   13|    469|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|    469|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    469|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    469|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    469|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    469|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  837|    469|	memcpy(word, begin, end - begin);
  838|       |
  839|    469|	if (end - begin < MAX_ABBR_LEN && (tp = abbr_search(word, -1, 0))) {
  ------------------
  |  |  180|    938|#  define MAX_ABBR_LEN _POSIX_TZNAME_MAX
  ------------------
  |  Branch (839:6): [True: 424, False: 45]
  |  Branch (839:36): [True: 196, False: 228]
  ------------------
  840|    196|		value = tp->gmtoffset;
  841|    196|		*dst = tp->type;
  842|    196|		value -= tp->type * 3600;
  843|    196|		*found = 1;
  844|    273|	} else {
  845|    273|		*found = 0;
  846|    273|	}
  847|       |
  848|    469|	*tz_abbr = word;
  849|    469|	return value;
  850|    469|}
parse_date.c:add_error:
  384|  29.7k|{
  385|  29.7k|	timelib_error_message *message = alloc_error_message(&s->errors->error_messages, &s->errors->error_count);
  386|       |
  387|  29.7k|	message->error_code = error_code;
  388|  29.7k|	message->position = s->tok ? s->tok - s->str : 0;
  ------------------
  |  Branch (388:22): [True: 29.7k, False: 0]
  ------------------
  389|  29.7k|	message->character = s->tok ? *s->tok : 0;
  ------------------
  |  Branch (389:23): [True: 29.7k, False: 0]
  ------------------
  390|       |	message->message = timelib_strdup(error);
  ------------------
  |  |   14|  29.7k|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|  29.7k|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  29.7k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  29.7k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  29.7k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  29.7k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  391|  29.7k|}
parse_date.c:alloc_error_message:
  361|  30.4k|{
  362|       |	/* Realloc in power of two increments */
  363|  30.4k|	int is_pow2 = (*count & (*count - 1)) == 0;
  364|       |
  365|  30.4k|	if (is_pow2) {
  ------------------
  |  Branch (365:6): [True: 4.82k, False: 25.6k]
  ------------------
  366|  4.82k|		size_t alloc_size = *count ? (*count * 2) : 1;
  ------------------
  |  Branch (366:23): [True: 3.64k, False: 1.17k]
  ------------------
  367|       |
  368|       |		*messages = timelib_realloc(*messages, alloc_size * sizeof(timelib_error_message));
  ------------------
  |  |   12|  4.82k|#define timelib_realloc erealloc
  |  |  ------------------
  |  |  |  |  158|  4.82k|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  4.82k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  4.82k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  4.82k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  4.82k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|  4.82k|	}
  370|  30.4k|	return *messages + (*count)++;
  371|  30.4k|}
parse_date.c:scan:
 1023|  9.66k|{
 1024|  9.66k|	uchar *cursor = s->cur;
 1025|  9.66k|	char *str;
 1026|  9.66k|	const char *ptr = NULL;
 1027|       |
 1028|  40.1k|std:
 1029|  40.1k|	s->tok = cursor;
 1030|  40.1k|	s->len = 0;
 1031|  40.1k|#line 1161 "ext/date/lib/parse_date.re"
 1032|       |
 1033|       |
 1034|       |
 1035|  40.1k|#line 1036 "ext/date/lib/parse_date.c"
 1036|  40.1k|{
 1037|  40.1k|	YYCTYPE yych;
  ------------------
  |  |   88|  40.1k|#define   YYCTYPE      uchar
  ------------------
 1038|  40.1k|	unsigned int yyaccept = 0;
 1039|  40.1k|	static const unsigned char yybm[] = {
 1040|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1041|  40.1k|		  0,  50,   0,   0,   0,   0,   0,   0, 
 1042|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1043|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1044|  40.1k|		 50,   0,   0,   0,   0,   0,   0,   0, 
 1045|  40.1k|		  0,   0,   0,   4,  32,  20,  48,   0, 
 1046|  40.1k|		  8,   8,   8,   8,   8,   8,   8,   8, 
 1047|  40.1k|		  8,   8,   0,   0,   0,   0,   0,   0, 
 1048|  40.1k|		  0,  64,  64,  64,  64,  64,  64,  64, 
 1049|  40.1k|		 64,  64,  64,  64,  64,  64,  64,  64, 
 1050|  40.1k|		 64,  64,  64,  64,  64,  64,  64,  64, 
 1051|  40.1k|		 64,  64,  64,   0,   0,   0,   0,   0, 
 1052|  40.1k|		  0, 192, 192, 192, 224, 192, 192, 192, 
 1053|  40.1k|		224, 192, 192, 192, 192, 192, 224, 192, 
 1054|  40.1k|		192, 192, 224, 224, 224, 192, 192, 192, 
 1055|  40.1k|		192, 192, 192,   0,   0,   0,   0,   0, 
 1056|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1057|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1058|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1059|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1060|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1061|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1062|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1063|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1064|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1065|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1066|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1067|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1068|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1069|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1070|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1071|  40.1k|		  0,   0,   0,   0,   0,   0,   0,   0, 
 1072|  40.1k|	};
 1073|  40.1k|	YYDEBUG(0, *YYCURSOR);
 1074|  40.1k|	if ((YYLIMIT - YYCURSOR) < 36) YYFILL(36);
  ------------------
  |  |   90|  40.1k|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 36) YYFILL(36);
  ------------------
  |  |   89|  40.1k|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 36) YYFILL(36);
  ------------------
  |  |   92|    652|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|    652|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (1074:6): [True: 652, False: 39.4k]
  ------------------
 1075|  39.4k|	yych = *YYCURSOR;
  ------------------
  |  |   89|  39.4k|#define   YYCURSOR     cursor
  ------------------
 1076|  39.4k|	if (yybm[0+yych] & 2) {
  ------------------
  |  Branch (1076:6): [True: 1.69k, False: 37.7k]
  ------------------
 1077|  1.69k|		goto yy6;
 1078|  1.69k|	}
 1079|  37.7k|	if (yych <= 'R') {
  ------------------
  |  Branch (1079:6): [True: 22.7k, False: 15.0k]
  ------------------
 1080|  22.7k|		if (yych <= '?') {
  ------------------
  |  Branch (1080:7): [True: 20.7k, False: 2.01k]
  ------------------
 1081|  20.7k|			if (yych <= ',') {
  ------------------
  |  Branch (1081:8): [True: 9.56k, False: 11.1k]
  ------------------
 1082|  9.56k|				if (yych <= '\'') {
  ------------------
  |  Branch (1082:9): [True: 8.34k, False: 1.22k]
  ------------------
 1083|  8.34k|					if (yych <= 0x00) goto yy2;
  ------------------
  |  Branch (1083:10): [True: 4.56k, False: 3.77k]
  ------------------
 1084|  3.77k|					if (yych <= 0x08) goto yy4;
  ------------------
  |  Branch (1084:10): [True: 835, False: 2.94k]
  ------------------
 1085|  2.94k|					if (yych >= '\v') goto yy4;
  ------------------
  |  Branch (1085:10): [True: 2.22k, False: 712]
  ------------------
 1086|  2.94k|				} else {
 1087|  1.22k|					if (yych <= '(') goto yy9;
  ------------------
  |  Branch (1087:10): [True: 309, False: 912]
  ------------------
 1088|    912|					if (yych <= '*') goto yy4;
  ------------------
  |  Branch (1088:10): [True: 231, False: 681]
  ------------------
 1089|    681|					if (yych <= '+') goto yy10;
  ------------------
  |  Branch (1089:10): [True: 518, False: 163]
  ------------------
 1090|    163|					goto yy11;
 1091|    681|				}
 1092|  11.1k|			} else {
 1093|  11.1k|				if (yych <= '0') {
  ------------------
  |  Branch (1093:9): [True: 3.92k, False: 7.22k]
  ------------------
 1094|  3.92k|					if (yych <= '-') goto yy10;
  ------------------
  |  Branch (1094:10): [True: 1.40k, False: 2.51k]
  ------------------
 1095|  2.51k|					if (yych <= '.') goto yy11;
  ------------------
  |  Branch (1095:10): [True: 377, False: 2.14k]
  ------------------
 1096|  2.14k|					if (yych <= '/') goto yy4;
  ------------------
  |  Branch (1096:10): [True: 431, False: 1.71k]
  ------------------
 1097|  1.71k|					goto yy13;
 1098|  7.22k|				} else {
 1099|  7.22k|					if (yych <= '2') {
  ------------------
  |  Branch (1099:10): [True: 2.14k, False: 5.07k]
  ------------------
 1100|  2.14k|						if (yych <= '1') goto yy14;
  ------------------
  |  Branch (1100:11): [True: 1.14k, False: 999]
  ------------------
 1101|    999|						goto yy15;
 1102|  5.07k|					} else {
 1103|  5.07k|						if (yych <= '3') goto yy16;
  ------------------
  |  Branch (1103:11): [True: 544, False: 4.53k]
  ------------------
 1104|  4.53k|						if (yych <= '9') goto yy17;
  ------------------
  |  Branch (1104:11): [True: 2.79k, False: 1.73k]
  ------------------
 1105|  1.73k|						goto yy4;
 1106|  4.53k|					}
 1107|  7.22k|				}
 1108|  11.1k|			}
 1109|  20.7k|		} else {
 1110|  2.01k|			if (yych <= 'H') {
  ------------------
  |  Branch (1110:8): [True: 1.18k, False: 834]
  ------------------
 1111|  1.18k|				if (yych <= 'C') {
  ------------------
  |  Branch (1111:9): [True: 684, False: 499]
  ------------------
 1112|    684|					if (yych <= '@') goto yy18;
  ------------------
  |  Branch (1112:10): [True: 277, False: 407]
  ------------------
 1113|    407|					if (yych <= 'A') goto yy19;
  ------------------
  |  Branch (1113:10): [True: 257, False: 150]
  ------------------
 1114|    150|					if (yych <= 'B') goto yy21;
  ------------------
  |  Branch (1114:10): [True: 104, False: 46]
  ------------------
 1115|     46|					goto yy22;
 1116|    499|				} else {
 1117|    499|					if (yych <= 'E') {
  ------------------
  |  Branch (1117:10): [True: 282, False: 217]
  ------------------
 1118|    282|						if (yych <= 'D') goto yy23;
  ------------------
  |  Branch (1118:11): [True: 157, False: 125]
  ------------------
 1119|    125|						goto yy24;
 1120|    282|					} else {
 1121|    217|						if (yych <= 'F') goto yy25;
  ------------------
  |  Branch (1121:11): [True: 140, False: 77]
  ------------------
 1122|     77|						if (yych <= 'G') goto yy26;
  ------------------
  |  Branch (1122:11): [True: 41, False: 36]
  ------------------
 1123|     36|						goto yy22;
 1124|     77|					}
 1125|    499|				}
 1126|  1.18k|			} else {
 1127|    834|				if (yych <= 'L') {
  ------------------
  |  Branch (1127:9): [True: 308, False: 526]
  ------------------
 1128|    308|					if (yych <= 'I') goto yy27;
  ------------------
  |  Branch (1128:10): [True: 174, False: 134]
  ------------------
 1129|    134|					if (yych <= 'J') goto yy28;
  ------------------
  |  Branch (1129:10): [True: 62, False: 72]
  ------------------
 1130|     72|					if (yych <= 'K') goto yy22;
  ------------------
  |  Branch (1130:10): [True: 29, False: 43]
  ------------------
 1131|     43|					goto yy29;
 1132|    526|				} else {
 1133|    526|					if (yych <= 'N') {
  ------------------
  |  Branch (1133:10): [True: 235, False: 291]
  ------------------
 1134|    235|						if (yych <= 'M') goto yy30;
  ------------------
  |  Branch (1134:11): [True: 152, False: 83]
  ------------------
 1135|     83|						goto yy31;
 1136|    291|					} else {
 1137|    291|						if (yych <= 'O') goto yy32;
  ------------------
  |  Branch (1137:11): [True: 96, False: 195]
  ------------------
 1138|    195|						if (yych <= 'P') goto yy33;
  ------------------
  |  Branch (1138:11): [True: 137, False: 58]
  ------------------
 1139|     58|						goto yy22;
 1140|    195|					}
 1141|    526|				}
 1142|    834|			}
 1143|  2.01k|		}
 1144|  22.7k|	} else {
 1145|  15.0k|		if (yych <= 'k') {
  ------------------
  |  Branch (1145:7): [True: 3.22k, False: 11.8k]
  ------------------
 1146|  3.22k|			if (yych <= '`') {
  ------------------
  |  Branch (1146:8): [True: 1.57k, False: 1.64k]
  ------------------
 1147|  1.57k|				if (yych <= 'V') {
  ------------------
  |  Branch (1147:9): [True: 516, False: 1.05k]
  ------------------
 1148|    516|					if (yych <= 'S') goto yy34;
  ------------------
  |  Branch (1148:10): [True: 96, False: 420]
  ------------------
 1149|    420|					if (yych <= 'T') goto yy35;
  ------------------
  |  Branch (1149:10): [True: 307, False: 113]
  ------------------
 1150|    113|					if (yych <= 'U') goto yy22;
  ------------------
  |  Branch (1150:10): [True: 78, False: 35]
  ------------------
 1151|     35|					goto yy36;
 1152|  1.05k|				} else {
 1153|  1.05k|					if (yych <= 'X') {
  ------------------
  |  Branch (1153:10): [True: 156, False: 903]
  ------------------
 1154|    156|						if (yych <= 'W') goto yy37;
  ------------------
  |  Branch (1154:11): [True: 90, False: 66]
  ------------------
 1155|     66|						goto yy38;
 1156|    903|					} else {
 1157|    903|						if (yych <= 'Y') goto yy39;
  ------------------
  |  Branch (1157:11): [True: 25, False: 878]
  ------------------
 1158|    878|						if (yych <= 'Z') goto yy22;
  ------------------
  |  Branch (1158:11): [True: 24, False: 854]
  ------------------
 1159|    854|						goto yy4;
 1160|    878|					}
 1161|  1.05k|				}
 1162|  1.64k|			} else {
 1163|  1.64k|				if (yych <= 'd') {
  ------------------
  |  Branch (1163:9): [True: 655, False: 994]
  ------------------
 1164|    655|					if (yych <= 'a') goto yy40;
  ------------------
  |  Branch (1164:10): [True: 238, False: 417]
  ------------------
 1165|    417|					if (yych <= 'b') goto yy41;
  ------------------
  |  Branch (1165:10): [True: 64, False: 353]
  ------------------
 1166|    353|					if (yych <= 'c') goto yy42;
  ------------------
  |  Branch (1166:10): [True: 164, False: 189]
  ------------------
 1167|    189|					goto yy43;
 1168|    994|				} else {
 1169|    994|					if (yych <= 'f') {
  ------------------
  |  Branch (1169:10): [True: 431, False: 563]
  ------------------
 1170|    431|						if (yych <= 'e') goto yy44;
  ------------------
  |  Branch (1170:11): [True: 326, False: 105]
  ------------------
 1171|    105|						goto yy45;
 1172|    563|					} else {
 1173|    563|						if (yych == 'j') goto yy46;
  ------------------
  |  Branch (1173:11): [True: 132, False: 431]
  ------------------
 1174|    431|						goto yy42;
 1175|    563|					}
 1176|    994|				}
 1177|  1.64k|			}
 1178|  11.8k|		} else {
 1179|  11.8k|			if (yych <= 'v') {
  ------------------
  |  Branch (1179:8): [True: 2.23k, False: 9.59k]
  ------------------
 1180|  2.23k|				if (yych <= 'o') {
  ------------------
  |  Branch (1180:9): [True: 968, False: 1.26k]
  ------------------
 1181|    968|					if (yych <= 'l') goto yy47;
  ------------------
  |  Branch (1181:10): [True: 141, False: 827]
  ------------------
 1182|    827|					if (yych <= 'm') goto yy48;
  ------------------
  |  Branch (1182:10): [True: 160, False: 667]
  ------------------
 1183|    667|					if (yych <= 'n') goto yy49;
  ------------------
  |  Branch (1183:10): [True: 411, False: 256]
  ------------------
 1184|    256|					goto yy50;
 1185|  1.26k|				} else {
 1186|  1.26k|					if (yych <= 'r') {
  ------------------
  |  Branch (1186:10): [True: 407, False: 857]
  ------------------
 1187|    407|						if (yych <= 'p') goto yy51;
  ------------------
  |  Branch (1187:11): [True: 206, False: 201]
  ------------------
 1188|    201|						goto yy42;
 1189|    857|					} else {
 1190|    857|						if (yych <= 's') goto yy52;
  ------------------
  |  Branch (1190:11): [True: 282, False: 575]
  ------------------
 1191|    575|						if (yych <= 't') goto yy53;
  ------------------
  |  Branch (1191:11): [True: 246, False: 329]
  ------------------
 1192|    329|						goto yy42;
 1193|    575|					}
 1194|  1.26k|				}
 1195|  9.59k|			} else {
 1196|  9.59k|				if (yych <= 'z') {
  ------------------
  |  Branch (1196:9): [True: 305, False: 9.28k]
  ------------------
 1197|    305|					if (yych <= 'w') goto yy54;
  ------------------
  |  Branch (1197:10): [True: 93, False: 212]
  ------------------
 1198|    212|					if (yych == 'y') goto yy55;
  ------------------
  |  Branch (1198:10): [True: 104, False: 108]
  ------------------
 1199|    108|					goto yy42;
 1200|  9.28k|				} else {
 1201|  9.28k|					if (yych <= 0xC2) {
  ------------------
  |  Branch (1201:10): [True: 3.27k, False: 6.01k]
  ------------------
 1202|  3.27k|						if (yych <= 0xC1) goto yy4;
  ------------------
  |  Branch (1202:11): [True: 3.03k, False: 239]
  ------------------
 1203|    239|						goto yy56;
 1204|  6.01k|					} else {
 1205|  6.01k|						if (yych == 0xE2) goto yy57;
  ------------------
  |  Branch (1205:11): [True: 109, False: 5.90k]
  ------------------
 1206|  5.90k|						goto yy4;
 1207|  6.01k|					}
 1208|  9.28k|				}
 1209|  9.59k|			}
 1210|  11.8k|		}
 1211|  15.0k|	}
 1212|  5.27k|yy2:
 1213|  5.27k|	YYDEBUG(2, *YYCURSOR);
 1214|  5.27k|	++YYCURSOR;
  ------------------
  |  |   89|  5.27k|#define   YYCURSOR     cursor
  ------------------
 1215|  5.27k|	YYDEBUG(3, *YYCURSOR);
 1216|  5.27k|#line 1994 "ext/date/lib/parse_date.re"
 1217|  5.27k|	{
 1218|  5.27k|		s->pos = cursor; s->line++;
 1219|  5.27k|		goto std;
 1220|  37.7k|	}
 1221|      0|#line 1222 "ext/date/lib/parse_date.c"
 1222|  15.2k|yy4:
 1223|  15.2k|	YYDEBUG(4, *YYCURSOR);
 1224|  15.2k|	++YYCURSOR;
  ------------------
  |  |   89|  15.2k|#define   YYCURSOR     cursor
  ------------------
 1225|  22.9k|yy5:
 1226|  22.9k|	YYDEBUG(5, *YYCURSOR);
 1227|  22.9k|#line 2000 "ext/date/lib/parse_date.re"
 1228|  22.9k|	{
 1229|  22.9k|		add_error(s, TIMELIB_ERR_UNEXPECTED_CHARACTER, "Unexpected character");
  ------------------
  |  |  291|  22.9k|#define TIMELIB_ERR_UNEXPECTED_CHARACTER       0x205
  ------------------
 1230|  22.9k|		goto std;
 1231|  15.2k|	}
 1232|      0|#line 1233 "ext/date/lib/parse_date.c"
 1233|  2.99k|yy6:
 1234|  2.99k|	YYDEBUG(6, *YYCURSOR);
 1235|  2.99k|	yyaccept = 0;
 1236|  2.99k|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|  2.99k|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|  2.99k|#define   YYCURSOR     cursor
  ------------------
 1237|  2.99k|	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   90|  2.99k|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   89|  2.99k|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (1237:6): [True: 0, False: 2.99k]
  ------------------
 1238|  2.99k|	yych = *YYCURSOR;
  ------------------
  |  |   89|  2.99k|#define   YYCURSOR     cursor
  ------------------
 1239|  2.99k|	YYDEBUG(7, *YYCURSOR);
 1240|  2.99k|	if (yybm[0+yych] & 2) {
  ------------------
  |  Branch (1240:6): [True: 1.30k, False: 1.69k]
  ------------------
 1241|  1.30k|		goto yy6;
 1242|  1.30k|	}
 1243|  1.69k|	if (yych <= '/') goto yy8;
  ------------------
  |  Branch (1243:6): [True: 423, False: 1.27k]
  ------------------
 1244|  1.27k|	if (yych <= '9') goto yy58;
  ------------------
  |  Branch (1244:6): [True: 206, False: 1.06k]
  ------------------
 1245|  1.72k|yy8:
 1246|  1.72k|	YYDEBUG(8, *YYCURSOR);
 1247|  1.72k|#line 1989 "ext/date/lib/parse_date.re"
 1248|  1.72k|	{
 1249|  1.72k|		goto std;
 1250|  1.27k|	}
 1251|      0|#line 1252 "ext/date/lib/parse_date.c"
 1252|    309|yy9:
 1253|    309|	YYDEBUG(9, *YYCURSOR);
 1254|    309|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    309|#define   YYCURSOR     cursor
  ------------------
 1255|    309|	if (yych <= '@') goto yy5;
  ------------------
  |  Branch (1255:6): [True: 193, False: 116]
  ------------------
 1256|    116|	if (yych <= 'Z') goto yy42;
  ------------------
  |  Branch (1256:6): [True: 14, False: 102]
  ------------------
 1257|    102|	if (yych <= '`') goto yy5;
  ------------------
  |  Branch (1257:6): [True: 4, False: 98]
  ------------------
 1258|     98|	if (yych <= 'z') goto yy42;
  ------------------
  |  Branch (1258:6): [True: 55, False: 43]
  ------------------
 1259|     43|	goto yy5;
 1260|  1.92k|yy10:
 1261|  1.92k|	YYDEBUG(10, *YYCURSOR);
 1262|  1.92k|	yyaccept = 1;
 1263|  1.92k|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|  1.92k|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|  1.92k|#define   YYCURSOR     cursor
  ------------------
 1264|  1.92k|	if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (1264:6): [True: 680, False: 1.24k]
  ------------------
 1265|    680|		goto yy62;
 1266|    680|	}
 1267|  1.24k|	if (yych <= ' ') {
  ------------------
  |  Branch (1267:6): [True: 115, False: 1.12k]
  ------------------
 1268|    115|		if (yych == '\t') goto yy60;
  ------------------
  |  Branch (1268:7): [True: 20, False: 95]
  ------------------
 1269|     95|		if (yych <= 0x1F) goto yy5;
  ------------------
  |  Branch (1269:7): [True: 74, False: 21]
  ------------------
 1270|     21|		goto yy60;
 1271|  1.12k|	} else {
 1272|  1.12k|		if (yych <= '1') {
  ------------------
  |  Branch (1272:7): [True: 352, False: 776]
  ------------------
 1273|    352|			if (yych <= '/') goto yy5;
  ------------------
  |  Branch (1273:8): [True: 68, False: 284]
  ------------------
 1274|    284|			goto yy64;
 1275|    776|		} else {
 1276|    776|			if (yych <= '2') goto yy65;
  ------------------
  |  Branch (1276:8): [True: 109, False: 667]
  ------------------
 1277|    667|			if (yych <= '9') goto yy66;
  ------------------
  |  Branch (1277:8): [True: 230, False: 437]
  ------------------
 1278|    437|			goto yy5;
 1279|    667|		}
 1280|  1.12k|	}
 1281|    540|yy11:
 1282|    540|	YYDEBUG(11, *YYCURSOR);
 1283|    540|	++YYCURSOR;
  ------------------
  |  |   89|    540|#define   YYCURSOR     cursor
  ------------------
 1284|    540|	YYDEBUG(12, *YYCURSOR);
 1285|    540|#line 1984 "ext/date/lib/parse_date.re"
 1286|    540|	{
 1287|    540|		goto std;
 1288|  1.24k|	}
 1289|      0|#line 1290 "ext/date/lib/parse_date.c"
 1290|  1.71k|yy13:
 1291|  1.71k|	YYDEBUG(13, *YYCURSOR);
 1292|  1.71k|	yyaccept = 1;
 1293|  1.71k|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|  1.71k|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|  1.71k|#define   YYCURSOR     cursor
  ------------------
 1294|  1.71k|	if (yych <= 'a') {
  ------------------
  |  Branch (1294:6): [True: 1.32k, False: 386]
  ------------------
 1295|  1.32k|		if (yych <= '@') {
  ------------------
  |  Branch (1295:7): [True: 1.16k, False: 156]
  ------------------
 1296|  1.16k|			if (yych <= '-') {
  ------------------
  |  Branch (1296:8): [True: 261, False: 907]
  ------------------
 1297|    261|				if (yych <= 0x1F) {
  ------------------
  |  Branch (1297:9): [True: 95, False: 166]
  ------------------
 1298|     95|					if (yych == '\t') goto yy67;
  ------------------
  |  Branch (1298:10): [True: 13, False: 82]
  ------------------
 1299|     82|					goto yy5;
 1300|    166|				} else {
 1301|    166|					if (yych <= ' ') goto yy69;
  ------------------
  |  Branch (1301:10): [True: 26, False: 140]
  ------------------
 1302|    140|					if (yych <= ',') goto yy5;
  ------------------
  |  Branch (1302:10): [True: 76, False: 64]
  ------------------
 1303|     64|					goto yy70;
 1304|    140|				}
 1305|    907|			} else {
 1306|    907|				if (yych <= '0') {
  ------------------
  |  Branch (1306:9): [True: 599, False: 308]
  ------------------
 1307|    599|					if (yych <= '.') goto yy71;
  ------------------
  |  Branch (1307:10): [True: 55, False: 544]
  ------------------
 1308|    544|					if (yych <= '/') goto yy72;
  ------------------
  |  Branch (1308:10): [True: 38, False: 506]
  ------------------
 1309|    506|					goto yy73;
 1310|    544|				} else {
 1311|    308|					if (yych <= '9') goto yy74;
  ------------------
  |  Branch (1311:10): [True: 267, False: 41]
  ------------------
 1312|     41|					if (yych <= ':') goto yy75;
  ------------------
  |  Branch (1312:10): [True: 13, False: 28]
  ------------------
 1313|     28|					goto yy5;
 1314|     41|				}
 1315|    907|			}
 1316|  1.16k|		} else {
 1317|    156|			if (yych <= 'G') {
  ------------------
  |  Branch (1317:8): [True: 53, False: 103]
  ------------------
 1318|     53|				if (yych <= 'D') {
  ------------------
  |  Branch (1318:9): [True: 34, False: 19]
  ------------------
 1319|     34|					if (yych <= 'A') goto yy69;
  ------------------
  |  Branch (1319:10): [True: 14, False: 20]
  ------------------
 1320|     20|					if (yych <= 'C') goto yy5;
  ------------------
  |  Branch (1320:10): [True: 3, False: 17]
  ------------------
 1321|     17|					goto yy69;
 1322|     20|				} else {
 1323|     19|					if (yych == 'F') goto yy69;
  ------------------
  |  Branch (1323:10): [True: 1, False: 18]
  ------------------
 1324|     18|					goto yy5;
 1325|     19|				}
 1326|    103|			} else {
 1327|    103|				if (yych <= 'O') {
  ------------------
  |  Branch (1327:9): [True: 17, False: 86]
  ------------------
 1328|     17|					if (yych <= 'J') goto yy69;
  ------------------
  |  Branch (1328:10): [True: 9, False: 8]
  ------------------
 1329|      8|					if (yych <= 'L') goto yy5;
  ------------------
  |  Branch (1329:10): [True: 1, False: 7]
  ------------------
 1330|      7|					goto yy69;
 1331|     86|				} else {
 1332|     86|					if (yych <= 'R') goto yy5;
  ------------------
  |  Branch (1332:10): [True: 4, False: 82]
  ------------------
 1333|     82|					if (yych <= 'Y') goto yy69;
  ------------------
  |  Branch (1333:10): [True: 59, False: 23]
  ------------------
 1334|     23|					if (yych <= '`') goto yy5;
  ------------------
  |  Branch (1334:10): [True: 12, False: 11]
  ------------------
 1335|     11|					goto yy69;
 1336|     23|				}
 1337|    103|			}
 1338|    156|		}
 1339|  1.32k|	} else {
 1340|    386|		if (yych <= 'q') {
  ------------------
  |  Branch (1340:7): [True: 146, False: 240]
  ------------------
 1341|    146|			if (yych <= 'h') {
  ------------------
  |  Branch (1341:8): [True: 55, False: 91]
  ------------------
 1342|     55|				if (yych <= 'e') {
  ------------------
  |  Branch (1342:9): [True: 27, False: 28]
  ------------------
 1343|     27|					if (yych == 'd') goto yy69;
  ------------------
  |  Branch (1343:10): [True: 16, False: 11]
  ------------------
 1344|     11|					goto yy5;
 1345|     28|				} else {
 1346|     28|					if (yych == 'g') goto yy5;
  ------------------
  |  Branch (1346:10): [True: 20, False: 8]
  ------------------
 1347|      8|					goto yy69;
 1348|     28|				}
 1349|     91|			} else {
 1350|     91|				if (yych <= 'l') {
  ------------------
  |  Branch (1350:9): [True: 22, False: 69]
  ------------------
 1351|     22|					if (yych == 'j') goto yy69;
  ------------------
  |  Branch (1351:10): [True: 3, False: 19]
  ------------------
 1352|     19|					goto yy5;
 1353|     69|				} else {
 1354|     69|					if (yych == 'n') goto yy93;
  ------------------
  |  Branch (1354:10): [True: 10, False: 59]
  ------------------
 1355|     59|					if (yych <= 'o') goto yy69;
  ------------------
  |  Branch (1355:10): [True: 48, False: 11]
  ------------------
 1356|     11|					goto yy5;
 1357|     59|				}
 1358|     91|			}
 1359|    240|		} else {
 1360|    240|			if (yych <= 'w') {
  ------------------
  |  Branch (1360:8): [True: 48, False: 192]
  ------------------
 1361|     48|				if (yych <= 't') {
  ------------------
  |  Branch (1361:9): [True: 36, False: 12]
  ------------------
 1362|     36|					if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (1362:10): [True: 16, False: 20]
  ------------------
 1363|     20|					if (yych <= 's') goto yy95;
  ------------------
  |  Branch (1363:10): [True: 8, False: 12]
  ------------------
 1364|     12|					goto yy96;
 1365|     20|				} else {
 1366|     12|					if (yych == 'v') goto yy5;
  ------------------
  |  Branch (1366:10): [True: 5, False: 7]
  ------------------
 1367|      7|					goto yy69;
 1368|     12|				}
 1369|    192|			} else {
 1370|    192|				if (yych <= 0xC1) {
  ------------------
  |  Branch (1370:9): [True: 60, False: 132]
  ------------------
 1371|     60|					if (yych == 'y') goto yy69;
  ------------------
  |  Branch (1371:10): [True: 4, False: 56]
  ------------------
 1372|     56|					goto yy5;
 1373|    132|				} else {
 1374|    132|					if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (1374:10): [True: 24, False: 108]
  ------------------
 1375|    108|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (1375:10): [True: 9, False: 99]
  ------------------
 1376|     99|					goto yy5;
 1377|    108|				}
 1378|    192|			}
 1379|    240|		}
 1380|    386|	}
 1381|  1.14k|yy14:
 1382|  1.14k|	YYDEBUG(14, *YYCURSOR);
 1383|  1.14k|	yyaccept = 1;
 1384|  1.14k|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|  1.14k|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|  1.14k|#define   YYCURSOR     cursor
  ------------------
 1385|  1.14k|	if (yych <= 'a') {
  ------------------
  |  Branch (1385:6): [True: 948, False: 194]
  ------------------
 1386|    948|		if (yych <= '@') {
  ------------------
  |  Branch (1386:7): [True: 861, False: 87]
  ------------------
 1387|    861|			if (yych <= '-') {
  ------------------
  |  Branch (1387:8): [True: 226, False: 635]
  ------------------
 1388|    226|				if (yych <= 0x1F) {
  ------------------
  |  Branch (1388:9): [True: 92, False: 134]
  ------------------
 1389|     92|					if (yych == '\t') goto yy99;
  ------------------
  |  Branch (1389:10): [True: 4, False: 88]
  ------------------
 1390|     88|					goto yy5;
 1391|    134|				} else {
 1392|    134|					if (yych <= ' ') goto yy101;
  ------------------
  |  Branch (1392:10): [True: 25, False: 109]
  ------------------
 1393|    109|					if (yych <= ',') goto yy5;
  ------------------
  |  Branch (1393:10): [True: 47, False: 62]
  ------------------
 1394|     62|					goto yy70;
 1395|    109|				}
 1396|    635|			} else {
 1397|    635|				if (yych <= '2') {
  ------------------
  |  Branch (1397:9): [True: 408, False: 227]
  ------------------
 1398|    408|					if (yych <= '.') goto yy102;
  ------------------
  |  Branch (1398:10): [True: 32, False: 376]
  ------------------
 1399|    376|					if (yych <= '/') goto yy72;
  ------------------
  |  Branch (1399:10): [True: 30, False: 346]
  ------------------
 1400|    346|					goto yy74;
 1401|    376|				} else {
 1402|    227|					if (yych <= '9') goto yy103;
  ------------------
  |  Branch (1402:10): [True: 188, False: 39]
  ------------------
 1403|     39|					if (yych <= ':') goto yy104;
  ------------------
  |  Branch (1403:10): [True: 25, False: 14]
  ------------------
 1404|     14|					goto yy5;
 1405|     39|				}
 1406|    635|			}
 1407|    861|		} else {
 1408|     87|			if (yych <= 'G') {
  ------------------
  |  Branch (1408:8): [True: 24, False: 63]
  ------------------
 1409|     24|				if (yych <= 'D') {
  ------------------
  |  Branch (1409:9): [True: 17, False: 7]
  ------------------
 1410|     17|					if (yych <= 'A') goto yy101;
  ------------------
  |  Branch (1410:10): [True: 10, False: 7]
  ------------------
 1411|      7|					if (yych <= 'C') goto yy5;
  ------------------
  |  Branch (1411:10): [True: 3, False: 4]
  ------------------
 1412|      4|					goto yy101;
 1413|      7|				} else {
 1414|      7|					if (yych == 'F') goto yy101;
  ------------------
  |  Branch (1414:10): [True: 0, False: 7]
  ------------------
 1415|      7|					goto yy5;
 1416|      7|				}
 1417|     63|			} else {
 1418|     63|				if (yych <= 'P') {
  ------------------
  |  Branch (1418:9): [True: 18, False: 45]
  ------------------
 1419|     18|					if (yych <= 'J') goto yy101;
  ------------------
  |  Branch (1419:10): [True: 5, False: 13]
  ------------------
 1420|     13|					if (yych <= 'L') goto yy5;
  ------------------
  |  Branch (1420:10): [True: 0, False: 13]
  ------------------
 1421|     13|					goto yy101;
 1422|     45|				} else {
 1423|     45|					if (yych <= 'R') goto yy5;
  ------------------
  |  Branch (1423:10): [True: 0, False: 45]
  ------------------
 1424|     45|					if (yych <= 'Y') goto yy101;
  ------------------
  |  Branch (1424:10): [True: 23, False: 22]
  ------------------
 1425|     22|					if (yych <= '`') goto yy5;
  ------------------
  |  Branch (1425:10): [True: 13, False: 9]
  ------------------
 1426|      9|					goto yy101;
 1427|     22|				}
 1428|     63|			}
 1429|     87|		}
 1430|    948|	} else {
 1431|    194|		if (yych <= 'q') {
  ------------------
  |  Branch (1431:7): [True: 64, False: 130]
  ------------------
 1432|     64|			if (yych <= 'h') {
  ------------------
  |  Branch (1432:8): [True: 26, False: 38]
  ------------------
 1433|     26|				if (yych <= 'e') {
  ------------------
  |  Branch (1433:9): [True: 24, False: 2]
  ------------------
 1434|     24|					if (yych == 'd') goto yy101;
  ------------------
  |  Branch (1434:10): [True: 1, False: 23]
  ------------------
 1435|     23|					goto yy5;
 1436|     24|				} else {
 1437|      2|					if (yych == 'g') goto yy5;
  ------------------
  |  Branch (1437:10): [True: 0, False: 2]
  ------------------
 1438|      2|					goto yy101;
 1439|      2|				}
 1440|     38|			} else {
 1441|     38|				if (yych <= 'l') {
  ------------------
  |  Branch (1441:9): [True: 15, False: 23]
  ------------------
 1442|     15|					if (yych == 'j') goto yy101;
  ------------------
  |  Branch (1442:10): [True: 10, False: 5]
  ------------------
 1443|      5|					goto yy5;
 1444|     23|				} else {
 1445|     23|					if (yych == 'n') goto yy93;
  ------------------
  |  Branch (1445:10): [True: 5, False: 18]
  ------------------
 1446|     18|					if (yych <= 'p') goto yy101;
  ------------------
  |  Branch (1446:10): [True: 14, False: 4]
  ------------------
 1447|      4|					goto yy5;
 1448|     18|				}
 1449|     38|			}
 1450|    130|		} else {
 1451|    130|			if (yych <= 'w') {
  ------------------
  |  Branch (1451:8): [True: 22, False: 108]
  ------------------
 1452|     22|				if (yych <= 't') {
  ------------------
  |  Branch (1452:9): [True: 14, False: 8]
  ------------------
 1453|     14|					if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (1453:10): [True: 3, False: 11]
  ------------------
 1454|     11|					if (yych <= 's') goto yy95;
  ------------------
  |  Branch (1454:10): [True: 9, False: 2]
  ------------------
 1455|      2|					goto yy96;
 1456|     11|				} else {
 1457|      8|					if (yych == 'v') goto yy5;
  ------------------
  |  Branch (1457:10): [True: 5, False: 3]
  ------------------
 1458|      3|					goto yy101;
 1459|      8|				}
 1460|    108|			} else {
 1461|    108|				if (yych <= 0xC1) {
  ------------------
  |  Branch (1461:9): [True: 30, False: 78]
  ------------------
 1462|     30|					if (yych == 'y') goto yy101;
  ------------------
  |  Branch (1462:10): [True: 2, False: 28]
  ------------------
 1463|     28|					goto yy5;
 1464|     78|				} else {
 1465|     78|					if (yych <= 0xC2) goto yy107;
  ------------------
  |  Branch (1465:10): [True: 10, False: 68]
  ------------------
 1466|     68|					if (yych == 0xE2) goto yy108;
  ------------------
  |  Branch (1466:10): [True: 0, False: 68]
  ------------------
 1467|     68|					goto yy5;
 1468|     68|				}
 1469|    108|			}
 1470|    130|		}
 1471|    194|	}
 1472|    999|yy15:
 1473|    999|	YYDEBUG(15, *YYCURSOR);
 1474|    999|	yyaccept = 1;
 1475|    999|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    999|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    999|#define   YYCURSOR     cursor
  ------------------
 1476|    999|	if (yych <= 'a') {
  ------------------
  |  Branch (1476:6): [True: 792, False: 207]
  ------------------
 1477|    792|		if (yych <= '@') {
  ------------------
  |  Branch (1477:7): [True: 702, False: 90]
  ------------------
 1478|    702|			if (yych <= '-') {
  ------------------
  |  Branch (1478:8): [True: 184, False: 518]
  ------------------
 1479|    184|				if (yych <= 0x1F) {
  ------------------
  |  Branch (1479:9): [True: 72, False: 112]
  ------------------
 1480|     72|					if (yych == '\t') goto yy99;
  ------------------
  |  Branch (1480:10): [True: 12, False: 60]
  ------------------
 1481|     60|					goto yy5;
 1482|    112|				} else {
 1483|    112|					if (yych <= ' ') goto yy101;
  ------------------
  |  Branch (1483:10): [True: 12, False: 100]
  ------------------
 1484|    100|					if (yych <= ',') goto yy5;
  ------------------
  |  Branch (1484:10): [True: 53, False: 47]
  ------------------
 1485|     47|					goto yy70;
 1486|    100|				}
 1487|    518|			} else {
 1488|    518|				if (yych <= '4') {
  ------------------
  |  Branch (1488:9): [True: 391, False: 127]
  ------------------
 1489|    391|					if (yych <= '.') goto yy102;
  ------------------
  |  Branch (1489:10): [True: 52, False: 339]
  ------------------
 1490|    339|					if (yych <= '/') goto yy72;
  ------------------
  |  Branch (1490:10): [True: 39, False: 300]
  ------------------
 1491|    300|					goto yy103;
 1492|    339|				} else {
 1493|    127|					if (yych <= '9') goto yy109;
  ------------------
  |  Branch (1493:10): [True: 101, False: 26]
  ------------------
 1494|     26|					if (yych <= ':') goto yy104;
  ------------------
  |  Branch (1494:10): [True: 2, False: 24]
  ------------------
 1495|     24|					goto yy5;
 1496|     26|				}
 1497|    518|			}
 1498|    702|		} else {
 1499|     90|			if (yych <= 'G') {
  ------------------
  |  Branch (1499:8): [True: 52, False: 38]
  ------------------
 1500|     52|				if (yych <= 'D') {
  ------------------
  |  Branch (1500:9): [True: 34, False: 18]
  ------------------
 1501|     34|					if (yych <= 'A') goto yy101;
  ------------------
  |  Branch (1501:10): [True: 13, False: 21]
  ------------------
 1502|     21|					if (yych <= 'C') goto yy5;
  ------------------
  |  Branch (1502:10): [True: 18, False: 3]
  ------------------
 1503|      3|					goto yy101;
 1504|     21|				} else {
 1505|     18|					if (yych == 'F') goto yy101;
  ------------------
  |  Branch (1505:10): [True: 7, False: 11]
  ------------------
 1506|     11|					goto yy5;
 1507|     18|				}
 1508|     52|			} else {
 1509|     38|				if (yych <= 'P') {
  ------------------
  |  Branch (1509:9): [True: 16, False: 22]
  ------------------
 1510|     16|					if (yych <= 'J') goto yy101;
  ------------------
  |  Branch (1510:10): [True: 8, False: 8]
  ------------------
 1511|      8|					if (yych <= 'L') goto yy5;
  ------------------
  |  Branch (1511:10): [True: 0, False: 8]
  ------------------
 1512|      8|					goto yy101;
 1513|     22|				} else {
 1514|     22|					if (yych <= 'R') goto yy5;
  ------------------
  |  Branch (1514:10): [True: 1, False: 21]
  ------------------
 1515|     21|					if (yych <= 'Y') goto yy101;
  ------------------
  |  Branch (1515:10): [True: 3, False: 18]
  ------------------
 1516|     18|					if (yych <= '`') goto yy5;
  ------------------
  |  Branch (1516:10): [True: 13, False: 5]
  ------------------
 1517|      5|					goto yy101;
 1518|     18|				}
 1519|     38|			}
 1520|     90|		}
 1521|    792|	} else {
 1522|    207|		if (yych <= 'q') {
  ------------------
  |  Branch (1522:7): [True: 44, False: 163]
  ------------------
 1523|     44|			if (yych <= 'h') {
  ------------------
  |  Branch (1523:8): [True: 10, False: 34]
  ------------------
 1524|     10|				if (yych <= 'e') {
  ------------------
  |  Branch (1524:9): [True: 9, False: 1]
  ------------------
 1525|      9|					if (yych == 'd') goto yy101;
  ------------------
  |  Branch (1525:10): [True: 1, False: 8]
  ------------------
 1526|      8|					goto yy5;
 1527|      9|				} else {
 1528|      1|					if (yych == 'g') goto yy5;
  ------------------
  |  Branch (1528:10): [True: 0, False: 1]
  ------------------
 1529|      1|					goto yy101;
 1530|      1|				}
 1531|     34|			} else {
 1532|     34|				if (yych <= 'l') {
  ------------------
  |  Branch (1532:9): [True: 17, False: 17]
  ------------------
 1533|     17|					if (yych == 'j') goto yy101;
  ------------------
  |  Branch (1533:10): [True: 7, False: 10]
  ------------------
 1534|     10|					goto yy5;
 1535|     17|				} else {
 1536|     17|					if (yych == 'n') goto yy93;
  ------------------
  |  Branch (1536:10): [True: 14, False: 3]
  ------------------
 1537|      3|					if (yych <= 'p') goto yy101;
  ------------------
  |  Branch (1537:10): [True: 2, False: 1]
  ------------------
 1538|      1|					goto yy5;
 1539|      3|				}
 1540|     34|			}
 1541|    163|		} else {
 1542|    163|			if (yych <= 'w') {
  ------------------
  |  Branch (1542:8): [True: 40, False: 123]
  ------------------
 1543|     40|				if (yych <= 't') {
  ------------------
  |  Branch (1543:9): [True: 25, False: 15]
  ------------------
 1544|     25|					if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (1544:10): [True: 11, False: 14]
  ------------------
 1545|     14|					if (yych <= 's') goto yy95;
  ------------------
  |  Branch (1545:10): [True: 9, False: 5]
  ------------------
 1546|      5|					goto yy96;
 1547|     15|				} else {
 1548|     15|					if (yych == 'v') goto yy5;
  ------------------
  |  Branch (1548:10): [True: 8, False: 7]
  ------------------
 1549|      7|					goto yy101;
 1550|     15|				}
 1551|    123|			} else {
 1552|    123|				if (yych <= 0xC1) {
  ------------------
  |  Branch (1552:9): [True: 56, False: 67]
  ------------------
 1553|     56|					if (yych == 'y') goto yy101;
  ------------------
  |  Branch (1553:10): [True: 1, False: 55]
  ------------------
 1554|     55|					goto yy5;
 1555|     67|				} else {
 1556|     67|					if (yych <= 0xC2) goto yy107;
  ------------------
  |  Branch (1556:10): [True: 13, False: 54]
  ------------------
 1557|     54|					if (yych == 0xE2) goto yy108;
  ------------------
  |  Branch (1557:10): [True: 2, False: 52]
  ------------------
 1558|     52|					goto yy5;
 1559|     54|				}
 1560|    123|			}
 1561|    163|		}
 1562|    207|	}
 1563|    544|yy16:
 1564|    544|	YYDEBUG(16, *YYCURSOR);
 1565|    544|	yyaccept = 1;
 1566|    544|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    544|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    544|#define   YYCURSOR     cursor
  ------------------
 1567|    544|	if (yych <= 'a') {
  ------------------
  |  Branch (1567:6): [True: 443, False: 101]
  ------------------
 1568|    443|		if (yych <= '@') {
  ------------------
  |  Branch (1568:7): [True: 375, False: 68]
  ------------------
 1569|    375|			if (yych <= '-') {
  ------------------
  |  Branch (1569:8): [True: 78, False: 297]
  ------------------
 1570|     78|				if (yych <= 0x1F) {
  ------------------
  |  Branch (1570:9): [True: 34, False: 44]
  ------------------
 1571|     34|					if (yych == '\t') goto yy99;
  ------------------
  |  Branch (1571:10): [True: 0, False: 34]
  ------------------
 1572|     34|					goto yy5;
 1573|     44|				} else {
 1574|     44|					if (yych <= ' ') goto yy101;
  ------------------
  |  Branch (1574:10): [True: 9, False: 35]
  ------------------
 1575|     35|					if (yych <= ',') goto yy5;
  ------------------
  |  Branch (1575:10): [True: 26, False: 9]
  ------------------
 1576|      9|					goto yy70;
 1577|     35|				}
 1578|    297|			} else {
 1579|    297|				if (yych <= '1') {
  ------------------
  |  Branch (1579:9): [True: 89, False: 208]
  ------------------
 1580|     89|					if (yych <= '.') goto yy102;
  ------------------
  |  Branch (1580:10): [True: 29, False: 60]
  ------------------
 1581|     60|					if (yych <= '/') goto yy72;
  ------------------
  |  Branch (1581:10): [True: 20, False: 40]
  ------------------
 1582|     40|					goto yy109;
 1583|    208|				} else {
 1584|    208|					if (yych <= '9') goto yy110;
  ------------------
  |  Branch (1584:10): [True: 172, False: 36]
  ------------------
 1585|     36|					if (yych <= ':') goto yy104;
  ------------------
  |  Branch (1585:10): [True: 0, False: 36]
  ------------------
 1586|     36|					goto yy5;
 1587|     36|				}
 1588|    297|			}
 1589|    375|		} else {
 1590|     68|			if (yych <= 'G') {
  ------------------
  |  Branch (1590:8): [True: 16, False: 52]
  ------------------
 1591|     16|				if (yych <= 'D') {
  ------------------
  |  Branch (1591:9): [True: 10, False: 6]
  ------------------
 1592|     10|					if (yych <= 'A') goto yy101;
  ------------------
  |  Branch (1592:10): [True: 10, False: 0]
  ------------------
 1593|      0|					if (yych <= 'C') goto yy5;
  ------------------
  |  Branch (1593:10): [True: 0, False: 0]
  ------------------
 1594|      0|					goto yy101;
 1595|      6|				} else {
 1596|      6|					if (yych == 'F') goto yy101;
  ------------------
  |  Branch (1596:10): [True: 6, False: 0]
  ------------------
 1597|      0|					goto yy5;
 1598|      6|				}
 1599|     52|			} else {
 1600|     52|				if (yych <= 'P') {
  ------------------
  |  Branch (1600:9): [True: 13, False: 39]
  ------------------
 1601|     13|					if (yych <= 'J') goto yy101;
  ------------------
  |  Branch (1601:10): [True: 2, False: 11]
  ------------------
 1602|     11|					if (yych <= 'L') goto yy5;
  ------------------
  |  Branch (1602:10): [True: 2, False: 9]
  ------------------
 1603|      9|					goto yy101;
 1604|     39|				} else {
 1605|     39|					if (yych <= 'R') goto yy5;
  ------------------
  |  Branch (1605:10): [True: 0, False: 39]
  ------------------
 1606|     39|					if (yych <= 'Y') goto yy101;
  ------------------
  |  Branch (1606:10): [True: 24, False: 15]
  ------------------
 1607|     15|					if (yych <= '`') goto yy5;
  ------------------
  |  Branch (1607:10): [True: 8, False: 7]
  ------------------
 1608|      7|					goto yy101;
 1609|     15|				}
 1610|     52|			}
 1611|     68|		}
 1612|    443|	} else {
 1613|    101|		if (yych <= 'q') {
  ------------------
  |  Branch (1613:7): [True: 25, False: 76]
  ------------------
 1614|     25|			if (yych <= 'h') {
  ------------------
  |  Branch (1614:8): [True: 8, False: 17]
  ------------------
 1615|      8|				if (yych <= 'e') {
  ------------------
  |  Branch (1615:9): [True: 5, False: 3]
  ------------------
 1616|      5|					if (yych == 'd') goto yy101;
  ------------------
  |  Branch (1616:10): [True: 1, False: 4]
  ------------------
 1617|      4|					goto yy5;
 1618|      5|				} else {
 1619|      3|					if (yych == 'g') goto yy5;
  ------------------
  |  Branch (1619:10): [True: 0, False: 3]
  ------------------
 1620|      3|					goto yy101;
 1621|      3|				}
 1622|     17|			} else {
 1623|     17|				if (yych <= 'l') {
  ------------------
  |  Branch (1623:9): [True: 7, False: 10]
  ------------------
 1624|      7|					if (yych == 'j') goto yy101;
  ------------------
  |  Branch (1624:10): [True: 0, False: 7]
  ------------------
 1625|      7|					goto yy5;
 1626|     10|				} else {
 1627|     10|					if (yych == 'n') goto yy93;
  ------------------
  |  Branch (1627:10): [True: 2, False: 8]
  ------------------
 1628|      8|					if (yych <= 'p') goto yy101;
  ------------------
  |  Branch (1628:10): [True: 7, False: 1]
  ------------------
 1629|      1|					goto yy5;
 1630|      8|				}
 1631|     17|			}
 1632|     76|		} else {
 1633|     76|			if (yych <= 'w') {
  ------------------
  |  Branch (1633:8): [True: 23, False: 53]
  ------------------
 1634|     23|				if (yych <= 't') {
  ------------------
  |  Branch (1634:9): [True: 13, False: 10]
  ------------------
 1635|     13|					if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (1635:10): [True: 3, False: 10]
  ------------------
 1636|     10|					if (yych <= 's') goto yy95;
  ------------------
  |  Branch (1636:10): [True: 3, False: 7]
  ------------------
 1637|      7|					goto yy96;
 1638|     10|				} else {
 1639|     10|					if (yych == 'v') goto yy5;
  ------------------
  |  Branch (1639:10): [True: 7, False: 3]
  ------------------
 1640|      3|					goto yy101;
 1641|     10|				}
 1642|     53|			} else {
 1643|     53|				if (yych <= 0xC1) {
  ------------------
  |  Branch (1643:9): [True: 20, False: 33]
  ------------------
 1644|     20|					if (yych == 'y') goto yy101;
  ------------------
  |  Branch (1644:10): [True: 0, False: 20]
  ------------------
 1645|     20|					goto yy5;
 1646|     33|				} else {
 1647|     33|					if (yych <= 0xC2) goto yy107;
  ------------------
  |  Branch (1647:10): [True: 4, False: 29]
  ------------------
 1648|     29|					if (yych == 0xE2) goto yy108;
  ------------------
  |  Branch (1648:10): [True: 0, False: 29]
  ------------------
 1649|     29|					goto yy5;
 1650|     29|				}
 1651|     53|			}
 1652|     76|		}
 1653|    101|	}
 1654|  2.79k|yy17:
 1655|  2.79k|	YYDEBUG(17, *YYCURSOR);
 1656|  2.79k|	yyaccept = 1;
 1657|  2.79k|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|  2.79k|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|  2.79k|#define   YYCURSOR     cursor
  ------------------
 1658|  2.79k|	if (yych <= 'c') {
  ------------------
  |  Branch (1658:6): [True: 2.32k, False: 478]
  ------------------
 1659|  2.32k|		if (yych <= 'A') {
  ------------------
  |  Branch (1659:7): [True: 2.09k, False: 224]
  ------------------
 1660|  2.09k|			if (yych <= '-') {
  ------------------
  |  Branch (1660:8): [True: 485, False: 1.61k]
  ------------------
 1661|    485|				if (yych <= 0x1F) {
  ------------------
  |  Branch (1661:9): [True: 184, False: 301]
  ------------------
 1662|    184|					if (yych == '\t') goto yy99;
  ------------------
  |  Branch (1662:10): [True: 15, False: 169]
  ------------------
 1663|    169|					goto yy5;
 1664|    301|				} else {
 1665|    301|					if (yych <= ' ') goto yy101;
  ------------------
  |  Branch (1665:10): [True: 27, False: 274]
  ------------------
 1666|    274|					if (yych <= ',') goto yy5;
  ------------------
  |  Branch (1666:10): [True: 151, False: 123]
  ------------------
 1667|    123|					goto yy70;
 1668|    274|				}
 1669|  1.61k|			} else {
 1670|  1.61k|				if (yych <= '9') {
  ------------------
  |  Branch (1670:9): [True: 1.53k, False: 75]
  ------------------
 1671|  1.53k|					if (yych <= '.') goto yy102;
  ------------------
  |  Branch (1671:10): [True: 83, False: 1.45k]
  ------------------
 1672|  1.45k|					if (yych <= '/') goto yy72;
  ------------------
  |  Branch (1672:10): [True: 32, False: 1.42k]
  ------------------
 1673|  1.42k|					goto yy110;
 1674|  1.45k|				} else {
 1675|     75|					if (yych <= ':') goto yy104;
  ------------------
  |  Branch (1675:10): [True: 18, False: 57]
  ------------------
 1676|     57|					if (yych <= '@') goto yy5;
  ------------------
  |  Branch (1676:10): [True: 53, False: 4]
  ------------------
 1677|      4|					goto yy101;
 1678|     57|				}
 1679|  1.61k|			}
 1680|  2.09k|		} else {
 1681|    224|			if (yych <= 'J') {
  ------------------
  |  Branch (1681:8): [True: 79, False: 145]
  ------------------
 1682|     79|				if (yych <= 'E') {
  ------------------
  |  Branch (1682:9): [True: 35, False: 44]
  ------------------
 1683|     35|					if (yych == 'D') goto yy101;
  ------------------
  |  Branch (1683:10): [True: 14, False: 21]
  ------------------
 1684|     21|					goto yy5;
 1685|     44|				} else {
 1686|     44|					if (yych == 'G') goto yy5;
  ------------------
  |  Branch (1686:10): [True: 7, False: 37]
  ------------------
 1687|     37|					goto yy101;
 1688|     44|				}
 1689|    145|			} else {
 1690|    145|				if (yych <= 'R') {
  ------------------
  |  Branch (1690:9): [True: 42, False: 103]
  ------------------
 1691|     42|					if (yych <= 'L') goto yy5;
  ------------------
  |  Branch (1691:10): [True: 10, False: 32]
  ------------------
 1692|     32|					if (yych <= 'P') goto yy101;
  ------------------
  |  Branch (1692:10): [True: 31, False: 1]
  ------------------
 1693|      1|					goto yy5;
 1694|    103|				} else {
 1695|    103|					if (yych <= 'Y') goto yy101;
  ------------------
  |  Branch (1695:10): [True: 49, False: 54]
  ------------------
 1696|     54|					if (yych == 'a') goto yy101;
  ------------------
  |  Branch (1696:10): [True: 14, False: 40]
  ------------------
 1697|     40|					goto yy5;
 1698|     54|				}
 1699|    145|			}
 1700|    224|		}
 1701|  2.32k|	} else {
 1702|    478|		if (yych <= 'q') {
  ------------------
  |  Branch (1702:7): [True: 107, False: 371]
  ------------------
 1703|    107|			if (yych <= 'i') {
  ------------------
  |  Branch (1703:8): [True: 36, False: 71]
  ------------------
 1704|     36|				if (yych <= 'f') {
  ------------------
  |  Branch (1704:9): [True: 24, False: 12]
  ------------------
 1705|     24|					if (yych == 'e') goto yy5;
  ------------------
  |  Branch (1705:10): [True: 18, False: 6]
  ------------------
 1706|      6|					goto yy101;
 1707|     24|				} else {
 1708|     12|					if (yych == 'h') goto yy101;
  ------------------
  |  Branch (1708:10): [True: 4, False: 8]
  ------------------
 1709|      8|					goto yy5;
 1710|     12|				}
 1711|     71|			} else {
 1712|     71|				if (yych <= 'm') {
  ------------------
  |  Branch (1712:9): [True: 23, False: 48]
  ------------------
 1713|     23|					if (yych <= 'j') goto yy101;
  ------------------
  |  Branch (1713:10): [True: 4, False: 19]
  ------------------
 1714|     19|					if (yych <= 'l') goto yy5;
  ------------------
  |  Branch (1714:10): [True: 5, False: 14]
  ------------------
 1715|     14|					goto yy101;
 1716|     48|				} else {
 1717|     48|					if (yych <= 'n') goto yy93;
  ------------------
  |  Branch (1717:10): [True: 18, False: 30]
  ------------------
 1718|     30|					if (yych <= 'p') goto yy101;
  ------------------
  |  Branch (1718:10): [True: 26, False: 4]
  ------------------
 1719|      4|					goto yy5;
 1720|     30|				}
 1721|     71|			}
 1722|    371|		} else {
 1723|    371|			if (yych <= 'w') {
  ------------------
  |  Branch (1723:8): [True: 73, False: 298]
  ------------------
 1724|     73|				if (yych <= 't') {
  ------------------
  |  Branch (1724:9): [True: 39, False: 34]
  ------------------
 1725|     39|					if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (1725:10): [True: 4, False: 35]
  ------------------
 1726|     35|					if (yych <= 's') goto yy95;
  ------------------
  |  Branch (1726:10): [True: 28, False: 7]
  ------------------
 1727|      7|					goto yy96;
 1728|     35|				} else {
 1729|     34|					if (yych == 'v') goto yy5;
  ------------------
  |  Branch (1729:10): [True: 14, False: 20]
  ------------------
 1730|     20|					goto yy101;
 1731|     34|				}
 1732|    298|			} else {
 1733|    298|				if (yych <= 0xC1) {
  ------------------
  |  Branch (1733:9): [True: 116, False: 182]
  ------------------
 1734|    116|					if (yych == 'y') goto yy101;
  ------------------
  |  Branch (1734:10): [True: 9, False: 107]
  ------------------
 1735|    107|					goto yy5;
 1736|    182|				} else {
 1737|    182|					if (yych <= 0xC2) goto yy107;
  ------------------
  |  Branch (1737:10): [True: 26, False: 156]
  ------------------
 1738|    156|					if (yych == 0xE2) goto yy108;
  ------------------
  |  Branch (1738:10): [True: 3, False: 153]
  ------------------
 1739|    153|					goto yy5;
 1740|    156|				}
 1741|    298|			}
 1742|    371|		}
 1743|    478|	}
 1744|    277|yy18:
 1745|    277|	YYDEBUG(18, *YYCURSOR);
 1746|    277|	yyaccept = 1;
 1747|    277|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    277|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    277|#define   YYCURSOR     cursor
  ------------------
 1748|    277|	if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (1748:6): [True: 60, False: 217]
  ------------------
 1749|     60|		goto yy112;
 1750|     60|	}
 1751|    217|	if (yych == '-') goto yy111;
  ------------------
  |  Branch (1751:6): [True: 25, False: 192]
  ------------------
 1752|    192|	goto yy5;
 1753|    257|yy19:
 1754|    257|	YYDEBUG(19, *YYCURSOR);
 1755|    257|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    257|#define   YYCURSOR     cursor
  ------------------
 1756|    257|	if (yych <= 'U') {
  ------------------
  |  Branch (1756:6): [True: 114, False: 143]
  ------------------
 1757|    114|		if (yych <= 'F') {
  ------------------
  |  Branch (1757:7): [True: 100, False: 14]
  ------------------
 1758|    100|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (1758:8): [True: 2, False: 98]
  ------------------
 1759|     98|			if (yych >= 'A') goto yy116;
  ------------------
  |  Branch (1759:8): [True: 15, False: 83]
  ------------------
 1760|     98|		} else {
 1761|     14|			if (yych <= 'O') {
  ------------------
  |  Branch (1761:8): [True: 6, False: 8]
  ------------------
 1762|      6|				if (yych <= 'G') goto yy117;
  ------------------
  |  Branch (1762:9): [True: 3, False: 3]
  ------------------
 1763|      3|				goto yy116;
 1764|      8|			} else {
 1765|      8|				if (yych <= 'P') goto yy118;
  ------------------
  |  Branch (1765:9): [True: 1, False: 7]
  ------------------
 1766|      7|				if (yych <= 'T') goto yy116;
  ------------------
  |  Branch (1766:9): [True: 6, False: 1]
  ------------------
 1767|      1|				goto yy119;
 1768|      7|			}
 1769|     14|		}
 1770|    143|	} else {
 1771|    143|		if (yych <= 'o') {
  ------------------
  |  Branch (1771:7): [True: 43, False: 100]
  ------------------
 1772|     43|			if (yych <= '`') {
  ------------------
  |  Branch (1772:8): [True: 1, False: 42]
  ------------------
 1773|      1|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (1773:9): [True: 1, False: 0]
  ------------------
 1774|     42|			} else {
 1775|     42|				if (yych == 'g') goto yy121;
  ------------------
  |  Branch (1775:9): [True: 1, False: 41]
  ------------------
 1776|     41|				goto yy120;
 1777|     42|			}
 1778|    100|		} else {
 1779|    100|			if (yych <= 't') {
  ------------------
  |  Branch (1779:8): [True: 72, False: 28]
  ------------------
 1780|     72|				if (yych <= 'p') goto yy122;
  ------------------
  |  Branch (1780:9): [True: 67, False: 5]
  ------------------
 1781|      5|				goto yy120;
 1782|     72|			} else {
 1783|     28|				if (yych <= 'u') goto yy123;
  ------------------
  |  Branch (1783:9): [True: 8, False: 20]
  ------------------
 1784|     20|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1784:9): [True: 2, False: 18]
  ------------------
 1785|     20|			}
 1786|    100|		}
 1787|    143|	}
 1788|  7.03k|yy20:
 1789|  7.03k|	YYDEBUG(20, *YYCURSOR);
 1790|  7.03k|#line 1899 "ext/date/lib/parse_date.re"
 1791|  7.03k|	{
 1792|  7.03k|		int tz_not_found;
 1793|  7.03k|		DEBUG_OUTPUT("tzcorrection | tz");
 1794|  7.03k|		TIMELIB_INIT;
  ------------------
  |  |  107|  7.03k|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 1795|  7.03k|		TIMELIB_HAVE_TZ();
  ------------------
  |  |  105|  7.03k|#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |  287|  5.92k|#define TIMELIB_ERR_DOUBLE_TZ                  0x201
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |  282|    565|#define TIMELIB_WARN_DOUBLE_TZ                 0x101
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |   96|  6.48k|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|  6.48k|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|  6.48k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|  6.48k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|  6.48k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|  6.48k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|  6.48k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |   80|  6.48k|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (105:50): [True: 6.48k, False: 548]
  |  |  |  Branch (105:72): [True: 5.92k, False: 565]
  |  |  ------------------
  ------------------
 1796|    548|		timelib_eat_spaces(&ptr);
 1797|    548|		s->time->z = timelib_parse_zone(&ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
 1798|    548|		if (tz_not_found) {
  ------------------
  |  Branch (1798:7): [True: 258, False: 290]
  ------------------
 1799|    258|			add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
  ------------------
  |  |  288|    258|#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
  ------------------
 1800|    258|		}
 1801|    548|		TIMELIB_DEINIT;
  ------------------
  |  |  108|    548|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|    548|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    548|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|    548|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|    548|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|    548|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|    548|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|    548|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1802|    548|		return TIMELIB_TIMEZONE;
  ------------------
  |  |   75|    548|#define TIMELIB_TIMEZONE       300
  ------------------
 1803|  7.03k|	}
 1804|      0|#line 1805 "ext/date/lib/parse_date.c"
 1805|    104|yy21:
 1806|    104|	YYDEBUG(21, *YYCURSOR);
 1807|    104|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    104|#define   YYCURSOR     cursor
  ------------------
 1808|    104|	if (yych <= 'A') {
  ------------------
  |  Branch (1808:6): [True: 68, False: 36]
  ------------------
 1809|     68|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (1809:7): [True: 0, False: 68]
  ------------------
 1810|     68|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (1810:7): [True: 67, False: 1]
  ------------------
 1811|      1|		goto yy124;
 1812|     68|	} else {
 1813|     36|		if (yych <= '`') {
  ------------------
  |  Branch (1813:7): [True: 12, False: 24]
  ------------------
 1814|     12|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (1814:8): [True: 12, False: 0]
  ------------------
 1815|      0|			goto yy20;
 1816|     24|		} else {
 1817|     24|			if (yych <= 'a') goto yy125;
  ------------------
  |  Branch (1817:8): [True: 6, False: 18]
  ------------------
 1818|     18|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1818:8): [True: 7, False: 11]
  ------------------
 1819|     11|			goto yy20;
 1820|     18|		}
 1821|     36|	}
 1822|    271|yy22:
 1823|    271|	YYDEBUG(22, *YYCURSOR);
 1824|    271|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    271|#define   YYCURSOR     cursor
  ------------------
 1825|    271|	if (yych <= '@') {
  ------------------
  |  Branch (1825:6): [True: 117, False: 154]
  ------------------
 1826|    117|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (1826:7): [True: 1, False: 116]
  ------------------
 1827|    116|		goto yy20;
 1828|    154|	} else {
 1829|    154|		if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (1829:7): [True: 85, False: 69]
  ------------------
 1830|     69|		if (yych <= '`') goto yy20;
  ------------------
  |  Branch (1830:7): [True: 6, False: 63]
  ------------------
 1831|     63|		if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1831:7): [True: 45, False: 18]
  ------------------
 1832|     18|		goto yy20;
 1833|     63|	}
 1834|    157|yy23:
 1835|    157|	YYDEBUG(23, *YYCURSOR);
 1836|    157|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    157|#define   YYCURSOR     cursor
  ------------------
 1837|    157|	if (yych <= 'E') {
  ------------------
  |  Branch (1837:6): [True: 56, False: 101]
  ------------------
 1838|     56|		if (yych <= ')') {
  ------------------
  |  Branch (1838:7): [True: 23, False: 33]
  ------------------
 1839|     23|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (1839:8): [True: 18, False: 5]
  ------------------
 1840|      5|			goto yy115;
 1841|     33|		} else {
 1842|     33|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (1842:8): [True: 24, False: 9]
  ------------------
 1843|      9|			if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (1843:8): [True: 8, False: 1]
  ------------------
 1844|      1|			goto yy126;
 1845|      9|		}
 1846|    101|	} else {
 1847|    101|		if (yych <= 'd') {
  ------------------
  |  Branch (1847:7): [True: 45, False: 56]
  ------------------
 1848|     45|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (1848:8): [True: 11, False: 34]
  ------------------
 1849|     34|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (1849:8): [True: 5, False: 29]
  ------------------
 1850|     29|			goto yy120;
 1851|     56|		} else {
 1852|     56|			if (yych <= 'e') goto yy127;
  ------------------
  |  Branch (1852:8): [True: 34, False: 22]
  ------------------
 1853|     22|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1853:8): [True: 16, False: 6]
  ------------------
 1854|      6|			goto yy20;
 1855|     22|		}
 1856|    101|	}
 1857|    125|yy24:
 1858|    125|	YYDEBUG(24, *YYCURSOR);
 1859|    125|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    125|#define   YYCURSOR     cursor
  ------------------
 1860|    125|	if (yych <= 'L') {
  ------------------
  |  Branch (1860:6): [True: 48, False: 77]
  ------------------
 1861|     48|		if (yych <= '@') {
  ------------------
  |  Branch (1861:7): [True: 22, False: 26]
  ------------------
 1862|     22|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (1862:8): [True: 0, False: 22]
  ------------------
 1863|     22|			goto yy20;
 1864|     26|		} else {
 1865|     26|			if (yych == 'I') goto yy128;
  ------------------
  |  Branch (1865:8): [True: 1, False: 25]
  ------------------
 1866|     25|			if (yych <= 'K') goto yy116;
  ------------------
  |  Branch (1866:8): [True: 23, False: 2]
  ------------------
 1867|      2|			goto yy129;
 1868|     25|		}
 1869|     77|	} else {
 1870|     77|		if (yych <= 'i') {
  ------------------
  |  Branch (1870:7): [True: 31, False: 46]
  ------------------
 1871|     31|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (1871:8): [True: 13, False: 18]
  ------------------
 1872|     18|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (1872:8): [True: 1, False: 17]
  ------------------
 1873|     17|			if (yych <= 'h') goto yy120;
  ------------------
  |  Branch (1873:8): [True: 8, False: 9]
  ------------------
 1874|      9|			goto yy130;
 1875|     46|		} else {
 1876|     46|			if (yych == 'l') goto yy131;
  ------------------
  |  Branch (1876:8): [True: 38, False: 8]
  ------------------
 1877|      8|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1877:8): [True: 5, False: 3]
  ------------------
 1878|      3|			goto yy20;
 1879|      8|		}
 1880|     77|	}
 1881|    140|yy25:
 1882|    140|	YYDEBUG(25, *YYCURSOR);
 1883|    140|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    140|#define   YYCURSOR     cursor
  ------------------
 1884|    140|	if (yych <= 'R') {
  ------------------
  |  Branch (1884:6): [True: 36, False: 104]
  ------------------
 1885|     36|		if (yych <= 'E') {
  ------------------
  |  Branch (1885:7): [True: 27, False: 9]
  ------------------
 1886|     27|			if (yych <= ')') {
  ------------------
  |  Branch (1886:8): [True: 7, False: 20]
  ------------------
 1887|      7|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (1887:9): [True: 7, False: 0]
  ------------------
 1888|      0|				goto yy115;
 1889|     20|			} else {
 1890|     20|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (1890:9): [True: 19, False: 1]
  ------------------
 1891|      1|				if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (1891:9): [True: 1, False: 0]
  ------------------
 1892|      0|				goto yy132;
 1893|      1|			}
 1894|     27|		} else {
 1895|      9|			if (yych <= 'N') {
  ------------------
  |  Branch (1895:8): [True: 3, False: 6]
  ------------------
 1896|      3|				if (yych == 'I') goto yy133;
  ------------------
  |  Branch (1896:9): [True: 1, False: 2]
  ------------------
 1897|      2|				goto yy116;
 1898|      6|			} else {
 1899|      6|				if (yych <= 'O') goto yy134;
  ------------------
  |  Branch (1899:9): [True: 2, False: 4]
  ------------------
 1900|      4|				if (yych <= 'Q') goto yy116;
  ------------------
  |  Branch (1900:9): [True: 0, False: 4]
  ------------------
 1901|      4|				goto yy135;
 1902|      4|			}
 1903|      9|		}
 1904|    104|	} else {
 1905|    104|		if (yych <= 'i') {
  ------------------
  |  Branch (1905:7): [True: 16, False: 88]
  ------------------
 1906|     16|			if (yych <= 'd') {
  ------------------
  |  Branch (1906:8): [True: 3, False: 13]
  ------------------
 1907|      3|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (1907:9): [True: 2, False: 1]
  ------------------
 1908|      1|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (1908:9): [True: 0, False: 1]
  ------------------
 1909|      1|				goto yy120;
 1910|     13|			} else {
 1911|     13|				if (yych <= 'e') goto yy136;
  ------------------
  |  Branch (1911:9): [True: 10, False: 3]
  ------------------
 1912|      3|				if (yych <= 'h') goto yy120;
  ------------------
  |  Branch (1912:9): [True: 0, False: 3]
  ------------------
 1913|      3|				goto yy137;
 1914|      3|			}
 1915|     88|		} else {
 1916|     88|			if (yych <= 'q') {
  ------------------
  |  Branch (1916:8): [True: 59, False: 29]
  ------------------
 1917|     59|				if (yych == 'o') goto yy138;
  ------------------
  |  Branch (1917:9): [True: 54, False: 5]
  ------------------
 1918|      5|				goto yy120;
 1919|     59|			} else {
 1920|     29|				if (yych <= 'r') goto yy139;
  ------------------
  |  Branch (1920:9): [True: 23, False: 6]
  ------------------
 1921|      6|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1921:9): [True: 2, False: 4]
  ------------------
 1922|      4|				goto yy20;
 1923|      6|			}
 1924|     88|		}
 1925|    104|	}
 1926|     41|yy26:
 1927|     41|	YYDEBUG(26, *YYCURSOR);
 1928|     41|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     41|#define   YYCURSOR     cursor
  ------------------
 1929|     41|	if (yych <= 'L') {
  ------------------
  |  Branch (1929:6): [True: 16, False: 25]
  ------------------
 1930|     16|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (1930:7): [True: 0, False: 16]
  ------------------
 1931|     16|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (1931:7): [True: 14, False: 2]
  ------------------
 1932|      2|		goto yy116;
 1933|     25|	} else {
 1934|     25|		if (yych <= 'Z') {
  ------------------
  |  Branch (1934:7): [True: 13, False: 12]
  ------------------
 1935|     13|			if (yych <= 'M') goto yy140;
  ------------------
  |  Branch (1935:8): [True: 10, False: 3]
  ------------------
 1936|      3|			goto yy116;
 1937|     13|		} else {
 1938|     12|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (1938:8): [True: 0, False: 12]
  ------------------
 1939|     12|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1939:8): [True: 10, False: 2]
  ------------------
 1940|      2|			goto yy20;
 1941|     12|		}
 1942|     25|	}
 1943|    174|yy27:
 1944|    174|	YYDEBUG(27, *YYCURSOR);
 1945|    174|	yyaccept = 2;
 1946|    174|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    174|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    174|#define   YYCURSOR     cursor
  ------------------
 1947|    174|	if (yych <= '9') {
  ------------------
  |  Branch (1947:6): [True: 70, False: 104]
  ------------------
 1948|     70|		if (yych <= '(') {
  ------------------
  |  Branch (1948:7): [True: 23, False: 47]
  ------------------
 1949|     23|			if (yych <= '\t') {
  ------------------
  |  Branch (1949:8): [True: 14, False: 9]
  ------------------
 1950|     14|				if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (1950:9): [True: 5, False: 9]
  ------------------
 1951|      9|				goto yy142;
 1952|     14|			} else {
 1953|      9|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (1953:9): [True: 1, False: 8]
  ------------------
 1954|      8|				goto yy20;
 1955|      9|			}
 1956|     47|		} else {
 1957|     47|			if (yych <= ',') {
  ------------------
  |  Branch (1957:8): [True: 7, False: 40]
  ------------------
 1958|      7|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (1958:9): [True: 6, False: 1]
  ------------------
 1959|      1|				goto yy20;
 1960|     40|			} else {
 1961|     40|				if (yych == '/') goto yy20;
  ------------------
  |  Branch (1961:9): [True: 7, False: 33]
  ------------------
 1962|     33|				goto yy142;
 1963|     40|			}
 1964|     47|		}
 1965|    104|	} else {
 1966|    104|		if (yych <= 'V') {
  ------------------
  |  Branch (1966:7): [True: 70, False: 34]
  ------------------
 1967|     70|			if (yych <= 'H') {
  ------------------
  |  Branch (1967:8): [True: 9, False: 61]
  ------------------
 1968|      9|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (1968:9): [True: 0, False: 9]
  ------------------
 1969|      9|				goto yy116;
 1970|     61|			} else {
 1971|     61|				if (yych <= 'I') goto yy146;
  ------------------
  |  Branch (1971:9): [True: 57, False: 4]
  ------------------
 1972|      4|				if (yych <= 'U') goto yy116;
  ------------------
  |  Branch (1972:9): [True: 4, False: 0]
  ------------------
 1973|      0|				goto yy147;
 1974|      4|			}
 1975|     70|		} else {
 1976|     34|			if (yych <= 'Z') {
  ------------------
  |  Branch (1976:8): [True: 4, False: 30]
  ------------------
 1977|      4|				if (yych == 'X') goto yy147;
  ------------------
  |  Branch (1977:9): [True: 1, False: 3]
  ------------------
 1978|      3|				goto yy116;
 1979|     30|			} else {
 1980|     30|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (1980:9): [True: 2, False: 28]
  ------------------
 1981|     28|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (1981:9): [True: 5, False: 23]
  ------------------
 1982|     23|				goto yy20;
 1983|     28|			}
 1984|     34|		}
 1985|    104|	}
 1986|     62|yy28:
 1987|     62|	YYDEBUG(28, *YYCURSOR);
 1988|     62|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     62|#define   YYCURSOR     cursor
  ------------------
 1989|     62|	if (yych <= 'U') {
  ------------------
  |  Branch (1989:6): [True: 33, False: 29]
  ------------------
 1990|     33|		if (yych <= '@') {
  ------------------
  |  Branch (1990:7): [True: 15, False: 18]
  ------------------
 1991|     15|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (1991:8): [True: 0, False: 15]
  ------------------
 1992|     15|			goto yy20;
 1993|     18|		} else {
 1994|     18|			if (yych <= 'A') goto yy148;
  ------------------
  |  Branch (1994:8): [True: 2, False: 16]
  ------------------
 1995|     16|			if (yych <= 'T') goto yy116;
  ------------------
  |  Branch (1995:8): [True: 16, False: 0]
  ------------------
 1996|      0|			goto yy149;
 1997|     16|		}
 1998|     33|	} else {
 1999|     29|		if (yych <= 'a') {
  ------------------
  |  Branch (1999:7): [True: 12, False: 17]
  ------------------
 2000|     12|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2000:8): [True: 3, False: 9]
  ------------------
 2001|      9|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2001:8): [True: 1, False: 8]
  ------------------
 2002|      8|			goto yy150;
 2003|     17|		} else {
 2004|     17|			if (yych == 'u') goto yy151;
  ------------------
  |  Branch (2004:8): [True: 4, False: 13]
  ------------------
 2005|     13|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2005:8): [True: 3, False: 10]
  ------------------
 2006|     10|			goto yy20;
 2007|     13|		}
 2008|     29|	}
 2009|     43|yy29:
 2010|     43|	YYDEBUG(29, *YYCURSOR);
 2011|     43|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     43|#define   YYCURSOR     cursor
  ------------------
 2012|     43|	if (yych <= 'A') {
  ------------------
  |  Branch (2012:6): [True: 10, False: 33]
  ------------------
 2013|     10|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (2013:7): [True: 0, False: 10]
  ------------------
 2014|     10|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2014:7): [True: 10, False: 0]
  ------------------
 2015|      0|		goto yy152;
 2016|     33|	} else {
 2017|     33|		if (yych <= '`') {
  ------------------
  |  Branch (2017:7): [True: 6, False: 27]
  ------------------
 2018|      6|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2018:8): [True: 6, False: 0]
  ------------------
 2019|      0|			goto yy20;
 2020|     27|		} else {
 2021|     27|			if (yych <= 'a') goto yy153;
  ------------------
  |  Branch (2021:8): [True: 3, False: 24]
  ------------------
 2022|     24|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2022:8): [True: 12, False: 12]
  ------------------
 2023|     12|			goto yy20;
 2024|     24|		}
 2025|     33|	}
 2026|    152|yy30:
 2027|    152|	YYDEBUG(30, *YYCURSOR);
 2028|    152|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    152|#define   YYCURSOR     cursor
  ------------------
 2029|    152|	if (yych <= 'O') {
  ------------------
  |  Branch (2029:6): [True: 71, False: 81]
  ------------------
 2030|     71|		if (yych <= 'A') {
  ------------------
  |  Branch (2030:7): [True: 42, False: 29]
  ------------------
 2031|     42|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2031:8): [True: 0, False: 42]
  ------------------
 2032|     42|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2032:8): [True: 37, False: 5]
  ------------------
 2033|      5|			goto yy154;
 2034|     42|		} else {
 2035|     29|			if (yych == 'I') goto yy155;
  ------------------
  |  Branch (2035:8): [True: 5, False: 24]
  ------------------
 2036|     24|			if (yych <= 'N') goto yy116;
  ------------------
  |  Branch (2036:8): [True: 23, False: 1]
  ------------------
 2037|      1|			goto yy156;
 2038|     24|		}
 2039|     81|	} else {
 2040|     81|		if (yych <= 'h') {
  ------------------
  |  Branch (2040:7): [True: 19, False: 62]
  ------------------
 2041|     19|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2041:8): [True: 7, False: 12]
  ------------------
 2042|     12|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2042:8): [True: 3, False: 9]
  ------------------
 2043|      9|			if (yych <= 'a') goto yy157;
  ------------------
  |  Branch (2043:8): [True: 7, False: 2]
  ------------------
 2044|      2|			goto yy120;
 2045|     62|		} else {
 2046|     62|			if (yych <= 'n') {
  ------------------
  |  Branch (2046:8): [True: 5, False: 57]
  ------------------
 2047|      5|				if (yych <= 'i') goto yy158;
  ------------------
  |  Branch (2047:9): [True: 0, False: 5]
  ------------------
 2048|      5|				goto yy120;
 2049|     57|			} else {
 2050|     57|				if (yych <= 'o') goto yy159;
  ------------------
  |  Branch (2050:9): [True: 21, False: 36]
  ------------------
 2051|     36|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2051:9): [True: 12, False: 24]
  ------------------
 2052|     24|				goto yy20;
 2053|     36|			}
 2054|     62|		}
 2055|     81|	}
 2056|     83|yy31:
 2057|     83|	YYDEBUG(31, *YYCURSOR);
 2058|     83|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     83|#define   YYCURSOR     cursor
  ------------------
 2059|     83|	if (yych <= 'O') {
  ------------------
  |  Branch (2059:6): [True: 14, False: 69]
  ------------------
 2060|     14|		if (yych <= 'D') {
  ------------------
  |  Branch (2060:7): [True: 10, False: 4]
  ------------------
 2061|     10|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2061:8): [True: 0, False: 10]
  ------------------
 2062|     10|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2062:8): [True: 10, False: 0]
  ------------------
 2063|      0|			goto yy116;
 2064|     10|		} else {
 2065|      4|			if (yych <= 'H') {
  ------------------
  |  Branch (2065:8): [True: 0, False: 4]
  ------------------
 2066|      0|				if (yych <= 'E') goto yy160;
  ------------------
  |  Branch (2066:9): [True: 0, False: 0]
  ------------------
 2067|      0|				goto yy116;
 2068|      4|			} else {
 2069|      4|				if (yych <= 'I') goto yy161;
  ------------------
  |  Branch (2069:9): [True: 2, False: 2]
  ------------------
 2070|      2|				if (yych <= 'N') goto yy116;
  ------------------
  |  Branch (2070:9): [True: 2, False: 0]
  ------------------
 2071|      0|				goto yy162;
 2072|      2|			}
 2073|      4|		}
 2074|     69|	} else {
 2075|     69|		if (yych <= 'h') {
  ------------------
  |  Branch (2075:7): [True: 12, False: 57]
  ------------------
 2076|     12|			if (yych <= '`') {
  ------------------
  |  Branch (2076:8): [True: 0, False: 12]
  ------------------
 2077|      0|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2077:9): [True: 0, False: 0]
  ------------------
 2078|      0|				goto yy20;
 2079|     12|			} else {
 2080|     12|				if (yych == 'e') goto yy163;
  ------------------
  |  Branch (2080:9): [True: 6, False: 6]
  ------------------
 2081|      6|				goto yy120;
 2082|     12|			}
 2083|     57|		} else {
 2084|     57|			if (yych <= 'n') {
  ------------------
  |  Branch (2084:8): [True: 2, False: 55]
  ------------------
 2085|      2|				if (yych <= 'i') goto yy164;
  ------------------
  |  Branch (2085:9): [True: 0, False: 2]
  ------------------
 2086|      2|				goto yy120;
 2087|     55|			} else {
 2088|     55|				if (yych <= 'o') goto yy165;
  ------------------
  |  Branch (2088:9): [True: 33, False: 22]
  ------------------
 2089|     22|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2089:9): [True: 9, False: 13]
  ------------------
 2090|     13|				goto yy20;
 2091|     22|			}
 2092|     57|		}
 2093|     69|	}
 2094|     96|yy32:
 2095|     96|	YYDEBUG(32, *YYCURSOR);
 2096|     96|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     96|#define   YYCURSOR     cursor
  ------------------
 2097|     96|	if (yych <= 'C') {
  ------------------
  |  Branch (2097:6): [True: 27, False: 69]
  ------------------
 2098|     27|		if (yych <= ')') {
  ------------------
  |  Branch (2098:7): [True: 6, False: 21]
  ------------------
 2099|      6|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2099:8): [True: 5, False: 1]
  ------------------
 2100|      1|			goto yy115;
 2101|     21|		} else {
 2102|     21|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2102:8): [True: 18, False: 3]
  ------------------
 2103|      3|			if (yych <= 'B') goto yy116;
  ------------------
  |  Branch (2103:8): [True: 1, False: 2]
  ------------------
 2104|      2|			goto yy166;
 2105|      3|		}
 2106|     69|	} else {
 2107|     69|		if (yych <= 'b') {
  ------------------
  |  Branch (2107:7): [True: 38, False: 31]
  ------------------
 2108|     38|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2108:8): [True: 32, False: 6]
  ------------------
 2109|      6|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2109:8): [True: 0, False: 6]
  ------------------
 2110|      6|			goto yy120;
 2111|     31|		} else {
 2112|     31|			if (yych <= 'c') goto yy167;
  ------------------
  |  Branch (2112:8): [True: 12, False: 19]
  ------------------
 2113|     19|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2113:8): [True: 4, False: 15]
  ------------------
 2114|     15|			goto yy20;
 2115|     19|		}
 2116|     69|	}
 2117|    137|yy33:
 2118|    137|	YYDEBUG(33, *YYCURSOR);
 2119|    137|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    137|#define   YYCURSOR     cursor
  ------------------
 2120|    137|	if (yych <= 'R') {
  ------------------
  |  Branch (2120:6): [True: 60, False: 77]
  ------------------
 2121|     60|		if (yych <= ')') {
  ------------------
  |  Branch (2121:7): [True: 20, False: 40]
  ------------------
 2122|     20|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2122:8): [True: 20, False: 0]
  ------------------
 2123|      0|			goto yy115;
 2124|     40|		} else {
 2125|     40|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2125:8): [True: 19, False: 21]
  ------------------
 2126|     21|			if (yych <= 'Q') goto yy116;
  ------------------
  |  Branch (2126:8): [True: 17, False: 4]
  ------------------
 2127|      4|			goto yy168;
 2128|     21|		}
 2129|     77|	} else {
 2130|     77|		if (yych <= 'q') {
  ------------------
  |  Branch (2130:7): [True: 30, False: 47]
  ------------------
 2131|     30|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2131:8): [True: 0, False: 30]
  ------------------
 2132|     30|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2132:8): [True: 4, False: 26]
  ------------------
 2133|     26|			goto yy120;
 2134|     47|		} else {
 2135|     47|			if (yych <= 'r') goto yy169;
  ------------------
  |  Branch (2135:8): [True: 21, False: 26]
  ------------------
 2136|     26|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2136:8): [True: 12, False: 14]
  ------------------
 2137|     14|			goto yy20;
 2138|     26|		}
 2139|     77|	}
 2140|     96|yy34:
 2141|     96|	YYDEBUG(34, *YYCURSOR);
 2142|     96|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     96|#define   YYCURSOR     cursor
  ------------------
 2143|     96|	if (yych <= 'U') {
  ------------------
  |  Branch (2143:6): [True: 37, False: 59]
  ------------------
 2144|     37|		if (yych <= 'D') {
  ------------------
  |  Branch (2144:7): [True: 28, False: 9]
  ------------------
 2145|     28|			if (yych <= ')') {
  ------------------
  |  Branch (2145:8): [True: 17, False: 11]
  ------------------
 2146|     17|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2146:9): [True: 15, False: 2]
  ------------------
 2147|      2|				goto yy115;
 2148|     17|			} else {
 2149|     11|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2149:9): [True: 11, False: 0]
  ------------------
 2150|      0|				if (yych <= 'A') goto yy170;
  ------------------
  |  Branch (2150:9): [True: 0, False: 0]
  ------------------
 2151|      0|				goto yy116;
 2152|      0|			}
 2153|     28|		} else {
 2154|      9|			if (yych <= 'H') {
  ------------------
  |  Branch (2154:8): [True: 0, False: 9]
  ------------------
 2155|      0|				if (yych <= 'E') goto yy171;
  ------------------
  |  Branch (2155:9): [True: 0, False: 0]
  ------------------
 2156|      0|				goto yy116;
 2157|      9|			} else {
 2158|      9|				if (yych <= 'I') goto yy172;
  ------------------
  |  Branch (2158:9): [True: 0, False: 9]
  ------------------
 2159|      9|				if (yych <= 'T') goto yy116;
  ------------------
  |  Branch (2159:9): [True: 6, False: 3]
  ------------------
 2160|      3|				goto yy156;
 2161|      9|			}
 2162|      9|		}
 2163|     59|	} else {
 2164|     59|		if (yych <= 'e') {
  ------------------
  |  Branch (2164:7): [True: 39, False: 20]
  ------------------
 2165|     39|			if (yych <= '`') {
  ------------------
  |  Branch (2165:8): [True: 0, False: 39]
  ------------------
 2166|      0|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2166:9): [True: 0, False: 0]
  ------------------
 2167|      0|				goto yy20;
 2168|     39|			} else {
 2169|     39|				if (yych <= 'a') goto yy173;
  ------------------
  |  Branch (2169:9): [True: 1, False: 38]
  ------------------
 2170|     38|				if (yych <= 'd') goto yy120;
  ------------------
  |  Branch (2170:9): [True: 9, False: 29]
  ------------------
 2171|     29|				goto yy174;
 2172|     38|			}
 2173|     39|		} else {
 2174|     20|			if (yych <= 't') {
  ------------------
  |  Branch (2174:8): [True: 7, False: 13]
  ------------------
 2175|      7|				if (yych == 'i') goto yy175;
  ------------------
  |  Branch (2175:9): [True: 0, False: 7]
  ------------------
 2176|      7|				goto yy120;
 2177|     13|			} else {
 2178|     13|				if (yych <= 'u') goto yy159;
  ------------------
  |  Branch (2178:9): [True: 12, False: 1]
  ------------------
 2179|      1|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2179:9): [True: 0, False: 1]
  ------------------
 2180|      1|				goto yy20;
 2181|      1|			}
 2182|     20|		}
 2183|     59|	}
 2184|    307|yy35:
 2185|    307|	YYDEBUG(35, *YYCURSOR);
 2186|    307|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    307|#define   YYCURSOR     cursor
  ------------------
 2187|    307|	switch (yych) {
 2188|      1|	case ')':	goto yy115;
  ------------------
  |  Branch (2188:2): [True: 1, False: 306]
  ------------------
 2189|     12|	case '0':
  ------------------
  |  Branch (2189:2): [True: 12, False: 295]
  ------------------
 2190|     25|	case '1':	goto yy176;
  ------------------
  |  Branch (2190:2): [True: 13, False: 294]
  ------------------
 2191|     21|	case '2':	goto yy178;
  ------------------
  |  Branch (2191:2): [True: 21, False: 286]
  ------------------
 2192|      0|	case '3':
  ------------------
  |  Branch (2192:2): [True: 0, False: 307]
  ------------------
 2193|      7|	case '4':
  ------------------
  |  Branch (2193:2): [True: 7, False: 300]
  ------------------
 2194|      8|	case '5':
  ------------------
  |  Branch (2194:2): [True: 1, False: 306]
  ------------------
 2195|     10|	case '6':
  ------------------
  |  Branch (2195:2): [True: 2, False: 305]
  ------------------
 2196|     17|	case '7':
  ------------------
  |  Branch (2196:2): [True: 7, False: 300]
  ------------------
 2197|     18|	case '8':
  ------------------
  |  Branch (2197:2): [True: 1, False: 306]
  ------------------
 2198|     23|	case '9':	goto yy179;
  ------------------
  |  Branch (2198:2): [True: 5, False: 302]
  ------------------
 2199|      0|	case 'A':
  ------------------
  |  Branch (2199:2): [True: 0, False: 307]
  ------------------
 2200|      0|	case 'B':
  ------------------
  |  Branch (2200:2): [True: 0, False: 307]
  ------------------
 2201|      0|	case 'C':
  ------------------
  |  Branch (2201:2): [True: 0, False: 307]
  ------------------
 2202|      2|	case 'D':
  ------------------
  |  Branch (2202:2): [True: 2, False: 305]
  ------------------
 2203|      6|	case 'F':
  ------------------
  |  Branch (2203:2): [True: 4, False: 303]
  ------------------
 2204|      6|	case 'G':
  ------------------
  |  Branch (2204:2): [True: 0, False: 307]
  ------------------
 2205|      6|	case 'I':
  ------------------
  |  Branch (2205:2): [True: 0, False: 307]
  ------------------
 2206|     11|	case 'J':
  ------------------
  |  Branch (2206:2): [True: 5, False: 302]
  ------------------
 2207|     11|	case 'K':
  ------------------
  |  Branch (2207:2): [True: 0, False: 307]
  ------------------
 2208|     11|	case 'L':
  ------------------
  |  Branch (2208:2): [True: 0, False: 307]
  ------------------
 2209|     21|	case 'M':
  ------------------
  |  Branch (2209:2): [True: 10, False: 297]
  ------------------
 2210|     21|	case 'N':
  ------------------
  |  Branch (2210:2): [True: 0, False: 307]
  ------------------
 2211|     22|	case 'P':
  ------------------
  |  Branch (2211:2): [True: 1, False: 306]
  ------------------
 2212|     22|	case 'Q':
  ------------------
  |  Branch (2212:2): [True: 0, False: 307]
  ------------------
 2213|     22|	case 'R':
  ------------------
  |  Branch (2213:2): [True: 0, False: 307]
  ------------------
 2214|     22|	case 'S':
  ------------------
  |  Branch (2214:2): [True: 0, False: 307]
  ------------------
 2215|     33|	case 'T':
  ------------------
  |  Branch (2215:2): [True: 11, False: 296]
  ------------------
 2216|     35|	case 'V':
  ------------------
  |  Branch (2216:2): [True: 2, False: 305]
  ------------------
 2217|     36|	case 'X':
  ------------------
  |  Branch (2217:2): [True: 1, False: 306]
  ------------------
 2218|     38|	case 'Y':
  ------------------
  |  Branch (2218:2): [True: 2, False: 305]
  ------------------
 2219|     40|	case 'Z':	goto yy116;
  ------------------
  |  Branch (2219:2): [True: 2, False: 305]
  ------------------
 2220|      4|	case 'E':	goto yy161;
  ------------------
  |  Branch (2220:2): [True: 4, False: 303]
  ------------------
 2221|      2|	case 'H':	goto yy180;
  ------------------
  |  Branch (2221:2): [True: 2, False: 305]
  ------------------
 2222|      0|	case 'O':	goto yy181;
  ------------------
  |  Branch (2222:2): [True: 0, False: 307]
  ------------------
 2223|      8|	case 'U':	goto yy182;
  ------------------
  |  Branch (2223:2): [True: 8, False: 299]
  ------------------
 2224|      8|	case 'W':	goto yy183;
  ------------------
  |  Branch (2224:2): [True: 8, False: 299]
  ------------------
 2225|      1|	case 'a':
  ------------------
  |  Branch (2225:2): [True: 1, False: 306]
  ------------------
 2226|      1|	case 'b':
  ------------------
  |  Branch (2226:2): [True: 0, False: 307]
  ------------------
 2227|      1|	case 'c':
  ------------------
  |  Branch (2227:2): [True: 0, False: 307]
  ------------------
 2228|      1|	case 'd':
  ------------------
  |  Branch (2228:2): [True: 0, False: 307]
  ------------------
 2229|      1|	case 'f':
  ------------------
  |  Branch (2229:2): [True: 0, False: 307]
  ------------------
 2230|      1|	case 'g':
  ------------------
  |  Branch (2230:2): [True: 0, False: 307]
  ------------------
 2231|      5|	case 'i':
  ------------------
  |  Branch (2231:2): [True: 4, False: 303]
  ------------------
 2232|      5|	case 'j':
  ------------------
  |  Branch (2232:2): [True: 0, False: 307]
  ------------------
 2233|      7|	case 'k':
  ------------------
  |  Branch (2233:2): [True: 2, False: 305]
  ------------------
 2234|      7|	case 'l':
  ------------------
  |  Branch (2234:2): [True: 0, False: 307]
  ------------------
 2235|      8|	case 'm':
  ------------------
  |  Branch (2235:2): [True: 1, False: 306]
  ------------------
 2236|      8|	case 'n':
  ------------------
  |  Branch (2236:2): [True: 0, False: 307]
  ------------------
 2237|     11|	case 'p':
  ------------------
  |  Branch (2237:2): [True: 3, False: 304]
  ------------------
 2238|     12|	case 'q':
  ------------------
  |  Branch (2238:2): [True: 1, False: 306]
  ------------------
 2239|     14|	case 'r':
  ------------------
  |  Branch (2239:2): [True: 2, False: 305]
  ------------------
 2240|     16|	case 's':
  ------------------
  |  Branch (2240:2): [True: 2, False: 305]
  ------------------
 2241|     25|	case 't':
  ------------------
  |  Branch (2241:2): [True: 9, False: 298]
  ------------------
 2242|     26|	case 'v':
  ------------------
  |  Branch (2242:2): [True: 1, False: 306]
  ------------------
 2243|     28|	case 'x':
  ------------------
  |  Branch (2243:2): [True: 2, False: 305]
  ------------------
 2244|     31|	case 'y':
  ------------------
  |  Branch (2244:2): [True: 3, False: 304]
  ------------------
 2245|     31|	case 'z':	goto yy120;
  ------------------
  |  Branch (2245:2): [True: 0, False: 307]
  ------------------
 2246|     10|	case 'e':	goto yy164;
  ------------------
  |  Branch (2246:2): [True: 10, False: 297]
  ------------------
 2247|     21|	case 'h':	goto yy184;
  ------------------
  |  Branch (2247:2): [True: 21, False: 286]
  ------------------
 2248|     12|	case 'o':	goto yy185;
  ------------------
  |  Branch (2248:2): [True: 12, False: 295]
  ------------------
 2249|     19|	case 'u':	goto yy186;
  ------------------
  |  Branch (2249:2): [True: 19, False: 288]
  ------------------
 2250|     21|	case 'w':	goto yy187;
  ------------------
  |  Branch (2250:2): [True: 21, False: 286]
  ------------------
 2251|     61|	default:	goto yy20;
  ------------------
  |  Branch (2251:2): [True: 61, False: 246]
  ------------------
 2252|    307|	}
 2253|     35|yy36:
 2254|     35|	YYDEBUG(36, *YYCURSOR);
 2255|     35|	yyaccept = 2;
 2256|     35|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     35|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     35|#define   YYCURSOR     cursor
  ------------------
 2257|     35|	if (yych <= '.') {
  ------------------
  |  Branch (2257:6): [True: 7, False: 28]
  ------------------
 2258|      7|		if (yych <= ' ') {
  ------------------
  |  Branch (2258:7): [True: 6, False: 1]
  ------------------
 2259|      6|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (2259:8): [True: 0, False: 6]
  ------------------
 2260|      6|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (2260:8): [True: 5, False: 1]
  ------------------
 2261|      1|			goto yy142;
 2262|      6|		} else {
 2263|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2263:8): [True: 0, False: 1]
  ------------------
 2264|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (2264:8): [True: 1, False: 0]
  ------------------
 2265|      0|			goto yy142;
 2266|      1|		}
 2267|     28|	} else {
 2268|     28|		if (yych <= 'H') {
  ------------------
  |  Branch (2268:7): [True: 12, False: 16]
  ------------------
 2269|     12|			if (yych <= '/') goto yy20;
  ------------------
  |  Branch (2269:8): [True: 1, False: 11]
  ------------------
 2270|     11|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (2270:8): [True: 10, False: 1]
  ------------------
 2271|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2271:8): [True: 0, False: 1]
  ------------------
 2272|      1|			goto yy116;
 2273|     16|		} else {
 2274|     16|			if (yych <= 'Z') {
  ------------------
  |  Branch (2274:8): [True: 6, False: 10]
  ------------------
 2275|      6|				if (yych <= 'I') goto yy188;
  ------------------
  |  Branch (2275:9): [True: 2, False: 4]
  ------------------
 2276|      4|				goto yy116;
 2277|     10|			} else {
 2278|     10|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2278:9): [True: 0, False: 10]
  ------------------
 2279|     10|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2279:9): [True: 7, False: 3]
  ------------------
 2280|      3|				goto yy20;
 2281|     10|			}
 2282|     16|		}
 2283|     28|	}
 2284|     90|yy37:
 2285|     90|	YYDEBUG(37, *YYCURSOR);
 2286|     90|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     90|#define   YYCURSOR     cursor
  ------------------
 2287|     90|	if (yych <= 'E') {
  ------------------
  |  Branch (2287:6): [True: 47, False: 43]
  ------------------
 2288|     47|		if (yych <= ')') {
  ------------------
  |  Branch (2288:7): [True: 20, False: 27]
  ------------------
 2289|     20|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2289:8): [True: 11, False: 9]
  ------------------
 2290|      9|			goto yy115;
 2291|     27|		} else {
 2292|     27|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2292:8): [True: 27, False: 0]
  ------------------
 2293|      0|			if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (2293:8): [True: 0, False: 0]
  ------------------
 2294|      0|			goto yy189;
 2295|      0|		}
 2296|     47|	} else {
 2297|     43|		if (yych <= 'd') {
  ------------------
  |  Branch (2297:7): [True: 30, False: 13]
  ------------------
 2298|     30|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2298:8): [True: 25, False: 5]
  ------------------
 2299|      5|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2299:8): [True: 1, False: 4]
  ------------------
 2300|      4|			goto yy120;
 2301|     13|		} else {
 2302|     13|			if (yych <= 'e') goto yy190;
  ------------------
  |  Branch (2302:8): [True: 2, False: 11]
  ------------------
 2303|     11|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2303:8): [True: 6, False: 5]
  ------------------
 2304|      5|			goto yy20;
 2305|     11|		}
 2306|     43|	}
 2307|     66|yy38:
 2308|     66|	YYDEBUG(38, *YYCURSOR);
 2309|     66|	yyaccept = 2;
 2310|     66|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     66|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     66|#define   YYCURSOR     cursor
  ------------------
 2311|     66|	if (yych <= '.') {
  ------------------
  |  Branch (2311:6): [True: 31, False: 35]
  ------------------
 2312|     31|		if (yych <= ' ') {
  ------------------
  |  Branch (2312:7): [True: 10, False: 21]
  ------------------
 2313|     10|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (2313:8): [True: 0, False: 10]
  ------------------
 2314|     10|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (2314:8): [True: 8, False: 2]
  ------------------
 2315|      2|			goto yy142;
 2316|     21|		} else {
 2317|     21|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2317:8): [True: 0, False: 21]
  ------------------
 2318|     21|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (2318:8): [True: 3, False: 18]
  ------------------
 2319|     18|			goto yy142;
 2320|     21|		}
 2321|     35|	} else {
 2322|     35|		if (yych <= 'H') {
  ------------------
  |  Branch (2322:7): [True: 11, False: 24]
  ------------------
 2323|     11|			if (yych <= '/') goto yy20;
  ------------------
  |  Branch (2323:8): [True: 0, False: 11]
  ------------------
 2324|     11|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (2324:8): [True: 0, False: 11]
  ------------------
 2325|     11|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2325:8): [True: 7, False: 4]
  ------------------
 2326|      4|			goto yy116;
 2327|     24|		} else {
 2328|     24|			if (yych <= 'Z') {
  ------------------
  |  Branch (2328:8): [True: 16, False: 8]
  ------------------
 2329|     16|				if (yych <= 'I') goto yy146;
  ------------------
  |  Branch (2329:9): [True: 6, False: 10]
  ------------------
 2330|     10|				goto yy116;
 2331|     16|			} else {
 2332|      8|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2332:9): [True: 0, False: 8]
  ------------------
 2333|      8|				if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2333:9): [True: 0, False: 8]
  ------------------
 2334|      8|				goto yy20;
 2335|      8|			}
 2336|     24|		}
 2337|     35|	}
 2338|     25|yy39:
 2339|     25|	YYDEBUG(39, *YYCURSOR);
 2340|     25|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     25|#define   YYCURSOR     cursor
  ------------------
 2341|     25|	if (yych <= 'E') {
  ------------------
  |  Branch (2341:6): [True: 16, False: 9]
  ------------------
 2342|     16|		if (yych <= ')') {
  ------------------
  |  Branch (2342:7): [True: 9, False: 7]
  ------------------
 2343|      9|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2343:8): [True: 9, False: 0]
  ------------------
 2344|      0|			goto yy115;
 2345|      9|		} else {
 2346|      7|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2346:8): [True: 6, False: 1]
  ------------------
 2347|      1|			if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (2347:8): [True: 1, False: 0]
  ------------------
 2348|      0|			goto yy191;
 2349|      1|		}
 2350|     16|	} else {
 2351|      9|		if (yych <= 'd') {
  ------------------
  |  Branch (2351:7): [True: 2, False: 7]
  ------------------
 2352|      2|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2352:8): [True: 1, False: 1]
  ------------------
 2353|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2353:8): [True: 1, False: 0]
  ------------------
 2354|      0|			goto yy120;
 2355|      7|		} else {
 2356|      7|			if (yych <= 'e') goto yy192;
  ------------------
  |  Branch (2356:8): [True: 2, False: 5]
  ------------------
 2357|      5|			if (yych <= 'z') goto yy120;
  ------------------
  |  Branch (2357:8): [True: 4, False: 1]
  ------------------
 2358|      1|			goto yy20;
 2359|      5|		}
 2360|      9|	}
 2361|    238|yy40:
 2362|    238|	YYDEBUG(40, *YYCURSOR);
 2363|    238|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    238|#define   YYCURSOR     cursor
  ------------------
 2364|    238|	if (yych <= 'U') {
  ------------------
  |  Branch (2364:6): [True: 59, False: 179]
  ------------------
 2365|     59|		if (yych <= 'F') {
  ------------------
  |  Branch (2365:7): [True: 55, False: 4]
  ------------------
 2366|     55|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2366:8): [True: 6, False: 49]
  ------------------
 2367|     49|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2367:8): [True: 45, False: 4]
  ------------------
 2368|      4|			goto yy116;
 2369|     49|		} else {
 2370|      4|			if (yych <= 'O') {
  ------------------
  |  Branch (2370:8): [True: 4, False: 0]
  ------------------
 2371|      4|				if (yych <= 'G') goto yy117;
  ------------------
  |  Branch (2371:9): [True: 0, False: 4]
  ------------------
 2372|      4|				goto yy116;
 2373|      4|			} else {
 2374|      0|				if (yych <= 'P') goto yy118;
  ------------------
  |  Branch (2374:9): [True: 0, False: 0]
  ------------------
 2375|      0|				if (yych <= 'T') goto yy116;
  ------------------
  |  Branch (2375:9): [True: 0, False: 0]
  ------------------
 2376|      0|				goto yy119;
 2377|      0|			}
 2378|      4|		}
 2379|    179|	} else {
 2380|    179|		if (yych <= 'o') {
  ------------------
  |  Branch (2380:7): [True: 97, False: 82]
  ------------------
 2381|     97|			if (yych <= '`') {
  ------------------
  |  Branch (2381:8): [True: 10, False: 87]
  ------------------
 2382|     10|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2382:9): [True: 0, False: 10]
  ------------------
 2383|     10|				goto yy20;
 2384|     87|			} else {
 2385|     87|				if (yych == 'g') goto yy117;
  ------------------
  |  Branch (2385:9): [True: 2, False: 85]
  ------------------
 2386|     85|				goto yy116;
 2387|     87|			}
 2388|     97|		} else {
 2389|     82|			if (yych <= 't') {
  ------------------
  |  Branch (2389:8): [True: 49, False: 33]
  ------------------
 2390|     49|				if (yych <= 'p') goto yy118;
  ------------------
  |  Branch (2390:9): [True: 4, False: 45]
  ------------------
 2391|     45|				goto yy116;
 2392|     49|			} else {
 2393|     33|				if (yych <= 'u') goto yy119;
  ------------------
  |  Branch (2393:9): [True: 13, False: 20]
  ------------------
 2394|     20|				if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2394:9): [True: 10, False: 10]
  ------------------
 2395|     10|				goto yy20;
 2396|     20|			}
 2397|     82|		}
 2398|    179|	}
 2399|     64|yy41:
 2400|     64|	YYDEBUG(41, *YYCURSOR);
 2401|     64|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     64|#define   YYCURSOR     cursor
  ------------------
 2402|     64|	if (yych <= 'A') {
  ------------------
  |  Branch (2402:6): [True: 15, False: 49]
  ------------------
 2403|     15|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (2403:7): [True: 1, False: 14]
  ------------------
 2404|     14|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2404:7): [True: 14, False: 0]
  ------------------
 2405|      0|		goto yy124;
 2406|     49|	} else {
 2407|     49|		if (yych <= '`') {
  ------------------
  |  Branch (2407:7): [True: 6, False: 43]
  ------------------
 2408|      6|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2408:8): [True: 2, False: 4]
  ------------------
 2409|      4|			goto yy20;
 2410|     43|		} else {
 2411|     43|			if (yych <= 'a') goto yy124;
  ------------------
  |  Branch (2411:8): [True: 6, False: 37]
  ------------------
 2412|     37|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2412:8): [True: 34, False: 3]
  ------------------
 2413|      3|			goto yy20;
 2414|     37|		}
 2415|     49|	}
 2416|  1.30k|yy42:
 2417|  1.30k|	YYDEBUG(42, *YYCURSOR);
 2418|  1.30k|	yych = *++YYCURSOR;
  ------------------
  |  |   89|  1.30k|#define   YYCURSOR     cursor
  ------------------
 2419|  1.30k|	if (yych <= '@') {
  ------------------
  |  Branch (2419:6): [True: 499, False: 803]
  ------------------
 2420|    499|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (2420:7): [True: 2, False: 497]
  ------------------
 2421|    497|		goto yy20;
 2422|    803|	} else {
 2423|    803|		if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2423:7): [True: 61, False: 742]
  ------------------
 2424|    742|		if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2424:7): [True: 47, False: 695]
  ------------------
 2425|    695|		if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2425:7): [True: 599, False: 96]
  ------------------
 2426|     96|		goto yy20;
 2427|    695|	}
 2428|    189|yy43:
 2429|    189|	YYDEBUG(43, *YYCURSOR);
 2430|    189|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    189|#define   YYCURSOR     cursor
  ------------------
 2431|    189|	if (yych <= 'E') {
  ------------------
  |  Branch (2431:6): [True: 89, False: 100]
  ------------------
 2432|     89|		if (yych <= ')') {
  ------------------
  |  Branch (2432:7): [True: 42, False: 47]
  ------------------
 2433|     42|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2433:8): [True: 42, False: 0]
  ------------------
 2434|      0|			goto yy115;
 2435|     47|		} else {
 2436|     47|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2436:8): [True: 47, False: 0]
  ------------------
 2437|      0|			if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (2437:8): [True: 0, False: 0]
  ------------------
 2438|      0|			goto yy126;
 2439|      0|		}
 2440|    100|	} else {
 2441|    100|		if (yych <= 'd') {
  ------------------
  |  Branch (2441:7): [True: 33, False: 67]
  ------------------
 2442|     33|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2442:8): [True: 4, False: 29]
  ------------------
 2443|     29|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2443:8): [True: 1, False: 28]
  ------------------
 2444|     28|			goto yy116;
 2445|     67|		} else {
 2446|     67|			if (yych <= 'e') goto yy126;
  ------------------
  |  Branch (2446:8): [True: 19, False: 48]
  ------------------
 2447|     48|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2447:8): [True: 39, False: 9]
  ------------------
 2448|      9|			goto yy20;
 2449|     48|		}
 2450|    100|	}
 2451|    326|yy44:
 2452|    326|	YYDEBUG(44, *YYCURSOR);
 2453|    326|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    326|#define   YYCURSOR     cursor
  ------------------
 2454|    326|	if (yych <= 'L') {
  ------------------
  |  Branch (2454:6): [True: 146, False: 180]
  ------------------
 2455|    146|		if (yych <= '@') {
  ------------------
  |  Branch (2455:7): [True: 132, False: 14]
  ------------------
 2456|    132|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2456:8): [True: 6, False: 126]
  ------------------
 2457|    126|			goto yy20;
 2458|    132|		} else {
 2459|     14|			if (yych == 'I') goto yy128;
  ------------------
  |  Branch (2459:8): [True: 7, False: 7]
  ------------------
 2460|      7|			if (yych <= 'K') goto yy116;
  ------------------
  |  Branch (2460:8): [True: 7, False: 0]
  ------------------
 2461|      0|			goto yy129;
 2462|      7|		}
 2463|    180|	} else {
 2464|    180|		if (yych <= 'i') {
  ------------------
  |  Branch (2464:7): [True: 67, False: 113]
  ------------------
 2465|     67|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2465:8): [True: 11, False: 56]
  ------------------
 2466|     56|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2466:8): [True: 5, False: 51]
  ------------------
 2467|     51|			if (yych <= 'h') goto yy116;
  ------------------
  |  Branch (2467:8): [True: 39, False: 12]
  ------------------
 2468|     12|			goto yy128;
 2469|    113|		} else {
 2470|    113|			if (yych == 'l') goto yy129;
  ------------------
  |  Branch (2470:8): [True: 5, False: 108]
  ------------------
 2471|    108|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2471:8): [True: 86, False: 22]
  ------------------
 2472|     22|			goto yy20;
 2473|    108|		}
 2474|    180|	}
 2475|    105|yy45:
 2476|    105|	YYDEBUG(45, *YYCURSOR);
 2477|    105|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    105|#define   YYCURSOR     cursor
  ------------------
 2478|    105|	if (yych <= 'R') {
  ------------------
  |  Branch (2478:6): [True: 25, False: 80]
  ------------------
 2479|     25|		if (yych <= 'E') {
  ------------------
  |  Branch (2479:7): [True: 21, False: 4]
  ------------------
 2480|     21|			if (yych <= ')') {
  ------------------
  |  Branch (2480:8): [True: 14, False: 7]
  ------------------
 2481|     14|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2481:9): [True: 13, False: 1]
  ------------------
 2482|      1|				goto yy115;
 2483|     14|			} else {
 2484|      7|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2484:9): [True: 6, False: 1]
  ------------------
 2485|      1|				if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (2485:9): [True: 0, False: 1]
  ------------------
 2486|      1|				goto yy132;
 2487|      1|			}
 2488|     21|		} else {
 2489|      4|			if (yych <= 'N') {
  ------------------
  |  Branch (2489:8): [True: 1, False: 3]
  ------------------
 2490|      1|				if (yych == 'I') goto yy133;
  ------------------
  |  Branch (2490:9): [True: 0, False: 1]
  ------------------
 2491|      1|				goto yy116;
 2492|      3|			} else {
 2493|      3|				if (yych <= 'O') goto yy134;
  ------------------
  |  Branch (2493:9): [True: 2, False: 1]
  ------------------
 2494|      1|				if (yych <= 'Q') goto yy116;
  ------------------
  |  Branch (2494:9): [True: 1, False: 0]
  ------------------
 2495|      0|				goto yy135;
 2496|      1|			}
 2497|      4|		}
 2498|     80|	} else {
 2499|     80|		if (yych <= 'i') {
  ------------------
  |  Branch (2499:7): [True: 31, False: 49]
  ------------------
 2500|     31|			if (yych <= 'd') {
  ------------------
  |  Branch (2500:8): [True: 3, False: 28]
  ------------------
 2501|      3|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2501:9): [True: 1, False: 2]
  ------------------
 2502|      2|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2502:9): [True: 0, False: 2]
  ------------------
 2503|      2|				goto yy116;
 2504|     28|			} else {
 2505|     28|				if (yych <= 'e') goto yy132;
  ------------------
  |  Branch (2505:9): [True: 1, False: 27]
  ------------------
 2506|     27|				if (yych <= 'h') goto yy116;
  ------------------
  |  Branch (2506:9): [True: 9, False: 18]
  ------------------
 2507|     18|				goto yy133;
 2508|     27|			}
 2509|     49|		} else {
 2510|     49|			if (yych <= 'q') {
  ------------------
  |  Branch (2510:8): [True: 18, False: 31]
  ------------------
 2511|     18|				if (yych == 'o') goto yy134;
  ------------------
  |  Branch (2511:9): [True: 12, False: 6]
  ------------------
 2512|      6|				goto yy116;
 2513|     31|			} else {
 2514|     31|				if (yych <= 'r') goto yy135;
  ------------------
  |  Branch (2514:9): [True: 11, False: 20]
  ------------------
 2515|     20|				if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2515:9): [True: 16, False: 4]
  ------------------
 2516|      4|				goto yy20;
 2517|     20|			}
 2518|     49|		}
 2519|     80|	}
 2520|    132|yy46:
 2521|    132|	YYDEBUG(46, *YYCURSOR);
 2522|    132|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    132|#define   YYCURSOR     cursor
  ------------------
 2523|    132|	if (yych <= 'U') {
  ------------------
  |  Branch (2523:6): [True: 58, False: 74]
  ------------------
 2524|     58|		if (yych <= '@') {
  ------------------
  |  Branch (2524:7): [True: 22, False: 36]
  ------------------
 2525|     22|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2525:8): [True: 0, False: 22]
  ------------------
 2526|     22|			goto yy20;
 2527|     36|		} else {
 2528|     36|			if (yych <= 'A') goto yy148;
  ------------------
  |  Branch (2528:8): [True: 26, False: 10]
  ------------------
 2529|     10|			if (yych <= 'T') goto yy116;
  ------------------
  |  Branch (2529:8): [True: 4, False: 6]
  ------------------
 2530|      6|			goto yy149;
 2531|     10|		}
 2532|     74|	} else {
 2533|     74|		if (yych <= 'a') {
  ------------------
  |  Branch (2533:7): [True: 26, False: 48]
  ------------------
 2534|     26|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2534:8): [True: 0, False: 26]
  ------------------
 2535|     26|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2535:8): [True: 6, False: 20]
  ------------------
 2536|     20|			goto yy148;
 2537|     48|		} else {
 2538|     48|			if (yych == 'u') goto yy149;
  ------------------
  |  Branch (2538:8): [True: 16, False: 32]
  ------------------
 2539|     32|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2539:8): [True: 29, False: 3]
  ------------------
 2540|      3|			goto yy20;
 2541|     32|		}
 2542|     74|	}
 2543|    141|yy47:
 2544|    141|	YYDEBUG(47, *YYCURSOR);
 2545|    141|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    141|#define   YYCURSOR     cursor
  ------------------
 2546|    141|	if (yych <= 'A') {
  ------------------
  |  Branch (2546:6): [True: 38, False: 103]
  ------------------
 2547|     38|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (2547:7): [True: 1, False: 37]
  ------------------
 2548|     37|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2548:7): [True: 37, False: 0]
  ------------------
 2549|      0|		goto yy152;
 2550|    103|	} else {
 2551|    103|		if (yych <= '`') {
  ------------------
  |  Branch (2551:7): [True: 7, False: 96]
  ------------------
 2552|      7|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2552:8): [True: 5, False: 2]
  ------------------
 2553|      2|			goto yy20;
 2554|     96|		} else {
 2555|     96|			if (yych <= 'a') goto yy152;
  ------------------
  |  Branch (2555:8): [True: 12, False: 84]
  ------------------
 2556|     84|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2556:8): [True: 57, False: 27]
  ------------------
 2557|     27|			goto yy20;
 2558|     84|		}
 2559|    103|	}
 2560|    160|yy48:
 2561|    160|	YYDEBUG(48, *YYCURSOR);
 2562|    160|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    160|#define   YYCURSOR     cursor
  ------------------
 2563|    160|	if (yych <= 'O') {
  ------------------
  |  Branch (2563:6): [True: 68, False: 92]
  ------------------
 2564|     68|		if (yych <= 'A') {
  ------------------
  |  Branch (2564:7): [True: 66, False: 2]
  ------------------
 2565|     66|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2565:8): [True: 0, False: 66]
  ------------------
 2566|     66|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2566:8): [True: 49, False: 17]
  ------------------
 2567|     17|			goto yy154;
 2568|     66|		} else {
 2569|      2|			if (yych == 'I') goto yy155;
  ------------------
  |  Branch (2569:8): [True: 1, False: 1]
  ------------------
 2570|      1|			if (yych <= 'N') goto yy116;
  ------------------
  |  Branch (2570:8): [True: 0, False: 1]
  ------------------
 2571|      1|			goto yy156;
 2572|      1|		}
 2573|     92|	} else {
 2574|     92|		if (yych <= 'h') {
  ------------------
  |  Branch (2574:7): [True: 44, False: 48]
  ------------------
 2575|     44|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2575:8): [True: 1, False: 43]
  ------------------
 2576|     43|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2576:8): [True: 3, False: 40]
  ------------------
 2577|     40|			if (yych <= 'a') goto yy154;
  ------------------
  |  Branch (2577:8): [True: 24, False: 16]
  ------------------
 2578|     16|			goto yy116;
 2579|     48|		} else {
 2580|     48|			if (yych <= 'n') {
  ------------------
  |  Branch (2580:8): [True: 24, False: 24]
  ------------------
 2581|     24|				if (yych <= 'i') goto yy155;
  ------------------
  |  Branch (2581:9): [True: 7, False: 17]
  ------------------
 2582|     17|				goto yy116;
 2583|     24|			} else {
 2584|     24|				if (yych <= 'o') goto yy156;
  ------------------
  |  Branch (2584:9): [True: 3, False: 21]
  ------------------
 2585|     21|				if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2585:9): [True: 14, False: 7]
  ------------------
 2586|      7|				goto yy20;
 2587|     21|			}
 2588|     48|		}
 2589|     92|	}
 2590|    411|yy49:
 2591|    411|	YYDEBUG(49, *YYCURSOR);
 2592|    411|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    411|#define   YYCURSOR     cursor
  ------------------
 2593|    411|	if (yych <= 'O') {
  ------------------
  |  Branch (2593:6): [True: 187, False: 224]
  ------------------
 2594|    187|		if (yych <= 'D') {
  ------------------
  |  Branch (2594:7): [True: 183, False: 4]
  ------------------
 2595|    183|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (2595:8): [True: 3, False: 180]
  ------------------
 2596|    180|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2596:8): [True: 170, False: 10]
  ------------------
 2597|     10|			goto yy116;
 2598|    180|		} else {
 2599|      4|			if (yych <= 'H') {
  ------------------
  |  Branch (2599:8): [True: 0, False: 4]
  ------------------
 2600|      0|				if (yych <= 'E') goto yy160;
  ------------------
  |  Branch (2600:9): [True: 0, False: 0]
  ------------------
 2601|      0|				goto yy116;
 2602|      4|			} else {
 2603|      4|				if (yych <= 'I') goto yy161;
  ------------------
  |  Branch (2603:9): [True: 1, False: 3]
  ------------------
 2604|      3|				if (yych <= 'N') goto yy116;
  ------------------
  |  Branch (2604:9): [True: 2, False: 1]
  ------------------
 2605|      1|				goto yy162;
 2606|      3|			}
 2607|      4|		}
 2608|    224|	} else {
 2609|    224|		if (yych <= 'h') {
  ------------------
  |  Branch (2609:7): [True: 98, False: 126]
  ------------------
 2610|     98|			if (yych <= '`') {
  ------------------
  |  Branch (2610:8): [True: 10, False: 88]
  ------------------
 2611|     10|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2611:9): [True: 7, False: 3]
  ------------------
 2612|      3|				goto yy20;
 2613|     88|			} else {
 2614|     88|				if (yych == 'e') goto yy160;
  ------------------
  |  Branch (2614:9): [True: 70, False: 18]
  ------------------
 2615|     18|				goto yy116;
 2616|     88|			}
 2617|    126|		} else {
 2618|    126|			if (yych <= 'n') {
  ------------------
  |  Branch (2618:8): [True: 18, False: 108]
  ------------------
 2619|     18|				if (yych <= 'i') goto yy161;
  ------------------
  |  Branch (2619:9): [True: 4, False: 14]
  ------------------
 2620|     14|				goto yy116;
 2621|    108|			} else {
 2622|    108|				if (yych <= 'o') goto yy162;
  ------------------
  |  Branch (2622:9): [True: 45, False: 63]
  ------------------
 2623|     63|				if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2623:9): [True: 47, False: 16]
  ------------------
 2624|     16|				goto yy20;
 2625|     63|			}
 2626|    126|		}
 2627|    224|	}
 2628|    256|yy50:
 2629|    256|	YYDEBUG(50, *YYCURSOR);
 2630|    256|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    256|#define   YYCURSOR     cursor
  ------------------
 2631|    256|	if (yych <= 'C') {
  ------------------
  |  Branch (2631:6): [True: 96, False: 160]
  ------------------
 2632|     96|		if (yych <= ')') {
  ------------------
  |  Branch (2632:7): [True: 47, False: 49]
  ------------------
 2633|     47|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2633:8): [True: 46, False: 1]
  ------------------
 2634|      1|			goto yy115;
 2635|     49|		} else {
 2636|     49|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2636:8): [True: 49, False: 0]
  ------------------
 2637|      0|			if (yych <= 'B') goto yy116;
  ------------------
  |  Branch (2637:8): [True: 0, False: 0]
  ------------------
 2638|      0|			goto yy166;
 2639|      0|		}
 2640|    160|	} else {
 2641|    160|		if (yych <= 'b') {
  ------------------
  |  Branch (2641:7): [True: 23, False: 137]
  ------------------
 2642|     23|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2642:8): [True: 18, False: 5]
  ------------------
 2643|      5|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2643:8): [True: 1, False: 4]
  ------------------
 2644|      4|			goto yy116;
 2645|    137|		} else {
 2646|    137|			if (yych <= 'c') goto yy166;
  ------------------
  |  Branch (2646:8): [True: 1, False: 136]
  ------------------
 2647|    136|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2647:8): [True: 99, False: 37]
  ------------------
 2648|     37|			goto yy20;
 2649|    136|		}
 2650|    160|	}
 2651|    206|yy51:
 2652|    206|	YYDEBUG(51, *YYCURSOR);
 2653|    206|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    206|#define   YYCURSOR     cursor
  ------------------
 2654|    206|	if (yych <= 'R') {
  ------------------
  |  Branch (2654:6): [True: 126, False: 80]
  ------------------
 2655|    126|		if (yych <= ')') {
  ------------------
  |  Branch (2655:7): [True: 72, False: 54]
  ------------------
 2656|     72|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2656:8): [True: 72, False: 0]
  ------------------
 2657|      0|			goto yy115;
 2658|     72|		} else {
 2659|     54|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2659:8): [True: 40, False: 14]
  ------------------
 2660|     14|			if (yych <= 'Q') goto yy116;
  ------------------
  |  Branch (2660:8): [True: 12, False: 2]
  ------------------
 2661|      2|			goto yy168;
 2662|     14|		}
 2663|    126|	} else {
 2664|     80|		if (yych <= 'q') {
  ------------------
  |  Branch (2664:7): [True: 45, False: 35]
  ------------------
 2665|     45|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2665:8): [True: 0, False: 45]
  ------------------
 2666|     45|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2666:8): [True: 4, False: 41]
  ------------------
 2667|     41|			goto yy116;
 2668|     45|		} else {
 2669|     35|			if (yych <= 'r') goto yy168;
  ------------------
  |  Branch (2669:8): [True: 10, False: 25]
  ------------------
 2670|     25|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2670:8): [True: 7, False: 18]
  ------------------
 2671|     18|			goto yy20;
 2672|     25|		}
 2673|     80|	}
 2674|    282|yy52:
 2675|    282|	YYDEBUG(52, *YYCURSOR);
 2676|    282|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    282|#define   YYCURSOR     cursor
  ------------------
 2677|    282|	if (yych <= 'U') {
  ------------------
  |  Branch (2677:6): [True: 84, False: 198]
  ------------------
 2678|     84|		if (yych <= 'D') {
  ------------------
  |  Branch (2678:7): [True: 67, False: 17]
  ------------------
 2679|     67|			if (yych <= ')') {
  ------------------
  |  Branch (2679:8): [True: 27, False: 40]
  ------------------
 2680|     27|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2680:9): [True: 26, False: 1]
  ------------------
 2681|      1|				goto yy115;
 2682|     40|			} else {
 2683|     40|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2683:9): [True: 31, False: 9]
  ------------------
 2684|      9|				if (yych <= 'A') goto yy170;
  ------------------
  |  Branch (2684:9): [True: 4, False: 5]
  ------------------
 2685|      5|				goto yy116;
 2686|      9|			}
 2687|     67|		} else {
 2688|     17|			if (yych <= 'H') {
  ------------------
  |  Branch (2688:8): [True: 4, False: 13]
  ------------------
 2689|      4|				if (yych <= 'E') goto yy171;
  ------------------
  |  Branch (2689:9): [True: 2, False: 2]
  ------------------
 2690|      2|				goto yy116;
 2691|     13|			} else {
 2692|     13|				if (yych <= 'I') goto yy172;
  ------------------
  |  Branch (2692:9): [True: 0, False: 13]
  ------------------
 2693|     13|				if (yych <= 'T') goto yy116;
  ------------------
  |  Branch (2693:9): [True: 10, False: 3]
  ------------------
 2694|      3|				goto yy156;
 2695|     13|			}
 2696|     17|		}
 2697|    198|	} else {
 2698|    198|		if (yych <= 'e') {
  ------------------
  |  Branch (2698:7): [True: 94, False: 104]
  ------------------
 2699|     94|			if (yych <= '`') {
  ------------------
  |  Branch (2699:8): [True: 4, False: 90]
  ------------------
 2700|      4|				if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2700:9): [True: 0, False: 4]
  ------------------
 2701|      4|				goto yy20;
 2702|     90|			} else {
 2703|     90|				if (yych <= 'a') goto yy170;
  ------------------
  |  Branch (2703:9): [True: 13, False: 77]
  ------------------
 2704|     77|				if (yych <= 'd') goto yy116;
  ------------------
  |  Branch (2704:9): [True: 10, False: 67]
  ------------------
 2705|     67|				goto yy171;
 2706|     77|			}
 2707|    104|		} else {
 2708|    104|			if (yych <= 't') {
  ------------------
  |  Branch (2708:8): [True: 65, False: 39]
  ------------------
 2709|     65|				if (yych == 'i') goto yy172;
  ------------------
  |  Branch (2709:9): [True: 1, False: 64]
  ------------------
 2710|     64|				goto yy116;
 2711|     65|			} else {
 2712|     39|				if (yych <= 'u') goto yy156;
  ------------------
  |  Branch (2712:9): [True: 14, False: 25]
  ------------------
 2713|     25|				if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2713:9): [True: 5, False: 20]
  ------------------
 2714|     20|				goto yy20;
 2715|     25|			}
 2716|    104|		}
 2717|    198|	}
 2718|    246|yy53:
 2719|    246|	YYDEBUG(53, *YYCURSOR);
 2720|    246|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    246|#define   YYCURSOR     cursor
  ------------------
 2721|    246|	switch (yych) {
 2722|      2|	case ')':	goto yy115;
  ------------------
  |  Branch (2722:2): [True: 2, False: 244]
  ------------------
 2723|      6|	case '0':
  ------------------
  |  Branch (2723:2): [True: 6, False: 240]
  ------------------
 2724|      9|	case '1':	goto yy176;
  ------------------
  |  Branch (2724:2): [True: 3, False: 243]
  ------------------
 2725|      4|	case '2':	goto yy178;
  ------------------
  |  Branch (2725:2): [True: 4, False: 242]
  ------------------
 2726|      0|	case '3':
  ------------------
  |  Branch (2726:2): [True: 0, False: 246]
  ------------------
 2727|      1|	case '4':
  ------------------
  |  Branch (2727:2): [True: 1, False: 245]
  ------------------
 2728|      1|	case '5':
  ------------------
  |  Branch (2728:2): [True: 0, False: 246]
  ------------------
 2729|      1|	case '6':
  ------------------
  |  Branch (2729:2): [True: 0, False: 246]
  ------------------
 2730|      2|	case '7':
  ------------------
  |  Branch (2730:2): [True: 1, False: 245]
  ------------------
 2731|      3|	case '8':
  ------------------
  |  Branch (2731:2): [True: 1, False: 245]
  ------------------
 2732|      6|	case '9':	goto yy179;
  ------------------
  |  Branch (2732:2): [True: 3, False: 243]
  ------------------
 2733|      1|	case 'A':
  ------------------
  |  Branch (2733:2): [True: 1, False: 245]
  ------------------
 2734|      4|	case 'B':
  ------------------
  |  Branch (2734:2): [True: 3, False: 243]
  ------------------
 2735|      4|	case 'C':
  ------------------
  |  Branch (2735:2): [True: 0, False: 246]
  ------------------
 2736|      4|	case 'D':
  ------------------
  |  Branch (2736:2): [True: 0, False: 246]
  ------------------
 2737|      4|	case 'F':
  ------------------
  |  Branch (2737:2): [True: 0, False: 246]
  ------------------
 2738|      4|	case 'G':
  ------------------
  |  Branch (2738:2): [True: 0, False: 246]
  ------------------
 2739|      5|	case 'I':
  ------------------
  |  Branch (2739:2): [True: 1, False: 245]
  ------------------
 2740|      5|	case 'J':
  ------------------
  |  Branch (2740:2): [True: 0, False: 246]
  ------------------
 2741|      5|	case 'K':
  ------------------
  |  Branch (2741:2): [True: 0, False: 246]
  ------------------
 2742|      5|	case 'L':
  ------------------
  |  Branch (2742:2): [True: 0, False: 246]
  ------------------
 2743|      6|	case 'M':
  ------------------
  |  Branch (2743:2): [True: 1, False: 245]
  ------------------
 2744|     11|	case 'N':
  ------------------
  |  Branch (2744:2): [True: 5, False: 241]
  ------------------
 2745|     12|	case 'P':
  ------------------
  |  Branch (2745:2): [True: 1, False: 245]
  ------------------
 2746|     12|	case 'Q':
  ------------------
  |  Branch (2746:2): [True: 0, False: 246]
  ------------------
 2747|     12|	case 'R':
  ------------------
  |  Branch (2747:2): [True: 0, False: 246]
  ------------------
 2748|     12|	case 'S':
  ------------------
  |  Branch (2748:2): [True: 0, False: 246]
  ------------------
 2749|     12|	case 'T':
  ------------------
  |  Branch (2749:2): [True: 0, False: 246]
  ------------------
 2750|     13|	case 'V':
  ------------------
  |  Branch (2750:2): [True: 1, False: 245]
  ------------------
 2751|     14|	case 'X':
  ------------------
  |  Branch (2751:2): [True: 1, False: 245]
  ------------------
 2752|     14|	case 'Y':
  ------------------
  |  Branch (2752:2): [True: 0, False: 246]
  ------------------
 2753|     14|	case 'Z':
  ------------------
  |  Branch (2753:2): [True: 0, False: 246]
  ------------------
 2754|     19|	case 'a':
  ------------------
  |  Branch (2754:2): [True: 5, False: 241]
  ------------------
 2755|     23|	case 'b':
  ------------------
  |  Branch (2755:2): [True: 4, False: 242]
  ------------------
 2756|     23|	case 'c':
  ------------------
  |  Branch (2756:2): [True: 0, False: 246]
  ------------------
 2757|     24|	case 'd':
  ------------------
  |  Branch (2757:2): [True: 1, False: 245]
  ------------------
 2758|     30|	case 'f':
  ------------------
  |  Branch (2758:2): [True: 6, False: 240]
  ------------------
 2759|     30|	case 'g':
  ------------------
  |  Branch (2759:2): [True: 0, False: 246]
  ------------------
 2760|     52|	case 'i':
  ------------------
  |  Branch (2760:2): [True: 22, False: 224]
  ------------------
 2761|     56|	case 'j':
  ------------------
  |  Branch (2761:2): [True: 4, False: 242]
  ------------------
 2762|     56|	case 'k':
  ------------------
  |  Branch (2762:2): [True: 0, False: 246]
  ------------------
 2763|     56|	case 'l':
  ------------------
  |  Branch (2763:2): [True: 0, False: 246]
  ------------------
 2764|     60|	case 'm':
  ------------------
  |  Branch (2764:2): [True: 4, False: 242]
  ------------------
 2765|     66|	case 'n':
  ------------------
  |  Branch (2765:2): [True: 6, False: 240]
  ------------------
 2766|     69|	case 'p':
  ------------------
  |  Branch (2766:2): [True: 3, False: 243]
  ------------------
 2767|     69|	case 'q':
  ------------------
  |  Branch (2767:2): [True: 0, False: 246]
  ------------------
 2768|     82|	case 'r':
  ------------------
  |  Branch (2768:2): [True: 13, False: 233]
  ------------------
 2769|     86|	case 's':
  ------------------
  |  Branch (2769:2): [True: 4, False: 242]
  ------------------
 2770|    101|	case 't':
  ------------------
  |  Branch (2770:2): [True: 15, False: 231]
  ------------------
 2771|    101|	case 'v':
  ------------------
  |  Branch (2771:2): [True: 0, False: 246]
  ------------------
 2772|    101|	case 'x':
  ------------------
  |  Branch (2772:2): [True: 0, False: 246]
  ------------------
 2773|    103|	case 'y':
  ------------------
  |  Branch (2773:2): [True: 2, False: 244]
  ------------------
 2774|    108|	case 'z':	goto yy116;
  ------------------
  |  Branch (2774:2): [True: 5, False: 241]
  ------------------
 2775|      1|	case 'E':
  ------------------
  |  Branch (2775:2): [True: 1, False: 245]
  ------------------
 2776|     30|	case 'e':	goto yy161;
  ------------------
  |  Branch (2776:2): [True: 29, False: 217]
  ------------------
 2777|      2|	case 'H':
  ------------------
  |  Branch (2777:2): [True: 2, False: 244]
  ------------------
 2778|     20|	case 'h':	goto yy180;
  ------------------
  |  Branch (2778:2): [True: 18, False: 228]
  ------------------
 2779|      2|	case 'O':
  ------------------
  |  Branch (2779:2): [True: 2, False: 244]
  ------------------
 2780|      3|	case 'o':	goto yy181;
  ------------------
  |  Branch (2780:2): [True: 1, False: 245]
  ------------------
 2781|      0|	case 'U':
  ------------------
  |  Branch (2781:2): [True: 0, False: 246]
  ------------------
 2782|      4|	case 'u':	goto yy182;
  ------------------
  |  Branch (2782:2): [True: 4, False: 242]
  ------------------
 2783|      5|	case 'W':
  ------------------
  |  Branch (2783:2): [True: 5, False: 241]
  ------------------
 2784|      5|	case 'w':	goto yy183;
  ------------------
  |  Branch (2784:2): [True: 0, False: 246]
  ------------------
 2785|     55|	default:	goto yy20;
  ------------------
  |  Branch (2785:2): [True: 55, False: 191]
  ------------------
 2786|    246|	}
 2787|     93|yy54:
 2788|     93|	YYDEBUG(54, *YYCURSOR);
 2789|     93|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     93|#define   YYCURSOR     cursor
  ------------------
 2790|     93|	if (yych <= 'E') {
  ------------------
  |  Branch (2790:6): [True: 46, False: 47]
  ------------------
 2791|     46|		if (yych <= ')') {
  ------------------
  |  Branch (2791:7): [True: 19, False: 27]
  ------------------
 2792|     19|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2792:8): [True: 18, False: 1]
  ------------------
 2793|      1|			goto yy115;
 2794|     27|		} else {
 2795|     27|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2795:8): [True: 24, False: 3]
  ------------------
 2796|      3|			if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (2796:8): [True: 1, False: 2]
  ------------------
 2797|      2|			goto yy189;
 2798|      3|		}
 2799|     47|	} else {
 2800|     47|		if (yych <= 'd') {
  ------------------
  |  Branch (2800:7): [True: 7, False: 40]
  ------------------
 2801|      7|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2801:8): [True: 2, False: 5]
  ------------------
 2802|      5|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2802:8): [True: 2, False: 3]
  ------------------
 2803|      3|			goto yy116;
 2804|     40|		} else {
 2805|     40|			if (yych <= 'e') goto yy189;
  ------------------
  |  Branch (2805:8): [True: 9, False: 31]
  ------------------
 2806|     31|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2806:8): [True: 29, False: 2]
  ------------------
 2807|      2|			goto yy20;
 2808|     31|		}
 2809|     47|	}
 2810|    104|yy55:
 2811|    104|	YYDEBUG(55, *YYCURSOR);
 2812|    104|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    104|#define   YYCURSOR     cursor
  ------------------
 2813|    104|	if (yych <= 'E') {
  ------------------
  |  Branch (2813:6): [True: 54, False: 50]
  ------------------
 2814|     54|		if (yych <= ')') {
  ------------------
  |  Branch (2814:7): [True: 38, False: 16]
  ------------------
 2815|     38|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (2815:8): [True: 38, False: 0]
  ------------------
 2816|      0|			goto yy115;
 2817|     38|		} else {
 2818|     16|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (2818:8): [True: 12, False: 4]
  ------------------
 2819|      4|			if (yych <= 'D') goto yy116;
  ------------------
  |  Branch (2819:8): [True: 1, False: 3]
  ------------------
 2820|      3|			goto yy191;
 2821|      4|		}
 2822|     54|	} else {
 2823|     50|		if (yych <= 'd') {
  ------------------
  |  Branch (2823:7): [True: 6, False: 44]
  ------------------
 2824|      6|			if (yych <= 'Z') goto yy116;
  ------------------
  |  Branch (2824:8): [True: 6, False: 0]
  ------------------
 2825|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (2825:8): [True: 0, False: 0]
  ------------------
 2826|      0|			goto yy116;
 2827|     44|		} else {
 2828|     44|			if (yych <= 'e') goto yy191;
  ------------------
  |  Branch (2828:8): [True: 3, False: 41]
  ------------------
 2829|     41|			if (yych <= 'z') goto yy116;
  ------------------
  |  Branch (2829:8): [True: 25, False: 16]
  ------------------
 2830|     16|			goto yy20;
 2831|     41|		}
 2832|     50|	}
 2833|    239|yy56:
 2834|    239|	YYDEBUG(56, *YYCURSOR);
 2835|    239|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    239|#define   YYCURSOR     cursor
  ------------------
 2836|    239|	if (yych == 0xA0) goto yy193;
  ------------------
  |  Branch (2836:6): [True: 36, False: 203]
  ------------------
 2837|    203|	goto yy5;
 2838|    203|yy57:
 2839|    109|	YYDEBUG(57, *YYCURSOR);
 2840|    109|	yyaccept = 1;
 2841|    109|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    109|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    109|#define   YYCURSOR     cursor
  ------------------
 2842|    109|	if (yych == 0x80) goto yy194;
  ------------------
  |  Branch (2842:6): [True: 4, False: 105]
  ------------------
 2843|    105|	goto yy5;
 2844|    704|yy58:
 2845|    704|	YYDEBUG(58, *YYCURSOR);
 2846|    704|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    704|#define   YYCURSOR     cursor
  ------------------
 2847|    704|	if (yych <= 0xC1) {
  ------------------
  |  Branch (2847:6): [True: 680, False: 24]
  ------------------
 2848|    680|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (2848:7): [True: 75, False: 605]
  ------------------
 2849|    605|		if (yych <= '9') goto yy197;
  ------------------
  |  Branch (2849:7): [True: 435, False: 170]
  ------------------
 2850|    170|		goto yy196;
 2851|    605|	} else {
 2852|     24|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (2852:7): [True: 4, False: 20]
  ------------------
 2853|     20|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (2853:7): [True: 0, False: 20]
  ------------------
 2854|     20|		goto yy196;
 2855|     20|	}
 2856|  6.00k|yy59:
 2857|  6.00k|	YYDEBUG(59, *YYCURSOR);
 2858|  6.00k|	YYCURSOR = YYMARKER;
  ------------------
  |  |   89|  6.00k|#define   YYCURSOR     cursor
  ------------------
              	YYCURSOR = YYMARKER;
  ------------------
  |  |   91|  6.00k|#define   YYMARKER     s->ptr
  ------------------
 2859|  6.00k|	if (yyaccept <= 16) {
  ------------------
  |  Branch (2859:6): [True: 5.75k, False: 247]
  ------------------
 2860|  5.75k|		if (yyaccept <= 8) {
  ------------------
  |  Branch (2860:7): [True: 5.09k, False: 654]
  ------------------
 2861|  5.09k|			if (yyaccept <= 4) {
  ------------------
  |  Branch (2861:8): [True: 5.03k, False: 67]
  ------------------
 2862|  5.03k|				if (yyaccept <= 2) {
  ------------------
  |  Branch (2862:9): [True: 4.94k, False: 90]
  ------------------
 2863|  4.94k|					if (yyaccept <= 1) {
  ------------------
  |  Branch (2863:10): [True: 4.53k, False: 403]
  ------------------
 2864|  4.53k|						if (yyaccept == 0) {
  ------------------
  |  Branch (2864:11): [True: 202, False: 4.33k]
  ------------------
 2865|    202|							goto yy8;
 2866|  4.33k|						} else {
 2867|  4.33k|							goto yy5;
 2868|  4.33k|						}
 2869|  4.53k|					} else {
 2870|    403|						goto yy20;
 2871|    403|					}
 2872|  4.94k|				} else {
 2873|     90|					if (yyaccept == 3) {
  ------------------
  |  Branch (2873:10): [True: 17, False: 73]
  ------------------
 2874|     17|						goto yy81;
 2875|     73|					} else {
 2876|     73|						goto yy177;
 2877|     73|					}
 2878|     90|				}
 2879|  5.03k|			} else {
 2880|     67|				if (yyaccept <= 6) {
  ------------------
  |  Branch (2880:9): [True: 15, False: 52]
  ------------------
 2881|     15|					if (yyaccept == 5) {
  ------------------
  |  Branch (2881:10): [True: 12, False: 3]
  ------------------
 2882|     12|						goto yy224;
 2883|     12|					} else {
 2884|      3|						goto yy260;
 2885|      3|					}
 2886|     52|				} else {
 2887|     52|					if (yyaccept == 7) {
  ------------------
  |  Branch (2887:10): [True: 52, False: 0]
  ------------------
 2888|     52|						goto yy295;
 2889|     52|					} else {
 2890|      0|						goto yy293;
 2891|      0|					}
 2892|     52|				}
 2893|     67|			}
 2894|  5.09k|		} else {
 2895|    654|			if (yyaccept <= 12) {
  ------------------
  |  Branch (2895:8): [True: 162, False: 492]
  ------------------
 2896|    162|				if (yyaccept <= 10) {
  ------------------
  |  Branch (2896:9): [True: 4, False: 158]
  ------------------
 2897|      4|					if (yyaccept == 9) {
  ------------------
  |  Branch (2897:10): [True: 0, False: 4]
  ------------------
 2898|      0|						goto yy315;
 2899|      4|					} else {
 2900|      4|						goto yy325;
 2901|      4|					}
 2902|    158|				} else {
 2903|    158|					if (yyaccept == 11) {
  ------------------
  |  Branch (2903:10): [True: 0, False: 158]
  ------------------
 2904|      0|						goto yy351;
 2905|    158|					} else {
 2906|    158|						goto yy420;
 2907|    158|					}
 2908|    158|				}
 2909|    492|			} else {
 2910|    492|				if (yyaccept <= 14) {
  ------------------
  |  Branch (2910:9): [True: 492, False: 0]
  ------------------
 2911|    492|					if (yyaccept == 13) {
  ------------------
  |  Branch (2911:10): [True: 492, False: 0]
  ------------------
 2912|    492|						goto yy422;
 2913|    492|					} else {
 2914|      0|						goto yy526;
 2915|      0|					}
 2916|    492|				} else {
 2917|      0|					if (yyaccept == 15) {
  ------------------
  |  Branch (2917:10): [True: 0, False: 0]
  ------------------
 2918|      0|						goto yy567;
 2919|      0|					} else {
 2920|      0|						goto yy722;
 2921|      0|					}
 2922|      0|				}
 2923|    492|			}
 2924|    654|		}
 2925|  5.75k|	} else {
 2926|    247|		if (yyaccept <= 25) {
  ------------------
  |  Branch (2926:7): [True: 158, False: 89]
  ------------------
 2927|    158|			if (yyaccept <= 21) {
  ------------------
  |  Branch (2927:8): [True: 151, False: 7]
  ------------------
 2928|    151|				if (yyaccept <= 19) {
  ------------------
  |  Branch (2928:9): [True: 42, False: 109]
  ------------------
 2929|     42|					if (yyaccept <= 18) {
  ------------------
  |  Branch (2929:10): [True: 1, False: 41]
  ------------------
 2930|      1|						if (yyaccept == 17) {
  ------------------
  |  Branch (2930:11): [True: 0, False: 1]
  ------------------
 2931|      0|							goto yy739;
 2932|      1|						} else {
 2933|      1|							goto yy752;
 2934|      1|						}
 2935|     41|					} else {
 2936|     41|						goto yy777;
 2937|     41|					}
 2938|    109|				} else {
 2939|    109|					if (yyaccept == 20) {
  ------------------
  |  Branch (2939:10): [True: 7, False: 102]
  ------------------
 2940|      7|						goto yy849;
 2941|    102|					} else {
 2942|    102|						goto yy926;
 2943|    102|					}
 2944|    109|				}
 2945|    151|			} else {
 2946|      7|				if (yyaccept <= 23) {
  ------------------
  |  Branch (2946:9): [True: 7, False: 0]
  ------------------
 2947|      7|					if (yyaccept == 22) {
  ------------------
  |  Branch (2947:10): [True: 7, False: 0]
  ------------------
 2948|      7|						goto yy600;
 2949|      7|					} else {
 2950|      0|						goto yy942;
 2951|      0|					}
 2952|      7|				} else {
 2953|      0|					if (yyaccept == 24) {
  ------------------
  |  Branch (2953:10): [True: 0, False: 0]
  ------------------
 2954|      0|						goto yy982;
 2955|      0|					} else {
 2956|      0|						goto yy1025;
 2957|      0|					}
 2958|      0|				}
 2959|      7|			}
 2960|    158|		} else {
 2961|     89|			if (yyaccept <= 29) {
  ------------------
  |  Branch (2961:8): [True: 89, False: 0]
  ------------------
 2962|     89|				if (yyaccept <= 27) {
  ------------------
  |  Branch (2962:9): [True: 89, False: 0]
  ------------------
 2963|     89|					if (yyaccept == 26) {
  ------------------
  |  Branch (2963:10): [True: 3, False: 86]
  ------------------
 2964|      3|						goto yy1043;
 2965|     86|					} else {
 2966|     86|						goto yy1048;
 2967|     86|					}
 2968|     89|				} else {
 2969|      0|					if (yyaccept == 28) {
  ------------------
  |  Branch (2969:10): [True: 0, False: 0]
  ------------------
 2970|      0|						goto yy1107;
 2971|      0|					} else {
 2972|      0|						goto yy1145;
 2973|      0|					}
 2974|      0|				}
 2975|     89|			} else {
 2976|      0|				if (yyaccept <= 31) {
  ------------------
  |  Branch (2976:9): [True: 0, False: 0]
  ------------------
 2977|      0|					if (yyaccept == 30) {
  ------------------
  |  Branch (2977:10): [True: 0, False: 0]
  ------------------
 2978|      0|						goto yy1172;
 2979|      0|					} else {
 2980|      0|						goto yy1175;
 2981|      0|					}
 2982|      0|				} else {
 2983|      0|					if (yyaccept == 32) {
  ------------------
  |  Branch (2983:10): [True: 0, False: 0]
  ------------------
 2984|      0|						goto yy1329;
 2985|      0|					} else {
 2986|      0|						goto yy1375;
 2987|      0|					}
 2988|      0|				}
 2989|      0|			}
 2990|     89|		}
 2991|    247|	}
 2992|     96|yy60:
 2993|     96|	YYDEBUG(60, *YYCURSOR);
 2994|     96|	++YYCURSOR;
  ------------------
  |  |   89|     96|#define   YYCURSOR     cursor
  ------------------
 2995|     96|	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   90|     96|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   89|     96|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (2995:6): [True: 0, False: 96]
  ------------------
 2996|     96|	yych = *YYCURSOR;
  ------------------
  |  |   89|     96|#define   YYCURSOR     cursor
  ------------------
 2997|     96|	YYDEBUG(61, *YYCURSOR);
 2998|     96|	if (yych <= 0x1F) {
  ------------------
  |  Branch (2998:6): [True: 32, False: 64]
  ------------------
 2999|     32|		if (yych == '\t') goto yy60;
  ------------------
  |  Branch (2999:7): [True: 25, False: 7]
  ------------------
 3000|      7|		goto yy59;
 3001|     64|	} else {
 3002|     64|		if (yych <= ' ') goto yy60;
  ------------------
  |  Branch (3002:7): [True: 3, False: 61]
  ------------------
 3003|     61|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (3003:7): [True: 25, False: 36]
  ------------------
 3004|     36|		if (yych <= '9') goto yy58;
  ------------------
  |  Branch (3004:7): [True: 27, False: 9]
  ------------------
 3005|      9|		goto yy59;
 3006|     36|	}
 3007|  8.97k|yy62:
 3008|  8.97k|	YYDEBUG(62, *YYCURSOR);
 3009|  8.97k|	++YYCURSOR;
  ------------------
  |  |   89|  8.97k|#define   YYCURSOR     cursor
  ------------------
 3010|  8.97k|	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   90|  8.97k|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   89|  8.97k|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 25) YYFILL(25);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (3010:6): [True: 0, False: 8.97k]
  ------------------
 3011|  8.97k|	yych = *YYCURSOR;
  ------------------
  |  |   89|  8.97k|#define   YYCURSOR     cursor
  ------------------
 3012|  8.97k|	YYDEBUG(63, *YYCURSOR);
 3013|  8.97k|	if (yybm[0+yych] & 4) {
  ------------------
  |  Branch (3013:6): [True: 8.29k, False: 680]
  ------------------
 3014|  8.29k|		goto yy62;
 3015|  8.29k|	}
 3016|    680|	if (yych <= 0x1F) {
  ------------------
  |  Branch (3016:6): [True: 61, False: 619]
  ------------------
 3017|     61|		if (yych == '\t') goto yy60;
  ------------------
  |  Branch (3017:7): [True: 8, False: 53]
  ------------------
 3018|     53|		goto yy59;
 3019|    619|	} else {
 3020|    619|		if (yych <= ' ') goto yy60;
  ------------------
  |  Branch (3020:7): [True: 19, False: 600]
  ------------------
 3021|    600|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (3021:7): [True: 29, False: 571]
  ------------------
 3022|    571|		if (yych <= '9') goto yy58;
  ------------------
  |  Branch (3022:7): [True: 471, False: 100]
  ------------------
 3023|    100|		goto yy59;
 3024|    571|	}
 3025|    284|yy64:
 3026|    284|	YYDEBUG(64, *YYCURSOR);
 3027|    284|	yyaccept = 2;
 3028|    284|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    284|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    284|#define   YYCURSOR     cursor
  ------------------
 3029|    284|	if (yych <= 'X') {
  ------------------
  |  Branch (3029:6): [True: 254, False: 30]
  ------------------
 3030|    254|		if (yych <= 'E') {
  ------------------
  |  Branch (3030:7): [True: 231, False: 23]
  ------------------
 3031|    231|			if (yych <= '/') {
  ------------------
  |  Branch (3031:8): [True: 34, False: 197]
  ------------------
 3032|     34|				if (yych <= '\t') {
  ------------------
  |  Branch (3032:9): [True: 8, False: 26]
  ------------------
 3033|      8|					if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (3033:10): [True: 4, False: 4]
  ------------------
 3034|      4|					goto yy196;
 3035|     26|				} else {
 3036|     26|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (3036:10): [True: 8, False: 18]
  ------------------
 3037|     18|					goto yy20;
 3038|     26|				}
 3039|    197|			} else {
 3040|    197|				if (yych <= ':') {
  ------------------
  |  Branch (3040:9): [True: 192, False: 5]
  ------------------
 3041|    192|					if (yych <= '9') goto yy202;
  ------------------
  |  Branch (3041:10): [True: 161, False: 31]
  ------------------
 3042|     31|					goto yy203;
 3043|    192|				} else {
 3044|      5|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (3044:10): [True: 1, False: 4]
  ------------------
 3045|      4|					goto yy20;
 3046|      5|				}
 3047|    197|			}
 3048|    231|		} else {
 3049|     23|			if (yych <= 'M') {
  ------------------
  |  Branch (3049:8): [True: 2, False: 21]
  ------------------
 3050|      2|				if (yych <= 'G') {
  ------------------
  |  Branch (3050:9): [True: 1, False: 1]
  ------------------
 3051|      1|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (3051:10): [True: 0, False: 1]
  ------------------
 3052|      1|					goto yy20;
 3053|      1|				} else {
 3054|      1|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (3054:10): [True: 0, False: 1]
  ------------------
 3055|      1|					if (yych <= 'L') goto yy20;
  ------------------
  |  Branch (3055:10): [True: 0, False: 1]
  ------------------
 3056|      1|					goto yy196;
 3057|      1|				}
 3058|     21|			} else {
 3059|     21|				if (yych <= 'U') {
  ------------------
  |  Branch (3059:9): [True: 15, False: 6]
  ------------------
 3060|     15|					if (yych <= 'R') goto yy20;
  ------------------
  |  Branch (3060:10): [True: 9, False: 6]
  ------------------
 3061|      6|					goto yy196;
 3062|     15|				} else {
 3063|      6|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (3063:10): [True: 0, False: 6]
  ------------------
 3064|      6|					goto yy20;
 3065|      6|				}
 3066|     21|			}
 3067|     23|		}
 3068|    254|	} else {
 3069|     30|		if (yych <= 'r') {
  ------------------
  |  Branch (3069:7): [True: 11, False: 19]
  ------------------
 3070|     11|			if (yych <= 'f') {
  ------------------
  |  Branch (3070:8): [True: 6, False: 5]
  ------------------
 3071|      6|				if (yych <= 'c') {
  ------------------
  |  Branch (3071:9): [True: 5, False: 1]
  ------------------
 3072|      5|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (3072:10): [True: 0, False: 5]
  ------------------
 3073|      5|					goto yy20;
 3074|      5|				} else {
 3075|      1|					if (yych == 'e') goto yy20;
  ------------------
  |  Branch (3075:10): [True: 1, False: 0]
  ------------------
 3076|      0|					goto yy196;
 3077|      1|				}
 3078|      6|			} else {
 3079|      5|				if (yych <= 'h') {
  ------------------
  |  Branch (3079:9): [True: 0, False: 5]
  ------------------
 3080|      0|					if (yych <= 'g') goto yy20;
  ------------------
  |  Branch (3080:10): [True: 0, False: 0]
  ------------------
 3081|      0|					goto yy196;
 3082|      5|				} else {
 3083|      5|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (3083:10): [True: 0, False: 5]
  ------------------
 3084|      5|					goto yy20;
 3085|      5|				}
 3086|      5|			}
 3087|     19|		} else {
 3088|     19|			if (yych <= 'y') {
  ------------------
  |  Branch (3088:8): [True: 1, False: 18]
  ------------------
 3089|      1|				if (yych <= 'v') {
  ------------------
  |  Branch (3089:9): [True: 0, False: 1]
  ------------------
 3090|      0|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (3090:10): [True: 0, False: 0]
  ------------------
 3091|      0|					goto yy20;
 3092|      1|				} else {
 3093|      1|					if (yych == 'x') goto yy20;
  ------------------
  |  Branch (3093:10): [True: 1, False: 0]
  ------------------
 3094|      0|					goto yy196;
 3095|      1|				}
 3096|     18|			} else {
 3097|     18|				if (yych <= 0xC2) {
  ------------------
  |  Branch (3097:9): [True: 8, False: 10]
  ------------------
 3098|      8|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (3098:10): [True: 8, False: 0]
  ------------------
 3099|      0|					goto yy97;
 3100|     10|				} else {
 3101|     10|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (3101:10): [True: 0, False: 10]
  ------------------
 3102|     10|					goto yy20;
 3103|     10|				}
 3104|     18|			}
 3105|     19|		}
 3106|     30|	}
 3107|    109|yy65:
 3108|    109|	YYDEBUG(65, *YYCURSOR);
 3109|    109|	yyaccept = 2;
 3110|    109|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    109|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    109|#define   YYCURSOR     cursor
  ------------------
 3111|    109|	if (yych <= 'W') {
  ------------------
  |  Branch (3111:6): [True: 98, False: 11]
  ------------------
 3112|     98|		if (yych <= 'C') {
  ------------------
  |  Branch (3112:7): [True: 95, False: 3]
  ------------------
 3113|     95|			if (yych <= '/') {
  ------------------
  |  Branch (3113:8): [True: 54, False: 41]
  ------------------
 3114|     54|				if (yych <= '\t') {
  ------------------
  |  Branch (3114:9): [True: 13, False: 41]
  ------------------
 3115|     13|					if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (3115:10): [True: 13, False: 0]
  ------------------
 3116|      0|					goto yy196;
 3117|     41|				} else {
 3118|     41|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (3118:10): [True: 0, False: 41]
  ------------------
 3119|     41|					goto yy20;
 3120|     41|				}
 3121|     54|			} else {
 3122|     41|				if (yych <= '5') {
  ------------------
  |  Branch (3122:9): [True: 18, False: 23]
  ------------------
 3123|     18|					if (yych <= '4') goto yy202;
  ------------------
  |  Branch (3123:10): [True: 11, False: 7]
  ------------------
 3124|      7|					goto yy204;
 3125|     23|				} else {
 3126|     23|					if (yych <= '9') goto yy205;
  ------------------
  |  Branch (3126:10): [True: 18, False: 5]
  ------------------
 3127|      5|					if (yych <= ':') goto yy203;
  ------------------
  |  Branch (3127:10): [True: 2, False: 3]
  ------------------
 3128|      3|					goto yy20;
 3129|      5|				}
 3130|     41|			}
 3131|     95|		} else {
 3132|      3|			if (yych <= 'H') {
  ------------------
  |  Branch (3132:8): [True: 2, False: 1]
  ------------------
 3133|      2|				if (yych <= 'E') {
  ------------------
  |  Branch (3133:9): [True: 2, False: 0]
  ------------------
 3134|      2|					if (yych <= 'D') goto yy196;
  ------------------
  |  Branch (3134:10): [True: 0, False: 2]
  ------------------
 3135|      2|					goto yy20;
 3136|      2|				} else {
 3137|      0|					if (yych == 'G') goto yy20;
  ------------------
  |  Branch (3137:10): [True: 0, False: 0]
  ------------------
 3138|      0|					goto yy196;
 3139|      0|				}
 3140|      2|			} else {
 3141|      1|				if (yych <= 'R') {
  ------------------
  |  Branch (3141:9): [True: 1, False: 0]
  ------------------
 3142|      1|					if (yych == 'M') goto yy196;
  ------------------
  |  Branch (3142:10): [True: 1, False: 0]
  ------------------
 3143|      0|					goto yy20;
 3144|      1|				} else {
 3145|      0|					if (yych == 'V') goto yy20;
  ------------------
  |  Branch (3145:10): [True: 0, False: 0]
  ------------------
 3146|      0|					goto yy196;
 3147|      0|				}
 3148|      1|			}
 3149|      3|		}
 3150|     98|	} else {
 3151|     11|		if (yych <= 'm') {
  ------------------
  |  Branch (3151:7): [True: 5, False: 6]
  ------------------
 3152|      5|			if (yych <= 'e') {
  ------------------
  |  Branch (3152:8): [True: 1, False: 4]
  ------------------
 3153|      1|				if (yych <= 'Y') {
  ------------------
  |  Branch (3153:9): [True: 0, False: 1]
  ------------------
 3154|      0|					if (yych <= 'X') goto yy20;
  ------------------
  |  Branch (3154:10): [True: 0, False: 0]
  ------------------
 3155|      0|					goto yy196;
 3156|      1|				} else {
 3157|      1|					if (yych == 'd') goto yy196;
  ------------------
  |  Branch (3157:10): [True: 0, False: 1]
  ------------------
 3158|      1|					goto yy20;
 3159|      1|				}
 3160|      4|			} else {
 3161|      4|				if (yych <= 'g') {
  ------------------
  |  Branch (3161:9): [True: 0, False: 4]
  ------------------
 3162|      0|					if (yych <= 'f') goto yy196;
  ------------------
  |  Branch (3162:10): [True: 0, False: 0]
  ------------------
 3163|      0|					goto yy20;
 3164|      4|				} else {
 3165|      4|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (3165:10): [True: 0, False: 4]
  ------------------
 3166|      4|					if (yych <= 'l') goto yy20;
  ------------------
  |  Branch (3166:10): [True: 3, False: 1]
  ------------------
 3167|      1|					goto yy196;
 3168|      4|				}
 3169|      4|			}
 3170|      6|		} else {
 3171|      6|			if (yych <= 'x') {
  ------------------
  |  Branch (3171:8): [True: 1, False: 5]
  ------------------
 3172|      1|				if (yych <= 'u') {
  ------------------
  |  Branch (3172:9): [True: 0, False: 1]
  ------------------
 3173|      0|					if (yych <= 'r') goto yy20;
  ------------------
  |  Branch (3173:10): [True: 0, False: 0]
  ------------------
 3174|      0|					goto yy196;
 3175|      1|				} else {
 3176|      1|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (3176:10): [True: 1, False: 0]
  ------------------
 3177|      0|					goto yy20;
 3178|      1|				}
 3179|      5|			} else {
 3180|      5|				if (yych <= 0xC2) {
  ------------------
  |  Branch (3180:9): [True: 3, False: 2]
  ------------------
 3181|      3|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (3181:10): [True: 0, False: 3]
  ------------------
 3182|      3|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (3182:10): [True: 2, False: 1]
  ------------------
 3183|      1|					goto yy97;
 3184|      3|				} else {
 3185|      2|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (3185:10): [True: 0, False: 2]
  ------------------
 3186|      2|					goto yy20;
 3187|      2|				}
 3188|      5|			}
 3189|      6|		}
 3190|     11|	}
 3191|    230|yy66:
 3192|    230|	YYDEBUG(66, *YYCURSOR);
 3193|    230|	yyaccept = 2;
 3194|    230|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    230|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    230|#define   YYCURSOR     cursor
  ------------------
 3195|    230|	if (yych <= 'W') {
  ------------------
  |  Branch (3195:6): [True: 199, False: 31]
  ------------------
 3196|    199|		if (yych <= 'D') {
  ------------------
  |  Branch (3196:7): [True: 183, False: 16]
  ------------------
 3197|    183|			if (yych <= '/') {
  ------------------
  |  Branch (3197:8): [True: 23, False: 160]
  ------------------
 3198|     23|				if (yych <= '\t') {
  ------------------
  |  Branch (3198:9): [True: 9, False: 14]
  ------------------
 3199|      9|					if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (3199:10): [True: 7, False: 2]
  ------------------
 3200|      2|					goto yy196;
 3201|     14|				} else {
 3202|     14|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (3202:10): [True: 1, False: 13]
  ------------------
 3203|     13|					goto yy20;
 3204|     14|				}
 3205|    160|			} else {
 3206|    160|				if (yych <= '9') {
  ------------------
  |  Branch (3206:9): [True: 156, False: 4]
  ------------------
 3207|    156|					if (yych <= '5') goto yy204;
  ------------------
  |  Branch (3207:10): [True: 101, False: 55]
  ------------------
 3208|     55|					goto yy205;
 3209|    156|				} else {
 3210|      4|					if (yych <= ':') goto yy203;
  ------------------
  |  Branch (3210:10): [True: 3, False: 1]
  ------------------
 3211|      1|					if (yych <= 'C') goto yy20;
  ------------------
  |  Branch (3211:10): [True: 1, False: 0]
  ------------------
 3212|      0|					goto yy196;
 3213|      1|				}
 3214|    160|			}
 3215|    183|		} else {
 3216|     16|			if (yych <= 'L') {
  ------------------
  |  Branch (3216:8): [True: 3, False: 13]
  ------------------
 3217|      3|				if (yych <= 'F') {
  ------------------
  |  Branch (3217:9): [True: 1, False: 2]
  ------------------
 3218|      1|					if (yych <= 'E') goto yy20;
  ------------------
  |  Branch (3218:10): [True: 1, False: 0]
  ------------------
 3219|      0|					goto yy196;
 3220|      2|				} else {
 3221|      2|					if (yych == 'H') goto yy196;
  ------------------
  |  Branch (3221:10): [True: 0, False: 2]
  ------------------
 3222|      2|					goto yy20;
 3223|      2|				}
 3224|     13|			} else {
 3225|     13|				if (yych <= 'R') {
  ------------------
  |  Branch (3225:9): [True: 9, False: 4]
  ------------------
 3226|      9|					if (yych <= 'M') goto yy196;
  ------------------
  |  Branch (3226:10): [True: 9, False: 0]
  ------------------
 3227|      0|					goto yy20;
 3228|      9|				} else {
 3229|      4|					if (yych == 'V') goto yy20;
  ------------------
  |  Branch (3229:10): [True: 0, False: 4]
  ------------------
 3230|      4|					goto yy196;
 3231|      4|				}
 3232|     13|			}
 3233|     16|		}
 3234|    199|	} else {
 3235|     31|		if (yych <= 'm') {
  ------------------
  |  Branch (3235:7): [True: 8, False: 23]
  ------------------
 3236|      8|			if (yych <= 'e') {
  ------------------
  |  Branch (3236:8): [True: 2, False: 6]
  ------------------
 3237|      2|				if (yych <= 'Y') {
  ------------------
  |  Branch (3237:9): [True: 0, False: 2]
  ------------------
 3238|      0|					if (yych <= 'X') goto yy20;
  ------------------
  |  Branch (3238:10): [True: 0, False: 0]
  ------------------
 3239|      0|					goto yy196;
 3240|      2|				} else {
 3241|      2|					if (yych == 'd') goto yy196;
  ------------------
  |  Branch (3241:10): [True: 0, False: 2]
  ------------------
 3242|      2|					goto yy20;
 3243|      2|				}
 3244|      6|			} else {
 3245|      6|				if (yych <= 'g') {
  ------------------
  |  Branch (3245:9): [True: 5, False: 1]
  ------------------
 3246|      5|					if (yych <= 'f') goto yy196;
  ------------------
  |  Branch (3246:10): [True: 2, False: 3]
  ------------------
 3247|      3|					goto yy20;
 3248|      5|				} else {
 3249|      1|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (3249:10): [True: 0, False: 1]
  ------------------
 3250|      1|					if (yych <= 'l') goto yy20;
  ------------------
  |  Branch (3250:10): [True: 0, False: 1]
  ------------------
 3251|      1|					goto yy196;
 3252|      1|				}
 3253|      6|			}
 3254|     23|		} else {
 3255|     23|			if (yych <= 'x') {
  ------------------
  |  Branch (3255:8): [True: 8, False: 15]
  ------------------
 3256|      8|				if (yych <= 'u') {
  ------------------
  |  Branch (3256:9): [True: 7, False: 1]
  ------------------
 3257|      7|					if (yych <= 'r') goto yy20;
  ------------------
  |  Branch (3257:10): [True: 5, False: 2]
  ------------------
 3258|      2|					goto yy196;
 3259|      7|				} else {
 3260|      1|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (3260:10): [True: 0, False: 1]
  ------------------
 3261|      1|					goto yy20;
 3262|      1|				}
 3263|     15|			} else {
 3264|     15|				if (yych <= 0xC2) {
  ------------------
  |  Branch (3264:9): [True: 11, False: 4]
  ------------------
 3265|     11|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (3265:10): [True: 0, False: 11]
  ------------------
 3266|     11|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (3266:10): [True: 9, False: 2]
  ------------------
 3267|      2|					goto yy97;
 3268|     11|				} else {
 3269|      4|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (3269:10): [True: 0, False: 4]
  ------------------
 3270|      4|					goto yy20;
 3271|      4|				}
 3272|     15|			}
 3273|     23|		}
 3274|     31|	}
 3275|     23|yy67:
 3276|     23|	YYDEBUG(67, *YYCURSOR);
 3277|     23|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     23|#define   YYCURSOR     cursor
  ------------------
 3278|     23|	if (yych <= '/') goto yy69;
  ------------------
  |  Branch (3278:6): [True: 12, False: 11]
  ------------------
 3279|     11|	if (yych <= '0') goto yy208;
  ------------------
  |  Branch (3279:6): [True: 3, False: 8]
  ------------------
 3280|      8|	if (yych <= '1') goto yy209;
  ------------------
  |  Branch (3280:6): [True: 2, False: 6]
  ------------------
 3281|      6|	if (yych <= '9') goto yy210;
  ------------------
  |  Branch (3281:6): [True: 4, False: 2]
  ------------------
 3282|      2|	goto yy69;
 3283|    110|yy68:
 3284|    110|	YYDEBUG(68, *YYCURSOR);
 3285|    110|	++YYCURSOR;
  ------------------
  |  |   89|    110|#define   YYCURSOR     cursor
  ------------------
 3286|    110|	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   90|    110|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   89|    110|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (3286:6): [True: 0, False: 110]
  ------------------
 3287|    110|	yych = *YYCURSOR;
  ------------------
  |  |   89|    110|#define   YYCURSOR     cursor
  ------------------
 3288|    765|yy69:
 3289|    765|	YYDEBUG(69, *YYCURSOR);
 3290|    765|	if (yych <= 'W') {
  ------------------
  |  Branch (3290:6): [True: 463, False: 302]
  ------------------
 3291|    463|		if (yych <= 'G') {
  ------------------
  |  Branch (3291:7): [True: 348, False: 115]
  ------------------
 3292|    348|			if (yych <= '.') {
  ------------------
  |  Branch (3292:8): [True: 240, False: 108]
  ------------------
 3293|    240|				if (yych <= 0x1F) {
  ------------------
  |  Branch (3293:9): [True: 86, False: 154]
  ------------------
 3294|     86|					if (yych == '\t') goto yy68;
  ------------------
  |  Branch (3294:10): [True: 32, False: 54]
  ------------------
 3295|     54|					goto yy59;
 3296|    154|				} else {
 3297|    154|					if (yych <= ' ') goto yy68;
  ------------------
  |  Branch (3297:10): [True: 78, False: 76]
  ------------------
 3298|     76|					if (yych <= ',') goto yy59;
  ------------------
  |  Branch (3298:10): [True: 60, False: 16]
  ------------------
 3299|     16|					goto yy206;
 3300|     76|				}
 3301|    240|			} else {
 3302|    108|				if (yych <= 'C') {
  ------------------
  |  Branch (3302:9): [True: 55, False: 53]
  ------------------
 3303|     55|					if (yych == 'A') goto yy76;
  ------------------
  |  Branch (3303:10): [True: 17, False: 38]
  ------------------
 3304|     38|					goto yy59;
 3305|     55|				} else {
 3306|     53|					if (yych <= 'D') goto yy77;
  ------------------
  |  Branch (3306:10): [True: 33, False: 20]
  ------------------
 3307|     20|					if (yych == 'F') goto yy78;
  ------------------
  |  Branch (3307:10): [True: 6, False: 14]
  ------------------
 3308|     14|					goto yy59;
 3309|     20|				}
 3310|    108|			}
 3311|    348|		} else {
 3312|    115|			if (yych <= 'N') {
  ------------------
  |  Branch (3312:8): [True: 35, False: 80]
  ------------------
 3313|     35|				if (yych <= 'J') {
  ------------------
  |  Branch (3313:9): [True: 17, False: 18]
  ------------------
 3314|     17|					if (yych <= 'H') goto yy79;
  ------------------
  |  Branch (3314:10): [True: 0, False: 17]
  ------------------
 3315|     17|					if (yych <= 'I') goto yy80;
  ------------------
  |  Branch (3315:10): [True: 11, False: 6]
  ------------------
 3316|      6|					goto yy82;
 3317|     18|				} else {
 3318|     18|					if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (3318:10): [True: 0, False: 18]
  ------------------
 3319|     18|					if (yych <= 'M') goto yy83;
  ------------------
  |  Branch (3319:10): [True: 13, False: 5]
  ------------------
 3320|      5|					goto yy84;
 3321|     18|				}
 3322|     80|			} else {
 3323|     80|				if (yych <= 'S') {
  ------------------
  |  Branch (3323:9): [True: 11, False: 69]
  ------------------
 3324|     11|					if (yych <= 'O') goto yy85;
  ------------------
  |  Branch (3324:10): [True: 2, False: 9]
  ------------------
 3325|      9|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (3325:10): [True: 3, False: 6]
  ------------------
 3326|      6|					goto yy86;
 3327|     69|				} else {
 3328|     69|					if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (3328:10): [True: 56, False: 13]
  ------------------
 3329|     13|					if (yych <= 'U') goto yy88;
  ------------------
  |  Branch (3329:10): [True: 3, False: 10]
  ------------------
 3330|     10|					if (yych <= 'V') goto yy89;
  ------------------
  |  Branch (3330:10): [True: 2, False: 8]
  ------------------
 3331|      8|					goto yy90;
 3332|     10|				}
 3333|     80|			}
 3334|    115|		}
 3335|    463|	} else {
 3336|    302|		if (yych <= 'l') {
  ------------------
  |  Branch (3336:7): [True: 99, False: 203]
  ------------------
 3337|     99|			if (yych <= 'd') {
  ------------------
  |  Branch (3337:8): [True: 50, False: 49]
  ------------------
 3338|     50|				if (yych <= '`') {
  ------------------
  |  Branch (3338:9): [True: 15, False: 35]
  ------------------
 3339|     15|					if (yych <= 'X') goto yy91;
  ------------------
  |  Branch (3339:10): [True: 4, False: 11]
  ------------------
 3340|     11|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (3340:10): [True: 5, False: 6]
  ------------------
 3341|      6|					goto yy59;
 3342|     35|				} else {
 3343|     35|					if (yych <= 'a') goto yy76;
  ------------------
  |  Branch (3343:10): [True: 12, False: 23]
  ------------------
 3344|     23|					if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (3344:10): [True: 3, False: 20]
  ------------------
 3345|     20|					goto yy77;
 3346|     23|				}
 3347|     50|			} else {
 3348|     49|				if (yych <= 'g') {
  ------------------
  |  Branch (3348:9): [True: 19, False: 30]
  ------------------
 3349|     19|					if (yych == 'f') goto yy78;
  ------------------
  |  Branch (3349:10): [True: 7, False: 12]
  ------------------
 3350|     12|					goto yy59;
 3351|     30|				} else {
 3352|     30|					if (yych <= 'h') goto yy79;
  ------------------
  |  Branch (3352:10): [True: 6, False: 24]
  ------------------
 3353|     24|					if (yych == 'j') goto yy82;
  ------------------
  |  Branch (3353:10): [True: 5, False: 19]
  ------------------
 3354|     19|					goto yy59;
 3355|     24|				}
 3356|     49|			}
 3357|    203|		} else {
 3358|    203|			if (yych <= 'u') {
  ------------------
  |  Branch (3358:8): [True: 92, False: 111]
  ------------------
 3359|     92|				if (yych <= 'o') {
  ------------------
  |  Branch (3359:9): [True: 82, False: 10]
  ------------------
 3360|     82|					if (yych <= 'm') goto yy83;
  ------------------
  |  Branch (3360:10): [True: 34, False: 48]
  ------------------
 3361|     48|					if (yych <= 'n') goto yy84;
  ------------------
  |  Branch (3361:10): [True: 1, False: 47]
  ------------------
 3362|     47|					goto yy85;
 3363|     48|				} else {
 3364|     10|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (3364:10): [True: 3, False: 7]
  ------------------
 3365|      7|					if (yych <= 's') goto yy86;
  ------------------
  |  Branch (3365:10): [True: 0, False: 7]
  ------------------
 3366|      7|					if (yych <= 't') goto yy87;
  ------------------
  |  Branch (3366:10): [True: 0, False: 7]
  ------------------
 3367|      7|					goto yy88;
 3368|      7|				}
 3369|    111|			} else {
 3370|    111|				if (yych <= 'x') {
  ------------------
  |  Branch (3370:9): [True: 14, False: 97]
  ------------------
 3371|     14|					if (yych == 'w') goto yy90;
  ------------------
  |  Branch (3371:10): [True: 11, False: 3]
  ------------------
 3372|      3|					goto yy59;
 3373|     97|				} else {
 3374|     97|					if (yych <= 'y') goto yy92;
  ------------------
  |  Branch (3374:10): [True: 4, False: 93]
  ------------------
 3375|     93|					if (yych == 0xC2) goto yy211;
  ------------------
  |  Branch (3375:10): [True: 0, False: 93]
  ------------------
 3376|     93|					goto yy59;
 3377|     93|				}
 3378|    111|			}
 3379|    203|		}
 3380|    302|	}
 3381|    305|yy70:
 3382|    305|	YYDEBUG(70, *YYCURSOR);
 3383|    305|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    305|#define   YYCURSOR     cursor
  ------------------
 3384|    305|	if (yych <= '/') goto yy207;
  ------------------
  |  Branch (3384:6): [True: 44, False: 261]
  ------------------
 3385|    261|	if (yych <= '0') goto yy212;
  ------------------
  |  Branch (3385:6): [True: 24, False: 237]
  ------------------
 3386|    237|	if (yych <= '1') goto yy213;
  ------------------
  |  Branch (3386:6): [True: 50, False: 187]
  ------------------
 3387|    187|	if (yych <= '9') goto yy214;
  ------------------
  |  Branch (3387:6): [True: 80, False: 107]
  ------------------
 3388|    107|	goto yy207;
 3389|    107|yy71:
 3390|     71|	YYDEBUG(71, *YYCURSOR);
 3391|     71|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     71|#define   YYCURSOR     cursor
  ------------------
 3392|     71|	if (yych <= '1') {
  ------------------
  |  Branch (3392:6): [True: 37, False: 34]
  ------------------
 3393|     37|		if (yych <= '/') goto yy207;
  ------------------
  |  Branch (3393:7): [True: 10, False: 27]
  ------------------
 3394|     27|		if (yych <= '0') goto yy219;
  ------------------
  |  Branch (3394:7): [True: 16, False: 11]
  ------------------
 3395|     11|		goto yy220;
 3396|     34|	} else {
 3397|     34|		if (yych <= '5') goto yy221;
  ------------------
  |  Branch (3397:7): [True: 19, False: 15]
  ------------------
 3398|     15|		if (yych <= '9') goto yy222;
  ------------------
  |  Branch (3398:7): [True: 5, False: 10]
  ------------------
 3399|     10|		goto yy207;
 3400|     15|	}
 3401|    179|yy72:
 3402|    179|	YYDEBUG(72, *YYCURSOR);
 3403|    179|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    179|#define   YYCURSOR     cursor
  ------------------
 3404|    179|	switch (yych) {
 3405|     12|	case '0':
  ------------------
  |  Branch (3405:2): [True: 12, False: 167]
  ------------------
 3406|     22|	case '1':
  ------------------
  |  Branch (3406:2): [True: 10, False: 169]
  ------------------
 3407|     32|	case '2':	goto yy223;
  ------------------
  |  Branch (3407:2): [True: 10, False: 169]
  ------------------
 3408|      2|	case '3':	goto yy225;
  ------------------
  |  Branch (3408:2): [True: 2, False: 177]
  ------------------
 3409|      0|	case '4':
  ------------------
  |  Branch (3409:2): [True: 0, False: 179]
  ------------------
 3410|      0|	case '5':
  ------------------
  |  Branch (3410:2): [True: 0, False: 179]
  ------------------
 3411|      2|	case '6':
  ------------------
  |  Branch (3411:2): [True: 2, False: 177]
  ------------------
 3412|      2|	case '7':
  ------------------
  |  Branch (3412:2): [True: 0, False: 179]
  ------------------
 3413|      7|	case '8':
  ------------------
  |  Branch (3413:2): [True: 5, False: 174]
  ------------------
 3414|     10|	case '9':	goto yy226;
  ------------------
  |  Branch (3414:2): [True: 3, False: 176]
  ------------------
 3415|      8|	case 'A':
  ------------------
  |  Branch (3415:2): [True: 8, False: 171]
  ------------------
 3416|      9|	case 'a':	goto yy227;
  ------------------
  |  Branch (3416:2): [True: 1, False: 178]
  ------------------
 3417|      0|	case 'D':
  ------------------
  |  Branch (3417:2): [True: 0, False: 179]
  ------------------
 3418|      0|	case 'd':	goto yy228;
  ------------------
  |  Branch (3418:2): [True: 0, False: 179]
  ------------------
 3419|      2|	case 'F':
  ------------------
  |  Branch (3419:2): [True: 2, False: 177]
  ------------------
 3420|      4|	case 'f':	goto yy229;
  ------------------
  |  Branch (3420:2): [True: 2, False: 177]
  ------------------
 3421|      0|	case 'J':
  ------------------
  |  Branch (3421:2): [True: 0, False: 179]
  ------------------
 3422|     22|	case 'j':	goto yy230;
  ------------------
  |  Branch (3422:2): [True: 22, False: 157]
  ------------------
 3423|      0|	case 'M':
  ------------------
  |  Branch (3423:2): [True: 0, False: 179]
  ------------------
 3424|      0|	case 'm':	goto yy231;
  ------------------
  |  Branch (3424:2): [True: 0, False: 179]
  ------------------
 3425|      9|	case 'N':
  ------------------
  |  Branch (3425:2): [True: 9, False: 170]
  ------------------
 3426|     17|	case 'n':	goto yy232;
  ------------------
  |  Branch (3426:2): [True: 8, False: 171]
  ------------------
 3427|      1|	case 'O':
  ------------------
  |  Branch (3427:2): [True: 1, False: 178]
  ------------------
 3428|      1|	case 'o':	goto yy233;
  ------------------
  |  Branch (3428:2): [True: 0, False: 179]
  ------------------
 3429|     21|	case 'S':
  ------------------
  |  Branch (3429:2): [True: 21, False: 158]
  ------------------
 3430|     32|	case 's':	goto yy234;
  ------------------
  |  Branch (3430:2): [True: 11, False: 168]
  ------------------
 3431|     50|	default:	goto yy59;
  ------------------
  |  Branch (3431:2): [True: 50, False: 129]
  ------------------
 3432|    179|	}
 3433|    506|yy73:
 3434|    506|	YYDEBUG(73, *YYCURSOR);
 3435|    506|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    506|#define   YYCURSOR     cursor
  ------------------
 3436|    506|	if (yych <= 'm') {
  ------------------
  |  Branch (3436:6): [True: 417, False: 89]
  ------------------
 3437|    417|		if (yych <= '.') {
  ------------------
  |  Branch (3437:7): [True: 66, False: 351]
  ------------------
 3438|     66|			if (yych <= '\t') {
  ------------------
  |  Branch (3438:8): [True: 18, False: 48]
  ------------------
 3439|     18|				if (yych <= 0x08) goto yy69;
  ------------------
  |  Branch (3439:9): [True: 10, False: 8]
  ------------------
 3440|      8|				goto yy67;
 3441|     48|			} else {
 3442|     48|				if (yych <= ',') goto yy69;
  ------------------
  |  Branch (3442:9): [True: 31, False: 17]
  ------------------
 3443|     17|				if (yych <= '-') goto yy235;
  ------------------
  |  Branch (3443:9): [True: 10, False: 7]
  ------------------
 3444|      7|				goto yy71;
 3445|     17|			}
 3446|    351|		} else {
 3447|    351|			if (yych <= '5') {
  ------------------
  |  Branch (3447:8): [True: 264, False: 87]
  ------------------
 3448|    264|				if (yych <= '/') goto yy72;
  ------------------
  |  Branch (3448:9): [True: 2, False: 262]
  ------------------
 3449|    262|				goto yy236;
 3450|    264|			} else {
 3451|     87|				if (yych <= '9') goto yy237;
  ------------------
  |  Branch (3451:9): [True: 12, False: 75]
  ------------------
 3452|     75|				if (yych <= ':') goto yy75;
  ------------------
  |  Branch (3452:9): [True: 1, False: 74]
  ------------------
 3453|     74|				goto yy69;
 3454|     75|			}
 3455|    351|		}
 3456|    417|	} else {
 3457|     89|		if (yych <= 't') {
  ------------------
  |  Branch (3457:7): [True: 37, False: 52]
  ------------------
 3458|     37|			if (yych <= 'q') {
  ------------------
  |  Branch (3458:8): [True: 23, False: 14]
  ------------------
 3459|     23|				if (yych <= 'n') goto yy93;
  ------------------
  |  Branch (3459:9): [True: 3, False: 20]
  ------------------
 3460|     20|				goto yy69;
 3461|     23|			} else {
 3462|     14|				if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (3462:9): [True: 7, False: 7]
  ------------------
 3463|      7|				if (yych <= 's') goto yy95;
  ------------------
  |  Branch (3463:9): [True: 2, False: 5]
  ------------------
 3464|      5|				goto yy96;
 3465|      7|			}
 3466|     52|		} else {
 3467|     52|			if (yych <= 0xC2) {
  ------------------
  |  Branch (3467:8): [True: 22, False: 30]
  ------------------
 3468|     22|				if (yych <= 0xC1) goto yy69;
  ------------------
  |  Branch (3468:9): [True: 15, False: 7]
  ------------------
 3469|      7|				goto yy97;
 3470|     30|			} else {
 3471|     30|				if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (3471:9): [True: 6, False: 24]
  ------------------
 3472|     24|				goto yy69;
 3473|     30|			}
 3474|     52|		}
 3475|     89|	}
 3476|    613|yy74:
 3477|    613|	YYDEBUG(74, *YYCURSOR);
 3478|    613|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    613|#define   YYCURSOR     cursor
  ------------------
 3479|    613|	if (yych <= 'm') {
  ------------------
  |  Branch (3479:6): [True: 490, False: 123]
  ------------------
 3480|    490|		if (yych <= '.') {
  ------------------
  |  Branch (3480:7): [True: 102, False: 388]
  ------------------
 3481|    102|			if (yych <= '\t') {
  ------------------
  |  Branch (3481:8): [True: 22, False: 80]
  ------------------
 3482|     22|				if (yych <= 0x08) goto yy101;
  ------------------
  |  Branch (3482:9): [True: 21, False: 1]
  ------------------
 3483|      1|				goto yy99;
 3484|     80|			} else {
 3485|     80|				if (yych <= ',') goto yy101;
  ------------------
  |  Branch (3485:9): [True: 52, False: 28]
  ------------------
 3486|     28|				if (yych <= '-') goto yy235;
  ------------------
  |  Branch (3486:9): [True: 13, False: 15]
  ------------------
 3487|     15|				goto yy102;
 3488|     28|			}
 3489|    388|		} else {
 3490|    388|			if (yych <= '5') {
  ------------------
  |  Branch (3490:8): [True: 244, False: 144]
  ------------------
 3491|    244|				if (yych <= '/') goto yy72;
  ------------------
  |  Branch (3491:9): [True: 18, False: 226]
  ------------------
 3492|    226|				goto yy236;
 3493|    244|			} else {
 3494|    144|				if (yych <= '9') goto yy237;
  ------------------
  |  Branch (3494:9): [True: 74, False: 70]
  ------------------
 3495|     70|				if (yych <= ':') goto yy104;
  ------------------
  |  Branch (3495:9): [True: 4, False: 66]
  ------------------
 3496|     66|				goto yy101;
 3497|     70|			}
 3498|    388|		}
 3499|    490|	} else {
 3500|    123|		if (yych <= 't') {
  ------------------
  |  Branch (3500:7): [True: 18, False: 105]
  ------------------
 3501|     18|			if (yych <= 'q') {
  ------------------
  |  Branch (3501:8): [True: 5, False: 13]
  ------------------
 3502|      5|				if (yych <= 'n') goto yy93;
  ------------------
  |  Branch (3502:9): [True: 2, False: 3]
  ------------------
 3503|      3|				goto yy101;
 3504|     13|			} else {
 3505|     13|				if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (3505:9): [True: 2, False: 11]
  ------------------
 3506|     11|				if (yych <= 's') goto yy95;
  ------------------
  |  Branch (3506:9): [True: 7, False: 4]
  ------------------
 3507|      4|				goto yy96;
 3508|     11|			}
 3509|    105|		} else {
 3510|    105|			if (yych <= 0xC2) {
  ------------------
  |  Branch (3510:8): [True: 67, False: 38]
  ------------------
 3511|     67|				if (yych <= 0xC1) goto yy101;
  ------------------
  |  Branch (3511:9): [True: 48, False: 19]
  ------------------
 3512|     19|				goto yy107;
 3513|     67|			} else {
 3514|     38|				if (yych == 0xE2) goto yy108;
  ------------------
  |  Branch (3514:9): [True: 1, False: 37]
  ------------------
 3515|     37|				goto yy101;
 3516|     38|			}
 3517|    105|		}
 3518|    123|	}
 3519|     26|yy75:
 3520|     26|	YYDEBUG(75, *YYCURSOR);
 3521|     26|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     26|#define   YYCURSOR     cursor
  ------------------
 3522|     26|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (3522:6): [True: 2, False: 24]
  ------------------
 3523|     24|	if (yych <= '5') goto yy238;
  ------------------
  |  Branch (3523:6): [True: 13, False: 11]
  ------------------
 3524|     11|	if (yych <= '9') goto yy239;
  ------------------
  |  Branch (3524:6): [True: 0, False: 11]
  ------------------
 3525|     11|	goto yy59;
 3526|     52|yy76:
 3527|     52|	YYDEBUG(76, *YYCURSOR);
 3528|     52|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     52|#define   YYCURSOR     cursor
  ------------------
 3529|     52|	if (yych <= 'U') {
  ------------------
  |  Branch (3529:6): [True: 22, False: 30]
  ------------------
 3530|     22|		if (yych == 'P') goto yy240;
  ------------------
  |  Branch (3530:7): [True: 0, False: 22]
  ------------------
 3531|     22|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (3531:7): [True: 22, False: 0]
  ------------------
 3532|      0|		goto yy241;
 3533|     30|	} else {
 3534|     30|		if (yych <= 'p') {
  ------------------
  |  Branch (3534:7): [True: 23, False: 7]
  ------------------
 3535|     23|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (3535:8): [True: 8, False: 15]
  ------------------
 3536|     15|			goto yy240;
 3537|     23|		} else {
 3538|      7|			if (yych == 'u') goto yy241;
  ------------------
  |  Branch (3538:8): [True: 2, False: 5]
  ------------------
 3539|      5|			goto yy59;
 3540|      7|		}
 3541|     30|	}
 3542|     87|yy77:
 3543|     87|	YYDEBUG(77, *YYCURSOR);
 3544|     87|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     87|#define   YYCURSOR     cursor
  ------------------
 3545|     87|	if (yych <= 'E') {
  ------------------
  |  Branch (3545:6): [True: 52, False: 35]
  ------------------
 3546|     52|		if (yych == 'A') goto yy242;
  ------------------
  |  Branch (3546:7): [True: 3, False: 49]
  ------------------
 3547|     49|		if (yych <= 'D') goto yy59;
  ------------------
  |  Branch (3547:7): [True: 49, False: 0]
  ------------------
 3548|      0|		goto yy243;
 3549|     49|	} else {
 3550|     35|		if (yych <= 'a') {
  ------------------
  |  Branch (3550:7): [True: 9, False: 26]
  ------------------
 3551|      9|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (3551:8): [True: 4, False: 5]
  ------------------
 3552|      5|			goto yy242;
 3553|     26|		} else {
 3554|     26|			if (yych == 'e') goto yy243;
  ------------------
  |  Branch (3554:8): [True: 7, False: 19]
  ------------------
 3555|     19|			goto yy59;
 3556|     26|		}
 3557|     35|	}
 3558|     48|yy78:
 3559|     48|	YYDEBUG(78, *YYCURSOR);
 3560|     48|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     48|#define   YYCURSOR     cursor
  ------------------
 3561|     48|	if (yych <= 'R') {
  ------------------
  |  Branch (3561:6): [True: 10, False: 38]
  ------------------
 3562|     10|		if (yych <= 'N') {
  ------------------
  |  Branch (3562:7): [True: 8, False: 2]
  ------------------
 3563|      8|			if (yych == 'E') goto yy244;
  ------------------
  |  Branch (3563:8): [True: 0, False: 8]
  ------------------
 3564|      8|			goto yy59;
 3565|      8|		} else {
 3566|      2|			if (yych <= 'O') goto yy245;
  ------------------
  |  Branch (3566:8): [True: 1, False: 1]
  ------------------
 3567|      1|			if (yych <= 'Q') goto yy59;
  ------------------
  |  Branch (3567:8): [True: 0, False: 1]
  ------------------
 3568|      1|			goto yy246;
 3569|      1|		}
 3570|     38|	} else {
 3571|     38|		if (yych <= 'n') {
  ------------------
  |  Branch (3571:7): [True: 5, False: 33]
  ------------------
 3572|      5|			if (yych == 'e') goto yy244;
  ------------------
  |  Branch (3572:8): [True: 0, False: 5]
  ------------------
 3573|      5|			goto yy59;
 3574|     33|		} else {
 3575|     33|			if (yych <= 'o') goto yy245;
  ------------------
  |  Branch (3575:8): [True: 24, False: 9]
  ------------------
 3576|      9|			if (yych == 'r') goto yy246;
  ------------------
  |  Branch (3576:8): [True: 6, False: 3]
  ------------------
 3577|      3|			goto yy59;
 3578|      9|		}
 3579|     38|	}
 3580|     40|yy79:
 3581|     40|	YYDEBUG(79, *YYCURSOR);
 3582|     40|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     40|#define   YYCURSOR     cursor
  ------------------
 3583|     40|	if (yych == 'O') goto yy247;
  ------------------
  |  Branch (3583:6): [True: 2, False: 38]
  ------------------
 3584|     38|	if (yych == 'o') goto yy247;
  ------------------
  |  Branch (3584:6): [True: 4, False: 34]
  ------------------
 3585|     34|	goto yy59;
 3586|     42|yy80:
 3587|     42|	YYDEBUG(80, *YYCURSOR);
 3588|     42|	yyaccept = 3;
 3589|     42|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     42|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     42|#define   YYCURSOR     cursor
  ------------------
 3590|     42|	if (yych <= '/') {
  ------------------
  |  Branch (3590:6): [True: 17, False: 25]
  ------------------
 3591|     17|		if (yych <= 0x1F) {
  ------------------
  |  Branch (3591:7): [True: 7, False: 10]
  ------------------
 3592|      7|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (3592:8): [True: 4, False: 3]
  ------------------
 3593|     10|		} else {
 3594|     10|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (3594:8): [True: 0, False: 10]
  ------------------
 3595|     10|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (3595:8): [True: 3, False: 7]
  ------------------
 3596|      7|			if (yych <= '.') goto yy248;
  ------------------
  |  Branch (3596:8): [True: 5, False: 2]
  ------------------
 3597|      7|		}
 3598|     25|	} else {
 3599|     25|		if (yych <= 'U') {
  ------------------
  |  Branch (3599:7): [True: 20, False: 5]
  ------------------
 3600|     20|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (3600:8): [True: 8, False: 12]
  ------------------
 3601|     12|			if (yych == 'I') goto yy252;
  ------------------
  |  Branch (3601:8): [True: 10, False: 2]
  ------------------
 3602|     12|		} else {
 3603|      5|			if (yych == 'W') goto yy81;
  ------------------
  |  Branch (3603:8): [True: 0, False: 5]
  ------------------
 3604|      5|			if (yych <= 'X') goto yy253;
  ------------------
  |  Branch (3604:8): [True: 0, False: 5]
  ------------------
 3605|      5|		}
 3606|     25|	}
 3607|     71|yy81:
 3608|     71|	YYDEBUG(81, *YYCURSOR);
 3609|     71|#line 1646 "ext/date/lib/parse_date.re"
 3610|     71|	{
 3611|     71|		DEBUG_OUTPUT("datenoyearrev");
 3612|     71|		TIMELIB_INIT;
  ------------------
  |  |  107|     71|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 3613|     71|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     71|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|     36|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|     36|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     36|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     36|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|     36|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 36, False: 35]
  |  |  ------------------
  ------------------
 3614|     35|		s->time->d = timelib_get_nr(&ptr, 2);
 3615|     35|		timelib_skip_day_suffix(&ptr);
 3616|     35|		s->time->m = timelib_get_month(&ptr);
 3617|     35|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     35|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     35|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     35|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     35|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     35|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     35|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     35|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     35|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3618|     35|		return TIMELIB_DATE_TEXT;
  ------------------
  |  |   61|     35|#define TIMELIB_DATE_TEXT      269
  ------------------
 3619|     71|	}
 3620|      0|#line 3621 "ext/date/lib/parse_date.c"
 3621|     46|yy82:
 3622|     46|	YYDEBUG(82, *YYCURSOR);
 3623|     46|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     46|#define   YYCURSOR     cursor
  ------------------
 3624|     46|	if (yych <= 'U') {
  ------------------
  |  Branch (3624:6): [True: 29, False: 17]
  ------------------
 3625|     29|		if (yych == 'A') goto yy254;
  ------------------
  |  Branch (3625:7): [True: 2, False: 27]
  ------------------
 3626|     27|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (3626:7): [True: 21, False: 6]
  ------------------
 3627|      6|		goto yy255;
 3628|     27|	} else {
 3629|     17|		if (yych <= 'a') {
  ------------------
  |  Branch (3629:7): [True: 1, False: 16]
  ------------------
 3630|      1|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (3630:8): [True: 1, False: 0]
  ------------------
 3631|      0|			goto yy254;
 3632|     16|		} else {
 3633|     16|			if (yych == 'u') goto yy255;
  ------------------
  |  Branch (3633:8): [True: 0, False: 16]
  ------------------
 3634|     16|			goto yy59;
 3635|     16|		}
 3636|     17|	}
 3637|    107|yy83:
 3638|    107|	YYDEBUG(83, *YYCURSOR);
 3639|    107|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    107|#define   YYCURSOR     cursor
  ------------------
 3640|    107|	if (yych <= 'S') {
  ------------------
  |  Branch (3640:6): [True: 63, False: 44]
  ------------------
 3641|     63|		if (yych <= 'I') {
  ------------------
  |  Branch (3641:7): [True: 56, False: 7]
  ------------------
 3642|     56|			if (yych == 'A') goto yy256;
  ------------------
  |  Branch (3642:8): [True: 25, False: 31]
  ------------------
 3643|     31|			if (yych <= 'H') goto yy59;
  ------------------
  |  Branch (3643:8): [True: 26, False: 5]
  ------------------
 3644|      5|			goto yy257;
 3645|     31|		} else {
 3646|      7|			if (yych == 'O') goto yy258;
  ------------------
  |  Branch (3646:8): [True: 0, False: 7]
  ------------------
 3647|      7|			if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (3647:8): [True: 6, False: 1]
  ------------------
 3648|      1|			goto yy259;
 3649|      7|		}
 3650|     63|	} else {
 3651|     44|		if (yych <= 'i') {
  ------------------
  |  Branch (3651:7): [True: 19, False: 25]
  ------------------
 3652|     19|			if (yych == 'a') goto yy256;
  ------------------
  |  Branch (3652:8): [True: 12, False: 7]
  ------------------
 3653|      7|			if (yych <= 'h') goto yy59;
  ------------------
  |  Branch (3653:8): [True: 3, False: 4]
  ------------------
 3654|      4|			goto yy257;
 3655|     25|		} else {
 3656|     25|			if (yych <= 'o') {
  ------------------
  |  Branch (3656:8): [True: 16, False: 9]
  ------------------
 3657|     16|				if (yych <= 'n') goto yy59;
  ------------------
  |  Branch (3657:9): [True: 2, False: 14]
  ------------------
 3658|     14|				goto yy258;
 3659|     16|			} else {
 3660|      9|				if (yych == 's') goto yy259;
  ------------------
  |  Branch (3660:9): [True: 1, False: 8]
  ------------------
 3661|      8|				goto yy59;
 3662|      9|			}
 3663|     25|		}
 3664|     44|	}
 3665|     38|yy84:
 3666|     38|	YYDEBUG(84, *YYCURSOR);
 3667|     38|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     38|#define   YYCURSOR     cursor
  ------------------
 3668|     38|	if (yych == 'O') goto yy261;
  ------------------
  |  Branch (3668:6): [True: 0, False: 38]
  ------------------
 3669|     38|	if (yych == 'o') goto yy261;
  ------------------
  |  Branch (3669:6): [True: 13, False: 25]
  ------------------
 3670|     25|	goto yy59;
 3671|    105|yy85:
 3672|    105|	YYDEBUG(85, *YYCURSOR);
 3673|    105|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    105|#define   YYCURSOR     cursor
  ------------------
 3674|    105|	if (yych == 'C') goto yy262;
  ------------------
  |  Branch (3674:6): [True: 0, False: 105]
  ------------------
 3675|    105|	if (yych == 'c') goto yy262;
  ------------------
  |  Branch (3675:6): [True: 8, False: 97]
  ------------------
 3676|     97|	goto yy59;
 3677|     97|yy86:
 3678|     16|	YYDEBUG(86, *YYCURSOR);
 3679|     16|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     16|#define   YYCURSOR     cursor
  ------------------
 3680|     16|	if (yych <= 'U') {
  ------------------
  |  Branch (3680:6): [True: 8, False: 8]
  ------------------
 3681|      8|		if (yych <= 'D') {
  ------------------
  |  Branch (3681:7): [True: 6, False: 2]
  ------------------
 3682|      6|			if (yych == 'A') goto yy263;
  ------------------
  |  Branch (3682:8): [True: 0, False: 6]
  ------------------
 3683|      6|			goto yy59;
 3684|      6|		} else {
 3685|      2|			if (yych <= 'E') goto yy264;
  ------------------
  |  Branch (3685:8): [True: 0, False: 2]
  ------------------
 3686|      2|			if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (3686:8): [True: 0, False: 2]
  ------------------
 3687|      2|			goto yy265;
 3688|      2|		}
 3689|      8|	} else {
 3690|      8|		if (yych <= 'd') {
  ------------------
  |  Branch (3690:7): [True: 2, False: 6]
  ------------------
 3691|      2|			if (yych == 'a') goto yy263;
  ------------------
  |  Branch (3691:8): [True: 2, False: 0]
  ------------------
 3692|      0|			goto yy59;
 3693|      6|		} else {
 3694|      6|			if (yych <= 'e') goto yy264;
  ------------------
  |  Branch (3694:8): [True: 3, False: 3]
  ------------------
 3695|      3|			if (yych == 'u') goto yy265;
  ------------------
  |  Branch (3695:8): [True: 0, False: 3]
  ------------------
 3696|      3|			goto yy59;
 3697|      3|		}
 3698|      8|	}
 3699|    182|yy87:
 3700|    182|	YYDEBUG(87, *YYCURSOR);
 3701|    182|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    182|#define   YYCURSOR     cursor
  ------------------
 3702|    182|	if (yych <= 'U') {
  ------------------
  |  Branch (3702:6): [True: 106, False: 76]
  ------------------
 3703|    106|		if (yych == 'H') goto yy266;
  ------------------
  |  Branch (3703:7): [True: 1, False: 105]
  ------------------
 3704|    105|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (3704:7): [True: 105, False: 0]
  ------------------
 3705|      0|		goto yy267;
 3706|    105|	} else {
 3707|     76|		if (yych <= 'h') {
  ------------------
  |  Branch (3707:7): [True: 11, False: 65]
  ------------------
 3708|     11|			if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (3708:8): [True: 6, False: 5]
  ------------------
 3709|      5|			goto yy266;
 3710|     65|		} else {
 3711|     65|			if (yych == 'u') goto yy267;
  ------------------
  |  Branch (3711:8): [True: 5, False: 60]
  ------------------
 3712|     60|			goto yy59;
 3713|     65|		}
 3714|     76|	}
 3715|     93|yy88:
 3716|     93|	YYDEBUG(88, *YYCURSOR);
 3717|     93|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     93|#define   YYCURSOR     cursor
  ------------------
 3718|     93|	if (yych == 'S') goto yy268;
  ------------------
  |  Branch (3718:6): [True: 0, False: 93]
  ------------------
 3719|     93|	if (yych == 's') goto yy268;
  ------------------
  |  Branch (3719:6): [True: 15, False: 78]
  ------------------
 3720|     78|	goto yy59;
 3721|     78|yy89:
 3722|      8|	YYDEBUG(89, *YYCURSOR);
 3723|      8|	yyaccept = 3;
 3724|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 3725|      8|	if (yych <= ',') {
  ------------------
  |  Branch (3725:6): [True: 1, False: 7]
  ------------------
 3726|      1|		if (yych <= '\t') {
  ------------------
  |  Branch (3726:7): [True: 1, False: 0]
  ------------------
 3727|      1|			if (yych <= 0x08) goto yy81;
  ------------------
  |  Branch (3727:8): [True: 1, False: 0]
  ------------------
 3728|      0|			goto yy248;
 3729|      1|		} else {
 3730|      0|			if (yych == ' ') goto yy248;
  ------------------
  |  Branch (3730:8): [True: 0, False: 0]
  ------------------
 3731|      0|			goto yy81;
 3732|      0|		}
 3733|      7|	} else {
 3734|      7|		if (yych <= '9') {
  ------------------
  |  Branch (3734:7): [True: 7, False: 0]
  ------------------
 3735|      7|			if (yych <= '.') goto yy248;
  ------------------
  |  Branch (3735:8): [True: 5, False: 2]
  ------------------
 3736|      2|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (3736:8): [True: 1, False: 1]
  ------------------
 3737|      1|			goto yy250;
 3738|      2|		} else {
 3739|      0|			if (yych == 'I') goto yy91;
  ------------------
  |  Branch (3739:8): [True: 0, False: 0]
  ------------------
 3740|      0|			goto yy81;
 3741|      0|		}
 3742|      7|	}
 3743|    145|yy90:
 3744|    145|	YYDEBUG(90, *YYCURSOR);
 3745|    145|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    145|#define   YYCURSOR     cursor
  ------------------
 3746|    145|	if (yych == 'E') goto yy269;
  ------------------
  |  Branch (3746:6): [True: 0, False: 145]
  ------------------
 3747|    145|	if (yych == 'e') goto yy269;
  ------------------
  |  Branch (3747:6): [True: 13, False: 132]
  ------------------
 3748|    132|	goto yy59;
 3749|    132|yy91:
 3750|     12|	YYDEBUG(91, *YYCURSOR);
 3751|     12|	yyaccept = 3;
 3752|     12|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     12|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 3753|     12|	if (yych <= ',') {
  ------------------
  |  Branch (3753:6): [True: 3, False: 9]
  ------------------
 3754|      3|		if (yych <= '\t') {
  ------------------
  |  Branch (3754:7): [True: 3, False: 0]
  ------------------
 3755|      3|			if (yych <= 0x08) goto yy81;
  ------------------
  |  Branch (3755:8): [True: 2, False: 1]
  ------------------
 3756|      1|			goto yy248;
 3757|      3|		} else {
 3758|      0|			if (yych == ' ') goto yy248;
  ------------------
  |  Branch (3758:8): [True: 0, False: 0]
  ------------------
 3759|      0|			goto yy81;
 3760|      0|		}
 3761|      9|	} else {
 3762|      9|		if (yych <= '9') {
  ------------------
  |  Branch (3762:7): [True: 3, False: 6]
  ------------------
 3763|      3|			if (yych <= '.') goto yy248;
  ------------------
  |  Branch (3763:8): [True: 3, False: 0]
  ------------------
 3764|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (3764:8): [True: 0, False: 0]
  ------------------
 3765|      0|			goto yy250;
 3766|      6|		} else {
 3767|      6|			if (yych == 'I') goto yy252;
  ------------------
  |  Branch (3767:8): [True: 0, False: 6]
  ------------------
 3768|      6|			goto yy81;
 3769|      6|		}
 3770|      9|	}
 3771|     66|yy92:
 3772|     66|	YYDEBUG(92, *YYCURSOR);
 3773|     66|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     66|#define   YYCURSOR     cursor
  ------------------
 3774|     66|	if (yych == 'E') goto yy270;
  ------------------
  |  Branch (3774:6): [True: 5, False: 61]
  ------------------
 3775|     61|	if (yych == 'e') goto yy270;
  ------------------
  |  Branch (3775:6): [True: 3, False: 58]
  ------------------
 3776|     58|	goto yy59;
 3777|     58|yy93:
 3778|     54|	YYDEBUG(93, *YYCURSOR);
 3779|     54|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     54|#define   YYCURSOR     cursor
  ------------------
 3780|     54|	if (yych <= 'c') {
  ------------------
  |  Branch (3780:6): [True: 34, False: 20]
  ------------------
 3781|     34|		if (yych == 'O') goto yy261;
  ------------------
  |  Branch (3781:7): [True: 0, False: 34]
  ------------------
 3782|     34|		goto yy59;
 3783|     34|	} else {
 3784|     20|		if (yych <= 'd') goto yy271;
  ------------------
  |  Branch (3784:7): [True: 4, False: 16]
  ------------------
 3785|     16|		if (yych == 'o') goto yy261;
  ------------------
  |  Branch (3785:7): [True: 3, False: 13]
  ------------------
 3786|     13|		goto yy59;
 3787|     16|	}
 3788|     47|yy94:
 3789|     47|	YYDEBUG(94, *YYCURSOR);
 3790|     47|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     47|#define   YYCURSOR     cursor
  ------------------
 3791|     47|	if (yych == 'd') goto yy271;
  ------------------
  |  Branch (3791:6): [True: 16, False: 31]
  ------------------
 3792|     31|	goto yy59;
 3793|     69|yy95:
 3794|     69|	YYDEBUG(95, *YYCURSOR);
 3795|     69|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     69|#define   YYCURSOR     cursor
  ------------------
 3796|     69|	if (yych <= '`') {
  ------------------
  |  Branch (3796:6): [True: 24, False: 45]
  ------------------
 3797|     24|		if (yych <= 'D') {
  ------------------
  |  Branch (3797:7): [True: 24, False: 0]
  ------------------
 3798|     24|			if (yych == 'A') goto yy263;
  ------------------
  |  Branch (3798:8): [True: 3, False: 21]
  ------------------
 3799|     21|			goto yy59;
 3800|     24|		} else {
 3801|      0|			if (yych <= 'E') goto yy264;
  ------------------
  |  Branch (3801:8): [True: 0, False: 0]
  ------------------
 3802|      0|			if (yych == 'U') goto yy265;
  ------------------
  |  Branch (3802:8): [True: 0, False: 0]
  ------------------
 3803|      0|			goto yy59;
 3804|      0|		}
 3805|     45|	} else {
 3806|     45|		if (yych <= 'e') {
  ------------------
  |  Branch (3806:7): [True: 11, False: 34]
  ------------------
 3807|     11|			if (yych <= 'a') goto yy263;
  ------------------
  |  Branch (3807:8): [True: 1, False: 10]
  ------------------
 3808|     10|			if (yych <= 'd') goto yy59;
  ------------------
  |  Branch (3808:8): [True: 1, False: 9]
  ------------------
 3809|      9|			goto yy264;
 3810|     34|		} else {
 3811|     34|			if (yych <= 's') goto yy59;
  ------------------
  |  Branch (3811:8): [True: 8, False: 26]
  ------------------
 3812|     26|			if (yych <= 't') goto yy271;
  ------------------
  |  Branch (3812:8): [True: 2, False: 24]
  ------------------
 3813|     24|			if (yych <= 'u') goto yy265;
  ------------------
  |  Branch (3813:8): [True: 13, False: 11]
  ------------------
 3814|     11|			goto yy59;
 3815|     24|		}
 3816|     45|	}
 3817|     42|yy96:
 3818|     42|	YYDEBUG(96, *YYCURSOR);
 3819|     42|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     42|#define   YYCURSOR     cursor
  ------------------
 3820|     42|	if (yych <= 'U') {
  ------------------
  |  Branch (3820:6): [True: 23, False: 19]
  ------------------
 3821|     23|		if (yych == 'H') goto yy266;
  ------------------
  |  Branch (3821:7): [True: 0, False: 23]
  ------------------
 3822|     23|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (3822:7): [True: 23, False: 0]
  ------------------
 3823|      0|		goto yy267;
 3824|     23|	} else {
 3825|     19|		if (yych <= 'h') {
  ------------------
  |  Branch (3825:7): [True: 6, False: 13]
  ------------------
 3826|      6|			if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (3826:8): [True: 4, False: 2]
  ------------------
 3827|      2|			goto yy272;
 3828|     13|		} else {
 3829|     13|			if (yych == 'u') goto yy267;
  ------------------
  |  Branch (3829:8): [True: 4, False: 9]
  ------------------
 3830|      9|			goto yy59;
 3831|     13|		}
 3832|     19|	}
 3833|    194|yy97:
 3834|    194|	YYDEBUG(97, *YYCURSOR);
 3835|    194|	++YYCURSOR;
  ------------------
  |  |   89|    194|#define   YYCURSOR     cursor
  ------------------
 3836|    194|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|    194|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|    194|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (3836:6): [True: 0, False: 194]
  ------------------
 3837|    194|	yych = *YYCURSOR;
  ------------------
  |  |   89|    194|#define   YYCURSOR     cursor
  ------------------
 3838|    194|	if (yych == 0xA0) goto yy273;
  ------------------
  |  Branch (3838:6): [True: 48, False: 146]
  ------------------
 3839|    146|	if (yych == 0xB5) goto yy274;
  ------------------
  |  Branch (3839:6): [True: 0, False: 146]
  ------------------
 3840|    146|	goto yy59;
 3841|    146|yy98:
 3842|     36|	YYDEBUG(98, *YYCURSOR);
 3843|     36|	++YYCURSOR;
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 3844|     36|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|     36|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (3844:6): [True: 0, False: 36]
  ------------------
 3845|     36|	yych = *YYCURSOR;
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 3846|     36|	if (yych == 0x80) goto yy275;
  ------------------
  |  Branch (3846:6): [True: 0, False: 36]
  ------------------
 3847|     36|	goto yy59;
 3848|     36|yy99:
 3849|     32|	YYDEBUG(99, *YYCURSOR);
 3850|     32|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     32|#define   YYCURSOR     cursor
  ------------------
 3851|     32|	if (yych <= '/') goto yy101;
  ------------------
  |  Branch (3851:6): [True: 20, False: 12]
  ------------------
 3852|     12|	if (yych <= '0') goto yy208;
  ------------------
  |  Branch (3852:6): [True: 0, False: 12]
  ------------------
 3853|     12|	if (yych <= '1') goto yy209;
  ------------------
  |  Branch (3853:6): [True: 12, False: 0]
  ------------------
 3854|      0|	if (yych <= '9') goto yy210;
  ------------------
  |  Branch (3854:6): [True: 0, False: 0]
  ------------------
 3855|      0|	goto yy101;
 3856|    174|yy100:
 3857|    174|	YYDEBUG(100, *YYCURSOR);
 3858|    174|	++YYCURSOR;
  ------------------
  |  |   89|    174|#define   YYCURSOR     cursor
  ------------------
 3859|    174|	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   90|    174|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   89|    174|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (3859:6): [True: 0, False: 174]
  ------------------
 3860|    174|	yych = *YYCURSOR;
  ------------------
  |  |   89|    174|#define   YYCURSOR     cursor
  ------------------
 3861|    960|yy101:
 3862|    960|	YYDEBUG(101, *YYCURSOR);
 3863|    960|	if (yych <= 'W') {
  ------------------
  |  Branch (3863:6): [True: 616, False: 344]
  ------------------
 3864|    616|		if (yych <= 'G') {
  ------------------
  |  Branch (3864:7): [True: 410, False: 206]
  ------------------
 3865|    410|			if (yych <= '.') {
  ------------------
  |  Branch (3865:8): [True: 275, False: 135]
  ------------------
 3866|    275|				if (yych <= 0x1F) {
  ------------------
  |  Branch (3866:9): [True: 133, False: 142]
  ------------------
 3867|    133|					if (yych == '\t') goto yy100;
  ------------------
  |  Branch (3867:10): [True: 80, False: 53]
  ------------------
 3868|     53|					goto yy59;
 3869|    142|				} else {
 3870|    142|					if (yych <= ' ') goto yy100;
  ------------------
  |  Branch (3870:10): [True: 94, False: 48]
  ------------------
 3871|     48|					if (yych <= ',') goto yy59;
  ------------------
  |  Branch (3871:10): [True: 44, False: 4]
  ------------------
 3872|      4|					goto yy206;
 3873|     48|				}
 3874|    275|			} else {
 3875|    135|				if (yych <= 'C') {
  ------------------
  |  Branch (3875:9): [True: 72, False: 63]
  ------------------
 3876|     72|					if (yych == 'A') goto yy105;
  ------------------
  |  Branch (3876:10): [True: 46, False: 26]
  ------------------
 3877|     26|					goto yy59;
 3878|     72|				} else {
 3879|     63|					if (yych <= 'D') goto yy77;
  ------------------
  |  Branch (3879:10): [True: 25, False: 38]
  ------------------
 3880|     38|					if (yych == 'F') goto yy78;
  ------------------
  |  Branch (3880:10): [True: 32, False: 6]
  ------------------
 3881|      6|					goto yy59;
 3882|     38|				}
 3883|    135|			}
 3884|    410|		} else {
 3885|    206|			if (yych <= 'O') {
  ------------------
  |  Branch (3885:8): [True: 99, False: 107]
  ------------------
 3886|     99|				if (yych <= 'J') {
  ------------------
  |  Branch (3886:9): [True: 40, False: 59]
  ------------------
 3887|     40|					if (yych <= 'H') goto yy79;
  ------------------
  |  Branch (3887:10): [True: 11, False: 29]
  ------------------
 3888|     29|					if (yych <= 'I') goto yy80;
  ------------------
  |  Branch (3888:10): [True: 27, False: 2]
  ------------------
 3889|      2|					goto yy82;
 3890|     59|				} else {
 3891|     59|					if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (3891:10): [True: 0, False: 59]
  ------------------
 3892|     59|					if (yych <= 'M') goto yy83;
  ------------------
  |  Branch (3892:10): [True: 37, False: 22]
  ------------------
 3893|     22|					if (yych <= 'N') goto yy84;
  ------------------
  |  Branch (3893:10): [True: 10, False: 12]
  ------------------
 3894|     12|					goto yy85;
 3895|     22|				}
 3896|    107|			} else {
 3897|    107|				if (yych <= 'S') {
  ------------------
  |  Branch (3897:9): [True: 16, False: 91]
  ------------------
 3898|     16|					if (yych <= 'P') goto yy106;
  ------------------
  |  Branch (3898:10): [True: 10, False: 6]
  ------------------
 3899|      6|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (3899:10): [True: 0, False: 6]
  ------------------
 3900|      6|					goto yy86;
 3901|     91|				} else {
 3902|     91|					if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (3902:10): [True: 41, False: 50]
  ------------------
 3903|     50|					if (yych <= 'U') goto yy88;
  ------------------
  |  Branch (3903:10): [True: 18, False: 32]
  ------------------
 3904|     32|					if (yych <= 'V') goto yy89;
  ------------------
  |  Branch (3904:10): [True: 0, False: 32]
  ------------------
 3905|     32|					goto yy90;
 3906|     32|				}
 3907|    107|			}
 3908|    206|		}
 3909|    616|	} else {
 3910|    344|		if (yych <= 'm') {
  ------------------
  |  Branch (3910:7): [True: 147, False: 197]
  ------------------
 3911|    147|			if (yych <= 'e') {
  ------------------
  |  Branch (3911:8): [True: 79, False: 68]
  ------------------
 3912|     79|				if (yych <= '`') {
  ------------------
  |  Branch (3912:9): [True: 16, False: 63]
  ------------------
 3913|     16|					if (yych <= 'X') goto yy91;
  ------------------
  |  Branch (3913:10): [True: 4, False: 12]
  ------------------
 3914|     12|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (3914:10): [True: 5, False: 7]
  ------------------
 3915|      7|					goto yy59;
 3916|     63|				} else {
 3917|     63|					if (yych <= 'a') goto yy105;
  ------------------
  |  Branch (3917:10): [True: 45, False: 18]
  ------------------
 3918|     18|					if (yych == 'd') goto yy77;
  ------------------
  |  Branch (3918:10): [True: 9, False: 9]
  ------------------
 3919|      9|					goto yy59;
 3920|     18|				}
 3921|     79|			} else {
 3922|     68|				if (yych <= 'h') {
  ------------------
  |  Branch (3922:9): [True: 16, False: 52]
  ------------------
 3923|     16|					if (yych <= 'f') goto yy78;
  ------------------
  |  Branch (3923:10): [True: 3, False: 13]
  ------------------
 3924|     13|					if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (3924:10): [True: 3, False: 10]
  ------------------
 3925|     10|					goto yy79;
 3926|     52|				} else {
 3927|     52|					if (yych == 'j') goto yy82;
  ------------------
  |  Branch (3927:10): [True: 24, False: 28]
  ------------------
 3928|     28|					if (yych <= 'l') goto yy59;
  ------------------
  |  Branch (3928:10): [True: 5, False: 23]
  ------------------
 3929|     23|					goto yy83;
 3930|     28|				}
 3931|     68|			}
 3932|    197|		} else {
 3933|    197|			if (yych <= 'u') {
  ------------------
  |  Branch (3933:8): [True: 73, False: 124]
  ------------------
 3934|     73|				if (yych <= 'p') {
  ------------------
  |  Branch (3934:9): [True: 47, False: 26]
  ------------------
 3935|     47|					if (yych <= 'n') goto yy84;
  ------------------
  |  Branch (3935:10): [True: 2, False: 45]
  ------------------
 3936|     45|					if (yych <= 'o') goto yy85;
  ------------------
  |  Branch (3936:10): [True: 27, False: 18]
  ------------------
 3937|     18|					goto yy106;
 3938|     45|				} else {
 3939|     26|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (3939:10): [True: 3, False: 23]
  ------------------
 3940|     23|					if (yych <= 's') goto yy86;
  ------------------
  |  Branch (3940:10): [True: 4, False: 19]
  ------------------
 3941|     19|					if (yych <= 't') goto yy87;
  ------------------
  |  Branch (3941:10): [True: 0, False: 19]
  ------------------
 3942|     19|					goto yy88;
 3943|     19|				}
 3944|    124|			} else {
 3945|    124|				if (yych <= 'x') {
  ------------------
  |  Branch (3945:9): [True: 19, False: 105]
  ------------------
 3946|     19|					if (yych == 'w') goto yy90;
  ------------------
  |  Branch (3946:10): [True: 19, False: 0]
  ------------------
 3947|      0|					goto yy59;
 3948|    105|				} else {
 3949|    105|					if (yych <= 'y') goto yy92;
  ------------------
  |  Branch (3949:10): [True: 12, False: 93]
  ------------------
 3950|     93|					if (yych == 0xC2) goto yy211;
  ------------------
  |  Branch (3950:10): [True: 4, False: 89]
  ------------------
 3951|     89|					goto yy59;
 3952|     93|				}
 3953|    124|			}
 3954|    197|		}
 3955|    344|	}
 3956|    211|yy102:
 3957|    211|	YYDEBUG(102, *YYCURSOR);
 3958|    211|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    211|#define   YYCURSOR     cursor
  ------------------
 3959|    211|	if (yych <= '1') {
  ------------------
  |  Branch (3959:6): [True: 82, False: 129]
  ------------------
 3960|     82|		if (yych <= '/') goto yy207;
  ------------------
  |  Branch (3960:7): [True: 20, False: 62]
  ------------------
 3961|     62|		if (yych <= '0') goto yy276;
  ------------------
  |  Branch (3961:7): [True: 58, False: 4]
  ------------------
 3962|      4|		goto yy277;
 3963|    129|	} else {
 3964|    129|		if (yych <= '5') goto yy278;
  ------------------
  |  Branch (3964:7): [True: 58, False: 71]
  ------------------
 3965|     71|		if (yych <= '9') goto yy279;
  ------------------
  |  Branch (3965:7): [True: 36, False: 35]
  ------------------
 3966|     35|		goto yy207;
 3967|     71|	}
 3968|    488|yy103:
 3969|    488|	YYDEBUG(103, *YYCURSOR);
 3970|    488|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    488|#define   YYCURSOR     cursor
  ------------------
 3971|    488|	if (yych <= 'm') {
  ------------------
  |  Branch (3971:6): [True: 413, False: 75]
  ------------------
 3972|    413|		if (yych <= '.') {
  ------------------
  |  Branch (3972:7): [True: 77, False: 336]
  ------------------
 3973|     77|			if (yych <= '\t') {
  ------------------
  |  Branch (3973:8): [True: 17, False: 60]
  ------------------
 3974|     17|				if (yych <= 0x08) goto yy69;
  ------------------
  |  Branch (3974:9): [True: 15, False: 2]
  ------------------
 3975|      2|				goto yy67;
 3976|     60|			} else {
 3977|     60|				if (yych <= ',') goto yy69;
  ------------------
  |  Branch (3977:9): [True: 42, False: 18]
  ------------------
 3978|     18|				if (yych <= '-') goto yy235;
  ------------------
  |  Branch (3978:9): [True: 9, False: 9]
  ------------------
 3979|      9|				goto yy71;
 3980|     18|			}
 3981|    336|		} else {
 3982|    336|			if (yych <= '5') {
  ------------------
  |  Branch (3982:8): [True: 216, False: 120]
  ------------------
 3983|    216|				if (yych <= '/') goto yy280;
  ------------------
  |  Branch (3983:9): [True: 5, False: 211]
  ------------------
 3984|    211|				goto yy236;
 3985|    216|			} else {
 3986|    120|				if (yych <= '9') goto yy237;
  ------------------
  |  Branch (3986:9): [True: 50, False: 70]
  ------------------
 3987|     70|				if (yych <= ':') goto yy75;
  ------------------
  |  Branch (3987:9): [True: 3, False: 67]
  ------------------
 3988|     67|				goto yy69;
 3989|     70|			}
 3990|    336|		}
 3991|    413|	} else {
 3992|     75|		if (yych <= 't') {
  ------------------
  |  Branch (3992:7): [True: 5, False: 70]
  ------------------
 3993|      5|			if (yych <= 'q') {
  ------------------
  |  Branch (3993:8): [True: 2, False: 3]
  ------------------
 3994|      2|				if (yych <= 'n') goto yy93;
  ------------------
  |  Branch (3994:9): [True: 0, False: 2]
  ------------------
 3995|      2|				goto yy69;
 3996|      3|			} else {
 3997|      3|				if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (3997:9): [True: 1, False: 2]
  ------------------
 3998|      2|				if (yych <= 's') goto yy95;
  ------------------
  |  Branch (3998:9): [True: 2, False: 0]
  ------------------
 3999|      0|				goto yy96;
 4000|      2|			}
 4001|     70|		} else {
 4002|     70|			if (yych <= 0xC2) {
  ------------------
  |  Branch (4002:8): [True: 54, False: 16]
  ------------------
 4003|     54|				if (yych <= 0xC1) goto yy69;
  ------------------
  |  Branch (4003:9): [True: 32, False: 22]
  ------------------
 4004|     22|				goto yy97;
 4005|     54|			} else {
 4006|     16|				if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (4006:9): [True: 0, False: 16]
  ------------------
 4007|     16|				goto yy69;
 4008|     16|			}
 4009|     70|		}
 4010|     75|	}
 4011|     49|yy104:
 4012|     49|	YYDEBUG(104, *YYCURSOR);
 4013|     49|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     49|#define   YYCURSOR     cursor
  ------------------
 4014|     49|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (4014:6): [True: 3, False: 46]
  ------------------
 4015|     46|	if (yych <= '5') goto yy281;
  ------------------
  |  Branch (4015:6): [True: 27, False: 19]
  ------------------
 4016|     19|	if (yych <= '9') goto yy282;
  ------------------
  |  Branch (4016:6): [True: 2, False: 17]
  ------------------
 4017|     17|	goto yy59;
 4018|     91|yy105:
 4019|     91|	YYDEBUG(105, *YYCURSOR);
 4020|     91|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     91|#define   YYCURSOR     cursor
  ------------------
 4021|     91|	if (yych <= 'T') {
  ------------------
  |  Branch (4021:6): [True: 39, False: 52]
  ------------------
 4022|     39|		if (yych <= 'L') {
  ------------------
  |  Branch (4022:7): [True: 37, False: 2]
  ------------------
 4023|     37|			if (yych == '.') goto yy283;
  ------------------
  |  Branch (4023:8): [True: 0, False: 37]
  ------------------
 4024|     37|			goto yy59;
 4025|     37|		} else {
 4026|      2|			if (yych <= 'M') goto yy284;
  ------------------
  |  Branch (4026:8): [True: 2, False: 0]
  ------------------
 4027|      0|			if (yych == 'P') goto yy240;
  ------------------
  |  Branch (4027:8): [True: 0, False: 0]
  ------------------
 4028|      0|			goto yy59;
 4029|      0|		}
 4030|     52|	} else {
 4031|     52|		if (yych <= 'o') {
  ------------------
  |  Branch (4031:7): [True: 25, False: 27]
  ------------------
 4032|     25|			if (yych <= 'U') goto yy241;
  ------------------
  |  Branch (4032:8): [True: 0, False: 25]
  ------------------
 4033|     25|			if (yych == 'm') goto yy284;
  ------------------
  |  Branch (4033:8): [True: 12, False: 13]
  ------------------
 4034|     13|			goto yy59;
 4035|     27|		} else {
 4036|     27|			if (yych <= 'p') goto yy240;
  ------------------
  |  Branch (4036:8): [True: 11, False: 16]
  ------------------
 4037|     16|			if (yych == 'u') goto yy241;
  ------------------
  |  Branch (4037:8): [True: 1, False: 15]
  ------------------
 4038|     15|			goto yy59;
 4039|     16|		}
 4040|     52|	}
 4041|     35|yy106:
 4042|     35|	YYDEBUG(106, *YYCURSOR);
 4043|     35|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     35|#define   YYCURSOR     cursor
  ------------------
 4044|     35|	if (yych <= 'L') {
  ------------------
  |  Branch (4044:6): [True: 15, False: 20]
  ------------------
 4045|     15|		if (yych == '.') goto yy283;
  ------------------
  |  Branch (4045:7): [True: 0, False: 15]
  ------------------
 4046|     15|		goto yy59;
 4047|     20|	} else {
 4048|     20|		if (yych <= 'M') goto yy284;
  ------------------
  |  Branch (4048:7): [True: 0, False: 20]
  ------------------
 4049|     20|		if (yych == 'm') goto yy284;
  ------------------
  |  Branch (4049:7): [True: 1, False: 19]
  ------------------
 4050|     19|		goto yy59;
 4051|     20|	}
 4052|     72|yy107:
 4053|     72|	YYDEBUG(107, *YYCURSOR);
 4054|     72|	++YYCURSOR;
  ------------------
  |  |   89|     72|#define   YYCURSOR     cursor
  ------------------
 4055|     72|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|     72|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|     72|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (4055:6): [True: 0, False: 72]
  ------------------
 4056|     72|	yych = *YYCURSOR;
  ------------------
  |  |   89|     72|#define   YYCURSOR     cursor
  ------------------
 4057|     72|	if (yych == 0xA0) goto yy285;
  ------------------
  |  Branch (4057:6): [True: 15, False: 57]
  ------------------
 4058|     57|	if (yych == 0xB5) goto yy274;
  ------------------
  |  Branch (4058:6): [True: 0, False: 57]
  ------------------
 4059|     57|	goto yy59;
 4060|     57|yy108:
 4061|      6|	YYDEBUG(108, *YYCURSOR);
 4062|      6|	++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 4063|      6|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      6|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (4063:6): [True: 0, False: 6]
  ------------------
 4064|      6|	yych = *YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 4065|      6|	if (yych == 0x80) goto yy286;
  ------------------
  |  Branch (4065:6): [True: 0, False: 6]
  ------------------
 4066|      6|	goto yy59;
 4067|    141|yy109:
 4068|    141|	YYDEBUG(109, *YYCURSOR);
 4069|    141|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    141|#define   YYCURSOR     cursor
  ------------------
 4070|    141|	if (yych <= 'n') {
  ------------------
  |  Branch (4070:6): [True: 130, False: 11]
  ------------------
 4071|    130|		if (yych <= '-') {
  ------------------
  |  Branch (4071:7): [True: 26, False: 104]
  ------------------
 4072|     26|			if (yych == '\t') goto yy67;
  ------------------
  |  Branch (4072:8): [True: 0, False: 26]
  ------------------
 4073|     26|			if (yych <= ',') goto yy69;
  ------------------
  |  Branch (4073:8): [True: 22, False: 4]
  ------------------
 4074|      4|			goto yy235;
 4075|    104|		} else {
 4076|    104|			if (yych <= '/') {
  ------------------
  |  Branch (4076:8): [True: 15, False: 89]
  ------------------
 4077|     15|				if (yych <= '.') goto yy287;
  ------------------
  |  Branch (4077:9): [True: 8, False: 7]
  ------------------
 4078|      7|				goto yy280;
 4079|     89|			} else {
 4080|     89|				if (yych <= '9') goto yy237;
  ------------------
  |  Branch (4080:9): [True: 57, False: 32]
  ------------------
 4081|     32|				if (yych <= 'm') goto yy69;
  ------------------
  |  Branch (4081:9): [True: 32, False: 0]
  ------------------
 4082|      0|				goto yy93;
 4083|     32|			}
 4084|    104|		}
 4085|    130|	} else {
 4086|     11|		if (yych <= 't') {
  ------------------
  |  Branch (4086:7): [True: 2, False: 9]
  ------------------
 4087|      2|			if (yych <= 'q') goto yy69;
  ------------------
  |  Branch (4087:8): [True: 1, False: 1]
  ------------------
 4088|      1|			if (yych <= 'r') goto yy94;
  ------------------
  |  Branch (4088:8): [True: 0, False: 1]
  ------------------
 4089|      1|			if (yych <= 's') goto yy95;
  ------------------
  |  Branch (4089:8): [True: 1, False: 0]
  ------------------
 4090|      0|			goto yy96;
 4091|      9|		} else {
 4092|      9|			if (yych <= 0xC2) {
  ------------------
  |  Branch (4092:8): [True: 3, False: 6]
  ------------------
 4093|      3|				if (yych <= 0xC1) goto yy69;
  ------------------
  |  Branch (4093:9): [True: 3, False: 0]
  ------------------
 4094|      0|				goto yy97;
 4095|      6|			} else {
 4096|      6|				if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (4096:9): [True: 1, False: 5]
  ------------------
 4097|      5|				goto yy69;
 4098|      6|			}
 4099|      9|		}
 4100|     11|	}
 4101|  1.59k|yy110:
 4102|  1.59k|	YYDEBUG(110, *YYCURSOR);
 4103|  1.59k|	yych = *++YYCURSOR;
  ------------------
  |  |   89|  1.59k|#define   YYCURSOR     cursor
  ------------------
 4104|  1.59k|	if (yych <= '9') {
  ------------------
  |  Branch (4104:6): [True: 1.20k, False: 385]
  ------------------
 4105|  1.20k|		if (yych == '-') goto yy288;
  ------------------
  |  Branch (4105:7): [True: 130, False: 1.07k]
  ------------------
 4106|  1.07k|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (4106:7): [True: 215, False: 864]
  ------------------
 4107|    864|		goto yy237;
 4108|  1.07k|	} else {
 4109|    385|		if (yych <= 0xC2) {
  ------------------
  |  Branch (4109:7): [True: 291, False: 94]
  ------------------
 4110|    291|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (4110:8): [True: 284, False: 7]
  ------------------
 4111|      7|			goto yy97;
 4112|    291|		} else {
 4113|     94|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (4113:8): [True: 3, False: 91]
  ------------------
 4114|     91|			goto yy196;
 4115|     94|		}
 4116|    385|	}
 4117|     25|yy111:
 4118|     25|	YYDEBUG(111, *YYCURSOR);
 4119|     25|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     25|#define   YYCURSOR     cursor
  ------------------
 4120|     25|	if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (4120:6): [True: 20, False: 5]
  ------------------
 4121|     20|		goto yy112;
 4122|     20|	}
 4123|      5|	goto yy59;
 4124|    440|yy112:
 4125|    440|	YYDEBUG(112, *YYCURSOR);
 4126|    440|	++YYCURSOR;
  ------------------
  |  |   89|    440|#define   YYCURSOR     cursor
  ------------------
 4127|    440|	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  ------------------
  |  |   90|    440|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  ------------------
  |  |   89|    440|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (4127:6): [True: 0, False: 440]
  ------------------
 4128|    440|	yych = *YYCURSOR;
  ------------------
  |  |   89|    440|#define   YYCURSOR     cursor
  ------------------
 4129|    440|	YYDEBUG(113, *YYCURSOR);
 4130|    440|	if (yybm[0+yych] & 8) {
  ------------------
  |  Branch (4130:6): [True: 360, False: 80]
  ------------------
 4131|    360|		goto yy112;
 4132|    360|	}
 4133|     80|	if (yych == '.') goto yy289;
  ------------------
  |  Branch (4133:6): [True: 15, False: 65]
  ------------------
 4134|     65|	YYDEBUG(114, *YYCURSOR);
 4135|     65|#line 1221 "ext/date/lib/parse_date.re"
 4136|     65|	{
 4137|     65|		timelib_ull i;
 4138|       |
 4139|     65|		TIMELIB_INIT;
  ------------------
  |  |  107|     65|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 4140|     65|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|     65|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
 4141|     65|		TIMELIB_UNHAVE_DATE();
  ------------------
  |  |  101|     65|#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
  ------------------
 4142|     65|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|     65|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
 4143|     65|		TIMELIB_HAVE_TZ();
  ------------------
  |  |  105|     65|#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |  287|     20|#define TIMELIB_ERR_DOUBLE_TZ                  0x201
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |  282|      5|#define TIMELIB_WARN_DOUBLE_TZ                 0x101
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |   96|     25|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     25|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     25|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |   80|     25|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (105:50): [True: 25, False: 40]
  |  |  |  Branch (105:72): [True: 20, False: 5]
  |  |  ------------------
  ------------------
 4144|       |
 4145|     40|		i = timelib_get_signed_nr(s, &ptr, 24);
 4146|     40|		s->time->y = 1970;
 4147|     40|		s->time->m = 1;
 4148|     40|		s->time->d = 1;
 4149|     40|		s->time->h = s->time->i = s->time->s = 0;
 4150|     40|		s->time->us = 0;
 4151|     40|		s->time->relative.s += i;
 4152|     40|		s->time->is_localtime = 1;
 4153|     40|		s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
  ------------------
  |  |  327|     40|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
 4154|     40|		s->time->z = 0;
 4155|     40|		s->time->dst = 0;
 4156|       |
 4157|     40|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     40|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     40|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     40|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     40|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     40|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     40|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     40|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     40|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4158|     40|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|     40|#define TIMELIB_RELATIVE       310
  ------------------
 4159|     65|	}
 4160|      0|#line 4161 "ext/date/lib/parse_date.c"
 4161|    146|yy115:
 4162|    146|	YYDEBUG(115, *YYCURSOR);
 4163|    146|	++YYCURSOR;
  ------------------
  |  |   89|    146|#define   YYCURSOR     cursor
  ------------------
 4164|    146|	goto yy20;
 4165|  2.18k|yy116:
 4166|  2.18k|	YYDEBUG(116, *YYCURSOR);
 4167|  2.18k|	yych = *++YYCURSOR;
  ------------------
  |  |   89|  2.18k|#define   YYCURSOR     cursor
  ------------------
 4168|  2.18k|	if (yych <= '@') {
  ------------------
  |  Branch (4168:6): [True: 609, False: 1.58k]
  ------------------
 4169|    609|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (4169:7): [True: 13, False: 596]
  ------------------
 4170|    596|		goto yy20;
 4171|  1.58k|	} else {
 4172|  1.58k|		if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4172:7): [True: 334, False: 1.24k]
  ------------------
 4173|  1.24k|		if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4173:7): [True: 30, False: 1.21k]
  ------------------
 4174|  1.21k|		if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4174:7): [True: 1.05k, False: 165]
  ------------------
 4175|    165|		goto yy20;
 4176|  1.21k|	}
 4177|      5|yy117:
 4178|      5|	YYDEBUG(117, *YYCURSOR);
 4179|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 4180|      5|	if (yych <= 'O') {
  ------------------
  |  Branch (4180:6): [True: 4, False: 1]
  ------------------
 4181|      4|		if (yych <= ')') {
  ------------------
  |  Branch (4181:7): [True: 2, False: 2]
  ------------------
 4182|      2|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4182:8): [True: 2, False: 0]
  ------------------
 4183|      0|			goto yy115;
 4184|      2|		} else {
 4185|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4185:8): [True: 0, False: 2]
  ------------------
 4186|      2|			if (yych <= 'N') goto yy291;
  ------------------
  |  Branch (4186:8): [True: 2, False: 0]
  ------------------
 4187|      0|			goto yy292;
 4188|      2|		}
 4189|      4|	} else {
 4190|      1|		if (yych <= 'n') {
  ------------------
  |  Branch (4190:7): [True: 0, False: 1]
  ------------------
 4191|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4191:8): [True: 0, False: 0]
  ------------------
 4192|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4192:8): [True: 0, False: 0]
  ------------------
 4193|      0|			goto yy291;
 4194|      1|		} else {
 4195|      1|			if (yych <= 'o') goto yy292;
  ------------------
  |  Branch (4195:8): [True: 0, False: 1]
  ------------------
 4196|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4196:8): [True: 1, False: 0]
  ------------------
 4197|      0|			goto yy20;
 4198|      1|		}
 4199|      1|	}
 4200|      5|yy118:
 4201|      5|	YYDEBUG(118, *YYCURSOR);
 4202|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 4203|      5|	if (yych <= 'R') {
  ------------------
  |  Branch (4203:6): [True: 3, False: 2]
  ------------------
 4204|      3|		if (yych <= ')') {
  ------------------
  |  Branch (4204:7): [True: 0, False: 3]
  ------------------
 4205|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4205:8): [True: 0, False: 0]
  ------------------
 4206|      0|			goto yy115;
 4207|      3|		} else {
 4208|      3|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4208:8): [True: 3, False: 0]
  ------------------
 4209|      0|			if (yych <= 'Q') goto yy291;
  ------------------
  |  Branch (4209:8): [True: 0, False: 0]
  ------------------
 4210|      0|			goto yy294;
 4211|      0|		}
 4212|      3|	} else {
 4213|      2|		if (yych <= 'q') {
  ------------------
  |  Branch (4213:7): [True: 0, False: 2]
  ------------------
 4214|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4214:8): [True: 0, False: 0]
  ------------------
 4215|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4215:8): [True: 0, False: 0]
  ------------------
 4216|      0|			goto yy291;
 4217|      2|		} else {
 4218|      2|			if (yych <= 'r') goto yy294;
  ------------------
  |  Branch (4218:8): [True: 1, False: 1]
  ------------------
 4219|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4219:8): [True: 1, False: 0]
  ------------------
 4220|      0|			goto yy20;
 4221|      1|		}
 4222|      2|	}
 4223|     14|yy119:
 4224|     14|	YYDEBUG(119, *YYCURSOR);
 4225|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
 4226|     14|	if (yych <= 'G') {
  ------------------
  |  Branch (4226:6): [True: 9, False: 5]
  ------------------
 4227|      9|		if (yych <= ')') {
  ------------------
  |  Branch (4227:7): [True: 0, False: 9]
  ------------------
 4228|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4228:8): [True: 0, False: 0]
  ------------------
 4229|      0|			goto yy115;
 4230|      9|		} else {
 4231|      9|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4231:8): [True: 0, False: 9]
  ------------------
 4232|      9|			if (yych <= 'F') goto yy291;
  ------------------
  |  Branch (4232:8): [True: 9, False: 0]
  ------------------
 4233|      0|			goto yy296;
 4234|      9|		}
 4235|      9|	} else {
 4236|      5|		if (yych <= 'f') {
  ------------------
  |  Branch (4236:7): [True: 1, False: 4]
  ------------------
 4237|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4237:8): [True: 1, False: 0]
  ------------------
 4238|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4238:8): [True: 0, False: 0]
  ------------------
 4239|      0|			goto yy291;
 4240|      4|		} else {
 4241|      4|			if (yych <= 'g') goto yy296;
  ------------------
  |  Branch (4241:8): [True: 3, False: 1]
  ------------------
 4242|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4242:8): [True: 1, False: 0]
  ------------------
 4243|      0|			goto yy20;
 4244|      1|		}
 4245|      5|	}
 4246|    348|yy120:
 4247|    348|	YYDEBUG(120, *YYCURSOR);
 4248|    348|	yyaccept = 2;
 4249|    348|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    348|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    348|#define   YYCURSOR     cursor
  ------------------
 4250|    348|	if (yych <= '/') {
  ------------------
  |  Branch (4250:6): [True: 90, False: 258]
  ------------------
 4251|     90|		if (yych <= ',') {
  ------------------
  |  Branch (4251:7): [True: 80, False: 10]
  ------------------
 4252|     80|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4252:8): [True: 1, False: 79]
  ------------------
 4253|     79|			goto yy20;
 4254|     80|		} else {
 4255|     10|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (4255:8): [True: 3, False: 7]
  ------------------
 4256|      7|			goto yy297;
 4257|     10|		}
 4258|    258|	} else {
 4259|    258|		if (yych <= '^') {
  ------------------
  |  Branch (4259:7): [True: 54, False: 204]
  ------------------
 4260|     54|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4260:8): [True: 40, False: 14]
  ------------------
 4261|     14|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4261:8): [True: 11, False: 3]
  ------------------
 4262|      3|			goto yy20;
 4263|    204|		} else {
 4264|    204|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (4264:8): [True: 2, False: 202]
  ------------------
 4265|    202|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4265:8): [True: 1, False: 201]
  ------------------
 4266|    201|			if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4266:8): [True: 157, False: 44]
  ------------------
 4267|     44|			goto yy20;
 4268|    201|		}
 4269|    258|	}
 4270|      1|yy121:
 4271|      1|	YYDEBUG(121, *YYCURSOR);
 4272|      1|	yyaccept = 2;
 4273|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 4274|      1|	if (yych <= 'N') {
  ------------------
  |  Branch (4274:6): [True: 0, False: 1]
  ------------------
 4275|      0|		if (yych <= '-') {
  ------------------
  |  Branch (4275:7): [True: 0, False: 0]
  ------------------
 4276|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4276:8): [True: 0, False: 0]
  ------------------
 4277|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4277:8): [True: 0, False: 0]
  ------------------
 4278|      0|			goto yy297;
 4279|      0|		} else {
 4280|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4280:8): [True: 0, False: 0]
  ------------------
 4281|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4281:8): [True: 0, False: 0]
  ------------------
 4282|      0|			goto yy291;
 4283|      0|		}
 4284|      1|	} else {
 4285|      1|		if (yych <= '_') {
  ------------------
  |  Branch (4285:7): [True: 1, False: 0]
  ------------------
 4286|      1|			if (yych <= 'O') goto yy292;
  ------------------
  |  Branch (4286:8): [True: 0, False: 1]
  ------------------
 4287|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4287:8): [True: 1, False: 0]
  ------------------
 4288|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4288:8): [True: 0, False: 0]
  ------------------
 4289|      0|			goto yy297;
 4290|      0|		} else {
 4291|      0|			if (yych <= 'n') {
  ------------------
  |  Branch (4291:8): [True: 0, False: 0]
  ------------------
 4292|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4292:9): [True: 0, False: 0]
  ------------------
 4293|      0|				goto yy298;
 4294|      0|			} else {
 4295|      0|				if (yych <= 'o') goto yy299;
  ------------------
  |  Branch (4295:9): [True: 0, False: 0]
  ------------------
 4296|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4296:9): [True: 0, False: 0]
  ------------------
 4297|      0|				goto yy20;
 4298|      0|			}
 4299|      0|		}
 4300|      1|	}
 4301|     67|yy122:
 4302|     67|	YYDEBUG(122, *YYCURSOR);
 4303|     67|	yyaccept = 2;
 4304|     67|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     67|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     67|#define   YYCURSOR     cursor
  ------------------
 4305|     67|	if (yych <= 'Q') {
  ------------------
  |  Branch (4305:6): [True: 14, False: 53]
  ------------------
 4306|     14|		if (yych <= '-') {
  ------------------
  |  Branch (4306:7): [True: 6, False: 8]
  ------------------
 4307|      6|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4307:8): [True: 0, False: 6]
  ------------------
 4308|      6|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4308:8): [True: 6, False: 0]
  ------------------
 4309|      0|			goto yy297;
 4310|      8|		} else {
 4311|      8|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4311:8): [True: 1, False: 7]
  ------------------
 4312|      7|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4312:8): [True: 6, False: 1]
  ------------------
 4313|      1|			goto yy291;
 4314|      7|		}
 4315|     53|	} else {
 4316|     53|		if (yych <= '_') {
  ------------------
  |  Branch (4316:7): [True: 23, False: 30]
  ------------------
 4317|     23|			if (yych <= 'R') goto yy294;
  ------------------
  |  Branch (4317:8): [True: 22, False: 1]
  ------------------
 4318|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4318:8): [True: 0, False: 1]
  ------------------
 4319|      1|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4319:8): [True: 1, False: 0]
  ------------------
 4320|      0|			goto yy297;
 4321|     30|		} else {
 4322|     30|			if (yych <= 'q') {
  ------------------
  |  Branch (4322:8): [True: 4, False: 26]
  ------------------
 4323|      4|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4323:9): [True: 1, False: 3]
  ------------------
 4324|      3|				goto yy298;
 4325|     26|			} else {
 4326|     26|				if (yych <= 'r') goto yy300;
  ------------------
  |  Branch (4326:9): [True: 14, False: 12]
  ------------------
 4327|     12|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4327:9): [True: 0, False: 12]
  ------------------
 4328|     12|				goto yy20;
 4329|     12|			}
 4330|     30|		}
 4331|     53|	}
 4332|      8|yy123:
 4333|      8|	YYDEBUG(123, *YYCURSOR);
 4334|      8|	yyaccept = 2;
 4335|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 4336|      8|	if (yych <= 'F') {
  ------------------
  |  Branch (4336:6): [True: 3, False: 5]
  ------------------
 4337|      3|		if (yych <= '-') {
  ------------------
  |  Branch (4337:7): [True: 3, False: 0]
  ------------------
 4338|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4338:8): [True: 0, False: 3]
  ------------------
 4339|      3|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4339:8): [True: 2, False: 1]
  ------------------
 4340|      1|			goto yy297;
 4341|      3|		} else {
 4342|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4342:8): [True: 0, False: 0]
  ------------------
 4343|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4343:8): [True: 0, False: 0]
  ------------------
 4344|      0|			goto yy291;
 4345|      0|		}
 4346|      5|	} else {
 4347|      5|		if (yych <= '_') {
  ------------------
  |  Branch (4347:7): [True: 1, False: 4]
  ------------------
 4348|      1|			if (yych <= 'G') goto yy296;
  ------------------
  |  Branch (4348:8): [True: 1, False: 0]
  ------------------
 4349|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4349:8): [True: 0, False: 0]
  ------------------
 4350|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4350:8): [True: 0, False: 0]
  ------------------
 4351|      0|			goto yy297;
 4352|      4|		} else {
 4353|      4|			if (yych <= 'f') {
  ------------------
  |  Branch (4353:8): [True: 0, False: 4]
  ------------------
 4354|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4354:9): [True: 0, False: 0]
  ------------------
 4355|      0|				goto yy298;
 4356|      4|			} else {
 4357|      4|				if (yych <= 'g') goto yy301;
  ------------------
  |  Branch (4357:9): [True: 0, False: 4]
  ------------------
 4358|      4|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4358:9): [True: 3, False: 1]
  ------------------
 4359|      1|				goto yy20;
 4360|      4|			}
 4361|      4|		}
 4362|      5|	}
 4363|      7|yy124:
 4364|      7|	YYDEBUG(124, *YYCURSOR);
 4365|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
 4366|      7|	if (yych <= 'C') {
  ------------------
  |  Branch (4366:6): [True: 0, False: 7]
  ------------------
 4367|      0|		if (yych <= ')') {
  ------------------
  |  Branch (4367:7): [True: 0, False: 0]
  ------------------
 4368|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4368:8): [True: 0, False: 0]
  ------------------
 4369|      0|			goto yy115;
 4370|      0|		} else {
 4371|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4371:8): [True: 0, False: 0]
  ------------------
 4372|      0|			if (yych <= 'B') goto yy291;
  ------------------
  |  Branch (4372:8): [True: 0, False: 0]
  ------------------
 4373|      0|			goto yy302;
 4374|      0|		}
 4375|      7|	} else {
 4376|      7|		if (yych <= 'b') {
  ------------------
  |  Branch (4376:7): [True: 1, False: 6]
  ------------------
 4377|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4377:8): [True: 1, False: 0]
  ------------------
 4378|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4378:8): [True: 0, False: 0]
  ------------------
 4379|      0|			goto yy291;
 4380|      6|		} else {
 4381|      6|			if (yych <= 'c') goto yy302;
  ------------------
  |  Branch (4381:8): [True: 1, False: 5]
  ------------------
 4382|      5|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4382:8): [True: 5, False: 0]
  ------------------
 4383|      0|			goto yy20;
 4384|      5|		}
 4385|      7|	}
 4386|      6|yy125:
 4387|      6|	YYDEBUG(125, *YYCURSOR);
 4388|      6|	yyaccept = 2;
 4389|      6|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      6|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 4390|      6|	if (yych <= 'B') {
  ------------------
  |  Branch (4390:6): [True: 5, False: 1]
  ------------------
 4391|      5|		if (yych <= '-') {
  ------------------
  |  Branch (4391:7): [True: 4, False: 1]
  ------------------
 4392|      4|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4392:8): [True: 0, False: 4]
  ------------------
 4393|      4|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4393:8): [True: 3, False: 1]
  ------------------
 4394|      1|			goto yy297;
 4395|      4|		} else {
 4396|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4396:8): [True: 1, False: 0]
  ------------------
 4397|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4397:8): [True: 0, False: 0]
  ------------------
 4398|      0|			goto yy291;
 4399|      0|		}
 4400|      5|	} else {
 4401|      1|		if (yych <= '_') {
  ------------------
  |  Branch (4401:7): [True: 0, False: 1]
  ------------------
 4402|      0|			if (yych <= 'C') goto yy302;
  ------------------
  |  Branch (4402:8): [True: 0, False: 0]
  ------------------
 4403|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4403:8): [True: 0, False: 0]
  ------------------
 4404|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4404:8): [True: 0, False: 0]
  ------------------
 4405|      0|			goto yy297;
 4406|      1|		} else {
 4407|      1|			if (yych <= 'b') {
  ------------------
  |  Branch (4407:8): [True: 0, False: 1]
  ------------------
 4408|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4408:9): [True: 0, False: 0]
  ------------------
 4409|      0|				goto yy298;
 4410|      1|			} else {
 4411|      1|				if (yych <= 'c') goto yy303;
  ------------------
  |  Branch (4411:9): [True: 0, False: 1]
  ------------------
 4412|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4412:9): [True: 1, False: 0]
  ------------------
 4413|      0|				goto yy20;
 4414|      1|			}
 4415|      1|		}
 4416|      1|	}
 4417|     20|yy126:
 4418|     20|	YYDEBUG(126, *YYCURSOR);
 4419|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
 4420|     20|	if (yych <= 'C') {
  ------------------
  |  Branch (4420:6): [True: 7, False: 13]
  ------------------
 4421|      7|		if (yych <= ')') {
  ------------------
  |  Branch (4421:7): [True: 3, False: 4]
  ------------------
 4422|      3|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4422:8): [True: 1, False: 2]
  ------------------
 4423|      2|			goto yy115;
 4424|      4|		} else {
 4425|      4|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4425:8): [True: 3, False: 1]
  ------------------
 4426|      1|			if (yych <= 'B') goto yy291;
  ------------------
  |  Branch (4426:8): [True: 0, False: 1]
  ------------------
 4427|      1|			goto yy304;
 4428|      1|		}
 4429|     13|	} else {
 4430|     13|		if (yych <= 'b') {
  ------------------
  |  Branch (4430:7): [True: 1, False: 12]
  ------------------
 4431|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4431:8): [True: 1, False: 0]
  ------------------
 4432|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4432:8): [True: 0, False: 0]
  ------------------
 4433|      0|			goto yy291;
 4434|     12|		} else {
 4435|     12|			if (yych <= 'c') goto yy304;
  ------------------
  |  Branch (4435:8): [True: 2, False: 10]
  ------------------
 4436|     10|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4436:8): [True: 10, False: 0]
  ------------------
 4437|      0|			goto yy20;
 4438|     10|		}
 4439|     13|	}
 4440|     34|yy127:
 4441|     34|	YYDEBUG(127, *YYCURSOR);
 4442|     34|	yyaccept = 2;
 4443|     34|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     34|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
 4444|     34|	if (yych <= 'B') {
  ------------------
  |  Branch (4444:6): [True: 3, False: 31]
  ------------------
 4445|      3|		if (yych <= '-') {
  ------------------
  |  Branch (4445:7): [True: 3, False: 0]
  ------------------
 4446|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4446:8): [True: 1, False: 2]
  ------------------
 4447|      2|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4447:8): [True: 2, False: 0]
  ------------------
 4448|      0|			goto yy297;
 4449|      2|		} else {
 4450|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4450:8): [True: 0, False: 0]
  ------------------
 4451|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4451:8): [True: 0, False: 0]
  ------------------
 4452|      0|			goto yy291;
 4453|      0|		}
 4454|     31|	} else {
 4455|     31|		if (yych <= '_') {
  ------------------
  |  Branch (4455:7): [True: 1, False: 30]
  ------------------
 4456|      1|			if (yych <= 'C') goto yy304;
  ------------------
  |  Branch (4456:8): [True: 0, False: 1]
  ------------------
 4457|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4457:8): [True: 0, False: 1]
  ------------------
 4458|      1|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4458:8): [True: 0, False: 1]
  ------------------
 4459|      1|			goto yy297;
 4460|     30|		} else {
 4461|     30|			if (yych <= 'b') {
  ------------------
  |  Branch (4461:8): [True: 0, False: 30]
  ------------------
 4462|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4462:9): [True: 0, False: 0]
  ------------------
 4463|      0|				goto yy298;
 4464|     30|			} else {
 4465|     30|				if (yych <= 'c') goto yy305;
  ------------------
  |  Branch (4465:9): [True: 29, False: 1]
  ------------------
 4466|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4466:9): [True: 1, False: 0]
  ------------------
 4467|      0|				goto yy20;
 4468|      1|			}
 4469|     30|		}
 4470|     31|	}
 4471|     20|yy128:
 4472|     20|	YYDEBUG(128, *YYCURSOR);
 4473|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
 4474|     20|	if (yych <= 'G') {
  ------------------
  |  Branch (4474:6): [True: 15, False: 5]
  ------------------
 4475|     15|		if (yych <= ')') {
  ------------------
  |  Branch (4475:7): [True: 4, False: 11]
  ------------------
 4476|      4|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4476:8): [True: 4, False: 0]
  ------------------
 4477|      0|			goto yy115;
 4478|     11|		} else {
 4479|     11|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4479:8): [True: 11, False: 0]
  ------------------
 4480|      0|			if (yych <= 'F') goto yy291;
  ------------------
  |  Branch (4480:8): [True: 0, False: 0]
  ------------------
 4481|      0|			goto yy306;
 4482|      0|		}
 4483|     15|	} else {
 4484|      5|		if (yych <= 'f') {
  ------------------
  |  Branch (4484:7): [True: 2, False: 3]
  ------------------
 4485|      2|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4485:8): [True: 2, False: 0]
  ------------------
 4486|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4486:8): [True: 0, False: 0]
  ------------------
 4487|      0|			goto yy291;
 4488|      3|		} else {
 4489|      3|			if (yych <= 'g') goto yy306;
  ------------------
  |  Branch (4489:8): [True: 3, False: 0]
  ------------------
 4490|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4490:8): [True: 0, False: 0]
  ------------------
 4491|      0|			goto yy20;
 4492|      0|		}
 4493|      5|	}
 4494|      7|yy129:
 4495|      7|	YYDEBUG(129, *YYCURSOR);
 4496|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
 4497|      7|	if (yych <= 'E') {
  ------------------
  |  Branch (4497:6): [True: 3, False: 4]
  ------------------
 4498|      3|		if (yych <= ')') {
  ------------------
  |  Branch (4498:7): [True: 2, False: 1]
  ------------------
 4499|      2|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4499:8): [True: 2, False: 0]
  ------------------
 4500|      0|			goto yy115;
 4501|      2|		} else {
 4502|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4502:8): [True: 0, False: 1]
  ------------------
 4503|      1|			if (yych <= 'D') goto yy291;
  ------------------
  |  Branch (4503:8): [True: 0, False: 1]
  ------------------
 4504|      1|			goto yy307;
 4505|      1|		}
 4506|      4|	} else {
 4507|      4|		if (yych <= 'd') {
  ------------------
  |  Branch (4507:7): [True: 1, False: 3]
  ------------------
 4508|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4508:8): [True: 0, False: 1]
  ------------------
 4509|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4509:8): [True: 0, False: 1]
  ------------------
 4510|      1|			goto yy291;
 4511|      3|		} else {
 4512|      3|			if (yych <= 'e') goto yy307;
  ------------------
  |  Branch (4512:8): [True: 3, False: 0]
  ------------------
 4513|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4513:8): [True: 0, False: 0]
  ------------------
 4514|      0|			goto yy20;
 4515|      0|		}
 4516|      4|	}
 4517|      9|yy130:
 4518|      9|	YYDEBUG(130, *YYCURSOR);
 4519|      9|	yyaccept = 2;
 4520|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
 4521|      9|	if (yych <= 'F') {
  ------------------
  |  Branch (4521:6): [True: 0, False: 9]
  ------------------
 4522|      0|		if (yych <= '-') {
  ------------------
  |  Branch (4522:7): [True: 0, False: 0]
  ------------------
 4523|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4523:8): [True: 0, False: 0]
  ------------------
 4524|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4524:8): [True: 0, False: 0]
  ------------------
 4525|      0|			goto yy297;
 4526|      0|		} else {
 4527|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4527:8): [True: 0, False: 0]
  ------------------
 4528|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4528:8): [True: 0, False: 0]
  ------------------
 4529|      0|			goto yy291;
 4530|      0|		}
 4531|      9|	} else {
 4532|      9|		if (yych <= '_') {
  ------------------
  |  Branch (4532:7): [True: 0, False: 9]
  ------------------
 4533|      0|			if (yych <= 'G') goto yy306;
  ------------------
  |  Branch (4533:8): [True: 0, False: 0]
  ------------------
 4534|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4534:8): [True: 0, False: 0]
  ------------------
 4535|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4535:8): [True: 0, False: 0]
  ------------------
 4536|      0|			goto yy297;
 4537|      9|		} else {
 4538|      9|			if (yych <= 'f') {
  ------------------
  |  Branch (4538:8): [True: 0, False: 9]
  ------------------
 4539|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4539:9): [True: 0, False: 0]
  ------------------
 4540|      0|				goto yy298;
 4541|      9|			} else {
 4542|      9|				if (yych <= 'g') goto yy308;
  ------------------
  |  Branch (4542:9): [True: 9, False: 0]
  ------------------
 4543|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4543:9): [True: 0, False: 0]
  ------------------
 4544|      0|				goto yy20;
 4545|      0|			}
 4546|      9|		}
 4547|      9|	}
 4548|     38|yy131:
 4549|     38|	YYDEBUG(131, *YYCURSOR);
 4550|     38|	yyaccept = 2;
 4551|     38|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     38|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     38|#define   YYCURSOR     cursor
  ------------------
 4552|     38|	if (yych <= 'D') {
  ------------------
  |  Branch (4552:6): [True: 16, False: 22]
  ------------------
 4553|     16|		if (yych <= '-') {
  ------------------
  |  Branch (4553:7): [True: 13, False: 3]
  ------------------
 4554|     13|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4554:8): [True: 0, False: 13]
  ------------------
 4555|     13|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4555:8): [True: 13, False: 0]
  ------------------
 4556|      0|			goto yy297;
 4557|     13|		} else {
 4558|      3|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4558:8): [True: 0, False: 3]
  ------------------
 4559|      3|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4559:8): [True: 0, False: 3]
  ------------------
 4560|      3|			goto yy291;
 4561|      3|		}
 4562|     22|	} else {
 4563|     22|		if (yych <= '_') {
  ------------------
  |  Branch (4563:7): [True: 3, False: 19]
  ------------------
 4564|      3|			if (yych <= 'E') goto yy307;
  ------------------
  |  Branch (4564:8): [True: 0, False: 3]
  ------------------
 4565|      3|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4565:8): [True: 2, False: 1]
  ------------------
 4566|      1|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4566:8): [True: 1, False: 0]
  ------------------
 4567|      0|			goto yy297;
 4568|     19|		} else {
 4569|     19|			if (yych <= 'd') {
  ------------------
  |  Branch (4569:8): [True: 0, False: 19]
  ------------------
 4570|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4570:9): [True: 0, False: 0]
  ------------------
 4571|      0|				goto yy298;
 4572|     19|			} else {
 4573|     19|				if (yych <= 'e') goto yy309;
  ------------------
  |  Branch (4573:9): [True: 15, False: 4]
  ------------------
 4574|      4|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4574:9): [True: 2, False: 2]
  ------------------
 4575|      2|				goto yy20;
 4576|      4|			}
 4577|     19|		}
 4578|     22|	}
 4579|      2|yy132:
 4580|      2|	YYDEBUG(132, *YYCURSOR);
 4581|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 4582|      2|	if (yych <= 'B') {
  ------------------
  |  Branch (4582:6): [True: 0, False: 2]
  ------------------
 4583|      0|		if (yych <= ')') {
  ------------------
  |  Branch (4583:7): [True: 0, False: 0]
  ------------------
 4584|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4584:8): [True: 0, False: 0]
  ------------------
 4585|      0|			goto yy115;
 4586|      0|		} else {
 4587|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4587:8): [True: 0, False: 0]
  ------------------
 4588|      0|			if (yych <= 'A') goto yy291;
  ------------------
  |  Branch (4588:8): [True: 0, False: 0]
  ------------------
 4589|      0|			goto yy310;
 4590|      0|		}
 4591|      2|	} else {
 4592|      2|		if (yych <= 'a') {
  ------------------
  |  Branch (4592:7): [True: 0, False: 2]
  ------------------
 4593|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4593:8): [True: 0, False: 0]
  ------------------
 4594|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4594:8): [True: 0, False: 0]
  ------------------
 4595|      0|			goto yy291;
 4596|      2|		} else {
 4597|      2|			if (yych <= 'b') goto yy310;
  ------------------
  |  Branch (4597:8): [True: 1, False: 1]
  ------------------
 4598|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4598:8): [True: 0, False: 1]
  ------------------
 4599|      1|			goto yy20;
 4600|      1|		}
 4601|      2|	}
 4602|     19|yy133:
 4603|     19|	YYDEBUG(133, *YYCURSOR);
 4604|     19|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     19|#define   YYCURSOR     cursor
  ------------------
 4605|     19|	if (yych <= 'R') {
  ------------------
  |  Branch (4605:6): [True: 2, False: 17]
  ------------------
 4606|      2|		if (yych <= '@') {
  ------------------
  |  Branch (4606:7): [True: 0, False: 2]
  ------------------
 4607|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4607:8): [True: 0, False: 0]
  ------------------
 4608|      0|			goto yy20;
 4609|      2|		} else {
 4610|      2|			if (yych == 'F') goto yy311;
  ------------------
  |  Branch (4610:8): [True: 0, False: 2]
  ------------------
 4611|      2|			if (yych <= 'Q') goto yy291;
  ------------------
  |  Branch (4611:8): [True: 2, False: 0]
  ------------------
 4612|      0|			goto yy312;
 4613|      2|		}
 4614|     17|	} else {
 4615|     17|		if (yych <= 'f') {
  ------------------
  |  Branch (4615:7): [True: 3, False: 14]
  ------------------
 4616|      3|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4616:8): [True: 0, False: 3]
  ------------------
 4617|      3|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4617:8): [True: 0, False: 3]
  ------------------
 4618|      3|			if (yych <= 'e') goto yy291;
  ------------------
  |  Branch (4618:8): [True: 3, False: 0]
  ------------------
 4619|      0|			goto yy311;
 4620|     14|		} else {
 4621|     14|			if (yych == 'r') goto yy312;
  ------------------
  |  Branch (4621:8): [True: 1, False: 13]
  ------------------
 4622|     13|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4622:8): [True: 13, False: 0]
  ------------------
 4623|      0|			goto yy20;
 4624|     13|		}
 4625|     17|	}
 4626|     16|yy134:
 4627|     16|	YYDEBUG(134, *YYCURSOR);
 4628|     16|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     16|#define   YYCURSOR     cursor
  ------------------
 4629|     16|	if (yych <= 'U') {
  ------------------
  |  Branch (4629:6): [True: 6, False: 10]
  ------------------
 4630|      6|		if (yych <= ')') {
  ------------------
  |  Branch (4630:7): [True: 2, False: 4]
  ------------------
 4631|      2|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4631:8): [True: 2, False: 0]
  ------------------
 4632|      0|			goto yy115;
 4633|      4|		} else {
 4634|      4|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4634:8): [True: 0, False: 4]
  ------------------
 4635|      4|			if (yych <= 'T') goto yy291;
  ------------------
  |  Branch (4635:8): [True: 4, False: 0]
  ------------------
 4636|      0|			goto yy313;
 4637|      4|		}
 4638|     10|	} else {
 4639|     10|		if (yych <= 't') {
  ------------------
  |  Branch (4639:7): [True: 6, False: 4]
  ------------------
 4640|      6|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4640:8): [True: 0, False: 6]
  ------------------
 4641|      6|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4641:8): [True: 0, False: 6]
  ------------------
 4642|      6|			goto yy291;
 4643|      6|		} else {
 4644|      4|			if (yych <= 'u') goto yy313;
  ------------------
  |  Branch (4644:8): [True: 2, False: 2]
  ------------------
 4645|      2|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4645:8): [True: 0, False: 2]
  ------------------
 4646|      2|			goto yy20;
 4647|      2|		}
 4648|     10|	}
 4649|     15|yy135:
 4650|     15|	YYDEBUG(135, *YYCURSOR);
 4651|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 4652|     15|	if (yych <= 'O') {
  ------------------
  |  Branch (4652:6): [True: 4, False: 11]
  ------------------
 4653|      4|		if (yych <= '@') {
  ------------------
  |  Branch (4653:7): [True: 1, False: 3]
  ------------------
 4654|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4654:8): [True: 0, False: 1]
  ------------------
 4655|      1|			goto yy20;
 4656|      3|		} else {
 4657|      3|			if (yych == 'I') goto yy314;
  ------------------
  |  Branch (4657:8): [True: 0, False: 3]
  ------------------
 4658|      3|			if (yych <= 'N') goto yy291;
  ------------------
  |  Branch (4658:8): [True: 0, False: 3]
  ------------------
 4659|      3|			goto yy316;
 4660|      3|		}
 4661|     11|	} else {
 4662|     11|		if (yych <= 'i') {
  ------------------
  |  Branch (4662:7): [True: 8, False: 3]
  ------------------
 4663|      8|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4663:8): [True: 0, False: 8]
  ------------------
 4664|      8|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4664:8): [True: 0, False: 8]
  ------------------
 4665|      8|			if (yych <= 'h') goto yy291;
  ------------------
  |  Branch (4665:8): [True: 0, False: 8]
  ------------------
 4666|      8|			goto yy314;
 4667|      8|		} else {
 4668|      3|			if (yych == 'o') goto yy316;
  ------------------
  |  Branch (4668:8): [True: 3, False: 0]
  ------------------
 4669|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4669:8): [True: 0, False: 0]
  ------------------
 4670|      0|			goto yy20;
 4671|      0|		}
 4672|     11|	}
 4673|     10|yy136:
 4674|     10|	YYDEBUG(136, *YYCURSOR);
 4675|     10|	yyaccept = 2;
 4676|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     10|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
 4677|     10|	if (yych <= 'A') {
  ------------------
  |  Branch (4677:6): [True: 0, False: 10]
  ------------------
 4678|      0|		if (yych <= '-') {
  ------------------
  |  Branch (4678:7): [True: 0, False: 0]
  ------------------
 4679|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4679:8): [True: 0, False: 0]
  ------------------
 4680|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4680:8): [True: 0, False: 0]
  ------------------
 4681|      0|			goto yy297;
 4682|      0|		} else {
 4683|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4683:8): [True: 0, False: 0]
  ------------------
 4684|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4684:8): [True: 0, False: 0]
  ------------------
 4685|      0|			goto yy291;
 4686|      0|		}
 4687|     10|	} else {
 4688|     10|		if (yych <= '_') {
  ------------------
  |  Branch (4688:7): [True: 0, False: 10]
  ------------------
 4689|      0|			if (yych <= 'B') goto yy310;
  ------------------
  |  Branch (4689:8): [True: 0, False: 0]
  ------------------
 4690|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4690:8): [True: 0, False: 0]
  ------------------
 4691|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4691:8): [True: 0, False: 0]
  ------------------
 4692|      0|			goto yy297;
 4693|     10|		} else {
 4694|     10|			if (yych <= 'a') {
  ------------------
  |  Branch (4694:8): [True: 0, False: 10]
  ------------------
 4695|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4695:9): [True: 0, False: 0]
  ------------------
 4696|      0|				goto yy298;
 4697|     10|			} else {
 4698|     10|				if (yych <= 'b') goto yy317;
  ------------------
  |  Branch (4698:9): [True: 6, False: 4]
  ------------------
 4699|      4|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4699:9): [True: 2, False: 2]
  ------------------
 4700|      2|				goto yy20;
 4701|      4|			}
 4702|     10|		}
 4703|     10|	}
 4704|      3|yy137:
 4705|      3|	YYDEBUG(137, *YYCURSOR);
 4706|      3|	yyaccept = 2;
 4707|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 4708|      3|	if (yych <= 'Q') {
  ------------------
  |  Branch (4708:6): [True: 1, False: 2]
  ------------------
 4709|      1|		if (yych <= '.') {
  ------------------
  |  Branch (4709:7): [True: 1, False: 0]
  ------------------
 4710|      1|			if (yych <= ')') {
  ------------------
  |  Branch (4710:8): [True: 0, False: 1]
  ------------------
 4711|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4711:9): [True: 0, False: 0]
  ------------------
 4712|      0|				goto yy115;
 4713|      1|			} else {
 4714|      1|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (4714:9): [True: 1, False: 0]
  ------------------
 4715|      0|				goto yy20;
 4716|      1|			}
 4717|      1|		} else {
 4718|      0|			if (yych <= '@') {
  ------------------
  |  Branch (4718:8): [True: 0, False: 0]
  ------------------
 4719|      0|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (4719:9): [True: 0, False: 0]
  ------------------
 4720|      0|				goto yy20;
 4721|      0|			} else {
 4722|      0|				if (yych == 'F') goto yy311;
  ------------------
  |  Branch (4722:9): [True: 0, False: 0]
  ------------------
 4723|      0|				goto yy291;
 4724|      0|			}
 4725|      0|		}
 4726|      2|	} else {
 4727|      2|		if (yych <= '`') {
  ------------------
  |  Branch (4727:7): [True: 0, False: 2]
  ------------------
 4728|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (4728:8): [True: 0, False: 0]
  ------------------
 4729|      0|				if (yych <= 'R') goto yy312;
  ------------------
  |  Branch (4729:9): [True: 0, False: 0]
  ------------------
 4730|      0|				goto yy291;
 4731|      0|			} else {
 4732|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (4732:9): [True: 0, False: 0]
  ------------------
 4733|      0|				goto yy20;
 4734|      0|			}
 4735|      2|		} else {
 4736|      2|			if (yych <= 'q') {
  ------------------
  |  Branch (4736:8): [True: 1, False: 1]
  ------------------
 4737|      1|				if (yych == 'f') goto yy318;
  ------------------
  |  Branch (4737:9): [True: 0, False: 1]
  ------------------
 4738|      1|				goto yy298;
 4739|      1|			} else {
 4740|      1|				if (yych <= 'r') goto yy319;
  ------------------
  |  Branch (4740:9): [True: 1, False: 0]
  ------------------
 4741|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4741:9): [True: 0, False: 0]
  ------------------
 4742|      0|				goto yy20;
 4743|      0|			}
 4744|      2|		}
 4745|      2|	}
 4746|     54|yy138:
 4747|     54|	YYDEBUG(138, *YYCURSOR);
 4748|     54|	yyaccept = 2;
 4749|     54|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     54|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     54|#define   YYCURSOR     cursor
  ------------------
 4750|     54|	if (yych <= 'T') {
  ------------------
  |  Branch (4750:6): [True: 12, False: 42]
  ------------------
 4751|     12|		if (yych <= '-') {
  ------------------
  |  Branch (4751:7): [True: 5, False: 7]
  ------------------
 4752|      5|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4752:8): [True: 0, False: 5]
  ------------------
 4753|      5|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4753:8): [True: 5, False: 0]
  ------------------
 4754|      0|			goto yy297;
 4755|      7|		} else {
 4756|      7|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (4756:8): [True: 1, False: 6]
  ------------------
 4757|      6|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4757:8): [True: 1, False: 5]
  ------------------
 4758|      5|			goto yy291;
 4759|      6|		}
 4760|     42|	} else {
 4761|     42|		if (yych <= '_') {
  ------------------
  |  Branch (4761:7): [True: 1, False: 41]
  ------------------
 4762|      1|			if (yych <= 'U') goto yy313;
  ------------------
  |  Branch (4762:8): [True: 0, False: 1]
  ------------------
 4763|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (4763:8): [True: 1, False: 0]
  ------------------
 4764|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (4764:8): [True: 0, False: 0]
  ------------------
 4765|      0|			goto yy297;
 4766|     41|		} else {
 4767|     41|			if (yych <= 't') {
  ------------------
  |  Branch (4767:8): [True: 6, False: 35]
  ------------------
 4768|      6|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4768:9): [True: 0, False: 6]
  ------------------
 4769|      6|				goto yy298;
 4770|     35|			} else {
 4771|     35|				if (yych <= 'u') goto yy320;
  ------------------
  |  Branch (4771:9): [True: 32, False: 3]
  ------------------
 4772|      3|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4772:9): [True: 0, False: 3]
  ------------------
 4773|      3|				goto yy20;
 4774|      3|			}
 4775|     41|		}
 4776|     42|	}
 4777|     23|yy139:
 4778|     23|	YYDEBUG(139, *YYCURSOR);
 4779|     23|	yyaccept = 2;
 4780|     23|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     23|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     23|#define   YYCURSOR     cursor
  ------------------
 4781|     23|	if (yych <= 'N') {
  ------------------
  |  Branch (4781:6): [True: 4, False: 19]
  ------------------
 4782|      4|		if (yych <= '.') {
  ------------------
  |  Branch (4782:7): [True: 0, False: 4]
  ------------------
 4783|      0|			if (yych <= ')') {
  ------------------
  |  Branch (4783:8): [True: 0, False: 0]
  ------------------
 4784|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (4784:9): [True: 0, False: 0]
  ------------------
 4785|      0|				goto yy115;
 4786|      0|			} else {
 4787|      0|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (4787:9): [True: 0, False: 0]
  ------------------
 4788|      0|				goto yy20;
 4789|      0|			}
 4790|      4|		} else {
 4791|      4|			if (yych <= '@') {
  ------------------
  |  Branch (4791:8): [True: 4, False: 0]
  ------------------
 4792|      4|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (4792:9): [True: 0, False: 4]
  ------------------
 4793|      4|				goto yy20;
 4794|      4|			} else {
 4795|      0|				if (yych == 'I') goto yy314;
  ------------------
  |  Branch (4795:9): [True: 0, False: 0]
  ------------------
 4796|      0|				goto yy291;
 4797|      0|			}
 4798|      4|		}
 4799|     19|	} else {
 4800|     19|		if (yych <= '`') {
  ------------------
  |  Branch (4800:7): [True: 5, False: 14]
  ------------------
 4801|      5|			if (yych <= 'Z') {
  ------------------
  |  Branch (4801:8): [True: 5, False: 0]
  ------------------
 4802|      5|				if (yych <= 'O') goto yy316;
  ------------------
  |  Branch (4802:9): [True: 4, False: 1]
  ------------------
 4803|      1|				goto yy291;
 4804|      5|			} else {
 4805|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (4805:9): [True: 0, False: 0]
  ------------------
 4806|      0|				goto yy20;
 4807|      0|			}
 4808|     14|		} else {
 4809|     14|			if (yych <= 'n') {
  ------------------
  |  Branch (4809:8): [True: 9, False: 5]
  ------------------
 4810|      9|				if (yych == 'i') goto yy321;
  ------------------
  |  Branch (4810:9): [True: 9, False: 0]
  ------------------
 4811|      0|				goto yy298;
 4812|      9|			} else {
 4813|      5|				if (yych <= 'o') goto yy322;
  ------------------
  |  Branch (4813:9): [True: 1, False: 4]
  ------------------
 4814|      4|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (4814:9): [True: 3, False: 1]
  ------------------
 4815|      1|				goto yy20;
 4816|      4|			}
 4817|     14|		}
 4818|     19|	}
 4819|     10|yy140:
 4820|     10|	YYDEBUG(140, *YYCURSOR);
 4821|     10|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
 4822|     10|	if (yych <= 'S') {
  ------------------
  |  Branch (4822:6): [True: 5, False: 5]
  ------------------
 4823|      5|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (4823:7): [True: 0, False: 5]
  ------------------
 4824|      5|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (4824:7): [True: 0, False: 5]
  ------------------
 4825|      5|		goto yy291;
 4826|      5|	} else {
 4827|      5|		if (yych <= 'Z') {
  ------------------
  |  Branch (4827:7): [True: 4, False: 1]
  ------------------
 4828|      4|			if (yych <= 'T') goto yy323;
  ------------------
  |  Branch (4828:8): [True: 3, False: 1]
  ------------------
 4829|      1|			goto yy291;
 4830|      4|		} else {
 4831|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (4831:8): [True: 0, False: 1]
  ------------------
 4832|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (4832:8): [True: 0, False: 1]
  ------------------
 4833|      1|			goto yy20;
 4834|      1|		}
 4835|      5|	}
 4836|     88|yy141:
 4837|     88|	YYDEBUG(141, *YYCURSOR);
 4838|     88|	++YYCURSOR;
  ------------------
  |  |   89|     88|#define   YYCURSOR     cursor
  ------------------
 4839|     88|	if ((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
  ------------------
  |  |   90|     88|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
  ------------------
  |  |   89|     88|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (4839:6): [True: 0, False: 88]
  ------------------
 4840|     88|	yych = *YYCURSOR;
  ------------------
  |  |   89|     88|#define   YYCURSOR     cursor
  ------------------
 4841|    248|yy142:
 4842|    248|	YYDEBUG(142, *YYCURSOR);
 4843|    248|	if (yybm[0+yych] & 16) {
  ------------------
  |  Branch (4843:6): [True: 88, False: 160]
  ------------------
 4844|     88|		goto yy141;
 4845|     88|	}
 4846|    160|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (4846:6): [True: 4, False: 156]
  ------------------
 4847|    156|	if (yych <= '2') goto yy143;
  ------------------
  |  Branch (4847:6): [True: 83, False: 73]
  ------------------
 4848|     73|	if (yych <= '3') goto yy144;
  ------------------
  |  Branch (4848:6): [True: 25, False: 48]
  ------------------
 4849|     48|	if (yych <= '9') goto yy145;
  ------------------
  |  Branch (4849:6): [True: 21, False: 27]
  ------------------
 4850|     27|	goto yy59;
 4851|     83|yy143:
 4852|     83|	YYDEBUG(143, *YYCURSOR);
 4853|     83|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     83|#define   YYCURSOR     cursor
  ------------------
 4854|     83|	if (yych <= '9') {
  ------------------
  |  Branch (4854:6): [True: 46, False: 37]
  ------------------
 4855|     46|		if (yych <= ' ') {
  ------------------
  |  Branch (4855:7): [True: 7, False: 39]
  ------------------
 4856|      7|			if (yych <= 0x08) {
  ------------------
  |  Branch (4856:8): [True: 3, False: 4]
  ------------------
 4857|      3|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (4857:9): [True: 3, False: 0]
  ------------------
 4858|      0|				goto yy59;
 4859|      4|			} else {
 4860|      4|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (4860:9): [True: 0, False: 4]
  ------------------
 4861|      4|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (4861:9): [True: 2, False: 2]
  ------------------
 4862|      2|				goto yy326;
 4863|      4|			}
 4864|     39|		} else {
 4865|     39|			if (yych <= '-') {
  ------------------
  |  Branch (4865:8): [True: 2, False: 37]
  ------------------
 4866|      2|				if (yych == ',') goto yy326;
  ------------------
  |  Branch (4866:9): [True: 0, False: 2]
  ------------------
 4867|      2|				goto yy59;
 4868|     37|			} else {
 4869|     37|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (4869:9): [True: 3, False: 34]
  ------------------
 4870|     34|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (4870:9): [True: 4, False: 30]
  ------------------
 4871|     30|				goto yy328;
 4872|     34|			}
 4873|     39|		}
 4874|     46|	} else {
 4875|     37|		if (yych <= 'm') {
  ------------------
  |  Branch (4875:7): [True: 24, False: 13]
  ------------------
 4876|     24|			if (yych <= 'd') {
  ------------------
  |  Branch (4876:8): [True: 7, False: 17]
  ------------------
 4877|      7|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (4877:9): [True: 7, False: 0]
  ------------------
 4878|      0|				goto yy326;
 4879|     17|			} else {
 4880|     17|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (4880:9): [True: 0, False: 17]
  ------------------
 4881|     17|				goto yy59;
 4882|     17|			}
 4883|     24|		} else {
 4884|     13|			if (yych <= 'r') {
  ------------------
  |  Branch (4884:8): [True: 4, False: 9]
  ------------------
 4885|      4|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (4885:9): [True: 1, False: 3]
  ------------------
 4886|      3|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (4886:9): [True: 0, False: 3]
  ------------------
 4887|      3|				goto yy329;
 4888|      9|			} else {
 4889|      9|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (4889:9): [True: 1, False: 8]
  ------------------
 4890|      8|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (4890:9): [True: 0, False: 8]
  ------------------
 4891|      8|				goto yy59;
 4892|      8|			}
 4893|     13|		}
 4894|     37|	}
 4895|     25|yy144:
 4896|     25|	YYDEBUG(144, *YYCURSOR);
 4897|     25|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     25|#define   YYCURSOR     cursor
  ------------------
 4898|     25|	if (yych <= '1') {
  ------------------
  |  Branch (4898:6): [True: 6, False: 19]
  ------------------
 4899|      6|		if (yych <= ' ') {
  ------------------
  |  Branch (4899:7): [True: 1, False: 5]
  ------------------
 4900|      1|			if (yych <= 0x08) {
  ------------------
  |  Branch (4900:8): [True: 1, False: 0]
  ------------------
 4901|      1|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (4901:9): [True: 0, False: 1]
  ------------------
 4902|      1|				goto yy59;
 4903|      1|			} else {
 4904|      0|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (4904:9): [True: 0, False: 0]
  ------------------
 4905|      0|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (4905:9): [True: 0, False: 0]
  ------------------
 4906|      0|				goto yy326;
 4907|      0|			}
 4908|      5|		} else {
 4909|      5|			if (yych <= '-') {
  ------------------
  |  Branch (4909:8): [True: 0, False: 5]
  ------------------
 4910|      0|				if (yych == ',') goto yy326;
  ------------------
  |  Branch (4910:9): [True: 0, False: 0]
  ------------------
 4911|      0|				goto yy59;
 4912|      5|			} else {
 4913|      5|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (4913:9): [True: 3, False: 2]
  ------------------
 4914|      2|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (4914:9): [True: 2, False: 0]
  ------------------
 4915|      0|				goto yy328;
 4916|      2|			}
 4917|      5|		}
 4918|     19|	} else {
 4919|     19|		if (yych <= 'm') {
  ------------------
  |  Branch (4919:7): [True: 13, False: 6]
  ------------------
 4920|     13|			if (yych <= 'd') {
  ------------------
  |  Branch (4920:8): [True: 12, False: 1]
  ------------------
 4921|     12|				if (yych <= '9') goto yy332;
  ------------------
  |  Branch (4921:9): [True: 12, False: 0]
  ------------------
 4922|      0|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (4922:9): [True: 0, False: 0]
  ------------------
 4923|      0|				goto yy326;
 4924|      1|			} else {
 4925|      1|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (4925:9): [True: 1, False: 0]
  ------------------
 4926|      0|				goto yy59;
 4927|      1|			}
 4928|     13|		} else {
 4929|      6|			if (yych <= 'r') {
  ------------------
  |  Branch (4929:8): [True: 5, False: 1]
  ------------------
 4930|      5|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (4930:9): [True: 0, False: 5]
  ------------------
 4931|      5|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (4931:9): [True: 1, False: 4]
  ------------------
 4932|      4|				goto yy329;
 4933|      5|			} else {
 4934|      1|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (4934:9): [True: 1, False: 0]
  ------------------
 4935|      0|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (4935:9): [True: 0, False: 0]
  ------------------
 4936|      0|				goto yy59;
 4937|      0|			}
 4938|      6|		}
 4939|     19|	}
 4940|     21|yy145:
 4941|     21|	YYDEBUG(145, *YYCURSOR);
 4942|     21|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     21|#define   YYCURSOR     cursor
  ------------------
 4943|     21|	if (yych <= '9') {
  ------------------
  |  Branch (4943:6): [True: 14, False: 7]
  ------------------
 4944|     14|		if (yych <= ' ') {
  ------------------
  |  Branch (4944:7): [True: 7, False: 7]
  ------------------
 4945|      7|			if (yych <= 0x08) {
  ------------------
  |  Branch (4945:8): [True: 1, False: 6]
  ------------------
 4946|      1|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (4946:9): [True: 1, False: 0]
  ------------------
 4947|      0|				goto yy59;
 4948|      6|			} else {
 4949|      6|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (4949:9): [True: 5, False: 1]
  ------------------
 4950|      1|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (4950:9): [True: 0, False: 1]
  ------------------
 4951|      1|				goto yy326;
 4952|      1|			}
 4953|      7|		} else {
 4954|      7|			if (yych <= '-') {
  ------------------
  |  Branch (4954:8): [True: 3, False: 4]
  ------------------
 4955|      3|				if (yych == ',') goto yy326;
  ------------------
  |  Branch (4955:9): [True: 0, False: 3]
  ------------------
 4956|      3|				goto yy59;
 4957|      4|			} else {
 4958|      4|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (4958:9): [True: 1, False: 3]
  ------------------
 4959|      3|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (4959:9): [True: 0, False: 3]
  ------------------
 4960|      3|				goto yy332;
 4961|      3|			}
 4962|      7|		}
 4963|     14|	} else {
 4964|      7|		if (yych <= 'm') {
  ------------------
  |  Branch (4964:7): [True: 3, False: 4]
  ------------------
 4965|      3|			if (yych <= 'd') {
  ------------------
  |  Branch (4965:8): [True: 2, False: 1]
  ------------------
 4966|      2|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (4966:9): [True: 2, False: 0]
  ------------------
 4967|      0|				goto yy326;
 4968|      2|			} else {
 4969|      1|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (4969:9): [True: 0, False: 1]
  ------------------
 4970|      1|				goto yy59;
 4971|      1|			}
 4972|      4|		} else {
 4973|      4|			if (yych <= 'r') {
  ------------------
  |  Branch (4973:8): [True: 1, False: 3]
  ------------------
 4974|      1|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (4974:9): [True: 0, False: 1]
  ------------------
 4975|      1|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (4975:9): [True: 0, False: 1]
  ------------------
 4976|      1|				goto yy329;
 4977|      3|			} else {
 4978|      3|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (4978:9): [True: 0, False: 3]
  ------------------
 4979|      3|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (4979:9): [True: 0, False: 3]
  ------------------
 4980|      3|				goto yy59;
 4981|      3|			}
 4982|      4|		}
 4983|      7|	}
 4984|     63|yy146:
 4985|     63|	YYDEBUG(146, *YYCURSOR);
 4986|     63|	yyaccept = 2;
 4987|     63|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     63|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     63|#define   YYCURSOR     cursor
  ------------------
 4988|     63|	if (yych <= '.') {
  ------------------
  |  Branch (4988:6): [True: 9, False: 54]
  ------------------
 4989|      9|		if (yych <= ' ') {
  ------------------
  |  Branch (4989:7): [True: 4, False: 5]
  ------------------
 4990|      4|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (4990:8): [True: 0, False: 4]
  ------------------
 4991|      4|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (4991:8): [True: 4, False: 0]
  ------------------
 4992|      0|			goto yy142;
 4993|      5|		} else {
 4994|      5|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (4994:8): [True: 0, False: 5]
  ------------------
 4995|      5|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (4995:8): [True: 0, False: 5]
  ------------------
 4996|      5|			goto yy142;
 4997|      5|		}
 4998|     54|	} else {
 4999|     54|		if (yych <= 'H') {
  ------------------
  |  Branch (4999:7): [True: 12, False: 42]
  ------------------
 5000|     12|			if (yych <= '/') goto yy20;
  ------------------
  |  Branch (5000:8): [True: 7, False: 5]
  ------------------
 5001|      5|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (5001:8): [True: 4, False: 1]
  ------------------
 5002|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5002:8): [True: 1, False: 0]
  ------------------
 5003|      0|			goto yy291;
 5004|     42|		} else {
 5005|     42|			if (yych <= 'Z') {
  ------------------
  |  Branch (5005:8): [True: 41, False: 1]
  ------------------
 5006|     41|				if (yych <= 'I') goto yy333;
  ------------------
  |  Branch (5006:9): [True: 41, False: 0]
  ------------------
 5007|      0|				goto yy291;
 5008|     41|			} else {
 5009|      1|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5009:9): [True: 0, False: 1]
  ------------------
 5010|      1|				if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5010:9): [True: 0, False: 1]
  ------------------
 5011|      1|				goto yy20;
 5012|      1|			}
 5013|     42|		}
 5014|     54|	}
 5015|      1|yy147:
 5016|      1|	YYDEBUG(147, *YYCURSOR);
 5017|      1|	yyaccept = 2;
 5018|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 5019|      1|	if (yych <= ',') {
  ------------------
  |  Branch (5019:6): [True: 0, False: 1]
  ------------------
 5020|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (5020:7): [True: 0, False: 0]
  ------------------
 5021|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (5021:8): [True: 0, False: 0]
  ------------------
 5022|      0|			goto yy20;
 5023|      0|		} else {
 5024|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (5024:8): [True: 0, False: 0]
  ------------------
 5025|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5025:8): [True: 0, False: 0]
  ------------------
 5026|      0|			goto yy20;
 5027|      0|		}
 5028|      1|	} else {
 5029|      1|		if (yych <= '@') {
  ------------------
  |  Branch (5029:7): [True: 1, False: 0]
  ------------------
 5030|      1|			if (yych == '/') goto yy20;
  ------------------
  |  Branch (5030:8): [True: 0, False: 1]
  ------------------
 5031|      1|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (5031:8): [True: 1, False: 0]
  ------------------
 5032|      0|			goto yy20;
 5033|      1|		} else {
 5034|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5034:8): [True: 0, False: 0]
  ------------------
 5035|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5035:8): [True: 0, False: 0]
  ------------------
 5036|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5036:8): [True: 0, False: 0]
  ------------------
 5037|      0|			goto yy20;
 5038|      0|		}
 5039|      1|	}
 5040|     48|yy148:
 5041|     48|	YYDEBUG(148, *YYCURSOR);
 5042|     48|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     48|#define   YYCURSOR     cursor
  ------------------
 5043|     48|	if (yych <= 'N') {
  ------------------
  |  Branch (5043:6): [True: 24, False: 24]
  ------------------
 5044|     24|		if (yych <= ')') {
  ------------------
  |  Branch (5044:7): [True: 2, False: 22]
  ------------------
 5045|      2|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5045:8): [True: 2, False: 0]
  ------------------
 5046|      0|			goto yy115;
 5047|     22|		} else {
 5048|     22|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5048:8): [True: 4, False: 18]
  ------------------
 5049|     18|			if (yych <= 'M') goto yy291;
  ------------------
  |  Branch (5049:8): [True: 3, False: 15]
  ------------------
 5050|     15|			goto yy334;
 5051|     18|		}
 5052|     24|	} else {
 5053|     24|		if (yych <= 'm') {
  ------------------
  |  Branch (5053:7): [True: 1, False: 23]
  ------------------
 5054|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5054:8): [True: 1, False: 0]
  ------------------
 5055|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5055:8): [True: 0, False: 0]
  ------------------
 5056|      0|			goto yy291;
 5057|     23|		} else {
 5058|     23|			if (yych <= 'n') goto yy334;
  ------------------
  |  Branch (5058:8): [True: 21, False: 2]
  ------------------
 5059|      2|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5059:8): [True: 2, False: 0]
  ------------------
 5060|      0|			goto yy20;
 5061|      2|		}
 5062|     24|	}
 5063|     22|yy149:
 5064|     22|	YYDEBUG(149, *YYCURSOR);
 5065|     22|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
 5066|     22|	if (yych <= 'N') {
  ------------------
  |  Branch (5066:6): [True: 3, False: 19]
  ------------------
 5067|      3|		if (yych <= '@') {
  ------------------
  |  Branch (5067:7): [True: 1, False: 2]
  ------------------
 5068|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5068:8): [True: 0, False: 1]
  ------------------
 5069|      1|			goto yy20;
 5070|      2|		} else {
 5071|      2|			if (yych == 'L') goto yy335;
  ------------------
  |  Branch (5071:8): [True: 0, False: 2]
  ------------------
 5072|      2|			if (yych <= 'M') goto yy291;
  ------------------
  |  Branch (5072:8): [True: 2, False: 0]
  ------------------
 5073|      0|			goto yy336;
 5074|      2|		}
 5075|     19|	} else {
 5076|     19|		if (yych <= 'l') {
  ------------------
  |  Branch (5076:7): [True: 15, False: 4]
  ------------------
 5077|     15|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5077:8): [True: 4, False: 11]
  ------------------
 5078|     11|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5078:8): [True: 0, False: 11]
  ------------------
 5079|     11|			if (yych <= 'k') goto yy291;
  ------------------
  |  Branch (5079:8): [True: 6, False: 5]
  ------------------
 5080|      5|			goto yy335;
 5081|     11|		} else {
 5082|      4|			if (yych == 'n') goto yy336;
  ------------------
  |  Branch (5082:8): [True: 2, False: 2]
  ------------------
 5083|      2|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5083:8): [True: 2, False: 0]
  ------------------
 5084|      0|			goto yy20;
 5085|      2|		}
 5086|     19|	}
 5087|      8|yy150:
 5088|      8|	YYDEBUG(150, *YYCURSOR);
 5089|      8|	yyaccept = 2;
 5090|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 5091|      8|	if (yych <= 'M') {
  ------------------
  |  Branch (5091:6): [True: 0, False: 8]
  ------------------
 5092|      0|		if (yych <= '-') {
  ------------------
  |  Branch (5092:7): [True: 0, False: 0]
  ------------------
 5093|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5093:8): [True: 0, False: 0]
  ------------------
 5094|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5094:8): [True: 0, False: 0]
  ------------------
 5095|      0|			goto yy297;
 5096|      0|		} else {
 5097|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5097:8): [True: 0, False: 0]
  ------------------
 5098|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5098:8): [True: 0, False: 0]
  ------------------
 5099|      0|			goto yy291;
 5100|      0|		}
 5101|      8|	} else {
 5102|      8|		if (yych <= '_') {
  ------------------
  |  Branch (5102:7): [True: 0, False: 8]
  ------------------
 5103|      0|			if (yych <= 'N') goto yy334;
  ------------------
  |  Branch (5103:8): [True: 0, False: 0]
  ------------------
 5104|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5104:8): [True: 0, False: 0]
  ------------------
 5105|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5105:8): [True: 0, False: 0]
  ------------------
 5106|      0|			goto yy297;
 5107|      8|		} else {
 5108|      8|			if (yych <= 'm') {
  ------------------
  |  Branch (5108:8): [True: 0, False: 8]
  ------------------
 5109|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5109:9): [True: 0, False: 0]
  ------------------
 5110|      0|				goto yy298;
 5111|      8|			} else {
 5112|      8|				if (yych <= 'n') goto yy337;
  ------------------
  |  Branch (5112:9): [True: 5, False: 3]
  ------------------
 5113|      3|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5113:9): [True: 3, False: 0]
  ------------------
 5114|      0|				goto yy20;
 5115|      3|			}
 5116|      8|		}
 5117|      8|	}
 5118|      4|yy151:
 5119|      4|	YYDEBUG(151, *YYCURSOR);
 5120|      4|	yyaccept = 2;
 5121|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 5122|      4|	if (yych <= 'M') {
  ------------------
  |  Branch (5122:6): [True: 0, False: 4]
  ------------------
 5123|      0|		if (yych <= '.') {
  ------------------
  |  Branch (5123:7): [True: 0, False: 0]
  ------------------
 5124|      0|			if (yych <= ')') {
  ------------------
  |  Branch (5124:8): [True: 0, False: 0]
  ------------------
 5125|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5125:9): [True: 0, False: 0]
  ------------------
 5126|      0|				goto yy115;
 5127|      0|			} else {
 5128|      0|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (5128:9): [True: 0, False: 0]
  ------------------
 5129|      0|				goto yy20;
 5130|      0|			}
 5131|      0|		} else {
 5132|      0|			if (yych <= '@') {
  ------------------
  |  Branch (5132:8): [True: 0, False: 0]
  ------------------
 5133|      0|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (5133:9): [True: 0, False: 0]
  ------------------
 5134|      0|				goto yy20;
 5135|      0|			} else {
 5136|      0|				if (yych == 'L') goto yy335;
  ------------------
  |  Branch (5136:9): [True: 0, False: 0]
  ------------------
 5137|      0|				goto yy291;
 5138|      0|			}
 5139|      0|		}
 5140|      4|	} else {
 5141|      4|		if (yych <= '`') {
  ------------------
  |  Branch (5141:7): [True: 0, False: 4]
  ------------------
 5142|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (5142:8): [True: 0, False: 0]
  ------------------
 5143|      0|				if (yych <= 'N') goto yy336;
  ------------------
  |  Branch (5143:9): [True: 0, False: 0]
  ------------------
 5144|      0|				goto yy291;
 5145|      0|			} else {
 5146|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (5146:9): [True: 0, False: 0]
  ------------------
 5147|      0|				goto yy20;
 5148|      0|			}
 5149|      4|		} else {
 5150|      4|			if (yych <= 'm') {
  ------------------
  |  Branch (5150:8): [True: 0, False: 4]
  ------------------
 5151|      0|				if (yych == 'l') goto yy338;
  ------------------
  |  Branch (5151:9): [True: 0, False: 0]
  ------------------
 5152|      0|				goto yy298;
 5153|      4|			} else {
 5154|      4|				if (yych <= 'n') goto yy339;
  ------------------
  |  Branch (5154:9): [True: 4, False: 0]
  ------------------
 5155|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5155:9): [True: 0, False: 0]
  ------------------
 5156|      0|				goto yy20;
 5157|      0|			}
 5158|      4|		}
 5159|      4|	}
 5160|     12|yy152:
 5161|     12|	YYDEBUG(152, *YYCURSOR);
 5162|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 5163|     12|	if (yych <= 'S') {
  ------------------
  |  Branch (5163:6): [True: 1, False: 11]
  ------------------
 5164|      1|		if (yych <= ')') {
  ------------------
  |  Branch (5164:7): [True: 0, False: 1]
  ------------------
 5165|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5165:8): [True: 0, False: 0]
  ------------------
 5166|      0|			goto yy115;
 5167|      1|		} else {
 5168|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5168:8): [True: 0, False: 1]
  ------------------
 5169|      1|			if (yych <= 'R') goto yy291;
  ------------------
  |  Branch (5169:8): [True: 1, False: 0]
  ------------------
 5170|      0|			goto yy340;
 5171|      1|		}
 5172|     11|	} else {
 5173|     11|		if (yych <= 'r') {
  ------------------
  |  Branch (5173:7): [True: 0, False: 11]
  ------------------
 5174|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5174:8): [True: 0, False: 0]
  ------------------
 5175|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5175:8): [True: 0, False: 0]
  ------------------
 5176|      0|			goto yy291;
 5177|     11|		} else {
 5178|     11|			if (yych <= 's') goto yy340;
  ------------------
  |  Branch (5178:8): [True: 0, False: 11]
  ------------------
 5179|     11|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5179:8): [True: 11, False: 0]
  ------------------
 5180|      0|			goto yy20;
 5181|     11|		}
 5182|     11|	}
 5183|      3|yy153:
 5184|      3|	YYDEBUG(153, *YYCURSOR);
 5185|      3|	yyaccept = 2;
 5186|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 5187|      3|	if (yych <= 'R') {
  ------------------
  |  Branch (5187:6): [True: 0, False: 3]
  ------------------
 5188|      0|		if (yych <= '-') {
  ------------------
  |  Branch (5188:7): [True: 0, False: 0]
  ------------------
 5189|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5189:8): [True: 0, False: 0]
  ------------------
 5190|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5190:8): [True: 0, False: 0]
  ------------------
 5191|      0|			goto yy297;
 5192|      0|		} else {
 5193|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5193:8): [True: 0, False: 0]
  ------------------
 5194|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5194:8): [True: 0, False: 0]
  ------------------
 5195|      0|			goto yy291;
 5196|      0|		}
 5197|      3|	} else {
 5198|      3|		if (yych <= '_') {
  ------------------
  |  Branch (5198:7): [True: 0, False: 3]
  ------------------
 5199|      0|			if (yych <= 'S') goto yy340;
  ------------------
  |  Branch (5199:8): [True: 0, False: 0]
  ------------------
 5200|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5200:8): [True: 0, False: 0]
  ------------------
 5201|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5201:8): [True: 0, False: 0]
  ------------------
 5202|      0|			goto yy297;
 5203|      3|		} else {
 5204|      3|			if (yych <= 'r') {
  ------------------
  |  Branch (5204:8): [True: 0, False: 3]
  ------------------
 5205|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5205:9): [True: 0, False: 0]
  ------------------
 5206|      0|				goto yy298;
 5207|      3|			} else {
 5208|      3|				if (yych <= 's') goto yy341;
  ------------------
  |  Branch (5208:9): [True: 3, False: 0]
  ------------------
 5209|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5209:9): [True: 0, False: 0]
  ------------------
 5210|      0|				goto yy20;
 5211|      0|			}
 5212|      3|		}
 5213|      3|	}
 5214|     46|yy154:
 5215|     46|	YYDEBUG(154, *YYCURSOR);
 5216|     46|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     46|#define   YYCURSOR     cursor
  ------------------
 5217|     46|	if (yych <= 'Y') {
  ------------------
  |  Branch (5217:6): [True: 11, False: 35]
  ------------------
 5218|     11|		if (yych <= '@') {
  ------------------
  |  Branch (5218:7): [True: 9, False: 2]
  ------------------
 5219|      9|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5219:8): [True: 0, False: 9]
  ------------------
 5220|      9|			goto yy20;
 5221|      9|		} else {
 5222|      2|			if (yych == 'R') goto yy342;
  ------------------
  |  Branch (5222:8): [True: 1, False: 1]
  ------------------
 5223|      1|			if (yych <= 'X') goto yy291;
  ------------------
  |  Branch (5223:8): [True: 1, False: 0]
  ------------------
 5224|      0|			goto yy343;
 5225|      1|		}
 5226|     35|	} else {
 5227|     35|		if (yych <= 'r') {
  ------------------
  |  Branch (5227:7): [True: 11, False: 24]
  ------------------
 5228|     11|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5228:8): [True: 0, False: 11]
  ------------------
 5229|     11|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5229:8): [True: 1, False: 10]
  ------------------
 5230|     10|			if (yych <= 'q') goto yy291;
  ------------------
  |  Branch (5230:8): [True: 9, False: 1]
  ------------------
 5231|      1|			goto yy342;
 5232|     24|		} else {
 5233|     24|			if (yych == 'y') goto yy343;
  ------------------
  |  Branch (5233:8): [True: 0, False: 24]
  ------------------
 5234|     24|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5234:8): [True: 21, False: 3]
  ------------------
 5235|      3|			goto yy20;
 5236|     24|		}
 5237|     35|	}
 5238|     13|yy155:
 5239|     13|	YYDEBUG(155, *YYCURSOR);
 5240|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
 5241|     13|	if (yych <= 'D') {
  ------------------
  |  Branch (5241:6): [True: 6, False: 7]
  ------------------
 5242|      6|		if (yych <= ')') {
  ------------------
  |  Branch (5242:7): [True: 4, False: 2]
  ------------------
 5243|      4|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5243:8): [True: 4, False: 0]
  ------------------
 5244|      0|			goto yy115;
 5245|      4|		} else {
 5246|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5246:8): [True: 2, False: 0]
  ------------------
 5247|      0|			if (yych <= 'C') goto yy291;
  ------------------
  |  Branch (5247:8): [True: 0, False: 0]
  ------------------
 5248|      0|			goto yy344;
 5249|      0|		}
 5250|      7|	} else {
 5251|      7|		if (yych <= 'c') {
  ------------------
  |  Branch (5251:7): [True: 2, False: 5]
  ------------------
 5252|      2|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5252:8): [True: 2, False: 0]
  ------------------
 5253|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5253:8): [True: 0, False: 0]
  ------------------
 5254|      0|			goto yy291;
 5255|      5|		} else {
 5256|      5|			if (yych <= 'd') goto yy344;
  ------------------
  |  Branch (5256:8): [True: 2, False: 3]
  ------------------
 5257|      3|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5257:8): [True: 3, False: 0]
  ------------------
 5258|      0|			goto yy20;
 5259|      3|		}
 5260|      7|	}
 5261|     25|yy156:
 5262|     25|	YYDEBUG(156, *YYCURSOR);
 5263|     25|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     25|#define   YYCURSOR     cursor
  ------------------
 5264|     25|	if (yych <= 'N') {
  ------------------
  |  Branch (5264:6): [True: 3, False: 22]
  ------------------
 5265|      3|		if (yych <= ')') {
  ------------------
  |  Branch (5265:7): [True: 2, False: 1]
  ------------------
 5266|      2|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5266:8): [True: 2, False: 0]
  ------------------
 5267|      0|			goto yy115;
 5268|      2|		} else {
 5269|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5269:8): [True: 0, False: 1]
  ------------------
 5270|      1|			if (yych <= 'M') goto yy291;
  ------------------
  |  Branch (5270:8): [True: 1, False: 0]
  ------------------
 5271|      0|			goto yy314;
 5272|      1|		}
 5273|     22|	} else {
 5274|     22|		if (yych <= 'm') {
  ------------------
  |  Branch (5274:7): [True: 11, False: 11]
  ------------------
 5275|     11|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5275:8): [True: 4, False: 7]
  ------------------
 5276|      7|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5276:8): [True: 4, False: 3]
  ------------------
 5277|      3|			goto yy291;
 5278|     11|		} else {
 5279|     11|			if (yych <= 'n') goto yy314;
  ------------------
  |  Branch (5279:8): [True: 10, False: 1]
  ------------------
 5280|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5280:8): [True: 1, False: 0]
  ------------------
 5281|      0|			goto yy20;
 5282|      1|		}
 5283|     22|	}
 5284|      7|yy157:
 5285|      7|	YYDEBUG(157, *YYCURSOR);
 5286|      7|	yyaccept = 2;
 5287|      7|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      7|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
 5288|      7|	if (yych <= 'X') {
  ------------------
  |  Branch (5288:6): [True: 0, False: 7]
  ------------------
 5289|      0|		if (yych <= '.') {
  ------------------
  |  Branch (5289:7): [True: 0, False: 0]
  ------------------
 5290|      0|			if (yych <= ')') {
  ------------------
  |  Branch (5290:8): [True: 0, False: 0]
  ------------------
 5291|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5291:9): [True: 0, False: 0]
  ------------------
 5292|      0|				goto yy115;
 5293|      0|			} else {
 5294|      0|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (5294:9): [True: 0, False: 0]
  ------------------
 5295|      0|				goto yy20;
 5296|      0|			}
 5297|      0|		} else {
 5298|      0|			if (yych <= '@') {
  ------------------
  |  Branch (5298:8): [True: 0, False: 0]
  ------------------
 5299|      0|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (5299:9): [True: 0, False: 0]
  ------------------
 5300|      0|				goto yy20;
 5301|      0|			} else {
 5302|      0|				if (yych == 'R') goto yy342;
  ------------------
  |  Branch (5302:9): [True: 0, False: 0]
  ------------------
 5303|      0|				goto yy291;
 5304|      0|			}
 5305|      0|		}
 5306|      7|	} else {
 5307|      7|		if (yych <= '`') {
  ------------------
  |  Branch (5307:7): [True: 0, False: 7]
  ------------------
 5308|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (5308:8): [True: 0, False: 0]
  ------------------
 5309|      0|				if (yych <= 'Y') goto yy343;
  ------------------
  |  Branch (5309:9): [True: 0, False: 0]
  ------------------
 5310|      0|				goto yy291;
 5311|      0|			} else {
 5312|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (5312:9): [True: 0, False: 0]
  ------------------
 5313|      0|				goto yy20;
 5314|      0|			}
 5315|      7|		} else {
 5316|      7|			if (yych <= 'x') {
  ------------------
  |  Branch (5316:8): [True: 3, False: 4]
  ------------------
 5317|      3|				if (yych == 'r') goto yy345;
  ------------------
  |  Branch (5317:9): [True: 2, False: 1]
  ------------------
 5318|      1|				goto yy298;
 5319|      4|			} else {
 5320|      4|				if (yych <= 'y') goto yy346;
  ------------------
  |  Branch (5320:9): [True: 4, False: 0]
  ------------------
 5321|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5321:9): [True: 0, False: 0]
  ------------------
 5322|      0|				goto yy20;
 5323|      0|			}
 5324|      7|		}
 5325|      7|	}
 5326|      0|yy158:
 5327|      0|	YYDEBUG(158, *YYCURSOR);
 5328|      0|	yyaccept = 2;
 5329|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 5330|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (5330:6): [True: 0, False: 0]
  ------------------
 5331|      0|		if (yych <= '-') {
  ------------------
  |  Branch (5331:7): [True: 0, False: 0]
  ------------------
 5332|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5332:8): [True: 0, False: 0]
  ------------------
 5333|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5333:8): [True: 0, False: 0]
  ------------------
 5334|      0|			goto yy297;
 5335|      0|		} else {
 5336|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5336:8): [True: 0, False: 0]
  ------------------
 5337|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5337:8): [True: 0, False: 0]
  ------------------
 5338|      0|			goto yy291;
 5339|      0|		}
 5340|      0|	} else {
 5341|      0|		if (yych <= '_') {
  ------------------
  |  Branch (5341:7): [True: 0, False: 0]
  ------------------
 5342|      0|			if (yych <= 'D') goto yy344;
  ------------------
  |  Branch (5342:8): [True: 0, False: 0]
  ------------------
 5343|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5343:8): [True: 0, False: 0]
  ------------------
 5344|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5344:8): [True: 0, False: 0]
  ------------------
 5345|      0|			goto yy297;
 5346|      0|		} else {
 5347|      0|			if (yych <= 'c') {
  ------------------
  |  Branch (5347:8): [True: 0, False: 0]
  ------------------
 5348|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5348:9): [True: 0, False: 0]
  ------------------
 5349|      0|				goto yy298;
 5350|      0|			} else {
 5351|      0|				if (yych <= 'd') goto yy347;
  ------------------
  |  Branch (5351:9): [True: 0, False: 0]
  ------------------
 5352|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5352:9): [True: 0, False: 0]
  ------------------
 5353|      0|				goto yy20;
 5354|      0|			}
 5355|      0|		}
 5356|      0|	}
 5357|     33|yy159:
 5358|     33|	YYDEBUG(159, *YYCURSOR);
 5359|     33|	yyaccept = 2;
 5360|     33|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     33|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     33|#define   YYCURSOR     cursor
  ------------------
 5361|     33|	if (yych <= 'M') {
  ------------------
  |  Branch (5361:6): [True: 11, False: 22]
  ------------------
 5362|     11|		if (yych <= '-') {
  ------------------
  |  Branch (5362:7): [True: 9, False: 2]
  ------------------
 5363|      9|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5363:8): [True: 0, False: 9]
  ------------------
 5364|      9|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5364:8): [True: 6, False: 3]
  ------------------
 5365|      3|			goto yy297;
 5366|      9|		} else {
 5367|      2|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5367:8): [True: 1, False: 1]
  ------------------
 5368|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5368:8): [True: 0, False: 1]
  ------------------
 5369|      1|			goto yy291;
 5370|      1|		}
 5371|     22|	} else {
 5372|     22|		if (yych <= '_') {
  ------------------
  |  Branch (5372:7): [True: 0, False: 22]
  ------------------
 5373|      0|			if (yych <= 'N') goto yy314;
  ------------------
  |  Branch (5373:8): [True: 0, False: 0]
  ------------------
 5374|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5374:8): [True: 0, False: 0]
  ------------------
 5375|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5375:8): [True: 0, False: 0]
  ------------------
 5376|      0|			goto yy297;
 5377|     22|		} else {
 5378|     22|			if (yych <= 'm') {
  ------------------
  |  Branch (5378:8): [True: 0, False: 22]
  ------------------
 5379|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5379:9): [True: 0, False: 0]
  ------------------
 5380|      0|				goto yy298;
 5381|     22|			} else {
 5382|     22|				if (yych <= 'n') goto yy321;
  ------------------
  |  Branch (5382:9): [True: 12, False: 10]
  ------------------
 5383|     10|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5383:9): [True: 7, False: 3]
  ------------------
 5384|      3|				goto yy20;
 5385|     10|			}
 5386|     22|		}
 5387|     22|	}
 5388|     70|yy160:
 5389|     70|	YYDEBUG(160, *YYCURSOR);
 5390|     70|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     70|#define   YYCURSOR     cursor
  ------------------
 5391|     70|	if (yych <= 'X') {
  ------------------
  |  Branch (5391:6): [True: 12, False: 58]
  ------------------
 5392|     12|		if (yych <= ')') {
  ------------------
  |  Branch (5392:7): [True: 4, False: 8]
  ------------------
 5393|      4|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5393:8): [True: 4, False: 0]
  ------------------
 5394|      0|			goto yy115;
 5395|      8|		} else {
 5396|      8|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5396:8): [True: 2, False: 6]
  ------------------
 5397|      6|			if (yych <= 'W') goto yy291;
  ------------------
  |  Branch (5397:8): [True: 6, False: 0]
  ------------------
 5398|      0|			goto yy348;
 5399|      6|		}
 5400|     58|	} else {
 5401|     58|		if (yych <= 'w') {
  ------------------
  |  Branch (5401:7): [True: 34, False: 24]
  ------------------
 5402|     34|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5402:8): [True: 0, False: 34]
  ------------------
 5403|     34|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5403:8): [True: 2, False: 32]
  ------------------
 5404|     32|			goto yy291;
 5405|     34|		} else {
 5406|     24|			if (yych <= 'x') goto yy348;
  ------------------
  |  Branch (5406:8): [True: 20, False: 4]
  ------------------
 5407|      4|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5407:8): [True: 0, False: 4]
  ------------------
 5408|      4|			goto yy20;
 5409|      4|		}
 5410|     58|	}
 5411|     41|yy161:
 5412|     41|	YYDEBUG(161, *YYCURSOR);
 5413|     41|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     41|#define   YYCURSOR     cursor
  ------------------
 5414|     41|	if (yych <= 'N') {
  ------------------
  |  Branch (5414:6): [True: 9, False: 32]
  ------------------
 5415|      9|		if (yych <= ')') {
  ------------------
  |  Branch (5415:7): [True: 7, False: 2]
  ------------------
 5416|      7|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5416:8): [True: 7, False: 0]
  ------------------
 5417|      0|			goto yy115;
 5418|      7|		} else {
 5419|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5419:8): [True: 1, False: 1]
  ------------------
 5420|      1|			if (yych <= 'M') goto yy291;
  ------------------
  |  Branch (5420:8): [True: 1, False: 0]
  ------------------
 5421|      0|			goto yy311;
 5422|      1|		}
 5423|     32|	} else {
 5424|     32|		if (yych <= 'm') {
  ------------------
  |  Branch (5424:7): [True: 10, False: 22]
  ------------------
 5425|     10|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5425:8): [True: 1, False: 9]
  ------------------
 5426|      9|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5426:8): [True: 2, False: 7]
  ------------------
 5427|      7|			goto yy291;
 5428|     22|		} else {
 5429|     22|			if (yych <= 'n') goto yy311;
  ------------------
  |  Branch (5429:8): [True: 8, False: 14]
  ------------------
 5430|     14|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5430:8): [True: 12, False: 2]
  ------------------
 5431|      2|			goto yy20;
 5432|     14|		}
 5433|     32|	}
 5434|     46|yy162:
 5435|     46|	YYDEBUG(162, *YYCURSOR);
 5436|     46|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     46|#define   YYCURSOR     cursor
  ------------------
 5437|     46|	if (yych <= 'W') {
  ------------------
  |  Branch (5437:6): [True: 9, False: 37]
  ------------------
 5438|      9|		if (yych <= 'N') {
  ------------------
  |  Branch (5438:7): [True: 8, False: 1]
  ------------------
 5439|      8|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5439:8): [True: 0, False: 8]
  ------------------
 5440|      8|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5440:8): [True: 8, False: 0]
  ------------------
 5441|      0|			goto yy291;
 5442|      8|		} else {
 5443|      1|			if (yych <= 'O') goto yy349;
  ------------------
  |  Branch (5443:8): [True: 0, False: 1]
  ------------------
 5444|      1|			if (yych <= 'U') goto yy291;
  ------------------
  |  Branch (5444:8): [True: 1, False: 0]
  ------------------
 5445|      0|			if (yych <= 'V') goto yy304;
  ------------------
  |  Branch (5445:8): [True: 0, False: 0]
  ------------------
 5446|      0|			goto yy350;
 5447|      0|		}
 5448|     37|	} else {
 5449|     37|		if (yych <= 'o') {
  ------------------
  |  Branch (5449:7): [True: 0, False: 37]
  ------------------
 5450|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5450:8): [True: 0, False: 0]
  ------------------
 5451|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5451:8): [True: 0, False: 0]
  ------------------
 5452|      0|			if (yych <= 'n') goto yy291;
  ------------------
  |  Branch (5452:8): [True: 0, False: 0]
  ------------------
 5453|      0|			goto yy349;
 5454|     37|		} else {
 5455|     37|			if (yych <= 'v') {
  ------------------
  |  Branch (5455:8): [True: 9, False: 28]
  ------------------
 5456|      9|				if (yych <= 'u') goto yy291;
  ------------------
  |  Branch (5456:9): [True: 8, False: 1]
  ------------------
 5457|      1|				goto yy304;
 5458|     28|			} else {
 5459|     28|				if (yych <= 'w') goto yy350;
  ------------------
  |  Branch (5459:9): [True: 27, False: 1]
  ------------------
 5460|      1|				if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5460:9): [True: 1, False: 0]
  ------------------
 5461|      0|				goto yy20;
 5462|      1|			}
 5463|     37|		}
 5464|     37|	}
 5465|      6|yy163:
 5466|      6|	YYDEBUG(163, *YYCURSOR);
 5467|      6|	yyaccept = 2;
 5468|      6|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      6|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 5469|      6|	if (yych <= 'W') {
  ------------------
  |  Branch (5469:6): [True: 2, False: 4]
  ------------------
 5470|      2|		if (yych <= '-') {
  ------------------
  |  Branch (5470:7): [True: 0, False: 2]
  ------------------
 5471|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5471:8): [True: 0, False: 0]
  ------------------
 5472|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5472:8): [True: 0, False: 0]
  ------------------
 5473|      0|			goto yy297;
 5474|      2|		} else {
 5475|      2|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5475:8): [True: 0, False: 2]
  ------------------
 5476|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5476:8): [True: 2, False: 0]
  ------------------
 5477|      0|			goto yy291;
 5478|      2|		}
 5479|      4|	} else {
 5480|      4|		if (yych <= '_') {
  ------------------
  |  Branch (5480:7): [True: 0, False: 4]
  ------------------
 5481|      0|			if (yych <= 'X') goto yy348;
  ------------------
  |  Branch (5481:8): [True: 0, False: 0]
  ------------------
 5482|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5482:8): [True: 0, False: 0]
  ------------------
 5483|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5483:8): [True: 0, False: 0]
  ------------------
 5484|      0|			goto yy297;
 5485|      4|		} else {
 5486|      4|			if (yych <= 'w') {
  ------------------
  |  Branch (5486:8): [True: 0, False: 4]
  ------------------
 5487|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5487:9): [True: 0, False: 0]
  ------------------
 5488|      0|				goto yy298;
 5489|      4|			} else {
 5490|      4|				if (yych <= 'x') goto yy352;
  ------------------
  |  Branch (5490:9): [True: 4, False: 0]
  ------------------
 5491|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5491:9): [True: 0, False: 0]
  ------------------
 5492|      0|				goto yy20;
 5493|      0|			}
 5494|      4|		}
 5495|      4|	}
 5496|     10|yy164:
 5497|     10|	YYDEBUG(164, *YYCURSOR);
 5498|     10|	yyaccept = 2;
 5499|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     10|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
 5500|     10|	if (yych <= 'M') {
  ------------------
  |  Branch (5500:6): [True: 2, False: 8]
  ------------------
 5501|      2|		if (yych <= '-') {
  ------------------
  |  Branch (5501:7): [True: 1, False: 1]
  ------------------
 5502|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5502:8): [True: 0, False: 1]
  ------------------
 5503|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5503:8): [True: 1, False: 0]
  ------------------
 5504|      0|			goto yy297;
 5505|      1|		} else {
 5506|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5506:8): [True: 0, False: 1]
  ------------------
 5507|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5507:8): [True: 1, False: 0]
  ------------------
 5508|      0|			goto yy291;
 5509|      1|		}
 5510|      8|	} else {
 5511|      8|		if (yych <= '_') {
  ------------------
  |  Branch (5511:7): [True: 3, False: 5]
  ------------------
 5512|      3|			if (yych <= 'N') goto yy311;
  ------------------
  |  Branch (5512:8): [True: 0, False: 3]
  ------------------
 5513|      3|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5513:8): [True: 0, False: 3]
  ------------------
 5514|      3|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5514:8): [True: 0, False: 3]
  ------------------
 5515|      3|			goto yy297;
 5516|      5|		} else {
 5517|      5|			if (yych <= 'm') {
  ------------------
  |  Branch (5517:8): [True: 0, False: 5]
  ------------------
 5518|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5518:9): [True: 0, False: 0]
  ------------------
 5519|      0|				goto yy298;
 5520|      5|			} else {
 5521|      5|				if (yych <= 'n') goto yy318;
  ------------------
  |  Branch (5521:9): [True: 3, False: 2]
  ------------------
 5522|      2|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5522:9): [True: 1, False: 1]
  ------------------
 5523|      1|				goto yy20;
 5524|      2|			}
 5525|      5|		}
 5526|      8|	}
 5527|     33|yy165:
 5528|     33|	YYDEBUG(165, *YYCURSOR);
 5529|     33|	yyaccept = 2;
 5530|     33|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     33|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     33|#define   YYCURSOR     cursor
  ------------------
 5531|     33|	if (yych <= 'V') {
  ------------------
  |  Branch (5531:6): [True: 5, False: 28]
  ------------------
 5532|      5|		if (yych <= '.') {
  ------------------
  |  Branch (5532:7): [True: 2, False: 3]
  ------------------
 5533|      2|			if (yych <= ')') {
  ------------------
  |  Branch (5533:8): [True: 2, False: 0]
  ------------------
 5534|      2|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5534:9): [True: 2, False: 0]
  ------------------
 5535|      0|				goto yy115;
 5536|      2|			} else {
 5537|      0|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (5537:9): [True: 0, False: 0]
  ------------------
 5538|      0|				goto yy20;
 5539|      0|			}
 5540|      3|		} else {
 5541|      3|			if (yych <= 'N') {
  ------------------
  |  Branch (5541:8): [True: 2, False: 1]
  ------------------
 5542|      2|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (5542:9): [True: 1, False: 1]
  ------------------
 5543|      1|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5543:9): [True: 1, False: 0]
  ------------------
 5544|      0|				goto yy291;
 5545|      1|			} else {
 5546|      1|				if (yych <= 'O') goto yy349;
  ------------------
  |  Branch (5546:9): [True: 0, False: 1]
  ------------------
 5547|      1|				if (yych <= 'U') goto yy291;
  ------------------
  |  Branch (5547:9): [True: 1, False: 0]
  ------------------
 5548|      0|				goto yy304;
 5549|      1|			}
 5550|      3|		}
 5551|     28|	} else {
 5552|     28|		if (yych <= 'n') {
  ------------------
  |  Branch (5552:7): [True: 2, False: 26]
  ------------------
 5553|      2|			if (yych <= '^') {
  ------------------
  |  Branch (5553:8): [True: 0, False: 2]
  ------------------
 5554|      0|				if (yych <= 'W') goto yy350;
  ------------------
  |  Branch (5554:9): [True: 0, False: 0]
  ------------------
 5555|      0|				if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5555:9): [True: 0, False: 0]
  ------------------
 5556|      0|				goto yy20;
 5557|      2|			} else {
 5558|      2|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (5558:9): [True: 0, False: 2]
  ------------------
 5559|      2|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5559:9): [True: 0, False: 2]
  ------------------
 5560|      2|				goto yy298;
 5561|      2|			}
 5562|     26|		} else {
 5563|     26|			if (yych <= 'v') {
  ------------------
  |  Branch (5563:8): [True: 23, False: 3]
  ------------------
 5564|     23|				if (yych <= 'o') goto yy353;
  ------------------
  |  Branch (5564:9): [True: 13, False: 10]
  ------------------
 5565|     10|				if (yych <= 'u') goto yy298;
  ------------------
  |  Branch (5565:9): [True: 0, False: 10]
  ------------------
 5566|     10|				goto yy305;
 5567|     10|			} else {
 5568|      3|				if (yych <= 'w') goto yy354;
  ------------------
  |  Branch (5568:9): [True: 1, False: 2]
  ------------------
 5569|      2|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5569:9): [True: 0, False: 2]
  ------------------
 5570|      2|				goto yy20;
 5571|      2|			}
 5572|     26|		}
 5573|     28|	}
 5574|      3|yy166:
 5575|      3|	YYDEBUG(166, *YYCURSOR);
 5576|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 5577|      3|	if (yych <= 'T') {
  ------------------
  |  Branch (5577:6): [True: 2, False: 1]
  ------------------
 5578|      2|		if (yych <= ')') {
  ------------------
  |  Branch (5578:7): [True: 0, False: 2]
  ------------------
 5579|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5579:8): [True: 0, False: 0]
  ------------------
 5580|      0|			goto yy115;
 5581|      2|		} else {
 5582|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5582:8): [True: 1, False: 1]
  ------------------
 5583|      1|			if (yych <= 'S') goto yy291;
  ------------------
  |  Branch (5583:8): [True: 1, False: 0]
  ------------------
 5584|      0|			goto yy355;
 5585|      1|		}
 5586|      2|	} else {
 5587|      1|		if (yych <= 's') {
  ------------------
  |  Branch (5587:7): [True: 1, False: 0]
  ------------------
 5588|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5588:8): [True: 0, False: 1]
  ------------------
 5589|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5589:8): [True: 0, False: 1]
  ------------------
 5590|      1|			goto yy291;
 5591|      1|		} else {
 5592|      0|			if (yych <= 't') goto yy355;
  ------------------
  |  Branch (5592:8): [True: 0, False: 0]
  ------------------
 5593|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5593:8): [True: 0, False: 0]
  ------------------
 5594|      0|			goto yy20;
 5595|      0|		}
 5596|      1|	}
 5597|     12|yy167:
 5598|     12|	YYDEBUG(167, *YYCURSOR);
 5599|     12|	yyaccept = 2;
 5600|     12|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     12|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 5601|     12|	if (yych <= 'S') {
  ------------------
  |  Branch (5601:6): [True: 2, False: 10]
  ------------------
 5602|      2|		if (yych <= '-') {
  ------------------
  |  Branch (5602:7): [True: 0, False: 2]
  ------------------
 5603|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5603:8): [True: 0, False: 0]
  ------------------
 5604|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5604:8): [True: 0, False: 0]
  ------------------
 5605|      0|			goto yy297;
 5606|      2|		} else {
 5607|      2|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5607:8): [True: 0, False: 2]
  ------------------
 5608|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5608:8): [True: 2, False: 0]
  ------------------
 5609|      0|			goto yy291;
 5610|      2|		}
 5611|     10|	} else {
 5612|     10|		if (yych <= '_') {
  ------------------
  |  Branch (5612:7): [True: 8, False: 2]
  ------------------
 5613|      8|			if (yych <= 'T') goto yy355;
  ------------------
  |  Branch (5613:8): [True: 8, False: 0]
  ------------------
 5614|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5614:8): [True: 0, False: 0]
  ------------------
 5615|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5615:8): [True: 0, False: 0]
  ------------------
 5616|      0|			goto yy297;
 5617|      2|		} else {
 5618|      2|			if (yych <= 's') {
  ------------------
  |  Branch (5618:8): [True: 0, False: 2]
  ------------------
 5619|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5619:9): [True: 0, False: 0]
  ------------------
 5620|      0|				goto yy298;
 5621|      2|			} else {
 5622|      2|				if (yych <= 't') goto yy356;
  ------------------
  |  Branch (5622:9): [True: 1, False: 1]
  ------------------
 5623|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5623:9): [True: 1, False: 0]
  ------------------
 5624|      0|				goto yy20;
 5625|      1|			}
 5626|      2|		}
 5627|     10|	}
 5628|     16|yy168:
 5629|     16|	YYDEBUG(168, *YYCURSOR);
 5630|     16|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     16|#define   YYCURSOR     cursor
  ------------------
 5631|     16|	if (yych <= 'E') {
  ------------------
  |  Branch (5631:6): [True: 7, False: 9]
  ------------------
 5632|      7|		if (yych <= ')') {
  ------------------
  |  Branch (5632:7): [True: 1, False: 6]
  ------------------
 5633|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5633:8): [True: 1, False: 0]
  ------------------
 5634|      0|			goto yy115;
 5635|      6|		} else {
 5636|      6|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5636:8): [True: 5, False: 1]
  ------------------
 5637|      1|			if (yych <= 'D') goto yy291;
  ------------------
  |  Branch (5637:8): [True: 0, False: 1]
  ------------------
 5638|      1|			goto yy357;
 5639|      1|		}
 5640|      9|	} else {
 5641|      9|		if (yych <= 'd') {
  ------------------
  |  Branch (5641:7): [True: 1, False: 8]
  ------------------
 5642|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5642:8): [True: 0, False: 1]
  ------------------
 5643|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5643:8): [True: 1, False: 0]
  ------------------
 5644|      0|			goto yy291;
 5645|      8|		} else {
 5646|      8|			if (yych <= 'e') goto yy357;
  ------------------
  |  Branch (5646:8): [True: 3, False: 5]
  ------------------
 5647|      5|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5647:8): [True: 3, False: 2]
  ------------------
 5648|      2|			goto yy20;
 5649|      5|		}
 5650|      9|	}
 5651|     21|yy169:
 5652|     21|	YYDEBUG(169, *YYCURSOR);
 5653|     21|	yyaccept = 2;
 5654|     21|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     21|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     21|#define   YYCURSOR     cursor
  ------------------
 5655|     21|	if (yych <= 'D') {
  ------------------
  |  Branch (5655:6): [True: 14, False: 7]
  ------------------
 5656|     14|		if (yych <= '-') {
  ------------------
  |  Branch (5656:7): [True: 1, False: 13]
  ------------------
 5657|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5657:8): [True: 0, False: 1]
  ------------------
 5658|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5658:8): [True: 1, False: 0]
  ------------------
 5659|      0|			goto yy297;
 5660|     13|		} else {
 5661|     13|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5661:8): [True: 0, False: 13]
  ------------------
 5662|     13|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5662:8): [True: 13, False: 0]
  ------------------
 5663|      0|			goto yy291;
 5664|     13|		}
 5665|     14|	} else {
 5666|      7|		if (yych <= '_') {
  ------------------
  |  Branch (5666:7): [True: 5, False: 2]
  ------------------
 5667|      5|			if (yych <= 'E') goto yy357;
  ------------------
  |  Branch (5667:8): [True: 0, False: 5]
  ------------------
 5668|      5|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5668:8): [True: 5, False: 0]
  ------------------
 5669|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5669:8): [True: 0, False: 0]
  ------------------
 5670|      0|			goto yy297;
 5671|      2|		} else {
 5672|      2|			if (yych <= 'd') {
  ------------------
  |  Branch (5672:8): [True: 0, False: 2]
  ------------------
 5673|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5673:9): [True: 0, False: 0]
  ------------------
 5674|      0|				goto yy298;
 5675|      2|			} else {
 5676|      2|				if (yych <= 'e') goto yy358;
  ------------------
  |  Branch (5676:9): [True: 1, False: 1]
  ------------------
 5677|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5677:9): [True: 1, False: 0]
  ------------------
 5678|      0|				goto yy20;
 5679|      1|			}
 5680|      2|		}
 5681|      7|	}
 5682|     17|yy170:
 5683|     17|	YYDEBUG(170, *YYCURSOR);
 5684|     17|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
 5685|     17|	if (yych <= 'T') {
  ------------------
  |  Branch (5685:6): [True: 14, False: 3]
  ------------------
 5686|     14|		if (yych <= ')') {
  ------------------
  |  Branch (5686:7): [True: 3, False: 11]
  ------------------
 5687|      3|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5687:8): [True: 3, False: 0]
  ------------------
 5688|      0|			goto yy115;
 5689|     11|		} else {
 5690|     11|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5690:8): [True: 5, False: 6]
  ------------------
 5691|      6|			if (yych <= 'S') goto yy291;
  ------------------
  |  Branch (5691:8): [True: 1, False: 5]
  ------------------
 5692|      5|			goto yy359;
 5693|      6|		}
 5694|     14|	} else {
 5695|      3|		if (yych <= 's') {
  ------------------
  |  Branch (5695:7): [True: 2, False: 1]
  ------------------
 5696|      2|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5696:8): [True: 1, False: 1]
  ------------------
 5697|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5697:8): [True: 0, False: 1]
  ------------------
 5698|      1|			goto yy291;
 5699|      1|		} else {
 5700|      1|			if (yych <= 't') goto yy359;
  ------------------
  |  Branch (5700:8): [True: 0, False: 1]
  ------------------
 5701|      1|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5701:8): [True: 0, False: 1]
  ------------------
 5702|      1|			goto yy20;
 5703|      1|		}
 5704|      3|	}
 5705|     69|yy171:
 5706|     69|	YYDEBUG(171, *YYCURSOR);
 5707|     69|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     69|#define   YYCURSOR     cursor
  ------------------
 5708|     69|	if (yych <= 'V') {
  ------------------
  |  Branch (5708:6): [True: 11, False: 58]
  ------------------
 5709|     11|		if (yych <= 'B') {
  ------------------
  |  Branch (5709:7): [True: 6, False: 5]
  ------------------
 5710|      6|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5710:8): [True: 0, False: 6]
  ------------------
 5711|      6|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5711:8): [True: 5, False: 1]
  ------------------
 5712|      1|			goto yy291;
 5713|      6|		} else {
 5714|      5|			if (yych <= 'O') {
  ------------------
  |  Branch (5714:8): [True: 0, False: 5]
  ------------------
 5715|      0|				if (yych <= 'C') goto yy360;
  ------------------
  |  Branch (5715:9): [True: 0, False: 0]
  ------------------
 5716|      0|				goto yy291;
 5717|      5|			} else {
 5718|      5|				if (yych <= 'P') goto yy361;
  ------------------
  |  Branch (5718:9): [True: 5, False: 0]
  ------------------
 5719|      0|				if (yych <= 'U') goto yy291;
  ------------------
  |  Branch (5719:9): [True: 0, False: 0]
  ------------------
 5720|      0|				goto yy362;
 5721|      0|			}
 5722|      5|		}
 5723|     58|	} else {
 5724|     58|		if (yych <= 'o') {
  ------------------
  |  Branch (5724:7): [True: 32, False: 26]
  ------------------
 5725|     32|			if (yych <= '`') {
  ------------------
  |  Branch (5725:8): [True: 5, False: 27]
  ------------------
 5726|      5|				if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5726:9): [True: 0, False: 5]
  ------------------
 5727|      5|				goto yy20;
 5728|     27|			} else {
 5729|     27|				if (yych == 'c') goto yy360;
  ------------------
  |  Branch (5729:9): [True: 15, False: 12]
  ------------------
 5730|     12|				goto yy291;
 5731|     27|			}
 5732|     32|		} else {
 5733|     26|			if (yych <= 'u') {
  ------------------
  |  Branch (5733:8): [True: 15, False: 11]
  ------------------
 5734|     15|				if (yych <= 'p') goto yy361;
  ------------------
  |  Branch (5734:9): [True: 7, False: 8]
  ------------------
 5735|      8|				goto yy291;
 5736|     15|			} else {
 5737|     11|				if (yych <= 'v') goto yy362;
  ------------------
  |  Branch (5737:9): [True: 2, False: 9]
  ------------------
 5738|      9|				if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5738:9): [True: 0, False: 9]
  ------------------
 5739|      9|				goto yy20;
 5740|      9|			}
 5741|     26|		}
 5742|     58|	}
 5743|      1|yy172:
 5744|      1|	YYDEBUG(172, *YYCURSOR);
 5745|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 5746|      1|	if (yych <= 'X') {
  ------------------
  |  Branch (5746:6): [True: 0, False: 1]
  ------------------
 5747|      0|		if (yych <= ')') {
  ------------------
  |  Branch (5747:7): [True: 0, False: 0]
  ------------------
 5748|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5748:8): [True: 0, False: 0]
  ------------------
 5749|      0|			goto yy115;
 5750|      0|		} else {
 5751|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5751:8): [True: 0, False: 0]
  ------------------
 5752|      0|			if (yych <= 'W') goto yy291;
  ------------------
  |  Branch (5752:8): [True: 0, False: 0]
  ------------------
 5753|      0|			goto yy311;
 5754|      0|		}
 5755|      1|	} else {
 5756|      1|		if (yych <= 'w') {
  ------------------
  |  Branch (5756:7): [True: 1, False: 0]
  ------------------
 5757|      1|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5757:8): [True: 0, False: 1]
  ------------------
 5758|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5758:8): [True: 0, False: 1]
  ------------------
 5759|      1|			goto yy291;
 5760|      1|		} else {
 5761|      0|			if (yych <= 'x') goto yy311;
  ------------------
  |  Branch (5761:8): [True: 0, False: 0]
  ------------------
 5762|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5762:8): [True: 0, False: 0]
  ------------------
 5763|      0|			goto yy20;
 5764|      0|		}
 5765|      1|	}
 5766|      1|yy173:
 5767|      1|	YYDEBUG(173, *YYCURSOR);
 5768|      1|	yyaccept = 2;
 5769|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 5770|      1|	if (yych <= 'S') {
  ------------------
  |  Branch (5770:6): [True: 1, False: 0]
  ------------------
 5771|      1|		if (yych <= '-') {
  ------------------
  |  Branch (5771:7): [True: 0, False: 1]
  ------------------
 5772|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5772:8): [True: 0, False: 0]
  ------------------
 5773|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5773:8): [True: 0, False: 0]
  ------------------
 5774|      0|			goto yy297;
 5775|      1|		} else {
 5776|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5776:8): [True: 0, False: 1]
  ------------------
 5777|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5777:8): [True: 0, False: 1]
  ------------------
 5778|      1|			goto yy291;
 5779|      1|		}
 5780|      1|	} else {
 5781|      0|		if (yych <= '_') {
  ------------------
  |  Branch (5781:7): [True: 0, False: 0]
  ------------------
 5782|      0|			if (yych <= 'T') goto yy359;
  ------------------
  |  Branch (5782:8): [True: 0, False: 0]
  ------------------
 5783|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5783:8): [True: 0, False: 0]
  ------------------
 5784|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5784:8): [True: 0, False: 0]
  ------------------
 5785|      0|			goto yy297;
 5786|      0|		} else {
 5787|      0|			if (yych <= 's') {
  ------------------
  |  Branch (5787:8): [True: 0, False: 0]
  ------------------
 5788|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5788:9): [True: 0, False: 0]
  ------------------
 5789|      0|				goto yy298;
 5790|      0|			} else {
 5791|      0|				if (yych <= 't') goto yy363;
  ------------------
  |  Branch (5791:9): [True: 0, False: 0]
  ------------------
 5792|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5792:9): [True: 0, False: 0]
  ------------------
 5793|      0|				goto yy20;
 5794|      0|			}
 5795|      0|		}
 5796|      0|	}
 5797|     29|yy174:
 5798|     29|	YYDEBUG(174, *YYCURSOR);
 5799|     29|	yyaccept = 2;
 5800|     29|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     29|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     29|#define   YYCURSOR     cursor
  ------------------
 5801|     29|	if (yych <= 'U') {
  ------------------
  |  Branch (5801:6): [True: 12, False: 17]
  ------------------
 5802|     12|		if (yych <= '/') {
  ------------------
  |  Branch (5802:7): [True: 6, False: 6]
  ------------------
 5803|      6|			if (yych <= ',') {
  ------------------
  |  Branch (5803:8): [True: 6, False: 0]
  ------------------
 5804|      6|				if (yych == ')') goto yy115;
  ------------------
  |  Branch (5804:9): [True: 0, False: 6]
  ------------------
 5805|      6|				goto yy20;
 5806|      6|			} else {
 5807|      0|				if (yych == '.') goto yy20;
  ------------------
  |  Branch (5807:9): [True: 0, False: 0]
  ------------------
 5808|      0|				goto yy297;
 5809|      0|			}
 5810|      6|		} else {
 5811|      6|			if (yych <= 'C') {
  ------------------
  |  Branch (5811:8): [True: 2, False: 4]
  ------------------
 5812|      2|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5812:9): [True: 0, False: 2]
  ------------------
 5813|      2|				if (yych <= 'B') goto yy291;
  ------------------
  |  Branch (5813:9): [True: 0, False: 2]
  ------------------
 5814|      2|				goto yy360;
 5815|      4|			} else {
 5816|      4|				if (yych == 'P') goto yy361;
  ------------------
  |  Branch (5816:9): [True: 3, False: 1]
  ------------------
 5817|      1|				goto yy291;
 5818|      4|			}
 5819|      6|		}
 5820|     17|	} else {
 5821|     17|		if (yych <= 'b') {
  ------------------
  |  Branch (5821:7): [True: 0, False: 17]
  ------------------
 5822|      0|			if (yych <= '^') {
  ------------------
  |  Branch (5822:8): [True: 0, False: 0]
  ------------------
 5823|      0|				if (yych <= 'V') goto yy362;
  ------------------
  |  Branch (5823:9): [True: 0, False: 0]
  ------------------
 5824|      0|				if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5824:9): [True: 0, False: 0]
  ------------------
 5825|      0|				goto yy20;
 5826|      0|			} else {
 5827|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (5827:9): [True: 0, False: 0]
  ------------------
 5828|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5828:9): [True: 0, False: 0]
  ------------------
 5829|      0|				goto yy298;
 5830|      0|			}
 5831|     17|		} else {
 5832|     17|			if (yych <= 'p') {
  ------------------
  |  Branch (5832:8): [True: 5, False: 12]
  ------------------
 5833|      5|				if (yych <= 'c') goto yy364;
  ------------------
  |  Branch (5833:9): [True: 1, False: 4]
  ------------------
 5834|      4|				if (yych <= 'o') goto yy298;
  ------------------
  |  Branch (5834:9): [True: 0, False: 4]
  ------------------
 5835|      4|				goto yy365;
 5836|     12|			} else {
 5837|     12|				if (yych == 'v') goto yy366;
  ------------------
  |  Branch (5837:9): [True: 11, False: 1]
  ------------------
 5838|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5838:9): [True: 0, False: 1]
  ------------------
 5839|      1|				goto yy20;
 5840|      1|			}
 5841|     17|		}
 5842|     17|	}
 5843|      0|yy175:
 5844|      0|	YYDEBUG(175, *YYCURSOR);
 5845|      0|	yyaccept = 2;
 5846|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 5847|      0|	if (yych <= 'W') {
  ------------------
  |  Branch (5847:6): [True: 0, False: 0]
  ------------------
 5848|      0|		if (yych <= '-') {
  ------------------
  |  Branch (5848:7): [True: 0, False: 0]
  ------------------
 5849|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5849:8): [True: 0, False: 0]
  ------------------
 5850|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (5850:8): [True: 0, False: 0]
  ------------------
 5851|      0|			goto yy297;
 5852|      0|		} else {
 5853|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (5853:8): [True: 0, False: 0]
  ------------------
 5854|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5854:8): [True: 0, False: 0]
  ------------------
 5855|      0|			goto yy291;
 5856|      0|		}
 5857|      0|	} else {
 5858|      0|		if (yych <= '_') {
  ------------------
  |  Branch (5858:7): [True: 0, False: 0]
  ------------------
 5859|      0|			if (yych <= 'X') goto yy311;
  ------------------
  |  Branch (5859:8): [True: 0, False: 0]
  ------------------
 5860|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5860:8): [True: 0, False: 0]
  ------------------
 5861|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (5861:8): [True: 0, False: 0]
  ------------------
 5862|      0|			goto yy297;
 5863|      0|		} else {
 5864|      0|			if (yych <= 'w') {
  ------------------
  |  Branch (5864:8): [True: 0, False: 0]
  ------------------
 5865|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5865:9): [True: 0, False: 0]
  ------------------
 5866|      0|				goto yy298;
 5867|      0|			} else {
 5868|      0|				if (yych <= 'x') goto yy318;
  ------------------
  |  Branch (5868:9): [True: 0, False: 0]
  ------------------
 5869|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (5869:9): [True: 0, False: 0]
  ------------------
 5870|      0|				goto yy20;
 5871|      0|			}
 5872|      0|		}
 5873|      0|	}
 5874|     34|yy176:
 5875|     34|	YYDEBUG(176, *YYCURSOR);
 5876|     34|	yyaccept = 4;
 5877|     34|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     34|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
 5878|     34|	if (yych <= '/') {
  ------------------
  |  Branch (5878:6): [True: 5, False: 29]
  ------------------
 5879|      5|		if (yych == '.') goto yy75;
  ------------------
  |  Branch (5879:7): [True: 4, False: 1]
  ------------------
 5880|     29|	} else {
 5881|     29|		if (yych <= '9') goto yy367;
  ------------------
  |  Branch (5881:7): [True: 22, False: 7]
  ------------------
 5882|      7|		if (yych <= ':') goto yy75;
  ------------------
  |  Branch (5882:7): [True: 0, False: 7]
  ------------------
 5883|      7|	}
 5884|    301|yy177:
 5885|    301|	YYDEBUG(177, *YYCURSOR);
 5886|    301|#line 1387 "ext/date/lib/parse_date.re"
 5887|    301|	{
 5888|    301|		int tz_not_found;
 5889|    301|		DEBUG_OUTPUT("timetiny24 | timeshort24 | timelong24 | iso8601long");
 5890|    301|		TIMELIB_INIT;
  ------------------
  |  |  107|    301|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 5891|    301|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|    301|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|    177|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|    177|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    177|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|    177|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|    177|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|    177|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|    177|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|    177|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|    177|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 177, False: 124]
  |  |  ------------------
  ------------------
 5892|    124|		s->time->h = timelib_get_nr(&ptr, 2);
 5893|    124|		if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (5893:7): [True: 17, False: 107]
  |  Branch (5893:22): [True: 73, False: 34]
  ------------------
 5894|     90|			s->time->i = timelib_get_nr(&ptr, 2);
 5895|     90|			if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (5895:8): [True: 5, False: 85]
  |  Branch (5895:23): [True: 9, False: 76]
  ------------------
 5896|     14|				s->time->s = timelib_get_nr(&ptr, 2);
 5897|       |
 5898|     14|				if (*ptr == '.') {
  ------------------
  |  Branch (5898:9): [True: 2, False: 12]
  ------------------
 5899|      2|					s->time->us = timelib_get_frac_nr(&ptr);
 5900|      2|				}
 5901|     14|			}
 5902|     90|		}
 5903|       |
 5904|    124|		if (*ptr != '\0') {
  ------------------
  |  Branch (5904:7): [True: 0, False: 124]
  ------------------
 5905|      0|			s->time->z = timelib_parse_zone(&ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
 5906|      0|			if (tz_not_found) {
  ------------------
  |  Branch (5906:8): [True: 0, False: 0]
  ------------------
 5907|      0|				add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
  ------------------
  |  |  288|      0|#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
  ------------------
 5908|      0|			}
 5909|      0|		}
 5910|    124|		TIMELIB_DEINIT;
  ------------------
  |  |  108|    124|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|    124|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    124|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|    124|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|    124|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|    124|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|    124|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|    124|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5911|    124|		return TIMELIB_TIME24_WITH_ZONE;
  ------------------
  |  |   70|    124|#define TIMELIB_TIME24_WITH_ZONE 278
  ------------------
 5912|    301|	}
 5913|      0|#line 5914 "ext/date/lib/parse_date.c"
 5914|     25|yy178:
 5915|     25|	YYDEBUG(178, *YYCURSOR);
 5916|     25|	yyaccept = 4;
 5917|     25|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     25|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     25|#define   YYCURSOR     cursor
  ------------------
 5918|     25|	if (yych <= '/') {
  ------------------
  |  Branch (5918:6): [True: 5, False: 20]
  ------------------
 5919|      5|		if (yych == '.') goto yy75;
  ------------------
  |  Branch (5919:7): [True: 1, False: 4]
  ------------------
 5920|      4|		goto yy177;
 5921|     20|	} else {
 5922|     20|		if (yych <= '4') goto yy367;
  ------------------
  |  Branch (5922:7): [True: 11, False: 9]
  ------------------
 5923|      9|		if (yych == ':') goto yy75;
  ------------------
  |  Branch (5923:7): [True: 0, False: 9]
  ------------------
 5924|      9|		goto yy177;
 5925|      9|	}
 5926|     29|yy179:
 5927|     29|	YYDEBUG(179, *YYCURSOR);
 5928|     29|	yyaccept = 4;
 5929|     29|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     29|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     29|#define   YYCURSOR     cursor
  ------------------
 5930|     29|	if (yych == '.') goto yy75;
  ------------------
  |  Branch (5930:6): [True: 4, False: 25]
  ------------------
 5931|     25|	if (yych == ':') goto yy75;
  ------------------
  |  Branch (5931:6): [True: 0, False: 25]
  ------------------
 5932|     25|	goto yy177;
 5933|     25|yy180:
 5934|     22|	YYDEBUG(180, *YYCURSOR);
 5935|     22|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
 5936|     22|	if (yych <= 'U') {
  ------------------
  |  Branch (5936:6): [True: 5, False: 17]
  ------------------
 5937|      5|		if (yych <= '@') {
  ------------------
  |  Branch (5937:7): [True: 3, False: 2]
  ------------------
 5938|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5938:8): [True: 0, False: 3]
  ------------------
 5939|      3|			goto yy20;
 5940|      3|		} else {
 5941|      2|			if (yych == 'I') goto yy368;
  ------------------
  |  Branch (5941:8): [True: 0, False: 2]
  ------------------
 5942|      2|			if (yych <= 'T') goto yy291;
  ------------------
  |  Branch (5942:8): [True: 2, False: 0]
  ------------------
 5943|      0|			goto yy369;
 5944|      2|		}
 5945|     17|	} else {
 5946|     17|		if (yych <= 'i') {
  ------------------
  |  Branch (5946:7): [True: 6, False: 11]
  ------------------
 5947|      6|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5947:8): [True: 0, False: 6]
  ------------------
 5948|      6|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5948:8): [True: 0, False: 6]
  ------------------
 5949|      6|			if (yych <= 'h') goto yy291;
  ------------------
  |  Branch (5949:8): [True: 0, False: 6]
  ------------------
 5950|      6|			goto yy368;
 5951|     11|		} else {
 5952|     11|			if (yych == 'u') goto yy369;
  ------------------
  |  Branch (5952:8): [True: 3, False: 8]
  ------------------
 5953|      8|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5953:8): [True: 5, False: 3]
  ------------------
 5954|      3|			goto yy20;
 5955|      8|		}
 5956|     17|	}
 5957|      3|yy181:
 5958|      3|	YYDEBUG(181, *YYCURSOR);
 5959|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 5960|      3|	if (yych <= 'M') {
  ------------------
  |  Branch (5960:6): [True: 0, False: 3]
  ------------------
 5961|      0|		if (yych <= '@') {
  ------------------
  |  Branch (5961:7): [True: 0, False: 0]
  ------------------
 5962|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (5962:8): [True: 0, False: 0]
  ------------------
 5963|      0|			goto yy20;
 5964|      0|		} else {
 5965|      0|			if (yych == 'D') goto yy370;
  ------------------
  |  Branch (5965:8): [True: 0, False: 0]
  ------------------
 5966|      0|			if (yych <= 'L') goto yy291;
  ------------------
  |  Branch (5966:8): [True: 0, False: 0]
  ------------------
 5967|      0|			goto yy371;
 5968|      0|		}
 5969|      3|	} else {
 5970|      3|		if (yych <= 'd') {
  ------------------
  |  Branch (5970:7): [True: 0, False: 3]
  ------------------
 5971|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5971:8): [True: 0, False: 0]
  ------------------
 5972|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5972:8): [True: 0, False: 0]
  ------------------
 5973|      0|			if (yych <= 'c') goto yy291;
  ------------------
  |  Branch (5973:8): [True: 0, False: 0]
  ------------------
 5974|      0|			goto yy370;
 5975|      3|		} else {
 5976|      3|			if (yych == 'm') goto yy371;
  ------------------
  |  Branch (5976:8): [True: 0, False: 3]
  ------------------
 5977|      3|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (5977:8): [True: 3, False: 0]
  ------------------
 5978|      0|			goto yy20;
 5979|      3|		}
 5980|      3|	}
 5981|     12|yy182:
 5982|     12|	YYDEBUG(182, *YYCURSOR);
 5983|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 5984|     12|	if (yych <= 'E') {
  ------------------
  |  Branch (5984:6): [True: 2, False: 10]
  ------------------
 5985|      2|		if (yych <= ')') {
  ------------------
  |  Branch (5985:7): [True: 0, False: 2]
  ------------------
 5986|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (5986:8): [True: 0, False: 0]
  ------------------
 5987|      0|			goto yy115;
 5988|      2|		} else {
 5989|      2|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (5989:8): [True: 0, False: 2]
  ------------------
 5990|      2|			if (yych <= 'D') goto yy291;
  ------------------
  |  Branch (5990:8): [True: 0, False: 2]
  ------------------
 5991|      2|			goto yy372;
 5992|      2|		}
 5993|     10|	} else {
 5994|     10|		if (yych <= 'd') {
  ------------------
  |  Branch (5994:7): [True: 6, False: 4]
  ------------------
 5995|      6|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (5995:8): [True: 0, False: 6]
  ------------------
 5996|      6|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (5996:8): [True: 6, False: 0]
  ------------------
 5997|      0|			goto yy291;
 5998|      6|		} else {
 5999|      4|			if (yych <= 'e') goto yy372;
  ------------------
  |  Branch (5999:8): [True: 0, False: 4]
  ------------------
 6000|      4|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (6000:8): [True: 4, False: 0]
  ------------------
 6001|      0|			goto yy20;
 6002|      4|		}
 6003|     10|	}
 6004|     13|yy183:
 6005|     13|	YYDEBUG(183, *YYCURSOR);
 6006|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
 6007|     13|	if (yych <= 'E') {
  ------------------
  |  Branch (6007:6): [True: 0, False: 13]
  ------------------
 6008|      0|		if (yych <= ')') {
  ------------------
  |  Branch (6008:7): [True: 0, False: 0]
  ------------------
 6009|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (6009:8): [True: 0, False: 0]
  ------------------
 6010|      0|			goto yy115;
 6011|      0|		} else {
 6012|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6012:8): [True: 0, False: 0]
  ------------------
 6013|      0|			if (yych <= 'D') goto yy291;
  ------------------
  |  Branch (6013:8): [True: 0, False: 0]
  ------------------
 6014|      0|			goto yy373;
 6015|      0|		}
 6016|     13|	} else {
 6017|     13|		if (yych <= 'd') {
  ------------------
  |  Branch (6017:7): [True: 10, False: 3]
  ------------------
 6018|     10|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (6018:8): [True: 2, False: 8]
  ------------------
 6019|      8|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6019:8): [True: 8, False: 0]
  ------------------
 6020|      0|			goto yy291;
 6021|      8|		} else {
 6022|      3|			if (yych <= 'e') goto yy373;
  ------------------
  |  Branch (6022:8): [True: 0, False: 3]
  ------------------
 6023|      3|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (6023:8): [True: 0, False: 3]
  ------------------
 6024|      3|			goto yy20;
 6025|      3|		}
 6026|     13|	}
 6027|     21|yy184:
 6028|     21|	YYDEBUG(184, *YYCURSOR);
 6029|     21|	yyaccept = 2;
 6030|     21|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     21|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     21|#define   YYCURSOR     cursor
  ------------------
 6031|     21|	if (yych <= 'T') {
  ------------------
  |  Branch (6031:6): [True: 6, False: 15]
  ------------------
 6032|      6|		if (yych <= '.') {
  ------------------
  |  Branch (6032:7): [True: 5, False: 1]
  ------------------
 6033|      5|			if (yych <= ')') {
  ------------------
  |  Branch (6033:8): [True: 2, False: 3]
  ------------------
 6034|      2|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (6034:9): [True: 2, False: 0]
  ------------------
 6035|      0|				goto yy115;
 6036|      3|			} else {
 6037|      3|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (6037:9): [True: 0, False: 3]
  ------------------
 6038|      3|				goto yy20;
 6039|      3|			}
 6040|      5|		} else {
 6041|      1|			if (yych <= '@') {
  ------------------
  |  Branch (6041:8): [True: 1, False: 0]
  ------------------
 6042|      1|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (6042:9): [True: 0, False: 1]
  ------------------
 6043|      1|				goto yy20;
 6044|      1|			} else {
 6045|      0|				if (yych == 'I') goto yy368;
  ------------------
  |  Branch (6045:9): [True: 0, False: 0]
  ------------------
 6046|      0|				goto yy291;
 6047|      0|			}
 6048|      1|		}
 6049|     15|	} else {
 6050|     15|		if (yych <= '`') {
  ------------------
  |  Branch (6050:7): [True: 0, False: 15]
  ------------------
 6051|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (6051:8): [True: 0, False: 0]
  ------------------
 6052|      0|				if (yych <= 'U') goto yy369;
  ------------------
  |  Branch (6052:9): [True: 0, False: 0]
  ------------------
 6053|      0|				goto yy291;
 6054|      0|			} else {
 6055|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (6055:9): [True: 0, False: 0]
  ------------------
 6056|      0|				goto yy20;
 6057|      0|			}
 6058|     15|		} else {
 6059|     15|			if (yych <= 't') {
  ------------------
  |  Branch (6059:8): [True: 9, False: 6]
  ------------------
 6060|      9|				if (yych == 'i') goto yy374;
  ------------------
  |  Branch (6060:9): [True: 9, False: 0]
  ------------------
 6061|      0|				goto yy298;
 6062|      9|			} else {
 6063|      6|				if (yych <= 'u') goto yy375;
  ------------------
  |  Branch (6063:9): [True: 5, False: 1]
  ------------------
 6064|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (6064:9): [True: 0, False: 1]
  ------------------
 6065|      1|				goto yy20;
 6066|      1|			}
 6067|     15|		}
 6068|     15|	}
 6069|     12|yy185:
 6070|     12|	YYDEBUG(185, *YYCURSOR);
 6071|     12|	yyaccept = 2;
 6072|     12|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     12|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 6073|     12|	if (yych <= 'L') {
  ------------------
  |  Branch (6073:6): [True: 0, False: 12]
  ------------------
 6074|      0|		if (yych <= '.') {
  ------------------
  |  Branch (6074:7): [True: 0, False: 0]
  ------------------
 6075|      0|			if (yych <= ')') {
  ------------------
  |  Branch (6075:8): [True: 0, False: 0]
  ------------------
 6076|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (6076:9): [True: 0, False: 0]
  ------------------
 6077|      0|				goto yy115;
 6078|      0|			} else {
 6079|      0|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (6079:9): [True: 0, False: 0]
  ------------------
 6080|      0|				goto yy20;
 6081|      0|			}
 6082|      0|		} else {
 6083|      0|			if (yych <= '@') {
  ------------------
  |  Branch (6083:8): [True: 0, False: 0]
  ------------------
 6084|      0|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (6084:9): [True: 0, False: 0]
  ------------------
 6085|      0|				goto yy20;
 6086|      0|			} else {
 6087|      0|				if (yych == 'D') goto yy370;
  ------------------
  |  Branch (6087:9): [True: 0, False: 0]
  ------------------
 6088|      0|				goto yy291;
 6089|      0|			}
 6090|      0|		}
 6091|     12|	} else {
 6092|     12|		if (yych <= '`') {
  ------------------
  |  Branch (6092:7): [True: 1, False: 11]
  ------------------
 6093|      1|			if (yych <= 'Z') {
  ------------------
  |  Branch (6093:8): [True: 0, False: 1]
  ------------------
 6094|      0|				if (yych <= 'M') goto yy371;
  ------------------
  |  Branch (6094:9): [True: 0, False: 0]
  ------------------
 6095|      0|				goto yy291;
 6096|      1|			} else {
 6097|      1|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (6097:9): [True: 0, False: 1]
  ------------------
 6098|      1|				goto yy20;
 6099|      1|			}
 6100|     11|		} else {
 6101|     11|			if (yych <= 'l') {
  ------------------
  |  Branch (6101:8): [True: 0, False: 11]
  ------------------
 6102|      0|				if (yych == 'd') goto yy376;
  ------------------
  |  Branch (6102:9): [True: 0, False: 0]
  ------------------
 6103|      0|				goto yy298;
 6104|     11|			} else {
 6105|     11|				if (yych <= 'm') goto yy377;
  ------------------
  |  Branch (6105:9): [True: 3, False: 8]
  ------------------
 6106|      8|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (6106:9): [True: 0, False: 8]
  ------------------
 6107|      8|				goto yy20;
 6108|      8|			}
 6109|     11|		}
 6110|     12|	}
 6111|     19|yy186:
 6112|     19|	YYDEBUG(186, *YYCURSOR);
 6113|     19|	yyaccept = 2;
 6114|     19|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     19|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     19|#define   YYCURSOR     cursor
  ------------------
 6115|     19|	if (yych <= 'D') {
  ------------------
  |  Branch (6115:6): [True: 7, False: 12]
  ------------------
 6116|      7|		if (yych <= '-') {
  ------------------
  |  Branch (6116:7): [True: 7, False: 0]
  ------------------
 6117|      7|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (6117:8): [True: 0, False: 7]
  ------------------
 6118|      7|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (6118:8): [True: 7, False: 0]
  ------------------
 6119|      0|			goto yy297;
 6120|      7|		} else {
 6121|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (6121:8): [True: 0, False: 0]
  ------------------
 6122|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6122:8): [True: 0, False: 0]
  ------------------
 6123|      0|			goto yy291;
 6124|      0|		}
 6125|     12|	} else {
 6126|     12|		if (yych <= '_') {
  ------------------
  |  Branch (6126:7): [True: 2, False: 10]
  ------------------
 6127|      2|			if (yych <= 'E') goto yy372;
  ------------------
  |  Branch (6127:8): [True: 0, False: 2]
  ------------------
 6128|      2|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (6128:8): [True: 2, False: 0]
  ------------------
 6129|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (6129:8): [True: 0, False: 0]
  ------------------
 6130|      0|			goto yy297;
 6131|     10|		} else {
 6132|     10|			if (yych <= 'd') {
  ------------------
  |  Branch (6132:8): [True: 0, False: 10]
  ------------------
 6133|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6133:9): [True: 0, False: 0]
  ------------------
 6134|      0|				goto yy298;
 6135|     10|			} else {
 6136|     10|				if (yych <= 'e') goto yy378;
  ------------------
  |  Branch (6136:9): [True: 7, False: 3]
  ------------------
 6137|      3|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (6137:9): [True: 0, False: 3]
  ------------------
 6138|      3|				goto yy20;
 6139|      3|			}
 6140|     10|		}
 6141|     12|	}
 6142|     21|yy187:
 6143|     21|	YYDEBUG(187, *YYCURSOR);
 6144|     21|	yyaccept = 2;
 6145|     21|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     21|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     21|#define   YYCURSOR     cursor
  ------------------
 6146|     21|	if (yych <= 'D') {
  ------------------
  |  Branch (6146:6): [True: 3, False: 18]
  ------------------
 6147|      3|		if (yych <= '-') {
  ------------------
  |  Branch (6147:7): [True: 3, False: 0]
  ------------------
 6148|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (6148:8): [True: 2, False: 1]
  ------------------
 6149|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (6149:8): [True: 1, False: 0]
  ------------------
 6150|      0|			goto yy297;
 6151|      1|		} else {
 6152|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (6152:8): [True: 0, False: 0]
  ------------------
 6153|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6153:8): [True: 0, False: 0]
  ------------------
 6154|      0|			goto yy291;
 6155|      0|		}
 6156|     18|	} else {
 6157|     18|		if (yych <= '_') {
  ------------------
  |  Branch (6157:7): [True: 10, False: 8]
  ------------------
 6158|     10|			if (yych <= 'E') goto yy373;
  ------------------
  |  Branch (6158:8): [True: 10, False: 0]
  ------------------
 6159|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (6159:8): [True: 0, False: 0]
  ------------------
 6160|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (6160:8): [True: 0, False: 0]
  ------------------
 6161|      0|			goto yy297;
 6162|      8|		} else {
 6163|      8|			if (yych <= 'd') {
  ------------------
  |  Branch (6163:8): [True: 0, False: 8]
  ------------------
 6164|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6164:9): [True: 0, False: 0]
  ------------------
 6165|      0|				goto yy298;
 6166|      8|			} else {
 6167|      8|				if (yych <= 'e') goto yy379;
  ------------------
  |  Branch (6167:9): [True: 6, False: 2]
  ------------------
 6168|      2|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (6168:9): [True: 0, False: 2]
  ------------------
 6169|      2|				goto yy20;
 6170|      2|			}
 6171|      8|		}
 6172|     18|	}
 6173|      2|yy188:
 6174|      2|	YYDEBUG(188, *YYCURSOR);
 6175|      2|	yyaccept = 2;
 6176|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 6177|      2|	if (yych <= '.') {
  ------------------
  |  Branch (6177:6): [True: 0, False: 2]
  ------------------
 6178|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (6178:7): [True: 0, False: 0]
  ------------------
 6179|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (6179:8): [True: 0, False: 0]
  ------------------
 6180|      0|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (6180:8): [True: 0, False: 0]
  ------------------
 6181|      0|			goto yy142;
 6182|      0|		} else {
 6183|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (6183:8): [True: 0, False: 0]
  ------------------
 6184|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (6184:8): [True: 0, False: 0]
  ------------------
 6185|      0|			goto yy142;
 6186|      0|		}
 6187|      2|	} else {
 6188|      2|		if (yych <= 'H') {
  ------------------
  |  Branch (6188:7): [True: 0, False: 2]
  ------------------
 6189|      0|			if (yych <= '/') goto yy20;
  ------------------
  |  Branch (6189:8): [True: 0, False: 0]
  ------------------
 6190|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (6190:8): [True: 0, False: 0]
  ------------------
 6191|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6191:8): [True: 0, False: 0]
  ------------------
 6192|      0|			goto yy291;
 6193|      2|		} else {
 6194|      2|			if (yych <= 'Z') {
  ------------------
  |  Branch (6194:8): [True: 2, False: 0]
  ------------------
 6195|      2|				if (yych <= 'I') goto yy380;
  ------------------
  |  Branch (6195:9): [True: 2, False: 0]
  ------------------
 6196|      0|				goto yy291;
 6197|      2|			} else {
 6198|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6198:9): [True: 0, False: 0]
  ------------------
 6199|      0|				if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (6199:9): [True: 0, False: 0]
  ------------------
 6200|      0|				goto yy20;
 6201|      0|			}
 6202|      2|		}
 6203|      2|	}
 6204|     11|yy189:
 6205|     11|	YYDEBUG(189, *YYCURSOR);
 6206|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
 6207|     11|	if (yych <= 'E') {
  ------------------
  |  Branch (6207:6): [True: 4, False: 7]
  ------------------
 6208|      4|		if (yych <= '@') {
  ------------------
  |  Branch (6208:7): [True: 3, False: 1]
  ------------------
 6209|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (6209:8): [True: 0, False: 3]
  ------------------
 6210|      3|			goto yy20;
 6211|      3|		} else {
 6212|      1|			if (yych <= 'C') goto yy291;
  ------------------
  |  Branch (6212:8): [True: 0, False: 1]
  ------------------
 6213|      1|			if (yych <= 'D') goto yy381;
  ------------------
  |  Branch (6213:8): [True: 1, False: 0]
  ------------------
 6214|      0|			goto yy382;
 6215|      1|		}
 6216|      7|	} else {
 6217|      7|		if (yych <= 'c') {
  ------------------
  |  Branch (6217:7): [True: 3, False: 4]
  ------------------
 6218|      3|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (6218:8): [True: 3, False: 0]
  ------------------
 6219|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6219:8): [True: 0, False: 0]
  ------------------
 6220|      0|			goto yy291;
 6221|      4|		} else {
 6222|      4|			if (yych <= 'd') goto yy381;
  ------------------
  |  Branch (6222:8): [True: 0, False: 4]
  ------------------
 6223|      4|			if (yych <= 'e') goto yy382;
  ------------------
  |  Branch (6223:8): [True: 2, False: 2]
  ------------------
 6224|      2|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (6224:8): [True: 2, False: 0]
  ------------------
 6225|      0|			goto yy20;
 6226|      2|		}
 6227|      7|	}
 6228|      2|yy190:
 6229|      2|	YYDEBUG(190, *YYCURSOR);
 6230|      2|	yyaccept = 2;
 6231|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 6232|      2|	if (yych <= 'D') {
  ------------------
  |  Branch (6232:6): [True: 0, False: 2]
  ------------------
 6233|      0|		if (yych <= '-') {
  ------------------
  |  Branch (6233:7): [True: 0, False: 0]
  ------------------
 6234|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (6234:8): [True: 0, False: 0]
  ------------------
 6235|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (6235:8): [True: 0, False: 0]
  ------------------
 6236|      0|			goto yy297;
 6237|      0|		} else {
 6238|      0|			if (yych <= '/') {
  ------------------
  |  Branch (6238:8): [True: 0, False: 0]
  ------------------
 6239|      0|				if (yych <= '.') goto yy20;
  ------------------
  |  Branch (6239:9): [True: 0, False: 0]
  ------------------
 6240|      0|				goto yy297;
 6241|      0|			} else {
 6242|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6242:9): [True: 0, False: 0]
  ------------------
 6243|      0|				if (yych <= 'C') goto yy291;
  ------------------
  |  Branch (6243:9): [True: 0, False: 0]
  ------------------
 6244|      0|				goto yy381;
 6245|      0|			}
 6246|      0|		}
 6247|      2|	} else {
 6248|      2|		if (yych <= '`') {
  ------------------
  |  Branch (6248:7): [True: 1, False: 1]
  ------------------
 6249|      1|			if (yych <= 'Z') {
  ------------------
  |  Branch (6249:8): [True: 0, False: 1]
  ------------------
 6250|      0|				if (yych <= 'E') goto yy382;
  ------------------
  |  Branch (6250:9): [True: 0, False: 0]
  ------------------
 6251|      0|				goto yy291;
 6252|      1|			} else {
 6253|      1|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (6253:9): [True: 1, False: 0]
  ------------------
 6254|      0|				goto yy20;
 6255|      1|			}
 6256|      1|		} else {
 6257|      1|			if (yych <= 'd') {
  ------------------
  |  Branch (6257:8): [True: 0, False: 1]
  ------------------
 6258|      0|				if (yych <= 'c') goto yy298;
  ------------------
  |  Branch (6258:9): [True: 0, False: 0]
  ------------------
 6259|      0|				goto yy383;
 6260|      1|			} else {
 6261|      1|				if (yych <= 'e') goto yy384;
  ------------------
  |  Branch (6261:9): [True: 0, False: 1]
  ------------------
 6262|      1|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (6262:9): [True: 1, False: 0]
  ------------------
 6263|      0|				goto yy20;
 6264|      1|			}
 6265|      1|		}
 6266|      2|	}
 6267|      6|yy191:
 6268|      6|	YYDEBUG(191, *YYCURSOR);
 6269|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 6270|      6|	if (yych <= 'S') {
  ------------------
  |  Branch (6270:6): [True: 6, False: 0]
  ------------------
 6271|      6|		if (yych <= ')') {
  ------------------
  |  Branch (6271:7): [True: 0, False: 6]
  ------------------
 6272|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (6272:8): [True: 0, False: 0]
  ------------------
 6273|      0|			goto yy115;
 6274|      6|		} else {
 6275|      6|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6275:8): [True: 3, False: 3]
  ------------------
 6276|      3|			if (yych <= 'R') goto yy291;
  ------------------
  |  Branch (6276:8): [True: 0, False: 3]
  ------------------
 6277|      3|			goto yy385;
 6278|      3|		}
 6279|      6|	} else {
 6280|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (6280:7): [True: 0, False: 0]
  ------------------
 6281|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (6281:8): [True: 0, False: 0]
  ------------------
 6282|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6282:8): [True: 0, False: 0]
  ------------------
 6283|      0|			goto yy291;
 6284|      0|		} else {
 6285|      0|			if (yych <= 's') goto yy385;
  ------------------
  |  Branch (6285:8): [True: 0, False: 0]
  ------------------
 6286|      0|			if (yych <= 'z') goto yy291;
  ------------------
  |  Branch (6286:8): [True: 0, False: 0]
  ------------------
 6287|      0|			goto yy20;
 6288|      0|		}
 6289|      0|	}
 6290|      2|yy192:
 6291|      2|	YYDEBUG(192, *YYCURSOR);
 6292|      2|	yyaccept = 2;
 6293|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 6294|      2|	if (yych <= 'R') {
  ------------------
  |  Branch (6294:6): [True: 1, False: 1]
  ------------------
 6295|      1|		if (yych <= '-') {
  ------------------
  |  Branch (6295:7): [True: 0, False: 1]
  ------------------
 6296|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (6296:8): [True: 0, False: 0]
  ------------------
 6297|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (6297:8): [True: 0, False: 0]
  ------------------
 6298|      0|			goto yy297;
 6299|      1|		} else {
 6300|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (6300:8): [True: 0, False: 1]
  ------------------
 6301|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (6301:8): [True: 0, False: 1]
  ------------------
 6302|      1|			goto yy291;
 6303|      1|		}
 6304|      1|	} else {
 6305|      1|		if (yych <= '_') {
  ------------------
  |  Branch (6305:7): [True: 0, False: 1]
  ------------------
 6306|      0|			if (yych <= 'S') goto yy385;
  ------------------
  |  Branch (6306:8): [True: 0, False: 0]
  ------------------
 6307|      0|			if (yych <= 'Z') goto yy291;
  ------------------
  |  Branch (6307:8): [True: 0, False: 0]
  ------------------
 6308|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (6308:8): [True: 0, False: 0]
  ------------------
 6309|      0|			goto yy297;
 6310|      1|		} else {
 6311|      1|			if (yych <= 'r') {
  ------------------
  |  Branch (6311:8): [True: 1, False: 0]
  ------------------
 6312|      1|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (6312:9): [True: 1, False: 0]
  ------------------
 6313|      0|				goto yy298;
 6314|      1|			} else {
 6315|      0|				if (yych <= 's') goto yy386;
  ------------------
  |  Branch (6315:9): [True: 0, False: 0]
  ------------------
 6316|      0|				if (yych <= 'z') goto yy298;
  ------------------
  |  Branch (6316:9): [True: 0, False: 0]
  ------------------
 6317|      0|				goto yy20;
 6318|      0|			}
 6319|      1|		}
 6320|      1|	}
 6321|     36|yy193:
 6322|     36|	YYDEBUG(193, *YYCURSOR);
 6323|     36|	yyaccept = 0;
 6324|     36|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|     36|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 6325|     36|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|     36|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (6325:6): [True: 0, False: 36]
  ------------------
 6326|     36|	yych = *YYCURSOR;
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 6327|     36|	if (yych == 0xC2) goto yy387;
  ------------------
  |  Branch (6327:6): [True: 0, False: 36]
  ------------------
 6328|     36|	goto yy8;
 6329|     36|yy194:
 6330|      4|	YYDEBUG(194, *YYCURSOR);
 6331|      4|	++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 6332|      4|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      4|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (6332:6): [True: 0, False: 4]
  ------------------
 6333|      4|	yych = *YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 6334|      4|	if (yych == 0xAF) goto yy388;
  ------------------
  |  Branch (6334:6): [True: 1, False: 3]
  ------------------
 6335|      3|	goto yy59;
 6336|    188|yy195:
 6337|    188|	YYDEBUG(195, *YYCURSOR);
 6338|    188|	++YYCURSOR;
  ------------------
  |  |   89|    188|#define   YYCURSOR     cursor
  ------------------
 6339|    188|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|    188|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|    188|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (6339:6): [True: 0, False: 188]
  ------------------
 6340|    188|	yych = *YYCURSOR;
  ------------------
  |  |   89|    188|#define   YYCURSOR     cursor
  ------------------
 6341|  2.77k|yy196:
 6342|  2.77k|	YYDEBUG(196, *YYCURSOR);
 6343|  2.77k|	if (yych <= 'X') {
  ------------------
  |  Branch (6343:6): [True: 1.70k, False: 1.06k]
  ------------------
 6344|  1.70k|		if (yych <= 'G') {
  ------------------
  |  Branch (6344:7): [True: 1.45k, False: 259]
  ------------------
 6345|  1.45k|			if (yych <= ' ') {
  ------------------
  |  Branch (6345:8): [True: 473, False: 977]
  ------------------
 6346|    473|				if (yych == '\t') goto yy195;
  ------------------
  |  Branch (6346:9): [True: 71, False: 402]
  ------------------
 6347|    402|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (6347:9): [True: 285, False: 117]
  ------------------
 6348|    117|				goto yy195;
 6349|    977|			} else {
 6350|    977|				if (yych <= 'D') {
  ------------------
  |  Branch (6350:9): [True: 897, False: 80]
  ------------------
 6351|    897|					if (yych <= 'C') goto yy59;
  ------------------
  |  Branch (6351:10): [True: 871, False: 26]
  ------------------
 6352|     26|					goto yy198;
 6353|    897|				} else {
 6354|     80|					if (yych == 'F') goto yy199;
  ------------------
  |  Branch (6354:10): [True: 57, False: 23]
  ------------------
 6355|     23|					goto yy59;
 6356|     80|				}
 6357|    977|			}
 6358|  1.45k|		} else {
 6359|    259|			if (yych <= 'S') {
  ------------------
  |  Branch (6359:8): [True: 119, False: 140]
  ------------------
 6360|    119|				if (yych <= 'L') {
  ------------------
  |  Branch (6360:9): [True: 40, False: 79]
  ------------------
 6361|     40|					if (yych <= 'H') goto yy79;
  ------------------
  |  Branch (6361:10): [True: 2, False: 38]
  ------------------
 6362|     38|					goto yy59;
 6363|     79|				} else {
 6364|     79|					if (yych <= 'M') goto yy200;
  ------------------
  |  Branch (6364:10): [True: 50, False: 29]
  ------------------
 6365|     29|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (6365:10): [True: 23, False: 6]
  ------------------
 6366|      6|					goto yy201;
 6367|     29|				}
 6368|    140|			} else {
 6369|    140|				if (yych <= 'U') {
  ------------------
  |  Branch (6369:9): [True: 77, False: 63]
  ------------------
 6370|     77|					if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (6370:10): [True: 61, False: 16]
  ------------------
 6371|     16|					goto yy88;
 6372|     77|				} else {
 6373|     63|					if (yych == 'W') goto yy90;
  ------------------
  |  Branch (6373:10): [True: 42, False: 21]
  ------------------
 6374|     21|					goto yy59;
 6375|     63|				}
 6376|    140|			}
 6377|    259|		}
 6378|  1.70k|	} else {
 6379|  1.06k|		if (yych <= 'r') {
  ------------------
  |  Branch (6379:7): [True: 455, False: 609]
  ------------------
 6380|    455|			if (yych <= 'f') {
  ------------------
  |  Branch (6380:8): [True: 194, False: 261]
  ------------------
 6381|    194|				if (yych <= 'c') {
  ------------------
  |  Branch (6381:9): [True: 67, False: 127]
  ------------------
 6382|     67|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (6382:10): [True: 10, False: 57]
  ------------------
 6383|     57|					goto yy59;
 6384|    127|				} else {
 6385|    127|					if (yych <= 'd') goto yy198;
  ------------------
  |  Branch (6385:10): [True: 38, False: 89]
  ------------------
 6386|     89|					if (yych <= 'e') goto yy59;
  ------------------
  |  Branch (6386:10): [True: 34, False: 55]
  ------------------
 6387|     55|					goto yy199;
 6388|     89|				}
 6389|    261|			} else {
 6390|    261|				if (yych <= 'h') {
  ------------------
  |  Branch (6390:9): [True: 13, False: 248]
  ------------------
 6391|     13|					if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (6391:10): [True: 5, False: 8]
  ------------------
 6392|      8|					goto yy79;
 6393|    248|				} else {
 6394|    248|					if (yych == 'm') goto yy200;
  ------------------
  |  Branch (6394:10): [True: 38, False: 210]
  ------------------
 6395|    210|					goto yy59;
 6396|    248|				}
 6397|    261|			}
 6398|    609|		} else {
 6399|    609|			if (yych <= 'w') {
  ------------------
  |  Branch (6399:8): [True: 128, False: 481]
  ------------------
 6400|    128|				if (yych <= 't') {
  ------------------
  |  Branch (6400:9): [True: 72, False: 56]
  ------------------
 6401|     72|					if (yych <= 's') goto yy201;
  ------------------
  |  Branch (6401:10): [True: 56, False: 16]
  ------------------
 6402|     16|					goto yy87;
 6403|     72|				} else {
 6404|     56|					if (yych <= 'u') goto yy88;
  ------------------
  |  Branch (6404:10): [True: 22, False: 34]
  ------------------
 6405|     34|					if (yych <= 'v') goto yy59;
  ------------------
  |  Branch (6405:10): [True: 17, False: 17]
  ------------------
 6406|     17|					goto yy90;
 6407|     34|				}
 6408|    481|			} else {
 6409|    481|				if (yych <= 'y') {
  ------------------
  |  Branch (6409:9): [True: 25, False: 456]
  ------------------
 6410|     25|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (6410:10): [True: 1, False: 24]
  ------------------
 6411|     24|					goto yy92;
 6412|    456|				} else {
 6413|    456|					if (yych == 0xC2) goto yy211;
  ------------------
  |  Branch (6413:10): [True: 2, False: 454]
  ------------------
 6414|    454|					goto yy59;
 6415|    456|				}
 6416|    481|			}
 6417|    609|		}
 6418|  1.06k|	}
 6419|    435|yy197:
 6420|    435|	YYDEBUG(197, *YYCURSOR);
 6421|    435|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    435|#define   YYCURSOR     cursor
  ------------------
 6422|    435|	if (yych <= 0xC1) {
  ------------------
  |  Branch (6422:6): [True: 431, False: 4]
  ------------------
 6423|    431|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (6423:7): [True: 21, False: 410]
  ------------------
 6424|    410|		if (yych <= '9') goto yy389;
  ------------------
  |  Branch (6424:7): [True: 366, False: 44]
  ------------------
 6425|     44|		goto yy196;
 6426|    410|	} else {
 6427|      4|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (6427:7): [True: 0, False: 4]
  ------------------
 6428|      4|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (6428:7): [True: 0, False: 4]
  ------------------
 6429|      4|		goto yy196;
 6430|      4|	}
 6431|     65|yy198:
 6432|     65|	YYDEBUG(198, *YYCURSOR);
 6433|     65|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     65|#define   YYCURSOR     cursor
  ------------------
 6434|     65|	if (yych == 'A') goto yy242;
  ------------------
  |  Branch (6434:6): [True: 2, False: 63]
  ------------------
 6435|     63|	if (yych == 'a') goto yy242;
  ------------------
  |  Branch (6435:6): [True: 3, False: 60]
  ------------------
 6436|     60|	goto yy59;
 6437|    122|yy199:
 6438|    122|	YYDEBUG(199, *YYCURSOR);
 6439|    122|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    122|#define   YYCURSOR     cursor
  ------------------
 6440|    122|	if (yych <= 'R') {
  ------------------
  |  Branch (6440:6): [True: 58, False: 64]
  ------------------
 6441|     58|		if (yych == 'O') goto yy245;
  ------------------
  |  Branch (6441:7): [True: 3, False: 55]
  ------------------
 6442|     55|		if (yych <= 'Q') goto yy59;
  ------------------
  |  Branch (6442:7): [True: 54, False: 1]
  ------------------
 6443|      1|		goto yy246;
 6444|     64|	} else {
 6445|     64|		if (yych <= 'o') {
  ------------------
  |  Branch (6445:7): [True: 59, False: 5]
  ------------------
 6446|     59|			if (yych <= 'n') goto yy59;
  ------------------
  |  Branch (6446:8): [True: 53, False: 6]
  ------------------
 6447|      6|			goto yy245;
 6448|     59|		} else {
 6449|      5|			if (yych == 'r') goto yy246;
  ------------------
  |  Branch (6449:8): [True: 0, False: 5]
  ------------------
 6450|      5|			goto yy59;
 6451|      5|		}
 6452|     64|	}
 6453|     91|yy200:
 6454|     91|	YYDEBUG(200, *YYCURSOR);
 6455|     91|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     91|#define   YYCURSOR     cursor
  ------------------
 6456|     91|	if (yych <= 'S') {
  ------------------
  |  Branch (6456:6): [True: 48, False: 43]
  ------------------
 6457|     48|		if (yych <= 'N') {
  ------------------
  |  Branch (6457:7): [True: 48, False: 0]
  ------------------
 6458|     48|			if (yych == 'I') goto yy257;
  ------------------
  |  Branch (6458:8): [True: 4, False: 44]
  ------------------
 6459|     44|			goto yy59;
 6460|     48|		} else {
 6461|      0|			if (yych <= 'O') goto yy258;
  ------------------
  |  Branch (6461:8): [True: 0, False: 0]
  ------------------
 6462|      0|			if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (6462:8): [True: 0, False: 0]
  ------------------
 6463|      0|			goto yy259;
 6464|      0|		}
 6465|     48|	} else {
 6466|     43|		if (yych <= 'n') {
  ------------------
  |  Branch (6466:7): [True: 14, False: 29]
  ------------------
 6467|     14|			if (yych == 'i') goto yy257;
  ------------------
  |  Branch (6467:8): [True: 2, False: 12]
  ------------------
 6468|     12|			goto yy59;
 6469|     29|		} else {
 6470|     29|			if (yych <= 'o') goto yy258;
  ------------------
  |  Branch (6470:8): [True: 16, False: 13]
  ------------------
 6471|     13|			if (yych == 's') goto yy259;
  ------------------
  |  Branch (6471:8): [True: 3, False: 10]
  ------------------
 6472|     10|			goto yy59;
 6473|     13|		}
 6474|     43|	}
 6475|     73|yy201:
 6476|     73|	YYDEBUG(201, *YYCURSOR);
 6477|     73|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     73|#define   YYCURSOR     cursor
  ------------------
 6478|     73|	if (yych <= 'U') {
  ------------------
  |  Branch (6478:6): [True: 30, False: 43]
  ------------------
 6479|     30|		if (yych <= 'D') {
  ------------------
  |  Branch (6479:7): [True: 26, False: 4]
  ------------------
 6480|     26|			if (yych == 'A') goto yy263;
  ------------------
  |  Branch (6480:8): [True: 5, False: 21]
  ------------------
 6481|     21|			goto yy59;
 6482|     26|		} else {
 6483|      4|			if (yych <= 'E') goto yy390;
  ------------------
  |  Branch (6483:8): [True: 3, False: 1]
  ------------------
 6484|      1|			if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (6484:8): [True: 0, False: 1]
  ------------------
 6485|      1|			goto yy265;
 6486|      1|		}
 6487|     43|	} else {
 6488|     43|		if (yych <= 'd') {
  ------------------
  |  Branch (6488:7): [True: 6, False: 37]
  ------------------
 6489|      6|			if (yych == 'a') goto yy263;
  ------------------
  |  Branch (6489:8): [True: 3, False: 3]
  ------------------
 6490|      3|			goto yy59;
 6491|     37|		} else {
 6492|     37|			if (yych <= 'e') goto yy390;
  ------------------
  |  Branch (6492:8): [True: 4, False: 33]
  ------------------
 6493|     33|			if (yych == 'u') goto yy265;
  ------------------
  |  Branch (6493:8): [True: 11, False: 22]
  ------------------
 6494|     22|			goto yy59;
 6495|     33|		}
 6496|     43|	}
 6497|    172|yy202:
 6498|    172|	YYDEBUG(202, *YYCURSOR);
 6499|    172|	yyaccept = 2;
 6500|    172|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    172|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    172|#define   YYCURSOR     cursor
  ------------------
 6501|    172|	if (yych <= 'W') {
  ------------------
  |  Branch (6501:6): [True: 154, False: 18]
  ------------------
 6502|    154|		if (yych <= 'D') {
  ------------------
  |  Branch (6502:7): [True: 145, False: 9]
  ------------------
 6503|    145|			if (yych <= '/') {
  ------------------
  |  Branch (6503:8): [True: 8, False: 137]
  ------------------
 6504|      8|				if (yych <= '\t') {
  ------------------
  |  Branch (6504:9): [True: 2, False: 6]
  ------------------
 6505|      2|					if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (6505:10): [True: 2, False: 0]
  ------------------
 6506|      0|					goto yy196;
 6507|      6|				} else {
 6508|      6|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (6508:10): [True: 0, False: 6]
  ------------------
 6509|      6|					goto yy20;
 6510|      6|				}
 6511|    137|			} else {
 6512|    137|				if (yych <= '9') {
  ------------------
  |  Branch (6512:9): [True: 125, False: 12]
  ------------------
 6513|    125|					if (yych <= '5') goto yy391;
  ------------------
  |  Branch (6513:10): [True: 107, False: 18]
  ------------------
 6514|     18|					goto yy392;
 6515|    125|				} else {
 6516|     12|					if (yych <= ':') goto yy393;
  ------------------
  |  Branch (6516:10): [True: 6, False: 6]
  ------------------
 6517|      6|					if (yych <= 'C') goto yy20;
  ------------------
  |  Branch (6517:10): [True: 6, False: 0]
  ------------------
 6518|      0|					goto yy196;
 6519|      6|				}
 6520|    137|			}
 6521|    145|		} else {
 6522|      9|			if (yych <= 'L') {
  ------------------
  |  Branch (6522:8): [True: 7, False: 2]
  ------------------
 6523|      7|				if (yych <= 'F') {
  ------------------
  |  Branch (6523:9): [True: 4, False: 3]
  ------------------
 6524|      4|					if (yych <= 'E') goto yy20;
  ------------------
  |  Branch (6524:10): [True: 4, False: 0]
  ------------------
 6525|      0|					goto yy196;
 6526|      4|				} else {
 6527|      3|					if (yych == 'H') goto yy196;
  ------------------
  |  Branch (6527:10): [True: 0, False: 3]
  ------------------
 6528|      3|					goto yy20;
 6529|      3|				}
 6530|      7|			} else {
 6531|      2|				if (yych <= 'R') {
  ------------------
  |  Branch (6531:9): [True: 0, False: 2]
  ------------------
 6532|      0|					if (yych <= 'M') goto yy196;
  ------------------
  |  Branch (6532:10): [True: 0, False: 0]
  ------------------
 6533|      0|					goto yy20;
 6534|      2|				} else {
 6535|      2|					if (yych == 'V') goto yy20;
  ------------------
  |  Branch (6535:10): [True: 0, False: 2]
  ------------------
 6536|      2|					goto yy196;
 6537|      2|				}
 6538|      2|			}
 6539|      9|		}
 6540|    154|	} else {
 6541|     18|		if (yych <= 'm') {
  ------------------
  |  Branch (6541:7): [True: 4, False: 14]
  ------------------
 6542|      4|			if (yych <= 'e') {
  ------------------
  |  Branch (6542:8): [True: 4, False: 0]
  ------------------
 6543|      4|				if (yych <= 'Y') {
  ------------------
  |  Branch (6543:9): [True: 0, False: 4]
  ------------------
 6544|      0|					if (yych <= 'X') goto yy20;
  ------------------
  |  Branch (6544:10): [True: 0, False: 0]
  ------------------
 6545|      0|					goto yy196;
 6546|      4|				} else {
 6547|      4|					if (yych == 'd') goto yy196;
  ------------------
  |  Branch (6547:10): [True: 0, False: 4]
  ------------------
 6548|      4|					goto yy20;
 6549|      4|				}
 6550|      4|			} else {
 6551|      0|				if (yych <= 'g') {
  ------------------
  |  Branch (6551:9): [True: 0, False: 0]
  ------------------
 6552|      0|					if (yych <= 'f') goto yy196;
  ------------------
  |  Branch (6552:10): [True: 0, False: 0]
  ------------------
 6553|      0|					goto yy20;
 6554|      0|				} else {
 6555|      0|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (6555:10): [True: 0, False: 0]
  ------------------
 6556|      0|					if (yych <= 'l') goto yy20;
  ------------------
  |  Branch (6556:10): [True: 0, False: 0]
  ------------------
 6557|      0|					goto yy196;
 6558|      0|				}
 6559|      0|			}
 6560|     14|		} else {
 6561|     14|			if (yych <= 'x') {
  ------------------
  |  Branch (6561:8): [True: 5, False: 9]
  ------------------
 6562|      5|				if (yych <= 'u') {
  ------------------
  |  Branch (6562:9): [True: 3, False: 2]
  ------------------
 6563|      3|					if (yych <= 'r') goto yy20;
  ------------------
  |  Branch (6563:10): [True: 1, False: 2]
  ------------------
 6564|      2|					goto yy196;
 6565|      3|				} else {
 6566|      2|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (6566:10): [True: 1, False: 1]
  ------------------
 6567|      1|					goto yy20;
 6568|      2|				}
 6569|      9|			} else {
 6570|      9|				if (yych <= 0xC2) {
  ------------------
  |  Branch (6570:9): [True: 9, False: 0]
  ------------------
 6571|      9|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (6571:10): [True: 0, False: 9]
  ------------------
 6572|      9|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (6572:10): [True: 8, False: 1]
  ------------------
 6573|      1|					goto yy97;
 6574|      9|				} else {
 6575|      0|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (6575:10): [True: 0, False: 0]
  ------------------
 6576|      0|					goto yy20;
 6577|      0|				}
 6578|      9|			}
 6579|     14|		}
 6580|     18|	}
 6581|     36|yy203:
 6582|     36|	YYDEBUG(203, *YYCURSOR);
 6583|     36|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 6584|     36|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (6584:6): [True: 2, False: 34]
  ------------------
 6585|     34|	if (yych <= '5') goto yy394;
  ------------------
  |  Branch (6585:6): [True: 20, False: 14]
  ------------------
 6586|     14|	if (yych <= '9') goto yy115;
  ------------------
  |  Branch (6586:6): [True: 1, False: 13]
  ------------------
 6587|     13|	goto yy59;
 6588|    108|yy204:
 6589|    108|	YYDEBUG(204, *YYCURSOR);
 6590|    108|	yyaccept = 2;
 6591|    108|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    108|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    108|#define   YYCURSOR     cursor
  ------------------
 6592|    108|	if (yych <= 'X') {
  ------------------
  |  Branch (6592:6): [True: 88, False: 20]
  ------------------
 6593|     88|		if (yych <= 'E') {
  ------------------
  |  Branch (6593:7): [True: 85, False: 3]
  ------------------
 6594|     85|			if (yych <= ' ') {
  ------------------
  |  Branch (6594:8): [True: 1, False: 84]
  ------------------
 6595|      1|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (6595:9): [True: 0, False: 1]
  ------------------
 6596|      1|				if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (6596:9): [True: 1, False: 0]
  ------------------
 6597|      0|				goto yy196;
 6598|     84|			} else {
 6599|     84|				if (yych <= '9') {
  ------------------
  |  Branch (6599:9): [True: 72, False: 12]
  ------------------
 6600|     72|					if (yych <= '/') goto yy20;
  ------------------
  |  Branch (6600:10): [True: 4, False: 68]
  ------------------
 6601|     68|					goto yy392;
 6602|     72|				} else {
 6603|     12|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (6603:10): [True: 0, False: 12]
  ------------------
 6604|     12|					goto yy20;
 6605|     12|				}
 6606|     84|			}
 6607|     85|		} else {
 6608|      3|			if (yych <= 'M') {
  ------------------
  |  Branch (6608:8): [True: 0, False: 3]
  ------------------
 6609|      0|				if (yych <= 'G') {
  ------------------
  |  Branch (6609:9): [True: 0, False: 0]
  ------------------
 6610|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (6610:10): [True: 0, False: 0]
  ------------------
 6611|      0|					goto yy20;
 6612|      0|				} else {
 6613|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (6613:10): [True: 0, False: 0]
  ------------------
 6614|      0|					if (yych <= 'L') goto yy20;
  ------------------
  |  Branch (6614:10): [True: 0, False: 0]
  ------------------
 6615|      0|					goto yy196;
 6616|      0|				}
 6617|      3|			} else {
 6618|      3|				if (yych <= 'U') {
  ------------------
  |  Branch (6618:9): [True: 3, False: 0]
  ------------------
 6619|      3|					if (yych <= 'R') goto yy20;
  ------------------
  |  Branch (6619:10): [True: 0, False: 3]
  ------------------
 6620|      3|					goto yy196;
 6621|      3|				} else {
 6622|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (6622:10): [True: 0, False: 0]
  ------------------
 6623|      0|					goto yy20;
 6624|      0|				}
 6625|      3|			}
 6626|      3|		}
 6627|     88|	} else {
 6628|     20|		if (yych <= 'r') {
  ------------------
  |  Branch (6628:7): [True: 9, False: 11]
  ------------------
 6629|      9|			if (yych <= 'f') {
  ------------------
  |  Branch (6629:8): [True: 5, False: 4]
  ------------------
 6630|      5|				if (yych <= 'c') {
  ------------------
  |  Branch (6630:9): [True: 0, False: 5]
  ------------------
 6631|      0|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (6631:10): [True: 0, False: 0]
  ------------------
 6632|      0|					goto yy20;
 6633|      5|				} else {
 6634|      5|					if (yych == 'e') goto yy20;
  ------------------
  |  Branch (6634:10): [True: 1, False: 4]
  ------------------
 6635|      4|					goto yy196;
 6636|      5|				}
 6637|      5|			} else {
 6638|      4|				if (yych <= 'h') {
  ------------------
  |  Branch (6638:9): [True: 2, False: 2]
  ------------------
 6639|      2|					if (yych <= 'g') goto yy20;
  ------------------
  |  Branch (6639:10): [True: 0, False: 2]
  ------------------
 6640|      2|					goto yy196;
 6641|      2|				} else {
 6642|      2|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (6642:10): [True: 0, False: 2]
  ------------------
 6643|      2|					goto yy20;
 6644|      2|				}
 6645|      4|			}
 6646|     11|		} else {
 6647|     11|			if (yych <= 'y') {
  ------------------
  |  Branch (6647:8): [True: 0, False: 11]
  ------------------
 6648|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (6648:9): [True: 0, False: 0]
  ------------------
 6649|      0|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (6649:10): [True: 0, False: 0]
  ------------------
 6650|      0|					goto yy20;
 6651|      0|				} else {
 6652|      0|					if (yych == 'x') goto yy20;
  ------------------
  |  Branch (6652:10): [True: 0, False: 0]
  ------------------
 6653|      0|					goto yy196;
 6654|      0|				}
 6655|     11|			} else {
 6656|     11|				if (yych <= 0xC2) {
  ------------------
  |  Branch (6656:9): [True: 0, False: 11]
  ------------------
 6657|      0|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (6657:10): [True: 0, False: 0]
  ------------------
 6658|      0|					goto yy97;
 6659|     11|				} else {
 6660|     11|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (6660:10): [True: 1, False: 10]
  ------------------
 6661|     10|					goto yy20;
 6662|     11|				}
 6663|     11|			}
 6664|     11|		}
 6665|     20|	}
 6666|     73|yy205:
 6667|     73|	YYDEBUG(205, *YYCURSOR);
 6668|     73|	yyaccept = 2;
 6669|     73|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     73|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     73|#define   YYCURSOR     cursor
  ------------------
 6670|     73|	if (yych <= 'X') {
  ------------------
  |  Branch (6670:6): [True: 51, False: 22]
  ------------------
 6671|     51|		if (yych <= 'E') {
  ------------------
  |  Branch (6671:7): [True: 48, False: 3]
  ------------------
 6672|     48|			if (yych <= ' ') {
  ------------------
  |  Branch (6672:8): [True: 1, False: 47]
  ------------------
 6673|      1|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (6673:9): [True: 0, False: 1]
  ------------------
 6674|      1|				if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (6674:9): [True: 1, False: 0]
  ------------------
 6675|      0|				goto yy196;
 6676|     47|			} else {
 6677|     47|				if (yych <= '9') {
  ------------------
  |  Branch (6677:9): [True: 46, False: 1]
  ------------------
 6678|     46|					if (yych <= '/') goto yy20;
  ------------------
  |  Branch (6678:10): [True: 6, False: 40]
  ------------------
 6679|     40|					goto yy395;
 6680|     46|				} else {
 6681|      1|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (6681:10): [True: 1, False: 0]
  ------------------
 6682|      0|					goto yy20;
 6683|      1|				}
 6684|     47|			}
 6685|     48|		} else {
 6686|      3|			if (yych <= 'M') {
  ------------------
  |  Branch (6686:8): [True: 1, False: 2]
  ------------------
 6687|      1|				if (yych <= 'G') {
  ------------------
  |  Branch (6687:9): [True: 0, False: 1]
  ------------------
 6688|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (6688:10): [True: 0, False: 0]
  ------------------
 6689|      0|					goto yy20;
 6690|      1|				} else {
 6691|      1|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (6691:10): [True: 0, False: 1]
  ------------------
 6692|      1|					if (yych <= 'L') goto yy20;
  ------------------
  |  Branch (6692:10): [True: 1, False: 0]
  ------------------
 6693|      0|					goto yy196;
 6694|      1|				}
 6695|      2|			} else {
 6696|      2|				if (yych <= 'U') {
  ------------------
  |  Branch (6696:9): [True: 2, False: 0]
  ------------------
 6697|      2|					if (yych <= 'R') goto yy20;
  ------------------
  |  Branch (6697:10): [True: 0, False: 2]
  ------------------
 6698|      2|					goto yy196;
 6699|      2|				} else {
 6700|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (6700:10): [True: 0, False: 0]
  ------------------
 6701|      0|					goto yy20;
 6702|      0|				}
 6703|      2|			}
 6704|      3|		}
 6705|     51|	} else {
 6706|     22|		if (yych <= 'r') {
  ------------------
  |  Branch (6706:7): [True: 4, False: 18]
  ------------------
 6707|      4|			if (yych <= 'f') {
  ------------------
  |  Branch (6707:8): [True: 3, False: 1]
  ------------------
 6708|      3|				if (yych <= 'c') {
  ------------------
  |  Branch (6708:9): [True: 1, False: 2]
  ------------------
 6709|      1|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (6709:10): [True: 0, False: 1]
  ------------------
 6710|      1|					goto yy20;
 6711|      2|				} else {
 6712|      2|					if (yych == 'e') goto yy20;
  ------------------
  |  Branch (6712:10): [True: 0, False: 2]
  ------------------
 6713|      2|					goto yy196;
 6714|      2|				}
 6715|      3|			} else {
 6716|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (6716:9): [True: 0, False: 1]
  ------------------
 6717|      0|					if (yych <= 'g') goto yy20;
  ------------------
  |  Branch (6717:10): [True: 0, False: 0]
  ------------------
 6718|      0|					goto yy196;
 6719|      1|				} else {
 6720|      1|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (6720:10): [True: 0, False: 1]
  ------------------
 6721|      1|					goto yy20;
 6722|      1|				}
 6723|      1|			}
 6724|     18|		} else {
 6725|     18|			if (yych <= 'y') {
  ------------------
  |  Branch (6725:8): [True: 3, False: 15]
  ------------------
 6726|      3|				if (yych <= 'v') {
  ------------------
  |  Branch (6726:9): [True: 0, False: 3]
  ------------------
 6727|      0|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (6727:10): [True: 0, False: 0]
  ------------------
 6728|      0|					goto yy20;
 6729|      3|				} else {
 6730|      3|					if (yych == 'x') goto yy20;
  ------------------
  |  Branch (6730:10): [True: 3, False: 0]
  ------------------
 6731|      0|					goto yy196;
 6732|      3|				}
 6733|     15|			} else {
 6734|     15|				if (yych <= 0xC2) {
  ------------------
  |  Branch (6734:9): [True: 6, False: 9]
  ------------------
 6735|      6|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (6735:10): [True: 6, False: 0]
  ------------------
 6736|      0|					goto yy97;
 6737|      9|				} else {
 6738|      9|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (6738:10): [True: 0, False: 9]
  ------------------
 6739|      9|					goto yy20;
 6740|      9|				}
 6741|     15|			}
 6742|     18|		}
 6743|     22|	}
 6744|    408|yy206:
 6745|    408|	YYDEBUG(206, *YYCURSOR);
 6746|    408|	++YYCURSOR;
  ------------------
  |  |   89|    408|#define   YYCURSOR     cursor
  ------------------
 6747|    408|	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   90|    408|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   89|    408|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (6747:6): [True: 0, False: 408]
  ------------------
 6748|    408|	yych = *YYCURSOR;
  ------------------
  |  |   89|    408|#define   YYCURSOR     cursor
  ------------------
 6749|    671|yy207:
 6750|    671|	YYDEBUG(207, *YYCURSOR);
 6751|    671|	switch (yych) {
 6752|     89|	case '\t':
  ------------------
  |  Branch (6752:2): [True: 89, False: 582]
  ------------------
 6753|     94|	case ' ':
  ------------------
  |  Branch (6753:2): [True: 5, False: 666]
  ------------------
 6754|    380|	case '-':
  ------------------
  |  Branch (6754:2): [True: 286, False: 385]
  ------------------
 6755|    388|	case '.':	goto yy206;
  ------------------
  |  Branch (6755:2): [True: 8, False: 663]
  ------------------
 6756|     21|	case 'A':
  ------------------
  |  Branch (6756:2): [True: 21, False: 650]
  ------------------
 6757|     23|	case 'a':	goto yy76;
  ------------------
  |  Branch (6757:2): [True: 2, False: 669]
  ------------------
 6758|      0|	case 'D':
  ------------------
  |  Branch (6758:2): [True: 0, False: 671]
  ------------------
 6759|      1|	case 'd':	goto yy215;
  ------------------
  |  Branch (6759:2): [True: 1, False: 670]
  ------------------
 6760|      2|	case 'F':
  ------------------
  |  Branch (6760:2): [True: 2, False: 669]
  ------------------
 6761|      2|	case 'f':	goto yy216;
  ------------------
  |  Branch (6761:2): [True: 0, False: 671]
  ------------------
 6762|      4|	case 'I':	goto yy80;
  ------------------
  |  Branch (6762:2): [True: 4, False: 667]
  ------------------
 6763|      9|	case 'J':
  ------------------
  |  Branch (6763:2): [True: 9, False: 662]
  ------------------
 6764|      9|	case 'j':	goto yy82;
  ------------------
  |  Branch (6764:2): [True: 0, False: 671]
  ------------------
 6765|     14|	case 'M':
  ------------------
  |  Branch (6765:2): [True: 14, False: 657]
  ------------------
 6766|     14|	case 'm':	goto yy217;
  ------------------
  |  Branch (6766:2): [True: 0, False: 671]
  ------------------
 6767|      6|	case 'N':
  ------------------
  |  Branch (6767:2): [True: 6, False: 665]
  ------------------
 6768|     20|	case 'n':	goto yy84;
  ------------------
  |  Branch (6768:2): [True: 14, False: 657]
  ------------------
 6769|     12|	case 'O':
  ------------------
  |  Branch (6769:2): [True: 12, False: 659]
  ------------------
 6770|     17|	case 'o':	goto yy85;
  ------------------
  |  Branch (6770:2): [True: 5, False: 666]
  ------------------
 6771|     15|	case 'S':
  ------------------
  |  Branch (6771:2): [True: 15, False: 656]
  ------------------
 6772|     20|	case 's':	goto yy218;
  ------------------
  |  Branch (6772:2): [True: 5, False: 666]
  ------------------
 6773|      6|	case 'V':	goto yy89;
  ------------------
  |  Branch (6773:2): [True: 6, False: 665]
  ------------------
 6774|      4|	case 'X':	goto yy91;
  ------------------
  |  Branch (6774:2): [True: 4, False: 667]
  ------------------
 6775|    163|	default:	goto yy59;
  ------------------
  |  Branch (6775:2): [True: 163, False: 508]
  ------------------
 6776|    671|	}
 6777|      4|yy208:
 6778|      4|	YYDEBUG(208, *YYCURSOR);
 6779|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 6780|      4|	if (yych <= '.') {
  ------------------
  |  Branch (6780:6): [True: 1, False: 3]
  ------------------
 6781|      1|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (6781:7): [True: 0, False: 1]
  ------------------
 6782|      1|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6782:7): [True: 1, False: 0]
  ------------------
 6783|      0|		goto yy397;
 6784|      3|	} else {
 6785|      3|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (6785:7): [True: 0, False: 3]
  ------------------
 6786|      3|		if (yych <= '9') goto yy210;
  ------------------
  |  Branch (6786:7): [True: 2, False: 1]
  ------------------
 6787|      1|		goto yy59;
 6788|      3|	}
 6789|     14|yy209:
 6790|     14|	YYDEBUG(209, *YYCURSOR);
 6791|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
 6792|     14|	if (yych <= '.') {
  ------------------
  |  Branch (6792:6): [True: 0, False: 14]
  ------------------
 6793|      0|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (6793:7): [True: 0, False: 0]
  ------------------
 6794|      0|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6794:7): [True: 0, False: 0]
  ------------------
 6795|      0|		goto yy397;
 6796|     14|	} else {
 6797|     14|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (6797:7): [True: 0, False: 14]
  ------------------
 6798|     14|		if (yych >= '3') goto yy59;
  ------------------
  |  Branch (6798:7): [True: 13, False: 1]
  ------------------
 6799|     14|	}
 6800|      9|yy210:
 6801|      9|	YYDEBUG(210, *YYCURSOR);
 6802|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
 6803|      9|	if (yych <= ',') goto yy59;
  ------------------
  |  Branch (6803:6): [True: 2, False: 7]
  ------------------
 6804|      7|	if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6804:6): [True: 1, False: 6]
  ------------------
 6805|      6|	if (yych <= '.') goto yy397;
  ------------------
  |  Branch (6805:6): [True: 4, False: 2]
  ------------------
 6806|      2|	goto yy59;
 6807|      6|yy211:
 6808|      6|	YYDEBUG(211, *YYCURSOR);
 6809|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 6810|      6|	if (yych == 0xB5) goto yy274;
  ------------------
  |  Branch (6810:6): [True: 0, False: 6]
  ------------------
 6811|      6|	goto yy59;
 6812|     24|yy212:
 6813|     24|	YYDEBUG(212, *YYCURSOR);
 6814|     24|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     24|#define   YYCURSOR     cursor
  ------------------
 6815|     24|	if (yych <= '.') {
  ------------------
  |  Branch (6815:6): [True: 7, False: 17]
  ------------------
 6816|      7|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (6816:7): [True: 0, False: 7]
  ------------------
 6817|      7|		if (yych <= '-') goto yy398;
  ------------------
  |  Branch (6817:7): [True: 7, False: 0]
  ------------------
 6818|      0|		goto yy396;
 6819|     17|	} else {
 6820|     17|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (6820:7): [True: 0, False: 17]
  ------------------
 6821|     17|		if (yych <= '9') goto yy214;
  ------------------
  |  Branch (6821:7): [True: 15, False: 2]
  ------------------
 6822|      2|		goto yy59;
 6823|     17|	}
 6824|     50|yy213:
 6825|     50|	YYDEBUG(213, *YYCURSOR);
 6826|     50|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     50|#define   YYCURSOR     cursor
  ------------------
 6827|     50|	if (yych <= '.') {
  ------------------
  |  Branch (6827:6): [True: 3, False: 47]
  ------------------
 6828|      3|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (6828:7): [True: 3, False: 0]
  ------------------
 6829|      0|		if (yych <= '-') goto yy398;
  ------------------
  |  Branch (6829:7): [True: 0, False: 0]
  ------------------
 6830|      0|		goto yy396;
 6831|     47|	} else {
 6832|     47|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (6832:7): [True: 1, False: 46]
  ------------------
 6833|     46|		if (yych >= '3') goto yy59;
  ------------------
  |  Branch (6833:7): [True: 22, False: 24]
  ------------------
 6834|     46|	}
 6835|    130|yy214:
 6836|    130|	YYDEBUG(214, *YYCURSOR);
 6837|    130|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    130|#define   YYCURSOR     cursor
  ------------------
 6838|    130|	if (yych <= ',') goto yy59;
  ------------------
  |  Branch (6838:6): [True: 12, False: 118]
  ------------------
 6839|    118|	if (yych <= '-') goto yy398;
  ------------------
  |  Branch (6839:6): [True: 10, False: 108]
  ------------------
 6840|    108|	if (yych <= '.') goto yy396;
  ------------------
  |  Branch (6840:6): [True: 4, False: 104]
  ------------------
 6841|    104|	goto yy59;
 6842|    104|yy215:
 6843|      1|	YYDEBUG(215, *YYCURSOR);
 6844|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 6845|      1|	if (yych == 'E') goto yy243;
  ------------------
  |  Branch (6845:6): [True: 0, False: 1]
  ------------------
 6846|      1|	if (yych == 'e') goto yy243;
  ------------------
  |  Branch (6846:6): [True: 0, False: 1]
  ------------------
 6847|      1|	goto yy59;
 6848|      2|yy216:
 6849|      2|	YYDEBUG(216, *YYCURSOR);
 6850|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 6851|      2|	if (yych == 'E') goto yy244;
  ------------------
  |  Branch (6851:6): [True: 0, False: 2]
  ------------------
 6852|      2|	if (yych == 'e') goto yy244;
  ------------------
  |  Branch (6852:6): [True: 2, False: 0]
  ------------------
 6853|      0|	goto yy59;
 6854|     14|yy217:
 6855|     14|	YYDEBUG(217, *YYCURSOR);
 6856|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
 6857|     14|	if (yych == 'A') goto yy256;
  ------------------
  |  Branch (6857:6): [True: 0, False: 14]
  ------------------
 6858|     14|	if (yych == 'a') goto yy256;
  ------------------
  |  Branch (6858:6): [True: 0, False: 14]
  ------------------
 6859|     14|	goto yy59;
 6860|     20|yy218:
 6861|     20|	YYDEBUG(218, *YYCURSOR);
 6862|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
 6863|     20|	if (yych == 'E') goto yy399;
  ------------------
  |  Branch (6863:6): [True: 2, False: 18]
  ------------------
 6864|     18|	if (yych == 'e') goto yy399;
  ------------------
  |  Branch (6864:6): [True: 3, False: 15]
  ------------------
 6865|     15|	goto yy59;
 6866|     16|yy219:
 6867|     16|	YYDEBUG(219, *YYCURSOR);
 6868|     16|	yyaccept = 4;
 6869|     16|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     16|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     16|#define   YYCURSOR     cursor
  ------------------
 6870|     16|	if (yych <= '.') {
  ------------------
  |  Branch (6870:6): [True: 2, False: 14]
  ------------------
 6871|      2|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (6871:7): [True: 0, False: 2]
  ------------------
 6872|      2|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6872:7): [True: 0, False: 2]
  ------------------
 6873|      2|		goto yy400;
 6874|     14|	} else {
 6875|     14|		if (yych <= '/') goto yy177;
  ------------------
  |  Branch (6875:7): [True: 1, False: 13]
  ------------------
 6876|     13|		if (yych <= '9') goto yy222;
  ------------------
  |  Branch (6876:7): [True: 12, False: 1]
  ------------------
 6877|      1|		if (yych <= ':') goto yy401;
  ------------------
  |  Branch (6877:7): [True: 0, False: 1]
  ------------------
 6878|      1|		goto yy177;
 6879|      1|	}
 6880|     11|yy220:
 6881|     11|	YYDEBUG(220, *YYCURSOR);
 6882|     11|	yyaccept = 4;
 6883|     11|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     11|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
 6884|     11|	if (yych <= '/') {
  ------------------
  |  Branch (6884:6): [True: 5, False: 6]
  ------------------
 6885|      5|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (6885:7): [True: 2, False: 3]
  ------------------
 6886|      3|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6886:7): [True: 0, False: 3]
  ------------------
 6887|      3|		if (yych <= '.') goto yy400;
  ------------------
  |  Branch (6887:7): [True: 3, False: 0]
  ------------------
 6888|      0|		goto yy177;
 6889|      6|	} else {
 6890|      6|		if (yych <= '2') goto yy222;
  ------------------
  |  Branch (6890:7): [True: 0, False: 6]
  ------------------
 6891|      6|		if (yych <= '9') goto yy239;
  ------------------
  |  Branch (6891:7): [True: 0, False: 6]
  ------------------
 6892|      6|		if (yych <= ':') goto yy401;
  ------------------
  |  Branch (6892:7): [True: 0, False: 6]
  ------------------
 6893|      6|		goto yy177;
 6894|      6|	}
 6895|     19|yy221:
 6896|     19|	YYDEBUG(221, *YYCURSOR);
 6897|     19|	yyaccept = 4;
 6898|     19|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     19|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     19|#define   YYCURSOR     cursor
  ------------------
 6899|     19|	if (yych <= '.') {
  ------------------
  |  Branch (6899:6): [True: 8, False: 11]
  ------------------
 6900|      8|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (6900:7): [True: 0, False: 8]
  ------------------
 6901|      8|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6901:7): [True: 0, False: 8]
  ------------------
 6902|      8|		goto yy400;
 6903|     11|	} else {
 6904|     11|		if (yych <= '/') goto yy177;
  ------------------
  |  Branch (6904:7): [True: 1, False: 10]
  ------------------
 6905|     10|		if (yych <= '9') goto yy239;
  ------------------
  |  Branch (6905:7): [True: 10, False: 0]
  ------------------
 6906|      0|		if (yych <= ':') goto yy401;
  ------------------
  |  Branch (6906:7): [True: 0, False: 0]
  ------------------
 6907|      0|		goto yy177;
 6908|      0|	}
 6909|     17|yy222:
 6910|     17|	YYDEBUG(222, *YYCURSOR);
 6911|     17|	yyaccept = 4;
 6912|     17|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     17|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
 6913|     17|	if (yych <= '.') {
  ------------------
  |  Branch (6913:6): [True: 3, False: 14]
  ------------------
 6914|      3|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (6914:7): [True: 2, False: 1]
  ------------------
 6915|      1|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (6915:7): [True: 0, False: 1]
  ------------------
 6916|      1|		goto yy400;
 6917|     14|	} else {
 6918|     14|		if (yych == ':') goto yy401;
  ------------------
  |  Branch (6918:7): [True: 0, False: 14]
  ------------------
 6919|     14|		goto yy177;
 6920|     14|	}
 6921|     32|yy223:
 6922|     32|	YYDEBUG(223, *YYCURSOR);
 6923|     32|	yyaccept = 5;
 6924|     32|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     32|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     32|#define   YYCURSOR     cursor
  ------------------
 6925|     32|	if (yych <= 'n') {
  ------------------
  |  Branch (6925:6): [True: 30, False: 2]
  ------------------
 6926|     30|		if (yych <= '/') {
  ------------------
  |  Branch (6926:7): [True: 16, False: 14]
  ------------------
 6927|     16|			if (yych >= '/') goto yy402;
  ------------------
  |  Branch (6927:8): [True: 11, False: 5]
  ------------------
 6928|     16|		} else {
 6929|     14|			if (yych <= '9') goto yy226;
  ------------------
  |  Branch (6929:8): [True: 10, False: 4]
  ------------------
 6930|      4|			if (yych >= 'n') goto yy403;
  ------------------
  |  Branch (6930:8): [True: 2, False: 2]
  ------------------
 6931|      4|		}
 6932|     30|	} else {
 6933|      2|		if (yych <= 'r') {
  ------------------
  |  Branch (6933:7): [True: 1, False: 1]
  ------------------
 6934|      1|			if (yych >= 'r') goto yy403;
  ------------------
  |  Branch (6934:8): [True: 1, False: 0]
  ------------------
 6935|      1|		} else {
 6936|      1|			if (yych <= 's') goto yy404;
  ------------------
  |  Branch (6936:8): [True: 0, False: 1]
  ------------------
 6937|      1|			if (yych <= 't') goto yy405;
  ------------------
  |  Branch (6937:8): [True: 0, False: 1]
  ------------------
 6938|      1|		}
 6939|      2|	}
 6940|     44|yy224:
 6941|     44|	YYDEBUG(224, *YYCURSOR);
 6942|     44|#line 1481 "ext/date/lib/parse_date.re"
 6943|     44|	{
 6944|     44|		int length = 0;
 6945|     44|		DEBUG_OUTPUT("americanshort | american");
 6946|     44|		TIMELIB_INIT;
  ------------------
  |  |  107|     44|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 6947|     44|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     44|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|     24|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|     24|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     24|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     24|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     24|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     24|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     24|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     24|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|     24|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 24, False: 20]
  |  |  ------------------
  ------------------
 6948|     20|		s->time->m = timelib_get_nr(&ptr, 2);
 6949|     20|		s->time->d = timelib_get_nr(&ptr, 2);
 6950|     20|		if (*ptr == '/') {
  ------------------
  |  Branch (6950:7): [True: 7, False: 13]
  ------------------
 6951|      7|			s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
 6952|      7|			TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      7|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      7|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      7|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 7]
  |  |  |  Branch (112:32): [True: 5, False: 2]
  |  |  ------------------
  |  |  113|      5|	/*	(x) = 0; */          \
  |  |  114|      5|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  115|      2|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 1, False: 1]
  |  |  ------------------
  |  |  116|      1|			(x) += 2000;     \
  |  |  117|      1|		} else {             \
  |  |  118|      1|			(x) += 1900;     \
  |  |  119|      1|		}                    \
  |  |  120|      2|	}                        \
  |  |  121|      7|}
  ------------------
 6953|      7|		}
 6954|     20|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     20|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     20|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     20|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     20|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6955|     20|		return TIMELIB_AMERICAN;
  ------------------
  |  |   58|     20|#define TIMELIB_AMERICAN       266
  ------------------
 6956|     44|	}
 6957|      0|#line 6958 "ext/date/lib/parse_date.c"
 6958|      2|yy225:
 6959|      2|	YYDEBUG(225, *YYCURSOR);
 6960|      2|	yyaccept = 5;
 6961|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 6962|      2|	if (yych <= 'n') {
  ------------------
  |  Branch (6962:6): [True: 2, False: 0]
  ------------------
 6963|      2|		if (yych <= '/') {
  ------------------
  |  Branch (6963:7): [True: 0, False: 2]
  ------------------
 6964|      0|			if (yych <= '.') goto yy224;
  ------------------
  |  Branch (6964:8): [True: 0, False: 0]
  ------------------
 6965|      0|			goto yy402;
 6966|      2|		} else {
 6967|      2|			if (yych <= '1') goto yy226;
  ------------------
  |  Branch (6967:8): [True: 0, False: 2]
  ------------------
 6968|      2|			if (yych <= 'm') goto yy224;
  ------------------
  |  Branch (6968:8): [True: 2, False: 0]
  ------------------
 6969|      0|			goto yy403;
 6970|      2|		}
 6971|      2|	} else {
 6972|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (6972:7): [True: 0, False: 0]
  ------------------
 6973|      0|			if (yych <= 'q') goto yy224;
  ------------------
  |  Branch (6973:8): [True: 0, False: 0]
  ------------------
 6974|      0|			goto yy403;
 6975|      0|		} else {
 6976|      0|			if (yych <= 's') goto yy404;
  ------------------
  |  Branch (6976:8): [True: 0, False: 0]
  ------------------
 6977|      0|			if (yych <= 't') goto yy405;
  ------------------
  |  Branch (6977:8): [True: 0, False: 0]
  ------------------
 6978|      0|			goto yy224;
 6979|      0|		}
 6980|      0|	}
 6981|     20|yy226:
 6982|     20|	YYDEBUG(226, *YYCURSOR);
 6983|     20|	yyaccept = 5;
 6984|     20|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     20|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
 6985|     20|	if (yych <= 'n') {
  ------------------
  |  Branch (6985:6): [True: 14, False: 6]
  ------------------
 6986|     14|		if (yych == '/') goto yy402;
  ------------------
  |  Branch (6986:7): [True: 2, False: 12]
  ------------------
 6987|     12|		if (yych <= 'm') goto yy224;
  ------------------
  |  Branch (6987:7): [True: 11, False: 1]
  ------------------
 6988|      1|		goto yy403;
 6989|     12|	} else {
 6990|      6|		if (yych <= 'r') {
  ------------------
  |  Branch (6990:7): [True: 2, False: 4]
  ------------------
 6991|      2|			if (yych <= 'q') goto yy224;
  ------------------
  |  Branch (6991:8): [True: 0, False: 2]
  ------------------
 6992|      2|			goto yy403;
 6993|      4|		} else {
 6994|      4|			if (yych <= 's') goto yy404;
  ------------------
  |  Branch (6994:8): [True: 0, False: 4]
  ------------------
 6995|      4|			if (yych <= 't') goto yy405;
  ------------------
  |  Branch (6995:8): [True: 0, False: 4]
  ------------------
 6996|      4|			goto yy224;
 6997|      4|		}
 6998|      6|	}
 6999|      9|yy227:
 7000|      9|	YYDEBUG(227, *YYCURSOR);
 7001|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
 7002|      9|	if (yych <= 'U') {
  ------------------
  |  Branch (7002:6): [True: 1, False: 8]
  ------------------
 7003|      1|		if (yych == 'P') goto yy406;
  ------------------
  |  Branch (7003:7): [True: 0, False: 1]
  ------------------
 7004|      1|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (7004:7): [True: 1, False: 0]
  ------------------
 7005|      0|		goto yy407;
 7006|      8|	} else {
 7007|      8|		if (yych <= 'p') {
  ------------------
  |  Branch (7007:7): [True: 8, False: 0]
  ------------------
 7008|      8|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (7008:8): [True: 2, False: 6]
  ------------------
 7009|      6|			goto yy406;
 7010|      8|		} else {
 7011|      0|			if (yych == 'u') goto yy407;
  ------------------
  |  Branch (7011:8): [True: 0, False: 0]
  ------------------
 7012|      0|			goto yy59;
 7013|      0|		}
 7014|      8|	}
 7015|      0|yy228:
 7016|      0|	YYDEBUG(228, *YYCURSOR);
 7017|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7018|      0|	if (yych == 'E') goto yy408;
  ------------------
  |  Branch (7018:6): [True: 0, False: 0]
  ------------------
 7019|      0|	if (yych == 'e') goto yy408;
  ------------------
  |  Branch (7019:6): [True: 0, False: 0]
  ------------------
 7020|      0|	goto yy59;
 7021|      4|yy229:
 7022|      4|	YYDEBUG(229, *YYCURSOR);
 7023|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 7024|      4|	if (yych == 'E') goto yy409;
  ------------------
  |  Branch (7024:6): [True: 0, False: 4]
  ------------------
 7025|      4|	if (yych == 'e') goto yy409;
  ------------------
  |  Branch (7025:6): [True: 0, False: 4]
  ------------------
 7026|      4|	goto yy59;
 7027|     23|yy230:
 7028|     23|	YYDEBUG(230, *YYCURSOR);
 7029|     23|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     23|#define   YYCURSOR     cursor
  ------------------
 7030|     23|	if (yych <= 'U') {
  ------------------
  |  Branch (7030:6): [True: 9, False: 14]
  ------------------
 7031|      9|		if (yych == 'A') goto yy410;
  ------------------
  |  Branch (7031:7): [True: 7, False: 2]
  ------------------
 7032|      2|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (7032:7): [True: 2, False: 0]
  ------------------
 7033|      0|		goto yy411;
 7034|     14|	} else {
 7035|     14|		if (yych <= 'a') {
  ------------------
  |  Branch (7035:7): [True: 3, False: 11]
  ------------------
 7036|      3|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (7036:8): [True: 3, False: 0]
  ------------------
 7037|      0|			goto yy410;
 7038|     11|		} else {
 7039|     11|			if (yych == 'u') goto yy411;
  ------------------
  |  Branch (7039:8): [True: 9, False: 2]
  ------------------
 7040|      2|			goto yy59;
 7041|     11|		}
 7042|     14|	}
 7043|      0|yy231:
 7044|      0|	YYDEBUG(231, *YYCURSOR);
 7045|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7046|      0|	if (yych == 'A') goto yy412;
  ------------------
  |  Branch (7046:6): [True: 0, False: 0]
  ------------------
 7047|      0|	if (yych == 'a') goto yy412;
  ------------------
  |  Branch (7047:6): [True: 0, False: 0]
  ------------------
 7048|      0|	goto yy59;
 7049|     18|yy232:
 7050|     18|	YYDEBUG(232, *YYCURSOR);
 7051|     18|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     18|#define   YYCURSOR     cursor
  ------------------
 7052|     18|	if (yych == 'O') goto yy413;
  ------------------
  |  Branch (7052:6): [True: 0, False: 18]
  ------------------
 7053|     18|	if (yych == 'o') goto yy413;
  ------------------
  |  Branch (7053:6): [True: 9, False: 9]
  ------------------
 7054|      9|	goto yy59;
 7055|      9|yy233:
 7056|      1|	YYDEBUG(233, *YYCURSOR);
 7057|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 7058|      1|	if (yych == 'C') goto yy414;
  ------------------
  |  Branch (7058:6): [True: 0, False: 1]
  ------------------
 7059|      1|	if (yych == 'c') goto yy414;
  ------------------
  |  Branch (7059:6): [True: 0, False: 1]
  ------------------
 7060|      1|	goto yy59;
 7061|     37|yy234:
 7062|     37|	YYDEBUG(234, *YYCURSOR);
 7063|     37|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     37|#define   YYCURSOR     cursor
  ------------------
 7064|     37|	if (yych == 'E') goto yy415;
  ------------------
  |  Branch (7064:6): [True: 0, False: 37]
  ------------------
 7065|     37|	if (yych == 'e') goto yy415;
  ------------------
  |  Branch (7065:6): [True: 18, False: 19]
  ------------------
 7066|     19|	goto yy59;
 7067|     36|yy235:
 7068|     36|	YYDEBUG(235, *YYCURSOR);
 7069|     36|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 7070|     36|	if (yych <= '/') goto yy207;
  ------------------
  |  Branch (7070:6): [True: 6, False: 30]
  ------------------
 7071|     30|	if (yych <= '0') goto yy416;
  ------------------
  |  Branch (7071:6): [True: 2, False: 28]
  ------------------
 7072|     28|	if (yych <= '1') goto yy417;
  ------------------
  |  Branch (7072:6): [True: 7, False: 21]
  ------------------
 7073|     21|	if (yych <= '9') goto yy214;
  ------------------
  |  Branch (7073:6): [True: 11, False: 10]
  ------------------
 7074|     10|	goto yy207;
 7075|    699|yy236:
 7076|    699|	YYDEBUG(236, *YYCURSOR);
 7077|    699|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    699|#define   YYCURSOR     cursor
  ------------------
 7078|    699|	if (yych <= '9') {
  ------------------
  |  Branch (7078:6): [True: 585, False: 114]
  ------------------
 7079|    585|		if (yych == '-') goto yy418;
  ------------------
  |  Branch (7079:7): [True: 24, False: 561]
  ------------------
 7080|    561|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (7080:7): [True: 69, False: 492]
  ------------------
 7081|    492|		goto yy419;
 7082|    561|	} else {
 7083|    114|		if (yych <= 0xC2) {
  ------------------
  |  Branch (7083:7): [True: 87, False: 27]
  ------------------
 7084|     87|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (7084:8): [True: 75, False: 12]
  ------------------
 7085|     12|			goto yy97;
 7086|     87|		} else {
 7087|     27|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (7087:8): [True: 0, False: 27]
  ------------------
 7088|     27|			goto yy196;
 7089|     27|		}
 7090|    114|	}
 7091|  1.05k|yy237:
 7092|  1.05k|	YYDEBUG(237, *YYCURSOR);
 7093|  1.05k|	yych = *++YYCURSOR;
  ------------------
  |  |   89|  1.05k|#define   YYCURSOR     cursor
  ------------------
 7094|  1.05k|	if (yych <= '9') {
  ------------------
  |  Branch (7094:6): [True: 864, False: 193]
  ------------------
 7095|    864|		if (yych == '-') goto yy418;
  ------------------
  |  Branch (7095:7): [True: 38, False: 826]
  ------------------
 7096|    826|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (7096:7): [True: 129, False: 697]
  ------------------
 7097|    697|		goto yy421;
 7098|    826|	} else {
 7099|    193|		if (yych <= 0xC2) {
  ------------------
  |  Branch (7099:7): [True: 156, False: 37]
  ------------------
 7100|    156|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (7100:8): [True: 151, False: 5]
  ------------------
 7101|      5|			goto yy97;
 7102|    156|		} else {
 7103|     37|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (7103:8): [True: 2, False: 35]
  ------------------
 7104|     35|			goto yy196;
 7105|     37|		}
 7106|    193|	}
 7107|     13|yy238:
 7108|     13|	YYDEBUG(238, *YYCURSOR);
 7109|     13|	yyaccept = 4;
 7110|     13|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     13|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
 7111|     13|	if (yych <= '/') {
  ------------------
  |  Branch (7111:6): [True: 6, False: 7]
  ------------------
 7112|      6|		if (yych == '.') goto yy401;
  ------------------
  |  Branch (7112:7): [True: 6, False: 0]
  ------------------
 7113|      0|		goto yy177;
 7114|      7|	} else {
 7115|      7|		if (yych <= '9') goto yy239;
  ------------------
  |  Branch (7115:7): [True: 7, False: 0]
  ------------------
 7116|      0|		if (yych <= ':') goto yy401;
  ------------------
  |  Branch (7116:7): [True: 0, False: 0]
  ------------------
 7117|      0|		goto yy177;
 7118|      0|	}
 7119|     17|yy239:
 7120|     17|	YYDEBUG(239, *YYCURSOR);
 7121|     17|	yyaccept = 4;
 7122|     17|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     17|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
 7123|     17|	if (yych == '.') goto yy401;
  ------------------
  |  Branch (7123:6): [True: 1, False: 16]
  ------------------
 7124|     16|	if (yych == ':') goto yy401;
  ------------------
  |  Branch (7124:6): [True: 0, False: 16]
  ------------------
 7125|     16|	goto yy177;
 7126|     26|yy240:
 7127|     26|	YYDEBUG(240, *YYCURSOR);
 7128|     26|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     26|#define   YYCURSOR     cursor
  ------------------
 7129|     26|	if (yych == 'R') goto yy423;
  ------------------
  |  Branch (7129:6): [True: 10, False: 16]
  ------------------
 7130|     16|	if (yych == 'r') goto yy423;
  ------------------
  |  Branch (7130:6): [True: 1, False: 15]
  ------------------
 7131|     15|	goto yy59;
 7132|     15|yy241:
 7133|      3|	YYDEBUG(241, *YYCURSOR);
 7134|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 7135|      3|	if (yych == 'G') goto yy424;
  ------------------
  |  Branch (7135:6): [True: 0, False: 3]
  ------------------
 7136|      3|	if (yych == 'g') goto yy424;
  ------------------
  |  Branch (7136:6): [True: 0, False: 3]
  ------------------
 7137|      3|	goto yy59;
 7138|     13|yy242:
 7139|     13|	YYDEBUG(242, *YYCURSOR);
 7140|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
 7141|     13|	if (yych == 'Y') goto yy425;
  ------------------
  |  Branch (7141:6): [True: 0, False: 13]
  ------------------
 7142|     13|	if (yych == 'y') goto yy425;
  ------------------
  |  Branch (7142:6): [True: 0, False: 13]
  ------------------
 7143|     13|	goto yy59;
 7144|     13|yy243:
 7145|      7|	YYDEBUG(243, *YYCURSOR);
 7146|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
 7147|      7|	if (yych == 'C') goto yy426;
  ------------------
  |  Branch (7147:6): [True: 0, False: 7]
  ------------------
 7148|      7|	if (yych == 'c') goto yy426;
  ------------------
  |  Branch (7148:6): [True: 2, False: 5]
  ------------------
 7149|      5|	goto yy59;
 7150|      5|yy244:
 7151|      2|	YYDEBUG(244, *YYCURSOR);
 7152|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 7153|      2|	if (yych == 'B') goto yy427;
  ------------------
  |  Branch (7153:6): [True: 0, False: 2]
  ------------------
 7154|      2|	if (yych == 'b') goto yy427;
  ------------------
  |  Branch (7154:6): [True: 0, False: 2]
  ------------------
 7155|      2|	goto yy59;
 7156|     34|yy245:
 7157|     34|	YYDEBUG(245, *YYCURSOR);
 7158|     34|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
 7159|     34|	if (yych == 'R') goto yy428;
  ------------------
  |  Branch (7159:6): [True: 3, False: 31]
  ------------------
 7160|     31|	if (yych == 'r') goto yy428;
  ------------------
  |  Branch (7160:6): [True: 0, False: 31]
  ------------------
 7161|     31|	goto yy59;
 7162|     31|yy246:
 7163|      8|	YYDEBUG(246, *YYCURSOR);
 7164|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 7165|      8|	if (yych == 'I') goto yy429;
  ------------------
  |  Branch (7165:6): [True: 0, False: 8]
  ------------------
 7166|      8|	if (yych == 'i') goto yy429;
  ------------------
  |  Branch (7166:6): [True: 0, False: 8]
  ------------------
 7167|      8|	goto yy59;
 7168|      8|yy247:
 7169|      6|	YYDEBUG(247, *YYCURSOR);
 7170|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 7171|      6|	if (yych == 'U') goto yy430;
  ------------------
  |  Branch (7171:6): [True: 0, False: 6]
  ------------------
 7172|      6|	if (yych == 'u') goto yy430;
  ------------------
  |  Branch (7172:6): [True: 0, False: 6]
  ------------------
 7173|      6|	goto yy59;
 7174|     28|yy248:
 7175|     28|	YYDEBUG(248, *YYCURSOR);
 7176|     28|	++YYCURSOR;
  ------------------
  |  |   89|     28|#define   YYCURSOR     cursor
  ------------------
 7177|     28|	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  ------------------
  |  |   90|     28|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  ------------------
  |  |   89|     28|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (7177:6): [True: 0, False: 28]
  ------------------
 7178|     28|	yych = *YYCURSOR;
  ------------------
  |  |   89|     28|#define   YYCURSOR     cursor
  ------------------
 7179|     28|	YYDEBUG(249, *YYCURSOR);
 7180|     28|	if (yych <= ' ') {
  ------------------
  |  Branch (7180:6): [True: 11, False: 17]
  ------------------
 7181|     11|		if (yych == '\t') goto yy248;
  ------------------
  |  Branch (7181:7): [True: 6, False: 5]
  ------------------
 7182|      5|		if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (7182:7): [True: 5, False: 0]
  ------------------
 7183|      0|		goto yy248;
 7184|     17|	} else {
 7185|     17|		if (yych <= '.') {
  ------------------
  |  Branch (7185:7): [True: 4, False: 13]
  ------------------
 7186|      4|			if (yych <= ',') goto yy59;
  ------------------
  |  Branch (7186:8): [True: 2, False: 2]
  ------------------
 7187|      2|			goto yy248;
 7188|     13|		} else {
 7189|     13|			if (yych <= '/') goto yy59;
  ------------------
  |  Branch (7189:8): [True: 1, False: 12]
  ------------------
 7190|     12|			if (yych >= ':') goto yy59;
  ------------------
  |  Branch (7190:8): [True: 8, False: 4]
  ------------------
 7191|     12|		}
 7192|     17|	}
 7193|     15|yy250:
 7194|     15|	YYDEBUG(250, *YYCURSOR);
 7195|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7196|     15|	if (yych <= '/') goto yy251;
  ------------------
  |  Branch (7196:6): [True: 4, False: 11]
  ------------------
 7197|     11|	if (yych <= '9') goto yy431;
  ------------------
  |  Branch (7197:6): [True: 9, False: 2]
  ------------------
 7198|     15|yy251:
 7199|     15|	YYDEBUG(251, *YYCURSOR);
 7200|     15|#line 1563 "ext/date/lib/parse_date.re"
 7201|     15|	{
 7202|     15|		int length = 0;
 7203|     15|		DEBUG_OUTPUT("datefull");
 7204|     15|		TIMELIB_INIT;
  ------------------
  |  |  107|     15|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 7205|     15|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     15|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      5|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      5|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      5|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 5, False: 10]
  |  |  ------------------
  ------------------
 7206|     10|		s->time->d = timelib_get_nr(&ptr, 2);
 7207|     10|		timelib_skip_day_suffix(&ptr);
 7208|     10|		s->time->m = timelib_get_month(&ptr);
 7209|     10|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
 7210|     10|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|     10|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|     10|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|     10|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 10]
  |  |  |  Branch (112:32): [True: 2, False: 8]
  |  |  ------------------
  |  |  113|      2|	/*	(x) = 0; */          \
  |  |  114|      8|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 7, False: 1]
  |  |  ------------------
  |  |  115|      7|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 7, False: 0]
  |  |  ------------------
  |  |  116|      7|			(x) += 2000;     \
  |  |  117|      7|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      7|	}                        \
  |  |  121|     10|}
  ------------------
 7211|     10|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     10|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     10|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7212|     10|		return TIMELIB_DATE_FULL;
  ------------------
  |  |   60|     10|#define TIMELIB_DATE_FULL      268
  ------------------
 7213|     15|	}
 7214|      0|#line 7215 "ext/date/lib/parse_date.c"
 7215|     10|yy252:
 7216|     10|	YYDEBUG(252, *YYCURSOR);
 7217|     10|	yyaccept = 3;
 7218|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     10|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
 7219|     10|	if (yych <= ',') {
  ------------------
  |  Branch (7219:6): [True: 0, False: 10]
  ------------------
 7220|      0|		if (yych <= '\t') {
  ------------------
  |  Branch (7220:7): [True: 0, False: 0]
  ------------------
 7221|      0|			if (yych <= 0x08) goto yy81;
  ------------------
  |  Branch (7221:8): [True: 0, False: 0]
  ------------------
 7222|      0|			goto yy248;
 7223|      0|		} else {
 7224|      0|			if (yych == ' ') goto yy248;
  ------------------
  |  Branch (7224:8): [True: 0, False: 0]
  ------------------
 7225|      0|			goto yy81;
 7226|      0|		}
 7227|     10|	} else {
 7228|     10|		if (yych <= '9') {
  ------------------
  |  Branch (7228:7): [True: 0, False: 10]
  ------------------
 7229|      0|			if (yych <= '.') goto yy248;
  ------------------
  |  Branch (7229:8): [True: 0, False: 0]
  ------------------
 7230|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (7230:8): [True: 0, False: 0]
  ------------------
 7231|      0|			goto yy250;
 7232|     10|		} else {
 7233|     10|			if (yych != 'I') goto yy81;
  ------------------
  |  Branch (7233:8): [True: 1, False: 9]
  ------------------
 7234|     10|		}
 7235|     10|	}
 7236|     10|yy253:
 7237|     10|	YYDEBUG(253, *YYCURSOR);
 7238|     10|	yyaccept = 3;
 7239|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     10|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
 7240|     10|	if (yych <= ' ') {
  ------------------
  |  Branch (7240:6): [True: 3, False: 7]
  ------------------
 7241|      3|		if (yych == '\t') goto yy248;
  ------------------
  |  Branch (7241:7): [True: 1, False: 2]
  ------------------
 7242|      2|		if (yych <= 0x1F) goto yy81;
  ------------------
  |  Branch (7242:7): [True: 2, False: 0]
  ------------------
 7243|      0|		goto yy248;
 7244|      7|	} else {
 7245|      7|		if (yych <= '.') {
  ------------------
  |  Branch (7245:7): [True: 0, False: 7]
  ------------------
 7246|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (7246:8): [True: 0, False: 0]
  ------------------
 7247|      0|			goto yy248;
 7248|      7|		} else {
 7249|      7|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (7249:8): [True: 0, False: 7]
  ------------------
 7250|      7|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (7250:8): [True: 0, False: 7]
  ------------------
 7251|      7|			goto yy81;
 7252|      7|		}
 7253|      7|	}
 7254|      2|yy254:
 7255|      2|	YYDEBUG(254, *YYCURSOR);
 7256|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 7257|      2|	if (yych == 'N') goto yy432;
  ------------------
  |  Branch (7257:6): [True: 0, False: 2]
  ------------------
 7258|      2|	if (yych == 'n') goto yy432;
  ------------------
  |  Branch (7258:6): [True: 0, False: 2]
  ------------------
 7259|      2|	goto yy59;
 7260|      6|yy255:
 7261|      6|	YYDEBUG(255, *YYCURSOR);
 7262|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 7263|      6|	if (yych <= 'N') {
  ------------------
  |  Branch (7263:6): [True: 2, False: 4]
  ------------------
 7264|      2|		if (yych == 'L') goto yy433;
  ------------------
  |  Branch (7264:7): [True: 0, False: 2]
  ------------------
 7265|      2|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (7265:7): [True: 2, False: 0]
  ------------------
 7266|      0|		goto yy434;
 7267|      4|	} else {
 7268|      4|		if (yych <= 'l') {
  ------------------
  |  Branch (7268:7): [True: 4, False: 0]
  ------------------
 7269|      4|			if (yych <= 'k') goto yy59;
  ------------------
  |  Branch (7269:8): [True: 4, False: 0]
  ------------------
 7270|      0|			goto yy433;
 7271|      4|		} else {
 7272|      0|			if (yych == 'n') goto yy434;
  ------------------
  |  Branch (7272:8): [True: 0, False: 0]
  ------------------
 7273|      0|			goto yy59;
 7274|      0|		}
 7275|      4|	}
 7276|     37|yy256:
 7277|     37|	YYDEBUG(256, *YYCURSOR);
 7278|     37|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     37|#define   YYCURSOR     cursor
  ------------------
 7279|     37|	if (yych <= 'Y') {
  ------------------
  |  Branch (7279:6): [True: 3, False: 34]
  ------------------
 7280|      3|		if (yych == 'R') goto yy435;
  ------------------
  |  Branch (7280:7): [True: 0, False: 3]
  ------------------
 7281|      3|		if (yych <= 'X') goto yy59;
  ------------------
  |  Branch (7281:7): [True: 3, False: 0]
  ------------------
 7282|      0|		goto yy253;
 7283|     34|	} else {
 7284|     34|		if (yych <= 'r') {
  ------------------
  |  Branch (7284:7): [True: 2, False: 32]
  ------------------
 7285|      2|			if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (7285:8): [True: 2, False: 0]
  ------------------
 7286|      0|			goto yy435;
 7287|     32|		} else {
 7288|     32|			if (yych == 'y') goto yy253;
  ------------------
  |  Branch (7288:8): [True: 1, False: 31]
  ------------------
 7289|     31|			goto yy59;
 7290|     32|		}
 7291|     34|	}
 7292|     15|yy257:
 7293|     15|	YYDEBUG(257, *YYCURSOR);
 7294|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7295|     15|	if (yych <= 'N') {
  ------------------
  |  Branch (7295:6): [True: 10, False: 5]
  ------------------
 7296|     10|		if (yych <= 'K') {
  ------------------
  |  Branch (7296:7): [True: 10, False: 0]
  ------------------
 7297|     10|			if (yych == 'C') goto yy436;
  ------------------
  |  Branch (7297:8): [True: 0, False: 10]
  ------------------
 7298|     10|			goto yy59;
 7299|     10|		} else {
 7300|      0|			if (yych <= 'L') goto yy437;
  ------------------
  |  Branch (7300:8): [True: 0, False: 0]
  ------------------
 7301|      0|			if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (7301:8): [True: 0, False: 0]
  ------------------
 7302|      0|			goto yy438;
 7303|      0|		}
 7304|     10|	} else {
 7305|      5|		if (yych <= 'k') {
  ------------------
  |  Branch (7305:7): [True: 2, False: 3]
  ------------------
 7306|      2|			if (yych == 'c') goto yy436;
  ------------------
  |  Branch (7306:8): [True: 0, False: 2]
  ------------------
 7307|      2|			goto yy59;
 7308|      3|		} else {
 7309|      3|			if (yych <= 'l') goto yy437;
  ------------------
  |  Branch (7309:8): [True: 0, False: 3]
  ------------------
 7310|      3|			if (yych == 'n') goto yy438;
  ------------------
  |  Branch (7310:8): [True: 0, False: 3]
  ------------------
 7311|      3|			goto yy59;
 7312|      3|		}
 7313|      5|	}
 7314|     30|yy258:
 7315|     30|	YYDEBUG(258, *YYCURSOR);
 7316|     30|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
 7317|     30|	if (yych == 'N') goto yy439;
  ------------------
  |  Branch (7317:6): [True: 0, False: 30]
  ------------------
 7318|     30|	if (yych == 'n') goto yy439;
  ------------------
  |  Branch (7318:6): [True: 0, False: 30]
  ------------------
 7319|     30|	goto yy59;
 7320|     30|yy259:
 7321|      5|	YYDEBUG(259, *YYCURSOR);
 7322|      5|	yyaccept = 6;
 7323|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 7324|      5|	if (yych == 'E') goto yy440;
  ------------------
  |  Branch (7324:6): [True: 0, False: 5]
  ------------------
 7325|      5|	if (yych == 'e') goto yy440;
  ------------------
  |  Branch (7325:6): [True: 0, False: 5]
  ------------------
 7326|     29|yy260:
 7327|     29|	YYDEBUG(260, *YYCURSOR);
 7328|     29|#line 1968 "ext/date/lib/parse_date.re"
 7329|     29|	{
 7330|     29|		timelib_ull i;
 7331|     29|		DEBUG_OUTPUT("relative");
 7332|     29|		TIMELIB_INIT;
  ------------------
  |  |  107|     29|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 7333|     29|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|     29|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
 7334|       |
 7335|     58|		while(*ptr) {
  ------------------
  |  Branch (7335:9): [True: 29, False: 29]
  ------------------
 7336|     29|			i = timelib_get_signed_nr(s, &ptr, 24);
 7337|     29|			timelib_eat_spaces(&ptr);
 7338|     29|			timelib_set_relative(&ptr, i, 1, s, TIMELIB_TIME_PART_KEEP);
  ------------------
  |  |   85|     29|#define TIMELIB_TIME_PART_KEEP                    0x01
  ------------------
 7339|     29|		}
 7340|     29|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     29|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     29|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     29|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     29|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     29|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     29|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     29|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7341|     29|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|     29|#define TIMELIB_RELATIVE       310
  ------------------
 7342|      5|	}
 7343|      0|#line 7344 "ext/date/lib/parse_date.c"
 7344|     16|yy261:
 7345|     16|	YYDEBUG(261, *YYCURSOR);
 7346|     16|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     16|#define   YYCURSOR     cursor
  ------------------
 7347|     16|	if (yych == 'V') goto yy426;
  ------------------
  |  Branch (7347:6): [True: 0, False: 16]
  ------------------
 7348|     16|	if (yych == 'v') goto yy426;
  ------------------
  |  Branch (7348:6): [True: 0, False: 16]
  ------------------
 7349|     16|	goto yy59;
 7350|     16|yy262:
 7351|      8|	YYDEBUG(262, *YYCURSOR);
 7352|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 7353|      8|	if (yych == 'T') goto yy441;
  ------------------
  |  Branch (7353:6): [True: 7, False: 1]
  ------------------
 7354|      1|	if (yych == 't') goto yy441;
  ------------------
  |  Branch (7354:6): [True: 0, False: 1]
  ------------------
 7355|      1|	goto yy59;
 7356|     14|yy263:
 7357|     14|	YYDEBUG(263, *YYCURSOR);
 7358|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
 7359|     14|	if (yych == 'T') goto yy442;
  ------------------
  |  Branch (7359:6): [True: 0, False: 14]
  ------------------
 7360|     14|	if (yych == 't') goto yy442;
  ------------------
  |  Branch (7360:6): [True: 0, False: 14]
  ------------------
 7361|     14|	goto yy59;
 7362|     14|yy264:
 7363|     12|	YYDEBUG(264, *YYCURSOR);
 7364|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 7365|     12|	if (yych <= 'P') {
  ------------------
  |  Branch (7365:6): [True: 3, False: 9]
  ------------------
 7366|      3|		if (yych == 'C') goto yy443;
  ------------------
  |  Branch (7366:7): [True: 0, False: 3]
  ------------------
 7367|      3|		if (yych <= 'O') goto yy59;
  ------------------
  |  Branch (7367:7): [True: 2, False: 1]
  ------------------
 7368|      1|		goto yy444;
 7369|      9|	} else {
 7370|      9|		if (yych <= 'c') {
  ------------------
  |  Branch (7370:7): [True: 6, False: 3]
  ------------------
 7371|      6|			if (yych <= 'b') goto yy59;
  ------------------
  |  Branch (7371:8): [True: 4, False: 2]
  ------------------
 7372|      2|			goto yy443;
 7373|      6|		} else {
 7374|      3|			if (yych == 'p') goto yy444;
  ------------------
  |  Branch (7374:8): [True: 0, False: 3]
  ------------------
 7375|      3|			goto yy59;
 7376|      3|		}
 7377|      9|	}
 7378|     29|yy265:
 7379|     29|	YYDEBUG(265, *YYCURSOR);
 7380|     29|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     29|#define   YYCURSOR     cursor
  ------------------
 7381|     29|	if (yych == 'N') goto yy429;
  ------------------
  |  Branch (7381:6): [True: 0, False: 29]
  ------------------
 7382|     29|	if (yych == 'n') goto yy429;
  ------------------
  |  Branch (7382:6): [True: 15, False: 14]
  ------------------
 7383|     14|	goto yy59;
 7384|     14|yy266:
 7385|      7|	YYDEBUG(266, *YYCURSOR);
 7386|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
 7387|      7|	if (yych == 'U') goto yy445;
  ------------------
  |  Branch (7387:6): [True: 0, False: 7]
  ------------------
 7388|      7|	if (yych == 'u') goto yy445;
  ------------------
  |  Branch (7388:6): [True: 0, False: 7]
  ------------------
 7389|      7|	goto yy59;
 7390|      9|yy267:
 7391|      9|	YYDEBUG(267, *YYCURSOR);
 7392|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
 7393|      9|	if (yych == 'E') goto yy446;
  ------------------
  |  Branch (7393:6): [True: 0, False: 9]
  ------------------
 7394|      9|	if (yych == 'e') goto yy446;
  ------------------
  |  Branch (7394:6): [True: 0, False: 9]
  ------------------
 7395|      9|	goto yy59;
 7396|     15|yy268:
 7397|     15|	YYDEBUG(268, *YYCURSOR);
 7398|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7399|     15|	if (yych == 'E') goto yy440;
  ------------------
  |  Branch (7399:6): [True: 0, False: 15]
  ------------------
 7400|     15|	if (yych == 'e') goto yy440;
  ------------------
  |  Branch (7400:6): [True: 11, False: 4]
  ------------------
 7401|      4|	goto yy59;
 7402|     13|yy269:
 7403|     13|	YYDEBUG(269, *YYCURSOR);
 7404|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
 7405|     13|	if (yych <= 'E') {
  ------------------
  |  Branch (7405:6): [True: 6, False: 7]
  ------------------
 7406|      6|		if (yych <= 'C') goto yy59;
  ------------------
  |  Branch (7406:7): [True: 2, False: 4]
  ------------------
 7407|      4|		if (yych <= 'D') goto yy447;
  ------------------
  |  Branch (7407:7): [True: 4, False: 0]
  ------------------
 7408|      0|		goto yy448;
 7409|      7|	} else {
 7410|      7|		if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (7410:7): [True: 3, False: 4]
  ------------------
 7411|      4|		if (yych <= 'd') goto yy447;
  ------------------
  |  Branch (7411:7): [True: 0, False: 4]
  ------------------
 7412|      4|		if (yych <= 'e') goto yy448;
  ------------------
  |  Branch (7412:7): [True: 2, False: 2]
  ------------------
 7413|      2|		goto yy59;
 7414|      4|	}
 7415|      8|yy270:
 7416|      8|	YYDEBUG(270, *YYCURSOR);
 7417|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 7418|      8|	if (yych == 'A') goto yy430;
  ------------------
  |  Branch (7418:6): [True: 0, False: 8]
  ------------------
 7419|      8|	if (yych == 'a') goto yy430;
  ------------------
  |  Branch (7419:6): [True: 0, False: 8]
  ------------------
 7420|      8|	goto yy59;
 7421|     22|yy271:
 7422|     22|	YYDEBUG(271, *YYCURSOR);
 7423|     22|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
 7424|     22|	if (yych <= ',') {
  ------------------
  |  Branch (7424:6): [True: 0, False: 22]
  ------------------
 7425|      0|		if (yych == '\t') goto yy287;
  ------------------
  |  Branch (7425:7): [True: 0, False: 0]
  ------------------
 7426|      0|		goto yy207;
 7427|     22|	} else {
 7428|     22|		if (yych <= '-') goto yy449;
  ------------------
  |  Branch (7428:7): [True: 10, False: 12]
  ------------------
 7429|     12|		if (yych <= '.') goto yy287;
  ------------------
  |  Branch (7429:7): [True: 0, False: 12]
  ------------------
 7430|     12|		if (yych <= '/') goto yy280;
  ------------------
  |  Branch (7430:7): [True: 0, False: 12]
  ------------------
 7431|     12|		goto yy207;
 7432|     12|	}
 7433|      2|yy272:
 7434|      2|	YYDEBUG(272, *YYCURSOR);
 7435|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 7436|      2|	if (yych <= '.') {
  ------------------
  |  Branch (7436:6): [True: 2, False: 0]
  ------------------
 7437|      2|		if (yych <= '\t') {
  ------------------
  |  Branch (7437:7): [True: 1, False: 1]
  ------------------
 7438|      1|			if (yych <= 0x08) goto yy207;
  ------------------
  |  Branch (7438:8): [True: 1, False: 0]
  ------------------
 7439|      0|			goto yy287;
 7440|      1|		} else {
 7441|      1|			if (yych <= ',') goto yy207;
  ------------------
  |  Branch (7441:8): [True: 1, False: 0]
  ------------------
 7442|      0|			if (yych <= '-') goto yy449;
  ------------------
  |  Branch (7442:8): [True: 0, False: 0]
  ------------------
 7443|      0|			goto yy287;
 7444|      0|		}
 7445|      2|	} else {
 7446|      0|		if (yych <= 'U') {
  ------------------
  |  Branch (7446:7): [True: 0, False: 0]
  ------------------
 7447|      0|			if (yych <= '/') goto yy280;
  ------------------
  |  Branch (7447:8): [True: 0, False: 0]
  ------------------
 7448|      0|			if (yych <= 'T') goto yy207;
  ------------------
  |  Branch (7448:8): [True: 0, False: 0]
  ------------------
 7449|      0|			goto yy445;
 7450|      0|		} else {
 7451|      0|			if (yych == 'u') goto yy445;
  ------------------
  |  Branch (7451:8): [True: 0, False: 0]
  ------------------
 7452|      0|			goto yy207;
 7453|      0|		}
 7454|      0|	}
 7455|     48|yy273:
 7456|     48|	YYDEBUG(273, *YYCURSOR);
 7457|     48|	++YYCURSOR;
  ------------------
  |  |   89|     48|#define   YYCURSOR     cursor
  ------------------
 7458|     48|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|     48|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|     48|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (7458:6): [True: 0, False: 48]
  ------------------
 7459|     48|	yych = *YYCURSOR;
  ------------------
  |  |   89|     48|#define   YYCURSOR     cursor
  ------------------
 7460|     48|	if (yych <= 'c') {
  ------------------
  |  Branch (7460:6): [True: 13, False: 35]
  ------------------
 7461|     13|		if (yych <= 'M') {
  ------------------
  |  Branch (7461:7): [True: 11, False: 2]
  ------------------
 7462|     11|			if (yych <= 'F') {
  ------------------
  |  Branch (7462:8): [True: 11, False: 0]
  ------------------
 7463|     11|				if (yych == 'D') goto yy198;
  ------------------
  |  Branch (7463:9): [True: 0, False: 11]
  ------------------
 7464|     11|				if (yych <= 'E') goto yy59;
  ------------------
  |  Branch (7464:9): [True: 10, False: 1]
  ------------------
 7465|      1|				goto yy199;
 7466|     11|			} else {
 7467|      0|				if (yych == 'H') goto yy79;
  ------------------
  |  Branch (7467:9): [True: 0, False: 0]
  ------------------
 7468|      0|				if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (7468:9): [True: 0, False: 0]
  ------------------
 7469|      0|				goto yy200;
 7470|      0|			}
 7471|     11|		} else {
 7472|      2|			if (yych <= 'U') {
  ------------------
  |  Branch (7472:8): [True: 0, False: 2]
  ------------------
 7473|      0|				if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (7473:9): [True: 0, False: 0]
  ------------------
 7474|      0|				if (yych <= 'S') goto yy201;
  ------------------
  |  Branch (7474:9): [True: 0, False: 0]
  ------------------
 7475|      0|				if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (7475:9): [True: 0, False: 0]
  ------------------
 7476|      0|				goto yy88;
 7477|      2|			} else {
 7478|      2|				if (yych <= 'W') {
  ------------------
  |  Branch (7478:9): [True: 0, False: 2]
  ------------------
 7479|      0|					if (yych <= 'V') goto yy59;
  ------------------
  |  Branch (7479:10): [True: 0, False: 0]
  ------------------
 7480|      0|					goto yy90;
 7481|      2|				} else {
 7482|      2|					if (yych == 'Y') goto yy92;
  ------------------
  |  Branch (7482:10): [True: 0, False: 2]
  ------------------
 7483|      2|					goto yy59;
 7484|      2|				}
 7485|      2|			}
 7486|      2|		}
 7487|     35|	} else {
 7488|     35|		if (yych <= 's') {
  ------------------
  |  Branch (7488:7): [True: 17, False: 18]
  ------------------
 7489|     17|			if (yych <= 'g') {
  ------------------
  |  Branch (7489:8): [True: 6, False: 11]
  ------------------
 7490|      6|				if (yych <= 'd') goto yy198;
  ------------------
  |  Branch (7490:9): [True: 0, False: 6]
  ------------------
 7491|      6|				if (yych == 'f') goto yy199;
  ------------------
  |  Branch (7491:9): [True: 4, False: 2]
  ------------------
 7492|      2|				goto yy59;
 7493|     11|			} else {
 7494|     11|				if (yych <= 'l') {
  ------------------
  |  Branch (7494:9): [True: 0, False: 11]
  ------------------
 7495|      0|					if (yych <= 'h') goto yy79;
  ------------------
  |  Branch (7495:10): [True: 0, False: 0]
  ------------------
 7496|      0|					goto yy59;
 7497|     11|				} else {
 7498|     11|					if (yych <= 'm') goto yy200;
  ------------------
  |  Branch (7498:10): [True: 0, False: 11]
  ------------------
 7499|     11|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (7499:10): [True: 0, False: 11]
  ------------------
 7500|     11|					goto yy201;
 7501|     11|				}
 7502|     11|			}
 7503|     18|		} else {
 7504|     18|			if (yych <= 'w') {
  ------------------
  |  Branch (7504:8): [True: 14, False: 4]
  ------------------
 7505|     14|				if (yych <= 't') goto yy87;
  ------------------
  |  Branch (7505:9): [True: 0, False: 14]
  ------------------
 7506|     14|				if (yych <= 'u') goto yy88;
  ------------------
  |  Branch (7506:9): [True: 0, False: 14]
  ------------------
 7507|     14|				if (yych <= 'v') goto yy59;
  ------------------
  |  Branch (7507:9): [True: 0, False: 14]
  ------------------
 7508|     14|				goto yy90;
 7509|     14|			} else {
 7510|      4|				if (yych <= 'y') {
  ------------------
  |  Branch (7510:9): [True: 4, False: 0]
  ------------------
 7511|      4|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (7511:10): [True: 0, False: 4]
  ------------------
 7512|      4|					goto yy92;
 7513|      4|				} else {
 7514|      0|					if (yych == 0xC2) goto yy97;
  ------------------
  |  Branch (7514:10): [True: 0, False: 0]
  ------------------
 7515|      0|					goto yy59;
 7516|      0|				}
 7517|      4|			}
 7518|     18|		}
 7519|     35|	}
 7520|      0|yy274:
 7521|      0|	YYDEBUG(274, *YYCURSOR);
 7522|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7523|      0|	if (yych == 'S') goto yy259;
  ------------------
  |  Branch (7523:6): [True: 0, False: 0]
  ------------------
 7524|      0|	if (yych == 's') goto yy259;
  ------------------
  |  Branch (7524:6): [True: 0, False: 0]
  ------------------
 7525|      0|	goto yy59;
 7526|      0|yy275:
 7527|      0|	YYDEBUG(275, *YYCURSOR);
 7528|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7529|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (7529:6): [True: 0, False: 0]
  ------------------
 7530|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7531|      0|	if (yych == 0xAF) goto yy450;
  ------------------
  |  Branch (7531:6): [True: 0, False: 0]
  ------------------
 7532|      0|	goto yy59;
 7533|     58|yy276:
 7534|     58|	YYDEBUG(276, *YYCURSOR);
 7535|     58|	yyaccept = 4;
 7536|     58|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     58|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     58|#define   YYCURSOR     cursor
  ------------------
 7537|     58|	if (yych <= '.') {
  ------------------
  |  Branch (7537:6): [True: 9, False: 49]
  ------------------
 7538|      9|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (7538:7): [True: 2, False: 7]
  ------------------
 7539|      7|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (7539:7): [True: 0, False: 7]
  ------------------
 7540|      7|		goto yy451;
 7541|     49|	} else {
 7542|     49|		if (yych <= '/') goto yy177;
  ------------------
  |  Branch (7542:7): [True: 1, False: 48]
  ------------------
 7543|     48|		if (yych <= '9') goto yy452;
  ------------------
  |  Branch (7543:7): [True: 32, False: 16]
  ------------------
 7544|     16|		if (yych <= ':') goto yy453;
  ------------------
  |  Branch (7544:7): [True: 0, False: 16]
  ------------------
 7545|     16|		goto yy177;
 7546|     16|	}
 7547|      4|yy277:
 7548|      4|	YYDEBUG(277, *YYCURSOR);
 7549|      4|	yyaccept = 4;
 7550|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 7551|      4|	if (yych <= '/') {
  ------------------
  |  Branch (7551:6): [True: 2, False: 2]
  ------------------
 7552|      2|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (7552:7): [True: 1, False: 1]
  ------------------
 7553|      1|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (7553:7): [True: 0, False: 1]
  ------------------
 7554|      1|		if (yych <= '.') goto yy451;
  ------------------
  |  Branch (7554:7): [True: 1, False: 0]
  ------------------
 7555|      0|		goto yy177;
 7556|      2|	} else {
 7557|      2|		if (yych <= '2') goto yy452;
  ------------------
  |  Branch (7557:7): [True: 0, False: 2]
  ------------------
 7558|      2|		if (yych <= '9') goto yy454;
  ------------------
  |  Branch (7558:7): [True: 0, False: 2]
  ------------------
 7559|      2|		if (yych <= ':') goto yy453;
  ------------------
  |  Branch (7559:7): [True: 0, False: 2]
  ------------------
 7560|      2|		goto yy177;
 7561|      2|	}
 7562|     58|yy278:
 7563|     58|	YYDEBUG(278, *YYCURSOR);
 7564|     58|	yyaccept = 4;
 7565|     58|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     58|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     58|#define   YYCURSOR     cursor
  ------------------
 7566|     58|	if (yych <= '.') {
  ------------------
  |  Branch (7566:6): [True: 15, False: 43]
  ------------------
 7567|     15|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (7567:7): [True: 6, False: 9]
  ------------------
 7568|      9|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (7568:7): [True: 1, False: 8]
  ------------------
 7569|      8|		goto yy451;
 7570|     43|	} else {
 7571|     43|		if (yych <= '/') goto yy177;
  ------------------
  |  Branch (7571:7): [True: 0, False: 43]
  ------------------
 7572|     43|		if (yych <= '9') goto yy454;
  ------------------
  |  Branch (7572:7): [True: 36, False: 7]
  ------------------
 7573|      7|		if (yych <= ':') goto yy453;
  ------------------
  |  Branch (7573:7): [True: 0, False: 7]
  ------------------
 7574|      7|		goto yy177;
 7575|      7|	}
 7576|     36|yy279:
 7577|     36|	YYDEBUG(279, *YYCURSOR);
 7578|     36|	yyaccept = 4;
 7579|     36|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     36|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 7580|     36|	if (yych <= '.') {
  ------------------
  |  Branch (7580:6): [True: 11, False: 25]
  ------------------
 7581|     11|		if (yych <= ',') goto yy177;
  ------------------
  |  Branch (7581:7): [True: 0, False: 11]
  ------------------
 7582|     11|		if (yych <= '-') goto yy396;
  ------------------
  |  Branch (7582:7): [True: 4, False: 7]
  ------------------
 7583|      7|		goto yy451;
 7584|     25|	} else {
 7585|     25|		if (yych == ':') goto yy453;
  ------------------
  |  Branch (7585:7): [True: 14, False: 11]
  ------------------
 7586|     11|		goto yy177;
 7587|     25|	}
 7588|     12|yy280:
 7589|     12|	YYDEBUG(280, *YYCURSOR);
 7590|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
 7591|     12|	switch (yych) {
 7592|      0|	case 'A':
  ------------------
  |  Branch (7592:2): [True: 0, False: 12]
  ------------------
 7593|      0|	case 'a':	goto yy227;
  ------------------
  |  Branch (7593:2): [True: 0, False: 12]
  ------------------
 7594|      0|	case 'D':
  ------------------
  |  Branch (7594:2): [True: 0, False: 12]
  ------------------
 7595|      0|	case 'd':	goto yy228;
  ------------------
  |  Branch (7595:2): [True: 0, False: 12]
  ------------------
 7596|      0|	case 'F':
  ------------------
  |  Branch (7596:2): [True: 0, False: 12]
  ------------------
 7597|      0|	case 'f':	goto yy229;
  ------------------
  |  Branch (7597:2): [True: 0, False: 12]
  ------------------
 7598|      0|	case 'J':
  ------------------
  |  Branch (7598:2): [True: 0, False: 12]
  ------------------
 7599|      1|	case 'j':	goto yy230;
  ------------------
  |  Branch (7599:2): [True: 1, False: 11]
  ------------------
 7600|      0|	case 'M':
  ------------------
  |  Branch (7600:2): [True: 0, False: 12]
  ------------------
 7601|      0|	case 'm':	goto yy231;
  ------------------
  |  Branch (7601:2): [True: 0, False: 12]
  ------------------
 7602|      0|	case 'N':
  ------------------
  |  Branch (7602:2): [True: 0, False: 12]
  ------------------
 7603|      1|	case 'n':	goto yy232;
  ------------------
  |  Branch (7603:2): [True: 1, False: 11]
  ------------------
 7604|      0|	case 'O':
  ------------------
  |  Branch (7604:2): [True: 0, False: 12]
  ------------------
 7605|      0|	case 'o':	goto yy233;
  ------------------
  |  Branch (7605:2): [True: 0, False: 12]
  ------------------
 7606|      4|	case 'S':
  ------------------
  |  Branch (7606:2): [True: 4, False: 8]
  ------------------
 7607|      5|	case 's':	goto yy234;
  ------------------
  |  Branch (7607:2): [True: 1, False: 11]
  ------------------
 7608|      5|	default:	goto yy59;
  ------------------
  |  Branch (7608:2): [True: 5, False: 7]
  ------------------
 7609|     12|	}
 7610|     27|yy281:
 7611|     27|	YYDEBUG(281, *YYCURSOR);
 7612|     27|	yyaccept = 4;
 7613|     27|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     27|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     27|#define   YYCURSOR     cursor
  ------------------
 7614|     27|	if (yych <= '/') {
  ------------------
  |  Branch (7614:6): [True: 4, False: 23]
  ------------------
 7615|      4|		if (yych == '.') goto yy453;
  ------------------
  |  Branch (7615:7): [True: 0, False: 4]
  ------------------
 7616|      4|		goto yy177;
 7617|     23|	} else {
 7618|     23|		if (yych <= '9') goto yy455;
  ------------------
  |  Branch (7618:7): [True: 22, False: 1]
  ------------------
 7619|      1|		if (yych <= ':') goto yy453;
  ------------------
  |  Branch (7619:7): [True: 0, False: 1]
  ------------------
 7620|      1|		goto yy177;
 7621|      1|	}
 7622|      2|yy282:
 7623|      2|	YYDEBUG(282, *YYCURSOR);
 7624|      2|	yyaccept = 4;
 7625|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 7626|      2|	if (yych == '.') goto yy453;
  ------------------
  |  Branch (7626:6): [True: 0, False: 2]
  ------------------
 7627|      2|	if (yych == ':') goto yy453;
  ------------------
  |  Branch (7627:6): [True: 2, False: 0]
  ------------------
 7628|      0|	goto yy177;
 7629|      0|yy283:
 7630|      0|	YYDEBUG(283, *YYCURSOR);
 7631|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7632|      0|	if (yych == 'M') goto yy284;
  ------------------
  |  Branch (7632:6): [True: 0, False: 0]
  ------------------
 7633|      0|	if (yych != 'm') goto yy59;
  ------------------
  |  Branch (7633:6): [True: 0, False: 0]
  ------------------
 7634|     15|yy284:
 7635|     15|	YYDEBUG(284, *YYCURSOR);
 7636|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7637|     15|	if (yych <= 0x1F) {
  ------------------
  |  Branch (7637:6): [True: 0, False: 15]
  ------------------
 7638|      0|		if (yych <= 0x00) goto yy456;
  ------------------
  |  Branch (7638:7): [True: 0, False: 0]
  ------------------
 7639|      0|		if (yych == '\t') goto yy456;
  ------------------
  |  Branch (7639:7): [True: 0, False: 0]
  ------------------
 7640|      0|		goto yy59;
 7641|     15|	} else {
 7642|     15|		if (yych <= ' ') goto yy456;
  ------------------
  |  Branch (7642:7): [True: 1, False: 14]
  ------------------
 7643|     14|		if (yych == '.') goto yy458;
  ------------------
  |  Branch (7643:7): [True: 3, False: 11]
  ------------------
 7644|     11|		goto yy59;
 7645|     14|	}
 7646|     15|yy285:
 7647|     15|	YYDEBUG(285, *YYCURSOR);
 7648|     15|	++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7649|     15|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|     15|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (7649:6): [True: 0, False: 15]
  ------------------
 7650|     15|	yych = *YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7651|     15|	if (yych <= '`') {
  ------------------
  |  Branch (7651:6): [True: 3, False: 12]
  ------------------
 7652|      3|		if (yych <= 'M') {
  ------------------
  |  Branch (7652:7): [True: 3, False: 0]
  ------------------
 7653|      3|			if (yych <= 'E') {
  ------------------
  |  Branch (7653:8): [True: 2, False: 1]
  ------------------
 7654|      2|				if (yych <= 'A') {
  ------------------
  |  Branch (7654:9): [True: 2, False: 0]
  ------------------
 7655|      2|					if (yych <= '@') goto yy59;
  ------------------
  |  Branch (7655:10): [True: 2, False: 0]
  ------------------
 7656|      0|					goto yy106;
 7657|      2|				} else {
 7658|      0|					if (yych == 'D') goto yy198;
  ------------------
  |  Branch (7658:10): [True: 0, False: 0]
  ------------------
 7659|      0|					goto yy59;
 7660|      0|				}
 7661|      2|			} else {
 7662|      1|				if (yych <= 'G') {
  ------------------
  |  Branch (7662:9): [True: 1, False: 0]
  ------------------
 7663|      1|					if (yych <= 'F') goto yy199;
  ------------------
  |  Branch (7663:10): [True: 1, False: 0]
  ------------------
 7664|      0|					goto yy59;
 7665|      1|				} else {
 7666|      0|					if (yych <= 'H') goto yy79;
  ------------------
  |  Branch (7666:10): [True: 0, False: 0]
  ------------------
 7667|      0|					if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (7667:10): [True: 0, False: 0]
  ------------------
 7668|      0|					goto yy200;
 7669|      0|				}
 7670|      1|			}
 7671|      3|		} else {
 7672|      0|			if (yych <= 'T') {
  ------------------
  |  Branch (7672:8): [True: 0, False: 0]
  ------------------
 7673|      0|				if (yych <= 'P') {
  ------------------
  |  Branch (7673:9): [True: 0, False: 0]
  ------------------
 7674|      0|					if (yych <= 'O') goto yy59;
  ------------------
  |  Branch (7674:10): [True: 0, False: 0]
  ------------------
 7675|      0|					goto yy106;
 7676|      0|				} else {
 7677|      0|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (7677:10): [True: 0, False: 0]
  ------------------
 7678|      0|					if (yych <= 'S') goto yy201;
  ------------------
  |  Branch (7678:10): [True: 0, False: 0]
  ------------------
 7679|      0|					goto yy87;
 7680|      0|				}
 7681|      0|			} else {
 7682|      0|				if (yych <= 'W') {
  ------------------
  |  Branch (7682:9): [True: 0, False: 0]
  ------------------
 7683|      0|					if (yych <= 'U') goto yy88;
  ------------------
  |  Branch (7683:10): [True: 0, False: 0]
  ------------------
 7684|      0|					if (yych <= 'V') goto yy59;
  ------------------
  |  Branch (7684:10): [True: 0, False: 0]
  ------------------
 7685|      0|					goto yy90;
 7686|      0|				} else {
 7687|      0|					if (yych == 'Y') goto yy92;
  ------------------
  |  Branch (7687:10): [True: 0, False: 0]
  ------------------
 7688|      0|					goto yy59;
 7689|      0|				}
 7690|      0|			}
 7691|      0|		}
 7692|     12|	} else {
 7693|     12|		if (yych <= 'p') {
  ------------------
  |  Branch (7693:7): [True: 12, False: 0]
  ------------------
 7694|     12|			if (yych <= 'f') {
  ------------------
  |  Branch (7694:8): [True: 7, False: 5]
  ------------------
 7695|      7|				if (yych <= 'c') {
  ------------------
  |  Branch (7695:9): [True: 2, False: 5]
  ------------------
 7696|      2|					if (yych <= 'a') goto yy106;
  ------------------
  |  Branch (7696:10): [True: 0, False: 2]
  ------------------
 7697|      2|					goto yy59;
 7698|      5|				} else {
 7699|      5|					if (yych <= 'd') goto yy198;
  ------------------
  |  Branch (7699:10): [True: 0, False: 5]
  ------------------
 7700|      5|					if (yych <= 'e') goto yy59;
  ------------------
  |  Branch (7700:10): [True: 1, False: 4]
  ------------------
 7701|      4|					goto yy199;
 7702|      5|				}
 7703|      7|			} else {
 7704|      5|				if (yych <= 'l') {
  ------------------
  |  Branch (7704:9): [True: 2, False: 3]
  ------------------
 7705|      2|					if (yych == 'h') goto yy79;
  ------------------
  |  Branch (7705:10): [True: 2, False: 0]
  ------------------
 7706|      0|					goto yy59;
 7707|      3|				} else {
 7708|      3|					if (yych <= 'm') goto yy200;
  ------------------
  |  Branch (7708:10): [True: 3, False: 0]
  ------------------
 7709|      0|					if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (7709:10): [True: 0, False: 0]
  ------------------
 7710|      0|					goto yy106;
 7711|      0|				}
 7712|      5|			}
 7713|     12|		} else {
 7714|      0|			if (yych <= 'v') {
  ------------------
  |  Branch (7714:8): [True: 0, False: 0]
  ------------------
 7715|      0|				if (yych <= 's') {
  ------------------
  |  Branch (7715:9): [True: 0, False: 0]
  ------------------
 7716|      0|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (7716:10): [True: 0, False: 0]
  ------------------
 7717|      0|					goto yy201;
 7718|      0|				} else {
 7719|      0|					if (yych <= 't') goto yy87;
  ------------------
  |  Branch (7719:10): [True: 0, False: 0]
  ------------------
 7720|      0|					if (yych <= 'u') goto yy88;
  ------------------
  |  Branch (7720:10): [True: 0, False: 0]
  ------------------
 7721|      0|					goto yy59;
 7722|      0|				}
 7723|      0|			} else {
 7724|      0|				if (yych <= 'y') {
  ------------------
  |  Branch (7724:9): [True: 0, False: 0]
  ------------------
 7725|      0|					if (yych <= 'w') goto yy90;
  ------------------
  |  Branch (7725:10): [True: 0, False: 0]
  ------------------
 7726|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (7726:10): [True: 0, False: 0]
  ------------------
 7727|      0|					goto yy92;
 7728|      0|				} else {
 7729|      0|					if (yych == 0xC2) goto yy107;
  ------------------
  |  Branch (7729:10): [True: 0, False: 0]
  ------------------
 7730|      0|					goto yy59;
 7731|      0|				}
 7732|      0|			}
 7733|      0|		}
 7734|     12|	}
 7735|      0|yy286:
 7736|      0|	YYDEBUG(286, *YYCURSOR);
 7737|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7738|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (7738:6): [True: 0, False: 0]
  ------------------
 7739|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7740|      0|	if (yych == 0xAF) goto yy459;
  ------------------
  |  Branch (7740:6): [True: 0, False: 0]
  ------------------
 7741|      0|	goto yy59;
 7742|      8|yy287:
 7743|      8|	YYDEBUG(287, *YYCURSOR);
 7744|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 7745|      8|	if (yych <= '/') goto yy207;
  ------------------
  |  Branch (7745:6): [True: 1, False: 7]
  ------------------
 7746|      7|	if (yych <= '0') goto yy208;
  ------------------
  |  Branch (7746:6): [True: 1, False: 6]
  ------------------
 7747|      6|	if (yych <= '1') goto yy209;
  ------------------
  |  Branch (7747:6): [True: 0, False: 6]
  ------------------
 7748|      6|	if (yych <= '9') goto yy210;
  ------------------
  |  Branch (7748:6): [True: 2, False: 4]
  ------------------
 7749|      4|	goto yy207;
 7750|    130|yy288:
 7751|    130|	YYDEBUG(288, *YYCURSOR);
 7752|    130|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    130|#define   YYCURSOR     cursor
  ------------------
 7753|    130|	switch (yych) {
 7754|      3|	case '0':	goto yy460;
  ------------------
  |  Branch (7754:2): [True: 3, False: 127]
  ------------------
 7755|     22|	case '1':	goto yy461;
  ------------------
  |  Branch (7755:2): [True: 22, False: 108]
  ------------------
 7756|      1|	case '2':
  ------------------
  |  Branch (7756:2): [True: 1, False: 129]
  ------------------
 7757|      4|	case '3':
  ------------------
  |  Branch (7757:2): [True: 3, False: 127]
  ------------------
 7758|      5|	case '4':
  ------------------
  |  Branch (7758:2): [True: 1, False: 129]
  ------------------
 7759|     16|	case '5':
  ------------------
  |  Branch (7759:2): [True: 11, False: 119]
  ------------------
 7760|     25|	case '6':
  ------------------
  |  Branch (7760:2): [True: 9, False: 121]
  ------------------
 7761|     26|	case '7':
  ------------------
  |  Branch (7761:2): [True: 1, False: 129]
  ------------------
 7762|     26|	case '8':
  ------------------
  |  Branch (7762:2): [True: 0, False: 130]
  ------------------
 7763|     26|	case '9':	goto yy462;
  ------------------
  |  Branch (7763:2): [True: 0, False: 130]
  ------------------
 7764|     13|	case 'A':
  ------------------
  |  Branch (7764:2): [True: 13, False: 117]
  ------------------
 7765|     15|	case 'a':	goto yy463;
  ------------------
  |  Branch (7765:2): [True: 2, False: 128]
  ------------------
 7766|      0|	case 'D':
  ------------------
  |  Branch (7766:2): [True: 0, False: 130]
  ------------------
 7767|      1|	case 'd':	goto yy464;
  ------------------
  |  Branch (7767:2): [True: 1, False: 129]
  ------------------
 7768|      0|	case 'F':
  ------------------
  |  Branch (7768:2): [True: 0, False: 130]
  ------------------
 7769|      0|	case 'f':	goto yy465;
  ------------------
  |  Branch (7769:2): [True: 0, False: 130]
  ------------------
 7770|      3|	case 'J':
  ------------------
  |  Branch (7770:2): [True: 3, False: 127]
  ------------------
 7771|      3|	case 'j':	goto yy466;
  ------------------
  |  Branch (7771:2): [True: 0, False: 130]
  ------------------
 7772|      6|	case 'M':
  ------------------
  |  Branch (7772:2): [True: 6, False: 124]
  ------------------
 7773|      6|	case 'm':	goto yy467;
  ------------------
  |  Branch (7773:2): [True: 0, False: 130]
  ------------------
 7774|      6|	case 'N':
  ------------------
  |  Branch (7774:2): [True: 6, False: 124]
  ------------------
 7775|      6|	case 'n':	goto yy468;
  ------------------
  |  Branch (7775:2): [True: 0, False: 130]
  ------------------
 7776|      9|	case 'O':
  ------------------
  |  Branch (7776:2): [True: 9, False: 121]
  ------------------
 7777|     12|	case 'o':	goto yy469;
  ------------------
  |  Branch (7777:2): [True: 3, False: 127]
  ------------------
 7778|     10|	case 'S':
  ------------------
  |  Branch (7778:2): [True: 10, False: 120]
  ------------------
 7779|     12|	case 's':	goto yy470;
  ------------------
  |  Branch (7779:2): [True: 2, False: 128]
  ------------------
 7780|     24|	default:	goto yy59;
  ------------------
  |  Branch (7780:2): [True: 24, False: 106]
  ------------------
 7781|    130|	}
 7782|     15|yy289:
 7783|     15|	YYDEBUG(289, *YYCURSOR);
 7784|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 7785|     15|	if (yych <= '/') goto yy290;
  ------------------
  |  Branch (7785:6): [True: 1, False: 14]
  ------------------
 7786|     14|	if (yych <= '9') goto yy471;
  ------------------
  |  Branch (7786:6): [True: 14, False: 0]
  ------------------
 7787|     15|yy290:
 7788|     15|	YYDEBUG(290, *YYCURSOR);
 7789|     15|#line 1247 "ext/date/lib/parse_date.re"
 7790|     15|	{
 7791|     15|		timelib_sll i;
 7792|     15|		timelib_ull us;
 7793|     15|		const char *ptr_before;
 7794|     15|		bool is_negative;
 7795|       |
 7796|     15|		TIMELIB_INIT;
  ------------------
  |  |  107|     15|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 7797|     15|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|     15|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
 7798|     15|		TIMELIB_UNHAVE_DATE();
  ------------------
  |  |  101|     15|#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
  ------------------
 7799|     15|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|     15|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
 7800|     15|		TIMELIB_HAVE_TZ();
  ------------------
  |  |  105|     15|#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |  287|      7|#define TIMELIB_ERR_DOUBLE_TZ                  0x201
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |  282|      2|#define TIMELIB_WARN_DOUBLE_TZ                 0x101
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |   96|      9|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      9|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
  |  |  ------------------
  |  |  |  |   80|      9|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (105:50): [True: 9, False: 6]
  |  |  |  Branch (105:72): [True: 7, False: 2]
  |  |  ------------------
  ------------------
 7801|       |
 7802|      6|		is_negative = *(ptr + 1) == '-';
 7803|       |
 7804|      6|		i = timelib_get_signed_nr(s, &ptr, 24);
 7805|       |
 7806|      6|		ptr_before = ptr;
 7807|      6|		us = timelib_get_signed_nr(s, &ptr, 6);
 7808|      6|		us = us * pow(10, 7 - (ptr - ptr_before));
 7809|      6|		if (is_negative) {
  ------------------
  |  Branch (7809:7): [True: 1, False: 5]
  ------------------
 7810|      1|			us *= -1;
 7811|      1|		}
 7812|       |
 7813|      6|		s->time->y = 1970;
 7814|      6|		s->time->m = 1;
 7815|      6|		s->time->d = 1;
 7816|      6|		s->time->h = s->time->i = s->time->s = 0;
 7817|      6|		s->time->us = 0;
 7818|      6|		s->time->relative.s += i;
 7819|      6|		s->time->relative.us = us;
 7820|      6|		s->time->is_localtime = 1;
 7821|      6|		s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
  ------------------
  |  |  327|      6|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
 7822|      6|		s->time->z = 0;
 7823|      6|		s->time->dst = 0;
 7824|       |
 7825|      6|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      6|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      6|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      6|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7826|      6|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      6|#define TIMELIB_RELATIVE       310
  ------------------
 7827|     15|	}
 7828|      0|#line 7829 "ext/date/lib/parse_date.c"
 7829|  1.68k|yy291:
 7830|  1.68k|	YYDEBUG(291, *YYCURSOR);
 7831|  1.68k|	yych = *++YYCURSOR;
  ------------------
  |  |   89|  1.68k|#define   YYCURSOR     cursor
  ------------------
 7832|  1.68k|	if (yych <= '@') {
  ------------------
  |  Branch (7832:6): [True: 468, False: 1.22k]
  ------------------
 7833|    468|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (7833:7): [True: 29, False: 439]
  ------------------
 7834|    439|		goto yy20;
 7835|  1.22k|	} else {
 7836|  1.22k|		if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (7836:7): [True: 299, False: 921]
  ------------------
 7837|    921|		if (yych <= '`') goto yy20;
  ------------------
  |  Branch (7837:7): [True: 55, False: 866]
  ------------------
 7838|    866|		if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (7838:7): [True: 758, False: 108]
  ------------------
 7839|    108|		goto yy20;
 7840|    866|	}
 7841|      0|yy292:
 7842|      0|	YYDEBUG(292, *YYCURSOR);
 7843|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 7844|      0|	if (yych <= '@') {
  ------------------
  |  Branch (7844:6): [True: 0, False: 0]
  ------------------
 7845|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (7845:7): [True: 0, False: 0]
  ------------------
 7846|      0|	} else {
 7847|      0|		if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (7847:7): [True: 0, False: 0]
  ------------------
 7848|      0|		if (yych <= '`') goto yy293;
  ------------------
  |  Branch (7848:7): [True: 0, False: 0]
  ------------------
 7849|      0|		if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (7849:7): [True: 0, False: 0]
  ------------------
 7850|      0|	}
 7851|      0|yy293:
 7852|      0|	YYDEBUG(293, *YYCURSOR);
 7853|      0|#line 1809 "ext/date/lib/parse_date.re"
 7854|      0|	{
 7855|      0|		DEBUG_OUTPUT("ago");
 7856|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 7857|      0|		s->time->relative.y = 0 - s->time->relative.y;
 7858|      0|		s->time->relative.m = 0 - s->time->relative.m;
 7859|      0|		s->time->relative.d = 0 - s->time->relative.d;
 7860|      0|		s->time->relative.h = 0 - s->time->relative.h;
 7861|      0|		s->time->relative.i = 0 - s->time->relative.i;
 7862|      0|		s->time->relative.s = 0 - s->time->relative.s;
 7863|      0|		s->time->relative.weekday = 0 - s->time->relative.weekday;
 7864|      0|		if (s->time->relative.weekday == 0) {
  ------------------
  |  Branch (7864:7): [True: 0, False: 0]
  ------------------
 7865|      0|			s->time->relative.weekday = -7;
 7866|      0|		}
 7867|      0|		if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) {
  ------------------
  |  |   77|      0|#define TIMELIB_SPECIAL_WEEKDAY                   0x01
  ------------------
  |  Branch (7867:7): [True: 0, False: 0]
  |  Branch (7867:50): [True: 0, False: 0]
  ------------------
 7868|      0|			s->time->relative.special.amount = 0 - s->time->relative.special.amount;
 7869|      0|		}
 7870|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7871|      0|		return TIMELIB_AGO;
  ------------------
  |  |   76|      0|#define TIMELIB_AGO            301
  ------------------
 7872|      0|	}
 7873|      0|#line 7874 "ext/date/lib/parse_date.c"
 7874|     23|yy294:
 7875|     23|	YYDEBUG(294, *YYCURSOR);
 7876|     23|	yyaccept = 7;
 7877|     23|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     23|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     23|#define   YYCURSOR     cursor
  ------------------
 7878|     23|	if (yych <= '/') {
  ------------------
  |  Branch (7878:6): [True: 2, False: 21]
  ------------------
 7879|      2|		if (yych <= '(') {
  ------------------
  |  Branch (7879:7): [True: 2, False: 0]
  ------------------
 7880|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (7880:8): [True: 1, False: 1]
  ------------------
 7881|      1|				if (yych >= '\t') goto yy142;
  ------------------
  |  Branch (7881:9): [True: 0, False: 1]
  ------------------
 7882|      1|			} else {
 7883|      1|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (7883:9): [True: 1, False: 0]
  ------------------
 7884|      1|			}
 7885|      2|		} else {
 7886|      0|			if (yych <= ',') {
  ------------------
  |  Branch (7886:8): [True: 0, False: 0]
  ------------------
 7887|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (7887:9): [True: 0, False: 0]
  ------------------
 7888|      0|			} else {
 7889|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (7889:9): [True: 0, False: 0]
  ------------------
 7890|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (7890:9): [True: 0, False: 0]
  ------------------
 7891|      0|			}
 7892|      0|		}
 7893|     21|	} else {
 7894|     21|		if (yych <= 'Z') {
  ------------------
  |  Branch (7894:7): [True: 20, False: 1]
  ------------------
 7895|     20|			if (yych <= '@') {
  ------------------
  |  Branch (7895:8): [True: 19, False: 1]
  ------------------
 7896|     19|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (7896:9): [True: 19, False: 0]
  ------------------
 7897|     19|			} else {
 7898|      1|				if (yych == 'I') goto yy474;
  ------------------
  |  Branch (7898:9): [True: 1, False: 0]
  ------------------
 7899|      0|				goto yy472;
 7900|      1|			}
 7901|     20|		} else {
 7902|      1|			if (yych <= 'h') {
  ------------------
  |  Branch (7902:8): [True: 0, False: 1]
  ------------------
 7903|      0|				if (yych >= 'a') goto yy472;
  ------------------
  |  Branch (7903:9): [True: 0, False: 0]
  ------------------
 7904|      1|			} else {
 7905|      1|				if (yych <= 'i') goto yy474;
  ------------------
  |  Branch (7905:9): [True: 1, False: 0]
  ------------------
 7906|      0|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (7906:9): [True: 0, False: 0]
  ------------------
 7907|      0|			}
 7908|      1|		}
 7909|     21|	}
 7910|    115|yy295:
 7911|    115|	YYDEBUG(295, *YYCURSOR);
 7912|    115|#line 1889 "ext/date/lib/parse_date.re"
 7913|    115|	{
 7914|    115|		DEBUG_OUTPUT("monthtext");
 7915|    115|		TIMELIB_INIT;
  ------------------
  |  |  107|    115|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 7916|    115|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|    115|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|     65|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|     65|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     65|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     65|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     65|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     65|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     65|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     65|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|     65|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 65, False: 50]
  |  |  ------------------
  ------------------
 7917|     50|		s->time->m = timelib_lookup_month(&ptr);
 7918|     50|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     50|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     50|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     50|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     50|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     50|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     50|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     50|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     50|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7919|     50|		return TIMELIB_DATE_TEXT;
  ------------------
  |  |   61|     50|#define TIMELIB_DATE_TEXT      269
  ------------------
 7920|    115|	}
 7921|      0|#line 7922 "ext/date/lib/parse_date.c"
 7922|      4|yy296:
 7923|      4|	YYDEBUG(296, *YYCURSOR);
 7924|      4|	yyaccept = 7;
 7925|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 7926|      4|	if (yych <= '/') {
  ------------------
  |  Branch (7926:6): [True: 0, False: 4]
  ------------------
 7927|      0|		if (yych <= '(') {
  ------------------
  |  Branch (7927:7): [True: 0, False: 0]
  ------------------
 7928|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (7928:8): [True: 0, False: 0]
  ------------------
 7929|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (7929:9): [True: 0, False: 0]
  ------------------
 7930|      0|				goto yy142;
 7931|      0|			} else {
 7932|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (7932:9): [True: 0, False: 0]
  ------------------
 7933|      0|				goto yy295;
 7934|      0|			}
 7935|      0|		} else {
 7936|      0|			if (yych <= ',') {
  ------------------
  |  Branch (7936:8): [True: 0, False: 0]
  ------------------
 7937|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (7937:9): [True: 0, False: 0]
  ------------------
 7938|      0|				goto yy295;
 7939|      0|			} else {
 7940|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (7940:9): [True: 0, False: 0]
  ------------------
 7941|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (7941:9): [True: 0, False: 0]
  ------------------
 7942|      0|				goto yy295;
 7943|      0|			}
 7944|      0|		}
 7945|      4|	} else {
 7946|      4|		if (yych <= 'Z') {
  ------------------
  |  Branch (7946:7): [True: 4, False: 0]
  ------------------
 7947|      4|			if (yych <= '@') {
  ------------------
  |  Branch (7947:8): [True: 0, False: 4]
  ------------------
 7948|      0|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (7948:9): [True: 0, False: 0]
  ------------------
 7949|      0|				goto yy295;
 7950|      4|			} else {
 7951|      4|				if (yych == 'U') goto yy475;
  ------------------
  |  Branch (7951:9): [True: 0, False: 4]
  ------------------
 7952|      4|				goto yy472;
 7953|      4|			}
 7954|      4|		} else {
 7955|      0|			if (yych <= 't') {
  ------------------
  |  Branch (7955:8): [True: 0, False: 0]
  ------------------
 7956|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (7956:9): [True: 0, False: 0]
  ------------------
 7957|      0|				goto yy472;
 7958|      0|			} else {
 7959|      0|				if (yych <= 'u') goto yy475;
  ------------------
  |  Branch (7959:9): [True: 0, False: 0]
  ------------------
 7960|      0|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (7960:9): [True: 0, False: 0]
  ------------------
 7961|      0|				goto yy295;
 7962|      0|			}
 7963|      0|		}
 7964|      4|	}
 7965|     80|yy297:
 7966|     80|	YYDEBUG(297, *YYCURSOR);
 7967|     80|	++YYCURSOR;
  ------------------
  |  |   89|     80|#define   YYCURSOR     cursor
  ------------------
 7968|     80|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|     80|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|     80|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (7968:6): [True: 0, False: 80]
  ------------------
 7969|     80|	yych = *YYCURSOR;
  ------------------
  |  |   89|     80|#define   YYCURSOR     cursor
  ------------------
 7970|     80|	if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (7970:6): [True: 37, False: 43]
  ------------------
 7971|     37|		goto yy476;
 7972|     37|	}
 7973|     43|	goto yy59;
 7974|    196|yy298:
 7975|    196|	YYDEBUG(298, *YYCURSOR);
 7976|    196|	yyaccept = 2;
 7977|    196|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    196|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    196|#define   YYCURSOR     cursor
  ------------------
 7978|    196|	if (yych <= '/') {
  ------------------
  |  Branch (7978:6): [True: 35, False: 161]
  ------------------
 7979|     35|		if (yych <= ',') {
  ------------------
  |  Branch (7979:7): [True: 34, False: 1]
  ------------------
 7980|     34|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (7980:8): [True: 0, False: 34]
  ------------------
 7981|     34|			goto yy20;
 7982|     34|		} else {
 7983|      1|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (7983:8): [True: 0, False: 1]
  ------------------
 7984|      1|			goto yy297;
 7985|      1|		}
 7986|    161|	} else {
 7987|    161|		if (yych <= '^') {
  ------------------
  |  Branch (7987:7): [True: 34, False: 127]
  ------------------
 7988|     34|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (7988:8): [True: 23, False: 11]
  ------------------
 7989|     11|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (7989:8): [True: 9, False: 2]
  ------------------
 7990|      2|			goto yy20;
 7991|    127|		} else {
 7992|    127|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (7992:8): [True: 1, False: 126]
  ------------------
 7993|    126|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (7993:8): [True: 0, False: 126]
  ------------------
 7994|    126|			if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (7994:8): [True: 115, False: 11]
  ------------------
 7995|     11|			goto yy20;
 7996|    126|		}
 7997|    161|	}
 7998|      0|yy299:
 7999|      0|	YYDEBUG(299, *YYCURSOR);
 8000|      0|	yyaccept = 8;
 8001|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 8002|      0|	if (yych <= '/') {
  ------------------
  |  Branch (8002:6): [True: 0, False: 0]
  ------------------
 8003|      0|		if (yych <= ',') {
  ------------------
  |  Branch (8003:7): [True: 0, False: 0]
  ------------------
 8004|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8004:8): [True: 0, False: 0]
  ------------------
 8005|      0|			goto yy293;
 8006|      0|		} else {
 8007|      0|			if (yych == '.') goto yy293;
  ------------------
  |  Branch (8007:8): [True: 0, False: 0]
  ------------------
 8008|      0|			goto yy297;
 8009|      0|		}
 8010|      0|	} else {
 8011|      0|		if (yych <= '^') {
  ------------------
  |  Branch (8011:7): [True: 0, False: 0]
  ------------------
 8012|      0|			if (yych <= '@') goto yy293;
  ------------------
  |  Branch (8012:8): [True: 0, False: 0]
  ------------------
 8013|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8013:8): [True: 0, False: 0]
  ------------------
 8014|      0|			goto yy293;
 8015|      0|		} else {
 8016|      0|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (8016:8): [True: 0, False: 0]
  ------------------
 8017|      0|			if (yych <= '`') goto yy293;
  ------------------
  |  Branch (8017:8): [True: 0, False: 0]
  ------------------
 8018|      0|			if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8018:8): [True: 0, False: 0]
  ------------------
 8019|      0|			goto yy293;
 8020|      0|		}
 8021|      0|	}
 8022|     14|yy300:
 8023|     14|	YYDEBUG(300, *YYCURSOR);
 8024|     14|	yyaccept = 7;
 8025|     14|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     14|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
 8026|     14|	if (yych <= '9') {
  ------------------
  |  Branch (8026:6): [True: 4, False: 10]
  ------------------
 8027|      4|		if (yych <= '(') {
  ------------------
  |  Branch (8027:7): [True: 1, False: 3]
  ------------------
 8028|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (8028:8): [True: 0, False: 1]
  ------------------
 8029|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8029:9): [True: 0, False: 0]
  ------------------
 8030|      0|				goto yy142;
 8031|      1|			} else {
 8032|      1|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8032:9): [True: 0, False: 1]
  ------------------
 8033|      1|				goto yy295;
 8034|      1|			}
 8035|      3|		} else {
 8036|      3|			if (yych <= '-') {
  ------------------
  |  Branch (8036:8): [True: 0, False: 3]
  ------------------
 8037|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8037:9): [True: 0, False: 0]
  ------------------
 8038|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (8038:9): [True: 0, False: 0]
  ------------------
 8039|      0|				goto yy479;
 8040|      3|			} else {
 8041|      3|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (8041:9): [True: 0, False: 3]
  ------------------
 8042|      3|				goto yy142;
 8043|      3|			}
 8044|      3|		}
 8045|     10|	} else {
 8046|     10|		if (yych <= '^') {
  ------------------
  |  Branch (8046:7): [True: 0, False: 10]
  ------------------
 8047|      0|			if (yych <= 'H') {
  ------------------
  |  Branch (8047:8): [True: 0, False: 0]
  ------------------
 8048|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (8048:9): [True: 0, False: 0]
  ------------------
 8049|      0|				goto yy472;
 8050|      0|			} else {
 8051|      0|				if (yych <= 'I') goto yy474;
  ------------------
  |  Branch (8051:9): [True: 0, False: 0]
  ------------------
 8052|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8052:9): [True: 0, False: 0]
  ------------------
 8053|      0|				goto yy295;
 8054|      0|			}
 8055|     10|		} else {
 8056|     10|			if (yych <= 'h') {
  ------------------
  |  Branch (8056:8): [True: 2, False: 8]
  ------------------
 8057|      2|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (8057:9): [True: 0, False: 2]
  ------------------
 8058|      2|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8058:9): [True: 0, False: 2]
  ------------------
 8059|      2|				goto yy478;
 8060|      8|			} else {
 8061|      8|				if (yych <= 'i') goto yy480;
  ------------------
  |  Branch (8061:9): [True: 4, False: 4]
  ------------------
 8062|      4|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8062:9): [True: 0, False: 4]
  ------------------
 8063|      4|				goto yy295;
 8064|      4|			}
 8065|     10|		}
 8066|     10|	}
 8067|      0|yy301:
 8068|      0|	YYDEBUG(301, *YYCURSOR);
 8069|      0|	yyaccept = 7;
 8070|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 8071|      0|	if (yych <= '9') {
  ------------------
  |  Branch (8071:6): [True: 0, False: 0]
  ------------------
 8072|      0|		if (yych <= '(') {
  ------------------
  |  Branch (8072:7): [True: 0, False: 0]
  ------------------
 8073|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (8073:8): [True: 0, False: 0]
  ------------------
 8074|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8074:9): [True: 0, False: 0]
  ------------------
 8075|      0|				goto yy142;
 8076|      0|			} else {
 8077|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8077:9): [True: 0, False: 0]
  ------------------
 8078|      0|				goto yy295;
 8079|      0|			}
 8080|      0|		} else {
 8081|      0|			if (yych <= '-') {
  ------------------
  |  Branch (8081:8): [True: 0, False: 0]
  ------------------
 8082|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8082:9): [True: 0, False: 0]
  ------------------
 8083|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (8083:9): [True: 0, False: 0]
  ------------------
 8084|      0|				goto yy479;
 8085|      0|			} else {
 8086|      0|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (8086:9): [True: 0, False: 0]
  ------------------
 8087|      0|				goto yy142;
 8088|      0|			}
 8089|      0|		}
 8090|      0|	} else {
 8091|      0|		if (yych <= '^') {
  ------------------
  |  Branch (8091:7): [True: 0, False: 0]
  ------------------
 8092|      0|			if (yych <= 'T') {
  ------------------
  |  Branch (8092:8): [True: 0, False: 0]
  ------------------
 8093|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (8093:9): [True: 0, False: 0]
  ------------------
 8094|      0|				goto yy472;
 8095|      0|			} else {
 8096|      0|				if (yych <= 'U') goto yy475;
  ------------------
  |  Branch (8096:9): [True: 0, False: 0]
  ------------------
 8097|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8097:9): [True: 0, False: 0]
  ------------------
 8098|      0|				goto yy295;
 8099|      0|			}
 8100|      0|		} else {
 8101|      0|			if (yych <= 't') {
  ------------------
  |  Branch (8101:8): [True: 0, False: 0]
  ------------------
 8102|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (8102:9): [True: 0, False: 0]
  ------------------
 8103|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8103:9): [True: 0, False: 0]
  ------------------
 8104|      0|				goto yy478;
 8105|      0|			} else {
 8106|      0|				if (yych <= 'u') goto yy481;
  ------------------
  |  Branch (8106:9): [True: 0, False: 0]
  ------------------
 8107|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8107:9): [True: 0, False: 0]
  ------------------
 8108|      0|				goto yy295;
 8109|      0|			}
 8110|      0|		}
 8111|      0|	}
 8112|      1|yy302:
 8113|      1|	YYDEBUG(302, *YYCURSOR);
 8114|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 8115|      1|	if (yych <= 'K') {
  ------------------
  |  Branch (8115:6): [True: 1, False: 0]
  ------------------
 8116|      1|		if (yych <= ')') {
  ------------------
  |  Branch (8116:7): [True: 1, False: 0]
  ------------------
 8117|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8117:8): [True: 0, False: 1]
  ------------------
 8118|      1|			goto yy115;
 8119|      1|		} else {
 8120|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8120:8): [True: 0, False: 0]
  ------------------
 8121|      0|			if (yych <= 'J') goto yy472;
  ------------------
  |  Branch (8121:8): [True: 0, False: 0]
  ------------------
 8122|      0|			goto yy482;
 8123|      0|		}
 8124|      1|	} else {
 8125|      0|		if (yych <= 'j') {
  ------------------
  |  Branch (8125:7): [True: 0, False: 0]
  ------------------
 8126|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8126:8): [True: 0, False: 0]
  ------------------
 8127|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8127:8): [True: 0, False: 0]
  ------------------
 8128|      0|			goto yy472;
 8129|      0|		} else {
 8130|      0|			if (yych <= 'k') goto yy482;
  ------------------
  |  Branch (8130:8): [True: 0, False: 0]
  ------------------
 8131|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8131:8): [True: 0, False: 0]
  ------------------
 8132|      0|			goto yy20;
 8133|      0|		}
 8134|      0|	}
 8135|      0|yy303:
 8136|      0|	YYDEBUG(303, *YYCURSOR);
 8137|      0|	yyaccept = 2;
 8138|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 8139|      0|	if (yych <= 'J') {
  ------------------
  |  Branch (8139:6): [True: 0, False: 0]
  ------------------
 8140|      0|		if (yych <= '-') {
  ------------------
  |  Branch (8140:7): [True: 0, False: 0]
  ------------------
 8141|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8141:8): [True: 0, False: 0]
  ------------------
 8142|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8142:8): [True: 0, False: 0]
  ------------------
 8143|      0|			goto yy297;
 8144|      0|		} else {
 8145|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8145:8): [True: 0, False: 0]
  ------------------
 8146|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8146:8): [True: 0, False: 0]
  ------------------
 8147|      0|			goto yy472;
 8148|      0|		}
 8149|      0|	} else {
 8150|      0|		if (yych <= '_') {
  ------------------
  |  Branch (8150:7): [True: 0, False: 0]
  ------------------
 8151|      0|			if (yych <= 'K') goto yy482;
  ------------------
  |  Branch (8151:8): [True: 0, False: 0]
  ------------------
 8152|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8152:8): [True: 0, False: 0]
  ------------------
 8153|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8153:8): [True: 0, False: 0]
  ------------------
 8154|      0|			goto yy297;
 8155|      0|		} else {
 8156|      0|			if (yych <= 'j') {
  ------------------
  |  Branch (8156:8): [True: 0, False: 0]
  ------------------
 8157|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8157:9): [True: 0, False: 0]
  ------------------
 8158|      0|				goto yy478;
 8159|      0|			} else {
 8160|      0|				if (yych <= 'k') goto yy483;
  ------------------
  |  Branch (8160:9): [True: 0, False: 0]
  ------------------
 8161|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8161:9): [True: 0, False: 0]
  ------------------
 8162|      0|				goto yy20;
 8163|      0|			}
 8164|      0|		}
 8165|      0|	}
 8166|      4|yy304:
 8167|      4|	YYDEBUG(304, *YYCURSOR);
 8168|      4|	yyaccept = 7;
 8169|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 8170|      4|	if (yych <= '/') {
  ------------------
  |  Branch (8170:6): [True: 1, False: 3]
  ------------------
 8171|      1|		if (yych <= '(') {
  ------------------
  |  Branch (8171:7): [True: 1, False: 0]
  ------------------
 8172|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (8172:8): [True: 0, False: 1]
  ------------------
 8173|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8173:9): [True: 0, False: 0]
  ------------------
 8174|      0|				goto yy142;
 8175|      1|			} else {
 8176|      1|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8176:9): [True: 0, False: 1]
  ------------------
 8177|      1|				goto yy295;
 8178|      1|			}
 8179|      1|		} else {
 8180|      0|			if (yych <= ',') {
  ------------------
  |  Branch (8180:8): [True: 0, False: 0]
  ------------------
 8181|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8181:9): [True: 0, False: 0]
  ------------------
 8182|      0|				goto yy295;
 8183|      0|			} else {
 8184|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (8184:9): [True: 0, False: 0]
  ------------------
 8185|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (8185:9): [True: 0, False: 0]
  ------------------
 8186|      0|				goto yy295;
 8187|      0|			}
 8188|      0|		}
 8189|      3|	} else {
 8190|      3|		if (yych <= 'Z') {
  ------------------
  |  Branch (8190:7): [True: 1, False: 2]
  ------------------
 8191|      1|			if (yych <= '@') {
  ------------------
  |  Branch (8191:8): [True: 1, False: 0]
  ------------------
 8192|      1|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (8192:9): [True: 0, False: 1]
  ------------------
 8193|      1|				goto yy295;
 8194|      1|			} else {
 8195|      0|				if (yych == 'E') goto yy484;
  ------------------
  |  Branch (8195:9): [True: 0, False: 0]
  ------------------
 8196|      0|				goto yy472;
 8197|      0|			}
 8198|      2|		} else {
 8199|      2|			if (yych <= 'd') {
  ------------------
  |  Branch (8199:8): [True: 0, False: 2]
  ------------------
 8200|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8200:9): [True: 0, False: 0]
  ------------------
 8201|      0|				goto yy472;
 8202|      2|			} else {
 8203|      2|				if (yych <= 'e') goto yy484;
  ------------------
  |  Branch (8203:9): [True: 1, False: 1]
  ------------------
 8204|      1|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8204:9): [True: 1, False: 0]
  ------------------
 8205|      0|				goto yy295;
 8206|      1|			}
 8207|      2|		}
 8208|      3|	}
 8209|     39|yy305:
 8210|     39|	YYDEBUG(305, *YYCURSOR);
 8211|     39|	yyaccept = 7;
 8212|     39|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     39|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     39|#define   YYCURSOR     cursor
  ------------------
 8213|     39|	if (yych <= '9') {
  ------------------
  |  Branch (8213:6): [True: 21, False: 18]
  ------------------
 8214|     21|		if (yych <= '(') {
  ------------------
  |  Branch (8214:7): [True: 9, False: 12]
  ------------------
 8215|      9|			if (yych <= '\t') {
  ------------------
  |  Branch (8215:8): [True: 1, False: 8]
  ------------------
 8216|      1|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8216:9): [True: 1, False: 0]
  ------------------
 8217|      0|				goto yy142;
 8218|      8|			} else {
 8219|      8|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8219:9): [True: 1, False: 7]
  ------------------
 8220|      7|				goto yy295;
 8221|      8|			}
 8222|     12|		} else {
 8223|     12|			if (yych <= '-') {
  ------------------
  |  Branch (8223:8): [True: 0, False: 12]
  ------------------
 8224|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8224:9): [True: 0, False: 0]
  ------------------
 8225|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (8225:9): [True: 0, False: 0]
  ------------------
 8226|      0|				goto yy479;
 8227|     12|			} else {
 8228|     12|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (8228:9): [True: 0, False: 12]
  ------------------
 8229|     12|				goto yy142;
 8230|     12|			}
 8231|     12|		}
 8232|     21|	} else {
 8233|     18|		if (yych <= '^') {
  ------------------
  |  Branch (8233:7): [True: 18, False: 0]
  ------------------
 8234|     18|			if (yych <= 'D') {
  ------------------
  |  Branch (8234:8): [True: 10, False: 8]
  ------------------
 8235|     10|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (8235:9): [True: 10, False: 0]
  ------------------
 8236|      0|				goto yy472;
 8237|     10|			} else {
 8238|      8|				if (yych <= 'E') goto yy484;
  ------------------
  |  Branch (8238:9): [True: 1, False: 7]
  ------------------
 8239|      7|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8239:9): [True: 0, False: 7]
  ------------------
 8240|      7|				goto yy295;
 8241|      7|			}
 8242|     18|		} else {
 8243|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (8243:8): [True: 0, False: 0]
  ------------------
 8244|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (8244:9): [True: 0, False: 0]
  ------------------
 8245|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8245:9): [True: 0, False: 0]
  ------------------
 8246|      0|				goto yy478;
 8247|      0|			} else {
 8248|      0|				if (yych <= 'e') goto yy485;
  ------------------
  |  Branch (8248:9): [True: 0, False: 0]
  ------------------
 8249|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8249:9): [True: 0, False: 0]
  ------------------
 8250|      0|				goto yy295;
 8251|      0|			}
 8252|      0|		}
 8253|     18|	}
 8254|      3|yy306:
 8255|      3|	YYDEBUG(306, *YYCURSOR);
 8256|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 8257|      3|	if (yych <= 'H') {
  ------------------
  |  Branch (8257:6): [True: 3, False: 0]
  ------------------
 8258|      3|		if (yych <= ')') {
  ------------------
  |  Branch (8258:7): [True: 0, False: 3]
  ------------------
 8259|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8259:8): [True: 0, False: 0]
  ------------------
 8260|      0|			goto yy115;
 8261|      3|		} else {
 8262|      3|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8262:8): [True: 3, False: 0]
  ------------------
 8263|      0|			if (yych <= 'G') goto yy472;
  ------------------
  |  Branch (8263:8): [True: 0, False: 0]
  ------------------
 8264|      0|			goto yy486;
 8265|      0|		}
 8266|      3|	} else {
 8267|      0|		if (yych <= 'g') {
  ------------------
  |  Branch (8267:7): [True: 0, False: 0]
  ------------------
 8268|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8268:8): [True: 0, False: 0]
  ------------------
 8269|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8269:8): [True: 0, False: 0]
  ------------------
 8270|      0|			goto yy472;
 8271|      0|		} else {
 8272|      0|			if (yych <= 'h') goto yy486;
  ------------------
  |  Branch (8272:8): [True: 0, False: 0]
  ------------------
 8273|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8273:8): [True: 0, False: 0]
  ------------------
 8274|      0|			goto yy20;
 8275|      0|		}
 8276|      0|	}
 8277|      4|yy307:
 8278|      4|	YYDEBUG(307, *YYCURSOR);
 8279|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 8280|      4|	if (yych <= 'V') {
  ------------------
  |  Branch (8280:6): [True: 1, False: 3]
  ------------------
 8281|      1|		if (yych <= ')') {
  ------------------
  |  Branch (8281:7): [True: 1, False: 0]
  ------------------
 8282|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8282:8): [True: 0, False: 1]
  ------------------
 8283|      1|			goto yy115;
 8284|      1|		} else {
 8285|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8285:8): [True: 0, False: 0]
  ------------------
 8286|      0|			if (yych <= 'U') goto yy472;
  ------------------
  |  Branch (8286:8): [True: 0, False: 0]
  ------------------
 8287|      0|			goto yy487;
 8288|      0|		}
 8289|      3|	} else {
 8290|      3|		if (yych <= 'u') {
  ------------------
  |  Branch (8290:7): [True: 2, False: 1]
  ------------------
 8291|      2|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8291:8): [True: 0, False: 2]
  ------------------
 8292|      2|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8292:8): [True: 0, False: 2]
  ------------------
 8293|      2|			goto yy472;
 8294|      2|		} else {
 8295|      1|			if (yych <= 'v') goto yy487;
  ------------------
  |  Branch (8295:8): [True: 1, False: 0]
  ------------------
 8296|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8296:8): [True: 0, False: 0]
  ------------------
 8297|      0|			goto yy20;
 8298|      0|		}
 8299|      3|	}
 8300|      9|yy308:
 8301|      9|	YYDEBUG(308, *YYCURSOR);
 8302|      9|	yyaccept = 2;
 8303|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
 8304|      9|	if (yych <= 'G') {
  ------------------
  |  Branch (8304:6): [True: 0, False: 9]
  ------------------
 8305|      0|		if (yych <= '-') {
  ------------------
  |  Branch (8305:7): [True: 0, False: 0]
  ------------------
 8306|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8306:8): [True: 0, False: 0]
  ------------------
 8307|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8307:8): [True: 0, False: 0]
  ------------------
 8308|      0|			goto yy297;
 8309|      0|		} else {
 8310|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8310:8): [True: 0, False: 0]
  ------------------
 8311|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8311:8): [True: 0, False: 0]
  ------------------
 8312|      0|			goto yy472;
 8313|      0|		}
 8314|      9|	} else {
 8315|      9|		if (yych <= '_') {
  ------------------
  |  Branch (8315:7): [True: 0, False: 9]
  ------------------
 8316|      0|			if (yych <= 'H') goto yy486;
  ------------------
  |  Branch (8316:8): [True: 0, False: 0]
  ------------------
 8317|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8317:8): [True: 0, False: 0]
  ------------------
 8318|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8318:8): [True: 0, False: 0]
  ------------------
 8319|      0|			goto yy297;
 8320|      9|		} else {
 8321|      9|			if (yych <= 'g') {
  ------------------
  |  Branch (8321:8): [True: 0, False: 9]
  ------------------
 8322|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8322:9): [True: 0, False: 0]
  ------------------
 8323|      0|				goto yy478;
 8324|      9|			} else {
 8325|      9|				if (yych <= 'h') goto yy488;
  ------------------
  |  Branch (8325:9): [True: 9, False: 0]
  ------------------
 8326|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8326:9): [True: 0, False: 0]
  ------------------
 8327|      0|				goto yy20;
 8328|      0|			}
 8329|      9|		}
 8330|      9|	}
 8331|     15|yy309:
 8332|     15|	YYDEBUG(309, *YYCURSOR);
 8333|     15|	yyaccept = 2;
 8334|     15|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     15|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 8335|     15|	if (yych <= 'U') {
  ------------------
  |  Branch (8335:6): [True: 0, False: 15]
  ------------------
 8336|      0|		if (yych <= '-') {
  ------------------
  |  Branch (8336:7): [True: 0, False: 0]
  ------------------
 8337|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8337:8): [True: 0, False: 0]
  ------------------
 8338|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8338:8): [True: 0, False: 0]
  ------------------
 8339|      0|			goto yy297;
 8340|      0|		} else {
 8341|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8341:8): [True: 0, False: 0]
  ------------------
 8342|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8342:8): [True: 0, False: 0]
  ------------------
 8343|      0|			goto yy472;
 8344|      0|		}
 8345|     15|	} else {
 8346|     15|		if (yych <= '_') {
  ------------------
  |  Branch (8346:7): [True: 4, False: 11]
  ------------------
 8347|      4|			if (yych <= 'V') goto yy487;
  ------------------
  |  Branch (8347:8): [True: 0, False: 4]
  ------------------
 8348|      4|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8348:8): [True: 0, False: 4]
  ------------------
 8349|      4|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8349:8): [True: 0, False: 4]
  ------------------
 8350|      4|			goto yy297;
 8351|     11|		} else {
 8352|     11|			if (yych <= 'u') {
  ------------------
  |  Branch (8352:8): [True: 0, False: 11]
  ------------------
 8353|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8353:9): [True: 0, False: 0]
  ------------------
 8354|      0|				goto yy478;
 8355|     11|			} else {
 8356|     11|				if (yych <= 'v') goto yy489;
  ------------------
  |  Branch (8356:9): [True: 9, False: 2]
  ------------------
 8357|      2|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8357:9): [True: 0, False: 2]
  ------------------
 8358|      2|				goto yy20;
 8359|      2|			}
 8360|     11|		}
 8361|     15|	}
 8362|      1|yy310:
 8363|      1|	YYDEBUG(310, *YYCURSOR);
 8364|      1|	yyaccept = 7;
 8365|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 8366|      1|	if (yych <= '/') {
  ------------------
  |  Branch (8366:6): [True: 0, False: 1]
  ------------------
 8367|      0|		if (yych <= '(') {
  ------------------
  |  Branch (8367:7): [True: 0, False: 0]
  ------------------
 8368|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (8368:8): [True: 0, False: 0]
  ------------------
 8369|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8369:9): [True: 0, False: 0]
  ------------------
 8370|      0|				goto yy142;
 8371|      0|			} else {
 8372|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8372:9): [True: 0, False: 0]
  ------------------
 8373|      0|				goto yy295;
 8374|      0|			}
 8375|      0|		} else {
 8376|      0|			if (yych <= ',') {
  ------------------
  |  Branch (8376:8): [True: 0, False: 0]
  ------------------
 8377|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8377:9): [True: 0, False: 0]
  ------------------
 8378|      0|				goto yy295;
 8379|      0|			} else {
 8380|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (8380:9): [True: 0, False: 0]
  ------------------
 8381|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (8381:9): [True: 0, False: 0]
  ------------------
 8382|      0|				goto yy295;
 8383|      0|			}
 8384|      0|		}
 8385|      1|	} else {
 8386|      1|		if (yych <= 'Z') {
  ------------------
  |  Branch (8386:7): [True: 0, False: 1]
  ------------------
 8387|      0|			if (yych <= '@') {
  ------------------
  |  Branch (8387:8): [True: 0, False: 0]
  ------------------
 8388|      0|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (8388:9): [True: 0, False: 0]
  ------------------
 8389|      0|				goto yy295;
 8390|      0|			} else {
 8391|      0|				if (yych == 'R') goto yy490;
  ------------------
  |  Branch (8391:9): [True: 0, False: 0]
  ------------------
 8392|      0|				goto yy472;
 8393|      0|			}
 8394|      1|		} else {
 8395|      1|			if (yych <= 'q') {
  ------------------
  |  Branch (8395:8): [True: 0, False: 1]
  ------------------
 8396|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8396:9): [True: 0, False: 0]
  ------------------
 8397|      0|				goto yy472;
 8398|      1|			} else {
 8399|      1|				if (yych <= 'r') goto yy490;
  ------------------
  |  Branch (8399:9): [True: 0, False: 1]
  ------------------
 8400|      1|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8400:9): [True: 1, False: 0]
  ------------------
 8401|      0|				goto yy295;
 8402|      1|			}
 8403|      1|		}
 8404|      1|	}
 8405|      8|yy311:
 8406|      8|	YYDEBUG(311, *YYCURSOR);
 8407|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 8408|      8|	if (yych <= 'T') {
  ------------------
  |  Branch (8408:6): [True: 3, False: 5]
  ------------------
 8409|      3|		if (yych <= ')') {
  ------------------
  |  Branch (8409:7): [True: 3, False: 0]
  ------------------
 8410|      3|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8410:8): [True: 3, False: 0]
  ------------------
 8411|      0|			goto yy115;
 8412|      3|		} else {
 8413|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8413:8): [True: 0, False: 0]
  ------------------
 8414|      0|			if (yych <= 'S') goto yy472;
  ------------------
  |  Branch (8414:8): [True: 0, False: 0]
  ------------------
 8415|      0|			goto yy491;
 8416|      0|		}
 8417|      5|	} else {
 8418|      5|		if (yych <= 's') {
  ------------------
  |  Branch (8418:7): [True: 0, False: 5]
  ------------------
 8419|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8419:8): [True: 0, False: 0]
  ------------------
 8420|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8420:8): [True: 0, False: 0]
  ------------------
 8421|      0|			goto yy472;
 8422|      5|		} else {
 8423|      5|			if (yych <= 't') goto yy491;
  ------------------
  |  Branch (8423:8): [True: 3, False: 2]
  ------------------
 8424|      2|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8424:8): [True: 2, False: 0]
  ------------------
 8425|      0|			goto yy20;
 8426|      2|		}
 8427|      5|	}
 8428|      1|yy312:
 8429|      1|	YYDEBUG(312, *YYCURSOR);
 8430|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 8431|      1|	if (yych <= 'S') {
  ------------------
  |  Branch (8431:6): [True: 0, False: 1]
  ------------------
 8432|      0|		if (yych <= ')') {
  ------------------
  |  Branch (8432:7): [True: 0, False: 0]
  ------------------
 8433|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8433:8): [True: 0, False: 0]
  ------------------
 8434|      0|			goto yy115;
 8435|      0|		} else {
 8436|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8436:8): [True: 0, False: 0]
  ------------------
 8437|      0|			if (yych <= 'R') goto yy472;
  ------------------
  |  Branch (8437:8): [True: 0, False: 0]
  ------------------
 8438|      0|			goto yy492;
 8439|      0|		}
 8440|      1|	} else {
 8441|      1|		if (yych <= 'r') {
  ------------------
  |  Branch (8441:7): [True: 0, False: 1]
  ------------------
 8442|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8442:8): [True: 0, False: 0]
  ------------------
 8443|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8443:8): [True: 0, False: 0]
  ------------------
 8444|      0|			goto yy472;
 8445|      1|		} else {
 8446|      1|			if (yych <= 's') goto yy492;
  ------------------
  |  Branch (8446:8): [True: 1, False: 0]
  ------------------
 8447|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8447:8): [True: 0, False: 0]
  ------------------
 8448|      0|			goto yy20;
 8449|      0|		}
 8450|      1|	}
 8451|      2|yy313:
 8452|      2|	YYDEBUG(313, *YYCURSOR);
 8453|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 8454|      2|	if (yych <= 'R') {
  ------------------
  |  Branch (8454:6): [True: 2, False: 0]
  ------------------
 8455|      2|		if (yych <= ')') {
  ------------------
  |  Branch (8455:7): [True: 2, False: 0]
  ------------------
 8456|      2|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8456:8): [True: 2, False: 0]
  ------------------
 8457|      0|			goto yy115;
 8458|      2|		} else {
 8459|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8459:8): [True: 0, False: 0]
  ------------------
 8460|      0|			if (yych <= 'Q') goto yy472;
  ------------------
  |  Branch (8460:8): [True: 0, False: 0]
  ------------------
 8461|      0|			goto yy493;
 8462|      0|		}
 8463|      2|	} else {
 8464|      0|		if (yych <= 'q') {
  ------------------
  |  Branch (8464:7): [True: 0, False: 0]
  ------------------
 8465|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8465:8): [True: 0, False: 0]
  ------------------
 8466|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8466:8): [True: 0, False: 0]
  ------------------
 8467|      0|			goto yy472;
 8468|      0|		} else {
 8469|      0|			if (yych <= 'r') goto yy493;
  ------------------
  |  Branch (8469:8): [True: 0, False: 0]
  ------------------
 8470|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8470:8): [True: 0, False: 0]
  ------------------
 8471|      0|			goto yy20;
 8472|      0|		}
 8473|      0|	}
 8474|     18|yy314:
 8475|     18|	YYDEBUG(314, *YYCURSOR);
 8476|     18|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     18|#define   YYCURSOR     cursor
  ------------------
 8477|     18|	if (yych <= 'D') {
  ------------------
  |  Branch (8477:6): [True: 7, False: 11]
  ------------------
 8478|      7|		if (yych <= ')') {
  ------------------
  |  Branch (8478:7): [True: 5, False: 2]
  ------------------
 8479|      5|			if (yych >= ')') goto yy115;
  ------------------
  |  Branch (8479:8): [True: 0, False: 5]
  ------------------
 8480|      5|		} else {
 8481|      2|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (8481:8): [True: 2, False: 0]
  ------------------
 8482|      0|			if (yych <= 'C') goto yy472;
  ------------------
  |  Branch (8482:8): [True: 0, False: 0]
  ------------------
 8483|      0|			goto yy494;
 8484|      0|		}
 8485|     11|	} else {
 8486|     11|		if (yych <= 'c') {
  ------------------
  |  Branch (8486:7): [True: 0, False: 11]
  ------------------
 8487|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8487:8): [True: 0, False: 0]
  ------------------
 8488|      0|			if (yych >= 'a') goto yy472;
  ------------------
  |  Branch (8488:8): [True: 0, False: 0]
  ------------------
 8489|     11|		} else {
 8490|     11|			if (yych <= 'd') goto yy494;
  ------------------
  |  Branch (8490:8): [True: 8, False: 3]
  ------------------
 8491|      3|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8491:8): [True: 0, False: 3]
  ------------------
 8492|      3|		}
 8493|     11|	}
 8494|     21|yy315:
 8495|     21|	YYDEBUG(315, *YYCURSOR);
 8496|     21|#line 1830 "ext/date/lib/parse_date.re"
 8497|     21|	{
 8498|     21|		const timelib_relunit* relunit;
 8499|     21|		DEBUG_OUTPUT("daytext");
 8500|     21|		TIMELIB_INIT;
  ------------------
  |  |  107|     21|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 8501|     21|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|     21|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
 8502|     21|		TIMELIB_HAVE_WEEKDAY_RELATIVE();
  ------------------
  |  |  103|     21|#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
  ------------------
 8503|     21|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|     21|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
 8504|     21|		relunit = timelib_lookup_relunit(&ptr);
 8505|     21|		s->time->relative.weekday = relunit->multiplier;
 8506|     21|		if (s->time->relative.weekday_behavior != 2) {
  ------------------
  |  Branch (8506:7): [True: 21, False: 0]
  ------------------
 8507|     21|			s->time->relative.weekday_behavior = 1;
 8508|     21|		}
 8509|       |
 8510|     21|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     21|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     21|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     21|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     21|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     21|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     21|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     21|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     21|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8511|     21|		return TIMELIB_WEEKDAY;
  ------------------
  |  |   73|     21|#define TIMELIB_WEEKDAY  7
  ------------------
 8512|     18|	}
 8513|      0|#line 8514 "ext/date/lib/parse_date.c"
 8514|     10|yy316:
 8515|     10|	YYDEBUG(316, *YYCURSOR);
 8516|     10|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
 8517|     10|	if (yych <= 'N') {
  ------------------
  |  Branch (8517:6): [True: 10, False: 0]
  ------------------
 8518|     10|		if (yych <= ')') {
  ------------------
  |  Branch (8518:7): [True: 1, False: 9]
  ------------------
 8519|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8519:8): [True: 1, False: 0]
  ------------------
 8520|      0|			goto yy115;
 8521|      9|		} else {
 8522|      9|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8522:8): [True: 4, False: 5]
  ------------------
 8523|      5|			if (yych <= 'M') goto yy472;
  ------------------
  |  Branch (8523:8): [True: 5, False: 0]
  ------------------
 8524|      0|			goto yy495;
 8525|      5|		}
 8526|     10|	} else {
 8527|      0|		if (yych <= 'm') {
  ------------------
  |  Branch (8527:7): [True: 0, False: 0]
  ------------------
 8528|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8528:8): [True: 0, False: 0]
  ------------------
 8529|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8529:8): [True: 0, False: 0]
  ------------------
 8530|      0|			goto yy472;
 8531|      0|		} else {
 8532|      0|			if (yych <= 'n') goto yy495;
  ------------------
  |  Branch (8532:8): [True: 0, False: 0]
  ------------------
 8533|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8533:8): [True: 0, False: 0]
  ------------------
 8534|      0|			goto yy20;
 8535|      0|		}
 8536|      0|	}
 8537|      6|yy317:
 8538|      6|	YYDEBUG(317, *YYCURSOR);
 8539|      6|	yyaccept = 7;
 8540|      6|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      6|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 8541|      6|	if (yych <= '9') {
  ------------------
  |  Branch (8541:6): [True: 2, False: 4]
  ------------------
 8542|      2|		if (yych <= '(') {
  ------------------
  |  Branch (8542:7): [True: 0, False: 2]
  ------------------
 8543|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (8543:8): [True: 0, False: 0]
  ------------------
 8544|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8544:9): [True: 0, False: 0]
  ------------------
 8545|      0|				goto yy142;
 8546|      0|			} else {
 8547|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8547:9): [True: 0, False: 0]
  ------------------
 8548|      0|				goto yy295;
 8549|      0|			}
 8550|      2|		} else {
 8551|      2|			if (yych <= '-') {
  ------------------
  |  Branch (8551:8): [True: 0, False: 2]
  ------------------
 8552|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8552:9): [True: 0, False: 0]
  ------------------
 8553|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (8553:9): [True: 0, False: 0]
  ------------------
 8554|      0|				goto yy479;
 8555|      2|			} else {
 8556|      2|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (8556:9): [True: 0, False: 2]
  ------------------
 8557|      2|				goto yy142;
 8558|      2|			}
 8559|      2|		}
 8560|      4|	} else {
 8561|      4|		if (yych <= '^') {
  ------------------
  |  Branch (8561:7): [True: 3, False: 1]
  ------------------
 8562|      3|			if (yych <= 'Q') {
  ------------------
  |  Branch (8562:8): [True: 1, False: 2]
  ------------------
 8563|      1|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (8563:9): [True: 0, False: 1]
  ------------------
 8564|      1|				goto yy472;
 8565|      2|			} else {
 8566|      2|				if (yych <= 'R') goto yy490;
  ------------------
  |  Branch (8566:9): [True: 1, False: 1]
  ------------------
 8567|      1|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8567:9): [True: 1, False: 0]
  ------------------
 8568|      0|				goto yy295;
 8569|      1|			}
 8570|      3|		} else {
 8571|      1|			if (yych <= 'q') {
  ------------------
  |  Branch (8571:8): [True: 0, False: 1]
  ------------------
 8572|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (8572:9): [True: 0, False: 0]
  ------------------
 8573|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8573:9): [True: 0, False: 0]
  ------------------
 8574|      0|				goto yy478;
 8575|      1|			} else {
 8576|      1|				if (yych <= 'r') goto yy496;
  ------------------
  |  Branch (8576:9): [True: 1, False: 0]
  ------------------
 8577|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8577:9): [True: 0, False: 0]
  ------------------
 8578|      0|				goto yy295;
 8579|      0|			}
 8580|      1|		}
 8581|      4|	}
 8582|      3|yy318:
 8583|      3|	YYDEBUG(318, *YYCURSOR);
 8584|      3|	yyaccept = 2;
 8585|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 8586|      3|	if (yych <= 'S') {
  ------------------
  |  Branch (8586:6): [True: 1, False: 2]
  ------------------
 8587|      1|		if (yych <= '-') {
  ------------------
  |  Branch (8587:7): [True: 1, False: 0]
  ------------------
 8588|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8588:8): [True: 0, False: 1]
  ------------------
 8589|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8589:8): [True: 1, False: 0]
  ------------------
 8590|      0|			goto yy297;
 8591|      1|		} else {
 8592|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8592:8): [True: 0, False: 0]
  ------------------
 8593|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8593:8): [True: 0, False: 0]
  ------------------
 8594|      0|			goto yy472;
 8595|      0|		}
 8596|      2|	} else {
 8597|      2|		if (yych <= '_') {
  ------------------
  |  Branch (8597:7): [True: 0, False: 2]
  ------------------
 8598|      0|			if (yych <= 'T') goto yy491;
  ------------------
  |  Branch (8598:8): [True: 0, False: 0]
  ------------------
 8599|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8599:8): [True: 0, False: 0]
  ------------------
 8600|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8600:8): [True: 0, False: 0]
  ------------------
 8601|      0|			goto yy297;
 8602|      2|		} else {
 8603|      2|			if (yych <= 's') {
  ------------------
  |  Branch (8603:8): [True: 0, False: 2]
  ------------------
 8604|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8604:9): [True: 0, False: 0]
  ------------------
 8605|      0|				goto yy478;
 8606|      2|			} else {
 8607|      2|				if (yych <= 't') goto yy497;
  ------------------
  |  Branch (8607:9): [True: 2, False: 0]
  ------------------
 8608|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8608:9): [True: 0, False: 0]
  ------------------
 8609|      0|				goto yy20;
 8610|      0|			}
 8611|      2|		}
 8612|      2|	}
 8613|      1|yy319:
 8614|      1|	YYDEBUG(319, *YYCURSOR);
 8615|      1|	yyaccept = 2;
 8616|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 8617|      1|	if (yych <= 'R') {
  ------------------
  |  Branch (8617:6): [True: 0, False: 1]
  ------------------
 8618|      0|		if (yych <= '-') {
  ------------------
  |  Branch (8618:7): [True: 0, False: 0]
  ------------------
 8619|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8619:8): [True: 0, False: 0]
  ------------------
 8620|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8620:8): [True: 0, False: 0]
  ------------------
 8621|      0|			goto yy297;
 8622|      0|		} else {
 8623|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8623:8): [True: 0, False: 0]
  ------------------
 8624|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8624:8): [True: 0, False: 0]
  ------------------
 8625|      0|			goto yy472;
 8626|      0|		}
 8627|      1|	} else {
 8628|      1|		if (yych <= '_') {
  ------------------
  |  Branch (8628:7): [True: 0, False: 1]
  ------------------
 8629|      0|			if (yych <= 'S') goto yy492;
  ------------------
  |  Branch (8629:8): [True: 0, False: 0]
  ------------------
 8630|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8630:8): [True: 0, False: 0]
  ------------------
 8631|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8631:8): [True: 0, False: 0]
  ------------------
 8632|      0|			goto yy297;
 8633|      1|		} else {
 8634|      1|			if (yych <= 'r') {
  ------------------
  |  Branch (8634:8): [True: 0, False: 1]
  ------------------
 8635|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8635:9): [True: 0, False: 0]
  ------------------
 8636|      0|				goto yy478;
 8637|      1|			} else {
 8638|      1|				if (yych <= 's') goto yy498;
  ------------------
  |  Branch (8638:9): [True: 1, False: 0]
  ------------------
 8639|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8639:9): [True: 0, False: 0]
  ------------------
 8640|      0|				goto yy20;
 8641|      0|			}
 8642|      1|		}
 8643|      1|	}
 8644|     32|yy320:
 8645|     32|	YYDEBUG(320, *YYCURSOR);
 8646|     32|	yyaccept = 2;
 8647|     32|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     32|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     32|#define   YYCURSOR     cursor
  ------------------
 8648|     32|	if (yych <= 'Q') {
  ------------------
  |  Branch (8648:6): [True: 23, False: 9]
  ------------------
 8649|     23|		if (yych <= '-') {
  ------------------
  |  Branch (8649:7): [True: 14, False: 9]
  ------------------
 8650|     14|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8650:8): [True: 0, False: 14]
  ------------------
 8651|     14|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8651:8): [True: 14, False: 0]
  ------------------
 8652|      0|			goto yy297;
 8653|     14|		} else {
 8654|      9|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8654:8): [True: 0, False: 9]
  ------------------
 8655|      9|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8655:8): [True: 2, False: 7]
  ------------------
 8656|      7|			goto yy472;
 8657|      9|		}
 8658|     23|	} else {
 8659|      9|		if (yych <= '_') {
  ------------------
  |  Branch (8659:7): [True: 0, False: 9]
  ------------------
 8660|      0|			if (yych <= 'R') goto yy493;
  ------------------
  |  Branch (8660:8): [True: 0, False: 0]
  ------------------
 8661|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8661:8): [True: 0, False: 0]
  ------------------
 8662|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8662:8): [True: 0, False: 0]
  ------------------
 8663|      0|			goto yy297;
 8664|      9|		} else {
 8665|      9|			if (yych <= 'q') {
  ------------------
  |  Branch (8665:8): [True: 2, False: 7]
  ------------------
 8666|      2|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8666:9): [True: 0, False: 2]
  ------------------
 8667|      2|				goto yy478;
 8668|      7|			} else {
 8669|      7|				if (yych <= 'r') goto yy499;
  ------------------
  |  Branch (8669:9): [True: 7, False: 0]
  ------------------
 8670|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8670:9): [True: 0, False: 0]
  ------------------
 8671|      0|				goto yy20;
 8672|      0|			}
 8673|      9|		}
 8674|      9|	}
 8675|     21|yy321:
 8676|     21|	YYDEBUG(321, *YYCURSOR);
 8677|     21|	yyaccept = 9;
 8678|     21|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     21|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     21|#define   YYCURSOR     cursor
  ------------------
 8679|     21|	if (yych <= 'C') {
  ------------------
  |  Branch (8679:6): [True: 0, False: 21]
  ------------------
 8680|      0|		if (yych <= '-') {
  ------------------
  |  Branch (8680:7): [True: 0, False: 0]
  ------------------
 8681|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8681:8): [True: 0, False: 0]
  ------------------
 8682|      0|			if (yych <= ',') goto yy315;
  ------------------
  |  Branch (8682:8): [True: 0, False: 0]
  ------------------
 8683|      0|			goto yy297;
 8684|      0|		} else {
 8685|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8685:8): [True: 0, False: 0]
  ------------------
 8686|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (8686:8): [True: 0, False: 0]
  ------------------
 8687|      0|			goto yy472;
 8688|      0|		}
 8689|     21|	} else {
 8690|     21|		if (yych <= '_') {
  ------------------
  |  Branch (8690:7): [True: 5, False: 16]
  ------------------
 8691|      5|			if (yych <= 'D') goto yy494;
  ------------------
  |  Branch (8691:8): [True: 0, False: 5]
  ------------------
 8692|      5|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8692:8): [True: 5, False: 0]
  ------------------
 8693|      0|			if (yych <= '^') goto yy315;
  ------------------
  |  Branch (8693:8): [True: 0, False: 0]
  ------------------
 8694|      0|			goto yy297;
 8695|     16|		} else {
 8696|     16|			if (yych <= 'c') {
  ------------------
  |  Branch (8696:8): [True: 0, False: 16]
  ------------------
 8697|      0|				if (yych <= '`') goto yy315;
  ------------------
  |  Branch (8697:9): [True: 0, False: 0]
  ------------------
 8698|      0|				goto yy478;
 8699|     16|			} else {
 8700|     16|				if (yych <= 'd') goto yy500;
  ------------------
  |  Branch (8700:9): [True: 5, False: 11]
  ------------------
 8701|     11|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8701:9): [True: 8, False: 3]
  ------------------
 8702|      3|				goto yy315;
 8703|     11|			}
 8704|     16|		}
 8705|     21|	}
 8706|      1|yy322:
 8707|      1|	YYDEBUG(322, *YYCURSOR);
 8708|      1|	yyaccept = 2;
 8709|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 8710|      1|	if (yych <= 'M') {
  ------------------
  |  Branch (8710:6): [True: 1, False: 0]
  ------------------
 8711|      1|		if (yych <= '-') {
  ------------------
  |  Branch (8711:7): [True: 1, False: 0]
  ------------------
 8712|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8712:8): [True: 0, False: 1]
  ------------------
 8713|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (8713:8): [True: 1, False: 0]
  ------------------
 8714|      0|			goto yy297;
 8715|      1|		} else {
 8716|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (8716:8): [True: 0, False: 0]
  ------------------
 8717|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8717:8): [True: 0, False: 0]
  ------------------
 8718|      0|			goto yy472;
 8719|      0|		}
 8720|      1|	} else {
 8721|      0|		if (yych <= '_') {
  ------------------
  |  Branch (8721:7): [True: 0, False: 0]
  ------------------
 8722|      0|			if (yych <= 'N') goto yy495;
  ------------------
  |  Branch (8722:8): [True: 0, False: 0]
  ------------------
 8723|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8723:8): [True: 0, False: 0]
  ------------------
 8724|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (8724:8): [True: 0, False: 0]
  ------------------
 8725|      0|			goto yy297;
 8726|      0|		} else {
 8727|      0|			if (yych <= 'm') {
  ------------------
  |  Branch (8727:8): [True: 0, False: 0]
  ------------------
 8728|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8728:9): [True: 0, False: 0]
  ------------------
 8729|      0|				goto yy478;
 8730|      0|			} else {
 8731|      0|				if (yych <= 'n') goto yy501;
  ------------------
  |  Branch (8731:9): [True: 0, False: 0]
  ------------------
 8732|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (8732:9): [True: 0, False: 0]
  ------------------
 8733|      0|				goto yy20;
 8734|      0|			}
 8735|      0|		}
 8736|      0|	}
 8737|      3|yy323:
 8738|      3|	YYDEBUG(323, *YYCURSOR);
 8739|      3|	yyaccept = 2;
 8740|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 8741|      3|	if (yych <= ',') {
  ------------------
  |  Branch (8741:6): [True: 2, False: 1]
  ------------------
 8742|      2|		if (yych <= ')') {
  ------------------
  |  Branch (8742:7): [True: 0, False: 2]
  ------------------
 8743|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (8743:8): [True: 0, False: 0]
  ------------------
 8744|      0|			goto yy115;
 8745|      2|		} else {
 8746|      2|			if (yych == '+') goto yy502;
  ------------------
  |  Branch (8746:8): [True: 1, False: 1]
  ------------------
 8747|      1|			goto yy20;
 8748|      2|		}
 8749|      2|	} else {
 8750|      1|		if (yych <= 'Z') {
  ------------------
  |  Branch (8750:7): [True: 0, False: 1]
  ------------------
 8751|      0|			if (yych <= '-') goto yy502;
  ------------------
  |  Branch (8751:8): [True: 0, False: 0]
  ------------------
 8752|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (8752:8): [True: 0, False: 0]
  ------------------
 8753|      0|			goto yy472;
 8754|      1|		} else {
 8755|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8755:8): [True: 0, False: 1]
  ------------------
 8756|      1|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8756:8): [True: 0, False: 1]
  ------------------
 8757|      1|			goto yy20;
 8758|      1|		}
 8759|      1|	}
 8760|      5|yy324:
 8761|      5|	YYDEBUG(324, *YYCURSOR);
 8762|      5|	yyaccept = 10;
 8763|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 8764|      5|	if (yych <= '9') {
  ------------------
  |  Branch (8764:6): [True: 4, False: 1]
  ------------------
 8765|      4|		if (yych <= '0') {
  ------------------
  |  Branch (8765:7): [True: 4, False: 0]
  ------------------
 8766|      4|			if (yych >= '0') goto yy503;
  ------------------
  |  Branch (8766:8): [True: 0, False: 4]
  ------------------
 8767|      4|		} else {
 8768|      0|			if (yych <= '1') goto yy504;
  ------------------
  |  Branch (8768:8): [True: 0, False: 0]
  ------------------
 8769|      0|			if (yych <= '2') goto yy505;
  ------------------
  |  Branch (8769:8): [True: 0, False: 0]
  ------------------
 8770|      0|			goto yy506;
 8771|      0|		}
 8772|      4|	} else {
 8773|      1|		if (yych <= 'T') {
  ------------------
  |  Branch (8773:7): [True: 1, False: 0]
  ------------------
 8774|      1|			if (yych >= 'T') goto yy507;
  ------------------
  |  Branch (8774:8): [True: 0, False: 1]
  ------------------
 8775|      1|		} else {
 8776|      0|			if (yych == 't') goto yy507;
  ------------------
  |  Branch (8776:8): [True: 0, False: 0]
  ------------------
 8777|      0|		}
 8778|      1|	}
 8779|     27|yy325:
 8780|     27|	YYDEBUG(325, *YYCURSOR);
 8781|     27|#line 1632 "ext/date/lib/parse_date.re"
 8782|     27|	{
 8783|     27|		int length = 0;
 8784|     27|		DEBUG_OUTPUT("datetextual | datenoyear");
 8785|     27|		TIMELIB_INIT;
  ------------------
  |  |  107|     27|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 8786|     27|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     27|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|     15|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|     15|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     15|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     15|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     15|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     15|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     15|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     15|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|     15|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 15, False: 12]
  |  |  ------------------
  ------------------
 8787|     12|		s->time->m = timelib_get_month(&ptr);
 8788|     12|		s->time->d = timelib_get_nr(&ptr, 2);
 8789|     12|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
 8790|     12|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|     12|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|     12|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|     12|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 8, False: 4]
  |  |  |  Branch (112:32): [True: 0, False: 4]
  |  |  ------------------
  |  |  113|      8|	/*	(x) = 0; */          \
  |  |  114|      8|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 4, False: 0]
  |  |  ------------------
  |  |  115|      4|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 4, False: 0]
  |  |  ------------------
  |  |  116|      4|			(x) += 2000;     \
  |  |  117|      4|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      4|	}                        \
  |  |  121|     12|}
  ------------------
 8791|     12|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     12|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     12|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     12|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     12|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8792|     12|		return TIMELIB_DATE_TEXT;
  ------------------
  |  |   61|     12|#define TIMELIB_DATE_TEXT      269
  ------------------
 8793|     27|	}
 8794|      0|#line 8795 "ext/date/lib/parse_date.c"
 8795|     30|yy326:
 8796|     30|	YYDEBUG(326, *YYCURSOR);
 8797|     30|	yyaccept = 10;
 8798|     30|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|     30|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
 8799|     30|	if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
  ------------------
  |  |   90|     30|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (8799:6): [True: 0, False: 30]
  ------------------
 8800|     30|	yych = *YYCURSOR;
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
 8801|     41|yy327:
 8802|     41|	YYDEBUG(327, *YYCURSOR);
 8803|     41|	if (yybm[0+yych] & 32) {
  ------------------
  |  Branch (8803:6): [True: 3, False: 38]
  ------------------
 8804|      3|		goto yy326;
 8805|      3|	}
 8806|     38|	if (yych <= '2') {
  ------------------
  |  Branch (8806:6): [True: 25, False: 13]
  ------------------
 8807|     25|		if (yych <= '/') goto yy325;
  ------------------
  |  Branch (8807:7): [True: 2, False: 23]
  ------------------
 8808|     23|		if (yych <= '0') goto yy508;
  ------------------
  |  Branch (8808:7): [True: 17, False: 6]
  ------------------
 8809|      6|		if (yych <= '1') goto yy509;
  ------------------
  |  Branch (8809:7): [True: 4, False: 2]
  ------------------
 8810|      2|		goto yy510;
 8811|     13|	} else {
 8812|     13|		if (yych <= '9') goto yy511;
  ------------------
  |  Branch (8812:7): [True: 3, False: 10]
  ------------------
 8813|     10|		if (yych == 'T') goto yy507;
  ------------------
  |  Branch (8813:7): [True: 0, False: 10]
  ------------------
 8814|     10|		goto yy325;
 8815|     10|	}
 8816|     30|yy328:
 8817|     30|	YYDEBUG(328, *YYCURSOR);
 8818|     30|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
 8819|     30|	if (yych <= '9') {
  ------------------
  |  Branch (8819:6): [True: 25, False: 5]
  ------------------
 8820|     25|		if (yych <= ' ') {
  ------------------
  |  Branch (8820:7): [True: 4, False: 21]
  ------------------
 8821|      4|			if (yych <= 0x08) {
  ------------------
  |  Branch (8821:8): [True: 1, False: 3]
  ------------------
 8822|      1|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (8822:9): [True: 1, False: 0]
  ------------------
 8823|      0|				goto yy59;
 8824|      3|			} else {
 8825|      3|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (8825:9): [True: 0, False: 3]
  ------------------
 8826|      3|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (8826:9): [True: 2, False: 1]
  ------------------
 8827|      1|				goto yy326;
 8828|      3|			}
 8829|     21|		} else {
 8830|     21|			if (yych <= '-') {
  ------------------
  |  Branch (8830:8): [True: 1, False: 20]
  ------------------
 8831|      1|				if (yych == ',') goto yy326;
  ------------------
  |  Branch (8831:9): [True: 0, False: 1]
  ------------------
 8832|      1|				goto yy59;
 8833|     20|			} else {
 8834|     20|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (8834:9): [True: 10, False: 10]
  ------------------
 8835|     10|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (8835:9): [True: 0, False: 10]
  ------------------
 8836|     10|				goto yy512;
 8837|     10|			}
 8838|     21|		}
 8839|     25|	} else {
 8840|      5|		if (yych <= 'm') {
  ------------------
  |  Branch (8840:7): [True: 4, False: 1]
  ------------------
 8841|      4|			if (yych <= 'd') {
  ------------------
  |  Branch (8841:8): [True: 3, False: 1]
  ------------------
 8842|      3|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (8842:9): [True: 3, False: 0]
  ------------------
 8843|      0|				goto yy326;
 8844|      3|			} else {
 8845|      1|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (8845:9): [True: 0, False: 1]
  ------------------
 8846|      1|				goto yy59;
 8847|      1|			}
 8848|      4|		} else {
 8849|      1|			if (yych <= 'r') {
  ------------------
  |  Branch (8849:8): [True: 1, False: 0]
  ------------------
 8850|      1|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (8850:9): [True: 0, False: 1]
  ------------------
 8851|      1|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (8851:9): [True: 1, False: 0]
  ------------------
 8852|      1|			} else {
 8853|      0|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (8853:9): [True: 0, False: 0]
  ------------------
 8854|      0|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (8854:9): [True: 0, False: 0]
  ------------------
 8855|      0|				goto yy59;
 8856|      0|			}
 8857|      1|		}
 8858|      5|	}
 8859|      9|yy329:
 8860|      9|	YYDEBUG(329, *YYCURSOR);
 8861|      9|	yyaccept = 10;
 8862|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
 8863|      9|	if (yych == 'd') goto yy513;
  ------------------
  |  Branch (8863:6): [True: 0, False: 9]
  ------------------
 8864|      9|	goto yy327;
 8865|      9|yy330:
 8866|      2|	YYDEBUG(330, *YYCURSOR);
 8867|      2|	yyaccept = 10;
 8868|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 8869|      2|	if (yych == 't') goto yy513;
  ------------------
  |  Branch (8869:6): [True: 0, False: 2]
  ------------------
 8870|      2|	goto yy327;
 8871|      2|yy331:
 8872|      0|	YYDEBUG(331, *YYCURSOR);
 8873|      0|	yyaccept = 10;
 8874|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 8875|      0|	if (yych == 'h') goto yy513;
  ------------------
  |  Branch (8875:6): [True: 0, False: 0]
  ------------------
 8876|      0|	goto yy327;
 8877|     15|yy332:
 8878|     15|	YYDEBUG(332, *YYCURSOR);
 8879|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 8880|     15|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (8880:6): [True: 10, False: 5]
  ------------------
 8881|      5|	if (yych <= '9') goto yy512;
  ------------------
  |  Branch (8881:6): [True: 4, False: 1]
  ------------------
 8882|      1|	goto yy59;
 8883|     41|yy333:
 8884|     41|	YYDEBUG(333, *YYCURSOR);
 8885|     41|	yyaccept = 2;
 8886|     41|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     41|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     41|#define   YYCURSOR     cursor
  ------------------
 8887|     41|	if (yych <= ',') {
  ------------------
  |  Branch (8887:6): [True: 1, False: 40]
  ------------------
 8888|      1|		if (yych <= 0x1F) {
  ------------------
  |  Branch (8888:7): [True: 1, False: 0]
  ------------------
 8889|      1|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (8889:8): [True: 0, False: 1]
  ------------------
 8890|      1|			goto yy20;
 8891|      1|		} else {
 8892|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (8892:8): [True: 0, False: 0]
  ------------------
 8893|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (8893:8): [True: 0, False: 0]
  ------------------
 8894|      0|			goto yy20;
 8895|      0|		}
 8896|     40|	} else {
 8897|     40|		if (yych <= '@') {
  ------------------
  |  Branch (8897:7): [True: 6, False: 34]
  ------------------
 8898|      6|			if (yych == '/') goto yy20;
  ------------------
  |  Branch (8898:8): [True: 0, False: 6]
  ------------------
 8899|      6|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (8899:8): [True: 6, False: 0]
  ------------------
 8900|      0|			goto yy20;
 8901|     34|		} else {
 8902|     34|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (8902:8): [True: 32, False: 2]
  ------------------
 8903|      2|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (8903:8): [True: 0, False: 2]
  ------------------
 8904|      2|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8904:8): [True: 0, False: 2]
  ------------------
 8905|      2|			goto yy20;
 8906|      2|		}
 8907|     40|	}
 8908|     36|yy334:
 8909|     36|	YYDEBUG(334, *YYCURSOR);
 8910|     36|	yyaccept = 7;
 8911|     36|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     36|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
 8912|     36|	if (yych <= '/') {
  ------------------
  |  Branch (8912:6): [True: 12, False: 24]
  ------------------
 8913|     12|		if (yych <= '(') {
  ------------------
  |  Branch (8913:7): [True: 0, False: 12]
  ------------------
 8914|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (8914:8): [True: 0, False: 0]
  ------------------
 8915|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8915:9): [True: 0, False: 0]
  ------------------
 8916|      0|				goto yy142;
 8917|      0|			} else {
 8918|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8918:9): [True: 0, False: 0]
  ------------------
 8919|      0|				goto yy295;
 8920|      0|			}
 8921|     12|		} else {
 8922|     12|			if (yych <= ',') {
  ------------------
  |  Branch (8922:8): [True: 0, False: 12]
  ------------------
 8923|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8923:9): [True: 0, False: 0]
  ------------------
 8924|      0|				goto yy295;
 8925|     12|			} else {
 8926|     12|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (8926:9): [True: 12, False: 0]
  ------------------
 8927|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (8927:9): [True: 0, False: 0]
  ------------------
 8928|      0|				goto yy295;
 8929|      0|			}
 8930|     12|		}
 8931|     24|	} else {
 8932|     24|		if (yych <= 'Z') {
  ------------------
  |  Branch (8932:7): [True: 15, False: 9]
  ------------------
 8933|     15|			if (yych <= '@') {
  ------------------
  |  Branch (8933:8): [True: 14, False: 1]
  ------------------
 8934|     14|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (8934:9): [True: 8, False: 6]
  ------------------
 8935|      6|				goto yy295;
 8936|     14|			} else {
 8937|      1|				if (yych == 'U') goto yy514;
  ------------------
  |  Branch (8937:9): [True: 0, False: 1]
  ------------------
 8938|      1|				goto yy472;
 8939|      1|			}
 8940|     15|		} else {
 8941|      9|			if (yych <= 't') {
  ------------------
  |  Branch (8941:8): [True: 6, False: 3]
  ------------------
 8942|      6|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8942:9): [True: 0, False: 6]
  ------------------
 8943|      6|				goto yy472;
 8944|      6|			} else {
 8945|      3|				if (yych <= 'u') goto yy514;
  ------------------
  |  Branch (8945:9): [True: 0, False: 3]
  ------------------
 8946|      3|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8946:9): [True: 0, False: 3]
  ------------------
 8947|      3|				goto yy295;
 8948|      3|			}
 8949|      9|		}
 8950|     24|	}
 8951|      5|yy335:
 8952|      5|	YYDEBUG(335, *YYCURSOR);
 8953|      5|	yyaccept = 7;
 8954|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 8955|      5|	if (yych <= '/') {
  ------------------
  |  Branch (8955:6): [True: 0, False: 5]
  ------------------
 8956|      0|		if (yych <= '(') {
  ------------------
  |  Branch (8956:7): [True: 0, False: 0]
  ------------------
 8957|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (8957:8): [True: 0, False: 0]
  ------------------
 8958|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (8958:9): [True: 0, False: 0]
  ------------------
 8959|      0|				goto yy142;
 8960|      0|			} else {
 8961|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (8961:9): [True: 0, False: 0]
  ------------------
 8962|      0|				goto yy295;
 8963|      0|			}
 8964|      0|		} else {
 8965|      0|			if (yych <= ',') {
  ------------------
  |  Branch (8965:8): [True: 0, False: 0]
  ------------------
 8966|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (8966:9): [True: 0, False: 0]
  ------------------
 8967|      0|				goto yy295;
 8968|      0|			} else {
 8969|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (8969:9): [True: 0, False: 0]
  ------------------
 8970|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (8970:9): [True: 0, False: 0]
  ------------------
 8971|      0|				goto yy295;
 8972|      0|			}
 8973|      0|		}
 8974|      5|	} else {
 8975|      5|		if (yych <= 'Z') {
  ------------------
  |  Branch (8975:7): [True: 0, False: 5]
  ------------------
 8976|      0|			if (yych <= '@') {
  ------------------
  |  Branch (8976:8): [True: 0, False: 0]
  ------------------
 8977|      0|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (8977:9): [True: 0, False: 0]
  ------------------
 8978|      0|				goto yy295;
 8979|      0|			} else {
 8980|      0|				if (yych == 'Y') goto yy515;
  ------------------
  |  Branch (8980:9): [True: 0, False: 0]
  ------------------
 8981|      0|				goto yy472;
 8982|      0|			}
 8983|      5|		} else {
 8984|      5|			if (yych <= 'x') {
  ------------------
  |  Branch (8984:8): [True: 5, False: 0]
  ------------------
 8985|      5|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (8985:9): [True: 0, False: 5]
  ------------------
 8986|      5|				goto yy472;
 8987|      5|			} else {
 8988|      0|				if (yych <= 'y') goto yy515;
  ------------------
  |  Branch (8988:9): [True: 0, False: 0]
  ------------------
 8989|      0|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (8989:9): [True: 0, False: 0]
  ------------------
 8990|      0|				goto yy295;
 8991|      0|			}
 8992|      5|		}
 8993|      5|	}
 8994|      2|yy336:
 8995|      2|	YYDEBUG(336, *YYCURSOR);
 8996|      2|	yyaccept = 7;
 8997|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 8998|      2|	if (yych <= '/') {
  ------------------
  |  Branch (8998:6): [True: 0, False: 2]
  ------------------
 8999|      0|		if (yych <= '(') {
  ------------------
  |  Branch (8999:7): [True: 0, False: 0]
  ------------------
 9000|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9000:8): [True: 0, False: 0]
  ------------------
 9001|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9001:9): [True: 0, False: 0]
  ------------------
 9002|      0|				goto yy142;
 9003|      0|			} else {
 9004|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9004:9): [True: 0, False: 0]
  ------------------
 9005|      0|				goto yy295;
 9006|      0|			}
 9007|      0|		} else {
 9008|      0|			if (yych <= ',') {
  ------------------
  |  Branch (9008:8): [True: 0, False: 0]
  ------------------
 9009|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9009:9): [True: 0, False: 0]
  ------------------
 9010|      0|				goto yy295;
 9011|      0|			} else {
 9012|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (9012:9): [True: 0, False: 0]
  ------------------
 9013|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (9013:9): [True: 0, False: 0]
  ------------------
 9014|      0|				goto yy295;
 9015|      0|			}
 9016|      0|		}
 9017|      2|	} else {
 9018|      2|		if (yych <= 'Z') {
  ------------------
  |  Branch (9018:7): [True: 0, False: 2]
  ------------------
 9019|      0|			if (yych <= '@') {
  ------------------
  |  Branch (9019:8): [True: 0, False: 0]
  ------------------
 9020|      0|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (9020:9): [True: 0, False: 0]
  ------------------
 9021|      0|				goto yy295;
 9022|      0|			} else {
 9023|      0|				if (yych == 'E') goto yy515;
  ------------------
  |  Branch (9023:9): [True: 0, False: 0]
  ------------------
 9024|      0|				goto yy472;
 9025|      0|			}
 9026|      2|		} else {
 9027|      2|			if (yych <= 'd') {
  ------------------
  |  Branch (9027:8): [True: 0, False: 2]
  ------------------
 9028|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9028:9): [True: 0, False: 0]
  ------------------
 9029|      0|				goto yy472;
 9030|      2|			} else {
 9031|      2|				if (yych <= 'e') goto yy515;
  ------------------
  |  Branch (9031:9): [True: 0, False: 2]
  ------------------
 9032|      2|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9032:9): [True: 1, False: 1]
  ------------------
 9033|      1|				goto yy295;
 9034|      2|			}
 9035|      2|		}
 9036|      2|	}
 9037|      5|yy337:
 9038|      5|	YYDEBUG(337, *YYCURSOR);
 9039|      5|	yyaccept = 7;
 9040|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 9041|      5|	if (yych <= '9') {
  ------------------
  |  Branch (9041:6): [True: 5, False: 0]
  ------------------
 9042|      5|		if (yych <= '(') {
  ------------------
  |  Branch (9042:7): [True: 0, False: 5]
  ------------------
 9043|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9043:8): [True: 0, False: 0]
  ------------------
 9044|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9044:9): [True: 0, False: 0]
  ------------------
 9045|      0|				goto yy142;
 9046|      0|			} else {
 9047|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9047:9): [True: 0, False: 0]
  ------------------
 9048|      0|				goto yy295;
 9049|      0|			}
 9050|      5|		} else {
 9051|      5|			if (yych <= '-') {
  ------------------
  |  Branch (9051:8): [True: 5, False: 0]
  ------------------
 9052|      5|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9052:9): [True: 5, False: 0]
  ------------------
 9053|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9053:9): [True: 0, False: 0]
  ------------------
 9054|      0|				goto yy479;
 9055|      0|			} else {
 9056|      0|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (9056:9): [True: 0, False: 0]
  ------------------
 9057|      0|				goto yy142;
 9058|      0|			}
 9059|      5|		}
 9060|      5|	} else {
 9061|      0|		if (yych <= '^') {
  ------------------
  |  Branch (9061:7): [True: 0, False: 0]
  ------------------
 9062|      0|			if (yych <= 'T') {
  ------------------
  |  Branch (9062:8): [True: 0, False: 0]
  ------------------
 9063|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9063:9): [True: 0, False: 0]
  ------------------
 9064|      0|				goto yy472;
 9065|      0|			} else {
 9066|      0|				if (yych <= 'U') goto yy514;
  ------------------
  |  Branch (9066:9): [True: 0, False: 0]
  ------------------
 9067|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9067:9): [True: 0, False: 0]
  ------------------
 9068|      0|				goto yy295;
 9069|      0|			}
 9070|      0|		} else {
 9071|      0|			if (yych <= 't') {
  ------------------
  |  Branch (9071:8): [True: 0, False: 0]
  ------------------
 9072|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9072:9): [True: 0, False: 0]
  ------------------
 9073|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9073:9): [True: 0, False: 0]
  ------------------
 9074|      0|				goto yy478;
 9075|      0|			} else {
 9076|      0|				if (yych <= 'u') goto yy516;
  ------------------
  |  Branch (9076:9): [True: 0, False: 0]
  ------------------
 9077|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9077:9): [True: 0, False: 0]
  ------------------
 9078|      0|				goto yy295;
 9079|      0|			}
 9080|      0|		}
 9081|      0|	}
 9082|      0|yy338:
 9083|      0|	YYDEBUG(338, *YYCURSOR);
 9084|      0|	yyaccept = 7;
 9085|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 9086|      0|	if (yych <= '9') {
  ------------------
  |  Branch (9086:6): [True: 0, False: 0]
  ------------------
 9087|      0|		if (yych <= '(') {
  ------------------
  |  Branch (9087:7): [True: 0, False: 0]
  ------------------
 9088|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9088:8): [True: 0, False: 0]
  ------------------
 9089|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9089:9): [True: 0, False: 0]
  ------------------
 9090|      0|				goto yy142;
 9091|      0|			} else {
 9092|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9092:9): [True: 0, False: 0]
  ------------------
 9093|      0|				goto yy295;
 9094|      0|			}
 9095|      0|		} else {
 9096|      0|			if (yych <= '-') {
  ------------------
  |  Branch (9096:8): [True: 0, False: 0]
  ------------------
 9097|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9097:9): [True: 0, False: 0]
  ------------------
 9098|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9098:9): [True: 0, False: 0]
  ------------------
 9099|      0|				goto yy479;
 9100|      0|			} else {
 9101|      0|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (9101:9): [True: 0, False: 0]
  ------------------
 9102|      0|				goto yy142;
 9103|      0|			}
 9104|      0|		}
 9105|      0|	} else {
 9106|      0|		if (yych <= '^') {
  ------------------
  |  Branch (9106:7): [True: 0, False: 0]
  ------------------
 9107|      0|			if (yych <= 'X') {
  ------------------
  |  Branch (9107:8): [True: 0, False: 0]
  ------------------
 9108|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9108:9): [True: 0, False: 0]
  ------------------
 9109|      0|				goto yy472;
 9110|      0|			} else {
 9111|      0|				if (yych <= 'Y') goto yy515;
  ------------------
  |  Branch (9111:9): [True: 0, False: 0]
  ------------------
 9112|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9112:9): [True: 0, False: 0]
  ------------------
 9113|      0|				goto yy295;
 9114|      0|			}
 9115|      0|		} else {
 9116|      0|			if (yych <= 'x') {
  ------------------
  |  Branch (9116:8): [True: 0, False: 0]
  ------------------
 9117|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9117:9): [True: 0, False: 0]
  ------------------
 9118|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9118:9): [True: 0, False: 0]
  ------------------
 9119|      0|				goto yy478;
 9120|      0|			} else {
 9121|      0|				if (yych <= 'y') goto yy517;
  ------------------
  |  Branch (9121:9): [True: 0, False: 0]
  ------------------
 9122|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9122:9): [True: 0, False: 0]
  ------------------
 9123|      0|				goto yy295;
 9124|      0|			}
 9125|      0|		}
 9126|      0|	}
 9127|      4|yy339:
 9128|      4|	YYDEBUG(339, *YYCURSOR);
 9129|      4|	yyaccept = 7;
 9130|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 9131|      4|	if (yych <= '9') {
  ------------------
  |  Branch (9131:6): [True: 3, False: 1]
  ------------------
 9132|      3|		if (yych <= '(') {
  ------------------
  |  Branch (9132:7): [True: 2, False: 1]
  ------------------
 9133|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (9133:8): [True: 0, False: 2]
  ------------------
 9134|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9134:9): [True: 0, False: 0]
  ------------------
 9135|      0|				goto yy142;
 9136|      2|			} else {
 9137|      2|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9137:9): [True: 2, False: 0]
  ------------------
 9138|      0|				goto yy295;
 9139|      2|			}
 9140|      2|		} else {
 9141|      1|			if (yych <= '-') {
  ------------------
  |  Branch (9141:8): [True: 0, False: 1]
  ------------------
 9142|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9142:9): [True: 0, False: 0]
  ------------------
 9143|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9143:9): [True: 0, False: 0]
  ------------------
 9144|      0|				goto yy479;
 9145|      1|			} else {
 9146|      1|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (9146:9): [True: 0, False: 1]
  ------------------
 9147|      1|				goto yy142;
 9148|      1|			}
 9149|      1|		}
 9150|      3|	} else {
 9151|      1|		if (yych <= '^') {
  ------------------
  |  Branch (9151:7): [True: 0, False: 1]
  ------------------
 9152|      0|			if (yych <= 'D') {
  ------------------
  |  Branch (9152:8): [True: 0, False: 0]
  ------------------
 9153|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9153:9): [True: 0, False: 0]
  ------------------
 9154|      0|				goto yy472;
 9155|      0|			} else {
 9156|      0|				if (yych <= 'E') goto yy515;
  ------------------
  |  Branch (9156:9): [True: 0, False: 0]
  ------------------
 9157|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9157:9): [True: 0, False: 0]
  ------------------
 9158|      0|				goto yy295;
 9159|      0|			}
 9160|      1|		} else {
 9161|      1|			if (yych <= 'd') {
  ------------------
  |  Branch (9161:8): [True: 1, False: 0]
  ------------------
 9162|      1|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9162:9): [True: 1, False: 0]
  ------------------
 9163|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9163:9): [True: 0, False: 0]
  ------------------
 9164|      0|				goto yy478;
 9165|      0|			} else {
 9166|      0|				if (yych <= 'e') goto yy517;
  ------------------
  |  Branch (9166:9): [True: 0, False: 0]
  ------------------
 9167|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9167:9): [True: 0, False: 0]
  ------------------
 9168|      0|				goto yy295;
 9169|      0|			}
 9170|      1|		}
 9171|      1|	}
 9172|      0|yy340:
 9173|      0|	YYDEBUG(340, *YYCURSOR);
 9174|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 9175|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (9175:6): [True: 0, False: 0]
  ------------------
 9176|      0|		if (yych <= ')') {
  ------------------
  |  Branch (9176:7): [True: 0, False: 0]
  ------------------
 9177|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9177:8): [True: 0, False: 0]
  ------------------
 9178|      0|			goto yy115;
 9179|      0|		} else {
 9180|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9180:8): [True: 0, False: 0]
  ------------------
 9181|      0|			if (yych <= 'S') goto yy472;
  ------------------
  |  Branch (9181:8): [True: 0, False: 0]
  ------------------
 9182|      0|			goto yy518;
 9183|      0|		}
 9184|      0|	} else {
 9185|      0|		if (yych <= 's') {
  ------------------
  |  Branch (9185:7): [True: 0, False: 0]
  ------------------
 9186|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9186:8): [True: 0, False: 0]
  ------------------
 9187|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9187:8): [True: 0, False: 0]
  ------------------
 9188|      0|			goto yy472;
 9189|      0|		} else {
 9190|      0|			if (yych <= 't') goto yy518;
  ------------------
  |  Branch (9190:8): [True: 0, False: 0]
  ------------------
 9191|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9191:8): [True: 0, False: 0]
  ------------------
 9192|      0|			goto yy20;
 9193|      0|		}
 9194|      0|	}
 9195|      3|yy341:
 9196|      3|	YYDEBUG(341, *YYCURSOR);
 9197|      3|	yyaccept = 2;
 9198|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
 9199|      3|	if (yych <= 'S') {
  ------------------
  |  Branch (9199:6): [True: 1, False: 2]
  ------------------
 9200|      1|		if (yych <= '-') {
  ------------------
  |  Branch (9200:7): [True: 0, False: 1]
  ------------------
 9201|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9201:8): [True: 0, False: 0]
  ------------------
 9202|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9202:8): [True: 0, False: 0]
  ------------------
 9203|      0|			goto yy297;
 9204|      1|		} else {
 9205|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9205:8): [True: 0, False: 1]
  ------------------
 9206|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9206:8): [True: 0, False: 1]
  ------------------
 9207|      1|			goto yy472;
 9208|      1|		}
 9209|      2|	} else {
 9210|      2|		if (yych <= '_') {
  ------------------
  |  Branch (9210:7): [True: 0, False: 2]
  ------------------
 9211|      0|			if (yych <= 'T') goto yy518;
  ------------------
  |  Branch (9211:8): [True: 0, False: 0]
  ------------------
 9212|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9212:8): [True: 0, False: 0]
  ------------------
 9213|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9213:8): [True: 0, False: 0]
  ------------------
 9214|      0|			goto yy297;
 9215|      2|		} else {
 9216|      2|			if (yych <= 's') {
  ------------------
  |  Branch (9216:8): [True: 0, False: 2]
  ------------------
 9217|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9217:9): [True: 0, False: 0]
  ------------------
 9218|      0|				goto yy478;
 9219|      2|			} else {
 9220|      2|				if (yych <= 't') goto yy519;
  ------------------
  |  Branch (9220:9): [True: 2, False: 0]
  ------------------
 9221|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9221:9): [True: 0, False: 0]
  ------------------
 9222|      0|				goto yy20;
 9223|      0|			}
 9224|      2|		}
 9225|      2|	}
 9226|      2|yy342:
 9227|      2|	YYDEBUG(342, *YYCURSOR);
 9228|      2|	yyaccept = 7;
 9229|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 9230|      2|	if (yych <= '/') {
  ------------------
  |  Branch (9230:6): [True: 1, False: 1]
  ------------------
 9231|      1|		if (yych <= '(') {
  ------------------
  |  Branch (9231:7): [True: 1, False: 0]
  ------------------
 9232|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (9232:8): [True: 0, False: 1]
  ------------------
 9233|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9233:9): [True: 0, False: 0]
  ------------------
 9234|      0|				goto yy142;
 9235|      1|			} else {
 9236|      1|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9236:9): [True: 0, False: 1]
  ------------------
 9237|      1|				goto yy295;
 9238|      1|			}
 9239|      1|		} else {
 9240|      0|			if (yych <= ',') {
  ------------------
  |  Branch (9240:8): [True: 0, False: 0]
  ------------------
 9241|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9241:9): [True: 0, False: 0]
  ------------------
 9242|      0|				goto yy295;
 9243|      0|			} else {
 9244|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (9244:9): [True: 0, False: 0]
  ------------------
 9245|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (9245:9): [True: 0, False: 0]
  ------------------
 9246|      0|				goto yy295;
 9247|      0|			}
 9248|      0|		}
 9249|      1|	} else {
 9250|      1|		if (yych <= 'Z') {
  ------------------
  |  Branch (9250:7): [True: 1, False: 0]
  ------------------
 9251|      1|			if (yych <= '@') {
  ------------------
  |  Branch (9251:8): [True: 1, False: 0]
  ------------------
 9252|      1|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (9252:9): [True: 0, False: 1]
  ------------------
 9253|      1|				goto yy295;
 9254|      1|			} else {
 9255|      0|				if (yych == 'C') goto yy520;
  ------------------
  |  Branch (9255:9): [True: 0, False: 0]
  ------------------
 9256|      0|				goto yy472;
 9257|      0|			}
 9258|      1|		} else {
 9259|      0|			if (yych <= 'b') {
  ------------------
  |  Branch (9259:8): [True: 0, False: 0]
  ------------------
 9260|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9260:9): [True: 0, False: 0]
  ------------------
 9261|      0|				goto yy472;
 9262|      0|			} else {
 9263|      0|				if (yych <= 'c') goto yy520;
  ------------------
  |  Branch (9263:9): [True: 0, False: 0]
  ------------------
 9264|      0|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9264:9): [True: 0, False: 0]
  ------------------
 9265|      0|				goto yy295;
 9266|      0|			}
 9267|      0|		}
 9268|      1|	}
 9269|      0|yy343:
 9270|      0|	YYDEBUG(343, *YYCURSOR);
 9271|      0|	yyaccept = 7;
 9272|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 9273|      0|	if (yych <= '-') {
  ------------------
  |  Branch (9273:6): [True: 0, False: 0]
  ------------------
 9274|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (9274:7): [True: 0, False: 0]
  ------------------
 9275|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (9275:8): [True: 0, False: 0]
  ------------------
 9276|      0|			if (yych <= 0x1F) goto yy295;
  ------------------
  |  Branch (9276:8): [True: 0, False: 0]
  ------------------
 9277|      0|			goto yy142;
 9278|      0|		} else {
 9279|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9279:8): [True: 0, False: 0]
  ------------------
 9280|      0|			if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9280:8): [True: 0, False: 0]
  ------------------
 9281|      0|			goto yy473;
 9282|      0|		}
 9283|      0|	} else {
 9284|      0|		if (yych <= '@') {
  ------------------
  |  Branch (9284:7): [True: 0, False: 0]
  ------------------
 9285|      0|			if (yych == '/') goto yy295;
  ------------------
  |  Branch (9285:8): [True: 0, False: 0]
  ------------------
 9286|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (9286:8): [True: 0, False: 0]
  ------------------
 9287|      0|			goto yy295;
 9288|      0|		} else {
 9289|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9289:8): [True: 0, False: 0]
  ------------------
 9290|      0|			if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9290:8): [True: 0, False: 0]
  ------------------
 9291|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9291:8): [True: 0, False: 0]
  ------------------
 9292|      0|			goto yy295;
 9293|      0|		}
 9294|      0|	}
 9295|      2|yy344:
 9296|      2|	YYDEBUG(344, *YYCURSOR);
 9297|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 9298|      2|	if (yych <= 'N') {
  ------------------
  |  Branch (9298:6): [True: 0, False: 2]
  ------------------
 9299|      0|		if (yych <= ')') {
  ------------------
  |  Branch (9299:7): [True: 0, False: 0]
  ------------------
 9300|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9300:8): [True: 0, False: 0]
  ------------------
 9301|      0|			goto yy115;
 9302|      0|		} else {
 9303|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9303:8): [True: 0, False: 0]
  ------------------
 9304|      0|			if (yych <= 'M') goto yy472;
  ------------------
  |  Branch (9304:8): [True: 0, False: 0]
  ------------------
 9305|      0|			goto yy521;
 9306|      0|		}
 9307|      2|	} else {
 9308|      2|		if (yych <= 'm') {
  ------------------
  |  Branch (9308:7): [True: 2, False: 0]
  ------------------
 9309|      2|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9309:8): [True: 1, False: 1]
  ------------------
 9310|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9310:8): [True: 1, False: 0]
  ------------------
 9311|      0|			goto yy472;
 9312|      1|		} else {
 9313|      0|			if (yych <= 'n') goto yy521;
  ------------------
  |  Branch (9313:8): [True: 0, False: 0]
  ------------------
 9314|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9314:8): [True: 0, False: 0]
  ------------------
 9315|      0|			goto yy20;
 9316|      0|		}
 9317|      2|	}
 9318|      2|yy345:
 9319|      2|	YYDEBUG(345, *YYCURSOR);
 9320|      2|	yyaccept = 7;
 9321|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 9322|      2|	if (yych <= '9') {
  ------------------
  |  Branch (9322:6): [True: 2, False: 0]
  ------------------
 9323|      2|		if (yych <= '(') {
  ------------------
  |  Branch (9323:7): [True: 0, False: 2]
  ------------------
 9324|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9324:8): [True: 0, False: 0]
  ------------------
 9325|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9325:9): [True: 0, False: 0]
  ------------------
 9326|      0|				goto yy142;
 9327|      0|			} else {
 9328|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9328:9): [True: 0, False: 0]
  ------------------
 9329|      0|				goto yy295;
 9330|      0|			}
 9331|      2|		} else {
 9332|      2|			if (yych <= '-') {
  ------------------
  |  Branch (9332:8): [True: 0, False: 2]
  ------------------
 9333|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9333:9): [True: 0, False: 0]
  ------------------
 9334|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9334:9): [True: 0, False: 0]
  ------------------
 9335|      0|				goto yy479;
 9336|      2|			} else {
 9337|      2|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (9337:9): [True: 1, False: 1]
  ------------------
 9338|      1|				goto yy142;
 9339|      2|			}
 9340|      2|		}
 9341|      2|	} else {
 9342|      0|		if (yych <= '^') {
  ------------------
  |  Branch (9342:7): [True: 0, False: 0]
  ------------------
 9343|      0|			if (yych <= 'B') {
  ------------------
  |  Branch (9343:8): [True: 0, False: 0]
  ------------------
 9344|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9344:9): [True: 0, False: 0]
  ------------------
 9345|      0|				goto yy472;
 9346|      0|			} else {
 9347|      0|				if (yych <= 'C') goto yy520;
  ------------------
  |  Branch (9347:9): [True: 0, False: 0]
  ------------------
 9348|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9348:9): [True: 0, False: 0]
  ------------------
 9349|      0|				goto yy295;
 9350|      0|			}
 9351|      0|		} else {
 9352|      0|			if (yych <= 'b') {
  ------------------
  |  Branch (9352:8): [True: 0, False: 0]
  ------------------
 9353|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9353:9): [True: 0, False: 0]
  ------------------
 9354|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9354:9): [True: 0, False: 0]
  ------------------
 9355|      0|				goto yy478;
 9356|      0|			} else {
 9357|      0|				if (yych <= 'c') goto yy522;
  ------------------
  |  Branch (9357:9): [True: 0, False: 0]
  ------------------
 9358|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9358:9): [True: 0, False: 0]
  ------------------
 9359|      0|				goto yy295;
 9360|      0|			}
 9361|      0|		}
 9362|      0|	}
 9363|      4|yy346:
 9364|      4|	YYDEBUG(346, *YYCURSOR);
 9365|      4|	yyaccept = 7;
 9366|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 9367|      4|	if (yych <= '.') {
  ------------------
  |  Branch (9367:6): [True: 1, False: 3]
  ------------------
 9368|      1|		if (yych <= ' ') {
  ------------------
  |  Branch (9368:7): [True: 0, False: 1]
  ------------------
 9369|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (9369:8): [True: 0, False: 0]
  ------------------
 9370|      0|			if (yych <= 0x1F) goto yy295;
  ------------------
  |  Branch (9370:8): [True: 0, False: 0]
  ------------------
 9371|      0|			goto yy142;
 9372|      1|		} else {
 9373|      1|			if (yych <= ')') {
  ------------------
  |  Branch (9373:8): [True: 0, False: 1]
  ------------------
 9374|      0|				if (yych <= '(') goto yy295;
  ------------------
  |  Branch (9374:9): [True: 0, False: 0]
  ------------------
 9375|      0|				goto yy115;
 9376|      1|			} else {
 9377|      1|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9377:9): [True: 0, False: 1]
  ------------------
 9378|      1|				if (yych <= '-') goto yy479;
  ------------------
  |  Branch (9378:9): [True: 0, False: 1]
  ------------------
 9379|      1|				goto yy142;
 9380|      1|			}
 9381|      1|		}
 9382|      3|	} else {
 9383|      3|		if (yych <= 'Z') {
  ------------------
  |  Branch (9383:7): [True: 2, False: 1]
  ------------------
 9384|      2|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (9384:8): [True: 0, False: 2]
  ------------------
 9385|      2|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (9385:8): [True: 2, False: 0]
  ------------------
 9386|      0|			if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9386:8): [True: 0, False: 0]
  ------------------
 9387|      0|			goto yy472;
 9388|      1|		} else {
 9389|      1|			if (yych <= '_') {
  ------------------
  |  Branch (9389:8): [True: 0, False: 1]
  ------------------
 9390|      0|				if (yych <= '^') goto yy295;
  ------------------
  |  Branch (9390:9): [True: 0, False: 0]
  ------------------
 9391|      0|				goto yy297;
 9392|      1|			} else {
 9393|      1|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9393:9): [True: 0, False: 1]
  ------------------
 9394|      1|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9394:9): [True: 0, False: 1]
  ------------------
 9395|      1|				goto yy295;
 9396|      1|			}
 9397|      1|		}
 9398|      3|	}
 9399|      0|yy347:
 9400|      0|	YYDEBUG(347, *YYCURSOR);
 9401|      0|	yyaccept = 2;
 9402|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 9403|      0|	if (yych <= 'M') {
  ------------------
  |  Branch (9403:6): [True: 0, False: 0]
  ------------------
 9404|      0|		if (yych <= '-') {
  ------------------
  |  Branch (9404:7): [True: 0, False: 0]
  ------------------
 9405|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9405:8): [True: 0, False: 0]
  ------------------
 9406|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9406:8): [True: 0, False: 0]
  ------------------
 9407|      0|			goto yy297;
 9408|      0|		} else {
 9409|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9409:8): [True: 0, False: 0]
  ------------------
 9410|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9410:8): [True: 0, False: 0]
  ------------------
 9411|      0|			goto yy472;
 9412|      0|		}
 9413|      0|	} else {
 9414|      0|		if (yych <= '_') {
  ------------------
  |  Branch (9414:7): [True: 0, False: 0]
  ------------------
 9415|      0|			if (yych <= 'N') goto yy521;
  ------------------
  |  Branch (9415:8): [True: 0, False: 0]
  ------------------
 9416|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9416:8): [True: 0, False: 0]
  ------------------
 9417|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9417:8): [True: 0, False: 0]
  ------------------
 9418|      0|			goto yy297;
 9419|      0|		} else {
 9420|      0|			if (yych <= 'm') {
  ------------------
  |  Branch (9420:8): [True: 0, False: 0]
  ------------------
 9421|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9421:9): [True: 0, False: 0]
  ------------------
 9422|      0|				goto yy478;
 9423|      0|			} else {
 9424|      0|				if (yych <= 'n') goto yy523;
  ------------------
  |  Branch (9424:9): [True: 0, False: 0]
  ------------------
 9425|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9425:9): [True: 0, False: 0]
  ------------------
 9426|      0|				goto yy20;
 9427|      0|			}
 9428|      0|		}
 9429|      0|	}
 9430|     20|yy348:
 9431|     20|	YYDEBUG(348, *YYCURSOR);
 9432|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
 9433|     20|	if (yych <= 'T') {
  ------------------
  |  Branch (9433:6): [True: 6, False: 14]
  ------------------
 9434|      6|		if (yych <= ')') {
  ------------------
  |  Branch (9434:7): [True: 5, False: 1]
  ------------------
 9435|      5|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9435:8): [True: 5, False: 0]
  ------------------
 9436|      0|			goto yy115;
 9437|      5|		} else {
 9438|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9438:8): [True: 1, False: 0]
  ------------------
 9439|      0|			if (yych <= 'S') goto yy472;
  ------------------
  |  Branch (9439:8): [True: 0, False: 0]
  ------------------
 9440|      0|			goto yy524;
 9441|      0|		}
 9442|     14|	} else {
 9443|     14|		if (yych <= 's') {
  ------------------
  |  Branch (9443:7): [True: 0, False: 14]
  ------------------
 9444|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9444:8): [True: 0, False: 0]
  ------------------
 9445|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9445:8): [True: 0, False: 0]
  ------------------
 9446|      0|			goto yy472;
 9447|     14|		} else {
 9448|     14|			if (yych <= 't') goto yy524;
  ------------------
  |  Branch (9448:8): [True: 12, False: 2]
  ------------------
 9449|      2|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9449:8): [True: 0, False: 2]
  ------------------
 9450|      2|			goto yy20;
 9451|      2|		}
 9452|     14|	}
 9453|      0|yy349:
 9454|      0|	YYDEBUG(349, *YYCURSOR);
 9455|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 9456|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (9456:6): [True: 0, False: 0]
  ------------------
 9457|      0|		if (yych <= ')') {
  ------------------
  |  Branch (9457:7): [True: 0, False: 0]
  ------------------
 9458|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9458:8): [True: 0, False: 0]
  ------------------
 9459|      0|			goto yy115;
 9460|      0|		} else {
 9461|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9461:8): [True: 0, False: 0]
  ------------------
 9462|      0|			if (yych <= 'M') goto yy472;
  ------------------
  |  Branch (9462:8): [True: 0, False: 0]
  ------------------
 9463|      0|			goto yy525;
 9464|      0|		}
 9465|      0|	} else {
 9466|      0|		if (yych <= 'm') {
  ------------------
  |  Branch (9466:7): [True: 0, False: 0]
  ------------------
 9467|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9467:8): [True: 0, False: 0]
  ------------------
 9468|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9468:8): [True: 0, False: 0]
  ------------------
 9469|      0|			goto yy472;
 9470|      0|		} else {
 9471|      0|			if (yych <= 'n') goto yy525;
  ------------------
  |  Branch (9471:8): [True: 0, False: 0]
  ------------------
 9472|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9472:8): [True: 0, False: 0]
  ------------------
 9473|      0|			goto yy20;
 9474|      0|		}
 9475|      0|	}
 9476|     27|yy350:
 9477|     27|	YYDEBUG(350, *YYCURSOR);
 9478|     27|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     27|#define   YYCURSOR     cursor
  ------------------
 9479|     27|	if (yych <= '@') {
  ------------------
  |  Branch (9479:6): [True: 27, False: 0]
  ------------------
 9480|     27|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (9480:7): [True: 0, False: 27]
  ------------------
 9481|     27|	} else {
 9482|      0|		if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9482:7): [True: 0, False: 0]
  ------------------
 9483|      0|		if (yych <= '`') goto yy351;
  ------------------
  |  Branch (9483:7): [True: 0, False: 0]
  ------------------
 9484|      0|		if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9484:7): [True: 0, False: 0]
  ------------------
 9485|      0|	}
 9486|     27|yy351:
 9487|     27|	YYDEBUG(351, *YYCURSOR);
 9488|     27|#line 1178 "ext/date/lib/parse_date.re"
 9489|     27|	{
 9490|     27|		DEBUG_OUTPUT("now");
 9491|     27|		TIMELIB_INIT;
  ------------------
  |  |  107|     27|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
 9492|       |
 9493|     27|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     27|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     27|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     27|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     27|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     27|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     27|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     27|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     27|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9494|     27|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|     27|#define TIMELIB_RELATIVE       310
  ------------------
 9495|     27|	}
 9496|      0|#line 9497 "ext/date/lib/parse_date.c"
 9497|      4|yy352:
 9498|      4|	YYDEBUG(352, *YYCURSOR);
 9499|      4|	yyaccept = 2;
 9500|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 9501|      4|	if (yych <= 'S') {
  ------------------
  |  Branch (9501:6): [True: 0, False: 4]
  ------------------
 9502|      0|		if (yych <= '-') {
  ------------------
  |  Branch (9502:7): [True: 0, False: 0]
  ------------------
 9503|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9503:8): [True: 0, False: 0]
  ------------------
 9504|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9504:8): [True: 0, False: 0]
  ------------------
 9505|      0|			goto yy297;
 9506|      0|		} else {
 9507|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9507:8): [True: 0, False: 0]
  ------------------
 9508|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9508:8): [True: 0, False: 0]
  ------------------
 9509|      0|			goto yy472;
 9510|      0|		}
 9511|      4|	} else {
 9512|      4|		if (yych <= '_') {
  ------------------
  |  Branch (9512:7): [True: 0, False: 4]
  ------------------
 9513|      0|			if (yych <= 'T') goto yy524;
  ------------------
  |  Branch (9513:8): [True: 0, False: 0]
  ------------------
 9514|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9514:8): [True: 0, False: 0]
  ------------------
 9515|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9515:8): [True: 0, False: 0]
  ------------------
 9516|      0|			goto yy297;
 9517|      4|		} else {
 9518|      4|			if (yych <= 's') {
  ------------------
  |  Branch (9518:8): [True: 0, False: 4]
  ------------------
 9519|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9519:9): [True: 0, False: 0]
  ------------------
 9520|      0|				goto yy478;
 9521|      4|			} else {
 9522|      4|				if (yych <= 't') goto yy527;
  ------------------
  |  Branch (9522:9): [True: 0, False: 4]
  ------------------
 9523|      4|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9523:9): [True: 0, False: 4]
  ------------------
 9524|      4|				goto yy20;
 9525|      4|			}
 9526|      4|		}
 9527|      4|	}
 9528|     13|yy353:
 9529|     13|	YYDEBUG(353, *YYCURSOR);
 9530|     13|	yyaccept = 2;
 9531|     13|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     13|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
 9532|     13|	if (yych <= 'M') {
  ------------------
  |  Branch (9532:6): [True: 6, False: 7]
  ------------------
 9533|      6|		if (yych <= '-') {
  ------------------
  |  Branch (9533:7): [True: 6, False: 0]
  ------------------
 9534|      6|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9534:8): [True: 0, False: 6]
  ------------------
 9535|      6|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9535:8): [True: 6, False: 0]
  ------------------
 9536|      0|			goto yy297;
 9537|      6|		} else {
 9538|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9538:8): [True: 0, False: 0]
  ------------------
 9539|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9539:8): [True: 0, False: 0]
  ------------------
 9540|      0|			goto yy472;
 9541|      0|		}
 9542|      7|	} else {
 9543|      7|		if (yych <= '_') {
  ------------------
  |  Branch (9543:7): [True: 7, False: 0]
  ------------------
 9544|      7|			if (yych <= 'N') goto yy525;
  ------------------
  |  Branch (9544:8): [True: 0, False: 7]
  ------------------
 9545|      7|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9545:8): [True: 7, False: 0]
  ------------------
 9546|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9546:8): [True: 0, False: 0]
  ------------------
 9547|      0|			goto yy297;
 9548|      0|		} else {
 9549|      0|			if (yych <= 'm') {
  ------------------
  |  Branch (9549:8): [True: 0, False: 0]
  ------------------
 9550|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9550:9): [True: 0, False: 0]
  ------------------
 9551|      0|				goto yy478;
 9552|      0|			} else {
 9553|      0|				if (yych <= 'n') goto yy528;
  ------------------
  |  Branch (9553:9): [True: 0, False: 0]
  ------------------
 9554|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9554:9): [True: 0, False: 0]
  ------------------
 9555|      0|				goto yy20;
 9556|      0|			}
 9557|      0|		}
 9558|      7|	}
 9559|      1|yy354:
 9560|      1|	YYDEBUG(354, *YYCURSOR);
 9561|      1|	yyaccept = 11;
 9562|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 9563|      1|	if (yych <= '/') {
  ------------------
  |  Branch (9563:6): [True: 0, False: 1]
  ------------------
 9564|      0|		if (yych <= ',') {
  ------------------
  |  Branch (9564:7): [True: 0, False: 0]
  ------------------
 9565|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9565:8): [True: 0, False: 0]
  ------------------
 9566|      0|			goto yy351;
 9567|      0|		} else {
 9568|      0|			if (yych == '.') goto yy351;
  ------------------
  |  Branch (9568:8): [True: 0, False: 0]
  ------------------
 9569|      0|			goto yy297;
 9570|      0|		}
 9571|      1|	} else {
 9572|      1|		if (yych <= '^') {
  ------------------
  |  Branch (9572:7): [True: 0, False: 1]
  ------------------
 9573|      0|			if (yych <= '@') goto yy351;
  ------------------
  |  Branch (9573:8): [True: 0, False: 0]
  ------------------
 9574|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9574:8): [True: 0, False: 0]
  ------------------
 9575|      0|			goto yy351;
 9576|      1|		} else {
 9577|      1|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9577:8): [True: 0, False: 1]
  ------------------
 9578|      1|			if (yych <= '`') goto yy351;
  ------------------
  |  Branch (9578:8): [True: 0, False: 1]
  ------------------
 9579|      1|			if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9579:8): [True: 1, False: 0]
  ------------------
 9580|      0|			goto yy351;
 9581|      1|		}
 9582|      1|	}
 9583|      8|yy355:
 9584|      8|	YYDEBUG(355, *YYCURSOR);
 9585|      8|	yyaccept = 7;
 9586|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
 9587|      8|	if (yych <= '/') {
  ------------------
  |  Branch (9587:6): [True: 2, False: 6]
  ------------------
 9588|      2|		if (yych <= '(') {
  ------------------
  |  Branch (9588:7): [True: 1, False: 1]
  ------------------
 9589|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (9589:8): [True: 1, False: 0]
  ------------------
 9590|      1|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9590:9): [True: 1, False: 0]
  ------------------
 9591|      0|				goto yy142;
 9592|      1|			} else {
 9593|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9593:9): [True: 0, False: 0]
  ------------------
 9594|      0|				goto yy295;
 9595|      0|			}
 9596|      1|		} else {
 9597|      1|			if (yych <= ',') {
  ------------------
  |  Branch (9597:8): [True: 0, False: 1]
  ------------------
 9598|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9598:9): [True: 0, False: 0]
  ------------------
 9599|      0|				goto yy295;
 9600|      1|			} else {
 9601|      1|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (9601:9): [True: 0, False: 1]
  ------------------
 9602|      1|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (9602:9): [True: 1, False: 0]
  ------------------
 9603|      0|				goto yy295;
 9604|      1|			}
 9605|      1|		}
 9606|      6|	} else {
 9607|      6|		if (yych <= 'Z') {
  ------------------
  |  Branch (9607:7): [True: 1, False: 5]
  ------------------
 9608|      1|			if (yych <= '@') {
  ------------------
  |  Branch (9608:8): [True: 1, False: 0]
  ------------------
 9609|      1|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (9609:9): [True: 0, False: 1]
  ------------------
 9610|      1|				goto yy295;
 9611|      1|			} else {
 9612|      0|				if (yych == 'O') goto yy529;
  ------------------
  |  Branch (9612:9): [True: 0, False: 0]
  ------------------
 9613|      0|				goto yy472;
 9614|      0|			}
 9615|      5|		} else {
 9616|      5|			if (yych <= 'n') {
  ------------------
  |  Branch (9616:8): [True: 0, False: 5]
  ------------------
 9617|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9617:9): [True: 0, False: 0]
  ------------------
 9618|      0|				goto yy472;
 9619|      5|			} else {
 9620|      5|				if (yych <= 'o') goto yy529;
  ------------------
  |  Branch (9620:9): [True: 2, False: 3]
  ------------------
 9621|      3|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9621:9): [True: 3, False: 0]
  ------------------
 9622|      0|				goto yy295;
 9623|      3|			}
 9624|      5|		}
 9625|      6|	}
 9626|      1|yy356:
 9627|      1|	YYDEBUG(356, *YYCURSOR);
 9628|      1|	yyaccept = 7;
 9629|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 9630|      1|	if (yych <= '9') {
  ------------------
  |  Branch (9630:6): [True: 0, False: 1]
  ------------------
 9631|      0|		if (yych <= '(') {
  ------------------
  |  Branch (9631:7): [True: 0, False: 0]
  ------------------
 9632|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9632:8): [True: 0, False: 0]
  ------------------
 9633|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9633:9): [True: 0, False: 0]
  ------------------
 9634|      0|				goto yy142;
 9635|      0|			} else {
 9636|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9636:9): [True: 0, False: 0]
  ------------------
 9637|      0|				goto yy295;
 9638|      0|			}
 9639|      0|		} else {
 9640|      0|			if (yych <= '-') {
  ------------------
  |  Branch (9640:8): [True: 0, False: 0]
  ------------------
 9641|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9641:9): [True: 0, False: 0]
  ------------------
 9642|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9642:9): [True: 0, False: 0]
  ------------------
 9643|      0|				goto yy479;
 9644|      0|			} else {
 9645|      0|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (9645:9): [True: 0, False: 0]
  ------------------
 9646|      0|				goto yy142;
 9647|      0|			}
 9648|      0|		}
 9649|      1|	} else {
 9650|      1|		if (yych <= '^') {
  ------------------
  |  Branch (9650:7): [True: 1, False: 0]
  ------------------
 9651|      1|			if (yych <= 'N') {
  ------------------
  |  Branch (9651:8): [True: 0, False: 1]
  ------------------
 9652|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9652:9): [True: 0, False: 0]
  ------------------
 9653|      0|				goto yy472;
 9654|      1|			} else {
 9655|      1|				if (yych <= 'O') goto yy529;
  ------------------
  |  Branch (9655:9): [True: 0, False: 1]
  ------------------
 9656|      1|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9656:9): [True: 1, False: 0]
  ------------------
 9657|      0|				goto yy295;
 9658|      1|			}
 9659|      1|		} else {
 9660|      0|			if (yych <= 'n') {
  ------------------
  |  Branch (9660:8): [True: 0, False: 0]
  ------------------
 9661|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9661:9): [True: 0, False: 0]
  ------------------
 9662|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9662:9): [True: 0, False: 0]
  ------------------
 9663|      0|				goto yy478;
 9664|      0|			} else {
 9665|      0|				if (yych <= 'o') goto yy530;
  ------------------
  |  Branch (9665:9): [True: 0, False: 0]
  ------------------
 9666|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9666:9): [True: 0, False: 0]
  ------------------
 9667|      0|				goto yy295;
 9668|      0|			}
 9669|      0|		}
 9670|      1|	}
 9671|      4|yy357:
 9672|      4|	YYDEBUG(357, *YYCURSOR);
 9673|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 9674|      4|	if (yych <= 'V') {
  ------------------
  |  Branch (9674:6): [True: 1, False: 3]
  ------------------
 9675|      1|		if (yych <= ')') {
  ------------------
  |  Branch (9675:7): [True: 1, False: 0]
  ------------------
 9676|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9676:8): [True: 1, False: 0]
  ------------------
 9677|      0|			goto yy115;
 9678|      1|		} else {
 9679|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9679:8): [True: 0, False: 0]
  ------------------
 9680|      0|			if (yych <= 'U') goto yy472;
  ------------------
  |  Branch (9680:8): [True: 0, False: 0]
  ------------------
 9681|      0|			goto yy531;
 9682|      0|		}
 9683|      3|	} else {
 9684|      3|		if (yych <= 'u') {
  ------------------
  |  Branch (9684:7): [True: 2, False: 1]
  ------------------
 9685|      2|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9685:8): [True: 0, False: 2]
  ------------------
 9686|      2|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9686:8): [True: 2, False: 0]
  ------------------
 9687|      0|			goto yy472;
 9688|      2|		} else {
 9689|      1|			if (yych <= 'v') goto yy531;
  ------------------
  |  Branch (9689:8): [True: 0, False: 1]
  ------------------
 9690|      1|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9690:8): [True: 1, False: 0]
  ------------------
 9691|      0|			goto yy20;
 9692|      1|		}
 9693|      3|	}
 9694|      1|yy358:
 9695|      1|	YYDEBUG(358, *YYCURSOR);
 9696|      1|	yyaccept = 2;
 9697|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 9698|      1|	if (yych <= 'U') {
  ------------------
  |  Branch (9698:6): [True: 0, False: 1]
  ------------------
 9699|      0|		if (yych <= '-') {
  ------------------
  |  Branch (9699:7): [True: 0, False: 0]
  ------------------
 9700|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9700:8): [True: 0, False: 0]
  ------------------
 9701|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9701:8): [True: 0, False: 0]
  ------------------
 9702|      0|			goto yy297;
 9703|      0|		} else {
 9704|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9704:8): [True: 0, False: 0]
  ------------------
 9705|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9705:8): [True: 0, False: 0]
  ------------------
 9706|      0|			goto yy472;
 9707|      0|		}
 9708|      1|	} else {
 9709|      1|		if (yych <= '_') {
  ------------------
  |  Branch (9709:7): [True: 0, False: 1]
  ------------------
 9710|      0|			if (yych <= 'V') goto yy531;
  ------------------
  |  Branch (9710:8): [True: 0, False: 0]
  ------------------
 9711|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9711:8): [True: 0, False: 0]
  ------------------
 9712|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9712:8): [True: 0, False: 0]
  ------------------
 9713|      0|			goto yy297;
 9714|      1|		} else {
 9715|      1|			if (yych <= 'u') {
  ------------------
  |  Branch (9715:8): [True: 0, False: 1]
  ------------------
 9716|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9716:9): [True: 0, False: 0]
  ------------------
 9717|      0|				goto yy478;
 9718|      1|			} else {
 9719|      1|				if (yych <= 'v') goto yy532;
  ------------------
  |  Branch (9719:9): [True: 1, False: 0]
  ------------------
 9720|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9720:9): [True: 0, False: 0]
  ------------------
 9721|      0|				goto yy20;
 9722|      0|			}
 9723|      1|		}
 9724|      1|	}
 9725|      5|yy359:
 9726|      5|	YYDEBUG(359, *YYCURSOR);
 9727|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
 9728|      5|	if (yych <= 'U') {
  ------------------
  |  Branch (9728:6): [True: 5, False: 0]
  ------------------
 9729|      5|		if (yych <= ')') {
  ------------------
  |  Branch (9729:7): [True: 1, False: 4]
  ------------------
 9730|      1|			if (yych <= '(') goto yy315;
  ------------------
  |  Branch (9730:8): [True: 1, False: 0]
  ------------------
 9731|      0|			goto yy115;
 9732|      4|		} else {
 9733|      4|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (9733:8): [True: 0, False: 4]
  ------------------
 9734|      4|			if (yych <= 'T') goto yy472;
  ------------------
  |  Branch (9734:8): [True: 0, False: 4]
  ------------------
 9735|      4|			goto yy533;
 9736|      4|		}
 9737|      5|	} else {
 9738|      0|		if (yych <= 't') {
  ------------------
  |  Branch (9738:7): [True: 0, False: 0]
  ------------------
 9739|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9739:8): [True: 0, False: 0]
  ------------------
 9740|      0|			if (yych <= '`') goto yy315;
  ------------------
  |  Branch (9740:8): [True: 0, False: 0]
  ------------------
 9741|      0|			goto yy472;
 9742|      0|		} else {
 9743|      0|			if (yych <= 'u') goto yy533;
  ------------------
  |  Branch (9743:8): [True: 0, False: 0]
  ------------------
 9744|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9744:8): [True: 0, False: 0]
  ------------------
 9745|      0|			goto yy315;
 9746|      0|		}
 9747|      0|	}
 9748|     17|yy360:
 9749|     17|	YYDEBUG(360, *YYCURSOR);
 9750|     17|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
 9751|     17|	if (yych <= 'O') {
  ------------------
  |  Branch (9751:6): [True: 0, False: 17]
  ------------------
 9752|      0|		if (yych <= ')') {
  ------------------
  |  Branch (9752:7): [True: 0, False: 0]
  ------------------
 9753|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9753:8): [True: 0, False: 0]
  ------------------
 9754|      0|			goto yy115;
 9755|      0|		} else {
 9756|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9756:8): [True: 0, False: 0]
  ------------------
 9757|      0|			if (yych <= 'N') goto yy472;
  ------------------
  |  Branch (9757:8): [True: 0, False: 0]
  ------------------
 9758|      0|			goto yy534;
 9759|      0|		}
 9760|     17|	} else {
 9761|     17|		if (yych <= 'n') {
  ------------------
  |  Branch (9761:7): [True: 0, False: 17]
  ------------------
 9762|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9762:8): [True: 0, False: 0]
  ------------------
 9763|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9763:8): [True: 0, False: 0]
  ------------------
 9764|      0|			goto yy472;
 9765|     17|		} else {
 9766|     17|			if (yych <= 'o') goto yy534;
  ------------------
  |  Branch (9766:8): [True: 17, False: 0]
  ------------------
 9767|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9767:8): [True: 0, False: 0]
  ------------------
 9768|      0|			goto yy20;
 9769|      0|		}
 9770|     17|	}
 9771|     15|yy361:
 9772|     15|	YYDEBUG(361, *YYCURSOR);
 9773|     15|	yyaccept = 7;
 9774|     15|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     15|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
 9775|     15|	if (yych <= '/') {
  ------------------
  |  Branch (9775:6): [True: 3, False: 12]
  ------------------
 9776|      3|		if (yych <= '(') {
  ------------------
  |  Branch (9776:7): [True: 2, False: 1]
  ------------------
 9777|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (9777:8): [True: 0, False: 2]
  ------------------
 9778|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9778:9): [True: 0, False: 0]
  ------------------
 9779|      0|				goto yy142;
 9780|      2|			} else {
 9781|      2|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9781:9): [True: 2, False: 0]
  ------------------
 9782|      0|				goto yy295;
 9783|      2|			}
 9784|      2|		} else {
 9785|      1|			if (yych <= ',') {
  ------------------
  |  Branch (9785:8): [True: 0, False: 1]
  ------------------
 9786|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9786:9): [True: 0, False: 0]
  ------------------
 9787|      0|				goto yy295;
 9788|      1|			} else {
 9789|      1|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (9789:9): [True: 1, False: 0]
  ------------------
 9790|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (9790:9): [True: 0, False: 0]
  ------------------
 9791|      0|				goto yy295;
 9792|      0|			}
 9793|      1|		}
 9794|     12|	} else {
 9795|     12|		if (yych <= 'Z') {
  ------------------
  |  Branch (9795:7): [True: 2, False: 10]
  ------------------
 9796|      2|			if (yych <= '@') {
  ------------------
  |  Branch (9796:8): [True: 2, False: 0]
  ------------------
 9797|      2|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (9797:9): [True: 2, False: 0]
  ------------------
 9798|      0|				goto yy295;
 9799|      2|			} else {
 9800|      0|				if (yych == 'T') goto yy535;
  ------------------
  |  Branch (9800:9): [True: 0, False: 0]
  ------------------
 9801|      0|				goto yy472;
 9802|      0|			}
 9803|     10|		} else {
 9804|     10|			if (yych <= 's') {
  ------------------
  |  Branch (9804:8): [True: 0, False: 10]
  ------------------
 9805|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9805:9): [True: 0, False: 0]
  ------------------
 9806|      0|				goto yy472;
 9807|     10|			} else {
 9808|     10|				if (yych <= 't') goto yy535;
  ------------------
  |  Branch (9808:9): [True: 5, False: 5]
  ------------------
 9809|      5|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9809:9): [True: 1, False: 4]
  ------------------
 9810|      4|				goto yy295;
 9811|      5|			}
 9812|     10|		}
 9813|     12|	}
 9814|      2|yy362:
 9815|      2|	YYDEBUG(362, *YYCURSOR);
 9816|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
 9817|      2|	if (yych <= 'E') {
  ------------------
  |  Branch (9817:6): [True: 0, False: 2]
  ------------------
 9818|      0|		if (yych <= ')') {
  ------------------
  |  Branch (9818:7): [True: 0, False: 0]
  ------------------
 9819|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (9819:8): [True: 0, False: 0]
  ------------------
 9820|      0|			goto yy115;
 9821|      0|		} else {
 9822|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9822:8): [True: 0, False: 0]
  ------------------
 9823|      0|			if (yych <= 'D') goto yy472;
  ------------------
  |  Branch (9823:8): [True: 0, False: 0]
  ------------------
 9824|      0|			goto yy536;
 9825|      0|		}
 9826|      2|	} else {
 9827|      2|		if (yych <= 'd') {
  ------------------
  |  Branch (9827:7): [True: 0, False: 2]
  ------------------
 9828|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9828:8): [True: 0, False: 0]
  ------------------
 9829|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9829:8): [True: 0, False: 0]
  ------------------
 9830|      0|			goto yy472;
 9831|      2|		} else {
 9832|      2|			if (yych <= 'e') goto yy536;
  ------------------
  |  Branch (9832:8): [True: 2, False: 0]
  ------------------
 9833|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (9833:8): [True: 0, False: 0]
  ------------------
 9834|      0|			goto yy20;
 9835|      0|		}
 9836|      2|	}
 9837|      0|yy363:
 9838|      0|	YYDEBUG(363, *YYCURSOR);
 9839|      0|	yyaccept = 9;
 9840|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
 9841|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (9841:6): [True: 0, False: 0]
  ------------------
 9842|      0|		if (yych <= '-') {
  ------------------
  |  Branch (9842:7): [True: 0, False: 0]
  ------------------
 9843|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9843:8): [True: 0, False: 0]
  ------------------
 9844|      0|			if (yych <= ',') goto yy315;
  ------------------
  |  Branch (9844:8): [True: 0, False: 0]
  ------------------
 9845|      0|			goto yy297;
 9846|      0|		} else {
 9847|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9847:8): [True: 0, False: 0]
  ------------------
 9848|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (9848:8): [True: 0, False: 0]
  ------------------
 9849|      0|			goto yy472;
 9850|      0|		}
 9851|      0|	} else {
 9852|      0|		if (yych <= '_') {
  ------------------
  |  Branch (9852:7): [True: 0, False: 0]
  ------------------
 9853|      0|			if (yych <= 'U') goto yy533;
  ------------------
  |  Branch (9853:8): [True: 0, False: 0]
  ------------------
 9854|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9854:8): [True: 0, False: 0]
  ------------------
 9855|      0|			if (yych <= '^') goto yy315;
  ------------------
  |  Branch (9855:8): [True: 0, False: 0]
  ------------------
 9856|      0|			goto yy297;
 9857|      0|		} else {
 9858|      0|			if (yych <= 't') {
  ------------------
  |  Branch (9858:8): [True: 0, False: 0]
  ------------------
 9859|      0|				if (yych <= '`') goto yy315;
  ------------------
  |  Branch (9859:9): [True: 0, False: 0]
  ------------------
 9860|      0|				goto yy478;
 9861|      0|			} else {
 9862|      0|				if (yych <= 'u') goto yy537;
  ------------------
  |  Branch (9862:9): [True: 0, False: 0]
  ------------------
 9863|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9863:9): [True: 0, False: 0]
  ------------------
 9864|      0|				goto yy315;
 9865|      0|			}
 9866|      0|		}
 9867|      0|	}
 9868|      1|yy364:
 9869|      1|	YYDEBUG(364, *YYCURSOR);
 9870|      1|	yyaccept = 2;
 9871|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
 9872|      1|	if (yych <= 'N') {
  ------------------
  |  Branch (9872:6): [True: 0, False: 1]
  ------------------
 9873|      0|		if (yych <= '-') {
  ------------------
  |  Branch (9873:7): [True: 0, False: 0]
  ------------------
 9874|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9874:8): [True: 0, False: 0]
  ------------------
 9875|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9875:8): [True: 0, False: 0]
  ------------------
 9876|      0|			goto yy297;
 9877|      0|		} else {
 9878|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9878:8): [True: 0, False: 0]
  ------------------
 9879|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9879:8): [True: 0, False: 0]
  ------------------
 9880|      0|			goto yy472;
 9881|      0|		}
 9882|      1|	} else {
 9883|      1|		if (yych <= '_') {
  ------------------
  |  Branch (9883:7): [True: 0, False: 1]
  ------------------
 9884|      0|			if (yych <= 'O') goto yy534;
  ------------------
  |  Branch (9884:8): [True: 0, False: 0]
  ------------------
 9885|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9885:8): [True: 0, False: 0]
  ------------------
 9886|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9886:8): [True: 0, False: 0]
  ------------------
 9887|      0|			goto yy297;
 9888|      1|		} else {
 9889|      1|			if (yych <= 'n') {
  ------------------
  |  Branch (9889:8): [True: 0, False: 1]
  ------------------
 9890|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9890:9): [True: 0, False: 0]
  ------------------
 9891|      0|				goto yy478;
 9892|      1|			} else {
 9893|      1|				if (yych <= 'o') goto yy538;
  ------------------
  |  Branch (9893:9): [True: 1, False: 0]
  ------------------
 9894|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9894:9): [True: 0, False: 0]
  ------------------
 9895|      0|				goto yy20;
 9896|      0|			}
 9897|      1|		}
 9898|      1|	}
 9899|      4|yy365:
 9900|      4|	YYDEBUG(365, *YYCURSOR);
 9901|      4|	yyaccept = 7;
 9902|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
 9903|      4|	if (yych <= '9') {
  ------------------
  |  Branch (9903:6): [True: 0, False: 4]
  ------------------
 9904|      0|		if (yych <= '(') {
  ------------------
  |  Branch (9904:7): [True: 0, False: 0]
  ------------------
 9905|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (9905:8): [True: 0, False: 0]
  ------------------
 9906|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (9906:9): [True: 0, False: 0]
  ------------------
 9907|      0|				goto yy142;
 9908|      0|			} else {
 9909|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (9909:9): [True: 0, False: 0]
  ------------------
 9910|      0|				goto yy295;
 9911|      0|			}
 9912|      0|		} else {
 9913|      0|			if (yych <= '-') {
  ------------------
  |  Branch (9913:8): [True: 0, False: 0]
  ------------------
 9914|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (9914:9): [True: 0, False: 0]
  ------------------
 9915|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (9915:9): [True: 0, False: 0]
  ------------------
 9916|      0|				goto yy479;
 9917|      0|			} else {
 9918|      0|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (9918:9): [True: 0, False: 0]
  ------------------
 9919|      0|				goto yy142;
 9920|      0|			}
 9921|      0|		}
 9922|      4|	} else {
 9923|      4|		if (yych <= '^') {
  ------------------
  |  Branch (9923:7): [True: 0, False: 4]
  ------------------
 9924|      0|			if (yych <= 'S') {
  ------------------
  |  Branch (9924:8): [True: 0, False: 0]
  ------------------
 9925|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (9925:9): [True: 0, False: 0]
  ------------------
 9926|      0|				goto yy472;
 9927|      0|			} else {
 9928|      0|				if (yych <= 'T') goto yy535;
  ------------------
  |  Branch (9928:9): [True: 0, False: 0]
  ------------------
 9929|      0|				if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9929:9): [True: 0, False: 0]
  ------------------
 9930|      0|				goto yy295;
 9931|      0|			}
 9932|      4|		} else {
 9933|      4|			if (yych <= 's') {
  ------------------
  |  Branch (9933:8): [True: 0, False: 4]
  ------------------
 9934|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (9934:9): [True: 0, False: 0]
  ------------------
 9935|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (9935:9): [True: 0, False: 0]
  ------------------
 9936|      0|				goto yy478;
 9937|      4|			} else {
 9938|      4|				if (yych <= 't') goto yy539;
  ------------------
  |  Branch (9938:9): [True: 3, False: 1]
  ------------------
 9939|      1|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9939:9): [True: 0, False: 1]
  ------------------
 9940|      1|				goto yy295;
 9941|      1|			}
 9942|      4|		}
 9943|      4|	}
 9944|     11|yy366:
 9945|     11|	YYDEBUG(366, *YYCURSOR);
 9946|     11|	yyaccept = 2;
 9947|     11|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     11|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
 9948|     11|	if (yych <= 'D') {
  ------------------
  |  Branch (9948:6): [True: 0, False: 11]
  ------------------
 9949|      0|		if (yych <= '-') {
  ------------------
  |  Branch (9949:7): [True: 0, False: 0]
  ------------------
 9950|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9950:8): [True: 0, False: 0]
  ------------------
 9951|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (9951:8): [True: 0, False: 0]
  ------------------
 9952|      0|			goto yy297;
 9953|      0|		} else {
 9954|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (9954:8): [True: 0, False: 0]
  ------------------
 9955|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (9955:8): [True: 0, False: 0]
  ------------------
 9956|      0|			goto yy472;
 9957|      0|		}
 9958|     11|	} else {
 9959|     11|		if (yych <= '_') {
  ------------------
  |  Branch (9959:7): [True: 0, False: 11]
  ------------------
 9960|      0|			if (yych <= 'E') goto yy536;
  ------------------
  |  Branch (9960:8): [True: 0, False: 0]
  ------------------
 9961|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (9961:8): [True: 0, False: 0]
  ------------------
 9962|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (9962:8): [True: 0, False: 0]
  ------------------
 9963|      0|			goto yy297;
 9964|     11|		} else {
 9965|     11|			if (yych <= 'd') {
  ------------------
  |  Branch (9965:8): [True: 0, False: 11]
  ------------------
 9966|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (9966:9): [True: 0, False: 0]
  ------------------
 9967|      0|				goto yy478;
 9968|     11|			} else {
 9969|     11|				if (yych <= 'e') goto yy540;
  ------------------
  |  Branch (9969:9): [True: 10, False: 1]
  ------------------
 9970|      1|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (9970:9): [True: 0, False: 1]
  ------------------
 9971|      1|				goto yy20;
 9972|      1|			}
 9973|     11|		}
 9974|     11|	}
 9975|     33|yy367:
 9976|     33|	YYDEBUG(367, *YYCURSOR);
 9977|     33|	yyaccept = 4;
 9978|     33|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     33|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     33|#define   YYCURSOR     cursor
  ------------------
 9979|     33|	if (yych <= '/') {
  ------------------
  |  Branch (9979:6): [True: 3, False: 30]
  ------------------
 9980|      3|		if (yych == '.') goto yy75;
  ------------------
  |  Branch (9980:7): [True: 0, False: 3]
  ------------------
 9981|      3|		goto yy177;
 9982|     30|	} else {
 9983|     30|		if (yych <= '5') goto yy541;
  ------------------
  |  Branch (9983:7): [True: 26, False: 4]
  ------------------
 9984|      4|		if (yych == ':') goto yy75;
  ------------------
  |  Branch (9984:7): [True: 0, False: 4]
  ------------------
 9985|      4|		goto yy177;
 9986|      4|	}
 9987|      6|yy368:
 9988|      6|	YYDEBUG(368, *YYCURSOR);
 9989|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
 9990|      6|	if (yych <= 'S') {
  ------------------
  |  Branch (9990:6): [True: 0, False: 6]
  ------------------
 9991|      0|		if (yych <= '@') {
  ------------------
  |  Branch (9991:7): [True: 0, False: 0]
  ------------------
 9992|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (9992:8): [True: 0, False: 0]
  ------------------
 9993|      0|			goto yy20;
 9994|      0|		} else {
 9995|      0|			if (yych <= 'Q') goto yy472;
  ------------------
  |  Branch (9995:8): [True: 0, False: 0]
  ------------------
 9996|      0|			if (yych <= 'R') goto yy542;
  ------------------
  |  Branch (9996:8): [True: 0, False: 0]
  ------------------
 9997|      0|			goto yy524;
 9998|      0|		}
 9999|      6|	} else {
10000|      6|		if (yych <= 'q') {
  ------------------
  |  Branch (10000:7): [True: 0, False: 6]
  ------------------
10001|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10001:8): [True: 0, False: 0]
  ------------------
10002|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10002:8): [True: 0, False: 0]
  ------------------
10003|      0|			goto yy472;
10004|      6|		} else {
10005|      6|			if (yych <= 'r') goto yy542;
  ------------------
  |  Branch (10005:8): [True: 0, False: 6]
  ------------------
10006|      6|			if (yych <= 's') goto yy524;
  ------------------
  |  Branch (10006:8): [True: 5, False: 1]
  ------------------
10007|      1|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10007:8): [True: 0, False: 1]
  ------------------
10008|      1|			goto yy20;
10009|      1|		}
10010|      6|	}
10011|      3|yy369:
10012|      3|	YYDEBUG(369, *YYCURSOR);
10013|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
10014|      3|	if (yych <= 'R') {
  ------------------
  |  Branch (10014:6): [True: 0, False: 3]
  ------------------
10015|      0|		if (yych <= ')') {
  ------------------
  |  Branch (10015:7): [True: 0, False: 0]
  ------------------
10016|      0|			if (yych <= '(') goto yy315;
  ------------------
  |  Branch (10016:8): [True: 0, False: 0]
  ------------------
10017|      0|			goto yy115;
10018|      0|		} else {
10019|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (10019:8): [True: 0, False: 0]
  ------------------
10020|      0|			if (yych <= 'Q') goto yy472;
  ------------------
  |  Branch (10020:8): [True: 0, False: 0]
  ------------------
10021|      0|			goto yy543;
10022|      0|		}
10023|      3|	} else {
10024|      3|		if (yych <= 'q') {
  ------------------
  |  Branch (10024:7): [True: 0, False: 3]
  ------------------
10025|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10025:8): [True: 0, False: 0]
  ------------------
10026|      0|			if (yych <= '`') goto yy315;
  ------------------
  |  Branch (10026:8): [True: 0, False: 0]
  ------------------
10027|      0|			goto yy472;
10028|      3|		} else {
10029|      3|			if (yych <= 'r') goto yy543;
  ------------------
  |  Branch (10029:8): [True: 3, False: 0]
  ------------------
10030|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10030:8): [True: 0, False: 0]
  ------------------
10031|      0|			goto yy315;
10032|      0|		}
10033|      3|	}
10034|      0|yy370:
10035|      0|	YYDEBUG(370, *YYCURSOR);
10036|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10037|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (10037:6): [True: 0, False: 0]
  ------------------
10038|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (10038:7): [True: 0, False: 0]
  ------------------
10039|      0|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10039:7): [True: 0, False: 0]
  ------------------
10040|      0|		goto yy544;
10041|      0|	} else {
10042|      0|		if (yych <= '`') {
  ------------------
  |  Branch (10042:7): [True: 0, False: 0]
  ------------------
10043|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10043:8): [True: 0, False: 0]
  ------------------
10044|      0|			goto yy20;
10045|      0|		} else {
10046|      0|			if (yych <= 'a') goto yy544;
  ------------------
  |  Branch (10046:8): [True: 0, False: 0]
  ------------------
10047|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10047:8): [True: 0, False: 0]
  ------------------
10048|      0|			goto yy20;
10049|      0|		}
10050|      0|	}
10051|      0|yy371:
10052|      0|	YYDEBUG(371, *YYCURSOR);
10053|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10054|      0|	if (yych <= 'O') {
  ------------------
  |  Branch (10054:6): [True: 0, False: 0]
  ------------------
10055|      0|		if (yych <= ')') {
  ------------------
  |  Branch (10055:7): [True: 0, False: 0]
  ------------------
10056|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (10056:8): [True: 0, False: 0]
  ------------------
10057|      0|			goto yy115;
10058|      0|		} else {
10059|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10059:8): [True: 0, False: 0]
  ------------------
10060|      0|			if (yych <= 'N') goto yy472;
  ------------------
  |  Branch (10060:8): [True: 0, False: 0]
  ------------------
10061|      0|			goto yy545;
10062|      0|		}
10063|      0|	} else {
10064|      0|		if (yych <= 'n') {
  ------------------
  |  Branch (10064:7): [True: 0, False: 0]
  ------------------
10065|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10065:8): [True: 0, False: 0]
  ------------------
10066|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10066:8): [True: 0, False: 0]
  ------------------
10067|      0|			goto yy472;
10068|      0|		} else {
10069|      0|			if (yych <= 'o') goto yy545;
  ------------------
  |  Branch (10069:8): [True: 0, False: 0]
  ------------------
10070|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10070:8): [True: 0, False: 0]
  ------------------
10071|      0|			goto yy20;
10072|      0|		}
10073|      0|	}
10074|      2|yy372:
10075|      2|	YYDEBUG(372, *YYCURSOR);
10076|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
10077|      2|	if (yych <= 'S') {
  ------------------
  |  Branch (10077:6): [True: 2, False: 0]
  ------------------
10078|      2|		if (yych <= ')') {
  ------------------
  |  Branch (10078:7): [True: 0, False: 2]
  ------------------
10079|      0|			if (yych <= '(') goto yy315;
  ------------------
  |  Branch (10079:8): [True: 0, False: 0]
  ------------------
10080|      0|			goto yy115;
10081|      2|		} else {
10082|      2|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (10082:8): [True: 0, False: 2]
  ------------------
10083|      2|			if (yych <= 'R') goto yy472;
  ------------------
  |  Branch (10083:8): [True: 1, False: 1]
  ------------------
10084|      1|			goto yy546;
10085|      2|		}
10086|      2|	} else {
10087|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (10087:7): [True: 0, False: 0]
  ------------------
10088|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10088:8): [True: 0, False: 0]
  ------------------
10089|      0|			if (yych <= '`') goto yy315;
  ------------------
  |  Branch (10089:8): [True: 0, False: 0]
  ------------------
10090|      0|			goto yy472;
10091|      0|		} else {
10092|      0|			if (yych <= 's') goto yy546;
  ------------------
  |  Branch (10092:8): [True: 0, False: 0]
  ------------------
10093|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10093:8): [True: 0, False: 0]
  ------------------
10094|      0|			goto yy315;
10095|      0|		}
10096|      0|	}
10097|     10|yy373:
10098|     10|	YYDEBUG(373, *YYCURSOR);
10099|     10|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
10100|     10|	if (yych <= 'L') {
  ------------------
  |  Branch (10100:6): [True: 0, False: 10]
  ------------------
10101|      0|		if (yych <= ')') {
  ------------------
  |  Branch (10101:7): [True: 0, False: 0]
  ------------------
10102|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (10102:8): [True: 0, False: 0]
  ------------------
10103|      0|			goto yy115;
10104|      0|		} else {
10105|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10105:8): [True: 0, False: 0]
  ------------------
10106|      0|			if (yych <= 'K') goto yy472;
  ------------------
  |  Branch (10106:8): [True: 0, False: 0]
  ------------------
10107|      0|			goto yy547;
10108|      0|		}
10109|     10|	} else {
10110|     10|		if (yych <= 'k') {
  ------------------
  |  Branch (10110:7): [True: 10, False: 0]
  ------------------
10111|     10|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10111:8): [True: 10, False: 0]
  ------------------
10112|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10112:8): [True: 0, False: 0]
  ------------------
10113|      0|			goto yy472;
10114|      0|		} else {
10115|      0|			if (yych <= 'l') goto yy547;
  ------------------
  |  Branch (10115:8): [True: 0, False: 0]
  ------------------
10116|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10116:8): [True: 0, False: 0]
  ------------------
10117|      0|			goto yy20;
10118|      0|		}
10119|     10|	}
10120|      9|yy374:
10121|      9|	YYDEBUG(374, *YYCURSOR);
10122|      9|	yyaccept = 2;
10123|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
10124|      9|	if (yych <= 'R') {
  ------------------
  |  Branch (10124:6): [True: 5, False: 4]
  ------------------
10125|      5|		if (yych <= '-') {
  ------------------
  |  Branch (10125:7): [True: 0, False: 5]
  ------------------
10126|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10126:8): [True: 0, False: 0]
  ------------------
10127|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (10127:8): [True: 0, False: 0]
  ------------------
10128|      0|			goto yy297;
10129|      5|		} else {
10130|      5|			if (yych <= '/') {
  ------------------
  |  Branch (10130:8): [True: 3, False: 2]
  ------------------
10131|      3|				if (yych <= '.') goto yy20;
  ------------------
  |  Branch (10131:9): [True: 0, False: 3]
  ------------------
10132|      3|				goto yy297;
10133|      3|			} else {
10134|      2|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10134:9): [True: 2, False: 0]
  ------------------
10135|      0|				if (yych <= 'Q') goto yy472;
  ------------------
  |  Branch (10135:9): [True: 0, False: 0]
  ------------------
10136|      0|				goto yy542;
10137|      0|			}
10138|      5|		}
10139|      5|	} else {
10140|      4|		if (yych <= '`') {
  ------------------
  |  Branch (10140:7): [True: 0, False: 4]
  ------------------
10141|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (10141:8): [True: 0, False: 0]
  ------------------
10142|      0|				if (yych <= 'S') goto yy524;
  ------------------
  |  Branch (10142:9): [True: 0, False: 0]
  ------------------
10143|      0|				goto yy472;
10144|      0|			} else {
10145|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (10145:9): [True: 0, False: 0]
  ------------------
10146|      0|				goto yy20;
10147|      0|			}
10148|      4|		} else {
10149|      4|			if (yych <= 'r') {
  ------------------
  |  Branch (10149:8): [True: 0, False: 4]
  ------------------
10150|      0|				if (yych <= 'q') goto yy478;
  ------------------
  |  Branch (10150:9): [True: 0, False: 0]
  ------------------
10151|      0|				goto yy548;
10152|      4|			} else {
10153|      4|				if (yych <= 's') goto yy527;
  ------------------
  |  Branch (10153:9): [True: 4, False: 0]
  ------------------
10154|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10154:9): [True: 0, False: 0]
  ------------------
10155|      0|				goto yy20;
10156|      0|			}
10157|      4|		}
10158|      4|	}
10159|      5|yy375:
10160|      5|	YYDEBUG(375, *YYCURSOR);
10161|      5|	yyaccept = 9;
10162|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
10163|      5|	if (yych <= 'Q') {
  ------------------
  |  Branch (10163:6): [True: 2, False: 3]
  ------------------
10164|      2|		if (yych <= '-') {
  ------------------
  |  Branch (10164:7): [True: 2, False: 0]
  ------------------
10165|      2|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10165:8): [True: 2, False: 0]
  ------------------
10166|      0|			if (yych <= ',') goto yy315;
  ------------------
  |  Branch (10166:8): [True: 0, False: 0]
  ------------------
10167|      0|			goto yy297;
10168|      0|		} else {
10169|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10169:8): [True: 0, False: 0]
  ------------------
10170|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (10170:8): [True: 0, False: 0]
  ------------------
10171|      0|			goto yy472;
10172|      0|		}
10173|      3|	} else {
10174|      3|		if (yych <= '_') {
  ------------------
  |  Branch (10174:7): [True: 0, False: 3]
  ------------------
10175|      0|			if (yych <= 'R') goto yy543;
  ------------------
  |  Branch (10175:8): [True: 0, False: 0]
  ------------------
10176|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10176:8): [True: 0, False: 0]
  ------------------
10177|      0|			if (yych <= '^') goto yy315;
  ------------------
  |  Branch (10177:8): [True: 0, False: 0]
  ------------------
10178|      0|			goto yy297;
10179|      3|		} else {
10180|      3|			if (yych <= 'q') {
  ------------------
  |  Branch (10180:8): [True: 0, False: 3]
  ------------------
10181|      0|				if (yych <= '`') goto yy315;
  ------------------
  |  Branch (10181:9): [True: 0, False: 0]
  ------------------
10182|      0|				goto yy478;
10183|      3|			} else {
10184|      3|				if (yych <= 'r') goto yy549;
  ------------------
  |  Branch (10184:9): [True: 2, False: 1]
  ------------------
10185|      1|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10185:9): [True: 0, False: 1]
  ------------------
10186|      1|				goto yy315;
10187|      1|			}
10188|      3|		}
10189|      3|	}
10190|      0|yy376:
10191|      0|	YYDEBUG(376, *YYCURSOR);
10192|      0|	yyaccept = 2;
10193|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10194|      0|	if (yych <= '@') {
  ------------------
  |  Branch (10194:6): [True: 0, False: 0]
  ------------------
10195|      0|		if (yych <= ',') {
  ------------------
  |  Branch (10195:7): [True: 0, False: 0]
  ------------------
10196|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10196:8): [True: 0, False: 0]
  ------------------
10197|      0|			goto yy20;
10198|      0|		} else {
10199|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (10199:8): [True: 0, False: 0]
  ------------------
10200|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (10200:8): [True: 0, False: 0]
  ------------------
10201|      0|			goto yy20;
10202|      0|		}
10203|      0|	} else {
10204|      0|		if (yych <= '_') {
  ------------------
  |  Branch (10204:7): [True: 0, False: 0]
  ------------------
10205|      0|			if (yych <= 'A') goto yy544;
  ------------------
  |  Branch (10205:8): [True: 0, False: 0]
  ------------------
10206|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10206:8): [True: 0, False: 0]
  ------------------
10207|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (10207:8): [True: 0, False: 0]
  ------------------
10208|      0|			goto yy297;
10209|      0|		} else {
10210|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10210:8): [True: 0, False: 0]
  ------------------
10211|      0|			if (yych <= 'a') goto yy550;
  ------------------
  |  Branch (10211:8): [True: 0, False: 0]
  ------------------
10212|      0|			if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10212:8): [True: 0, False: 0]
  ------------------
10213|      0|			goto yy20;
10214|      0|		}
10215|      0|	}
10216|      3|yy377:
10217|      3|	YYDEBUG(377, *YYCURSOR);
10218|      3|	yyaccept = 2;
10219|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
10220|      3|	if (yych <= 'N') {
  ------------------
  |  Branch (10220:6): [True: 2, False: 1]
  ------------------
10221|      2|		if (yych <= '-') {
  ------------------
  |  Branch (10221:7): [True: 1, False: 1]
  ------------------
10222|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10222:8): [True: 0, False: 1]
  ------------------
10223|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (10223:8): [True: 1, False: 0]
  ------------------
10224|      0|			goto yy297;
10225|      1|		} else {
10226|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10226:8): [True: 0, False: 1]
  ------------------
10227|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10227:8): [True: 1, False: 0]
  ------------------
10228|      0|			goto yy472;
10229|      1|		}
10230|      2|	} else {
10231|      1|		if (yych <= '_') {
  ------------------
  |  Branch (10231:7): [True: 0, False: 1]
  ------------------
10232|      0|			if (yych <= 'O') goto yy545;
  ------------------
  |  Branch (10232:8): [True: 0, False: 0]
  ------------------
10233|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10233:8): [True: 0, False: 0]
  ------------------
10234|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (10234:8): [True: 0, False: 0]
  ------------------
10235|      0|			goto yy297;
10236|      1|		} else {
10237|      1|			if (yych <= 'n') {
  ------------------
  |  Branch (10237:8): [True: 0, False: 1]
  ------------------
10238|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10238:9): [True: 0, False: 0]
  ------------------
10239|      0|				goto yy478;
10240|      1|			} else {
10241|      1|				if (yych <= 'o') goto yy551;
  ------------------
  |  Branch (10241:9): [True: 1, False: 0]
  ------------------
10242|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10242:9): [True: 0, False: 0]
  ------------------
10243|      0|				goto yy20;
10244|      0|			}
10245|      1|		}
10246|      1|	}
10247|      7|yy378:
10248|      7|	YYDEBUG(378, *YYCURSOR);
10249|      7|	yyaccept = 9;
10250|      7|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      7|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
10251|      7|	if (yych <= 'R') {
  ------------------
  |  Branch (10251:6): [True: 1, False: 6]
  ------------------
10252|      1|		if (yych <= '-') {
  ------------------
  |  Branch (10252:7): [True: 1, False: 0]
  ------------------
10253|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10253:8): [True: 0, False: 1]
  ------------------
10254|      1|			if (yych <= ',') goto yy315;
  ------------------
  |  Branch (10254:8): [True: 1, False: 0]
  ------------------
10255|      0|			goto yy297;
10256|      1|		} else {
10257|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10257:8): [True: 0, False: 0]
  ------------------
10258|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (10258:8): [True: 0, False: 0]
  ------------------
10259|      0|			goto yy472;
10260|      0|		}
10261|      6|	} else {
10262|      6|		if (yych <= '_') {
  ------------------
  |  Branch (10262:7): [True: 2, False: 4]
  ------------------
10263|      2|			if (yych <= 'S') goto yy546;
  ------------------
  |  Branch (10263:8): [True: 0, False: 2]
  ------------------
10264|      2|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10264:8): [True: 2, False: 0]
  ------------------
10265|      0|			if (yych <= '^') goto yy315;
  ------------------
  |  Branch (10265:8): [True: 0, False: 0]
  ------------------
10266|      0|			goto yy297;
10267|      4|		} else {
10268|      4|			if (yych <= 'r') {
  ------------------
  |  Branch (10268:8): [True: 0, False: 4]
  ------------------
10269|      0|				if (yych <= '`') goto yy315;
  ------------------
  |  Branch (10269:9): [True: 0, False: 0]
  ------------------
10270|      0|				goto yy478;
10271|      4|			} else {
10272|      4|				if (yych <= 's') goto yy552;
  ------------------
  |  Branch (10272:9): [True: 4, False: 0]
  ------------------
10273|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10273:9): [True: 0, False: 0]
  ------------------
10274|      0|				goto yy315;
10275|      0|			}
10276|      4|		}
10277|      6|	}
10278|      6|yy379:
10279|      6|	YYDEBUG(379, *YYCURSOR);
10280|      6|	yyaccept = 2;
10281|      6|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      6|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
10282|      6|	if (yych <= 'K') {
  ------------------
  |  Branch (10282:6): [True: 0, False: 6]
  ------------------
10283|      0|		if (yych <= '-') {
  ------------------
  |  Branch (10283:7): [True: 0, False: 0]
  ------------------
10284|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10284:8): [True: 0, False: 0]
  ------------------
10285|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (10285:8): [True: 0, False: 0]
  ------------------
10286|      0|			goto yy297;
10287|      0|		} else {
10288|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10288:8): [True: 0, False: 0]
  ------------------
10289|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10289:8): [True: 0, False: 0]
  ------------------
10290|      0|			goto yy472;
10291|      0|		}
10292|      6|	} else {
10293|      6|		if (yych <= '_') {
  ------------------
  |  Branch (10293:7): [True: 0, False: 6]
  ------------------
10294|      0|			if (yych <= 'L') goto yy547;
  ------------------
  |  Branch (10294:8): [True: 0, False: 0]
  ------------------
10295|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10295:8): [True: 0, False: 0]
  ------------------
10296|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (10296:8): [True: 0, False: 0]
  ------------------
10297|      0|			goto yy297;
10298|      6|		} else {
10299|      6|			if (yych <= 'k') {
  ------------------
  |  Branch (10299:8): [True: 6, False: 0]
  ------------------
10300|      6|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10300:9): [True: 0, False: 6]
  ------------------
10301|      6|				goto yy478;
10302|      6|			} else {
10303|      0|				if (yych <= 'l') goto yy553;
  ------------------
  |  Branch (10303:9): [True: 0, False: 0]
  ------------------
10304|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10304:9): [True: 0, False: 0]
  ------------------
10305|      0|				goto yy20;
10306|      0|			}
10307|      6|		}
10308|      6|	}
10309|      2|yy380:
10310|      2|	YYDEBUG(380, *YYCURSOR);
10311|      2|	yyaccept = 2;
10312|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
10313|      2|	if (yych <= '.') {
  ------------------
  |  Branch (10313:6): [True: 1, False: 1]
  ------------------
10314|      1|		if (yych <= ' ') {
  ------------------
  |  Branch (10314:7): [True: 1, False: 0]
  ------------------
10315|      1|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (10315:8): [True: 1, False: 0]
  ------------------
10316|      0|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (10316:8): [True: 0, False: 0]
  ------------------
10317|      0|			goto yy142;
10318|      0|		} else {
10319|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10319:8): [True: 0, False: 0]
  ------------------
10320|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (10320:8): [True: 0, False: 0]
  ------------------
10321|      0|			goto yy142;
10322|      0|		}
10323|      1|	} else {
10324|      1|		if (yych <= 'H') {
  ------------------
  |  Branch (10324:7): [True: 0, False: 1]
  ------------------
10325|      0|			if (yych <= '/') goto yy20;
  ------------------
  |  Branch (10325:8): [True: 0, False: 0]
  ------------------
10326|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (10326:8): [True: 0, False: 0]
  ------------------
10327|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10327:8): [True: 0, False: 0]
  ------------------
10328|      0|			goto yy472;
10329|      1|		} else {
10330|      1|			if (yych <= 'Z') {
  ------------------
  |  Branch (10330:8): [True: 0, False: 1]
  ------------------
10331|      0|				if (yych <= 'I') goto yy554;
  ------------------
  |  Branch (10331:9): [True: 0, False: 0]
  ------------------
10332|      0|				goto yy472;
10333|      1|			} else {
10334|      1|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10334:9): [True: 0, False: 1]
  ------------------
10335|      1|				if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10335:9): [True: 0, False: 1]
  ------------------
10336|      1|				goto yy20;
10337|      1|			}
10338|      1|		}
10339|      1|	}
10340|      1|yy381:
10341|      1|	YYDEBUG(381, *YYCURSOR);
10342|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
10343|      1|	if (yych <= 'N') {
  ------------------
  |  Branch (10343:6): [True: 0, False: 1]
  ------------------
10344|      0|		if (yych <= ')') {
  ------------------
  |  Branch (10344:7): [True: 0, False: 0]
  ------------------
10345|      0|			if (yych <= '(') goto yy315;
  ------------------
  |  Branch (10345:8): [True: 0, False: 0]
  ------------------
10346|      0|			goto yy115;
10347|      0|		} else {
10348|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (10348:8): [True: 0, False: 0]
  ------------------
10349|      0|			if (yych <= 'M') goto yy472;
  ------------------
  |  Branch (10349:8): [True: 0, False: 0]
  ------------------
10350|      0|			goto yy555;
10351|      0|		}
10352|      1|	} else {
10353|      1|		if (yych <= 'm') {
  ------------------
  |  Branch (10353:7): [True: 1, False: 0]
  ------------------
10354|      1|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10354:8): [True: 0, False: 1]
  ------------------
10355|      1|			if (yych <= '`') goto yy315;
  ------------------
  |  Branch (10355:8): [True: 0, False: 1]
  ------------------
10356|      1|			goto yy472;
10357|      1|		} else {
10358|      0|			if (yych <= 'n') goto yy555;
  ------------------
  |  Branch (10358:8): [True: 0, False: 0]
  ------------------
10359|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10359:8): [True: 0, False: 0]
  ------------------
10360|      0|			goto yy315;
10361|      0|		}
10362|      1|	}
10363|      2|yy382:
10364|      2|	YYDEBUG(382, *YYCURSOR);
10365|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
10366|      2|	if (yych <= 'K') {
  ------------------
  |  Branch (10366:6): [True: 0, False: 2]
  ------------------
10367|      0|		if (yych <= ')') {
  ------------------
  |  Branch (10367:7): [True: 0, False: 0]
  ------------------
10368|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (10368:8): [True: 0, False: 0]
  ------------------
10369|      0|			goto yy115;
10370|      0|		} else {
10371|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10371:8): [True: 0, False: 0]
  ------------------
10372|      0|			if (yych <= 'J') goto yy472;
  ------------------
  |  Branch (10372:8): [True: 0, False: 0]
  ------------------
10373|      0|			goto yy546;
10374|      0|		}
10375|      2|	} else {
10376|      2|		if (yych <= 'j') {
  ------------------
  |  Branch (10376:7): [True: 2, False: 0]
  ------------------
10377|      2|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10377:8): [True: 0, False: 2]
  ------------------
10378|      2|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10378:8): [True: 0, False: 2]
  ------------------
10379|      2|			goto yy472;
10380|      2|		} else {
10381|      0|			if (yych <= 'k') goto yy546;
  ------------------
  |  Branch (10381:8): [True: 0, False: 0]
  ------------------
10382|      0|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10382:8): [True: 0, False: 0]
  ------------------
10383|      0|			goto yy20;
10384|      0|		}
10385|      2|	}
10386|      0|yy383:
10387|      0|	YYDEBUG(383, *YYCURSOR);
10388|      0|	yyaccept = 9;
10389|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10390|      0|	if (yych <= 'M') {
  ------------------
  |  Branch (10390:6): [True: 0, False: 0]
  ------------------
10391|      0|		if (yych <= '-') {
  ------------------
  |  Branch (10391:7): [True: 0, False: 0]
  ------------------
10392|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10392:8): [True: 0, False: 0]
  ------------------
10393|      0|			if (yych <= ',') goto yy315;
  ------------------
  |  Branch (10393:8): [True: 0, False: 0]
  ------------------
10394|      0|			goto yy297;
10395|      0|		} else {
10396|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10396:8): [True: 0, False: 0]
  ------------------
10397|      0|			if (yych <= '@') goto yy315;
  ------------------
  |  Branch (10397:8): [True: 0, False: 0]
  ------------------
10398|      0|			goto yy472;
10399|      0|		}
10400|      0|	} else {
10401|      0|		if (yych <= '_') {
  ------------------
  |  Branch (10401:7): [True: 0, False: 0]
  ------------------
10402|      0|			if (yych <= 'N') goto yy555;
  ------------------
  |  Branch (10402:8): [True: 0, False: 0]
  ------------------
10403|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10403:8): [True: 0, False: 0]
  ------------------
10404|      0|			if (yych <= '^') goto yy315;
  ------------------
  |  Branch (10404:8): [True: 0, False: 0]
  ------------------
10405|      0|			goto yy297;
10406|      0|		} else {
10407|      0|			if (yych <= 'm') {
  ------------------
  |  Branch (10407:8): [True: 0, False: 0]
  ------------------
10408|      0|				if (yych <= '`') goto yy315;
  ------------------
  |  Branch (10408:9): [True: 0, False: 0]
  ------------------
10409|      0|				goto yy478;
10410|      0|			} else {
10411|      0|				if (yych <= 'n') goto yy556;
  ------------------
  |  Branch (10411:9): [True: 0, False: 0]
  ------------------
10412|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10412:9): [True: 0, False: 0]
  ------------------
10413|      0|				goto yy315;
10414|      0|			}
10415|      0|		}
10416|      0|	}
10417|      0|yy384:
10418|      0|	YYDEBUG(384, *YYCURSOR);
10419|      0|	yyaccept = 2;
10420|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10421|      0|	if (yych <= 'J') {
  ------------------
  |  Branch (10421:6): [True: 0, False: 0]
  ------------------
10422|      0|		if (yych <= '-') {
  ------------------
  |  Branch (10422:7): [True: 0, False: 0]
  ------------------
10423|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10423:8): [True: 0, False: 0]
  ------------------
10424|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (10424:8): [True: 0, False: 0]
  ------------------
10425|      0|			goto yy297;
10426|      0|		} else {
10427|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10427:8): [True: 0, False: 0]
  ------------------
10428|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10428:8): [True: 0, False: 0]
  ------------------
10429|      0|			goto yy472;
10430|      0|		}
10431|      0|	} else {
10432|      0|		if (yych <= '_') {
  ------------------
  |  Branch (10432:7): [True: 0, False: 0]
  ------------------
10433|      0|			if (yych <= 'K') goto yy546;
  ------------------
  |  Branch (10433:8): [True: 0, False: 0]
  ------------------
10434|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10434:8): [True: 0, False: 0]
  ------------------
10435|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (10435:8): [True: 0, False: 0]
  ------------------
10436|      0|			goto yy297;
10437|      0|		} else {
10438|      0|			if (yych <= 'j') {
  ------------------
  |  Branch (10438:8): [True: 0, False: 0]
  ------------------
10439|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10439:9): [True: 0, False: 0]
  ------------------
10440|      0|				goto yy478;
10441|      0|			} else {
10442|      0|				if (yych <= 'k') goto yy552;
  ------------------
  |  Branch (10442:9): [True: 0, False: 0]
  ------------------
10443|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10443:9): [True: 0, False: 0]
  ------------------
10444|      0|				goto yy20;
10445|      0|			}
10446|      0|		}
10447|      0|	}
10448|      3|yy385:
10449|      3|	YYDEBUG(385, *YYCURSOR);
10450|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
10451|      3|	if (yych <= 'T') {
  ------------------
  |  Branch (10451:6): [True: 0, False: 3]
  ------------------
10452|      0|		if (yych <= ')') {
  ------------------
  |  Branch (10452:7): [True: 0, False: 0]
  ------------------
10453|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (10453:8): [True: 0, False: 0]
  ------------------
10454|      0|			goto yy115;
10455|      0|		} else {
10456|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10456:8): [True: 0, False: 0]
  ------------------
10457|      0|			if (yych <= 'S') goto yy472;
  ------------------
  |  Branch (10457:8): [True: 0, False: 0]
  ------------------
10458|      0|			goto yy557;
10459|      0|		}
10460|      3|	} else {
10461|      3|		if (yych <= 's') {
  ------------------
  |  Branch (10461:7): [True: 0, False: 3]
  ------------------
10462|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10462:8): [True: 0, False: 0]
  ------------------
10463|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10463:8): [True: 0, False: 0]
  ------------------
10464|      0|			goto yy472;
10465|      3|		} else {
10466|      3|			if (yych <= 't') goto yy557;
  ------------------
  |  Branch (10466:8): [True: 2, False: 1]
  ------------------
10467|      1|			if (yych <= 'z') goto yy472;
  ------------------
  |  Branch (10467:8): [True: 1, False: 0]
  ------------------
10468|      0|			goto yy20;
10469|      1|		}
10470|      3|	}
10471|      0|yy386:
10472|      0|	YYDEBUG(386, *YYCURSOR);
10473|      0|	yyaccept = 2;
10474|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10475|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (10475:6): [True: 0, False: 0]
  ------------------
10476|      0|		if (yych <= '-') {
  ------------------
  |  Branch (10476:7): [True: 0, False: 0]
  ------------------
10477|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (10477:8): [True: 0, False: 0]
  ------------------
10478|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (10478:8): [True: 0, False: 0]
  ------------------
10479|      0|			goto yy297;
10480|      0|		} else {
10481|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (10481:8): [True: 0, False: 0]
  ------------------
10482|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (10482:8): [True: 0, False: 0]
  ------------------
10483|      0|			goto yy472;
10484|      0|		}
10485|      0|	} else {
10486|      0|		if (yych <= '_') {
  ------------------
  |  Branch (10486:7): [True: 0, False: 0]
  ------------------
10487|      0|			if (yych <= 'T') goto yy557;
  ------------------
  |  Branch (10487:8): [True: 0, False: 0]
  ------------------
10488|      0|			if (yych <= 'Z') goto yy472;
  ------------------
  |  Branch (10488:8): [True: 0, False: 0]
  ------------------
10489|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (10489:8): [True: 0, False: 0]
  ------------------
10490|      0|			goto yy297;
10491|      0|		} else {
10492|      0|			if (yych <= 's') {
  ------------------
  |  Branch (10492:8): [True: 0, False: 0]
  ------------------
10493|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (10493:9): [True: 0, False: 0]
  ------------------
10494|      0|				goto yy478;
10495|      0|			} else {
10496|      0|				if (yych <= 't') goto yy558;
  ------------------
  |  Branch (10496:9): [True: 0, False: 0]
  ------------------
10497|      0|				if (yych <= 'z') goto yy478;
  ------------------
  |  Branch (10497:9): [True: 0, False: 0]
  ------------------
10498|      0|				goto yy20;
10499|      0|			}
10500|      0|		}
10501|      0|	}
10502|      0|yy387:
10503|      0|	YYDEBUG(387, *YYCURSOR);
10504|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10505|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (10505:6): [True: 0, False: 0]
  ------------------
10506|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10507|      0|	if (yych == 0xA0) goto yy193;
  ------------------
  |  Branch (10507:6): [True: 0, False: 0]
  ------------------
10508|      0|	goto yy59;
10509|      1|yy388:
10510|      1|	YYDEBUG(388, *YYCURSOR);
10511|      1|	yyaccept = 0;
10512|      1|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
10513|      1|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      1|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (10513:6): [True: 0, False: 1]
  ------------------
10514|      1|	yych = *YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
10515|      1|	if (yych == 0xE2) goto yy559;
  ------------------
  |  Branch (10515:6): [True: 0, False: 1]
  ------------------
10516|      1|	goto yy8;
10517|    366|yy389:
10518|    366|	YYDEBUG(389, *YYCURSOR);
10519|    366|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    366|#define   YYCURSOR     cursor
  ------------------
10520|    366|	if (yych <= 0xC1) {
  ------------------
  |  Branch (10520:6): [True: 339, False: 27]
  ------------------
10521|    339|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (10521:7): [True: 19, False: 320]
  ------------------
10522|    320|		if (yych <= '9') goto yy560;
  ------------------
  |  Branch (10522:7): [True: 186, False: 134]
  ------------------
10523|    134|		goto yy196;
10524|    320|	} else {
10525|     27|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (10525:7): [True: 10, False: 17]
  ------------------
10526|     17|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (10526:7): [True: 1, False: 16]
  ------------------
10527|     16|		goto yy196;
10528|     17|	}
10529|      7|yy390:
10530|      7|	YYDEBUG(390, *YYCURSOR);
10531|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
10532|      7|	if (yych == 'C') goto yy443;
  ------------------
  |  Branch (10532:6): [True: 3, False: 4]
  ------------------
10533|      4|	if (yych == 'c') goto yy443;
  ------------------
  |  Branch (10533:6): [True: 0, False: 4]
  ------------------
10534|      4|	goto yy59;
10535|    107|yy391:
10536|    107|	YYDEBUG(391, *YYCURSOR);
10537|    107|	yyaccept = 2;
10538|    107|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    107|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    107|#define   YYCURSOR     cursor
  ------------------
10539|    107|	if (yych <= 'X') {
  ------------------
  |  Branch (10539:6): [True: 95, False: 12]
  ------------------
10540|     95|		if (yych <= 'E') {
  ------------------
  |  Branch (10540:7): [True: 94, False: 1]
  ------------------
10541|     94|			if (yych <= ' ') {
  ------------------
  |  Branch (10541:8): [True: 6, False: 88]
  ------------------
10542|      6|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (10542:9): [True: 1, False: 5]
  ------------------
10543|      5|				if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (10543:9): [True: 3, False: 2]
  ------------------
10544|      2|				goto yy196;
10545|     88|			} else {
10546|     88|				if (yych <= '9') {
  ------------------
  |  Branch (10546:9): [True: 88, False: 0]
  ------------------
10547|     88|					if (yych <= '/') goto yy20;
  ------------------
  |  Branch (10547:10): [True: 6, False: 82]
  ------------------
10548|     82|					goto yy561;
10549|     88|				} else {
10550|      0|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (10550:10): [True: 0, False: 0]
  ------------------
10551|      0|					goto yy20;
10552|      0|				}
10553|     88|			}
10554|     94|		} else {
10555|      1|			if (yych <= 'M') {
  ------------------
  |  Branch (10555:8): [True: 1, False: 0]
  ------------------
10556|      1|				if (yych <= 'G') {
  ------------------
  |  Branch (10556:9): [True: 0, False: 1]
  ------------------
10557|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (10557:10): [True: 0, False: 0]
  ------------------
10558|      0|					goto yy20;
10559|      1|				} else {
10560|      1|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (10560:10): [True: 0, False: 1]
  ------------------
10561|      1|					if (yych <= 'L') goto yy20;
  ------------------
  |  Branch (10561:10): [True: 0, False: 1]
  ------------------
10562|      1|					goto yy196;
10563|      1|				}
10564|      1|			} else {
10565|      0|				if (yych <= 'U') {
  ------------------
  |  Branch (10565:9): [True: 0, False: 0]
  ------------------
10566|      0|					if (yych <= 'R') goto yy20;
  ------------------
  |  Branch (10566:10): [True: 0, False: 0]
  ------------------
10567|      0|					goto yy196;
10568|      0|				} else {
10569|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (10569:10): [True: 0, False: 0]
  ------------------
10570|      0|					goto yy20;
10571|      0|				}
10572|      0|			}
10573|      1|		}
10574|     95|	} else {
10575|     12|		if (yych <= 'r') {
  ------------------
  |  Branch (10575:7): [True: 2, False: 10]
  ------------------
10576|      2|			if (yych <= 'f') {
  ------------------
  |  Branch (10576:8): [True: 1, False: 1]
  ------------------
10577|      1|				if (yych <= 'c') {
  ------------------
  |  Branch (10577:9): [True: 1, False: 0]
  ------------------
10578|      1|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (10578:10): [True: 0, False: 1]
  ------------------
10579|      1|					goto yy20;
10580|      1|				} else {
10581|      0|					if (yych == 'e') goto yy20;
  ------------------
  |  Branch (10581:10): [True: 0, False: 0]
  ------------------
10582|      0|					goto yy196;
10583|      0|				}
10584|      1|			} else {
10585|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (10585:9): [True: 0, False: 1]
  ------------------
10586|      0|					if (yych <= 'g') goto yy20;
  ------------------
  |  Branch (10586:10): [True: 0, False: 0]
  ------------------
10587|      0|					goto yy196;
10588|      1|				} else {
10589|      1|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (10589:10): [True: 0, False: 1]
  ------------------
10590|      1|					goto yy20;
10591|      1|				}
10592|      1|			}
10593|     10|		} else {
10594|     10|			if (yych <= 'y') {
  ------------------
  |  Branch (10594:8): [True: 3, False: 7]
  ------------------
10595|      3|				if (yych <= 'v') {
  ------------------
  |  Branch (10595:9): [True: 3, False: 0]
  ------------------
10596|      3|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (10596:10): [True: 3, False: 0]
  ------------------
10597|      0|					goto yy20;
10598|      3|				} else {
10599|      0|					if (yych == 'x') goto yy20;
  ------------------
  |  Branch (10599:10): [True: 0, False: 0]
  ------------------
10600|      0|					goto yy196;
10601|      0|				}
10602|      7|			} else {
10603|      7|				if (yych <= 0xC2) {
  ------------------
  |  Branch (10603:9): [True: 2, False: 5]
  ------------------
10604|      2|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (10604:10): [True: 1, False: 1]
  ------------------
10605|      1|					goto yy97;
10606|      5|				} else {
10607|      5|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (10607:10): [True: 0, False: 5]
  ------------------
10608|      5|					goto yy20;
10609|      5|				}
10610|      7|			}
10611|     10|		}
10612|     12|	}
10613|     86|yy392:
10614|     86|	YYDEBUG(392, *YYCURSOR);
10615|     86|	yyaccept = 2;
10616|     86|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     86|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     86|#define   YYCURSOR     cursor
  ------------------
10617|     86|	if (yych <= 'X') {
  ------------------
  |  Branch (10617:6): [True: 67, False: 19]
  ------------------
10618|     67|		if (yych <= 'E') {
  ------------------
  |  Branch (10618:7): [True: 64, False: 3]
  ------------------
10619|     64|			if (yych <= ' ') {
  ------------------
  |  Branch (10619:8): [True: 4, False: 60]
  ------------------
10620|      4|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (10620:9): [True: 0, False: 4]
  ------------------
10621|      4|				if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (10621:9): [True: 4, False: 0]
  ------------------
10622|      0|				goto yy196;
10623|     60|			} else {
10624|     60|				if (yych <= '9') {
  ------------------
  |  Branch (10624:9): [True: 58, False: 2]
  ------------------
10625|     58|					if (yych <= '/') goto yy20;
  ------------------
  |  Branch (10625:10): [True: 7, False: 51]
  ------------------
10626|     51|					goto yy562;
10627|     58|				} else {
10628|      2|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (10628:10): [True: 0, False: 2]
  ------------------
10629|      2|					goto yy20;
10630|      2|				}
10631|     60|			}
10632|     64|		} else {
10633|      3|			if (yych <= 'M') {
  ------------------
  |  Branch (10633:8): [True: 0, False: 3]
  ------------------
10634|      0|				if (yych <= 'G') {
  ------------------
  |  Branch (10634:9): [True: 0, False: 0]
  ------------------
10635|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (10635:10): [True: 0, False: 0]
  ------------------
10636|      0|					goto yy20;
10637|      0|				} else {
10638|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (10638:10): [True: 0, False: 0]
  ------------------
10639|      0|					if (yych <= 'L') goto yy20;
  ------------------
  |  Branch (10639:10): [True: 0, False: 0]
  ------------------
10640|      0|					goto yy196;
10641|      0|				}
10642|      3|			} else {
10643|      3|				if (yych <= 'U') {
  ------------------
  |  Branch (10643:9): [True: 3, False: 0]
  ------------------
10644|      3|					if (yych <= 'R') goto yy20;
  ------------------
  |  Branch (10644:10): [True: 2, False: 1]
  ------------------
10645|      1|					goto yy196;
10646|      3|				} else {
10647|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (10647:10): [True: 0, False: 0]
  ------------------
10648|      0|					goto yy20;
10649|      0|				}
10650|      3|			}
10651|      3|		}
10652|     67|	} else {
10653|     19|		if (yych <= 'r') {
  ------------------
  |  Branch (10653:7): [True: 13, False: 6]
  ------------------
10654|     13|			if (yych <= 'f') {
  ------------------
  |  Branch (10654:8): [True: 12, False: 1]
  ------------------
10655|     12|				if (yych <= 'c') {
  ------------------
  |  Branch (10655:9): [True: 2, False: 10]
  ------------------
10656|      2|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (10656:10): [True: 0, False: 2]
  ------------------
10657|      2|					goto yy20;
10658|     10|				} else {
10659|     10|					if (yych == 'e') goto yy20;
  ------------------
  |  Branch (10659:10): [True: 0, False: 10]
  ------------------
10660|     10|					goto yy196;
10661|     10|				}
10662|     12|			} else {
10663|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (10663:9): [True: 1, False: 0]
  ------------------
10664|      1|					if (yych <= 'g') goto yy20;
  ------------------
  |  Branch (10664:10): [True: 1, False: 0]
  ------------------
10665|      0|					goto yy196;
10666|      1|				} else {
10667|      0|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (10667:10): [True: 0, False: 0]
  ------------------
10668|      0|					goto yy20;
10669|      0|				}
10670|      1|			}
10671|     13|		} else {
10672|      6|			if (yych <= 'y') {
  ------------------
  |  Branch (10672:8): [True: 4, False: 2]
  ------------------
10673|      4|				if (yych <= 'v') {
  ------------------
  |  Branch (10673:9): [True: 3, False: 1]
  ------------------
10674|      3|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (10674:10): [True: 2, False: 1]
  ------------------
10675|      1|					goto yy20;
10676|      3|				} else {
10677|      1|					if (yych == 'x') goto yy20;
  ------------------
  |  Branch (10677:10): [True: 0, False: 1]
  ------------------
10678|      1|					goto yy196;
10679|      1|				}
10680|      4|			} else {
10681|      2|				if (yych <= 0xC2) {
  ------------------
  |  Branch (10681:9): [True: 1, False: 1]
  ------------------
10682|      1|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (10682:10): [True: 1, False: 0]
  ------------------
10683|      0|					goto yy97;
10684|      1|				} else {
10685|      1|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (10685:10): [True: 0, False: 1]
  ------------------
10686|      1|					goto yy20;
10687|      1|				}
10688|      2|			}
10689|      6|		}
10690|     19|	}
10691|      6|yy393:
10692|      6|	YYDEBUG(393, *YYCURSOR);
10693|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
10694|      6|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10694:6): [True: 0, False: 6]
  ------------------
10695|      6|	if (yych <= '5') goto yy563;
  ------------------
  |  Branch (10695:6): [True: 3, False: 3]
  ------------------
10696|      3|	if (yych <= '9') goto yy115;
  ------------------
  |  Branch (10696:6): [True: 0, False: 3]
  ------------------
10697|      3|	goto yy59;
10698|     20|yy394:
10699|     20|	YYDEBUG(394, *YYCURSOR);
10700|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
10701|     20|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (10701:6): [True: 0, False: 20]
  ------------------
10702|     20|	if (yych <= '9') goto yy115;
  ------------------
  |  Branch (10702:6): [True: 19, False: 1]
  ------------------
10703|      1|	goto yy20;
10704|     40|yy395:
10705|     40|	YYDEBUG(395, *YYCURSOR);
10706|     40|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     40|#define   YYCURSOR     cursor
  ------------------
10707|     40|	if (yych <= 0xC1) {
  ------------------
  |  Branch (10707:6): [True: 39, False: 1]
  ------------------
10708|     39|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (10708:7): [True: 13, False: 26]
  ------------------
10709|     26|		if (yych <= '9') goto yy562;
  ------------------
  |  Branch (10709:7): [True: 25, False: 1]
  ------------------
10710|      1|		goto yy196;
10711|     26|	} else {
10712|      1|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (10712:7): [True: 1, False: 0]
  ------------------
10713|      0|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (10713:7): [True: 0, False: 0]
  ------------------
10714|      0|		goto yy196;
10715|      0|	}
10716|     11|yy396:
10717|     11|	YYDEBUG(396, *YYCURSOR);
10718|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
10719|     11|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10719:6): [True: 2, False: 9]
  ------------------
10720|      9|	if (yych <= '9') goto yy564;
  ------------------
  |  Branch (10720:6): [True: 5, False: 4]
  ------------------
10721|      4|	goto yy59;
10722|      4|yy397:
10723|      4|	YYDEBUG(397, *YYCURSOR);
10724|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
10725|      4|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10725:6): [True: 0, False: 4]
  ------------------
10726|      4|	if (yych <= '9') goto yy565;
  ------------------
  |  Branch (10726:6): [True: 4, False: 0]
  ------------------
10727|      0|	goto yy59;
10728|     18|yy398:
10729|     18|	YYDEBUG(398, *YYCURSOR);
10730|     18|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     18|#define   YYCURSOR     cursor
  ------------------
10731|     18|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10731:6): [True: 9, False: 9]
  ------------------
10732|      9|	if (yych <= '2') goto yy566;
  ------------------
  |  Branch (10732:6): [True: 9, False: 0]
  ------------------
10733|      0|	if (yych <= '3') goto yy568;
  ------------------
  |  Branch (10733:6): [True: 0, False: 0]
  ------------------
10734|      0|	if (yych <= '9') goto yy569;
  ------------------
  |  Branch (10734:6): [True: 0, False: 0]
  ------------------
10735|      0|	goto yy59;
10736|      5|yy399:
10737|      5|	YYDEBUG(399, *YYCURSOR);
10738|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
10739|      5|	if (yych == 'P') goto yy444;
  ------------------
  |  Branch (10739:6): [True: 1, False: 4]
  ------------------
10740|      4|	if (yych == 'p') goto yy444;
  ------------------
  |  Branch (10740:6): [True: 1, False: 3]
  ------------------
10741|      3|	goto yy59;
10742|     14|yy400:
10743|     14|	YYDEBUG(400, *YYCURSOR);
10744|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
10745|     14|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10745:6): [True: 2, False: 12]
  ------------------
10746|     12|	if (yych <= '5') goto yy570;
  ------------------
  |  Branch (10746:6): [True: 9, False: 3]
  ------------------
10747|      3|	if (yych <= '6') goto yy571;
  ------------------
  |  Branch (10747:6): [True: 0, False: 3]
  ------------------
10748|      3|	if (yych <= '9') goto yy572;
  ------------------
  |  Branch (10748:6): [True: 3, False: 0]
  ------------------
10749|      0|	goto yy59;
10750|      7|yy401:
10751|      7|	YYDEBUG(401, *YYCURSOR);
10752|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
10753|      7|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10753:6): [True: 0, False: 7]
  ------------------
10754|      7|	if (yych <= '5') goto yy573;
  ------------------
  |  Branch (10754:6): [True: 6, False: 1]
  ------------------
10755|      1|	if (yych <= '6') goto yy574;
  ------------------
  |  Branch (10755:6): [True: 0, False: 1]
  ------------------
10756|      1|	if (yych <= '9') goto yy575;
  ------------------
  |  Branch (10756:6): [True: 0, False: 1]
  ------------------
10757|      1|	goto yy59;
10758|     13|yy402:
10759|     13|	YYDEBUG(402, *YYCURSOR);
10760|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
10761|     13|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10761:6): [True: 4, False: 9]
  ------------------
10762|      9|	if (yych <= '9') goto yy576;
  ------------------
  |  Branch (10762:6): [True: 7, False: 2]
  ------------------
10763|      2|	goto yy59;
10764|      6|yy403:
10765|      6|	YYDEBUG(403, *YYCURSOR);
10766|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
10767|      6|	if (yych == 'd') goto yy577;
  ------------------
  |  Branch (10767:6): [True: 0, False: 6]
  ------------------
10768|      6|	goto yy59;
10769|      6|yy404:
10770|      0|	YYDEBUG(404, *YYCURSOR);
10771|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10772|      0|	if (yych == 't') goto yy577;
  ------------------
  |  Branch (10772:6): [True: 0, False: 0]
  ------------------
10773|      0|	goto yy59;
10774|      0|yy405:
10775|      0|	YYDEBUG(405, *YYCURSOR);
10776|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10777|      0|	if (yych == 'h') goto yy577;
  ------------------
  |  Branch (10777:6): [True: 0, False: 0]
  ------------------
10778|      0|	goto yy59;
10779|      6|yy406:
10780|      6|	YYDEBUG(406, *YYCURSOR);
10781|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
10782|      6|	if (yych == 'R') goto yy578;
  ------------------
  |  Branch (10782:6): [True: 0, False: 6]
  ------------------
10783|      6|	if (yych == 'r') goto yy578;
  ------------------
  |  Branch (10783:6): [True: 6, False: 0]
  ------------------
10784|      0|	goto yy59;
10785|      0|yy407:
10786|      0|	YYDEBUG(407, *YYCURSOR);
10787|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10788|      0|	if (yych == 'G') goto yy578;
  ------------------
  |  Branch (10788:6): [True: 0, False: 0]
  ------------------
10789|      0|	if (yych == 'g') goto yy578;
  ------------------
  |  Branch (10789:6): [True: 0, False: 0]
  ------------------
10790|      0|	goto yy59;
10791|      0|yy408:
10792|      0|	YYDEBUG(408, *YYCURSOR);
10793|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10794|      0|	if (yych == 'C') goto yy578;
  ------------------
  |  Branch (10794:6): [True: 0, False: 0]
  ------------------
10795|      0|	if (yych == 'c') goto yy578;
  ------------------
  |  Branch (10795:6): [True: 0, False: 0]
  ------------------
10796|      0|	goto yy59;
10797|      0|yy409:
10798|      0|	YYDEBUG(409, *YYCURSOR);
10799|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10800|      0|	if (yych == 'B') goto yy578;
  ------------------
  |  Branch (10800:6): [True: 0, False: 0]
  ------------------
10801|      0|	if (yych == 'b') goto yy578;
  ------------------
  |  Branch (10801:6): [True: 0, False: 0]
  ------------------
10802|      0|	goto yy59;
10803|      7|yy410:
10804|      7|	YYDEBUG(410, *YYCURSOR);
10805|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
10806|      7|	if (yych == 'N') goto yy578;
  ------------------
  |  Branch (10806:6): [True: 0, False: 7]
  ------------------
10807|      7|	if (yych == 'n') goto yy578;
  ------------------
  |  Branch (10807:6): [True: 4, False: 3]
  ------------------
10808|      3|	goto yy59;
10809|      9|yy411:
10810|      9|	YYDEBUG(411, *YYCURSOR);
10811|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
10812|      9|	if (yych <= 'N') {
  ------------------
  |  Branch (10812:6): [True: 1, False: 8]
  ------------------
10813|      1|		if (yych == 'L') goto yy578;
  ------------------
  |  Branch (10813:7): [True: 0, False: 1]
  ------------------
10814|      1|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (10814:7): [True: 1, False: 0]
  ------------------
10815|      0|		goto yy578;
10816|      8|	} else {
10817|      8|		if (yych <= 'l') {
  ------------------
  |  Branch (10817:7): [True: 6, False: 2]
  ------------------
10818|      6|			if (yych <= 'k') goto yy59;
  ------------------
  |  Branch (10818:8): [True: 6, False: 0]
  ------------------
10819|      0|			goto yy578;
10820|      6|		} else {
10821|      2|			if (yych == 'n') goto yy578;
  ------------------
  |  Branch (10821:8): [True: 0, False: 2]
  ------------------
10822|      2|			goto yy59;
10823|      2|		}
10824|      8|	}
10825|      0|yy412:
10826|      0|	YYDEBUG(412, *YYCURSOR);
10827|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10828|      0|	if (yych <= 'Y') {
  ------------------
  |  Branch (10828:6): [True: 0, False: 0]
  ------------------
10829|      0|		if (yych == 'R') goto yy578;
  ------------------
  |  Branch (10829:7): [True: 0, False: 0]
  ------------------
10830|      0|		if (yych <= 'X') goto yy59;
  ------------------
  |  Branch (10830:7): [True: 0, False: 0]
  ------------------
10831|      0|		goto yy578;
10832|      0|	} else {
10833|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (10833:7): [True: 0, False: 0]
  ------------------
10834|      0|			if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (10834:8): [True: 0, False: 0]
  ------------------
10835|      0|			goto yy578;
10836|      0|		} else {
10837|      0|			if (yych == 'y') goto yy578;
  ------------------
  |  Branch (10837:8): [True: 0, False: 0]
  ------------------
10838|      0|			goto yy59;
10839|      0|		}
10840|      0|	}
10841|      9|yy413:
10842|      9|	YYDEBUG(413, *YYCURSOR);
10843|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
10844|      9|	if (yych == 'V') goto yy578;
  ------------------
  |  Branch (10844:6): [True: 0, False: 9]
  ------------------
10845|      9|	if (yych == 'v') goto yy578;
  ------------------
  |  Branch (10845:6): [True: 7, False: 2]
  ------------------
10846|      2|	goto yy59;
10847|      2|yy414:
10848|      0|	YYDEBUG(414, *YYCURSOR);
10849|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
10850|      0|	if (yych == 'T') goto yy578;
  ------------------
  |  Branch (10850:6): [True: 0, False: 0]
  ------------------
10851|      0|	if (yych == 't') goto yy578;
  ------------------
  |  Branch (10851:6): [True: 0, False: 0]
  ------------------
10852|      0|	goto yy59;
10853|     18|yy415:
10854|     18|	YYDEBUG(415, *YYCURSOR);
10855|     18|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     18|#define   YYCURSOR     cursor
  ------------------
10856|     18|	if (yych == 'P') goto yy579;
  ------------------
  |  Branch (10856:6): [True: 3, False: 15]
  ------------------
10857|     15|	if (yych == 'p') goto yy579;
  ------------------
  |  Branch (10857:6): [True: 5, False: 10]
  ------------------
10858|     10|	goto yy59;
10859|     10|yy416:
10860|      2|	YYDEBUG(416, *YYCURSOR);
10861|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
10862|      2|	if (yych <= '.') {
  ------------------
  |  Branch (10862:6): [True: 1, False: 1]
  ------------------
10863|      1|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (10863:7): [True: 0, False: 1]
  ------------------
10864|      1|		if (yych <= '-') goto yy398;
  ------------------
  |  Branch (10864:7): [True: 1, False: 0]
  ------------------
10865|      0|		goto yy396;
10866|      1|	} else {
10867|      1|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10867:7): [True: 0, False: 1]
  ------------------
10868|      1|		if (yych <= '9') goto yy580;
  ------------------
  |  Branch (10868:7): [True: 1, False: 0]
  ------------------
10869|      0|		goto yy59;
10870|      1|	}
10871|      7|yy417:
10872|      7|	YYDEBUG(417, *YYCURSOR);
10873|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
10874|      7|	if (yych <= '.') {
  ------------------
  |  Branch (10874:6): [True: 3, False: 4]
  ------------------
10875|      3|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (10875:7): [True: 3, False: 0]
  ------------------
10876|      0|		if (yych <= '-') goto yy398;
  ------------------
  |  Branch (10876:7): [True: 0, False: 0]
  ------------------
10877|      0|		goto yy396;
10878|      4|	} else {
10879|      4|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (10879:7): [True: 0, False: 4]
  ------------------
10880|      4|		if (yych <= '2') goto yy580;
  ------------------
  |  Branch (10880:7): [True: 1, False: 3]
  ------------------
10881|      3|		goto yy59;
10882|      4|	}
10883|     62|yy418:
10884|     62|	YYDEBUG(418, *YYCURSOR);
10885|     62|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     62|#define   YYCURSOR     cursor
  ------------------
10886|     62|	switch (yych) {
10887|      3|	case '0':	goto yy581;
  ------------------
  |  Branch (10887:2): [True: 3, False: 59]
  ------------------
10888|      0|	case '1':	goto yy582;
  ------------------
  |  Branch (10888:2): [True: 0, False: 62]
  ------------------
10889|      5|	case '2':
  ------------------
  |  Branch (10889:2): [True: 5, False: 57]
  ------------------
10890|      7|	case '3':
  ------------------
  |  Branch (10890:2): [True: 2, False: 60]
  ------------------
10891|      8|	case '4':
  ------------------
  |  Branch (10891:2): [True: 1, False: 61]
  ------------------
10892|      8|	case '5':
  ------------------
  |  Branch (10892:2): [True: 0, False: 62]
  ------------------
10893|     14|	case '6':
  ------------------
  |  Branch (10893:2): [True: 6, False: 56]
  ------------------
10894|     14|	case '7':
  ------------------
  |  Branch (10894:2): [True: 0, False: 62]
  ------------------
10895|     14|	case '8':
  ------------------
  |  Branch (10895:2): [True: 0, False: 62]
  ------------------
10896|     14|	case '9':	goto yy462;
  ------------------
  |  Branch (10896:2): [True: 0, False: 62]
  ------------------
10897|      7|	case 'A':
  ------------------
  |  Branch (10897:2): [True: 7, False: 55]
  ------------------
10898|      8|	case 'a':	goto yy463;
  ------------------
  |  Branch (10898:2): [True: 1, False: 61]
  ------------------
10899|      0|	case 'D':
  ------------------
  |  Branch (10899:2): [True: 0, False: 62]
  ------------------
10900|      0|	case 'd':	goto yy464;
  ------------------
  |  Branch (10900:2): [True: 0, False: 62]
  ------------------
10901|      1|	case 'F':
  ------------------
  |  Branch (10901:2): [True: 1, False: 61]
  ------------------
10902|      1|	case 'f':	goto yy465;
  ------------------
  |  Branch (10902:2): [True: 0, False: 62]
  ------------------
10903|      6|	case 'J':
  ------------------
  |  Branch (10903:2): [True: 6, False: 56]
  ------------------
10904|      6|	case 'j':	goto yy466;
  ------------------
  |  Branch (10904:2): [True: 0, False: 62]
  ------------------
10905|      8|	case 'M':
  ------------------
  |  Branch (10905:2): [True: 8, False: 54]
  ------------------
10906|      8|	case 'm':	goto yy467;
  ------------------
  |  Branch (10906:2): [True: 0, False: 62]
  ------------------
10907|      5|	case 'N':
  ------------------
  |  Branch (10907:2): [True: 5, False: 57]
  ------------------
10908|      5|	case 'n':	goto yy468;
  ------------------
  |  Branch (10908:2): [True: 0, False: 62]
  ------------------
10909|      0|	case 'O':
  ------------------
  |  Branch (10909:2): [True: 0, False: 62]
  ------------------
10910|      3|	case 'o':	goto yy469;
  ------------------
  |  Branch (10910:2): [True: 3, False: 59]
  ------------------
10911|      1|	case 'S':
  ------------------
  |  Branch (10911:2): [True: 1, False: 61]
  ------------------
10912|      2|	case 's':	goto yy470;
  ------------------
  |  Branch (10912:2): [True: 1, False: 61]
  ------------------
10913|     12|	default:	goto yy59;
  ------------------
  |  Branch (10913:2): [True: 12, False: 50]
  ------------------
10914|     62|	}
10915|    492|yy419:
10916|    492|	YYDEBUG(419, *YYCURSOR);
10917|    492|	yyaccept = 12;
10918|    492|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    492|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    492|#define   YYCURSOR     cursor
  ------------------
10919|    492|	if (yych <= 'O') {
  ------------------
  |  Branch (10919:6): [True: 410, False: 82]
  ------------------
10920|    410|		if (yych <= '5') {
  ------------------
  |  Branch (10920:7): [True: 357, False: 53]
  ------------------
10921|    357|			if (yych <= '-') {
  ------------------
  |  Branch (10921:8): [True: 20, False: 337]
  ------------------
10922|     20|				if (yych <= 0x1F) {
  ------------------
  |  Branch (10922:9): [True: 7, False: 13]
  ------------------
10923|      7|					if (yych == '\t') goto yy584;
  ------------------
  |  Branch (10923:10): [True: 1, False: 6]
  ------------------
10924|     13|				} else {
10925|     13|					if (yych <= ' ') goto yy584;
  ------------------
  |  Branch (10925:10): [True: 1, False: 12]
  ------------------
10926|     12|					if (yych >= '-') goto yy585;
  ------------------
  |  Branch (10926:10): [True: 4, False: 8]
  ------------------
10927|     12|				}
10928|    337|			} else {
10929|    337|				if (yych <= '0') {
  ------------------
  |  Branch (10929:9): [True: 165, False: 172]
  ------------------
10930|    165|					if (yych <= '.') goto yy586;
  ------------------
  |  Branch (10930:10): [True: 1, False: 164]
  ------------------
10931|    164|					if (yych <= '/') goto yy587;
  ------------------
  |  Branch (10931:10): [True: 12, False: 152]
  ------------------
10932|    152|					goto yy588;
10933|    172|				} else {
10934|    172|					if (yych <= '1') goto yy589;
  ------------------
  |  Branch (10934:10): [True: 69, False: 103]
  ------------------
10935|    103|					if (yych <= '2') goto yy590;
  ------------------
  |  Branch (10935:10): [True: 66, False: 37]
  ------------------
10936|     37|					if (yych <= '3') goto yy591;
  ------------------
  |  Branch (10936:10): [True: 17, False: 20]
  ------------------
10937|     20|					goto yy592;
10938|     37|				}
10939|    337|			}
10940|    357|		} else {
10941|     53|			if (yych <= 'C') {
  ------------------
  |  Branch (10941:8): [True: 47, False: 6]
  ------------------
10942|     47|				if (yych <= ':') {
  ------------------
  |  Branch (10942:9): [True: 45, False: 2]
  ------------------
10943|     45|					if (yych <= '6') goto yy593;
  ------------------
  |  Branch (10943:10): [True: 14, False: 31]
  ------------------
10944|     31|					if (yych <= '9') goto yy594;
  ------------------
  |  Branch (10944:10): [True: 31, False: 0]
  ------------------
10945|      0|					goto yy595;
10946|     31|				} else {
10947|      2|					if (yych == 'A') goto yy584;
  ------------------
  |  Branch (10947:10): [True: 1, False: 1]
  ------------------
10948|      2|				}
10949|     47|			} else {
10950|      6|				if (yych <= 'F') {
  ------------------
  |  Branch (10950:9): [True: 5, False: 1]
  ------------------
10951|      5|					if (yych != 'E') goto yy584;
  ------------------
  |  Branch (10951:10): [True: 3, False: 2]
  ------------------
10952|      5|				} else {
10953|      1|					if (yych <= 'G') goto yy420;
  ------------------
  |  Branch (10953:10): [True: 0, False: 1]
  ------------------
10954|      1|					if (yych <= 'J') goto yy584;
  ------------------
  |  Branch (10954:10): [True: 1, False: 0]
  ------------------
10955|      0|					if (yych >= 'M') goto yy584;
  ------------------
  |  Branch (10955:10): [True: 0, False: 0]
  ------------------
10956|      0|				}
10957|      6|			}
10958|     53|		}
10959|    410|	} else {
10960|     82|		if (yych <= 'i') {
  ------------------
  |  Branch (10960:7): [True: 19, False: 63]
  ------------------
10961|     19|			if (yych <= 'a') {
  ------------------
  |  Branch (10961:8): [True: 14, False: 5]
  ------------------
10962|     14|				if (yych <= 'W') {
  ------------------
  |  Branch (10962:9): [True: 7, False: 7]
  ------------------
10963|      7|					if (yych <= 'R') goto yy420;
  ------------------
  |  Branch (10963:10): [True: 1, False: 6]
  ------------------
10964|      6|					if (yych <= 'V') goto yy584;
  ------------------
  |  Branch (10964:10): [True: 4, False: 2]
  ------------------
10965|      2|					goto yy607;
10966|      7|				} else {
10967|      7|					if (yych <= 'Y') goto yy584;
  ------------------
  |  Branch (10967:10): [True: 0, False: 7]
  ------------------
10968|      7|					if (yych >= 'a') goto yy584;
  ------------------
  |  Branch (10968:10): [True: 4, False: 3]
  ------------------
10969|      7|				}
10970|     14|			} else {
10971|      5|				if (yych <= 'e') {
  ------------------
  |  Branch (10971:9): [True: 5, False: 0]
  ------------------
10972|      5|					if (yych == 'd') goto yy584;
  ------------------
  |  Branch (10972:10): [True: 2, False: 3]
  ------------------
10973|      5|				} else {
10974|      0|					if (yych == 'g') goto yy420;
  ------------------
  |  Branch (10974:10): [True: 0, False: 0]
  ------------------
10975|      0|					if (yych <= 'h') goto yy584;
  ------------------
  |  Branch (10975:10): [True: 0, False: 0]
  ------------------
10976|      0|				}
10977|      5|			}
10978|     63|		} else {
10979|     63|			if (yych <= 'w') {
  ------------------
  |  Branch (10979:8): [True: 6, False: 57]
  ------------------
10980|      6|				if (yych <= 'o') {
  ------------------
  |  Branch (10980:9): [True: 3, False: 3]
  ------------------
10981|      3|					if (yych <= 'j') goto yy584;
  ------------------
  |  Branch (10981:10): [True: 0, False: 3]
  ------------------
10982|      3|					if (yych >= 'm') goto yy584;
  ------------------
  |  Branch (10982:10): [True: 3, False: 0]
  ------------------
10983|      3|				} else {
10984|      3|					if (yych <= 'r') goto yy420;
  ------------------
  |  Branch (10984:10): [True: 0, False: 3]
  ------------------
10985|      3|					if (yych != 'v') goto yy584;
  ------------------
  |  Branch (10985:10): [True: 2, False: 1]
  ------------------
10986|      3|				}
10987|     57|			} else {
10988|     57|				if (yych <= 0xC1) {
  ------------------
  |  Branch (10988:9): [True: 27, False: 30]
  ------------------
10989|     27|					if (yych == 'y') goto yy584;
  ------------------
  |  Branch (10989:10): [True: 0, False: 27]
  ------------------
10990|     30|				} else {
10991|     30|					if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (10991:10): [True: 7, False: 23]
  ------------------
10992|     23|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (10992:10): [True: 0, False: 23]
  ------------------
10993|     23|				}
10994|     57|			}
10995|     63|		}
10996|     82|	}
10997|    241|yy420:
10998|    241|	YYDEBUG(420, *YYCURSOR);
10999|    241|#line 1415 "ext/date/lib/parse_date.re"
11000|    241|	{
11001|    241|		DEBUG_OUTPUT("gnunocolon");
11002|    241|		TIMELIB_INIT;
  ------------------
  |  |  107|    241|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
11003|    241|		switch (s->time->have_time) {
11004|    107|			case 0:
  ------------------
  |  Branch (11004:4): [True: 107, False: 134]
  ------------------
11005|    107|				s->time->h = timelib_get_nr(&ptr, 2);
11006|    107|				s->time->i = timelib_get_nr(&ptr, 2);
11007|    107|				s->time->s = 0;
11008|    107|				break;
11009|     79|			case 1:
  ------------------
  |  Branch (11009:4): [True: 79, False: 162]
  ------------------
11010|     79|				s->time->y = timelib_get_nr(&ptr, 4);
11011|     79|				break;
11012|     55|			default:
  ------------------
  |  Branch (11012:4): [True: 55, False: 186]
  ------------------
11013|     55|				TIMELIB_DEINIT;
  ------------------
  |  |  108|     55|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     55|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     55|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     55|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     55|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     55|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     55|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     55|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11014|     55|				add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification");
  ------------------
  |  |  289|     55|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  ------------------
11015|     55|				return TIMELIB_ERROR;
  ------------------
  |  |   80|     55|#define TIMELIB_ERROR          999
  ------------------
11016|    241|		}
11017|    186|		s->time->have_time++;
11018|    186|		TIMELIB_DEINIT;
  ------------------
  |  |  108|    186|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|    186|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    186|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|    186|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|    186|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|    186|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|    186|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|    186|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11019|    186|		return TIMELIB_GNU_NOCOLON;
  ------------------
  |  |   54|    186|#define TIMELIB_GNU_NOCOLON    263
  ------------------
11020|    241|	}
11021|      0|#line 11022 "ext/date/lib/parse_date.c"
11022|    697|yy421:
11023|    697|	YYDEBUG(421, *YYCURSOR);
11024|    697|	yyaccept = 13;
11025|    697|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    697|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    697|#define   YYCURSOR     cursor
  ------------------
11026|    697|	if (yych <= 'R') {
  ------------------
  |  Branch (11026:6): [True: 636, False: 61]
  ------------------
11027|    636|		if (yych <= '3') {
  ------------------
  |  Branch (11027:7): [True: 301, False: 335]
  ------------------
11028|    301|			if (yych <= '-') {
  ------------------
  |  Branch (11028:8): [True: 63, False: 238]
  ------------------
11029|     63|				if (yych <= 0x1F) {
  ------------------
  |  Branch (11029:9): [True: 19, False: 44]
  ------------------
11030|     19|					if (yych == '\t') goto yy584;
  ------------------
  |  Branch (11030:10): [True: 3, False: 16]
  ------------------
11031|     44|				} else {
11032|     44|					if (yych <= ' ') goto yy584;
  ------------------
  |  Branch (11032:10): [True: 11, False: 33]
  ------------------
11033|     33|					if (yych >= '-') goto yy585;
  ------------------
  |  Branch (11033:10): [True: 23, False: 10]
  ------------------
11034|     33|				}
11035|    238|			} else {
11036|    238|				if (yych <= '0') {
  ------------------
  |  Branch (11036:9): [True: 119, False: 119]
  ------------------
11037|    119|					if (yych <= '.') goto yy586;
  ------------------
  |  Branch (11037:10): [True: 21, False: 98]
  ------------------
11038|     98|					if (yych <= '/') goto yy587;
  ------------------
  |  Branch (11038:10): [True: 20, False: 78]
  ------------------
11039|     78|					goto yy609;
11040|    119|				} else {
11041|    119|					if (yych <= '1') goto yy610;
  ------------------
  |  Branch (11041:10): [True: 42, False: 77]
  ------------------
11042|     77|					if (yych <= '2') goto yy611;
  ------------------
  |  Branch (11042:10): [True: 28, False: 49]
  ------------------
11043|     49|					goto yy612;
11044|     77|				}
11045|    238|			}
11046|    335|		} else {
11047|    335|			if (yych <= 'D') {
  ------------------
  |  Branch (11047:8): [True: 322, False: 13]
  ------------------
11048|    322|				if (yych <= '@') {
  ------------------
  |  Branch (11048:9): [True: 294, False: 28]
  ------------------
11049|    294|					if (yych <= '9') goto yy594;
  ------------------
  |  Branch (11049:10): [True: 287, False: 7]
  ------------------
11050|      7|					if (yych <= ':') goto yy595;
  ------------------
  |  Branch (11050:10): [True: 1, False: 6]
  ------------------
11051|     28|				} else {
11052|     28|					if (yych <= 'A') goto yy584;
  ------------------
  |  Branch (11052:10): [True: 25, False: 3]
  ------------------
11053|      3|					if (yych >= 'D') goto yy584;
  ------------------
  |  Branch (11053:10): [True: 0, False: 3]
  ------------------
11054|      3|				}
11055|    322|			} else {
11056|     13|				if (yych <= 'G') {
  ------------------
  |  Branch (11056:9): [True: 1, False: 12]
  ------------------
11057|      1|					if (yych == 'F') goto yy584;
  ------------------
  |  Branch (11057:10): [True: 0, False: 1]
  ------------------
11058|     12|				} else {
11059|     12|					if (yych <= 'J') goto yy584;
  ------------------
  |  Branch (11059:10): [True: 0, False: 12]
  ------------------
11060|     12|					if (yych <= 'L') goto yy422;
  ------------------
  |  Branch (11060:10): [True: 1, False: 11]
  ------------------
11061|     11|					if (yych <= 'O') goto yy584;
  ------------------
  |  Branch (11061:10): [True: 7, False: 4]
  ------------------
11062|     11|				}
11063|     13|			}
11064|    335|		}
11065|    636|	} else {
11066|     61|		if (yych <= 'j') {
  ------------------
  |  Branch (11066:7): [True: 15, False: 46]
  ------------------
11067|     15|			if (yych <= 'c') {
  ------------------
  |  Branch (11067:8): [True: 11, False: 4]
  ------------------
11068|     11|				if (yych <= 'Y') {
  ------------------
  |  Branch (11068:9): [True: 8, False: 3]
  ------------------
11069|      8|					if (yych == 'W') goto yy607;
  ------------------
  |  Branch (11069:10): [True: 0, False: 8]
  ------------------
11070|      8|					goto yy584;
11071|      8|				} else {
11072|      3|					if (yych == 'a') goto yy584;
  ------------------
  |  Branch (11072:10): [True: 1, False: 2]
  ------------------
11073|      3|				}
11074|     11|			} else {
11075|      4|				if (yych <= 'f') {
  ------------------
  |  Branch (11075:9): [True: 2, False: 2]
  ------------------
11076|      2|					if (yych != 'e') goto yy584;
  ------------------
  |  Branch (11076:10): [True: 2, False: 0]
  ------------------
11077|      2|				} else {
11078|      2|					if (yych == 'h') goto yy584;
  ------------------
  |  Branch (11078:10): [True: 0, False: 2]
  ------------------
11079|      2|					if (yych >= 'j') goto yy584;
  ------------------
  |  Branch (11079:10): [True: 1, False: 1]
  ------------------
11080|      2|				}
11081|      4|			}
11082|     46|		} else {
11083|     46|			if (yych <= 'w') {
  ------------------
  |  Branch (11083:8): [True: 15, False: 31]
  ------------------
11084|     15|				if (yych <= 'r') {
  ------------------
  |  Branch (11084:9): [True: 10, False: 5]
  ------------------
11085|     10|					if (yych <= 'l') goto yy422;
  ------------------
  |  Branch (11085:10): [True: 1, False: 9]
  ------------------
11086|      9|					if (yych <= 'o') goto yy584;
  ------------------
  |  Branch (11086:10): [True: 6, False: 3]
  ------------------
11087|      9|				} else {
11088|      5|					if (yych != 'v') goto yy584;
  ------------------
  |  Branch (11088:10): [True: 5, False: 0]
  ------------------
11089|      5|				}
11090|     31|			} else {
11091|     31|				if (yych <= 0xC1) {
  ------------------
  |  Branch (11091:9): [True: 11, False: 20]
  ------------------
11092|     11|					if (yych == 'y') goto yy584;
  ------------------
  |  Branch (11092:10): [True: 1, False: 10]
  ------------------
11093|     20|				} else {
11094|     20|					if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (11094:10): [True: 4, False: 16]
  ------------------
11095|     16|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (11095:10): [True: 1, False: 15]
  ------------------
11096|     16|				}
11097|     31|			}
11098|     46|		}
11099|     61|	}
11100|    565|yy422:
11101|    565|	YYDEBUG(422, *YYCURSOR);
11102|    565|#line 1800 "ext/date/lib/parse_date.re"
11103|    565|	{
11104|    565|		DEBUG_OUTPUT("year4");
11105|    565|		TIMELIB_INIT;
  ------------------
  |  |  107|    565|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
11106|    565|		s->time->y = timelib_get_nr(&ptr, 4);
11107|    565|		TIMELIB_DEINIT;
  ------------------
  |  |  108|    565|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|    565|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    565|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|    565|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|    565|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|    565|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|    565|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|    565|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11108|    565|		return TIMELIB_CLF;
  ------------------
  |  |   66|    565|#define TIMELIB_CLF            274
  ------------------
11109|    697|	}
11110|      0|#line 11111 "ext/date/lib/parse_date.c"
11111|     11|yy423:
11112|     11|	YYDEBUG(423, *YYCURSOR);
11113|     11|	yyaccept = 3;
11114|     11|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     11|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
11115|     11|	if (yych <= '.') {
  ------------------
  |  Branch (11115:6): [True: 10, False: 1]
  ------------------
11116|     10|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11116:7): [True: 9, False: 1]
  ------------------
11117|      9|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11117:8): [True: 0, False: 9]
  ------------------
11118|      9|			goto yy81;
11119|      9|		} else {
11120|      1|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11120:8): [True: 1, False: 0]
  ------------------
11121|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11121:8): [True: 0, False: 0]
  ------------------
11122|      0|			goto yy248;
11123|      0|		}
11124|     10|	} else {
11125|      1|		if (yych <= 'H') {
  ------------------
  |  Branch (11125:7): [True: 0, False: 1]
  ------------------
11126|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11126:8): [True: 0, False: 0]
  ------------------
11127|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11127:8): [True: 0, False: 0]
  ------------------
11128|      0|			goto yy81;
11129|      1|		} else {
11130|      1|			if (yych <= 'I') goto yy613;
  ------------------
  |  Branch (11130:8): [True: 0, False: 1]
  ------------------
11131|      1|			if (yych == 'i') goto yy613;
  ------------------
  |  Branch (11131:8): [True: 0, False: 1]
  ------------------
11132|      1|			goto yy81;
11133|      1|		}
11134|      1|	}
11135|      0|yy424:
11136|      0|	YYDEBUG(424, *YYCURSOR);
11137|      0|	yyaccept = 3;
11138|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11139|      0|	if (yych <= '.') {
  ------------------
  |  Branch (11139:6): [True: 0, False: 0]
  ------------------
11140|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11140:7): [True: 0, False: 0]
  ------------------
11141|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11141:8): [True: 0, False: 0]
  ------------------
11142|      0|			goto yy81;
11143|      0|		} else {
11144|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11144:8): [True: 0, False: 0]
  ------------------
11145|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11145:8): [True: 0, False: 0]
  ------------------
11146|      0|			goto yy248;
11147|      0|		}
11148|      0|	} else {
11149|      0|		if (yych <= 'T') {
  ------------------
  |  Branch (11149:7): [True: 0, False: 0]
  ------------------
11150|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11150:8): [True: 0, False: 0]
  ------------------
11151|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11151:8): [True: 0, False: 0]
  ------------------
11152|      0|			goto yy81;
11153|      0|		} else {
11154|      0|			if (yych <= 'U') goto yy614;
  ------------------
  |  Branch (11154:8): [True: 0, False: 0]
  ------------------
11155|      0|			if (yych == 'u') goto yy614;
  ------------------
  |  Branch (11155:8): [True: 0, False: 0]
  ------------------
11156|      0|			goto yy81;
11157|      0|		}
11158|      0|	}
11159|      0|yy425:
11160|      0|	YYDEBUG(425, *YYCURSOR);
11161|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11162|      0|	if (yych == 'S') goto yy615;
  ------------------
  |  Branch (11162:6): [True: 0, False: 0]
  ------------------
11163|      0|	if (yych == 's') goto yy615;
  ------------------
  |  Branch (11163:6): [True: 0, False: 0]
  ------------------
11164|      0|	goto yy260;
11165|      4|yy426:
11166|      4|	YYDEBUG(426, *YYCURSOR);
11167|      4|	yyaccept = 3;
11168|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
11169|      4|	if (yych <= '.') {
  ------------------
  |  Branch (11169:6): [True: 0, False: 4]
  ------------------
11170|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11170:7): [True: 0, False: 0]
  ------------------
11171|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11171:8): [True: 0, False: 0]
  ------------------
11172|      0|			goto yy81;
11173|      0|		} else {
11174|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11174:8): [True: 0, False: 0]
  ------------------
11175|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11175:8): [True: 0, False: 0]
  ------------------
11176|      0|			goto yy248;
11177|      0|		}
11178|      4|	} else {
11179|      4|		if (yych <= 'D') {
  ------------------
  |  Branch (11179:7): [True: 1, False: 3]
  ------------------
11180|      1|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11180:8): [True: 0, False: 1]
  ------------------
11181|      1|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11181:8): [True: 0, False: 1]
  ------------------
11182|      1|			goto yy81;
11183|      3|		} else {
11184|      3|			if (yych <= 'E') goto yy616;
  ------------------
  |  Branch (11184:8): [True: 0, False: 3]
  ------------------
11185|      3|			if (yych == 'e') goto yy616;
  ------------------
  |  Branch (11185:8): [True: 1, False: 2]
  ------------------
11186|      2|			goto yy81;
11187|      3|		}
11188|      4|	}
11189|      0|yy427:
11190|      0|	YYDEBUG(427, *YYCURSOR);
11191|      0|	yyaccept = 3;
11192|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11193|      0|	if (yych <= '.') {
  ------------------
  |  Branch (11193:6): [True: 0, False: 0]
  ------------------
11194|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11194:7): [True: 0, False: 0]
  ------------------
11195|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11195:8): [True: 0, False: 0]
  ------------------
11196|      0|			goto yy81;
11197|      0|		} else {
11198|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11198:8): [True: 0, False: 0]
  ------------------
11199|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11199:8): [True: 0, False: 0]
  ------------------
11200|      0|			goto yy248;
11201|      0|		}
11202|      0|	} else {
11203|      0|		if (yych <= 'Q') {
  ------------------
  |  Branch (11203:7): [True: 0, False: 0]
  ------------------
11204|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11204:8): [True: 0, False: 0]
  ------------------
11205|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11205:8): [True: 0, False: 0]
  ------------------
11206|      0|			goto yy81;
11207|      0|		} else {
11208|      0|			if (yych <= 'R') goto yy617;
  ------------------
  |  Branch (11208:8): [True: 0, False: 0]
  ------------------
11209|      0|			if (yych == 'r') goto yy617;
  ------------------
  |  Branch (11209:8): [True: 0, False: 0]
  ------------------
11210|      0|			goto yy81;
11211|      0|		}
11212|      0|	}
11213|      3|yy428:
11214|      3|	YYDEBUG(428, *YYCURSOR);
11215|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
11216|      3|	if (yych == 'T') goto yy618;
  ------------------
  |  Branch (11216:6): [True: 0, False: 3]
  ------------------
11217|      3|	if (yych == 't') goto yy618;
  ------------------
  |  Branch (11217:6): [True: 0, False: 3]
  ------------------
11218|      3|	goto yy59;
11219|     15|yy429:
11220|     15|	YYDEBUG(429, *YYCURSOR);
11221|     15|	yyaccept = 6;
11222|     15|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     15|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
11223|     15|	if (yych == 'D') goto yy198;
  ------------------
  |  Branch (11223:6): [True: 0, False: 15]
  ------------------
11224|     15|	if (yych == 'd') goto yy198;
  ------------------
  |  Branch (11224:6): [True: 0, False: 15]
  ------------------
11225|     15|	goto yy260;
11226|     15|yy430:
11227|      0|	YYDEBUG(430, *YYCURSOR);
11228|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11229|      0|	if (yych == 'R') goto yy425;
  ------------------
  |  Branch (11229:6): [True: 0, False: 0]
  ------------------
11230|      0|	if (yych == 'r') goto yy425;
  ------------------
  |  Branch (11230:6): [True: 0, False: 0]
  ------------------
11231|      0|	goto yy59;
11232|      9|yy431:
11233|      9|	YYDEBUG(431, *YYCURSOR);
11234|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
11235|      9|	if (yych <= '/') goto yy251;
  ------------------
  |  Branch (11235:6): [True: 1, False: 8]
  ------------------
11236|      8|	if (yych <= '9') goto yy619;
  ------------------
  |  Branch (11236:6): [True: 6, False: 2]
  ------------------
11237|      2|	goto yy251;
11238|      2|yy432:
11239|      0|	YYDEBUG(432, *YYCURSOR);
11240|      0|	yyaccept = 3;
11241|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11242|      0|	if (yych <= '.') {
  ------------------
  |  Branch (11242:6): [True: 0, False: 0]
  ------------------
11243|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11243:7): [True: 0, False: 0]
  ------------------
11244|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11244:8): [True: 0, False: 0]
  ------------------
11245|      0|			goto yy81;
11246|      0|		} else {
11247|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11247:8): [True: 0, False: 0]
  ------------------
11248|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11248:8): [True: 0, False: 0]
  ------------------
11249|      0|			goto yy248;
11250|      0|		}
11251|      0|	} else {
11252|      0|		if (yych <= 'T') {
  ------------------
  |  Branch (11252:7): [True: 0, False: 0]
  ------------------
11253|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11253:8): [True: 0, False: 0]
  ------------------
11254|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11254:8): [True: 0, False: 0]
  ------------------
11255|      0|			goto yy81;
11256|      0|		} else {
11257|      0|			if (yych <= 'U') goto yy620;
  ------------------
  |  Branch (11257:8): [True: 0, False: 0]
  ------------------
11258|      0|			if (yych == 'u') goto yy620;
  ------------------
  |  Branch (11258:8): [True: 0, False: 0]
  ------------------
11259|      0|			goto yy81;
11260|      0|		}
11261|      0|	}
11262|      0|yy433:
11263|      0|	YYDEBUG(433, *YYCURSOR);
11264|      0|	yyaccept = 3;
11265|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11266|      0|	if (yych <= '.') {
  ------------------
  |  Branch (11266:6): [True: 0, False: 0]
  ------------------
11267|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11267:7): [True: 0, False: 0]
  ------------------
11268|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11268:8): [True: 0, False: 0]
  ------------------
11269|      0|			goto yy81;
11270|      0|		} else {
11271|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11271:8): [True: 0, False: 0]
  ------------------
11272|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11272:8): [True: 0, False: 0]
  ------------------
11273|      0|			goto yy248;
11274|      0|		}
11275|      0|	} else {
11276|      0|		if (yych <= 'X') {
  ------------------
  |  Branch (11276:7): [True: 0, False: 0]
  ------------------
11277|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11277:8): [True: 0, False: 0]
  ------------------
11278|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11278:8): [True: 0, False: 0]
  ------------------
11279|      0|			goto yy81;
11280|      0|		} else {
11281|      0|			if (yych <= 'Y') goto yy253;
  ------------------
  |  Branch (11281:8): [True: 0, False: 0]
  ------------------
11282|      0|			if (yych == 'y') goto yy253;
  ------------------
  |  Branch (11282:8): [True: 0, False: 0]
  ------------------
11283|      0|			goto yy81;
11284|      0|		}
11285|      0|	}
11286|      0|yy434:
11287|      0|	YYDEBUG(434, *YYCURSOR);
11288|      0|	yyaccept = 3;
11289|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11290|      0|	if (yych <= '.') {
  ------------------
  |  Branch (11290:6): [True: 0, False: 0]
  ------------------
11291|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11291:7): [True: 0, False: 0]
  ------------------
11292|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11292:8): [True: 0, False: 0]
  ------------------
11293|      0|			goto yy81;
11294|      0|		} else {
11295|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11295:8): [True: 0, False: 0]
  ------------------
11296|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11296:8): [True: 0, False: 0]
  ------------------
11297|      0|			goto yy248;
11298|      0|		}
11299|      0|	} else {
11300|      0|		if (yych <= 'D') {
  ------------------
  |  Branch (11300:7): [True: 0, False: 0]
  ------------------
11301|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11301:8): [True: 0, False: 0]
  ------------------
11302|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11302:8): [True: 0, False: 0]
  ------------------
11303|      0|			goto yy81;
11304|      0|		} else {
11305|      0|			if (yych <= 'E') goto yy253;
  ------------------
  |  Branch (11305:8): [True: 0, False: 0]
  ------------------
11306|      0|			if (yych == 'e') goto yy253;
  ------------------
  |  Branch (11306:8): [True: 0, False: 0]
  ------------------
11307|      0|			goto yy81;
11308|      0|		}
11309|      0|	}
11310|      0|yy435:
11311|      0|	YYDEBUG(435, *YYCURSOR);
11312|      0|	yyaccept = 3;
11313|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11314|      0|	if (yych <= '.') {
  ------------------
  |  Branch (11314:6): [True: 0, False: 0]
  ------------------
11315|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11315:7): [True: 0, False: 0]
  ------------------
11316|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11316:8): [True: 0, False: 0]
  ------------------
11317|      0|			goto yy81;
11318|      0|		} else {
11319|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11319:8): [True: 0, False: 0]
  ------------------
11320|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11320:8): [True: 0, False: 0]
  ------------------
11321|      0|			goto yy248;
11322|      0|		}
11323|      0|	} else {
11324|      0|		if (yych <= 'B') {
  ------------------
  |  Branch (11324:7): [True: 0, False: 0]
  ------------------
11325|      0|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11325:8): [True: 0, False: 0]
  ------------------
11326|      0|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11326:8): [True: 0, False: 0]
  ------------------
11327|      0|			goto yy81;
11328|      0|		} else {
11329|      0|			if (yych <= 'C') goto yy621;
  ------------------
  |  Branch (11329:8): [True: 0, False: 0]
  ------------------
11330|      0|			if (yych == 'c') goto yy621;
  ------------------
  |  Branch (11330:8): [True: 0, False: 0]
  ------------------
11331|      0|			goto yy81;
11332|      0|		}
11333|      0|	}
11334|      0|yy436:
11335|      0|	YYDEBUG(436, *YYCURSOR);
11336|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11337|      0|	if (yych == 'R') goto yy622;
  ------------------
  |  Branch (11337:6): [True: 0, False: 0]
  ------------------
11338|      0|	if (yych == 'r') goto yy622;
  ------------------
  |  Branch (11338:6): [True: 0, False: 0]
  ------------------
11339|      0|	goto yy59;
11340|      0|yy437:
11341|      0|	YYDEBUG(437, *YYCURSOR);
11342|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11343|      0|	if (yych == 'L') goto yy623;
  ------------------
  |  Branch (11343:6): [True: 0, False: 0]
  ------------------
11344|      0|	if (yych == 'l') goto yy623;
  ------------------
  |  Branch (11344:6): [True: 0, False: 0]
  ------------------
11345|      0|	goto yy59;
11346|      0|yy438:
11347|      0|	YYDEBUG(438, *YYCURSOR);
11348|      0|	yyaccept = 6;
11349|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11350|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (11350:6): [True: 0, False: 0]
  ------------------
11351|      0|		if (yych == 'S') goto yy615;
  ------------------
  |  Branch (11351:7): [True: 0, False: 0]
  ------------------
11352|      0|		if (yych <= 'T') goto yy260;
  ------------------
  |  Branch (11352:7): [True: 0, False: 0]
  ------------------
11353|      0|		goto yy624;
11354|      0|	} else {
11355|      0|		if (yych <= 's') {
  ------------------
  |  Branch (11355:7): [True: 0, False: 0]
  ------------------
11356|      0|			if (yych <= 'r') goto yy260;
  ------------------
  |  Branch (11356:8): [True: 0, False: 0]
  ------------------
11357|      0|			goto yy615;
11358|      0|		} else {
11359|      0|			if (yych == 'u') goto yy624;
  ------------------
  |  Branch (11359:8): [True: 0, False: 0]
  ------------------
11360|      0|			goto yy260;
11361|      0|		}
11362|      0|	}
11363|      0|yy439:
11364|      0|	YYDEBUG(439, *YYCURSOR);
11365|      0|	yyaccept = 6;
11366|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11367|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (11367:6): [True: 0, False: 0]
  ------------------
11368|      0|		if (yych == 'D') goto yy198;
  ------------------
  |  Branch (11368:7): [True: 0, False: 0]
  ------------------
11369|      0|		if (yych <= 'S') goto yy260;
  ------------------
  |  Branch (11369:7): [True: 0, False: 0]
  ------------------
11370|      0|		goto yy625;
11371|      0|	} else {
11372|      0|		if (yych <= 'd') {
  ------------------
  |  Branch (11372:7): [True: 0, False: 0]
  ------------------
11373|      0|			if (yych <= 'c') goto yy260;
  ------------------
  |  Branch (11373:8): [True: 0, False: 0]
  ------------------
11374|      0|			goto yy198;
11375|      0|		} else {
11376|      0|			if (yych == 't') goto yy625;
  ------------------
  |  Branch (11376:8): [True: 0, False: 0]
  ------------------
11377|      0|			goto yy260;
11378|      0|		}
11379|      0|	}
11380|     11|yy440:
11381|     11|	YYDEBUG(440, *YYCURSOR);
11382|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
11383|     11|	if (yych == 'C') goto yy425;
  ------------------
  |  Branch (11383:6): [True: 0, False: 11]
  ------------------
11384|     11|	if (yych == 'c') goto yy425;
  ------------------
  |  Branch (11384:6): [True: 0, False: 11]
  ------------------
11385|     11|	goto yy59;
11386|     11|yy441:
11387|      7|	YYDEBUG(441, *YYCURSOR);
11388|      7|	yyaccept = 3;
11389|      7|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      7|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
11390|      7|	if (yych <= '.') {
  ------------------
  |  Branch (11390:6): [True: 6, False: 1]
  ------------------
11391|      6|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11391:7): [True: 6, False: 0]
  ------------------
11392|      6|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11392:8): [True: 0, False: 6]
  ------------------
11393|      6|			goto yy81;
11394|      6|		} else {
11395|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11395:8): [True: 0, False: 0]
  ------------------
11396|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11396:8): [True: 0, False: 0]
  ------------------
11397|      0|			goto yy248;
11398|      0|		}
11399|      6|	} else {
11400|      1|		if (yych <= 'N') {
  ------------------
  |  Branch (11400:7): [True: 1, False: 0]
  ------------------
11401|      1|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11401:8): [True: 0, False: 1]
  ------------------
11402|      1|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11402:8): [True: 1, False: 0]
  ------------------
11403|      0|			goto yy81;
11404|      1|		} else {
11405|      0|			if (yych <= 'O') goto yy626;
  ------------------
  |  Branch (11405:8): [True: 0, False: 0]
  ------------------
11406|      0|			if (yych == 'o') goto yy626;
  ------------------
  |  Branch (11406:8): [True: 0, False: 0]
  ------------------
11407|      0|			goto yy81;
11408|      0|		}
11409|      1|	}
11410|      0|yy442:
11411|      0|	YYDEBUG(442, *YYCURSOR);
11412|      0|	yyaccept = 6;
11413|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11414|      0|	if (yych == 'U') goto yy627;
  ------------------
  |  Branch (11414:6): [True: 0, False: 0]
  ------------------
11415|      0|	if (yych == 'u') goto yy627;
  ------------------
  |  Branch (11415:6): [True: 0, False: 0]
  ------------------
11416|      0|	goto yy260;
11417|      5|yy443:
11418|      5|	YYDEBUG(443, *YYCURSOR);
11419|      5|	yyaccept = 6;
11420|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
11421|      5|	if (yych <= 'S') {
  ------------------
  |  Branch (11421:6): [True: 5, False: 0]
  ------------------
11422|      5|		if (yych == 'O') goto yy628;
  ------------------
  |  Branch (11422:7): [True: 0, False: 5]
  ------------------
11423|      5|		if (yych <= 'R') goto yy260;
  ------------------
  |  Branch (11423:7): [True: 5, False: 0]
  ------------------
11424|      0|		goto yy615;
11425|      5|	} else {
11426|      0|		if (yych <= 'o') {
  ------------------
  |  Branch (11426:7): [True: 0, False: 0]
  ------------------
11427|      0|			if (yych <= 'n') goto yy260;
  ------------------
  |  Branch (11427:8): [True: 0, False: 0]
  ------------------
11428|      0|			goto yy628;
11429|      0|		} else {
11430|      0|			if (yych == 's') goto yy615;
  ------------------
  |  Branch (11430:8): [True: 0, False: 0]
  ------------------
11431|      0|			goto yy260;
11432|      0|		}
11433|      0|	}
11434|      3|yy444:
11435|      3|	YYDEBUG(444, *YYCURSOR);
11436|      3|	yyaccept = 3;
11437|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
11438|      3|	if (yych <= '.') {
  ------------------
  |  Branch (11438:6): [True: 0, False: 3]
  ------------------
11439|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (11439:7): [True: 0, False: 0]
  ------------------
11440|      0|			if (yych == '\t') goto yy248;
  ------------------
  |  Branch (11440:8): [True: 0, False: 0]
  ------------------
11441|      0|			goto yy81;
11442|      0|		} else {
11443|      0|			if (yych <= ' ') goto yy248;
  ------------------
  |  Branch (11443:8): [True: 0, False: 0]
  ------------------
11444|      0|			if (yych <= ',') goto yy81;
  ------------------
  |  Branch (11444:8): [True: 0, False: 0]
  ------------------
11445|      0|			goto yy248;
11446|      0|		}
11447|      3|	} else {
11448|      3|		if (yych <= 'S') {
  ------------------
  |  Branch (11448:7): [True: 1, False: 2]
  ------------------
11449|      1|			if (yych <= '/') goto yy81;
  ------------------
  |  Branch (11449:8): [True: 0, False: 1]
  ------------------
11450|      1|			if (yych <= '9') goto yy250;
  ------------------
  |  Branch (11450:8): [True: 1, False: 0]
  ------------------
11451|      0|			goto yy81;
11452|      2|		} else {
11453|      2|			if (yych <= 'T') goto yy426;
  ------------------
  |  Branch (11453:8): [True: 0, False: 2]
  ------------------
11454|      2|			if (yych == 't') goto yy426;
  ------------------
  |  Branch (11454:8): [True: 2, False: 0]
  ------------------
11455|      0|			goto yy81;
11456|      2|		}
11457|      3|	}
11458|      0|yy445:
11459|      0|	YYDEBUG(445, *YYCURSOR);
11460|      0|	yyaccept = 6;
11461|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11462|      0|	if (yych == 'R') goto yy629;
  ------------------
  |  Branch (11462:6): [True: 0, False: 0]
  ------------------
11463|      0|	if (yych == 'r') goto yy629;
  ------------------
  |  Branch (11463:6): [True: 0, False: 0]
  ------------------
11464|      0|	goto yy260;
11465|      0|yy446:
11466|      0|	YYDEBUG(446, *YYCURSOR);
11467|      0|	yyaccept = 6;
11468|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11469|      0|	if (yych == 'S') goto yy630;
  ------------------
  |  Branch (11469:6): [True: 0, False: 0]
  ------------------
11470|      0|	if (yych == 's') goto yy630;
  ------------------
  |  Branch (11470:6): [True: 0, False: 0]
  ------------------
11471|      0|	goto yy260;
11472|      4|yy447:
11473|      4|	YYDEBUG(447, *YYCURSOR);
11474|      4|	yyaccept = 6;
11475|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
11476|      4|	if (yych == 'N') goto yy631;
  ------------------
  |  Branch (11476:6): [True: 0, False: 4]
  ------------------
11477|      4|	if (yych == 'n') goto yy631;
  ------------------
  |  Branch (11477:6): [True: 3, False: 1]
  ------------------
11478|      1|	goto yy260;
11479|      2|yy448:
11480|      2|	YYDEBUG(448, *YYCURSOR);
11481|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
11482|      2|	if (yych == 'K') goto yy632;
  ------------------
  |  Branch (11482:6): [True: 0, False: 2]
  ------------------
11483|      2|	if (yych == 'k') goto yy632;
  ------------------
  |  Branch (11483:6): [True: 0, False: 2]
  ------------------
11484|      2|	goto yy59;
11485|     10|yy449:
11486|     10|	YYDEBUG(449, *YYCURSOR);
11487|     10|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
11488|     10|	if (yych <= '/') goto yy207;
  ------------------
  |  Branch (11488:6): [True: 0, False: 10]
  ------------------
11489|     10|	if (yych <= '0') goto yy633;
  ------------------
  |  Branch (11489:6): [True: 8, False: 2]
  ------------------
11490|      2|	if (yych <= '1') goto yy634;
  ------------------
  |  Branch (11490:6): [True: 0, False: 2]
  ------------------
11491|      2|	if (yych <= '9') goto yy635;
  ------------------
  |  Branch (11491:6): [True: 0, False: 2]
  ------------------
11492|      2|	goto yy207;
11493|      2|yy450:
11494|      0|	YYDEBUG(450, *YYCURSOR);
11495|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11496|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (11496:6): [True: 0, False: 0]
  ------------------
11497|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11498|      0|	if (yych <= 'd') {
  ------------------
  |  Branch (11498:6): [True: 0, False: 0]
  ------------------
11499|      0|		if (yych <= 'R') {
  ------------------
  |  Branch (11499:7): [True: 0, False: 0]
  ------------------
11500|      0|			if (yych <= 'F') {
  ------------------
  |  Branch (11500:8): [True: 0, False: 0]
  ------------------
11501|      0|				if (yych == 'D') goto yy198;
  ------------------
  |  Branch (11501:9): [True: 0, False: 0]
  ------------------
11502|      0|				if (yych <= 'E') goto yy59;
  ------------------
  |  Branch (11502:9): [True: 0, False: 0]
  ------------------
11503|      0|				goto yy199;
11504|      0|			} else {
11505|      0|				if (yych <= 'H') {
  ------------------
  |  Branch (11505:9): [True: 0, False: 0]
  ------------------
11506|      0|					if (yych <= 'G') goto yy59;
  ------------------
  |  Branch (11506:10): [True: 0, False: 0]
  ------------------
11507|      0|					goto yy79;
11508|      0|				} else {
11509|      0|					if (yych == 'M') goto yy200;
  ------------------
  |  Branch (11509:10): [True: 0, False: 0]
  ------------------
11510|      0|					goto yy59;
11511|      0|				}
11512|      0|			}
11513|      0|		} else {
11514|      0|			if (yych <= 'V') {
  ------------------
  |  Branch (11514:8): [True: 0, False: 0]
  ------------------
11515|      0|				if (yych <= 'S') goto yy201;
  ------------------
  |  Branch (11515:9): [True: 0, False: 0]
  ------------------
11516|      0|				if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (11516:9): [True: 0, False: 0]
  ------------------
11517|      0|				if (yych <= 'U') goto yy88;
  ------------------
  |  Branch (11517:9): [True: 0, False: 0]
  ------------------
11518|      0|				goto yy59;
11519|      0|			} else {
11520|      0|				if (yych <= 'X') {
  ------------------
  |  Branch (11520:9): [True: 0, False: 0]
  ------------------
11521|      0|					if (yych <= 'W') goto yy90;
  ------------------
  |  Branch (11521:10): [True: 0, False: 0]
  ------------------
11522|      0|					goto yy59;
11523|      0|				} else {
11524|      0|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (11524:10): [True: 0, False: 0]
  ------------------
11525|      0|					if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (11525:10): [True: 0, False: 0]
  ------------------
11526|      0|					goto yy198;
11527|      0|				}
11528|      0|			}
11529|      0|		}
11530|      0|	} else {
11531|      0|		if (yych <= 't') {
  ------------------
  |  Branch (11531:7): [True: 0, False: 0]
  ------------------
11532|      0|			if (yych <= 'h') {
  ------------------
  |  Branch (11532:8): [True: 0, False: 0]
  ------------------
11533|      0|				if (yych == 'f') goto yy199;
  ------------------
  |  Branch (11533:9): [True: 0, False: 0]
  ------------------
11534|      0|				if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (11534:9): [True: 0, False: 0]
  ------------------
11535|      0|				goto yy79;
11536|      0|			} else {
11537|      0|				if (yych <= 'm') {
  ------------------
  |  Branch (11537:9): [True: 0, False: 0]
  ------------------
11538|      0|					if (yych <= 'l') goto yy59;
  ------------------
  |  Branch (11538:10): [True: 0, False: 0]
  ------------------
11539|      0|					goto yy200;
11540|      0|				} else {
11541|      0|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (11541:10): [True: 0, False: 0]
  ------------------
11542|      0|					if (yych <= 's') goto yy201;
  ------------------
  |  Branch (11542:10): [True: 0, False: 0]
  ------------------
11543|      0|					goto yy87;
11544|      0|				}
11545|      0|			}
11546|      0|		} else {
11547|      0|			if (yych <= 'y') {
  ------------------
  |  Branch (11547:8): [True: 0, False: 0]
  ------------------
11548|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (11548:9): [True: 0, False: 0]
  ------------------
11549|      0|					if (yych <= 'u') goto yy88;
  ------------------
  |  Branch (11549:10): [True: 0, False: 0]
  ------------------
11550|      0|					goto yy59;
11551|      0|				} else {
11552|      0|					if (yych <= 'w') goto yy90;
  ------------------
  |  Branch (11552:10): [True: 0, False: 0]
  ------------------
11553|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (11553:10): [True: 0, False: 0]
  ------------------
11554|      0|					goto yy92;
11555|      0|				}
11556|      0|			} else {
11557|      0|				if (yych <= 0xC2) {
  ------------------
  |  Branch (11557:9): [True: 0, False: 0]
  ------------------
11558|      0|					if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (11558:10): [True: 0, False: 0]
  ------------------
11559|      0|					goto yy211;
11560|      0|				} else {
11561|      0|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (11561:10): [True: 0, False: 0]
  ------------------
11562|      0|					goto yy59;
11563|      0|				}
11564|      0|			}
11565|      0|		}
11566|      0|	}
11567|     30|yy451:
11568|     30|	YYDEBUG(451, *YYCURSOR);
11569|     30|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
11570|     30|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (11570:6): [True: 3, False: 27]
  ------------------
11571|     27|	if (yych <= '5') goto yy636;
  ------------------
  |  Branch (11571:6): [True: 15, False: 12]
  ------------------
11572|     12|	if (yych <= '6') goto yy637;
  ------------------
  |  Branch (11572:6): [True: 4, False: 8]
  ------------------
11573|      8|	if (yych <= '9') goto yy572;
  ------------------
  |  Branch (11573:6): [True: 1, False: 7]
  ------------------
11574|      7|	goto yy59;
11575|     32|yy452:
11576|     32|	YYDEBUG(452, *YYCURSOR);
11577|     32|	yyaccept = 4;
11578|     32|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     32|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     32|#define   YYCURSOR     cursor
  ------------------
11579|     32|	if (yych <= 'A') {
  ------------------
  |  Branch (11579:6): [True: 20, False: 12]
  ------------------
11580|     20|		if (yych <= ',') {
  ------------------
  |  Branch (11580:7): [True: 2, False: 18]
  ------------------
11581|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (11581:8): [True: 0, False: 2]
  ------------------
11582|      0|				if (yych <= 0x08) goto yy177;
  ------------------
  |  Branch (11582:9): [True: 0, False: 0]
  ------------------
11583|      0|				goto yy638;
11584|      2|			} else {
11585|      2|				if (yych == ' ') goto yy638;
  ------------------
  |  Branch (11585:9): [True: 0, False: 2]
  ------------------
11586|      2|				goto yy177;
11587|      2|			}
11588|     18|		} else {
11589|     18|			if (yych <= '9') {
  ------------------
  |  Branch (11589:8): [True: 16, False: 2]
  ------------------
11590|     16|				if (yych <= '-') goto yy396;
  ------------------
  |  Branch (11590:9): [True: 0, False: 16]
  ------------------
11591|     16|				if (yych <= '.') goto yy451;
  ------------------
  |  Branch (11591:9): [True: 7, False: 9]
  ------------------
11592|      9|				goto yy177;
11593|     16|			} else {
11594|      2|				if (yych <= ':') goto yy453;
  ------------------
  |  Branch (11594:9): [True: 0, False: 2]
  ------------------
11595|      2|				if (yych <= '@') goto yy177;
  ------------------
  |  Branch (11595:9): [True: 2, False: 0]
  ------------------
11596|      0|				goto yy106;
11597|      2|			}
11598|     18|		}
11599|     20|	} else {
11600|     12|		if (yych <= 'o') {
  ------------------
  |  Branch (11600:7): [True: 2, False: 10]
  ------------------
11601|      2|			if (yych <= 'P') {
  ------------------
  |  Branch (11601:8): [True: 0, False: 2]
  ------------------
11602|      0|				if (yych <= 'O') goto yy177;
  ------------------
  |  Branch (11602:9): [True: 0, False: 0]
  ------------------
11603|      0|				goto yy106;
11604|      2|			} else {
11605|      2|				if (yych == 'a') goto yy106;
  ------------------
  |  Branch (11605:9): [True: 1, False: 1]
  ------------------
11606|      1|				goto yy177;
11607|      2|			}
11608|     10|		} else {
11609|     10|			if (yych <= 0xC2) {
  ------------------
  |  Branch (11609:8): [True: 10, False: 0]
  ------------------
11610|     10|				if (yych <= 'p') goto yy106;
  ------------------
  |  Branch (11610:9): [True: 0, False: 10]
  ------------------
11611|     10|				if (yych <= 0xC1) goto yy177;
  ------------------
  |  Branch (11611:9): [True: 10, False: 0]
  ------------------
11612|      0|				goto yy640;
11613|     10|			} else {
11614|      0|				if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (11614:9): [True: 0, False: 0]
  ------------------
11615|      0|				goto yy177;
11616|      0|			}
11617|     10|		}
11618|     12|	}
11619|     17|yy453:
11620|     17|	YYDEBUG(453, *YYCURSOR);
11621|     17|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
11622|     17|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (11622:6): [True: 0, False: 17]
  ------------------
11623|     17|	if (yych <= '5') goto yy642;
  ------------------
  |  Branch (11623:6): [True: 13, False: 4]
  ------------------
11624|      4|	if (yych <= '6') goto yy643;
  ------------------
  |  Branch (11624:6): [True: 3, False: 1]
  ------------------
11625|      1|	if (yych <= '9') goto yy575;
  ------------------
  |  Branch (11625:6): [True: 0, False: 1]
  ------------------
11626|      1|	goto yy59;
11627|     36|yy454:
11628|     36|	YYDEBUG(454, *YYCURSOR);
11629|     36|	yyaccept = 4;
11630|     36|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     36|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     36|#define   YYCURSOR     cursor
  ------------------
11631|     36|	if (yych <= 'A') {
  ------------------
  |  Branch (11631:6): [True: 30, False: 6]
  ------------------
11632|     30|		if (yych <= '-') {
  ------------------
  |  Branch (11632:7): [True: 25, False: 5]
  ------------------
11633|     25|			if (yych <= '\t') {
  ------------------
  |  Branch (11633:8): [True: 0, False: 25]
  ------------------
11634|      0|				if (yych <= 0x08) goto yy177;
  ------------------
  |  Branch (11634:9): [True: 0, False: 0]
  ------------------
11635|      0|				goto yy638;
11636|     25|			} else {
11637|     25|				if (yych == ' ') goto yy638;
  ------------------
  |  Branch (11637:9): [True: 22, False: 3]
  ------------------
11638|      3|				goto yy177;
11639|     25|			}
11640|     25|		} else {
11641|      5|			if (yych <= '9') {
  ------------------
  |  Branch (11641:8): [True: 4, False: 1]
  ------------------
11642|      4|				if (yych <= '.') goto yy453;
  ------------------
  |  Branch (11642:9): [True: 1, False: 3]
  ------------------
11643|      3|				goto yy177;
11644|      4|			} else {
11645|      1|				if (yych <= ':') goto yy453;
  ------------------
  |  Branch (11645:9): [True: 0, False: 1]
  ------------------
11646|      1|				if (yych <= '@') goto yy177;
  ------------------
  |  Branch (11646:9): [True: 0, False: 1]
  ------------------
11647|      1|				goto yy106;
11648|      1|			}
11649|      5|		}
11650|     30|	} else {
11651|      6|		if (yych <= 'o') {
  ------------------
  |  Branch (11651:7): [True: 5, False: 1]
  ------------------
11652|      5|			if (yych <= 'P') {
  ------------------
  |  Branch (11652:8): [True: 4, False: 1]
  ------------------
11653|      4|				if (yych <= 'O') goto yy177;
  ------------------
  |  Branch (11653:9): [True: 4, False: 0]
  ------------------
11654|      0|				goto yy106;
11655|      4|			} else {
11656|      1|				if (yych == 'a') goto yy106;
  ------------------
  |  Branch (11656:9): [True: 1, False: 0]
  ------------------
11657|      0|				goto yy177;
11658|      1|			}
11659|      5|		} else {
11660|      1|			if (yych <= 0xC2) {
  ------------------
  |  Branch (11660:8): [True: 0, False: 1]
  ------------------
11661|      0|				if (yych <= 'p') goto yy106;
  ------------------
  |  Branch (11661:9): [True: 0, False: 0]
  ------------------
11662|      0|				if (yych <= 0xC1) goto yy177;
  ------------------
  |  Branch (11662:9): [True: 0, False: 0]
  ------------------
11663|      0|				goto yy640;
11664|      1|			} else {
11665|      1|				if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (11665:9): [True: 0, False: 1]
  ------------------
11666|      1|				goto yy177;
11667|      1|			}
11668|      1|		}
11669|      6|	}
11670|     22|yy455:
11671|     22|	YYDEBUG(455, *YYCURSOR);
11672|     22|	yyaccept = 4;
11673|     22|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     22|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
11674|     22|	if (yych <= 'A') {
  ------------------
  |  Branch (11674:6): [True: 18, False: 4]
  ------------------
11675|     18|		if (yych <= '-') {
  ------------------
  |  Branch (11675:7): [True: 13, False: 5]
  ------------------
11676|     13|			if (yych <= '\t') {
  ------------------
  |  Branch (11676:8): [True: 11, False: 2]
  ------------------
11677|     11|				if (yych <= 0x08) goto yy177;
  ------------------
  |  Branch (11677:9): [True: 4, False: 7]
  ------------------
11678|      7|				goto yy638;
11679|     11|			} else {
11680|      2|				if (yych == ' ') goto yy638;
  ------------------
  |  Branch (11680:9): [True: 1, False: 1]
  ------------------
11681|      1|				goto yy177;
11682|      2|			}
11683|     13|		} else {
11684|      5|			if (yych <= '9') {
  ------------------
  |  Branch (11684:8): [True: 2, False: 3]
  ------------------
11685|      2|				if (yych <= '.') goto yy453;
  ------------------
  |  Branch (11685:9): [True: 0, False: 2]
  ------------------
11686|      2|				goto yy177;
11687|      3|			} else {
11688|      3|				if (yych <= ':') goto yy644;
  ------------------
  |  Branch (11688:9): [True: 2, False: 1]
  ------------------
11689|      1|				if (yych <= '@') goto yy177;
  ------------------
  |  Branch (11689:9): [True: 1, False: 0]
  ------------------
11690|      0|				goto yy106;
11691|      1|			}
11692|      5|		}
11693|     18|	} else {
11694|      4|		if (yych <= 'o') {
  ------------------
  |  Branch (11694:7): [True: 3, False: 1]
  ------------------
11695|      3|			if (yych <= 'P') {
  ------------------
  |  Branch (11695:8): [True: 3, False: 0]
  ------------------
11696|      3|				if (yych <= 'O') goto yy177;
  ------------------
  |  Branch (11696:9): [True: 0, False: 3]
  ------------------
11697|      3|				goto yy106;
11698|      3|			} else {
11699|      0|				if (yych == 'a') goto yy106;
  ------------------
  |  Branch (11699:9): [True: 0, False: 0]
  ------------------
11700|      0|				goto yy177;
11701|      0|			}
11702|      3|		} else {
11703|      1|			if (yych <= 0xC2) {
  ------------------
  |  Branch (11703:8): [True: 0, False: 1]
  ------------------
11704|      0|				if (yych <= 'p') goto yy106;
  ------------------
  |  Branch (11704:9): [True: 0, False: 0]
  ------------------
11705|      0|				if (yych <= 0xC1) goto yy177;
  ------------------
  |  Branch (11705:9): [True: 0, False: 0]
  ------------------
11706|      0|				goto yy640;
11707|      1|			} else {
11708|      1|				if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (11708:9): [True: 0, False: 1]
  ------------------
11709|      1|				goto yy177;
11710|      1|			}
11711|      1|		}
11712|      4|	}
11713|      1|yy456:
11714|      1|	YYDEBUG(456, *YYCURSOR);
11715|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
11716|      1|	YYDEBUG(457, *YYCURSOR);
11717|      1|#line 1349 "ext/date/lib/parse_date.re"
11718|      1|	{
11719|      1|		DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
11720|      1|		TIMELIB_INIT;
  ------------------
  |  |  107|      1|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
11721|      1|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      1|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
11722|      1|		s->time->h = timelib_get_nr(&ptr, 2);
11723|      1|		if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (11723:7): [True: 1, False: 0]
  |  Branch (11723:22): [True: 0, False: 0]
  ------------------
11724|      1|			s->time->i = timelib_get_nr(&ptr, 2);
11725|      1|			if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (11725:8): [True: 0, False: 1]
  |  Branch (11725:23): [True: 0, False: 1]
  ------------------
11726|      0|				s->time->s = timelib_get_nr(&ptr, 2);
11727|      0|			}
11728|      1|		}
11729|      1|		timelib_eat_spaces(&ptr);
11730|      1|		s->time->h += timelib_meridian(&ptr, s->time->h);
11731|      1|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      1|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      1|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11732|      1|		return TIMELIB_TIME12;
  ------------------
  |  |   52|      1|#define TIMELIB_TIME12         261
  ------------------
11733|      1|	}
11734|      0|#line 11735 "ext/date/lib/parse_date.c"
11735|      3|yy458:
11736|      3|	YYDEBUG(458, *YYCURSOR);
11737|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
11738|      3|	if (yych <= '\t') {
  ------------------
  |  Branch (11738:6): [True: 0, False: 3]
  ------------------
11739|      0|		if (yych <= 0x00) goto yy456;
  ------------------
  |  Branch (11739:7): [True: 0, False: 0]
  ------------------
11740|      0|		if (yych <= 0x08) goto yy59;
  ------------------
  |  Branch (11740:7): [True: 0, False: 0]
  ------------------
11741|      0|		goto yy456;
11742|      3|	} else {
11743|      3|		if (yych == ' ') goto yy456;
  ------------------
  |  Branch (11743:7): [True: 0, False: 3]
  ------------------
11744|      3|		goto yy59;
11745|      3|	}
11746|      0|yy459:
11747|      0|	YYDEBUG(459, *YYCURSOR);
11748|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11749|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (11749:6): [True: 0, False: 0]
  ------------------
11750|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11751|      0|	if (yych <= 'a') {
  ------------------
  |  Branch (11751:6): [True: 0, False: 0]
  ------------------
11752|      0|		if (yych <= 'O') {
  ------------------
  |  Branch (11752:7): [True: 0, False: 0]
  ------------------
11753|      0|			if (yych <= 'E') {
  ------------------
  |  Branch (11753:8): [True: 0, False: 0]
  ------------------
11754|      0|				if (yych <= 'A') {
  ------------------
  |  Branch (11754:9): [True: 0, False: 0]
  ------------------
11755|      0|					if (yych <= '@') goto yy59;
  ------------------
  |  Branch (11755:10): [True: 0, False: 0]
  ------------------
11756|      0|					goto yy106;
11757|      0|				} else {
11758|      0|					if (yych == 'D') goto yy198;
  ------------------
  |  Branch (11758:10): [True: 0, False: 0]
  ------------------
11759|      0|					goto yy59;
11760|      0|				}
11761|      0|			} else {
11762|      0|				if (yych <= 'H') {
  ------------------
  |  Branch (11762:9): [True: 0, False: 0]
  ------------------
11763|      0|					if (yych <= 'F') goto yy199;
  ------------------
  |  Branch (11763:10): [True: 0, False: 0]
  ------------------
11764|      0|					if (yych <= 'G') goto yy59;
  ------------------
  |  Branch (11764:10): [True: 0, False: 0]
  ------------------
11765|      0|					goto yy79;
11766|      0|				} else {
11767|      0|					if (yych == 'M') goto yy200;
  ------------------
  |  Branch (11767:10): [True: 0, False: 0]
  ------------------
11768|      0|					goto yy59;
11769|      0|				}
11770|      0|			}
11771|      0|		} else {
11772|      0|			if (yych <= 'U') {
  ------------------
  |  Branch (11772:8): [True: 0, False: 0]
  ------------------
11773|      0|				if (yych <= 'R') {
  ------------------
  |  Branch (11773:9): [True: 0, False: 0]
  ------------------
11774|      0|					if (yych <= 'P') goto yy106;
  ------------------
  |  Branch (11774:10): [True: 0, False: 0]
  ------------------
11775|      0|					goto yy59;
11776|      0|				} else {
11777|      0|					if (yych <= 'S') goto yy201;
  ------------------
  |  Branch (11777:10): [True: 0, False: 0]
  ------------------
11778|      0|					if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (11778:10): [True: 0, False: 0]
  ------------------
11779|      0|					goto yy88;
11780|      0|				}
11781|      0|			} else {
11782|      0|				if (yych <= 'X') {
  ------------------
  |  Branch (11782:9): [True: 0, False: 0]
  ------------------
11783|      0|					if (yych == 'W') goto yy90;
  ------------------
  |  Branch (11783:10): [True: 0, False: 0]
  ------------------
11784|      0|					goto yy59;
11785|      0|				} else {
11786|      0|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (11786:10): [True: 0, False: 0]
  ------------------
11787|      0|					if (yych <= '`') goto yy59;
  ------------------
  |  Branch (11787:10): [True: 0, False: 0]
  ------------------
11788|      0|					goto yy106;
11789|      0|				}
11790|      0|			}
11791|      0|		}
11792|      0|	} else {
11793|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (11793:7): [True: 0, False: 0]
  ------------------
11794|      0|			if (yych <= 'g') {
  ------------------
  |  Branch (11794:8): [True: 0, False: 0]
  ------------------
11795|      0|				if (yych <= 'd') {
  ------------------
  |  Branch (11795:9): [True: 0, False: 0]
  ------------------
11796|      0|					if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (11796:10): [True: 0, False: 0]
  ------------------
11797|      0|					goto yy198;
11798|      0|				} else {
11799|      0|					if (yych == 'f') goto yy199;
  ------------------
  |  Branch (11799:10): [True: 0, False: 0]
  ------------------
11800|      0|					goto yy59;
11801|      0|				}
11802|      0|			} else {
11803|      0|				if (yych <= 'm') {
  ------------------
  |  Branch (11803:9): [True: 0, False: 0]
  ------------------
11804|      0|					if (yych <= 'h') goto yy79;
  ------------------
  |  Branch (11804:10): [True: 0, False: 0]
  ------------------
11805|      0|					if (yych <= 'l') goto yy59;
  ------------------
  |  Branch (11805:10): [True: 0, False: 0]
  ------------------
11806|      0|					goto yy200;
11807|      0|				} else {
11808|      0|					if (yych == 'p') goto yy106;
  ------------------
  |  Branch (11808:10): [True: 0, False: 0]
  ------------------
11809|      0|					goto yy59;
11810|      0|				}
11811|      0|			}
11812|      0|		} else {
11813|      0|			if (yych <= 'x') {
  ------------------
  |  Branch (11813:8): [True: 0, False: 0]
  ------------------
11814|      0|				if (yych <= 'u') {
  ------------------
  |  Branch (11814:9): [True: 0, False: 0]
  ------------------
11815|      0|					if (yych <= 's') goto yy201;
  ------------------
  |  Branch (11815:10): [True: 0, False: 0]
  ------------------
11816|      0|					if (yych <= 't') goto yy87;
  ------------------
  |  Branch (11816:10): [True: 0, False: 0]
  ------------------
11817|      0|					goto yy88;
11818|      0|				} else {
11819|      0|					if (yych == 'w') goto yy90;
  ------------------
  |  Branch (11819:10): [True: 0, False: 0]
  ------------------
11820|      0|					goto yy59;
11821|      0|				}
11822|      0|			} else {
11823|      0|				if (yych <= 0xC2) {
  ------------------
  |  Branch (11823:9): [True: 0, False: 0]
  ------------------
11824|      0|					if (yych <= 'y') goto yy92;
  ------------------
  |  Branch (11824:10): [True: 0, False: 0]
  ------------------
11825|      0|					if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (11825:10): [True: 0, False: 0]
  ------------------
11826|      0|					goto yy211;
11827|      0|				} else {
11828|      0|					if (yych == 0xE2) goto yy108;
  ------------------
  |  Branch (11828:10): [True: 0, False: 0]
  ------------------
11829|      0|					goto yy59;
11830|      0|				}
11831|      0|			}
11832|      0|		}
11833|      0|	}
11834|      3|yy460:
11835|      3|	YYDEBUG(460, *YYCURSOR);
11836|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
11837|      3|	if (yych == '-') goto yy645;
  ------------------
  |  Branch (11837:6): [True: 1, False: 2]
  ------------------
11838|      2|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (11838:6): [True: 0, False: 2]
  ------------------
11839|      2|	if (yych <= '9') goto yy646;
  ------------------
  |  Branch (11839:6): [True: 2, False: 0]
  ------------------
11840|      0|	goto yy59;
11841|     22|yy461:
11842|     22|	YYDEBUG(461, *YYCURSOR);
11843|     22|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
11844|     22|	if (yych == '-') goto yy645;
  ------------------
  |  Branch (11844:6): [True: 0, False: 22]
  ------------------
11845|     22|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (11845:6): [True: 0, False: 22]
  ------------------
11846|     22|	if (yych <= '2') goto yy646;
  ------------------
  |  Branch (11846:6): [True: 10, False: 12]
  ------------------
11847|     12|	goto yy59;
11848|     41|yy462:
11849|     41|	YYDEBUG(462, *YYCURSOR);
11850|     41|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     41|#define   YYCURSOR     cursor
  ------------------
11851|     41|	if (yych == '-') goto yy645;
  ------------------
  |  Branch (11851:6): [True: 2, False: 39]
  ------------------
11852|     39|	goto yy59;
11853|     39|yy463:
11854|     23|	YYDEBUG(463, *YYCURSOR);
11855|     23|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     23|#define   YYCURSOR     cursor
  ------------------
11856|     23|	if (yych <= 'U') {
  ------------------
  |  Branch (11856:6): [True: 5, False: 18]
  ------------------
11857|      5|		if (yych == 'P') goto yy647;
  ------------------
  |  Branch (11857:7): [True: 0, False: 5]
  ------------------
11858|      5|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (11858:7): [True: 5, False: 0]
  ------------------
11859|      0|		goto yy648;
11860|     18|	} else {
11861|     18|		if (yych <= 'p') {
  ------------------
  |  Branch (11861:7): [True: 16, False: 2]
  ------------------
11862|     16|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (11862:8): [True: 0, False: 16]
  ------------------
11863|     16|			goto yy647;
11864|     16|		} else {
11865|      2|			if (yych == 'u') goto yy648;
  ------------------
  |  Branch (11865:8): [True: 0, False: 2]
  ------------------
11866|      2|			goto yy59;
11867|      2|		}
11868|     18|	}
11869|      1|yy464:
11870|      1|	YYDEBUG(464, *YYCURSOR);
11871|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
11872|      1|	if (yych == 'E') goto yy649;
  ------------------
  |  Branch (11872:6): [True: 0, False: 1]
  ------------------
11873|      1|	if (yych == 'e') goto yy649;
  ------------------
  |  Branch (11873:6): [True: 0, False: 1]
  ------------------
11874|      1|	goto yy59;
11875|      1|yy465:
11876|      1|	YYDEBUG(465, *YYCURSOR);
11877|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
11878|      1|	if (yych == 'E') goto yy650;
  ------------------
  |  Branch (11878:6): [True: 0, False: 1]
  ------------------
11879|      1|	if (yych == 'e') goto yy650;
  ------------------
  |  Branch (11879:6): [True: 1, False: 0]
  ------------------
11880|      0|	goto yy59;
11881|      9|yy466:
11882|      9|	YYDEBUG(466, *YYCURSOR);
11883|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
11884|      9|	if (yych <= 'U') {
  ------------------
  |  Branch (11884:6): [True: 5, False: 4]
  ------------------
11885|      5|		if (yych == 'A') goto yy651;
  ------------------
  |  Branch (11885:7): [True: 0, False: 5]
  ------------------
11886|      5|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (11886:7): [True: 3, False: 2]
  ------------------
11887|      2|		goto yy652;
11888|      5|	} else {
11889|      4|		if (yych <= 'a') {
  ------------------
  |  Branch (11889:7): [True: 1, False: 3]
  ------------------
11890|      1|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (11890:8): [True: 1, False: 0]
  ------------------
11891|      0|			goto yy651;
11892|      3|		} else {
11893|      3|			if (yych == 'u') goto yy652;
  ------------------
  |  Branch (11893:8): [True: 0, False: 3]
  ------------------
11894|      3|			goto yy59;
11895|      3|		}
11896|      4|	}
11897|     14|yy467:
11898|     14|	YYDEBUG(467, *YYCURSOR);
11899|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
11900|     14|	if (yych == 'A') goto yy653;
  ------------------
  |  Branch (11900:6): [True: 0, False: 14]
  ------------------
11901|     14|	if (yych == 'a') goto yy653;
  ------------------
  |  Branch (11901:6): [True: 0, False: 14]
  ------------------
11902|     14|	goto yy59;
11903|     14|yy468:
11904|     11|	YYDEBUG(468, *YYCURSOR);
11905|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
11906|     11|	if (yych == 'O') goto yy654;
  ------------------
  |  Branch (11906:6): [True: 0, False: 11]
  ------------------
11907|     11|	if (yych == 'o') goto yy654;
  ------------------
  |  Branch (11907:6): [True: 9, False: 2]
  ------------------
11908|      2|	goto yy59;
11909|     15|yy469:
11910|     15|	YYDEBUG(469, *YYCURSOR);
11911|     15|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
11912|     15|	if (yych == 'C') goto yy655;
  ------------------
  |  Branch (11912:6): [True: 0, False: 15]
  ------------------
11913|     15|	if (yych == 'c') goto yy655;
  ------------------
  |  Branch (11913:6): [True: 6, False: 9]
  ------------------
11914|      9|	goto yy59;
11915|     14|yy470:
11916|     14|	YYDEBUG(470, *YYCURSOR);
11917|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
11918|     14|	if (yych == 'E') goto yy656;
  ------------------
  |  Branch (11918:6): [True: 1, False: 13]
  ------------------
11919|     13|	if (yych == 'e') goto yy656;
  ------------------
  |  Branch (11919:6): [True: 3, False: 10]
  ------------------
11920|     10|	goto yy59;
11921|     14|yy471:
11922|     14|	YYDEBUG(471, *YYCURSOR);
11923|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
11924|     14|	if (yych <= '/') goto yy290;
  ------------------
  |  Branch (11924:6): [True: 1, False: 13]
  ------------------
11925|     13|	if (yych <= '9') goto yy657;
  ------------------
  |  Branch (11925:6): [True: 11, False: 2]
  ------------------
11926|      2|	goto yy290;
11927|  1.17k|yy472:
11928|  1.17k|	YYDEBUG(472, *YYCURSOR);
11929|  1.17k|	yych = *++YYCURSOR;
  ------------------
  |  |   89|  1.17k|#define   YYCURSOR     cursor
  ------------------
11930|  1.17k|	if (yych <= '@') {
  ------------------
  |  Branch (11930:6): [True: 277, False: 895]
  ------------------
11931|    277|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (11931:7): [True: 8, False: 269]
  ------------------
11932|    269|		goto yy20;
11933|    895|	} else {
11934|    895|		if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (11934:7): [True: 232, False: 663]
  ------------------
11935|    663|		if (yych <= '`') goto yy20;
  ------------------
  |  Branch (11935:7): [True: 35, False: 628]
  ------------------
11936|    628|		if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (11936:7): [True: 581, False: 47]
  ------------------
11937|     47|		goto yy20;
11938|    628|	}
11939|     13|yy473:
11940|     13|	YYDEBUG(473, *YYCURSOR);
11941|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
11942|     13|	if (yych <= '/') goto yy142;
  ------------------
  |  Branch (11942:6): [True: 11, False: 2]
  ------------------
11943|      2|	if (yych <= '2') goto yy659;
  ------------------
  |  Branch (11943:6): [True: 2, False: 0]
  ------------------
11944|      0|	if (yych <= '3') goto yy660;
  ------------------
  |  Branch (11944:6): [True: 0, False: 0]
  ------------------
11945|      0|	goto yy142;
11946|      2|yy474:
11947|      2|	YYDEBUG(474, *YYCURSOR);
11948|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
11949|      2|	if (yych <= 'L') {
  ------------------
  |  Branch (11949:6): [True: 1, False: 1]
  ------------------
11950|      1|		if (yych <= ')') {
  ------------------
  |  Branch (11950:7): [True: 0, False: 1]
  ------------------
11951|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (11951:8): [True: 0, False: 0]
  ------------------
11952|      0|			goto yy115;
11953|      1|		} else {
11954|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (11954:8): [True: 1, False: 0]
  ------------------
11955|      0|			if (yych <= 'K') goto yy658;
  ------------------
  |  Branch (11955:8): [True: 0, False: 0]
  ------------------
11956|      0|			goto yy661;
11957|      0|		}
11958|      1|	} else {
11959|      1|		if (yych <= 'k') {
  ------------------
  |  Branch (11959:7): [True: 0, False: 1]
  ------------------
11960|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (11960:8): [True: 0, False: 0]
  ------------------
11961|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (11961:8): [True: 0, False: 0]
  ------------------
11962|      0|			goto yy658;
11963|      1|		} else {
11964|      1|			if (yych <= 'l') goto yy661;
  ------------------
  |  Branch (11964:8): [True: 0, False: 1]
  ------------------
11965|      1|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (11965:8): [True: 1, False: 0]
  ------------------
11966|      0|			goto yy20;
11967|      1|		}
11968|      1|	}
11969|      0|yy475:
11970|      0|	YYDEBUG(475, *YYCURSOR);
11971|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
11972|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (11972:6): [True: 0, False: 0]
  ------------------
11973|      0|		if (yych <= ')') {
  ------------------
  |  Branch (11973:7): [True: 0, False: 0]
  ------------------
11974|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (11974:8): [True: 0, False: 0]
  ------------------
11975|      0|			goto yy115;
11976|      0|		} else {
11977|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (11977:8): [True: 0, False: 0]
  ------------------
11978|      0|			if (yych <= 'R') goto yy658;
  ------------------
  |  Branch (11978:8): [True: 0, False: 0]
  ------------------
11979|      0|			goto yy662;
11980|      0|		}
11981|      0|	} else {
11982|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (11982:7): [True: 0, False: 0]
  ------------------
11983|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (11983:8): [True: 0, False: 0]
  ------------------
11984|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (11984:8): [True: 0, False: 0]
  ------------------
11985|      0|			goto yy658;
11986|      0|		} else {
11987|      0|			if (yych <= 's') goto yy662;
  ------------------
  |  Branch (11987:8): [True: 0, False: 0]
  ------------------
11988|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (11988:8): [True: 0, False: 0]
  ------------------
11989|      0|			goto yy20;
11990|      0|		}
11991|      0|	}
11992|    107|yy476:
11993|    107|	YYDEBUG(476, *YYCURSOR);
11994|    107|	yyaccept = 2;
11995|    107|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|    107|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|    107|#define   YYCURSOR     cursor
  ------------------
11996|    107|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|    107|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|    107|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (11996:6): [True: 0, False: 107]
  ------------------
11997|    107|	yych = *YYCURSOR;
  ------------------
  |  |   89|    107|#define   YYCURSOR     cursor
  ------------------
11998|    107|	YYDEBUG(477, *YYCURSOR);
11999|    107|	if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (11999:6): [True: 70, False: 37]
  ------------------
12000|     70|		goto yy476;
12001|     70|	}
12002|     37|	if (yych <= '.') {
  ------------------
  |  Branch (12002:6): [True: 24, False: 13]
  ------------------
12003|     24|		if (yych == '-') goto yy297;
  ------------------
  |  Branch (12003:7): [True: 6, False: 18]
  ------------------
12004|     18|		goto yy20;
12005|     24|	} else {
12006|     13|		if (yych <= '/') goto yy297;
  ------------------
  |  Branch (12006:7): [True: 0, False: 13]
  ------------------
12007|     13|		if (yych == '_') goto yy297;
  ------------------
  |  Branch (12007:7): [True: 1, False: 12]
  ------------------
12008|     12|		goto yy20;
12009|     13|	}
12010|    134|yy478:
12011|    134|	YYDEBUG(478, *YYCURSOR);
12012|    134|	yyaccept = 2;
12013|    134|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    134|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    134|#define   YYCURSOR     cursor
  ------------------
12014|    134|	if (yych <= '/') {
  ------------------
  |  Branch (12014:6): [True: 15, False: 119]
  ------------------
12015|     15|		if (yych <= ',') {
  ------------------
  |  Branch (12015:7): [True: 11, False: 4]
  ------------------
12016|     11|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12016:8): [True: 0, False: 11]
  ------------------
12017|     11|			goto yy20;
12018|     11|		} else {
12019|      4|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (12019:8): [True: 0, False: 4]
  ------------------
12020|      4|			goto yy297;
12021|      4|		}
12022|    119|	} else {
12023|    119|		if (yych <= '^') {
  ------------------
  |  Branch (12023:7): [True: 28, False: 91]
  ------------------
12024|     28|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12024:8): [True: 12, False: 16]
  ------------------
12025|     16|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12025:8): [True: 14, False: 2]
  ------------------
12026|      2|			goto yy20;
12027|     91|		} else {
12028|     91|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (12028:8): [True: 2, False: 89]
  ------------------
12029|     89|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12029:8): [True: 0, False: 89]
  ------------------
12030|     89|			if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12030:8): [True: 79, False: 10]
  ------------------
12031|     10|			goto yy20;
12032|     89|		}
12033|    119|	}
12034|      0|yy479:
12035|      0|	YYDEBUG(479, *YYCURSOR);
12036|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12037|      0|	if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (12037:6): [True: 0, False: 0]
  ------------------
12038|      0|		goto yy476;
12039|      0|	}
12040|      0|	if (yych <= '/') goto yy142;
  ------------------
  |  Branch (12040:6): [True: 0, False: 0]
  ------------------
12041|      0|	if (yych <= '2') goto yy659;
  ------------------
  |  Branch (12041:6): [True: 0, False: 0]
  ------------------
12042|      0|	if (yych <= '3') goto yy660;
  ------------------
  |  Branch (12042:6): [True: 0, False: 0]
  ------------------
12043|      0|	goto yy142;
12044|      4|yy480:
12045|      4|	YYDEBUG(480, *YYCURSOR);
12046|      4|	yyaccept = 2;
12047|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
12048|      4|	if (yych <= 'K') {
  ------------------
  |  Branch (12048:6): [True: 0, False: 4]
  ------------------
12049|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12049:7): [True: 0, False: 0]
  ------------------
12050|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12050:8): [True: 0, False: 0]
  ------------------
12051|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12051:8): [True: 0, False: 0]
  ------------------
12052|      0|			goto yy297;
12053|      0|		} else {
12054|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12054:8): [True: 0, False: 0]
  ------------------
12055|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12055:8): [True: 0, False: 0]
  ------------------
12056|      0|			goto yy658;
12057|      0|		}
12058|      4|	} else {
12059|      4|		if (yych <= '_') {
  ------------------
  |  Branch (12059:7): [True: 0, False: 4]
  ------------------
12060|      0|			if (yych <= 'L') goto yy661;
  ------------------
  |  Branch (12060:8): [True: 0, False: 0]
  ------------------
12061|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12061:8): [True: 0, False: 0]
  ------------------
12062|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12062:8): [True: 0, False: 0]
  ------------------
12063|      0|			goto yy297;
12064|      4|		} else {
12065|      4|			if (yych <= 'k') {
  ------------------
  |  Branch (12065:8): [True: 0, False: 4]
  ------------------
12066|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12066:9): [True: 0, False: 0]
  ------------------
12067|      0|				goto yy663;
12068|      4|			} else {
12069|      4|				if (yych <= 'l') goto yy664;
  ------------------
  |  Branch (12069:9): [True: 4, False: 0]
  ------------------
12070|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12070:9): [True: 0, False: 0]
  ------------------
12071|      0|				goto yy20;
12072|      0|			}
12073|      4|		}
12074|      4|	}
12075|      0|yy481:
12076|      0|	YYDEBUG(481, *YYCURSOR);
12077|      0|	yyaccept = 2;
12078|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12079|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (12079:6): [True: 0, False: 0]
  ------------------
12080|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12080:7): [True: 0, False: 0]
  ------------------
12081|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12081:8): [True: 0, False: 0]
  ------------------
12082|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12082:8): [True: 0, False: 0]
  ------------------
12083|      0|			goto yy297;
12084|      0|		} else {
12085|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12085:8): [True: 0, False: 0]
  ------------------
12086|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12086:8): [True: 0, False: 0]
  ------------------
12087|      0|			goto yy658;
12088|      0|		}
12089|      0|	} else {
12090|      0|		if (yych <= '_') {
  ------------------
  |  Branch (12090:7): [True: 0, False: 0]
  ------------------
12091|      0|			if (yych <= 'S') goto yy662;
  ------------------
  |  Branch (12091:8): [True: 0, False: 0]
  ------------------
12092|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12092:8): [True: 0, False: 0]
  ------------------
12093|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12093:8): [True: 0, False: 0]
  ------------------
12094|      0|			goto yy297;
12095|      0|		} else {
12096|      0|			if (yych <= 'r') {
  ------------------
  |  Branch (12096:8): [True: 0, False: 0]
  ------------------
12097|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12097:9): [True: 0, False: 0]
  ------------------
12098|      0|				goto yy663;
12099|      0|			} else {
12100|      0|				if (yych <= 's') goto yy665;
  ------------------
  |  Branch (12100:9): [True: 0, False: 0]
  ------------------
12101|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12101:9): [True: 0, False: 0]
  ------------------
12102|      0|				goto yy20;
12103|      0|			}
12104|      0|		}
12105|      0|	}
12106|      0|yy482:
12107|      0|	YYDEBUG(482, *YYCURSOR);
12108|      0|	yyaccept = 2;
12109|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12110|      0|	if (yych <= ')') {
  ------------------
  |  Branch (12110:6): [True: 0, False: 0]
  ------------------
12111|      0|		if (yych == ' ') goto yy666;
  ------------------
  |  Branch (12111:7): [True: 0, False: 0]
  ------------------
12112|      0|		if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12112:7): [True: 0, False: 0]
  ------------------
12113|      0|		goto yy115;
12114|      0|	} else {
12115|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (12115:7): [True: 0, False: 0]
  ------------------
12116|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12116:8): [True: 0, False: 0]
  ------------------
12117|      0|			goto yy658;
12118|      0|		} else {
12119|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12119:8): [True: 0, False: 0]
  ------------------
12120|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12120:8): [True: 0, False: 0]
  ------------------
12121|      0|			goto yy20;
12122|      0|		}
12123|      0|	}
12124|      0|yy483:
12125|      0|	YYDEBUG(483, *YYCURSOR);
12126|      0|	yyaccept = 2;
12127|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12128|      0|	if (yych <= '.') {
  ------------------
  |  Branch (12128:6): [True: 0, False: 0]
  ------------------
12129|      0|		if (yych <= '(') {
  ------------------
  |  Branch (12129:7): [True: 0, False: 0]
  ------------------
12130|      0|			if (yych == ' ') goto yy666;
  ------------------
  |  Branch (12130:8): [True: 0, False: 0]
  ------------------
12131|      0|			goto yy20;
12132|      0|		} else {
12133|      0|			if (yych <= ')') goto yy115;
  ------------------
  |  Branch (12133:8): [True: 0, False: 0]
  ------------------
12134|      0|			if (yych == '-') goto yy297;
  ------------------
  |  Branch (12134:8): [True: 0, False: 0]
  ------------------
12135|      0|			goto yy20;
12136|      0|		}
12137|      0|	} else {
12138|      0|		if (yych <= '^') {
  ------------------
  |  Branch (12138:7): [True: 0, False: 0]
  ------------------
12139|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (12139:8): [True: 0, False: 0]
  ------------------
12140|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12140:8): [True: 0, False: 0]
  ------------------
12141|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12141:8): [True: 0, False: 0]
  ------------------
12142|      0|			goto yy20;
12143|      0|		} else {
12144|      0|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (12144:8): [True: 0, False: 0]
  ------------------
12145|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12145:8): [True: 0, False: 0]
  ------------------
12146|      0|			if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12146:8): [True: 0, False: 0]
  ------------------
12147|      0|			goto yy20;
12148|      0|		}
12149|      0|	}
12150|      2|yy484:
12151|      2|	YYDEBUG(484, *YYCURSOR);
12152|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
12153|      2|	if (yych <= 'M') {
  ------------------
  |  Branch (12153:6): [True: 0, False: 2]
  ------------------
12154|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12154:7): [True: 0, False: 0]
  ------------------
12155|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12155:8): [True: 0, False: 0]
  ------------------
12156|      0|			goto yy115;
12157|      0|		} else {
12158|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12158:8): [True: 0, False: 0]
  ------------------
12159|      0|			if (yych <= 'L') goto yy658;
  ------------------
  |  Branch (12159:8): [True: 0, False: 0]
  ------------------
12160|      0|			goto yy667;
12161|      0|		}
12162|      2|	} else {
12163|      2|		if (yych <= 'l') {
  ------------------
  |  Branch (12163:7): [True: 0, False: 2]
  ------------------
12164|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12164:8): [True: 0, False: 0]
  ------------------
12165|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12165:8): [True: 0, False: 0]
  ------------------
12166|      0|			goto yy658;
12167|      2|		} else {
12168|      2|			if (yych <= 'm') goto yy667;
  ------------------
  |  Branch (12168:8): [True: 1, False: 1]
  ------------------
12169|      1|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12169:8): [True: 0, False: 1]
  ------------------
12170|      1|			goto yy20;
12171|      1|		}
12172|      2|	}
12173|      0|yy485:
12174|      0|	YYDEBUG(485, *YYCURSOR);
12175|      0|	yyaccept = 2;
12176|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12177|      0|	if (yych <= 'L') {
  ------------------
  |  Branch (12177:6): [True: 0, False: 0]
  ------------------
12178|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12178:7): [True: 0, False: 0]
  ------------------
12179|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12179:8): [True: 0, False: 0]
  ------------------
12180|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12180:8): [True: 0, False: 0]
  ------------------
12181|      0|			goto yy297;
12182|      0|		} else {
12183|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12183:8): [True: 0, False: 0]
  ------------------
12184|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12184:8): [True: 0, False: 0]
  ------------------
12185|      0|			goto yy658;
12186|      0|		}
12187|      0|	} else {
12188|      0|		if (yych <= '_') {
  ------------------
  |  Branch (12188:7): [True: 0, False: 0]
  ------------------
12189|      0|			if (yych <= 'M') goto yy667;
  ------------------
  |  Branch (12189:8): [True: 0, False: 0]
  ------------------
12190|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12190:8): [True: 0, False: 0]
  ------------------
12191|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12191:8): [True: 0, False: 0]
  ------------------
12192|      0|			goto yy297;
12193|      0|		} else {
12194|      0|			if (yych <= 'l') {
  ------------------
  |  Branch (12194:8): [True: 0, False: 0]
  ------------------
12195|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12195:9): [True: 0, False: 0]
  ------------------
12196|      0|				goto yy663;
12197|      0|			} else {
12198|      0|				if (yych <= 'm') goto yy668;
  ------------------
  |  Branch (12198:9): [True: 0, False: 0]
  ------------------
12199|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12199:9): [True: 0, False: 0]
  ------------------
12200|      0|				goto yy20;
12201|      0|			}
12202|      0|		}
12203|      0|	}
12204|      0|yy486:
12205|      0|	YYDEBUG(486, *YYCURSOR);
12206|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12207|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (12207:6): [True: 0, False: 0]
  ------------------
12208|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12208:7): [True: 0, False: 0]
  ------------------
12209|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12209:8): [True: 0, False: 0]
  ------------------
12210|      0|			goto yy115;
12211|      0|		} else {
12212|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12212:8): [True: 0, False: 0]
  ------------------
12213|      0|			if (yych <= 'S') goto yy658;
  ------------------
  |  Branch (12213:8): [True: 0, False: 0]
  ------------------
12214|      0|			goto yy669;
12215|      0|		}
12216|      0|	} else {
12217|      0|		if (yych <= 's') {
  ------------------
  |  Branch (12217:7): [True: 0, False: 0]
  ------------------
12218|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12218:8): [True: 0, False: 0]
  ------------------
12219|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12219:8): [True: 0, False: 0]
  ------------------
12220|      0|			goto yy658;
12221|      0|		} else {
12222|      0|			if (yych <= 't') goto yy669;
  ------------------
  |  Branch (12222:8): [True: 0, False: 0]
  ------------------
12223|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12223:8): [True: 0, False: 0]
  ------------------
12224|      0|			goto yy20;
12225|      0|		}
12226|      0|	}
12227|      1|yy487:
12228|      1|	YYDEBUG(487, *YYCURSOR);
12229|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
12230|      1|	if (yych <= 'E') {
  ------------------
  |  Branch (12230:6): [True: 0, False: 1]
  ------------------
12231|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12231:7): [True: 0, False: 0]
  ------------------
12232|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12232:8): [True: 0, False: 0]
  ------------------
12233|      0|			goto yy115;
12234|      0|		} else {
12235|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12235:8): [True: 0, False: 0]
  ------------------
12236|      0|			if (yych <= 'D') goto yy658;
  ------------------
  |  Branch (12236:8): [True: 0, False: 0]
  ------------------
12237|      0|			goto yy670;
12238|      0|		}
12239|      1|	} else {
12240|      1|		if (yych <= 'd') {
  ------------------
  |  Branch (12240:7): [True: 0, False: 1]
  ------------------
12241|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12241:8): [True: 0, False: 0]
  ------------------
12242|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12242:8): [True: 0, False: 0]
  ------------------
12243|      0|			goto yy658;
12244|      1|		} else {
12245|      1|			if (yych <= 'e') goto yy670;
  ------------------
  |  Branch (12245:8): [True: 1, False: 0]
  ------------------
12246|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12246:8): [True: 0, False: 0]
  ------------------
12247|      0|			goto yy20;
12248|      0|		}
12249|      1|	}
12250|      9|yy488:
12251|      9|	YYDEBUG(488, *YYCURSOR);
12252|      9|	yyaccept = 2;
12253|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
12254|      9|	if (yych <= 'S') {
  ------------------
  |  Branch (12254:6): [True: 6, False: 3]
  ------------------
12255|      6|		if (yych <= '-') {
  ------------------
  |  Branch (12255:7): [True: 5, False: 1]
  ------------------
12256|      5|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12256:8): [True: 0, False: 5]
  ------------------
12257|      5|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12257:8): [True: 5, False: 0]
  ------------------
12258|      0|			goto yy297;
12259|      5|		} else {
12260|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12260:8): [True: 0, False: 1]
  ------------------
12261|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12261:8): [True: 0, False: 1]
  ------------------
12262|      1|			goto yy658;
12263|      1|		}
12264|      6|	} else {
12265|      3|		if (yych <= '_') {
  ------------------
  |  Branch (12265:7): [True: 1, False: 2]
  ------------------
12266|      1|			if (yych <= 'T') goto yy669;
  ------------------
  |  Branch (12266:8): [True: 0, False: 1]
  ------------------
12267|      1|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12267:8): [True: 1, False: 0]
  ------------------
12268|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12268:8): [True: 0, False: 0]
  ------------------
12269|      0|			goto yy297;
12270|      2|		} else {
12271|      2|			if (yych <= 's') {
  ------------------
  |  Branch (12271:8): [True: 0, False: 2]
  ------------------
12272|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12272:9): [True: 0, False: 0]
  ------------------
12273|      0|				goto yy663;
12274|      2|			} else {
12275|      2|				if (yych <= 't') goto yy671;
  ------------------
  |  Branch (12275:9): [True: 1, False: 1]
  ------------------
12276|      1|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12276:9): [True: 0, False: 1]
  ------------------
12277|      1|				goto yy20;
12278|      1|			}
12279|      2|		}
12280|      3|	}
12281|      9|yy489:
12282|      9|	YYDEBUG(489, *YYCURSOR);
12283|      9|	yyaccept = 2;
12284|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
12285|      9|	if (yych <= 'D') {
  ------------------
  |  Branch (12285:6): [True: 1, False: 8]
  ------------------
12286|      1|		if (yych <= '-') {
  ------------------
  |  Branch (12286:7): [True: 0, False: 1]
  ------------------
12287|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12287:8): [True: 0, False: 0]
  ------------------
12288|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12288:8): [True: 0, False: 0]
  ------------------
12289|      0|			goto yy297;
12290|      1|		} else {
12291|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12291:8): [True: 0, False: 1]
  ------------------
12292|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12292:8): [True: 0, False: 1]
  ------------------
12293|      1|			goto yy658;
12294|      1|		}
12295|      8|	} else {
12296|      8|		if (yych <= '_') {
  ------------------
  |  Branch (12296:7): [True: 0, False: 8]
  ------------------
12297|      0|			if (yych <= 'E') goto yy670;
  ------------------
  |  Branch (12297:8): [True: 0, False: 0]
  ------------------
12298|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12298:8): [True: 0, False: 0]
  ------------------
12299|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12299:8): [True: 0, False: 0]
  ------------------
12300|      0|			goto yy297;
12301|      8|		} else {
12302|      8|			if (yych <= 'd') {
  ------------------
  |  Branch (12302:8): [True: 0, False: 8]
  ------------------
12303|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12303:9): [True: 0, False: 0]
  ------------------
12304|      0|				goto yy663;
12305|      8|			} else {
12306|      8|				if (yych <= 'e') goto yy672;
  ------------------
  |  Branch (12306:9): [True: 8, False: 0]
  ------------------
12307|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12307:9): [True: 0, False: 0]
  ------------------
12308|      0|				goto yy20;
12309|      0|			}
12310|      8|		}
12311|      8|	}
12312|      1|yy490:
12313|      1|	YYDEBUG(490, *YYCURSOR);
12314|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
12315|      1|	if (yych <= 'U') {
  ------------------
  |  Branch (12315:6): [True: 0, False: 1]
  ------------------
12316|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12316:7): [True: 0, False: 0]
  ------------------
12317|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12317:8): [True: 0, False: 0]
  ------------------
12318|      0|			goto yy115;
12319|      0|		} else {
12320|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12320:8): [True: 0, False: 0]
  ------------------
12321|      0|			if (yych <= 'T') goto yy658;
  ------------------
  |  Branch (12321:8): [True: 0, False: 0]
  ------------------
12322|      0|			goto yy673;
12323|      0|		}
12324|      1|	} else {
12325|      1|		if (yych <= 't') {
  ------------------
  |  Branch (12325:7): [True: 1, False: 0]
  ------------------
12326|      1|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12326:8): [True: 0, False: 1]
  ------------------
12327|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12327:8): [True: 1, False: 0]
  ------------------
12328|      0|			goto yy658;
12329|      1|		} else {
12330|      0|			if (yych <= 'u') goto yy673;
  ------------------
  |  Branch (12330:8): [True: 0, False: 0]
  ------------------
12331|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12331:8): [True: 0, False: 0]
  ------------------
12332|      0|			goto yy20;
12333|      0|		}
12334|      1|	}
12335|      3|yy491:
12336|      3|	YYDEBUG(491, *YYCURSOR);
12337|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
12338|      3|	if (yych <= 'H') {
  ------------------
  |  Branch (12338:6): [True: 1, False: 2]
  ------------------
12339|      1|		if (yych <= ')') {
  ------------------
  |  Branch (12339:7): [True: 1, False: 0]
  ------------------
12340|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12340:8): [True: 1, False: 0]
  ------------------
12341|      0|			goto yy115;
12342|      1|		} else {
12343|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12343:8): [True: 0, False: 0]
  ------------------
12344|      0|			if (yych <= 'G') goto yy658;
  ------------------
  |  Branch (12344:8): [True: 0, False: 0]
  ------------------
12345|      0|			goto yy674;
12346|      0|		}
12347|      2|	} else {
12348|      2|		if (yych <= 'g') {
  ------------------
  |  Branch (12348:7): [True: 0, False: 2]
  ------------------
12349|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12349:8): [True: 0, False: 0]
  ------------------
12350|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12350:8): [True: 0, False: 0]
  ------------------
12351|      0|			goto yy658;
12352|      2|		} else {
12353|      2|			if (yych <= 'h') goto yy674;
  ------------------
  |  Branch (12353:8): [True: 0, False: 2]
  ------------------
12354|      2|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12354:8): [True: 2, False: 0]
  ------------------
12355|      0|			goto yy20;
12356|      2|		}
12357|      2|	}
12358|      1|yy492:
12359|      1|	YYDEBUG(492, *YYCURSOR);
12360|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
12361|      1|	if (yych <= 'T') {
  ------------------
  |  Branch (12361:6): [True: 0, False: 1]
  ------------------
12362|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12362:7): [True: 0, False: 0]
  ------------------
12363|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12363:8): [True: 0, False: 0]
  ------------------
12364|      0|			goto yy115;
12365|      0|		} else {
12366|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12366:8): [True: 0, False: 0]
  ------------------
12367|      0|			if (yych <= 'S') goto yy658;
  ------------------
  |  Branch (12367:8): [True: 0, False: 0]
  ------------------
12368|      0|			goto yy675;
12369|      0|		}
12370|      1|	} else {
12371|      1|		if (yych <= 's') {
  ------------------
  |  Branch (12371:7): [True: 0, False: 1]
  ------------------
12372|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12372:8): [True: 0, False: 0]
  ------------------
12373|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12373:8): [True: 0, False: 0]
  ------------------
12374|      0|			goto yy658;
12375|      1|		} else {
12376|      1|			if (yych <= 't') goto yy675;
  ------------------
  |  Branch (12376:8): [True: 1, False: 0]
  ------------------
12377|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12377:8): [True: 0, False: 0]
  ------------------
12378|      0|			goto yy20;
12379|      0|		}
12380|      1|	}
12381|      0|yy493:
12382|      0|	YYDEBUG(493, *YYCURSOR);
12383|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12384|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (12384:6): [True: 0, False: 0]
  ------------------
12385|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12385:7): [True: 0, False: 0]
  ------------------
12386|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12386:8): [True: 0, False: 0]
  ------------------
12387|      0|			goto yy115;
12388|      0|		} else {
12389|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12389:8): [True: 0, False: 0]
  ------------------
12390|      0|			if (yych <= 'S') goto yy658;
  ------------------
  |  Branch (12390:8): [True: 0, False: 0]
  ------------------
12391|      0|			goto yy676;
12392|      0|		}
12393|      0|	} else {
12394|      0|		if (yych <= 's') {
  ------------------
  |  Branch (12394:7): [True: 0, False: 0]
  ------------------
12395|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12395:8): [True: 0, False: 0]
  ------------------
12396|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12396:8): [True: 0, False: 0]
  ------------------
12397|      0|			goto yy658;
12398|      0|		} else {
12399|      0|			if (yych <= 't') goto yy676;
  ------------------
  |  Branch (12399:8): [True: 0, False: 0]
  ------------------
12400|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12400:8): [True: 0, False: 0]
  ------------------
12401|      0|			goto yy20;
12402|      0|		}
12403|      0|	}
12404|      8|yy494:
12405|      8|	YYDEBUG(494, *YYCURSOR);
12406|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
12407|      8|	if (yych <= 'A') {
  ------------------
  |  Branch (12407:6): [True: 0, False: 8]
  ------------------
12408|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (12408:7): [True: 0, False: 0]
  ------------------
12409|      0|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12409:7): [True: 0, False: 0]
  ------------------
12410|      0|		goto yy677;
12411|      8|	} else {
12412|      8|		if (yych <= '`') {
  ------------------
  |  Branch (12412:7): [True: 0, False: 8]
  ------------------
12413|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12413:8): [True: 0, False: 0]
  ------------------
12414|      0|			goto yy20;
12415|      8|		} else {
12416|      8|			if (yych <= 'a') goto yy677;
  ------------------
  |  Branch (12416:8): [True: 8, False: 0]
  ------------------
12417|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12417:8): [True: 0, False: 0]
  ------------------
12418|      0|			goto yy20;
12419|      0|		}
12420|      8|	}
12421|      0|yy495:
12422|      0|	YYDEBUG(495, *YYCURSOR);
12423|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12424|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (12424:6): [True: 0, False: 0]
  ------------------
12425|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12425:7): [True: 0, False: 0]
  ------------------
12426|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12426:8): [True: 0, False: 0]
  ------------------
12427|      0|			goto yy115;
12428|      0|		} else {
12429|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12429:8): [True: 0, False: 0]
  ------------------
12430|      0|			if (yych <= 'S') goto yy658;
  ------------------
  |  Branch (12430:8): [True: 0, False: 0]
  ------------------
12431|      0|			goto yy678;
12432|      0|		}
12433|      0|	} else {
12434|      0|		if (yych <= 's') {
  ------------------
  |  Branch (12434:7): [True: 0, False: 0]
  ------------------
12435|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12435:8): [True: 0, False: 0]
  ------------------
12436|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12436:8): [True: 0, False: 0]
  ------------------
12437|      0|			goto yy658;
12438|      0|		} else {
12439|      0|			if (yych <= 't') goto yy678;
  ------------------
  |  Branch (12439:8): [True: 0, False: 0]
  ------------------
12440|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12440:8): [True: 0, False: 0]
  ------------------
12441|      0|			goto yy20;
12442|      0|		}
12443|      0|	}
12444|      1|yy496:
12445|      1|	YYDEBUG(496, *YYCURSOR);
12446|      1|	yyaccept = 2;
12447|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
12448|      1|	if (yych <= 'T') {
  ------------------
  |  Branch (12448:6): [True: 0, False: 1]
  ------------------
12449|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12449:7): [True: 0, False: 0]
  ------------------
12450|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12450:8): [True: 0, False: 0]
  ------------------
12451|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12451:8): [True: 0, False: 0]
  ------------------
12452|      0|			goto yy297;
12453|      0|		} else {
12454|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12454:8): [True: 0, False: 0]
  ------------------
12455|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12455:8): [True: 0, False: 0]
  ------------------
12456|      0|			goto yy658;
12457|      0|		}
12458|      1|	} else {
12459|      1|		if (yych <= '_') {
  ------------------
  |  Branch (12459:7): [True: 0, False: 1]
  ------------------
12460|      0|			if (yych <= 'U') goto yy673;
  ------------------
  |  Branch (12460:8): [True: 0, False: 0]
  ------------------
12461|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12461:8): [True: 0, False: 0]
  ------------------
12462|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12462:8): [True: 0, False: 0]
  ------------------
12463|      0|			goto yy297;
12464|      1|		} else {
12465|      1|			if (yych <= 't') {
  ------------------
  |  Branch (12465:8): [True: 0, False: 1]
  ------------------
12466|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12466:9): [True: 0, False: 0]
  ------------------
12467|      0|				goto yy663;
12468|      1|			} else {
12469|      1|				if (yych <= 'u') goto yy679;
  ------------------
  |  Branch (12469:9): [True: 1, False: 0]
  ------------------
12470|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12470:9): [True: 0, False: 0]
  ------------------
12471|      0|				goto yy20;
12472|      0|			}
12473|      1|		}
12474|      1|	}
12475|      2|yy497:
12476|      2|	YYDEBUG(497, *YYCURSOR);
12477|      2|	yyaccept = 2;
12478|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
12479|      2|	if (yych <= 'G') {
  ------------------
  |  Branch (12479:6): [True: 0, False: 2]
  ------------------
12480|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12480:7): [True: 0, False: 0]
  ------------------
12481|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12481:8): [True: 0, False: 0]
  ------------------
12482|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12482:8): [True: 0, False: 0]
  ------------------
12483|      0|			goto yy297;
12484|      0|		} else {
12485|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12485:8): [True: 0, False: 0]
  ------------------
12486|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12486:8): [True: 0, False: 0]
  ------------------
12487|      0|			goto yy658;
12488|      0|		}
12489|      2|	} else {
12490|      2|		if (yych <= '_') {
  ------------------
  |  Branch (12490:7): [True: 0, False: 2]
  ------------------
12491|      0|			if (yych <= 'H') goto yy674;
  ------------------
  |  Branch (12491:8): [True: 0, False: 0]
  ------------------
12492|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12492:8): [True: 0, False: 0]
  ------------------
12493|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12493:8): [True: 0, False: 0]
  ------------------
12494|      0|			goto yy297;
12495|      2|		} else {
12496|      2|			if (yych <= 'g') {
  ------------------
  |  Branch (12496:8): [True: 0, False: 2]
  ------------------
12497|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12497:9): [True: 0, False: 0]
  ------------------
12498|      0|				goto yy663;
12499|      2|			} else {
12500|      2|				if (yych <= 'h') goto yy680;
  ------------------
  |  Branch (12500:9): [True: 2, False: 0]
  ------------------
12501|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12501:9): [True: 0, False: 0]
  ------------------
12502|      0|				goto yy20;
12503|      0|			}
12504|      2|		}
12505|      2|	}
12506|      1|yy498:
12507|      1|	YYDEBUG(498, *YYCURSOR);
12508|      1|	yyaccept = 2;
12509|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
12510|      1|	if (yych <= 'S') {
  ------------------
  |  Branch (12510:6): [True: 0, False: 1]
  ------------------
12511|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12511:7): [True: 0, False: 0]
  ------------------
12512|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12512:8): [True: 0, False: 0]
  ------------------
12513|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12513:8): [True: 0, False: 0]
  ------------------
12514|      0|			goto yy297;
12515|      0|		} else {
12516|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12516:8): [True: 0, False: 0]
  ------------------
12517|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12517:8): [True: 0, False: 0]
  ------------------
12518|      0|			goto yy658;
12519|      0|		}
12520|      1|	} else {
12521|      1|		if (yych <= '_') {
  ------------------
  |  Branch (12521:7): [True: 0, False: 1]
  ------------------
12522|      0|			if (yych <= 'T') goto yy675;
  ------------------
  |  Branch (12522:8): [True: 0, False: 0]
  ------------------
12523|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12523:8): [True: 0, False: 0]
  ------------------
12524|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12524:8): [True: 0, False: 0]
  ------------------
12525|      0|			goto yy297;
12526|      1|		} else {
12527|      1|			if (yych <= 's') {
  ------------------
  |  Branch (12527:8): [True: 0, False: 1]
  ------------------
12528|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12528:9): [True: 0, False: 0]
  ------------------
12529|      0|				goto yy663;
12530|      1|			} else {
12531|      1|				if (yych <= 't') goto yy681;
  ------------------
  |  Branch (12531:9): [True: 0, False: 1]
  ------------------
12532|      1|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12532:9): [True: 0, False: 1]
  ------------------
12533|      1|				goto yy20;
12534|      1|			}
12535|      1|		}
12536|      1|	}
12537|      7|yy499:
12538|      7|	YYDEBUG(499, *YYCURSOR);
12539|      7|	yyaccept = 2;
12540|      7|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      7|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
12541|      7|	if (yych <= 'S') {
  ------------------
  |  Branch (12541:6): [True: 4, False: 3]
  ------------------
12542|      4|		if (yych <= '-') {
  ------------------
  |  Branch (12542:7): [True: 3, False: 1]
  ------------------
12543|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12543:8): [True: 0, False: 3]
  ------------------
12544|      3|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12544:8): [True: 0, False: 3]
  ------------------
12545|      3|			goto yy297;
12546|      3|		} else {
12547|      1|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12547:8): [True: 0, False: 1]
  ------------------
12548|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12548:8): [True: 1, False: 0]
  ------------------
12549|      0|			goto yy658;
12550|      1|		}
12551|      4|	} else {
12552|      3|		if (yych <= '_') {
  ------------------
  |  Branch (12552:7): [True: 0, False: 3]
  ------------------
12553|      0|			if (yych <= 'T') goto yy676;
  ------------------
  |  Branch (12553:8): [True: 0, False: 0]
  ------------------
12554|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12554:8): [True: 0, False: 0]
  ------------------
12555|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12555:8): [True: 0, False: 0]
  ------------------
12556|      0|			goto yy297;
12557|      3|		} else {
12558|      3|			if (yych <= 's') {
  ------------------
  |  Branch (12558:8): [True: 0, False: 3]
  ------------------
12559|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12559:9): [True: 0, False: 0]
  ------------------
12560|      0|				goto yy663;
12561|      3|			} else {
12562|      3|				if (yych <= 't') goto yy682;
  ------------------
  |  Branch (12562:9): [True: 1, False: 2]
  ------------------
12563|      2|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12563:9): [True: 1, False: 1]
  ------------------
12564|      1|				goto yy20;
12565|      2|			}
12566|      3|		}
12567|      3|	}
12568|      5|yy500:
12569|      5|	YYDEBUG(500, *YYCURSOR);
12570|      5|	yyaccept = 2;
12571|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
12572|      5|	if (yych <= '@') {
  ------------------
  |  Branch (12572:6): [True: 0, False: 5]
  ------------------
12573|      0|		if (yych <= ',') {
  ------------------
  |  Branch (12573:7): [True: 0, False: 0]
  ------------------
12574|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12574:8): [True: 0, False: 0]
  ------------------
12575|      0|			goto yy20;
12576|      0|		} else {
12577|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (12577:8): [True: 0, False: 0]
  ------------------
12578|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (12578:8): [True: 0, False: 0]
  ------------------
12579|      0|			goto yy20;
12580|      0|		}
12581|      5|	} else {
12582|      5|		if (yych <= '_') {
  ------------------
  |  Branch (12582:7): [True: 2, False: 3]
  ------------------
12583|      2|			if (yych <= 'A') goto yy677;
  ------------------
  |  Branch (12583:8): [True: 0, False: 2]
  ------------------
12584|      2|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12584:8): [True: 0, False: 2]
  ------------------
12585|      2|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12585:8): [True: 2, False: 0]
  ------------------
12586|      0|			goto yy297;
12587|      3|		} else {
12588|      3|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12588:8): [True: 0, False: 3]
  ------------------
12589|      3|			if (yych <= 'a') goto yy683;
  ------------------
  |  Branch (12589:8): [True: 3, False: 0]
  ------------------
12590|      0|			if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12590:8): [True: 0, False: 0]
  ------------------
12591|      0|			goto yy20;
12592|      0|		}
12593|      5|	}
12594|      0|yy501:
12595|      0|	YYDEBUG(501, *YYCURSOR);
12596|      0|	yyaccept = 2;
12597|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12598|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (12598:6): [True: 0, False: 0]
  ------------------
12599|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12599:7): [True: 0, False: 0]
  ------------------
12600|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12600:8): [True: 0, False: 0]
  ------------------
12601|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12601:8): [True: 0, False: 0]
  ------------------
12602|      0|			goto yy297;
12603|      0|		} else {
12604|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12604:8): [True: 0, False: 0]
  ------------------
12605|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12605:8): [True: 0, False: 0]
  ------------------
12606|      0|			goto yy658;
12607|      0|		}
12608|      0|	} else {
12609|      0|		if (yych <= '_') {
  ------------------
  |  Branch (12609:7): [True: 0, False: 0]
  ------------------
12610|      0|			if (yych <= 'T') goto yy678;
  ------------------
  |  Branch (12610:8): [True: 0, False: 0]
  ------------------
12611|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12611:8): [True: 0, False: 0]
  ------------------
12612|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12612:8): [True: 0, False: 0]
  ------------------
12613|      0|			goto yy297;
12614|      0|		} else {
12615|      0|			if (yych <= 's') {
  ------------------
  |  Branch (12615:8): [True: 0, False: 0]
  ------------------
12616|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12616:9): [True: 0, False: 0]
  ------------------
12617|      0|				goto yy663;
12618|      0|			} else {
12619|      0|				if (yych <= 't') goto yy684;
  ------------------
  |  Branch (12619:9): [True: 0, False: 0]
  ------------------
12620|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12620:9): [True: 0, False: 0]
  ------------------
12621|      0|				goto yy20;
12622|      0|			}
12623|      0|		}
12624|      0|	}
12625|      1|yy502:
12626|      1|	YYDEBUG(502, *YYCURSOR);
12627|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
12628|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (12628:6): [True: 0, False: 1]
  ------------------
12629|      1|	if (yych <= '1') goto yy685;
  ------------------
  |  Branch (12629:6): [True: 1, False: 0]
  ------------------
12630|      0|	if (yych <= '2') goto yy686;
  ------------------
  |  Branch (12630:6): [True: 0, False: 0]
  ------------------
12631|      0|	if (yych <= '9') goto yy687;
  ------------------
  |  Branch (12631:6): [True: 0, False: 0]
  ------------------
12632|      0|	goto yy59;
12633|      0|yy503:
12634|      0|	YYDEBUG(503, *YYCURSOR);
12635|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12636|      0|	if (yych <= '/') {
  ------------------
  |  Branch (12636:6): [True: 0, False: 0]
  ------------------
12637|      0|		if (yych == '.') goto yy688;
  ------------------
  |  Branch (12637:7): [True: 0, False: 0]
  ------------------
12638|      0|		goto yy59;
12639|      0|	} else {
12640|      0|		if (yych <= '0') goto yy689;
  ------------------
  |  Branch (12640:7): [True: 0, False: 0]
  ------------------
12641|      0|		if (yych <= '9') goto yy506;
  ------------------
  |  Branch (12641:7): [True: 0, False: 0]
  ------------------
12642|      0|		if (yych <= ':') goto yy688;
  ------------------
  |  Branch (12642:7): [True: 0, False: 0]
  ------------------
12643|      0|		goto yy59;
12644|      0|	}
12645|      0|yy504:
12646|      0|	YYDEBUG(504, *YYCURSOR);
12647|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12648|      0|	if (yych <= '/') {
  ------------------
  |  Branch (12648:6): [True: 0, False: 0]
  ------------------
12649|      0|		if (yych == '.') goto yy690;
  ------------------
  |  Branch (12649:7): [True: 0, False: 0]
  ------------------
12650|      0|		goto yy59;
12651|      0|	} else {
12652|      0|		if (yych <= '2') goto yy506;
  ------------------
  |  Branch (12652:7): [True: 0, False: 0]
  ------------------
12653|      0|		if (yych <= '9') goto yy689;
  ------------------
  |  Branch (12653:7): [True: 0, False: 0]
  ------------------
12654|      0|		if (yych <= ':') goto yy690;
  ------------------
  |  Branch (12654:7): [True: 0, False: 0]
  ------------------
12655|      0|		goto yy59;
12656|      0|	}
12657|      0|yy505:
12658|      0|	YYDEBUG(505, *YYCURSOR);
12659|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12660|      0|	if (yych <= '/') {
  ------------------
  |  Branch (12660:6): [True: 0, False: 0]
  ------------------
12661|      0|		if (yych == '.') goto yy690;
  ------------------
  |  Branch (12661:7): [True: 0, False: 0]
  ------------------
12662|      0|		goto yy59;
12663|      0|	} else {
12664|      0|		if (yych <= '4') goto yy689;
  ------------------
  |  Branch (12664:7): [True: 0, False: 0]
  ------------------
12665|      0|		if (yych == ':') goto yy690;
  ------------------
  |  Branch (12665:7): [True: 0, False: 0]
  ------------------
12666|      0|		goto yy59;
12667|      0|	}
12668|      0|yy506:
12669|      0|	YYDEBUG(506, *YYCURSOR);
12670|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12671|      0|	if (yych == '.') goto yy690;
  ------------------
  |  Branch (12671:6): [True: 0, False: 0]
  ------------------
12672|      0|	if (yych == ':') goto yy690;
  ------------------
  |  Branch (12672:6): [True: 0, False: 0]
  ------------------
12673|      0|	goto yy59;
12674|      0|yy507:
12675|      0|	YYDEBUG(507, *YYCURSOR);
12676|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12677|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (12677:6): [True: 0, False: 0]
  ------------------
12678|      0|	if (yych <= '1') goto yy691;
  ------------------
  |  Branch (12678:6): [True: 0, False: 0]
  ------------------
12679|      0|	if (yych <= '2') goto yy692;
  ------------------
  |  Branch (12679:6): [True: 0, False: 0]
  ------------------
12680|      0|	if (yych <= '9') goto yy689;
  ------------------
  |  Branch (12680:6): [True: 0, False: 0]
  ------------------
12681|      0|	goto yy59;
12682|     17|yy508:
12683|     17|	YYDEBUG(508, *YYCURSOR);
12684|     17|	yyaccept = 10;
12685|     17|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     17|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
12686|     17|	if (yych <= '/') {
  ------------------
  |  Branch (12686:6): [True: 5, False: 12]
  ------------------
12687|      5|		if (yych == '.') goto yy688;
  ------------------
  |  Branch (12687:7): [True: 3, False: 2]
  ------------------
12688|      2|		goto yy325;
12689|     12|	} else {
12690|     12|		if (yych <= '0') goto yy693;
  ------------------
  |  Branch (12690:7): [True: 2, False: 10]
  ------------------
12691|     10|		if (yych <= '9') goto yy694;
  ------------------
  |  Branch (12691:7): [True: 5, False: 5]
  ------------------
12692|      5|		if (yych <= ':') goto yy688;
  ------------------
  |  Branch (12692:7): [True: 4, False: 1]
  ------------------
12693|      1|		goto yy325;
12694|      5|	}
12695|      4|yy509:
12696|      4|	YYDEBUG(509, *YYCURSOR);
12697|      4|	yyaccept = 10;
12698|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
12699|      4|	if (yych <= '/') {
  ------------------
  |  Branch (12699:6): [True: 0, False: 4]
  ------------------
12700|      0|		if (yych == '.') goto yy690;
  ------------------
  |  Branch (12700:7): [True: 0, False: 0]
  ------------------
12701|      0|		goto yy325;
12702|      4|	} else {
12703|      4|		if (yych <= '2') goto yy694;
  ------------------
  |  Branch (12703:7): [True: 0, False: 4]
  ------------------
12704|      4|		if (yych <= '9') goto yy693;
  ------------------
  |  Branch (12704:7): [True: 0, False: 4]
  ------------------
12705|      4|		if (yych <= ':') goto yy690;
  ------------------
  |  Branch (12705:7): [True: 4, False: 0]
  ------------------
12706|      0|		goto yy325;
12707|      4|	}
12708|      2|yy510:
12709|      2|	YYDEBUG(510, *YYCURSOR);
12710|      2|	yyaccept = 10;
12711|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
12712|      2|	if (yych <= '/') {
  ------------------
  |  Branch (12712:6): [True: 2, False: 0]
  ------------------
12713|      2|		if (yych == '.') goto yy690;
  ------------------
  |  Branch (12713:7): [True: 2, False: 0]
  ------------------
12714|      0|		goto yy325;
12715|      2|	} else {
12716|      0|		if (yych <= '4') goto yy693;
  ------------------
  |  Branch (12716:7): [True: 0, False: 0]
  ------------------
12717|      0|		if (yych <= '9') goto yy695;
  ------------------
  |  Branch (12717:7): [True: 0, False: 0]
  ------------------
12718|      0|		if (yych <= ':') goto yy690;
  ------------------
  |  Branch (12718:7): [True: 0, False: 0]
  ------------------
12719|      0|		goto yy325;
12720|      0|	}
12721|      3|yy511:
12722|      3|	YYDEBUG(511, *YYCURSOR);
12723|      3|	yyaccept = 10;
12724|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
12725|      3|	if (yych <= '/') {
  ------------------
  |  Branch (12725:6): [True: 1, False: 2]
  ------------------
12726|      1|		if (yych == '.') goto yy690;
  ------------------
  |  Branch (12726:7): [True: 0, False: 1]
  ------------------
12727|      1|		goto yy325;
12728|      2|	} else {
12729|      2|		if (yych <= '9') goto yy695;
  ------------------
  |  Branch (12729:7): [True: 2, False: 0]
  ------------------
12730|      0|		if (yych <= ':') goto yy690;
  ------------------
  |  Branch (12730:7): [True: 0, False: 0]
  ------------------
12731|      0|		goto yy325;
12732|      0|	}
12733|     14|yy512:
12734|     14|	YYDEBUG(512, *YYCURSOR);
12735|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
12736|     14|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (12736:6): [True: 2, False: 12]
  ------------------
12737|     12|	if (yych <= '9') goto yy696;
  ------------------
  |  Branch (12737:6): [True: 5, False: 7]
  ------------------
12738|      7|	goto yy59;
12739|      7|yy513:
12740|      0|	YYDEBUG(513, *YYCURSOR);
12741|      0|	yyaccept = 10;
12742|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12743|      0|	if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (12743:6): [True: 0, False: 0]
  ------------------
12744|      0|	goto yy327;
12745|      0|yy514:
12746|      0|	YYDEBUG(514, *YYCURSOR);
12747|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12748|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (12748:6): [True: 0, False: 0]
  ------------------
12749|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (12749:7): [True: 0, False: 0]
  ------------------
12750|      0|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12750:7): [True: 0, False: 0]
  ------------------
12751|      0|		goto yy698;
12752|      0|	} else {
12753|      0|		if (yych <= '`') {
  ------------------
  |  Branch (12753:7): [True: 0, False: 0]
  ------------------
12754|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12754:8): [True: 0, False: 0]
  ------------------
12755|      0|			goto yy20;
12756|      0|		} else {
12757|      0|			if (yych <= 'a') goto yy698;
  ------------------
  |  Branch (12757:8): [True: 0, False: 0]
  ------------------
12758|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12758:8): [True: 0, False: 0]
  ------------------
12759|      0|			goto yy20;
12760|      0|		}
12761|      0|	}
12762|      0|yy515:
12763|      0|	YYDEBUG(515, *YYCURSOR);
12764|      0|	yyaccept = 7;
12765|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12766|      0|	if (yych <= ',') {
  ------------------
  |  Branch (12766:6): [True: 0, False: 0]
  ------------------
12767|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (12767:7): [True: 0, False: 0]
  ------------------
12768|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (12768:8): [True: 0, False: 0]
  ------------------
12769|      0|			goto yy295;
12770|      0|		} else {
12771|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (12771:8): [True: 0, False: 0]
  ------------------
12772|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12772:8): [True: 0, False: 0]
  ------------------
12773|      0|			goto yy295;
12774|      0|		}
12775|      0|	} else {
12776|      0|		if (yych <= '@') {
  ------------------
  |  Branch (12776:7): [True: 0, False: 0]
  ------------------
12777|      0|			if (yych == '/') goto yy295;
  ------------------
  |  Branch (12777:8): [True: 0, False: 0]
  ------------------
12778|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (12778:8): [True: 0, False: 0]
  ------------------
12779|      0|			goto yy295;
12780|      0|		} else {
12781|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12781:8): [True: 0, False: 0]
  ------------------
12782|      0|			if (yych <= '`') goto yy295;
  ------------------
  |  Branch (12782:8): [True: 0, False: 0]
  ------------------
12783|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12783:8): [True: 0, False: 0]
  ------------------
12784|      0|			goto yy295;
12785|      0|		}
12786|      0|	}
12787|      0|yy516:
12788|      0|	YYDEBUG(516, *YYCURSOR);
12789|      0|	yyaccept = 2;
12790|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12791|      0|	if (yych <= '@') {
  ------------------
  |  Branch (12791:6): [True: 0, False: 0]
  ------------------
12792|      0|		if (yych <= ',') {
  ------------------
  |  Branch (12792:7): [True: 0, False: 0]
  ------------------
12793|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12793:8): [True: 0, False: 0]
  ------------------
12794|      0|			goto yy20;
12795|      0|		} else {
12796|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (12796:8): [True: 0, False: 0]
  ------------------
12797|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (12797:8): [True: 0, False: 0]
  ------------------
12798|      0|			goto yy20;
12799|      0|		}
12800|      0|	} else {
12801|      0|		if (yych <= '_') {
  ------------------
  |  Branch (12801:7): [True: 0, False: 0]
  ------------------
12802|      0|			if (yych <= 'A') goto yy698;
  ------------------
  |  Branch (12802:8): [True: 0, False: 0]
  ------------------
12803|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12803:8): [True: 0, False: 0]
  ------------------
12804|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12804:8): [True: 0, False: 0]
  ------------------
12805|      0|			goto yy297;
12806|      0|		} else {
12807|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12807:8): [True: 0, False: 0]
  ------------------
12808|      0|			if (yych <= 'a') goto yy699;
  ------------------
  |  Branch (12808:8): [True: 0, False: 0]
  ------------------
12809|      0|			if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12809:8): [True: 0, False: 0]
  ------------------
12810|      0|			goto yy20;
12811|      0|		}
12812|      0|	}
12813|      0|yy517:
12814|      0|	YYDEBUG(517, *YYCURSOR);
12815|      0|	yyaccept = 7;
12816|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12817|      0|	if (yych <= '.') {
  ------------------
  |  Branch (12817:6): [True: 0, False: 0]
  ------------------
12818|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (12818:7): [True: 0, False: 0]
  ------------------
12819|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (12819:8): [True: 0, False: 0]
  ------------------
12820|      0|			if (yych <= 0x1F) goto yy295;
  ------------------
  |  Branch (12820:8): [True: 0, False: 0]
  ------------------
12821|      0|			goto yy142;
12822|      0|		} else {
12823|      0|			if (yych <= ')') {
  ------------------
  |  Branch (12823:8): [True: 0, False: 0]
  ------------------
12824|      0|				if (yych <= '(') goto yy295;
  ------------------
  |  Branch (12824:9): [True: 0, False: 0]
  ------------------
12825|      0|				goto yy115;
12826|      0|			} else {
12827|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (12827:9): [True: 0, False: 0]
  ------------------
12828|      0|				if (yych <= '-') goto yy700;
  ------------------
  |  Branch (12828:9): [True: 0, False: 0]
  ------------------
12829|      0|				goto yy142;
12830|      0|			}
12831|      0|		}
12832|      0|	} else {
12833|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (12833:7): [True: 0, False: 0]
  ------------------
12834|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (12834:8): [True: 0, False: 0]
  ------------------
12835|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (12835:8): [True: 0, False: 0]
  ------------------
12836|      0|			if (yych <= '@') goto yy295;
  ------------------
  |  Branch (12836:8): [True: 0, False: 0]
  ------------------
12837|      0|			goto yy658;
12838|      0|		} else {
12839|      0|			if (yych <= '_') {
  ------------------
  |  Branch (12839:8): [True: 0, False: 0]
  ------------------
12840|      0|				if (yych <= '^') goto yy295;
  ------------------
  |  Branch (12840:9): [True: 0, False: 0]
  ------------------
12841|      0|				goto yy297;
12842|      0|			} else {
12843|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (12843:9): [True: 0, False: 0]
  ------------------
12844|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12844:9): [True: 0, False: 0]
  ------------------
12845|      0|				goto yy295;
12846|      0|			}
12847|      0|		}
12848|      0|	}
12849|      0|yy518:
12850|      0|	YYDEBUG(518, *YYCURSOR);
12851|      0|	yyaccept = 2;
12852|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12853|      0|	if (yych <= '@') {
  ------------------
  |  Branch (12853:6): [True: 0, False: 0]
  ------------------
12854|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (12854:7): [True: 0, False: 0]
  ------------------
12855|      0|			if (yych == '\t') goto yy701;
  ------------------
  |  Branch (12855:8): [True: 0, False: 0]
  ------------------
12856|      0|			goto yy20;
12857|      0|		} else {
12858|      0|			if (yych <= ' ') goto yy703;
  ------------------
  |  Branch (12858:8): [True: 0, False: 0]
  ------------------
12859|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12859:8): [True: 0, False: 0]
  ------------------
12860|      0|			goto yy20;
12861|      0|		}
12862|      0|	} else {
12863|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (12863:7): [True: 0, False: 0]
  ------------------
12864|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12864:8): [True: 0, False: 0]
  ------------------
12865|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12865:8): [True: 0, False: 0]
  ------------------
12866|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12866:8): [True: 0, False: 0]
  ------------------
12867|      0|			goto yy20;
12868|      0|		} else {
12869|      0|			if (yych <= 0xC2) goto yy704;
  ------------------
  |  Branch (12869:8): [True: 0, False: 0]
  ------------------
12870|      0|			if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (12870:8): [True: 0, False: 0]
  ------------------
12871|      0|			goto yy20;
12872|      0|		}
12873|      0|	}
12874|      2|yy519:
12875|      2|	YYDEBUG(519, *YYCURSOR);
12876|      2|	yyaccept = 2;
12877|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
12878|      2|	if (yych <= '/') {
  ------------------
  |  Branch (12878:6): [True: 2, False: 0]
  ------------------
12879|      2|		if (yych <= '(') {
  ------------------
  |  Branch (12879:7): [True: 1, False: 1]
  ------------------
12880|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (12880:8): [True: 0, False: 1]
  ------------------
12881|      0|				if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (12881:9): [True: 0, False: 0]
  ------------------
12882|      0|				goto yy701;
12883|      1|			} else {
12884|      1|				if (yych == ' ') goto yy703;
  ------------------
  |  Branch (12884:9): [True: 0, False: 1]
  ------------------
12885|      1|				goto yy20;
12886|      1|			}
12887|      1|		} else {
12888|      1|			if (yych <= ',') {
  ------------------
  |  Branch (12888:8): [True: 1, False: 0]
  ------------------
12889|      1|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (12889:9): [True: 1, False: 0]
  ------------------
12890|      0|				goto yy20;
12891|      1|			} else {
12892|      0|				if (yych == '.') goto yy20;
  ------------------
  |  Branch (12892:9): [True: 0, False: 0]
  ------------------
12893|      0|				goto yy297;
12894|      0|			}
12895|      1|		}
12896|      2|	} else {
12897|      0|		if (yych <= '`') {
  ------------------
  |  Branch (12897:7): [True: 0, False: 0]
  ------------------
12898|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (12898:8): [True: 0, False: 0]
  ------------------
12899|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12899:9): [True: 0, False: 0]
  ------------------
12900|      0|				goto yy658;
12901|      0|			} else {
12902|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (12902:9): [True: 0, False: 0]
  ------------------
12903|      0|				goto yy20;
12904|      0|			}
12905|      0|		} else {
12906|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (12906:8): [True: 0, False: 0]
  ------------------
12907|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12907:9): [True: 0, False: 0]
  ------------------
12908|      0|				if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (12908:9): [True: 0, False: 0]
  ------------------
12909|      0|				goto yy704;
12910|      0|			} else {
12911|      0|				if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (12911:9): [True: 0, False: 0]
  ------------------
12912|      0|				goto yy20;
12913|      0|			}
12914|      0|		}
12915|      0|	}
12916|      0|yy520:
12917|      0|	YYDEBUG(520, *YYCURSOR);
12918|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12919|      0|	if (yych <= 'H') {
  ------------------
  |  Branch (12919:6): [True: 0, False: 0]
  ------------------
12920|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12920:7): [True: 0, False: 0]
  ------------------
12921|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12921:8): [True: 0, False: 0]
  ------------------
12922|      0|			goto yy115;
12923|      0|		} else {
12924|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12924:8): [True: 0, False: 0]
  ------------------
12925|      0|			if (yych <= 'G') goto yy658;
  ------------------
  |  Branch (12925:8): [True: 0, False: 0]
  ------------------
12926|      0|			goto yy661;
12927|      0|		}
12928|      0|	} else {
12929|      0|		if (yych <= 'g') {
  ------------------
  |  Branch (12929:7): [True: 0, False: 0]
  ------------------
12930|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12930:8): [True: 0, False: 0]
  ------------------
12931|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12931:8): [True: 0, False: 0]
  ------------------
12932|      0|			goto yy658;
12933|      0|		} else {
12934|      0|			if (yych <= 'h') goto yy661;
  ------------------
  |  Branch (12934:8): [True: 0, False: 0]
  ------------------
12935|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12935:8): [True: 0, False: 0]
  ------------------
12936|      0|			goto yy20;
12937|      0|		}
12938|      0|	}
12939|      0|yy521:
12940|      0|	YYDEBUG(521, *YYCURSOR);
12941|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12942|      0|	if (yych <= 'I') {
  ------------------
  |  Branch (12942:6): [True: 0, False: 0]
  ------------------
12943|      0|		if (yych <= ')') {
  ------------------
  |  Branch (12943:7): [True: 0, False: 0]
  ------------------
12944|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (12944:8): [True: 0, False: 0]
  ------------------
12945|      0|			goto yy115;
12946|      0|		} else {
12947|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12947:8): [True: 0, False: 0]
  ------------------
12948|      0|			if (yych <= 'H') goto yy658;
  ------------------
  |  Branch (12948:8): [True: 0, False: 0]
  ------------------
12949|      0|			goto yy706;
12950|      0|		}
12951|      0|	} else {
12952|      0|		if (yych <= 'h') {
  ------------------
  |  Branch (12952:7): [True: 0, False: 0]
  ------------------
12953|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12953:8): [True: 0, False: 0]
  ------------------
12954|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12954:8): [True: 0, False: 0]
  ------------------
12955|      0|			goto yy658;
12956|      0|		} else {
12957|      0|			if (yych <= 'i') goto yy706;
  ------------------
  |  Branch (12957:8): [True: 0, False: 0]
  ------------------
12958|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (12958:8): [True: 0, False: 0]
  ------------------
12959|      0|			goto yy20;
12960|      0|		}
12961|      0|	}
12962|      0|yy522:
12963|      0|	YYDEBUG(522, *YYCURSOR);
12964|      0|	yyaccept = 2;
12965|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12966|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (12966:6): [True: 0, False: 0]
  ------------------
12967|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12967:7): [True: 0, False: 0]
  ------------------
12968|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12968:8): [True: 0, False: 0]
  ------------------
12969|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (12969:8): [True: 0, False: 0]
  ------------------
12970|      0|			goto yy297;
12971|      0|		} else {
12972|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (12972:8): [True: 0, False: 0]
  ------------------
12973|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (12973:8): [True: 0, False: 0]
  ------------------
12974|      0|			goto yy658;
12975|      0|		}
12976|      0|	} else {
12977|      0|		if (yych <= '_') {
  ------------------
  |  Branch (12977:7): [True: 0, False: 0]
  ------------------
12978|      0|			if (yych <= 'H') goto yy661;
  ------------------
  |  Branch (12978:8): [True: 0, False: 0]
  ------------------
12979|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (12979:8): [True: 0, False: 0]
  ------------------
12980|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (12980:8): [True: 0, False: 0]
  ------------------
12981|      0|			goto yy297;
12982|      0|		} else {
12983|      0|			if (yych <= 'g') {
  ------------------
  |  Branch (12983:8): [True: 0, False: 0]
  ------------------
12984|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (12984:9): [True: 0, False: 0]
  ------------------
12985|      0|				goto yy663;
12986|      0|			} else {
12987|      0|				if (yych <= 'h') goto yy664;
  ------------------
  |  Branch (12987:9): [True: 0, False: 0]
  ------------------
12988|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (12988:9): [True: 0, False: 0]
  ------------------
12989|      0|				goto yy20;
12990|      0|			}
12991|      0|		}
12992|      0|	}
12993|      0|yy523:
12994|      0|	YYDEBUG(523, *YYCURSOR);
12995|      0|	yyaccept = 2;
12996|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
12997|      0|	if (yych <= 'H') {
  ------------------
  |  Branch (12997:6): [True: 0, False: 0]
  ------------------
12998|      0|		if (yych <= '-') {
  ------------------
  |  Branch (12998:7): [True: 0, False: 0]
  ------------------
12999|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (12999:8): [True: 0, False: 0]
  ------------------
13000|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13000:8): [True: 0, False: 0]
  ------------------
13001|      0|			goto yy297;
13002|      0|		} else {
13003|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13003:8): [True: 0, False: 0]
  ------------------
13004|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13004:8): [True: 0, False: 0]
  ------------------
13005|      0|			goto yy658;
13006|      0|		}
13007|      0|	} else {
13008|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13008:7): [True: 0, False: 0]
  ------------------
13009|      0|			if (yych <= 'I') goto yy706;
  ------------------
  |  Branch (13009:8): [True: 0, False: 0]
  ------------------
13010|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13010:8): [True: 0, False: 0]
  ------------------
13011|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13011:8): [True: 0, False: 0]
  ------------------
13012|      0|			goto yy297;
13013|      0|		} else {
13014|      0|			if (yych <= 'h') {
  ------------------
  |  Branch (13014:8): [True: 0, False: 0]
  ------------------
13015|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13015:9): [True: 0, False: 0]
  ------------------
13016|      0|				goto yy663;
13017|      0|			} else {
13018|      0|				if (yych <= 'i') goto yy707;
  ------------------
  |  Branch (13018:9): [True: 0, False: 0]
  ------------------
13019|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13019:9): [True: 0, False: 0]
  ------------------
13020|      0|				goto yy20;
13021|      0|			}
13022|      0|		}
13023|      0|	}
13024|     17|yy524:
13025|     17|	YYDEBUG(524, *YYCURSOR);
13026|     17|	yyaccept = 2;
13027|     17|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     17|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
13028|     17|	if (yych <= '@') {
  ------------------
  |  Branch (13028:6): [True: 13, False: 4]
  ------------------
13029|     13|		if (yych <= 0x1F) {
  ------------------
  |  Branch (13029:7): [True: 1, False: 12]
  ------------------
13030|      1|			if (yych == '\t') goto yy701;
  ------------------
  |  Branch (13030:8): [True: 0, False: 1]
  ------------------
13031|      1|			goto yy20;
13032|     12|		} else {
13033|     12|			if (yych <= ' ') goto yy701;
  ------------------
  |  Branch (13033:8): [True: 9, False: 3]
  ------------------
13034|      3|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13034:8): [True: 1, False: 2]
  ------------------
13035|      2|			goto yy20;
13036|      3|		}
13037|     13|	} else {
13038|      4|		if (yych <= 0xC1) {
  ------------------
  |  Branch (13038:7): [True: 3, False: 1]
  ------------------
13039|      3|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13039:8): [True: 0, False: 3]
  ------------------
13040|      3|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13040:8): [True: 0, False: 3]
  ------------------
13041|      3|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13041:8): [True: 0, False: 3]
  ------------------
13042|      3|			goto yy20;
13043|      3|		} else {
13044|      1|			if (yych <= 0xC2) goto yy704;
  ------------------
  |  Branch (13044:8): [True: 0, False: 1]
  ------------------
13045|      1|			if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (13045:8): [True: 0, False: 1]
  ------------------
13046|      1|			goto yy20;
13047|      1|		}
13048|      4|	}
13049|      0|yy525:
13050|      0|	YYDEBUG(525, *YYCURSOR);
13051|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13052|      0|	if (yych <= '@') {
  ------------------
  |  Branch (13052:6): [True: 0, False: 0]
  ------------------
13053|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (13053:7): [True: 0, False: 0]
  ------------------
13054|      0|	} else {
13055|      0|		if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13055:7): [True: 0, False: 0]
  ------------------
13056|      0|		if (yych <= '`') goto yy526;
  ------------------
  |  Branch (13056:7): [True: 0, False: 0]
  ------------------
13057|      0|		if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13057:7): [True: 0, False: 0]
  ------------------
13058|      0|	}
13059|      0|yy526:
13060|      0|	YYDEBUG(526, *YYCURSOR);
13061|      0|#line 1187 "ext/date/lib/parse_date.re"
13062|      0|	{
13063|      0|		DEBUG_OUTPUT("noon");
13064|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
13065|      0|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
13066|      0|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      0|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13067|      0|		s->time->h = 12;
13068|       |
13069|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13070|      0|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      0|#define TIMELIB_RELATIVE       310
  ------------------
13071|      0|	}
13072|      0|#line 13073 "ext/date/lib/parse_date.c"
13073|      4|yy527:
13074|      4|	YYDEBUG(527, *YYCURSOR);
13075|      4|	yyaccept = 2;
13076|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
13077|      4|	if (yych <= '/') {
  ------------------
  |  Branch (13077:6): [True: 3, False: 1]
  ------------------
13078|      3|		if (yych <= '(') {
  ------------------
  |  Branch (13078:7): [True: 2, False: 1]
  ------------------
13079|      2|			if (yych <= '\t') {
  ------------------
  |  Branch (13079:8): [True: 0, False: 2]
  ------------------
13080|      0|				if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (13080:9): [True: 0, False: 0]
  ------------------
13081|      0|				goto yy701;
13082|      2|			} else {
13083|      2|				if (yych == ' ') goto yy701;
  ------------------
  |  Branch (13083:9): [True: 0, False: 2]
  ------------------
13084|      2|				goto yy20;
13085|      2|			}
13086|      2|		} else {
13087|      1|			if (yych <= ',') {
  ------------------
  |  Branch (13087:8): [True: 0, False: 1]
  ------------------
13088|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (13088:9): [True: 0, False: 0]
  ------------------
13089|      0|				goto yy20;
13090|      1|			} else {
13091|      1|				if (yych == '.') goto yy20;
  ------------------
  |  Branch (13091:9): [True: 0, False: 1]
  ------------------
13092|      1|				goto yy297;
13093|      1|			}
13094|      1|		}
13095|      3|	} else {
13096|      1|		if (yych <= '`') {
  ------------------
  |  Branch (13096:7): [True: 0, False: 1]
  ------------------
13097|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (13097:8): [True: 0, False: 0]
  ------------------
13098|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13098:9): [True: 0, False: 0]
  ------------------
13099|      0|				goto yy658;
13100|      0|			} else {
13101|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (13101:9): [True: 0, False: 0]
  ------------------
13102|      0|				goto yy20;
13103|      0|			}
13104|      1|		} else {
13105|      1|			if (yych <= 0xC2) {
  ------------------
  |  Branch (13105:8): [True: 1, False: 0]
  ------------------
13106|      1|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13106:9): [True: 1, False: 0]
  ------------------
13107|      0|				if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (13107:9): [True: 0, False: 0]
  ------------------
13108|      0|				goto yy704;
13109|      0|			} else {
13110|      0|				if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (13110:9): [True: 0, False: 0]
  ------------------
13111|      0|				goto yy20;
13112|      0|			}
13113|      1|		}
13114|      1|	}
13115|      0|yy528:
13116|      0|	YYDEBUG(528, *YYCURSOR);
13117|      0|	yyaccept = 14;
13118|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13119|      0|	if (yych <= '/') {
  ------------------
  |  Branch (13119:6): [True: 0, False: 0]
  ------------------
13120|      0|		if (yych <= ',') {
  ------------------
  |  Branch (13120:7): [True: 0, False: 0]
  ------------------
13121|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13121:8): [True: 0, False: 0]
  ------------------
13122|      0|			goto yy526;
13123|      0|		} else {
13124|      0|			if (yych == '.') goto yy526;
  ------------------
  |  Branch (13124:8): [True: 0, False: 0]
  ------------------
13125|      0|			goto yy297;
13126|      0|		}
13127|      0|	} else {
13128|      0|		if (yych <= '^') {
  ------------------
  |  Branch (13128:7): [True: 0, False: 0]
  ------------------
13129|      0|			if (yych <= '@') goto yy526;
  ------------------
  |  Branch (13129:8): [True: 0, False: 0]
  ------------------
13130|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13130:8): [True: 0, False: 0]
  ------------------
13131|      0|			goto yy526;
13132|      0|		} else {
13133|      0|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (13133:8): [True: 0, False: 0]
  ------------------
13134|      0|			if (yych <= '`') goto yy526;
  ------------------
  |  Branch (13134:8): [True: 0, False: 0]
  ------------------
13135|      0|			if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13135:8): [True: 0, False: 0]
  ------------------
13136|      0|			goto yy526;
13137|      0|		}
13138|      0|	}
13139|      2|yy529:
13140|      2|	YYDEBUG(529, *YYCURSOR);
13141|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
13142|      2|	if (yych <= 'B') {
  ------------------
  |  Branch (13142:6): [True: 2, False: 0]
  ------------------
13143|      2|		if (yych <= ')') {
  ------------------
  |  Branch (13143:7): [True: 1, False: 1]
  ------------------
13144|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13144:8): [True: 1, False: 0]
  ------------------
13145|      0|			goto yy115;
13146|      1|		} else {
13147|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13147:8): [True: 0, False: 1]
  ------------------
13148|      1|			if (yych <= 'A') goto yy658;
  ------------------
  |  Branch (13148:8): [True: 0, False: 1]
  ------------------
13149|      1|			goto yy708;
13150|      1|		}
13151|      2|	} else {
13152|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (13152:7): [True: 0, False: 0]
  ------------------
13153|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13153:8): [True: 0, False: 0]
  ------------------
13154|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13154:8): [True: 0, False: 0]
  ------------------
13155|      0|			goto yy658;
13156|      0|		} else {
13157|      0|			if (yych <= 'b') goto yy708;
  ------------------
  |  Branch (13157:8): [True: 0, False: 0]
  ------------------
13158|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13158:8): [True: 0, False: 0]
  ------------------
13159|      0|			goto yy20;
13160|      0|		}
13161|      0|	}
13162|      0|yy530:
13163|      0|	YYDEBUG(530, *YYCURSOR);
13164|      0|	yyaccept = 2;
13165|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13166|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (13166:6): [True: 0, False: 0]
  ------------------
13167|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13167:7): [True: 0, False: 0]
  ------------------
13168|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13168:8): [True: 0, False: 0]
  ------------------
13169|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13169:8): [True: 0, False: 0]
  ------------------
13170|      0|			goto yy297;
13171|      0|		} else {
13172|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13172:8): [True: 0, False: 0]
  ------------------
13173|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13173:8): [True: 0, False: 0]
  ------------------
13174|      0|			goto yy658;
13175|      0|		}
13176|      0|	} else {
13177|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13177:7): [True: 0, False: 0]
  ------------------
13178|      0|			if (yych <= 'B') goto yy708;
  ------------------
  |  Branch (13178:8): [True: 0, False: 0]
  ------------------
13179|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13179:8): [True: 0, False: 0]
  ------------------
13180|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13180:8): [True: 0, False: 0]
  ------------------
13181|      0|			goto yy297;
13182|      0|		} else {
13183|      0|			if (yych <= 'a') {
  ------------------
  |  Branch (13183:8): [True: 0, False: 0]
  ------------------
13184|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13184:9): [True: 0, False: 0]
  ------------------
13185|      0|				goto yy663;
13186|      0|			} else {
13187|      0|				if (yych <= 'b') goto yy709;
  ------------------
  |  Branch (13187:9): [True: 0, False: 0]
  ------------------
13188|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13188:9): [True: 0, False: 0]
  ------------------
13189|      0|				goto yy20;
13190|      0|			}
13191|      0|		}
13192|      0|	}
13193|      0|yy531:
13194|      0|	YYDEBUG(531, *YYCURSOR);
13195|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13196|      0|	if (yych <= 'I') {
  ------------------
  |  Branch (13196:6): [True: 0, False: 0]
  ------------------
13197|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13197:7): [True: 0, False: 0]
  ------------------
13198|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13198:8): [True: 0, False: 0]
  ------------------
13199|      0|			goto yy115;
13200|      0|		} else {
13201|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13201:8): [True: 0, False: 0]
  ------------------
13202|      0|			if (yych <= 'H') goto yy658;
  ------------------
  |  Branch (13202:8): [True: 0, False: 0]
  ------------------
13203|      0|			goto yy710;
13204|      0|		}
13205|      0|	} else {
13206|      0|		if (yych <= 'h') {
  ------------------
  |  Branch (13206:7): [True: 0, False: 0]
  ------------------
13207|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13207:8): [True: 0, False: 0]
  ------------------
13208|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13208:8): [True: 0, False: 0]
  ------------------
13209|      0|			goto yy658;
13210|      0|		} else {
13211|      0|			if (yych <= 'i') goto yy710;
  ------------------
  |  Branch (13211:8): [True: 0, False: 0]
  ------------------
13212|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13212:8): [True: 0, False: 0]
  ------------------
13213|      0|			goto yy20;
13214|      0|		}
13215|      0|	}
13216|      1|yy532:
13217|      1|	YYDEBUG(532, *YYCURSOR);
13218|      1|	yyaccept = 2;
13219|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
13220|      1|	if (yych <= 'H') {
  ------------------
  |  Branch (13220:6): [True: 0, False: 1]
  ------------------
13221|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13221:7): [True: 0, False: 0]
  ------------------
13222|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13222:8): [True: 0, False: 0]
  ------------------
13223|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13223:8): [True: 0, False: 0]
  ------------------
13224|      0|			goto yy297;
13225|      0|		} else {
13226|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13226:8): [True: 0, False: 0]
  ------------------
13227|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13227:8): [True: 0, False: 0]
  ------------------
13228|      0|			goto yy658;
13229|      0|		}
13230|      1|	} else {
13231|      1|		if (yych <= '_') {
  ------------------
  |  Branch (13231:7): [True: 0, False: 1]
  ------------------
13232|      0|			if (yych <= 'I') goto yy710;
  ------------------
  |  Branch (13232:8): [True: 0, False: 0]
  ------------------
13233|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13233:8): [True: 0, False: 0]
  ------------------
13234|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13234:8): [True: 0, False: 0]
  ------------------
13235|      0|			goto yy297;
13236|      1|		} else {
13237|      1|			if (yych <= 'h') {
  ------------------
  |  Branch (13237:8): [True: 0, False: 1]
  ------------------
13238|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13238:9): [True: 0, False: 0]
  ------------------
13239|      0|				goto yy663;
13240|      1|			} else {
13241|      1|				if (yych <= 'i') goto yy711;
  ------------------
  |  Branch (13241:9): [True: 1, False: 0]
  ------------------
13242|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13242:9): [True: 0, False: 0]
  ------------------
13243|      0|				goto yy20;
13244|      0|			}
13245|      1|		}
13246|      1|	}
13247|      4|yy533:
13248|      4|	YYDEBUG(533, *YYCURSOR);
13249|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
13250|      4|	if (yych <= 'R') {
  ------------------
  |  Branch (13250:6): [True: 4, False: 0]
  ------------------
13251|      4|		if (yych <= ')') {
  ------------------
  |  Branch (13251:7): [True: 3, False: 1]
  ------------------
13252|      3|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13252:8): [True: 3, False: 0]
  ------------------
13253|      0|			goto yy115;
13254|      3|		} else {
13255|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13255:8): [True: 0, False: 1]
  ------------------
13256|      1|			if (yych <= 'Q') goto yy658;
  ------------------
  |  Branch (13256:8): [True: 0, False: 1]
  ------------------
13257|      1|			goto yy712;
13258|      1|		}
13259|      4|	} else {
13260|      0|		if (yych <= 'q') {
  ------------------
  |  Branch (13260:7): [True: 0, False: 0]
  ------------------
13261|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13261:8): [True: 0, False: 0]
  ------------------
13262|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13262:8): [True: 0, False: 0]
  ------------------
13263|      0|			goto yy658;
13264|      0|		} else {
13265|      0|			if (yych <= 'r') goto yy712;
  ------------------
  |  Branch (13265:8): [True: 0, False: 0]
  ------------------
13266|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13266:8): [True: 0, False: 0]
  ------------------
13267|      0|			goto yy20;
13268|      0|		}
13269|      0|	}
13270|     17|yy534:
13271|     17|	YYDEBUG(534, *YYCURSOR);
13272|     17|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
13273|     17|	if (yych <= 'N') {
  ------------------
  |  Branch (13273:6): [True: 0, False: 17]
  ------------------
13274|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13274:7): [True: 0, False: 0]
  ------------------
13275|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13275:8): [True: 0, False: 0]
  ------------------
13276|      0|			goto yy115;
13277|      0|		} else {
13278|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13278:8): [True: 0, False: 0]
  ------------------
13279|      0|			if (yych <= 'M') goto yy658;
  ------------------
  |  Branch (13279:8): [True: 0, False: 0]
  ------------------
13280|      0|			goto yy713;
13281|      0|		}
13282|     17|	} else {
13283|     17|		if (yych <= 'm') {
  ------------------
  |  Branch (13283:7): [True: 0, False: 17]
  ------------------
13284|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13284:8): [True: 0, False: 0]
  ------------------
13285|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13285:8): [True: 0, False: 0]
  ------------------
13286|      0|			goto yy658;
13287|     17|		} else {
13288|     17|			if (yych <= 'n') goto yy713;
  ------------------
  |  Branch (13288:8): [True: 17, False: 0]
  ------------------
13289|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13289:8): [True: 0, False: 0]
  ------------------
13290|      0|			goto yy20;
13291|      0|		}
13292|     17|	}
13293|      5|yy535:
13294|      5|	YYDEBUG(535, *YYCURSOR);
13295|      5|	yyaccept = 7;
13296|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
13297|      5|	if (yych <= '/') {
  ------------------
  |  Branch (13297:6): [True: 1, False: 4]
  ------------------
13298|      1|		if (yych <= '(') {
  ------------------
  |  Branch (13298:7): [True: 1, False: 0]
  ------------------
13299|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (13299:8): [True: 0, False: 1]
  ------------------
13300|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (13300:9): [True: 0, False: 0]
  ------------------
13301|      0|				goto yy142;
13302|      1|			} else {
13303|      1|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (13303:9): [True: 0, False: 1]
  ------------------
13304|      1|				goto yy295;
13305|      1|			}
13306|      1|		} else {
13307|      0|			if (yych <= ',') {
  ------------------
  |  Branch (13307:8): [True: 0, False: 0]
  ------------------
13308|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (13308:9): [True: 0, False: 0]
  ------------------
13309|      0|				goto yy295;
13310|      0|			} else {
13311|      0|				if (yych <= '-') goto yy473;
  ------------------
  |  Branch (13311:9): [True: 0, False: 0]
  ------------------
13312|      0|				if (yych <= '.') goto yy142;
  ------------------
  |  Branch (13312:9): [True: 0, False: 0]
  ------------------
13313|      0|				goto yy295;
13314|      0|			}
13315|      0|		}
13316|      4|	} else {
13317|      4|		if (yych <= 'Z') {
  ------------------
  |  Branch (13317:7): [True: 2, False: 2]
  ------------------
13318|      2|			if (yych <= '@') {
  ------------------
  |  Branch (13318:8): [True: 0, False: 2]
  ------------------
13319|      0|				if (yych <= '9') goto yy142;
  ------------------
  |  Branch (13319:9): [True: 0, False: 0]
  ------------------
13320|      0|				goto yy295;
13321|      2|			} else {
13322|      2|				if (yych == 'E') goto yy714;
  ------------------
  |  Branch (13322:9): [True: 0, False: 2]
  ------------------
13323|      2|				goto yy658;
13324|      2|			}
13325|      2|		} else {
13326|      2|			if (yych <= 'd') {
  ------------------
  |  Branch (13326:8): [True: 1, False: 1]
  ------------------
13327|      1|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (13327:9): [True: 0, False: 1]
  ------------------
13328|      1|				goto yy658;
13329|      1|			} else {
13330|      1|				if (yych <= 'e') goto yy714;
  ------------------
  |  Branch (13330:9): [True: 0, False: 1]
  ------------------
13331|      1|				if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13331:9): [True: 0, False: 1]
  ------------------
13332|      1|				goto yy295;
13333|      1|			}
13334|      2|		}
13335|      4|	}
13336|      2|yy536:
13337|      2|	YYDEBUG(536, *YYCURSOR);
13338|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
13339|      2|	if (yych <= 'N') {
  ------------------
  |  Branch (13339:6): [True: 1, False: 1]
  ------------------
13340|      1|		if (yych <= ')') {
  ------------------
  |  Branch (13340:7): [True: 1, False: 0]
  ------------------
13341|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13341:8): [True: 1, False: 0]
  ------------------
13342|      0|			goto yy115;
13343|      1|		} else {
13344|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13344:8): [True: 0, False: 0]
  ------------------
13345|      0|			if (yych <= 'M') goto yy658;
  ------------------
  |  Branch (13345:8): [True: 0, False: 0]
  ------------------
13346|      0|			goto yy715;
13347|      0|		}
13348|      1|	} else {
13349|      1|		if (yych <= 'm') {
  ------------------
  |  Branch (13349:7): [True: 0, False: 1]
  ------------------
13350|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13350:8): [True: 0, False: 0]
  ------------------
13351|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13351:8): [True: 0, False: 0]
  ------------------
13352|      0|			goto yy658;
13353|      1|		} else {
13354|      1|			if (yych <= 'n') goto yy715;
  ------------------
  |  Branch (13354:8): [True: 1, False: 0]
  ------------------
13355|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13355:8): [True: 0, False: 0]
  ------------------
13356|      0|			goto yy20;
13357|      0|		}
13358|      1|	}
13359|      0|yy537:
13360|      0|	YYDEBUG(537, *YYCURSOR);
13361|      0|	yyaccept = 2;
13362|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13363|      0|	if (yych <= 'Q') {
  ------------------
  |  Branch (13363:6): [True: 0, False: 0]
  ------------------
13364|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13364:7): [True: 0, False: 0]
  ------------------
13365|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13365:8): [True: 0, False: 0]
  ------------------
13366|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13366:8): [True: 0, False: 0]
  ------------------
13367|      0|			goto yy297;
13368|      0|		} else {
13369|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13369:8): [True: 0, False: 0]
  ------------------
13370|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13370:8): [True: 0, False: 0]
  ------------------
13371|      0|			goto yy658;
13372|      0|		}
13373|      0|	} else {
13374|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13374:7): [True: 0, False: 0]
  ------------------
13375|      0|			if (yych <= 'R') goto yy712;
  ------------------
  |  Branch (13375:8): [True: 0, False: 0]
  ------------------
13376|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13376:8): [True: 0, False: 0]
  ------------------
13377|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13377:8): [True: 0, False: 0]
  ------------------
13378|      0|			goto yy297;
13379|      0|		} else {
13380|      0|			if (yych <= 'q') {
  ------------------
  |  Branch (13380:8): [True: 0, False: 0]
  ------------------
13381|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13381:9): [True: 0, False: 0]
  ------------------
13382|      0|				goto yy663;
13383|      0|			} else {
13384|      0|				if (yych <= 'r') goto yy716;
  ------------------
  |  Branch (13384:9): [True: 0, False: 0]
  ------------------
13385|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13385:9): [True: 0, False: 0]
  ------------------
13386|      0|				goto yy20;
13387|      0|			}
13388|      0|		}
13389|      0|	}
13390|      1|yy538:
13391|      1|	YYDEBUG(538, *YYCURSOR);
13392|      1|	yyaccept = 2;
13393|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
13394|      1|	if (yych <= 'M') {
  ------------------
  |  Branch (13394:6): [True: 0, False: 1]
  ------------------
13395|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13395:7): [True: 0, False: 0]
  ------------------
13396|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13396:8): [True: 0, False: 0]
  ------------------
13397|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13397:8): [True: 0, False: 0]
  ------------------
13398|      0|			goto yy297;
13399|      0|		} else {
13400|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13400:8): [True: 0, False: 0]
  ------------------
13401|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13401:8): [True: 0, False: 0]
  ------------------
13402|      0|			goto yy658;
13403|      0|		}
13404|      1|	} else {
13405|      1|		if (yych <= '_') {
  ------------------
  |  Branch (13405:7): [True: 0, False: 1]
  ------------------
13406|      0|			if (yych <= 'N') goto yy713;
  ------------------
  |  Branch (13406:8): [True: 0, False: 0]
  ------------------
13407|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13407:8): [True: 0, False: 0]
  ------------------
13408|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13408:8): [True: 0, False: 0]
  ------------------
13409|      0|			goto yy297;
13410|      1|		} else {
13411|      1|			if (yych <= 'm') {
  ------------------
  |  Branch (13411:8): [True: 0, False: 1]
  ------------------
13412|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13412:9): [True: 0, False: 0]
  ------------------
13413|      0|				goto yy663;
13414|      1|			} else {
13415|      1|				if (yych <= 'n') goto yy717;
  ------------------
  |  Branch (13415:9): [True: 0, False: 1]
  ------------------
13416|      1|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13416:9): [True: 1, False: 0]
  ------------------
13417|      0|				goto yy20;
13418|      1|			}
13419|      1|		}
13420|      1|	}
13421|      3|yy539:
13422|      3|	YYDEBUG(539, *YYCURSOR);
13423|      3|	yyaccept = 7;
13424|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
13425|      3|	if (yych <= '9') {
  ------------------
  |  Branch (13425:6): [True: 3, False: 0]
  ------------------
13426|      3|		if (yych <= '(') {
  ------------------
  |  Branch (13426:7): [True: 0, False: 3]
  ------------------
13427|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (13427:8): [True: 0, False: 0]
  ------------------
13428|      0|				if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (13428:9): [True: 0, False: 0]
  ------------------
13429|      0|				goto yy142;
13430|      0|			} else {
13431|      0|				if (yych == ' ') goto yy142;
  ------------------
  |  Branch (13431:9): [True: 0, False: 0]
  ------------------
13432|      0|				goto yy295;
13433|      0|			}
13434|      3|		} else {
13435|      3|			if (yych <= '-') {
  ------------------
  |  Branch (13435:8): [True: 3, False: 0]
  ------------------
13436|      3|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (13436:9): [True: 0, False: 3]
  ------------------
13437|      3|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (13437:9): [True: 3, False: 0]
  ------------------
13438|      0|				goto yy479;
13439|      3|			} else {
13440|      0|				if (yych == '/') goto yy297;
  ------------------
  |  Branch (13440:9): [True: 0, False: 0]
  ------------------
13441|      0|				goto yy142;
13442|      0|			}
13443|      3|		}
13444|      3|	} else {
13445|      0|		if (yych <= '^') {
  ------------------
  |  Branch (13445:7): [True: 0, False: 0]
  ------------------
13446|      0|			if (yych <= 'D') {
  ------------------
  |  Branch (13446:8): [True: 0, False: 0]
  ------------------
13447|      0|				if (yych <= '@') goto yy295;
  ------------------
  |  Branch (13447:9): [True: 0, False: 0]
  ------------------
13448|      0|				goto yy658;
13449|      0|			} else {
13450|      0|				if (yych <= 'E') goto yy714;
  ------------------
  |  Branch (13450:9): [True: 0, False: 0]
  ------------------
13451|      0|				if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13451:9): [True: 0, False: 0]
  ------------------
13452|      0|				goto yy295;
13453|      0|			}
13454|      0|		} else {
13455|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (13455:8): [True: 0, False: 0]
  ------------------
13456|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (13456:9): [True: 0, False: 0]
  ------------------
13457|      0|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (13457:9): [True: 0, False: 0]
  ------------------
13458|      0|				goto yy663;
13459|      0|			} else {
13460|      0|				if (yych <= 'e') goto yy718;
  ------------------
  |  Branch (13460:9): [True: 0, False: 0]
  ------------------
13461|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13461:9): [True: 0, False: 0]
  ------------------
13462|      0|				goto yy295;
13463|      0|			}
13464|      0|		}
13465|      0|	}
13466|     10|yy540:
13467|     10|	YYDEBUG(540, *YYCURSOR);
13468|     10|	yyaccept = 2;
13469|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     10|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
13470|     10|	if (yych <= 'M') {
  ------------------
  |  Branch (13470:6): [True: 1, False: 9]
  ------------------
13471|      1|		if (yych <= '-') {
  ------------------
  |  Branch (13471:7): [True: 1, False: 0]
  ------------------
13472|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13472:8): [True: 1, False: 0]
  ------------------
13473|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13473:8): [True: 0, False: 0]
  ------------------
13474|      0|			goto yy297;
13475|      0|		} else {
13476|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13476:8): [True: 0, False: 0]
  ------------------
13477|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13477:8): [True: 0, False: 0]
  ------------------
13478|      0|			goto yy658;
13479|      0|		}
13480|      9|	} else {
13481|      9|		if (yych <= '_') {
  ------------------
  |  Branch (13481:7): [True: 7, False: 2]
  ------------------
13482|      7|			if (yych <= 'N') goto yy715;
  ------------------
  |  Branch (13482:8): [True: 2, False: 5]
  ------------------
13483|      5|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13483:8): [True: 0, False: 5]
  ------------------
13484|      5|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13484:8): [True: 3, False: 2]
  ------------------
13485|      2|			goto yy297;
13486|      5|		} else {
13487|      2|			if (yych <= 'm') {
  ------------------
  |  Branch (13487:8): [True: 0, False: 2]
  ------------------
13488|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13488:9): [True: 0, False: 0]
  ------------------
13489|      0|				goto yy663;
13490|      2|			} else {
13491|      2|				if (yych <= 'n') goto yy719;
  ------------------
  |  Branch (13491:9): [True: 1, False: 1]
  ------------------
13492|      1|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13492:9): [True: 0, False: 1]
  ------------------
13493|      1|				goto yy20;
13494|      1|			}
13495|      2|		}
13496|      9|	}
13497|     26|yy541:
13498|     26|	YYDEBUG(541, *YYCURSOR);
13499|     26|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     26|#define   YYCURSOR     cursor
  ------------------
13500|     26|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (13500:6): [True: 0, False: 26]
  ------------------
13501|     26|	if (yych <= '9') goto yy720;
  ------------------
  |  Branch (13501:6): [True: 21, False: 5]
  ------------------
13502|      5|	goto yy59;
13503|      5|yy542:
13504|      0|	YYDEBUG(542, *YYCURSOR);
13505|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13506|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (13506:6): [True: 0, False: 0]
  ------------------
13507|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13507:7): [True: 0, False: 0]
  ------------------
13508|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13508:8): [True: 0, False: 0]
  ------------------
13509|      0|			goto yy115;
13510|      0|		} else {
13511|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13511:8): [True: 0, False: 0]
  ------------------
13512|      0|			if (yych <= 'C') goto yy658;
  ------------------
  |  Branch (13512:8): [True: 0, False: 0]
  ------------------
13513|      0|			goto yy674;
13514|      0|		}
13515|      0|	} else {
13516|      0|		if (yych <= 'c') {
  ------------------
  |  Branch (13516:7): [True: 0, False: 0]
  ------------------
13517|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13517:8): [True: 0, False: 0]
  ------------------
13518|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13518:8): [True: 0, False: 0]
  ------------------
13519|      0|			goto yy658;
13520|      0|		} else {
13521|      0|			if (yych <= 'd') goto yy674;
  ------------------
  |  Branch (13521:8): [True: 0, False: 0]
  ------------------
13522|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13522:8): [True: 0, False: 0]
  ------------------
13523|      0|			goto yy20;
13524|      0|		}
13525|      0|	}
13526|      3|yy543:
13527|      3|	YYDEBUG(543, *YYCURSOR);
13528|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
13529|      3|	if (yych <= 'S') {
  ------------------
  |  Branch (13529:6): [True: 0, False: 3]
  ------------------
13530|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13530:7): [True: 0, False: 0]
  ------------------
13531|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13531:8): [True: 0, False: 0]
  ------------------
13532|      0|			goto yy115;
13533|      0|		} else {
13534|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13534:8): [True: 0, False: 0]
  ------------------
13535|      0|			if (yych <= 'R') goto yy658;
  ------------------
  |  Branch (13535:8): [True: 0, False: 0]
  ------------------
13536|      0|			goto yy712;
13537|      0|		}
13538|      3|	} else {
13539|      3|		if (yych <= 'r') {
  ------------------
  |  Branch (13539:7): [True: 0, False: 3]
  ------------------
13540|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13540:8): [True: 0, False: 0]
  ------------------
13541|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13541:8): [True: 0, False: 0]
  ------------------
13542|      0|			goto yy658;
13543|      3|		} else {
13544|      3|			if (yych <= 's') goto yy712;
  ------------------
  |  Branch (13544:8): [True: 3, False: 0]
  ------------------
13545|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13545:8): [True: 0, False: 0]
  ------------------
13546|      0|			goto yy20;
13547|      0|		}
13548|      3|	}
13549|      0|yy544:
13550|      0|	YYDEBUG(544, *YYCURSOR);
13551|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13552|      0|	if (yych <= 'Y') {
  ------------------
  |  Branch (13552:6): [True: 0, False: 0]
  ------------------
13553|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13553:7): [True: 0, False: 0]
  ------------------
13554|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13554:8): [True: 0, False: 0]
  ------------------
13555|      0|			goto yy115;
13556|      0|		} else {
13557|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13557:8): [True: 0, False: 0]
  ------------------
13558|      0|			if (yych <= 'X') goto yy658;
  ------------------
  |  Branch (13558:8): [True: 0, False: 0]
  ------------------
13559|      0|			goto yy721;
13560|      0|		}
13561|      0|	} else {
13562|      0|		if (yych <= 'x') {
  ------------------
  |  Branch (13562:7): [True: 0, False: 0]
  ------------------
13563|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13563:8): [True: 0, False: 0]
  ------------------
13564|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13564:8): [True: 0, False: 0]
  ------------------
13565|      0|			goto yy658;
13566|      0|		} else {
13567|      0|			if (yych <= 'y') goto yy721;
  ------------------
  |  Branch (13567:8): [True: 0, False: 0]
  ------------------
13568|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13568:8): [True: 0, False: 0]
  ------------------
13569|      0|			goto yy20;
13570|      0|		}
13571|      0|	}
13572|      0|yy545:
13573|      0|	YYDEBUG(545, *YYCURSOR);
13574|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13575|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (13575:6): [True: 0, False: 0]
  ------------------
13576|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13576:7): [True: 0, False: 0]
  ------------------
13577|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13577:8): [True: 0, False: 0]
  ------------------
13578|      0|			goto yy115;
13579|      0|		} else {
13580|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13580:8): [True: 0, False: 0]
  ------------------
13581|      0|			if (yych <= 'Q') goto yy658;
  ------------------
  |  Branch (13581:8): [True: 0, False: 0]
  ------------------
13582|      0|			goto yy723;
13583|      0|		}
13584|      0|	} else {
13585|      0|		if (yych <= 'q') {
  ------------------
  |  Branch (13585:7): [True: 0, False: 0]
  ------------------
13586|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13586:8): [True: 0, False: 0]
  ------------------
13587|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13587:8): [True: 0, False: 0]
  ------------------
13588|      0|			goto yy658;
13589|      0|		} else {
13590|      0|			if (yych <= 'r') goto yy723;
  ------------------
  |  Branch (13590:8): [True: 0, False: 0]
  ------------------
13591|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13591:8): [True: 0, False: 0]
  ------------------
13592|      0|			goto yy20;
13593|      0|		}
13594|      0|	}
13595|      1|yy546:
13596|      1|	YYDEBUG(546, *YYCURSOR);
13597|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
13598|      1|	if (yych <= 'D') {
  ------------------
  |  Branch (13598:6): [True: 1, False: 0]
  ------------------
13599|      1|		if (yych <= ')') {
  ------------------
  |  Branch (13599:7): [True: 1, False: 0]
  ------------------
13600|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13600:8): [True: 1, False: 0]
  ------------------
13601|      0|			goto yy115;
13602|      1|		} else {
13603|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13603:8): [True: 0, False: 0]
  ------------------
13604|      0|			if (yych <= 'C') goto yy658;
  ------------------
  |  Branch (13604:8): [True: 0, False: 0]
  ------------------
13605|      0|			goto yy724;
13606|      0|		}
13607|      1|	} else {
13608|      0|		if (yych <= 'c') {
  ------------------
  |  Branch (13608:7): [True: 0, False: 0]
  ------------------
13609|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13609:8): [True: 0, False: 0]
  ------------------
13610|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13610:8): [True: 0, False: 0]
  ------------------
13611|      0|			goto yy658;
13612|      0|		} else {
13613|      0|			if (yych <= 'd') goto yy724;
  ------------------
  |  Branch (13613:8): [True: 0, False: 0]
  ------------------
13614|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13614:8): [True: 0, False: 0]
  ------------------
13615|      0|			goto yy20;
13616|      0|		}
13617|      0|	}
13618|      0|yy547:
13619|      0|	YYDEBUG(547, *YYCURSOR);
13620|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13621|      0|	if (yych <= 'F') {
  ------------------
  |  Branch (13621:6): [True: 0, False: 0]
  ------------------
13622|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13622:7): [True: 0, False: 0]
  ------------------
13623|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13623:8): [True: 0, False: 0]
  ------------------
13624|      0|			goto yy115;
13625|      0|		} else {
13626|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13626:8): [True: 0, False: 0]
  ------------------
13627|      0|			if (yych <= 'E') goto yy658;
  ------------------
  |  Branch (13627:8): [True: 0, False: 0]
  ------------------
13628|      0|			goto yy715;
13629|      0|		}
13630|      0|	} else {
13631|      0|		if (yych <= 'e') {
  ------------------
  |  Branch (13631:7): [True: 0, False: 0]
  ------------------
13632|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13632:8): [True: 0, False: 0]
  ------------------
13633|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13633:8): [True: 0, False: 0]
  ------------------
13634|      0|			goto yy658;
13635|      0|		} else {
13636|      0|			if (yych <= 'f') goto yy715;
  ------------------
  |  Branch (13636:8): [True: 0, False: 0]
  ------------------
13637|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13637:8): [True: 0, False: 0]
  ------------------
13638|      0|			goto yy20;
13639|      0|		}
13640|      0|	}
13641|      0|yy548:
13642|      0|	YYDEBUG(548, *YYCURSOR);
13643|      0|	yyaccept = 2;
13644|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13645|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (13645:6): [True: 0, False: 0]
  ------------------
13646|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13646:7): [True: 0, False: 0]
  ------------------
13647|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13647:8): [True: 0, False: 0]
  ------------------
13648|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13648:8): [True: 0, False: 0]
  ------------------
13649|      0|			goto yy297;
13650|      0|		} else {
13651|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13651:8): [True: 0, False: 0]
  ------------------
13652|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13652:8): [True: 0, False: 0]
  ------------------
13653|      0|			goto yy658;
13654|      0|		}
13655|      0|	} else {
13656|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13656:7): [True: 0, False: 0]
  ------------------
13657|      0|			if (yych <= 'D') goto yy674;
  ------------------
  |  Branch (13657:8): [True: 0, False: 0]
  ------------------
13658|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13658:8): [True: 0, False: 0]
  ------------------
13659|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13659:8): [True: 0, False: 0]
  ------------------
13660|      0|			goto yy297;
13661|      0|		} else {
13662|      0|			if (yych <= 'c') {
  ------------------
  |  Branch (13662:8): [True: 0, False: 0]
  ------------------
13663|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13663:9): [True: 0, False: 0]
  ------------------
13664|      0|				goto yy663;
13665|      0|			} else {
13666|      0|				if (yych <= 'd') goto yy680;
  ------------------
  |  Branch (13666:9): [True: 0, False: 0]
  ------------------
13667|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13667:9): [True: 0, False: 0]
  ------------------
13668|      0|				goto yy20;
13669|      0|			}
13670|      0|		}
13671|      0|	}
13672|      2|yy549:
13673|      2|	YYDEBUG(549, *YYCURSOR);
13674|      2|	yyaccept = 2;
13675|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
13676|      2|	if (yych <= 'R') {
  ------------------
  |  Branch (13676:6): [True: 0, False: 2]
  ------------------
13677|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13677:7): [True: 0, False: 0]
  ------------------
13678|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13678:8): [True: 0, False: 0]
  ------------------
13679|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13679:8): [True: 0, False: 0]
  ------------------
13680|      0|			goto yy297;
13681|      0|		} else {
13682|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13682:8): [True: 0, False: 0]
  ------------------
13683|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13683:8): [True: 0, False: 0]
  ------------------
13684|      0|			goto yy658;
13685|      0|		}
13686|      2|	} else {
13687|      2|		if (yych <= '_') {
  ------------------
  |  Branch (13687:7): [True: 2, False: 0]
  ------------------
13688|      2|			if (yych <= 'S') goto yy712;
  ------------------
  |  Branch (13688:8): [True: 0, False: 2]
  ------------------
13689|      2|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13689:8): [True: 2, False: 0]
  ------------------
13690|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13690:8): [True: 0, False: 0]
  ------------------
13691|      0|			goto yy297;
13692|      0|		} else {
13693|      0|			if (yych <= 'r') {
  ------------------
  |  Branch (13693:8): [True: 0, False: 0]
  ------------------
13694|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13694:9): [True: 0, False: 0]
  ------------------
13695|      0|				goto yy663;
13696|      0|			} else {
13697|      0|				if (yych <= 's') goto yy716;
  ------------------
  |  Branch (13697:9): [True: 0, False: 0]
  ------------------
13698|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13698:9): [True: 0, False: 0]
  ------------------
13699|      0|				goto yy20;
13700|      0|			}
13701|      0|		}
13702|      2|	}
13703|      0|yy550:
13704|      0|	YYDEBUG(550, *YYCURSOR);
13705|      0|	yyaccept = 2;
13706|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13707|      0|	if (yych <= 'X') {
  ------------------
  |  Branch (13707:6): [True: 0, False: 0]
  ------------------
13708|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13708:7): [True: 0, False: 0]
  ------------------
13709|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13709:8): [True: 0, False: 0]
  ------------------
13710|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13710:8): [True: 0, False: 0]
  ------------------
13711|      0|			goto yy297;
13712|      0|		} else {
13713|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13713:8): [True: 0, False: 0]
  ------------------
13714|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13714:8): [True: 0, False: 0]
  ------------------
13715|      0|			goto yy658;
13716|      0|		}
13717|      0|	} else {
13718|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13718:7): [True: 0, False: 0]
  ------------------
13719|      0|			if (yych <= 'Y') goto yy721;
  ------------------
  |  Branch (13719:8): [True: 0, False: 0]
  ------------------
13720|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13720:8): [True: 0, False: 0]
  ------------------
13721|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13721:8): [True: 0, False: 0]
  ------------------
13722|      0|			goto yy297;
13723|      0|		} else {
13724|      0|			if (yych <= 'x') {
  ------------------
  |  Branch (13724:8): [True: 0, False: 0]
  ------------------
13725|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13725:9): [True: 0, False: 0]
  ------------------
13726|      0|				goto yy663;
13727|      0|			} else {
13728|      0|				if (yych <= 'y') goto yy725;
  ------------------
  |  Branch (13728:9): [True: 0, False: 0]
  ------------------
13729|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13729:9): [True: 0, False: 0]
  ------------------
13730|      0|				goto yy20;
13731|      0|			}
13732|      0|		}
13733|      0|	}
13734|      1|yy551:
13735|      1|	YYDEBUG(551, *YYCURSOR);
13736|      1|	yyaccept = 2;
13737|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
13738|      1|	if (yych <= 'Q') {
  ------------------
  |  Branch (13738:6): [True: 0, False: 1]
  ------------------
13739|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13739:7): [True: 0, False: 0]
  ------------------
13740|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13740:8): [True: 0, False: 0]
  ------------------
13741|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13741:8): [True: 0, False: 0]
  ------------------
13742|      0|			goto yy297;
13743|      0|		} else {
13744|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13744:8): [True: 0, False: 0]
  ------------------
13745|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13745:8): [True: 0, False: 0]
  ------------------
13746|      0|			goto yy658;
13747|      0|		}
13748|      1|	} else {
13749|      1|		if (yych <= '_') {
  ------------------
  |  Branch (13749:7): [True: 0, False: 1]
  ------------------
13750|      0|			if (yych <= 'R') goto yy723;
  ------------------
  |  Branch (13750:8): [True: 0, False: 0]
  ------------------
13751|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13751:8): [True: 0, False: 0]
  ------------------
13752|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13752:8): [True: 0, False: 0]
  ------------------
13753|      0|			goto yy297;
13754|      1|		} else {
13755|      1|			if (yych <= 'q') {
  ------------------
  |  Branch (13755:8): [True: 0, False: 1]
  ------------------
13756|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13756:9): [True: 0, False: 0]
  ------------------
13757|      0|				goto yy663;
13758|      1|			} else {
13759|      1|				if (yych <= 'r') goto yy726;
  ------------------
  |  Branch (13759:9): [True: 1, False: 0]
  ------------------
13760|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13760:9): [True: 0, False: 0]
  ------------------
13761|      0|				goto yy20;
13762|      0|			}
13763|      1|		}
13764|      1|	}
13765|      4|yy552:
13766|      4|	YYDEBUG(552, *YYCURSOR);
13767|      4|	yyaccept = 2;
13768|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
13769|      4|	if (yych <= 'C') {
  ------------------
  |  Branch (13769:6): [True: 0, False: 4]
  ------------------
13770|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13770:7): [True: 0, False: 0]
  ------------------
13771|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13771:8): [True: 0, False: 0]
  ------------------
13772|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13772:8): [True: 0, False: 0]
  ------------------
13773|      0|			goto yy297;
13774|      0|		} else {
13775|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13775:8): [True: 0, False: 0]
  ------------------
13776|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13776:8): [True: 0, False: 0]
  ------------------
13777|      0|			goto yy658;
13778|      0|		}
13779|      4|	} else {
13780|      4|		if (yych <= '_') {
  ------------------
  |  Branch (13780:7): [True: 1, False: 3]
  ------------------
13781|      1|			if (yych <= 'D') goto yy724;
  ------------------
  |  Branch (13781:8): [True: 0, False: 1]
  ------------------
13782|      1|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13782:8): [True: 0, False: 1]
  ------------------
13783|      1|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13783:8): [True: 1, False: 0]
  ------------------
13784|      0|			goto yy297;
13785|      3|		} else {
13786|      3|			if (yych <= 'c') {
  ------------------
  |  Branch (13786:8): [True: 2, False: 1]
  ------------------
13787|      2|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13787:9): [True: 2, False: 0]
  ------------------
13788|      0|				goto yy663;
13789|      2|			} else {
13790|      1|				if (yych <= 'd') goto yy727;
  ------------------
  |  Branch (13790:9): [True: 1, False: 0]
  ------------------
13791|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13791:9): [True: 0, False: 0]
  ------------------
13792|      0|				goto yy20;
13793|      0|			}
13794|      3|		}
13795|      4|	}
13796|      0|yy553:
13797|      0|	YYDEBUG(553, *YYCURSOR);
13798|      0|	yyaccept = 2;
13799|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13800|      0|	if (yych <= 'E') {
  ------------------
  |  Branch (13800:6): [True: 0, False: 0]
  ------------------
13801|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13801:7): [True: 0, False: 0]
  ------------------
13802|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13802:8): [True: 0, False: 0]
  ------------------
13803|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13803:8): [True: 0, False: 0]
  ------------------
13804|      0|			goto yy297;
13805|      0|		} else {
13806|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13806:8): [True: 0, False: 0]
  ------------------
13807|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13807:8): [True: 0, False: 0]
  ------------------
13808|      0|			goto yy658;
13809|      0|		}
13810|      0|	} else {
13811|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13811:7): [True: 0, False: 0]
  ------------------
13812|      0|			if (yych <= 'F') goto yy715;
  ------------------
  |  Branch (13812:8): [True: 0, False: 0]
  ------------------
13813|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13813:8): [True: 0, False: 0]
  ------------------
13814|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13814:8): [True: 0, False: 0]
  ------------------
13815|      0|			goto yy297;
13816|      0|		} else {
13817|      0|			if (yych <= 'e') {
  ------------------
  |  Branch (13817:8): [True: 0, False: 0]
  ------------------
13818|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13818:9): [True: 0, False: 0]
  ------------------
13819|      0|				goto yy663;
13820|      0|			} else {
13821|      0|				if (yych <= 'f') goto yy719;
  ------------------
  |  Branch (13821:9): [True: 0, False: 0]
  ------------------
13822|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13822:9): [True: 0, False: 0]
  ------------------
13823|      0|				goto yy20;
13824|      0|			}
13825|      0|		}
13826|      0|	}
13827|      0|yy554:
13828|      0|	YYDEBUG(554, *YYCURSOR);
13829|      0|	yyaccept = 2;
13830|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13831|      0|	if (yych <= ',') {
  ------------------
  |  Branch (13831:6): [True: 0, False: 0]
  ------------------
13832|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (13832:7): [True: 0, False: 0]
  ------------------
13833|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (13833:8): [True: 0, False: 0]
  ------------------
13834|      0|			goto yy20;
13835|      0|		} else {
13836|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (13836:8): [True: 0, False: 0]
  ------------------
13837|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13837:8): [True: 0, False: 0]
  ------------------
13838|      0|			goto yy20;
13839|      0|		}
13840|      0|	} else {
13841|      0|		if (yych <= '@') {
  ------------------
  |  Branch (13841:7): [True: 0, False: 0]
  ------------------
13842|      0|			if (yych == '/') goto yy20;
  ------------------
  |  Branch (13842:8): [True: 0, False: 0]
  ------------------
13843|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (13843:8): [True: 0, False: 0]
  ------------------
13844|      0|			goto yy20;
13845|      0|		} else {
13846|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13846:8): [True: 0, False: 0]
  ------------------
13847|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13847:8): [True: 0, False: 0]
  ------------------
13848|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13848:8): [True: 0, False: 0]
  ------------------
13849|      0|			goto yy20;
13850|      0|		}
13851|      0|	}
13852|      0|yy555:
13853|      0|	YYDEBUG(555, *YYCURSOR);
13854|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13855|      0|	if (yych <= 'E') {
  ------------------
  |  Branch (13855:6): [True: 0, False: 0]
  ------------------
13856|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13856:7): [True: 0, False: 0]
  ------------------
13857|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13857:8): [True: 0, False: 0]
  ------------------
13858|      0|			goto yy115;
13859|      0|		} else {
13860|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13860:8): [True: 0, False: 0]
  ------------------
13861|      0|			if (yych <= 'D') goto yy658;
  ------------------
  |  Branch (13861:8): [True: 0, False: 0]
  ------------------
13862|      0|			goto yy728;
13863|      0|		}
13864|      0|	} else {
13865|      0|		if (yych <= 'd') {
  ------------------
  |  Branch (13865:7): [True: 0, False: 0]
  ------------------
13866|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13866:8): [True: 0, False: 0]
  ------------------
13867|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13867:8): [True: 0, False: 0]
  ------------------
13868|      0|			goto yy658;
13869|      0|		} else {
13870|      0|			if (yych <= 'e') goto yy728;
  ------------------
  |  Branch (13870:8): [True: 0, False: 0]
  ------------------
13871|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13871:8): [True: 0, False: 0]
  ------------------
13872|      0|			goto yy20;
13873|      0|		}
13874|      0|	}
13875|      0|yy556:
13876|      0|	YYDEBUG(556, *YYCURSOR);
13877|      0|	yyaccept = 2;
13878|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13879|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (13879:6): [True: 0, False: 0]
  ------------------
13880|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13880:7): [True: 0, False: 0]
  ------------------
13881|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13881:8): [True: 0, False: 0]
  ------------------
13882|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13882:8): [True: 0, False: 0]
  ------------------
13883|      0|			goto yy297;
13884|      0|		} else {
13885|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13885:8): [True: 0, False: 0]
  ------------------
13886|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13886:8): [True: 0, False: 0]
  ------------------
13887|      0|			goto yy658;
13888|      0|		}
13889|      0|	} else {
13890|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13890:7): [True: 0, False: 0]
  ------------------
13891|      0|			if (yych <= 'E') goto yy728;
  ------------------
  |  Branch (13891:8): [True: 0, False: 0]
  ------------------
13892|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13892:8): [True: 0, False: 0]
  ------------------
13893|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13893:8): [True: 0, False: 0]
  ------------------
13894|      0|			goto yy297;
13895|      0|		} else {
13896|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (13896:8): [True: 0, False: 0]
  ------------------
13897|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13897:9): [True: 0, False: 0]
  ------------------
13898|      0|				goto yy663;
13899|      0|			} else {
13900|      0|				if (yych <= 'e') goto yy729;
  ------------------
  |  Branch (13900:9): [True: 0, False: 0]
  ------------------
13901|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13901:9): [True: 0, False: 0]
  ------------------
13902|      0|				goto yy20;
13903|      0|			}
13904|      0|		}
13905|      0|	}
13906|      2|yy557:
13907|      2|	YYDEBUG(557, *YYCURSOR);
13908|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
13909|      2|	if (yych <= 'E') {
  ------------------
  |  Branch (13909:6): [True: 0, False: 2]
  ------------------
13910|      0|		if (yych <= ')') {
  ------------------
  |  Branch (13910:7): [True: 0, False: 0]
  ------------------
13911|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (13911:8): [True: 0, False: 0]
  ------------------
13912|      0|			goto yy115;
13913|      0|		} else {
13914|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13914:8): [True: 0, False: 0]
  ------------------
13915|      0|			if (yych <= 'D') goto yy658;
  ------------------
  |  Branch (13915:8): [True: 0, False: 0]
  ------------------
13916|      0|			goto yy730;
13917|      0|		}
13918|      2|	} else {
13919|      2|		if (yych <= 'd') {
  ------------------
  |  Branch (13919:7): [True: 1, False: 1]
  ------------------
13920|      1|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13920:8): [True: 0, False: 1]
  ------------------
13921|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13921:8): [True: 1, False: 0]
  ------------------
13922|      0|			goto yy658;
13923|      1|		} else {
13924|      1|			if (yych <= 'e') goto yy730;
  ------------------
  |  Branch (13924:8): [True: 1, False: 0]
  ------------------
13925|      0|			if (yych <= 'z') goto yy658;
  ------------------
  |  Branch (13925:8): [True: 0, False: 0]
  ------------------
13926|      0|			goto yy20;
13927|      0|		}
13928|      2|	}
13929|      0|yy558:
13930|      0|	YYDEBUG(558, *YYCURSOR);
13931|      0|	yyaccept = 2;
13932|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13933|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (13933:6): [True: 0, False: 0]
  ------------------
13934|      0|		if (yych <= '-') {
  ------------------
  |  Branch (13934:7): [True: 0, False: 0]
  ------------------
13935|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (13935:8): [True: 0, False: 0]
  ------------------
13936|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (13936:8): [True: 0, False: 0]
  ------------------
13937|      0|			goto yy297;
13938|      0|		} else {
13939|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (13939:8): [True: 0, False: 0]
  ------------------
13940|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (13940:8): [True: 0, False: 0]
  ------------------
13941|      0|			goto yy658;
13942|      0|		}
13943|      0|	} else {
13944|      0|		if (yych <= '_') {
  ------------------
  |  Branch (13944:7): [True: 0, False: 0]
  ------------------
13945|      0|			if (yych <= 'E') goto yy730;
  ------------------
  |  Branch (13945:8): [True: 0, False: 0]
  ------------------
13946|      0|			if (yych <= 'Z') goto yy658;
  ------------------
  |  Branch (13946:8): [True: 0, False: 0]
  ------------------
13947|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (13947:8): [True: 0, False: 0]
  ------------------
13948|      0|			goto yy297;
13949|      0|		} else {
13950|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (13950:8): [True: 0, False: 0]
  ------------------
13951|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (13951:9): [True: 0, False: 0]
  ------------------
13952|      0|				goto yy663;
13953|      0|			} else {
13954|      0|				if (yych <= 'e') goto yy731;
  ------------------
  |  Branch (13954:9): [True: 0, False: 0]
  ------------------
13955|      0|				if (yych <= 'z') goto yy663;
  ------------------
  |  Branch (13955:9): [True: 0, False: 0]
  ------------------
13956|      0|				goto yy20;
13957|      0|			}
13958|      0|		}
13959|      0|	}
13960|      0|yy559:
13961|      0|	YYDEBUG(559, *YYCURSOR);
13962|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13963|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (13963:6): [True: 0, False: 0]
  ------------------
13964|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
13965|      0|	if (yych == 0x80) goto yy194;
  ------------------
  |  Branch (13965:6): [True: 0, False: 0]
  ------------------
13966|      0|	goto yy59;
13967|    186|yy560:
13968|    186|	YYDEBUG(560, *YYCURSOR);
13969|    186|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    186|#define   YYCURSOR     cursor
  ------------------
13970|    186|	if (yych <= 0xC1) {
  ------------------
  |  Branch (13970:6): [True: 169, False: 17]
  ------------------
13971|    169|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (13971:7): [True: 8, False: 161]
  ------------------
13972|    161|		if (yych <= '9') goto yy594;
  ------------------
  |  Branch (13972:7): [True: 136, False: 25]
  ------------------
13973|     25|		goto yy196;
13974|    161|	} else {
13975|     17|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (13975:7): [True: 0, False: 17]
  ------------------
13976|     17|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (13976:7): [True: 0, False: 17]
  ------------------
13977|     17|		goto yy196;
13978|     17|	}
13979|     82|yy561:
13980|     82|	YYDEBUG(561, *YYCURSOR);
13981|     82|	yyaccept = 2;
13982|     82|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     82|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     82|#define   YYCURSOR     cursor
  ------------------
13983|     82|	if (yych <= 'V') {
  ------------------
  |  Branch (13983:6): [True: 59, False: 23]
  ------------------
13984|     59|		if (yych <= '9') {
  ------------------
  |  Branch (13984:7): [True: 55, False: 4]
  ------------------
13985|     55|			if (yych <= ',') {
  ------------------
  |  Branch (13985:8): [True: 3, False: 52]
  ------------------
13986|      3|				if (yych <= '\t') {
  ------------------
  |  Branch (13986:9): [True: 1, False: 2]
  ------------------
13987|      1|					if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (13987:10): [True: 0, False: 1]
  ------------------
13988|      1|					goto yy196;
13989|      2|				} else {
13990|      2|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (13990:10): [True: 1, False: 1]
  ------------------
13991|      1|					goto yy20;
13992|      2|				}
13993|     52|			} else {
13994|     52|				if (yych <= '/') {
  ------------------
  |  Branch (13994:9): [True: 7, False: 45]
  ------------------
13995|      7|					if (yych <= '-') goto yy732;
  ------------------
  |  Branch (13995:10): [True: 5, False: 2]
  ------------------
13996|      2|					goto yy20;
13997|     45|				} else {
13998|     45|					if (yych <= '5') goto yy733;
  ------------------
  |  Branch (13998:10): [True: 37, False: 8]
  ------------------
13999|      8|					if (yych <= '6') goto yy734;
  ------------------
  |  Branch (13999:10): [True: 6, False: 2]
  ------------------
14000|      2|					goto yy735;
14001|      8|				}
14002|     52|			}
14003|     55|		} else {
14004|      4|			if (yych <= 'G') {
  ------------------
  |  Branch (14004:8): [True: 2, False: 2]
  ------------------
14005|      2|				if (yych <= 'D') {
  ------------------
  |  Branch (14005:9): [True: 2, False: 0]
  ------------------
14006|      2|					if (yych <= 'C') goto yy20;
  ------------------
  |  Branch (14006:10): [True: 2, False: 0]
  ------------------
14007|      0|					goto yy196;
14008|      2|				} else {
14009|      0|					if (yych == 'F') goto yy196;
  ------------------
  |  Branch (14009:10): [True: 0, False: 0]
  ------------------
14010|      0|					goto yy20;
14011|      0|				}
14012|      2|			} else {
14013|      2|				if (yych <= 'M') {
  ------------------
  |  Branch (14013:9): [True: 0, False: 2]
  ------------------
14014|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (14014:10): [True: 0, False: 0]
  ------------------
14015|      0|					if (yych <= 'L') goto yy20;
  ------------------
  |  Branch (14015:10): [True: 0, False: 0]
  ------------------
14016|      0|					goto yy196;
14017|      2|				} else {
14018|      2|					if (yych <= 'R') goto yy20;
  ------------------
  |  Branch (14018:10): [True: 0, False: 2]
  ------------------
14019|      2|					if (yych <= 'U') goto yy196;
  ------------------
  |  Branch (14019:10): [True: 2, False: 0]
  ------------------
14020|      0|					goto yy20;
14021|      2|				}
14022|      2|			}
14023|      4|		}
14024|     59|	} else {
14025|     23|		if (yych <= 'm') {
  ------------------
  |  Branch (14025:7): [True: 2, False: 21]
  ------------------
14026|      2|			if (yych <= 'd') {
  ------------------
  |  Branch (14026:8): [True: 1, False: 1]
  ------------------
14027|      1|				if (yych <= 'X') {
  ------------------
  |  Branch (14027:9): [True: 1, False: 0]
  ------------------
14028|      1|					if (yych <= 'W') goto yy196;
  ------------------
  |  Branch (14028:10): [True: 0, False: 1]
  ------------------
14029|      1|					goto yy20;
14030|      1|				} else {
14031|      0|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (14031:10): [True: 0, False: 0]
  ------------------
14032|      0|					if (yych <= 'c') goto yy20;
  ------------------
  |  Branch (14032:10): [True: 0, False: 0]
  ------------------
14033|      0|					goto yy196;
14034|      0|				}
14035|      1|			} else {
14036|      1|				if (yych <= 'g') {
  ------------------
  |  Branch (14036:9): [True: 0, False: 1]
  ------------------
14037|      0|					if (yych == 'f') goto yy196;
  ------------------
  |  Branch (14037:10): [True: 0, False: 0]
  ------------------
14038|      0|					goto yy20;
14039|      1|				} else {
14040|      1|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (14040:10): [True: 0, False: 1]
  ------------------
14041|      1|					if (yych <= 'l') goto yy20;
  ------------------
  |  Branch (14041:10): [True: 0, False: 1]
  ------------------
14042|      1|					goto yy196;
14043|      1|				}
14044|      1|			}
14045|     21|		} else {
14046|     21|			if (yych <= 'x') {
  ------------------
  |  Branch (14046:8): [True: 1, False: 20]
  ------------------
14047|      1|				if (yych <= 'u') {
  ------------------
  |  Branch (14047:9): [True: 0, False: 1]
  ------------------
14048|      0|					if (yych <= 'r') goto yy20;
  ------------------
  |  Branch (14048:10): [True: 0, False: 0]
  ------------------
14049|      0|					goto yy196;
14050|      1|				} else {
14051|      1|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (14051:10): [True: 1, False: 0]
  ------------------
14052|      0|					goto yy20;
14053|      1|				}
14054|     20|			} else {
14055|     20|				if (yych <= 0xC2) {
  ------------------
  |  Branch (14055:9): [True: 7, False: 13]
  ------------------
14056|      7|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (14056:10): [True: 0, False: 7]
  ------------------
14057|      7|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (14057:10): [True: 3, False: 4]
  ------------------
14058|      4|					goto yy97;
14059|     13|				} else {
14060|     13|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14060:10): [True: 0, False: 13]
  ------------------
14061|     13|					goto yy20;
14062|     13|				}
14063|     20|			}
14064|     21|		}
14065|     23|	}
14066|     76|yy562:
14067|     76|	YYDEBUG(562, *YYCURSOR);
14068|     76|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     76|#define   YYCURSOR     cursor
  ------------------
14069|     76|	if (yych <= '9') {
  ------------------
  |  Branch (14069:6): [True: 64, False: 12]
  ------------------
14070|     64|		if (yych == '-') goto yy732;
  ------------------
  |  Branch (14070:7): [True: 3, False: 61]
  ------------------
14071|     61|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14071:7): [True: 9, False: 52]
  ------------------
14072|     52|		goto yy735;
14073|     61|	} else {
14074|     12|		if (yych <= 0xC2) {
  ------------------
  |  Branch (14074:7): [True: 9, False: 3]
  ------------------
14075|      9|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (14075:8): [True: 9, False: 0]
  ------------------
14076|      0|			goto yy97;
14077|      9|		} else {
14078|      3|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14078:8): [True: 0, False: 3]
  ------------------
14079|      3|			goto yy196;
14080|      3|		}
14081|     12|	}
14082|      3|yy563:
14083|      3|	YYDEBUG(563, *YYCURSOR);
14084|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
14085|      3|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (14085:6): [True: 0, False: 3]
  ------------------
14086|      3|	if (yych <= '9') goto yy736;
  ------------------
  |  Branch (14086:6): [True: 3, False: 0]
  ------------------
14087|      0|	goto yy20;
14088|      5|yy564:
14089|      5|	YYDEBUG(564, *YYCURSOR);
14090|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
14091|      5|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14091:6): [True: 0, False: 5]
  ------------------
14092|      5|	if (yych <= '9') goto yy737;
  ------------------
  |  Branch (14092:6): [True: 1, False: 4]
  ------------------
14093|      4|	goto yy59;
14094|      4|yy565:
14095|      4|	YYDEBUG(565, *YYCURSOR);
14096|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
14097|      4|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14097:6): [True: 3, False: 1]
  ------------------
14098|      1|	if (yych <= '9') goto yy738;
  ------------------
  |  Branch (14098:6): [True: 0, False: 1]
  ------------------
14099|      1|	goto yy59;
14100|      9|yy566:
14101|      9|	YYDEBUG(566, *YYCURSOR);
14102|      9|	yyaccept = 15;
14103|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
14104|      9|	if (yych <= 'n') {
  ------------------
  |  Branch (14104:6): [True: 9, False: 0]
  ------------------
14105|      9|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (14105:7): [True: 5, False: 4]
  ------------------
14106|      4|		if (yych <= '9') goto yy740;
  ------------------
  |  Branch (14106:7): [True: 2, False: 2]
  ------------------
14107|      2|		if (yych >= 'n') goto yy741;
  ------------------
  |  Branch (14107:7): [True: 0, False: 2]
  ------------------
14108|      2|	} else {
14109|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (14109:7): [True: 0, False: 0]
  ------------------
14110|      0|			if (yych >= 'r') goto yy741;
  ------------------
  |  Branch (14110:8): [True: 0, False: 0]
  ------------------
14111|      0|		} else {
14112|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (14112:8): [True: 0, False: 0]
  ------------------
14113|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (14113:8): [True: 0, False: 0]
  ------------------
14114|      0|		}
14115|      0|	}
14116|     17|yy567:
14117|     17|	YYDEBUG(567, *YYCURSOR);
14118|     17|#line 1549 "ext/date/lib/parse_date.re"
14119|     17|	{
14120|     17|		int length = 0;
14121|     17|		DEBUG_OUTPUT("gnudateshort");
14122|     17|		TIMELIB_INIT;
  ------------------
  |  |  107|     17|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
14123|     17|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     17|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      9|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      9|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      9|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      9|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 9, False: 8]
  |  |  ------------------
  ------------------
14124|      8|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
14125|      8|		s->time->m = timelib_get_nr(&ptr, 2);
14126|      8|		s->time->d = timelib_get_nr(&ptr, 2);
14127|      8|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      8|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      8|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      8|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 8]
  |  |  |  Branch (112:32): [True: 3, False: 5]
  |  |  ------------------
  |  |  113|      3|	/*	(x) = 0; */          \
  |  |  114|      5|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 3, False: 2]
  |  |  ------------------
  |  |  115|      3|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 3, False: 0]
  |  |  ------------------
  |  |  116|      3|			(x) += 2000;     \
  |  |  117|      3|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      3|	}                        \
  |  |  121|      8|}
  ------------------
14128|      8|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      8|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      8|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      8|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14129|      8|		return TIMELIB_ISO_DATE;
  ------------------
  |  |   59|      8|#define TIMELIB_ISO_DATE       267
  ------------------
14130|     17|	}
14131|      0|#line 14132 "ext/date/lib/parse_date.c"
14132|      0|yy568:
14133|      0|	YYDEBUG(568, *YYCURSOR);
14134|      0|	yyaccept = 15;
14135|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14136|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (14136:6): [True: 0, False: 0]
  ------------------
14137|      0|		if (yych <= '1') {
  ------------------
  |  Branch (14137:7): [True: 0, False: 0]
  ------------------
14138|      0|			if (yych <= '/') goto yy567;
  ------------------
  |  Branch (14138:8): [True: 0, False: 0]
  ------------------
14139|      0|			goto yy740;
14140|      0|		} else {
14141|      0|			if (yych <= '9') goto yy737;
  ------------------
  |  Branch (14141:8): [True: 0, False: 0]
  ------------------
14142|      0|			if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (14142:8): [True: 0, False: 0]
  ------------------
14143|      0|			goto yy741;
14144|      0|		}
14145|      0|	} else {
14146|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (14146:7): [True: 0, False: 0]
  ------------------
14147|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (14147:8): [True: 0, False: 0]
  ------------------
14148|      0|			goto yy741;
14149|      0|		} else {
14150|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (14150:8): [True: 0, False: 0]
  ------------------
14151|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (14151:8): [True: 0, False: 0]
  ------------------
14152|      0|			goto yy567;
14153|      0|		}
14154|      0|	}
14155|      0|yy569:
14156|      0|	YYDEBUG(569, *YYCURSOR);
14157|      0|	yyaccept = 15;
14158|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14159|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (14159:6): [True: 0, False: 0]
  ------------------
14160|      0|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (14160:7): [True: 0, False: 0]
  ------------------
14161|      0|		if (yych <= '9') goto yy737;
  ------------------
  |  Branch (14161:7): [True: 0, False: 0]
  ------------------
14162|      0|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (14162:7): [True: 0, False: 0]
  ------------------
14163|      0|		goto yy741;
14164|      0|	} else {
14165|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (14165:7): [True: 0, False: 0]
  ------------------
14166|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (14166:8): [True: 0, False: 0]
  ------------------
14167|      0|			goto yy741;
14168|      0|		} else {
14169|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (14169:8): [True: 0, False: 0]
  ------------------
14170|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (14170:8): [True: 0, False: 0]
  ------------------
14171|      0|			goto yy567;
14172|      0|		}
14173|      0|	}
14174|      9|yy570:
14175|      9|	YYDEBUG(570, *YYCURSOR);
14176|      9|	yyaccept = 4;
14177|      9|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      9|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
14178|      9|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14178:6): [True: 5, False: 4]
  ------------------
14179|      4|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (14179:6): [True: 1, False: 3]
  ------------------
14180|      3|	if (yych <= '9') goto yy745;
  ------------------
  |  Branch (14180:6): [True: 2, False: 1]
  ------------------
14181|      1|	goto yy177;
14182|      1|yy571:
14183|      0|	YYDEBUG(571, *YYCURSOR);
14184|      0|	yyaccept = 4;
14185|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14186|      0|	if (yych <= '/') {
  ------------------
  |  Branch (14186:6): [True: 0, False: 0]
  ------------------
14187|      0|		if (yych == '.') goto yy744;
  ------------------
  |  Branch (14187:7): [True: 0, False: 0]
  ------------------
14188|      0|		goto yy177;
14189|      0|	} else {
14190|      0|		if (yych <= '0') goto yy745;
  ------------------
  |  Branch (14190:7): [True: 0, False: 0]
  ------------------
14191|      0|		if (yych <= '9') goto yy738;
  ------------------
  |  Branch (14191:7): [True: 0, False: 0]
  ------------------
14192|      0|		goto yy177;
14193|      0|	}
14194|      4|yy572:
14195|      4|	YYDEBUG(572, *YYCURSOR);
14196|      4|	yyaccept = 4;
14197|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
14198|      4|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14198:6): [True: 0, False: 4]
  ------------------
14199|      4|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (14199:6): [True: 0, False: 4]
  ------------------
14200|      4|	if (yych <= '9') goto yy738;
  ------------------
  |  Branch (14200:6): [True: 3, False: 1]
  ------------------
14201|      1|	goto yy177;
14202|      6|yy573:
14203|      6|	YYDEBUG(573, *YYCURSOR);
14204|      6|	yyaccept = 4;
14205|      6|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      6|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
14206|      6|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14206:6): [True: 0, False: 6]
  ------------------
14207|      6|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (14207:6): [True: 0, False: 6]
  ------------------
14208|      6|	if (yych <= '9') goto yy575;
  ------------------
  |  Branch (14208:6): [True: 5, False: 1]
  ------------------
14209|      1|	goto yy177;
14210|      1|yy574:
14211|      0|	YYDEBUG(574, *YYCURSOR);
14212|      0|	yyaccept = 4;
14213|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14214|      0|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14214:6): [True: 0, False: 0]
  ------------------
14215|      0|	if (yych != '0') goto yy177;
  ------------------
  |  Branch (14215:6): [True: 0, False: 0]
  ------------------
14216|      5|yy575:
14217|      5|	YYDEBUG(575, *YYCURSOR);
14218|      5|	yyaccept = 4;
14219|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
14220|      5|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14220:6): [True: 0, False: 5]
  ------------------
14221|      5|	goto yy177;
14222|      7|yy576:
14223|      7|	YYDEBUG(576, *YYCURSOR);
14224|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
14225|      7|	if (yych <= '/') goto yy224;
  ------------------
  |  Branch (14225:6): [True: 0, False: 7]
  ------------------
14226|      7|	if (yych <= '9') goto yy746;
  ------------------
  |  Branch (14226:6): [True: 6, False: 1]
  ------------------
14227|      1|	goto yy224;
14228|      1|yy577:
14229|      0|	YYDEBUG(577, *YYCURSOR);
14230|      0|	yyaccept = 5;
14231|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14232|      0|	if (yych == '/') goto yy402;
  ------------------
  |  Branch (14232:6): [True: 0, False: 0]
  ------------------
14233|      0|	goto yy224;
14234|     20|yy578:
14235|     20|	YYDEBUG(578, *YYCURSOR);
14236|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
14237|     20|	if (yych == '/') goto yy747;
  ------------------
  |  Branch (14237:6): [True: 0, False: 20]
  ------------------
14238|     20|	goto yy59;
14239|     20|yy579:
14240|      8|	YYDEBUG(579, *YYCURSOR);
14241|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
14242|      8|	if (yych <= 'S') {
  ------------------
  |  Branch (14242:6): [True: 3, False: 5]
  ------------------
14243|      3|		if (yych == '/') goto yy747;
  ------------------
  |  Branch (14243:7): [True: 0, False: 3]
  ------------------
14244|      3|		goto yy59;
14245|      5|	} else {
14246|      5|		if (yych <= 'T') goto yy578;
  ------------------
  |  Branch (14246:7): [True: 0, False: 5]
  ------------------
14247|      5|		if (yych == 't') goto yy578;
  ------------------
  |  Branch (14247:7): [True: 3, False: 2]
  ------------------
14248|      2|		goto yy59;
14249|      5|	}
14250|      2|yy580:
14251|      2|	YYDEBUG(580, *YYCURSOR);
14252|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
14253|      2|	if (yych <= ',') goto yy59;
  ------------------
  |  Branch (14253:6): [True: 0, False: 2]
  ------------------
14254|      2|	if (yych <= '-') goto yy748;
  ------------------
  |  Branch (14254:6): [True: 0, False: 2]
  ------------------
14255|      2|	if (yych <= '.') goto yy396;
  ------------------
  |  Branch (14255:6): [True: 0, False: 2]
  ------------------
14256|      2|	goto yy59;
14257|      3|yy581:
14258|      3|	YYDEBUG(581, *YYCURSOR);
14259|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
14260|      3|	if (yych == '-') goto yy645;
  ------------------
  |  Branch (14260:6): [True: 2, False: 1]
  ------------------
14261|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14261:6): [True: 0, False: 1]
  ------------------
14262|      1|	if (yych <= '9') goto yy462;
  ------------------
  |  Branch (14262:6): [True: 1, False: 0]
  ------------------
14263|      0|	goto yy59;
14264|      0|yy582:
14265|      0|	YYDEBUG(582, *YYCURSOR);
14266|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14267|      0|	if (yych == '-') goto yy645;
  ------------------
  |  Branch (14267:6): [True: 0, False: 0]
  ------------------
14268|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14268:6): [True: 0, False: 0]
  ------------------
14269|      0|	if (yych <= '2') goto yy462;
  ------------------
  |  Branch (14269:6): [True: 0, False: 0]
  ------------------
14270|      0|	goto yy59;
14271|     66|yy583:
14272|     66|	YYDEBUG(583, *YYCURSOR);
14273|     66|	++YYCURSOR;
  ------------------
  |  |   89|     66|#define   YYCURSOR     cursor
  ------------------
14274|     66|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|     66|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|     66|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (14274:6): [True: 0, False: 66]
  ------------------
14275|     66|	yych = *YYCURSOR;
  ------------------
  |  |   89|     66|#define   YYCURSOR     cursor
  ------------------
14276|    158|yy584:
14277|    158|	YYDEBUG(584, *YYCURSOR);
14278|    158|	if (yych <= 'W') {
  ------------------
  |  Branch (14278:6): [True: 125, False: 33]
  ------------------
14279|    125|		if (yych <= 'G') {
  ------------------
  |  Branch (14279:7): [True: 105, False: 20]
  ------------------
14280|    105|			if (yych <= '.') {
  ------------------
  |  Branch (14280:8): [True: 72, False: 33]
  ------------------
14281|     72|				if (yych <= 0x1F) {
  ------------------
  |  Branch (14281:9): [True: 57, False: 15]
  ------------------
14282|     57|					if (yych == '\t') goto yy583;
  ------------------
  |  Branch (14282:10): [True: 52, False: 5]
  ------------------
14283|      5|					goto yy59;
14284|     57|				} else {
14285|     15|					if (yych <= ' ') goto yy583;
  ------------------
  |  Branch (14285:10): [True: 14, False: 1]
  ------------------
14286|      1|					if (yych <= ',') goto yy59;
  ------------------
  |  Branch (14286:10): [True: 1, False: 0]
  ------------------
14287|      0|					goto yy749;
14288|      1|				}
14289|     72|			} else {
14290|     33|				if (yych <= 'C') {
  ------------------
  |  Branch (14290:9): [True: 30, False: 3]
  ------------------
14291|     30|					if (yych == 'A') goto yy596;
  ------------------
  |  Branch (14291:10): [True: 27, False: 3]
  ------------------
14292|      3|					goto yy59;
14293|     30|				} else {
14294|      3|					if (yych <= 'D') goto yy597;
  ------------------
  |  Branch (14294:10): [True: 3, False: 0]
  ------------------
14295|      0|					if (yych == 'F') goto yy598;
  ------------------
  |  Branch (14295:10): [True: 0, False: 0]
  ------------------
14296|      0|					goto yy59;
14297|      0|				}
14298|     33|			}
14299|    105|		} else {
14300|     20|			if (yych <= 'N') {
  ------------------
  |  Branch (14300:8): [True: 8, False: 12]
  ------------------
14301|      8|				if (yych <= 'J') {
  ------------------
  |  Branch (14301:9): [True: 1, False: 7]
  ------------------
14302|      1|					if (yych <= 'H') goto yy79;
  ------------------
  |  Branch (14302:10): [True: 1, False: 0]
  ------------------
14303|      0|					if (yych <= 'I') goto yy599;
  ------------------
  |  Branch (14303:10): [True: 0, False: 0]
  ------------------
14304|      0|					goto yy601;
14305|      7|				} else {
14306|      7|					if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (14306:10): [True: 0, False: 7]
  ------------------
14307|      7|					if (yych <= 'M') goto yy602;
  ------------------
  |  Branch (14307:10): [True: 6, False: 1]
  ------------------
14308|      1|					goto yy603;
14309|      7|				}
14310|     12|			} else {
14311|     12|				if (yych <= 'S') {
  ------------------
  |  Branch (14311:9): [True: 3, False: 9]
  ------------------
14312|      3|					if (yych <= 'O') goto yy604;
  ------------------
  |  Branch (14312:10): [True: 0, False: 3]
  ------------------
14313|      3|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (14313:10): [True: 0, False: 3]
  ------------------
14314|      3|					goto yy605;
14315|      9|				} else {
14316|      9|					if (yych <= 'T') goto yy87;
  ------------------
  |  Branch (14316:10): [True: 7, False: 2]
  ------------------
14317|      2|					if (yych <= 'U') goto yy88;
  ------------------
  |  Branch (14317:10): [True: 2, False: 0]
  ------------------
14318|      0|					if (yych <= 'V') goto yy606;
  ------------------
  |  Branch (14318:10): [True: 0, False: 0]
  ------------------
14319|      0|					goto yy90;
14320|      0|				}
14321|     12|			}
14322|     20|		}
14323|    125|	} else {
14324|     33|		if (yych <= 'l') {
  ------------------
  |  Branch (14324:7): [True: 11, False: 22]
  ------------------
14325|     11|			if (yych <= 'd') {
  ------------------
  |  Branch (14325:8): [True: 9, False: 2]
  ------------------
14326|      9|				if (yych <= '`') {
  ------------------
  |  Branch (14326:9): [True: 1, False: 8]
  ------------------
14327|      1|					if (yych <= 'X') goto yy608;
  ------------------
  |  Branch (14327:10): [True: 1, False: 0]
  ------------------
14328|      0|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (14328:10): [True: 0, False: 0]
  ------------------
14329|      0|					goto yy59;
14330|      8|				} else {
14331|      8|					if (yych <= 'a') goto yy596;
  ------------------
  |  Branch (14331:10): [True: 5, False: 3]
  ------------------
14332|      3|					if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (14332:10): [True: 0, False: 3]
  ------------------
14333|      3|					goto yy597;
14334|      3|				}
14335|      9|			} else {
14336|      2|				if (yych <= 'g') {
  ------------------
  |  Branch (14336:9): [True: 1, False: 1]
  ------------------
14337|      1|					if (yych == 'f') goto yy598;
  ------------------
  |  Branch (14337:10): [True: 1, False: 0]
  ------------------
14338|      0|					goto yy59;
14339|      1|				} else {
14340|      1|					if (yych <= 'h') goto yy79;
  ------------------
  |  Branch (14340:10): [True: 0, False: 1]
  ------------------
14341|      1|					if (yych == 'j') goto yy601;
  ------------------
  |  Branch (14341:10): [True: 1, False: 0]
  ------------------
14342|      0|					goto yy59;
14343|      1|				}
14344|      2|			}
14345|     22|		} else {
14346|     22|			if (yych <= 'u') {
  ------------------
  |  Branch (14346:8): [True: 18, False: 4]
  ------------------
14347|     18|				if (yych <= 'o') {
  ------------------
  |  Branch (14347:9): [True: 9, False: 9]
  ------------------
14348|      9|					if (yych <= 'm') goto yy602;
  ------------------
  |  Branch (14348:10): [True: 4, False: 5]
  ------------------
14349|      5|					if (yych <= 'n') goto yy603;
  ------------------
  |  Branch (14349:10): [True: 3, False: 2]
  ------------------
14350|      2|					goto yy604;
14351|      9|				} else {
14352|      9|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (14352:10): [True: 0, False: 9]
  ------------------
14353|      9|					if (yych <= 's') goto yy605;
  ------------------
  |  Branch (14353:10): [True: 3, False: 6]
  ------------------
14354|      6|					if (yych <= 't') goto yy87;
  ------------------
  |  Branch (14354:10): [True: 1, False: 5]
  ------------------
14355|      5|					goto yy88;
14356|      6|				}
14357|     18|			} else {
14358|      4|				if (yych <= 'x') {
  ------------------
  |  Branch (14358:9): [True: 3, False: 1]
  ------------------
14359|      3|					if (yych == 'w') goto yy90;
  ------------------
  |  Branch (14359:10): [True: 2, False: 1]
  ------------------
14360|      1|					goto yy59;
14361|      3|				} else {
14362|      1|					if (yych <= 'y') goto yy92;
  ------------------
  |  Branch (14362:10): [True: 1, False: 0]
  ------------------
14363|      0|					if (yych == 0xC2) goto yy211;
  ------------------
  |  Branch (14363:10): [True: 0, False: 0]
  ------------------
14364|      0|					goto yy59;
14365|      0|				}
14366|      4|			}
14367|     22|		}
14368|     33|	}
14369|     27|yy585:
14370|     27|	YYDEBUG(585, *YYCURSOR);
14371|     27|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     27|#define   YYCURSOR     cursor
  ------------------
14372|     27|	switch (yych) {
14373|      1|	case '0':	goto yy751;
  ------------------
  |  Branch (14373:2): [True: 1, False: 26]
  ------------------
14374|      2|	case '1':	goto yy753;
  ------------------
  |  Branch (14374:2): [True: 2, False: 25]
  ------------------
14375|      3|	case '2':	goto yy754;
  ------------------
  |  Branch (14375:2): [True: 3, False: 24]
  ------------------
14376|      8|	case '3':	goto yy755;
  ------------------
  |  Branch (14376:2): [True: 8, False: 19]
  ------------------
14377|      0|	case '4':
  ------------------
  |  Branch (14377:2): [True: 0, False: 27]
  ------------------
14378|      0|	case '5':
  ------------------
  |  Branch (14378:2): [True: 0, False: 27]
  ------------------
14379|      0|	case '6':
  ------------------
  |  Branch (14379:2): [True: 0, False: 27]
  ------------------
14380|      1|	case '7':
  ------------------
  |  Branch (14380:2): [True: 1, False: 26]
  ------------------
14381|      1|	case '8':
  ------------------
  |  Branch (14381:2): [True: 0, False: 27]
  ------------------
14382|      1|	case '9':	goto yy756;
  ------------------
  |  Branch (14382:2): [True: 0, False: 27]
  ------------------
14383|      0|	case 'A':
  ------------------
  |  Branch (14383:2): [True: 0, False: 27]
  ------------------
14384|      1|	case 'a':	goto yy757;
  ------------------
  |  Branch (14384:2): [True: 1, False: 26]
  ------------------
14385|      1|	case 'D':
  ------------------
  |  Branch (14385:2): [True: 1, False: 26]
  ------------------
14386|      1|	case 'd':	goto yy758;
  ------------------
  |  Branch (14386:2): [True: 0, False: 27]
  ------------------
14387|      1|	case 'F':
  ------------------
  |  Branch (14387:2): [True: 1, False: 26]
  ------------------
14388|      1|	case 'f':	goto yy759;
  ------------------
  |  Branch (14388:2): [True: 0, False: 27]
  ------------------
14389|      0|	case 'J':
  ------------------
  |  Branch (14389:2): [True: 0, False: 27]
  ------------------
14390|      0|	case 'j':	goto yy760;
  ------------------
  |  Branch (14390:2): [True: 0, False: 27]
  ------------------
14391|      0|	case 'M':
  ------------------
  |  Branch (14391:2): [True: 0, False: 27]
  ------------------
14392|      0|	case 'm':	goto yy761;
  ------------------
  |  Branch (14392:2): [True: 0, False: 27]
  ------------------
14393|      0|	case 'N':
  ------------------
  |  Branch (14393:2): [True: 0, False: 27]
  ------------------
14394|      0|	case 'n':	goto yy762;
  ------------------
  |  Branch (14394:2): [True: 0, False: 27]
  ------------------
14395|      0|	case 'O':
  ------------------
  |  Branch (14395:2): [True: 0, False: 27]
  ------------------
14396|      0|	case 'o':	goto yy763;
  ------------------
  |  Branch (14396:2): [True: 0, False: 27]
  ------------------
14397|      1|	case 'S':
  ------------------
  |  Branch (14397:2): [True: 1, False: 26]
  ------------------
14398|      1|	case 's':	goto yy764;
  ------------------
  |  Branch (14398:2): [True: 0, False: 27]
  ------------------
14399|      3|	case 'W':	goto yy765;
  ------------------
  |  Branch (14399:2): [True: 3, False: 24]
  ------------------
14400|      5|	default:	goto yy750;
  ------------------
  |  Branch (14400:2): [True: 5, False: 22]
  ------------------
14401|     27|	}
14402|     22|yy586:
14403|     22|	YYDEBUG(586, *YYCURSOR);
14404|     22|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
14405|     22|	if (yych <= '/') goto yy750;
  ------------------
  |  Branch (14405:6): [True: 0, False: 22]
  ------------------
14406|     22|	if (yych <= '0') goto yy766;
  ------------------
  |  Branch (14406:6): [True: 12, False: 10]
  ------------------
14407|     10|	if (yych <= '2') goto yy767;
  ------------------
  |  Branch (14407:6): [True: 1, False: 9]
  ------------------
14408|      9|	if (yych <= '3') goto yy768;
  ------------------
  |  Branch (14408:6): [True: 0, False: 9]
  ------------------
14409|      9|	goto yy750;
14410|     32|yy587:
14411|     32|	YYDEBUG(587, *YYCURSOR);
14412|     32|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     32|#define   YYCURSOR     cursor
  ------------------
14413|     32|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14413:6): [True: 10, False: 22]
  ------------------
14414|     22|	if (yych <= '0') goto yy773;
  ------------------
  |  Branch (14414:6): [True: 6, False: 16]
  ------------------
14415|     16|	if (yych <= '1') goto yy774;
  ------------------
  |  Branch (14415:6): [True: 8, False: 8]
  ------------------
14416|      8|	if (yych <= '9') goto yy775;
  ------------------
  |  Branch (14416:6): [True: 2, False: 6]
  ------------------
14417|      6|	goto yy59;
14418|    152|yy588:
14419|    152|	YYDEBUG(588, *YYCURSOR);
14420|    152|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    152|#define   YYCURSOR     cursor
  ------------------
14421|    152|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14421:6): [True: 144, False: 8]
  ------------------
14422|    144|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14422:7): [True: 11, False: 133]
  ------------------
14423|    133|		if (yych <= '0') goto yy776;
  ------------------
  |  Branch (14423:7): [True: 100, False: 33]
  ------------------
14424|     33|		if (yych <= '9') goto yy778;
  ------------------
  |  Branch (14424:7): [True: 18, False: 15]
  ------------------
14425|     15|		goto yy196;
14426|     33|	} else {
14427|      8|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14427:7): [True: 0, False: 8]
  ------------------
14428|      8|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14428:7): [True: 0, False: 8]
  ------------------
14429|      8|		goto yy196;
14430|      8|	}
14431|     69|yy589:
14432|     69|	YYDEBUG(589, *YYCURSOR);
14433|     69|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     69|#define   YYCURSOR     cursor
  ------------------
14434|     69|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14434:6): [True: 68, False: 1]
  ------------------
14435|     68|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14435:7): [True: 2, False: 66]
  ------------------
14436|     66|		if (yych <= '2') goto yy778;
  ------------------
  |  Branch (14436:7): [True: 41, False: 25]
  ------------------
14437|     25|		if (yych <= '9') goto yy779;
  ------------------
  |  Branch (14437:7): [True: 20, False: 5]
  ------------------
14438|      5|		goto yy196;
14439|     25|	} else {
14440|      1|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14440:7): [True: 0, False: 1]
  ------------------
14441|      1|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14441:7): [True: 0, False: 1]
  ------------------
14442|      1|		goto yy196;
14443|      1|	}
14444|     66|yy590:
14445|     66|	YYDEBUG(590, *YYCURSOR);
14446|     66|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     66|#define   YYCURSOR     cursor
  ------------------
14447|     66|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14447:6): [True: 55, False: 11]
  ------------------
14448|     55|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14448:7): [True: 6, False: 49]
  ------------------
14449|     49|		if (yych <= '9') goto yy779;
  ------------------
  |  Branch (14449:7): [True: 42, False: 7]
  ------------------
14450|      7|		goto yy196;
14451|     49|	} else {
14452|     11|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14452:7): [True: 4, False: 7]
  ------------------
14453|      7|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14453:7): [True: 0, False: 7]
  ------------------
14454|      7|		goto yy196;
14455|      7|	}
14456|     17|yy591:
14457|     17|	YYDEBUG(591, *YYCURSOR);
14458|     17|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
14459|     17|	if (yych <= '9') {
  ------------------
  |  Branch (14459:6): [True: 15, False: 2]
  ------------------
14460|     15|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14460:7): [True: 0, False: 15]
  ------------------
14461|     15|		if (yych <= '5') goto yy779;
  ------------------
  |  Branch (14461:7): [True: 7, False: 8]
  ------------------
14462|      8|		if (yych <= '6') goto yy780;
  ------------------
  |  Branch (14462:7): [True: 5, False: 3]
  ------------------
14463|      3|		goto yy781;
14464|      8|	} else {
14465|      2|		if (yych <= 0xC2) {
  ------------------
  |  Branch (14465:7): [True: 1, False: 1]
  ------------------
14466|      1|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (14466:8): [True: 1, False: 0]
  ------------------
14467|      0|			goto yy97;
14468|      1|		} else {
14469|      1|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14469:8): [True: 0, False: 1]
  ------------------
14470|      1|			goto yy196;
14471|      1|		}
14472|      2|	}
14473|     20|yy592:
14474|     20|	YYDEBUG(592, *YYCURSOR);
14475|     20|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     20|#define   YYCURSOR     cursor
  ------------------
14476|     20|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14476:6): [True: 19, False: 1]
  ------------------
14477|     19|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14477:7): [True: 2, False: 17]
  ------------------
14478|     17|		if (yych <= '9') goto yy781;
  ------------------
  |  Branch (14478:7): [True: 17, False: 0]
  ------------------
14479|      0|		goto yy196;
14480|     17|	} else {
14481|      1|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14481:7): [True: 1, False: 0]
  ------------------
14482|      0|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14482:7): [True: 0, False: 0]
  ------------------
14483|      0|		goto yy196;
14484|      0|	}
14485|     14|yy593:
14486|     14|	YYDEBUG(593, *YYCURSOR);
14487|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
14488|     14|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14488:6): [True: 9, False: 5]
  ------------------
14489|      9|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14489:7): [True: 0, False: 9]
  ------------------
14490|      9|		if (yych <= '0') goto yy781;
  ------------------
  |  Branch (14490:7): [True: 3, False: 6]
  ------------------
14491|      6|		if (yych <= '9') goto yy782;
  ------------------
  |  Branch (14491:7): [True: 5, False: 1]
  ------------------
14492|      1|		goto yy196;
14493|      6|	} else {
14494|      5|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14494:7): [True: 0, False: 5]
  ------------------
14495|      5|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14495:7): [True: 0, False: 5]
  ------------------
14496|      5|		goto yy196;
14497|      5|	}
14498|    454|yy594:
14499|    454|	YYDEBUG(594, *YYCURSOR);
14500|    454|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    454|#define   YYCURSOR     cursor
  ------------------
14501|    454|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14501:6): [True: 444, False: 10]
  ------------------
14502|    444|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14502:7): [True: 41, False: 403]
  ------------------
14503|    403|		if (yych <= '9') goto yy782;
  ------------------
  |  Branch (14503:7): [True: 352, False: 51]
  ------------------
14504|     51|		goto yy196;
14505|    403|	} else {
14506|     10|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14506:7): [True: 2, False: 8]
  ------------------
14507|      8|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14507:7): [True: 1, False: 7]
  ------------------
14508|      7|		goto yy196;
14509|      8|	}
14510|      1|yy595:
14511|      1|	YYDEBUG(595, *YYCURSOR);
14512|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14513|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14513:6): [True: 0, False: 1]
  ------------------
14514|      1|	if (yych <= '0') goto yy783;
  ------------------
  |  Branch (14514:6): [True: 1, False: 0]
  ------------------
14515|      0|	if (yych <= '1') goto yy784;
  ------------------
  |  Branch (14515:6): [True: 0, False: 0]
  ------------------
14516|      0|	goto yy59;
14517|     32|yy596:
14518|     32|	YYDEBUG(596, *YYCURSOR);
14519|     32|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     32|#define   YYCURSOR     cursor
  ------------------
14520|     32|	if (yych <= 'U') {
  ------------------
  |  Branch (14520:6): [True: 7, False: 25]
  ------------------
14521|      7|		if (yych == 'P') goto yy785;
  ------------------
  |  Branch (14521:7): [True: 0, False: 7]
  ------------------
14522|      7|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (14522:7): [True: 7, False: 0]
  ------------------
14523|      0|		goto yy786;
14524|     25|	} else {
14525|     25|		if (yych <= 'p') {
  ------------------
  |  Branch (14525:7): [True: 21, False: 4]
  ------------------
14526|     21|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (14526:8): [True: 2, False: 19]
  ------------------
14527|     19|			goto yy785;
14528|     21|		} else {
14529|      4|			if (yych == 'u') goto yy786;
  ------------------
  |  Branch (14529:8): [True: 0, False: 4]
  ------------------
14530|      4|			goto yy59;
14531|      4|		}
14532|     25|	}
14533|      6|yy597:
14534|      6|	YYDEBUG(597, *YYCURSOR);
14535|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
14536|      6|	if (yych <= 'E') {
  ------------------
  |  Branch (14536:6): [True: 6, False: 0]
  ------------------
14537|      6|		if (yych == 'A') goto yy242;
  ------------------
  |  Branch (14537:7): [True: 0, False: 6]
  ------------------
14538|      6|		if (yych <= 'D') goto yy59;
  ------------------
  |  Branch (14538:7): [True: 6, False: 0]
  ------------------
14539|      0|		goto yy787;
14540|      6|	} else {
14541|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (14541:7): [True: 0, False: 0]
  ------------------
14542|      0|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (14542:8): [True: 0, False: 0]
  ------------------
14543|      0|			goto yy242;
14544|      0|		} else {
14545|      0|			if (yych == 'e') goto yy787;
  ------------------
  |  Branch (14545:8): [True: 0, False: 0]
  ------------------
14546|      0|			goto yy59;
14547|      0|		}
14548|      0|	}
14549|      1|yy598:
14550|      1|	YYDEBUG(598, *YYCURSOR);
14551|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14552|      1|	if (yych <= 'R') {
  ------------------
  |  Branch (14552:6): [True: 1, False: 0]
  ------------------
14553|      1|		if (yych <= 'N') {
  ------------------
  |  Branch (14553:7): [True: 1, False: 0]
  ------------------
14554|      1|			if (yych == 'E') goto yy788;
  ------------------
  |  Branch (14554:8): [True: 0, False: 1]
  ------------------
14555|      1|			goto yy59;
14556|      1|		} else {
14557|      0|			if (yych <= 'O') goto yy245;
  ------------------
  |  Branch (14557:8): [True: 0, False: 0]
  ------------------
14558|      0|			if (yych <= 'Q') goto yy59;
  ------------------
  |  Branch (14558:8): [True: 0, False: 0]
  ------------------
14559|      0|			goto yy246;
14560|      0|		}
14561|      1|	} else {
14562|      0|		if (yych <= 'n') {
  ------------------
  |  Branch (14562:7): [True: 0, False: 0]
  ------------------
14563|      0|			if (yych == 'e') goto yy788;
  ------------------
  |  Branch (14563:8): [True: 0, False: 0]
  ------------------
14564|      0|			goto yy59;
14565|      0|		} else {
14566|      0|			if (yych <= 'o') goto yy245;
  ------------------
  |  Branch (14566:8): [True: 0, False: 0]
  ------------------
14567|      0|			if (yych == 'r') goto yy246;
  ------------------
  |  Branch (14567:8): [True: 0, False: 0]
  ------------------
14568|      0|			goto yy59;
14569|      0|		}
14570|      0|	}
14571|      0|yy599:
14572|      0|	YYDEBUG(599, *YYCURSOR);
14573|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14574|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (14574:6): [True: 0, False: 0]
  ------------------
14575|      0|		if (yych == 'I') goto yy789;
  ------------------
  |  Branch (14575:7): [True: 0, False: 0]
  ------------------
14576|      0|	} else {
14577|      0|		if (yych == 'W') goto yy600;
  ------------------
  |  Branch (14577:7): [True: 0, False: 0]
  ------------------
14578|      0|		if (yych <= 'X') goto yy790;
  ------------------
  |  Branch (14578:7): [True: 0, False: 0]
  ------------------
14579|      0|	}
14580|     10|yy600:
14581|     10|	YYDEBUG(600, *YYCURSOR);
14582|     10|#line 1618 "ext/date/lib/parse_date.re"
14583|     10|	{
14584|     10|		int length = 0;
14585|     10|		DEBUG_OUTPUT("datenodayrev");
14586|     10|		TIMELIB_INIT;
  ------------------
  |  |  107|     10|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
14587|     10|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     10|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      5|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      5|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      5|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 5, False: 5]
  |  |  ------------------
  ------------------
14588|      5|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
14589|      5|		s->time->m = timelib_get_month(&ptr);
14590|      5|		s->time->d = 1;
14591|      5|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      5|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      5|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      5|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 5]
  |  |  |  Branch (112:32): [True: 5, False: 0]
  |  |  ------------------
  |  |  113|      5|	/*	(x) = 0; */          \
  |  |  114|      5|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|      5|}
  ------------------
14592|      5|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      5|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      5|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14593|      5|		return TIMELIB_DATE_NO_DAY;
  ------------------
  |  |   67|      5|#define TIMELIB_DATE_NO_DAY    275
  ------------------
14594|     10|	}
14595|      0|#line 14596 "ext/date/lib/parse_date.c"
14596|      1|yy601:
14597|      1|	YYDEBUG(601, *YYCURSOR);
14598|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14599|      1|	if (yych <= 'U') {
  ------------------
  |  Branch (14599:6): [True: 0, False: 1]
  ------------------
14600|      0|		if (yych == 'A') goto yy791;
  ------------------
  |  Branch (14600:7): [True: 0, False: 0]
  ------------------
14601|      0|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (14601:7): [True: 0, False: 0]
  ------------------
14602|      0|		goto yy792;
14603|      1|	} else {
14604|      1|		if (yych <= 'a') {
  ------------------
  |  Branch (14604:7): [True: 0, False: 1]
  ------------------
14605|      0|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (14605:8): [True: 0, False: 0]
  ------------------
14606|      0|			goto yy791;
14607|      1|		} else {
14608|      1|			if (yych == 'u') goto yy792;
  ------------------
  |  Branch (14608:8): [True: 0, False: 1]
  ------------------
14609|      1|			goto yy59;
14610|      1|		}
14611|      1|	}
14612|     10|yy602:
14613|     10|	YYDEBUG(602, *YYCURSOR);
14614|     10|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
14615|     10|	if (yych <= 'S') {
  ------------------
  |  Branch (14615:6): [True: 8, False: 2]
  ------------------
14616|      8|		if (yych <= 'I') {
  ------------------
  |  Branch (14616:7): [True: 7, False: 1]
  ------------------
14617|      7|			if (yych == 'A') goto yy793;
  ------------------
  |  Branch (14617:8): [True: 0, False: 7]
  ------------------
14618|      7|			if (yych <= 'H') goto yy59;
  ------------------
  |  Branch (14618:8): [True: 7, False: 0]
  ------------------
14619|      0|			goto yy257;
14620|      7|		} else {
14621|      1|			if (yych == 'O') goto yy258;
  ------------------
  |  Branch (14621:8): [True: 0, False: 1]
  ------------------
14622|      1|			if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (14622:8): [True: 1, False: 0]
  ------------------
14623|      0|			goto yy259;
14624|      1|		}
14625|      8|	} else {
14626|      2|		if (yych <= 'i') {
  ------------------
  |  Branch (14626:7): [True: 0, False: 2]
  ------------------
14627|      0|			if (yych == 'a') goto yy793;
  ------------------
  |  Branch (14627:8): [True: 0, False: 0]
  ------------------
14628|      0|			if (yych <= 'h') goto yy59;
  ------------------
  |  Branch (14628:8): [True: 0, False: 0]
  ------------------
14629|      0|			goto yy257;
14630|      2|		} else {
14631|      2|			if (yych <= 'o') {
  ------------------
  |  Branch (14631:8): [True: 0, False: 2]
  ------------------
14632|      0|				if (yych <= 'n') goto yy59;
  ------------------
  |  Branch (14632:9): [True: 0, False: 0]
  ------------------
14633|      0|				goto yy258;
14634|      2|			} else {
14635|      2|				if (yych == 's') goto yy259;
  ------------------
  |  Branch (14635:9): [True: 0, False: 2]
  ------------------
14636|      2|				goto yy59;
14637|      2|			}
14638|      2|		}
14639|      2|	}
14640|      8|yy603:
14641|      8|	YYDEBUG(603, *YYCURSOR);
14642|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
14643|      8|	if (yych == 'O') goto yy794;
  ------------------
  |  Branch (14643:6): [True: 0, False: 8]
  ------------------
14644|      8|	if (yych == 'o') goto yy794;
  ------------------
  |  Branch (14644:6): [True: 1, False: 7]
  ------------------
14645|      7|	goto yy59;
14646|      7|yy604:
14647|      2|	YYDEBUG(604, *YYCURSOR);
14648|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
14649|      2|	if (yych == 'C') goto yy795;
  ------------------
  |  Branch (14649:6): [True: 0, False: 2]
  ------------------
14650|      2|	if (yych == 'c') goto yy795;
  ------------------
  |  Branch (14650:6): [True: 0, False: 2]
  ------------------
14651|      2|	goto yy59;
14652|      6|yy605:
14653|      6|	YYDEBUG(605, *YYCURSOR);
14654|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
14655|      6|	if (yych <= 'U') {
  ------------------
  |  Branch (14655:6): [True: 3, False: 3]
  ------------------
14656|      3|		if (yych <= 'D') {
  ------------------
  |  Branch (14656:7): [True: 3, False: 0]
  ------------------
14657|      3|			if (yych == 'A') goto yy263;
  ------------------
  |  Branch (14657:8): [True: 0, False: 3]
  ------------------
14658|      3|			goto yy59;
14659|      3|		} else {
14660|      0|			if (yych <= 'E') goto yy796;
  ------------------
  |  Branch (14660:8): [True: 0, False: 0]
  ------------------
14661|      0|			if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (14661:8): [True: 0, False: 0]
  ------------------
14662|      0|			goto yy265;
14663|      0|		}
14664|      3|	} else {
14665|      3|		if (yych <= 'd') {
  ------------------
  |  Branch (14665:7): [True: 0, False: 3]
  ------------------
14666|      0|			if (yych == 'a') goto yy263;
  ------------------
  |  Branch (14666:8): [True: 0, False: 0]
  ------------------
14667|      0|			goto yy59;
14668|      3|		} else {
14669|      3|			if (yych <= 'e') goto yy796;
  ------------------
  |  Branch (14669:8): [True: 0, False: 3]
  ------------------
14670|      3|			if (yych == 'u') goto yy265;
  ------------------
  |  Branch (14670:8): [True: 2, False: 1]
  ------------------
14671|      1|			goto yy59;
14672|      3|		}
14673|      3|	}
14674|      1|yy606:
14675|      1|	YYDEBUG(606, *YYCURSOR);
14676|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14677|      1|	if (yych == 'I') goto yy608;
  ------------------
  |  Branch (14677:6): [True: 0, False: 1]
  ------------------
14678|      1|	goto yy600;
14679|      2|yy607:
14680|      2|	YYDEBUG(607, *YYCURSOR);
14681|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
14682|      2|	if (yych <= '5') {
  ------------------
  |  Branch (14682:6): [True: 2, False: 0]
  ------------------
14683|      2|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14683:7): [True: 0, False: 2]
  ------------------
14684|      2|		if (yych <= '0') goto yy797;
  ------------------
  |  Branch (14684:7): [True: 0, False: 2]
  ------------------
14685|      2|		if (yych <= '4') goto yy798;
  ------------------
  |  Branch (14685:7): [True: 2, False: 0]
  ------------------
14686|      0|		goto yy799;
14687|      2|	} else {
14688|      0|		if (yych <= 'E') {
  ------------------
  |  Branch (14688:7): [True: 0, False: 0]
  ------------------
14689|      0|			if (yych <= 'D') goto yy59;
  ------------------
  |  Branch (14689:8): [True: 0, False: 0]
  ------------------
14690|      0|			goto yy269;
14691|      0|		} else {
14692|      0|			if (yych == 'e') goto yy269;
  ------------------
  |  Branch (14692:8): [True: 0, False: 0]
  ------------------
14693|      0|			goto yy59;
14694|      0|		}
14695|      0|	}
14696|      1|yy608:
14697|      1|	YYDEBUG(608, *YYCURSOR);
14698|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14699|      1|	if (yych == 'I') goto yy789;
  ------------------
  |  Branch (14699:6): [True: 0, False: 1]
  ------------------
14700|      1|	goto yy600;
14701|     78|yy609:
14702|     78|	YYDEBUG(609, *YYCURSOR);
14703|     78|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     78|#define   YYCURSOR     cursor
  ------------------
14704|     78|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14704:6): [True: 73, False: 5]
  ------------------
14705|     73|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14705:7): [True: 2, False: 71]
  ------------------
14706|     71|		if (yych <= '0') goto yy800;
  ------------------
  |  Branch (14706:7): [True: 28, False: 43]
  ------------------
14707|     43|		if (yych <= '9') goto yy801;
  ------------------
  |  Branch (14707:7): [True: 39, False: 4]
  ------------------
14708|      4|		goto yy196;
14709|     43|	} else {
14710|      5|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14710:7): [True: 2, False: 3]
  ------------------
14711|      3|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14711:7): [True: 0, False: 3]
  ------------------
14712|      3|		goto yy196;
14713|      3|	}
14714|     42|yy610:
14715|     42|	YYDEBUG(610, *YYCURSOR);
14716|     42|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     42|#define   YYCURSOR     cursor
  ------------------
14717|     42|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14717:6): [True: 41, False: 1]
  ------------------
14718|     41|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14718:7): [True: 3, False: 38]
  ------------------
14719|     38|		if (yych <= '2') goto yy801;
  ------------------
  |  Branch (14719:7): [True: 12, False: 26]
  ------------------
14720|     26|		if (yych <= '9') goto yy802;
  ------------------
  |  Branch (14720:7): [True: 23, False: 3]
  ------------------
14721|      3|		goto yy196;
14722|     26|	} else {
14723|      1|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14723:7): [True: 0, False: 1]
  ------------------
14724|      1|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14724:7): [True: 0, False: 1]
  ------------------
14725|      1|		goto yy196;
14726|      1|	}
14727|     28|yy611:
14728|     28|	YYDEBUG(611, *YYCURSOR);
14729|     28|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     28|#define   YYCURSOR     cursor
  ------------------
14730|     28|	if (yych <= 0xC1) {
  ------------------
  |  Branch (14730:6): [True: 25, False: 3]
  ------------------
14731|     25|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14731:7): [True: 2, False: 23]
  ------------------
14732|     23|		if (yych <= '9') goto yy802;
  ------------------
  |  Branch (14732:7): [True: 17, False: 6]
  ------------------
14733|      6|		goto yy196;
14734|     23|	} else {
14735|      3|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (14735:7): [True: 1, False: 2]
  ------------------
14736|      2|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14736:7): [True: 1, False: 1]
  ------------------
14737|      1|		goto yy196;
14738|      2|	}
14739|     49|yy612:
14740|     49|	YYDEBUG(612, *YYCURSOR);
14741|     49|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     49|#define   YYCURSOR     cursor
  ------------------
14742|     49|	if (yych <= '9') {
  ------------------
  |  Branch (14742:6): [True: 42, False: 7]
  ------------------
14743|     42|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (14743:7): [True: 2, False: 40]
  ------------------
14744|     40|		if (yych <= '5') goto yy802;
  ------------------
  |  Branch (14744:7): [True: 20, False: 20]
  ------------------
14745|     20|		if (yych <= '6') goto yy803;
  ------------------
  |  Branch (14745:7): [True: 6, False: 14]
  ------------------
14746|     14|		goto yy782;
14747|     20|	} else {
14748|      7|		if (yych <= 0xC2) {
  ------------------
  |  Branch (14748:7): [True: 3, False: 4]
  ------------------
14749|      3|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (14749:8): [True: 3, False: 0]
  ------------------
14750|      0|			goto yy97;
14751|      4|		} else {
14752|      4|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (14752:8): [True: 0, False: 4]
  ------------------
14753|      4|			goto yy196;
14754|      4|		}
14755|      7|	}
14756|      0|yy613:
14757|      0|	YYDEBUG(613, *YYCURSOR);
14758|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14759|      0|	if (yych == 'L') goto yy253;
  ------------------
  |  Branch (14759:6): [True: 0, False: 0]
  ------------------
14760|      0|	if (yych == 'l') goto yy253;
  ------------------
  |  Branch (14760:6): [True: 0, False: 0]
  ------------------
14761|      0|	goto yy59;
14762|      0|yy614:
14763|      0|	YYDEBUG(614, *YYCURSOR);
14764|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14765|      0|	if (yych == 'S') goto yy804;
  ------------------
  |  Branch (14765:6): [True: 0, False: 0]
  ------------------
14766|      0|	if (yych == 's') goto yy804;
  ------------------
  |  Branch (14766:6): [True: 0, False: 0]
  ------------------
14767|      0|	goto yy59;
14768|      0|yy615:
14769|      0|	YYDEBUG(615, *YYCURSOR);
14770|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14771|      0|	goto yy260;
14772|      1|yy616:
14773|      1|	YYDEBUG(616, *YYCURSOR);
14774|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14775|      1|	if (yych == 'M') goto yy626;
  ------------------
  |  Branch (14775:6): [True: 0, False: 1]
  ------------------
14776|      1|	if (yych == 'm') goto yy626;
  ------------------
  |  Branch (14776:6): [True: 0, False: 1]
  ------------------
14777|      1|	goto yy59;
14778|      1|yy617:
14779|      0|	YYDEBUG(617, *YYCURSOR);
14780|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14781|      0|	if (yych == 'U') goto yy620;
  ------------------
  |  Branch (14781:6): [True: 0, False: 0]
  ------------------
14782|      0|	if (yych == 'u') goto yy620;
  ------------------
  |  Branch (14782:6): [True: 0, False: 0]
  ------------------
14783|      0|	goto yy59;
14784|      0|yy618:
14785|      0|	YYDEBUG(618, *YYCURSOR);
14786|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14787|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (14787:6): [True: 0, False: 0]
  ------------------
14788|      0|		if (yych == 'H') goto yy805;
  ------------------
  |  Branch (14788:7): [True: 0, False: 0]
  ------------------
14789|      0|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (14789:7): [True: 0, False: 0]
  ------------------
14790|      0|		goto yy806;
14791|      0|	} else {
14792|      0|		if (yych <= 'h') {
  ------------------
  |  Branch (14792:7): [True: 0, False: 0]
  ------------------
14793|      0|			if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (14793:8): [True: 0, False: 0]
  ------------------
14794|      0|			goto yy805;
14795|      0|		} else {
14796|      0|			if (yych == 'n') goto yy806;
  ------------------
  |  Branch (14796:8): [True: 0, False: 0]
  ------------------
14797|      0|			goto yy59;
14798|      0|		}
14799|      0|	}
14800|      6|yy619:
14801|      6|	YYDEBUG(619, *YYCURSOR);
14802|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
14803|      6|	if (yych <= '/') goto yy251;
  ------------------
  |  Branch (14803:6): [True: 2, False: 4]
  ------------------
14804|      4|	if (yych <= '9') goto yy807;
  ------------------
  |  Branch (14804:6): [True: 2, False: 2]
  ------------------
14805|      2|	goto yy251;
14806|      2|yy620:
14807|      0|	YYDEBUG(620, *YYCURSOR);
14808|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14809|      0|	if (yych == 'A') goto yy808;
  ------------------
  |  Branch (14809:6): [True: 0, False: 0]
  ------------------
14810|      0|	if (yych == 'a') goto yy808;
  ------------------
  |  Branch (14810:6): [True: 0, False: 0]
  ------------------
14811|      0|	goto yy59;
14812|      0|yy621:
14813|      0|	YYDEBUG(621, *YYCURSOR);
14814|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14815|      0|	if (yych == 'H') goto yy253;
  ------------------
  |  Branch (14815:6): [True: 0, False: 0]
  ------------------
14816|      0|	if (yych == 'h') goto yy253;
  ------------------
  |  Branch (14816:6): [True: 0, False: 0]
  ------------------
14817|      0|	goto yy59;
14818|      0|yy622:
14819|      0|	YYDEBUG(622, *YYCURSOR);
14820|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14821|      0|	if (yych == 'O') goto yy809;
  ------------------
  |  Branch (14821:6): [True: 0, False: 0]
  ------------------
14822|      0|	if (yych == 'o') goto yy809;
  ------------------
  |  Branch (14822:6): [True: 0, False: 0]
  ------------------
14823|      0|	goto yy59;
14824|      0|yy623:
14825|      0|	YYDEBUG(623, *YYCURSOR);
14826|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14827|      0|	if (yych == 'I') goto yy809;
  ------------------
  |  Branch (14827:6): [True: 0, False: 0]
  ------------------
14828|      0|	if (yych == 'i') goto yy809;
  ------------------
  |  Branch (14828:6): [True: 0, False: 0]
  ------------------
14829|      0|	goto yy59;
14830|      0|yy624:
14831|      0|	YYDEBUG(624, *YYCURSOR);
14832|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14833|      0|	if (yych == 'T') goto yy810;
  ------------------
  |  Branch (14833:6): [True: 0, False: 0]
  ------------------
14834|      0|	if (yych == 't') goto yy810;
  ------------------
  |  Branch (14834:6): [True: 0, False: 0]
  ------------------
14835|      0|	goto yy59;
14836|      0|yy625:
14837|      0|	YYDEBUG(625, *YYCURSOR);
14838|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14839|      0|	if (yych == 'H') goto yy425;
  ------------------
  |  Branch (14839:6): [True: 0, False: 0]
  ------------------
14840|      0|	if (yych == 'h') goto yy425;
  ------------------
  |  Branch (14840:6): [True: 0, False: 0]
  ------------------
14841|      0|	goto yy59;
14842|      0|yy626:
14843|      0|	YYDEBUG(626, *YYCURSOR);
14844|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14845|      0|	if (yych == 'B') goto yy811;
  ------------------
  |  Branch (14845:6): [True: 0, False: 0]
  ------------------
14846|      0|	if (yych == 'b') goto yy811;
  ------------------
  |  Branch (14846:6): [True: 0, False: 0]
  ------------------
14847|      0|	goto yy59;
14848|      0|yy627:
14849|      0|	YYDEBUG(627, *YYCURSOR);
14850|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14851|      0|	if (yych == 'R') goto yy630;
  ------------------
  |  Branch (14851:6): [True: 0, False: 0]
  ------------------
14852|      0|	if (yych == 'r') goto yy630;
  ------------------
  |  Branch (14852:6): [True: 0, False: 0]
  ------------------
14853|      0|	goto yy59;
14854|      0|yy628:
14855|      0|	YYDEBUG(628, *YYCURSOR);
14856|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14857|      0|	if (yych == 'N') goto yy812;
  ------------------
  |  Branch (14857:6): [True: 0, False: 0]
  ------------------
14858|      0|	if (yych == 'n') goto yy812;
  ------------------
  |  Branch (14858:6): [True: 0, False: 0]
  ------------------
14859|      0|	goto yy59;
14860|      1|yy629:
14861|      1|	YYDEBUG(629, *YYCURSOR);
14862|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14863|      1|	if (yych == 'S') goto yy630;
  ------------------
  |  Branch (14863:6): [True: 0, False: 1]
  ------------------
14864|      1|	if (yych != 's') goto yy59;
  ------------------
  |  Branch (14864:6): [True: 1, False: 0]
  ------------------
14865|      0|yy630:
14866|      0|	YYDEBUG(630, *YYCURSOR);
14867|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14868|      0|	if (yych == 'D') goto yy198;
  ------------------
  |  Branch (14868:6): [True: 0, False: 0]
  ------------------
14869|      0|	if (yych == 'd') goto yy198;
  ------------------
  |  Branch (14869:6): [True: 0, False: 0]
  ------------------
14870|      0|	goto yy59;
14871|      3|yy631:
14872|      3|	YYDEBUG(631, *YYCURSOR);
14873|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
14874|      3|	if (yych == 'E') goto yy629;
  ------------------
  |  Branch (14874:6): [True: 0, False: 3]
  ------------------
14875|      3|	if (yych == 'e') goto yy629;
  ------------------
  |  Branch (14875:6): [True: 1, False: 2]
  ------------------
14876|      2|	goto yy59;
14877|      2|yy632:
14878|      0|	YYDEBUG(632, *YYCURSOR);
14879|      0|	yyaccept = 6;
14880|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14881|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (14881:6): [True: 0, False: 0]
  ------------------
14882|      0|		if (yych == 'D') goto yy198;
  ------------------
  |  Branch (14882:7): [True: 0, False: 0]
  ------------------
14883|      0|		if (yych <= 'R') goto yy260;
  ------------------
  |  Branch (14883:7): [True: 0, False: 0]
  ------------------
14884|      0|		goto yy615;
14885|      0|	} else {
14886|      0|		if (yych <= 'd') {
  ------------------
  |  Branch (14886:7): [True: 0, False: 0]
  ------------------
14887|      0|			if (yych <= 'c') goto yy260;
  ------------------
  |  Branch (14887:8): [True: 0, False: 0]
  ------------------
14888|      0|			goto yy198;
14889|      0|		} else {
14890|      0|			if (yych == 's') goto yy615;
  ------------------
  |  Branch (14890:8): [True: 0, False: 0]
  ------------------
14891|      0|			goto yy260;
14892|      0|		}
14893|      0|	}
14894|      8|yy633:
14895|      8|	YYDEBUG(633, *YYCURSOR);
14896|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
14897|      8|	if (yych <= ',') goto yy59;
  ------------------
  |  Branch (14897:6): [True: 0, False: 8]
  ------------------
14898|      8|	if (yych <= '.') goto yy396;
  ------------------
  |  Branch (14898:6): [True: 0, False: 8]
  ------------------
14899|      8|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14899:6): [True: 0, False: 8]
  ------------------
14900|      8|	if (yych <= '9') goto yy635;
  ------------------
  |  Branch (14900:6): [True: 0, False: 8]
  ------------------
14901|      8|	goto yy59;
14902|      8|yy634:
14903|      0|	YYDEBUG(634, *YYCURSOR);
14904|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14905|      0|	if (yych <= ',') goto yy59;
  ------------------
  |  Branch (14905:6): [True: 0, False: 0]
  ------------------
14906|      0|	if (yych <= '.') goto yy396;
  ------------------
  |  Branch (14906:6): [True: 0, False: 0]
  ------------------
14907|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14907:6): [True: 0, False: 0]
  ------------------
14908|      0|	if (yych >= '3') goto yy59;
  ------------------
  |  Branch (14908:6): [True: 0, False: 0]
  ------------------
14909|      0|yy635:
14910|      0|	YYDEBUG(635, *YYCURSOR);
14911|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14912|      0|	if (yych <= ',') goto yy59;
  ------------------
  |  Branch (14912:6): [True: 0, False: 0]
  ------------------
14913|      0|	if (yych <= '.') goto yy396;
  ------------------
  |  Branch (14913:6): [True: 0, False: 0]
  ------------------
14914|      0|	goto yy59;
14915|     15|yy636:
14916|     15|	YYDEBUG(636, *YYCURSOR);
14917|     15|	yyaccept = 4;
14918|     15|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     15|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
14919|     15|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14919:6): [True: 0, False: 15]
  ------------------
14920|     15|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (14920:6): [True: 2, False: 13]
  ------------------
14921|     13|	if (yych <= '9') goto yy813;
  ------------------
  |  Branch (14921:6): [True: 10, False: 3]
  ------------------
14922|      3|	goto yy177;
14923|      4|yy637:
14924|      4|	YYDEBUG(637, *YYCURSOR);
14925|      4|	yyaccept = 4;
14926|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
14927|      4|	if (yych <= '/') {
  ------------------
  |  Branch (14927:6): [True: 0, False: 4]
  ------------------
14928|      0|		if (yych == '.') goto yy744;
  ------------------
  |  Branch (14928:7): [True: 0, False: 0]
  ------------------
14929|      0|		goto yy177;
14930|      4|	} else {
14931|      4|		if (yych <= '0') goto yy813;
  ------------------
  |  Branch (14931:7): [True: 0, False: 4]
  ------------------
14932|      4|		if (yych <= '9') goto yy738;
  ------------------
  |  Branch (14932:7): [True: 4, False: 0]
  ------------------
14933|      0|		goto yy177;
14934|      4|	}
14935|    147|yy638:
14936|    147|	YYDEBUG(638, *YYCURSOR);
14937|    147|	++YYCURSOR;
  ------------------
  |  |   89|    147|#define   YYCURSOR     cursor
  ------------------
14938|    147|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|    147|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|    147|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (14938:6): [True: 0, False: 147]
  ------------------
14939|    147|	yych = *YYCURSOR;
  ------------------
  |  |   89|    147|#define   YYCURSOR     cursor
  ------------------
14940|    147|	YYDEBUG(639, *YYCURSOR);
14941|    147|	if (yych <= 'A') {
  ------------------
  |  Branch (14941:6): [True: 131, False: 16]
  ------------------
14942|    131|		if (yych <= 0x1F) {
  ------------------
  |  Branch (14942:7): [True: 24, False: 107]
  ------------------
14943|     24|			if (yych == '\t') goto yy638;
  ------------------
  |  Branch (14943:8): [True: 20, False: 4]
  ------------------
14944|      4|			goto yy59;
14945|    107|		} else {
14946|    107|			if (yych <= ' ') goto yy638;
  ------------------
  |  Branch (14946:8): [True: 87, False: 20]
  ------------------
14947|     20|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (14947:8): [True: 19, False: 1]
  ------------------
14948|      1|			goto yy106;
14949|     20|		}
14950|    131|	} else {
14951|     16|		if (yych <= '`') {
  ------------------
  |  Branch (14951:7): [True: 0, False: 16]
  ------------------
14952|      0|			if (yych == 'P') goto yy106;
  ------------------
  |  Branch (14952:8): [True: 0, False: 0]
  ------------------
14953|      0|			goto yy59;
14954|     16|		} else {
14955|     16|			if (yych <= 'a') goto yy106;
  ------------------
  |  Branch (14955:8): [True: 0, False: 16]
  ------------------
14956|     16|			if (yych == 'p') goto yy106;
  ------------------
  |  Branch (14956:8): [True: 0, False: 16]
  ------------------
14957|     16|			goto yy59;
14958|     16|		}
14959|     16|	}
14960|      1|yy640:
14961|      1|	YYDEBUG(640, *YYCURSOR);
14962|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14963|      1|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      1|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (14963:6): [True: 0, False: 1]
  ------------------
14964|      1|	yych = *YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
14965|      1|	if (yych == 0xA0) goto yy814;
  ------------------
  |  Branch (14965:6): [True: 1, False: 0]
  ------------------
14966|      0|	goto yy59;
14967|      0|yy641:
14968|      0|	YYDEBUG(641, *YYCURSOR);
14969|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14970|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (14970:6): [True: 0, False: 0]
  ------------------
14971|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
14972|      0|	if (yych == 0x80) goto yy815;
  ------------------
  |  Branch (14972:6): [True: 0, False: 0]
  ------------------
14973|      0|	goto yy59;
14974|     13|yy642:
14975|     13|	YYDEBUG(642, *YYCURSOR);
14976|     13|	yyaccept = 4;
14977|     13|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     13|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
14978|     13|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14978:6): [True: 0, False: 13]
  ------------------
14979|     13|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (14979:6): [True: 0, False: 13]
  ------------------
14980|     13|	if (yych <= '9') goto yy816;
  ------------------
  |  Branch (14980:6): [True: 11, False: 2]
  ------------------
14981|      2|	goto yy177;
14982|      3|yy643:
14983|      3|	YYDEBUG(643, *YYCURSOR);
14984|      3|	yyaccept = 4;
14985|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
14986|      3|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (14986:6): [True: 0, False: 3]
  ------------------
14987|      3|	if (yych == '0') goto yy816;
  ------------------
  |  Branch (14987:6): [True: 0, False: 3]
  ------------------
14988|      3|	goto yy177;
14989|      3|yy644:
14990|      2|	YYDEBUG(644, *YYCURSOR);
14991|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
14992|      2|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (14992:6): [True: 0, False: 2]
  ------------------
14993|      2|	if (yych <= '5') goto yy817;
  ------------------
  |  Branch (14993:6): [True: 2, False: 0]
  ------------------
14994|      0|	if (yych <= '6') goto yy818;
  ------------------
  |  Branch (14994:6): [True: 0, False: 0]
  ------------------
14995|      0|	if (yych <= '9') goto yy575;
  ------------------
  |  Branch (14995:6): [True: 0, False: 0]
  ------------------
14996|      0|	goto yy59;
14997|      5|yy645:
14998|      5|	YYDEBUG(645, *YYCURSOR);
14999|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
15000|      5|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (15000:6): [True: 2, False: 3]
  ------------------
15001|      3|	if (yych <= '2') goto yy819;
  ------------------
  |  Branch (15001:6): [True: 1, False: 2]
  ------------------
15002|      2|	if (yych <= '3') goto yy820;
  ------------------
  |  Branch (15002:6): [True: 2, False: 0]
  ------------------
15003|      0|	if (yych <= '9') goto yy821;
  ------------------
  |  Branch (15003:6): [True: 0, False: 0]
  ------------------
15004|      0|	goto yy59;
15005|     12|yy646:
15006|     12|	YYDEBUG(646, *YYCURSOR);
15007|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
15008|     12|	if (yych == '-') goto yy822;
  ------------------
  |  Branch (15008:6): [True: 1, False: 11]
  ------------------
15009|     11|	goto yy59;
15010|     16|yy647:
15011|     16|	YYDEBUG(647, *YYCURSOR);
15012|     16|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     16|#define   YYCURSOR     cursor
  ------------------
15013|     16|	if (yych == 'R') goto yy823;
  ------------------
  |  Branch (15013:6): [True: 13, False: 3]
  ------------------
15014|      3|	if (yych == 'r') goto yy823;
  ------------------
  |  Branch (15014:6): [True: 0, False: 3]
  ------------------
15015|      3|	goto yy59;
15016|      3|yy648:
15017|      0|	YYDEBUG(648, *YYCURSOR);
15018|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15019|      0|	if (yych == 'G') goto yy823;
  ------------------
  |  Branch (15019:6): [True: 0, False: 0]
  ------------------
15020|      0|	if (yych == 'g') goto yy823;
  ------------------
  |  Branch (15020:6): [True: 0, False: 0]
  ------------------
15021|      0|	goto yy59;
15022|      0|yy649:
15023|      0|	YYDEBUG(649, *YYCURSOR);
15024|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15025|      0|	if (yych == 'C') goto yy823;
  ------------------
  |  Branch (15025:6): [True: 0, False: 0]
  ------------------
15026|      0|	if (yych == 'c') goto yy823;
  ------------------
  |  Branch (15026:6): [True: 0, False: 0]
  ------------------
15027|      0|	goto yy59;
15028|      1|yy650:
15029|      1|	YYDEBUG(650, *YYCURSOR);
15030|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15031|      1|	if (yych == 'B') goto yy823;
  ------------------
  |  Branch (15031:6): [True: 0, False: 1]
  ------------------
15032|      1|	if (yych == 'b') goto yy823;
  ------------------
  |  Branch (15032:6): [True: 0, False: 1]
  ------------------
15033|      1|	goto yy59;
15034|      1|yy651:
15035|      0|	YYDEBUG(651, *YYCURSOR);
15036|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15037|      0|	if (yych == 'N') goto yy823;
  ------------------
  |  Branch (15037:6): [True: 0, False: 0]
  ------------------
15038|      0|	if (yych == 'n') goto yy823;
  ------------------
  |  Branch (15038:6): [True: 0, False: 0]
  ------------------
15039|      0|	goto yy59;
15040|      2|yy652:
15041|      2|	YYDEBUG(652, *YYCURSOR);
15042|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
15043|      2|	if (yych <= 'N') {
  ------------------
  |  Branch (15043:6): [True: 0, False: 2]
  ------------------
15044|      0|		if (yych == 'L') goto yy823;
  ------------------
  |  Branch (15044:7): [True: 0, False: 0]
  ------------------
15045|      0|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (15045:7): [True: 0, False: 0]
  ------------------
15046|      0|		goto yy823;
15047|      2|	} else {
15048|      2|		if (yych <= 'l') {
  ------------------
  |  Branch (15048:7): [True: 2, False: 0]
  ------------------
15049|      2|			if (yych <= 'k') goto yy59;
  ------------------
  |  Branch (15049:8): [True: 0, False: 2]
  ------------------
15050|      2|			goto yy823;
15051|      2|		} else {
15052|      0|			if (yych == 'n') goto yy823;
  ------------------
  |  Branch (15052:8): [True: 0, False: 0]
  ------------------
15053|      0|			goto yy59;
15054|      0|		}
15055|      2|	}
15056|      0|yy653:
15057|      0|	YYDEBUG(653, *YYCURSOR);
15058|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15059|      0|	if (yych <= 'Y') {
  ------------------
  |  Branch (15059:6): [True: 0, False: 0]
  ------------------
15060|      0|		if (yych == 'R') goto yy823;
  ------------------
  |  Branch (15060:7): [True: 0, False: 0]
  ------------------
15061|      0|		if (yych <= 'X') goto yy59;
  ------------------
  |  Branch (15061:7): [True: 0, False: 0]
  ------------------
15062|      0|		goto yy823;
15063|      0|	} else {
15064|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (15064:7): [True: 0, False: 0]
  ------------------
15065|      0|			if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (15065:8): [True: 0, False: 0]
  ------------------
15066|      0|			goto yy823;
15067|      0|		} else {
15068|      0|			if (yych == 'y') goto yy823;
  ------------------
  |  Branch (15068:8): [True: 0, False: 0]
  ------------------
15069|      0|			goto yy59;
15070|      0|		}
15071|      0|	}
15072|      9|yy654:
15073|      9|	YYDEBUG(654, *YYCURSOR);
15074|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
15075|      9|	if (yych == 'V') goto yy823;
  ------------------
  |  Branch (15075:6): [True: 0, False: 9]
  ------------------
15076|      9|	if (yych == 'v') goto yy823;
  ------------------
  |  Branch (15076:6): [True: 0, False: 9]
  ------------------
15077|      9|	goto yy59;
15078|      9|yy655:
15079|      6|	YYDEBUG(655, *YYCURSOR);
15080|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
15081|      6|	if (yych == 'T') goto yy823;
  ------------------
  |  Branch (15081:6): [True: 6, False: 0]
  ------------------
15082|      0|	if (yych == 't') goto yy823;
  ------------------
  |  Branch (15082:6): [True: 0, False: 0]
  ------------------
15083|      0|	goto yy59;
15084|      4|yy656:
15085|      4|	YYDEBUG(656, *YYCURSOR);
15086|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
15087|      4|	if (yych == 'P') goto yy824;
  ------------------
  |  Branch (15087:6): [True: 2, False: 2]
  ------------------
15088|      2|	if (yych == 'p') goto yy824;
  ------------------
  |  Branch (15088:6): [True: 1, False: 1]
  ------------------
15089|      1|	goto yy59;
15090|     11|yy657:
15091|     11|	YYDEBUG(657, *YYCURSOR);
15092|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
15093|     11|	if (yych <= '/') goto yy290;
  ------------------
  |  Branch (15093:6): [True: 1, False: 10]
  ------------------
15094|     10|	if (yych <= '9') goto yy825;
  ------------------
  |  Branch (15094:6): [True: 8, False: 2]
  ------------------
15095|      2|	goto yy290;
15096|    838|yy658:
15097|    838|	YYDEBUG(658, *YYCURSOR);
15098|    838|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    838|#define   YYCURSOR     cursor
  ------------------
15099|    838|	if (yych <= '@') {
  ------------------
  |  Branch (15099:6): [True: 186, False: 652]
  ------------------
15100|    186|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (15100:7): [True: 4, False: 182]
  ------------------
15101|    182|		goto yy20;
15102|    652|	} else {
15103|    652|		if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15103:7): [True: 188, False: 464]
  ------------------
15104|    464|		if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15104:7): [True: 6, False: 458]
  ------------------
15105|    458|		if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15105:7): [True: 412, False: 46]
  ------------------
15106|     46|		goto yy20;
15107|    458|	}
15108|      2|yy659:
15109|      2|	YYDEBUG(659, *YYCURSOR);
15110|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
15111|      2|	if (yych <= '9') {
  ------------------
  |  Branch (15111:6): [True: 2, False: 0]
  ------------------
15112|      2|		if (yych <= ' ') {
  ------------------
  |  Branch (15112:7): [True: 0, False: 2]
  ------------------
15113|      0|			if (yych <= 0x08) {
  ------------------
  |  Branch (15113:8): [True: 0, False: 0]
  ------------------
15114|      0|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (15114:9): [True: 0, False: 0]
  ------------------
15115|      0|				goto yy59;
15116|      0|			} else {
15117|      0|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (15117:9): [True: 0, False: 0]
  ------------------
15118|      0|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (15118:9): [True: 0, False: 0]
  ------------------
15119|      0|				goto yy326;
15120|      0|			}
15121|      2|		} else {
15122|      2|			if (yych <= '-') {
  ------------------
  |  Branch (15122:8): [True: 2, False: 0]
  ------------------
15123|      2|				if (yych == ',') goto yy326;
  ------------------
  |  Branch (15123:9): [True: 0, False: 2]
  ------------------
15124|      2|				goto yy59;
15125|      2|			} else {
15126|      0|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (15126:9): [True: 0, False: 0]
  ------------------
15127|      0|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (15127:9): [True: 0, False: 0]
  ------------------
15128|      0|				goto yy827;
15129|      0|			}
15130|      2|		}
15131|      2|	} else {
15132|      0|		if (yych <= 'm') {
  ------------------
  |  Branch (15132:7): [True: 0, False: 0]
  ------------------
15133|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (15133:8): [True: 0, False: 0]
  ------------------
15134|      0|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (15134:9): [True: 0, False: 0]
  ------------------
15135|      0|				goto yy326;
15136|      0|			} else {
15137|      0|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (15137:9): [True: 0, False: 0]
  ------------------
15138|      0|				goto yy59;
15139|      0|			}
15140|      0|		} else {
15141|      0|			if (yych <= 'r') {
  ------------------
  |  Branch (15141:8): [True: 0, False: 0]
  ------------------
15142|      0|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (15142:9): [True: 0, False: 0]
  ------------------
15143|      0|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (15143:9): [True: 0, False: 0]
  ------------------
15144|      0|				goto yy329;
15145|      0|			} else {
15146|      0|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (15146:9): [True: 0, False: 0]
  ------------------
15147|      0|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (15147:9): [True: 0, False: 0]
  ------------------
15148|      0|				goto yy59;
15149|      0|			}
15150|      0|		}
15151|      0|	}
15152|      0|yy660:
15153|      0|	YYDEBUG(660, *YYCURSOR);
15154|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15155|      0|	if (yych <= '1') {
  ------------------
  |  Branch (15155:6): [True: 0, False: 0]
  ------------------
15156|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (15156:7): [True: 0, False: 0]
  ------------------
15157|      0|			if (yych <= 0x08) {
  ------------------
  |  Branch (15157:8): [True: 0, False: 0]
  ------------------
15158|      0|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (15158:9): [True: 0, False: 0]
  ------------------
15159|      0|				goto yy59;
15160|      0|			} else {
15161|      0|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (15161:9): [True: 0, False: 0]
  ------------------
15162|      0|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (15162:9): [True: 0, False: 0]
  ------------------
15163|      0|				goto yy326;
15164|      0|			}
15165|      0|		} else {
15166|      0|			if (yych <= '-') {
  ------------------
  |  Branch (15166:8): [True: 0, False: 0]
  ------------------
15167|      0|				if (yych == ',') goto yy326;
  ------------------
  |  Branch (15167:9): [True: 0, False: 0]
  ------------------
15168|      0|				goto yy59;
15169|      0|			} else {
15170|      0|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (15170:9): [True: 0, False: 0]
  ------------------
15171|      0|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (15171:9): [True: 0, False: 0]
  ------------------
15172|      0|				goto yy827;
15173|      0|			}
15174|      0|		}
15175|      0|	} else {
15176|      0|		if (yych <= 'm') {
  ------------------
  |  Branch (15176:7): [True: 0, False: 0]
  ------------------
15177|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (15177:8): [True: 0, False: 0]
  ------------------
15178|      0|				if (yych <= '9') goto yy332;
  ------------------
  |  Branch (15178:9): [True: 0, False: 0]
  ------------------
15179|      0|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (15179:9): [True: 0, False: 0]
  ------------------
15180|      0|				goto yy326;
15181|      0|			} else {
15182|      0|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (15182:9): [True: 0, False: 0]
  ------------------
15183|      0|				goto yy59;
15184|      0|			}
15185|      0|		} else {
15186|      0|			if (yych <= 'r') {
  ------------------
  |  Branch (15186:8): [True: 0, False: 0]
  ------------------
15187|      0|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (15187:9): [True: 0, False: 0]
  ------------------
15188|      0|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (15188:9): [True: 0, False: 0]
  ------------------
15189|      0|				goto yy329;
15190|      0|			} else {
15191|      0|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (15191:9): [True: 0, False: 0]
  ------------------
15192|      0|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (15192:9): [True: 0, False: 0]
  ------------------
15193|      0|				goto yy59;
15194|      0|			}
15195|      0|		}
15196|      0|	}
15197|      0|yy661:
15198|      0|	YYDEBUG(661, *YYCURSOR);
15199|      0|	yyaccept = 7;
15200|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15201|      0|	if (yych <= ',') {
  ------------------
  |  Branch (15201:6): [True: 0, False: 0]
  ------------------
15202|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (15202:7): [True: 0, False: 0]
  ------------------
15203|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (15203:8): [True: 0, False: 0]
  ------------------
15204|      0|			goto yy295;
15205|      0|		} else {
15206|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (15206:8): [True: 0, False: 0]
  ------------------
15207|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15207:8): [True: 0, False: 0]
  ------------------
15208|      0|			goto yy295;
15209|      0|		}
15210|      0|	} else {
15211|      0|		if (yych <= '@') {
  ------------------
  |  Branch (15211:7): [True: 0, False: 0]
  ------------------
15212|      0|			if (yych == '/') goto yy295;
  ------------------
  |  Branch (15212:8): [True: 0, False: 0]
  ------------------
15213|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (15213:8): [True: 0, False: 0]
  ------------------
15214|      0|			goto yy295;
15215|      0|		} else {
15216|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15216:8): [True: 0, False: 0]
  ------------------
15217|      0|			if (yych <= '`') goto yy295;
  ------------------
  |  Branch (15217:8): [True: 0, False: 0]
  ------------------
15218|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15218:8): [True: 0, False: 0]
  ------------------
15219|      0|			goto yy295;
15220|      0|		}
15221|      0|	}
15222|      0|yy662:
15223|      0|	YYDEBUG(662, *YYCURSOR);
15224|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15225|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (15225:6): [True: 0, False: 0]
  ------------------
15226|      0|		if (yych <= ')') {
  ------------------
  |  Branch (15226:7): [True: 0, False: 0]
  ------------------
15227|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15227:8): [True: 0, False: 0]
  ------------------
15228|      0|			goto yy115;
15229|      0|		} else {
15230|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15230:8): [True: 0, False: 0]
  ------------------
15231|      0|			if (yych <= 'S') goto yy826;
  ------------------
  |  Branch (15231:8): [True: 0, False: 0]
  ------------------
15232|      0|			goto yy828;
15233|      0|		}
15234|      0|	} else {
15235|      0|		if (yych <= 's') {
  ------------------
  |  Branch (15235:7): [True: 0, False: 0]
  ------------------
15236|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15236:8): [True: 0, False: 0]
  ------------------
15237|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15237:8): [True: 0, False: 0]
  ------------------
15238|      0|			goto yy826;
15239|      0|		} else {
15240|      0|			if (yych <= 't') goto yy828;
  ------------------
  |  Branch (15240:8): [True: 0, False: 0]
  ------------------
15241|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15241:8): [True: 0, False: 0]
  ------------------
15242|      0|			goto yy20;
15243|      0|		}
15244|      0|	}
15245|     82|yy663:
15246|     82|	YYDEBUG(663, *YYCURSOR);
15247|     82|	yyaccept = 2;
15248|     82|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     82|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     82|#define   YYCURSOR     cursor
  ------------------
15249|     82|	if (yych <= '/') {
  ------------------
  |  Branch (15249:6): [True: 12, False: 70]
  ------------------
15250|     12|		if (yych <= ',') {
  ------------------
  |  Branch (15250:7): [True: 7, False: 5]
  ------------------
15251|      7|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15251:8): [True: 0, False: 7]
  ------------------
15252|      7|			goto yy20;
15253|      7|		} else {
15254|      5|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (15254:8): [True: 0, False: 5]
  ------------------
15255|      5|			goto yy297;
15256|      5|		}
15257|     70|	} else {
15258|     70|		if (yych <= '^') {
  ------------------
  |  Branch (15258:7): [True: 7, False: 63]
  ------------------
15259|      7|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15259:8): [True: 7, False: 0]
  ------------------
15260|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15260:8): [True: 0, False: 0]
  ------------------
15261|      0|			goto yy20;
15262|     63|		} else {
15263|     63|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (15263:8): [True: 2, False: 61]
  ------------------
15264|     61|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15264:8): [True: 0, False: 61]
  ------------------
15265|     61|			if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15265:8): [True: 57, False: 4]
  ------------------
15266|      4|			goto yy20;
15267|     61|		}
15268|     70|	}
15269|      4|yy664:
15270|      4|	YYDEBUG(664, *YYCURSOR);
15271|      4|	yyaccept = 7;
15272|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
15273|      4|	if (yych <= '.') {
  ------------------
  |  Branch (15273:6): [True: 0, False: 4]
  ------------------
15274|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (15274:7): [True: 0, False: 0]
  ------------------
15275|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (15275:8): [True: 0, False: 0]
  ------------------
15276|      0|			if (yych <= 0x1F) goto yy295;
  ------------------
  |  Branch (15276:8): [True: 0, False: 0]
  ------------------
15277|      0|			goto yy142;
15278|      0|		} else {
15279|      0|			if (yych <= ')') {
  ------------------
  |  Branch (15279:8): [True: 0, False: 0]
  ------------------
15280|      0|				if (yych <= '(') goto yy295;
  ------------------
  |  Branch (15280:9): [True: 0, False: 0]
  ------------------
15281|      0|				goto yy115;
15282|      0|			} else {
15283|      0|				if (yych <= ',') goto yy295;
  ------------------
  |  Branch (15283:9): [True: 0, False: 0]
  ------------------
15284|      0|				if (yych <= '-') goto yy700;
  ------------------
  |  Branch (15284:9): [True: 0, False: 0]
  ------------------
15285|      0|				goto yy142;
15286|      0|			}
15287|      0|		}
15288|      4|	} else {
15289|      4|		if (yych <= 'Z') {
  ------------------
  |  Branch (15289:7): [True: 0, False: 4]
  ------------------
15290|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (15290:8): [True: 0, False: 0]
  ------------------
15291|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (15291:8): [True: 0, False: 0]
  ------------------
15292|      0|			if (yych <= '@') goto yy295;
  ------------------
  |  Branch (15292:8): [True: 0, False: 0]
  ------------------
15293|      0|			goto yy826;
15294|      4|		} else {
15295|      4|			if (yych <= '_') {
  ------------------
  |  Branch (15295:8): [True: 1, False: 3]
  ------------------
15296|      1|				if (yych <= '^') goto yy295;
  ------------------
  |  Branch (15296:9): [True: 1, False: 0]
  ------------------
15297|      0|				goto yy297;
15298|      3|			} else {
15299|      3|				if (yych <= '`') goto yy295;
  ------------------
  |  Branch (15299:9): [True: 0, False: 3]
  ------------------
15300|      3|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15300:9): [True: 0, False: 3]
  ------------------
15301|      3|				goto yy295;
15302|      3|			}
15303|      4|		}
15304|      4|	}
15305|      0|yy665:
15306|      0|	YYDEBUG(665, *YYCURSOR);
15307|      0|	yyaccept = 2;
15308|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15309|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (15309:6): [True: 0, False: 0]
  ------------------
15310|      0|		if (yych <= '-') {
  ------------------
  |  Branch (15310:7): [True: 0, False: 0]
  ------------------
15311|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15311:8): [True: 0, False: 0]
  ------------------
15312|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (15312:8): [True: 0, False: 0]
  ------------------
15313|      0|			goto yy297;
15314|      0|		} else {
15315|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (15315:8): [True: 0, False: 0]
  ------------------
15316|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15316:8): [True: 0, False: 0]
  ------------------
15317|      0|			goto yy826;
15318|      0|		}
15319|      0|	} else {
15320|      0|		if (yych <= '_') {
  ------------------
  |  Branch (15320:7): [True: 0, False: 0]
  ------------------
15321|      0|			if (yych <= 'T') goto yy828;
  ------------------
  |  Branch (15321:8): [True: 0, False: 0]
  ------------------
15322|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15322:8): [True: 0, False: 0]
  ------------------
15323|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (15323:8): [True: 0, False: 0]
  ------------------
15324|      0|			goto yy297;
15325|      0|		} else {
15326|      0|			if (yych <= 's') {
  ------------------
  |  Branch (15326:8): [True: 0, False: 0]
  ------------------
15327|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15327:9): [True: 0, False: 0]
  ------------------
15328|      0|				goto yy829;
15329|      0|			} else {
15330|      0|				if (yych <= 't') goto yy830;
  ------------------
  |  Branch (15330:9): [True: 0, False: 0]
  ------------------
15331|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15331:9): [True: 0, False: 0]
  ------------------
15332|      0|				goto yy20;
15333|      0|			}
15334|      0|		}
15335|      0|	}
15336|      0|yy666:
15337|      0|	YYDEBUG(666, *YYCURSOR);
15338|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15339|      0|	if (yych == 'O') goto yy831;
  ------------------
  |  Branch (15339:6): [True: 0, False: 0]
  ------------------
15340|      0|	if (yych == 'o') goto yy831;
  ------------------
  |  Branch (15340:6): [True: 0, False: 0]
  ------------------
15341|      0|	goto yy59;
15342|      1|yy667:
15343|      1|	YYDEBUG(667, *YYCURSOR);
15344|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15345|      1|	if (yych <= 'B') {
  ------------------
  |  Branch (15345:6): [True: 0, False: 1]
  ------------------
15346|      0|		if (yych <= ')') {
  ------------------
  |  Branch (15346:7): [True: 0, False: 0]
  ------------------
15347|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15347:8): [True: 0, False: 0]
  ------------------
15348|      0|			goto yy115;
15349|      0|		} else {
15350|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15350:8): [True: 0, False: 0]
  ------------------
15351|      0|			if (yych <= 'A') goto yy826;
  ------------------
  |  Branch (15351:8): [True: 0, False: 0]
  ------------------
15352|      0|			goto yy832;
15353|      0|		}
15354|      1|	} else {
15355|      1|		if (yych <= 'a') {
  ------------------
  |  Branch (15355:7): [True: 0, False: 1]
  ------------------
15356|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15356:8): [True: 0, False: 0]
  ------------------
15357|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15357:8): [True: 0, False: 0]
  ------------------
15358|      0|			goto yy826;
15359|      1|		} else {
15360|      1|			if (yych <= 'b') goto yy832;
  ------------------
  |  Branch (15360:8): [True: 0, False: 1]
  ------------------
15361|      1|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15361:8): [True: 1, False: 0]
  ------------------
15362|      0|			goto yy20;
15363|      1|		}
15364|      1|	}
15365|      0|yy668:
15366|      0|	YYDEBUG(668, *YYCURSOR);
15367|      0|	yyaccept = 2;
15368|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15369|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (15369:6): [True: 0, False: 0]
  ------------------
15370|      0|		if (yych <= '-') {
  ------------------
  |  Branch (15370:7): [True: 0, False: 0]
  ------------------
15371|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15371:8): [True: 0, False: 0]
  ------------------
15372|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (15372:8): [True: 0, False: 0]
  ------------------
15373|      0|			goto yy297;
15374|      0|		} else {
15375|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (15375:8): [True: 0, False: 0]
  ------------------
15376|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15376:8): [True: 0, False: 0]
  ------------------
15377|      0|			goto yy826;
15378|      0|		}
15379|      0|	} else {
15380|      0|		if (yych <= '_') {
  ------------------
  |  Branch (15380:7): [True: 0, False: 0]
  ------------------
15381|      0|			if (yych <= 'B') goto yy832;
  ------------------
  |  Branch (15381:8): [True: 0, False: 0]
  ------------------
15382|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15382:8): [True: 0, False: 0]
  ------------------
15383|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (15383:8): [True: 0, False: 0]
  ------------------
15384|      0|			goto yy297;
15385|      0|		} else {
15386|      0|			if (yych <= 'a') {
  ------------------
  |  Branch (15386:8): [True: 0, False: 0]
  ------------------
15387|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15387:9): [True: 0, False: 0]
  ------------------
15388|      0|				goto yy829;
15389|      0|			} else {
15390|      0|				if (yych <= 'b') goto yy833;
  ------------------
  |  Branch (15390:9): [True: 0, False: 0]
  ------------------
15391|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15391:9): [True: 0, False: 0]
  ------------------
15392|      0|				goto yy20;
15393|      0|			}
15394|      0|		}
15395|      0|	}
15396|      0|yy669:
15397|      0|	YYDEBUG(669, *YYCURSOR);
15398|      0|	yyaccept = 2;
15399|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15400|      0|	if (yych <= 'H') {
  ------------------
  |  Branch (15400:6): [True: 0, False: 0]
  ------------------
15401|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (15401:7): [True: 0, False: 0]
  ------------------
15402|      0|			if (yych == '\t') goto yy834;
  ------------------
  |  Branch (15402:8): [True: 0, False: 0]
  ------------------
15403|      0|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (15403:8): [True: 0, False: 0]
  ------------------
15404|      0|			goto yy834;
15405|      0|		} else {
15406|      0|			if (yych <= ')') {
  ------------------
  |  Branch (15406:8): [True: 0, False: 0]
  ------------------
15407|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15407:9): [True: 0, False: 0]
  ------------------
15408|      0|				goto yy115;
15409|      0|			} else {
15410|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15410:9): [True: 0, False: 0]
  ------------------
15411|      0|				if (yych <= 'G') goto yy826;
  ------------------
  |  Branch (15411:9): [True: 0, False: 0]
  ------------------
15412|      0|				goto yy836;
15413|      0|			}
15414|      0|		}
15415|      0|	} else {
15416|      0|		if (yych <= 'z') {
  ------------------
  |  Branch (15416:7): [True: 0, False: 0]
  ------------------
15417|      0|			if (yych <= '`') {
  ------------------
  |  Branch (15417:8): [True: 0, False: 0]
  ------------------
15418|      0|				if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15418:9): [True: 0, False: 0]
  ------------------
15419|      0|				goto yy20;
15420|      0|			} else {
15421|      0|				if (yych == 'h') goto yy836;
  ------------------
  |  Branch (15421:9): [True: 0, False: 0]
  ------------------
15422|      0|				goto yy826;
15423|      0|			}
15424|      0|		} else {
15425|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (15425:8): [True: 0, False: 0]
  ------------------
15426|      0|				if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (15426:9): [True: 0, False: 0]
  ------------------
15427|      0|				goto yy837;
15428|      0|			} else {
15429|      0|				if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (15429:9): [True: 0, False: 0]
  ------------------
15430|      0|				goto yy20;
15431|      0|			}
15432|      0|		}
15433|      0|	}
15434|      1|yy670:
15435|      1|	YYDEBUG(670, *YYCURSOR);
15436|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15437|      1|	if (yych <= 'N') {
  ------------------
  |  Branch (15437:6): [True: 0, False: 1]
  ------------------
15438|      0|		if (yych <= ')') {
  ------------------
  |  Branch (15438:7): [True: 0, False: 0]
  ------------------
15439|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15439:8): [True: 0, False: 0]
  ------------------
15440|      0|			goto yy115;
15441|      0|		} else {
15442|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15442:8): [True: 0, False: 0]
  ------------------
15443|      0|			if (yych <= 'M') goto yy826;
  ------------------
  |  Branch (15443:8): [True: 0, False: 0]
  ------------------
15444|      0|			goto yy839;
15445|      0|		}
15446|      1|	} else {
15447|      1|		if (yych <= 'm') {
  ------------------
  |  Branch (15447:7): [True: 0, False: 1]
  ------------------
15448|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15448:8): [True: 0, False: 0]
  ------------------
15449|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15449:8): [True: 0, False: 0]
  ------------------
15450|      0|			goto yy826;
15451|      1|		} else {
15452|      1|			if (yych <= 'n') goto yy839;
  ------------------
  |  Branch (15452:8): [True: 0, False: 1]
  ------------------
15453|      1|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15453:8): [True: 1, False: 0]
  ------------------
15454|      0|			goto yy20;
15455|      1|		}
15456|      1|	}
15457|      1|yy671:
15458|      1|	YYDEBUG(671, *YYCURSOR);
15459|      1|	yyaccept = 2;
15460|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15461|      1|	if (yych <= 'G') {
  ------------------
  |  Branch (15461:6): [True: 0, False: 1]
  ------------------
15462|      0|		if (yych <= ')') {
  ------------------
  |  Branch (15462:7): [True: 0, False: 0]
  ------------------
15463|      0|			if (yych <= 0x1F) {
  ------------------
  |  Branch (15463:8): [True: 0, False: 0]
  ------------------
15464|      0|				if (yych == '\t') goto yy834;
  ------------------
  |  Branch (15464:9): [True: 0, False: 0]
  ------------------
15465|      0|				goto yy20;
15466|      0|			} else {
15467|      0|				if (yych <= ' ') goto yy834;
  ------------------
  |  Branch (15467:9): [True: 0, False: 0]
  ------------------
15468|      0|				if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15468:9): [True: 0, False: 0]
  ------------------
15469|      0|				goto yy115;
15470|      0|			}
15471|      0|		} else {
15472|      0|			if (yych <= '.') {
  ------------------
  |  Branch (15472:8): [True: 0, False: 0]
  ------------------
15473|      0|				if (yych == '-') goto yy297;
  ------------------
  |  Branch (15473:9): [True: 0, False: 0]
  ------------------
15474|      0|				goto yy20;
15475|      0|			} else {
15476|      0|				if (yych <= '/') goto yy297;
  ------------------
  |  Branch (15476:9): [True: 0, False: 0]
  ------------------
15477|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15477:9): [True: 0, False: 0]
  ------------------
15478|      0|				goto yy826;
15479|      0|			}
15480|      0|		}
15481|      1|	} else {
15482|      1|		if (yych <= 'g') {
  ------------------
  |  Branch (15482:7): [True: 0, False: 1]
  ------------------
15483|      0|			if (yych <= '^') {
  ------------------
  |  Branch (15483:8): [True: 0, False: 0]
  ------------------
15484|      0|				if (yych <= 'H') goto yy836;
  ------------------
  |  Branch (15484:9): [True: 0, False: 0]
  ------------------
15485|      0|				if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15485:9): [True: 0, False: 0]
  ------------------
15486|      0|				goto yy20;
15487|      0|			} else {
15488|      0|				if (yych <= '_') goto yy297;
  ------------------
  |  Branch (15488:9): [True: 0, False: 0]
  ------------------
15489|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15489:9): [True: 0, False: 0]
  ------------------
15490|      0|				goto yy829;
15491|      0|			}
15492|      1|		} else {
15493|      1|			if (yych <= 0xC1) {
  ------------------
  |  Branch (15493:8): [True: 0, False: 1]
  ------------------
15494|      0|				if (yych <= 'h') goto yy840;
  ------------------
  |  Branch (15494:9): [True: 0, False: 0]
  ------------------
15495|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15495:9): [True: 0, False: 0]
  ------------------
15496|      0|				goto yy20;
15497|      1|			} else {
15498|      1|				if (yych <= 0xC2) goto yy837;
  ------------------
  |  Branch (15498:9): [True: 0, False: 1]
  ------------------
15499|      1|				if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (15499:9): [True: 0, False: 1]
  ------------------
15500|      1|				goto yy20;
15501|      1|			}
15502|      1|		}
15503|      1|	}
15504|      8|yy672:
15505|      8|	YYDEBUG(672, *YYCURSOR);
15506|      8|	yyaccept = 2;
15507|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
15508|      8|	if (yych <= 'M') {
  ------------------
  |  Branch (15508:6): [True: 4, False: 4]
  ------------------
15509|      4|		if (yych <= '-') {
  ------------------
  |  Branch (15509:7): [True: 0, False: 4]
  ------------------
15510|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15510:8): [True: 0, False: 0]
  ------------------
15511|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (15511:8): [True: 0, False: 0]
  ------------------
15512|      0|			goto yy297;
15513|      4|		} else {
15514|      4|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (15514:8): [True: 0, False: 4]
  ------------------
15515|      4|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15515:8): [True: 2, False: 2]
  ------------------
15516|      2|			goto yy826;
15517|      4|		}
15518|      4|	} else {
15519|      4|		if (yych <= '_') {
  ------------------
  |  Branch (15519:7): [True: 0, False: 4]
  ------------------
15520|      0|			if (yych <= 'N') goto yy839;
  ------------------
  |  Branch (15520:8): [True: 0, False: 0]
  ------------------
15521|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15521:8): [True: 0, False: 0]
  ------------------
15522|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (15522:8): [True: 0, False: 0]
  ------------------
15523|      0|			goto yy297;
15524|      4|		} else {
15525|      4|			if (yych <= 'm') {
  ------------------
  |  Branch (15525:8): [True: 0, False: 4]
  ------------------
15526|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15526:9): [True: 0, False: 0]
  ------------------
15527|      0|				goto yy829;
15528|      4|			} else {
15529|      4|				if (yych <= 'n') goto yy841;
  ------------------
  |  Branch (15529:9): [True: 4, False: 0]
  ------------------
15530|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15530:9): [True: 0, False: 0]
  ------------------
15531|      0|				goto yy20;
15532|      0|			}
15533|      4|		}
15534|      4|	}
15535|      0|yy673:
15536|      0|	YYDEBUG(673, *YYCURSOR);
15537|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15538|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (15538:6): [True: 0, False: 0]
  ------------------
15539|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (15539:7): [True: 0, False: 0]
  ------------------
15540|      0|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15540:7): [True: 0, False: 0]
  ------------------
15541|      0|		goto yy842;
15542|      0|	} else {
15543|      0|		if (yych <= '`') {
  ------------------
  |  Branch (15543:7): [True: 0, False: 0]
  ------------------
15544|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15544:8): [True: 0, False: 0]
  ------------------
15545|      0|			goto yy20;
15546|      0|		} else {
15547|      0|			if (yych <= 'a') goto yy842;
  ------------------
  |  Branch (15547:8): [True: 0, False: 0]
  ------------------
15548|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15548:8): [True: 0, False: 0]
  ------------------
15549|      0|			goto yy20;
15550|      0|		}
15551|      0|	}
15552|      0|yy674:
15553|      0|	YYDEBUG(674, *YYCURSOR);
15554|      0|	yyaccept = 2;
15555|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15556|      0|	if (yych <= '@') {
  ------------------
  |  Branch (15556:6): [True: 0, False: 0]
  ------------------
15557|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (15557:7): [True: 0, False: 0]
  ------------------
15558|      0|			if (yych == '\t') goto yy834;
  ------------------
  |  Branch (15558:8): [True: 0, False: 0]
  ------------------
15559|      0|			goto yy20;
15560|      0|		} else {
15561|      0|			if (yych <= ' ') goto yy834;
  ------------------
  |  Branch (15561:8): [True: 0, False: 0]
  ------------------
15562|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15562:8): [True: 0, False: 0]
  ------------------
15563|      0|			goto yy20;
15564|      0|		}
15565|      0|	} else {
15566|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (15566:7): [True: 0, False: 0]
  ------------------
15567|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15567:8): [True: 0, False: 0]
  ------------------
15568|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15568:8): [True: 0, False: 0]
  ------------------
15569|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15569:8): [True: 0, False: 0]
  ------------------
15570|      0|			goto yy20;
15571|      0|		} else {
15572|      0|			if (yych <= 0xC2) goto yy837;
  ------------------
  |  Branch (15572:8): [True: 0, False: 0]
  ------------------
15573|      0|			if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (15573:8): [True: 0, False: 0]
  ------------------
15574|      0|			goto yy20;
15575|      0|		}
15576|      0|	}
15577|      1|yy675:
15578|      1|	YYDEBUG(675, *YYCURSOR);
15579|      1|	yyaccept = 2;
15580|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15581|      1|	if (yych <= '@') {
  ------------------
  |  Branch (15581:6): [True: 0, False: 1]
  ------------------
15582|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (15582:7): [True: 0, False: 0]
  ------------------
15583|      0|			if (yych == '\t') goto yy834;
  ------------------
  |  Branch (15583:8): [True: 0, False: 0]
  ------------------
15584|      0|			goto yy20;
15585|      0|		} else {
15586|      0|			if (yych <= ' ') goto yy843;
  ------------------
  |  Branch (15586:8): [True: 0, False: 0]
  ------------------
15587|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15587:8): [True: 0, False: 0]
  ------------------
15588|      0|			goto yy20;
15589|      0|		}
15590|      1|	} else {
15591|      1|		if (yych <= 0xC1) {
  ------------------
  |  Branch (15591:7): [True: 0, False: 1]
  ------------------
15592|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15592:8): [True: 0, False: 0]
  ------------------
15593|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15593:8): [True: 0, False: 0]
  ------------------
15594|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15594:8): [True: 0, False: 0]
  ------------------
15595|      0|			goto yy20;
15596|      1|		} else {
15597|      1|			if (yych <= 0xC2) goto yy837;
  ------------------
  |  Branch (15597:8): [True: 0, False: 1]
  ------------------
15598|      1|			if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (15598:8): [True: 1, False: 0]
  ------------------
15599|      0|			goto yy20;
15600|      1|		}
15601|      1|	}
15602|      0|yy676:
15603|      0|	YYDEBUG(676, *YYCURSOR);
15604|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15605|      0|	if (yych <= 'H') {
  ------------------
  |  Branch (15605:6): [True: 0, False: 0]
  ------------------
15606|      0|		if (yych <= ')') {
  ------------------
  |  Branch (15606:7): [True: 0, False: 0]
  ------------------
15607|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15607:8): [True: 0, False: 0]
  ------------------
15608|      0|			goto yy115;
15609|      0|		} else {
15610|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15610:8): [True: 0, False: 0]
  ------------------
15611|      0|			if (yych <= 'G') goto yy826;
  ------------------
  |  Branch (15611:8): [True: 0, False: 0]
  ------------------
15612|      0|			goto yy836;
15613|      0|		}
15614|      0|	} else {
15615|      0|		if (yych <= 'g') {
  ------------------
  |  Branch (15615:7): [True: 0, False: 0]
  ------------------
15616|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15616:8): [True: 0, False: 0]
  ------------------
15617|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15617:8): [True: 0, False: 0]
  ------------------
15618|      0|			goto yy826;
15619|      0|		} else {
15620|      0|			if (yych <= 'h') goto yy836;
  ------------------
  |  Branch (15620:8): [True: 0, False: 0]
  ------------------
15621|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15621:8): [True: 0, False: 0]
  ------------------
15622|      0|			goto yy20;
15623|      0|		}
15624|      0|	}
15625|      8|yy677:
15626|      8|	YYDEBUG(677, *YYCURSOR);
15627|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
15628|      8|	if (yych <= 'Y') {
  ------------------
  |  Branch (15628:6): [True: 4, False: 4]
  ------------------
15629|      4|		if (yych <= ')') {
  ------------------
  |  Branch (15629:7): [True: 1, False: 3]
  ------------------
15630|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15630:8): [True: 1, False: 0]
  ------------------
15631|      0|			goto yy115;
15632|      3|		} else {
15633|      3|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15633:8): [True: 3, False: 0]
  ------------------
15634|      0|			if (yych <= 'X') goto yy826;
  ------------------
  |  Branch (15634:8): [True: 0, False: 0]
  ------------------
15635|      0|			goto yy844;
15636|      0|		}
15637|      4|	} else {
15638|      4|		if (yych <= 'x') {
  ------------------
  |  Branch (15638:7): [True: 0, False: 4]
  ------------------
15639|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15639:8): [True: 0, False: 0]
  ------------------
15640|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15640:8): [True: 0, False: 0]
  ------------------
15641|      0|			goto yy826;
15642|      4|		} else {
15643|      4|			if (yych <= 'y') goto yy844;
  ------------------
  |  Branch (15643:8): [True: 2, False: 2]
  ------------------
15644|      2|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15644:8): [True: 2, False: 0]
  ------------------
15645|      0|			goto yy20;
15646|      2|		}
15647|      4|	}
15648|      0|yy678:
15649|      0|	YYDEBUG(678, *YYCURSOR);
15650|      0|	yyaccept = 2;
15651|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15652|      0|	if (yych <= ')') {
  ------------------
  |  Branch (15652:6): [True: 0, False: 0]
  ------------------
15653|      0|		if (yych == ' ') goto yy666;
  ------------------
  |  Branch (15653:7): [True: 0, False: 0]
  ------------------
15654|      0|		if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15654:7): [True: 0, False: 0]
  ------------------
15655|      0|		goto yy115;
15656|      0|	} else {
15657|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (15657:7): [True: 0, False: 0]
  ------------------
15658|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15658:8): [True: 0, False: 0]
  ------------------
15659|      0|			goto yy826;
15660|      0|		} else {
15661|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15661:8): [True: 0, False: 0]
  ------------------
15662|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (15662:8): [True: 0, False: 0]
  ------------------
15663|      0|			goto yy20;
15664|      0|		}
15665|      0|	}
15666|      1|yy679:
15667|      1|	YYDEBUG(679, *YYCURSOR);
15668|      1|	yyaccept = 2;
15669|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15670|      1|	if (yych <= '@') {
  ------------------
  |  Branch (15670:6): [True: 0, False: 1]
  ------------------
15671|      0|		if (yych <= ',') {
  ------------------
  |  Branch (15671:7): [True: 0, False: 0]
  ------------------
15672|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15672:8): [True: 0, False: 0]
  ------------------
15673|      0|			goto yy20;
15674|      0|		} else {
15675|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (15675:8): [True: 0, False: 0]
  ------------------
15676|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (15676:8): [True: 0, False: 0]
  ------------------
15677|      0|			goto yy20;
15678|      0|		}
15679|      1|	} else {
15680|      1|		if (yych <= '_') {
  ------------------
  |  Branch (15680:7): [True: 0, False: 1]
  ------------------
15681|      0|			if (yych <= 'A') goto yy842;
  ------------------
  |  Branch (15681:8): [True: 0, False: 0]
  ------------------
15682|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15682:8): [True: 0, False: 0]
  ------------------
15683|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (15683:8): [True: 0, False: 0]
  ------------------
15684|      0|			goto yy297;
15685|      1|		} else {
15686|      1|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15686:8): [True: 0, False: 1]
  ------------------
15687|      1|			if (yych <= 'a') goto yy845;
  ------------------
  |  Branch (15687:8): [True: 1, False: 0]
  ------------------
15688|      0|			if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15688:8): [True: 0, False: 0]
  ------------------
15689|      0|			goto yy20;
15690|      0|		}
15691|      1|	}
15692|      2|yy680:
15693|      2|	YYDEBUG(680, *YYCURSOR);
15694|      2|	yyaccept = 2;
15695|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
15696|      2|	if (yych <= '/') {
  ------------------
  |  Branch (15696:6): [True: 1, False: 1]
  ------------------
15697|      1|		if (yych <= '(') {
  ------------------
  |  Branch (15697:7): [True: 1, False: 0]
  ------------------
15698|      1|			if (yych <= '\t') {
  ------------------
  |  Branch (15698:8): [True: 1, False: 0]
  ------------------
15699|      1|				if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (15699:9): [True: 1, False: 0]
  ------------------
15700|      0|				goto yy834;
15701|      1|			} else {
15702|      0|				if (yych == ' ') goto yy834;
  ------------------
  |  Branch (15702:9): [True: 0, False: 0]
  ------------------
15703|      0|				goto yy20;
15704|      0|			}
15705|      1|		} else {
15706|      0|			if (yych <= ',') {
  ------------------
  |  Branch (15706:8): [True: 0, False: 0]
  ------------------
15707|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (15707:9): [True: 0, False: 0]
  ------------------
15708|      0|				goto yy20;
15709|      0|			} else {
15710|      0|				if (yych == '.') goto yy20;
  ------------------
  |  Branch (15710:9): [True: 0, False: 0]
  ------------------
15711|      0|				goto yy297;
15712|      0|			}
15713|      0|		}
15714|      1|	} else {
15715|      1|		if (yych <= '`') {
  ------------------
  |  Branch (15715:7): [True: 0, False: 1]
  ------------------
15716|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (15716:8): [True: 0, False: 0]
  ------------------
15717|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15717:9): [True: 0, False: 0]
  ------------------
15718|      0|				goto yy826;
15719|      0|			} else {
15720|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (15720:9): [True: 0, False: 0]
  ------------------
15721|      0|				goto yy20;
15722|      0|			}
15723|      1|		} else {
15724|      1|			if (yych <= 0xC2) {
  ------------------
  |  Branch (15724:8): [True: 1, False: 0]
  ------------------
15725|      1|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15725:9): [True: 1, False: 0]
  ------------------
15726|      0|				if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (15726:9): [True: 0, False: 0]
  ------------------
15727|      0|				goto yy837;
15728|      0|			} else {
15729|      0|				if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (15729:9): [True: 0, False: 0]
  ------------------
15730|      0|				goto yy20;
15731|      0|			}
15732|      1|		}
15733|      1|	}
15734|      0|yy681:
15735|      0|	YYDEBUG(681, *YYCURSOR);
15736|      0|	yyaccept = 2;
15737|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15738|      0|	if (yych <= '/') {
  ------------------
  |  Branch (15738:6): [True: 0, False: 0]
  ------------------
15739|      0|		if (yych <= '(') {
  ------------------
  |  Branch (15739:7): [True: 0, False: 0]
  ------------------
15740|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (15740:8): [True: 0, False: 0]
  ------------------
15741|      0|				if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (15741:9): [True: 0, False: 0]
  ------------------
15742|      0|				goto yy834;
15743|      0|			} else {
15744|      0|				if (yych == ' ') goto yy843;
  ------------------
  |  Branch (15744:9): [True: 0, False: 0]
  ------------------
15745|      0|				goto yy20;
15746|      0|			}
15747|      0|		} else {
15748|      0|			if (yych <= ',') {
  ------------------
  |  Branch (15748:8): [True: 0, False: 0]
  ------------------
15749|      0|				if (yych <= ')') goto yy115;
  ------------------
  |  Branch (15749:9): [True: 0, False: 0]
  ------------------
15750|      0|				goto yy20;
15751|      0|			} else {
15752|      0|				if (yych == '.') goto yy20;
  ------------------
  |  Branch (15752:9): [True: 0, False: 0]
  ------------------
15753|      0|				goto yy297;
15754|      0|			}
15755|      0|		}
15756|      0|	} else {
15757|      0|		if (yych <= '`') {
  ------------------
  |  Branch (15757:7): [True: 0, False: 0]
  ------------------
15758|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (15758:8): [True: 0, False: 0]
  ------------------
15759|      0|				if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15759:9): [True: 0, False: 0]
  ------------------
15760|      0|				goto yy826;
15761|      0|			} else {
15762|      0|				if (yych == '_') goto yy297;
  ------------------
  |  Branch (15762:9): [True: 0, False: 0]
  ------------------
15763|      0|				goto yy20;
15764|      0|			}
15765|      0|		} else {
15766|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (15766:8): [True: 0, False: 0]
  ------------------
15767|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15767:9): [True: 0, False: 0]
  ------------------
15768|      0|				if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (15768:9): [True: 0, False: 0]
  ------------------
15769|      0|				goto yy837;
15770|      0|			} else {
15771|      0|				if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (15771:9): [True: 0, False: 0]
  ------------------
15772|      0|				goto yy20;
15773|      0|			}
15774|      0|		}
15775|      0|	}
15776|      1|yy682:
15777|      1|	YYDEBUG(682, *YYCURSOR);
15778|      1|	yyaccept = 2;
15779|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15780|      1|	if (yych <= 'G') {
  ------------------
  |  Branch (15780:6): [True: 0, False: 1]
  ------------------
15781|      0|		if (yych <= '-') {
  ------------------
  |  Branch (15781:7): [True: 0, False: 0]
  ------------------
15782|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15782:8): [True: 0, False: 0]
  ------------------
15783|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (15783:8): [True: 0, False: 0]
  ------------------
15784|      0|			goto yy297;
15785|      0|		} else {
15786|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (15786:8): [True: 0, False: 0]
  ------------------
15787|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15787:8): [True: 0, False: 0]
  ------------------
15788|      0|			goto yy826;
15789|      0|		}
15790|      1|	} else {
15791|      1|		if (yych <= '_') {
  ------------------
  |  Branch (15791:7): [True: 0, False: 1]
  ------------------
15792|      0|			if (yych <= 'H') goto yy836;
  ------------------
  |  Branch (15792:8): [True: 0, False: 0]
  ------------------
15793|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15793:8): [True: 0, False: 0]
  ------------------
15794|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (15794:8): [True: 0, False: 0]
  ------------------
15795|      0|			goto yy297;
15796|      1|		} else {
15797|      1|			if (yych <= 'g') {
  ------------------
  |  Branch (15797:8): [True: 1, False: 0]
  ------------------
15798|      1|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15798:9): [True: 0, False: 1]
  ------------------
15799|      1|				goto yy829;
15800|      1|			} else {
15801|      0|				if (yych <= 'h') goto yy840;
  ------------------
  |  Branch (15801:9): [True: 0, False: 0]
  ------------------
15802|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15802:9): [True: 0, False: 0]
  ------------------
15803|      0|				goto yy20;
15804|      0|			}
15805|      1|		}
15806|      1|	}
15807|      3|yy683:
15808|      3|	YYDEBUG(683, *YYCURSOR);
15809|      3|	yyaccept = 2;
15810|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
15811|      3|	if (yych <= 'X') {
  ------------------
  |  Branch (15811:6): [True: 0, False: 3]
  ------------------
15812|      0|		if (yych <= '-') {
  ------------------
  |  Branch (15812:7): [True: 0, False: 0]
  ------------------
15813|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (15813:8): [True: 0, False: 0]
  ------------------
15814|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (15814:8): [True: 0, False: 0]
  ------------------
15815|      0|			goto yy297;
15816|      0|		} else {
15817|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (15817:8): [True: 0, False: 0]
  ------------------
15818|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15818:8): [True: 0, False: 0]
  ------------------
15819|      0|			goto yy826;
15820|      0|		}
15821|      3|	} else {
15822|      3|		if (yych <= '_') {
  ------------------
  |  Branch (15822:7): [True: 0, False: 3]
  ------------------
15823|      0|			if (yych <= 'Y') goto yy844;
  ------------------
  |  Branch (15823:8): [True: 0, False: 0]
  ------------------
15824|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15824:8): [True: 0, False: 0]
  ------------------
15825|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (15825:8): [True: 0, False: 0]
  ------------------
15826|      0|			goto yy297;
15827|      3|		} else {
15828|      3|			if (yych <= 'x') {
  ------------------
  |  Branch (15828:8): [True: 0, False: 3]
  ------------------
15829|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15829:9): [True: 0, False: 0]
  ------------------
15830|      0|				goto yy829;
15831|      3|			} else {
15832|      3|				if (yych <= 'y') goto yy846;
  ------------------
  |  Branch (15832:9): [True: 3, False: 0]
  ------------------
15833|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15833:9): [True: 0, False: 0]
  ------------------
15834|      0|				goto yy20;
15835|      0|			}
15836|      3|		}
15837|      3|	}
15838|      0|yy684:
15839|      0|	YYDEBUG(684, *YYCURSOR);
15840|      0|	yyaccept = 2;
15841|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15842|      0|	if (yych <= '.') {
  ------------------
  |  Branch (15842:6): [True: 0, False: 0]
  ------------------
15843|      0|		if (yych <= '(') {
  ------------------
  |  Branch (15843:7): [True: 0, False: 0]
  ------------------
15844|      0|			if (yych == ' ') goto yy666;
  ------------------
  |  Branch (15844:8): [True: 0, False: 0]
  ------------------
15845|      0|			goto yy20;
15846|      0|		} else {
15847|      0|			if (yych <= ')') goto yy115;
  ------------------
  |  Branch (15847:8): [True: 0, False: 0]
  ------------------
15848|      0|			if (yych == '-') goto yy297;
  ------------------
  |  Branch (15848:8): [True: 0, False: 0]
  ------------------
15849|      0|			goto yy20;
15850|      0|		}
15851|      0|	} else {
15852|      0|		if (yych <= '^') {
  ------------------
  |  Branch (15852:7): [True: 0, False: 0]
  ------------------
15853|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (15853:8): [True: 0, False: 0]
  ------------------
15854|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15854:8): [True: 0, False: 0]
  ------------------
15855|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15855:8): [True: 0, False: 0]
  ------------------
15856|      0|			goto yy20;
15857|      0|		} else {
15858|      0|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (15858:8): [True: 0, False: 0]
  ------------------
15859|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15859:8): [True: 0, False: 0]
  ------------------
15860|      0|			if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (15860:8): [True: 0, False: 0]
  ------------------
15861|      0|			goto yy20;
15862|      0|		}
15863|      0|	}
15864|      1|yy685:
15865|      1|	YYDEBUG(685, *YYCURSOR);
15866|      1|	yyaccept = 2;
15867|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
15868|      1|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (15868:6): [True: 0, False: 1]
  ------------------
15869|      1|	if (yych <= '9') goto yy847;
  ------------------
  |  Branch (15869:6): [True: 1, False: 0]
  ------------------
15870|      0|	if (yych <= ':') goto yy203;
  ------------------
  |  Branch (15870:6): [True: 0, False: 0]
  ------------------
15871|      0|	goto yy20;
15872|      0|yy686:
15873|      0|	YYDEBUG(686, *YYCURSOR);
15874|      0|	yyaccept = 2;
15875|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15876|      0|	if (yych <= '5') {
  ------------------
  |  Branch (15876:6): [True: 0, False: 0]
  ------------------
15877|      0|		if (yych <= '/') goto yy20;
  ------------------
  |  Branch (15877:7): [True: 0, False: 0]
  ------------------
15878|      0|		if (yych <= '4') goto yy847;
  ------------------
  |  Branch (15878:7): [True: 0, False: 0]
  ------------------
15879|      0|		goto yy394;
15880|      0|	} else {
15881|      0|		if (yych <= '9') goto yy115;
  ------------------
  |  Branch (15881:7): [True: 0, False: 0]
  ------------------
15882|      0|		if (yych <= ':') goto yy203;
  ------------------
  |  Branch (15882:7): [True: 0, False: 0]
  ------------------
15883|      0|		goto yy20;
15884|      0|	}
15885|      0|yy687:
15886|      0|	YYDEBUG(687, *YYCURSOR);
15887|      0|	yyaccept = 2;
15888|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15889|      0|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (15889:6): [True: 0, False: 0]
  ------------------
15890|      0|	if (yych <= '5') goto yy394;
  ------------------
  |  Branch (15890:6): [True: 0, False: 0]
  ------------------
15891|      0|	if (yych <= '9') goto yy115;
  ------------------
  |  Branch (15891:6): [True: 0, False: 0]
  ------------------
15892|      0|	if (yych <= ':') goto yy203;
  ------------------
  |  Branch (15892:6): [True: 0, False: 0]
  ------------------
15893|      0|	goto yy20;
15894|      9|yy688:
15895|      9|	YYDEBUG(688, *YYCURSOR);
15896|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
15897|      9|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (15897:6): [True: 1, False: 8]
  ------------------
15898|      8|	if (yych <= '5') goto yy848;
  ------------------
  |  Branch (15898:6): [True: 5, False: 3]
  ------------------
15899|      3|	if (yych <= '9') goto yy850;
  ------------------
  |  Branch (15899:6): [True: 0, False: 3]
  ------------------
15900|      3|	goto yy59;
15901|      3|yy689:
15902|      0|	YYDEBUG(689, *YYCURSOR);
15903|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15904|      0|	if (yych == '.') goto yy688;
  ------------------
  |  Branch (15904:6): [True: 0, False: 0]
  ------------------
15905|      0|	if (yych == ':') goto yy688;
  ------------------
  |  Branch (15905:6): [True: 0, False: 0]
  ------------------
15906|      0|	goto yy59;
15907|     11|yy690:
15908|     11|	YYDEBUG(690, *YYCURSOR);
15909|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
15910|     11|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (15910:6): [True: 0, False: 11]
  ------------------
15911|     11|	if (yych <= '5') goto yy851;
  ------------------
  |  Branch (15911:6): [True: 7, False: 4]
  ------------------
15912|      4|	if (yych <= '9') goto yy852;
  ------------------
  |  Branch (15912:6): [True: 4, False: 0]
  ------------------
15913|      0|	goto yy59;
15914|      0|yy691:
15915|      0|	YYDEBUG(691, *YYCURSOR);
15916|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15917|      0|	if (yych <= '/') {
  ------------------
  |  Branch (15917:6): [True: 0, False: 0]
  ------------------
15918|      0|		if (yych == '.') goto yy688;
  ------------------
  |  Branch (15918:7): [True: 0, False: 0]
  ------------------
15919|      0|		goto yy59;
15920|      0|	} else {
15921|      0|		if (yych <= '9') goto yy689;
  ------------------
  |  Branch (15921:7): [True: 0, False: 0]
  ------------------
15922|      0|		if (yych <= ':') goto yy688;
  ------------------
  |  Branch (15922:7): [True: 0, False: 0]
  ------------------
15923|      0|		goto yy59;
15924|      0|	}
15925|      0|yy692:
15926|      0|	YYDEBUG(692, *YYCURSOR);
15927|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15928|      0|	if (yych <= '/') {
  ------------------
  |  Branch (15928:6): [True: 0, False: 0]
  ------------------
15929|      0|		if (yych == '.') goto yy688;
  ------------------
  |  Branch (15929:7): [True: 0, False: 0]
  ------------------
15930|      0|		goto yy59;
15931|      0|	} else {
15932|      0|		if (yych <= '4') goto yy689;
  ------------------
  |  Branch (15932:7): [True: 0, False: 0]
  ------------------
15933|      0|		if (yych == ':') goto yy688;
  ------------------
  |  Branch (15933:7): [True: 0, False: 0]
  ------------------
15934|      0|		goto yy59;
15935|      0|	}
15936|      2|yy693:
15937|      2|	YYDEBUG(693, *YYCURSOR);
15938|      2|	yyaccept = 10;
15939|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
15940|      2|	if (yych <= '/') {
  ------------------
  |  Branch (15940:6): [True: 1, False: 1]
  ------------------
15941|      1|		if (yych == '.') goto yy688;
  ------------------
  |  Branch (15941:7): [True: 1, False: 0]
  ------------------
15942|      0|		goto yy325;
15943|      1|	} else {
15944|      1|		if (yych <= '9') goto yy853;
  ------------------
  |  Branch (15944:7): [True: 0, False: 1]
  ------------------
15945|      1|		if (yych <= ':') goto yy688;
  ------------------
  |  Branch (15945:7): [True: 1, False: 0]
  ------------------
15946|      0|		goto yy325;
15947|      1|	}
15948|      5|yy694:
15949|      5|	YYDEBUG(694, *YYCURSOR);
15950|      5|	yyaccept = 10;
15951|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
15952|      5|	if (yych <= '/') {
  ------------------
  |  Branch (15952:6): [True: 5, False: 0]
  ------------------
15953|      5|		if (yych == '.') goto yy690;
  ------------------
  |  Branch (15953:7): [True: 5, False: 0]
  ------------------
15954|      0|		goto yy325;
15955|      5|	} else {
15956|      0|		if (yych <= '9') goto yy853;
  ------------------
  |  Branch (15956:7): [True: 0, False: 0]
  ------------------
15957|      0|		if (yych <= ':') goto yy690;
  ------------------
  |  Branch (15957:7): [True: 0, False: 0]
  ------------------
15958|      0|		goto yy325;
15959|      0|	}
15960|      2|yy695:
15961|      2|	YYDEBUG(695, *YYCURSOR);
15962|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
15963|      2|	if (yych <= '/') goto yy325;
  ------------------
  |  Branch (15963:6): [True: 0, False: 2]
  ------------------
15964|      2|	if (yych <= '9') goto yy853;
  ------------------
  |  Branch (15964:6): [True: 1, False: 1]
  ------------------
15965|      1|	goto yy325;
15966|      5|yy696:
15967|      5|	YYDEBUG(696, *YYCURSOR);
15968|      5|	++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
15969|      5|	YYDEBUG(697, *YYCURSOR);
15970|      5|#line 1604 "ext/date/lib/parse_date.re"
15971|      5|	{
15972|      5|		int length = 0;
15973|      5|		DEBUG_OUTPUT("datenoday");
15974|      5|		TIMELIB_INIT;
  ------------------
  |  |  107|      5|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
15975|      5|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      5|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      1|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      1|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      1|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 1, False: 4]
  |  |  ------------------
  ------------------
15976|      4|		s->time->m = timelib_get_month(&ptr);
15977|      4|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
15978|      4|		s->time->d = 1;
15979|      4|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      4|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      4|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      4|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 4]
  |  |  |  Branch (112:32): [True: 4, False: 0]
  |  |  ------------------
  |  |  113|      4|	/*	(x) = 0; */          \
  |  |  114|      4|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|      4|}
  ------------------
15980|      4|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      4|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      4|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15981|      4|		return TIMELIB_DATE_NO_DAY;
  ------------------
  |  |   67|      4|#define TIMELIB_DATE_NO_DAY    275
  ------------------
15982|      5|	}
15983|      0|#line 15984 "ext/date/lib/parse_date.c"
15984|      0|yy698:
15985|      0|	YYDEBUG(698, *YYCURSOR);
15986|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
15987|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (15987:6): [True: 0, False: 0]
  ------------------
15988|      0|		if (yych <= ')') {
  ------------------
  |  Branch (15988:7): [True: 0, False: 0]
  ------------------
15989|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (15989:8): [True: 0, False: 0]
  ------------------
15990|      0|			goto yy115;
15991|      0|		} else {
15992|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (15992:8): [True: 0, False: 0]
  ------------------
15993|      0|			if (yych <= 'Q') goto yy826;
  ------------------
  |  Branch (15993:8): [True: 0, False: 0]
  ------------------
15994|      0|			goto yy854;
15995|      0|		}
15996|      0|	} else {
15997|      0|		if (yych <= 'q') {
  ------------------
  |  Branch (15997:7): [True: 0, False: 0]
  ------------------
15998|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (15998:8): [True: 0, False: 0]
  ------------------
15999|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (15999:8): [True: 0, False: 0]
  ------------------
16000|      0|			goto yy826;
16001|      0|		} else {
16002|      0|			if (yych <= 'r') goto yy854;
  ------------------
  |  Branch (16002:8): [True: 0, False: 0]
  ------------------
16003|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16003:8): [True: 0, False: 0]
  ------------------
16004|      0|			goto yy20;
16005|      0|		}
16006|      0|	}
16007|      0|yy699:
16008|      0|	YYDEBUG(699, *YYCURSOR);
16009|      0|	yyaccept = 2;
16010|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16011|      0|	if (yych <= 'Q') {
  ------------------
  |  Branch (16011:6): [True: 0, False: 0]
  ------------------
16012|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16012:7): [True: 0, False: 0]
  ------------------
16013|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16013:8): [True: 0, False: 0]
  ------------------
16014|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16014:8): [True: 0, False: 0]
  ------------------
16015|      0|			goto yy297;
16016|      0|		} else {
16017|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16017:8): [True: 0, False: 0]
  ------------------
16018|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16018:8): [True: 0, False: 0]
  ------------------
16019|      0|			goto yy826;
16020|      0|		}
16021|      0|	} else {
16022|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16022:7): [True: 0, False: 0]
  ------------------
16023|      0|			if (yych <= 'R') goto yy854;
  ------------------
  |  Branch (16023:8): [True: 0, False: 0]
  ------------------
16024|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16024:8): [True: 0, False: 0]
  ------------------
16025|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16025:8): [True: 0, False: 0]
  ------------------
16026|      0|			goto yy297;
16027|      0|		} else {
16028|      0|			if (yych <= 'q') {
  ------------------
  |  Branch (16028:8): [True: 0, False: 0]
  ------------------
16029|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16029:9): [True: 0, False: 0]
  ------------------
16030|      0|				goto yy829;
16031|      0|			} else {
16032|      0|				if (yych <= 'r') goto yy855;
  ------------------
  |  Branch (16032:9): [True: 0, False: 0]
  ------------------
16033|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16033:9): [True: 0, False: 0]
  ------------------
16034|      0|				goto yy20;
16035|      0|			}
16036|      0|		}
16037|      0|	}
16038|      0|yy700:
16039|      0|	YYDEBUG(700, *YYCURSOR);
16040|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16041|      0|	if (yybm[0+yych] & 64) {
  ------------------
  |  Branch (16041:6): [True: 0, False: 0]
  ------------------
16042|      0|		goto yy476;
16043|      0|	}
16044|      0|	goto yy142;
16045|      9|yy701:
16046|      9|	YYDEBUG(701, *YYCURSOR);
16047|      9|	++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
16048|      9|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      9|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (16048:6): [True: 0, False: 9]
  ------------------
16049|      9|	yych = *YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
16050|      9|yy702:
16051|      9|	YYDEBUG(702, *YYCURSOR);
16052|      9|	if (yych <= 'X') {
  ------------------
  |  Branch (16052:6): [True: 3, False: 6]
  ------------------
16053|      3|		if (yych <= 'G') {
  ------------------
  |  Branch (16053:7): [True: 3, False: 0]
  ------------------
16054|      3|			if (yych <= ' ') {
  ------------------
  |  Branch (16054:8): [True: 2, False: 1]
  ------------------
16055|      2|				if (yych == '\t') goto yy701;
  ------------------
  |  Branch (16055:9): [True: 0, False: 2]
  ------------------
16056|      2|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (16056:9): [True: 2, False: 0]
  ------------------
16057|      0|				goto yy701;
16058|      2|			} else {
16059|      1|				if (yych <= 'D') {
  ------------------
  |  Branch (16059:9): [True: 0, False: 1]
  ------------------
16060|      0|					if (yych <= 'C') goto yy59;
  ------------------
  |  Branch (16060:10): [True: 0, False: 0]
  ------------------
16061|      0|					goto yy856;
16062|      1|				} else {
16063|      1|					if (yych == 'F') goto yy857;
  ------------------
  |  Branch (16063:10): [True: 1, False: 0]
  ------------------
16064|      0|					goto yy59;
16065|      1|				}
16066|      1|			}
16067|      3|		} else {
16068|      0|			if (yych <= 'S') {
  ------------------
  |  Branch (16068:8): [True: 0, False: 0]
  ------------------
16069|      0|				if (yych <= 'L') {
  ------------------
  |  Branch (16069:9): [True: 0, False: 0]
  ------------------
16070|      0|					if (yych <= 'H') goto yy858;
  ------------------
  |  Branch (16070:10): [True: 0, False: 0]
  ------------------
16071|      0|					goto yy59;
16072|      0|				} else {
16073|      0|					if (yych <= 'M') goto yy859;
  ------------------
  |  Branch (16073:10): [True: 0, False: 0]
  ------------------
16074|      0|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (16074:10): [True: 0, False: 0]
  ------------------
16075|      0|					goto yy860;
16076|      0|				}
16077|      0|			} else {
16078|      0|				if (yych <= 'U') {
  ------------------
  |  Branch (16078:9): [True: 0, False: 0]
  ------------------
16079|      0|					if (yych <= 'T') goto yy861;
  ------------------
  |  Branch (16079:10): [True: 0, False: 0]
  ------------------
16080|      0|					goto yy862;
16081|      0|				} else {
16082|      0|					if (yych == 'W') goto yy863;
  ------------------
  |  Branch (16082:10): [True: 0, False: 0]
  ------------------
16083|      0|					goto yy59;
16084|      0|				}
16085|      0|			}
16086|      0|		}
16087|      6|	} else {
16088|      6|		if (yych <= 'r') {
  ------------------
  |  Branch (16088:7): [True: 0, False: 6]
  ------------------
16089|      0|			if (yych <= 'f') {
  ------------------
  |  Branch (16089:8): [True: 0, False: 0]
  ------------------
16090|      0|				if (yych <= 'c') {
  ------------------
  |  Branch (16090:9): [True: 0, False: 0]
  ------------------
16091|      0|					if (yych <= 'Y') goto yy864;
  ------------------
  |  Branch (16091:10): [True: 0, False: 0]
  ------------------
16092|      0|					goto yy59;
16093|      0|				} else {
16094|      0|					if (yych <= 'd') goto yy856;
  ------------------
  |  Branch (16094:10): [True: 0, False: 0]
  ------------------
16095|      0|					if (yych <= 'e') goto yy59;
  ------------------
  |  Branch (16095:10): [True: 0, False: 0]
  ------------------
16096|      0|					goto yy857;
16097|      0|				}
16098|      0|			} else {
16099|      0|				if (yych <= 'h') {
  ------------------
  |  Branch (16099:9): [True: 0, False: 0]
  ------------------
16100|      0|					if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (16100:10): [True: 0, False: 0]
  ------------------
16101|      0|					goto yy858;
16102|      0|				} else {
16103|      0|					if (yych == 'm') goto yy859;
  ------------------
  |  Branch (16103:10): [True: 0, False: 0]
  ------------------
16104|      0|					goto yy59;
16105|      0|				}
16106|      0|			}
16107|      6|		} else {
16108|      6|			if (yych <= 'w') {
  ------------------
  |  Branch (16108:8): [True: 2, False: 4]
  ------------------
16109|      2|				if (yych <= 't') {
  ------------------
  |  Branch (16109:9): [True: 0, False: 2]
  ------------------
16110|      0|					if (yych <= 's') goto yy860;
  ------------------
  |  Branch (16110:10): [True: 0, False: 0]
  ------------------
16111|      0|					goto yy861;
16112|      2|				} else {
16113|      2|					if (yych <= 'u') goto yy862;
  ------------------
  |  Branch (16113:10): [True: 2, False: 0]
  ------------------
16114|      0|					if (yych <= 'v') goto yy59;
  ------------------
  |  Branch (16114:10): [True: 0, False: 0]
  ------------------
16115|      0|					goto yy863;
16116|      0|				}
16117|      4|			} else {
16118|      4|				if (yych <= 'y') {
  ------------------
  |  Branch (16118:9): [True: 4, False: 0]
  ------------------
16119|      4|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (16119:10): [True: 3, False: 1]
  ------------------
16120|      1|					goto yy864;
16121|      4|				} else {
16122|      0|					if (yych == 0xC2) goto yy865;
  ------------------
  |  Branch (16122:10): [True: 0, False: 0]
  ------------------
16123|      0|					goto yy59;
16124|      0|				}
16125|      4|			}
16126|      6|		}
16127|      6|	}
16128|      0|yy703:
16129|      0|	YYDEBUG(703, *YYCURSOR);
16130|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16131|      0|	if (yych == 'D') goto yy866;
  ------------------
  |  Branch (16131:6): [True: 0, False: 0]
  ------------------
16132|      0|	if (yych == 'd') goto yy866;
  ------------------
  |  Branch (16132:6): [True: 0, False: 0]
  ------------------
16133|      0|	goto yy702;
16134|      0|yy704:
16135|      0|	YYDEBUG(704, *YYCURSOR);
16136|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16137|      0|	if (yych == 0xA0) goto yy867;
  ------------------
  |  Branch (16137:6): [True: 0, False: 0]
  ------------------
16138|      0|	goto yy59;
16139|      0|yy705:
16140|      0|	YYDEBUG(705, *YYCURSOR);
16141|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16142|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (16142:6): [True: 0, False: 0]
  ------------------
16143|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16144|      0|	if (yych == 0x80) goto yy868;
  ------------------
  |  Branch (16144:6): [True: 0, False: 0]
  ------------------
16145|      0|	goto yy59;
16146|      0|yy706:
16147|      0|	YYDEBUG(706, *YYCURSOR);
16148|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16149|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (16149:6): [True: 0, False: 0]
  ------------------
16150|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16150:7): [True: 0, False: 0]
  ------------------
16151|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16151:8): [True: 0, False: 0]
  ------------------
16152|      0|			goto yy115;
16153|      0|		} else {
16154|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16154:8): [True: 0, False: 0]
  ------------------
16155|      0|			if (yych <= 'F') goto yy826;
  ------------------
  |  Branch (16155:8): [True: 0, False: 0]
  ------------------
16156|      0|			goto yy869;
16157|      0|		}
16158|      0|	} else {
16159|      0|		if (yych <= 'f') {
  ------------------
  |  Branch (16159:7): [True: 0, False: 0]
  ------------------
16160|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16160:8): [True: 0, False: 0]
  ------------------
16161|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16161:8): [True: 0, False: 0]
  ------------------
16162|      0|			goto yy826;
16163|      0|		} else {
16164|      0|			if (yych <= 'g') goto yy869;
  ------------------
  |  Branch (16164:8): [True: 0, False: 0]
  ------------------
16165|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16165:8): [True: 0, False: 0]
  ------------------
16166|      0|			goto yy20;
16167|      0|		}
16168|      0|	}
16169|      0|yy707:
16170|      0|	YYDEBUG(707, *YYCURSOR);
16171|      0|	yyaccept = 2;
16172|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16173|      0|	if (yych <= 'F') {
  ------------------
  |  Branch (16173:6): [True: 0, False: 0]
  ------------------
16174|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16174:7): [True: 0, False: 0]
  ------------------
16175|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16175:8): [True: 0, False: 0]
  ------------------
16176|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16176:8): [True: 0, False: 0]
  ------------------
16177|      0|			goto yy297;
16178|      0|		} else {
16179|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16179:8): [True: 0, False: 0]
  ------------------
16180|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16180:8): [True: 0, False: 0]
  ------------------
16181|      0|			goto yy826;
16182|      0|		}
16183|      0|	} else {
16184|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16184:7): [True: 0, False: 0]
  ------------------
16185|      0|			if (yych <= 'G') goto yy869;
  ------------------
  |  Branch (16185:8): [True: 0, False: 0]
  ------------------
16186|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16186:8): [True: 0, False: 0]
  ------------------
16187|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16187:8): [True: 0, False: 0]
  ------------------
16188|      0|			goto yy297;
16189|      0|		} else {
16190|      0|			if (yych <= 'f') {
  ------------------
  |  Branch (16190:8): [True: 0, False: 0]
  ------------------
16191|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16191:9): [True: 0, False: 0]
  ------------------
16192|      0|				goto yy829;
16193|      0|			} else {
16194|      0|				if (yych <= 'g') goto yy870;
  ------------------
  |  Branch (16194:9): [True: 0, False: 0]
  ------------------
16195|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16195:9): [True: 0, False: 0]
  ------------------
16196|      0|				goto yy20;
16197|      0|			}
16198|      0|		}
16199|      0|	}
16200|      1|yy708:
16201|      1|	YYDEBUG(708, *YYCURSOR);
16202|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16203|      1|	if (yych <= 'E') {
  ------------------
  |  Branch (16203:6): [True: 0, False: 1]
  ------------------
16204|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16204:7): [True: 0, False: 0]
  ------------------
16205|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16205:8): [True: 0, False: 0]
  ------------------
16206|      0|			goto yy115;
16207|      0|		} else {
16208|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16208:8): [True: 0, False: 0]
  ------------------
16209|      0|			if (yych <= 'D') goto yy826;
  ------------------
  |  Branch (16209:8): [True: 0, False: 0]
  ------------------
16210|      0|			goto yy871;
16211|      0|		}
16212|      1|	} else {
16213|      1|		if (yych <= 'd') {
  ------------------
  |  Branch (16213:7): [True: 0, False: 1]
  ------------------
16214|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16214:8): [True: 0, False: 0]
  ------------------
16215|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16215:8): [True: 0, False: 0]
  ------------------
16216|      0|			goto yy826;
16217|      1|		} else {
16218|      1|			if (yych <= 'e') goto yy871;
  ------------------
  |  Branch (16218:8): [True: 1, False: 0]
  ------------------
16219|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16219:8): [True: 0, False: 0]
  ------------------
16220|      0|			goto yy20;
16221|      0|		}
16222|      1|	}
16223|      0|yy709:
16224|      0|	YYDEBUG(709, *YYCURSOR);
16225|      0|	yyaccept = 2;
16226|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16227|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (16227:6): [True: 0, False: 0]
  ------------------
16228|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16228:7): [True: 0, False: 0]
  ------------------
16229|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16229:8): [True: 0, False: 0]
  ------------------
16230|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16230:8): [True: 0, False: 0]
  ------------------
16231|      0|			goto yy297;
16232|      0|		} else {
16233|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16233:8): [True: 0, False: 0]
  ------------------
16234|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16234:8): [True: 0, False: 0]
  ------------------
16235|      0|			goto yy826;
16236|      0|		}
16237|      0|	} else {
16238|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16238:7): [True: 0, False: 0]
  ------------------
16239|      0|			if (yych <= 'E') goto yy871;
  ------------------
  |  Branch (16239:8): [True: 0, False: 0]
  ------------------
16240|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16240:8): [True: 0, False: 0]
  ------------------
16241|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16241:8): [True: 0, False: 0]
  ------------------
16242|      0|			goto yy297;
16243|      0|		} else {
16244|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (16244:8): [True: 0, False: 0]
  ------------------
16245|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16245:9): [True: 0, False: 0]
  ------------------
16246|      0|				goto yy829;
16247|      0|			} else {
16248|      0|				if (yych <= 'e') goto yy872;
  ------------------
  |  Branch (16248:9): [True: 0, False: 0]
  ------------------
16249|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16249:9): [True: 0, False: 0]
  ------------------
16250|      0|				goto yy20;
16251|      0|			}
16252|      0|		}
16253|      0|	}
16254|      0|yy710:
16255|      0|	YYDEBUG(710, *YYCURSOR);
16256|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16257|      0|	if (yych <= 'O') {
  ------------------
  |  Branch (16257:6): [True: 0, False: 0]
  ------------------
16258|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16258:7): [True: 0, False: 0]
  ------------------
16259|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16259:8): [True: 0, False: 0]
  ------------------
16260|      0|			goto yy115;
16261|      0|		} else {
16262|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16262:8): [True: 0, False: 0]
  ------------------
16263|      0|			if (yych <= 'N') goto yy826;
  ------------------
  |  Branch (16263:8): [True: 0, False: 0]
  ------------------
16264|      0|			goto yy873;
16265|      0|		}
16266|      0|	} else {
16267|      0|		if (yych <= 'n') {
  ------------------
  |  Branch (16267:7): [True: 0, False: 0]
  ------------------
16268|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16268:8): [True: 0, False: 0]
  ------------------
16269|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16269:8): [True: 0, False: 0]
  ------------------
16270|      0|			goto yy826;
16271|      0|		} else {
16272|      0|			if (yych <= 'o') goto yy873;
  ------------------
  |  Branch (16272:8): [True: 0, False: 0]
  ------------------
16273|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16273:8): [True: 0, False: 0]
  ------------------
16274|      0|			goto yy20;
16275|      0|		}
16276|      0|	}
16277|      1|yy711:
16278|      1|	YYDEBUG(711, *YYCURSOR);
16279|      1|	yyaccept = 2;
16280|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16281|      1|	if (yych <= 'N') {
  ------------------
  |  Branch (16281:6): [True: 0, False: 1]
  ------------------
16282|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16282:7): [True: 0, False: 0]
  ------------------
16283|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16283:8): [True: 0, False: 0]
  ------------------
16284|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16284:8): [True: 0, False: 0]
  ------------------
16285|      0|			goto yy297;
16286|      0|		} else {
16287|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16287:8): [True: 0, False: 0]
  ------------------
16288|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16288:8): [True: 0, False: 0]
  ------------------
16289|      0|			goto yy826;
16290|      0|		}
16291|      1|	} else {
16292|      1|		if (yych <= '_') {
  ------------------
  |  Branch (16292:7): [True: 0, False: 1]
  ------------------
16293|      0|			if (yych <= 'O') goto yy873;
  ------------------
  |  Branch (16293:8): [True: 0, False: 0]
  ------------------
16294|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16294:8): [True: 0, False: 0]
  ------------------
16295|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16295:8): [True: 0, False: 0]
  ------------------
16296|      0|			goto yy297;
16297|      1|		} else {
16298|      1|			if (yych <= 'n') {
  ------------------
  |  Branch (16298:8): [True: 0, False: 1]
  ------------------
16299|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16299:9): [True: 0, False: 0]
  ------------------
16300|      0|				goto yy829;
16301|      1|			} else {
16302|      1|				if (yych <= 'o') goto yy874;
  ------------------
  |  Branch (16302:9): [True: 1, False: 0]
  ------------------
16303|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16303:9): [True: 0, False: 0]
  ------------------
16304|      0|				goto yy20;
16305|      0|			}
16306|      1|		}
16307|      1|	}
16308|      4|yy712:
16309|      4|	YYDEBUG(712, *YYCURSOR);
16310|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
16311|      4|	if (yych <= 'D') {
  ------------------
  |  Branch (16311:6): [True: 1, False: 3]
  ------------------
16312|      1|		if (yych <= ')') {
  ------------------
  |  Branch (16312:7): [True: 1, False: 0]
  ------------------
16313|      1|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16313:8): [True: 1, False: 0]
  ------------------
16314|      0|			goto yy115;
16315|      1|		} else {
16316|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16316:8): [True: 0, False: 0]
  ------------------
16317|      0|			if (yych <= 'C') goto yy826;
  ------------------
  |  Branch (16317:8): [True: 0, False: 0]
  ------------------
16318|      0|			goto yy875;
16319|      0|		}
16320|      3|	} else {
16321|      3|		if (yych <= 'c') {
  ------------------
  |  Branch (16321:7): [True: 0, False: 3]
  ------------------
16322|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16322:8): [True: 0, False: 0]
  ------------------
16323|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16323:8): [True: 0, False: 0]
  ------------------
16324|      0|			goto yy826;
16325|      3|		} else {
16326|      3|			if (yych <= 'd') goto yy875;
  ------------------
  |  Branch (16326:8): [True: 0, False: 3]
  ------------------
16327|      3|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16327:8): [True: 2, False: 1]
  ------------------
16328|      1|			goto yy20;
16329|      3|		}
16330|      3|	}
16331|     17|yy713:
16332|     17|	YYDEBUG(713, *YYCURSOR);
16333|     17|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     17|#define   YYCURSOR     cursor
  ------------------
16334|     17|	if (yych <= 'D') {
  ------------------
  |  Branch (16334:6): [True: 0, False: 17]
  ------------------
16335|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16335:7): [True: 0, False: 0]
  ------------------
16336|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16336:8): [True: 0, False: 0]
  ------------------
16337|      0|			goto yy115;
16338|      0|		} else {
16339|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16339:8): [True: 0, False: 0]
  ------------------
16340|      0|			if (yych <= 'C') goto yy826;
  ------------------
  |  Branch (16340:8): [True: 0, False: 0]
  ------------------
16341|      0|			goto yy836;
16342|      0|		}
16343|     17|	} else {
16344|     17|		if (yych <= 'c') {
  ------------------
  |  Branch (16344:7): [True: 0, False: 17]
  ------------------
16345|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16345:8): [True: 0, False: 0]
  ------------------
16346|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16346:8): [True: 0, False: 0]
  ------------------
16347|      0|			goto yy826;
16348|     17|		} else {
16349|     17|			if (yych <= 'd') goto yy836;
  ------------------
  |  Branch (16349:8): [True: 15, False: 2]
  ------------------
16350|      2|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16350:8): [True: 0, False: 2]
  ------------------
16351|      2|			goto yy20;
16352|      2|		}
16353|     17|	}
16354|      0|yy714:
16355|      0|	YYDEBUG(714, *YYCURSOR);
16356|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16357|      0|	if (yych <= 'M') {
  ------------------
  |  Branch (16357:6): [True: 0, False: 0]
  ------------------
16358|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16358:7): [True: 0, False: 0]
  ------------------
16359|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16359:8): [True: 0, False: 0]
  ------------------
16360|      0|			goto yy115;
16361|      0|		} else {
16362|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16362:8): [True: 0, False: 0]
  ------------------
16363|      0|			if (yych <= 'L') goto yy826;
  ------------------
  |  Branch (16363:8): [True: 0, False: 0]
  ------------------
16364|      0|			goto yy876;
16365|      0|		}
16366|      0|	} else {
16367|      0|		if (yych <= 'l') {
  ------------------
  |  Branch (16367:7): [True: 0, False: 0]
  ------------------
16368|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16368:8): [True: 0, False: 0]
  ------------------
16369|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16369:8): [True: 0, False: 0]
  ------------------
16370|      0|			goto yy826;
16371|      0|		} else {
16372|      0|			if (yych <= 'm') goto yy876;
  ------------------
  |  Branch (16372:8): [True: 0, False: 0]
  ------------------
16373|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16373:8): [True: 0, False: 0]
  ------------------
16374|      0|			goto yy20;
16375|      0|		}
16376|      0|	}
16377|      3|yy715:
16378|      3|	YYDEBUG(715, *YYCURSOR);
16379|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
16380|      3|	if (yych <= 'T') {
  ------------------
  |  Branch (16380:6): [True: 1, False: 2]
  ------------------
16381|      1|		if (yych <= ')') {
  ------------------
  |  Branch (16381:7): [True: 0, False: 1]
  ------------------
16382|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16382:8): [True: 0, False: 0]
  ------------------
16383|      0|			goto yy115;
16384|      1|		} else {
16385|      1|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16385:8): [True: 0, False: 1]
  ------------------
16386|      1|			if (yych <= 'S') goto yy826;
  ------------------
  |  Branch (16386:8): [True: 0, False: 1]
  ------------------
16387|      1|			goto yy877;
16388|      1|		}
16389|      2|	} else {
16390|      2|		if (yych <= 's') {
  ------------------
  |  Branch (16390:7): [True: 0, False: 2]
  ------------------
16391|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16391:8): [True: 0, False: 0]
  ------------------
16392|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16392:8): [True: 0, False: 0]
  ------------------
16393|      0|			goto yy826;
16394|      2|		} else {
16395|      2|			if (yych <= 't') goto yy877;
  ------------------
  |  Branch (16395:8): [True: 2, False: 0]
  ------------------
16396|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16396:8): [True: 0, False: 0]
  ------------------
16397|      0|			goto yy20;
16398|      0|		}
16399|      2|	}
16400|      0|yy716:
16401|      0|	YYDEBUG(716, *YYCURSOR);
16402|      0|	yyaccept = 2;
16403|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16404|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (16404:6): [True: 0, False: 0]
  ------------------
16405|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16405:7): [True: 0, False: 0]
  ------------------
16406|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16406:8): [True: 0, False: 0]
  ------------------
16407|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16407:8): [True: 0, False: 0]
  ------------------
16408|      0|			goto yy297;
16409|      0|		} else {
16410|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16410:8): [True: 0, False: 0]
  ------------------
16411|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16411:8): [True: 0, False: 0]
  ------------------
16412|      0|			goto yy826;
16413|      0|		}
16414|      0|	} else {
16415|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16415:7): [True: 0, False: 0]
  ------------------
16416|      0|			if (yych <= 'D') goto yy875;
  ------------------
  |  Branch (16416:8): [True: 0, False: 0]
  ------------------
16417|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16417:8): [True: 0, False: 0]
  ------------------
16418|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16418:8): [True: 0, False: 0]
  ------------------
16419|      0|			goto yy297;
16420|      0|		} else {
16421|      0|			if (yych <= 'c') {
  ------------------
  |  Branch (16421:8): [True: 0, False: 0]
  ------------------
16422|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16422:9): [True: 0, False: 0]
  ------------------
16423|      0|				goto yy829;
16424|      0|			} else {
16425|      0|				if (yych <= 'd') goto yy878;
  ------------------
  |  Branch (16425:9): [True: 0, False: 0]
  ------------------
16426|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16426:9): [True: 0, False: 0]
  ------------------
16427|      0|				goto yy20;
16428|      0|			}
16429|      0|		}
16430|      0|	}
16431|      0|yy717:
16432|      0|	YYDEBUG(717, *YYCURSOR);
16433|      0|	yyaccept = 2;
16434|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16435|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (16435:6): [True: 0, False: 0]
  ------------------
16436|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16436:7): [True: 0, False: 0]
  ------------------
16437|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16437:8): [True: 0, False: 0]
  ------------------
16438|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16438:8): [True: 0, False: 0]
  ------------------
16439|      0|			goto yy297;
16440|      0|		} else {
16441|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16441:8): [True: 0, False: 0]
  ------------------
16442|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16442:8): [True: 0, False: 0]
  ------------------
16443|      0|			goto yy826;
16444|      0|		}
16445|      0|	} else {
16446|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16446:7): [True: 0, False: 0]
  ------------------
16447|      0|			if (yych <= 'D') goto yy836;
  ------------------
  |  Branch (16447:8): [True: 0, False: 0]
  ------------------
16448|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16448:8): [True: 0, False: 0]
  ------------------
16449|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16449:8): [True: 0, False: 0]
  ------------------
16450|      0|			goto yy297;
16451|      0|		} else {
16452|      0|			if (yych <= 'c') {
  ------------------
  |  Branch (16452:8): [True: 0, False: 0]
  ------------------
16453|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16453:9): [True: 0, False: 0]
  ------------------
16454|      0|				goto yy829;
16455|      0|			} else {
16456|      0|				if (yych <= 'd') goto yy840;
  ------------------
  |  Branch (16456:9): [True: 0, False: 0]
  ------------------
16457|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16457:9): [True: 0, False: 0]
  ------------------
16458|      0|				goto yy20;
16459|      0|			}
16460|      0|		}
16461|      0|	}
16462|      0|yy718:
16463|      0|	YYDEBUG(718, *YYCURSOR);
16464|      0|	yyaccept = 2;
16465|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16466|      0|	if (yych <= 'L') {
  ------------------
  |  Branch (16466:6): [True: 0, False: 0]
  ------------------
16467|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16467:7): [True: 0, False: 0]
  ------------------
16468|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16468:8): [True: 0, False: 0]
  ------------------
16469|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16469:8): [True: 0, False: 0]
  ------------------
16470|      0|			goto yy297;
16471|      0|		} else {
16472|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16472:8): [True: 0, False: 0]
  ------------------
16473|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16473:8): [True: 0, False: 0]
  ------------------
16474|      0|			goto yy826;
16475|      0|		}
16476|      0|	} else {
16477|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16477:7): [True: 0, False: 0]
  ------------------
16478|      0|			if (yych <= 'M') goto yy876;
  ------------------
  |  Branch (16478:8): [True: 0, False: 0]
  ------------------
16479|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16479:8): [True: 0, False: 0]
  ------------------
16480|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16480:8): [True: 0, False: 0]
  ------------------
16481|      0|			goto yy297;
16482|      0|		} else {
16483|      0|			if (yych <= 'l') {
  ------------------
  |  Branch (16483:8): [True: 0, False: 0]
  ------------------
16484|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16484:9): [True: 0, False: 0]
  ------------------
16485|      0|				goto yy829;
16486|      0|			} else {
16487|      0|				if (yych <= 'm') goto yy879;
  ------------------
  |  Branch (16487:9): [True: 0, False: 0]
  ------------------
16488|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16488:9): [True: 0, False: 0]
  ------------------
16489|      0|				goto yy20;
16490|      0|			}
16491|      0|		}
16492|      0|	}
16493|      1|yy719:
16494|      1|	YYDEBUG(719, *YYCURSOR);
16495|      1|	yyaccept = 2;
16496|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16497|      1|	if (yych <= 'S') {
  ------------------
  |  Branch (16497:6): [True: 1, False: 0]
  ------------------
16498|      1|		if (yych <= '-') {
  ------------------
  |  Branch (16498:7): [True: 1, False: 0]
  ------------------
16499|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16499:8): [True: 0, False: 1]
  ------------------
16500|      1|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16500:8): [True: 1, False: 0]
  ------------------
16501|      0|			goto yy297;
16502|      1|		} else {
16503|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16503:8): [True: 0, False: 0]
  ------------------
16504|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16504:8): [True: 0, False: 0]
  ------------------
16505|      0|			goto yy826;
16506|      0|		}
16507|      1|	} else {
16508|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16508:7): [True: 0, False: 0]
  ------------------
16509|      0|			if (yych <= 'T') goto yy877;
  ------------------
  |  Branch (16509:8): [True: 0, False: 0]
  ------------------
16510|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16510:8): [True: 0, False: 0]
  ------------------
16511|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16511:8): [True: 0, False: 0]
  ------------------
16512|      0|			goto yy297;
16513|      0|		} else {
16514|      0|			if (yych <= 's') {
  ------------------
  |  Branch (16514:8): [True: 0, False: 0]
  ------------------
16515|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16515:9): [True: 0, False: 0]
  ------------------
16516|      0|				goto yy829;
16517|      0|			} else {
16518|      0|				if (yych <= 't') goto yy880;
  ------------------
  |  Branch (16518:9): [True: 0, False: 0]
  ------------------
16519|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16519:9): [True: 0, False: 0]
  ------------------
16520|      0|				goto yy20;
16521|      0|			}
16522|      0|		}
16523|      0|	}
16524|     21|yy720:
16525|     21|	YYDEBUG(720, *YYCURSOR);
16526|     21|	yyaccept = 12;
16527|     21|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     21|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     21|#define   YYCURSOR     cursor
  ------------------
16528|     21|	if (yych <= '/') goto yy420;
  ------------------
  |  Branch (16528:6): [True: 0, False: 21]
  ------------------
16529|     21|	if (yych <= '5') goto yy881;
  ------------------
  |  Branch (16529:6): [True: 13, False: 8]
  ------------------
16530|      8|	if (yych <= '6') goto yy882;
  ------------------
  |  Branch (16530:6): [True: 0, False: 8]
  ------------------
16531|      8|	goto yy420;
16532|      8|yy721:
16533|      0|	YYDEBUG(721, *YYCURSOR);
16534|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16535|      0|	if (yych <= '@') {
  ------------------
  |  Branch (16535:6): [True: 0, False: 0]
  ------------------
16536|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (16536:7): [True: 0, False: 0]
  ------------------
16537|      0|	} else {
16538|      0|		if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16538:7): [True: 0, False: 0]
  ------------------
16539|      0|		if (yych <= '`') goto yy722;
  ------------------
  |  Branch (16539:7): [True: 0, False: 0]
  ------------------
16540|      0|		if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16540:7): [True: 0, False: 0]
  ------------------
16541|      0|	}
16542|      0|yy722:
16543|      0|	YYDEBUG(722, *YYCURSOR);
16544|      0|#line 1199 "ext/date/lib/parse_date.re"
16545|      0|	{
16546|      0|		DEBUG_OUTPUT("midnight | today");
16547|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
16548|      0|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
16549|       |
16550|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16551|      0|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      0|#define TIMELIB_RELATIVE       310
  ------------------
16552|      0|	}
16553|      0|#line 16554 "ext/date/lib/parse_date.c"
16554|      0|yy723:
16555|      0|	YYDEBUG(723, *YYCURSOR);
16556|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16557|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (16557:6): [True: 0, False: 0]
  ------------------
16558|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16558:7): [True: 0, False: 0]
  ------------------
16559|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16559:8): [True: 0, False: 0]
  ------------------
16560|      0|			goto yy115;
16561|      0|		} else {
16562|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16562:8): [True: 0, False: 0]
  ------------------
16563|      0|			if (yych <= 'Q') goto yy826;
  ------------------
  |  Branch (16563:8): [True: 0, False: 0]
  ------------------
16564|      0|			goto yy883;
16565|      0|		}
16566|      0|	} else {
16567|      0|		if (yych <= 'q') {
  ------------------
  |  Branch (16567:7): [True: 0, False: 0]
  ------------------
16568|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16568:8): [True: 0, False: 0]
  ------------------
16569|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16569:8): [True: 0, False: 0]
  ------------------
16570|      0|			goto yy826;
16571|      0|		} else {
16572|      0|			if (yych <= 'r') goto yy883;
  ------------------
  |  Branch (16572:8): [True: 0, False: 0]
  ------------------
16573|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16573:8): [True: 0, False: 0]
  ------------------
16574|      0|			goto yy20;
16575|      0|		}
16576|      0|	}
16577|      0|yy724:
16578|      0|	YYDEBUG(724, *YYCURSOR);
16579|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16580|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (16580:6): [True: 0, False: 0]
  ------------------
16581|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (16581:7): [True: 0, False: 0]
  ------------------
16582|      0|		if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16582:7): [True: 0, False: 0]
  ------------------
16583|      0|		goto yy884;
16584|      0|	} else {
16585|      0|		if (yych <= '`') {
  ------------------
  |  Branch (16585:7): [True: 0, False: 0]
  ------------------
16586|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16586:8): [True: 0, False: 0]
  ------------------
16587|      0|			goto yy20;
16588|      0|		} else {
16589|      0|			if (yych <= 'a') goto yy884;
  ------------------
  |  Branch (16589:8): [True: 0, False: 0]
  ------------------
16590|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16590:8): [True: 0, False: 0]
  ------------------
16591|      0|			goto yy20;
16592|      0|		}
16593|      0|	}
16594|      0|yy725:
16595|      0|	YYDEBUG(725, *YYCURSOR);
16596|      0|	yyaccept = 16;
16597|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16598|      0|	if (yych <= '/') {
  ------------------
  |  Branch (16598:6): [True: 0, False: 0]
  ------------------
16599|      0|		if (yych <= ',') {
  ------------------
  |  Branch (16599:7): [True: 0, False: 0]
  ------------------
16600|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16600:8): [True: 0, False: 0]
  ------------------
16601|      0|			goto yy722;
16602|      0|		} else {
16603|      0|			if (yych == '.') goto yy722;
  ------------------
  |  Branch (16603:8): [True: 0, False: 0]
  ------------------
16604|      0|			goto yy297;
16605|      0|		}
16606|      0|	} else {
16607|      0|		if (yych <= '^') {
  ------------------
  |  Branch (16607:7): [True: 0, False: 0]
  ------------------
16608|      0|			if (yych <= '@') goto yy722;
  ------------------
  |  Branch (16608:8): [True: 0, False: 0]
  ------------------
16609|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16609:8): [True: 0, False: 0]
  ------------------
16610|      0|			goto yy722;
16611|      0|		} else {
16612|      0|			if (yych <= '_') goto yy297;
  ------------------
  |  Branch (16612:8): [True: 0, False: 0]
  ------------------
16613|      0|			if (yych <= '`') goto yy722;
  ------------------
  |  Branch (16613:8): [True: 0, False: 0]
  ------------------
16614|      0|			if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16614:8): [True: 0, False: 0]
  ------------------
16615|      0|			goto yy722;
16616|      0|		}
16617|      0|	}
16618|      1|yy726:
16619|      1|	YYDEBUG(726, *YYCURSOR);
16620|      1|	yyaccept = 2;
16621|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16622|      1|	if (yych <= 'Q') {
  ------------------
  |  Branch (16622:6): [True: 0, False: 1]
  ------------------
16623|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16623:7): [True: 0, False: 0]
  ------------------
16624|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16624:8): [True: 0, False: 0]
  ------------------
16625|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16625:8): [True: 0, False: 0]
  ------------------
16626|      0|			goto yy297;
16627|      0|		} else {
16628|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16628:8): [True: 0, False: 0]
  ------------------
16629|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16629:8): [True: 0, False: 0]
  ------------------
16630|      0|			goto yy826;
16631|      0|		}
16632|      1|	} else {
16633|      1|		if (yych <= '_') {
  ------------------
  |  Branch (16633:7): [True: 0, False: 1]
  ------------------
16634|      0|			if (yych <= 'R') goto yy883;
  ------------------
  |  Branch (16634:8): [True: 0, False: 0]
  ------------------
16635|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16635:8): [True: 0, False: 0]
  ------------------
16636|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16636:8): [True: 0, False: 0]
  ------------------
16637|      0|			goto yy297;
16638|      1|		} else {
16639|      1|			if (yych <= 'q') {
  ------------------
  |  Branch (16639:8): [True: 0, False: 1]
  ------------------
16640|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16640:9): [True: 0, False: 0]
  ------------------
16641|      0|				goto yy829;
16642|      1|			} else {
16643|      1|				if (yych <= 'r') goto yy885;
  ------------------
  |  Branch (16643:9): [True: 1, False: 0]
  ------------------
16644|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16644:9): [True: 0, False: 0]
  ------------------
16645|      0|				goto yy20;
16646|      0|			}
16647|      1|		}
16648|      1|	}
16649|      1|yy727:
16650|      1|	YYDEBUG(727, *YYCURSOR);
16651|      1|	yyaccept = 2;
16652|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16653|      1|	if (yych <= '@') {
  ------------------
  |  Branch (16653:6): [True: 0, False: 1]
  ------------------
16654|      0|		if (yych <= ',') {
  ------------------
  |  Branch (16654:7): [True: 0, False: 0]
  ------------------
16655|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16655:8): [True: 0, False: 0]
  ------------------
16656|      0|			goto yy20;
16657|      0|		} else {
16658|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (16658:8): [True: 0, False: 0]
  ------------------
16659|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (16659:8): [True: 0, False: 0]
  ------------------
16660|      0|			goto yy20;
16661|      0|		}
16662|      1|	} else {
16663|      1|		if (yych <= '_') {
  ------------------
  |  Branch (16663:7): [True: 1, False: 0]
  ------------------
16664|      1|			if (yych <= 'A') goto yy884;
  ------------------
  |  Branch (16664:8): [True: 0, False: 1]
  ------------------
16665|      1|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16665:8): [True: 0, False: 1]
  ------------------
16666|      1|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16666:8): [True: 1, False: 0]
  ------------------
16667|      0|			goto yy297;
16668|      1|		} else {
16669|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16669:8): [True: 0, False: 0]
  ------------------
16670|      0|			if (yych <= 'a') goto yy886;
  ------------------
  |  Branch (16670:8): [True: 0, False: 0]
  ------------------
16671|      0|			if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16671:8): [True: 0, False: 0]
  ------------------
16672|      0|			goto yy20;
16673|      0|		}
16674|      1|	}
16675|      0|yy728:
16676|      0|	YYDEBUG(728, *YYCURSOR);
16677|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16678|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (16678:6): [True: 0, False: 0]
  ------------------
16679|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16679:7): [True: 0, False: 0]
  ------------------
16680|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16680:8): [True: 0, False: 0]
  ------------------
16681|      0|			goto yy115;
16682|      0|		} else {
16683|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16683:8): [True: 0, False: 0]
  ------------------
16684|      0|			if (yych <= 'R') goto yy826;
  ------------------
  |  Branch (16684:8): [True: 0, False: 0]
  ------------------
16685|      0|			goto yy887;
16686|      0|		}
16687|      0|	} else {
16688|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (16688:7): [True: 0, False: 0]
  ------------------
16689|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16689:8): [True: 0, False: 0]
  ------------------
16690|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16690:8): [True: 0, False: 0]
  ------------------
16691|      0|			goto yy826;
16692|      0|		} else {
16693|      0|			if (yych <= 's') goto yy887;
  ------------------
  |  Branch (16693:8): [True: 0, False: 0]
  ------------------
16694|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16694:8): [True: 0, False: 0]
  ------------------
16695|      0|			goto yy20;
16696|      0|		}
16697|      0|	}
16698|      0|yy729:
16699|      0|	YYDEBUG(729, *YYCURSOR);
16700|      0|	yyaccept = 2;
16701|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16702|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (16702:6): [True: 0, False: 0]
  ------------------
16703|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16703:7): [True: 0, False: 0]
  ------------------
16704|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16704:8): [True: 0, False: 0]
  ------------------
16705|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16705:8): [True: 0, False: 0]
  ------------------
16706|      0|			goto yy297;
16707|      0|		} else {
16708|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16708:8): [True: 0, False: 0]
  ------------------
16709|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16709:8): [True: 0, False: 0]
  ------------------
16710|      0|			goto yy826;
16711|      0|		}
16712|      0|	} else {
16713|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16713:7): [True: 0, False: 0]
  ------------------
16714|      0|			if (yych <= 'S') goto yy887;
  ------------------
  |  Branch (16714:8): [True: 0, False: 0]
  ------------------
16715|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16715:8): [True: 0, False: 0]
  ------------------
16716|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16716:8): [True: 0, False: 0]
  ------------------
16717|      0|			goto yy297;
16718|      0|		} else {
16719|      0|			if (yych <= 'r') {
  ------------------
  |  Branch (16719:8): [True: 0, False: 0]
  ------------------
16720|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16720:9): [True: 0, False: 0]
  ------------------
16721|      0|				goto yy829;
16722|      0|			} else {
16723|      0|				if (yych <= 's') goto yy888;
  ------------------
  |  Branch (16723:9): [True: 0, False: 0]
  ------------------
16724|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16724:9): [True: 0, False: 0]
  ------------------
16725|      0|				goto yy20;
16726|      0|			}
16727|      0|		}
16728|      0|	}
16729|      1|yy730:
16730|      1|	YYDEBUG(730, *YYCURSOR);
16731|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16732|      1|	if (yych <= 'R') {
  ------------------
  |  Branch (16732:6): [True: 0, False: 1]
  ------------------
16733|      0|		if (yych <= ')') {
  ------------------
  |  Branch (16733:7): [True: 0, False: 0]
  ------------------
16734|      0|			if (yych <= '(') goto yy20;
  ------------------
  |  Branch (16734:8): [True: 0, False: 0]
  ------------------
16735|      0|			goto yy115;
16736|      0|		} else {
16737|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16737:8): [True: 0, False: 0]
  ------------------
16738|      0|			if (yych <= 'Q') goto yy826;
  ------------------
  |  Branch (16738:8): [True: 0, False: 0]
  ------------------
16739|      0|			goto yy889;
16740|      0|		}
16741|      1|	} else {
16742|      1|		if (yych <= 'q') {
  ------------------
  |  Branch (16742:7): [True: 0, False: 1]
  ------------------
16743|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16743:8): [True: 0, False: 0]
  ------------------
16744|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16744:8): [True: 0, False: 0]
  ------------------
16745|      0|			goto yy826;
16746|      1|		} else {
16747|      1|			if (yych <= 'r') goto yy889;
  ------------------
  |  Branch (16747:8): [True: 1, False: 0]
  ------------------
16748|      0|			if (yych <= 'z') goto yy826;
  ------------------
  |  Branch (16748:8): [True: 0, False: 0]
  ------------------
16749|      0|			goto yy20;
16750|      0|		}
16751|      1|	}
16752|      0|yy731:
16753|      0|	YYDEBUG(731, *YYCURSOR);
16754|      0|	yyaccept = 2;
16755|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16756|      0|	if (yych <= 'Q') {
  ------------------
  |  Branch (16756:6): [True: 0, False: 0]
  ------------------
16757|      0|		if (yych <= '-') {
  ------------------
  |  Branch (16757:7): [True: 0, False: 0]
  ------------------
16758|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (16758:8): [True: 0, False: 0]
  ------------------
16759|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (16759:8): [True: 0, False: 0]
  ------------------
16760|      0|			goto yy297;
16761|      0|		} else {
16762|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (16762:8): [True: 0, False: 0]
  ------------------
16763|      0|			if (yych <= '@') goto yy20;
  ------------------
  |  Branch (16763:8): [True: 0, False: 0]
  ------------------
16764|      0|			goto yy826;
16765|      0|		}
16766|      0|	} else {
16767|      0|		if (yych <= '_') {
  ------------------
  |  Branch (16767:7): [True: 0, False: 0]
  ------------------
16768|      0|			if (yych <= 'R') goto yy889;
  ------------------
  |  Branch (16768:8): [True: 0, False: 0]
  ------------------
16769|      0|			if (yych <= 'Z') goto yy826;
  ------------------
  |  Branch (16769:8): [True: 0, False: 0]
  ------------------
16770|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (16770:8): [True: 0, False: 0]
  ------------------
16771|      0|			goto yy297;
16772|      0|		} else {
16773|      0|			if (yych <= 'q') {
  ------------------
  |  Branch (16773:8): [True: 0, False: 0]
  ------------------
16774|      0|				if (yych <= '`') goto yy20;
  ------------------
  |  Branch (16774:9): [True: 0, False: 0]
  ------------------
16775|      0|				goto yy829;
16776|      0|			} else {
16777|      0|				if (yych <= 'r') goto yy890;
  ------------------
  |  Branch (16777:9): [True: 0, False: 0]
  ------------------
16778|      0|				if (yych <= 'z') goto yy829;
  ------------------
  |  Branch (16778:9): [True: 0, False: 0]
  ------------------
16779|      0|				goto yy20;
16780|      0|			}
16781|      0|		}
16782|      0|	}
16783|      8|yy732:
16784|      8|	YYDEBUG(732, *YYCURSOR);
16785|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
16786|      8|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (16786:6): [True: 0, False: 8]
  ------------------
16787|      8|	if (yych <= '0') goto yy891;
  ------------------
  |  Branch (16787:6): [True: 5, False: 3]
  ------------------
16788|      3|	if (yych <= '1') goto yy892;
  ------------------
  |  Branch (16788:6): [True: 1, False: 2]
  ------------------
16789|      2|	goto yy59;
16790|     37|yy733:
16791|     37|	YYDEBUG(733, *YYCURSOR);
16792|     37|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     37|#define   YYCURSOR     cursor
  ------------------
16793|     37|	if (yych <= '9') {
  ------------------
  |  Branch (16793:6): [True: 37, False: 0]
  ------------------
16794|     37|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (16794:7): [True: 1, False: 36]
  ------------------
16795|     36|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (16795:7): [True: 2, False: 34]
  ------------------
16796|     34|		goto yy894;
16797|     36|	} else {
16798|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (16798:7): [True: 0, False: 0]
  ------------------
16799|      0|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (16799:8): [True: 0, False: 0]
  ------------------
16800|      0|			goto yy97;
16801|      0|		} else {
16802|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (16802:8): [True: 0, False: 0]
  ------------------
16803|      0|			goto yy196;
16804|      0|		}
16805|      0|	}
16806|      6|yy734:
16807|      6|	YYDEBUG(734, *YYCURSOR);
16808|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
16809|      6|	if (yych <= '9') {
  ------------------
  |  Branch (16809:6): [True: 6, False: 0]
  ------------------
16810|      6|		if (yych <= '-') {
  ------------------
  |  Branch (16810:7): [True: 0, False: 6]
  ------------------
16811|      0|			if (yych <= ',') goto yy196;
  ------------------
  |  Branch (16811:8): [True: 0, False: 0]
  ------------------
16812|      0|			goto yy893;
16813|      6|		} else {
16814|      6|			if (yych <= '/') goto yy196;
  ------------------
  |  Branch (16814:8): [True: 0, False: 6]
  ------------------
16815|      6|			if (yych <= '0') goto yy894;
  ------------------
  |  Branch (16815:8): [True: 0, False: 6]
  ------------------
16816|      6|			goto yy895;
16817|      6|		}
16818|      6|	} else {
16819|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (16819:7): [True: 0, False: 0]
  ------------------
16820|      0|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (16820:8): [True: 0, False: 0]
  ------------------
16821|      0|			goto yy97;
16822|      0|		} else {
16823|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (16823:8): [True: 0, False: 0]
  ------------------
16824|      0|			goto yy196;
16825|      0|		}
16826|      0|	}
16827|     54|yy735:
16828|     54|	YYDEBUG(735, *YYCURSOR);
16829|     54|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     54|#define   YYCURSOR     cursor
  ------------------
16830|     54|	if (yych <= '9') {
  ------------------
  |  Branch (16830:6): [True: 44, False: 10]
  ------------------
16831|     44|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (16831:7): [True: 1, False: 43]
  ------------------
16832|     43|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (16832:7): [True: 5, False: 38]
  ------------------
16833|     38|		goto yy895;
16834|     43|	} else {
16835|     10|		if (yych <= 0xC2) {
  ------------------
  |  Branch (16835:7): [True: 8, False: 2]
  ------------------
16836|      8|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (16836:8): [True: 8, False: 0]
  ------------------
16837|      0|			goto yy97;
16838|      8|		} else {
16839|      2|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (16839:8): [True: 0, False: 2]
  ------------------
16840|      2|			goto yy196;
16841|      2|		}
16842|     10|	}
16843|      3|yy736:
16844|      3|	YYDEBUG(736, *YYCURSOR);
16845|      3|	yyaccept = 2;
16846|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
16847|      3|	if (yych == ':') goto yy896;
  ------------------
  |  Branch (16847:6): [True: 0, False: 3]
  ------------------
16848|      3|	goto yy20;
16849|      3|yy737:
16850|      1|	YYDEBUG(737, *YYCURSOR);
16851|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16852|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (16852:6): [True: 0, False: 1]
  ------------------
16853|      1|	if (yych <= '9') goto yy897;
  ------------------
  |  Branch (16853:6): [True: 0, False: 1]
  ------------------
16854|      1|	goto yy59;
16855|      7|yy738:
16856|      7|	YYDEBUG(738, *YYCURSOR);
16857|      7|	yyaccept = 17;
16858|      7|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      7|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
16859|      7|	if (yych <= '/') goto yy739;
  ------------------
  |  Branch (16859:6): [True: 3, False: 4]
  ------------------
16860|      4|	if (yych <= '9') goto yy897;
  ------------------
  |  Branch (16860:6): [True: 0, False: 4]
  ------------------
16861|      7|yy739:
16862|      7|	YYDEBUG(739, *YYCURSOR);
16863|      7|#line 1590 "ext/date/lib/parse_date.re"
16864|      7|	{
16865|      7|		int length = 0;
16866|      7|		DEBUG_OUTPUT("pointed date YY");
16867|      7|		TIMELIB_INIT;
  ------------------
  |  |  107|      7|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
16868|      7|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      7|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      5|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      5|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      5|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 5, False: 2]
  |  |  ------------------
  ------------------
16869|      2|		s->time->d = timelib_get_nr(&ptr, 2);
16870|      2|		s->time->m = timelib_get_nr(&ptr, 2);
16871|      2|		s->time->y = timelib_get_nr_ex(&ptr, 2, &length);
16872|      2|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      2|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      2|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      2|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 2]
  |  |  |  Branch (112:32): [True: 0, False: 2]
  |  |  ------------------
  |  |  113|      0|	/*	(x) = 0; */          \
  |  |  114|      2|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  115|      2|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 1, False: 1]
  |  |  ------------------
  |  |  116|      1|			(x) += 2000;     \
  |  |  117|      1|		} else {             \
  |  |  118|      1|			(x) += 1900;     \
  |  |  119|      1|		}                    \
  |  |  120|      2|	}                        \
  |  |  121|      2|}
  ------------------
16873|      2|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      2|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      2|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16874|      2|		return TIMELIB_DATE_FULL_POINTED;
  ------------------
  |  |   69|      2|#define TIMELIB_DATE_FULL_POINTED 277
  ------------------
16875|      7|	}
16876|      0|#line 16877 "ext/date/lib/parse_date.c"
16877|      2|yy740:
16878|      2|	YYDEBUG(740, *YYCURSOR);
16879|      2|	yyaccept = 15;
16880|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
16881|      2|	if (yych <= 'n') {
  ------------------
  |  Branch (16881:6): [True: 2, False: 0]
  ------------------
16882|      2|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (16882:7): [True: 0, False: 2]
  ------------------
16883|      2|		if (yych <= '9') goto yy897;
  ------------------
  |  Branch (16883:7): [True: 0, False: 2]
  ------------------
16884|      2|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (16884:7): [True: 2, False: 0]
  ------------------
16885|      2|	} else {
16886|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (16886:7): [True: 0, False: 0]
  ------------------
16887|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (16887:8): [True: 0, False: 0]
  ------------------
16888|      0|		} else {
16889|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (16889:8): [True: 0, False: 0]
  ------------------
16890|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (16890:8): [True: 0, False: 0]
  ------------------
16891|      0|			goto yy567;
16892|      0|		}
16893|      0|	}
16894|      0|yy741:
16895|      0|	YYDEBUG(741, *YYCURSOR);
16896|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16897|      0|	if (yych == 'd') goto yy898;
  ------------------
  |  Branch (16897:6): [True: 0, False: 0]
  ------------------
16898|      0|	goto yy59;
16899|      0|yy742:
16900|      0|	YYDEBUG(742, *YYCURSOR);
16901|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16902|      0|	if (yych == 't') goto yy898;
  ------------------
  |  Branch (16902:6): [True: 0, False: 0]
  ------------------
16903|      0|	goto yy59;
16904|      0|yy743:
16905|      0|	YYDEBUG(743, *YYCURSOR);
16906|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16907|      0|	if (yych == 'h') goto yy898;
  ------------------
  |  Branch (16907:6): [True: 0, False: 0]
  ------------------
16908|      0|	goto yy59;
16909|      5|yy744:
16910|      5|	YYDEBUG(744, *YYCURSOR);
16911|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
16912|      5|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (16912:6): [True: 0, False: 5]
  ------------------
16913|      5|	if (yych <= '9') goto yy899;
  ------------------
  |  Branch (16913:6): [True: 5, False: 0]
  ------------------
16914|      0|	goto yy59;
16915|      2|yy745:
16916|      2|	YYDEBUG(745, *YYCURSOR);
16917|      2|	yyaccept = 4;
16918|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
16919|      2|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (16919:6): [True: 0, False: 2]
  ------------------
16920|      2|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (16920:6): [True: 2, False: 0]
  ------------------
16921|      0|	if (yych <= '9') goto yy897;
  ------------------
  |  Branch (16921:6): [True: 0, False: 0]
  ------------------
16922|      0|	goto yy177;
16923|      6|yy746:
16924|      6|	YYDEBUG(746, *YYCURSOR);
16925|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
16926|      6|	if (yych <= '/') goto yy224;
  ------------------
  |  Branch (16926:6): [True: 1, False: 5]
  ------------------
16927|      5|	if (yych <= '9') goto yy901;
  ------------------
  |  Branch (16927:6): [True: 5, False: 0]
  ------------------
16928|      0|	goto yy224;
16929|      0|yy747:
16930|      0|	YYDEBUG(747, *YYCURSOR);
16931|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16932|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (16932:6): [True: 0, False: 0]
  ------------------
16933|      0|	if (yych <= '9') goto yy902;
  ------------------
  |  Branch (16933:6): [True: 0, False: 0]
  ------------------
16934|      0|	goto yy59;
16935|      0|yy748:
16936|      0|	YYDEBUG(748, *YYCURSOR);
16937|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
16938|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (16938:6): [True: 0, False: 0]
  ------------------
16939|      0|	if (yych <= '2') goto yy903;
  ------------------
  |  Branch (16939:6): [True: 0, False: 0]
  ------------------
16940|      0|	if (yych <= '3') goto yy904;
  ------------------
  |  Branch (16940:6): [True: 0, False: 0]
  ------------------
16941|      0|	if (yych <= '9') goto yy569;
  ------------------
  |  Branch (16941:6): [True: 0, False: 0]
  ------------------
16942|      0|	goto yy59;
16943|      7|yy749:
16944|      7|	YYDEBUG(749, *YYCURSOR);
16945|      7|	++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
16946|      7|	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
  ------------------
  |  |   90|      7|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (16946:6): [True: 0, False: 7]
  ------------------
16947|      7|	yych = *YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
16948|     21|yy750:
16949|     21|	YYDEBUG(750, *YYCURSOR);
16950|     21|	switch (yych) {
16951|      0|	case '\t':
  ------------------
  |  Branch (16951:2): [True: 0, False: 21]
  ------------------
16952|      0|	case ' ':
  ------------------
  |  Branch (16952:2): [True: 0, False: 21]
  ------------------
16953|      7|	case '-':
  ------------------
  |  Branch (16953:2): [True: 7, False: 14]
  ------------------
16954|      7|	case '.':	goto yy749;
  ------------------
  |  Branch (16954:2): [True: 0, False: 21]
  ------------------
16955|      0|	case 'A':
  ------------------
  |  Branch (16955:2): [True: 0, False: 21]
  ------------------
16956|      0|	case 'a':	goto yy596;
  ------------------
  |  Branch (16956:2): [True: 0, False: 21]
  ------------------
16957|      0|	case 'D':
  ------------------
  |  Branch (16957:2): [True: 0, False: 21]
  ------------------
16958|      0|	case 'd':	goto yy769;
  ------------------
  |  Branch (16958:2): [True: 0, False: 21]
  ------------------
16959|      0|	case 'F':
  ------------------
  |  Branch (16959:2): [True: 0, False: 21]
  ------------------
16960|      0|	case 'f':	goto yy770;
  ------------------
  |  Branch (16960:2): [True: 0, False: 21]
  ------------------
16961|      0|	case 'I':	goto yy599;
  ------------------
  |  Branch (16961:2): [True: 0, False: 21]
  ------------------
16962|      0|	case 'J':
  ------------------
  |  Branch (16962:2): [True: 0, False: 21]
  ------------------
16963|      0|	case 'j':	goto yy601;
  ------------------
  |  Branch (16963:2): [True: 0, False: 21]
  ------------------
16964|      0|	case 'M':
  ------------------
  |  Branch (16964:2): [True: 0, False: 21]
  ------------------
16965|      0|	case 'm':	goto yy771;
  ------------------
  |  Branch (16965:2): [True: 0, False: 21]
  ------------------
16966|      0|	case 'N':
  ------------------
  |  Branch (16966:2): [True: 0, False: 21]
  ------------------
16967|      4|	case 'n':	goto yy603;
  ------------------
  |  Branch (16967:2): [True: 4, False: 17]
  ------------------
16968|      0|	case 'O':
  ------------------
  |  Branch (16968:2): [True: 0, False: 21]
  ------------------
16969|      0|	case 'o':	goto yy604;
  ------------------
  |  Branch (16969:2): [True: 0, False: 21]
  ------------------
16970|      0|	case 'S':
  ------------------
  |  Branch (16970:2): [True: 0, False: 21]
  ------------------
16971|      0|	case 's':	goto yy772;
  ------------------
  |  Branch (16971:2): [True: 0, False: 21]
  ------------------
16972|      1|	case 'V':	goto yy606;
  ------------------
  |  Branch (16972:2): [True: 1, False: 20]
  ------------------
16973|      0|	case 'X':	goto yy608;
  ------------------
  |  Branch (16973:2): [True: 0, False: 21]
  ------------------
16974|      9|	default:	goto yy59;
  ------------------
  |  Branch (16974:2): [True: 9, False: 12]
  ------------------
16975|     21|	}
16976|      1|yy751:
16977|      1|	YYDEBUG(751, *YYCURSOR);
16978|      1|	yyaccept = 18;
16979|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
16980|      1|	if (yych <= '/') {
  ------------------
  |  Branch (16980:6): [True: 0, False: 1]
  ------------------
16981|      0|		if (yych == '-') goto yy905;
  ------------------
  |  Branch (16981:7): [True: 0, False: 0]
  ------------------
16982|      1|	} else {
16983|      1|		if (yych <= '0') goto yy906;
  ------------------
  |  Branch (16983:7): [True: 0, False: 1]
  ------------------
16984|      1|		if (yych <= '9') goto yy907;
  ------------------
  |  Branch (16984:7): [True: 1, False: 0]
  ------------------
16985|      1|	}
16986|      9|yy752:
16987|      9|	YYDEBUG(752, *YYCURSOR);
16988|      9|#line 1535 "ext/date/lib/parse_date.re"
16989|      9|	{
16990|      9|		int length = 0;
16991|      9|		DEBUG_OUTPUT("gnudateshorter");
16992|      9|		TIMELIB_INIT;
  ------------------
  |  |  107|      9|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
16993|      9|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      9|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      4|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      4|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      4|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 4, False: 5]
  |  |  ------------------
  ------------------
16994|      5|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
16995|      5|		s->time->m = timelib_get_nr(&ptr, 2);
16996|      5|		s->time->d = 1;
16997|      5|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      5|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      5|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      5|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 5]
  |  |  |  Branch (112:32): [True: 5, False: 0]
  |  |  ------------------
  |  |  113|      5|	/*	(x) = 0; */          \
  |  |  114|      5|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|      5|}
  ------------------
16998|      5|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      5|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      5|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
16999|      5|		return TIMELIB_ISO_DATE;
  ------------------
  |  |   59|      5|#define TIMELIB_ISO_DATE       267
  ------------------
17000|      9|	}
17001|      0|#line 17002 "ext/date/lib/parse_date.c"
17002|      2|yy753:
17003|      2|	YYDEBUG(753, *YYCURSOR);
17004|      2|	yyaccept = 18;
17005|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
17006|      2|	if (yych <= '/') {
  ------------------
  |  Branch (17006:6): [True: 1, False: 1]
  ------------------
17007|      1|		if (yych == '-') goto yy905;
  ------------------
  |  Branch (17007:7): [True: 1, False: 0]
  ------------------
17008|      0|		goto yy752;
17009|      1|	} else {
17010|      1|		if (yych <= '2') goto yy907;
  ------------------
  |  Branch (17010:7): [True: 0, False: 1]
  ------------------
17011|      1|		if (yych <= '9') goto yy908;
  ------------------
  |  Branch (17011:7): [True: 0, False: 1]
  ------------------
17012|      1|		goto yy752;
17013|      1|	}
17014|      3|yy754:
17015|      3|	YYDEBUG(754, *YYCURSOR);
17016|      3|	yyaccept = 18;
17017|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
17018|      3|	if (yych == '-') goto yy905;
  ------------------
  |  Branch (17018:6): [True: 2, False: 1]
  ------------------
17019|      1|	if (yych <= '/') goto yy752;
  ------------------
  |  Branch (17019:6): [True: 0, False: 1]
  ------------------
17020|      1|	if (yych <= '9') goto yy908;
  ------------------
  |  Branch (17020:6): [True: 0, False: 1]
  ------------------
17021|      1|	goto yy752;
17022|      8|yy755:
17023|      8|	YYDEBUG(755, *YYCURSOR);
17024|      8|	yyaccept = 18;
17025|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
17026|      8|	if (yych <= '/') {
  ------------------
  |  Branch (17026:6): [True: 4, False: 4]
  ------------------
17027|      4|		if (yych == '-') goto yy905;
  ------------------
  |  Branch (17027:7): [True: 0, False: 4]
  ------------------
17028|      4|		goto yy752;
17029|      4|	} else {
17030|      4|		if (yych <= '5') goto yy908;
  ------------------
  |  Branch (17030:7): [True: 2, False: 2]
  ------------------
17031|      2|		if (yych <= '6') goto yy909;
  ------------------
  |  Branch (17031:7): [True: 1, False: 1]
  ------------------
17032|      1|		goto yy752;
17033|      2|	}
17034|      1|yy756:
17035|      1|	YYDEBUG(756, *YYCURSOR);
17036|      1|	yyaccept = 18;
17037|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17038|      1|	if (yych == '-') goto yy905;
  ------------------
  |  Branch (17038:6): [True: 0, False: 1]
  ------------------
17039|      1|	goto yy752;
17040|      1|yy757:
17041|      1|	YYDEBUG(757, *YYCURSOR);
17042|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17043|      1|	if (yych <= 'U') {
  ------------------
  |  Branch (17043:6): [True: 1, False: 0]
  ------------------
17044|      1|		if (yych == 'P') goto yy910;
  ------------------
  |  Branch (17044:7): [True: 0, False: 1]
  ------------------
17045|      1|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (17045:7): [True: 1, False: 0]
  ------------------
17046|      0|		goto yy911;
17047|      1|	} else {
17048|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (17048:7): [True: 0, False: 0]
  ------------------
17049|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (17049:8): [True: 0, False: 0]
  ------------------
17050|      0|			goto yy910;
17051|      0|		} else {
17052|      0|			if (yych == 'u') goto yy911;
  ------------------
  |  Branch (17052:8): [True: 0, False: 0]
  ------------------
17053|      0|			goto yy59;
17054|      0|		}
17055|      0|	}
17056|      1|yy758:
17057|      1|	YYDEBUG(758, *YYCURSOR);
17058|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17059|      1|	if (yych == 'E') goto yy912;
  ------------------
  |  Branch (17059:6): [True: 0, False: 1]
  ------------------
17060|      1|	if (yych == 'e') goto yy912;
  ------------------
  |  Branch (17060:6): [True: 0, False: 1]
  ------------------
17061|      1|	goto yy59;
17062|      1|yy759:
17063|      1|	YYDEBUG(759, *YYCURSOR);
17064|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17065|      1|	if (yych == 'E') goto yy913;
  ------------------
  |  Branch (17065:6): [True: 0, False: 1]
  ------------------
17066|      1|	if (yych == 'e') goto yy913;
  ------------------
  |  Branch (17066:6): [True: 0, False: 1]
  ------------------
17067|      1|	goto yy59;
17068|      1|yy760:
17069|      0|	YYDEBUG(760, *YYCURSOR);
17070|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17071|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (17071:6): [True: 0, False: 0]
  ------------------
17072|      0|		if (yych == 'A') goto yy914;
  ------------------
  |  Branch (17072:7): [True: 0, False: 0]
  ------------------
17073|      0|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (17073:7): [True: 0, False: 0]
  ------------------
17074|      0|		goto yy915;
17075|      0|	} else {
17076|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (17076:7): [True: 0, False: 0]
  ------------------
17077|      0|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (17077:8): [True: 0, False: 0]
  ------------------
17078|      0|			goto yy914;
17079|      0|		} else {
17080|      0|			if (yych == 'u') goto yy915;
  ------------------
  |  Branch (17080:8): [True: 0, False: 0]
  ------------------
17081|      0|			goto yy59;
17082|      0|		}
17083|      0|	}
17084|      0|yy761:
17085|      0|	YYDEBUG(761, *YYCURSOR);
17086|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17087|      0|	if (yych == 'A') goto yy916;
  ------------------
  |  Branch (17087:6): [True: 0, False: 0]
  ------------------
17088|      0|	if (yych == 'a') goto yy916;
  ------------------
  |  Branch (17088:6): [True: 0, False: 0]
  ------------------
17089|      0|	goto yy59;
17090|      0|yy762:
17091|      0|	YYDEBUG(762, *YYCURSOR);
17092|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17093|      0|	if (yych == 'O') goto yy917;
  ------------------
  |  Branch (17093:6): [True: 0, False: 0]
  ------------------
17094|      0|	if (yych == 'o') goto yy917;
  ------------------
  |  Branch (17094:6): [True: 0, False: 0]
  ------------------
17095|      0|	goto yy59;
17096|      0|yy763:
17097|      0|	YYDEBUG(763, *YYCURSOR);
17098|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17099|      0|	if (yych == 'C') goto yy918;
  ------------------
  |  Branch (17099:6): [True: 0, False: 0]
  ------------------
17100|      0|	if (yych == 'c') goto yy918;
  ------------------
  |  Branch (17100:6): [True: 0, False: 0]
  ------------------
17101|      0|	goto yy59;
17102|      1|yy764:
17103|      1|	YYDEBUG(764, *YYCURSOR);
17104|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17105|      1|	if (yych == 'E') goto yy919;
  ------------------
  |  Branch (17105:6): [True: 0, False: 1]
  ------------------
17106|      1|	if (yych == 'e') goto yy919;
  ------------------
  |  Branch (17106:6): [True: 0, False: 1]
  ------------------
17107|      1|	goto yy59;
17108|      3|yy765:
17109|      3|	YYDEBUG(765, *YYCURSOR);
17110|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
17111|      3|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17111:6): [True: 0, False: 3]
  ------------------
17112|      3|	if (yych <= '0') goto yy797;
  ------------------
  |  Branch (17112:6): [True: 0, False: 3]
  ------------------
17113|      3|	if (yych <= '4') goto yy798;
  ------------------
  |  Branch (17113:6): [True: 2, False: 1]
  ------------------
17114|      1|	if (yych <= '5') goto yy799;
  ------------------
  |  Branch (17114:6): [True: 0, False: 1]
  ------------------
17115|      1|	goto yy59;
17116|     12|yy766:
17117|     12|	YYDEBUG(766, *YYCURSOR);
17118|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
17119|     12|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17119:6): [True: 0, False: 12]
  ------------------
17120|     12|	if (yych <= '0') goto yy920;
  ------------------
  |  Branch (17120:6): [True: 9, False: 3]
  ------------------
17121|      3|	if (yych <= '9') goto yy908;
  ------------------
  |  Branch (17121:6): [True: 0, False: 3]
  ------------------
17122|      3|	goto yy59;
17123|      3|yy767:
17124|      1|	YYDEBUG(767, *YYCURSOR);
17125|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17126|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17126:6): [True: 0, False: 1]
  ------------------
17127|      1|	if (yych <= '9') goto yy908;
  ------------------
  |  Branch (17127:6): [True: 0, False: 1]
  ------------------
17128|      1|	goto yy59;
17129|      1|yy768:
17130|      0|	YYDEBUG(768, *YYCURSOR);
17131|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17132|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17132:6): [True: 0, False: 0]
  ------------------
17133|      0|	if (yych <= '5') goto yy908;
  ------------------
  |  Branch (17133:6): [True: 0, False: 0]
  ------------------
17134|      0|	if (yych <= '6') goto yy909;
  ------------------
  |  Branch (17134:6): [True: 0, False: 0]
  ------------------
17135|      0|	goto yy59;
17136|      0|yy769:
17137|      0|	YYDEBUG(769, *YYCURSOR);
17138|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17139|      0|	if (yych == 'E') goto yy787;
  ------------------
  |  Branch (17139:6): [True: 0, False: 0]
  ------------------
17140|      0|	if (yych == 'e') goto yy787;
  ------------------
  |  Branch (17140:6): [True: 0, False: 0]
  ------------------
17141|      0|	goto yy59;
17142|      0|yy770:
17143|      0|	YYDEBUG(770, *YYCURSOR);
17144|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17145|      0|	if (yych == 'E') goto yy788;
  ------------------
  |  Branch (17145:6): [True: 0, False: 0]
  ------------------
17146|      0|	if (yych == 'e') goto yy788;
  ------------------
  |  Branch (17146:6): [True: 0, False: 0]
  ------------------
17147|      0|	goto yy59;
17148|      0|yy771:
17149|      0|	YYDEBUG(771, *YYCURSOR);
17150|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17151|      0|	if (yych == 'A') goto yy793;
  ------------------
  |  Branch (17151:6): [True: 0, False: 0]
  ------------------
17152|      0|	if (yych == 'a') goto yy793;
  ------------------
  |  Branch (17152:6): [True: 0, False: 0]
  ------------------
17153|      0|	goto yy59;
17154|      0|yy772:
17155|      0|	YYDEBUG(772, *YYCURSOR);
17156|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17157|      0|	if (yych == 'E') goto yy921;
  ------------------
  |  Branch (17157:6): [True: 0, False: 0]
  ------------------
17158|      0|	if (yych == 'e') goto yy921;
  ------------------
  |  Branch (17158:6): [True: 0, False: 0]
  ------------------
17159|      0|	goto yy59;
17160|      6|yy773:
17161|      6|	YYDEBUG(773, *YYCURSOR);
17162|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
17163|      6|	if (yych <= '.') goto yy59;
  ------------------
  |  Branch (17163:6): [True: 0, False: 6]
  ------------------
17164|      6|	if (yych <= '/') goto yy922;
  ------------------
  |  Branch (17164:6): [True: 0, False: 6]
  ------------------
17165|      6|	if (yych <= '9') goto yy923;
  ------------------
  |  Branch (17165:6): [True: 6, False: 0]
  ------------------
17166|      0|	goto yy59;
17167|      8|yy774:
17168|      8|	YYDEBUG(774, *YYCURSOR);
17169|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
17170|      8|	if (yych <= '.') goto yy59;
  ------------------
  |  Branch (17170:6): [True: 2, False: 6]
  ------------------
17171|      6|	if (yych <= '/') goto yy922;
  ------------------
  |  Branch (17171:6): [True: 0, False: 6]
  ------------------
17172|      6|	if (yych <= '2') goto yy923;
  ------------------
  |  Branch (17172:6): [True: 5, False: 1]
  ------------------
17173|      1|	goto yy59;
17174|      2|yy775:
17175|      2|	YYDEBUG(775, *YYCURSOR);
17176|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
17177|      2|	if (yych == '/') goto yy922;
  ------------------
  |  Branch (17177:6): [True: 1, False: 1]
  ------------------
17178|      1|	goto yy59;
17179|    100|yy776:
17180|    100|	YYDEBUG(776, *YYCURSOR);
17181|    100|	yyaccept = 19;
17182|    100|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    100|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    100|#define   YYCURSOR     cursor
  ------------------
17183|    100|	if (yych <= 'W') {
  ------------------
  |  Branch (17183:6): [True: 91, False: 9]
  ------------------
17184|     91|		if (yych <= 'C') {
  ------------------
  |  Branch (17184:7): [True: 82, False: 9]
  ------------------
17185|     82|			if (yych <= '/') {
  ------------------
  |  Branch (17185:8): [True: 4, False: 78]
  ------------------
17186|      4|				if (yych <= '\t') {
  ------------------
  |  Branch (17186:9): [True: 4, False: 0]
  ------------------
17187|      4|					if (yych >= '\t') goto yy196;
  ------------------
  |  Branch (17187:10): [True: 0, False: 4]
  ------------------
17188|      4|				} else {
17189|      0|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (17189:10): [True: 0, False: 0]
  ------------------
17190|      0|				}
17191|     78|			} else {
17192|     78|				if (yych <= '2') {
  ------------------
  |  Branch (17192:9): [True: 64, False: 14]
  ------------------
17193|     64|					if (yych <= '0') goto yy924;
  ------------------
  |  Branch (17193:10): [True: 60, False: 4]
  ------------------
17194|      4|					goto yy925;
17195|     64|				} else {
17196|     14|					if (yych <= '3') goto yy927;
  ------------------
  |  Branch (17196:10): [True: 0, False: 14]
  ------------------
17197|     14|					if (yych <= '9') goto yy928;
  ------------------
  |  Branch (17197:10): [True: 14, False: 0]
  ------------------
17198|     14|				}
17199|     78|			}
17200|     82|		} else {
17201|      9|			if (yych <= 'H') {
  ------------------
  |  Branch (17201:8): [True: 3, False: 6]
  ------------------
17202|      3|				if (yych <= 'E') {
  ------------------
  |  Branch (17202:9): [True: 3, False: 0]
  ------------------
17203|      3|					if (yych <= 'D') goto yy196;
  ------------------
  |  Branch (17203:10): [True: 2, False: 1]
  ------------------
17204|      3|				} else {
17205|      0|					if (yych != 'G') goto yy196;
  ------------------
  |  Branch (17205:10): [True: 0, False: 0]
  ------------------
17206|      0|				}
17207|      6|			} else {
17208|      6|				if (yych <= 'R') {
  ------------------
  |  Branch (17208:9): [True: 0, False: 6]
  ------------------
17209|      0|					if (yych == 'M') goto yy196;
  ------------------
  |  Branch (17209:10): [True: 0, False: 0]
  ------------------
17210|      6|				} else {
17211|      6|					if (yych != 'V') goto yy196;
  ------------------
  |  Branch (17211:10): [True: 6, False: 0]
  ------------------
17212|      6|				}
17213|      6|			}
17214|      9|		}
17215|     91|	} else {
17216|      9|		if (yych <= 'm') {
  ------------------
  |  Branch (17216:7): [True: 3, False: 6]
  ------------------
17217|      3|			if (yych <= 'e') {
  ------------------
  |  Branch (17217:8): [True: 1, False: 2]
  ------------------
17218|      1|				if (yych <= 'Y') {
  ------------------
  |  Branch (17218:9): [True: 1, False: 0]
  ------------------
17219|      1|					if (yych >= 'Y') goto yy196;
  ------------------
  |  Branch (17219:10): [True: 1, False: 0]
  ------------------
17220|      1|				} else {
17221|      0|					if (yych == 'd') goto yy196;
  ------------------
  |  Branch (17221:10): [True: 0, False: 0]
  ------------------
17222|      0|				}
17223|      2|			} else {
17224|      2|				if (yych <= 'g') {
  ------------------
  |  Branch (17224:9): [True: 0, False: 2]
  ------------------
17225|      0|					if (yych <= 'f') goto yy196;
  ------------------
  |  Branch (17225:10): [True: 0, False: 0]
  ------------------
17226|      2|				} else {
17227|      2|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (17227:10): [True: 0, False: 2]
  ------------------
17228|      2|					if (yych >= 'm') goto yy196;
  ------------------
  |  Branch (17228:10): [True: 1, False: 1]
  ------------------
17229|      2|				}
17230|      2|			}
17231|      6|		} else {
17232|      6|			if (yych <= 'x') {
  ------------------
  |  Branch (17232:8): [True: 0, False: 6]
  ------------------
17233|      0|				if (yych <= 'u') {
  ------------------
  |  Branch (17233:9): [True: 0, False: 0]
  ------------------
17234|      0|					if (yych >= 's') goto yy196;
  ------------------
  |  Branch (17234:10): [True: 0, False: 0]
  ------------------
17235|      0|				} else {
17236|      0|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (17236:10): [True: 0, False: 0]
  ------------------
17237|      0|				}
17238|      6|			} else {
17239|      6|				if (yych <= 0xC2) {
  ------------------
  |  Branch (17239:9): [True: 0, False: 6]
  ------------------
17240|      0|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (17240:10): [True: 0, False: 0]
  ------------------
17241|      0|					if (yych >= 0xC2) goto yy97;
  ------------------
  |  Branch (17241:10): [True: 0, False: 0]
  ------------------
17242|      6|				} else {
17243|      6|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17243:10): [True: 0, False: 6]
  ------------------
17244|      6|				}
17245|      6|			}
17246|      6|		}
17247|      9|	}
17248|    110|yy777:
17249|    110|	YYDEBUG(777, *YYCURSOR);
17250|    110|#line 1461 "ext/date/lib/parse_date.re"
17251|    110|	{
17252|    110|		int tz_not_found;
17253|    110|		DEBUG_OUTPUT("iso8601nocolon");
17254|    110|		TIMELIB_INIT;
  ------------------
  |  |  107|    110|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
17255|    110|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|    110|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|     62|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|     62|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     62|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     62|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     62|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     62|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     62|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     62|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|     62|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 62, False: 48]
  |  |  ------------------
  ------------------
17256|     48|		s->time->h = timelib_get_nr(&ptr, 2);
17257|     48|		s->time->i = timelib_get_nr(&ptr, 2);
17258|     48|		s->time->s = timelib_get_nr(&ptr, 2);
17259|       |
17260|     48|		if (*ptr != '\0') {
  ------------------
  |  Branch (17260:7): [True: 0, False: 48]
  ------------------
17261|      0|			s->time->z = timelib_parse_zone(&ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
17262|      0|			if (tz_not_found) {
  ------------------
  |  Branch (17262:8): [True: 0, False: 0]
  ------------------
17263|      0|				add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
  ------------------
  |  |  288|      0|#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
  ------------------
17264|      0|			}
17265|      0|		}
17266|     48|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     48|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     48|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     48|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     48|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     48|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     48|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     48|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     48|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17267|     48|		return TIMELIB_ISO_NOCOLON;
  ------------------
  |  |   56|     48|#define TIMELIB_ISO_NOCOLON    265
  ------------------
17268|    110|	}
17269|      0|#line 17270 "ext/date/lib/parse_date.c"
17270|     59|yy778:
17271|     59|	YYDEBUG(778, *YYCURSOR);
17272|     59|	yyaccept = 19;
17273|     59|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     59|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     59|#define   YYCURSOR     cursor
  ------------------
17274|     59|	if (yych <= 'W') {
  ------------------
  |  Branch (17274:6): [True: 50, False: 9]
  ------------------
17275|     50|		if (yych <= 'D') {
  ------------------
  |  Branch (17275:7): [True: 49, False: 1]
  ------------------
17276|     49|			if (yych <= '/') {
  ------------------
  |  Branch (17276:8): [True: 4, False: 45]
  ------------------
17277|      4|				if (yych <= '\t') {
  ------------------
  |  Branch (17277:9): [True: 1, False: 3]
  ------------------
17278|      1|					if (yych <= 0x08) goto yy777;
  ------------------
  |  Branch (17278:10): [True: 1, False: 0]
  ------------------
17279|      0|					goto yy196;
17280|      3|				} else {
17281|      3|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (17281:10): [True: 0, False: 3]
  ------------------
17282|      3|					goto yy777;
17283|      3|				}
17284|     45|			} else {
17285|     45|				if (yych <= '3') {
  ------------------
  |  Branch (17285:9): [True: 37, False: 8]
  ------------------
17286|     37|					if (yych <= '2') goto yy925;
  ------------------
  |  Branch (17286:10): [True: 33, False: 4]
  ------------------
17287|      4|					goto yy927;
17288|     37|				} else {
17289|      8|					if (yych <= '9') goto yy928;
  ------------------
  |  Branch (17289:10): [True: 7, False: 1]
  ------------------
17290|      1|					if (yych <= 'C') goto yy777;
  ------------------
  |  Branch (17290:10): [True: 1, False: 0]
  ------------------
17291|      0|					goto yy196;
17292|      1|				}
17293|     45|			}
17294|     49|		} else {
17295|      1|			if (yych <= 'L') {
  ------------------
  |  Branch (17295:8): [True: 1, False: 0]
  ------------------
17296|      1|				if (yych <= 'F') {
  ------------------
  |  Branch (17296:9): [True: 1, False: 0]
  ------------------
17297|      1|					if (yych <= 'E') goto yy777;
  ------------------
  |  Branch (17297:10): [True: 0, False: 1]
  ------------------
17298|      1|					goto yy196;
17299|      1|				} else {
17300|      0|					if (yych == 'H') goto yy196;
  ------------------
  |  Branch (17300:10): [True: 0, False: 0]
  ------------------
17301|      0|					goto yy777;
17302|      0|				}
17303|      1|			} else {
17304|      0|				if (yych <= 'R') {
  ------------------
  |  Branch (17304:9): [True: 0, False: 0]
  ------------------
17305|      0|					if (yych <= 'M') goto yy196;
  ------------------
  |  Branch (17305:10): [True: 0, False: 0]
  ------------------
17306|      0|					goto yy777;
17307|      0|				} else {
17308|      0|					if (yych == 'V') goto yy777;
  ------------------
  |  Branch (17308:10): [True: 0, False: 0]
  ------------------
17309|      0|					goto yy196;
17310|      0|				}
17311|      0|			}
17312|      1|		}
17313|     50|	} else {
17314|      9|		if (yych <= 'm') {
  ------------------
  |  Branch (17314:7): [True: 7, False: 2]
  ------------------
17315|      7|			if (yych <= 'e') {
  ------------------
  |  Branch (17315:8): [True: 2, False: 5]
  ------------------
17316|      2|				if (yych <= 'Y') {
  ------------------
  |  Branch (17316:9): [True: 0, False: 2]
  ------------------
17317|      0|					if (yych <= 'X') goto yy777;
  ------------------
  |  Branch (17317:10): [True: 0, False: 0]
  ------------------
17318|      0|					goto yy196;
17319|      2|				} else {
17320|      2|					if (yych == 'd') goto yy196;
  ------------------
  |  Branch (17320:10): [True: 1, False: 1]
  ------------------
17321|      1|					goto yy777;
17322|      2|				}
17323|      5|			} else {
17324|      5|				if (yych <= 'g') {
  ------------------
  |  Branch (17324:9): [True: 4, False: 1]
  ------------------
17325|      4|					if (yych <= 'f') goto yy196;
  ------------------
  |  Branch (17325:10): [True: 0, False: 4]
  ------------------
17326|      4|					goto yy777;
17327|      4|				} else {
17328|      1|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (17328:10): [True: 0, False: 1]
  ------------------
17329|      1|					if (yych <= 'l') goto yy777;
  ------------------
  |  Branch (17329:10): [True: 0, False: 1]
  ------------------
17330|      1|					goto yy196;
17331|      1|				}
17332|      5|			}
17333|      7|		} else {
17334|      2|			if (yych <= 'x') {
  ------------------
  |  Branch (17334:8): [True: 0, False: 2]
  ------------------
17335|      0|				if (yych <= 'u') {
  ------------------
  |  Branch (17335:9): [True: 0, False: 0]
  ------------------
17336|      0|					if (yych <= 'r') goto yy777;
  ------------------
  |  Branch (17336:10): [True: 0, False: 0]
  ------------------
17337|      0|					goto yy196;
17338|      0|				} else {
17339|      0|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (17339:10): [True: 0, False: 0]
  ------------------
17340|      0|					goto yy777;
17341|      0|				}
17342|      2|			} else {
17343|      2|				if (yych <= 0xC2) {
  ------------------
  |  Branch (17343:9): [True: 0, False: 2]
  ------------------
17344|      0|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (17344:10): [True: 0, False: 0]
  ------------------
17345|      0|					if (yych <= 0xC1) goto yy777;
  ------------------
  |  Branch (17345:10): [True: 0, False: 0]
  ------------------
17346|      0|					goto yy97;
17347|      2|				} else {
17348|      2|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17348:10): [True: 0, False: 2]
  ------------------
17349|      2|					goto yy777;
17350|      2|				}
17351|      2|			}
17352|      2|		}
17353|      9|	}
17354|     69|yy779:
17355|     69|	YYDEBUG(779, *YYCURSOR);
17356|     69|	yyaccept = 19;
17357|     69|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     69|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     69|#define   YYCURSOR     cursor
  ------------------
17358|     69|	if (yych <= 'X') {
  ------------------
  |  Branch (17358:6): [True: 58, False: 11]
  ------------------
17359|     58|		if (yych <= 'E') {
  ------------------
  |  Branch (17359:7): [True: 57, False: 1]
  ------------------
17360|     57|			if (yych <= ' ') {
  ------------------
  |  Branch (17360:8): [True: 3, False: 54]
  ------------------
17361|      3|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (17361:9): [True: 1, False: 2]
  ------------------
17362|      2|				if (yych <= 0x1F) goto yy777;
  ------------------
  |  Branch (17362:9): [True: 2, False: 0]
  ------------------
17363|      0|				goto yy196;
17364|     54|			} else {
17365|     54|				if (yych <= '9') {
  ------------------
  |  Branch (17365:9): [True: 51, False: 3]
  ------------------
17366|     51|					if (yych <= '/') goto yy777;
  ------------------
  |  Branch (17366:10): [True: 11, False: 40]
  ------------------
17367|     40|					goto yy928;
17368|     51|				} else {
17369|      3|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (17369:10): [True: 0, False: 3]
  ------------------
17370|      3|					goto yy777;
17371|      3|				}
17372|     54|			}
17373|     57|		} else {
17374|      1|			if (yych <= 'M') {
  ------------------
  |  Branch (17374:8): [True: 0, False: 1]
  ------------------
17375|      0|				if (yych <= 'G') {
  ------------------
  |  Branch (17375:9): [True: 0, False: 0]
  ------------------
17376|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (17376:10): [True: 0, False: 0]
  ------------------
17377|      0|					goto yy777;
17378|      0|				} else {
17379|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (17379:10): [True: 0, False: 0]
  ------------------
17380|      0|					if (yych <= 'L') goto yy777;
  ------------------
  |  Branch (17380:10): [True: 0, False: 0]
  ------------------
17381|      0|					goto yy196;
17382|      0|				}
17383|      1|			} else {
17384|      1|				if (yych <= 'U') {
  ------------------
  |  Branch (17384:9): [True: 1, False: 0]
  ------------------
17385|      1|					if (yych <= 'R') goto yy777;
  ------------------
  |  Branch (17385:10): [True: 1, False: 0]
  ------------------
17386|      0|					goto yy196;
17387|      1|				} else {
17388|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (17388:10): [True: 0, False: 0]
  ------------------
17389|      0|					goto yy777;
17390|      0|				}
17391|      1|			}
17392|      1|		}
17393|     58|	} else {
17394|     11|		if (yych <= 'r') {
  ------------------
  |  Branch (17394:7): [True: 6, False: 5]
  ------------------
17395|      6|			if (yych <= 'f') {
  ------------------
  |  Branch (17395:8): [True: 4, False: 2]
  ------------------
17396|      4|				if (yych <= 'c') {
  ------------------
  |  Branch (17396:9): [True: 2, False: 2]
  ------------------
17397|      2|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (17397:10): [True: 0, False: 2]
  ------------------
17398|      2|					goto yy777;
17399|      2|				} else {
17400|      2|					if (yych == 'e') goto yy777;
  ------------------
  |  Branch (17400:10): [True: 1, False: 1]
  ------------------
17401|      1|					goto yy196;
17402|      2|				}
17403|      4|			} else {
17404|      2|				if (yych <= 'h') {
  ------------------
  |  Branch (17404:9): [True: 1, False: 1]
  ------------------
17405|      1|					if (yych <= 'g') goto yy777;
  ------------------
  |  Branch (17405:10): [True: 1, False: 0]
  ------------------
17406|      0|					goto yy196;
17407|      1|				} else {
17408|      1|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (17408:10): [True: 0, False: 1]
  ------------------
17409|      1|					goto yy777;
17410|      1|				}
17411|      2|			}
17412|      6|		} else {
17413|      5|			if (yych <= 'y') {
  ------------------
  |  Branch (17413:8): [True: 3, False: 2]
  ------------------
17414|      3|				if (yych <= 'v') {
  ------------------
  |  Branch (17414:9): [True: 3, False: 0]
  ------------------
17415|      3|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (17415:10): [True: 1, False: 2]
  ------------------
17416|      2|					goto yy777;
17417|      3|				} else {
17418|      0|					if (yych == 'x') goto yy777;
  ------------------
  |  Branch (17418:10): [True: 0, False: 0]
  ------------------
17419|      0|					goto yy196;
17420|      0|				}
17421|      3|			} else {
17422|      2|				if (yych <= 0xC2) {
  ------------------
  |  Branch (17422:9): [True: 2, False: 0]
  ------------------
17423|      2|					if (yych <= 0xC1) goto yy777;
  ------------------
  |  Branch (17423:10): [True: 2, False: 0]
  ------------------
17424|      0|					goto yy97;
17425|      2|				} else {
17426|      0|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17426:10): [True: 0, False: 0]
  ------------------
17427|      0|					goto yy777;
17428|      0|				}
17429|      2|			}
17430|      5|		}
17431|     11|	}
17432|      5|yy780:
17433|      5|	YYDEBUG(780, *YYCURSOR);
17434|      5|	yyaccept = 19;
17435|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
17436|      5|	if (yych <= 'X') {
  ------------------
  |  Branch (17436:6): [True: 2, False: 3]
  ------------------
17437|      2|		if (yych <= 'E') {
  ------------------
  |  Branch (17437:7): [True: 1, False: 1]
  ------------------
17438|      1|			if (yych <= '/') {
  ------------------
  |  Branch (17438:8): [True: 1, False: 0]
  ------------------
17439|      1|				if (yych <= '\t') {
  ------------------
  |  Branch (17439:9): [True: 0, False: 1]
  ------------------
17440|      0|					if (yych <= 0x08) goto yy777;
  ------------------
  |  Branch (17440:10): [True: 0, False: 0]
  ------------------
17441|      0|					goto yy196;
17442|      1|				} else {
17443|      1|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (17443:10): [True: 1, False: 0]
  ------------------
17444|      0|					goto yy777;
17445|      1|				}
17446|      1|			} else {
17447|      0|				if (yych <= '9') {
  ------------------
  |  Branch (17447:9): [True: 0, False: 0]
  ------------------
17448|      0|					if (yych <= '6') goto yy928;
  ------------------
  |  Branch (17448:10): [True: 0, False: 0]
  ------------------
17449|      0|					goto yy929;
17450|      0|				} else {
17451|      0|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (17451:10): [True: 0, False: 0]
  ------------------
17452|      0|					goto yy777;
17453|      0|				}
17454|      0|			}
17455|      1|		} else {
17456|      1|			if (yych <= 'M') {
  ------------------
  |  Branch (17456:8): [True: 0, False: 1]
  ------------------
17457|      0|				if (yych <= 'G') {
  ------------------
  |  Branch (17457:9): [True: 0, False: 0]
  ------------------
17458|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (17458:10): [True: 0, False: 0]
  ------------------
17459|      0|					goto yy777;
17460|      0|				} else {
17461|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (17461:10): [True: 0, False: 0]
  ------------------
17462|      0|					if (yych <= 'L') goto yy777;
  ------------------
  |  Branch (17462:10): [True: 0, False: 0]
  ------------------
17463|      0|					goto yy196;
17464|      0|				}
17465|      1|			} else {
17466|      1|				if (yych <= 'U') {
  ------------------
  |  Branch (17466:9): [True: 0, False: 1]
  ------------------
17467|      0|					if (yych <= 'R') goto yy777;
  ------------------
  |  Branch (17467:10): [True: 0, False: 0]
  ------------------
17468|      0|					goto yy196;
17469|      1|				} else {
17470|      1|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (17470:10): [True: 0, False: 1]
  ------------------
17471|      1|					goto yy777;
17472|      1|				}
17473|      1|			}
17474|      1|		}
17475|      3|	} else {
17476|      3|		if (yych <= 'r') {
  ------------------
  |  Branch (17476:7): [True: 3, False: 0]
  ------------------
17477|      3|			if (yych <= 'f') {
  ------------------
  |  Branch (17477:8): [True: 0, False: 3]
  ------------------
17478|      0|				if (yych <= 'c') {
  ------------------
  |  Branch (17478:9): [True: 0, False: 0]
  ------------------
17479|      0|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (17479:10): [True: 0, False: 0]
  ------------------
17480|      0|					goto yy777;
17481|      0|				} else {
17482|      0|					if (yych == 'e') goto yy777;
  ------------------
  |  Branch (17482:10): [True: 0, False: 0]
  ------------------
17483|      0|					goto yy196;
17484|      0|				}
17485|      3|			} else {
17486|      3|				if (yych <= 'h') {
  ------------------
  |  Branch (17486:9): [True: 0, False: 3]
  ------------------
17487|      0|					if (yych <= 'g') goto yy777;
  ------------------
  |  Branch (17487:10): [True: 0, False: 0]
  ------------------
17488|      0|					goto yy196;
17489|      3|				} else {
17490|      3|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (17490:10): [True: 0, False: 3]
  ------------------
17491|      3|					goto yy777;
17492|      3|				}
17493|      3|			}
17494|      3|		} else {
17495|      0|			if (yych <= 'y') {
  ------------------
  |  Branch (17495:8): [True: 0, False: 0]
  ------------------
17496|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (17496:9): [True: 0, False: 0]
  ------------------
17497|      0|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (17497:10): [True: 0, False: 0]
  ------------------
17498|      0|					goto yy777;
17499|      0|				} else {
17500|      0|					if (yych == 'x') goto yy777;
  ------------------
  |  Branch (17500:10): [True: 0, False: 0]
  ------------------
17501|      0|					goto yy196;
17502|      0|				}
17503|      0|			} else {
17504|      0|				if (yych <= 0xC2) {
  ------------------
  |  Branch (17504:9): [True: 0, False: 0]
  ------------------
17505|      0|					if (yych <= 0xC1) goto yy777;
  ------------------
  |  Branch (17505:10): [True: 0, False: 0]
  ------------------
17506|      0|					goto yy97;
17507|      0|				} else {
17508|      0|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17508:10): [True: 0, False: 0]
  ------------------
17509|      0|					goto yy777;
17510|      0|				}
17511|      0|			}
17512|      0|		}
17513|      3|	}
17514|     23|yy781:
17515|     23|	YYDEBUG(781, *YYCURSOR);
17516|     23|	yyaccept = 19;
17517|     23|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     23|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     23|#define   YYCURSOR     cursor
  ------------------
17518|     23|	if (yych <= 'X') {
  ------------------
  |  Branch (17518:6): [True: 20, False: 3]
  ------------------
17519|     20|		if (yych <= 'E') {
  ------------------
  |  Branch (17519:7): [True: 20, False: 0]
  ------------------
17520|     20|			if (yych <= ' ') {
  ------------------
  |  Branch (17520:8): [True: 0, False: 20]
  ------------------
17521|      0|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (17521:9): [True: 0, False: 0]
  ------------------
17522|      0|				if (yych <= 0x1F) goto yy777;
  ------------------
  |  Branch (17522:9): [True: 0, False: 0]
  ------------------
17523|      0|				goto yy196;
17524|     20|			} else {
17525|     20|				if (yych <= '9') {
  ------------------
  |  Branch (17525:9): [True: 20, False: 0]
  ------------------
17526|     20|					if (yych <= '/') goto yy777;
  ------------------
  |  Branch (17526:10): [True: 1, False: 19]
  ------------------
17527|     19|					goto yy929;
17528|     20|				} else {
17529|      0|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (17529:10): [True: 0, False: 0]
  ------------------
17530|      0|					goto yy777;
17531|      0|				}
17532|     20|			}
17533|     20|		} else {
17534|      0|			if (yych <= 'M') {
  ------------------
  |  Branch (17534:8): [True: 0, False: 0]
  ------------------
17535|      0|				if (yych <= 'G') {
  ------------------
  |  Branch (17535:9): [True: 0, False: 0]
  ------------------
17536|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (17536:10): [True: 0, False: 0]
  ------------------
17537|      0|					goto yy777;
17538|      0|				} else {
17539|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (17539:10): [True: 0, False: 0]
  ------------------
17540|      0|					if (yych <= 'L') goto yy777;
  ------------------
  |  Branch (17540:10): [True: 0, False: 0]
  ------------------
17541|      0|					goto yy196;
17542|      0|				}
17543|      0|			} else {
17544|      0|				if (yych <= 'U') {
  ------------------
  |  Branch (17544:9): [True: 0, False: 0]
  ------------------
17545|      0|					if (yych <= 'R') goto yy777;
  ------------------
  |  Branch (17545:10): [True: 0, False: 0]
  ------------------
17546|      0|					goto yy196;
17547|      0|				} else {
17548|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (17548:10): [True: 0, False: 0]
  ------------------
17549|      0|					goto yy777;
17550|      0|				}
17551|      0|			}
17552|      0|		}
17553|     20|	} else {
17554|      3|		if (yych <= 'r') {
  ------------------
  |  Branch (17554:7): [True: 2, False: 1]
  ------------------
17555|      2|			if (yych <= 'f') {
  ------------------
  |  Branch (17555:8): [True: 1, False: 1]
  ------------------
17556|      1|				if (yych <= 'c') {
  ------------------
  |  Branch (17556:9): [True: 0, False: 1]
  ------------------
17557|      0|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (17557:10): [True: 0, False: 0]
  ------------------
17558|      0|					goto yy777;
17559|      1|				} else {
17560|      1|					if (yych == 'e') goto yy777;
  ------------------
  |  Branch (17560:10): [True: 0, False: 1]
  ------------------
17561|      1|					goto yy196;
17562|      1|				}
17563|      1|			} else {
17564|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (17564:9): [True: 0, False: 1]
  ------------------
17565|      0|					if (yych <= 'g') goto yy777;
  ------------------
  |  Branch (17565:10): [True: 0, False: 0]
  ------------------
17566|      0|					goto yy196;
17567|      1|				} else {
17568|      1|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (17568:10): [True: 0, False: 1]
  ------------------
17569|      1|					goto yy777;
17570|      1|				}
17571|      1|			}
17572|      2|		} else {
17573|      1|			if (yych <= 'y') {
  ------------------
  |  Branch (17573:8): [True: 0, False: 1]
  ------------------
17574|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (17574:9): [True: 0, False: 0]
  ------------------
17575|      0|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (17575:10): [True: 0, False: 0]
  ------------------
17576|      0|					goto yy777;
17577|      0|				} else {
17578|      0|					if (yych == 'x') goto yy777;
  ------------------
  |  Branch (17578:10): [True: 0, False: 0]
  ------------------
17579|      0|					goto yy196;
17580|      0|				}
17581|      1|			} else {
17582|      1|				if (yych <= 0xC2) {
  ------------------
  |  Branch (17582:9): [True: 0, False: 1]
  ------------------
17583|      0|					if (yych <= 0xC1) goto yy777;
  ------------------
  |  Branch (17583:10): [True: 0, False: 0]
  ------------------
17584|      0|					goto yy97;
17585|      1|				} else {
17586|      1|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17586:10): [True: 0, False: 1]
  ------------------
17587|      1|					goto yy777;
17588|      1|				}
17589|      1|			}
17590|      1|		}
17591|      3|	}
17592|    371|yy782:
17593|    371|	YYDEBUG(782, *YYCURSOR);
17594|    371|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    371|#define   YYCURSOR     cursor
  ------------------
17595|    371|	if (yych <= 0xC1) {
  ------------------
  |  Branch (17595:6): [True: 350, False: 21]
  ------------------
17596|    350|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (17596:7): [True: 38, False: 312]
  ------------------
17597|    312|		if (yych <= '9') goto yy929;
  ------------------
  |  Branch (17597:7): [True: 243, False: 69]
  ------------------
17598|     69|		goto yy196;
17599|    312|	} else {
17600|     21|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (17600:7): [True: 12, False: 9]
  ------------------
17601|      9|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17601:7): [True: 1, False: 8]
  ------------------
17602|      8|		goto yy196;
17603|      9|	}
17604|      1|yy783:
17605|      1|	YYDEBUG(783, *YYCURSOR);
17606|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17607|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17607:6): [True: 1, False: 0]
  ------------------
17608|      0|	if (yych <= '9') goto yy930;
  ------------------
  |  Branch (17608:6): [True: 0, False: 0]
  ------------------
17609|      0|	goto yy59;
17610|      0|yy784:
17611|      0|	YYDEBUG(784, *YYCURSOR);
17612|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17613|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17613:6): [True: 0, False: 0]
  ------------------
17614|      0|	if (yych <= '2') goto yy930;
  ------------------
  |  Branch (17614:6): [True: 0, False: 0]
  ------------------
17615|      0|	goto yy59;
17616|     19|yy785:
17617|     19|	YYDEBUG(785, *YYCURSOR);
17618|     19|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     19|#define   YYCURSOR     cursor
  ------------------
17619|     19|	if (yych == 'R') goto yy931;
  ------------------
  |  Branch (17619:6): [True: 7, False: 12]
  ------------------
17620|     12|	if (yych == 'r') goto yy931;
  ------------------
  |  Branch (17620:6): [True: 1, False: 11]
  ------------------
17621|     11|	goto yy59;
17622|     11|yy786:
17623|      0|	YYDEBUG(786, *YYCURSOR);
17624|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17625|      0|	if (yych == 'G') goto yy932;
  ------------------
  |  Branch (17625:6): [True: 0, False: 0]
  ------------------
17626|      0|	if (yych == 'g') goto yy932;
  ------------------
  |  Branch (17626:6): [True: 0, False: 0]
  ------------------
17627|      0|	goto yy59;
17628|      0|yy787:
17629|      0|	YYDEBUG(787, *YYCURSOR);
17630|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17631|      0|	if (yych == 'C') goto yy933;
  ------------------
  |  Branch (17631:6): [True: 0, False: 0]
  ------------------
17632|      0|	if (yych == 'c') goto yy933;
  ------------------
  |  Branch (17632:6): [True: 0, False: 0]
  ------------------
17633|      0|	goto yy59;
17634|      0|yy788:
17635|      0|	YYDEBUG(788, *YYCURSOR);
17636|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17637|      0|	if (yych == 'B') goto yy934;
  ------------------
  |  Branch (17637:6): [True: 0, False: 0]
  ------------------
17638|      0|	if (yych == 'b') goto yy934;
  ------------------
  |  Branch (17638:6): [True: 0, False: 0]
  ------------------
17639|      0|	goto yy59;
17640|      0|yy789:
17641|      0|	YYDEBUG(789, *YYCURSOR);
17642|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17643|      0|	if (yych != 'I') goto yy600;
  ------------------
  |  Branch (17643:6): [True: 0, False: 0]
  ------------------
17644|      0|yy790:
17645|      0|	YYDEBUG(790, *YYCURSOR);
17646|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17647|      0|	goto yy600;
17648|      0|yy791:
17649|      0|	YYDEBUG(791, *YYCURSOR);
17650|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17651|      0|	if (yych == 'N') goto yy935;
  ------------------
  |  Branch (17651:6): [True: 0, False: 0]
  ------------------
17652|      0|	if (yych == 'n') goto yy935;
  ------------------
  |  Branch (17652:6): [True: 0, False: 0]
  ------------------
17653|      0|	goto yy59;
17654|      0|yy792:
17655|      0|	YYDEBUG(792, *YYCURSOR);
17656|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17657|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (17657:6): [True: 0, False: 0]
  ------------------
17658|      0|		if (yych == 'L') goto yy936;
  ------------------
  |  Branch (17658:7): [True: 0, False: 0]
  ------------------
17659|      0|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (17659:7): [True: 0, False: 0]
  ------------------
17660|      0|		goto yy937;
17661|      0|	} else {
17662|      0|		if (yych <= 'l') {
  ------------------
  |  Branch (17662:7): [True: 0, False: 0]
  ------------------
17663|      0|			if (yych <= 'k') goto yy59;
  ------------------
  |  Branch (17663:8): [True: 0, False: 0]
  ------------------
17664|      0|			goto yy936;
17665|      0|		} else {
17666|      0|			if (yych == 'n') goto yy937;
  ------------------
  |  Branch (17666:8): [True: 0, False: 0]
  ------------------
17667|      0|			goto yy59;
17668|      0|		}
17669|      0|	}
17670|      0|yy793:
17671|      0|	YYDEBUG(793, *YYCURSOR);
17672|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17673|      0|	if (yych <= 'Y') {
  ------------------
  |  Branch (17673:6): [True: 0, False: 0]
  ------------------
17674|      0|		if (yych == 'R') goto yy938;
  ------------------
  |  Branch (17674:7): [True: 0, False: 0]
  ------------------
17675|      0|		if (yych <= 'X') goto yy59;
  ------------------
  |  Branch (17675:7): [True: 0, False: 0]
  ------------------
17676|      0|		goto yy790;
17677|      0|	} else {
17678|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (17678:7): [True: 0, False: 0]
  ------------------
17679|      0|			if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (17679:8): [True: 0, False: 0]
  ------------------
17680|      0|			goto yy938;
17681|      0|		} else {
17682|      0|			if (yych == 'y') goto yy790;
  ------------------
  |  Branch (17682:8): [True: 0, False: 0]
  ------------------
17683|      0|			goto yy59;
17684|      0|		}
17685|      0|	}
17686|      1|yy794:
17687|      1|	YYDEBUG(794, *YYCURSOR);
17688|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17689|      1|	if (yych == 'V') goto yy933;
  ------------------
  |  Branch (17689:6): [True: 0, False: 1]
  ------------------
17690|      1|	if (yych == 'v') goto yy933;
  ------------------
  |  Branch (17690:6): [True: 0, False: 1]
  ------------------
17691|      1|	goto yy59;
17692|      1|yy795:
17693|      0|	YYDEBUG(795, *YYCURSOR);
17694|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17695|      0|	if (yych == 'T') goto yy939;
  ------------------
  |  Branch (17695:6): [True: 0, False: 0]
  ------------------
17696|      0|	if (yych == 't') goto yy939;
  ------------------
  |  Branch (17696:6): [True: 0, False: 0]
  ------------------
17697|      0|	goto yy59;
17698|      0|yy796:
17699|      0|	YYDEBUG(796, *YYCURSOR);
17700|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17701|      0|	if (yych <= 'P') {
  ------------------
  |  Branch (17701:6): [True: 0, False: 0]
  ------------------
17702|      0|		if (yych == 'C') goto yy443;
  ------------------
  |  Branch (17702:7): [True: 0, False: 0]
  ------------------
17703|      0|		if (yych <= 'O') goto yy59;
  ------------------
  |  Branch (17703:7): [True: 0, False: 0]
  ------------------
17704|      0|		goto yy940;
17705|      0|	} else {
17706|      0|		if (yych <= 'c') {
  ------------------
  |  Branch (17706:7): [True: 0, False: 0]
  ------------------
17707|      0|			if (yych <= 'b') goto yy59;
  ------------------
  |  Branch (17707:8): [True: 0, False: 0]
  ------------------
17708|      0|			goto yy443;
17709|      0|		} else {
17710|      0|			if (yych == 'p') goto yy940;
  ------------------
  |  Branch (17710:8): [True: 0, False: 0]
  ------------------
17711|      0|			goto yy59;
17712|      0|		}
17713|      0|	}
17714|      0|yy797:
17715|      0|	YYDEBUG(797, *YYCURSOR);
17716|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17717|      0|	if (yych <= '0') goto yy59;
  ------------------
  |  Branch (17717:6): [True: 0, False: 0]
  ------------------
17718|      0|	if (yych <= '9') goto yy941;
  ------------------
  |  Branch (17718:6): [True: 0, False: 0]
  ------------------
17719|      0|	goto yy59;
17720|      4|yy798:
17721|      4|	YYDEBUG(798, *YYCURSOR);
17722|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
17723|      4|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17723:6): [True: 0, False: 4]
  ------------------
17724|      4|	if (yych <= '9') goto yy941;
  ------------------
  |  Branch (17724:6): [True: 2, False: 2]
  ------------------
17725|      2|	goto yy59;
17726|      2|yy799:
17727|      0|	YYDEBUG(799, *YYCURSOR);
17728|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17729|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (17729:6): [True: 0, False: 0]
  ------------------
17730|      0|	if (yych <= '3') goto yy941;
  ------------------
  |  Branch (17730:6): [True: 0, False: 0]
  ------------------
17731|      0|	goto yy59;
17732|     28|yy800:
17733|     28|	YYDEBUG(800, *YYCURSOR);
17734|     28|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     28|#define   YYCURSOR     cursor
  ------------------
17735|     28|	if (yych <= '9') {
  ------------------
  |  Branch (17735:6): [True: 13, False: 15]
  ------------------
17736|     13|		if (yych <= '0') {
  ------------------
  |  Branch (17736:7): [True: 11, False: 2]
  ------------------
17737|     11|			if (yych <= '/') goto yy196;
  ------------------
  |  Branch (17737:8): [True: 2, False: 9]
  ------------------
17738|      9|			goto yy924;
17739|     11|		} else {
17740|      2|			if (yych <= '2') goto yy925;
  ------------------
  |  Branch (17740:8): [True: 2, False: 0]
  ------------------
17741|      0|			if (yych <= '3') goto yy927;
  ------------------
  |  Branch (17741:8): [True: 0, False: 0]
  ------------------
17742|      0|			goto yy928;
17743|      0|		}
17744|     15|	} else {
17745|     15|		if (yych <= 0xC2) {
  ------------------
  |  Branch (17745:7): [True: 11, False: 4]
  ------------------
17746|     11|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (17746:8): [True: 4, False: 7]
  ------------------
17747|      7|			goto yy97;
17748|     11|		} else {
17749|      4|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17749:8): [True: 1, False: 3]
  ------------------
17750|      3|			goto yy196;
17751|      4|		}
17752|     15|	}
17753|     51|yy801:
17754|     51|	YYDEBUG(801, *YYCURSOR);
17755|     51|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     51|#define   YYCURSOR     cursor
  ------------------
17756|     51|	if (yych <= '9') {
  ------------------
  |  Branch (17756:6): [True: 49, False: 2]
  ------------------
17757|     49|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (17757:7): [True: 6, False: 43]
  ------------------
17758|     43|		if (yych <= '2') goto yy925;
  ------------------
  |  Branch (17758:7): [True: 16, False: 27]
  ------------------
17759|     27|		if (yych <= '3') goto yy927;
  ------------------
  |  Branch (17759:7): [True: 11, False: 16]
  ------------------
17760|     16|		goto yy928;
17761|     27|	} else {
17762|      2|		if (yych <= 0xC2) {
  ------------------
  |  Branch (17762:7): [True: 1, False: 1]
  ------------------
17763|      1|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (17763:8): [True: 1, False: 0]
  ------------------
17764|      0|			goto yy97;
17765|      1|		} else {
17766|      1|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17766:8): [True: 1, False: 0]
  ------------------
17767|      0|			goto yy196;
17768|      1|		}
17769|      2|	}
17770|     60|yy802:
17771|     60|	YYDEBUG(802, *YYCURSOR);
17772|     60|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     60|#define   YYCURSOR     cursor
  ------------------
17773|     60|	if (yych <= 0xC1) {
  ------------------
  |  Branch (17773:6): [True: 56, False: 4]
  ------------------
17774|     56|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (17774:7): [True: 6, False: 50]
  ------------------
17775|     50|		if (yych <= '9') goto yy928;
  ------------------
  |  Branch (17775:7): [True: 41, False: 9]
  ------------------
17776|      9|		goto yy196;
17777|     50|	} else {
17778|      4|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (17778:7): [True: 1, False: 3]
  ------------------
17779|      3|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17779:7): [True: 1, False: 2]
  ------------------
17780|      2|		goto yy196;
17781|      3|	}
17782|      6|yy803:
17783|      6|	YYDEBUG(803, *YYCURSOR);
17784|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
17785|      6|	if (yych <= 0xC1) {
  ------------------
  |  Branch (17785:6): [True: 6, False: 0]
  ------------------
17786|      6|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (17786:7): [True: 0, False: 6]
  ------------------
17787|      6|		if (yych <= '6') goto yy928;
  ------------------
  |  Branch (17787:7): [True: 3, False: 3]
  ------------------
17788|      3|		if (yych <= '9') goto yy929;
  ------------------
  |  Branch (17788:7): [True: 3, False: 0]
  ------------------
17789|      0|		goto yy196;
17790|      3|	} else {
17791|      0|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (17791:7): [True: 0, False: 0]
  ------------------
17792|      0|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (17792:7): [True: 0, False: 0]
  ------------------
17793|      0|		goto yy196;
17794|      0|	}
17795|      0|yy804:
17796|      0|	YYDEBUG(804, *YYCURSOR);
17797|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17798|      0|	if (yych == 'T') goto yy253;
  ------------------
  |  Branch (17798:6): [True: 0, False: 0]
  ------------------
17799|      0|	if (yych == 't') goto yy253;
  ------------------
  |  Branch (17799:6): [True: 0, False: 0]
  ------------------
17800|      0|	goto yy59;
17801|      0|yy805:
17802|      0|	YYDEBUG(805, *YYCURSOR);
17803|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17804|      0|	if (yych == 'N') goto yy806;
  ------------------
  |  Branch (17804:6): [True: 0, False: 0]
  ------------------
17805|      0|	if (yych != 'n') goto yy59;
  ------------------
  |  Branch (17805:6): [True: 0, False: 0]
  ------------------
17806|      0|yy806:
17807|      0|	YYDEBUG(806, *YYCURSOR);
17808|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17809|      0|	if (yych == 'I') goto yy943;
  ------------------
  |  Branch (17809:6): [True: 0, False: 0]
  ------------------
17810|      0|	if (yych == 'i') goto yy943;
  ------------------
  |  Branch (17810:6): [True: 0, False: 0]
  ------------------
17811|      0|	goto yy59;
17812|      2|yy807:
17813|      2|	YYDEBUG(807, *YYCURSOR);
17814|      2|	++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
17815|      2|	goto yy251;
17816|      0|yy808:
17817|      0|	YYDEBUG(808, *YYCURSOR);
17818|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17819|      0|	if (yych == 'R') goto yy944;
  ------------------
  |  Branch (17819:6): [True: 0, False: 0]
  ------------------
17820|      0|	if (yych == 'r') goto yy944;
  ------------------
  |  Branch (17820:6): [True: 0, False: 0]
  ------------------
17821|      0|	goto yy59;
17822|      0|yy809:
17823|      0|	YYDEBUG(809, *YYCURSOR);
17824|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17825|      0|	if (yych == 'S') goto yy945;
  ------------------
  |  Branch (17825:6): [True: 0, False: 0]
  ------------------
17826|      0|	if (yych == 's') goto yy945;
  ------------------
  |  Branch (17826:6): [True: 0, False: 0]
  ------------------
17827|      0|	goto yy59;
17828|      0|yy810:
17829|      0|	YYDEBUG(810, *YYCURSOR);
17830|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17831|      0|	if (yych == 'E') goto yy425;
  ------------------
  |  Branch (17831:6): [True: 0, False: 0]
  ------------------
17832|      0|	if (yych == 'e') goto yy425;
  ------------------
  |  Branch (17832:6): [True: 0, False: 0]
  ------------------
17833|      0|	goto yy59;
17834|      0|yy811:
17835|      0|	YYDEBUG(811, *YYCURSOR);
17836|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17837|      0|	if (yych == 'E') goto yy946;
  ------------------
  |  Branch (17837:6): [True: 0, False: 0]
  ------------------
17838|      0|	if (yych == 'e') goto yy946;
  ------------------
  |  Branch (17838:6): [True: 0, False: 0]
  ------------------
17839|      0|	goto yy59;
17840|      0|yy812:
17841|      0|	YYDEBUG(812, *YYCURSOR);
17842|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17843|      0|	if (yych == 'D') goto yy425;
  ------------------
  |  Branch (17843:6): [True: 0, False: 0]
  ------------------
17844|      0|	if (yych == 'd') goto yy425;
  ------------------
  |  Branch (17844:6): [True: 0, False: 0]
  ------------------
17845|      0|	goto yy59;
17846|     10|yy813:
17847|     10|	YYDEBUG(813, *YYCURSOR);
17848|     10|	yyaccept = 4;
17849|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     10|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
17850|     10|	if (yych <= 'A') {
  ------------------
  |  Branch (17850:6): [True: 9, False: 1]
  ------------------
17851|      9|		if (yych <= '-') {
  ------------------
  |  Branch (17851:7): [True: 7, False: 2]
  ------------------
17852|      7|			if (yych <= '\t') {
  ------------------
  |  Branch (17852:8): [True: 2, False: 5]
  ------------------
17853|      2|				if (yych <= 0x08) goto yy177;
  ------------------
  |  Branch (17853:9): [True: 2, False: 0]
  ------------------
17854|      0|				goto yy638;
17855|      5|			} else {
17856|      5|				if (yych == ' ') goto yy638;
  ------------------
  |  Branch (17856:9): [True: 2, False: 3]
  ------------------
17857|      3|				goto yy177;
17858|      5|			}
17859|      7|		} else {
17860|      2|			if (yych <= '/') {
  ------------------
  |  Branch (17860:8): [True: 0, False: 2]
  ------------------
17861|      0|				if (yych <= '.') goto yy744;
  ------------------
  |  Branch (17861:9): [True: 0, False: 0]
  ------------------
17862|      0|				goto yy177;
17863|      2|			} else {
17864|      2|				if (yych <= '9') goto yy897;
  ------------------
  |  Branch (17864:9): [True: 1, False: 1]
  ------------------
17865|      1|				if (yych <= '@') goto yy177;
  ------------------
  |  Branch (17865:9): [True: 1, False: 0]
  ------------------
17866|      0|				goto yy106;
17867|      1|			}
17868|      2|		}
17869|      9|	} else {
17870|      1|		if (yych <= 'o') {
  ------------------
  |  Branch (17870:7): [True: 0, False: 1]
  ------------------
17871|      0|			if (yych <= 'P') {
  ------------------
  |  Branch (17871:8): [True: 0, False: 0]
  ------------------
17872|      0|				if (yych <= 'O') goto yy177;
  ------------------
  |  Branch (17872:9): [True: 0, False: 0]
  ------------------
17873|      0|				goto yy106;
17874|      0|			} else {
17875|      0|				if (yych == 'a') goto yy106;
  ------------------
  |  Branch (17875:9): [True: 0, False: 0]
  ------------------
17876|      0|				goto yy177;
17877|      0|			}
17878|      1|		} else {
17879|      1|			if (yych <= 0xC2) {
  ------------------
  |  Branch (17879:8): [True: 1, False: 0]
  ------------------
17880|      1|				if (yych <= 'p') goto yy106;
  ------------------
  |  Branch (17880:9): [True: 0, False: 1]
  ------------------
17881|      1|				if (yych <= 0xC1) goto yy177;
  ------------------
  |  Branch (17881:9): [True: 1, False: 0]
  ------------------
17882|      0|				goto yy640;
17883|      1|			} else {
17884|      0|				if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (17884:9): [True: 0, False: 0]
  ------------------
17885|      0|				goto yy177;
17886|      0|			}
17887|      1|		}
17888|      1|	}
17889|      1|yy814:
17890|      1|	YYDEBUG(814, *YYCURSOR);
17891|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17892|      1|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      1|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (17892:6): [True: 0, False: 1]
  ------------------
17893|      1|	yych = *YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17894|      1|	if (yych <= '`') {
  ------------------
  |  Branch (17894:6): [True: 0, False: 1]
  ------------------
17895|      0|		if (yych <= 'A') {
  ------------------
  |  Branch (17895:7): [True: 0, False: 0]
  ------------------
17896|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (17896:8): [True: 0, False: 0]
  ------------------
17897|      0|			goto yy106;
17898|      0|		} else {
17899|      0|			if (yych == 'P') goto yy106;
  ------------------
  |  Branch (17899:8): [True: 0, False: 0]
  ------------------
17900|      0|			goto yy59;
17901|      0|		}
17902|      1|	} else {
17903|      1|		if (yych <= 'p') {
  ------------------
  |  Branch (17903:7): [True: 0, False: 1]
  ------------------
17904|      0|			if (yych <= 'a') goto yy106;
  ------------------
  |  Branch (17904:8): [True: 0, False: 0]
  ------------------
17905|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (17905:8): [True: 0, False: 0]
  ------------------
17906|      0|			goto yy106;
17907|      1|		} else {
17908|      1|			if (yych == 0xC2) goto yy640;
  ------------------
  |  Branch (17908:8): [True: 0, False: 1]
  ------------------
17909|      1|			goto yy59;
17910|      1|		}
17911|      1|	}
17912|      0|yy815:
17913|      0|	YYDEBUG(815, *YYCURSOR);
17914|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17915|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (17915:6): [True: 0, False: 0]
  ------------------
17916|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17917|      0|	if (yych == 0xAF) goto yy947;
  ------------------
  |  Branch (17917:6): [True: 0, False: 0]
  ------------------
17918|      0|	goto yy59;
17919|     11|yy816:
17920|     11|	YYDEBUG(816, *YYCURSOR);
17921|     11|	yyaccept = 4;
17922|     11|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     11|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
17923|     11|	if (yych <= 'O') {
  ------------------
  |  Branch (17923:6): [True: 9, False: 2]
  ------------------
17924|      9|		if (yych <= ' ') {
  ------------------
  |  Branch (17924:7): [True: 9, False: 0]
  ------------------
17925|      9|			if (yych == '\t') goto yy638;
  ------------------
  |  Branch (17925:8): [True: 0, False: 9]
  ------------------
17926|      9|			if (yych <= 0x1F) goto yy177;
  ------------------
  |  Branch (17926:8): [True: 1, False: 8]
  ------------------
17927|      8|			goto yy638;
17928|      9|		} else {
17929|      0|			if (yych <= '.') {
  ------------------
  |  Branch (17929:8): [True: 0, False: 0]
  ------------------
17930|      0|				if (yych <= '-') goto yy177;
  ------------------
  |  Branch (17930:9): [True: 0, False: 0]
  ------------------
17931|      0|				goto yy744;
17932|      0|			} else {
17933|      0|				if (yych == 'A') goto yy106;
  ------------------
  |  Branch (17933:9): [True: 0, False: 0]
  ------------------
17934|      0|				goto yy177;
17935|      0|			}
17936|      0|		}
17937|      9|	} else {
17938|      2|		if (yych <= 'p') {
  ------------------
  |  Branch (17938:7): [True: 0, False: 2]
  ------------------
17939|      0|			if (yych <= '`') {
  ------------------
  |  Branch (17939:8): [True: 0, False: 0]
  ------------------
17940|      0|				if (yych <= 'P') goto yy106;
  ------------------
  |  Branch (17940:9): [True: 0, False: 0]
  ------------------
17941|      0|				goto yy177;
17942|      0|			} else {
17943|      0|				if (yych <= 'a') goto yy106;
  ------------------
  |  Branch (17943:9): [True: 0, False: 0]
  ------------------
17944|      0|				if (yych <= 'o') goto yy177;
  ------------------
  |  Branch (17944:9): [True: 0, False: 0]
  ------------------
17945|      0|				goto yy106;
17946|      0|			}
17947|      2|		} else {
17948|      2|			if (yych <= 0xC2) {
  ------------------
  |  Branch (17948:8): [True: 0, False: 2]
  ------------------
17949|      0|				if (yych <= 0xC1) goto yy177;
  ------------------
  |  Branch (17949:9): [True: 0, False: 0]
  ------------------
17950|      0|				goto yy640;
17951|      2|			} else {
17952|      2|				if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (17952:9): [True: 0, False: 2]
  ------------------
17953|      2|				goto yy177;
17954|      2|			}
17955|      2|		}
17956|      2|	}
17957|      2|yy817:
17958|      2|	YYDEBUG(817, *YYCURSOR);
17959|      2|	yyaccept = 4;
17960|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
17961|      2|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (17961:6): [True: 0, False: 2]
  ------------------
17962|      2|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (17962:6): [True: 0, False: 2]
  ------------------
17963|      2|	if (yych <= '9') goto yy948;
  ------------------
  |  Branch (17963:6): [True: 2, False: 0]
  ------------------
17964|      0|	goto yy177;
17965|      0|yy818:
17966|      0|	YYDEBUG(818, *YYCURSOR);
17967|      0|	yyaccept = 4;
17968|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
17969|      0|	if (yych == '.') goto yy744;
  ------------------
  |  Branch (17969:6): [True: 0, False: 0]
  ------------------
17970|      0|	if (yych == '0') goto yy948;
  ------------------
  |  Branch (17970:6): [True: 0, False: 0]
  ------------------
17971|      0|	goto yy177;
17972|      1|yy819:
17973|      1|	YYDEBUG(819, *YYCURSOR);
17974|      1|	yyaccept = 15;
17975|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
17976|      1|	if (yych <= 'n') {
  ------------------
  |  Branch (17976:6): [True: 1, False: 0]
  ------------------
17977|      1|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (17977:7): [True: 0, False: 1]
  ------------------
17978|      1|		if (yych <= '9') goto yy821;
  ------------------
  |  Branch (17978:7): [True: 1, False: 0]
  ------------------
17979|      0|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (17979:7): [True: 0, False: 0]
  ------------------
17980|      0|		goto yy741;
17981|      0|	} else {
17982|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (17982:7): [True: 0, False: 0]
  ------------------
17983|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (17983:8): [True: 0, False: 0]
  ------------------
17984|      0|			goto yy741;
17985|      0|		} else {
17986|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (17986:8): [True: 0, False: 0]
  ------------------
17987|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (17987:8): [True: 0, False: 0]
  ------------------
17988|      0|			goto yy567;
17989|      0|		}
17990|      0|	}
17991|      2|yy820:
17992|      2|	YYDEBUG(820, *YYCURSOR);
17993|      2|	yyaccept = 15;
17994|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
17995|      2|	if (yych <= 'n') {
  ------------------
  |  Branch (17995:6): [True: 2, False: 0]
  ------------------
17996|      2|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (17996:7): [True: 1, False: 1]
  ------------------
17997|      1|		if (yych <= '1') goto yy821;
  ------------------
  |  Branch (17997:7): [True: 1, False: 0]
  ------------------
17998|      0|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (17998:7): [True: 0, False: 0]
  ------------------
17999|      0|		goto yy741;
18000|      0|	} else {
18001|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (18001:7): [True: 0, False: 0]
  ------------------
18002|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (18002:8): [True: 0, False: 0]
  ------------------
18003|      0|			goto yy741;
18004|      0|		} else {
18005|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (18005:8): [True: 0, False: 0]
  ------------------
18006|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (18006:8): [True: 0, False: 0]
  ------------------
18007|      0|			goto yy567;
18008|      0|		}
18009|      0|	}
18010|      2|yy821:
18011|      2|	YYDEBUG(821, *YYCURSOR);
18012|      2|	yyaccept = 15;
18013|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
18014|      2|	if (yych <= 'q') {
  ------------------
  |  Branch (18014:6): [True: 0, False: 2]
  ------------------
18015|      0|		if (yych == 'n') goto yy741;
  ------------------
  |  Branch (18015:7): [True: 0, False: 0]
  ------------------
18016|      0|		goto yy567;
18017|      2|	} else {
18018|      2|		if (yych <= 'r') goto yy741;
  ------------------
  |  Branch (18018:7): [True: 0, False: 2]
  ------------------
18019|      2|		if (yych <= 's') goto yy742;
  ------------------
  |  Branch (18019:7): [True: 0, False: 2]
  ------------------
18020|      2|		if (yych <= 't') goto yy743;
  ------------------
  |  Branch (18020:7): [True: 0, False: 2]
  ------------------
18021|      2|		goto yy567;
18022|      2|	}
18023|      1|yy822:
18024|      1|	YYDEBUG(822, *YYCURSOR);
18025|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18026|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (18026:6): [True: 0, False: 1]
  ------------------
18027|      1|	if (yych <= '2') goto yy949;
  ------------------
  |  Branch (18027:6): [True: 1, False: 0]
  ------------------
18028|      0|	if (yych <= '3') goto yy950;
  ------------------
  |  Branch (18028:6): [True: 0, False: 0]
  ------------------
18029|      0|	if (yych <= '9') goto yy821;
  ------------------
  |  Branch (18029:6): [True: 0, False: 0]
  ------------------
18030|      0|	goto yy59;
18031|     22|yy823:
18032|     22|	YYDEBUG(823, *YYCURSOR);
18033|     22|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     22|#define   YYCURSOR     cursor
  ------------------
18034|     22|	if (yych == '-') goto yy951;
  ------------------
  |  Branch (18034:6): [True: 2, False: 20]
  ------------------
18035|     20|	goto yy59;
18036|     20|yy824:
18037|      3|	YYDEBUG(824, *YYCURSOR);
18038|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
18039|      3|	if (yych <= 'S') {
  ------------------
  |  Branch (18039:6): [True: 2, False: 1]
  ------------------
18040|      2|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (18040:7): [True: 0, False: 2]
  ------------------
18041|      2|		goto yy59;
18042|      2|	} else {
18043|      1|		if (yych <= 'T') goto yy823;
  ------------------
  |  Branch (18043:7): [True: 0, False: 1]
  ------------------
18044|      1|		if (yych == 't') goto yy823;
  ------------------
  |  Branch (18044:7): [True: 1, False: 0]
  ------------------
18045|      0|		goto yy59;
18046|      1|	}
18047|      8|yy825:
18048|      8|	YYDEBUG(825, *YYCURSOR);
18049|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
18050|      8|	if (yych <= '/') goto yy290;
  ------------------
  |  Branch (18050:6): [True: 6, False: 2]
  ------------------
18051|      2|	if (yych <= '9') goto yy952;
  ------------------
  |  Branch (18051:6): [True: 2, False: 0]
  ------------------
18052|      0|	goto yy290;
18053|    608|yy826:
18054|    608|	YYDEBUG(826, *YYCURSOR);
18055|    608|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    608|#define   YYCURSOR     cursor
  ------------------
18056|    608|	if (yych == ')') goto yy115;
  ------------------
  |  Branch (18056:6): [True: 1, False: 607]
  ------------------
18057|    607|	goto yy20;
18058|    607|yy827:
18059|      0|	YYDEBUG(827, *YYCURSOR);
18060|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18061|      0|	if (yych <= '9') {
  ------------------
  |  Branch (18061:6): [True: 0, False: 0]
  ------------------
18062|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (18062:7): [True: 0, False: 0]
  ------------------
18063|      0|			if (yych <= 0x08) {
  ------------------
  |  Branch (18063:8): [True: 0, False: 0]
  ------------------
18064|      0|				if (yych <= 0x00) goto yy324;
  ------------------
  |  Branch (18064:9): [True: 0, False: 0]
  ------------------
18065|      0|				goto yy59;
18066|      0|			} else {
18067|      0|				if (yych <= '\t') goto yy326;
  ------------------
  |  Branch (18067:9): [True: 0, False: 0]
  ------------------
18068|      0|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (18068:9): [True: 0, False: 0]
  ------------------
18069|      0|				goto yy326;
18070|      0|			}
18071|      0|		} else {
18072|      0|			if (yych <= '-') {
  ------------------
  |  Branch (18072:8): [True: 0, False: 0]
  ------------------
18073|      0|				if (yych <= '+') goto yy59;
  ------------------
  |  Branch (18073:9): [True: 0, False: 0]
  ------------------
18074|      0|				if (yych <= ',') goto yy326;
  ------------------
  |  Branch (18074:9): [True: 0, False: 0]
  ------------------
18075|      0|				goto yy953;
18076|      0|			} else {
18077|      0|				if (yych <= '.') goto yy326;
  ------------------
  |  Branch (18077:9): [True: 0, False: 0]
  ------------------
18078|      0|				if (yych <= '/') goto yy59;
  ------------------
  |  Branch (18078:9): [True: 0, False: 0]
  ------------------
18079|      0|				goto yy512;
18080|      0|			}
18081|      0|		}
18082|      0|	} else {
18083|      0|		if (yych <= 'm') {
  ------------------
  |  Branch (18083:7): [True: 0, False: 0]
  ------------------
18084|      0|			if (yych <= 'd') {
  ------------------
  |  Branch (18084:8): [True: 0, False: 0]
  ------------------
18085|      0|				if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (18085:9): [True: 0, False: 0]
  ------------------
18086|      0|				goto yy326;
18087|      0|			} else {
18088|      0|				if (yych == 'h') goto yy326;
  ------------------
  |  Branch (18088:9): [True: 0, False: 0]
  ------------------
18089|      0|				goto yy59;
18090|      0|			}
18091|      0|		} else {
18092|      0|			if (yych <= 'r') {
  ------------------
  |  Branch (18092:8): [True: 0, False: 0]
  ------------------
18093|      0|				if (yych <= 'n') goto yy329;
  ------------------
  |  Branch (18093:9): [True: 0, False: 0]
  ------------------
18094|      0|				if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (18094:9): [True: 0, False: 0]
  ------------------
18095|      0|				goto yy329;
18096|      0|			} else {
18097|      0|				if (yych <= 's') goto yy330;
  ------------------
  |  Branch (18097:9): [True: 0, False: 0]
  ------------------
18098|      0|				if (yych <= 't') goto yy331;
  ------------------
  |  Branch (18098:9): [True: 0, False: 0]
  ------------------
18099|      0|				goto yy59;
18100|      0|			}
18101|      0|		}
18102|      0|	}
18103|      0|yy828:
18104|      0|	YYDEBUG(828, *YYCURSOR);
18105|      0|	yyaccept = 7;
18106|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18107|      0|	if (yych <= '(') {
  ------------------
  |  Branch (18107:6): [True: 0, False: 0]
  ------------------
18108|      0|		if (yych <= '\t') {
  ------------------
  |  Branch (18108:7): [True: 0, False: 0]
  ------------------
18109|      0|			if (yych <= 0x08) goto yy295;
  ------------------
  |  Branch (18109:8): [True: 0, False: 0]
  ------------------
18110|      0|			goto yy142;
18111|      0|		} else {
18112|      0|			if (yych == ' ') goto yy142;
  ------------------
  |  Branch (18112:8): [True: 0, False: 0]
  ------------------
18113|      0|			goto yy295;
18114|      0|		}
18115|      0|	} else {
18116|      0|		if (yych <= '.') {
  ------------------
  |  Branch (18116:7): [True: 0, False: 0]
  ------------------
18117|      0|			if (yych <= ')') goto yy115;
  ------------------
  |  Branch (18117:8): [True: 0, False: 0]
  ------------------
18118|      0|			if (yych <= ',') goto yy295;
  ------------------
  |  Branch (18118:8): [True: 0, False: 0]
  ------------------
18119|      0|			goto yy142;
18120|      0|		} else {
18121|      0|			if (yych <= '/') goto yy295;
  ------------------
  |  Branch (18121:8): [True: 0, False: 0]
  ------------------
18122|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (18122:8): [True: 0, False: 0]
  ------------------
18123|      0|			goto yy295;
18124|      0|		}
18125|      0|	}
18126|     59|yy829:
18127|     59|	YYDEBUG(829, *YYCURSOR);
18128|     59|	yyaccept = 2;
18129|     59|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     59|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     59|#define   YYCURSOR     cursor
  ------------------
18130|     59|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (18130:6): [True: 41, False: 18]
  ------------------
18131|     41|		goto yy954;
18132|     41|	}
18133|     18|	if (yych <= '-') {
  ------------------
  |  Branch (18133:6): [True: 7, False: 11]
  ------------------
18134|      7|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18134:7): [True: 0, False: 7]
  ------------------
18135|      7|		if (yych <= ',') goto yy20;
  ------------------
  |  Branch (18135:7): [True: 6, False: 1]
  ------------------
18136|      1|		goto yy297;
18137|     11|	} else {
18138|     11|		if (yych <= '/') {
  ------------------
  |  Branch (18138:7): [True: 0, False: 11]
  ------------------
18139|      0|			if (yych <= '.') goto yy20;
  ------------------
  |  Branch (18139:8): [True: 0, False: 0]
  ------------------
18140|      0|			goto yy297;
18141|     11|		} else {
18142|     11|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18142:8): [True: 0, False: 11]
  ------------------
18143|     11|			goto yy20;
18144|     11|		}
18145|     11|	}
18146|      0|yy830:
18147|      0|	YYDEBUG(830, *YYCURSOR);
18148|      0|	yyaccept = 7;
18149|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18150|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (18150:6): [True: 0, False: 0]
  ------------------
18151|      0|		goto yy954;
18152|      0|	}
18153|      0|	if (yych <= ',') {
  ------------------
  |  Branch (18153:6): [True: 0, False: 0]
  ------------------
18154|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (18154:7): [True: 0, False: 0]
  ------------------
18155|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (18155:8): [True: 0, False: 0]
  ------------------
18156|      0|			goto yy295;
18157|      0|		} else {
18158|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (18158:8): [True: 0, False: 0]
  ------------------
18159|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18159:8): [True: 0, False: 0]
  ------------------
18160|      0|			goto yy295;
18161|      0|		}
18162|      0|	} else {
18163|      0|		if (yych <= '/') {
  ------------------
  |  Branch (18163:7): [True: 0, False: 0]
  ------------------
18164|      0|			if (yych <= '-') goto yy700;
  ------------------
  |  Branch (18164:8): [True: 0, False: 0]
  ------------------
18165|      0|			if (yych <= '.') goto yy142;
  ------------------
  |  Branch (18165:8): [True: 0, False: 0]
  ------------------
18166|      0|			goto yy297;
18167|      0|		} else {
18168|      0|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (18168:8): [True: 0, False: 0]
  ------------------
18169|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18169:8): [True: 0, False: 0]
  ------------------
18170|      0|			goto yy295;
18171|      0|		}
18172|      0|	}
18173|      0|yy831:
18174|      0|	YYDEBUG(831, *YYCURSOR);
18175|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18176|      0|	if (yych == 'F') goto yy956;
  ------------------
  |  Branch (18176:6): [True: 0, False: 0]
  ------------------
18177|      0|	if (yych == 'f') goto yy956;
  ------------------
  |  Branch (18177:6): [True: 0, False: 0]
  ------------------
18178|      0|	goto yy59;
18179|      0|yy832:
18180|      0|	YYDEBUG(832, *YYCURSOR);
18181|      0|	yyaccept = 2;
18182|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18183|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (18183:6): [True: 0, False: 0]
  ------------------
18184|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18184:7): [True: 0, False: 0]
  ------------------
18185|      0|		goto yy20;
18186|      0|	} else {
18187|      0|		if (yych <= 'E') goto yy957;
  ------------------
  |  Branch (18187:7): [True: 0, False: 0]
  ------------------
18188|      0|		if (yych == 'e') goto yy957;
  ------------------
  |  Branch (18188:7): [True: 0, False: 0]
  ------------------
18189|      0|		goto yy20;
18190|      0|	}
18191|      0|yy833:
18192|      0|	YYDEBUG(833, *YYCURSOR);
18193|      0|	yyaccept = 2;
18194|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18195|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (18195:6): [True: 0, False: 0]
  ------------------
18196|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18196:7): [True: 0, False: 0]
  ------------------
18197|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18197:8): [True: 0, False: 0]
  ------------------
18198|      0|			goto yy20;
18199|      0|		} else {
18200|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18200:8): [True: 0, False: 0]
  ------------------
18201|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18201:8): [True: 0, False: 0]
  ------------------
18202|      0|			goto yy20;
18203|      0|		}
18204|      0|	} else {
18205|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18205:7): [True: 0, False: 0]
  ------------------
18206|      0|			if (yych <= 'E') goto yy957;
  ------------------
  |  Branch (18206:8): [True: 0, False: 0]
  ------------------
18207|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18207:8): [True: 0, False: 0]
  ------------------
18208|      0|			goto yy20;
18209|      0|		} else {
18210|      0|			if (yych == 'e') goto yy958;
  ------------------
  |  Branch (18210:8): [True: 0, False: 0]
  ------------------
18211|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18211:8): [True: 0, False: 0]
  ------------------
18212|      0|			goto yy20;
18213|      0|		}
18214|      0|	}
18215|     14|yy834:
18216|     14|	YYDEBUG(834, *YYCURSOR);
18217|     14|	++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
18218|     14|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|     14|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (18218:6): [True: 0, False: 14]
  ------------------
18219|     14|	yych = *YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
18220|     14|yy835:
18221|     14|	YYDEBUG(835, *YYCURSOR);
18222|     14|	if (yych <= 'X') {
  ------------------
  |  Branch (18222:6): [True: 3, False: 11]
  ------------------
18223|      3|		if (yych <= 'G') {
  ------------------
  |  Branch (18223:7): [True: 1, False: 2]
  ------------------
18224|      1|			if (yych <= ' ') {
  ------------------
  |  Branch (18224:8): [True: 0, False: 1]
  ------------------
18225|      0|				if (yych == '\t') goto yy834;
  ------------------
  |  Branch (18225:9): [True: 0, False: 0]
  ------------------
18226|      0|				if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (18226:9): [True: 0, False: 0]
  ------------------
18227|      0|				goto yy834;
18228|      1|			} else {
18229|      1|				if (yych <= 'D') {
  ------------------
  |  Branch (18229:9): [True: 1, False: 0]
  ------------------
18230|      1|					if (yych <= 'C') goto yy59;
  ------------------
  |  Branch (18230:10): [True: 1, False: 0]
  ------------------
18231|      0|					goto yy856;
18232|      1|				} else {
18233|      0|					if (yych == 'F') goto yy857;
  ------------------
  |  Branch (18233:10): [True: 0, False: 0]
  ------------------
18234|      0|					goto yy59;
18235|      0|				}
18236|      1|			}
18237|      2|		} else {
18238|      2|			if (yych <= 'S') {
  ------------------
  |  Branch (18238:8): [True: 2, False: 0]
  ------------------
18239|      2|				if (yych <= 'L') {
  ------------------
  |  Branch (18239:9): [True: 0, False: 2]
  ------------------
18240|      0|					if (yych <= 'H') goto yy858;
  ------------------
  |  Branch (18240:10): [True: 0, False: 0]
  ------------------
18241|      0|					goto yy59;
18242|      2|				} else {
18243|      2|					if (yych <= 'M') goto yy859;
  ------------------
  |  Branch (18243:10): [True: 0, False: 2]
  ------------------
18244|      2|					if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (18244:10): [True: 2, False: 0]
  ------------------
18245|      0|					goto yy860;
18246|      2|				}
18247|      2|			} else {
18248|      0|				if (yych <= 'U') {
  ------------------
  |  Branch (18248:9): [True: 0, False: 0]
  ------------------
18249|      0|					if (yych <= 'T') goto yy861;
  ------------------
  |  Branch (18249:10): [True: 0, False: 0]
  ------------------
18250|      0|					goto yy862;
18251|      0|				} else {
18252|      0|					if (yych == 'W') goto yy959;
  ------------------
  |  Branch (18252:10): [True: 0, False: 0]
  ------------------
18253|      0|					goto yy59;
18254|      0|				}
18255|      0|			}
18256|      2|		}
18257|     11|	} else {
18258|     11|		if (yych <= 'r') {
  ------------------
  |  Branch (18258:7): [True: 2, False: 9]
  ------------------
18259|      2|			if (yych <= 'f') {
  ------------------
  |  Branch (18259:8): [True: 1, False: 1]
  ------------------
18260|      1|				if (yych <= 'c') {
  ------------------
  |  Branch (18260:9): [True: 0, False: 1]
  ------------------
18261|      0|					if (yych <= 'Y') goto yy864;
  ------------------
  |  Branch (18261:10): [True: 0, False: 0]
  ------------------
18262|      0|					goto yy59;
18263|      1|				} else {
18264|      1|					if (yych <= 'd') goto yy856;
  ------------------
  |  Branch (18264:10): [True: 0, False: 1]
  ------------------
18265|      1|					if (yych <= 'e') goto yy59;
  ------------------
  |  Branch (18265:10): [True: 0, False: 1]
  ------------------
18266|      1|					goto yy857;
18267|      1|				}
18268|      1|			} else {
18269|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (18269:9): [True: 0, False: 1]
  ------------------
18270|      0|					if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (18270:10): [True: 0, False: 0]
  ------------------
18271|      0|					goto yy858;
18272|      1|				} else {
18273|      1|					if (yych == 'm') goto yy859;
  ------------------
  |  Branch (18273:10): [True: 1, False: 0]
  ------------------
18274|      0|					goto yy59;
18275|      1|				}
18276|      1|			}
18277|      9|		} else {
18278|      9|			if (yych <= 'w') {
  ------------------
  |  Branch (18278:8): [True: 9, False: 0]
  ------------------
18279|      9|				if (yych <= 't') {
  ------------------
  |  Branch (18279:9): [True: 0, False: 9]
  ------------------
18280|      0|					if (yych <= 's') goto yy860;
  ------------------
  |  Branch (18280:10): [True: 0, False: 0]
  ------------------
18281|      0|					goto yy861;
18282|      9|				} else {
18283|      9|					if (yych <= 'u') goto yy862;
  ------------------
  |  Branch (18283:10): [True: 9, False: 0]
  ------------------
18284|      0|					if (yych <= 'v') goto yy59;
  ------------------
  |  Branch (18284:10): [True: 0, False: 0]
  ------------------
18285|      0|					goto yy959;
18286|      0|				}
18287|      9|			} else {
18288|      0|				if (yych <= 'y') {
  ------------------
  |  Branch (18288:9): [True: 0, False: 0]
  ------------------
18289|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (18289:10): [True: 0, False: 0]
  ------------------
18290|      0|					goto yy864;
18291|      0|				} else {
18292|      0|					if (yych == 0xC2) goto yy865;
  ------------------
  |  Branch (18292:10): [True: 0, False: 0]
  ------------------
18293|      0|					goto yy59;
18294|      0|				}
18295|      0|			}
18296|      9|		}
18297|     11|	}
18298|     15|yy836:
18299|     15|	YYDEBUG(836, *YYCURSOR);
18300|     15|	yyaccept = 2;
18301|     15|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     15|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
18302|     15|	if (yych <= '(') {
  ------------------
  |  Branch (18302:6): [True: 13, False: 2]
  ------------------
18303|     13|		if (yych <= '\t') {
  ------------------
  |  Branch (18303:7): [True: 0, False: 13]
  ------------------
18304|      0|			if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (18304:8): [True: 0, False: 0]
  ------------------
18305|      0|			goto yy834;
18306|     13|		} else {
18307|     13|			if (yych == ' ') goto yy834;
  ------------------
  |  Branch (18307:8): [True: 13, False: 0]
  ------------------
18308|      0|			goto yy20;
18309|     13|		}
18310|     13|	} else {
18311|      2|		if (yych <= 0xC2) {
  ------------------
  |  Branch (18311:7): [True: 1, False: 1]
  ------------------
18312|      1|			if (yych <= ')') goto yy115;
  ------------------
  |  Branch (18312:8): [True: 1, False: 0]
  ------------------
18313|      0|			if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (18313:8): [True: 0, False: 0]
  ------------------
18314|      1|		} else {
18315|      1|			if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (18315:8): [True: 0, False: 1]
  ------------------
18316|      1|			goto yy20;
18317|      1|		}
18318|      2|	}
18319|      0|yy837:
18320|      0|	YYDEBUG(837, *YYCURSOR);
18321|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18322|      0|	if (yych == 0xA0) goto yy960;
  ------------------
  |  Branch (18322:6): [True: 0, False: 0]
  ------------------
18323|      0|	goto yy59;
18324|      1|yy838:
18325|      1|	YYDEBUG(838, *YYCURSOR);
18326|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18327|      1|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      1|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (18327:6): [True: 0, False: 1]
  ------------------
18328|      1|	yych = *YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18329|      1|	if (yych == 0x80) goto yy961;
  ------------------
  |  Branch (18329:6): [True: 1, False: 0]
  ------------------
18330|      0|	goto yy59;
18331|      0|yy839:
18332|      0|	YYDEBUG(839, *YYCURSOR);
18333|      0|	yyaccept = 2;
18334|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18335|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (18335:6): [True: 0, False: 0]
  ------------------
18336|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18336:7): [True: 0, False: 0]
  ------------------
18337|      0|		goto yy20;
18338|      0|	} else {
18339|      0|		if (yych <= 'T') goto yy962;
  ------------------
  |  Branch (18339:7): [True: 0, False: 0]
  ------------------
18340|      0|		if (yych == 't') goto yy962;
  ------------------
  |  Branch (18340:7): [True: 0, False: 0]
  ------------------
18341|      0|		goto yy20;
18342|      0|	}
18343|      0|yy840:
18344|      0|	YYDEBUG(840, *YYCURSOR);
18345|      0|	yyaccept = 2;
18346|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18347|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (18347:6): [True: 0, False: 0]
  ------------------
18348|      0|		goto yy954;
18349|      0|	}
18350|      0|	if (yych <= '-') {
  ------------------
  |  Branch (18350:6): [True: 0, False: 0]
  ------------------
18351|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (18351:7): [True: 0, False: 0]
  ------------------
18352|      0|			if (yych == '\t') goto yy834;
  ------------------
  |  Branch (18352:8): [True: 0, False: 0]
  ------------------
18353|      0|			if (yych <= 0x1F) goto yy20;
  ------------------
  |  Branch (18353:8): [True: 0, False: 0]
  ------------------
18354|      0|			goto yy834;
18355|      0|		} else {
18356|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18356:8): [True: 0, False: 0]
  ------------------
18357|      0|			if (yych <= ',') goto yy20;
  ------------------
  |  Branch (18357:8): [True: 0, False: 0]
  ------------------
18358|      0|			goto yy297;
18359|      0|		}
18360|      0|	} else {
18361|      0|		if (yych <= '_') {
  ------------------
  |  Branch (18361:7): [True: 0, False: 0]
  ------------------
18362|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (18362:8): [True: 0, False: 0]
  ------------------
18363|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (18363:8): [True: 0, False: 0]
  ------------------
18364|      0|			goto yy297;
18365|      0|		} else {
18366|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (18366:8): [True: 0, False: 0]
  ------------------
18367|      0|				if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (18367:9): [True: 0, False: 0]
  ------------------
18368|      0|				goto yy837;
18369|      0|			} else {
18370|      0|				if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (18370:9): [True: 0, False: 0]
  ------------------
18371|      0|				goto yy20;
18372|      0|			}
18373|      0|		}
18374|      0|	}
18375|      4|yy841:
18376|      4|	YYDEBUG(841, *YYCURSOR);
18377|      4|	yyaccept = 2;
18378|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
18379|      4|	if (yych <= 'S') {
  ------------------
  |  Branch (18379:6): [True: 3, False: 1]
  ------------------
18380|      3|		if (yych <= ',') {
  ------------------
  |  Branch (18380:7): [True: 0, False: 3]
  ------------------
18381|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18381:8): [True: 0, False: 0]
  ------------------
18382|      0|			goto yy20;
18383|      3|		} else {
18384|      3|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18384:8): [True: 3, False: 0]
  ------------------
18385|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18385:8): [True: 0, False: 0]
  ------------------
18386|      0|			goto yy20;
18387|      0|		}
18388|      3|	} else {
18389|      1|		if (yych <= '`') {
  ------------------
  |  Branch (18389:7): [True: 0, False: 1]
  ------------------
18390|      0|			if (yych <= 'T') goto yy962;
  ------------------
  |  Branch (18390:8): [True: 0, False: 0]
  ------------------
18391|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18391:8): [True: 0, False: 0]
  ------------------
18392|      0|			goto yy20;
18393|      1|		} else {
18394|      1|			if (yych == 't') goto yy963;
  ------------------
  |  Branch (18394:8): [True: 0, False: 1]
  ------------------
18395|      1|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18395:8): [True: 1, False: 0]
  ------------------
18396|      0|			goto yy20;
18397|      1|		}
18398|      1|	}
18399|      0|yy842:
18400|      0|	YYDEBUG(842, *YYCURSOR);
18401|      0|	yyaccept = 2;
18402|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18403|      0|	if (yych <= 'Q') {
  ------------------
  |  Branch (18403:6): [True: 0, False: 0]
  ------------------
18404|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18404:7): [True: 0, False: 0]
  ------------------
18405|      0|		goto yy20;
18406|      0|	} else {
18407|      0|		if (yych <= 'R') goto yy964;
  ------------------
  |  Branch (18407:7): [True: 0, False: 0]
  ------------------
18408|      0|		if (yych == 'r') goto yy964;
  ------------------
  |  Branch (18408:7): [True: 0, False: 0]
  ------------------
18409|      0|		goto yy20;
18410|      0|	}
18411|      0|yy843:
18412|      0|	YYDEBUG(843, *YYCURSOR);
18413|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18414|      0|	if (yych == 'D') goto yy866;
  ------------------
  |  Branch (18414:6): [True: 0, False: 0]
  ------------------
18415|      0|	if (yych == 'd') goto yy866;
  ------------------
  |  Branch (18415:6): [True: 0, False: 0]
  ------------------
18416|      0|	goto yy835;
18417|      2|yy844:
18418|      2|	YYDEBUG(844, *YYCURSOR);
18419|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
18420|      2|	if (yych <= 'R') {
  ------------------
  |  Branch (18420:6): [True: 2, False: 0]
  ------------------
18421|      2|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18421:7): [True: 0, False: 2]
  ------------------
18422|      2|		goto yy315;
18423|      2|	} else {
18424|      0|		if (yych <= 'S') goto yy965;
  ------------------
  |  Branch (18424:7): [True: 0, False: 0]
  ------------------
18425|      0|		if (yych == 's') goto yy965;
  ------------------
  |  Branch (18425:7): [True: 0, False: 0]
  ------------------
18426|      0|		goto yy315;
18427|      0|	}
18428|      1|yy845:
18429|      1|	YYDEBUG(845, *YYCURSOR);
18430|      1|	yyaccept = 2;
18431|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18432|      1|	if (yych <= 'Q') {
  ------------------
  |  Branch (18432:6): [True: 0, False: 1]
  ------------------
18433|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18433:7): [True: 0, False: 0]
  ------------------
18434|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18434:8): [True: 0, False: 0]
  ------------------
18435|      0|			goto yy20;
18436|      0|		} else {
18437|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18437:8): [True: 0, False: 0]
  ------------------
18438|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18438:8): [True: 0, False: 0]
  ------------------
18439|      0|			goto yy20;
18440|      0|		}
18441|      1|	} else {
18442|      1|		if (yych <= '`') {
  ------------------
  |  Branch (18442:7): [True: 0, False: 1]
  ------------------
18443|      0|			if (yych <= 'R') goto yy964;
  ------------------
  |  Branch (18443:8): [True: 0, False: 0]
  ------------------
18444|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18444:8): [True: 0, False: 0]
  ------------------
18445|      0|			goto yy20;
18446|      1|		} else {
18447|      1|			if (yych == 'r') goto yy966;
  ------------------
  |  Branch (18447:8): [True: 0, False: 1]
  ------------------
18448|      1|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18448:8): [True: 0, False: 1]
  ------------------
18449|      1|			goto yy20;
18450|      1|		}
18451|      1|	}
18452|      3|yy846:
18453|      3|	YYDEBUG(846, *YYCURSOR);
18454|      3|	yyaccept = 9;
18455|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
18456|      3|	if (yych <= 'R') {
  ------------------
  |  Branch (18456:6): [True: 3, False: 0]
  ------------------
18457|      3|		if (yych <= ',') {
  ------------------
  |  Branch (18457:7): [True: 1, False: 2]
  ------------------
18458|      1|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18458:8): [True: 0, False: 1]
  ------------------
18459|      1|			goto yy315;
18460|      2|		} else {
18461|      2|			if (yych == '.') goto yy315;
  ------------------
  |  Branch (18461:8): [True: 0, False: 2]
  ------------------
18462|      2|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18462:8): [True: 0, False: 2]
  ------------------
18463|      2|			goto yy315;
18464|      2|		}
18465|      3|	} else {
18466|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18466:7): [True: 0, False: 0]
  ------------------
18467|      0|			if (yych <= 'S') goto yy965;
  ------------------
  |  Branch (18467:8): [True: 0, False: 0]
  ------------------
18468|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18468:8): [True: 0, False: 0]
  ------------------
18469|      0|			goto yy315;
18470|      0|		} else {
18471|      0|			if (yych == 's') goto yy967;
  ------------------
  |  Branch (18471:8): [True: 0, False: 0]
  ------------------
18472|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18472:8): [True: 0, False: 0]
  ------------------
18473|      0|			goto yy315;
18474|      0|		}
18475|      0|	}
18476|      1|yy847:
18477|      1|	YYDEBUG(847, *YYCURSOR);
18478|      1|	yyaccept = 2;
18479|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18480|      1|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (18480:6): [True: 0, False: 1]
  ------------------
18481|      1|	if (yych <= '5') goto yy968;
  ------------------
  |  Branch (18481:6): [True: 0, False: 1]
  ------------------
18482|      1|	if (yych <= '9') goto yy115;
  ------------------
  |  Branch (18482:6): [True: 0, False: 1]
  ------------------
18483|      1|	if (yych <= ':') goto yy393;
  ------------------
  |  Branch (18483:6): [True: 0, False: 1]
  ------------------
18484|      1|	goto yy20;
18485|      5|yy848:
18486|      5|	YYDEBUG(848, *YYCURSOR);
18487|      5|	yyaccept = 20;
18488|      5|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      5|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
18489|      5|	if (yych <= '/') {
  ------------------
  |  Branch (18489:6): [True: 0, False: 5]
  ------------------
18490|      0|		if (yych == '.') goto yy969;
  ------------------
  |  Branch (18490:7): [True: 0, False: 0]
  ------------------
18491|      5|	} else {
18492|      5|		if (yych <= '9') goto yy850;
  ------------------
  |  Branch (18492:7): [True: 4, False: 1]
  ------------------
18493|      1|		if (yych <= ':') goto yy969;
  ------------------
  |  Branch (18493:7): [True: 0, False: 1]
  ------------------
18494|      1|	}
18495|     16|yy849:
18496|     16|	YYDEBUG(849, *YYCURSOR);
18497|     16|#line 1938 "ext/date/lib/parse_date.re"
18498|     16|	{
18499|     16|		int tz_not_found;
18500|     16|		DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
18501|     16|		TIMELIB_INIT;
  ------------------
  |  |  107|     16|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
18502|     16|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|     16|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      7|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      7|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      7|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      7|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 7, False: 9]
  |  |  ------------------
  ------------------
18503|      9|		s->time->m = timelib_get_month(&ptr);
18504|      9|		s->time->d = timelib_get_nr(&ptr, 2);
18505|       |
18506|      9|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      9|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      4|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      4|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      4|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 4, False: 5]
  |  |  ------------------
  ------------------
18507|      5|		s->time->h = timelib_get_nr(&ptr, 2);
18508|      5|		s->time->i = timelib_get_nr(&ptr, 2);
18509|      5|		if (*ptr == ':') {
  ------------------
  |  Branch (18509:7): [True: 0, False: 5]
  ------------------
18510|      0|			s->time->s = timelib_get_nr(&ptr, 2);
18511|       |
18512|      0|			if (*ptr == '.') {
  ------------------
  |  Branch (18512:8): [True: 0, False: 0]
  ------------------
18513|      0|				s->time->us = timelib_get_frac_nr(&ptr);
18514|      0|			}
18515|      0|		}
18516|       |
18517|      5|		if (*ptr != '\0') {
  ------------------
  |  Branch (18517:7): [True: 5, False: 0]
  ------------------
18518|      5|			s->time->z = timelib_parse_zone(&ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
18519|      5|			if (tz_not_found) {
  ------------------
  |  Branch (18519:8): [True: 5, False: 0]
  ------------------
18520|      5|				add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
  ------------------
  |  |  288|      5|#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
  ------------------
18521|      5|			}
18522|      5|		}
18523|      5|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      5|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      5|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18524|      5|		return TIMELIB_SHORTDATE_WITH_TIME;
  ------------------
  |  |   68|      5|#define TIMELIB_SHORTDATE_WITH_TIME 276
  ------------------
18525|      9|	}
18526|      0|#line 18527 "ext/date/lib/parse_date.c"
18527|      4|yy850:
18528|      4|	YYDEBUG(850, *YYCURSOR);
18529|      4|	yyaccept = 20;
18530|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
18531|      4|	if (yych == '.') goto yy969;
  ------------------
  |  Branch (18531:6): [True: 0, False: 4]
  ------------------
18532|      4|	if (yych == ':') goto yy969;
  ------------------
  |  Branch (18532:6): [True: 0, False: 4]
  ------------------
18533|      4|	goto yy849;
18534|      7|yy851:
18535|      7|	YYDEBUG(851, *YYCURSOR);
18536|      7|	yyaccept = 20;
18537|      7|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      7|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
18538|      7|	if (yych <= '/') {
  ------------------
  |  Branch (18538:6): [True: 3, False: 4]
  ------------------
18539|      3|		if (yych == '.') goto yy970;
  ------------------
  |  Branch (18539:7): [True: 3, False: 0]
  ------------------
18540|      0|		goto yy849;
18541|      4|	} else {
18542|      4|		if (yych <= '9') goto yy971;
  ------------------
  |  Branch (18542:7): [True: 4, False: 0]
  ------------------
18543|      0|		if (yych <= ':') goto yy970;
  ------------------
  |  Branch (18543:7): [True: 0, False: 0]
  ------------------
18544|      0|		goto yy849;
18545|      0|	}
18546|      4|yy852:
18547|      4|	YYDEBUG(852, *YYCURSOR);
18548|      4|	yyaccept = 20;
18549|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
18550|      4|	if (yych == '.') goto yy970;
  ------------------
  |  Branch (18550:6): [True: 3, False: 1]
  ------------------
18551|      1|	if (yych == ':') goto yy970;
  ------------------
  |  Branch (18551:6): [True: 1, False: 0]
  ------------------
18552|      0|	goto yy849;
18553|      1|yy853:
18554|      1|	YYDEBUG(853, *YYCURSOR);
18555|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18556|      1|	if (yych <= '/') goto yy325;
  ------------------
  |  Branch (18556:6): [True: 0, False: 1]
  ------------------
18557|      1|	if (yych <= '9') goto yy972;
  ------------------
  |  Branch (18557:6): [True: 0, False: 1]
  ------------------
18558|      1|	goto yy325;
18559|      1|yy854:
18560|      0|	YYDEBUG(854, *YYCURSOR);
18561|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18562|      0|	if (yych <= 'X') {
  ------------------
  |  Branch (18562:6): [True: 0, False: 0]
  ------------------
18563|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18563:7): [True: 0, False: 0]
  ------------------
18564|      0|		goto yy20;
18565|      0|	} else {
18566|      0|		if (yych <= 'Y') goto yy973;
  ------------------
  |  Branch (18566:7): [True: 0, False: 0]
  ------------------
18567|      0|		if (yych == 'y') goto yy973;
  ------------------
  |  Branch (18567:7): [True: 0, False: 0]
  ------------------
18568|      0|		goto yy20;
18569|      0|	}
18570|      0|yy855:
18571|      0|	YYDEBUG(855, *YYCURSOR);
18572|      0|	yyaccept = 2;
18573|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18574|      0|	if (yych <= 'X') {
  ------------------
  |  Branch (18574:6): [True: 0, False: 0]
  ------------------
18575|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18575:7): [True: 0, False: 0]
  ------------------
18576|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18576:8): [True: 0, False: 0]
  ------------------
18577|      0|			goto yy20;
18578|      0|		} else {
18579|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18579:8): [True: 0, False: 0]
  ------------------
18580|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18580:8): [True: 0, False: 0]
  ------------------
18581|      0|			goto yy20;
18582|      0|		}
18583|      0|	} else {
18584|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18584:7): [True: 0, False: 0]
  ------------------
18585|      0|			if (yych <= 'Y') goto yy973;
  ------------------
  |  Branch (18585:8): [True: 0, False: 0]
  ------------------
18586|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18586:8): [True: 0, False: 0]
  ------------------
18587|      0|			goto yy20;
18588|      0|		} else {
18589|      0|			if (yych == 'y') goto yy974;
  ------------------
  |  Branch (18589:8): [True: 0, False: 0]
  ------------------
18590|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18590:8): [True: 0, False: 0]
  ------------------
18591|      0|			goto yy20;
18592|      0|		}
18593|      0|	}
18594|      1|yy856:
18595|      1|	YYDEBUG(856, *YYCURSOR);
18596|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18597|      1|	if (yych == 'A') goto yy975;
  ------------------
  |  Branch (18597:6): [True: 0, False: 1]
  ------------------
18598|      1|	if (yych == 'a') goto yy975;
  ------------------
  |  Branch (18598:6): [True: 0, False: 1]
  ------------------
18599|      1|	goto yy59;
18600|      2|yy857:
18601|      2|	YYDEBUG(857, *YYCURSOR);
18602|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
18603|      2|	if (yych <= 'R') {
  ------------------
  |  Branch (18603:6): [True: 0, False: 2]
  ------------------
18604|      0|		if (yych == 'O') goto yy976;
  ------------------
  |  Branch (18604:7): [True: 0, False: 0]
  ------------------
18605|      0|		if (yych <= 'Q') goto yy59;
  ------------------
  |  Branch (18605:7): [True: 0, False: 0]
  ------------------
18606|      0|		goto yy977;
18607|      2|	} else {
18608|      2|		if (yych <= 'o') {
  ------------------
  |  Branch (18608:7): [True: 1, False: 1]
  ------------------
18609|      1|			if (yych <= 'n') goto yy59;
  ------------------
  |  Branch (18609:8): [True: 1, False: 0]
  ------------------
18610|      0|			goto yy976;
18611|      1|		} else {
18612|      1|			if (yych == 'r') goto yy977;
  ------------------
  |  Branch (18612:8): [True: 1, False: 0]
  ------------------
18613|      0|			goto yy59;
18614|      1|		}
18615|      2|	}
18616|      0|yy858:
18617|      0|	YYDEBUG(858, *YYCURSOR);
18618|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18619|      0|	if (yych == 'O') goto yy978;
  ------------------
  |  Branch (18619:6): [True: 0, False: 0]
  ------------------
18620|      0|	if (yych == 'o') goto yy978;
  ------------------
  |  Branch (18620:6): [True: 0, False: 0]
  ------------------
18621|      0|	goto yy59;
18622|      1|yy859:
18623|      1|	YYDEBUG(859, *YYCURSOR);
18624|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18625|      1|	if (yych <= 'S') {
  ------------------
  |  Branch (18625:6): [True: 1, False: 0]
  ------------------
18626|      1|		if (yych <= 'N') {
  ------------------
  |  Branch (18626:7): [True: 1, False: 0]
  ------------------
18627|      1|			if (yych == 'I') goto yy979;
  ------------------
  |  Branch (18627:8): [True: 0, False: 1]
  ------------------
18628|      1|			goto yy59;
18629|      1|		} else {
18630|      0|			if (yych <= 'O') goto yy980;
  ------------------
  |  Branch (18630:8): [True: 0, False: 0]
  ------------------
18631|      0|			if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (18631:8): [True: 0, False: 0]
  ------------------
18632|      0|			goto yy981;
18633|      0|		}
18634|      1|	} else {
18635|      0|		if (yych <= 'n') {
  ------------------
  |  Branch (18635:7): [True: 0, False: 0]
  ------------------
18636|      0|			if (yych == 'i') goto yy979;
  ------------------
  |  Branch (18636:8): [True: 0, False: 0]
  ------------------
18637|      0|			goto yy59;
18638|      0|		} else {
18639|      0|			if (yych <= 'o') goto yy980;
  ------------------
  |  Branch (18639:8): [True: 0, False: 0]
  ------------------
18640|      0|			if (yych == 's') goto yy981;
  ------------------
  |  Branch (18640:8): [True: 0, False: 0]
  ------------------
18641|      0|			goto yy59;
18642|      0|		}
18643|      0|	}
18644|      0|yy860:
18645|      0|	YYDEBUG(860, *YYCURSOR);
18646|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18647|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (18647:6): [True: 0, False: 0]
  ------------------
18648|      0|		if (yych <= 'D') {
  ------------------
  |  Branch (18648:7): [True: 0, False: 0]
  ------------------
18649|      0|			if (yych == 'A') goto yy983;
  ------------------
  |  Branch (18649:8): [True: 0, False: 0]
  ------------------
18650|      0|			goto yy59;
18651|      0|		} else {
18652|      0|			if (yych <= 'E') goto yy984;
  ------------------
  |  Branch (18652:8): [True: 0, False: 0]
  ------------------
18653|      0|			if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (18653:8): [True: 0, False: 0]
  ------------------
18654|      0|			goto yy985;
18655|      0|		}
18656|      0|	} else {
18657|      0|		if (yych <= 'd') {
  ------------------
  |  Branch (18657:7): [True: 0, False: 0]
  ------------------
18658|      0|			if (yych == 'a') goto yy983;
  ------------------
  |  Branch (18658:8): [True: 0, False: 0]
  ------------------
18659|      0|			goto yy59;
18660|      0|		} else {
18661|      0|			if (yych <= 'e') goto yy984;
  ------------------
  |  Branch (18661:8): [True: 0, False: 0]
  ------------------
18662|      0|			if (yych == 'u') goto yy985;
  ------------------
  |  Branch (18662:8): [True: 0, False: 0]
  ------------------
18663|      0|			goto yy59;
18664|      0|		}
18665|      0|	}
18666|      0|yy861:
18667|      0|	YYDEBUG(861, *YYCURSOR);
18668|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18669|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (18669:6): [True: 0, False: 0]
  ------------------
18670|      0|		if (yych == 'H') goto yy986;
  ------------------
  |  Branch (18670:7): [True: 0, False: 0]
  ------------------
18671|      0|		if (yych <= 'T') goto yy59;
  ------------------
  |  Branch (18671:7): [True: 0, False: 0]
  ------------------
18672|      0|		goto yy987;
18673|      0|	} else {
18674|      0|		if (yych <= 'h') {
  ------------------
  |  Branch (18674:7): [True: 0, False: 0]
  ------------------
18675|      0|			if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (18675:8): [True: 0, False: 0]
  ------------------
18676|      0|			goto yy986;
18677|      0|		} else {
18678|      0|			if (yych == 'u') goto yy987;
  ------------------
  |  Branch (18678:8): [True: 0, False: 0]
  ------------------
18679|      0|			goto yy59;
18680|      0|		}
18681|      0|	}
18682|     11|yy862:
18683|     11|	YYDEBUG(862, *YYCURSOR);
18684|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
18685|     11|	if (yych == 'S') goto yy988;
  ------------------
  |  Branch (18685:6): [True: 0, False: 11]
  ------------------
18686|     11|	if (yych == 's') goto yy988;
  ------------------
  |  Branch (18686:6): [True: 0, False: 11]
  ------------------
18687|     11|	goto yy59;
18688|     11|yy863:
18689|      0|	YYDEBUG(863, *YYCURSOR);
18690|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18691|      0|	if (yych == 'E') goto yy989;
  ------------------
  |  Branch (18691:6): [True: 0, False: 0]
  ------------------
18692|      0|	if (yych == 'e') goto yy989;
  ------------------
  |  Branch (18692:6): [True: 0, False: 0]
  ------------------
18693|      0|	goto yy59;
18694|      1|yy864:
18695|      1|	YYDEBUG(864, *YYCURSOR);
18696|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18697|      1|	if (yych == 'E') goto yy990;
  ------------------
  |  Branch (18697:6): [True: 0, False: 1]
  ------------------
18698|      1|	if (yych == 'e') goto yy990;
  ------------------
  |  Branch (18698:6): [True: 0, False: 1]
  ------------------
18699|      1|	goto yy59;
18700|      1|yy865:
18701|      0|	YYDEBUG(865, *YYCURSOR);
18702|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18703|      0|	if (yych == 0xB5) goto yy991;
  ------------------
  |  Branch (18703:6): [True: 0, False: 0]
  ------------------
18704|      0|	goto yy59;
18705|      0|yy866:
18706|      0|	YYDEBUG(866, *YYCURSOR);
18707|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18708|      0|	if (yych == 'A') goto yy992;
  ------------------
  |  Branch (18708:6): [True: 0, False: 0]
  ------------------
18709|      0|	if (yych == 'a') goto yy992;
  ------------------
  |  Branch (18709:6): [True: 0, False: 0]
  ------------------
18710|      0|	goto yy59;
18711|      0|yy867:
18712|      0|	YYDEBUG(867, *YYCURSOR);
18713|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18714|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (18714:6): [True: 0, False: 0]
  ------------------
18715|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18716|      0|	if (yych <= 'c') {
  ------------------
  |  Branch (18716:6): [True: 0, False: 0]
  ------------------
18717|      0|		if (yych <= 'M') {
  ------------------
  |  Branch (18717:7): [True: 0, False: 0]
  ------------------
18718|      0|			if (yych <= 'F') {
  ------------------
  |  Branch (18718:8): [True: 0, False: 0]
  ------------------
18719|      0|				if (yych == 'D') goto yy856;
  ------------------
  |  Branch (18719:9): [True: 0, False: 0]
  ------------------
18720|      0|				if (yych <= 'E') goto yy59;
  ------------------
  |  Branch (18720:9): [True: 0, False: 0]
  ------------------
18721|      0|				goto yy857;
18722|      0|			} else {
18723|      0|				if (yych == 'H') goto yy858;
  ------------------
  |  Branch (18723:9): [True: 0, False: 0]
  ------------------
18724|      0|				if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (18724:9): [True: 0, False: 0]
  ------------------
18725|      0|				goto yy859;
18726|      0|			}
18727|      0|		} else {
18728|      0|			if (yych <= 'U') {
  ------------------
  |  Branch (18728:8): [True: 0, False: 0]
  ------------------
18729|      0|				if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (18729:9): [True: 0, False: 0]
  ------------------
18730|      0|				if (yych <= 'S') goto yy860;
  ------------------
  |  Branch (18730:9): [True: 0, False: 0]
  ------------------
18731|      0|				if (yych <= 'T') goto yy861;
  ------------------
  |  Branch (18731:9): [True: 0, False: 0]
  ------------------
18732|      0|				goto yy862;
18733|      0|			} else {
18734|      0|				if (yych <= 'W') {
  ------------------
  |  Branch (18734:9): [True: 0, False: 0]
  ------------------
18735|      0|					if (yych <= 'V') goto yy59;
  ------------------
  |  Branch (18735:10): [True: 0, False: 0]
  ------------------
18736|      0|					goto yy863;
18737|      0|				} else {
18738|      0|					if (yych == 'Y') goto yy864;
  ------------------
  |  Branch (18738:10): [True: 0, False: 0]
  ------------------
18739|      0|					goto yy59;
18740|      0|				}
18741|      0|			}
18742|      0|		}
18743|      0|	} else {
18744|      0|		if (yych <= 's') {
  ------------------
  |  Branch (18744:7): [True: 0, False: 0]
  ------------------
18745|      0|			if (yych <= 'g') {
  ------------------
  |  Branch (18745:8): [True: 0, False: 0]
  ------------------
18746|      0|				if (yych <= 'd') goto yy856;
  ------------------
  |  Branch (18746:9): [True: 0, False: 0]
  ------------------
18747|      0|				if (yych == 'f') goto yy857;
  ------------------
  |  Branch (18747:9): [True: 0, False: 0]
  ------------------
18748|      0|				goto yy59;
18749|      0|			} else {
18750|      0|				if (yych <= 'l') {
  ------------------
  |  Branch (18750:9): [True: 0, False: 0]
  ------------------
18751|      0|					if (yych <= 'h') goto yy858;
  ------------------
  |  Branch (18751:10): [True: 0, False: 0]
  ------------------
18752|      0|					goto yy59;
18753|      0|				} else {
18754|      0|					if (yych <= 'm') goto yy859;
  ------------------
  |  Branch (18754:10): [True: 0, False: 0]
  ------------------
18755|      0|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (18755:10): [True: 0, False: 0]
  ------------------
18756|      0|					goto yy860;
18757|      0|				}
18758|      0|			}
18759|      0|		} else {
18760|      0|			if (yych <= 'w') {
  ------------------
  |  Branch (18760:8): [True: 0, False: 0]
  ------------------
18761|      0|				if (yych <= 't') goto yy861;
  ------------------
  |  Branch (18761:9): [True: 0, False: 0]
  ------------------
18762|      0|				if (yych <= 'u') goto yy862;
  ------------------
  |  Branch (18762:9): [True: 0, False: 0]
  ------------------
18763|      0|				if (yych <= 'v') goto yy59;
  ------------------
  |  Branch (18763:9): [True: 0, False: 0]
  ------------------
18764|      0|				goto yy863;
18765|      0|			} else {
18766|      0|				if (yych <= 'y') {
  ------------------
  |  Branch (18766:9): [True: 0, False: 0]
  ------------------
18767|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (18767:10): [True: 0, False: 0]
  ------------------
18768|      0|					goto yy864;
18769|      0|				} else {
18770|      0|					if (yych == 0xC2) goto yy993;
  ------------------
  |  Branch (18770:10): [True: 0, False: 0]
  ------------------
18771|      0|					goto yy59;
18772|      0|				}
18773|      0|			}
18774|      0|		}
18775|      0|	}
18776|      0|yy868:
18777|      0|	YYDEBUG(868, *YYCURSOR);
18778|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18779|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (18779:6): [True: 0, False: 0]
  ------------------
18780|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18781|      0|	if (yych == 0xAF) goto yy994;
  ------------------
  |  Branch (18781:6): [True: 0, False: 0]
  ------------------
18782|      0|	goto yy59;
18783|      0|yy869:
18784|      0|	YYDEBUG(869, *YYCURSOR);
18785|      0|	yyaccept = 2;
18786|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18787|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (18787:6): [True: 0, False: 0]
  ------------------
18788|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18788:7): [True: 0, False: 0]
  ------------------
18789|      0|		goto yy20;
18790|      0|	} else {
18791|      0|		if (yych <= 'H') goto yy995;
  ------------------
  |  Branch (18791:7): [True: 0, False: 0]
  ------------------
18792|      0|		if (yych == 'h') goto yy995;
  ------------------
  |  Branch (18792:7): [True: 0, False: 0]
  ------------------
18793|      0|		goto yy20;
18794|      0|	}
18795|      0|yy870:
18796|      0|	YYDEBUG(870, *YYCURSOR);
18797|      0|	yyaccept = 2;
18798|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18799|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (18799:6): [True: 0, False: 0]
  ------------------
18800|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18800:7): [True: 0, False: 0]
  ------------------
18801|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18801:8): [True: 0, False: 0]
  ------------------
18802|      0|			goto yy20;
18803|      0|		} else {
18804|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18804:8): [True: 0, False: 0]
  ------------------
18805|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18805:8): [True: 0, False: 0]
  ------------------
18806|      0|			goto yy20;
18807|      0|		}
18808|      0|	} else {
18809|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18809:7): [True: 0, False: 0]
  ------------------
18810|      0|			if (yych <= 'H') goto yy995;
  ------------------
  |  Branch (18810:8): [True: 0, False: 0]
  ------------------
18811|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18811:8): [True: 0, False: 0]
  ------------------
18812|      0|			goto yy20;
18813|      0|		} else {
18814|      0|			if (yych == 'h') goto yy996;
  ------------------
  |  Branch (18814:8): [True: 0, False: 0]
  ------------------
18815|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18815:8): [True: 0, False: 0]
  ------------------
18816|      0|			goto yy20;
18817|      0|		}
18818|      0|	}
18819|      1|yy871:
18820|      1|	YYDEBUG(871, *YYCURSOR);
18821|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18822|      1|	if (yych <= 'Q') {
  ------------------
  |  Branch (18822:6): [True: 0, False: 1]
  ------------------
18823|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18823:7): [True: 0, False: 0]
  ------------------
18824|      0|		goto yy20;
18825|      1|	} else {
18826|      1|		if (yych <= 'R') goto yy973;
  ------------------
  |  Branch (18826:7): [True: 0, False: 1]
  ------------------
18827|      1|		if (yych == 'r') goto yy973;
  ------------------
  |  Branch (18827:7): [True: 1, False: 0]
  ------------------
18828|      0|		goto yy20;
18829|      1|	}
18830|      0|yy872:
18831|      0|	YYDEBUG(872, *YYCURSOR);
18832|      0|	yyaccept = 2;
18833|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18834|      0|	if (yych <= 'Q') {
  ------------------
  |  Branch (18834:6): [True: 0, False: 0]
  ------------------
18835|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18835:7): [True: 0, False: 0]
  ------------------
18836|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18836:8): [True: 0, False: 0]
  ------------------
18837|      0|			goto yy20;
18838|      0|		} else {
18839|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18839:8): [True: 0, False: 0]
  ------------------
18840|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18840:8): [True: 0, False: 0]
  ------------------
18841|      0|			goto yy20;
18842|      0|		}
18843|      0|	} else {
18844|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18844:7): [True: 0, False: 0]
  ------------------
18845|      0|			if (yych <= 'R') goto yy973;
  ------------------
  |  Branch (18845:8): [True: 0, False: 0]
  ------------------
18846|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18846:8): [True: 0, False: 0]
  ------------------
18847|      0|			goto yy20;
18848|      0|		} else {
18849|      0|			if (yych == 'r') goto yy974;
  ------------------
  |  Branch (18849:8): [True: 0, False: 0]
  ------------------
18850|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18850:8): [True: 0, False: 0]
  ------------------
18851|      0|			goto yy20;
18852|      0|		}
18853|      0|	}
18854|      0|yy873:
18855|      0|	YYDEBUG(873, *YYCURSOR);
18856|      0|	yyaccept = 2;
18857|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18858|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (18858:6): [True: 0, False: 0]
  ------------------
18859|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18859:7): [True: 0, False: 0]
  ------------------
18860|      0|		goto yy20;
18861|      0|	} else {
18862|      0|		if (yych <= 'U') goto yy997;
  ------------------
  |  Branch (18862:7): [True: 0, False: 0]
  ------------------
18863|      0|		if (yych == 'u') goto yy997;
  ------------------
  |  Branch (18863:7): [True: 0, False: 0]
  ------------------
18864|      0|		goto yy20;
18865|      0|	}
18866|      1|yy874:
18867|      1|	YYDEBUG(874, *YYCURSOR);
18868|      1|	yyaccept = 2;
18869|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
18870|      1|	if (yych <= 'T') {
  ------------------
  |  Branch (18870:6): [True: 0, False: 1]
  ------------------
18871|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18871:7): [True: 0, False: 0]
  ------------------
18872|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18872:8): [True: 0, False: 0]
  ------------------
18873|      0|			goto yy20;
18874|      0|		} else {
18875|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18875:8): [True: 0, False: 0]
  ------------------
18876|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18876:8): [True: 0, False: 0]
  ------------------
18877|      0|			goto yy20;
18878|      0|		}
18879|      1|	} else {
18880|      1|		if (yych <= '`') {
  ------------------
  |  Branch (18880:7): [True: 0, False: 1]
  ------------------
18881|      0|			if (yych <= 'U') goto yy997;
  ------------------
  |  Branch (18881:8): [True: 0, False: 0]
  ------------------
18882|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18882:8): [True: 0, False: 0]
  ------------------
18883|      0|			goto yy20;
18884|      1|		} else {
18885|      1|			if (yych == 'u') goto yy998;
  ------------------
  |  Branch (18885:8): [True: 1, False: 0]
  ------------------
18886|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18886:8): [True: 0, False: 0]
  ------------------
18887|      0|			goto yy20;
18888|      0|		}
18889|      1|	}
18890|      0|yy875:
18891|      0|	YYDEBUG(875, *YYCURSOR);
18892|      0|	yyaccept = 2;
18893|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18894|      0|	if (yych <= '@') {
  ------------------
  |  Branch (18894:6): [True: 0, False: 0]
  ------------------
18895|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18895:7): [True: 0, False: 0]
  ------------------
18896|      0|		goto yy20;
18897|      0|	} else {
18898|      0|		if (yych <= 'A') goto yy999;
  ------------------
  |  Branch (18898:7): [True: 0, False: 0]
  ------------------
18899|      0|		if (yych == 'a') goto yy999;
  ------------------
  |  Branch (18899:7): [True: 0, False: 0]
  ------------------
18900|      0|		goto yy20;
18901|      0|	}
18902|      0|yy876:
18903|      0|	YYDEBUG(876, *YYCURSOR);
18904|      0|	yyaccept = 2;
18905|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18906|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (18906:6): [True: 0, False: 0]
  ------------------
18907|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18907:7): [True: 0, False: 0]
  ------------------
18908|      0|		goto yy20;
18909|      0|	} else {
18910|      0|		if (yych <= 'B') goto yy1000;
  ------------------
  |  Branch (18910:7): [True: 0, False: 0]
  ------------------
18911|      0|		if (yych == 'b') goto yy1000;
  ------------------
  |  Branch (18911:7): [True: 0, False: 0]
  ------------------
18912|      0|		goto yy20;
18913|      0|	}
18914|      3|yy877:
18915|      3|	YYDEBUG(877, *YYCURSOR);
18916|      3|	yyaccept = 2;
18917|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
18918|      3|	if (yych <= 'G') {
  ------------------
  |  Branch (18918:6): [True: 0, False: 3]
  ------------------
18919|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (18919:7): [True: 0, False: 0]
  ------------------
18920|      0|		goto yy20;
18921|      3|	} else {
18922|      3|		if (yych <= 'H') goto yy1001;
  ------------------
  |  Branch (18922:7): [True: 0, False: 3]
  ------------------
18923|      3|		if (yych == 'h') goto yy1001;
  ------------------
  |  Branch (18923:7): [True: 1, False: 2]
  ------------------
18924|      2|		goto yy20;
18925|      3|	}
18926|      0|yy878:
18927|      0|	YYDEBUG(878, *YYCURSOR);
18928|      0|	yyaccept = 2;
18929|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18930|      0|	if (yych <= '@') {
  ------------------
  |  Branch (18930:6): [True: 0, False: 0]
  ------------------
18931|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18931:7): [True: 0, False: 0]
  ------------------
18932|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18932:8): [True: 0, False: 0]
  ------------------
18933|      0|			goto yy20;
18934|      0|		} else {
18935|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18935:8): [True: 0, False: 0]
  ------------------
18936|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18936:8): [True: 0, False: 0]
  ------------------
18937|      0|			goto yy20;
18938|      0|		}
18939|      0|	} else {
18940|      0|		if (yych <= '_') {
  ------------------
  |  Branch (18940:7): [True: 0, False: 0]
  ------------------
18941|      0|			if (yych <= 'A') goto yy999;
  ------------------
  |  Branch (18941:8): [True: 0, False: 0]
  ------------------
18942|      0|			if (yych <= '^') goto yy20;
  ------------------
  |  Branch (18942:8): [True: 0, False: 0]
  ------------------
18943|      0|			goto yy297;
18944|      0|		} else {
18945|      0|			if (yych <= '`') goto yy20;
  ------------------
  |  Branch (18945:8): [True: 0, False: 0]
  ------------------
18946|      0|			if (yych <= 'a') goto yy1002;
  ------------------
  |  Branch (18946:8): [True: 0, False: 0]
  ------------------
18947|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18947:8): [True: 0, False: 0]
  ------------------
18948|      0|			goto yy20;
18949|      0|		}
18950|      0|	}
18951|      0|yy879:
18952|      0|	YYDEBUG(879, *YYCURSOR);
18953|      0|	yyaccept = 2;
18954|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18955|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (18955:6): [True: 0, False: 0]
  ------------------
18956|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18956:7): [True: 0, False: 0]
  ------------------
18957|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18957:8): [True: 0, False: 0]
  ------------------
18958|      0|			goto yy20;
18959|      0|		} else {
18960|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18960:8): [True: 0, False: 0]
  ------------------
18961|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18961:8): [True: 0, False: 0]
  ------------------
18962|      0|			goto yy20;
18963|      0|		}
18964|      0|	} else {
18965|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18965:7): [True: 0, False: 0]
  ------------------
18966|      0|			if (yych <= 'B') goto yy1000;
  ------------------
  |  Branch (18966:8): [True: 0, False: 0]
  ------------------
18967|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18967:8): [True: 0, False: 0]
  ------------------
18968|      0|			goto yy20;
18969|      0|		} else {
18970|      0|			if (yych == 'b') goto yy1003;
  ------------------
  |  Branch (18970:8): [True: 0, False: 0]
  ------------------
18971|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18971:8): [True: 0, False: 0]
  ------------------
18972|      0|			goto yy20;
18973|      0|		}
18974|      0|	}
18975|      0|yy880:
18976|      0|	YYDEBUG(880, *YYCURSOR);
18977|      0|	yyaccept = 2;
18978|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
18979|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (18979:6): [True: 0, False: 0]
  ------------------
18980|      0|		if (yych <= ',') {
  ------------------
  |  Branch (18980:7): [True: 0, False: 0]
  ------------------
18981|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (18981:8): [True: 0, False: 0]
  ------------------
18982|      0|			goto yy20;
18983|      0|		} else {
18984|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (18984:8): [True: 0, False: 0]
  ------------------
18985|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (18985:8): [True: 0, False: 0]
  ------------------
18986|      0|			goto yy20;
18987|      0|		}
18988|      0|	} else {
18989|      0|		if (yych <= '`') {
  ------------------
  |  Branch (18989:7): [True: 0, False: 0]
  ------------------
18990|      0|			if (yych <= 'H') goto yy1001;
  ------------------
  |  Branch (18990:8): [True: 0, False: 0]
  ------------------
18991|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (18991:8): [True: 0, False: 0]
  ------------------
18992|      0|			goto yy20;
18993|      0|		} else {
18994|      0|			if (yych == 'h') goto yy1004;
  ------------------
  |  Branch (18994:8): [True: 0, False: 0]
  ------------------
18995|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (18995:8): [True: 0, False: 0]
  ------------------
18996|      0|			goto yy20;
18997|      0|		}
18998|      0|	}
18999|     13|yy881:
19000|     13|	YYDEBUG(881, *YYCURSOR);
19001|     13|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     13|#define   YYCURSOR     cursor
  ------------------
19002|     13|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19002:6): [True: 0, False: 13]
  ------------------
19003|     13|	if (yych <= '9') goto yy1005;
  ------------------
  |  Branch (19003:6): [True: 12, False: 1]
  ------------------
19004|      1|	goto yy59;
19005|      1|yy882:
19006|      0|	YYDEBUG(882, *YYCURSOR);
19007|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19008|      0|	if (yych == '0') goto yy1005;
  ------------------
  |  Branch (19008:6): [True: 0, False: 0]
  ------------------
19009|      0|	goto yy59;
19010|      0|yy883:
19011|      0|	YYDEBUG(883, *YYCURSOR);
19012|      0|	yyaccept = 2;
19013|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19014|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (19014:6): [True: 0, False: 0]
  ------------------
19015|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (19015:7): [True: 0, False: 0]
  ------------------
19016|      0|		goto yy20;
19017|      0|	} else {
19018|      0|		if (yych <= 'O') goto yy1006;
  ------------------
  |  Branch (19018:7): [True: 0, False: 0]
  ------------------
19019|      0|		if (yych == 'o') goto yy1006;
  ------------------
  |  Branch (19019:7): [True: 0, False: 0]
  ------------------
19020|      0|		goto yy20;
19021|      0|	}
19022|      0|yy884:
19023|      0|	YYDEBUG(884, *YYCURSOR);
19024|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19025|      0|	if (yych <= 'X') {
  ------------------
  |  Branch (19025:6): [True: 0, False: 0]
  ------------------
19026|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (19026:7): [True: 0, False: 0]
  ------------------
19027|      0|		goto yy20;
19028|      0|	} else {
19029|      0|		if (yych <= 'Y') goto yy1007;
  ------------------
  |  Branch (19029:7): [True: 0, False: 0]
  ------------------
19030|      0|		if (yych == 'y') goto yy1007;
  ------------------
  |  Branch (19030:7): [True: 0, False: 0]
  ------------------
19031|      0|		goto yy20;
19032|      0|	}
19033|      1|yy885:
19034|      1|	YYDEBUG(885, *YYCURSOR);
19035|      1|	yyaccept = 2;
19036|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19037|      1|	if (yych <= 'N') {
  ------------------
  |  Branch (19037:6): [True: 0, False: 1]
  ------------------
19038|      0|		if (yych <= ',') {
  ------------------
  |  Branch (19038:7): [True: 0, False: 0]
  ------------------
19039|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (19039:8): [True: 0, False: 0]
  ------------------
19040|      0|			goto yy20;
19041|      0|		} else {
19042|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (19042:8): [True: 0, False: 0]
  ------------------
19043|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (19043:8): [True: 0, False: 0]
  ------------------
19044|      0|			goto yy20;
19045|      0|		}
19046|      1|	} else {
19047|      1|		if (yych <= '`') {
  ------------------
  |  Branch (19047:7): [True: 0, False: 1]
  ------------------
19048|      0|			if (yych <= 'O') goto yy1006;
  ------------------
  |  Branch (19048:8): [True: 0, False: 0]
  ------------------
19049|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (19049:8): [True: 0, False: 0]
  ------------------
19050|      0|			goto yy20;
19051|      1|		} else {
19052|      1|			if (yych == 'o') goto yy1008;
  ------------------
  |  Branch (19052:8): [True: 1, False: 0]
  ------------------
19053|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (19053:8): [True: 0, False: 0]
  ------------------
19054|      0|			goto yy20;
19055|      0|		}
19056|      1|	}
19057|      0|yy886:
19058|      0|	YYDEBUG(886, *YYCURSOR);
19059|      0|	yyaccept = 2;
19060|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19061|      0|	if (yych <= 'X') {
  ------------------
  |  Branch (19061:6): [True: 0, False: 0]
  ------------------
19062|      0|		if (yych <= ',') {
  ------------------
  |  Branch (19062:7): [True: 0, False: 0]
  ------------------
19063|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (19063:8): [True: 0, False: 0]
  ------------------
19064|      0|			goto yy20;
19065|      0|		} else {
19066|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (19066:8): [True: 0, False: 0]
  ------------------
19067|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (19067:8): [True: 0, False: 0]
  ------------------
19068|      0|			goto yy20;
19069|      0|		}
19070|      0|	} else {
19071|      0|		if (yych <= '`') {
  ------------------
  |  Branch (19071:7): [True: 0, False: 0]
  ------------------
19072|      0|			if (yych <= 'Y') goto yy1007;
  ------------------
  |  Branch (19072:8): [True: 0, False: 0]
  ------------------
19073|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (19073:8): [True: 0, False: 0]
  ------------------
19074|      0|			goto yy20;
19075|      0|		} else {
19076|      0|			if (yych == 'y') goto yy1009;
  ------------------
  |  Branch (19076:8): [True: 0, False: 0]
  ------------------
19077|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (19077:8): [True: 0, False: 0]
  ------------------
19078|      0|			goto yy20;
19079|      0|		}
19080|      0|	}
19081|      0|yy887:
19082|      0|	YYDEBUG(887, *YYCURSOR);
19083|      0|	yyaccept = 2;
19084|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19085|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (19085:6): [True: 0, False: 0]
  ------------------
19086|      0|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (19086:7): [True: 0, False: 0]
  ------------------
19087|      0|		goto yy20;
19088|      0|	} else {
19089|      0|		if (yych <= 'D') goto yy1010;
  ------------------
  |  Branch (19089:7): [True: 0, False: 0]
  ------------------
19090|      0|		if (yych == 'd') goto yy1010;
  ------------------
  |  Branch (19090:7): [True: 0, False: 0]
  ------------------
19091|      0|		goto yy20;
19092|      0|	}
19093|      0|yy888:
19094|      0|	YYDEBUG(888, *YYCURSOR);
19095|      0|	yyaccept = 2;
19096|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19097|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (19097:6): [True: 0, False: 0]
  ------------------
19098|      0|		if (yych <= ',') {
  ------------------
  |  Branch (19098:7): [True: 0, False: 0]
  ------------------
19099|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (19099:8): [True: 0, False: 0]
  ------------------
19100|      0|			goto yy20;
19101|      0|		} else {
19102|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (19102:8): [True: 0, False: 0]
  ------------------
19103|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (19103:8): [True: 0, False: 0]
  ------------------
19104|      0|			goto yy20;
19105|      0|		}
19106|      0|	} else {
19107|      0|		if (yych <= '`') {
  ------------------
  |  Branch (19107:7): [True: 0, False: 0]
  ------------------
19108|      0|			if (yych <= 'D') goto yy1010;
  ------------------
  |  Branch (19108:8): [True: 0, False: 0]
  ------------------
19109|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (19109:8): [True: 0, False: 0]
  ------------------
19110|      0|			goto yy20;
19111|      0|		} else {
19112|      0|			if (yych == 'd') goto yy1011;
  ------------------
  |  Branch (19112:8): [True: 0, False: 0]
  ------------------
19113|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (19113:8): [True: 0, False: 0]
  ------------------
19114|      0|			goto yy20;
19115|      0|		}
19116|      0|	}
19117|      1|yy889:
19118|      1|	YYDEBUG(889, *YYCURSOR);
19119|      1|	yyaccept = 2;
19120|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19121|      1|	if (yych <= 'C') {
  ------------------
  |  Branch (19121:6): [True: 1, False: 0]
  ------------------
19122|      1|		if (yych == ')') goto yy115;
  ------------------
  |  Branch (19122:7): [True: 0, False: 1]
  ------------------
19123|      1|		goto yy20;
19124|      1|	} else {
19125|      0|		if (yych <= 'D') goto yy1012;
  ------------------
  |  Branch (19125:7): [True: 0, False: 0]
  ------------------
19126|      0|		if (yych == 'd') goto yy1012;
  ------------------
  |  Branch (19126:7): [True: 0, False: 0]
  ------------------
19127|      0|		goto yy20;
19128|      0|	}
19129|      0|yy890:
19130|      0|	YYDEBUG(890, *YYCURSOR);
19131|      0|	yyaccept = 2;
19132|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19133|      0|	if (yych <= 'C') {
  ------------------
  |  Branch (19133:6): [True: 0, False: 0]
  ------------------
19134|      0|		if (yych <= ',') {
  ------------------
  |  Branch (19134:7): [True: 0, False: 0]
  ------------------
19135|      0|			if (yych == ')') goto yy115;
  ------------------
  |  Branch (19135:8): [True: 0, False: 0]
  ------------------
19136|      0|			goto yy20;
19137|      0|		} else {
19138|      0|			if (yych == '.') goto yy20;
  ------------------
  |  Branch (19138:8): [True: 0, False: 0]
  ------------------
19139|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (19139:8): [True: 0, False: 0]
  ------------------
19140|      0|			goto yy20;
19141|      0|		}
19142|      0|	} else {
19143|      0|		if (yych <= '`') {
  ------------------
  |  Branch (19143:7): [True: 0, False: 0]
  ------------------
19144|      0|			if (yych <= 'D') goto yy1012;
  ------------------
  |  Branch (19144:8): [True: 0, False: 0]
  ------------------
19145|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (19145:8): [True: 0, False: 0]
  ------------------
19146|      0|			goto yy20;
19147|      0|		} else {
19148|      0|			if (yych == 'd') goto yy1013;
  ------------------
  |  Branch (19148:8): [True: 0, False: 0]
  ------------------
19149|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (19149:8): [True: 0, False: 0]
  ------------------
19150|      0|			goto yy20;
19151|      0|		}
19152|      0|	}
19153|      5|yy891:
19154|      5|	YYDEBUG(891, *YYCURSOR);
19155|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
19156|      5|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19156:6): [True: 2, False: 3]
  ------------------
19157|      3|	if (yych <= '9') goto yy1014;
  ------------------
  |  Branch (19157:6): [True: 3, False: 0]
  ------------------
19158|      0|	goto yy59;
19159|      1|yy892:
19160|      1|	YYDEBUG(892, *YYCURSOR);
19161|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19162|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19162:6): [True: 0, False: 1]
  ------------------
19163|      1|	if (yych <= '2') goto yy1014;
  ------------------
  |  Branch (19163:6): [True: 0, False: 1]
  ------------------
19164|      1|	goto yy59;
19165|     14|yy893:
19166|     14|	YYDEBUG(893, *YYCURSOR);
19167|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
19168|     14|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19168:6): [True: 0, False: 14]
  ------------------
19169|     14|	if (yych <= '0') goto yy1015;
  ------------------
  |  Branch (19169:6): [True: 1, False: 13]
  ------------------
19170|     13|	if (yych <= '1') goto yy1016;
  ------------------
  |  Branch (19170:6): [True: 0, False: 13]
  ------------------
19171|     13|	goto yy59;
19172|     34|yy894:
19173|     34|	YYDEBUG(894, *YYCURSOR);
19174|     34|	yyaccept = 2;
19175|     34|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     34|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
19176|     34|	if (yych <= 'W') {
  ------------------
  |  Branch (19176:6): [True: 29, False: 5]
  ------------------
19177|     29|		if (yych <= 'D') {
  ------------------
  |  Branch (19177:7): [True: 27, False: 2]
  ------------------
19178|     27|			if (yych <= ',') {
  ------------------
  |  Branch (19178:8): [True: 3, False: 24]
  ------------------
19179|      3|				if (yych <= '\t') {
  ------------------
  |  Branch (19179:9): [True: 3, False: 0]
  ------------------
19180|      3|					if (yych <= 0x08) goto yy20;
  ------------------
  |  Branch (19180:10): [True: 3, False: 0]
  ------------------
19181|      0|					goto yy196;
19182|      3|				} else {
19183|      0|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (19183:10): [True: 0, False: 0]
  ------------------
19184|      0|					goto yy20;
19185|      0|				}
19186|     24|			} else {
19187|     24|				if (yych <= '/') {
  ------------------
  |  Branch (19187:9): [True: 2, False: 22]
  ------------------
19188|      2|					if (yych <= '-') goto yy893;
  ------------------
  |  Branch (19188:10): [True: 2, False: 0]
  ------------------
19189|      0|					goto yy20;
19190|     22|				} else {
19191|     22|					if (yych <= '9') goto yy1017;
  ------------------
  |  Branch (19191:10): [True: 20, False: 2]
  ------------------
19192|      2|					if (yych <= 'C') goto yy20;
  ------------------
  |  Branch (19192:10): [True: 2, False: 0]
  ------------------
19193|      0|					goto yy196;
19194|      2|				}
19195|     24|			}
19196|     27|		} else {
19197|      2|			if (yych <= 'L') {
  ------------------
  |  Branch (19197:8): [True: 2, False: 0]
  ------------------
19198|      2|				if (yych <= 'F') {
  ------------------
  |  Branch (19198:9): [True: 2, False: 0]
  ------------------
19199|      2|					if (yych <= 'E') goto yy20;
  ------------------
  |  Branch (19199:10): [True: 0, False: 2]
  ------------------
19200|      2|					goto yy196;
19201|      2|				} else {
19202|      0|					if (yych == 'H') goto yy196;
  ------------------
  |  Branch (19202:10): [True: 0, False: 0]
  ------------------
19203|      0|					goto yy20;
19204|      0|				}
19205|      2|			} else {
19206|      0|				if (yych <= 'R') {
  ------------------
  |  Branch (19206:9): [True: 0, False: 0]
  ------------------
19207|      0|					if (yych <= 'M') goto yy196;
  ------------------
  |  Branch (19207:10): [True: 0, False: 0]
  ------------------
19208|      0|					goto yy20;
19209|      0|				} else {
19210|      0|					if (yych == 'V') goto yy20;
  ------------------
  |  Branch (19210:10): [True: 0, False: 0]
  ------------------
19211|      0|					goto yy196;
19212|      0|				}
19213|      0|			}
19214|      2|		}
19215|     29|	} else {
19216|      5|		if (yych <= 'm') {
  ------------------
  |  Branch (19216:7): [True: 1, False: 4]
  ------------------
19217|      1|			if (yych <= 'e') {
  ------------------
  |  Branch (19217:8): [True: 0, False: 1]
  ------------------
19218|      0|				if (yych <= 'Y') {
  ------------------
  |  Branch (19218:9): [True: 0, False: 0]
  ------------------
19219|      0|					if (yych <= 'X') goto yy20;
  ------------------
  |  Branch (19219:10): [True: 0, False: 0]
  ------------------
19220|      0|					goto yy196;
19221|      0|				} else {
19222|      0|					if (yych == 'd') goto yy196;
  ------------------
  |  Branch (19222:10): [True: 0, False: 0]
  ------------------
19223|      0|					goto yy20;
19224|      0|				}
19225|      1|			} else {
19226|      1|				if (yych <= 'g') {
  ------------------
  |  Branch (19226:9): [True: 0, False: 1]
  ------------------
19227|      0|					if (yych <= 'f') goto yy196;
  ------------------
  |  Branch (19227:10): [True: 0, False: 0]
  ------------------
19228|      0|					goto yy20;
19229|      1|				} else {
19230|      1|					if (yych <= 'h') goto yy196;
  ------------------
  |  Branch (19230:10): [True: 1, False: 0]
  ------------------
19231|      0|					if (yych <= 'l') goto yy20;
  ------------------
  |  Branch (19231:10): [True: 0, False: 0]
  ------------------
19232|      0|					goto yy196;
19233|      0|				}
19234|      1|			}
19235|      4|		} else {
19236|      4|			if (yych <= 'x') {
  ------------------
  |  Branch (19236:8): [True: 3, False: 1]
  ------------------
19237|      3|				if (yych <= 'u') {
  ------------------
  |  Branch (19237:9): [True: 3, False: 0]
  ------------------
19238|      3|					if (yych <= 'r') goto yy20;
  ------------------
  |  Branch (19238:10): [True: 3, False: 0]
  ------------------
19239|      0|					goto yy196;
19240|      3|				} else {
19241|      0|					if (yych == 'w') goto yy196;
  ------------------
  |  Branch (19241:10): [True: 0, False: 0]
  ------------------
19242|      0|					goto yy20;
19243|      0|				}
19244|      3|			} else {
19245|      1|				if (yych <= 0xC2) {
  ------------------
  |  Branch (19245:9): [True: 1, False: 0]
  ------------------
19246|      1|					if (yych <= 'y') goto yy196;
  ------------------
  |  Branch (19246:10): [True: 0, False: 1]
  ------------------
19247|      1|					if (yych <= 0xC1) goto yy20;
  ------------------
  |  Branch (19247:10): [True: 0, False: 1]
  ------------------
19248|      1|					goto yy97;
19249|      1|				} else {
19250|      0|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19250:10): [True: 0, False: 0]
  ------------------
19251|      0|					goto yy20;
19252|      0|				}
19253|      1|			}
19254|      4|		}
19255|      5|	}
19256|     44|yy895:
19257|     44|	YYDEBUG(895, *YYCURSOR);
19258|     44|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     44|#define   YYCURSOR     cursor
  ------------------
19259|     44|	if (yych <= '9') {
  ------------------
  |  Branch (19259:6): [True: 38, False: 6]
  ------------------
19260|     38|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (19260:7): [True: 4, False: 34]
  ------------------
19261|     34|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (19261:7): [True: 0, False: 34]
  ------------------
19262|     34|		goto yy1017;
19263|     34|	} else {
19264|      6|		if (yych <= 0xC2) {
  ------------------
  |  Branch (19264:7): [True: 6, False: 0]
  ------------------
19265|      6|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (19265:8): [True: 1, False: 5]
  ------------------
19266|      5|			goto yy97;
19267|      6|		} else {
19268|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19268:8): [True: 0, False: 0]
  ------------------
19269|      0|			goto yy196;
19270|      0|		}
19271|      6|	}
19272|      0|yy896:
19273|      0|	YYDEBUG(896, *YYCURSOR);
19274|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19275|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19275:6): [True: 0, False: 0]
  ------------------
19276|      0|	if (yych <= '5') goto yy1018;
  ------------------
  |  Branch (19276:6): [True: 0, False: 0]
  ------------------
19277|      0|	if (yych <= '6') goto yy1019;
  ------------------
  |  Branch (19277:6): [True: 0, False: 0]
  ------------------
19278|      0|	goto yy59;
19279|      1|yy897:
19280|      1|	YYDEBUG(897, *YYCURSOR);
19281|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19282|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19282:6): [True: 1, False: 0]
  ------------------
19283|      0|	if (yych <= '9') goto yy1020;
  ------------------
  |  Branch (19283:6): [True: 0, False: 0]
  ------------------
19284|      0|	goto yy59;
19285|      0|yy898:
19286|      0|	YYDEBUG(898, *YYCURSOR);
19287|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19288|      0|	goto yy567;
19289|     10|yy899:
19290|     10|	YYDEBUG(899, *YYCURSOR);
19291|     10|	++YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
19292|     10|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|     10|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (19292:6): [True: 0, False: 10]
  ------------------
19293|     10|	yych = *YYCURSOR;
  ------------------
  |  |   89|     10|#define   YYCURSOR     cursor
  ------------------
19294|     10|	YYDEBUG(900, *YYCURSOR);
19295|     10|	if (yych <= '/') goto yy177;
  ------------------
  |  Branch (19295:6): [True: 5, False: 5]
  ------------------
19296|      5|	if (yych <= '9') goto yy899;
  ------------------
  |  Branch (19296:6): [True: 5, False: 0]
  ------------------
19297|      0|	goto yy177;
19298|      5|yy901:
19299|      5|	YYDEBUG(901, *YYCURSOR);
19300|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
19301|      5|	if (yych <= '/') goto yy224;
  ------------------
  |  Branch (19301:6): [True: 0, False: 5]
  ------------------
19302|      5|	if (yych <= '9') goto yy1022;
  ------------------
  |  Branch (19302:6): [True: 5, False: 0]
  ------------------
19303|      0|	goto yy224;
19304|      0|yy902:
19305|      0|	YYDEBUG(902, *YYCURSOR);
19306|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19307|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19307:6): [True: 0, False: 0]
  ------------------
19308|      0|	if (yych <= '9') goto yy1023;
  ------------------
  |  Branch (19308:6): [True: 0, False: 0]
  ------------------
19309|      0|	goto yy59;
19310|      0|yy903:
19311|      0|	YYDEBUG(903, *YYCURSOR);
19312|      0|	yyaccept = 15;
19313|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19314|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (19314:6): [True: 0, False: 0]
  ------------------
19315|      0|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (19315:7): [True: 0, False: 0]
  ------------------
19316|      0|		if (yych <= '9') goto yy1024;
  ------------------
  |  Branch (19316:7): [True: 0, False: 0]
  ------------------
19317|      0|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (19317:7): [True: 0, False: 0]
  ------------------
19318|      0|		goto yy741;
19319|      0|	} else {
19320|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (19320:7): [True: 0, False: 0]
  ------------------
19321|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (19321:8): [True: 0, False: 0]
  ------------------
19322|      0|			goto yy741;
19323|      0|		} else {
19324|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (19324:8): [True: 0, False: 0]
  ------------------
19325|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (19325:8): [True: 0, False: 0]
  ------------------
19326|      0|			goto yy567;
19327|      0|		}
19328|      0|	}
19329|      0|yy904:
19330|      0|	YYDEBUG(904, *YYCURSOR);
19331|      0|	yyaccept = 15;
19332|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19333|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (19333:6): [True: 0, False: 0]
  ------------------
19334|      0|		if (yych <= '1') {
  ------------------
  |  Branch (19334:7): [True: 0, False: 0]
  ------------------
19335|      0|			if (yych <= '/') goto yy567;
  ------------------
  |  Branch (19335:8): [True: 0, False: 0]
  ------------------
19336|      0|			goto yy1024;
19337|      0|		} else {
19338|      0|			if (yych <= '9') goto yy737;
  ------------------
  |  Branch (19338:8): [True: 0, False: 0]
  ------------------
19339|      0|			if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (19339:8): [True: 0, False: 0]
  ------------------
19340|      0|			goto yy741;
19341|      0|		}
19342|      0|	} else {
19343|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (19343:7): [True: 0, False: 0]
  ------------------
19344|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (19344:8): [True: 0, False: 0]
  ------------------
19345|      0|			goto yy741;
19346|      0|		} else {
19347|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (19347:8): [True: 0, False: 0]
  ------------------
19348|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (19348:8): [True: 0, False: 0]
  ------------------
19349|      0|			goto yy567;
19350|      0|		}
19351|      0|	}
19352|      3|yy905:
19353|      3|	YYDEBUG(905, *YYCURSOR);
19354|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
19355|      3|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19355:6): [True: 0, False: 3]
  ------------------
19356|      3|	if (yych <= '2') goto yy1026;
  ------------------
  |  Branch (19356:6): [True: 3, False: 0]
  ------------------
19357|      0|	if (yych <= '3') goto yy1027;
  ------------------
  |  Branch (19357:6): [True: 0, False: 0]
  ------------------
19358|      0|	if (yych <= '9') goto yy1028;
  ------------------
  |  Branch (19358:6): [True: 0, False: 0]
  ------------------
19359|      0|	goto yy59;
19360|      0|yy906:
19361|      0|	YYDEBUG(906, *YYCURSOR);
19362|      0|	yyaccept = 18;
19363|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19364|      0|	if (yych == '-') goto yy1029;
  ------------------
  |  Branch (19364:6): [True: 0, False: 0]
  ------------------
19365|      0|	if (yych <= '0') goto yy752;
  ------------------
  |  Branch (19365:6): [True: 0, False: 0]
  ------------------
19366|      0|	if (yych <= '9') goto yy1030;
  ------------------
  |  Branch (19366:6): [True: 0, False: 0]
  ------------------
19367|      0|	goto yy752;
19368|      1|yy907:
19369|      1|	YYDEBUG(907, *YYCURSOR);
19370|      1|	yyaccept = 18;
19371|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19372|      1|	if (yych == '-') goto yy1029;
  ------------------
  |  Branch (19372:6): [True: 1, False: 0]
  ------------------
19373|      0|	if (yych <= '/') goto yy752;
  ------------------
  |  Branch (19373:6): [True: 0, False: 0]
  ------------------
19374|      0|	if (yych <= '9') goto yy1030;
  ------------------
  |  Branch (19374:6): [True: 0, False: 0]
  ------------------
19375|      0|	goto yy752;
19376|      2|yy908:
19377|      2|	YYDEBUG(908, *YYCURSOR);
19378|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
19379|      2|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19379:6): [True: 0, False: 2]
  ------------------
19380|      2|	if (yych <= '9') goto yy1030;
  ------------------
  |  Branch (19380:6): [True: 1, False: 1]
  ------------------
19381|      1|	goto yy59;
19382|      1|yy909:
19383|      1|	YYDEBUG(909, *YYCURSOR);
19384|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19385|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19385:6): [True: 0, False: 1]
  ------------------
19386|      1|	if (yych <= '6') goto yy1030;
  ------------------
  |  Branch (19386:6): [True: 1, False: 0]
  ------------------
19387|      0|	goto yy59;
19388|      0|yy910:
19389|      0|	YYDEBUG(910, *YYCURSOR);
19390|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19391|      0|	if (yych == 'R') goto yy1031;
  ------------------
  |  Branch (19391:6): [True: 0, False: 0]
  ------------------
19392|      0|	if (yych == 'r') goto yy1031;
  ------------------
  |  Branch (19392:6): [True: 0, False: 0]
  ------------------
19393|      0|	goto yy59;
19394|      0|yy911:
19395|      0|	YYDEBUG(911, *YYCURSOR);
19396|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19397|      0|	if (yych == 'G') goto yy1032;
  ------------------
  |  Branch (19397:6): [True: 0, False: 0]
  ------------------
19398|      0|	if (yych == 'g') goto yy1032;
  ------------------
  |  Branch (19398:6): [True: 0, False: 0]
  ------------------
19399|      0|	goto yy59;
19400|      0|yy912:
19401|      0|	YYDEBUG(912, *YYCURSOR);
19402|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19403|      0|	if (yych == 'C') goto yy1033;
  ------------------
  |  Branch (19403:6): [True: 0, False: 0]
  ------------------
19404|      0|	if (yych == 'c') goto yy1033;
  ------------------
  |  Branch (19404:6): [True: 0, False: 0]
  ------------------
19405|      0|	goto yy59;
19406|      0|yy913:
19407|      0|	YYDEBUG(913, *YYCURSOR);
19408|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19409|      0|	if (yych == 'B') goto yy1034;
  ------------------
  |  Branch (19409:6): [True: 0, False: 0]
  ------------------
19410|      0|	if (yych == 'b') goto yy1034;
  ------------------
  |  Branch (19410:6): [True: 0, False: 0]
  ------------------
19411|      0|	goto yy59;
19412|      0|yy914:
19413|      0|	YYDEBUG(914, *YYCURSOR);
19414|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19415|      0|	if (yych == 'N') goto yy1035;
  ------------------
  |  Branch (19415:6): [True: 0, False: 0]
  ------------------
19416|      0|	if (yych == 'n') goto yy1035;
  ------------------
  |  Branch (19416:6): [True: 0, False: 0]
  ------------------
19417|      0|	goto yy59;
19418|      0|yy915:
19419|      0|	YYDEBUG(915, *YYCURSOR);
19420|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19421|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (19421:6): [True: 0, False: 0]
  ------------------
19422|      0|		if (yych == 'L') goto yy1036;
  ------------------
  |  Branch (19422:7): [True: 0, False: 0]
  ------------------
19423|      0|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (19423:7): [True: 0, False: 0]
  ------------------
19424|      0|		goto yy1037;
19425|      0|	} else {
19426|      0|		if (yych <= 'l') {
  ------------------
  |  Branch (19426:7): [True: 0, False: 0]
  ------------------
19427|      0|			if (yych <= 'k') goto yy59;
  ------------------
  |  Branch (19427:8): [True: 0, False: 0]
  ------------------
19428|      0|			goto yy1036;
19429|      0|		} else {
19430|      0|			if (yych == 'n') goto yy1037;
  ------------------
  |  Branch (19430:8): [True: 0, False: 0]
  ------------------
19431|      0|			goto yy59;
19432|      0|		}
19433|      0|	}
19434|      0|yy916:
19435|      0|	YYDEBUG(916, *YYCURSOR);
19436|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19437|      0|	if (yych <= 'Y') {
  ------------------
  |  Branch (19437:6): [True: 0, False: 0]
  ------------------
19438|      0|		if (yych == 'R') goto yy1038;
  ------------------
  |  Branch (19438:7): [True: 0, False: 0]
  ------------------
19439|      0|		if (yych <= 'X') goto yy59;
  ------------------
  |  Branch (19439:7): [True: 0, False: 0]
  ------------------
19440|      0|		goto yy1039;
19441|      0|	} else {
19442|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (19442:7): [True: 0, False: 0]
  ------------------
19443|      0|			if (yych <= 'q') goto yy59;
  ------------------
  |  Branch (19443:8): [True: 0, False: 0]
  ------------------
19444|      0|			goto yy1038;
19445|      0|		} else {
19446|      0|			if (yych == 'y') goto yy1039;
  ------------------
  |  Branch (19446:8): [True: 0, False: 0]
  ------------------
19447|      0|			goto yy59;
19448|      0|		}
19449|      0|	}
19450|      0|yy917:
19451|      0|	YYDEBUG(917, *YYCURSOR);
19452|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19453|      0|	if (yych == 'V') goto yy1033;
  ------------------
  |  Branch (19453:6): [True: 0, False: 0]
  ------------------
19454|      0|	if (yych == 'v') goto yy1033;
  ------------------
  |  Branch (19454:6): [True: 0, False: 0]
  ------------------
19455|      0|	goto yy59;
19456|      0|yy918:
19457|      0|	YYDEBUG(918, *YYCURSOR);
19458|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19459|      0|	if (yych == 'T') goto yy1040;
  ------------------
  |  Branch (19459:6): [True: 0, False: 0]
  ------------------
19460|      0|	if (yych == 't') goto yy1040;
  ------------------
  |  Branch (19460:6): [True: 0, False: 0]
  ------------------
19461|      0|	goto yy59;
19462|      0|yy919:
19463|      0|	YYDEBUG(919, *YYCURSOR);
19464|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19465|      0|	if (yych == 'P') goto yy1041;
  ------------------
  |  Branch (19465:6): [True: 0, False: 0]
  ------------------
19466|      0|	if (yych == 'p') goto yy1041;
  ------------------
  |  Branch (19466:6): [True: 0, False: 0]
  ------------------
19467|      0|	goto yy59;
19468|      9|yy920:
19469|      9|	YYDEBUG(920, *YYCURSOR);
19470|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
19471|      9|	if (yych <= '0') goto yy59;
  ------------------
  |  Branch (19471:6): [True: 7, False: 2]
  ------------------
19472|      2|	if (yych <= '9') goto yy1030;
  ------------------
  |  Branch (19472:6): [True: 0, False: 2]
  ------------------
19473|      2|	goto yy59;
19474|      2|yy921:
19475|      0|	YYDEBUG(921, *YYCURSOR);
19476|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19477|      0|	if (yych == 'P') goto yy940;
  ------------------
  |  Branch (19477:6): [True: 0, False: 0]
  ------------------
19478|      0|	if (yych == 'p') goto yy940;
  ------------------
  |  Branch (19478:6): [True: 0, False: 0]
  ------------------
19479|      0|	goto yy59;
19480|      1|yy922:
19481|      1|	YYDEBUG(922, *YYCURSOR);
19482|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19483|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19483:6): [True: 0, False: 1]
  ------------------
19484|      1|	if (yych <= '2') goto yy1042;
  ------------------
  |  Branch (19484:6): [True: 1, False: 0]
  ------------------
19485|      0|	if (yych <= '3') goto yy1044;
  ------------------
  |  Branch (19485:6): [True: 0, False: 0]
  ------------------
19486|      0|	if (yych <= '9') goto yy1045;
  ------------------
  |  Branch (19486:6): [True: 0, False: 0]
  ------------------
19487|      0|	goto yy59;
19488|     11|yy923:
19489|     11|	YYDEBUG(923, *YYCURSOR);
19490|     11|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
19491|     11|	if (yych == '/') goto yy1046;
  ------------------
  |  Branch (19491:6): [True: 4, False: 7]
  ------------------
19492|      7|	goto yy59;
19493|     69|yy924:
19494|     69|	YYDEBUG(924, *YYCURSOR);
19495|     69|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     69|#define   YYCURSOR     cursor
  ------------------
19496|     69|	if (yych <= 0xC1) {
  ------------------
  |  Branch (19496:6): [True: 67, False: 2]
  ------------------
19497|     67|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (19497:7): [True: 1, False: 66]
  ------------------
19498|     66|		if (yych <= '9') goto yy1047;
  ------------------
  |  Branch (19498:7): [True: 64, False: 2]
  ------------------
19499|      2|		goto yy196;
19500|     66|	} else {
19501|      2|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (19501:7): [True: 0, False: 2]
  ------------------
19502|      2|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19502:7): [True: 0, False: 2]
  ------------------
19503|      2|		goto yy196;
19504|      2|	}
19505|     55|yy925:
19506|     55|	YYDEBUG(925, *YYCURSOR);
19507|     55|	yyaccept = 21;
19508|     55|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     55|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     55|#define   YYCURSOR     cursor
  ------------------
19509|     55|	if (yych <= 'X') {
  ------------------
  |  Branch (19509:6): [True: 50, False: 5]
  ------------------
19510|     50|		if (yych <= 'E') {
  ------------------
  |  Branch (19510:7): [True: 47, False: 3]
  ------------------
19511|     47|			if (yych <= ' ') {
  ------------------
  |  Branch (19511:8): [True: 4, False: 43]
  ------------------
19512|      4|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (19512:9): [True: 0, False: 4]
  ------------------
19513|      4|				if (yych >= ' ') goto yy196;
  ------------------
  |  Branch (19513:9): [True: 1, False: 3]
  ------------------
19514|     43|			} else {
19515|     43|				if (yych <= '9') {
  ------------------
  |  Branch (19515:9): [True: 42, False: 1]
  ------------------
19516|     42|					if (yych >= '0') goto yy1047;
  ------------------
  |  Branch (19516:10): [True: 41, False: 1]
  ------------------
19517|     42|				} else {
19518|      1|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (19518:10): [True: 1, False: 0]
  ------------------
19519|      1|				}
19520|     43|			}
19521|     47|		} else {
19522|      3|			if (yych <= 'M') {
  ------------------
  |  Branch (19522:8): [True: 2, False: 1]
  ------------------
19523|      2|				if (yych <= 'G') {
  ------------------
  |  Branch (19523:9): [True: 1, False: 1]
  ------------------
19524|      1|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (19524:10): [True: 1, False: 0]
  ------------------
19525|      1|				} else {
19526|      1|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (19526:10): [True: 0, False: 1]
  ------------------
19527|      1|					if (yych >= 'M') goto yy196;
  ------------------
  |  Branch (19527:10): [True: 1, False: 0]
  ------------------
19528|      1|				}
19529|      2|			} else {
19530|      1|				if (yych <= 'U') {
  ------------------
  |  Branch (19530:9): [True: 1, False: 0]
  ------------------
19531|      1|					if (yych >= 'S') goto yy196;
  ------------------
  |  Branch (19531:10): [True: 1, False: 0]
  ------------------
19532|      1|				} else {
19533|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (19533:10): [True: 0, False: 0]
  ------------------
19534|      0|				}
19535|      1|			}
19536|      3|		}
19537|     50|	} else {
19538|      5|		if (yych <= 'r') {
  ------------------
  |  Branch (19538:7): [True: 3, False: 2]
  ------------------
19539|      3|			if (yych <= 'f') {
  ------------------
  |  Branch (19539:8): [True: 0, False: 3]
  ------------------
19540|      0|				if (yych <= 'c') {
  ------------------
  |  Branch (19540:9): [True: 0, False: 0]
  ------------------
19541|      0|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (19541:10): [True: 0, False: 0]
  ------------------
19542|      0|				} else {
19543|      0|					if (yych != 'e') goto yy196;
  ------------------
  |  Branch (19543:10): [True: 0, False: 0]
  ------------------
19544|      0|				}
19545|      3|			} else {
19546|      3|				if (yych <= 'h') {
  ------------------
  |  Branch (19546:9): [True: 0, False: 3]
  ------------------
19547|      0|					if (yych >= 'h') goto yy196;
  ------------------
  |  Branch (19547:10): [True: 0, False: 0]
  ------------------
19548|      3|				} else {
19549|      3|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (19549:10): [True: 0, False: 3]
  ------------------
19550|      3|				}
19551|      3|			}
19552|      3|		} else {
19553|      2|			if (yych <= 'y') {
  ------------------
  |  Branch (19553:8): [True: 1, False: 1]
  ------------------
19554|      1|				if (yych <= 'v') {
  ------------------
  |  Branch (19554:9): [True: 1, False: 0]
  ------------------
19555|      1|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (19555:10): [True: 1, False: 0]
  ------------------
19556|      1|				} else {
19557|      0|					if (yych != 'x') goto yy196;
  ------------------
  |  Branch (19557:10): [True: 0, False: 0]
  ------------------
19558|      0|				}
19559|      1|			} else {
19560|      1|				if (yych <= 0xC2) {
  ------------------
  |  Branch (19560:9): [True: 0, False: 1]
  ------------------
19561|      0|					if (yych >= 0xC2) goto yy97;
  ------------------
  |  Branch (19561:10): [True: 0, False: 0]
  ------------------
19562|      1|				} else {
19563|      1|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19563:10): [True: 1, False: 0]
  ------------------
19564|      1|				}
19565|      1|			}
19566|      2|		}
19567|      5|	}
19568|    148|yy926:
19569|    148|	YYDEBUG(926, *YYCURSOR);
19570|    148|#line 1696 "ext/date/lib/parse_date.re"
19571|    148|	{
19572|    148|		int length = 0;
19573|    148|		DEBUG_OUTPUT("pgydotd");
19574|    148|		TIMELIB_INIT;
  ------------------
  |  |  107|    148|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
19575|    148|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|    148|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|     72|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|     72|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     72|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     72|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     72|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     72|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     72|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     72|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|     72|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 72, False: 76]
  |  |  ------------------
  ------------------
19576|     76|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
19577|     76|		s->time->d = timelib_get_nr(&ptr, 3);
19578|     76|		s->time->m = 1;
19579|     76|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|     76|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|     76|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|     76|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 76]
  |  |  |  Branch (112:32): [True: 76, False: 0]
  |  |  ------------------
  |  |  113|     76|	/*	(x) = 0; */          \
  |  |  114|     76|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|     76|}
  ------------------
19580|     76|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     76|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     76|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     76|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     76|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     76|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     76|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     76|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     76|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19581|     76|		return TIMELIB_PG_YEARDAY;
  ------------------
  |  |   63|     76|#define TIMELIB_PG_YEARDAY     271
  ------------------
19582|    148|	}
19583|      0|#line 19584 "ext/date/lib/parse_date.c"
19584|     15|yy927:
19585|     15|	YYDEBUG(927, *YYCURSOR);
19586|     15|	yyaccept = 21;
19587|     15|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|     15|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|     15|#define   YYCURSOR     cursor
  ------------------
19588|     15|	if (yych <= 'X') {
  ------------------
  |  Branch (19588:6): [True: 10, False: 5]
  ------------------
19589|     10|		if (yych <= 'E') {
  ------------------
  |  Branch (19589:7): [True: 8, False: 2]
  ------------------
19590|      8|			if (yych <= '/') {
  ------------------
  |  Branch (19590:8): [True: 0, False: 8]
  ------------------
19591|      0|				if (yych <= '\t') {
  ------------------
  |  Branch (19591:9): [True: 0, False: 0]
  ------------------
19592|      0|					if (yych <= 0x08) goto yy926;
  ------------------
  |  Branch (19592:10): [True: 0, False: 0]
  ------------------
19593|      0|					goto yy196;
19594|      0|				} else {
19595|      0|					if (yych == ' ') goto yy196;
  ------------------
  |  Branch (19595:10): [True: 0, False: 0]
  ------------------
19596|      0|					goto yy926;
19597|      0|				}
19598|      8|			} else {
19599|      8|				if (yych <= '9') {
  ------------------
  |  Branch (19599:9): [True: 7, False: 1]
  ------------------
19600|      7|					if (yych <= '1') goto yy1047;
  ------------------
  |  Branch (19600:10): [True: 1, False: 6]
  ------------------
19601|      6|					goto yy1049;
19602|      7|				} else {
19603|      1|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (19603:10): [True: 0, False: 1]
  ------------------
19604|      1|					goto yy926;
19605|      1|				}
19606|      8|			}
19607|      8|		} else {
19608|      2|			if (yych <= 'M') {
  ------------------
  |  Branch (19608:8): [True: 0, False: 2]
  ------------------
19609|      0|				if (yych <= 'G') {
  ------------------
  |  Branch (19609:9): [True: 0, False: 0]
  ------------------
19610|      0|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (19610:10): [True: 0, False: 0]
  ------------------
19611|      0|					goto yy926;
19612|      0|				} else {
19613|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (19613:10): [True: 0, False: 0]
  ------------------
19614|      0|					if (yych <= 'L') goto yy926;
  ------------------
  |  Branch (19614:10): [True: 0, False: 0]
  ------------------
19615|      0|					goto yy196;
19616|      0|				}
19617|      2|			} else {
19618|      2|				if (yych <= 'U') {
  ------------------
  |  Branch (19618:9): [True: 2, False: 0]
  ------------------
19619|      2|					if (yych <= 'R') goto yy926;
  ------------------
  |  Branch (19619:10): [True: 0, False: 2]
  ------------------
19620|      2|					goto yy196;
19621|      2|				} else {
19622|      0|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (19622:10): [True: 0, False: 0]
  ------------------
19623|      0|					goto yy926;
19624|      0|				}
19625|      2|			}
19626|      2|		}
19627|     10|	} else {
19628|      5|		if (yych <= 'r') {
  ------------------
  |  Branch (19628:7): [True: 5, False: 0]
  ------------------
19629|      5|			if (yych <= 'f') {
  ------------------
  |  Branch (19629:8): [True: 4, False: 1]
  ------------------
19630|      4|				if (yych <= 'c') {
  ------------------
  |  Branch (19630:9): [True: 0, False: 4]
  ------------------
19631|      0|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (19631:10): [True: 0, False: 0]
  ------------------
19632|      0|					goto yy926;
19633|      4|				} else {
19634|      4|					if (yych == 'e') goto yy926;
  ------------------
  |  Branch (19634:10): [True: 4, False: 0]
  ------------------
19635|      0|					goto yy196;
19636|      4|				}
19637|      4|			} else {
19638|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (19638:9): [True: 0, False: 1]
  ------------------
19639|      0|					if (yych <= 'g') goto yy926;
  ------------------
  |  Branch (19639:10): [True: 0, False: 0]
  ------------------
19640|      0|					goto yy196;
19641|      1|				} else {
19642|      1|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (19642:10): [True: 0, False: 1]
  ------------------
19643|      1|					goto yy926;
19644|      1|				}
19645|      1|			}
19646|      5|		} else {
19647|      0|			if (yych <= 'y') {
  ------------------
  |  Branch (19647:8): [True: 0, False: 0]
  ------------------
19648|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (19648:9): [True: 0, False: 0]
  ------------------
19649|      0|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (19649:10): [True: 0, False: 0]
  ------------------
19650|      0|					goto yy926;
19651|      0|				} else {
19652|      0|					if (yych == 'x') goto yy926;
  ------------------
  |  Branch (19652:10): [True: 0, False: 0]
  ------------------
19653|      0|					goto yy196;
19654|      0|				}
19655|      0|			} else {
19656|      0|				if (yych <= 0xC2) {
  ------------------
  |  Branch (19656:9): [True: 0, False: 0]
  ------------------
19657|      0|					if (yych <= 0xC1) goto yy926;
  ------------------
  |  Branch (19657:10): [True: 0, False: 0]
  ------------------
19658|      0|					goto yy97;
19659|      0|				} else {
19660|      0|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19660:10): [True: 0, False: 0]
  ------------------
19661|      0|					goto yy926;
19662|      0|				}
19663|      0|			}
19664|      0|		}
19665|      5|	}
19666|    121|yy928:
19667|    121|	YYDEBUG(928, *YYCURSOR);
19668|    121|	yyaccept = 21;
19669|    121|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    121|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    121|#define   YYCURSOR     cursor
  ------------------
19670|    121|	if (yych <= 'X') {
  ------------------
  |  Branch (19670:6): [True: 96, False: 25]
  ------------------
19671|     96|		if (yych <= 'E') {
  ------------------
  |  Branch (19671:7): [True: 92, False: 4]
  ------------------
19672|     92|			if (yych <= ' ') {
  ------------------
  |  Branch (19672:8): [True: 3, False: 89]
  ------------------
19673|      3|				if (yych == '\t') goto yy196;
  ------------------
  |  Branch (19673:9): [True: 0, False: 3]
  ------------------
19674|      3|				if (yych <= 0x1F) goto yy926;
  ------------------
  |  Branch (19674:9): [True: 3, False: 0]
  ------------------
19675|      0|				goto yy196;
19676|     89|			} else {
19677|     89|				if (yych <= '9') {
  ------------------
  |  Branch (19677:9): [True: 87, False: 2]
  ------------------
19678|     87|					if (yych <= '/') goto yy926;
  ------------------
  |  Branch (19678:10): [True: 2, False: 85]
  ------------------
19679|     85|					goto yy1049;
19680|     87|				} else {
19681|      2|					if (yych == 'D') goto yy196;
  ------------------
  |  Branch (19681:10): [True: 0, False: 2]
  ------------------
19682|      2|					goto yy926;
19683|      2|				}
19684|     89|			}
19685|     92|		} else {
19686|      4|			if (yych <= 'M') {
  ------------------
  |  Branch (19686:8): [True: 1, False: 3]
  ------------------
19687|      1|				if (yych <= 'G') {
  ------------------
  |  Branch (19687:9): [True: 1, False: 0]
  ------------------
19688|      1|					if (yych <= 'F') goto yy196;
  ------------------
  |  Branch (19688:10): [True: 1, False: 0]
  ------------------
19689|      0|					goto yy926;
19690|      1|				} else {
19691|      0|					if (yych <= 'H') goto yy196;
  ------------------
  |  Branch (19691:10): [True: 0, False: 0]
  ------------------
19692|      0|					if (yych <= 'L') goto yy926;
  ------------------
  |  Branch (19692:10): [True: 0, False: 0]
  ------------------
19693|      0|					goto yy196;
19694|      0|				}
19695|      3|			} else {
19696|      3|				if (yych <= 'U') {
  ------------------
  |  Branch (19696:9): [True: 2, False: 1]
  ------------------
19697|      2|					if (yych <= 'R') goto yy926;
  ------------------
  |  Branch (19697:10): [True: 1, False: 1]
  ------------------
19698|      1|					goto yy196;
19699|      2|				} else {
19700|      1|					if (yych == 'W') goto yy196;
  ------------------
  |  Branch (19700:10): [True: 0, False: 1]
  ------------------
19701|      1|					goto yy926;
19702|      1|				}
19703|      3|			}
19704|      4|		}
19705|     96|	} else {
19706|     25|		if (yych <= 'r') {
  ------------------
  |  Branch (19706:7): [True: 6, False: 19]
  ------------------
19707|      6|			if (yych <= 'f') {
  ------------------
  |  Branch (19707:8): [True: 5, False: 1]
  ------------------
19708|      5|				if (yych <= 'c') {
  ------------------
  |  Branch (19708:9): [True: 2, False: 3]
  ------------------
19709|      2|					if (yych <= 'Y') goto yy196;
  ------------------
  |  Branch (19709:10): [True: 0, False: 2]
  ------------------
19710|      2|					goto yy926;
19711|      3|				} else {
19712|      3|					if (yych == 'e') goto yy926;
  ------------------
  |  Branch (19712:10): [True: 2, False: 1]
  ------------------
19713|      1|					goto yy196;
19714|      3|				}
19715|      5|			} else {
19716|      1|				if (yych <= 'h') {
  ------------------
  |  Branch (19716:9): [True: 0, False: 1]
  ------------------
19717|      0|					if (yych <= 'g') goto yy926;
  ------------------
  |  Branch (19717:10): [True: 0, False: 0]
  ------------------
19718|      0|					goto yy196;
19719|      1|				} else {
19720|      1|					if (yych == 'm') goto yy196;
  ------------------
  |  Branch (19720:10): [True: 0, False: 1]
  ------------------
19721|      1|					goto yy926;
19722|      1|				}
19723|      1|			}
19724|     19|		} else {
19725|     19|			if (yych <= 'y') {
  ------------------
  |  Branch (19725:8): [True: 13, False: 6]
  ------------------
19726|     13|				if (yych <= 'v') {
  ------------------
  |  Branch (19726:9): [True: 13, False: 0]
  ------------------
19727|     13|					if (yych <= 'u') goto yy196;
  ------------------
  |  Branch (19727:10): [True: 1, False: 12]
  ------------------
19728|     12|					goto yy926;
19729|     13|				} else {
19730|      0|					if (yych == 'x') goto yy926;
  ------------------
  |  Branch (19730:10): [True: 0, False: 0]
  ------------------
19731|      0|					goto yy196;
19732|      0|				}
19733|     13|			} else {
19734|      6|				if (yych <= 0xC2) {
  ------------------
  |  Branch (19734:9): [True: 4, False: 2]
  ------------------
19735|      4|					if (yych <= 0xC1) goto yy926;
  ------------------
  |  Branch (19735:10): [True: 3, False: 1]
  ------------------
19736|      1|					goto yy97;
19737|      4|				} else {
19738|      2|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19738:10): [True: 0, False: 2]
  ------------------
19739|      2|					goto yy926;
19740|      2|				}
19741|      6|			}
19742|     19|		}
19743|     25|	}
19744|    265|yy929:
19745|    265|	YYDEBUG(929, *YYCURSOR);
19746|    265|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    265|#define   YYCURSOR     cursor
  ------------------
19747|    265|	if (yych <= 0xC1) {
  ------------------
  |  Branch (19747:6): [True: 251, False: 14]
  ------------------
19748|    251|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (19748:7): [True: 16, False: 235]
  ------------------
19749|    235|		if (yych <= '9') goto yy1049;
  ------------------
  |  Branch (19749:7): [True: 211, False: 24]
  ------------------
19750|     24|		goto yy196;
19751|    235|	} else {
19752|     14|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (19752:7): [True: 7, False: 7]
  ------------------
19753|      7|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (19753:7): [True: 0, False: 7]
  ------------------
19754|      7|		goto yy196;
19755|      7|	}
19756|      0|yy930:
19757|      0|	YYDEBUG(930, *YYCURSOR);
19758|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19759|      0|	if (yych == ':') goto yy1050;
  ------------------
  |  Branch (19759:6): [True: 0, False: 0]
  ------------------
19760|      0|	goto yy59;
19761|      8|yy931:
19762|      8|	YYDEBUG(931, *YYCURSOR);
19763|      8|	yyaccept = 22;
19764|      8|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      8|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
19765|      8|	if (yych == 'I') goto yy1051;
  ------------------
  |  Branch (19765:6): [True: 7, False: 1]
  ------------------
19766|      1|	if (yych == 'i') goto yy1051;
  ------------------
  |  Branch (19766:6): [True: 0, False: 1]
  ------------------
19767|      1|	goto yy600;
19768|      1|yy932:
19769|      0|	YYDEBUG(932, *YYCURSOR);
19770|      0|	yyaccept = 22;
19771|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19772|      0|	if (yych == 'U') goto yy1052;
  ------------------
  |  Branch (19772:6): [True: 0, False: 0]
  ------------------
19773|      0|	if (yych == 'u') goto yy1052;
  ------------------
  |  Branch (19773:6): [True: 0, False: 0]
  ------------------
19774|      0|	goto yy600;
19775|      0|yy933:
19776|      0|	YYDEBUG(933, *YYCURSOR);
19777|      0|	yyaccept = 22;
19778|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19779|      0|	if (yych == 'E') goto yy1053;
  ------------------
  |  Branch (19779:6): [True: 0, False: 0]
  ------------------
19780|      0|	if (yych == 'e') goto yy1053;
  ------------------
  |  Branch (19780:6): [True: 0, False: 0]
  ------------------
19781|      0|	goto yy600;
19782|      0|yy934:
19783|      0|	YYDEBUG(934, *YYCURSOR);
19784|      0|	yyaccept = 22;
19785|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19786|      0|	if (yych == 'R') goto yy1054;
  ------------------
  |  Branch (19786:6): [True: 0, False: 0]
  ------------------
19787|      0|	if (yych == 'r') goto yy1054;
  ------------------
  |  Branch (19787:6): [True: 0, False: 0]
  ------------------
19788|      0|	goto yy600;
19789|      0|yy935:
19790|      0|	YYDEBUG(935, *YYCURSOR);
19791|      0|	yyaccept = 22;
19792|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19793|      0|	if (yych == 'U') goto yy1055;
  ------------------
  |  Branch (19793:6): [True: 0, False: 0]
  ------------------
19794|      0|	if (yych == 'u') goto yy1055;
  ------------------
  |  Branch (19794:6): [True: 0, False: 0]
  ------------------
19795|      0|	goto yy600;
19796|      0|yy936:
19797|      0|	YYDEBUG(936, *YYCURSOR);
19798|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19799|      0|	if (yych == 'Y') goto yy790;
  ------------------
  |  Branch (19799:6): [True: 0, False: 0]
  ------------------
19800|      0|	if (yych == 'y') goto yy790;
  ------------------
  |  Branch (19800:6): [True: 0, False: 0]
  ------------------
19801|      0|	goto yy600;
19802|      0|yy937:
19803|      0|	YYDEBUG(937, *YYCURSOR);
19804|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19805|      0|	if (yych == 'E') goto yy790;
  ------------------
  |  Branch (19805:6): [True: 0, False: 0]
  ------------------
19806|      0|	if (yych == 'e') goto yy790;
  ------------------
  |  Branch (19806:6): [True: 0, False: 0]
  ------------------
19807|      0|	goto yy600;
19808|      0|yy938:
19809|      0|	YYDEBUG(938, *YYCURSOR);
19810|      0|	yyaccept = 22;
19811|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19812|      0|	if (yych == 'C') goto yy1056;
  ------------------
  |  Branch (19812:6): [True: 0, False: 0]
  ------------------
19813|      0|	if (yych == 'c') goto yy1056;
  ------------------
  |  Branch (19813:6): [True: 0, False: 0]
  ------------------
19814|      0|	goto yy600;
19815|      0|yy939:
19816|      0|	YYDEBUG(939, *YYCURSOR);
19817|      0|	yyaccept = 22;
19818|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19819|      0|	if (yych == 'O') goto yy1057;
  ------------------
  |  Branch (19819:6): [True: 0, False: 0]
  ------------------
19820|      0|	if (yych == 'o') goto yy1057;
  ------------------
  |  Branch (19820:6): [True: 0, False: 0]
  ------------------
19821|      0|	goto yy600;
19822|      0|yy940:
19823|      0|	YYDEBUG(940, *YYCURSOR);
19824|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19825|      0|	if (yych == 'T') goto yy933;
  ------------------
  |  Branch (19825:6): [True: 0, False: 0]
  ------------------
19826|      0|	if (yych == 't') goto yy933;
  ------------------
  |  Branch (19826:6): [True: 0, False: 0]
  ------------------
19827|      0|	goto yy600;
19828|      2|yy941:
19829|      2|	YYDEBUG(941, *YYCURSOR);
19830|      2|	yyaccept = 23;
19831|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
19832|      2|	if (yych == '-') goto yy1058;
  ------------------
  |  Branch (19832:6): [True: 0, False: 2]
  ------------------
19833|      2|	if (yych <= '/') goto yy942;
  ------------------
  |  Branch (19833:6): [True: 0, False: 2]
  ------------------
19834|      2|	if (yych <= '7') goto yy1059;
  ------------------
  |  Branch (19834:6): [True: 1, False: 1]
  ------------------
19835|      1|yy942:
19836|      1|	YYDEBUG(942, *YYCURSOR);
19837|      1|#line 1729 "ext/date/lib/parse_date.re"
19838|      1|	{
19839|      1|		timelib_sll w, d;
19840|      1|		DEBUG_OUTPUT("isoweek");
19841|      1|		TIMELIB_INIT;
  ------------------
  |  |  107|      1|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
19842|      1|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      1|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
19843|      1|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      1|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
19844|       |
19845|      1|		s->time->y = timelib_get_nr(&ptr, 4);
19846|      1|		w = timelib_get_nr(&ptr, 2);
19847|      1|		d = 1;
19848|      1|		s->time->m = 1;
19849|      1|		s->time->d = 1;
19850|      1|		s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d);
19851|       |
19852|      1|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      1|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      1|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
19853|      1|		return TIMELIB_ISO_WEEK;
  ------------------
  |  |   71|      1|#define TIMELIB_ISO_WEEK       279
  ------------------
19854|      1|	}
19855|      0|#line 19856 "ext/date/lib/parse_date.c"
19856|      0|yy943:
19857|      0|	YYDEBUG(943, *YYCURSOR);
19858|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19859|      0|	if (yych == 'G') goto yy1061;
  ------------------
  |  Branch (19859:6): [True: 0, False: 0]
  ------------------
19860|      0|	if (yych == 'g') goto yy1061;
  ------------------
  |  Branch (19860:6): [True: 0, False: 0]
  ------------------
19861|      0|	goto yy59;
19862|      0|yy944:
19863|      0|	YYDEBUG(944, *YYCURSOR);
19864|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19865|      0|	if (yych == 'Y') goto yy253;
  ------------------
  |  Branch (19865:6): [True: 0, False: 0]
  ------------------
19866|      0|	if (yych == 'y') goto yy253;
  ------------------
  |  Branch (19866:6): [True: 0, False: 0]
  ------------------
19867|      0|	goto yy59;
19868|      0|yy945:
19869|      0|	YYDEBUG(945, *YYCURSOR);
19870|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19871|      0|	if (yych == 'E') goto yy1062;
  ------------------
  |  Branch (19871:6): [True: 0, False: 0]
  ------------------
19872|      0|	if (yych == 'e') goto yy1062;
  ------------------
  |  Branch (19872:6): [True: 0, False: 0]
  ------------------
19873|      0|	goto yy59;
19874|      0|yy946:
19875|      0|	YYDEBUG(946, *YYCURSOR);
19876|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19877|      0|	if (yych == 'R') goto yy253;
  ------------------
  |  Branch (19877:6): [True: 0, False: 0]
  ------------------
19878|      0|	if (yych == 'r') goto yy253;
  ------------------
  |  Branch (19878:6): [True: 0, False: 0]
  ------------------
19879|      0|	goto yy59;
19880|      0|yy947:
19881|      0|	YYDEBUG(947, *YYCURSOR);
19882|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19883|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (19883:6): [True: 0, False: 0]
  ------------------
19884|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19885|      0|	if (yych <= '`') {
  ------------------
  |  Branch (19885:6): [True: 0, False: 0]
  ------------------
19886|      0|		if (yych <= 'A') {
  ------------------
  |  Branch (19886:7): [True: 0, False: 0]
  ------------------
19887|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (19887:8): [True: 0, False: 0]
  ------------------
19888|      0|			goto yy106;
19889|      0|		} else {
19890|      0|			if (yych == 'P') goto yy106;
  ------------------
  |  Branch (19890:8): [True: 0, False: 0]
  ------------------
19891|      0|			goto yy59;
19892|      0|		}
19893|      0|	} else {
19894|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (19894:7): [True: 0, False: 0]
  ------------------
19895|      0|			if (yych <= 'a') goto yy106;
  ------------------
  |  Branch (19895:8): [True: 0, False: 0]
  ------------------
19896|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (19896:8): [True: 0, False: 0]
  ------------------
19897|      0|			goto yy106;
19898|      0|		} else {
19899|      0|			if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (19899:8): [True: 0, False: 0]
  ------------------
19900|      0|			goto yy59;
19901|      0|		}
19902|      0|	}
19903|      2|yy948:
19904|      2|	YYDEBUG(948, *YYCURSOR);
19905|      2|	yyaccept = 4;
19906|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      2|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
19907|      2|	if (yych <= 'A') {
  ------------------
  |  Branch (19907:6): [True: 0, False: 2]
  ------------------
19908|      0|		if (yych <= '-') {
  ------------------
  |  Branch (19908:7): [True: 0, False: 0]
  ------------------
19909|      0|			if (yych <= '\t') {
  ------------------
  |  Branch (19909:8): [True: 0, False: 0]
  ------------------
19910|      0|				if (yych <= 0x08) goto yy177;
  ------------------
  |  Branch (19910:9): [True: 0, False: 0]
  ------------------
19911|      0|				goto yy638;
19912|      0|			} else {
19913|      0|				if (yych == ' ') goto yy638;
  ------------------
  |  Branch (19913:9): [True: 0, False: 0]
  ------------------
19914|      0|				goto yy177;
19915|      0|			}
19916|      0|		} else {
19917|      0|			if (yych <= '9') {
  ------------------
  |  Branch (19917:8): [True: 0, False: 0]
  ------------------
19918|      0|				if (yych <= '.') goto yy1063;
  ------------------
  |  Branch (19918:9): [True: 0, False: 0]
  ------------------
19919|      0|				goto yy177;
19920|      0|			} else {
19921|      0|				if (yych <= ':') goto yy1064;
  ------------------
  |  Branch (19921:9): [True: 0, False: 0]
  ------------------
19922|      0|				if (yych <= '@') goto yy177;
  ------------------
  |  Branch (19922:9): [True: 0, False: 0]
  ------------------
19923|      0|				goto yy106;
19924|      0|			}
19925|      0|		}
19926|      2|	} else {
19927|      2|		if (yych <= 'o') {
  ------------------
  |  Branch (19927:7): [True: 1, False: 1]
  ------------------
19928|      1|			if (yych <= 'P') {
  ------------------
  |  Branch (19928:8): [True: 1, False: 0]
  ------------------
19929|      1|				if (yych <= 'O') goto yy177;
  ------------------
  |  Branch (19929:9): [True: 1, False: 0]
  ------------------
19930|      0|				goto yy106;
19931|      1|			} else {
19932|      0|				if (yych == 'a') goto yy106;
  ------------------
  |  Branch (19932:9): [True: 0, False: 0]
  ------------------
19933|      0|				goto yy177;
19934|      0|			}
19935|      1|		} else {
19936|      1|			if (yych <= 0xC2) {
  ------------------
  |  Branch (19936:8): [True: 1, False: 0]
  ------------------
19937|      1|				if (yych <= 'p') goto yy106;
  ------------------
  |  Branch (19937:9): [True: 0, False: 1]
  ------------------
19938|      1|				if (yych <= 0xC1) goto yy177;
  ------------------
  |  Branch (19938:9): [True: 0, False: 1]
  ------------------
19939|      1|				goto yy640;
19940|      1|			} else {
19941|      0|				if (yych == 0xE2) goto yy641;
  ------------------
  |  Branch (19941:9): [True: 0, False: 0]
  ------------------
19942|      0|				goto yy177;
19943|      0|			}
19944|      1|		}
19945|      2|	}
19946|      1|yy949:
19947|      1|	YYDEBUG(949, *YYCURSOR);
19948|      1|	yyaccept = 15;
19949|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
19950|      1|	if (yych <= 'n') {
  ------------------
  |  Branch (19950:6): [True: 1, False: 0]
  ------------------
19951|      1|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (19951:7): [True: 0, False: 1]
  ------------------
19952|      1|		if (yych <= '9') goto yy1065;
  ------------------
  |  Branch (19952:7): [True: 0, False: 1]
  ------------------
19953|      1|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (19953:7): [True: 1, False: 0]
  ------------------
19954|      0|		goto yy741;
19955|      1|	} else {
19956|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (19956:7): [True: 0, False: 0]
  ------------------
19957|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (19957:8): [True: 0, False: 0]
  ------------------
19958|      0|			goto yy741;
19959|      0|		} else {
19960|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (19960:8): [True: 0, False: 0]
  ------------------
19961|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (19961:8): [True: 0, False: 0]
  ------------------
19962|      0|			goto yy567;
19963|      0|		}
19964|      0|	}
19965|      0|yy950:
19966|      0|	YYDEBUG(950, *YYCURSOR);
19967|      0|	yyaccept = 15;
19968|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
19969|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (19969:6): [True: 0, False: 0]
  ------------------
19970|      0|		if (yych <= '/') goto yy567;
  ------------------
  |  Branch (19970:7): [True: 0, False: 0]
  ------------------
19971|      0|		if (yych <= '1') goto yy1065;
  ------------------
  |  Branch (19971:7): [True: 0, False: 0]
  ------------------
19972|      0|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (19972:7): [True: 0, False: 0]
  ------------------
19973|      0|		goto yy741;
19974|      0|	} else {
19975|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (19975:7): [True: 0, False: 0]
  ------------------
19976|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (19976:8): [True: 0, False: 0]
  ------------------
19977|      0|			goto yy741;
19978|      0|		} else {
19979|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (19979:8): [True: 0, False: 0]
  ------------------
19980|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (19980:8): [True: 0, False: 0]
  ------------------
19981|      0|			goto yy567;
19982|      0|		}
19983|      0|	}
19984|      2|yy951:
19985|      2|	YYDEBUG(951, *YYCURSOR);
19986|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
19987|      2|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (19987:6): [True: 0, False: 2]
  ------------------
19988|      2|	if (yych <= '2') goto yy1066;
  ------------------
  |  Branch (19988:6): [True: 2, False: 0]
  ------------------
19989|      0|	if (yych <= '3') goto yy1067;
  ------------------
  |  Branch (19989:6): [True: 0, False: 0]
  ------------------
19990|      0|	goto yy59;
19991|      2|yy952:
19992|      2|	YYDEBUG(952, *YYCURSOR);
19993|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
19994|      2|	if (yych <= '/') goto yy290;
  ------------------
  |  Branch (19994:6): [True: 0, False: 2]
  ------------------
19995|      2|	if (yych <= '9') goto yy1068;
  ------------------
  |  Branch (19995:6): [True: 2, False: 0]
  ------------------
19996|      0|	goto yy290;
19997|      0|yy953:
19998|      0|	YYDEBUG(953, *YYCURSOR);
19999|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20000|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20000:6): [True: 0, False: 0]
  ------------------
20001|      0|	if (yych <= '9') goto yy1069;
  ------------------
  |  Branch (20001:6): [True: 0, False: 0]
  ------------------
20002|      0|	goto yy59;
20003|    141|yy954:
20004|    141|	YYDEBUG(954, *YYCURSOR);
20005|    141|	++YYCURSOR;
  ------------------
  |  |   89|    141|#define   YYCURSOR     cursor
  ------------------
20006|    141|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|    141|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|    141|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (20006:6): [True: 0, False: 141]
  ------------------
20007|    141|	yych = *YYCURSOR;
  ------------------
  |  |   89|    141|#define   YYCURSOR     cursor
  ------------------
20008|    143|yy955:
20009|    143|	YYDEBUG(955, *YYCURSOR);
20010|    143|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (20010:6): [True: 99, False: 44]
  ------------------
20011|     99|		goto yy954;
20012|     99|	}
20013|     44|	if (yych <= '.') {
  ------------------
  |  Branch (20013:6): [True: 29, False: 15]
  ------------------
20014|     29|		if (yych == '-') goto yy297;
  ------------------
  |  Branch (20014:7): [True: 16, False: 13]
  ------------------
20015|     13|		goto yy59;
20016|     29|	} else {
20017|     15|		if (yych <= '/') goto yy297;
  ------------------
  |  Branch (20017:7): [True: 0, False: 15]
  ------------------
20018|     15|		if (yych == '_') goto yy297;
  ------------------
  |  Branch (20018:7): [True: 1, False: 14]
  ------------------
20019|     14|		goto yy59;
20020|     15|	}
20021|      0|yy956:
20022|      0|	YYDEBUG(956, *YYCURSOR);
20023|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20024|      0|	if (yych == ' ') goto yy1071;
  ------------------
  |  Branch (20024:6): [True: 0, False: 0]
  ------------------
20025|      0|	goto yy59;
20026|      0|yy957:
20027|      0|	YYDEBUG(957, *YYCURSOR);
20028|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20029|      0|	if (yych == 'R') goto yy973;
  ------------------
  |  Branch (20029:6): [True: 0, False: 0]
  ------------------
20030|      0|	if (yych == 'r') goto yy973;
  ------------------
  |  Branch (20030:6): [True: 0, False: 0]
  ------------------
20031|      0|	goto yy59;
20032|      0|yy958:
20033|      0|	YYDEBUG(958, *YYCURSOR);
20034|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20035|      0|	if (yych == 'R') goto yy973;
  ------------------
  |  Branch (20035:6): [True: 0, False: 0]
  ------------------
20036|      0|	if (yych == 'r') goto yy974;
  ------------------
  |  Branch (20036:6): [True: 0, False: 0]
  ------------------
20037|      0|	goto yy955;
20038|      0|yy959:
20039|      0|	YYDEBUG(959, *YYCURSOR);
20040|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20041|      0|	if (yych == 'E') goto yy1072;
  ------------------
  |  Branch (20041:6): [True: 0, False: 0]
  ------------------
20042|      0|	if (yych == 'e') goto yy1072;
  ------------------
  |  Branch (20042:6): [True: 0, False: 0]
  ------------------
20043|      0|	goto yy59;
20044|      0|yy960:
20045|      0|	YYDEBUG(960, *YYCURSOR);
20046|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20047|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (20047:6): [True: 0, False: 0]
  ------------------
20048|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20049|      0|	if (yych <= 'c') {
  ------------------
  |  Branch (20049:6): [True: 0, False: 0]
  ------------------
20050|      0|		if (yych <= 'M') {
  ------------------
  |  Branch (20050:7): [True: 0, False: 0]
  ------------------
20051|      0|			if (yych <= 'F') {
  ------------------
  |  Branch (20051:8): [True: 0, False: 0]
  ------------------
20052|      0|				if (yych == 'D') goto yy856;
  ------------------
  |  Branch (20052:9): [True: 0, False: 0]
  ------------------
20053|      0|				if (yych <= 'E') goto yy59;
  ------------------
  |  Branch (20053:9): [True: 0, False: 0]
  ------------------
20054|      0|				goto yy857;
20055|      0|			} else {
20056|      0|				if (yych == 'H') goto yy858;
  ------------------
  |  Branch (20056:9): [True: 0, False: 0]
  ------------------
20057|      0|				if (yych <= 'L') goto yy59;
  ------------------
  |  Branch (20057:9): [True: 0, False: 0]
  ------------------
20058|      0|				goto yy859;
20059|      0|			}
20060|      0|		} else {
20061|      0|			if (yych <= 'U') {
  ------------------
  |  Branch (20061:8): [True: 0, False: 0]
  ------------------
20062|      0|				if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (20062:9): [True: 0, False: 0]
  ------------------
20063|      0|				if (yych <= 'S') goto yy860;
  ------------------
  |  Branch (20063:9): [True: 0, False: 0]
  ------------------
20064|      0|				if (yych <= 'T') goto yy861;
  ------------------
  |  Branch (20064:9): [True: 0, False: 0]
  ------------------
20065|      0|				goto yy862;
20066|      0|			} else {
20067|      0|				if (yych <= 'W') {
  ------------------
  |  Branch (20067:9): [True: 0, False: 0]
  ------------------
20068|      0|					if (yych <= 'V') goto yy59;
  ------------------
  |  Branch (20068:10): [True: 0, False: 0]
  ------------------
20069|      0|					goto yy959;
20070|      0|				} else {
20071|      0|					if (yych == 'Y') goto yy864;
  ------------------
  |  Branch (20071:10): [True: 0, False: 0]
  ------------------
20072|      0|					goto yy59;
20073|      0|				}
20074|      0|			}
20075|      0|		}
20076|      0|	} else {
20077|      0|		if (yych <= 's') {
  ------------------
  |  Branch (20077:7): [True: 0, False: 0]
  ------------------
20078|      0|			if (yych <= 'g') {
  ------------------
  |  Branch (20078:8): [True: 0, False: 0]
  ------------------
20079|      0|				if (yych <= 'd') goto yy856;
  ------------------
  |  Branch (20079:9): [True: 0, False: 0]
  ------------------
20080|      0|				if (yych == 'f') goto yy857;
  ------------------
  |  Branch (20080:9): [True: 0, False: 0]
  ------------------
20081|      0|				goto yy59;
20082|      0|			} else {
20083|      0|				if (yych <= 'l') {
  ------------------
  |  Branch (20083:9): [True: 0, False: 0]
  ------------------
20084|      0|					if (yych <= 'h') goto yy858;
  ------------------
  |  Branch (20084:10): [True: 0, False: 0]
  ------------------
20085|      0|					goto yy59;
20086|      0|				} else {
20087|      0|					if (yych <= 'm') goto yy859;
  ------------------
  |  Branch (20087:10): [True: 0, False: 0]
  ------------------
20088|      0|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (20088:10): [True: 0, False: 0]
  ------------------
20089|      0|					goto yy860;
20090|      0|				}
20091|      0|			}
20092|      0|		} else {
20093|      0|			if (yych <= 'w') {
  ------------------
  |  Branch (20093:8): [True: 0, False: 0]
  ------------------
20094|      0|				if (yych <= 't') goto yy861;
  ------------------
  |  Branch (20094:9): [True: 0, False: 0]
  ------------------
20095|      0|				if (yych <= 'u') goto yy862;
  ------------------
  |  Branch (20095:9): [True: 0, False: 0]
  ------------------
20096|      0|				if (yych <= 'v') goto yy59;
  ------------------
  |  Branch (20096:9): [True: 0, False: 0]
  ------------------
20097|      0|				goto yy959;
20098|      0|			} else {
20099|      0|				if (yych <= 'y') {
  ------------------
  |  Branch (20099:9): [True: 0, False: 0]
  ------------------
20100|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (20100:10): [True: 0, False: 0]
  ------------------
20101|      0|					goto yy864;
20102|      0|				} else {
20103|      0|					if (yych == 0xC2) goto yy1073;
  ------------------
  |  Branch (20103:10): [True: 0, False: 0]
  ------------------
20104|      0|					goto yy59;
20105|      0|				}
20106|      0|			}
20107|      0|		}
20108|      0|	}
20109|      1|yy961:
20110|      1|	YYDEBUG(961, *YYCURSOR);
20111|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20112|      1|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      1|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (20112:6): [True: 0, False: 1]
  ------------------
20113|      1|	yych = *YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20114|      1|	if (yych == 0xAF) goto yy1074;
  ------------------
  |  Branch (20114:6): [True: 1, False: 0]
  ------------------
20115|      0|	goto yy59;
20116|      0|yy962:
20117|      0|	YYDEBUG(962, *YYCURSOR);
20118|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20119|      0|	if (yych == 'H') goto yy1001;
  ------------------
  |  Branch (20119:6): [True: 0, False: 0]
  ------------------
20120|      0|	if (yych == 'h') goto yy1001;
  ------------------
  |  Branch (20120:6): [True: 0, False: 0]
  ------------------
20121|      0|	goto yy59;
20122|      0|yy963:
20123|      0|	YYDEBUG(963, *YYCURSOR);
20124|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20125|      0|	if (yych == 'H') goto yy1001;
  ------------------
  |  Branch (20125:6): [True: 0, False: 0]
  ------------------
20126|      0|	if (yych == 'h') goto yy1004;
  ------------------
  |  Branch (20126:6): [True: 0, False: 0]
  ------------------
20127|      0|	goto yy955;
20128|      0|yy964:
20129|      0|	YYDEBUG(964, *YYCURSOR);
20130|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20131|      0|	if (yych == 'Y') goto yy973;
  ------------------
  |  Branch (20131:6): [True: 0, False: 0]
  ------------------
20132|      0|	if (yych == 'y') goto yy973;
  ------------------
  |  Branch (20132:6): [True: 0, False: 0]
  ------------------
20133|      0|	goto yy59;
20134|      0|yy965:
20135|      0|	YYDEBUG(965, *YYCURSOR);
20136|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20137|      0|	goto yy315;
20138|      0|yy966:
20139|      0|	YYDEBUG(966, *YYCURSOR);
20140|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20141|      0|	if (yych == 'Y') goto yy973;
  ------------------
  |  Branch (20141:6): [True: 0, False: 0]
  ------------------
20142|      0|	if (yych == 'y') goto yy974;
  ------------------
  |  Branch (20142:6): [True: 0, False: 0]
  ------------------
20143|      0|	goto yy955;
20144|      0|yy967:
20145|      0|	YYDEBUG(967, *YYCURSOR);
20146|      0|	yyaccept = 9;
20147|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20148|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (20148:6): [True: 0, False: 0]
  ------------------
20149|      0|		goto yy954;
20150|      0|	}
20151|      0|	if (yych <= '.') {
  ------------------
  |  Branch (20151:6): [True: 0, False: 0]
  ------------------
20152|      0|		if (yych == '-') goto yy297;
  ------------------
  |  Branch (20152:7): [True: 0, False: 0]
  ------------------
20153|      0|		goto yy315;
20154|      0|	} else {
20155|      0|		if (yych <= '/') goto yy297;
  ------------------
  |  Branch (20155:7): [True: 0, False: 0]
  ------------------
20156|      0|		if (yych == '_') goto yy297;
  ------------------
  |  Branch (20156:7): [True: 0, False: 0]
  ------------------
20157|      0|		goto yy315;
20158|      0|	}
20159|      0|yy968:
20160|      0|	YYDEBUG(968, *YYCURSOR);
20161|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20162|      0|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (20162:6): [True: 0, False: 0]
  ------------------
20163|      0|	if (yych <= '9') goto yy1075;
  ------------------
  |  Branch (20163:6): [True: 0, False: 0]
  ------------------
20164|      0|	goto yy20;
20165|      0|yy969:
20166|      0|	YYDEBUG(969, *YYCURSOR);
20167|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20168|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20168:6): [True: 0, False: 0]
  ------------------
20169|      0|	if (yych <= '5') goto yy1076;
  ------------------
  |  Branch (20169:6): [True: 0, False: 0]
  ------------------
20170|      0|	if (yych <= '6') goto yy1077;
  ------------------
  |  Branch (20170:6): [True: 0, False: 0]
  ------------------
20171|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (20171:6): [True: 0, False: 0]
  ------------------
20172|      0|	goto yy59;
20173|      7|yy970:
20174|      7|	YYDEBUG(970, *YYCURSOR);
20175|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
20176|      7|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20176:6): [True: 0, False: 7]
  ------------------
20177|      7|	if (yych <= '5') goto yy1079;
  ------------------
  |  Branch (20177:6): [True: 6, False: 1]
  ------------------
20178|      1|	if (yych <= '6') goto yy1080;
  ------------------
  |  Branch (20178:6): [True: 0, False: 1]
  ------------------
20179|      1|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (20179:6): [True: 0, False: 1]
  ------------------
20180|      1|	goto yy59;
20181|      4|yy971:
20182|      4|	YYDEBUG(971, *YYCURSOR);
20183|      4|	yyaccept = 20;
20184|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
20185|      4|	if (yych <= 'A') {
  ------------------
  |  Branch (20185:6): [True: 4, False: 0]
  ------------------
20186|      4|		if (yych <= '-') {
  ------------------
  |  Branch (20186:7): [True: 4, False: 0]
  ------------------
20187|      4|			if (yych <= '\t') {
  ------------------
  |  Branch (20187:8): [True: 4, False: 0]
  ------------------
20188|      4|				if (yych <= 0x08) goto yy849;
  ------------------
  |  Branch (20188:9): [True: 1, False: 3]
  ------------------
20189|      3|				goto yy1081;
20190|      4|			} else {
20191|      0|				if (yych == ' ') goto yy1081;
  ------------------
  |  Branch (20191:9): [True: 0, False: 0]
  ------------------
20192|      0|				goto yy849;
20193|      0|			}
20194|      4|		} else {
20195|      0|			if (yych <= '9') {
  ------------------
  |  Branch (20195:8): [True: 0, False: 0]
  ------------------
20196|      0|				if (yych <= '.') goto yy970;
  ------------------
  |  Branch (20196:9): [True: 0, False: 0]
  ------------------
20197|      0|				goto yy849;
20198|      0|			} else {
20199|      0|				if (yych <= ':') goto yy970;
  ------------------
  |  Branch (20199:9): [True: 0, False: 0]
  ------------------
20200|      0|				if (yych <= '@') goto yy849;
  ------------------
  |  Branch (20200:9): [True: 0, False: 0]
  ------------------
20201|      0|				goto yy1083;
20202|      0|			}
20203|      0|		}
20204|      4|	} else {
20205|      0|		if (yych <= 'o') {
  ------------------
  |  Branch (20205:7): [True: 0, False: 0]
  ------------------
20206|      0|			if (yych <= 'P') {
  ------------------
  |  Branch (20206:8): [True: 0, False: 0]
  ------------------
20207|      0|				if (yych <= 'O') goto yy849;
  ------------------
  |  Branch (20207:9): [True: 0, False: 0]
  ------------------
20208|      0|				goto yy1083;
20209|      0|			} else {
20210|      0|				if (yych == 'a') goto yy1083;
  ------------------
  |  Branch (20210:9): [True: 0, False: 0]
  ------------------
20211|      0|				goto yy849;
20212|      0|			}
20213|      0|		} else {
20214|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (20214:8): [True: 0, False: 0]
  ------------------
20215|      0|				if (yych <= 'p') goto yy1083;
  ------------------
  |  Branch (20215:9): [True: 0, False: 0]
  ------------------
20216|      0|				if (yych <= 0xC1) goto yy849;
  ------------------
  |  Branch (20216:9): [True: 0, False: 0]
  ------------------
20217|      0|				goto yy1084;
20218|      0|			} else {
20219|      0|				if (yych == 0xE2) goto yy1085;
  ------------------
  |  Branch (20219:9): [True: 0, False: 0]
  ------------------
20220|      0|				goto yy849;
20221|      0|			}
20222|      0|		}
20223|      0|	}
20224|      0|yy972:
20225|      0|	YYDEBUG(972, *YYCURSOR);
20226|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20227|      0|	goto yy325;
20228|      1|yy973:
20229|      1|	YYDEBUG(973, *YYCURSOR);
20230|      1|	yyaccept = 7;
20231|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20232|      1|	if (yych <= ' ') {
  ------------------
  |  Branch (20232:6): [True: 0, False: 1]
  ------------------
20233|      0|		if (yych == '\t') goto yy142;
  ------------------
  |  Branch (20233:7): [True: 0, False: 0]
  ------------------
20234|      0|		if (yych <= 0x1F) goto yy295;
  ------------------
  |  Branch (20234:7): [True: 0, False: 0]
  ------------------
20235|      0|		goto yy142;
20236|      1|	} else {
20237|      1|		if (yych <= '.') {
  ------------------
  |  Branch (20237:7): [True: 0, False: 1]
  ------------------
20238|      0|			if (yych <= ',') goto yy295;
  ------------------
  |  Branch (20238:8): [True: 0, False: 0]
  ------------------
20239|      0|			goto yy142;
20240|      1|		} else {
20241|      1|			if (yych <= '/') goto yy295;
  ------------------
  |  Branch (20241:8): [True: 0, False: 1]
  ------------------
20242|      1|			if (yych <= '9') goto yy142;
  ------------------
  |  Branch (20242:8): [True: 0, False: 1]
  ------------------
20243|      1|			goto yy295;
20244|      1|		}
20245|      1|	}
20246|      0|yy974:
20247|      0|	YYDEBUG(974, *YYCURSOR);
20248|      0|	yyaccept = 7;
20249|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20250|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (20250:6): [True: 0, False: 0]
  ------------------
20251|      0|		goto yy954;
20252|      0|	}
20253|      0|	if (yych <= '-') {
  ------------------
  |  Branch (20253:6): [True: 0, False: 0]
  ------------------
20254|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (20254:7): [True: 0, False: 0]
  ------------------
20255|      0|			if (yych == '\t') goto yy142;
  ------------------
  |  Branch (20255:8): [True: 0, False: 0]
  ------------------
20256|      0|			goto yy295;
20257|      0|		} else {
20258|      0|			if (yych <= ' ') goto yy142;
  ------------------
  |  Branch (20258:8): [True: 0, False: 0]
  ------------------
20259|      0|			if (yych <= ',') goto yy295;
  ------------------
  |  Branch (20259:8): [True: 0, False: 0]
  ------------------
20260|      0|			goto yy700;
20261|      0|		}
20262|      0|	} else {
20263|      0|		if (yych <= '9') {
  ------------------
  |  Branch (20263:7): [True: 0, False: 0]
  ------------------
20264|      0|			if (yych == '/') goto yy297;
  ------------------
  |  Branch (20264:8): [True: 0, False: 0]
  ------------------
20265|      0|			goto yy142;
20266|      0|		} else {
20267|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (20267:8): [True: 0, False: 0]
  ------------------
20268|      0|			goto yy295;
20269|      0|		}
20270|      0|	}
20271|      0|yy975:
20272|      0|	YYDEBUG(975, *YYCURSOR);
20273|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20274|      0|	if (yych == 'Y') goto yy1086;
  ------------------
  |  Branch (20274:6): [True: 0, False: 0]
  ------------------
20275|      0|	if (yych == 'y') goto yy1086;
  ------------------
  |  Branch (20275:6): [True: 0, False: 0]
  ------------------
20276|      0|	goto yy59;
20277|      0|yy976:
20278|      0|	YYDEBUG(976, *YYCURSOR);
20279|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20280|      0|	if (yych == 'R') goto yy1087;
  ------------------
  |  Branch (20280:6): [True: 0, False: 0]
  ------------------
20281|      0|	if (yych == 'r') goto yy1087;
  ------------------
  |  Branch (20281:6): [True: 0, False: 0]
  ------------------
20282|      0|	goto yy59;
20283|      1|yy977:
20284|      1|	YYDEBUG(977, *YYCURSOR);
20285|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20286|      1|	if (yych == 'I') goto yy1088;
  ------------------
  |  Branch (20286:6): [True: 0, False: 1]
  ------------------
20287|      1|	if (yych == 'i') goto yy1088;
  ------------------
  |  Branch (20287:6): [True: 0, False: 1]
  ------------------
20288|      1|	goto yy59;
20289|      1|yy978:
20290|      0|	YYDEBUG(978, *YYCURSOR);
20291|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20292|      0|	if (yych == 'U') goto yy1089;
  ------------------
  |  Branch (20292:6): [True: 0, False: 0]
  ------------------
20293|      0|	if (yych == 'u') goto yy1089;
  ------------------
  |  Branch (20293:6): [True: 0, False: 0]
  ------------------
20294|      0|	goto yy59;
20295|      0|yy979:
20296|      0|	YYDEBUG(979, *YYCURSOR);
20297|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20298|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (20298:6): [True: 0, False: 0]
  ------------------
20299|      0|		if (yych <= 'K') {
  ------------------
  |  Branch (20299:7): [True: 0, False: 0]
  ------------------
20300|      0|			if (yych == 'C') goto yy1090;
  ------------------
  |  Branch (20300:8): [True: 0, False: 0]
  ------------------
20301|      0|			goto yy59;
20302|      0|		} else {
20303|      0|			if (yych <= 'L') goto yy1091;
  ------------------
  |  Branch (20303:8): [True: 0, False: 0]
  ------------------
20304|      0|			if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (20304:8): [True: 0, False: 0]
  ------------------
20305|      0|			goto yy1092;
20306|      0|		}
20307|      0|	} else {
20308|      0|		if (yych <= 'k') {
  ------------------
  |  Branch (20308:7): [True: 0, False: 0]
  ------------------
20309|      0|			if (yych == 'c') goto yy1090;
  ------------------
  |  Branch (20309:8): [True: 0, False: 0]
  ------------------
20310|      0|			goto yy59;
20311|      0|		} else {
20312|      0|			if (yych <= 'l') goto yy1091;
  ------------------
  |  Branch (20312:8): [True: 0, False: 0]
  ------------------
20313|      0|			if (yych == 'n') goto yy1092;
  ------------------
  |  Branch (20313:8): [True: 0, False: 0]
  ------------------
20314|      0|			goto yy59;
20315|      0|		}
20316|      0|	}
20317|      0|yy980:
20318|      0|	YYDEBUG(980, *YYCURSOR);
20319|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20320|      0|	if (yych == 'N') goto yy1093;
  ------------------
  |  Branch (20320:6): [True: 0, False: 0]
  ------------------
20321|      0|	if (yych == 'n') goto yy1093;
  ------------------
  |  Branch (20321:6): [True: 0, False: 0]
  ------------------
20322|      0|	goto yy59;
20323|      0|yy981:
20324|      0|	YYDEBUG(981, *YYCURSOR);
20325|      0|	yyaccept = 24;
20326|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20327|      0|	if (yych == 'E') goto yy1094;
  ------------------
  |  Branch (20327:6): [True: 0, False: 0]
  ------------------
20328|      0|	if (yych == 'e') goto yy1094;
  ------------------
  |  Branch (20328:6): [True: 0, False: 0]
  ------------------
20329|      0|yy982:
20330|      0|	YYDEBUG(982, *YYCURSOR);
20331|      0|#line 1872 "ext/date/lib/parse_date.re"
20332|      0|	{
20333|      0|		timelib_sll i;
20334|      0|		int         behavior = 0;
20335|      0|		DEBUG_OUTPUT("relativetext");
20336|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
20337|      0|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      0|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
20338|       |
20339|      0|		while(*ptr) {
  ------------------
  |  Branch (20339:9): [True: 0, False: 0]
  ------------------
20340|      0|			i = timelib_get_relative_text(&ptr, &behavior);
20341|      0|			timelib_eat_spaces(&ptr);
20342|      0|			timelib_set_relative(&ptr, i, behavior, s, TIMELIB_TIME_PART_DONT_KEEP);
  ------------------
  |  |   84|      0|#define TIMELIB_TIME_PART_DONT_KEEP               0x00
  ------------------
20343|      0|		}
20344|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20345|      0|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      0|#define TIMELIB_RELATIVE       310
  ------------------
20346|      0|	}
20347|      0|#line 20348 "ext/date/lib/parse_date.c"
20348|      0|yy983:
20349|      0|	YYDEBUG(983, *YYCURSOR);
20350|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20351|      0|	if (yych == 'T') goto yy1095;
  ------------------
  |  Branch (20351:6): [True: 0, False: 0]
  ------------------
20352|      0|	if (yych == 't') goto yy1095;
  ------------------
  |  Branch (20352:6): [True: 0, False: 0]
  ------------------
20353|      0|	goto yy59;
20354|      0|yy984:
20355|      0|	YYDEBUG(984, *YYCURSOR);
20356|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20357|      0|	if (yych == 'C') goto yy1096;
  ------------------
  |  Branch (20357:6): [True: 0, False: 0]
  ------------------
20358|      0|	if (yych == 'c') goto yy1096;
  ------------------
  |  Branch (20358:6): [True: 0, False: 0]
  ------------------
20359|      0|	goto yy59;
20360|      0|yy985:
20361|      0|	YYDEBUG(985, *YYCURSOR);
20362|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20363|      0|	if (yych == 'N') goto yy1088;
  ------------------
  |  Branch (20363:6): [True: 0, False: 0]
  ------------------
20364|      0|	if (yych == 'n') goto yy1088;
  ------------------
  |  Branch (20364:6): [True: 0, False: 0]
  ------------------
20365|      0|	goto yy59;
20366|      0|yy986:
20367|      0|	YYDEBUG(986, *YYCURSOR);
20368|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20369|      0|	if (yych == 'U') goto yy1097;
  ------------------
  |  Branch (20369:6): [True: 0, False: 0]
  ------------------
20370|      0|	if (yych == 'u') goto yy1097;
  ------------------
  |  Branch (20370:6): [True: 0, False: 0]
  ------------------
20371|      0|	goto yy59;
20372|      0|yy987:
20373|      0|	YYDEBUG(987, *YYCURSOR);
20374|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20375|      0|	if (yych == 'E') goto yy1098;
  ------------------
  |  Branch (20375:6): [True: 0, False: 0]
  ------------------
20376|      0|	if (yych == 'e') goto yy1098;
  ------------------
  |  Branch (20376:6): [True: 0, False: 0]
  ------------------
20377|      0|	goto yy59;
20378|      0|yy988:
20379|      0|	YYDEBUG(988, *YYCURSOR);
20380|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20381|      0|	if (yych == 'E') goto yy1094;
  ------------------
  |  Branch (20381:6): [True: 0, False: 0]
  ------------------
20382|      0|	if (yych == 'e') goto yy1094;
  ------------------
  |  Branch (20382:6): [True: 0, False: 0]
  ------------------
20383|      0|	goto yy59;
20384|      0|yy989:
20385|      0|	YYDEBUG(989, *YYCURSOR);
20386|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20387|      0|	if (yych <= 'E') {
  ------------------
  |  Branch (20387:6): [True: 0, False: 0]
  ------------------
20388|      0|		if (yych <= 'C') goto yy59;
  ------------------
  |  Branch (20388:7): [True: 0, False: 0]
  ------------------
20389|      0|		if (yych <= 'D') goto yy1099;
  ------------------
  |  Branch (20389:7): [True: 0, False: 0]
  ------------------
20390|      0|		goto yy1100;
20391|      0|	} else {
20392|      0|		if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (20392:7): [True: 0, False: 0]
  ------------------
20393|      0|		if (yych <= 'd') goto yy1099;
  ------------------
  |  Branch (20393:7): [True: 0, False: 0]
  ------------------
20394|      0|		if (yych <= 'e') goto yy1100;
  ------------------
  |  Branch (20394:7): [True: 0, False: 0]
  ------------------
20395|      0|		goto yy59;
20396|      0|	}
20397|      0|yy990:
20398|      0|	YYDEBUG(990, *YYCURSOR);
20399|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20400|      0|	if (yych == 'A') goto yy1089;
  ------------------
  |  Branch (20400:6): [True: 0, False: 0]
  ------------------
20401|      0|	if (yych == 'a') goto yy1089;
  ------------------
  |  Branch (20401:6): [True: 0, False: 0]
  ------------------
20402|      0|	goto yy59;
20403|      0|yy991:
20404|      0|	YYDEBUG(991, *YYCURSOR);
20405|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20406|      0|	if (yych == 'S') goto yy981;
  ------------------
  |  Branch (20406:6): [True: 0, False: 0]
  ------------------
20407|      0|	if (yych == 's') goto yy981;
  ------------------
  |  Branch (20407:6): [True: 0, False: 0]
  ------------------
20408|      0|	goto yy59;
20409|      0|yy992:
20410|      0|	YYDEBUG(992, *YYCURSOR);
20411|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20412|      0|	if (yych == 'Y') goto yy1101;
  ------------------
  |  Branch (20412:6): [True: 0, False: 0]
  ------------------
20413|      0|	if (yych == 'y') goto yy1101;
  ------------------
  |  Branch (20413:6): [True: 0, False: 0]
  ------------------
20414|      0|	goto yy59;
20415|      0|yy993:
20416|      0|	YYDEBUG(993, *YYCURSOR);
20417|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20418|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (20418:6): [True: 0, False: 0]
  ------------------
20419|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20420|      0|	if (yych == 0xA0) goto yy867;
  ------------------
  |  Branch (20420:6): [True: 0, False: 0]
  ------------------
20421|      0|	if (yych == 0xB5) goto yy991;
  ------------------
  |  Branch (20421:6): [True: 0, False: 0]
  ------------------
20422|      0|	goto yy59;
20423|      0|yy994:
20424|      0|	YYDEBUG(994, *YYCURSOR);
20425|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20426|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (20426:6): [True: 0, False: 0]
  ------------------
20427|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20428|      0|	if (yych <= 'd') {
  ------------------
  |  Branch (20428:6): [True: 0, False: 0]
  ------------------
20429|      0|		if (yych <= 'R') {
  ------------------
  |  Branch (20429:7): [True: 0, False: 0]
  ------------------
20430|      0|			if (yych <= 'F') {
  ------------------
  |  Branch (20430:8): [True: 0, False: 0]
  ------------------
20431|      0|				if (yych == 'D') goto yy856;
  ------------------
  |  Branch (20431:9): [True: 0, False: 0]
  ------------------
20432|      0|				if (yych <= 'E') goto yy59;
  ------------------
  |  Branch (20432:9): [True: 0, False: 0]
  ------------------
20433|      0|				goto yy857;
20434|      0|			} else {
20435|      0|				if (yych <= 'H') {
  ------------------
  |  Branch (20435:9): [True: 0, False: 0]
  ------------------
20436|      0|					if (yych <= 'G') goto yy59;
  ------------------
  |  Branch (20436:10): [True: 0, False: 0]
  ------------------
20437|      0|					goto yy858;
20438|      0|				} else {
20439|      0|					if (yych == 'M') goto yy859;
  ------------------
  |  Branch (20439:10): [True: 0, False: 0]
  ------------------
20440|      0|					goto yy59;
20441|      0|				}
20442|      0|			}
20443|      0|		} else {
20444|      0|			if (yych <= 'V') {
  ------------------
  |  Branch (20444:8): [True: 0, False: 0]
  ------------------
20445|      0|				if (yych <= 'S') goto yy860;
  ------------------
  |  Branch (20445:9): [True: 0, False: 0]
  ------------------
20446|      0|				if (yych <= 'T') goto yy861;
  ------------------
  |  Branch (20446:9): [True: 0, False: 0]
  ------------------
20447|      0|				if (yych <= 'U') goto yy862;
  ------------------
  |  Branch (20447:9): [True: 0, False: 0]
  ------------------
20448|      0|				goto yy59;
20449|      0|			} else {
20450|      0|				if (yych <= 'X') {
  ------------------
  |  Branch (20450:9): [True: 0, False: 0]
  ------------------
20451|      0|					if (yych <= 'W') goto yy863;
  ------------------
  |  Branch (20451:10): [True: 0, False: 0]
  ------------------
20452|      0|					goto yy59;
20453|      0|				} else {
20454|      0|					if (yych <= 'Y') goto yy864;
  ------------------
  |  Branch (20454:10): [True: 0, False: 0]
  ------------------
20455|      0|					if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (20455:10): [True: 0, False: 0]
  ------------------
20456|      0|					goto yy856;
20457|      0|				}
20458|      0|			}
20459|      0|		}
20460|      0|	} else {
20461|      0|		if (yych <= 't') {
  ------------------
  |  Branch (20461:7): [True: 0, False: 0]
  ------------------
20462|      0|			if (yych <= 'h') {
  ------------------
  |  Branch (20462:8): [True: 0, False: 0]
  ------------------
20463|      0|				if (yych == 'f') goto yy857;
  ------------------
  |  Branch (20463:9): [True: 0, False: 0]
  ------------------
20464|      0|				if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (20464:9): [True: 0, False: 0]
  ------------------
20465|      0|				goto yy858;
20466|      0|			} else {
20467|      0|				if (yych <= 'm') {
  ------------------
  |  Branch (20467:9): [True: 0, False: 0]
  ------------------
20468|      0|					if (yych <= 'l') goto yy59;
  ------------------
  |  Branch (20468:10): [True: 0, False: 0]
  ------------------
20469|      0|					goto yy859;
20470|      0|				} else {
20471|      0|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (20471:10): [True: 0, False: 0]
  ------------------
20472|      0|					if (yych <= 's') goto yy860;
  ------------------
  |  Branch (20472:10): [True: 0, False: 0]
  ------------------
20473|      0|					goto yy861;
20474|      0|				}
20475|      0|			}
20476|      0|		} else {
20477|      0|			if (yych <= 'y') {
  ------------------
  |  Branch (20477:8): [True: 0, False: 0]
  ------------------
20478|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (20478:9): [True: 0, False: 0]
  ------------------
20479|      0|					if (yych <= 'u') goto yy862;
  ------------------
  |  Branch (20479:10): [True: 0, False: 0]
  ------------------
20480|      0|					goto yy59;
20481|      0|				} else {
20482|      0|					if (yych <= 'w') goto yy863;
  ------------------
  |  Branch (20482:10): [True: 0, False: 0]
  ------------------
20483|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (20483:10): [True: 0, False: 0]
  ------------------
20484|      0|					goto yy864;
20485|      0|				}
20486|      0|			} else {
20487|      0|				if (yych <= 0xC2) {
  ------------------
  |  Branch (20487:9): [True: 0, False: 0]
  ------------------
20488|      0|					if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (20488:10): [True: 0, False: 0]
  ------------------
20489|      0|					goto yy865;
20490|      0|				} else {
20491|      0|					if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (20491:10): [True: 0, False: 0]
  ------------------
20492|      0|					goto yy59;
20493|      0|				}
20494|      0|			}
20495|      0|		}
20496|      0|	}
20497|      0|yy995:
20498|      0|	YYDEBUG(995, *YYCURSOR);
20499|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20500|      0|	if (yych == 'T') goto yy1102;
  ------------------
  |  Branch (20500:6): [True: 0, False: 0]
  ------------------
20501|      0|	if (yych == 't') goto yy1102;
  ------------------
  |  Branch (20501:6): [True: 0, False: 0]
  ------------------
20502|      0|	goto yy59;
20503|      0|yy996:
20504|      0|	YYDEBUG(996, *YYCURSOR);
20505|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20506|      0|	if (yych == 'T') goto yy1102;
  ------------------
  |  Branch (20506:6): [True: 0, False: 0]
  ------------------
20507|      0|	if (yych == 't') goto yy1103;
  ------------------
  |  Branch (20507:6): [True: 0, False: 0]
  ------------------
20508|      0|	goto yy955;
20509|      0|yy997:
20510|      0|	YYDEBUG(997, *YYCURSOR);
20511|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20512|      0|	if (yych == 'S') goto yy1104;
  ------------------
  |  Branch (20512:6): [True: 0, False: 0]
  ------------------
20513|      0|	if (yych == 's') goto yy1104;
  ------------------
  |  Branch (20513:6): [True: 0, False: 0]
  ------------------
20514|      0|	goto yy59;
20515|      1|yy998:
20516|      1|	YYDEBUG(998, *YYCURSOR);
20517|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20518|      1|	if (yych == 'S') goto yy1104;
  ------------------
  |  Branch (20518:6): [True: 0, False: 1]
  ------------------
20519|      1|	if (yych == 's') goto yy1105;
  ------------------
  |  Branch (20519:6): [True: 0, False: 1]
  ------------------
20520|      1|	goto yy955;
20521|      1|yy999:
20522|      0|	YYDEBUG(999, *YYCURSOR);
20523|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20524|      0|	if (yych == 'Y') goto yy1007;
  ------------------
  |  Branch (20524:6): [True: 0, False: 0]
  ------------------
20525|      0|	if (yych == 'y') goto yy1007;
  ------------------
  |  Branch (20525:6): [True: 0, False: 0]
  ------------------
20526|      0|	goto yy59;
20527|      0|yy1000:
20528|      0|	YYDEBUG(1000, *YYCURSOR);
20529|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20530|      0|	if (yych == 'E') goto yy957;
  ------------------
  |  Branch (20530:6): [True: 0, False: 0]
  ------------------
20531|      0|	if (yych == 'e') goto yy957;
  ------------------
  |  Branch (20531:6): [True: 0, False: 0]
  ------------------
20532|      0|	goto yy59;
20533|      1|yy1001:
20534|      1|	YYDEBUG(1001, *YYCURSOR);
20535|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20536|      1|	if (yych <= ' ') {
  ------------------
  |  Branch (20536:6): [True: 1, False: 0]
  ------------------
20537|      1|		if (yych == '\t') goto yy834;
  ------------------
  |  Branch (20537:7): [True: 0, False: 1]
  ------------------
20538|      1|		if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (20538:7): [True: 0, False: 1]
  ------------------
20539|      1|		goto yy834;
20540|      1|	} else {
20541|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (20541:7): [True: 0, False: 0]
  ------------------
20542|      0|			if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (20542:8): [True: 0, False: 0]
  ------------------
20543|      0|			goto yy837;
20544|      0|		} else {
20545|      0|			if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (20545:8): [True: 0, False: 0]
  ------------------
20546|      0|			goto yy59;
20547|      0|		}
20548|      0|	}
20549|      0|yy1002:
20550|      0|	YYDEBUG(1002, *YYCURSOR);
20551|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20552|      0|	if (yych == 'Y') goto yy1007;
  ------------------
  |  Branch (20552:6): [True: 0, False: 0]
  ------------------
20553|      0|	if (yych == 'y') goto yy1009;
  ------------------
  |  Branch (20553:6): [True: 0, False: 0]
  ------------------
20554|      0|	goto yy955;
20555|      0|yy1003:
20556|      0|	YYDEBUG(1003, *YYCURSOR);
20557|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20558|      0|	if (yych == 'E') goto yy957;
  ------------------
  |  Branch (20558:6): [True: 0, False: 0]
  ------------------
20559|      0|	if (yych == 'e') goto yy958;
  ------------------
  |  Branch (20559:6): [True: 0, False: 0]
  ------------------
20560|      0|	goto yy955;
20561|      0|yy1004:
20562|      0|	YYDEBUG(1004, *YYCURSOR);
20563|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20564|      0|	if (yych <= ' ') {
  ------------------
  |  Branch (20564:6): [True: 0, False: 0]
  ------------------
20565|      0|		if (yych == '\t') goto yy834;
  ------------------
  |  Branch (20565:7): [True: 0, False: 0]
  ------------------
20566|      0|		if (yych <= 0x1F) goto yy955;
  ------------------
  |  Branch (20566:7): [True: 0, False: 0]
  ------------------
20567|      0|		goto yy834;
20568|      0|	} else {
20569|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (20569:7): [True: 0, False: 0]
  ------------------
20570|      0|			if (yych <= 0xC1) goto yy955;
  ------------------
  |  Branch (20570:8): [True: 0, False: 0]
  ------------------
20571|      0|			goto yy837;
20572|      0|		} else {
20573|      0|			if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (20573:8): [True: 0, False: 0]
  ------------------
20574|      0|			goto yy955;
20575|      0|		}
20576|      0|	}
20577|     12|yy1005:
20578|     12|	YYDEBUG(1005, *YYCURSOR);
20579|     12|	++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
20580|     12|	goto yy777;
20581|      0|yy1006:
20582|      0|	YYDEBUG(1006, *YYCURSOR);
20583|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20584|      0|	if (yych == 'W') goto yy1106;
  ------------------
  |  Branch (20584:6): [True: 0, False: 0]
  ------------------
20585|      0|	if (yych == 'w') goto yy1106;
  ------------------
  |  Branch (20585:6): [True: 0, False: 0]
  ------------------
20586|      0|	goto yy59;
20587|      0|yy1007:
20588|      0|	YYDEBUG(1007, *YYCURSOR);
20589|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20590|      0|	if (yych == 'S') goto yy965;
  ------------------
  |  Branch (20590:6): [True: 0, False: 0]
  ------------------
20591|      0|	if (yych == 's') goto yy965;
  ------------------
  |  Branch (20591:6): [True: 0, False: 0]
  ------------------
20592|      0|	goto yy315;
20593|      1|yy1008:
20594|      1|	YYDEBUG(1008, *YYCURSOR);
20595|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20596|      1|	if (yych == 'W') goto yy1106;
  ------------------
  |  Branch (20596:6): [True: 0, False: 1]
  ------------------
20597|      1|	if (yych == 'w') goto yy1108;
  ------------------
  |  Branch (20597:6): [True: 0, False: 1]
  ------------------
20598|      1|	goto yy955;
20599|      1|yy1009:
20600|      0|	YYDEBUG(1009, *YYCURSOR);
20601|      0|	yyaccept = 9;
20602|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20603|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (20603:6): [True: 0, False: 0]
  ------------------
20604|      0|		if (yych <= '.') {
  ------------------
  |  Branch (20604:7): [True: 0, False: 0]
  ------------------
20605|      0|			if (yych == '-') goto yy297;
  ------------------
  |  Branch (20605:8): [True: 0, False: 0]
  ------------------
20606|      0|			goto yy315;
20607|      0|		} else {
20608|      0|			if (yych <= '/') goto yy297;
  ------------------
  |  Branch (20608:8): [True: 0, False: 0]
  ------------------
20609|      0|			if (yych <= 'R') goto yy315;
  ------------------
  |  Branch (20609:8): [True: 0, False: 0]
  ------------------
20610|      0|			goto yy965;
20611|      0|		}
20612|      0|	} else {
20613|      0|		if (yych <= '`') {
  ------------------
  |  Branch (20613:7): [True: 0, False: 0]
  ------------------
20614|      0|			if (yych == '_') goto yy297;
  ------------------
  |  Branch (20614:8): [True: 0, False: 0]
  ------------------
20615|      0|			goto yy315;
20616|      0|		} else {
20617|      0|			if (yych == 's') goto yy967;
  ------------------
  |  Branch (20617:8): [True: 0, False: 0]
  ------------------
20618|      0|			if (yych <= 'z') goto yy954;
  ------------------
  |  Branch (20618:8): [True: 0, False: 0]
  ------------------
20619|      0|			goto yy315;
20620|      0|		}
20621|      0|	}
20622|      0|yy1010:
20623|      0|	YYDEBUG(1010, *YYCURSOR);
20624|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20625|      0|	if (yych == 'A') goto yy999;
  ------------------
  |  Branch (20625:6): [True: 0, False: 0]
  ------------------
20626|      0|	if (yych == 'a') goto yy999;
  ------------------
  |  Branch (20626:6): [True: 0, False: 0]
  ------------------
20627|      0|	goto yy59;
20628|      0|yy1011:
20629|      0|	YYDEBUG(1011, *YYCURSOR);
20630|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20631|      0|	if (yych == 'A') goto yy999;
  ------------------
  |  Branch (20631:6): [True: 0, False: 0]
  ------------------
20632|      0|	if (yych == 'a') goto yy1002;
  ------------------
  |  Branch (20632:6): [True: 0, False: 0]
  ------------------
20633|      0|	goto yy955;
20634|      0|yy1012:
20635|      0|	YYDEBUG(1012, *YYCURSOR);
20636|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20637|      0|	if (yych == 'A') goto yy1109;
  ------------------
  |  Branch (20637:6): [True: 0, False: 0]
  ------------------
20638|      0|	if (yych == 'a') goto yy1109;
  ------------------
  |  Branch (20638:6): [True: 0, False: 0]
  ------------------
20639|      0|	goto yy59;
20640|      0|yy1013:
20641|      0|	YYDEBUG(1013, *YYCURSOR);
20642|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20643|      0|	if (yych == 'A') goto yy1109;
  ------------------
  |  Branch (20643:6): [True: 0, False: 0]
  ------------------
20644|      0|	if (yych == 'a') goto yy1110;
  ------------------
  |  Branch (20644:6): [True: 0, False: 0]
  ------------------
20645|      0|	goto yy955;
20646|      3|yy1014:
20647|      3|	YYDEBUG(1014, *YYCURSOR);
20648|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
20649|      3|	if (yych == '-') goto yy1111;
  ------------------
  |  Branch (20649:6): [True: 0, False: 3]
  ------------------
20650|      3|	goto yy59;
20651|      3|yy1015:
20652|      1|	YYDEBUG(1015, *YYCURSOR);
20653|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20654|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20654:6): [True: 0, False: 1]
  ------------------
20655|      1|	if (yych <= '9') goto yy1112;
  ------------------
  |  Branch (20655:6): [True: 1, False: 0]
  ------------------
20656|      0|	goto yy59;
20657|      0|yy1016:
20658|      0|	YYDEBUG(1016, *YYCURSOR);
20659|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20660|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20660:6): [True: 0, False: 0]
  ------------------
20661|      0|	if (yych <= '2') goto yy1112;
  ------------------
  |  Branch (20661:6): [True: 0, False: 0]
  ------------------
20662|      0|	goto yy59;
20663|     54|yy1017:
20664|     54|	YYDEBUG(1017, *YYCURSOR);
20665|     54|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     54|#define   YYCURSOR     cursor
  ------------------
20666|     54|	if (yych <= '9') {
  ------------------
  |  Branch (20666:6): [True: 46, False: 8]
  ------------------
20667|     46|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (20667:7): [True: 0, False: 46]
  ------------------
20668|     46|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (20668:7): [True: 0, False: 46]
  ------------------
20669|     46|		goto yy1113;
20670|     46|	} else {
20671|      8|		if (yych <= 0xC2) {
  ------------------
  |  Branch (20671:7): [True: 5, False: 3]
  ------------------
20672|      5|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (20672:8): [True: 2, False: 3]
  ------------------
20673|      3|			goto yy97;
20674|      5|		} else {
20675|      3|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (20675:8): [True: 0, False: 3]
  ------------------
20676|      3|			goto yy196;
20677|      3|		}
20678|      8|	}
20679|      0|yy1018:
20680|      0|	YYDEBUG(1018, *YYCURSOR);
20681|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20682|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20682:6): [True: 0, False: 0]
  ------------------
20683|      0|	if (yych <= '9') goto yy115;
  ------------------
  |  Branch (20683:6): [True: 0, False: 0]
  ------------------
20684|      0|	goto yy59;
20685|      0|yy1019:
20686|      0|	YYDEBUG(1019, *YYCURSOR);
20687|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20688|      0|	if (yych == '0') goto yy115;
  ------------------
  |  Branch (20688:6): [True: 0, False: 0]
  ------------------
20689|      0|	goto yy59;
20690|      0|yy1020:
20691|      0|	YYDEBUG(1020, *YYCURSOR);
20692|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20693|      0|	YYDEBUG(1021, *YYCURSOR);
20694|      0|#line 1578 "ext/date/lib/parse_date.re"
20695|      0|	{
20696|      0|		DEBUG_OUTPUT("pointed date YYYY");
20697|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
20698|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20699|      0|		s->time->d = timelib_get_nr(&ptr, 2);
20700|      0|		s->time->m = timelib_get_nr(&ptr, 2);
20701|      0|		s->time->y = timelib_get_nr(&ptr, 4);
20702|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20703|      0|		return TIMELIB_DATE_FULL_POINTED;
  ------------------
  |  |   69|      0|#define TIMELIB_DATE_FULL_POINTED 277
  ------------------
20704|      0|	}
20705|      0|#line 20706 "ext/date/lib/parse_date.c"
20706|      5|yy1022:
20707|      5|	YYDEBUG(1022, *YYCURSOR);
20708|      5|	++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
20709|      5|	goto yy224;
20710|      0|yy1023:
20711|      0|	YYDEBUG(1023, *YYCURSOR);
20712|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20713|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20713:6): [True: 0, False: 0]
  ------------------
20714|      0|	if (yych <= '9') goto yy1114;
  ------------------
  |  Branch (20714:6): [True: 0, False: 0]
  ------------------
20715|      0|	goto yy59;
20716|      0|yy1024:
20717|      0|	YYDEBUG(1024, *YYCURSOR);
20718|      0|	yyaccept = 25;
20719|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20720|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (20720:6): [True: 0, False: 0]
  ------------------
20721|      0|		if (yych <= '/') goto yy1025;
  ------------------
  |  Branch (20721:7): [True: 0, False: 0]
  ------------------
20722|      0|		if (yych <= '9') goto yy897;
  ------------------
  |  Branch (20722:7): [True: 0, False: 0]
  ------------------
20723|      0|		if (yych >= 'n') goto yy741;
  ------------------
  |  Branch (20723:7): [True: 0, False: 0]
  ------------------
20724|      0|	} else {
20725|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (20725:7): [True: 0, False: 0]
  ------------------
20726|      0|			if (yych >= 'r') goto yy741;
  ------------------
  |  Branch (20726:8): [True: 0, False: 0]
  ------------------
20727|      0|		} else {
20728|      0|			if (yych <= 's') goto yy742;
  ------------------
  |  Branch (20728:8): [True: 0, False: 0]
  ------------------
20729|      0|			if (yych <= 't') goto yy743;
  ------------------
  |  Branch (20729:8): [True: 0, False: 0]
  ------------------
20730|      0|		}
20731|      0|	}
20732|      0|yy1025:
20733|      0|	YYDEBUG(1025, *YYCURSOR);
20734|      0|#line 1509 "ext/date/lib/parse_date.re"
20735|      0|	{
20736|      0|		int length = 0;
20737|      0|		DEBUG_OUTPUT("iso8601date2");
20738|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
20739|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
20740|      0|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
20741|      0|		s->time->m = timelib_get_nr(&ptr, 2);
20742|      0|		s->time->d = timelib_get_nr(&ptr, 2);
20743|      0|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      0|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      0|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 0]
  |  |  |  Branch (112:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  113|      0|	/*	(x) = 0; */          \
  |  |  114|      0|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|      0|}
  ------------------
20744|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20745|      0|		return TIMELIB_ISO_DATE;
  ------------------
  |  |   59|      0|#define TIMELIB_ISO_DATE       267
  ------------------
20746|      0|	}
20747|      0|#line 20748 "ext/date/lib/parse_date.c"
20748|      3|yy1026:
20749|      3|	YYDEBUG(1026, *YYCURSOR);
20750|      3|	yyaccept = 15;
20751|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      3|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
20752|      3|	if (yych <= 'm') {
  ------------------
  |  Branch (20752:6): [True: 2, False: 1]
  ------------------
20753|      2|		if (yych <= '9') {
  ------------------
  |  Branch (20753:7): [True: 2, False: 0]
  ------------------
20754|      2|			if (yych <= '/') goto yy567;
  ------------------
  |  Branch (20754:8): [True: 2, False: 0]
  ------------------
20755|      0|			goto yy1028;
20756|      2|		} else {
20757|      0|			if (yych == 'T') goto yy1115;
  ------------------
  |  Branch (20757:8): [True: 0, False: 0]
  ------------------
20758|      0|			goto yy567;
20759|      0|		}
20760|      2|	} else {
20761|      1|		if (yych <= 'r') {
  ------------------
  |  Branch (20761:7): [True: 0, False: 1]
  ------------------
20762|      0|			if (yych <= 'n') goto yy1116;
  ------------------
  |  Branch (20762:8): [True: 0, False: 0]
  ------------------
20763|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (20763:8): [True: 0, False: 0]
  ------------------
20764|      0|			goto yy1116;
20765|      1|		} else {
20766|      1|			if (yych <= 's') goto yy1117;
  ------------------
  |  Branch (20766:8): [True: 0, False: 1]
  ------------------
20767|      1|			if (yych <= 't') goto yy1118;
  ------------------
  |  Branch (20767:8): [True: 0, False: 1]
  ------------------
20768|      1|			goto yy567;
20769|      1|		}
20770|      1|	}
20771|      0|yy1027:
20772|      0|	YYDEBUG(1027, *YYCURSOR);
20773|      0|	yyaccept = 15;
20774|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20775|      0|	if (yych <= 'm') {
  ------------------
  |  Branch (20775:6): [True: 0, False: 0]
  ------------------
20776|      0|		if (yych <= '1') {
  ------------------
  |  Branch (20776:7): [True: 0, False: 0]
  ------------------
20777|      0|			if (yych <= '/') goto yy567;
  ------------------
  |  Branch (20777:8): [True: 0, False: 0]
  ------------------
20778|      0|		} else {
20779|      0|			if (yych == 'T') goto yy1115;
  ------------------
  |  Branch (20779:8): [True: 0, False: 0]
  ------------------
20780|      0|			goto yy567;
20781|      0|		}
20782|      0|	} else {
20783|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (20783:7): [True: 0, False: 0]
  ------------------
20784|      0|			if (yych <= 'n') goto yy1116;
  ------------------
  |  Branch (20784:8): [True: 0, False: 0]
  ------------------
20785|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (20785:8): [True: 0, False: 0]
  ------------------
20786|      0|			goto yy1116;
20787|      0|		} else {
20788|      0|			if (yych <= 's') goto yy1117;
  ------------------
  |  Branch (20788:8): [True: 0, False: 0]
  ------------------
20789|      0|			if (yych <= 't') goto yy1118;
  ------------------
  |  Branch (20789:8): [True: 0, False: 0]
  ------------------
20790|      0|			goto yy567;
20791|      0|		}
20792|      0|	}
20793|      0|yy1028:
20794|      0|	YYDEBUG(1028, *YYCURSOR);
20795|      0|	yyaccept = 15;
20796|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20797|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (20797:6): [True: 0, False: 0]
  ------------------
20798|      0|		if (yych == 'T') goto yy1115;
  ------------------
  |  Branch (20798:7): [True: 0, False: 0]
  ------------------
20799|      0|		if (yych <= 'm') goto yy567;
  ------------------
  |  Branch (20799:7): [True: 0, False: 0]
  ------------------
20800|      0|		goto yy1116;
20801|      0|	} else {
20802|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (20802:7): [True: 0, False: 0]
  ------------------
20803|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (20803:8): [True: 0, False: 0]
  ------------------
20804|      0|			goto yy1116;
20805|      0|		} else {
20806|      0|			if (yych <= 's') goto yy1117;
  ------------------
  |  Branch (20806:8): [True: 0, False: 0]
  ------------------
20807|      0|			if (yych <= 't') goto yy1118;
  ------------------
  |  Branch (20807:8): [True: 0, False: 0]
  ------------------
20808|      0|			goto yy567;
20809|      0|		}
20810|      0|	}
20811|      1|yy1029:
20812|      1|	YYDEBUG(1029, *YYCURSOR);
20813|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20814|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (20814:6): [True: 0, False: 1]
  ------------------
20815|      1|	if (yych <= '2') goto yy1119;
  ------------------
  |  Branch (20815:6): [True: 0, False: 1]
  ------------------
20816|      1|	if (yych <= '3') goto yy1120;
  ------------------
  |  Branch (20816:6): [True: 1, False: 0]
  ------------------
20817|      0|	if (yych <= '9') goto yy1028;
  ------------------
  |  Branch (20817:6): [True: 0, False: 0]
  ------------------
20818|      0|	goto yy59;
20819|      2|yy1030:
20820|      2|	YYDEBUG(1030, *YYCURSOR);
20821|      2|	++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
20822|      2|	goto yy926;
20823|      0|yy1031:
20824|      0|	YYDEBUG(1031, *YYCURSOR);
20825|      0|	yyaccept = 22;
20826|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20827|      0|	if (yych <= 'H') {
  ------------------
  |  Branch (20827:6): [True: 0, False: 0]
  ------------------
20828|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20828:7): [True: 0, False: 0]
  ------------------
20829|      0|		goto yy600;
20830|      0|	} else {
20831|      0|		if (yych <= 'I') goto yy1051;
  ------------------
  |  Branch (20831:7): [True: 0, False: 0]
  ------------------
20832|      0|		if (yych == 'i') goto yy1051;
  ------------------
  |  Branch (20832:7): [True: 0, False: 0]
  ------------------
20833|      0|		goto yy600;
20834|      0|	}
20835|      0|yy1032:
20836|      0|	YYDEBUG(1032, *YYCURSOR);
20837|      0|	yyaccept = 22;
20838|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20839|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (20839:6): [True: 0, False: 0]
  ------------------
20840|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20840:7): [True: 0, False: 0]
  ------------------
20841|      0|		goto yy600;
20842|      0|	} else {
20843|      0|		if (yych <= 'U') goto yy1052;
  ------------------
  |  Branch (20843:7): [True: 0, False: 0]
  ------------------
20844|      0|		if (yych == 'u') goto yy1052;
  ------------------
  |  Branch (20844:7): [True: 0, False: 0]
  ------------------
20845|      0|		goto yy600;
20846|      0|	}
20847|      0|yy1033:
20848|      0|	YYDEBUG(1033, *YYCURSOR);
20849|      0|	yyaccept = 22;
20850|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20851|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (20851:6): [True: 0, False: 0]
  ------------------
20852|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20852:7): [True: 0, False: 0]
  ------------------
20853|      0|		goto yy600;
20854|      0|	} else {
20855|      0|		if (yych <= 'E') goto yy1053;
  ------------------
  |  Branch (20855:7): [True: 0, False: 0]
  ------------------
20856|      0|		if (yych == 'e') goto yy1053;
  ------------------
  |  Branch (20856:7): [True: 0, False: 0]
  ------------------
20857|      0|		goto yy600;
20858|      0|	}
20859|      0|yy1034:
20860|      0|	YYDEBUG(1034, *YYCURSOR);
20861|      0|	yyaccept = 22;
20862|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20863|      0|	if (yych <= 'Q') {
  ------------------
  |  Branch (20863:6): [True: 0, False: 0]
  ------------------
20864|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20864:7): [True: 0, False: 0]
  ------------------
20865|      0|		goto yy600;
20866|      0|	} else {
20867|      0|		if (yych <= 'R') goto yy1054;
  ------------------
  |  Branch (20867:7): [True: 0, False: 0]
  ------------------
20868|      0|		if (yych == 'r') goto yy1054;
  ------------------
  |  Branch (20868:7): [True: 0, False: 0]
  ------------------
20869|      0|		goto yy600;
20870|      0|	}
20871|      0|yy1035:
20872|      0|	YYDEBUG(1035, *YYCURSOR);
20873|      0|	yyaccept = 22;
20874|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20875|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (20875:6): [True: 0, False: 0]
  ------------------
20876|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20876:7): [True: 0, False: 0]
  ------------------
20877|      0|		goto yy600;
20878|      0|	} else {
20879|      0|		if (yych <= 'U') goto yy1055;
  ------------------
  |  Branch (20879:7): [True: 0, False: 0]
  ------------------
20880|      0|		if (yych == 'u') goto yy1055;
  ------------------
  |  Branch (20880:7): [True: 0, False: 0]
  ------------------
20881|      0|		goto yy600;
20882|      0|	}
20883|      0|yy1036:
20884|      0|	YYDEBUG(1036, *YYCURSOR);
20885|      0|	yyaccept = 22;
20886|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20887|      0|	if (yych <= 'X') {
  ------------------
  |  Branch (20887:6): [True: 0, False: 0]
  ------------------
20888|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20888:7): [True: 0, False: 0]
  ------------------
20889|      0|		goto yy600;
20890|      0|	} else {
20891|      0|		if (yych <= 'Y') goto yy790;
  ------------------
  |  Branch (20891:7): [True: 0, False: 0]
  ------------------
20892|      0|		if (yych == 'y') goto yy790;
  ------------------
  |  Branch (20892:7): [True: 0, False: 0]
  ------------------
20893|      0|		goto yy600;
20894|      0|	}
20895|      0|yy1037:
20896|      0|	YYDEBUG(1037, *YYCURSOR);
20897|      0|	yyaccept = 22;
20898|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20899|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (20899:6): [True: 0, False: 0]
  ------------------
20900|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20900:7): [True: 0, False: 0]
  ------------------
20901|      0|		goto yy600;
20902|      0|	} else {
20903|      0|		if (yych <= 'E') goto yy790;
  ------------------
  |  Branch (20903:7): [True: 0, False: 0]
  ------------------
20904|      0|		if (yych == 'e') goto yy790;
  ------------------
  |  Branch (20904:7): [True: 0, False: 0]
  ------------------
20905|      0|		goto yy600;
20906|      0|	}
20907|      0|yy1038:
20908|      0|	YYDEBUG(1038, *YYCURSOR);
20909|      0|	yyaccept = 22;
20910|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20911|      0|	if (yych <= 'B') {
  ------------------
  |  Branch (20911:6): [True: 0, False: 0]
  ------------------
20912|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20912:7): [True: 0, False: 0]
  ------------------
20913|      0|		goto yy600;
20914|      0|	} else {
20915|      0|		if (yych <= 'C') goto yy1056;
  ------------------
  |  Branch (20915:7): [True: 0, False: 0]
  ------------------
20916|      0|		if (yych == 'c') goto yy1056;
  ------------------
  |  Branch (20916:7): [True: 0, False: 0]
  ------------------
20917|      0|		goto yy600;
20918|      0|	}
20919|      0|yy1039:
20920|      0|	YYDEBUG(1039, *YYCURSOR);
20921|      0|	yyaccept = 22;
20922|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20923|      0|	if (yych == '-') goto yy951;
  ------------------
  |  Branch (20923:6): [True: 0, False: 0]
  ------------------
20924|      0|	goto yy600;
20925|      0|yy1040:
20926|      0|	YYDEBUG(1040, *YYCURSOR);
20927|      0|	yyaccept = 22;
20928|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20929|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (20929:6): [True: 0, False: 0]
  ------------------
20930|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20930:7): [True: 0, False: 0]
  ------------------
20931|      0|		goto yy600;
20932|      0|	} else {
20933|      0|		if (yych <= 'O') goto yy1057;
  ------------------
  |  Branch (20933:7): [True: 0, False: 0]
  ------------------
20934|      0|		if (yych == 'o') goto yy1057;
  ------------------
  |  Branch (20934:7): [True: 0, False: 0]
  ------------------
20935|      0|		goto yy600;
20936|      0|	}
20937|      0|yy1041:
20938|      0|	YYDEBUG(1041, *YYCURSOR);
20939|      0|	yyaccept = 22;
20940|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20941|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (20941:6): [True: 0, False: 0]
  ------------------
20942|      0|		if (yych == '-') goto yy951;
  ------------------
  |  Branch (20942:7): [True: 0, False: 0]
  ------------------
20943|      0|		goto yy600;
20944|      0|	} else {
20945|      0|		if (yych <= 'T') goto yy1033;
  ------------------
  |  Branch (20945:7): [True: 0, False: 0]
  ------------------
20946|      0|		if (yych == 't') goto yy1033;
  ------------------
  |  Branch (20946:7): [True: 0, False: 0]
  ------------------
20947|      0|		goto yy600;
20948|      0|	}
20949|      1|yy1042:
20950|      1|	YYDEBUG(1042, *YYCURSOR);
20951|      1|	yyaccept = 26;
20952|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
20953|      1|	if (yych <= 'n') {
  ------------------
  |  Branch (20953:6): [True: 1, False: 0]
  ------------------
20954|      1|		if (yych <= '/') goto yy1043;
  ------------------
  |  Branch (20954:7): [True: 0, False: 1]
  ------------------
20955|      1|		if (yych <= '9') goto yy1045;
  ------------------
  |  Branch (20955:7): [True: 1, False: 0]
  ------------------
20956|      0|		if (yych >= 'n') goto yy1121;
  ------------------
  |  Branch (20956:7): [True: 0, False: 0]
  ------------------
20957|      0|	} else {
20958|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (20958:7): [True: 0, False: 0]
  ------------------
20959|      0|			if (yych >= 'r') goto yy1121;
  ------------------
  |  Branch (20959:8): [True: 0, False: 0]
  ------------------
20960|      0|		} else {
20961|      0|			if (yych <= 's') goto yy1122;
  ------------------
  |  Branch (20961:8): [True: 0, False: 0]
  ------------------
20962|      0|			if (yych <= 't') goto yy1123;
  ------------------
  |  Branch (20962:8): [True: 0, False: 0]
  ------------------
20963|      0|		}
20964|      0|	}
20965|      5|yy1043:
20966|      5|	YYDEBUG(1043, *YYCURSOR);
20967|      5|#line 1497 "ext/date/lib/parse_date.re"
20968|      5|	{
20969|      5|		DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
20970|      5|		TIMELIB_INIT;
  ------------------
  |  |  107|      5|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
20971|      5|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      5|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      2|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      2|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      2|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 2, False: 3]
  |  |  ------------------
  ------------------
20972|      3|		s->time->y = timelib_get_signed_nr(s, &ptr, 4);
20973|      3|		s->time->m = timelib_get_nr(&ptr, 2);
20974|      3|		s->time->d = timelib_get_nr(&ptr, 2);
20975|      3|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      3|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      3|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
20976|      3|		return TIMELIB_ISO_DATE;
  ------------------
  |  |   59|      3|#define TIMELIB_ISO_DATE       267
  ------------------
20977|      5|	}
20978|      0|#line 20979 "ext/date/lib/parse_date.c"
20979|      0|yy1044:
20980|      0|	YYDEBUG(1044, *YYCURSOR);
20981|      0|	yyaccept = 26;
20982|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
20983|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (20983:6): [True: 0, False: 0]
  ------------------
20984|      0|		if (yych <= '/') goto yy1043;
  ------------------
  |  Branch (20984:7): [True: 0, False: 0]
  ------------------
20985|      0|		if (yych <= '1') goto yy1045;
  ------------------
  |  Branch (20985:7): [True: 0, False: 0]
  ------------------
20986|      0|		if (yych <= 'm') goto yy1043;
  ------------------
  |  Branch (20986:7): [True: 0, False: 0]
  ------------------
20987|      0|		goto yy1121;
20988|      0|	} else {
20989|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (20989:7): [True: 0, False: 0]
  ------------------
20990|      0|			if (yych <= 'q') goto yy1043;
  ------------------
  |  Branch (20990:8): [True: 0, False: 0]
  ------------------
20991|      0|			goto yy1121;
20992|      0|		} else {
20993|      0|			if (yych <= 's') goto yy1122;
  ------------------
  |  Branch (20993:8): [True: 0, False: 0]
  ------------------
20994|      0|			if (yych <= 't') goto yy1123;
  ------------------
  |  Branch (20994:8): [True: 0, False: 0]
  ------------------
20995|      0|			goto yy1043;
20996|      0|		}
20997|      0|	}
20998|      1|yy1045:
20999|      1|	YYDEBUG(1045, *YYCURSOR);
21000|      1|	yyaccept = 26;
21001|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21002|      1|	if (yych <= 'q') {
  ------------------
  |  Branch (21002:6): [True: 0, False: 1]
  ------------------
21003|      0|		if (yych == 'n') goto yy1121;
  ------------------
  |  Branch (21003:7): [True: 0, False: 0]
  ------------------
21004|      0|		goto yy1043;
21005|      1|	} else {
21006|      1|		if (yych <= 'r') goto yy1121;
  ------------------
  |  Branch (21006:7): [True: 0, False: 1]
  ------------------
21007|      1|		if (yych <= 's') goto yy1122;
  ------------------
  |  Branch (21007:7): [True: 0, False: 1]
  ------------------
21008|      1|		if (yych <= 't') goto yy1123;
  ------------------
  |  Branch (21008:7): [True: 0, False: 1]
  ------------------
21009|      1|		goto yy1043;
21010|      1|	}
21011|      4|yy1046:
21012|      4|	YYDEBUG(1046, *YYCURSOR);
21013|      4|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
21014|      4|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21014:6): [True: 0, False: 4]
  ------------------
21015|      4|	if (yych <= '2') goto yy1124;
  ------------------
  |  Branch (21015:6): [True: 0, False: 4]
  ------------------
21016|      4|	if (yych <= '3') goto yy1125;
  ------------------
  |  Branch (21016:6): [True: 4, False: 0]
  ------------------
21017|      0|	if (yych <= '9') goto yy1045;
  ------------------
  |  Branch (21017:6): [True: 0, False: 0]
  ------------------
21018|      0|	goto yy59;
21019|    106|yy1047:
21020|    106|	YYDEBUG(1047, *YYCURSOR);
21021|    106|	yyaccept = 27;
21022|    106|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|    106|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|    106|#define   YYCURSOR     cursor
  ------------------
21023|    106|	if (yych <= 'X') {
  ------------------
  |  Branch (21023:6): [True: 86, False: 20]
  ------------------
21024|     86|		if (yych <= 'F') {
  ------------------
  |  Branch (21024:7): [True: 83, False: 3]
  ------------------
21025|     83|			if (yych <= '/') {
  ------------------
  |  Branch (21025:8): [True: 7, False: 76]
  ------------------
21026|      7|				if (yych <= '\t') {
  ------------------
  |  Branch (21026:9): [True: 1, False: 6]
  ------------------
21027|      1|					if (yych >= '\t') goto yy195;
  ------------------
  |  Branch (21027:10): [True: 0, False: 1]
  ------------------
21028|      6|				} else {
21029|      6|					if (yych == ' ') goto yy195;
  ------------------
  |  Branch (21029:10): [True: 0, False: 6]
  ------------------
21030|      6|				}
21031|     76|			} else {
21032|     76|				if (yych <= 'C') {
  ------------------
  |  Branch (21032:9): [True: 76, False: 0]
  ------------------
21033|     76|					if (yych <= '9') goto yy1126;
  ------------------
  |  Branch (21033:10): [True: 73, False: 3]
  ------------------
21034|     76|				} else {
21035|      0|					if (yych <= 'D') goto yy198;
  ------------------
  |  Branch (21035:10): [True: 0, False: 0]
  ------------------
21036|      0|					if (yych >= 'F') goto yy199;
  ------------------
  |  Branch (21036:10): [True: 0, False: 0]
  ------------------
21037|      0|				}
21038|     76|			}
21039|     83|		} else {
21040|      3|			if (yych <= 'R') {
  ------------------
  |  Branch (21040:8): [True: 0, False: 3]
  ------------------
21041|      0|				if (yych <= 'H') {
  ------------------
  |  Branch (21041:9): [True: 0, False: 0]
  ------------------
21042|      0|					if (yych >= 'H') goto yy79;
  ------------------
  |  Branch (21042:10): [True: 0, False: 0]
  ------------------
21043|      0|				} else {
21044|      0|					if (yych == 'M') goto yy200;
  ------------------
  |  Branch (21044:10): [True: 0, False: 0]
  ------------------
21045|      0|				}
21046|      3|			} else {
21047|      3|				if (yych <= 'U') {
  ------------------
  |  Branch (21047:9): [True: 2, False: 1]
  ------------------
21048|      2|					if (yych <= 'S') goto yy201;
  ------------------
  |  Branch (21048:10): [True: 0, False: 2]
  ------------------
21049|      2|					if (yych <= 'T') goto yy1127;
  ------------------
  |  Branch (21049:10): [True: 1, False: 1]
  ------------------
21050|      1|					goto yy88;
21051|      2|				} else {
21052|      1|					if (yych == 'W') goto yy90;
  ------------------
  |  Branch (21052:10): [True: 0, False: 1]
  ------------------
21053|      1|				}
21054|      3|			}
21055|      3|		}
21056|     86|	} else {
21057|     20|		if (yych <= 's') {
  ------------------
  |  Branch (21057:7): [True: 4, False: 16]
  ------------------
21058|      4|			if (yych <= 'f') {
  ------------------
  |  Branch (21058:8): [True: 2, False: 2]
  ------------------
21059|      2|				if (yych <= 'c') {
  ------------------
  |  Branch (21059:9): [True: 1, False: 1]
  ------------------
21060|      1|					if (yych <= 'Y') goto yy92;
  ------------------
  |  Branch (21060:10): [True: 1, False: 0]
  ------------------
21061|      1|				} else {
21062|      1|					if (yych <= 'd') goto yy198;
  ------------------
  |  Branch (21062:10): [True: 1, False: 0]
  ------------------
21063|      0|					if (yych >= 'f') goto yy199;
  ------------------
  |  Branch (21063:10): [True: 0, False: 0]
  ------------------
21064|      0|				}
21065|      2|			} else {
21066|      2|				if (yych <= 'l') {
  ------------------
  |  Branch (21066:9): [True: 0, False: 2]
  ------------------
21067|      0|					if (yych == 'h') goto yy79;
  ------------------
  |  Branch (21067:10): [True: 0, False: 0]
  ------------------
21068|      2|				} else {
21069|      2|					if (yych <= 'm') goto yy200;
  ------------------
  |  Branch (21069:10): [True: 0, False: 2]
  ------------------
21070|      2|					if (yych >= 's') goto yy201;
  ------------------
  |  Branch (21070:10): [True: 0, False: 2]
  ------------------
21071|      2|				}
21072|      2|			}
21073|     16|		} else {
21074|     16|			if (yych <= 'x') {
  ------------------
  |  Branch (21074:8): [True: 0, False: 16]
  ------------------
21075|      0|				if (yych <= 'u') {
  ------------------
  |  Branch (21075:9): [True: 0, False: 0]
  ------------------
21076|      0|					if (yych <= 't') goto yy1128;
  ------------------
  |  Branch (21076:10): [True: 0, False: 0]
  ------------------
21077|      0|					goto yy88;
21078|      0|				} else {
21079|      0|					if (yych == 'w') goto yy90;
  ------------------
  |  Branch (21079:10): [True: 0, False: 0]
  ------------------
21080|      0|				}
21081|     16|			} else {
21082|     16|				if (yych <= 0xC2) {
  ------------------
  |  Branch (21082:9): [True: 9, False: 7]
  ------------------
21083|      9|					if (yych <= 'y') goto yy92;
  ------------------
  |  Branch (21083:10): [True: 0, False: 9]
  ------------------
21084|      9|					if (yych >= 0xC2) goto yy97;
  ------------------
  |  Branch (21084:10): [True: 9, False: 0]
  ------------------
21085|      9|				} else {
21086|      7|					if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (21086:10): [True: 0, False: 7]
  ------------------
21087|      7|				}
21088|     16|			}
21089|     16|		}
21090|     20|	}
21091|    106|yy1048:
21092|    106|	YYDEBUG(1048, *YYCURSOR);
21093|    106|#line 1658 "ext/date/lib/parse_date.re"
21094|    106|	{
21095|    106|		DEBUG_OUTPUT("datenocolon");
21096|    106|		TIMELIB_INIT;
  ------------------
  |  |  107|    106|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
21097|    106|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|    106|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|     81|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|     81|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     81|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     81|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     81|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     81|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     81|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     81|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|     81|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 81, False: 25]
  |  |  ------------------
  ------------------
21098|     25|		s->time->y = timelib_get_nr(&ptr, 4);
21099|     25|		s->time->m = timelib_get_nr(&ptr, 2);
21100|     25|		s->time->d = timelib_get_nr(&ptr, 2);
21101|     25|		TIMELIB_DEINIT;
  ------------------
  |  |  108|     25|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|     25|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     25|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|     25|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|     25|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|     25|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|     25|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|     25|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21102|     25|		return TIMELIB_DATE_NOCOLON;
  ------------------
  |  |   62|     25|#define TIMELIB_DATE_NOCOLON   270
  ------------------
21103|    106|	}
21104|      0|#line 21105 "ext/date/lib/parse_date.c"
21105|    302|yy1049:
21106|    302|	YYDEBUG(1049, *YYCURSOR);
21107|    302|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    302|#define   YYCURSOR     cursor
  ------------------
21108|    302|	if (yych <= 0xC1) {
  ------------------
  |  Branch (21108:6): [True: 287, False: 15]
  ------------------
21109|    287|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (21109:7): [True: 32, False: 255]
  ------------------
21110|    255|		if (yych <= '9') goto yy1126;
  ------------------
  |  Branch (21110:7): [True: 232, False: 23]
  ------------------
21111|     23|		goto yy196;
21112|    255|	} else {
21113|     15|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (21113:7): [True: 10, False: 5]
  ------------------
21114|      5|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (21114:7): [True: 1, False: 4]
  ------------------
21115|      4|		goto yy196;
21116|      5|	}
21117|      0|yy1050:
21118|      0|	YYDEBUG(1050, *YYCURSOR);
21119|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21120|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21120:6): [True: 0, False: 0]
  ------------------
21121|      0|	if (yych <= '2') goto yy1129;
  ------------------
  |  Branch (21121:6): [True: 0, False: 0]
  ------------------
21122|      0|	if (yych <= '3') goto yy1130;
  ------------------
  |  Branch (21122:6): [True: 0, False: 0]
  ------------------
21123|      0|	goto yy59;
21124|      7|yy1051:
21125|      7|	YYDEBUG(1051, *YYCURSOR);
21126|      7|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      7|#define   YYCURSOR     cursor
  ------------------
21127|      7|	if (yych == 'L') goto yy790;
  ------------------
  |  Branch (21127:6): [True: 0, False: 7]
  ------------------
21128|      7|	if (yych == 'l') goto yy790;
  ------------------
  |  Branch (21128:6): [True: 0, False: 7]
  ------------------
21129|      7|	goto yy59;
21130|      7|yy1052:
21131|      0|	YYDEBUG(1052, *YYCURSOR);
21132|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21133|      0|	if (yych == 'S') goto yy1131;
  ------------------
  |  Branch (21133:6): [True: 0, False: 0]
  ------------------
21134|      0|	if (yych == 's') goto yy1131;
  ------------------
  |  Branch (21134:6): [True: 0, False: 0]
  ------------------
21135|      0|	goto yy59;
21136|      0|yy1053:
21137|      0|	YYDEBUG(1053, *YYCURSOR);
21138|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21139|      0|	if (yych == 'M') goto yy1057;
  ------------------
  |  Branch (21139:6): [True: 0, False: 0]
  ------------------
21140|      0|	if (yych == 'm') goto yy1057;
  ------------------
  |  Branch (21140:6): [True: 0, False: 0]
  ------------------
21141|      0|	goto yy59;
21142|      0|yy1054:
21143|      0|	YYDEBUG(1054, *YYCURSOR);
21144|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21145|      0|	if (yych == 'U') goto yy1055;
  ------------------
  |  Branch (21145:6): [True: 0, False: 0]
  ------------------
21146|      0|	if (yych != 'u') goto yy59;
  ------------------
  |  Branch (21146:6): [True: 0, False: 0]
  ------------------
21147|      0|yy1055:
21148|      0|	YYDEBUG(1055, *YYCURSOR);
21149|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21150|      0|	if (yych == 'A') goto yy1132;
  ------------------
  |  Branch (21150:6): [True: 0, False: 0]
  ------------------
21151|      0|	if (yych == 'a') goto yy1132;
  ------------------
  |  Branch (21151:6): [True: 0, False: 0]
  ------------------
21152|      0|	goto yy59;
21153|      0|yy1056:
21154|      0|	YYDEBUG(1056, *YYCURSOR);
21155|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21156|      0|	if (yych == 'H') goto yy790;
  ------------------
  |  Branch (21156:6): [True: 0, False: 0]
  ------------------
21157|      0|	if (yych == 'h') goto yy790;
  ------------------
  |  Branch (21157:6): [True: 0, False: 0]
  ------------------
21158|      0|	goto yy59;
21159|      0|yy1057:
21160|      0|	YYDEBUG(1057, *YYCURSOR);
21161|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21162|      0|	if (yych == 'B') goto yy1133;
  ------------------
  |  Branch (21162:6): [True: 0, False: 0]
  ------------------
21163|      0|	if (yych == 'b') goto yy1133;
  ------------------
  |  Branch (21163:6): [True: 0, False: 0]
  ------------------
21164|      0|	goto yy59;
21165|      0|yy1058:
21166|      0|	YYDEBUG(1058, *YYCURSOR);
21167|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21168|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21168:6): [True: 0, False: 0]
  ------------------
21169|      0|	if (yych >= '8') goto yy59;
  ------------------
  |  Branch (21169:6): [True: 0, False: 0]
  ------------------
21170|      1|yy1059:
21171|      1|	YYDEBUG(1059, *YYCURSOR);
21172|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21173|      1|	YYDEBUG(1060, *YYCURSOR);
21174|      1|#line 1710 "ext/date/lib/parse_date.re"
21175|      1|	{
21176|      1|		timelib_sll w, d;
21177|      1|		DEBUG_OUTPUT("isoweekday");
21178|      1|		TIMELIB_INIT;
  ------------------
  |  |  107|      1|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
21179|      1|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      1|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
21180|      1|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      1|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
21181|       |
21182|      1|		s->time->y = timelib_get_nr(&ptr, 4);
21183|      1|		w = timelib_get_nr(&ptr, 2);
21184|      1|		d = timelib_get_nr(&ptr, 1);
21185|      1|		s->time->m = 1;
21186|      1|		s->time->d = 1;
21187|      1|		s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d);
21188|       |
21189|      1|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      1|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      1|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21190|      1|		return TIMELIB_ISO_WEEK;
  ------------------
  |  |   71|      1|#define TIMELIB_ISO_WEEK       279
  ------------------
21191|      1|	}
21192|      0|#line 21193 "ext/date/lib/parse_date.c"
21193|      0|yy1061:
21194|      0|	YYDEBUG(1061, *YYCURSOR);
21195|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21196|      0|	if (yych == 'H') goto yy1134;
  ------------------
  |  Branch (21196:6): [True: 0, False: 0]
  ------------------
21197|      0|	if (yych == 'h') goto yy1134;
  ------------------
  |  Branch (21197:6): [True: 0, False: 0]
  ------------------
21198|      0|	goto yy59;
21199|      0|yy1062:
21200|      0|	YYDEBUG(1062, *YYCURSOR);
21201|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21202|      0|	if (yych == 'C') goto yy1135;
  ------------------
  |  Branch (21202:6): [True: 0, False: 0]
  ------------------
21203|      0|	if (yych == 'c') goto yy1135;
  ------------------
  |  Branch (21203:6): [True: 0, False: 0]
  ------------------
21204|      0|	goto yy59;
21205|      0|yy1063:
21206|      0|	YYDEBUG(1063, *YYCURSOR);
21207|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21208|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21208:6): [True: 0, False: 0]
  ------------------
21209|      0|	if (yych <= '9') goto yy1136;
  ------------------
  |  Branch (21209:6): [True: 0, False: 0]
  ------------------
21210|      0|	goto yy59;
21211|      0|yy1064:
21212|      0|	YYDEBUG(1064, *YYCURSOR);
21213|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21214|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21214:6): [True: 0, False: 0]
  ------------------
21215|      0|	if (yych <= '9') goto yy1138;
  ------------------
  |  Branch (21215:6): [True: 0, False: 0]
  ------------------
21216|      0|	goto yy59;
21217|      0|yy1065:
21218|      0|	YYDEBUG(1065, *YYCURSOR);
21219|      0|	yyaccept = 25;
21220|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21221|      0|	if (yych <= 'q') {
  ------------------
  |  Branch (21221:6): [True: 0, False: 0]
  ------------------
21222|      0|		if (yych == 'n') goto yy741;
  ------------------
  |  Branch (21222:7): [True: 0, False: 0]
  ------------------
21223|      0|		goto yy1025;
21224|      0|	} else {
21225|      0|		if (yych <= 'r') goto yy741;
  ------------------
  |  Branch (21225:7): [True: 0, False: 0]
  ------------------
21226|      0|		if (yych <= 's') goto yy742;
  ------------------
  |  Branch (21226:7): [True: 0, False: 0]
  ------------------
21227|      0|		if (yych <= 't') goto yy743;
  ------------------
  |  Branch (21227:7): [True: 0, False: 0]
  ------------------
21228|      0|		goto yy1025;
21229|      0|	}
21230|      2|yy1066:
21231|      2|	YYDEBUG(1066, *YYCURSOR);
21232|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
21233|      2|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21233:6): [True: 0, False: 2]
  ------------------
21234|      2|	if (yych <= '9') goto yy1140;
  ------------------
  |  Branch (21234:6): [True: 2, False: 0]
  ------------------
21235|      0|	goto yy59;
21236|      0|yy1067:
21237|      0|	YYDEBUG(1067, *YYCURSOR);
21238|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21239|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21239:6): [True: 0, False: 0]
  ------------------
21240|      0|	if (yych <= '1') goto yy1140;
  ------------------
  |  Branch (21240:6): [True: 0, False: 0]
  ------------------
21241|      0|	goto yy59;
21242|      2|yy1068:
21243|      2|	YYDEBUG(1068, *YYCURSOR);
21244|      2|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
21245|      2|	if (yych <= '/') goto yy290;
  ------------------
  |  Branch (21245:6): [True: 0, False: 2]
  ------------------
21246|      2|	if (yych <= '9') goto yy1142;
  ------------------
  |  Branch (21246:6): [True: 0, False: 2]
  ------------------
21247|      2|	goto yy290;
21248|      2|yy1069:
21249|      0|	YYDEBUG(1069, *YYCURSOR);
21250|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21251|      0|	if (yych <= '/') goto yy1070;
  ------------------
  |  Branch (21251:6): [True: 0, False: 0]
  ------------------
21252|      0|	if (yych <= '9') goto yy1143;
  ------------------
  |  Branch (21252:6): [True: 0, False: 0]
  ------------------
21253|      0|yy1070:
21254|      0|	YYDEBUG(1070, *YYCURSOR);
21255|      0|#line 1748 "ext/date/lib/parse_date.re"
21256|      0|	{
21257|      0|		int length = 0;
21258|      0|		DEBUG_OUTPUT("pgtextshort");
21259|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
21260|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
21261|      0|		s->time->m = timelib_get_month(&ptr);
21262|      0|		s->time->d = timelib_get_nr(&ptr, 2);
21263|      0|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
21264|      0|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      0|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      0|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 0]
  |  |  |  Branch (112:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  113|      0|	/*	(x) = 0; */          \
  |  |  114|      0|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|      0|}
  ------------------
21265|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21266|      0|		return TIMELIB_PG_TEXT;
  ------------------
  |  |   64|      0|#define TIMELIB_PG_TEXT        272
  ------------------
21267|      0|	}
21268|      0|#line 21269 "ext/date/lib/parse_date.c"
21269|      0|yy1071:
21270|      0|	YYDEBUG(1071, *YYCURSOR);
21271|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21272|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21272:6): [True: 0, False: 0]
  ------------------
21273|      0|	if (yych <= '1') goto yy1144;
  ------------------
  |  Branch (21273:6): [True: 0, False: 0]
  ------------------
21274|      0|	if (yych <= '2') goto yy1146;
  ------------------
  |  Branch (21274:6): [True: 0, False: 0]
  ------------------
21275|      0|	if (yych <= '9') goto yy1147;
  ------------------
  |  Branch (21275:6): [True: 0, False: 0]
  ------------------
21276|      0|	goto yy59;
21277|      0|yy1072:
21278|      0|	YYDEBUG(1072, *YYCURSOR);
21279|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21280|      0|	if (yych <= 'E') {
  ------------------
  |  Branch (21280:6): [True: 0, False: 0]
  ------------------
21281|      0|		if (yych <= 'C') goto yy59;
  ------------------
  |  Branch (21281:7): [True: 0, False: 0]
  ------------------
21282|      0|		if (yych <= 'D') goto yy1099;
  ------------------
  |  Branch (21282:7): [True: 0, False: 0]
  ------------------
21283|      0|		goto yy1148;
21284|      0|	} else {
21285|      0|		if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (21285:7): [True: 0, False: 0]
  ------------------
21286|      0|		if (yych <= 'd') goto yy1099;
  ------------------
  |  Branch (21286:7): [True: 0, False: 0]
  ------------------
21287|      0|		if (yych <= 'e') goto yy1148;
  ------------------
  |  Branch (21287:7): [True: 0, False: 0]
  ------------------
21288|      0|		goto yy59;
21289|      0|	}
21290|      0|yy1073:
21291|      0|	YYDEBUG(1073, *YYCURSOR);
21292|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21293|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (21293:6): [True: 0, False: 0]
  ------------------
21294|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21295|      0|	if (yych == 0xA0) goto yy960;
  ------------------
  |  Branch (21295:6): [True: 0, False: 0]
  ------------------
21296|      0|	if (yych == 0xB5) goto yy991;
  ------------------
  |  Branch (21296:6): [True: 0, False: 0]
  ------------------
21297|      0|	goto yy59;
21298|      1|yy1074:
21299|      1|	YYDEBUG(1074, *YYCURSOR);
21300|      1|	++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21301|      1|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      1|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (21301:6): [True: 0, False: 1]
  ------------------
21302|      1|	yych = *YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21303|      1|	if (yych <= 'd') {
  ------------------
  |  Branch (21303:6): [True: 1, False: 0]
  ------------------
21304|      1|		if (yych <= 'R') {
  ------------------
  |  Branch (21304:7): [True: 1, False: 0]
  ------------------
21305|      1|			if (yych <= 'F') {
  ------------------
  |  Branch (21305:8): [True: 1, False: 0]
  ------------------
21306|      1|				if (yych == 'D') goto yy856;
  ------------------
  |  Branch (21306:9): [True: 1, False: 0]
  ------------------
21307|      0|				if (yych <= 'E') goto yy59;
  ------------------
  |  Branch (21307:9): [True: 0, False: 0]
  ------------------
21308|      0|				goto yy857;
21309|      0|			} else {
21310|      0|				if (yych <= 'H') {
  ------------------
  |  Branch (21310:9): [True: 0, False: 0]
  ------------------
21311|      0|					if (yych <= 'G') goto yy59;
  ------------------
  |  Branch (21311:10): [True: 0, False: 0]
  ------------------
21312|      0|					goto yy858;
21313|      0|				} else {
21314|      0|					if (yych == 'M') goto yy859;
  ------------------
  |  Branch (21314:10): [True: 0, False: 0]
  ------------------
21315|      0|					goto yy59;
21316|      0|				}
21317|      0|			}
21318|      1|		} else {
21319|      0|			if (yych <= 'V') {
  ------------------
  |  Branch (21319:8): [True: 0, False: 0]
  ------------------
21320|      0|				if (yych <= 'S') goto yy860;
  ------------------
  |  Branch (21320:9): [True: 0, False: 0]
  ------------------
21321|      0|				if (yych <= 'T') goto yy861;
  ------------------
  |  Branch (21321:9): [True: 0, False: 0]
  ------------------
21322|      0|				if (yych <= 'U') goto yy862;
  ------------------
  |  Branch (21322:9): [True: 0, False: 0]
  ------------------
21323|      0|				goto yy59;
21324|      0|			} else {
21325|      0|				if (yych <= 'X') {
  ------------------
  |  Branch (21325:9): [True: 0, False: 0]
  ------------------
21326|      0|					if (yych <= 'W') goto yy959;
  ------------------
  |  Branch (21326:10): [True: 0, False: 0]
  ------------------
21327|      0|					goto yy59;
21328|      0|				} else {
21329|      0|					if (yych <= 'Y') goto yy864;
  ------------------
  |  Branch (21329:10): [True: 0, False: 0]
  ------------------
21330|      0|					if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (21330:10): [True: 0, False: 0]
  ------------------
21331|      0|					goto yy856;
21332|      0|				}
21333|      0|			}
21334|      0|		}
21335|      1|	} else {
21336|      0|		if (yych <= 't') {
  ------------------
  |  Branch (21336:7): [True: 0, False: 0]
  ------------------
21337|      0|			if (yych <= 'h') {
  ------------------
  |  Branch (21337:8): [True: 0, False: 0]
  ------------------
21338|      0|				if (yych == 'f') goto yy857;
  ------------------
  |  Branch (21338:9): [True: 0, False: 0]
  ------------------
21339|      0|				if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (21339:9): [True: 0, False: 0]
  ------------------
21340|      0|				goto yy858;
21341|      0|			} else {
21342|      0|				if (yych <= 'm') {
  ------------------
  |  Branch (21342:9): [True: 0, False: 0]
  ------------------
21343|      0|					if (yych <= 'l') goto yy59;
  ------------------
  |  Branch (21343:10): [True: 0, False: 0]
  ------------------
21344|      0|					goto yy859;
21345|      0|				} else {
21346|      0|					if (yych <= 'r') goto yy59;
  ------------------
  |  Branch (21346:10): [True: 0, False: 0]
  ------------------
21347|      0|					if (yych <= 's') goto yy860;
  ------------------
  |  Branch (21347:10): [True: 0, False: 0]
  ------------------
21348|      0|					goto yy861;
21349|      0|				}
21350|      0|			}
21351|      0|		} else {
21352|      0|			if (yych <= 'y') {
  ------------------
  |  Branch (21352:8): [True: 0, False: 0]
  ------------------
21353|      0|				if (yych <= 'v') {
  ------------------
  |  Branch (21353:9): [True: 0, False: 0]
  ------------------
21354|      0|					if (yych <= 'u') goto yy862;
  ------------------
  |  Branch (21354:10): [True: 0, False: 0]
  ------------------
21355|      0|					goto yy59;
21356|      0|				} else {
21357|      0|					if (yych <= 'w') goto yy959;
  ------------------
  |  Branch (21357:10): [True: 0, False: 0]
  ------------------
21358|      0|					if (yych <= 'x') goto yy59;
  ------------------
  |  Branch (21358:10): [True: 0, False: 0]
  ------------------
21359|      0|					goto yy864;
21360|      0|				}
21361|      0|			} else {
21362|      0|				if (yych <= 0xC2) {
  ------------------
  |  Branch (21362:9): [True: 0, False: 0]
  ------------------
21363|      0|					if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (21363:10): [True: 0, False: 0]
  ------------------
21364|      0|					goto yy865;
21365|      0|				} else {
21366|      0|					if (yych == 0xE2) goto yy838;
  ------------------
  |  Branch (21366:10): [True: 0, False: 0]
  ------------------
21367|      0|					goto yy59;
21368|      0|				}
21369|      0|			}
21370|      0|		}
21371|      0|	}
21372|      0|yy1075:
21373|      0|	YYDEBUG(1075, *YYCURSOR);
21374|      0|	yyaccept = 2;
21375|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21376|      0|	if (yych <= '/') goto yy20;
  ------------------
  |  Branch (21376:6): [True: 0, False: 0]
  ------------------
21377|      0|	if (yych <= '5') goto yy1018;
  ------------------
  |  Branch (21377:6): [True: 0, False: 0]
  ------------------
21378|      0|	if (yych <= '6') goto yy1019;
  ------------------
  |  Branch (21378:6): [True: 0, False: 0]
  ------------------
21379|      0|	goto yy20;
21380|      0|yy1076:
21381|      0|	YYDEBUG(1076, *YYCURSOR);
21382|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21383|      0|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (21383:6): [True: 0, False: 0]
  ------------------
21384|      0|	if (yych <= '9') goto yy1149;
  ------------------
  |  Branch (21384:6): [True: 0, False: 0]
  ------------------
21385|      0|	goto yy849;
21386|      0|yy1077:
21387|      0|	YYDEBUG(1077, *YYCURSOR);
21388|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21389|      0|	if (yych == '0') goto yy1149;
  ------------------
  |  Branch (21389:6): [True: 0, False: 0]
  ------------------
21390|      0|	goto yy849;
21391|      0|yy1078:
21392|      0|	YYDEBUG(1078, *YYCURSOR);
21393|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21394|      0|	goto yy849;
21395|      6|yy1079:
21396|      6|	YYDEBUG(1079, *YYCURSOR);
21397|      6|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      6|#define   YYCURSOR     cursor
  ------------------
21398|      6|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (21398:6): [True: 2, False: 4]
  ------------------
21399|      4|	if (yych <= '9') goto yy1150;
  ------------------
  |  Branch (21399:6): [True: 4, False: 0]
  ------------------
21400|      0|	goto yy849;
21401|      0|yy1080:
21402|      0|	YYDEBUG(1080, *YYCURSOR);
21403|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21404|      0|	if (yych == '0') goto yy1150;
  ------------------
  |  Branch (21404:6): [True: 0, False: 0]
  ------------------
21405|      0|	goto yy849;
21406|     11|yy1081:
21407|     11|	YYDEBUG(1081, *YYCURSOR);
21408|     11|	++YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
21409|     11|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|     11|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (21409:6): [True: 0, False: 11]
  ------------------
21410|     11|	yych = *YYCURSOR;
  ------------------
  |  |   89|     11|#define   YYCURSOR     cursor
  ------------------
21411|     11|	YYDEBUG(1082, *YYCURSOR);
21412|     11|	if (yych <= 'A') {
  ------------------
  |  Branch (21412:6): [True: 9, False: 2]
  ------------------
21413|      9|		if (yych <= 0x1F) {
  ------------------
  |  Branch (21413:7): [True: 6, False: 3]
  ------------------
21414|      6|			if (yych == '\t') goto yy1081;
  ------------------
  |  Branch (21414:8): [True: 6, False: 0]
  ------------------
21415|      0|			goto yy59;
21416|      6|		} else {
21417|      3|			if (yych <= ' ') goto yy1081;
  ------------------
  |  Branch (21417:8): [True: 2, False: 1]
  ------------------
21418|      1|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (21418:8): [True: 0, False: 1]
  ------------------
21419|      1|		}
21420|      9|	} else {
21421|      2|		if (yych <= '`') {
  ------------------
  |  Branch (21421:7): [True: 1, False: 1]
  ------------------
21422|      1|			if (yych != 'P') goto yy59;
  ------------------
  |  Branch (21422:8): [True: 1, False: 0]
  ------------------
21423|      1|		} else {
21424|      1|			if (yych <= 'a') goto yy1083;
  ------------------
  |  Branch (21424:8): [True: 0, False: 1]
  ------------------
21425|      1|			if (yych != 'p') goto yy59;
  ------------------
  |  Branch (21425:8): [True: 1, False: 0]
  ------------------
21426|      1|		}
21427|      2|	}
21428|      1|yy1083:
21429|      1|	YYDEBUG(1083, *YYCURSOR);
21430|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21431|      1|	if (yych <= 'L') {
  ------------------
  |  Branch (21431:6): [True: 0, False: 1]
  ------------------
21432|      0|		if (yych == '.') goto yy1151;
  ------------------
  |  Branch (21432:7): [True: 0, False: 0]
  ------------------
21433|      0|		goto yy59;
21434|      1|	} else {
21435|      1|		if (yych <= 'M') goto yy1152;
  ------------------
  |  Branch (21435:7): [True: 0, False: 1]
  ------------------
21436|      1|		if (yych == 'm') goto yy1152;
  ------------------
  |  Branch (21436:7): [True: 1, False: 0]
  ------------------
21437|      0|		goto yy59;
21438|      1|	}
21439|      0|yy1084:
21440|      0|	YYDEBUG(1084, *YYCURSOR);
21441|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21442|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (21442:6): [True: 0, False: 0]
  ------------------
21443|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21444|      0|	if (yych == 0xA0) goto yy1153;
  ------------------
  |  Branch (21444:6): [True: 0, False: 0]
  ------------------
21445|      0|	goto yy59;
21446|      0|yy1085:
21447|      0|	YYDEBUG(1085, *YYCURSOR);
21448|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21449|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (21449:6): [True: 0, False: 0]
  ------------------
21450|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21451|      0|	if (yych == 0x80) goto yy1154;
  ------------------
  |  Branch (21451:6): [True: 0, False: 0]
  ------------------
21452|      0|	goto yy59;
21453|      0|yy1086:
21454|      0|	YYDEBUG(1086, *YYCURSOR);
21455|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21456|      0|	if (yych == 'S') goto yy1155;
  ------------------
  |  Branch (21456:6): [True: 0, False: 0]
  ------------------
21457|      0|	if (yych == 's') goto yy1155;
  ------------------
  |  Branch (21457:6): [True: 0, False: 0]
  ------------------
21458|      0|	goto yy982;
21459|      0|yy1087:
21460|      0|	YYDEBUG(1087, *YYCURSOR);
21461|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21462|      0|	if (yych == 'T') goto yy1156;
  ------------------
  |  Branch (21462:6): [True: 0, False: 0]
  ------------------
21463|      0|	if (yych == 't') goto yy1156;
  ------------------
  |  Branch (21463:6): [True: 0, False: 0]
  ------------------
21464|      0|	goto yy59;
21465|      0|yy1088:
21466|      0|	YYDEBUG(1088, *YYCURSOR);
21467|      0|	yyaccept = 24;
21468|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21469|      0|	if (yych <= 'D') {
  ------------------
  |  Branch (21469:6): [True: 0, False: 0]
  ------------------
21470|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (21470:7): [True: 0, False: 0]
  ------------------
21471|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (21471:8): [True: 0, False: 0]
  ------------------
21472|      0|			goto yy982;
21473|      0|		} else {
21474|      0|			if (yych <= ' ') goto yy1157;
  ------------------
  |  Branch (21474:8): [True: 0, False: 0]
  ------------------
21475|      0|			if (yych <= 'C') goto yy982;
  ------------------
  |  Branch (21475:8): [True: 0, False: 0]
  ------------------
21476|      0|			goto yy1159;
21477|      0|		}
21478|      0|	} else {
21479|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (21479:7): [True: 0, False: 0]
  ------------------
21480|      0|			if (yych == 'd') goto yy1159;
  ------------------
  |  Branch (21480:8): [True: 0, False: 0]
  ------------------
21481|      0|			goto yy982;
21482|      0|		} else {
21483|      0|			if (yych <= 0xC2) goto yy1160;
  ------------------
  |  Branch (21483:8): [True: 0, False: 0]
  ------------------
21484|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (21484:8): [True: 0, False: 0]
  ------------------
21485|      0|			goto yy982;
21486|      0|		}
21487|      0|	}
21488|      0|yy1089:
21489|      0|	YYDEBUG(1089, *YYCURSOR);
21490|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21491|      0|	if (yych == 'R') goto yy1086;
  ------------------
  |  Branch (21491:6): [True: 0, False: 0]
  ------------------
21492|      0|	if (yych == 'r') goto yy1086;
  ------------------
  |  Branch (21492:6): [True: 0, False: 0]
  ------------------
21493|      0|	goto yy59;
21494|      0|yy1090:
21495|      0|	YYDEBUG(1090, *YYCURSOR);
21496|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21497|      0|	if (yych == 'R') goto yy1162;
  ------------------
  |  Branch (21497:6): [True: 0, False: 0]
  ------------------
21498|      0|	if (yych == 'r') goto yy1162;
  ------------------
  |  Branch (21498:6): [True: 0, False: 0]
  ------------------
21499|      0|	goto yy59;
21500|      0|yy1091:
21501|      0|	YYDEBUG(1091, *YYCURSOR);
21502|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21503|      0|	if (yych == 'L') goto yy1163;
  ------------------
  |  Branch (21503:6): [True: 0, False: 0]
  ------------------
21504|      0|	if (yych == 'l') goto yy1163;
  ------------------
  |  Branch (21504:6): [True: 0, False: 0]
  ------------------
21505|      0|	goto yy59;
21506|      0|yy1092:
21507|      0|	YYDEBUG(1092, *YYCURSOR);
21508|      0|	yyaccept = 24;
21509|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21510|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (21510:6): [True: 0, False: 0]
  ------------------
21511|      0|		if (yych == 'S') goto yy1155;
  ------------------
  |  Branch (21511:7): [True: 0, False: 0]
  ------------------
21512|      0|		if (yych <= 'T') goto yy982;
  ------------------
  |  Branch (21512:7): [True: 0, False: 0]
  ------------------
21513|      0|		goto yy1164;
21514|      0|	} else {
21515|      0|		if (yych <= 's') {
  ------------------
  |  Branch (21515:7): [True: 0, False: 0]
  ------------------
21516|      0|			if (yych <= 'r') goto yy982;
  ------------------
  |  Branch (21516:8): [True: 0, False: 0]
  ------------------
21517|      0|			goto yy1155;
21518|      0|		} else {
21519|      0|			if (yych == 'u') goto yy1164;
  ------------------
  |  Branch (21519:8): [True: 0, False: 0]
  ------------------
21520|      0|			goto yy982;
21521|      0|		}
21522|      0|	}
21523|      0|yy1093:
21524|      0|	YYDEBUG(1093, *YYCURSOR);
21525|      0|	yyaccept = 24;
21526|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21527|      0|	if (yych <= 'T') {
  ------------------
  |  Branch (21527:6): [True: 0, False: 0]
  ------------------
21528|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (21528:7): [True: 0, False: 0]
  ------------------
21529|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (21529:8): [True: 0, False: 0]
  ------------------
21530|      0|			if (yych <= 0x1F) goto yy982;
  ------------------
  |  Branch (21530:8): [True: 0, False: 0]
  ------------------
21531|      0|			goto yy1157;
21532|      0|		} else {
21533|      0|			if (yych == 'D') goto yy1159;
  ------------------
  |  Branch (21533:8): [True: 0, False: 0]
  ------------------
21534|      0|			if (yych <= 'S') goto yy982;
  ------------------
  |  Branch (21534:8): [True: 0, False: 0]
  ------------------
21535|      0|			goto yy1165;
21536|      0|		}
21537|      0|	} else {
21538|      0|		if (yych <= 't') {
  ------------------
  |  Branch (21538:7): [True: 0, False: 0]
  ------------------
21539|      0|			if (yych == 'd') goto yy1159;
  ------------------
  |  Branch (21539:8): [True: 0, False: 0]
  ------------------
21540|      0|			if (yych <= 's') goto yy982;
  ------------------
  |  Branch (21540:8): [True: 0, False: 0]
  ------------------
21541|      0|			goto yy1165;
21542|      0|		} else {
21543|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (21543:8): [True: 0, False: 0]
  ------------------
21544|      0|				if (yych <= 0xC1) goto yy982;
  ------------------
  |  Branch (21544:9): [True: 0, False: 0]
  ------------------
21545|      0|				goto yy1160;
21546|      0|			} else {
21547|      0|				if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (21547:9): [True: 0, False: 0]
  ------------------
21548|      0|				goto yy982;
21549|      0|			}
21550|      0|		}
21551|      0|	}
21552|      0|yy1094:
21553|      0|	YYDEBUG(1094, *YYCURSOR);
21554|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21555|      0|	if (yych == 'C') goto yy1086;
  ------------------
  |  Branch (21555:6): [True: 0, False: 0]
  ------------------
21556|      0|	if (yych == 'c') goto yy1086;
  ------------------
  |  Branch (21556:6): [True: 0, False: 0]
  ------------------
21557|      0|	goto yy59;
21558|      0|yy1095:
21559|      0|	YYDEBUG(1095, *YYCURSOR);
21560|      0|	yyaccept = 24;
21561|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21562|      0|	if (yych <= 'U') {
  ------------------
  |  Branch (21562:6): [True: 0, False: 0]
  ------------------
21563|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (21563:7): [True: 0, False: 0]
  ------------------
21564|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (21564:8): [True: 0, False: 0]
  ------------------
21565|      0|			goto yy982;
21566|      0|		} else {
21567|      0|			if (yych <= ' ') goto yy1157;
  ------------------
  |  Branch (21567:8): [True: 0, False: 0]
  ------------------
21568|      0|			if (yych <= 'T') goto yy982;
  ------------------
  |  Branch (21568:8): [True: 0, False: 0]
  ------------------
21569|      0|			goto yy1166;
21570|      0|		}
21571|      0|	} else {
21572|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (21572:7): [True: 0, False: 0]
  ------------------
21573|      0|			if (yych == 'u') goto yy1166;
  ------------------
  |  Branch (21573:8): [True: 0, False: 0]
  ------------------
21574|      0|			goto yy982;
21575|      0|		} else {
21576|      0|			if (yych <= 0xC2) goto yy1160;
  ------------------
  |  Branch (21576:8): [True: 0, False: 0]
  ------------------
21577|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (21577:8): [True: 0, False: 0]
  ------------------
21578|      0|			goto yy982;
21579|      0|		}
21580|      0|	}
21581|      0|yy1096:
21582|      0|	YYDEBUG(1096, *YYCURSOR);
21583|      0|	yyaccept = 24;
21584|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21585|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (21585:6): [True: 0, False: 0]
  ------------------
21586|      0|		if (yych == 'O') goto yy1167;
  ------------------
  |  Branch (21586:7): [True: 0, False: 0]
  ------------------
21587|      0|		if (yych <= 'R') goto yy982;
  ------------------
  |  Branch (21587:7): [True: 0, False: 0]
  ------------------
21588|      0|		goto yy1155;
21589|      0|	} else {
21590|      0|		if (yych <= 'o') {
  ------------------
  |  Branch (21590:7): [True: 0, False: 0]
  ------------------
21591|      0|			if (yych <= 'n') goto yy982;
  ------------------
  |  Branch (21591:8): [True: 0, False: 0]
  ------------------
21592|      0|			goto yy1167;
21593|      0|		} else {
21594|      0|			if (yych == 's') goto yy1155;
  ------------------
  |  Branch (21594:8): [True: 0, False: 0]
  ------------------
21595|      0|			goto yy982;
21596|      0|		}
21597|      0|	}
21598|      0|yy1097:
21599|      0|	YYDEBUG(1097, *YYCURSOR);
21600|      0|	yyaccept = 24;
21601|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21602|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (21602:6): [True: 0, False: 0]
  ------------------
21603|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (21603:7): [True: 0, False: 0]
  ------------------
21604|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (21604:8): [True: 0, False: 0]
  ------------------
21605|      0|			goto yy982;
21606|      0|		} else {
21607|      0|			if (yych <= ' ') goto yy1157;
  ------------------
  |  Branch (21607:8): [True: 0, False: 0]
  ------------------
21608|      0|			if (yych <= 'Q') goto yy982;
  ------------------
  |  Branch (21608:8): [True: 0, False: 0]
  ------------------
21609|      0|			goto yy1168;
21610|      0|		}
21611|      0|	} else {
21612|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (21612:7): [True: 0, False: 0]
  ------------------
21613|      0|			if (yych == 'r') goto yy1168;
  ------------------
  |  Branch (21613:8): [True: 0, False: 0]
  ------------------
21614|      0|			goto yy982;
21615|      0|		} else {
21616|      0|			if (yych <= 0xC2) goto yy1160;
  ------------------
  |  Branch (21616:8): [True: 0, False: 0]
  ------------------
21617|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (21617:8): [True: 0, False: 0]
  ------------------
21618|      0|			goto yy982;
21619|      0|		}
21620|      0|	}
21621|      0|yy1098:
21622|      0|	YYDEBUG(1098, *YYCURSOR);
21623|      0|	yyaccept = 24;
21624|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21625|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (21625:6): [True: 0, False: 0]
  ------------------
21626|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (21626:7): [True: 0, False: 0]
  ------------------
21627|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (21627:8): [True: 0, False: 0]
  ------------------
21628|      0|			goto yy982;
21629|      0|		} else {
21630|      0|			if (yych <= ' ') goto yy1157;
  ------------------
  |  Branch (21630:8): [True: 0, False: 0]
  ------------------
21631|      0|			if (yych <= 'R') goto yy982;
  ------------------
  |  Branch (21631:8): [True: 0, False: 0]
  ------------------
21632|      0|			goto yy1169;
21633|      0|		}
21634|      0|	} else {
21635|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (21635:7): [True: 0, False: 0]
  ------------------
21636|      0|			if (yych == 's') goto yy1169;
  ------------------
  |  Branch (21636:8): [True: 0, False: 0]
  ------------------
21637|      0|			goto yy982;
21638|      0|		} else {
21639|      0|			if (yych <= 0xC2) goto yy1160;
  ------------------
  |  Branch (21639:8): [True: 0, False: 0]
  ------------------
21640|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (21640:8): [True: 0, False: 0]
  ------------------
21641|      0|			goto yy982;
21642|      0|		}
21643|      0|	}
21644|      0|yy1099:
21645|      0|	YYDEBUG(1099, *YYCURSOR);
21646|      0|	yyaccept = 24;
21647|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21648|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (21648:6): [True: 0, False: 0]
  ------------------
21649|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (21649:7): [True: 0, False: 0]
  ------------------
21650|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (21650:8): [True: 0, False: 0]
  ------------------
21651|      0|			goto yy982;
21652|      0|		} else {
21653|      0|			if (yych <= ' ') goto yy1157;
  ------------------
  |  Branch (21653:8): [True: 0, False: 0]
  ------------------
21654|      0|			if (yych <= 'M') goto yy982;
  ------------------
  |  Branch (21654:8): [True: 0, False: 0]
  ------------------
21655|      0|			goto yy1170;
21656|      0|		}
21657|      0|	} else {
21658|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (21658:7): [True: 0, False: 0]
  ------------------
21659|      0|			if (yych == 'n') goto yy1170;
  ------------------
  |  Branch (21659:8): [True: 0, False: 0]
  ------------------
21660|      0|			goto yy982;
21661|      0|		} else {
21662|      0|			if (yych <= 0xC2) goto yy1160;
  ------------------
  |  Branch (21662:8): [True: 0, False: 0]
  ------------------
21663|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (21663:8): [True: 0, False: 0]
  ------------------
21664|      0|			goto yy982;
21665|      0|		}
21666|      0|	}
21667|      0|yy1100:
21668|      0|	YYDEBUG(1100, *YYCURSOR);
21669|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21670|      0|	if (yych == 'K') goto yy1171;
  ------------------
  |  Branch (21670:6): [True: 0, False: 0]
  ------------------
21671|      0|	if (yych == 'k') goto yy1171;
  ------------------
  |  Branch (21671:6): [True: 0, False: 0]
  ------------------
21672|      0|	goto yy59;
21673|      0|yy1101:
21674|      0|	YYDEBUG(1101, *YYCURSOR);
21675|      0|	yyaccept = 24;
21676|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21677|      0|	if (yych <= 'R') {
  ------------------
  |  Branch (21677:6): [True: 0, False: 0]
  ------------------
21678|      0|		if (yych == ' ') goto yy1173;
  ------------------
  |  Branch (21678:7): [True: 0, False: 0]
  ------------------
21679|      0|		goto yy982;
21680|      0|	} else {
21681|      0|		if (yych <= 'S') goto yy1155;
  ------------------
  |  Branch (21681:7): [True: 0, False: 0]
  ------------------
21682|      0|		if (yych == 's') goto yy1155;
  ------------------
  |  Branch (21682:7): [True: 0, False: 0]
  ------------------
21683|      0|		goto yy982;
21684|      0|	}
21685|      0|yy1102:
21686|      0|	YYDEBUG(1102, *YYCURSOR);
21687|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21688|      0|	goto yy722;
21689|      0|yy1103:
21690|      0|	YYDEBUG(1103, *YYCURSOR);
21691|      0|	yyaccept = 16;
21692|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21693|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (21693:6): [True: 0, False: 0]
  ------------------
21694|      0|		goto yy954;
21695|      0|	}
21696|      0|	if (yych <= '.') {
  ------------------
  |  Branch (21696:6): [True: 0, False: 0]
  ------------------
21697|      0|		if (yych == '-') goto yy297;
  ------------------
  |  Branch (21697:7): [True: 0, False: 0]
  ------------------
21698|      0|		goto yy722;
21699|      0|	} else {
21700|      0|		if (yych <= '/') goto yy297;
  ------------------
  |  Branch (21700:7): [True: 0, False: 0]
  ------------------
21701|      0|		if (yych == '_') goto yy297;
  ------------------
  |  Branch (21701:7): [True: 0, False: 0]
  ------------------
21702|      0|		goto yy722;
21703|      0|	}
21704|      0|yy1104:
21705|      0|	YYDEBUG(1104, *YYCURSOR);
21706|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21707|      0|	if (yych <= ' ') {
  ------------------
  |  Branch (21707:6): [True: 0, False: 0]
  ------------------
21708|      0|		if (yych == '\t') goto yy701;
  ------------------
  |  Branch (21708:7): [True: 0, False: 0]
  ------------------
21709|      0|		if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (21709:7): [True: 0, False: 0]
  ------------------
21710|      0|		goto yy701;
21711|      0|	} else {
21712|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (21712:7): [True: 0, False: 0]
  ------------------
21713|      0|			if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (21713:8): [True: 0, False: 0]
  ------------------
21714|      0|			goto yy704;
21715|      0|		} else {
21716|      0|			if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (21716:8): [True: 0, False: 0]
  ------------------
21717|      0|			goto yy59;
21718|      0|		}
21719|      0|	}
21720|      0|yy1105:
21721|      0|	YYDEBUG(1105, *YYCURSOR);
21722|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21723|      0|	if (yych <= ' ') {
  ------------------
  |  Branch (21723:6): [True: 0, False: 0]
  ------------------
21724|      0|		if (yych == '\t') goto yy701;
  ------------------
  |  Branch (21724:7): [True: 0, False: 0]
  ------------------
21725|      0|		if (yych <= 0x1F) goto yy955;
  ------------------
  |  Branch (21725:7): [True: 0, False: 0]
  ------------------
21726|      0|		goto yy701;
21727|      0|	} else {
21728|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (21728:7): [True: 0, False: 0]
  ------------------
21729|      0|			if (yych <= 0xC1) goto yy955;
  ------------------
  |  Branch (21729:8): [True: 0, False: 0]
  ------------------
21730|      0|			goto yy704;
21731|      0|		} else {
21732|      0|			if (yych == 0xE2) goto yy705;
  ------------------
  |  Branch (21732:8): [True: 0, False: 0]
  ------------------
21733|      0|			goto yy955;
21734|      0|		}
21735|      0|	}
21736|      0|yy1106:
21737|      0|	YYDEBUG(1106, *YYCURSOR);
21738|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21739|      0|yy1107:
21740|      0|	YYDEBUG(1107, *YYCURSOR);
21741|      0|#line 1209 "ext/date/lib/parse_date.re"
21742|      0|	{
21743|      0|		DEBUG_OUTPUT("tomorrow");
21744|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
21745|      0|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      0|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
21746|      0|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
21747|       |
21748|      0|		s->time->relative.d = 1;
21749|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
21750|      0|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      0|#define TIMELIB_RELATIVE       310
  ------------------
21751|      0|	}
21752|      0|#line 21753 "ext/date/lib/parse_date.c"
21753|      0|yy1108:
21754|      0|	YYDEBUG(1108, *YYCURSOR);
21755|      0|	yyaccept = 28;
21756|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21757|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (21757:6): [True: 0, False: 0]
  ------------------
21758|      0|		goto yy954;
21759|      0|	}
21760|      0|	if (yych <= '.') {
  ------------------
  |  Branch (21760:6): [True: 0, False: 0]
  ------------------
21761|      0|		if (yych == '-') goto yy297;
  ------------------
  |  Branch (21761:7): [True: 0, False: 0]
  ------------------
21762|      0|		goto yy1107;
21763|      0|	} else {
21764|      0|		if (yych <= '/') goto yy297;
  ------------------
  |  Branch (21764:7): [True: 0, False: 0]
  ------------------
21765|      0|		if (yych == '_') goto yy297;
  ------------------
  |  Branch (21765:7): [True: 0, False: 0]
  ------------------
21766|      0|		goto yy1107;
21767|      0|	}
21768|      0|yy1109:
21769|      0|	YYDEBUG(1109, *YYCURSOR);
21770|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21771|      0|	if (yych == 'Y') goto yy1174;
  ------------------
  |  Branch (21771:6): [True: 0, False: 0]
  ------------------
21772|      0|	if (yych == 'y') goto yy1174;
  ------------------
  |  Branch (21772:6): [True: 0, False: 0]
  ------------------
21773|      0|	goto yy59;
21774|      0|yy1110:
21775|      0|	YYDEBUG(1110, *YYCURSOR);
21776|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21777|      0|	if (yych == 'Y') goto yy1174;
  ------------------
  |  Branch (21777:6): [True: 0, False: 0]
  ------------------
21778|      0|	if (yych == 'y') goto yy1176;
  ------------------
  |  Branch (21778:6): [True: 0, False: 0]
  ------------------
21779|      0|	goto yy955;
21780|      0|yy1111:
21781|      0|	YYDEBUG(1111, *YYCURSOR);
21782|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21783|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21783:6): [True: 0, False: 0]
  ------------------
21784|      0|	if (yych <= '2') goto yy1177;
  ------------------
  |  Branch (21784:6): [True: 0, False: 0]
  ------------------
21785|      0|	if (yych <= '3') goto yy1178;
  ------------------
  |  Branch (21785:6): [True: 0, False: 0]
  ------------------
21786|      0|	goto yy59;
21787|      1|yy1112:
21788|      1|	YYDEBUG(1112, *YYCURSOR);
21789|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21790|      1|	if (yych == '-') goto yy1179;
  ------------------
  |  Branch (21790:6): [True: 1, False: 0]
  ------------------
21791|      0|	goto yy59;
21792|     46|yy1113:
21793|     46|	YYDEBUG(1113, *YYCURSOR);
21794|     46|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     46|#define   YYCURSOR     cursor
  ------------------
21795|     46|	if (yych <= '9') {
  ------------------
  |  Branch (21795:6): [True: 40, False: 6]
  ------------------
21796|     40|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (21796:7): [True: 0, False: 40]
  ------------------
21797|     40|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (21797:7): [True: 0, False: 40]
  ------------------
21798|     40|		goto yy1180;
21799|     40|	} else {
21800|      6|		if (yych <= 0xC2) {
  ------------------
  |  Branch (21800:7): [True: 6, False: 0]
  ------------------
21801|      6|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (21801:8): [True: 1, False: 5]
  ------------------
21802|      5|			goto yy97;
21803|      6|		} else {
21804|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (21804:8): [True: 0, False: 0]
  ------------------
21805|      0|			goto yy196;
21806|      0|		}
21807|      6|	}
21808|      0|yy1114:
21809|      0|	YYDEBUG(1114, *YYCURSOR);
21810|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21811|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21811:6): [True: 0, False: 0]
  ------------------
21812|      0|	if (yych <= '9') goto yy1181;
  ------------------
  |  Branch (21812:6): [True: 0, False: 0]
  ------------------
21813|      0|	goto yy59;
21814|      0|yy1115:
21815|      0|	YYDEBUG(1115, *YYCURSOR);
21816|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21817|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21817:6): [True: 0, False: 0]
  ------------------
21818|      0|	if (yych <= '1') goto yy1182;
  ------------------
  |  Branch (21818:6): [True: 0, False: 0]
  ------------------
21819|      0|	if (yych <= '2') goto yy1183;
  ------------------
  |  Branch (21819:6): [True: 0, False: 0]
  ------------------
21820|      0|	if (yych <= '9') goto yy1184;
  ------------------
  |  Branch (21820:6): [True: 0, False: 0]
  ------------------
21821|      0|	goto yy59;
21822|      0|yy1116:
21823|      0|	YYDEBUG(1116, *YYCURSOR);
21824|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21825|      0|	if (yych == 'd') goto yy1185;
  ------------------
  |  Branch (21825:6): [True: 0, False: 0]
  ------------------
21826|      0|	goto yy59;
21827|      0|yy1117:
21828|      0|	YYDEBUG(1117, *YYCURSOR);
21829|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21830|      0|	if (yych == 't') goto yy1185;
  ------------------
  |  Branch (21830:6): [True: 0, False: 0]
  ------------------
21831|      0|	goto yy59;
21832|      0|yy1118:
21833|      0|	YYDEBUG(1118, *YYCURSOR);
21834|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21835|      0|	if (yych == 'h') goto yy1185;
  ------------------
  |  Branch (21835:6): [True: 0, False: 0]
  ------------------
21836|      0|	goto yy59;
21837|      0|yy1119:
21838|      0|	YYDEBUG(1119, *YYCURSOR);
21839|      0|	yyaccept = 15;
21840|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21841|      0|	if (yych <= 'm') {
  ------------------
  |  Branch (21841:6): [True: 0, False: 0]
  ------------------
21842|      0|		if (yych <= '9') {
  ------------------
  |  Branch (21842:7): [True: 0, False: 0]
  ------------------
21843|      0|			if (yych <= '/') goto yy567;
  ------------------
  |  Branch (21843:8): [True: 0, False: 0]
  ------------------
21844|      0|			goto yy1186;
21845|      0|		} else {
21846|      0|			if (yych == 'T') goto yy1115;
  ------------------
  |  Branch (21846:8): [True: 0, False: 0]
  ------------------
21847|      0|			goto yy567;
21848|      0|		}
21849|      0|	} else {
21850|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (21850:7): [True: 0, False: 0]
  ------------------
21851|      0|			if (yych <= 'n') goto yy1116;
  ------------------
  |  Branch (21851:8): [True: 0, False: 0]
  ------------------
21852|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (21852:8): [True: 0, False: 0]
  ------------------
21853|      0|			goto yy1116;
21854|      0|		} else {
21855|      0|			if (yych <= 's') goto yy1117;
  ------------------
  |  Branch (21855:8): [True: 0, False: 0]
  ------------------
21856|      0|			if (yych <= 't') goto yy1118;
  ------------------
  |  Branch (21856:8): [True: 0, False: 0]
  ------------------
21857|      0|			goto yy567;
21858|      0|		}
21859|      0|	}
21860|      1|yy1120:
21861|      1|	YYDEBUG(1120, *YYCURSOR);
21862|      1|	yyaccept = 15;
21863|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21864|      1|	if (yych <= 'm') {
  ------------------
  |  Branch (21864:6): [True: 0, False: 1]
  ------------------
21865|      0|		if (yych <= '1') {
  ------------------
  |  Branch (21865:7): [True: 0, False: 0]
  ------------------
21866|      0|			if (yych <= '/') goto yy567;
  ------------------
  |  Branch (21866:8): [True: 0, False: 0]
  ------------------
21867|      0|			goto yy1186;
21868|      0|		} else {
21869|      0|			if (yych == 'T') goto yy1115;
  ------------------
  |  Branch (21869:8): [True: 0, False: 0]
  ------------------
21870|      0|			goto yy567;
21871|      0|		}
21872|      1|	} else {
21873|      1|		if (yych <= 'r') {
  ------------------
  |  Branch (21873:7): [True: 0, False: 1]
  ------------------
21874|      0|			if (yych <= 'n') goto yy1116;
  ------------------
  |  Branch (21874:8): [True: 0, False: 0]
  ------------------
21875|      0|			if (yych <= 'q') goto yy567;
  ------------------
  |  Branch (21875:8): [True: 0, False: 0]
  ------------------
21876|      0|			goto yy1116;
21877|      1|		} else {
21878|      1|			if (yych <= 's') goto yy1117;
  ------------------
  |  Branch (21878:8): [True: 0, False: 1]
  ------------------
21879|      1|			if (yych <= 't') goto yy1118;
  ------------------
  |  Branch (21879:8): [True: 0, False: 1]
  ------------------
21880|      1|			goto yy567;
21881|      1|		}
21882|      1|	}
21883|      3|yy1121:
21884|      3|	YYDEBUG(1121, *YYCURSOR);
21885|      3|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      3|#define   YYCURSOR     cursor
  ------------------
21886|      3|	if (yych == 'd') goto yy1187;
  ------------------
  |  Branch (21886:6): [True: 0, False: 3]
  ------------------
21887|      3|	goto yy59;
21888|      3|yy1122:
21889|      0|	YYDEBUG(1122, *YYCURSOR);
21890|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21891|      0|	if (yych == 't') goto yy1187;
  ------------------
  |  Branch (21891:6): [True: 0, False: 0]
  ------------------
21892|      0|	goto yy59;
21893|      0|yy1123:
21894|      0|	YYDEBUG(1123, *YYCURSOR);
21895|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21896|      0|	if (yych == 'h') goto yy1187;
  ------------------
  |  Branch (21896:6): [True: 0, False: 0]
  ------------------
21897|      0|	goto yy59;
21898|      0|yy1124:
21899|      0|	YYDEBUG(1124, *YYCURSOR);
21900|      0|	yyaccept = 26;
21901|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21902|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (21902:6): [True: 0, False: 0]
  ------------------
21903|      0|		if (yych <= '/') goto yy1043;
  ------------------
  |  Branch (21903:7): [True: 0, False: 0]
  ------------------
21904|      0|		if (yych <= '9') goto yy1188;
  ------------------
  |  Branch (21904:7): [True: 0, False: 0]
  ------------------
21905|      0|		if (yych <= 'm') goto yy1043;
  ------------------
  |  Branch (21905:7): [True: 0, False: 0]
  ------------------
21906|      0|		goto yy1121;
21907|      0|	} else {
21908|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (21908:7): [True: 0, False: 0]
  ------------------
21909|      0|			if (yych <= 'q') goto yy1043;
  ------------------
  |  Branch (21909:8): [True: 0, False: 0]
  ------------------
21910|      0|			goto yy1121;
21911|      0|		} else {
21912|      0|			if (yych <= 's') goto yy1122;
  ------------------
  |  Branch (21912:8): [True: 0, False: 0]
  ------------------
21913|      0|			if (yych <= 't') goto yy1123;
  ------------------
  |  Branch (21913:8): [True: 0, False: 0]
  ------------------
21914|      0|			goto yy1043;
21915|      0|		}
21916|      0|	}
21917|      4|yy1125:
21918|      4|	YYDEBUG(1125, *YYCURSOR);
21919|      4|	yyaccept = 26;
21920|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
21921|      4|	if (yych <= 'n') {
  ------------------
  |  Branch (21921:6): [True: 1, False: 3]
  ------------------
21922|      1|		if (yych <= '/') goto yy1043;
  ------------------
  |  Branch (21922:7): [True: 0, False: 1]
  ------------------
21923|      1|		if (yych <= '1') goto yy1188;
  ------------------
  |  Branch (21923:7): [True: 0, False: 1]
  ------------------
21924|      1|		if (yych <= 'm') goto yy1043;
  ------------------
  |  Branch (21924:7): [True: 1, False: 0]
  ------------------
21925|      0|		goto yy1121;
21926|      3|	} else {
21927|      3|		if (yych <= 'r') {
  ------------------
  |  Branch (21927:7): [True: 3, False: 0]
  ------------------
21928|      3|			if (yych <= 'q') goto yy1043;
  ------------------
  |  Branch (21928:8): [True: 0, False: 3]
  ------------------
21929|      3|			goto yy1121;
21930|      3|		} else {
21931|      0|			if (yych <= 's') goto yy1122;
  ------------------
  |  Branch (21931:8): [True: 0, False: 0]
  ------------------
21932|      0|			if (yych <= 't') goto yy1123;
  ------------------
  |  Branch (21932:8): [True: 0, False: 0]
  ------------------
21933|      0|			goto yy1043;
21934|      0|		}
21935|      3|	}
21936|    305|yy1126:
21937|    305|	YYDEBUG(1126, *YYCURSOR);
21938|    305|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    305|#define   YYCURSOR     cursor
  ------------------
21939|    305|	if (yych <= 0xC1) {
  ------------------
  |  Branch (21939:6): [True: 297, False: 8]
  ------------------
21940|    297|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (21940:7): [True: 14, False: 283]
  ------------------
21941|    283|		if (yych <= '9') goto yy1189;
  ------------------
  |  Branch (21941:7): [True: 262, False: 21]
  ------------------
21942|     21|		goto yy196;
21943|    283|	} else {
21944|      8|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (21944:7): [True: 2, False: 6]
  ------------------
21945|      6|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (21945:7): [True: 1, False: 5]
  ------------------
21946|      5|		goto yy196;
21947|      6|	}
21948|      1|yy1127:
21949|      1|	YYDEBUG(1127, *YYCURSOR);
21950|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
21951|      1|	if (yych <= 'H') {
  ------------------
  |  Branch (21951:6): [True: 1, False: 0]
  ------------------
21952|      1|		if (yych <= '2') {
  ------------------
  |  Branch (21952:7): [True: 0, False: 1]
  ------------------
21953|      0|			if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21953:8): [True: 0, False: 0]
  ------------------
21954|      0|			if (yych <= '1') goto yy1190;
  ------------------
  |  Branch (21954:8): [True: 0, False: 0]
  ------------------
21955|      0|			goto yy1191;
21956|      1|		} else {
21957|      1|			if (yych <= '9') goto yy1192;
  ------------------
  |  Branch (21957:8): [True: 0, False: 1]
  ------------------
21958|      1|			if (yych <= 'G') goto yy59;
  ------------------
  |  Branch (21958:8): [True: 0, False: 1]
  ------------------
21959|      1|			goto yy266;
21960|      1|		}
21961|      1|	} else {
21962|      0|		if (yych <= 'g') {
  ------------------
  |  Branch (21962:7): [True: 0, False: 0]
  ------------------
21963|      0|			if (yych == 'U') goto yy267;
  ------------------
  |  Branch (21963:8): [True: 0, False: 0]
  ------------------
21964|      0|			goto yy59;
21965|      0|		} else {
21966|      0|			if (yych <= 'h') goto yy266;
  ------------------
  |  Branch (21966:8): [True: 0, False: 0]
  ------------------
21967|      0|			if (yych == 'u') goto yy267;
  ------------------
  |  Branch (21967:8): [True: 0, False: 0]
  ------------------
21968|      0|			goto yy59;
21969|      0|		}
21970|      0|	}
21971|      0|yy1128:
21972|      0|	YYDEBUG(1128, *YYCURSOR);
21973|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21974|      0|	if (yych <= 'H') {
  ------------------
  |  Branch (21974:6): [True: 0, False: 0]
  ------------------
21975|      0|		if (yych <= '2') {
  ------------------
  |  Branch (21975:7): [True: 0, False: 0]
  ------------------
21976|      0|			if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21976:8): [True: 0, False: 0]
  ------------------
21977|      0|			if (yych <= '1') goto yy1193;
  ------------------
  |  Branch (21977:8): [True: 0, False: 0]
  ------------------
21978|      0|			goto yy1194;
21979|      0|		} else {
21980|      0|			if (yych <= '9') goto yy1195;
  ------------------
  |  Branch (21980:8): [True: 0, False: 0]
  ------------------
21981|      0|			if (yych <= 'G') goto yy59;
  ------------------
  |  Branch (21981:8): [True: 0, False: 0]
  ------------------
21982|      0|			goto yy266;
21983|      0|		}
21984|      0|	} else {
21985|      0|		if (yych <= 'g') {
  ------------------
  |  Branch (21985:7): [True: 0, False: 0]
  ------------------
21986|      0|			if (yych == 'U') goto yy267;
  ------------------
  |  Branch (21986:8): [True: 0, False: 0]
  ------------------
21987|      0|			goto yy59;
21988|      0|		} else {
21989|      0|			if (yych <= 'h') goto yy266;
  ------------------
  |  Branch (21989:8): [True: 0, False: 0]
  ------------------
21990|      0|			if (yych == 'u') goto yy267;
  ------------------
  |  Branch (21990:8): [True: 0, False: 0]
  ------------------
21991|      0|			goto yy59;
21992|      0|		}
21993|      0|	}
21994|      0|yy1129:
21995|      0|	YYDEBUG(1129, *YYCURSOR);
21996|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
21997|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (21997:6): [True: 0, False: 0]
  ------------------
21998|      0|	if (yych <= '9') goto yy1196;
  ------------------
  |  Branch (21998:6): [True: 0, False: 0]
  ------------------
21999|      0|	goto yy59;
22000|      0|yy1130:
22001|      0|	YYDEBUG(1130, *YYCURSOR);
22002|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22003|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22003:6): [True: 0, False: 0]
  ------------------
22004|      0|	if (yych <= '1') goto yy1196;
  ------------------
  |  Branch (22004:6): [True: 0, False: 0]
  ------------------
22005|      0|	goto yy59;
22006|      0|yy1131:
22007|      0|	YYDEBUG(1131, *YYCURSOR);
22008|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22009|      0|	if (yych == 'T') goto yy790;
  ------------------
  |  Branch (22009:6): [True: 0, False: 0]
  ------------------
22010|      0|	if (yych == 't') goto yy790;
  ------------------
  |  Branch (22010:6): [True: 0, False: 0]
  ------------------
22011|      0|	goto yy59;
22012|      0|yy1132:
22013|      0|	YYDEBUG(1132, *YYCURSOR);
22014|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22015|      0|	if (yych == 'R') goto yy1197;
  ------------------
  |  Branch (22015:6): [True: 0, False: 0]
  ------------------
22016|      0|	if (yych == 'r') goto yy1197;
  ------------------
  |  Branch (22016:6): [True: 0, False: 0]
  ------------------
22017|      0|	goto yy59;
22018|      0|yy1133:
22019|      0|	YYDEBUG(1133, *YYCURSOR);
22020|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22021|      0|	if (yych == 'E') goto yy1198;
  ------------------
  |  Branch (22021:6): [True: 0, False: 0]
  ------------------
22022|      0|	if (yych == 'e') goto yy1198;
  ------------------
  |  Branch (22022:6): [True: 0, False: 0]
  ------------------
22023|      0|	goto yy59;
22024|      0|yy1134:
22025|      0|	YYDEBUG(1134, *YYCURSOR);
22026|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22027|      0|	if (yych == 'T') goto yy425;
  ------------------
  |  Branch (22027:6): [True: 0, False: 0]
  ------------------
22028|      0|	if (yych == 't') goto yy425;
  ------------------
  |  Branch (22028:6): [True: 0, False: 0]
  ------------------
22029|      0|	goto yy59;
22030|      0|yy1135:
22031|      0|	YYDEBUG(1135, *YYCURSOR);
22032|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22033|      0|	if (yych == 'O') goto yy628;
  ------------------
  |  Branch (22033:6): [True: 0, False: 0]
  ------------------
22034|      0|	if (yych == 'o') goto yy628;
  ------------------
  |  Branch (22034:6): [True: 0, False: 0]
  ------------------
22035|      0|	goto yy59;
22036|      0|yy1136:
22037|      0|	YYDEBUG(1136, *YYCURSOR);
22038|      0|	yyaccept = 4;
22039|      0|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22040|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22040:6): [True: 0, False: 0]
  ------------------
22041|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22042|      0|	YYDEBUG(1137, *YYCURSOR);
22043|      0|	if (yych <= 'O') {
  ------------------
  |  Branch (22043:6): [True: 0, False: 0]
  ------------------
22044|      0|		if (yych <= '9') {
  ------------------
  |  Branch (22044:7): [True: 0, False: 0]
  ------------------
22045|      0|			if (yych <= '/') goto yy177;
  ------------------
  |  Branch (22045:8): [True: 0, False: 0]
  ------------------
22046|      0|			goto yy1136;
22047|      0|		} else {
22048|      0|			if (yych == 'A') goto yy1199;
  ------------------
  |  Branch (22048:8): [True: 0, False: 0]
  ------------------
22049|      0|			goto yy177;
22050|      0|		}
22051|      0|	} else {
22052|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (22052:7): [True: 0, False: 0]
  ------------------
22053|      0|			if (yych <= 'P') goto yy1199;
  ------------------
  |  Branch (22053:8): [True: 0, False: 0]
  ------------------
22054|      0|			if (yych <= '`') goto yy177;
  ------------------
  |  Branch (22054:8): [True: 0, False: 0]
  ------------------
22055|      0|			goto yy1199;
22056|      0|		} else {
22057|      0|			if (yych == 'p') goto yy1199;
  ------------------
  |  Branch (22057:8): [True: 0, False: 0]
  ------------------
22058|      0|			goto yy177;
22059|      0|		}
22060|      0|	}
22061|      0|yy1138:
22062|      0|	YYDEBUG(1138, *YYCURSOR);
22063|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22064|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22064:6): [True: 0, False: 0]
  ------------------
22065|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22066|      0|	YYDEBUG(1139, *YYCURSOR);
22067|      0|	if (yych <= 'O') {
  ------------------
  |  Branch (22067:6): [True: 0, False: 0]
  ------------------
22068|      0|		if (yych <= '9') {
  ------------------
  |  Branch (22068:7): [True: 0, False: 0]
  ------------------
22069|      0|			if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22069:8): [True: 0, False: 0]
  ------------------
22070|      0|			goto yy1138;
22071|      0|		} else {
22072|      0|			if (yych == 'A') goto yy1199;
  ------------------
  |  Branch (22072:8): [True: 0, False: 0]
  ------------------
22073|      0|			goto yy59;
22074|      0|		}
22075|      0|	} else {
22076|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (22076:7): [True: 0, False: 0]
  ------------------
22077|      0|			if (yych <= 'P') goto yy1199;
  ------------------
  |  Branch (22077:8): [True: 0, False: 0]
  ------------------
22078|      0|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (22078:8): [True: 0, False: 0]
  ------------------
22079|      0|			goto yy1199;
22080|      0|		} else {
22081|      0|			if (yych == 'p') goto yy1199;
  ------------------
  |  Branch (22081:8): [True: 0, False: 0]
  ------------------
22082|      0|			goto yy59;
22083|      0|		}
22084|      0|	}
22085|      2|yy1140:
22086|      2|	YYDEBUG(1140, *YYCURSOR);
22087|      2|	++YYCURSOR;
  ------------------
  |  |   89|      2|#define   YYCURSOR     cursor
  ------------------
22088|      2|	YYDEBUG(1141, *YYCURSOR);
22089|      2|#line 1762 "ext/date/lib/parse_date.re"
22090|      2|	{
22091|      2|		int length = 0;
22092|      2|		DEBUG_OUTPUT("pgtextreverse");
22093|      2|		TIMELIB_INIT;
  ------------------
  |  |  107|      2|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
22094|      2|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      2|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      1|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      1|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      1|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 1, False: 1]
  |  |  ------------------
  ------------------
22095|      1|		s->time->y = timelib_get_nr_ex(&ptr, 4, &length);
22096|      1|		s->time->m = timelib_get_month(&ptr);
22097|      1|		s->time->d = timelib_get_nr(&ptr, 2);
22098|      1|		TIMELIB_PROCESS_YEAR(s->time->y, length);
  ------------------
  |  |  111|      1|#define TIMELIB_PROCESS_YEAR(x, l) { \
  |  |  112|      1|	if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
  |  |  ------------------
  |  |  |  |  382|      1|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  |  |  Branch (112:6): [True: 0, False: 1]
  |  |  |  Branch (112:32): [True: 0, False: 1]
  |  |  ------------------
  |  |  113|      0|	/*	(x) = 0; */          \
  |  |  114|      1|	} else if ((x) < 100) {  \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  115|      0|		if ((x) < 70) {      \
  |  |  ------------------
  |  |  |  Branch (115:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  116|      0|			(x) += 2000;     \
  |  |  117|      0|		} else {             \
  |  |  118|      0|			(x) += 1900;     \
  |  |  119|      0|		}                    \
  |  |  120|      0|	}                        \
  |  |  121|      1|}
  ------------------
22099|      1|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      1|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      1|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22100|      1|		return TIMELIB_PG_TEXT;
  ------------------
  |  |   64|      1|#define TIMELIB_PG_TEXT        272
  ------------------
22101|      2|	}
22102|      0|#line 22103 "ext/date/lib/parse_date.c"
22103|      0|yy1142:
22104|      0|	YYDEBUG(1142, *YYCURSOR);
22105|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22106|      0|	goto yy290;
22107|      0|yy1143:
22108|      0|	YYDEBUG(1143, *YYCURSOR);
22109|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22110|      0|	if (yych <= '/') goto yy1070;
  ------------------
  |  Branch (22110:6): [True: 0, False: 0]
  ------------------
22111|      0|	if (yych <= '9') goto yy1200;
  ------------------
  |  Branch (22111:6): [True: 0, False: 0]
  ------------------
22112|      0|	goto yy1070;
22113|      0|yy1144:
22114|      0|	YYDEBUG(1144, *YYCURSOR);
22115|      0|	yyaccept = 29;
22116|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22117|      0|	if (yych <= 'O') {
  ------------------
  |  Branch (22117:6): [True: 0, False: 0]
  ------------------
22118|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (22118:7): [True: 0, False: 0]
  ------------------
22119|      0|			if (yych == '\t') goto yy1201;
  ------------------
  |  Branch (22119:8): [True: 0, False: 0]
  ------------------
22120|      0|			if (yych >= ' ') goto yy1201;
  ------------------
  |  Branch (22120:8): [True: 0, False: 0]
  ------------------
22121|      0|		} else {
22122|      0|			if (yych <= '9') {
  ------------------
  |  Branch (22122:8): [True: 0, False: 0]
  ------------------
22123|      0|				if (yych >= '0') goto yy1147;
  ------------------
  |  Branch (22123:9): [True: 0, False: 0]
  ------------------
22124|      0|			} else {
22125|      0|				if (yych == 'A') goto yy1203;
  ------------------
  |  Branch (22125:9): [True: 0, False: 0]
  ------------------
22126|      0|			}
22127|      0|		}
22128|      0|	} else {
22129|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (22129:7): [True: 0, False: 0]
  ------------------
22130|      0|			if (yych <= '`') {
  ------------------
  |  Branch (22130:8): [True: 0, False: 0]
  ------------------
22131|      0|				if (yych <= 'P') goto yy1203;
  ------------------
  |  Branch (22131:9): [True: 0, False: 0]
  ------------------
22132|      0|			} else {
22133|      0|				if (yych <= 'a') goto yy1203;
  ------------------
  |  Branch (22133:9): [True: 0, False: 0]
  ------------------
22134|      0|				if (yych >= 'p') goto yy1203;
  ------------------
  |  Branch (22134:9): [True: 0, False: 0]
  ------------------
22135|      0|			}
22136|      0|		} else {
22137|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (22137:8): [True: 0, False: 0]
  ------------------
22138|      0|				if (yych >= 0xC2) goto yy1204;
  ------------------
  |  Branch (22138:9): [True: 0, False: 0]
  ------------------
22139|      0|			} else {
22140|      0|				if (yych == 0xE2) goto yy1205;
  ------------------
  |  Branch (22140:9): [True: 0, False: 0]
  ------------------
22141|      0|			}
22142|      0|		}
22143|      0|	}
22144|      0|yy1145:
22145|      0|	YYDEBUG(1145, *YYCURSOR);
22146|      0|#line 1304 "ext/date/lib/parse_date.re"
22147|      0|	{
22148|      0|		DEBUG_OUTPUT("backof | frontof");
22149|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
22150|      0|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
22151|      0|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      0|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
22152|       |
22153|      0|		if (*ptr == 'b') {
  ------------------
  |  Branch (22153:7): [True: 0, False: 0]
  ------------------
22154|      0|			s->time->h = timelib_get_nr(&ptr, 2);
22155|      0|			s->time->i = 15;
22156|      0|		} else {
22157|      0|			s->time->h = timelib_get_nr(&ptr, 2) - 1;
22158|      0|			s->time->i = 45;
22159|      0|		}
22160|      0|		if (*ptr != '\0' ) {
  ------------------
  |  Branch (22160:7): [True: 0, False: 0]
  ------------------
22161|      0|			timelib_eat_spaces(&ptr);
22162|      0|			s->time->h += timelib_meridian(&ptr, s->time->h);
22163|      0|		}
22164|       |
22165|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22166|      0|		return TIMELIB_LF_DAY_OF_MONTH;
  ------------------
  |  |   72|      0|#define TIMELIB_LF_DAY_OF_MONTH 280
  ------------------
22167|      0|	}
22168|      0|#line 22169 "ext/date/lib/parse_date.c"
22169|      0|yy1146:
22170|      0|	YYDEBUG(1146, *YYCURSOR);
22171|      0|	yyaccept = 29;
22172|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22173|      0|	if (yych <= 'O') {
  ------------------
  |  Branch (22173:6): [True: 0, False: 0]
  ------------------
22174|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (22174:7): [True: 0, False: 0]
  ------------------
22175|      0|			if (yych == '\t') goto yy1201;
  ------------------
  |  Branch (22175:8): [True: 0, False: 0]
  ------------------
22176|      0|			if (yych <= 0x1F) goto yy1145;
  ------------------
  |  Branch (22176:8): [True: 0, False: 0]
  ------------------
22177|      0|			goto yy1201;
22178|      0|		} else {
22179|      0|			if (yych <= '4') {
  ------------------
  |  Branch (22179:8): [True: 0, False: 0]
  ------------------
22180|      0|				if (yych <= '/') goto yy1145;
  ------------------
  |  Branch (22180:9): [True: 0, False: 0]
  ------------------
22181|      0|			} else {
22182|      0|				if (yych == 'A') goto yy1203;
  ------------------
  |  Branch (22182:9): [True: 0, False: 0]
  ------------------
22183|      0|				goto yy1145;
22184|      0|			}
22185|      0|		}
22186|      0|	} else {
22187|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (22187:7): [True: 0, False: 0]
  ------------------
22188|      0|			if (yych <= '`') {
  ------------------
  |  Branch (22188:8): [True: 0, False: 0]
  ------------------
22189|      0|				if (yych <= 'P') goto yy1203;
  ------------------
  |  Branch (22189:9): [True: 0, False: 0]
  ------------------
22190|      0|				goto yy1145;
22191|      0|			} else {
22192|      0|				if (yych <= 'a') goto yy1203;
  ------------------
  |  Branch (22192:9): [True: 0, False: 0]
  ------------------
22193|      0|				if (yych <= 'o') goto yy1145;
  ------------------
  |  Branch (22193:9): [True: 0, False: 0]
  ------------------
22194|      0|				goto yy1203;
22195|      0|			}
22196|      0|		} else {
22197|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (22197:8): [True: 0, False: 0]
  ------------------
22198|      0|				if (yych <= 0xC1) goto yy1145;
  ------------------
  |  Branch (22198:9): [True: 0, False: 0]
  ------------------
22199|      0|				goto yy1204;
22200|      0|			} else {
22201|      0|				if (yych == 0xE2) goto yy1205;
  ------------------
  |  Branch (22201:9): [True: 0, False: 0]
  ------------------
22202|      0|				goto yy1145;
22203|      0|			}
22204|      0|		}
22205|      0|	}
22206|      0|yy1147:
22207|      0|	YYDEBUG(1147, *YYCURSOR);
22208|      0|	yyaccept = 29;
22209|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22210|      0|	if (yych <= 'P') {
  ------------------
  |  Branch (22210:6): [True: 0, False: 0]
  ------------------
22211|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (22211:7): [True: 0, False: 0]
  ------------------
22212|      0|			if (yych == '\t') goto yy1201;
  ------------------
  |  Branch (22212:8): [True: 0, False: 0]
  ------------------
22213|      0|			if (yych <= 0x1F) goto yy1145;
  ------------------
  |  Branch (22213:8): [True: 0, False: 0]
  ------------------
22214|      0|			goto yy1201;
22215|      0|		} else {
22216|      0|			if (yych == 'A') goto yy1203;
  ------------------
  |  Branch (22216:8): [True: 0, False: 0]
  ------------------
22217|      0|			if (yych <= 'O') goto yy1145;
  ------------------
  |  Branch (22217:8): [True: 0, False: 0]
  ------------------
22218|      0|			goto yy1203;
22219|      0|		}
22220|      0|	} else {
22221|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (22221:7): [True: 0, False: 0]
  ------------------
22222|      0|			if (yych == 'a') goto yy1203;
  ------------------
  |  Branch (22222:8): [True: 0, False: 0]
  ------------------
22223|      0|			if (yych <= 'o') goto yy1145;
  ------------------
  |  Branch (22223:8): [True: 0, False: 0]
  ------------------
22224|      0|			goto yy1203;
22225|      0|		} else {
22226|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (22226:8): [True: 0, False: 0]
  ------------------
22227|      0|				if (yych <= 0xC1) goto yy1145;
  ------------------
  |  Branch (22227:9): [True: 0, False: 0]
  ------------------
22228|      0|				goto yy1204;
22229|      0|			} else {
22230|      0|				if (yych == 0xE2) goto yy1205;
  ------------------
  |  Branch (22230:9): [True: 0, False: 0]
  ------------------
22231|      0|				goto yy1145;
22232|      0|			}
22233|      0|		}
22234|      0|	}
22235|      0|yy1148:
22236|      0|	YYDEBUG(1148, *YYCURSOR);
22237|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22238|      0|	if (yych == 'K') goto yy1206;
  ------------------
  |  Branch (22238:6): [True: 0, False: 0]
  ------------------
22239|      0|	if (yych == 'k') goto yy1206;
  ------------------
  |  Branch (22239:6): [True: 0, False: 0]
  ------------------
22240|      0|	goto yy59;
22241|      0|yy1149:
22242|      0|	YYDEBUG(1149, *YYCURSOR);
22243|      0|	yyaccept = 20;
22244|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22245|      0|	if (yych <= ',') {
  ------------------
  |  Branch (22245:6): [True: 0, False: 0]
  ------------------
22246|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (22246:7): [True: 0, False: 0]
  ------------------
22247|      0|			if (yych == '\t') goto yy1208;
  ------------------
  |  Branch (22247:8): [True: 0, False: 0]
  ------------------
22248|      0|			if (yych <= 0x1F) goto yy849;
  ------------------
  |  Branch (22248:8): [True: 0, False: 0]
  ------------------
22249|      0|			goto yy1208;
22250|      0|		} else {
22251|      0|			if (yych <= '(') {
  ------------------
  |  Branch (22251:8): [True: 0, False: 0]
  ------------------
22252|      0|				if (yych <= '\'') goto yy849;
  ------------------
  |  Branch (22252:9): [True: 0, False: 0]
  ------------------
22253|      0|				goto yy1208;
22254|      0|			} else {
22255|      0|				if (yych == '+') goto yy1208;
  ------------------
  |  Branch (22255:9): [True: 0, False: 0]
  ------------------
22256|      0|				goto yy849;
22257|      0|			}
22258|      0|		}
22259|      0|	} else {
22260|      0|		if (yych <= 'z') {
  ------------------
  |  Branch (22260:7): [True: 0, False: 0]
  ------------------
22261|      0|			if (yych <= '@') {
  ------------------
  |  Branch (22261:8): [True: 0, False: 0]
  ------------------
22262|      0|				if (yych <= '-') goto yy1208;
  ------------------
  |  Branch (22262:9): [True: 0, False: 0]
  ------------------
22263|      0|				goto yy849;
22264|      0|			} else {
22265|      0|				if (yych <= 'Z') goto yy1208;
  ------------------
  |  Branch (22265:9): [True: 0, False: 0]
  ------------------
22266|      0|				if (yych <= '`') goto yy849;
  ------------------
  |  Branch (22266:9): [True: 0, False: 0]
  ------------------
22267|      0|				goto yy1208;
22268|      0|			}
22269|      0|		} else {
22270|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (22270:8): [True: 0, False: 0]
  ------------------
22271|      0|				if (yych <= 0xC1) goto yy849;
  ------------------
  |  Branch (22271:9): [True: 0, False: 0]
  ------------------
22272|      0|				goto yy1214;
22273|      0|			} else {
22274|      0|				if (yych == 0xE2) goto yy1215;
  ------------------
  |  Branch (22274:9): [True: 0, False: 0]
  ------------------
22275|      0|				goto yy849;
22276|      0|			}
22277|      0|		}
22278|      0|	}
22279|      4|yy1150:
22280|      4|	YYDEBUG(1150, *YYCURSOR);
22281|      4|	yyaccept = 20;
22282|      4|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      4|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      4|#define   YYCURSOR     cursor
  ------------------
22283|      4|	if (yych <= ',') {
  ------------------
  |  Branch (22283:6): [True: 4, False: 0]
  ------------------
22284|      4|		if (yych <= ' ') {
  ------------------
  |  Branch (22284:7): [True: 4, False: 0]
  ------------------
22285|      4|			if (yych == '\t') goto yy1217;
  ------------------
  |  Branch (22285:8): [True: 0, False: 4]
  ------------------
22286|      4|			if (yych <= 0x1F) goto yy849;
  ------------------
  |  Branch (22286:8): [True: 0, False: 4]
  ------------------
22287|      4|			goto yy1217;
22288|      4|		} else {
22289|      0|			if (yych <= '(') {
  ------------------
  |  Branch (22289:8): [True: 0, False: 0]
  ------------------
22290|      0|				if (yych <= '\'') goto yy849;
  ------------------
  |  Branch (22290:9): [True: 0, False: 0]
  ------------------
22291|      0|				goto yy1217;
22292|      0|			} else {
22293|      0|				if (yych == '+') goto yy1217;
  ------------------
  |  Branch (22293:9): [True: 0, False: 0]
  ------------------
22294|      0|				goto yy849;
22295|      0|			}
22296|      0|		}
22297|      4|	} else {
22298|      0|		if (yych <= 'z') {
  ------------------
  |  Branch (22298:7): [True: 0, False: 0]
  ------------------
22299|      0|			if (yych <= '@') {
  ------------------
  |  Branch (22299:8): [True: 0, False: 0]
  ------------------
22300|      0|				if (yych <= '-') goto yy1217;
  ------------------
  |  Branch (22300:9): [True: 0, False: 0]
  ------------------
22301|      0|				goto yy849;
22302|      0|			} else {
22303|      0|				if (yych <= 'Z') goto yy1217;
  ------------------
  |  Branch (22303:9): [True: 0, False: 0]
  ------------------
22304|      0|				if (yych <= '`') goto yy849;
  ------------------
  |  Branch (22304:9): [True: 0, False: 0]
  ------------------
22305|      0|				goto yy1217;
22306|      0|			}
22307|      0|		} else {
22308|      0|			if (yych <= 0xC2) {
  ------------------
  |  Branch (22308:8): [True: 0, False: 0]
  ------------------
22309|      0|				if (yych <= 0xC1) goto yy849;
  ------------------
  |  Branch (22309:9): [True: 0, False: 0]
  ------------------
22310|      0|				goto yy1220;
22311|      0|			} else {
22312|      0|				if (yych == 0xE2) goto yy1221;
  ------------------
  |  Branch (22312:9): [True: 0, False: 0]
  ------------------
22313|      0|				goto yy849;
22314|      0|			}
22315|      0|		}
22316|      0|	}
22317|      0|yy1151:
22318|      0|	YYDEBUG(1151, *YYCURSOR);
22319|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22320|      0|	if (yych == 'M') goto yy1152;
  ------------------
  |  Branch (22320:6): [True: 0, False: 0]
  ------------------
22321|      0|	if (yych != 'm') goto yy59;
  ------------------
  |  Branch (22321:6): [True: 0, False: 0]
  ------------------
22322|      1|yy1152:
22323|      1|	YYDEBUG(1152, *YYCURSOR);
22324|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
22325|      1|	if (yych <= 0x1F) {
  ------------------
  |  Branch (22325:6): [True: 0, False: 1]
  ------------------
22326|      0|		if (yych <= 0x00) goto yy1222;
  ------------------
  |  Branch (22326:7): [True: 0, False: 0]
  ------------------
22327|      0|		if (yych == '\t') goto yy1222;
  ------------------
  |  Branch (22327:7): [True: 0, False: 0]
  ------------------
22328|      0|		goto yy59;
22329|      1|	} else {
22330|      1|		if (yych <= ' ') goto yy1222;
  ------------------
  |  Branch (22330:7): [True: 0, False: 1]
  ------------------
22331|      1|		if (yych == '.') goto yy1224;
  ------------------
  |  Branch (22331:7): [True: 0, False: 1]
  ------------------
22332|      1|		goto yy59;
22333|      1|	}
22334|      0|yy1153:
22335|      0|	YYDEBUG(1153, *YYCURSOR);
22336|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22337|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22337:6): [True: 0, False: 0]
  ------------------
22338|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22339|      0|	if (yych <= '`') {
  ------------------
  |  Branch (22339:6): [True: 0, False: 0]
  ------------------
22340|      0|		if (yych <= 'A') {
  ------------------
  |  Branch (22340:7): [True: 0, False: 0]
  ------------------
22341|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (22341:8): [True: 0, False: 0]
  ------------------
22342|      0|			goto yy1083;
22343|      0|		} else {
22344|      0|			if (yych == 'P') goto yy1083;
  ------------------
  |  Branch (22344:8): [True: 0, False: 0]
  ------------------
22345|      0|			goto yy59;
22346|      0|		}
22347|      0|	} else {
22348|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (22348:7): [True: 0, False: 0]
  ------------------
22349|      0|			if (yych <= 'a') goto yy1083;
  ------------------
  |  Branch (22349:8): [True: 0, False: 0]
  ------------------
22350|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (22350:8): [True: 0, False: 0]
  ------------------
22351|      0|			goto yy1083;
22352|      0|		} else {
22353|      0|			if (yych == 0xC2) goto yy1084;
  ------------------
  |  Branch (22353:8): [True: 0, False: 0]
  ------------------
22354|      0|			goto yy59;
22355|      0|		}
22356|      0|	}
22357|      0|yy1154:
22358|      0|	YYDEBUG(1154, *YYCURSOR);
22359|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22360|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22360:6): [True: 0, False: 0]
  ------------------
22361|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22362|      0|	if (yych == 0xAF) goto yy1225;
  ------------------
  |  Branch (22362:6): [True: 0, False: 0]
  ------------------
22363|      0|	goto yy59;
22364|      0|yy1155:
22365|      0|	YYDEBUG(1155, *YYCURSOR);
22366|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22367|      0|	goto yy982;
22368|      0|yy1156:
22369|      0|	YYDEBUG(1156, *YYCURSOR);
22370|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22371|      0|	if (yych <= 'N') {
  ------------------
  |  Branch (22371:6): [True: 0, False: 0]
  ------------------
22372|      0|		if (yych == 'H') goto yy1226;
  ------------------
  |  Branch (22372:7): [True: 0, False: 0]
  ------------------
22373|      0|		if (yych <= 'M') goto yy59;
  ------------------
  |  Branch (22373:7): [True: 0, False: 0]
  ------------------
22374|      0|		goto yy1227;
22375|      0|	} else {
22376|      0|		if (yych <= 'h') {
  ------------------
  |  Branch (22376:7): [True: 0, False: 0]
  ------------------
22377|      0|			if (yych <= 'g') goto yy59;
  ------------------
  |  Branch (22377:8): [True: 0, False: 0]
  ------------------
22378|      0|			goto yy1226;
22379|      0|		} else {
22380|      0|			if (yych == 'n') goto yy1227;
  ------------------
  |  Branch (22380:8): [True: 0, False: 0]
  ------------------
22381|      0|			goto yy59;
22382|      0|		}
22383|      0|	}
22384|      0|yy1157:
22385|      0|	YYDEBUG(1157, *YYCURSOR);
22386|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22387|      0|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22387:6): [True: 0, False: 0]
  ------------------
22388|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22389|      0|	YYDEBUG(1158, *YYCURSOR);
22390|      0|	if (yych <= ' ') {
  ------------------
  |  Branch (22390:6): [True: 0, False: 0]
  ------------------
22391|      0|		if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (22391:7): [True: 0, False: 0]
  ------------------
22392|      0|		if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (22392:7): [True: 0, False: 0]
  ------------------
22393|      0|		goto yy1157;
22394|      0|	} else {
22395|      0|		if (yych <= 'O') {
  ------------------
  |  Branch (22395:7): [True: 0, False: 0]
  ------------------
22396|      0|			if (yych <= 'N') goto yy59;
  ------------------
  |  Branch (22396:8): [True: 0, False: 0]
  ------------------
22397|      0|			goto yy1228;
22398|      0|		} else {
22399|      0|			if (yych == 'o') goto yy1228;
  ------------------
  |  Branch (22399:8): [True: 0, False: 0]
  ------------------
22400|      0|			goto yy59;
22401|      0|		}
22402|      0|	}
22403|      0|yy1159:
22404|      0|	YYDEBUG(1159, *YYCURSOR);
22405|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22406|      0|	if (yych == 'A') goto yy1229;
  ------------------
  |  Branch (22406:6): [True: 0, False: 0]
  ------------------
22407|      0|	if (yych == 'a') goto yy1229;
  ------------------
  |  Branch (22407:6): [True: 0, False: 0]
  ------------------
22408|      0|	goto yy59;
22409|      0|yy1160:
22410|      0|	YYDEBUG(1160, *YYCURSOR);
22411|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22412|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22412:6): [True: 0, False: 0]
  ------------------
22413|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22414|      0|	if (yych == 0xA0) goto yy1230;
  ------------------
  |  Branch (22414:6): [True: 0, False: 0]
  ------------------
22415|      0|	goto yy59;
22416|      0|yy1161:
22417|      0|	YYDEBUG(1161, *YYCURSOR);
22418|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22419|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22419:6): [True: 0, False: 0]
  ------------------
22420|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22421|      0|	if (yych == 0x80) goto yy1231;
  ------------------
  |  Branch (22421:6): [True: 0, False: 0]
  ------------------
22422|      0|	goto yy59;
22423|      0|yy1162:
22424|      0|	YYDEBUG(1162, *YYCURSOR);
22425|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22426|      0|	if (yych == 'O') goto yy1232;
  ------------------
  |  Branch (22426:6): [True: 0, False: 0]
  ------------------
22427|      0|	if (yych == 'o') goto yy1232;
  ------------------
  |  Branch (22427:6): [True: 0, False: 0]
  ------------------
22428|      0|	goto yy59;
22429|      0|yy1163:
22430|      0|	YYDEBUG(1163, *YYCURSOR);
22431|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22432|      0|	if (yych == 'I') goto yy1232;
  ------------------
  |  Branch (22432:6): [True: 0, False: 0]
  ------------------
22433|      0|	if (yych == 'i') goto yy1232;
  ------------------
  |  Branch (22433:6): [True: 0, False: 0]
  ------------------
22434|      0|	goto yy59;
22435|      0|yy1164:
22436|      0|	YYDEBUG(1164, *YYCURSOR);
22437|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22438|      0|	if (yych == 'T') goto yy1233;
  ------------------
  |  Branch (22438:6): [True: 0, False: 0]
  ------------------
22439|      0|	if (yych == 't') goto yy1233;
  ------------------
  |  Branch (22439:6): [True: 0, False: 0]
  ------------------
22440|      0|	goto yy59;
22441|      0|yy1165:
22442|      0|	YYDEBUG(1165, *YYCURSOR);
22443|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22444|      0|	if (yych == 'H') goto yy1086;
  ------------------
  |  Branch (22444:6): [True: 0, False: 0]
  ------------------
22445|      0|	if (yych == 'h') goto yy1086;
  ------------------
  |  Branch (22445:6): [True: 0, False: 0]
  ------------------
22446|      0|	goto yy59;
22447|      0|yy1166:
22448|      0|	YYDEBUG(1166, *YYCURSOR);
22449|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22450|      0|	if (yych == 'R') goto yy1169;
  ------------------
  |  Branch (22450:6): [True: 0, False: 0]
  ------------------
22451|      0|	if (yych == 'r') goto yy1169;
  ------------------
  |  Branch (22451:6): [True: 0, False: 0]
  ------------------
22452|      0|	goto yy59;
22453|      0|yy1167:
22454|      0|	YYDEBUG(1167, *YYCURSOR);
22455|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22456|      0|	if (yych == 'N') goto yy1234;
  ------------------
  |  Branch (22456:6): [True: 0, False: 0]
  ------------------
22457|      0|	if (yych == 'n') goto yy1234;
  ------------------
  |  Branch (22457:6): [True: 0, False: 0]
  ------------------
22458|      0|	goto yy59;
22459|      0|yy1168:
22460|      0|	YYDEBUG(1168, *YYCURSOR);
22461|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22462|      0|	if (yych == 'S') goto yy1169;
  ------------------
  |  Branch (22462:6): [True: 0, False: 0]
  ------------------
22463|      0|	if (yych != 's') goto yy59;
  ------------------
  |  Branch (22463:6): [True: 0, False: 0]
  ------------------
22464|      0|yy1169:
22465|      0|	YYDEBUG(1169, *YYCURSOR);
22466|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22467|      0|	if (yych == 'D') goto yy1159;
  ------------------
  |  Branch (22467:6): [True: 0, False: 0]
  ------------------
22468|      0|	if (yych == 'd') goto yy1159;
  ------------------
  |  Branch (22468:6): [True: 0, False: 0]
  ------------------
22469|      0|	goto yy59;
22470|      0|yy1170:
22471|      0|	YYDEBUG(1170, *YYCURSOR);
22472|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22473|      0|	if (yych == 'E') goto yy1168;
  ------------------
  |  Branch (22473:6): [True: 0, False: 0]
  ------------------
22474|      0|	if (yych == 'e') goto yy1168;
  ------------------
  |  Branch (22474:6): [True: 0, False: 0]
  ------------------
22475|      0|	goto yy59;
22476|      0|yy1171:
22477|      0|	YYDEBUG(1171, *YYCURSOR);
22478|      0|	yyaccept = 30;
22479|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22480|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (22480:6): [True: 0, False: 0]
  ------------------
22481|      0|		if (yych == 'D') goto yy856;
  ------------------
  |  Branch (22481:7): [True: 0, False: 0]
  ------------------
22482|      0|		if (yych >= 'S') goto yy1155;
  ------------------
  |  Branch (22482:7): [True: 0, False: 0]
  ------------------
22483|      0|	} else {
22484|      0|		if (yych <= 'd') {
  ------------------
  |  Branch (22484:7): [True: 0, False: 0]
  ------------------
22485|      0|			if (yych >= 'd') goto yy856;
  ------------------
  |  Branch (22485:8): [True: 0, False: 0]
  ------------------
22486|      0|		} else {
22487|      0|			if (yych == 's') goto yy1155;
  ------------------
  |  Branch (22487:8): [True: 0, False: 0]
  ------------------
22488|      0|		}
22489|      0|	}
22490|      0|yy1172:
22491|      0|	YYDEBUG(1172, *YYCURSOR);
22492|      0|#line 1848 "ext/date/lib/parse_date.re"
22493|      0|	{
22494|      0|		timelib_sll i;
22495|      0|		int         behavior = 0;
22496|      0|		DEBUG_OUTPUT("relativetextweek");
22497|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
22498|      0|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      0|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
22499|       |
22500|      0|		while(*ptr) {
  ------------------
  |  Branch (22500:9): [True: 0, False: 0]
  ------------------
22501|      0|			i = timelib_get_relative_text(&ptr, &behavior);
22502|      0|			timelib_eat_spaces(&ptr);
22503|      0|			timelib_set_relative(&ptr, i, behavior, s, TIMELIB_TIME_PART_DONT_KEEP);
  ------------------
  |  |   84|      0|#define TIMELIB_TIME_PART_DONT_KEEP               0x00
  ------------------
22504|      0|			s->time->relative.weekday_behavior = 2;
22505|       |
22506|       |			/* to handle the format weekday + last/this/next week */
22507|      0|			if (s->time->relative.have_weekday_relative == 0) {
  ------------------
  |  Branch (22507:8): [True: 0, False: 0]
  ------------------
22508|      0|				TIMELIB_HAVE_WEEKDAY_RELATIVE();
  ------------------
  |  |  103|      0|#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
  ------------------
22509|      0|				s->time->relative.weekday = 1;
22510|      0|			}
22511|      0|		}
22512|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22513|      0|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      0|#define TIMELIB_RELATIVE       310
  ------------------
22514|      0|	}
22515|      0|#line 22516 "ext/date/lib/parse_date.c"
22516|      0|yy1173:
22517|      0|	YYDEBUG(1173, *YYCURSOR);
22518|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22519|      0|	if (yych == 'O') goto yy1235;
  ------------------
  |  Branch (22519:6): [True: 0, False: 0]
  ------------------
22520|      0|	if (yych == 'o') goto yy1235;
  ------------------
  |  Branch (22520:6): [True: 0, False: 0]
  ------------------
22521|      0|	goto yy59;
22522|      0|yy1174:
22523|      0|	YYDEBUG(1174, *YYCURSOR);
22524|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22525|      0|yy1175:
22526|      0|	YYDEBUG(1175, *YYCURSOR);
22527|      0|#line 1166 "ext/date/lib/parse_date.re"
22528|      0|	{
22529|      0|		DEBUG_OUTPUT("yesterday");
22530|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
22531|      0|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      0|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
22532|      0|		TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
22533|       |
22534|      0|		s->time->relative.d = -1;
22535|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
22536|      0|		return TIMELIB_RELATIVE;
  ------------------
  |  |   78|      0|#define TIMELIB_RELATIVE       310
  ------------------
22537|      0|	}
22538|      0|#line 22539 "ext/date/lib/parse_date.c"
22539|      0|yy1176:
22540|      0|	YYDEBUG(1176, *YYCURSOR);
22541|      0|	yyaccept = 31;
22542|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22543|      0|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (22543:6): [True: 0, False: 0]
  ------------------
22544|      0|		goto yy954;
22545|      0|	}
22546|      0|	if (yych <= '.') {
  ------------------
  |  Branch (22546:6): [True: 0, False: 0]
  ------------------
22547|      0|		if (yych == '-') goto yy297;
  ------------------
  |  Branch (22547:7): [True: 0, False: 0]
  ------------------
22548|      0|		goto yy1175;
22549|      0|	} else {
22550|      0|		if (yych <= '/') goto yy297;
  ------------------
  |  Branch (22550:7): [True: 0, False: 0]
  ------------------
22551|      0|		if (yych == '_') goto yy297;
  ------------------
  |  Branch (22551:7): [True: 0, False: 0]
  ------------------
22552|      0|		goto yy1175;
22553|      0|	}
22554|      0|yy1177:
22555|      0|	YYDEBUG(1177, *YYCURSOR);
22556|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22557|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22557:6): [True: 0, False: 0]
  ------------------
22558|      0|	if (yych <= '9') goto yy1187;
  ------------------
  |  Branch (22558:6): [True: 0, False: 0]
  ------------------
22559|      0|	goto yy59;
22560|      0|yy1178:
22561|      0|	YYDEBUG(1178, *YYCURSOR);
22562|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22563|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22563:6): [True: 0, False: 0]
  ------------------
22564|      0|	if (yych <= '1') goto yy1187;
  ------------------
  |  Branch (22564:6): [True: 0, False: 0]
  ------------------
22565|      0|	goto yy59;
22566|      1|yy1179:
22567|      1|	YYDEBUG(1179, *YYCURSOR);
22568|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
22569|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22569:6): [True: 0, False: 1]
  ------------------
22570|      1|	if (yych <= '2') goto yy1236;
  ------------------
  |  Branch (22570:6): [True: 0, False: 1]
  ------------------
22571|      1|	if (yych <= '3') goto yy1237;
  ------------------
  |  Branch (22571:6): [True: 1, False: 0]
  ------------------
22572|      0|	goto yy59;
22573|     40|yy1180:
22574|     40|	YYDEBUG(1180, *YYCURSOR);
22575|     40|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     40|#define   YYCURSOR     cursor
  ------------------
22576|     40|	if (yych <= '9') {
  ------------------
  |  Branch (22576:6): [True: 38, False: 2]
  ------------------
22577|     38|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (22577:7): [True: 5, False: 33]
  ------------------
22578|     33|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (22578:7): [True: 3, False: 30]
  ------------------
22579|     30|		goto yy1238;
22580|     33|	} else {
22581|      2|		if (yych <= 0xC2) {
  ------------------
  |  Branch (22581:7): [True: 2, False: 0]
  ------------------
22582|      2|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (22582:8): [True: 2, False: 0]
  ------------------
22583|      0|			goto yy97;
22584|      2|		} else {
22585|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (22585:8): [True: 0, False: 0]
  ------------------
22586|      0|			goto yy196;
22587|      0|		}
22588|      2|	}
22589|      0|yy1181:
22590|      0|	YYDEBUG(1181, *YYCURSOR);
22591|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22592|      0|	if (yych == ':') goto yy1239;
  ------------------
  |  Branch (22592:6): [True: 0, False: 0]
  ------------------
22593|      0|	goto yy59;
22594|      0|yy1182:
22595|      0|	YYDEBUG(1182, *YYCURSOR);
22596|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22597|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22597:6): [True: 0, False: 0]
  ------------------
22598|      0|	if (yych <= '9') goto yy1184;
  ------------------
  |  Branch (22598:6): [True: 0, False: 0]
  ------------------
22599|      0|	if (yych <= ':') goto yy1240;
  ------------------
  |  Branch (22599:6): [True: 0, False: 0]
  ------------------
22600|      0|	goto yy59;
22601|      0|yy1183:
22602|      0|	YYDEBUG(1183, *YYCURSOR);
22603|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22604|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22604:6): [True: 0, False: 0]
  ------------------
22605|      0|	if (yych <= '4') goto yy1184;
  ------------------
  |  Branch (22605:6): [True: 0, False: 0]
  ------------------
22606|      0|	if (yych == ':') goto yy1240;
  ------------------
  |  Branch (22606:6): [True: 0, False: 0]
  ------------------
22607|      0|	goto yy59;
22608|      0|yy1184:
22609|      0|	YYDEBUG(1184, *YYCURSOR);
22610|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22611|      0|	if (yych == ':') goto yy1240;
  ------------------
  |  Branch (22611:6): [True: 0, False: 0]
  ------------------
22612|      0|	goto yy59;
22613|      0|yy1185:
22614|      0|	YYDEBUG(1185, *YYCURSOR);
22615|      0|	yyaccept = 15;
22616|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22617|      0|	if (yych == 'T') goto yy1115;
  ------------------
  |  Branch (22617:6): [True: 0, False: 0]
  ------------------
22618|      0|	goto yy567;
22619|      0|yy1186:
22620|      0|	YYDEBUG(1186, *YYCURSOR);
22621|      0|	yyaccept = 26;
22622|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22623|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (22623:6): [True: 0, False: 0]
  ------------------
22624|      0|		if (yych == 'T') goto yy1241;
  ------------------
  |  Branch (22624:7): [True: 0, False: 0]
  ------------------
22625|      0|		if (yych <= 'm') goto yy1043;
  ------------------
  |  Branch (22625:7): [True: 0, False: 0]
  ------------------
22626|      0|		goto yy1116;
22627|      0|	} else {
22628|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (22628:7): [True: 0, False: 0]
  ------------------
22629|      0|			if (yych <= 'q') goto yy1043;
  ------------------
  |  Branch (22629:8): [True: 0, False: 0]
  ------------------
22630|      0|			goto yy1116;
22631|      0|		} else {
22632|      0|			if (yych <= 's') goto yy1117;
  ------------------
  |  Branch (22632:8): [True: 0, False: 0]
  ------------------
22633|      0|			if (yych <= 't') goto yy1118;
  ------------------
  |  Branch (22633:8): [True: 0, False: 0]
  ------------------
22634|      0|			goto yy1043;
22635|      0|		}
22636|      0|	}
22637|      0|yy1187:
22638|      0|	YYDEBUG(1187, *YYCURSOR);
22639|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22640|      0|	goto yy1043;
22641|      0|yy1188:
22642|      0|	YYDEBUG(1188, *YYCURSOR);
22643|      0|	yyaccept = 26;
22644|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22645|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (22645:6): [True: 0, False: 0]
  ------------------
22646|      0|		if (yych == '/') goto yy1187;
  ------------------
  |  Branch (22646:7): [True: 0, False: 0]
  ------------------
22647|      0|		if (yych <= 'm') goto yy1043;
  ------------------
  |  Branch (22647:7): [True: 0, False: 0]
  ------------------
22648|      0|		goto yy1121;
22649|      0|	} else {
22650|      0|		if (yych <= 'r') {
  ------------------
  |  Branch (22650:7): [True: 0, False: 0]
  ------------------
22651|      0|			if (yych <= 'q') goto yy1043;
  ------------------
  |  Branch (22651:8): [True: 0, False: 0]
  ------------------
22652|      0|			goto yy1121;
22653|      0|		} else {
22654|      0|			if (yych <= 's') goto yy1122;
  ------------------
  |  Branch (22654:8): [True: 0, False: 0]
  ------------------
22655|      0|			if (yych <= 't') goto yy1123;
  ------------------
  |  Branch (22655:8): [True: 0, False: 0]
  ------------------
22656|      0|			goto yy1043;
22657|      0|		}
22658|      0|	}
22659|    262|yy1189:
22660|    262|	YYDEBUG(1189, *YYCURSOR);
22661|    262|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    262|#define   YYCURSOR     cursor
  ------------------
22662|    262|	if (yych <= 0xC1) {
  ------------------
  |  Branch (22662:6): [True: 248, False: 14]
  ------------------
22663|    248|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (22663:7): [True: 15, False: 233]
  ------------------
22664|    233|		if (yych <= '9') goto yy1242;
  ------------------
  |  Branch (22664:7): [True: 203, False: 30]
  ------------------
22665|     30|		goto yy196;
22666|    233|	} else {
22667|     14|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (22667:7): [True: 4, False: 10]
  ------------------
22668|     10|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (22668:7): [True: 2, False: 8]
  ------------------
22669|      8|		goto yy196;
22670|     10|	}
22671|      0|yy1190:
22672|      0|	YYDEBUG(1190, *YYCURSOR);
22673|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22674|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22674:6): [True: 0, False: 0]
  ------------------
22675|      0|	if (yych <= '5') goto yy1243;
  ------------------
  |  Branch (22675:6): [True: 0, False: 0]
  ------------------
22676|      0|	if (yych <= '9') goto yy1192;
  ------------------
  |  Branch (22676:6): [True: 0, False: 0]
  ------------------
22677|      0|	if (yych <= ':') goto yy1244;
  ------------------
  |  Branch (22677:6): [True: 0, False: 0]
  ------------------
22678|      0|	goto yy59;
22679|      0|yy1191:
22680|      0|	YYDEBUG(1191, *YYCURSOR);
22681|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22682|      0|	if (yych <= '5') {
  ------------------
  |  Branch (22682:6): [True: 0, False: 0]
  ------------------
22683|      0|		if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22683:7): [True: 0, False: 0]
  ------------------
22684|      0|		if (yych <= '4') goto yy1243;
  ------------------
  |  Branch (22684:7): [True: 0, False: 0]
  ------------------
22685|      0|		goto yy1245;
22686|      0|	} else {
22687|      0|		if (yych == ':') goto yy1244;
  ------------------
  |  Branch (22687:7): [True: 0, False: 0]
  ------------------
22688|      0|		goto yy59;
22689|      0|	}
22690|      0|yy1192:
22691|      0|	YYDEBUG(1192, *YYCURSOR);
22692|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22693|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22693:6): [True: 0, False: 0]
  ------------------
22694|      0|	if (yych <= '5') goto yy1245;
  ------------------
  |  Branch (22694:6): [True: 0, False: 0]
  ------------------
22695|      0|	if (yych == ':') goto yy1244;
  ------------------
  |  Branch (22695:6): [True: 0, False: 0]
  ------------------
22696|      0|	goto yy59;
22697|      0|yy1193:
22698|      0|	YYDEBUG(1193, *YYCURSOR);
22699|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22700|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22700:6): [True: 0, False: 0]
  ------------------
22701|      0|	if (yych <= '5') goto yy1246;
  ------------------
  |  Branch (22701:6): [True: 0, False: 0]
  ------------------
22702|      0|	if (yych <= '9') goto yy1195;
  ------------------
  |  Branch (22702:6): [True: 0, False: 0]
  ------------------
22703|      0|	goto yy59;
22704|      0|yy1194:
22705|      0|	YYDEBUG(1194, *YYCURSOR);
22706|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22707|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22707:6): [True: 0, False: 0]
  ------------------
22708|      0|	if (yych <= '4') goto yy1246;
  ------------------
  |  Branch (22708:6): [True: 0, False: 0]
  ------------------
22709|      0|	if (yych <= '5') goto yy1245;
  ------------------
  |  Branch (22709:6): [True: 0, False: 0]
  ------------------
22710|      0|	goto yy59;
22711|      0|yy1195:
22712|      0|	YYDEBUG(1195, *YYCURSOR);
22713|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22714|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22714:6): [True: 0, False: 0]
  ------------------
22715|      0|	if (yych <= '5') goto yy1245;
  ------------------
  |  Branch (22715:6): [True: 0, False: 0]
  ------------------
22716|      0|	goto yy59;
22717|      0|yy1196:
22718|      0|	YYDEBUG(1196, *YYCURSOR);
22719|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22720|      0|	if (yych == ' ') goto yy1247;
  ------------------
  |  Branch (22720:6): [True: 0, False: 0]
  ------------------
22721|      0|	goto yy59;
22722|      0|yy1197:
22723|      0|	YYDEBUG(1197, *YYCURSOR);
22724|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22725|      0|	if (yych == 'Y') goto yy790;
  ------------------
  |  Branch (22725:6): [True: 0, False: 0]
  ------------------
22726|      0|	if (yych == 'y') goto yy790;
  ------------------
  |  Branch (22726:6): [True: 0, False: 0]
  ------------------
22727|      0|	goto yy59;
22728|      0|yy1198:
22729|      0|	YYDEBUG(1198, *YYCURSOR);
22730|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22731|      0|	if (yych == 'R') goto yy790;
  ------------------
  |  Branch (22731:6): [True: 0, False: 0]
  ------------------
22732|      0|	if (yych == 'r') goto yy790;
  ------------------
  |  Branch (22732:6): [True: 0, False: 0]
  ------------------
22733|      0|	goto yy59;
22734|      0|yy1199:
22735|      0|	YYDEBUG(1199, *YYCURSOR);
22736|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22737|      0|	if (yych <= 'L') {
  ------------------
  |  Branch (22737:6): [True: 0, False: 0]
  ------------------
22738|      0|		if (yych == '.') goto yy1248;
  ------------------
  |  Branch (22738:7): [True: 0, False: 0]
  ------------------
22739|      0|		goto yy59;
22740|      0|	} else {
22741|      0|		if (yych <= 'M') goto yy1249;
  ------------------
  |  Branch (22741:7): [True: 0, False: 0]
  ------------------
22742|      0|		if (yych == 'm') goto yy1249;
  ------------------
  |  Branch (22742:7): [True: 0, False: 0]
  ------------------
22743|      0|		goto yy59;
22744|      0|	}
22745|      0|yy1200:
22746|      0|	YYDEBUG(1200, *YYCURSOR);
22747|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22748|      0|	if (yych <= '/') goto yy1070;
  ------------------
  |  Branch (22748:6): [True: 0, False: 0]
  ------------------
22749|      0|	if (yych <= '9') goto yy1250;
  ------------------
  |  Branch (22749:6): [True: 0, False: 0]
  ------------------
22750|      0|	goto yy1070;
22751|      0|yy1201:
22752|      0|	YYDEBUG(1201, *YYCURSOR);
22753|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22754|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22754:6): [True: 0, False: 0]
  ------------------
22755|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22756|      0|	YYDEBUG(1202, *YYCURSOR);
22757|      0|	if (yych <= 'A') {
  ------------------
  |  Branch (22757:6): [True: 0, False: 0]
  ------------------
22758|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (22758:7): [True: 0, False: 0]
  ------------------
22759|      0|			if (yych == '\t') goto yy1201;
  ------------------
  |  Branch (22759:8): [True: 0, False: 0]
  ------------------
22760|      0|			goto yy59;
22761|      0|		} else {
22762|      0|			if (yych <= ' ') goto yy1201;
  ------------------
  |  Branch (22762:8): [True: 0, False: 0]
  ------------------
22763|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (22763:8): [True: 0, False: 0]
  ------------------
22764|      0|		}
22765|      0|	} else {
22766|      0|		if (yych <= '`') {
  ------------------
  |  Branch (22766:7): [True: 0, False: 0]
  ------------------
22767|      0|			if (yych != 'P') goto yy59;
  ------------------
  |  Branch (22767:8): [True: 0, False: 0]
  ------------------
22768|      0|		} else {
22769|      0|			if (yych <= 'a') goto yy1203;
  ------------------
  |  Branch (22769:8): [True: 0, False: 0]
  ------------------
22770|      0|			if (yych != 'p') goto yy59;
  ------------------
  |  Branch (22770:8): [True: 0, False: 0]
  ------------------
22771|      0|		}
22772|      0|	}
22773|      0|yy1203:
22774|      0|	YYDEBUG(1203, *YYCURSOR);
22775|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22776|      0|	if (yych <= 'L') {
  ------------------
  |  Branch (22776:6): [True: 0, False: 0]
  ------------------
22777|      0|		if (yych == '.') goto yy1251;
  ------------------
  |  Branch (22777:7): [True: 0, False: 0]
  ------------------
22778|      0|		goto yy59;
22779|      0|	} else {
22780|      0|		if (yych <= 'M') goto yy1252;
  ------------------
  |  Branch (22780:7): [True: 0, False: 0]
  ------------------
22781|      0|		if (yych == 'm') goto yy1252;
  ------------------
  |  Branch (22781:7): [True: 0, False: 0]
  ------------------
22782|      0|		goto yy59;
22783|      0|	}
22784|      0|yy1204:
22785|      0|	YYDEBUG(1204, *YYCURSOR);
22786|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22787|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22787:6): [True: 0, False: 0]
  ------------------
22788|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22789|      0|	if (yych == 0xA0) goto yy1253;
  ------------------
  |  Branch (22789:6): [True: 0, False: 0]
  ------------------
22790|      0|	goto yy59;
22791|      0|yy1205:
22792|      0|	YYDEBUG(1205, *YYCURSOR);
22793|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22794|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22794:6): [True: 0, False: 0]
  ------------------
22795|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22796|      0|	if (yych == 0x80) goto yy1254;
  ------------------
  |  Branch (22796:6): [True: 0, False: 0]
  ------------------
22797|      0|	goto yy59;
22798|      0|yy1206:
22799|      0|	YYDEBUG(1206, *YYCURSOR);
22800|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22801|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (22801:6): [True: 0, False: 0]
  ------------------
22802|      0|		if (yych == 'D') goto yy856;
  ------------------
  |  Branch (22802:7): [True: 0, False: 0]
  ------------------
22803|      0|		if (yych <= 'R') goto yy59;
  ------------------
  |  Branch (22803:7): [True: 0, False: 0]
  ------------------
22804|      0|		goto yy1155;
22805|      0|	} else {
22806|      0|		if (yych <= 'd') {
  ------------------
  |  Branch (22806:7): [True: 0, False: 0]
  ------------------
22807|      0|			if (yych <= 'c') goto yy59;
  ------------------
  |  Branch (22807:8): [True: 0, False: 0]
  ------------------
22808|      0|			goto yy856;
22809|      0|		} else {
22810|      0|			if (yych == 's') goto yy1155;
  ------------------
  |  Branch (22810:8): [True: 0, False: 0]
  ------------------
22811|      0|			goto yy59;
22812|      0|		}
22813|      0|	}
22814|      0|yy1207:
22815|      0|	YYDEBUG(1207, *YYCURSOR);
22816|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22817|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22817:6): [True: 0, False: 0]
  ------------------
22818|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22819|      0|yy1208:
22820|      0|	YYDEBUG(1208, *YYCURSOR);
22821|      0|	if (yych <= '+') {
  ------------------
  |  Branch (22821:6): [True: 0, False: 0]
  ------------------
22822|      0|		if (yych <= ' ') {
  ------------------
  |  Branch (22822:7): [True: 0, False: 0]
  ------------------
22823|      0|			if (yych == '\t') goto yy1207;
  ------------------
  |  Branch (22823:8): [True: 0, False: 0]
  ------------------
22824|      0|			if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (22824:8): [True: 0, False: 0]
  ------------------
22825|      0|			goto yy1207;
22826|      0|		} else {
22827|      0|			if (yych == '(') goto yy1209;
  ------------------
  |  Branch (22827:8): [True: 0, False: 0]
  ------------------
22828|      0|			if (yych <= '*') goto yy59;
  ------------------
  |  Branch (22828:8): [True: 0, False: 0]
  ------------------
22829|      0|			goto yy1210;
22830|      0|		}
22831|      0|	} else {
22832|      0|		if (yych <= 'F') {
  ------------------
  |  Branch (22832:7): [True: 0, False: 0]
  ------------------
22833|      0|			if (yych == '-') goto yy1210;
  ------------------
  |  Branch (22833:8): [True: 0, False: 0]
  ------------------
22834|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (22834:8): [True: 0, False: 0]
  ------------------
22835|      0|			goto yy1211;
22836|      0|		} else {
22837|      0|			if (yych <= 'Z') {
  ------------------
  |  Branch (22837:8): [True: 0, False: 0]
  ------------------
22838|      0|				if (yych <= 'G') goto yy1212;
  ------------------
  |  Branch (22838:9): [True: 0, False: 0]
  ------------------
22839|      0|				goto yy1211;
22840|      0|			} else {
22841|      0|				if (yych <= '`') goto yy59;
  ------------------
  |  Branch (22841:9): [True: 0, False: 0]
  ------------------
22842|      0|				if (yych <= 'z') goto yy1213;
  ------------------
  |  Branch (22842:9): [True: 0, False: 0]
  ------------------
22843|      0|				goto yy59;
22844|      0|			}
22845|      0|		}
22846|      0|	}
22847|      0|yy1209:
22848|      0|	YYDEBUG(1209, *YYCURSOR);
22849|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22850|      0|	if (yych <= '@') goto yy59;
  ------------------
  |  Branch (22850:6): [True: 0, False: 0]
  ------------------
22851|      0|	if (yych <= 'Z') goto yy1213;
  ------------------
  |  Branch (22851:6): [True: 0, False: 0]
  ------------------
22852|      0|	if (yych <= '`') goto yy59;
  ------------------
  |  Branch (22852:6): [True: 0, False: 0]
  ------------------
22853|      0|	if (yych <= 'z') goto yy1213;
  ------------------
  |  Branch (22853:6): [True: 0, False: 0]
  ------------------
22854|      0|	goto yy59;
22855|      1|yy1210:
22856|      1|	YYDEBUG(1210, *YYCURSOR);
22857|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
22858|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (22858:6): [True: 0, False: 1]
  ------------------
22859|      1|	if (yych <= '1') goto yy1255;
  ------------------
  |  Branch (22859:6): [True: 1, False: 0]
  ------------------
22860|      0|	if (yych <= '2') goto yy1256;
  ------------------
  |  Branch (22860:6): [True: 0, False: 0]
  ------------------
22861|      0|	if (yych <= '9') goto yy1257;
  ------------------
  |  Branch (22861:6): [True: 0, False: 0]
  ------------------
22862|      0|	goto yy59;
22863|      0|yy1211:
22864|      0|	YYDEBUG(1211, *YYCURSOR);
22865|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22866|      0|	if (yych <= '@') {
  ------------------
  |  Branch (22866:6): [True: 0, False: 0]
  ------------------
22867|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (22867:7): [True: 0, False: 0]
  ------------------
22868|      0|		goto yy849;
22869|      0|	} else {
22870|      0|		if (yych <= 'Z') goto yy1258;
  ------------------
  |  Branch (22870:7): [True: 0, False: 0]
  ------------------
22871|      0|		if (yych <= '`') goto yy849;
  ------------------
  |  Branch (22871:7): [True: 0, False: 0]
  ------------------
22872|      0|		if (yych <= 'z') goto yy1259;
  ------------------
  |  Branch (22872:7): [True: 0, False: 0]
  ------------------
22873|      0|		goto yy849;
22874|      0|	}
22875|      0|yy1212:
22876|      0|	YYDEBUG(1212, *YYCURSOR);
22877|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22878|      0|	if (yych <= 'L') {
  ------------------
  |  Branch (22878:6): [True: 0, False: 0]
  ------------------
22879|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (22879:7): [True: 0, False: 0]
  ------------------
22880|      0|		if (yych <= '@') goto yy849;
  ------------------
  |  Branch (22880:7): [True: 0, False: 0]
  ------------------
22881|      0|		goto yy1258;
22882|      0|	} else {
22883|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (22883:7): [True: 0, False: 0]
  ------------------
22884|      0|			if (yych <= 'M') goto yy1260;
  ------------------
  |  Branch (22884:8): [True: 0, False: 0]
  ------------------
22885|      0|			goto yy1258;
22886|      0|		} else {
22887|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (22887:8): [True: 0, False: 0]
  ------------------
22888|      0|			if (yych <= 'z') goto yy1259;
  ------------------
  |  Branch (22888:8): [True: 0, False: 0]
  ------------------
22889|      0|			goto yy849;
22890|      0|		}
22891|      0|	}
22892|      0|yy1213:
22893|      0|	YYDEBUG(1213, *YYCURSOR);
22894|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22895|      0|	if (yych <= '@') {
  ------------------
  |  Branch (22895:6): [True: 0, False: 0]
  ------------------
22896|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (22896:7): [True: 0, False: 0]
  ------------------
22897|      0|		goto yy849;
22898|      0|	} else {
22899|      0|		if (yych <= 'Z') goto yy1258;
  ------------------
  |  Branch (22899:7): [True: 0, False: 0]
  ------------------
22900|      0|		if (yych <= '`') goto yy849;
  ------------------
  |  Branch (22900:7): [True: 0, False: 0]
  ------------------
22901|      0|		if (yych <= 'z') goto yy1258;
  ------------------
  |  Branch (22901:7): [True: 0, False: 0]
  ------------------
22902|      0|		goto yy849;
22903|      0|	}
22904|      0|yy1214:
22905|      0|	YYDEBUG(1214, *YYCURSOR);
22906|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22907|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22907:6): [True: 0, False: 0]
  ------------------
22908|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22909|      0|	if (yych == 0xA0) goto yy1261;
  ------------------
  |  Branch (22909:6): [True: 0, False: 0]
  ------------------
22910|      0|	goto yy59;
22911|      0|yy1215:
22912|      0|	YYDEBUG(1215, *YYCURSOR);
22913|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22914|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22914:6): [True: 0, False: 0]
  ------------------
22915|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22916|      0|	if (yych == 0x80) goto yy1262;
  ------------------
  |  Branch (22916:6): [True: 0, False: 0]
  ------------------
22917|      0|	goto yy59;
22918|     34|yy1216:
22919|     34|	YYDEBUG(1216, *YYCURSOR);
22920|     34|	++YYCURSOR;
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
22921|     34|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|     34|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (22921:6): [True: 0, False: 34]
  ------------------
22922|     34|	yych = *YYCURSOR;
  ------------------
  |  |   89|     34|#define   YYCURSOR     cursor
  ------------------
22923|     38|yy1217:
22924|     38|	YYDEBUG(1217, *YYCURSOR);
22925|     38|	if (yych <= '@') {
  ------------------
  |  Branch (22925:6): [True: 35, False: 3]
  ------------------
22926|     35|		if (yych <= '\'') {
  ------------------
  |  Branch (22926:7): [True: 34, False: 1]
  ------------------
22927|     34|			if (yych <= '\t') {
  ------------------
  |  Branch (22927:8): [True: 0, False: 34]
  ------------------
22928|      0|				if (yych <= 0x08) goto yy59;
  ------------------
  |  Branch (22928:9): [True: 0, False: 0]
  ------------------
22929|      0|				goto yy1216;
22930|     34|			} else {
22931|     34|				if (yych == ' ') goto yy1216;
  ------------------
  |  Branch (22931:9): [True: 34, False: 0]
  ------------------
22932|      0|				goto yy59;
22933|     34|			}
22934|     34|		} else {
22935|      1|			if (yych <= '+') {
  ------------------
  |  Branch (22935:8): [True: 0, False: 1]
  ------------------
22936|      0|				if (yych <= '(') goto yy1209;
  ------------------
  |  Branch (22936:9): [True: 0, False: 0]
  ------------------
22937|      0|				if (yych <= '*') goto yy59;
  ------------------
  |  Branch (22937:9): [True: 0, False: 0]
  ------------------
22938|      0|				goto yy1210;
22939|      1|			} else {
22940|      1|				if (yych == '-') goto yy1210;
  ------------------
  |  Branch (22940:9): [True: 1, False: 0]
  ------------------
22941|      0|				goto yy59;
22942|      1|			}
22943|      1|		}
22944|     35|	} else {
22945|      3|		if (yych <= 'Z') {
  ------------------
  |  Branch (22945:7): [True: 1, False: 2]
  ------------------
22946|      1|			if (yych <= 'G') {
  ------------------
  |  Branch (22946:8): [True: 1, False: 0]
  ------------------
22947|      1|				if (yych <= 'A') goto yy1218;
  ------------------
  |  Branch (22947:9): [True: 1, False: 0]
  ------------------
22948|      0|				if (yych <= 'F') goto yy1211;
  ------------------
  |  Branch (22948:9): [True: 0, False: 0]
  ------------------
22949|      0|				goto yy1212;
22950|      0|			} else {
22951|      0|				if (yych != 'P') goto yy1211;
  ------------------
  |  Branch (22951:9): [True: 0, False: 0]
  ------------------
22952|      0|			}
22953|      2|		} else {
22954|      2|			if (yych <= 'o') {
  ------------------
  |  Branch (22954:8): [True: 1, False: 1]
  ------------------
22955|      1|				if (yych <= '`') goto yy59;
  ------------------
  |  Branch (22955:9): [True: 1, False: 0]
  ------------------
22956|      0|				if (yych <= 'a') goto yy1219;
  ------------------
  |  Branch (22956:9): [True: 0, False: 0]
  ------------------
22957|      0|				goto yy1213;
22958|      1|			} else {
22959|      1|				if (yych <= 'p') goto yy1219;
  ------------------
  |  Branch (22959:9): [True: 0, False: 1]
  ------------------
22960|      1|				if (yych <= 'z') goto yy1213;
  ------------------
  |  Branch (22960:9): [True: 0, False: 1]
  ------------------
22961|      1|				goto yy59;
22962|      1|			}
22963|      2|		}
22964|      3|	}
22965|      1|yy1218:
22966|      1|	YYDEBUG(1218, *YYCURSOR);
22967|      1|	yyaccept = 20;
22968|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
22969|      1|	if (yych <= 'L') {
  ------------------
  |  Branch (22969:6): [True: 0, False: 1]
  ------------------
22970|      0|		if (yych <= '-') {
  ------------------
  |  Branch (22970:7): [True: 0, False: 0]
  ------------------
22971|      0|			if (yych == ')') goto yy1078;
  ------------------
  |  Branch (22971:8): [True: 0, False: 0]
  ------------------
22972|      0|			goto yy849;
22973|      0|		} else {
22974|      0|			if (yych <= '.') goto yy1151;
  ------------------
  |  Branch (22974:8): [True: 0, False: 0]
  ------------------
22975|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (22975:8): [True: 0, False: 0]
  ------------------
22976|      0|			goto yy1258;
22977|      0|		}
22978|      1|	} else {
22979|      1|		if (yych <= '`') {
  ------------------
  |  Branch (22979:7): [True: 0, False: 1]
  ------------------
22980|      0|			if (yych <= 'M') goto yy1263;
  ------------------
  |  Branch (22980:8): [True: 0, False: 0]
  ------------------
22981|      0|			if (yych <= 'Z') goto yy1258;
  ------------------
  |  Branch (22981:8): [True: 0, False: 0]
  ------------------
22982|      0|			goto yy849;
22983|      1|		} else {
22984|      1|			if (yych == 'm') goto yy1264;
  ------------------
  |  Branch (22984:8): [True: 0, False: 1]
  ------------------
22985|      1|			if (yych <= 'z') goto yy1259;
  ------------------
  |  Branch (22985:8): [True: 0, False: 1]
  ------------------
22986|      1|			goto yy849;
22987|      1|		}
22988|      1|	}
22989|      0|yy1219:
22990|      0|	YYDEBUG(1219, *YYCURSOR);
22991|      0|	yyaccept = 20;
22992|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
22993|      0|	if (yych <= 'L') {
  ------------------
  |  Branch (22993:6): [True: 0, False: 0]
  ------------------
22994|      0|		if (yych <= '-') {
  ------------------
  |  Branch (22994:7): [True: 0, False: 0]
  ------------------
22995|      0|			if (yych == ')') goto yy1078;
  ------------------
  |  Branch (22995:8): [True: 0, False: 0]
  ------------------
22996|      0|			goto yy849;
22997|      0|		} else {
22998|      0|			if (yych <= '.') goto yy1151;
  ------------------
  |  Branch (22998:8): [True: 0, False: 0]
  ------------------
22999|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (22999:8): [True: 0, False: 0]
  ------------------
23000|      0|			goto yy1258;
23001|      0|		}
23002|      0|	} else {
23003|      0|		if (yych <= '`') {
  ------------------
  |  Branch (23003:7): [True: 0, False: 0]
  ------------------
23004|      0|			if (yych <= 'M') goto yy1263;
  ------------------
  |  Branch (23004:8): [True: 0, False: 0]
  ------------------
23005|      0|			if (yych <= 'Z') goto yy1258;
  ------------------
  |  Branch (23005:8): [True: 0, False: 0]
  ------------------
23006|      0|			goto yy849;
23007|      0|		} else {
23008|      0|			if (yych == 'm') goto yy1263;
  ------------------
  |  Branch (23008:8): [True: 0, False: 0]
  ------------------
23009|      0|			if (yych <= 'z') goto yy1258;
  ------------------
  |  Branch (23009:8): [True: 0, False: 0]
  ------------------
23010|      0|			goto yy849;
23011|      0|		}
23012|      0|	}
23013|      0|yy1220:
23014|      0|	YYDEBUG(1220, *YYCURSOR);
23015|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23016|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23016:6): [True: 0, False: 0]
  ------------------
23017|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23018|      0|	if (yych == 0xA0) goto yy1265;
  ------------------
  |  Branch (23018:6): [True: 0, False: 0]
  ------------------
23019|      0|	goto yy59;
23020|      0|yy1221:
23021|      0|	YYDEBUG(1221, *YYCURSOR);
23022|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23023|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23023:6): [True: 0, False: 0]
  ------------------
23024|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23025|      0|	if (yych == 0x80) goto yy1266;
  ------------------
  |  Branch (23025:6): [True: 0, False: 0]
  ------------------
23026|      0|	goto yy59;
23027|      0|yy1222:
23028|      0|	YYDEBUG(1222, *YYCURSOR);
23029|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23030|      0|	YYDEBUG(1223, *YYCURSOR);
23031|      0|#line 1914 "ext/date/lib/parse_date.re"
23032|      0|	{
23033|      0|		DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
23034|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
23035|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23036|      0|		s->time->m = timelib_get_month(&ptr);
23037|      0|		s->time->d = timelib_get_nr(&ptr, 2);
23038|       |
23039|      0|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      0|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23040|      0|		s->time->h = timelib_get_nr(&ptr, 2);
23041|      0|		s->time->i = timelib_get_nr(&ptr, 2);
23042|      0|		if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (23042:7): [True: 0, False: 0]
  |  Branch (23042:22): [True: 0, False: 0]
  ------------------
23043|      0|			s->time->s = timelib_get_nr(&ptr, 2);
23044|       |
23045|      0|			if (*ptr == '.') {
  ------------------
  |  Branch (23045:8): [True: 0, False: 0]
  ------------------
23046|      0|				s->time->us = timelib_get_frac_nr(&ptr);
23047|      0|			}
23048|      0|		}
23049|       |
23050|      0|		s->time->h += timelib_meridian(&ptr, s->time->h);
23051|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23052|      0|		return TIMELIB_SHORTDATE_WITH_TIME;
  ------------------
  |  |   68|      0|#define TIMELIB_SHORTDATE_WITH_TIME 276
  ------------------
23053|      0|	}
23054|      0|#line 23055 "ext/date/lib/parse_date.c"
23055|      0|yy1224:
23056|      0|	YYDEBUG(1224, *YYCURSOR);
23057|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23058|      0|	if (yych <= '\t') {
  ------------------
  |  Branch (23058:6): [True: 0, False: 0]
  ------------------
23059|      0|		if (yych <= 0x00) goto yy1222;
  ------------------
  |  Branch (23059:7): [True: 0, False: 0]
  ------------------
23060|      0|		if (yych <= 0x08) goto yy59;
  ------------------
  |  Branch (23060:7): [True: 0, False: 0]
  ------------------
23061|      0|		goto yy1222;
23062|      0|	} else {
23063|      0|		if (yych == ' ') goto yy1222;
  ------------------
  |  Branch (23063:7): [True: 0, False: 0]
  ------------------
23064|      0|		goto yy59;
23065|      0|	}
23066|      0|yy1225:
23067|      0|	YYDEBUG(1225, *YYCURSOR);
23068|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23069|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23069:6): [True: 0, False: 0]
  ------------------
23070|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23071|      0|	if (yych <= '`') {
  ------------------
  |  Branch (23071:6): [True: 0, False: 0]
  ------------------
23072|      0|		if (yych <= 'A') {
  ------------------
  |  Branch (23072:7): [True: 0, False: 0]
  ------------------
23073|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (23073:8): [True: 0, False: 0]
  ------------------
23074|      0|			goto yy1083;
23075|      0|		} else {
23076|      0|			if (yych == 'P') goto yy1083;
  ------------------
  |  Branch (23076:8): [True: 0, False: 0]
  ------------------
23077|      0|			goto yy59;
23078|      0|		}
23079|      0|	} else {
23080|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (23080:7): [True: 0, False: 0]
  ------------------
23081|      0|			if (yych <= 'a') goto yy1083;
  ------------------
  |  Branch (23081:8): [True: 0, False: 0]
  ------------------
23082|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (23082:8): [True: 0, False: 0]
  ------------------
23083|      0|			goto yy1083;
23084|      0|		} else {
23085|      0|			if (yych == 0xE2) goto yy1085;
  ------------------
  |  Branch (23085:8): [True: 0, False: 0]
  ------------------
23086|      0|			goto yy59;
23087|      0|		}
23088|      0|	}
23089|      0|yy1226:
23090|      0|	YYDEBUG(1226, *YYCURSOR);
23091|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23092|      0|	if (yych == 'N') goto yy1227;
  ------------------
  |  Branch (23092:6): [True: 0, False: 0]
  ------------------
23093|      0|	if (yych != 'n') goto yy59;
  ------------------
  |  Branch (23093:6): [True: 0, False: 0]
  ------------------
23094|      0|yy1227:
23095|      0|	YYDEBUG(1227, *YYCURSOR);
23096|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23097|      0|	if (yych == 'I') goto yy1267;
  ------------------
  |  Branch (23097:6): [True: 0, False: 0]
  ------------------
23098|      0|	if (yych == 'i') goto yy1267;
  ------------------
  |  Branch (23098:6): [True: 0, False: 0]
  ------------------
23099|      0|	goto yy59;
23100|      0|yy1228:
23101|      0|	YYDEBUG(1228, *YYCURSOR);
23102|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23103|      0|	if (yych == 'F') goto yy1268;
  ------------------
  |  Branch (23103:6): [True: 0, False: 0]
  ------------------
23104|      0|	if (yych == 'f') goto yy1268;
  ------------------
  |  Branch (23104:6): [True: 0, False: 0]
  ------------------
23105|      0|	goto yy59;
23106|      0|yy1229:
23107|      0|	YYDEBUG(1229, *YYCURSOR);
23108|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23109|      0|	if (yych == 'Y') goto yy1270;
  ------------------
  |  Branch (23109:6): [True: 0, False: 0]
  ------------------
23110|      0|	if (yych == 'y') goto yy1270;
  ------------------
  |  Branch (23110:6): [True: 0, False: 0]
  ------------------
23111|      0|	goto yy59;
23112|      0|yy1230:
23113|      0|	YYDEBUG(1230, *YYCURSOR);
23114|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23115|      0|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23115:6): [True: 0, False: 0]
  ------------------
23116|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23117|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (23117:6): [True: 0, False: 0]
  ------------------
23118|      0|		if (yych == 'O') goto yy1228;
  ------------------
  |  Branch (23118:7): [True: 0, False: 0]
  ------------------
23119|      0|		goto yy59;
23120|      0|	} else {
23121|      0|		if (yych <= 'o') goto yy1228;
  ------------------
  |  Branch (23121:7): [True: 0, False: 0]
  ------------------
23122|      0|		if (yych == 0xC2) goto yy1160;
  ------------------
  |  Branch (23122:7): [True: 0, False: 0]
  ------------------
23123|      0|		goto yy59;
23124|      0|	}
23125|      0|yy1231:
23126|      0|	YYDEBUG(1231, *YYCURSOR);
23127|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23128|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23128:6): [True: 0, False: 0]
  ------------------
23129|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23130|      0|	if (yych == 0xAF) goto yy1271;
  ------------------
  |  Branch (23130:6): [True: 0, False: 0]
  ------------------
23131|      0|	goto yy59;
23132|      0|yy1232:
23133|      0|	YYDEBUG(1232, *YYCURSOR);
23134|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23135|      0|	if (yych == 'S') goto yy1272;
  ------------------
  |  Branch (23135:6): [True: 0, False: 0]
  ------------------
23136|      0|	if (yych == 's') goto yy1272;
  ------------------
  |  Branch (23136:6): [True: 0, False: 0]
  ------------------
23137|      0|	goto yy59;
23138|      0|yy1233:
23139|      0|	YYDEBUG(1233, *YYCURSOR);
23140|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23141|      0|	if (yych == 'E') goto yy1086;
  ------------------
  |  Branch (23141:6): [True: 0, False: 0]
  ------------------
23142|      0|	if (yych == 'e') goto yy1086;
  ------------------
  |  Branch (23142:6): [True: 0, False: 0]
  ------------------
23143|      0|	goto yy59;
23144|      0|yy1234:
23145|      0|	YYDEBUG(1234, *YYCURSOR);
23146|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23147|      0|	if (yych == 'D') goto yy1086;
  ------------------
  |  Branch (23147:6): [True: 0, False: 0]
  ------------------
23148|      0|	if (yych == 'd') goto yy1086;
  ------------------
  |  Branch (23148:6): [True: 0, False: 0]
  ------------------
23149|      0|	goto yy59;
23150|      0|yy1235:
23151|      0|	YYDEBUG(1235, *YYCURSOR);
23152|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23153|      0|	if (yych == 'F') goto yy1273;
  ------------------
  |  Branch (23153:6): [True: 0, False: 0]
  ------------------
23154|      0|	if (yych == 'f') goto yy1273;
  ------------------
  |  Branch (23154:6): [True: 0, False: 0]
  ------------------
23155|      0|	goto yy59;
23156|      0|yy1236:
23157|      0|	YYDEBUG(1236, *YYCURSOR);
23158|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23159|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23159:6): [True: 0, False: 0]
  ------------------
23160|      0|	if (yych <= '9') goto yy1275;
  ------------------
  |  Branch (23160:6): [True: 0, False: 0]
  ------------------
23161|      0|	goto yy59;
23162|      1|yy1237:
23163|      1|	YYDEBUG(1237, *YYCURSOR);
23164|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
23165|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23165:6): [True: 1, False: 0]
  ------------------
23166|      0|	if (yych <= '1') goto yy1275;
  ------------------
  |  Branch (23166:6): [True: 0, False: 0]
  ------------------
23167|      0|	goto yy59;
23168|     30|yy1238:
23169|     30|	YYDEBUG(1238, *YYCURSOR);
23170|     30|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     30|#define   YYCURSOR     cursor
  ------------------
23171|     30|	if (yych <= '9') {
  ------------------
  |  Branch (23171:6): [True: 30, False: 0]
  ------------------
23172|     30|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (23172:7): [True: 0, False: 30]
  ------------------
23173|     30|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (23173:7): [True: 1, False: 29]
  ------------------
23174|     29|		goto yy1277;
23175|     30|	} else {
23176|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (23176:7): [True: 0, False: 0]
  ------------------
23177|      0|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (23177:8): [True: 0, False: 0]
  ------------------
23178|      0|			goto yy97;
23179|      0|		} else {
23180|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (23180:8): [True: 0, False: 0]
  ------------------
23181|      0|			goto yy196;
23182|      0|		}
23183|      0|	}
23184|      0|yy1239:
23185|      0|	YYDEBUG(1239, *YYCURSOR);
23186|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23187|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23187:6): [True: 0, False: 0]
  ------------------
23188|      0|	if (yych <= '1') goto yy1278;
  ------------------
  |  Branch (23188:6): [True: 0, False: 0]
  ------------------
23189|      0|	if (yych <= '2') goto yy1279;
  ------------------
  |  Branch (23189:6): [True: 0, False: 0]
  ------------------
23190|      0|	goto yy59;
23191|      0|yy1240:
23192|      0|	YYDEBUG(1240, *YYCURSOR);
23193|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23194|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23194:6): [True: 0, False: 0]
  ------------------
23195|      0|	if (yych <= '5') goto yy1280;
  ------------------
  |  Branch (23195:6): [True: 0, False: 0]
  ------------------
23196|      0|	if (yych <= '9') goto yy1281;
  ------------------
  |  Branch (23196:6): [True: 0, False: 0]
  ------------------
23197|      0|	goto yy59;
23198|      0|yy1241:
23199|      0|	YYDEBUG(1241, *YYCURSOR);
23200|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23201|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23201:6): [True: 0, False: 0]
  ------------------
23202|      0|	if (yych <= '1') goto yy1282;
  ------------------
  |  Branch (23202:6): [True: 0, False: 0]
  ------------------
23203|      0|	if (yych <= '2') goto yy1283;
  ------------------
  |  Branch (23203:6): [True: 0, False: 0]
  ------------------
23204|      0|	if (yych <= '9') goto yy1184;
  ------------------
  |  Branch (23204:6): [True: 0, False: 0]
  ------------------
23205|      0|	goto yy59;
23206|    203|yy1242:
23207|    203|	YYDEBUG(1242, *YYCURSOR);
23208|    203|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    203|#define   YYCURSOR     cursor
  ------------------
23209|    203|	if (yych <= 0xC1) {
  ------------------
  |  Branch (23209:6): [True: 200, False: 3]
  ------------------
23210|    200|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (23210:7): [True: 9, False: 191]
  ------------------
23211|    191|		if (yych <= '9') goto yy1284;
  ------------------
  |  Branch (23211:7): [True: 177, False: 14]
  ------------------
23212|     14|		goto yy196;
23213|    191|	} else {
23214|      3|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (23214:7): [True: 0, False: 3]
  ------------------
23215|      3|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (23215:7): [True: 0, False: 3]
  ------------------
23216|      3|		goto yy196;
23217|      3|	}
23218|      0|yy1243:
23219|      0|	YYDEBUG(1243, *YYCURSOR);
23220|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23221|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23221:6): [True: 0, False: 0]
  ------------------
23222|      0|	if (yych <= '5') goto yy1285;
  ------------------
  |  Branch (23222:6): [True: 0, False: 0]
  ------------------
23223|      0|	if (yych <= '9') goto yy1286;
  ------------------
  |  Branch (23223:6): [True: 0, False: 0]
  ------------------
23224|      0|	if (yych >= ';') goto yy59;
  ------------------
  |  Branch (23224:6): [True: 0, False: 0]
  ------------------
23225|      0|yy1244:
23226|      0|	YYDEBUG(1244, *YYCURSOR);
23227|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23228|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23228:6): [True: 0, False: 0]
  ------------------
23229|      0|	if (yych <= '5') goto yy1287;
  ------------------
  |  Branch (23229:6): [True: 0, False: 0]
  ------------------
23230|      0|	goto yy59;
23231|      0|yy1245:
23232|      0|	YYDEBUG(1245, *YYCURSOR);
23233|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23234|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23234:6): [True: 0, False: 0]
  ------------------
23235|      0|	if (yych <= '9') goto yy1286;
  ------------------
  |  Branch (23235:6): [True: 0, False: 0]
  ------------------
23236|      0|	goto yy59;
23237|      0|yy1246:
23238|      0|	YYDEBUG(1246, *YYCURSOR);
23239|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23240|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23240:6): [True: 0, False: 0]
  ------------------
23241|      0|	if (yych <= '5') goto yy1285;
  ------------------
  |  Branch (23241:6): [True: 0, False: 0]
  ------------------
23242|      0|	if (yych <= '9') goto yy1286;
  ------------------
  |  Branch (23242:6): [True: 0, False: 0]
  ------------------
23243|      0|	goto yy59;
23244|      0|yy1247:
23245|      0|	YYDEBUG(1247, *YYCURSOR);
23246|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23247|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23247:6): [True: 0, False: 0]
  ------------------
23248|      0|	if (yych <= '1') goto yy1288;
  ------------------
  |  Branch (23248:6): [True: 0, False: 0]
  ------------------
23249|      0|	if (yych <= '2') goto yy1289;
  ------------------
  |  Branch (23249:6): [True: 0, False: 0]
  ------------------
23250|      0|	goto yy59;
23251|      0|yy1248:
23252|      0|	YYDEBUG(1248, *YYCURSOR);
23253|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23254|      0|	if (yych == 'M') goto yy1249;
  ------------------
  |  Branch (23254:6): [True: 0, False: 0]
  ------------------
23255|      0|	if (yych != 'm') goto yy59;
  ------------------
  |  Branch (23255:6): [True: 0, False: 0]
  ------------------
23256|      0|yy1249:
23257|      0|	YYDEBUG(1249, *YYCURSOR);
23258|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23259|      0|	if (yych <= 0x1F) {
  ------------------
  |  Branch (23259:6): [True: 0, False: 0]
  ------------------
23260|      0|		if (yych <= 0x00) goto yy1290;
  ------------------
  |  Branch (23260:7): [True: 0, False: 0]
  ------------------
23261|      0|		if (yych == '\t') goto yy1290;
  ------------------
  |  Branch (23261:7): [True: 0, False: 0]
  ------------------
23262|      0|		goto yy59;
23263|      0|	} else {
23264|      0|		if (yych <= ' ') goto yy1290;
  ------------------
  |  Branch (23264:7): [True: 0, False: 0]
  ------------------
23265|      0|		if (yych == '.') goto yy1292;
  ------------------
  |  Branch (23265:7): [True: 0, False: 0]
  ------------------
23266|      0|		goto yy59;
23267|      0|	}
23268|      0|yy1250:
23269|      0|	YYDEBUG(1250, *YYCURSOR);
23270|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23271|      0|	goto yy1070;
23272|      0|yy1251:
23273|      0|	YYDEBUG(1251, *YYCURSOR);
23274|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23275|      0|	if (yych == 'M') goto yy1252;
  ------------------
  |  Branch (23275:6): [True: 0, False: 0]
  ------------------
23276|      0|	if (yych != 'm') goto yy59;
  ------------------
  |  Branch (23276:6): [True: 0, False: 0]
  ------------------
23277|      0|yy1252:
23278|      0|	YYDEBUG(1252, *YYCURSOR);
23279|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23280|      0|	if (yych <= 0x1F) {
  ------------------
  |  Branch (23280:6): [True: 0, False: 0]
  ------------------
23281|      0|		if (yych <= 0x00) goto yy1293;
  ------------------
  |  Branch (23281:7): [True: 0, False: 0]
  ------------------
23282|      0|		if (yych == '\t') goto yy1293;
  ------------------
  |  Branch (23282:7): [True: 0, False: 0]
  ------------------
23283|      0|		goto yy59;
23284|      0|	} else {
23285|      0|		if (yych <= ' ') goto yy1293;
  ------------------
  |  Branch (23285:7): [True: 0, False: 0]
  ------------------
23286|      0|		if (yych == '.') goto yy1294;
  ------------------
  |  Branch (23286:7): [True: 0, False: 0]
  ------------------
23287|      0|		goto yy59;
23288|      0|	}
23289|      0|yy1253:
23290|      0|	YYDEBUG(1253, *YYCURSOR);
23291|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23292|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23292:6): [True: 0, False: 0]
  ------------------
23293|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23294|      0|	if (yych <= '`') {
  ------------------
  |  Branch (23294:6): [True: 0, False: 0]
  ------------------
23295|      0|		if (yych <= 'A') {
  ------------------
  |  Branch (23295:7): [True: 0, False: 0]
  ------------------
23296|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (23296:8): [True: 0, False: 0]
  ------------------
23297|      0|			goto yy1203;
23298|      0|		} else {
23299|      0|			if (yych == 'P') goto yy1203;
  ------------------
  |  Branch (23299:8): [True: 0, False: 0]
  ------------------
23300|      0|			goto yy59;
23301|      0|		}
23302|      0|	} else {
23303|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (23303:7): [True: 0, False: 0]
  ------------------
23304|      0|			if (yych <= 'a') goto yy1203;
  ------------------
  |  Branch (23304:8): [True: 0, False: 0]
  ------------------
23305|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (23305:8): [True: 0, False: 0]
  ------------------
23306|      0|			goto yy1203;
23307|      0|		} else {
23308|      0|			if (yych == 0xC2) goto yy1204;
  ------------------
  |  Branch (23308:8): [True: 0, False: 0]
  ------------------
23309|      0|			goto yy59;
23310|      0|		}
23311|      0|	}
23312|      0|yy1254:
23313|      0|	YYDEBUG(1254, *YYCURSOR);
23314|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23315|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23315:6): [True: 0, False: 0]
  ------------------
23316|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23317|      0|	if (yych == 0xAF) goto yy1295;
  ------------------
  |  Branch (23317:6): [True: 0, False: 0]
  ------------------
23318|      0|	goto yy59;
23319|      1|yy1255:
23320|      1|	YYDEBUG(1255, *YYCURSOR);
23321|      1|	yyaccept = 20;
23322|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
23323|      1|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (23323:6): [True: 0, False: 1]
  ------------------
23324|      1|	if (yych <= '9') goto yy1296;
  ------------------
  |  Branch (23324:6): [True: 1, False: 0]
  ------------------
23325|      0|	if (yych <= ':') goto yy1297;
  ------------------
  |  Branch (23325:6): [True: 0, False: 0]
  ------------------
23326|      0|	goto yy849;
23327|      0|yy1256:
23328|      0|	YYDEBUG(1256, *YYCURSOR);
23329|      0|	yyaccept = 20;
23330|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23331|      0|	if (yych <= '5') {
  ------------------
  |  Branch (23331:6): [True: 0, False: 0]
  ------------------
23332|      0|		if (yych <= '/') goto yy849;
  ------------------
  |  Branch (23332:7): [True: 0, False: 0]
  ------------------
23333|      0|		if (yych <= '4') goto yy1296;
  ------------------
  |  Branch (23333:7): [True: 0, False: 0]
  ------------------
23334|      0|		goto yy1298;
23335|      0|	} else {
23336|      0|		if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (23336:7): [True: 0, False: 0]
  ------------------
23337|      0|		if (yych <= ':') goto yy1297;
  ------------------
  |  Branch (23337:7): [True: 0, False: 0]
  ------------------
23338|      0|		goto yy849;
23339|      0|	}
23340|      0|yy1257:
23341|      0|	YYDEBUG(1257, *YYCURSOR);
23342|      0|	yyaccept = 20;
23343|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23344|      0|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (23344:6): [True: 0, False: 0]
  ------------------
23345|      0|	if (yych <= '5') goto yy1298;
  ------------------
  |  Branch (23345:6): [True: 0, False: 0]
  ------------------
23346|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (23346:6): [True: 0, False: 0]
  ------------------
23347|      0|	if (yych <= ':') goto yy1297;
  ------------------
  |  Branch (23347:6): [True: 0, False: 0]
  ------------------
23348|      0|	goto yy849;
23349|      0|yy1258:
23350|      0|	YYDEBUG(1258, *YYCURSOR);
23351|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23352|      0|	if (yych <= '@') {
  ------------------
  |  Branch (23352:6): [True: 0, False: 0]
  ------------------
23353|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (23353:7): [True: 0, False: 0]
  ------------------
23354|      0|		goto yy849;
23355|      0|	} else {
23356|      0|		if (yych <= 'Z') goto yy1299;
  ------------------
  |  Branch (23356:7): [True: 0, False: 0]
  ------------------
23357|      0|		if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23357:7): [True: 0, False: 0]
  ------------------
23358|      0|		if (yych <= 'z') goto yy1299;
  ------------------
  |  Branch (23358:7): [True: 0, False: 0]
  ------------------
23359|      0|		goto yy849;
23360|      0|	}
23361|      0|yy1259:
23362|      0|	YYDEBUG(1259, *YYCURSOR);
23363|      0|	yyaccept = 20;
23364|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23365|      0|	if (yych <= '/') {
  ------------------
  |  Branch (23365:6): [True: 0, False: 0]
  ------------------
23366|      0|		if (yych <= ',') {
  ------------------
  |  Branch (23366:7): [True: 0, False: 0]
  ------------------
23367|      0|			if (yych == ')') goto yy1078;
  ------------------
  |  Branch (23367:8): [True: 0, False: 0]
  ------------------
23368|      0|			goto yy849;
23369|      0|		} else {
23370|      0|			if (yych == '.') goto yy849;
  ------------------
  |  Branch (23370:8): [True: 0, False: 0]
  ------------------
23371|      0|			goto yy1300;
23372|      0|		}
23373|      0|	} else {
23374|      0|		if (yych <= '^') {
  ------------------
  |  Branch (23374:7): [True: 0, False: 0]
  ------------------
23375|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (23375:8): [True: 0, False: 0]
  ------------------
23376|      0|			if (yych <= 'Z') goto yy1299;
  ------------------
  |  Branch (23376:8): [True: 0, False: 0]
  ------------------
23377|      0|			goto yy849;
23378|      0|		} else {
23379|      0|			if (yych <= '_') goto yy1300;
  ------------------
  |  Branch (23379:8): [True: 0, False: 0]
  ------------------
23380|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23380:8): [True: 0, False: 0]
  ------------------
23381|      0|			if (yych <= 'z') goto yy1301;
  ------------------
  |  Branch (23381:8): [True: 0, False: 0]
  ------------------
23382|      0|			goto yy849;
23383|      0|		}
23384|      0|	}
23385|      0|yy1260:
23386|      0|	YYDEBUG(1260, *YYCURSOR);
23387|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23388|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (23388:6): [True: 0, False: 0]
  ------------------
23389|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (23389:7): [True: 0, False: 0]
  ------------------
23390|      0|		if (yych <= '@') goto yy849;
  ------------------
  |  Branch (23390:7): [True: 0, False: 0]
  ------------------
23391|      0|		goto yy1299;
23392|      0|	} else {
23393|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (23393:7): [True: 0, False: 0]
  ------------------
23394|      0|			if (yych <= 'T') goto yy1302;
  ------------------
  |  Branch (23394:8): [True: 0, False: 0]
  ------------------
23395|      0|			goto yy1299;
23396|      0|		} else {
23397|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23397:8): [True: 0, False: 0]
  ------------------
23398|      0|			if (yych <= 'z') goto yy1299;
  ------------------
  |  Branch (23398:8): [True: 0, False: 0]
  ------------------
23399|      0|			goto yy849;
23400|      0|		}
23401|      0|	}
23402|      0|yy1261:
23403|      0|	YYDEBUG(1261, *YYCURSOR);
23404|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23405|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23405:6): [True: 0, False: 0]
  ------------------
23406|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23407|      0|	if (yych <= '@') {
  ------------------
  |  Branch (23407:6): [True: 0, False: 0]
  ------------------
23408|      0|		if (yych <= '*') {
  ------------------
  |  Branch (23408:7): [True: 0, False: 0]
  ------------------
23409|      0|			if (yych == '(') goto yy1209;
  ------------------
  |  Branch (23409:8): [True: 0, False: 0]
  ------------------
23410|      0|			goto yy59;
23411|      0|		} else {
23412|      0|			if (yych == ',') goto yy59;
  ------------------
  |  Branch (23412:8): [True: 0, False: 0]
  ------------------
23413|      0|			if (yych <= '-') goto yy1210;
  ------------------
  |  Branch (23413:8): [True: 0, False: 0]
  ------------------
23414|      0|			goto yy59;
23415|      0|		}
23416|      0|	} else {
23417|      0|		if (yych <= '`') {
  ------------------
  |  Branch (23417:7): [True: 0, False: 0]
  ------------------
23418|      0|			if (yych == 'G') goto yy1212;
  ------------------
  |  Branch (23418:8): [True: 0, False: 0]
  ------------------
23419|      0|			if (yych <= 'Z') goto yy1211;
  ------------------
  |  Branch (23419:8): [True: 0, False: 0]
  ------------------
23420|      0|			goto yy59;
23421|      0|		} else {
23422|      0|			if (yych <= 'z') goto yy1213;
  ------------------
  |  Branch (23422:8): [True: 0, False: 0]
  ------------------
23423|      0|			if (yych == 0xC2) goto yy1214;
  ------------------
  |  Branch (23423:8): [True: 0, False: 0]
  ------------------
23424|      0|			goto yy59;
23425|      0|		}
23426|      0|	}
23427|      0|yy1262:
23428|      0|	YYDEBUG(1262, *YYCURSOR);
23429|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23430|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23430:6): [True: 0, False: 0]
  ------------------
23431|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23432|      0|	if (yych == 0xAF) goto yy1303;
  ------------------
  |  Branch (23432:6): [True: 0, False: 0]
  ------------------
23433|      0|	goto yy59;
23434|      0|yy1263:
23435|      0|	YYDEBUG(1263, *YYCURSOR);
23436|      0|	yyaccept = 20;
23437|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23438|      0|	if (yych <= ')') {
  ------------------
  |  Branch (23438:6): [True: 0, False: 0]
  ------------------
23439|      0|		if (yych <= '\t') {
  ------------------
  |  Branch (23439:7): [True: 0, False: 0]
  ------------------
23440|      0|			if (yych <= 0x00) goto yy1222;
  ------------------
  |  Branch (23440:8): [True: 0, False: 0]
  ------------------
23441|      0|			if (yych <= 0x08) goto yy849;
  ------------------
  |  Branch (23441:8): [True: 0, False: 0]
  ------------------
23442|      0|			goto yy1222;
23443|      0|		} else {
23444|      0|			if (yych == ' ') goto yy1222;
  ------------------
  |  Branch (23444:8): [True: 0, False: 0]
  ------------------
23445|      0|			if (yych <= '(') goto yy849;
  ------------------
  |  Branch (23445:8): [True: 0, False: 0]
  ------------------
23446|      0|			goto yy1078;
23447|      0|		}
23448|      0|	} else {
23449|      0|		if (yych <= '@') {
  ------------------
  |  Branch (23449:7): [True: 0, False: 0]
  ------------------
23450|      0|			if (yych == '.') goto yy1224;
  ------------------
  |  Branch (23450:8): [True: 0, False: 0]
  ------------------
23451|      0|			goto yy849;
23452|      0|		} else {
23453|      0|			if (yych <= 'Z') goto yy1299;
  ------------------
  |  Branch (23453:8): [True: 0, False: 0]
  ------------------
23454|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23454:8): [True: 0, False: 0]
  ------------------
23455|      0|			if (yych <= 'z') goto yy1299;
  ------------------
  |  Branch (23455:8): [True: 0, False: 0]
  ------------------
23456|      0|			goto yy849;
23457|      0|		}
23458|      0|	}
23459|      0|yy1264:
23460|      0|	YYDEBUG(1264, *YYCURSOR);
23461|      0|	yyaccept = 20;
23462|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23463|      0|	if (yych <= '-') {
  ------------------
  |  Branch (23463:6): [True: 0, False: 0]
  ------------------
23464|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (23464:7): [True: 0, False: 0]
  ------------------
23465|      0|			if (yych <= 0x00) goto yy1222;
  ------------------
  |  Branch (23465:8): [True: 0, False: 0]
  ------------------
23466|      0|			if (yych == '\t') goto yy1222;
  ------------------
  |  Branch (23466:8): [True: 0, False: 0]
  ------------------
23467|      0|			goto yy849;
23468|      0|		} else {
23469|      0|			if (yych <= '(') {
  ------------------
  |  Branch (23469:8): [True: 0, False: 0]
  ------------------
23470|      0|				if (yych <= ' ') goto yy1222;
  ------------------
  |  Branch (23470:9): [True: 0, False: 0]
  ------------------
23471|      0|				goto yy849;
23472|      0|			} else {
23473|      0|				if (yych <= ')') goto yy1078;
  ------------------
  |  Branch (23473:9): [True: 0, False: 0]
  ------------------
23474|      0|				if (yych <= ',') goto yy849;
  ------------------
  |  Branch (23474:9): [True: 0, False: 0]
  ------------------
23475|      0|				goto yy1300;
23476|      0|			}
23477|      0|		}
23478|      0|	} else {
23479|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (23479:7): [True: 0, False: 0]
  ------------------
23480|      0|			if (yych <= '.') goto yy1224;
  ------------------
  |  Branch (23480:8): [True: 0, False: 0]
  ------------------
23481|      0|			if (yych <= '/') goto yy1300;
  ------------------
  |  Branch (23481:8): [True: 0, False: 0]
  ------------------
23482|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (23482:8): [True: 0, False: 0]
  ------------------
23483|      0|			goto yy1299;
23484|      0|		} else {
23485|      0|			if (yych <= '_') {
  ------------------
  |  Branch (23485:8): [True: 0, False: 0]
  ------------------
23486|      0|				if (yych <= '^') goto yy849;
  ------------------
  |  Branch (23486:9): [True: 0, False: 0]
  ------------------
23487|      0|				goto yy1300;
23488|      0|			} else {
23489|      0|				if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23489:9): [True: 0, False: 0]
  ------------------
23490|      0|				if (yych <= 'z') goto yy1301;
  ------------------
  |  Branch (23490:9): [True: 0, False: 0]
  ------------------
23491|      0|				goto yy849;
23492|      0|			}
23493|      0|		}
23494|      0|	}
23495|      0|yy1265:
23496|      0|	YYDEBUG(1265, *YYCURSOR);
23497|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23498|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23498:6): [True: 0, False: 0]
  ------------------
23499|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23500|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (23500:6): [True: 0, False: 0]
  ------------------
23501|      0|		if (yych <= ',') {
  ------------------
  |  Branch (23501:7): [True: 0, False: 0]
  ------------------
23502|      0|			if (yych <= '(') {
  ------------------
  |  Branch (23502:8): [True: 0, False: 0]
  ------------------
23503|      0|				if (yych <= '\'') goto yy59;
  ------------------
  |  Branch (23503:9): [True: 0, False: 0]
  ------------------
23504|      0|				goto yy1209;
23505|      0|			} else {
23506|      0|				if (yych == '+') goto yy1210;
  ------------------
  |  Branch (23506:9): [True: 0, False: 0]
  ------------------
23507|      0|				goto yy59;
23508|      0|			}
23509|      0|		} else {
23510|      0|			if (yych <= '@') {
  ------------------
  |  Branch (23510:8): [True: 0, False: 0]
  ------------------
23511|      0|				if (yych <= '-') goto yy1210;
  ------------------
  |  Branch (23511:9): [True: 0, False: 0]
  ------------------
23512|      0|				goto yy59;
23513|      0|			} else {
23514|      0|				if (yych <= 'A') goto yy1218;
  ------------------
  |  Branch (23514:9): [True: 0, False: 0]
  ------------------
23515|      0|				if (yych <= 'F') goto yy1211;
  ------------------
  |  Branch (23515:9): [True: 0, False: 0]
  ------------------
23516|      0|				goto yy1212;
23517|      0|			}
23518|      0|		}
23519|      0|	} else {
23520|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (23520:7): [True: 0, False: 0]
  ------------------
23521|      0|			if (yych <= 'P') {
  ------------------
  |  Branch (23521:8): [True: 0, False: 0]
  ------------------
23522|      0|				if (yych <= 'O') goto yy1211;
  ------------------
  |  Branch (23522:9): [True: 0, False: 0]
  ------------------
23523|      0|				goto yy1218;
23524|      0|			} else {
23525|      0|				if (yych <= 'Z') goto yy1211;
  ------------------
  |  Branch (23525:9): [True: 0, False: 0]
  ------------------
23526|      0|				if (yych <= '`') goto yy59;
  ------------------
  |  Branch (23526:9): [True: 0, False: 0]
  ------------------
23527|      0|				goto yy1219;
23528|      0|			}
23529|      0|		} else {
23530|      0|			if (yych <= 'z') {
  ------------------
  |  Branch (23530:8): [True: 0, False: 0]
  ------------------
23531|      0|				if (yych == 'p') goto yy1219;
  ------------------
  |  Branch (23531:9): [True: 0, False: 0]
  ------------------
23532|      0|				goto yy1213;
23533|      0|			} else {
23534|      0|				if (yych == 0xC2) goto yy1220;
  ------------------
  |  Branch (23534:9): [True: 0, False: 0]
  ------------------
23535|      0|				goto yy59;
23536|      0|			}
23537|      0|		}
23538|      0|	}
23539|      0|yy1266:
23540|      0|	YYDEBUG(1266, *YYCURSOR);
23541|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23542|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23542:6): [True: 0, False: 0]
  ------------------
23543|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23544|      0|	if (yych == 0xAF) goto yy1304;
  ------------------
  |  Branch (23544:6): [True: 0, False: 0]
  ------------------
23545|      0|	goto yy59;
23546|      0|yy1267:
23547|      0|	YYDEBUG(1267, *YYCURSOR);
23548|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23549|      0|	if (yych == 'G') goto yy1305;
  ------------------
  |  Branch (23549:6): [True: 0, False: 0]
  ------------------
23550|      0|	if (yych == 'g') goto yy1305;
  ------------------
  |  Branch (23550:6): [True: 0, False: 0]
  ------------------
23551|      0|	goto yy59;
23552|      0|yy1268:
23553|      0|	YYDEBUG(1268, *YYCURSOR);
23554|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23555|      0|	YYDEBUG(1269, *YYCURSOR);
23556|      0|#line 1327 "ext/date/lib/parse_date.re"
23557|      0|	{
23558|      0|		timelib_sll i;
23559|      0|		int         behavior = 0;
23560|      0|		DEBUG_OUTPUT("weekdayof");
23561|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
23562|      0|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      0|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
23563|      0|		TIMELIB_HAVE_SPECIAL_RELATIVE();
  ------------------
  |  |  104|      0|#define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
  ------------------
23564|       |
23565|      0|		i = timelib_get_relative_text(&ptr, &behavior);
23566|      0|		timelib_eat_spaces(&ptr);
23567|      0|		if (i > 0) { /* first, second... etc */
  ------------------
  |  Branch (23567:7): [True: 0, False: 0]
  ------------------
23568|      0|			s->time->relative.special.type = TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH;
  ------------------
  |  |   78|      0|#define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH      0x02
  ------------------
23569|      0|			timelib_set_relative(&ptr, i, 1, s, TIMELIB_TIME_PART_DONT_KEEP);
  ------------------
  |  |   84|      0|#define TIMELIB_TIME_PART_DONT_KEEP               0x00
  ------------------
23570|      0|		} else { /* last */
23571|      0|			s->time->relative.special.type = TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH;
  ------------------
  |  |   79|      0|#define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03
  ------------------
23572|      0|			timelib_set_relative(&ptr, i, behavior, s, TIMELIB_TIME_PART_DONT_KEEP);
  ------------------
  |  |   84|      0|#define TIMELIB_TIME_PART_DONT_KEEP               0x00
  ------------------
23573|      0|		}
23574|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23575|      0|		return TIMELIB_WEEK_DAY_OF_MONTH;
  ------------------
  |  |   73|      0|#define TIMELIB_WEEK_DAY_OF_MONTH 281
  ------------------
23576|      0|	}
23577|      0|#line 23578 "ext/date/lib/parse_date.c"
23578|      0|yy1270:
23579|      0|	YYDEBUG(1270, *YYCURSOR);
23580|      0|	yyaccept = 24;
23581|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23582|      0|	if (yych <= 'S') {
  ------------------
  |  Branch (23582:6): [True: 0, False: 0]
  ------------------
23583|      0|		if (yych <= 0x1F) {
  ------------------
  |  Branch (23583:7): [True: 0, False: 0]
  ------------------
23584|      0|			if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (23584:8): [True: 0, False: 0]
  ------------------
23585|      0|			goto yy982;
23586|      0|		} else {
23587|      0|			if (yych <= ' ') goto yy1157;
  ------------------
  |  Branch (23587:8): [True: 0, False: 0]
  ------------------
23588|      0|			if (yych <= 'R') goto yy982;
  ------------------
  |  Branch (23588:8): [True: 0, False: 0]
  ------------------
23589|      0|			goto yy1306;
23590|      0|		}
23591|      0|	} else {
23592|      0|		if (yych <= 0xC1) {
  ------------------
  |  Branch (23592:7): [True: 0, False: 0]
  ------------------
23593|      0|			if (yych == 's') goto yy1306;
  ------------------
  |  Branch (23593:8): [True: 0, False: 0]
  ------------------
23594|      0|			goto yy982;
23595|      0|		} else {
23596|      0|			if (yych <= 0xC2) goto yy1160;
  ------------------
  |  Branch (23596:8): [True: 0, False: 0]
  ------------------
23597|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (23597:8): [True: 0, False: 0]
  ------------------
23598|      0|			goto yy982;
23599|      0|		}
23600|      0|	}
23601|      0|yy1271:
23602|      0|	YYDEBUG(1271, *YYCURSOR);
23603|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23604|      0|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23604:6): [True: 0, False: 0]
  ------------------
23605|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23606|      0|	if (yych <= 'n') {
  ------------------
  |  Branch (23606:6): [True: 0, False: 0]
  ------------------
23607|      0|		if (yych == 'O') goto yy1228;
  ------------------
  |  Branch (23607:7): [True: 0, False: 0]
  ------------------
23608|      0|		goto yy59;
23609|      0|	} else {
23610|      0|		if (yych <= 'o') goto yy1228;
  ------------------
  |  Branch (23610:7): [True: 0, False: 0]
  ------------------
23611|      0|		if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (23611:7): [True: 0, False: 0]
  ------------------
23612|      0|		goto yy59;
23613|      0|	}
23614|      0|yy1272:
23615|      0|	YYDEBUG(1272, *YYCURSOR);
23616|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23617|      0|	if (yych == 'E') goto yy1307;
  ------------------
  |  Branch (23617:6): [True: 0, False: 0]
  ------------------
23618|      0|	if (yych == 'e') goto yy1307;
  ------------------
  |  Branch (23618:6): [True: 0, False: 0]
  ------------------
23619|      0|	goto yy59;
23620|      0|yy1273:
23621|      0|	YYDEBUG(1273, *YYCURSOR);
23622|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23623|      0|	YYDEBUG(1274, *YYCURSOR);
23624|      0|#line 1287 "ext/date/lib/parse_date.re"
23625|      0|	{
23626|      0|		DEBUG_OUTPUT("firstdayof | lastdayof");
23627|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
23628|      0|		TIMELIB_HAVE_RELATIVE();
  ------------------
  |  |  102|      0|#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
  ------------------
23629|       |
23630|       |		/* skip "last day of" or "first day of" */
23631|      0|		if (*ptr == 'l' || *ptr == 'L') {
  ------------------
  |  Branch (23631:7): [True: 0, False: 0]
  |  Branch (23631:22): [True: 0, False: 0]
  ------------------
23632|      0|			s->time->relative.first_last_day_of = TIMELIB_SPECIAL_LAST_DAY_OF_MONTH;
  ------------------
  |  |   82|      0|#define TIMELIB_SPECIAL_LAST_DAY_OF_MONTH         0x02
  ------------------
23633|      0|		} else {
23634|      0|			s->time->relative.first_last_day_of = TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH;
  ------------------
  |  |   81|      0|#define TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH        0x01
  ------------------
23635|      0|		}
23636|       |
23637|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23638|      0|		return TIMELIB_LF_DAY_OF_MONTH;
  ------------------
  |  |   72|      0|#define TIMELIB_LF_DAY_OF_MONTH 280
  ------------------
23639|      0|	}
23640|      0|#line 23641 "ext/date/lib/parse_date.c"
23641|      0|yy1275:
23642|      0|	YYDEBUG(1275, *YYCURSOR);
23643|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23644|      0|	YYDEBUG(1276, *YYCURSOR);
23645|      0|#line 1523 "ext/date/lib/parse_date.re"
23646|      0|	{
23647|      0|		DEBUG_OUTPUT("iso8601datex");
23648|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
23649|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23650|      0|		s->time->y = timelib_get_signed_nr(s, &ptr, 19);
23651|      0|		s->time->m = timelib_get_nr(&ptr, 2);
23652|      0|		s->time->d = timelib_get_nr(&ptr, 2);
23653|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23654|      0|		return TIMELIB_ISO_DATE;
  ------------------
  |  |   59|      0|#define TIMELIB_ISO_DATE       267
  ------------------
23655|      0|	}
23656|      0|#line 23657 "ext/date/lib/parse_date.c"
23657|     29|yy1277:
23658|     29|	YYDEBUG(1277, *YYCURSOR);
23659|     29|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     29|#define   YYCURSOR     cursor
  ------------------
23660|     29|	if (yych <= '9') {
  ------------------
  |  Branch (23660:6): [True: 24, False: 5]
  ------------------
23661|     24|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (23661:7): [True: 0, False: 24]
  ------------------
23662|     24|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (23662:7): [True: 0, False: 24]
  ------------------
23663|     24|		goto yy1308;
23664|     24|	} else {
23665|      5|		if (yych <= 0xC2) {
  ------------------
  |  Branch (23665:7): [True: 3, False: 2]
  ------------------
23666|      3|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (23666:8): [True: 2, False: 1]
  ------------------
23667|      1|			goto yy97;
23668|      3|		} else {
23669|      2|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (23669:8): [True: 1, False: 1]
  ------------------
23670|      1|			goto yy196;
23671|      2|		}
23672|      5|	}
23673|      0|yy1278:
23674|      0|	YYDEBUG(1278, *YYCURSOR);
23675|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23676|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23676:6): [True: 0, False: 0]
  ------------------
23677|      0|	if (yych <= '9') goto yy1309;
  ------------------
  |  Branch (23677:6): [True: 0, False: 0]
  ------------------
23678|      0|	goto yy59;
23679|      0|yy1279:
23680|      0|	YYDEBUG(1279, *YYCURSOR);
23681|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23682|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23682:6): [True: 0, False: 0]
  ------------------
23683|      0|	if (yych <= '4') goto yy1309;
  ------------------
  |  Branch (23683:6): [True: 0, False: 0]
  ------------------
23684|      0|	goto yy59;
23685|      0|yy1280:
23686|      0|	YYDEBUG(1280, *YYCURSOR);
23687|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23688|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23688:6): [True: 0, False: 0]
  ------------------
23689|      0|	if (yych <= '9') goto yy1281;
  ------------------
  |  Branch (23689:6): [True: 0, False: 0]
  ------------------
23690|      0|	if (yych <= ':') goto yy1310;
  ------------------
  |  Branch (23690:6): [True: 0, False: 0]
  ------------------
23691|      0|	goto yy59;
23692|      0|yy1281:
23693|      0|	YYDEBUG(1281, *YYCURSOR);
23694|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23695|      0|	if (yych == ':') goto yy1310;
  ------------------
  |  Branch (23695:6): [True: 0, False: 0]
  ------------------
23696|      0|	goto yy59;
23697|      0|yy1282:
23698|      0|	YYDEBUG(1282, *YYCURSOR);
23699|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23700|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23700:6): [True: 0, False: 0]
  ------------------
23701|      0|	if (yych <= '9') goto yy1311;
  ------------------
  |  Branch (23701:6): [True: 0, False: 0]
  ------------------
23702|      0|	if (yych <= ':') goto yy1240;
  ------------------
  |  Branch (23702:6): [True: 0, False: 0]
  ------------------
23703|      0|	goto yy59;
23704|      0|yy1283:
23705|      0|	YYDEBUG(1283, *YYCURSOR);
23706|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23707|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23707:6): [True: 0, False: 0]
  ------------------
23708|      0|	if (yych <= '4') goto yy1311;
  ------------------
  |  Branch (23708:6): [True: 0, False: 0]
  ------------------
23709|      0|	if (yych == ':') goto yy1240;
  ------------------
  |  Branch (23709:6): [True: 0, False: 0]
  ------------------
23710|      0|	goto yy59;
23711|    177|yy1284:
23712|    177|	YYDEBUG(1284, *YYCURSOR);
23713|    177|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    177|#define   YYCURSOR     cursor
  ------------------
23714|    177|	if (yych <= 0xC1) {
  ------------------
  |  Branch (23714:6): [True: 166, False: 11]
  ------------------
23715|    166|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (23715:7): [True: 16, False: 150]
  ------------------
23716|    150|		if (yych <= '9') goto yy1312;
  ------------------
  |  Branch (23716:7): [True: 139, False: 11]
  ------------------
23717|     11|		goto yy196;
23718|    150|	} else {
23719|     11|		if (yych <= 0xC2) goto yy97;
  ------------------
  |  Branch (23719:7): [True: 3, False: 8]
  ------------------
23720|      8|		if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (23720:7): [True: 0, False: 8]
  ------------------
23721|      8|		goto yy196;
23722|      8|	}
23723|      0|yy1285:
23724|      0|	YYDEBUG(1285, *YYCURSOR);
23725|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23726|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23726:6): [True: 0, False: 0]
  ------------------
23727|      0|	if (yych <= '5') goto yy1310;
  ------------------
  |  Branch (23727:6): [True: 0, False: 0]
  ------------------
23728|      0|	if (yych <= '6') goto yy1313;
  ------------------
  |  Branch (23728:6): [True: 0, False: 0]
  ------------------
23729|      0|	if (yych >= ':') goto yy59;
  ------------------
  |  Branch (23729:6): [True: 0, False: 0]
  ------------------
23730|      0|yy1286:
23731|      0|	YYDEBUG(1286, *YYCURSOR);
23732|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23733|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23733:6): [True: 0, False: 0]
  ------------------
23734|      0|	if (yych <= '5') goto yy1314;
  ------------------
  |  Branch (23734:6): [True: 0, False: 0]
  ------------------
23735|      0|	if (yych <= '6') goto yy1315;
  ------------------
  |  Branch (23735:6): [True: 0, False: 0]
  ------------------
23736|      0|	goto yy59;
23737|      0|yy1287:
23738|      0|	YYDEBUG(1287, *YYCURSOR);
23739|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23740|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23740:6): [True: 0, False: 0]
  ------------------
23741|      0|	if (yych <= '9') goto yy1316;
  ------------------
  |  Branch (23741:6): [True: 0, False: 0]
  ------------------
23742|      0|	goto yy59;
23743|      0|yy1288:
23744|      0|	YYDEBUG(1288, *YYCURSOR);
23745|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23746|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23746:6): [True: 0, False: 0]
  ------------------
23747|      0|	if (yych <= '9') goto yy1317;
  ------------------
  |  Branch (23747:6): [True: 0, False: 0]
  ------------------
23748|      0|	goto yy59;
23749|      0|yy1289:
23750|      0|	YYDEBUG(1289, *YYCURSOR);
23751|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23752|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23752:6): [True: 0, False: 0]
  ------------------
23753|      0|	if (yych <= '4') goto yy1317;
  ------------------
  |  Branch (23753:6): [True: 0, False: 0]
  ------------------
23754|      0|	goto yy59;
23755|      0|yy1290:
23756|      0|	YYDEBUG(1290, *YYCURSOR);
23757|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23758|      0|	YYDEBUG(1291, *YYCURSOR);
23759|      0|#line 1367 "ext/date/lib/parse_date.re"
23760|      0|	{
23761|      0|		DEBUG_OUTPUT("mssqltime");
23762|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
23763|      0|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      0|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
23764|      0|		s->time->h = timelib_get_nr(&ptr, 2);
23765|      0|		s->time->i = timelib_get_nr(&ptr, 2);
23766|      0|		if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (23766:7): [True: 0, False: 0]
  |  Branch (23766:22): [True: 0, False: 0]
  ------------------
23767|      0|			s->time->s = timelib_get_nr(&ptr, 2);
23768|       |
23769|      0|			if (*ptr == ':' || *ptr == '.') {
  ------------------
  |  Branch (23769:8): [True: 0, False: 0]
  |  Branch (23769:23): [True: 0, False: 0]
  ------------------
23770|      0|				s->time->us = timelib_get_frac_nr(&ptr);
23771|      0|			}
23772|      0|		}
23773|      0|		timelib_eat_spaces(&ptr);
23774|      0|		s->time->h += timelib_meridian(&ptr, s->time->h);
23775|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
23776|      0|		return TIMELIB_TIME24_WITH_ZONE;
  ------------------
  |  |   70|      0|#define TIMELIB_TIME24_WITH_ZONE 278
  ------------------
23777|      0|	}
23778|      0|#line 23779 "ext/date/lib/parse_date.c"
23779|      0|yy1292:
23780|      0|	YYDEBUG(1292, *YYCURSOR);
23781|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23782|      0|	if (yych <= '\t') {
  ------------------
  |  Branch (23782:6): [True: 0, False: 0]
  ------------------
23783|      0|		if (yych <= 0x00) goto yy1290;
  ------------------
  |  Branch (23783:7): [True: 0, False: 0]
  ------------------
23784|      0|		if (yych <= 0x08) goto yy59;
  ------------------
  |  Branch (23784:7): [True: 0, False: 0]
  ------------------
23785|      0|		goto yy1290;
23786|      0|	} else {
23787|      0|		if (yych == ' ') goto yy1290;
  ------------------
  |  Branch (23787:7): [True: 0, False: 0]
  ------------------
23788|      0|		goto yy59;
23789|      0|	}
23790|      0|yy1293:
23791|      0|	YYDEBUG(1293, *YYCURSOR);
23792|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23793|      0|	goto yy1145;
23794|      0|yy1294:
23795|      0|	YYDEBUG(1294, *YYCURSOR);
23796|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23797|      0|	if (yych <= '\t') {
  ------------------
  |  Branch (23797:6): [True: 0, False: 0]
  ------------------
23798|      0|		if (yych <= 0x00) goto yy1293;
  ------------------
  |  Branch (23798:7): [True: 0, False: 0]
  ------------------
23799|      0|		if (yych <= 0x08) goto yy59;
  ------------------
  |  Branch (23799:7): [True: 0, False: 0]
  ------------------
23800|      0|		goto yy1293;
23801|      0|	} else {
23802|      0|		if (yych == ' ') goto yy1293;
  ------------------
  |  Branch (23802:7): [True: 0, False: 0]
  ------------------
23803|      0|		goto yy59;
23804|      0|	}
23805|      0|yy1295:
23806|      0|	YYDEBUG(1295, *YYCURSOR);
23807|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23808|      0|	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23808:6): [True: 0, False: 0]
  ------------------
23809|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23810|      0|	if (yych <= '`') {
  ------------------
  |  Branch (23810:6): [True: 0, False: 0]
  ------------------
23811|      0|		if (yych <= 'A') {
  ------------------
  |  Branch (23811:7): [True: 0, False: 0]
  ------------------
23812|      0|			if (yych <= '@') goto yy59;
  ------------------
  |  Branch (23812:8): [True: 0, False: 0]
  ------------------
23813|      0|			goto yy1203;
23814|      0|		} else {
23815|      0|			if (yych == 'P') goto yy1203;
  ------------------
  |  Branch (23815:8): [True: 0, False: 0]
  ------------------
23816|      0|			goto yy59;
23817|      0|		}
23818|      0|	} else {
23819|      0|		if (yych <= 'p') {
  ------------------
  |  Branch (23819:7): [True: 0, False: 0]
  ------------------
23820|      0|			if (yych <= 'a') goto yy1203;
  ------------------
  |  Branch (23820:8): [True: 0, False: 0]
  ------------------
23821|      0|			if (yych <= 'o') goto yy59;
  ------------------
  |  Branch (23821:8): [True: 0, False: 0]
  ------------------
23822|      0|			goto yy1203;
23823|      0|		} else {
23824|      0|			if (yych == 0xE2) goto yy1205;
  ------------------
  |  Branch (23824:8): [True: 0, False: 0]
  ------------------
23825|      0|			goto yy59;
23826|      0|		}
23827|      0|	}
23828|      1|yy1296:
23829|      1|	YYDEBUG(1296, *YYCURSOR);
23830|      1|	yyaccept = 20;
23831|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
23832|      1|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (23832:6): [True: 0, False: 1]
  ------------------
23833|      1|	if (yych <= '5') goto yy1318;
  ------------------
  |  Branch (23833:6): [True: 1, False: 0]
  ------------------
23834|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (23834:6): [True: 0, False: 0]
  ------------------
23835|      0|	if (yych <= ':') goto yy1319;
  ------------------
  |  Branch (23835:6): [True: 0, False: 0]
  ------------------
23836|      0|	goto yy849;
23837|      0|yy1297:
23838|      0|	YYDEBUG(1297, *YYCURSOR);
23839|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23840|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (23840:6): [True: 0, False: 0]
  ------------------
23841|      0|	if (yych <= '5') goto yy1298;
  ------------------
  |  Branch (23841:6): [True: 0, False: 0]
  ------------------
23842|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (23842:6): [True: 0, False: 0]
  ------------------
23843|      0|	goto yy59;
23844|      0|yy1298:
23845|      0|	YYDEBUG(1298, *YYCURSOR);
23846|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23847|      0|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (23847:6): [True: 0, False: 0]
  ------------------
23848|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (23848:6): [True: 0, False: 0]
  ------------------
23849|      0|	goto yy849;
23850|      0|yy1299:
23851|      0|	YYDEBUG(1299, *YYCURSOR);
23852|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23853|      0|	if (yych <= '@') {
  ------------------
  |  Branch (23853:6): [True: 0, False: 0]
  ------------------
23854|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (23854:7): [True: 0, False: 0]
  ------------------
23855|      0|		goto yy849;
23856|      0|	} else {
23857|      0|		if (yych <= 'Z') goto yy1320;
  ------------------
  |  Branch (23857:7): [True: 0, False: 0]
  ------------------
23858|      0|		if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23858:7): [True: 0, False: 0]
  ------------------
23859|      0|		if (yych <= 'z') goto yy1320;
  ------------------
  |  Branch (23859:7): [True: 0, False: 0]
  ------------------
23860|      0|		goto yy849;
23861|      0|	}
23862|      0|yy1300:
23863|      0|	YYDEBUG(1300, *YYCURSOR);
23864|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23865|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23865:6): [True: 0, False: 0]
  ------------------
23866|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23867|      0|	if (yych <= '@') goto yy59;
  ------------------
  |  Branch (23867:6): [True: 0, False: 0]
  ------------------
23868|      0|	if (yych <= 'Z') goto yy1321;
  ------------------
  |  Branch (23868:6): [True: 0, False: 0]
  ------------------
23869|      0|	if (yych <= '`') goto yy59;
  ------------------
  |  Branch (23869:6): [True: 0, False: 0]
  ------------------
23870|      0|	if (yych <= 'z') goto yy1321;
  ------------------
  |  Branch (23870:6): [True: 0, False: 0]
  ------------------
23871|      0|	goto yy59;
23872|      0|yy1301:
23873|      0|	YYDEBUG(1301, *YYCURSOR);
23874|      0|	yyaccept = 20;
23875|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23876|      0|	if (yych <= '/') {
  ------------------
  |  Branch (23876:6): [True: 0, False: 0]
  ------------------
23877|      0|		if (yych <= ',') {
  ------------------
  |  Branch (23877:7): [True: 0, False: 0]
  ------------------
23878|      0|			if (yych == ')') goto yy1078;
  ------------------
  |  Branch (23878:8): [True: 0, False: 0]
  ------------------
23879|      0|			goto yy849;
23880|      0|		} else {
23881|      0|			if (yych == '.') goto yy849;
  ------------------
  |  Branch (23881:8): [True: 0, False: 0]
  ------------------
23882|      0|			goto yy1300;
23883|      0|		}
23884|      0|	} else {
23885|      0|		if (yych <= '^') {
  ------------------
  |  Branch (23885:7): [True: 0, False: 0]
  ------------------
23886|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (23886:8): [True: 0, False: 0]
  ------------------
23887|      0|			if (yych <= 'Z') goto yy1320;
  ------------------
  |  Branch (23887:8): [True: 0, False: 0]
  ------------------
23888|      0|			goto yy849;
23889|      0|		} else {
23890|      0|			if (yych <= '_') goto yy1300;
  ------------------
  |  Branch (23890:8): [True: 0, False: 0]
  ------------------
23891|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23891:8): [True: 0, False: 0]
  ------------------
23892|      0|			if (yych <= 'z') goto yy1323;
  ------------------
  |  Branch (23892:8): [True: 0, False: 0]
  ------------------
23893|      0|			goto yy849;
23894|      0|		}
23895|      0|	}
23896|      0|yy1302:
23897|      0|	YYDEBUG(1302, *YYCURSOR);
23898|      0|	yyaccept = 20;
23899|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23900|      0|	if (yych <= ',') {
  ------------------
  |  Branch (23900:6): [True: 0, False: 0]
  ------------------
23901|      0|		if (yych <= ')') {
  ------------------
  |  Branch (23901:7): [True: 0, False: 0]
  ------------------
23902|      0|			if (yych <= '(') goto yy849;
  ------------------
  |  Branch (23902:8): [True: 0, False: 0]
  ------------------
23903|      0|			goto yy1078;
23904|      0|		} else {
23905|      0|			if (yych == '+') goto yy1210;
  ------------------
  |  Branch (23905:8): [True: 0, False: 0]
  ------------------
23906|      0|			goto yy849;
23907|      0|		}
23908|      0|	} else {
23909|      0|		if (yych <= 'Z') {
  ------------------
  |  Branch (23909:7): [True: 0, False: 0]
  ------------------
23910|      0|			if (yych <= '-') goto yy1210;
  ------------------
  |  Branch (23910:8): [True: 0, False: 0]
  ------------------
23911|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (23911:8): [True: 0, False: 0]
  ------------------
23912|      0|			goto yy1320;
23913|      0|		} else {
23914|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (23914:8): [True: 0, False: 0]
  ------------------
23915|      0|			if (yych <= 'z') goto yy1320;
  ------------------
  |  Branch (23915:8): [True: 0, False: 0]
  ------------------
23916|      0|			goto yy849;
23917|      0|		}
23918|      0|	}
23919|      0|yy1303:
23920|      0|	YYDEBUG(1303, *YYCURSOR);
23921|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23922|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23922:6): [True: 0, False: 0]
  ------------------
23923|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23924|      0|	if (yych <= '@') {
  ------------------
  |  Branch (23924:6): [True: 0, False: 0]
  ------------------
23925|      0|		if (yych <= '*') {
  ------------------
  |  Branch (23925:7): [True: 0, False: 0]
  ------------------
23926|      0|			if (yych == '(') goto yy1209;
  ------------------
  |  Branch (23926:8): [True: 0, False: 0]
  ------------------
23927|      0|			goto yy59;
23928|      0|		} else {
23929|      0|			if (yych == ',') goto yy59;
  ------------------
  |  Branch (23929:8): [True: 0, False: 0]
  ------------------
23930|      0|			if (yych <= '-') goto yy1210;
  ------------------
  |  Branch (23930:8): [True: 0, False: 0]
  ------------------
23931|      0|			goto yy59;
23932|      0|		}
23933|      0|	} else {
23934|      0|		if (yych <= '`') {
  ------------------
  |  Branch (23934:7): [True: 0, False: 0]
  ------------------
23935|      0|			if (yych == 'G') goto yy1212;
  ------------------
  |  Branch (23935:8): [True: 0, False: 0]
  ------------------
23936|      0|			if (yych <= 'Z') goto yy1211;
  ------------------
  |  Branch (23936:8): [True: 0, False: 0]
  ------------------
23937|      0|			goto yy59;
23938|      0|		} else {
23939|      0|			if (yych <= 'z') goto yy1213;
  ------------------
  |  Branch (23939:8): [True: 0, False: 0]
  ------------------
23940|      0|			if (yych == 0xE2) goto yy1215;
  ------------------
  |  Branch (23940:8): [True: 0, False: 0]
  ------------------
23941|      0|			goto yy59;
23942|      0|		}
23943|      0|	}
23944|      0|yy1304:
23945|      0|	YYDEBUG(1304, *YYCURSOR);
23946|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23947|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (23947:6): [True: 0, False: 0]
  ------------------
23948|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23949|      0|	if (yych <= 'G') {
  ------------------
  |  Branch (23949:6): [True: 0, False: 0]
  ------------------
23950|      0|		if (yych <= ',') {
  ------------------
  |  Branch (23950:7): [True: 0, False: 0]
  ------------------
23951|      0|			if (yych <= '(') {
  ------------------
  |  Branch (23951:8): [True: 0, False: 0]
  ------------------
23952|      0|				if (yych <= '\'') goto yy59;
  ------------------
  |  Branch (23952:9): [True: 0, False: 0]
  ------------------
23953|      0|				goto yy1209;
23954|      0|			} else {
23955|      0|				if (yych == '+') goto yy1210;
  ------------------
  |  Branch (23955:9): [True: 0, False: 0]
  ------------------
23956|      0|				goto yy59;
23957|      0|			}
23958|      0|		} else {
23959|      0|			if (yych <= '@') {
  ------------------
  |  Branch (23959:8): [True: 0, False: 0]
  ------------------
23960|      0|				if (yych <= '-') goto yy1210;
  ------------------
  |  Branch (23960:9): [True: 0, False: 0]
  ------------------
23961|      0|				goto yy59;
23962|      0|			} else {
23963|      0|				if (yych <= 'A') goto yy1218;
  ------------------
  |  Branch (23963:9): [True: 0, False: 0]
  ------------------
23964|      0|				if (yych <= 'F') goto yy1211;
  ------------------
  |  Branch (23964:9): [True: 0, False: 0]
  ------------------
23965|      0|				goto yy1212;
23966|      0|			}
23967|      0|		}
23968|      0|	} else {
23969|      0|		if (yych <= 'a') {
  ------------------
  |  Branch (23969:7): [True: 0, False: 0]
  ------------------
23970|      0|			if (yych <= 'P') {
  ------------------
  |  Branch (23970:8): [True: 0, False: 0]
  ------------------
23971|      0|				if (yych <= 'O') goto yy1211;
  ------------------
  |  Branch (23971:9): [True: 0, False: 0]
  ------------------
23972|      0|				goto yy1218;
23973|      0|			} else {
23974|      0|				if (yych <= 'Z') goto yy1211;
  ------------------
  |  Branch (23974:9): [True: 0, False: 0]
  ------------------
23975|      0|				if (yych <= '`') goto yy59;
  ------------------
  |  Branch (23975:9): [True: 0, False: 0]
  ------------------
23976|      0|				goto yy1219;
23977|      0|			}
23978|      0|		} else {
23979|      0|			if (yych <= 'z') {
  ------------------
  |  Branch (23979:8): [True: 0, False: 0]
  ------------------
23980|      0|				if (yych == 'p') goto yy1219;
  ------------------
  |  Branch (23980:9): [True: 0, False: 0]
  ------------------
23981|      0|				goto yy1213;
23982|      0|			} else {
23983|      0|				if (yych == 0xE2) goto yy1221;
  ------------------
  |  Branch (23983:9): [True: 0, False: 0]
  ------------------
23984|      0|				goto yy59;
23985|      0|			}
23986|      0|		}
23987|      0|	}
23988|      0|yy1305:
23989|      0|	YYDEBUG(1305, *YYCURSOR);
23990|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23991|      0|	if (yych == 'H') goto yy1324;
  ------------------
  |  Branch (23991:6): [True: 0, False: 0]
  ------------------
23992|      0|	if (yych == 'h') goto yy1324;
  ------------------
  |  Branch (23992:6): [True: 0, False: 0]
  ------------------
23993|      0|	goto yy59;
23994|      0|yy1306:
23995|      0|	YYDEBUG(1306, *YYCURSOR);
23996|      0|	yyaccept = 24;
23997|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
23998|      0|	if (yych <= ' ') {
  ------------------
  |  Branch (23998:6): [True: 0, False: 0]
  ------------------
23999|      0|		if (yych == '\t') goto yy1157;
  ------------------
  |  Branch (23999:7): [True: 0, False: 0]
  ------------------
24000|      0|		if (yych <= 0x1F) goto yy982;
  ------------------
  |  Branch (24000:7): [True: 0, False: 0]
  ------------------
24001|      0|		goto yy1157;
24002|      0|	} else {
24003|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (24003:7): [True: 0, False: 0]
  ------------------
24004|      0|			if (yych <= 0xC1) goto yy982;
  ------------------
  |  Branch (24004:8): [True: 0, False: 0]
  ------------------
24005|      0|			goto yy1160;
24006|      0|		} else {
24007|      0|			if (yych == 0xE2) goto yy1161;
  ------------------
  |  Branch (24007:8): [True: 0, False: 0]
  ------------------
24008|      0|			goto yy982;
24009|      0|		}
24010|      0|	}
24011|      0|yy1307:
24012|      0|	YYDEBUG(1307, *YYCURSOR);
24013|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24014|      0|	if (yych == 'C') goto yy1325;
  ------------------
  |  Branch (24014:6): [True: 0, False: 0]
  ------------------
24015|      0|	if (yych == 'c') goto yy1325;
  ------------------
  |  Branch (24015:6): [True: 0, False: 0]
  ------------------
24016|      0|	goto yy59;
24017|     24|yy1308:
24018|     24|	YYDEBUG(1308, *YYCURSOR);
24019|     24|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     24|#define   YYCURSOR     cursor
  ------------------
24020|     24|	if (yych <= '9') {
  ------------------
  |  Branch (24020:6): [True: 21, False: 3]
  ------------------
24021|     21|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (24021:7): [True: 0, False: 21]
  ------------------
24022|     21|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (24022:7): [True: 3, False: 18]
  ------------------
24023|     18|		goto yy1326;
24024|     21|	} else {
24025|      3|		if (yych <= 0xC2) {
  ------------------
  |  Branch (24025:7): [True: 3, False: 0]
  ------------------
24026|      3|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (24026:8): [True: 3, False: 0]
  ------------------
24027|      0|			goto yy97;
24028|      3|		} else {
24029|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (24029:8): [True: 0, False: 0]
  ------------------
24030|      0|			goto yy196;
24031|      0|		}
24032|      3|	}
24033|      0|yy1309:
24034|      0|	YYDEBUG(1309, *YYCURSOR);
24035|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24036|      0|	if (yych == ':') goto yy1327;
  ------------------
  |  Branch (24036:6): [True: 0, False: 0]
  ------------------
24037|      0|	goto yy59;
24038|      0|yy1310:
24039|      0|	YYDEBUG(1310, *YYCURSOR);
24040|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24041|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24041:6): [True: 0, False: 0]
  ------------------
24042|      0|	if (yych <= '5') goto yy1328;
  ------------------
  |  Branch (24042:6): [True: 0, False: 0]
  ------------------
24043|      0|	if (yych <= '6') goto yy1330;
  ------------------
  |  Branch (24043:6): [True: 0, False: 0]
  ------------------
24044|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24044:6): [True: 0, False: 0]
  ------------------
24045|      0|	goto yy59;
24046|      0|yy1311:
24047|      0|	YYDEBUG(1311, *YYCURSOR);
24048|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24049|      0|	if (yych == ':') goto yy1332;
  ------------------
  |  Branch (24049:6): [True: 0, False: 0]
  ------------------
24050|      0|	goto yy59;
24051|    139|yy1312:
24052|    139|	YYDEBUG(1312, *YYCURSOR);
24053|    139|	yych = *++YYCURSOR;
  ------------------
  |  |   89|    139|#define   YYCURSOR     cursor
  ------------------
24054|    139|	if (yych == 0xC2) goto yy97;
  ------------------
  |  Branch (24054:6): [True: 0, False: 139]
  ------------------
24055|    139|	if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (24055:6): [True: 0, False: 139]
  ------------------
24056|    139|	goto yy196;
24057|    139|yy1313:
24058|      0|	YYDEBUG(1313, *YYCURSOR);
24059|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24060|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24060:6): [True: 0, False: 0]
  ------------------
24061|      0|	if (yych <= '0') goto yy1328;
  ------------------
  |  Branch (24061:6): [True: 0, False: 0]
  ------------------
24062|      0|	if (yych <= '5') goto yy1314;
  ------------------
  |  Branch (24062:6): [True: 0, False: 0]
  ------------------
24063|      0|	if (yych <= '6') goto yy1315;
  ------------------
  |  Branch (24063:6): [True: 0, False: 0]
  ------------------
24064|      0|	goto yy59;
24065|      0|yy1314:
24066|      0|	YYDEBUG(1314, *YYCURSOR);
24067|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24068|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24068:6): [True: 0, False: 0]
  ------------------
24069|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24069:6): [True: 0, False: 0]
  ------------------
24070|      0|	goto yy59;
24071|      0|yy1315:
24072|      0|	YYDEBUG(1315, *YYCURSOR);
24073|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24074|      0|	if (yych == '0') goto yy1331;
  ------------------
  |  Branch (24074:6): [True: 0, False: 0]
  ------------------
24075|      0|	goto yy59;
24076|      0|yy1316:
24077|      0|	YYDEBUG(1316, *YYCURSOR);
24078|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24079|      0|	if (yych == ':') goto yy1286;
  ------------------
  |  Branch (24079:6): [True: 0, False: 0]
  ------------------
24080|      0|	goto yy59;
24081|      0|yy1317:
24082|      0|	YYDEBUG(1317, *YYCURSOR);
24083|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24084|      0|	if (yych == ':') goto yy1244;
  ------------------
  |  Branch (24084:6): [True: 0, False: 0]
  ------------------
24085|      0|	goto yy59;
24086|      1|yy1318:
24087|      1|	YYDEBUG(1318, *YYCURSOR);
24088|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
24089|      1|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (24089:6): [True: 0, False: 1]
  ------------------
24090|      1|	if (yych <= '9') goto yy1333;
  ------------------
  |  Branch (24090:6): [True: 1, False: 0]
  ------------------
24091|      0|	goto yy849;
24092|      0|yy1319:
24093|      0|	YYDEBUG(1319, *YYCURSOR);
24094|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24095|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24095:6): [True: 0, False: 0]
  ------------------
24096|      0|	if (yych <= '5') goto yy1334;
  ------------------
  |  Branch (24096:6): [True: 0, False: 0]
  ------------------
24097|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (24097:6): [True: 0, False: 0]
  ------------------
24098|      0|	goto yy59;
24099|      0|yy1320:
24100|      0|	YYDEBUG(1320, *YYCURSOR);
24101|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24102|      0|	if (yych <= '@') {
  ------------------
  |  Branch (24102:6): [True: 0, False: 0]
  ------------------
24103|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (24103:7): [True: 0, False: 0]
  ------------------
24104|      0|		goto yy849;
24105|      0|	} else {
24106|      0|		if (yych <= 'Z') goto yy1335;
  ------------------
  |  Branch (24106:7): [True: 0, False: 0]
  ------------------
24107|      0|		if (yych <= '`') goto yy849;
  ------------------
  |  Branch (24107:7): [True: 0, False: 0]
  ------------------
24108|      0|		if (yych <= 'z') goto yy1335;
  ------------------
  |  Branch (24108:7): [True: 0, False: 0]
  ------------------
24109|      0|		goto yy849;
24110|      0|	}
24111|      0|yy1321:
24112|      0|	YYDEBUG(1321, *YYCURSOR);
24113|      0|	yyaccept = 20;
24114|      0|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24115|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24115:6): [True: 0, False: 0]
  ------------------
24116|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24117|      0|	YYDEBUG(1322, *YYCURSOR);
24118|      0|	if (yych <= '@') {
  ------------------
  |  Branch (24118:6): [True: 0, False: 0]
  ------------------
24119|      0|		if (yych <= '-') {
  ------------------
  |  Branch (24119:7): [True: 0, False: 0]
  ------------------
24120|      0|			if (yych <= ',') goto yy849;
  ------------------
  |  Branch (24120:8): [True: 0, False: 0]
  ------------------
24121|      0|			goto yy1300;
24122|      0|		} else {
24123|      0|			if (yych == '/') goto yy1300;
  ------------------
  |  Branch (24123:8): [True: 0, False: 0]
  ------------------
24124|      0|			goto yy849;
24125|      0|		}
24126|      0|	} else {
24127|      0|		if (yych <= '_') {
  ------------------
  |  Branch (24127:7): [True: 0, False: 0]
  ------------------
24128|      0|			if (yych <= 'Z') goto yy1321;
  ------------------
  |  Branch (24128:8): [True: 0, False: 0]
  ------------------
24129|      0|			if (yych <= '^') goto yy849;
  ------------------
  |  Branch (24129:8): [True: 0, False: 0]
  ------------------
24130|      0|			goto yy1300;
24131|      0|		} else {
24132|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (24132:8): [True: 0, False: 0]
  ------------------
24133|      0|			if (yych <= 'z') goto yy1321;
  ------------------
  |  Branch (24133:8): [True: 0, False: 0]
  ------------------
24134|      0|			goto yy849;
24135|      0|		}
24136|      0|	}
24137|      0|yy1323:
24138|      0|	YYDEBUG(1323, *YYCURSOR);
24139|      0|	yyaccept = 20;
24140|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24141|      0|	if (yych <= '/') {
  ------------------
  |  Branch (24141:6): [True: 0, False: 0]
  ------------------
24142|      0|		if (yych <= ',') {
  ------------------
  |  Branch (24142:7): [True: 0, False: 0]
  ------------------
24143|      0|			if (yych == ')') goto yy1078;
  ------------------
  |  Branch (24143:8): [True: 0, False: 0]
  ------------------
24144|      0|			goto yy849;
24145|      0|		} else {
24146|      0|			if (yych == '.') goto yy849;
  ------------------
  |  Branch (24146:8): [True: 0, False: 0]
  ------------------
24147|      0|			goto yy1300;
24148|      0|		}
24149|      0|	} else {
24150|      0|		if (yych <= '^') {
  ------------------
  |  Branch (24150:7): [True: 0, False: 0]
  ------------------
24151|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (24151:8): [True: 0, False: 0]
  ------------------
24152|      0|			if (yych <= 'Z') goto yy1335;
  ------------------
  |  Branch (24152:8): [True: 0, False: 0]
  ------------------
24153|      0|			goto yy849;
24154|      0|		} else {
24155|      0|			if (yych <= '_') goto yy1300;
  ------------------
  |  Branch (24155:8): [True: 0, False: 0]
  ------------------
24156|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (24156:8): [True: 0, False: 0]
  ------------------
24157|      0|			if (yych <= 'z') goto yy1336;
  ------------------
  |  Branch (24157:8): [True: 0, False: 0]
  ------------------
24158|      0|			goto yy849;
24159|      0|		}
24160|      0|	}
24161|      0|yy1324:
24162|      0|	YYDEBUG(1324, *YYCURSOR);
24163|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24164|      0|	if (yych == 'T') goto yy1086;
  ------------------
  |  Branch (24164:6): [True: 0, False: 0]
  ------------------
24165|      0|	if (yych == 't') goto yy1086;
  ------------------
  |  Branch (24165:6): [True: 0, False: 0]
  ------------------
24166|      0|	goto yy59;
24167|      0|yy1325:
24168|      0|	YYDEBUG(1325, *YYCURSOR);
24169|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24170|      0|	if (yych == 'O') goto yy1167;
  ------------------
  |  Branch (24170:6): [True: 0, False: 0]
  ------------------
24171|      0|	if (yych == 'o') goto yy1167;
  ------------------
  |  Branch (24171:6): [True: 0, False: 0]
  ------------------
24172|      0|	goto yy59;
24173|     18|yy1326:
24174|     18|	YYDEBUG(1326, *YYCURSOR);
24175|     18|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     18|#define   YYCURSOR     cursor
  ------------------
24176|     18|	if (yych <= '9') {
  ------------------
  |  Branch (24176:6): [True: 15, False: 3]
  ------------------
24177|     15|		if (yych == '-') goto yy893;
  ------------------
  |  Branch (24177:7): [True: 1, False: 14]
  ------------------
24178|     14|		if (yych <= '/') goto yy196;
  ------------------
  |  Branch (24178:7): [True: 0, False: 14]
  ------------------
24179|     14|		goto yy1337;
24180|     14|	} else {
24181|      3|		if (yych <= 0xC2) {
  ------------------
  |  Branch (24181:7): [True: 3, False: 0]
  ------------------
24182|      3|			if (yych <= 0xC1) goto yy196;
  ------------------
  |  Branch (24182:8): [True: 2, False: 1]
  ------------------
24183|      1|			goto yy97;
24184|      3|		} else {
24185|      0|			if (yych == 0xE2) goto yy98;
  ------------------
  |  Branch (24185:8): [True: 0, False: 0]
  ------------------
24186|      0|			goto yy196;
24187|      0|		}
24188|      3|	}
24189|      0|yy1327:
24190|      0|	YYDEBUG(1327, *YYCURSOR);
24191|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24192|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24192:6): [True: 0, False: 0]
  ------------------
24193|      0|	if (yych <= '5') goto yy1338;
  ------------------
  |  Branch (24193:6): [True: 0, False: 0]
  ------------------
24194|      0|	goto yy59;
24195|      0|yy1328:
24196|      0|	YYDEBUG(1328, *YYCURSOR);
24197|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24198|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24198:6): [True: 0, False: 0]
  ------------------
24199|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24199:6): [True: 0, False: 0]
  ------------------
24200|      0|yy1329:
24201|      0|	YYDEBUG(1329, *YYCURSOR);
24202|      0|#line 1670 "ext/date/lib/parse_date.re"
24203|      0|	{
24204|      0|		int tz_not_found;
24205|      0|		DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
24206|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
24207|      0|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      0|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24208|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24209|      0|		s->time->y = timelib_get_nr(&ptr, 4);
24210|      0|		s->time->m = timelib_get_nr(&ptr, 2);
24211|      0|		s->time->d = timelib_get_nr(&ptr, 2);
24212|      0|		s->time->h = timelib_get_nr(&ptr, 2);
24213|      0|		s->time->i = timelib_get_nr(&ptr, 2);
24214|      0|		s->time->s = timelib_get_nr(&ptr, 2);
24215|      0|		if (*ptr == '.') {
  ------------------
  |  Branch (24215:7): [True: 0, False: 0]
  ------------------
24216|      0|			s->time->us = timelib_get_frac_nr(&ptr);
24217|      0|			if (*ptr) { /* timezone is optional */
  ------------------
  |  Branch (24217:8): [True: 0, False: 0]
  ------------------
24218|      0|				s->time->z = timelib_parse_zone(&ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
24219|      0|				if (tz_not_found) {
  ------------------
  |  Branch (24219:9): [True: 0, False: 0]
  ------------------
24220|      0|					add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
  ------------------
  |  |  288|      0|#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
  ------------------
24221|      0|				}
24222|      0|			}
24223|      0|		}
24224|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24225|      0|		return TIMELIB_XMLRPC_SOAP;
  ------------------
  |  |   51|      0|#define TIMELIB_XMLRPC_SOAP    260
  ------------------
24226|      0|	}
24227|      0|#line 24228 "ext/date/lib/parse_date.c"
24228|      0|yy1330:
24229|      0|	YYDEBUG(1330, *YYCURSOR);
24230|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24231|      0|	if (yych != '0') goto yy1329;
  ------------------
  |  Branch (24231:6): [True: 0, False: 0]
  ------------------
24232|      0|yy1331:
24233|      0|	YYDEBUG(1331, *YYCURSOR);
24234|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24235|      0|	goto yy1329;
24236|      0|yy1332:
24237|      0|	YYDEBUG(1332, *YYCURSOR);
24238|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24239|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24239:6): [True: 0, False: 0]
  ------------------
24240|      0|	if (yych <= '5') goto yy1339;
  ------------------
  |  Branch (24240:6): [True: 0, False: 0]
  ------------------
24241|      0|	if (yych <= '9') goto yy1281;
  ------------------
  |  Branch (24241:6): [True: 0, False: 0]
  ------------------
24242|      0|	goto yy59;
24243|      1|yy1333:
24244|      1|	YYDEBUG(1333, *YYCURSOR);
24245|      1|	yyaccept = 20;
24246|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      1|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
24247|      1|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (24247:6): [True: 0, False: 1]
  ------------------
24248|      1|	if (yych <= '5') goto yy1340;
  ------------------
  |  Branch (24248:6): [True: 1, False: 0]
  ------------------
24249|      0|	if (yych <= '6') goto yy1341;
  ------------------
  |  Branch (24249:6): [True: 0, False: 0]
  ------------------
24250|      0|	goto yy849;
24251|      0|yy1334:
24252|      0|	YYDEBUG(1334, *YYCURSOR);
24253|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24254|      0|	if (yych <= '/') goto yy849;
  ------------------
  |  Branch (24254:6): [True: 0, False: 0]
  ------------------
24255|      0|	if (yych <= '9') goto yy1342;
  ------------------
  |  Branch (24255:6): [True: 0, False: 0]
  ------------------
24256|      0|	goto yy849;
24257|      0|yy1335:
24258|      0|	YYDEBUG(1335, *YYCURSOR);
24259|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24260|      0|	if (yych <= '@') {
  ------------------
  |  Branch (24260:6): [True: 0, False: 0]
  ------------------
24261|      0|		if (yych == ')') goto yy1078;
  ------------------
  |  Branch (24261:7): [True: 0, False: 0]
  ------------------
24262|      0|		goto yy849;
24263|      0|	} else {
24264|      0|		if (yych <= 'Z') goto yy1343;
  ------------------
  |  Branch (24264:7): [True: 0, False: 0]
  ------------------
24265|      0|		if (yych <= '`') goto yy849;
  ------------------
  |  Branch (24265:7): [True: 0, False: 0]
  ------------------
24266|      0|		if (yych <= 'z') goto yy1343;
  ------------------
  |  Branch (24266:7): [True: 0, False: 0]
  ------------------
24267|      0|		goto yy849;
24268|      0|	}
24269|      0|yy1336:
24270|      0|	YYDEBUG(1336, *YYCURSOR);
24271|      0|	yyaccept = 20;
24272|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24273|      0|	if (yych <= '/') {
  ------------------
  |  Branch (24273:6): [True: 0, False: 0]
  ------------------
24274|      0|		if (yych <= ',') {
  ------------------
  |  Branch (24274:7): [True: 0, False: 0]
  ------------------
24275|      0|			if (yych == ')') goto yy1078;
  ------------------
  |  Branch (24275:8): [True: 0, False: 0]
  ------------------
24276|      0|			goto yy849;
24277|      0|		} else {
24278|      0|			if (yych == '.') goto yy849;
  ------------------
  |  Branch (24278:8): [True: 0, False: 0]
  ------------------
24279|      0|			goto yy1300;
24280|      0|		}
24281|      0|	} else {
24282|      0|		if (yych <= '^') {
  ------------------
  |  Branch (24282:7): [True: 0, False: 0]
  ------------------
24283|      0|			if (yych <= '@') goto yy849;
  ------------------
  |  Branch (24283:8): [True: 0, False: 0]
  ------------------
24284|      0|			if (yych <= 'Z') goto yy1343;
  ------------------
  |  Branch (24284:8): [True: 0, False: 0]
  ------------------
24285|      0|			goto yy849;
24286|      0|		} else {
24287|      0|			if (yych <= '_') goto yy1300;
  ------------------
  |  Branch (24287:8): [True: 0, False: 0]
  ------------------
24288|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (24288:8): [True: 0, False: 0]
  ------------------
24289|      0|			if (yych <= 'z') goto yy1344;
  ------------------
  |  Branch (24289:8): [True: 0, False: 0]
  ------------------
24290|      0|			goto yy849;
24291|      0|		}
24292|      0|	}
24293|     14|yy1337:
24294|     14|	YYDEBUG(1337, *YYCURSOR);
24295|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
24296|     14|	if (yych == '-') goto yy893;
  ------------------
  |  Branch (24296:6): [True: 0, False: 14]
  ------------------
24297|     14|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24297:6): [True: 0, False: 14]
  ------------------
24298|     14|	if (yych <= '9') goto yy1345;
  ------------------
  |  Branch (24298:6): [True: 14, False: 0]
  ------------------
24299|      0|	goto yy59;
24300|      0|yy1338:
24301|      0|	YYDEBUG(1338, *YYCURSOR);
24302|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24303|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24303:6): [True: 0, False: 0]
  ------------------
24304|      0|	if (yych <= '9') goto yy1346;
  ------------------
  |  Branch (24304:6): [True: 0, False: 0]
  ------------------
24305|      0|	goto yy59;
24306|      0|yy1339:
24307|      0|	YYDEBUG(1339, *YYCURSOR);
24308|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24309|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24309:6): [True: 0, False: 0]
  ------------------
24310|      0|	if (yych <= '9') goto yy1347;
  ------------------
  |  Branch (24310:6): [True: 0, False: 0]
  ------------------
24311|      0|	if (yych <= ':') goto yy1310;
  ------------------
  |  Branch (24311:6): [True: 0, False: 0]
  ------------------
24312|      0|	goto yy59;
24313|      1|yy1340:
24314|      1|	YYDEBUG(1340, *YYCURSOR);
24315|      1|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      1|#define   YYCURSOR     cursor
  ------------------
24316|      1|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24316:6): [True: 1, False: 0]
  ------------------
24317|      0|	if (yych <= '9') goto yy1078;
  ------------------
  |  Branch (24317:6): [True: 0, False: 0]
  ------------------
24318|      0|	goto yy59;
24319|      0|yy1341:
24320|      0|	YYDEBUG(1341, *YYCURSOR);
24321|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24322|      0|	if (yych == '0') goto yy1078;
  ------------------
  |  Branch (24322:6): [True: 0, False: 0]
  ------------------
24323|      0|	goto yy59;
24324|      0|yy1342:
24325|      0|	YYDEBUG(1342, *YYCURSOR);
24326|      0|	yyaccept = 20;
24327|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24328|      0|	if (yych == ':') goto yy1348;
  ------------------
  |  Branch (24328:6): [True: 0, False: 0]
  ------------------
24329|      0|	goto yy849;
24330|      0|yy1343:
24331|      0|	YYDEBUG(1343, *YYCURSOR);
24332|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24333|      0|	if (yych == ')') goto yy1078;
  ------------------
  |  Branch (24333:6): [True: 0, False: 0]
  ------------------
24334|      0|	goto yy849;
24335|      0|yy1344:
24336|      0|	YYDEBUG(1344, *YYCURSOR);
24337|      0|	yyaccept = 20;
24338|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24339|      0|	if (yych <= '.') {
  ------------------
  |  Branch (24339:6): [True: 0, False: 0]
  ------------------
24340|      0|		if (yych <= ')') {
  ------------------
  |  Branch (24340:7): [True: 0, False: 0]
  ------------------
24341|      0|			if (yych <= '(') goto yy849;
  ------------------
  |  Branch (24341:8): [True: 0, False: 0]
  ------------------
24342|      0|			goto yy1078;
24343|      0|		} else {
24344|      0|			if (yych == '-') goto yy1300;
  ------------------
  |  Branch (24344:8): [True: 0, False: 0]
  ------------------
24345|      0|			goto yy849;
24346|      0|		}
24347|      0|	} else {
24348|      0|		if (yych <= '_') {
  ------------------
  |  Branch (24348:7): [True: 0, False: 0]
  ------------------
24349|      0|			if (yych <= '/') goto yy1300;
  ------------------
  |  Branch (24349:8): [True: 0, False: 0]
  ------------------
24350|      0|			if (yych <= '^') goto yy849;
  ------------------
  |  Branch (24350:8): [True: 0, False: 0]
  ------------------
24351|      0|			goto yy1300;
24352|      0|		} else {
24353|      0|			if (yych <= '`') goto yy849;
  ------------------
  |  Branch (24353:8): [True: 0, False: 0]
  ------------------
24354|      0|			if (yych <= 'z') goto yy1349;
  ------------------
  |  Branch (24354:8): [True: 0, False: 0]
  ------------------
24355|      0|			goto yy849;
24356|      0|		}
24357|      0|	}
24358|     14|yy1345:
24359|     14|	YYDEBUG(1345, *YYCURSOR);
24360|     14|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     14|#define   YYCURSOR     cursor
  ------------------
24361|     14|	if (yych == '-') goto yy893;
  ------------------
  |  Branch (24361:6): [True: 0, False: 14]
  ------------------
24362|     14|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24362:6): [True: 2, False: 12]
  ------------------
24363|     12|	if (yych <= '9') goto yy1351;
  ------------------
  |  Branch (24363:6): [True: 12, False: 0]
  ------------------
24364|      0|	goto yy59;
24365|      0|yy1346:
24366|      0|	YYDEBUG(1346, *YYCURSOR);
24367|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24368|      0|	if (yych == ':') goto yy1352;
  ------------------
  |  Branch (24368:6): [True: 0, False: 0]
  ------------------
24369|      0|	goto yy59;
24370|      0|yy1347:
24371|      0|	YYDEBUG(1347, *YYCURSOR);
24372|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24373|      0|	if (yych == ':') goto yy1353;
  ------------------
  |  Branch (24373:6): [True: 0, False: 0]
  ------------------
24374|      0|	goto yy59;
24375|      0|yy1348:
24376|      0|	YYDEBUG(1348, *YYCURSOR);
24377|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24378|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24378:6): [True: 0, False: 0]
  ------------------
24379|      0|	if (yych <= '5') goto yy1340;
  ------------------
  |  Branch (24379:6): [True: 0, False: 0]
  ------------------
24380|      0|	if (yych <= '6') goto yy1341;
  ------------------
  |  Branch (24380:6): [True: 0, False: 0]
  ------------------
24381|      0|	goto yy59;
24382|      0|yy1349:
24383|      0|	YYDEBUG(1349, *YYCURSOR);
24384|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24385|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24385:6): [True: 0, False: 0]
  ------------------
24386|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24387|      0|	YYDEBUG(1350, *YYCURSOR);
24388|      0|	if (yych <= '/') {
  ------------------
  |  Branch (24388:6): [True: 0, False: 0]
  ------------------
24389|      0|		if (yych == '-') goto yy1300;
  ------------------
  |  Branch (24389:7): [True: 0, False: 0]
  ------------------
24390|      0|		if (yych <= '.') goto yy59;
  ------------------
  |  Branch (24390:7): [True: 0, False: 0]
  ------------------
24391|      0|		goto yy1300;
24392|      0|	} else {
24393|      0|		if (yych <= '_') {
  ------------------
  |  Branch (24393:7): [True: 0, False: 0]
  ------------------
24394|      0|			if (yych <= '^') goto yy59;
  ------------------
  |  Branch (24394:8): [True: 0, False: 0]
  ------------------
24395|      0|			goto yy1300;
24396|      0|		} else {
24397|      0|			if (yych <= '`') goto yy59;
  ------------------
  |  Branch (24397:8): [True: 0, False: 0]
  ------------------
24398|      0|			if (yych <= 'z') goto yy1349;
  ------------------
  |  Branch (24398:8): [True: 0, False: 0]
  ------------------
24399|      0|			goto yy59;
24400|      0|		}
24401|      0|	}
24402|     12|yy1351:
24403|     12|	YYDEBUG(1351, *YYCURSOR);
24404|     12|	yych = *++YYCURSOR;
  ------------------
  |  |   89|     12|#define   YYCURSOR     cursor
  ------------------
24405|     12|	if (yych == '-') goto yy893;
  ------------------
  |  Branch (24405:6): [True: 0, False: 12]
  ------------------
24406|     12|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24406:6): [True: 2, False: 10]
  ------------------
24407|     10|	if (yych <= '9') goto yy1354;
  ------------------
  |  Branch (24407:6): [True: 9, False: 1]
  ------------------
24408|      1|	goto yy59;
24409|      1|yy1352:
24410|      0|	YYDEBUG(1352, *YYCURSOR);
24411|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24412|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24412:6): [True: 0, False: 0]
  ------------------
24413|      0|	if (yych <= '5') goto yy1355;
  ------------------
  |  Branch (24413:6): [True: 0, False: 0]
  ------------------
24414|      0|	if (yych <= '6') goto yy1356;
  ------------------
  |  Branch (24414:6): [True: 0, False: 0]
  ------------------
24415|      0|	goto yy59;
24416|      0|yy1353:
24417|      0|	YYDEBUG(1353, *YYCURSOR);
24418|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24419|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24419:6): [True: 0, False: 0]
  ------------------
24420|      0|	if (yych <= '5') goto yy1357;
  ------------------
  |  Branch (24420:6): [True: 0, False: 0]
  ------------------
24421|      0|	if (yych <= '6') goto yy1358;
  ------------------
  |  Branch (24421:6): [True: 0, False: 0]
  ------------------
24422|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24422:6): [True: 0, False: 0]
  ------------------
24423|      0|	goto yy59;
24424|      9|yy1354:
24425|      9|	YYDEBUG(1354, *YYCURSOR);
24426|      9|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      9|#define   YYCURSOR     cursor
  ------------------
24427|      9|	if (yych == '-') goto yy893;
  ------------------
  |  Branch (24427:6): [True: 0, False: 9]
  ------------------
24428|      9|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24428:6): [True: 0, False: 9]
  ------------------
24429|      9|	if (yych <= '9') goto yy1359;
  ------------------
  |  Branch (24429:6): [True: 8, False: 1]
  ------------------
24430|      1|	goto yy59;
24431|      1|yy1355:
24432|      0|	YYDEBUG(1355, *YYCURSOR);
24433|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24434|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24434:6): [True: 0, False: 0]
  ------------------
24435|      0|	if (yych <= '9') goto yy1360;
  ------------------
  |  Branch (24435:6): [True: 0, False: 0]
  ------------------
24436|      0|	goto yy59;
24437|      0|yy1356:
24438|      0|	YYDEBUG(1356, *YYCURSOR);
24439|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24440|      0|	if (yych == '0') goto yy1360;
  ------------------
  |  Branch (24440:6): [True: 0, False: 0]
  ------------------
24441|      0|	goto yy59;
24442|      0|yy1357:
24443|      0|	YYDEBUG(1357, *YYCURSOR);
24444|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24445|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24445:6): [True: 0, False: 0]
  ------------------
24446|      0|	if (yych <= '9') goto yy1361;
  ------------------
  |  Branch (24446:6): [True: 0, False: 0]
  ------------------
24447|      0|	goto yy1329;
24448|      0|yy1358:
24449|      0|	YYDEBUG(1358, *YYCURSOR);
24450|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24451|      0|	if (yych == '0') goto yy1361;
  ------------------
  |  Branch (24451:6): [True: 0, False: 0]
  ------------------
24452|      0|	goto yy1329;
24453|      8|yy1359:
24454|      8|	YYDEBUG(1359, *YYCURSOR);
24455|      8|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      8|#define   YYCURSOR     cursor
  ------------------
24456|      8|	if (yych == '-') goto yy893;
  ------------------
  |  Branch (24456:6): [True: 0, False: 8]
  ------------------
24457|      8|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24457:6): [True: 2, False: 6]
  ------------------
24458|      6|	if (yych <= '9') goto yy1362;
  ------------------
  |  Branch (24458:6): [True: 5, False: 1]
  ------------------
24459|      1|	goto yy59;
24460|      1|yy1360:
24461|      0|	YYDEBUG(1360, *YYCURSOR);
24462|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24463|      0|	if (yych <= ' ') {
  ------------------
  |  Branch (24463:6): [True: 0, False: 0]
  ------------------
24464|      0|		if (yych == '\t') goto yy1363;
  ------------------
  |  Branch (24464:7): [True: 0, False: 0]
  ------------------
24465|      0|		if (yych <= 0x1F) goto yy59;
  ------------------
  |  Branch (24465:7): [True: 0, False: 0]
  ------------------
24466|      0|		goto yy1363;
24467|      0|	} else {
24468|      0|		if (yych <= 0xC2) {
  ------------------
  |  Branch (24468:7): [True: 0, False: 0]
  ------------------
24469|      0|			if (yych <= 0xC1) goto yy59;
  ------------------
  |  Branch (24469:8): [True: 0, False: 0]
  ------------------
24470|      0|			goto yy1365;
24471|      0|		} else {
24472|      0|			if (yych == 0xE2) goto yy1366;
  ------------------
  |  Branch (24472:8): [True: 0, False: 0]
  ------------------
24473|      0|			goto yy59;
24474|      0|		}
24475|      0|	}
24476|      0|yy1361:
24477|      0|	YYDEBUG(1361, *YYCURSOR);
24478|      0|	yyaccept = 32;
24479|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24480|      0|	if (yych == '.') goto yy1367;
  ------------------
  |  Branch (24480:6): [True: 0, False: 0]
  ------------------
24481|      0|	goto yy1329;
24482|      5|yy1362:
24483|      5|	YYDEBUG(1362, *YYCURSOR);
24484|      5|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      5|#define   YYCURSOR     cursor
  ------------------
24485|      5|	if (yych == '-') goto yy893;
  ------------------
  |  Branch (24485:6): [True: 0, False: 5]
  ------------------
24486|      5|	goto yy59;
24487|      5|yy1363:
24488|      0|	YYDEBUG(1363, *YYCURSOR);
24489|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24490|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24490:6): [True: 0, False: 0]
  ------------------
24491|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24492|      0|	YYDEBUG(1364, *YYCURSOR);
24493|      0|	if (yych <= '*') {
  ------------------
  |  Branch (24493:6): [True: 0, False: 0]
  ------------------
24494|      0|		if (yych <= '\t') {
  ------------------
  |  Branch (24494:7): [True: 0, False: 0]
  ------------------
24495|      0|			if (yych <= 0x08) goto yy59;
  ------------------
  |  Branch (24495:8): [True: 0, False: 0]
  ------------------
24496|      0|			goto yy1363;
24497|      0|		} else {
24498|      0|			if (yych == ' ') goto yy1363;
  ------------------
  |  Branch (24498:8): [True: 0, False: 0]
  ------------------
24499|      0|			goto yy59;
24500|      0|		}
24501|      0|	} else {
24502|      0|		if (yych <= '-') {
  ------------------
  |  Branch (24502:7): [True: 0, False: 0]
  ------------------
24503|      0|			if (yych == ',') goto yy59;
  ------------------
  |  Branch (24503:8): [True: 0, False: 0]
  ------------------
24504|      0|			goto yy1368;
24505|      0|		} else {
24506|      0|			if (yych == 'G') goto yy1369;
  ------------------
  |  Branch (24506:8): [True: 0, False: 0]
  ------------------
24507|      0|			goto yy59;
24508|      0|		}
24509|      0|	}
24510|      0|yy1365:
24511|      0|	YYDEBUG(1365, *YYCURSOR);
24512|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24513|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24513:6): [True: 0, False: 0]
  ------------------
24514|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24515|      0|	if (yych == 0xA0) goto yy1370;
  ------------------
  |  Branch (24515:6): [True: 0, False: 0]
  ------------------
24516|      0|	goto yy59;
24517|      0|yy1366:
24518|      0|	YYDEBUG(1366, *YYCURSOR);
24519|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24520|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24520:6): [True: 0, False: 0]
  ------------------
24521|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24522|      0|	if (yych == 0x80) goto yy1371;
  ------------------
  |  Branch (24522:6): [True: 0, False: 0]
  ------------------
24523|      0|	goto yy59;
24524|      0|yy1367:
24525|      0|	YYDEBUG(1367, *YYCURSOR);
24526|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24527|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24527:6): [True: 0, False: 0]
  ------------------
24528|      0|	if (yych <= '9') goto yy1372;
  ------------------
  |  Branch (24528:6): [True: 0, False: 0]
  ------------------
24529|      0|	goto yy59;
24530|      0|yy1368:
24531|      0|	YYDEBUG(1368, *YYCURSOR);
24532|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24533|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24533:6): [True: 0, False: 0]
  ------------------
24534|      0|	if (yych <= '1') goto yy1374;
  ------------------
  |  Branch (24534:6): [True: 0, False: 0]
  ------------------
24535|      0|	if (yych <= '2') goto yy1376;
  ------------------
  |  Branch (24535:6): [True: 0, False: 0]
  ------------------
24536|      0|	if (yych <= '9') goto yy1377;
  ------------------
  |  Branch (24536:6): [True: 0, False: 0]
  ------------------
24537|      0|	goto yy59;
24538|      0|yy1369:
24539|      0|	YYDEBUG(1369, *YYCURSOR);
24540|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24541|      0|	if (yych == 'M') goto yy1378;
  ------------------
  |  Branch (24541:6): [True: 0, False: 0]
  ------------------
24542|      0|	goto yy59;
24543|      0|yy1370:
24544|      0|	YYDEBUG(1370, *YYCURSOR);
24545|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24546|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24546:6): [True: 0, False: 0]
  ------------------
24547|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24548|      0|	if (yych <= '-') {
  ------------------
  |  Branch (24548:6): [True: 0, False: 0]
  ------------------
24549|      0|		if (yych == '+') goto yy1368;
  ------------------
  |  Branch (24549:7): [True: 0, False: 0]
  ------------------
24550|      0|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (24550:7): [True: 0, False: 0]
  ------------------
24551|      0|		goto yy1368;
24552|      0|	} else {
24553|      0|		if (yych <= 'G') {
  ------------------
  |  Branch (24553:7): [True: 0, False: 0]
  ------------------
24554|      0|			if (yych <= 'F') goto yy59;
  ------------------
  |  Branch (24554:8): [True: 0, False: 0]
  ------------------
24555|      0|			goto yy1369;
24556|      0|		} else {
24557|      0|			if (yych == 0xC2) goto yy1365;
  ------------------
  |  Branch (24557:8): [True: 0, False: 0]
  ------------------
24558|      0|			goto yy59;
24559|      0|		}
24560|      0|	}
24561|      0|yy1371:
24562|      0|	YYDEBUG(1371, *YYCURSOR);
24563|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24564|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24564:6): [True: 0, False: 0]
  ------------------
24565|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24566|      0|	if (yych == 0xAF) goto yy1379;
  ------------------
  |  Branch (24566:6): [True: 0, False: 0]
  ------------------
24567|      0|	goto yy59;
24568|      0|yy1372:
24569|      0|	YYDEBUG(1372, *YYCURSOR);
24570|      0|	yyaccept = 32;
24571|      0|	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	YYMARKER = ++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24572|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24572:6): [True: 0, False: 0]
  ------------------
24573|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24574|      0|	YYDEBUG(1373, *YYCURSOR);
24575|      0|	if (yych <= '-') {
  ------------------
  |  Branch (24575:6): [True: 0, False: 0]
  ------------------
24576|      0|		if (yych == '+') goto yy1380;
  ------------------
  |  Branch (24576:7): [True: 0, False: 0]
  ------------------
24577|      0|		if (yych <= ',') goto yy1329;
  ------------------
  |  Branch (24577:7): [True: 0, False: 0]
  ------------------
24578|      0|		goto yy1380;
24579|      0|	} else {
24580|      0|		if (yych <= '9') {
  ------------------
  |  Branch (24580:7): [True: 0, False: 0]
  ------------------
24581|      0|			if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24581:8): [True: 0, False: 0]
  ------------------
24582|      0|			goto yy1372;
24583|      0|		} else {
24584|      0|			if (yych == 'G') goto yy1381;
  ------------------
  |  Branch (24584:8): [True: 0, False: 0]
  ------------------
24585|      0|			goto yy1329;
24586|      0|		}
24587|      0|	}
24588|      0|yy1374:
24589|      0|	YYDEBUG(1374, *YYCURSOR);
24590|      0|	yyaccept = 33;
24591|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24592|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24592:6): [True: 0, False: 0]
  ------------------
24593|      0|	if (yych <= '9') goto yy1382;
  ------------------
  |  Branch (24593:6): [True: 0, False: 0]
  ------------------
24594|      0|	if (yych <= ':') goto yy1383;
  ------------------
  |  Branch (24594:6): [True: 0, False: 0]
  ------------------
24595|      0|yy1375:
24596|      0|	YYDEBUG(1375, *YYCURSOR);
24597|      0|#line 1776 "ext/date/lib/parse_date.re"
24598|      0|	{
24599|      0|		int tz_not_found;
24600|      0|		DEBUG_OUTPUT("clf");
24601|      0|		TIMELIB_INIT;
  ------------------
  |  |  107|      0|#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
  ------------------
24602|      0|		TIMELIB_HAVE_TIME();
  ------------------
  |  |   98|      0|#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |  289|      0|#define TIMELIB_ERR_DOUBLE_TIME                0x203
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (98:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24603|      0|		TIMELIB_HAVE_DATE();
  ------------------
  |  |  100|      0|#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |  290|      0|#define TIMELIB_ERR_DOUBLE_DATE                0x204
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
  |  |  ------------------
  |  |  |  |   80|      0|#define TIMELIB_ERROR          999
  |  |  ------------------
  |  |  |  Branch (100:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
24604|      0|		s->time->d = timelib_get_nr(&ptr, 2);
24605|      0|		s->time->m = timelib_get_month(&ptr);
24606|      0|		s->time->y = timelib_get_nr(&ptr, 4);
24607|      0|		s->time->h = timelib_get_nr(&ptr, 2);
24608|      0|		s->time->i = timelib_get_nr(&ptr, 2);
24609|      0|		s->time->s = timelib_get_nr(&ptr, 2);
24610|       |
24611|      0|		timelib_eat_spaces(&ptr);
24612|       |
24613|      0|		s->time->z = timelib_parse_zone(&ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
24614|      0|		if (tz_not_found) {
  ------------------
  |  Branch (24614:7): [True: 0, False: 0]
  ------------------
24615|      0|			add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
  ------------------
  |  |  288|      0|#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
  ------------------
24616|      0|		}
24617|      0|		TIMELIB_DEINIT;
  ------------------
  |  |  108|      0|#define TIMELIB_DEINIT timelib_string_free(str)
  |  |  ------------------
  |  |  |  |   96|      0|#define timelib_string_free timelib_free
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
24618|      0|		return TIMELIB_CLF;
  ------------------
  |  |   66|      0|#define TIMELIB_CLF            274
  ------------------
24619|      0|	}
24620|      0|#line 24621 "ext/date/lib/parse_date.c"
24621|      0|yy1376:
24622|      0|	YYDEBUG(1376, *YYCURSOR);
24623|      0|	yyaccept = 33;
24624|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24625|      0|	if (yych <= '5') {
  ------------------
  |  Branch (24625:6): [True: 0, False: 0]
  ------------------
24626|      0|		if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24626:7): [True: 0, False: 0]
  ------------------
24627|      0|		if (yych <= '4') goto yy1382;
  ------------------
  |  Branch (24627:7): [True: 0, False: 0]
  ------------------
24628|      0|		goto yy1384;
24629|      0|	} else {
24630|      0|		if (yych <= '9') goto yy1385;
  ------------------
  |  Branch (24630:7): [True: 0, False: 0]
  ------------------
24631|      0|		if (yych <= ':') goto yy1383;
  ------------------
  |  Branch (24631:7): [True: 0, False: 0]
  ------------------
24632|      0|		goto yy1375;
24633|      0|	}
24634|      0|yy1377:
24635|      0|	YYDEBUG(1377, *YYCURSOR);
24636|      0|	yyaccept = 33;
24637|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24638|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24638:6): [True: 0, False: 0]
  ------------------
24639|      0|	if (yych <= '5') goto yy1384;
  ------------------
  |  Branch (24639:6): [True: 0, False: 0]
  ------------------
24640|      0|	if (yych <= '9') goto yy1385;
  ------------------
  |  Branch (24640:6): [True: 0, False: 0]
  ------------------
24641|      0|	if (yych <= ':') goto yy1383;
  ------------------
  |  Branch (24641:6): [True: 0, False: 0]
  ------------------
24642|      0|	goto yy1375;
24643|      0|yy1378:
24644|      0|	YYDEBUG(1378, *YYCURSOR);
24645|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24646|      0|	if (yych == 'T') goto yy1386;
  ------------------
  |  Branch (24646:6): [True: 0, False: 0]
  ------------------
24647|      0|	goto yy59;
24648|      0|yy1379:
24649|      0|	YYDEBUG(1379, *YYCURSOR);
24650|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24651|      0|	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   90|      0|#define   YYLIMIT      s->lim
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
  ------------------
  |  |   92|      0|#define   YYFILL(n)    return EOI;
  |  |  ------------------
  |  |  |  |   47|      0|#define EOI      257
  |  |  ------------------
  ------------------
  |  Branch (24651:6): [True: 0, False: 0]
  ------------------
24652|      0|	yych = *YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24653|      0|	if (yych <= '-') {
  ------------------
  |  Branch (24653:6): [True: 0, False: 0]
  ------------------
24654|      0|		if (yych == '+') goto yy1368;
  ------------------
  |  Branch (24654:7): [True: 0, False: 0]
  ------------------
24655|      0|		if (yych <= ',') goto yy59;
  ------------------
  |  Branch (24655:7): [True: 0, False: 0]
  ------------------
24656|      0|		goto yy1368;
24657|      0|	} else {
24658|      0|		if (yych <= 'G') {
  ------------------
  |  Branch (24658:7): [True: 0, False: 0]
  ------------------
24659|      0|			if (yych <= 'F') goto yy59;
  ------------------
  |  Branch (24659:8): [True: 0, False: 0]
  ------------------
24660|      0|			goto yy1369;
24661|      0|		} else {
24662|      0|			if (yych == 0xE2) goto yy1366;
  ------------------
  |  Branch (24662:8): [True: 0, False: 0]
  ------------------
24663|      0|			goto yy59;
24664|      0|		}
24665|      0|	}
24666|      0|yy1380:
24667|      0|	YYDEBUG(1380, *YYCURSOR);
24668|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24669|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24669:6): [True: 0, False: 0]
  ------------------
24670|      0|	if (yych <= '1') goto yy1387;
  ------------------
  |  Branch (24670:6): [True: 0, False: 0]
  ------------------
24671|      0|	if (yych <= '2') goto yy1388;
  ------------------
  |  Branch (24671:6): [True: 0, False: 0]
  ------------------
24672|      0|	if (yych <= '9') goto yy1389;
  ------------------
  |  Branch (24672:6): [True: 0, False: 0]
  ------------------
24673|      0|	goto yy59;
24674|      0|yy1381:
24675|      0|	YYDEBUG(1381, *YYCURSOR);
24676|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24677|      0|	if (yych == 'M') goto yy1390;
  ------------------
  |  Branch (24677:6): [True: 0, False: 0]
  ------------------
24678|      0|	goto yy59;
24679|      0|yy1382:
24680|      0|	YYDEBUG(1382, *YYCURSOR);
24681|      0|	yyaccept = 33;
24682|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24683|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24683:6): [True: 0, False: 0]
  ------------------
24684|      0|	if (yych <= '5') goto yy1391;
  ------------------
  |  Branch (24684:6): [True: 0, False: 0]
  ------------------
24685|      0|	if (yych <= '9') goto yy1385;
  ------------------
  |  Branch (24685:6): [True: 0, False: 0]
  ------------------
24686|      0|	if (yych <= ':') goto yy1392;
  ------------------
  |  Branch (24686:6): [True: 0, False: 0]
  ------------------
24687|      0|	goto yy1375;
24688|      0|yy1383:
24689|      0|	YYDEBUG(1383, *YYCURSOR);
24690|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24691|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24691:6): [True: 0, False: 0]
  ------------------
24692|      0|	if (yych <= '5') goto yy1384;
  ------------------
  |  Branch (24692:6): [True: 0, False: 0]
  ------------------
24693|      0|	if (yych <= '9') goto yy1385;
  ------------------
  |  Branch (24693:6): [True: 0, False: 0]
  ------------------
24694|      0|	goto yy59;
24695|      0|yy1384:
24696|      0|	YYDEBUG(1384, *YYCURSOR);
24697|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24698|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24698:6): [True: 0, False: 0]
  ------------------
24699|      0|	if (yych >= ':') goto yy1375;
  ------------------
  |  Branch (24699:6): [True: 0, False: 0]
  ------------------
24700|      0|yy1385:
24701|      0|	YYDEBUG(1385, *YYCURSOR);
24702|      0|	++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24703|      0|	goto yy1375;
24704|      0|yy1386:
24705|      0|	YYDEBUG(1386, *YYCURSOR);
24706|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24707|      0|	if (yych == '+') goto yy1368;
  ------------------
  |  Branch (24707:6): [True: 0, False: 0]
  ------------------
24708|      0|	if (yych == '-') goto yy1368;
  ------------------
  |  Branch (24708:6): [True: 0, False: 0]
  ------------------
24709|      0|	goto yy59;
24710|      0|yy1387:
24711|      0|	YYDEBUG(1387, *YYCURSOR);
24712|      0|	yyaccept = 32;
24713|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24714|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24714:6): [True: 0, False: 0]
  ------------------
24715|      0|	if (yych <= '9') goto yy1393;
  ------------------
  |  Branch (24715:6): [True: 0, False: 0]
  ------------------
24716|      0|	if (yych <= ':') goto yy1394;
  ------------------
  |  Branch (24716:6): [True: 0, False: 0]
  ------------------
24717|      0|	goto yy1329;
24718|      0|yy1388:
24719|      0|	YYDEBUG(1388, *YYCURSOR);
24720|      0|	yyaccept = 32;
24721|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24722|      0|	if (yych <= '5') {
  ------------------
  |  Branch (24722:6): [True: 0, False: 0]
  ------------------
24723|      0|		if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24723:7): [True: 0, False: 0]
  ------------------
24724|      0|		if (yych <= '4') goto yy1393;
  ------------------
  |  Branch (24724:7): [True: 0, False: 0]
  ------------------
24725|      0|		goto yy1328;
24726|      0|	} else {
24727|      0|		if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24727:7): [True: 0, False: 0]
  ------------------
24728|      0|		if (yych <= ':') goto yy1394;
  ------------------
  |  Branch (24728:7): [True: 0, False: 0]
  ------------------
24729|      0|		goto yy1329;
24730|      0|	}
24731|      0|yy1389:
24732|      0|	YYDEBUG(1389, *YYCURSOR);
24733|      0|	yyaccept = 32;
24734|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24735|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24735:6): [True: 0, False: 0]
  ------------------
24736|      0|	if (yych <= '5') goto yy1328;
  ------------------
  |  Branch (24736:6): [True: 0, False: 0]
  ------------------
24737|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24737:6): [True: 0, False: 0]
  ------------------
24738|      0|	if (yych <= ':') goto yy1394;
  ------------------
  |  Branch (24738:6): [True: 0, False: 0]
  ------------------
24739|      0|	goto yy1329;
24740|      0|yy1390:
24741|      0|	YYDEBUG(1390, *YYCURSOR);
24742|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24743|      0|	if (yych == 'T') goto yy1395;
  ------------------
  |  Branch (24743:6): [True: 0, False: 0]
  ------------------
24744|      0|	goto yy59;
24745|      0|yy1391:
24746|      0|	YYDEBUG(1391, *YYCURSOR);
24747|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24748|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24748:6): [True: 0, False: 0]
  ------------------
24749|      0|	if (yych <= '9') goto yy1396;
  ------------------
  |  Branch (24749:6): [True: 0, False: 0]
  ------------------
24750|      0|	goto yy1375;
24751|      0|yy1392:
24752|      0|	YYDEBUG(1392, *YYCURSOR);
24753|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24754|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24754:6): [True: 0, False: 0]
  ------------------
24755|      0|	if (yych <= '5') goto yy1397;
  ------------------
  |  Branch (24755:6): [True: 0, False: 0]
  ------------------
24756|      0|	if (yych <= '9') goto yy1385;
  ------------------
  |  Branch (24756:6): [True: 0, False: 0]
  ------------------
24757|      0|	goto yy59;
24758|      0|yy1393:
24759|      0|	YYDEBUG(1393, *YYCURSOR);
24760|      0|	yyaccept = 32;
24761|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24762|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24762:6): [True: 0, False: 0]
  ------------------
24763|      0|	if (yych <= '5') goto yy1398;
  ------------------
  |  Branch (24763:6): [True: 0, False: 0]
  ------------------
24764|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24764:6): [True: 0, False: 0]
  ------------------
24765|      0|	if (yych <= ':') goto yy1399;
  ------------------
  |  Branch (24765:6): [True: 0, False: 0]
  ------------------
24766|      0|	goto yy1329;
24767|      0|yy1394:
24768|      0|	YYDEBUG(1394, *YYCURSOR);
24769|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24770|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24770:6): [True: 0, False: 0]
  ------------------
24771|      0|	if (yych <= '5') goto yy1328;
  ------------------
  |  Branch (24771:6): [True: 0, False: 0]
  ------------------
24772|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24772:6): [True: 0, False: 0]
  ------------------
24773|      0|	goto yy59;
24774|      0|yy1395:
24775|      0|	YYDEBUG(1395, *YYCURSOR);
24776|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24777|      0|	if (yych == '+') goto yy1380;
  ------------------
  |  Branch (24777:6): [True: 0, False: 0]
  ------------------
24778|      0|	if (yych == '-') goto yy1380;
  ------------------
  |  Branch (24778:6): [True: 0, False: 0]
  ------------------
24779|      0|	goto yy59;
24780|      0|yy1396:
24781|      0|	YYDEBUG(1396, *YYCURSOR);
24782|      0|	yyaccept = 33;
24783|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24784|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24784:6): [True: 0, False: 0]
  ------------------
24785|      0|	if (yych <= '5') goto yy1400;
  ------------------
  |  Branch (24785:6): [True: 0, False: 0]
  ------------------
24786|      0|	if (yych <= '6') goto yy1401;
  ------------------
  |  Branch (24786:6): [True: 0, False: 0]
  ------------------
24787|      0|	goto yy1375;
24788|      0|yy1397:
24789|      0|	YYDEBUG(1397, *YYCURSOR);
24790|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24791|      0|	if (yych <= '/') goto yy1375;
  ------------------
  |  Branch (24791:6): [True: 0, False: 0]
  ------------------
24792|      0|	if (yych <= '9') goto yy1402;
  ------------------
  |  Branch (24792:6): [True: 0, False: 0]
  ------------------
24793|      0|	goto yy1375;
24794|      0|yy1398:
24795|      0|	YYDEBUG(1398, *YYCURSOR);
24796|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24797|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24797:6): [True: 0, False: 0]
  ------------------
24798|      0|	if (yych <= '9') goto yy1403;
  ------------------
  |  Branch (24798:6): [True: 0, False: 0]
  ------------------
24799|      0|	goto yy1329;
24800|      0|yy1399:
24801|      0|	YYDEBUG(1399, *YYCURSOR);
24802|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24803|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24803:6): [True: 0, False: 0]
  ------------------
24804|      0|	if (yych <= '5') goto yy1404;
  ------------------
  |  Branch (24804:6): [True: 0, False: 0]
  ------------------
24805|      0|	if (yych <= '9') goto yy1331;
  ------------------
  |  Branch (24805:6): [True: 0, False: 0]
  ------------------
24806|      0|	goto yy59;
24807|      0|yy1400:
24808|      0|	YYDEBUG(1400, *YYCURSOR);
24809|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24810|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24810:6): [True: 0, False: 0]
  ------------------
24811|      0|	if (yych <= '9') goto yy1385;
  ------------------
  |  Branch (24811:6): [True: 0, False: 0]
  ------------------
24812|      0|	goto yy59;
24813|      0|yy1401:
24814|      0|	YYDEBUG(1401, *YYCURSOR);
24815|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24816|      0|	if (yych == '0') goto yy1385;
  ------------------
  |  Branch (24816:6): [True: 0, False: 0]
  ------------------
24817|      0|	goto yy59;
24818|      0|yy1402:
24819|      0|	YYDEBUG(1402, *YYCURSOR);
24820|      0|	yyaccept = 33;
24821|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24822|      0|	if (yych == ':') goto yy1405;
  ------------------
  |  Branch (24822:6): [True: 0, False: 0]
  ------------------
24823|      0|	goto yy1375;
24824|      0|yy1403:
24825|      0|	YYDEBUG(1403, *YYCURSOR);
24826|      0|	yyaccept = 32;
24827|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24828|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24828:6): [True: 0, False: 0]
  ------------------
24829|      0|	if (yych <= '5') goto yy1314;
  ------------------
  |  Branch (24829:6): [True: 0, False: 0]
  ------------------
24830|      0|	if (yych <= '6') goto yy1315;
  ------------------
  |  Branch (24830:6): [True: 0, False: 0]
  ------------------
24831|      0|	goto yy1329;
24832|      0|yy1404:
24833|      0|	YYDEBUG(1404, *YYCURSOR);
24834|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24835|      0|	if (yych <= '/') goto yy1329;
  ------------------
  |  Branch (24835:6): [True: 0, False: 0]
  ------------------
24836|      0|	if (yych <= '9') goto yy1406;
  ------------------
  |  Branch (24836:6): [True: 0, False: 0]
  ------------------
24837|      0|	goto yy1329;
24838|      0|yy1405:
24839|      0|	YYDEBUG(1405, *YYCURSOR);
24840|      0|	yych = *++YYCURSOR;
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24841|      0|	if (yych <= '/') goto yy59;
  ------------------
  |  Branch (24841:6): [True: 0, False: 0]
  ------------------
24842|      0|	if (yych <= '5') goto yy1400;
  ------------------
  |  Branch (24842:6): [True: 0, False: 0]
  ------------------
24843|      0|	if (yych <= '6') goto yy1401;
  ------------------
  |  Branch (24843:6): [True: 0, False: 0]
  ------------------
24844|      0|	goto yy59;
24845|      0|yy1406:
24846|      0|	YYDEBUG(1406, *YYCURSOR);
24847|      0|	yyaccept = 32;
24848|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   91|      0|#define   YYMARKER     s->ptr
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |   89|      0|#define   YYCURSOR     cursor
  ------------------
24849|      0|	if (yych == ':') goto yy1286;
  ------------------
  |  Branch (24849:6): [True: 0, False: 0]
  ------------------
24850|      0|	goto yy1329;
24851|      0|}
24852|      0|#line 2004 "ext/date/lib/parse_date.re"
24853|       |
24854|      0|}
parse_date.c:timelib_string:
  477|  9.01k|{
  478|  9.01k|	char *tmp = timelib_calloc(1, s->cur - s->tok + 1);
  ------------------
  |  |   13|  9.01k|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|  9.01k|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  9.01k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  9.01k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  9.01k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  9.01k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  479|  9.01k|	memcpy(tmp, s->tok, s->cur - s->tok);
  480|       |
  481|  9.01k|	return tmp;
  482|  9.01k|}
parse_date.c:timelib_get_month:
  668|     76|{
  669|    111|	while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
  ------------------
  |  Branch (669:9): [True: 0, False: 111]
  |  Branch (669:25): [True: 12, False: 99]
  |  Branch (669:42): [True: 17, False: 82]
  |  Branch (669:58): [True: 6, False: 76]
  |  Branch (669:74): [True: 0, False: 76]
  ------------------
  670|     35|		++*ptr;
  671|     35|	}
  672|     76|	return timelib_lookup_month(ptr);
  673|     76|}
parse_date.c:timelib_get_frac_nr:
  530|      2|{
  531|      2|	const char *begin, *end;
  532|      2|	char *str;
  533|      2|	double tmp_nr = TIMELIB_UNSET;
  ------------------
  |  |  382|      2|#define TIMELIB_UNSET   -9999999
  ------------------
  534|       |
  535|      2|	while ((**ptr != '.') && (**ptr != ':') && ((**ptr < '0') || (**ptr > '9'))) {
  ------------------
  |  Branch (535:9): [True: 0, False: 2]
  |  Branch (535:27): [True: 0, False: 0]
  |  Branch (535:46): [True: 0, False: 0]
  |  Branch (535:63): [True: 0, False: 0]
  ------------------
  536|      0|		if (**ptr == '\0') {
  ------------------
  |  Branch (536:7): [True: 0, False: 0]
  ------------------
  537|      0|			return TIMELIB_UNSET;
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  538|      0|		}
  539|      0|		++*ptr;
  540|      0|	}
  541|      2|	begin = *ptr;
  542|      8|	while ((**ptr == '.') || (**ptr == ':') || ((**ptr >= '0') && (**ptr <= '9'))) {
  ------------------
  |  Branch (542:9): [True: 2, False: 6]
  |  Branch (542:27): [True: 0, False: 6]
  |  Branch (542:46): [True: 4, False: 2]
  |  Branch (542:64): [True: 4, False: 0]
  ------------------
  543|      6|		++*ptr;
  544|      6|	}
  545|      2|	end = *ptr;
  546|      2|	str = timelib_calloc(1, end - begin);
  ------------------
  |  |   13|      2|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|      2|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  547|      2|	memcpy(str, begin + 1, end - begin - 1);
  548|      2|	tmp_nr = strtod(str, NULL) * pow(10, 7 - (end - begin));
  549|       |	timelib_free(str);
  ------------------
  |  |   16|      2|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|      2|	return tmp_nr;
  551|      2|}
parse_date.c:timelib_set_relative:
  745|     29|{
  746|     29|	const timelib_relunit* relunit;
  747|       |
  748|     29|	if (!(relunit = timelib_lookup_relunit(ptr))) {
  ------------------
  |  Branch (748:6): [True: 0, False: 29]
  ------------------
  749|      0|		return;
  750|      0|	}
  751|       |
  752|     29|	switch (relunit->unit) {
  ------------------
  |  Branch (752:10): [True: 29, False: 0]
  ------------------
  753|      5|		case TIMELIB_MICROSEC: add_with_overflow(s, &s->time->relative.us, amount, relunit->multiplier); break;
  ------------------
  |  |   75|      5|#define TIMELIB_MICROSEC 9
  ------------------
  |  Branch (753:3): [True: 5, False: 24]
  ------------------
  754|      5|		case TIMELIB_SECOND:   add_with_overflow(s, &s->time->relative.s, amount, relunit->multiplier); break;
  ------------------
  |  |   67|      5|#define TIMELIB_SECOND   1
  ------------------
  |  Branch (754:3): [True: 5, False: 24]
  ------------------
  755|      0|		case TIMELIB_MINUTE:   add_with_overflow(s, &s->time->relative.i, amount, relunit->multiplier); break;
  ------------------
  |  |   68|      0|#define TIMELIB_MINUTE   2
  ------------------
  |  Branch (755:3): [True: 0, False: 29]
  ------------------
  756|      0|		case TIMELIB_HOUR:     add_with_overflow(s, &s->time->relative.h, amount, relunit->multiplier); break;
  ------------------
  |  |   69|      0|#define TIMELIB_HOUR     3
  ------------------
  |  Branch (756:3): [True: 0, False: 29]
  ------------------
  757|      0|		case TIMELIB_DAY:      add_with_overflow(s, &s->time->relative.d, amount, relunit->multiplier); break;
  ------------------
  |  |   70|      0|#define TIMELIB_DAY      4
  ------------------
  |  Branch (757:3): [True: 0, False: 29]
  ------------------
  758|      0|		case TIMELIB_MONTH:    add_with_overflow(s, &s->time->relative.m, amount, relunit->multiplier); break;
  ------------------
  |  |   71|      0|#define TIMELIB_MONTH    5
  ------------------
  |  Branch (758:3): [True: 0, False: 29]
  ------------------
  759|      0|		case TIMELIB_YEAR:     add_with_overflow(s, &s->time->relative.y, amount, relunit->multiplier); break;
  ------------------
  |  |   72|      0|#define TIMELIB_YEAR     6
  ------------------
  |  Branch (759:3): [True: 0, False: 29]
  ------------------
  760|       |
  761|     19|		case TIMELIB_WEEKDAY:
  ------------------
  |  |   73|     19|#define TIMELIB_WEEKDAY  7
  ------------------
  |  Branch (761:3): [True: 19, False: 10]
  ------------------
  762|     19|			TIMELIB_HAVE_WEEKDAY_RELATIVE();
  ------------------
  |  |  103|     19|#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
  ------------------
  763|     19|			if (time_part != TIMELIB_TIME_PART_KEEP) {
  ------------------
  |  |   85|     19|#define TIMELIB_TIME_PART_KEEP                    0x01
  ------------------
  |  Branch (763:8): [True: 0, False: 19]
  ------------------
  764|      0|				TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
  765|      0|			}
  766|     19|			s->time->relative.d += (amount > 0 ? amount - 1 : amount) * 7;
  ------------------
  |  Branch (766:28): [True: 18, False: 1]
  ------------------
  767|     19|			s->time->relative.weekday = relunit->multiplier;
  768|     19|			s->time->relative.weekday_behavior = behavior;
  769|     19|			break;
  770|       |
  771|      0|		case TIMELIB_SPECIAL:
  ------------------
  |  |   74|      0|#define TIMELIB_SPECIAL  8
  ------------------
  |  Branch (771:3): [True: 0, False: 29]
  ------------------
  772|      0|			TIMELIB_HAVE_SPECIAL_RELATIVE();
  ------------------
  |  |  104|      0|#define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
  ------------------
  773|      0|			if (time_part != TIMELIB_TIME_PART_KEEP) {
  ------------------
  |  |   85|      0|#define TIMELIB_TIME_PART_KEEP                    0x01
  ------------------
  |  Branch (773:8): [True: 0, False: 0]
  ------------------
  774|      0|				TIMELIB_UNHAVE_TIME();
  ------------------
  |  |   99|      0|#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
  ------------------
  775|      0|			}
  776|      0|			s->time->relative.special.type = relunit->multiplier;
  777|      0|			s->time->relative.special.amount = amount;
  778|     29|	}
  779|     29|}
parse_date.c:add_with_overflow:
  728|     10|{
  729|     10|#if TIMELIB_HAVE_BUILTIN_SADDLL_OVERFLOW
  730|     10|	if (__builtin_saddll_overflow(*e, amount * multiplier, e)) {
  ------------------
  |  Branch (730:6): [True: 0, False: 10]
  ------------------
  731|      0|		add_error(s, TIMELIB_ERR_NUMBER_OUT_OF_RANGE, "Number out of range");
  ------------------
  |  |  324|      0|#define TIMELIB_ERR_NUMBER_OUT_OF_RANGE        0x226
  ------------------
  732|      0|	}
  733|       |#else
  734|       |	*e += (amount * multiplier);
  735|       |#endif
  736|     10|}
parse_date.c:timelib_meridian:
  414|      1|{
  415|      1|	timelib_sll retval = 0;
  416|       |
  417|      1|	while (!strchr("AaPp", **ptr)) {
  ------------------
  |  Branch (417:9): [True: 0, False: 1]
  ------------------
  418|      0|		++*ptr;
  419|      0|	}
  420|      1|	if (**ptr == 'a' || **ptr == 'A') {
  ------------------
  |  Branch (420:6): [True: 0, False: 1]
  |  Branch (420:22): [True: 1, False: 0]
  ------------------
  421|      1|		if (h == 12) {
  ------------------
  |  Branch (421:7): [True: 0, False: 1]
  ------------------
  422|      0|			retval = -12;
  423|      0|		}
  424|      1|	} else if (h != 12) {
  ------------------
  |  Branch (424:13): [True: 0, False: 0]
  ------------------
  425|      0|		retval = 12;
  426|      0|	}
  427|      1|	++*ptr;
  428|      1|	if (**ptr == '.') {
  ------------------
  |  Branch (428:6): [True: 0, False: 1]
  ------------------
  429|      0|		++*ptr;
  430|      0|	}
  431|      1|	if (**ptr == 'M' || **ptr == 'm') {
  ------------------
  |  Branch (431:6): [True: 0, False: 1]
  |  Branch (431:22): [True: 1, False: 0]
  ------------------
  432|      1|		++*ptr;
  433|      1|	}
  434|      1|	if (**ptr == '.') {
  ------------------
  |  Branch (434:6): [True: 0, False: 1]
  ------------------
  435|      0|		++*ptr;
  436|      0|	}
  437|      1|	return retval;
  438|      1|}
parse_date.c:add_warning:
  374|    725|{
  375|    725|	timelib_error_message *message = alloc_error_message(&s->errors->warning_messages, &s->errors->warning_count);
  376|       |
  377|    725|	message->error_code = error_code;
  378|    725|	message->position = s->tok ? s->tok - s->str : 0;
  ------------------
  |  Branch (378:22): [True: 725, False: 0]
  ------------------
  379|    725|	message->character = s->tok ? *s->tok : 0;
  ------------------
  |  Branch (379:23): [True: 725, False: 0]
  ------------------
  380|       |	message->message = timelib_strdup(error);
  ------------------
  |  |   14|    725|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|    725|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    725|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    725|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    725|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    725|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|    725|}
parse_date.c:timelib_lookup_relunit:
  703|     50|{
  704|     50|	char *word;
  705|     50|	const char *begin = *ptr, *end;
  706|     50|	const timelib_relunit *tp, *value = NULL;
  707|       |
  708|    210|	while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t' && **ptr != ';' && **ptr != ':' &&
  ------------------
  |  Branch (708:9): [True: 160, False: 50]
  |  Branch (708:26): [True: 160, False: 0]
  |  Branch (708:42): [True: 160, False: 0]
  |  Branch (708:58): [True: 160, False: 0]
  |  Branch (708:75): [True: 160, False: 0]
  |  Branch (708:91): [True: 160, False: 0]
  ------------------
  709|    160|		**ptr != '/' && **ptr != '.' && **ptr != '-' && **ptr != '(' && **ptr != ')' ) {
  ------------------
  |  Branch (709:3): [True: 160, False: 0]
  |  Branch (709:19): [True: 160, False: 0]
  |  Branch (709:35): [True: 160, False: 0]
  |  Branch (709:51): [True: 160, False: 0]
  |  Branch (709:67): [True: 160, False: 0]
  ------------------
  710|    160|		++*ptr;
  711|    160|	}
  712|     50|	end = *ptr;
  713|     50|	word = timelib_calloc(1, end - begin + 1);
  ------------------
  |  |   13|     50|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     50|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     50|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     50|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     50|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     50|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  714|     50|	memcpy(word, begin, end - begin);
  715|       |
  716|  2.13k|	for (tp = timelib_relunit_lookup; tp->name; tp++) {
  ------------------
  |  Branch (716:36): [True: 2.13k, False: 0]
  ------------------
  717|  2.13k|		if (timelib_strcasecmp(word, tp->name) == 0) {
  ------------------
  |  Branch (717:7): [True: 50, False: 2.08k]
  ------------------
  718|     50|			value = tp;
  719|     50|			break;
  720|     50|		}
  721|  2.13k|	}
  722|       |
  723|       |	timelib_free(word);
  ------------------
  |  |   16|     50|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     50|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     50|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     50|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     50|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     50|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  724|     50|	return value;
  725|     50|}
parse_date.c:timelib_get_nr:
  515|  1.53k|{
  516|       |	return timelib_get_nr_ex(ptr, max_length, NULL);
  517|  1.53k|}
parse_date.c:timelib_skip_day_suffix:
  520|     45|{
  521|     45|	if (isspace((unsigned char)**ptr)) {
  ------------------
  |  Branch (521:6): [True: 0, False: 45]
  ------------------
  522|      0|		return;
  523|      0|	}
  524|     45|	if (!timelib_strncasecmp(*ptr, "nd", 2) || !timelib_strncasecmp(*ptr, "rd", 2) ||!timelib_strncasecmp(*ptr, "st", 2) || !timelib_strncasecmp(*ptr, "th", 2)) {
  ------------------
  |  Branch (524:6): [True: 0, False: 45]
  |  Branch (524:45): [True: 0, False: 45]
  |  Branch (524:83): [True: 1, False: 44]
  |  Branch (524:122): [True: 0, False: 44]
  ------------------
  525|      1|		*ptr += 2;
  526|      1|	}
  527|     45|}
parse_date.c:timelib_lookup_month:
  644|    126|{
  645|    126|	char *word;
  646|    126|	const char *begin = *ptr, *end;
  647|    126|	timelib_long  value = 0;
  648|    126|	const timelib_lookup_table *tp;
  649|       |
  650|    417|	while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
  ------------------
  |  Branch (650:10): [True: 291, False: 126]
  |  Branch (650:26): [True: 158, False: 133]
  |  Branch (650:44): [True: 133, False: 126]
  |  Branch (650:60): [True: 133, False: 0]
  ------------------
  651|    291|		++*ptr;
  652|    291|	}
  653|    126|	end = *ptr;
  654|    126|	word = timelib_calloc(1, end - begin + 1);
  ------------------
  |  |   13|    126|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|    126|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    126|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    126|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    126|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    126|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  655|    126|	memcpy(word, begin, end - begin);
  656|       |
  657|  4.78k|	for (tp = timelib_month_lookup; tp->name; tp++) {
  ------------------
  |  Branch (657:34): [True: 4.66k, False: 126]
  ------------------
  658|  4.66k|		if (timelib_strcasecmp(word, tp->name) == 0) {
  ------------------
  |  Branch (658:7): [True: 129, False: 4.53k]
  ------------------
  659|    129|			value = tp->value;
  660|    129|		}
  661|  4.66k|	}
  662|       |
  663|       |	timelib_free(word);
  ------------------
  |  |   16|    126|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    126|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    126|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    126|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    126|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    126|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  664|    126|	return value;
  665|    126|}
parse_date.c:timelib_get_nr_ex:
  485|  1.66k|{
  486|  1.66k|	const char *begin, *end;
  487|  1.66k|	char *str;
  488|  1.66k|	timelib_sll tmp_nr = TIMELIB_UNSET;
  ------------------
  |  |  382|  1.66k|#define TIMELIB_UNSET   -9999999
  ------------------
  489|  1.66k|	int len = 0;
  490|       |
  491|  1.93k|	while ((**ptr < '0') || (**ptr > '9')) {
  ------------------
  |  Branch (491:9): [True: 200, False: 1.73k]
  |  Branch (491:26): [True: 78, False: 1.65k]
  ------------------
  492|    278|		if (**ptr == '\0') {
  ------------------
  |  Branch (492:7): [True: 8, False: 270]
  ------------------
  493|      8|			return TIMELIB_UNSET;
  ------------------
  |  |  382|      8|#define TIMELIB_UNSET   -9999999
  ------------------
  494|      8|		}
  495|    270|		++*ptr;
  496|    270|	}
  497|       |
  498|  1.65k|	begin = *ptr;
  499|  6.30k|	while ((**ptr >= '0') && (**ptr <= '9') && len < max_length) {
  ------------------
  |  Branch (499:9): [True: 5.04k, False: 1.26k]
  |  Branch (499:27): [True: 4.97k, False: 65]
  |  Branch (499:45): [True: 4.65k, False: 328]
  ------------------
  500|  4.65k|		++*ptr;
  501|  4.65k|		++len;
  502|  4.65k|	}
  503|  1.65k|	end = *ptr;
  504|  1.65k|	if (scanned_length) {
  ------------------
  |  Branch (504:6): [True: 122, False: 1.53k]
  ------------------
  505|    122|		*scanned_length = end - begin;
  506|    122|	}
  507|  1.65k|	str = timelib_calloc(1, end - begin + 1);
  ------------------
  |  |   13|  1.65k|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|  1.65k|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.65k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.65k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  1.65k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  1.65k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  508|  1.65k|	memcpy(str, begin, end - begin);
  509|  1.65k|	tmp_nr = strtoll(str, NULL, 10);
  510|       |	timelib_free(str);
  ------------------
  |  |   16|  1.65k|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|  1.65k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.65k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.65k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  1.65k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  1.65k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|  1.65k|	return tmp_nr;
  512|  1.66k|}
parse_date.c:timelib_get_signed_nr:
  554|     84|{
  555|     84|	char *str, *str_ptr;
  556|     84|	timelib_sll tmp_nr = 0;
  557|     84|	int len = 0;
  558|       |
  559|       |	/* Skip over non-numeric chars */
  560|       |
  561|    140|	while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) {
  ------------------
  |  Branch (561:10): [True: 33, False: 107]
  |  Branch (561:27): [True: 46, False: 61]
  |  Branch (561:45): [True: 78, False: 1]
  |  Branch (561:63): [True: 57, False: 21]
  ------------------
  562|     57|		if (**ptr == '\0') {
  ------------------
  |  Branch (562:7): [True: 1, False: 56]
  ------------------
  563|      1|			add_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Found unexpected data");
  ------------------
  |  |  293|      1|#define TIMELIB_ERR_UNEXPECTED_DATA            0x207
  ------------------
  564|      1|			return 0;
  565|      1|		}
  566|     56|		++*ptr;
  567|     56|	}
  568|       |	
  569|       |	/* Allocate string to feed to strtoll(): sign + length + '\0' */
  570|     83|	str = timelib_calloc(1, max_length + 2);
  ------------------
  |  |   13|     83|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     83|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     83|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     83|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     83|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     83|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|     83|	str[0] = '+'; /* First position is the sign */
  572|     83|	str_ptr = str + 1;
  573|       |
  574|    107|	while ((**ptr == '+') || (**ptr == '-')) {
  ------------------
  |  Branch (574:9): [True: 1, False: 106]
  |  Branch (574:27): [True: 23, False: 83]
  ------------------
  575|     24|		if (**ptr == '-') {
  ------------------
  |  Branch (575:7): [True: 23, False: 1]
  ------------------
  576|     23|			str[0] = str[0] == '+' ? '-' : '+';
  ------------------
  |  Branch (576:13): [True: 22, False: 1]
  ------------------
  577|     23|		}
  578|     24|		++*ptr;
  579|     24|	}
  580|       |
  581|     83|	while (((**ptr < '0') || (**ptr > '9'))) {
  ------------------
  |  Branch (581:10): [True: 0, False: 83]
  |  Branch (581:27): [True: 0, False: 83]
  ------------------
  582|      0|		if (**ptr == '\0') {
  ------------------
  |  Branch (582:7): [True: 0, False: 0]
  ------------------
  583|      0|			timelib_free(str);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|      0|			add_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Found unexpected data");
  ------------------
  |  |  293|      0|#define TIMELIB_ERR_UNEXPECTED_DATA            0x207
  ------------------
  585|      0|			return 0;
  586|      0|		}
  587|      0|		++*ptr;
  588|      0|	}
  589|       |
  590|    579|	while ((**ptr >= '0') && (**ptr <= '9') && len < max_length) {
  ------------------
  |  Branch (590:9): [True: 525, False: 54]
  |  Branch (590:27): [True: 496, False: 29]
  |  Branch (590:45): [True: 496, False: 0]
  ------------------
  591|    496|		*str_ptr = **ptr;
  592|    496|		++*ptr;
  593|    496|		++str_ptr;
  594|    496|		++len;
  595|    496|	}
  596|       |
  597|     83|	errno = 0;
  598|     83|	tmp_nr = strtoll(str, NULL, 10);
  599|     83|	if (errno == ERANGE) {
  ------------------
  |  Branch (599:6): [True: 6, False: 77]
  ------------------
  600|      6|		timelib_free(str);
  ------------------
  |  |   16|      6|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  601|      6|		add_error(s, TIMELIB_ERR_NUMBER_OUT_OF_RANGE, "Number out of range");
  ------------------
  |  |  324|      6|#define TIMELIB_ERR_NUMBER_OUT_OF_RANGE        0x226
  ------------------
  602|      6|		return 0;
  603|      6|	}
  604|       |
  605|     77|	timelib_free(str);
  ------------------
  |  |   16|     77|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     77|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     77|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     77|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     77|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     77|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|       |
  607|     77|	return tmp_nr;
  608|     83|}
parse_date.c:timelib_eat_spaces:
  676|    578|{
  677|    581|	do {
  678|    581|		if (**ptr == ' ' || **ptr == '\t') {
  ------------------
  |  Branch (678:7): [True: 0, False: 581]
  |  Branch (678:23): [True: 3, False: 578]
  ------------------
  679|      3|			++*ptr;
  680|      3|			continue;
  681|      3|		}
  682|    578|		if ((*ptr)[0] == '\xe2' && (*ptr)[1] == '\x80' && (*ptr)[2] == '\xaf') { // NNBSP
  ------------------
  |  Branch (682:7): [True: 0, False: 578]
  |  Branch (682:30): [True: 0, False: 0]
  |  Branch (682:53): [True: 0, False: 0]
  ------------------
  683|      0|			*ptr += 3;
  684|      0|			continue;
  685|      0|		}
  686|    578|		if ((*ptr)[0] == '\xc2' && (*ptr)[1] == '\xa0') { // NBSP
  ------------------
  |  Branch (686:7): [True: 0, False: 578]
  |  Branch (686:30): [True: 0, False: 0]
  ------------------
  687|      0|			*ptr += 2;
  688|      0|			continue;
  689|      0|		}
  690|    578|		break;
  691|       |	} while (true);
  ------------------
  |  Branch (691:11): [True: 3, Folded]
  ------------------
  692|    578|}
parse_date.c:abbr_search:
  782|    424|{
  783|    424|	int first_found = 0;
  784|    424|	const timelib_tz_lookup_table  *tp, *first_found_elem = NULL;
  785|    424|	const timelib_tz_lookup_table  *fmp;
  786|       |
  787|    424|	if (timelib_strcasecmp("utc", word) == 0 || timelib_strcasecmp("gmt", word) == 0) {
  ------------------
  |  Branch (787:6): [True: 0, False: 424]
  |  Branch (787:46): [True: 2, False: 422]
  ------------------
  788|      2|		return timelib_timezone_utc;
  789|      2|	}
  790|       |
  791|   473k|	for (tp = timelib_timezone_lookup; tp->name; tp++) {
  ------------------
  |  Branch (791:37): [True: 473k, False: 228]
  ------------------
  792|   473k|		if (timelib_strcasecmp(word, tp->name) == 0) {
  ------------------
  |  Branch (792:7): [True: 194, False: 473k]
  ------------------
  793|    194|			if (!first_found) {
  ------------------
  |  Branch (793:8): [True: 194, False: 0]
  ------------------
  794|    194|				first_found = 1;
  795|    194|				first_found_elem = tp;
  796|    194|				if (gmtoffset == -1) {
  ------------------
  |  Branch (796:9): [True: 194, False: 0]
  ------------------
  797|    194|					return tp;
  798|    194|				}
  799|    194|			}
  800|      0|			if (tp->gmtoffset == gmtoffset) {
  ------------------
  |  Branch (800:8): [True: 0, False: 0]
  ------------------
  801|      0|				return tp;
  802|      0|			}
  803|      0|		}
  804|   473k|	}
  805|    228|	if (first_found) {
  ------------------
  |  Branch (805:6): [True: 0, False: 228]
  ------------------
  806|      0|		return first_found_elem;
  807|      0|	}
  808|       |
  809|       |	/* Still didn't find anything, let's find the zone solely based on
  810|       |	 * offset/isdst then */
  811|  9.80k|	for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
  ------------------
  |  Branch (811:43): [True: 9.57k, False: 228]
  ------------------
  812|  9.57k|		if (fmp->gmtoffset == gmtoffset && fmp->type == isdst) {
  ------------------
  |  Branch (812:7): [True: 0, False: 9.57k]
  |  Branch (812:38): [True: 0, False: 0]
  ------------------
  813|      0|			return fmp;
  814|      0|		}
  815|  9.57k|	}
  816|    228|	return NULL;
  817|    228|}

timelib_posix_str_dtor:
  306|     80|{
  307|     80|	if (ps->std) {
  ------------------
  |  Branch (307:6): [True: 80, False: 0]
  ------------------
  308|     80|		timelib_free(ps->std);
  ------------------
  |  |   16|     80|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  309|     80|	}
  310|     80|	if (ps->dst) {
  ------------------
  |  Branch (310:6): [True: 10, False: 70]
  ------------------
  311|     10|		timelib_free(ps->dst);
  ------------------
  |  |   16|     10|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|     10|	}
  313|     80|	if (ps->dst_begin) {
  ------------------
  |  Branch (313:6): [True: 10, False: 70]
  ------------------
  314|     10|		timelib_posix_trans_info_dtor(ps->dst_begin);
  315|     10|	}
  316|     80|	if (ps->dst_end) {
  ------------------
  |  Branch (316:6): [True: 10, False: 70]
  ------------------
  317|     10|		timelib_posix_trans_info_dtor(ps->dst_end);
  318|     10|	}
  319|       |
  320|       |	timelib_free(ps);
  ------------------
  |  |   16|     80|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  321|     80|}
timelib_parse_posix_str:
  324|     80|{
  325|     80|	timelib_posix_str *tmp = timelib_calloc(1, sizeof(timelib_posix_str));
  ------------------
  |  |   13|     80|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     80|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|     80|	char *ptr = (char*) posix;
  327|       |
  328|       |	// read standard description (ie. EST or <-03>)
  329|     80|	tmp->std = read_description(&ptr);
  330|     80|	if (!tmp->std) {
  ------------------
  |  Branch (330:6): [True: 0, False: 80]
  ------------------
  331|      0|		timelib_posix_str_dtor(tmp);
  332|      0|		return NULL;
  333|      0|	}
  334|       |
  335|       |	// read required offset
  336|     80|	tmp->std_offset = read_offset(&ptr);
  337|     80|	if (tmp->std_offset == TIMELIB_UNSET) {
  ------------------
  |  |  382|     80|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (337:6): [True: 0, False: 80]
  ------------------
  338|      0|		timelib_posix_str_dtor(tmp);
  339|      0|		return NULL;
  340|      0|	}
  341|       |
  342|       |	// if we're at the end return, otherwise we'll continue to try to parse
  343|       |	// the dst abbreviation and spec
  344|     80|	if (*ptr == '\0') {
  ------------------
  |  Branch (344:6): [True: 70, False: 10]
  ------------------
  345|     70|		return tmp;
  346|     70|	}
  347|       |
  348|       |	// assume dst is there, and initialise offset
  349|     10|	tmp->dst_offset = tmp->std_offset + 3600;
  350|       |
  351|     10|	tmp->dst = read_description(&ptr);
  352|     10|	if (!tmp->dst) {
  ------------------
  |  Branch (352:6): [True: 0, False: 10]
  ------------------
  353|      0|		timelib_posix_str_dtor(tmp);
  354|      0|		return NULL;
  355|      0|	}
  356|       |
  357|       |	// if we have a "," here, then the dst offset is the standard offset +
  358|       |	// 3600 seconds, otherwise, try to parse the dst offset
  359|     10|	if (*ptr != ',' && *ptr != '\0') {
  ------------------
  |  Branch (359:6): [True: 0, False: 10]
  |  Branch (359:21): [True: 0, False: 0]
  ------------------
  360|      0|		tmp->dst_offset = read_offset(&ptr);
  361|      0|		if (tmp->dst_offset == TIMELIB_UNSET) {
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (361:7): [True: 0, False: 0]
  ------------------
  362|      0|			timelib_posix_str_dtor(tmp);
  363|      0|			return NULL;
  364|      0|		}
  365|      0|	}
  366|       |
  367|       |	// if we *don't* have a "," here, we're missing the dst transitions
  368|       |	// ,start[/time],end[/time]
  369|     10|	if (*ptr != ',') {
  ------------------
  |  Branch (369:6): [True: 0, False: 10]
  ------------------
  370|      0|		timelib_posix_str_dtor(tmp);
  371|      0|		return NULL;
  372|      0|	}
  373|       |
  374|     10|	ptr++; // skip ','
  375|       |
  376|       |	// start[/time]
  377|     10|	tmp->dst_begin = read_transition_spec(&ptr);
  378|     10|	if (!tmp->dst_begin) {
  ------------------
  |  Branch (378:6): [True: 0, False: 10]
  ------------------
  379|      0|		timelib_posix_str_dtor(tmp);
  380|      0|		return NULL;
  381|      0|	}
  382|       |
  383|       |	// if we *don't* have a "," here, we're missing the dst end transition
  384|       |	// ,end[/time]
  385|     10|	if (*ptr != ',') {
  ------------------
  |  Branch (385:6): [True: 0, False: 10]
  ------------------
  386|      0|		timelib_posix_str_dtor(tmp);
  387|      0|		return NULL;
  388|      0|	}
  389|       |
  390|     10|	ptr++; // skip ','
  391|       |
  392|       |	// end[/time]
  393|     10|	tmp->dst_end = read_transition_spec(&ptr);
  394|     10|	if (!tmp->dst_end) {
  ------------------
  |  Branch (394:6): [True: 0, False: 10]
  ------------------
  395|      0|		timelib_posix_str_dtor(tmp);
  396|      0|		return NULL;
  397|      0|	}
  398|       |
  399|       |	// make sure there is no trailing data
  400|     10|	if (*ptr != '\0') {
  ------------------
  |  Branch (400:6): [True: 0, False: 10]
  ------------------
  401|      0|		timelib_posix_str_dtor(tmp);
  402|      0|		return NULL;
  403|      0|	}
  404|       |
  405|     10|	return tmp;
  406|     10|}
timelib_ts_at_start_of_year:
  489|     33|{
  490|     33|	timelib_sll epoch_leap_years = count_leap_years(1970);
  491|     33|	timelib_sll current_leap_years = count_leap_years(year);
  492|       |
  493|     33|	return SECS_PER_DAY * (
  ------------------
  |  |   89|     33|#define SECS_PER_DAY   86400
  ------------------
  494|     33|		((year-1970) * DAYS_PER_YEAR)
  ------------------
  |  |   94|     33|#define DAYS_PER_YEAR    365
  ------------------
  495|     33|		+ current_leap_years
  496|     33|		- epoch_leap_years
  497|     33|	);
  498|     33|}
timelib_get_transitions_for_year:
  501|     33|{
  502|     33|	timelib_sll trans_begin; /* Since start of the year */
  503|     33|	timelib_sll trans_end;
  504|     33|	timelib_sll year_begin_ts = timelib_ts_at_start_of_year(year);
  505|       |
  506|     33|	trans_begin = year_begin_ts;
  507|     33|	trans_begin += calc_transition(tz->posix_info->dst_begin, year);
  508|     33|	trans_begin += tz->posix_info->dst_begin->hour;
  509|     33|	trans_begin -= tz->posix_info->std_offset;
  510|       |
  511|     33|	trans_end = year_begin_ts;
  512|     33|	trans_end += calc_transition(tz->posix_info->dst_end, year);
  513|     33|	trans_end += tz->posix_info->dst_end->hour;
  514|     33|	trans_end -= tz->posix_info->dst_offset;
  515|       |
  516|     33|	if (trans_begin < trans_end) {
  ------------------
  |  Branch (516:6): [True: 0, False: 33]
  ------------------
  517|      0|		transitions->times[transitions->count  ] = trans_begin;
  518|      0|		transitions->times[transitions->count+1] = trans_end;
  519|      0|		transitions->types[transitions->count  ] = tz->posix_info->type_index_dst_type;
  520|      0|		transitions->types[transitions->count+1] = tz->posix_info->type_index_std_type;
  521|     33|	} else {
  522|     33|		transitions->times[transitions->count+1] = trans_begin;
  523|     33|		transitions->times[transitions->count  ] = trans_end;
  524|     33|		transitions->types[transitions->count+1] = tz->posix_info->type_index_dst_type;
  525|     33|		transitions->types[transitions->count  ] = tz->posix_info->type_index_std_type;
  526|     33|	}
  527|       |
  528|     33|	transitions->count += 2;
  529|     33|}
timelib_fetch_posix_timezone_offset:
  532|    137|{
  533|    137|	timelib_sll               year;
  534|    137|	timelib_time              dummy;
  535|    137|	timelib_posix_transitions transitions = { 0 };
  536|    137|	size_t            i;
  537|       |
  538|       |	/* If there is no second (dst_end) information, the UTC offset is valid for the whole year, so no need to
  539|       |	 * do clever logic */
  540|    137|	if (!tz->posix_info->dst_end) {
  ------------------
  |  Branch (540:6): [True: 126, False: 11]
  ------------------
  541|    126|		if (transition_time) {
  ------------------
  |  Branch (541:7): [True: 0, False: 126]
  ------------------
  542|      0|			*transition_time = tz->trans[tz->bit64.timecnt - 1];
  543|      0|		}
  544|    126|		return &(tz->type[tz->posix_info->type_index_std_type]);
  545|    126|	}
  546|       |
  547|       |	/* Find 'year' (UTC) for 'ts' */
  548|     11|	timelib_unixtime2gmt(&dummy, ts);
  549|     11|	year = dummy.y;
  550|       |
  551|       |	/* Calculate transition times for 'year-1', 'year', and 'year+1' */
  552|     11|	timelib_get_transitions_for_year(tz, year - 1, &transitions);
  553|     11|	timelib_get_transitions_for_year(tz, year,     &transitions);
  554|     11|	timelib_get_transitions_for_year(tz, year + 1, &transitions);
  555|       |
  556|       |	/* Check where the 'ts' falls in the 4 transitions */
  557|     29|	for (i = 1; i < transitions.count; i++) {
  ------------------
  |  Branch (557:14): [True: 29, False: 0]
  ------------------
  558|     29|		if (ts < transitions.times[i]) {
  ------------------
  |  Branch (558:7): [True: 11, False: 18]
  ------------------
  559|     11|			if (transition_time) {
  ------------------
  |  Branch (559:8): [True: 11, False: 0]
  ------------------
  560|     11|				*transition_time = transitions.times[i - 1];
  561|     11|			}
  562|     11|			return &(tz->type[transitions.types[i - 1]]);
  563|     11|		}
  564|     29|	}
  565|       |
  566|      0|	return NULL;
  567|     11|}
parse_posix.c:timelib_posix_trans_info_dtor:
  301|     20|{
  302|       |	timelib_free(ts);
  ------------------
  |  |   16|     20|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     20|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  303|     20|}
parse_posix.c:read_description:
  111|     90|{
  112|     90|	if (**ptr == '<') {
  ------------------
  |  Branch (112:6): [True: 0, False: 90]
  ------------------
  113|      0|		return read_description_numeric_abbr(ptr);
  114|     90|	} else {
  115|     90|		return read_description_abbr(ptr);
  116|     90|	}
  117|     90|}
parse_posix.c:read_description_abbr:
   93|     90|{
   94|     90|	const char *begin = *ptr;
   95|       |
   96|       |	// Find the end
   97|    380|	while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
  ------------------
  |  Branch (97:10): [True: 290, False: 90]
  |  Branch (97:26): [True: 290, False: 0]
  |  Branch (97:44): [True: 0, False: 90]
  |  Branch (97:60): [True: 0, False: 0]
  ------------------
   98|    290|		(*ptr)++;
   99|    290|	}
  100|       |
  101|       |	// Abbreviation may not be empty
  102|     90|	if (*ptr - begin < 1) {
  ------------------
  |  Branch (102:6): [True: 0, False: 90]
  ------------------
  103|      0|		return NULL;
  104|      0|	}
  105|       |
  106|     90|	return timelib_strndup(begin, *ptr - begin);
  ------------------
  |  |   15|     90|#define timelib_strndup estrndup
  |  |  ------------------
  |  |  |  |  164|     90|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     90|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     90|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     90|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     90|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  107|     90|}
parse_posix.c:read_offset:
  160|     90|{
  161|     90|	const char *begin;
  162|     90|	int bias = read_sign(ptr);
  163|     90|	int hours = 0;
  164|     90|	int minutes = 0;
  165|     90|	int seconds = 0;
  166|       |
  167|     90|	begin = *ptr;
  168|       |
  169|       |	// read through to : or non-digit for hours
  170|     90|	hours = read_number(ptr);
  171|     90|	if (hours == TIMELIB_UNSET) {
  ------------------
  |  |  382|     90|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (171:6): [True: 0, False: 90]
  ------------------
  172|      0|		return hours;
  173|      0|	}
  174|       |
  175|       |	// check for optional minutes
  176|     90|	if (**ptr == ':') {
  ------------------
  |  Branch (176:6): [True: 0, False: 90]
  ------------------
  177|      0|		(*ptr)++; // skip ':'
  178|      0|		minutes = read_number(ptr);
  179|      0|		if (minutes == TIMELIB_UNSET) {
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (179:7): [True: 0, False: 0]
  ------------------
  180|      0|			return minutes;
  181|      0|		}
  182|      0|	}
  183|       |
  184|       |	// check for optional seconds
  185|     90|	if (**ptr == ':') {
  ------------------
  |  Branch (185:6): [True: 0, False: 90]
  ------------------
  186|      0|		(*ptr)++; // skip ':'
  187|      0|		seconds = read_number(ptr);
  188|      0|		if (seconds == TIMELIB_UNSET) {
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (188:7): [True: 0, False: 0]
  ------------------
  189|      0|			return seconds;
  190|      0|		}
  191|      0|	}
  192|       |
  193|     90|	if (begin == *ptr) {
  ------------------
  |  Branch (193:6): [True: 0, False: 90]
  ------------------
  194|      0|		return TIMELIB_UNSET;
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  195|      0|	}
  196|       |
  197|       |	// multiplication with -1, because the offset in the identifier is the
  198|       |	// 'wrong' way around as for example EST5 is UTC-5 (and not +5)
  199|     90|	return -1 * bias * (hours * 3600 + minutes * 60 + seconds);
  200|     90|}
parse_posix.c:read_sign:
  121|     90|{
  122|     90|	int bias = 1;
  123|       |
  124|     90|	if (**ptr == '+') {
  ------------------
  |  Branch (124:6): [True: 0, False: 90]
  ------------------
  125|      0|		(*ptr)++;
  126|     90|	} else if (**ptr == '-') {
  ------------------
  |  Branch (126:13): [True: 10, False: 80]
  ------------------
  127|     10|		bias = -1;
  128|     10|		(*ptr)++;
  129|     10|	}
  130|       |
  131|     90|	return bias;
  132|     90|}
parse_posix.c:read_number:
  136|    150|{
  137|    150|	const char *begin = *ptr;
  138|    150|	int acc = 0;
  139|       |
  140|       |	// skip leading 0's
  141|    240|	while (**ptr == '0') {
  ------------------
  |  Branch (141:9): [True: 90, False: 150]
  ------------------
  142|     90|		(*ptr)++;
  143|     90|	}
  144|       |
  145|    220|	while (**ptr >= '0' && **ptr <= '9') {
  ------------------
  |  Branch (145:9): [True: 80, False: 140]
  |  Branch (145:25): [True: 70, False: 10]
  ------------------
  146|     70|		acc = acc * 10;
  147|     70|		acc += (**ptr) - '0';
  148|     70|		(*ptr)++;
  149|     70|	}
  150|       |
  151|    150|	if (begin == *ptr) {
  ------------------
  |  Branch (151:6): [True: 0, False: 150]
  ------------------
  152|      0|		return TIMELIB_UNSET;
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  153|      0|	}
  154|       |
  155|    150|	return acc;
  156|    150|}
parse_posix.c:read_transition_spec:
  249|     20|{
  250|     20|	timelib_posix_trans_info *tmp;
  251|       |
  252|     20|	if (**ptr == 'M') {
  ------------------
  |  Branch (252:6): [True: 20, False: 0]
  ------------------
  253|     20|		tmp = read_trans_spec_mwd(ptr);
  254|     20|		if (!tmp) {
  ------------------
  |  Branch (254:7): [True: 0, False: 20]
  ------------------
  255|      0|			return NULL;
  256|      0|		}
  257|     20|	} else {
  258|      0|		tmp = timelib_posix_trans_info_ctor();
  259|       |
  260|      0|		if (**ptr == 'J') {
  ------------------
  |  Branch (260:7): [True: 0, False: 0]
  ------------------
  261|      0|			tmp->type = TIMELIB_POSIX_TRANS_TYPE_JULIAN_NO_FEB29;
  ------------------
  |  |  151|      0|#define TIMELIB_POSIX_TRANS_TYPE_JULIAN_NO_FEB29   1
  ------------------
  262|      0|			(*ptr)++;
  263|      0|		}
  264|       |
  265|      0|		tmp->days = read_number(ptr);
  266|      0|		if (tmp->days == TIMELIB_UNSET) {
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (266:7): [True: 0, False: 0]
  ------------------
  267|      0|			goto fail;
  268|      0|		}
  269|      0|	}
  270|       |
  271|       |	// Check for the optional hour
  272|     20|	if (**ptr == '/') {
  ------------------
  |  Branch (272:6): [True: 10, False: 10]
  ------------------
  273|     10|		(*ptr)++;
  274|     10|		tmp->hour = read_offset(ptr);
  275|     10|		if (tmp->hour == TIMELIB_UNSET) {
  ------------------
  |  |  382|     10|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (275:7): [True: 0, False: 10]
  ------------------
  276|      0|			goto fail;
  277|      0|		}
  278|       |		// as the bias for normal offsets = -1, we need to reverse it here
  279|     10|		tmp->hour = -tmp->hour;
  280|     10|	}
  281|       |
  282|     20|	return tmp;
  283|       |
  284|      0|fail:
  285|      0|	timelib_posix_trans_info_dtor(tmp);
  286|       |	return NULL;
  287|     20|}
parse_posix.c:read_trans_spec_mwd:
  205|     20|{
  206|     20|	timelib_posix_trans_info *tmp = timelib_posix_trans_info_ctor();
  207|       |
  208|     20|	tmp->type = TIMELIB_POSIX_TRANS_TYPE_MWD;
  ------------------
  |  |  153|     20|#define TIMELIB_POSIX_TRANS_TYPE_MWD               3
  ------------------
  209|       |
  210|       |	// Skip 'M'
  211|     20|	(*ptr)++;
  212|       |
  213|     20|	tmp->mwd.month = read_number(ptr);
  214|     20|	if (tmp->mwd.month == TIMELIB_UNSET) {
  ------------------
  |  |  382|     20|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (214:6): [True: 0, False: 20]
  ------------------
  215|      0|		goto fail;
  216|      0|	}
  217|       |
  218|       |	// check for '.' and skip it
  219|     20|	if (**ptr != '.') {
  ------------------
  |  Branch (219:6): [True: 0, False: 20]
  ------------------
  220|      0|		goto fail;
  221|      0|	}
  222|     20|	(*ptr)++;
  223|       |
  224|     20|	tmp->mwd.week = read_number(ptr);
  225|     20|	if (tmp->mwd.week == TIMELIB_UNSET) {
  ------------------
  |  |  382|     20|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (225:6): [True: 0, False: 20]
  ------------------
  226|      0|		goto fail;
  227|      0|	}
  228|       |
  229|       |	// check for '.' and skip it
  230|     20|	if (**ptr != '.') {
  ------------------
  |  Branch (230:6): [True: 0, False: 20]
  ------------------
  231|      0|		goto fail;
  232|      0|	}
  233|     20|	(*ptr)++;
  234|       |
  235|     20|	tmp->mwd.dow = read_number(ptr);
  236|     20|	if (tmp->mwd.dow == TIMELIB_UNSET) {
  ------------------
  |  |  382|     20|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (236:6): [True: 0, False: 20]
  ------------------
  237|      0|		goto fail;
  238|      0|	}
  239|       |
  240|     20|	return tmp;
  241|       |
  242|      0|fail:
  243|      0|	timelib_posix_trans_info_dtor(tmp);
  244|       |	return NULL;
  245|     20|}
parse_posix.c:timelib_posix_trans_info_ctor:
  290|     20|{
  291|     20|	timelib_posix_trans_info *tmp;
  292|       |
  293|     20|	tmp = timelib_calloc(1, sizeof(timelib_posix_trans_info));
  ------------------
  |  |   13|     20|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     20|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|     20|	tmp->type = TIMELIB_POSIX_TRANS_TYPE_JULIAN_FEB29;
  ------------------
  |  |  152|     20|#define TIMELIB_POSIX_TRANS_TYPE_JULIAN_FEB29      2
  ------------------
  295|     20|	tmp->hour = 2 * 3600;
  296|       |
  297|     20|	return tmp;
  298|     20|}
parse_posix.c:count_leap_years:
  480|     66|{
  481|       |	/* Because we want this for Jan 1, the leap day hasn't happend yet, so
  482|       |	 * subtract one of year before we calculate */
  483|     66|	y--;
  484|       |
  485|     66|	return (y/4) - (y/100) + (y/400);
  486|     66|}
parse_posix.c:calc_transition:
  416|     66|{
  417|     66|	int leap_year = timelib_is_leap(year);
  ------------------
  |  |  105|     66|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 8, False: 58]
  |  |  |  Branch (105:46): [True: 8, False: 0]
  |  |  |  Branch (105:64): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  418|       |
  419|     66|	switch (psi->type) {
  ------------------
  |  Branch (419:10): [True: 66, False: 0]
  ------------------
  420|      0|		case TIMELIB_POSIX_TRANS_TYPE_JULIAN_NO_FEB29: {
  ------------------
  |  |  151|      0|#define TIMELIB_POSIX_TRANS_TYPE_JULIAN_NO_FEB29   1
  ------------------
  |  Branch (420:3): [True: 0, False: 66]
  ------------------
  421|      0|			timelib_sll value = (psi->days - 1);
  422|       |
  423|      0|			if (leap_year && psi->days >= 60) {
  ------------------
  |  Branch (423:8): [True: 0, False: 0]
  |  Branch (423:21): [True: 0, False: 0]
  ------------------
  424|      0|				value++;
  425|      0|			}
  426|       |
  427|      0|			return value * SECS_PER_DAY;
  ------------------
  |  |   89|      0|#define SECS_PER_DAY   86400
  ------------------
  428|      0|		}
  429|       |
  430|      0|		case TIMELIB_POSIX_TRANS_TYPE_JULIAN_FEB29: {
  ------------------
  |  |  152|      0|#define TIMELIB_POSIX_TRANS_TYPE_JULIAN_FEB29      2
  ------------------
  |  Branch (430:3): [True: 0, False: 66]
  ------------------
  431|      0|			return psi->days * SECS_PER_DAY;
  ------------------
  |  |   89|      0|#define SECS_PER_DAY   86400
  ------------------
  432|      0|		}
  433|       |
  434|     66|		case TIMELIB_POSIX_TRANS_TYPE_MWD: {
  ------------------
  |  |  153|     66|#define TIMELIB_POSIX_TRANS_TYPE_MWD               3
  ------------------
  |  Branch (434:3): [True: 66, False: 0]
  ------------------
  435|       |			/*
  436|       |			 * Mm.n.d - nth "dth day" of month m.
  437|       |			 */
  438|       |
  439|     66|			int i, d, m1, yy0, yy1, yy2, dow;
  440|     66|			timelib_sll value = 0;
  441|       |
  442|       |			/* Use Zeller's Congruence to get day-of-week of first day of
  443|       |			 * month. */
  444|     66|			m1 = (psi->mwd.month + 9) % 12 + 1;
  445|     66|			yy0 = (psi->mwd.month <= 2) ? (year - 1) : year;
  ------------------
  |  Branch (445:10): [True: 0, False: 66]
  ------------------
  446|     66|			yy1 = yy0 / 100;
  447|     66|			yy2 = yy0 % 100;
  448|     66|			dow = ((26 * m1 - 2) / 10 + 1 + yy2 + yy2 / 4 + yy1 / 4 - 2 * yy1) % 7;
  449|     66|			if (dow < 0) {
  ------------------
  |  Branch (449:8): [True: 0, False: 66]
  ------------------
  450|      0|				dow += DAYS_PER_WEEK;
  ------------------
  |  |   93|      0|#define DAYS_PER_WEEK      7
  ------------------
  451|      0|			}
  452|       |
  453|       |			/* "dow" is the day-of-week of the first day of the month. Get the
  454|       |			 * day-of-month (zero-origin) of the first "dow" day of the month. */
  455|     66|			d = psi->mwd.dow - dow;
  456|     66|			if (d < 0) {
  ------------------
  |  Branch (456:8): [True: 57, False: 9]
  ------------------
  457|     57|				d += DAYS_PER_WEEK;
  ------------------
  |  |   93|     57|#define DAYS_PER_WEEK      7
  ------------------
  458|     57|			}
  459|    174|			for (i = 1; i < psi->mwd.week; ++i) {
  ------------------
  |  Branch (459:16): [True: 132, False: 42]
  ------------------
  460|    132|				if (d + DAYS_PER_WEEK >= month_lengths[leap_year][psi->mwd.month - 1]) {
  ------------------
  |  |   93|    132|#define DAYS_PER_WEEK      7
  ------------------
  |  Branch (460:9): [True: 24, False: 108]
  ------------------
  461|     24|					break;
  462|     24|				}
  463|    108|				d += DAYS_PER_WEEK;
  ------------------
  |  |   93|    108|#define DAYS_PER_WEEK      7
  ------------------
  464|    108|			}
  465|       |
  466|       |			/* "d" is the day-of-month (zero-origin) of the day we want. */
  467|     66|			value = d * SECS_PER_DAY;
  ------------------
  |  |   89|     66|#define SECS_PER_DAY   86400
  ------------------
  468|    429|			for (i = 0; i < psi->mwd.month - 1; ++i) {
  ------------------
  |  Branch (468:16): [True: 363, False: 66]
  ------------------
  469|    363|				value += month_lengths[leap_year][i] * SECS_PER_DAY;
  ------------------
  |  |   89|    363|#define SECS_PER_DAY   86400
  ------------------
  470|    363|			}
  471|       |
  472|     66|			return value;
  473|      0|		} break;
  474|     66|	}
  475|       |
  476|      0|	return 0;
  477|     66|}

timelib_builtin_db:
  607|    819|{
  608|    819|	return &timezonedb_builtin;
  609|    819|}
timelib_timezone_id_is_valid:
  618|      3|{
  619|      3|	const unsigned char *tzf;
  620|      3|	return (seek_to_tz_position(&tzf, timezone, tzdb));
  621|      3|}
timelib_parse_tzfile:
  663|    343|{
  664|    343|	const unsigned char *tzf;
  665|    343|	timelib_tzinfo *tmp;
  666|    343|	int version;
  667|    343|	int transitions_result, types_result;
  668|    343|	unsigned int type = TIMELIB_TZINFO_ZONEINFO; /* TIMELIB_TZINFO_PHP or TIMELIB_TZINFO_ZONEINFO */
  ------------------
  |  |  103|    343|#define TIMELIB_TZINFO_ZONEINFO  0x02
  ------------------
  669|       |
  670|    343|	*error_code = TIMELIB_ERROR_NO_ERROR;
  ------------------
  |  |  387|    343|#define TIMELIB_ERROR_NO_ERROR                            0x00
  ------------------
  671|       |
  672|    343|	if (seek_to_tz_position(&tzf, timezone, tzdb)) {
  ------------------
  |  Branch (672:6): [True: 80, False: 263]
  ------------------
  673|     80|		tmp = timelib_tzinfo_ctor(timezone);
  674|       |
  675|     80|		version = read_preamble(&tzf, tmp, &type);
  676|     80|		if (version < 2 || version > 4) {
  ------------------
  |  Branch (676:7): [True: 0, False: 80]
  |  Branch (676:22): [True: 0, False: 80]
  ------------------
  677|      0|			*error_code = TIMELIB_ERROR_UNSUPPORTED_VERSION;
  ------------------
  |  |  392|      0|#define TIMELIB_ERROR_UNSUPPORTED_VERSION                 0x05
  ------------------
  678|      0|			timelib_tzinfo_dtor(tmp);
  679|      0|			return NULL;
  680|      0|		}
  681|       |//printf("- timezone: %s, version: %0d\n", timezone, version);
  682|       |
  683|     80|		read_32bit_header(&tzf, tmp);
  684|     80|		skip_32bit_transitions(&tzf, tmp);
  685|     80|		skip_32bit_types(&tzf, tmp);
  686|       |
  687|     80|		if (!skip_64bit_preamble(&tzf, tmp)) {
  ------------------
  |  Branch (687:7): [True: 0, False: 80]
  ------------------
  688|       |			/* 64 bit preamble is not in place */
  689|      0|			*error_code = TIMELIB_ERROR_CORRUPT_NO_64BIT_PREAMBLE;
  ------------------
  |  |  390|      0|#define TIMELIB_ERROR_CORRUPT_NO_64BIT_PREAMBLE           0x03
  ------------------
  690|      0|			timelib_tzinfo_dtor(tmp);
  691|      0|			return NULL;
  692|      0|		}
  693|     80|		read_64bit_header(&tzf, tmp);
  694|     80|		if ((transitions_result = read_64bit_transitions(&tzf, tmp)) != 0) {
  ------------------
  |  Branch (694:7): [True: 0, False: 80]
  ------------------
  695|       |			/* Corrupt file as transitions do not increase */
  696|      0|			*error_code = transitions_result;
  697|      0|			timelib_tzinfo_dtor(tmp);
  698|      0|			return NULL;
  699|      0|		}
  700|     80|		if ((types_result = read_64bit_types(&tzf, tmp)) != 0) {
  ------------------
  |  Branch (700:7): [True: 0, False: 80]
  ------------------
  701|      0|			*error_code = types_result;
  702|      0|			timelib_tzinfo_dtor(tmp);
  703|      0|			return NULL;
  704|      0|		}
  705|       |
  706|     80|		read_posix_string(&tzf, tmp);
  707|     80|		if (strcmp("", tmp->posix_string) == 0) {
  ------------------
  |  Branch (707:7): [True: 0, False: 80]
  ------------------
  708|      0|			*error_code = TIMELIB_ERROR_EMPTY_POSIX_STRING;
  ------------------
  |  |  396|      0|#define TIMELIB_ERROR_EMPTY_POSIX_STRING                  0x09 /* Warns if the POSIX string is empty, but still produces results */
  ------------------
  709|     80|		} else if (!integrate_posix_string(tmp)) {
  ------------------
  |  Branch (709:14): [True: 0, False: 80]
  ------------------
  710|      0|			*error_code = TIMELIB_ERROR_CORRUPT_POSIX_STRING;
  ------------------
  |  |  395|      0|#define TIMELIB_ERROR_CORRUPT_POSIX_STRING                0x08
  ------------------
  711|      0|			timelib_tzinfo_dtor(tmp);
  712|      0|			return NULL;
  713|      0|		}
  714|       |
  715|     80|		if (type == TIMELIB_TZINFO_PHP) {
  ------------------
  |  |  102|     80|#define TIMELIB_TZINFO_PHP       0x01
  ------------------
  |  Branch (715:7): [True: 80, False: 0]
  ------------------
  716|     80|			read_location(&tzf, tmp);
  717|     80|		} else {
  718|      0|			set_default_location_and_comments(&tzf, tmp);
  719|      0|		}
  720|    263|	} else {
  721|    263|		*error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
  ------------------
  |  |  393|    263|#define TIMELIB_ERROR_NO_SUCH_TIMEZONE                    0x06
  ------------------
  722|    263|		tmp = NULL;
  723|    263|	}
  724|       |
  725|    343|	return tmp;
  726|    343|}
timelib_tzinfo_dtor:
  729|     80|{
  730|     80|	TIMELIB_TIME_FREE(tz->name);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 80, False: 0]
  |  |  ------------------
  |  |  111|     80|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     80|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     80|		m = NULL;   \
  |  |  113|     80|	}
  ------------------
  731|     80|	TIMELIB_TIME_FREE(tz->trans);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 10, False: 70]
  |  |  ------------------
  |  |  111|     10|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     10|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     10|		m = NULL;   \
  |  |  113|     10|	}
  ------------------
  732|     80|	TIMELIB_TIME_FREE(tz->trans_idx);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 10, False: 70]
  |  |  ------------------
  |  |  111|     10|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     10|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     10|		m = NULL;   \
  |  |  113|     10|	}
  ------------------
  733|     80|	TIMELIB_TIME_FREE(tz->type);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 80, False: 0]
  |  |  ------------------
  |  |  111|     80|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     80|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     80|		m = NULL;   \
  |  |  113|     80|	}
  ------------------
  734|     80|	TIMELIB_TIME_FREE(tz->timezone_abbr);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 80, False: 0]
  |  |  ------------------
  |  |  111|     80|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     80|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     80|		m = NULL;   \
  |  |  113|     80|	}
  ------------------
  735|     80|	TIMELIB_TIME_FREE(tz->leap_times);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 0, False: 80]
  |  |  ------------------
  |  |  111|      0|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|      0|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|		m = NULL;   \
  |  |  113|      0|	}
  ------------------
  736|     80|	TIMELIB_TIME_FREE(tz->location.comments);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 80, False: 0]
  |  |  ------------------
  |  |  111|     80|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     80|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     80|		m = NULL;   \
  |  |  113|     80|	}
  ------------------
  737|     80|	TIMELIB_TIME_FREE(tz->posix_string);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 80, False: 0]
  |  |  ------------------
  |  |  111|     80|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     80|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     80|		m = NULL;   \
  |  |  113|     80|	}
  ------------------
  738|     80|	if (tz->posix_info) {
  ------------------
  |  Branch (738:6): [True: 80, False: 0]
  ------------------
  739|     80|		timelib_posix_str_dtor(tz->posix_info);
  740|     80|	}
  741|     80|	TIMELIB_TIME_FREE(tz);
  ------------------
  |  |  110|     80|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 80, False: 0]
  |  |  ------------------
  |  |  111|     80|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|     80|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|     80|		m = NULL;   \
  |  |  113|     80|	}
  ------------------
  742|       |	tz = NULL;
  743|     80|}
timelib_fetch_timezone_offset:
  791|    137|{
  792|    137|	uint32_t left, right;
  793|       |
  794|       |	/* RFC 8536: If there are no transitions, local time for all timestamps is specified
  795|       |	 * by the TZ string in the footer if present and nonempty; otherwise, it is specified
  796|       |	 * by time type 0.
  797|       |	 *
  798|       |	 * timelib: If there is also no time type 0, return NULL.
  799|       |	 */
  800|    137|	if (!tz->bit64.timecnt || !tz->trans) {
  ------------------
  |  Branch (800:6): [True: 126, False: 11]
  |  Branch (800:28): [True: 0, False: 11]
  ------------------
  801|    126|		if (tz->posix_info) {
  ------------------
  |  Branch (801:7): [True: 126, False: 0]
  ------------------
  802|    126|			*transition_time = INT64_MIN;
  803|    126|			return timelib_fetch_posix_timezone_offset(tz, ts, NULL);
  804|    126|		}
  805|       |
  806|      0|		if (tz->bit64.typecnt == 1) {
  ------------------
  |  Branch (806:7): [True: 0, False: 0]
  ------------------
  807|      0|			*transition_time = INT64_MIN;
  808|      0|			return &(tz->type[0]);
  809|      0|		}
  810|      0|		return NULL;
  811|      0|	}
  812|       |
  813|       |	/* RFC 8536: Local time for timestamps before the first transition is specified by
  814|       |	 * the first time type (time type 0). */
  815|     11|	if (ts < tz->trans[0]) {
  ------------------
  |  Branch (815:6): [True: 0, False: 11]
  ------------------
  816|      0|		*transition_time = INT64_MIN;
  817|      0|		return &(tz->type[0]);
  818|      0|	}
  819|       |
  820|       |	/* RFC 8536: Local time for timestamps on or after the last transition is specified
  821|       |	 * by the TZ string in the footer (Section 3.3) if present and nonempty; otherwise,
  822|       |	 * it is unspecified.
  823|       |	 *
  824|       |	 * timelib: For 'unspecified', timelib assumes the last transition
  825|       |	 */
  826|     11|	if (ts >= tz->trans[tz->bit64.timecnt - 1]) {
  ------------------
  |  Branch (826:6): [True: 11, False: 0]
  ------------------
  827|     11|		if (tz->posix_info) {
  ------------------
  |  Branch (827:7): [True: 11, False: 0]
  ------------------
  828|     11|			return timelib_fetch_posix_timezone_offset(tz, ts, transition_time);
  829|     11|		}
  830|       |
  831|      0|		*transition_time = tz->trans[tz->bit64.timecnt - 1];
  832|      0|		return &(tz->type[tz->trans_idx[tz->bit64.timecnt - 1]]);
  833|     11|	}
  834|       |
  835|       |	/* RFC 8536: The type corresponding to a transition time specifies local time for
  836|       |	 * timestamps starting at the given transition time and continuing up to, but not
  837|       |	 * including, the next transition time. */
  838|      0|	left = 0;
  839|      0|	right = tz->bit64.timecnt - 1;
  840|       |
  841|      0|	while (right - left > 1) {
  ------------------
  |  Branch (841:9): [True: 0, False: 0]
  ------------------
  842|      0|		uint32_t mid = (left + right) >> 1;
  843|       |
  844|      0|		if (ts < tz->trans[mid]) {
  ------------------
  |  Branch (844:7): [True: 0, False: 0]
  ------------------
  845|      0|			right = mid;
  846|      0|		} else {
  847|      0|			left = mid;
  848|      0|		}
  849|      0|	}
  850|      0|	*transition_time = tz->trans[left];
  851|      0|	return &(tz->type[tz->trans_idx[left]]);
  852|     11|}
timelib_get_time_zone_info:
  882|    119|{
  883|    119|	ttinfo *to;
  884|    119|	tlinfo *tl;
  885|    119|	int32_t offset = 0, leap_secs = 0;
  886|    119|	char *abbr;
  887|    119|	timelib_time_offset *tmp = timelib_time_offset_ctor();
  888|    119|	timelib_sll                transition_time;
  889|       |
  890|    119|	if ((to = timelib_fetch_timezone_offset(tz, ts, &transition_time))) {
  ------------------
  |  Branch (890:6): [True: 119, False: 0]
  ------------------
  891|    119|		offset = to->offset;
  892|    119|		abbr = &(tz->timezone_abbr[to->abbr_idx]);
  893|    119|		tmp->is_dst = to->isdst;
  894|    119|		tmp->transition_time = transition_time;
  895|    119|	} else {
  896|      0|		offset = 0;
  897|      0|		abbr = tz->timezone_abbr;
  898|      0|		tmp->is_dst = 0;
  899|      0|		tmp->transition_time = 0;
  900|      0|	}
  901|       |
  902|    119|	if ((tl = fetch_leaptime_offset(tz, ts))) {
  ------------------
  |  Branch (902:6): [True: 0, False: 119]
  ------------------
  903|      0|		leap_secs = -tl->offset;
  904|      0|	}
  905|       |
  906|    119|	tmp->offset = offset;
  907|    119|	tmp->leap_secs = leap_secs;
  908|    119|	tmp->abbr = abbr ? timelib_strdup(abbr) : timelib_strdup("GMT");
  ------------------
  |  |   14|    119|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|    119|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    119|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    119|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    119|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    119|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	tmp->abbr = abbr ? timelib_strdup(abbr) : timelib_strdup("GMT");
  ------------------
  |  |   14|      0|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|    119|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (908:14): [True: 119, False: 0]
  ------------------
  909|       |
  910|    119|	return tmp;
  911|    119|}
timelib_get_time_zone_offset_info:
  914|     18|{
  915|     18|	ttinfo *to;
  916|     18|	timelib_sll tmp_transition_time;
  917|       |
  918|     18|	if (tz == NULL) {
  ------------------
  |  Branch (918:6): [True: 0, False: 18]
  ------------------
  919|      0|		return 0;
  920|      0|	}
  921|       |
  922|     18|	if ((to = timelib_fetch_timezone_offset(tz, ts, &tmp_transition_time))) {
  ------------------
  |  Branch (922:6): [True: 18, False: 0]
  ------------------
  923|     18|		if (offset) {
  ------------------
  |  Branch (923:7): [True: 18, False: 0]
  ------------------
  924|     18|			*offset = to->offset;
  925|     18|		}
  926|     18|		if (is_dst) {
  ------------------
  |  Branch (926:7): [True: 6, False: 12]
  ------------------
  927|      6|			*is_dst = to->isdst;
  928|      6|		}
  929|     18|		if (transition_time) {
  ------------------
  |  Branch (929:7): [True: 13, False: 5]
  ------------------
  930|     13|			*transition_time = tmp_transition_time;
  931|     13|		}
  932|     18|		return 1;
  933|     18|	}
  934|      0|	return 0;
  935|     18|}
parse_tz.c:seek_to_tz_position:
  581|    346|{
  582|    346|	int left = 0, right = tzdb->index_size - 1;
  583|       |
  584|    346|	if (tzdb->index_size == 0) {
  ------------------
  |  Branch (584:6): [True: 0, False: 346]
  ------------------
  585|      0|		return 0;
  586|      0|	}
  587|       |
  588|  3.21k|	do {
  589|  3.21k|		int mid = ((unsigned)left + right) >> 1;
  590|  3.21k|		int cmp = timelib_strcasecmp(timezone, tzdb->index[mid].id);
  591|       |
  592|  3.21k|		if (cmp < 0) {
  ------------------
  |  Branch (592:7): [True: 1.12k, False: 2.08k]
  ------------------
  593|  1.12k|			right = mid - 1;
  594|  2.08k|		} else if (cmp > 0) {
  ------------------
  |  Branch (594:14): [True: 2.00k, False: 83]
  ------------------
  595|  2.00k|			left = mid + 1;
  596|  2.00k|		} else { /* (cmp == 0) */
  597|     83|			(*tzf) = &(tzdb->data[tzdb->index[mid].pos]);
  598|     83|			return 1;
  599|     83|		}
  600|       |
  601|  3.21k|	} while (left <= right);
  ------------------
  |  Branch (601:11): [True: 2.86k, False: 263]
  ------------------
  602|       |
  603|    263|	return 0;
  604|    346|}
parse_tz.c:timelib_tzinfo_ctor:
  654|     80|{
  655|     80|	timelib_tzinfo *t;
  656|     80|	t = timelib_calloc(1, sizeof(timelib_tzinfo));
  ------------------
  |  |   13|     80|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     80|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  657|     80|	t->name = timelib_strdup(name);
  ------------------
  |  |   14|     80|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|     80|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  658|       |
  659|     80|	return t;
  660|     80|}
parse_tz.c:read_preamble:
  153|     80|{
  154|       |	/* read marker (TZif) or (PHP) */
  155|     80|	if (memcmp(*tzf, "PHP", 3) == 0) {
  ------------------
  |  Branch (155:6): [True: 80, False: 0]
  ------------------
  156|     80|		*type = TIMELIB_TZINFO_PHP;
  ------------------
  |  |  102|     80|#define TIMELIB_TZINFO_PHP       0x01
  ------------------
  157|     80|		return read_php_preamble(tzf, tz);
  158|     80|	} else if (memcmp(*tzf, "TZif", 4) == 0) {
  ------------------
  |  Branch (158:13): [True: 0, False: 0]
  ------------------
  159|      0|		*type = TIMELIB_TZINFO_ZONEINFO;
  ------------------
  |  |  103|      0|#define TIMELIB_TZINFO_ZONEINFO  0x02
  ------------------
  160|      0|		return read_tzif_preamble(tzf, tz);
  161|      0|	} else {
  162|      0|		return -1;
  163|      0|	}
  164|     80|}
parse_tz.c:read_php_preamble:
   95|     80|{
   96|     80|	uint32_t version;
   97|       |
   98|       |	/* read ID */
   99|     80|	version = (*tzf)[3] - '0';
  100|     80|	*tzf += 4;
  101|       |
  102|       |	/* read BC flag */
  103|     80|	tz->bc = (**tzf == '\1');
  104|     80|	*tzf += 1;
  105|       |
  106|       |	/* read country code */
  107|     80|	memcpy(tz->location.country_code, *tzf, 2);
  108|     80|	tz->location.country_code[2] = '\0';
  109|     80|	*tzf += 2;
  110|       |
  111|       |	/* skip rest of preamble */
  112|     80|	*tzf += 13;
  113|       |
  114|     80|	return version;
  115|     80|}
parse_tz.c:read_32bit_header:
  167|     80|{
  168|     80|	uint32_t buffer[6];
  169|       |
  170|     80|	memcpy(&buffer, *tzf, sizeof(buffer));
  171|     80|	tz->_bit32.ttisgmtcnt = timelib_conv_int_unsigned(buffer[0]);
  172|     80|	tz->_bit32.ttisstdcnt = timelib_conv_int_unsigned(buffer[1]);
  173|     80|	tz->_bit32.leapcnt    = timelib_conv_int_unsigned(buffer[2]);
  174|     80|	tz->_bit32.timecnt    = timelib_conv_int_unsigned(buffer[3]);
  175|     80|	tz->_bit32.typecnt    = timelib_conv_int_unsigned(buffer[4]);
  176|     80|	tz->_bit32.charcnt    = timelib_conv_int_unsigned(buffer[5]);
  177|       |
  178|     80|	*tzf += sizeof(buffer);
  179|     80|}
parse_tz.c:timelib_conv_int_unsigned:
   69|  1.20k|{
   70|  1.20k|	return
   71|  1.20k|		((value & 0x000000ff) << 24) +
   72|  1.20k|		((value & 0x0000ff00) <<  8) +
   73|  1.20k|		((value & 0x00ff0000) >>  8) +
   74|  1.20k|		((value & 0xff000000) >> 24);
   75|  1.20k|}
parse_tz.c:skip_32bit_transitions:
  234|     80|{
  235|     80|	if (tz->_bit32.timecnt) {
  ------------------
  |  Branch (235:6): [True: 0, False: 80]
  ------------------
  236|      0|		*tzf += (sizeof(int32_t) * tz->_bit32.timecnt);
  237|      0|		*tzf += sizeof(unsigned char) * tz->_bit32.timecnt;
  238|      0|	}
  239|     80|}
parse_tz.c:skip_32bit_types:
  335|     80|{
  336|       |	/* Offset Types */
  337|     80|	*tzf += sizeof(unsigned char) * 6 * tz->_bit32.typecnt;
  338|       |
  339|       |	/* Abbreviations */
  340|     80|	*tzf += sizeof(char) * tz->_bit32.charcnt;
  341|       |
  342|       |	/* Leap seconds (only use in 'right/') format */
  343|     80|	if (tz->_bit32.leapcnt) {
  ------------------
  |  Branch (343:6): [True: 0, False: 80]
  ------------------
  344|      0|		*tzf += sizeof(int32_t) * tz->_bit32.leapcnt * 2;
  345|      0|	}
  346|       |
  347|       |	/* Standard/Wall Indicators (unused) */
  348|     80|	if (tz->_bit32.ttisstdcnt) {
  ------------------
  |  Branch (348:6): [True: 0, False: 80]
  ------------------
  349|      0|		*tzf += sizeof(unsigned char) * tz->_bit32.ttisstdcnt;
  350|      0|	}
  351|       |
  352|       |	/* UT/Local Time Indicators (unused) */
  353|     80|	if (tz->_bit32.ttisgmtcnt) {
  ------------------
  |  Branch (353:6): [True: 0, False: 80]
  ------------------
  354|      0|		*tzf += sizeof(unsigned char) * tz->_bit32.ttisgmtcnt;
  355|      0|	}
  356|     80|}
parse_tz.c:skip_64bit_preamble:
  624|     80|{
  625|     80|	if (memcmp(*tzf, "TZif2", 5) == 0) {
  ------------------
  |  Branch (625:6): [True: 80, False: 0]
  ------------------
  626|     80|		*tzf += 20;
  627|     80|		return 1;
  628|     80|	} else if (memcmp(*tzf, "TZif3", 5) == 0) {
  ------------------
  |  Branch (628:13): [True: 0, False: 0]
  ------------------
  629|      0|		*tzf += 20;
  630|      0|		return 1;
  631|      0|	} else if (memcmp(*tzf, "TZif4", 5) == 0) {
  ------------------
  |  Branch (631:13): [True: 0, False: 0]
  ------------------
  632|      0|		*tzf += 20;
  633|      0|		return 1;
  634|      0|	} else {
  635|      0|		return 0;
  636|      0|	}
  637|     80|}
parse_tz.c:read_64bit_header:
  640|     80|{
  641|     80|	uint32_t buffer[6];
  642|       |
  643|     80|	memcpy(&buffer, *tzf, sizeof(buffer));
  644|     80|	tz->bit64.ttisgmtcnt = timelib_conv_int_unsigned(buffer[0]);
  645|     80|	tz->bit64.ttisstdcnt = timelib_conv_int_unsigned(buffer[1]);
  646|     80|	tz->bit64.leapcnt    = timelib_conv_int_unsigned(buffer[2]);
  647|     80|	tz->bit64.timecnt    = timelib_conv_int_unsigned(buffer[3]);
  648|     80|	tz->bit64.typecnt    = timelib_conv_int_unsigned(buffer[4]);
  649|     80|	tz->bit64.charcnt    = timelib_conv_int_unsigned(buffer[5]);
  650|     80|	*tzf += sizeof(buffer);
  651|     80|}
parse_tz.c:read_64bit_transitions:
  198|     80|{
  199|     80|	int64_t *buffer = NULL;
  200|     80|	uint32_t i;
  201|     80|	unsigned char *cbuffer = NULL;
  202|       |
  203|     80|	if (tz->bit64.timecnt) {
  ------------------
  |  Branch (203:6): [True: 10, False: 70]
  ------------------
  204|     10|		buffer = (int64_t*) timelib_malloc(tz->bit64.timecnt * sizeof(int64_t));
  ------------------
  |  |   11|     10|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|     10|		if (!buffer) {
  ------------------
  |  Branch (205:7): [True: 0, False: 10]
  ------------------
  206|      0|			return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  207|      0|		}
  208|     10|		memcpy(buffer, *tzf, sizeof(int64_t) * tz->bit64.timecnt);
  209|     10|		*tzf += (sizeof(int64_t) * tz->bit64.timecnt);
  210|    970|		for (i = 0; i < tz->bit64.timecnt; i++) {
  ------------------
  |  Branch (210:15): [True: 960, False: 10]
  ------------------
  211|    960|			buffer[i] = timelib_conv_int64_signed(buffer[i]);
  ------------------
  |  |   92|    960|#define timelib_conv_int64_signed(value) ((int64_t) timelib_conv_int64_unsigned((int64_t) value))
  ------------------
  212|       |			/* Sanity check to see whether TS is just increasing */
  213|    960|			if (i > 0 && !(buffer[i] > buffer[i - 1])) {
  ------------------
  |  Branch (213:8): [True: 950, False: 10]
  |  Branch (213:17): [True: 0, False: 950]
  ------------------
  214|      0|				return TIMELIB_ERROR_CORRUPT_TRANSITIONS_DONT_INCREASE;
  ------------------
  |  |  389|      0|#define TIMELIB_ERROR_CORRUPT_TRANSITIONS_DONT_INCREASE   0x02
  ------------------
  215|      0|			}
  216|    960|		}
  217|       |
  218|     10|		cbuffer = (unsigned char*) timelib_malloc(tz->bit64.timecnt * sizeof(unsigned char));
  ------------------
  |  |   11|     10|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|     10|		if (!cbuffer) {
  ------------------
  |  Branch (219:7): [True: 0, False: 10]
  ------------------
  220|      0|			timelib_free(buffer);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|      0|			return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  222|      0|		}
  223|     10|		memcpy(cbuffer, *tzf, sizeof(unsigned char) * tz->bit64.timecnt);
  224|     10|		*tzf += sizeof(unsigned char) * tz->bit64.timecnt;
  225|     10|	}
  226|       |
  227|     80|	tz->trans = buffer;
  228|     80|	tz->trans_idx = cbuffer;
  229|       |
  230|     80|	return 0;
  231|     80|}
parse_tz.c:timelib_conv_int64_unsigned:
   78|    960|{
   79|    960|	return
   80|    960|		((value & 0x00000000000000ff) << 56) +
   81|    960|		((value & 0x000000000000ff00) << 40) +
   82|    960|		((value & 0x0000000000ff0000) << 24) +
   83|    960|		((value & 0x00000000ff000000) <<  8) +
   84|    960|		((value & 0x000000ff00000000) >>  8) +
   85|    960|		((value & 0x0000ff0000000000) >> 24) +
   86|    960|		((value & 0x00ff000000000000) >> 40) +
   87|    960|		((value & 0xff00000000000000) >> 56);
   88|    960|}
parse_tz.c:read_64bit_types:
  242|     80|{
  243|     80|	unsigned char *buffer;
  244|     80|	int32_t *leap_buffer;
  245|     80|	unsigned int i, j;
  246|       |
  247|       |	/* Offset Types */
  248|     80|	buffer = (unsigned char*) timelib_malloc(tz->bit64.typecnt * sizeof(unsigned char) * 6);
  ------------------
  |  |   11|     80|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|     80|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|     80|	if (!buffer) {
  ------------------
  |  Branch (249:6): [True: 0, False: 80]
  ------------------
  250|      0|		return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  251|      0|	}
  252|     80|	memcpy(buffer, *tzf, sizeof(unsigned char) * 6 * tz->bit64.typecnt);
  253|     80|	*tzf += sizeof(unsigned char) * 6 * tz->bit64.typecnt;
  254|       |
  255|       |	// We add two extra to have space for potential new ttinfo entries due to new types defined in the
  256|       |	// POSIX string
  257|     80|	tz->type = (ttinfo*) timelib_calloc(1, (tz->bit64.typecnt + 2) * sizeof(ttinfo));
  ------------------
  |  |   13|     80|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     80|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|     80|	if (!tz->type) {
  ------------------
  |  Branch (258:6): [True: 0, False: 80]
  ------------------
  259|      0|		timelib_free(buffer);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|      0|		return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  261|      0|	}
  262|       |
  263|    210|	for (i = 0; i < tz->bit64.typecnt; i++) {
  ------------------
  |  Branch (263:14): [True: 130, False: 80]
  ------------------
  264|    130|		j = i * 6;
  265|    130|		tz->type[i].offset = 0;
  266|    130|		tz->type[i].offset += (int32_t) (((uint32_t) buffer[j]) << 24) + (buffer[j + 1] << 16) + (buffer[j + 2] << 8) + tz->type[i].offset + buffer[j + 3];
  267|    130|		tz->type[i].isdst = buffer[j + 4];
  268|    130|		tz->type[i].abbr_idx = buffer[j + 5];
  269|    130|	}
  270|     80|	timelib_free(buffer);
  ------------------
  |  |   16|     80|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|     80|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  271|       |
  272|       |	/* Abbreviations */
  273|     80|	tz->timezone_abbr = (char*) timelib_malloc(tz->bit64.charcnt);
  ------------------
  |  |   11|     80|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|     80|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|     80|	if (!tz->timezone_abbr) {
  ------------------
  |  Branch (274:6): [True: 0, False: 80]
  ------------------
  275|      0|		return TIMELIB_ERROR_CORRUPT_NO_ABBREVIATION;
  ------------------
  |  |  391|      0|#define TIMELIB_ERROR_CORRUPT_NO_ABBREVIATION             0x04
  ------------------
  276|      0|	}
  277|     80|	memcpy(tz->timezone_abbr, *tzf, sizeof(char) * tz->bit64.charcnt);
  278|     80|	*tzf += sizeof(char) * tz->bit64.charcnt;
  279|       |
  280|       |	/* Leap seconds (only use in 'right/') format */
  281|     80|	if (tz->bit64.leapcnt) {
  ------------------
  |  Branch (281:6): [True: 0, False: 80]
  ------------------
  282|      0|		leap_buffer = (int32_t *) timelib_malloc(tz->bit64.leapcnt * (sizeof(int64_t) + sizeof(int32_t)));
  ------------------
  |  |   11|      0|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|      0|		if (!leap_buffer) {
  ------------------
  |  Branch (283:7): [True: 0, False: 0]
  ------------------
  284|      0|			return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  285|      0|		}
  286|      0|		memcpy(leap_buffer, *tzf, tz->bit64.leapcnt * (sizeof(int64_t) + sizeof(int32_t)));
  287|      0|		*tzf += tz->bit64.leapcnt * (sizeof(int64_t) + sizeof(int32_t));
  288|       |
  289|      0|		tz->leap_times = (tlinfo*) timelib_malloc(tz->bit64.leapcnt * sizeof(tlinfo));
  ------------------
  |  |   11|      0|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  290|      0|		if (!tz->leap_times) {
  ------------------
  |  Branch (290:7): [True: 0, False: 0]
  ------------------
  291|      0|			timelib_free(leap_buffer);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  292|      0|			return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  293|      0|		}
  294|      0|		for (i = 0; i < tz->bit64.leapcnt; i++) {
  ------------------
  |  Branch (294:15): [True: 0, False: 0]
  ------------------
  295|      0|			tz->leap_times[i].trans = timelib_conv_int64_signed(leap_buffer[i * 3 + 1] * 4294967296 + leap_buffer[i * 3]);
  ------------------
  |  |   92|      0|#define timelib_conv_int64_signed(value) ((int64_t) timelib_conv_int64_unsigned((int64_t) value))
  ------------------
  296|      0|			tz->leap_times[i].offset = timelib_conv_int_signed(leap_buffer[i * 3 + 2]);
  ------------------
  |  |   91|      0|#define timelib_conv_int_signed(value) ((int32_t) timelib_conv_int_unsigned((int32_t) value))
  ------------------
  297|      0|		}
  298|      0|		timelib_free(leap_buffer);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|      0|	}
  300|       |
  301|       |	/* Standard/Wall Indicators (unused) */
  302|     80|	if (tz->bit64.ttisstdcnt) {
  ------------------
  |  Branch (302:6): [True: 0, False: 80]
  ------------------
  303|      0|		buffer = (unsigned char*) timelib_malloc(tz->bit64.ttisstdcnt * sizeof(unsigned char));
  ------------------
  |  |   11|      0|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|      0|		if (!buffer) {
  ------------------
  |  Branch (304:7): [True: 0, False: 0]
  ------------------
  305|      0|			return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  306|      0|		}
  307|      0|		memcpy(buffer, *tzf, sizeof(unsigned char) * tz->bit64.ttisstdcnt);
  308|      0|		*tzf += sizeof(unsigned char) * tz->bit64.ttisstdcnt;
  309|       |
  310|      0|		for (i = 0; i < tz->bit64.ttisstdcnt; i++) {
  ------------------
  |  Branch (310:15): [True: 0, False: 0]
  ------------------
  311|      0|			tz->type[i].isstdcnt = buffer[i];
  312|      0|		}
  313|      0|		timelib_free(buffer);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|      0|	}
  315|       |
  316|       |	/* UT/Local Time Indicators (unused) */
  317|     80|	if (tz->bit64.ttisgmtcnt) {
  ------------------
  |  Branch (317:6): [True: 0, False: 80]
  ------------------
  318|      0|		buffer = (unsigned char*) timelib_malloc(tz->bit64.ttisgmtcnt * sizeof(unsigned char));
  ------------------
  |  |   11|      0|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|      0|		if (!buffer) {
  ------------------
  |  Branch (319:7): [True: 0, False: 0]
  ------------------
  320|      0|			return TIMELIB_ERROR_CANNOT_ALLOCATE;
  ------------------
  |  |  388|      0|#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
  ------------------
  321|      0|		}
  322|      0|		memcpy(buffer, *tzf, sizeof(unsigned char) * tz->bit64.ttisgmtcnt);
  323|      0|		*tzf += sizeof(unsigned char) * tz->bit64.ttisgmtcnt;
  324|       |
  325|      0|		for (i = 0; i < tz->bit64.ttisgmtcnt; i++) {
  ------------------
  |  Branch (325:15): [True: 0, False: 0]
  ------------------
  326|      0|			tz->type[i].isgmtcnt = buffer[i];
  327|      0|		}
  328|      0|		timelib_free(buffer);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  329|      0|	}
  330|       |
  331|     80|	return 0;
  332|     80|}
parse_tz.c:read_posix_string:
  359|     80|{
  360|     80|	const unsigned char *begin;
  361|       |
  362|       |	// POSIX string is delimited by \n
  363|     80|	(*tzf)++;
  364|     80|	begin = *tzf;
  365|       |
  366|    630|	while (*tzf[0] != '\n') {
  ------------------
  |  Branch (366:9): [True: 550, False: 80]
  ------------------
  367|    550|		(*tzf)++;
  368|    550|	}
  369|       |
  370|     80|	tz->posix_string = timelib_calloc(1, *tzf - begin + 1);
  ------------------
  |  |   13|     80|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|     80|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  371|     80|	memcpy(tz->posix_string, begin, *tzf - begin);
  372|       |
  373|       |	// skip over closing \n
  374|     80|	(*tzf)++;
  375|     80|}
parse_tz.c:integrate_posix_string:
  420|     80|{
  421|     80|	tz->posix_info = timelib_parse_posix_str(tz->posix_string);
  422|     80|	if (!tz->posix_info) {
  ------------------
  |  Branch (422:6): [True: 0, False: 80]
  ------------------
  423|      0|		return 0;
  424|      0|	}
  425|       |
  426|     80|	tz->posix_info->type_index_std_type = find_ttinfo_index(tz, tz->posix_info->std_offset, 0, tz->posix_info->std);
  427|     80|	if (tz->posix_info->type_index_std_type == TIMELIB_UNSET) {
  ------------------
  |  |  382|     80|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (427:6): [True: 0, False: 80]
  ------------------
  428|      0|		tz->posix_info->type_index_std_type = add_new_ttinfo_index(tz, tz->posix_info->std_offset, 0, tz->posix_info->std);
  429|      0|		return 1;
  430|      0|	}
  431|       |
  432|       |	/* If there is no DST set for this zone, return */
  433|     80|	if (!tz->posix_info->dst) {
  ------------------
  |  Branch (433:6): [True: 70, False: 10]
  ------------------
  434|     70|		return 1;
  435|     70|	}
  436|       |
  437|     10|	tz->posix_info->type_index_dst_type = find_ttinfo_index(tz, tz->posix_info->dst_offset, 1, tz->posix_info->dst);
  438|     10|	if (tz->posix_info->type_index_dst_type == TIMELIB_UNSET) {
  ------------------
  |  |  382|     10|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (438:6): [True: 0, False: 10]
  ------------------
  439|      0|		tz->posix_info->type_index_dst_type = add_new_ttinfo_index(tz, tz->posix_info->dst_offset, 1, tz->posix_info->dst);
  440|      0|		return 1;
  441|      0|	}
  442|       |
  443|     10|	return 1;
  444|     10|}
parse_tz.c:find_ttinfo_index:
  378|     90|{
  379|     90|	uint64_t i;
  380|       |
  381|    180|	for (i = 0; i < tz->bit64.typecnt; i++) {
  ------------------
  |  Branch (381:14): [True: 180, False: 0]
  ------------------
  382|    180|		if (
  383|    180|			(offset == tz->type[i].offset) &&
  ------------------
  |  Branch (383:4): [True: 100, False: 80]
  ------------------
  384|    100|			(isdst == tz->type[i].isdst) &&
  ------------------
  |  Branch (384:4): [True: 90, False: 10]
  ------------------
  385|     90|			(strcmp(abbr, &tz->timezone_abbr[tz->type[i].abbr_idx]) == 0)
  ------------------
  |  Branch (385:4): [True: 90, False: 0]
  ------------------
  386|    180|		) {
  387|     90|			return i;
  388|     90|		}
  389|    180|	}
  390|       |
  391|      0|	return TIMELIB_UNSET;
  ------------------
  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  ------------------
  392|     90|}
parse_tz.c:read_location:
  447|     80|{
  448|     80|	uint32_t buffer[3];
  449|     80|	uint32_t comments_len;
  450|       |
  451|     80|	memcpy(&buffer, *tzf, sizeof(buffer));
  452|     80|	tz->location.latitude = timelib_conv_int_unsigned(buffer[0]);
  453|     80|	tz->location.latitude = (tz->location.latitude / 100000) - 90;
  454|     80|	tz->location.longitude = timelib_conv_int_unsigned(buffer[1]);
  455|     80|	tz->location.longitude = (tz->location.longitude / 100000) - 180;
  456|     80|	comments_len = timelib_conv_int_unsigned(buffer[2]);
  457|     80|	*tzf += sizeof(buffer);
  458|       |
  459|       |	tz->location.comments = timelib_malloc(comments_len + 1);
  ------------------
  |  |   11|     80|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|     80|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     80|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     80|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     80|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     80|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  460|     80|	memcpy(tz->location.comments, *tzf, comments_len);
  461|     80|	tz->location.comments[comments_len] = '\0';
  462|     80|	*tzf += comments_len;
  463|     80|}
parse_tz.c:fetch_leaptime_offset:
  855|    119|{
  856|    119|	int i;
  857|       |
  858|    119|	if (!tz->bit64.leapcnt || !tz->leap_times) {
  ------------------
  |  Branch (858:6): [True: 119, False: 0]
  |  Branch (858:28): [True: 0, False: 0]
  ------------------
  859|    119|		return NULL;
  860|    119|	}
  861|       |
  862|      0|	for (i = tz->bit64.leapcnt - 1; i > 0; i--) {
  ------------------
  |  Branch (862:34): [True: 0, False: 0]
  ------------------
  863|      0|		if (ts > tz->leap_times[i].trans) {
  ------------------
  |  Branch (863:7): [True: 0, False: 0]
  ------------------
  864|      0|			return &(tz->leap_times[i]);
  865|      0|		}
  866|      0|	}
  867|      0|	return NULL;
  868|      0|}

timelib_time_ctor:
   62|    736|{
   63|    736|	timelib_time *t;
   64|    736|	t = timelib_calloc(1, sizeof(timelib_time));
  ------------------
  |  |   13|    736|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|    736|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    736|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    736|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    736|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    736|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|       |
   66|    736|	return t;
   67|    736|}
timelib_time_dtor:
   70|    736|{
   71|    736|	TIMELIB_TIME_FREE(t->tz_abbr);
  ------------------
  |  |  110|    736|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 299, False: 437]
  |  |  ------------------
  |  |  111|    299|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|    299|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|    299|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|    299|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|    299|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|    299|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|    299|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|    299|		m = NULL;   \
  |  |  113|    299|	}
  ------------------
   72|       |	TIMELIB_TIME_FREE(t);
  ------------------
  |  |  110|    736|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 736, False: 0]
  |  |  ------------------
  |  |  111|    736|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|    736|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|    736|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|    736|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|    736|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|    736|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|    736|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|    736|		m = NULL;   \
  |  |  113|    736|	}
  ------------------
   73|    736|}
timelib_rel_time_ctor:
  102|      1|{
  103|      1|	timelib_rel_time *t;
  104|      1|	t = timelib_calloc(1, sizeof(timelib_rel_time));
  ------------------
  |  |   13|      1|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|      1|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  105|       |
  106|      1|	return t;
  107|      1|}
timelib_rel_time_dtor:
  110|      7|{
  111|       |	TIMELIB_TIME_FREE(t);
  ------------------
  |  |  110|      7|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 1, False: 6]
  |  |  ------------------
  |  |  111|      1|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      1|		m = NULL;   \
  |  |  113|      1|	}
  ------------------
  112|      7|}
timelib_time_tz_abbr_update:
  122|    280|{
  123|    280|	unsigned int i;
  124|    280|	size_t tz_abbr_len = strlen(tz_abbr);
  125|       |
  126|    280|	TIMELIB_TIME_FREE(tm->tz_abbr);
  ------------------
  |  |  110|    280|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 1, False: 279]
  |  |  ------------------
  |  |  111|      1|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|      1|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      1|		m = NULL;   \
  |  |  113|      1|	}
  ------------------
  127|    280|	tm->tz_abbr = timelib_strdup(tz_abbr);
  ------------------
  |  |   14|    280|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|    280|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    280|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    280|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    280|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    280|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|    734|	for (i = 0; i < tz_abbr_len; i++) {
  ------------------
  |  Branch (128:14): [True: 454, False: 280]
  ------------------
  129|       |		tm->tz_abbr[i] = toupper((unsigned char)tz_abbr[i]);
  ------------------
  |  Branch (129:20): [True: 0, False: 0]
  |  Branch (129:20): [True: 0, False: 0]
  |  Branch (129:20): [Folded, False: 454]
  ------------------
  130|    454|	}
  131|    280|}
timelib_time_offset_ctor:
  134|    119|{
  135|    119|	timelib_time_offset *t;
  136|    119|	t = timelib_calloc(1, sizeof(timelib_time_offset));
  ------------------
  |  |   13|    119|#define timelib_calloc  ecalloc
  |  |  ------------------
  |  |  |  |  157|    119|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    119|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    119|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    119|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    119|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|       |
  138|    119|	return t;
  139|    119|}
timelib_time_offset_dtor:
  142|    119|{
  143|    119|	TIMELIB_TIME_FREE(t->abbr);
  ------------------
  |  |  110|    119|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 119, False: 0]
  |  |  ------------------
  |  |  111|    119|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|    119|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|    119|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|    119|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|    119|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|    119|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|    119|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|    119|		m = NULL;   \
  |  |  113|    119|	}
  ------------------
  144|       |	TIMELIB_TIME_FREE(t);
  ------------------
  |  |  110|    119|	if (m) {        \
  |  |  ------------------
  |  |  |  Branch (110:6): [True: 119, False: 0]
  |  |  ------------------
  |  |  111|    119|		timelib_free(m);    \
  |  |  ------------------
  |  |  |  |   16|    119|#define timelib_free    efree
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|    119|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|    119|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|    119|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|    119|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|    119|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|    119|		m = NULL;   \
  |  |  113|    119|	}
  ------------------
  145|    119|}
timelib_error_container_dtor:
  156|    652|{
  157|    652|	int i;
  158|       |
  159|  1.37k|	for (i = 0; i < errors->warning_count; i++) {
  ------------------
  |  Branch (159:14): [True: 725, False: 652]
  ------------------
  160|    725|		timelib_free(errors->warning_messages[i].message);
  ------------------
  |  |   16|    725|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    725|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    725|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    725|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    725|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    725|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  161|    725|	}
  162|    652|	timelib_free(errors->warning_messages);
  ------------------
  |  |   16|    652|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    652|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    652|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    652|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    652|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    652|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  163|  30.4k|	for (i = 0; i < errors->error_count; i++) {
  ------------------
  |  Branch (163:14): [True: 29.7k, False: 652]
  ------------------
  164|  29.7k|		timelib_free(errors->error_messages[i].message);
  ------------------
  |  |   16|  29.7k|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|  29.7k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  29.7k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  29.7k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  29.7k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  29.7k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  165|  29.7k|	}
  166|    652|	timelib_free(errors->error_messages);
  ------------------
  |  |   16|    652|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    652|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    652|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    652|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    652|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    652|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  167|       |	timelib_free(errors);
  ------------------
  |  |   16|    652|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|    652|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    652|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    652|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    652|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    652|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|    652|}
timelib_date_to_int:
  171|      1|{
  172|      1|	timelib_sll ts;
  173|       |
  174|      1|	ts = d->sse;
  175|       |
  176|      1|	if (ts < TIMELIB_LONG_MIN || ts > TIMELIB_LONG_MAX) {
  ------------------
  |  |  116|      2|# define TIMELIB_LONG_MIN INT64_MIN
  ------------------
              	if (ts < TIMELIB_LONG_MIN || ts > TIMELIB_LONG_MAX) {
  ------------------
  |  |  115|      1|# define TIMELIB_LONG_MAX INT64_MAX
  ------------------
  |  Branch (176:6): [True: 0, False: 1]
  |  Branch (176:31): [True: 0, False: 1]
  ------------------
  177|      0|		if (error) {
  ------------------
  |  Branch (177:7): [True: 0, False: 0]
  ------------------
  178|      0|			*error = 1;
  179|      0|		}
  180|      0|		return 0;
  181|      0|	}
  182|      1|	if (error) {
  ------------------
  |  Branch (182:6): [True: 1, False: 0]
  ------------------
  183|      1|		*error = 0;
  184|      1|	}
  185|      1|	return (timelib_long) d->sse;
  186|      1|}
timelib_hms_to_seconds:
  228|     25|{
  229|     25|	return (h * SECS_PER_HOUR) + (m * 60) + s;
  ------------------
  |  |   90|     25|#define SECS_PER_HOUR   3600
  ------------------
  230|     25|}
timelib_strcasecmp:
  258|   484k|{
  259|   484k|	size_t len;
  260|   484k|	size_t len1 = strlen(s1);
  261|   484k|	size_t len2 = strlen(s2);
  262|   484k|	int c1, c2;
  263|       |
  264|   484k|	if (s1 == s2) {
  ------------------
  |  Branch (264:6): [True: 0, False: 484k]
  ------------------
  265|      0|		return 0;
  266|      0|	}
  267|       |
  268|   484k|	len = MIN(len1, len2);
  ------------------
  |  |  255|   484k|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (255:21): [True: 330k, False: 153k]
  |  |  ------------------
  ------------------
  269|   511k|	while (len--) {
  ------------------
  |  Branch (269:9): [True: 496k, False: 15.3k]
  ------------------
  270|   496k|		c1 = timelib_tolower(*(unsigned char *)s1++);
  ------------------
  |  |  251|   496k|#define timelib_tolower(c) (timelib_tolower_map[(unsigned char)(c)])
  ------------------
  271|   496k|		c2 = timelib_tolower(*(unsigned char *)s2++);
  ------------------
  |  |  251|   496k|#define timelib_tolower(c) (timelib_tolower_map[(unsigned char)(c)])
  ------------------
  272|   496k|		if (c1 != c2) {
  ------------------
  |  Branch (272:7): [True: 468k, False: 27.6k]
  ------------------
  273|   468k|			return c1 - c2;
  274|   468k|		}
  275|   496k|	}
  276|       |
  277|  15.3k|	return (int)(len1 - len2);
  278|   484k|}
timelib_strncasecmp:
  281|    179|{
  282|    179|	size_t len;
  283|    179|	size_t len1 = strlen(s1);
  284|    179|	size_t len2 = strlen(s2);
  285|    179|	int c1, c2;
  286|       |
  287|    179|	if (s1 == s2) {
  ------------------
  |  Branch (287:6): [True: 0, False: 179]
  ------------------
  288|      0|		return 0;
  289|      0|	}
  290|    179|	len = MIN(length, MIN(len1, len2));
  ------------------
  |  |  255|    358|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (255:21): [True: 0, False: 179]
  |  |  |  Branch (255:27): [True: 56, False: 123]
  |  |  |  Branch (255:36): [True: 56, False: 123]
  |  |  ------------------
  ------------------
  291|    181|	while (len--) {
  ------------------
  |  Branch (291:9): [True: 180, False: 1]
  ------------------
  292|    180|		c1 = timelib_tolower(*(unsigned char *)s1++);
  ------------------
  |  |  251|    180|#define timelib_tolower(c) (timelib_tolower_map[(unsigned char)(c)])
  ------------------
  293|    180|		c2 = timelib_tolower(*(unsigned char *)s2++);
  ------------------
  |  |  251|    180|#define timelib_tolower(c) (timelib_tolower_map[(unsigned char)(c)])
  ------------------
  294|    180|		if (c1 != c2) {
  ------------------
  |  Branch (294:7): [True: 178, False: 2]
  ------------------
  295|    178|			return c1 - c2;
  296|    178|		}
  297|    180|	}
  298|       |
  299|      1|	return (int)(MIN(length, len1) - MIN(length, len2));
  ------------------
  |  |  255|      1|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (255:21): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	return (int)(MIN(length, len1) - MIN(length, len2));
  ------------------
  |  |  255|      1|#define MIN(a, b)  (((a)<(b))?(a):(b))
  |  |  ------------------
  |  |  |  Branch (255:21): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  300|    179|}

timelib_do_normalize:
  227|    100|{
  228|    100|	if (time->us != TIMELIB_UNSET) do_range_limit(0, 1000000, 1000000, &time->us, &time->s);
  ------------------
  |  |  382|    100|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (228:6): [True: 100, False: 0]
  ------------------
  229|    100|	if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->s, &time->i);
  ------------------
  |  |  382|    100|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (229:6): [True: 100, False: 0]
  ------------------
  230|    100|	if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->i, &time->h);
  ------------------
  |  |  382|    100|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (230:6): [True: 100, False: 0]
  ------------------
  231|    100|	if (time->s != TIMELIB_UNSET) do_range_limit(0, 24, 24, &time->h, &time->d);
  ------------------
  |  |  382|    100|#define TIMELIB_UNSET   -9999999
  ------------------
  |  Branch (231:6): [True: 100, False: 0]
  ------------------
  232|    100|	do_range_limit(1, 13, 12, &time->m, &time->y);
  233|       |
  234|       |	/* Short cut if we're doing things against the Epoch */
  235|    100|	if (time->y == 1970 && time->m == 1 && time->d != 1) {
  ------------------
  |  Branch (235:6): [True: 44, False: 56]
  |  Branch (235:25): [True: 44, False: 0]
  |  Branch (235:41): [True: 14, False: 30]
  ------------------
  236|     14|		magic_date_calc(time);
  237|     14|	}
  238|       |
  239|  3.45k|	do {} while (do_range_limit_days(&time->y, &time->m, &time->d));
  ------------------
  |  Branch (239:15): [True: 3.35k, False: 100]
  ------------------
  240|    100|	do_range_limit(1, 13, 12, &time->m, &time->y);
  241|    100|}
timelib_epoch_days_from_time:
  454|     50|{
  455|     50|	timelib_sll y = time->y; // Make copy, as we don't want to change the original one
  456|     50|	timelib_sll era, year_of_era, day_of_year, day_of_era;
  457|       |
  458|     50|	y -= time->m <= 2;
  459|     50|	era = (y >= 0 ? y : y - 399) / YEARS_PER_ERA;
  ------------------
  |  |   99|     50|#define YEARS_PER_ERA    400
  ------------------
  |  Branch (459:9): [True: 36, False: 14]
  ------------------
  460|     50|	year_of_era = y - era * YEARS_PER_ERA;                                                        // [0, 399]
  ------------------
  |  |   99|     50|#define YEARS_PER_ERA    400
  ------------------
  461|     50|	day_of_year = (153 * (time->m + (time->m > 2 ? -3 : 9)) + 2)/5 + time->d - 1;                 // [0, 365]
  ------------------
  |  Branch (461:35): [True: 32, False: 18]
  ------------------
  462|     50|	day_of_era = year_of_era * DAYS_PER_YEAR + year_of_era / 4 - year_of_era / 100 + day_of_year; // [0, 146096]
  ------------------
  |  |   94|     50|#define DAYS_PER_YEAR    365
  ------------------
  463|       |
  464|     50|	return era * DAYS_PER_ERA + day_of_era - HINNANT_EPOCH_SHIFT;
  ------------------
  |  |   98|     50|#define DAYS_PER_ERA  146097
  ------------------
              	return era * DAYS_PER_ERA + day_of_era - HINNANT_EPOCH_SHIFT;
  ------------------
  |  |  100|     50|#define HINNANT_EPOCH_SHIFT 719468 /* 0000-03-01 instead of 1970-01-01 */
  ------------------
  465|     50|}
timelib_update_ts:
  468|     25|{
  469|     25|	do_adjust_special_early(time);
  470|     25|	do_adjust_relative(time);
  471|     25|	do_adjust_special(time);
  472|       |
  473|       |	/* You might be wondering, why this code does this in two steps. This is because
  474|       |	 * timelib_epoch_days_from_time(time) * SECS_PER_DAY with the lowest limit of
  475|       |	 * timelib_epoch_days_from_time() is less than the range of an int64_t. This then overflows. In
  476|       |	 * order to be able to still allow for any time in that day that only halfly fits in the int64_t
  477|       |	 * range, we add the time element first, which is always positive, and then twice half the value
  478|       |	 * of the earliest day as expressed as unix timestamp. */
  479|     25|	time->sse = timelib_hms_to_seconds(time->h, time->i, time->s);
  480|     25|	time->sse += timelib_epoch_days_from_time(time) * (SECS_PER_DAY / 2);
  ------------------
  |  |   89|     25|#define SECS_PER_DAY   86400
  ------------------
  481|     25|	time->sse += timelib_epoch_days_from_time(time) * (SECS_PER_DAY / 2);
  ------------------
  |  |   89|     25|#define SECS_PER_DAY   86400
  ------------------
  482|       |
  483|       |	// This modifies time->sse, if needed
  484|     25|	do_adjust_timezone(time, tzi);
  485|       |
  486|     25|	time->sse_uptodate = 1;
  487|     25|	time->have_relative = time->relative.have_weekday_relative = time->relative.have_special_relative = time->relative.first_last_day_of = 0;
  488|     25|}
tm2unixtime.c:do_range_limit:
   33|  4.05k|{
   34|  4.05k|	if (*a < start) {
  ------------------
  |  Branch (34:6): [True: 1.99k, False: 2.06k]
  ------------------
   35|       |		/* We calculate 'a + 1' first as 'start - *a - 1' causes an int64_t overflows if *a is
   36|       |		 * LONG_MIN. 'start' is 0 in this context, and '0 - LONG_MIN > LONG_MAX'. */
   37|  1.99k|		timelib_sll a_plus_1 = *a + 1;
   38|       |
   39|  1.99k|		*b -= (start - a_plus_1) / adj + 1;
   40|       |
   41|       |		/* This code add the extra 'adj' separately, as otherwise this can overflow int64_t in
   42|       |		 * situations where *b is near LONG_MIN. */
   43|  1.99k|		*a += adj * ((start - a_plus_1) / adj);
   44|  1.99k|		*a += adj;
   45|  1.99k|	}
   46|  4.05k|	if (*a >= end) {
  ------------------
  |  Branch (46:6): [True: 1.38k, False: 2.67k]
  ------------------
   47|  1.38k|		*b += *a / adj;
   48|  1.38k|		*a -= adj * (*a / adj);
   49|  1.38k|	}
   50|  4.05k|}
tm2unixtime.c:magic_date_calc:
  201|     14|{
  202|     14|	timelib_sll y, ddd, mi, mm, dd, g;
  203|       |
  204|       |	/* The algorithm doesn't work before the year 1 */
  205|     14|	if (time->d < -719498) {
  ------------------
  |  Branch (205:6): [True: 7, False: 7]
  ------------------
  206|      7|		return;
  207|      7|	}
  208|       |
  209|      7|	g = time->d + HINNANT_EPOCH_SHIFT - 1;
  ------------------
  |  |  100|      7|#define HINNANT_EPOCH_SHIFT 719468 /* 0000-03-01 instead of 1970-01-01 */
  ------------------
  210|       |
  211|      7|	y = (10000 * g + 14780) / 3652425;
  212|      7|	ddd = g - ((365*y) + (y/4) - (y/100) + (y/400));
  213|      7|	if (ddd < 0) {
  ------------------
  |  Branch (213:6): [True: 0, False: 7]
  ------------------
  214|      0|		y--;
  215|      0|		ddd = g - ((365*y) + (y/4) - (y/100) + (y/400));
  216|      0|	}
  217|      7|	mi = (100 * ddd + 52) / 3060;
  218|      7|	mm = ((mi + 2) % 12) + 1;
  219|      7|	y = y + (mi + 2) / 12;
  220|      7|	dd = ddd - ((mi * 306 + 5) / 10) + 1;
  221|      7|	time->y = y;
  222|      7|	time->m = mm;
  223|      7|	time->d = dd;
  224|      7|}
tm2unixtime.c:do_range_limit_days:
  113|  3.45k|{
  114|  3.45k|	timelib_sll leapyear;
  115|  3.45k|	timelib_sll previous_month, previous_year;
  116|  3.45k|	timelib_sll days_in_previous_month;
  117|  3.45k|	int retval = 0;
  118|  3.45k|	int *days_per_month_current_year;
  119|       |
  120|       |	/* can jump an entire leap year period quickly */
  121|  3.45k|	if (*d >= DAYS_PER_ERA || *d <= -DAYS_PER_ERA) {
  ------------------
  |  |   98|  6.91k|#define DAYS_PER_ERA  146097
  ------------------
              	if (*d >= DAYS_PER_ERA || *d <= -DAYS_PER_ERA) {
  ------------------
  |  |   98|  3.44k|#define DAYS_PER_ERA  146097
  ------------------
  |  Branch (121:6): [True: 8, False: 3.44k]
  |  Branch (121:28): [True: 7, False: 3.44k]
  ------------------
  122|     15|		*y += YEARS_PER_ERA * (*d / DAYS_PER_ERA);
  ------------------
  |  |   99|     15|#define YEARS_PER_ERA    400
  ------------------
              		*y += YEARS_PER_ERA * (*d / DAYS_PER_ERA);
  ------------------
  |  |   98|     15|#define DAYS_PER_ERA  146097
  ------------------
  123|     15|		*d -= DAYS_PER_ERA * (*d / DAYS_PER_ERA);
  ------------------
  |  |   98|     15|#define DAYS_PER_ERA  146097
  ------------------
              		*d -= DAYS_PER_ERA * (*d / DAYS_PER_ERA);
  ------------------
  |  |   98|     15|#define DAYS_PER_ERA  146097
  ------------------
  124|     15|	}
  125|       |
  126|  3.45k|	do_range_limit(1, 13, 12, m, y);
  127|       |
  128|  3.45k|	leapyear = timelib_is_leap(*y);
  ------------------
  |  |  105|  3.45k|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 851, False: 2.60k]
  |  |  |  Branch (105:46): [True: 816, False: 35]
  |  |  |  Branch (105:64): [True: 6, False: 29]
  |  |  ------------------
  ------------------
  129|  3.45k|	days_per_month_current_year = leapyear ? days_in_month_leap : days_in_month;
  ------------------
  |  Branch (129:32): [True: 822, False: 2.63k]
  ------------------
  130|       |
  131|  27.0k|	while (*d <= 0 && *m > 0) {
  ------------------
  |  Branch (131:9): [True: 25.5k, False: 1.49k]
  |  Branch (131:20): [True: 23.5k, False: 1.96k]
  ------------------
  132|  23.5k|		previous_month = (*m) - 1;
  133|  23.5k|		if (previous_month < 1) {
  ------------------
  |  Branch (133:7): [True: 1.96k, False: 21.5k]
  ------------------
  134|  1.96k|			previous_month += 12;
  135|  1.96k|			previous_year = (*y) - 1;
  136|  21.5k|		} else {
  137|  21.5k|			previous_year = (*y);
  138|  21.5k|		}
  139|  23.5k|		leapyear = timelib_is_leap(previous_year);
  ------------------
  |  |  105|  23.5k|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 5.89k, False: 17.6k]
  |  |  |  Branch (105:46): [True: 5.66k, False: 228]
  |  |  |  Branch (105:64): [True: 24, False: 204]
  |  |  ------------------
  ------------------
  140|  23.5k|		days_in_previous_month = leapyear ? days_in_month_leap[previous_month] : days_in_month[previous_month];
  ------------------
  |  Branch (140:28): [True: 5.69k, False: 17.8k]
  ------------------
  141|       |
  142|  23.5k|		*d += days_in_previous_month;
  143|  23.5k|		(*m)--;
  144|  23.5k|		retval = 1;
  145|  23.5k|	}
  146|  19.9k|	while (*d > 0 && *m <= 12 && *d > days_per_month_current_year[*m]) {
  ------------------
  |  Branch (146:9): [True: 17.9k, False: 1.96k]
  |  Branch (146:19): [True: 16.6k, False: 1.37k]
  |  Branch (146:31): [True: 16.5k, False: 120]
  ------------------
  147|  16.5k|		*d -=  days_per_month_current_year[*m];
  148|  16.5k|		(*m)++;
  149|  16.5k|		retval = 1;
  150|  16.5k|	}
  151|  3.45k|	return retval;
  152|  3.45k|}
tm2unixtime.c:do_adjust_special_early:
  339|     25|{
  340|     25|	if (time->relative.have_special_relative) {
  ------------------
  |  Branch (340:6): [True: 0, False: 25]
  ------------------
  341|      0|		switch (time->relative.special.type) {
  ------------------
  |  Branch (341:11): [True: 0, False: 0]
  ------------------
  342|      0|			case TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH:
  ------------------
  |  |   78|      0|#define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH      0x02
  ------------------
  |  Branch (342:4): [True: 0, False: 0]
  ------------------
  343|      0|				time->d = 1;
  344|      0|				time->m += time->relative.m;
  345|      0|				time->relative.m = 0;
  346|      0|				break;
  347|      0|			case TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH:
  ------------------
  |  |   79|      0|#define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03
  ------------------
  |  Branch (347:4): [True: 0, False: 0]
  ------------------
  348|      0|				time->d = 1;
  349|      0|				time->m += time->relative.m + 1;
  350|      0|				time->relative.m = 0;
  351|      0|				break;
  352|      0|		}
  353|      0|	}
  354|     25|	switch (time->relative.first_last_day_of) {
  ------------------
  |  Branch (354:10): [True: 0, False: 25]
  ------------------
  355|      0|		case TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH: /* first */
  ------------------
  |  |   81|      0|#define TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH        0x01
  ------------------
  |  Branch (355:3): [True: 0, False: 25]
  ------------------
  356|      0|			time->d = 1;
  357|      0|			break;
  358|      0|		case TIMELIB_SPECIAL_LAST_DAY_OF_MONTH: /* last */
  ------------------
  |  |   82|      0|#define TIMELIB_SPECIAL_LAST_DAY_OF_MONTH         0x02
  ------------------
  |  Branch (358:3): [True: 0, False: 25]
  ------------------
  359|      0|			time->d = 0;
  360|      0|			time->m++;
  361|      0|			break;
  362|     25|	}
  363|     25|	timelib_do_normalize(time);
  364|     25|}
tm2unixtime.c:do_adjust_relative:
  244|     25|{
  245|     25|	if (time->relative.have_weekday_relative) {
  ------------------
  |  Branch (245:6): [True: 10, False: 15]
  ------------------
  246|     10|		do_adjust_for_weekday(time);
  247|     10|	}
  248|     25|	timelib_do_normalize(time);
  249|       |
  250|     25|	if (time->have_relative) {
  ------------------
  |  Branch (250:6): [True: 22, False: 3]
  ------------------
  251|     22|		time->us += time->relative.us;
  252|       |
  253|     22|		time->s += time->relative.s;
  254|     22|		time->i += time->relative.i;
  255|     22|		time->h += time->relative.h;
  256|       |
  257|     22|		time->d += time->relative.d;
  258|     22|		time->m += time->relative.m;
  259|     22|		time->y += time->relative.y;
  260|     22|	}
  261|       |
  262|     25|	switch (time->relative.first_last_day_of) {
  ------------------
  |  Branch (262:10): [True: 0, False: 25]
  ------------------
  263|      0|		case TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH: /* first */
  ------------------
  |  |   81|      0|#define TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH        0x01
  ------------------
  |  Branch (263:3): [True: 0, False: 25]
  ------------------
  264|      0|			time->d = 1;
  265|      0|			break;
  266|      0|		case TIMELIB_SPECIAL_LAST_DAY_OF_MONTH: /* last */
  ------------------
  |  |   82|      0|#define TIMELIB_SPECIAL_LAST_DAY_OF_MONTH         0x02
  ------------------
  |  Branch (266:3): [True: 0, False: 25]
  ------------------
  267|      0|			time->d = 0;
  268|      0|			time->m++;
  269|      0|			break;
  270|     25|	}
  271|       |
  272|     25|	timelib_do_normalize(time);
  273|     25|}
tm2unixtime.c:do_adjust_for_weekday:
  155|     10|{
  156|     10|	timelib_sll current_dow, difference;
  157|       |
  158|     10|	current_dow = timelib_day_of_week(time->y, time->m, time->d);
  159|     10|	if (time->relative.weekday_behavior == 2)
  ------------------
  |  Branch (159:6): [True: 0, False: 10]
  ------------------
  160|      0|	{
  161|       |		/* To make "this week" work, where the current DOW is a "sunday" */
  162|      0|		if (current_dow == 0 && time->relative.weekday != 0) {
  ------------------
  |  Branch (162:7): [True: 0, False: 0]
  |  Branch (162:27): [True: 0, False: 0]
  ------------------
  163|      0|			time->relative.weekday -= 7;
  164|      0|		}
  165|       |
  166|       |		/* To make "sunday this week" work, where the current DOW is not a
  167|       |		 * "sunday" */
  168|      0|		if (time->relative.weekday == 0 && current_dow != 0) {
  ------------------
  |  Branch (168:7): [True: 0, False: 0]
  |  Branch (168:38): [True: 0, False: 0]
  ------------------
  169|      0|			time->relative.weekday = 7;
  170|      0|		}
  171|       |
  172|      0|		time->d -= current_dow;
  173|      0|		time->d += time->relative.weekday;
  174|      0|		return;
  175|      0|	}
  176|     10|	difference = time->relative.weekday - current_dow;
  177|     10|	if ((time->relative.d < 0 && difference < 0) || (time->relative.d >= 0 && difference <= -time->relative.weekday_behavior)) {
  ------------------
  |  Branch (177:7): [True: 0, False: 10]
  |  Branch (177:31): [True: 0, False: 0]
  |  Branch (177:51): [True: 10, False: 0]
  |  Branch (177:76): [True: 8, False: 2]
  ------------------
  178|      8|		difference += 7;
  179|      8|	}
  180|     10|	if (time->relative.weekday >= 0) {
  ------------------
  |  Branch (180:6): [True: 10, False: 0]
  ------------------
  181|     10|		time->d += difference;
  182|     10|	} else {
  183|      0|		time->d -= (7 - (abs(time->relative.weekday) - current_dow));
  184|      0|	}
  185|     10|	time->relative.have_weekday_relative = 0;
  186|     10|}
tm2unixtime.c:do_adjust_special:
  326|     25|{
  327|     25|	if (time->relative.have_special_relative) {
  ------------------
  |  Branch (327:6): [True: 0, False: 25]
  ------------------
  328|      0|		switch (time->relative.special.type) {
  ------------------
  |  Branch (328:11): [True: 0, False: 0]
  ------------------
  329|      0|			case TIMELIB_SPECIAL_WEEKDAY:
  ------------------
  |  |   77|      0|#define TIMELIB_SPECIAL_WEEKDAY                   0x01
  ------------------
  |  Branch (329:4): [True: 0, False: 0]
  ------------------
  330|      0|				do_adjust_special_weekday(time);
  331|      0|				break;
  332|      0|		}
  333|      0|	}
  334|     25|	timelib_do_normalize(time);
  335|     25|	memset(&(time->relative.special), 0, sizeof(time->relative.special));
  336|     25|}
tm2unixtime.c:do_adjust_timezone:
  367|     25|{
  368|     25|	switch (tz->zone_type) {
  369|     14|		case TIMELIB_ZONETYPE_OFFSET:
  ------------------
  |  |  327|     14|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (369:3): [True: 14, False: 11]
  ------------------
  370|       |
  371|     14|			tz->is_localtime = 1;
  372|     14|			tz->sse += -tz->z;
  373|     14|			return;
  374|       |
  375|      5|		case TIMELIB_ZONETYPE_ABBR: {
  ------------------
  |  |  328|      5|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (375:3): [True: 5, False: 20]
  ------------------
  376|       |
  377|      5|			tz->is_localtime = 1;
  378|      5|			tz->sse += (-tz->z - tz->dst * SECS_PER_HOUR);
  ------------------
  |  |   90|      5|#define SECS_PER_HOUR   3600
  ------------------
  379|      5|			return;
  380|      0|		}
  381|       |
  382|      6|		case TIMELIB_ZONETYPE_ID:
  ------------------
  |  |  329|      6|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (382:3): [True: 6, False: 19]
  ------------------
  383|      6|			tzi = tz->tz_info;
  384|      6|			TIMELIB_BREAK_INTENTIONALLY_MISSING
  385|       |
  386|      6|		default: {
  ------------------
  |  Branch (386:3): [True: 0, False: 25]
  ------------------
  387|       |			/* No timezone in struct, fallback to reference if possible */
  388|      6|			int32_t              current_offset = 0;
  389|      6|			timelib_sll          current_transition_time = 0;
  390|      6|			unsigned int         current_is_dst = 0;
  391|      6|			int32_t              after_offset = 0;
  392|      6|			timelib_sll          after_transition_time = 0;
  393|      6|			timelib_sll          adjustment;
  394|      6|			int                  in_transition;
  395|      6|			int32_t              actual_offset;
  396|      6|			timelib_sll          actual_transition_time;
  397|       |
  398|      6|			if (!tzi) {
  ------------------
  |  Branch (398:8): [True: 0, False: 6]
  ------------------
  399|      0|				return;
  400|      0|			}
  401|       |
  402|      6|			timelib_get_time_zone_offset_info(tz->sse, tzi, &current_offset, &current_transition_time, &current_is_dst);
  403|      6|			timelib_get_time_zone_offset_info(tz->sse - current_offset, tzi, &after_offset, &after_transition_time, NULL);
  404|      6|			actual_offset = after_offset;
  405|      6|			actual_transition_time = after_transition_time;
  406|      6|			if (current_offset == after_offset && tz->have_zone) {
  ------------------
  |  Branch (406:8): [True: 6, False: 0]
  |  Branch (406:42): [True: 3, False: 3]
  ------------------
  407|       |				/* Make sure we're not missing a DST change because we don't know the actual offset yet */
  408|      3|				if (current_offset >= 0 && tz->dst && !current_is_dst) {
  ------------------
  |  Branch (408:9): [True: 3, False: 0]
  |  Branch (408:32): [True: 2, False: 1]
  |  Branch (408:43): [True: 1, False: 1]
  ------------------
  409|       |						/* Timezone or its DST at or east of UTC, so the local time, interpreted as UTC, leaves DST (as defined in the actual timezone) before the actual local time */
  410|      1|						int32_t              earlier_offset;
  411|      1|						timelib_sll          earlier_transition_time;
  412|      1|						timelib_get_time_zone_offset_info(tz->sse - current_offset - 7200, tzi, &earlier_offset, &earlier_transition_time, NULL);
  413|      1|						if ((earlier_offset != after_offset) && (tz->sse - earlier_offset < after_transition_time)) {
  ------------------
  |  Branch (413:11): [True: 0, False: 1]
  |  Branch (413:47): [True: 0, False: 0]
  ------------------
  414|       |								/* Looking behind a bit clarified the actual offset to use */
  415|      0|								actual_offset = earlier_offset;
  416|      0|								actual_transition_time = earlier_transition_time;
  417|      0|						}
  418|      2|				} else if (current_offset <= 0 && current_is_dst && !tz->dst) {
  ------------------
  |  Branch (418:16): [True: 1, False: 1]
  |  Branch (418:39): [True: 0, False: 1]
  |  Branch (418:57): [True: 0, False: 0]
  ------------------
  419|       |						/* Timezone west of UTC, so the local time, interpreted as UTC, leaves DST (as defined in the actual timezone) after the actual local time */
  420|      0|						int32_t              later_offset;
  421|      0|						timelib_sll          later_transition_time;
  422|      0|						timelib_get_time_zone_offset_info(tz->sse - current_offset + 7200, tzi, &later_offset, &later_transition_time, NULL);
  423|      0|						if ((later_offset != after_offset) && (tz->sse - later_offset >= later_transition_time)) {
  ------------------
  |  Branch (423:11): [True: 0, False: 0]
  |  Branch (423:45): [True: 0, False: 0]
  ------------------
  424|       |								/* Looking ahead a bit clarified the actual offset to use */
  425|      0|								actual_offset = later_offset;
  426|      0|								actual_transition_time = later_transition_time;
  427|      0|						}
  428|      0|				}
  429|      3|			}
  430|       |
  431|      6|			tz->is_localtime = 1;
  432|       |
  433|      6|			in_transition = (
  434|      6|				actual_transition_time != INT64_MIN &&
  ------------------
  |  Branch (434:5): [True: 2, False: 4]
  ------------------
  435|      2|				((tz->sse - actual_offset) >= (actual_transition_time + (current_offset - actual_offset))) &&
  ------------------
  |  Branch (435:5): [True: 2, False: 0]
  ------------------
  436|      2|				((tz->sse - actual_offset) < actual_transition_time)
  ------------------
  |  Branch (436:5): [True: 0, False: 2]
  ------------------
  437|      6|			);
  438|       |
  439|      6|			if ((current_offset != actual_offset) && !in_transition) {
  ------------------
  |  Branch (439:8): [True: 0, False: 6]
  |  Branch (439:45): [True: 0, False: 0]
  ------------------
  440|      0|				adjustment = -actual_offset;
  441|      6|			} else {
  442|      6|				adjustment = -current_offset;
  443|      6|			}
  444|       |
  445|      6|			tz->sse += adjustment;
  446|      6|			timelib_set_timezone(tz, tzi);
  447|      6|			return;
  448|      6|		}
  449|     25|	}
  450|      0|	return;
  451|     25|}

timelib_unixtime2date:
   30|    119|{
   31|    119|	timelib_sll days, era, t;
   32|    119|	timelib_ull day_of_era, year_of_era, day_of_year, month_portion;
   33|       |
   34|       |	/* Calculate days since algorithm's epoch (0000-03-01) */
   35|    119|	days = ts / SECS_PER_DAY + HINNANT_EPOCH_SHIFT;
  ------------------
  |  |   89|    119|#define SECS_PER_DAY   86400
  ------------------
              	days = ts / SECS_PER_DAY + HINNANT_EPOCH_SHIFT;
  ------------------
  |  |  100|    119|#define HINNANT_EPOCH_SHIFT 719468 /* 0000-03-01 instead of 1970-01-01 */
  ------------------
   36|       |
   37|       |	/* Adjustment for a negative time portion */
   38|    119|	t = ts % SECS_PER_DAY;
  ------------------
  |  |   89|    119|#define SECS_PER_DAY   86400
  ------------------
   39|    119|	days += (t < 0) ? -1 : 0;
  ------------------
  |  Branch (39:10): [True: 14, False: 105]
  ------------------
   40|       |
   41|       |	/* Calculate year, month, and day. Algorithm from:
   42|       |	 * http://howardhinnant.github.io/date_algorithms.html#civil_from_days */
   43|    119|	era = (days >= 0 ? days : days - DAYS_PER_ERA + 1) / DAYS_PER_ERA;
  ------------------
  |  |   98|     11|#define DAYS_PER_ERA  146097
  ------------------
              	era = (days >= 0 ? days : days - DAYS_PER_ERA + 1) / DAYS_PER_ERA;
  ------------------
  |  |   98|    119|#define DAYS_PER_ERA  146097
  ------------------
  |  Branch (43:9): [True: 108, False: 11]
  ------------------
   44|    119|	day_of_era = days - era * DAYS_PER_ERA;
  ------------------
  |  |   98|    119|#define DAYS_PER_ERA  146097
  ------------------
   45|    119|	year_of_era = (day_of_era - day_of_era / 1460 + day_of_era / 36524 - day_of_era / 146096) / DAYS_PER_YEAR;
  ------------------
  |  |   94|    119|#define DAYS_PER_YEAR    365
  ------------------
   46|    119|	*y = year_of_era + era * YEARS_PER_ERA;
  ------------------
  |  |   99|    119|#define YEARS_PER_ERA    400
  ------------------
   47|    119|	day_of_year = day_of_era - (DAYS_PER_YEAR * year_of_era + year_of_era / 4 - year_of_era / 100);
  ------------------
  |  |   94|    119|#define DAYS_PER_YEAR    365
  ------------------
   48|    119|	month_portion = (5 * day_of_year + 2) / 153;
   49|    119|	*d = day_of_year - (153 * month_portion + 2) / 5 + 1;
   50|    119|	*m = month_portion + (month_portion < 10 ? 3 : -9);
  ------------------
  |  Branch (50:24): [True: 104, False: 15]
  ------------------
   51|    119|	*y += (*m <= 2);
   52|       |
   53|    119|	TIMELIB_DEBUG(printf("A: ts=%lld, year=%lld, month=%lld, day=%lld,", ts, *y, *m, *d););
  ------------------
  |  |  107|    119|#define TIMELIB_DEBUG(s)  if (0) { s }
  |  |  ------------------
  |  |  |  Branch (107:31): [Folded, False: 119]
  |  |  ------------------
  ------------------
   54|    119|}
timelib_unixtime2gmt:
   58|    119|{
   59|    119|	timelib_sll remainder;
   60|    119|	timelib_sll hours, minutes, seconds;
   61|       |
   62|    119|	timelib_unixtime2date(ts, &tm->y, &tm->m, &tm->d);
   63|    119|	remainder = ts % SECS_PER_DAY;
  ------------------
  |  |   89|    119|#define SECS_PER_DAY   86400
  ------------------
   64|    119|	remainder += (remainder < 0) * SECS_PER_DAY;
  ------------------
  |  |   89|    119|#define SECS_PER_DAY   86400
  ------------------
   65|       |
   66|       |	/* That was the date, now we do the time */
   67|    119|	hours = remainder / 3600;
   68|    119|	minutes = (remainder - hours * 3600) / 60;
   69|    119|	seconds = remainder % 60;
   70|    119|	TIMELIB_DEBUG(printf(" hour=%lld, minute=%lld, second=%lld\n", hours, minutes, seconds););
  ------------------
  |  |  107|    119|#define TIMELIB_DEBUG(s)  if (0) { s }
  |  |  ------------------
  |  |  |  Branch (107:31): [Folded, False: 119]
  |  |  ------------------
  ------------------
   71|       |
   72|    119|	tm->h = hours;
   73|    119|	tm->i = minutes;
   74|    119|	tm->s = seconds;
   75|    119|	tm->z = 0;
   76|    119|	tm->dst = 0;
   77|    119|	tm->sse = ts;
   78|    119|	tm->sse_uptodate = 1;
   79|    119|	tm->tim_uptodate = 1;
   80|    119|	tm->is_localtime = 0;
   81|    119|}
timelib_update_from_sse:
   84|     24|{
   85|     24|	timelib_sll sse;
   86|     24|	int z = tm->z;
   87|     24|	signed int dst = tm->dst;
   88|       |
   89|     24|	sse = tm->sse;
   90|       |
   91|     24|	switch (tm->zone_type) {
   92|      5|		case TIMELIB_ZONETYPE_ABBR:
  ------------------
  |  |  328|      5|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (92:3): [True: 5, False: 19]
  ------------------
   93|     19|		case TIMELIB_ZONETYPE_OFFSET: {
  ------------------
  |  |  327|     19|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (93:3): [True: 14, False: 10]
  ------------------
   94|     19|			timelib_unixtime2gmt(tm, tm->sse + tm->z + (tm->dst * 3600));
   95|       |
   96|     19|			goto cleanup;
   97|      5|		}
   98|       |
   99|      5|		case TIMELIB_ZONETYPE_ID: {
  ------------------
  |  |  329|      5|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (99:3): [True: 5, False: 19]
  ------------------
  100|      5|			int32_t  offset = 0;
  101|       |
  102|      5|			timelib_get_time_zone_offset_info(tm->sse, tm->tz_info, &offset, NULL, NULL);
  103|      5|			timelib_unixtime2gmt(tm, tm->sse + offset);
  104|       |
  105|      5|			goto cleanup;
  106|      5|		}
  107|       |
  108|      0|		default:
  ------------------
  |  Branch (108:3): [True: 0, False: 24]
  ------------------
  109|      0|			timelib_unixtime2gmt(tm, tm->sse);
  110|      0|			goto cleanup;
  111|     24|	}
  112|     24|cleanup:
  113|     24|	tm->sse = sse;
  114|     24|	tm->is_localtime = 1;
  115|     24|	tm->have_zone = 1;
  116|     24|	tm->z = z;
  117|     24|	tm->dst = dst;
  118|     24|}
timelib_unixtime2local:
  121|     84|{
  122|     84|	timelib_time_offset *gmt_offset;
  123|     84|	timelib_tzinfo      *tz = tm->tz_info;
  124|       |
  125|     84|	switch (tm->zone_type) {
  126|      0|		case TIMELIB_ZONETYPE_ABBR:
  ------------------
  |  |  328|      0|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (126:3): [True: 0, False: 84]
  ------------------
  127|      0|		case TIMELIB_ZONETYPE_OFFSET: {
  ------------------
  |  |  327|      0|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (127:3): [True: 0, False: 84]
  ------------------
  128|      0|			int z = tm->z;
  129|      0|			signed int dst = tm->dst;
  130|       |
  131|      0|			timelib_unixtime2gmt(tm, ts + tm->z + (tm->dst * 3600));
  132|       |
  133|      0|			tm->sse = ts;
  134|      0|			tm->z = z;
  135|      0|			tm->dst = dst;
  136|      0|			break;
  137|      0|		}
  138|       |
  139|     84|		case TIMELIB_ZONETYPE_ID:
  ------------------
  |  |  329|     84|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (139:3): [True: 84, False: 0]
  ------------------
  140|     84|			gmt_offset = timelib_get_time_zone_info(ts, tz);
  141|     84|			timelib_unixtime2gmt(tm, ts + gmt_offset->offset);
  142|       |
  143|       |			/* we need to reset the sse here as unixtime2gmt modifies it */
  144|     84|			tm->sse = ts;
  145|     84|			tm->dst = gmt_offset->is_dst;
  146|     84|			tm->z = gmt_offset->offset;
  147|     84|			tm->tz_info = tz;
  148|       |
  149|     84|			timelib_time_tz_abbr_update(tm, gmt_offset->abbr);
  150|     84|			timelib_time_offset_dtor(gmt_offset);
  151|     84|			break;
  152|       |
  153|      0|		default:
  ------------------
  |  Branch (153:3): [True: 0, False: 84]
  ------------------
  154|      0|			tm->is_localtime = 0;
  155|      0|			tm->have_zone = 0;
  156|      0|			return;
  157|     84|	}
  158|       |
  159|     84|	tm->is_localtime = 1;
  160|     84|	tm->have_zone = 1;
  161|     84|}
timelib_set_timezone:
  192|      6|{
  193|      6|	timelib_time_offset *gmt_offset;
  194|       |
  195|      6|	gmt_offset = timelib_get_time_zone_info(t->sse, tz);
  196|      6|	t->z = gmt_offset->offset;
  197|       |/*
  198|       |	if (t->dst != gmt_offset->is_dst) {
  199|       |		printf("ERROR (%d, %d)\n", t->dst, gmt_offset->is_dst);
  200|       |		exit(1);
  201|       |	}
  202|       |*/
  203|      6|	t->dst = gmt_offset->is_dst;
  204|      6|	t->tz_info = tz;
  205|      6|	if (t->tz_abbr) {
  ------------------
  |  Branch (205:6): [True: 4, False: 2]
  ------------------
  206|      4|		timelib_free(t->tz_abbr);
  ------------------
  |  |   16|      4|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|      4|	}
  208|      6|	t->tz_abbr = timelib_strdup(gmt_offset->abbr);
  ------------------
  |  |   14|      6|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|      6|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|      6|	timelib_time_offset_dtor(gmt_offset);
  210|       |
  211|      6|	t->have_zone = 1;
  212|      6|	t->zone_type = TIMELIB_ZONETYPE_ID;
  ------------------
  |  |  329|      6|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  213|      6|}

php_time:
   49|     28|{
   50|     28|#ifdef HAVE_GETTIMEOFDAY
   51|     28|	struct timeval tm;
   52|       |
   53|     28|	if (UNEXPECTED(gettimeofday(&tm, NULL) != SUCCESS)) {
  ------------------
  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  ------------------
  ------------------
   54|       |		/* fallback, can't reasonably happen */
   55|      0|		return time(NULL);
   56|      0|	}
   57|       |
   58|     28|	return tm.tv_sec;
   59|       |#else
   60|       |	return time(NULL);
   61|       |#endif
   62|     28|}
zm_activate_date:
  402|  33.5k|{
  403|  33.5k|	if (DATEG(timezone)) {
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 0, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|      0|		efree(DATEG(timezone));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  405|      0|	}
  406|  33.5k|	DATEG(timezone) = NULL;
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  407|  33.5k|	DATEG(tzcache) = NULL;
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  408|  33.5k|	DATEG(last_errors) = NULL;
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  409|       |
  410|  33.5k|	return SUCCESS;
  411|  33.5k|}
zm_deactivate_date:
  416|  33.5k|{
  417|  33.5k|	if (DATEG(timezone)) {
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 1, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|      1|		efree(DATEG(timezone));
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  419|      1|	}
  420|  33.5k|	DATEG(timezone) = NULL;
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  421|       |
  422|  33.5k|	return SUCCESS;
  423|  33.5k|}
zm_post_zend_deactivate_date:
  427|  33.5k|{
  428|  33.5k|	if (DATEG(tzcache)) {
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 340, False: 33.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|    340|		zend_hash_destroy(DATEG(tzcache));
  ------------------
  |  |  120|    340|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    340|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  430|    340|		FREE_HASHTABLE(DATEG(tzcache));
  ------------------
  |  |  235|    340|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|    340|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|    340|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|    340|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|    340|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|    340|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|    340|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  431|    340|		DATEG(tzcache) = NULL;
  ------------------
  |  |  120|    340|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    340|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  432|    340|	}
  433|       |
  434|  33.5k|	if (DATEG(last_errors)) {
  ------------------
  |  |  120|  33.5k|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 591, False: 33.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  435|    591|		timelib_error_container_dtor(DATEG(last_errors));
  ------------------
  |  |  120|    591|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    591|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  436|    591|		DATEG(last_errors) = NULL;
  ------------------
  |  |  120|    591|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    591|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  437|    591|	}
  438|       |
  439|  33.5k|	return SUCCESS;
  440|  33.5k|}
zm_startup_date:
  446|      2|{
  447|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
  448|      2|	date_register_classes();
  449|      2|	register_php_date_symbols(module_number);
  450|       |
  451|      2|	php_date_global_timezone_db = NULL;
  452|      2|	php_date_global_timezone_db_enabled = 0;
  453|      2|	DATEG(last_errors) = NULL;
  ------------------
  |  |  120|      2|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  454|      2|	return SUCCESS;
  455|      2|}
zm_info_date:
  477|      2|{
  478|      2|	const timelib_tzdb *tzdb = DATE_TIMEZONEDB;
  ------------------
  |  |  442|      2|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  479|       |
  480|      2|	php_info_print_table_start();
  481|      2|	php_info_print_table_row(2, "date/time support", "enabled");
  482|      2|	php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION);
  ------------------
  |  |   35|      2|#define TIMELIB_ASCII_VERSION "2022.15"
  ------------------
  483|      2|	php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version);
  484|      2|	php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal");
  ------------------
  |  Branch (484:51): [True: 0, False: 2]
  ------------------
  485|      2|	php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb));
  486|      2|	php_info_print_table_end();
  487|       |
  488|      2|	DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      2|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
  489|      2|}
get_timezone_info:
  566|     81|{
  567|     81|	timelib_tzinfo *tzi;
  568|       |
  569|     81|	const char *tz = guess_timezone(DATE_TIMEZONEDB);
  ------------------
  |  |  442|     81|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 81]
  |  |  ------------------
  ------------------
  570|     81|	tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB);
  ------------------
  |  |  442|     81|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 81]
  |  |  ------------------
  ------------------
  571|     81|	if (! tzi) {
  ------------------
  |  Branch (571:6): [True: 0, False: 81]
  ------------------
  572|      0|		zend_throw_error(date_ce_date_error, "Timezone database is corrupt. Please file a bug report as this should never happen");
  573|      0|	}
  574|     81|	return tzi;
  575|     81|}
php_format_date:
  879|     32|{
  880|     32|	timelib_time   *t;
  881|     32|	timelib_tzinfo *tzi;
  882|     32|	zend_string *string;
  883|       |
  884|     32|	t = timelib_time_ctor();
  885|       |
  886|     32|	if (localtime) {
  ------------------
  |  Branch (886:6): [True: 32, False: 0]
  ------------------
  887|     32|		tzi = get_timezone_info();
  888|     32|		t->tz_info = tzi;
  889|     32|		t->zone_type = TIMELIB_ZONETYPE_ID;
  ------------------
  |  |  329|     32|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  890|     32|		timelib_unixtime2local(t, ts);
  891|     32|	} else {
  892|      0|		tzi = NULL;
  893|      0|		timelib_unixtime2gmt(t, ts);
  894|      0|	}
  895|       |
  896|     32|	string = date_format(format, format_len, t, localtime);
  897|       |
  898|     32|	timelib_time_dtor(t);
  899|     32|	return string;
  900|     32|}
zif_date:
 1003|     32|{
 1004|     32|	php_date(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  ------------------
  |  |  587|     32|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1005|     32|}
zif_time:
 1377|      2|{
 1378|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      1|			zend_wrong_parameters_none_error(); \
  |  | 1634|      1|			return; \
  |  | 1635|      1|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1379|       |
 1380|      1|	RETURN_LONG((zend_long)php_time());
  ------------------
  |  | 1048|      1|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      1|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      1|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1381|      1|}
php_date_initialize:
 2368|    652|{
 2369|    652|	timelib_time   *now;
 2370|    652|	timelib_tzinfo *tzi = NULL;
 2371|    652|	timelib_error_container *err = NULL;
 2372|    652|	int type = TIMELIB_ZONETYPE_ID, new_dst = 0;
  ------------------
  |  |  329|    652|#define TIMELIB_ZONETYPE_ID     3
  ------------------
 2373|    652|	char *new_abbr = NULL;
 2374|    652|	timelib_sll new_offset = 0;
 2375|    652|	time_t sec;
 2376|    652|	suseconds_t usec;
 2377|    652|	int options = 0;
 2378|       |
 2379|    652|	if (dateobj->time) {
  ------------------
  |  Branch (2379:6): [True: 0, False: 652]
  ------------------
 2380|      0|		timelib_time_dtor(dateobj->time);
 2381|      0|	}
 2382|    652|	if (format) {
  ------------------
  |  Branch (2382:6): [True: 0, False: 652]
  ------------------
 2383|      0|		if (time_str_len == 0) {
  ------------------
  |  Branch (2383:7): [True: 0, False: 0]
  ------------------
 2384|      0|			time_str = "";
 2385|      0|		}
 2386|      0|		dateobj->time = timelib_parse_from_format(format, time_str, time_str_len, &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
  ------------------
  |  |  442|      0|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2387|    652|	} else {
 2388|    652|		if (time_str_len == 0) {
  ------------------
  |  Branch (2388:7): [True: 25, False: 627]
  ------------------
 2389|     25|			time_str = "now";
 2390|     25|			time_str_len = sizeof("now") - 1;
 2391|     25|		}
 2392|    652|		dateobj->time = timelib_strtotime(time_str, time_str_len, &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
  ------------------
  |  |  442|    652|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 652]
  |  |  ------------------
  ------------------
 2393|    652|	}
 2394|       |
 2395|       |	/* update last errors and warnings */
 2396|    652|	update_errors_warnings(&err);
 2397|       |
 2398|       |	/* If called from a constructor throw an exception */
 2399|    652|	if ((flags & PHP_DATE_INIT_CTOR) && err && err->error_count) {
  ------------------
  |  |  148|    652|#define PHP_DATE_INIT_CTOR   0x01
  ------------------
  |  Branch (2399:6): [True: 652, False: 0]
  |  Branch (2399:38): [True: 609, False: 43]
  |  Branch (2399:45): [True: 601, False: 8]
  ------------------
 2400|       |		/* spit out the first library error message, at least */
 2401|    601|		zend_throw_exception_ex(date_ce_date_malformed_string_exception, 0, "Failed to parse time string (%s) at position %d (%c): %s", time_str,
 2402|    601|			err->error_messages[0].position, err->error_messages[0].character ? err->error_messages[0].character : ' ', err->error_messages[0].message);
  ------------------
  |  Branch (2402:37): [True: 601, False: 0]
  ------------------
 2403|    601|	}
 2404|    652|	if (err && err->error_count) {
  ------------------
  |  Branch (2404:6): [True: 609, False: 43]
  |  Branch (2404:13): [True: 601, False: 8]
  ------------------
 2405|    601|		timelib_time_dtor(dateobj->time);
 2406|    601|		dateobj->time = 0;
 2407|    601|		return 0;
 2408|    601|	}
 2409|       |
 2410|     51|	if (timezone_object) {
  ------------------
  |  Branch (2410:6): [True: 0, False: 51]
  ------------------
 2411|      0|		php_timezone_obj *tzobj;
 2412|       |
 2413|      0|		tzobj = Z_PHPTIMEZONE_P(timezone_object);
  ------------------
  |  |   78|      0|#define Z_PHPTIMEZONE_P(zv)  php_timezone_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   76|      0|#define php_timezone_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_timezone_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2414|      0|		switch (tzobj->type) {
 2415|      0|			case TIMELIB_ZONETYPE_ID:
  ------------------
  |  |  329|      0|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (2415:4): [True: 0, False: 0]
  ------------------
 2416|      0|				tzi = tzobj->tzi.tz;
 2417|      0|				break;
 2418|      0|			case TIMELIB_ZONETYPE_OFFSET:
  ------------------
  |  |  327|      0|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (2418:4): [True: 0, False: 0]
  ------------------
 2419|      0|				new_offset = tzobj->tzi.utc_offset;
 2420|      0|				break;
 2421|      0|			case TIMELIB_ZONETYPE_ABBR:
  ------------------
  |  |  328|      0|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (2421:4): [True: 0, False: 0]
  ------------------
 2422|      0|				new_offset = tzobj->tzi.z.utc_offset;
 2423|      0|				new_dst    = tzobj->tzi.z.dst;
 2424|      0|				new_abbr   = timelib_strdup(tzobj->tzi.z.abbr);
  ------------------
  |  |   14|      0|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2425|      0|				break;
 2426|      0|			default:
  ------------------
  |  Branch (2426:4): [True: 0, False: 0]
  ------------------
 2427|      0|				zend_throw_error(NULL, "The DateTimeZone object has not been correctly initialized by its constructor");
 2428|      0|				return 0;
 2429|      0|		}
 2430|      0|		type = tzobj->type;
 2431|     51|	} else if (dateobj->time->tz_info) {
  ------------------
  |  Branch (2431:13): [True: 2, False: 49]
  ------------------
 2432|      2|		tzi = dateobj->time->tz_info;
 2433|     49|	} else {
 2434|     49|		tzi = get_timezone_info();
 2435|     49|		if (!tzi) {
  ------------------
  |  Branch (2435:7): [True: 0, False: 49]
  ------------------
 2436|      0|			return 0;
 2437|      0|		}
 2438|     49|	}
 2439|       |
 2440|     51|	now = timelib_time_ctor();
 2441|     51|	now->zone_type = type;
 2442|     51|	switch (type) {
  ------------------
  |  Branch (2442:10): [True: 51, False: 0]
  ------------------
 2443|     51|		case TIMELIB_ZONETYPE_ID:
  ------------------
  |  |  329|     51|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (2443:3): [True: 51, False: 0]
  ------------------
 2444|     51|			now->tz_info = tzi;
 2445|     51|			break;
 2446|      0|		case TIMELIB_ZONETYPE_OFFSET:
  ------------------
  |  |  327|      0|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (2446:3): [True: 0, False: 51]
  ------------------
 2447|      0|			now->z = new_offset;
 2448|      0|			break;
 2449|      0|		case TIMELIB_ZONETYPE_ABBR:
  ------------------
  |  |  328|      0|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (2449:3): [True: 0, False: 51]
  ------------------
 2450|      0|			now->z = new_offset;
 2451|      0|			now->dst = new_dst;
 2452|      0|			now->tz_abbr = new_abbr;
 2453|      0|			break;
 2454|     51|	}
 2455|     51|	php_date_get_current_time_with_fraction(&sec, &usec);
 2456|     51|	timelib_unixtime2local(now, (timelib_sll) sec);
 2457|     51|	php_date_set_time_fraction(now, usec);
 2458|       |
 2459|     51|	if (!format
  ------------------
  |  Branch (2459:6): [True: 51, False: 0]
  ------------------
 2460|     51|	 && time_str_len == sizeof("now") - 1
  ------------------
  |  Branch (2460:6): [True: 27, False: 24]
  ------------------
 2461|     27|	 && memcmp(time_str, "now", sizeof("now") - 1) == 0) {
  ------------------
  |  Branch (2461:6): [True: 27, False: 0]
  ------------------
 2462|     27|		timelib_time_dtor(dateobj->time);
 2463|     27|		dateobj->time = now;
 2464|     27|		return 1;
 2465|     27|	}
 2466|       |
 2467|     24|	options = TIMELIB_NO_CLONE;
  ------------------
  |  |  380|     24|#define TIMELIB_NO_CLONE         0x02
  ------------------
 2468|     24|	if (flags & PHP_DATE_INIT_FORMAT) {
  ------------------
  |  |  149|     24|#define PHP_DATE_INIT_FORMAT 0x02
  ------------------
  |  Branch (2468:6): [True: 0, False: 24]
  ------------------
 2469|      0|		options |= TIMELIB_OVERRIDE_TIME;
  ------------------
  |  |  379|      0|#define TIMELIB_OVERRIDE_TIME    0x01
  ------------------
 2470|      0|	}
 2471|     24|	timelib_fill_holes(dateobj->time, now, options);
 2472|       |
 2473|     24|	timelib_update_ts(dateobj->time, tzi);
 2474|     24|	timelib_update_from_sse(dateobj->time);
 2475|       |
 2476|     24|	dateobj->time->have_relative = 0;
 2477|       |
 2478|     24|	timelib_time_dtor(now);
 2479|       |
 2480|     24|	return 1;
 2481|     51|} /* }}} */
zim_DateTime___construct:
 2633|    634|{
 2634|    634|	zval *timezone_object = NULL;
 2635|    634|	char *time_str = NULL;
 2636|    634|	size_t time_str_len = 0;
 2637|       |
 2638|  1.90k|	ZEND_PARSE_PARAMETERS_START(0, 2)
  ------------------
  |  | 1629|    634|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    634|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    634|		const int _flags = (flags); \
  |  |  |  | 1599|    634|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    634|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    634|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    634|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    634|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    634|		uint32_t _i = 0; \
  |  |  |  | 1603|    634|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    634|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    634|		char *_error = NULL; \
  |  |  |  | 1606|    634|		bool _dummy = 0; \
  |  |  |  | 1607|    634|		bool _optional = 0; \
  |  |  |  | 1608|    634|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    634|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    634|		((void)_i); \
  |  |  |  | 1610|    634|		((void)_real_arg); \
  |  |  |  | 1611|    634|		((void)_arg); \
  |  |  |  | 1612|    634|		((void)_expected_type); \
  |  |  |  | 1613|    634|		((void)_error); \
  |  |  |  | 1614|    634|		((void)_optional); \
  |  |  |  | 1615|    634|		((void)_dummy); \
  |  |  |  | 1616|    634|		\
  |  |  |  | 1617|    634|		do { \
  |  |  |  | 1618|    634|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  1.26k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 634]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    634|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    634|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 634]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|    634|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    634|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    634|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    634|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2639|  1.90k|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|    634|	_optional = 1;
  ------------------
 2640|  2.50k|		Z_PARAM_STRING(time_str, time_str_len)
  ------------------
  |  | 2087|    634|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|    634|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    634|	++_i; \
  |  |  |  |  |  | 1654|    634|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    634|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    634|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    634|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    634|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 634, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|    634|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    634|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 17, False: 617]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|    634|	} \
  |  |  |  |  |  | 1659|    634|	_real_arg++; \
  |  |  |  |  |  | 1660|    617|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    617|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 617]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    617|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 617]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|    617|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    617|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 617]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2640:3): [True: 634, False: 0]
  |  Branch (2640:3): [True: 0, False: 0]
  |  Branch (2640:3): [True: 0, False: 634]
  |  Branch (2640:3): [True: 634, False: 0]
  |  Branch (2640:3): [True: 634, False: 0]
  |  Branch (2640:3): [True: 0, False: 0]
  |  Branch (2640:3): [True: 634, False: 0]
  |  Branch (2640:3): [True: 0, False: 0]
  |  Branch (2640:3): [True: 0, False: 0]
  |  Branch (2640:3): [True: 0, False: 0]
  ------------------
 2641|  1.90k|		Z_PARAM_OBJECT_OF_CLASS_OR_NULL(timezone_object, date_ce_timezone)
  ------------------
  |  | 1988|    617|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 1, 0)
  |  |  ------------------
  |  |  |  | 1971|    617|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    617|	++_i; \
  |  |  |  |  |  | 1654|    617|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    617|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    617|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    617|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    617|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 617, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|    617|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    617|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 592, False: 25]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|    617|	} \
  |  |  |  |  |  | 1659|    617|	_real_arg++; \
  |  |  |  |  |  | 1660|     25|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     25|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     25|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|     25|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2641:3): [True: 617, False: 0]
  |  Branch (2641:3): [True: 0, False: 0]
  |  Branch (2641:3): [True: 0, False: 617]
  |  Branch (2641:3): [True: 617, False: 0]
  |  Branch (2641:3): [True: 617, False: 0]
  |  Branch (2641:3): [True: 0, False: 0]
  |  Branch (2641:3): [True: 617, False: 0]
  |  Branch (2641:3): [True: 0, False: 0]
  |  Branch (2641:3): [True: 0, False: 0]
  |  Branch (2641:3): [True: 0, False: 0]
  ------------------
 2642|    634|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     25|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     25|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     25|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  |  | 1641|    634|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    634|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 634]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|    634|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 634]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2642:2): [True: 25, False: 0]
  |  Branch (2642:2): [True: 0, False: 0]
  |  Branch (2642:2): [True: 25, False: 0]
  |  Branch (2642:2): [True: 0, False: 0]
  ------------------
 2643|       |
 2644|    634|	php_date_initialize(Z_PHPDATE_P(ZEND_THIS), time_str, time_str_len, NULL, timezone_object, PHP_DATE_INIT_CTOR);
  ------------------
  |  |   63|    634|#define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   61|    634|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|    634|	_Generic( \
  |  |  |  |  |  |  408|    634|		(ptr), \
  |  |  |  |  |  |  409|    634|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|    634|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|    634|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	php_date_initialize(Z_PHPDATE_P(ZEND_THIS), time_str, time_str_len, NULL, timezone_object, PHP_DATE_INIT_CTOR);
  ------------------
  |  |  148|    634|#define PHP_DATE_INIT_CTOR   0x01
  ------------------
 2645|    634|}
zim_DateTimeImmutable___construct:
 2650|     18|{
 2651|     18|	zval *timezone_object = NULL;
 2652|     18|	char *time_str = NULL;
 2653|     18|	size_t time_str_len = 0;
 2654|       |
 2655|     54|	ZEND_PARSE_PARAMETERS_START(0, 2)
  ------------------
  |  | 1629|     18|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     18|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     18|		const int _flags = (flags); \
  |  |  |  | 1599|     18|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     18|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     18|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     18|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     18|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     18|		uint32_t _i = 0; \
  |  |  |  | 1603|     18|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     18|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     18|		char *_error = NULL; \
  |  |  |  | 1606|     18|		bool _dummy = 0; \
  |  |  |  | 1607|     18|		bool _optional = 0; \
  |  |  |  | 1608|     18|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     18|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     18|		((void)_i); \
  |  |  |  | 1610|     18|		((void)_real_arg); \
  |  |  |  | 1611|     18|		((void)_arg); \
  |  |  |  | 1612|     18|		((void)_expected_type); \
  |  |  |  | 1613|     18|		((void)_error); \
  |  |  |  | 1614|     18|		((void)_optional); \
  |  |  |  | 1615|     18|		((void)_dummy); \
  |  |  |  | 1616|     18|		\
  |  |  |  | 1617|     18|		do { \
  |  |  |  | 1618|     18|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     18|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     18|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     18|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     18|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     18|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2656|     54|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     18|	_optional = 1;
  ------------------
 2657|     68|		Z_PARAM_STRING(time_str, time_str_len)
  ------------------
  |  | 2087|     18|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|     18|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     18|	++_i; \
  |  |  |  |  |  | 1654|     18|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     18|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     18|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 18, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     18|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 16]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     18|	} \
  |  |  |  |  |  | 1659|     18|	_real_arg++; \
  |  |  |  |  |  | 1660|     16|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     16|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     16|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|     16|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2657:3): [True: 18, False: 0]
  |  Branch (2657:3): [True: 0, False: 0]
  |  Branch (2657:3): [True: 0, False: 18]
  |  Branch (2657:3): [True: 18, False: 0]
  |  Branch (2657:3): [True: 18, False: 0]
  |  Branch (2657:3): [True: 0, False: 0]
  |  Branch (2657:3): [True: 18, False: 0]
  |  Branch (2657:3): [True: 0, False: 0]
  |  Branch (2657:3): [True: 0, False: 0]
  |  Branch (2657:3): [True: 0, False: 0]
  ------------------
 2658|     48|		Z_PARAM_OBJECT_OF_CLASS_OR_NULL(timezone_object, date_ce_timezone)
  ------------------
  |  | 1988|     16|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 1, 0)
  |  |  ------------------
  |  |  |  | 1971|     16|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     16|	++_i; \
  |  |  |  |  |  | 1654|     16|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     16|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     16|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 16, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     16|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 16, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     16|	} \
  |  |  |  |  |  | 1659|     16|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      0|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2658:3): [True: 16, False: 0]
  |  Branch (2658:3): [True: 0, False: 0]
  |  Branch (2658:3): [True: 0, False: 16]
  |  Branch (2658:3): [True: 16, False: 0]
  |  Branch (2658:3): [True: 16, False: 0]
  |  Branch (2658:3): [True: 0, False: 0]
  |  Branch (2658:3): [True: 16, False: 0]
  |  Branch (2658:3): [True: 0, False: 0]
  |  Branch (2658:3): [True: 0, False: 0]
  |  Branch (2658:3): [True: 0, False: 0]
  ------------------
 2659|     18|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     18|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     18|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2659:2): [True: 0, False: 0]
  |  Branch (2659:2): [True: 0, False: 0]
  |  Branch (2659:2): [True: 0, False: 0]
  |  Branch (2659:2): [True: 0, False: 0]
  ------------------
 2660|       |
 2661|     18|	php_date_initialize(Z_PHPDATE_P(ZEND_THIS), time_str, time_str_len, NULL, timezone_object, PHP_DATE_INIT_CTOR);
  ------------------
  |  |   63|     18|#define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   61|     18|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     18|	_Generic( \
  |  |  |  |  |  |  408|     18|		(ptr), \
  |  |  |  |  |  |  409|     18|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     18|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     18|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	php_date_initialize(Z_PHPDATE_P(ZEND_THIS), time_str, time_str_len, NULL, timezone_object, PHP_DATE_INIT_CTOR);
  ------------------
  |  |  148|     18|#define PHP_DATE_INIT_CTOR   0x01
  ------------------
 2662|     18|}
zim_DateTimeImmutable_setTimestamp:
 3835|      2|{
 3836|      2|	zval *object, new_object;
 3837|      2|	zend_long  timestamp;
 3838|       |
 3839|      2|	object = ZEND_THIS;
  ------------------
  |  |  523|      2|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3840|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3841|      8|		Z_PARAM_LONG(timestamp)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      2|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      1|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1900|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      1|			break; \
  |  |  |  | 1902|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (3841:3): [True: 2, False: 0]
  |  Branch (3841:3): [True: 0, False: 0]
  |  Branch (3841:3): [True: 2, False: 0]
  |  Branch (3841:3): [True: 0, False: 0]
  |  Branch (3841:3): [True: 2, False: 0]
  |  Branch (3841:3): [True: 0, False: 0]
  |  Branch (3841:3): [True: 0, False: 2]
  |  Branch (3841:3): [True: 2, False: 0]
  |  Branch (3841:3): [True: 0, False: 0]
  |  Branch (3841:3): [True: 0, False: 0]
  ------------------
 3842|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3842:2): [True: 1, False: 0]
  |  Branch (3842:2): [True: 0, False: 0]
  |  Branch (3842:2): [True: 1, False: 0]
  |  Branch (3842:2): [True: 0, False: 0]
  ------------------
 3843|       |
 3844|      1|	date_clone_immutable(object, &new_object);
 3845|      1|	php_date_timestamp_set(&new_object, timestamp, return_value);
 3846|       |
 3847|      1|	RETURN_OBJ(Z_OBJ(new_object));
  ------------------
  |  | 1063|      1|#define RETURN_OBJ(r)					do { RETVAL_OBJ(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1037|      1|#define RETVAL_OBJ(r)					ZVAL_OBJ(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1140|      1|#define ZVAL_OBJ(z, o) do {						\
  |  |  |  |  |  | 1141|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1142|      1|		Z_OBJ_P(__z) = (o);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1143|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1144|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1063:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3848|      1|}
zif_date_timestamp_get:
 3917|      1|{
 3918|      1|	zval         *object;
 3919|      1|	php_date_obj *dateobj;
 3920|      1|	zend_long     timestamp;
 3921|      1|	int           epoch_does_not_fit_in_zend_long;
 3922|       |
 3923|      1|	if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &object, date_ce_interface) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &object, date_ce_interface) == FAILURE) {
  ------------------
  |  |  526|      1|#define getThis()							(hasThis() ? ZEND_THIS : NULL)
  |  |  ------------------
  |  |  |  |  525|      1|#define hasThis()							(Z_TYPE_P(ZEND_THIS) == IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define hasThis()							(Z_TYPE_P(ZEND_THIS) == IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (525:25): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define getThis()							(hasThis() ? ZEND_THIS : NULL)
  |  |  ------------------
  |  |  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  |  |  ------------------
  |  |  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3923:6): [True: 0, False: 1]
  ------------------
 3924|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3924:3): [True: 0, False: 0]
  |  Branch (3924:3): [True: 0, False: 0]
  ------------------
 3925|      0|	}
 3926|      1|	dateobj = Z_PHPDATE_P(object);
  ------------------
  |  |   63|      1|#define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   61|      1|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3927|      1|	DATE_CHECK_INITIALIZED(dateobj->time, Z_OBJCE_P(object));
  ------------------
  |  |  320|      1|	if (UNEXPECTED(!member)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  321|      0|		date_throw_uninitialized_error(ce); \
  |  |  322|      0|		RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  323|      0|	}
  ------------------
  |  Branch (3927:2): [True: 0, False: 0]
  |  Branch (3927:2): [True: 0, False: 0]
  ------------------
 3928|       |
 3929|      1|	if (!dateobj->time->sse_uptodate) {
  ------------------
  |  Branch (3929:6): [True: 0, False: 1]
  ------------------
 3930|      0|		timelib_update_ts(dateobj->time, NULL);
 3931|      0|	}
 3932|       |
 3933|      1|	timestamp = timelib_date_to_int(dateobj->time, &epoch_does_not_fit_in_zend_long);
 3934|       |
 3935|      1|	if (epoch_does_not_fit_in_zend_long) {
  ------------------
  |  Branch (3935:6): [True: 0, False: 1]
  ------------------
 3936|      0|		zend_throw_error(date_ce_date_range_error, "Epoch doesn't fit in a PHP integer");
 3937|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3937:3): [True: 0, False: 0]
  |  Branch (3937:3): [True: 0, False: 0]
  ------------------
 3938|      0|	}
 3939|       |
 3940|      1|	RETURN_LONG(timestamp);
  ------------------
  |  | 1048|      1|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      1|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      1|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3941|      1|}
zim_DateTimeZone___construct:
 4045|      2|{
 4046|      2|	zend_string *tz;
 4047|      2|	php_timezone_obj *tzobj;
 4048|      2|	char *exception_message;
 4049|       |
 4050|      4|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4051|      4|		Z_PARAM_PATH_STR(tz) /* To prevent null bytes */
  ------------------
  |  | 2057|      0|	Z_PARAM_PATH_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2049|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2050|      0|		if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2051|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2051:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2052|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2053|      0|			break; \
  |  |  |  | 2054|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  |  Branch (4051:3): [True: 0, False: 0]
  ------------------
 4052|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4052:2): [True: 0, False: 0]
  |  Branch (4052:2): [True: 0, False: 0]
  |  Branch (4052:2): [True: 0, False: 0]
  |  Branch (4052:2): [True: 0, False: 0]
  ------------------
 4053|       |
 4054|      0|	tzobj = Z_PHPTIMEZONE_P(ZEND_THIS);
  ------------------
  |  |   78|      0|#define Z_PHPTIMEZONE_P(zv)  php_timezone_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   76|      0|#define php_timezone_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_timezone_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4055|      0|	if (!timezone_initialize(tzobj, tz, &exception_message)) {
  ------------------
  |  Branch (4055:6): [True: 0, False: 0]
  ------------------
 4056|      0|		zend_throw_exception_ex(date_ce_date_invalid_timezone_exception, 0, "DateTimeZone::__construct(): %s", exception_message);
 4057|      0|		efree(exception_message);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4058|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4058:3): [True: 0, False: 0]
  |  Branch (4058:3): [True: 0, False: 0]
  ------------------
 4059|      0|	}
 4060|      0|}
zim_DateInterval___construct:
 4592|      2|{
 4593|      2|	zend_string *interval_string = NULL;
 4594|      2|	timelib_rel_time *reltime;
 4595|       |
 4596|      4|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4597|      4|		Z_PARAM_STR(interval_string)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  |  Branch (4597:3): [True: 0, False: 0]
  ------------------
 4598|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4598:2): [True: 0, False: 0]
  |  Branch (4598:2): [True: 0, False: 0]
  |  Branch (4598:2): [True: 0, False: 0]
  |  Branch (4598:2): [True: 0, False: 0]
  ------------------
 4599|       |
 4600|      0|	if (!date_interval_initialize(&reltime, ZSTR_VAL(interval_string), ZSTR_LEN(interval_string))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (!date_interval_initialize(&reltime, ZSTR_VAL(interval_string), ZSTR_LEN(interval_string))) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4600:6): [True: 0, False: 0]
  ------------------
 4601|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4601:3): [True: 0, False: 0]
  |  Branch (4601:3): [True: 0, False: 0]
  ------------------
 4602|      0|	}
 4603|       |
 4604|      0|	php_interval_obj *diobj = Z_PHPINTERVAL_P(ZEND_THIS);
  ------------------
  |  |   94|      0|#define Z_PHPINTERVAL_P(zv)  php_interval_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   92|      0|#define php_interval_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_interval_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4605|      0|	diobj->diff = reltime;
 4606|      0|	diobj->initialized = 1;
 4607|      0|	diobj->civil_or_wall = PHP_DATE_WALL;
  ------------------
  |  |   81|      0|#define PHP_DATE_WALL    2
  ------------------
 4608|      0|}
zim_DateInterval___unserialize:
 4810|      1|{
 4811|      1|	zval             *object = ZEND_THIS;
  ------------------
  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4812|      1|	php_interval_obj *intervalobj;
 4813|      1|	HashTable        *myht;
 4814|       |
 4815|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4816|      4|		Z_PARAM_ARRAY_HT(myht)
  ------------------
  |  | 1861|      1|	Z_PARAM_ARRAY_HT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1858|      1|	Z_PARAM_ARRAY_HT_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1850|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1851|      1|		if (UNEXPECTED(!zend_parse_arg_array_ht(_arg, &dest, check_null, 0, separate))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1852|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1852:21): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1853|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1854|      0|			break; \
  |  |  |  |  |  | 1855|      0|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4816:3): [True: 1, False: 0]
  |  Branch (4816:3): [True: 0, False: 0]
  |  Branch (4816:3): [True: 1, False: 0]
  |  Branch (4816:3): [True: 0, False: 0]
  |  Branch (4816:3): [True: 1, False: 0]
  |  Branch (4816:3): [True: 0, False: 0]
  |  Branch (4816:3): [True: 0, False: 1]
  |  Branch (4816:3): [True: 1, False: 0]
  |  Branch (4816:3): [True: 0, False: 0]
  |  Branch (4816:3): [True: 0, False: 0]
  ------------------
 4817|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4817:2): [True: 1, False: 0]
  |  Branch (4817:2): [True: 0, False: 0]
  |  Branch (4817:2): [True: 1, False: 0]
  |  Branch (4817:2): [True: 0, False: 0]
  ------------------
 4818|       |
 4819|      1|	intervalobj = Z_PHPINTERVAL_P(object);
  ------------------
  |  |   94|      1|#define Z_PHPINTERVAL_P(zv)  php_interval_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   92|      1|#define php_interval_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_interval_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4820|       |
 4821|      1|	php_date_interval_initialize_from_hash(intervalobj, myht);
 4822|      1|	restore_custom_dateinterval_properties(object, myht);
 4823|      1|}
zim_DatePeriod___construct:
 5142|      2|{
 5143|      2|	php_period_obj   *dpobj;
 5144|      2|	php_date_obj     *dateobj;
 5145|      2|	zval *start, *end = NULL, *interval;
 5146|      2|	zend_long  recurrences = 0, options = 0;
 5147|      2|	char *isostr = NULL;
 5148|      2|	size_t   isostr_len = 0;
 5149|      2|	timelib_time *clone;
 5150|       |
 5151|      2|	if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "OOl|l", &start, date_ce_interface, &interval, date_ce_interval, &recurrences, &options) == FAILURE) {
  ------------------
  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  ------------------
              	if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "OOl|l", &start, date_ce_interface, &interval, date_ce_interval, &recurrences, &options) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5151:6): [True: 2, False: 0]
  ------------------
 5152|      2|		if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "OOO|l", &start, date_ce_interface, &interval, date_ce_interval, &end, date_ce_interface, &options) == FAILURE) {
  ------------------
  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  ------------------
              		if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "OOO|l", &start, date_ce_interface, &interval, date_ce_interval, &end, date_ce_interface, &options) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5152:7): [True: 2, False: 0]
  ------------------
 5153|      2|			if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "s|l", &isostr, &isostr_len, &options) == FAILURE) {
  ------------------
  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  ------------------
              			if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "s|l", &isostr, &isostr_len, &options) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5153:8): [True: 2, False: 0]
  ------------------
 5154|      2|				zend_type_error("DatePeriod::__construct() accepts (DateTimeInterface, DateInterval, int [, int]), or (DateTimeInterface, DateInterval, DateTime [, int]), or (string [, int]) as arguments");
 5155|      2|				RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5155:5): [True: 0, False: 2]
  |  Branch (5155:5): [True: 2, False: 0]
  ------------------
 5156|      2|			}
 5157|      2|		}
 5158|      2|	}
 5159|       |
 5160|      0|	dpobj = Z_PHPPERIOD_P(ZEND_THIS);
  ------------------
  |  |  111|      0|#define Z_PHPPERIOD_P(zv)  php_period_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  109|      0|#define php_period_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_period_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5161|      0|	dpobj->current = NULL;
 5162|       |
 5163|      0|	if (isostr) {
  ------------------
  |  Branch (5163:6): [True: 0, False: 0]
  ------------------
 5164|      0|		zend_error(E_DEPRECATED, "Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, "
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 5165|      0|			"use DatePeriod::createFromISO8601String() instead");
 5166|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5167|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5167:4): [True: 0, False: 0]
  |  Branch (5167:4): [True: 0, False: 0]
  ------------------
 5168|      0|		}
 5169|       |
 5170|      0|		if (!date_period_init_iso8601_string(dpobj, date_ce_date, isostr, isostr_len, &recurrences)) {
  ------------------
  |  Branch (5170:7): [True: 0, False: 0]
  ------------------
 5171|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5171:4): [True: 0, False: 0]
  |  Branch (5171:4): [True: 0, False: 0]
  ------------------
 5172|      0|		}
 5173|      0|	} else {
 5174|       |		/* check initialisation */
 5175|      0|		DATE_CHECK_INITIALIZED(Z_PHPDATE_P(start)->time, date_ce_interface);
  ------------------
  |  |  320|      0|	if (UNEXPECTED(!member)) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  321|      0|		date_throw_uninitialized_error(ce); \
  |  |  322|      0|		RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  323|      0|	}
  ------------------
  |  Branch (5175:3): [True: 0, False: 0]
  |  Branch (5175:3): [True: 0, False: 0]
  ------------------
 5176|      0|		if (end) {
  ------------------
  |  Branch (5176:7): [True: 0, False: 0]
  ------------------
 5177|      0|			DATE_CHECK_INITIALIZED(Z_PHPDATE_P(end)->time, date_ce_interface);
  ------------------
  |  |  320|      0|	if (UNEXPECTED(!member)) { \
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  321|      0|		date_throw_uninitialized_error(ce); \
  |  |  322|      0|		RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  323|      0|	}
  ------------------
  |  Branch (5177:4): [True: 0, False: 0]
  |  Branch (5177:4): [True: 0, False: 0]
  ------------------
 5178|      0|		}
 5179|       |
 5180|       |		/* init */
 5181|      0|		php_interval_obj *intobj = Z_PHPINTERVAL_P(interval);
  ------------------
  |  |   94|      0|#define Z_PHPINTERVAL_P(zv)  php_interval_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   92|      0|#define php_interval_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_interval_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5182|       |
 5183|       |		/* start date */
 5184|      0|		dateobj = Z_PHPDATE_P(start);
  ------------------
  |  |   63|      0|#define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   61|      0|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5185|      0|		clone = timelib_time_ctor();
 5186|      0|		memcpy(clone, dateobj->time, sizeof(timelib_time));
 5187|      0|		if (dateobj->time->tz_abbr) {
  ------------------
  |  Branch (5187:7): [True: 0, False: 0]
  ------------------
 5188|      0|			clone->tz_abbr = timelib_strdup(dateobj->time->tz_abbr);
  ------------------
  |  |   14|      0|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5189|      0|		}
 5190|      0|		if (dateobj->time->tz_info) {
  ------------------
  |  Branch (5190:7): [True: 0, False: 0]
  ------------------
 5191|      0|			clone->tz_info = dateobj->time->tz_info;
 5192|      0|		}
 5193|      0|		dpobj->start = clone;
 5194|      0|		dpobj->start_ce = Z_OBJCE_P(start);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5195|       |
 5196|       |		/* interval */
 5197|      0|		dpobj->interval = timelib_rel_time_clone(intobj->diff);
 5198|       |
 5199|       |		/* end date */
 5200|      0|		if (end) {
  ------------------
  |  Branch (5200:7): [True: 0, False: 0]
  ------------------
 5201|      0|			dateobj = Z_PHPDATE_P(end);
  ------------------
  |  |   63|      0|#define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   61|      0|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5202|      0|			clone = timelib_time_clone(dateobj->time);
 5203|      0|			dpobj->end = clone;
 5204|      0|		}
 5205|      0|	}
 5206|       |
 5207|      0|	if (!date_period_init_finish(dpobj, options, recurrences)) {
  ------------------
  |  Branch (5207:6): [True: 0, False: 0]
  ------------------
 5208|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5208:3): [True: 0, False: 0]
  |  Branch (5208:3): [True: 0, False: 0]
  ------------------
 5209|      0|	}
 5210|      0|}
zif_date_default_timezone_set:
 5412|      1|{
 5413|      1|	char *zone;
 5414|      1|	size_t   zone_len;
 5415|       |
 5416|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5417|      4|		Z_PARAM_STRING(zone, zone_len)
  ------------------
  |  | 2087|      1|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|      1|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5417:3): [True: 1, False: 0]
  |  Branch (5417:3): [True: 0, False: 0]
  |  Branch (5417:3): [True: 1, False: 0]
  |  Branch (5417:3): [True: 0, False: 0]
  |  Branch (5417:3): [True: 1, False: 0]
  |  Branch (5417:3): [True: 0, False: 0]
  |  Branch (5417:3): [True: 0, False: 1]
  |  Branch (5417:3): [True: 1, False: 0]
  |  Branch (5417:3): [True: 0, False: 0]
  |  Branch (5417:3): [True: 0, False: 0]
  ------------------
 5418|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5418:2): [True: 1, False: 0]
  |  Branch (5418:2): [True: 0, False: 0]
  |  Branch (5418:2): [True: 1, False: 0]
  |  Branch (5418:2): [True: 0, False: 0]
  ------------------
 5419|       |
 5420|      1|	if (!timelib_timezone_id_is_valid(zone, DATE_TIMEZONEDB)) {
  ------------------
  |  |  442|      1|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5420:6): [True: 0, False: 1]
  ------------------
 5421|      0|		php_error_docref(NULL, E_NOTICE, "Timezone ID '%s' is invalid", zone);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 5422|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5423|      0|	}
 5424|      1|	if (DATEG(timezone)) {
  ------------------
  |  |  120|      1|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      1|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5425|      0|		efree(DATEG(timezone));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5426|      0|		DATEG(timezone) = NULL;
  ------------------
  |  |  120|      0|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 5427|      0|	}
 5428|      1|	DATEG(timezone) = estrndup(zone, zone_len);
  ------------------
  |  |  120|      1|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      1|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              	DATEG(timezone) = estrndup(zone, zone_len);
  ------------------
  |  |  164|      1|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5429|      1|	RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5430|      1|}
php_date.c:zm_globals_ctor_date:
  385|      2|{
  386|      2|	date_globals->default_timezone = NULL;
  387|      2|	date_globals->timezone = NULL;
  388|       |	date_globals->tzcache = NULL;
  389|      2|}
php_date.c:OnUpdate_date_timezone:
  523|      2|{
  524|      2|	if (new_value && !timelib_timezone_id_is_valid(ZSTR_VAL(new_value), DATE_TIMEZONEDB)) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (new_value && !timelib_timezone_id_is_valid(ZSTR_VAL(new_value), DATE_TIMEZONEDB)) {
  ------------------
  |  |  442|      2|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (524:6): [True: 2, False: 0]
  |  Branch (524:19): [True: 0, False: 2]
  ------------------
  525|      0|		php_error_docref(
  526|      0|			NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  527|      0|			"Invalid date.timezone value '%s', using '%s' instead",
  528|      0|			ZSTR_VAL(new_value),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  529|      0|			DATEG(default_timezone) ? DATEG(default_timezone) : "UTC"
  ------------------
  |  |  120|      0|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			DATEG(default_timezone) ? DATEG(default_timezone) : "UTC"
  ------------------
  |  |  120|      0|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  530|      0|		);
  531|      0|		return FAILURE;
  532|      0|	}
  533|       |
  534|      2|	if (OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage) == FAILURE) {
  ------------------
  |  Branch (534:6): [True: 0, False: 2]
  ------------------
  535|      0|		return FAILURE;
  536|      0|	}
  537|       |
  538|      2|	return SUCCESS;
  539|      2|}
php_date.c:guess_timezone:
  544|     83|{
  545|       |	/* Checking whether timezone has been set with date_default_timezone_set() */
  546|     83|	if (DATEG(timezone) && (strlen(DATEG(timezone))) > 0) {
  ------------------
  |  |  120|     83|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    166|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 1, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (DATEG(timezone) && (strlen(DATEG(timezone))) > 0) {
  ------------------
  |  |  120|      1|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      1|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (546:25): [True: 1, False: 0]
  ------------------
  547|      1|		return DATEG(timezone);
  ------------------
  |  |  120|      1|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|      1|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  548|      1|	}
  549|       |	/* Check config setting for default timezone */
  550|     82|	if (!DATEG(default_timezone)) {
  ------------------
  |  |  120|     82|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|     82|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (550:6): [True: 0, False: 82]
  ------------------
  551|       |		/* Special case: ext/date wasn't initialized yet */
  552|      0|		zval *ztz;
  553|       |
  554|      0|		if (NULL != (ztz = cfg_get_entry("date.timezone", sizeof("date.timezone")))
  ------------------
  |  Branch (554:7): [True: 0, False: 0]
  ------------------
  555|      0|			&& Z_TYPE_P(ztz) == IS_STRING && Z_STRLEN_P(ztz) > 0 && timelib_timezone_id_is_valid(Z_STRVAL_P(ztz), tzdb)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			&& Z_TYPE_P(ztz) == IS_STRING && Z_STRLEN_P(ztz) > 0 && timelib_timezone_id_is_valid(Z_STRVAL_P(ztz), tzdb)) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
              			&& Z_TYPE_P(ztz) == IS_STRING && Z_STRLEN_P(ztz) > 0 && timelib_timezone_id_is_valid(Z_STRVAL_P(ztz), tzdb)) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			&& Z_TYPE_P(ztz) == IS_STRING && Z_STRLEN_P(ztz) > 0 && timelib_timezone_id_is_valid(Z_STRVAL_P(ztz), tzdb)) {
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (555:7): [True: 0, False: 0]
  |  Branch (555:37): [True: 0, False: 0]
  |  Branch (555:60): [True: 0, False: 0]
  ------------------
  556|      0|			return Z_STRVAL_P(ztz);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  557|      0|		}
  558|     82|	} else if (*DATEG(default_timezone)) {
  ------------------
  |  |  120|     82|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|     82|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (558:13): [True: 82, False: 0]
  ------------------
  559|     82|		return DATEG(default_timezone);
  ------------------
  |  |  120|     82|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|     82|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  560|     82|	}
  561|       |	/* Fallback to UTC */
  562|      0|	return "UTC";
  563|     82|}
php_date.c:php_date_parse_tzfile:
  494|    354|{
  495|    354|	timelib_tzinfo *tzi;
  496|    354|	int dummy_error_code;
  497|       |
  498|    354|	if(!DATEG(tzcache)) {
  ------------------
  |  |  120|    354|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    354|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (498:5): [True: 340, False: 14]
  ------------------
  499|    340|		ALLOC_HASHTABLE(DATEG(tzcache));
  ------------------
  |  |  232|    340|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|    340|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    340|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    340|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    340|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    340|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  500|    340|		zend_hash_init(DATEG(tzcache), 4, NULL, _php_date_tzinfo_dtor, 0);
  ------------------
  |  |  111|    340|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  501|    340|	}
  502|       |
  503|    354|	if ((tzi = zend_hash_str_find_ptr(DATEG(tzcache), formal_tzname, strlen(formal_tzname))) != NULL) {
  ------------------
  |  |  120|    354|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    354|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (503:6): [True: 11, False: 343]
  ------------------
  504|     11|		return tzi;
  505|     11|	}
  506|       |
  507|    343|	tzi = timelib_parse_tzfile(formal_tzname, tzdb, &dummy_error_code);
  508|    343|	if (tzi) {
  ------------------
  |  Branch (508:6): [True: 80, False: 263]
  ------------------
  509|     80|		zend_hash_str_add_ptr(DATEG(tzcache), formal_tzname, strlen(formal_tzname), tzi);
  ------------------
  |  |  120|     80|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|     80|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  510|     80|	}
  511|    343|	return tzi;
  512|    354|}
php_date.c:_php_date_tzinfo_dtor:
  394|     80|{
  395|     80|	timelib_tzinfo *tzi = (timelib_tzinfo*)Z_PTR_P(zv);
  ------------------
  |  | 1053|     80|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     80|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  396|       |
  397|     80|	timelib_tzinfo_dtor(tzi);
  398|     80|} /* }}} */
php_date.c:date_format:
  667|     32|{
  668|     32|	smart_str            string = {0};
  669|     32|	size_t               i;
  670|     32|	int                  length = 0;
  671|     32|	char                 buffer[97];
  672|     32|	timelib_time_offset *offset = NULL;
  673|     32|	timelib_sll          isoweek, isoyear;
  674|     32|	bool                 rfc_colon;
  675|     32|	int                  weekYearSet = 0;
  676|       |
  677|     32|	if (!format_len) {
  ------------------
  |  Branch (677:6): [True: 3, False: 29]
  ------------------
  678|      3|		return ZSTR_EMPTY_ALLOC();
  679|      3|	}
  680|       |
  681|     29|	if (localtime) {
  ------------------
  |  Branch (681:6): [True: 29, False: 0]
  ------------------
  682|     29|		if (t->zone_type == TIMELIB_ZONETYPE_ABBR) {
  ------------------
  |  |  328|     29|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (682:7): [True: 0, False: 29]
  ------------------
  683|      0|			offset = timelib_time_offset_ctor();
  684|      0|			offset->offset = (t->z + (t->dst * 3600));
  685|      0|			offset->leap_secs = 0;
  686|      0|			offset->is_dst = t->dst;
  687|      0|			offset->abbr = timelib_strdup(t->tz_abbr);
  ------------------
  |  |   14|      0|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|     29|		} else if (t->zone_type == TIMELIB_ZONETYPE_OFFSET) {
  ------------------
  |  |  327|     29|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (688:14): [True: 0, False: 29]
  ------------------
  689|      0|			offset = timelib_time_offset_ctor();
  690|      0|			offset->offset = (t->z);
  691|      0|			offset->leap_secs = 0;
  692|      0|			offset->is_dst = 0;
  693|      0|			offset->abbr = timelib_malloc(9); /* GMT±xxxx\0 */
  ------------------
  |  |   11|      0|#define timelib_malloc  emalloc
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  694|      0|			snprintf(offset->abbr, 9, "GMT%c%02d%02d",
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  695|      0|			                          (offset->offset < 0) ? '-' : '+',
  ------------------
  |  Branch (695:30): [True: 0, False: 0]
  ------------------
  696|      0|			                          abs(offset->offset / 3600),
  697|      0|			                          abs((offset->offset % 3600) / 60));
  698|     29|		} else if (t->zone_type == TIMELIB_ZONETYPE_ID) {
  ------------------
  |  |  329|     29|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (698:14): [True: 29, False: 0]
  ------------------
  699|     29|			offset = timelib_get_time_zone_info(t->sse, t->tz_info);
  700|     29|		} else {
  701|       |			/* Shouldn't happen, but code defensively */
  702|      0|			offset = timelib_time_offset_ctor();
  703|      0|		}
  704|     29|	}
  705|       |
  706|  1.27k|	for (i = 0; i < format_len; i++) {
  ------------------
  |  Branch (706:14): [True: 1.24k, False: 29]
  ------------------
  707|  1.24k|		rfc_colon = false;
  708|  1.24k|		switch (format[i]) {
  709|       |			/* day */
  710|     11|			case 'd': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->d); break;
  ------------------
  |  |   87|     11|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (710:4): [True: 11, False: 1.23k]
  ------------------
  711|      6|			case 'D': length = slprintf(buffer, sizeof(buffer), "%s", php_date_short_day_name(t->y, t->m, t->d)); break;
  ------------------
  |  |   87|      6|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (711:4): [True: 6, False: 1.24k]
  ------------------
  712|      3|			case 'j': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->d); break;
  ------------------
  |  |   87|      3|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (712:4): [True: 3, False: 1.24k]
  ------------------
  713|      8|			case 'l': length = slprintf(buffer, sizeof(buffer), "%s", php_date_full_day_name(t->y, t->m, t->d)); break;
  ------------------
  |  |   87|      8|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (713:4): [True: 8, False: 1.24k]
  ------------------
  714|     20|			case 'S': length = slprintf(buffer, sizeof(buffer), "%s", english_suffix(t->d)); break;
  ------------------
  |  |   87|     20|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (714:4): [True: 20, False: 1.22k]
  ------------------
  715|     19|			case 'w': length = slprintf(buffer, sizeof(buffer), "%d", (int) timelib_day_of_week(t->y, t->m, t->d)); break;
  ------------------
  |  |   87|     19|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (715:4): [True: 19, False: 1.22k]
  ------------------
  716|     11|			case 'N': length = slprintf(buffer, sizeof(buffer), "%d", (int) timelib_iso_day_of_week(t->y, t->m, t->d)); break;
  ------------------
  |  |   87|     11|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (716:4): [True: 11, False: 1.23k]
  ------------------
  717|     13|			case 'z': length = slprintf(buffer, sizeof(buffer), "%d", (int) timelib_day_of_year(t->y, t->m, t->d)); break;
  ------------------
  |  |   87|     13|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (717:4): [True: 13, False: 1.23k]
  ------------------
  718|       |
  719|       |			/* week */
  720|      1|			case 'W':
  ------------------
  |  Branch (720:4): [True: 1, False: 1.24k]
  ------------------
  721|      1|				if(!weekYearSet) { timelib_isoweek_from_date(t->y, t->m, t->d, &isoweek, &isoyear); weekYearSet = 1; }
  ------------------
  |  Branch (721:8): [True: 0, False: 1]
  ------------------
  722|      1|				length = slprintf(buffer, sizeof(buffer), "%02d", (int) isoweek); break; /* iso weeknr */
  ------------------
  |  |   87|      1|#define slprintf ap_php_slprintf
  ------------------
  723|     15|			case 'o':
  ------------------
  |  Branch (723:4): [True: 15, False: 1.23k]
  ------------------
  724|     15|				if(!weekYearSet) { timelib_isoweek_from_date(t->y, t->m, t->d, &isoweek, &isoyear); weekYearSet = 1; }
  ------------------
  |  Branch (724:8): [True: 11, False: 4]
  ------------------
  725|     15|				length = slprintf(buffer, sizeof(buffer), ZEND_LONG_FMT, (zend_long) isoyear); break; /* iso year */
  ------------------
  |  |   87|     15|#define slprintf ap_php_slprintf
  ------------------
              				length = slprintf(buffer, sizeof(buffer), ZEND_LONG_FMT, (zend_long) isoyear); break; /* iso year */
  ------------------
  |  |   54|     15|# define ZEND_LONG_FMT "%" PRId64
  ------------------
  726|       |
  727|       |			/* month */
  728|      1|			case 'F': length = slprintf(buffer, sizeof(buffer), "%s", mon_full_names[t->m - 1]); break;
  ------------------
  |  |   87|      1|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (728:4): [True: 1, False: 1.24k]
  ------------------
  729|     21|			case 'm': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->m); break;
  ------------------
  |  |   87|     21|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (729:4): [True: 21, False: 1.22k]
  ------------------
  730|     24|			case 'M': length = slprintf(buffer, sizeof(buffer), "%s", mon_short_names[t->m - 1]); break;
  ------------------
  |  |   87|     24|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (730:4): [True: 24, False: 1.22k]
  ------------------
  731|     49|			case 'n': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->m); break;
  ------------------
  |  |   87|     49|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (731:4): [True: 49, False: 1.19k]
  ------------------
  732|     21|			case 't': length = slprintf(buffer, sizeof(buffer), "%d", (int) timelib_days_in_month(t->y, t->m)); break;
  ------------------
  |  |   87|     21|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (732:4): [True: 21, False: 1.22k]
  ------------------
  733|       |
  734|       |			/* year */
  735|      3|			case 'L': length = slprintf(buffer, sizeof(buffer), "%d", timelib_is_leap((int) t->y)); break;
  ------------------
  |  |   87|      3|#define slprintf ap_php_slprintf
  ------------------
              			case 'L': length = slprintf(buffer, sizeof(buffer), "%d", timelib_is_leap((int) t->y)); break;
  ------------------
  |  |  105|      3|#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
  |  |  ------------------
  |  |  |  Branch (105:29): [True: 0, False: 3]
  |  |  |  Branch (105:46): [True: 0, False: 0]
  |  |  |  Branch (105:64): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (735:4): [True: 3, False: 1.24k]
  ------------------
  736|      2|			case 'y': length = slprintf(buffer, sizeof(buffer), "%02d", (int) (t->y % 100)); break;
  ------------------
  |  |   87|      2|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (736:4): [True: 2, False: 1.24k]
  ------------------
  737|     89|			case 'Y': length = slprintf(buffer, sizeof(buffer), "%s%04" PRIu64, t->y < 0 ? "-" : "", php_date_llabs((timelib_sll) t->y)); break;
  ------------------
  |  |   87|     89|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (737:4): [True: 89, False: 1.15k]
  |  Branch (737:72): [True: 0, False: 89]
  ------------------
  738|     32|			case 'x': length = slprintf(buffer, sizeof(buffer), "%s%04" PRIu64, t->y < 0 ? "-" : (t->y >= 10000 ? "+" : ""), php_date_llabs((timelib_sll) t->y)); break;
  ------------------
  |  |   87|     32|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (738:4): [True: 32, False: 1.21k]
  |  Branch (738:72): [True: 0, False: 32]
  |  Branch (738:90): [True: 0, False: 32]
  ------------------
  739|      1|			case 'X': length = slprintf(buffer, sizeof(buffer), "%s%04" PRIu64, t->y < 0 ? "-" : "+", php_date_llabs((timelib_sll) t->y)); break;
  ------------------
  |  |   87|      1|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (739:4): [True: 1, False: 1.24k]
  |  Branch (739:72): [True: 0, False: 1]
  ------------------
  740|       |
  741|       |			/* time */
  742|     15|			case 'a': length = slprintf(buffer, sizeof(buffer), "%s", t->h >= 12 ? "pm" : "am"); break;
  ------------------
  |  |   87|     15|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (742:4): [True: 15, False: 1.23k]
  |  Branch (742:62): [True: 0, False: 15]
  ------------------
  743|     21|			case 'A': length = slprintf(buffer, sizeof(buffer), "%s", t->h >= 12 ? "PM" : "AM"); break;
  ------------------
  |  |   87|     21|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (743:4): [True: 21, False: 1.22k]
  |  Branch (743:62): [True: 0, False: 21]
  ------------------
  744|      4|			case 'B': {
  ------------------
  |  Branch (744:4): [True: 4, False: 1.24k]
  ------------------
  745|      4|				int retval = ((((long)t->sse)-(((long)t->sse) - ((((long)t->sse) % 86400) + 3600))) * 10);
  746|      4|				if (retval < 0) {
  ------------------
  |  Branch (746:9): [True: 0, False: 4]
  ------------------
  747|      0|					retval += 864000;
  748|      0|				}
  749|       |				/* Make sure to do this on a positive int to avoid rounding errors */
  750|      4|				retval = (retval / 864)  % 1000;
  751|      4|				length = slprintf(buffer, sizeof(buffer), "%03d", retval);
  ------------------
  |  |   87|      4|#define slprintf ap_php_slprintf
  ------------------
  752|      4|				break;
  753|      0|			}
  754|      0|			case 'g': length = slprintf(buffer, sizeof(buffer), "%d", (t->h % 12) ? (int) t->h % 12 : 12); break;
  ------------------
  |  |   87|      0|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (754:4): [True: 0, False: 1.24k]
  |  Branch (754:62): [True: 0, False: 0]
  ------------------
  755|     25|			case 'G': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->h); break;
  ------------------
  |  |   87|     25|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (755:4): [True: 25, False: 1.22k]
  ------------------
  756|      3|			case 'h': length = slprintf(buffer, sizeof(buffer), "%02d", (t->h % 12) ? (int) t->h % 12 : 12); break;
  ------------------
  |  |   87|      3|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (756:4): [True: 3, False: 1.24k]
  |  Branch (756:64): [True: 3, False: 0]
  ------------------
  757|      8|			case 'H': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->h); break;
  ------------------
  |  |   87|      8|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (757:4): [True: 8, False: 1.24k]
  ------------------
  758|     12|			case 'i': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->i); break;
  ------------------
  |  |   87|     12|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (758:4): [True: 12, False: 1.23k]
  ------------------
  759|      9|			case 's': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->s); break;
  ------------------
  |  |   87|      9|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (759:4): [True: 9, False: 1.23k]
  ------------------
  760|      8|			case 'u': length = slprintf(buffer, sizeof(buffer), "%06d", (int) floor(t->us)); break;
  ------------------
  |  |   87|      8|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (760:4): [True: 8, False: 1.24k]
  ------------------
  761|     15|			case 'v': length = slprintf(buffer, sizeof(buffer), "%03d", (int) floor(t->us / 1000)); break;
  ------------------
  |  |   87|     15|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (761:4): [True: 15, False: 1.23k]
  ------------------
  762|       |
  763|       |			/* timezone */
  764|      8|			case 'I': length = slprintf(buffer, sizeof(buffer), "%d", localtime ? offset->is_dst : 0); break;
  ------------------
  |  |   87|      8|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (764:4): [True: 8, False: 1.24k]
  |  Branch (764:62): [True: 8, False: 0]
  ------------------
  765|      4|			case 'p':
  ------------------
  |  Branch (765:4): [True: 4, False: 1.24k]
  ------------------
  766|      4|				if (!localtime || strcmp(offset->abbr, "UTC") == 0 || strcmp(offset->abbr, "Z") == 0 || strcmp(offset->abbr, "GMT+0000") == 0) {
  ------------------
  |  Branch (766:9): [True: 0, False: 4]
  |  Branch (766:23): [True: 4, False: 0]
  |  Branch (766:59): [True: 0, False: 0]
  |  Branch (766:93): [True: 0, False: 0]
  ------------------
  767|      4|					length = slprintf(buffer, sizeof(buffer), "%s", "Z");
  ------------------
  |  |   87|      4|#define slprintf ap_php_slprintf
  ------------------
  768|      4|					break;
  769|      4|				}
  770|      0|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  771|      4|			case 'P': rfc_colon = true; ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      4|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  |  Branch (771:4): [True: 4, False: 1.24k]
  ------------------
  772|     11|			case 'O': length = slprintf(buffer, sizeof(buffer), "%c%02d%s%02d",
  ------------------
  |  |   87|     11|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (772:4): [True: 7, False: 1.24k]
  ------------------
  773|     11|											localtime ? ((offset->offset < 0) ? '-' : '+') : '+',
  ------------------
  |  Branch (773:12): [True: 11, False: 0]
  |  Branch (773:25): [True: 0, False: 11]
  ------------------
  774|     11|											localtime ? abs(offset->offset / 3600) : 0,
  ------------------
  |  Branch (774:12): [True: 11, False: 0]
  ------------------
  775|     11|											rfc_colon ? ":" : "",
  ------------------
  |  Branch (775:12): [True: 4, False: 7]
  ------------------
  776|     11|											localtime ? abs((offset->offset % 3600) / 60) : 0
  ------------------
  |  Branch (776:12): [True: 11, False: 0]
  ------------------
  777|     11|							  );
  778|     11|					  break;
  779|      0|			case 'T': length = slprintf(buffer, sizeof(buffer), "%s", localtime ? offset->abbr : "GMT"); break;
  ------------------
  |  |   87|      0|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (779:4): [True: 0, False: 1.24k]
  |  Branch (779:62): [True: 0, False: 0]
  ------------------
  780|     31|			case 'e': if (!localtime) {
  ------------------
  |  Branch (780:4): [True: 31, False: 1.21k]
  |  Branch (780:18): [True: 0, False: 31]
  ------------------
  781|      0|					      length = slprintf(buffer, sizeof(buffer), "%s", "UTC");
  ------------------
  |  |   87|      0|#define slprintf ap_php_slprintf
  ------------------
  782|     31|					  } else {
  783|     31|						  switch (t->zone_type) {
  ------------------
  |  Branch (783:17): [True: 31, False: 0]
  ------------------
  784|     31|							  case TIMELIB_ZONETYPE_ID:
  ------------------
  |  |  329|     31|#define TIMELIB_ZONETYPE_ID     3
  ------------------
  |  Branch (784:10): [True: 31, False: 0]
  ------------------
  785|     31|								  length = slprintf(buffer, sizeof(buffer), "%s", t->tz_info->name);
  ------------------
  |  |   87|     31|#define slprintf ap_php_slprintf
  ------------------
  786|     31|								  break;
  787|      0|							  case TIMELIB_ZONETYPE_ABBR:
  ------------------
  |  |  328|      0|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (787:10): [True: 0, False: 31]
  ------------------
  788|      0|								  length = slprintf(buffer, sizeof(buffer), "%s", offset->abbr);
  ------------------
  |  |   87|      0|#define slprintf ap_php_slprintf
  ------------------
  789|      0|								  break;
  790|      0|							  case TIMELIB_ZONETYPE_OFFSET: {
  ------------------
  |  |  327|      0|#define TIMELIB_ZONETYPE_OFFSET 1
  ------------------
  |  Branch (790:10): [True: 0, False: 31]
  ------------------
  791|      0|								  int seconds = offset->offset % 60;
  792|      0|								  if (seconds == 0) {
  ------------------
  |  Branch (792:15): [True: 0, False: 0]
  ------------------
  793|      0|								      length = slprintf(buffer, sizeof(buffer), "%c%02d:%02d",
  ------------------
  |  |   87|      0|#define slprintf ap_php_slprintf
  ------------------
  794|      0|								      				((offset->offset < 0) ? '-' : '+'),
  ------------------
  |  Branch (794:20): [True: 0, False: 0]
  ------------------
  795|      0|								      				abs(offset->offset / 3600),
  796|      0|								      				abs((offset->offset % 3600) / 60)
  797|      0|								      		   );
  798|      0|								  } else {
  799|      0|								      length = slprintf(buffer, sizeof(buffer), "%c%02d:%02d:%02d",
  ------------------
  |  |   87|      0|#define slprintf ap_php_slprintf
  ------------------
  800|      0|								      				((offset->offset < 0) ? '-' : '+'),
  ------------------
  |  Branch (800:20): [True: 0, False: 0]
  ------------------
  801|      0|								      				abs(offset->offset / 3600),
  802|      0|								      				abs((offset->offset % 3600) / 60),
  803|      0|													abs(seconds)
  804|      0|								      		   );
  805|      0|								  }
  806|      0|								  break;
  807|      0|							  }
  808|     31|						  }
  809|     31|					  }
  810|     31|					  break;
  811|     31|			case 'Z': length = slprintf(buffer, sizeof(buffer), "%d", localtime ? offset->offset : 0); break;
  ------------------
  |  |   87|     14|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (811:4): [True: 14, False: 1.23k]
  |  Branch (811:62): [True: 14, False: 0]
  ------------------
  812|       |
  813|       |			/* full date/time */
  814|     29|			case 'c': length = slprintf(buffer, sizeof(buffer), "%04" ZEND_LONG_FMT_SPEC "-%02d-%02dT%02d:%02d:%02d%c%02d:%02d",
  ------------------
  |  |   87|     29|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (814:4): [True: 29, False: 1.21k]
  ------------------
  815|     29|							                (zend_long) t->y, (int) t->m, (int) t->d,
  816|     29|											(int) t->h, (int) t->i, (int) t->s,
  817|     29|											localtime ? ((offset->offset < 0) ? '-' : '+') : '+',
  ------------------
  |  Branch (817:12): [True: 29, False: 0]
  |  Branch (817:25): [True: 0, False: 29]
  ------------------
  818|     29|											localtime ? abs(offset->offset / 3600) : 0,
  ------------------
  |  Branch (818:12): [True: 29, False: 0]
  ------------------
  819|     29|											localtime ? abs((offset->offset % 3600) / 60) : 0
  ------------------
  |  Branch (819:12): [True: 29, False: 0]
  ------------------
  820|     29|							  );
  821|     29|					  break;
  822|     13|			case 'r': length = slprintf(buffer, sizeof(buffer), "%3s, %02d %3s %04" ZEND_LONG_FMT_SPEC " %02d:%02d:%02d %c%02d%02d",
  ------------------
  |  |   87|     13|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (822:4): [True: 13, False: 1.23k]
  ------------------
  823|     13|							                php_date_short_day_name(t->y, t->m, t->d),
  824|     13|											(int) t->d, mon_short_names[t->m - 1],
  825|     13|											(zend_long) t->y, (int) t->h, (int) t->i, (int) t->s,
  826|     13|											localtime ? ((offset->offset < 0) ? '-' : '+') : '+',
  ------------------
  |  Branch (826:12): [True: 13, False: 0]
  |  Branch (826:25): [True: 0, False: 13]
  ------------------
  827|     13|											localtime ? abs(offset->offset / 3600) : 0,
  ------------------
  |  Branch (827:12): [True: 13, False: 0]
  ------------------
  828|     13|											localtime ? abs((offset->offset % 3600) / 60) : 0
  ------------------
  |  Branch (828:12): [True: 13, False: 0]
  ------------------
  829|     13|							  );
  830|     13|					  break;
  831|      4|			case 'U': length = slprintf(buffer, sizeof(buffer), "%lld", (timelib_sll) t->sse); break;
  ------------------
  |  |   87|      4|#define slprintf ap_php_slprintf
  ------------------
  |  Branch (831:4): [True: 4, False: 1.24k]
  ------------------
  832|       |
  833|      5|			case '\\': if (i < format_len) i++; ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      5|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  |  Branch (833:4): [True: 5, False: 1.24k]
  |  Branch (833:19): [True: 5, False: 0]
  ------------------
  834|       |
  835|    664|			default: buffer[0] = format[i]; buffer[1] = '\0'; length = 1; break;
  ------------------
  |  Branch (835:4): [True: 659, False: 589]
  ------------------
  836|  1.24k|		}
  837|  1.24k|		smart_str_appendl(&string, buffer, length);
  838|  1.24k|	}
  839|       |
  840|     29|	smart_str_0(&string);
  841|       |
  842|     29|	if (localtime) {
  ------------------
  |  Branch (842:6): [True: 29, False: 0]
  ------------------
  843|     29|		timelib_time_offset_dtor(offset);
  844|     29|	}
  845|       |
  846|     29|	return string.s;
  847|     29|}
php_date.c:php_date_short_day_name:
  656|     19|{
  657|     19|	timelib_sll day_of_week = timelib_day_of_week(y, m, d);
  658|     19|	if (day_of_week < 0) {
  ------------------
  |  Branch (658:6): [True: 0, False: 19]
  ------------------
  659|      0|		return "Unknown";
  660|      0|	}
  661|     19|	return day_short_names[day_of_week];
  662|     19|}
php_date.c:english_suffix:
  631|     20|{
  632|     20|	if (number >= 10 && number <= 19) {
  ------------------
  |  Branch (632:6): [True: 8, False: 12]
  |  Branch (632:22): [True: 2, False: 6]
  ------------------
  633|      2|		return "th";
  634|     18|	} else {
  635|     18|		switch (number % 10) {
  ------------------
  |  Branch (635:11): [True: 14, False: 4]
  ------------------
  636|      0|			case 1: return "st";
  ------------------
  |  Branch (636:4): [True: 0, False: 18]
  ------------------
  637|     14|			case 2: return "nd";
  ------------------
  |  Branch (637:4): [True: 14, False: 4]
  ------------------
  638|      0|			case 3: return "rd";
  ------------------
  |  Branch (638:4): [True: 0, False: 18]
  ------------------
  639|     18|		}
  640|     18|	}
  641|      4|	return "th";
  642|     20|}
php_date.c:php_date_llabs:
   32|    122|static inline uint64_t php_date_llabs(int64_t i) { return i >= 0 ? (uint64_t)i : -(uint64_t)i; }
  ------------------
  |  Branch (32:59): [True: 122, False: 0]
  ------------------
php_date.c:php_date:
  859|     32|{
  860|     32|	zend_string *format;
  861|     32|	zend_long    ts;
  862|     32|	bool    ts_is_null = 1;
  863|       |
  864|     95|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     32|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     32|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     32|		const int _flags = (flags); \
  |  |  |  | 1599|     32|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     32|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     32|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     32|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     32|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     32|		uint32_t _i = 0; \
  |  |  |  | 1603|     32|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     32|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     32|		char *_error = NULL; \
  |  |  |  | 1606|     32|		bool _dummy = 0; \
  |  |  |  | 1607|     32|		bool _optional = 0; \
  |  |  |  | 1608|     32|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     32|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     32|		((void)_i); \
  |  |  |  | 1610|     32|		((void)_real_arg); \
  |  |  |  | 1611|     32|		((void)_arg); \
  |  |  |  | 1612|     32|		((void)_expected_type); \
  |  |  |  | 1613|     32|		((void)_error); \
  |  |  |  | 1614|     32|		((void)_optional); \
  |  |  |  | 1615|     32|		((void)_dummy); \
  |  |  |  | 1616|     32|		\
  |  |  |  | 1617|     32|		do { \
  |  |  |  | 1618|     32|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     32|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|     32|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     32|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     32|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     31|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  865|    124|		Z_PARAM_STR(format)
  ------------------
  |  | 2102|     31|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     31|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     31|	++_i; \
  |  |  |  |  |  | 1654|     31|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     31|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     31|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     31|	_real_arg++; \
  |  |  |  |  |  | 1660|     31|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     31|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     31|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     31|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (865:3): [True: 31, False: 0]
  |  Branch (865:3): [True: 0, False: 0]
  |  Branch (865:3): [True: 31, False: 0]
  |  Branch (865:3): [True: 0, False: 0]
  |  Branch (865:3): [True: 31, False: 0]
  |  Branch (865:3): [True: 0, False: 0]
  |  Branch (865:3): [True: 0, False: 31]
  |  Branch (865:3): [True: 31, False: 0]
  |  Branch (865:3): [True: 0, False: 0]
  |  Branch (865:3): [True: 0, False: 0]
  ------------------
  866|     31|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     31|	_optional = 1;
  ------------------
  867|     70|		Z_PARAM_LONG_OR_NULL(ts, ts_is_null)
  ------------------
  |  | 1908|     31|	Z_PARAM_LONG_EX(dest, is_null, 1, 0)
  |  |  ------------------
  |  |  |  | 1897|     31|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     31|	++_i; \
  |  |  |  |  |  | 1654|     31|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     31|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     31|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 31, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     31|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 27, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     31|	} \
  |  |  |  |  |  | 1659|     31|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (867:3): [True: 31, False: 0]
  |  Branch (867:3): [True: 0, False: 0]
  |  Branch (867:3): [True: 0, False: 31]
  |  Branch (867:3): [True: 31, False: 0]
  |  Branch (867:3): [True: 31, False: 0]
  |  Branch (867:3): [True: 0, False: 0]
  |  Branch (867:3): [True: 31, False: 0]
  |  Branch (867:3): [True: 0, False: 0]
  |  Branch (867:3): [True: 0, False: 0]
  |  Branch (867:3): [True: 0, False: 0]
  ------------------
  868|     32|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|     32|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     32|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     32|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 31]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (868:2): [True: 4, False: 0]
  |  Branch (868:2): [True: 0, False: 0]
  |  Branch (868:2): [True: 4, False: 0]
  |  Branch (868:2): [True: 0, False: 0]
  ------------------
  869|       |
  870|     31|	if (ts_is_null) {
  ------------------
  |  Branch (870:6): [True: 27, False: 4]
  ------------------
  871|     27|		ts = php_time();
  872|     27|	}
  873|       |
  874|     31|	RETURN_STR(php_format_date(ZSTR_VAL(format), ZSTR_LEN(format), ts, localtime));
  ------------------
  |  | 1050|     31|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|     31|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|     31|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|     31|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|     31|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|     31|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|     31|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|     31|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|     31|		/* interned strings support */			\
  |  |  |  |  |  | 1093|     31|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     31|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     31|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 3, False: 28]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|     31|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|     31|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     59|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|     28|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|     28|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|     28|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|     31|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  875|     31|}
php_date.c:php_date_parse_tzfile_wrapper:
  515|    273|{
  516|    273|	return php_date_parse_tzfile(formal_tzname, tzdb);
  517|    273|}
php_date.c:php_date_full_day_name:
  647|      8|{
  648|      8|	timelib_sll day_of_week = timelib_day_of_week(y, m, d);
  649|      8|	if (day_of_week < 0) {
  ------------------
  |  Branch (649:6): [True: 0, False: 8]
  ------------------
  650|      0|		return "Unknown";
  651|      0|	}
  652|      8|	return day_full_names[day_of_week];
  653|      8|}
php_date.c:date_register_classes:
 1743|      2|{
 1744|      2|	date_ce_interface = register_class_DateTimeInterface();
 1745|      2|	date_ce_interface->interface_gets_implemented = implement_date_interface_handler;
 1746|       |
 1747|      2|	date_ce_date = register_class_DateTime(date_ce_interface);
 1748|      2|	date_ce_date->create_object = date_object_new_date;
 1749|      2|	date_ce_date->default_object_handlers = &date_object_handlers_date;
 1750|      2|	memcpy(&date_object_handlers_date, &std_object_handlers, sizeof(zend_object_handlers));
 1751|      2|	date_object_handlers_date.offset = offsetof(php_date_obj, std);
 1752|      2|	date_object_handlers_date.free_obj = date_object_free_storage_date;
 1753|      2|	date_object_handlers_date.clone_obj = date_object_clone_date;
 1754|      2|	date_object_handlers_date.compare = date_object_compare_date;
 1755|      2|	date_object_handlers_date.get_properties_for = date_object_get_properties_for;
 1756|      2|	date_object_handlers_date.get_gc = date_object_get_gc;
 1757|       |
 1758|      2|	date_ce_immutable = register_class_DateTimeImmutable(date_ce_interface);
 1759|      2|	date_ce_immutable->create_object = date_object_new_date;
 1760|      2|	date_ce_immutable->default_object_handlers = &date_object_handlers_date;
 1761|      2|	memcpy(&date_object_handlers_immutable, &std_object_handlers, sizeof(zend_object_handlers));
 1762|      2|	date_object_handlers_immutable.clone_obj = date_object_clone_date;
 1763|      2|	date_object_handlers_immutable.compare = date_object_compare_date;
 1764|      2|	date_object_handlers_immutable.get_properties_for = date_object_get_properties_for;
 1765|      2|	date_object_handlers_immutable.get_gc = date_object_get_gc;
 1766|       |
 1767|      2|	date_ce_timezone = register_class_DateTimeZone();
 1768|      2|	date_ce_timezone->create_object = date_object_new_timezone;
 1769|      2|	date_ce_timezone->default_object_handlers = &date_object_handlers_timezone;
 1770|      2|	memcpy(&date_object_handlers_timezone, &std_object_handlers, sizeof(zend_object_handlers));
 1771|      2|	date_object_handlers_timezone.offset = offsetof(php_timezone_obj, std);
 1772|      2|	date_object_handlers_timezone.free_obj = date_object_free_storage_timezone;
 1773|      2|	date_object_handlers_timezone.clone_obj = date_object_clone_timezone;
 1774|      2|	date_object_handlers_timezone.get_properties_for = date_object_get_properties_for_timezone;
 1775|      2|	date_object_handlers_timezone.get_gc = date_object_get_gc_timezone;
 1776|      2|	date_object_handlers_timezone.get_debug_info = date_object_get_debug_info_timezone;
 1777|      2|	date_object_handlers_timezone.compare = date_object_compare_timezone;
 1778|       |
 1779|      2|	date_ce_interval = register_class_DateInterval();
 1780|      2|	date_ce_interval->create_object = date_object_new_interval;
 1781|      2|	date_ce_interval->default_object_handlers = &date_object_handlers_interval;
 1782|      2|	memcpy(&date_object_handlers_interval, &std_object_handlers, sizeof(zend_object_handlers));
 1783|      2|	date_object_handlers_interval.offset = offsetof(php_interval_obj, std);
 1784|      2|	date_object_handlers_interval.free_obj = date_object_free_storage_interval;
 1785|      2|	date_object_handlers_interval.clone_obj = date_object_clone_interval;
 1786|      2|	date_object_handlers_interval.has_property = date_interval_has_property;
 1787|      2|	date_object_handlers_interval.read_property = date_interval_read_property;
 1788|      2|	date_object_handlers_interval.write_property = date_interval_write_property;
 1789|      2|	date_object_handlers_interval.get_properties = date_object_get_properties_interval;
 1790|      2|	date_object_handlers_interval.get_property_ptr_ptr = date_interval_get_property_ptr_ptr;
 1791|      2|	date_object_handlers_interval.get_gc = date_object_get_gc_interval;
 1792|      2|	date_object_handlers_interval.compare = date_interval_compare_objects;
 1793|       |
 1794|      2|	date_ce_period = register_class_DatePeriod(zend_ce_aggregate);
 1795|      2|	date_ce_period->create_object = date_object_new_period;
 1796|      2|	date_ce_period->default_object_handlers = &date_object_handlers_period;
 1797|      2|	date_ce_period->get_iterator = date_object_period_get_iterator;
 1798|      2|	memcpy(&date_object_handlers_period, &std_object_handlers, sizeof(zend_object_handlers));
 1799|      2|	date_object_handlers_period.offset = offsetof(php_period_obj, std);
 1800|      2|	date_object_handlers_period.free_obj = date_object_free_storage_period;
 1801|      2|	date_object_handlers_period.clone_obj = date_object_clone_period;
 1802|      2|	date_object_handlers_period.get_gc = date_object_get_gc_period;
 1803|      2|	date_object_handlers_period.get_property_ptr_ptr = date_period_get_property_ptr_ptr;
 1804|      2|	date_object_handlers_period.has_property = date_period_has_property;
 1805|      2|	date_object_handlers_period.read_property = date_period_read_property;
 1806|      2|	date_object_handlers_period.write_property = date_period_write_property;
 1807|      2|	date_object_handlers_period.get_properties_for = date_period_get_properties_for;
 1808|      2|	date_object_handlers_period.unset_property = date_period_unset_property;
 1809|       |
 1810|      2|	date_ce_date_error = register_class_DateError(zend_ce_error);
 1811|      2|	date_ce_date_object_error = register_class_DateObjectError(date_ce_date_error);
 1812|      2|	date_ce_date_range_error = register_class_DateRangeError(date_ce_date_error);
 1813|       |
 1814|      2|	date_ce_date_exception = register_class_DateException(zend_ce_exception);
 1815|      2|	date_ce_date_invalid_timezone_exception = register_class_DateInvalidTimeZoneException(date_ce_date_exception);
 1816|      2|	date_ce_date_invalid_operation_exception = register_class_DateInvalidOperationException(date_ce_date_exception);
 1817|      2|	date_ce_date_malformed_string_exception = register_class_DateMalformedStringException(date_ce_date_exception);
 1818|      2|	date_ce_date_malformed_interval_string_exception = register_class_DateMalformedIntervalStringException(date_ce_date_exception);
 1819|      2|	date_ce_date_malformed_period_string_exception = register_class_DateMalformedPeriodStringException(date_ce_date_exception);
 1820|      2|} /* }}} */
php_date.c:implement_date_interface_handler:
 1698|      6|{
 1699|      6|	if (implementor->type == ZEND_USER_CLASS &&
  ------------------
  |  Branch (1699:6): [True: 2, False: 4]
  ------------------
 1700|      2|		!instanceof_function(implementor, date_ce_date) &&
  ------------------
  |  Branch (1700:3): [True: 0, False: 2]
  ------------------
 1701|      0|		!instanceof_function(implementor, date_ce_immutable)
  ------------------
  |  Branch (1701:3): [True: 0, False: 0]
  ------------------
 1702|      6|	) {
 1703|      0|		zend_error_noreturn(E_ERROR, "DateTimeInterface can't be implemented by user classes");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
 1704|      0|	}
 1705|       |
 1706|      6|	return SUCCESS;
 1707|      6|} /* }}} */
php_date.c:date_object_new_date:
 1823|    654|{
 1824|    654|	php_date_obj *intern = zend_object_alloc(sizeof(php_date_obj), class_type);
 1825|       |
 1826|    654|	zend_object_std_init(&intern->std, class_type);
 1827|    654|	object_properties_init(&intern->std, class_type);
 1828|       |
 1829|    654|	return &intern->std;
 1830|    654|} /* }}} */
php_date.c:date_object_free_storage_date:
 2251|    654|{
 2252|    654|	php_date_obj *intern = php_date_obj_from_obj(object);
  ------------------
  |  |   61|    654|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  ------------------
  |  |  |  |  407|    654|	_Generic( \
  |  |  |  |  408|    654|		(ptr), \
  |  |  |  |  409|    654|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|    654|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|    654|	)
  |  |  ------------------
  ------------------
 2253|       |
 2254|    654|	if (intern->time) {
  ------------------
  |  Branch (2254:6): [True: 52, False: 602]
  ------------------
 2255|     52|		timelib_time_dtor(intern->time);
 2256|     52|	}
 2257|       |
 2258|    654|	zend_object_std_dtor(&intern->std);
 2259|    654|} /* }}} */
php_date.c:date_object_clone_date:
 1833|      1|{
 1834|      1|	const php_date_obj *old_obj = php_date_obj_from_obj(this_ptr);
  ------------------
  |  |   61|      1|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
 1835|      1|	php_date_obj *new_obj = php_date_obj_from_obj(date_object_new_date(old_obj->std.ce));
  ------------------
  |  |   61|      1|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
 1836|       |
 1837|      1|	zend_objects_clone_members(&new_obj->std, &old_obj->std);
 1838|      1|	if (!old_obj->time) {
  ------------------
  |  Branch (1838:6): [True: 0, False: 1]
  ------------------
 1839|      0|		return &new_obj->std;
 1840|      0|	}
 1841|       |
 1842|       |	/* this should probably moved to a new `timelib_time *timelime_time_clone(timelib_time *)` */
 1843|      1|	new_obj->time = timelib_time_ctor();
 1844|      1|	*new_obj->time = *old_obj->time;
 1845|      1|	if (old_obj->time->tz_abbr) {
  ------------------
  |  Branch (1845:6): [True: 1, False: 0]
  ------------------
 1846|      1|		new_obj->time->tz_abbr = timelib_strdup(old_obj->time->tz_abbr);
  ------------------
  |  |   14|      1|#define timelib_strdup  estrdup
  |  |  ------------------
  |  |  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1847|      1|	}
 1848|      1|	if (old_obj->time->tz_info) {
  ------------------
  |  Branch (1848:6): [True: 1, False: 0]
  ------------------
 1849|      1|		new_obj->time->tz_info = old_obj->time->tz_info;
 1850|      1|	}
 1851|       |
 1852|      1|	return &new_obj->std;
 1853|      1|} /* }}} */
php_date.c:date_object_get_gc:
 1885|     16|{
 1886|       |	*table = NULL;
 1887|     16|	*n = 0;
 1888|     16|	return zend_std_get_properties(object);
 1889|     16|} /* }}} */
php_date.c:date_object_new_timezone:
 1980|      2|{
 1981|      2|	php_timezone_obj *intern = zend_object_alloc(sizeof(php_timezone_obj), class_type);
 1982|       |
 1983|      2|	zend_object_std_init(&intern->std, class_type);
 1984|      2|	object_properties_init(&intern->std, class_type);
 1985|       |
 1986|      2|	return &intern->std;
 1987|      2|} /* }}} */
php_date.c:date_object_free_storage_timezone:
 2262|      2|{
 2263|      2|	php_timezone_obj *intern = php_timezone_obj_from_obj(object);
  ------------------
  |  |   76|      2|#define php_timezone_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_timezone_obj, std)
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
 2264|       |
 2265|      2|	if (intern->type == TIMELIB_ZONETYPE_ABBR) {
  ------------------
  |  |  328|      2|#define TIMELIB_ZONETYPE_ABBR   2
  ------------------
  |  Branch (2265:6): [True: 0, False: 2]
  ------------------
 2266|       |		timelib_free(intern->tzi.z.abbr);
  ------------------
  |  |   16|      0|#define timelib_free    efree
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2267|      0|	}
 2268|      2|	zend_object_std_dtor(&intern->std);
 2269|      2|} /* }}} */
php_date.c:date_object_new_interval:
 2123|      5|{
 2124|      5|	php_interval_obj *intern = zend_object_alloc(sizeof(php_interval_obj), class_type);
 2125|       |
 2126|      5|	zend_object_std_init(&intern->std, class_type);
 2127|      5|	object_properties_init(&intern->std, class_type);
 2128|       |
 2129|      5|	return &intern->std;
 2130|      5|} /* }}} */
php_date.c:date_object_free_storage_interval:
 2272|      5|{
 2273|      5|	php_interval_obj *intern = php_interval_obj_from_obj(object);
  ------------------
  |  |   92|      5|#define php_interval_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_interval_obj, std)
  |  |  ------------------
  |  |  |  |  407|      5|	_Generic( \
  |  |  |  |  408|      5|		(ptr), \
  |  |  |  |  409|      5|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      5|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      5|	)
  |  |  ------------------
  ------------------
 2274|       |
 2275|      5|	if (intern->date_string) {
  ------------------
  |  Branch (2275:6): [True: 0, False: 5]
  ------------------
 2276|      0|		zend_string_release(intern->date_string);
 2277|       |		intern->date_string = NULL;
 2278|      0|	}
 2279|      5|	timelib_rel_time_dtor(intern->diff);
 2280|      5|	zend_object_std_dtor(&intern->std);
 2281|      5|} /* }}} */
php_date.c:date_object_new_period:
 2214|      2|{
 2215|      2|	php_period_obj *intern = zend_object_alloc(sizeof(php_period_obj), class_type);
 2216|       |
 2217|      2|	zend_object_std_init(&intern->std, class_type);
 2218|      2|	object_properties_init(&intern->std, class_type);
 2219|       |
 2220|      2|	return &intern->std;
 2221|      2|} /* }}} */
php_date.c:date_object_free_storage_period:
 2284|      2|{
 2285|      2|	php_period_obj *intern = php_period_obj_from_obj(object);
  ------------------
  |  |  109|      2|#define php_period_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_period_obj, std)
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
 2286|       |
 2287|      2|	if (intern->start) {
  ------------------
  |  Branch (2287:6): [True: 0, False: 2]
  ------------------
 2288|      0|		timelib_time_dtor(intern->start);
 2289|      0|	}
 2290|       |
 2291|      2|	if (intern->current) {
  ------------------
  |  Branch (2291:6): [True: 0, False: 2]
  ------------------
 2292|      0|		timelib_time_dtor(intern->current);
 2293|      0|	}
 2294|       |
 2295|      2|	if (intern->end) {
  ------------------
  |  Branch (2295:6): [True: 0, False: 2]
  ------------------
 2296|      0|		timelib_time_dtor(intern->end);
 2297|      0|	}
 2298|       |
 2299|      2|	timelib_rel_time_dtor(intern->interval);
 2300|      2|	zend_object_std_dtor(&intern->std);
 2301|      2|} /* }}} */
php_date.c:update_errors_warnings:
 2329|    652|{
 2330|    652|	if (DATEG(last_errors)) {
  ------------------
  |  |  120|    652|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    652|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 18, False: 634]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2331|     18|		timelib_error_container_dtor(DATEG(last_errors));
  ------------------
  |  |  120|     18|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|     18|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 2332|     18|		DATEG(last_errors) = NULL;
  ------------------
  |  |  120|     18|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|     18|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 2333|     18|	}
 2334|       |
 2335|    652|	if (last_errors == NULL || (*last_errors) == NULL) {
  ------------------
  |  Branch (2335:6): [True: 0, False: 652]
  |  Branch (2335:29): [True: 0, False: 652]
  ------------------
 2336|      0|		return;
 2337|      0|	}
 2338|       |
 2339|    652|	if ((*last_errors)->warning_count || (*last_errors)->error_count) {
  ------------------
  |  Branch (2339:6): [True: 574, False: 78]
  |  Branch (2339:39): [True: 35, False: 43]
  ------------------
 2340|    609|		DATEG(last_errors) = *last_errors;
  ------------------
  |  |  120|    609|#define DATEG(v) ZEND_MODULE_GLOBALS_ACCESSOR(date, v)
  |  |  ------------------
  |  |  |  |  276|    609|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 2341|    609|		return;
 2342|    609|	}
 2343|       |
 2344|     43|	timelib_error_container_dtor(*last_errors);
 2345|       |	*last_errors = NULL;
 2346|     43|} /* }}} */
php_date.c:php_date_get_current_time_with_fraction:
 2354|     51|{
 2355|     51|#ifdef HAVE_GETTIMEOFDAY
 2356|     51|	struct timeval tp = {0}; /* For setting microsecond */
 2357|       |
 2358|     51|	gettimeofday(&tp, NULL);
 2359|     51|	*sec = tp.tv_sec;
 2360|     51|	*usec = tp.tv_usec;
 2361|       |#else
 2362|       |	*sec = time(NULL);
 2363|       |	*usec = 0;
 2364|       |#endif
 2365|     51|}
php_date.c:php_date_set_time_fraction:
 2349|     52|{
 2350|     52|	time->us = microsecond;
 2351|     52|}
php_date.c:date_clone_immutable:
 1856|      1|{
 1857|      1|	ZVAL_OBJ(new_object, date_object_clone_date(Z_OBJ_P(object)));
  ------------------
  |  | 1140|      1|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      1|		zval *__z = (z);						\
  |  | 1142|      1|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1858|      1|} /* }}} */
php_date.c:php_date_timestamp_set:
 3807|      1|{
 3808|      1|	php_date_obj *dateobj;
 3809|       |
 3810|      1|	dateobj = Z_PHPDATE_P(object);
  ------------------
  |  |   63|      1|#define Z_PHPDATE_P(zv)  php_date_obj_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   61|      1|#define php_date_obj_from_obj(obj) ZEND_CONTAINER_OF(obj, php_date_obj, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3811|      1|	DATE_CHECK_INITIALIZED(dateobj->time, Z_OBJCE_P(object));
  ------------------
  |  |  320|      1|	if (UNEXPECTED(!member)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  321|      0|		date_throw_uninitialized_error(ce); \
  |  |  322|      0|		RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  323|      0|	}
  ------------------
  |  Branch (3811:2): [True: 0, False: 0]
  |  Branch (3811:2): [True: 0, False: 0]
  ------------------
 3812|      1|	timelib_unixtime2local(dateobj->time, (timelib_sll)timestamp);
 3813|       |	timelib_update_ts(dateobj->time, NULL);
 3814|      1|	php_date_set_time_fraction(dateobj->time, 0);
 3815|      1|} /* }}} */
php_date.c:php_date_interval_initialize_from_hash:
 4612|      1|{
 4613|       |	/* If we have a date_string, use that instead */
 4614|      1|	const zval *date_str = zend_hash_str_find(myht, "date_string", strlen("date_string"));
 4615|      1|	if (date_str && Z_TYPE_P(date_str) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (date_str && Z_TYPE_P(date_str) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (4615:6): [True: 0, False: 1]
  |  Branch (4615:18): [True: 0, False: 0]
  ------------------
 4616|      0|		timelib_time   *time;
 4617|      0|		timelib_error_container *err = NULL;
 4618|       |
 4619|      0|		time = timelib_strtotime(Z_STRVAL_P(date_str), Z_STRLEN_P(date_str), &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		time = timelib_strtotime(Z_STRVAL_P(date_str), Z_STRLEN_P(date_str), &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		time = timelib_strtotime(Z_STRVAL_P(date_str), Z_STRLEN_P(date_str), &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
  ------------------
  |  |  442|      0|#define DATE_TIMEZONEDB      php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
  |  |  ------------------
  |  |  |  Branch (442:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4620|       |
 4621|      0|		if (err->error_count > 0)  {
  ------------------
  |  Branch (4621:7): [True: 0, False: 0]
  ------------------
 4622|      0|			zend_throw_error(NULL,
 4623|      0|				"Unknown or bad format (%s) at position %d (%c) while unserializing: %s",
 4624|      0|				Z_STRVAL_P(date_str),
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4625|      0|				err->error_messages[0].position,
 4626|      0|				err->error_messages[0].character ? err->error_messages[0].character : ' ', err->error_messages[0].message);
  ------------------
  |  Branch (4626:5): [True: 0, False: 0]
  ------------------
 4627|      0|				timelib_time_dtor(time);
 4628|      0|				timelib_error_container_dtor(err);
 4629|      0|				return;
 4630|      0|		}
 4631|       |
 4632|       |		/* If ->diff is already set, then we need to free it first */
 4633|      0|		if (intobj->diff) {
  ------------------
  |  Branch (4633:7): [True: 0, False: 0]
  ------------------
 4634|      0|			timelib_rel_time_dtor(intobj->diff);
 4635|      0|		}
 4636|       |
 4637|      0|		intobj->diff = timelib_rel_time_clone(&time->relative);
 4638|      0|		intobj->initialized = true;
 4639|      0|		intobj->civil_or_wall = PHP_DATE_CIVIL;
  ------------------
  |  |   80|      0|#define PHP_DATE_CIVIL   1
  ------------------
 4640|      0|		intobj->from_string = true;
 4641|      0|		intobj->date_string = zend_string_copy(Z_STR_P(date_str));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4642|       |
 4643|      0|		timelib_time_dtor(time);
 4644|      0|		timelib_error_container_dtor(err);
 4645|       |
 4646|      0|		return;
 4647|      0|	}
 4648|       |
 4649|       |	/* If ->diff is already set, then we need to free it first */
 4650|      1|	if (intobj->diff) {
  ------------------
  |  Branch (4650:6): [True: 0, False: 1]
  ------------------
 4651|      0|		timelib_rel_time_dtor(intobj->diff);
 4652|      0|	}
 4653|       |
 4654|       |	/* Set new value */
 4655|      1|	intobj->diff = timelib_rel_time_ctor();
 4656|       |
 4657|      1|#define PHP_DATE_INTERVAL_READ_PROPERTY(element, member, itype, def) \
 4658|      1|	do { \
 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
 4661|      1|			intobj->diff->member = (itype)zval_get_long(z_arg); \
 4662|      1|		} else { \
 4663|      1|			intobj->diff->member = (itype)def; \
 4664|      1|		} \
 4665|      1|	} while (0);
 4666|       |
 4667|      1|#define PHP_DATE_INTERVAL_READ_PROPERTY_I64(element, member) \
 4668|      1|	do { \
 4669|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
 4670|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
 4671|      1|			zend_string *tmp_str; \
 4672|      1|			zend_string *str = zval_get_tmp_string(z_arg, &tmp_str); \
 4673|      1|			DATE_A64I(intobj->diff->member, ZSTR_VAL(str)); \
 4674|      1|			zend_tmp_string_release(tmp_str); \
 4675|      1|		} else { \
 4676|      1|			intobj->diff->member = -1LL; \
 4677|      1|		} \
 4678|      1|	} while (0);
 4679|       |
 4680|      1|#define PHP_DATE_INTERVAL_READ_PROPERTY_DAYS(member) \
 4681|      1|	do { \
 4682|      1|		zval *z_arg = zend_hash_str_find(myht, "days", sizeof("days") - 1); \
 4683|      1|		if (z_arg && Z_TYPE_P(z_arg) == IS_FALSE) { \
 4684|      1|			intobj->diff->member = TIMELIB_UNSET; \
 4685|      1|		} else if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
 4686|      1|			zend_string *tmp_str; \
 4687|      1|			zend_string *str = zval_get_tmp_string(z_arg, &tmp_str); \
 4688|      1|			DATE_A64I(intobj->diff->member, ZSTR_VAL(str)); \
 4689|      1|			zend_tmp_string_release(tmp_str); \
 4690|      1|		} else { \
 4691|      1|			intobj->diff->member = -1LL; \
 4692|      1|		} \
 4693|      1|	} while (0);
 4694|       |
 4695|      1|#define PHP_DATE_INTERVAL_READ_PROPERTY_DOUBLE(element, member, def) \
 4696|      1|	do { \
 4697|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
 4698|      1|		if (z_arg) { \
 4699|      1|			intobj->diff->member = (double)zval_get_double(z_arg); \
 4700|      1|		} else { \
 4701|      1|			intobj->diff->member = (double)def; \
 4702|      1|		} \
 4703|      1|	} while (0);
 4704|       |
 4705|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("y", y, timelib_sll, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4706|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("m", m, timelib_sll, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4707|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("d", d, timelib_sll, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4708|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("h", h, timelib_sll, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4709|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("i", i, timelib_sll, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4710|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("s", s, timelib_sll, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4711|      1|	{
 4712|      1|		const zval *z_arg = zend_hash_str_find(myht, "f", sizeof("f") - 1);
 4713|      1|		if (z_arg) {
  ------------------
  |  Branch (4713:7): [True: 0, False: 1]
  ------------------
 4714|      0|			intobj->diff->us = zend_dval_to_lval(zval_get_double(z_arg) * 1000000.0);
 4715|      0|		}
 4716|      1|	}
 4717|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("weekday", weekday, int, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4718|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("weekday_behavior", weekday_behavior, int, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4719|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("first_last_day_of", first_last_day_of, int, -1)
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4720|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("invert", invert, int, 0);
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4721|      1|	PHP_DATE_INTERVAL_READ_PROPERTY_DAYS(days);
  ------------------
  |  | 4681|      1|	do { \
  |  | 4682|      1|		zval *z_arg = zend_hash_str_find(myht, "days", sizeof("days") - 1); \
  |  | 4683|      1|		if (z_arg && Z_TYPE_P(z_arg) == IS_FALSE) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) == IS_FALSE) { \
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (4683:7): [True: 0, False: 1]
  |  |  |  Branch (4683:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4684|      0|			intobj->diff->member = TIMELIB_UNSET; \
  |  |  ------------------
  |  |  |  |  382|      0|#define TIMELIB_UNSET   -9999999
  |  |  ------------------
  |  | 4685|      1|		} else if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		} else if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4685:14): [True: 0, False: 1]
  |  |  |  Branch (4685:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 4686|      0|			zend_string *tmp_str; \
  |  | 4687|      0|			zend_string *str = zval_get_tmp_string(z_arg, &tmp_str); \
  |  | 4688|      0|			DATE_A64I(intobj->diff->member, ZSTR_VAL(str)); \
  |  |  ------------------
  |  |  |  |   45|      0|#define DATE_A64I(i, s) i = strtoll(s, NULL, 10)
  |  |  ------------------
  |  | 4689|      0|			zend_tmp_string_release(tmp_str); \
  |  | 4690|      1|		} else { \
  |  | 4691|      1|			intobj->diff->member = -1LL; \
  |  | 4692|      1|		} \
  |  | 4693|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4693:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4722|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("special_type", special.type, unsigned int, 0);
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4723|      1|	PHP_DATE_INTERVAL_READ_PROPERTY_I64("special_amount", special.amount);
  ------------------
  |  | 4668|      1|	do { \
  |  | 4669|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4670|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4670:7): [True: 0, False: 1]
  |  |  |  Branch (4670:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4671|      0|			zend_string *tmp_str; \
  |  | 4672|      0|			zend_string *str = zval_get_tmp_string(z_arg, &tmp_str); \
  |  | 4673|      0|			DATE_A64I(intobj->diff->member, ZSTR_VAL(str)); \
  |  |  ------------------
  |  |  |  |   45|      0|#define DATE_A64I(i, s) i = strtoll(s, NULL, 10)
  |  |  ------------------
  |  | 4674|      0|			zend_tmp_string_release(tmp_str); \
  |  | 4675|      1|		} else { \
  |  | 4676|      1|			intobj->diff->member = -1LL; \
  |  | 4677|      1|		} \
  |  | 4678|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4678:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4724|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("have_weekday_relative", have_weekday_relative, unsigned int, 0);
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4725|      1|	PHP_DATE_INTERVAL_READ_PROPERTY("have_special_relative", have_special_relative, unsigned int, 0);
  ------------------
  |  | 4658|      1|	do { \
  |  | 4659|      1|		zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
  |  | 4660|      1|		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
  |  |  ------------------
  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (4660:7): [True: 0, False: 1]
  |  |  |  Branch (4660:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 4661|      0|			intobj->diff->member = (itype)zval_get_long(z_arg); \
  |  | 4662|      1|		} else { \
  |  | 4663|      1|			intobj->diff->member = (itype)def; \
  |  | 4664|      1|		} \
  |  | 4665|      1|	} while (0);
  |  |  ------------------
  |  |  |  Branch (4665:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4726|      1|	{
 4727|      1|		const zval *z_arg = zend_hash_str_find(myht, "civil_or_wall", sizeof("civil_or_wall") - 1);
 4728|      1|		intobj->civil_or_wall = PHP_DATE_CIVIL;
  ------------------
  |  |   80|      1|#define PHP_DATE_CIVIL   1
  ------------------
 4729|      1|		if (z_arg) {
  ------------------
  |  Branch (4729:7): [True: 0, False: 1]
  ------------------
 4730|      0|			zend_long val = zval_get_long(z_arg);
 4731|      0|			intobj->civil_or_wall = val;
 4732|      0|		}
 4733|      1|	}
 4734|       |
 4735|       |	intobj->initialized = true;
 4736|      1|} /* }}} */
php_date.c:restore_custom_dateinterval_properties:
 4795|      1|{
 4796|      1|	zend_string      *prop_name;
 4797|      1|	zval             *prop_val;
 4798|       |
 4799|      1|	ZEND_HASH_FOREACH_STR_KEY_VAL(myht, prop_name, prop_val) {
  ------------------
  |  | 1181|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      1|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      1|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      1|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      1|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      1|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      1|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      1|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      1|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      1|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1182|      0|	_key = __key; \
  |  | 1183|      0|	_val = _z;
  ------------------
 4800|      1|		if (!prop_name || (Z_TYPE_P(prop_val) == IS_REFERENCE) || date_interval_is_internal_property(prop_name)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (!prop_name || (Z_TYPE_P(prop_val) == IS_REFERENCE) || date_interval_is_internal_property(prop_name)) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (4800:7): [True: 0, False: 0]
  |  Branch (4800:21): [True: 0, False: 0]
  |  Branch (4800:61): [True: 0, False: 0]
  ------------------
 4801|      0|			continue;
 4802|      0|		}
 4803|      0|		update_property(Z_OBJ_P(object), prop_name, prop_val);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 4804|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4805|      1|}

php_date.c:register_php_date_symbols:
  784|      2|{
  785|      2|	REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  786|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC3339, "Y-m-d\\TH:i:sP") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (786:2): [True: 0, Folded]
  |  Branch (786:2): [True: 2, Folded]
  ------------------
  787|      2|	REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_COOKIE, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  788|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_COOKIE, "l, d-M-Y H:i:s T") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (788:2): [True: 0, Folded]
  |  Branch (788:2): [True: 2, Folded]
  ------------------
  789|      2|	REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  790|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_ISO8601, "Y-m-d\\TH:i:sO") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (790:2): [True: 0, Folded]
  |  Branch (790:2): [True: 2, Folded]
  ------------------
  791|      2|	REGISTER_STRING_CONSTANT("DATE_ISO8601_EXPANDED", DATE_FORMAT_ISO8601_EXPANDED, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  792|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_ISO8601_EXPANDED, "X-m-d\\TH:i:sP") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (792:2): [True: 0, Folded]
  |  Branch (792:2): [True: 2, Folded]
  ------------------
  793|      2|	REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC822, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  794|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC822, "D, d M y H:i:s O") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (794:2): [True: 0, Folded]
  |  Branch (794:2): [True: 2, Folded]
  ------------------
  795|      2|	REGISTER_STRING_CONSTANT("DATE_RFC850", DATE_FORMAT_RFC850, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  796|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC850, "l, d-M-y H:i:s T") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (796:2): [True: 0, Folded]
  |  Branch (796:2): [True: 2, Folded]
  ------------------
  797|      2|	REGISTER_STRING_CONSTANT("DATE_RFC1036", DATE_FORMAT_RFC1036, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  798|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC1036, "D, d M y H:i:s O") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (798:2): [True: 0, Folded]
  |  Branch (798:2): [True: 2, Folded]
  ------------------
  799|      2|	REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  800|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC1123, "D, d M Y H:i:s O") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (800:2): [True: 0, Folded]
  |  Branch (800:2): [True: 2, Folded]
  ------------------
  801|      2|	zend_constant *const_DATE_RFC7231 = REGISTER_STRING_CONSTANT("DATE_RFC7231", DATE_FORMAT_RFC7231, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  802|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC7231, "D, d M Y H:i:s \\G\\M\\T") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (802:2): [True: 0, Folded]
  |  Branch (802:2): [True: 2, Folded]
  ------------------
  803|      2|	REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  804|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC2822, "D, d M Y H:i:s O") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (804:2): [True: 0, Folded]
  |  Branch (804:2): [True: 2, Folded]
  ------------------
  805|      2|	REGISTER_STRING_CONSTANT("DATE_RFC3339", DATE_FORMAT_RFC3339, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  806|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC3339, "Y-m-d\\TH:i:sP") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (806:2): [True: 0, Folded]
  |  Branch (806:2): [True: 2, Folded]
  ------------------
  807|      2|	REGISTER_STRING_CONSTANT("DATE_RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  808|      2|	ZEND_ASSERT(strcmp(DATE_FORMAT_RFC3339_EXTENDED, "Y-m-d\\TH:i:s.vP") == 0);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (808:2): [True: 0, Folded]
  |  Branch (808:2): [True: 2, Folded]
  ------------------
  809|      2|	REGISTER_STRING_CONSTANT("DATE_RSS", DATE_FORMAT_RFC1123, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  810|      2|	REGISTER_STRING_CONSTANT("DATE_W3C", DATE_FORMAT_RFC3339, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  811|      2|	zend_constant *const_SUNFUNCS_RET_TIMESTAMP = REGISTER_LONG_CONSTANT("SUNFUNCS_RET_TIMESTAMP", SUNFUNCS_RET_TIMESTAMP, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  812|      2|	zend_constant *const_SUNFUNCS_RET_STRING = REGISTER_LONG_CONSTANT("SUNFUNCS_RET_STRING", SUNFUNCS_RET_STRING, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  813|      2|	zend_constant *const_SUNFUNCS_RET_DOUBLE = REGISTER_LONG_CONSTANT("SUNFUNCS_RET_DOUBLE", SUNFUNCS_RET_DOUBLE, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  814|       |
  815|       |
  816|      2|	zend_attribute *attribute_Deprecated_func_strftime_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "strftime", sizeof("strftime") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  817|      2|	ZVAL_STR(&attribute_Deprecated_func_strftime_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  818|      2|	attribute_Deprecated_func_strftime_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  819|      2|	zend_string *attribute_Deprecated_func_strftime_0_arg1_str = zend_string_init("use IntlDateFormatter::format() instead", strlen("use IntlDateFormatter::format() instead"), 1);
  820|      2|	ZVAL_STR(&attribute_Deprecated_func_strftime_0->args[1].value, attribute_Deprecated_func_strftime_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  821|      2|	attribute_Deprecated_func_strftime_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  822|       |
  823|      2|	zend_attribute *attribute_Deprecated_func_gmstrftime_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "gmstrftime", sizeof("gmstrftime") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  824|      2|	ZVAL_STR(&attribute_Deprecated_func_gmstrftime_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  825|      2|	attribute_Deprecated_func_gmstrftime_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  826|      2|	ZVAL_STR_COPY(&attribute_Deprecated_func_gmstrftime_0->args[1].value, attribute_Deprecated_func_strftime_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  827|      2|	attribute_Deprecated_func_gmstrftime_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  828|       |
  829|      2|	zend_attribute *attribute_Deprecated_func_date_sunrise_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "date_sunrise", sizeof("date_sunrise") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  830|      2|	ZVAL_STR(&attribute_Deprecated_func_date_sunrise_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  831|      2|	attribute_Deprecated_func_date_sunrise_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  832|      2|	zend_string *attribute_Deprecated_func_date_sunrise_0_arg1_str = zend_string_init("use date_sun_info() instead", strlen("use date_sun_info() instead"), 1);
  833|      2|	ZVAL_STR(&attribute_Deprecated_func_date_sunrise_0->args[1].value, attribute_Deprecated_func_date_sunrise_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  834|      2|	attribute_Deprecated_func_date_sunrise_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  835|       |
  836|      2|	zend_attribute *attribute_Deprecated_func_date_sunset_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "date_sunset", sizeof("date_sunset") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  837|      2|	ZVAL_STR(&attribute_Deprecated_func_date_sunset_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  838|      2|	attribute_Deprecated_func_date_sunset_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  839|      2|	ZVAL_STR_COPY(&attribute_Deprecated_func_date_sunset_0->args[1].value, attribute_Deprecated_func_date_sunrise_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  840|      2|	attribute_Deprecated_func_date_sunset_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  841|       |
  842|      2|	zend_attribute *attribute_Deprecated_const_DATE_RFC7231_0 = zend_add_global_constant_attribute(const_DATE_RFC7231, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  843|      2|	ZVAL_STR(&attribute_Deprecated_const_DATE_RFC7231_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  844|      2|	attribute_Deprecated_const_DATE_RFC7231_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  845|      2|	zend_string *attribute_Deprecated_const_DATE_RFC7231_0_arg1_str = zend_string_init("as this format ignores the associated timezone and always uses GMT", strlen("as this format ignores the associated timezone and always uses GMT"), 1);
  846|      2|	ZVAL_STR(&attribute_Deprecated_const_DATE_RFC7231_0->args[1].value, attribute_Deprecated_const_DATE_RFC7231_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  847|      2|	attribute_Deprecated_const_DATE_RFC7231_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  848|       |
  849|      2|	zend_attribute *attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0 = zend_add_global_constant_attribute(const_SUNFUNCS_RET_TIMESTAMP, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  850|      2|	ZVAL_STR(&attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_4));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  851|      2|	attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  852|      2|	zend_string *attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0_arg1_str = zend_string_init("as date_sunrise() and date_sunset() were deprecated in 8.1", strlen("as date_sunrise() and date_sunset() were deprecated in 8.1"), 1);
  853|      2|	ZVAL_STR(&attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0->args[1].value, attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  854|      2|	attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  855|       |
  856|      2|	zend_attribute *attribute_Deprecated_const_SUNFUNCS_RET_STRING_0 = zend_add_global_constant_attribute(const_SUNFUNCS_RET_STRING, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  857|      2|	ZVAL_STR(&attribute_Deprecated_const_SUNFUNCS_RET_STRING_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_4));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  858|      2|	attribute_Deprecated_const_SUNFUNCS_RET_STRING_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  859|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_SUNFUNCS_RET_STRING_0->args[1].value, attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  860|      2|	attribute_Deprecated_const_SUNFUNCS_RET_STRING_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  861|       |
  862|      2|	zend_attribute *attribute_Deprecated_const_SUNFUNCS_RET_DOUBLE_0 = zend_add_global_constant_attribute(const_SUNFUNCS_RET_DOUBLE, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  863|      2|	ZVAL_STR(&attribute_Deprecated_const_SUNFUNCS_RET_DOUBLE_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_4));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  864|      2|	attribute_Deprecated_const_SUNFUNCS_RET_DOUBLE_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  865|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_SUNFUNCS_RET_DOUBLE_0->args[1].value, attribute_Deprecated_const_SUNFUNCS_RET_TIMESTAMP_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  866|      2|	attribute_Deprecated_const_SUNFUNCS_RET_DOUBLE_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  867|      2|}
php_date.c:register_class_DateTimeInterface:
  870|      2|{
  871|      2|	zend_class_entry ce, *class_entry;
  872|       |
  873|      2|	INIT_CLASS_ENTRY(ce, "DateTimeInterface", class_DateTimeInterface_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  874|      2|	class_entry = zend_register_internal_interface(&ce);
  875|       |
  876|      2|	zval const_ATOM_value;
  877|      2|	zend_string *const_ATOM_value_str = zend_string_init(DATE_FORMAT_RFC3339, strlen(DATE_FORMAT_RFC3339), 1);
  ------------------
  |  |  148|      2|#define DATE_FORMAT_RFC3339  "Y-m-d\\TH:i:sP"
  ------------------
              	zend_string *const_ATOM_value_str = zend_string_init(DATE_FORMAT_RFC3339, strlen(DATE_FORMAT_RFC3339), 1);
  ------------------
  |  |  148|      2|#define DATE_FORMAT_RFC3339  "Y-m-d\\TH:i:sP"
  ------------------
  878|      2|	ZVAL_STR(&const_ATOM_value, const_ATOM_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  879|      2|	zend_string *const_ATOM_name = zend_string_init_interned("ATOM", sizeof("ATOM") - 1, true);
  880|      2|	zend_declare_typed_class_constant(class_entry, const_ATOM_name, &const_ATOM_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ATOM_name, &const_ATOM_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  881|      2|	zend_string_release_ex(const_ATOM_name, true);
  882|       |
  883|      2|	zval const_COOKIE_value;
  884|      2|	zend_string *const_COOKIE_value_str = zend_string_init(DATE_FORMAT_COOKIE, strlen(DATE_FORMAT_COOKIE), 1);
  ------------------
  |  |  202|      2|#define DATE_FORMAT_COOKIE   "l, d-M-Y H:i:s T"
  ------------------
              	zend_string *const_COOKIE_value_str = zend_string_init(DATE_FORMAT_COOKIE, strlen(DATE_FORMAT_COOKIE), 1);
  ------------------
  |  |  202|      2|#define DATE_FORMAT_COOKIE   "l, d-M-Y H:i:s T"
  ------------------
  885|      2|	ZVAL_STR(&const_COOKIE_value, const_COOKIE_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  886|      2|	zend_string *const_COOKIE_name = zend_string_init_interned("COOKIE", sizeof("COOKIE") - 1, true);
  887|      2|	zend_declare_typed_class_constant(class_entry, const_COOKIE_name, &const_COOKIE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_COOKIE_name, &const_COOKIE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  888|      2|	zend_string_release_ex(const_COOKIE_name, true);
  889|       |
  890|      2|	zval const_ISO8601_value;
  891|      2|	zend_string *const_ISO8601_value_str = zend_string_init(DATE_FORMAT_ISO8601, strlen(DATE_FORMAT_ISO8601), 1);
  ------------------
  |  |  156|      2|#define DATE_FORMAT_ISO8601  "Y-m-d\\TH:i:sO"
  ------------------
              	zend_string *const_ISO8601_value_str = zend_string_init(DATE_FORMAT_ISO8601, strlen(DATE_FORMAT_ISO8601), 1);
  ------------------
  |  |  156|      2|#define DATE_FORMAT_ISO8601  "Y-m-d\\TH:i:sO"
  ------------------
  892|      2|	ZVAL_STR(&const_ISO8601_value, const_ISO8601_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  893|      2|	zend_string *const_ISO8601_name = zend_string_init_interned("ISO8601", sizeof("ISO8601") - 1, true);
  894|      2|	zend_declare_typed_class_constant(class_entry, const_ISO8601_name, &const_ISO8601_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ISO8601_name, &const_ISO8601_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  895|      2|	zend_string_release_ex(const_ISO8601_name, true);
  896|       |
  897|      2|	zval const_ISO8601_EXPANDED_value;
  898|      2|	zend_string *const_ISO8601_EXPANDED_value_str = zend_string_init(DATE_FORMAT_ISO8601_EXPANDED, strlen(DATE_FORMAT_ISO8601_EXPANDED), 1);
  ------------------
  |  |  178|      2|#define DATE_FORMAT_ISO8601_EXPANDED    "X-m-d\\TH:i:sP"
  ------------------
              	zend_string *const_ISO8601_EXPANDED_value_str = zend_string_init(DATE_FORMAT_ISO8601_EXPANDED, strlen(DATE_FORMAT_ISO8601_EXPANDED), 1);
  ------------------
  |  |  178|      2|#define DATE_FORMAT_ISO8601_EXPANDED    "X-m-d\\TH:i:sP"
  ------------------
  899|      2|	ZVAL_STR(&const_ISO8601_EXPANDED_value, const_ISO8601_EXPANDED_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  900|      2|	zend_string *const_ISO8601_EXPANDED_name = zend_string_init_interned("ISO8601_EXPANDED", sizeof("ISO8601_EXPANDED") - 1, true);
  901|      2|	zend_declare_typed_class_constant(class_entry, const_ISO8601_EXPANDED_name, &const_ISO8601_EXPANDED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ISO8601_EXPANDED_name, &const_ISO8601_EXPANDED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  902|      2|	zend_string_release_ex(const_ISO8601_EXPANDED_name, true);
  903|       |
  904|      2|	zval const_RFC822_value;
  905|      2|	zend_string *const_RFC822_value_str = zend_string_init(DATE_FORMAT_RFC822, strlen(DATE_FORMAT_RFC822), 1);
  ------------------
  |  |   74|      2|#define DATE_FORMAT_RFC822   "D, d M y H:i:s O"
  ------------------
              	zend_string *const_RFC822_value_str = zend_string_init(DATE_FORMAT_RFC822, strlen(DATE_FORMAT_RFC822), 1);
  ------------------
  |  |   74|      2|#define DATE_FORMAT_RFC822   "D, d M y H:i:s O"
  ------------------
  906|      2|	ZVAL_STR(&const_RFC822_value, const_RFC822_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  907|      2|	zend_string *const_RFC822_name = zend_string_init_interned("RFC822", sizeof("RFC822") - 1, true);
  908|      2|	zend_declare_typed_class_constant(class_entry, const_RFC822_name, &const_RFC822_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC822_name, &const_RFC822_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  909|      2|	zend_string_release_ex(const_RFC822_name, true);
  910|       |
  911|      2|	zval const_RFC850_value;
  912|      2|	zend_string *const_RFC850_value_str = zend_string_init(DATE_FORMAT_RFC850, strlen(DATE_FORMAT_RFC850), 1);
  ------------------
  |  |   82|      2|#define DATE_FORMAT_RFC850   "l, d-M-y H:i:s T"
  ------------------
              	zend_string *const_RFC850_value_str = zend_string_init(DATE_FORMAT_RFC850, strlen(DATE_FORMAT_RFC850), 1);
  ------------------
  |  |   82|      2|#define DATE_FORMAT_RFC850   "l, d-M-y H:i:s T"
  ------------------
  913|      2|	ZVAL_STR(&const_RFC850_value, const_RFC850_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  914|      2|	zend_string *const_RFC850_name = zend_string_init_interned("RFC850", sizeof("RFC850") - 1, true);
  915|      2|	zend_declare_typed_class_constant(class_entry, const_RFC850_name, &const_RFC850_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC850_name, &const_RFC850_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  916|      2|	zend_string_release_ex(const_RFC850_name, true);
  917|       |
  918|      2|	zval const_RFC1036_value;
  919|      2|	zend_string *const_RFC1036_value_str = zend_string_init(DATE_FORMAT_RFC1036, strlen(DATE_FORMAT_RFC1036), 1);
  ------------------
  |  |   92|      2|#define DATE_FORMAT_RFC1036  "D, d M y H:i:s O"
  ------------------
              	zend_string *const_RFC1036_value_str = zend_string_init(DATE_FORMAT_RFC1036, strlen(DATE_FORMAT_RFC1036), 1);
  ------------------
  |  |   92|      2|#define DATE_FORMAT_RFC1036  "D, d M y H:i:s O"
  ------------------
  920|      2|	ZVAL_STR(&const_RFC1036_value, const_RFC1036_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  921|      2|	zend_string *const_RFC1036_name = zend_string_init_interned("RFC1036", sizeof("RFC1036") - 1, true);
  922|      2|	zend_declare_typed_class_constant(class_entry, const_RFC1036_name, &const_RFC1036_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC1036_name, &const_RFC1036_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  923|      2|	zend_string_release_ex(const_RFC1036_name, true);
  924|       |
  925|      2|	zval const_RFC1123_value;
  926|      2|	zend_string *const_RFC1123_value_str = zend_string_init(DATE_FORMAT_RFC1123, strlen(DATE_FORMAT_RFC1123), 1);
  ------------------
  |  |   99|      2|#define DATE_FORMAT_RFC1123  "D, d M Y H:i:s O"
  ------------------
              	zend_string *const_RFC1123_value_str = zend_string_init(DATE_FORMAT_RFC1123, strlen(DATE_FORMAT_RFC1123), 1);
  ------------------
  |  |   99|      2|#define DATE_FORMAT_RFC1123  "D, d M Y H:i:s O"
  ------------------
  927|      2|	ZVAL_STR(&const_RFC1123_value, const_RFC1123_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  928|      2|	zend_string *const_RFC1123_name = zend_string_init_interned("RFC1123", sizeof("RFC1123") - 1, true);
  929|      2|	zend_declare_typed_class_constant(class_entry, const_RFC1123_name, &const_RFC1123_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC1123_name, &const_RFC1123_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  930|      2|	zend_string_release_ex(const_RFC1123_name, true);
  931|       |
  932|      2|	zval const_RFC7231_value;
  933|      2|	zend_string *const_RFC7231_value_str = zend_string_init(DATE_FORMAT_RFC7231, strlen(DATE_FORMAT_RFC7231), 1);
  ------------------
  |  |  104|      2|#define DATE_FORMAT_RFC7231  "D, d M Y H:i:s \\G\\M\\T"
  ------------------
              	zend_string *const_RFC7231_value_str = zend_string_init(DATE_FORMAT_RFC7231, strlen(DATE_FORMAT_RFC7231), 1);
  ------------------
  |  |  104|      2|#define DATE_FORMAT_RFC7231  "D, d M Y H:i:s \\G\\M\\T"
  ------------------
  934|      2|	ZVAL_STR(&const_RFC7231_value, const_RFC7231_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  935|      2|	zend_string *const_RFC7231_name = zend_string_init_interned("RFC7231", sizeof("RFC7231") - 1, true);
  936|      2|	zend_class_constant *const_RFC7231 = zend_declare_typed_class_constant(class_entry, const_RFC7231_name, &const_RFC7231_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_class_constant *const_RFC7231 = zend_declare_typed_class_constant(class_entry, const_RFC7231_name, &const_RFC7231_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  258|      2|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
              	zend_class_constant *const_RFC7231 = zend_declare_typed_class_constant(class_entry, const_RFC7231_name, &const_RFC7231_value, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  937|      2|	zend_string_release_ex(const_RFC7231_name, true);
  938|       |
  939|      2|	zval const_RFC2822_value;
  940|      2|	zend_string *const_RFC2822_value_str = zend_string_init(DATE_FORMAT_RFC2822, strlen(DATE_FORMAT_RFC2822), 1);
  ------------------
  |  |  126|      2|#define DATE_FORMAT_RFC2822  "D, d M Y H:i:s O"
  ------------------
              	zend_string *const_RFC2822_value_str = zend_string_init(DATE_FORMAT_RFC2822, strlen(DATE_FORMAT_RFC2822), 1);
  ------------------
  |  |  126|      2|#define DATE_FORMAT_RFC2822  "D, d M Y H:i:s O"
  ------------------
  941|      2|	ZVAL_STR(&const_RFC2822_value, const_RFC2822_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  942|      2|	zend_string *const_RFC2822_name = zend_string_init_interned("RFC2822", sizeof("RFC2822") - 1, true);
  943|      2|	zend_declare_typed_class_constant(class_entry, const_RFC2822_name, &const_RFC2822_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC2822_name, &const_RFC2822_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  944|      2|	zend_string_release_ex(const_RFC2822_name, true);
  945|       |
  946|      2|	zval const_RFC3339_value;
  947|      2|	zend_string *const_RFC3339_value_str = zend_string_init(DATE_FORMAT_RFC3339, strlen(DATE_FORMAT_RFC3339), 1);
  ------------------
  |  |  148|      2|#define DATE_FORMAT_RFC3339  "Y-m-d\\TH:i:sP"
  ------------------
              	zend_string *const_RFC3339_value_str = zend_string_init(DATE_FORMAT_RFC3339, strlen(DATE_FORMAT_RFC3339), 1);
  ------------------
  |  |  148|      2|#define DATE_FORMAT_RFC3339  "Y-m-d\\TH:i:sP"
  ------------------
  948|      2|	ZVAL_STR(&const_RFC3339_value, const_RFC3339_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  949|      2|	zend_string *const_RFC3339_name = zend_string_init_interned("RFC3339", sizeof("RFC3339") - 1, true);
  950|      2|	zend_declare_typed_class_constant(class_entry, const_RFC3339_name, &const_RFC3339_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC3339_name, &const_RFC3339_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  951|      2|	zend_string_release_ex(const_RFC3339_name, true);
  952|       |
  953|      2|	zval const_RFC3339_EXTENDED_value;
  954|      2|	zend_string *const_RFC3339_EXTENDED_value_str = zend_string_init(DATE_FORMAT_RFC3339_EXTENDED, strlen(DATE_FORMAT_RFC3339_EXTENDED), 1);
  ------------------
  |  |  194|      2|#define DATE_FORMAT_RFC3339_EXTENDED  "Y-m-d\\TH:i:s.vP"
  ------------------
              	zend_string *const_RFC3339_EXTENDED_value_str = zend_string_init(DATE_FORMAT_RFC3339_EXTENDED, strlen(DATE_FORMAT_RFC3339_EXTENDED), 1);
  ------------------
  |  |  194|      2|#define DATE_FORMAT_RFC3339_EXTENDED  "Y-m-d\\TH:i:s.vP"
  ------------------
  955|      2|	ZVAL_STR(&const_RFC3339_EXTENDED_value, const_RFC3339_EXTENDED_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  956|      2|	zend_string *const_RFC3339_EXTENDED_name = zend_string_init_interned("RFC3339_EXTENDED", sizeof("RFC3339_EXTENDED") - 1, true);
  957|      2|	zend_declare_typed_class_constant(class_entry, const_RFC3339_EXTENDED_name, &const_RFC3339_EXTENDED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RFC3339_EXTENDED_name, &const_RFC3339_EXTENDED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  958|      2|	zend_string_release_ex(const_RFC3339_EXTENDED_name, true);
  959|       |
  960|      2|	zval const_RSS_value;
  961|      2|	zend_string *const_RSS_value_str = zend_string_init(DATE_FORMAT_RFC1123, strlen(DATE_FORMAT_RFC1123), 1);
  ------------------
  |  |   99|      2|#define DATE_FORMAT_RFC1123  "D, d M Y H:i:s O"
  ------------------
              	zend_string *const_RSS_value_str = zend_string_init(DATE_FORMAT_RFC1123, strlen(DATE_FORMAT_RFC1123), 1);
  ------------------
  |  |   99|      2|#define DATE_FORMAT_RFC1123  "D, d M Y H:i:s O"
  ------------------
  962|      2|	ZVAL_STR(&const_RSS_value, const_RSS_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  963|      2|	zend_string *const_RSS_name = zend_string_init_interned("RSS", sizeof("RSS") - 1, true);
  964|      2|	zend_declare_typed_class_constant(class_entry, const_RSS_name, &const_RSS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_RSS_name, &const_RSS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  965|      2|	zend_string_release_ex(const_RSS_name, true);
  966|       |
  967|      2|	zval const_W3C_value;
  968|      2|	zend_string *const_W3C_value_str = zend_string_init(DATE_FORMAT_RFC3339, strlen(DATE_FORMAT_RFC3339), 1);
  ------------------
  |  |  148|      2|#define DATE_FORMAT_RFC3339  "Y-m-d\\TH:i:sP"
  ------------------
              	zend_string *const_W3C_value_str = zend_string_init(DATE_FORMAT_RFC3339, strlen(DATE_FORMAT_RFC3339), 1);
  ------------------
  |  |  148|      2|#define DATE_FORMAT_RFC3339  "Y-m-d\\TH:i:sP"
  ------------------
  969|      2|	ZVAL_STR(&const_W3C_value, const_W3C_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  970|      2|	zend_string *const_W3C_name = zend_string_init_interned("W3C", sizeof("W3C") - 1, true);
  971|      2|	zend_declare_typed_class_constant(class_entry, const_W3C_name, &const_W3C_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_W3C_name, &const_W3C_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  972|      2|	zend_string_release_ex(const_W3C_name, true);
  973|       |
  974|       |
  975|      2|	zend_attribute *attribute_Deprecated_const_RFC7231_0 = zend_add_class_constant_attribute(class_entry, const_RFC7231, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  976|      2|	ZVAL_STR(&attribute_Deprecated_const_RFC7231_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  977|      2|	attribute_Deprecated_const_RFC7231_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  978|      2|	zend_string *attribute_Deprecated_const_RFC7231_0_arg1_str = zend_string_init("as this format ignores the associated timezone and always uses GMT", strlen("as this format ignores the associated timezone and always uses GMT"), 1);
  979|      2|	ZVAL_STR(&attribute_Deprecated_const_RFC7231_0->args[1].value, attribute_Deprecated_const_RFC7231_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  980|      2|	attribute_Deprecated_const_RFC7231_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  981|       |
  982|       |
  983|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  984|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  985|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  986|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
  987|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  988|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  989|       |
  990|      2|	return class_entry;
  991|      2|}
php_date.c:register_class_DateTime:
  994|      2|{
  995|      2|	zend_class_entry ce, *class_entry;
  996|       |
  997|      2|	INIT_CLASS_ENTRY(ce, "DateTime", class_DateTime_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  998|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  999|      2|	zend_class_implements(class_entry, 1, class_entry_DateTimeInterface);
 1000|       |
 1001|       |
 1002|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1003|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1004|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1005|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
 1006|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1007|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1008|       |
 1009|      2|	return class_entry;
 1010|      2|}
php_date.c:register_class_DateTimeImmutable:
 1013|      2|{
 1014|      2|	zend_class_entry ce, *class_entry;
 1015|       |
 1016|      2|	INIT_CLASS_ENTRY(ce, "DateTimeImmutable", class_DateTimeImmutable_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1017|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
 1018|      2|	zend_class_implements(class_entry, 1, class_entry_DateTimeInterface);
 1019|       |
 1020|       |
 1021|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1022|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1023|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1024|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
 1025|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1026|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1027|       |
 1028|      2|	zend_string *attribute_name_NoDiscard_func_modify_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1029|      2|	zend_attribute *attribute_NoDiscard_func_modify_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "modify", sizeof("modify") - 1), attribute_name_NoDiscard_func_modify_0, 1);
 1030|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_modify_0, true);
 1031|      2|	zend_string *attribute_NoDiscard_func_modify_0_arg0_str = zend_string_init("as DateTimeImmutable::modify() does not modify the object itself", strlen("as DateTimeImmutable::modify() does not modify the object itself"), 1);
 1032|      2|	ZVAL_STR(&attribute_NoDiscard_func_modify_0->args[0].value, attribute_NoDiscard_func_modify_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1033|      2|	attribute_NoDiscard_func_modify_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1034|       |
 1035|      2|	zend_string *attribute_name_NoDiscard_func_add_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1036|      2|	zend_attribute *attribute_NoDiscard_func_add_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "add", sizeof("add") - 1), attribute_name_NoDiscard_func_add_0, 1);
 1037|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_add_0, true);
 1038|      2|	zend_string *attribute_NoDiscard_func_add_0_arg0_str = zend_string_init("as DateTimeImmutable::add() does not modify the object itself", strlen("as DateTimeImmutable::add() does not modify the object itself"), 1);
 1039|      2|	ZVAL_STR(&attribute_NoDiscard_func_add_0->args[0].value, attribute_NoDiscard_func_add_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1040|      2|	attribute_NoDiscard_func_add_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1041|       |
 1042|      2|	zend_string *attribute_name_NoDiscard_func_sub_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1043|      2|	zend_attribute *attribute_NoDiscard_func_sub_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "sub", sizeof("sub") - 1), attribute_name_NoDiscard_func_sub_0, 1);
 1044|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_sub_0, true);
 1045|      2|	zend_string *attribute_NoDiscard_func_sub_0_arg0_str = zend_string_init("as DateTimeImmutable::sub() does not modify the object itself", strlen("as DateTimeImmutable::sub() does not modify the object itself"), 1);
 1046|      2|	ZVAL_STR(&attribute_NoDiscard_func_sub_0->args[0].value, attribute_NoDiscard_func_sub_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1047|      2|	attribute_NoDiscard_func_sub_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1048|       |
 1049|      2|	zend_string *attribute_name_NoDiscard_func_settimezone_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1050|      2|	zend_attribute *attribute_NoDiscard_func_settimezone_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "settimezone", sizeof("settimezone") - 1), attribute_name_NoDiscard_func_settimezone_0, 1);
 1051|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_settimezone_0, true);
 1052|      2|	zend_string *attribute_NoDiscard_func_settimezone_0_arg0_str = zend_string_init("as DateTimeImmutable::setTimezone() does not modify the object itself", strlen("as DateTimeImmutable::setTimezone() does not modify the object itself"), 1);
 1053|      2|	ZVAL_STR(&attribute_NoDiscard_func_settimezone_0->args[0].value, attribute_NoDiscard_func_settimezone_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1054|      2|	attribute_NoDiscard_func_settimezone_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1055|       |
 1056|      2|	zend_string *attribute_name_NoDiscard_func_settime_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1057|      2|	zend_attribute *attribute_NoDiscard_func_settime_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "settime", sizeof("settime") - 1), attribute_name_NoDiscard_func_settime_0, 1);
 1058|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_settime_0, true);
 1059|      2|	zend_string *attribute_NoDiscard_func_settime_0_arg0_str = zend_string_init("as DateTimeImmutable::setTime() does not modify the object itself", strlen("as DateTimeImmutable::setTime() does not modify the object itself"), 1);
 1060|      2|	ZVAL_STR(&attribute_NoDiscard_func_settime_0->args[0].value, attribute_NoDiscard_func_settime_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1061|      2|	attribute_NoDiscard_func_settime_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1062|       |
 1063|      2|	zend_string *attribute_name_NoDiscard_func_setdate_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1064|      2|	zend_attribute *attribute_NoDiscard_func_setdate_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setdate", sizeof("setdate") - 1), attribute_name_NoDiscard_func_setdate_0, 1);
 1065|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_setdate_0, true);
 1066|      2|	zend_string *attribute_NoDiscard_func_setdate_0_arg0_str = zend_string_init("as DateTimeImmutable::setDate() does not modify the object itself", strlen("as DateTimeImmutable::setDate() does not modify the object itself"), 1);
 1067|      2|	ZVAL_STR(&attribute_NoDiscard_func_setdate_0->args[0].value, attribute_NoDiscard_func_setdate_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1068|      2|	attribute_NoDiscard_func_setdate_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1069|       |
 1070|      2|	zend_string *attribute_name_NoDiscard_func_setisodate_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1071|      2|	zend_attribute *attribute_NoDiscard_func_setisodate_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setisodate", sizeof("setisodate") - 1), attribute_name_NoDiscard_func_setisodate_0, 1);
 1072|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_setisodate_0, true);
 1073|      2|	zend_string *attribute_NoDiscard_func_setisodate_0_arg0_str = zend_string_init("as DateTimeImmutable::setISODate() does not modify the object itself", strlen("as DateTimeImmutable::setISODate() does not modify the object itself"), 1);
 1074|      2|	ZVAL_STR(&attribute_NoDiscard_func_setisodate_0->args[0].value, attribute_NoDiscard_func_setisodate_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1075|      2|	attribute_NoDiscard_func_setisodate_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1076|       |
 1077|      2|	zend_string *attribute_name_NoDiscard_func_settimestamp_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1078|      2|	zend_attribute *attribute_NoDiscard_func_settimestamp_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "settimestamp", sizeof("settimestamp") - 1), attribute_name_NoDiscard_func_settimestamp_0, 1);
 1079|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_settimestamp_0, true);
 1080|      2|	zend_string *attribute_NoDiscard_func_settimestamp_0_arg0_str = zend_string_init("as DateTimeImmutable::setTimestamp() does not modify the object itself", strlen("as DateTimeImmutable::setTimestamp() does not modify the object itself"), 1);
 1081|      2|	ZVAL_STR(&attribute_NoDiscard_func_settimestamp_0->args[0].value, attribute_NoDiscard_func_settimestamp_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1082|      2|	attribute_NoDiscard_func_settimestamp_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1083|       |
 1084|      2|	zend_string *attribute_name_NoDiscard_func_setmicrosecond_0 = zend_string_init_interned("NoDiscard", sizeof("NoDiscard") - 1, true);
 1085|      2|	zend_attribute *attribute_NoDiscard_func_setmicrosecond_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setmicrosecond", sizeof("setmicrosecond") - 1), attribute_name_NoDiscard_func_setmicrosecond_0, 1);
 1086|      2|	zend_string_release_ex(attribute_name_NoDiscard_func_setmicrosecond_0, true);
 1087|      2|	zend_string *attribute_NoDiscard_func_setmicrosecond_0_arg0_str = zend_string_init("as DateTimeImmutable::setMicrosecond() does not modify the object itself", strlen("as DateTimeImmutable::setMicrosecond() does not modify the object itself"), 1);
 1088|      2|	ZVAL_STR(&attribute_NoDiscard_func_setmicrosecond_0->args[0].value, attribute_NoDiscard_func_setmicrosecond_0_arg0_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1089|      2|	attribute_NoDiscard_func_setmicrosecond_0->args[0].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1090|       |
 1091|      2|	return class_entry;
 1092|      2|}
php_date.c:register_class_DateTimeZone:
 1095|      2|{
 1096|      2|	zend_class_entry ce, *class_entry;
 1097|       |
 1098|      2|	INIT_CLASS_ENTRY(ce, "DateTimeZone", class_DateTimeZone_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1099|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
 1100|       |
 1101|      2|	zval const_AFRICA_value;
 1102|      2|	ZVAL_LONG(&const_AFRICA_value, PHP_DATE_TIMEZONE_GROUP_AFRICA);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1103|      2|	zend_string *const_AFRICA_name = zend_string_init_interned("AFRICA", sizeof("AFRICA") - 1, true);
 1104|      2|	zend_declare_typed_class_constant(class_entry, const_AFRICA_name, &const_AFRICA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_AFRICA_name, &const_AFRICA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1105|      2|	zend_string_release_ex(const_AFRICA_name, true);
 1106|       |
 1107|      2|	zval const_AMERICA_value;
 1108|      2|	ZVAL_LONG(&const_AMERICA_value, PHP_DATE_TIMEZONE_GROUP_AMERICA);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1109|      2|	zend_string *const_AMERICA_name = zend_string_init_interned("AMERICA", sizeof("AMERICA") - 1, true);
 1110|      2|	zend_declare_typed_class_constant(class_entry, const_AMERICA_name, &const_AMERICA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_AMERICA_name, &const_AMERICA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1111|      2|	zend_string_release_ex(const_AMERICA_name, true);
 1112|       |
 1113|      2|	zval const_ANTARCTICA_value;
 1114|      2|	ZVAL_LONG(&const_ANTARCTICA_value, PHP_DATE_TIMEZONE_GROUP_ANTARCTICA);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1115|      2|	zend_string *const_ANTARCTICA_name = zend_string_init_interned("ANTARCTICA", sizeof("ANTARCTICA") - 1, true);
 1116|      2|	zend_declare_typed_class_constant(class_entry, const_ANTARCTICA_name, &const_ANTARCTICA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ANTARCTICA_name, &const_ANTARCTICA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1117|      2|	zend_string_release_ex(const_ANTARCTICA_name, true);
 1118|       |
 1119|      2|	zval const_ARCTIC_value;
 1120|      2|	ZVAL_LONG(&const_ARCTIC_value, PHP_DATE_TIMEZONE_GROUP_ARCTIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1121|      2|	zend_string *const_ARCTIC_name = zend_string_init_interned("ARCTIC", sizeof("ARCTIC") - 1, true);
 1122|      2|	zend_declare_typed_class_constant(class_entry, const_ARCTIC_name, &const_ARCTIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ARCTIC_name, &const_ARCTIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1123|      2|	zend_string_release_ex(const_ARCTIC_name, true);
 1124|       |
 1125|      2|	zval const_ASIA_value;
 1126|      2|	ZVAL_LONG(&const_ASIA_value, PHP_DATE_TIMEZONE_GROUP_ASIA);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1127|      2|	zend_string *const_ASIA_name = zend_string_init_interned("ASIA", sizeof("ASIA") - 1, true);
 1128|      2|	zend_declare_typed_class_constant(class_entry, const_ASIA_name, &const_ASIA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ASIA_name, &const_ASIA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1129|      2|	zend_string_release_ex(const_ASIA_name, true);
 1130|       |
 1131|      2|	zval const_ATLANTIC_value;
 1132|      2|	ZVAL_LONG(&const_ATLANTIC_value, PHP_DATE_TIMEZONE_GROUP_ATLANTIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1133|      2|	zend_string *const_ATLANTIC_name = zend_string_init_interned("ATLANTIC", sizeof("ATLANTIC") - 1, true);
 1134|      2|	zend_declare_typed_class_constant(class_entry, const_ATLANTIC_name, &const_ATLANTIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ATLANTIC_name, &const_ATLANTIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1135|      2|	zend_string_release_ex(const_ATLANTIC_name, true);
 1136|       |
 1137|      2|	zval const_AUSTRALIA_value;
 1138|      2|	ZVAL_LONG(&const_AUSTRALIA_value, PHP_DATE_TIMEZONE_GROUP_AUSTRALIA);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1139|      2|	zend_string *const_AUSTRALIA_name = zend_string_init_interned("AUSTRALIA", sizeof("AUSTRALIA") - 1, true);
 1140|      2|	zend_declare_typed_class_constant(class_entry, const_AUSTRALIA_name, &const_AUSTRALIA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_AUSTRALIA_name, &const_AUSTRALIA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1141|      2|	zend_string_release_ex(const_AUSTRALIA_name, true);
 1142|       |
 1143|      2|	zval const_EUROPE_value;
 1144|      2|	ZVAL_LONG(&const_EUROPE_value, PHP_DATE_TIMEZONE_GROUP_EUROPE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1145|      2|	zend_string *const_EUROPE_name = zend_string_init_interned("EUROPE", sizeof("EUROPE") - 1, true);
 1146|      2|	zend_declare_typed_class_constant(class_entry, const_EUROPE_name, &const_EUROPE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_EUROPE_name, &const_EUROPE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1147|      2|	zend_string_release_ex(const_EUROPE_name, true);
 1148|       |
 1149|      2|	zval const_INDIAN_value;
 1150|      2|	ZVAL_LONG(&const_INDIAN_value, PHP_DATE_TIMEZONE_GROUP_INDIAN);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1151|      2|	zend_string *const_INDIAN_name = zend_string_init_interned("INDIAN", sizeof("INDIAN") - 1, true);
 1152|      2|	zend_declare_typed_class_constant(class_entry, const_INDIAN_name, &const_INDIAN_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_INDIAN_name, &const_INDIAN_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1153|      2|	zend_string_release_ex(const_INDIAN_name, true);
 1154|       |
 1155|      2|	zval const_PACIFIC_value;
 1156|      2|	ZVAL_LONG(&const_PACIFIC_value, PHP_DATE_TIMEZONE_GROUP_PACIFIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1157|      2|	zend_string *const_PACIFIC_name = zend_string_init_interned("PACIFIC", sizeof("PACIFIC") - 1, true);
 1158|      2|	zend_declare_typed_class_constant(class_entry, const_PACIFIC_name, &const_PACIFIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PACIFIC_name, &const_PACIFIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1159|      2|	zend_string_release_ex(const_PACIFIC_name, true);
 1160|       |
 1161|      2|	zval const_UTC_value;
 1162|      2|	ZVAL_LONG(&const_UTC_value, PHP_DATE_TIMEZONE_GROUP_UTC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1163|      2|	zend_string *const_UTC_name = zend_string_init_interned("UTC", sizeof("UTC") - 1, true);
 1164|      2|	zend_declare_typed_class_constant(class_entry, const_UTC_name, &const_UTC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_UTC_name, &const_UTC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1165|      2|	zend_string_release_ex(const_UTC_name, true);
 1166|       |
 1167|      2|	zval const_ALL_value;
 1168|      2|	ZVAL_LONG(&const_ALL_value, PHP_DATE_TIMEZONE_GROUP_ALL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1169|      2|	zend_string *const_ALL_name = zend_string_init_interned("ALL", sizeof("ALL") - 1, true);
 1170|      2|	zend_declare_typed_class_constant(class_entry, const_ALL_name, &const_ALL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ALL_name, &const_ALL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1171|      2|	zend_string_release_ex(const_ALL_name, true);
 1172|       |
 1173|      2|	zval const_ALL_WITH_BC_value;
 1174|      2|	ZVAL_LONG(&const_ALL_WITH_BC_value, PHP_DATE_TIMEZONE_GROUP_ALL_W_BC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1175|      2|	zend_string *const_ALL_WITH_BC_name = zend_string_init_interned("ALL_WITH_BC", sizeof("ALL_WITH_BC") - 1, true);
 1176|      2|	zend_declare_typed_class_constant(class_entry, const_ALL_WITH_BC_name, &const_ALL_WITH_BC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ALL_WITH_BC_name, &const_ALL_WITH_BC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1177|      2|	zend_string_release_ex(const_ALL_WITH_BC_name, true);
 1178|       |
 1179|      2|	zval const_PER_COUNTRY_value;
 1180|      2|	ZVAL_LONG(&const_PER_COUNTRY_value, PHP_DATE_TIMEZONE_PER_COUNTRY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1181|      2|	zend_string *const_PER_COUNTRY_name = zend_string_init_interned("PER_COUNTRY", sizeof("PER_COUNTRY") - 1, true);
 1182|      2|	zend_declare_typed_class_constant(class_entry, const_PER_COUNTRY_name, &const_PER_COUNTRY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PER_COUNTRY_name, &const_PER_COUNTRY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1183|      2|	zend_string_release_ex(const_PER_COUNTRY_name, true);
 1184|       |
 1185|       |
 1186|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1187|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1188|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1189|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
 1190|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1191|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1192|       |
 1193|      2|	return class_entry;
 1194|      2|}
php_date.c:register_class_DateInterval:
 1197|      2|{
 1198|      2|	zend_class_entry ce, *class_entry;
 1199|       |
 1200|      2|	INIT_CLASS_ENTRY(ce, "DateInterval", class_DateInterval_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1201|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
 1202|       |
 1203|       |
 1204|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1205|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1206|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1207|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
 1208|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1209|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1210|       |
 1211|      2|	return class_entry;
 1212|      2|}
php_date.c:register_class_DatePeriod:
 1215|      2|{
 1216|      2|	zend_class_entry ce, *class_entry;
 1217|       |
 1218|      2|	INIT_CLASS_ENTRY(ce, "DatePeriod", class_DatePeriod_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1219|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
 1220|      2|	zend_class_implements(class_entry, 1, class_entry_IteratorAggregate);
 1221|       |
 1222|      2|	zval const_EXCLUDE_START_DATE_value;
 1223|      2|	ZVAL_LONG(&const_EXCLUDE_START_DATE_value, PHP_DATE_PERIOD_EXCLUDE_START_DATE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1224|      2|	zend_string *const_EXCLUDE_START_DATE_name = zend_string_init_interned("EXCLUDE_START_DATE", sizeof("EXCLUDE_START_DATE") - 1, true);
 1225|      2|	zend_declare_typed_class_constant(class_entry, const_EXCLUDE_START_DATE_name, &const_EXCLUDE_START_DATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_EXCLUDE_START_DATE_name, &const_EXCLUDE_START_DATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1226|      2|	zend_string_release_ex(const_EXCLUDE_START_DATE_name, true);
 1227|       |
 1228|      2|	zval const_INCLUDE_END_DATE_value;
 1229|      2|	ZVAL_LONG(&const_INCLUDE_END_DATE_value, PHP_DATE_PERIOD_INCLUDE_END_DATE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1230|      2|	zend_string *const_INCLUDE_END_DATE_name = zend_string_init_interned("INCLUDE_END_DATE", sizeof("INCLUDE_END_DATE") - 1, true);
 1231|      2|	zend_declare_typed_class_constant(class_entry, const_INCLUDE_END_DATE_name, &const_INCLUDE_END_DATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_INCLUDE_END_DATE_name, &const_INCLUDE_END_DATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1232|      2|	zend_string_release_ex(const_INCLUDE_END_DATE_name, true);
 1233|       |
 1234|      2|	zval property_start_default_value;
 1235|      2|	ZVAL_UNDEF(&property_start_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1236|      2|	zend_string *property_start_name = zend_string_init("start", sizeof("start") - 1, true);
 1237|      2|	zend_string *property_start_class_DateTimeInterface = zend_string_init("DateTimeInterface", sizeof("DateTimeInterface")-1, 1);
 1238|      2|	zend_declare_typed_property(class_entry, property_start_name, &property_start_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_start_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_start_name, &property_start_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_start_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_start_name, &property_start_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_start_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1239|      2|	zend_string_release_ex(property_start_name, true);
 1240|       |
 1241|      2|	zval property_current_default_value;
 1242|      2|	ZVAL_UNDEF(&property_current_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1243|      2|	zend_string *property_current_name = zend_string_init("current", sizeof("current") - 1, true);
 1244|      2|	zend_string *property_current_class_DateTimeInterface = zend_string_init("DateTimeInterface", sizeof("DateTimeInterface")-1, 1);
 1245|      2|	zend_declare_typed_property(class_entry, property_current_name, &property_current_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_current_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_current_name, &property_current_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_current_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_current_name, &property_current_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_current_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1246|      2|	zend_string_release_ex(property_current_name, true);
 1247|       |
 1248|      2|	zval property_end_default_value;
 1249|      2|	ZVAL_UNDEF(&property_end_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1250|      2|	zend_string *property_end_name = zend_string_init("end", sizeof("end") - 1, true);
 1251|      2|	zend_string *property_end_class_DateTimeInterface = zend_string_init("DateTimeInterface", sizeof("DateTimeInterface")-1, 1);
 1252|      2|	zend_declare_typed_property(class_entry, property_end_name, &property_end_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_end_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_end_name, &property_end_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_end_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_end_name, &property_end_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_end_class_DateTimeInterface, 0, MAY_BE_NULL));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1253|      2|	zend_string_release_ex(property_end_name, true);
 1254|       |
 1255|      2|	zval property_interval_default_value;
 1256|      2|	ZVAL_UNDEF(&property_interval_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1257|      2|	zend_string *property_interval_name = zend_string_init("interval", sizeof("interval") - 1, true);
 1258|      2|	zend_string *property_interval_class_DateInterval = zend_string_init("DateInterval", sizeof("DateInterval")-1, 1);
 1259|      2|	zend_declare_typed_property(class_entry, property_interval_name, &property_interval_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_interval_class_DateInterval, 0, MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_interval_name, &property_interval_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_interval_class_DateInterval, 0, MAY_BE_NULL));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_interval_name, &property_interval_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_interval_class_DateInterval, 0, MAY_BE_NULL));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1260|      2|	zend_string_release_ex(property_interval_name, true);
 1261|       |
 1262|      2|	zval property_recurrences_default_value;
 1263|      2|	ZVAL_UNDEF(&property_recurrences_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1264|      2|	zend_string *property_recurrences_name = zend_string_init("recurrences", sizeof("recurrences") - 1, true);
 1265|      2|	zend_declare_typed_property(class_entry, property_recurrences_name, &property_recurrences_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_recurrences_name, &property_recurrences_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_recurrences_name, &property_recurrences_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1266|      2|	zend_string_release_ex(property_recurrences_name, true);
 1267|       |
 1268|      2|	zval property_include_start_date_default_value;
 1269|      2|	ZVAL_UNDEF(&property_include_start_date_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1270|      2|	zend_string *property_include_start_date_name = zend_string_init("include_start_date", sizeof("include_start_date") - 1, true);
 1271|      2|	zend_declare_typed_property(class_entry, property_include_start_date_name, &property_include_start_date_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_include_start_date_name, &property_include_start_date_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_include_start_date_name, &property_include_start_date_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1272|      2|	zend_string_release_ex(property_include_start_date_name, true);
 1273|       |
 1274|      2|	zval property_include_end_date_default_value;
 1275|      2|	ZVAL_UNDEF(&property_include_end_date_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1276|      2|	zend_string *property_include_end_date_name = zend_string_init("include_end_date", sizeof("include_end_date") - 1, true);
 1277|      2|	zend_declare_typed_property(class_entry, property_include_end_date_name, &property_include_end_date_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_include_end_date_name, &property_include_end_date_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_include_end_date_name, &property_include_end_date_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1278|      2|	zend_string_release_ex(property_include_end_date_name, true);
 1279|       |
 1280|       |
 1281|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1282|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1283|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1284|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
 1285|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1286|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1287|       |
 1288|      2|	return class_entry;
 1289|      2|}
php_date.c:register_class_DateError:
 1292|      2|{
 1293|      2|	zend_class_entry ce, *class_entry;
 1294|       |
 1295|      2|	INIT_CLASS_ENTRY(ce, "DateError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1296|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1297|       |
 1298|      2|	return class_entry;
 1299|      2|}
php_date.c:register_class_DateObjectError:
 1302|      2|{
 1303|      2|	zend_class_entry ce, *class_entry;
 1304|       |
 1305|      2|	INIT_CLASS_ENTRY(ce, "DateObjectError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1306|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateError, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1307|       |
 1308|      2|	return class_entry;
 1309|      2|}
php_date.c:register_class_DateRangeError:
 1312|      2|{
 1313|      2|	zend_class_entry ce, *class_entry;
 1314|       |
 1315|      2|	INIT_CLASS_ENTRY(ce, "DateRangeError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1316|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateError, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1317|       |
 1318|      2|	return class_entry;
 1319|      2|}
php_date.c:register_class_DateException:
 1322|      2|{
 1323|      2|	zend_class_entry ce, *class_entry;
 1324|       |
 1325|      2|	INIT_CLASS_ENTRY(ce, "DateException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1326|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1327|       |
 1328|      2|	return class_entry;
 1329|      2|}
php_date.c:register_class_DateInvalidTimeZoneException:
 1332|      2|{
 1333|      2|	zend_class_entry ce, *class_entry;
 1334|       |
 1335|      2|	INIT_CLASS_ENTRY(ce, "DateInvalidTimeZoneException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1336|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1337|       |
 1338|      2|	return class_entry;
 1339|      2|}
php_date.c:register_class_DateInvalidOperationException:
 1342|      2|{
 1343|      2|	zend_class_entry ce, *class_entry;
 1344|       |
 1345|      2|	INIT_CLASS_ENTRY(ce, "DateInvalidOperationException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1346|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1347|       |
 1348|      2|	return class_entry;
 1349|      2|}
php_date.c:register_class_DateMalformedStringException:
 1352|      2|{
 1353|      2|	zend_class_entry ce, *class_entry;
 1354|       |
 1355|      2|	INIT_CLASS_ENTRY(ce, "DateMalformedStringException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1356|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1357|       |
 1358|      2|	return class_entry;
 1359|      2|}
php_date.c:register_class_DateMalformedIntervalStringException:
 1362|      2|{
 1363|      2|	zend_class_entry ce, *class_entry;
 1364|       |
 1365|      2|	INIT_CLASS_ENTRY(ce, "DateMalformedIntervalStringException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1366|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1367|       |
 1368|      2|	return class_entry;
 1369|      2|}
php_date.c:register_class_DateMalformedPeriodStringException:
 1372|      2|{
 1373|      2|	zend_class_entry ce, *class_entry;
 1374|       |
 1375|      2|	INIT_CLASS_ENTRY(ce, "DateMalformedPeriodStringException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1376|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DateException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
 1377|       |
 1378|      2|	return class_entry;
 1379|      2|}

zm_info_exif:
   68|      1|{
   69|      1|	php_info_print_table_start();
   70|      1|	php_info_print_table_row(2, "EXIF Support", "enabled");
   71|      1|	php_info_print_table_row(2, "Supported EXIF Version", "0220");
   72|      1|	php_info_print_table_row(2, "Supported filetypes", "JPEG, TIFF");
   73|       |
   74|      1|	if (USE_MBSTRING) {
  ------------------
  |  |   38|      1|#define USE_MBSTRING zend_hash_str_exists(&module_registry, "mbstring", sizeof("mbstring")-1)
  |  |  ------------------
  |  |  |  Branch (38:22): [True: 0, False: 1]
  |  |  ------------------
  ------------------
   75|      0|		php_info_print_table_row(2, "Multibyte decoding support using mbstring", "enabled");
   76|      1|	} else {
   77|      1|		php_info_print_table_row(2, "Multibyte decoding support using mbstring", "disabled");
   78|      1|	}
   79|       |
   80|      1|	php_info_print_table_row(2, "Extended EXIF tag formats", "Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson");
   81|      1|	php_info_print_table_end();
   82|       |
   83|      1|	DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      1|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
   84|      1|}
OnUpdateEncode:
  107|      4|{
  108|      4|	if (new_value && ZSTR_LEN(new_value)) {
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (108:6): [True: 4, False: 0]
  ------------------
  109|      2|		const zend_encoding **return_list;
  110|      2|		size_t return_size;
  111|      2|		if (FAILURE == zend_multibyte_parse_encoding_list(ZSTR_VAL(new_value), ZSTR_LEN(new_value),
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if (FAILURE == zend_multibyte_parse_encoding_list(ZSTR_VAL(new_value), ZSTR_LEN(new_value),
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (111:7): [True: 0, False: 2]
  ------------------
  112|      2|	&return_list, &return_size, 0)) {
  113|      0|			php_error_docref(NULL, E_WARNING, "Illegal encoding ignored: '%s'", ZSTR_VAL(new_value));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              			php_error_docref(NULL, E_WARNING, "Illegal encoding ignored: '%s'", ZSTR_VAL(new_value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  114|      0|			return FAILURE;
  115|      0|		}
  116|      2|		pefree((void *) return_list, 0);
  ------------------
  |  |  190|      2|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [Folded, False: 2]
  |  |  ------------------
  ------------------
  117|      2|	}
  118|      4|	return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  119|      4|}
OnUpdateDecode:
  122|      8|{
  123|      8|	if (new_value) {
  ------------------
  |  Branch (123:6): [True: 8, False: 0]
  ------------------
  124|      8|		const zend_encoding **return_list;
  125|      8|		size_t return_size;
  126|      8|		if (FAILURE == zend_multibyte_parse_encoding_list(ZSTR_VAL(new_value), ZSTR_LEN(new_value),
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if (FAILURE == zend_multibyte_parse_encoding_list(ZSTR_VAL(new_value), ZSTR_LEN(new_value),
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (126:7): [True: 0, False: 8]
  ------------------
  127|      8|	&return_list, &return_size, 0)) {
  128|      0|			php_error_docref(NULL, E_WARNING, "Illegal encoding ignored: '%s'", ZSTR_VAL(new_value));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              			php_error_docref(NULL, E_WARNING, "Illegal encoding ignored: '%s'", ZSTR_VAL(new_value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  129|      0|			return FAILURE;
  130|      0|		}
  131|      8|		pefree((void *) return_list, 0);
  ------------------
  |  |  190|      8|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [Folded, False: 8]
  |  |  ------------------
  ------------------
  132|      8|	}
  133|      8|	return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  134|      8|}
zm_startup_exif:
  164|      2|{
  165|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
  166|       |
  167|      2|	register_exif_symbols(module_number);
  168|       |
  169|      2|	return SUCCESS;
  170|      2|}
exif.c:zm_globals_ctor_exif:
  148|      2|{
  149|       |#if defined(COMPILE_DL_EXIF) && defined(ZTS)
  150|       |	ZEND_TSRMLS_CACHE_UPDATE();
  151|       |#endif
  152|      2|	exif_globals->encode_unicode    = NULL;
  153|      2|	exif_globals->decode_unicode_be = NULL;
  154|      2|	exif_globals->decode_unicode_le = NULL;
  155|      2|	exif_globals->encode_jis        = NULL;
  156|      2|	exif_globals->decode_jis_be     = NULL;
  157|      2|	exif_globals->decode_jis_le     = NULL;
  158|       |	exif_globals->tag_table_cache   = NULL;
  159|      2|}

exif.c:register_exif_symbols:
   40|      2|{
   41|      2|	REGISTER_LONG_CONSTANT("EXIF_USE_MBSTRING", USE_MBSTRING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   42|      2|}

php_hash_register_algo:
  114|    120|{
  115|    120|	size_t algo_len = strlen(algo);
  116|    120|	char *lower = zend_str_tolower_dup(algo, algo_len);
  117|    120|	zend_hash_add_ptr(&php_hash_hashtable, zend_string_init_interned(lower, algo_len, 1), (void *) ops);
  118|       |	efree(lower);
  ------------------
  |  |  154|    120|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    120|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    120|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    120|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    120|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|    120|}
zm_startup_hash:
 1581|      2|{
 1582|      2|	zend_hash_init(&php_hash_hashtable, 35, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1583|       |
 1584|      2|	php_hash_register_algo("md2",			&php_hash_md2_ops);
 1585|      2|	php_hash_register_algo("md4",			&php_hash_md4_ops);
 1586|      2|	php_hash_register_algo("md5",			&php_hash_md5_ops);
 1587|      2|	php_hash_register_algo("sha1",			&php_hash_sha1_ops);
 1588|      2|	php_hash_register_algo("sha224",		&php_hash_sha224_ops);
 1589|      2|	php_hash_register_algo("sha256",		&php_hash_sha256_ops);
 1590|      2|	php_hash_register_algo("sha384",		&php_hash_sha384_ops);
 1591|      2|	php_hash_register_algo("sha512/224",            &php_hash_sha512_224_ops);
 1592|      2|	php_hash_register_algo("sha512/256",            &php_hash_sha512_256_ops);
 1593|      2|	php_hash_register_algo("sha512",		&php_hash_sha512_ops);
 1594|      2|	php_hash_register_algo("sha3-224",		&php_hash_sha3_224_ops);
 1595|      2|	php_hash_register_algo("sha3-256",		&php_hash_sha3_256_ops);
 1596|      2|	php_hash_register_algo("sha3-384",		&php_hash_sha3_384_ops);
 1597|      2|	php_hash_register_algo("sha3-512",		&php_hash_sha3_512_ops);
 1598|      2|	php_hash_register_algo("ripemd128",		&php_hash_ripemd128_ops);
 1599|      2|	php_hash_register_algo("ripemd160",		&php_hash_ripemd160_ops);
 1600|      2|	php_hash_register_algo("ripemd256",		&php_hash_ripemd256_ops);
 1601|      2|	php_hash_register_algo("ripemd320",		&php_hash_ripemd320_ops);
 1602|      2|	php_hash_register_algo("whirlpool",		&php_hash_whirlpool_ops);
 1603|      2|	php_hash_register_algo("tiger128,3",	&php_hash_3tiger128_ops);
 1604|      2|	php_hash_register_algo("tiger160,3",	&php_hash_3tiger160_ops);
 1605|      2|	php_hash_register_algo("tiger192,3",	&php_hash_3tiger192_ops);
 1606|      2|	php_hash_register_algo("tiger128,4",	&php_hash_4tiger128_ops);
 1607|      2|	php_hash_register_algo("tiger160,4",	&php_hash_4tiger160_ops);
 1608|      2|	php_hash_register_algo("tiger192,4",	&php_hash_4tiger192_ops);
 1609|      2|	php_hash_register_algo("snefru",		&php_hash_snefru_ops);
 1610|      2|	php_hash_register_algo("snefru256",		&php_hash_snefru_ops);
 1611|      2|	php_hash_register_algo("gost",			&php_hash_gost_ops);
 1612|      2|	php_hash_register_algo("gost-crypto",		&php_hash_gost_crypto_ops);
 1613|      2|	php_hash_register_algo("adler32",		&php_hash_adler32_ops);
 1614|      2|	php_hash_register_algo("crc32",			&php_hash_crc32_ops);
 1615|      2|	php_hash_register_algo("crc32b",		&php_hash_crc32b_ops);
 1616|      2|	php_hash_register_algo("crc32c",		&php_hash_crc32c_ops);
 1617|      2|	php_hash_register_algo("fnv132",		&php_hash_fnv132_ops);
 1618|      2|	php_hash_register_algo("fnv1a32",		&php_hash_fnv1a32_ops);
 1619|      2|	php_hash_register_algo("fnv164",		&php_hash_fnv164_ops);
 1620|      2|	php_hash_register_algo("fnv1a64",		&php_hash_fnv1a64_ops);
 1621|      2|	php_hash_register_algo("joaat",			&php_hash_joaat_ops);
 1622|      2|	php_hash_register_algo("murmur3a",		&php_hash_murmur3a_ops);
 1623|      2|	php_hash_register_algo("murmur3c",		&php_hash_murmur3c_ops);
 1624|      2|	php_hash_register_algo("murmur3f",		&php_hash_murmur3f_ops);
 1625|      2|	php_hash_register_algo("xxh32",		&php_hash_xxh32_ops);
 1626|      2|	php_hash_register_algo("xxh64",		&php_hash_xxh64_ops);
 1627|      2|	php_hash_register_algo("xxh3",		&php_hash_xxh3_64_ops);
 1628|      2|	php_hash_register_algo("xxh128",		&php_hash_xxh3_128_ops);
 1629|       |
 1630|      2|	PHP_HASH_HAVAL_REGISTER(3,128);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1631|      2|	PHP_HASH_HAVAL_REGISTER(3,160);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1632|      2|	PHP_HASH_HAVAL_REGISTER(3,192);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1633|      2|	PHP_HASH_HAVAL_REGISTER(3,224);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1634|      2|	PHP_HASH_HAVAL_REGISTER(3,256);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1635|       |
 1636|      2|	PHP_HASH_HAVAL_REGISTER(4,128);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1637|      2|	PHP_HASH_HAVAL_REGISTER(4,160);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1638|      2|	PHP_HASH_HAVAL_REGISTER(4,192);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1639|      2|	PHP_HASH_HAVAL_REGISTER(4,224);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1640|      2|	PHP_HASH_HAVAL_REGISTER(4,256);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1641|       |
 1642|      2|	PHP_HASH_HAVAL_REGISTER(5,128);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1643|      2|	PHP_HASH_HAVAL_REGISTER(5,160);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1644|      2|	PHP_HASH_HAVAL_REGISTER(5,192);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1645|      2|	PHP_HASH_HAVAL_REGISTER(5,224);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1646|      2|	PHP_HASH_HAVAL_REGISTER(5,256);
  ------------------
  |  | 1140|      2|#define PHP_HASH_HAVAL_REGISTER(p,b)	php_hash_register_algo("haval" #b "," #p , &php_hash_##p##haval##b##_ops);
  ------------------
 1647|       |
 1648|      2|	register_hash_symbols(module_number);
 1649|       |
 1650|      2|	php_hashcontext_ce = register_class_HashContext();
 1651|      2|	php_hashcontext_ce->create_object = php_hashcontext_create;
 1652|       |
 1653|      2|	memcpy(&php_hashcontext_handlers, &std_object_handlers,
 1654|      2|	       sizeof(zend_object_handlers));
 1655|      2|	php_hashcontext_handlers.offset = offsetof(php_hashcontext_object, std);
 1656|      2|	php_hashcontext_handlers.free_obj = php_hashcontext_free;
 1657|      2|	php_hashcontext_handlers.clone_obj = php_hashcontext_clone;
 1658|       |
 1659|       |#ifdef PHP_MHASH_BC
 1660|       |	mhash_init(INIT_FUNC_ARGS_PASSTHRU);
 1661|       |#endif
 1662|       |
 1663|      2|	return SUCCESS;
 1664|      2|}
zm_info_hash:
 1678|      1|{
 1679|      1|	char buffer[2048];
 1680|      1|	zend_string *str;
 1681|      1|	char *s = buffer, *e = s + sizeof(buffer);
 1682|       |
 1683|    122|	ZEND_HASH_MAP_FOREACH_STR_KEY(&php_hash_hashtable, str) {
  ------------------
  |  | 1361|     60|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     61|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 60, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     60|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     60|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     60|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 60]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     60|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     60|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 60]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|     60|	_key = _p->key;
  ------------------
  |  Branch (1683:2): [True: 0, False: 1]
  |  Branch (1683:2): [True: 1, False: 0]
  ------------------
 1684|    122|		s += slprintf(s, e - s, "%s ", ZSTR_VAL(str));
  ------------------
  |  |   87|     60|#define slprintf ap_php_slprintf
  ------------------
              		s += slprintf(s, e - s, "%s ", ZSTR_VAL(str));
  ------------------
  |  |   67|     60|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1685|    122|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     60|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1686|      1|	*s = 0;
 1687|       |
 1688|      1|	php_info_print_table_start();
 1689|      1|	php_info_print_table_row(2, "hash support", "enabled");
 1690|      1|	php_info_print_table_row(2, "Hashing Engines", buffer);
 1691|      1|	php_info_print_table_end();
 1692|       |
 1693|       |#ifdef PHP_MHASH_BC
 1694|       |	php_info_print_table_start();
 1695|       |	php_info_print_table_row(2, "MHASH support", "Enabled");
 1696|       |	php_info_print_table_row(2, "MHASH API Version", "Emulated Support");
 1697|       |	php_info_print_table_end();
 1698|       |#endif
 1699|       |
 1700|      1|}
hash.c:php_hashcontext_dtor:
 1377|      2|static void php_hashcontext_dtor(zend_object *obj) {
 1378|      2|	php_hashcontext_object *hash = php_hashcontext_from_object(obj);
 1379|       |
 1380|      2|	if (hash->context) {
  ------------------
  |  Branch (1380:6): [True: 0, False: 2]
  ------------------
 1381|      0|		efree(hash->context);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1382|      0|		hash->context = NULL;
 1383|      0|	}
 1384|       |
 1385|      2|	if (hash->key) {
  ------------------
  |  Branch (1385:6): [True: 0, False: 2]
  ------------------
 1386|      0|		ZEND_SECURE_ZERO(hash->key, hash->ops->block_size);
  ------------------
  |  |  564|      0|#define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size))
  ------------------
 1387|      0|		efree(hash->key);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1388|       |		hash->key = NULL;
 1389|      0|	}
 1390|      2|}
hash.c:php_hashcontext_create:
 1364|      2|static zend_object* php_hashcontext_create(zend_class_entry *ce) {
 1365|      2|	php_hashcontext_object *objval = zend_object_alloc(sizeof(php_hashcontext_object), ce);
 1366|      2|	zend_object *zobj = &objval->std;
 1367|       |
 1368|      2|	zend_object_std_init(zobj, ce);
 1369|      2|	object_properties_init(zobj, ce);
 1370|      2|	zobj->handlers = &php_hashcontext_handlers;
 1371|       |
 1372|      2|	return zobj;
 1373|      2|}
hash.c:php_hashcontext_free:
 1393|      2|static void php_hashcontext_free(zend_object *obj) {
 1394|      2|	php_hashcontext_dtor(obj);
 1395|      2|	zend_object_std_dtor(obj);
 1396|      2|}

hash.c:register_hash_symbols:
  192|      2|{
  193|      2|	REGISTER_LONG_CONSTANT("HASH_HMAC", PHP_HASH_HMAC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  194|       |
  195|       |
  196|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_hmac", sizeof("hash_hmac") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  197|       |
  198|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_hmac_file", sizeof("hash_hmac_file") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  199|       |
  200|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_init", sizeof("hash_init") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  201|       |
  202|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_pbkdf2", sizeof("hash_pbkdf2") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  203|       |
  204|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_equals", sizeof("hash_equals") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  205|       |
  206|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_equals", sizeof("hash_equals") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  207|       |
  208|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_hkdf", sizeof("hash_hkdf") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  209|       |#if defined(PHP_MHASH_BC)
  210|       |
  211|       |	zend_attribute *attribute_Deprecated_func_mhash_get_block_size_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mhash_get_block_size", sizeof("mhash_get_block_size") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  212|       |	ZVAL_STR(&attribute_Deprecated_func_mhash_get_block_size_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  213|       |	attribute_Deprecated_func_mhash_get_block_size_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  214|       |
  215|       |	zend_attribute *attribute_Deprecated_func_mhash_get_hash_name_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mhash_get_hash_name", sizeof("mhash_get_hash_name") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  216|       |	ZVAL_STR(&attribute_Deprecated_func_mhash_get_hash_name_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  217|       |	attribute_Deprecated_func_mhash_get_hash_name_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  218|       |
  219|       |	zend_attribute *attribute_Deprecated_func_mhash_keygen_s2k_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mhash_keygen_s2k", sizeof("mhash_keygen_s2k") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  220|       |	ZVAL_STR(&attribute_Deprecated_func_mhash_keygen_s2k_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  221|       |	attribute_Deprecated_func_mhash_keygen_s2k_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  222|       |
  223|       |	zend_attribute *attribute_Deprecated_func_mhash_count_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mhash_count", sizeof("mhash_count") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  224|       |	ZVAL_STR(&attribute_Deprecated_func_mhash_count_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  225|       |	attribute_Deprecated_func_mhash_count_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  226|       |
  227|       |	zend_attribute *attribute_Deprecated_func_mhash_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "mhash", sizeof("mhash") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  228|       |	ZVAL_STR(&attribute_Deprecated_func_mhash_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  229|       |	attribute_Deprecated_func_mhash_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  230|       |#endif
  231|      2|}
hash.c:register_class_HashContext:
  234|      2|{
  235|      2|	zend_class_entry ce, *class_entry;
  236|       |
  237|      2|	INIT_CLASS_ENTRY(ce, "HashContext", class_HashContext_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  238|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  239|       |
  240|      2|	return class_entry;
  241|      2|}

hash.c:php_hashcontext_from_object:
   73|      2|static inline php_hashcontext_object *php_hashcontext_from_object(zend_object *obj) {
   74|      2|	return ((php_hashcontext_object*)(obj + 1)) - 1;
   75|      2|}
zend_system_id.c:php_hash_bin2hex:
  168|      2|{
  169|      2|	static const char hexits[17] = "0123456789abcdef";
  170|      2|	size_t i;
  171|       |
  172|     34|	for(i = 0; i < in_len; i++) {
  ------------------
  |  Branch (172:13): [True: 32, False: 2]
  ------------------
  173|     32|		out[i * 2]       = hexits[in[i] >> 4];
  174|     32|		out[(i * 2) + 1] = hexits[in[i] &  0x0F];
  175|     32|	}
  176|      2|}

zif_json_encode:
  247|      2|{
  248|      2|	zval *parameter;
  249|      2|	php_json_encoder encoder;
  250|      2|	smart_str buf = {0};
  251|      2|	zend_long options = 0;
  252|      2|	zend_long depth = PHP_JSON_PARSER_DEFAULT_DEPTH;
  ------------------
  |  |   81|      2|#define PHP_JSON_PARSER_DEFAULT_DEPTH 512
  ------------------
  253|       |
  254|      6|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  255|      8|		Z_PARAM_ZVAL(parameter)
  ------------------
  |  | 2116|      2|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      2|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      2|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      2|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (255:3): [True: 2, False: 0]
  |  Branch (255:3): [True: 0, False: 0]
  |  Branch (255:3): [True: 2, False: 0]
  |  Branch (255:3): [True: 0, False: 0]
  |  Branch (255:3): [True: 2, False: 0]
  |  Branch (255:3): [True: 0, False: 0]
  |  Branch (255:3): [True: 0, False: 2]
  |  Branch (255:3): [True: 2, False: 0]
  |  Branch (255:3): [True: 0, False: 0]
  |  Branch (255:3): [True: 0, False: 0]
  ------------------
  256|      8|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  257|      8|		Z_PARAM_LONG(options)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (257:3): [True: 2, False: 0]
  |  Branch (257:3): [True: 0, False: 0]
  |  Branch (257:3): [True: 0, False: 2]
  |  Branch (257:3): [True: 2, False: 0]
  |  Branch (257:3): [True: 2, False: 0]
  |  Branch (257:3): [True: 0, False: 0]
  |  Branch (257:3): [True: 2, False: 0]
  |  Branch (257:3): [True: 0, False: 0]
  |  Branch (257:3): [True: 0, False: 0]
  |  Branch (257:3): [True: 0, False: 0]
  ------------------
  258|      0|		Z_PARAM_LONG(depth)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  |  Branch (258:3): [True: 0, False: 0]
  ------------------
  259|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (259:2): [True: 0, False: 0]
  |  Branch (259:2): [True: 0, False: 0]
  |  Branch (259:2): [True: 0, False: 0]
  |  Branch (259:2): [True: 0, False: 0]
  ------------------
  260|       |
  261|      2|	php_json_encode_init(&encoder);
  262|      2|	encoder.max_depth = (int)depth;
  263|      2|	php_json_encode_zval(&buf, parameter, (int)options, &encoder);
  264|       |
  265|      2|	if (!(options & PHP_JSON_THROW_ON_ERROR) || (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   78|      2|#define PHP_JSON_THROW_ON_ERROR             (1<<22)
  ------------------
              	if (!(options & PHP_JSON_THROW_ON_ERROR) || (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (265:6): [True: 2, False: 0]
  |  Branch (265:46): [True: 0, False: 0]
  ------------------
  266|      2|		JSON_G(error_code) = encoder.error_code;
  ------------------
  |  |   92|      2|#define JSON_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(json, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  267|      2|		if (encoder.error_code != PHP_JSON_ERROR_NONE && !(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (267:7): [True: 0, False: 2]
  |  Branch (267:52): [True: 0, False: 0]
  ------------------
  268|      0|			smart_str_free(&buf);
  269|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  270|      0|		}
  271|      2|	} else {
  272|      0|		if (encoder.error_code != PHP_JSON_ERROR_NONE) {
  ------------------
  |  Branch (272:7): [True: 0, False: 0]
  ------------------
  273|      0|			smart_str_free(&buf);
  274|      0|			zend_throw_exception(php_json_exception_ce, php_json_get_error_msg(encoder.error_code), encoder.error_code);
  275|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (275:4): [True: 0, False: 0]
  |  Branch (275:4): [True: 0, False: 0]
  ------------------
  276|      0|		}
  277|      0|	}
  278|       |
  279|      2|	RETURN_STR(smart_str_extract(&buf));
  ------------------
  |  | 1050|      2|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  280|      2|}
json.c:zm_startup_json:
   44|      2|{
   45|      2|	php_json_serializable_ce = register_class_JsonSerializable();
   46|      2|	php_json_serializable_ce->interface_gets_implemented = php_json_implement_json_serializable;
   47|       |
   48|      2|	php_json_exception_ce = register_class_JsonException(zend_ce_exception);
   49|       |
   50|      2|	register_json_symbols(module_number);
   51|       |
   52|      2|	return SUCCESS;
   53|      2|}
json.c:php_json_implement_json_serializable:
   37|      2|{
   38|      2|	class_type->ce_flags |= ZEND_ACC_USE_GUARDS;
  ------------------
  |  |  295|      2|#define ZEND_ACC_USE_GUARDS              (1 << 30) /*  X  |     |     |     */
  ------------------
   39|      2|	return SUCCESS;
   40|      2|}
json.c:zm_activate_json:
   71|  33.5k|{
   72|  33.5k|	JSON_G(error_code) = 0;
  ------------------
  |  |   92|  33.5k|#define JSON_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(json, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
   73|  33.5k|	JSON_G(error_line) = 0;
  ------------------
  |  |   92|  33.5k|#define JSON_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(json, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
   74|  33.5k|	JSON_G(error_column) = 0;
  ------------------
  |  |   92|  33.5k|#define JSON_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(json, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
   75|  33.5k|	return SUCCESS;
   76|  33.5k|}
json.c:zm_globals_ctor_json:
   58|      2|{
   59|       |#if defined(COMPILE_DL_JSON) && defined(ZTS)
   60|       |	ZEND_TSRMLS_CACHE_UPDATE();
   61|       |#endif
   62|      2|	json_globals->encoder_depth = 0;
   63|      2|	json_globals->error_code = 0;
   64|      2|	json_globals->error_line = 0;
   65|      2|	json_globals->error_column = 0;
   66|      2|	json_globals->encode_max_depth = PHP_JSON_PARSER_DEFAULT_DEPTH;
  ------------------
  |  |   81|      2|#define PHP_JSON_PARSER_DEFAULT_DEPTH 512
  ------------------
   67|      2|}
json.c:zm_info_json:
  106|      1|{
  107|      1|	php_info_print_table_start();
  108|      1|	php_info_print_table_row(2, "json support", "enabled");
  109|      1|	php_info_print_table_end();
  110|      1|}

json.c:register_class_JsonSerializable:
   86|      2|{
   87|      2|	zend_class_entry ce, *class_entry;
   88|       |
   89|      2|	INIT_CLASS_ENTRY(ce, "JsonSerializable", class_JsonSerializable_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   90|      2|	class_entry = zend_register_internal_interface(&ce);
   91|       |
   92|      2|	return class_entry;
   93|      2|}
json.c:register_class_JsonException:
   96|      2|{
   97|      2|	zend_class_entry ce, *class_entry;
   98|       |
   99|      2|	INIT_CLASS_ENTRY(ce, "JsonException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  100|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
  101|       |
  102|      2|	return class_entry;
  103|      2|}
json.c:register_json_symbols:
   53|      2|{
   54|      2|	REGISTER_LONG_CONSTANT("JSON_HEX_TAG", PHP_JSON_HEX_TAG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   55|      2|	REGISTER_LONG_CONSTANT("JSON_HEX_AMP", PHP_JSON_HEX_AMP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   56|      2|	REGISTER_LONG_CONSTANT("JSON_HEX_APOS", PHP_JSON_HEX_APOS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   57|      2|	REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   58|      2|	REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   59|      2|	REGISTER_LONG_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   60|      2|	REGISTER_LONG_CONSTANT("JSON_UNESCAPED_SLASHES", PHP_JSON_UNESCAPED_SLASHES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   61|      2|	REGISTER_LONG_CONSTANT("JSON_PRETTY_PRINT", PHP_JSON_PRETTY_PRINT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   62|      2|	REGISTER_LONG_CONSTANT("JSON_UNESCAPED_UNICODE", PHP_JSON_UNESCAPED_UNICODE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   63|      2|	REGISTER_LONG_CONSTANT("JSON_PARTIAL_OUTPUT_ON_ERROR", PHP_JSON_PARTIAL_OUTPUT_ON_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   64|      2|	REGISTER_LONG_CONSTANT("JSON_PRESERVE_ZERO_FRACTION", PHP_JSON_PRESERVE_ZERO_FRACTION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   65|      2|	REGISTER_LONG_CONSTANT("JSON_UNESCAPED_LINE_TERMINATORS", PHP_JSON_UNESCAPED_LINE_TERMINATORS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   66|      2|	REGISTER_LONG_CONSTANT("JSON_OBJECT_AS_ARRAY", PHP_JSON_OBJECT_AS_ARRAY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   67|      2|	REGISTER_LONG_CONSTANT("JSON_BIGINT_AS_STRING", PHP_JSON_BIGINT_AS_STRING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   68|      2|	REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_IGNORE", PHP_JSON_INVALID_UTF8_IGNORE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   69|      2|	REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_SUBSTITUTE", PHP_JSON_INVALID_UTF8_SUBSTITUTE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   70|      2|	REGISTER_LONG_CONSTANT("JSON_THROW_ON_ERROR", PHP_JSON_THROW_ON_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   71|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   72|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   73|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_STATE_MISMATCH", PHP_JSON_ERROR_STATE_MISMATCH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   74|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_CTRL_CHAR", PHP_JSON_ERROR_CTRL_CHAR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   75|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_SYNTAX", PHP_JSON_ERROR_SYNTAX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   76|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_UTF8", PHP_JSON_ERROR_UTF8, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   77|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_RECURSION", PHP_JSON_ERROR_RECURSION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   78|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_INF_OR_NAN", PHP_JSON_ERROR_INF_OR_NAN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   79|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_UNSUPPORTED_TYPE", PHP_JSON_ERROR_UNSUPPORTED_TYPE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   80|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_INVALID_PROPERTY_NAME", PHP_JSON_ERROR_INVALID_PROPERTY_NAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   81|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_UTF16", PHP_JSON_ERROR_UTF16, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   82|      2|	REGISTER_LONG_CONSTANT("JSON_ERROR_NON_BACKED_ENUM", PHP_JSON_ERROR_NON_BACKED_ENUM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   83|      2|}

php_json_escape_string:
  352|      3|{
  353|      3|	size_t pos, checkpoint;
  354|      3|	char *dst;
  355|       |
  356|      3|	if (len == 0) {
  ------------------
  |  Branch (356:6): [True: 0, False: 3]
  ------------------
  357|      0|		smart_str_appendl(buf, "\"\"", 2);
  358|      0|		return SUCCESS;
  359|      0|	}
  360|       |
  361|      3|	if (options & PHP_JSON_NUMERIC_CHECK) {
  ------------------
  |  |   65|      3|#define PHP_JSON_NUMERIC_CHECK              (1<<5)
  ------------------
  |  Branch (361:6): [True: 0, False: 3]
  ------------------
  362|      0|		double d;
  363|      0|		int type;
  364|      0|		zend_long p;
  365|       |
  366|      0|		if ((type = is_numeric_string(s, len, &p, &d, 0)) != 0) {
  ------------------
  |  Branch (366:7): [True: 0, False: 0]
  ------------------
  367|      0|			if (type == IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (367:8): [True: 0, False: 0]
  ------------------
  368|      0|				smart_str_append_long(buf, p);
  369|      0|				return SUCCESS;
  370|      0|			} else if (type == IS_DOUBLE && php_json_is_valid_double(d)) {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (370:15): [True: 0, False: 0]
  |  Branch (370:36): [True: 0, False: 0]
  ------------------
  371|      0|				php_json_encode_double(buf, d, options);
  372|      0|				return SUCCESS;
  373|      0|			}
  374|      0|		}
  375|       |
  376|      0|	}
  377|      3|	checkpoint = buf->s ? ZSTR_LEN(buf->s) : 0;
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (377:15): [True: 3, False: 0]
  ------------------
  378|       |
  379|       |	/* pre-allocate for string length plus 2 quotes */
  380|      3|	smart_str_alloc(buf, len+2, 0);
  381|      3|	smart_str_appendc(buf, '"');
  382|       |
  383|      3|	pos = 0;
  384|       |
  385|      6|	do {
  386|      6|		static const uint32_t charmap[8] = {
  387|      6|			0xffffffff, 0x500080c4, 0x10000000, 0x00000000,
  388|      6|			0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff};
  389|       |
  390|      6|		unsigned int us = (unsigned char)s[pos];
  391|      6|		if (EXPECTED(!ZEND_BIT_TEST(charmap, us))) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  392|      6|			pos++;
  393|      6|			len--;
  394|      6|			if (len == 0) {
  ------------------
  |  Branch (394:8): [True: 3, False: 3]
  ------------------
  395|      3|				smart_str_appendl(buf, s, pos);
  396|      3|				break;
  397|      3|			}
  398|      6|		} else {
  399|      0|			if (pos) {
  ------------------
  |  Branch (399:8): [True: 0, False: 0]
  ------------------
  400|      0|				smart_str_appendl(buf, s, pos);
  401|      0|				s += pos;
  402|      0|				pos = 0;
  403|      0|			}
  404|      0|			us = (unsigned char)s[0];
  405|      0|			if (UNEXPECTED(us >= 0x80)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  406|      0|				zend_result status;
  407|      0|				us = php_next_utf8_char((unsigned char *)s, len, &pos, &status);
  408|       |
  409|       |				/* check whether UTF8 character is correct */
  410|      0|				if (UNEXPECTED(status != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  411|      0|					if (options & PHP_JSON_INVALID_UTF8_IGNORE) {
  ------------------
  |  |   74|      0|#define PHP_JSON_INVALID_UTF8_IGNORE        (1<<20)
  ------------------
  |  Branch (411:10): [True: 0, False: 0]
  ------------------
  412|       |						/* ignore invalid UTF8 character */
  413|      0|					} else if (options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) {
  ------------------
  |  |   77|      0|#define PHP_JSON_INVALID_UTF8_SUBSTITUTE    (1<<21)
  ------------------
  |  Branch (413:17): [True: 0, False: 0]
  ------------------
  414|       |						/* Use Unicode character 'REPLACEMENT CHARACTER' (U+FFFD) */
  415|      0|						if (options & PHP_JSON_UNESCAPED_UNICODE) {
  ------------------
  |  |   68|      0|#define PHP_JSON_UNESCAPED_UNICODE          (1<<8)
  ------------------
  |  Branch (415:11): [True: 0, False: 0]
  ------------------
  416|      0|							smart_str_appendl(buf, "\xef\xbf\xbd", 3);
  417|      0|						} else {
  418|      0|							smart_str_appendl(buf, "\\ufffd", 6);
  419|      0|						}
  420|      0|					} else {
  421|      0|						ZSTR_LEN(buf->s) = checkpoint;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  422|      0|						encoder->error_code = PHP_JSON_ERROR_UTF8;
  423|      0|						if (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (423:11): [True: 0, False: 0]
  ------------------
  424|      0|							smart_str_appendl(buf, "null", 4);
  425|      0|						}
  426|      0|						return FAILURE;
  427|      0|					}
  428|       |
  429|       |				/* Escape U+2028/U+2029 line terminators, UNLESS both
  430|       |				   JSON_UNESCAPED_UNICODE and
  431|       |				   JSON_UNESCAPED_LINE_TERMINATORS were provided */
  432|      0|				} else if ((options & PHP_JSON_UNESCAPED_UNICODE)
  ------------------
  |  |   68|      0|#define PHP_JSON_UNESCAPED_UNICODE          (1<<8)
  ------------------
  |  Branch (432:16): [True: 0, False: 0]
  ------------------
  433|      0|				    && ((options & PHP_JSON_UNESCAPED_LINE_TERMINATORS)
  ------------------
  |  |   71|      0|#define PHP_JSON_UNESCAPED_LINE_TERMINATORS (1<<11)
  ------------------
  |  Branch (433:13): [True: 0, False: 0]
  ------------------
  434|      0|						|| us < 0x2028 || us > 0x2029)) {
  ------------------
  |  Branch (434:10): [True: 0, False: 0]
  |  Branch (434:25): [True: 0, False: 0]
  ------------------
  435|      0|					smart_str_appendl(buf, s, pos);
  436|      0|				} else {
  437|       |					/* From http://en.wikipedia.org/wiki/UTF16 */
  438|      0|					if (us >= 0x10000) {
  ------------------
  |  Branch (438:10): [True: 0, False: 0]
  ------------------
  439|      0|						unsigned int next_us;
  440|       |
  441|      0|						us -= 0x10000;
  442|      0|						next_us = (unsigned short)((us & 0x3ff) | 0xdc00);
  443|      0|						us = (unsigned short)((us >> 10) | 0xd800);
  444|      0|						dst = smart_str_extend(buf, 6);
  445|      0|						dst[0] = '\\';
  446|      0|						dst[1] = 'u';
  447|      0|						dst[2] = digits[(us >> 12) & 0xf];
  448|      0|						dst[3] = digits[(us >> 8) & 0xf];
  449|      0|						dst[4] = digits[(us >> 4) & 0xf];
  450|      0|						dst[5] = digits[us & 0xf];
  451|      0|						us = next_us;
  452|      0|					}
  453|      0|					dst = smart_str_extend(buf, 6);
  454|      0|					dst[0] = '\\';
  455|      0|					dst[1] = 'u';
  456|      0|					dst[2] = digits[(us >> 12) & 0xf];
  457|      0|					dst[3] = digits[(us >> 8) & 0xf];
  458|      0|					dst[4] = digits[(us >> 4) & 0xf];
  459|      0|					dst[5] = digits[us & 0xf];
  460|      0|				}
  461|      0|				s += pos;
  462|      0|				len -= pos;
  463|      0|				pos = 0;
  464|      0|			} else {
  465|      0|				s++;
  466|      0|				switch (us) {
  467|      0|					case '"':
  ------------------
  |  Branch (467:6): [True: 0, False: 0]
  ------------------
  468|      0|						if (options & PHP_JSON_HEX_QUOT) {
  ------------------
  |  |   63|      0|#define PHP_JSON_HEX_QUOT                   (1<<3)
  ------------------
  |  Branch (468:11): [True: 0, False: 0]
  ------------------
  469|      0|							smart_str_appendl(buf, "\\u0022", 6);
  470|      0|						} else {
  471|      0|							smart_str_appendl(buf, "\\\"", 2);
  472|      0|						}
  473|      0|						break;
  474|       |
  475|      0|					case '\\':
  ------------------
  |  Branch (475:6): [True: 0, False: 0]
  ------------------
  476|      0|						smart_str_appendl(buf, "\\\\", 2);
  477|      0|						break;
  478|       |
  479|      0|					case '/':
  ------------------
  |  Branch (479:6): [True: 0, False: 0]
  ------------------
  480|      0|						if (options & PHP_JSON_UNESCAPED_SLASHES) {
  ------------------
  |  |   66|      0|#define PHP_JSON_UNESCAPED_SLASHES          (1<<6)
  ------------------
  |  Branch (480:11): [True: 0, False: 0]
  ------------------
  481|      0|							smart_str_appendc(buf, '/');
  482|      0|						} else {
  483|      0|							smart_str_appendl(buf, "\\/", 2);
  484|      0|						}
  485|      0|						break;
  486|       |
  487|      0|					case '\b':
  ------------------
  |  Branch (487:6): [True: 0, False: 0]
  ------------------
  488|      0|						smart_str_appendl(buf, "\\b", 2);
  489|      0|						break;
  490|       |
  491|      0|					case '\f':
  ------------------
  |  Branch (491:6): [True: 0, False: 0]
  ------------------
  492|      0|						smart_str_appendl(buf, "\\f", 2);
  493|      0|						break;
  494|       |
  495|      0|					case '\n':
  ------------------
  |  Branch (495:6): [True: 0, False: 0]
  ------------------
  496|      0|						smart_str_appendl(buf, "\\n", 2);
  497|      0|						break;
  498|       |
  499|      0|					case '\r':
  ------------------
  |  Branch (499:6): [True: 0, False: 0]
  ------------------
  500|      0|						smart_str_appendl(buf, "\\r", 2);
  501|      0|						break;
  502|       |
  503|      0|					case '\t':
  ------------------
  |  Branch (503:6): [True: 0, False: 0]
  ------------------
  504|      0|						smart_str_appendl(buf, "\\t", 2);
  505|      0|						break;
  506|       |
  507|      0|					case '<':
  ------------------
  |  Branch (507:6): [True: 0, False: 0]
  ------------------
  508|      0|						if (options & PHP_JSON_HEX_TAG) {
  ------------------
  |  |   60|      0|#define PHP_JSON_HEX_TAG                    (1<<0)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|							smart_str_appendl(buf, "\\u003C", 6);
  510|      0|						} else {
  511|      0|							smart_str_appendc(buf, '<');
  512|      0|						}
  513|      0|						break;
  514|       |
  515|      0|					case '>':
  ------------------
  |  Branch (515:6): [True: 0, False: 0]
  ------------------
  516|      0|						if (options & PHP_JSON_HEX_TAG) {
  ------------------
  |  |   60|      0|#define PHP_JSON_HEX_TAG                    (1<<0)
  ------------------
  |  Branch (516:11): [True: 0, False: 0]
  ------------------
  517|      0|							smart_str_appendl(buf, "\\u003E", 6);
  518|      0|						} else {
  519|      0|							smart_str_appendc(buf, '>');
  520|      0|						}
  521|      0|						break;
  522|       |
  523|      0|					case '&':
  ------------------
  |  Branch (523:6): [True: 0, False: 0]
  ------------------
  524|      0|						if (options & PHP_JSON_HEX_AMP) {
  ------------------
  |  |   61|      0|#define PHP_JSON_HEX_AMP                    (1<<1)
  ------------------
  |  Branch (524:11): [True: 0, False: 0]
  ------------------
  525|      0|							smart_str_appendl(buf, "\\u0026", 6);
  526|      0|						} else {
  527|      0|							smart_str_appendc(buf, '&');
  528|      0|						}
  529|      0|						break;
  530|       |
  531|      0|					case '\'':
  ------------------
  |  Branch (531:6): [True: 0, False: 0]
  ------------------
  532|      0|						if (options & PHP_JSON_HEX_APOS) {
  ------------------
  |  |   62|      0|#define PHP_JSON_HEX_APOS                   (1<<2)
  ------------------
  |  Branch (532:11): [True: 0, False: 0]
  ------------------
  533|      0|							smart_str_appendl(buf, "\\u0027", 6);
  534|      0|						} else {
  535|      0|							smart_str_appendc(buf, '\'');
  536|      0|						}
  537|      0|						break;
  538|       |
  539|      0|					default:
  ------------------
  |  Branch (539:6): [True: 0, False: 0]
  ------------------
  540|      0|						ZEND_ASSERT(us < ' ');
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (540:7): [True: 0, False: 0]
  |  Branch (540:7): [True: 0, False: 0]
  ------------------
  541|      0|						dst = smart_str_extend(buf, 6);
  542|      0|						dst[0] = '\\';
  543|      0|						dst[1] = 'u';
  544|      0|						dst[2] = '0';
  545|      0|						dst[3] = '0';
  546|      0|						dst[4] = digits[(us >> 4) & 0xf];
  547|      0|						dst[5] = digits[us & 0xf];
  548|      0|						break;
  549|      0|				}
  550|      0|				len--;
  551|      0|			}
  552|      0|		}
  553|      6|	} while (len);
  ------------------
  |  Branch (553:11): [True: 3, False: 0]
  ------------------
  554|       |
  555|      3|	smart_str_appendc(buf, '"');
  556|       |
  557|      3|	return SUCCESS;
  558|      3|}
php_json_encode_zval:
  621|      5|{
  622|      6|again:
  623|      6|	switch (Z_TYPE_P(val))
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  624|      6|	{
  625|      2|		case IS_NULL:
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (625:3): [True: 2, False: 4]
  ------------------
  626|      2|			smart_str_appendl(buf, "null", 4);
  627|      2|			break;
  628|       |
  629|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (629:3): [True: 0, False: 6]
  ------------------
  630|      0|			smart_str_appendl(buf, "true", 4);
  631|      0|			break;
  632|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (632:3): [True: 0, False: 6]
  ------------------
  633|      0|			smart_str_appendl(buf, "false", 5);
  634|      0|			break;
  635|       |
  636|      1|		case IS_LONG:
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (636:3): [True: 1, False: 5]
  ------------------
  637|      1|			smart_str_append_long(buf, Z_LVAL_P(val));
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  638|      1|			break;
  639|       |
  640|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (640:3): [True: 0, False: 6]
  ------------------
  641|      0|			if (php_json_is_valid_double(Z_DVAL_P(val))) {
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  |  Branch (641:8): [True: 0, False: 0]
  ------------------
  642|      0|				php_json_encode_double(buf, Z_DVAL_P(val), options);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  643|      0|			} else {
  644|      0|				encoder->error_code = PHP_JSON_ERROR_INF_OR_NAN;
  645|      0|				smart_str_appendc(buf, '0');
  646|      0|			}
  647|      0|			break;
  648|       |
  649|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (649:3): [True: 0, False: 6]
  ------------------
  650|      0|			return php_json_escape_string(buf, Z_STRVAL_P(val), Z_STRLEN_P(val), options, encoder);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			return php_json_escape_string(buf, Z_STRVAL_P(val), Z_STRLEN_P(val), options, encoder);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  651|       |
  652|      2|		case IS_OBJECT:
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (652:3): [True: 2, False: 4]
  ------------------
  653|      2|			if (instanceof_function(Z_OBJCE_P(val), php_json_serializable_ce)) {
  ------------------
  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (653:8): [True: 0, False: 2]
  ------------------
  654|      0|				return php_json_encode_serializable_object(buf, Z_OBJ_P(val), options, encoder);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  655|      0|			}
  656|      2|			if (Z_OBJCE_P(val)->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJCE_P(val)->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|      2|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (656:8): [True: 0, False: 2]
  ------------------
  657|      0|				return php_json_encode_serializable_enum(buf, val, options, encoder);
  658|      0|			}
  659|       |			/* fallthrough -- Non-serializable object */
  660|      2|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      2|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  661|      2|		case IS_ARRAY: {
  ------------------
  |  |  613|      2|#define IS_ARRAY					7
  ------------------
  |  Branch (661:3): [True: 0, False: 6]
  ------------------
  662|       |			/* Avoid modifications (and potential freeing) of the array through a reference when a
  663|       |			 * jsonSerialize() method is invoked. */
  664|      2|			zval zv;
  665|      2|			zend_result res;
  666|      2|			ZVAL_COPY(&zv, val);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  667|      2|			res = php_json_encode_array(buf, &zv, options, encoder);
  668|      2|			zval_ptr_dtor_nogc(&zv);
  669|      2|			return res;
  670|      2|		}
  671|       |
  672|      1|		case IS_REFERENCE:
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (672:3): [True: 1, False: 5]
  ------------------
  673|      1|			val = Z_REFVAL_P(val);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  674|      1|			goto again;
  675|       |
  676|      0|		default:
  ------------------
  |  Branch (676:3): [True: 0, False: 6]
  ------------------
  677|      0|			encoder->error_code = PHP_JSON_ERROR_UNSUPPORTED_TYPE;
  678|      0|			if (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (678:8): [True: 0, False: 0]
  ------------------
  679|      0|				smart_str_appendl(buf, "null", 4);
  680|      0|			}
  681|      0|			return FAILURE;
  682|      6|	}
  683|       |
  684|      3|	return SUCCESS;
  685|      6|}
json_encoder.c:php_json_encode_array:
  109|      2|{
  110|      2|	bool encode_as_object = options & PHP_JSON_FORCE_OBJECT;
  ------------------
  |  |   64|      2|#define PHP_JSON_FORCE_OBJECT               (1<<4)
  ------------------
  111|      2|	HashTable *myht, *prop_ht;
  112|      2|	zend_refcounted *recursion_rc;
  113|       |
  114|      2|	if (php_json_check_stack_limit()) {
  ------------------
  |  Branch (114:6): [True: 0, False: 2]
  ------------------
  115|      0|		encoder->error_code = PHP_JSON_ERROR_DEPTH;
  116|      0|		if (options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (116:7): [True: 0, False: 0]
  ------------------
  117|      0|			smart_str_appendl(buf, "null", 4);
  118|      0|		}
  119|      0|		return FAILURE;
  120|      0|	}
  121|       |
  122|      2|	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(val) == IS_ARRAY) {
  ------------------
  |  |  613|      2|#define IS_ARRAY					7
  ------------------
  |  Branch (122:6): [True: 0, False: 2]
  ------------------
  123|      0|		myht = Z_ARRVAL_P(val);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|      0|		recursion_rc = (zend_refcounted *)myht;
  125|      0|		prop_ht = NULL;
  126|      0|		encode_as_object = encode_as_object || !zend_array_is_list(myht);
  ------------------
  |  Branch (126:22): [True: 0, False: 0]
  |  Branch (126:42): [True: 0, False: 0]
  ------------------
  127|      2|	} else if (Z_OBJ_P(val)->properties == NULL
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (127:13): [True: 0, False: 2]
  ------------------
  128|      0|	 && Z_OBJ_HT_P(val)->get_properties_for == NULL
  ------------------
  |  | 1003|      2|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (128:6): [True: 0, False: 0]
  ------------------
  129|      0|	 && Z_OBJ_HT_P(val)->get_properties == zend_std_get_properties
  ------------------
  |  | 1003|      2|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (129:6): [True: 0, False: 0]
  ------------------
  130|      0|	 && Z_OBJ_P(val)->ce->num_hooked_props == 0
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (130:6): [True: 0, False: 0]
  ------------------
  131|      0|	 && !zend_object_is_lazy(Z_OBJ_P(val))) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (131:6): [True: 0, False: 0]
  ------------------
  132|       |		/* Optimized version without rebuilding properties HashTable */
  133|      0|		zend_object *obj = Z_OBJ_P(val);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  134|      0|		const zend_class_entry *ce = obj->ce;
  135|       |
  136|      0|		if (GC_IS_RECURSIVE(obj)) {
  ------------------
  |  |  887|      0|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|      0|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  137|      0|			encoder->error_code = PHP_JSON_ERROR_RECURSION;
  138|      0|			smart_str_appendl(buf, "null", 4);
  139|      0|			return FAILURE;
  140|      0|		}
  141|       |
  142|      0|		PHP_JSON_HASH_PROTECT_RECURSION(obj);
  ------------------
  |  |   95|      0|	do { \
  |  |   96|      0|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (96:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   97|      0|			GC_TRY_PROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  897|      0|#define GC_TRY_PROTECT_RECURSION(p) do { \
  |  |  |  |  898|      0|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  889|      0|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  890|      0|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  782|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  891|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (891:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (898:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  899|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (899:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|      0|		} \
  |  |   99|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (99:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  143|       |
  144|      0|		smart_str_appendc(buf, '{');
  145|       |
  146|      0|		++encoder->depth;
  147|       |
  148|      0|		for (int i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (148:19): [True: 0, False: 0]
  ------------------
  149|      0|			zend_property_info *prop_info = ce->properties_info_table[i];
  150|      0|			if (!prop_info) {
  ------------------
  |  Branch (150:8): [True: 0, False: 0]
  ------------------
  151|      0|				continue;
  152|      0|			}
  153|      0|			if (ZSTR_VAL(prop_info->name)[0] == '\0' && ZSTR_LEN(prop_info->name) > 0) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			if (ZSTR_VAL(prop_info->name)[0] == '\0' && ZSTR_LEN(prop_info->name) > 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (153:8): [True: 0, False: 0]
  |  Branch (153:48): [True: 0, False: 0]
  ------------------
  154|       |				/* Skip protected and private members. */
  155|      0|				continue;
  156|      0|			}
  157|      0|			zval *prop = OBJ_PROP(obj, prop_info->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
  158|      0|			if (Z_TYPE_P(prop) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(prop) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (158:8): [True: 0, False: 0]
  ------------------
  159|      0|				continue;
  160|      0|			}
  161|       |
  162|      0|			php_json_pretty_print_char(buf, options, '\n');
  163|      0|			php_json_pretty_print_indent(buf, options, encoder);
  164|       |
  165|      0|			if (php_json_escape_string(buf, ZSTR_VAL(prop_info->name), ZSTR_LEN(prop_info->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			if (php_json_escape_string(buf, ZSTR_VAL(prop_info->name), ZSTR_LEN(prop_info->name),
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (165:8): [True: 0, False: 0]
  ------------------
  166|      0|					options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE &&
  ------------------
  |  |   65|      0|#define PHP_JSON_NUMERIC_CHECK              (1<<5)
  ------------------
  167|      0|					(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) &&
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (167:6): [True: 0, False: 0]
  ------------------
  168|      0|					buf->s) {
  ------------------
  |  Branch (168:6): [True: 0, False: 0]
  ------------------
  169|      0|				ZSTR_LEN(buf->s) -= 4;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  170|      0|				smart_str_appendl(buf, "\"\"", 2);
  171|      0|			}
  172|       |
  173|      0|			smart_str_appendc(buf, ':');
  174|      0|			php_json_pretty_print_char(buf, options, ' ');
  175|       |
  176|      0|			if (php_json_encode_zval(buf, prop, options, encoder) == FAILURE &&
  ------------------
  |  Branch (176:8): [True: 0, False: 0]
  ------------------
  177|      0|					!(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (177:6): [True: 0, False: 0]
  ------------------
  178|      0|				PHP_JSON_HASH_UNPROTECT_RECURSION(obj);
  ------------------
  |  |  102|      0|	do { \
  |  |  103|      0|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (103:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  104|      0|			GC_TRY_UNPROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  901|      0|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  902|      0|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (902:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  903|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (903:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|		} \
  |  |  106|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (106:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  179|      0|				return FAILURE;
  180|      0|			}
  181|       |
  182|      0|			smart_str_appendc(buf, ',');
  183|      0|		}
  184|       |
  185|      0|		bool empty = ZSTR_VAL(buf->s)[ZSTR_LEN(buf->s) - 1] != ',';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		bool empty = ZSTR_VAL(buf->s)[ZSTR_LEN(buf->s) - 1] != ',';
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  186|      0|		if (!empty) {
  ------------------
  |  Branch (186:7): [True: 0, False: 0]
  ------------------
  187|       |			/* Drop the trailing comma. */
  188|      0|			ZSTR_LEN(buf->s)--;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  189|      0|		}
  190|       |
  191|      0|		PHP_JSON_HASH_UNPROTECT_RECURSION(obj);
  ------------------
  |  |  102|      0|	do { \
  |  |  103|      0|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (103:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  104|      0|			GC_TRY_UNPROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  901|      0|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  902|      0|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (902:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  903|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (903:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|		} \
  |  |  106|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (106:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  192|      0|		if (encoder->depth > encoder->max_depth) {
  ------------------
  |  Branch (192:7): [True: 0, False: 0]
  ------------------
  193|      0|			encoder->error_code = PHP_JSON_ERROR_DEPTH;
  194|      0|			if (!(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (194:8): [True: 0, False: 0]
  ------------------
  195|      0|				return FAILURE;
  196|      0|			}
  197|      0|		}
  198|      0|		--encoder->depth;
  199|       |
  200|      0|		if (!empty) {
  ------------------
  |  Branch (200:7): [True: 0, False: 0]
  ------------------
  201|      0|			php_json_pretty_print_char(buf, options, '\n');
  202|      0|			php_json_pretty_print_indent(buf, options, encoder);
  203|      0|		}
  204|      0|		smart_str_appendc(buf, '}');
  205|      0|		return SUCCESS;
  206|      2|	} else {
  207|      2|		zend_object *obj = Z_OBJ_P(val);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  208|      2|		prop_ht = myht = zend_get_properties_for(val, ZEND_PROP_PURPOSE_JSON);
  209|      2|		if (obj->ce->num_hooked_props == 0) {
  ------------------
  |  Branch (209:7): [True: 0, False: 2]
  ------------------
  210|      0|			recursion_rc = (zend_refcounted *)prop_ht;
  211|      2|		} else {
  212|       |			/* Protecting the object itself is fine here because myht is temporary and can't be
  213|       |			 * referenced from a different place in the object graph. */
  214|      2|			recursion_rc = (zend_refcounted *)obj;
  215|      2|		}
  216|      2|		encode_as_object = true;
  217|      2|	}
  218|       |
  219|      2|	if (recursion_rc && GC_IS_RECURSIVE(recursion_rc)) {
  ------------------
  |  |  887|      2|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|      2|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (219:6): [True: 2, False: 0]
  ------------------
  220|      0|		encoder->error_code = PHP_JSON_ERROR_RECURSION;
  221|      0|		smart_str_appendl(buf, "null", 4);
  222|      0|		zend_release_properties(prop_ht);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  223|      0|		return FAILURE;
  224|      0|	}
  225|       |
  226|      2|	PHP_JSON_HASH_PROTECT_RECURSION(recursion_rc);
  ------------------
  |  |   95|      2|	do { \
  |  |   96|      2|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (96:7): [True: 2, False: 0]
  |  |  ------------------
  |  |   97|      2|			GC_TRY_PROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  897|      2|#define GC_TRY_PROTECT_RECURSION(p) do { \
  |  |  |  |  898|      2|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      2|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_PROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  889|      2|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  890|      2|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  782|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  891|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (891:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (898:7): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  899|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (899:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|      2|		} \
  |  |   99|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (99:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  227|       |
  228|      2|	if (!encode_as_object) {
  ------------------
  |  Branch (228:6): [True: 0, False: 2]
  ------------------
  229|      0|		smart_str_appendc(buf, '[');
  230|      2|	} else {
  231|      2|		smart_str_appendc(buf, '{');
  232|      2|	}
  233|       |
  234|      2|	++encoder->depth;
  235|       |
  236|      2|	uint32_t i = myht ? zend_hash_num_elements(myht) : 0;
  ------------------
  |  Branch (236:15): [True: 2, False: 0]
  ------------------
  237|       |
  238|      2|	bool empty = true;
  239|      2|	if (i > 0) {
  ------------------
  |  Branch (239:6): [True: 2, False: 0]
  ------------------
  240|      2|		zend_string *key;
  241|      2|		zval *data;
  242|      2|		zend_ulong index;
  243|       |
  244|      8|		ZEND_HASH_FOREACH_KEY_VAL_IND(myht, index, key, data) {
  ------------------
  |  | 1218|      3|	ZEND_HASH_FOREACH(ht, 1); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      2|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      2|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      2|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      2|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      2|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      2|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      5|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 3, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      3|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      3|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      3|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      3|			} else { \
  |  |  |  |  |  | 1060|      3|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      3|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      3|				__h = _p->h; \
  |  |  |  |  |  | 1063|      3|				__key = _p->key; \
  |  |  |  |  |  | 1064|      3|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      6|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [True: 3, Folded]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      3|			} \
  |  |  |  |  |  | 1068|      3|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      3|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1219|      3|	_h = __h; \
  |  | 1220|      3|	_key = __key; \
  |  | 1221|      3|	_val = _z;
  ------------------
  245|      8|			bool need_dtor = false;
  246|      8|			zval tmp;
  247|      8|			ZVAL_UNDEF(&tmp);
  ------------------
  |  | 1055|      3|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      3|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      3|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  248|       |
  249|      8|			if (!encode_as_object) {
  ------------------
  |  Branch (249:8): [True: 0, False: 3]
  ------------------
  250|      0|				ZEND_ASSERT(Z_TYPE_P(data) != IS_PTR);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (250:5): [True: 0, False: 0]
  |  Branch (250:5): [True: 0, False: 0]
  ------------------
  251|       |
  252|      0|				php_json_pretty_print_char(buf, options, '\n');
  253|      0|				php_json_pretty_print_indent(buf, options, encoder);
  254|      3|			} else {
  255|      3|				if (key) {
  ------------------
  |  Branch (255:9): [True: 3, False: 0]
  ------------------
  256|      3|					if (ZSTR_VAL(key)[0] == '\0' && ZSTR_LEN(key) > 0 && Z_TYPE_P(val) == IS_OBJECT) {
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					if (ZSTR_VAL(key)[0] == '\0' && ZSTR_LEN(key) > 0 && Z_TYPE_P(val) == IS_OBJECT) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              					if (ZSTR_VAL(key)[0] == '\0' && ZSTR_LEN(key) > 0 && Z_TYPE_P(val) == IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (ZSTR_VAL(key)[0] == '\0' && ZSTR_LEN(key) > 0 && Z_TYPE_P(val) == IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (256:10): [True: 0, False: 3]
  |  Branch (256:38): [True: 0, False: 0]
  |  Branch (256:59): [True: 0, False: 0]
  ------------------
  257|       |						/* Skip protected and private members. */
  258|      0|						continue;
  259|      0|					}
  260|       |
  261|       |					/* data is IS_PTR for properties with hooks. */
  262|      3|					if (UNEXPECTED(Z_TYPE_P(data) == IS_PTR)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  263|      2|						zend_property_info *prop_info = Z_PTR_P(data);
  ------------------
  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  264|      2|						if ((prop_info->flags & ZEND_ACC_VIRTUAL) && !prop_info->hooks[ZEND_PROPERTY_HOOK_GET]) {
  ------------------
  |  |  270|      2|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (264:11): [True: 1, False: 1]
  |  Branch (264:52): [True: 0, False: 1]
  ------------------
  265|      0|							continue;
  266|      0|						}
  267|      2|						need_dtor = true;
  268|      2|						data = zend_read_property_ex(prop_info->ce, Z_OBJ_P(val), prop_info->name, /* silent */ true, &tmp);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  269|      2|						if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  270|      0|							PHP_JSON_HASH_UNPROTECT_RECURSION(recursion_rc);
  ------------------
  |  |  102|      0|	do { \
  |  |  103|      0|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (103:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  104|      0|			GC_TRY_UNPROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  901|      0|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  902|      0|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (902:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  903|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (903:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|		} \
  |  |  106|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (106:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  271|      0|							zend_release_properties(prop_ht);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  272|      0|							return FAILURE;
  273|      0|						}
  274|      2|					}
  275|       |
  276|       |
  277|      3|					php_json_pretty_print_char(buf, options, '\n');
  278|      3|					php_json_pretty_print_indent(buf, options, encoder);
  279|       |
  280|      3|					if (php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key),
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					if (php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key),
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (280:10): [True: 0, False: 3]
  ------------------
  281|      3|								options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE &&
  ------------------
  |  |   65|      3|#define PHP_JSON_NUMERIC_CHECK              (1<<5)
  ------------------
  282|      0|							(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) &&
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (282:8): [True: 0, False: 0]
  ------------------
  283|      0|							buf->s) {
  ------------------
  |  Branch (283:8): [True: 0, False: 0]
  ------------------
  284|      0|						ZSTR_LEN(buf->s) -= 4;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  285|      0|						smart_str_appendl(buf, "\"\"", 2);
  286|      0|					}
  287|      3|				} else {
  288|      0|					php_json_pretty_print_char(buf, options, '\n');
  289|      0|					php_json_pretty_print_indent(buf, options, encoder);
  290|       |
  291|      0|					smart_str_appendc(buf, '"');
  292|      0|					smart_str_append_long(buf, (zend_long) index);
  293|      0|					smart_str_appendc(buf, '"');
  294|      0|				}
  295|       |
  296|      3|				smart_str_appendc(buf, ':');
  297|      3|				php_json_pretty_print_char(buf, options, ' ');
  298|      3|			}
  299|       |
  300|      3|			if (php_json_encode_zval(buf, data, options, encoder) == FAILURE &&
  ------------------
  |  Branch (300:8): [True: 0, False: 3]
  ------------------
  301|      0|					!(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (301:6): [True: 0, False: 0]
  ------------------
  302|      0|				PHP_JSON_HASH_UNPROTECT_RECURSION(recursion_rc);
  ------------------
  |  |  102|      0|	do { \
  |  |  103|      0|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (103:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  104|      0|			GC_TRY_UNPROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  901|      0|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  902|      0|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (902:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  903|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (903:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|		} \
  |  |  106|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (106:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  303|      0|				zend_release_properties(prop_ht);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  304|      0|				zval_ptr_dtor(&tmp);
  305|      0|				return FAILURE;
  306|      0|			}
  307|      3|			if (UNEXPECTED(need_dtor)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  308|      2|				zval_ptr_dtor(&tmp);
  309|      2|			}
  310|       |
  311|      3|			smart_str_appendc(buf, ',');
  312|      3|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  313|       |
  314|      2|		empty = ZSTR_VAL(buf->s)[ZSTR_LEN(buf->s) - 1] != ',';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		empty = ZSTR_VAL(buf->s)[ZSTR_LEN(buf->s) - 1] != ',';
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  315|      2|		if (!empty) {
  ------------------
  |  Branch (315:7): [True: 2, False: 0]
  ------------------
  316|       |			/* Drop the trailing comma. */
  317|      2|			ZSTR_LEN(buf->s)--;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  318|      2|		}
  319|      2|	}
  320|       |
  321|      2|	PHP_JSON_HASH_UNPROTECT_RECURSION(recursion_rc);
  ------------------
  |  |  102|      2|	do { \
  |  |  103|      2|		if (_tmp_ht) { \
  |  |  ------------------
  |  |  |  Branch (103:7): [True: 2, False: 0]
  |  |  ------------------
  |  |  104|      2|			GC_TRY_UNPROTECT_RECURSION(_tmp_ht); \
  |  |  ------------------
  |  |  |  |  901|      2|#define GC_TRY_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  902|      2|		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      2|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  801|      2|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  ------------------
  |  |  |  |               		if (!(GC_FLAGS(p) & GC_IMMUTABLE)) GC_UNPROTECT_RECURSION(p); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      2|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      2|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      2|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      2|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (902:7): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  903|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (903:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      2|		} \
  |  |  106|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (106:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  322|       |
  323|      2|	if (encoder->depth > encoder->max_depth) {
  ------------------
  |  Branch (323:6): [True: 0, False: 2]
  ------------------
  324|      0|		encoder->error_code = PHP_JSON_ERROR_DEPTH;
  325|      0|		if (!(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR)) {
  ------------------
  |  |   69|      0|#define PHP_JSON_PARTIAL_OUTPUT_ON_ERROR    (1<<9)
  ------------------
  |  Branch (325:7): [True: 0, False: 0]
  ------------------
  326|      0|			zend_release_properties(prop_ht);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  327|      0|			return FAILURE;
  328|      0|		}
  329|      0|	}
  330|      2|	--encoder->depth;
  331|       |
  332|       |	/* Only keep closing bracket on same line for empty arrays/objects */
  333|      2|	if (!empty) {
  ------------------
  |  Branch (333:6): [True: 2, False: 0]
  ------------------
  334|      2|		php_json_pretty_print_char(buf, options, '\n');
  335|      2|		php_json_pretty_print_indent(buf, options, encoder);
  336|      2|	}
  337|       |
  338|      2|	if (!encode_as_object) {
  ------------------
  |  Branch (338:6): [True: 0, False: 2]
  ------------------
  339|      0|		smart_str_appendc(buf, ']');
  340|      2|	} else {
  341|      2|		smart_str_appendc(buf, '}');
  342|      2|	}
  343|       |
  344|      2|	zend_release_properties(prop_ht);
  ------------------
  |  |  338|      2|#define zend_release_properties(ht) do { \
  |  |  339|      2|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 2, False: 0]
  |  |  ------------------
  |  |  340|      2|		zend_array_release(ht); \
  |  |  341|      2|	} \
  |  |  342|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  345|      2|	return SUCCESS;
  346|      2|}
json_encoder.c:php_json_check_stack_limit:
   34|      2|{
   35|      2|#ifdef ZEND_CHECK_STACK_LIMIT
   36|      2|	return zend_call_stack_overflowed(EG(stack_limit));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
   37|       |#else
   38|       |	return false;
   39|       |#endif
   40|      2|}
json_encoder.c:php_json_pretty_print_char:
   45|      8|{
   46|      8|	if (options & PHP_JSON_PRETTY_PRINT) {
  ------------------
  |  |   67|      8|#define PHP_JSON_PRETTY_PRINT               (1<<7)
  ------------------
  |  Branch (46:6): [True: 0, False: 8]
  ------------------
   47|      0|		smart_str_appendc(buf, c);
   48|      0|	}
   49|      8|}
json_encoder.c:php_json_pretty_print_indent:
   53|      5|{
   54|      5|	if (options & PHP_JSON_PRETTY_PRINT) {
  ------------------
  |  |   67|      5|#define PHP_JSON_PRETTY_PRINT               (1<<7)
  ------------------
  |  Branch (54:6): [True: 0, False: 5]
  ------------------
   55|      0|		smart_str_alloc(buf, encoder->depth * 4, 0);
   56|      0|		for (int i = 0; i < encoder->depth; ++i) {
  ------------------
  |  Branch (56:19): [True: 0, False: 0]
  ------------------
   57|      0|			smart_str_appendl(buf, "    ", 4);
   58|      0|		}
   59|      0|	}
   60|      5|}

json.c:php_json_encode_init:
   30|      2|{
   31|      2|	memset(encoder, 0, sizeof(php_json_encoder));
   32|      2|}

lexbor_array_create:
   12|  33.5k|{
   13|  33.5k|    return lexbor_calloc(1, sizeof(lexbor_array_t));
   14|  33.5k|}
lexbor_array_init:
   18|  33.5k|{
   19|  33.5k|    if (array == NULL) {
  ------------------
  |  Branch (19:9): [True: 0, False: 33.5k]
  ------------------
   20|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   21|      0|    }
   22|       |
   23|  33.5k|    if (size == 0) {
  ------------------
  |  Branch (23:9): [True: 0, False: 33.5k]
  ------------------
   24|      0|        return LXB_STATUS_ERROR_TOO_SMALL_SIZE;
   25|      0|    }
   26|       |
   27|  33.5k|    array->length = 0;
   28|  33.5k|    array->size = size;
   29|       |
   30|  33.5k|    array->list = lexbor_malloc(sizeof(void *) * size);
   31|  33.5k|    if (array->list == NULL) {
  ------------------
  |  Branch (31:9): [True: 0, False: 33.5k]
  ------------------
   32|      0|        return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
   33|      0|    }
   34|       |
   35|  33.5k|    return LXB_STATUS_OK;
   36|  33.5k|}
lexbor_array_destroy:
   48|  33.5k|{
   49|  33.5k|    if (array == NULL)
  ------------------
  |  Branch (49:9): [True: 0, False: 33.5k]
  ------------------
   50|      0|        return NULL;
   51|       |
   52|  33.5k|    if (array->list) {
  ------------------
  |  Branch (52:9): [True: 33.5k, False: 0]
  ------------------
   53|  33.5k|        array->length = 0;
   54|  33.5k|        array->size = 0;
   55|  33.5k|        array->list = lexbor_free(array->list);
   56|  33.5k|    }
   57|       |
   58|  33.5k|    if (self_destroy) {
  ------------------
  |  Branch (58:9): [True: 33.5k, False: 0]
  ------------------
   59|  33.5k|        return lexbor_free(array);
   60|  33.5k|    }
   61|       |
   62|      0|    return array;
   63|  33.5k|}

lexbor_bst_create:
   13|  33.5k|{
   14|  33.5k|    return lexbor_calloc(1, sizeof(lexbor_bst_t));
   15|  33.5k|}
lexbor_bst_init:
   19|  33.5k|{
   20|  33.5k|    lxb_status_t status;
   21|       |
   22|  33.5k|    if (bst == NULL) {
  ------------------
  |  Branch (22:9): [True: 0, False: 33.5k]
  ------------------
   23|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   24|      0|    }
   25|       |
   26|  33.5k|    if (size == 0) {
  ------------------
  |  Branch (26:9): [True: 0, False: 33.5k]
  ------------------
   27|      0|        return LXB_STATUS_ERROR_WRONG_ARGS;
   28|      0|    }
   29|       |
   30|  33.5k|    bst->dobject = lexbor_dobject_create();
   31|  33.5k|    status = lexbor_dobject_init(bst->dobject, size,
   32|  33.5k|                                 sizeof(lexbor_bst_entry_t));
   33|  33.5k|    if (status != LXB_STATUS_OK) {
  ------------------
  |  Branch (33:9): [True: 0, False: 33.5k]
  ------------------
   34|      0|        return status;
   35|      0|    }
   36|       |
   37|  33.5k|    bst->root = 0;
   38|  33.5k|    bst->tree_length = 0;
   39|       |
   40|  33.5k|    return LXB_STATUS_OK;
   41|  33.5k|}
lexbor_bst_destroy:
   56|  33.5k|{
   57|  33.5k|    if (bst == NULL) {
  ------------------
  |  Branch (57:9): [True: 0, False: 33.5k]
  ------------------
   58|      0|        return NULL;
   59|      0|    }
   60|       |
   61|  33.5k|    bst->dobject = lexbor_dobject_destroy(bst->dobject, true);
   62|       |
   63|  33.5k|    if (self_destroy) {
  ------------------
  |  Branch (63:9): [True: 33.5k, False: 0]
  ------------------
   64|  33.5k|        return lexbor_free(bst);
   65|  33.5k|    }
   66|       |
   67|      0|    return bst;
   68|  33.5k|}

lexbor_dobject_create:
   17|  33.5k|{
   18|  33.5k|    return lexbor_calloc(1, sizeof(lexbor_dobject_t));
   19|  33.5k|}
lexbor_dobject_init:
   24|  33.5k|{
   25|  33.5k|    lxb_status_t status;
   26|       |
   27|  33.5k|    if (dobject == NULL) {
  ------------------
  |  Branch (27:9): [True: 0, False: 33.5k]
  ------------------
   28|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   29|      0|    }
   30|       |
   31|  33.5k|    if (chunk_size == 0 || struct_size == 0) {
  ------------------
  |  Branch (31:9): [True: 0, False: 33.5k]
  |  Branch (31:28): [True: 0, False: 33.5k]
  ------------------
   32|      0|        return LXB_STATUS_ERROR_WRONG_ARGS;
   33|      0|    }
   34|       |
   35|       |    /* Set params */
   36|  33.5k|    dobject->allocated = 0UL;
   37|  33.5k|    dobject->struct_size = struct_size;
   38|       |
   39|       |    /* Init memory */
   40|  33.5k|    dobject->mem = lexbor_mem_create();
   41|       |
   42|  33.5k|    status = lexbor_mem_init(dobject->mem,
   43|  33.5k|                           lexbor_mem_align(chunk_size * dobject->struct_size));
   44|  33.5k|    if (status) {
  ------------------
  |  Branch (44:9): [True: 0, False: 33.5k]
  ------------------
   45|      0|        return status;
   46|      0|    }
   47|       |
   48|       |#if defined(LEXBOR_HAVE_ADDRESS_SANITIZER)
   49|       |    ASAN_POISON_MEMORY_REGION(dobject->mem->chunk->data,
   50|       |                              dobject->mem->chunk->size);
   51|       |#endif
   52|       |
   53|       |    /* Array */
   54|  33.5k|    dobject->cache = lexbor_array_create();
   55|       |
   56|  33.5k|    status = lexbor_array_init(dobject->cache, chunk_size);
   57|  33.5k|    if (status)
  ------------------
  |  Branch (57:9): [True: 0, False: 33.5k]
  ------------------
   58|      0|        return status;
   59|       |
   60|  33.5k|    return LXB_STATUS_OK;
   61|  33.5k|}
lexbor_dobject_destroy:
   76|  33.5k|{
   77|  33.5k|    if (dobject == NULL)
  ------------------
  |  Branch (77:9): [True: 0, False: 33.5k]
  ------------------
   78|      0|        return NULL;
   79|       |
   80|  33.5k|    dobject->mem = lexbor_mem_destroy(dobject->mem, true);
   81|  33.5k|    dobject->cache = lexbor_array_destroy(dobject->cache, true);
   82|       |
   83|  33.5k|    if (destroy_self == true) {
  ------------------
  |  Branch (83:9): [True: 33.5k, False: 0]
  ------------------
   84|  33.5k|        return lexbor_free(dobject);
   85|  33.5k|    }
   86|       |
   87|      0|    return dobject;
   88|  33.5k|}

lexbor_mem_create:
   12|  67.1k|{
   13|  67.1k|    return lexbor_calloc(1, sizeof(lexbor_mem_t));
   14|  67.1k|}
lexbor_mem_init:
   18|  67.1k|{
   19|  67.1k|    if (mem == NULL) {
  ------------------
  |  Branch (19:9): [True: 0, False: 67.1k]
  ------------------
   20|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   21|      0|    }
   22|       |
   23|  67.1k|    if (min_chunk_size == 0) {
  ------------------
  |  Branch (23:9): [True: 0, False: 67.1k]
  ------------------
   24|      0|        return LXB_STATUS_ERROR_WRONG_ARGS;
   25|      0|    }
   26|       |
   27|  67.1k|    mem->chunk_min_size = lexbor_mem_align(min_chunk_size);
   28|       |
   29|       |    /* Create first chunk */
   30|  67.1k|    mem->chunk = lexbor_mem_chunk_make(mem, mem->chunk_min_size);
   31|  67.1k|    if (mem->chunk == NULL) {
  ------------------
  |  Branch (31:9): [True: 0, False: 67.1k]
  ------------------
   32|      0|        return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
   33|      0|    }
   34|       |
   35|  67.1k|    mem->chunk_length = 1;
   36|  67.1k|    mem->chunk_first = mem->chunk;
   37|       |
   38|  67.1k|    return LXB_STATUS_OK;
   39|  67.1k|}
lexbor_mem_destroy:
   70|  67.1k|{
   71|  67.1k|    lexbor_mem_chunk_t *chunk, *prev;
   72|       |
   73|  67.1k|    if (mem == NULL) {
  ------------------
  |  Branch (73:9): [True: 0, False: 67.1k]
  ------------------
   74|      0|        return NULL;
   75|      0|    }
   76|       |
   77|       |    /* Destroy all chunk */
   78|  67.1k|    if (mem->chunk) {
  ------------------
  |  Branch (78:9): [True: 67.1k, False: 0]
  ------------------
   79|  67.1k|        chunk = mem->chunk;
   80|       |
   81|   134k|        while (chunk) {
  ------------------
  |  Branch (81:16): [True: 67.1k, False: 67.1k]
  ------------------
   82|  67.1k|            prev = chunk->prev;
   83|  67.1k|            lexbor_mem_chunk_destroy(mem, chunk, true);
   84|  67.1k|            chunk = prev;
   85|  67.1k|        }
   86|       |
   87|  67.1k|        mem->chunk = NULL;
   88|  67.1k|    }
   89|       |
   90|  67.1k|    if (destroy_self) {
  ------------------
  |  Branch (90:9): [True: 67.1k, False: 0]
  ------------------
   91|  67.1k|        return lexbor_free(mem);
   92|  67.1k|    }
   93|       |
   94|      0|    return mem;
   95|  67.1k|}
lexbor_mem_chunk_init:
  100|  67.1k|{
  101|  67.1k|    length = lexbor_mem_align(length);
  102|       |
  103|  67.1k|    if (length > mem->chunk_min_size) {
  ------------------
  |  Branch (103:9): [True: 0, False: 67.1k]
  ------------------
  104|      0|        if (mem->chunk_min_size > (SIZE_MAX - length)) {
  ------------------
  |  Branch (104:13): [True: 0, False: 0]
  ------------------
  105|      0|            chunk->size = length;
  106|      0|        }
  107|      0|        else {
  108|      0|            chunk->size = length + mem->chunk_min_size;
  109|      0|        }
  110|      0|    }
  111|  67.1k|    else {
  112|  67.1k|        chunk->size = mem->chunk_min_size;
  113|  67.1k|    }
  114|       |
  115|  67.1k|    chunk->length = 0;
  116|  67.1k|    chunk->data = lexbor_malloc(chunk->size * sizeof(uint8_t));
  117|       |
  118|  67.1k|    return chunk->data;
  119|  67.1k|}
lexbor_mem_chunk_make:
  123|  67.1k|{
  124|  67.1k|    lexbor_mem_chunk_t *chunk = lexbor_calloc(1, sizeof(lexbor_mem_chunk_t));
  125|       |
  126|  67.1k|    if (chunk == NULL) {
  ------------------
  |  Branch (126:9): [True: 0, False: 67.1k]
  ------------------
  127|      0|        return NULL;
  128|      0|    }
  129|       |
  130|  67.1k|    if (lexbor_mem_chunk_init(mem, chunk, length) == NULL) {
  ------------------
  |  Branch (130:9): [True: 0, False: 67.1k]
  ------------------
  131|      0|        return lexbor_free(chunk);
  132|      0|    }
  133|       |
  134|  67.1k|    return chunk;
  135|  67.1k|}
lexbor_mem_chunk_destroy:
  140|  67.1k|{
  141|  67.1k|    if (chunk == NULL || mem == NULL) {
  ------------------
  |  Branch (141:9): [True: 0, False: 67.1k]
  |  Branch (141:26): [True: 0, False: 67.1k]
  ------------------
  142|      0|        return NULL;
  143|      0|    }
  144|       |
  145|  67.1k|    if (chunk->data) {
  ------------------
  |  Branch (145:9): [True: 67.1k, False: 0]
  ------------------
  146|  67.1k|        chunk->data = lexbor_free(chunk->data);
  147|  67.1k|    }
  148|       |
  149|  67.1k|    if (self_destroy) {
  ------------------
  |  Branch (149:9): [True: 67.1k, False: 0]
  ------------------
  150|  67.1k|        return lexbor_free(chunk);
  151|  67.1k|    }
  152|       |
  153|      0|    return chunk;
  154|  67.1k|}

dobject.c:lexbor_mem_align:
  104|  33.5k|{
  105|  33.5k|    return ((size % LEXBOR_MEM_ALIGN_STEP) != 0)
  ------------------
  |  |   33|  33.5k|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  ------------------
  |  Branch (105:12): [True: 0, False: 33.5k]
  ------------------
  106|  33.5k|           ? size + (LEXBOR_MEM_ALIGN_STEP - (size % LEXBOR_MEM_ALIGN_STEP))
  ------------------
  |  |   33|      0|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  ------------------
                         ? size + (LEXBOR_MEM_ALIGN_STEP - (size % LEXBOR_MEM_ALIGN_STEP))
  ------------------
  |  |   33|      0|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  ------------------
  107|  33.5k|           : size;
  108|  33.5k|}
mem.c:lexbor_mem_align:
  104|   134k|{
  105|   134k|    return ((size % LEXBOR_MEM_ALIGN_STEP) != 0)
  ------------------
  |  |   33|   134k|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  ------------------
  |  Branch (105:12): [True: 0, False: 134k]
  ------------------
  106|   134k|           ? size + (LEXBOR_MEM_ALIGN_STEP - (size % LEXBOR_MEM_ALIGN_STEP))
  ------------------
  |  |   33|      0|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  ------------------
                         ? size + (LEXBOR_MEM_ALIGN_STEP - (size % LEXBOR_MEM_ALIGN_STEP))
  ------------------
  |  |   33|      0|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  ------------------
  107|   134k|           : size;
  108|   134k|}

lexbor_mraw_init:
   39|  33.5k|{
   40|  33.5k|    lxb_status_t status;
   41|       |
   42|  33.5k|    if (mraw == NULL) {
  ------------------
  |  Branch (42:9): [True: 0, False: 33.5k]
  ------------------
   43|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   44|      0|    }
   45|       |
   46|  33.5k|    if (chunk_size == 0) {
  ------------------
  |  Branch (46:9): [True: 0, False: 33.5k]
  ------------------
   47|      0|        return LXB_STATUS_ERROR_WRONG_ARGS;
   48|      0|    }
   49|       |
   50|       |    /* Init memory */
   51|  33.5k|    mraw->mem = lexbor_mem_create();
   52|       |
   53|  33.5k|    status = lexbor_mem_init(mraw->mem, chunk_size + lexbor_mraw_meta_size());
  ------------------
  |  |   22|  33.5k|    (((sizeof(size_t) % LEXBOR_MEM_ALIGN_STEP) != 0)                           \
  |  |  ------------------
  |  |  |  |   33|  33.5k|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  |  |  ------------------
  |  |  |  Branch (22:6): [Folded, False: 33.5k]
  |  |  ------------------
  |  |   23|  33.5k|    ? sizeof(size_t)                                                           \
  |  |   24|      0|        + (LEXBOR_MEM_ALIGN_STEP - (sizeof(size_t) % LEXBOR_MEM_ALIGN_STEP))   \
  |  |  ------------------
  |  |  |  |   33|      0|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  |  |  ------------------
  |  |                       + (LEXBOR_MEM_ALIGN_STEP - (sizeof(size_t) % LEXBOR_MEM_ALIGN_STEP))   \
  |  |  ------------------
  |  |  |  |   33|      0|#define LEXBOR_MEM_ALIGN_STEP sizeof(void *)
  |  |  ------------------
  |  |   25|  33.5k|    : sizeof(size_t))
  ------------------
   54|  33.5k|    if (status) {
  ------------------
  |  Branch (54:9): [True: 0, False: 33.5k]
  ------------------
   55|      0|        return status;
   56|      0|    }
   57|       |
   58|       |#if defined(LEXBOR_HAVE_ADDRESS_SANITIZER)
   59|       |    ASAN_POISON_MEMORY_REGION(mraw->mem->chunk->data, mraw->mem->chunk->size);
   60|       |#endif
   61|       |
   62|       |    /* Cache */
   63|  33.5k|    mraw->cache = lexbor_bst_create();
   64|       |
   65|  33.5k|    status = lexbor_bst_init(mraw->cache, 512);
   66|  33.5k|    if (status) {
  ------------------
  |  Branch (66:9): [True: 0, False: 33.5k]
  ------------------
   67|      0|        return status;
   68|      0|    }
   69|       |
   70|  33.5k|    mraw->ref_count = 0;
   71|       |
   72|  33.5k|    return LXB_STATUS_OK;
   73|  33.5k|}
lexbor_mraw_destroy:
   88|  33.5k|{
   89|  33.5k|    if (mraw == NULL) {
  ------------------
  |  Branch (89:9): [True: 0, False: 33.5k]
  ------------------
   90|      0|        return NULL;
   91|      0|    }
   92|       |
   93|  33.5k|    mraw->mem = lexbor_mem_destroy(mraw->mem, true);
   94|  33.5k|    mraw->cache = lexbor_bst_destroy(mraw->cache, true);
   95|       |
   96|  33.5k|    if (destroy_self) {
  ------------------
  |  Branch (96:9): [True: 0, False: 33.5k]
  ------------------
   97|      0|        return lexbor_free(mraw);
   98|      0|    }
   99|       |
  100|  33.5k|    return mraw;
  101|  33.5k|}

lexbor_plog_destroy:
   33|  33.5k|{
   34|  33.5k|    if (plog == NULL) {
  ------------------
  |  Branch (34:9): [True: 33.5k, False: 0]
  ------------------
   35|  33.5k|        return NULL;
   36|  33.5k|    }
   37|       |
   38|      0|    lexbor_array_obj_destroy(&plog->list, false);
   39|       |
   40|      0|    if (self_destroy) {
  ------------------
  |  Branch (40:9): [True: 0, False: 0]
  ------------------
   41|      0|        return lexbor_free(plog);
   42|      0|    }
   43|       |
   44|      0|    return plog;
   45|      0|}

lexbor_malloc:
   16|   134k|{
   17|   134k|    return lexbor_memory_malloc(size);
   18|   134k|}
lexbor_calloc:
   28|   235k|{
   29|   235k|    return lexbor_memory_calloc(num, size);
   30|   235k|}
lexbor_free:
   34|   369k|{
   35|   369k|    lexbor_memory_free(dst);
   36|       |    return NULL;
   37|   369k|}
lexbor_memory_setup:
   42|      2|{
   43|      2|    if (new_malloc == NULL || new_realloc == NULL || new_calloc == NULL || new_free == NULL) {
  ------------------
  |  Branch (43:9): [True: 0, False: 2]
  |  Branch (43:31): [True: 0, False: 2]
  |  Branch (43:54): [True: 0, False: 2]
  |  Branch (43:76): [True: 0, False: 2]
  ------------------
   44|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   45|      0|    }
   46|       |
   47|      2|    lexbor_memory_malloc = new_malloc;
   48|      2|    lexbor_memory_realloc = new_realloc;
   49|      2|    lexbor_memory_calloc = new_calloc;
   50|      2|    lexbor_memory_free = new_free;
   51|       |
   52|      2|    return LXB_STATUS_OK;
   53|      2|}

lxb_unicode_idna_init:
   81|  33.5k|{
   82|  33.5k|    if (idna == NULL) {
  ------------------
  |  Branch (82:9): [True: 0, False: 33.5k]
  ------------------
   83|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   84|      0|    }
   85|       |
   86|  33.5k|    return lxb_unicode_normalizer_init(&idna->normalizer, LXB_UNICODE_NFC);
   87|  33.5k|}
lxb_unicode_idna_destroy:
   97|  67.1k|{
   98|  67.1k|    if (idna == NULL) {
  ------------------
  |  Branch (98:9): [True: 33.5k, False: 33.5k]
  ------------------
   99|  33.5k|        return NULL;
  100|  33.5k|    }
  101|       |
  102|  33.5k|    (void) lxb_unicode_normalizer_destroy(&idna->normalizer, false);
  103|       |
  104|  33.5k|    if (self_destroy) {
  ------------------
  |  Branch (104:9): [True: 0, False: 33.5k]
  ------------------
  105|      0|        return lexbor_free(idna);
  106|      0|    }
  107|       |
  108|  33.5k|    return idna;
  109|  33.5k|}

lxb_unicode_normalizer_init:
   93|  33.5k|{
   94|  33.5k|    lxb_status_t status;
   95|  33.5k|    static const size_t buf_length = 4096;
   96|       |
   97|  33.5k|    if (uc == NULL) {
  ------------------
  |  Branch (97:9): [True: 0, False: 33.5k]
  ------------------
   98|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
   99|      0|    }
  100|       |
  101|  33.5k|    status = lxb_unicode_normalization_form_set(uc, form);
  102|  33.5k|    if (status != LXB_STATUS_OK) {
  ------------------
  |  Branch (102:9): [True: 0, False: 33.5k]
  ------------------
  103|      0|        return status;
  104|      0|    }
  105|       |
  106|  33.5k|    uc->tmp_lenght = 0;
  107|  33.5k|    uc->starter = NULL;
  108|       |
  109|  33.5k|    uc->buf = lexbor_malloc(buf_length * sizeof(lxb_unicode_buffer_t));
  110|  33.5k|    if (uc->buf == NULL) {
  ------------------
  |  Branch (110:9): [True: 0, False: 33.5k]
  ------------------
  111|      0|        return LXB_STATUS_ERROR_MEMORY_ALLOCATION;
  112|      0|    }
  113|       |
  114|  33.5k|    uc->end = uc->buf + buf_length;
  115|  33.5k|    uc->p = uc->buf;
  116|  33.5k|    uc->ican = uc->buf;
  117|  33.5k|    uc->quick_ccc = 0;
  118|  33.5k|    uc->flush_cp = 1024;
  119|       |
  120|  33.5k|    return LXB_STATUS_OK;
  121|  33.5k|}
lxb_unicode_normalizer_destroy:
  135|  33.5k|{
  136|  33.5k|    if (uc == NULL) {
  ------------------
  |  Branch (136:9): [True: 0, False: 33.5k]
  ------------------
  137|      0|        return NULL;
  138|      0|    }
  139|       |
  140|  33.5k|    if (uc->buf != NULL) {
  ------------------
  |  Branch (140:9): [True: 33.5k, False: 0]
  ------------------
  141|  33.5k|        uc->buf = lexbor_free(uc->buf);
  142|  33.5k|    }
  143|       |
  144|  33.5k|    if (self_destroy) {
  ------------------
  |  Branch (144:9): [True: 0, False: 33.5k]
  ------------------
  145|      0|        return lexbor_free(uc);
  146|      0|    }
  147|       |
  148|  33.5k|    return uc;
  149|  33.5k|}
lxb_unicode_normalization_form_set:
  154|  33.5k|{
  155|  33.5k|    switch (form) {
  156|  33.5k|        case LXB_UNICODE_NFC:
  ------------------
  |  Branch (156:9): [True: 33.5k, False: 0]
  ------------------
  157|  33.5k|            uc->decomposition = lxb_unicode_canonical_decomposition;
  158|  33.5k|            uc->composition = lxb_unicode_canonical;
  159|  33.5k|            uc->quick_type = LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFC_MAYBE;
  160|  33.5k|            break;
  161|       |
  162|      0|        case LXB_UNICODE_NFD:
  ------------------
  |  Branch (162:9): [True: 0, False: 33.5k]
  ------------------
  163|      0|            uc->decomposition = lxb_unicode_canonical_decomposition;
  164|      0|            uc->composition = lxb_unicode_compatibility;
  165|      0|            uc->quick_type = LXB_UNICODE_QUICK_NFD_NO;
  166|      0|            break;
  167|       |
  168|      0|        case LXB_UNICODE_NFKC:
  ------------------
  |  Branch (168:9): [True: 0, False: 33.5k]
  ------------------
  169|      0|            uc->decomposition = lxb_unicode_compatibility_decomposition;
  170|      0|            uc->composition = lxb_unicode_canonical;
  171|      0|            uc->quick_type = LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKC_MAYBE;
  172|      0|            break;
  173|       |
  174|      0|        case LXB_UNICODE_NFKD:
  ------------------
  |  Branch (174:9): [True: 0, False: 33.5k]
  ------------------
  175|      0|            uc->decomposition = lxb_unicode_compatibility_decomposition;
  176|      0|            uc->composition = lxb_unicode_compatibility;
  177|      0|            uc->quick_type = LXB_UNICODE_QUICK_NFKD_NO;
  178|      0|            break;
  179|       |
  180|      0|        default:
  ------------------
  |  Branch (180:9): [True: 0, False: 33.5k]
  ------------------
  181|      0|            return LXB_STATUS_ERROR_WRONG_ARGS;
  182|  33.5k|    }
  183|       |
  184|  33.5k|    return LXB_STATUS_OK;
  185|  33.5k|}

lxb_url_parser_init:
  641|  33.5k|{
  642|  33.5k|    bool itmy;
  643|  33.5k|    lxb_status_t status;
  644|       |
  645|  33.5k|    if (parser == NULL) {
  ------------------
  |  Branch (645:9): [True: 0, False: 33.5k]
  ------------------
  646|      0|        return LXB_STATUS_ERROR_OBJECT_IS_NULL;
  647|      0|    }
  648|       |
  649|  33.5k|    itmy = false;
  650|       |
  651|  33.5k|    if (mraw == NULL) {
  ------------------
  |  Branch (651:9): [True: 0, False: 33.5k]
  ------------------
  652|      0|        mraw = lexbor_mraw_create();
  653|      0|        status = lexbor_mraw_init(mraw, LXB_URL_BUFFER_SIZE);
  ------------------
  |  |   26|      0|#define LXB_URL_BUFFER_SIZE 4096
  ------------------
  654|      0|        if (status != LXB_STATUS_OK) {
  ------------------
  |  Branch (654:13): [True: 0, False: 0]
  ------------------
  655|      0|            goto failed;
  656|      0|        }
  657|       |
  658|      0|        itmy = true;
  659|      0|    }
  660|       |
  661|  33.5k|    parser->mraw = mraw;
  662|  33.5k|    parser->log = NULL;
  663|  33.5k|    parser->idna = NULL;
  664|  33.5k|    parser->buffer = NULL;
  665|       |
  666|  33.5k|    return LXB_STATUS_OK;
  667|       |
  668|      0|failed:
  669|       |
  670|      0|    if (itmy) {
  ------------------
  |  Branch (670:9): [True: 0, False: 0]
  ------------------
  671|      0|        (void) lexbor_mraw_destroy(mraw, true);
  672|      0|    }
  673|       |
  674|      0|    memset(parser, 0x00, sizeof(lxb_url_parser_t));
  675|       |
  676|      0|    return status;
  677|  33.5k|}
lxb_url_parser_destroy:
  695|  33.5k|{
  696|  33.5k|    if (parser == NULL) {
  ------------------
  |  Branch (696:9): [True: 0, False: 33.5k]
  ------------------
  697|      0|        return NULL;
  698|      0|    }
  699|       |
  700|  33.5k|    parser->log = lexbor_plog_destroy(parser->log, true);
  701|  33.5k|    parser->idna = lxb_unicode_idna_destroy(parser->idna, true);
  702|       |
  703|  33.5k|    if (parser->buffer != NULL) {
  ------------------
  |  Branch (703:9): [True: 0, False: 33.5k]
  ------------------
  704|      0|        parser->buffer = lexbor_free(parser->buffer);
  705|      0|    }
  706|       |
  707|  33.5k|    if (destroy_self) {
  ------------------
  |  Branch (707:9): [True: 0, False: 33.5k]
  ------------------
  708|      0|        return lexbor_free(parser);
  709|      0|    }
  710|       |
  711|  33.5k|    return parser;
  712|  33.5k|}
lxb_url_destroy:
 4136|      2|{
 4137|      2|    if (url == NULL) {
  ------------------
  |  Branch (4137:9): [True: 2, False: 0]
  ------------------
 4138|      2|        return NULL;
 4139|      2|    }
 4140|       |
 4141|      0|    lxb_url_erase(url);
 4142|       |
 4143|      0|    return lexbor_mraw_free(url->mraw, url);
 4144|      2|}

php_lexbor.c:zm_startup_lexbor:
   60|      2|{
   61|      2|	lexbor_memory_setup(php_lexbor_malloc, php_lexbor_realloc, php_lexbor_calloc, php_lexbor_free);
   62|      2|	return SUCCESS;
   63|      2|}
php_lexbor.c:php_lexbor_malloc:
   32|   134k|{
   33|       |	return emalloc(size);
  ------------------
  |  |  150|   134k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|   134k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|   134k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|   134k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|   134k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   34|   134k|}
php_lexbor.c:php_lexbor_calloc:
   42|   235k|{
   43|       |	return ecalloc(num, size);
  ------------------
  |  |  157|   235k|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|   235k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|   235k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|   235k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|   235k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   44|   235k|}
php_lexbor.c:php_lexbor_free:
   47|   369k|{
   48|       |	efree(ptr);
  ------------------
  |  |  154|   369k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|   369k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|   369k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|   369k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|   369k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   49|   369k|}
php_lexbor.c:zm_info_lexbor:
   52|      1|{
   53|      1|	php_info_print_table_start();
   54|      1|	php_info_print_table_row(2, "Lexbor support", "active");
   55|      1|	php_info_print_table_row(2, "Lexbor version", LEXBOR_VERSION_STRING);
  ------------------
  |  |   33|      1|#define LEXBOR_VERSION_STRING LEXBOR_STRINGIZE(LEXBOR_VERSION_MAJOR) "."       \
  |  |  ------------------
  |  |  |  |   11|      1|#define LEXBOR_STRINGIZE(x) LEXBOR_STRINGIZE_HELPER(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   10|      1|#define LEXBOR_STRINGIZE_HELPER(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      1|                              LEXBOR_STRINGIZE(LEXBOR_VERSION_MINOR) "."       \
  |  |   35|      1|                              LEXBOR_STRINGIZE(LEXBOR_VERSION_PATCH)
  |  |  ------------------
  |  |  |  |   11|      1|#define LEXBOR_STRINGIZE(x) LEXBOR_STRINGIZE_HELPER(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   10|      1|#define LEXBOR_STRINGIZE_HELPER(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   56|      1|	php_info_print_table_end();
   57|      1|}

accel_new_interned_string:
  514|  23.4k|{
  515|  23.4k|	zend_ulong   h;
  516|  23.4k|	zend_string_table_pos_t pos, *hash_slot;
  517|  23.4k|	zend_string *s;
  518|       |
  519|  23.4k|	if (UNEXPECTED(file_cache_only)) {
  ------------------
  |  |  457|  23.4k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 23.4k]
  |  |  ------------------
  ------------------
  520|      0|		return str;
  521|      0|	}
  522|       |
  523|  23.4k|	if (IS_ACCEL_INTERNED(str)) {
  ------------------
  |  |  331|  23.4k|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  ------------------
  |  |  |  |  299|  23.4k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  ------------------
  |  |  |  |  299|  23.4k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (331:3): [True: 23.4k, False: 0]
  |  |  |  Branch (331:58): [True: 648, False: 22.8k]
  |  |  ------------------
  ------------------
  524|       |		/* this is already an interned string */
  525|    648|		return str;
  526|    648|	}
  527|       |
  528|  22.8k|	h = zend_string_hash_val(str);
  529|       |
  530|       |	/* check for existing interned string */
  531|  22.8k|	hash_slot = STRTAB_HASH_TO_SLOT(&ZCSG(interned_strings), h);
  ------------------
  |  |  420|  22.8k|	((zend_string_table_pos_t*)((char*)(tab) + sizeof(*(tab)) + ((h) & (tab)->nTableMask)))
  ------------------
  532|  22.8k|	pos = *hash_slot;
  533|  22.8k|	if (EXPECTED(pos != STRTAB_INVALID_POS)) {
  ------------------
  |  |  456|  22.8k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 16.1k, False: 6.61k]
  |  |  ------------------
  ------------------
  534|  17.2k|		do {
  535|  17.2k|			s = STRTAB_POS_TO_STR(&ZCSG(interned_strings), pos);
  ------------------
  |  |  424|  17.2k|	((zend_string*)((char*)(tab) + ((uintptr_t)(pos) * ZEND_STRING_TABLE_POS_ALIGNMENT)))
  |  |  ------------------
  |  |  |  |  244|  17.2k|#define ZEND_STRING_TABLE_POS_ALIGNMENT 8
  |  |  ------------------
  ------------------
  536|  17.2k|			if (EXPECTED(ZSTR_H(s) == h) && zend_string_equal_content(s, str)) {
  ------------------
  |  |  456|  34.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 15.6k, False: 1.59k]
  |  |  ------------------
  ------------------
  |  Branch (536:36): [True: 15.6k, False: 0]
  ------------------
  537|  15.6k|				goto finish;
  538|  15.6k|			}
  539|  1.59k|			pos = STRTAB_COLLISION(s);
  ------------------
  |  |  426|  1.59k|	(*((zend_string_table_pos_t*)((char*)s - sizeof(zend_string_table_pos_t))))
  ------------------
  540|  1.59k|		} while (pos != STRTAB_INVALID_POS);
  ------------------
  |  |  417|  1.59k|#define STRTAB_INVALID_POS 0
  ------------------
  |  Branch (540:12): [True: 1.09k, False: 498]
  ------------------
  541|  16.1k|	}
  542|       |
  543|  7.11k|	if (UNEXPECTED((char*)ZCSG(interned_strings).end - (char*)ZCSG(interned_strings).top < STRTAB_STR_SIZE(str))) {
  ------------------
  |  |  457|  7.11k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7.11k]
  |  |  ------------------
  ------------------
  544|       |	    /* no memory, return the same non-interned string */
  545|      0|		zend_accel_error(ACCEL_LOG_WARNING, "Interned string buffer overflow");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  546|      0|		return str;
  547|      0|	}
  548|       |
  549|       |	/* create new interning string in shared interned strings buffer */
  550|  7.11k|	ZCSG(interned_strings).nNumOfElements++;
  ------------------
  |  |  299|  7.11k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  551|  7.11k|	s = ZCSG(interned_strings).top;
  ------------------
  |  |  299|  7.11k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  552|  7.11k|	hash_slot = STRTAB_HASH_TO_SLOT(&ZCSG(interned_strings), h);
  ------------------
  |  |  420|  7.11k|	((zend_string_table_pos_t*)((char*)(tab) + sizeof(*(tab)) + ((h) & (tab)->nTableMask)))
  ------------------
  553|  7.11k|	STRTAB_COLLISION(s) = *hash_slot;
  ------------------
  |  |  426|  7.11k|	(*((zend_string_table_pos_t*)((char*)s - sizeof(zend_string_table_pos_t))))
  ------------------
  554|  7.11k|	*hash_slot = STRTAB_STR_TO_POS(&ZCSG(interned_strings), s);
  ------------------
  |  |  422|  7.11k|	((zend_string_table_pos_t)(((char*)s - (char*)(tab)) / ZEND_STRING_TABLE_POS_ALIGNMENT))
  |  |  ------------------
  |  |  |  |  244|  7.11k|#define ZEND_STRING_TABLE_POS_ALIGNMENT 8
  |  |  ------------------
  ------------------
  555|  7.11k|	GC_SET_REFCOUNT(s, 2);
  ------------------
  |  |  717|  7.11k|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  556|  7.11k|	GC_TYPE_INFO(s) = GC_STRING | ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT)| (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0);
  ------------------
  |  |  775|  7.11k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              	GC_TYPE_INFO(s) = GC_STRING | ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT)| (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0);
  ------------------
  |  |  806|  7.11k|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  612|  7.11k|#define IS_STRING					6
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  799|  7.11k|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  ------------------
  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  ------------------
  |  |  |  |  760|  7.11k|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(s) = GC_STRING | ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT)| (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0);
  ------------------
  |  |  838|  7.11k|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  ------------------
  |  |  |  |  801|  7.11k|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              	GC_TYPE_INFO(s) = GC_STRING | ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT)| (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0);
  ------------------
  |  |  840|  7.11k|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  ------------------
              	GC_TYPE_INFO(s) = GC_STRING | ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT)| (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0);
  ------------------
  |  |  760|  7.11k|#define GC_FLAGS_SHIFT				0
  ------------------
              	GC_TYPE_INFO(s) = GC_STRING | ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT)| (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0);
  ------------------
  |  |  841|    436|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  ------------------
  |  Branch (556:91): [True: 436, False: 6.67k]
  ------------------
  557|  7.11k|	ZSTR_H(s) = h;
  ------------------
  |  |   69|  7.11k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  558|  7.11k|	ZSTR_LEN(s) = ZSTR_LEN(str);
  ------------------
  |  |   68|  7.11k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	ZSTR_LEN(s) = ZSTR_LEN(str);
  ------------------
  |  |   68|  7.11k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  559|  7.11k|	memcpy(ZSTR_VAL(s), ZSTR_VAL(str), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|  7.11k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(s), ZSTR_VAL(str), ZSTR_LEN(s) + 1);
  ------------------
  |  |   67|  7.11k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	memcpy(ZSTR_VAL(s), ZSTR_VAL(str), ZSTR_LEN(s) + 1);
  ------------------
  |  |   68|  7.11k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  560|  7.11k|	ZCSG(interned_strings).top = STRTAB_NEXT(s);
  ------------------
  |  |  299|  7.11k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              	ZCSG(interned_strings).top = STRTAB_NEXT(s);
  ------------------
  |  |  430|  7.11k|	((zend_string*)((char*)(s) + STRTAB_STR_SIZE(s)))
  |  |  ------------------
  |  |  |  |  428|  7.11k|	ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(ZSTR_LEN(s)) + sizeof(zend_string_table_pos_t), ZEND_STRING_TABLE_POS_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.11k|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  561|       |
  562|  22.8k|finish:
  563|       |	/* Transfer CE_CACHE map ptr slot to new interned string.
  564|       |	 * Should only happen for permanent interned strings with permanent map_ptr slot. */
  565|  22.8k|	if (ZSTR_HAS_CE_CACHE(str) && !ZSTR_HAS_CE_CACHE(s)) {
  ------------------
  |  |  862|  45.6k|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|  22.8k|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|  22.8k|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|  22.8k|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|  22.8k|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 834, False: 21.9k]
  |  |  ------------------
  ------------------
              	if (ZSTR_HAS_CE_CACHE(str) && !ZSTR_HAS_CE_CACHE(s)) {
  ------------------
  |  |  862|    834|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|    834|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    834|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|    834|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|    834|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (565:32): [True: 348, False: 486]
  ------------------
  566|    348|		ZEND_ASSERT(GC_FLAGS(str) & IS_STR_PERMANENT);
  ------------------
  |  |  112|    348|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (566:3): [True: 0, False: 348]
  |  Branch (566:3): [True: 348, False: 0]
  ------------------
  567|    348|		GC_SET_REFCOUNT(s, GC_REFCOUNT(str));
  ------------------
  |  |  717|    348|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  568|    348|		GC_ADD_FLAGS(s, IS_STR_CLASS_NAME_MAP_PTR);
  ------------------
  |  |  780|    348|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    348|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    348|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    348|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    348|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 348]
  |  |  ------------------
  ------------------
  569|    348|	}
  570|       |
  571|  22.8k|	zend_string_release(str);
  572|  22.8k|	return s;
  573|  22.8k|}
zend_get_file_handle_timestamp:
 1044|  7.03k|{
 1045|  7.03k|	zend_stat_t statbuf = {0};
 1046|       |#ifdef ZEND_WIN32
 1047|       |	accel_time_t res;
 1048|       |#endif
 1049|       |
 1050|  7.03k|	if (sapi_module.get_stat &&
  ------------------
  |  Branch (1050:6): [True: 0, False: 7.03k]
  ------------------
 1051|      0|	    !EG(current_execute_data) &&
  ------------------
  |  |   45|  7.03k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1051:6): [True: 0, False: 0]
  ------------------
 1052|      0|	    file_handle->primary_script) {
  ------------------
  |  Branch (1052:6): [True: 0, False: 0]
  ------------------
 1053|       |
 1054|      0|		const zend_stat_t *tmpbuf = sapi_module.get_stat();
 1055|       |
 1056|      0|		if (tmpbuf) {
  ------------------
  |  Branch (1056:7): [True: 0, False: 0]
  ------------------
 1057|      0|			if (size) {
  ------------------
  |  Branch (1057:8): [True: 0, False: 0]
  ------------------
 1058|      0|				*size = tmpbuf->st_size;
 1059|      0|			}
 1060|      0|			return tmpbuf->st_mtime;
 1061|      0|		}
 1062|      0|	}
 1063|       |
 1064|       |#ifdef ZEND_WIN32
 1065|       |	res = zend_get_file_handle_timestamp_win(file_handle, size);
 1066|       |	if (res) {
 1067|       |		return res;
 1068|       |	}
 1069|       |#endif
 1070|       |
 1071|  7.03k|	switch (file_handle->type) {
 1072|      0|		case ZEND_HANDLE_FP:
  ------------------
  |  Branch (1072:3): [True: 0, False: 7.03k]
  ------------------
 1073|      0|			if (zend_fstat(fileno(file_handle->handle.fp), &statbuf) == -1) {
  ------------------
  |  |   97|      0|# define zend_fstat fstat
  ------------------
  |  Branch (1073:8): [True: 0, False: 0]
  ------------------
 1074|      0|				if (zend_get_stream_timestamp(ZSTR_VAL(file_handle->filename), &statbuf) != SUCCESS) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1074:9): [True: 0, False: 0]
  ------------------
 1075|      0|					return 0;
 1076|      0|				}
 1077|      0|			}
 1078|      0|			break;
 1079|      0|		case ZEND_HANDLE_FILENAME:
  ------------------
  |  Branch (1079:3): [True: 0, False: 7.03k]
  ------------------
 1080|      0|			if (file_handle->opened_path) {
  ------------------
  |  Branch (1080:8): [True: 0, False: 0]
  ------------------
 1081|      0|				char *file_path = ZSTR_VAL(file_handle->opened_path);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1082|       |
 1083|      0|				if (php_is_stream_path(file_path)) {
  ------------------
  |  Branch (1083:9): [True: 0, False: 0]
  ------------------
 1084|      0|					if (zend_get_stream_timestamp(file_path, &statbuf) == SUCCESS) {
  ------------------
  |  Branch (1084:10): [True: 0, False: 0]
  ------------------
 1085|      0|						break;
 1086|      0|					}
 1087|      0|				}
 1088|      0|				if (VCWD_STAT(file_path, &statbuf) != -1) {
  ------------------
  |  |  334|      0|#define VCWD_STAT(path, buff) php_sys_stat(path, buff)
  |  |  ------------------
  |  |  |  |  155|      0|# define php_sys_stat stat
  |  |  ------------------
  ------------------
  |  Branch (1088:9): [True: 0, False: 0]
  ------------------
 1089|      0|					break;
 1090|      0|				}
 1091|      0|			}
 1092|       |
 1093|      0|			if (zend_get_stream_timestamp(ZSTR_VAL(file_handle->filename), &statbuf) != SUCCESS) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1093:8): [True: 0, False: 0]
  ------------------
 1094|      0|				return 0;
 1095|      0|			}
 1096|      0|			break;
 1097|  7.03k|		case ZEND_HANDLE_STREAM:
  ------------------
  |  Branch (1097:3): [True: 7.03k, False: 0]
  ------------------
 1098|  7.03k|			{
 1099|  7.03k|				php_stream *stream = (php_stream *)file_handle->handle.stream.handle;
 1100|  7.03k|				php_stream_statbuf sb;
 1101|  7.03k|				int ret, er;
 1102|       |
 1103|  7.03k|				if (!stream ||
  ------------------
  |  Branch (1103:9): [True: 7.02k, False: 3]
  ------------------
 1104|      3|				    !stream->ops ||
  ------------------
  |  Branch (1104:9): [True: 0, False: 3]
  ------------------
 1105|  7.02k|				    !stream->ops->stat) {
  ------------------
  |  Branch (1105:9): [True: 0, False: 3]
  ------------------
 1106|  7.02k|					return 0;
 1107|  7.02k|				}
 1108|       |
 1109|      3|				er = EG(error_reporting);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
 1110|      3|				EG(error_reporting) = 0;
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
 1111|      3|				zend_try {
  ------------------
  |  |  276|      3|	{															\
  |  |  277|      3|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      3|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      3|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      3|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      3|																\
  |  |  280|      3|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      3|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      3|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 1112|      3|					ret = stream->ops->stat(stream, &sb);
 1113|      3|				} zend_catch {
  ------------------
  |  |  283|      3|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|      3|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      0|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1113:7): [True: 0, False: 3]
  |  Branch (1113:7): [True: 3, False: 0]
  |  Branch (1113:7): [True: 0, False: 0]
  |  Branch (1113:7): [True: 0, False: 0]
  ------------------
 1114|      0|					ret = -1;
 1115|      3|				} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|      3|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      3|	}
  ------------------
 1116|      3|				EG(error_reporting) = er;
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
 1117|      3|				if (ret != 0) {
  ------------------
  |  Branch (1117:9): [True: 0, False: 3]
  ------------------
 1118|      0|					return 0;
 1119|      0|				}
 1120|       |
 1121|      3|				statbuf = sb.sb;
 1122|      3|			}
 1123|      0|			break;
 1124|       |
 1125|      0|		default:
  ------------------
  |  Branch (1125:3): [True: 0, False: 7.03k]
  ------------------
 1126|      0|			return 0;
 1127|  7.03k|	}
 1128|       |
 1129|      3|	if (size) {
  ------------------
  |  Branch (1129:6): [True: 0, False: 3]
  ------------------
 1130|      0|		*size = statbuf.st_size;
 1131|      0|	}
 1132|       |	return statbuf.st_mtime;
 1133|  7.03k|}
validate_timestamp_and_record:
 1193|  26.5k|{
 1194|  26.5k|	if (persistent_script->timestamp == 0) {
  ------------------
  |  Branch (1194:6): [True: 0, False: 26.5k]
  ------------------
 1195|      0|		return SUCCESS; /* Don't check timestamps of preloaded scripts */
 1196|  26.5k|	} else if (ZCG(accel_directives).revalidate_freq &&
  ------------------
  |  |  306|  26.5k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1196:13): [True: 26.5k, False: 0]
  ------------------
 1197|  26.5k|	    persistent_script->dynamic_members.revalidate >= ZCG(request_time)) {
  ------------------
  |  |  306|  26.5k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1197:6): [True: 26.5k, False: 0]
  ------------------
 1198|  26.5k|		return SUCCESS;
 1199|  26.5k|	} else if (do_validate_timestamps(persistent_script, file_handle) == FAILURE) {
  ------------------
  |  Branch (1199:13): [True: 0, False: 0]
  ------------------
 1200|      0|		return FAILURE;
 1201|      0|	} else {
 1202|      0|		persistent_script->dynamic_members.revalidate = ZCG(request_time) + ZCG(accel_directives).revalidate_freq;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		persistent_script->dynamic_members.revalidate = ZCG(request_time) + ZCG(accel_directives).revalidate_freq;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 1203|      0|		return SUCCESS;
 1204|      0|	}
 1205|  26.5k|}
accel_make_persistent_key:
 1220|  38.9k|{
 1221|  38.9k|	const char *path = ZSTR_VAL(str);
  ------------------
  |  |   67|  38.9k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1222|  38.9k|	size_t path_length = ZSTR_LEN(str);
  ------------------
  |  |   68|  38.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1223|       |
 1224|  38.9k|	ZEND_ASSERT(GC_REFCOUNT(ZCG(key)) == 1);
  ------------------
  |  |  112|  38.9k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1224:2): [True: 0, False: 38.9k]
  |  Branch (1224:2): [True: 38.9k, False: 0]
  ------------------
 1225|  38.9k|	ZSTR_LEN(ZCG(key)) = 0;
  ------------------
  |  |   68|  38.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1226|       |
 1227|       |	/* CWD and include_path don't matter for absolute file names and streams */
 1228|  38.9k|	if (IS_ABSOLUTE_PATH(path, path_length)) {
  ------------------
  |  |  127|  38.9k|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|  38.9k|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (127:2): [True: 33.6k, False: 5.33k]
  |  |  ------------------
  ------------------
 1229|       |		/* pass */
 1230|  33.6k|	} else if (UNEXPECTED(php_is_stream_path(path))) {
  ------------------
  |  |  457|  5.33k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1.33k, False: 4.00k]
  |  |  ------------------
  ------------------
 1231|  1.33k|		if (!is_cacheable_stream_path(path)) {
  ------------------
  |  Branch (1231:7): [True: 1.33k, False: 0]
  ------------------
 1232|  1.33k|			return NULL;
 1233|  1.33k|		}
 1234|       |		/* pass */
 1235|  4.00k|	} else if (UNEXPECTED(!ZCG(accel_directives).use_cwd)) {
  ------------------
  |  |  457|  4.00k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.00k]
  |  |  ------------------
  ------------------
 1236|       |		/* pass */
 1237|  4.00k|	} else {
 1238|  4.00k|		const char *include_path = NULL, *cwd = NULL;
 1239|  4.00k|		size_t include_path_len = 0, cwd_len = 0;
 1240|  4.00k|		const zend_string *parent_script = NULL;
 1241|       |
 1242|  4.00k|		if (EXPECTED(ZCG(cwd_key_len))) {
  ------------------
  |  |  456|  4.00k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3.96k, False: 36]
  |  |  ------------------
  ------------------
 1243|  3.96k|			cwd = ZCG(cwd_key);
  ------------------
  |  |  306|  3.96k|# define ZCG(v) (accel_globals.v)
  ------------------
 1244|  3.96k|			cwd_len = ZCG(cwd_key_len);
  ------------------
  |  |  306|  3.96k|# define ZCG(v) (accel_globals.v)
  ------------------
 1245|  3.96k|		} else {
 1246|     36|			zend_string *cwd_str = accel_getcwd();
 1247|       |
 1248|     36|			if (UNEXPECTED(!cwd_str)) {
  ------------------
  |  |  457|     36|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 36]
  |  |  ------------------
  ------------------
 1249|       |				/* we don't handle this well for now. */
 1250|      0|				zend_accel_error(ACCEL_LOG_INFO, "getcwd() failed for '%s' (%d), please try to set opcache.use_cwd to 0 in ini file", path, errno);
  ------------------
  |  |   26|      0|#define ACCEL_LOG_INFO					3
  ------------------
 1251|      0|				return NULL;
 1252|      0|			}
 1253|     36|			cwd = ZSTR_VAL(cwd_str);
  ------------------
  |  |   67|     36|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1254|     36|			cwd_len = ZSTR_LEN(cwd_str);
  ------------------
  |  |   68|     36|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1255|     36|			if (ZCG(cwd_check)) {
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 36, False: 0]
  |  |  ------------------
  ------------------
 1256|     36|				ZCG(cwd_check) = false;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1257|     36|				if (ZCG(accelerator_enabled)) {
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 36, False: 0]
  |  |  ------------------
  ------------------
 1258|       |
 1259|     36|					zend_string *str = accel_find_interned_string(cwd_str);
 1260|     36|					if (!str) {
  ------------------
  |  Branch (1260:10): [True: 1, False: 35]
  ------------------
 1261|      1|						HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|      1|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|      1|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      1|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1262|      1|						SHM_UNPROTECT();
  ------------------
  |  |  348|      1|	do { \
  |  |  349|      1|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1263|      1|						zend_shared_alloc_lock();
 1264|      1|						str = accel_new_interned_string(zend_string_copy(cwd_str));
 1265|      1|						if (str == cwd_str) {
  ------------------
  |  Branch (1265:11): [True: 0, False: 1]
  ------------------
 1266|      0|							zend_string_release_ex(str, 0);
 1267|      0|							str = NULL;
 1268|      0|						}
 1269|      1|						zend_shared_alloc_unlock();
 1270|      1|						SHM_PROTECT();
  ------------------
  |  |  341|      1|	do { \
  |  |  342|      1|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1271|      1|						HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|      1|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|      1|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      1|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      1|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1272|      1|					}
 1273|     36|					if (str) {
  ------------------
  |  Branch (1273:10): [True: 36, False: 0]
  ------------------
 1274|     36|						char buf[32];
 1275|     36|						const char *res = zend_print_long_to_buf(buf + sizeof(buf) - 1, STRTAB_STR_TO_POS(&ZCSG(interned_strings), str));
  ------------------
  |  |  422|     36|	((zend_string_table_pos_t)(((char*)s - (char*)(tab)) / ZEND_STRING_TABLE_POS_ALIGNMENT))
  |  |  ------------------
  |  |  |  |  244|     36|#define ZEND_STRING_TABLE_POS_ALIGNMENT 8
  |  |  ------------------
  ------------------
 1276|       |
 1277|     36|						cwd_len = ZCG(cwd_key_len) = buf + sizeof(buf) - 1 - res;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1278|     36|						cwd = ZCG(cwd_key);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1279|     36|						memcpy(ZCG(cwd_key), res, cwd_len + 1);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1280|     36|					} else {
 1281|      0|						return NULL;
 1282|      0|					}
 1283|     36|				} else {
 1284|      0|					return NULL;
 1285|      0|				}
 1286|     36|			}
 1287|     36|		}
 1288|       |
 1289|  4.00k|		if (EXPECTED(ZCG(include_path_key_len))) {
  ------------------
  |  |  456|  4.00k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3.96k, False: 36]
  |  |  ------------------
  ------------------
 1290|  3.96k|			include_path = ZCG(include_path_key);
  ------------------
  |  |  306|  3.96k|# define ZCG(v) (accel_globals.v)
  ------------------
 1291|  3.96k|			include_path_len = ZCG(include_path_key_len);
  ------------------
  |  |  306|  3.96k|# define ZCG(v) (accel_globals.v)
  ------------------
 1292|  3.96k|		} else if (!ZCG(include_path) || ZSTR_LEN(ZCG(include_path)) == 0) {
  ------------------
  |  |  306|     72|# define ZCG(v) (accel_globals.v)
  ------------------
              		} else if (!ZCG(include_path) || ZSTR_LEN(ZCG(include_path)) == 0) {
  ------------------
  |  |   68|     36|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1292:14): [True: 0, False: 36]
  |  Branch (1292:36): [True: 0, False: 36]
  ------------------
 1293|      0|			include_path = "";
 1294|      0|			include_path_len = 0;
 1295|     36|		} else {
 1296|     36|			include_path = ZSTR_VAL(ZCG(include_path));
  ------------------
  |  |   67|     36|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1297|     36|			include_path_len = ZSTR_LEN(ZCG(include_path));
  ------------------
  |  |   68|     36|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1298|       |
 1299|     36|			if (ZCG(include_path_check)) {
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 36, False: 0]
  |  |  ------------------
  ------------------
 1300|     36|				ZCG(include_path_check) = false;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1301|     36|				if (ZCG(accelerator_enabled)) {
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 36, False: 0]
  |  |  ------------------
  ------------------
 1302|       |
 1303|     36|					zend_string *str = accel_find_interned_string(ZCG(include_path));
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1304|     36|					if (!str) {
  ------------------
  |  Branch (1304:10): [True: 2, False: 34]
  ------------------
 1305|      2|						HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|      2|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|      2|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      2|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1306|      2|						SHM_UNPROTECT();
  ------------------
  |  |  348|      2|	do { \
  |  |  349|      2|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1307|      2|						zend_shared_alloc_lock();
 1308|      2|						str = accel_new_interned_string(zend_string_copy(ZCG(include_path)));
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 1309|      2|						if (str == ZCG(include_path)) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1309:11): [True: 0, False: 2]
  ------------------
 1310|      0|							zend_string_release(str);
 1311|      0|							str = NULL;
 1312|      0|						}
 1313|      2|						zend_shared_alloc_unlock();
 1314|      2|						SHM_PROTECT();
  ------------------
  |  |  341|      2|	do { \
  |  |  342|      2|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1315|      2|						HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|      2|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|      2|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      2|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      2|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1316|      2|					}
 1317|     36|					if (str) {
  ------------------
  |  Branch (1317:10): [True: 36, False: 0]
  ------------------
 1318|     36|						char buf[32];
 1319|     36|						const char *res = zend_print_long_to_buf(buf + sizeof(buf) - 1, STRTAB_STR_TO_POS(&ZCSG(interned_strings), str));
  ------------------
  |  |  422|     36|	((zend_string_table_pos_t)(((char*)s - (char*)(tab)) / ZEND_STRING_TABLE_POS_ALIGNMENT))
  |  |  ------------------
  |  |  |  |  244|     36|#define ZEND_STRING_TABLE_POS_ALIGNMENT 8
  |  |  ------------------
  ------------------
 1320|       |
 1321|     36|						include_path_len = ZCG(include_path_key_len) = buf + sizeof(buf) - 1 - res;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1322|     36|						include_path = ZCG(include_path_key);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1323|     36|						memcpy(ZCG(include_path_key), res, include_path_len + 1);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 1324|     36|					} else {
 1325|      0|						return NULL;
 1326|      0|					}
 1327|     36|				} else {
 1328|      0|					return NULL;
 1329|      0|				}
 1330|     36|			}
 1331|     36|		}
 1332|       |
 1333|       |		/* Calculate key length */
 1334|  4.00k|		if (UNEXPECTED((size_t)(cwd_len + path_length + include_path_len + 2) >= ZCG_KEY_LEN)) {
  ------------------
  |  |  457|  4.00k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.00k]
  |  |  ------------------
  ------------------
 1335|      0|			return NULL;
 1336|      0|		}
 1337|       |
 1338|       |		/* Generate key
 1339|       |		 * Note - the include_path must be the last element in the key,
 1340|       |		 * since in itself, it may include colons (which we use to separate
 1341|       |		 * different components of the key)
 1342|       |		 */
 1343|  4.00k|		char *key = ZSTR_VAL(ZCG(key));
  ------------------
  |  |   67|  4.00k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1344|  4.00k|		memcpy(key, path, path_length);
 1345|  4.00k|		key[path_length] = ':';
 1346|  4.00k|		size_t key_length = path_length + 1;
 1347|  4.00k|		memcpy(key + key_length, cwd, cwd_len);
 1348|  4.00k|		key_length += cwd_len;
 1349|       |
 1350|  4.00k|		if (include_path_len) {
  ------------------
  |  Branch (1350:7): [True: 4.00k, False: 0]
  ------------------
 1351|  4.00k|			key[key_length] = ':';
 1352|  4.00k|			key_length += 1;
 1353|  4.00k|			memcpy(key + key_length, include_path, include_path_len);
 1354|  4.00k|			key_length += include_path_len;
 1355|  4.00k|		}
 1356|       |
 1357|       |		/* Here we add to the key the parent script directory,
 1358|       |		 * since fopen_wrappers from version 4.0.7 use current script's path
 1359|       |		 * in include path too.
 1360|       |		 */
 1361|  4.00k|		if (EXPECTED(EG(current_execute_data)) &&
  ------------------
  |  |  456|  8.00k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.00k, False: 0]
  |  |  ------------------
  ------------------
 1362|  4.00k|		    EXPECTED((parent_script = zend_get_executed_filename_ex()) != NULL)) {
  ------------------
  |  |  456|  4.00k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 4.00k, False: 0]
  |  |  ------------------
  ------------------
 1363|       |
 1364|  4.00k|			size_t parent_script_len = ZSTR_LEN(parent_script);
  ------------------
  |  |   68|  4.00k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1365|  44.0k|			while (parent_script_len > 0) {
  ------------------
  |  Branch (1365:11): [True: 44.0k, False: 0]
  ------------------
 1366|  44.0k|				--parent_script_len;
 1367|  44.0k|				if (IS_SLASH(ZSTR_VAL(parent_script)[parent_script_len])) {
  ------------------
  |  |  113|  44.0k|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 4.00k, False: 40.0k]
  |  |  ------------------
  ------------------
 1368|  4.00k|					break;
 1369|  4.00k|				}
 1370|  44.0k|			}
 1371|       |
 1372|  4.00k|			if (UNEXPECTED((size_t)(key_length + parent_script_len + 1) >= ZCG_KEY_LEN)) {
  ------------------
  |  |  457|  4.00k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4.00k]
  |  |  ------------------
  ------------------
 1373|      0|				return NULL;
 1374|      0|			}
 1375|  4.00k|			key[key_length] = ':';
 1376|  4.00k|			key_length += 1;
 1377|  4.00k|			memcpy(key + key_length, ZSTR_VAL(parent_script), parent_script_len);
  ------------------
  |  |   67|  4.00k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1378|  4.00k|			key_length += parent_script_len;
 1379|  4.00k|		}
 1380|  4.00k|		key[key_length] = '\0';
 1381|  4.00k|		ZSTR_H(ZCG(key)) = 0;
  ------------------
  |  |   69|  4.00k|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
 1382|  4.00k|		ZSTR_LEN(ZCG(key)) = key_length;
  ------------------
  |  |   68|  4.00k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1383|  4.00k|		return ZCG(key);
  ------------------
  |  |  306|  4.00k|# define ZCG(v) (accel_globals.v)
  ------------------
 1384|  4.00k|	}
 1385|       |
 1386|       |	/* not use_cwd */
 1387|  33.6k|	return str;
 1388|  38.9k|}
persistent_compile_file:
 2011|  36.9k|{
 2012|  36.9k|	zend_persistent_script *persistent_script = NULL;
 2013|  36.9k|	zend_string *key = NULL;
 2014|  36.9k|	bool from_shared_memory; /* if the script we've got is stored in SHM */
 2015|       |
 2016|  36.9k|	if (!file_handle->filename || !ZCG(accelerator_enabled)) {
  ------------------
  |  |  306|  36.9k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2016:6): [True: 0, False: 36.9k]
  |  Branch (2016:32): [True: 0, False: 36.9k]
  ------------------
 2017|       |		/* The Accelerator is disabled, act as if without the Accelerator */
 2018|      0|		ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2019|      0|		ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2020|      0|		if (file_handle->filename
  ------------------
  |  Branch (2020:7): [True: 0, False: 0]
  ------------------
 2021|      0|		 && ZCG(accel_directives).file_cache
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2021:7): [True: 0, False: 0]
  ------------------
 2022|      0|		 && ZCG(enabled) && accel_startup_ok) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2022:23): [True: 0, False: 0]
  ------------------
 2023|      0|			return file_cache_compile_file(file_handle, type);
 2024|      0|		}
 2025|      0|		return accelerator_orig_compile_file(file_handle, type);
 2026|  36.9k|	} else if (file_cache_only) {
  ------------------
  |  Branch (2026:13): [True: 0, False: 36.9k]
  ------------------
 2027|      0|		ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2028|      0|		ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2029|      0|		return file_cache_compile_file(file_handle, type);
 2030|  36.9k|	} else if ((ZCSG(restart_in_progress) && accel_restart_is_active())) {
  ------------------
  |  |  299|  73.9k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 36.9k]
  |  |  ------------------
  ------------------
  |  Branch (2030:43): [True: 0, False: 0]
  ------------------
 2031|      0|		if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2031:7): [True: 0, False: 0]
  ------------------
 2032|      0|			return file_cache_compile_file(file_handle, type);
 2033|      0|		}
 2034|      0|		ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2035|      0|		ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2036|      0|		return accelerator_orig_compile_file(file_handle, type);
 2037|      0|	}
 2038|       |
 2039|       |	/* In case this callback is called from include_once, require_once or it's
 2040|       |	 * a main FastCGI request, the key must be already calculated, and cached
 2041|       |	 * persistent script already found */
 2042|  36.9k|	if (ZCG(cache_persistent_script) &&
  ------------------
  |  |  306|  73.9k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 36.9k]
  |  |  ------------------
  ------------------
 2043|      0|	    ((!EG(current_execute_data) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2043:8): [True: 0, False: 0]
  ------------------
 2044|      0|	      file_handle->primary_script &&
  ------------------
  |  Branch (2044:8): [True: 0, False: 0]
  ------------------
 2045|      0|	      ZCG(cache_opline) == NULL) ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2045:8): [True: 0, False: 0]
  ------------------
 2046|      0|	     (EG(current_execute_data) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2047|      0|	      EG(current_execute_data)->func &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2047:8): [True: 0, False: 0]
  ------------------
 2048|      0|	      ZEND_USER_CODE(EG(current_execute_data)->func->common.type) &&
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2049|      0|	      ZCG(cache_opline) == EG(current_execute_data)->opline))) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              	      ZCG(cache_opline) == EG(current_execute_data)->opline))) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2049:8): [True: 0, False: 0]
  ------------------
 2050|       |
 2051|      0|		persistent_script = ZCG(cache_persistent_script);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2052|      0|		if (ZSTR_LEN(ZCG(key))) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2053|      0|			key = ZCG(key);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2054|      0|		}
 2055|       |
 2056|  36.9k|	} else {
 2057|  36.9k|		if (!ZCG(accel_directives).revalidate_path) {
  ------------------
  |  |  306|  36.9k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2057:7): [True: 36.9k, False: 0]
  ------------------
 2058|       |			/* try to find cached script by key */
 2059|  36.9k|			key = accel_make_persistent_key(file_handle->filename);
 2060|  36.9k|			if (!key) {
  ------------------
  |  Branch (2060:8): [True: 1.33k, False: 35.6k]
  ------------------
 2061|  1.33k|				ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|  1.33k|# define ZCG(v) (accel_globals.v)
  ------------------
 2062|  1.33k|				ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|  1.33k|# define ZCG(v) (accel_globals.v)
  ------------------
 2063|  1.33k|				return accelerator_orig_compile_file(file_handle, type);
 2064|  1.33k|			}
 2065|  35.6k|			persistent_script = zend_accel_hash_find(&ZCSG(hash), key);
  ------------------
  |  |  299|  35.6k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2066|  35.6k|		} else if (UNEXPECTED(php_is_stream_path(ZSTR_VAL(file_handle->filename)) && !is_cacheable_stream_path(ZSTR_VAL(file_handle->filename)))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2067|      0|			ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2068|      0|			ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2069|      0|			return accelerator_orig_compile_file(file_handle, type);
 2070|      0|		}
 2071|       |
 2072|  35.6k|		if (!persistent_script) {
  ------------------
  |  Branch (2072:7): [True: 9.05k, False: 26.5k]
  ------------------
 2073|       |			/* try to find cached script by full real path */
 2074|  9.05k|			zend_accel_hash_entry *bucket;
 2075|       |
 2076|       |			/* open file to resolve the path */
 2077|  9.05k|		    if (file_handle->type == ZEND_HANDLE_FILENAME
  ------------------
  |  Branch (2077:11): [True: 2.02k, False: 7.02k]
  ------------------
 2078|  2.02k|		     && accelerator_orig_zend_stream_open_function(file_handle) == FAILURE) {
  ------------------
  |  Branch (2078:11): [True: 45, False: 1.98k]
  ------------------
 2079|     45|				if (!EG(exception)) {
  ------------------
  |  |   45|     45|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2079:9): [True: 43, False: 2]
  ------------------
 2080|     43|					if (type == ZEND_REQUIRE) {
  ------------------
  |  | 1086|     43|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (2080:10): [True: 25, False: 18]
  ------------------
 2081|     25|						zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  431|     25|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
              						zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|     25|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2082|     25|					} else {
 2083|     18|						zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  430|     18|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              						zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2084|     18|					}
 2085|     43|				}
 2086|     45|				return NULL;
 2087|     45|		    }
 2088|       |
 2089|  9.01k|			if (file_handle->opened_path) {
  ------------------
  |  Branch (2089:8): [True: 3, False: 9.01k]
  ------------------
 2090|      3|				bucket = zend_accel_hash_find_entry(&ZCSG(hash), file_handle->opened_path);
  ------------------
  |  |  299|      3|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2091|       |
 2092|      3|				if (bucket) {
  ------------------
  |  Branch (2092:9): [True: 0, False: 3]
  ------------------
 2093|      0|					persistent_script = (zend_persistent_script *)bucket->data;
 2094|       |
 2095|      0|					if (key && !persistent_script->corrupted) {
  ------------------
  |  Branch (2095:10): [True: 0, False: 0]
  |  Branch (2095:17): [True: 0, False: 0]
  ------------------
 2096|      0|						HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|      0|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|      0|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2097|      0|						SHM_UNPROTECT();
  ------------------
  |  |  348|      0|	do { \
  |  |  349|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2098|      0|						zend_shared_alloc_lock();
 2099|      0|						zend_accel_add_key(key, bucket);
 2100|      0|						zend_shared_alloc_unlock();
 2101|      0|						SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2102|      0|						HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|      0|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|      0|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2103|      0|					}
 2104|      0|				}
 2105|      3|			}
 2106|  9.01k|		}
 2107|  35.6k|	}
 2108|       |
 2109|       |	/* clear cache */
 2110|  35.5k|	ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|  35.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2111|  35.5k|	ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|  35.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2112|       |
 2113|  35.5k|	if (persistent_script && persistent_script->corrupted) {
  ------------------
  |  Branch (2113:6): [True: 26.5k, False: 9.01k]
  |  Branch (2113:27): [True: 0, False: 26.5k]
  ------------------
 2114|      0|		persistent_script = NULL;
 2115|      0|	}
 2116|       |
 2117|       |	/* Make sure we only increase the currently running processes semaphore
 2118|       |     * once each execution (this function can be called more than once on
 2119|       |     * each execution)
 2120|       |     */
 2121|  35.5k|	if (!ZCG(counted)) {
  ------------------
  |  |  306|  35.5k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2121:6): [True: 33.5k, False: 1.98k]
  ------------------
 2122|  33.5k|		if (accel_activate_add() == FAILURE) {
  ------------------
  |  Branch (2122:7): [True: 0, False: 33.5k]
  ------------------
 2123|      0|			if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2123:8): [True: 0, False: 0]
  ------------------
 2124|      0|				return file_cache_compile_file(file_handle, type);
 2125|      0|			}
 2126|      0|			return accelerator_orig_compile_file(file_handle, type);
 2127|      0|		}
 2128|  33.5k|		ZCG(counted) = true;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2129|  33.5k|	}
 2130|       |
 2131|       |	/* Revalidate accessibility of cached file */
 2132|  35.5k|	if (EXPECTED(persistent_script != NULL) &&
  ------------------
  |  |  456|  71.1k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 26.5k, False: 9.01k]
  |  |  ------------------
  ------------------
 2133|  26.5k|	    UNEXPECTED(ZCG(accel_directives).validate_permission) &&
  ------------------
  |  |  457|  62.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 26.5k]
  |  |  ------------------
  ------------------
 2134|      0|	    file_handle->type == ZEND_HANDLE_FILENAME &&
  ------------------
  |  Branch (2134:6): [True: 0, False: 0]
  ------------------
 2135|      0|	    UNEXPECTED(check_persistent_script_access(persistent_script))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2136|      0|		if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2136:7): [True: 0, False: 0]
  ------------------
 2137|      0|			if (type == ZEND_REQUIRE) {
  ------------------
  |  | 1086|      0|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (2137:8): [True: 0, False: 0]
  ------------------
 2138|      0|				zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  431|      0|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
              				zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2139|      0|			} else {
 2140|      0|				zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  430|      0|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              				zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2141|      0|			}
 2142|      0|		}
 2143|      0|		return NULL;
 2144|      0|	}
 2145|       |
 2146|  35.5k|	HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|  35.5k|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|  35.5k|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  35.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2147|  35.5k|	SHM_UNPROTECT();
  ------------------
  |  |  348|  35.5k|	do { \
  |  |  349|  35.5k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  35.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 35.5k]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|  35.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 35.5k]
  |  |  ------------------
  ------------------
 2148|       |
 2149|       |	/* If script is found then validate_timestamps if option is enabled */
 2150|  35.5k|	if (persistent_script && ZCG(accel_directives).validate_timestamps) {
  ------------------
  |  |  306|  26.5k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2150:6): [True: 26.5k, False: 9.01k]
  |  Branch (2150:27): [True: 26.5k, False: 0]
  ------------------
 2151|  26.5k|		if (validate_timestamp_and_record(persistent_script, file_handle) == FAILURE) {
  ------------------
  |  Branch (2151:7): [True: 0, False: 26.5k]
  ------------------
 2152|      0|			zend_accel_lock_discard_script(persistent_script);
 2153|      0|			persistent_script = NULL;
 2154|      0|		}
 2155|  26.5k|	}
 2156|       |
 2157|       |	/* Check the second level cache */
 2158|  35.5k|	if (!persistent_script && ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|  7.03k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2158:6): [True: 7.03k, False: 28.5k]
  |  Branch (2158:28): [True: 0, False: 7.03k]
  ------------------
 2159|      0|		persistent_script = zend_file_cache_script_load(file_handle);
 2160|      0|	}
 2161|       |
 2162|       |	/* If script was not found or invalidated by validate_timestamps */
 2163|  35.5k|	if (!persistent_script) {
  ------------------
  |  Branch (2163:6): [True: 7.03k, False: 28.5k]
  ------------------
 2164|  7.03k|		uint32_t old_const_num = zend_hash_next_free_element(EG(zend_constants));
  ------------------
  |  |   45|  7.03k|# define EG(v) (executor_globals.v)
  ------------------
 2165|  7.03k|		zend_op_array *op_array;
 2166|       |
 2167|       |		/* Cache miss.. */
 2168|  7.03k|		ZCSG(misses)++;
  ------------------
  |  |  299|  7.03k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2169|       |
 2170|       |		/* No memory left. Behave like without the Accelerator */
 2171|  7.03k|		if (ZSMMG(memory_exhausted) || ZCSG(restart_pending)) {
  ------------------
  |  |  123|  14.0k|#define ZSMMG(element)		(smm_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (123:25): [True: 0, False: 7.03k]
  |  |  ------------------
  ------------------
              		if (ZSMMG(memory_exhausted) || ZCSG(restart_pending)) {
  ------------------
  |  |  299|  7.03k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 7.03k]
  |  |  ------------------
  ------------------
 2172|      0|			SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2173|      0|			HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|      0|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|      0|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2174|      0|			if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2174:8): [True: 0, False: 0]
  ------------------
 2175|      0|				return file_cache_compile_file(file_handle, type);
 2176|      0|			}
 2177|      0|			return accelerator_orig_compile_file(file_handle, type);
 2178|      0|		}
 2179|       |
 2180|  7.03k|		zend_begin_record_errors();
 2181|       |
 2182|  7.03k|		SHM_PROTECT();
  ------------------
  |  |  341|  7.03k|	do { \
  |  |  342|  7.03k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  7.03k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 7.03k]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|  7.03k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 7.03k]
  |  |  ------------------
  ------------------
 2183|  7.03k|		HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|  7.03k|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|  7.03k|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  7.03k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  7.03k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 7.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2184|  7.03k|		persistent_script = opcache_compile_file(file_handle, type, &op_array);
 2185|  7.03k|		HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|  7.03k|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|  7.03k|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  7.03k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2186|  7.03k|		SHM_UNPROTECT();
  ------------------
  |  |  348|  7.03k|	do { \
  |  |  349|  7.03k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  7.03k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 7.03k]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|  7.03k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 7.03k]
  |  |  ------------------
  ------------------
 2187|       |
 2188|       |		/* Try and cache the script and assume that it is returned from_shared_memory.
 2189|       |		 * If it isn't compile_and_cache_file() changes the flag to 0
 2190|       |		 */
 2191|  7.03k|		from_shared_memory = false;
 2192|  7.03k|		if (persistent_script) {
  ------------------
  |  Branch (2192:7): [True: 1, False: 7.03k]
  ------------------
 2193|      1|			if (ZCG(accel_directives).record_warnings) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2193:8): [True: 0, False: 1]
  ------------------
 2194|      0|				persistent_script->num_warnings = EG(errors).size;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2195|      0|				persistent_script->warnings = EG(errors).errors;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2196|      0|			}
 2197|       |
 2198|       |			/* See GH-17246: we disable GC so that user code cannot be executed during the optimizer run. */
 2199|      1|			bool orig_gc_state = gc_enable(false);
 2200|      1|			persistent_script = cache_script_in_shared_memory(persistent_script, key, &from_shared_memory);
 2201|      1|			gc_enable(orig_gc_state);
 2202|      1|		}
 2203|       |
 2204|       |		/* Caching is disabled, returning op_array;
 2205|       |		 * or something went wrong during compilation, returning NULL
 2206|       |		 */
 2207|  7.03k|		if (!persistent_script) {
  ------------------
  |  Branch (2207:7): [True: 6.51k, False: 514]
  ------------------
 2208|  6.51k|			SHM_PROTECT();
  ------------------
  |  |  341|  6.51k|	do { \
  |  |  342|  6.51k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  6.51k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 6.51k]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|  6.51k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 6.51k]
  |  |  ------------------
  ------------------
 2209|  6.51k|			HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|  6.51k|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|  6.51k|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  6.51k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  6.51k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 6.51k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2210|  6.51k|			zend_emit_recorded_errors();
 2211|  6.51k|			zend_free_recorded_errors();
 2212|  6.51k|			return op_array;
 2213|  6.51k|		}
 2214|    514|		if (from_shared_memory) {
  ------------------
  |  Branch (2214:7): [True: 1, False: 513]
  ------------------
 2215|       |			/* Delete immutable arrays moved into SHM */
 2216|      1|			uint32_t new_const_num = zend_hash_next_free_element(EG(zend_constants));
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 2217|      1|			while (new_const_num > old_const_num) {
  ------------------
  |  Branch (2217:11): [True: 0, False: 1]
  ------------------
 2218|      0|				new_const_num--;
 2219|      0|				zend_hash_index_del(EG(zend_constants), new_const_num);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2220|      0|			}
 2221|      1|		}
 2222|    514|		persistent_script->dynamic_members.last_used = ZCG(request_time);
  ------------------
  |  |  306|    514|# define ZCG(v) (accel_globals.v)
  ------------------
 2223|    514|		SHM_PROTECT();
  ------------------
  |  |  341|    514|	do { \
  |  |  342|    514|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|    514|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 514]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|    514|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 514]
  |  |  ------------------
  ------------------
 2224|    514|		HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|    514|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|    514|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    514|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    514|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 514]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2225|       |
 2226|       |		/* We may have switched to an existing persistent script that was persisted in
 2227|       |		 * the meantime. Make sure to use its warnings if available. */
 2228|    514|		if (ZCG(accel_directives).record_warnings) {
  ------------------
  |  |  306|    514|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2228:7): [True: 0, False: 514]
  ------------------
 2229|      0|			EG(record_errors) = false;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2230|      0|			zend_emit_recorded_errors_ex(persistent_script->num_warnings, persistent_script->warnings);
 2231|    514|		} else {
 2232|    514|			zend_emit_recorded_errors();
 2233|    514|		}
 2234|    514|		zend_free_recorded_errors();
 2235|  28.5k|	} else {
 2236|       |
 2237|  28.5k|#ifndef ZEND_WIN32
 2238|  28.5k|		ZCSG(hits)++; /* TBFixed: may lose one hit */
  ------------------
  |  |  299|  28.5k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2239|  28.5k|		persistent_script->dynamic_members.hits++; /* see above */
 2240|       |#else
 2241|       |#ifdef ZEND_ENABLE_ZVAL_LONG64
 2242|       |		InterlockedIncrement64(&ZCSG(hits));
 2243|       |		InterlockedIncrement64(&persistent_script->dynamic_members.hits);
 2244|       |#else
 2245|       |		InterlockedIncrement(&ZCSG(hits));
 2246|       |		InterlockedIncrement(&persistent_script->dynamic_members.hits);
 2247|       |#endif
 2248|       |#endif
 2249|       |
 2250|       |		/* see bug #15471 (old BTS) */
 2251|  28.5k|		if (persistent_script->script.filename) {
  ------------------
  |  Branch (2251:7): [True: 26.5k, False: 1.98k]
  ------------------
 2252|  26.5k|			if (!EG(current_execute_data) ||
  ------------------
  |  |   45|  53.1k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2252:8): [True: 26.5k, False: 0]
  ------------------
 2253|      0|			    !EG(current_execute_data)->func ||
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2253:8): [True: 0, False: 0]
  ------------------
 2254|      0|			    !ZEND_USER_CODE(EG(current_execute_data)->func->common.type) ||
  ------------------
  |  | 1081|  26.5k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  ------------------
  |  Branch (2254:8): [True: 0, False: 0]
  ------------------
 2255|      0|			    !EG(current_execute_data)->opline ||
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2255:8): [True: 0, False: 0]
  ------------------
 2256|      0|			    EG(current_execute_data)->opline->opcode != ZEND_INCLUDE_OR_EVAL ||
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			    EG(current_execute_data)->opline->opcode != ZEND_INCLUDE_OR_EVAL ||
  ------------------
  |  |  196|  26.5k|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (2256:8): [True: 0, False: 0]
  ------------------
 2257|      0|			    (EG(current_execute_data)->opline->extended_value != ZEND_INCLUDE_ONCE &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			    (EG(current_execute_data)->opline->extended_value != ZEND_INCLUDE_ONCE &&
  ------------------
  |  | 1085|      0|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (2257:9): [True: 0, False: 0]
  ------------------
 2258|  26.5k|			     EG(current_execute_data)->opline->extended_value != ZEND_REQUIRE_ONCE)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			     EG(current_execute_data)->opline->extended_value != ZEND_REQUIRE_ONCE)) {
  ------------------
  |  | 1087|      0|#define ZEND_REQUIRE_ONCE		(1<<4)
  ------------------
  |  Branch (2258:9): [True: 0, False: 0]
  ------------------
 2259|  26.5k|				if (zend_hash_add_empty_element(&EG(included_files), persistent_script->script.filename) != NULL) {
  ------------------
  |  |   45|  26.5k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2259:9): [True: 26.5k, False: 0]
  ------------------
 2260|       |					/* ext/phar has to load phar's metadata into memory */
 2261|  26.5k|					if (persistent_script->is_phar) {
  ------------------
  |  Branch (2261:10): [True: 0, False: 26.5k]
  ------------------
 2262|      0|						php_stream_statbuf ssb;
 2263|      0|						char *fname = emalloc(sizeof("phar://") + ZSTR_LEN(persistent_script->script.filename));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2264|       |
 2265|      0|						memcpy(fname, "phar://", sizeof("phar://") - 1);
 2266|      0|						memcpy(fname + sizeof("phar://") - 1, ZSTR_VAL(persistent_script->script.filename), ZSTR_LEN(persistent_script->script.filename) + 1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						memcpy(fname + sizeof("phar://") - 1, ZSTR_VAL(persistent_script->script.filename), ZSTR_LEN(persistent_script->script.filename) + 1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2267|      0|						php_stream_stat_path(fname, &ssb);
  ------------------
  |  |  413|      0|#define php_stream_stat_path(path, ssb)	_php_stream_stat_path((path), 0, (ssb), NULL)
  ------------------
 2268|      0|						efree(fname);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2269|      0|					}
 2270|  26.5k|				}
 2271|  26.5k|			}
 2272|  26.5k|		}
 2273|  28.5k|		persistent_script->dynamic_members.last_used = ZCG(request_time);
  ------------------
  |  |  306|  28.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2274|  28.5k|		SHM_PROTECT();
  ------------------
  |  |  341|  28.5k|	do { \
  |  |  342|  28.5k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  28.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 28.5k]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|  28.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 28.5k]
  |  |  ------------------
  ------------------
 2275|  28.5k|		HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|  28.5k|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|  28.5k|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  28.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  28.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 28.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2276|       |
 2277|  28.5k|		zend_emit_recorded_errors_ex(persistent_script->num_warnings, persistent_script->warnings);
 2278|  28.5k|		from_shared_memory = true;
 2279|  28.5k|	}
 2280|       |
 2281|       |	/* Fetch jit auto globals used in the script before execution */
 2282|  29.0k|	if (persistent_script->ping_auto_globals_mask & ~ZCG(auto_globals_mask)) {
  ------------------
  |  |  306|  29.0k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2282:6): [True: 0, False: 29.0k]
  ------------------
 2283|      0|		zend_accel_set_auto_globals(persistent_script->ping_auto_globals_mask & ~ZCG(auto_globals_mask));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2284|      0|	}
 2285|       |
 2286|  29.0k|	return zend_accel_load_script(persistent_script, from_shared_memory);
 2287|  35.5k|}
zm_activate_zend_accelerator:
 2667|  33.5k|{
 2668|  33.5k|	if (!ZCG(enabled) || !accel_startup_ok) {
  ------------------
  |  |  306|  67.1k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2668:6): [True: 0, False: 33.5k]
  |  Branch (2668:23): [True: 0, False: 33.5k]
  ------------------
 2669|      0|		ZCG(accelerator_enabled) = false;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2670|      0|		return SUCCESS;
 2671|      0|	}
 2672|       |
 2673|       |	/* PHP-5.4 and above return "double", but we use 1 sec precision */
 2674|  33.5k|	ZCG(auto_globals_mask) = 0;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2675|  33.5k|	ZCG(request_time) = (time_t)sapi_get_request_time();
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2676|  33.5k|	ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2677|  33.5k|	ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2678|  33.5k|	ZCG(include_path_key_len) = 0;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2679|  33.5k|	ZCG(include_path_check) = true;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2680|       |
 2681|  33.5k|	ZCG(cwd) = NULL;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2682|  33.5k|	ZCG(cwd_key_len) = 0;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2683|  33.5k|	ZCG(cwd_check) = true;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2684|       |
 2685|  33.5k|	if (file_cache_only) {
  ------------------
  |  Branch (2685:6): [True: 0, False: 33.5k]
  ------------------
 2686|      0|		ZCG(accelerator_enabled) = false;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2687|      0|		return SUCCESS;
 2688|      0|	}
 2689|       |
 2690|  33.5k|#ifndef ZEND_WIN32
 2691|  33.5k|	if (ZCG(accel_directives).validate_root) {
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2691:6): [True: 0, False: 33.5k]
  ------------------
 2692|      0|		struct stat buf;
 2693|       |
 2694|      0|		if (stat("/", &buf) != 0) {
  ------------------
  |  Branch (2694:7): [True: 0, False: 0]
  ------------------
 2695|      0|			ZCG(root_hash) = 0;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2696|      0|		} else {
 2697|      0|			ZCG(root_hash) = buf.st_ino;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2698|      0|			if (sizeof(buf.st_ino) > sizeof(ZCG(root_hash))) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2698:8): [Folded, False: 0]
  ------------------
 2699|      0|				if (ZCG(root_hash) != buf.st_ino) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2699:9): [True: 0, False: 0]
  ------------------
 2700|      0|					zend_string *key = ZSTR_INIT_LITERAL("opcache.enable", 0);
  ------------------
  |  |  141|      0|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 2701|      0|					zend_alter_ini_entry_chars(key, "0", 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME);
  ------------------
  |  |   25|      0|#define ZEND_INI_SYSTEM	(1<<2)
  ------------------
              					zend_alter_ini_entry_chars(key, "0", 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME);
  ------------------
  |  |  227|      0|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
 2702|      0|					zend_string_release_ex(key, 0);
 2703|      0|					zend_accel_error(ACCEL_LOG_WARNING, "Can't cache files in chroot() directory with too big inode");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
 2704|      0|					return SUCCESS;
 2705|      0|				}
 2706|      0|			}
 2707|      0|		}
 2708|  33.5k|	} else {
 2709|  33.5k|		ZCG(root_hash) = 0;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2710|  33.5k|	}
 2711|  33.5k|#endif
 2712|       |
 2713|  33.5k|	HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|  33.5k|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|  33.5k|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2714|  33.5k|	SHM_UNPROTECT();
  ------------------
  |  |  348|  33.5k|	do { \
  |  |  349|  33.5k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 33.5k]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
 2715|       |
 2716|  33.5k|	if (ZCG(counted)) {
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 2717|       |#ifdef ZTS
 2718|       |		zend_accel_error(ACCEL_LOG_WARNING, "Stuck count for thread id %lu", (unsigned long) tsrm_thread_id());
 2719|       |#else
 2720|      0|		zend_accel_error(ACCEL_LOG_WARNING, "Stuck count for pid %d", getpid());
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
 2721|      0|#endif
 2722|      0|		accel_unlock_all();
 2723|      0|		ZCG(counted) = false;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2724|      0|	}
 2725|       |
 2726|  33.5k|	if (ZCSG(restart_pending)) {
  ------------------
  |  |  299|  33.5k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 2727|      0|		zend_shared_alloc_lock();
 2728|      0|		if (ZCSG(restart_pending)) { /* check again, to ensure that the cache wasn't already cleaned by another process */
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2729|      0|			if (accel_is_inactive()) {
  ------------------
  |  Branch (2729:8): [True: 0, False: 0]
  ------------------
 2730|      0|				zend_accel_error(ACCEL_LOG_DEBUG, "Restarting!");
  ------------------
  |  |   27|      0|#define ACCEL_LOG_DEBUG					4
  ------------------
 2731|      0|				ZCSG(restart_pending) = false;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2732|      0|				switch ZCSG(restart_reason) {
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2733|      0|					case ACCEL_RESTART_OOM:
  ------------------
  |  Branch (2733:6): [True: 0, False: 0]
  ------------------
 2734|      0|						ZCSG(oom_restarts)++;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2735|      0|						break;
 2736|      0|					case ACCEL_RESTART_HASH:
  ------------------
  |  Branch (2736:6): [True: 0, False: 0]
  ------------------
 2737|      0|						ZCSG(hash_restarts)++;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2738|      0|						break;
 2739|      0|					case ACCEL_RESTART_USER:
  ------------------
  |  Branch (2739:6): [True: 0, False: 0]
  ------------------
 2740|      0|						ZCSG(manual_restarts)++;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2741|      0|						break;
 2742|      0|				}
 2743|      0|				accel_restart_enter();
 2744|       |
 2745|      0|				zend_map_ptr_reset();
 2746|      0|				zend_reset_cache_vars();
 2747|      0|				zend_accel_hash_clean(&ZCSG(hash));
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2748|       |
 2749|      0|				if (ZCG(accel_directives).interned_strings_buffer) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2749:9): [True: 0, False: 0]
  ------------------
 2750|      0|					accel_interned_strings_restore_state();
 2751|      0|				}
 2752|       |
 2753|      0|				zend_shared_alloc_restore_state();
 2754|      0|#ifdef PRELOAD_SUPPORT
 2755|      0|				if (ZCSG(preload_script)) {
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2756|      0|					preload_restart();
 2757|      0|				}
 2758|      0|#endif
 2759|       |
 2760|      0|#ifdef HAVE_JIT
 2761|      0|				zend_jit_restart();
 2762|      0|#endif
 2763|       |
 2764|      0|				ZCSG(accelerator_enabled) = ZCSG(cache_status_before_restart);
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              				ZCSG(accelerator_enabled) = ZCSG(cache_status_before_restart);
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2765|      0|				if (ZCSG(last_restart_time) < ZCG(request_time)) {
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              				if (ZCSG(last_restart_time) < ZCG(request_time)) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2765:9): [True: 0, False: 0]
  ------------------
 2766|      0|					ZCSG(last_restart_time) = ZCG(request_time);
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              					ZCSG(last_restart_time) = ZCG(request_time);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2767|      0|				} else {
 2768|      0|					ZCSG(last_restart_time)++;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2769|      0|				}
 2770|      0|				accel_restart_leave();
 2771|      0|			}
 2772|      0|		}
 2773|      0|		zend_shared_alloc_unlock();
 2774|      0|	}
 2775|       |
 2776|  33.5k|	ZCG(accelerator_enabled) = ZCSG(accelerator_enabled);
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
              	ZCG(accelerator_enabled) = ZCSG(accelerator_enabled);
  ------------------
  |  |  299|  33.5k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2777|       |
 2778|  33.5k|	SHM_PROTECT();
  ------------------
  |  |  341|  33.5k|	do { \
  |  |  342|  33.5k|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 33.5k]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
 2779|  33.5k|	HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|  33.5k|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|  33.5k|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2780|       |
 2781|  33.5k|	if (ZCG(accelerator_enabled) && ZCSG(last_restart_time) != ZCG(last_restart_time)) {
  ------------------
  |  |  306|  67.1k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
              	if (ZCG(accelerator_enabled) && ZCSG(last_restart_time) != ZCG(last_restart_time)) {
  ------------------
  |  |  299|  33.5k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              	if (ZCG(accelerator_enabled) && ZCSG(last_restart_time) != ZCG(last_restart_time)) {
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2781:34): [True: 0, False: 33.5k]
  ------------------
 2782|       |		/* SHM was reinitialized. */
 2783|      0|		ZCG(last_restart_time) = ZCSG(last_restart_time);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		ZCG(last_restart_time) = ZCSG(last_restart_time);
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2784|       |
 2785|       |		/* Reset in-process realpath cache */
 2786|      0|		realpath_cache_clean();
 2787|       |
 2788|      0|		accel_reset_pcre_cache();
 2789|      0|		ZCG(pcre_reseted) = false;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2790|  33.5k|	} else if (!ZCG(accelerator_enabled) && !ZCG(pcre_reseted)) {
  ------------------
  |  |  306|  67.1k|# define ZCG(v) (accel_globals.v)
  ------------------
              	} else if (!ZCG(accelerator_enabled) && !ZCG(pcre_reseted)) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2790:13): [True: 0, False: 33.5k]
  |  Branch (2790:42): [True: 0, False: 0]
  ------------------
 2791|      0|		accel_reset_pcre_cache();
 2792|      0|		ZCG(pcre_reseted) = true;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2793|      0|	}
 2794|       |
 2795|       |
 2796|  33.5k|#ifdef HAVE_JIT
 2797|  33.5k|	zend_jit_activate();
 2798|  33.5k|#endif
 2799|       |
 2800|  33.5k|#ifdef PRELOAD_SUPPORT
 2801|  33.5k|	if (ZCSG(preload_script)) {
  ------------------
  |  |  299|  33.5k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 2802|      0|		preload_activate();
 2803|      0|	}
 2804|  33.5k|#endif
 2805|       |
 2806|  33.5k|	return SUCCESS;
 2807|  33.5k|}
accel_deactivate:
 2811|  33.5k|{
 2812|  33.5k|	zend_jit_deactivate();
 2813|  33.5k|}
accel_post_deactivate:
 2817|  33.5k|{
 2818|  33.5k|	if (ZCG(cwd)) {
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 36, False: 33.5k]
  |  |  ------------------
  ------------------
 2819|     36|		zend_string_release_ex(ZCG(cwd), 0);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 2820|     36|		ZCG(cwd) = NULL;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
 2821|     36|	}
 2822|       |
 2823|  33.5k|	if (!ZCG(enabled) || !accel_startup_ok) {
  ------------------
  |  |  306|  67.1k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2823:6): [True: 0, False: 33.5k]
  |  Branch (2823:23): [True: 0, False: 33.5k]
  ------------------
 2824|      0|		return SUCCESS;
 2825|      0|	}
 2826|       |
 2827|  33.5k|	zend_shared_alloc_safe_unlock(); /* be sure we didn't leave cache locked */
 2828|  33.5k|	accel_unlock_all();
 2829|  33.5k|	ZCG(counted) = false;
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  ------------------
 2830|       |
 2831|  33.5k|	return SUCCESS;
 2832|  33.5k|}
start_accel_extension:
 3183|      2|{
 3184|       |	zend_register_extension(&opcache_extension_entry, NULL);
 3185|      2|}
ZendAccelerator.c:is_cacheable_stream_path:
  204|  1.33k|{
  205|  1.33k|	return memcmp(filename, "file://", sizeof("file://") - 1) == 0 ||
  ------------------
  |  Branch (205:9): [True: 0, False: 1.33k]
  ------------------
  206|  1.33k|	       memcmp(filename, "phar://", sizeof("phar://") - 1) == 0;
  ------------------
  |  Branch (206:9): [True: 0, False: 1.33k]
  ------------------
  207|  1.33k|}
ZendAccelerator.c:accel_getcwd:
  234|     36|{
  235|     36|	if (ZCG(cwd)) {
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 36]
  |  |  ------------------
  ------------------
  236|      0|		return ZCG(cwd);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  237|     36|	} else {
  238|     36|		char cwd[MAXPATHLEN + 1];
  239|       |
  240|     36|		if (!VCWD_GETCWD(cwd, MAXPATHLEN)) {
  ------------------
  |  |  328|     36|#define VCWD_GETCWD(buff, size) getcwd(buff, size)
  ------------------
  |  Branch (240:7): [True: 0, False: 36]
  ------------------
  241|      0|			return NULL;
  242|      0|		}
  243|     36|		ZCG(cwd) = zend_string_init(cwd, strlen(cwd), 0);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
  244|     36|		ZCG(cwd_key_len) = 0;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
  245|     36|		ZCG(cwd_check) = true;
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
  246|     36|		return ZCG(cwd);
  ------------------
  |  |  306|     36|# define ZCG(v) (accel_globals.v)
  ------------------
  247|     36|	}
  248|     36|}
ZendAccelerator.c:accel_find_interned_string:
  479|  37.1k|{
  480|  37.1k|	zend_ulong   h;
  481|  37.1k|	zend_string_table_pos_t pos;
  482|  37.1k|	zend_string *s;
  483|       |
  484|  37.1k|	if (IS_ACCEL_INTERNED(str)) {
  ------------------
  |  |  331|  37.1k|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  ------------------
  |  |  |  |  299|  37.1k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  ------------------
  |  |  |  |  299|  37.1k|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (331:3): [True: 37.1k, False: 0]
  |  |  |  Branch (331:58): [True: 9.71k, False: 27.4k]
  |  |  ------------------
  ------------------
  485|       |		/* this is already an interned string */
  486|  9.71k|		return str;
  487|  9.71k|	}
  488|       |
  489|  27.4k|	if (!ZCG(counted)) {
  ------------------
  |  |  306|  27.4k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (489:6): [True: 0, False: 27.4k]
  ------------------
  490|      0|		if (!ZCG(accelerator_enabled) || accel_activate_add() == FAILURE) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (490:7): [True: 0, False: 0]
  |  Branch (490:36): [True: 0, False: 0]
  ------------------
  491|      0|			return NULL;
  492|      0|		}
  493|      0|		ZCG(counted) = true;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  494|      0|	}
  495|       |
  496|  27.4k|	h = zend_string_hash_val(str);
  497|       |
  498|       |	/* check for existing interned string */
  499|  27.4k|	pos = *STRTAB_HASH_TO_SLOT(&ZCSG(interned_strings), h);
  ------------------
  |  |  420|  27.4k|	((zend_string_table_pos_t*)((char*)(tab) + sizeof(*(tab)) + ((h) & (tab)->nTableMask)))
  ------------------
  500|  27.4k|	if (EXPECTED(pos != STRTAB_INVALID_POS)) {
  ------------------
  |  |  456|  27.4k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10.8k, False: 16.5k]
  |  |  ------------------
  ------------------
  501|  12.2k|		do {
  502|  12.2k|			s = STRTAB_POS_TO_STR(&ZCSG(interned_strings), pos);
  ------------------
  |  |  424|  12.2k|	((zend_string*)((char*)(tab) + ((uintptr_t)(pos) * ZEND_STRING_TABLE_POS_ALIGNMENT)))
  |  |  ------------------
  |  |  |  |  244|  12.2k|#define ZEND_STRING_TABLE_POS_ALIGNMENT 8
  |  |  ------------------
  ------------------
  503|  12.2k|			if (EXPECTED(ZSTR_H(s) == h) && zend_string_equal_content(s, str)) {
  ------------------
  |  |  456|  24.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10.7k, False: 1.51k]
  |  |  ------------------
  ------------------
  |  Branch (503:36): [True: 10.7k, False: 2]
  ------------------
  504|  10.7k|				return s;
  505|  10.7k|			}
  506|  1.52k|			pos = STRTAB_COLLISION(s);
  ------------------
  |  |  426|  1.52k|	(*((zend_string_table_pos_t*)((char*)s - sizeof(zend_string_table_pos_t))))
  ------------------
  507|  1.52k|		} while (pos != STRTAB_INVALID_POS);
  ------------------
  |  |  417|  1.52k|#define STRTAB_INVALID_POS 0
  ------------------
  |  Branch (507:12): [True: 1.43k, False: 88]
  ------------------
  508|  10.8k|	}
  509|       |
  510|  16.6k|	return NULL;
  511|  27.4k|}
ZendAccelerator.c:is_phar_file:
 1519|      1|{
 1520|      1|	return filename && ZSTR_LEN(filename) >= sizeof(".phar") &&
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1520:9): [True: 1, False: 0]
  |  Branch (1520:21): [True: 1, False: 0]
  ------------------
 1521|      1|		!memcmp(ZSTR_VAL(filename) + ZSTR_LEN(filename) - (sizeof(".phar")-1), ".phar", sizeof(".phar")-1) &&
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		!memcmp(ZSTR_VAL(filename) + ZSTR_LEN(filename) - (sizeof(".phar")-1), ".phar", sizeof(".phar")-1) &&
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1521:3): [True: 0, False: 1]
  ------------------
 1522|      0|		!strstr(ZSTR_VAL(filename), "://");
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1522:3): [True: 0, False: 0]
  ------------------
 1523|      1|}
ZendAccelerator.c:accel_activate_add:
  343|  33.5k|{
  344|       |#ifdef ZEND_WIN32
  345|       |	SHM_UNPROTECT();
  346|       |	INCREMENT(mem_usage);
  347|       |	SHM_PROTECT();
  348|       |#else
  349|  33.5k|	struct flock mem_usage_lock;
  350|       |
  351|  33.5k|	mem_usage_lock.l_type = F_RDLCK;
  352|  33.5k|	mem_usage_lock.l_whence = SEEK_SET;
  353|  33.5k|	mem_usage_lock.l_start = 1;
  354|  33.5k|	mem_usage_lock.l_len = 1;
  355|       |
  356|  33.5k|	if (fcntl(lock_file, F_SETLK, &mem_usage_lock) == -1) {
  ------------------
  |  Branch (356:6): [True: 0, False: 33.5k]
  ------------------
  357|      0|		zend_accel_error(ACCEL_LOG_DEBUG, "UpdateC(+1):  %s (%d)", strerror(errno), errno);
  ------------------
  |  |   27|      0|#define ACCEL_LOG_DEBUG					4
  ------------------
  358|      0|		return FAILURE;
  359|      0|	}
  360|  33.5k|#endif
  361|  33.5k|	return SUCCESS;
  362|  33.5k|}
ZendAccelerator.c:opcache_compile_file:
 1753|  7.03k|{
 1754|  7.03k|	zend_persistent_script *new_persistent_script;
 1755|  7.03k|	uint32_t orig_functions_count, orig_class_count;
 1756|  7.03k|	zend_op_array *orig_active_op_array;
 1757|  7.03k|	zend_op_array *op_array;
 1758|  7.03k|	bool do_bailout = false;
 1759|  7.03k|	accel_time_t timestamp = 0;
 1760|  7.03k|	uint32_t orig_compiler_options = 0;
 1761|       |
 1762|       |	/* Try to open file */
 1763|  7.03k|	if (file_handle->type == ZEND_HANDLE_FILENAME) {
  ------------------
  |  Branch (1763:6): [True: 0, False: 7.03k]
  ------------------
 1764|      0|		if (accelerator_orig_zend_stream_open_function(file_handle) != SUCCESS) {
  ------------------
  |  Branch (1764:7): [True: 0, False: 0]
  ------------------
 1765|      0|			*op_array_p = NULL;
 1766|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1766:8): [True: 0, False: 0]
  ------------------
 1767|      0|				if (type == ZEND_REQUIRE) {
  ------------------
  |  | 1086|      0|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (1767:9): [True: 0, False: 0]
  ------------------
 1768|      0|					zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  431|      0|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
              					zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1769|      0|				} else {
 1770|      0|					zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |  430|      0|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
              					zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, ZSTR_VAL(file_handle->filename));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1771|      0|				}
 1772|      0|			}
 1773|      0|			return NULL;
 1774|      0|		}
 1775|      0|	}
 1776|       |
 1777|       |	/* check blacklist right after ensuring that file was opened */
 1778|  7.03k|	if (file_handle->opened_path && zend_accel_blacklist_is_blacklisted(&accel_blacklist, ZSTR_VAL(file_handle->opened_path), ZSTR_LEN(file_handle->opened_path))) {
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (file_handle->opened_path && zend_accel_blacklist_is_blacklisted(&accel_blacklist, ZSTR_VAL(file_handle->opened_path), ZSTR_LEN(file_handle->opened_path))) {
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1778:6): [True: 3, False: 7.02k]
  |  Branch (1778:34): [True: 0, False: 3]
  ------------------
 1779|      0|		SHM_UNPROTECT();
  ------------------
  |  |  348|      0|	do { \
  |  |  349|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1780|      0|		ZCSG(blacklist_misses)++;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 1781|      0|		SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1782|      0|		*op_array_p = accelerator_orig_compile_file(file_handle, type);
 1783|      0|		return NULL;
 1784|      0|	}
 1785|       |
 1786|  7.03k|	if (ZCG(accel_directives).validate_timestamps ||
  ------------------
  |  |  306|  7.03k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1786:6): [True: 7.03k, False: 0]
  ------------------
 1787|      0|	    ZCG(accel_directives).file_update_protection ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1787:6): [True: 0, False: 0]
  ------------------
 1788|  7.03k|	    ZCG(accel_directives).max_file_size > 0) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1788:6): [True: 0, False: 0]
  ------------------
 1789|  7.03k|		size_t size = 0;
 1790|       |
 1791|       |		/* Obtain the file timestamps, *before* actually compiling them,
 1792|       |		 * otherwise we have a race-condition.
 1793|       |		 */
 1794|  7.03k|		timestamp = zend_get_file_handle_timestamp(file_handle, ZCG(accel_directives).max_file_size > 0 ? &size : NULL);
  ------------------
  |  |  306|  7.03k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1794:59): [True: 0, False: 7.03k]
  ------------------
 1795|       |
 1796|       |		/* If we can't obtain a timestamp (that means file is possibly socket)
 1797|       |		 *  we won't cache it
 1798|       |		 */
 1799|  7.03k|		if (timestamp == 0) {
  ------------------
  |  Branch (1799:7): [True: 7.02k, False: 3]
  ------------------
 1800|  7.02k|			*op_array_p = accelerator_orig_compile_file(file_handle, type);
 1801|  7.02k|			return NULL;
 1802|  7.02k|		}
 1803|       |
 1804|       |		/* check if file is too new (may be it's not written completely yet) */
 1805|      3|		if (ZCG(accel_directives).file_update_protection &&
  ------------------
  |  |  306|      3|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1805:7): [True: 3, False: 0]
  ------------------
 1806|      3|		    ((accel_time_t)(ZCG(request_time) - ZCG(accel_directives).file_update_protection) < timestamp)) {
  ------------------
  |  |  306|      3|# define ZCG(v) (accel_globals.v)
  ------------------
              		    ((accel_time_t)(ZCG(request_time) - ZCG(accel_directives).file_update_protection) < timestamp)) {
  ------------------
  |  |  306|      3|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1806:7): [True: 2, False: 1]
  ------------------
 1807|      2|			*op_array_p = accelerator_orig_compile_file(file_handle, type);
 1808|      2|			return NULL;
 1809|      2|		}
 1810|       |
 1811|      1|		if (ZCG(accel_directives).max_file_size > 0 && size > (size_t)ZCG(accel_directives).max_file_size) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              		if (ZCG(accel_directives).max_file_size > 0 && size > (size_t)ZCG(accel_directives).max_file_size) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1811:7): [True: 0, False: 1]
  |  Branch (1811:50): [True: 0, False: 0]
  ------------------
 1812|      0|			SHM_UNPROTECT();
  ------------------
  |  |  348|      0|	do { \
  |  |  349|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1813|      0|			ZCSG(blacklist_misses)++;
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 1814|      0|			SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1815|      0|			*op_array_p = accelerator_orig_compile_file(file_handle, type);
 1816|      0|			return NULL;
 1817|      0|		}
 1818|      1|	}
 1819|       |
 1820|       |	/* Save the original values for the op_array, function table and class table */
 1821|      1|	orig_active_op_array = CG(active_op_array);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1822|      1|	orig_functions_count = EG(function_table)->nNumUsed;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1823|      1|	orig_class_count = EG(class_table)->nNumUsed;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 1824|       |
 1825|      1|	zend_try {
  ------------------
  |  |  276|      1|	{															\
  |  |  277|      1|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      1|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      1|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      1|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      1|																\
  |  |  280|      1|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      1|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      1|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1826|      1|		orig_compiler_options = CG(compiler_options);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1827|      1|		CG(compiler_options) |= ZEND_COMPILE_HANDLE_OP_ARRAY;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(compiler_options) |= ZEND_COMPILE_HANDLE_OP_ARRAY;
  ------------------
  |  | 1266|      1|#define ZEND_COMPILE_HANDLE_OP_ARRAY            (1<<2)
  ------------------
 1828|      1|		CG(compiler_options) |= ZEND_COMPILE_DELAYED_BINDING;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(compiler_options) |= ZEND_COMPILE_DELAYED_BINDING;
  ------------------
  |  | 1277|      1|#define ZEND_COMPILE_DELAYED_BINDING            (1<<5)
  ------------------
 1829|      1|		CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION;
  ------------------
  |  | 1280|      1|#define ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION   (1<<6)
  ------------------
 1830|      1|		CG(compiler_options) |= ZEND_COMPILE_IGNORE_OTHER_FILES;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(compiler_options) |= ZEND_COMPILE_IGNORE_OTHER_FILES;
  ------------------
  |  | 1298|      1|#define ZEND_COMPILE_IGNORE_OTHER_FILES			(1<<13)
  ------------------
 1831|      1|		CG(compiler_options) |= ZEND_COMPILE_IGNORE_OBSERVER;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(compiler_options) |= ZEND_COMPILE_IGNORE_OBSERVER;
  ------------------
  |  | 1313|      1|#define ZEND_COMPILE_IGNORE_OBSERVER			(1<<18)
  ------------------
 1832|       |#ifdef ZEND_WIN32
 1833|       |		/* On Windows, don't compile with internal classes. Shm may be attached from different
 1834|       |		 * processes with internal classes living in different addresses. */
 1835|       |		CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
 1836|       |#endif
 1837|      1|		if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1837:7): [True: 0, False: 1]
  ------------------
 1838|      0|			CG(compiler_options) |= ZEND_COMPILE_WITH_FILE_CACHE;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(compiler_options) |= ZEND_COMPILE_WITH_FILE_CACHE;
  ------------------
  |  | 1295|      0|#define ZEND_COMPILE_WITH_FILE_CACHE			(1<<12)
  ------------------
 1839|       |			/* Don't compile with internal classes for file cache, in case some extension is removed
 1840|       |			 * later on. We cannot assume it is there in the future. */
 1841|      0|			CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              			CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
  ------------------
  |  | 1274|      0|#define ZEND_COMPILE_IGNORE_INTERNAL_CLASSES    (1<<4)
  ------------------
 1842|      0|		}
 1843|      1|		op_array = *op_array_p = accelerator_orig_compile_file(file_handle, type);
 1844|      1|		CG(compiler_options) = orig_compiler_options;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1845|      1|	} zend_catch {
  ------------------
  |  |  283|      1|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|      1|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      0|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1845:4): [True: 0, False: 1]
  |  Branch (1845:4): [True: 1, False: 0]
  |  Branch (1845:4): [True: 0, False: 0]
  |  Branch (1845:4): [True: 0, False: 0]
  ------------------
 1846|      0|		op_array = NULL;
 1847|      0|		do_bailout = true;
 1848|      0|		CG(compiler_options) = orig_compiler_options;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
 1849|      1|	} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|      1|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      1|	}
  ------------------
 1850|       |
 1851|       |	/* Restore originals */
 1852|      1|	CG(active_op_array) = orig_active_op_array;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1853|       |
 1854|      1|	if (!op_array) {
  ------------------
  |  Branch (1854:6): [True: 0, False: 1]
  ------------------
 1855|       |		/* compilation failed */
 1856|      0|		if (do_bailout) {
  ------------------
  |  Branch (1856:7): [True: 0, False: 0]
  ------------------
 1857|      0|			EG(record_errors) = false;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1858|      0|			zend_free_recorded_errors();
 1859|      0|			zend_bailout();
  ------------------
  |  |  273|      0|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
 1860|      0|		}
 1861|      0|		return NULL;
 1862|      0|	}
 1863|       |
 1864|       |	/* Build the persistent_script structure.
 1865|       |	   Here we aren't sure we would store it, but we will need it
 1866|       |	   further anyway.
 1867|       |	*/
 1868|      1|	new_persistent_script = create_persistent_script();
 1869|      1|	new_persistent_script->script.main_op_array = *op_array;
 1870|      1|	zend_accel_move_user_functions(CG(function_table), CG(function_table)->nNumUsed - orig_functions_count, &new_persistent_script->script);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              	zend_accel_move_user_functions(CG(function_table), CG(function_table)->nNumUsed - orig_functions_count, &new_persistent_script->script);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1871|      1|	zend_accel_move_user_classes(CG(class_table), CG(class_table)->nNumUsed - orig_class_count, &new_persistent_script->script);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
              	zend_accel_move_user_classes(CG(class_table), CG(class_table)->nNumUsed - orig_class_count, &new_persistent_script->script);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1872|      1|	zend_accel_build_delayed_early_binding_list(new_persistent_script);
 1873|       |
 1874|      1|	efree(op_array); /* we have valid persistent_script, so it's safe to free op_array */
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1875|       |
 1876|       |	/* Fill in the ping_auto_globals_mask for the new script. If jit for auto globals is enabled we
 1877|       |	   will have to ping the used auto global variables before execution */
 1878|      1|	if (PG(auto_globals_jit)) {
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1879|      1|		new_persistent_script->ping_auto_globals_mask = zend_accel_get_auto_globals();
 1880|      1|	}
 1881|       |
 1882|      1|	if (ZCG(accel_directives).validate_timestamps) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1882:6): [True: 1, False: 0]
  ------------------
 1883|       |		/* Obtain the file timestamps, *before* actually compiling them,
 1884|       |		 * otherwise we have a race-condition.
 1885|       |		 */
 1886|      1|		new_persistent_script->timestamp = timestamp;
 1887|      1|		new_persistent_script->dynamic_members.revalidate = ZCG(request_time) + ZCG(accel_directives).revalidate_freq;
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              		new_persistent_script->dynamic_members.revalidate = ZCG(request_time) + ZCG(accel_directives).revalidate_freq;
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1888|      1|	}
 1889|       |
 1890|      1|	if (file_handle->opened_path) {
  ------------------
  |  Branch (1890:6): [True: 1, False: 0]
  ------------------
 1891|      1|		new_persistent_script->script.filename = zend_string_copy(file_handle->opened_path);
 1892|      1|	} else {
 1893|      0|		new_persistent_script->script.filename = zend_string_copy(file_handle->filename);
 1894|      0|	}
 1895|      1|	zend_string_hash_val(new_persistent_script->script.filename);
 1896|       |
 1897|       |	/* Now persistent_script structure is ready in process memory */
 1898|      1|	return new_persistent_script;
 1899|      1|}
ZendAccelerator.c:zend_accel_get_auto_globals:
 1724|      1|{
 1725|      1|	int mask = 0;
 1726|      1|	if (zend_hash_exists(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_SERVER))) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1726:6): [True: 0, False: 1]
  ------------------
 1727|      0|		mask |= ZEND_AUTOGLOBAL_MASK_SERVER;
  ------------------
  |  | 1719|      0|#define ZEND_AUTOGLOBAL_MASK_SERVER  (1 << 0)
  ------------------
 1728|      0|	}
 1729|      1|	if (zend_hash_exists(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_ENV))) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1729:6): [True: 0, False: 1]
  ------------------
 1730|      0|		mask |= ZEND_AUTOGLOBAL_MASK_ENV;
  ------------------
  |  | 1720|      0|#define ZEND_AUTOGLOBAL_MASK_ENV     (1 << 1)
  ------------------
 1731|      0|	}
 1732|      1|	if (zend_hash_exists(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_REQUEST))) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1732:6): [True: 0, False: 1]
  ------------------
 1733|      0|		mask |= ZEND_AUTOGLOBAL_MASK_REQUEST;
  ------------------
  |  | 1721|      0|#define ZEND_AUTOGLOBAL_MASK_REQUEST (1 << 2)
  ------------------
 1734|      0|	}
 1735|      1|	return mask;
 1736|      1|}
ZendAccelerator.c:cache_script_in_shared_memory:
 1587|      1|{
 1588|      1|	zend_accel_hash_entry *bucket;
 1589|      1|	uint32_t memory_used;
 1590|      1|	uint32_t orig_compiler_options;
 1591|       |
 1592|      1|	orig_compiler_options = CG(compiler_options);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1593|      1|	if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1593:6): [True: 0, False: 1]
  ------------------
 1594|      0|		CG(compiler_options) |= ZEND_COMPILE_WITH_FILE_CACHE;
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		CG(compiler_options) |= ZEND_COMPILE_WITH_FILE_CACHE;
  ------------------
  |  | 1295|      0|#define ZEND_COMPILE_WITH_FILE_CACHE			(1<<12)
  ------------------
 1595|      0|	}
 1596|      1|	zend_optimize_script(&new_persistent_script->script, ZCG(accel_directives).optimization_level, ZCG(accel_directives).opt_debug_level);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              	zend_optimize_script(&new_persistent_script->script, ZCG(accel_directives).optimization_level, ZCG(accel_directives).opt_debug_level);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1597|      1|	zend_accel_finalize_delayed_early_binding_list(new_persistent_script);
 1598|      1|	CG(compiler_options) = orig_compiler_options;
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1599|       |
 1600|       |	/* exclusive lock */
 1601|      1|	zend_shared_alloc_lock();
 1602|       |
 1603|       |	/* Check if we still need to put the file into the cache (may be it was
 1604|       |	 * already stored by another process. This final check is done under
 1605|       |	 * exclusive lock) */
 1606|      1|	bucket = zend_accel_hash_find_entry(&ZCSG(hash), new_persistent_script->script.filename);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 1607|      1|	if (bucket) {
  ------------------
  |  Branch (1607:6): [True: 0, False: 1]
  ------------------
 1608|      0|		zend_persistent_script *existing_persistent_script = (zend_persistent_script *)bucket->data;
 1609|       |
 1610|      0|		if (!existing_persistent_script->corrupted) {
  ------------------
  |  Branch (1610:7): [True: 0, False: 0]
  ------------------
 1611|      0|			if (key &&
  ------------------
  |  Branch (1611:8): [True: 0, False: 0]
  ------------------
 1612|      0|			    (!ZCG(accel_directives).validate_timestamps ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1612:9): [True: 0, False: 0]
  ------------------
 1613|      0|			     (new_persistent_script->timestamp == existing_persistent_script->timestamp))) {
  ------------------
  |  Branch (1613:9): [True: 0, False: 0]
  ------------------
 1614|      0|				zend_accel_add_key(key, bucket);
 1615|      0|			}
 1616|      0|			zend_shared_alloc_unlock();
 1617|      0|#if 1
 1618|       |			/* prefer the script already stored in SHM */
 1619|      0|			free_persistent_script(new_persistent_script, 1);
 1620|      0|			*from_shared_memory = true;
 1621|      0|			return existing_persistent_script;
 1622|       |#else
 1623|       |			return new_persistent_script;
 1624|       |#endif
 1625|      0|		}
 1626|      0|	}
 1627|       |
 1628|      1|	if (zend_accel_hash_is_full(&ZCSG(hash))) {
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  |  Branch (1628:6): [True: 0, False: 1]
  ------------------
 1629|      0|		zend_accel_error(ACCEL_LOG_DEBUG, "No more entries in hash table!");
  ------------------
  |  |   27|      0|#define ACCEL_LOG_DEBUG					4
  ------------------
 1630|      0|		ZSMMG(memory_exhausted) = true;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 1631|      0|		zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_HASH);
 1632|      0|		zend_shared_alloc_unlock();
 1633|      0|		if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1633:7): [True: 0, False: 0]
  ------------------
 1634|      0|			new_persistent_script = store_script_in_file_cache(new_persistent_script);
 1635|      0|			*from_shared_memory = true;
 1636|      0|		}
 1637|      0|		return new_persistent_script;
 1638|      0|	}
 1639|       |
 1640|      1|	zend_shared_alloc_init_xlat_table();
 1641|       |
 1642|       |	/* Calculate the required memory size */
 1643|      1|	memory_used = zend_accel_script_persist_calc(new_persistent_script, 1);
 1644|       |
 1645|       |	/* Allocate shared memory */
 1646|      1|	ZCG(mem) = zend_shared_alloc_aligned(memory_used);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1647|      1|	if (!ZCG(mem)) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1647:6): [True: 0, False: 1]
  ------------------
 1648|      0|		zend_shared_alloc_destroy_xlat_table();
 1649|      0|		zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_OOM);
 1650|      0|		zend_shared_alloc_unlock();
 1651|      0|		if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1651:7): [True: 0, False: 0]
  ------------------
 1652|      0|			new_persistent_script = store_script_in_file_cache(new_persistent_script);
 1653|      0|			*from_shared_memory = true;
 1654|      0|		}
 1655|      0|		return new_persistent_script;
 1656|      0|	}
 1657|       |
 1658|      1|	bzero_aligned(ZCG(mem), memory_used);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1659|       |
 1660|      1|	zend_shared_alloc_clear_xlat_table();
 1661|       |
 1662|       |	/* Copy into shared memory */
 1663|      1|	new_persistent_script = zend_accel_script_persist(new_persistent_script, 1);
 1664|       |
 1665|      1|	zend_shared_alloc_destroy_xlat_table();
 1666|       |
 1667|      1|	new_persistent_script->is_phar = is_phar_file(new_persistent_script->script.filename);
 1668|       |
 1669|       |	/* Consistency check */
 1670|      1|	if ((char*)new_persistent_script->mem + new_persistent_script->size != (char*)ZCG(mem)) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1670:6): [True: 0, False: 1]
  ------------------
 1671|      0|		zend_accel_error(
 1672|      0|			((char*)new_persistent_script->mem + new_persistent_script->size < (char*)ZCG(mem)) ? ACCEL_LOG_ERROR : ACCEL_LOG_WARNING,
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              			((char*)new_persistent_script->mem + new_persistent_script->size < (char*)ZCG(mem)) ? ACCEL_LOG_ERROR : ACCEL_LOG_WARNING,
  ------------------
  |  |   24|      0|#define ACCEL_LOG_ERROR					1
  ------------------
              			((char*)new_persistent_script->mem + new_persistent_script->size < (char*)ZCG(mem)) ? ACCEL_LOG_ERROR : ACCEL_LOG_WARNING,
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  |  Branch (1672:4): [True: 0, False: 0]
  ------------------
 1673|      0|			"Internal error: wrong size calculation: %s start=" ZEND_ADDR_FMT ", end=" ZEND_ADDR_FMT ", real=" ZEND_ADDR_FMT "\n",
 1674|      0|			ZSTR_VAL(new_persistent_script->script.filename),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1675|      0|			(size_t)new_persistent_script->mem,
 1676|      0|			(size_t)((char *)new_persistent_script->mem + new_persistent_script->size),
 1677|      0|			(size_t)ZCG(mem));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 1678|      0|	}
 1679|       |
 1680|       |	/* store script structure in the hash table */
 1681|      1|	bucket = zend_accel_hash_update(&ZCSG(hash), new_persistent_script->script.filename, 0, new_persistent_script);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 1682|      1|	if (bucket) {
  ------------------
  |  Branch (1682:6): [True: 1, False: 0]
  ------------------
 1683|      1|		zend_accel_error(ACCEL_LOG_INFO, "Cached script '%s'", ZSTR_VAL(new_persistent_script->script.filename));
  ------------------
  |  |   26|      1|#define ACCEL_LOG_INFO					3
  ------------------
              		zend_accel_error(ACCEL_LOG_INFO, "Cached script '%s'", ZSTR_VAL(new_persistent_script->script.filename));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1684|      1|		if (key &&
  ------------------
  |  Branch (1684:7): [True: 1, False: 0]
  ------------------
 1685|       |		    /* key may contain non-persistent PHAR aliases (see issues #115 and #149) */
 1686|      1|		    !zend_string_starts_with_literal(key, "phar://") &&
  ------------------
  |  |  420|      2|	zend_string_starts_with_cstr(str, "" prefix, sizeof(prefix) - 1)
  ------------------
  |  Branch (1686:7): [True: 1, False: 0]
  ------------------
 1687|      1|		    !zend_string_equals(new_persistent_script->script.filename, key)) {
  ------------------
  |  Branch (1687:7): [True: 0, False: 1]
  ------------------
 1688|       |			/* link key to the same persistent script in hash table */
 1689|      0|			zend_string *new_key = accel_new_interned_key(key);
 1690|       |
 1691|      0|			if (new_key) {
  ------------------
  |  Branch (1691:8): [True: 0, False: 0]
  ------------------
 1692|      0|				if (zend_accel_hash_update(&ZCSG(hash), new_key, 1, bucket)) {
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  |  Branch (1692:9): [True: 0, False: 0]
  ------------------
 1693|      0|					zend_accel_error(ACCEL_LOG_INFO, "Added key '%s'", ZSTR_VAL(key));
  ------------------
  |  |   26|      0|#define ACCEL_LOG_INFO					3
  ------------------
              					zend_accel_error(ACCEL_LOG_INFO, "Added key '%s'", ZSTR_VAL(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1694|      0|				} else {
 1695|      0|					zend_accel_error(ACCEL_LOG_DEBUG, "No more entries in hash table!");
  ------------------
  |  |   27|      0|#define ACCEL_LOG_DEBUG					4
  ------------------
 1696|      0|					ZSMMG(memory_exhausted) = true;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 1697|      0|					zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_HASH);
 1698|      0|				}
 1699|      0|			} else {
 1700|      0|				zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_OOM);
 1701|      0|			}
 1702|      0|		}
 1703|      1|	}
 1704|       |
 1705|      1|	new_persistent_script->dynamic_members.memory_consumption = ZEND_ALIGNED_SIZE(new_persistent_script->size);
  ------------------
  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1706|       |
 1707|      1|	zend_shared_alloc_unlock();
 1708|       |
 1709|      1|	if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1709:6): [True: 0, False: 1]
  ------------------
 1710|      0|		SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1711|      0|		zend_file_cache_script_store(new_persistent_script, /* is_shm */ true);
 1712|      0|		SHM_UNPROTECT();
  ------------------
  |  |  348|      0|	do { \
  |  |  349|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1713|      0|	}
 1714|       |
 1715|       |	*from_shared_memory = true;
 1716|      1|	return new_persistent_script;
 1717|      1|}
ZendAccelerator.c:bzero_aligned:
  161|      1|{
  162|      1|#if defined(__x86_64__)
  163|      1|	memset(mem, 0, size);
  164|       |#elif defined(__AVX__)
  165|       |	char *p = (char*)mem;
  166|       |	char *end = p + size;
  167|       |	__m256i ymm0 = _mm256_setzero_si256();
  168|       |
  169|       |	while (p < end) {
  170|       |		_mm256_store_si256((__m256i*)p, ymm0);
  171|       |		_mm256_store_si256((__m256i*)(p+32), ymm0);
  172|       |		p += 64;
  173|       |	}
  174|       |#elif defined(XSSE2)
  175|       |	char *p = (char*)mem;
  176|       |	char *end = p + size;
  177|       |	__m128i xmm0 = _mm_setzero_si128();
  178|       |
  179|       |	while (p < end) {
  180|       |		_mm_store_si128((__m128i*)p, xmm0);
  181|       |		_mm_store_si128((__m128i*)(p+16), xmm0);
  182|       |		_mm_store_si128((__m128i*)(p+32), xmm0);
  183|       |		_mm_store_si128((__m128i*)(p+48), xmm0);
  184|       |		p += 64;
  185|       |	}
  186|       |#else
  187|       |	memset(mem, 0, size);
  188|       |#endif
  189|      1|}
ZendAccelerator.c:accel_unlock_all:
  389|  33.5k|{
  390|       |#ifdef ZEND_WIN32
  391|       |	accel_deactivate_sub();
  392|       |#else
  393|  33.5k|	if (lock_file == -1) {
  ------------------
  |  Branch (393:6): [True: 0, False: 33.5k]
  ------------------
  394|      0|		return;
  395|      0|	}
  396|       |
  397|  33.5k|	struct flock mem_usage_unlock_all;
  398|       |
  399|  33.5k|	mem_usage_unlock_all.l_type = F_UNLCK;
  400|  33.5k|	mem_usage_unlock_all.l_whence = SEEK_SET;
  401|  33.5k|	mem_usage_unlock_all.l_start = 0;
  402|  33.5k|	mem_usage_unlock_all.l_len = 0;
  403|       |
  404|  33.5k|	if (fcntl(lock_file, F_SETLK, &mem_usage_unlock_all) == -1) {
  ------------------
  |  Branch (404:6): [True: 0, False: 33.5k]
  ------------------
  405|      0|		zend_accel_error(ACCEL_LOG_DEBUG, "UnlockAll:  %s (%d)", strerror(errno), errno);
  ------------------
  |  |   27|      0|#define ACCEL_LOG_DEBUG					4
  ------------------
  406|      0|	}
  407|  33.5k|#endif
  408|  33.5k|}
ZendAccelerator.c:zend_reset_cache_vars:
 2641|      2|{
 2642|      2|	ZSMMG(memory_exhausted) = false;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 2643|      2|	ZCSG(hits) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2644|      2|	ZCSG(misses) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2645|      2|	ZCSG(blacklist_misses) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2646|      2|	ZSMMG(wasted_shared_memory) = 0;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 2647|      2|	ZCSG(restart_pending) = false;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2648|      2|	ZCSG(force_restart_time) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2649|      2|	ZCSG(map_ptr_last) = CG(map_ptr_last);
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              	ZCSG(map_ptr_last) = CG(map_ptr_last);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 2650|      2|	ZCSG(map_ptr_static_last) = zend_map_ptr_static_last;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2651|      2|}
ZendAccelerator.c:accel_startup:
 3188|      2|{
 3189|       |#ifdef ZTS
 3190|       |	accel_globals_id = ts_allocate_fast_id(&accel_globals_id, &accel_globals_offset, sizeof(zend_accel_globals), (ts_allocate_ctor) accel_globals_ctor, (ts_allocate_dtor) accel_globals_dtor);
 3191|       |#else
 3192|      2|	accel_globals_ctor(&accel_globals);
 3193|      2|#endif
 3194|       |
 3195|      2|#ifdef HAVE_JIT
 3196|      2|	zend_jit_init();
 3197|      2|#endif
 3198|       |
 3199|       |#ifdef ZEND_WIN32
 3200|       |# if !defined(__has_feature) || !__has_feature(address_sanitizer)
 3201|       |	_setmaxstdio(2048); /* The default configuration is limited to 512 stdio files */
 3202|       |# endif
 3203|       |#endif
 3204|       |
 3205|      2|	zend_accel_register_ini_entries();
 3206|       |
 3207|       |#ifdef ZEND_WIN32
 3208|       |	if (UNEXPECTED(accel_gen_uname_id() == FAILURE)) {
 3209|       |		zps_startup_failure("Unable to get user name", NULL, accelerator_remove_cb);
 3210|       |		return SUCCESS;
 3211|       |	}
 3212|       |#endif
 3213|       |
 3214|      2|#ifdef HAVE_HUGE_CODE_PAGES
 3215|      2|	if (ZCG(accel_directives).huge_code_pages &&
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3215:6): [True: 0, False: 2]
  ------------------
 3216|      0|	    (strcmp(sapi_module.name, "cli") == 0 ||
  ------------------
  |  Branch (3216:7): [True: 0, False: 0]
  ------------------
 3217|      0|	     strcmp(sapi_module.name, "cli-server") == 0 ||
  ------------------
  |  Branch (3217:7): [True: 0, False: 0]
  ------------------
 3218|      0|		 strcmp(sapi_module.name, "cgi-fcgi") == 0 ||
  ------------------
  |  Branch (3218:4): [True: 0, False: 0]
  ------------------
 3219|      0|		 strcmp(sapi_module.name, "fpm-fcgi") == 0)) {
  ------------------
  |  Branch (3219:4): [True: 0, False: 0]
  ------------------
 3220|      0|		accel_move_code_to_huge_pages();
 3221|      0|	}
 3222|      2|#endif
 3223|       |
 3224|      2|	if (!ZCG(accel_directives).enable_cli && accel_sapi_is_cli()) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3224:6): [True: 2, False: 0]
  |  Branch (3224:43): [True: 0, False: 2]
  ------------------
 3225|      0|		accel_startup_ok = false;
 3226|      0|		zps_startup_failure("Opcode Caching is disabled for CLI", NULL, accelerator_remove_cb);
 3227|      0|		return SUCCESS;
 3228|      0|	}
 3229|       |
 3230|      2|	if (ZCG(enabled) == 0) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3230:6): [True: 0, False: 2]
  ------------------
 3231|      0|		return SUCCESS ;
 3232|      0|	}
 3233|       |
 3234|      2|	orig_post_startup_cb = zend_post_startup_cb;
 3235|      2|	zend_post_startup_cb = accel_post_startup;
 3236|       |
 3237|       |	/* Prevent unloading */
 3238|      2|	extension->handle = 0;
 3239|       |
 3240|      2|	return SUCCESS;
 3241|      2|}
ZendAccelerator.c:accel_globals_ctor:
 2966|      2|{
 2967|      2|	memset(accel_globals, 0, sizeof(zend_accel_globals));
 2968|      2|	accel_globals->key = zend_string_alloc(ZCG_KEY_LEN, true);
  ------------------
  |  |  155|      2|#define ZCG_KEY_LEN (MAXPATHLEN * 8)
  ------------------
 2969|      2|	GC_MAKE_PERSISTENT_LOCAL(accel_globals->key);
  ------------------
  |  | 1326|      2|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2970|      2|}
ZendAccelerator.c:accel_sapi_is_cli:
 2868|      2|{
 2869|      2|	return strcmp(sapi_module.name, "cli") == 0
  ------------------
  |  Branch (2869:9): [True: 0, False: 2]
  ------------------
 2870|      2|		|| strcmp(sapi_module.name, "phpdbg") == 0;
  ------------------
  |  Branch (2870:6): [True: 0, False: 2]
  ------------------
 2871|      2|}
ZendAccelerator.c:accel_post_startup:
 3244|      2|{
 3245|      2|	zend_function *func;
 3246|      2|	zend_ini_entry *ini_entry;
 3247|       |
 3248|      2|	if (orig_post_startup_cb) {
  ------------------
  |  Branch (3248:6): [True: 0, False: 2]
  ------------------
 3249|      0|		zend_result (*cb)(void) = orig_post_startup_cb;
 3250|       |
 3251|      0|		orig_post_startup_cb = NULL;
 3252|      0|		if (cb() != SUCCESS) {
  ------------------
  |  Branch (3252:7): [True: 0, False: 0]
  ------------------
 3253|      0|			return FAILURE;
 3254|      0|		}
 3255|      0|	}
 3256|       |
 3257|       |/********************************************/
 3258|       |/* End of non-SHM dependent initializations */
 3259|       |/********************************************/
 3260|      2|	file_cache_only = ZCG(accel_directives).file_cache_only;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 3261|      2|	if (!file_cache_only) {
  ------------------
  |  Branch (3261:6): [True: 2, False: 0]
  ------------------
 3262|      2|		size_t shm_size = ZCG(accel_directives).memory_consumption;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 3263|      2|#ifdef HAVE_JIT
 3264|      2|		size_t jit_size = 0;
 3265|      2|		bool reattached = false;
 3266|       |
 3267|      2|		if (JIT_G(enabled) && JIT_G(buffer_size)
  ------------------
  |  |  151|      4|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              		if (JIT_G(enabled) && JIT_G(buffer_size)
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3268|      0|		 && zend_jit_check_support() == SUCCESS) {
  ------------------
  |  Branch (3268:7): [True: 0, False: 0]
  ------------------
 3269|      0|			size_t page_size;
 3270|       |
 3271|      0|			page_size = zend_get_page_size();
 3272|      0|			if (!page_size || (page_size & (page_size - 1))) {
  ------------------
  |  Branch (3272:8): [True: 0, False: 0]
  |  Branch (3272:22): [True: 0, False: 0]
  ------------------
 3273|      0|				zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Failure to initialize shared memory structures - can't get page size.");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3274|      0|				abort();
 3275|      0|			}
 3276|      0|			jit_size = JIT_G(buffer_size);
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3277|      0|			jit_size = ZEND_MM_ALIGNED_SIZE_EX(jit_size, page_size);
  ------------------
  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
 3278|      0|			shm_size += jit_size;
 3279|      0|		}
 3280|       |
 3281|      2|		switch (zend_shared_alloc_startup(shm_size, jit_size)) {
  ------------------
  |  Branch (3281:11): [True: 2, False: 0]
  ------------------
 3282|       |#else
 3283|       |		switch (zend_shared_alloc_startup(shm_size, 0)) {
 3284|       |#endif
 3285|      2|			case ALLOC_SUCCESS:
  ------------------
  |  |   68|      2|#define ALLOC_SUCCESS           1
  ------------------
  |  Branch (3285:4): [True: 2, False: 0]
  ------------------
 3286|      2|				if (zend_accel_init_shm() == FAILURE) {
  ------------------
  |  Branch (3286:9): [True: 0, False: 2]
  ------------------
 3287|      0|					accel_startup_ok = false;
 3288|      0|					return FAILURE;
 3289|      0|				}
 3290|      2|				break;
 3291|      2|			case ALLOC_FAILURE:
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  |  Branch (3291:4): [True: 0, False: 2]
  ------------------
 3292|      0|				accel_startup_ok = false;
 3293|      0|				zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Failure to initialize shared memory structures - probably not enough shared memory.");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3294|      0|				return SUCCESS;
 3295|      0|			case NO_SHM_BACKEND:
  ------------------
  |  |   73|      0|#define NO_SHM_BACKEND          10
  ------------------
  |  Branch (3295:4): [True: 0, False: 2]
  ------------------
 3296|      0|				zend_accel_error(ACCEL_LOG_INFO, "Opcode Caching is disabled: No available SHM backend. Set opcache.enable=0 to hide this message.");
  ------------------
  |  |   26|      0|#define ACCEL_LOG_INFO					3
  ------------------
 3297|      0|				zps_startup_failure("No available SHM backend", NULL, accelerator_remove_cb);
 3298|       |				/* Do not abort PHP startup */
 3299|      0|				return SUCCESS;
 3300|       |
 3301|      0|			case SUCCESSFULLY_REATTACHED:
  ------------------
  |  |   70|      0|#define SUCCESSFULLY_REATTACHED 4
  ------------------
  |  Branch (3301:4): [True: 0, False: 2]
  ------------------
 3302|      0|#ifdef HAVE_JIT
 3303|      0|				reattached = true;
 3304|      0|#endif
 3305|      0|				zend_shared_alloc_lock();
 3306|      0|				accel_shared_globals = (zend_accel_shared_globals *) ZSMMG(app_shared_globals);
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 3307|      0|				zend_interned_strings_set_request_storage_handlers(
 3308|      0|					accel_new_interned_string_for_php,
 3309|      0|					accel_init_interned_string_for_php,
 3310|      0|					accel_init_interned_string_for_php);
 3311|      0|				zend_shared_alloc_unlock();
 3312|      0|				break;
 3313|      0|			case FAILED_REATTACHED:
  ------------------
  |  |   69|      0|#define FAILED_REATTACHED       2
  ------------------
  |  Branch (3313:4): [True: 0, False: 2]
  ------------------
 3314|      0|				accel_startup_ok = false;
 3315|      0|				zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Failure to initialize shared memory structures - cannot reattach to exiting shared memory.");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3316|      0|				return SUCCESS;
 3317|       |#if ENABLE_FILE_CACHE_FALLBACK
 3318|       |			case ALLOC_FALLBACK:
 3319|       |				zend_shared_alloc_lock();
 3320|       |				file_cache_only = true;
 3321|       |				fallback_process = true;
 3322|       |				zend_shared_alloc_unlock();
 3323|       |				goto file_cache_fallback;
 3324|       |#endif
 3325|      2|		}
 3326|       |
 3327|       |		/* from this point further, shared memory is supposed to be OK */
 3328|       |
 3329|       |		/* remember the last restart time in the process memory */
 3330|      2|		ZCG(last_restart_time) = ZCSG(last_restart_time);
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
              		ZCG(last_restart_time) = ZCSG(last_restart_time);
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 3331|       |
 3332|      2|		zend_shared_alloc_lock();
 3333|      2|#ifdef HAVE_JIT
 3334|      2|		if (JIT_G(enabled)) {
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 3335|      0|			if (JIT_G(buffer_size) == 0) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
  |  Branch (3335:8): [True: 0, False: 0]
  ------------------
 3336|      0|				JIT_G(enabled) = false;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3337|      0|				JIT_G(on) = false;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3338|      0|			} else if (!ZSMMG(reserved)) {
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (3338:15): [True: 0, False: 0]
  ------------------
 3339|      0|				zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Could not enable JIT: could not use reserved buffer!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3340|      0|			} else {
 3341|      0|				zend_jit_startup(ZSMMG(reserved), jit_size, reattached);
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 3342|      0|				zend_jit_startup_ok = true;
 3343|      0|			}
 3344|      0|		}
 3345|      2|#endif
 3346|      2|		zend_shared_alloc_save_state();
 3347|      2|		zend_shared_alloc_unlock();
 3348|       |
 3349|      2|		SHM_PROTECT();
  ------------------
  |  |  341|      2|	do { \
  |  |  342|      2|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3350|      2|	} else if (!ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3350:13): [True: 0, False: 0]
  ------------------
 3351|      0|		accel_startup_ok = false;
 3352|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "opcache.file_cache_only is set without a proper setting of opcache.file_cache");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3353|      0|		return SUCCESS;
 3354|      0|	} else {
 3355|      0|#ifdef HAVE_JIT
 3356|      0|		JIT_G(enabled) = false;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3357|      0|		JIT_G(on) = false;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3358|      0|#endif
 3359|      0|		accel_shared_globals = calloc(1, sizeof(zend_accel_shared_globals));
 3360|      0|	}
 3361|       |
 3362|       |	/* opcache.file_cache_read_only should only be enabled when all script files are read-only */
 3363|      2|	int file_cache_access_mode = 0;
 3364|       |
 3365|      2|	if (ZCG(accel_directives).file_cache_read_only) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3365:6): [True: 0, False: 2]
  ------------------
 3366|      0|		zend_accel_error(ACCEL_LOG_INFO, "opcache.file_cache is in read-only mode");
  ------------------
  |  |   26|      0|#define ACCEL_LOG_INFO					3
  ------------------
 3367|       |
 3368|      0|		if (!ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3368:7): [True: 0, False: 0]
  ------------------
 3369|      0|			accel_startup_ok = false;
 3370|      0|			zend_accel_error_noreturn(ACCEL_LOG_FATAL, "opcache.file_cache_read_only is set without a proper setting of opcache.file_cache");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3371|      0|			return SUCCESS;
 3372|      0|		}
 3373|       |
 3374|       |		/* opcache.file_cache is read only, so ensure the directory is readable */
 3375|      0|#ifndef ZEND_WIN32
 3376|      0|		file_cache_access_mode = R_OK | X_OK;
 3377|       |#else
 3378|       |		file_cache_access_mode = 04; // Read access
 3379|       |#endif
 3380|      2|	} else {
 3381|       |		/* opcache.file_cache isn't read only, so ensure the directory is writable */
 3382|      2|#ifndef ZEND_WIN32
 3383|      2|		file_cache_access_mode = R_OK | W_OK | X_OK;
 3384|       |#else
 3385|       |		file_cache_access_mode = 06; // Read and write access
 3386|       |#endif
 3387|      2|	}
 3388|       |
 3389|      2|	if ( ZCG(accel_directives).file_cache ) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3389:7): [True: 0, False: 2]
  ------------------
 3390|      0|		zend_accel_error(ACCEL_LOG_INFO, "opcache.file_cache running with PHP build ID: %.32s", zend_system_id);
  ------------------
  |  |   26|      0|#define ACCEL_LOG_INFO					3
  ------------------
 3391|       |
 3392|      0|		zend_stat_t buf = {0};
 3393|       |
 3394|      0|		if (!IS_ABSOLUTE_PATH(ZCG(accel_directives).file_cache, strlen(ZCG(accel_directives).file_cache)) ||
  ------------------
  |  |  127|      0|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|      0|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  ------------------
  |  Branch (3394:7): [True: 0, False: 0]
  ------------------
 3395|      0|			zend_stat(ZCG(accel_directives).file_cache, &buf) != 0 ||
  ------------------
  |  |   98|      0|# define zend_stat stat
  ------------------
              			zend_stat(ZCG(accel_directives).file_cache, &buf) != 0 ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3395:4): [True: 0, False: 0]
  ------------------
 3396|      0|			!S_ISDIR(buf.st_mode) ||
  ------------------
  |  Branch (3396:4): [True: 0, False: 0]
  ------------------
 3397|      0|#ifndef ZEND_WIN32
 3398|      0|			access(ZCG(accel_directives).file_cache, file_cache_access_mode) != 0
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3398:4): [True: 0, False: 0]
  ------------------
 3399|       |#else
 3400|       |			_access(ZCG(accel_directives).file_cache, file_cache_access_mode) != 0
 3401|       |#endif
 3402|      0|			) {
 3403|      0|			accel_startup_ok = false;
 3404|      0|			zend_accel_error_noreturn(ACCEL_LOG_FATAL, "opcache.file_cache must be a full path of an accessible directory");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 3405|      0|			return SUCCESS;
 3406|      0|		}
 3407|      0|	}
 3408|       |
 3409|       |#if ENABLE_FILE_CACHE_FALLBACK
 3410|       |file_cache_fallback:
 3411|       |#endif
 3412|       |
 3413|       |	/* Override compiler */
 3414|      2|	accelerator_orig_compile_file = zend_compile_file;
 3415|      2|	zend_compile_file = persistent_compile_file;
 3416|       |
 3417|       |	/* Override stream opener function (to eliminate open() call caused by
 3418|       |	 * include/require statements ) */
 3419|      2|	accelerator_orig_zend_stream_open_function = zend_stream_open_function;
 3420|      2|	zend_stream_open_function = persistent_stream_open_function;
 3421|       |
 3422|       |	/* Override path resolver function (to eliminate stat() calls caused by
 3423|       |	 * include_once/require_once statements */
 3424|      2|	accelerator_orig_zend_resolve_path = zend_resolve_path;
 3425|      2|	zend_resolve_path = persistent_zend_resolve_path;
 3426|       |
 3427|       |	/* Override chdir() function */
 3428|      2|	if ((func = zend_hash_str_find_ptr(CG(function_table), "chdir", sizeof("chdir")-1)) != NULL &&
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3428:6): [True: 0, False: 2]
  ------------------
 3429|      0|	    func->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (3429:6): [True: 0, False: 0]
  ------------------
 3430|      0|		orig_chdir = func->internal_function.handler;
 3431|      0|		func->internal_function.handler = ZEND_FN(accel_chdir);
  ------------------
  |  |   71|      0|#define ZEND_FN(name) zif_##name
  ------------------
 3432|      0|	}
 3433|      2|	ZCG(cwd) = NULL;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 3434|      2|	ZCG(include_path) = NULL;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 3435|       |
 3436|       |	/* Override "include_path" modifier callback */
 3437|      2|	if ((ini_entry = zend_hash_str_find_ptr(EG(ini_directives), "include_path", sizeof("include_path")-1)) != NULL) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3437:6): [True: 2, False: 0]
  ------------------
 3438|      2|		ZCG(include_path) = ini_entry->value;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 3439|      2|		orig_include_path_on_modify = ini_entry->on_modify;
 3440|      2|		ini_entry->on_modify = accel_include_path_on_modify;
 3441|      2|	}
 3442|       |
 3443|      2|	accel_startup_ok = true;
 3444|       |
 3445|       |	/* Override file_exists(), is_file() and is_readable() */
 3446|      2|	zend_accel_override_file_functions();
 3447|       |
 3448|       |	/* Load black list */
 3449|      2|	accel_blacklist.entries = NULL;
 3450|      2|	if (ZCG(enabled) && accel_startup_ok &&
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3450:22): [True: 2, False: 0]
  ------------------
 3451|      2|	    ZCG(accel_directives).user_blacklist_filename &&
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3451:6): [True: 2, False: 0]
  ------------------
 3452|      2|	    *ZCG(accel_directives.user_blacklist_filename)) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3452:6): [True: 0, False: 2]
  ------------------
 3453|      0|		zend_accel_blacklist_init(&accel_blacklist);
 3454|      0|		zend_accel_blacklist_load(&accel_blacklist, ZCG(accel_directives.user_blacklist_filename));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 3455|      0|	}
 3456|       |
 3457|      2|	if (!file_cache_only && ZCG(accel_directives).interned_strings_buffer) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (3457:6): [True: 2, False: 0]
  |  Branch (3457:26): [True: 2, False: 0]
  ------------------
 3458|      2|		accel_use_shm_interned_strings();
 3459|      2|	}
 3460|       |
 3461|      2|	if (accel_finish_startup() != SUCCESS) {
  ------------------
  |  Branch (3461:6): [True: 0, False: 2]
  ------------------
 3462|      0|		return FAILURE;
 3463|      0|	}
 3464|       |
 3465|      2|	if (ZCG(enabled) && accel_startup_ok) {
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3465:22): [True: 2, False: 0]
  ------------------
 3466|       |		/* Override inheritance cache callbaks */
 3467|      2|		accelerator_orig_inheritance_cache_get = zend_inheritance_cache_get;
 3468|      2|		accelerator_orig_inheritance_cache_add = zend_inheritance_cache_add;
 3469|      2|		zend_inheritance_cache_get = zend_accel_inheritance_cache_get;
 3470|      2|		zend_inheritance_cache_add = zend_accel_inheritance_cache_add;
 3471|      2|	}
 3472|       |
 3473|      2|	return SUCCESS;
 3474|      2|}
ZendAccelerator.c:zend_accel_init_shm:
 2874|      2|{
 2875|      2|	int i;
 2876|      2|	size_t accel_shared_globals_size;
 2877|       |
 2878|      2|	zend_shared_alloc_lock();
 2879|       |
 2880|      2|	if (ZCG(accel_directives).interned_strings_buffer) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2880:6): [True: 2, False: 0]
  ------------------
 2881|      2|		accel_shared_globals_size = sizeof(zend_accel_shared_globals) + ZCG(accel_directives).interned_strings_buffer * 1024 * 1024;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 2882|      2|	} else {
 2883|       |		/* Make sure there is always at least one interned string hash slot,
 2884|       |		 * so the table can be queried unconditionally. */
 2885|      0|		accel_shared_globals_size = sizeof(zend_accel_shared_globals) + sizeof(zend_string_table_pos_t);
 2886|      0|	}
 2887|       |
 2888|      2|	accel_shared_globals = zend_shared_alloc(accel_shared_globals_size);
 2889|      2|	if (!accel_shared_globals) {
  ------------------
  |  Branch (2889:6): [True: 0, False: 2]
  ------------------
 2890|      0|		zend_shared_alloc_unlock();
 2891|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL,
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 2892|      0|				"Insufficient shared memory for interned strings buffer! (tried to allocate %zu bytes)",
 2893|      0|				accel_shared_globals_size);
 2894|      0|		return FAILURE;
 2895|      0|	}
 2896|      2|	memset(accel_shared_globals, 0, sizeof(zend_accel_shared_globals));
 2897|      2|	ZSMMG(app_shared_globals) = accel_shared_globals;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
 2898|       |
 2899|      2|	zend_accel_hash_init(&ZCSG(hash), ZCG(accel_directives).max_accelerated_files);
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              	zend_accel_hash_init(&ZCSG(hash), ZCG(accel_directives).max_accelerated_files);
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 2900|       |
 2901|      2|	if (ZCG(accel_directives).interned_strings_buffer) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2901:6): [True: 2, False: 0]
  ------------------
 2902|      2|		uint32_t hash_size;
 2903|       |
 2904|       |		/* must be a power of two */
 2905|      2|		hash_size = ZCG(accel_directives).interned_strings_buffer * (32 * 1024);
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 2906|      2|		hash_size |= (hash_size >> 1);
 2907|      2|		hash_size |= (hash_size >> 2);
 2908|      2|		hash_size |= (hash_size >> 4);
 2909|      2|		hash_size |= (hash_size >> 8);
 2910|      2|		hash_size |= (hash_size >> 16);
 2911|       |
 2912|      2|		ZCSG(interned_strings).nTableMask =
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2913|      2|			hash_size * sizeof(zend_string_table_pos_t);
 2914|      2|		ZCSG(interned_strings).nNumOfElements = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2915|      2|		ZCSG(interned_strings).start =
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2916|      2|			(zend_string*)((char*)&ZCSG(interned_strings) +
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2917|      2|				sizeof(zend_string_table) +
 2918|      2|				((hash_size + 1) * sizeof(zend_string_table_pos_t))) +
 2919|      2|				8;
 2920|      2|		ZEND_ASSERT(((uintptr_t)ZCSG(interned_strings).start & 0x7) == 0); /* should be 8 byte aligned */
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2920:3): [True: 0, False: 2]
  |  Branch (2920:3): [True: 2, False: 0]
  ------------------
 2921|       |
 2922|      2|		ZCSG(interned_strings).top =
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2923|      2|			ZCSG(interned_strings).start;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2924|      2|		ZCSG(interned_strings).end =
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2925|      2|			(zend_string*)((char*)(accel_shared_globals + 1) + /* table data is stored after accel_shared_globals */
 2926|      2|				ZCG(accel_directives).interned_strings_buffer * 1024 * 1024);
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
 2927|      2|		ZEND_ASSERT(((uintptr_t)ZCSG(interned_strings).end - (uintptr_t)&ZCSG(interned_strings)) / ZEND_STRING_TABLE_POS_ALIGNMENT < ZEND_STRING_TABLE_POS_MAX);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2927:3): [True: 0, False: 2]
  |  Branch (2927:3): [True: 2, False: 0]
  ------------------
 2928|      2|		ZCSG(interned_strings).saved_top = NULL;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2929|       |
 2930|      2|		memset((char*)&ZCSG(interned_strings) + sizeof(zend_string_table),
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2931|      2|			STRTAB_INVALID_POS,
  ------------------
  |  |  417|      2|#define STRTAB_INVALID_POS 0
  ------------------
 2932|      2|			(char*)ZCSG(interned_strings).start -
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2933|      2|				((char*)&ZCSG(interned_strings) + sizeof(zend_string_table)));
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2934|      2|	} else {
 2935|      0|		*STRTAB_HASH_TO_SLOT(&ZCSG(interned_strings), 0) = STRTAB_INVALID_POS;
  ------------------
  |  |  420|      0|	((zend_string_table_pos_t*)((char*)(tab) + sizeof(*(tab)) + ((h) & (tab)->nTableMask)))
  ------------------
              		*STRTAB_HASH_TO_SLOT(&ZCSG(interned_strings), 0) = STRTAB_INVALID_POS;
  ------------------
  |  |  417|      0|#define STRTAB_INVALID_POS 0
  ------------------
 2936|      0|	}
 2937|       |
 2938|       |	/* We can reuse init_interned_string_for_php for the "init_existing_interned" case,
 2939|       |	 * because the function does not create new interned strings at runtime. */
 2940|      2|	zend_interned_strings_set_request_storage_handlers(
 2941|      2|		accel_new_interned_string_for_php,
 2942|      2|		accel_init_interned_string_for_php,
 2943|      2|		accel_init_interned_string_for_php);
 2944|       |
 2945|      2|	zend_reset_cache_vars();
 2946|       |
 2947|      2|	ZCSG(oom_restarts) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2948|      2|	ZCSG(hash_restarts) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2949|      2|	ZCSG(manual_restarts) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2950|       |
 2951|      2|	ZCSG(accelerator_enabled) = true;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2952|      2|	ZCSG(start_time) = zend_accel_get_time();
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              	ZCSG(start_time) = zend_accel_get_time();
  ------------------
  |  |  200|      2|# define zend_accel_get_time() time(NULL)
  ------------------
 2953|      2|	ZCSG(last_restart_time) = 0;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2954|      2|	ZCSG(restart_in_progress) = false;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2955|       |
 2956|      6|	for (i = 0; i < -HT_MIN_MASK; i++) {
  ------------------
  |  |  437|      6|#define HT_MIN_MASK ((uint32_t) -2)
  ------------------
  |  Branch (2956:14): [True: 4, False: 2]
  ------------------
 2957|      4|		ZCSG(uninitialized_bucket)[i] = HT_INVALID_IDX;
  ------------------
  |  |  299|      4|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              		ZCSG(uninitialized_bucket)[i] = HT_INVALID_IDX;
  ------------------
  |  |  435|      4|#define HT_INVALID_IDX ((uint32_t) -1)
  ------------------
 2958|      4|	}
 2959|       |
 2960|      2|	zend_shared_alloc_unlock();
 2961|       |
 2962|      2|	return SUCCESS;
 2963|      2|}
ZendAccelerator.c:accel_new_interned_string_for_php:
  576|  37.0k|{
  577|  37.0k|	zend_string_hash_val(str);
  578|  37.0k|	if (ZCG(counted)) {
  ------------------
  |  |  306|  37.0k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 37.0k, False: 0]
  |  |  ------------------
  ------------------
  579|  37.0k|		zend_string *ret = accel_find_interned_string(str);
  580|       |
  581|  37.0k|		if (ret) {
  ------------------
  |  Branch (581:7): [True: 20.4k, False: 16.6k]
  ------------------
  582|  20.4k|			zend_string_release(str);
  583|  20.4k|			return ret;
  584|  20.4k|		}
  585|  37.0k|	}
  586|  16.6k|	return str;
  587|  37.0k|}
ZendAccelerator.c:accel_init_interned_string_for_php:
  608|    237|{
  609|    237|	if (ZCG(counted)) {
  ------------------
  |  |  306|    237|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 237, False: 0]
  |  |  ------------------
  ------------------
  610|    237|	    zend_ulong h = zend_inline_hash_func(str, size);
  611|    237|		zend_string *ret = accel_find_interned_string_ex(h, str, size);
  612|       |
  613|    237|		if (!ret) {
  ------------------
  |  Branch (613:7): [True: 200, False: 37]
  ------------------
  614|    200|			ret = zend_string_init(str, size, permanent);
  615|    200|			ZSTR_H(ret) = h;
  ------------------
  |  |   69|    200|#define ZSTR_H(zstr)    (zstr)->h
  ------------------
  616|    200|		}
  617|       |
  618|    237|		return ret;
  619|    237|	}
  620|       |
  621|      0|	return zend_string_init(str, size, permanent);
  622|    237|}
ZendAccelerator.c:accel_find_interned_string_ex:
  590|    237|{
  591|    237|	zend_string_table_pos_t pos;
  592|       |
  593|       |	/* check for existing interned string */
  594|    237|	pos = *STRTAB_HASH_TO_SLOT(&ZCSG(interned_strings), h);
  ------------------
  |  |  420|    237|	((zend_string_table_pos_t*)((char*)(tab) + sizeof(*(tab)) + ((h) & (tab)->nTableMask)))
  ------------------
  595|    237|	if (EXPECTED(pos != STRTAB_INVALID_POS)) {
  ------------------
  |  |  456|    237|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 37, False: 200]
  |  |  ------------------
  ------------------
  596|     62|		do {
  597|     62|			zend_string *s = STRTAB_POS_TO_STR(&ZCSG(interned_strings), pos);
  ------------------
  |  |  424|     62|	((zend_string*)((char*)(tab) + ((uintptr_t)(pos) * ZEND_STRING_TABLE_POS_ALIGNMENT)))
  |  |  ------------------
  |  |  |  |  244|     62|#define ZEND_STRING_TABLE_POS_ALIGNMENT 8
  |  |  ------------------
  ------------------
  598|     62|			if (EXPECTED(ZSTR_H(s) == h) && zend_string_equals_cstr(s, str, size)) {
  ------------------
  |  |  456|    124|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 37, False: 25]
  |  |  ------------------
  ------------------
  |  Branch (598:36): [True: 37, False: 0]
  ------------------
  599|     37|				return s;
  600|     37|			}
  601|     25|			pos = STRTAB_COLLISION(s);
  ------------------
  |  |  426|     25|	(*((zend_string_table_pos_t*)((char*)s - sizeof(zend_string_table_pos_t))))
  ------------------
  602|     25|		} while (pos != STRTAB_INVALID_POS);
  ------------------
  |  |  417|     25|#define STRTAB_INVALID_POS 0
  ------------------
  |  Branch (602:12): [True: 25, False: 0]
  ------------------
  603|     37|	}
  604|    200|	return NULL;
  605|    237|}
ZendAccelerator.c:persistent_stream_open_function:
 2542|  1.34k|{
 2543|  1.34k|	if (ZCG(cache_persistent_script)) {
  ------------------
  |  |  306|  1.34k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 1.34k]
  |  |  ------------------
  ------------------
 2544|       |		/* check if callback is called from include_once or it's a main request */
 2545|      0|		if ((!EG(current_execute_data) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2545:8): [True: 0, False: 0]
  ------------------
 2546|      0|		     handle->primary_script &&
  ------------------
  |  Branch (2546:8): [True: 0, False: 0]
  ------------------
 2547|      0|		     ZCG(cache_opline) == NULL) ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2547:8): [True: 0, False: 0]
  ------------------
 2548|      0|		    (EG(current_execute_data) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2549|      0|		     EG(current_execute_data)->func &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2549:8): [True: 0, False: 0]
  ------------------
 2550|      0|		     ZEND_USER_CODE(EG(current_execute_data)->func->common.type) &&
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2551|      0|		     ZCG(cache_opline) == EG(current_execute_data)->opline)) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		     ZCG(cache_opline) == EG(current_execute_data)->opline)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2551:8): [True: 0, False: 0]
  ------------------
 2552|       |
 2553|       |			/* we are in include_once or FastCGI request */
 2554|      0|			handle->opened_path = zend_string_copy(ZCG(cache_persistent_script)->script.filename);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2555|      0|			return SUCCESS;
 2556|      0|		}
 2557|      0|		ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2558|      0|		ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2559|      0|	}
 2560|  1.34k|	return accelerator_orig_zend_stream_open_function(handle);
 2561|  1.34k|}
ZendAccelerator.c:persistent_zend_resolve_path:
 2565|  5.36k|{
 2566|  5.36k|	if (!file_cache_only &&
  ------------------
  |  Branch (2566:6): [True: 5.36k, False: 0]
  ------------------
 2567|  5.36k|	    ZCG(accelerator_enabled)) {
  ------------------
  |  |  306|  5.36k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 5.36k, False: 0]
  |  |  ------------------
  ------------------
 2568|       |
 2569|       |		/* check if callback is called from include_once or it's a main request */
 2570|  5.36k|		if ((!EG(current_execute_data)) ||
  ------------------
  |  |   45|  5.36k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2570:7): [True: 0, False: 5.36k]
  ------------------
 2571|  5.36k|		    (EG(current_execute_data) &&
  ------------------
  |  |   45|  10.7k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 5.36k, False: 0]
  |  |  ------------------
  ------------------
 2572|  5.36k|		     EG(current_execute_data)->func &&
  ------------------
  |  |   45|  5.36k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2572:8): [True: 5.36k, False: 0]
  ------------------
 2573|  5.36k|		     ZEND_USER_CODE(EG(current_execute_data)->func->common.type) &&
  ------------------
  |  | 1081|  10.7k|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 5.36k, False: 2]
  |  |  ------------------
  ------------------
 2574|  5.36k|		     EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL &&
  ------------------
  |  |   45|  5.36k|# define EG(v) (executor_globals.v)
  ------------------
              		     EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL &&
  ------------------
  |  |  196|  10.7k|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (2574:8): [True: 5.36k, False: 0]
  ------------------
 2575|  5.36k|		     (EG(current_execute_data)->opline->extended_value == ZEND_INCLUDE_ONCE ||
  ------------------
  |  |   45|  5.36k|# define EG(v) (executor_globals.v)
  ------------------
              		     (EG(current_execute_data)->opline->extended_value == ZEND_INCLUDE_ONCE ||
  ------------------
  |  | 1085|  10.7k|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (2575:9): [True: 0, False: 5.36k]
  ------------------
 2576|  5.36k|		      EG(current_execute_data)->opline->extended_value == ZEND_REQUIRE_ONCE))) {
  ------------------
  |  |   45|  5.36k|# define EG(v) (executor_globals.v)
  ------------------
              		      EG(current_execute_data)->opline->extended_value == ZEND_REQUIRE_ONCE))) {
  ------------------
  |  | 1087|  5.36k|#define ZEND_REQUIRE_ONCE		(1<<4)
  ------------------
  |  Branch (2576:9): [True: 2.00k, False: 3.36k]
  ------------------
 2577|       |
 2578|       |			/* we are in include_once or FastCGI request */
 2579|  2.00k|			zend_string *resolved_path;
 2580|  2.00k|			zend_string *key = NULL;
 2581|       |
 2582|  2.00k|			if (!ZCG(accel_directives).revalidate_path) {
  ------------------
  |  |  306|  2.00k|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (2582:8): [True: 2.00k, False: 0]
  ------------------
 2583|       |				/* lookup by "not-real" path */
 2584|  2.00k|				key = accel_make_persistent_key(filename);
 2585|  2.00k|				if (key) {
  ------------------
  |  Branch (2585:9): [True: 2.00k, False: 0]
  ------------------
 2586|  2.00k|					const zend_accel_hash_entry *bucket = zend_accel_hash_find_entry(&ZCSG(hash), key);
  ------------------
  |  |  299|  2.00k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2587|  2.00k|					if (bucket != NULL) {
  ------------------
  |  Branch (2587:10): [True: 0, False: 2.00k]
  ------------------
 2588|      0|						zend_persistent_script *persistent_script = (zend_persistent_script *)bucket->data;
 2589|      0|						if (!persistent_script->corrupted) {
  ------------------
  |  Branch (2589:11): [True: 0, False: 0]
  ------------------
 2590|      0|							ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              							ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              							ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2591|      0|							ZCG(cache_persistent_script) = persistent_script;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2592|      0|							return zend_string_copy(persistent_script->script.filename);
 2593|      0|						}
 2594|      0|					}
 2595|  2.00k|				} else {
 2596|      0|					ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2597|      0|					ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2598|      0|					return accelerator_orig_zend_resolve_path(filename);
 2599|      0|				}
 2600|  2.00k|			}
 2601|       |
 2602|       |			/* find the full real path */
 2603|  2.00k|			resolved_path = accelerator_orig_zend_resolve_path(filename);
 2604|       |
 2605|  2.00k|			if (resolved_path) {
  ------------------
  |  Branch (2605:8): [True: 4, False: 1.99k]
  ------------------
 2606|       |				/* lookup by real path */
 2607|      4|				zend_accel_hash_entry *bucket = zend_accel_hash_find_entry(&ZCSG(hash), resolved_path);
  ------------------
  |  |  299|      4|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 2608|      4|				if (bucket) {
  ------------------
  |  Branch (2608:9): [True: 0, False: 4]
  ------------------
 2609|      0|					zend_persistent_script *persistent_script = (zend_persistent_script *)bucket->data;
 2610|      0|					if (!persistent_script->corrupted) {
  ------------------
  |  Branch (2610:10): [True: 0, False: 0]
  ------------------
 2611|      0|						if (key) {
  ------------------
  |  Branch (2611:11): [True: 0, False: 0]
  ------------------
 2612|       |							/* add another "key" for the same bucket */
 2613|      0|							HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|      0|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|      0|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2614|      0|							SHM_UNPROTECT();
  ------------------
  |  |  348|      0|	do { \
  |  |  349|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2615|      0|							zend_shared_alloc_lock();
 2616|      0|							zend_accel_add_key(key, bucket);
 2617|      0|							zend_shared_alloc_unlock();
 2618|      0|							SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2619|      0|							HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|      0|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|      0|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2620|      0|						} else {
 2621|      0|							ZSTR_LEN(ZCG(key)) = 0;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2622|      0|						}
 2623|      0|						ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              						ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              						ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2624|      0|						ZCG(cache_persistent_script) = persistent_script;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 2625|      0|						return resolved_path;
 2626|      0|					}
 2627|      0|				}
 2628|      4|			}
 2629|       |
 2630|  2.00k|			ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|  2.00k|# define ZCG(v) (accel_globals.v)
  ------------------
 2631|  2.00k|			ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|  2.00k|# define ZCG(v) (accel_globals.v)
  ------------------
 2632|  2.00k|			return resolved_path;
 2633|  2.00k|		}
 2634|  5.36k|	}
 2635|  3.36k|	ZCG(cache_opline) = NULL;
  ------------------
  |  |  306|  3.36k|# define ZCG(v) (accel_globals.v)
  ------------------
 2636|  3.36k|	ZCG(cache_persistent_script) = NULL;
  ------------------
  |  |  306|  3.36k|# define ZCG(v) (accel_globals.v)
  ------------------
 2637|  3.36k|	return accelerator_orig_zend_resolve_path(filename);
 2638|  5.36k|}
ZendAccelerator.c:accel_include_path_on_modify:
  263|     12|{
  264|     12|	int ret = orig_include_path_on_modify(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  265|       |
  266|     12|	if (ret == SUCCESS) {
  ------------------
  |  Branch (266:6): [True: 12, False: 0]
  ------------------
  267|     12|		ZCG(include_path) = new_value;
  ------------------
  |  |  306|     12|# define ZCG(v) (accel_globals.v)
  ------------------
  268|     12|		ZCG(include_path_key_len) = 0;
  ------------------
  |  |  306|     12|# define ZCG(v) (accel_globals.v)
  ------------------
  269|     12|		ZCG(include_path_check) = true;
  ------------------
  |  |  306|     12|# define ZCG(v) (accel_globals.v)
  ------------------
  270|     12|	}
  271|     12|	return ret;
  272|     12|}
ZendAccelerator.c:accel_use_shm_interned_strings:
  837|      2|{
  838|      2|	HANDLE_BLOCK_INTERRUPTIONS();
  ------------------
  |  |   45|      2|#define HANDLE_BLOCK_INTERRUPTIONS()		ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   81|      2|#  define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()  SIGG(depth)++;
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      2|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  839|      2|	SHM_UNPROTECT();
  ------------------
  |  |  348|      2|	do { \
  |  |  349|      2|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  840|      2|	zend_shared_alloc_lock();
  841|       |
  842|      2|	if (ZCSG(interned_strings).saved_top == NULL) {
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  |  Branch (842:6): [True: 2, False: 0]
  ------------------
  843|      2|		accel_copy_permanent_strings(accel_new_interned_string);
  844|      2|	} else {
  845|      0|		ZCG(counted) = true;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  846|      0|		accel_copy_permanent_strings(accel_replace_string_by_shm_permanent);
  847|      0|		ZCG(counted) = false;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  848|      0|	}
  849|      2|	accel_interned_strings_save_state();
  850|       |
  851|      2|	zend_shared_alloc_unlock();
  852|      2|	SHM_PROTECT();
  ------------------
  |  |  341|      2|	do { \
  |  |  342|      2|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  853|      2|	HANDLE_UNBLOCK_INTERRUPTIONS();
  ------------------
  |  |   46|      2|#define HANDLE_UNBLOCK_INTERRUPTIONS()		ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
  |  |  ------------------
  |  |  |  |   82|      2|#  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      2|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |               #  define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      2|#  define SIGG(v) (zend_signal_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (82:51): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  854|      2|}
ZendAccelerator.c:accel_copy_permanent_strings:
  641|      2|{
  642|      2|	uint32_t j;
  643|      2|	Bucket *p, *q;
  644|      2|	HashTable *ht;
  645|       |
  646|       |	/* empty string */
  647|      2|	zend_empty_string = new_interned_string(zend_empty_string);
  648|    514|	for (j = 0; j < 256; j++) {
  ------------------
  |  Branch (648:14): [True: 512, False: 2]
  ------------------
  649|    512|		zend_one_char_string[j] = new_interned_string(ZSTR_CHAR(j));
  650|    512|	}
  651|    180|	for (j = 0; j < ZEND_STR_LAST_KNOWN; j++) {
  ------------------
  |  Branch (651:14): [True: 178, False: 2]
  ------------------
  652|    178|		zend_known_strings[j] = new_interned_string(zend_known_strings[j]);
  653|    178|	}
  654|       |
  655|       |	/* function table hash keys */
  656|  2.76k|	ZEND_HASH_MAP_FOREACH_BUCKET(CG(function_table), p) {
  ------------------
  |  | 1313|  1.38k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.38k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 1.38k, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  1.38k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  1.38k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  1.38k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 1.38k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  1.38k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.38k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|  1.38k|	_bucket = _p;
  ------------------
  |  Branch (656:2): [True: 0, False: 2]
  |  Branch (656:2): [True: 2, False: 0]
  ------------------
  657|  2.76k|		if (p->key) {
  ------------------
  |  Branch (657:7): [True: 1.38k, False: 0]
  ------------------
  658|  1.38k|			p->key = new_interned_string(p->key);
  659|  1.38k|		}
  660|  2.76k|		if (Z_FUNC(p->val)->common.function_name) {
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  |  Branch (660:7): [True: 1.38k, False: 0]
  ------------------
  661|  1.38k|			Z_FUNC(p->val)->common.function_name = new_interned_string(Z_FUNC(p->val)->common.function_name);
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
              			Z_FUNC(p->val)->common.function_name = new_interned_string(Z_FUNC(p->val)->common.function_name);
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  662|  1.38k|		}
  663|  2.76k|		if (Z_FUNC(p->val)->common.arg_info) {
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  |  Branch (663:7): [True: 1.38k, False: 0]
  ------------------
  664|  1.38k|			uint32_t i;
  665|  1.38k|			uint32_t num_args = Z_FUNC(p->val)->common.num_args + 1;
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  666|  1.38k|			zend_arg_info *arg_info = Z_FUNC(p->val)->common.arg_info - 1;
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  667|       |
  668|  1.38k|			if (Z_FUNC(p->val)->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  | 1049|  1.38k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
              			if (Z_FUNC(p->val)->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|  1.38k|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (668:8): [True: 80, False: 1.30k]
  ------------------
  669|     80|				num_args++;
  670|     80|			}
  671|  5.13k|			for (i = 0 ; i < num_args; i++) {
  ------------------
  |  Branch (671:17): [True: 3.75k, False: 1.38k]
  ------------------
  672|  3.75k|				if (i > 0) {
  ------------------
  |  Branch (672:9): [True: 2.37k, False: 1.38k]
  ------------------
  673|  2.37k|					arg_info[i].name = new_interned_string(arg_info[i].name);
  674|  2.37k|					if (arg_info[i].default_value) {
  ------------------
  |  Branch (674:10): [True: 770, False: 1.60k]
  ------------------
  675|    770|						arg_info[i].default_value = new_interned_string(arg_info[i].default_value);
  676|    770|					}
  677|  2.37k|				}
  678|  3.75k|				accel_copy_permanent_list_types(new_interned_string, arg_info[i].type);
  679|  3.75k|			}
  680|  1.38k|		}
  681|  2.76k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  1.38k|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  682|       |
  683|       |	/* class table hash keys, class names, properties, methods, constants, etc */
  684|    700|	ZEND_HASH_MAP_FOREACH_BUCKET(CG(class_table), p) {
  ------------------
  |  | 1313|    348|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    350|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 348, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    348|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    348|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    348|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 348]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    348|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    348|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 348]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|    348|	_bucket = _p;
  ------------------
  |  Branch (684:2): [True: 0, False: 2]
  |  Branch (684:2): [True: 2, False: 0]
  ------------------
  685|    700|		zend_class_entry *ce;
  686|       |
  687|    700|		ce = (zend_class_entry*)Z_PTR(p->val);
  ------------------
  |  | 1052|    348|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  688|       |
  689|    700|		if (p->key) {
  ------------------
  |  Branch (689:7): [True: 348, False: 0]
  ------------------
  690|    348|			p->key = new_interned_string(p->key);
  691|    348|		}
  692|       |
  693|    700|		if (ce->name) {
  ------------------
  |  Branch (693:7): [True: 348, False: 0]
  ------------------
  694|    348|			ce->name = new_interned_string(ce->name);
  695|    348|			ZEND_ASSERT(ZSTR_HAS_CE_CACHE(ce->name));
  ------------------
  |  |  112|    348|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (695:4): [True: 0, False: 348]
  |  Branch (695:4): [True: 348, False: 0]
  ------------------
  696|    348|		}
  697|       |
  698|  2.28k|		ZEND_HASH_MAP_FOREACH_BUCKET(&ce->properties_info, q) {
  ------------------
  |  | 1313|    796|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    348|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    348|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    348|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    348|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    348|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    348|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    348|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.14k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 796, False: 348]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    796|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    796|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    796|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 796]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    796|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    796|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 796]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|    796|	_bucket = _p;
  ------------------
  |  Branch (698:3): [True: 0, False: 348]
  |  Branch (698:3): [True: 348, False: 0]
  ------------------
  699|  2.28k|			zend_property_info *info;
  700|       |
  701|  2.28k|			info = (zend_property_info*)Z_PTR(q->val);
  ------------------
  |  | 1052|    796|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  702|       |
  703|  2.28k|			if (q->key) {
  ------------------
  |  Branch (703:8): [True: 796, False: 0]
  ------------------
  704|    796|				q->key = new_interned_string(q->key);
  705|    796|			}
  706|       |
  707|  2.28k|			if (info->name) {
  ------------------
  |  Branch (707:8): [True: 796, False: 0]
  ------------------
  708|    796|				info->name = new_interned_string(info->name);
  709|    796|			}
  710|  2.28k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    796|		} \
  |  | 1102|    348|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 348]
  |  |  ------------------
  ------------------
  711|       |
  712|  9.26k|		ZEND_HASH_MAP_FOREACH_BUCKET(&ce->function_table, q) {
  ------------------
  |  | 1313|  4.28k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    348|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    348|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    348|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    348|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    348|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    348|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    348|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  4.63k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 4.28k, False: 348]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  4.28k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  4.28k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  4.28k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 4.28k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  4.28k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  4.28k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4.28k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|  4.28k|	_bucket = _p;
  ------------------
  |  Branch (712:3): [True: 0, False: 348]
  |  Branch (712:3): [True: 348, False: 0]
  ------------------
  713|  9.26k|			if (q->key) {
  ------------------
  |  Branch (713:8): [True: 4.28k, False: 0]
  ------------------
  714|  4.28k|				q->key = new_interned_string(q->key);
  715|  4.28k|			}
  716|  9.26k|			if (Z_FUNC(q->val)->common.function_name) {
  ------------------
  |  | 1049|  4.28k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  |  Branch (716:8): [True: 4.28k, False: 0]
  ------------------
  717|  4.28k|				Z_FUNC(q->val)->common.function_name = new_interned_string(Z_FUNC(q->val)->common.function_name);
  ------------------
  |  | 1049|  4.28k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
              				Z_FUNC(q->val)->common.function_name = new_interned_string(Z_FUNC(q->val)->common.function_name);
  ------------------
  |  | 1049|  4.28k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  718|  4.28k|			}
  719|  9.26k|			if (Z_FUNC(q->val)->common.scope == ce) {
  ------------------
  |  | 1049|  4.28k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  |  Branch (719:8): [True: 1.93k, False: 2.35k]
  ------------------
  720|  1.93k|				uint32_t num_args = Z_FUNC(q->val)->common.num_args + 1;
  ------------------
  |  | 1049|  1.93k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  721|  1.93k|				zend_arg_info *arg_info = Z_FUNC(q->val)->common.arg_info - 1;
  ------------------
  |  | 1049|  1.93k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
  722|       |
  723|  1.93k|				if (Z_FUNC(q->val)->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  | 1049|  1.93k|#define Z_FUNC(zval)				(zval).value.func
  ------------------
              				if (Z_FUNC(q->val)->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|  1.93k|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (723:9): [True: 12, False: 1.92k]
  ------------------
  724|     12|					num_args++;
  725|     12|				}
  726|  4.87k|				for (uint32_t i = 0 ; i < num_args; i++) {
  ------------------
  |  Branch (726:27): [True: 2.94k, False: 1.93k]
  ------------------
  727|  2.94k|					if (i > 0) {
  ------------------
  |  Branch (727:10): [True: 1.00k, False: 1.93k]
  ------------------
  728|  1.00k|						arg_info[i].name = new_interned_string(arg_info[i].name);
  729|  1.00k|						if (arg_info[i].default_value) {
  ------------------
  |  Branch (729:11): [True: 304, False: 700]
  ------------------
  730|    304|							arg_info[i].default_value = new_interned_string(arg_info[i].default_value);
  731|    304|						}
  732|  1.00k|					}
  733|  2.94k|					accel_copy_permanent_list_types(new_interned_string, arg_info[i].type);
  734|  2.94k|				}
  735|  1.93k|			}
  736|  9.26k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  4.28k|		} \
  |  | 1102|    348|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 348]
  |  |  ------------------
  ------------------
  737|       |
  738|  2.18k|		ZEND_HASH_MAP_FOREACH_BUCKET(&ce->constants_table, q) {
  ------------------
  |  | 1313|    742|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|    348|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|    348|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|    348|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|    348|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|    348|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|    348|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    348|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.09k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 742, False: 348]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    742|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    742|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    742|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 742]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    742|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    742|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 742]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|    742|	_bucket = _p;
  ------------------
  |  Branch (738:3): [True: 0, False: 348]
  |  Branch (738:3): [True: 348, False: 0]
  ------------------
  739|  2.18k|			zend_class_constant* c;
  740|       |
  741|  2.18k|			if (q->key) {
  ------------------
  |  Branch (741:8): [True: 742, False: 0]
  ------------------
  742|    742|				q->key = new_interned_string(q->key);
  743|    742|			}
  744|  2.18k|			c = (zend_class_constant*)Z_PTR(q->val);
  ------------------
  |  | 1052|    742|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  745|  2.18k|			if (Z_TYPE(c->value) == IS_STRING) {
  ------------------
  |  |  668|    742|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(c->value) == IS_STRING) {
  ------------------
  |  |  612|    742|#define IS_STRING					6
  ------------------
  |  Branch (745:8): [True: 84, False: 658]
  ------------------
  746|     84|				ZVAL_STR(&c->value, new_interned_string(Z_STR(c->value)));
  ------------------
  |  | 1088|     84|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     84|		zval *__z = (z);						\
  |  | 1090|     84|		zend_string *__s = (s);					\
  |  | 1091|     84|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     84|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     84|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     84|		/* interned strings support */			\
  |  | 1093|     84|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     84|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     84|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 84, False: 0]
  |  |  ------------------
  |  | 1094|     84|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     84|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     84|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     84|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     84|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     84|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 84]
  |  |  ------------------
  ------------------
  747|     84|			}
  748|  2.18k|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    742|		} \
  |  | 1102|    348|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 348]
  |  |  ------------------
  ------------------
  749|    348|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    348|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  750|       |
  751|       |	/* constant hash keys */
  752|  2.18k|	ZEND_HASH_MAP_FOREACH_BUCKET(EG(zend_constants), p) {
  ------------------
  |  | 1313|  1.09k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.09k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 1.09k, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  1.09k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  1.09k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  1.09k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 1.09k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  1.09k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.09k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.09k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|  1.09k|	_bucket = _p;
  ------------------
  |  Branch (752:2): [True: 0, False: 2]
  |  Branch (752:2): [True: 2, False: 0]
  ------------------
  753|  2.18k|		zend_constant *c;
  754|       |
  755|  2.18k|		if (p->key) {
  ------------------
  |  Branch (755:7): [True: 1.09k, False: 0]
  ------------------
  756|  1.09k|			p->key = new_interned_string(p->key);
  757|  1.09k|		}
  758|  2.18k|		c = (zend_constant*)Z_PTR(p->val);
  ------------------
  |  | 1052|  1.09k|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  759|  2.18k|		if (c->name) {
  ------------------
  |  Branch (759:7): [True: 1.09k, False: 0]
  ------------------
  760|  1.09k|			c->name = new_interned_string(c->name);
  761|  1.09k|		}
  762|  2.18k|		if (Z_TYPE(c->value) == IS_STRING) {
  ------------------
  |  |  668|  1.09k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(c->value) == IS_STRING) {
  ------------------
  |  |  612|  1.09k|#define IS_STRING					6
  ------------------
  |  Branch (762:7): [True: 86, False: 1.00k]
  ------------------
  763|     86|			ZVAL_STR(&c->value, new_interned_string(Z_STR(c->value)));
  ------------------
  |  | 1088|     86|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     86|		zval *__z = (z);						\
  |  | 1090|     86|		zend_string *__s = (s);					\
  |  | 1091|     86|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     86|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     86|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     86|		/* interned strings support */			\
  |  | 1093|     86|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     86|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     86|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 86, False: 0]
  |  |  ------------------
  |  | 1094|     86|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     86|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     86|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     86|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     86|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     86|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 86]
  |  |  ------------------
  ------------------
  764|     86|		}
  765|  2.18k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  1.09k|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  766|       |
  767|       |	/* auto globals hash keys and names */
  768|     36|	ZEND_HASH_MAP_FOREACH_BUCKET(CG(auto_globals), p) {
  ------------------
  |  | 1313|     16|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     18|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 16, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     16|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     16|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     16|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 16]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     16|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|     16|	_bucket = _p;
  ------------------
  |  Branch (768:2): [True: 0, False: 2]
  |  Branch (768:2): [True: 2, False: 0]
  ------------------
  769|     36|		zend_auto_global *auto_global;
  770|       |
  771|     36|		auto_global = (zend_auto_global*)Z_PTR(p->val);
  ------------------
  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  772|       |
  773|     36|		zend_string_addref(auto_global->name);
  774|     36|		auto_global->name = new_interned_string(auto_global->name);
  775|     36|		if (p->key) {
  ------------------
  |  Branch (775:7): [True: 16, False: 0]
  ------------------
  776|     16|			p->key = new_interned_string(p->key);
  777|     16|		}
  778|     36|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     16|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  779|       |
  780|     56|	ZEND_HASH_MAP_FOREACH_BUCKET(&module_registry, p) {
  ------------------
  |  | 1313|     26|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     28|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 26, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     26|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     26|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     26|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 26]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     26|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|     26|	_bucket = _p;
  ------------------
  |  Branch (780:2): [True: 0, False: 2]
  |  Branch (780:2): [True: 2, False: 0]
  ------------------
  781|     56|		if (p->key) {
  ------------------
  |  Branch (781:7): [True: 26, False: 0]
  ------------------
  782|     26|			p->key = new_interned_string(p->key);
  783|     26|		}
  784|     56|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     26|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  785|       |
  786|    720|	ZEND_HASH_MAP_FOREACH_BUCKET(EG(ini_directives), p) {
  ------------------
  |  | 1313|    358|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    360|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 358, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    358|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    358|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    358|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 358]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    358|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    358|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 358]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|    358|	_bucket = _p;
  ------------------
  |  Branch (786:2): [True: 0, False: 2]
  |  Branch (786:2): [True: 2, False: 0]
  ------------------
  787|    720|		zend_ini_entry *entry = (zend_ini_entry*)Z_PTR(p->val);
  ------------------
  |  | 1052|    358|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  788|       |
  789|    720|		if (p->key) {
  ------------------
  |  Branch (789:7): [True: 358, False: 0]
  ------------------
  790|    358|			p->key = new_interned_string(p->key);
  791|    358|		}
  792|    720|		if (entry->name) {
  ------------------
  |  Branch (792:7): [True: 358, False: 0]
  ------------------
  793|    358|			entry->name = new_interned_string(entry->name);
  794|    358|		}
  795|    720|		if (entry->value) {
  ------------------
  |  Branch (795:7): [True: 308, False: 50]
  ------------------
  796|    308|			entry->value = new_interned_string(entry->value);
  797|    308|		}
  798|    720|		if (entry->orig_value) {
  ------------------
  |  Branch (798:7): [True: 0, False: 358]
  ------------------
  799|      0|			entry->orig_value = new_interned_string(entry->orig_value);
  800|      0|		}
  801|    720|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    358|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  802|       |
  803|      2|	ht = php_get_stream_filters_hash_global();
  804|     28|	ZEND_HASH_MAP_FOREACH_BUCKET(ht, p) {
  ------------------
  |  | 1313|     12|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 12, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     12|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     12|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     12|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 12]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     12|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|     12|	_bucket = _p;
  ------------------
  |  Branch (804:2): [True: 0, False: 2]
  |  Branch (804:2): [True: 2, False: 0]
  ------------------
  805|     28|		if (p->key) {
  ------------------
  |  Branch (805:7): [True: 12, False: 0]
  ------------------
  806|     12|			p->key = new_interned_string(p->key);
  807|     12|		}
  808|     28|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     12|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  809|       |
  810|      2|	ht = php_stream_get_url_stream_wrappers_hash_global();
  811|     28|	ZEND_HASH_MAP_FOREACH_BUCKET(ht, p) {
  ------------------
  |  | 1313|     12|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 12, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     12|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     12|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     12|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 12]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     12|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|     12|	_bucket = _p;
  ------------------
  |  Branch (811:2): [True: 0, False: 2]
  |  Branch (811:2): [True: 2, False: 0]
  ------------------
  812|     28|		if (p->key) {
  ------------------
  |  Branch (812:7): [True: 12, False: 0]
  ------------------
  813|     12|			p->key = new_interned_string(p->key);
  814|     12|		}
  815|     28|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     12|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  816|       |
  817|      2|	ht = php_stream_xport_get_hash();
  818|     20|	ZEND_HASH_MAP_FOREACH_BUCKET(ht, p) {
  ------------------
  |  | 1313|      8|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     10|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 8, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      8|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      8|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      8|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 8]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      8|	_bucket = _p;
  ------------------
  |  Branch (818:2): [True: 0, False: 2]
  |  Branch (818:2): [True: 2, False: 0]
  ------------------
  819|     20|		if (p->key) {
  ------------------
  |  Branch (819:7): [True: 8, False: 0]
  ------------------
  820|      8|			p->key = new_interned_string(p->key);
  821|      8|		}
  822|     20|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  823|      2|}
ZendAccelerator.c:accel_copy_permanent_list_types:
  626|  6.69k|{
  627|  6.69k|	zend_type *single_type;
  628|  13.3k|	ZEND_TYPE_FOREACH_MUTABLE(type, single_type) {
  ------------------
  |  |  228|  6.69k|#define ZEND_TYPE_FOREACH_MUTABLE(type, type_ptr) do { \
  |  |  229|  6.69k|	zend_type *_cur; \
  |  |  230|  6.69k|	const zend_type *_end; \
  |  |  231|  6.69k|	if (ZEND_TYPE_HAS_LIST(type)) { \
  |  |  ------------------
  |  |  |  |  166|  6.69k|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|  6.69k|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (166:2): [True: 4, False: 6.69k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  232|      4|		zend_type_list *_list = ZEND_TYPE_LIST(type); \
  |  |  ------------------
  |  |  |  |  190|      4|	((zend_type_list *) (t).ptr)
  |  |  ------------------
  |  |  233|      4|		_cur = _list->types; \
  |  |  234|      4|		_end = _cur + _list->num_types; \
  |  |  235|  6.69k|	} else { \
  |  |  236|  6.69k|		_cur = &(type); \
  |  |  237|  6.69k|		_end = _cur + 1; \
  |  |  238|  6.69k|	} \
  |  |  239|  6.69k|	do { \
  |  |  240|  6.69k|		type_ptr = _cur;
  ------------------
  629|  13.3k|		if (ZEND_TYPE_HAS_LIST(*single_type)) {
  ------------------
  |  |  166|  6.69k|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|  6.69k|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 0, False: 6.69k]
  |  |  ------------------
  ------------------
  630|      0|			ZEND_ASSERT(ZEND_TYPE_IS_INTERSECTION(*single_type));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (630:4): [True: 0, False: 0]
  |  Branch (630:4): [True: 0, False: 0]
  ------------------
  631|      0|			accel_copy_permanent_list_types(new_interned_string, *single_type);
  632|      0|		}
  633|  13.3k|		if (ZEND_TYPE_HAS_NAME(*single_type)) {
  ------------------
  |  |  160|  6.69k|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|  6.69k|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 474, False: 6.22k]
  |  |  ------------------
  ------------------
  634|    474|			ZEND_TYPE_SET_PTR(*single_type, new_interned_string(ZEND_TYPE_NAME(*single_type)));
  ------------------
  |  |  247|    474|	((t).ptr = (_ptr))
  ------------------
  635|    474|		}
  636|  6.69k|	} ZEND_TYPE_FOREACH_END();
  ------------------
  |  |  243|  6.69k|	} while (++_cur < _end); \
  |  |  ------------------
  |  |  |  Branch (243:11): [True: 4, False: 6.69k]
  |  |  ------------------
  |  |  244|  6.69k|} while (0)
  |  |  ------------------
  |  |  |  Branch (244:10): [Folded, False: 6.69k]
  |  |  ------------------
  ------------------
  637|  6.69k|}
ZendAccelerator.c:accel_interned_strings_save_state:
  474|      2|{
  475|      2|	ZCSG(interned_strings).saved_top = ZCSG(interned_strings).top;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              	ZCSG(interned_strings).saved_top = ZCSG(interned_strings).top;
  ------------------
  |  |  299|      2|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  476|      2|}
ZendAccelerator.c:accel_finish_startup:
 5057|      2|{
 5058|      2|	if (!ZCG(enabled) || !accel_startup_ok) {
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (5058:6): [True: 0, False: 2]
  |  Branch (5058:23): [True: 0, False: 2]
  ------------------
 5059|      0|		return SUCCESS;
 5060|      0|	}
 5061|       |
 5062|      2|	if (!(ZCG(accel_directives).preload && *ZCG(accel_directives).preload)) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
              	if (!(ZCG(accel_directives).preload && *ZCG(accel_directives).preload)) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (5062:8): [True: 0, False: 2]
  |  Branch (5062:41): [True: 0, False: 0]
  ------------------
 5063|      2|		return SUCCESS;
 5064|      2|	}
 5065|       |
 5066|       |#ifdef ZEND_WIN32
 5067|       |	zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Preloading is not supported on Windows");
 5068|       |	return FAILURE;
 5069|       |#else /* ZEND_WIN32 */
 5070|       |
 5071|      0|	if (UNEXPECTED(file_cache_only)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5072|      0|		zend_accel_error(ACCEL_LOG_WARNING, "Preloading doesn't work in \"file_cache_only\" mode");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
 5073|      0|		return SUCCESS;
 5074|      0|	}
 5075|       |
 5076|       |	/* exclusive lock */
 5077|      0|	zend_shared_alloc_lock();
 5078|       |
 5079|      0|	if (ZCSG(preload_script)) {
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5080|       |		/* Preloading was done in another process */
 5081|      0|		preload_load(zend_map_ptr_static_last);
 5082|      0|		zend_shared_alloc_unlock();
 5083|      0|		return SUCCESS;
 5084|      0|	}
 5085|       |
 5086|       |
 5087|      0|	pid_t pid;
 5088|      0|	if (accel_finish_startup_preload_subprocess(&pid) == FAILURE) {
  ------------------
  |  Branch (5088:6): [True: 0, False: 0]
  ------------------
 5089|      0|		zend_shared_alloc_unlock();
 5090|      0|		return FAILURE;
 5091|      0|	}
 5092|       |
 5093|      0|	if (pid == -1) { /* no subprocess was needed */
  ------------------
  |  Branch (5093:6): [True: 0, False: 0]
  ------------------
 5094|       |		/* The called function unlocks the shared alloc lock */
 5095|      0|		return accel_finish_startup_preload(false);
 5096|      0|	} else if (pid == 0) { /* subprocess */
  ------------------
  |  Branch (5096:13): [True: 0, False: 0]
  ------------------
 5097|      0|		const zend_result ret = accel_finish_startup_preload(true);
 5098|       |
 5099|      0|		exit(ret == SUCCESS ? 0 : 1);
  ------------------
  |  Branch (5099:8): [True: 0, False: 0]
  ------------------
 5100|      0|	} else { /* parent */
 5101|      0|# ifdef HAVE_SIGPROCMASK
 5102|       |		/* Interrupting the waitpid() call below with a signal would cause the
 5103|       |		 * process to exit. This is fine when the signal disposition is set to
 5104|       |		 * terminate the process, but not otherwise.
 5105|       |		 * When running the apache2handler, preloading is performed in the
 5106|       |		 * control process. SIGUSR1 and SIGHUP are used to tell the control
 5107|       |		 * process to restart children. Exiting when these signals are received
 5108|       |		 * would unexpectedly shutdown the server instead of restarting it.
 5109|       |		 * Block the USR1 and HUP signals from being delivered during the
 5110|       |		 * syscall when running the apache2handler SAPI, as these are not
 5111|       |		 * supposed to terminate the process. See GH-20051. */
 5112|      0|		bool is_apache2handler = strcmp(sapi_module.name, "apache2handler") == 0;
 5113|      0|		sigset_t set, oldset;
 5114|      0|		if (is_apache2handler) {
  ------------------
  |  Branch (5114:7): [True: 0, False: 0]
  ------------------
 5115|      0|			if (sigemptyset(&set)
  ------------------
  |  Branch (5115:8): [True: 0, False: 0]
  ------------------
 5116|      0|					|| sigaddset(&set, SIGUSR1)
  ------------------
  |  Branch (5116:9): [True: 0, False: 0]
  ------------------
 5117|      0|					|| sigaddset(&set, SIGHUP)) {
  ------------------
  |  Branch (5117:9): [True: 0, False: 0]
  ------------------
 5118|      0|				ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5118:5): [Folded, False: 0]
  |  Branch (5118:5): [Folded, False: 0]
  ------------------
 5119|      0|			}
 5120|      0|			if (sigprocmask(SIG_BLOCK, &set, &oldset)) {
  ------------------
  |  Branch (5120:8): [True: 0, False: 0]
  ------------------
 5121|      0|				ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5121:5): [Folded, False: 0]
  |  Branch (5121:5): [Folded, False: 0]
  ------------------
 5122|      0|			}
 5123|      0|		}
 5124|      0|# endif
 5125|       |
 5126|      0|		int status;
 5127|      0|		if (waitpid(pid, &status, 0) < 0) {
  ------------------
  |  Branch (5127:7): [True: 0, False: 0]
  ------------------
 5128|      0|			zend_shared_alloc_unlock();
 5129|      0|			zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Preloading failed to waitpid(%d)", pid);
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
 5130|      0|		}
 5131|       |
 5132|      0|# ifdef HAVE_SIGPROCMASK
 5133|      0|		if (is_apache2handler) {
  ------------------
  |  Branch (5133:7): [True: 0, False: 0]
  ------------------
 5134|      0|			if (sigprocmask(SIG_SETMASK, &oldset, NULL)) {
  ------------------
  |  Branch (5134:8): [True: 0, False: 0]
  ------------------
 5135|      0|				ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5135:5): [Folded, False: 0]
  |  Branch (5135:5): [Folded, False: 0]
  ------------------
 5136|      0|			}
 5137|      0|		}
 5138|      0|# endif
 5139|       |
 5140|      0|		if (ZCSG(preload_script)) {
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5141|      0|			preload_load(zend_map_ptr_static_last);
 5142|      0|		}
 5143|       |
 5144|      0|		zend_shared_alloc_unlock();
 5145|       |
 5146|      0|		if (WIFEXITED(status) && WEXITSTATUS(status) == 0) {
  ------------------
  |  Branch (5146:7): [True: 0, False: 0]
  |  Branch (5146:28): [True: 0, False: 0]
  ------------------
 5147|      0|			return SUCCESS;
 5148|      0|		} else {
 5149|      0|			return FAILURE;
 5150|      0|		}
 5151|      0|	}
 5152|      0|#endif /* ZEND_WIN32 */
 5153|      0|}
ZendAccelerator.c:accel_activate:
 5155|  33.5k|static void accel_activate(void) {
 5156|  33.5k|	if (ZCG(preloaded_internal_run_time_cache)) {
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 5157|      0|		memset(ZCG(preloaded_internal_run_time_cache), 0, ZCG(preloaded_internal_run_time_cache_size));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		memset(ZCG(preloaded_internal_run_time_cache), 0, ZCG(preloaded_internal_run_time_cache_size));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
 5158|      0|	}
 5159|  33.5k|}

zend_jit_config:
 3646|      2|{
 3647|      2|	if (stage != ZEND_INI_STAGE_STARTUP && !JIT_G(enabled)) {
  ------------------
  |  |  223|      4|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  ------------------
              	if (stage != ZEND_INI_STAGE_STARTUP && !JIT_G(enabled)) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
  |  Branch (3647:6): [True: 0, False: 2]
  |  Branch (3647:41): [True: 0, False: 0]
  ------------------
 3648|      0|		if (stage == ZEND_INI_STAGE_RUNTIME) {
  ------------------
  |  |  227|      0|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
  |  Branch (3648:7): [True: 0, False: 0]
  ------------------
 3649|      0|			zend_error(E_WARNING, "Cannot change opcache.jit setting at run-time (JIT is disabled)");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 3650|      0|		}
 3651|      0|		return FAILURE;
 3652|      0|	}
 3653|       |
 3654|      2|	if (zend_string_equals_literal_ci(jit, "disable")) {
  ------------------
  |  |  404|      2|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 2, False: 0]
  |  |  |  Branch (404:40): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 3655|      2|		JIT_G(enabled) = 0;
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
 3656|      2|		JIT_G(on) = 0;
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
 3657|      2|		return SUCCESS;
 3658|      2|	} else if (ZSTR_LEN(jit) == 0
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (3658:13): [True: 0, False: 0]
  ------------------
 3659|      0|			|| zend_string_equals_literal_ci(jit, "0")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3660|      0|			|| zend_string_equals_literal_ci(jit, "off")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3661|      0|			|| zend_string_equals_literal_ci(jit, "no")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3662|      0|			|| zend_string_equals_literal_ci(jit, "false")) {
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3663|      0|		JIT_G(enabled) = 1;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3664|      0|		JIT_G(on) = 0;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3665|      0|		return SUCCESS;
 3666|      0|	} else if (zend_string_equals_literal_ci(jit, "1")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3667|      0|			|| zend_string_equals_literal_ci(jit, "on")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3668|      0|			|| zend_string_equals_literal_ci(jit, "yes")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3669|      0|			|| zend_string_equals_literal_ci(jit, "true")
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3670|      0|			|| zend_string_equals_literal_ci(jit, "tracing")) {
  ------------------
  |  |  404|      0|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 0]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3671|      0|		JIT_G(enabled) = 1;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3672|      0|		JIT_G(on) = 1;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3673|      0|		JIT_G(opt_level) = ZEND_JIT_LEVEL_OPT_FUNCS;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		JIT_G(opt_level) = ZEND_JIT_LEVEL_OPT_FUNCS;
  ------------------
  |  |   34|      0|#define ZEND_JIT_LEVEL_OPT_FUNCS   4     /* optimized JIT based on Type-Inference and call-tree */
  ------------------
 3674|      0|		JIT_G(trigger) = ZEND_JIT_ON_HOT_TRACE;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		JIT_G(trigger) = ZEND_JIT_ON_HOT_TRACE;
  ------------------
  |  |   42|      0|#define ZEND_JIT_ON_HOT_TRACE      5     /* trace functions after N calls or loop iterations */
  ------------------
 3675|      0|		JIT_G(opt_flags) = ZEND_JIT_REG_ALLOC_GLOBAL | ZEND_JIT_CPU_AVX;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		JIT_G(opt_flags) = ZEND_JIT_REG_ALLOC_GLOBAL | ZEND_JIT_CPU_AVX;
  ------------------
  |  |   45|      0|#define ZEND_JIT_REG_ALLOC_GLOBAL (1<<1) /* global linear scan register allocation */
  ------------------
              		JIT_G(opt_flags) = ZEND_JIT_REG_ALLOC_GLOBAL | ZEND_JIT_CPU_AVX;
  ------------------
  |  |   46|      0|#define ZEND_JIT_CPU_AVX          (1<<2) /* use AVX instructions, if available */
  ------------------
 3676|      0|		return SUCCESS;
 3677|      0|	} else if (zend_string_equals_ci(jit, ZSTR_KNOWN(ZEND_STR_FUNCTION))) {
  ------------------
  |  |  401|      0|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 0]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3678|      0|		JIT_G(enabled) = 1;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3679|      0|		JIT_G(on) = 1;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3680|      0|		JIT_G(opt_level) = ZEND_JIT_LEVEL_OPT_SCRIPT;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		JIT_G(opt_level) = ZEND_JIT_LEVEL_OPT_SCRIPT;
  ------------------
  |  |   35|      0|#define ZEND_JIT_LEVEL_OPT_SCRIPT  5     /* optimized JIT based on Type-Inference and inner-procedure analysis */
  ------------------
 3681|      0|		JIT_G(trigger) = ZEND_JIT_ON_SCRIPT_LOAD;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		JIT_G(trigger) = ZEND_JIT_ON_SCRIPT_LOAD;
  ------------------
  |  |   37|      0|#define ZEND_JIT_ON_SCRIPT_LOAD    0
  ------------------
 3682|      0|		JIT_G(opt_flags) = ZEND_JIT_REG_ALLOC_GLOBAL | ZEND_JIT_CPU_AVX;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		JIT_G(opt_flags) = ZEND_JIT_REG_ALLOC_GLOBAL | ZEND_JIT_CPU_AVX;
  ------------------
  |  |   45|      0|#define ZEND_JIT_REG_ALLOC_GLOBAL (1<<1) /* global linear scan register allocation */
  ------------------
              		JIT_G(opt_flags) = ZEND_JIT_REG_ALLOC_GLOBAL | ZEND_JIT_CPU_AVX;
  ------------------
  |  |   46|      0|#define ZEND_JIT_CPU_AVX          (1<<2) /* use AVX instructions, if available */
  ------------------
 3683|      0|		return SUCCESS;
 3684|      0|	} else  {
 3685|      0|		char *end;
 3686|      0|		zend_long num = ZEND_STRTOL(ZSTR_VAL(jit), &end, 10);
  ------------------
  |  |   68|      0|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
 3687|      0|		if (end != ZSTR_VAL(jit) + ZSTR_LEN(jit) || zend_jit_parse_config_num(num) != SUCCESS) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if (end != ZSTR_VAL(jit) + ZSTR_LEN(jit) || zend_jit_parse_config_num(num) != SUCCESS) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (3687:7): [True: 0, False: 0]
  |  Branch (3687:47): [True: 0, False: 0]
  ------------------
 3688|      0|			goto failure;
 3689|      0|		}
 3690|      0|		JIT_G(enabled) = 1;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3691|      0|		return SUCCESS;
 3692|      0|	}
 3693|       |
 3694|      0|failure:
 3695|      0|	zend_error(E_WARNING, "Invalid \"opcache.jit\" setting. Should be \"disable\", \"on\", \"off\", \"tracing\", \"function\" or 4-digit number");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 3696|      0|	JIT_G(enabled) = 0;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3697|      0|	JIT_G(on) = 0;
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 3698|      0|	return FAILURE;
 3699|      2|}
zend_jit_debug_config:
 3702|      2|{
 3703|      2|	if (stage != ZEND_INI_STAGE_STARTUP) {
  ------------------
  |  |  223|      2|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  ------------------
  |  Branch (3703:6): [True: 0, False: 2]
  ------------------
 3704|      0|		if (((old_val ^ new_val) & ZEND_JIT_DEBUG_PERSISTENT) != 0) {
  ------------------
  |  |   86|      0|#define ZEND_JIT_DEBUG_PERSISTENT      0x1f0 /* profile and debugger flags can't be changed at run-time */
  ------------------
  |  Branch (3704:7): [True: 0, False: 0]
  ------------------
 3705|      0|			if (stage == ZEND_INI_STAGE_RUNTIME) {
  ------------------
  |  |  227|      0|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
  |  Branch (3705:8): [True: 0, False: 0]
  ------------------
 3706|      0|				zend_error(E_WARNING, "Some opcache.jit_debug bits cannot be changed after startup");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 3707|      0|			}
 3708|      0|			return FAILURE;
 3709|      0|		}
 3710|      0|	}
 3711|      2|	return SUCCESS;
 3712|      2|}
zend_jit_init:
 3715|      2|{
 3716|       |#ifdef ZTS
 3717|       |	jit_globals_id = ts_allocate_fast_id(&jit_globals_id, &jit_globals_offset, sizeof(zend_jit_globals), (ts_allocate_ctor) zend_jit_globals_ctor, (ts_allocate_dtor) zend_jit_globals_dtor);
 3718|       |#else
 3719|      2|	zend_jit_globals_ctor(&jit_globals);
 3720|      2|#endif
 3721|      2|}
zend_jit_activate:
 3896|  33.5k|{
 3897|       |#ifdef ZTS
 3898|       |	if (!zend_jit_startup_ok) {
 3899|       |		JIT_G(enabled) = 0;
 3900|       |		JIT_G(on) = 0;
 3901|       |		return;
 3902|       |	}
 3903|       |#endif
 3904|  33.5k|	zend_jit_profile_counter = 0;
 3905|  33.5k|	if (JIT_G(on)) {
  ------------------
  |  |  151|  33.5k|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 3906|      0|		if (JIT_G(trigger) == ZEND_JIT_ON_HOT_COUNTERS) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		if (JIT_G(trigger) == ZEND_JIT_ON_HOT_COUNTERS) {
  ------------------
  |  |   40|      0|#define ZEND_JIT_ON_HOT_COUNTERS   3     /* compile functions after N calls or loop iterations */
  ------------------
  |  Branch (3906:7): [True: 0, False: 0]
  ------------------
 3907|      0|			zend_jit_reset_counters();
 3908|      0|		} else if (JIT_G(trigger) == ZEND_JIT_ON_HOT_TRACE) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		} else if (JIT_G(trigger) == ZEND_JIT_ON_HOT_TRACE) {
  ------------------
  |  |   42|      0|#define ZEND_JIT_ON_HOT_TRACE      5     /* trace functions after N calls or loop iterations */
  ------------------
  |  Branch (3908:14): [True: 0, False: 0]
  ------------------
 3909|      0|			zend_jit_reset_counters();
 3910|      0|			zend_jit_trace_reset_caches();
 3911|      0|		}
 3912|      0|	}
 3913|  33.5k|}
zend_jit_deactivate:
 3916|  33.5k|{
 3917|  33.5k|	if (zend_jit_profile_counter && !CG(unclean_shutdown)) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (3917:6): [True: 0, False: 33.5k]
  |  Branch (3917:34): [True: 0, False: 0]
  ------------------
 3918|      0|		zend_class_entry *ce;
 3919|       |
 3920|      0|		zend_shared_alloc_lock();
 3921|      0|		SHM_UNPROTECT();
  ------------------
  |  |  348|      0|	do { \
  |  |  349|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (349:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  350|      0|			zend_accel_shared_protect(false); \
  |  |  351|      0|		} \
  |  |  352|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (352:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3922|      0|		zend_jit_unprotect();
 3923|       |
 3924|      0|		zend_jit_check_funcs(EG(function_table), false);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 3925|      0|		ZEND_HASH_MAP_REVERSE_FOREACH_PTR(EG(class_table), ce) {
  ------------------
  |  | 1349|      0|	ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1276|      0|#define ZEND_HASH_MAP_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1277|      0|		/* const */ HashTable *__ht = (_ht); \
  |  |  |  | 1278|      0|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1279|      0|		Bucket *_p = __ht->arData + _idx; \
  |  |  |  | 1280|      0|		zval *_z; \
  |  |  |  | 1281|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1282|      0|		for (_idx = __ht->nNumUsed; _idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1282:31): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1283|      0|			_p--; \
  |  |  |  | 1284|      0|			_z = &_p->val; \
  |  |  |  | 1285|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1285:8): [Folded, False: 0]
  |  |  |  |  |  Branch (1285:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1286|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1287|      0|			} \
  |  |  |  | 1288|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1350|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3925:3): [True: 0, False: 0]
  |  Branch (3925:3): [True: 0, False: 0]
  ------------------
 3926|      0|			if (ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (3926:8): [True: 0, False: 0]
  ------------------
 3927|      0|				break;
 3928|      0|			}
 3929|      0|			zend_jit_check_funcs(&ce->function_table, true);
 3930|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3931|       |
 3932|      0|		zend_jit_protect();
 3933|      0|		SHM_PROTECT();
  ------------------
  |  |  341|      0|	do { \
  |  |  342|      0|		if (ZCG(accel_directives).protect_memory) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (342:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|			zend_accel_shared_protect(true); \
  |  |  344|      0|		} \
  |  |  345|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (345:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3934|      0|		zend_shared_alloc_unlock();
 3935|      0|	}
 3936|       |
 3937|  33.5k|	zend_jit_profile_counter = 0;
 3938|  33.5k|}
zend_jit.c:zend_jit_globals_ctor:
 3602|      2|{
 3603|      2|	memset(jit_globals, 0, sizeof(zend_jit_globals));
 3604|      2|	zend_jit_trace_init_caches();
 3605|      2|}

zend_jit.c:zend_jit_trace_init_caches:
 9026|      2|{
 9027|      2|	memset(ZEND_VOIDP(JIT_G(bad_root_cache_opline)), 0, sizeof(JIT_G(bad_root_cache_opline)));
  ------------------
  |  |  826|      2|# define ZEND_VOIDP(ptr) (ptr)
  ------------------
              	memset(ZEND_VOIDP(JIT_G(bad_root_cache_opline)), 0, sizeof(JIT_G(bad_root_cache_opline)));
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
 9028|      2|	memset(JIT_G(bad_root_cache_count), 0, sizeof(JIT_G(bad_root_cache_count)));
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
              	memset(JIT_G(bad_root_cache_count), 0, sizeof(JIT_G(bad_root_cache_count)));
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
 9029|      2|	memset(JIT_G(bad_root_cache_stop), 0, sizeof(JIT_G(bad_root_cache_count)));
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
              	memset(JIT_G(bad_root_cache_stop), 0, sizeof(JIT_G(bad_root_cache_count)));
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
 9030|      2|	JIT_G(bad_root_slot) = 0;
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  ------------------
 9031|       |
 9032|      2|	if (JIT_G(exit_counters)) {
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 9033|      0|		memset(JIT_G(exit_counters), 0, JIT_G(max_exit_counters));
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		memset(JIT_G(exit_counters), 0, JIT_G(max_exit_counters));
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
 9034|      0|	}
 9035|      2|}

shared_alloc_mmap.c:create_segments:
  181|      2|{
  182|      2|	zend_shared_segment *shared_segment;
  183|      2|	int flags = PROT_READ | PROT_WRITE, fd = -1;
  184|      2|	void *p;
  185|       |#if defined(HAVE_PROCCTL) && defined(PROC_WXMAP_CTL)
  186|       |	int enable_wxmap = PROC_WX_MAPPINGS_PERMIT;
  187|       |	if (procctl(P_PID, getpid(), PROC_WXMAP_CTL, &enable_wxmap) == -1) {
  188|       |		return ALLOC_FAILURE;
  189|       |	}
  190|       |#endif
  191|       |#ifdef PROT_MPROTECT
  192|       |	flags |= PROT_MPROTECT(PROT_EXEC);
  193|       |#endif
  194|       |#ifdef VM_MAKE_TAG
  195|       |	/* allows tracking segments via tools such as vmmap */
  196|       |	fd = VM_MAKE_TAG(251U);
  197|       |#endif
  198|       |#ifdef PROT_MAX
  199|       |	flags |= PROT_MAX(PROT_READ | PROT_WRITE | PROT_EXEC);
  200|       |#endif
  201|      2|#if defined(HAVE_JIT) && (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) && !defined(__SANITIZE_ADDRESS__)
  202|      2|	void *hint;
  203|      2|	if (JIT_G(enabled) && JIT_G(buffer_size)
  ------------------
  |  |  151|      4|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (JIT_G(enabled) && JIT_G(buffer_size)
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  204|      0|			&& zend_jit_check_support() == SUCCESS) {
  ------------------
  |  Branch (204:7): [True: 0, False: 0]
  ------------------
  205|      0|		hint = find_preferred_mmap_base(requested_size);
  206|      2|	} else {
  207|       |		/* Do not use a hint if JIT is not enabled, as this profits only JIT and
  208|       |		 * this is potentially unsafe when the only suitable candidate is just
  209|       |		 * after the heap (e.g. in non-PIE builds) (GH-13775). */
  210|      2|		hint = MAP_FAILED;
  211|      2|	}
  212|      2|	if (hint != MAP_FAILED) {
  ------------------
  |  Branch (212:6): [True: 0, False: 2]
  ------------------
  213|      0|# ifdef MAP_HUGETLB
  214|      0|		size_t huge_page_size = 2 * 1024 * 1024;
  215|      0|		if (requested_size >= huge_page_size && requested_size % huge_page_size == 0) {
  ------------------
  |  Branch (215:7): [True: 0, False: 0]
  |  Branch (215:43): [True: 0, False: 0]
  ------------------
  216|      0|			p = mmap(hint, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_HUGETLB|MAP_FIXED, -1, 0);
  217|      0|			if (p != MAP_FAILED) {
  ------------------
  |  Branch (217:8): [True: 0, False: 0]
  ------------------
  218|      0|				goto success;
  219|      0|			}
  220|      0|		}
  221|      0|#endif
  222|      0|		p = mmap(hint, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_FIXED, -1, 0);
  223|      0|		if (p != MAP_FAILED) {
  ------------------
  |  Branch (223:7): [True: 0, False: 0]
  ------------------
  224|      0|			goto success;
  225|      0|		}
  226|      0|	}
  227|      2|#endif
  228|      2|#ifdef MAP_HUGETLB
  229|      2|	size_t huge_page_size = 2 * 1024 * 1024;
  230|       |
  231|       |	/* Try to allocate huge pages first to reduce dTLB misses.
  232|       |	 * OSes has to be configured properly
  233|       |	 * on Linux
  234|       |	 * (e.g. https://wiki.debian.org/Hugepages#Enabling_HugeTlbPage)
  235|       |	 * You may verify huge page usage with the following command:
  236|       |	 * `grep "Huge" /proc/meminfo`
  237|       |	 * on FreeBSD
  238|       |	 * sysctl vm.pmap.pg_ps_enabled entry
  239|       |	 * (boot time config only, but enabled by default on most arches).
  240|       |	 */
  241|      2|	if (requested_size >= huge_page_size && requested_size % huge_page_size == 0) {
  ------------------
  |  Branch (241:6): [True: 2, False: 0]
  |  Branch (241:42): [True: 2, False: 0]
  ------------------
  242|      2|# if defined(__x86_64__) && defined(MAP_32BIT)
  243|       |		/* to got HUGE PAGES in low 32-bit address we have to reserve address
  244|       |		   space and then remap it using MAP_HUGETLB */
  245|       |
  246|      2|		p = mmap(NULL, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_32BIT, fd, 0);
  247|      2|		if (p != MAP_FAILED) {
  ------------------
  |  Branch (247:7): [True: 2, False: 0]
  ------------------
  248|      2|			munmap(p, requested_size);
  249|      2|			p = (void*)(ZEND_MM_ALIGNED_SIZE_EX((ptrdiff_t)p, huge_page_size));
  ------------------
  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  ------------------
  250|      2|			p = mmap(p, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_32BIT|MAP_HUGETLB|MAP_FIXED, -1, 0);
  251|      2|			if (p != MAP_FAILED) {
  ------------------
  |  Branch (251:8): [True: 0, False: 2]
  ------------------
  252|      0|				goto success;
  253|      2|			} else {
  254|      2|				p = mmap(NULL, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_32BIT, fd, 0);
  255|      2|				if (p != MAP_FAILED) {
  ------------------
  |  Branch (255:9): [True: 2, False: 0]
  ------------------
  256|      2|					goto success;
  257|      2|				}
  258|      2|			}
  259|      2|		}
  260|      0|# endif
  261|      0|		p = mmap(0, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_HUGETLB, fd, 0);
  262|      0|		if (p != MAP_FAILED) {
  ------------------
  |  Branch (262:7): [True: 0, False: 0]
  ------------------
  263|      0|			goto success;
  264|      0|		}
  265|      0|	}
  266|       |#elif defined(PREFER_MAP_32BIT) && defined(__x86_64__) && defined(MAP_32BIT)
  267|       |	p = mmap(NULL, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS|MAP_32BIT, fd, 0);
  268|       |	if (p != MAP_FAILED) {
  269|       |		goto success;
  270|       |	}
  271|       |#endif
  272|       |
  273|      0|	p = mmap(0, requested_size, flags, MAP_SHARED|MAP_ANONYMOUS, fd, 0);
  274|      0|	if (p == MAP_FAILED) {
  ------------------
  |  Branch (274:6): [True: 0, False: 0]
  ------------------
  275|      0|		*error_in = "mmap";
  276|      0|		return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  277|      0|	}
  278|       |
  279|      2|success: ZEND_ATTRIBUTE_UNUSED;
  280|      2|	*shared_segments_count = 1;
  281|      2|	*shared_segments_p = (zend_shared_segment **) calloc(1, sizeof(zend_shared_segment) + sizeof(void *));
  282|      2|	if (!*shared_segments_p) {
  ------------------
  |  Branch (282:6): [True: 0, False: 2]
  ------------------
  283|      0|		munmap(p, requested_size);
  284|      0|		*error_in = "calloc";
  285|      0|		return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  286|      0|	}
  287|      2|	shared_segment = (zend_shared_segment *)((char *)(*shared_segments_p) + sizeof(void *));
  288|      2|	(*shared_segments_p)[0] = shared_segment;
  289|       |
  290|      2|	shared_segment->p = p;
  291|      2|	shared_segment->pos = 0;
  292|      2|	shared_segment->size = requested_size;
  293|       |
  294|      2|	return ALLOC_SUCCESS;
  ------------------
  |  |   68|      2|#define ALLOC_SUCCESS           1
  ------------------
  295|      2|}
shared_alloc_mmap.c:segment_type_size:
  304|      4|{
  305|      4|	return sizeof(zend_shared_segment);
  306|      4|}

zend_accel_blacklist_is_blacklisted:
  338|      3|{
  339|      3|	int ret = 0;
  340|      3|	const zend_regexp_list *regexp_list_it = blacklist->regexp_list;
  341|      3|	pcre2_match_context *mctx = php_pcre_mctx();
  ------------------
  |  |  843|      3|#define pcre2_match_context            PCRE2_SUFFIX(pcre2_match_context_)
  |  |  ------------------
  |  |  |  |  994|      3|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      3|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      3|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|       |
  343|      3|	if (regexp_list_it == NULL) {
  ------------------
  |  Branch (343:6): [True: 3, False: 0]
  ------------------
  344|      3|		return false;
  345|      3|	}
  346|      0|	while (regexp_list_it != NULL) {
  ------------------
  |  Branch (346:9): [True: 0, False: 0]
  ------------------
  347|      0|		pcre2_match_data *match_data = php_pcre_create_match_data(0, regexp_list_it->re);
  ------------------
  |  |  844|      0|#define pcre2_match_data               PCRE2_SUFFIX(pcre2_match_data_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      0|		if (!match_data) {
  ------------------
  |  Branch (348:7): [True: 0, False: 0]
  ------------------
  349|       |			/* Alloc failed, but next one could still come through and match. */
  350|      0|			continue;
  351|      0|		}
  352|      0|		int rc = pcre2_match(regexp_list_it->re, (PCRE2_SPTR)verify_path, verify_path_len, 0, 0, match_data, mctx);
  ------------------
  |  |  881|      0|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|      0|		if (rc >= 0) {
  ------------------
  |  Branch (353:7): [True: 0, False: 0]
  ------------------
  354|      0|			ret = 1;
  355|      0|			php_pcre_free_match_data(match_data);
  356|      0|			break;
  357|      0|		}
  358|      0|		php_pcre_free_match_data(match_data);
  359|      0|		regexp_list_it = regexp_list_it->next;
  360|      0|	}
  361|      0|	return ret;
  362|      3|}

zend_accel_error:
   98|      1|{
   99|      1|	va_list args;
  100|      1|	va_start(args, format);
  101|      1|	zend_accel_error_va_args(type, format, args);
  102|       |	va_end(args);
  103|      1|}
zend_accelerator_debug.c:zend_accel_error_va_args:
   30|      1|{
   31|      1|	time_t timestamp;
   32|      1|	char *time_string;
   33|      1|	FILE * fLog = NULL;
   34|       |
   35|      1|	if (type <= ZCG(accel_directives).log_verbosity_level) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (35:6): [True: 0, False: 1]
  ------------------
   36|       |
   37|      0|	timestamp = time(NULL);
   38|      0|	time_string = asctime(localtime(&timestamp));
   39|      0|	time_string[24] = 0;
   40|       |
   41|      0|	if (!ZCG(accel_directives).error_log ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (41:6): [True: 0, False: 0]
  ------------------
   42|      0|		!*ZCG(accel_directives).error_log ||
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (42:3): [True: 0, False: 0]
  ------------------
   43|      0|		strcmp(ZCG(accel_directives).error_log, "stderr") == 0) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (43:3): [True: 0, False: 0]
  ------------------
   44|       |
   45|      0|		fLog = stderr;
   46|      0|	} else {
   47|      0|		fLog = fopen(ZCG(accel_directives).error_log, "a");
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
   48|      0|		if (!fLog) {
  ------------------
  |  Branch (48:7): [True: 0, False: 0]
  ------------------
   49|      0|			fLog = stderr;
   50|      0|		}
   51|      0|	}
   52|       |
   53|       |#ifdef ZTS
   54|       |		fprintf(fLog, "%s (" ZEND_ULONG_FMT "): ", time_string, (zend_ulong)tsrm_thread_id());
   55|       |#else
   56|      0|		fprintf(fLog, "%s (%d): ", time_string, getpid());
   57|      0|#endif
   58|       |
   59|      0|		switch (type) {
  ------------------
  |  Branch (59:11): [True: 0, False: 0]
  ------------------
   60|      0|			case ACCEL_LOG_FATAL:
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  |  Branch (60:4): [True: 0, False: 0]
  ------------------
   61|      0|				fprintf(fLog, "Fatal Error ");
   62|      0|				break;
   63|      0|			case ACCEL_LOG_ERROR:
  ------------------
  |  |   24|      0|#define ACCEL_LOG_ERROR					1
  ------------------
  |  Branch (63:4): [True: 0, False: 0]
  ------------------
   64|      0|				fprintf(fLog, "Error ");
   65|      0|				break;
   66|      0|			case ACCEL_LOG_WARNING:
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  |  Branch (66:4): [True: 0, False: 0]
  ------------------
   67|      0|				fprintf(fLog, "Warning ");
   68|      0|				break;
   69|      0|			case ACCEL_LOG_INFO:
  ------------------
  |  |   26|      0|#define ACCEL_LOG_INFO					3
  ------------------
  |  Branch (69:4): [True: 0, False: 0]
  ------------------
   70|      0|				fprintf(fLog, "Message ");
   71|      0|				break;
   72|      0|			case ACCEL_LOG_DEBUG:
  ------------------
  |  |   27|      0|#define ACCEL_LOG_DEBUG					4
  ------------------
  |  Branch (72:4): [True: 0, False: 0]
  ------------------
   73|      0|				fprintf(fLog, "Debug ");
   74|      0|				break;
   75|      0|		}
   76|       |
   77|      0|		vfprintf(fLog, format, args);
   78|      0|		fprintf(fLog, "\n");
   79|       |
   80|      0|		fflush(fLog);
   81|      0|		if (fLog != stderr) {
  ------------------
  |  Branch (81:7): [True: 0, False: 0]
  ------------------
   82|      0|			fclose(fLog);
   83|      0|		}
   84|      0|	}
   85|       |	/* perform error handling even without logging the error */
   86|      1|	switch (type) {
  ------------------
  |  Branch (86:10): [True: 0, False: 1]
  ------------------
   87|      0|		case ACCEL_LOG_ERROR:
  ------------------
  |  |   24|      0|#define ACCEL_LOG_ERROR					1
  ------------------
  |  Branch (87:3): [True: 0, False: 1]
  ------------------
   88|      0|			zend_bailout();
  ------------------
  |  |  273|      0|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
   89|      0|			break;
   90|      0|		case ACCEL_LOG_FATAL:
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  |  Branch (90:3): [True: 0, False: 1]
  ------------------
   91|      0|			exit(-2);
   92|      0|			break;
   93|      1|	}
   94|       |
   95|      1|}

zend_accel_hash_init:
   38|      2|{
   39|      2|	uint32_t i;
   40|       |
   41|     24|	for (i=0; i<num_prime_numbers; i++) {
  ------------------
  |  Branch (41:12): [True: 24, False: 0]
  ------------------
   42|     24|		if (hash_size <= prime_numbers[i]) {
  ------------------
  |  Branch (42:7): [True: 2, False: 22]
  ------------------
   43|      2|			hash_size = prime_numbers[i];
   44|      2|			break;
   45|      2|		}
   46|     24|	}
   47|       |
   48|      2|	accel_hash->num_entries = 0;
   49|      2|	accel_hash->num_direct_entries = 0;
   50|      2|	accel_hash->max_num_entries = hash_size;
   51|       |
   52|       |	/* set up hash pointers table */
   53|      2|	accel_hash->hash_table = zend_shared_alloc(sizeof(zend_accel_hash_entry *)*accel_hash->max_num_entries);
   54|      2|	if (!accel_hash->hash_table) {
  ------------------
  |  Branch (54:6): [True: 0, False: 2]
  ------------------
   55|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
   56|      0|		return;
   57|      0|	}
   58|       |
   59|       |	/* set up hash values table */
   60|      2|	accel_hash->hash_entries = zend_shared_alloc(sizeof(zend_accel_hash_entry)*accel_hash->max_num_entries);
   61|      2|	if (!accel_hash->hash_entries) {
  ------------------
  |  Branch (61:6): [True: 0, False: 2]
  ------------------
   62|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
   63|      0|		return;
   64|      0|	}
   65|      2|	memset(accel_hash->hash_table, 0, sizeof(zend_accel_hash_entry *)*accel_hash->max_num_entries);
   66|      2|}
zend_accel_hash_update:
   73|      1|{
   74|      1|	zend_ulong hash_value;
   75|      1|	zend_ulong index;
   76|      1|	zend_accel_hash_entry *entry;
   77|      1|	zend_accel_hash_entry *indirect_bucket = NULL;
   78|       |
   79|      1|	if (indirect) {
  ------------------
  |  Branch (79:6): [True: 0, False: 1]
  ------------------
   80|      0|		indirect_bucket = (zend_accel_hash_entry*)data;
   81|      0|		while (indirect_bucket->indirect) {
  ------------------
  |  Branch (81:10): [True: 0, False: 0]
  ------------------
   82|      0|			indirect_bucket = (zend_accel_hash_entry*)indirect_bucket->data;
   83|      0|		}
   84|      0|	}
   85|       |
   86|      1|	hash_value = zend_string_hash_val(key);
   87|      1|#ifndef ZEND_WIN32
   88|      1|	hash_value ^= ZCG(root_hash);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
   89|      1|#endif
   90|      1|	index = hash_value % accel_hash->max_num_entries;
   91|       |
   92|       |	/* try to see if the element already exists in the hash */
   93|      1|	entry = accel_hash->hash_table[index];
   94|      1|	while (entry) {
  ------------------
  |  Branch (94:9): [True: 0, False: 1]
  ------------------
   95|      0|		if (entry->hash_value == hash_value
  ------------------
  |  Branch (95:7): [True: 0, False: 0]
  ------------------
   96|      0|		 && zend_string_equals(entry->key, key)) {
  ------------------
  |  Branch (96:7): [True: 0, False: 0]
  ------------------
   97|       |
   98|      0|			if (entry->indirect) {
  ------------------
  |  Branch (98:8): [True: 0, False: 0]
  ------------------
   99|      0|				if (indirect_bucket) {
  ------------------
  |  Branch (99:9): [True: 0, False: 0]
  ------------------
  100|      0|					entry->data = indirect_bucket;
  101|      0|				} else {
  102|      0|					((zend_accel_hash_entry*)entry->data)->data = data;
  103|      0|				}
  104|      0|			} else {
  105|      0|				if (indirect_bucket) {
  ------------------
  |  Branch (105:9): [True: 0, False: 0]
  ------------------
  106|      0|					accel_hash->num_direct_entries--;
  107|      0|					entry->data = indirect_bucket;
  108|      0|					entry->indirect = 1;
  109|      0|				} else {
  110|      0|					entry->data = data;
  111|      0|				}
  112|      0|			}
  113|      0|			return entry;
  114|      0|		}
  115|      0|		entry = entry->next;
  116|      0|	}
  117|       |
  118|       |	/* Does not exist, add a new entry */
  119|      1|	if (accel_hash->num_entries == accel_hash->max_num_entries) {
  ------------------
  |  Branch (119:6): [True: 0, False: 1]
  ------------------
  120|      0|		return NULL;
  121|      0|	}
  122|       |
  123|      1|	entry = &accel_hash->hash_entries[accel_hash->num_entries++];
  124|      1|	if (indirect) {
  ------------------
  |  Branch (124:6): [True: 0, False: 1]
  ------------------
  125|      0|		entry->data = indirect_bucket;
  126|      0|		entry->indirect = 1;
  127|      1|	} else {
  128|      1|		accel_hash->num_direct_entries++;
  129|      1|		entry->data = data;
  130|      1|		entry->indirect = 0;
  131|      1|	}
  132|      1|	entry->hash_value = hash_value;
  133|      1|	entry->key = key;
  134|      1|	entry->next = accel_hash->hash_table[index];
  135|      1|	accel_hash->hash_table[index] = entry;
  136|      1|	return entry;
  137|      1|}
zend_accel_hash_find:
  178|  35.6k|{
  179|       |	return zend_accel_hash_find_ex(accel_hash, key, true);
  180|  35.6k|}
zend_accel_hash_find_entry:
  186|  2.00k|{
  187|       |	return (zend_accel_hash_entry *)zend_accel_hash_find_ex(accel_hash, key, false);
  188|  2.00k|}
zend_accelerator_hash.c:zend_accel_hash_find_ex:
  140|  37.6k|{
  141|  37.6k|	zend_ulong index;
  142|  37.6k|	zend_accel_hash_entry *entry;
  143|  37.6k|	zend_ulong hash_value;
  144|       |
  145|  37.6k|	hash_value = zend_string_hash_val(key);
  146|  37.6k|#ifndef ZEND_WIN32
  147|  37.6k|	hash_value ^= ZCG(root_hash);
  ------------------
  |  |  306|  37.6k|# define ZCG(v) (accel_globals.v)
  ------------------
  148|  37.6k|#endif
  149|  37.6k|	index = hash_value % accel_hash->max_num_entries;
  150|       |
  151|  37.6k|	entry = accel_hash->hash_table[index];
  152|  37.6k|	while (entry) {
  ------------------
  |  Branch (152:9): [True: 26.5k, False: 11.0k]
  ------------------
  153|  26.5k|		if (entry->hash_value == hash_value
  ------------------
  |  Branch (153:7): [True: 26.5k, False: 0]
  ------------------
  154|  26.5k|		 && zend_string_equals(entry->key, key)) {
  ------------------
  |  Branch (154:7): [True: 26.5k, False: 0]
  ------------------
  155|  26.5k|			if (entry->indirect) {
  ------------------
  |  Branch (155:8): [True: 0, False: 26.5k]
  ------------------
  156|      0|				if (data) {
  ------------------
  |  Branch (156:9): [True: 0, False: 0]
  ------------------
  157|      0|					return ((zend_accel_hash_entry*)entry->data)->data;
  158|      0|				} else {
  159|      0|					return entry->data;
  160|      0|				}
  161|  26.5k|			} else {
  162|  26.5k|				if (data) {
  ------------------
  |  Branch (162:9): [True: 26.5k, False: 0]
  ------------------
  163|  26.5k|					return entry->data;
  164|  26.5k|				} else {
  165|      0|					return entry;
  166|      0|				}
  167|  26.5k|			}
  168|  26.5k|		}
  169|      0|		entry = entry->next;
  170|      0|	}
  171|  11.0k|	return NULL;
  172|  37.6k|}

ZendAccelerator.c:zend_accel_hash_is_full:
   85|      1|{
   86|      1|	if (accel_hash->num_entries == accel_hash->max_num_entries) {
  ------------------
  |  Branch (86:6): [True: 0, False: 1]
  ------------------
   87|      0|		return true;
   88|      1|	} else {
   89|       |		return false;
   90|      1|	}
   91|      1|}

zend_accel_register_ini_entries:
  452|      2|{
  453|      2|	zend_module_entry *module = zend_hash_str_find_ptr_lc(&module_registry,
  454|      2|			ACCELERATOR_PRODUCT_NAME, strlen(ACCELERATOR_PRODUCT_NAME));
  ------------------
  |  |   27|      2|#define ACCELERATOR_PRODUCT_NAME	"Zend OPcache"
  ------------------
              			ACCELERATOR_PRODUCT_NAME, strlen(ACCELERATOR_PRODUCT_NAME));
  ------------------
  |  |   27|      2|#define ACCELERATOR_PRODUCT_NAME	"Zend OPcache"
  ------------------
  455|       |
  456|      2|	zend_register_ini_entries_ex(ini_entries, module->module_number, module->type);
  457|      2|}
zend_accel_override_file_functions:
  460|      2|{
  461|      2|	zend_function *old_function;
  462|      2|	if (ZCG(enabled) && accel_startup_ok && ZCG(accel_directives).file_override_enabled) {
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              	if (ZCG(enabled) && accel_startup_ok && ZCG(accel_directives).file_override_enabled) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (462:22): [True: 2, False: 0]
  |  Branch (462:42): [True: 0, False: 2]
  ------------------
  463|      0|		if (file_cache_only) {
  ------------------
  |  Branch (463:7): [True: 0, False: 0]
  ------------------
  464|      0|			zend_accel_error(ACCEL_LOG_WARNING, "file_override_enabled has no effect when file_cache_only is set");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  465|      0|			return;
  466|      0|		}
  467|       |		/* override file_exists */
  468|      0|		if ((old_function = zend_hash_str_find_ptr(CG(function_table), "file_exists", sizeof("file_exists")-1)) != NULL) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (468:7): [True: 0, False: 0]
  ------------------
  469|      0|			orig_file_exists = old_function->internal_function.handler;
  470|      0|			old_function->internal_function.handler = accel_file_exists;
  471|      0|		}
  472|      0|		if ((old_function = zend_hash_str_find_ptr(CG(function_table), "is_file", sizeof("is_file")-1)) != NULL) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (472:7): [True: 0, False: 0]
  ------------------
  473|      0|			orig_is_file = old_function->internal_function.handler;
  474|      0|			old_function->internal_function.handler = accel_is_file;
  475|      0|		}
  476|      0|		if ((old_function = zend_hash_str_find_ptr(CG(function_table), "is_readable", sizeof("is_readable")-1)) != NULL) {
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (476:7): [True: 0, False: 0]
  ------------------
  477|      0|			orig_is_readable = old_function->internal_function.handler;
  478|      0|			old_function->internal_function.handler = accel_is_readable;
  479|      0|		}
  480|      0|	}
  481|      2|}
zend_accel_info:
  494|      1|{
  495|      1|	php_info_print_table_start();
  496|       |
  497|      1|	if (ZCG(accelerator_enabled) || file_cache_only) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (497:34): [True: 0, False: 0]
  ------------------
  498|      1|		php_info_print_table_row(2, "Opcode Caching", "Up and Running");
  499|      1|	} else {
  500|      0|		php_info_print_table_row(2, "Opcode Caching", "Disabled");
  501|      0|	}
  502|      1|	if (ZCG(enabled) && accel_startup_ok && ZCG(accel_directives).optimization_level) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	if (ZCG(enabled) && accel_startup_ok && ZCG(accel_directives).optimization_level) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (502:22): [True: 1, False: 0]
  |  Branch (502:42): [True: 1, False: 0]
  ------------------
  503|      1|		php_info_print_table_row(2, "Optimization", "Enabled");
  504|      1|	} else {
  505|      0|		php_info_print_table_row(2, "Optimization", "Disabled");
  506|      0|	}
  507|      1|	if (!file_cache_only) {
  ------------------
  |  Branch (507:6): [True: 1, False: 0]
  ------------------
  508|      1|		php_info_print_table_row(2, "SHM Cache", "Enabled");
  509|      1|	} else {
  510|      0|		php_info_print_table_row(2, "SHM Cache", "Disabled");
  511|      0|	}
  512|      1|	if (ZCG(accel_directives).file_cache) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (512:6): [True: 0, False: 1]
  ------------------
  513|      0|		php_info_print_table_row(2, "File Cache", "Enabled");
  514|      1|	} else {
  515|      1|		php_info_print_table_row(2, "File Cache", "Disabled");
  516|      1|	}
  517|      1|#ifdef HAVE_JIT
  518|      1|	if (JIT_G(enabled)) {
  ------------------
  |  |  151|      1|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  519|      0|		if (JIT_G(on)) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  520|      0|			php_info_print_table_row(2, "JIT", "On");
  521|      0|		} else {
  522|      0|			php_info_print_table_row(2, "JIT", "Off");
  523|      0|		}
  524|      1|	} else {
  525|      1|		php_info_print_table_row(2, "JIT", "Disabled");
  526|      1|	}
  527|       |#else
  528|       |	php_info_print_table_row(2, "JIT", "Not Available");
  529|       |#endif
  530|      1|	if (file_cache_only) {
  ------------------
  |  Branch (530:6): [True: 0, False: 1]
  ------------------
  531|      0|		if (!accel_startup_ok || zps_api_failure_reason) {
  ------------------
  |  Branch (531:7): [True: 0, False: 0]
  |  Branch (531:28): [True: 0, False: 0]
  ------------------
  532|      0|			php_info_print_table_row(2, "Startup Failed", zps_api_failure_reason);
  533|      0|		} else {
  534|      0|			php_info_print_table_row(2, "Startup", "OK");
  535|      0|		}
  536|      0|	} else
  537|      1|	if (ZCG(enabled)) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  538|      1|		if (!accel_startup_ok || zps_api_failure_reason) {
  ------------------
  |  Branch (538:7): [True: 0, False: 1]
  |  Branch (538:28): [True: 0, False: 1]
  ------------------
  539|      0|			php_info_print_table_row(2, "Startup Failed", zps_api_failure_reason);
  540|      1|		} else {
  541|      1|			char buf[32];
  542|      1|			zend_string *start_time, *restart_time, *force_restart_time;
  543|      1|			zval *date_ISO8601 = zend_get_constant_str("DATE_ISO8601", sizeof("DATE_ISO8601")-1);
  544|       |
  545|      1|			php_info_print_table_row(2, "Startup", "OK");
  546|      1|			php_info_print_table_row(2, "Shared memory model", zend_accel_get_shared_model());
  547|      1|			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hits));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hits));
  ------------------
  |  |   55|      1|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hits));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  548|      1|			php_info_print_table_row(2, "Cache hits", buf);
  549|      1|			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZSMMG(memory_exhausted)?ZCSG(misses):ZCSG(misses)-ZCSG(blacklist_misses));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZSMMG(memory_exhausted)?ZCSG(misses):ZCSG(misses)-ZCSG(blacklist_misses));
  ------------------
  |  |   55|      1|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZSMMG(memory_exhausted)?ZCSG(misses):ZCSG(misses)-ZCSG(blacklist_misses));
  ------------------
  |  |  123|      1|#define ZSMMG(element)		(smm_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (123:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZSMMG(memory_exhausted)?ZCSG(misses):ZCSG(misses)-ZCSG(blacklist_misses));
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZSMMG(memory_exhausted)?ZCSG(misses):ZCSG(misses)-ZCSG(blacklist_misses));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZSMMG(memory_exhausted)?ZCSG(misses):ZCSG(misses)-ZCSG(blacklist_misses));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  550|      1|			php_info_print_table_row(2, "Cache misses", buf);
  551|      1|			snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ZCG(accel_directives).memory_consumption-zend_shared_alloc_get_free_memory()-ZSMMG(wasted_shared_memory));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ZCG(accel_directives).memory_consumption-zend_shared_alloc_get_free_memory()-ZSMMG(wasted_shared_memory));
  ------------------
  |  |   54|      1|# define ZEND_LONG_FMT "%" PRId64
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ZCG(accel_directives).memory_consumption-zend_shared_alloc_get_free_memory()-ZSMMG(wasted_shared_memory));
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ZCG(accel_directives).memory_consumption-zend_shared_alloc_get_free_memory()-ZSMMG(wasted_shared_memory));
  ------------------
  |  |  123|      1|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  552|      1|			php_info_print_table_row(2, "Used memory", buf);
  553|      1|			snprintf(buf, sizeof(buf), "%zu", zend_shared_alloc_get_free_memory());
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
  554|      1|			php_info_print_table_row(2, "Free memory", buf);
  555|      1|			snprintf(buf, sizeof(buf), "%zu", ZSMMG(wasted_shared_memory));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), "%zu", ZSMMG(wasted_shared_memory));
  ------------------
  |  |  123|      1|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  556|      1|			php_info_print_table_row(2, "Wasted memory", buf);
  557|      1|			if (ZCSG(interned_strings).start && ZCSG(interned_strings).end) {
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              			if (ZCSG(interned_strings).start && ZCSG(interned_strings).end) {
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  |  Branch (557:8): [True: 1, False: 0]
  |  Branch (557:40): [True: 1, False: 0]
  ------------------
  558|      1|				snprintf(buf, sizeof(buf), "%zu", (size_t)((char*)ZCSG(interned_strings).top - (char*)(accel_shared_globals + 1)));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              				snprintf(buf, sizeof(buf), "%zu", (size_t)((char*)ZCSG(interned_strings).top - (char*)(accel_shared_globals + 1)));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  559|      1|				php_info_print_table_row(2, "Interned Strings Used memory", buf);
  560|      1|				snprintf(buf, sizeof(buf), "%zu", (size_t)((char*)ZCSG(interned_strings).end - (char*)ZCSG(interned_strings).top));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              				snprintf(buf, sizeof(buf), "%zu", (size_t)((char*)ZCSG(interned_strings).end - (char*)ZCSG(interned_strings).top));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              				snprintf(buf, sizeof(buf), "%zu", (size_t)((char*)ZCSG(interned_strings).end - (char*)ZCSG(interned_strings).top));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  561|      1|				php_info_print_table_row(2, "Interned Strings Free memory", buf);
  562|      1|			}
  563|      1|			snprintf(buf, sizeof(buf), "%" PRIu32, ZCSG(hash).num_direct_entries);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), "%" PRIu32, ZCSG(hash).num_direct_entries);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  564|      1|			php_info_print_table_row(2, "Cached scripts", buf);
  565|      1|			snprintf(buf, sizeof(buf), "%" PRIu32, ZCSG(hash).num_entries);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), "%" PRIu32, ZCSG(hash).num_entries);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  566|      1|			php_info_print_table_row(2, "Cached keys", buf);
  567|      1|			snprintf(buf, sizeof(buf), "%" PRIu32, ZCSG(hash).max_num_entries);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), "%" PRIu32, ZCSG(hash).max_num_entries);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  568|      1|			php_info_print_table_row(2, "Max keys", buf);
  569|      1|			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(oom_restarts));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(oom_restarts));
  ------------------
  |  |   55|      1|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(oom_restarts));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  570|      1|			php_info_print_table_row(2, "OOM restarts", buf);
  571|      1|			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hash_restarts));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hash_restarts));
  ------------------
  |  |   55|      1|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hash_restarts));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  572|      1|			php_info_print_table_row(2, "Hash keys restarts", buf);
  573|      1|			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(manual_restarts));
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(manual_restarts));
  ------------------
  |  |   55|      1|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
              			snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(manual_restarts));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  574|      1|			php_info_print_table_row(2, "Manual restarts", buf);
  575|       |
  576|      1|			start_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(start_time), 1);
  ------------------
  |  |  985|      1|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      1|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			start_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(start_time), 1);
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			start_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(start_time), 1);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  577|      1|			php_info_print_table_row(2, "Start time", ZSTR_VAL(start_time));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  578|      1|			zend_string_release(start_time);
  579|       |
  580|      1|			if (ZCSG(last_restart_time)) {
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  581|      0|				restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(last_restart_time), 1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(last_restart_time), 1);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(last_restart_time), 1);
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  582|      0|				php_info_print_table_row(2, "Last restart time", ZSTR_VAL(restart_time));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  583|      0|				zend_string_release(restart_time);
  584|      1|			} else {
  585|      1|				php_info_print_table_row(2, "Last restart time", "none");
  586|      1|			}
  587|       |
  588|      1|			if (ZCSG(force_restart_time)) {
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  ------------------
  |  |  |  Branch (299:25): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  589|      0|				force_restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(force_restart_time), 1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				force_restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(force_restart_time), 1);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				force_restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(force_restart_time), 1);
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  590|      0|				php_info_print_table_row(2, "Last force restart time", ZSTR_VAL(force_restart_time));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  591|      0|				zend_string_release(force_restart_time);
  592|      1|			} else {
  593|      1|				php_info_print_table_row(2, "Last force restart time", "none");
  594|      1|			}
  595|      1|		}
  596|      1|	}
  597|       |
  598|      1|	php_info_print_table_end();
  599|      1|	DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      1|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
  600|      1|}
zend_accelerator_module.c:OnEnable:
  153|      2|{
  154|      2|	if (stage == ZEND_INI_STAGE_STARTUP ||
  ------------------
  |  |  223|      4|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  ------------------
  |  Branch (154:6): [True: 2, False: 0]
  ------------------
  155|      0|	    stage == ZEND_INI_STAGE_SHUTDOWN ||
  ------------------
  |  |  224|      2|#define ZEND_INI_STAGE_SHUTDOWN		(1<<1)
  ------------------
  |  Branch (155:6): [True: 0, False: 0]
  ------------------
  156|      2|	    stage == ZEND_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |  226|      0|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  ------------------
  |  Branch (156:6): [True: 0, False: 0]
  ------------------
  157|      2|		return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  158|      2|	} else {
  159|       |		/* It may be only temporarily disabled */
  160|      0|		bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      0|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      0|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  161|      0|		if (zend_ini_parse_bool(new_value)) {
  ------------------
  |  Branch (161:7): [True: 0, False: 0]
  ------------------
  162|      0|			if (*p) {
  ------------------
  |  Branch (162:8): [True: 0, False: 0]
  ------------------
  163|       |				/* Do not warn if OPcache is enabled, as the update would be a noop anyways. */
  164|      0|				return SUCCESS;
  165|      0|			}
  166|       |
  167|      0|			if (stage == ZEND_INI_STAGE_ACTIVATE) {
  ------------------
  |  |  225|      0|#define ZEND_INI_STAGE_ACTIVATE		(1<<2)
  ------------------
  |  Branch (167:8): [True: 0, False: 0]
  ------------------
  168|      0|				if (strcmp(sapi_module.name, "fpm-fcgi") == 0) {
  ------------------
  |  Branch (168:9): [True: 0, False: 0]
  ------------------
  169|      0|					zend_accel_error(ACCEL_LOG_WARNING, ACCELERATOR_PRODUCT_NAME " can't be temporarily enabled. Are you using php_admin_value[opcache.enable]=1 in an individual pool's configuration?");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
              					zend_accel_error(ACCEL_LOG_WARNING, ACCELERATOR_PRODUCT_NAME " can't be temporarily enabled. Are you using php_admin_value[opcache.enable]=1 in an individual pool's configuration?");
  ------------------
  |  |   27|      0|#define ACCELERATOR_PRODUCT_NAME	"Zend OPcache"
  ------------------
  170|      0|				} else {
  171|      0|					zend_accel_error(ACCEL_LOG_WARNING, ACCELERATOR_PRODUCT_NAME " can't be temporarily enabled (it may be only disabled until the end of request)");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
              					zend_accel_error(ACCEL_LOG_WARNING, ACCELERATOR_PRODUCT_NAME " can't be temporarily enabled (it may be only disabled until the end of request)");
  ------------------
  |  |   27|      0|#define ACCELERATOR_PRODUCT_NAME	"Zend OPcache"
  ------------------
  172|      0|				}
  173|      0|			} else {
  174|      0|				zend_error(E_WARNING, ACCELERATOR_PRODUCT_NAME " can't be temporarily enabled (it may be only disabled until the end of request)");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              				zend_error(E_WARNING, ACCELERATOR_PRODUCT_NAME " can't be temporarily enabled (it may be only disabled until the end of request)");
  ------------------
  |  |   27|      0|#define ACCELERATOR_PRODUCT_NAME	"Zend OPcache"
  ------------------
  175|      0|			}
  176|      0|			return FAILURE;
  177|      0|		} else {
  178|      0|			*p = false;
  179|      0|			ZCG(accelerator_enabled) = false;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  180|      0|			return SUCCESS;
  181|      0|		}
  182|      0|	}
  183|      2|}
zend_accelerator_module.c:OnUpdateMemoryConsumption:
   78|      2|{
   79|      2|	if (accel_startup_ok) {
  ------------------
  |  Branch (79:6): [True: 0, False: 2]
  ------------------
   80|      0|		if (strcmp(sapi_module.name, "fpm-fcgi") == 0) {
  ------------------
  |  Branch (80:7): [True: 0, False: 0]
  ------------------
   81|      0|			zend_accel_error(ACCEL_LOG_WARNING, "opcache.memory_consumption cannot be changed when OPcache is already set up. Are you using php_admin_value[opcache.memory_consumption] in an individual pool's configuration?\n");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
   82|      0|		} else {
   83|      0|			zend_accel_error(ACCEL_LOG_WARNING, "opcache.memory_consumption cannot be changed when OPcache is already set up.\n");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
   84|      0|		}
   85|      0|		return FAILURE;
   86|      0|	}
   87|       |
   88|      2|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
   89|      2|	zend_long memsize = atoi(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   90|       |	/* sanity check we must use at least 8 MB */
   91|      2|	if (memsize < 8) {
  ------------------
  |  Branch (91:6): [True: 0, False: 2]
  ------------------
   92|      0|		zend_accel_error(ACCEL_LOG_WARNING, "opcache.memory_consumption is set below the required 8MB.\n");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
   93|      0|		return FAILURE;
   94|      0|	}
   95|      2|	if (UNEXPECTED(memsize > ZEND_LONG_MAX / (1024 * 1024))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   96|      0|		*p = ZEND_LONG_MAX & ~(1024 * 1024 - 1);
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
   97|      2|	} else {
   98|      2|		*p = memsize * (1024 * 1024);
   99|      2|	}
  100|      2|	return SUCCESS;
  101|      2|}
zend_accelerator_module.c:OnUpdateInternedStringsBuffer:
  104|      2|{
  105|      2|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  106|      2|	zend_long size = zend_ini_parse_quantity_warn(new_value, entry->name);
  107|       |
  108|      2|	if (size < 0) {
  ------------------
  |  Branch (108:6): [True: 0, False: 2]
  ------------------
  109|      0|		zend_accel_error(ACCEL_LOG_WARNING, "opcache.interned_strings_buffer must be greater than or equal to 0, " ZEND_LONG_FMT " given.\n", size);
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  110|      0|		return FAILURE;
  111|      0|	}
  112|      2|	if (size > MAX_INTERNED_STRINGS_BUFFER_SIZE) {
  ------------------
  |  |   46|      2|#define MAX_INTERNED_STRINGS_BUFFER_SIZE ((zend_long)MIN( \
  |  |   47|      2|	MIN( \
  |  |   48|      2|		/* STRTAB_STR_TO_POS() must not overflow (zend_string_table_pos_t) */ \
  |  |   49|      2|		(ZEND_STRING_TABLE_POS_MAX - sizeof(zend_string_table)) / (1024 * 1024 / ZEND_STRING_TABLE_POS_ALIGNMENT), \
  |  |   50|      2|		/* nTableMask must not overflow (uint32_t) */ \
  |  |   51|      2|		UINT32_MAX / (32 * 1024 * sizeof(zend_string_table_pos_t)) \
  |  |   52|      2|	), \
  |  |   53|      2|	/* SHM allocation must not overflow (size_t) */ \
  |  |   54|      2|	(SIZE_MAX - sizeof(zend_accel_shared_globals)) / (1024 * 1024) \
  |  |   55|      2|))
  ------------------
  |  Branch (112:6): [True: 0, False: 2]
  |  Branch (112:13): [Folded, False: 2]
  |  Branch (112:13): [Folded, False: 2]
  |  Branch (112:13): [True: 2, Folded]
  ------------------
  113|      0|		zend_accel_error(ACCEL_LOG_WARNING, "opcache.interned_strings_buffer must be less than or equal to " ZEND_LONG_FMT ", " ZEND_LONG_FMT " given.\n", MAX_INTERNED_STRINGS_BUFFER_SIZE, size);
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
              		zend_accel_error(ACCEL_LOG_WARNING, "opcache.interned_strings_buffer must be less than or equal to " ZEND_LONG_FMT ", " ZEND_LONG_FMT " given.\n", MAX_INTERNED_STRINGS_BUFFER_SIZE, size);
  ------------------
  |  |   46|      0|#define MAX_INTERNED_STRINGS_BUFFER_SIZE ((zend_long)MIN( \
  |  |   47|      0|	MIN( \
  |  |   48|      0|		/* STRTAB_STR_TO_POS() must not overflow (zend_string_table_pos_t) */ \
  |  |   49|      0|		(ZEND_STRING_TABLE_POS_MAX - sizeof(zend_string_table)) / (1024 * 1024 / ZEND_STRING_TABLE_POS_ALIGNMENT), \
  |  |   50|      0|		/* nTableMask must not overflow (uint32_t) */ \
  |  |   51|      0|		UINT32_MAX / (32 * 1024 * sizeof(zend_string_table_pos_t)) \
  |  |   52|      0|	), \
  |  |   53|      0|	/* SHM allocation must not overflow (size_t) */ \
  |  |   54|      0|	(SIZE_MAX - sizeof(zend_accel_shared_globals)) / (1024 * 1024) \
  |  |   55|      0|))
  ------------------
  |  Branch (113:150): [Folded, False: 0]
  |  Branch (113:150): [Folded, False: 0]
  |  Branch (113:150): [True: 0, Folded]
  ------------------
  114|      0|		return FAILURE;
  115|      0|	}
  116|       |
  117|      2|	*p = size;
  118|       |
  119|      2|	return SUCCESS;
  120|      2|}
zend_accelerator_module.c:OnUpdateMaxAcceleratedFiles:
  123|      2|{
  124|      2|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  125|      2|	zend_long size = atoi(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  126|       |	/* sanity check we must use a value between MIN_ACCEL_FILES and MAX_ACCEL_FILES */
  127|      2|	if (size < MIN_ACCEL_FILES) {
  ------------------
  |  |   43|      2|#define MIN_ACCEL_FILES 200
  ------------------
  |  Branch (127:6): [True: 0, False: 2]
  ------------------
  128|      0|		zend_accel_error(ACCEL_LOG_WARNING, "opcache.max_accelerated_files is set below the required minimum (%d).\n", MIN_ACCEL_FILES);
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
              		zend_accel_error(ACCEL_LOG_WARNING, "opcache.max_accelerated_files is set below the required minimum (%d).\n", MIN_ACCEL_FILES);
  ------------------
  |  |   43|      0|#define MIN_ACCEL_FILES 200
  ------------------
  129|      0|		return FAILURE;
  130|      0|	}
  131|      2|	if (size > MAX_ACCEL_FILES) {
  ------------------
  |  |   44|      2|#define MAX_ACCEL_FILES 1000000
  ------------------
  |  Branch (131:6): [True: 0, False: 2]
  ------------------
  132|      0|		zend_accel_error(ACCEL_LOG_WARNING, "opcache.max_accelerated_files is set above the limit (%d).\n", MAX_ACCEL_FILES);
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
              		zend_accel_error(ACCEL_LOG_WARNING, "opcache.max_accelerated_files is set above the limit (%d).\n", MAX_ACCEL_FILES);
  ------------------
  |  |   44|      0|#define MAX_ACCEL_FILES 1000000
  ------------------
  133|      0|		return FAILURE;
  134|      0|	}
  135|      2|	*p = size;
  136|      2|	return SUCCESS;
  137|      2|}
zend_accelerator_module.c:OnUpdateMaxWastedPercentage:
  140|      2|{
  141|      2|	double *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  142|      2|	zend_long percentage = atoi(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  143|       |
  144|      2|	if (percentage <= 0 || percentage > 50) {
  ------------------
  |  Branch (144:6): [True: 0, False: 2]
  |  Branch (144:25): [True: 0, False: 2]
  ------------------
  145|      0|		zend_accel_error(ACCEL_LOG_WARNING, "opcache.max_wasted_percentage must be set between 1 and 50.\n");
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  146|      0|		return FAILURE;
  147|      0|	}
  148|      2|	*p = (double)percentage / 100.0;
  149|      2|	return SUCCESS;
  150|      2|}
zend_accelerator_module.c:OnUpdateFileCache:
  186|      2|{
  187|      2|	if (new_value) {
  ------------------
  |  Branch (187:6): [True: 0, False: 2]
  ------------------
  188|      0|		if (!ZSTR_LEN(new_value)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (188:7): [True: 0, False: 0]
  ------------------
  189|       |			new_value = NULL;
  190|      0|		}
  191|      0|	}
  192|      2|	OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  193|      2|	return SUCCESS;
  194|      2|}
zend_accelerator_module.c:OnUpdateJit:
  198|      2|{
  199|      2|	if (zend_jit_config(new_value, stage) == SUCCESS) {
  ------------------
  |  Branch (199:6): [True: 2, False: 0]
  ------------------
  200|      2|		return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  201|      2|	}
  202|      0|	return FAILURE;
  203|      2|}
zend_accelerator_module.c:OnUpdateJitDebug:
  206|      2|{
  207|      2|	zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  208|      2|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  209|       |
  210|      2|	if (zend_jit_debug_config(*p, val, stage) == SUCCESS) {
  ------------------
  |  Branch (210:6): [True: 2, False: 0]
  ------------------
  211|      2|		*p = val;
  212|      2|		return SUCCESS;
  213|      2|	}
  214|      0|	return FAILURE;
  215|      2|}
zend_accelerator_module.c:OnUpdateCounter:
  218|     12|{
  219|     12|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  220|     12|	if (val >= 0 && val < 256) {
  ------------------
  |  Branch (220:6): [True: 12, False: 0]
  |  Branch (220:18): [True: 12, False: 0]
  ------------------
  221|     12|		zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     12|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     12|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  222|     12|		*p = val;
  223|     12|		return SUCCESS;
  224|     12|	}
  225|      0|	zend_error(E_WARNING, "Invalid \"%s\" setting; using default value instead. Should be between 0 and 255", ZSTR_VAL(entry->name));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Invalid \"%s\" setting; using default value instead. Should be between 0 and 255", ZSTR_VAL(entry->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  226|      0|	return FAILURE;
  227|     12|}
zend_accelerator_module.c:OnUpdateUnrollL:
  256|      2|{
  257|      2|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  258|      2|	if (val > 0 && val < ZEND_JIT_TRACE_MAX_LOOPS_UNROLL) {
  ------------------
  |  |   94|      2|#define ZEND_JIT_TRACE_MAX_LOOPS_UNROLL    10 /* max number of unrolled loops */
  ------------------
  |  Branch (258:6): [True: 2, False: 0]
  |  Branch (258:17): [True: 2, False: 0]
  ------------------
  259|      2|		zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  260|      2|		*p = val;
  261|      2|		return SUCCESS;
  262|      2|	}
  263|      0|	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 1 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 1 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  264|      0|		ZEND_JIT_TRACE_MAX_LOOPS_UNROLL);
  ------------------
  |  |   94|      0|#define ZEND_JIT_TRACE_MAX_LOOPS_UNROLL    10 /* max number of unrolled loops */
  ------------------
  265|      0|	return FAILURE;
  266|      2|}
zend_accelerator_module.c:OnUpdateUnrollC:
  230|      2|{
  231|      2|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  232|      2|	if (val > 0 && val < ZEND_JIT_TRACE_MAX_CALL_DEPTH) {
  ------------------
  |  |   92|      2|#define ZEND_JIT_TRACE_MAX_CALL_DEPTH      10 /* max depth of inlined calls */
  ------------------
  |  Branch (232:6): [True: 2, False: 0]
  |  Branch (232:17): [True: 2, False: 0]
  ------------------
  233|      2|		zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  234|      2|		*p = val;
  235|      2|		return SUCCESS;
  236|      2|	}
  237|      0|	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 1 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 1 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  238|      0|		ZEND_JIT_TRACE_MAX_CALL_DEPTH);
  ------------------
  |  |   92|      0|#define ZEND_JIT_TRACE_MAX_CALL_DEPTH      10 /* max depth of inlined calls */
  ------------------
  239|      0|	return FAILURE;
  240|      2|}
zend_accelerator_module.c:OnUpdateUnrollR:
  243|      2|{
  244|      2|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  245|      2|	if (val >= 0 && val < ZEND_JIT_TRACE_MAX_RET_DEPTH) {
  ------------------
  |  |   93|      2|#define ZEND_JIT_TRACE_MAX_RET_DEPTH        4 /* max depth of inlined returns */
  ------------------
  |  Branch (245:6): [True: 2, False: 0]
  |  Branch (245:18): [True: 2, False: 0]
  ------------------
  246|      2|		zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  247|      2|		*p = val;
  248|      2|		return SUCCESS;
  249|      2|	}
  250|      0|	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 0 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 0 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  251|      0|		ZEND_JIT_TRACE_MAX_RET_DEPTH);
  ------------------
  |  |   93|      0|#define ZEND_JIT_TRACE_MAX_RET_DEPTH        4 /* max depth of inlined returns */
  ------------------
  252|      0|	return FAILURE;
  253|      2|}
zend_accelerator_module.c:OnUpdateMaxTraceLength:
  269|      2|{
  270|      2|	zend_long val = zend_ini_parse_quantity_warn(new_value, entry->name);
  271|      2|	if (val > 3 && val <= ZEND_JIT_TRACE_MAX_LENGTH) {
  ------------------
  |  |   88|      2|#define ZEND_JIT_TRACE_MAX_LENGTH        1024 /* max length of single trace */
  ------------------
  |  Branch (271:6): [True: 2, False: 0]
  |  Branch (271:17): [True: 2, False: 0]
  ------------------
  272|      2|		zend_long *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  273|      2|		*p = val;
  274|      2|		return SUCCESS;
  275|      2|	}
  276|      0|	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 4 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              	zend_error(E_WARNING, "Invalid \"%s\" setting. Should be between 4 and %d", ZSTR_VAL(entry->name),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  277|      0|		ZEND_JIT_TRACE_MAX_LENGTH);
  ------------------
  |  |   88|      0|#define ZEND_JIT_TRACE_MAX_LENGTH        1024 /* max length of single trace */
  ------------------
  278|      0|	return FAILURE;
  279|      2|}
zend_accelerator_module.c:zm_startup_zend_accelerator:
  445|      2|{
  446|      2|	start_accel_extension();
  447|       |
  448|      2|	return SUCCESS;
  449|      2|}

create_persistent_script:
   34|      1|{
   35|      1|	zend_persistent_script *persistent_script = (zend_persistent_script *) emalloc(sizeof(zend_persistent_script));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|      1|	memset(persistent_script, 0, sizeof(zend_persistent_script));
   37|       |
   38|      1|	zend_hash_init(&persistent_script->script.function_table, 0, NULL, ZEND_FUNCTION_DTOR, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   39|       |	/* class_table is usually destroyed by free_persistent_script() that
   40|       |	 * overrides destructor. ZEND_CLASS_DTOR may be used by standard
   41|       |	 * PHP compiler
   42|       |	 */
   43|      1|	zend_hash_init(&persistent_script->script.class_table, 0, NULL, ZEND_CLASS_DTOR, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   44|       |
   45|      1|	return persistent_script;
   46|      1|}
zend_accel_move_user_functions:
   72|      1|{
   73|      1|	Bucket *p, *end;
   74|      1|	HashTable *dst;
   75|      1|	zend_string *filename;
   76|      1|	dtor_func_t orig_dtor;
   77|      1|	zend_function *function;
   78|       |
   79|      1|	if (!count) {
  ------------------
  |  Branch (79:6): [True: 1, False: 0]
  ------------------
   80|      1|		return;
   81|      1|	}
   82|       |
   83|      0|	dst = &script->function_table;
   84|      0|	filename = script->main_op_array.filename;
   85|      0|	orig_dtor = src->pDestructor;
   86|      0|	src->pDestructor = NULL;
   87|      0|	zend_hash_extend(dst, count, 0);
   88|      0|	end = src->arData + src->nNumUsed;
   89|      0|	p = end - count;
   90|      0|	for (; p != end; p++) {
  ------------------
  |  Branch (90:9): [True: 0, False: 0]
  ------------------
   91|      0|		if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   92|      0|		function = Z_PTR(p->val);
  ------------------
  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
   93|      0|		if (EXPECTED(function->type == ZEND_USER_FUNCTION)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   94|      0|		 && EXPECTED(function->op_array.filename == filename)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   95|      0|			_zend_hash_append_ptr(dst, p->key, function);
   96|      0|			zend_hash_del_bucket(src, p);
   97|      0|		}
   98|      0|	}
   99|      0|	src->pDestructor = orig_dtor;
  100|      0|}
zend_accel_move_user_classes:
  103|      1|{
  104|      1|	Bucket *p, *end;
  105|      1|	HashTable *dst;
  106|      1|	const zend_string *filename;
  107|      1|	dtor_func_t orig_dtor;
  108|      1|	zend_class_entry *ce;
  109|       |
  110|      1|	if (!count) {
  ------------------
  |  Branch (110:6): [True: 1, False: 0]
  ------------------
  111|      1|		return;
  112|      1|	}
  113|       |
  114|      0|	dst = &script->class_table;
  115|      0|	filename = script->main_op_array.filename;
  116|      0|	orig_dtor = src->pDestructor;
  117|      0|	src->pDestructor = NULL;
  118|      0|	zend_hash_extend(dst, count, 0);
  119|      0|	end = src->arData + src->nNumUsed;
  120|      0|	p = end - count;
  121|      0|	for (; p != end; p++) {
  ------------------
  |  Branch (121:9): [True: 0, False: 0]
  ------------------
  122|      0|		if (UNEXPECTED(Z_TYPE(p->val) == IS_UNDEF)) continue;
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  123|      0|		ce = Z_PTR(p->val);
  ------------------
  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  124|      0|		if (EXPECTED(ce->type == ZEND_USER_CLASS)
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  125|      0|		 && EXPECTED(ce->info.user.filename == filename)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  126|      0|			_zend_hash_append_ptr(dst, p->key, ce);
  127|      0|			zend_hash_del_bucket(src, p);
  128|      0|		}
  129|      0|	}
  130|      0|	src->pDestructor = orig_dtor;
  131|      0|}
zend_accel_build_delayed_early_binding_list:
  247|      1|{
  248|      1|	const zend_op_array *op_array = &persistent_script->script.main_op_array;
  249|      1|	if (!(op_array->fn_flags & ZEND_ACC_EARLY_BINDING)) {
  ------------------
  |  |  365|      1|#define ZEND_ACC_EARLY_BINDING           (1 << 16) /*     |  X  |     |     */
  ------------------
  |  Branch (249:6): [True: 1, False: 0]
  ------------------
  250|      1|		return;
  251|      1|	}
  252|       |
  253|      0|	const zend_op *end = op_array->opcodes + op_array->last;
  254|      0|	for (const zend_op *opline = op_array->opcodes; opline < end; opline++) {
  ------------------
  |  Branch (254:50): [True: 0, False: 0]
  ------------------
  255|      0|		if (opline->opcode == ZEND_DECLARE_CLASS_DELAYED) {
  ------------------
  |  |  267|      0|#define ZEND_DECLARE_CLASS_DELAYED          145
  ------------------
  |  Branch (255:7): [True: 0, False: 0]
  ------------------
  256|      0|			persistent_script->num_early_bindings++;
  257|      0|		}
  258|      0|	}
  259|       |
  260|      0|	zend_early_binding *early_binding = persistent_script->early_bindings =
  261|      0|		emalloc(sizeof(zend_early_binding) * persistent_script->num_early_bindings);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  262|       |
  263|      0|	for (zend_op *opline = op_array->opcodes; opline < end; opline++) {
  ------------------
  |  Branch (263:44): [True: 0, False: 0]
  ------------------
  264|      0|		if (opline->opcode == ZEND_DECLARE_CLASS_DELAYED) {
  ------------------
  |  |  267|      0|#define ZEND_DECLARE_CLASS_DELAYED          145
  ------------------
  |  Branch (264:7): [True: 0, False: 0]
  ------------------
  265|      0|			const zval *lcname = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  266|      0|			early_binding->lcname = zend_string_copy(Z_STR_P(lcname));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  267|      0|			early_binding->rtd_key = zend_string_copy(Z_STR_P(lcname + 1));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  268|      0|			early_binding->lc_parent_name =
  269|      0|				zend_string_copy(Z_STR_P(RT_CONSTANT(opline, opline->op2)));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  270|      0|			early_binding->cache_slot = (uint32_t) -1;
  271|      0|			early_binding++;
  272|      0|		}
  273|      0|	}
  274|      0|}
zend_accel_finalize_delayed_early_binding_list:
  277|      1|{
  278|      1|	if (!persistent_script->num_early_bindings) {
  ------------------
  |  Branch (278:6): [True: 1, False: 0]
  ------------------
  279|      1|		return;
  280|      1|	}
  281|       |
  282|      0|	zend_early_binding *early_binding = persistent_script->early_bindings;
  283|      0|	const zend_early_binding *early_binding_end = early_binding + persistent_script->num_early_bindings;
  284|      0|	const zend_op_array *op_array = &persistent_script->script.main_op_array;
  285|      0|	const zend_op *opline_end = op_array->opcodes + op_array->last;
  286|      0|	for (zend_op *opline = op_array->opcodes; opline < opline_end; opline++) {
  ------------------
  |  Branch (286:44): [True: 0, False: 0]
  ------------------
  287|      0|		if (opline->opcode == ZEND_DECLARE_CLASS_DELAYED) {
  ------------------
  |  |  267|      0|#define ZEND_DECLARE_CLASS_DELAYED          145
  ------------------
  |  Branch (287:7): [True: 0, False: 0]
  ------------------
  288|      0|			const zend_string *rtd_key = Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  289|       |			/* Skip early_binding entries that don't match, maybe their DECLARE_CLASS_DELAYED
  290|       |			 * was optimized away. */
  291|      0|			while (!zend_string_equals(early_binding->rtd_key, rtd_key)) {
  ------------------
  |  Branch (291:11): [True: 0, False: 0]
  ------------------
  292|      0|				early_binding++;
  293|      0|				if (early_binding >= early_binding_end) {
  ------------------
  |  Branch (293:9): [True: 0, False: 0]
  ------------------
  294|      0|					return;
  295|      0|				}
  296|      0|			}
  297|       |
  298|      0|			early_binding->cache_slot = opline->extended_value;
  299|      0|			early_binding++;
  300|      0|			if (early_binding >= early_binding_end) {
  ------------------
  |  Branch (300:8): [True: 0, False: 0]
  ------------------
  301|      0|				return;
  302|      0|			}
  303|      0|		}
  304|      0|	}
  305|      0|}
zend_accel_load_script:
  366|  26.5k|{
  367|  26.5k|	zend_op_array *op_array;
  368|       |
  369|  26.5k|	op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
  ------------------
  |  |  150|  26.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  26.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  26.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  26.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  26.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|  26.5k|	*op_array = persistent_script->script.main_op_array;
  371|       |
  372|  26.5k|	if (EXPECTED(from_shared_memory)) {
  ------------------
  |  |  456|  26.5k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 26.5k, False: 0]
  |  |  ------------------
  ------------------
  373|  26.5k|		if (ZCSG(map_ptr_last) > CG(map_ptr_last)) {
  ------------------
  |  |  299|  26.5k|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              		if (ZCSG(map_ptr_last) > CG(map_ptr_last)) {
  ------------------
  |  |   35|  26.5k|# define CG(v) (compiler_globals.v)
  ------------------
  |  Branch (373:7): [True: 0, False: 26.5k]
  ------------------
  374|      0|			zend_map_ptr_extend(ZCSG(map_ptr_last));
  ------------------
  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
  375|      0|		}
  376|       |
  377|       |		/* Register __COMPILER_HALT_OFFSET__ constant */
  378|  26.5k|		if (persistent_script->compiler_halt_offset != 0 &&
  ------------------
  |  Branch (378:7): [True: 0, False: 26.5k]
  ------------------
  379|      0|		    persistent_script->script.filename) {
  ------------------
  |  Branch (379:7): [True: 0, False: 0]
  ------------------
  380|      0|			zend_string *name;
  381|      0|			static const char haltoff[] = "__COMPILER_HALT_OFFSET__";
  382|       |
  383|      0|			name = zend_mangle_property_name(haltoff, sizeof(haltoff) - 1, ZSTR_VAL(persistent_script->script.filename), ZSTR_LEN(persistent_script->script.filename), 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			name = zend_mangle_property_name(haltoff, sizeof(haltoff) - 1, ZSTR_VAL(persistent_script->script.filename), ZSTR_LEN(persistent_script->script.filename), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  384|      0|			if (!zend_hash_exists(EG(zend_constants), name)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (384:8): [True: 0, False: 0]
  ------------------
  385|      0|				zend_register_long_constant(ZSTR_VAL(name), ZSTR_LEN(name), persistent_script->compiler_halt_offset, 0, 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_register_long_constant(ZSTR_VAL(name), ZSTR_LEN(name), persistent_script->compiler_halt_offset, 0, 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  386|      0|			}
  387|      0|			zend_string_release_ex(name, 0);
  388|      0|		}
  389|  26.5k|	}
  390|       |
  391|  26.5k|	if (zend_hash_num_elements(&persistent_script->script.function_table) > 0) {
  ------------------
  |  Branch (391:6): [True: 0, False: 26.5k]
  ------------------
  392|      0|		if (EXPECTED(!zend_observer_function_declared_observed)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  393|      0|			zend_accel_function_hash_copy(CG(function_table), &persistent_script->script.function_table);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  394|      0|		} else {
  395|      0|			zend_accel_function_hash_copy_notify(CG(function_table), &persistent_script->script.function_table);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  396|      0|		}
  397|      0|	}
  398|       |
  399|  26.5k|	if (zend_hash_num_elements(&persistent_script->script.class_table) > 0) {
  ------------------
  |  Branch (399:6): [True: 0, False: 26.5k]
  ------------------
  400|      0|		if (EXPECTED(!zend_observer_class_linked_observed)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  401|      0|			zend_accel_class_hash_copy(CG(class_table), &persistent_script->script.class_table);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  402|      0|		} else {
  403|      0|			zend_accel_class_hash_copy_notify(CG(class_table), &persistent_script->script.class_table);
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
  404|      0|		}
  405|      0|	}
  406|       |
  407|  26.5k|	if (persistent_script->num_early_bindings) {
  ------------------
  |  Branch (407:6): [True: 0, False: 26.5k]
  ------------------
  408|      0|		zend_accel_do_delayed_early_binding(persistent_script, op_array);
  409|      0|	}
  410|       |
  411|  26.5k|	if (UNEXPECTED(!from_shared_memory)) {
  ------------------
  |  |  457|  26.5k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 26.5k]
  |  |  ------------------
  ------------------
  412|      0|		free_persistent_script(persistent_script, 0); /* free only hashes */
  413|      0|	}
  414|       |
  415|  26.5k|	return op_array;
  416|  26.5k|}

zend_persist_warnings:
 1398|      1|zend_error_info **zend_persist_warnings(uint32_t num_warnings, zend_error_info **warnings) {
 1399|      1|	if (warnings) {
  ------------------
  |  Branch (1399:6): [True: 0, False: 1]
  ------------------
 1400|      0|		warnings = zend_shared_memdup(warnings, num_warnings * sizeof(zend_error_info *));
 1401|      0|		for (uint32_t i = 0; i < num_warnings; i++) {
  ------------------
  |  Branch (1401:24): [True: 0, False: 0]
  ------------------
 1402|      0|			zend_accel_store_string(warnings[i]->filename);
  ------------------
  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |   51|      0|		if (new_str) { \
  |  |  ------------------
  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |   53|      0|			str = new_str; \
  |  |   54|      0|		} else { \
  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  ------------------
  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |   57|      0|			str = new_str; \
  |  |   58|      0|			zend_string_hash_val(str); \
  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  ------------------
  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   43|      0|	} else { \
  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  ------------------
  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   45|      0|	} \
  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |   47|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|		} \
  |  |   61|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1403|       |			zend_accel_store_string(warnings[i]->message);
  ------------------
  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |   51|      0|		if (new_str) { \
  |  |  ------------------
  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |   53|      0|			str = new_str; \
  |  |   54|      0|		} else { \
  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  ------------------
  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |   57|      0|			str = new_str; \
  |  |   58|      0|			zend_string_hash_val(str); \
  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  ------------------
  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   43|      0|	} else { \
  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  ------------------
  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   45|      0|	} \
  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |   47|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|		} \
  |  |   61|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1404|      0|			warnings[i] = zend_shared_memdup(warnings[i], sizeof(zend_error_info));
 1405|      0|		}
 1406|      0|	}
 1407|      1|	return warnings;
 1408|      1|}
zend_accel_script_persist:
 1425|      1|{
 1426|      1|	Bucket *p;
 1427|       |
 1428|      1|	script->mem = ZCG(mem);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1429|       |
 1430|      1|	ZEND_ASSERT(((uintptr_t)ZCG(mem) & 0x7) == 0); /* should be 8 byte aligned */
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1430:2): [True: 0, False: 1]
  |  Branch (1430:2): [True: 1, False: 0]
  ------------------
 1431|       |
 1432|      1|	script = zend_shared_memdup_free(script, sizeof(zend_persistent_script));
 1433|      1|	script->corrupted = false;
 1434|      1|	ZCG(current_persistent_script) = script;
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1435|       |
 1436|      1|	if (!for_shm) {
  ------------------
  |  Branch (1436:6): [True: 0, False: 1]
  ------------------
 1437|       |		/* script is not going to be saved in SHM */
 1438|      0|		script->corrupted = true;
 1439|      0|	}
 1440|       |
 1441|      1|	zend_accel_store_interned_string(script->script.filename);
  ------------------
  |  |   73|      1|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      1|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      1|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 1, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1442|       |
 1443|      1|#if defined(__AVX__) || defined(__SSE2__)
 1444|       |	/* Align to 64-byte boundary */
 1445|      1|	ZCG(mem) = (void*)(((uintptr_t)ZCG(mem) + 63L) & ~63L);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              	ZCG(mem) = (void*)(((uintptr_t)ZCG(mem) + 63L) & ~63L);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1446|       |#else
 1447|       |	ZEND_ASSERT(((uintptr_t)ZCG(mem) & 0x7) == 0); /* should be 8 byte aligned */
 1448|       |#endif
 1449|       |
 1450|      1|#ifdef HAVE_JIT
 1451|      1|	if (JIT_G(on) && for_shm) {
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1451:19): [True: 0, False: 0]
  ------------------
 1452|      0|		zend_jit_unprotect();
 1453|      0|	}
 1454|      1|#endif
 1455|       |
 1456|      1|	zend_map_ptr_extend(ZCSG(map_ptr_last));
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 1457|       |
 1458|      1|	zend_accel_persist_class_table(&script->script.class_table);
 1459|      1|	zend_hash_persist(&script->script.function_table);
 1460|      2|	ZEND_HASH_MAP_FOREACH_BUCKET(&script->script.function_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (1460:2): [True: 0, False: 1]
  |  Branch (1460:2): [True: 1, False: 0]
  ------------------
 1461|      2|		ZEND_ASSERT(p->key != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1461:3): [True: 0, False: 0]
  |  Branch (1461:3): [True: 0, False: 0]
  ------------------
 1462|      2|		zend_accel_store_interned_string(p->key);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1463|      0|		zend_persist_op_array(&p->val);
 1464|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1465|      1|	zend_persist_op_array_ex(&script->script.main_op_array, script);
 1466|      1|	if (!script->corrupted) {
  ------------------
  |  Branch (1466:6): [True: 1, False: 0]
  ------------------
 1467|      1|		ZEND_MAP_PTR_INIT(script->script.main_op_array.run_time_cache, NULL);
  ------------------
  |  |   38|      1|#define ZEND_MAP_PTR_INIT(ptr, val) do { \
  |  |   39|      1|		ZEND_MAP_PTR(ptr) = (val); \
  |  |  ------------------
  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  ------------------
  |  |   40|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (40:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1468|      1|		if (script->script.main_op_array.static_variables) {
  ------------------
  |  Branch (1468:7): [True: 0, False: 1]
  ------------------
 1469|      0|			ZEND_MAP_PTR_NEW(script->script.main_op_array.static_variables_ptr);
  ------------------
  |  |   41|      0|#define ZEND_MAP_PTR_NEW(ptr) do { \
  |  |   42|      0|		ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  |  |   43|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1470|      0|		}
 1471|      1|#ifdef HAVE_JIT
 1472|      1|		if (JIT_G(on) && JIT_G(opt_level) <= ZEND_JIT_LEVEL_OPT_FUNCS) {
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              		if (JIT_G(on) && JIT_G(opt_level) <= ZEND_JIT_LEVEL_OPT_FUNCS) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		if (JIT_G(on) && JIT_G(opt_level) <= ZEND_JIT_LEVEL_OPT_FUNCS) {
  ------------------
  |  |   34|      0|#define ZEND_JIT_LEVEL_OPT_FUNCS   4     /* optimized JIT based on Type-Inference and call-tree */
  ------------------
  |  Branch (1472:20): [True: 0, False: 0]
  ------------------
 1473|      0|			zend_jit_op_array(&script->script.main_op_array, &script->script);
 1474|      0|		}
 1475|      1|#endif
 1476|      1|	}
 1477|      1|	script->warnings = zend_persist_warnings(script->num_warnings, script->warnings);
 1478|      1|	script->early_bindings = zend_persist_early_bindings(
 1479|      1|		script->num_early_bindings, script->early_bindings);
 1480|       |
 1481|      1|	if (for_shm) {
  ------------------
  |  Branch (1481:6): [True: 1, False: 0]
  ------------------
 1482|      1|		ZCSG(map_ptr_last) = CG(map_ptr_last);
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
              		ZCSG(map_ptr_last) = CG(map_ptr_last);
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  ------------------
 1483|      1|		ZCSG(map_ptr_static_last) = zend_map_ptr_static_last;
  ------------------
  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  ------------------
 1484|      1|	}
 1485|       |
 1486|      1|#ifdef HAVE_JIT
 1487|      1|	if (JIT_G(on) && for_shm) {
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1487:19): [True: 0, False: 0]
  ------------------
 1488|      0|		if (JIT_G(opt_level) >= ZEND_JIT_LEVEL_OPT_SCRIPT) {
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              		if (JIT_G(opt_level) >= ZEND_JIT_LEVEL_OPT_SCRIPT) {
  ------------------
  |  |   35|      0|#define ZEND_JIT_LEVEL_OPT_SCRIPT  5     /* optimized JIT based on Type-Inference and inner-procedure analysis */
  ------------------
  |  Branch (1488:7): [True: 0, False: 0]
  ------------------
 1489|      0|			zend_jit_script(&script->script);
 1490|      0|		}
 1491|      0|		zend_jit_protect();
 1492|      0|	}
 1493|      1|#endif
 1494|       |
 1495|      1|	script->corrupted = false;
 1496|      1|	ZCG(current_persistent_script) = NULL;
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
 1497|       |
 1498|      1|	return script;
 1499|      1|}
zend_persist.c:zend_hash_persist:
   93|      2|{
   94|      2|	uint32_t idx, nIndex;
   95|      2|	Bucket *p;
   96|       |
   97|      2|	HT_FLAGS(ht) |= HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(ht) |= HASH_FLAG_STATIC_KEYS;
  ------------------
  |  |   45|      2|#define HASH_FLAG_STATIC_KEYS      (1<<4) /* long and interned strings */
  ------------------
   98|      2|	ht->pDestructor = NULL;
   99|      2|	ht->nInternalPointer = 0;
  100|       |
  101|      2|	if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) {
  ------------------
  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) {
  ------------------
  |  |   44|      2|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  |  Branch (101:6): [True: 2, False: 0]
  ------------------
  102|      2|		if (EXPECTED(!ZCG(current_persistent_script)->corrupted)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  103|      2|			HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket));
  ------------------
  |  |  548|      2|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      2|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      2|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  104|      2|		} else {
  105|      0|			HT_SET_DATA_ADDR(ht, &uninitialized_bucket);
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  106|      0|		}
  107|      2|		return;
  108|      2|	}
  109|      0|	if (ht->nNumUsed == 0) {
  ------------------
  |  Branch (109:6): [True: 0, False: 0]
  ------------------
  110|      0|		efree(HT_GET_DATA_ADDR(ht));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|      0|		ht->nTableMask = HT_MIN_MASK;
  ------------------
  |  |  437|      0|#define HT_MIN_MASK ((uint32_t) -2)
  ------------------
  112|      0|		if (EXPECTED(!ZCG(current_persistent_script)->corrupted)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  113|      0|			HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket));
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  114|      0|		} else {
  115|      0|			HT_SET_DATA_ADDR(ht, &uninitialized_bucket);
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  116|      0|		}
  117|      0|		HT_FLAGS(ht) |= HASH_FLAG_UNINITIALIZED;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              		HT_FLAGS(ht) |= HASH_FLAG_UNINITIALIZED;
  ------------------
  |  |   44|      0|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  118|      0|		return;
  119|      0|	}
  120|      0|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  121|      0|		void *data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  122|      0|		if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (122:7): [True: 0, False: 0]
  ------------------
  123|      0|			data = zend_shared_memdup(data, HT_PACKED_USED_SIZE(ht));
  ------------------
  |  |  491|      0|	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  124|      0|		} else {
  125|      0|			data = zend_shared_memdup_free(data, HT_PACKED_USED_SIZE(ht));
  ------------------
  |  |  491|      0|	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(zval)))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  126|      0|		}
  127|      0|		HT_SET_DATA_ADDR(ht, data);
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  128|      0|	} else if (ht->nNumUsed > HT_MIN_SIZE && ht->nNumUsed < (uint32_t)(-(int32_t)ht->nTableMask) / 4) {
  ------------------
  |  |  438|      0|#define HT_MIN_SIZE 8
  ------------------
  |  Branch (128:13): [True: 0, False: 0]
  |  Branch (128:43): [True: 0, False: 0]
  ------------------
  129|       |		/* compact table */
  130|      0|		void *old_data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  131|      0|		Bucket *old_buckets = ht->arData;
  132|      0|		uint32_t hash_size;
  133|       |
  134|      0|		hash_size = (uint32_t)(-(int32_t)ht->nTableMask);
  135|      0|		while (hash_size >> 2 > ht->nNumUsed) {
  ------------------
  |  Branch (135:10): [True: 0, False: 0]
  ------------------
  136|      0|			hash_size >>= 1;
  137|      0|		}
  138|      0|		ht->nTableMask = (uint32_t)(-(int32_t)hash_size);
  139|      0|		ZEND_ASSERT(((uintptr_t)ZCG(mem) & 0x7) == 0); /* should be 8 byte aligned */
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (139:3): [True: 0, False: 0]
  |  Branch (139:3): [True: 0, False: 0]
  ------------------
  140|      0|		HT_SET_DATA_ADDR(ht, ZCG(mem));
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  141|      0|		ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE((hash_size * sizeof(uint32_t)) + (ht->nNumUsed * sizeof(Bucket))));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE((hash_size * sizeof(uint32_t)) + (ht->nNumUsed * sizeof(Bucket))));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE((hash_size * sizeof(uint32_t)) + (ht->nNumUsed * sizeof(Bucket))));
  ------------------
  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|      0|		HT_HASH_RESET(ht);
  ------------------
  |  |  507|      0|# define HT_HASH_RESET(ht) do { \
  |  |  508|      0|		char *p = (char*)&HT_HASH(ht, (ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  470|      0|	HT_HASH_EX((ht)->arHash, idx)
  |  |  |  |  ------------------
  |  |  |  |  |  |  468|      0|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  509|      0|		size_t size = HT_HASH_SIZE((ht)->nTableMask); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  510|      0|		__m128i xmm0 = _mm_setzero_si128(); \
  |  |  511|      0|		xmm0 = _mm_cmpeq_epi8(xmm0, xmm0); \
  |  |  512|      0|		ZEND_ASSERT(size >= 64 && ((size & 0x3f) == 0)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  513|      0|		do { \
  |  |  514|      0|			_mm_storeu_si128((__m128i*)p, xmm0); \
  |  |  515|      0|			_mm_storeu_si128((__m128i*)(p+16), xmm0); \
  |  |  516|      0|			_mm_storeu_si128((__m128i*)(p+32), xmm0); \
  |  |  517|      0|			_mm_storeu_si128((__m128i*)(p+48), xmm0); \
  |  |  518|      0|			p += 64; \
  |  |  519|      0|			size -= 64; \
  |  |  520|      0|		} while (size != 0); \
  |  |  ------------------
  |  |  |  Branch (520:12): [True: 0, False: 0]
  |  |  ------------------
  |  |  521|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (521:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (142:3): [True: 0, False: 0]
  |  Branch (142:3): [True: 0, False: 0]
  |  Branch (142:3): [True: 0, False: 0]
  |  Branch (142:3): [True: 0, False: 0]
  ------------------
  143|      0|		memcpy(ht->arData, old_buckets, ht->nNumUsed * sizeof(Bucket));
  144|      0|		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (144:7): [True: 0, False: 0]
  ------------------
  145|      0|			efree(old_data);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  146|      0|		}
  147|       |
  148|       |		/* rehash */
  149|      0|		for (idx = 0; idx < ht->nNumUsed; idx++) {
  ------------------
  |  Branch (149:17): [True: 0, False: 0]
  ------------------
  150|      0|			p = ht->arData + idx;
  151|      0|			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (151:8): [True: 0, False: 0]
  ------------------
  152|      0|			nIndex = p->h | ht->nTableMask;
  153|      0|			Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  680|      0|#define Z_NEXT(zval)				(zval).u2.next
  ------------------
              			Z_NEXT(p->val) = HT_HASH(ht, nIndex);
  ------------------
  |  |  470|      0|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      0|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
  154|      0|			HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  470|      0|	HT_HASH_EX((ht)->arHash, idx)
  |  |  ------------------
  |  |  |  |  468|      0|	((uint32_t*)(data))[(int32_t)(idx)]
  |  |  ------------------
  ------------------
              			HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx);
  ------------------
  |  |  460|      0|	(idx)
  ------------------
  155|      0|		}
  156|      0|	} else {
  157|      0|		void *data = ZCG(mem);
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  158|      0|		void *old_data = HT_GET_DATA_ADDR(ht);
  ------------------
  |  |  552|      0|	((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  159|       |
  160|      0|		ZEND_ASSERT(((uintptr_t)ZCG(mem) & 0x7) == 0); /* should be 8 byte aligned */
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (160:3): [True: 0, False: 0]
  |  Branch (160:3): [True: 0, False: 0]
  ------------------
  161|      0|		ZCG(mem) = (void*)((char*)data + ZEND_ALIGNED_SIZE(HT_USED_SIZE(ht)));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              		ZCG(mem) = (void*)((char*)data + ZEND_ALIGNED_SIZE(HT_USED_SIZE(ht)));
  ------------------
  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|      0|		memcpy(data, old_data, HT_USED_SIZE(ht));
  ------------------
  |  |  483|      0|	(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(Bucket)))
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  ------------------
  163|      0|		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
  |  Branch (163:7): [True: 0, False: 0]
  ------------------
  164|      0|			efree(old_data);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  165|      0|		}
  166|      0|		HT_SET_DATA_ADDR(ht, data);
  ------------------
  |  |  548|      0|#define HT_SET_DATA_ADDR(ht, ptr) do { \
  |  |  549|      0|		(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
  |  |  ------------------
  |  |  |  |  475|      0|	(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))
  |  |  ------------------
  |  |  550|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (550:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  167|      0|	}
  168|      0|}
zend_persist.c:zend_persist_zval:
  217|      1|{
  218|      1|	void *new_ptr;
  219|       |
  220|      1|	switch (Z_TYPE_P(z)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  221|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (221:3): [True: 0, False: 1]
  ------------------
  222|      0|			zend_accel_store_interned_string(Z_STR_P(z));
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  223|      0|			Z_TYPE_FLAGS_P(z) = 0;
  ------------------
  |  |  672|      0|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  224|      0|			break;
  225|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (225:3): [True: 0, False: 1]
  ------------------
  226|      0|			new_ptr = zend_shared_alloc_get_xlat_entry(Z_ARR_P(z));
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  227|      0|			if (new_ptr) {
  ------------------
  |  Branch (227:8): [True: 0, False: 0]
  ------------------
  228|      0|				Z_ARR_P(z) = new_ptr;
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  229|      0|				Z_TYPE_FLAGS_P(z) = 0;
  ------------------
  |  |  672|      0|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  230|      0|			} else if (!ZCG(current_persistent_script)->corrupted
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (230:15): [True: 0, False: 0]
  ------------------
  231|      0|			 && zend_accel_in_shm(Z_ARR_P(z))) {
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (231:8): [True: 0, False: 0]
  ------------------
  232|       |				/* pass */
  233|      0|			} else {
  234|      0|				HashTable *ht;
  235|       |
  236|      0|				if (!Z_REFCOUNTED_P(z)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (236:9): [True: 0, False: 0]
  ------------------
  237|      0|					ht = zend_shared_memdup_put(Z_ARR_P(z), sizeof(zend_array));
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  238|      0|				} else {
  239|      0|					GC_REMOVE_FROM_BUFFER(Z_ARR_P(z));
  ------------------
  |  |   76|      0|#define GC_REMOVE_FROM_BUFFER(p) do { \
  |  |   77|      0|		zend_refcounted *_p = (zend_refcounted*)(p); \
  |  |   78|      0|		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		if (GC_TYPE_INFO(_p) & GC_INFO_MASK) { \
  |  |  ------------------
  |  |  |  |  759|      0|#define GC_INFO_MASK				0xfffffc00
  |  |  ------------------
  |  |  |  Branch (78:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   79|      0|			gc_remove_from_buffer(_p); \
  |  |   80|      0|		} \
  |  |   81|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (81:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  240|      0|					ht = zend_shared_memdup_put_free(Z_ARR_P(z), sizeof(zend_array));
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  241|      0|				}
  242|      0|				Z_ARR_P(z) = ht;
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  243|      0|				zend_hash_persist(ht);
  244|      0|				if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  245|      0|					zval *zv;
  246|       |
  247|      0|					ZEND_HASH_PACKED_FOREACH_VAL(ht, zv) {
  ------------------
  |  | 1494|      0|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      0|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      0|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      0|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      0|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      0|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      0|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|      0|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|      0|			(void) _idx; \
  |  |  |  |  |  | 1478|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1495|      0|	_val = _z;
  ------------------
  |  Branch (247:6): [True: 0, False: 0]
  |  Branch (247:6): [True: 0, False: 0]
  ------------------
  248|      0|						zend_persist_zval(zv);
  249|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  250|      0|				} else {
  251|      0|					Bucket *p;
  252|       |
  253|      0|					ZEND_HASH_MAP_FOREACH_BUCKET(ht, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (253:6): [True: 0, False: 0]
  |  Branch (253:6): [True: 0, False: 0]
  ------------------
  254|      0|						if (p->key) {
  ------------------
  |  Branch (254:11): [True: 0, False: 0]
  ------------------
  255|      0|							zend_accel_store_interned_string(p->key);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  256|      0|						}
  257|      0|						zend_persist_zval(&p->val);
  258|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  259|      0|				}
  260|       |				/* make immutable array */
  261|      0|				Z_TYPE_FLAGS_P(z) = 0;
  ------------------
  |  |  672|      0|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  262|      0|				GC_SET_REFCOUNT(Z_COUNTED_P(z), 2);
  ------------------
  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  263|      0|				GC_ADD_FLAGS(Z_COUNTED_P(z), IS_ARRAY_IMMUTABLE);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  264|      0|			}
  265|      0|			break;
  266|      0|		case IS_CONSTANT_AST:
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (266:3): [True: 0, False: 1]
  ------------------
  267|      0|			new_ptr = zend_shared_alloc_get_xlat_entry(Z_AST_P(z));
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  268|      0|			if (new_ptr) {
  ------------------
  |  Branch (268:8): [True: 0, False: 0]
  ------------------
  269|      0|				Z_AST_P(z) = new_ptr;
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  270|      0|				Z_TYPE_FLAGS_P(z) = 0;
  ------------------
  |  |  672|      0|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  271|      0|			} else if (ZCG(current_persistent_script)->corrupted
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (271:15): [True: 0, False: 0]
  ------------------
  272|      0|			 || !zend_accel_in_shm(Z_AST_P(z))) {
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  |  Branch (272:8): [True: 0, False: 0]
  ------------------
  273|      0|				zend_ast_ref *old_ref = Z_AST_P(z);
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  274|      0|				Z_AST_P(z) = zend_shared_memdup_put(Z_AST_P(z), sizeof(zend_ast_ref));
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
              				Z_AST_P(z) = zend_shared_memdup_put(Z_AST_P(z), sizeof(zend_ast_ref));
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  275|      0|				zend_persist_ast(GC_AST(old_ref));
  ------------------
  |  | 1038|      0|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  ------------------
  276|      0|				Z_TYPE_FLAGS_P(z) = 0;
  ------------------
  |  |  672|      0|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  277|      0|				GC_SET_REFCOUNT(Z_COUNTED_P(z), 1);
  ------------------
  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  278|      0|				GC_ADD_FLAGS(Z_COUNTED_P(z), GC_IMMUTABLE);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  279|      0|				efree(old_ref);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|      0|			}
  281|      0|			break;
  282|      0|		case IS_PTR:
  ------------------
  |  |  630|      0|#define IS_PTR						13
  ------------------
  |  Branch (282:3): [True: 0, False: 1]
  ------------------
  283|      0|			break;
  284|      1|		default:
  ------------------
  |  Branch (284:3): [True: 1, False: 0]
  ------------------
  285|      1|			ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (285:4): [True: 0, False: 1]
  |  Branch (285:4): [True: 1, False: 0]
  ------------------
  286|      1|			break;
  287|      1|	}
  288|      1|}
zend_persist.c:zend_accel_persist_class_table:
 1325|      1|{
 1326|      1|	Bucket *p;
 1327|      1|	zend_class_entry *ce;
 1328|      1|#ifdef HAVE_JIT
 1329|      1|	bool orig_jit_on = JIT_G(on);
  ------------------
  |  |  151|      1|# define JIT_G(v) (jit_globals.v)
  ------------------
 1330|       |
 1331|      1|	JIT_G(on) = 0;
  ------------------
  |  |  151|      1|# define JIT_G(v) (jit_globals.v)
  ------------------
 1332|      1|#endif
 1333|      1|	zend_hash_persist(class_table);
 1334|      2|	ZEND_HASH_MAP_FOREACH_BUCKET(class_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (1334:2): [True: 0, False: 1]
  |  Branch (1334:2): [True: 1, False: 0]
  ------------------
 1335|      2|		ZEND_ASSERT(p->key != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1335:3): [True: 0, False: 0]
  |  Branch (1335:3): [True: 0, False: 0]
  ------------------
 1336|      2|		zend_accel_store_interned_string(p->key);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1337|      0|		Z_CE(p->val) = zend_persist_class_entry(Z_CE(p->val));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
              		Z_CE(p->val) = zend_persist_class_entry(Z_CE(p->val));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
 1338|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1339|      2|	ZEND_HASH_MAP_FOREACH_BUCKET(class_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (1339:2): [True: 0, False: 1]
  |  Branch (1339:2): [True: 1, False: 0]
  ------------------
 1340|      2|		if (EXPECTED(Z_TYPE(p->val) != IS_ALIAS_PTR)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1341|      0|			ce = Z_PTR(p->val);
  ------------------
  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
 1342|      0|			zend_update_parent_ce(ce);
 1343|      0|		}
 1344|      2|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1345|      1|#ifdef HAVE_JIT
 1346|      1|	JIT_G(on) = orig_jit_on;
  ------------------
  |  |  151|      1|# define JIT_G(v) (jit_globals.v)
  ------------------
 1347|      1|	if (JIT_G(on) && JIT_G(opt_level) <= ZEND_JIT_LEVEL_OPT_FUNCS &&
  ------------------
  |  |  151|      2|# define JIT_G(v) (jit_globals.v)
  |  |  ------------------
  |  |  |  Branch (151:19): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              	if (JIT_G(on) && JIT_G(opt_level) <= ZEND_JIT_LEVEL_OPT_FUNCS &&
  ------------------
  |  |  151|      0|# define JIT_G(v) (jit_globals.v)
  ------------------
              	if (JIT_G(on) && JIT_G(opt_level) <= ZEND_JIT_LEVEL_OPT_FUNCS &&
  ------------------
  |  |   34|      1|#define ZEND_JIT_LEVEL_OPT_FUNCS   4     /* optimized JIT based on Type-Inference and call-tree */
  ------------------
  |  Branch (1347:19): [True: 0, False: 0]
  ------------------
 1348|      0|	    !ZCG(current_persistent_script)->corrupted) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (1348:6): [True: 0, False: 0]
  ------------------
 1349|      0|	    zend_op_array *op_array;
 1350|      0|		zend_property_info *prop;
 1351|       |
 1352|      0|	    ZEND_HASH_MAP_FOREACH_BUCKET(class_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (1352:6): [True: 0, False: 0]
  |  Branch (1352:6): [True: 0, False: 0]
  ------------------
 1353|      0|			if (EXPECTED(Z_TYPE(p->val) != IS_ALIAS_PTR)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1354|      0|				ce = Z_PTR(p->val);
  ------------------
  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
 1355|      0|				ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, op_array) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1355:5): [True: 0, False: 0]
  |  Branch (1355:5): [True: 0, False: 0]
  ------------------
 1356|      0|					zend_accel_persist_jit_op_array(op_array, ce);
 1357|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1358|       |
 1359|      0|				if (ce->num_hooked_props > 0) {
  ------------------
  |  Branch (1359:9): [True: 0, False: 0]
  ------------------
 1360|      0|					ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1360:6): [True: 0, False: 0]
  |  Branch (1360:6): [True: 0, False: 0]
  ------------------
 1361|      0|						if (prop->hooks) {
  ------------------
  |  Branch (1361:11): [True: 0, False: 0]
  ------------------
 1362|      0|							for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|      0|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (1362:29): [True: 0, False: 0]
  ------------------
 1363|      0|								if (prop->hooks[i]) {
  ------------------
  |  Branch (1363:13): [True: 0, False: 0]
  ------------------
 1364|      0|									op_array = &prop->hooks[i]->op_array;
 1365|      0|									zend_accel_persist_jit_op_array(op_array, ce);
 1366|      0|								}
 1367|      0|							}
 1368|      0|						}
 1369|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1370|      0|				}
 1371|      0|			}
 1372|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1373|      0|	    ZEND_HASH_MAP_FOREACH_BUCKET(class_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (1373:6): [True: 0, False: 0]
  |  Branch (1373:6): [True: 0, False: 0]
  ------------------
 1374|      0|			if (EXPECTED(Z_TYPE(p->val) != IS_ALIAS_PTR)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1375|      0|				ce = Z_PTR(p->val);
  ------------------
  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
 1376|      0|				ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, op_array) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1376:5): [True: 0, False: 0]
  |  Branch (1376:5): [True: 0, False: 0]
  ------------------
 1377|      0|					zend_accel_persist_link_func_info(op_array, ce);
 1378|      0|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1379|       |
 1380|      0|				if (ce->num_hooked_props > 0) {
  ------------------
  |  Branch (1380:9): [True: 0, False: 0]
  ------------------
 1381|      0|					ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1381:6): [True: 0, False: 0]
  |  Branch (1381:6): [True: 0, False: 0]
  ------------------
 1382|      0|						if (prop->hooks) {
  ------------------
  |  Branch (1382:11): [True: 0, False: 0]
  ------------------
 1383|      0|							for (uint32_t i = 0; i < ZEND_PROPERTY_HOOK_COUNT; i++) {
  ------------------
  |  |  458|      0|#define ZEND_PROPERTY_HOOK_COUNT 2
  ------------------
  |  Branch (1383:29): [True: 0, False: 0]
  ------------------
 1384|      0|								if (prop->hooks[i]) {
  ------------------
  |  Branch (1384:13): [True: 0, False: 0]
  ------------------
 1385|      0|									op_array = &prop->hooks[i]->op_array;
 1386|      0|									zend_accel_persist_link_func_info(op_array, ce);
 1387|      0|								}
 1388|      0|							}
 1389|      0|						}
 1390|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1391|      0|				}
 1392|      0|			}
 1393|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1394|      0|	}
 1395|      1|#endif
 1396|      1|}
zend_persist.c:zend_persist_op_array_ex:
  391|      1|{
  392|      1|	zend_op *persist_ptr;
  393|      1|	zval *orig_literals = NULL;
  394|       |
  395|      1|	if (op_array->refcount && --(*op_array->refcount) == 0) {
  ------------------
  |  Branch (395:6): [True: 1, False: 0]
  |  Branch (395:28): [True: 1, False: 0]
  ------------------
  396|      1|		efree(op_array->refcount);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  397|      1|	}
  398|      1|	op_array->refcount = NULL;
  399|       |
  400|      1|	if (main_persistent_script) {
  ------------------
  |  Branch (400:6): [True: 1, False: 0]
  ------------------
  401|      1|		zend_execute_data *orig_execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  402|      1|		zend_execute_data fake_execute_data;
  403|      1|		zval *offset;
  404|       |
  405|      1|		memset(&fake_execute_data, 0, sizeof(fake_execute_data));
  406|      1|		fake_execute_data.func = (zend_function*)op_array;
  407|      1|		EG(current_execute_data) = &fake_execute_data;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  408|      1|		if ((offset = zend_get_constant_str("__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFFSET__") - 1)) != NULL) {
  ------------------
  |  Branch (408:7): [True: 0, False: 1]
  ------------------
  409|      0|			main_persistent_script->compiler_halt_offset = Z_LVAL_P(offset);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  410|      0|		}
  411|      1|		EG(current_execute_data) = orig_execute_data;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  412|      1|	}
  413|       |
  414|      1|	if (op_array->function_name) {
  ------------------
  |  Branch (414:6): [True: 0, False: 1]
  ------------------
  415|      0|		zend_string *old_name = op_array->function_name;
  416|      0|		zend_accel_store_interned_string(op_array->function_name);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  417|       |		/* Remember old function name, so it can be released multiple times if shared. */
  418|      0|		if (op_array->function_name != old_name
  ------------------
  |  Branch (418:7): [True: 0, False: 0]
  ------------------
  419|      0|				&& !zend_shared_alloc_get_xlat_entry(&op_array->function_name)) {
  ------------------
  |  Branch (419:8): [True: 0, False: 0]
  ------------------
  420|      0|			zend_shared_alloc_register_xlat_entry(&op_array->function_name, old_name);
  421|      0|		}
  422|      0|	}
  423|       |
  424|      1|	if (op_array->scope) {
  ------------------
  |  Branch (424:6): [True: 0, False: 1]
  ------------------
  425|      0|		zend_class_entry *scope = zend_shared_alloc_get_xlat_entry(op_array->scope);
  426|       |
  427|      0|		if (scope) {
  ------------------
  |  Branch (427:7): [True: 0, False: 0]
  ------------------
  428|      0|			op_array->scope = scope;
  429|      0|		}
  430|       |
  431|      0|		if (op_array->prototype) {
  ------------------
  |  Branch (431:7): [True: 0, False: 0]
  ------------------
  432|      0|			zend_function *ptr = zend_shared_alloc_get_xlat_entry(op_array->prototype);
  433|       |
  434|      0|			if (ptr) {
  ------------------
  |  Branch (434:8): [True: 0, False: 0]
  ------------------
  435|      0|				op_array->prototype = ptr;
  436|      0|			}
  437|      0|		}
  438|       |
  439|      0|		persist_ptr = zend_shared_alloc_get_xlat_entry(op_array->opcodes);
  440|      0|		if (persist_ptr) {
  ------------------
  |  Branch (440:7): [True: 0, False: 0]
  ------------------
  441|      0|			op_array->opcodes = persist_ptr;
  442|      0|			if (op_array->static_variables) {
  ------------------
  |  Branch (442:8): [True: 0, False: 0]
  ------------------
  443|      0|				op_array->static_variables = zend_shared_alloc_get_xlat_entry(op_array->static_variables);
  444|      0|				ZEND_ASSERT(op_array->static_variables != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (444:5): [True: 0, False: 0]
  |  Branch (444:5): [True: 0, False: 0]
  ------------------
  445|      0|			}
  446|      0|			if (op_array->literals) {
  ------------------
  |  Branch (446:8): [True: 0, False: 0]
  ------------------
  447|      0|				op_array->literals = zend_shared_alloc_get_xlat_entry(op_array->literals);
  448|      0|				ZEND_ASSERT(op_array->literals != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (448:5): [True: 0, False: 0]
  |  Branch (448:5): [True: 0, False: 0]
  ------------------
  449|      0|			}
  450|      0|			if (op_array->filename) {
  ------------------
  |  Branch (450:8): [True: 0, False: 0]
  ------------------
  451|      0|				op_array->filename = zend_shared_alloc_get_xlat_entry(op_array->filename);
  452|      0|				ZEND_ASSERT(op_array->filename != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (452:5): [True: 0, False: 0]
  |  Branch (452:5): [True: 0, False: 0]
  ------------------
  453|      0|			}
  454|      0|			if (op_array->arg_info) {
  ------------------
  |  Branch (454:8): [True: 0, False: 0]
  ------------------
  455|      0|				zend_arg_info *arg_info = op_array->arg_info;
  456|      0|				if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (456:9): [True: 0, False: 0]
  ------------------
  457|      0|					arg_info--;
  458|      0|				}
  459|      0|				arg_info = zend_shared_alloc_get_xlat_entry(arg_info);
  460|      0|				ZEND_ASSERT(arg_info != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (460:5): [True: 0, False: 0]
  |  Branch (460:5): [True: 0, False: 0]
  ------------------
  461|      0|				if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (461:9): [True: 0, False: 0]
  ------------------
  462|      0|					arg_info++;
  463|      0|				}
  464|      0|				op_array->arg_info = arg_info;
  465|      0|			}
  466|      0|			if (op_array->live_range) {
  ------------------
  |  Branch (466:8): [True: 0, False: 0]
  ------------------
  467|      0|				op_array->live_range = zend_shared_alloc_get_xlat_entry(op_array->live_range);
  468|      0|				ZEND_ASSERT(op_array->live_range != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (468:5): [True: 0, False: 0]
  |  Branch (468:5): [True: 0, False: 0]
  ------------------
  469|      0|			}
  470|      0|			if (op_array->doc_comment) {
  ------------------
  |  Branch (470:8): [True: 0, False: 0]
  ------------------
  471|      0|				if (ZCG(accel_directives).save_comments) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (471:9): [True: 0, False: 0]
  ------------------
  472|      0|					op_array->doc_comment = zend_shared_alloc_get_xlat_entry(op_array->doc_comment);
  473|      0|					ZEND_ASSERT(op_array->doc_comment != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (473:6): [True: 0, False: 0]
  |  Branch (473:6): [True: 0, False: 0]
  ------------------
  474|      0|				} else {
  475|      0|					op_array->doc_comment = NULL;
  476|      0|				}
  477|      0|			}
  478|      0|			if (op_array->attributes) {
  ------------------
  |  Branch (478:8): [True: 0, False: 0]
  ------------------
  479|      0|				op_array->attributes = zend_shared_alloc_get_xlat_entry(op_array->attributes);
  480|      0|				ZEND_ASSERT(op_array->attributes != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (480:5): [True: 0, False: 0]
  |  Branch (480:5): [True: 0, False: 0]
  ------------------
  481|      0|			}
  482|       |
  483|      0|			if (op_array->try_catch_array) {
  ------------------
  |  Branch (483:8): [True: 0, False: 0]
  ------------------
  484|      0|				op_array->try_catch_array = zend_shared_alloc_get_xlat_entry(op_array->try_catch_array);
  485|      0|				ZEND_ASSERT(op_array->try_catch_array != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (485:5): [True: 0, False: 0]
  |  Branch (485:5): [True: 0, False: 0]
  ------------------
  486|      0|			}
  487|      0|			if (op_array->vars) {
  ------------------
  |  Branch (487:8): [True: 0, False: 0]
  ------------------
  488|      0|				op_array->vars = zend_shared_alloc_get_xlat_entry(op_array->vars);
  489|      0|				ZEND_ASSERT(op_array->vars != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (489:5): [True: 0, False: 0]
  |  Branch (489:5): [True: 0, False: 0]
  ------------------
  490|      0|			}
  491|      0|			if (op_array->dynamic_func_defs) {
  ------------------
  |  Branch (491:8): [True: 0, False: 0]
  ------------------
  492|      0|				op_array->dynamic_func_defs = zend_shared_alloc_get_xlat_entry(op_array->dynamic_func_defs);
  493|      0|				ZEND_ASSERT(op_array->dynamic_func_defs != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (493:5): [True: 0, False: 0]
  |  Branch (493:5): [True: 0, False: 0]
  ------------------
  494|      0|			}
  495|      0|			ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist(op_array, ZCG(mem))));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              			ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist(op_array, ZCG(mem))));
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
              			ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist(op_array, ZCG(mem))));
  ------------------
  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|      0|			return;
  497|      0|		}
  498|      1|	} else {
  499|       |		/* "prototype" may be undefined if "scope" isn't set */
  500|      1|		op_array->prototype = NULL;
  501|      1|	}
  502|       |
  503|      1|	if (op_array->scope
  ------------------
  |  Branch (503:6): [True: 0, False: 1]
  ------------------
  504|      0|	 && !(op_array->fn_flags & ZEND_ACC_CLOSURE)
  ------------------
  |  |  384|      0|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (504:6): [True: 0, False: 0]
  ------------------
  505|      0|	 && (op_array->scope->ce_flags & ZEND_ACC_CACHED)) {
  ------------------
  |  |  328|      0|#define ZEND_ACC_CACHED                  (1 << 22) /*  X  |     |     |     */
  ------------------
  |  Branch (505:6): [True: 0, False: 0]
  ------------------
  506|      0|		return;
  507|      0|	}
  508|       |
  509|      1|	if (op_array->static_variables && !zend_accel_in_shm(op_array->static_variables)) {
  ------------------
  |  Branch (509:6): [True: 0, False: 1]
  |  Branch (509:36): [True: 0, False: 0]
  ------------------
  510|      0|		Bucket *p;
  511|       |
  512|      0|		zend_hash_persist(op_array->static_variables);
  513|      0|		ZEND_HASH_MAP_FOREACH_BUCKET(op_array->static_variables, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (513:3): [True: 0, False: 0]
  |  Branch (513:3): [True: 0, False: 0]
  ------------------
  514|      0|			ZEND_ASSERT(p->key != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (514:4): [True: 0, False: 0]
  |  Branch (514:4): [True: 0, False: 0]
  ------------------
  515|      0|			zend_accel_store_interned_string(p->key);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  516|      0|			zend_persist_zval(&p->val);
  517|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  518|      0|		op_array->static_variables = zend_shared_memdup_put_free(op_array->static_variables, sizeof(HashTable));
  519|       |		/* make immutable array */
  520|      0|		GC_SET_REFCOUNT(op_array->static_variables, 2);
  ------------------
  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  ------------------
  521|      0|		GC_TYPE_INFO(op_array->static_variables) = GC_ARRAY | ((IS_ARRAY_IMMUTABLE|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT);
  ------------------
  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  ------------------
              		GC_TYPE_INFO(op_array->static_variables) = GC_ARRAY | ((IS_ARRAY_IMMUTABLE|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT);
  ------------------
  |  |  807|      0|#define GC_ARRAY					IS_ARRAY
  |  |  ------------------
  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  ------------------
  ------------------
              		GC_TYPE_INFO(op_array->static_variables) = GC_ARRAY | ((IS_ARRAY_IMMUTABLE|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT);
  ------------------
  |  |  844|      0|#define IS_ARRAY_IMMUTABLE			GC_IMMUTABLE
  |  |  ------------------
  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  ------------------
  ------------------
              		GC_TYPE_INFO(op_array->static_variables) = GC_ARRAY | ((IS_ARRAY_IMMUTABLE|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT);
  ------------------
  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  ------------------
              		GC_TYPE_INFO(op_array->static_variables) = GC_ARRAY | ((IS_ARRAY_IMMUTABLE|GC_NOT_COLLECTABLE) << GC_FLAGS_SHIFT);
  ------------------
  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  ------------------
  522|      0|	}
  523|       |
  524|      1|	if (op_array->literals) {
  ------------------
  |  Branch (524:6): [True: 1, False: 0]
  ------------------
  525|      1|		zval *p, *end;
  526|       |
  527|      1|		orig_literals = op_array->literals;
  528|       |#if ZEND_USE_ABS_CONST_ADDR
  529|       |		p = zend_shared_memdup_put_free(op_array->literals, sizeof(zval) * op_array->last_literal);
  530|       |#else
  531|      1|		p = zend_shared_memdup_put(op_array->literals, sizeof(zval) * op_array->last_literal);
  532|      1|#endif
  533|      1|		end = p + op_array->last_literal;
  534|      1|		op_array->literals = p;
  535|      2|		while (p < end) {
  ------------------
  |  Branch (535:10): [True: 1, False: 1]
  ------------------
  536|      1|			zend_persist_zval(p);
  537|      1|			p++;
  538|      1|		}
  539|      1|	}
  540|       |
  541|      1|	{
  542|      1|		zend_op *new_opcodes = zend_shared_memdup_put(op_array->opcodes, sizeof(zend_op) * op_array->last);
  543|      1|		zend_op *opline = new_opcodes;
  544|      1|		zend_op *end = new_opcodes + op_array->last;
  545|       |
  546|      2|		for (; opline < end ; opline++) {
  ------------------
  |  Branch (546:10): [True: 1, False: 1]
  ------------------
  547|       |#if ZEND_USE_ABS_CONST_ADDR
  548|       |			if (opline->op1_type == IS_CONST) {
  549|       |				opline->op1.zv = (zval*)((char*)opline->op1.zv + ((char*)op_array->literals - (char*)orig_literals));
  550|       |				if (opline->opcode == ZEND_SEND_VAL
  551|       |				 || opline->opcode == ZEND_SEND_VAL_EX
  552|       |				 || opline->opcode == ZEND_QM_ASSIGN) {
  553|       |					/* Update handlers to eliminate REFCOUNTED check */
  554|       |					zend_vm_set_opcode_handler_ex(opline, 1 << Z_TYPE_P(opline->op1.zv), 0, 0);
  555|       |				}
  556|       |			}
  557|       |			if (opline->op2_type == IS_CONST) {
  558|       |				opline->op2.zv = (zval*)((char*)opline->op2.zv + ((char*)op_array->literals - (char*)orig_literals));
  559|       |			}
  560|       |#else
  561|      1|			if (opline->op1_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (561:8): [True: 1, False: 0]
  ------------------
  562|      1|				opline->op1.constant =
  563|      1|					(char*)(op_array->literals +
  564|      1|						((zval*)((char*)(op_array->opcodes + (opline - new_opcodes)) +
  565|      1|						(int32_t)opline->op1.constant) - orig_literals)) -
  566|      1|					(char*)opline;
  567|      1|				if (opline->opcode == ZEND_SEND_VAL
  ------------------
  |  |  188|      2|#define ZEND_SEND_VAL                        65
  ------------------
  |  Branch (567:9): [True: 0, False: 1]
  ------------------
  568|      1|				 || opline->opcode == ZEND_SEND_VAL_EX
  ------------------
  |  |  238|      2|#define ZEND_SEND_VAL_EX                    116
  ------------------
  |  Branch (568:9): [True: 0, False: 1]
  ------------------
  569|      1|				 || opline->opcode == ZEND_QM_ASSIGN) {
  ------------------
  |  |  155|      1|#define ZEND_QM_ASSIGN                       31
  ------------------
  |  Branch (569:9): [True: 0, False: 1]
  ------------------
  570|      0|					zend_vm_set_opcode_handler_ex(opline, 0, 0, 0);
  571|      0|				}
  572|      1|			}
  573|      1|			if (opline->op2_type == IS_CONST) {
  ------------------
  |  |  864|      1|#define IS_CONST	(1<<0)
  ------------------
  |  Branch (573:8): [True: 0, False: 1]
  ------------------
  574|      0|				opline->op2.constant =
  575|      0|					(char*)(op_array->literals +
  576|      0|						((zval*)((char*)(op_array->opcodes + (opline - new_opcodes)) +
  577|      0|						(int32_t)opline->op2.constant) - orig_literals)) -
  578|      0|					(char*)opline;
  579|      0|			}
  580|      1|#endif
  581|       |#if ZEND_USE_ABS_JMP_ADDR
  582|       |			if (op_array->fn_flags & ZEND_ACC_DONE_PASS_TWO) {
  583|       |				/* fix jumps to point to new array */
  584|       |				switch (opline->opcode) {
  585|       |					case ZEND_JMP:
  586|       |					case ZEND_FAST_CALL:
  587|       |						opline->op1.jmp_addr = &new_opcodes[opline->op1.jmp_addr - op_array->opcodes];
  588|       |						break;
  589|       |					case ZEND_JMPZ:
  590|       |					case ZEND_JMPNZ:
  591|       |					case ZEND_JMPZ_EX:
  592|       |					case ZEND_JMPNZ_EX:
  593|       |					case ZEND_JMP_SET:
  594|       |					case ZEND_COALESCE:
  595|       |					case ZEND_FE_RESET_R:
  596|       |					case ZEND_FE_RESET_RW:
  597|       |					case ZEND_ASSERT_CHECK:
  598|       |					case ZEND_JMP_NULL:
  599|       |					case ZEND_BIND_INIT_STATIC_OR_JMP:
  600|       |					case ZEND_JMP_FRAMELESS:
  601|       |						opline->op2.jmp_addr = &new_opcodes[opline->op2.jmp_addr - op_array->opcodes];
  602|       |						break;
  603|       |					case ZEND_CATCH:
  604|       |						if (!(opline->extended_value & ZEND_LAST_CATCH)) {
  605|       |							opline->op2.jmp_addr = &new_opcodes[opline->op2.jmp_addr - op_array->opcodes];
  606|       |						}
  607|       |						break;
  608|       |					case ZEND_FE_FETCH_R:
  609|       |					case ZEND_FE_FETCH_RW:
  610|       |					case ZEND_SWITCH_LONG:
  611|       |					case ZEND_SWITCH_STRING:
  612|       |					case ZEND_MATCH:
  613|       |						/* relative extended_value don't have to be changed */
  614|       |						break;
  615|       |				}
  616|       |			}
  617|       |#endif
  618|      1|			if (opline->opcode == ZEND_OP_DATA && (opline-1)->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
  ------------------
  |  |  259|      2|#define ZEND_OP_DATA                        137
  ------------------
              			if (opline->opcode == ZEND_OP_DATA && (opline-1)->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
  ------------------
  |  |  332|      0|#define ZEND_DECLARE_ATTRIBUTED_CONST       210
  ------------------
  |  Branch (618:8): [True: 0, False: 1]
  |  Branch (618:42): [True: 0, False: 0]
  ------------------
  619|      0|				zval *literal = RT_CONSTANT(opline, opline->op1);
  ------------------
  |  |  841|      0|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  620|      0|				HashTable *attributes = Z_PTR_P(literal);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  621|      0|				attributes = zend_persist_attributes(attributes);
  622|      0|				ZVAL_PTR(literal, attributes);
  ------------------
  |  | 1251|      0|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      0|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      0|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      0|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  623|      0|			}
  624|      1|		}
  625|       |
  626|      1|		efree(op_array->opcodes);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  627|      1|		op_array->opcodes = new_opcodes;
  628|      1|	}
  629|       |
  630|      1|	if (op_array->filename) {
  ------------------
  |  Branch (630:6): [True: 1, False: 0]
  ------------------
  631|      1|		zend_accel_store_string(op_array->filename);
  ------------------
  |  |   49|      1|#define zend_accel_store_string(str) do { \
  |  |   50|      1|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |   51|      1|		if (new_str) { \
  |  |  ------------------
  |  |  |  Branch (51:7): [True: 0, False: 1]
  |  |  ------------------
  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |   53|      0|			str = new_str; \
  |  |   54|      1|		} else { \
  |  |   55|      1|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  ------------------
  |  |  |  |  120|      1|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|      1|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      1|			zend_string_release_ex(str, 0); \
  |  |   57|      1|			str = new_str; \
  |  |   58|      1|			zend_string_hash_val(str); \
  |  |   59|      1|			zend_set_str_gc_flags(str); \
  |  |  ------------------
  |  |  |  |   36|      1|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |   37|      1|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  |   38|      1|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      1|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   39|      1|	if (file_cache_only \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (39:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   40|      1|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (306:17): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:41): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   43|      1|	} else { \
  |  |  |  |   44|      1|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  838|      1|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  801|      1|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  840|      1|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  ------------------
  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |   45|      1|	} \
  |  |  |  |   46|      1|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |   47|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (47:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      1|		} \
  |  |   61|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (61:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  632|      1|	}
  633|       |
  634|      1|	if (op_array->arg_info) {
  ------------------
  |  Branch (634:6): [True: 0, False: 1]
  ------------------
  635|      0|		zend_arg_info *arg_info = op_array->arg_info;
  636|      0|		uint32_t num_args = op_array->num_args;
  637|      0|		uint32_t i;
  638|       |
  639|      0|		if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (639:7): [True: 0, False: 0]
  ------------------
  640|      0|			arg_info--;
  641|      0|			num_args++;
  642|      0|		}
  643|      0|		if (op_array->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|      0|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (643:7): [True: 0, False: 0]
  ------------------
  644|      0|			num_args++;
  645|      0|		}
  646|      0|		arg_info = zend_shared_memdup_put_free(arg_info, sizeof(zend_arg_info) * num_args);
  647|      0|		for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (647:15): [True: 0, False: 0]
  ------------------
  648|      0|			if (arg_info[i].name) {
  ------------------
  |  Branch (648:8): [True: 0, False: 0]
  ------------------
  649|      0|				zend_accel_store_interned_string(arg_info[i].name);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  650|      0|			}
  651|      0|			zend_persist_type(&arg_info[i].type);
  652|      0|			if (arg_info[i].doc_comment) {
  ------------------
  |  Branch (652:8): [True: 0, False: 0]
  ------------------
  653|      0|				zend_accel_store_interned_string(arg_info[i].doc_comment);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  654|      0|			}
  655|      0|		}
  656|      0|		if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (656:7): [True: 0, False: 0]
  ------------------
  657|      0|			arg_info++;
  658|      0|		}
  659|      0|		op_array->arg_info = arg_info;
  660|      0|	}
  661|       |
  662|      1|	if (op_array->live_range) {
  ------------------
  |  Branch (662:6): [True: 0, False: 1]
  ------------------
  663|      0|		op_array->live_range = zend_shared_memdup_put_free(op_array->live_range, sizeof(zend_live_range) * op_array->last_live_range);
  664|      0|	}
  665|       |
  666|      1|	if (op_array->doc_comment) {
  ------------------
  |  Branch (666:6): [True: 0, False: 1]
  ------------------
  667|      0|		if (ZCG(accel_directives).save_comments) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (667:7): [True: 0, False: 0]
  ------------------
  668|      0|			zend_accel_store_interned_string(op_array->doc_comment);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  669|      0|		} else {
  670|      0|			zend_string_release_ex(op_array->doc_comment, 0);
  671|      0|			op_array->doc_comment = NULL;
  672|      0|		}
  673|      0|	}
  674|       |
  675|      1|	if (op_array->attributes) {
  ------------------
  |  Branch (675:6): [True: 0, False: 1]
  ------------------
  676|      0|		op_array->attributes = zend_persist_attributes(op_array->attributes);
  677|      0|	}
  678|       |
  679|      1|	if (op_array->try_catch_array) {
  ------------------
  |  Branch (679:6): [True: 0, False: 1]
  ------------------
  680|      0|		op_array->try_catch_array = zend_shared_memdup_put_free(op_array->try_catch_array, sizeof(zend_try_catch_element) * op_array->last_try_catch);
  681|      0|	}
  682|       |
  683|      1|	if (op_array->vars) {
  ------------------
  |  Branch (683:6): [True: 0, False: 1]
  ------------------
  684|      0|		int i;
  685|      0|		op_array->vars = zend_shared_memdup_put_free(op_array->vars, sizeof(zend_string*) * op_array->last_var);
  686|      0|		for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (686:15): [True: 0, False: 0]
  ------------------
  687|      0|			zend_accel_store_interned_string(op_array->vars[i]);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  688|      0|		}
  689|      0|	}
  690|       |
  691|      1|	if (op_array->num_dynamic_func_defs) {
  ------------------
  |  Branch (691:6): [True: 0, False: 1]
  ------------------
  692|      0|		op_array->dynamic_func_defs = zend_shared_memdup_put_free(
  693|      0|			op_array->dynamic_func_defs, sizeof(zend_function *) * op_array->num_dynamic_func_defs);
  694|      0|		for (uint32_t i = 0; i < op_array->num_dynamic_func_defs; i++) {
  ------------------
  |  Branch (694:24): [True: 0, False: 0]
  ------------------
  695|      0|			zval tmp;
  696|      0|			ZVAL_PTR(&tmp, op_array->dynamic_func_defs[i]);
  ------------------
  |  | 1251|      0|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      0|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      0|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      0|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  697|      0|			zend_persist_op_array(&tmp);
  698|      0|			op_array->dynamic_func_defs[i] = Z_PTR(tmp);
  ------------------
  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  699|      0|		}
  700|      0|	}
  701|       |
  702|      1|	ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist(op_array, ZCG(mem))));
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              	ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist(op_array, ZCG(mem))));
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
              	ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist(op_array, ZCG(mem))));
  ------------------
  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  703|      1|}
zend_persist.c:zend_persist_early_bindings:
 1411|      1|		uint32_t num_early_bindings, zend_early_binding *early_bindings) {
 1412|      1|	if (early_bindings) {
  ------------------
  |  Branch (1412:6): [True: 0, False: 1]
  ------------------
 1413|      0|		early_bindings = zend_shared_memdup_free(
 1414|      0|			early_bindings, num_early_bindings * sizeof(zend_early_binding));
 1415|      0|		for (uint32_t i = 0; i < num_early_bindings; i++) {
  ------------------
  |  Branch (1415:24): [True: 0, False: 0]
  ------------------
 1416|      0|			zend_accel_store_interned_string(early_bindings[i].lcname);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1417|      0|			zend_accel_store_interned_string(early_bindings[i].rtd_key);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1418|       |			zend_accel_store_interned_string(early_bindings[i].lc_parent_name);
  ------------------
  |  |   73|      0|#define zend_accel_store_interned_string(str) do { \
  |  |   74|      0|		if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|			zend_accel_store_string(str); \
  |  |  ------------------
  |  |  |  |   49|      0|#define zend_accel_store_string(str) do { \
  |  |  |  |   50|      0|		zend_string *new_str = zend_shared_alloc_get_xlat_entry(str); \
  |  |  |  |   51|      0|		if (new_str) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   52|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   53|      0|			str = new_str; \
  |  |  |  |   54|      0|		} else { \
  |  |  |  |   55|      0|			new_str = zend_shared_memdup_put((void*)str, _ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  120|      0|#define _ZSTR_STRUCT_SIZE(len) (_ZSTR_HEADER_SIZE + len + 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  118|      0|#define _ZSTR_HEADER_SIZE offsetof(zend_string, val)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|			zend_string_release_ex(str, 0); \
  |  |  |  |   57|      0|			str = new_str; \
  |  |  |  |   58|      0|			zend_string_hash_val(str); \
  |  |  |  |   59|      0|			zend_set_str_gc_flags(str); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|      0|#define zend_set_str_gc_flags(str) do { \
  |  |  |  |  |  |   37|      0|	GC_SET_REFCOUNT(str, 2); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	uint32_t flags = GC_STRING | (ZSTR_IS_VALID_UTF8(str) ? IS_STR_VALID_UTF8 : 0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  841|      0|#define IS_STR_VALID_UTF8           (1<<9)        /* valid UTF-8 according to PCRE */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (38:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|	if (file_cache_only \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (39:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (306:17): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	 || (ZCG(current_persistent_script) && ZCG(current_persistent_script)->corrupted)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  806|      0|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(str) = GC_STRING | (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= (IS_STR_INTERNED << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|	} else { \
  |  |  |  |  |  |   44|      0|		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  838|      0|#define IS_STR_INTERNED				GC_IMMUTABLE  /* interned string */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  840|      0|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		flags |= ((IS_STR_INTERNED | IS_STR_PERMANENT) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|	} \
  |  |  |  |  |  |   46|      0|	GC_TYPE_INFO(str) = flags; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (47:10): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   60|      0|		} \
  |  |  |  |   61|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (61:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|		} \
  |  |   77|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (77:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1419|      0|		}
 1420|      0|	}
 1421|      1|	return early_bindings;
 1422|      1|}

zend_persist_warnings_calc:
  612|      1|void zend_persist_warnings_calc(uint32_t num_warnings, zend_error_info **warnings) {
  613|      1|	ADD_SIZE(num_warnings * sizeof(zend_error_info *));
  ------------------
  |  |   30|      1|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  614|      1|	for (uint32_t i = 0; i < num_warnings; i++) {
  ------------------
  |  Branch (614:23): [True: 0, False: 1]
  ------------------
  615|      0|		ADD_SIZE(sizeof(zend_error_info));
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|      0|		ADD_STRING(warnings[i]->filename);
  ------------------
  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  ------------------
  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|      0|		ADD_STRING(warnings[i]->message);
  ------------------
  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  ------------------
  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|      0|	}
  619|      1|}
zend_accel_script_persist_calc:
  634|      1|{
  635|      1|	Bucket *p;
  636|       |
  637|      1|	new_persistent_script->mem = NULL;
  638|      1|	new_persistent_script->size = 0;
  639|      1|	new_persistent_script->corrupted = false;
  640|      1|	ZCG(current_persistent_script) = new_persistent_script;
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  641|       |
  642|      1|	if (!for_shm) {
  ------------------
  |  Branch (642:6): [True: 0, False: 1]
  ------------------
  643|       |		/* script is not going to be saved in SHM */
  644|      0|		new_persistent_script->corrupted = true;
  645|      0|	}
  646|       |
  647|      1|	ADD_SIZE(sizeof(zend_persistent_script));
  ------------------
  |  |   30|      1|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  648|      1|	ADD_INTERNED_STRING(new_persistent_script->script.filename);
  ------------------
  |  |   34|      1|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      1|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 1]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      1|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      1|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      1|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 1, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      1|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      1|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 1, False: 0]
  |  |  ------------------
  |  |   40|      1|				(str) = tmp; \
  |  |   41|      1|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      1|		} \
  |  |   45|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  649|       |
  650|      1|#if defined(__AVX__) || defined(__SSE2__)
  651|       |	/* Align size to 64-byte boundary */
  652|      1|	new_persistent_script->size = (new_persistent_script->size + 63) & ~63;
  653|      1|#endif
  654|       |
  655|      1|	if (new_persistent_script->script.class_table.nNumUsed != new_persistent_script->script.class_table.nNumOfElements) {
  ------------------
  |  Branch (655:6): [True: 0, False: 1]
  ------------------
  656|      0|		zend_hash_rehash(&new_persistent_script->script.class_table);
  657|      0|	}
  658|      1|	zend_accel_persist_class_table_calc(&new_persistent_script->script.class_table);
  659|      1|	if (new_persistent_script->script.function_table.nNumUsed != new_persistent_script->script.function_table.nNumOfElements) {
  ------------------
  |  Branch (659:6): [True: 0, False: 1]
  ------------------
  660|      0|		zend_hash_rehash(&new_persistent_script->script.function_table);
  661|      0|	}
  662|      1|	zend_hash_persist_calc(&new_persistent_script->script.function_table);
  663|      2|	ZEND_HASH_MAP_FOREACH_BUCKET(&new_persistent_script->script.function_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (663:2): [True: 0, False: 1]
  |  Branch (663:2): [True: 1, False: 0]
  ------------------
  664|      2|		ZEND_ASSERT(p->key != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (664:3): [True: 0, False: 0]
  |  Branch (664:3): [True: 0, False: 0]
  ------------------
  665|      2|		ADD_INTERNED_STRING(p->key);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  666|      0|		zend_persist_op_array_calc(&p->val);
  667|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  668|      1|	zend_persist_op_array_calc_ex(&new_persistent_script->script.main_op_array);
  669|      1|	zend_persist_warnings_calc(
  670|      1|		new_persistent_script->num_warnings, new_persistent_script->warnings);
  671|      1|	zend_persist_early_bindings_calc(
  672|      1|		new_persistent_script->num_early_bindings, new_persistent_script->early_bindings);
  673|       |
  674|      1|	new_persistent_script->corrupted = false;
  675|       |
  676|      1|	ZCG(current_persistent_script) = NULL;
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  677|       |
  678|      1|	return new_persistent_script->size;
  679|      1|}
zend_persist_calc.c:zend_hash_persist_calc:
   51|      2|{
   52|      2|	if ((HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) || ht->nNumUsed == 0) {
  ------------------
  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	if ((HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) || ht->nNumUsed == 0) {
  ------------------
  |  |   44|      2|#define HASH_FLAG_UNINITIALIZED    (1<<3)
  ------------------
  |  Branch (52:6): [True: 2, False: 0]
  |  Branch (52:50): [True: 0, False: 0]
  ------------------
   53|      2|		return;
   54|      2|	}
   55|       |
   56|      0|	if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   57|      0|		ADD_SIZE(HT_PACKED_USED_SIZE(ht));
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|      0|	} else if (ht->nNumUsed > HT_MIN_SIZE && ht->nNumUsed < (uint32_t)(-(int32_t)ht->nTableMask) / 4) {
  ------------------
  |  |  438|      0|#define HT_MIN_SIZE 8
  ------------------
  |  Branch (58:13): [True: 0, False: 0]
  |  Branch (58:43): [True: 0, False: 0]
  ------------------
   59|       |		/* compact table */
   60|      0|		uint32_t hash_size;
   61|       |
   62|      0|		hash_size = (uint32_t)(-(int32_t)ht->nTableMask);
   63|      0|		while (hash_size >> 2 > ht->nNumUsed) {
  ------------------
  |  Branch (63:10): [True: 0, False: 0]
  ------------------
   64|      0|			hash_size >>= 1;
   65|      0|		}
   66|      0|		ADD_SIZE(hash_size * sizeof(uint32_t) + ht->nNumUsed * sizeof(Bucket));
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|      0|	} else {
   68|      0|		ADD_SIZE(HT_USED_SIZE(ht));
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|	}
   70|      0|}
zend_persist_calc.c:zend_persist_zval_calc:
  111|      1|{
  112|      1|	uint32_t size;
  113|       |
  114|      1|	switch (Z_TYPE_P(z)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  115|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (115:3): [True: 0, False: 1]
  ------------------
  116|      0|			ADD_INTERNED_STRING(Z_STR_P(z));
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  117|      0|			if (ZSTR_IS_INTERNED(Z_STR_P(z))) {
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (117:8): [True: 0, False: 0]
  ------------------
  118|      0|				Z_TYPE_FLAGS_P(z) = 0;
  ------------------
  |  |  672|      0|#define Z_TYPE_FLAGS_P(zval_p)		Z_TYPE_FLAGS(*(zval_p))
  |  |  ------------------
  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  ------------------
  ------------------
  119|      0|			}
  120|      0|			break;
  121|      0|		case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (121:3): [True: 0, False: 1]
  ------------------
  122|      0|			if (!ZCG(current_persistent_script)->corrupted
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (122:8): [True: 0, False: 0]
  ------------------
  123|      0|			 && zend_accel_in_shm(Z_ARR_P(z))) {
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (123:8): [True: 0, False: 0]
  ------------------
  124|      0|				return;
  125|      0|			}
  126|      0|			size = zend_shared_memdup_size(Z_ARR_P(z), sizeof(zend_array));
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  127|      0|			if (size) {
  ------------------
  |  Branch (127:8): [True: 0, False: 0]
  ------------------
  128|      0|				const HashTable *ht = Z_ARRVAL_P(z);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|       |
  130|      0|				ADD_SIZE(size);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  131|      0|				zend_hash_persist_calc(ht);
  132|      0|				if (HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  133|      0|					zval *zv;
  134|       |
  135|      0|					ZEND_HASH_PACKED_FOREACH_VAL(Z_ARRVAL_P(z), zv) {
  ------------------
  |  | 1494|      0|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      0|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      0|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      0|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      0|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      0|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      0|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|      0|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|      0|			(void) _idx; \
  |  |  |  |  |  | 1478|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1495|      0|	_val = _z;
  ------------------
  |  Branch (135:6): [True: 0, False: 0]
  |  Branch (135:6): [True: 0, False: 0]
  ------------------
  136|      0|						zend_persist_zval_calc(zv);
  137|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  138|      0|				} else {
  139|      0|					Bucket *p;
  140|       |
  141|      0|					ZEND_HASH_MAP_FOREACH_BUCKET(Z_ARRVAL_P(z), p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (141:6): [True: 0, False: 0]
  |  Branch (141:6): [True: 0, False: 0]
  ------------------
  142|      0|						if (p->key) {
  ------------------
  |  Branch (142:11): [True: 0, False: 0]
  ------------------
  143|      0|							ADD_INTERNED_STRING(p->key);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  144|      0|						}
  145|      0|						zend_persist_zval_calc(&p->val);
  146|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  147|      0|				}
  148|      0|			}
  149|      0|			break;
  150|      0|		case IS_CONSTANT_AST:
  ------------------
  |  |  617|      0|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (150:3): [True: 0, False: 1]
  ------------------
  151|      0|			if (ZCG(current_persistent_script)->corrupted
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (151:8): [True: 0, False: 0]
  ------------------
  152|      0|			 || !zend_accel_in_shm(Z_AST_P(z))) {
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  |  Branch (152:8): [True: 0, False: 0]
  ------------------
  153|      0|				size = zend_shared_memdup_size(Z_AST_P(z), sizeof(zend_ast_ref));
  ------------------
  |  | 1036|      0|#define Z_AST_P(zval_p)				Z_AST(*(zval_p))
  |  |  ------------------
  |  |  |  | 1035|      0|#define Z_AST(zval)					(zval).value.ast
  |  |  ------------------
  ------------------
  154|      0|				if (size) {
  ------------------
  |  Branch (154:9): [True: 0, False: 0]
  ------------------
  155|      0|					ADD_SIZE(size);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|      0|					zend_persist_ast_calc(Z_ASTVAL_P(z));
  ------------------
  |  | 1041|      0|#define Z_ASTVAL_P(zval_p)			Z_ASTVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1040|      0|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1038|      0|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|      0|				}
  158|      0|			}
  159|      0|			break;
  160|      0|		case IS_PTR:
  ------------------
  |  |  630|      0|#define IS_PTR						13
  ------------------
  |  Branch (160:3): [True: 0, False: 1]
  ------------------
  161|      0|			break;
  162|      1|		default:
  ------------------
  |  Branch (162:3): [True: 1, False: 0]
  ------------------
  163|      1|			ZEND_ASSERT(Z_TYPE_P(z) < IS_STRING);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (163:4): [True: 0, False: 1]
  |  Branch (163:4): [True: 1, False: 0]
  ------------------
  164|      1|			break;
  165|      1|	}
  166|      1|}
zend_persist_calc.c:zend_accel_persist_class_table_calc:
  601|      1|{
  602|      1|	Bucket *p;
  603|       |
  604|      1|	zend_hash_persist_calc(class_table);
  605|      2|	ZEND_HASH_MAP_FOREACH_BUCKET(class_table, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (605:2): [True: 0, False: 1]
  |  Branch (605:2): [True: 1, False: 0]
  ------------------
  606|      2|		ZEND_ASSERT(p->key != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (606:3): [True: 0, False: 0]
  |  Branch (606:3): [True: 0, False: 0]
  ------------------
  607|      2|		ADD_INTERNED_STRING(p->key);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  608|      0|		zend_persist_class_entry_calc(Z_CE(p->val));
  ------------------
  |  | 1046|      0|#define Z_CE(zval)					(zval).value.ce
  ------------------
  609|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  610|      1|}
zend_persist_calc.c:zend_persist_op_array_calc_ex:
  219|      1|{
  220|      1|	if (op_array->function_name) {
  ------------------
  |  Branch (220:6): [True: 0, False: 1]
  ------------------
  221|      0|		const zend_string *old_name = op_array->function_name;
  222|      0|		ADD_INTERNED_STRING(op_array->function_name);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  223|       |		/* Remember old function name, so it can be released multiple times if shared. */
  224|      0|		if (op_array->function_name != old_name
  ------------------
  |  Branch (224:7): [True: 0, False: 0]
  ------------------
  225|      0|				&& !zend_shared_alloc_get_xlat_entry(&op_array->function_name)) {
  ------------------
  |  Branch (225:8): [True: 0, False: 0]
  ------------------
  226|      0|			zend_shared_alloc_register_xlat_entry(&op_array->function_name, old_name);
  227|      0|		}
  228|      0|	}
  229|       |
  230|      1|	if (op_array->scope) {
  ------------------
  |  Branch (230:6): [True: 0, False: 1]
  ------------------
  231|      0|		if (zend_shared_alloc_get_xlat_entry(op_array->opcodes)) {
  ------------------
  |  Branch (231:7): [True: 0, False: 0]
  ------------------
  232|       |			/* already stored */
  233|      0|			ADD_SIZE(ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist_calc(op_array)));
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:5): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:5): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|      0|			return;
  235|      0|		}
  236|      0|	}
  237|       |
  238|      1|	if (op_array->scope
  ------------------
  |  Branch (238:6): [True: 0, False: 1]
  ------------------
  239|      0|	 && !(op_array->fn_flags & ZEND_ACC_CLOSURE)
  ------------------
  |  |  384|      0|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (239:6): [True: 0, False: 0]
  ------------------
  240|      0|	 && (op_array->scope->ce_flags & ZEND_ACC_CACHED)) {
  ------------------
  |  |  328|      0|#define ZEND_ACC_CACHED                  (1 << 22) /*  X  |     |     |     */
  ------------------
  |  Branch (240:6): [True: 0, False: 0]
  ------------------
  241|      0|		return;
  242|      0|	}
  243|       |
  244|      1|	if (op_array->static_variables && !zend_accel_in_shm(op_array->static_variables)) {
  ------------------
  |  Branch (244:6): [True: 0, False: 1]
  |  Branch (244:36): [True: 0, False: 0]
  ------------------
  245|      0|		if (!zend_shared_alloc_get_xlat_entry(op_array->static_variables)) {
  ------------------
  |  Branch (245:7): [True: 0, False: 0]
  ------------------
  246|      0|			Bucket *p;
  247|       |
  248|      0|			zend_shared_alloc_register_xlat_entry(op_array->static_variables, op_array->static_variables);
  249|      0|			ADD_SIZE(sizeof(HashTable));
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      0|			zend_hash_persist_calc(op_array->static_variables);
  251|      0|			ZEND_HASH_MAP_FOREACH_BUCKET(op_array->static_variables, p) {
  ------------------
  |  | 1313|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1314|      0|	_bucket = _p;
  ------------------
  |  Branch (251:4): [True: 0, False: 0]
  |  Branch (251:4): [True: 0, False: 0]
  ------------------
  252|      0|				ZEND_ASSERT(p->key != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (252:5): [True: 0, False: 0]
  |  Branch (252:5): [True: 0, False: 0]
  ------------------
  253|      0|				ADD_INTERNED_STRING(p->key);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|      0|				zend_persist_zval_calc(&p->val);
  255|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  256|      0|		}
  257|      0|	}
  258|       |
  259|      1|	if (op_array->literals) {
  ------------------
  |  Branch (259:6): [True: 1, False: 0]
  ------------------
  260|      1|		zval *p = op_array->literals;
  261|      1|		const zval *end = p + op_array->last_literal;
  262|      1|		ADD_SIZE(sizeof(zval) * op_array->last_literal);
  ------------------
  |  |   30|      1|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|      2|		while (p < end) {
  ------------------
  |  Branch (263:10): [True: 1, False: 1]
  ------------------
  264|      1|			zend_persist_zval_calc(p);
  265|      1|			p++;
  266|      1|		}
  267|      1|	}
  268|       |
  269|      1|	zend_shared_alloc_register_xlat_entry(op_array->opcodes, op_array->opcodes);
  270|      1|	ADD_SIZE(sizeof(zend_op) * op_array->last);
  ------------------
  |  |   30|      1|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  271|       |
  272|       |	/* ZEND_ACC_PTR_OPS and ZEND_ACC_OVERRIDE use the same value */
  273|      1|	if ((op_array->fn_flags & ZEND_ACC_PTR_OPS) && !op_array->function_name) {
  ------------------
  |  |  407|      1|#define ZEND_ACC_PTR_OPS                 (1 << 28) /*     |  X  |     |     */
  ------------------
  |  Branch (273:6): [True: 0, False: 1]
  |  Branch (273:49): [True: 0, False: 0]
  ------------------
  274|      0|		zend_op *op = op_array->opcodes;
  275|      0|		const zend_op *end = op + op_array->last;
  276|      0|		while (op < end) {
  ------------------
  |  Branch (276:10): [True: 0, False: 0]
  ------------------
  277|      0|			if (op->opcode == ZEND_DECLARE_ATTRIBUTED_CONST) {
  ------------------
  |  |  332|      0|#define ZEND_DECLARE_ATTRIBUTED_CONST       210
  ------------------
  |  Branch (277:8): [True: 0, False: 0]
  ------------------
  278|      0|				HashTable *attributes = Z_PTR_P(RT_CONSTANT(op+1, (op+1)->op1));
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  279|      0|				zend_persist_attributes_calc(attributes);
  280|      0|			}
  281|      0|			op++;
  282|      0|		}
  283|      0|	}
  284|       |
  285|      1|	if (op_array->filename) {
  ------------------
  |  Branch (285:6): [True: 1, False: 0]
  ------------------
  286|      1|		ADD_STRING(op_array->filename);
  ------------------
  |  |   32|      1|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  ------------------
  |  |  |  |   29|      1|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  287|      1|	}
  288|       |
  289|      1|	if (op_array->arg_info) {
  ------------------
  |  Branch (289:6): [True: 0, False: 1]
  ------------------
  290|      0|		zend_arg_info *arg_info = op_array->arg_info;
  291|      0|		uint32_t num_args = op_array->num_args;
  292|      0|		uint32_t i;
  293|       |
  294|      0|		if (op_array->fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|      0|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (294:7): [True: 0, False: 0]
  ------------------
  295|      0|			num_args++;
  296|      0|		}
  297|      0|		if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
  ------------------
  |  |  355|      0|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (297:7): [True: 0, False: 0]
  ------------------
  298|      0|			arg_info--;
  299|      0|			num_args++;
  300|      0|		}
  301|      0|		ADD_SIZE(sizeof(zend_arg_info) * num_args);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|      0|		for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (302:15): [True: 0, False: 0]
  ------------------
  303|      0|			if (arg_info[i].name) {
  ------------------
  |  Branch (303:8): [True: 0, False: 0]
  ------------------
  304|      0|				ADD_INTERNED_STRING(arg_info[i].name);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  305|      0|			}
  306|      0|			zend_persist_type_calc(&arg_info[i].type);
  307|      0|			if (arg_info[i].doc_comment) {
  ------------------
  |  Branch (307:8): [True: 0, False: 0]
  ------------------
  308|      0|				ADD_INTERNED_STRING(arg_info[i].doc_comment);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  309|      0|			}
  310|      0|		}
  311|      0|	}
  312|       |
  313|      1|	if (op_array->live_range) {
  ------------------
  |  Branch (313:6): [True: 0, False: 1]
  ------------------
  314|      0|		ADD_SIZE(sizeof(zend_live_range) * op_array->last_live_range);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|      0|	}
  316|       |
  317|      1|	if (ZCG(accel_directives).save_comments && op_array->doc_comment) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (317:6): [True: 1, False: 0]
  |  Branch (317:45): [True: 0, False: 1]
  ------------------
  318|      0|		ADD_STRING(op_array->doc_comment);
  ------------------
  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  ------------------
  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|      0|	}
  320|       |
  321|      1|	if (op_array->attributes) {
  ------------------
  |  Branch (321:6): [True: 0, False: 1]
  ------------------
  322|      0|		zend_persist_attributes_calc(op_array->attributes);
  323|      0|	}
  324|       |
  325|      1|	if (op_array->try_catch_array) {
  ------------------
  |  Branch (325:6): [True: 0, False: 1]
  ------------------
  326|      0|		ADD_SIZE(sizeof(zend_try_catch_element) * op_array->last_try_catch);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|      0|	}
  328|       |
  329|      1|	if (op_array->vars) {
  ------------------
  |  Branch (329:6): [True: 0, False: 1]
  ------------------
  330|      0|		int i;
  331|       |
  332|      0|		ADD_SIZE(sizeof(zend_string*) * op_array->last_var);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  333|      0|		for (i = 0; i < op_array->last_var; i++) {
  ------------------
  |  Branch (333:15): [True: 0, False: 0]
  ------------------
  334|      0|			ADD_INTERNED_STRING(op_array->vars[i]);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  335|      0|		}
  336|      0|	}
  337|       |
  338|      1|	if (op_array->num_dynamic_func_defs) {
  ------------------
  |  Branch (338:6): [True: 0, False: 1]
  ------------------
  339|      0|		ADD_SIZE(sizeof(void *) * op_array->num_dynamic_func_defs);
  ------------------
  |  |   30|      0|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      0|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|      0|		for (uint32_t i = 0; i < op_array->num_dynamic_func_defs; i++) {
  ------------------
  |  Branch (340:24): [True: 0, False: 0]
  ------------------
  341|      0|			zval tmp;
  342|      0|			ZVAL_PTR(&tmp, op_array->dynamic_func_defs[i]);
  ------------------
  |  | 1251|      0|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      0|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      0|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      0|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  343|      0|			zend_persist_op_array_calc(&tmp);
  344|      0|		}
  345|      0|	}
  346|       |
  347|      1|	ADD_SIZE(ZEND_ALIGNED_SIZE(zend_extensions_op_array_persist_calc(op_array)));
  ------------------
  |  |   30|      1|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:5): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:5): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      1|}
zend_persist_calc.c:zend_persist_early_bindings_calc:
  623|      1|{
  624|      1|	ADD_SIZE(sizeof(zend_early_binding) * num_early_bindings);
  ------------------
  |  |   30|      1|#define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |               #define ADD_SIZE(m)        ZCG(current_persistent_script)->size += ZEND_ALIGNED_SIZE(m)
  |  |  ------------------
  |  |  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  625|      1|	for (uint32_t i = 0; i < num_early_bindings; i++) {
  ------------------
  |  Branch (625:23): [True: 0, False: 1]
  ------------------
  626|      0|		zend_early_binding *early_binding = &early_bindings[i];
  627|      0|		ADD_INTERNED_STRING(early_binding->lcname);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  628|      0|		ADD_INTERNED_STRING(early_binding->rtd_key);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  629|      0|		ADD_INTERNED_STRING(early_binding->lc_parent_name);
  ------------------
  |  |   34|      0|# define ADD_INTERNED_STRING(str) do { \
  |  |   35|      0|		if (ZCG(current_persistent_script)->corrupted) { \
  |  |  ------------------
  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|			ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|		} else if (!IS_ACCEL_INTERNED(str)) { \
  |  |  ------------------
  |  |  |  |  331|      0|	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |               	((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
  |  |  |  |  ------------------
  |  |  |  |  |  |  299|      0|#define ZCSG(element)   (accel_shared_globals->element)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (331:3): [True: 0, False: 0]
  |  |  |  |  |  Branch (331:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|			zend_string *tmp = accel_new_interned_string(str); \
  |  |   39|      0|			if (tmp != (str)) { \
  |  |  ------------------
  |  |  |  Branch (39:8): [True: 0, False: 0]
  |  |  ------------------
  |  |   40|      0|				(str) = tmp; \
  |  |   41|      0|			} else { \
  |  |   42|      0|				ADD_STRING(str); \
  |  |  ------------------
  |  |  |  |   32|      0|# define ADD_STRING(str) ADD_DUP_SIZE((str), _ZSTR_STRUCT_SIZE(ZSTR_LEN(str)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define ADD_DUP_SIZE(m,s)  ZCG(current_persistent_script)->size += zend_shared_memdup_size((void*)m, s)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|			} \
  |  |   44|      0|		} \
  |  |   45|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (45:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  630|      0|	}
  631|      1|}

zend_shared_alloc_create_lock:
   82|      2|{
   83|      2|	int val;
   84|       |
   85|       |#ifdef ZTS
   86|       |	zts_lock = tsrm_mutex_alloc();
   87|       |#endif
   88|       |
   89|      2|#if defined(__linux__) && defined(HAVE_MEMFD_CREATE)
   90|       |	/* on Linux, we can use a memfd instead of a "real" file, so
   91|       |	 * we can do this without a writable filesystem and without
   92|       |	 * needing to clean up */
   93|       |	/* note: FreeBSD has memfd_create(), too, but fcntl(F_SETLKW)
   94|       |	 * on it fails with EBADF, therefore we use this only on
   95|       |	 * Linux */
   96|      2|	lock_file = memfd_create("opcache_lock", MFD_CLOEXEC);
   97|      2|	if (lock_file >= 0)
  ------------------
  |  Branch (97:6): [True: 2, False: 0]
  ------------------
   98|      2|		return;
   99|      0|#endif
  100|       |
  101|      0|#ifdef O_TMPFILE
  102|      0|	lock_file = open(lockfile_path, O_RDWR | O_TMPFILE | O_EXCL | O_CLOEXEC, 0666);
  103|       |	/* lack of O_TMPFILE support results in many possible errors
  104|       |	 * use it only when open returns a non-negative integer */
  105|      0|	if (lock_file >= 0) {
  ------------------
  |  Branch (105:6): [True: 0, False: 0]
  ------------------
  106|      0|		return;
  107|      0|	}
  108|      0|#endif
  109|       |
  110|      0|	snprintf(lockfile_name, sizeof(lockfile_name), "%s/%sXXXXXX", lockfile_path, SEM_FILENAME_PREFIX);
  ------------------
  |  |   45|      0|#define SEM_FILENAME_PREFIX ".ZendSem."
  ------------------
  111|      0|	lock_file = mkstemp(lockfile_name);
  112|      0|	if (lock_file == -1) {
  ------------------
  |  Branch (112:6): [True: 0, False: 0]
  ------------------
  113|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Unable to create opcache lock file in %s: %s (%d)", lockfile_path, strerror(errno), errno);
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  114|      0|	}
  115|       |
  116|      0|	if (fchmod(lock_file, 0666) == -1) {
  ------------------
  |  Branch (116:6): [True: 0, False: 0]
  ------------------
  117|      0|		zend_accel_error(ACCEL_LOG_WARNING, "Unable to change opcache lock file permissions in %s: %s (%d)", lockfile_path, strerror(errno), errno);
  ------------------
  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  ------------------
  118|      0|	}
  119|       |
  120|      0|	val = fcntl(lock_file, F_GETFD, 0);
  121|      0|	val |= FD_CLOEXEC;
  122|      0|	fcntl(lock_file, F_SETFD, val);
  123|       |
  124|      0|	unlink(lockfile_name);
  125|      0|}
zend_shared_alloc_startup:
  178|      2|{
  179|      2|	zend_shared_segment **tmp_shared_segments;
  180|      2|	size_t shared_segments_array_size;
  181|      2|	zend_smm_shared_globals tmp_shared_globals, *p_tmp_shared_globals;
  182|      2|	const char *error_in = NULL;
  183|      2|	const zend_shared_memory_handler_entry *he;
  184|      2|	int res = ALLOC_FAILURE;
  ------------------
  |  |   67|      2|#define ALLOC_FAILURE           0
  ------------------
  185|      2|	int i;
  186|       |
  187|       |	/* shared_free must be valid before we call zend_shared_alloc()
  188|       |	 * - make it temporarily point to a local variable
  189|       |	 */
  190|      2|	smm_shared_globals = &tmp_shared_globals;
  191|      2|	ZSMMG(shared_free) = requested_size - reserved_size; /* goes to tmp_shared_globals.shared_free */
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  192|       |
  193|      2|#ifndef ZEND_WIN32
  194|      2|	zend_shared_alloc_create_lock(ZCG(accel_directives).lockfile_path);
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  195|       |#else
  196|       |	zend_shared_alloc_create_lock();
  197|       |#endif
  198|       |
  199|      2|	if (ZCG(accel_directives).memory_model && ZCG(accel_directives).memory_model[0]) {
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
              	if (ZCG(accel_directives).memory_model && ZCG(accel_directives).memory_model[0]) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (199:6): [True: 0, False: 2]
  |  Branch (199:44): [True: 0, False: 0]
  ------------------
  200|      0|		const char *model = ZCG(accel_directives).memory_model;
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  201|       |		/* "cgi" is really "shm"... */
  202|      0|		if (strncmp(ZCG(accel_directives).memory_model, "cgi", sizeof("cgi")) == 0) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (202:7): [True: 0, False: 0]
  ------------------
  203|      0|			model = "shm";
  204|      0|		}
  205|       |
  206|      0|		for (he = handler_table; he->name; he++) {
  ------------------
  |  Branch (206:28): [True: 0, False: 0]
  ------------------
  207|      0|			if (strcmp(model, he->name) == 0) {
  ------------------
  |  Branch (207:8): [True: 0, False: 0]
  ------------------
  208|      0|				res = zend_shared_alloc_try(he, requested_size, &ZSMMG(shared_segments), &ZSMMG(shared_segments_count), &error_in);
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              				res = zend_shared_alloc_try(he, requested_size, &ZSMMG(shared_segments), &ZSMMG(shared_segments_count), &error_in);
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  209|      0|				if (res) {
  ------------------
  |  Branch (209:9): [True: 0, False: 0]
  ------------------
  210|       |					/* this model works! */
  211|      0|					break;
  212|      0|				}
  213|      0|			}
  214|      0|		}
  215|      0|	}
  216|       |
  217|      2|	if (res == FAILED_REATTACHED) {
  ------------------
  |  |   69|      2|#define FAILED_REATTACHED       2
  ------------------
  |  Branch (217:6): [True: 0, False: 2]
  ------------------
  218|      0|		smm_shared_globals = NULL;
  219|      0|		return res;
  220|      0|	}
  221|       |#if ENABLE_FILE_CACHE_FALLBACK
  222|       |	if (ALLOC_FALLBACK == res) {
  223|       |		smm_shared_globals = NULL;
  224|       |		return ALLOC_FALLBACK;
  225|       |	}
  226|       |#endif
  227|       |
  228|      2|	if (!g_shared_alloc_handler) {
  ------------------
  |  Branch (228:6): [True: 2, False: 0]
  ------------------
  229|       |		/* try memory handlers in order */
  230|      2|		if (handler_table->name == NULL) {
  ------------------
  |  Branch (230:7): [Folded, False: 2]
  ------------------
  231|      0|			return NO_SHM_BACKEND;
  ------------------
  |  |   73|      0|#define NO_SHM_BACKEND          10
  ------------------
  232|      0|		}
  233|      2|		for (he = handler_table; he->name; he++) {
  ------------------
  |  Branch (233:28): [True: 2, False: 0]
  ------------------
  234|      2|			res = zend_shared_alloc_try(he, requested_size, &ZSMMG(shared_segments), &ZSMMG(shared_segments_count), &error_in);
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              			res = zend_shared_alloc_try(he, requested_size, &ZSMMG(shared_segments), &ZSMMG(shared_segments_count), &error_in);
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  235|      2|			if (res) {
  ------------------
  |  Branch (235:8): [True: 2, False: 0]
  ------------------
  236|       |				/* this model works! */
  237|      2|				break;
  238|      2|			}
  239|      2|		}
  240|      2|	}
  241|       |
  242|      2|	if (!g_shared_alloc_handler) {
  ------------------
  |  Branch (242:6): [True: 0, False: 2]
  ------------------
  243|      0|		no_memory_bailout(requested_size, error_in);
  244|      0|		return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  245|      0|	}
  246|       |
  247|      2|	if (res == SUCCESSFULLY_REATTACHED) {
  ------------------
  |  |   70|      2|#define SUCCESSFULLY_REATTACHED 4
  ------------------
  |  Branch (247:6): [True: 0, False: 2]
  ------------------
  248|      0|		return res;
  249|      0|	}
  250|       |#if ENABLE_FILE_CACHE_FALLBACK
  251|       |	if (ALLOC_FALLBACK == res) {
  252|       |		smm_shared_globals = NULL;
  253|       |		return ALLOC_FALLBACK;
  254|       |	}
  255|       |#endif
  256|       |
  257|      4|	for (i = 0; i < ZSMMG(shared_segments_count); i++) {
  ------------------
  |  |  123|      4|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (257:14): [True: 2, False: 2]
  ------------------
  258|      2|		ZSMMG(shared_segments)[i]->end = ZSMMG(shared_segments)[i]->size;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              		ZSMMG(shared_segments)[i]->end = ZSMMG(shared_segments)[i]->size;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  259|      2|	}
  260|       |
  261|      2|	shared_segments_array_size = ZSMMG(shared_segments_count) * S_H(segment_type_size)();
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              	shared_segments_array_size = ZSMMG(shared_segments_count) * S_H(segment_type_size)();
  ------------------
  |  |   46|      2|#define S_H(s) g_shared_alloc_handler->s
  ------------------
  262|       |
  263|       |	/* move shared_segments and shared_free to shared memory */
  264|      2|	ZCG(locked) = 1; /* no need to perform a real lock at this point */
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  265|       |
  266|      2|	p_tmp_shared_globals = (zend_smm_shared_globals *) zend_shared_alloc(sizeof(zend_smm_shared_globals));
  267|      2|	if (!p_tmp_shared_globals) {
  ------------------
  |  Branch (267:6): [True: 0, False: 2]
  ------------------
  268|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  269|      0|		return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  270|      0|	}
  271|      2|	memset(p_tmp_shared_globals, 0, sizeof(zend_smm_shared_globals));
  272|       |
  273|      2|	tmp_shared_segments = zend_shared_alloc(shared_segments_array_size + ZSMMG(shared_segments_count) * sizeof(void *));
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  274|      2|	if (!tmp_shared_segments) {
  ------------------
  |  Branch (274:6): [True: 0, False: 2]
  ------------------
  275|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  276|      0|		return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  277|      0|	}
  278|       |
  279|      2|	copy_shared_segments(tmp_shared_segments, ZSMMG(shared_segments)[0], ZSMMG(shared_segments_count), S_H(segment_type_size)());
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              	copy_shared_segments(tmp_shared_segments, ZSMMG(shared_segments)[0], ZSMMG(shared_segments_count), S_H(segment_type_size)());
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              	copy_shared_segments(tmp_shared_segments, ZSMMG(shared_segments)[0], ZSMMG(shared_segments_count), S_H(segment_type_size)());
  ------------------
  |  |   46|      2|#define S_H(s) g_shared_alloc_handler->s
  ------------------
  280|       |
  281|      2|	*p_tmp_shared_globals = tmp_shared_globals;
  282|      2|	smm_shared_globals = p_tmp_shared_globals;
  283|       |
  284|      2|	free(ZSMMG(shared_segments));
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  285|      2|	ZSMMG(shared_segments) = tmp_shared_segments;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  286|       |
  287|      2|	ZSMMG(shared_memory_state).positions = (size_t *)zend_shared_alloc(sizeof(size_t) * ZSMMG(shared_segments_count));
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              	ZSMMG(shared_memory_state).positions = (size_t *)zend_shared_alloc(sizeof(size_t) * ZSMMG(shared_segments_count));
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  288|      2|	if (!ZSMMG(shared_memory_state).positions) {
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (288:6): [True: 0, False: 2]
  ------------------
  289|      0|		zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  290|      0|		return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  291|      0|	}
  292|       |
  293|      2|	if (reserved_size) {
  ------------------
  |  Branch (293:6): [True: 0, False: 2]
  ------------------
  294|      0|		i = ZSMMG(shared_segments_count) - 1;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  295|      0|		if (ZSMMG(shared_segments)[i]->size - ZSMMG(shared_segments)[i]->pos >= reserved_size) {
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              		if (ZSMMG(shared_segments)[i]->size - ZSMMG(shared_segments)[i]->pos >= reserved_size) {
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (295:7): [True: 0, False: 0]
  ------------------
  296|      0|			ZSMMG(shared_segments)[i]->end = ZSMMG(shared_segments)[i]->size - reserved_size;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              			ZSMMG(shared_segments)[i]->end = ZSMMG(shared_segments)[i]->size - reserved_size;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  297|      0|			ZSMMG(reserved) = (char*)ZSMMG(shared_segments)[i]->p + ZSMMG(shared_segments)[i]->end;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              			ZSMMG(reserved) = (char*)ZSMMG(shared_segments)[i]->p + ZSMMG(shared_segments)[i]->end;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              			ZSMMG(reserved) = (char*)ZSMMG(shared_segments)[i]->p + ZSMMG(shared_segments)[i]->end;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  298|      0|			ZSMMG(reserved_size) = reserved_size;
  ------------------
  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  299|      0|		} else {
  300|      0|			zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!");
  ------------------
  |  |   23|      0|#define ACCEL_LOG_FATAL					0
  ------------------
  301|      0|			return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  302|      0|		}
  303|      0|	}
  304|       |
  305|      2|	ZCG(locked) = 0;
  ------------------
  |  |  306|      2|# define ZCG(v) (accel_globals.v)
  ------------------
  306|       |
  307|      2|	return res;
  308|      2|}
zend_shared_alloc:
  371|     13|{
  372|     13|	int i;
  373|     13|	size_t block_size = ZEND_ALIGNED_SIZE(size);
  ------------------
  |  |  178|     13|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|     26|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 13]
  |  |  |  |  |  Branch (37:37): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  374|       |
  375|     13|#if 1
  376|     13|	if (!ZCG(locked)) {
  ------------------
  |  |  306|     13|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (376:6): [True: 0, False: 13]
  ------------------
  377|      0|		ZEND_ASSERT(0 && "Shared memory lock not obtained");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (377:3): [Folded, False: 0]
  |  Branch (377:3): [True: 0, False: 0]
  |  Branch (377:3): [Folded, False: 0]
  |  Branch (377:3): [True: 0, False: 0]
  ------------------
  378|      0|		zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Shared memory lock not obtained");
  ------------------
  |  |   24|      0|#define ACCEL_LOG_ERROR					1
  ------------------
  379|      0|	}
  380|     13|#endif
  381|     13|	if (block_size > ZSMMG(shared_free)) { /* No hope to find a big-enough block */
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (381:6): [True: 0, False: 13]
  ------------------
  382|      0|		SHARED_ALLOC_FAILED();
  ------------------
  |  |  363|      0|#define SHARED_ALLOC_FAILED() do {		\
  |  |  364|      0|		zend_accel_error(ACCEL_LOG_WARNING, "Not enough free shared space to allocate %zu bytes (%zu bytes free)", size, ZSMMG(shared_free)); \
  |  |  ------------------
  |  |  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  |  |  ------------------
  |  |               		zend_accel_error(ACCEL_LOG_WARNING, "Not enough free shared space to allocate %zu bytes (%zu bytes free)", size, ZSMMG(shared_free)); \
  |  |  ------------------
  |  |  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  |  |  ------------------
  |  |  365|      0|		if (zend_shared_alloc_get_largest_free_block() < MIN_FREE_MEMORY) { \
  |  |  ------------------
  |  |  |  |  361|      0|#define MIN_FREE_MEMORY 64*1024
  |  |  ------------------
  |  |  |  Branch (365:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  366|      0|			ZSMMG(memory_exhausted) = 1; \
  |  |  ------------------
  |  |  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  |  |  ------------------
  |  |  367|      0|		} \
  |  |  368|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (368:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  383|      0|		return NULL;
  384|      0|	}
  385|     13|	for (i = 0; i < ZSMMG(shared_segments_count); i++) {
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (385:14): [True: 13, False: 0]
  ------------------
  386|     13|		if (ZSMMG(shared_segments)[i]->end - ZSMMG(shared_segments)[i]->pos >= block_size) { /* found a valid block */
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              		if (ZSMMG(shared_segments)[i]->end - ZSMMG(shared_segments)[i]->pos >= block_size) { /* found a valid block */
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (386:7): [True: 13, False: 0]
  ------------------
  387|     13|			void *retval = (void *) (((char *) ZSMMG(shared_segments)[i]->p) + ZSMMG(shared_segments)[i]->pos);
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              			void *retval = (void *) (((char *) ZSMMG(shared_segments)[i]->p) + ZSMMG(shared_segments)[i]->pos);
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  388|       |
  389|     13|			ZSMMG(shared_segments)[i]->pos += block_size;
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  390|     13|			ZSMMG(shared_free) -= block_size;
  ------------------
  |  |  123|     13|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  391|     13|			ZEND_ASSERT(((uintptr_t)retval & 0x7) == 0); /* should be 8 byte aligned */
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (391:4): [True: 0, False: 13]
  |  Branch (391:4): [True: 13, False: 0]
  ------------------
  392|     13|			return retval;
  393|     13|		}
  394|     13|	}
  395|      0|	SHARED_ALLOC_FAILED();
  ------------------
  |  |  363|      0|#define SHARED_ALLOC_FAILED() do {		\
  |  |  364|      0|		zend_accel_error(ACCEL_LOG_WARNING, "Not enough free shared space to allocate %zu bytes (%zu bytes free)", size, ZSMMG(shared_free)); \
  |  |  ------------------
  |  |  |  |   25|      0|#define ACCEL_LOG_WARNING				2
  |  |  ------------------
  |  |               		zend_accel_error(ACCEL_LOG_WARNING, "Not enough free shared space to allocate %zu bytes (%zu bytes free)", size, ZSMMG(shared_free)); \
  |  |  ------------------
  |  |  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  |  |  ------------------
  |  |  365|      0|		if (zend_shared_alloc_get_largest_free_block() < MIN_FREE_MEMORY) { \
  |  |  ------------------
  |  |  |  |  361|      0|#define MIN_FREE_MEMORY 64*1024
  |  |  ------------------
  |  |  |  Branch (365:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  366|      0|			ZSMMG(memory_exhausted) = 1; \
  |  |  ------------------
  |  |  |  |  123|      0|#define ZSMMG(element)		(smm_shared_globals->element)
  |  |  ------------------
  |  |  367|      0|		} \
  |  |  368|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (368:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  396|       |	return NULL;
  397|     13|}
zend_shared_memdup_size:
  405|      1|{
  406|      1|	void *old_p;
  407|      1|	zend_ulong key = (zend_ulong)source;
  408|       |
  409|      1|	key = zend_rotr3(key);
  410|      1|	if ((old_p = zend_hash_index_find_ptr(&ZCG(xlat_table), key)) != NULL) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (410:6): [True: 0, False: 1]
  ------------------
  411|       |		/* we already duplicated this pointer */
  412|      0|		return 0;
  413|      0|	}
  414|      1|	zend_hash_index_add_new_ptr(&ZCG(xlat_table), key, source);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  415|      1|	return ZEND_ALIGNED_SIZE(size);
  ------------------
  |  |  178|      1|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 1]
  |  |  |  |  |  Branch (37:37): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  416|      1|}
zend_shared_memdup_free:
  458|      1|{
  459|      1|	return _zend_shared_memdup(source, size, false, false, true);
  460|      1|}
zend_shared_memdup_put:
  468|      3|{
  469|      3|	return _zend_shared_memdup(source, size, false, true, false);
  470|      3|}
zend_shared_alloc_safe_unlock:
  478|  33.5k|{
  479|  33.5k|	if (ZCG(locked)) {
  ------------------
  |  |  306|  33.5k|# define ZCG(v) (accel_globals.v)
  |  |  ------------------
  |  |  |  Branch (306:17): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  480|      0|		zend_shared_alloc_unlock();
  481|      0|	}
  482|  33.5k|}
zend_shared_alloc_lock:
  485|     10|{
  486|     10|	ZEND_ASSERT(!ZCG(locked));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (486:2): [True: 0, False: 10]
  |  Branch (486:2): [True: 10, False: 0]
  ------------------
  487|       |
  488|     10|#ifndef ZEND_WIN32
  489|     10|	struct flock mem_write_lock;
  490|       |
  491|     10|	mem_write_lock.l_type = F_WRLCK;
  492|     10|	mem_write_lock.l_whence = SEEK_SET;
  493|     10|	mem_write_lock.l_start = 0;
  494|     10|	mem_write_lock.l_len = 1;
  495|       |
  496|       |#ifdef ZTS
  497|       |	tsrm_mutex_lock(zts_lock);
  498|       |#endif
  499|       |
  500|       |#if 0
  501|       |	/* this will happen once per process, and will un-globalize mem_write_lock */
  502|       |	if (mem_write_lock.l_pid == -1) {
  503|       |		mem_write_lock.l_pid = getpid();
  504|       |	}
  505|       |#endif
  506|       |
  507|     10|	while (1) {
  ------------------
  |  Branch (507:9): [True: 10, Folded]
  ------------------
  508|     10|		if (fcntl(lock_file, F_SETLKW, &mem_write_lock) == -1) {
  ------------------
  |  Branch (508:7): [True: 0, False: 10]
  ------------------
  509|      0|			if (errno == EINTR) {
  ------------------
  |  Branch (509:8): [True: 0, False: 0]
  ------------------
  510|      0|				continue;
  511|      0|			}
  512|      0|			zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Cannot create lock - %s (%d)", strerror(errno), errno);
  ------------------
  |  |   24|      0|#define ACCEL_LOG_ERROR					1
  ------------------
  513|      0|		}
  514|     10|		break;
  515|     10|	}
  516|       |#else
  517|       |	zend_shared_alloc_lock_win32();
  518|       |#endif
  519|       |
  520|     10|	ZCG(locked) = 1;
  ------------------
  |  |  306|     10|# define ZCG(v) (accel_globals.v)
  ------------------
  521|     10|}
zend_shared_alloc_unlock:
  524|     10|{
  525|     10|	ZEND_ASSERT(ZCG(locked));
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (525:2): [True: 0, False: 10]
  |  Branch (525:2): [True: 10, False: 0]
  ------------------
  526|       |
  527|     10|#ifndef ZEND_WIN32
  528|     10|	struct flock mem_write_unlock;
  529|       |
  530|     10|	mem_write_unlock.l_type = F_UNLCK;
  531|     10|	mem_write_unlock.l_whence = SEEK_SET;
  532|     10|	mem_write_unlock.l_start = 0;
  533|     10|	mem_write_unlock.l_len = 1;
  534|     10|#endif
  535|       |
  536|     10|	ZCG(locked) = 0;
  ------------------
  |  |  306|     10|# define ZCG(v) (accel_globals.v)
  ------------------
  537|       |
  538|     10|#ifndef ZEND_WIN32
  539|     10|	if (fcntl(lock_file, F_SETLK, &mem_write_unlock) == -1) {
  ------------------
  |  Branch (539:6): [True: 0, False: 10]
  ------------------
  540|      0|		zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Cannot remove lock - %s (%d)", strerror(errno), errno);
  ------------------
  |  |   24|      0|#define ACCEL_LOG_ERROR					1
  ------------------
  541|      0|	}
  542|       |#ifdef ZTS
  543|       |	tsrm_mutex_unlock(zts_lock);
  544|       |#endif
  545|       |#else
  546|       |	zend_shared_alloc_unlock_win32();
  547|       |#endif
  548|     10|}
zend_shared_alloc_init_xlat_table:
  551|      1|{
  552|       |	/* Prepare translation table */
  553|      1|	zend_hash_init(&ZCG(xlat_table), 128, NULL, NULL, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  554|      1|}
zend_shared_alloc_destroy_xlat_table:
  557|      1|{
  558|       |	/* Destroy translation table */
  559|      1|	zend_hash_destroy(&ZCG(xlat_table));
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  560|      1|}
zend_shared_alloc_clear_xlat_table:
  563|      1|{
  564|      1|	zend_hash_clean(&ZCG(xlat_table));
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  565|      1|}
zend_shared_alloc_register_xlat_entry:
  578|      1|{
  579|      1|	zend_ulong key = (zend_ulong)key_pointer;
  580|       |
  581|      1|	key = zend_rotr3(key);
  582|      1|	zend_hash_index_add_new_ptr(&ZCG(xlat_table), key, (void*)value);
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  583|      1|}
zend_shared_alloc_get_xlat_entry:
  586|      1|{
  587|      1|	void *retval;
  588|      1|	zend_ulong key = (zend_ulong)key_pointer;
  589|       |
  590|      1|	key = zend_rotr3(key);
  591|      1|	if ((retval = zend_hash_index_find_ptr(&ZCG(xlat_table), key)) == NULL) {
  ------------------
  |  |  306|      1|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (591:6): [True: 1, False: 0]
  ------------------
  592|      1|		return NULL;
  593|      1|	}
  594|      0|	return retval;
  595|      1|}
zend_shared_alloc_get_free_memory:
  598|      2|{
  599|      2|	return ZSMMG(shared_free);
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  600|      2|}
zend_shared_alloc_save_state:
  603|      2|{
  604|      2|	int i;
  605|       |
  606|      4|	for (i = 0; i < ZSMMG(shared_segments_count); i++) {
  ------------------
  |  |  123|      4|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  |  Branch (606:14): [True: 2, False: 2]
  ------------------
  607|      2|		ZSMMG(shared_memory_state).positions[i] = ZSMMG(shared_segments)[i]->pos;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              		ZSMMG(shared_memory_state).positions[i] = ZSMMG(shared_segments)[i]->pos;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  608|      2|	}
  609|      2|	ZSMMG(shared_memory_state).shared_free = ZSMMG(shared_free);
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
              	ZSMMG(shared_memory_state).shared_free = ZSMMG(shared_free);
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  610|      2|}
zend_accel_get_shared_model:
  625|      1|{
  626|      1|	return g_shared_model;
  627|      1|}
zend_shared_alloc.c:zend_shared_alloc_try:
  149|      2|{
  150|      2|	int res;
  151|      2|	g_shared_alloc_handler = he->handler;
  152|      2|	g_shared_model = he->name;
  153|      2|	ZSMMG(shared_segments) = NULL;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  154|      2|	ZSMMG(shared_segments_count) = 0;
  ------------------
  |  |  123|      2|#define ZSMMG(element)		(smm_shared_globals->element)
  ------------------
  155|       |
  156|      2|	res = S_H(create_segments)(requested_size, shared_segments_p, shared_segments_count, error_in);
  ------------------
  |  |   46|      2|#define S_H(s) g_shared_alloc_handler->s
  ------------------
  157|       |
  158|      2|	if (res) {
  ------------------
  |  Branch (158:6): [True: 2, False: 0]
  ------------------
  159|       |		/* this model works! */
  160|      2|		return res;
  161|      2|	}
  162|      0|	if (*shared_segments_p) {
  ------------------
  |  Branch (162:6): [True: 0, False: 0]
  ------------------
  163|      0|		int i;
  164|       |		/* cleanup */
  165|      0|		for (i = 0; i < *shared_segments_count; i++) {
  ------------------
  |  Branch (165:15): [True: 0, False: 0]
  ------------------
  166|      0|			if ((*shared_segments_p)[i]->p && (*shared_segments_p)[i]->p != (void *)-1) {
  ------------------
  |  Branch (166:8): [True: 0, False: 0]
  |  Branch (166:38): [True: 0, False: 0]
  ------------------
  167|      0|				S_H(detach_segment)((*shared_segments_p)[i]);
  ------------------
  |  |   46|      0|#define S_H(s) g_shared_alloc_handler->s
  ------------------
  168|      0|			}
  169|      0|		}
  170|      0|		free(*shared_segments_p);
  171|      0|		*shared_segments_p = NULL;
  172|      0|	}
  173|      0|	g_shared_alloc_handler = NULL;
  174|      0|	return ALLOC_FAILURE;
  ------------------
  |  |   67|      0|#define ALLOC_FAILURE           0
  ------------------
  175|      2|}
zend_shared_alloc.c:copy_shared_segments:
  134|      2|{
  135|      2|	zend_shared_segment **shared_segments_v = (zend_shared_segment **)to;
  136|      2|	void *shared_segments_to_p = ((char *)to + count*(sizeof(void *)));
  137|      2|	void *shared_segments_from_p = from;
  138|      2|	int i;
  139|       |
  140|      4|	for (i = 0; i < count; i++) {
  ------------------
  |  Branch (140:14): [True: 2, False: 2]
  ------------------
  141|      2|		shared_segments_v[i] = 	shared_segments_to_p;
  142|      2|		memcpy(shared_segments_to_p, shared_segments_from_p, size);
  143|      2|		shared_segments_to_p = ((char *)shared_segments_to_p + size);
  144|      2|		shared_segments_from_p = ((char *)shared_segments_from_p + size);
  145|      2|	}
  146|      2|}
zend_shared_alloc.c:zend_rotr3:
  400|      6|{
  401|      6|	return (key >> 3) | (key << ((sizeof(key) * 8) - 3));
  402|      6|}
zend_shared_alloc.c:_zend_shared_memdup:
  419|      4|{
  420|      4|	void *old_p, *retval;
  421|      4|	zend_ulong key;
  422|       |
  423|      4|	if (get_xlat) {
  ------------------
  |  Branch (423:6): [True: 0, False: 4]
  ------------------
  424|      0|		key = (zend_ulong)source;
  425|      0|		key = zend_rotr3(key);
  426|      0|		if ((old_p = zend_hash_index_find_ptr(&ZCG(xlat_table), key)) != NULL) {
  ------------------
  |  |  306|      0|# define ZCG(v) (accel_globals.v)
  ------------------
  |  Branch (426:7): [True: 0, False: 0]
  ------------------
  427|       |			/* we already duplicated this pointer */
  428|      0|			return old_p;
  429|      0|		}
  430|      0|	}
  431|      4|	retval = ZCG(mem);
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  ------------------
  432|      4|	ZCG(mem) = (void*)(((char*)ZCG(mem)) + ZEND_ALIGNED_SIZE(size));
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  ------------------
              	ZCG(mem) = (void*)(((char*)ZCG(mem)) + ZEND_ALIGNED_SIZE(size));
  ------------------
  |  |  306|      4|# define ZCG(v) (accel_globals.v)
  ------------------
              	ZCG(mem) = (void*)(((char*)ZCG(mem)) + ZEND_ALIGNED_SIZE(size));
  ------------------
  |  |  178|      4|	ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
  |  |  ------------------
  |  |  |  |   37|      8|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:15): [Folded, False: 4]
  |  |  |  |  |  Branch (37:37): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  433|      4|	memcpy(retval, source, size);
  434|      4|	if (set_xlat) {
  ------------------
  |  Branch (434:6): [True: 3, False: 1]
  ------------------
  435|      3|		if (!get_xlat) {
  ------------------
  |  Branch (435:7): [True: 3, False: 0]
  ------------------
  436|      3|			key = (zend_ulong)source;
  437|      3|			key = zend_rotr3(key);
  438|      3|		}
  439|      3|		zend_hash_index_add_new_ptr(&ZCG(xlat_table), key, retval);
  ------------------
  |  |  306|      3|# define ZCG(v) (accel_globals.v)
  ------------------
  440|      3|	}
  441|      4|	if (free_source) {
  ------------------
  |  Branch (441:6): [True: 1, False: 3]
  ------------------
  442|       |		efree(source);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  443|      1|	}
  444|      4|	return retval;
  445|      4|}

ZendAccelerator.c:zend_shared_alloc_aligned:
  139|      1|static inline void *zend_shared_alloc_aligned(size_t size) {
  140|      1|#if defined(__AVX__) || defined(__SSE2__)
  141|       |	/* Align to 64-byte boundary */
  142|      1|	void *p = zend_shared_alloc(size + 64);
  143|      1|	return (void *)(((uintptr_t)p + 63L) & ~63L);
  144|       |#else
  145|       |	return zend_shared_alloc(size);
  146|       |#endif
  147|      1|}

_pcre2_auto_possessify_8:
 1139|    298|{
 1140|    298|PCRE2_UCHAR c;
  ------------------
  |  |  819|    298|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1141|    298|PCRE2_SPTR end;
  ------------------
  |  |  820|    298|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1142|    298|PCRE2_UCHAR *repeat_opcode;
  ------------------
  |  |  819|    298|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1143|    298|uint32_t list[8];
 1144|    298|int rec_limit = 1000;  /* Was 10,000 but clang+ASAN uses a lot of stack. */
 1145|    298|BOOL utf = (cb->external_options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|    298|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 1146|    298|BOOL ucp = (cb->external_options & PCRE2_UCP) != 0;
  ------------------
  |  |  136|    298|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
 1147|       |
 1148|    298|for (;;)
 1149|  11.2k|  {
 1150|  11.2k|  c = *code;
 1151|       |
 1152|  11.2k|  if (c >= OP_TABLE_LENGTH) return -1;   /* Something gone wrong */
  ------------------
  |  Branch (1152:7): [True: 0, False: 11.2k]
  ------------------
 1153|       |
 1154|  11.2k|  if (c >= OP_STAR && c <= OP_TYPEPOSUPTO)
  ------------------
  |  Branch (1154:7): [True: 2.40k, False: 8.79k]
  |  Branch (1154:23): [True: 1.19k, False: 1.21k]
  ------------------
 1155|  1.19k|    {
 1156|  1.19k|    c -= get_repeat_base(c) - OP_STAR;
 1157|  1.19k|    end = (c <= OP_MINUPTO) ?
  ------------------
  |  Branch (1157:11): [True: 1.15k, False: 37]
  ------------------
 1158|  1.19k|      get_chr_property_list(code, utf, ucp, cb->fcc, list) : NULL;
 1159|  1.19k|    list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO;
  ------------------
  |  Branch (1159:15): [True: 139, False: 1.05k]
  |  Branch (1159:31): [True: 458, False: 594]
  |  Branch (1159:47): [True: 315, False: 279]
  |  Branch (1159:64): [True: 0, False: 279]
  ------------------
 1160|       |
 1161|  1.19k|    if (end != NULL && compare_opcodes(end, utf, ucp, cb, list, end,
  ------------------
  |  Branch (1161:9): [True: 1.15k, False: 41]
  |  Branch (1161:24): [True: 619, False: 531]
  ------------------
 1162|  1.15k|        &rec_limit))
 1163|    619|      {
 1164|    619|      switch(c)
  ------------------
  |  Branch (1164:14): [True: 619, False: 0]
  ------------------
 1165|    619|        {
 1166|     96|        case OP_STAR:
  ------------------
  |  Branch (1166:9): [True: 96, False: 523]
  ------------------
 1167|     96|        *code += OP_POSSTAR - OP_STAR;
 1168|     96|        break;
 1169|       |
 1170|      9|        case OP_MINSTAR:
  ------------------
  |  Branch (1170:9): [True: 9, False: 610]
  ------------------
 1171|      9|        *code += OP_POSSTAR - OP_MINSTAR;
 1172|      9|        break;
 1173|       |
 1174|    182|        case OP_PLUS:
  ------------------
  |  Branch (1174:9): [True: 182, False: 437]
  ------------------
 1175|    182|        *code += OP_POSPLUS - OP_PLUS;
 1176|    182|        break;
 1177|       |
 1178|     74|        case OP_MINPLUS:
  ------------------
  |  Branch (1178:9): [True: 74, False: 545]
  ------------------
 1179|     74|        *code += OP_POSPLUS - OP_MINPLUS;
 1180|     74|        break;
 1181|       |
 1182|    222|        case OP_QUERY:
  ------------------
  |  Branch (1182:9): [True: 222, False: 397]
  ------------------
 1183|    222|        *code += OP_POSQUERY - OP_QUERY;
 1184|    222|        break;
 1185|       |
 1186|     36|        case OP_MINQUERY:
  ------------------
  |  Branch (1186:9): [True: 36, False: 583]
  ------------------
 1187|     36|        *code += OP_POSQUERY - OP_MINQUERY;
 1188|     36|        break;
 1189|       |
 1190|      0|        case OP_UPTO:
  ------------------
  |  Branch (1190:9): [True: 0, False: 619]
  ------------------
 1191|      0|        *code += OP_POSUPTO - OP_UPTO;
 1192|      0|        break;
 1193|       |
 1194|      0|        case OP_MINUPTO:
  ------------------
  |  Branch (1194:9): [True: 0, False: 619]
  ------------------
 1195|      0|        *code += OP_POSUPTO - OP_MINUPTO;
 1196|      0|        break;
 1197|    619|        }
 1198|    619|      }
 1199|  1.19k|    c = *code;
 1200|  1.19k|    }
 1201|  10.0k|  else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS)
  ------------------
  |  Branch (1201:12): [True: 47, False: 9.96k]
  |  Branch (1201:29): [True: 27, False: 9.93k]
  |  Branch (1201:47): [True: 27, False: 9.90k]
  ------------------
 1202|    101|    {
 1203|    101|#ifdef SUPPORT_WIDE_CHARS
 1204|    101|    if (c == OP_XCLASS)
  ------------------
  |  Branch (1204:9): [True: 27, False: 74]
  ------------------
 1205|     27|      repeat_opcode = code + GET(code, 1);
  ------------------
  |  |  109|     27|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1206|     74|    else
 1207|     74|#endif
 1208|     74|      repeat_opcode = code + 1 + (32 / sizeof(PCRE2_UCHAR));
 1209|       |
 1210|    101|    c = *repeat_opcode;
 1211|    101|    if (c >= OP_CRSTAR && c <= OP_CRMINRANGE)
  ------------------
  |  Branch (1211:9): [True: 72, False: 29]
  |  Branch (1211:27): [True: 66, False: 6]
  ------------------
 1212|     66|      {
 1213|       |      /* The return from get_chr_property_list() will never be NULL when
 1214|       |      *code (aka c) is one of the three class opcodes. However, gcc with
 1215|       |      -fanalyzer notes that a NULL return is possible, and grumbles. Hence we
 1216|       |      put in a check. */
 1217|       |
 1218|     66|      end = get_chr_property_list(code, utf, ucp, cb->fcc, list);
 1219|     66|      list[1] = (c & 1) == 0;
 1220|       |
 1221|     66|      if (end != NULL &&
  ------------------
  |  Branch (1221:11): [True: 66, False: 0]
  ------------------
 1222|     66|          compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit))
  ------------------
  |  Branch (1222:11): [True: 23, False: 43]
  ------------------
 1223|     23|        {
 1224|     23|        switch (c)
  ------------------
  |  Branch (1224:17): [True: 23, False: 0]
  ------------------
 1225|     23|          {
 1226|      4|          case OP_CRSTAR:
  ------------------
  |  Branch (1226:11): [True: 4, False: 19]
  ------------------
 1227|      4|          case OP_CRMINSTAR:
  ------------------
  |  Branch (1227:11): [True: 0, False: 23]
  ------------------
 1228|      4|          *repeat_opcode = OP_CRPOSSTAR;
 1229|      4|          break;
 1230|       |
 1231|      1|          case OP_CRPLUS:
  ------------------
  |  Branch (1231:11): [True: 1, False: 22]
  ------------------
 1232|     17|          case OP_CRMINPLUS:
  ------------------
  |  Branch (1232:11): [True: 16, False: 7]
  ------------------
 1233|     17|          *repeat_opcode = OP_CRPOSPLUS;
 1234|     17|          break;
 1235|       |
 1236|      2|          case OP_CRQUERY:
  ------------------
  |  Branch (1236:11): [True: 2, False: 21]
  ------------------
 1237|      2|          case OP_CRMINQUERY:
  ------------------
  |  Branch (1237:11): [True: 0, False: 23]
  ------------------
 1238|      2|          *repeat_opcode = OP_CRPOSQUERY;
 1239|      2|          break;
 1240|       |
 1241|      0|          case OP_CRRANGE:
  ------------------
  |  Branch (1241:11): [True: 0, False: 23]
  ------------------
 1242|      0|          case OP_CRMINRANGE:
  ------------------
  |  Branch (1242:11): [True: 0, False: 23]
  ------------------
 1243|      0|          *repeat_opcode = OP_CRPOSRANGE;
 1244|      0|          break;
 1245|     23|          }
 1246|     23|        }
 1247|     66|      }
 1248|    101|    c = *code;
 1249|    101|    }
 1250|       |
 1251|  11.2k|  switch(c)
  ------------------
  |  Branch (1251:10): [True: 745, False: 10.4k]
  ------------------
 1252|  11.2k|    {
 1253|    298|    case OP_END:
  ------------------
  |  Branch (1253:5): [True: 298, False: 10.9k]
  ------------------
 1254|    298|    return 0;
 1255|       |
 1256|     24|    case OP_TYPESTAR:
  ------------------
  |  Branch (1256:5): [True: 24, False: 11.1k]
  ------------------
 1257|     26|    case OP_TYPEMINSTAR:
  ------------------
  |  Branch (1257:5): [True: 2, False: 11.1k]
  ------------------
 1258|    227|    case OP_TYPEPLUS:
  ------------------
  |  Branch (1258:5): [True: 201, False: 11.0k]
  ------------------
 1259|    307|    case OP_TYPEMINPLUS:
  ------------------
  |  Branch (1259:5): [True: 80, False: 11.1k]
  ------------------
 1260|    336|    case OP_TYPEQUERY:
  ------------------
  |  Branch (1260:5): [True: 29, False: 11.1k]
  ------------------
 1261|    356|    case OP_TYPEMINQUERY:
  ------------------
  |  Branch (1261:5): [True: 20, False: 11.1k]
  ------------------
 1262|    365|    case OP_TYPEPOSSTAR:
  ------------------
  |  Branch (1262:5): [True: 9, False: 11.1k]
  ------------------
 1263|    392|    case OP_TYPEPOSPLUS:
  ------------------
  |  Branch (1263:5): [True: 27, False: 11.1k]
  ------------------
 1264|    420|    case OP_TYPEPOSQUERY:
  ------------------
  |  Branch (1264:5): [True: 28, False: 11.1k]
  ------------------
 1265|    420|    if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
  ------------------
  |  Branch (1265:9): [True: 25, False: 395]
  |  Branch (1265:31): [True: 40, False: 355]
  ------------------
 1266|    420|    break;
 1267|       |
 1268|      0|    case OP_TYPEUPTO:
  ------------------
  |  Branch (1268:5): [True: 0, False: 11.2k]
  ------------------
 1269|      0|    case OP_TYPEMINUPTO:
  ------------------
  |  Branch (1269:5): [True: 0, False: 11.2k]
  ------------------
 1270|      0|    case OP_TYPEEXACT:
  ------------------
  |  Branch (1270:5): [True: 0, False: 11.2k]
  ------------------
 1271|      0|    case OP_TYPEPOSUPTO:
  ------------------
  |  Branch (1271:5): [True: 0, False: 11.2k]
  ------------------
 1272|      0|    if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
                  if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (1272:9): [True: 0, False: 0]
  |  Branch (1272:43): [True: 0, False: 0]
  ------------------
 1273|      0|      code += 2;
 1274|      0|    break;
 1275|       |
 1276|      0|    case OP_CALLOUT_STR:
  ------------------
  |  Branch (1276:5): [True: 0, False: 11.2k]
  ------------------
 1277|      0|    code += GET(code, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1278|      0|    break;
 1279|       |
 1280|      0|#ifdef SUPPORT_WIDE_CHARS
 1281|     27|    case OP_XCLASS:
  ------------------
  |  Branch (1281:5): [True: 27, False: 11.1k]
  ------------------
 1282|     27|    code += GET(code, 1);
  ------------------
  |  |  109|     27|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1283|     27|    break;
 1284|      0|#endif
 1285|       |
 1286|      0|    case OP_MARK:
  ------------------
  |  Branch (1286:5): [True: 0, False: 11.2k]
  ------------------
 1287|      0|    case OP_COMMIT_ARG:
  ------------------
  |  Branch (1287:5): [True: 0, False: 11.2k]
  ------------------
 1288|      0|    case OP_PRUNE_ARG:
  ------------------
  |  Branch (1288:5): [True: 0, False: 11.2k]
  ------------------
 1289|      0|    case OP_SKIP_ARG:
  ------------------
  |  Branch (1289:5): [True: 0, False: 11.2k]
  ------------------
 1290|      0|    case OP_THEN_ARG:
  ------------------
  |  Branch (1290:5): [True: 0, False: 11.2k]
  ------------------
 1291|      0|    code += code[1];
 1292|      0|    break;
 1293|  11.2k|    }
 1294|       |
 1295|       |  /* Add in the fixed length from the table */
 1296|       |
 1297|  10.9k|  code += PRIV(OP_lengths)[c];
  ------------------
  |  |  195|  10.9k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|  10.9k|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  10.9k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  10.9k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  10.9k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1298|       |
 1299|       |  /* In UTF-8 and UTF-16 modes, opcodes that are followed by a character may be
 1300|       |  followed by a multi-byte character. The length in the table is a minimum, so
 1301|       |  we have to arrange to skip the extra code units. */
 1302|       |
 1303|  10.9k|#ifdef MAYBE_UTF_MULTI
 1304|  10.9k|  if (utf) switch(c)
  ------------------
  |  Branch (1304:7): [True: 5.06k, False: 5.84k]
  |  Branch (1304:19): [True: 3.76k, False: 1.29k]
  ------------------
 1305|  5.06k|    {
 1306|    810|    case OP_CHAR:
  ------------------
  |  Branch (1306:5): [True: 810, False: 4.25k]
  ------------------
 1307|  3.35k|    case OP_CHARI:
  ------------------
  |  Branch (1307:5): [True: 2.54k, False: 2.51k]
  ------------------
 1308|  3.35k|    case OP_NOT:
  ------------------
  |  Branch (1308:5): [True: 0, False: 5.06k]
  ------------------
 1309|  3.36k|    case OP_NOTI:
  ------------------
  |  Branch (1309:5): [True: 4, False: 5.05k]
  ------------------
 1310|  3.36k|    case OP_STAR:
  ------------------
  |  Branch (1310:5): [True: 2, False: 5.05k]
  ------------------
 1311|  3.36k|    case OP_MINSTAR:
  ------------------
  |  Branch (1311:5): [True: 0, False: 5.06k]
  ------------------
 1312|  3.37k|    case OP_PLUS:
  ------------------
  |  Branch (1312:5): [True: 15, False: 5.04k]
  ------------------
 1313|  3.38k|    case OP_MINPLUS:
  ------------------
  |  Branch (1313:5): [True: 4, False: 5.05k]
  ------------------
 1314|  3.39k|    case OP_QUERY:
  ------------------
  |  Branch (1314:5): [True: 9, False: 5.05k]
  ------------------
 1315|  3.39k|    case OP_MINQUERY:
  ------------------
  |  Branch (1315:5): [True: 0, False: 5.06k]
  ------------------
 1316|  3.39k|    case OP_UPTO:
  ------------------
  |  Branch (1316:5): [True: 0, False: 5.06k]
  ------------------
 1317|  3.39k|    case OP_MINUPTO:
  ------------------
  |  Branch (1317:5): [True: 0, False: 5.06k]
  ------------------
 1318|  3.39k|    case OP_EXACT:
  ------------------
  |  Branch (1318:5): [True: 1, False: 5.06k]
  ------------------
 1319|  3.39k|    case OP_POSSTAR:
  ------------------
  |  Branch (1319:5): [True: 5, False: 5.05k]
  ------------------
 1320|  3.45k|    case OP_POSPLUS:
  ------------------
  |  Branch (1320:5): [True: 53, False: 5.00k]
  ------------------
 1321|  3.48k|    case OP_POSQUERY:
  ------------------
  |  Branch (1321:5): [True: 29, False: 5.03k]
  ------------------
 1322|  3.48k|    case OP_POSUPTO:
  ------------------
  |  Branch (1322:5): [True: 0, False: 5.06k]
  ------------------
 1323|  3.48k|    case OP_STARI:
  ------------------
  |  Branch (1323:5): [True: 5, False: 5.05k]
  ------------------
 1324|  3.48k|    case OP_MINSTARI:
  ------------------
  |  Branch (1324:5): [True: 1, False: 5.06k]
  ------------------
 1325|  3.52k|    case OP_PLUSI:
  ------------------
  |  Branch (1325:5): [True: 34, False: 5.02k]
  ------------------
 1326|  3.52k|    case OP_MINPLUSI:
  ------------------
  |  Branch (1326:5): [True: 2, False: 5.05k]
  ------------------
 1327|  3.54k|    case OP_QUERYI:
  ------------------
  |  Branch (1327:5): [True: 19, False: 5.04k]
  ------------------
 1328|  3.54k|    case OP_MINQUERYI:
  ------------------
  |  Branch (1328:5): [True: 0, False: 5.06k]
  ------------------
 1329|  3.54k|    case OP_UPTOI:
  ------------------
  |  Branch (1329:5): [True: 0, False: 5.06k]
  ------------------
 1330|  3.54k|    case OP_MINUPTOI:
  ------------------
  |  Branch (1330:5): [True: 0, False: 5.06k]
  ------------------
 1331|  3.54k|    case OP_EXACTI:
  ------------------
  |  Branch (1331:5): [True: 6, False: 5.05k]
  ------------------
 1332|  3.59k|    case OP_POSSTARI:
  ------------------
  |  Branch (1332:5): [True: 51, False: 5.01k]
  ------------------
 1333|  3.67k|    case OP_POSPLUSI:
  ------------------
  |  Branch (1333:5): [True: 80, False: 4.98k]
  ------------------
 1334|  3.75k|    case OP_POSQUERYI:
  ------------------
  |  Branch (1334:5): [True: 79, False: 4.98k]
  ------------------
 1335|  3.75k|    case OP_POSUPTOI:
  ------------------
  |  Branch (1335:5): [True: 0, False: 5.06k]
  ------------------
 1336|  3.75k|    case OP_NOTSTAR:
  ------------------
  |  Branch (1336:5): [True: 0, False: 5.06k]
  ------------------
 1337|  3.75k|    case OP_NOTMINSTAR:
  ------------------
  |  Branch (1337:5): [True: 0, False: 5.06k]
  ------------------
 1338|  3.75k|    case OP_NOTPLUS:
  ------------------
  |  Branch (1338:5): [True: 1, False: 5.06k]
  ------------------
 1339|  3.75k|    case OP_NOTMINPLUS:
  ------------------
  |  Branch (1339:5): [True: 0, False: 5.06k]
  ------------------
 1340|  3.75k|    case OP_NOTQUERY:
  ------------------
  |  Branch (1340:5): [True: 0, False: 5.06k]
  ------------------
 1341|  3.75k|    case OP_NOTMINQUERY:
  ------------------
  |  Branch (1341:5): [True: 0, False: 5.06k]
  ------------------
 1342|  3.75k|    case OP_NOTUPTO:
  ------------------
  |  Branch (1342:5): [True: 0, False: 5.06k]
  ------------------
 1343|  3.75k|    case OP_NOTMINUPTO:
  ------------------
  |  Branch (1343:5): [True: 0, False: 5.06k]
  ------------------
 1344|  3.75k|    case OP_NOTEXACT:
  ------------------
  |  Branch (1344:5): [True: 0, False: 5.06k]
  ------------------
 1345|  3.75k|    case OP_NOTPOSSTAR:
  ------------------
  |  Branch (1345:5): [True: 0, False: 5.06k]
  ------------------
 1346|  3.75k|    case OP_NOTPOSPLUS:
  ------------------
  |  Branch (1346:5): [True: 0, False: 5.06k]
  ------------------
 1347|  3.75k|    case OP_NOTPOSQUERY:
  ------------------
  |  Branch (1347:5): [True: 0, False: 5.06k]
  ------------------
 1348|  3.75k|    case OP_NOTPOSUPTO:
  ------------------
  |  Branch (1348:5): [True: 0, False: 5.06k]
  ------------------
 1349|  3.75k|    case OP_NOTSTARI:
  ------------------
  |  Branch (1349:5): [True: 0, False: 5.06k]
  ------------------
 1350|  3.75k|    case OP_NOTMINSTARI:
  ------------------
  |  Branch (1350:5): [True: 0, False: 5.06k]
  ------------------
 1351|  3.76k|    case OP_NOTPLUSI:
  ------------------
  |  Branch (1351:5): [True: 5, False: 5.05k]
  ------------------
 1352|  3.76k|    case OP_NOTMINPLUSI:
  ------------------
  |  Branch (1352:5): [True: 0, False: 5.06k]
  ------------------
 1353|  3.76k|    case OP_NOTQUERYI:
  ------------------
  |  Branch (1353:5): [True: 0, False: 5.06k]
  ------------------
 1354|  3.76k|    case OP_NOTMINQUERYI:
  ------------------
  |  Branch (1354:5): [True: 2, False: 5.05k]
  ------------------
 1355|  3.76k|    case OP_NOTUPTOI:
  ------------------
  |  Branch (1355:5): [True: 0, False: 5.06k]
  ------------------
 1356|  3.76k|    case OP_NOTMINUPTOI:
  ------------------
  |  Branch (1356:5): [True: 0, False: 5.06k]
  ------------------
 1357|  3.76k|    case OP_NOTEXACTI:
  ------------------
  |  Branch (1357:5): [True: 0, False: 5.06k]
  ------------------
 1358|  3.76k|    case OP_NOTPOSSTARI:
  ------------------
  |  Branch (1358:5): [True: 0, False: 5.06k]
  ------------------
 1359|  3.76k|    case OP_NOTPOSPLUSI:
  ------------------
  |  Branch (1359:5): [True: 0, False: 5.06k]
  ------------------
 1360|  3.76k|    case OP_NOTPOSQUERYI:
  ------------------
  |  Branch (1360:5): [True: 0, False: 5.06k]
  ------------------
 1361|  3.76k|    case OP_NOTPOSUPTOI:
  ------------------
  |  Branch (1361:5): [True: 0, False: 5.06k]
  ------------------
 1362|  3.76k|    if (HAS_EXTRALEN(code[-1])) code += GET_EXTRALEN(code[-1]);
  ------------------
  |  |  286|  3.76k|#define HAS_EXTRALEN(c) HASUTF8EXTRALEN(c)
  |  |  ------------------
  |  |  |  |  272|  3.76k|#define HASUTF8EXTRALEN(c) ((c) >= 0xc0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (272:28): [True: 33, False: 3.73k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (HAS_EXTRALEN(code[-1])) code += GET_EXTRALEN(code[-1]);
  ------------------
  |  |  291|     33|#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3fu])
  |  |  ------------------
  |  |  |  |  195|     33|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  ------------------
 1363|  3.76k|    break;
 1364|  5.06k|    }
 1365|       |#else
 1366|       |  (void)(utf);  /* Keep compiler happy by referencing function argument */
 1367|       |#endif  /* SUPPORT_WIDE_CHARS */
 1368|  10.9k|  }
 1369|    298|}
pcre2_auto_possess.c:get_repeat_base:
  292|  2.69k|{
  293|  2.69k|return (c > OP_TYPEPOSUPTO)? c :
  ------------------
  |  Branch (293:8): [True: 0, False: 2.69k]
  ------------------
  294|  2.69k|       (c >= OP_TYPESTAR)?   OP_TYPESTAR :
  ------------------
  |  Branch (294:8): [True: 1.01k, False: 1.67k]
  ------------------
  295|  2.69k|       (c >= OP_NOTSTARI)?   OP_NOTSTARI :
  ------------------
  |  Branch (295:8): [True: 16, False: 1.66k]
  ------------------
  296|  1.67k|       (c >= OP_NOTSTAR)?    OP_NOTSTAR :
  ------------------
  |  Branch (296:8): [True: 18, False: 1.64k]
  ------------------
  297|  1.66k|       (c >= OP_STARI)?      OP_STARI :
  ------------------
  |  Branch (297:8): [True: 1.01k, False: 630]
  ------------------
  298|  1.64k|                             OP_STAR;
  299|  2.69k|}
pcre2_auto_possess.c:get_chr_property_list:
  327|  2.49k|{
  328|  2.49k|PCRE2_UCHAR c = *code;
  ------------------
  |  |  819|  2.49k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  2.49k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  2.49k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  2.49k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  329|  2.49k|PCRE2_UCHAR base;
  ------------------
  |  |  819|  2.49k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  2.49k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  2.49k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  2.49k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|  2.49k|PCRE2_SPTR end;
  ------------------
  |  |  820|  2.49k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  2.49k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  2.49k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  2.49k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  331|  2.49k|uint32_t chr;
  332|       |
  333|  2.49k|#ifdef SUPPORT_UNICODE
  334|  2.49k|uint32_t *clist_dest;
  335|  2.49k|const uint32_t *clist_src;
  336|       |#else
  337|       |(void)utf;    /* Suppress "unused parameter" compiler warnings */
  338|       |(void)ucp;
  339|       |#endif
  340|       |
  341|  2.49k|list[0] = c;
  342|  2.49k|list[1] = FALSE;
  ------------------
  |  |   87|  2.49k|#define FALSE   0
  ------------------
  343|  2.49k|code++;
  344|       |
  345|  2.49k|if (c >= OP_STAR && c <= OP_TYPEPOSUPTO)
  ------------------
  |  Branch (345:5): [True: 1.59k, False: 902]
  |  Branch (345:21): [True: 1.50k, False: 93]
  ------------------
  346|  1.50k|  {
  347|  1.50k|  base = get_repeat_base(c);
  348|  1.50k|  c -= (base - OP_STAR);
  349|       |
  350|  1.50k|  if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO)
  ------------------
  |  Branch (350:7): [True: 0, False: 1.50k]
  |  Branch (350:23): [True: 0, False: 1.50k]
  |  Branch (350:42): [True: 3, False: 1.50k]
  |  Branch (350:59): [True: 0, False: 1.50k]
  ------------------
  351|      3|    code += IMM2_SIZE;
  ------------------
  |  |  193|      3|#define IMM2_SIZE 2
  ------------------
  352|       |
  353|  1.50k|  list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT &&
  ------------------
  |  Branch (353:14): [True: 900, False: 604]
  |  Branch (353:30): [True: 704, False: 196]
  |  Branch (353:49): [True: 701, False: 3]
  ------------------
  354|    701|             c != OP_POSPLUS);
  ------------------
  |  Branch (354:14): [True: 698, False: 3]
  ------------------
  355|       |
  356|  1.50k|  switch(base)
  ------------------
  |  Branch (356:10): [True: 1.50k, False: 0]
  ------------------
  357|  1.50k|    {
  358|    342|    case OP_STAR:
  ------------------
  |  Branch (358:5): [True: 342, False: 1.16k]
  ------------------
  359|    342|    list[0] = OP_CHAR;
  360|    342|    break;
  361|       |
  362|    545|    case OP_STARI:
  ------------------
  |  Branch (362:5): [True: 545, False: 959]
  ------------------
  363|    545|    list[0] = OP_CHARI;
  364|    545|    break;
  365|       |
  366|     11|    case OP_NOTSTAR:
  ------------------
  |  Branch (366:5): [True: 11, False: 1.49k]
  ------------------
  367|     11|    list[0] = OP_NOT;
  368|     11|    break;
  369|       |
  370|      8|    case OP_NOTSTARI:
  ------------------
  |  Branch (370:5): [True: 8, False: 1.49k]
  ------------------
  371|      8|    list[0] = OP_NOTI;
  372|      8|    break;
  373|       |
  374|    598|    case OP_TYPESTAR:
  ------------------
  |  Branch (374:5): [True: 598, False: 906]
  ------------------
  375|    598|    list[0] = *code;
  376|    598|    code++;
  377|    598|    break;
  378|  1.50k|    }
  379|  1.50k|  c = list[0];
  380|  1.50k|  }
  381|       |
  382|  2.49k|switch(c)
  ------------------
  |  Branch (382:8): [True: 2.44k, False: 52]
  ------------------
  383|  2.49k|  {
  384|     12|  case OP_NOT_DIGIT:
  ------------------
  |  Branch (384:3): [True: 12, False: 2.48k]
  ------------------
  385|     32|  case OP_DIGIT:
  ------------------
  |  Branch (385:3): [True: 20, False: 2.47k]
  ------------------
  386|     39|  case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (386:3): [True: 7, False: 2.49k]
  ------------------
  387|     55|  case OP_WHITESPACE:
  ------------------
  |  Branch (387:3): [True: 16, False: 2.48k]
  ------------------
  388|     60|  case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (388:3): [True: 5, False: 2.49k]
  ------------------
  389|     99|  case OP_WORDCHAR:
  ------------------
  |  Branch (389:3): [True: 39, False: 2.46k]
  ------------------
  390|    266|  case OP_ANY:
  ------------------
  |  Branch (390:3): [True: 167, False: 2.33k]
  ------------------
  391|    360|  case OP_ALLANY:
  ------------------
  |  Branch (391:3): [True: 94, False: 2.40k]
  ------------------
  392|    434|  case OP_ANYNL:
  ------------------
  |  Branch (392:3): [True: 74, False: 2.42k]
  ------------------
  393|    511|  case OP_NOT_HSPACE:
  ------------------
  |  Branch (393:3): [True: 77, False: 2.42k]
  ------------------
  394|    522|  case OP_HSPACE:
  ------------------
  |  Branch (394:3): [True: 11, False: 2.48k]
  ------------------
  395|    585|  case OP_NOT_VSPACE:
  ------------------
  |  Branch (395:3): [True: 63, False: 2.43k]
  ------------------
  396|    585|  case OP_VSPACE:
  ------------------
  |  Branch (396:3): [True: 0, False: 2.49k]
  ------------------
  397|    630|  case OP_EXTUNI:
  ------------------
  |  Branch (397:3): [True: 45, False: 2.45k]
  ------------------
  398|    632|  case OP_EODN:
  ------------------
  |  Branch (398:3): [True: 2, False: 2.49k]
  ------------------
  399|    634|  case OP_EOD:
  ------------------
  |  Branch (399:3): [True: 2, False: 2.49k]
  ------------------
  400|    638|  case OP_DOLL:
  ------------------
  |  Branch (400:3): [True: 4, False: 2.49k]
  ------------------
  401|    638|  case OP_DOLLM:
  ------------------
  |  Branch (401:3): [True: 0, False: 2.49k]
  ------------------
  402|    638|  return code;
  403|       |
  404|    579|  case OP_CHAR:
  ------------------
  |  Branch (404:3): [True: 579, False: 1.92k]
  ------------------
  405|    592|  case OP_NOT:
  ------------------
  |  Branch (405:3): [True: 13, False: 2.48k]
  ------------------
  406|    592|  GETCHARINCTEST(chr, code);
  ------------------
  |  |  323|    592|  c = *eptr++; \
  |  |  324|    592|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      3|    { \
  |  |  |  |  307|      3|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  308|      3|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      3|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  310|      3|      { \
  |  |  |  |  311|      2|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      2|      eptr += 2; \
  |  |  |  |  313|      2|      } \
  |  |  |  |  314|      3|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      1|      { \
  |  |  |  |  316|      1|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      1|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      1|      eptr += 3; \
  |  |  |  |  319|      1|      } \
  |  |  |  |  320|      1|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      3|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 228, False: 364]
  |  |  |  Branch (324:14): [True: 3, False: 225]
  |  |  ------------------
  ------------------
  407|    592|  list[2] = chr;
  408|    592|  list[3] = NOTACHAR;
  ------------------
  |  |  223|    592|#define NOTACHAR 0xffffffff
  ------------------
  409|    592|  return code;
  410|       |
  411|    981|  case OP_CHARI:
  ------------------
  |  Branch (411:3): [True: 981, False: 1.51k]
  ------------------
  412|    989|  case OP_NOTI:
  ------------------
  |  Branch (412:3): [True: 8, False: 2.49k]
  ------------------
  413|    989|  list[0] = (c == OP_CHARI) ? OP_CHAR : OP_NOT;
  ------------------
  |  Branch (413:13): [True: 981, False: 8]
  ------------------
  414|    989|  GETCHARINCTEST(chr, code);
  ------------------
  |  |  323|    989|  c = *eptr++; \
  |  |  324|    989|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      4|    { \
  |  |  |  |  307|      4|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  308|      4|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      4|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 1, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  310|      4|      { \
  |  |  |  |  311|      1|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      1|      eptr += 2; \
  |  |  |  |  313|      1|      } \
  |  |  |  |  314|      4|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      3|      { \
  |  |  |  |  316|      3|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      3|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      3|      eptr += 3; \
  |  |  |  |  319|      3|      } \
  |  |  |  |  320|      3|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      4|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 545, False: 444]
  |  |  |  Branch (324:14): [True: 4, False: 541]
  |  |  ------------------
  ------------------
  415|    989|  list[2] = chr;
  416|       |
  417|    989|#ifdef SUPPORT_UNICODE
  418|    989|  if (chr < 128 || (chr < 256 && !utf && !ucp))
  ------------------
  |  Branch (418:7): [True: 951, False: 38]
  |  Branch (418:21): [True: 34, False: 4]
  |  Branch (418:34): [True: 34, False: 0]
  |  Branch (418:42): [True: 34, False: 0]
  ------------------
  419|    985|    list[3] = fcc[chr];
  420|      4|  else
  421|      4|    list[3] = UCD_OTHERCASE(chr);
  ------------------
  |  | 1889|      4|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      4|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      4|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      4|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      4|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      4|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      4|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      4|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      4|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      4|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      4|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      4|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      4|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      4|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  422|       |#elif defined SUPPORT_WIDE_CHARS
  423|       |  list[3] = (chr < 256) ? fcc[chr] : chr;
  424|       |#else
  425|       |  list[3] = fcc[chr];
  426|       |#endif
  427|       |
  428|       |  /* The othercase might be the same value. */
  429|       |
  430|    989|  if (chr == list[3])
  ------------------
  |  Branch (430:7): [True: 612, False: 377]
  ------------------
  431|    612|    list[3] = NOTACHAR;
  ------------------
  |  |  223|    612|#define NOTACHAR 0xffffffff
  ------------------
  432|    377|  else
  433|    377|    list[4] = NOTACHAR;
  ------------------
  |  |  223|    377|#define NOTACHAR 0xffffffff
  ------------------
  434|    989|  return code;
  435|       |
  436|      0|#ifdef SUPPORT_UNICODE
  437|     53|  case OP_PROP:
  ------------------
  |  Branch (437:3): [True: 53, False: 2.44k]
  ------------------
  438|    137|  case OP_NOTPROP:
  ------------------
  |  Branch (438:3): [True: 84, False: 2.41k]
  ------------------
  439|    137|  if (code[0] != PT_CLIST)
  ------------------
  |  | 1303|    137|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (439:7): [True: 131, False: 6]
  ------------------
  440|    131|    {
  441|    131|    list[2] = code[0];
  442|    131|    list[3] = code[1];
  443|    131|    return code + 2;
  444|    131|    }
  445|       |
  446|       |  /* Convert only if we have enough space. */
  447|       |
  448|      6|  clist_src = PRIV(ucd_caseless_sets) + code[1];
  ------------------
  |  |  195|      6|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      6|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      6|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      6|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      6|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  449|      6|  clist_dest = list + 2;
  450|      6|  code += 2;
  451|       |
  452|     24|  do {
  453|     24|     if (clist_dest >= list + 8)
  ------------------
  |  Branch (453:10): [True: 0, False: 24]
  ------------------
  454|      0|       {
  455|       |       /* Early return if there is not enough space. This should never
  456|       |       happen, since all clists are shorter than 5 character now. */
  457|      0|       list[2] = code[0];
  458|      0|       list[3] = code[1];
  459|      0|       return code;
  460|      0|       }
  461|     24|     *clist_dest++ = *clist_src;
  462|     24|     }
  463|     24|  while(*clist_src++ != NOTACHAR);
  ------------------
  |  |  223|     24|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (463:9): [True: 18, False: 6]
  ------------------
  464|       |
  465|       |  /* All characters are stored. The terminating NOTACHAR is copied from the
  466|       |  clist itself. */
  467|       |
  468|      6|  list[0] = (c == OP_PROP) ? OP_CHAR : OP_NOT;
  ------------------
  |  Branch (468:13): [True: 0, False: 6]
  ------------------
  469|      6|  return code;
  470|      0|#endif
  471|       |
  472|     29|  case OP_NCLASS:
  ------------------
  |  Branch (472:3): [True: 29, False: 2.47k]
  ------------------
  473|     76|  case OP_CLASS:
  ------------------
  |  Branch (473:3): [True: 47, False: 2.45k]
  ------------------
  474|     76|#ifdef SUPPORT_WIDE_CHARS
  475|     91|  case OP_XCLASS:
  ------------------
  |  Branch (475:3): [True: 15, False: 2.48k]
  ------------------
  476|     91|  if (c == OP_XCLASS)
  ------------------
  |  Branch (476:7): [True: 15, False: 76]
  ------------------
  477|     15|    end = code + GET(code, 0) - 1;
  ------------------
  |  |  109|     15|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  478|     76|  else
  479|     76|#endif
  480|     76|    end = code + 32 / sizeof(PCRE2_UCHAR);
  481|       |
  482|     91|  switch(*end)
  ------------------
  |  Branch (482:10): [True: 82, False: 9]
  ------------------
  483|     91|    {
  484|     13|    case OP_CRSTAR:
  ------------------
  |  Branch (484:5): [True: 13, False: 78]
  ------------------
  485|     28|    case OP_CRMINSTAR:
  ------------------
  |  Branch (485:5): [True: 15, False: 76]
  ------------------
  486|     42|    case OP_CRQUERY:
  ------------------
  |  Branch (486:5): [True: 14, False: 77]
  ------------------
  487|     55|    case OP_CRMINQUERY:
  ------------------
  |  Branch (487:5): [True: 13, False: 78]
  ------------------
  488|     55|    case OP_CRPOSSTAR:
  ------------------
  |  Branch (488:5): [True: 0, False: 91]
  ------------------
  489|     59|    case OP_CRPOSQUERY:
  ------------------
  |  Branch (489:5): [True: 4, False: 87]
  ------------------
  490|     59|    list[1] = TRUE;
  ------------------
  |  |   88|     59|#define TRUE    1
  ------------------
  491|     59|    end++;
  492|     59|    break;
  493|       |
  494|      4|    case OP_CRPLUS:
  ------------------
  |  Branch (494:5): [True: 4, False: 87]
  ------------------
  495|     23|    case OP_CRMINPLUS:
  ------------------
  |  Branch (495:5): [True: 19, False: 72]
  ------------------
  496|     23|    case OP_CRPOSPLUS:
  ------------------
  |  Branch (496:5): [True: 0, False: 91]
  ------------------
  497|     23|    end++;
  498|     23|    break;
  499|       |
  500|      0|    case OP_CRRANGE:
  ------------------
  |  Branch (500:5): [True: 0, False: 91]
  ------------------
  501|      0|    case OP_CRMINRANGE:
  ------------------
  |  Branch (501:5): [True: 0, False: 91]
  ------------------
  502|      0|    case OP_CRPOSRANGE:
  ------------------
  |  Branch (502:5): [True: 0, False: 91]
  ------------------
  503|      0|    list[1] = (GET2(end, 1) == 0);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  504|      0|    end += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  505|      0|    break;
  506|     91|    }
  507|     91|  list[2] = (uint32_t)(end - code);
  508|     91|  return end;
  509|  2.49k|  }
  510|       |
  511|     52|return NULL;    /* Opcode not accepted */
  512|  2.49k|}
pcre2_auto_possess.c:compare_opcodes:
  538|  1.21k|{
  539|  1.21k|PCRE2_UCHAR c;
  ------------------
  |  |  819|  1.21k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.21k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.21k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.21k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  540|  1.21k|uint32_t list[8];
  541|  1.21k|const uint32_t *chr_ptr;
  542|  1.21k|const uint32_t *ochr_ptr;
  543|  1.21k|const uint32_t *list_ptr;
  544|  1.21k|PCRE2_SPTR next_code;
  ------------------
  |  |  820|  1.21k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  1.21k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.21k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.21k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  545|  1.21k|#ifdef SUPPORT_WIDE_CHARS
  546|  1.21k|PCRE2_SPTR xclass_flags;
  ------------------
  |  |  820|  1.21k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  1.21k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.21k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.21k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  547|  1.21k|#endif
  548|  1.21k|const uint8_t *class_bitset;
  549|  1.21k|const uint8_t *set1, *set2, *set_end;
  550|  1.21k|uint32_t chr;
  551|  1.21k|BOOL accepted, invert_bits;
  552|  1.21k|BOOL entered_a_group = FALSE;
  ------------------
  |  |   87|  1.21k|#define FALSE   0
  ------------------
  553|       |
  554|  1.21k|if (--(*rec_limit) <= 0) return FALSE;  /* Recursion has gone too deep */
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (554:5): [True: 0, False: 1.21k]
  ------------------
  555|       |
  556|       |/* Note: the base_list[1] contains whether the current opcode has a greedy
  557|       |(represented by a non-zero value) quantifier. This is a different from
  558|       |other character type lists, which store here that the character iterator
  559|       |matches to an empty string (also represented by a non-zero value). */
  560|       |
  561|  1.21k|for(;;)
  562|  1.35k|  {
  563|  1.35k|  PCRE2_SPTR bracode;
  ------------------
  |  |  820|  1.35k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  1.35k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.35k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.35k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  564|       |
  565|       |  /* All operations move the code pointer forward.
  566|       |  Therefore infinite recursions are not possible. */
  567|       |
  568|  1.35k|  c = *code;
  569|       |
  570|       |  /* Skip over callouts */
  571|       |
  572|  1.35k|  if (c == OP_CALLOUT)
  ------------------
  |  Branch (572:7): [True: 0, False: 1.35k]
  ------------------
  573|      0|    {
  574|      0|    code += PRIV(OP_lengths)[c];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  575|      0|    continue;
  576|      0|    }
  577|       |
  578|  1.35k|  if (c == OP_CALLOUT_STR)
  ------------------
  |  Branch (578:7): [True: 0, False: 1.35k]
  ------------------
  579|      0|    {
  580|      0|    code += GET(code, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  581|      0|    continue;
  582|      0|    }
  583|       |
  584|       |  /* At the end of a branch, skip to the end of the group. */
  585|       |
  586|  1.35k|  if (c == OP_ALT)
  ------------------
  |  Branch (586:7): [True: 27, False: 1.33k]
  ------------------
  587|     27|    {
  588|     45|    do code += GET(code, 1); while (*code == OP_ALT);
  ------------------
  |  |  109|     45|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (588:37): [True: 18, False: 27]
  ------------------
  589|     27|    c = *code;
  590|     27|    }
  591|       |
  592|       |  /* Inspect the next opcode. */
  593|       |
  594|  1.35k|  switch(c)
  595|  1.35k|    {
  596|       |    /* We can always possessify a greedy iterator at the end of the pattern,
  597|       |    which is reached after skipping over the final OP_KET. A non-greedy
  598|       |    iterator must never be possessified. */
  599|       |
  600|     36|    case OP_END:
  ------------------
  |  Branch (600:5): [True: 36, False: 1.32k]
  ------------------
  601|     36|    return base_list[1] != 0;
  602|       |
  603|       |    /* When an iterator is at the end of certain kinds of group we can inspect
  604|       |    what follows the group by skipping over the closing ket. Note that this
  605|       |    does not apply to OP_KETRMAX or OP_KETRMIN because what follows any given
  606|       |    iteration is variable (could be another iteration or could be the next
  607|       |    item). As these two opcodes are not listed in the next switch, they will
  608|       |    end up as the next code to inspect, and return FALSE by virtue of being
  609|       |    unsupported. */
  610|       |
  611|     40|    case OP_KET:
  ------------------
  |  Branch (611:5): [True: 40, False: 1.31k]
  ------------------
  612|     40|    case OP_KETRPOS:
  ------------------
  |  Branch (612:5): [True: 0, False: 1.35k]
  ------------------
  613|       |    /* The non-greedy case cannot be converted to a possessive form. */
  614|       |
  615|     40|    if (base_list[1] == 0) return FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
  |  Branch (615:9): [True: 2, False: 38]
  ------------------
  616|       |
  617|       |    /* If the bracket is capturing it might be referenced by an OP_RECURSE
  618|       |    so its last iterator can never be possessified if the pattern contains
  619|       |    recursions. (This could be improved by keeping a list of group numbers that
  620|       |    are called by recursion.) */
  621|       |
  622|     38|    bracode = code - GET(code, 1);
  ------------------
  |  |  109|     38|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  623|     38|    switch(*bracode)
  ------------------
  |  Branch (623:12): [True: 2, False: 36]
  ------------------
  624|     38|      {
  625|      2|      case OP_CBRA:
  ------------------
  |  Branch (625:7): [True: 2, False: 36]
  ------------------
  626|      2|      case OP_SCBRA:
  ------------------
  |  Branch (626:7): [True: 0, False: 38]
  ------------------
  627|      2|      case OP_CBRAPOS:
  ------------------
  |  Branch (627:7): [True: 0, False: 38]
  ------------------
  628|      2|      case OP_SCBRAPOS:
  ------------------
  |  Branch (628:7): [True: 0, False: 38]
  ------------------
  629|      2|      if (cb->had_recurse) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (629:11): [True: 0, False: 2]
  ------------------
  630|      2|      break;
  631|       |
  632|       |      /* A script run might have to backtrack if the iterated item can match
  633|       |      characters from more than one script. So give up unless repeating an
  634|       |      explicit character. */
  635|       |
  636|      2|      case OP_SCRIPT_RUN:
  ------------------
  |  Branch (636:7): [True: 0, False: 38]
  ------------------
  637|      0|      if (base_list[0] != OP_CHAR && base_list[0] != OP_CHARI)
  ------------------
  |  Branch (637:11): [True: 0, False: 0]
  |  Branch (637:38): [True: 0, False: 0]
  ------------------
  638|      0|        return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  639|      0|      break;
  640|       |
  641|       |      /* Atomic sub-patterns and assertions can always auto-possessify their
  642|       |      last iterator except for variable length lookbehinds. However, if the
  643|       |      group was entered as a result of checking a previous iterator, this is
  644|       |      not possible. */
  645|       |
  646|      0|      case OP_ASSERT:
  ------------------
  |  Branch (646:7): [True: 0, False: 38]
  ------------------
  647|      0|      case OP_ASSERT_NOT:
  ------------------
  |  Branch (647:7): [True: 0, False: 38]
  ------------------
  648|      0|      case OP_ONCE:
  ------------------
  |  Branch (648:7): [True: 0, False: 38]
  ------------------
  649|      0|      return !entered_a_group;
  650|       |
  651|      0|      case OP_ASSERTBACK:
  ------------------
  |  Branch (651:7): [True: 0, False: 38]
  ------------------
  652|      0|      case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (652:7): [True: 0, False: 38]
  ------------------
  653|      0|      return (bracode[1+LINK_SIZE] == OP_VREVERSE)? FALSE : !entered_a_group;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    return (bracode[1+LINK_SIZE] == OP_VREVERSE)? FALSE : !entered_a_group;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (653:14): [True: 0, False: 0]
  ------------------
  654|       |
  655|       |      /* Non-atomic assertions - don't possessify last iterator. This needs
  656|       |      more thought. */
  657|       |
  658|      0|      case OP_ASSERT_NA:
  ------------------
  |  Branch (658:7): [True: 0, False: 38]
  ------------------
  659|      0|      case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (659:7): [True: 0, False: 38]
  ------------------
  660|      0|      return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  661|     38|      }
  662|       |
  663|       |    /* Skip over the bracket and inspect what comes next. */
  664|       |
  665|     38|    code += PRIV(OP_lengths)[c];
  ------------------
  |  |  195|     38|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|     38|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     38|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     38|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     38|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  666|     38|    continue;
  667|       |
  668|       |    /* Handle cases where the next item is a group. */
  669|       |
  670|      0|    case OP_ONCE:
  ------------------
  |  Branch (670:5): [True: 0, False: 1.35k]
  ------------------
  671|      0|    case OP_BRA:
  ------------------
  |  Branch (671:5): [True: 0, False: 1.35k]
  ------------------
  672|      2|    case OP_CBRA:
  ------------------
  |  Branch (672:5): [True: 2, False: 1.35k]
  ------------------
  673|      2|    next_code = code + GET(code, 1);
  ------------------
  |  |  109|      2|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  674|      2|    code += PRIV(OP_lengths)[c];
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      2|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  675|       |
  676|       |    /* Check each branch. We have to recurse a level for all but the last
  677|       |    branch. */
  678|       |
  679|      3|    while (*next_code == OP_ALT)
  ------------------
  |  Branch (679:12): [True: 1, False: 2]
  ------------------
  680|      1|      {
  681|      1|      if (!compare_opcodes(code, utf, ucp, cb, base_list, base_end, rec_limit))
  ------------------
  |  Branch (681:11): [True: 0, False: 1]
  ------------------
  682|      0|        return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  683|      1|      code = next_code + 1 + LINK_SIZE;
  ------------------
  |  |   98|      1|#define LINK_SIZE 2
  ------------------
  684|      1|      next_code += GET(next_code, 1);
  ------------------
  |  |  109|      1|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  685|      1|      }
  686|       |
  687|      2|    entered_a_group = TRUE;
  ------------------
  |  |   88|      2|#define TRUE    1
  ------------------
  688|      2|    continue;
  689|       |
  690|      1|    case OP_BRAZERO:
  ------------------
  |  Branch (690:5): [True: 1, False: 1.35k]
  ------------------
  691|      1|    case OP_BRAMINZERO:
  ------------------
  |  Branch (691:5): [True: 0, False: 1.35k]
  ------------------
  692|       |
  693|      1|    next_code = code + 1;
  694|      1|    if (*next_code != OP_BRA && *next_code != OP_CBRA &&
  ------------------
  |  Branch (694:9): [True: 1, False: 0]
  |  Branch (694:33): [True: 0, False: 1]
  ------------------
  695|      0|        *next_code != OP_ONCE) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (695:9): [True: 0, False: 0]
  ------------------
  696|       |
  697|      2|    do next_code += GET(next_code, 1); while (*next_code == OP_ALT);
  ------------------
  |  |  109|      2|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (697:47): [True: 1, False: 1]
  ------------------
  698|       |
  699|       |    /* The bracket content will be checked by the OP_BRA/OP_CBRA case above. */
  700|       |
  701|      1|    next_code += 1 + LINK_SIZE;
  ------------------
  |  |   98|      1|#define LINK_SIZE 2
  ------------------
  702|      1|    if (!compare_opcodes(next_code, utf, ucp, cb, base_list, base_end,
  ------------------
  |  Branch (702:9): [True: 0, False: 1]
  ------------------
  703|      1|         rec_limit))
  704|      0|      return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  705|       |
  706|      1|    code += PRIV(OP_lengths)[c];
  ------------------
  |  |  195|      1|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      1|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      1|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      1|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  707|      1|    continue;
  708|       |
  709|       |    /* The next opcode does not need special handling; fall through and use it
  710|       |    to see if the base can be possessified. */
  711|       |
  712|  1.27k|    default:
  ------------------
  |  Branch (712:5): [True: 1.27k, False: 79]
  ------------------
  713|  1.27k|    break;
  714|  1.35k|    }
  715|       |
  716|       |  /* We now have the next appropriate opcode to compare with the base. Check
  717|       |  for a supported opcode, and load its properties. */
  718|       |
  719|  1.27k|  code = get_chr_property_list(code, utf, ucp, cb->fcc, list);
  720|  1.27k|  if (code == NULL) return FALSE;    /* Unsupported */
  ------------------
  |  |   87|     48|#define FALSE   0
  ------------------
  |  Branch (720:7): [True: 48, False: 1.23k]
  ------------------
  721|       |
  722|       |  /* If either opcode is a small character list, set pointers for comparing
  723|       |  characters from that list with another list, or with a property. */
  724|       |
  725|  1.23k|  if (base_list[0] == OP_CHAR)
  ------------------
  |  Branch (725:7): [True: 747, False: 484]
  ------------------
  726|    747|    {
  727|    747|    chr_ptr = base_list + 2;
  728|    747|    list_ptr = list;
  729|    747|    }
  730|    484|  else if (list[0] == OP_CHAR)
  ------------------
  |  Branch (730:12): [True: 266, False: 218]
  ------------------
  731|    266|    {
  732|    266|    chr_ptr = list + 2;
  733|    266|    list_ptr = base_list;
  734|    266|    }
  735|       |
  736|       |  /* Character bitsets can also be compared to certain opcodes. */
  737|       |
  738|    218|  else if (base_list[0] == OP_CLASS || list[0] == OP_CLASS
  ------------------
  |  Branch (738:12): [True: 7, False: 211]
  |  Branch (738:40): [True: 0, False: 211]
  ------------------
  739|    211|#if PCRE2_CODE_UNIT_WIDTH == 8
  740|       |      /* In 8 bit, non-UTF mode, OP_CLASS and OP_NCLASS are the same. */
  741|    211|      || (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS))
  ------------------
  |  Branch (741:11): [True: 82, False: 129]
  |  Branch (741:20): [True: 1, False: 81]
  |  Branch (741:49): [True: 0, False: 81]
  ------------------
  742|    218|#endif
  743|    218|      )
  744|      8|    {
  745|      8|#if PCRE2_CODE_UNIT_WIDTH == 8
  746|      8|    if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS))
  ------------------
  |  Branch (746:9): [True: 7, False: 1]
  |  Branch (746:38): [True: 1, False: 0]
  |  Branch (746:46): [True: 1, False: 0]
  ------------------
  747|       |#else
  748|       |    if (base_list[0] == OP_CLASS)
  749|       |#endif
  750|      8|      {
  751|      8|      set1 = (uint8_t *)(base_end - base_list[2]);
  752|      8|      list_ptr = list;
  753|      8|      }
  754|      0|    else
  755|      0|      {
  756|      0|      set1 = (uint8_t *)(code - list[2]);
  757|      0|      list_ptr = base_list;
  758|      0|      }
  759|       |
  760|      8|    invert_bits = FALSE;
  ------------------
  |  |   87|      8|#define FALSE   0
  ------------------
  761|      8|    switch(list_ptr[0])
  762|      8|      {
  763|      2|      case OP_CLASS:
  ------------------
  |  Branch (763:7): [True: 2, False: 6]
  ------------------
  764|      2|      case OP_NCLASS:
  ------------------
  |  Branch (764:7): [True: 0, False: 8]
  ------------------
  765|      2|      set2 = (uint8_t *)
  766|      2|        ((list_ptr == list ? code : base_end) - list_ptr[2]);
  ------------------
  |  Branch (766:11): [True: 2, False: 0]
  ------------------
  767|      2|      break;
  768|       |
  769|      0|#ifdef SUPPORT_WIDE_CHARS
  770|      0|      case OP_XCLASS:
  ------------------
  |  Branch (770:7): [True: 0, False: 8]
  ------------------
  771|      0|      xclass_flags = (list_ptr == list ? code : base_end) - list_ptr[2] + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (771:23): [True: 0, False: 0]
  ------------------
  772|      0|      if ((*xclass_flags & XCL_HASPROP) != 0) return FALSE;
  ------------------
  |  | 1330|      0|#define XCL_HASPROP  0x04  /* Flag: property checks are present. */
  ------------------
                    if ((*xclass_flags & XCL_HASPROP) != 0) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (772:11): [True: 0, False: 0]
  ------------------
  773|      0|      if ((*xclass_flags & XCL_MAP) == 0)
  ------------------
  |  | 1329|      0|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
  |  Branch (773:11): [True: 0, False: 0]
  ------------------
  774|      0|        {
  775|       |        /* No bits are set for characters < 256. */
  776|      0|        if (list[1] == 0) return (*xclass_flags & XCL_NOT) == 0;
  ------------------
  |  | 1328|      0|#define XCL_NOT      0x01  /* Flag: this is a negative class */
  ------------------
  |  Branch (776:13): [True: 0, False: 0]
  ------------------
  777|       |        /* Might be an empty repeat. */
  778|      0|        continue;
  779|      0|        }
  780|      0|      set2 = (uint8_t *)(xclass_flags + 1);
  781|      0|      break;
  782|      0|#endif
  783|       |
  784|      0|      case OP_NOT_DIGIT:
  ------------------
  |  Branch (784:7): [True: 0, False: 8]
  ------------------
  785|      0|      invert_bits = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  786|       |      /* Fall through */
  787|      1|      case OP_DIGIT:
  ------------------
  |  Branch (787:7): [True: 1, False: 7]
  ------------------
  788|      1|      set2 = (uint8_t *)(cb->cbits + cbit_digit);
  ------------------
  |  |  583|      1|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
  789|      1|      break;
  790|       |
  791|      0|      case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (791:7): [True: 0, False: 8]
  ------------------
  792|      0|      invert_bits = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  793|       |      /* Fall through */
  794|      0|      case OP_WHITESPACE:
  ------------------
  |  Branch (794:7): [True: 0, False: 8]
  ------------------
  795|      0|      set2 = (uint8_t *)(cb->cbits + cbit_space);
  ------------------
  |  |  581|      0|#define cbit_space     0      /* [:space:] or \s */
  ------------------
  796|      0|      break;
  797|       |
  798|      0|      case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (798:7): [True: 0, False: 8]
  ------------------
  799|      0|      invert_bits = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  800|       |      /* Fall through */
  801|      0|      case OP_WORDCHAR:
  ------------------
  |  Branch (801:7): [True: 0, False: 8]
  ------------------
  802|      0|      set2 = (uint8_t *)(cb->cbits + cbit_word);
  ------------------
  |  |  586|      0|#define cbit_word    160      /* [:word:] or \w */
  ------------------
  803|      0|      break;
  804|       |
  805|      5|      default:
  ------------------
  |  Branch (805:7): [True: 5, False: 3]
  ------------------
  806|      5|      return FALSE;
  ------------------
  |  |   87|      5|#define FALSE   0
  ------------------
  807|      8|      }
  808|       |
  809|       |    /* Because the bit sets are unaligned bytes, we need to perform byte
  810|       |    comparison here. */
  811|       |
  812|      3|    set_end = set1 + 32;
  813|      3|    if (invert_bits)
  ------------------
  |  Branch (813:9): [True: 0, False: 3]
  ------------------
  814|      0|      {
  815|      0|      do
  816|      0|        {
  817|      0|        if ((*set1++ & ~(*set2++)) != 0) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (817:13): [True: 0, False: 0]
  ------------------
  818|      0|        }
  819|      0|      while (set1 < set_end);
  ------------------
  |  Branch (819:14): [True: 0, False: 0]
  ------------------
  820|      0|      }
  821|      3|    else
  822|      3|      {
  823|      3|      do
  824|     11|        {
  825|     11|        if ((*set1++ & *set2++) != 0) return FALSE;
  ------------------
  |  |   87|      3|#define FALSE   0
  ------------------
  |  Branch (825:13): [True: 3, False: 8]
  ------------------
  826|     11|        }
  827|      8|      while (set1 < set_end);
  ------------------
  |  Branch (827:14): [True: 8, False: 0]
  ------------------
  828|      3|      }
  829|       |
  830|      0|    if (list[1] == 0) return TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  |  Branch (830:9): [True: 0, False: 0]
  ------------------
  831|       |    /* Might be an empty repeat. */
  832|      0|    continue;
  833|      0|    }
  834|       |
  835|       |  /* Some property combinations also acceptable. Unicode property opcodes are
  836|       |  processed specially; the rest can be handled with a lookup table. */
  837|       |
  838|    210|  else
  839|    210|    {
  840|    210|    uint32_t leftop, rightop;
  841|       |
  842|    210|    leftop = base_list[0];
  843|    210|    rightop = list[0];
  844|       |
  845|    210|#ifdef SUPPORT_UNICODE
  846|    210|    accepted = FALSE; /* Always set in non-unicode case. */
  ------------------
  |  |   87|    210|#define FALSE   0
  ------------------
  847|    210|    if (leftop == OP_PROP || leftop == OP_NOTPROP)
  ------------------
  |  Branch (847:9): [True: 8, False: 202]
  |  Branch (847:30): [True: 25, False: 177]
  ------------------
  848|     33|      {
  849|     33|      if (rightop == OP_EOD)
  ------------------
  |  Branch (849:11): [True: 0, False: 33]
  ------------------
  850|      0|        accepted = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  851|     33|      else if (rightop == OP_PROP || rightop == OP_NOTPROP)
  ------------------
  |  Branch (851:16): [True: 1, False: 32]
  |  Branch (851:38): [True: 7, False: 25]
  ------------------
  852|      8|        {
  853|      8|        int n;
  854|      8|        const uint8_t *p;
  855|      8|        BOOL same = leftop == rightop;
  856|      8|        BOOL lisprop = leftop == OP_PROP;
  857|      8|        BOOL risprop = rightop == OP_PROP;
  858|      8|        BOOL bothprop = lisprop && risprop;
  ------------------
  |  Branch (858:25): [True: 3, False: 5]
  |  Branch (858:36): [True: 1, False: 2]
  ------------------
  859|       |
  860|       |        /* There's a table that specifies how each combination is to be
  861|       |        processed:
  862|       |          0   Always return FALSE (never auto-possessify)
  863|       |          1   Character groups are distinct (possessify if both are OP_PROP)
  864|       |          2   Check character categories in the same group (general or particular)
  865|       |          3   Return TRUE if the two opcodes are not the same
  866|       |          ... see comments below
  867|       |        */
  868|       |
  869|      8|        n = propposstab[base_list[2]][list[2]];
  870|      8|        switch(n)
  ------------------
  |  Branch (870:16): [True: 8, False: 0]
  ------------------
  871|      8|          {
  872|      0|          case 0: break;
  ------------------
  |  Branch (872:11): [True: 0, False: 8]
  ------------------
  873|      1|          case 1: accepted = bothprop; break;
  ------------------
  |  Branch (873:11): [True: 1, False: 7]
  ------------------
  874|      1|          case 2: accepted = (base_list[3] == list[3]) != same; break;
  ------------------
  |  Branch (874:11): [True: 1, False: 7]
  ------------------
  875|      6|          case 3: accepted = !same; break;
  ------------------
  |  Branch (875:11): [True: 6, False: 2]
  ------------------
  876|       |
  877|      0|          case 4:  /* Left general category, right particular category */
  ------------------
  |  Branch (877:11): [True: 0, False: 8]
  ------------------
  878|      0|          accepted = risprop && catposstab[base_list[3]][list[3]] == same;
  ------------------
  |  Branch (878:22): [True: 0, False: 0]
  |  Branch (878:33): [True: 0, False: 0]
  ------------------
  879|      0|          break;
  880|       |
  881|      0|          case 5:  /* Right general category, left particular category */
  ------------------
  |  Branch (881:11): [True: 0, False: 8]
  ------------------
  882|      0|          accepted = lisprop && catposstab[list[3]][base_list[3]] == same;
  ------------------
  |  Branch (882:22): [True: 0, False: 0]
  |  Branch (882:33): [True: 0, False: 0]
  ------------------
  883|      0|          break;
  884|       |
  885|       |          /* This code is logically tricky. Think hard before fiddling with it.
  886|       |          The posspropstab table has four entries per row. Each row relates to
  887|       |          one of PCRE's special properties such as ALNUM or SPACE or WORD.
  888|       |          Only WORD actually needs all four entries, but using repeats for the
  889|       |          others means they can all use the same code below.
  890|       |
  891|       |          The first two entries in each row are Unicode general categories, and
  892|       |          apply always, because all the characters they include are part of the
  893|       |          PCRE character set. The third and fourth entries are a general and a
  894|       |          particular category, respectively, that include one or more relevant
  895|       |          characters. One or the other is used, depending on whether the check
  896|       |          is for a general or a particular category. However, in both cases the
  897|       |          category contains more characters than the specials that are defined
  898|       |          for the property being tested against. Therefore, it cannot be used
  899|       |          in a NOTPROP case.
  900|       |
  901|       |          Example: the row for WORD contains ucp_L, ucp_N, ucp_P, ucp_Po.
  902|       |          Underscore is covered by ucp_P or ucp_Po. */
  903|       |
  904|      0|          case 6:  /* Left alphanum vs right general category */
  ------------------
  |  Branch (904:11): [True: 0, False: 8]
  ------------------
  905|      0|          case 7:  /* Left space vs right general category */
  ------------------
  |  Branch (905:11): [True: 0, False: 8]
  ------------------
  906|      0|          case 8:  /* Left word vs right general category */
  ------------------
  |  Branch (906:11): [True: 0, False: 8]
  ------------------
  907|      0|          p = posspropstab[n-6];
  908|      0|          accepted = risprop && lisprop ==
  ------------------
  |  Branch (908:22): [True: 0, False: 0]
  |  Branch (908:33): [True: 0, False: 0]
  ------------------
  909|      0|            (list[3] != p[0] &&
  ------------------
  |  Branch (909:14): [True: 0, False: 0]
  ------------------
  910|      0|             list[3] != p[1] &&
  ------------------
  |  Branch (910:14): [True: 0, False: 0]
  ------------------
  911|      0|            (list[3] != p[2] || !lisprop));
  ------------------
  |  Branch (911:14): [True: 0, False: 0]
  |  Branch (911:33): [True: 0, False: 0]
  ------------------
  912|      0|          break;
  913|       |
  914|      0|          case 9:   /* Right alphanum vs left general category */
  ------------------
  |  Branch (914:11): [True: 0, False: 8]
  ------------------
  915|      0|          case 10:  /* Right space vs left general category */
  ------------------
  |  Branch (915:11): [True: 0, False: 8]
  ------------------
  916|      0|          case 11:  /* Right word vs left general category */
  ------------------
  |  Branch (916:11): [True: 0, False: 8]
  ------------------
  917|      0|          p = posspropstab[n-9];
  918|      0|          accepted = lisprop && risprop ==
  ------------------
  |  Branch (918:22): [True: 0, False: 0]
  |  Branch (918:33): [True: 0, False: 0]
  ------------------
  919|      0|            (base_list[3] != p[0] &&
  ------------------
  |  Branch (919:14): [True: 0, False: 0]
  ------------------
  920|      0|             base_list[3] != p[1] &&
  ------------------
  |  Branch (920:14): [True: 0, False: 0]
  ------------------
  921|      0|            (base_list[3] != p[2] || !risprop));
  ------------------
  |  Branch (921:14): [True: 0, False: 0]
  |  Branch (921:38): [True: 0, False: 0]
  ------------------
  922|      0|          break;
  923|       |
  924|      0|          case 12:  /* Left alphanum vs right particular category */
  ------------------
  |  Branch (924:11): [True: 0, False: 8]
  ------------------
  925|      0|          case 13:  /* Left space vs right particular category */
  ------------------
  |  Branch (925:11): [True: 0, False: 8]
  ------------------
  926|      0|          case 14:  /* Left word vs right particular category */
  ------------------
  |  Branch (926:11): [True: 0, False: 8]
  ------------------
  927|      0|          p = posspropstab[n-12];
  928|      0|          accepted = risprop && lisprop ==
  ------------------
  |  Branch (928:22): [True: 0, False: 0]
  |  Branch (928:33): [True: 0, False: 0]
  ------------------
  929|      0|            (catposstab[p[0]][list[3]] &&
  ------------------
  |  Branch (929:14): [True: 0, False: 0]
  ------------------
  930|      0|             catposstab[p[1]][list[3]] &&
  ------------------
  |  Branch (930:14): [True: 0, False: 0]
  ------------------
  931|      0|            (list[3] != p[3] || !lisprop));
  ------------------
  |  Branch (931:14): [True: 0, False: 0]
  |  Branch (931:33): [True: 0, False: 0]
  ------------------
  932|      0|          break;
  933|       |
  934|      0|          case 15:  /* Right alphanum vs left particular category */
  ------------------
  |  Branch (934:11): [True: 0, False: 8]
  ------------------
  935|      0|          case 16:  /* Right space vs left particular category */
  ------------------
  |  Branch (935:11): [True: 0, False: 8]
  ------------------
  936|      0|          case 17:  /* Right word vs left particular category */
  ------------------
  |  Branch (936:11): [True: 0, False: 8]
  ------------------
  937|      0|          p = posspropstab[n-15];
  938|      0|          accepted = lisprop && risprop ==
  ------------------
  |  Branch (938:22): [True: 0, False: 0]
  |  Branch (938:33): [True: 0, False: 0]
  ------------------
  939|      0|            (catposstab[p[0]][base_list[3]] &&
  ------------------
  |  Branch (939:14): [True: 0, False: 0]
  ------------------
  940|      0|             catposstab[p[1]][base_list[3]] &&
  ------------------
  |  Branch (940:14): [True: 0, False: 0]
  ------------------
  941|      0|            (base_list[3] != p[3] || !risprop));
  ------------------
  |  Branch (941:14): [True: 0, False: 0]
  |  Branch (941:38): [True: 0, False: 0]
  ------------------
  942|      0|          break;
  943|      8|          }
  944|      8|        }
  945|     33|      }
  946|       |
  947|    177|    else
  948|    177|#endif  /* SUPPORT_UNICODE */
  949|       |
  950|    177|    accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP &&
  ------------------
  |  | 1388|    354|#define FIRST_AUTOTAB_OP       OP_NOT_DIGIT
  ------------------
                  accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP &&
  ------------------
  |  | 1389|    354|#define LAST_AUTOTAB_LEFT_OP   OP_EXTUNI
  ------------------
  |  Branch (950:16): [True: 177, False: 0]
  |  Branch (950:46): [True: 167, False: 10]
  ------------------
  951|    167|           rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP &&
  ------------------
  |  | 1388|    344|#define FIRST_AUTOTAB_OP       OP_NOT_DIGIT
  ------------------
                         rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP &&
  ------------------
  |  | 1390|    344|#define LAST_AUTOTAB_RIGHT_OP  OP_DOLLM
  ------------------
  |  Branch (951:12): [True: 167, False: 0]
  |  Branch (951:43): [True: 166, False: 1]
  ------------------
  952|    166|           autoposstab[leftop - FIRST_AUTOTAB_OP][rightop - FIRST_AUTOTAB_OP];
  ------------------
  |  | 1388|    166|#define FIRST_AUTOTAB_OP       OP_NOT_DIGIT
  ------------------
                         autoposstab[leftop - FIRST_AUTOTAB_OP][rightop - FIRST_AUTOTAB_OP];
  ------------------
  |  | 1388|    166|#define FIRST_AUTOTAB_OP       OP_NOT_DIGIT
  ------------------
  |  Branch (952:12): [True: 15, False: 151]
  ------------------
  953|       |
  954|    210|    if (!accepted) return FALSE;
  ------------------
  |  |   87|    194|#define FALSE   0
  ------------------
  |  Branch (954:9): [True: 194, False: 16]
  ------------------
  955|       |
  956|     16|    if (list[1] == 0) return TRUE;
  ------------------
  |  |   88|     10|#define TRUE    1
  ------------------
  |  Branch (956:9): [True: 10, False: 6]
  ------------------
  957|       |    /* Might be an empty repeat. */
  958|      6|    continue;
  959|     16|    }
  960|       |
  961|       |  /* Control reaches here only if one of the items is a small character list.
  962|       |  All characters are checked against the other side. */
  963|       |
  964|  1.01k|  do
  965|  1.15k|    {
  966|  1.15k|    chr = *chr_ptr;
  967|       |
  968|  1.15k|    switch(list_ptr[0])
  969|  1.15k|      {
  970|    683|      case OP_CHAR:
  ------------------
  |  Branch (970:7): [True: 683, False: 473]
  ------------------
  971|    683|      ochr_ptr = list_ptr + 2;
  972|    683|      do
  973|    927|        {
  974|    927|        if (chr == *ochr_ptr) return FALSE;
  ------------------
  |  |   87|     24|#define FALSE   0
  ------------------
  |  Branch (974:13): [True: 24, False: 903]
  ------------------
  975|    903|        ochr_ptr++;
  976|    903|        }
  977|    903|      while(*ochr_ptr != NOTACHAR);
  ------------------
  |  |  223|    903|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (977:13): [True: 244, False: 659]
  ------------------
  978|    659|      break;
  979|       |
  980|    659|      case OP_NOT:
  ------------------
  |  Branch (980:7): [True: 19, False: 1.13k]
  ------------------
  981|     19|      ochr_ptr = list_ptr + 2;
  982|     19|      do
  983|     35|        {
  984|     35|        if (chr == *ochr_ptr)
  ------------------
  |  Branch (984:13): [True: 0, False: 35]
  ------------------
  985|      0|          break;
  986|     35|        ochr_ptr++;
  987|     35|        }
  988|     35|      while(*ochr_ptr != NOTACHAR);
  ------------------
  |  |  223|     35|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (988:13): [True: 16, False: 19]
  ------------------
  989|     19|      if (*ochr_ptr == NOTACHAR) return FALSE;   /* Not found */
  ------------------
  |  |  223|     19|#define NOTACHAR 0xffffffff
  ------------------
                    if (*ochr_ptr == NOTACHAR) return FALSE;   /* Not found */
  ------------------
  |  |   87|     19|#define FALSE   0
  ------------------
  |  Branch (989:11): [True: 19, False: 0]
  ------------------
  990|      0|      break;
  991|       |
  992|       |      /* Note that OP_DIGIT etc. are generated only when PCRE2_UCP is *not*
  993|       |      set. When it is set, \d etc. are converted into OP_(NOT_)PROP codes. */
  994|       |
  995|     16|      case OP_DIGIT:
  ------------------
  |  Branch (995:7): [True: 16, False: 1.14k]
  ------------------
  996|     16|      if (chr < 256 && (cb->ctypes[chr] & ctype_digit) != 0) return FALSE;
  ------------------
  |  |  600|     16|#define ctype_digit    0x08
  ------------------
                    if (chr < 256 && (cb->ctypes[chr] & ctype_digit) != 0) return FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
  |  Branch (996:11): [True: 16, False: 0]
  |  Branch (996:24): [True: 2, False: 14]
  ------------------
  997|     14|      break;
  998|       |
  999|     14|      case OP_NOT_DIGIT:
  ------------------
  |  Branch (999:7): [True: 6, False: 1.15k]
  ------------------
 1000|      6|      if (chr > 255 || (cb->ctypes[chr] & ctype_digit) == 0) return FALSE;
  ------------------
  |  |  600|      6|#define ctype_digit    0x08
  ------------------
                    if (chr > 255 || (cb->ctypes[chr] & ctype_digit) == 0) return FALSE;
  ------------------
  |  |   87|      6|#define FALSE   0
  ------------------
  |  Branch (1000:11): [True: 0, False: 6]
  |  Branch (1000:24): [True: 6, False: 0]
  ------------------
 1001|      0|      break;
 1002|       |
 1003|      3|      case OP_WHITESPACE:
  ------------------
  |  Branch (1003:7): [True: 3, False: 1.15k]
  ------------------
 1004|      3|      if (chr < 256 && (cb->ctypes[chr] & ctype_space) != 0) return FALSE;
  ------------------
  |  |  597|      3|#define ctype_space    0x01
  ------------------
                    if (chr < 256 && (cb->ctypes[chr] & ctype_space) != 0) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (1004:11): [True: 3, False: 0]
  |  Branch (1004:24): [True: 0, False: 3]
  ------------------
 1005|      3|      break;
 1006|       |
 1007|      3|      case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (1007:7): [True: 1, False: 1.15k]
  ------------------
 1008|      1|      if (chr > 255 || (cb->ctypes[chr] & ctype_space) == 0) return FALSE;
  ------------------
  |  |  597|      1|#define ctype_space    0x01
  ------------------
                    if (chr > 255 || (cb->ctypes[chr] & ctype_space) == 0) return FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
  |  Branch (1008:11): [True: 0, False: 1]
  |  Branch (1008:24): [True: 1, False: 0]
  ------------------
 1009|      0|      break;
 1010|       |
 1011|     30|      case OP_WORDCHAR:
  ------------------
  |  Branch (1011:7): [True: 30, False: 1.12k]
  ------------------
 1012|     30|      if (chr < 255 && (cb->ctypes[chr] & ctype_word) != 0) return FALSE;
  ------------------
  |  |  601|     28|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
                    if (chr < 255 && (cb->ctypes[chr] & ctype_word) != 0) return FALSE;
  ------------------
  |  |   87|      8|#define FALSE   0
  ------------------
  |  Branch (1012:11): [True: 28, False: 2]
  |  Branch (1012:24): [True: 8, False: 20]
  ------------------
 1013|     22|      break;
 1014|       |
 1015|     22|      case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (1015:7): [True: 1, False: 1.15k]
  ------------------
 1016|      1|      if (chr > 255 || (cb->ctypes[chr] & ctype_word) == 0) return FALSE;
  ------------------
  |  |  601|      1|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
                    if (chr > 255 || (cb->ctypes[chr] & ctype_word) == 0) return FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
  |  Branch (1016:11): [True: 0, False: 1]
  |  Branch (1016:24): [True: 1, False: 0]
  ------------------
 1017|      0|      break;
 1018|       |
 1019|      2|      case OP_HSPACE:
  ------------------
  |  Branch (1019:7): [True: 2, False: 1.15k]
  ------------------
 1020|      2|      switch(chr)
 1021|      2|        {
 1022|      0|        HSPACE_CASES: return FALSE;
  ------------------
  |  |  430|      0|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  426|      0|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  427|      0|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      0|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      0|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  408|      0|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  409|      0|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  410|      0|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  411|      0|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  412|      0|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  413|      0|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  414|      0|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  415|      0|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  416|      0|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  417|      0|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  418|      0|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  419|      0|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  420|      0|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  421|      0|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  422|      0|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
                      HSPACE_CASES: return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1023|      2|        default: break;
  ------------------
  |  Branch (1023:9): [True: 2, False: 0]
  ------------------
 1024|      2|        }
 1025|      2|      break;
 1026|       |
 1027|     29|      case OP_NOT_HSPACE:
  ------------------
  |  Branch (1027:7): [True: 29, False: 1.12k]
  ------------------
 1028|     29|      switch(chr)
 1029|     29|        {
 1030|      2|        HSPACE_CASES: break;
  ------------------
  |  |  430|      2|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      2|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      2|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 2, False: 27]
  |  |  |  |  ------------------
  |  |  |  |  426|      2|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      2|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  427|      2|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      2|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      2|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  408|      2|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  409|      2|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  410|      2|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  411|      2|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  412|      2|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  413|      2|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  414|      2|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  415|      2|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  416|      2|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  417|      2|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  418|      2|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  419|      2|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  420|      2|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  421|      2|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |  422|      2|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 1031|     27|        default: return FALSE;
  ------------------
  |  |   87|     27|#define FALSE   0
  ------------------
  |  Branch (1031:9): [True: 27, False: 2]
  ------------------
 1032|     29|        }
 1033|      2|      break;
 1034|       |
 1035|     39|      case OP_ANYNL:
  ------------------
  |  Branch (1035:7): [True: 39, False: 1.11k]
  ------------------
 1036|     39|      case OP_VSPACE:
  ------------------
  |  Branch (1036:7): [True: 0, False: 1.15k]
  ------------------
 1037|     39|      switch(chr)
 1038|     39|        {
 1039|      4|        VSPACE_CASES: return FALSE;
  ------------------
  |  |  448|      4|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      0|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 0, False: 39]
  |  |  |  |  ------------------
  |  |  |  |  442|      3|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      3|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 3, False: 36]
  |  |  |  |  ------------------
  |  |  |  |  443|      3|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      3|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 39]
  |  |  |  |  ------------------
  |  |  |  |  444|      4|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      4|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 1, False: 38]
  |  |  |  |  ------------------
  |  |  |  |  445|      4|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      4|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      4|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 39]
  |  |  |  |  ------------------
  |  |  |  |  438|      4|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
                      VSPACE_CASES: return FALSE;
  ------------------
  |  |   87|      4|#define FALSE   0
  ------------------
 1040|     35|        default: break;
  ------------------
  |  Branch (1040:9): [True: 35, False: 4]
  ------------------
 1041|     39|        }
 1042|     35|      break;
 1043|       |
 1044|     52|      case OP_NOT_VSPACE:
  ------------------
  |  Branch (1044:7): [True: 52, False: 1.10k]
  ------------------
 1045|     52|      switch(chr)
 1046|     52|        {
 1047|      4|        VSPACE_CASES: break;
  ------------------
  |  |  448|      4|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      0|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  |  442|      0|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  |  443|      4|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      4|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 4, False: 48]
  |  |  |  |  ------------------
  |  |  |  |  444|      4|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      4|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  |  445|      4|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      4|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      4|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  |  438|      4|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 1048|     48|        default: return FALSE;
  ------------------
  |  |   87|     48|#define FALSE   0
  ------------------
  |  Branch (1048:9): [True: 48, False: 4]
  ------------------
 1049|     52|        }
 1050|      4|      break;
 1051|       |
 1052|      4|      case OP_DOLL:
  ------------------
  |  Branch (1052:7): [True: 2, False: 1.15k]
  ------------------
 1053|      2|      case OP_EODN:
  ------------------
  |  Branch (1053:7): [True: 0, False: 1.15k]
  ------------------
 1054|      2|      switch (chr)
  ------------------
  |  Branch (1054:15): [True: 0, False: 2]
  ------------------
 1055|      2|        {
 1056|      0|        case CHAR_CR:
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (1056:9): [True: 0, False: 2]
  ------------------
 1057|      0|        case CHAR_LF:
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (1057:9): [True: 0, False: 2]
  ------------------
 1058|      0|        case CHAR_VT:
  ------------------
  |  |  988|      0|#define CHAR_VT                     '\013'
  ------------------
  |  Branch (1058:9): [True: 0, False: 2]
  ------------------
 1059|      0|        case CHAR_FF:
  ------------------
  |  |  989|      0|#define CHAR_FF                     '\014'
  ------------------
  |  Branch (1059:9): [True: 0, False: 2]
  ------------------
 1060|      0|        case CHAR_NEL:
  ------------------
  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (1060:9): [True: 0, False: 2]
  ------------------
 1061|      0|#ifndef EBCDIC
 1062|      0|        case 0x2028:
  ------------------
  |  Branch (1062:9): [True: 0, False: 2]
  ------------------
 1063|      0|        case 0x2029:
  ------------------
  |  Branch (1063:9): [True: 0, False: 2]
  ------------------
 1064|      0|#endif  /* Not EBCDIC */
 1065|      0|        return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1066|      2|        }
 1067|      2|      break;
 1068|       |
 1069|      3|      case OP_EOD:    /* Can always possessify before \z */
  ------------------
  |  Branch (1069:7): [True: 3, False: 1.15k]
  ------------------
 1070|      3|      break;
 1071|       |
 1072|      0|#ifdef SUPPORT_UNICODE
 1073|     41|      case OP_PROP:
  ------------------
  |  Branch (1073:7): [True: 41, False: 1.11k]
  ------------------
 1074|     61|      case OP_NOTPROP:
  ------------------
  |  Branch (1074:7): [True: 20, False: 1.13k]
  ------------------
 1075|     61|      if (!check_char_prop(chr, list_ptr[2], list_ptr[3],
  ------------------
  |  Branch (1075:11): [True: 32, False: 29]
  ------------------
 1076|     61|            list_ptr[0] == OP_NOTPROP))
 1077|     32|        return FALSE;
  ------------------
  |  |   87|     32|#define FALSE   0
  ------------------
 1078|     29|      break;
 1079|     29|#endif
 1080|       |
 1081|     29|      case OP_NCLASS:
  ------------------
  |  Branch (1081:7): [True: 26, False: 1.13k]
  ------------------
 1082|     26|      if (chr > 255) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (1082:11): [True: 0, False: 26]
  ------------------
 1083|       |      /* Fall through */
 1084|       |
 1085|     81|      case OP_CLASS:
  ------------------
  |  Branch (1085:7): [True: 55, False: 1.10k]
  ------------------
 1086|     81|      if (chr > 255) break;
  ------------------
  |  Branch (1086:11): [True: 0, False: 81]
  ------------------
 1087|     81|      class_bitset = (uint8_t *)
 1088|     81|        ((list_ptr == list ? code : base_end) - list_ptr[2]);
  ------------------
  |  Branch (1088:11): [True: 21, False: 60]
  ------------------
 1089|     81|      if ((class_bitset[chr >> 3] & (1u << (chr & 7))) != 0) return FALSE;
  ------------------
  |  |   87|     28|#define FALSE   0
  ------------------
  |  Branch (1089:11): [True: 28, False: 53]
  ------------------
 1090|     53|      break;
 1091|       |
 1092|     53|#ifdef SUPPORT_WIDE_CHARS
 1093|     53|      case OP_XCLASS:
  ------------------
  |  Branch (1093:7): [True: 12, False: 1.14k]
  ------------------
 1094|     12|      if (PRIV(xclass)(chr, (list_ptr == list ? code : base_end) -
  ------------------
  |  |  195|     12|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2041|     12|#define _pcre2_xclass                PCRE2_SUFFIX(_pcre2_xclass_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     12|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     12|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     12|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1094:11): [True: 6, False: 6]
  |  Branch (1094:30): [True: 1, False: 11]
  ------------------
 1095|     12|          list_ptr[2] + LINK_SIZE, utf)) return FALSE;
  ------------------
  |  |   98|     12|#define LINK_SIZE 2
  ------------------
                        list_ptr[2] + LINK_SIZE, utf)) return FALSE;
  ------------------
  |  |   87|      6|#define FALSE   0
  ------------------
 1096|      6|      break;
 1097|      6|#endif
 1098|       |
 1099|    116|      default:
  ------------------
  |  Branch (1099:7): [True: 116, False: 1.04k]
  ------------------
 1100|    116|      return FALSE;
  ------------------
  |  |   87|    116|#define FALSE   0
  ------------------
 1101|  1.15k|      }
 1102|       |
 1103|    834|    chr_ptr++;
 1104|    834|    }
 1105|  1.01k|  while(*chr_ptr != NOTACHAR);
  ------------------
  |  |  223|    834|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (1105:9): [True: 143, False: 691]
  ------------------
 1106|       |
 1107|       |  /* At least one character must be matched from this opcode. */
 1108|       |
 1109|    691|  if (list[1] == 0) return TRUE;
  ------------------
  |  |   88|    598|#define TRUE    1
  ------------------
  |  Branch (1109:7): [True: 598, False: 93]
  ------------------
 1110|    691|  }
 1111|       |
 1112|       |/* Control never reaches here. There used to be a fail-save return FALSE; here,
 1113|       |but some compilers complain about an unreachable statement. */
 1114|  1.21k|}
pcre2_auto_possess.c:check_char_prop:
  201|     61|{
  202|     61|BOOL ok;
  203|     61|const uint32_t *p;
  204|     61|const ucd_record *prop = GET_UCD(c);
  ------------------
  |  | 1873|     61|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|     61|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     61|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|     61|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|     61|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|     61|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     61|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|     61|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     61|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|     61|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|     61|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|     61|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     61|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     61|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|     61|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|     61|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|     61|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     61|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|     61|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|     61|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|     61|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|     61|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|       |
  206|     61|switch(ptype)
  ------------------
  |  Branch (206:8): [True: 61, False: 0]
  ------------------
  207|     61|  {
  208|      0|  case PT_LAMP:
  ------------------
  |  | 1294|      0|#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
  ------------------
  |  Branch (208:3): [True: 0, False: 61]
  ------------------
  209|      0|  return (prop->chartype == ucp_Lu ||
  ------------------
  |  Branch (209:11): [True: 0, False: 0]
  ------------------
  210|      0|          prop->chartype == ucp_Ll ||
  ------------------
  |  Branch (210:11): [True: 0, False: 0]
  ------------------
  211|      0|          prop->chartype == ucp_Lt) == negated;
  ------------------
  |  Branch (211:11): [True: 0, False: 0]
  ------------------
  212|       |
  213|     21|  case PT_GC:
  ------------------
  |  | 1295|     21|#define PT_GC         2    /* Specified general characteristic (e.g. L) */
  ------------------
  |  Branch (213:3): [True: 21, False: 40]
  ------------------
  214|     21|  return (pdata == PRIV(ucp_gentype)[prop->chartype]) == negated;
  ------------------
  |  |  195|     21|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     21|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     21|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     21|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     21|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|       |
  216|      7|  case PT_PC:
  ------------------
  |  | 1296|      7|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
  |  Branch (216:3): [True: 7, False: 54]
  ------------------
  217|      7|  return (pdata == prop->chartype) == negated;
  218|       |
  219|      0|  case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (219:3): [True: 0, False: 61]
  ------------------
  220|      0|  return (pdata == prop->script) == negated;
  221|       |
  222|      0|  case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (222:3): [True: 0, False: 61]
  ------------------
  223|      0|  ok = (pdata == prop->script
  ------------------
  |  Branch (223:9): [True: 0, False: 0]
  ------------------
  224|      0|        || MAPBIT(PRIV(ucd_script_sets) + UCD_SCRIPTX_PROP(prop), pdata) != 0);
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  |  Branch (224:12): [True: 0, False: 0]
  ------------------
  225|      0|  return ok == negated;
  226|       |
  227|       |  /* These are specials */
  228|       |
  229|      0|  case PT_ALNUM:
  ------------------
  |  | 1299|      0|#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
  ------------------
  |  Branch (229:3): [True: 0, False: 61]
  ------------------
  230|      0|  return (PRIV(ucp_gentype)[prop->chartype] == ucp_L ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (230:11): [True: 0, False: 0]
  ------------------
  231|      0|          PRIV(ucp_gentype)[prop->chartype] == ucp_N) == negated;
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (231:11): [True: 0, False: 0]
  ------------------
  232|       |
  233|       |  /* Perl space used to exclude VT, but from Perl 5.18 it is included, which
  234|       |  means that Perl space and POSIX space are now identical. PCRE was changed
  235|       |  at release 8.34. */
  236|       |
  237|      7|  case PT_SPACE:    /* Perl space */
  ------------------
  |  | 1300|      7|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
  |  Branch (237:3): [True: 7, False: 54]
  ------------------
  238|      7|  case PT_PXSPACE:  /* POSIX space */
  ------------------
  |  | 1301|      7|#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
  ------------------
  |  Branch (238:3): [True: 0, False: 61]
  ------------------
  239|      7|  switch(c)
  240|      7|    {
  241|      0|    HSPACE_CASES:
  ------------------
  |  |  430|      0|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  426|      0|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  427|      0|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      0|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      0|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  408|      0|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  409|      0|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  410|      0|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  411|      0|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  412|      0|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  413|      0|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  414|      0|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  415|      0|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  416|      0|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  417|      0|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  418|      0|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  419|      0|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  420|      0|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  421|      0|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  422|      0|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
  242|      0|    VSPACE_CASES:
  ------------------
  |  |  448|      0|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      0|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  442|      0|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  443|      0|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  444|      0|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  445|      0|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      0|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      0|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  438|      0|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
  243|      0|    return negated;
  244|       |
  245|      7|    default:
  ------------------
  |  Branch (245:5): [True: 7, False: 0]
  ------------------
  246|      7|    return (PRIV(ucp_gentype)[prop->chartype] == ucp_Z) == negated;
  ------------------
  |  |  195|      7|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      7|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      7|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      7|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      7|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|      7|    }
  248|      0|  break;  /* Control never reaches here */
  249|       |
  250|     26|  case PT_WORD:
  ------------------
  |  | 1302|     26|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
  |  Branch (250:3): [True: 26, False: 35]
  ------------------
  251|     26|  return (PRIV(ucp_gentype)[prop->chartype] == ucp_L ||
  ------------------
  |  |  195|     26|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     26|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     26|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     26|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     26|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (251:11): [True: 7, False: 19]
  ------------------
  252|     19|          PRIV(ucp_gentype)[prop->chartype] == ucp_N ||
  ------------------
  |  |  195|     19|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     19|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     19|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     19|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     19|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (252:11): [True: 12, False: 7]
  ------------------
  253|      7|          c == CHAR_UNDERSCORE) == negated;
  ------------------
  |  | 1063|      7|#define CHAR_UNDERSCORE             '\137'
  ------------------
  |  Branch (253:11): [True: 0, False: 7]
  ------------------
  254|       |
  255|      0|  case PT_CLIST:
  ------------------
  |  | 1303|      0|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (255:3): [True: 0, False: 61]
  ------------------
  256|      0|  p = PRIV(ucd_caseless_sets) + prop->caseset;
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      0|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  257|      0|  for (;;)
  258|      0|    {
  259|      0|    if (c < *p) return !negated;
  ------------------
  |  Branch (259:9): [True: 0, False: 0]
  ------------------
  260|      0|    if (c == *p++) return negated;
  ------------------
  |  Branch (260:9): [True: 0, False: 0]
  ------------------
  261|      0|    }
  262|      0|  break;  /* Control never reaches here */
  263|       |
  264|       |  /* Haven't yet thought these through. */
  265|       |
  266|      0|  case PT_BIDICL:
  ------------------
  |  | 1305|      0|#define PT_BIDICL    12    /* Specified bidi class */
  ------------------
  |  Branch (266:3): [True: 0, False: 61]
  ------------------
  267|      0|  return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  268|       |
  269|      0|  case PT_BOOL:
  ------------------
  |  | 1306|      0|#define PT_BOOL      13    /* Boolean property */
  ------------------
  |  Branch (269:3): [True: 0, False: 61]
  ------------------
  270|      0|  return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  271|     61|  }
  272|       |
  273|      0|return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  274|     61|}

php_pcre2_code_free:
 1270|     46|{
 1271|     46|PCRE2_SIZE* ref_count;
  ------------------
  |  |  479|     46|#define PCRE2_SIZE            size_t
  ------------------
 1272|       |
 1273|     46|if (code != NULL)
  ------------------
  |  Branch (1273:5): [True: 0, False: 46]
  ------------------
 1274|      0|  {
 1275|       |#ifdef SUPPORT_JIT
 1276|       |  if (code->executable_jit != NULL)
 1277|       |    PRIV(jit_free)(code->executable_jit, &code->memctl);
 1278|       |#endif
 1279|       |
 1280|      0|  if ((code->flags & PCRE2_DEREF_TABLES) != 0)
  ------------------
  |  |  543|      0|#define PCRE2_DEREF_TABLES  0x00040000  /* release character tables */
  ------------------
  |  Branch (1280:7): [True: 0, False: 0]
  ------------------
 1281|      0|    {
 1282|       |    /* Decoded tables belong to the codes after deserialization, and they must
 1283|       |    be freed when there are no more references to them. The *ref_count should
 1284|       |    always be > 0. */
 1285|       |
 1286|      0|    ref_count = (PCRE2_SIZE *)(code->tables + TABLES_LENGTH);
  ------------------
  |  |  610|      0|#define TABLES_LENGTH (ctypes_offset + 256)
  |  |  ------------------
  |  |  |  |  609|      0|#define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define cbits_offset  512                           /* Character classes */
  |  |  |  |  ------------------
  |  |  |  |               #define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  |  |  ------------------
  |  |  |  |  |  |  591|      0|#define cbit_length  320      /* Length of the cbits table */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1287|      0|    if (*ref_count > 0)
  ------------------
  |  Branch (1287:9): [True: 0, False: 0]
  ------------------
 1288|      0|      {
 1289|      0|      (*ref_count)--;
 1290|      0|      if (*ref_count == 0)
  ------------------
  |  Branch (1290:11): [True: 0, False: 0]
  ------------------
 1291|      0|        code->memctl.free((void *)code->tables, code->memctl.memory_data);
 1292|      0|      }
 1293|      0|    }
 1294|       |
 1295|      0|  code->memctl.free(code, code->memctl.memory_data);
 1296|      0|  }
 1297|     46|}
_pcre2_check_escape_8:
 1554|  1.08k|{
 1555|  1.08k|BOOL utf = (options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|  1.08k|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 1556|  1.08k|BOOL alt_bsux =
 1557|  1.08k|  ((options & PCRE2_ALT_BSUX) | (xoptions & PCRE2_EXTRA_ALT_BSUX)) != 0;
  ------------------
  |  |  120|  1.08k|#define PCRE2_ALT_BSUX            0x00000002u  /* C       */
  ------------------
                ((options & PCRE2_ALT_BSUX) | (xoptions & PCRE2_EXTRA_ALT_BSUX)) != 0;
  ------------------
  |  |  154|  1.08k|#define PCRE2_EXTRA_ALT_BSUX                 0x00000020u  /* C */
  ------------------
 1558|  1.08k|PCRE2_SPTR ptr = *ptrptr;
  ------------------
  |  |  820|  1.08k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  1.08k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.08k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.08k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1559|  1.08k|uint32_t c, cc;
 1560|  1.08k|int escape = 0;
 1561|  1.08k|int i;
 1562|       |
 1563|       |/* If backslash is at the end of the string, it's an error. */
 1564|       |
 1565|  1.08k|if (ptr >= ptrend)
  ------------------
  |  Branch (1565:5): [True: 0, False: 1.08k]
  ------------------
 1566|      0|  {
 1567|      0|  *errorcodeptr = ERR1;
 1568|      0|  return 0;
 1569|      0|  }
 1570|       |
 1571|  1.08k|GETCHARINCTEST(c, ptr);         /* Get character value, increment pointer */
  ------------------
  |  |  323|  1.08k|  c = *eptr++; \
  |  |  324|  1.08k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      2|    { \
  |  |  |  |  307|      2|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      2|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      2|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      1|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      1|      eptr += 2; \
  |  |  |  |  313|      1|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      1|      { \
  |  |  |  |  316|      1|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      1|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      1|      eptr += 3; \
  |  |  |  |  319|      1|      } \
  |  |  |  |  320|      1|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      2|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 563, False: 518]
  |  |  |  Branch (324:14): [True: 2, False: 561]
  |  |  ------------------
  ------------------
 1572|  1.08k|*errorcodeptr = 0;              /* Be optimistic */
 1573|       |
 1574|       |/* Non-alphanumerics are literals, so we just leave the value in c. An initial
 1575|       |value test saves a memory lookup for code points outside the alphanumeric
 1576|       |range. */
 1577|       |
 1578|  1.08k|if (c < ESCAPES_FIRST || c > ESCAPES_LAST) {}  /* Definitely literal */
  ------------------
  |  |  507|  1.08k|#define ESCAPES_FIRST       CHAR_0
  |  |  ------------------
  |  |  |  | 1016|  2.16k|#define CHAR_0                      '\060'
  |  |  ------------------
  ------------------
              if (c < ESCAPES_FIRST || c > ESCAPES_LAST) {}  /* Definitely literal */
  ------------------
  |  |  508|    957|#define ESCAPES_LAST        CHAR_z
  |  |  ------------------
  |  |  |  | 1090|    957|#define CHAR_z                      '\172'
  |  |  ------------------
  ------------------
  |  Branch (1578:5): [True: 124, False: 957]
  |  Branch (1578:26): [True: 75, False: 882]
  ------------------
 1579|       |
 1580|       |/* Otherwise, do a table lookup. Non-zero values need little processing here. A
 1581|       |positive value is a literal value for something like \n. A negative value is
 1582|       |the negation of one of the ESC_ macros that is passed back for handling by the
 1583|       |calling function. Some extra checking is needed for \N because only \N{U+dddd}
 1584|       |is supported. If the value is zero, further processing is handled below. */
 1585|       |
 1586|    882|else if ((i = escapes[c - ESCAPES_FIRST]) != 0)
  ------------------
  |  |  507|    882|#define ESCAPES_FIRST       CHAR_0
  |  |  ------------------
  |  |  |  | 1016|    882|#define CHAR_0                      '\060'
  |  |  ------------------
  ------------------
  |  Branch (1586:10): [True: 822, False: 60]
  ------------------
 1587|    822|  {
 1588|    822|  if (i > 0)
  ------------------
  |  Branch (1588:7): [True: 111, False: 711]
  ------------------
 1589|    111|    {
 1590|    111|    c = (uint32_t)i;
 1591|    111|    if (c == CHAR_CR && (xoptions & PCRE2_EXTRA_ESCAPED_CR_IS_LF) != 0)
  ------------------
  |  |  990|    222|#define CHAR_CR                     '\015'
  ------------------
                  if (c == CHAR_CR && (xoptions & PCRE2_EXTRA_ESCAPED_CR_IS_LF) != 0)
  ------------------
  |  |  153|      0|#define PCRE2_EXTRA_ESCAPED_CR_IS_LF         0x00000010u  /* C */
  ------------------
  |  Branch (1591:9): [True: 0, False: 111]
  |  Branch (1591:25): [True: 0, False: 0]
  ------------------
 1592|      0|      c = CHAR_LF;
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
 1593|    111|    }
 1594|    711|  else  /* Negative table entry */
 1595|    711|    {
 1596|    711|    escape = -i;                    /* Else return a special escape */
 1597|    711|    if (cb != NULL && (escape == ESC_P || escape == ESC_p || escape == ESC_X))
  ------------------
  |  Branch (1597:9): [True: 711, False: 0]
  |  Branch (1597:24): [True: 0, False: 711]
  |  Branch (1597:43): [True: 17, False: 694]
  |  Branch (1597:62): [True: 44, False: 650]
  ------------------
 1598|     61|      cb->external_flags |= PCRE2_HASBKPORX;   /* Note \P, \p, or \X */
  ------------------
  |  |  545|     61|#define PCRE2_HASBKPORX     0x00100000  /* contains \P, \p, or \X */
  ------------------
 1599|       |
 1600|       |    /* Perl supports \N{name} for character names and \N{U+dddd} for numerical
 1601|       |    Unicode code points, as well as plain \N for "not newline". PCRE does not
 1602|       |    support \N{name}. However, it does support quantification such as \N{2,3},
 1603|       |    so if \N{ is not followed by U+dddd we check for a quantifier. */
 1604|       |
 1605|    711|    if (escape == ESC_N && ptr < ptrend && *ptr == CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|     31|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (1605:9): [True: 31, False: 680]
  |  Branch (1605:28): [True: 31, False: 0]
  |  Branch (1605:44): [True: 0, False: 31]
  ------------------
 1606|      0|      {
 1607|      0|      PCRE2_SPTR p = ptr + 1;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1608|       |
 1609|       |      /* Perl ignores spaces and tabs after { */
 1610|       |
 1611|      0|      while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                    while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1611:14): [True: 0, False: 0]
  |  Branch (1611:29): [True: 0, False: 0]
  |  Branch (1611:49): [True: 0, False: 0]
  ------------------
 1612|       |
 1613|       |      /* \N{U+ can be handled by the \x{ code. However, this construction is
 1614|       |      not valid in EBCDIC environments because it specifies a Unicode
 1615|       |      character, not a codepoint in the local code. For example \N{U+0041}
 1616|       |      must be "A" in all environments. Also, in Perl, \N{U+ forces Unicode
 1617|       |      casing semantics for the entire pattern, so allow it only in UTF (i.e.
 1618|       |      Unicode) mode. */
 1619|       |
 1620|      0|      if (ptrend - p > 1 && *p == CHAR_U && p[1] == CHAR_PLUS)
  ------------------
  |  | 1053|      0|#define CHAR_U                      '\125'
  ------------------
                    if (ptrend - p > 1 && *p == CHAR_U && p[1] == CHAR_PLUS)
  ------------------
  |  | 1011|      0|#define CHAR_PLUS                   '\053'
  ------------------
  |  Branch (1620:11): [True: 0, False: 0]
  |  Branch (1620:29): [True: 0, False: 0]
  |  Branch (1620:45): [True: 0, False: 0]
  ------------------
 1621|      0|        {
 1622|       |#ifdef EBCDIC
 1623|       |        *errorcodeptr = ERR93;
 1624|       |#else
 1625|      0|        if (utf)
  ------------------
  |  Branch (1625:13): [True: 0, False: 0]
  ------------------
 1626|      0|          {
 1627|      0|          ptr = p + 2;
 1628|      0|          escape = 0;   /* Not a fancy escape after all */
 1629|      0|          goto COME_FROM_NU;
 1630|      0|          }
 1631|      0|        else *errorcodeptr = ERR93;
 1632|      0|#endif
 1633|      0|        }
 1634|       |
 1635|       |      /* Give an error if what follows is not a quantifier, but don't override
 1636|       |      an error set by the quantifier reader (e.g. number overflow). */
 1637|       |
 1638|      0|      else
 1639|      0|        {
 1640|      0|        if (!read_repeat_counts(&p, ptrend, NULL, NULL, errorcodeptr) &&
  ------------------
  |  Branch (1640:13): [True: 0, False: 0]
  ------------------
 1641|      0|             *errorcodeptr == 0)
  ------------------
  |  Branch (1641:14): [True: 0, False: 0]
  ------------------
 1642|      0|          *errorcodeptr = ERR37;
 1643|      0|        }
 1644|      0|      }
 1645|    711|    }
 1646|    822|  }
 1647|       |
 1648|       |/* Escapes that need further processing, including those that are unknown, have
 1649|       |a zero entry in the lookup table. When called from pcre2_substitute(), only \c,
 1650|       |\o, and \x are recognized (\u and \U can never appear as they are used for case
 1651|       |forcing). */
 1652|       |
 1653|     60|else
 1654|     60|  {
 1655|     60|  int s;
 1656|     60|  PCRE2_SPTR oldptr;
  ------------------
  |  |  820|     60|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|     60|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     60|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     60|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1657|     60|  BOOL overflow;
 1658|       |
 1659|       |  /* Filter calls from pcre2_substitute(). */
 1660|       |
 1661|     60|  if (cb == NULL)
  ------------------
  |  Branch (1661:7): [True: 0, False: 60]
  ------------------
 1662|      0|    {
 1663|      0|    if (c != CHAR_c && c != CHAR_o && c != CHAR_x)
  ------------------
  |  | 1067|      0|#define CHAR_c                      '\143'
  ------------------
                  if (c != CHAR_c && c != CHAR_o && c != CHAR_x)
  ------------------
  |  | 1079|      0|#define CHAR_o                      '\157'
  ------------------
                  if (c != CHAR_c && c != CHAR_o && c != CHAR_x)
  ------------------
  |  | 1088|      0|#define CHAR_x                      '\170'
  ------------------
  |  Branch (1663:9): [True: 0, False: 0]
  |  Branch (1663:24): [True: 0, False: 0]
  |  Branch (1663:39): [True: 0, False: 0]
  ------------------
 1664|      0|      {
 1665|      0|      *errorcodeptr = ERR3;
 1666|      0|      return 0;
 1667|      0|      }
 1668|      0|    alt_bsux = FALSE;   /* Do not modify \x handling */
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1669|      0|    }
 1670|       |
 1671|     60|  switch (c)
 1672|     60|    {
 1673|       |    /* A number of Perl escapes are not handled by PCRE. We give an explicit
 1674|       |    error. */
 1675|       |
 1676|      0|    case CHAR_F:
  ------------------
  |  | 1038|      0|#define CHAR_F                      '\106'
  ------------------
  |  Branch (1676:5): [True: 0, False: 60]
  ------------------
 1677|      1|    case CHAR_l:
  ------------------
  |  | 1076|      1|#define CHAR_l                      '\154'
  ------------------
  |  Branch (1677:5): [True: 1, False: 59]
  ------------------
 1678|      1|    case CHAR_L:
  ------------------
  |  | 1044|      1|#define CHAR_L                      '\114'
  ------------------
  |  Branch (1678:5): [True: 0, False: 60]
  ------------------
 1679|      1|    *errorcodeptr = ERR37;
 1680|      1|    break;
 1681|       |
 1682|       |    /* \u is unrecognized when neither PCRE2_ALT_BSUX nor PCRE2_EXTRA_ALT_BSUX
 1683|       |    is set. Otherwise, \u must be followed by exactly four hex digits or, if
 1684|       |    PCRE2_EXTRA_ALT_BSUX is set, by any number of hex digits in braces.
 1685|       |    Otherwise it is a lowercase u letter. This gives some compatibility with
 1686|       |    ECMAScript (aka JavaScript). Unlike other braced items, white space is NOT
 1687|       |    allowed. When \u{ is not followed by hex digits, a special return is given
 1688|       |    because otherwise \u{ 12} (for example) would be treated as u{12}. */
 1689|       |
 1690|      0|    case CHAR_u:
  ------------------
  |  | 1085|      0|#define CHAR_u                      '\165'
  ------------------
  |  Branch (1690:5): [True: 0, False: 60]
  ------------------
 1691|      0|    if (!alt_bsux) *errorcodeptr = ERR37; else
  ------------------
  |  Branch (1691:9): [True: 0, False: 0]
  ------------------
 1692|      0|      {
 1693|      0|      uint32_t xc;
 1694|       |
 1695|      0|      if (ptr >= ptrend) break;
  ------------------
  |  Branch (1695:11): [True: 0, False: 0]
  ------------------
 1696|      0|      if (*ptr == CHAR_LEFT_CURLY_BRACKET &&
  ------------------
  |  | 1091|      0|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (1696:11): [True: 0, False: 0]
  ------------------
 1697|      0|          (xoptions & PCRE2_EXTRA_ALT_BSUX) != 0)
  ------------------
  |  |  154|      0|#define PCRE2_EXTRA_ALT_BSUX                 0x00000020u  /* C */
  ------------------
  |  Branch (1697:11): [True: 0, False: 0]
  ------------------
 1698|      0|        {
 1699|      0|        PCRE2_SPTR hptr = ptr + 1;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1700|       |
 1701|      0|        cc = 0;
 1702|      0|        while (hptr < ptrend && (xc = XDIGIT(*hptr)) != 0xff)
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1702:16): [True: 0, False: 0]
  |  Branch (1702:33): [True: 0, False: 0]
  ------------------
 1703|      0|          {
 1704|      0|          if ((cc & 0xf0000000) != 0)  /* Test for 32-bit overflow */
  ------------------
  |  Branch (1704:15): [True: 0, False: 0]
  ------------------
 1705|      0|            {
 1706|      0|            *errorcodeptr = ERR77;
 1707|      0|            ptr = hptr;   /* Show where */
 1708|      0|            break;        /* *hptr != } will cause another break below */
 1709|      0|            }
 1710|      0|          cc = (cc << 4) | xc;
 1711|      0|          hptr++;
 1712|      0|          }
 1713|       |
 1714|      0|        if (hptr == ptr + 1 ||   /* No hex digits */
  ------------------
  |  Branch (1714:13): [True: 0, False: 0]
  ------------------
 1715|      0|            hptr >= ptrend ||    /* Hit end of input */
  ------------------
  |  Branch (1715:13): [True: 0, False: 0]
  ------------------
 1716|      0|            *hptr != CHAR_RIGHT_CURLY_BRACKET)  /* No } terminator */
  ------------------
  |  | 1093|      0|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1716:13): [True: 0, False: 0]
  ------------------
 1717|      0|          {
 1718|      0|          escape = ESC_ub;    /* Special return */
 1719|      0|          ptr++;              /* Skip { */
 1720|      0|          break;              /* Hex escape not recognized */
 1721|      0|          }
 1722|       |
 1723|      0|        c = cc;          /* Accept the code point */
 1724|      0|        ptr = hptr + 1;
 1725|      0|        }
 1726|       |
 1727|      0|      else  /* Must be exactly 4 hex digits */
 1728|      0|        {
 1729|      0|        if (ptrend - ptr < 4) break;               /* Less than 4 chars */
  ------------------
  |  Branch (1729:13): [True: 0, False: 0]
  ------------------
 1730|      0|        if ((cc = XDIGIT(ptr[0])) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1730:13): [True: 0, False: 0]
  ------------------
 1731|      0|        if ((xc = XDIGIT(ptr[1])) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1731:13): [True: 0, False: 0]
  ------------------
 1732|      0|        cc = (cc << 4) | xc;
 1733|      0|        if ((xc = XDIGIT(ptr[2])) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1733:13): [True: 0, False: 0]
  ------------------
 1734|      0|        cc = (cc << 4) | xc;
 1735|      0|        if ((xc = XDIGIT(ptr[3])) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1735:13): [True: 0, False: 0]
  ------------------
 1736|      0|        c = (cc << 4) | xc;
 1737|      0|        ptr += 4;
 1738|      0|        }
 1739|       |
 1740|      0|      if (utf)
  ------------------
  |  Branch (1740:11): [True: 0, False: 0]
  ------------------
 1741|      0|        {
 1742|      0|        if (c > 0x10ffffU) *errorcodeptr = ERR77;
  ------------------
  |  Branch (1742:13): [True: 0, False: 0]
  ------------------
 1743|      0|        else
 1744|      0|          if (c >= 0xd800 && c <= 0xdfff &&
  ------------------
  |  Branch (1744:15): [True: 0, False: 0]
  |  Branch (1744:30): [True: 0, False: 0]
  ------------------
 1745|      0|              (xoptions & PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES) == 0)
  ------------------
  |  |  149|      0|#define PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES  0x00000001u  /* C */
  ------------------
  |  Branch (1745:15): [True: 0, False: 0]
  ------------------
 1746|      0|                *errorcodeptr = ERR73;
 1747|      0|        }
 1748|      0|      else if (c > MAX_NON_UTF_CHAR) *errorcodeptr = ERR77;
  ------------------
  |  | 1927|      0|#define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (1748:16): [True: 0, False: 0]
  ------------------
 1749|      0|      }
 1750|      0|    break;
 1751|       |
 1752|       |    /* \U is unrecognized unless PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set,
 1753|       |    in which case it is an upper case letter. */
 1754|       |
 1755|      0|    case CHAR_U:
  ------------------
  |  | 1053|      0|#define CHAR_U                      '\125'
  ------------------
  |  Branch (1755:5): [True: 0, False: 60]
  ------------------
 1756|      0|    if (!alt_bsux) *errorcodeptr = ERR37;
  ------------------
  |  Branch (1756:9): [True: 0, False: 0]
  ------------------
 1757|      0|    break;
 1758|       |
 1759|       |    /* In a character class, \g is just a literal "g". Outside a character
 1760|       |    class, \g must be followed by one of a number of specific things:
 1761|       |
 1762|       |    (1) A number, either plain or braced. If positive, it is an absolute
 1763|       |    backreference. If negative, it is a relative backreference. This is a Perl
 1764|       |    5.10 feature.
 1765|       |
 1766|       |    (2) Perl 5.10 also supports \g{name} as a reference to a named group. This
 1767|       |    is part of Perl's movement towards a unified syntax for back references. As
 1768|       |    this is synonymous with \k{name}, we fudge it up by pretending it really
 1769|       |    was \k{name}.
 1770|       |
 1771|       |    (3) For Oniguruma compatibility we also support \g followed by a name or a
 1772|       |    number either in angle brackets or in single quotes. However, these are
 1773|       |    (possibly recursive) subroutine calls, _not_ backreferences. We return
 1774|       |    the ESC_g code.
 1775|       |
 1776|       |    Summary: Return a negative number for a numerical back reference, ESC_k for
 1777|       |    a named back reference, and ESC_g for a named or numbered subroutine call.
 1778|       |    */
 1779|       |
 1780|      8|    case CHAR_g:
  ------------------
  |  | 1071|      8|#define CHAR_g                      '\147'
  ------------------
  |  Branch (1780:5): [True: 8, False: 52]
  ------------------
 1781|      8|    if (isclass) break;
  ------------------
  |  Branch (1781:9): [True: 1, False: 7]
  ------------------
 1782|       |
 1783|      7|    if (ptr >= ptrend)
  ------------------
  |  Branch (1783:9): [True: 0, False: 7]
  ------------------
 1784|      0|      {
 1785|      0|      *errorcodeptr = ERR57;
 1786|      0|      break;
 1787|      0|      }
 1788|       |
 1789|      7|    if (*ptr == CHAR_LESS_THAN_SIGN || *ptr == CHAR_APOSTROPHE)
  ------------------
  |  | 1028|     14|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
                  if (*ptr == CHAR_LESS_THAN_SIGN || *ptr == CHAR_APOSTROPHE)
  ------------------
  |  | 1007|      5|#define CHAR_APOSTROPHE             '\047'
  ------------------
  |  Branch (1789:9): [True: 2, False: 5]
  |  Branch (1789:40): [True: 0, False: 5]
  ------------------
 1790|      2|      {
 1791|      2|      escape = ESC_g;
 1792|      2|      break;
 1793|      2|      }
 1794|       |
 1795|       |    /* If there is a brace delimiter, try to read a numerical reference. If
 1796|       |    there isn't one, assume we have a name and treat it as \k. */
 1797|       |
 1798|      5|    if (*ptr == CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|      5|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (1798:9): [True: 5, False: 0]
  ------------------
 1799|      5|      {
 1800|      5|      PCRE2_SPTR p = ptr + 1;
  ------------------
  |  |  820|      5|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      5|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      5|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      5|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1801|       |
 1802|      5|      while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|     10|#define CHAR_SPACE                  '\040'
  ------------------
                    while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|      5|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1802:14): [True: 5, False: 0]
  |  Branch (1802:29): [True: 0, False: 5]
  |  Branch (1802:49): [True: 0, False: 5]
  ------------------
 1803|      5|      if (!read_number(&p, ptrend, cb->bracount, MAX_GROUP_NUMBER, ERR61, &s,
  ------------------
  |  |  147|      5|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (1803:11): [True: 4, False: 1]
  ------------------
 1804|      5|          errorcodeptr))
 1805|      4|        {
 1806|      4|        if (*errorcodeptr == 0) escape = ESC_k;  /* No number found */
  ------------------
  |  Branch (1806:13): [True: 4, False: 0]
  ------------------
 1807|      4|        break;
 1808|      4|        }
 1809|      1|      while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|      2|#define CHAR_SPACE                  '\040'
  ------------------
                    while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|      1|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1809:14): [True: 1, False: 0]
  |  Branch (1809:29): [True: 0, False: 1]
  |  Branch (1809:49): [True: 0, False: 1]
  ------------------
 1810|       |
 1811|      1|      if (p >= ptrend || *p != CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|      1|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1811:11): [True: 0, False: 1]
  |  Branch (1811:26): [True: 1, False: 0]
  ------------------
 1812|      1|        {
 1813|      1|        *errorcodeptr = ERR57;
 1814|      1|        break;
 1815|      1|        }
 1816|      0|      ptr = p + 1;
 1817|      0|      }
 1818|       |
 1819|       |    /* Read an undelimited number */
 1820|       |
 1821|      0|    else
 1822|      0|      {
 1823|      0|      if (!read_number(&ptr, ptrend, cb->bracount, MAX_GROUP_NUMBER, ERR61, &s,
  ------------------
  |  |  147|      0|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (1823:11): [True: 0, False: 0]
  ------------------
 1824|      0|          errorcodeptr))
 1825|      0|        {
 1826|      0|        if (*errorcodeptr == 0) *errorcodeptr = ERR57;  /* No number found */
  ------------------
  |  Branch (1826:13): [True: 0, False: 0]
  ------------------
 1827|      0|        break;
 1828|      0|        }
 1829|      0|      }
 1830|       |
 1831|      0|    if (s <= 0)
  ------------------
  |  Branch (1831:9): [True: 0, False: 0]
  ------------------
 1832|      0|      {
 1833|      0|      *errorcodeptr = ERR15;
 1834|      0|      break;
 1835|      0|      }
 1836|       |
 1837|      0|    escape = -s;
 1838|      0|    break;
 1839|       |
 1840|       |    /* The handling of escape sequences consisting of a string of digits
 1841|       |    starting with one that is not zero is not straightforward. Perl has changed
 1842|       |    over the years. Nowadays \g{} for backreferences and \o{} for octal are
 1843|       |    recommended to avoid the ambiguities in the old syntax.
 1844|       |
 1845|       |    Outside a character class, the digits are read as a decimal number. If the
 1846|       |    number is less than 10, or if there are that many previous extracting left
 1847|       |    brackets, it is a back reference. Otherwise, up to three octal digits are
 1848|       |    read to form an escaped character code. Thus \123 is likely to be octal 123
 1849|       |    (cf \0123, which is octal 012 followed by the literal 3).
 1850|       |
 1851|       |    Inside a character class, \ followed by a digit is always either a literal
 1852|       |    8 or 9 or an octal number. */
 1853|       |
 1854|      6|    case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5:
  ------------------
  |  | 1017|      3|#define CHAR_1                      '\061'
  ------------------
                  case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5:
  ------------------
  |  | 1018|      6|#define CHAR_2                      '\062'
  ------------------
                  case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5:
  ------------------
  |  | 1019|      6|#define CHAR_3                      '\063'
  ------------------
                  case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5:
  ------------------
  |  | 1020|      6|#define CHAR_4                      '\064'
  ------------------
                  case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5:
  ------------------
  |  | 1021|      6|#define CHAR_5                      '\065'
  ------------------
  |  Branch (1854:5): [True: 3, False: 57]
  |  Branch (1854:18): [True: 3, False: 57]
  |  Branch (1854:31): [True: 0, False: 60]
  |  Branch (1854:44): [True: 0, False: 60]
  |  Branch (1854:57): [True: 0, False: 60]
  ------------------
 1855|     19|    case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1022|      6|#define CHAR_6                      '\066'
  ------------------
                  case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1023|      7|#define CHAR_7                      '\067'
  ------------------
                  case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1024|     16|#define CHAR_8                      '\070'
  ------------------
                  case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1025|     19|#define CHAR_9                      '\071'
  ------------------
  |  Branch (1855:5): [True: 0, False: 60]
  |  Branch (1855:18): [True: 1, False: 59]
  |  Branch (1855:31): [True: 9, False: 51]
  |  Branch (1855:44): [True: 3, False: 57]
  ------------------
 1856|       |
 1857|     19|    if (!isclass)
  ------------------
  |  Branch (1857:9): [True: 19, False: 0]
  ------------------
 1858|     19|      {
 1859|     19|      oldptr = ptr;
 1860|     19|      ptr--;   /* Back to the digit */
 1861|       |
 1862|       |      /* As we know we are at a digit, the only possible error from
 1863|       |      read_number() is a number that is too large to be a group number. In this
 1864|       |      case we fall through handle this as not a group reference. If we have
 1865|       |      read a small enough number, check for a back reference.
 1866|       |
 1867|       |      \1 to \9 are always back references. \8x and \9x are too; \1x to \7x
 1868|       |      are octal escapes if there are not that many previous captures. */
 1869|       |
 1870|     19|      if (read_number(&ptr, ptrend, -1, INT_MAX/10 - 1, 0, &s, errorcodeptr) &&
  ------------------
  |  Branch (1870:11): [True: 18, False: 1]
  ------------------
 1871|     18|          (s < 10 || oldptr[-1] >= CHAR_8 || s <= (int)cb->bracount))
  ------------------
  |  | 1024|     29|#define CHAR_8                      '\070'
  ------------------
  |  Branch (1871:12): [True: 7, False: 11]
  |  Branch (1871:22): [True: 9, False: 2]
  |  Branch (1871:46): [True: 0, False: 2]
  ------------------
 1872|     16|        {
 1873|     16|        if (s > (int)MAX_GROUP_NUMBER) *errorcodeptr = ERR61;
  ------------------
  |  |  147|     16|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (1873:13): [True: 1, False: 15]
  ------------------
 1874|     15|          else escape = -s;     /* Indicates a back reference */
 1875|     16|        break;
 1876|     16|        }
 1877|       |
 1878|      3|      ptr = oldptr;      /* Put the pointer back and fall through */
 1879|      3|      }
 1880|       |
 1881|       |    /* Handle a digit following \ when the number is not a back reference, or
 1882|       |    we are within a character class. If the first digit is 8 or 9, Perl used to
 1883|       |    generate a binary zero and then treat the digit as a following literal. At
 1884|       |    least by Perl 5.18 this changed so as not to insert the binary zero. */
 1885|       |
 1886|      3|    if (c >= CHAR_8) break;
  ------------------
  |  | 1024|      3|#define CHAR_8                      '\070'
  ------------------
  |  Branch (1886:9): [True: 1, False: 2]
  ------------------
 1887|       |
 1888|       |    /* Fall through */
 1889|       |
 1890|       |    /* \0 always starts an octal number, but we may drop through to here with a
 1891|       |    larger first octal digit. The original code used just to take the least
 1892|       |    significant 8 bits of octal numbers (I think this is what early Perls used
 1893|       |    to do). Nowadays we allow for larger numbers in UTF-8 mode and 16-bit mode,
 1894|       |    but no more than 3 octal digits. */
 1895|       |
 1896|      3|    case CHAR_0:
  ------------------
  |  | 1016|      3|#define CHAR_0                      '\060'
  ------------------
  |  Branch (1896:5): [True: 1, False: 59]
  ------------------
 1897|      3|    c -= CHAR_0;
  ------------------
  |  | 1016|      3|#define CHAR_0                      '\060'
  ------------------
 1898|      6|    while(i++ < 2 && ptr < ptrend && *ptr >= CHAR_0 && *ptr <= CHAR_7)
  ------------------
  |  | 1016|     11|#define CHAR_0                      '\060'
  ------------------
                  while(i++ < 2 && ptr < ptrend && *ptr >= CHAR_0 && *ptr <= CHAR_7)
  ------------------
  |  | 1023|      5|#define CHAR_7                      '\067'
  ------------------
  |  Branch (1898:11): [True: 5, False: 1]
  |  Branch (1898:22): [True: 5, False: 0]
  |  Branch (1898:38): [True: 5, False: 0]
  |  Branch (1898:56): [True: 3, False: 2]
  ------------------
 1899|      3|        c = c * 8 + *ptr++ - CHAR_0;
  ------------------
  |  | 1016|      6|#define CHAR_0                      '\060'
  ------------------
 1900|      3|#if PCRE2_CODE_UNIT_WIDTH == 8
 1901|      3|    if (!utf && c > 0xff) *errorcodeptr = ERR51;
  ------------------
  |  Branch (1901:9): [True: 3, False: 0]
  |  Branch (1901:17): [True: 0, False: 3]
  ------------------
 1902|      3|#endif
 1903|      3|    break;
 1904|       |
 1905|       |    /* \o is a relatively new Perl feature, supporting a more general way of
 1906|       |    specifying character codes in octal. The only supported form is \o{ddd},
 1907|       |    with optional spaces or tabs after { and before }. */
 1908|       |
 1909|      1|    case CHAR_o:
  ------------------
  |  | 1079|      1|#define CHAR_o                      '\157'
  ------------------
  |  Branch (1909:5): [True: 1, False: 59]
  ------------------
 1910|      1|    if (ptr >= ptrend || *ptr++ != CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|      1|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (1910:9): [True: 0, False: 1]
  |  Branch (1910:26): [True: 0, False: 1]
  ------------------
 1911|      0|      {
 1912|      0|      ptr--;
 1913|      0|      *errorcodeptr = ERR55;
 1914|      0|      break;
 1915|      0|      }
 1916|       |
 1917|      1|    while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  | 1000|      2|#define CHAR_SPACE                  '\040'
  ------------------
                  while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  |  987|      1|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1917:12): [True: 1, False: 0]
  |  Branch (1917:29): [True: 0, False: 1]
  |  Branch (1917:51): [True: 0, False: 1]
  ------------------
 1918|      1|    if (ptr >= ptrend || *ptr == CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|      1|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1918:9): [True: 0, False: 1]
  |  Branch (1918:26): [True: 0, False: 1]
  ------------------
 1919|      0|      {
 1920|      0|      *errorcodeptr = ERR78;
 1921|      0|      break;
 1922|      0|      }
 1923|       |
 1924|      1|    c = 0;
 1925|      1|    overflow = FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
 1926|      1|    while (ptr < ptrend && *ptr >= CHAR_0 && *ptr <= CHAR_7)
  ------------------
  |  | 1016|      2|#define CHAR_0                      '\060'
  ------------------
                  while (ptr < ptrend && *ptr >= CHAR_0 && *ptr <= CHAR_7)
  ------------------
  |  | 1023|      0|#define CHAR_7                      '\067'
  ------------------
  |  Branch (1926:12): [True: 1, False: 0]
  |  Branch (1926:28): [True: 0, False: 1]
  |  Branch (1926:46): [True: 0, False: 0]
  ------------------
 1927|      0|      {
 1928|      0|      cc = *ptr++;
 1929|      0|      if (c == 0 && cc == CHAR_0) continue;     /* Leading zeroes */
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
  |  Branch (1929:11): [True: 0, False: 0]
  |  Branch (1929:21): [True: 0, False: 0]
  ------------------
 1930|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 1931|       |      if (c >= 0x20000000l) { overflow = TRUE; break; }
 1932|       |#endif
 1933|      0|      c = (c << 3) + (cc - CHAR_0);
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
 1934|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
 1935|      0|      if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; }
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  |  Branch (1935:11): [True: 0, False: 0]
  |  Branch (1935:16): [True: 0, False: 0]
  ------------------
 1936|       |#elif PCRE2_CODE_UNIT_WIDTH == 16
 1937|       |      if (c > (utf ? 0x10ffffU : 0xffffU)) { overflow = TRUE; break; }
 1938|       |#elif PCRE2_CODE_UNIT_WIDTH == 32
 1939|       |      if (utf && c > 0x10ffffU) { overflow = TRUE; break; }
 1940|       |#endif
 1941|      0|      }
 1942|       |
 1943|      1|    while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  | 1000|      2|#define CHAR_SPACE                  '\040'
  ------------------
                  while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  |  987|      1|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1943:12): [True: 1, False: 0]
  |  Branch (1943:29): [True: 0, False: 1]
  |  Branch (1943:51): [True: 0, False: 1]
  ------------------
 1944|       |
 1945|      1|    if (overflow)
  ------------------
  |  Branch (1945:9): [True: 0, False: 1]
  ------------------
 1946|      0|      {
 1947|      0|      while (ptr < ptrend && *ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++;
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
                    while (ptr < ptrend && *ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++;
  ------------------
  |  | 1023|      0|#define CHAR_7                      '\067'
  ------------------
  |  Branch (1947:14): [True: 0, False: 0]
  |  Branch (1947:30): [True: 0, False: 0]
  |  Branch (1947:48): [True: 0, False: 0]
  ------------------
 1948|      0|      *errorcodeptr = ERR34;
 1949|      0|      }
 1950|      1|    else if (ptr < ptrend && *ptr++ == CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|      1|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1950:14): [True: 1, False: 0]
  |  Branch (1950:30): [True: 0, False: 1]
  ------------------
 1951|      0|      {
 1952|      0|      if (utf && c >= 0xd800 && c <= 0xdfff &&
  ------------------
  |  Branch (1952:11): [True: 0, False: 0]
  |  Branch (1952:18): [True: 0, False: 0]
  |  Branch (1952:33): [True: 0, False: 0]
  ------------------
 1953|      0|          (xoptions & PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES) == 0)
  ------------------
  |  |  149|      0|#define PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES  0x00000001u  /* C */
  ------------------
  |  Branch (1953:11): [True: 0, False: 0]
  ------------------
 1954|      0|        {
 1955|      0|        ptr--;
 1956|      0|        *errorcodeptr = ERR73;
 1957|      0|        }
 1958|      0|      }
 1959|      1|    else
 1960|      1|      {
 1961|      1|      ptr--;
 1962|      1|      *errorcodeptr = ERR64;
 1963|      1|      }
 1964|      1|    break;
 1965|       |
 1966|       |    /* When PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set, \x must be followed
 1967|       |    by two hexadecimal digits. Otherwise it is a lowercase x letter. */
 1968|       |
 1969|     20|    case CHAR_x:
  ------------------
  |  | 1088|     20|#define CHAR_x                      '\170'
  ------------------
  |  Branch (1969:5): [True: 20, False: 40]
  ------------------
 1970|     20|    if (alt_bsux)
  ------------------
  |  Branch (1970:9): [True: 0, False: 20]
  ------------------
 1971|      0|      {
 1972|      0|      uint32_t xc;
 1973|      0|      if (ptrend - ptr < 2) break;               /* Less than 2 characters */
  ------------------
  |  Branch (1973:11): [True: 0, False: 0]
  ------------------
 1974|      0|      if ((cc = XDIGIT(ptr[0])) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1974:11): [True: 0, False: 0]
  ------------------
 1975|      0|      if ((xc = XDIGIT(ptr[1])) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (1975:11): [True: 0, False: 0]
  ------------------
 1976|      0|      c = (cc << 4) | xc;
 1977|      0|      ptr += 2;
 1978|      0|      }
 1979|       |
 1980|       |    /* Handle \x in Perl's style. \x{ddd} is a character code which can be
 1981|       |    greater than 0xff in UTF-8 or non-8bit mode, but only if the ddd are hex
 1982|       |    digits. If not, { used to be treated as a data character. However, Perl
 1983|       |    seems to read hex digits up to the first non-such, and ignore the rest, so
 1984|       |    that, for example \x{zz} matches a binary zero. This seems crazy, so PCRE
 1985|       |    now gives an error. */
 1986|       |
 1987|     20|    else
 1988|     20|      {
 1989|     20|      if (ptr < ptrend && *ptr == CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|     20|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (1989:11): [True: 20, False: 0]
  |  Branch (1989:27): [True: 0, False: 20]
  ------------------
 1990|      0|        {
 1991|      0|        ptr++;
 1992|      0|        while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                      while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1992:16): [True: 0, False: 0]
  |  Branch (1992:33): [True: 0, False: 0]
  |  Branch (1992:55): [True: 0, False: 0]
  ------------------
 1993|       |
 1994|      0|#ifndef EBCDIC
 1995|      0|        COME_FROM_NU:
 1996|      0|#endif
 1997|      0|        if (ptr >= ptrend || *ptr == CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|      0|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1997:13): [True: 0, False: 0]
  |  Branch (1997:30): [True: 0, False: 0]
  ------------------
 1998|      0|          {
 1999|      0|          *errorcodeptr = ERR78;
 2000|      0|          break;
 2001|      0|          }
 2002|      0|        c = 0;
 2003|      0|        overflow = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 2004|       |
 2005|      0|        while (ptr < ptrend && (cc = XDIGIT(*ptr)) != 0xff)
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (2005:16): [True: 0, False: 0]
  |  Branch (2005:32): [True: 0, False: 0]
  ------------------
 2006|      0|          {
 2007|      0|          ptr++;
 2008|      0|          if (c == 0 && cc == 0) continue;   /* Leading zeroes */
  ------------------
  |  Branch (2008:15): [True: 0, False: 0]
  |  Branch (2008:25): [True: 0, False: 0]
  ------------------
 2009|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 2010|       |          if (c >= 0x10000000l) { overflow = TRUE; break; }
 2011|       |#endif
 2012|      0|          c = (c << 4) | cc;
 2013|      0|          if ((utf && c > 0x10ffffU) || (!utf && c > MAX_NON_UTF_CHAR))
  ------------------
  |  | 1927|      0|#define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (2013:16): [True: 0, False: 0]
  |  Branch (2013:23): [True: 0, False: 0]
  |  Branch (2013:42): [True: 0, False: 0]
  |  Branch (2013:50): [True: 0, False: 0]
  ------------------
 2014|      0|            {
 2015|      0|            overflow = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 2016|      0|            break;
 2017|      0|            }
 2018|      0|          }
 2019|       |
 2020|       |        /* Perl ignores spaces and tabs before } */
 2021|       |
 2022|      0|        while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                      while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (2022:16): [True: 0, False: 0]
  |  Branch (2022:33): [True: 0, False: 0]
  |  Branch (2022:55): [True: 0, False: 0]
  ------------------
 2023|       |
 2024|       |        /* On overflow, skip remaining hex digits */
 2025|       |
 2026|      0|        if (overflow)
  ------------------
  |  Branch (2026:13): [True: 0, False: 0]
  ------------------
 2027|      0|          {
 2028|      0|          while (ptr < ptrend && XDIGIT(*ptr) != 0xff) ptr++;
  ------------------
  |  |   74|      0|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (2028:18): [True: 0, False: 0]
  |  Branch (2028:34): [True: 0, False: 0]
  ------------------
 2029|      0|          *errorcodeptr = ERR34;
 2030|      0|          }
 2031|      0|        else if (ptr < ptrend && *ptr++ == CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|      0|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (2031:18): [True: 0, False: 0]
  |  Branch (2031:34): [True: 0, False: 0]
  ------------------
 2032|      0|          {
 2033|      0|          if (utf && c >= 0xd800 && c <= 0xdfff &&
  ------------------
  |  Branch (2033:15): [True: 0, False: 0]
  |  Branch (2033:22): [True: 0, False: 0]
  |  Branch (2033:37): [True: 0, False: 0]
  ------------------
 2034|      0|              (xoptions & PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES) == 0)
  ------------------
  |  |  149|      0|#define PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES  0x00000001u  /* C */
  ------------------
  |  Branch (2034:15): [True: 0, False: 0]
  ------------------
 2035|      0|            {
 2036|      0|            ptr--;
 2037|      0|            *errorcodeptr = ERR73;
 2038|      0|            }
 2039|      0|          }
 2040|       |
 2041|       |        /* If the sequence of hex digits (followed by optional space) does not
 2042|       |        end with '}', give an error. We used just to recognize this construct
 2043|       |        and fall through to the normal \x handling, but nowadays Perl gives an
 2044|       |        error, which seems much more sensible, so we do too. */
 2045|       |
 2046|      0|        else
 2047|      0|          {
 2048|      0|          ptr--;
 2049|      0|          *errorcodeptr = ERR67;
 2050|      0|          }
 2051|      0|        }   /* End of \x{} processing */
 2052|       |
 2053|       |      /* Read a up to two hex digits after \x */
 2054|       |
 2055|     20|      else
 2056|     20|        {
 2057|     20|        c = 0;
 2058|     20|        if (ptr >= ptrend || (cc = XDIGIT(*ptr)) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|     20|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (2058:13): [True: 0, False: 20]
  |  Branch (2058:30): [True: 4, False: 16]
  ------------------
 2059|     16|        ptr++;
 2060|     16|        c = cc;
 2061|     16|        if (ptr >= ptrend || (cc = XDIGIT(*ptr)) == 0xff) break;  /* Not a hex digit */
  ------------------
  |  |   74|     15|#define XDIGIT(c)                xdigitab[c]
  ------------------
  |  Branch (2061:13): [True: 1, False: 15]
  |  Branch (2061:30): [True: 9, False: 6]
  ------------------
 2062|      6|        ptr++;
 2063|      6|        c = (c << 4) | cc;
 2064|      6|        }     /* End of \xdd handling */
 2065|     20|      }       /* End of Perl-style \x handling */
 2066|      6|    break;
 2067|       |
 2068|       |    /* The handling of \c is different in ASCII and EBCDIC environments. In an
 2069|       |    ASCII (or Unicode) environment, an error is given if the character
 2070|       |    following \c is not a printable ASCII character. Otherwise, the following
 2071|       |    character is upper-cased if it is a letter, and after that the 0x40 bit is
 2072|       |    flipped. The result is the value of the escape.
 2073|       |
 2074|       |    In an EBCDIC environment the handling of \c is compatible with the
 2075|       |    specification in the perlebcdic document. The following character must be
 2076|       |    a letter or one of small number of special characters. These provide a
 2077|       |    means of defining the character values 0-31.
 2078|       |
 2079|       |    For testing the EBCDIC handling of \c in an ASCII environment, recognize
 2080|       |    the EBCDIC value of 'c' explicitly. */
 2081|       |
 2082|       |#if defined EBCDIC && 'a' != 0x81
 2083|       |    case 0x83:
 2084|       |#else
 2085|     10|    case CHAR_c:
  ------------------
  |  | 1067|     10|#define CHAR_c                      '\143'
  ------------------
  |  Branch (2085:5): [True: 10, False: 50]
  ------------------
 2086|     10|#endif
 2087|     10|    if (ptr >= ptrend)
  ------------------
  |  Branch (2087:9): [True: 0, False: 10]
  ------------------
 2088|      0|      {
 2089|      0|      *errorcodeptr = ERR2;
 2090|      0|      break;
 2091|      0|      }
 2092|     10|    c = *ptr;
 2093|     10|    if (c >= CHAR_a && c <= CHAR_z) c = UPPER_CASE(c);
  ------------------
  |  | 1065|     20|#define CHAR_a                      '\141'
  ------------------
                  if (c >= CHAR_a && c <= CHAR_z) c = UPPER_CASE(c);
  ------------------
  |  | 1090|      0|#define CHAR_z                      '\172'
  ------------------
                  if (c >= CHAR_a && c <= CHAR_z) c = UPPER_CASE(c);
  ------------------
  |  |  509|      0|#define UPPER_CASE(c)       (c-32)
  ------------------
  |  Branch (2093:9): [True: 0, False: 10]
  |  Branch (2093:24): [True: 0, False: 0]
  ------------------
 2094|       |
 2095|       |    /* Handle \c in an ASCII/Unicode environment. */
 2096|       |
 2097|     10|#ifndef EBCDIC    /* ASCII/UTF-8 coding */
 2098|     10|    if (c < 32 || c > 126)  /* Excludes all non-printable ASCII */
  ------------------
  |  Branch (2098:9): [True: 0, False: 10]
  |  Branch (2098:19): [True: 0, False: 10]
  ------------------
 2099|      0|      {
 2100|      0|      *errorcodeptr = ERR68;
 2101|      0|      break;
 2102|      0|      }
 2103|     10|    c ^= 0x40;
 2104|       |
 2105|       |    /* Handle \c in an EBCDIC environment. The special case \c? is converted to
 2106|       |    255 (0xff) or 95 (0x5f) if other characters suggest we are using the
 2107|       |    POSIX-BC encoding. (This is the way Perl indicates that it handles \c?.)
 2108|       |    The other valid sequences correspond to a list of specific characters. */
 2109|       |
 2110|       |#else
 2111|       |    if (c == CHAR_QUESTION_MARK)
 2112|       |      c = ('\\' == 188 && '`' == 74)? 0x5f : 0xff;
 2113|       |    else
 2114|       |      {
 2115|       |      for (i = 0; i < 32; i++)
 2116|       |        {
 2117|       |        if (c == ebcdic_escape_c[i]) break;
 2118|       |        }
 2119|       |      if (i < 32) c = i; else *errorcodeptr = ERR68;
 2120|       |      }
 2121|       |#endif  /* EBCDIC */
 2122|       |
 2123|     10|    ptr++;
 2124|     10|    break;
 2125|       |
 2126|       |    /* Any other alphanumeric following \ is an error. Perl gives an error only
 2127|       |    if in warning mode, but PCRE doesn't have a warning mode. */
 2128|       |
 2129|      0|    default:
  ------------------
  |  Branch (2129:5): [True: 0, False: 60]
  ------------------
 2130|      0|    *errorcodeptr = ERR3;
 2131|      0|    *ptrptr = ptr - 1;     /* Point to the character at fault */
 2132|      0|    return 0;
 2133|     60|    }
 2134|     60|  }
 2135|       |
 2136|       |/* Set the pointer to the next character before returning. */
 2137|       |
 2138|  1.08k|*ptrptr = ptr;
 2139|  1.08k|*chptr = c;
 2140|  1.08k|return escape;
 2141|  1.08k|}
php_pcre2_compile:
10128|    344|{
10129|    344|BOOL utf;                             /* Set TRUE for UTF mode */
10130|    344|BOOL ucp;                             /* Set TRUE for UCP mode */
10131|    344|BOOL has_lookbehind = FALSE;          /* Set TRUE if a lookbehind is found */
  ------------------
  |  |   87|    344|#define FALSE   0
  ------------------
10132|    344|BOOL zero_terminated;                 /* Set TRUE for zero-terminated pattern */
10133|    344|pcre2_real_code *re = NULL;           /* What we will return */
  ------------------
  |  |  826|    344|#define pcre2_real_code             PCRE2_SUFFIX(pcre2_real_code_)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10134|    344|compile_block cb;                     /* "Static" compile-time data */
  ------------------
  |  | 2007|    344|#define compile_block                PCRE2_SUFFIX(compile_block_)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10135|    344|const uint8_t *tables;                /* Char tables base pointer */
10136|       |
10137|    344|PCRE2_UCHAR *code;                    /* Current pointer in compiled code */
  ------------------
  |  |  819|    344|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10138|    344|PCRE2_SPTR codestart;                 /* Start of compiled code */
  ------------------
  |  |  820|    344|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10139|    344|PCRE2_SPTR ptr;                       /* Current pointer in pattern */
  ------------------
  |  |  820|    344|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10140|    344|uint32_t *pptr;                       /* Current pointer in parsed pattern */
10141|       |
10142|    344|PCRE2_SIZE length = 1;                /* Allow for final END opcode */
  ------------------
  |  |  479|    344|#define PCRE2_SIZE            size_t
  ------------------
10143|    344|PCRE2_SIZE usedlength;                /* Actual length used */
  ------------------
  |  |  479|    344|#define PCRE2_SIZE            size_t
  ------------------
10144|    344|PCRE2_SIZE re_blocksize;              /* Size of memory block */
  ------------------
  |  |  479|    344|#define PCRE2_SIZE            size_t
  ------------------
10145|    344|PCRE2_SIZE big32count = 0;            /* 32-bit literals >= 0x80000000 */
  ------------------
  |  |  479|    344|#define PCRE2_SIZE            size_t
  ------------------
10146|    344|PCRE2_SIZE parsed_size_needed;        /* Needed for parsed pattern */
  ------------------
  |  |  479|    344|#define PCRE2_SIZE            size_t
  ------------------
10147|       |
10148|    344|uint32_t firstcuflags, reqcuflags;    /* Type of first/req code unit */
10149|    344|uint32_t firstcu, reqcu;              /* Value of first/req code unit */
10150|    344|uint32_t setflags = 0;                /* NL and BSR set flags */
10151|       |
10152|    344|uint32_t skipatstart;                 /* When checking (*UTF) etc */
10153|    344|uint32_t limit_heap  = UINT32_MAX;
10154|    344|uint32_t limit_match = UINT32_MAX;    /* Unset match limits */
10155|    344|uint32_t limit_depth = UINT32_MAX;
10156|       |
10157|    344|int newline = 0;                      /* Unset; can be set by the pattern */
10158|    344|int bsr = 0;                          /* Unset; can be set by the pattern */
10159|    344|int errorcode = 0;                    /* Initialize to avoid compiler warn */
10160|    344|int regexrc;                          /* Return from compile */
10161|       |
10162|    344|uint32_t i;                           /* Local loop counter */
10163|       |
10164|       |/* Comments at the head of this file explain about these variables. */
10165|       |
10166|    344|uint32_t stack_groupinfo[GROUPINFO_DEFAULT_SIZE];
10167|    344|uint32_t stack_parsed_pattern[PARSED_PATTERN_DEFAULT_SIZE];
10168|    344|named_group named_groups[NAMED_GROUP_LIST_SIZE];
  ------------------
  |  | 2010|    344|#define named_group                  PCRE2_SUFFIX(named_group_)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10169|       |
10170|       |/* The workspace is used in different ways in the different compiling phases.
10171|       |It needs to be 16-bit aligned for the preliminary parsing scan. */
10172|       |
10173|    344|uint32_t c16workspace[C16_WORK_SIZE];
10174|    344|PCRE2_UCHAR *cworkspace = (PCRE2_UCHAR *)c16workspace;
  ------------------
  |  |  819|    344|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10175|       |
10176|       |
10177|       |/* -------------- Check arguments and set up the pattern ----------------- */
10178|       |
10179|       |/* There must be error code and offset pointers. */
10180|       |
10181|    344|if (errorptr == NULL || erroroffset == NULL) return NULL;
  ------------------
  |  Branch (10181:5): [True: 0, False: 344]
  |  Branch (10181:25): [True: 0, False: 344]
  ------------------
10182|    344|*errorptr = ERR0;
10183|    344|*erroroffset = 0;
10184|       |
10185|       |/* There must be a pattern, but NULL is allowed with zero length. */
10186|       |
10187|    344|if (pattern == NULL)
  ------------------
  |  Branch (10187:5): [True: 0, False: 344]
  ------------------
10188|      0|  {
10189|      0|  if (patlen == 0) pattern = (PCRE2_SPTR)""; else
  ------------------
  |  Branch (10189:7): [True: 0, False: 0]
  ------------------
10190|      0|    {
10191|      0|    *errorptr = ERR16;
10192|      0|    return NULL;
10193|      0|    }
10194|      0|  }
10195|       |
10196|       |/* A NULL compile context means "use a default context" */
10197|       |
10198|    344|if (ccontext == NULL)
  ------------------
  |  Branch (10198:5): [True: 0, False: 344]
  ------------------
10199|      0|  ccontext = (pcre2_compile_context *)(&PRIV(default_compile_context));
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1947|      0|#define _pcre2_default_compile_context PCRE2_SUFFIX(_pcre2_default_compile_context_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10200|       |
10201|       |/* PCRE2_MATCH_INVALID_UTF implies UTF */
10202|       |
10203|    344|if ((options & PCRE2_MATCH_INVALID_UTF) != 0) options |= PCRE2_UTF;
  ------------------
  |  |  145|    344|#define PCRE2_MATCH_INVALID_UTF   0x04000000u  /*   J M D */
  ------------------
              if ((options & PCRE2_MATCH_INVALID_UTF) != 0) options |= PCRE2_UTF;
  ------------------
  |  |  138|      0|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (10203:5): [True: 0, False: 344]
  ------------------
10204|       |
10205|       |/* Check that all undefined public option bits are zero. */
10206|       |
10207|    344|if ((options & ~PUBLIC_COMPILE_OPTIONS) != 0 ||
  ------------------
  |  |  775|    344|  (PUBLIC_LITERAL_COMPILE_OPTIONS| \
  |  |  ------------------
  |  |  |  |  770|    344|  (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  105|    344|#define PCRE2_ANCHORED            0x80000000u
  |  |  |  |  ------------------
  |  |  |  |                 (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  121|    344|#define PCRE2_AUTO_CALLOUT        0x00000004u  /* C       */
  |  |  |  |  ------------------
  |  |  |  |                 (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  122|    344|#define PCRE2_CASELESS            0x00000008u  /* C       */
  |  |  |  |  ------------------
  |  |  |  |                 (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  107|    344|#define PCRE2_ENDANCHORED         0x20000000u
  |  |  |  |  ------------------
  |  |  |  |  771|    344|   PCRE2_FIRSTLINE|PCRE2_LITERAL|PCRE2_MATCH_INVALID_UTF| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|    344|#define PCRE2_FIRSTLINE           0x00000100u  /*   J M D */
  |  |  |  |  ------------------
  |  |  |  |                  PCRE2_FIRSTLINE|PCRE2_LITERAL|PCRE2_MATCH_INVALID_UTF| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  144|    344|#define PCRE2_LITERAL             0x02000000u  /* C       */
  |  |  |  |  ------------------
  |  |  |  |                  PCRE2_FIRSTLINE|PCRE2_LITERAL|PCRE2_MATCH_INVALID_UTF| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  145|    344|#define PCRE2_MATCH_INVALID_UTF   0x04000000u  /*   J M D */
  |  |  |  |  ------------------
  |  |  |  |  772|    344|   PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|    344|#define PCRE2_NO_START_OPTIMIZE   0x00010000u  /*   J M D */
  |  |  |  |  ------------------
  |  |  |  |                  PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  106|    344|#define PCRE2_NO_UTF_CHECK        0x40000000u
  |  |  |  |  ------------------
  |  |  |  |                  PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  142|    344|#define PCRE2_USE_OFFSET_LIMIT    0x00800000u  /*   J M D */
  |  |  |  |  ------------------
  |  |  |  |                  PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|    344|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  776|    344|   PCRE2_ALLOW_EMPTY_CLASS|PCRE2_ALT_BSUX|PCRE2_ALT_CIRCUMFLEX| \
  |  |  ------------------
  |  |  |  |  119|    344|#define PCRE2_ALLOW_EMPTY_CLASS   0x00000001u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_ALLOW_EMPTY_CLASS|PCRE2_ALT_BSUX|PCRE2_ALT_CIRCUMFLEX| \
  |  |  ------------------
  |  |  |  |  120|    344|#define PCRE2_ALT_BSUX            0x00000002u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_ALLOW_EMPTY_CLASS|PCRE2_ALT_BSUX|PCRE2_ALT_CIRCUMFLEX| \
  |  |  ------------------
  |  |  |  |  140|    344|#define PCRE2_ALT_CIRCUMFLEX      0x00200000u  /*   J M D */
  |  |  ------------------
  |  |  777|    344|   PCRE2_ALT_VERBNAMES|PCRE2_DOLLAR_ENDONLY|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  141|    344|#define PCRE2_ALT_VERBNAMES       0x00400000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_ALT_VERBNAMES|PCRE2_DOLLAR_ENDONLY|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  123|    344|#define PCRE2_DOLLAR_ENDONLY      0x00000010u  /*   J M D */
  |  |  ------------------
  |  |                  PCRE2_ALT_VERBNAMES|PCRE2_DOLLAR_ENDONLY|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  124|    344|#define PCRE2_DOTALL              0x00000020u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_ALT_VERBNAMES|PCRE2_DOLLAR_ENDONLY|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  125|    344|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  |  |  ------------------
  |  |  778|    344|   PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MATCH_UNSET_BACKREF| \
  |  |  ------------------
  |  |  |  |  126|    344|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MATCH_UNSET_BACKREF| \
  |  |  ------------------
  |  |  |  |  143|    344|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MATCH_UNSET_BACKREF| \
  |  |  ------------------
  |  |  |  |  128|    344|#define PCRE2_MATCH_UNSET_BACKREF 0x00000200u  /* C J M   */
  |  |  ------------------
  |  |  779|    344|   PCRE2_MULTILINE|PCRE2_NEVER_BACKSLASH_C|PCRE2_NEVER_UCP| \
  |  |  ------------------
  |  |  |  |  129|    344|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_MULTILINE|PCRE2_NEVER_BACKSLASH_C|PCRE2_NEVER_UCP| \
  |  |  ------------------
  |  |  |  |  139|    344|#define PCRE2_NEVER_BACKSLASH_C   0x00100000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_MULTILINE|PCRE2_NEVER_BACKSLASH_C|PCRE2_NEVER_UCP| \
  |  |  ------------------
  |  |  |  |  130|    344|#define PCRE2_NEVER_UCP           0x00000800u  /* C       */
  |  |  ------------------
  |  |  780|    344|   PCRE2_NEVER_UTF|PCRE2_NO_AUTO_CAPTURE|PCRE2_NO_AUTO_POSSESS| \
  |  |  ------------------
  |  |  |  |  131|    344|#define PCRE2_NEVER_UTF           0x00001000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_NEVER_UTF|PCRE2_NO_AUTO_CAPTURE|PCRE2_NO_AUTO_POSSESS| \
  |  |  ------------------
  |  |  |  |  132|    344|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_NEVER_UTF|PCRE2_NO_AUTO_CAPTURE|PCRE2_NO_AUTO_POSSESS| \
  |  |  ------------------
  |  |  |  |  133|    344|#define PCRE2_NO_AUTO_POSSESS     0x00004000u  /* C       */
  |  |  ------------------
  |  |  781|    344|   PCRE2_NO_DOTSTAR_ANCHOR|PCRE2_UCP|PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  134|    344|#define PCRE2_NO_DOTSTAR_ANCHOR   0x00008000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_NO_DOTSTAR_ANCHOR|PCRE2_UCP|PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  136|    344|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  |  |  ------------------
  |  |                  PCRE2_NO_DOTSTAR_ANCHOR|PCRE2_UCP|PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  137|    344|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  |  |  ------------------
  ------------------
  |  Branch (10207:5): [True: 0, False: 344]
  ------------------
10208|    344|    (ccontext->extra_options & ~PUBLIC_COMPILE_EXTRA_OPTIONS) != 0)
  ------------------
  |  |  787|    344|   (PUBLIC_LITERAL_COMPILE_EXTRA_OPTIONS| \
  |  |  ------------------
  |  |  |  |  784|    344|   (PCRE2_EXTRA_MATCH_LINE|PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_CASELESS_RESTRICT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  152|    344|#define PCRE2_EXTRA_MATCH_LINE               0x00000008u  /* C */
  |  |  |  |  ------------------
  |  |  |  |                  (PCRE2_EXTRA_MATCH_LINE|PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_CASELESS_RESTRICT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  151|    344|#define PCRE2_EXTRA_MATCH_WORD               0x00000004u  /* C */
  |  |  |  |  ------------------
  |  |  |  |                  (PCRE2_EXTRA_MATCH_LINE|PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_CASELESS_RESTRICT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|    344|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  788|    344|    PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES|PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL| \
  |  |  ------------------
  |  |  |  |  149|    344|#define PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES  0x00000001u  /* C */
  |  |  ------------------
  |  |                   PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES|PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL| \
  |  |  ------------------
  |  |  |  |  150|    344|#define PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL    0x00000002u  /* C */
  |  |  ------------------
  |  |  789|    344|    PCRE2_EXTRA_ESCAPED_CR_IS_LF|PCRE2_EXTRA_ALT_BSUX| \
  |  |  ------------------
  |  |  |  |  153|    344|#define PCRE2_EXTRA_ESCAPED_CR_IS_LF         0x00000010u  /* C */
  |  |  ------------------
  |  |                   PCRE2_EXTRA_ESCAPED_CR_IS_LF|PCRE2_EXTRA_ALT_BSUX| \
  |  |  ------------------
  |  |  |  |  154|    344|#define PCRE2_EXTRA_ALT_BSUX                 0x00000020u  /* C */
  |  |  ------------------
  |  |  790|    344|    PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK|PCRE2_EXTRA_ASCII_BSD| \
  |  |  ------------------
  |  |  |  |  155|    344|#define PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK     0x00000040u  /* C */
  |  |  ------------------
  |  |                   PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK|PCRE2_EXTRA_ASCII_BSD| \
  |  |  ------------------
  |  |  |  |  157|    344|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  |  |  ------------------
  |  |  791|    344|    PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW|PCRE2_EXTRA_ASCII_POSIX| \
  |  |  ------------------
  |  |  |  |  158|    344|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  |  |  ------------------
  |  |                   PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW|PCRE2_EXTRA_ASCII_POSIX| \
  |  |  ------------------
  |  |  |  |  159|    344|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  |  |  ------------------
  |  |                   PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW|PCRE2_EXTRA_ASCII_POSIX| \
  |  |  ------------------
  |  |  |  |  160|    344|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  |  |  ------------------
  |  |  792|    344|    PCRE2_EXTRA_ASCII_DIGIT)
  |  |  ------------------
  |  |  |  |  161|    344|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  |  |  ------------------
  ------------------
  |  Branch (10208:5): [True: 0, False: 344]
  ------------------
10209|      0|  {
10210|      0|  *errorptr = ERR17;
10211|      0|  return NULL;
10212|      0|  }
10213|       |
10214|    344|if ((options & PCRE2_LITERAL) != 0 &&
  ------------------
  |  |  144|    344|#define PCRE2_LITERAL             0x02000000u  /* C       */
  ------------------
  |  Branch (10214:5): [True: 0, False: 344]
  ------------------
10215|      0|    ((options & ~PUBLIC_LITERAL_COMPILE_OPTIONS) != 0 ||
  ------------------
  |  |  770|      0|  (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  ------------------
  |  |  |  |  105|      0|#define PCRE2_ANCHORED            0x80000000u
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  ------------------
  |  |  |  |  121|      0|#define PCRE2_AUTO_CALLOUT        0x00000004u  /* C       */
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  ------------------
  |  |  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_AUTO_CALLOUT|PCRE2_CASELESS|PCRE2_ENDANCHORED| \
  |  |  ------------------
  |  |  |  |  107|      0|#define PCRE2_ENDANCHORED         0x20000000u
  |  |  ------------------
  |  |  771|      0|   PCRE2_FIRSTLINE|PCRE2_LITERAL|PCRE2_MATCH_INVALID_UTF| \
  |  |  ------------------
  |  |  |  |  127|      0|#define PCRE2_FIRSTLINE           0x00000100u  /*   J M D */
  |  |  ------------------
  |  |                  PCRE2_FIRSTLINE|PCRE2_LITERAL|PCRE2_MATCH_INVALID_UTF| \
  |  |  ------------------
  |  |  |  |  144|      0|#define PCRE2_LITERAL             0x02000000u  /* C       */
  |  |  ------------------
  |  |                  PCRE2_FIRSTLINE|PCRE2_LITERAL|PCRE2_MATCH_INVALID_UTF| \
  |  |  ------------------
  |  |  |  |  145|      0|#define PCRE2_MATCH_INVALID_UTF   0x04000000u  /*   J M D */
  |  |  ------------------
  |  |  772|      0|   PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  ------------------
  |  |  |  |  135|      0|#define PCRE2_NO_START_OPTIMIZE   0x00010000u  /*   J M D */
  |  |  ------------------
  |  |                  PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  ------------------
  |  |  |  |  106|      0|#define PCRE2_NO_UTF_CHECK        0x40000000u
  |  |  ------------------
  |  |                  PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  ------------------
  |  |  |  |  142|      0|#define PCRE2_USE_OFFSET_LIMIT    0x00800000u  /*   J M D */
  |  |  ------------------
  |  |                  PCRE2_NO_START_OPTIMIZE|PCRE2_NO_UTF_CHECK|PCRE2_USE_OFFSET_LIMIT|PCRE2_UTF)
  |  |  ------------------
  |  |  |  |  138|      0|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  |  |  ------------------
  ------------------
  |  Branch (10215:6): [True: 0, False: 0]
  ------------------
10216|      0|     (ccontext->extra_options & ~PUBLIC_LITERAL_COMPILE_EXTRA_OPTIONS) != 0))
  ------------------
  |  |  784|      0|   (PCRE2_EXTRA_MATCH_LINE|PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_CASELESS_RESTRICT)
  |  |  ------------------
  |  |  |  |  152|      0|#define PCRE2_EXTRA_MATCH_LINE               0x00000008u  /* C */
  |  |  ------------------
  |  |                  (PCRE2_EXTRA_MATCH_LINE|PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_CASELESS_RESTRICT)
  |  |  ------------------
  |  |  |  |  151|      0|#define PCRE2_EXTRA_MATCH_WORD               0x00000004u  /* C */
  |  |  ------------------
  |  |                  (PCRE2_EXTRA_MATCH_LINE|PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_CASELESS_RESTRICT)
  |  |  ------------------
  |  |  |  |  156|      0|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  |  |  ------------------
  ------------------
  |  Branch (10216:6): [True: 0, False: 0]
  ------------------
10217|      0|  {
10218|      0|  *errorptr = ERR92;
10219|      0|  return NULL;
10220|      0|  }
10221|       |
10222|       |/* A zero-terminated pattern is indicated by the special length value
10223|       |PCRE2_ZERO_TERMINATED. Check for an overlong pattern. */
10224|       |
10225|    344|if ((zero_terminated = (patlen == PCRE2_ZERO_TERMINATED)))
  ------------------
  |  |  481|    344|#define PCRE2_ZERO_TERMINATED (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (10225:5): [True: 0, False: 344]
  ------------------
10226|      0|  patlen = PRIV(strlen)(pattern);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2035|      0|#define _pcre2_strlen                PCRE2_SUFFIX(_pcre2_strlen_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10227|       |
10228|    344|if (patlen > ccontext->max_pattern_length)
  ------------------
  |  Branch (10228:5): [True: 0, False: 344]
  ------------------
10229|      0|  {
10230|      0|  *errorptr = ERR88;
10231|      0|  return NULL;
10232|      0|  }
10233|       |
10234|       |/* From here on, all returns from this function should end up going via the
10235|       |EXIT label. */
10236|       |
10237|       |
10238|       |/* ------------ Initialize the "static" compile data -------------- */
10239|       |
10240|    344|tables = (ccontext->tables != NULL)? ccontext->tables : PRIV(default_tables);
  ------------------
  |  |  195|    344|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1950|    344|#define _pcre2_default_tables          PCRE2_SUFFIX(_pcre2_default_tables_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    688|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10240:10): [True: 0, False: 344]
  ------------------
10241|       |
10242|    344|cb.lcc = tables + lcc_offset;          /* Individual */
  ------------------
  |  |  606|    344|#define lcc_offset      0                           /* Lower case */
  ------------------
10243|    344|cb.fcc = tables + fcc_offset;          /*   character */
  ------------------
  |  |  607|    344|#define fcc_offset    256                           /* Flip case */
  ------------------
10244|    344|cb.cbits = tables + cbits_offset;      /*      tables */
  ------------------
  |  |  608|    344|#define cbits_offset  512                           /* Character classes */
  ------------------
10245|    344|cb.ctypes = tables + ctypes_offset;
  ------------------
  |  |  609|    344|#define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  ------------------
  |  |  |  |  608|    344|#define cbits_offset  512                           /* Character classes */
  |  |  ------------------
  |  |               #define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  ------------------
  |  |  |  |  591|    344|#define cbit_length  320      /* Length of the cbits table */
  |  |  ------------------
  ------------------
10246|       |
10247|    344|cb.assert_depth = 0;
10248|    344|cb.bracount = 0;
10249|    344|cb.cx = ccontext;
10250|    344|cb.dupnames = FALSE;
  ------------------
  |  |   87|    344|#define FALSE   0
  ------------------
10251|    344|cb.end_pattern = pattern + patlen;
10252|    344|cb.erroroffset = 0;
10253|    344|cb.external_flags = 0;
10254|    344|cb.external_options = options;
10255|    344|cb.groupinfo = stack_groupinfo;
10256|    344|cb.had_recurse = FALSE;
  ------------------
  |  |   87|    344|#define FALSE   0
  ------------------
10257|    344|cb.lastcapture = 0;
10258|    344|cb.max_lookbehind = 0;                               /* Max encountered */
10259|    344|cb.max_varlookbehind = ccontext->max_varlookbehind;  /* Limit */
10260|    344|cb.name_entry_size = 0;
10261|    344|cb.name_table = NULL;
10262|    344|cb.named_groups = named_groups;
10263|    344|cb.named_group_list_size = NAMED_GROUP_LIST_SIZE;
  ------------------
  |  |  187|    344|#define NAMED_GROUP_LIST_SIZE  20
  ------------------
10264|    344|cb.names_found = 0;
10265|    344|cb.parens_depth = 0;
10266|    344|cb.parsed_pattern = stack_parsed_pattern;
10267|    344|cb.req_varyopt = 0;
10268|    344|cb.start_code = cworkspace;
10269|    344|cb.start_pattern = pattern;
10270|    344|cb.start_workspace = cworkspace;
10271|    344|cb.workspace_size = COMPILE_WORK_SIZE;
  ------------------
  |  |  166|    344|#define COMPILE_WORK_SIZE (3000*LINK_SIZE)   /* Size in code units */
  |  |  ------------------
  |  |  |  |   98|    344|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
10272|       |
10273|       |/* Maximum back reference and backref bitmap. The bitmap records up to 31 back
10274|       |references to help in deciding whether (.*) can be treated as anchored or not.
10275|       |*/
10276|       |
10277|    344|cb.top_backref = 0;
10278|    344|cb.backref_map = 0;
10279|       |
10280|       |/* Escape sequences \1 to \9 are always back references, but as they are only
10281|       |two characters long, only two elements can be used in the parsed_pattern
10282|       |vector. The first contains the reference, and we'd like to use the second to
10283|       |record the offset in the pattern, so that forward references to non-existent
10284|       |groups can be diagnosed later with an offset. However, on 64-bit systems,
10285|       |PCRE2_SIZE won't fit. Instead, we have a vector of offsets for the first
10286|       |occurrence of \1 to \9, indexed by the second parsed_pattern value. All other
10287|       |references have enough space for the offset to be put into the parsed pattern.
10288|       |*/
10289|       |
10290|  3.78k|for (i = 0; i < 10; i++) cb.small_ref_offset[i] = PCRE2_UNSET;
  ------------------
  |  |  482|  3.78k|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (10290:13): [True: 3.44k, False: 344]
  ------------------
10291|       |
10292|       |
10293|       |/* --------------- Start looking at the pattern --------------- */
10294|       |
10295|       |/* Unless PCRE2_LITERAL is set, check for global one-time option settings at
10296|       |the start of the pattern, and remember the offset to the actual regex. With
10297|       |valgrind support, make the terminator of a zero-terminated pattern
10298|       |inaccessible. This catches bugs that would otherwise only show up for
10299|       |non-zero-terminated patterns. */
10300|       |
10301|       |#ifdef SUPPORT_VALGRIND
10302|       |if (zero_terminated) VALGRIND_MAKE_MEM_NOACCESS(pattern + patlen, CU2BYTES(1));
10303|       |#endif
10304|       |
10305|    344|ptr = pattern;
10306|    344|skipatstart = 0;
10307|       |
10308|    344|if ((options & PCRE2_LITERAL) == 0)
  ------------------
  |  |  144|    344|#define PCRE2_LITERAL             0x02000000u  /* C       */
  ------------------
  |  Branch (10308:5): [True: 344, False: 0]
  ------------------
10309|    344|  {
10310|    344|  while (patlen - skipatstart >= 2 &&
  ------------------
  |  Branch (10310:10): [True: 343, False: 1]
  ------------------
10311|    343|         ptr[skipatstart] == CHAR_LEFT_PARENTHESIS &&
  ------------------
  |  | 1008|    687|#define CHAR_LEFT_PARENTHESIS       '\050'
  ------------------
  |  Branch (10311:10): [True: 4, False: 339]
  ------------------
10312|      4|         ptr[skipatstart+1] == CHAR_ASTERISK)
  ------------------
  |  | 1010|      4|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (10312:10): [True: 0, False: 4]
  ------------------
10313|      0|    {
10314|      0|    for (i = 0; i < sizeof(pso_list)/sizeof(pso); i++)
  ------------------
  |  Branch (10314:17): [True: 0, False: 0]
  ------------------
10315|      0|      {
10316|      0|      uint32_t c, pp;
10317|      0|      const pso *p = pso_list + i;
10318|       |
10319|      0|      if (patlen - skipatstart - 2 >= p->length &&
  ------------------
  |  Branch (10319:11): [True: 0, False: 0]
  ------------------
10320|      0|          PRIV(strncmp_c8)(ptr + skipatstart + 2, (char *)(p->name),
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|      0|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10320:11): [True: 0, False: 0]
  ------------------
10321|      0|            p->length) == 0)
10322|      0|        {
10323|      0|        skipatstart += p->length + 2;
10324|      0|        switch(p->type)
  ------------------
  |  Branch (10324:16): [True: 0, False: 0]
  ------------------
10325|      0|          {
10326|      0|          case PSO_OPT:
  ------------------
  |  Branch (10326:11): [True: 0, False: 0]
  ------------------
10327|      0|          cb.external_options |= p->value;
10328|      0|          break;
10329|       |
10330|      0|          case PSO_FLG:
  ------------------
  |  Branch (10330:11): [True: 0, False: 0]
  ------------------
10331|      0|          setflags |= p->value;
10332|      0|          break;
10333|       |
10334|      0|          case PSO_NL:
  ------------------
  |  Branch (10334:11): [True: 0, False: 0]
  ------------------
10335|      0|          newline = p->value;
10336|      0|          setflags |= PCRE2_NL_SET;
  ------------------
  |  |  540|      0|#define PCRE2_NL_SET        0x00008000  /* newline was set in the pattern */
  ------------------
10337|      0|          break;
10338|       |
10339|      0|          case PSO_BSR:
  ------------------
  |  Branch (10339:11): [True: 0, False: 0]
  ------------------
10340|      0|          bsr = p->value;
10341|      0|          setflags |= PCRE2_BSR_SET;
  ------------------
  |  |  539|      0|#define PCRE2_BSR_SET       0x00004000  /* BSR was set in the pattern */
  ------------------
10342|      0|          break;
10343|       |
10344|      0|          case PSO_LIMM:
  ------------------
  |  Branch (10344:11): [True: 0, False: 0]
  ------------------
10345|      0|          case PSO_LIMD:
  ------------------
  |  Branch (10345:11): [True: 0, False: 0]
  ------------------
10346|      0|          case PSO_LIMH:
  ------------------
  |  Branch (10346:11): [True: 0, False: 0]
  ------------------
10347|      0|          c = 0;
10348|      0|          pp = skipatstart;
10349|      0|          if (!IS_DIGIT(ptr[pp]))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10350|      0|            {
10351|      0|            errorcode = ERR60;
10352|      0|            ptr += pp;
10353|      0|            goto HAD_EARLY_ERROR;
10354|      0|            }
10355|      0|          while (IS_DIGIT(ptr[pp]))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10356|      0|            {
10357|      0|            if (c > UINT32_MAX / 10 - 1) break;   /* Integer overflow */
  ------------------
  |  Branch (10357:17): [True: 0, False: 0]
  ------------------
10358|      0|            c = c*10 + (ptr[pp++] - CHAR_0);
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
10359|      0|            }
10360|      0|          if (ptr[pp++] != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (10360:15): [True: 0, False: 0]
  ------------------
10361|      0|            {
10362|      0|            errorcode = ERR60;
10363|      0|            ptr += pp;
10364|      0|            goto HAD_EARLY_ERROR;
10365|      0|            }
10366|      0|          if (p->type == PSO_LIMH) limit_heap = c;
  ------------------
  |  Branch (10366:15): [True: 0, False: 0]
  ------------------
10367|      0|            else if (p->type == PSO_LIMM) limit_match = c;
  ------------------
  |  Branch (10367:22): [True: 0, False: 0]
  ------------------
10368|      0|            else limit_depth = c;
10369|      0|          skipatstart += pp - skipatstart;
10370|      0|          break;
10371|      0|          }
10372|      0|        break;   /* Out of the table scan loop */
10373|      0|        }
10374|      0|      }
10375|      0|    if (i >= sizeof(pso_list)/sizeof(pso)) break;   /* Out of pso loop */
  ------------------
  |  Branch (10375:9): [True: 0, False: 0]
  ------------------
10376|      0|    }
10377|    344|  }
10378|       |
10379|       |/* End of pattern-start options; advance to start of real regex. */
10380|       |
10381|    344|ptr += skipatstart;
10382|       |
10383|       |/* Can't support UTF or UCP if PCRE2 was built without Unicode support. */
10384|       |
10385|       |#ifndef SUPPORT_UNICODE
10386|       |if ((cb.external_options & (PCRE2_UTF|PCRE2_UCP)) != 0)
10387|       |  {
10388|       |  errorcode = ERR32;
10389|       |  goto HAD_EARLY_ERROR;
10390|       |  }
10391|       |#endif
10392|       |
10393|       |/* Check UTF. We have the original options in 'options', with that value as
10394|       |modified by (*UTF) etc in cb->external_options. The extra option
10395|       |PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES is not permitted in UTF-16 mode because the
10396|       |surrogate code points cannot be represented in UTF-16. */
10397|       |
10398|    344|utf = (cb.external_options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|    344|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
10399|    344|if (utf)
  ------------------
  |  Branch (10399:5): [True: 169, False: 175]
  ------------------
10400|    169|  {
10401|    169|  if ((options & PCRE2_NEVER_UTF) != 0)
  ------------------
  |  |  131|    169|#define PCRE2_NEVER_UTF           0x00001000u  /* C       */
  ------------------
  |  Branch (10401:7): [True: 0, False: 169]
  ------------------
10402|      0|    {
10403|      0|    errorcode = ERR74;
10404|      0|    goto HAD_EARLY_ERROR;
10405|      0|    }
10406|    169|  if ((options & PCRE2_NO_UTF_CHECK) == 0 &&
  ------------------
  |  |  106|    169|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
  |  Branch (10406:7): [True: 169, False: 0]
  ------------------
10407|    169|       (errorcode = PRIV(valid_utf)(pattern, patlen, erroroffset)) != 0)
  ------------------
  |  |  195|    169|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2039|    169|#define _pcre2_valid_utf             PCRE2_SUFFIX(_pcre2_valid_utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    169|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    169|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    169|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10407:8): [True: 4, False: 165]
  ------------------
10408|      4|    goto HAD_ERROR;  /* Offset was set by valid_utf() */
10409|       |
10410|       |#if PCRE2_CODE_UNIT_WIDTH == 16
10411|       |  if ((ccontext->extra_options & PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES) != 0)
10412|       |    {
10413|       |    errorcode = ERR91;
10414|       |    goto HAD_EARLY_ERROR;
10415|       |    }
10416|       |#endif
10417|    169|  }
10418|       |
10419|       |/* Check UCP lockout. */
10420|       |
10421|    340|ucp = (cb.external_options & PCRE2_UCP) != 0;
  ------------------
  |  |  136|    340|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
10422|    340|if (ucp && (cb.external_options & PCRE2_NEVER_UCP) != 0)
  ------------------
  |  |  130|    165|#define PCRE2_NEVER_UCP           0x00000800u  /* C       */
  ------------------
  |  Branch (10422:5): [True: 165, False: 175]
  |  Branch (10422:12): [True: 0, False: 165]
  ------------------
10423|      0|  {
10424|      0|  errorcode = ERR75;
10425|      0|  goto HAD_EARLY_ERROR;
10426|      0|  }
10427|       |
10428|       |/* Process the BSR setting. */
10429|       |
10430|    340|if (bsr == 0) bsr = ccontext->bsr_convention;
  ------------------
  |  Branch (10430:5): [True: 340, False: 0]
  ------------------
10431|       |
10432|       |/* Process the newline setting. */
10433|       |
10434|    340|if (newline == 0) newline = ccontext->newline_convention;
  ------------------
  |  Branch (10434:5): [True: 340, False: 0]
  ------------------
10435|    340|cb.nltype = NLTYPE_FIXED;
  ------------------
  |  |  490|    340|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
10436|    340|switch(newline)
10437|    340|  {
10438|      0|  case PCRE2_NEWLINE_CR:
  ------------------
  |  |  210|      0|#define PCRE2_NEWLINE_CR          1
  ------------------
  |  Branch (10438:3): [True: 0, False: 340]
  ------------------
10439|      0|  cb.nllen = 1;
10440|      0|  cb.nl[0] = CHAR_CR;
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
10441|      0|  break;
10442|       |
10443|    340|  case PCRE2_NEWLINE_LF:
  ------------------
  |  |  211|    340|#define PCRE2_NEWLINE_LF          2
  ------------------
  |  Branch (10443:3): [True: 340, False: 0]
  ------------------
10444|    340|  cb.nllen = 1;
10445|    340|  cb.nl[0] = CHAR_NL;
  ------------------
  |  |  992|    340|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|    340|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
10446|    340|  break;
10447|       |
10448|      0|  case PCRE2_NEWLINE_NUL:
  ------------------
  |  |  215|      0|#define PCRE2_NEWLINE_NUL         6
  ------------------
  |  Branch (10448:3): [True: 0, False: 340]
  ------------------
10449|      0|  cb.nllen = 1;
10450|      0|  cb.nl[0] = CHAR_NUL;
  ------------------
  |  |  999|      0|#define CHAR_NUL                    '\0'
  ------------------
10451|      0|  break;
10452|       |
10453|      0|  case PCRE2_NEWLINE_CRLF:
  ------------------
  |  |  212|      0|#define PCRE2_NEWLINE_CRLF        3
  ------------------
  |  Branch (10453:3): [True: 0, False: 340]
  ------------------
10454|      0|  cb.nllen = 2;
10455|      0|  cb.nl[0] = CHAR_CR;
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
10456|      0|  cb.nl[1] = CHAR_NL;
  ------------------
  |  |  992|      0|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
10457|      0|  break;
10458|       |
10459|      0|  case PCRE2_NEWLINE_ANY:
  ------------------
  |  |  213|      0|#define PCRE2_NEWLINE_ANY         4
  ------------------
  |  Branch (10459:3): [True: 0, False: 340]
  ------------------
10460|      0|  cb.nltype = NLTYPE_ANY;
  ------------------
  |  |  491|      0|#define NLTYPE_ANY      1     /* Newline is any Unicode line ending */
  ------------------
10461|      0|  break;
10462|       |
10463|      0|  case PCRE2_NEWLINE_ANYCRLF:
  ------------------
  |  |  214|      0|#define PCRE2_NEWLINE_ANYCRLF     5
  ------------------
  |  Branch (10463:3): [True: 0, False: 340]
  ------------------
10464|      0|  cb.nltype = NLTYPE_ANYCRLF;
  ------------------
  |  |  492|      0|#define NLTYPE_ANYCRLF  2     /* Newline is CR, LF, or CRLF */
  ------------------
10465|      0|  break;
10466|       |
10467|      0|  default:
  ------------------
  |  Branch (10467:3): [True: 0, False: 340]
  ------------------
10468|      0|  errorcode = ERR56;
10469|      0|  goto HAD_EARLY_ERROR;
10470|    340|  }
10471|       |
10472|       |/* Pre-scan the pattern to do two things: (1) Discover the named groups and
10473|       |their numerical equivalents, so that this information is always available for
10474|       |the remaining processing. (2) At the same time, parse the pattern and put a
10475|       |processed version into the parsed_pattern vector. This has escapes interpreted
10476|       |and comments removed (amongst other things).
10477|       |
10478|       |In all but one case, when PCRE2_AUTO_CALLOUT is not set, the number of unsigned
10479|       |32-bit ints in the parsed pattern is bounded by the length of the pattern plus
10480|       |one (for the terminator) plus four if PCRE2_EXTRA_WORD or PCRE2_EXTRA_LINE is
10481|       |set. The exceptional case is when running in 32-bit, non-UTF mode, when literal
10482|       |characters greater than META_END (0x80000000) have to be coded as two units. In
10483|       |this case, therefore, we scan the pattern to check for such values. */
10484|       |
10485|       |#if PCRE2_CODE_UNIT_WIDTH == 32
10486|       |if (!utf)
10487|       |  {
10488|       |  PCRE2_SPTR p;
10489|       |  for (p = ptr; p < cb.end_pattern; p++) if (*p >= META_END) big32count++;
10490|       |  }
10491|       |#endif
10492|       |
10493|       |/* Ensure that the parsed pattern buffer is big enough. When PCRE2_AUTO_CALLOUT
10494|       |is set we have to assume a numerical callout (4 elements) for each character
10495|       |plus one at the end. This is overkill, but memory is plentiful these days. For
10496|       |many smaller patterns the vector on the stack (which was set up above) can be
10497|       |used. */
10498|       |
10499|    340|parsed_size_needed = patlen - skipatstart + big32count;
10500|       |
10501|    340|if ((ccontext->extra_options &
  ------------------
  |  Branch (10501:5): [True: 0, False: 340]
  ------------------
10502|    340|     (PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_MATCH_LINE)) != 0)
  ------------------
  |  |  151|    340|#define PCRE2_EXTRA_MATCH_WORD               0x00000004u  /* C */
  ------------------
                   (PCRE2_EXTRA_MATCH_WORD|PCRE2_EXTRA_MATCH_LINE)) != 0)
  ------------------
  |  |  152|    340|#define PCRE2_EXTRA_MATCH_LINE               0x00000008u  /* C */
  ------------------
10503|      0|  parsed_size_needed += 4;
10504|       |
10505|    340|if ((options & PCRE2_AUTO_CALLOUT) != 0)
  ------------------
  |  |  121|    340|#define PCRE2_AUTO_CALLOUT        0x00000004u  /* C       */
  ------------------
  |  Branch (10505:5): [True: 0, False: 340]
  ------------------
10506|      0|  parsed_size_needed = (parsed_size_needed + 1) * 5;
10507|       |
10508|    340|if (parsed_size_needed >= PARSED_PATTERN_DEFAULT_SIZE)
  ------------------
  |  |  193|    340|#define PARSED_PATTERN_DEFAULT_SIZE 1024
  ------------------
  |  Branch (10508:5): [True: 0, False: 340]
  ------------------
10509|      0|  {
10510|      0|  uint32_t *heap_parsed_pattern = ccontext->memctl.malloc(
10511|      0|    (parsed_size_needed + 1) * sizeof(uint32_t), ccontext->memctl.memory_data);
10512|      0|  if (heap_parsed_pattern == NULL)
  ------------------
  |  Branch (10512:7): [True: 0, False: 0]
  ------------------
10513|      0|    {
10514|      0|    *errorptr = ERR21;
10515|      0|    goto EXIT;
10516|      0|    }
10517|      0|  cb.parsed_pattern = heap_parsed_pattern;
10518|      0|  }
10519|    340|cb.parsed_pattern_end = cb.parsed_pattern + parsed_size_needed + 1;
10520|       |
10521|       |/* Do the parsing scan. */
10522|       |
10523|    340|errorcode = parse_regex(ptr, cb.external_options, &has_lookbehind, &cb);
10524|    340|if (errorcode != 0) goto HAD_CB_ERROR;
  ------------------
  |  Branch (10524:5): [True: 32, False: 308]
  ------------------
10525|       |
10526|       |/* If there are any lookbehinds, scan the parsed pattern to figure out their
10527|       |lengths. Workspace is needed to remember whether numbered groups are or are not
10528|       |of limited length, and if limited, what the minimum and maximum lengths are.
10529|       |This caching saves re-computing the length of any group that is referenced more
10530|       |than once, which is particularly relevant when recursion is involved.
10531|       |Unnumbered groups do not have this exposure because they cannot be referenced.
10532|       |If there are sufficiently few groups, the default index vector on the stack, as
10533|       |set up above, can be used. Otherwise we have to get/free some heap memory. The
10534|       |vector must be initialized to zero. */
10535|       |
10536|    308|if (has_lookbehind)
  ------------------
  |  Branch (10536:5): [True: 0, False: 308]
  ------------------
10537|      0|  {
10538|      0|  int loopcount = 0;
10539|      0|  if (cb.bracount >= GROUPINFO_DEFAULT_SIZE/2)
  ------------------
  |  |  175|      0|#define GROUPINFO_DEFAULT_SIZE 256
  ------------------
  |  Branch (10539:7): [True: 0, False: 0]
  ------------------
10540|      0|    {
10541|      0|    cb.groupinfo = ccontext->memctl.malloc(
10542|      0|      (2 * (cb.bracount + 1))*sizeof(uint32_t), ccontext->memctl.memory_data);
10543|      0|    if (cb.groupinfo == NULL)
  ------------------
  |  Branch (10543:9): [True: 0, False: 0]
  ------------------
10544|      0|      {
10545|      0|      errorcode = ERR21;
10546|      0|      cb.erroroffset = 0;
10547|      0|      goto HAD_CB_ERROR;
10548|      0|      }
10549|      0|    }
10550|      0|  memset(cb.groupinfo, 0, (2 * cb.bracount + 1) * sizeof(uint32_t));
10551|      0|  errorcode = check_lookbehinds(cb.parsed_pattern, NULL, NULL, &cb, &loopcount);
10552|      0|  if (errorcode != 0) goto HAD_CB_ERROR;
  ------------------
  |  Branch (10552:7): [True: 0, False: 0]
  ------------------
10553|      0|  }
10554|       |
10555|       |/* For debugging, there is a function that shows the parsed pattern vector. */
10556|       |
10557|       |#ifdef DEBUG_SHOW_PARSED
10558|       |fprintf(stderr, "+++ Pre-scan complete:\n");
10559|       |show_parsed(&cb);
10560|       |#endif
10561|       |
10562|       |/* For debugging capturing information this code can be enabled. */
10563|       |
10564|       |#ifdef DEBUG_SHOW_CAPTURES
10565|       |  {
10566|       |  named_group *ng = cb.named_groups;
10567|       |  fprintf(stderr, "+++Captures: %d\n", cb.bracount);
10568|       |  for (i = 0; i < cb.names_found; i++, ng++)
10569|       |    {
10570|       |    fprintf(stderr, "+++%3d %.*s\n", ng->number, ng->length, ng->name);
10571|       |    }
10572|       |  }
10573|       |#endif
10574|       |
10575|       |/* Pretend to compile the pattern while actually just accumulating the amount
10576|       |of memory required in the 'length' variable. This behaviour is triggered by
10577|       |passing a non-NULL final argument to compile_regex(). We pass a block of
10578|       |workspace (cworkspace) for it to compile parts of the pattern into; the
10579|       |compiled code is discarded when it is no longer needed, so hopefully this
10580|       |workspace will never overflow, though there is a test for its doing so.
10581|       |
10582|       |On error, errorcode will be set non-zero, so we don't need to look at the
10583|       |result of the function. The initial options have been put into the cb block,
10584|       |but we still have to pass a separate options variable (the first argument)
10585|       |because the options may change as the pattern is processed. */
10586|       |
10587|    308|cb.erroroffset = patlen;   /* For any subsequent errors that do not set it */
10588|    308|pptr = cb.parsed_pattern;
10589|    308|code = cworkspace;
10590|    308|*code = OP_BRA;
10591|       |
10592|    308|(void)compile_regex(cb.external_options, ccontext->extra_options, &code, &pptr,
10593|    308|   &errorcode, 0, &firstcu, &firstcuflags, &reqcu, &reqcuflags, NULL, NULL,
10594|    308|   &cb, &length);
10595|       |
10596|    308|if (errorcode != 0) goto HAD_CB_ERROR;  /* Offset is in cb.erroroffset */
  ------------------
  |  Branch (10596:5): [True: 10, False: 298]
  ------------------
10597|       |
10598|       |/* This should be caught in compile_regex(), but just in case... */
10599|       |
10600|    298|if (length > MAX_PATTERN_SIZE)
  ------------------
  |  |  110|    298|#define MAX_PATTERN_SIZE (1 << 16)
  ------------------
  |  Branch (10600:5): [True: 0, False: 298]
  ------------------
10601|      0|  {
10602|      0|  errorcode = ERR20;
10603|      0|  goto HAD_CB_ERROR;
10604|      0|  }
10605|       |
10606|       |/* Compute the size of, then, if not too large, get and initialize the data
10607|       |block for storing the compiled pattern and names table. Integer overflow should
10608|       |no longer be possible because nowadays we limit the maximum value of
10609|       |cb.names_found and cb.name_entry_size. */
10610|       |
10611|    298|re_blocksize = sizeof(pcre2_real_code) +
10612|    298|  CU2BYTES(length +
  ------------------
  |  |  545|    298|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|    298|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
10613|    298|  (PCRE2_SIZE)cb.names_found * (PCRE2_SIZE)cb.name_entry_size);
10614|       |
10615|    298|if (re_blocksize > ccontext->max_pattern_compiled_length)
  ------------------
  |  Branch (10615:5): [True: 0, False: 298]
  ------------------
10616|      0|  {
10617|      0|  errorcode = ERR101;
10618|      0|  goto HAD_CB_ERROR;
10619|      0|  }
10620|       |
10621|    298|re = (pcre2_real_code *)
10622|    298|  ccontext->memctl.malloc(re_blocksize, ccontext->memctl.memory_data);
10623|    298|if (re == NULL)
  ------------------
  |  Branch (10623:5): [True: 0, False: 298]
  ------------------
10624|      0|  {
10625|      0|  errorcode = ERR21;
10626|      0|  goto HAD_CB_ERROR;
10627|      0|  }
10628|       |
10629|       |/* The compiler may put padding at the end of the pcre2_real_code structure in
10630|       |order to round it up to a multiple of 4 or 8 bytes. This means that when a
10631|       |compiled pattern is copied (for example, when serialized) undefined bytes are
10632|       |read, and this annoys debuggers such as valgrind. To avoid this, we explicitly
10633|       |write to the last 8 bytes of the structure before setting the fields. */
10634|       |
10635|    298|memset((char *)re + sizeof(pcre2_real_code) - 8, 0, 8);
10636|    298|re->memctl = ccontext->memctl;
10637|    298|re->tables = tables;
10638|    298|re->executable_jit = NULL;
10639|    298|memset(re->start_bitmap, 0, 32 * sizeof(uint8_t));
10640|    298|re->blocksize = re_blocksize;
10641|    298|re->magic_number = MAGIC_NUMBER;
  ------------------
  |  |  564|    298|#define MAGIC_NUMBER  0x50435245UL   /* 'PCRE' */
  ------------------
10642|    298|re->compile_options = options;
10643|    298|re->overall_options = cb.external_options;
10644|    298|re->extra_options = ccontext->extra_options;
10645|    298|re->flags = PCRE2_CODE_UNIT_WIDTH/8 | cb.external_flags | setflags;
  ------------------
  |  | 1860|    298|#define PCRE2_CODE_UNIT_WIDTH 8
  ------------------
10646|    298|re->limit_heap = limit_heap;
10647|    298|re->limit_match = limit_match;
10648|    298|re->limit_depth = limit_depth;
10649|    298|re->first_codeunit = 0;
10650|    298|re->last_codeunit = 0;
10651|    298|re->bsr_convention = bsr;
10652|    298|re->newline_convention = newline;
10653|    298|re->max_lookbehind = 0;
10654|    298|re->minlength = 0;
10655|    298|re->top_bracket = 0;
10656|    298|re->top_backref = 0;
10657|    298|re->name_entry_size = cb.name_entry_size;
10658|    298|re->name_count = cb.names_found;
10659|       |
10660|       |/* The basic block is immediately followed by the name table, and the compiled
10661|       |code follows after that. */
10662|       |
10663|    298|codestart = (PCRE2_SPTR)((uint8_t *)re + sizeof(pcre2_real_code)) +
10664|    298|  re->name_entry_size * re->name_count;
10665|       |
10666|       |/* Update the compile data block for the actual compile. The starting points of
10667|       |the name/number translation table and of the code are passed around in the
10668|       |compile data block. The start/end pattern and initial options are already set
10669|       |from the pre-compile phase, as is the name_entry_size field. */
10670|       |
10671|    298|cb.parens_depth = 0;
10672|    298|cb.assert_depth = 0;
10673|    298|cb.lastcapture = 0;
10674|    298|cb.name_table = (PCRE2_UCHAR *)((uint8_t *)re + sizeof(pcre2_real_code));
10675|    298|cb.start_code = codestart;
10676|    298|cb.req_varyopt = 0;
10677|    298|cb.had_accept = FALSE;
  ------------------
  |  |   87|    298|#define FALSE   0
  ------------------
10678|    298|cb.had_pruneorskip = FALSE;
  ------------------
  |  |   87|    298|#define FALSE   0
  ------------------
10679|       |
10680|       |/* If any named groups were found, create the name/number table from the list
10681|       |created in the pre-pass. */
10682|       |
10683|    298|if (cb.names_found > 0)
  ------------------
  |  Branch (10683:5): [True: 0, False: 298]
  ------------------
10684|      0|  {
10685|      0|  named_group *ng = cb.named_groups;
  ------------------
  |  | 2010|      0|#define named_group                  PCRE2_SUFFIX(named_group_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10686|      0|  for (i = 0; i < cb.names_found; i++, ng++)
  ------------------
  |  Branch (10686:15): [True: 0, False: 0]
  ------------------
10687|      0|    add_name_to_table(&cb, ng->name, ng->length, ng->number, i);
10688|      0|  }
10689|       |
10690|       |/* Set up a starting, non-extracting bracket, then compile the expression. On
10691|       |error, errorcode will be set non-zero, so we don't need to look at the result
10692|       |of the function here. */
10693|       |
10694|    298|pptr = cb.parsed_pattern;
10695|    298|code = (PCRE2_UCHAR *)codestart;
10696|    298|*code = OP_BRA;
10697|    298|regexrc = compile_regex(re->overall_options, ccontext->extra_options, &code,
10698|    298|  &pptr, &errorcode, 0, &firstcu, &firstcuflags, &reqcu, &reqcuflags, NULL,
10699|    298|  NULL, &cb, NULL);
10700|    298|if (regexrc < 0) re->flags |= PCRE2_MATCH_EMPTY;
  ------------------
  |  |  538|     12|#define PCRE2_MATCH_EMPTY   0x00002000  /* pattern can match empty string */
  ------------------
  |  Branch (10700:5): [True: 12, False: 286]
  ------------------
10701|    298|re->top_bracket = cb.bracount;
10702|    298|re->top_backref = cb.top_backref;
10703|    298|re->max_lookbehind = cb.max_lookbehind;
10704|       |
10705|    298|if (cb.had_accept)
  ------------------
  |  Branch (10705:5): [True: 0, False: 298]
  ------------------
10706|      0|  {
10707|      0|  reqcu = 0;                     /* Must disable after (*ACCEPT) */
10708|      0|  reqcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
10709|      0|  re->flags |= PCRE2_HASACCEPT;  /* Disables minimum length */
  ------------------
  |  |  548|      0|#define PCRE2_HASACCEPT     0x00800000  /* contains (*ACCEPT) */
  ------------------
10710|      0|  }
10711|       |
10712|       |/* Fill in the final opcode and check for disastrous overflow. If no overflow,
10713|       |but the estimated length exceeds the really used length, adjust the value of
10714|       |re->blocksize, and if valgrind support is configured, mark the extra allocated
10715|       |memory as unaddressable, so that any out-of-bound reads can be detected. */
10716|       |
10717|    298|*code++ = OP_END;
10718|    298|usedlength = code - codestart;
10719|    298|if (usedlength > length) errorcode = ERR23; else
  ------------------
  |  Branch (10719:5): [True: 0, False: 298]
  ------------------
10720|    298|  {
10721|    298|  re->blocksize -= CU2BYTES(length - usedlength);
  ------------------
  |  |  545|    298|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|    298|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
10722|       |#ifdef SUPPORT_VALGRIND
10723|       |  VALGRIND_MAKE_MEM_NOACCESS(code, CU2BYTES(length - usedlength));
10724|       |#endif
10725|    298|  }
10726|       |
10727|       |/* Scan the pattern for recursion/subroutine calls and convert the group
10728|       |numbers into offsets. Maintain a small cache so that repeated groups containing
10729|       |recursions are efficiently handled. */
10730|       |
10731|    298|#define RSCAN_CACHE_SIZE 8
10732|       |
10733|    298|if (errorcode == 0 && cb.had_recurse)
  ------------------
  |  Branch (10733:5): [True: 298, False: 0]
  |  Branch (10733:23): [True: 0, False: 298]
  ------------------
10734|      0|  {
10735|      0|  PCRE2_UCHAR *rcode;
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10736|      0|  PCRE2_SPTR rgroup;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10737|      0|  unsigned int ccount = 0;
10738|      0|  int start = RSCAN_CACHE_SIZE;
  ------------------
  |  |10731|      0|#define RSCAN_CACHE_SIZE 8
  ------------------
10739|      0|  recurse_cache rc[RSCAN_CACHE_SIZE];
10740|       |
10741|      0|  for (rcode = (PCRE2_UCHAR *)find_recurse(codestart, utf);
10742|      0|       rcode != NULL;
  ------------------
  |  Branch (10742:8): [True: 0, False: 0]
  ------------------
10743|      0|       rcode = (PCRE2_UCHAR *)find_recurse(rcode + 1 + LINK_SIZE, utf))
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
10744|      0|    {
10745|      0|    int p, groupnumber;
10746|       |
10747|      0|    groupnumber = (int)GET(rcode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
10748|      0|    if (groupnumber == 0) rgroup = codestart; else
  ------------------
  |  Branch (10748:9): [True: 0, False: 0]
  ------------------
10749|      0|      {
10750|      0|      PCRE2_SPTR search_from = codestart;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10751|      0|      rgroup = NULL;
10752|      0|      for (i = 0, p = start; i < ccount; i++, p = (p + 1) & 7)
  ------------------
  |  Branch (10752:30): [True: 0, False: 0]
  ------------------
10753|      0|        {
10754|      0|        if (groupnumber == rc[p].groupnumber)
  ------------------
  |  Branch (10754:13): [True: 0, False: 0]
  ------------------
10755|      0|          {
10756|      0|          rgroup = rc[p].group;
10757|      0|          break;
10758|      0|          }
10759|       |
10760|       |        /* Group n+1 must always start to the right of group n, so we can save
10761|       |        search time below when the new group number is greater than any of the
10762|       |        previously found groups. */
10763|       |
10764|      0|        if (groupnumber > rc[p].groupnumber) search_from = rc[p].group;
  ------------------
  |  Branch (10764:13): [True: 0, False: 0]
  ------------------
10765|      0|        }
10766|       |
10767|      0|      if (rgroup == NULL)
  ------------------
  |  Branch (10767:11): [True: 0, False: 0]
  ------------------
10768|      0|        {
10769|      0|        rgroup = PRIV(find_bracket)(search_from, utf, groupnumber);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2023|      0|#define _pcre2_find_bracket          PCRE2_SUFFIX(_pcre2_find_bracket_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10770|      0|        if (rgroup == NULL)
  ------------------
  |  Branch (10770:13): [True: 0, False: 0]
  ------------------
10771|      0|          {
10772|      0|          errorcode = ERR53;
10773|      0|          break;
10774|      0|          }
10775|      0|        if (--start < 0) start = RSCAN_CACHE_SIZE - 1;
  ------------------
  |  |10731|      0|#define RSCAN_CACHE_SIZE 8
  ------------------
  |  Branch (10775:13): [True: 0, False: 0]
  ------------------
10776|      0|        rc[start].groupnumber = groupnumber;
10777|      0|        rc[start].group = rgroup;
10778|      0|        if (ccount < RSCAN_CACHE_SIZE) ccount++;
  ------------------
  |  |10731|      0|#define RSCAN_CACHE_SIZE 8
  ------------------
  |  Branch (10778:13): [True: 0, False: 0]
  ------------------
10779|      0|        }
10780|      0|      }
10781|       |
10782|      0|    PUT(rcode, 1, rgroup - codestart);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
10783|      0|    }
10784|      0|  }
10785|       |
10786|       |/* In rare debugging situations we sometimes need to look at the compiled code
10787|       |at this stage. */
10788|       |
10789|       |#ifdef DEBUG_CALL_PRINTINT
10790|       |pcre2_printint(re, stderr, TRUE);
10791|       |fprintf(stderr, "Length=%lu Used=%lu\n", length, usedlength);
10792|       |#endif
10793|       |
10794|       |/* Unless disabled, check whether any single character iterators can be
10795|       |auto-possessified. The function overwrites the appropriate opcode values, so
10796|       |the type of the pointer must be cast. NOTE: the intermediate variable "temp" is
10797|       |used in this code because at least one compiler gives a warning about loss of
10798|       |"const" attribute if the cast (PCRE2_UCHAR *)codestart is used directly in the
10799|       |function call. */
10800|       |
10801|    298|if (errorcode == 0 && (re->overall_options & PCRE2_NO_AUTO_POSSESS) == 0)
  ------------------
  |  |  133|    298|#define PCRE2_NO_AUTO_POSSESS     0x00004000u  /* C       */
  ------------------
  |  Branch (10801:5): [True: 298, False: 0]
  |  Branch (10801:23): [True: 298, False: 0]
  ------------------
10802|    298|  {
10803|    298|  PCRE2_UCHAR *temp = (PCRE2_UCHAR *)codestart;
  ------------------
  |  |  819|    298|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10804|    298|  if (PRIV(auto_possessify)(temp, &cb) != 0) errorcode = ERR80;
  ------------------
  |  |  195|    298|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2020|    298|#define _pcre2_auto_possessify       PCRE2_SUFFIX(_pcre2_auto_possessify_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10804:7): [True: 0, False: 298]
  ------------------
10805|    298|  }
10806|       |
10807|       |/* Failed to compile, or error while post-processing. */
10808|       |
10809|    298|if (errorcode != 0) goto HAD_CB_ERROR;
  ------------------
  |  Branch (10809:5): [True: 0, False: 298]
  ------------------
10810|       |
10811|       |/* Successful compile. If the anchored option was not passed, set it if
10812|       |we can determine that the pattern is anchored by virtue of ^ characters or \A
10813|       |or anything else, such as starting with non-atomic .* when DOTALL is set and
10814|       |there are no occurrences of *PRUNE or *SKIP (though there is an option to
10815|       |disable this case). */
10816|       |
10817|    298|if ((re->overall_options & PCRE2_ANCHORED) == 0 &&
  ------------------
  |  |  105|    298|#define PCRE2_ANCHORED            0x80000000u
  ------------------
  |  Branch (10817:5): [True: 297, False: 1]
  ------------------
10818|    297|     is_anchored(codestart, 0, &cb, 0, FALSE))
  ------------------
  |  |   87|    297|#define FALSE   0
  ------------------
  |  Branch (10818:6): [True: 1, False: 296]
  ------------------
10819|      1|  re->overall_options |= PCRE2_ANCHORED;
  ------------------
  |  |  105|      1|#define PCRE2_ANCHORED            0x80000000u
  ------------------
10820|       |
10821|       |/* Set up the first code unit or startline flag, the required code unit, and
10822|       |then study the pattern. This code need not be obeyed if PCRE2_NO_START_OPTIMIZE
10823|       |is set, as the data it would create will not be used. Note that a first code
10824|       |unit (but not the startline flag) is useful for anchored patterns because it
10825|       |can still give a quick "no match" and also avoid searching for a last code
10826|       |unit. */
10827|       |
10828|    298|if ((re->overall_options & PCRE2_NO_START_OPTIMIZE) == 0)
  ------------------
  |  |  135|    298|#define PCRE2_NO_START_OPTIMIZE   0x00010000u  /*   J M D */
  ------------------
  |  Branch (10828:5): [True: 298, False: 0]
  ------------------
10829|    298|  {
10830|    298|  int minminlength = 0;  /* For minimal minlength from first/required CU */
10831|       |
10832|       |  /* If we do not have a first code unit, see if there is one that is asserted
10833|       |  (these are not saved during the compile because they can cause conflicts with
10834|       |  actual literals that follow). */
10835|       |
10836|    298|  if (firstcuflags >= REQ_NONE)
  ------------------
  |  |  394|    298|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (10836:7): [True: 257, False: 41]
  ------------------
10837|    257|    firstcu = find_firstassertedcu(codestart, &firstcuflags, 0);
10838|       |
10839|       |  /* Save the data for a first code unit. The existence of one means the
10840|       |  minimum length must be at least 1. */
10841|       |
10842|    298|  if (firstcuflags < REQ_NONE)
  ------------------
  |  |  394|    298|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (10842:7): [True: 41, False: 257]
  ------------------
10843|     41|    {
10844|     41|    re->first_codeunit = firstcu;
10845|     41|    re->flags |= PCRE2_FIRSTSET;
  ------------------
  |  |  529|     41|#define PCRE2_FIRSTSET      0x00000010  /* first_code unit is set */
  ------------------
10846|     41|    minminlength++;
10847|       |
10848|       |    /* Handle caseless first code units. */
10849|       |
10850|     41|    if ((firstcuflags & REQ_CASELESS) != 0)
  ------------------
  |  |  395|     41|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
  |  Branch (10850:9): [True: 25, False: 16]
  ------------------
10851|     25|      {
10852|     25|      if (firstcu < 128 || (!utf && !ucp && firstcu < 255))
  ------------------
  |  Branch (10852:11): [True: 24, False: 1]
  |  Branch (10852:29): [True: 1, False: 0]
  |  Branch (10852:37): [True: 1, False: 0]
  |  Branch (10852:45): [True: 1, False: 0]
  ------------------
10853|     25|        {
10854|     25|        if (cb.fcc[firstcu] != firstcu) re->flags |= PCRE2_FIRSTCASELESS;
  ------------------
  |  |  530|      4|#define PCRE2_FIRSTCASELESS 0x00000020  /* caseless first code unit */
  ------------------
  |  Branch (10854:13): [True: 4, False: 21]
  ------------------
10855|     25|        }
10856|       |
10857|       |      /* The first code unit is > 128 in UTF or UCP mode, or > 255 otherwise.
10858|       |      In 8-bit UTF mode, codepoints in the range 128-255 are introductory code
10859|       |      points and cannot have another case, but if UCP is set they may do. */
10860|       |
10861|      0|#ifdef SUPPORT_UNICODE
10862|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
10863|      0|      else if (ucp && !utf && UCD_OTHERCASE(firstcu) != firstcu)
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10863:16): [True: 0, False: 0]
  |  Branch (10863:23): [True: 0, False: 0]
  |  Branch (10863:31): [True: 0, False: 0]
  ------------------
10864|      0|        re->flags |= PCRE2_FIRSTCASELESS;
  ------------------
  |  |  530|      0|#define PCRE2_FIRSTCASELESS 0x00000020  /* caseless first code unit */
  ------------------
10865|       |#else
10866|       |      else if ((utf || ucp) && firstcu <= MAX_UTF_CODE_POINT &&
10867|       |               UCD_OTHERCASE(firstcu) != firstcu)
10868|       |        re->flags |= PCRE2_FIRSTCASELESS;
10869|       |#endif
10870|     25|#endif  /* SUPPORT_UNICODE */
10871|     25|      }
10872|     41|    }
10873|       |
10874|       |  /* When there is no first code unit, for non-anchored patterns, see if we can
10875|       |  set the PCRE2_STARTLINE flag. This is helpful for multiline matches when all
10876|       |  branches start with ^ and also when all branches start with non-atomic .* for
10877|       |  non-DOTALL matches when *PRUNE and SKIP are not present. (There is an option
10878|       |  that disables this case.) */
10879|       |
10880|    257|  else if ((re->overall_options & PCRE2_ANCHORED) == 0 &&
  ------------------
  |  |  105|    257|#define PCRE2_ANCHORED            0x80000000u
  ------------------
  |  Branch (10880:12): [True: 256, False: 1]
  ------------------
10881|    256|           is_startline(codestart, 0, &cb, 0, FALSE))
  ------------------
  |  |   87|    256|#define FALSE   0
  ------------------
  |  Branch (10881:12): [True: 0, False: 256]
  ------------------
10882|      0|    re->flags |= PCRE2_STARTLINE;
  ------------------
  |  |  534|      0|#define PCRE2_STARTLINE     0x00000200  /* start after \n for multiline */
  ------------------
10883|       |
10884|       |  /* Handle the "required code unit", if one is set. In the UTF case we can
10885|       |  increment the minimum minimum length only if we are sure this really is a
10886|       |  different character and not a non-starting code unit of the first character,
10887|       |  because the minimum length count is in characters, not code units. */
10888|       |
10889|    298|  if (reqcuflags < REQ_NONE)
  ------------------
  |  |  394|    298|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (10889:7): [True: 116, False: 182]
  ------------------
10890|    116|    {
10891|       |#if PCRE2_CODE_UNIT_WIDTH == 16
10892|       |    if ((re->overall_options & PCRE2_UTF) == 0 ||   /* Not UTF */
10893|       |        firstcuflags >= REQ_NONE ||                 /* First not set */
10894|       |        (firstcu & 0xf800) != 0xd800 ||             /* First not surrogate */
10895|       |        (reqcu & 0xfc00) != 0xdc00)                 /* Req not low surrogate */
10896|       |#elif PCRE2_CODE_UNIT_WIDTH == 8
10897|    116|    if ((re->overall_options & PCRE2_UTF) == 0 ||   /* Not UTF */
  ------------------
  |  |  138|    116|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (10897:9): [True: 45, False: 71]
  ------------------
10898|     71|        firstcuflags >= REQ_NONE ||                 /* First not set */
  ------------------
  |  |  394|    187|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (10898:9): [True: 59, False: 12]
  ------------------
10899|     12|        (firstcu & 0x80) == 0 ||                    /* First is ASCII */
  ------------------
  |  Branch (10899:9): [True: 12, False: 0]
  ------------------
10900|      0|        (reqcu & 0x80) == 0)                        /* Req is ASCII */
  ------------------
  |  Branch (10900:9): [True: 0, False: 0]
  ------------------
10901|    116|#endif
10902|    116|      {
10903|    116|      minminlength++;
10904|    116|      }
10905|       |
10906|       |    /* In the case of an anchored pattern, set up the value only if it follows
10907|       |    a variable length item in the pattern. */
10908|       |
10909|    116|    if ((re->overall_options & PCRE2_ANCHORED) == 0 ||
  ------------------
  |  |  105|    116|#define PCRE2_ANCHORED            0x80000000u
  ------------------
  |  Branch (10909:9): [True: 115, False: 1]
  ------------------
10910|      1|        (reqcuflags & REQ_VARY) != 0)
  ------------------
  |  |  396|      1|#define REQ_VARY      0x00000002u  /* Code unit is followed by non-literal */
  ------------------
  |  Branch (10910:9): [True: 1, False: 0]
  ------------------
10911|    116|      {
10912|    116|      re->last_codeunit = reqcu;
10913|    116|      re->flags |= PCRE2_LASTSET;
  ------------------
  |  |  532|    116|#define PCRE2_LASTSET       0x00000080  /* last code unit is set */
  ------------------
10914|       |
10915|       |      /* Handle caseless required code units as for first code units (above). */
10916|       |
10917|    116|      if ((reqcuflags & REQ_CASELESS) != 0)
  ------------------
  |  |  395|    116|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
  |  Branch (10917:11): [True: 56, False: 60]
  ------------------
10918|     56|        {
10919|     56|        if (reqcu < 128 || (!utf && !ucp && reqcu < 255))
  ------------------
  |  Branch (10919:13): [True: 55, False: 1]
  |  Branch (10919:29): [True: 1, False: 0]
  |  Branch (10919:37): [True: 1, False: 0]
  |  Branch (10919:45): [True: 1, False: 0]
  ------------------
10920|     56|          {
10921|     56|          if (cb.fcc[reqcu] != reqcu) re->flags |= PCRE2_LASTCASELESS;
  ------------------
  |  |  533|     14|#define PCRE2_LASTCASELESS  0x00000100  /* caseless last code unit */
  ------------------
  |  Branch (10921:15): [True: 14, False: 42]
  ------------------
10922|     56|          }
10923|      0|#ifdef SUPPORT_UNICODE
10924|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
10925|      0|      else if (ucp && !utf && UCD_OTHERCASE(reqcu) != reqcu)
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10925:16): [True: 0, False: 0]
  |  Branch (10925:23): [True: 0, False: 0]
  |  Branch (10925:31): [True: 0, False: 0]
  ------------------
10926|      0|        re->flags |= PCRE2_LASTCASELESS;
  ------------------
  |  |  533|      0|#define PCRE2_LASTCASELESS  0x00000100  /* caseless last code unit */
  ------------------
10927|       |#else
10928|       |      else if ((utf || ucp) && reqcu <= MAX_UTF_CODE_POINT &&
10929|       |               UCD_OTHERCASE(reqcu) != reqcu)
10930|       |        re->flags |= PCRE2_LASTCASELESS;
10931|       |#endif
10932|     56|#endif  /* SUPPORT_UNICODE */
10933|     56|        }
10934|    116|      }
10935|    116|    }
10936|       |
10937|       |  /* Study the compiled pattern to set up information such as a bitmap of
10938|       |  starting code units and a minimum matching length. */
10939|       |
10940|    298|  if (PRIV(study)(re) != 0)
  ------------------
  |  |  195|    298|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2038|    298|#define _pcre2_study                 PCRE2_SUFFIX(_pcre2_study_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10940:7): [True: 0, False: 298]
  ------------------
10941|      0|    {
10942|      0|    errorcode = ERR31;
10943|      0|    goto HAD_CB_ERROR;
10944|      0|    }
10945|       |
10946|       |  /* If study() set a bitmap of starting code units, it implies a minimum
10947|       |  length of at least one. */
10948|       |
10949|    298|  if ((re->flags & PCRE2_FIRSTMAPSET) != 0 && minminlength == 0)
  ------------------
  |  |  531|    298|#define PCRE2_FIRSTMAPSET   0x00000040  /* bitmap of first code units is set */
  ------------------
  |  Branch (10949:7): [True: 90, False: 208]
  |  Branch (10949:47): [True: 72, False: 18]
  ------------------
10950|     72|    minminlength = 1;
10951|       |
10952|       |  /* If the minimum length set (or not set) by study() is less than the minimum
10953|       |  implied by required code units, override it. */
10954|       |
10955|    298|  if (re->minlength < minminlength) re->minlength = minminlength;
  ------------------
  |  Branch (10955:7): [True: 1, False: 297]
  ------------------
10956|    298|  }   /* End of start-of-match optimizations. */
10957|       |
10958|       |/* Control ends up here in all cases. When running under valgrind, make a
10959|       |pattern's terminating zero defined again. If memory was obtained for the parsed
10960|       |version of the pattern, free it before returning. Also free the list of named
10961|       |groups if a larger one had to be obtained, and likewise the group information
10962|       |vector. */
10963|       |
10964|    344|EXIT:
10965|       |#ifdef SUPPORT_VALGRIND
10966|       |if (zero_terminated) VALGRIND_MAKE_MEM_DEFINED(pattern + patlen, CU2BYTES(1));
10967|       |#endif
10968|    344|if (cb.parsed_pattern != stack_parsed_pattern)
  ------------------
  |  Branch (10968:5): [True: 0, False: 344]
  ------------------
10969|      0|  ccontext->memctl.free(cb.parsed_pattern, ccontext->memctl.memory_data);
10970|    344|if (cb.named_group_list_size > NAMED_GROUP_LIST_SIZE)
  ------------------
  |  |  187|    344|#define NAMED_GROUP_LIST_SIZE  20
  ------------------
  |  Branch (10970:5): [True: 0, False: 344]
  ------------------
10971|      0|  ccontext->memctl.free((void *)cb.named_groups, ccontext->memctl.memory_data);
10972|    344|if (cb.groupinfo != stack_groupinfo)
  ------------------
  |  Branch (10972:5): [True: 0, False: 344]
  ------------------
10973|      0|  ccontext->memctl.free((void *)cb.groupinfo, ccontext->memctl.memory_data);
10974|    344|return re;    /* Will be NULL after an error */
10975|       |
10976|       |/* Errors discovered in parse_regex() set the offset value in the compile
10977|       |block. Errors discovered before it is called must compute it from the ptr
10978|       |value. After parse_regex() is called, the offset in the compile block is set to
10979|       |the end of the pattern, but certain errors in compile_regex() may reset it if
10980|       |an offset is available in the parsed pattern. */
10981|       |
10982|     42|HAD_CB_ERROR:
10983|     42|ptr = pattern + cb.erroroffset;
10984|       |
10985|     42|HAD_EARLY_ERROR:
10986|     42|*erroroffset = ptr - pattern;
10987|       |
10988|     46|HAD_ERROR:
10989|     46|*errorptr = errorcode;
10990|     46|pcre2_code_free(re);
  ------------------
  |  |  852|     46|#define pcre2_code_free                       PCRE2_SUFFIX(pcre2_code_free_)
  |  |  ------------------
  |  |  |  |  994|     46|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     46|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     46|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   27|     46|#define pcre2_code_free_8 php_pcre2_code_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10991|       |re = NULL;
10992|     46|goto EXIT;
10993|     42|}
pcre2_compile.c:read_repeat_counts:
 1414|     94|{
 1415|     94|PCRE2_SPTR p = *ptrptr;
  ------------------
  |  |  820|     94|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|     94|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     94|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     94|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1416|     94|PCRE2_SPTR pp;
  ------------------
  |  |  820|     94|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|     94|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     94|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     94|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1417|     94|BOOL yield = FALSE;
  ------------------
  |  |   87|     94|#define FALSE   0
  ------------------
 1418|     94|BOOL had_minimum = FALSE;
  ------------------
  |  |   87|     94|#define FALSE   0
  ------------------
 1419|     94|int32_t min = 0;
 1420|     94|int32_t max = REPEAT_UNLIMITED; /* This value is larger than MAX_REPEAT_COUNT */
  ------------------
  |  |  149|     94|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|     94|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
 1421|       |
 1422|     94|*errorcodeptr = 0;
 1423|    110|while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|    220|#define CHAR_SPACE                  '\040'
  ------------------
              while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|     96|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1423:8): [True: 110, False: 0]
  |  Branch (1423:23): [True: 14, False: 96]
  |  Branch (1423:43): [True: 2, False: 94]
  ------------------
 1424|       |
 1425|       |/* Check the syntax before interpreting. Otherwise, a non-quantifier sequence
 1426|       |such as "X{123456ABC" would incorrectly give a "number too big in quantifier"
 1427|       |error. */
 1428|       |
 1429|     94|pp = p;
 1430|     94|if (pp < ptrend && IS_DIGIT(*pp))
  ------------------
  |  |  408|     94|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|    188|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|     76|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 76, False: 18]
  |  |  |  Branch (408:39): [True: 30, False: 46]
  |  |  ------------------
  ------------------
  |  Branch (1430:5): [True: 94, False: 0]
  ------------------
 1431|     30|  {
 1432|     30|  had_minimum = TRUE;
  ------------------
  |  |   88|     30|#define TRUE    1
  ------------------
 1433|     44|  while (++pp < ptrend && IS_DIGIT(*pp)) {}
  ------------------
  |  |  408|     44|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|     88|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|     32|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 32, False: 12]
  |  |  |  Branch (408:39): [True: 14, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (1433:10): [True: 44, False: 0]
  ------------------
 1434|     30|  }
 1435|       |
 1436|    100|while (pp < ptrend && (*pp == CHAR_SPACE || *pp == CHAR_HT)) pp++;
  ------------------
  |  | 1000|    188|#define CHAR_SPACE                  '\040'
  ------------------
              while (pp < ptrend && (*pp == CHAR_SPACE || *pp == CHAR_HT)) pp++;
  ------------------
  |  |  987|     88|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1436:8): [True: 94, False: 6]
  |  Branch (1436:24): [True: 6, False: 88]
  |  Branch (1436:45): [True: 0, False: 88]
  ------------------
 1437|     94|if (pp >= ptrend) return FALSE;
  ------------------
  |  |   87|      6|#define FALSE   0
  ------------------
  |  Branch (1437:5): [True: 6, False: 88]
  ------------------
 1438|       |
 1439|     88|if (*pp == CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|     88|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1439:5): [True: 22, False: 66]
  ------------------
 1440|     22|  {
 1441|     22|  if (!had_minimum) return FALSE;
  ------------------
  |  |   87|      8|#define FALSE   0
  ------------------
  |  Branch (1441:7): [True: 8, False: 14]
  ------------------
 1442|     22|  }
 1443|     66|else
 1444|     66|  {
 1445|     66|  if (*pp++ != CHAR_COMMA) return FALSE;
  ------------------
  |  | 1012|     66|#define CHAR_COMMA                  '\054'
  ------------------
                if (*pp++ != CHAR_COMMA) return FALSE;
  ------------------
  |  |   87|     64|#define FALSE   0
  ------------------
  |  Branch (1445:7): [True: 64, False: 2]
  ------------------
 1446|     40|  while (pp < ptrend && (*pp == CHAR_SPACE || *pp == CHAR_HT)) pp++;
  ------------------
  |  | 1000|     80|#define CHAR_SPACE                  '\040'
  ------------------
                while (pp < ptrend && (*pp == CHAR_SPACE || *pp == CHAR_HT)) pp++;
  ------------------
  |  |  987|     40|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1446:10): [True: 40, False: 0]
  |  Branch (1446:26): [True: 0, False: 40]
  |  Branch (1446:47): [True: 38, False: 2]
  ------------------
 1447|      2|  if (pp >= ptrend) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (1447:7): [True: 0, False: 2]
  ------------------
 1448|      2|  if (IS_DIGIT(*pp))
  ------------------
  |  |  408|      2|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      4|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      2|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 2, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1449|      0|    {
 1450|      0|    while (++pp < ptrend && IS_DIGIT(*pp)) {}
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1450:12): [True: 0, False: 0]
  ------------------
 1451|      0|    }
 1452|      2|  else if (!had_minimum) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (1452:12): [True: 0, False: 2]
  ------------------
 1453|      2|  while (pp < ptrend && (*pp == CHAR_SPACE || *pp == CHAR_HT)) pp++;
  ------------------
  |  | 1000|      4|#define CHAR_SPACE                  '\040'
  ------------------
                while (pp < ptrend && (*pp == CHAR_SPACE || *pp == CHAR_HT)) pp++;
  ------------------
  |  |  987|      2|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1453:10): [True: 2, False: 0]
  |  Branch (1453:26): [True: 0, False: 2]
  |  Branch (1453:47): [True: 0, False: 2]
  ------------------
 1454|      2|  if (pp >= ptrend || *pp != CHAR_RIGHT_CURLY_BRACKET) return FALSE;
  ------------------
  |  | 1093|      2|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
                if (pp >= ptrend || *pp != CHAR_RIGHT_CURLY_BRACKET) return FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
  |  Branch (1454:7): [True: 0, False: 2]
  |  Branch (1454:23): [True: 2, False: 0]
  ------------------
 1455|      2|  }
 1456|       |
 1457|       |/* Now process the quantifier for real. We know it must be {n} or (n,} or {,m}
 1458|       |or {n,m}. The only error that read_number() can return is for a number that is
 1459|       |too big. If *errorcodeptr is returned as zero it means no number was found. */
 1460|       |
 1461|       |/* Deal with {,m} or n too big. If we successfully read m there is no need to
 1462|       |check m >= n because n defaults to zero. */
 1463|       |
 1464|     14|if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &min, errorcodeptr))
  ------------------
  |  |  148|     14|#define MAX_REPEAT_COUNT   65535u
  ------------------
  |  Branch (1464:5): [True: 0, False: 14]
  ------------------
 1465|      0|  {
 1466|      0|  if (*errorcodeptr != 0) goto EXIT;    /* n too big */
  ------------------
  |  Branch (1466:7): [True: 0, False: 0]
  ------------------
 1467|      0|  p++;  /* Skip comma and subsequent spaces */
 1468|      0|  while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1468:10): [True: 0, False: 0]
  |  Branch (1468:25): [True: 0, False: 0]
  |  Branch (1468:45): [True: 0, False: 0]
  ------------------
 1469|      0|  if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &max, errorcodeptr))
  ------------------
  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  ------------------
  |  Branch (1469:7): [True: 0, False: 0]
  ------------------
 1470|      0|    {
 1471|      0|    if (*errorcodeptr != 0) goto EXIT;  /* m too big */
  ------------------
  |  Branch (1471:9): [True: 0, False: 0]
  ------------------
 1472|      0|    }
 1473|      0|  }
 1474|       |
 1475|       |/* Have read one number. Deal with {n} or {n,} or {n,m} */
 1476|       |
 1477|     14|else
 1478|     14|  {
 1479|     14|  while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|     28|#define CHAR_SPACE                  '\040'
  ------------------
                while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|     14|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1479:10): [True: 14, False: 0]
  |  Branch (1479:25): [True: 0, False: 14]
  |  Branch (1479:45): [True: 0, False: 14]
  ------------------
 1480|     14|  if (*p == CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|     14|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (1480:7): [True: 14, False: 0]
  ------------------
 1481|     14|    {
 1482|     14|    max = min;
 1483|     14|    }
 1484|      0|  else   /* Handle {n,} or {n,m} */
 1485|      0|    {
 1486|      0|    p++;    /* Skip comma and subsequent spaces */
 1487|      0|    while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                  while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1487:12): [True: 0, False: 0]
  |  Branch (1487:27): [True: 0, False: 0]
  |  Branch (1487:47): [True: 0, False: 0]
  ------------------
 1488|      0|    if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &max, errorcodeptr))
  ------------------
  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  ------------------
  |  Branch (1488:9): [True: 0, False: 0]
  ------------------
 1489|      0|      {
 1490|      0|      if (*errorcodeptr != 0) goto EXIT;   /* m too big */
  ------------------
  |  Branch (1490:11): [True: 0, False: 0]
  ------------------
 1491|      0|      }
 1492|       |
 1493|      0|    if (max < min)
  ------------------
  |  Branch (1493:9): [True: 0, False: 0]
  ------------------
 1494|      0|      {
 1495|      0|      *errorcodeptr = ERR4;
 1496|      0|      goto EXIT;
 1497|      0|      }
 1498|      0|    }
 1499|     14|  }
 1500|       |
 1501|       |/* Valid quantifier exists */
 1502|       |
 1503|     14|while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  | 1000|     28|#define CHAR_SPACE                  '\040'
  ------------------
              while (p < ptrend && (*p == CHAR_SPACE || *p == CHAR_HT)) p++;
  ------------------
  |  |  987|     14|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (1503:8): [True: 14, False: 0]
  |  Branch (1503:23): [True: 0, False: 14]
  |  Branch (1503:43): [True: 0, False: 14]
  ------------------
 1504|     14|p++;
 1505|     14|yield = TRUE;
  ------------------
  |  |   88|     14|#define TRUE    1
  ------------------
 1506|     14|if (minp != NULL) *minp = (uint32_t)min;
  ------------------
  |  Branch (1506:5): [True: 7, False: 7]
  ------------------
 1507|     14|if (maxp != NULL) *maxp = (uint32_t)max;
  ------------------
  |  Branch (1507:5): [True: 7, False: 7]
  ------------------
 1508|       |
 1509|       |/* Update the pattern pointer */
 1510|       |
 1511|     14|EXIT:
 1512|     14|*ptrptr = p;
 1513|     14|return yield;
 1514|     14|}
pcre2_compile.c:read_number:
 1327|     40|{
 1328|     40|int sign = 0;
 1329|     40|uint32_t n = 0;
 1330|     40|PCRE2_SPTR ptr = *ptrptr;
  ------------------
  |  |  820|     40|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|     40|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     40|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     40|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1331|     40|BOOL yield = FALSE;
  ------------------
  |  |   87|     40|#define FALSE   0
  ------------------
 1332|       |
 1333|     40|*errorcodeptr = 0;
 1334|       |
 1335|     40|if (allow_sign >= 0 && ptr < ptrend)
  ------------------
  |  Branch (1335:5): [True: 7, False: 33]
  |  Branch (1335:24): [True: 7, False: 0]
  ------------------
 1336|      7|  {
 1337|      7|  if (*ptr == CHAR_PLUS)
  ------------------
  |  | 1011|      7|#define CHAR_PLUS                   '\053'
  ------------------
  |  Branch (1337:7): [True: 1, False: 6]
  ------------------
 1338|      1|    {
 1339|      1|    sign = +1;
 1340|      1|    max_value -= allow_sign;
 1341|      1|    ptr++;
 1342|      1|    }
 1343|      6|  else if (*ptr == CHAR_MINUS)
  ------------------
  |  | 1013|      6|#define CHAR_MINUS                  '\055'
  ------------------
  |  Branch (1343:12): [True: 0, False: 6]
  ------------------
 1344|      0|    {
 1345|      0|    sign = -1;
 1346|      0|    ptr++;
 1347|      0|    }
 1348|      7|  }
 1349|       |
 1350|     40|if (ptr >= ptrend || !IS_DIGIT(*ptr)) return FALSE;
  ------------------
  |  |  408|     40|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|     80|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|     40|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 40, False: 0]
  |  |  |  Branch (408:39): [True: 34, False: 6]
  |  |  ------------------
  ------------------
              if (ptr >= ptrend || !IS_DIGIT(*ptr)) return FALSE;
  ------------------
  |  |   87|      6|#define FALSE   0
  ------------------
  |  Branch (1350:5): [True: 0, False: 40]
  ------------------
 1351|     90|while (ptr < ptrend && IS_DIGIT(*ptr))
  ------------------
  |  |  408|     89|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|    178|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|     85|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 85, False: 4]
  |  |  |  Branch (408:39): [True: 57, False: 28]
  |  |  ------------------
  ------------------
  |  Branch (1351:8): [True: 89, False: 1]
  ------------------
 1352|     57|  {
 1353|     57|  n = n * 10 + *ptr++ - CHAR_0;
  ------------------
  |  | 1016|     57|#define CHAR_0                      '\060'
  ------------------
 1354|     57|  if (n > max_value)
  ------------------
  |  Branch (1354:7): [True: 1, False: 56]
  ------------------
 1355|      1|    {
 1356|      1|    *errorcodeptr = max_error;
 1357|      1|    goto EXIT;
 1358|      1|    }
 1359|     57|  }
 1360|       |
 1361|     33|if (allow_sign >= 0 && sign != 0)
  ------------------
  |  Branch (1361:5): [True: 1, False: 32]
  |  Branch (1361:24): [True: 1, False: 0]
  ------------------
 1362|      1|  {
 1363|      1|  if (n == 0)
  ------------------
  |  Branch (1363:7): [True: 0, False: 1]
  ------------------
 1364|      0|    {
 1365|      0|    *errorcodeptr = ERR26;  /* +0 and -0 are not allowed */
 1366|      0|    goto EXIT;
 1367|      0|    }
 1368|       |
 1369|      1|  if (sign > 0) n += allow_sign;
  ------------------
  |  Branch (1369:7): [True: 1, False: 0]
  ------------------
 1370|      0|  else if ((int)n > allow_sign)
  ------------------
  |  Branch (1370:12): [True: 0, False: 0]
  ------------------
 1371|      0|    {
 1372|      0|    *errorcodeptr = ERR15;  /* Non-existent subpattern */
 1373|      0|    goto EXIT;
 1374|      0|    }
 1375|      0|  else n = allow_sign + 1 - n;
 1376|      1|  }
 1377|       |
 1378|     33|yield = TRUE;
  ------------------
  |  |   88|     33|#define TRUE    1
  ------------------
 1379|       |
 1380|     34|EXIT:
 1381|     34|*intptr = n;
 1382|     34|*ptrptr = ptr;
 1383|     34|return yield;
 1384|     33|}
pcre2_compile.c:parse_regex:
 2775|    340|{
 2776|    340|uint32_t c;
 2777|    340|uint32_t delimiter;
 2778|    340|uint32_t namelen;
 2779|    340|uint32_t class_range_state;
 2780|    340|uint32_t *verblengthptr = NULL;     /* Value avoids compiler warning */
 2781|    340|uint32_t *verbstartptr = NULL;
 2782|    340|uint32_t *previous_callout = NULL;
 2783|    340|uint32_t *parsed_pattern = cb->parsed_pattern;
 2784|    340|uint32_t *parsed_pattern_end = cb->parsed_pattern_end;
 2785|    340|uint32_t *this_parsed_item = NULL;
 2786|    340|uint32_t *prev_parsed_item = NULL;
 2787|    340|uint32_t meta_quantifier = 0;
 2788|    340|uint32_t add_after_mark = 0;
 2789|    340|uint32_t xoptions = cb->cx->extra_options;
 2790|    340|uint16_t nest_depth = 0;
 2791|    340|int after_manual_callout = 0;
 2792|    340|int expect_cond_assert = 0;
 2793|    340|int errorcode = 0;
 2794|    340|int escape;
 2795|    340|int i;
 2796|    340|BOOL inescq = FALSE;
  ------------------
  |  |   87|    340|#define FALSE   0
  ------------------
 2797|    340|BOOL inverbname = FALSE;
  ------------------
  |  |   87|    340|#define FALSE   0
  ------------------
 2798|    340|BOOL utf = (options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|    340|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 2799|    340|BOOL auto_callout = (options & PCRE2_AUTO_CALLOUT) != 0;
  ------------------
  |  |  121|    340|#define PCRE2_AUTO_CALLOUT        0x00000004u  /* C       */
  ------------------
 2800|    340|BOOL isdupname;
 2801|    340|BOOL negate_class;
 2802|    340|BOOL okquantifier = FALSE;
  ------------------
  |  |   87|    340|#define FALSE   0
  ------------------
 2803|    340|PCRE2_SPTR thisptr;
  ------------------
  |  |  820|    340|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    340|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    340|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    340|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|    340|PCRE2_SPTR name;
  ------------------
  |  |  820|    340|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    340|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    340|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    340|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2805|    340|PCRE2_SPTR ptrend = cb->end_pattern;
  ------------------
  |  |  820|    340|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    340|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    340|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    340|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2806|    340|PCRE2_SPTR verbnamestart = NULL;    /* Value avoids compiler warning */
  ------------------
  |  |  820|    340|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    340|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    340|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    340|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2807|    340|named_group *ng;
  ------------------
  |  | 2010|    340|#define named_group                  PCRE2_SUFFIX(named_group_)
  |  |  ------------------
  |  |  |  |  994|    340|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    340|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    340|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2808|    340|nest_save *top_nest, *end_nests;
 2809|       |
 2810|       |/* Insert leading items for word and line matching (features provided for the
 2811|       |benefit of pcre2grep). */
 2812|       |
 2813|    340|if ((xoptions & PCRE2_EXTRA_MATCH_LINE) != 0)
  ------------------
  |  |  152|    340|#define PCRE2_EXTRA_MATCH_LINE               0x00000008u  /* C */
  ------------------
  |  Branch (2813:5): [True: 0, False: 340]
  ------------------
 2814|      0|  {
 2815|      0|  *parsed_pattern++ = META_CIRCUMFLEX;
  ------------------
  |  |  221|      0|#define META_CIRCUMFLEX       0x80090000u  /* ^ metacharacter */
  ------------------
 2816|      0|  *parsed_pattern++ = META_NOCAPTURE;
  ------------------
  |  |  238|      0|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
 2817|      0|  }
 2818|    340|else if ((xoptions & PCRE2_EXTRA_MATCH_WORD) != 0)
  ------------------
  |  |  151|    340|#define PCRE2_EXTRA_MATCH_WORD               0x00000004u  /* C */
  ------------------
  |  Branch (2818:10): [True: 0, False: 340]
  ------------------
 2819|      0|  {
 2820|      0|  *parsed_pattern++ = META_ESCAPE + ESC_b;
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 2821|      0|  *parsed_pattern++ = META_NOCAPTURE;
  ------------------
  |  |  238|      0|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
 2822|      0|  }
 2823|       |
 2824|       |/* If the pattern is actually a literal string, process it separately to avoid
 2825|       |cluttering up the main loop. */
 2826|       |
 2827|    340|if ((options & PCRE2_LITERAL) != 0)
  ------------------
  |  |  144|    340|#define PCRE2_LITERAL             0x02000000u  /* C       */
  ------------------
  |  Branch (2827:5): [True: 0, False: 340]
  ------------------
 2828|      0|  {
 2829|      0|  while (ptr < ptrend)
  ------------------
  |  Branch (2829:10): [True: 0, False: 0]
  ------------------
 2830|      0|    {
 2831|      0|    if (parsed_pattern >= parsed_pattern_end)
  ------------------
  |  Branch (2831:9): [True: 0, False: 0]
  ------------------
 2832|      0|      {
 2833|      0|      errorcode = ERR63;  /* Internal error (parsed pattern overflow) */
 2834|      0|      goto FAILED;
 2835|      0|      }
 2836|      0|    thisptr = ptr;
 2837|      0|    GETCHARINCTEST(c, ptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2838|      0|    if (auto_callout)
  ------------------
  |  Branch (2838:9): [True: 0, False: 0]
  ------------------
 2839|      0|      parsed_pattern = manage_callouts(thisptr, &previous_callout,
 2840|      0|        auto_callout, parsed_pattern, cb);
 2841|      0|    PARSED_LITERAL(c, parsed_pattern);
  ------------------
  |  | 2768|      0|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  ------------------
 2842|      0|    }
 2843|      0|  goto PARSED_END;
 2844|      0|  }
 2845|       |
 2846|       |/* Process a real regex which may contain meta-characters. */
 2847|       |
 2848|    340|top_nest = NULL;
 2849|    340|end_nests = (nest_save *)(cb->start_workspace + cb->workspace_size);
 2850|       |
 2851|       |/* The size of the nest_save structure might not be a factor of the size of the
 2852|       |workspace. Therefore we must round down end_nests so as to correctly avoid
 2853|       |creating a nest_save that spans the end of the workspace. */
 2854|       |
 2855|    340|end_nests = (nest_save *)((char *)end_nests -
 2856|    340|  ((cb->workspace_size * sizeof(PCRE2_UCHAR)) % sizeof(nest_save)));
 2857|       |
 2858|       |/* PCRE2_EXTENDED_MORE implies PCRE2_EXTENDED */
 2859|       |
 2860|    340|if ((options & PCRE2_EXTENDED_MORE) != 0) options |= PCRE2_EXTENDED;
  ------------------
  |  |  143|    340|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
              if ((options & PCRE2_EXTENDED_MORE) != 0) options |= PCRE2_EXTENDED;
  ------------------
  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
  |  Branch (2860:5): [True: 0, False: 340]
  ------------------
 2861|       |
 2862|       |/* Now scan the pattern */
 2863|       |
 2864|  13.3k|while (ptr < ptrend)
  ------------------
  |  Branch (2864:8): [True: 12.9k, False: 310]
  ------------------
 2865|  12.9k|  {
 2866|  12.9k|  int prev_expect_cond_assert;
 2867|  12.9k|  uint32_t min_repeat = 0, max_repeat = 0;
 2868|  12.9k|  uint32_t set, unset, *optset;
 2869|  12.9k|  uint32_t xset, xunset, *xoptset;
 2870|  12.9k|  uint32_t terminator;
 2871|  12.9k|  uint32_t prev_meta_quantifier;
 2872|  12.9k|  BOOL prev_okquantifier;
 2873|  12.9k|  PCRE2_SPTR tempptr;
  ------------------
  |  |  820|  12.9k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  12.9k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  12.9k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  12.9k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2874|  12.9k|  PCRE2_SIZE offset;
  ------------------
  |  |  479|  12.9k|#define PCRE2_SIZE            size_t
  ------------------
 2875|       |
 2876|  12.9k|  if (parsed_pattern >= parsed_pattern_end)
  ------------------
  |  Branch (2876:7): [True: 0, False: 12.9k]
  ------------------
 2877|      0|    {
 2878|      0|    errorcode = ERR63;  /* Internal error (parsed pattern overflow) */
 2879|      0|    goto FAILED;
 2880|      0|    }
 2881|       |
 2882|  12.9k|  if (nest_depth > cb->cx->parens_nest_limit)
  ------------------
  |  Branch (2882:7): [True: 0, False: 12.9k]
  ------------------
 2883|      0|    {
 2884|      0|    errorcode = ERR19;
 2885|      0|    goto FAILED;        /* Parentheses too deeply nested */
 2886|      0|    }
 2887|       |
 2888|       |  /* If the last time round this loop something was added, parsed_pattern will
 2889|       |  no longer be equal to this_parsed_item. Remember where the previous item
 2890|       |  started and reset for the next item. Note that sometimes round the loop,
 2891|       |  nothing gets added (e.g. for ignored white space). */
 2892|       |
 2893|  12.9k|  if (this_parsed_item != parsed_pattern)
  ------------------
  |  Branch (2893:7): [True: 12.7k, False: 274]
  ------------------
 2894|  12.7k|    {
 2895|  12.7k|    prev_parsed_item = this_parsed_item;
 2896|  12.7k|    this_parsed_item = parsed_pattern;
 2897|  12.7k|    }
 2898|       |
 2899|       |  /* Get next input character, save its position for callout handling. */
 2900|       |
 2901|  12.9k|  thisptr = ptr;
 2902|  12.9k|  GETCHARINCTEST(c, ptr);
  ------------------
  |  |  323|  12.9k|  c = *eptr++; \
  |  |  324|  12.9k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     31|    { \
  |  |  |  |  307|     31|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 14, False: 17]
  |  |  |  |  ------------------
  |  |  |  |  308|     31|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     31|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 9, False: 8]
  |  |  |  |  ------------------
  |  |  |  |  310|     17|      { \
  |  |  |  |  311|      9|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      9|      eptr += 2; \
  |  |  |  |  313|      9|      } \
  |  |  |  |  314|     17|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      8|      { \
  |  |  |  |  316|      8|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      8|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      8|      eptr += 3; \
  |  |  |  |  319|      8|      } \
  |  |  |  |  320|      8|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     31|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 5.77k, False: 7.21k]
  |  |  |  Branch (324:14): [True: 31, False: 5.74k]
  |  |  ------------------
  ------------------
 2903|       |
 2904|       |  /* Copy quoted literals until \E, allowing for the possibility of automatic
 2905|       |  callouts, except when processing a (*VERB) "name".  */
 2906|       |
 2907|  12.9k|  if (inescq)
  ------------------
  |  Branch (2907:7): [True: 0, False: 12.9k]
  ------------------
 2908|      0|    {
 2909|      0|    if (c == CHAR_BACKSLASH && ptr < ptrend && *ptr == CHAR_E)
  ------------------
  |  | 1060|      0|#define CHAR_BACKSLASH              '\134'
  ------------------
                  if (c == CHAR_BACKSLASH && ptr < ptrend && *ptr == CHAR_E)
  ------------------
  |  | 1037|      0|#define CHAR_E                      '\105'
  ------------------
  |  Branch (2909:9): [True: 0, False: 0]
  |  Branch (2909:32): [True: 0, False: 0]
  |  Branch (2909:48): [True: 0, False: 0]
  ------------------
 2910|      0|      {
 2911|      0|      inescq = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 2912|      0|      ptr++;   /* Skip E */
 2913|      0|      }
 2914|      0|    else
 2915|      0|      {
 2916|      0|      if (expect_cond_assert > 0)   /* A literal is not allowed if we are */
  ------------------
  |  Branch (2916:11): [True: 0, False: 0]
  ------------------
 2917|      0|        {                           /* expecting a conditional assertion, */
 2918|      0|        ptr--;                      /* but an empty \Q\E sequence is OK.  */
 2919|      0|        errorcode = ERR28;
 2920|      0|        goto FAILED;
 2921|      0|        }
 2922|      0|      if (inverbname)
  ------------------
  |  Branch (2922:11): [True: 0, False: 0]
  ------------------
 2923|      0|        {                          /* Don't use PARSED_LITERAL() because it */
 2924|       |#if PCRE2_CODE_UNIT_WIDTH == 32    /* sets okquantifier. */
 2925|       |        if (c >= META_END) *parsed_pattern++ = META_BIGVALUE;
 2926|       |#endif
 2927|      0|        *parsed_pattern++ = c;
 2928|      0|        }
 2929|      0|      else
 2930|      0|        {
 2931|      0|        if (after_manual_callout-- <= 0)
  ------------------
  |  Branch (2931:13): [True: 0, False: 0]
  ------------------
 2932|      0|          parsed_pattern = manage_callouts(thisptr, &previous_callout,
 2933|      0|            auto_callout, parsed_pattern, cb);
 2934|      0|        PARSED_LITERAL(c, parsed_pattern);
  ------------------
  |  | 2768|      0|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  ------------------
 2935|      0|        }
 2936|      0|      meta_quantifier = 0;
 2937|      0|      }
 2938|      0|    continue;  /* Next character */
 2939|      0|    }
 2940|       |
 2941|       |  /* If we are processing the "name" part of a (*VERB:NAME) item, all
 2942|       |  characters up to the closing parenthesis are literals except when
 2943|       |  PCRE2_ALT_VERBNAMES is set. That causes backslash interpretation, but only \Q
 2944|       |  and \E and escaped characters are allowed (no character types such as \d). If
 2945|       |  PCRE2_EXTENDED is also set, we must ignore white space and # comments. Do
 2946|       |  this by not entering the special (*VERB:NAME) processing - they are then
 2947|       |  picked up below. Note that c is a character, not a code unit, so we must not
 2948|       |  use MAX_255 to test its size because MAX_255 tests code units and is assumed
 2949|       |  TRUE in 8-bit mode. */
 2950|       |
 2951|  12.9k|  if (inverbname &&
  ------------------
  |  Branch (2951:7): [True: 0, False: 12.9k]
  ------------------
 2952|      0|       (
 2953|       |        /* EITHER: not both options set */
 2954|      0|        ((options & (PCRE2_EXTENDED | PCRE2_ALT_VERBNAMES)) !=
  ------------------
  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
                      ((options & (PCRE2_EXTENDED | PCRE2_ALT_VERBNAMES)) !=
  ------------------
  |  |  141|      0|#define PCRE2_ALT_VERBNAMES       0x00400000u  /* C       */
  ------------------
  |  Branch (2954:9): [True: 0, False: 0]
  ------------------
 2955|      0|                    (PCRE2_EXTENDED | PCRE2_ALT_VERBNAMES)) ||
  ------------------
  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
                                  (PCRE2_EXTENDED | PCRE2_ALT_VERBNAMES)) ||
  ------------------
  |  |  141|      0|#define PCRE2_ALT_VERBNAMES       0x00400000u  /* C       */
  ------------------
 2956|      0|#ifdef SUPPORT_UNICODE
 2957|       |        /* OR: character > 255 AND not Unicode Pattern White Space */
 2958|      0|        (c > 255 && (c|1) != 0x200f && (c|1) != 0x2029) ||
  ------------------
  |  Branch (2958:10): [True: 0, False: 0]
  |  Branch (2958:21): [True: 0, False: 0]
  |  Branch (2958:40): [True: 0, False: 0]
  ------------------
 2959|      0|#endif
 2960|       |        /* OR: not a # comment or isspace() white space */
 2961|      0|        (c < 256 && c != CHAR_NUMBER_SIGN && (cb->ctypes[c] & ctype_space) == 0
  ------------------
  |  | 1003|      0|#define CHAR_NUMBER_SIGN            '\043'
  ------------------
                      (c < 256 && c != CHAR_NUMBER_SIGN && (cb->ctypes[c] & ctype_space) == 0
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (2961:10): [True: 0, False: 0]
  |  Branch (2961:21): [True: 0, False: 0]
  |  Branch (2961:46): [True: 0, False: 0]
  ------------------
 2962|      0|#ifdef SUPPORT_UNICODE
 2963|       |        /* and not CHAR_NEL when Unicode is supported */
 2964|      0|          && c != CHAR_NEL
  ------------------
  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (2964:14): [True: 0, False: 0]
  ------------------
 2965|      0|#endif
 2966|      0|       )))
 2967|      0|    {
 2968|      0|    PCRE2_SIZE verbnamelength;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 2969|       |
 2970|      0|    switch(c)
 2971|      0|      {
 2972|      0|      default:                     /* Don't use PARSED_LITERAL() because it */
  ------------------
  |  Branch (2972:7): [True: 0, False: 0]
  ------------------
 2973|       |#if PCRE2_CODE_UNIT_WIDTH == 32    /* sets okquantifier. */
 2974|       |      if (c >= META_END) *parsed_pattern++ = META_BIGVALUE;
 2975|       |#endif
 2976|      0|      *parsed_pattern++ = c;
 2977|      0|      break;
 2978|       |
 2979|      0|      case CHAR_RIGHT_PARENTHESIS:
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (2979:7): [True: 0, False: 0]
  ------------------
 2980|      0|      inverbname = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 2981|       |      /* This is the length in characters */
 2982|      0|      verbnamelength = (PCRE2_SIZE)(parsed_pattern - verblengthptr - 1);
 2983|       |      /* But the limit on the length is in code units */
 2984|      0|      if (ptr - verbnamestart - 1 > (int)MAX_MARK)
  ------------------
  |  |  213|      0|#define MAX_MARK ((1u << 8) - 1)
  ------------------
  |  Branch (2984:11): [True: 0, False: 0]
  ------------------
 2985|      0|        {
 2986|      0|        ptr--;
 2987|      0|        errorcode = ERR76;
 2988|      0|        goto FAILED;
 2989|      0|        }
 2990|      0|      *verblengthptr = (uint32_t)verbnamelength;
 2991|       |
 2992|       |      /* If this name was on a verb such as (*ACCEPT) which does not continue,
 2993|       |      a (*MARK) was generated for the name. We now add the original verb as the
 2994|       |      next item. */
 2995|       |
 2996|      0|      if (add_after_mark != 0)
  ------------------
  |  Branch (2996:11): [True: 0, False: 0]
  ------------------
 2997|      0|        {
 2998|      0|        *parsed_pattern++ = add_after_mark;
 2999|      0|        add_after_mark = 0;
 3000|      0|        }
 3001|      0|      break;
 3002|       |
 3003|      0|      case CHAR_BACKSLASH:
  ------------------
  |  | 1060|      0|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3003:7): [True: 0, False: 0]
  ------------------
 3004|      0|      if ((options & PCRE2_ALT_VERBNAMES) != 0)
  ------------------
  |  |  141|      0|#define PCRE2_ALT_VERBNAMES       0x00400000u  /* C       */
  ------------------
  |  Branch (3004:11): [True: 0, False: 0]
  ------------------
 3005|      0|        {
 3006|      0|        escape = PRIV(check_escape)(&ptr, ptrend, &c, &errorcode, options,
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2021|      0|#define _pcre2_check_escape          PCRE2_SUFFIX(_pcre2_check_escape_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3007|      0|          xoptions, FALSE, cb);
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 3008|      0|        if (errorcode != 0) goto FAILED;
  ------------------
  |  Branch (3008:13): [True: 0, False: 0]
  ------------------
 3009|      0|        }
 3010|      0|      else escape = 0;   /* Treat all as literal */
 3011|       |
 3012|      0|      switch(escape)
 3013|      0|        {
 3014|      0|        case 0:                    /* Don't use PARSED_LITERAL() because it */
  ------------------
  |  Branch (3014:9): [True: 0, False: 0]
  ------------------
 3015|       |#if PCRE2_CODE_UNIT_WIDTH == 32    /* sets okquantifier. */
 3016|       |        if (c >= META_END) *parsed_pattern++ = META_BIGVALUE;
 3017|       |#endif
 3018|      0|        *parsed_pattern++ = c;
 3019|      0|        break;
 3020|       |
 3021|      0|        case ESC_ub:
  ------------------
  |  Branch (3021:9): [True: 0, False: 0]
  ------------------
 3022|      0|        *parsed_pattern++ = CHAR_u;
  ------------------
  |  | 1085|      0|#define CHAR_u                      '\165'
  ------------------
 3023|      0|        PARSED_LITERAL(CHAR_LEFT_CURLY_BRACKET, parsed_pattern);
  ------------------
  |  | 2768|      0|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  ------------------
 3024|      0|        break;
 3025|       |
 3026|      0|        case ESC_Q:
  ------------------
  |  Branch (3026:9): [True: 0, False: 0]
  ------------------
 3027|      0|        inescq = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3028|      0|        break;
 3029|       |
 3030|      0|        case ESC_E:           /* Ignore */
  ------------------
  |  Branch (3030:9): [True: 0, False: 0]
  ------------------
 3031|      0|        break;
 3032|       |
 3033|      0|        default:
  ------------------
  |  Branch (3033:9): [True: 0, False: 0]
  ------------------
 3034|      0|        errorcode = ERR40;    /* Invalid in verb name */
 3035|      0|        goto FAILED;
 3036|      0|        }
 3037|      0|      }
 3038|      0|    continue;   /* Next character in pattern */
 3039|      0|    }
 3040|       |
 3041|       |  /* Not a verb name character. At this point we must process everything that
 3042|       |  must not change the quantification state. This is mainly comments, but we
 3043|       |  handle \Q and \E here as well, so that an item such as A\Q\E+ is treated as
 3044|       |  A+, as in Perl. An isolated \E is ignored. */
 3045|       |
 3046|  12.9k|  if (c == CHAR_BACKSLASH && ptr < ptrend)
  ------------------
  |  | 1060|  25.9k|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3046:7): [True: 1.03k, False: 11.9k]
  |  Branch (3046:30): [True: 1.03k, False: 0]
  ------------------
 3047|  1.03k|    {
 3048|  1.03k|    if (*ptr == CHAR_Q || *ptr == CHAR_E)
  ------------------
  |  | 1049|  2.06k|#define CHAR_Q                      '\121'
  ------------------
                  if (*ptr == CHAR_Q || *ptr == CHAR_E)
  ------------------
  |  | 1037|  1.03k|#define CHAR_E                      '\105'
  ------------------
  |  Branch (3048:9): [True: 0, False: 1.03k]
  |  Branch (3048:27): [True: 3, False: 1.03k]
  ------------------
 3049|      3|      {
 3050|      3|      inescq = *ptr == CHAR_Q;
  ------------------
  |  | 1049|      3|#define CHAR_Q                      '\121'
  ------------------
 3051|      3|      ptr++;
 3052|      3|      continue;
 3053|      3|      }
 3054|  1.03k|    }
 3055|       |
 3056|       |  /* Skip over whitespace and # comments in extended mode. Note that c is a
 3057|       |  character, not a code unit, so we must not use MAX_255 to test its size
 3058|       |  because MAX_255 tests code units and is assumed TRUE in 8-bit mode. The
 3059|       |  whitespace characters are those designated as "Pattern White Space" by
 3060|       |  Unicode, which are the isspace() characters plus CHAR_NEL (newline), which is
 3061|       |  U+0085 in Unicode, plus U+200E, U+200F, U+2028, and U+2029. These are a
 3062|       |  subset of space characters that match \h and \v. */
 3063|       |
 3064|  12.9k|  if ((options & PCRE2_EXTENDED) != 0)
  ------------------
  |  |  126|  12.9k|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
  |  Branch (3064:7): [True: 108, False: 12.8k]
  ------------------
 3065|    108|    {
 3066|    108|    if (c < 256 && (cb->ctypes[c] & ctype_space) != 0) continue;
  ------------------
  |  |  597|    108|#define ctype_space    0x01
  ------------------
  |  Branch (3066:9): [True: 108, False: 0]
  |  Branch (3066:20): [True: 9, False: 99]
  ------------------
 3067|     99|#ifdef SUPPORT_UNICODE
 3068|     99|    if (c == CHAR_NEL || (c|1) == 0x200f || (c|1) == 0x2029) continue;
  ------------------
  |  |  993|    198|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (3068:9): [True: 0, False: 99]
  |  Branch (3068:26): [True: 0, False: 99]
  |  Branch (3068:45): [True: 0, False: 99]
  ------------------
 3069|     99|#endif
 3070|     99|    if (c == CHAR_NUMBER_SIGN)
  ------------------
  |  | 1003|     99|#define CHAR_NUMBER_SIGN            '\043'
  ------------------
  |  Branch (3070:9): [True: 0, False: 99]
  ------------------
 3071|      0|      {
 3072|      0|      while (ptr < ptrend)
  ------------------
  |  Branch (3072:14): [True: 0, False: 0]
  ------------------
 3073|      0|        {
 3074|      0|        if (IS_NEWLINE(ptr))      /* For non-fixed-length newline cases, */
  ------------------
  |  |  497|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 0, False: 0]
  |  |  |  Branch (497:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   48|      0|#define PSEND   end_pattern    /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   48|      0|#define PSEND   end_pattern    /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |  501|      0|    : \
  |  |  502|      0|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   48|      0|#define PSEND   end_pattern    /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  503|      0|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  504|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   46|      0|#define NLBLOCK cb             /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 0, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|      0|    ) \
  |  |  506|      0|  )
  ------------------
 3075|      0|          {                       /* IS_NEWLINE sets cb->nllen. */
 3076|      0|          ptr += cb->nllen;
 3077|      0|          break;
 3078|      0|          }
 3079|      0|        ptr++;
 3080|      0|#ifdef SUPPORT_UNICODE
 3081|      0|        if (utf) FORWARDCHARTEST(ptr, ptrend);
  ------------------
  |  |  349|      0|#define FORWARDCHARTEST(eptr,end) while(eptr < end && (*eptr & 0xc0u) == 0x80u) eptr++
  |  |  ------------------
  |  |  |  Branch (349:41): [True: 0, False: 0]
  |  |  |  Branch (349:55): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3081:13): [True: 0, False: 0]
  ------------------
 3082|      0|#endif
 3083|      0|        }
 3084|      0|      continue;  /* Next character in pattern */
 3085|      0|      }
 3086|     99|    }
 3087|       |
 3088|       |  /* Skip over bracketed comments */
 3089|       |
 3090|  12.9k|  if (c == CHAR_LEFT_PARENTHESIS && ptrend - ptr >= 2 &&
  ------------------
  |  | 1008|  25.9k|#define CHAR_LEFT_PARENTHESIS       '\050'
  ------------------
  |  Branch (3090:7): [True: 35, False: 12.9k]
  |  Branch (3090:37): [True: 34, False: 1]
  ------------------
 3091|     34|      ptr[0] == CHAR_QUESTION_MARK && ptr[1] == CHAR_NUMBER_SIGN)
  ------------------
  |  | 1031|  13.0k|#define CHAR_QUESTION_MARK          '\077'
  ------------------
                    ptr[0] == CHAR_QUESTION_MARK && ptr[1] == CHAR_NUMBER_SIGN)
  ------------------
  |  | 1003|      5|#define CHAR_NUMBER_SIGN            '\043'
  ------------------
  |  Branch (3091:7): [True: 5, False: 29]
  |  Branch (3091:39): [True: 0, False: 5]
  ------------------
 3092|      0|    {
 3093|      0|    while (++ptr < ptrend && *ptr != CHAR_RIGHT_PARENTHESIS);
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (3093:12): [True: 0, False: 0]
  |  Branch (3093:30): [True: 0, False: 0]
  ------------------
 3094|      0|    if (ptr >= ptrend)
  ------------------
  |  Branch (3094:9): [True: 0, False: 0]
  ------------------
 3095|      0|      {
 3096|      0|      errorcode = ERR18;  /* A special error for missing ) in a comment */
 3097|      0|      goto FAILED;        /* to make it easier to debug. */
 3098|      0|      }
 3099|      0|    ptr++;
 3100|      0|    continue;  /* Next character in pattern */
 3101|      0|    }
 3102|       |
 3103|       |  /* If the next item is not a quantifier, fill in length of any previous
 3104|       |  callout and create an auto callout if required. */
 3105|       |
 3106|  12.9k|  if (c != CHAR_ASTERISK && c != CHAR_PLUS && c != CHAR_QUESTION_MARK &&
  ------------------
  |  | 1010|  25.9k|#define CHAR_ASTERISK               '\052'
  ------------------
                if (c != CHAR_ASTERISK && c != CHAR_PLUS && c != CHAR_QUESTION_MARK &&
  ------------------
  |  | 1011|  25.7k|#define CHAR_PLUS                   '\053'
  ------------------
                if (c != CHAR_ASTERISK && c != CHAR_PLUS && c != CHAR_QUESTION_MARK &&
  ------------------
  |  | 1031|  25.0k|#define CHAR_QUESTION_MARK          '\077'
  ------------------
  |  Branch (3106:7): [True: 12.7k, False: 181]
  |  Branch (3106:29): [True: 12.0k, False: 717]
  |  Branch (3106:47): [True: 11.3k, False: 693]
  ------------------
 3107|  11.3k|       (c != CHAR_LEFT_CURLY_BRACKET ||
  ------------------
  |  | 1091|  22.7k|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (3107:9): [True: 11.3k, False: 47]
  ------------------
 3108|     47|         (tempptr = ptr,
  ------------------
  |  Branch (3108:10): [True: 40, False: 7]
  ------------------
 3109|     47|         !read_repeat_counts(&tempptr, ptrend, NULL, NULL, &errorcode))))
 3110|  11.3k|    {
 3111|  11.3k|    if (after_manual_callout-- <= 0)
  ------------------
  |  Branch (3111:9): [True: 11.3k, False: 0]
  ------------------
 3112|  11.3k|      {
 3113|  11.3k|      parsed_pattern = manage_callouts(thisptr, &previous_callout, auto_callout,
 3114|  11.3k|        parsed_pattern, cb);
 3115|  11.3k|      this_parsed_item = parsed_pattern;  /* New start for current item */
 3116|  11.3k|      }
 3117|  11.3k|    }
 3118|       |
 3119|       |  /* If expect_cond_assert is 2, we have just passed (?( and are expecting an
 3120|       |  assertion, possibly preceded by a callout. If the value is 1, we have just
 3121|       |  had the callout and expect an assertion. There must be at least 3 more
 3122|       |  characters in all cases. When expect_cond_assert is 2, we know that the
 3123|       |  current character is an opening parenthesis, as otherwise we wouldn't be
 3124|       |  here. However, when it is 1, we need to check, and it's easiest just to check
 3125|       |  always. Note that expect_cond_assert may be negative, since all callouts just
 3126|       |  decrement it. */
 3127|       |
 3128|  12.9k|  if (expect_cond_assert > 0)
  ------------------
  |  Branch (3128:7): [True: 0, False: 12.9k]
  ------------------
 3129|      0|    {
 3130|      0|    BOOL ok = c == CHAR_LEFT_PARENTHESIS && ptrend - ptr >= 3 &&
  ------------------
  |  | 1008|      0|#define CHAR_LEFT_PARENTHESIS       '\050'
  ------------------
  |  Branch (3130:15): [True: 0, False: 0]
  |  Branch (3130:45): [True: 0, False: 0]
  ------------------
 3131|      0|              (ptr[0] == CHAR_QUESTION_MARK || ptr[0] == CHAR_ASTERISK);
  ------------------
  |  | 1031|      0|#define CHAR_QUESTION_MARK          '\077'
  ------------------
                            (ptr[0] == CHAR_QUESTION_MARK || ptr[0] == CHAR_ASTERISK);
  ------------------
  |  | 1010|      0|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (3131:16): [True: 0, False: 0]
  |  Branch (3131:48): [True: 0, False: 0]
  ------------------
 3132|      0|    if (ok)
  ------------------
  |  Branch (3132:9): [True: 0, False: 0]
  ------------------
 3133|      0|      {
 3134|      0|      if (ptr[0] == CHAR_ASTERISK)  /* New alpha assertion format, possibly */
  ------------------
  |  | 1010|      0|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (3134:11): [True: 0, False: 0]
  ------------------
 3135|      0|        {
 3136|      0|        ok = MAX_255(ptr[1]) && (cb->ctypes[ptr[1]] & ctype_lcletter) != 0;
  ------------------
  |  |  212|      0|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      ok = MAX_255(ptr[1]) && (cb->ctypes[ptr[1]] & ctype_lcletter) != 0;
  ------------------
  |  |  599|      0|#define ctype_lcletter 0x04
  ------------------
  |  Branch (3136:33): [True: 0, False: 0]
  ------------------
 3137|      0|        }
 3138|      0|      else switch(ptr[1])  /* Traditional symbolic format */
 3139|      0|        {
 3140|      0|        case CHAR_C:
  ------------------
  |  | 1035|      0|#define CHAR_C                      '\103'
  ------------------
  |  Branch (3140:9): [True: 0, False: 0]
  ------------------
 3141|      0|        ok = expect_cond_assert == 2;
 3142|      0|        break;
 3143|       |
 3144|      0|        case CHAR_EQUALS_SIGN:
  ------------------
  |  | 1029|      0|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (3144:9): [True: 0, False: 0]
  ------------------
 3145|      0|        case CHAR_EXCLAMATION_MARK:
  ------------------
  |  | 1001|      0|#define CHAR_EXCLAMATION_MARK       '\041'
  ------------------
  |  Branch (3145:9): [True: 0, False: 0]
  ------------------
 3146|      0|        break;
 3147|       |
 3148|      0|        case CHAR_LESS_THAN_SIGN:
  ------------------
  |  | 1028|      0|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
  |  Branch (3148:9): [True: 0, False: 0]
  ------------------
 3149|      0|        ok = ptr[2] == CHAR_EQUALS_SIGN || ptr[2] == CHAR_EXCLAMATION_MARK;
  ------------------
  |  | 1029|      0|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
                      ok = ptr[2] == CHAR_EQUALS_SIGN || ptr[2] == CHAR_EXCLAMATION_MARK;
  ------------------
  |  | 1001|      0|#define CHAR_EXCLAMATION_MARK       '\041'
  ------------------
  |  Branch (3149:14): [True: 0, False: 0]
  |  Branch (3149:44): [True: 0, False: 0]
  ------------------
 3150|      0|        break;
 3151|       |
 3152|      0|        default:
  ------------------
  |  Branch (3152:9): [True: 0, False: 0]
  ------------------
 3153|      0|        ok = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 3154|      0|        }
 3155|      0|      }
 3156|       |
 3157|      0|    if (!ok)
  ------------------
  |  Branch (3157:9): [True: 0, False: 0]
  ------------------
 3158|      0|      {
 3159|      0|      ptr--;   /* Adjust error offset */
 3160|      0|      errorcode = ERR28;
 3161|      0|      goto FAILED;
 3162|      0|      }
 3163|      0|    }
 3164|       |
 3165|       |  /* Remember whether we are expecting a conditional assertion, and set the
 3166|       |  default for this item. */
 3167|       |
 3168|  12.9k|  prev_expect_cond_assert = expect_cond_assert;
 3169|  12.9k|  expect_cond_assert = 0;
 3170|       |
 3171|       |  /* Remember quantification status for the previous significant item, then set
 3172|       |  default for this item. */
 3173|       |
 3174|  12.9k|  prev_okquantifier = okquantifier;
 3175|  12.9k|  prev_meta_quantifier = meta_quantifier;
 3176|  12.9k|  okquantifier = FALSE;
  ------------------
  |  |   87|  12.9k|#define FALSE   0
  ------------------
 3177|  12.9k|  meta_quantifier = 0;
 3178|       |
 3179|       |  /* If the previous significant item was a quantifier, adjust the parsed code
 3180|       |  if there is a following modifier. The base meta value is always followed by
 3181|       |  the PLUS and QUERY values, in that order. We do this here rather than after
 3182|       |  reading a quantifier so that intervening comments and /x whitespace can be
 3183|       |  ignored without having to replicate code. */
 3184|       |
 3185|  12.9k|  if (prev_meta_quantifier != 0 && (c == CHAR_QUESTION_MARK || c == CHAR_PLUS))
  ------------------
  |  | 1031|  2.64k|#define CHAR_QUESTION_MARK          '\077'
  ------------------
                if (prev_meta_quantifier != 0 && (c == CHAR_QUESTION_MARK || c == CHAR_PLUS))
  ------------------
  |  | 1011|  1.09k|#define CHAR_PLUS                   '\053'
  ------------------
  |  Branch (3185:7): [True: 1.32k, False: 11.6k]
  |  Branch (3185:37): [True: 230, False: 1.09k]
  |  Branch (3185:64): [True: 35, False: 1.05k]
  ------------------
 3186|    265|    {
 3187|    265|    parsed_pattern[(prev_meta_quantifier == META_MINMAX)? -3 : -1] =
  ------------------
  |  |  288|    265|#define META_MINMAX           0x803d0000u  /* {n,m}  repeat */
  ------------------
  |  Branch (3187:20): [True: 0, False: 265]
  ------------------
 3188|    265|      prev_meta_quantifier + ((c == CHAR_QUESTION_MARK)?
  ------------------
  |  | 1031|    265|#define CHAR_QUESTION_MARK          '\077'
  ------------------
  |  Branch (3188:31): [True: 230, False: 35]
  ------------------
 3189|    230|        0x00020000u : 0x00010000u);
 3190|    265|    continue;  /* Next character in pattern */
 3191|    265|    }
 3192|       |
 3193|       |  /* Process the next item in the main part of a pattern. */
 3194|       |
 3195|  12.7k|  switch(c)
 3196|  12.7k|    {
 3197|  9.07k|    default:              /* Non-special character */
  ------------------
  |  Branch (3197:5): [True: 9.07k, False: 3.63k]
  ------------------
 3198|  9.07k|    PARSED_LITERAL(c, parsed_pattern);
  ------------------
  |  | 2768|  9.07k|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|  9.07k|#define TRUE    1
  |  |  ------------------
  ------------------
 3199|  9.07k|    break;
 3200|       |
 3201|       |
 3202|       |    /* ---- Escape sequence ---- */
 3203|       |
 3204|  1.03k|    case CHAR_BACKSLASH:
  ------------------
  |  | 1060|  1.03k|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3204:5): [True: 1.03k, False: 11.6k]
  ------------------
 3205|  1.03k|    tempptr = ptr;
 3206|  1.03k|    escape = PRIV(check_escape)(&ptr, ptrend, &c, &errorcode, options,
  ------------------
  |  |  195|  1.03k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2021|  1.03k|#define _pcre2_check_escape          PCRE2_SUFFIX(_pcre2_check_escape_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  1.03k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  1.03k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  1.03k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3207|  1.03k|      xoptions, FALSE, cb);
  ------------------
  |  |   87|  1.03k|#define FALSE   0
  ------------------
 3208|  1.03k|    if (errorcode != 0)
  ------------------
  |  Branch (3208:9): [True: 3, False: 1.02k]
  ------------------
 3209|      3|      {
 3210|     10|      ESCAPE_FAILED:
 3211|     10|      if ((xoptions & PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL) == 0)
  ------------------
  |  |  150|     10|#define PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL    0x00000002u  /* C */
  ------------------
  |  Branch (3211:11): [True: 10, False: 0]
  ------------------
 3212|     10|        goto FAILED;
 3213|      0|      ptr = tempptr;
 3214|      0|      if (ptr >= ptrend) c = CHAR_BACKSLASH; else
  ------------------
  |  | 1060|      0|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3214:11): [True: 0, False: 0]
  ------------------
 3215|      0|        {
 3216|      0|        GETCHARINCTEST(c, ptr);   /* Get character value, increment pointer */
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3217|      0|        }
 3218|      0|      escape = 0;                 /* Treat as literal character */
 3219|      0|      }
 3220|       |
 3221|       |    /* The escape was a data escape or literal character. */
 3222|       |
 3223|  1.02k|    if (escape == 0)
  ------------------
  |  Branch (3223:9): [True: 330, False: 698]
  ------------------
 3224|    330|      {
 3225|    330|      PARSED_LITERAL(c, parsed_pattern);
  ------------------
  |  | 2768|    330|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|    330|#define TRUE    1
  |  |  ------------------
  ------------------
 3226|    330|      }
 3227|       |
 3228|       |    /* The escape was a back (or forward) reference. We keep the offset in
 3229|       |    order to give a more useful diagnostic for a bad forward reference. For
 3230|       |    references to groups numbered less than 10 we can't use more than two items
 3231|       |    in parsed_pattern because they may be just two characters in the input (and
 3232|       |    in a 64-bit world an offset may need two elements). So for them, the offset
 3233|       |    of the first occurrent is held in a special vector. */
 3234|       |
 3235|    698|    else if (escape < 0)
  ------------------
  |  Branch (3235:14): [True: 15, False: 683]
  ------------------
 3236|     15|      {
 3237|     15|      offset = (PCRE2_SIZE)(ptr - cb->start_pattern - 1);
 3238|     15|      escape = -escape;
 3239|     15|      *parsed_pattern++ = META_BACKREF | (uint32_t)escape;
  ------------------
  |  |  215|     15|#define META_BACKREF          0x80030000u  /* Back ref */
  ------------------
 3240|     15|      if (escape < 10)
  ------------------
  |  Branch (3240:11): [True: 7, False: 8]
  ------------------
 3241|      7|        {
 3242|      7|        if (cb->small_ref_offset[escape] == PCRE2_UNSET)
  ------------------
  |  |  482|      7|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (3242:13): [True: 6, False: 1]
  ------------------
 3243|      6|          cb->small_ref_offset[escape] = offset;
 3244|      7|        }
 3245|      8|      else
 3246|      8|        {
 3247|      8|        PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      8|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 3248|      8|        }
 3249|     15|      okquantifier = TRUE;
  ------------------
  |  |   88|     15|#define TRUE    1
  ------------------
 3250|     15|      }
 3251|       |
 3252|       |    /* The escape was a character class such as \d etc. or other special
 3253|       |    escape indicator such as \A or \X. Most of them generate just a single
 3254|       |    parsed item, but \P and \p are followed by a 16-bit type and a 16-bit
 3255|       |    value. They are supported only when Unicode is available. The type and
 3256|       |    value are packed into a single 32-bit value so that the whole sequences
 3257|       |    uses only two elements in the parsed_vector. This is because the same
 3258|       |    coding is used if \d (for example) is turned into \p{Nd} when PCRE2_UCP is
 3259|       |    set.
 3260|       |
 3261|       |    There are also some cases where the escape sequence is followed by a name:
 3262|       |    \k{name}, \k<name>, and \k'name' are backreferences by name, and \g<name>
 3263|       |    and \g'name' are subroutine calls by name; \g{name} is a synonym for
 3264|       |    \k{name}. Note that \g<number> and \g'number' are handled by check_escape()
 3265|       |    and returned as a negative value (handled above). A name is coded as an
 3266|       |    offset into the pattern and a length. */
 3267|       |
 3268|    683|    else switch (escape)
 3269|    683|      {
 3270|     29|      case ESC_C:
  ------------------
  |  Branch (3270:7): [True: 29, False: 654]
  ------------------
 3271|       |#ifdef NEVER_BACKSLASH_C
 3272|       |      errorcode = ERR85;
 3273|       |      goto ESCAPE_FAILED;
 3274|       |#else
 3275|     29|      if ((options & PCRE2_NEVER_BACKSLASH_C) != 0)
  ------------------
  |  |  139|     29|#define PCRE2_NEVER_BACKSLASH_C   0x00100000u  /* C       */
  ------------------
  |  Branch (3275:11): [True: 0, False: 29]
  ------------------
 3276|      0|        {
 3277|      0|        errorcode = ERR83;
 3278|      0|        goto ESCAPE_FAILED;
 3279|      0|        }
 3280|     29|#endif
 3281|     29|      okquantifier = TRUE;
  ------------------
  |  |   88|     29|#define TRUE    1
  ------------------
 3282|     29|      *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|     29|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3283|     29|      break;
 3284|       |
 3285|       |      /* This is a special return that happens only in EXTRA_ALT_BSUX mode,
 3286|       |      when \u{ is not followed by hex digits and }. It requests two literal
 3287|       |      characters, u and { and we need this, as otherwise \u{ 12} (for example)
 3288|       |      would be treated as u{12} now that spaces are allowed in quantifiers. */
 3289|       |
 3290|      0|      case ESC_ub:
  ------------------
  |  Branch (3290:7): [True: 0, False: 683]
  ------------------
 3291|      0|      *parsed_pattern++ = CHAR_u;
  ------------------
  |  | 1085|      0|#define CHAR_u                      '\165'
  ------------------
 3292|      0|      PARSED_LITERAL(CHAR_LEFT_CURLY_BRACKET, parsed_pattern);
  ------------------
  |  | 2768|      0|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  ------------------
 3293|      0|      break;
 3294|       |
 3295|     43|      case ESC_X:
  ------------------
  |  Branch (3295:7): [True: 43, False: 640]
  ------------------
 3296|       |#ifndef SUPPORT_UNICODE
 3297|       |      errorcode = ERR45;   /* Supported only with Unicode support */
 3298|       |      goto ESCAPE_FAILED;
 3299|       |#endif
 3300|    135|      case ESC_H:
  ------------------
  |  Branch (3300:7): [True: 92, False: 591]
  ------------------
 3301|    146|      case ESC_h:
  ------------------
  |  Branch (3301:7): [True: 11, False: 672]
  ------------------
 3302|    177|      case ESC_N:
  ------------------
  |  Branch (3302:7): [True: 31, False: 652]
  ------------------
 3303|    265|      case ESC_R:
  ------------------
  |  Branch (3303:7): [True: 88, False: 595]
  ------------------
 3304|    335|      case ESC_V:
  ------------------
  |  Branch (3304:7): [True: 70, False: 613]
  ------------------
 3305|    344|      case ESC_v:
  ------------------
  |  Branch (3305:7): [True: 9, False: 674]
  ------------------
 3306|    344|      okquantifier = TRUE;
  ------------------
  |  |   88|    344|#define TRUE    1
  ------------------
 3307|    344|      *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|    344|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3308|    344|      break;
 3309|       |
 3310|     90|      default:  /* \A, \B, \b, \G, \K, \Z, \z cannot be quantified. */
  ------------------
  |  Branch (3310:7): [True: 90, False: 593]
  ------------------
 3311|     90|      *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|     90|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3312|     90|      break;
 3313|       |
 3314|       |      /* Escapes that may change in UCP mode. */
 3315|       |
 3316|     27|      case ESC_d:
  ------------------
  |  Branch (3316:7): [True: 27, False: 656]
  ------------------
 3317|     46|      case ESC_D:
  ------------------
  |  Branch (3317:7): [True: 19, False: 664]
  ------------------
 3318|     72|      case ESC_s:
  ------------------
  |  Branch (3318:7): [True: 26, False: 657]
  ------------------
 3319|    121|      case ESC_S:
  ------------------
  |  Branch (3319:7): [True: 49, False: 634]
  ------------------
 3320|    186|      case ESC_w:
  ------------------
  |  Branch (3320:7): [True: 65, False: 618]
  ------------------
 3321|    202|      case ESC_W:
  ------------------
  |  Branch (3321:7): [True: 16, False: 667]
  ------------------
 3322|    202|      okquantifier = TRUE;
  ------------------
  |  |   88|    202|#define TRUE    1
  ------------------
 3323|    202|      parsed_pattern = handle_escdsw(escape, parsed_pattern, options,
 3324|    202|        xoptions);
 3325|    202|      break;
 3326|       |
 3327|       |      /* Unicode property matching */
 3328|       |
 3329|      0|      case ESC_P:
  ------------------
  |  Branch (3329:7): [True: 0, False: 683]
  ------------------
 3330|     12|      case ESC_p:
  ------------------
  |  Branch (3330:7): [True: 12, False: 671]
  ------------------
 3331|     12|#ifdef SUPPORT_UNICODE
 3332|     12|        {
 3333|     12|        BOOL negated;
 3334|     12|        uint16_t ptype = 0, pdata = 0;
 3335|     12|        if (!get_ucp(&ptr, &negated, &ptype, &pdata, &errorcode, cb))
  ------------------
  |  Branch (3335:13): [True: 3, False: 9]
  ------------------
 3336|      3|          goto ESCAPE_FAILED;
 3337|      9|        if (negated) escape = (escape == ESC_P)? ESC_p : ESC_P;
  ------------------
  |  Branch (3337:13): [True: 0, False: 9]
  |  Branch (3337:31): [True: 0, False: 0]
  ------------------
 3338|      9|        *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|      9|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3339|      9|        *parsed_pattern++ = (ptype << 16) | pdata;
 3340|      9|        okquantifier = TRUE;
  ------------------
  |  |   88|      9|#define TRUE    1
  ------------------
 3341|      9|        }
 3342|       |#else
 3343|       |      errorcode = ERR45;
 3344|       |      goto ESCAPE_FAILED;
 3345|       |#endif
 3346|      0|      break;  /* End \P and \p */
 3347|       |
 3348|       |      /* When \g is used with quotes or angle brackets as delimiters, it is a
 3349|       |      numerical or named subroutine call, and control comes here. When used
 3350|       |      with brace delimiters it is a numberical back reference and does not come
 3351|       |      here because check_escape() returns it directly as a reference. \k is
 3352|       |      always a named back reference. */
 3353|       |
 3354|      2|      case ESC_g:
  ------------------
  |  Branch (3354:7): [True: 2, False: 681]
  ------------------
 3355|      6|      case ESC_k:
  ------------------
  |  Branch (3355:7): [True: 4, False: 679]
  ------------------
 3356|      6|      if (ptr >= ptrend || (*ptr != CHAR_LEFT_CURLY_BRACKET &&
  ------------------
  |  | 1091|     12|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (3356:11): [True: 0, False: 6]
  |  Branch (3356:29): [True: 2, False: 4]
  ------------------
 3357|      2|          *ptr != CHAR_LESS_THAN_SIGN && *ptr != CHAR_APOSTROPHE))
  ------------------
  |  | 1028|      8|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
                        *ptr != CHAR_LESS_THAN_SIGN && *ptr != CHAR_APOSTROPHE))
  ------------------
  |  | 1007|      0|#define CHAR_APOSTROPHE             '\047'
  ------------------
  |  Branch (3357:11): [True: 0, False: 2]
  |  Branch (3357:42): [True: 0, False: 0]
  ------------------
 3358|      0|        {
 3359|      0|        errorcode = (escape == ESC_g)? ERR57 : ERR69;
  ------------------
  |  Branch (3359:21): [True: 0, False: 0]
  ------------------
 3360|      0|        goto ESCAPE_FAILED;
 3361|      0|        }
 3362|      6|      terminator = (*ptr == CHAR_LESS_THAN_SIGN)?
  ------------------
  |  | 1028|      6|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
  |  Branch (3362:20): [True: 2, False: 4]
  ------------------
 3363|      4|        CHAR_GREATER_THAN_SIGN : (*ptr == CHAR_APOSTROPHE)?
  ------------------
  |  | 1030|      2|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
                      CHAR_GREATER_THAN_SIGN : (*ptr == CHAR_APOSTROPHE)?
  ------------------
  |  | 1007|      4|#define CHAR_APOSTROPHE             '\047'
  ------------------
  |  Branch (3363:34): [True: 0, False: 4]
  ------------------
 3364|      4|        CHAR_APOSTROPHE : CHAR_RIGHT_CURLY_BRACKET;
  ------------------
  |  | 1007|      0|#define CHAR_APOSTROPHE             '\047'
  ------------------
                      CHAR_APOSTROPHE : CHAR_RIGHT_CURLY_BRACKET;
  ------------------
  |  | 1093|     10|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
 3365|       |
 3366|       |      /* For a non-braced \g, check for a numerical recursion. */
 3367|       |
 3368|      6|      if (escape == ESC_g && terminator != CHAR_RIGHT_CURLY_BRACKET)
  ------------------
  |  | 1093|      2|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (3368:11): [True: 2, False: 4]
  |  Branch (3368:30): [True: 2, False: 0]
  ------------------
 3369|      2|        {
 3370|      2|        PCRE2_SPTR p = ptr + 1;
  ------------------
  |  |  820|      2|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3371|       |
 3372|      2|        if (read_number(&p, ptrend, cb->bracount, MAX_GROUP_NUMBER, ERR61, &i,
  ------------------
  |  |  147|      2|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (3372:13): [True: 0, False: 2]
  ------------------
 3373|      2|            &errorcode))
 3374|      0|          {
 3375|      0|          if (p >= ptrend || *p != terminator)
  ------------------
  |  Branch (3375:15): [True: 0, False: 0]
  |  Branch (3375:30): [True: 0, False: 0]
  ------------------
 3376|      0|            {
 3377|      0|            errorcode = ERR57;
 3378|      0|            goto ESCAPE_FAILED;
 3379|      0|            }
 3380|      0|          ptr = p;
 3381|      0|          goto SET_RECURSION;
 3382|      0|          }
 3383|      2|        if (errorcode != 0) goto ESCAPE_FAILED;
  ------------------
  |  Branch (3383:13): [True: 0, False: 2]
  ------------------
 3384|      2|        }
 3385|       |
 3386|       |      /* Not a numerical recursion. Perl allows spaces and tabs after { and
 3387|       |      before } but not for other delimiters. */
 3388|       |
 3389|      6|      if (!read_name(&ptr, ptrend, utf, terminator, &offset, &name, &namelen,
  ------------------
  |  Branch (3389:11): [True: 4, False: 2]
  ------------------
 3390|      6|          &errorcode, cb)) goto ESCAPE_FAILED;
 3391|       |
 3392|       |      /* \k and \g when used with braces are back references, whereas \g used
 3393|       |      with quotes or angle brackets is a recursion */
 3394|       |
 3395|      2|      *parsed_pattern++ =
 3396|      2|        (escape == ESC_k || terminator == CHAR_RIGHT_CURLY_BRACKET)?
  ------------------
  |  | 1093|      0|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (3396:10): [True: 2, False: 0]
  |  Branch (3396:29): [True: 0, False: 0]
  ------------------
 3397|      2|          META_BACKREF_BYNAME : META_RECURSE_BYNAME;
  ------------------
  |  |  216|      2|#define META_BACKREF_BYNAME   0x80040000u  /* \k'name' */
  ------------------
                        META_BACKREF_BYNAME : META_RECURSE_BYNAME;
  ------------------
  |  |  245|      2|#define META_RECURSE_BYNAME   0x80210000u  /* (?&name) */
  ------------------
 3398|      2|      *parsed_pattern++ = namelen;
 3399|       |
 3400|      2|      PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      2|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 3401|      2|      okquantifier = TRUE;
  ------------------
  |  |   88|      2|#define TRUE    1
  ------------------
 3402|      2|      break;  /* End special escape processing */
 3403|    683|      }
 3404|  1.02k|    break;    /* End escape sequence processing */
 3405|       |
 3406|       |
 3407|       |    /* ---- Single-character special items ---- */
 3408|       |
 3409|  1.02k|    case CHAR_CIRCUMFLEX_ACCENT:
  ------------------
  |  | 1062|    189|#define CHAR_CIRCUMFLEX_ACCENT      '\136'
  ------------------
  |  Branch (3409:5): [True: 189, False: 12.5k]
  ------------------
 3410|    189|    *parsed_pattern++ = META_CIRCUMFLEX;
  ------------------
  |  |  221|    189|#define META_CIRCUMFLEX       0x80090000u  /* ^ metacharacter */
  ------------------
 3411|    189|    break;
 3412|       |
 3413|     67|    case CHAR_DOLLAR_SIGN:
  ------------------
  |  | 1004|     67|#define CHAR_DOLLAR_SIGN            '\044'
  ------------------
  |  Branch (3413:5): [True: 67, False: 12.6k]
  ------------------
 3414|     67|    *parsed_pattern++ = META_DOLLAR;
  ------------------
  |  |  234|     67|#define META_DOLLAR           0x80160000u  /* $ metacharacter */
  ------------------
 3415|     67|    break;
 3416|       |
 3417|    369|    case CHAR_DOT:
  ------------------
  |  | 1014|    369|#define CHAR_DOT                    '\056'
  ------------------
  |  Branch (3417:5): [True: 369, False: 12.3k]
  ------------------
 3418|    369|    *parsed_pattern++ = META_DOT;
  ------------------
  |  |  235|    369|#define META_DOT              0x80170000u  /* . metacharacter */
  ------------------
 3419|    369|    okquantifier = TRUE;
  ------------------
  |  |   88|    369|#define TRUE    1
  ------------------
 3420|    369|    break;
 3421|       |
 3422|       |
 3423|       |    /* ---- Single-character quantifiers ---- */
 3424|       |
 3425|    181|    case CHAR_ASTERISK:
  ------------------
  |  | 1010|    181|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (3425:5): [True: 181, False: 12.5k]
  ------------------
 3426|    181|    meta_quantifier = META_ASTERISK;
  ------------------
  |  |  279|    181|#define META_ASTERISK         0x80340000u  /* *  */
  ------------------
 3427|    181|    goto CHECK_QUANTIFIER;
 3428|       |
 3429|    682|    case CHAR_PLUS:
  ------------------
  |  | 1011|    682|#define CHAR_PLUS                   '\053'
  ------------------
  |  Branch (3429:5): [True: 682, False: 12.0k]
  ------------------
 3430|    682|    meta_quantifier = META_PLUS;
  ------------------
  |  |  282|    682|#define META_PLUS             0x80370000u  /* +  */
  ------------------
 3431|    682|    goto CHECK_QUANTIFIER;
 3432|       |
 3433|    463|    case CHAR_QUESTION_MARK:
  ------------------
  |  | 1031|    463|#define CHAR_QUESTION_MARK          '\077'
  ------------------
  |  Branch (3433:5): [True: 463, False: 12.2k]
  ------------------
 3434|    463|    meta_quantifier = META_QUERY;
  ------------------
  |  |  285|    463|#define META_QUERY            0x803a0000u  /* ?  */
  ------------------
 3435|    463|    goto CHECK_QUANTIFIER;
 3436|       |
 3437|       |
 3438|       |    /* ---- Potential {n,m} quantifier ---- */
 3439|       |
 3440|     47|    case CHAR_LEFT_CURLY_BRACKET:
  ------------------
  |  | 1091|     47|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (3440:5): [True: 47, False: 12.6k]
  ------------------
 3441|     47|    if (!read_repeat_counts(&ptr, ptrend, &min_repeat, &max_repeat,
  ------------------
  |  Branch (3441:9): [True: 40, False: 7]
  ------------------
 3442|     47|        &errorcode))
 3443|     40|      {
 3444|     40|      if (errorcode != 0) goto FAILED;     /* Error in quantifier. */
  ------------------
  |  Branch (3444:11): [True: 0, False: 40]
  ------------------
 3445|     40|      PARSED_LITERAL(c, parsed_pattern);   /* Not a quantifier */
  ------------------
  |  | 2768|     40|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|     40|#define TRUE    1
  |  |  ------------------
  ------------------
 3446|     40|      break;                               /* No more quantifier processing */
 3447|     40|      }
 3448|      7|    meta_quantifier = META_MINMAX;
  ------------------
  |  |  288|      7|#define META_MINMAX           0x803d0000u  /* {n,m}  repeat */
  ------------------
 3449|       |    /* Fall through */
 3450|       |
 3451|       |
 3452|       |    /* ---- Quantifier post-processing ---- */
 3453|       |
 3454|       |    /* Check that a quantifier is allowed after the previous item. This
 3455|       |    guarantees that there is a previous item. */
 3456|       |
 3457|  1.33k|    CHECK_QUANTIFIER:
 3458|  1.33k|    if (!prev_okquantifier)
  ------------------
  |  Branch (3458:9): [True: 0, False: 1.33k]
  ------------------
 3459|      0|      {
 3460|      0|      errorcode = ERR9;
 3461|      0|      goto FAILED_BACK;
 3462|      0|      }
 3463|       |
 3464|       |    /* Most (*VERB)s are not allowed to be quantified, but an ungreedy
 3465|       |    quantifier can be useful for (*ACCEPT) - meaning "succeed on backtrack", a
 3466|       |    sort of negated (*COMMIT). We therefore allow (*ACCEPT) to be quantified by
 3467|       |    wrapping it in non-capturing brackets, but we have to allow for a preceding
 3468|       |    (*MARK) for when (*ACCEPT) has an argument. */
 3469|       |
 3470|  1.33k|    if (*prev_parsed_item == META_ACCEPT)
  ------------------
  |  |  266|  1.33k|#define META_ACCEPT           0x802a0000u  /* (*ACCEPT) */
  ------------------
  |  Branch (3470:9): [True: 0, False: 1.33k]
  ------------------
 3471|      0|      {
 3472|      0|      uint32_t *p;
 3473|      0|      for (p = parsed_pattern - 1; p >= verbstartptr; p--) p[1] = p[0];
  ------------------
  |  Branch (3473:36): [True: 0, False: 0]
  ------------------
 3474|      0|      *verbstartptr = META_NOCAPTURE;
  ------------------
  |  |  238|      0|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
 3475|      0|      parsed_pattern[1] = META_KET;
  ------------------
  |  |  237|      0|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
 3476|      0|      parsed_pattern += 2;
 3477|      0|      }
 3478|       |
 3479|       |    /* Now we can put the quantifier into the parsed pattern vector. At this
 3480|       |    stage, we have only the basic quantifier. The check for a following + or ?
 3481|       |    modifier happens at the top of the loop, after any intervening comments
 3482|       |    have been removed. */
 3483|       |
 3484|  1.33k|    *parsed_pattern++ = meta_quantifier;
 3485|  1.33k|    if (c == CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|  1.33k|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (3485:9): [True: 7, False: 1.32k]
  ------------------
 3486|      7|      {
 3487|      7|      *parsed_pattern++ = min_repeat;
 3488|      7|      *parsed_pattern++ = max_repeat;
 3489|      7|      }
 3490|  1.33k|    break;
 3491|       |
 3492|       |
 3493|       |    /* ---- Character class ---- */
 3494|       |
 3495|    159|    case CHAR_LEFT_SQUARE_BRACKET:
  ------------------
  |  | 1059|    159|#define CHAR_LEFT_SQUARE_BRACKET    '\133'
  ------------------
  |  Branch (3495:5): [True: 159, False: 12.5k]
  ------------------
 3496|    159|    okquantifier = TRUE;
  ------------------
  |  |   88|    159|#define TRUE    1
  ------------------
 3497|       |
 3498|       |    /* In another (POSIX) regex library, the ugly syntax [[:<:]] and [[:>:]] is
 3499|       |    used for "start of word" and "end of word". As these are otherwise illegal
 3500|       |    sequences, we don't break anything by recognizing them. They are replaced
 3501|       |    by \b(?=\w) and \b(?<=\w) respectively. Sequences like [a[:<:]] are
 3502|       |    erroneous and are handled by the normal code below. */
 3503|       |
 3504|    159|    if (ptrend - ptr >= 6 &&
  ------------------
  |  Branch (3504:9): [True: 154, False: 5]
  ------------------
 3505|    154|         (PRIV(strncmp_c8)(ptr, STRING_WEIRD_STARTWORD, 6) == 0 ||
  ------------------
  |  |  195|    154|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|    154|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    154|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    154|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    154|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                       (PRIV(strncmp_c8)(ptr, STRING_WEIRD_STARTWORD, 6) == 0 ||
  ------------------
  |  | 1247|    154|#define STRING_WEIRD_STARTWORD       STR_LEFT_SQUARE_BRACKET STR_COLON STR_LESS_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET
  |  |  ------------------
  |  |  |  | 1166|    154|#define STR_LEFT_SQUARE_BRACKET     "\133"
  |  |  ------------------
  |  |               #define STRING_WEIRD_STARTWORD       STR_LEFT_SQUARE_BRACKET STR_COLON STR_LESS_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET
  |  |  ------------------
  |  |  |  | 1168|    154|#define STR_RIGHT_SQUARE_BRACKET    "\135"
  |  |  ------------------
  ------------------
  |  Branch (3505:11): [True: 0, False: 154]
  ------------------
 3506|    154|          PRIV(strncmp_c8)(ptr, STRING_WEIRD_ENDWORD, 6) == 0))
  ------------------
  |  |  195|    154|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|    154|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    154|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    154|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    154|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        PRIV(strncmp_c8)(ptr, STRING_WEIRD_ENDWORD, 6) == 0))
  ------------------
  |  | 1248|    154|#define STRING_WEIRD_ENDWORD         STR_LEFT_SQUARE_BRACKET STR_COLON STR_GREATER_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET
  |  |  ------------------
  |  |  |  | 1166|    154|#define STR_LEFT_SQUARE_BRACKET     "\133"
  |  |  ------------------
  |  |               #define STRING_WEIRD_ENDWORD         STR_LEFT_SQUARE_BRACKET STR_COLON STR_GREATER_THAN_SIGN STR_COLON STR_RIGHT_SQUARE_BRACKET STR_RIGHT_SQUARE_BRACKET
  |  |  ------------------
  |  |  |  | 1168|    154|#define STR_RIGHT_SQUARE_BRACKET    "\135"
  |  |  ------------------
  ------------------
  |  Branch (3506:11): [True: 0, False: 154]
  ------------------
 3507|      0|      {
 3508|      0|      *parsed_pattern++ = META_ESCAPE + ESC_b;
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3509|       |
 3510|      0|      if (ptr[2] == CHAR_LESS_THAN_SIGN)
  ------------------
  |  | 1028|      0|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
  |  Branch (3510:11): [True: 0, False: 0]
  ------------------
 3511|      0|        {
 3512|      0|        *parsed_pattern++ = META_LOOKAHEAD;
  ------------------
  |  |  251|      0|#define META_LOOKAHEAD        0x80230000u  /* (?= */
  ------------------
 3513|      0|        }
 3514|      0|      else
 3515|      0|        {
 3516|      0|        *parsed_pattern++ = META_LOOKBEHIND;
  ------------------
  |  |  253|      0|#define META_LOOKBEHIND       0x80250000u  /* (?<= */
  ------------------
 3517|      0|        *has_lookbehind = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3518|       |
 3519|       |        /* The offset is used only for the "non-fixed length" error; this won't
 3520|       |        occur here, so just store zero. */
 3521|       |
 3522|      0|        PUTOFFSET((PCRE2_SIZE)0, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 3523|      0|        }
 3524|       |
 3525|      0|      if ((options & PCRE2_UCP) == 0)
  ------------------
  |  |  136|      0|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (3525:11): [True: 0, False: 0]
  ------------------
 3526|      0|        *parsed_pattern++ = META_ESCAPE + ESC_w;
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3527|      0|      else
 3528|      0|        {
 3529|      0|        *parsed_pattern++ = META_ESCAPE + ESC_p;
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3530|      0|        *parsed_pattern++ = PT_WORD << 16;
  ------------------
  |  | 1302|      0|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
 3531|      0|        }
 3532|      0|      *parsed_pattern++ = META_KET;
  ------------------
  |  |  237|      0|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
 3533|      0|      ptr += 6;
 3534|      0|      break;
 3535|      0|      }
 3536|       |
 3537|       |    /* PCRE supports POSIX class stuff inside a class. Perl gives an error if
 3538|       |    they are encountered at the top level, so we'll do that too. */
 3539|       |
 3540|    159|    if (ptr < ptrend && (*ptr == CHAR_COLON || *ptr == CHAR_DOT ||
  ------------------
  |  | 1026|    318|#define CHAR_COLON                  '\072'
  ------------------
                  if (ptr < ptrend && (*ptr == CHAR_COLON || *ptr == CHAR_DOT ||
  ------------------
  |  | 1014|    316|#define CHAR_DOT                    '\056'
  ------------------
  |  Branch (3540:9): [True: 159, False: 0]
  |  Branch (3540:26): [True: 2, False: 157]
  |  Branch (3540:48): [True: 2, False: 155]
  ------------------
 3541|    155|         *ptr == CHAR_EQUALS_SIGN) &&
  ------------------
  |  | 1029|    155|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (3541:10): [True: 4, False: 151]
  ------------------
 3542|      8|        check_posix_syntax(ptr, ptrend, &tempptr))
  ------------------
  |  Branch (3542:9): [True: 0, False: 8]
  ------------------
 3543|      0|      {
 3544|      0|      errorcode = (*ptr-- == CHAR_COLON)? ERR12 : ERR13;
  ------------------
  |  | 1026|      0|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (3544:19): [True: 0, False: 0]
  ------------------
 3545|      0|      goto FAILED;
 3546|      0|      }
 3547|       |
 3548|       |    /* Process a regular character class. If the first character is '^', set
 3549|       |    the negation flag. If the first few characters (either before or after ^)
 3550|       |    are \Q\E or \E or space or tab in extended-more mode, we skip them too.
 3551|       |    This makes for compatibility with Perl. */
 3552|       |
 3553|    159|    negate_class = FALSE;
  ------------------
  |  |   87|    159|#define FALSE   0
  ------------------
 3554|    233|    while (ptr < ptrend)
  ------------------
  |  Branch (3554:12): [True: 233, False: 0]
  ------------------
 3555|    233|      {
 3556|    233|      GETCHARINCTEST(c, ptr);
  ------------------
  |  |  323|    233|  c = *eptr++; \
  |  |  324|    233|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 137, False: 96]
  |  |  |  Branch (324:14): [True: 0, False: 137]
  |  |  ------------------
  ------------------
 3557|    233|      if (c == CHAR_BACKSLASH)
  ------------------
  |  | 1060|    233|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3557:11): [True: 6, False: 227]
  ------------------
 3558|      6|        {
 3559|      6|        if (ptr < ptrend && *ptr == CHAR_E) ptr++;
  ------------------
  |  | 1037|      6|#define CHAR_E                      '\105'
  ------------------
  |  Branch (3559:13): [True: 6, False: 0]
  |  Branch (3559:29): [True: 0, False: 6]
  ------------------
 3560|      6|        else if (ptrend - ptr >= 3 &&
  ------------------
  |  Branch (3560:18): [True: 5, False: 1]
  ------------------
 3561|      5|             PRIV(strncmp_c8)(ptr, STR_Q STR_BACKSLASH STR_E, 3) == 0)
  ------------------
  |  |  195|      5|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|      5|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      5|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      5|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      5|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                           PRIV(strncmp_c8)(ptr, STR_Q STR_BACKSLASH STR_E, 3) == 0)
  ------------------
  |  | 1156|      5|#define STR_Q                       "\121"
  ------------------
                           PRIV(strncmp_c8)(ptr, STR_Q STR_BACKSLASH STR_E, 3) == 0)
  ------------------
  |  | 1144|      5|#define STR_E                       "\105"
  ------------------
  |  Branch (3561:14): [True: 0, False: 5]
  ------------------
 3562|      0|          ptr += 3;
 3563|      6|        else
 3564|      6|          break;
 3565|      6|        }
 3566|    227|      else if ((options & PCRE2_EXTENDED_MORE) != 0 &&
  ------------------
  |  |  143|    227|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
  |  Branch (3566:16): [True: 0, False: 227]
  ------------------
 3567|      0|               (c == CHAR_SPACE || c == CHAR_HT))  /* Note: just these two */
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                             (c == CHAR_SPACE || c == CHAR_HT))  /* Note: just these two */
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (3567:17): [True: 0, False: 0]
  |  Branch (3567:36): [True: 0, False: 0]
  ------------------
 3568|      0|        continue;
 3569|    227|      else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT)
  ------------------
  |  | 1062|    153|#define CHAR_CIRCUMFLEX_ACCENT      '\136'
  ------------------
  |  Branch (3569:16): [True: 153, False: 74]
  |  Branch (3569:33): [True: 74, False: 79]
  ------------------
 3570|     74|        negate_class = TRUE;
  ------------------
  |  |   88|     74|#define TRUE    1
  ------------------
 3571|    153|      else break;
 3572|    233|      }
 3573|       |
 3574|       |    /* Now the real contents of the class; c has the first "real" character.
 3575|       |    Empty classes are permitted only if the option is set. */
 3576|       |
 3577|    159|    if (c == CHAR_RIGHT_SQUARE_BRACKET &&
  ------------------
  |  | 1061|    318|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
  |  Branch (3577:9): [True: 3, False: 156]
  ------------------
 3578|      3|        (cb->external_options & PCRE2_ALLOW_EMPTY_CLASS) != 0)
  ------------------
  |  |  119|      3|#define PCRE2_ALLOW_EMPTY_CLASS   0x00000001u  /* C       */
  ------------------
  |  Branch (3578:9): [True: 0, False: 3]
  ------------------
 3579|      0|      {
 3580|      0|      *parsed_pattern++ = negate_class? META_CLASS_EMPTY_NOT : META_CLASS_EMPTY;
  ------------------
  |  |  224|      0|#define META_CLASS_EMPTY_NOT  0x800c0000u  /* negative empty class */
  ------------------
                    *parsed_pattern++ = negate_class? META_CLASS_EMPTY_NOT : META_CLASS_EMPTY;
  ------------------
  |  |  223|      0|#define META_CLASS_EMPTY      0x800b0000u  /* empty class */
  ------------------
  |  Branch (3580:27): [True: 0, False: 0]
  ------------------
 3581|      0|      break;  /* End of class processing */
 3582|      0|      }
 3583|       |
 3584|       |    /* Process a non-empty class. */
 3585|       |
 3586|    159|    *parsed_pattern++ = negate_class? META_CLASS_NOT : META_CLASS;
  ------------------
  |  |  226|     74|#define META_CLASS_NOT        0x800e0000u  /* start non-empty negative class */
  ------------------
                  *parsed_pattern++ = negate_class? META_CLASS_NOT : META_CLASS;
  ------------------
  |  |  222|    244|#define META_CLASS            0x800a0000u  /* start non-empty class */
  ------------------
  |  Branch (3586:25): [True: 74, False: 85]
  ------------------
 3587|    159|    class_range_state = RANGE_NO;
 3588|       |
 3589|       |    /* In an EBCDIC environment, Perl treats alphabetic ranges specially
 3590|       |    because there are holes in the encoding, and simply using the range A-Z
 3591|       |    (for example) would include the characters in the holes. This applies only
 3592|       |    to ranges where both values are literal; [\xC1-\xE9] is different to [A-Z]
 3593|       |    in this respect. In order to accommodate this, we keep track of whether
 3594|       |    character values are literal or not, and a state variable for handling
 3595|       |    ranges. */
 3596|       |
 3597|       |    /* Loop for the contents of the class */
 3598|       |
 3599|    159|    for (;;)
 3600|  1.67k|      {
 3601|  1.67k|      BOOL char_is_literal = TRUE;
  ------------------
  |  |   88|  1.67k|#define TRUE    1
  ------------------
 3602|       |
 3603|       |      /* Inside \Q...\E everything is literal except \E */
 3604|       |
 3605|  1.67k|      if (inescq)
  ------------------
  |  Branch (3605:11): [True: 0, False: 1.67k]
  ------------------
 3606|      0|        {
 3607|      0|        if (c == CHAR_BACKSLASH && ptr < ptrend && *ptr == CHAR_E)
  ------------------
  |  | 1060|      0|#define CHAR_BACKSLASH              '\134'
  ------------------
                      if (c == CHAR_BACKSLASH && ptr < ptrend && *ptr == CHAR_E)
  ------------------
  |  | 1037|      0|#define CHAR_E                      '\105'
  ------------------
  |  Branch (3607:13): [True: 0, False: 0]
  |  Branch (3607:36): [True: 0, False: 0]
  |  Branch (3607:52): [True: 0, False: 0]
  ------------------
 3608|      0|          {
 3609|      0|          inescq = FALSE;                   /* Reset literal state */
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 3610|      0|          ptr++;                            /* Skip the 'E' */
 3611|      0|          goto CLASS_CONTINUE;
 3612|      0|          }
 3613|      0|        goto CLASS_LITERAL;
 3614|      0|        }
 3615|       |
 3616|       |      /* Skip over space and tab (only) in extended-more mode. */
 3617|       |
 3618|  1.67k|      if ((options & PCRE2_EXTENDED_MORE) != 0 &&
  ------------------
  |  |  143|  1.67k|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
  |  Branch (3618:11): [True: 0, False: 1.67k]
  ------------------
 3619|      0|          (c == CHAR_SPACE || c == CHAR_HT))
  ------------------
  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  ------------------
                        (c == CHAR_SPACE || c == CHAR_HT))
  ------------------
  |  |  987|      0|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (3619:12): [True: 0, False: 0]
  |  Branch (3619:31): [True: 0, False: 0]
  ------------------
 3620|      0|        goto CLASS_CONTINUE;
 3621|       |
 3622|       |      /* Handle POSIX class names. Perl allows a negation extension of the
 3623|       |      form [:^name:]. A square bracket that doesn't match the syntax is
 3624|       |      treated as a literal. We also recognize the POSIX constructions
 3625|       |      [.ch.] and [=ch=] ("collating elements") and fault them, as Perl
 3626|       |      5.6 and 5.8 do. */
 3627|       |
 3628|  1.67k|      if (c == CHAR_LEFT_SQUARE_BRACKET &&
  ------------------
  |  | 1059|  3.35k|#define CHAR_LEFT_SQUARE_BRACKET    '\133'
  ------------------
  |  Branch (3628:11): [True: 33, False: 1.64k]
  ------------------
 3629|     33|          ptrend - ptr >= 3 &&
  ------------------
  |  Branch (3629:11): [True: 33, False: 0]
  ------------------
 3630|     33|          (*ptr == CHAR_COLON || *ptr == CHAR_DOT ||
  ------------------
  |  | 1026|     66|#define CHAR_COLON                  '\072'
  ------------------
                        (*ptr == CHAR_COLON || *ptr == CHAR_DOT ||
  ------------------
  |  | 1014|     66|#define CHAR_DOT                    '\056'
  ------------------
  |  Branch (3630:12): [True: 0, False: 33]
  |  Branch (3630:34): [True: 0, False: 33]
  ------------------
 3631|     33|           *ptr == CHAR_EQUALS_SIGN) &&
  ------------------
  |  | 1029|     33|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (3631:12): [True: 0, False: 33]
  ------------------
 3632|      0|          check_posix_syntax(ptr, ptrend, &tempptr))
  ------------------
  |  Branch (3632:11): [True: 0, False: 0]
  ------------------
 3633|      0|        {
 3634|      0|        BOOL posix_negate = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 3635|      0|        int posix_class;
 3636|       |
 3637|       |        /* Perl treats a hyphen before a POSIX class as a literal, not the
 3638|       |        start of a range. However, it gives a warning in its warning mode. PCRE
 3639|       |        does not have a warning mode, so we give an error, because this is
 3640|       |        likely an error on the user's part. */
 3641|       |
 3642|      0|        if (class_range_state == RANGE_STARTED)
  ------------------
  |  Branch (3642:13): [True: 0, False: 0]
  ------------------
 3643|      0|          {
 3644|      0|          errorcode = ERR50;
 3645|      0|          goto FAILED;
 3646|      0|          }
 3647|       |
 3648|      0|        if (*ptr != CHAR_COLON)
  ------------------
  |  | 1026|      0|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (3648:13): [True: 0, False: 0]
  ------------------
 3649|      0|          {
 3650|      0|          errorcode = ERR13;
 3651|      0|          goto FAILED_BACK;
 3652|      0|          }
 3653|       |
 3654|      0|        if (*(++ptr) == CHAR_CIRCUMFLEX_ACCENT)
  ------------------
  |  | 1062|      0|#define CHAR_CIRCUMFLEX_ACCENT      '\136'
  ------------------
  |  Branch (3654:13): [True: 0, False: 0]
  ------------------
 3655|      0|          {
 3656|      0|          posix_negate = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3657|      0|          ptr++;
 3658|      0|          }
 3659|       |
 3660|      0|        posix_class = check_posix_name(ptr, (int)(tempptr - ptr));
 3661|      0|        if (posix_class < 0)
  ------------------
  |  Branch (3661:13): [True: 0, False: 0]
  ------------------
 3662|      0|          {
 3663|      0|          errorcode = ERR30;
 3664|      0|          goto FAILED;
 3665|      0|          }
 3666|      0|        ptr = tempptr + 2;
 3667|       |
 3668|       |        /* Perl treats a hyphen after a POSIX class as a literal, not the
 3669|       |        start of a range. However, it gives a warning in its warning mode
 3670|       |        unless the hyphen is the last character in the class. PCRE does not
 3671|       |        have a warning mode, so we give an error, because this is likely an
 3672|       |        error on the user's part. */
 3673|       |
 3674|      0|        if (ptr < ptrend - 1 && *ptr == CHAR_MINUS &&
  ------------------
  |  | 1013|      0|#define CHAR_MINUS                  '\055'
  ------------------
  |  Branch (3674:13): [True: 0, False: 0]
  |  Branch (3674:33): [True: 0, False: 0]
  ------------------
 3675|      0|            ptr[1] != CHAR_RIGHT_SQUARE_BRACKET)
  ------------------
  |  | 1061|      0|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
  |  Branch (3675:13): [True: 0, False: 0]
  ------------------
 3676|      0|          {
 3677|      0|          errorcode = ERR50;
 3678|      0|          goto FAILED;
 3679|      0|          }
 3680|       |
 3681|       |        /* Set "a hyphen is not the start of a range" for the -] case, and also
 3682|       |        in case the POSIX class is followed by \E or \Q\E (possibly repeated -
 3683|       |        fuzzers do that kind of thing) and *then* a hyphen. This causes that
 3684|       |        hyphen to be treated as a literal. I don't think it's worth setting up
 3685|       |        special apparatus to do otherwise. */
 3686|       |
 3687|      0|        class_range_state = RANGE_NO;
 3688|       |
 3689|       |        /* When PCRE2_UCP is set, unless PCRE2_EXTRA_ASCII_POSIX is set, some
 3690|       |        of the POSIX classes are converted to use Unicode properties \p or \P
 3691|       |        or, in one case, \h or \H. The substitutes table has two values per
 3692|       |        class, containing the type and value of a \p or \P item. The special
 3693|       |        cases are specified with a negative type: a non-zero value causes \h or
 3694|       |        \H to be used, and a zero value falls through to behave like a non-UCP
 3695|       |        POSIX class. There are now also some extra options that force ASCII for
 3696|       |        some classes. */
 3697|       |
 3698|      0|#ifdef SUPPORT_UNICODE
 3699|      0|        if ((options & PCRE2_UCP) != 0 &&
  ------------------
  |  |  136|      0|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (3699:13): [True: 0, False: 0]
  ------------------
 3700|      0|            (xoptions & PCRE2_EXTRA_ASCII_POSIX) == 0 &&
  ------------------
  |  |  160|      0|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  ------------------
  |  Branch (3700:13): [True: 0, False: 0]
  ------------------
 3701|      0|            !((xoptions & PCRE2_EXTRA_ASCII_DIGIT) != 0 &&
  ------------------
  |  |  161|      0|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  ------------------
  |  Branch (3701:15): [True: 0, False: 0]
  ------------------
 3702|      0|              (posix_class == PC_DIGIT || posix_class == PC_XDIGIT)))
  ------------------
  |  |  709|      0|#define PC_DIGIT   7
  ------------------
                            (posix_class == PC_DIGIT || posix_class == PC_XDIGIT)))
  ------------------
  |  |  713|      0|#define PC_XDIGIT 13
  ------------------
  |  Branch (3702:16): [True: 0, False: 0]
  |  Branch (3702:43): [True: 0, False: 0]
  ------------------
 3703|      0|          {
 3704|      0|          int ptype = posix_substitutes[2*posix_class];
 3705|      0|          int pvalue = posix_substitutes[2*posix_class + 1];
 3706|       |
 3707|      0|          if (ptype >= 0)
  ------------------
  |  Branch (3707:15): [True: 0, False: 0]
  ------------------
 3708|      0|            {
 3709|      0|            *parsed_pattern++ = META_ESCAPE + (posix_negate? ESC_P : ESC_p);
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
  |  Branch (3709:48): [True: 0, False: 0]
  ------------------
 3710|      0|            *parsed_pattern++ = (ptype << 16) | pvalue;
 3711|      0|            goto CLASS_CONTINUE;
 3712|      0|            }
 3713|       |
 3714|      0|          if (pvalue != 0)
  ------------------
  |  Branch (3714:15): [True: 0, False: 0]
  ------------------
 3715|      0|            {
 3716|      0|            *parsed_pattern++ = META_ESCAPE + (posix_negate? ESC_H : ESC_h);
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
  |  Branch (3716:48): [True: 0, False: 0]
  ------------------
 3717|      0|            goto CLASS_CONTINUE;
 3718|      0|            }
 3719|       |
 3720|       |          /* Fall through */
 3721|      0|          }
 3722|      0|#endif  /* SUPPORT_UNICODE */
 3723|       |
 3724|       |        /* Non-UCP POSIX class */
 3725|       |
 3726|      0|        *parsed_pattern++ = posix_negate? META_POSIX_NEG : META_POSIX;
  ------------------
  |  |  241|      0|#define META_POSIX_NEG        0x801d0000u  /* negative POSIX class item */
  ------------------
                      *parsed_pattern++ = posix_negate? META_POSIX_NEG : META_POSIX;
  ------------------
  |  |  240|      0|#define META_POSIX            0x801c0000u  /* POSIX class item */
  ------------------
  |  Branch (3726:29): [True: 0, False: 0]
  ------------------
 3727|      0|        *parsed_pattern++ = posix_class;
 3728|      0|        }
 3729|       |
 3730|       |      /* Handle potential start of range */
 3731|       |
 3732|  1.67k|      else if (c == CHAR_MINUS && class_range_state >= RANGE_OK_ESCAPED)
  ------------------
  |  | 1013|  3.35k|#define CHAR_MINUS                  '\055'
  ------------------
  |  Branch (3732:16): [True: 5, False: 1.67k]
  |  Branch (3732:35): [True: 3, False: 2]
  ------------------
 3733|      3|        {
 3734|      3|        *parsed_pattern++ = (class_range_state == RANGE_OK_LITERAL)?
  ------------------
  |  Branch (3734:29): [True: 2, False: 1]
  ------------------
 3735|      2|          META_RANGE_LITERAL : META_RANGE_ESCAPED;
  ------------------
  |  |  243|      2|#define META_RANGE_LITERAL    0x801f0000u  /* range defined literally */
  ------------------
                        META_RANGE_LITERAL : META_RANGE_ESCAPED;
  ------------------
  |  |  242|      4|#define META_RANGE_ESCAPED    0x801e0000u  /* range with at least one escape */
  ------------------
 3736|      3|        class_range_state = RANGE_STARTED;
 3737|      3|        }
 3738|       |
 3739|       |      /* Handle a literal character */
 3740|       |
 3741|  1.67k|      else if (c != CHAR_BACKSLASH)
  ------------------
  |  | 1060|  1.67k|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3741:16): [True: 1.62k, False: 50]
  ------------------
 3742|  1.62k|        {
 3743|  1.64k|        CLASS_LITERAL:
 3744|  1.64k|        if (class_range_state == RANGE_STARTED)
  ------------------
  |  Branch (3744:13): [True: 3, False: 1.63k]
  ------------------
 3745|      3|          {
 3746|      3|          if (c == parsed_pattern[-2])       /* Optimize one-char range */
  ------------------
  |  Branch (3746:15): [True: 0, False: 3]
  ------------------
 3747|      0|            parsed_pattern--;
 3748|      3|          else if (parsed_pattern[-2] > c)   /* Check range is in order */
  ------------------
  |  Branch (3748:20): [True: 0, False: 3]
  ------------------
 3749|      0|            {
 3750|      0|            errorcode = ERR8;
 3751|      0|            goto FAILED_BACK;
 3752|      0|            }
 3753|      3|          else
 3754|      3|            {
 3755|      3|            if (!char_is_literal && parsed_pattern[-1] == META_RANGE_LITERAL)
  ------------------
  |  |  243|      0|#define META_RANGE_LITERAL    0x801f0000u  /* range defined literally */
  ------------------
  |  Branch (3755:17): [True: 0, False: 3]
  |  Branch (3755:37): [True: 0, False: 0]
  ------------------
 3756|      0|              parsed_pattern[-1] = META_RANGE_ESCAPED;
  ------------------
  |  |  242|      0|#define META_RANGE_ESCAPED    0x801e0000u  /* range with at least one escape */
  ------------------
 3757|      3|            PARSED_LITERAL(c, parsed_pattern);
  ------------------
  |  | 2768|      3|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|      3|#define TRUE    1
  |  |  ------------------
  ------------------
 3758|      3|            }
 3759|      3|          class_range_state = RANGE_NO;
 3760|      3|          }
 3761|  1.63k|        else  /* Potential start of range */
 3762|  1.63k|          {
 3763|  1.63k|          class_range_state = char_is_literal?
  ------------------
  |  Branch (3763:31): [True: 1.62k, False: 16]
  ------------------
 3764|  1.62k|            RANGE_OK_LITERAL : RANGE_OK_ESCAPED;
 3765|  1.63k|          PARSED_LITERAL(c, parsed_pattern);
  ------------------
  |  | 2768|  1.63k|#define PARSED_LITERAL(c, p) *p++ = c; okquantifier = TRUE;
  |  |  ------------------
  |  |  |  |   88|  1.63k|#define TRUE    1
  |  |  ------------------
  ------------------
 3766|  1.63k|          }
 3767|  1.64k|        }
 3768|       |
 3769|       |      /* Handle escapes in a class */
 3770|       |
 3771|     50|      else
 3772|     50|        {
 3773|     50|        tempptr = ptr;
 3774|     50|        escape = PRIV(check_escape)(&ptr, ptrend, &c, &errorcode, options,
  ------------------
  |  |  195|     50|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2021|     50|#define _pcre2_check_escape          PCRE2_SUFFIX(_pcre2_check_escape_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     50|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     50|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     50|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3775|     50|          xoptions, TRUE, cb);
  ------------------
  |  |   88|     50|#define TRUE    1
  ------------------
 3776|       |
 3777|     50|        if (errorcode != 0)
  ------------------
  |  Branch (3777:13): [True: 1, False: 49]
  ------------------
 3778|      1|          {
 3779|      1|          if ((xoptions & PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL) == 0)
  ------------------
  |  |  150|      1|#define PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL    0x00000002u  /* C */
  ------------------
  |  Branch (3779:15): [True: 1, False: 0]
  ------------------
 3780|      1|            goto FAILED;
 3781|      0|          ptr = tempptr;
 3782|      0|          if (ptr >= ptrend) c = CHAR_BACKSLASH; else
  ------------------
  |  | 1060|      0|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (3782:15): [True: 0, False: 0]
  ------------------
 3783|      0|            {
 3784|      0|            GETCHARINCTEST(c, ptr);   /* Get character value, increment pointer */
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3785|      0|            }
 3786|      0|          escape = 0;                 /* Treat as literal character */
 3787|      0|          }
 3788|       |
 3789|     49|        switch(escape)
  ------------------
  |  Branch (3789:16): [True: 19, False: 30]
  ------------------
 3790|     49|          {
 3791|     15|          case 0:  /* Escaped character code point is in c */
  ------------------
  |  Branch (3791:11): [True: 15, False: 34]
  ------------------
 3792|     15|          char_is_literal = FALSE;
  ------------------
  |  |   87|     15|#define FALSE   0
  ------------------
 3793|     15|          goto CLASS_LITERAL;      /* (a few lines above) */
 3794|       |
 3795|      1|          case ESC_b:
  ------------------
  |  Branch (3795:11): [True: 1, False: 48]
  ------------------
 3796|      1|          c = CHAR_BS;    /* \b is backspace in a class */
  ------------------
  |  |  994|      1|#define CHAR_BS                     '\010'
  ------------------
 3797|      1|          char_is_literal = FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
 3798|      1|          goto CLASS_LITERAL;
 3799|       |
 3800|      0|          case ESC_Q:
  ------------------
  |  Branch (3800:11): [True: 0, False: 49]
  ------------------
 3801|      0|          inescq = TRUE;  /* Enter literal mode */
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3802|      0|          goto CLASS_CONTINUE;
 3803|       |
 3804|      0|          case ESC_E:     /* Ignore orphan \E */
  ------------------
  |  Branch (3804:11): [True: 0, False: 49]
  ------------------
 3805|      0|          goto CLASS_CONTINUE;
 3806|       |
 3807|      1|          case ESC_B:     /* Always an error in a class */
  ------------------
  |  Branch (3807:11): [True: 1, False: 48]
  ------------------
 3808|      2|          case ESC_R:
  ------------------
  |  Branch (3808:11): [True: 1, False: 48]
  ------------------
 3809|      3|          case ESC_X:
  ------------------
  |  Branch (3809:11): [True: 1, False: 48]
  ------------------
 3810|      3|          errorcode = ERR7;
 3811|      3|          ptr--;
 3812|      3|          goto FAILED;
 3813|     49|          }
 3814|       |
 3815|       |        /* The second part of a range can be a single-character escape
 3816|       |        sequence (detected above), but not any of the other escapes. Perl
 3817|       |        treats a hyphen as a literal in such circumstances. However, in Perl's
 3818|       |        warning mode, a warning is given, so PCRE now faults it, as it is
 3819|       |        almost certainly a mistake on the user's part. */
 3820|       |
 3821|     30|        if (class_range_state == RANGE_STARTED)
  ------------------
  |  Branch (3821:13): [True: 0, False: 30]
  ------------------
 3822|      0|          {
 3823|      0|          errorcode = ERR50;
 3824|      0|          goto FAILED;  /* Not CLASS_ESCAPE_FAILED; always an error */
 3825|      0|          }
 3826|       |
 3827|       |        /* Of the remaining escapes, only those that define characters are
 3828|       |        allowed in a class. None may start a range. */
 3829|       |
 3830|     30|        class_range_state = RANGE_NO;
 3831|     30|        switch(escape)
 3832|     30|          {
 3833|      0|          case ESC_N:
  ------------------
  |  Branch (3833:11): [True: 0, False: 30]
  ------------------
 3834|      0|          errorcode = ERR71;
 3835|      0|          goto FAILED;
 3836|       |
 3837|     10|          case ESC_H:
  ------------------
  |  Branch (3837:11): [True: 10, False: 20]
  ------------------
 3838|     10|          case ESC_h:
  ------------------
  |  Branch (3838:11): [True: 0, False: 30]
  ------------------
 3839|     10|          case ESC_V:
  ------------------
  |  Branch (3839:11): [True: 0, False: 30]
  ------------------
 3840|     10|          case ESC_v:
  ------------------
  |  Branch (3840:11): [True: 0, False: 30]
  ------------------
 3841|     10|          *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|     10|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3842|     10|          break;
 3843|       |
 3844|       |          /* These escapes may be converted to Unicode property tests when
 3845|       |          PCRE2_UCP is set. */
 3846|       |
 3847|      9|          case ESC_d:
  ------------------
  |  Branch (3847:11): [True: 9, False: 21]
  ------------------
 3848|     10|          case ESC_D:
  ------------------
  |  Branch (3848:11): [True: 1, False: 29]
  ------------------
 3849|     10|          case ESC_s:
  ------------------
  |  Branch (3849:11): [True: 0, False: 30]
  ------------------
 3850|     10|          case ESC_S:
  ------------------
  |  Branch (3850:11): [True: 0, False: 30]
  ------------------
 3851|     14|          case ESC_w:
  ------------------
  |  Branch (3851:11): [True: 4, False: 26]
  ------------------
 3852|     14|          case ESC_W:
  ------------------
  |  Branch (3852:11): [True: 0, False: 30]
  ------------------
 3853|     14|          parsed_pattern = handle_escdsw(escape, parsed_pattern, options,
 3854|     14|            xoptions);
 3855|     14|          break;
 3856|       |
 3857|       |          /* Explicit Unicode property matching */
 3858|       |
 3859|      0|          case ESC_P:
  ------------------
  |  Branch (3859:11): [True: 0, False: 30]
  ------------------
 3860|      5|          case ESC_p:
  ------------------
  |  Branch (3860:11): [True: 5, False: 25]
  ------------------
 3861|      5|#ifdef SUPPORT_UNICODE
 3862|      5|            {
 3863|      5|            BOOL negated;
 3864|      5|            uint16_t ptype = 0, pdata = 0;
 3865|      5|            if (!get_ucp(&ptr, &negated, &ptype, &pdata, &errorcode, cb))
  ------------------
  |  Branch (3865:17): [True: 2, False: 3]
  ------------------
 3866|      2|              goto FAILED;
 3867|      3|            if (negated) escape = (escape == ESC_P)? ESC_p : ESC_P;
  ------------------
  |  Branch (3867:17): [True: 0, False: 3]
  |  Branch (3867:35): [True: 0, False: 0]
  ------------------
 3868|      3|            *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|      3|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 3869|      3|            *parsed_pattern++ = (ptype << 16) | pdata;
 3870|      3|            }
 3871|       |#else
 3872|       |          errorcode = ERR45;
 3873|       |          goto FAILED;
 3874|       |#endif
 3875|      0|          break;  /* End \P and \p */
 3876|       |
 3877|      1|          default:    /* All others are not allowed in a class */
  ------------------
  |  Branch (3877:11): [True: 1, False: 29]
  ------------------
 3878|      1|          errorcode = ERR7;
 3879|      1|          ptr--;
 3880|      1|          goto FAILED;
 3881|     30|          }
 3882|       |
 3883|       |        /* Perl gives a warning unless a following hyphen is the last character
 3884|       |        in the class. PCRE throws an error. */
 3885|       |
 3886|     27|        if (ptr < ptrend - 1 && *ptr == CHAR_MINUS &&
  ------------------
  |  | 1013|     52|#define CHAR_MINUS                  '\055'
  ------------------
  |  Branch (3886:13): [True: 25, False: 2]
  |  Branch (3886:33): [True: 0, False: 25]
  ------------------
 3887|      0|            ptr[1] != CHAR_RIGHT_SQUARE_BRACKET)
  ------------------
  |  | 1061|      0|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
  |  Branch (3887:13): [True: 0, False: 0]
  ------------------
 3888|      0|          {
 3889|      0|          errorcode = ERR50;
 3890|      0|          goto FAILED;
 3891|      0|          }
 3892|     27|        }
 3893|       |
 3894|       |      /* Proceed to next thing in the class. */
 3895|       |
 3896|  1.67k|      CLASS_CONTINUE:
 3897|  1.67k|      if (ptr >= ptrend)
  ------------------
  |  Branch (3897:11): [True: 6, False: 1.66k]
  ------------------
 3898|      6|        {
 3899|      6|        errorcode = ERR6;  /* Missing terminating ']' */
 3900|      6|        goto FAILED;
 3901|      6|        }
 3902|  1.66k|      GETCHARINCTEST(c, ptr);
  ------------------
  |  |  323|  1.66k|  c = *eptr++; \
  |  |  324|  1.66k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     10|    { \
  |  |  |  |  307|     10|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 9, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  308|     10|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     10|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  310|      1|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      1|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      1|      { \
  |  |  |  |  316|      1|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      1|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      1|      eptr += 3; \
  |  |  |  |  319|      1|      } \
  |  |  |  |  320|      1|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     10|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 1.17k, False: 489]
  |  |  |  Branch (324:14): [True: 10, False: 1.16k]
  |  |  ------------------
  ------------------
 3903|  1.66k|      if (c == CHAR_RIGHT_SQUARE_BRACKET && !inescq) break;
  ------------------
  |  | 1061|  3.32k|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
  |  Branch (3903:11): [True: 146, False: 1.51k]
  |  Branch (3903:45): [True: 146, False: 0]
  ------------------
 3904|  1.66k|      }     /* End of class-processing loop */
 3905|       |
 3906|       |    /* -] at the end of a class is a literal '-' */
 3907|       |
 3908|    146|    if (class_range_state == RANGE_STARTED)
  ------------------
  |  Branch (3908:9): [True: 0, False: 146]
  ------------------
 3909|      0|      {
 3910|      0|      parsed_pattern[-1] = CHAR_MINUS;
  ------------------
  |  | 1013|      0|#define CHAR_MINUS                  '\055'
  ------------------
 3911|      0|      class_range_state = RANGE_NO;
 3912|      0|      }
 3913|       |
 3914|    146|    *parsed_pattern++ = META_CLASS_END;
  ------------------
  |  |  225|    146|#define META_CLASS_END        0x800d0000u  /* end of non-empty class */
  ------------------
 3915|    146|    break;  /* End of character class */
 3916|       |
 3917|       |
 3918|       |    /* ---- Opening parenthesis ---- */
 3919|       |
 3920|     35|    case CHAR_LEFT_PARENTHESIS:
  ------------------
  |  | 1008|     35|#define CHAR_LEFT_PARENTHESIS       '\050'
  ------------------
  |  Branch (3920:5): [True: 35, False: 12.6k]
  ------------------
 3921|     35|    if (ptr >= ptrend) goto UNCLOSED_PARENTHESIS;
  ------------------
  |  Branch (3921:9): [True: 1, False: 34]
  ------------------
 3922|       |
 3923|       |    /* If ( is not followed by ? it is either a capture or a special verb or an
 3924|       |    alpha assertion or a positive non-atomic lookahead. */
 3925|       |
 3926|     34|    if (*ptr != CHAR_QUESTION_MARK)
  ------------------
  |  | 1031|     34|#define CHAR_QUESTION_MARK          '\077'
  ------------------
  |  Branch (3926:9): [True: 29, False: 5]
  ------------------
 3927|     29|      {
 3928|     29|      const char *vn;
 3929|       |
 3930|       |      /* Handle capturing brackets (or non-capturing if auto-capture is turned
 3931|       |      off). */
 3932|       |
 3933|     29|      if (*ptr != CHAR_ASTERISK)
  ------------------
  |  | 1010|     29|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (3933:11): [True: 26, False: 3]
  ------------------
 3934|     26|        {
 3935|     26|        nest_depth++;
 3936|     26|        if ((options & PCRE2_NO_AUTO_CAPTURE) == 0)
  ------------------
  |  |  132|     26|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  ------------------
  |  Branch (3936:13): [True: 26, False: 0]
  ------------------
 3937|     26|          {
 3938|     26|          if (cb->bracount >= MAX_GROUP_NUMBER)
  ------------------
  |  |  147|     26|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (3938:15): [True: 0, False: 26]
  ------------------
 3939|      0|            {
 3940|      0|            errorcode = ERR97;
 3941|      0|            goto FAILED;
 3942|      0|            }
 3943|     26|          cb->bracount++;
 3944|     26|          *parsed_pattern++ = META_CAPTURE | cb->bracount;
  ------------------
  |  |  220|     26|#define META_CAPTURE          0x80080000u  /* Capturing parenthesis */
  ------------------
 3945|     26|          }
 3946|      0|        else *parsed_pattern++ = META_NOCAPTURE;
  ------------------
  |  |  238|      0|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
 3947|     26|        }
 3948|       |
 3949|       |      /* Do nothing for (* followed by end of pattern or ) so it gives a "bad
 3950|       |      quantifier" error rather than "(*MARK) must have an argument". */
 3951|       |
 3952|      3|      else if (ptrend - ptr <= 1 || (c = ptr[1]) == CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      3|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (3952:16): [True: 0, False: 3]
  |  Branch (3952:37): [True: 0, False: 3]
  ------------------
 3953|      0|        break;
 3954|       |
 3955|       |      /* Handle "alpha assertions" such as (*pla:...). Most of these are
 3956|       |      synonyms for the historical symbolic assertions, but the script run and
 3957|       |      non-atomic lookaround ones are new. They are distinguished by starting
 3958|       |      with a lower case letter. Checking both ends of the alphabet makes this
 3959|       |      work in all character codes. */
 3960|       |
 3961|      3|      else if (CHMAX_255(c) && (cb->ctypes[c] & ctype_lcletter) != 0)
  ------------------
  |  |  217|      6|#define CHMAX_255(c) ((c) <= 255u)
  |  |  ------------------
  |  |  |  Branch (217:22): [True: 3, False: 0]
  |  |  ------------------
  ------------------
                    else if (CHMAX_255(c) && (cb->ctypes[c] & ctype_lcletter) != 0)
  ------------------
  |  |  599|      3|#define ctype_lcletter 0x04
  ------------------
  |  Branch (3961:32): [True: 2, False: 1]
  ------------------
 3962|      2|        {
 3963|      2|        uint32_t meta;
 3964|       |
 3965|      2|        vn = alasnames;
 3966|      2|        if (!read_name(&ptr, ptrend, utf, 0, &offset, &name, &namelen,
  ------------------
  |  Branch (3966:13): [True: 0, False: 2]
  ------------------
 3967|      2|          &errorcode, cb)) goto FAILED;
 3968|      2|        if (ptr >= ptrend || *ptr != CHAR_COLON)
  ------------------
  |  | 1026|      1|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (3968:13): [True: 1, False: 1]
  |  Branch (3968:30): [True: 1, False: 0]
  ------------------
 3969|      2|          {
 3970|      2|          errorcode = ERR95;  /* Malformed */
 3971|      2|          goto FAILED;
 3972|      2|          }
 3973|       |
 3974|       |        /* Scan the table of alpha assertion names */
 3975|       |
 3976|      0|        for (i = 0; i < alascount; i++)
  ------------------
  |  Branch (3976:21): [True: 0, False: 0]
  ------------------
 3977|      0|          {
 3978|      0|          if (namelen == alasmeta[i].len &&
  ------------------
  |  Branch (3978:15): [True: 0, False: 0]
  ------------------
 3979|      0|              PRIV(strncmp_c8)(name, vn, namelen) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|      0|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3979:15): [True: 0, False: 0]
  ------------------
 3980|      0|            break;
 3981|      0|          vn += alasmeta[i].len + 1;
 3982|      0|          }
 3983|       |
 3984|      0|        if (i >= alascount)
  ------------------
  |  Branch (3984:13): [True: 0, False: 0]
  ------------------
 3985|      0|          {
 3986|      0|          errorcode = ERR95;  /* Alpha assertion not recognized */
 3987|      0|          goto FAILED;
 3988|      0|          }
 3989|       |
 3990|       |        /* Check for expecting an assertion condition. If so, only atomic
 3991|       |        lookaround assertions are valid. */
 3992|       |
 3993|      0|        meta = alasmeta[i].meta;
 3994|      0|        if (prev_expect_cond_assert > 0 &&
  ------------------
  |  Branch (3994:13): [True: 0, False: 0]
  ------------------
 3995|      0|            (meta < META_LOOKAHEAD || meta > META_LOOKBEHINDNOT))
  ------------------
  |  |  251|      0|#define META_LOOKAHEAD        0x80230000u  /* (?= */
  ------------------
                          (meta < META_LOOKAHEAD || meta > META_LOOKBEHINDNOT))
  ------------------
  |  |  254|      0|#define META_LOOKBEHINDNOT    0x80260000u  /* (?<! */
  ------------------
  |  Branch (3995:14): [True: 0, False: 0]
  |  Branch (3995:39): [True: 0, False: 0]
  ------------------
 3996|      0|          {
 3997|      0|          errorcode = (meta == META_LOOKAHEAD_NA || meta == META_LOOKBEHIND_NA)?
  ------------------
  |  |  258|      0|#define META_LOOKAHEAD_NA     0x80270000u  /* (*napla: */
  ------------------
                        errorcode = (meta == META_LOOKAHEAD_NA || meta == META_LOOKBEHIND_NA)?
  ------------------
  |  |  259|      0|#define META_LOOKBEHIND_NA    0x80280000u  /* (*naplb: */
  ------------------
  |  Branch (3997:24): [True: 0, False: 0]
  |  Branch (3997:53): [True: 0, False: 0]
  ------------------
 3998|      0|            ERR98 : ERR28;  /* (Atomic) assertion expected */
 3999|      0|          goto FAILED;
 4000|      0|          }
 4001|       |
 4002|       |        /* The lookaround alphabetic synonyms can mostly be handled by jumping
 4003|       |        to the code that handles the traditional symbolic forms. */
 4004|       |
 4005|      0|        switch(meta)
 4006|      0|          {
 4007|      0|          default:
  ------------------
  |  Branch (4007:11): [True: 0, False: 0]
  ------------------
 4008|      0|          errorcode = ERR89;  /* Unknown code; should never occur because */
 4009|      0|          goto FAILED;        /* the meta values come from a table above. */
 4010|       |
 4011|      0|          case META_ATOMIC:
  ------------------
  |  |  214|      0|#define META_ATOMIC           0x80020000u  /* atomic group */
  ------------------
  |  Branch (4011:11): [True: 0, False: 0]
  ------------------
 4012|      0|          goto ATOMIC_GROUP;
 4013|       |
 4014|      0|          case META_LOOKAHEAD:
  ------------------
  |  |  251|      0|#define META_LOOKAHEAD        0x80230000u  /* (?= */
  ------------------
  |  Branch (4014:11): [True: 0, False: 0]
  ------------------
 4015|      0|          goto POSITIVE_LOOK_AHEAD;
 4016|       |
 4017|      0|          case META_LOOKAHEAD_NA:
  ------------------
  |  |  258|      0|#define META_LOOKAHEAD_NA     0x80270000u  /* (*napla: */
  ------------------
  |  Branch (4017:11): [True: 0, False: 0]
  ------------------
 4018|      0|          goto POSITIVE_NONATOMIC_LOOK_AHEAD;
 4019|       |
 4020|      0|          case META_LOOKAHEADNOT:
  ------------------
  |  |  252|      0|#define META_LOOKAHEADNOT     0x80240000u  /* (?! */
  ------------------
  |  Branch (4020:11): [True: 0, False: 0]
  ------------------
 4021|      0|          goto NEGATIVE_LOOK_AHEAD;
 4022|       |
 4023|      0|          case META_LOOKBEHIND:
  ------------------
  |  |  253|      0|#define META_LOOKBEHIND       0x80250000u  /* (?<= */
  ------------------
  |  Branch (4023:11): [True: 0, False: 0]
  ------------------
 4024|      0|          case META_LOOKBEHINDNOT:
  ------------------
  |  |  254|      0|#define META_LOOKBEHINDNOT    0x80260000u  /* (?<! */
  ------------------
  |  Branch (4024:11): [True: 0, False: 0]
  ------------------
 4025|      0|          case META_LOOKBEHIND_NA:
  ------------------
  |  |  259|      0|#define META_LOOKBEHIND_NA    0x80280000u  /* (*naplb: */
  ------------------
  |  Branch (4025:11): [True: 0, False: 0]
  ------------------
 4026|      0|          *parsed_pattern++ = meta;
 4027|      0|          ptr--;
 4028|      0|          goto POST_LOOKBEHIND;
 4029|       |
 4030|       |          /* The script run facilities are handled here. Unicode support is
 4031|       |          required (give an error if not, as this is a security issue). Always
 4032|       |          record a META_SCRIPT_RUN item. Then, for the atomic version, insert
 4033|       |          META_ATOMIC and remember that we need two META_KETs at the end. */
 4034|       |
 4035|      0|          case META_SCRIPT_RUN:
  ------------------
  |  |  246|      0|#define META_SCRIPT_RUN       0x80220000u  /* (*script_run:...) */
  ------------------
  |  Branch (4035:11): [True: 0, False: 0]
  ------------------
 4036|      0|          case META_ATOMIC_SCRIPT_RUN:
  ------------------
  |  |  300|      0|#define META_ATOMIC_SCRIPT_RUN 0x8fff0000u
  ------------------
  |  Branch (4036:11): [True: 0, False: 0]
  ------------------
 4037|      0|#ifdef SUPPORT_UNICODE
 4038|      0|          *parsed_pattern++ = META_SCRIPT_RUN;
  ------------------
  |  |  246|      0|#define META_SCRIPT_RUN       0x80220000u  /* (*script_run:...) */
  ------------------
 4039|      0|          nest_depth++;
 4040|      0|          ptr++;
 4041|      0|          if (meta == META_ATOMIC_SCRIPT_RUN)
  ------------------
  |  |  300|      0|#define META_ATOMIC_SCRIPT_RUN 0x8fff0000u
  ------------------
  |  Branch (4041:15): [True: 0, False: 0]
  ------------------
 4042|      0|            {
 4043|      0|            *parsed_pattern++ = META_ATOMIC;
  ------------------
  |  |  214|      0|#define META_ATOMIC           0x80020000u  /* atomic group */
  ------------------
 4044|      0|            if (top_nest == NULL) top_nest = (nest_save *)(cb->start_workspace);
  ------------------
  |  Branch (4044:17): [True: 0, False: 0]
  ------------------
 4045|      0|            else if (++top_nest >= end_nests)
  ------------------
  |  Branch (4045:22): [True: 0, False: 0]
  ------------------
 4046|      0|              {
 4047|      0|              errorcode = ERR84;
 4048|      0|              goto FAILED;
 4049|      0|              }
 4050|      0|            top_nest->nest_depth = nest_depth;
 4051|      0|            top_nest->flags = NSF_ATOMICSR;
  ------------------
  |  | 2736|      0|#define NSF_ATOMICSR       0x0004u
  ------------------
 4052|      0|            top_nest->options = options & PARSE_TRACKED_OPTIONS;
  ------------------
  |  | 2743|      0|#define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  124|      0|#define PCRE2_DOTALL              0x00000020u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  125|      0|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  |  |  ------------------
  |  | 2744|      0|  PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  143|      0|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  129|      0|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  132|      0|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  |  |  ------------------
  |  | 2745|      0|  PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  137|      0|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  |  |  ------------------
  ------------------
 4053|      0|            top_nest->xoptions = xoptions & PARSE_TRACKED_EXTRA_OPTIONS;
  ------------------
  |  | 2747|      0|#define PARSE_TRACKED_EXTRA_OPTIONS (PCRE2_EXTRA_CASELESS_RESTRICT| \
  |  |  ------------------
  |  |  |  |  156|      0|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  |  |  ------------------
  |  | 2748|      0|  PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  157|      0|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  158|      0|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  159|      0|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  |  |  ------------------
  |  | 2749|      0|  PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  161|      0|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  160|      0|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  |  |  ------------------
  ------------------
 4054|      0|            }
 4055|      0|          break;
 4056|       |#else  /* SUPPORT_UNICODE */
 4057|       |          errorcode = ERR96;
 4058|       |          goto FAILED;
 4059|       |#endif
 4060|      0|          }
 4061|      0|        }
 4062|       |
 4063|       |
 4064|       |      /* ---- Handle (*VERB) and (*VERB:NAME) ---- */
 4065|       |
 4066|      1|      else
 4067|      1|        {
 4068|      1|        vn = verbnames;
 4069|      1|        if (!read_name(&ptr, ptrend, utf, 0, &offset, &name, &namelen,
  ------------------
  |  Branch (4069:13): [True: 0, False: 1]
  ------------------
 4070|      1|          &errorcode, cb)) goto FAILED;
 4071|      1|        if (ptr >= ptrend || (*ptr != CHAR_COLON &&
  ------------------
  |  | 1026|      2|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (4071:13): [True: 0, False: 1]
  |  Branch (4071:31): [True: 1, False: 0]
  ------------------
 4072|      1|                              *ptr != CHAR_RIGHT_PARENTHESIS))
  ------------------
  |  | 1009|      1|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4072:31): [True: 1, False: 0]
  ------------------
 4073|      1|          {
 4074|      1|          errorcode = ERR60;  /* Malformed */
 4075|      1|          goto FAILED;
 4076|      1|          }
 4077|       |
 4078|       |        /* Scan the table of verb names */
 4079|       |
 4080|      0|        for (i = 0; i < verbcount; i++)
  ------------------
  |  Branch (4080:21): [True: 0, False: 0]
  ------------------
 4081|      0|          {
 4082|      0|          if (namelen == verbs[i].len &&
  ------------------
  |  Branch (4082:15): [True: 0, False: 0]
  ------------------
 4083|      0|              PRIV(strncmp_c8)(name, vn, namelen) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|      0|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4083:15): [True: 0, False: 0]
  ------------------
 4084|      0|            break;
 4085|      0|          vn += verbs[i].len + 1;
 4086|      0|          }
 4087|       |
 4088|      0|        if (i >= verbcount)
  ------------------
  |  Branch (4088:13): [True: 0, False: 0]
  ------------------
 4089|      0|          {
 4090|      0|          errorcode = ERR60;  /* Verb not recognized */
 4091|      0|          goto FAILED;
 4092|      0|          }
 4093|       |
 4094|       |        /* An empty argument is treated as no argument. */
 4095|       |
 4096|      0|        if (*ptr == CHAR_COLON && ptr + 1 < ptrend &&
  ------------------
  |  | 1026|      0|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (4096:13): [True: 0, False: 0]
  |  Branch (4096:35): [True: 0, False: 0]
  ------------------
 4097|      0|             ptr[1] == CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4097:14): [True: 0, False: 0]
  ------------------
 4098|      0|          ptr++;    /* Advance to the closing parens */
 4099|       |
 4100|       |        /* Check for mandatory non-empty argument; this is (*MARK) */
 4101|       |
 4102|      0|        if (verbs[i].has_arg > 0 && *ptr != CHAR_COLON)
  ------------------
  |  | 1026|      0|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (4102:13): [True: 0, False: 0]
  |  Branch (4102:37): [True: 0, False: 0]
  ------------------
 4103|      0|          {
 4104|      0|          errorcode = ERR66;
 4105|      0|          goto FAILED;
 4106|      0|          }
 4107|       |
 4108|       |        /* Remember where this verb, possibly with a preceding (*MARK), starts,
 4109|       |        for handling quantified (*ACCEPT). */
 4110|       |
 4111|      0|        verbstartptr = parsed_pattern;
 4112|      0|        okquantifier = (verbs[i].meta == META_ACCEPT);
  ------------------
  |  |  266|      0|#define META_ACCEPT           0x802a0000u  /* (*ACCEPT) */
  ------------------
 4113|       |
 4114|       |        /* It appears that Perl allows any characters whatsoever, other than a
 4115|       |        closing parenthesis, to appear in arguments ("names"), so we no longer
 4116|       |        insist on letters, digits, and underscores. Perl does not, however, do
 4117|       |        any interpretation within arguments, and has no means of including a
 4118|       |        closing parenthesis. PCRE supports escape processing but only when it
 4119|       |        is requested by an option. We set inverbname TRUE here, and let the
 4120|       |        main loop take care of this so that escape and \x processing is done by
 4121|       |        the main code above. */
 4122|       |
 4123|      0|        if (*ptr++ == CHAR_COLON)   /* Skip past : or ) */
  ------------------
  |  | 1026|      0|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (4123:13): [True: 0, False: 0]
  ------------------
 4124|      0|          {
 4125|       |          /* Some optional arguments can be treated as a preceding (*MARK) */
 4126|       |
 4127|      0|          if (verbs[i].has_arg < 0)
  ------------------
  |  Branch (4127:15): [True: 0, False: 0]
  ------------------
 4128|      0|            {
 4129|      0|            add_after_mark = verbs[i].meta;
 4130|      0|            *parsed_pattern++ = META_MARK;
  ------------------
  |  |  265|      0|#define META_MARK             0x80290000u  /* (*MARK) */
  ------------------
 4131|      0|            }
 4132|       |
 4133|       |          /* The remaining verbs with arguments (except *MARK) need a different
 4134|       |          opcode. */
 4135|       |
 4136|      0|          else
 4137|      0|            {
 4138|      0|            *parsed_pattern++ = verbs[i].meta +
 4139|      0|              ((verbs[i].meta != META_MARK)? 0x00010000u:0);
  ------------------
  |  |  265|      0|#define META_MARK             0x80290000u  /* (*MARK) */
  ------------------
  |  Branch (4139:16): [True: 0, False: 0]
  ------------------
 4140|      0|            }
 4141|       |
 4142|       |          /* Set up for reading the name in the main loop. */
 4143|       |
 4144|      0|          verblengthptr = parsed_pattern++;
 4145|      0|          verbnamestart = ptr;
 4146|      0|          inverbname = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4147|      0|          }
 4148|      0|        else  /* No verb "name" argument */
 4149|      0|          {
 4150|      0|          *parsed_pattern++ = verbs[i].meta;
 4151|      0|          }
 4152|      0|        }     /* End of (*VERB) handling */
 4153|     26|      break;  /* Done with this parenthesis */
 4154|     29|      }       /* End of groups that don't start with (? */
 4155|       |
 4156|       |
 4157|       |    /* ---- Items starting (? ---- */
 4158|       |
 4159|       |    /* The type of item is determined by what follows (?. Handle (?| and option
 4160|       |    changes under "default" because both need a new block on the nest stack.
 4161|       |    Comments starting with (?# are handled above. Note that there is some
 4162|       |    ambiguity about the sequence (?- because if a digit follows it's a relative
 4163|       |    recursion or subroutine call whereas otherwise it's an option unsetting. */
 4164|       |
 4165|      5|    if (++ptr >= ptrend) goto UNCLOSED_PARENTHESIS;
  ------------------
  |  Branch (4165:9): [True: 0, False: 5]
  ------------------
 4166|       |
 4167|      5|    switch(*ptr)
 4168|      5|      {
 4169|      4|      default:
  ------------------
  |  Branch (4169:7): [True: 4, False: 1]
  ------------------
 4170|      4|      if (*ptr == CHAR_MINUS && ptrend - ptr > 1 && IS_DIGIT(ptr[1]))
  ------------------
  |  | 1013|      8|#define CHAR_MINUS                  '\055'
  ------------------
                    if (*ptr == CHAR_MINUS && ptrend - ptr > 1 && IS_DIGIT(ptr[1]))
  ------------------
  |  |  408|      1|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      2|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      1|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 1, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4170:11): [True: 1, False: 3]
  |  Branch (4170:33): [True: 1, False: 0]
  ------------------
 4171|      0|        goto RECURSION_BYNUMBER;  /* The + case is handled by CHAR_PLUS */
 4172|       |
 4173|       |      /* We now have either (?| or a (possibly empty) option setting,
 4174|       |      optionally followed by a non-capturing group. */
 4175|       |
 4176|      4|      nest_depth++;
 4177|      4|      if (top_nest == NULL) top_nest = (nest_save *)(cb->start_workspace);
  ------------------
  |  Branch (4177:11): [True: 4, False: 0]
  ------------------
 4178|      0|      else if (++top_nest >= end_nests)
  ------------------
  |  Branch (4178:16): [True: 0, False: 0]
  ------------------
 4179|      0|        {
 4180|      0|        errorcode = ERR84;
 4181|      0|        goto FAILED;
 4182|      0|        }
 4183|      4|      top_nest->nest_depth = nest_depth;
 4184|      4|      top_nest->flags = 0;
 4185|      4|      top_nest->options = options & PARSE_TRACKED_OPTIONS;
  ------------------
  |  | 2743|      4|#define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  122|      4|#define PCRE2_CASELESS            0x00000008u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  124|      4|#define PCRE2_DOTALL              0x00000020u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  125|      4|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  |  |  ------------------
  |  | 2744|      4|  PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  126|      4|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  143|      4|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  129|      4|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  132|      4|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  |  |  ------------------
  |  | 2745|      4|  PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  137|      4|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  |  |  ------------------
  ------------------
 4186|      4|      top_nest->xoptions = xoptions & PARSE_TRACKED_EXTRA_OPTIONS;
  ------------------
  |  | 2747|      4|#define PARSE_TRACKED_EXTRA_OPTIONS (PCRE2_EXTRA_CASELESS_RESTRICT| \
  |  |  ------------------
  |  |  |  |  156|      4|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  |  |  ------------------
  |  | 2748|      4|  PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  157|      4|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  158|      4|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  159|      4|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  |  |  ------------------
  |  | 2749|      4|  PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  161|      4|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  160|      4|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  |  |  ------------------
  ------------------
 4187|       |
 4188|       |      /* Start of non-capturing group that resets the capture count for each
 4189|       |      branch. */
 4190|       |
 4191|      4|      if (*ptr == CHAR_VERTICAL_LINE)
  ------------------
  |  | 1092|      4|#define CHAR_VERTICAL_LINE          '\174'
  ------------------
  |  Branch (4191:11): [True: 0, False: 4]
  ------------------
 4192|      0|        {
 4193|      0|        top_nest->reset_group = (uint16_t)cb->bracount;
 4194|      0|        top_nest->max_group = (uint16_t)cb->bracount;
 4195|      0|        top_nest->flags |= NSF_RESET;
  ------------------
  |  | 2734|      0|#define NSF_RESET          0x0001u
  ------------------
 4196|      0|        cb->external_flags |= PCRE2_DUPCAPUSED;
  ------------------
  |  |  546|      0|#define PCRE2_DUPCAPUSED    0x00200000  /* contains (?| */
  ------------------
 4197|      0|        *parsed_pattern++ = META_NOCAPTURE;
  ------------------
  |  |  238|      0|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
 4198|      0|        ptr++;
 4199|      0|        }
 4200|       |
 4201|       |      /* Scan for options imnrsxJU to be set or unset. */
 4202|       |
 4203|      4|      else
 4204|      4|        {
 4205|      4|        BOOL hyphenok = TRUE;
  ------------------
  |  |   88|      4|#define TRUE    1
  ------------------
 4206|      4|        uint32_t oldoptions = options;
 4207|      4|        uint32_t oldxoptions = xoptions;
 4208|       |
 4209|      4|        top_nest->reset_group = 0;
 4210|      4|        top_nest->max_group = 0;
 4211|      4|        set = unset = 0;
 4212|      4|        optset = &set;
 4213|      4|        xset = xunset = 0;
 4214|      4|        xoptset = &xset;
 4215|       |
 4216|       |        /* ^ at the start unsets irmnsx and disables the subsequent use of - */
 4217|       |
 4218|      4|        if (ptr < ptrend && *ptr == CHAR_CIRCUMFLEX_ACCENT)
  ------------------
  |  | 1062|      4|#define CHAR_CIRCUMFLEX_ACCENT      '\136'
  ------------------
  |  Branch (4218:13): [True: 4, False: 0]
  |  Branch (4218:29): [True: 0, False: 4]
  ------------------
 4219|      0|          {
 4220|      0|          options &= ~(PCRE2_CASELESS|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE|
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
                        options &= ~(PCRE2_CASELESS|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE|
  ------------------
  |  |  129|      0|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  ------------------
                        options &= ~(PCRE2_CASELESS|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE|
  ------------------
  |  |  132|      0|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  ------------------
 4221|      0|                       PCRE2_DOTALL|PCRE2_EXTENDED|PCRE2_EXTENDED_MORE);
  ------------------
  |  |  124|      0|#define PCRE2_DOTALL              0x00000020u  /* C       */
  ------------------
                                     PCRE2_DOTALL|PCRE2_EXTENDED|PCRE2_EXTENDED_MORE);
  ------------------
  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
                                     PCRE2_DOTALL|PCRE2_EXTENDED|PCRE2_EXTENDED_MORE);
  ------------------
  |  |  143|      0|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
 4222|      0|          xoptions &= ~(PCRE2_EXTRA_CASELESS_RESTRICT);
  ------------------
  |  |  156|      0|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
 4223|      0|          hyphenok = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 4224|      0|          ptr++;
 4225|      0|          }
 4226|       |
 4227|      5|        while (ptr < ptrend && *ptr != CHAR_RIGHT_PARENTHESIS &&
  ------------------
  |  | 1009|     10|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4227:16): [True: 5, False: 0]
  |  Branch (4227:32): [True: 5, False: 0]
  ------------------
 4228|      5|                               *ptr != CHAR_COLON)
  ------------------
  |  | 1026|      5|#define CHAR_COLON                  '\072'
  ------------------
  |  Branch (4228:32): [True: 3, False: 2]
  ------------------
 4229|      3|          {
 4230|      3|          switch (*ptr++)
 4231|      3|            {
 4232|      1|            case CHAR_MINUS:
  ------------------
  |  | 1013|      1|#define CHAR_MINUS                  '\055'
  ------------------
  |  Branch (4232:13): [True: 1, False: 2]
  ------------------
 4233|      1|            if (!hyphenok)
  ------------------
  |  Branch (4233:17): [True: 0, False: 1]
  ------------------
 4234|      0|              {
 4235|      0|              errorcode = ERR94;
 4236|      0|              ptr--;  /* Correct the offset */
 4237|      0|              goto FAILED;
 4238|      0|              }
 4239|      1|            optset = &unset;
 4240|      1|            xoptset = &xunset;
 4241|      1|            hyphenok = FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
 4242|      1|            break;
 4243|       |
 4244|       |            /* There are some two-character sequences that start with 'a'. */
 4245|       |
 4246|      0|            case CHAR_a:
  ------------------
  |  | 1065|      0|#define CHAR_a                      '\141'
  ------------------
  |  Branch (4246:13): [True: 0, False: 3]
  ------------------
 4247|      0|            if (ptr < ptrend)
  ------------------
  |  Branch (4247:17): [True: 0, False: 0]
  ------------------
 4248|      0|              {
 4249|      0|              if (*ptr == CHAR_D)
  ------------------
  |  | 1036|      0|#define CHAR_D                      '\104'
  ------------------
  |  Branch (4249:19): [True: 0, False: 0]
  ------------------
 4250|      0|                {
 4251|      0|                *xoptset |= PCRE2_EXTRA_ASCII_BSD;
  ------------------
  |  |  157|      0|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  ------------------
 4252|      0|                ptr++;
 4253|      0|                break;
 4254|      0|                }
 4255|      0|              if (*ptr == CHAR_P)
  ------------------
  |  | 1048|      0|#define CHAR_P                      '\120'
  ------------------
  |  Branch (4255:19): [True: 0, False: 0]
  ------------------
 4256|      0|                {
 4257|      0|                *xoptset |= (PCRE2_EXTRA_ASCII_POSIX|PCRE2_EXTRA_ASCII_DIGIT);
  ------------------
  |  |  160|      0|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  ------------------
                              *xoptset |= (PCRE2_EXTRA_ASCII_POSIX|PCRE2_EXTRA_ASCII_DIGIT);
  ------------------
  |  |  161|      0|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  ------------------
 4258|      0|                ptr++;
 4259|      0|                break;
 4260|      0|                }
 4261|      0|              if (*ptr == CHAR_S)
  ------------------
  |  | 1051|      0|#define CHAR_S                      '\123'
  ------------------
  |  Branch (4261:19): [True: 0, False: 0]
  ------------------
 4262|      0|                {
 4263|      0|                *xoptset |= PCRE2_EXTRA_ASCII_BSS;
  ------------------
  |  |  158|      0|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  ------------------
 4264|      0|                ptr++;
 4265|      0|                break;
 4266|      0|                }
 4267|      0|              if (*ptr == CHAR_T)
  ------------------
  |  | 1052|      0|#define CHAR_T                      '\124'
  ------------------
  |  Branch (4267:19): [True: 0, False: 0]
  ------------------
 4268|      0|                {
 4269|      0|                *xoptset |= PCRE2_EXTRA_ASCII_DIGIT;
  ------------------
  |  |  161|      0|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  ------------------
 4270|      0|                ptr++;
 4271|      0|                break;
 4272|      0|                }
 4273|      0|              if (*ptr == CHAR_W)
  ------------------
  |  | 1055|      0|#define CHAR_W                      '\127'
  ------------------
  |  Branch (4273:19): [True: 0, False: 0]
  ------------------
 4274|      0|                {
 4275|      0|                *xoptset |= PCRE2_EXTRA_ASCII_BSW;
  ------------------
  |  |  159|      0|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  ------------------
 4276|      0|                ptr++;
 4277|      0|                break;
 4278|      0|                }
 4279|      0|              }
 4280|      0|            *xoptset |= PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|
  ------------------
  |  |  157|      0|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  ------------------
                          *xoptset |= PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|
  ------------------
  |  |  158|      0|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  ------------------
 4281|      0|                        PCRE2_EXTRA_ASCII_BSW|
  ------------------
  |  |  159|      0|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  ------------------
 4282|      0|                        PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX;
  ------------------
  |  |  161|      0|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  ------------------
                                      PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX;
  ------------------
  |  |  160|      0|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  ------------------
 4283|      0|            break;
 4284|       |
 4285|      0|            case CHAR_J:  /* Record that it changed in the external options */
  ------------------
  |  | 1042|      0|#define CHAR_J                      '\112'
  ------------------
  |  Branch (4285:13): [True: 0, False: 3]
  ------------------
 4286|      0|            *optset |= PCRE2_DUPNAMES;
  ------------------
  |  |  125|      0|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  ------------------
 4287|      0|            cb->external_flags |= PCRE2_JCHANGED;
  ------------------
  |  |  535|      0|#define PCRE2_JCHANGED      0x00000400  /* j option used in pattern */
  ------------------
 4288|      0|            break;
 4289|       |
 4290|      0|            case CHAR_i: *optset |= PCRE2_CASELESS; break;
  ------------------
  |  | 1073|      0|#define CHAR_i                      '\151'
  ------------------
                          case CHAR_i: *optset |= PCRE2_CASELESS; break;
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (4290:13): [True: 0, False: 3]
  ------------------
 4291|      0|            case CHAR_m: *optset |= PCRE2_MULTILINE; break;
  ------------------
  |  | 1077|      0|#define CHAR_m                      '\155'
  ------------------
                          case CHAR_m: *optset |= PCRE2_MULTILINE; break;
  ------------------
  |  |  129|      0|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  ------------------
  |  Branch (4291:13): [True: 0, False: 3]
  ------------------
 4292|      0|            case CHAR_n: *optset |= PCRE2_NO_AUTO_CAPTURE; break;
  ------------------
  |  | 1078|      0|#define CHAR_n                      '\156'
  ------------------
                          case CHAR_n: *optset |= PCRE2_NO_AUTO_CAPTURE; break;
  ------------------
  |  |  132|      0|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  ------------------
  |  Branch (4292:13): [True: 0, False: 3]
  ------------------
 4293|      0|            case CHAR_r: *xoptset|= PCRE2_EXTRA_CASELESS_RESTRICT; break;
  ------------------
  |  | 1082|      0|#define CHAR_r                      '\162'
  ------------------
                          case CHAR_r: *xoptset|= PCRE2_EXTRA_CASELESS_RESTRICT; break;
  ------------------
  |  |  156|      0|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
  |  Branch (4293:13): [True: 0, False: 3]
  ------------------
 4294|      0|            case CHAR_s: *optset |= PCRE2_DOTALL; break;
  ------------------
  |  | 1083|      0|#define CHAR_s                      '\163'
  ------------------
                          case CHAR_s: *optset |= PCRE2_DOTALL; break;
  ------------------
  |  |  124|      0|#define PCRE2_DOTALL              0x00000020u  /* C       */
  ------------------
  |  Branch (4294:13): [True: 0, False: 3]
  ------------------
 4295|      0|            case CHAR_U: *optset |= PCRE2_UNGREEDY; break;
  ------------------
  |  | 1053|      0|#define CHAR_U                      '\125'
  ------------------
                          case CHAR_U: *optset |= PCRE2_UNGREEDY; break;
  ------------------
  |  |  137|      0|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  ------------------
  |  Branch (4295:13): [True: 0, False: 3]
  ------------------
 4296|       |
 4297|       |            /* If x appears twice it sets the extended extended option. */
 4298|       |
 4299|      0|            case CHAR_x:
  ------------------
  |  | 1088|      0|#define CHAR_x                      '\170'
  ------------------
  |  Branch (4299:13): [True: 0, False: 3]
  ------------------
 4300|      0|            *optset |= PCRE2_EXTENDED;
  ------------------
  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
 4301|      0|            if (ptr < ptrend && *ptr == CHAR_x)
  ------------------
  |  | 1088|      0|#define CHAR_x                      '\170'
  ------------------
  |  Branch (4301:17): [True: 0, False: 0]
  |  Branch (4301:33): [True: 0, False: 0]
  ------------------
 4302|      0|              {
 4303|      0|              *optset |= PCRE2_EXTENDED_MORE;
  ------------------
  |  |  143|      0|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
 4304|      0|              ptr++;
 4305|      0|              }
 4306|      0|            break;
 4307|       |
 4308|      2|            default:
  ------------------
  |  Branch (4308:13): [True: 2, False: 1]
  ------------------
 4309|      2|            errorcode = ERR11;
 4310|      2|            ptr--;    /* Correct the offset */
 4311|      2|            goto FAILED;
 4312|      3|            }
 4313|      3|          }
 4314|       |
 4315|       |        /* If we are setting extended without extended-more, ensure that any
 4316|       |        existing extended-more gets unset. Also, unsetting extended must also
 4317|       |        unset extended-more. */
 4318|       |
 4319|      2|        if ((set & (PCRE2_EXTENDED|PCRE2_EXTENDED_MORE)) == PCRE2_EXTENDED ||
  ------------------
  |  |  126|      2|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
                      if ((set & (PCRE2_EXTENDED|PCRE2_EXTENDED_MORE)) == PCRE2_EXTENDED ||
  ------------------
  |  |  143|      2|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
                      if ((set & (PCRE2_EXTENDED|PCRE2_EXTENDED_MORE)) == PCRE2_EXTENDED ||
  ------------------
  |  |  126|      4|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
  |  Branch (4319:13): [True: 0, False: 2]
  ------------------
 4320|      2|            (unset & PCRE2_EXTENDED) != 0)
  ------------------
  |  |  126|      2|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
  |  Branch (4320:13): [True: 0, False: 2]
  ------------------
 4321|      0|          unset |= PCRE2_EXTENDED_MORE;
  ------------------
  |  |  143|      0|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  ------------------
 4322|       |
 4323|      2|        options = (options | set) & (~unset);
 4324|      2|        xoptions = (xoptions | xset) & (~xunset);
 4325|       |
 4326|       |        /* If the options ended with ')' this is not the start of a nested
 4327|       |        group with option changes, so the options change at this level.
 4328|       |        In this case, if the previous level set up a nest block, discard the
 4329|       |        one we have just created. Otherwise adjust it for the previous level.
 4330|       |        If the options ended with ':' we are starting a non-capturing group,
 4331|       |        possibly with an options setting. */
 4332|       |
 4333|      2|        if (ptr >= ptrend) goto UNCLOSED_PARENTHESIS;
  ------------------
  |  Branch (4333:13): [True: 0, False: 2]
  ------------------
 4334|      2|        if (*ptr++ == CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      2|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4334:13): [True: 0, False: 2]
  ------------------
 4335|      0|          {
 4336|      0|          nest_depth--;  /* This is not a nested group after all. */
 4337|      0|          if (top_nest > (nest_save *)(cb->start_workspace) &&
  ------------------
  |  Branch (4337:15): [True: 0, False: 0]
  ------------------
 4338|      0|              (top_nest-1)->nest_depth == nest_depth) top_nest--;
  ------------------
  |  Branch (4338:15): [True: 0, False: 0]
  ------------------
 4339|      0|          else top_nest->nest_depth = nest_depth;
 4340|      0|          }
 4341|      2|        else *parsed_pattern++ = META_NOCAPTURE;
  ------------------
  |  |  238|      2|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
 4342|       |
 4343|       |        /* If nothing changed, no need to record. */
 4344|       |
 4345|      2|        if (options != oldoptions || xoptions != oldxoptions)
  ------------------
  |  Branch (4345:13): [True: 0, False: 2]
  |  Branch (4345:38): [True: 0, False: 2]
  ------------------
 4346|      0|          {
 4347|      0|          *parsed_pattern++ = META_OPTIONS;
  ------------------
  |  |  239|      0|#define META_OPTIONS          0x801b0000u  /* (?i) and friends */
  ------------------
 4348|      0|          *parsed_pattern++ = options;
 4349|      0|          *parsed_pattern++ = xoptions;
 4350|      0|          }
 4351|      2|        }     /* End options processing */
 4352|      2|      break;  /* End default case after (? */
 4353|       |
 4354|       |
 4355|       |      /* ---- Python syntax support ---- */
 4356|       |
 4357|      2|      case CHAR_P:
  ------------------
  |  | 1048|      0|#define CHAR_P                      '\120'
  ------------------
  |  Branch (4357:7): [True: 0, False: 5]
  ------------------
 4358|      0|      if (++ptr >= ptrend) goto UNCLOSED_PARENTHESIS;
  ------------------
  |  Branch (4358:11): [True: 0, False: 0]
  ------------------
 4359|       |
 4360|       |      /* (?P<name> is the same as (?<name>, which defines a named group. */
 4361|       |
 4362|      0|      if (*ptr == CHAR_LESS_THAN_SIGN)
  ------------------
  |  | 1028|      0|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
  |  Branch (4362:11): [True: 0, False: 0]
  ------------------
 4363|      0|        {
 4364|      0|        terminator = CHAR_GREATER_THAN_SIGN;
  ------------------
  |  | 1030|      0|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
 4365|      0|        goto DEFINE_NAME;
 4366|      0|        }
 4367|       |
 4368|       |      /* (?P>name) is the same as (?&name), which is a recursion or subroutine
 4369|       |      call. */
 4370|       |
 4371|      0|      if (*ptr == CHAR_GREATER_THAN_SIGN) goto RECURSE_BY_NAME;
  ------------------
  |  | 1030|      0|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
  |  Branch (4371:11): [True: 0, False: 0]
  ------------------
 4372|       |
 4373|       |      /* (?P=name) is the same as \k<name>, a back reference by name. Anything
 4374|       |      else after (?P is an error. */
 4375|       |
 4376|      0|      if (*ptr != CHAR_EQUALS_SIGN)
  ------------------
  |  | 1029|      0|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (4376:11): [True: 0, False: 0]
  ------------------
 4377|      0|        {
 4378|      0|        errorcode = ERR41;
 4379|      0|        goto FAILED;
 4380|      0|        }
 4381|      0|      if (!read_name(&ptr, ptrend, utf, CHAR_RIGHT_PARENTHESIS, &offset, &name,
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4381:11): [True: 0, False: 0]
  ------------------
 4382|      0|          &namelen, &errorcode, cb)) goto FAILED;
 4383|      0|      *parsed_pattern++ = META_BACKREF_BYNAME;
  ------------------
  |  |  216|      0|#define META_BACKREF_BYNAME   0x80040000u  /* \k'name' */
  ------------------
 4384|      0|      *parsed_pattern++ = namelen;
 4385|      0|      PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4386|      0|      okquantifier = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4387|      0|      break;   /* End of (?P processing */
 4388|       |
 4389|       |
 4390|       |      /* ---- Recursion/subroutine calls by number ---- */
 4391|       |
 4392|      0|      case CHAR_R:
  ------------------
  |  | 1050|      0|#define CHAR_R                      '\122'
  ------------------
  |  Branch (4392:7): [True: 0, False: 5]
  ------------------
 4393|      0|      i = 0;         /* (?R) == (?R0) */
 4394|      0|      ptr++;
 4395|      0|      if (ptr >= ptrend || *ptr != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4395:11): [True: 0, False: 0]
  |  Branch (4395:28): [True: 0, False: 0]
  ------------------
 4396|      0|        {
 4397|      0|        errorcode = ERR58;
 4398|      0|        goto FAILED;
 4399|      0|        }
 4400|      0|      goto SET_RECURSION;
 4401|       |
 4402|       |      /* An item starting (?- followed by a digit comes here via the "default"
 4403|       |      case because (?- followed by a non-digit is an options setting. */
 4404|       |
 4405|      0|      case CHAR_PLUS:
  ------------------
  |  | 1011|      0|#define CHAR_PLUS                   '\053'
  ------------------
  |  Branch (4405:7): [True: 0, False: 5]
  ------------------
 4406|      0|      if (ptrend - ptr < 2 || !IS_DIGIT(ptr[1]))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4406:11): [True: 0, False: 0]
  ------------------
 4407|      0|        {
 4408|      0|        errorcode = ERR29;   /* Missing number */
 4409|      0|        goto FAILED;
 4410|      0|        }
 4411|       |      /* Fall through */
 4412|       |
 4413|      0|      case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4:
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
                    case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4:
  ------------------
  |  | 1017|      0|#define CHAR_1                      '\061'
  ------------------
                    case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4:
  ------------------
  |  | 1018|      0|#define CHAR_2                      '\062'
  ------------------
                    case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4:
  ------------------
  |  | 1019|      0|#define CHAR_3                      '\063'
  ------------------
                    case CHAR_0: case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4:
  ------------------
  |  | 1020|      0|#define CHAR_4                      '\064'
  ------------------
  |  Branch (4413:7): [True: 0, False: 5]
  |  Branch (4413:20): [True: 0, False: 5]
  |  Branch (4413:33): [True: 0, False: 5]
  |  Branch (4413:46): [True: 0, False: 5]
  |  Branch (4413:59): [True: 0, False: 5]
  ------------------
 4414|      0|      case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1021|      0|#define CHAR_5                      '\065'
  ------------------
                    case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1022|      0|#define CHAR_6                      '\066'
  ------------------
                    case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1023|      0|#define CHAR_7                      '\067'
  ------------------
                    case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1024|      0|#define CHAR_8                      '\070'
  ------------------
                    case CHAR_5: case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9:
  ------------------
  |  | 1025|      0|#define CHAR_9                      '\071'
  ------------------
  |  Branch (4414:7): [True: 0, False: 5]
  |  Branch (4414:20): [True: 0, False: 5]
  |  Branch (4414:33): [True: 0, False: 5]
  |  Branch (4414:46): [True: 0, False: 5]
  |  Branch (4414:59): [True: 0, False: 5]
  ------------------
 4415|      0|      RECURSION_BYNUMBER:
 4416|      0|      if (!read_number(&ptr, ptrend,
  ------------------
  |  Branch (4416:11): [True: 0, False: 0]
  ------------------
 4417|      0|          (IS_DIGIT(*ptr))? -1:(int)(cb->bracount), /* + and - are relative */
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4418|      0|          MAX_GROUP_NUMBER, ERR61,
  ------------------
  |  |  147|      0|#define MAX_GROUP_NUMBER   65535u
  ------------------
 4419|      0|          &i, &errorcode)) goto FAILED;
 4420|      0|      if (i < 0)  /* NB (?0) is permitted */
  ------------------
  |  Branch (4420:11): [True: 0, False: 0]
  ------------------
 4421|      0|        {
 4422|      0|        errorcode = ERR15;   /* Unknown group */
 4423|      0|        goto FAILED_BACK;
 4424|      0|        }
 4425|      0|      if (ptr >= ptrend || *ptr != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4425:11): [True: 0, False: 0]
  |  Branch (4425:28): [True: 0, False: 0]
  ------------------
 4426|      0|        goto UNCLOSED_PARENTHESIS;
 4427|       |
 4428|      0|      SET_RECURSION:
 4429|      0|      *parsed_pattern++ = META_RECURSE | (uint32_t)i;
  ------------------
  |  |  244|      0|#define META_RECURSE          0x80200000u  /* Recursion */
  ------------------
 4430|      0|      offset = (PCRE2_SIZE)(ptr - cb->start_pattern);
 4431|      0|      ptr++;
 4432|      0|      PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4433|      0|      okquantifier = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4434|      0|      break;  /* End of recursive call by number handling */
 4435|       |
 4436|       |
 4437|       |      /* ---- Recursion/subroutine calls by name ---- */
 4438|       |
 4439|      0|      case CHAR_AMPERSAND:
  ------------------
  |  | 1006|      0|#define CHAR_AMPERSAND              '\046'
  ------------------
  |  Branch (4439:7): [True: 0, False: 5]
  ------------------
 4440|      0|      RECURSE_BY_NAME:
 4441|      0|      if (!read_name(&ptr, ptrend, utf, CHAR_RIGHT_PARENTHESIS, &offset, &name,
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4441:11): [True: 0, False: 0]
  ------------------
 4442|      0|          &namelen, &errorcode, cb)) goto FAILED;
 4443|      0|      *parsed_pattern++ = META_RECURSE_BYNAME;
  ------------------
  |  |  245|      0|#define META_RECURSE_BYNAME   0x80210000u  /* (?&name) */
  ------------------
 4444|      0|      *parsed_pattern++ = namelen;
 4445|      0|      PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4446|      0|      okquantifier = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4447|      0|      break;
 4448|       |
 4449|       |      /* ---- Callout with numerical or string argument ---- */
 4450|       |
 4451|      0|      case CHAR_C:
  ------------------
  |  | 1035|      0|#define CHAR_C                      '\103'
  ------------------
  |  Branch (4451:7): [True: 0, False: 5]
  ------------------
 4452|      0|      if (++ptr >= ptrend) goto UNCLOSED_PARENTHESIS;
  ------------------
  |  Branch (4452:11): [True: 0, False: 0]
  ------------------
 4453|       |
 4454|       |      /* If the previous item was a condition starting (?(? an assertion,
 4455|       |      optionally preceded by a callout, is expected. This is checked later on,
 4456|       |      during actual compilation. However we need to identify this kind of
 4457|       |      assertion in this pass because it must not be qualified. The value of
 4458|       |      expect_cond_assert is set to 2 after (?(? is processed. We decrement it
 4459|       |      for a callout - still leaving a positive value that identifies the
 4460|       |      assertion. Multiple callouts or any other items will make it zero or
 4461|       |      less, which doesn't matter because they will cause an error later. */
 4462|       |
 4463|      0|      expect_cond_assert = prev_expect_cond_assert - 1;
 4464|       |
 4465|       |      /* If previous_callout is not NULL, it means this follows a previous
 4466|       |      callout. If it was a manual callout, do nothing; this means its "length
 4467|       |      of next pattern item" field will remain zero. If it was an automatic
 4468|       |      callout, abolish it. */
 4469|       |
 4470|      0|      if (previous_callout != NULL && (options & PCRE2_AUTO_CALLOUT) != 0 &&
  ------------------
  |  |  121|      0|#define PCRE2_AUTO_CALLOUT        0x00000004u  /* C       */
  ------------------
  |  Branch (4470:11): [True: 0, False: 0]
  |  Branch (4470:39): [True: 0, False: 0]
  ------------------
 4471|      0|          previous_callout == parsed_pattern - 4 &&
  ------------------
  |  Branch (4471:11): [True: 0, False: 0]
  ------------------
 4472|      0|          parsed_pattern[-1] == 255)
  ------------------
  |  Branch (4472:11): [True: 0, False: 0]
  ------------------
 4473|      0|        parsed_pattern = previous_callout;
 4474|       |
 4475|       |      /* Save for updating next pattern item length, and skip one item before
 4476|       |      completing. */
 4477|       |
 4478|      0|      previous_callout = parsed_pattern;
 4479|      0|      after_manual_callout = 1;
 4480|       |
 4481|       |      /* Handle a string argument; specific delimiter is required. */
 4482|       |
 4483|      0|      if (*ptr != CHAR_RIGHT_PARENTHESIS && !IS_DIGIT(*ptr))
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
                    if (*ptr != CHAR_RIGHT_PARENTHESIS && !IS_DIGIT(*ptr))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4483:11): [True: 0, False: 0]
  ------------------
 4484|      0|        {
 4485|      0|        PCRE2_SIZE calloutlength;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 4486|      0|        PCRE2_SPTR startptr = ptr;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4487|       |
 4488|      0|        delimiter = 0;
 4489|      0|        for (i = 0; PRIV(callout_start_delims)[i] != 0; i++)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1946|      0|#define _pcre2_callout_start_delims    PCRE2_SUFFIX(_pcre2_callout_start_delims_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4489:21): [True: 0, False: 0]
  ------------------
 4490|      0|          {
 4491|      0|          if (*ptr == PRIV(callout_start_delims)[i])
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1946|      0|#define _pcre2_callout_start_delims    PCRE2_SUFFIX(_pcre2_callout_start_delims_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4491:15): [True: 0, False: 0]
  ------------------
 4492|      0|            {
 4493|      0|            delimiter = PRIV(callout_end_delims)[i];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1945|      0|#define _pcre2_callout_end_delims      PCRE2_SUFFIX(_pcre2_callout_end_delims_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4494|      0|            break;
 4495|      0|            }
 4496|      0|          }
 4497|      0|        if (delimiter == 0)
  ------------------
  |  Branch (4497:13): [True: 0, False: 0]
  ------------------
 4498|      0|          {
 4499|      0|          errorcode = ERR82;
 4500|      0|          goto FAILED;
 4501|      0|          }
 4502|       |
 4503|      0|        *parsed_pattern = META_CALLOUT_STRING;
  ------------------
  |  |  219|      0|#define META_CALLOUT_STRING   0x80070000u  /* (?C with string argument */
  ------------------
 4504|      0|        parsed_pattern += 3;   /* Skip pattern info */
 4505|       |
 4506|      0|        for (;;)
 4507|      0|          {
 4508|      0|          if (++ptr >= ptrend)
  ------------------
  |  Branch (4508:15): [True: 0, False: 0]
  ------------------
 4509|      0|            {
 4510|      0|            errorcode = ERR81;
 4511|      0|            ptr = startptr;   /* To give a more useful message */
 4512|      0|            goto FAILED;
 4513|      0|            }
 4514|      0|          if (*ptr == delimiter && (++ptr >= ptrend || *ptr != delimiter))
  ------------------
  |  Branch (4514:15): [True: 0, False: 0]
  |  Branch (4514:37): [True: 0, False: 0]
  |  Branch (4514:56): [True: 0, False: 0]
  ------------------
 4515|      0|            break;
 4516|      0|          }
 4517|       |
 4518|      0|        calloutlength = (PCRE2_SIZE)(ptr - startptr);
 4519|      0|        if (calloutlength > UINT32_MAX)
  ------------------
  |  Branch (4519:13): [True: 0, False: 0]
  ------------------
 4520|      0|          {
 4521|      0|          errorcode = ERR72;
 4522|      0|          goto FAILED;
 4523|      0|          }
 4524|      0|        *parsed_pattern++ = (uint32_t)calloutlength;
 4525|      0|        offset = (PCRE2_SIZE)(startptr - cb->start_pattern);
 4526|      0|        PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4527|      0|        }
 4528|       |
 4529|       |      /* Handle a callout with an optional numerical argument, which must be
 4530|       |      less than or equal to 255. A missing argument gives 0. */
 4531|       |
 4532|      0|      else
 4533|      0|        {
 4534|      0|        int n = 0;
 4535|      0|        *parsed_pattern = META_CALLOUT_NUMBER;     /* Numerical callout */
  ------------------
  |  |  218|      0|#define META_CALLOUT_NUMBER   0x80060000u  /* (?C with numerical argument */
  ------------------
 4536|      0|        parsed_pattern += 3;                       /* Skip pattern info */
 4537|      0|        while (ptr < ptrend && IS_DIGIT(*ptr))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4537:16): [True: 0, False: 0]
  ------------------
 4538|      0|          {
 4539|      0|          n = n * 10 + *ptr++ - CHAR_0;
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
 4540|      0|          if (n > 255)
  ------------------
  |  Branch (4540:15): [True: 0, False: 0]
  ------------------
 4541|      0|            {
 4542|      0|            errorcode = ERR38;
 4543|      0|            goto FAILED;
 4544|      0|            }
 4545|      0|          }
 4546|      0|        *parsed_pattern++ = n;
 4547|      0|        }
 4548|       |
 4549|       |      /* Both formats must have a closing parenthesis */
 4550|       |
 4551|      0|      if (ptr >= ptrend || *ptr != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4551:11): [True: 0, False: 0]
  |  Branch (4551:28): [True: 0, False: 0]
  ------------------
 4552|      0|        {
 4553|      0|        errorcode = ERR39;
 4554|      0|        goto FAILED;
 4555|      0|        }
 4556|      0|      ptr++;
 4557|       |
 4558|       |      /* Remember the offset to the next item in the pattern, and set a default
 4559|       |      length. This should get updated after the next item is read. */
 4560|       |
 4561|      0|      previous_callout[1] = (uint32_t)(ptr - cb->start_pattern);
 4562|      0|      previous_callout[2] = 0;
 4563|      0|      break;                  /* End callout */
 4564|       |
 4565|       |
 4566|       |      /* ---- Conditional group ---- */
 4567|       |
 4568|       |      /* A condition can be an assertion, a number (referring to a numbered
 4569|       |      group's having been set), a name (referring to a named group), or 'R',
 4570|       |      referring to overall recursion. R<digits> and R&name are also permitted
 4571|       |      for recursion state tests. Numbers may be preceded by + or - to specify a
 4572|       |      relative group number.
 4573|       |
 4574|       |      There are several syntaxes for testing a named group: (?(name)) is used
 4575|       |      by Python; Perl 5.10 onwards uses (?(<name>) or (?('name')).
 4576|       |
 4577|       |      There are two unfortunate ambiguities. 'R' can be the recursive thing or
 4578|       |      the name 'R' (and similarly for 'R' followed by digits). 'DEFINE' can be
 4579|       |      the Perl DEFINE feature or the Python named test. We look for a name
 4580|       |      first; if not found, we try the other case.
 4581|       |
 4582|       |      For compatibility with auto-callouts, we allow a callout to be specified
 4583|       |      before a condition that is an assertion. */
 4584|       |
 4585|      0|      case CHAR_LEFT_PARENTHESIS:
  ------------------
  |  | 1008|      0|#define CHAR_LEFT_PARENTHESIS       '\050'
  ------------------
  |  Branch (4585:7): [True: 0, False: 5]
  ------------------
 4586|      0|      if (++ptr >= ptrend) goto UNCLOSED_PARENTHESIS;
  ------------------
  |  Branch (4586:11): [True: 0, False: 0]
  ------------------
 4587|      0|      nest_depth++;
 4588|       |
 4589|       |      /* If the next character is ? or * there must be an assertion next
 4590|       |      (optionally preceded by a callout). We do not check this here, but
 4591|       |      instead we set expect_cond_assert to 2. If this is still greater than
 4592|       |      zero (callouts decrement it) when the next assertion is read, it will be
 4593|       |      marked as a condition that must not be repeated. A value greater than
 4594|       |      zero also causes checking that an assertion (possibly with callout)
 4595|       |      follows. */
 4596|       |
 4597|      0|      if (*ptr == CHAR_QUESTION_MARK || *ptr == CHAR_ASTERISK)
  ------------------
  |  | 1031|      0|#define CHAR_QUESTION_MARK          '\077'
  ------------------
                    if (*ptr == CHAR_QUESTION_MARK || *ptr == CHAR_ASTERISK)
  ------------------
  |  | 1010|      0|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (4597:11): [True: 0, False: 0]
  |  Branch (4597:41): [True: 0, False: 0]
  ------------------
 4598|      0|        {
 4599|      0|        *parsed_pattern++ = META_COND_ASSERT;
  ------------------
  |  |  227|      0|#define META_COND_ASSERT      0x800f0000u  /* (?(?assertion)... */
  ------------------
 4600|      0|        ptr--;   /* Pull pointer back to the opening parenthesis. */
 4601|      0|        expect_cond_assert = 2;
 4602|      0|        break;  /* End of conditional */
 4603|      0|        }
 4604|       |
 4605|       |      /* Handle (?([+-]number)... */
 4606|       |
 4607|      0|      if (read_number(&ptr, ptrend, cb->bracount, MAX_GROUP_NUMBER, ERR61, &i,
  ------------------
  |  |  147|      0|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (4607:11): [True: 0, False: 0]
  ------------------
 4608|      0|          &errorcode))
 4609|      0|        {
 4610|      0|        if (i <= 0)
  ------------------
  |  Branch (4610:13): [True: 0, False: 0]
  ------------------
 4611|      0|          {
 4612|      0|          errorcode = ERR15;
 4613|      0|          goto FAILED;
 4614|      0|          }
 4615|      0|        *parsed_pattern++ = META_COND_NUMBER;
  ------------------
  |  |  230|      0|#define META_COND_NUMBER      0x80120000u  /* (?(digits)... */
  ------------------
 4616|      0|        offset = (PCRE2_SIZE)(ptr - cb->start_pattern - 2);
 4617|      0|        PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4618|      0|        *parsed_pattern++ = i;
 4619|      0|        }
 4620|      0|      else if (errorcode != 0) goto FAILED;   /* Number too big */
  ------------------
  |  Branch (4620:16): [True: 0, False: 0]
  ------------------
 4621|       |
 4622|       |      /* No number found. Handle the special case (?(VERSION[>]=n.m)... */
 4623|       |
 4624|      0|      else if (ptrend - ptr >= 10 &&
  ------------------
  |  Branch (4624:16): [True: 0, False: 0]
  ------------------
 4625|      0|               PRIV(strncmp_c8)(ptr, STRING_VERSION, 7) == 0 &&
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|      0|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                             PRIV(strncmp_c8)(ptr, STRING_VERSION, 7) == 0 &&
  ------------------
  |  | 1246|      0|#define STRING_VERSION               STR_V STR_E STR_R STR_S STR_I STR_O STR_N
  |  |  ------------------
  |  |  |  | 1161|      0|#define STR_V                       "\126"
  |  |  ------------------
  |  |               #define STRING_VERSION               STR_V STR_E STR_R STR_S STR_I STR_O STR_N
  |  |  ------------------
  |  |  |  | 1153|      0|#define STR_N                       "\116"
  |  |  ------------------
  ------------------
  |  Branch (4625:16): [True: 0, False: 0]
  ------------------
 4626|      0|               ptr[7] != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4626:16): [True: 0, False: 0]
  ------------------
 4627|      0|        {
 4628|      0|        uint32_t ge = 0;
 4629|      0|        int major = 0;
 4630|      0|        int minor = 0;
 4631|       |
 4632|      0|        ptr += 7;
 4633|      0|        if (*ptr == CHAR_GREATER_THAN_SIGN)
  ------------------
  |  | 1030|      0|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
  |  Branch (4633:13): [True: 0, False: 0]
  ------------------
 4634|      0|          {
 4635|      0|          ge = 1;
 4636|      0|          ptr++;
 4637|      0|          }
 4638|       |
 4639|       |        /* NOTE: cannot write IS_DIGIT(*(++ptr)) here because IS_DIGIT
 4640|       |        references its argument twice. */
 4641|       |
 4642|      0|        if (*ptr != CHAR_EQUALS_SIGN || (ptr++, !IS_DIGIT(*ptr)))
  ------------------
  |  | 1029|      0|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
                      if (*ptr != CHAR_EQUALS_SIGN || (ptr++, !IS_DIGIT(*ptr)))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4642:13): [True: 0, False: 0]
  |  Branch (4642:41): [True: 0, False: 0]
  ------------------
 4643|      0|          goto BAD_VERSION_CONDITION;
 4644|       |
 4645|      0|        if (!read_number(&ptr, ptrend, -1, 1000, ERR79, &major, &errorcode))
  ------------------
  |  Branch (4645:13): [True: 0, False: 0]
  ------------------
 4646|      0|          goto FAILED;
 4647|       |
 4648|      0|        if (ptr >= ptrend) goto BAD_VERSION_CONDITION;
  ------------------
  |  Branch (4648:13): [True: 0, False: 0]
  ------------------
 4649|      0|        if (*ptr == CHAR_DOT)
  ------------------
  |  | 1014|      0|#define CHAR_DOT                    '\056'
  ------------------
  |  Branch (4649:13): [True: 0, False: 0]
  ------------------
 4650|      0|          {
 4651|      0|          if (++ptr >= ptrend || !IS_DIGIT(*ptr)) goto BAD_VERSION_CONDITION;
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4651:15): [True: 0, False: 0]
  ------------------
 4652|      0|          minor = (*ptr++ - CHAR_0) * 10;
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
 4653|      0|          if (ptr >= ptrend) goto BAD_VERSION_CONDITION;
  ------------------
  |  Branch (4653:15): [True: 0, False: 0]
  ------------------
 4654|      0|          if (IS_DIGIT(*ptr)) minor += *ptr++ - CHAR_0;
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                        if (IS_DIGIT(*ptr)) minor += *ptr++ - CHAR_0;
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
 4655|      0|          if (ptr >= ptrend || *ptr != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4655:15): [True: 0, False: 0]
  |  Branch (4655:32): [True: 0, False: 0]
  ------------------
 4656|      0|            goto BAD_VERSION_CONDITION;
 4657|      0|          }
 4658|       |
 4659|      0|        *parsed_pattern++ = META_COND_VERSION;
  ------------------
  |  |  233|      0|#define META_COND_VERSION     0x80150000u  /* (?(VERSION<op>x.y)... */
  ------------------
 4660|      0|        *parsed_pattern++ = ge;
 4661|      0|        *parsed_pattern++ = major;
 4662|      0|        *parsed_pattern++ = minor;
 4663|      0|        }
 4664|       |
 4665|       |      /* All the remaining cases now require us to read a name. We cannot at
 4666|       |      this stage distinguish ambiguous cases such as (?(R12) which might be a
 4667|       |      recursion test by number or a name, because the named groups have not yet
 4668|       |      all been identified. Those cases are treated as names, but given a
 4669|       |      different META code. */
 4670|       |
 4671|      0|      else
 4672|      0|        {
 4673|      0|        BOOL was_r_ampersand = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 4674|       |
 4675|      0|        if (*ptr == CHAR_R && ptrend - ptr > 1 && ptr[1] == CHAR_AMPERSAND)
  ------------------
  |  | 1050|      0|#define CHAR_R                      '\122'
  ------------------
                      if (*ptr == CHAR_R && ptrend - ptr > 1 && ptr[1] == CHAR_AMPERSAND)
  ------------------
  |  | 1006|      0|#define CHAR_AMPERSAND              '\046'
  ------------------
  |  Branch (4675:13): [True: 0, False: 0]
  |  Branch (4675:31): [True: 0, False: 0]
  |  Branch (4675:51): [True: 0, False: 0]
  ------------------
 4676|      0|          {
 4677|      0|          terminator = CHAR_RIGHT_PARENTHESIS;
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
 4678|      0|          was_r_ampersand = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4679|      0|          ptr++;
 4680|      0|          }
 4681|      0|        else if (*ptr == CHAR_LESS_THAN_SIGN)
  ------------------
  |  | 1028|      0|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
  |  Branch (4681:18): [True: 0, False: 0]
  ------------------
 4682|      0|          terminator = CHAR_GREATER_THAN_SIGN;
  ------------------
  |  | 1030|      0|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
 4683|      0|        else if (*ptr == CHAR_APOSTROPHE)
  ------------------
  |  | 1007|      0|#define CHAR_APOSTROPHE             '\047'
  ------------------
  |  Branch (4683:18): [True: 0, False: 0]
  ------------------
 4684|      0|          terminator = CHAR_APOSTROPHE;
  ------------------
  |  | 1007|      0|#define CHAR_APOSTROPHE             '\047'
  ------------------
 4685|      0|        else
 4686|      0|          {
 4687|      0|          terminator = CHAR_RIGHT_PARENTHESIS;
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
 4688|      0|          ptr--;   /* Point to char before name */
 4689|      0|          }
 4690|      0|        if (!read_name(&ptr, ptrend, utf, terminator, &offset, &name, &namelen,
  ------------------
  |  Branch (4690:13): [True: 0, False: 0]
  ------------------
 4691|      0|            &errorcode, cb)) goto FAILED;
 4692|       |
 4693|       |        /* Handle (?(R&name) */
 4694|       |
 4695|      0|        if (was_r_ampersand)
  ------------------
  |  Branch (4695:13): [True: 0, False: 0]
  ------------------
 4696|      0|          {
 4697|      0|          *parsed_pattern = META_COND_RNAME;
  ------------------
  |  |  231|      0|#define META_COND_RNAME       0x80130000u  /* (?(R&name)... */
  ------------------
 4698|      0|          ptr--;   /* Back to closing parens */
 4699|      0|          }
 4700|       |
 4701|       |        /* Handle (?(name). If the name is "DEFINE" we identify it with a
 4702|       |        special code. Likewise if the name consists of R followed only by
 4703|       |        digits. Otherwise, handle it like a quoted name. */
 4704|       |
 4705|      0|        else if (terminator == CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4705:18): [True: 0, False: 0]
  ------------------
 4706|      0|          {
 4707|      0|          if (namelen == 6 && PRIV(strncmp_c8)(name, STRING_DEFINE, 6) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2037|      0|#define _pcre2_strncmp_c8            PCRE2_SUFFIX(_pcre2_strncmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        if (namelen == 6 && PRIV(strncmp_c8)(name, STRING_DEFINE, 6) == 0)
  ------------------
  |  | 1245|      0|#define STRING_DEFINE                STR_D STR_E STR_F STR_I STR_N STR_E
  |  |  ------------------
  |  |  |  | 1143|      0|#define STR_D                       "\104"
  |  |  ------------------
  |  |               #define STRING_DEFINE                STR_D STR_E STR_F STR_I STR_N STR_E
  |  |  ------------------
  |  |  |  | 1144|      0|#define STR_E                       "\105"
  |  |  ------------------
  ------------------
  |  Branch (4707:15): [True: 0, False: 0]
  |  Branch (4707:31): [True: 0, False: 0]
  ------------------
 4708|      0|            *parsed_pattern = META_COND_DEFINE;
  ------------------
  |  |  228|      0|#define META_COND_DEFINE      0x80100000u  /* (?(DEFINE)... */
  ------------------
 4709|      0|          else
 4710|      0|            {
 4711|      0|            for (i = 1; i < (int)namelen; i++)
  ------------------
  |  Branch (4711:25): [True: 0, False: 0]
  ------------------
 4712|      0|              if (!IS_DIGIT(name[i])) break;
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4713|      0|            *parsed_pattern = (*name == CHAR_R && i >= (int)namelen)?
  ------------------
  |  | 1050|      0|#define CHAR_R                      '\122'
  ------------------
  |  Branch (4713:32): [True: 0, False: 0]
  |  Branch (4713:51): [True: 0, False: 0]
  ------------------
 4714|      0|              META_COND_RNUMBER : META_COND_NAME;
  ------------------
  |  |  232|      0|#define META_COND_RNUMBER     0x80140000u  /* (?(Rdigits)... */
  ------------------
                            META_COND_RNUMBER : META_COND_NAME;
  ------------------
  |  |  229|      0|#define META_COND_NAME        0x80110000u  /* (?(<name>)... */
  ------------------
 4715|      0|            }
 4716|      0|          ptr--;   /* Back to closing parens */
 4717|      0|          }
 4718|       |
 4719|       |        /* Handle (?('name') or (?(<name>) */
 4720|       |
 4721|      0|        else *parsed_pattern = META_COND_NAME;
  ------------------
  |  |  229|      0|#define META_COND_NAME        0x80110000u  /* (?(<name>)... */
  ------------------
 4722|       |
 4723|       |        /* All these cases except DEFINE end with the name length and offset;
 4724|       |        DEFINE just has an offset (for the "too many branches" error). */
 4725|       |
 4726|      0|        if (*parsed_pattern++ != META_COND_DEFINE) *parsed_pattern++ = namelen;
  ------------------
  |  |  228|      0|#define META_COND_DEFINE      0x80100000u  /* (?(DEFINE)... */
  ------------------
  |  Branch (4726:13): [True: 0, False: 0]
  ------------------
 4727|      0|        PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4728|      0|        }  /* End cases that read a name */
 4729|       |
 4730|       |      /* Check the closing parenthesis of the condition */
 4731|       |
 4732|      0|      if (ptr >= ptrend || *ptr != CHAR_RIGHT_PARENTHESIS)
  ------------------
  |  | 1009|      0|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4732:11): [True: 0, False: 0]
  |  Branch (4732:28): [True: 0, False: 0]
  ------------------
 4733|      0|        {
 4734|      0|        errorcode = ERR24;
 4735|      0|        goto FAILED;
 4736|      0|        }
 4737|      0|      ptr++;
 4738|      0|      break;  /* End of condition processing */
 4739|       |
 4740|       |
 4741|       |      /* ---- Atomic group ---- */
 4742|       |
 4743|      0|      case CHAR_GREATER_THAN_SIGN:
  ------------------
  |  | 1030|      0|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
  |  Branch (4743:7): [True: 0, False: 5]
  ------------------
 4744|      0|      ATOMIC_GROUP:                          /* Come from (*atomic: */
 4745|      0|      *parsed_pattern++ = META_ATOMIC;
  ------------------
  |  |  214|      0|#define META_ATOMIC           0x80020000u  /* atomic group */
  ------------------
 4746|      0|      nest_depth++;
 4747|      0|      ptr++;
 4748|      0|      break;
 4749|       |
 4750|       |
 4751|       |      /* ---- Lookahead assertions ---- */
 4752|       |
 4753|      1|      case CHAR_EQUALS_SIGN:
  ------------------
  |  | 1029|      1|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (4753:7): [True: 1, False: 4]
  ------------------
 4754|      1|      POSITIVE_LOOK_AHEAD:                   /* Come from (*pla: */
 4755|      1|      *parsed_pattern++ = META_LOOKAHEAD;
  ------------------
  |  |  251|      1|#define META_LOOKAHEAD        0x80230000u  /* (?= */
  ------------------
 4756|      1|      ptr++;
 4757|      1|      goto POST_ASSERTION;
 4758|       |
 4759|      0|      case CHAR_ASTERISK:
  ------------------
  |  | 1010|      0|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (4759:7): [True: 0, False: 5]
  ------------------
 4760|      0|      POSITIVE_NONATOMIC_LOOK_AHEAD:         /* Come from (?* */
 4761|      0|      *parsed_pattern++ = META_LOOKAHEAD_NA;
  ------------------
  |  |  258|      0|#define META_LOOKAHEAD_NA     0x80270000u  /* (*napla: */
  ------------------
 4762|      0|      ptr++;
 4763|      0|      goto POST_ASSERTION;
 4764|       |
 4765|      0|      case CHAR_EXCLAMATION_MARK:
  ------------------
  |  | 1001|      0|#define CHAR_EXCLAMATION_MARK       '\041'
  ------------------
  |  Branch (4765:7): [True: 0, False: 5]
  ------------------
 4766|      0|      NEGATIVE_LOOK_AHEAD:                   /* Come from (*nla: */
 4767|      0|      *parsed_pattern++ = META_LOOKAHEADNOT;
  ------------------
  |  |  252|      0|#define META_LOOKAHEADNOT     0x80240000u  /* (?! */
  ------------------
 4768|      0|      ptr++;
 4769|      0|      goto POST_ASSERTION;
 4770|       |
 4771|       |
 4772|       |      /* ---- Lookbehind assertions ---- */
 4773|       |
 4774|       |      /* (?< followed by = or ! or * is a lookbehind assertion. Otherwise (?<
 4775|       |      is the start of the name of a capturing group. */
 4776|       |
 4777|      0|      case CHAR_LESS_THAN_SIGN:
  ------------------
  |  | 1028|      0|#define CHAR_LESS_THAN_SIGN         '\074'
  ------------------
  |  Branch (4777:7): [True: 0, False: 5]
  ------------------
 4778|      0|      if (ptrend - ptr <= 1 ||
  ------------------
  |  Branch (4778:11): [True: 0, False: 0]
  ------------------
 4779|      0|         (ptr[1] != CHAR_EQUALS_SIGN &&
  ------------------
  |  | 1029|      0|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (4779:11): [True: 0, False: 0]
  ------------------
 4780|      0|          ptr[1] != CHAR_EXCLAMATION_MARK &&
  ------------------
  |  | 1001|      0|#define CHAR_EXCLAMATION_MARK       '\041'
  ------------------
  |  Branch (4780:11): [True: 0, False: 0]
  ------------------
 4781|      0|          ptr[1] != CHAR_ASTERISK))
  ------------------
  |  | 1010|      0|#define CHAR_ASTERISK               '\052'
  ------------------
  |  Branch (4781:11): [True: 0, False: 0]
  ------------------
 4782|      0|        {
 4783|      0|        terminator = CHAR_GREATER_THAN_SIGN;
  ------------------
  |  | 1030|      0|#define CHAR_GREATER_THAN_SIGN      '\076'
  ------------------
 4784|      0|        goto DEFINE_NAME;
 4785|      0|        }
 4786|      0|      *parsed_pattern++ = (ptr[1] == CHAR_EQUALS_SIGN)?
  ------------------
  |  | 1029|      0|#define CHAR_EQUALS_SIGN            '\075'
  ------------------
  |  Branch (4786:27): [True: 0, False: 0]
  ------------------
 4787|      0|        META_LOOKBEHIND : (ptr[1] == CHAR_EXCLAMATION_MARK)?
  ------------------
  |  |  253|      0|#define META_LOOKBEHIND       0x80250000u  /* (?<= */
  ------------------
                      META_LOOKBEHIND : (ptr[1] == CHAR_EXCLAMATION_MARK)?
  ------------------
  |  | 1001|      0|#define CHAR_EXCLAMATION_MARK       '\041'
  ------------------
  |  Branch (4787:27): [True: 0, False: 0]
  ------------------
 4788|      0|        META_LOOKBEHINDNOT : META_LOOKBEHIND_NA;
  ------------------
  |  |  254|      0|#define META_LOOKBEHINDNOT    0x80260000u  /* (?<! */
  ------------------
                      META_LOOKBEHINDNOT : META_LOOKBEHIND_NA;
  ------------------
  |  |  259|      0|#define META_LOOKBEHIND_NA    0x80280000u  /* (*naplb: */
  ------------------
 4789|       |
 4790|      0|      POST_LOOKBEHIND:           /* Come from (*plb: (*naplb: and (*nlb: */
 4791|      0|      *has_lookbehind = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4792|      0|      offset = (PCRE2_SIZE)(ptr - cb->start_pattern - 2);
 4793|      0|      PUTOFFSET(offset, parsed_pattern);
  ------------------
  |  |  100|      0|  { *p++ = (uint32_t)(s >> 32); *p++ = (uint32_t)(s & 0xffffffff); }
  ------------------
 4794|      0|      ptr += 2;
 4795|       |      /* Fall through */
 4796|       |
 4797|       |      /* If the previous item was a condition starting (?(? an assertion,
 4798|       |      optionally preceded by a callout, is expected. This is checked later on,
 4799|       |      during actual compilation. However we need to identify this kind of
 4800|       |      assertion in this pass because it must not be qualified. The value of
 4801|       |      expect_cond_assert is set to 2 after (?(? is processed. We decrement it
 4802|       |      for a callout - still leaving a positive value that identifies the
 4803|       |      assertion. Multiple callouts or any other items will make it zero or
 4804|       |      less, which doesn't matter because they will cause an error later. */
 4805|       |
 4806|      1|      POST_ASSERTION:
 4807|      1|      nest_depth++;
 4808|      1|      if (prev_expect_cond_assert > 0)
  ------------------
  |  Branch (4808:11): [True: 0, False: 1]
  ------------------
 4809|      0|        {
 4810|      0|        if (top_nest == NULL) top_nest = (nest_save *)(cb->start_workspace);
  ------------------
  |  Branch (4810:13): [True: 0, False: 0]
  ------------------
 4811|      0|        else if (++top_nest >= end_nests)
  ------------------
  |  Branch (4811:18): [True: 0, False: 0]
  ------------------
 4812|      0|          {
 4813|      0|          errorcode = ERR84;
 4814|      0|          goto FAILED;
 4815|      0|          }
 4816|      0|        top_nest->nest_depth = nest_depth;
 4817|      0|        top_nest->flags = NSF_CONDASSERT;
  ------------------
  |  | 2735|      0|#define NSF_CONDASSERT     0x0002u
  ------------------
 4818|      0|        top_nest->options = options & PARSE_TRACKED_OPTIONS;
  ------------------
  |  | 2743|      0|#define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  124|      0|#define PCRE2_DOTALL              0x00000020u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  125|      0|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  |  |  ------------------
  |  | 2744|      0|  PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  126|      0|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  143|      0|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  129|      0|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  132|      0|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  |  |  ------------------
  |  | 2745|      0|  PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  137|      0|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  |  |  ------------------
  ------------------
 4819|      0|        top_nest->xoptions = xoptions & PARSE_TRACKED_EXTRA_OPTIONS;
  ------------------
  |  | 2747|      0|#define PARSE_TRACKED_EXTRA_OPTIONS (PCRE2_EXTRA_CASELESS_RESTRICT| \
  |  |  ------------------
  |  |  |  |  156|      0|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  |  |  ------------------
  |  | 2748|      0|  PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  157|      0|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  158|      0|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  159|      0|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  |  |  ------------------
  |  | 2749|      0|  PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  161|      0|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  160|      0|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  |  |  ------------------
  ------------------
 4820|      0|        }
 4821|      1|      break;
 4822|       |
 4823|       |
 4824|       |      /* ---- Define a named group ---- */
 4825|       |
 4826|       |      /* A named group may be defined as (?'name') or (?<name>). In the latter
 4827|       |      case we jump to DEFINE_NAME from the disambiguation of (?< above with the
 4828|       |      terminator set to '>'. */
 4829|       |
 4830|      1|      case CHAR_APOSTROPHE:
  ------------------
  |  | 1007|      0|#define CHAR_APOSTROPHE             '\047'
  ------------------
  |  Branch (4830:7): [True: 0, False: 5]
  ------------------
 4831|      0|      terminator = CHAR_APOSTROPHE;    /* Terminator */
  ------------------
  |  | 1007|      0|#define CHAR_APOSTROPHE             '\047'
  ------------------
 4832|       |
 4833|      0|      DEFINE_NAME:
 4834|      0|      if (!read_name(&ptr, ptrend, utf, terminator, &offset, &name, &namelen,
  ------------------
  |  Branch (4834:11): [True: 0, False: 0]
  ------------------
 4835|      0|          &errorcode, cb)) goto FAILED;
 4836|       |
 4837|       |      /* We have a name for this capturing group. It is also assigned a number,
 4838|       |      which is its primary means of identification. */
 4839|       |
 4840|      0|      if (cb->bracount >= MAX_GROUP_NUMBER)
  ------------------
  |  |  147|      0|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (4840:11): [True: 0, False: 0]
  ------------------
 4841|      0|        {
 4842|      0|        errorcode = ERR97;
 4843|      0|        goto FAILED;
 4844|      0|        }
 4845|      0|      cb->bracount++;
 4846|      0|      *parsed_pattern++ = META_CAPTURE | cb->bracount;
  ------------------
  |  |  220|      0|#define META_CAPTURE          0x80080000u  /* Capturing parenthesis */
  ------------------
 4847|      0|      nest_depth++;
 4848|       |
 4849|       |      /* Check not too many names */
 4850|       |
 4851|      0|      if (cb->names_found >= MAX_NAME_COUNT)
  ------------------
  |  |   71|      0|#define MAX_NAME_COUNT 10000
  ------------------
  |  Branch (4851:11): [True: 0, False: 0]
  ------------------
 4852|      0|        {
 4853|      0|        errorcode = ERR49;
 4854|      0|        goto FAILED;
 4855|      0|        }
 4856|       |
 4857|       |      /* Adjust the entry size to accommodate the longest name found. */
 4858|       |
 4859|      0|      if (namelen + IMM2_SIZE + 1 > cb->name_entry_size)
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (4859:11): [True: 0, False: 0]
  ------------------
 4860|      0|        cb->name_entry_size = (uint16_t)(namelen + IMM2_SIZE + 1);
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 4861|       |
 4862|       |      /* Scan the list to check for duplicates. For duplicate names, if the
 4863|       |      number is the same, break the loop, which causes the name to be
 4864|       |      discarded; otherwise, if DUPNAMES is not set, give an error.
 4865|       |      If it is set, allow the name with a different number, but continue
 4866|       |      scanning in case this is a duplicate with the same number. For
 4867|       |      non-duplicate names, give an error if the number is duplicated. */
 4868|       |
 4869|      0|      isdupname = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 4870|      0|      ng = cb->named_groups;
 4871|      0|      for (i = 0; i < cb->names_found; i++, ng++)
  ------------------
  |  Branch (4871:19): [True: 0, False: 0]
  ------------------
 4872|      0|        {
 4873|      0|        if (namelen == ng->length &&
  ------------------
  |  Branch (4873:13): [True: 0, False: 0]
  ------------------
 4874|      0|            PRIV(strncmp)(name, ng->name, (PCRE2_SIZE)namelen) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2036|      0|#define _pcre2_strncmp               PCRE2_SUFFIX(_pcre2_strncmp_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4874:13): [True: 0, False: 0]
  ------------------
 4875|      0|          {
 4876|      0|          if (ng->number == cb->bracount) break;
  ------------------
  |  Branch (4876:15): [True: 0, False: 0]
  ------------------
 4877|      0|          if ((options & PCRE2_DUPNAMES) == 0)
  ------------------
  |  |  125|      0|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  ------------------
  |  Branch (4877:15): [True: 0, False: 0]
  ------------------
 4878|      0|            {
 4879|      0|            errorcode = ERR43;
 4880|      0|            goto FAILED;
 4881|      0|            }
 4882|      0|          isdupname = ng->isdup = TRUE;     /* Mark as a duplicate */
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4883|      0|          cb->dupnames = TRUE;              /* Duplicate names exist */
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4884|      0|          }
 4885|      0|        else if (ng->number == cb->bracount)
  ------------------
  |  Branch (4885:18): [True: 0, False: 0]
  ------------------
 4886|      0|          {
 4887|      0|          errorcode = ERR65;
 4888|      0|          goto FAILED;
 4889|      0|          }
 4890|      0|        }
 4891|       |
 4892|      0|      if (i < cb->names_found) break;   /* Ignore duplicate with same number */
  ------------------
  |  Branch (4892:11): [True: 0, False: 0]
  ------------------
 4893|       |
 4894|       |      /* Increase the list size if necessary */
 4895|       |
 4896|      0|      if (cb->names_found >= cb->named_group_list_size)
  ------------------
  |  Branch (4896:11): [True: 0, False: 0]
  ------------------
 4897|      0|        {
 4898|      0|        uint32_t newsize = cb->named_group_list_size * 2;
 4899|      0|        named_group *newspace =
  ------------------
  |  | 2010|      0|#define named_group                  PCRE2_SUFFIX(named_group_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4900|      0|          cb->cx->memctl.malloc(newsize * sizeof(named_group),
 4901|      0|          cb->cx->memctl.memory_data);
 4902|      0|        if (newspace == NULL)
  ------------------
  |  Branch (4902:13): [True: 0, False: 0]
  ------------------
 4903|      0|          {
 4904|      0|          errorcode = ERR21;
 4905|      0|          goto FAILED;
 4906|      0|          }
 4907|       |
 4908|      0|        memcpy(newspace, cb->named_groups,
 4909|      0|          cb->named_group_list_size * sizeof(named_group));
 4910|      0|        if (cb->named_group_list_size > NAMED_GROUP_LIST_SIZE)
  ------------------
  |  |  187|      0|#define NAMED_GROUP_LIST_SIZE  20
  ------------------
  |  Branch (4910:13): [True: 0, False: 0]
  ------------------
 4911|      0|          cb->cx->memctl.free((void *)cb->named_groups,
 4912|      0|          cb->cx->memctl.memory_data);
 4913|      0|        cb->named_groups = newspace;
 4914|      0|        cb->named_group_list_size = newsize;
 4915|      0|        }
 4916|       |
 4917|       |      /* Add this name to the list */
 4918|       |
 4919|      0|      cb->named_groups[cb->names_found].name = name;
 4920|      0|      cb->named_groups[cb->names_found].length = (uint16_t)namelen;
 4921|      0|      cb->named_groups[cb->names_found].number = cb->bracount;
 4922|      0|      cb->named_groups[cb->names_found].isdup = (uint16_t)isdupname;
 4923|      0|      cb->names_found++;
 4924|      0|      break;
 4925|      5|      }        /* End of (? switch */
 4926|      3|    break;     /* End of ( handling */
 4927|       |
 4928|       |
 4929|       |    /* ---- Branch terminators ---- */
 4930|       |
 4931|       |    /* Alternation: reset the capture count if we are in a (?| group. */
 4932|       |
 4933|    392|    case CHAR_VERTICAL_LINE:
  ------------------
  |  | 1092|    392|#define CHAR_VERTICAL_LINE          '\174'
  ------------------
  |  Branch (4933:5): [True: 392, False: 12.3k]
  ------------------
 4934|    392|    if (top_nest != NULL && top_nest->nest_depth == nest_depth &&
  ------------------
  |  Branch (4934:9): [True: 2, False: 390]
  |  Branch (4934:29): [True: 2, False: 0]
  ------------------
 4935|      2|        (top_nest->flags & NSF_RESET) != 0)
  ------------------
  |  | 2734|      2|#define NSF_RESET          0x0001u
  ------------------
  |  Branch (4935:9): [True: 0, False: 2]
  ------------------
 4936|      0|      {
 4937|      0|      if (cb->bracount > top_nest->max_group)
  ------------------
  |  Branch (4937:11): [True: 0, False: 0]
  ------------------
 4938|      0|        top_nest->max_group = (uint16_t)cb->bracount;
 4939|      0|      cb->bracount = top_nest->reset_group;
 4940|      0|      }
 4941|    392|    *parsed_pattern++ = META_ALT;
  ------------------
  |  |  213|    392|#define META_ALT              0x80010000u  /* alternation */
  ------------------
 4942|    392|    break;
 4943|       |
 4944|       |    /* End of group; reset the capture count to the maximum if we are in a (?|
 4945|       |    group and/or reset the options that are tracked during parsing. Disallow
 4946|       |    quantifier for a condition that is an assertion. */
 4947|       |
 4948|     23|    case CHAR_RIGHT_PARENTHESIS:
  ------------------
  |  | 1009|     23|#define CHAR_RIGHT_PARENTHESIS      '\051'
  ------------------
  |  Branch (4948:5): [True: 23, False: 12.6k]
  ------------------
 4949|     23|    okquantifier = TRUE;
  ------------------
  |  |   88|     23|#define TRUE    1
  ------------------
 4950|     23|    if (top_nest != NULL && top_nest->nest_depth == nest_depth)
  ------------------
  |  Branch (4950:9): [True: 2, False: 21]
  |  Branch (4950:29): [True: 2, False: 0]
  ------------------
 4951|      2|      {
 4952|      2|      options = (options & ~PARSE_TRACKED_OPTIONS) | top_nest->options;
  ------------------
  |  | 2743|      2|#define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  122|      2|#define PCRE2_CASELESS            0x00000008u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  124|      2|#define PCRE2_DOTALL              0x00000020u  /* C       */
  |  |  ------------------
  |  |               #define PARSE_TRACKED_OPTIONS (PCRE2_CASELESS|PCRE2_DOTALL|PCRE2_DUPNAMES| \
  |  |  ------------------
  |  |  |  |  125|      2|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  |  |  ------------------
  |  | 2744|      2|  PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  126|      2|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  143|      2|#define PCRE2_EXTENDED_MORE       0x01000000u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  129|      2|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  |  |  ------------------
  |  |                 PCRE2_EXTENDED|PCRE2_EXTENDED_MORE|PCRE2_MULTILINE|PCRE2_NO_AUTO_CAPTURE| \
  |  |  ------------------
  |  |  |  |  132|      2|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  |  |  ------------------
  |  | 2745|      2|  PCRE2_UNGREEDY)
  |  |  ------------------
  |  |  |  |  137|      2|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  |  |  ------------------
  ------------------
 4953|      2|      xoptions = (xoptions & ~PARSE_TRACKED_EXTRA_OPTIONS) | top_nest->xoptions;
  ------------------
  |  | 2747|      2|#define PARSE_TRACKED_EXTRA_OPTIONS (PCRE2_EXTRA_CASELESS_RESTRICT| \
  |  |  ------------------
  |  |  |  |  156|      2|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  |  |  ------------------
  |  | 2748|      2|  PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  157|      2|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  158|      2|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_BSD|PCRE2_EXTRA_ASCII_BSS|PCRE2_EXTRA_ASCII_BSW| \
  |  |  ------------------
  |  |  |  |  159|      2|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  |  |  ------------------
  |  | 2749|      2|  PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  161|      2|#define PCRE2_EXTRA_ASCII_DIGIT              0x00001000u  /* C */
  |  |  ------------------
  |  |                 PCRE2_EXTRA_ASCII_DIGIT|PCRE2_EXTRA_ASCII_POSIX)
  |  |  ------------------
  |  |  |  |  160|      2|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  |  |  ------------------
  ------------------
 4954|      2|      if ((top_nest->flags & NSF_RESET) != 0 &&
  ------------------
  |  | 2734|      2|#define NSF_RESET          0x0001u
  ------------------
  |  Branch (4954:11): [True: 0, False: 2]
  ------------------
 4955|      0|          top_nest->max_group > cb->bracount)
  ------------------
  |  Branch (4955:11): [True: 0, False: 0]
  ------------------
 4956|      0|        cb->bracount = top_nest->max_group;
 4957|      2|      if ((top_nest->flags & NSF_CONDASSERT) != 0)
  ------------------
  |  | 2735|      2|#define NSF_CONDASSERT     0x0002u
  ------------------
  |  Branch (4957:11): [True: 0, False: 2]
  ------------------
 4958|      0|        okquantifier = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 4959|       |
 4960|      2|      if ((top_nest->flags & NSF_ATOMICSR) != 0)
  ------------------
  |  | 2736|      2|#define NSF_ATOMICSR       0x0004u
  ------------------
  |  Branch (4960:11): [True: 0, False: 2]
  ------------------
 4961|      0|        {
 4962|      0|        *parsed_pattern++ = META_KET;
  ------------------
  |  |  237|      0|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
 4963|      0|        }
 4964|       |
 4965|      2|      if (top_nest == (nest_save *)(cb->start_workspace)) top_nest = NULL;
  ------------------
  |  Branch (4965:11): [True: 2, False: 0]
  ------------------
 4966|      0|        else top_nest--;
 4967|      2|      }
 4968|     23|    if (nest_depth == 0)    /* Unmatched closing parenthesis */
  ------------------
  |  Branch (4968:9): [True: 1, False: 22]
  ------------------
 4969|      1|      {
 4970|      1|      errorcode = ERR22;
 4971|      1|      goto FAILED_BACK;
 4972|      1|      }
 4973|     22|    nest_depth--;
 4974|     22|    *parsed_pattern++ = META_KET;
  ------------------
  |  |  237|     22|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
 4975|     22|    break;
 4976|  12.7k|    }  /* End of switch on pattern character */
 4977|  12.7k|  }    /* End of main character scan loop */
 4978|       |
 4979|       |/* End of pattern reached. Check for missing ) at the end of a verb name. */
 4980|       |
 4981|    310|if (inverbname && ptr >= ptrend)
  ------------------
  |  Branch (4981:5): [True: 0, False: 310]
  |  Branch (4981:19): [True: 0, False: 0]
  ------------------
 4982|      0|  {
 4983|      0|  errorcode = ERR60;
 4984|      0|  goto FAILED;
 4985|      0|  }
 4986|       |
 4987|       |/* Manage callout for the final item */
 4988|       |
 4989|    310|PARSED_END:
 4990|    310|parsed_pattern = manage_callouts(ptr, &previous_callout, auto_callout,
 4991|    310|  parsed_pattern, cb);
 4992|       |
 4993|       |/* Insert trailing items for word and line matching (features provided for the
 4994|       |benefit of pcre2grep). */
 4995|       |
 4996|    310|if ((xoptions & PCRE2_EXTRA_MATCH_LINE) != 0)
  ------------------
  |  |  152|    310|#define PCRE2_EXTRA_MATCH_LINE               0x00000008u  /* C */
  ------------------
  |  Branch (4996:5): [True: 0, False: 310]
  ------------------
 4997|      0|  {
 4998|      0|  *parsed_pattern++ = META_KET;
  ------------------
  |  |  237|      0|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
 4999|      0|  *parsed_pattern++ = META_DOLLAR;
  ------------------
  |  |  234|      0|#define META_DOLLAR           0x80160000u  /* $ metacharacter */
  ------------------
 5000|      0|  }
 5001|    310|else if ((xoptions & PCRE2_EXTRA_MATCH_WORD) != 0)
  ------------------
  |  |  151|    310|#define PCRE2_EXTRA_MATCH_WORD               0x00000004u  /* C */
  ------------------
  |  Branch (5001:10): [True: 0, False: 310]
  ------------------
 5002|      0|  {
 5003|      0|  *parsed_pattern++ = META_KET;
  ------------------
  |  |  237|      0|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
 5004|      0|  *parsed_pattern++ = META_ESCAPE + ESC_b;
  ------------------
  |  |  236|      0|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 5005|      0|  }
 5006|       |
 5007|       |/* Terminate the parsed pattern, then return success if all groups are closed.
 5008|       |Otherwise we have unclosed parentheses. */
 5009|       |
 5010|    310|if (parsed_pattern >= parsed_pattern_end)
  ------------------
  |  Branch (5010:5): [True: 0, False: 310]
  ------------------
 5011|      0|  {
 5012|      0|  errorcode = ERR63;  /* Internal error (parsed pattern overflow) */
 5013|      0|  goto FAILED;
 5014|      0|  }
 5015|       |
 5016|    310|*parsed_pattern = META_END;
  ------------------
  |  |  211|    310|#define META_END              0x80000000u  /* End of pattern */
  ------------------
 5017|    310|if (nest_depth == 0) return 0;
  ------------------
  |  Branch (5017:5): [True: 308, False: 2]
  ------------------
 5018|       |
 5019|      3|UNCLOSED_PARENTHESIS:
 5020|      3|errorcode = ERR14;
 5021|       |
 5022|       |/* Come here for all failures. */
 5023|       |
 5024|     32|FAILED:
 5025|     32|cb->erroroffset = (PCRE2_SIZE)(ptr - cb->start_pattern);
 5026|     32|return errorcode;
 5027|       |
 5028|       |/* Some errors need to indicate the previous character. */
 5029|       |
 5030|      1|FAILED_BACK:
 5031|      1|ptr--;
 5032|      1|goto FAILED;
 5033|       |
 5034|       |/* This failure happens several times. */
 5035|       |
 5036|      0|BAD_VERSION_CONDITION:
 5037|      0|errorcode = ERR79;
 5038|      0|goto FAILED;
 5039|      3|}
pcre2_compile.c:manage_callouts:
 2597|  11.6k|{
 2598|  11.6k|uint32_t *previous_callout = *pcalloutptr;
 2599|       |
 2600|  11.6k|if (previous_callout != NULL) previous_callout[2] = (uint32_t)(ptr -
  ------------------
  |  Branch (2600:5): [True: 0, False: 11.6k]
  ------------------
 2601|      0|  cb->start_pattern - (PCRE2_SIZE)previous_callout[1]);
 2602|       |
 2603|  11.6k|if (!auto_callout) previous_callout = NULL; else
  ------------------
  |  Branch (2603:5): [True: 11.6k, False: 0]
  ------------------
 2604|      0|  {
 2605|      0|  if (previous_callout == NULL ||
  ------------------
  |  Branch (2605:7): [True: 0, False: 0]
  ------------------
 2606|      0|      previous_callout != parsed_pattern - 4 ||
  ------------------
  |  Branch (2606:7): [True: 0, False: 0]
  ------------------
 2607|      0|      previous_callout[3] != 255)
  ------------------
  |  Branch (2607:7): [True: 0, False: 0]
  ------------------
 2608|      0|    {
 2609|      0|    previous_callout = parsed_pattern;  /* Set up new automatic callout */
 2610|      0|    parsed_pattern += 4;
 2611|      0|    previous_callout[0] = META_CALLOUT_NUMBER;
  ------------------
  |  |  218|      0|#define META_CALLOUT_NUMBER   0x80060000u  /* (?C with numerical argument */
  ------------------
 2612|      0|    previous_callout[2] = 0;
 2613|      0|    previous_callout[3] = 255;
 2614|      0|    }
 2615|      0|  previous_callout[1] = (uint32_t)(ptr - cb->start_pattern);
 2616|      0|  }
 2617|       |
 2618|  11.6k|*pcalloutptr = previous_callout;
 2619|  11.6k|return parsed_pattern;
 2620|  11.6k|}
pcre2_compile.c:handle_escdsw:
 2644|    216|{
 2645|    216|uint32_t ascii_option = 0;
 2646|    216|uint32_t prop = ESC_p;
 2647|       |
 2648|    216|switch(escape)
  ------------------
  |  Branch (2648:8): [True: 216, False: 0]
  ------------------
 2649|    216|  {
 2650|     20|  case ESC_D:
  ------------------
  |  Branch (2650:3): [True: 20, False: 196]
  ------------------
 2651|     20|  prop = ESC_P;
 2652|       |  /* Fall through */
 2653|     56|  case ESC_d:
  ------------------
  |  Branch (2653:3): [True: 36, False: 180]
  ------------------
 2654|     56|  ascii_option = PCRE2_EXTRA_ASCII_BSD;
  ------------------
  |  |  157|     56|#define PCRE2_EXTRA_ASCII_BSD                0x00000100u  /* C */
  ------------------
 2655|     56|  break;
 2656|       |
 2657|     49|  case ESC_S:
  ------------------
  |  Branch (2657:3): [True: 49, False: 167]
  ------------------
 2658|     49|  prop = ESC_P;
 2659|       |  /* Fall through */
 2660|     75|  case ESC_s:
  ------------------
  |  Branch (2660:3): [True: 26, False: 190]
  ------------------
 2661|     75|  ascii_option = PCRE2_EXTRA_ASCII_BSS;
  ------------------
  |  |  158|     75|#define PCRE2_EXTRA_ASCII_BSS                0x00000200u  /* C */
  ------------------
 2662|     75|  break;
 2663|       |
 2664|     16|  case ESC_W:
  ------------------
  |  Branch (2664:3): [True: 16, False: 200]
  ------------------
 2665|     16|  prop = ESC_P;
 2666|       |  /* Fall through */
 2667|     85|  case ESC_w:
  ------------------
  |  Branch (2667:3): [True: 69, False: 147]
  ------------------
 2668|     85|  ascii_option = PCRE2_EXTRA_ASCII_BSW;
  ------------------
  |  |  159|     85|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  ------------------
 2669|     85|  break;
 2670|    216|  }
 2671|       |
 2672|    216|if ((options & PCRE2_UCP) == 0 || (xoptions & ascii_option) != 0)
  ------------------
  |  |  136|    216|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (2672:5): [True: 117, False: 99]
  |  Branch (2672:35): [True: 0, False: 99]
  ------------------
 2673|    117|  {
 2674|    117|  *parsed_pattern++ = META_ESCAPE + escape;
  ------------------
  |  |  236|    117|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 2675|    117|  }
 2676|     99|else
 2677|     99|  {
 2678|     99|  *parsed_pattern++ = META_ESCAPE + prop;
  ------------------
  |  |  236|     99|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
 2679|     99|  switch(escape)
  ------------------
  |  Branch (2679:10): [True: 99, False: 0]
  ------------------
 2680|     99|    {
 2681|     14|    case ESC_d:
  ------------------
  |  Branch (2681:5): [True: 14, False: 85]
  ------------------
 2682|     18|    case ESC_D:
  ------------------
  |  Branch (2682:5): [True: 4, False: 95]
  ------------------
 2683|     18|    *parsed_pattern++ = (PT_PC << 16) | ucp_Nd;
  ------------------
  |  | 1296|     18|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
 2684|     18|    break;
 2685|       |
 2686|      2|    case ESC_s:
  ------------------
  |  Branch (2686:5): [True: 2, False: 97]
  ------------------
 2687|     46|    case ESC_S:
  ------------------
  |  Branch (2687:5): [True: 44, False: 55]
  ------------------
 2688|     46|    *parsed_pattern++ = PT_SPACE << 16;
  ------------------
  |  | 1300|     46|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
 2689|     46|    break;
 2690|       |
 2691|     26|    case ESC_w:
  ------------------
  |  Branch (2691:5): [True: 26, False: 73]
  ------------------
 2692|     35|    case ESC_W:
  ------------------
  |  Branch (2692:5): [True: 9, False: 90]
  ------------------
 2693|     35|    *parsed_pattern++ = PT_WORD << 16;
  ------------------
  |  | 1302|     35|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
 2694|     35|    break;
 2695|     99|    }
 2696|     99|  }
 2697|       |
 2698|    216|return parsed_pattern;
 2699|    216|}
pcre2_compile.c:get_ucp:
 2169|     17|{
 2170|     17|PCRE2_UCHAR c;
  ------------------
  |  |  819|     17|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|     17|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     17|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     17|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2171|     17|PCRE2_SIZE i, bot, top;
  ------------------
  |  |  479|     17|#define PCRE2_SIZE            size_t
  ------------------
 2172|     17|PCRE2_SPTR ptr = *ptrptr;
  ------------------
  |  |  820|     17|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|     17|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     17|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     17|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2173|     17|PCRE2_UCHAR name[50];
  ------------------
  |  |  819|     17|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|     17|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     17|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     17|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2174|     17|PCRE2_UCHAR *vptr = NULL;
  ------------------
  |  |  819|     17|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|     17|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     17|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     17|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2175|     17|uint16_t ptscript = PT_NOTSCRIPT;
  ------------------
  |  | 1323|     17|#define PT_NOTSCRIPT 255
  ------------------
 2176|       |
 2177|     17|if (ptr >= cb->end_pattern) goto ERROR_RETURN;
  ------------------
  |  Branch (2177:5): [True: 1, False: 16]
  ------------------
 2178|     16|c = *ptr++;
 2179|     16|*negptr = FALSE;
  ------------------
  |  |   87|     16|#define FALSE   0
  ------------------
 2180|       |
 2181|       |/* \P or \p can be followed by a name in {}, optionally preceded by ^ for
 2182|       |negation. */
 2183|       |
 2184|     16|if (c == CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|     16|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (2184:5): [True: 2, False: 14]
  ------------------
 2185|      2|  {
 2186|      2|  if (ptr >= cb->end_pattern) goto ERROR_RETURN;
  ------------------
  |  Branch (2186:7): [True: 0, False: 2]
  ------------------
 2187|       |
 2188|      2|  if (*ptr == CHAR_CIRCUMFLEX_ACCENT)
  ------------------
  |  | 1062|      2|#define CHAR_CIRCUMFLEX_ACCENT      '\136'
  ------------------
  |  Branch (2188:7): [True: 0, False: 2]
  ------------------
 2189|      0|    {
 2190|      0|    *negptr = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 2191|      0|    ptr++;
 2192|      0|    }
 2193|       |
 2194|     11|  for (i = 0; i < (int)(sizeof(name) / sizeof(PCRE2_UCHAR)) - 1; i++)
  ------------------
  |  Branch (2194:15): [True: 11, False: 0]
  ------------------
 2195|     11|    {
 2196|     11|    if (ptr >= cb->end_pattern) goto ERROR_RETURN;
  ------------------
  |  Branch (2196:9): [True: 1, False: 10]
  ------------------
 2197|     10|    c = *ptr++;
 2198|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 2199|       |    while (c == '_' || c == '-' || (c <= 0xff && isspace(c)))
 2200|       |#else
 2201|     15|    while (c == '_' || c == '-' || isspace(c))
  ------------------
  |  Branch (2201:12): [True: 0, False: 15]
  |  Branch (2201:24): [True: 2, False: 13]
  |  Branch (2201:36): [True: 3, False: 10]
  ------------------
 2202|      5|#endif
 2203|      5|      {
 2204|      5|      if (ptr >= cb->end_pattern) goto ERROR_RETURN;
  ------------------
  |  Branch (2204:11): [True: 0, False: 5]
  ------------------
 2205|      5|      c = *ptr++;
 2206|      5|      }
 2207|     10|    if (c == CHAR_NUL) goto ERROR_RETURN;
  ------------------
  |  |  999|     10|#define CHAR_NUL                    '\0'
  ------------------
  |  Branch (2207:9): [True: 0, False: 10]
  ------------------
 2208|     10|    if (c == CHAR_RIGHT_CURLY_BRACKET) break;
  ------------------
  |  | 1093|     10|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (2208:9): [True: 1, False: 9]
  ------------------
 2209|      9|    name[i] = tolower(c);
  ------------------
  |  Branch (2209:15): [True: 0, False: 0]
  |  Branch (2209:15): [True: 0, False: 0]
  |  Branch (2209:15): [Folded, False: 9]
  ------------------
 2210|      9|    if ((c == ':' || c == '=') && vptr == NULL) vptr = name + i;
  ------------------
  |  Branch (2210:10): [True: 0, False: 9]
  |  Branch (2210:22): [True: 0, False: 9]
  |  Branch (2210:35): [True: 0, False: 0]
  ------------------
 2211|      9|    }
 2212|       |
 2213|      1|  if (c != CHAR_RIGHT_CURLY_BRACKET) goto ERROR_RETURN;
  ------------------
  |  | 1093|      1|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
  |  Branch (2213:7): [True: 0, False: 1]
  ------------------
 2214|      1|  name[i] = 0;
 2215|      1|  }
 2216|       |
 2217|       |/* If { doesn't follow \p or \P there is just one following character, which
 2218|       |must be an ASCII letter. */
 2219|       |
 2220|     14|else if (MAX_255(c) && (cb->ctypes[c] & ctype_letter) != 0)
  ------------------
  |  |  212|     14|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|     28|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 14, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              else if (MAX_255(c) && (cb->ctypes[c] & ctype_letter) != 0)
  ------------------
  |  |  598|     14|#define ctype_letter   0x02
  ------------------
  |  Branch (2220:24): [True: 12, False: 2]
  ------------------
 2221|     12|  {
 2222|     12|  name[0] = tolower(c);
  ------------------
  |  Branch (2222:13): [True: 0, False: 0]
  |  Branch (2222:13): [True: 0, False: 0]
  |  Branch (2222:13): [Folded, False: 12]
  ------------------
 2223|     12|  name[1] = 0;
 2224|     12|  }
 2225|      2|else goto ERROR_RETURN;
 2226|       |
 2227|     13|*ptrptr = ptr;
 2228|       |
 2229|       |/* If the property contains ':' or '=' we have class name and value separately
 2230|       |specified. The following are supported:
 2231|       |
 2232|       |  . Bidi_Class (synonym bc), for which the property names are "bidi<name>".
 2233|       |  . Script (synonym sc) for which the property name is the script name
 2234|       |  . Script_Extensions (synonym scx), ditto
 2235|       |
 2236|       |As this is a small number, we currently just check the names directly. If this
 2237|       |grows, a sorted table and a switch will be neater.
 2238|       |
 2239|       |For both the script properties, set a PT_xxx value so that (1) they can be
 2240|       |distinguished and (2) invalid script names that happen to be the name of
 2241|       |another property can be diagnosed. */
 2242|       |
 2243|     13|if (vptr != NULL)
  ------------------
  |  Branch (2243:5): [True: 0, False: 13]
  ------------------
 2244|      0|  {
 2245|      0|  int offset = 0;
 2246|      0|  PCRE2_UCHAR sname[8];
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2247|       |
 2248|      0|  *vptr = 0;   /* Terminate property name */
 2249|      0|  if (PRIV(strcmp_c8)(name, STRING_bidiclass) == 0 ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|      0|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (PRIV(strcmp_c8)(name, STRING_bidiclass) == 0 ||
  ------------------
  |  | 1276|      0|#define STRING_bidiclass                  STR_b STR_i STR_d STR_i STR_c STR_l STR_a STR_s STR_s
  |  |  ------------------
  |  |  |  | 1173|      0|#define STR_b                       "\142"
  |  |  ------------------
  |  |               #define STRING_bidiclass                  STR_b STR_i STR_d STR_i STR_c STR_l STR_a STR_s STR_s
  |  |  ------------------
  |  |  |  | 1190|      0|#define STR_s                       "\163"
  |  |  ------------------
  ------------------
  |  Branch (2249:7): [True: 0, False: 0]
  ------------------
 2250|      0|      PRIV(strcmp_c8)(name, STRING_bc) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|      0|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    PRIV(strcmp_c8)(name, STRING_bc) == 0)
  ------------------
  |  | 1275|      0|#define STRING_bc                         STR_b STR_c
  |  |  ------------------
  |  |  |  | 1173|      0|#define STR_b                       "\142"
  |  |  ------------------
  |  |               #define STRING_bc                         STR_b STR_c
  |  |  ------------------
  |  |  |  | 1174|      0|#define STR_c                       "\143"
  |  |  ------------------
  ------------------
  |  Branch (2250:7): [True: 0, False: 0]
  ------------------
 2251|      0|    {
 2252|      0|    offset = 4;
 2253|      0|    sname[0] = CHAR_b;
  ------------------
  |  | 1066|      0|#define CHAR_b                      '\142'
  ------------------
 2254|      0|    sname[1] = CHAR_i;  /* There is no strcpy_c8 function */
  ------------------
  |  | 1073|      0|#define CHAR_i                      '\151'
  ------------------
 2255|      0|    sname[2] = CHAR_d;
  ------------------
  |  | 1068|      0|#define CHAR_d                      '\144'
  ------------------
 2256|      0|    sname[3] = CHAR_i;
  ------------------
  |  | 1073|      0|#define CHAR_i                      '\151'
  ------------------
 2257|      0|    }
 2258|       |
 2259|      0|  else if (PRIV(strcmp_c8)(name, STRING_script) == 0 ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|      0|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                else if (PRIV(strcmp_c8)(name, STRING_script) == 0 ||
  ------------------
  |  | 1278|      0|#define STRING_script                     STR_s STR_c STR_r STR_i STR_p STR_t
  |  |  ------------------
  |  |  |  | 1190|      0|#define STR_s                       "\163"
  |  |  ------------------
  |  |               #define STRING_script                     STR_s STR_c STR_r STR_i STR_p STR_t
  |  |  ------------------
  |  |  |  | 1191|      0|#define STR_t                       "\164"
  |  |  ------------------
  ------------------
  |  Branch (2259:12): [True: 0, False: 0]
  ------------------
 2260|      0|           PRIV(strcmp_c8)(name, STRING_sc) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|      0|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                         PRIV(strcmp_c8)(name, STRING_sc) == 0)
  ------------------
  |  | 1277|      0|#define STRING_sc                         STR_s STR_c
  |  |  ------------------
  |  |  |  | 1190|      0|#define STR_s                       "\163"
  |  |  ------------------
  |  |               #define STRING_sc                         STR_s STR_c
  |  |  ------------------
  |  |  |  | 1174|      0|#define STR_c                       "\143"
  |  |  ------------------
  ------------------
  |  Branch (2260:12): [True: 0, False: 0]
  ------------------
 2261|      0|    ptscript = PT_SC;
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
 2262|       |
 2263|      0|  else if (PRIV(strcmp_c8)(name, STRING_scriptextensions) == 0 ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|      0|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                else if (PRIV(strcmp_c8)(name, STRING_scriptextensions) == 0 ||
  ------------------
  |  | 1279|      0|#define STRING_scriptextensions           STR_s STR_c STR_r STR_i STR_p STR_t STR_e STR_x STR_t STR_e STR_n STR_s STR_i STR_o STR_n STR_s
  |  |  ------------------
  |  |  |  | 1190|      0|#define STR_s                       "\163"
  |  |  ------------------
  |  |               #define STRING_scriptextensions           STR_s STR_c STR_r STR_i STR_p STR_t STR_e STR_x STR_t STR_e STR_n STR_s STR_i STR_o STR_n STR_s
  |  |  ------------------
  |  |  |  | 1190|      0|#define STR_s                       "\163"
  |  |  ------------------
  ------------------
  |  Branch (2263:12): [True: 0, False: 0]
  ------------------
 2264|      0|           PRIV(strcmp_c8)(name, STRING_scx) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|      0|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                         PRIV(strcmp_c8)(name, STRING_scx) == 0)
  ------------------
  |  | 1280|      0|#define STRING_scx                        STR_s STR_c STR_x
  |  |  ------------------
  |  |  |  | 1190|      0|#define STR_s                       "\163"
  |  |  ------------------
  |  |               #define STRING_scx                        STR_s STR_c STR_x
  |  |  ------------------
  |  |  |  | 1195|      0|#define STR_x                       "\170"
  |  |  ------------------
  ------------------
  |  Branch (2264:12): [True: 0, False: 0]
  ------------------
 2265|      0|    ptscript = PT_SCX;
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
 2266|       |
 2267|      0|  else
 2268|      0|    {
 2269|      0|    *errorcodeptr = ERR47;
 2270|      0|    return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 2271|      0|    }
 2272|       |
 2273|       |  /* Adjust the string in name[] as needed */
 2274|       |
 2275|      0|  memmove(name + offset, vptr + 1, (name + i - vptr)*sizeof(PCRE2_UCHAR));
 2276|      0|  if (offset != 0) memmove(name, sname, offset*sizeof(PCRE2_UCHAR));
  ------------------
  |  Branch (2276:7): [True: 0, False: 0]
  ------------------
 2277|      0|  }
 2278|       |
 2279|       |/* Search for a recognized property using binary chop. */
 2280|       |
 2281|     13|bot = 0;
 2282|     13|top = PRIV(utt_size);
  ------------------
  |  |  195|     13|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1969|     13|#define _pcre2_utt_size                PCRE2_SUFFIX(_pcre2_utt_size_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     13|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     13|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     13|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2283|       |
 2284|     94|while (bot < top)
  ------------------
  |  Branch (2284:8): [True: 93, False: 1]
  ------------------
 2285|     93|  {
 2286|     93|  int r;
 2287|     93|  i = (bot + top) >> 1;
 2288|     93|  r = PRIV(strcmp_c8)(name, PRIV(utt_names) + PRIV(utt)[i].name_offset);
  ------------------
  |  |  195|     93|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2033|     93|#define _pcre2_strcmp_c8             PCRE2_SUFFIX(_pcre2_strcmp_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     93|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     93|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     93|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                r = PRIV(strcmp_c8)(name, PRIV(utt_names) + PRIV(utt)[i].name_offset);
  ------------------
  |  |  195|     93|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1968|     93|#define _pcre2_utt_names               PCRE2_SUFFIX(_pcre2_utt_names_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     93|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     93|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     93|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                r = PRIV(strcmp_c8)(name, PRIV(utt_names) + PRIV(utt)[i].name_offset);
  ------------------
  |  |  195|     93|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1967|     93|#define _pcre2_utt                     PCRE2_SUFFIX(_pcre2_utt_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     93|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     93|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     93|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2289|       |
 2290|       |  /* When a matching property is found, some extra checking is needed when the
 2291|       |  \p{xx:yy} syntax is used and xx is either sc or scx. */
 2292|       |
 2293|     93|  if (r == 0)
  ------------------
  |  Branch (2293:7): [True: 12, False: 81]
  ------------------
 2294|     12|    {
 2295|     12|    *pdataptr = PRIV(utt)[i].value;
  ------------------
  |  |  195|     12|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1967|     12|#define _pcre2_utt                     PCRE2_SUFFIX(_pcre2_utt_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     12|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     12|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     12|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2296|     12|    if (vptr == NULL || ptscript == PT_NOTSCRIPT)
  ------------------
  |  | 1323|      0|#define PT_NOTSCRIPT 255
  ------------------
  |  Branch (2296:9): [True: 12, False: 0]
  |  Branch (2296:25): [True: 0, False: 0]
  ------------------
 2297|     12|      {
 2298|     12|      *ptypeptr = PRIV(utt)[i].type;
  ------------------
  |  |  195|     12|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1967|     12|#define _pcre2_utt                     PCRE2_SUFFIX(_pcre2_utt_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     12|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     12|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     12|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2299|     12|      return TRUE;
  ------------------
  |  |   88|     12|#define TRUE    1
  ------------------
 2300|     12|      }
 2301|       |
 2302|      0|    switch (PRIV(utt)[i].type)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1967|      0|#define _pcre2_utt                     PCRE2_SUFFIX(_pcre2_utt_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2302:13): [True: 0, False: 0]
  ------------------
 2303|      0|      {
 2304|      0|      case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (2304:7): [True: 0, False: 0]
  ------------------
 2305|      0|      *ptypeptr = PT_SC;
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
 2306|      0|      return TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 2307|       |
 2308|      0|      case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (2308:7): [True: 0, False: 0]
  ------------------
 2309|      0|      *ptypeptr = ptscript;
 2310|      0|      return TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 2311|      0|      }
 2312|       |
 2313|      0|    break;  /* Non-script found */
 2314|      0|    }
 2315|       |
 2316|     81|  if (r > 0) bot = i + 1; else top = i;
  ------------------
  |  Branch (2316:7): [True: 50, False: 31]
  ------------------
 2317|     81|  }
 2318|       |
 2319|      1|*errorcodeptr = ERR47;   /* Unrecognized property */
 2320|      1|return FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
 2321|       |
 2322|      4|ERROR_RETURN:            /* Malformed \P or \p */
 2323|      4|*errorcodeptr = ERR46;
 2324|      4|*ptrptr = ptr;
 2325|      4|return FALSE;
  ------------------
  |  |   87|      4|#define FALSE   0
  ------------------
 2326|     13|}
pcre2_compile.c:read_name:
 2467|      9|{
 2468|      9|PCRE2_SPTR ptr = *ptrptr;
  ------------------
  |  |  820|      9|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      9|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      9|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      9|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2469|      9|BOOL is_group = (*ptr++ != CHAR_ASTERISK);
  ------------------
  |  | 1010|      9|#define CHAR_ASTERISK               '\052'
  ------------------
 2470|      9|BOOL is_braced = terminator == CHAR_RIGHT_CURLY_BRACKET;
  ------------------
  |  | 1093|      9|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
 2471|       |
 2472|      9|if (is_braced)
  ------------------
  |  Branch (2472:5): [True: 4, False: 5]
  ------------------
 2473|      4|  while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  | 1000|      8|#define CHAR_SPACE                  '\040'
  ------------------
                while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  |  987|      4|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (2473:10): [True: 4, False: 0]
  |  Branch (2473:27): [True: 0, False: 4]
  |  Branch (2473:49): [True: 0, False: 4]
  ------------------
 2474|       |
 2475|      9|if (ptr >= ptrend)                 /* No characters in name */
  ------------------
  |  Branch (2475:5): [True: 0, False: 9]
  ------------------
 2476|      0|  {
 2477|      0|  *errorcodeptr = is_group? ERR62: /* Subpattern name expected */
  ------------------
  |  Branch (2477:19): [True: 0, False: 0]
  ------------------
 2478|      0|                            ERR60; /* Verb not recognized or malformed */
 2479|      0|  goto FAILED;
 2480|      0|  }
 2481|       |
 2482|      9|*nameptr = ptr;
 2483|      9|*offsetptr = (PCRE2_SIZE)(ptr - cb->start_pattern);
 2484|       |
 2485|       |/* In UTF mode, a group name may contain letters and decimal digits as defined
 2486|       |by Unicode properties, and underscores, but must not start with a digit. */
 2487|       |
 2488|      9|#ifdef SUPPORT_UNICODE
 2489|      9|if (utf && is_group)
  ------------------
  |  Branch (2489:5): [True: 7, False: 2]
  |  Branch (2489:12): [True: 6, False: 1]
  ------------------
 2490|      6|  {
 2491|      6|  uint32_t c, type;
 2492|       |
 2493|      6|  GETCHAR(c, ptr);
  ------------------
  |  |  302|      6|  c = *eptr; \
  |  |  303|      6|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      0|    { \
  |  |  |  |  285|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  286|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  288|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      0|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      0|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 2494|      6|  type = UCD_CHARTYPE(c);
  ------------------
  |  | 1884|      6|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|      6|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      6|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      6|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      6|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      6|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      6|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      6|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      6|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      6|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      6|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      6|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      6|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      6|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      6|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      6|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      6|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      6|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      6|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      6|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      6|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      6|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      6|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2495|       |
 2496|      6|  if (type == ucp_Nd)
  ------------------
  |  Branch (2496:7): [True: 0, False: 6]
  ------------------
 2497|      0|    {
 2498|      0|    *errorcodeptr = ERR44;
 2499|      0|    goto FAILED;
 2500|      0|    }
 2501|       |
 2502|      6|  for(;;)
 2503|     28|    {
 2504|     28|    if (type != ucp_Nd && PRIV(ucp_gentype)[type] != ucp_L &&
  ------------------
  |  |  195|     14|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     14|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     14|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     14|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     14|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2504:9): [True: 14, False: 14]
  |  Branch (2504:27): [True: 6, False: 8]
  ------------------
 2505|      6|        c != CHAR_UNDERSCORE) break;
  ------------------
  |  | 1063|      6|#define CHAR_UNDERSCORE             '\137'
  ------------------
  |  Branch (2505:9): [True: 6, False: 0]
  ------------------
 2506|     22|    ptr++;
 2507|     22|    FORWARDCHARTEST(ptr, ptrend);
  ------------------
  |  |  349|     22|#define FORWARDCHARTEST(eptr,end) while(eptr < end && (*eptr & 0xc0u) == 0x80u) eptr++
  |  |  ------------------
  |  |  |  Branch (349:41): [True: 22, False: 0]
  |  |  |  Branch (349:55): [True: 0, False: 22]
  |  |  ------------------
  ------------------
 2508|     22|    if (ptr >= ptrend) break;
  ------------------
  |  Branch (2508:9): [True: 0, False: 22]
  ------------------
 2509|     22|    GETCHAR(c, ptr);
  ------------------
  |  |  302|     22|  c = *eptr; \
  |  |  303|     22|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      0|    { \
  |  |  |  |  285|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  286|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  288|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      0|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      0|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 0, False: 22]
  |  |  ------------------
  ------------------
 2510|     22|    type = UCD_CHARTYPE(c);
  ------------------
  |  | 1884|     22|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|     22|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|     22|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     22|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|     22|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     22|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     22|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     22|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|     22|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     22|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|     22|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     22|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     22|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     22|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     22|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|     22|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     22|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     22|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     22|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     22|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|     22|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     22|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     22|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2511|     22|    }
 2512|      6|  }
 2513|      3|else
 2514|       |#else
 2515|       |(void)utf;  /* Avoid compiler warning */
 2516|       |#endif      /* SUPPORT_UNICODE */
 2517|       |
 2518|       |/* Handle non-group names and group names in non-UTF modes. A group name must
 2519|       |not start with a digit. If either of the others start with a digit it just
 2520|       |won't be recognized. */
 2521|       |
 2522|      3|  {
 2523|      3|  if (is_group && IS_DIGIT(*ptr))
  ------------------
  |  |  408|      0|#define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1016|      0|#define CHAR_0                      '\060'
  |  |  ------------------
  |  |               #define IS_DIGIT(x) ((x) >= CHAR_0 && (x) <= CHAR_9)
  |  |  ------------------
  |  |  |  | 1025|      0|#define CHAR_9                      '\071'
  |  |  ------------------
  |  |  |  Branch (408:22): [True: 0, False: 0]
  |  |  |  Branch (408:39): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2523:7): [True: 0, False: 3]
  ------------------
 2524|      0|    {
 2525|      0|    *errorcodeptr = ERR44;
 2526|      0|    goto FAILED;
 2527|      0|    }
 2528|       |
 2529|     32|  while (ptr < ptrend && MAX_255(*ptr) && (cb->ctypes[*ptr] & ctype_word) != 0)
  ------------------
  |  |  212|     31|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|     63|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                while (ptr < ptrend && MAX_255(*ptr) && (cb->ctypes[*ptr] & ctype_word) != 0)
  ------------------
  |  |  601|     31|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (2529:10): [True: 31, False: 1]
  |  Branch (2529:43): [True: 29, False: 2]
  ------------------
 2530|     29|    {
 2531|     29|    ptr++;
 2532|     29|    }
 2533|      3|  }
 2534|       |
 2535|       |/* Check name length */
 2536|       |
 2537|      9|if (ptr > *nameptr + MAX_NAME_SIZE)
  ------------------
  |  |   78|      9|#define MAX_NAME_SIZE 128
  ------------------
  |  Branch (2537:5): [True: 0, False: 9]
  ------------------
 2538|      0|  {
 2539|      0|  *errorcodeptr = ERR48;
 2540|      0|  goto FAILED;
 2541|      0|  }
 2542|      9|*namelenptr = (uint32_t)(ptr - *nameptr);
 2543|       |
 2544|       |/* Subpattern names must not be empty, and their terminator is checked here.
 2545|       |(What follows a verb or alpha assertion name is checked separately.) */
 2546|       |
 2547|      9|if (is_group)
  ------------------
  |  Branch (2547:5): [True: 6, False: 3]
  ------------------
 2548|      6|  {
 2549|      6|  if (ptr == *nameptr)
  ------------------
  |  Branch (2549:7): [True: 1, False: 5]
  ------------------
 2550|      1|    {
 2551|      1|    *errorcodeptr = ERR62;   /* Subpattern name expected */
 2552|      1|    goto FAILED;
 2553|      1|    }
 2554|      5|  if (is_braced)
  ------------------
  |  Branch (2554:7): [True: 4, False: 1]
  ------------------
 2555|     11|    while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  | 1000|     22|#define CHAR_SPACE                  '\040'
  ------------------
                  while (ptr < ptrend && (*ptr == CHAR_SPACE || *ptr == CHAR_HT)) ptr++;
  ------------------
  |  |  987|      5|#define CHAR_HT                     '\011'
  ------------------
  |  Branch (2555:12): [True: 11, False: 0]
  |  Branch (2555:29): [True: 6, False: 5]
  |  Branch (2555:51): [True: 1, False: 4]
  ------------------
 2556|      5|  if (ptr >= ptrend || *ptr != (PCRE2_UCHAR)terminator)
  ------------------
  |  Branch (2556:7): [True: 0, False: 5]
  |  Branch (2556:24): [True: 3, False: 2]
  ------------------
 2557|      3|    {
 2558|      3|    *errorcodeptr = ERR42;
 2559|      3|    goto FAILED;
 2560|      3|    }
 2561|      2|  ptr++;
 2562|      2|  }
 2563|       |
 2564|      5|*ptrptr = ptr;
 2565|      5|return TRUE;
  ------------------
  |  |   88|      5|#define TRUE    1
  ------------------
 2566|       |
 2567|      4|FAILED:
 2568|      4|*ptrptr = ptr;
 2569|      4|return FALSE;
  ------------------
  |  |   87|      4|#define FALSE   0
  ------------------
 2570|      9|}
pcre2_compile.c:check_posix_syntax:
 2378|      8|{
 2379|      8|PCRE2_UCHAR terminator;  /* Don't combine these lines; the Solaris cc */
  ------------------
  |  |  819|      8|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      8|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      8|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      8|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2380|      8|terminator = *ptr++;     /* compiler warns about "non-constant" initializer. */
 2381|       |
 2382|     99|for (; ptrend - ptr >= 2; ptr++)
  ------------------
  |  Branch (2382:8): [True: 96, False: 3]
  ------------------
 2383|     96|  {
 2384|     96|  if (*ptr == CHAR_BACKSLASH &&
  ------------------
  |  | 1060|    192|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (2384:7): [True: 3, False: 93]
  ------------------
 2385|      3|      (ptr[1] == CHAR_RIGHT_SQUARE_BRACKET || ptr[1] == CHAR_BACKSLASH))
  ------------------
  |  | 1061|      6|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
                    (ptr[1] == CHAR_RIGHT_SQUARE_BRACKET || ptr[1] == CHAR_BACKSLASH))
  ------------------
  |  | 1060|      3|#define CHAR_BACKSLASH              '\134'
  ------------------
  |  Branch (2385:8): [True: 0, False: 3]
  |  Branch (2385:47): [True: 0, False: 3]
  ------------------
 2386|      0|    ptr++;
 2387|       |
 2388|     96|  else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) ||
  ------------------
  |  | 1059|    192|#define CHAR_LEFT_SQUARE_BRACKET    '\133'
  ------------------
  |  Branch (2388:13): [True: 0, False: 96]
  |  Branch (2388:49): [True: 0, False: 0]
  ------------------
 2389|     96|            *ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE;
  ------------------
  |  | 1061|     96|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
                          *ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE;
  ------------------
  |  |   87|      5|#define FALSE   0
  ------------------
  |  Branch (2389:13): [True: 5, False: 91]
  ------------------
 2390|       |
 2391|     91|  else if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)
  ------------------
  |  | 1061|      6|#define CHAR_RIGHT_SQUARE_BRACKET   '\135'
  ------------------
  |  Branch (2391:12): [True: 6, False: 85]
  |  Branch (2391:34): [True: 0, False: 6]
  ------------------
 2392|      0|    {
 2393|      0|    *endptr = ptr;
 2394|      0|    return TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 2395|      0|    }
 2396|     96|  }
 2397|       |
 2398|      3|return FALSE;
  ------------------
  |  |   87|      3|#define FALSE   0
  ------------------
 2399|      8|}
pcre2_compile.c:compile_regex:
 8383|    640|{
 8384|    640|PCRE2_UCHAR *code = *codeptr;
  ------------------
  |  |  819|    640|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    640|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    640|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    640|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8385|    640|PCRE2_UCHAR *last_branch = code;
  ------------------
  |  |  819|    640|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    640|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    640|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    640|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8386|    640|PCRE2_UCHAR *start_bracket = code;
  ------------------
  |  |  819|    640|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    640|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    640|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    640|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8387|    640|BOOL lookbehind;
 8388|    640|open_capitem capitem;
 8389|    640|int capnumber = 0;
 8390|    640|int okreturn = 1;
 8391|    640|uint32_t *pptr = *pptrptr;
 8392|    640|uint32_t firstcu, reqcu;
 8393|    640|uint32_t lookbehindlength;
 8394|    640|uint32_t lookbehindminlength;
 8395|    640|uint32_t firstcuflags, reqcuflags;
 8396|    640|uint32_t branchfirstcu, branchreqcu;
 8397|    640|uint32_t branchfirstcuflags, branchreqcuflags;
 8398|    640|PCRE2_SIZE length;
  ------------------
  |  |  479|    640|#define PCRE2_SIZE            size_t
  ------------------
 8399|    640|branch_chain bc;
  ------------------
  |  | 2006|    640|#define branch_chain                 PCRE2_SUFFIX(branch_chain_)
  |  |  ------------------
  |  |  |  |  994|    640|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    640|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    640|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8400|       |
 8401|       |/* If set, call the external function that checks for stack availability. */
 8402|       |
 8403|    640|if (cb->cx->stack_guard != NULL &&
  ------------------
  |  Branch (8403:5): [True: 0, False: 640]
  ------------------
 8404|      0|    cb->cx->stack_guard(cb->parens_depth, cb->cx->stack_guard_data))
  ------------------
  |  Branch (8404:5): [True: 0, False: 0]
  ------------------
 8405|      0|  {
 8406|      0|  *errorcodeptr= ERR33;
 8407|      0|  return 0;
 8408|      0|  }
 8409|       |
 8410|       |/* Miscellaneous initialization */
 8411|       |
 8412|    640|bc.outer = bcptr;
 8413|    640|bc.current_branch = code;
 8414|       |
 8415|    640|firstcu = reqcu = 0;
 8416|    640|firstcuflags = reqcuflags = REQ_UNSET;
  ------------------
  |  |  393|    640|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
 8417|       |
 8418|       |/* Accumulate the length for use in the pre-compile phase. Start with the
 8419|       |length of the BRA and KET and any extra code units that are required at the
 8420|       |beginning. We accumulate in a local variable to save frequent testing of
 8421|       |lengthptr for NULL. We cannot do this by looking at the value of 'code' at the
 8422|       |start and end of each alternative, because compiled items are discarded during
 8423|       |the pre-compile phase so that the workspace is not exceeded. */
 8424|       |
 8425|    640|length = 2 + 2*LINK_SIZE + skipunits;
  ------------------
  |  |   98|    640|#define LINK_SIZE 2
  ------------------
 8426|       |
 8427|       |/* Remember if this is a lookbehind assertion, and if it is, save its length
 8428|       |and skip over the pattern offset. */
 8429|       |
 8430|    640|lookbehind = *code == OP_ASSERTBACK ||
  ------------------
  |  Branch (8430:14): [True: 0, False: 640]
  ------------------
 8431|    640|             *code == OP_ASSERTBACK_NOT ||
  ------------------
  |  Branch (8431:14): [True: 0, False: 640]
  ------------------
 8432|    640|             *code == OP_ASSERTBACK_NA;
  ------------------
  |  Branch (8432:14): [True: 0, False: 640]
  ------------------
 8433|       |
 8434|    640|if (lookbehind)
  ------------------
  |  Branch (8434:5): [True: 0, False: 640]
  ------------------
 8435|      0|  {
 8436|      0|  lookbehindlength = META_DATA(pptr[-1]);
  ------------------
  |  |  114|      0|#define META_DATA(x)   (x & 0x0000ffffu)
  ------------------
 8437|      0|  lookbehindminlength = *pptr;
 8438|      0|  pptr += SIZEOFFSET;
  ------------------
  |  |  108|      0|#define SIZEOFFSET 2
  ------------------
 8439|      0|  }
 8440|    640|else lookbehindlength = lookbehindminlength = 0;
 8441|       |
 8442|       |/* If this is a capturing subpattern, add to the chain of open capturing items
 8443|       |so that we can detect them if (*ACCEPT) is encountered. Note that only OP_CBRA
 8444|       |need be tested here; changing this opcode to one of its variants, e.g.
 8445|       |OP_SCBRAPOS, happens later, after the group has been compiled. */
 8446|       |
 8447|    640|if (*code == OP_CBRA)
  ------------------
  |  Branch (8447:5): [True: 28, False: 612]
  ------------------
 8448|     28|  {
 8449|     28|  capnumber = GET2(code, 1 + LINK_SIZE);
  ------------------
  |  |  194|     28|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 8450|     28|  capitem.number = capnumber;
 8451|     28|  capitem.next = open_caps;
 8452|     28|  capitem.assert_depth = cb->assert_depth;
 8453|     28|  open_caps = &capitem;
 8454|     28|  }
 8455|       |
 8456|       |/* Offset is set zero to mark that this bracket is still open */
 8457|       |
 8458|    640|PUT(code, 1, 0);
  ------------------
  |  |  106|    640|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|    640|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 8459|    640|code += 1 + LINK_SIZE + skipunits;
  ------------------
  |  |   98|    640|#define LINK_SIZE 2
  ------------------
 8460|       |
 8461|       |/* Loop for each alternative branch */
 8462|       |
 8463|    640|for (;;)
 8464|  1.38k|  {
 8465|  1.38k|  int branch_return;
 8466|       |
 8467|       |  /* Insert OP_REVERSE or OP_VREVERSE if this is a lookbehind assertion. There
 8468|       |  is only a single mimimum length for the whole assertion. When the mimimum
 8469|       |  length is LOOKBEHIND_MAX it means that all branches are of fixed length,
 8470|       |  though not necessarily the same length. In this case, the original OP_REVERSE
 8471|       |  can be used. It can also be used if a branch in a variable length lookbehind
 8472|       |  has the same maximum and minimum. Otherwise, use OP_VREVERSE, which has both
 8473|       |  maximum and minimum values. */
 8474|       |
 8475|  1.38k|  if (lookbehind && lookbehindlength > 0)
  ------------------
  |  Branch (8475:7): [True: 0, False: 1.38k]
  |  Branch (8475:21): [True: 0, False: 0]
  ------------------
 8476|      0|    {
 8477|      0|    if (lookbehindminlength == LOOKBEHIND_MAX ||
  ------------------
  |  |  618|      0|#define LOOKBEHIND_MAX UINT16_MAX
  ------------------
  |  Branch (8477:9): [True: 0, False: 0]
  ------------------
 8478|      0|        lookbehindminlength == lookbehindlength)
  ------------------
  |  Branch (8478:9): [True: 0, False: 0]
  ------------------
 8479|      0|      {
 8480|      0|      *code++ = OP_REVERSE;
 8481|      0|      PUT2INC(code, 0, lookbehindlength);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 8482|      0|      length += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 8483|      0|      }
 8484|      0|    else
 8485|      0|      {
 8486|      0|      *code++ = OP_VREVERSE;
 8487|      0|      PUT2INC(code, 0, lookbehindminlength);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 8488|      0|      PUT2INC(code, 0, lookbehindlength);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 8489|      0|      length += 1 + 2*IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 8490|      0|      }
 8491|      0|    }
 8492|       |
 8493|       |  /* Now compile the branch; in the pre-compile phase its length gets added
 8494|       |  into the length. */
 8495|       |
 8496|  1.38k|  if ((branch_return =
  ------------------
  |  Branch (8496:7): [True: 10, False: 1.37k]
  ------------------
 8497|  1.38k|        compile_branch(&options, &xoptions, &code, &pptr, errorcodeptr,
 8498|  1.38k|          &branchfirstcu, &branchfirstcuflags, &branchreqcu, &branchreqcuflags,
 8499|  1.38k|          &bc, open_caps, cb, (lengthptr == NULL)? NULL : &length)) == 0)
  ------------------
  |  Branch (8499:31): [True: 687, False: 700]
  ------------------
 8500|     10|    return 0;
 8501|       |
 8502|       |  /* If a branch can match an empty string, so can the whole group. */
 8503|       |
 8504|  1.37k|  if (branch_return < 0) okreturn = -1;
  ------------------
  |  Branch (8504:7): [True: 156, False: 1.22k]
  ------------------
 8505|       |
 8506|       |  /* In the real compile phase, there is some post-processing to be done. */
 8507|       |
 8508|  1.37k|  if (lengthptr == NULL)
  ------------------
  |  Branch (8508:7): [True: 687, False: 690]
  ------------------
 8509|    687|    {
 8510|       |    /* If this is the first branch, the firstcu and reqcu values for the
 8511|       |    branch become the values for the regex. */
 8512|       |
 8513|    687|    if (*last_branch != OP_ALT)
  ------------------
  |  Branch (8513:9): [True: 315, False: 372]
  ------------------
 8514|    315|      {
 8515|    315|      firstcu = branchfirstcu;
 8516|    315|      firstcuflags = branchfirstcuflags;
 8517|    315|      reqcu = branchreqcu;
 8518|    315|      reqcuflags = branchreqcuflags;
 8519|    315|      }
 8520|       |
 8521|       |    /* If this is not the first branch, the first char and reqcu have to
 8522|       |    match the values from all the previous branches, except that if the
 8523|       |    previous value for reqcu didn't have REQ_VARY set, it can still match,
 8524|       |    and we set REQ_VARY for the group from this branch's value. */
 8525|       |
 8526|    372|    else
 8527|    372|      {
 8528|       |      /* If we previously had a firstcu, but it doesn't match the new branch,
 8529|       |      we have to abandon the firstcu for the regex, but if there was
 8530|       |      previously no reqcu, it takes on the value of the old firstcu. */
 8531|       |
 8532|    372|      if (firstcuflags != branchfirstcuflags || firstcu != branchfirstcu)
  ------------------
  |  Branch (8532:11): [True: 229, False: 143]
  |  Branch (8532:49): [True: 66, False: 77]
  ------------------
 8533|    295|        {
 8534|    295|        if (firstcuflags < REQ_NONE)
  ------------------
  |  |  394|    295|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8534:13): [True: 113, False: 182]
  ------------------
 8535|    113|          {
 8536|    113|          if (reqcuflags >= REQ_NONE)
  ------------------
  |  |  394|    113|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8536:15): [True: 2, False: 111]
  ------------------
 8537|      2|            {
 8538|      2|            reqcu = firstcu;
 8539|      2|            reqcuflags = firstcuflags;
 8540|      2|            }
 8541|    113|          }
 8542|    295|        firstcuflags = REQ_NONE;
  ------------------
  |  |  394|    295|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 8543|    295|        }
 8544|       |
 8545|       |      /* If we (now or from before) have no firstcu, a firstcu from the
 8546|       |      branch becomes a reqcu if there isn't a branch reqcu. */
 8547|       |
 8548|    372|      if (firstcuflags >= REQ_NONE && branchfirstcuflags < REQ_NONE &&
  ------------------
  |  |  394|    744|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
                    if (firstcuflags >= REQ_NONE && branchfirstcuflags < REQ_NONE &&
  ------------------
  |  |  394|    744|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8548:11): [True: 372, False: 0]
  |  Branch (8548:39): [True: 108, False: 264]
  ------------------
 8549|    108|          branchreqcuflags >= REQ_NONE)
  ------------------
  |  |  394|    108|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8549:11): [True: 13, False: 95]
  ------------------
 8550|     13|        {
 8551|     13|        branchreqcu = branchfirstcu;
 8552|     13|        branchreqcuflags = branchfirstcuflags;
 8553|     13|        }
 8554|       |
 8555|       |      /* Now ensure that the reqcus match */
 8556|       |
 8557|    372|      if (((reqcuflags & ~REQ_VARY) != (branchreqcuflags & ~REQ_VARY)) ||
  ------------------
  |  |  396|    372|#define REQ_VARY      0x00000002u  /* Code unit is followed by non-literal */
  ------------------
                    if (((reqcuflags & ~REQ_VARY) != (branchreqcuflags & ~REQ_VARY)) ||
  ------------------
  |  |  396|    372|#define REQ_VARY      0x00000002u  /* Code unit is followed by non-literal */
  ------------------
  |  Branch (8557:11): [True: 160, False: 212]
  ------------------
 8558|    212|          reqcu != branchreqcu)
  ------------------
  |  Branch (8558:11): [True: 171, False: 41]
  ------------------
 8559|    331|        reqcuflags = REQ_NONE;
  ------------------
  |  |  394|    331|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 8560|     41|      else
 8561|     41|        {
 8562|     41|        reqcu = branchreqcu;
 8563|     41|        reqcuflags |= branchreqcuflags; /* To "or" REQ_VARY if present */
 8564|     41|        }
 8565|    372|      }
 8566|    687|    }
 8567|       |
 8568|       |  /* Handle reaching the end of the expression, either ')' or end of pattern.
 8569|       |  In the real compile phase, go back through the alternative branches and
 8570|       |  reverse the chain of offsets, with the field in the BRA item now becoming an
 8571|       |  offset to the first alternative. If there are no alternatives, it points to
 8572|       |  the end of the group. The length in the terminating ket is always the length
 8573|       |  of the whole bracketed item. Return leaving the pointer at the terminating
 8574|       |  char. */
 8575|       |
 8576|  1.37k|  if (META_CODE(*pptr) != META_ALT)
  ------------------
  |  |  113|  1.37k|#define META_CODE(x)   (x & 0xffff0000u)
  ------------------
                if (META_CODE(*pptr) != META_ALT)
  ------------------
  |  |  213|  1.37k|#define META_ALT              0x80010000u  /* alternation */
  ------------------
  |  Branch (8576:7): [True: 630, False: 747]
  ------------------
 8577|    630|    {
 8578|    630|    if (lengthptr == NULL)
  ------------------
  |  Branch (8578:9): [True: 315, False: 315]
  ------------------
 8579|    315|      {
 8580|    315|      PCRE2_SIZE branch_length = code - last_branch;
  ------------------
  |  |  479|    315|#define PCRE2_SIZE            size_t
  ------------------
 8581|    315|      do
 8582|    687|        {
 8583|    687|        PCRE2_SIZE prev_length = GET(last_branch, 1);
  ------------------
  |  |  479|    687|#define PCRE2_SIZE            size_t
  ------------------
                      PCRE2_SIZE prev_length = GET(last_branch, 1);
  ------------------
  |  |  109|    687|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 8584|    687|        PUT(last_branch, 1, branch_length);
  ------------------
  |  |  106|    687|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|    687|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 8585|    687|        branch_length = prev_length;
 8586|    687|        last_branch -= branch_length;
 8587|    687|        }
 8588|    687|      while (branch_length > 0);
  ------------------
  |  Branch (8588:14): [True: 372, False: 315]
  ------------------
 8589|    315|      }
 8590|       |
 8591|       |    /* Fill in the ket */
 8592|       |
 8593|    630|    *code = OP_KET;
 8594|    630|    PUT(code, 1, (int)(code - start_bracket));
  ------------------
  |  |  106|    630|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|    630|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 8595|    630|    code += 1 + LINK_SIZE;
  ------------------
  |  |   98|    630|#define LINK_SIZE 2
  ------------------
 8596|       |
 8597|       |    /* Set values to pass back */
 8598|       |
 8599|    630|    *codeptr = code;
 8600|    630|    *pptrptr = pptr;
 8601|    630|    *firstcuptr = firstcu;
 8602|    630|    *firstcuflagsptr = firstcuflags;
 8603|    630|    *reqcuptr = reqcu;
 8604|    630|    *reqcuflagsptr = reqcuflags;
 8605|    630|    if (lengthptr != NULL)
  ------------------
  |  Branch (8605:9): [True: 315, False: 315]
  ------------------
 8606|    315|      {
 8607|    315|      if (OFLOW_MAX - *lengthptr < length)
  ------------------
  |  |  200|    315|#define OFLOW_MAX (INT_MAX - 20)
  ------------------
  |  Branch (8607:11): [True: 0, False: 315]
  ------------------
 8608|      0|        {
 8609|      0|        *errorcodeptr = ERR20;
 8610|      0|        return 0;
 8611|      0|        }
 8612|    315|      *lengthptr += length;
 8613|    315|      }
 8614|    630|    return okreturn;
 8615|    630|    }
 8616|       |
 8617|       |  /* Another branch follows. In the pre-compile phase, we can move the code
 8618|       |  pointer back to where it was for the start of the first branch. (That is,
 8619|       |  pretend that each branch is the only one.)
 8620|       |
 8621|       |  In the real compile phase, insert an ALT node. Its length field points back
 8622|       |  to the previous branch while the bracket remains open. At the end the chain
 8623|       |  is reversed. It's done like this so that the start of the bracket has a
 8624|       |  zero offset until it is closed, making it possible to detect recursion. */
 8625|       |
 8626|    747|  if (lengthptr != NULL)
  ------------------
  |  Branch (8626:7): [True: 375, False: 372]
  ------------------
 8627|    375|    {
 8628|    375|    code = *codeptr + 1 + LINK_SIZE + skipunits;
  ------------------
  |  |   98|    375|#define LINK_SIZE 2
  ------------------
 8629|    375|    length += 1 + LINK_SIZE;
  ------------------
  |  |   98|    375|#define LINK_SIZE 2
  ------------------
 8630|    375|    }
 8631|    372|  else
 8632|    372|    {
 8633|    372|    *code = OP_ALT;
 8634|    372|    PUT(code, 1, (int)(code - last_branch));
  ------------------
  |  |  106|    372|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|    372|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 8635|    372|    bc.current_branch = last_branch = code;
 8636|    372|    code += 1 + LINK_SIZE;
  ------------------
  |  |   98|    372|#define LINK_SIZE 2
  ------------------
 8637|    372|    }
 8638|       |
 8639|       |  /* Set the maximum lookbehind length for the next branch (if not in a
 8640|       |  lookbehind the value will be zero) and then advance past the vertical bar. */
 8641|       |
 8642|    747|  lookbehindlength = META_DATA(*pptr);
  ------------------
  |  |  114|    747|#define META_DATA(x)   (x & 0x0000ffffu)
  ------------------
 8643|    747|  pptr++;
 8644|    747|  }
 8645|       |/* Control never reaches here */
 8646|    640|}
pcre2_compile.c:compile_branch:
 5641|  1.38k|{
 5642|  1.38k|int bravalue = 0;
 5643|  1.38k|int okreturn = -1;
 5644|  1.38k|int group_return = 0;
 5645|  1.38k|uint32_t repeat_min = 0, repeat_max = 0;      /* To please picky compilers */
 5646|  1.38k|uint32_t greedy_default, greedy_non_default;
 5647|  1.38k|uint32_t repeat_type, op_type;
 5648|  1.38k|uint32_t options = *optionsptr;               /* May change dynamically */
 5649|  1.38k|uint32_t xoptions = *xoptionsptr;             /* May change dynamically */
 5650|  1.38k|uint32_t firstcu, reqcu;
 5651|  1.38k|uint32_t zeroreqcu, zerofirstcu;
 5652|  1.38k|uint32_t escape;
 5653|  1.38k|uint32_t *pptr = *pptrptr;
 5654|  1.38k|uint32_t meta, meta_arg;
 5655|  1.38k|uint32_t firstcuflags, reqcuflags;
 5656|  1.38k|uint32_t zeroreqcuflags, zerofirstcuflags;
 5657|  1.38k|uint32_t req_caseopt, reqvary, tempreqvary;
 5658|  1.38k|PCRE2_SIZE offset = 0;
  ------------------
  |  |  479|  1.38k|#define PCRE2_SIZE            size_t
  ------------------
 5659|  1.38k|PCRE2_SIZE length_prevgroup = 0;
  ------------------
  |  |  479|  1.38k|#define PCRE2_SIZE            size_t
  ------------------
 5660|  1.38k|PCRE2_UCHAR *code = *codeptr;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5661|  1.38k|PCRE2_UCHAR *last_code = code;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5662|  1.38k|PCRE2_UCHAR *orig_code = code;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5663|  1.38k|PCRE2_UCHAR *tempcode;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5664|  1.38k|PCRE2_UCHAR *previous = NULL;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5665|  1.38k|PCRE2_UCHAR op_previous;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5666|  1.38k|BOOL groupsetfirstcu = FALSE;
  ------------------
  |  |   87|  1.38k|#define FALSE   0
  ------------------
 5667|  1.38k|BOOL had_accept = FALSE;
  ------------------
  |  |   87|  1.38k|#define FALSE   0
  ------------------
 5668|  1.38k|BOOL matched_char = FALSE;
  ------------------
  |  |   87|  1.38k|#define FALSE   0
  ------------------
 5669|  1.38k|BOOL previous_matched_char = FALSE;
  ------------------
  |  |   87|  1.38k|#define FALSE   0
  ------------------
 5670|  1.38k|BOOL reset_caseful = FALSE;
  ------------------
  |  |   87|  1.38k|#define FALSE   0
  ------------------
 5671|  1.38k|const uint8_t *cbits = cb->cbits;
 5672|  1.38k|uint8_t classbits[32];
 5673|       |
 5674|       |/* We can fish out the UTF setting once and for all into a BOOL, but we must
 5675|       |not do this for other options (e.g. PCRE2_EXTENDED) that may change dynamically
 5676|       |as we process the pattern. */
 5677|       |
 5678|  1.38k|#ifdef SUPPORT_UNICODE
 5679|  1.38k|BOOL utf = (options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|  1.38k|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 5680|  1.38k|BOOL ucp = (options & PCRE2_UCP) != 0;
  ------------------
  |  |  136|  1.38k|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
 5681|       |#else  /* No Unicode support */
 5682|       |BOOL utf = FALSE;
 5683|       |#endif
 5684|       |
 5685|       |/* Helper variables for OP_XCLASS opcode (for characters > 255). We define
 5686|       |class_uchardata always so that it can be passed to add_to_class() always,
 5687|       |though it will not be used in non-UTF 8-bit cases. This avoids having to supply
 5688|       |alternative calls for the different cases. */
 5689|       |
 5690|  1.38k|PCRE2_UCHAR *class_uchardata;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5691|  1.38k|#ifdef SUPPORT_WIDE_CHARS
 5692|  1.38k|BOOL xclass;
 5693|  1.38k|PCRE2_UCHAR *class_uchardata_base;
  ------------------
  |  |  819|  1.38k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.38k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.38k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.38k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5694|  1.38k|#endif
 5695|       |
 5696|       |/* Set up the default and non-default settings for greediness */
 5697|       |
 5698|  1.38k|greedy_default = ((options & PCRE2_UNGREEDY) != 0);
  ------------------
  |  |  137|  1.38k|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  ------------------
 5699|  1.38k|greedy_non_default = greedy_default ^ 1;
 5700|       |
 5701|       |/* Initialize no first unit, no required unit. REQ_UNSET means "no char
 5702|       |matching encountered yet". It gets changed to REQ_NONE if we hit something that
 5703|       |matches a non-fixed first unit; reqcu just remains unset if we never find one.
 5704|       |
 5705|       |When we hit a repeat whose minimum is zero, we may have to adjust these values
 5706|       |to take the zero repeat into account. This is implemented by setting them to
 5707|       |zerofirstcu and zeroreqcu when such a repeat is encountered. The individual
 5708|       |item types that can be repeated set these backoff variables appropriately. */
 5709|       |
 5710|  1.38k|firstcu = reqcu = zerofirstcu = zeroreqcu = 0;
 5711|  1.38k|firstcuflags = reqcuflags = zerofirstcuflags = zeroreqcuflags = REQ_UNSET;
  ------------------
  |  |  393|  1.38k|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
 5712|       |
 5713|       |/* The variable req_caseopt contains either the REQ_CASELESS bit or zero,
 5714|       |according to the current setting of the caseless flag. The REQ_CASELESS value
 5715|       |leaves the lower 28 bit empty. It is added into the firstcu or reqcu variables
 5716|       |to record the case status of the value. This is used only for ASCII characters.
 5717|       |*/
 5718|       |
 5719|  1.38k|req_caseopt = ((options & PCRE2_CASELESS) != 0)? REQ_CASELESS : 0;
  ------------------
  |  |  122|  1.38k|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
              req_caseopt = ((options & PCRE2_CASELESS) != 0)? REQ_CASELESS : 0;
  ------------------
  |  |  395|    787|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
  |  Branch (5719:15): [True: 787, False: 600]
  ------------------
 5720|       |
 5721|       |/* Switch on next META item until the end of the branch */
 5722|       |
 5723|  22.3k|for (;; pptr++)
 5724|  23.7k|  {
 5725|  23.7k|#ifdef SUPPORT_WIDE_CHARS
 5726|  23.7k|  BOOL xclass_has_prop;
 5727|  23.7k|#endif
 5728|  23.7k|  BOOL negate_class;
 5729|  23.7k|  BOOL should_flip_negation;
 5730|  23.7k|  BOOL match_all_or_no_wide_chars;
 5731|  23.7k|  BOOL possessive_quantifier;
 5732|  23.7k|  BOOL note_group_empty;
 5733|  23.7k|  int class_has_8bitchar;
 5734|  23.7k|  uint32_t mclength;
 5735|  23.7k|  uint32_t skipunits;
 5736|  23.7k|  uint32_t subreqcu, subfirstcu;
 5737|  23.7k|  uint32_t groupnumber;
 5738|  23.7k|  uint32_t verbarglen, verbculen;
 5739|  23.7k|  uint32_t subreqcuflags, subfirstcuflags;
 5740|  23.7k|  open_capitem *oc;
 5741|  23.7k|  PCRE2_UCHAR mcbuffer[8];
  ------------------
  |  |  819|  23.7k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  23.7k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  23.7k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  23.7k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5742|       |
 5743|       |  /* Get next META item in the pattern and its potential argument. */
 5744|       |
 5745|  23.7k|  meta = META_CODE(*pptr);
  ------------------
  |  |  113|  23.7k|#define META_CODE(x)   (x & 0xffff0000u)
  ------------------
 5746|  23.7k|  meta_arg = META_DATA(*pptr);
  ------------------
  |  |  114|  23.7k|#define META_DATA(x)   (x & 0x0000ffffu)
  ------------------
 5747|       |
 5748|       |  /* If we are in the pre-compile phase, accumulate the length used for the
 5749|       |  previous cycle of this loop, unless the next item is a quantifier. */
 5750|       |
 5751|  23.7k|  if (lengthptr != NULL)
  ------------------
  |  Branch (5751:7): [True: 11.9k, False: 11.7k]
  ------------------
 5752|  11.9k|    {
 5753|  11.9k|    if (code > cb->start_workspace + cb->workspace_size -
  ------------------
  |  Branch (5753:9): [True: 0, False: 11.9k]
  ------------------
 5754|  11.9k|        WORK_SIZE_SAFETY_MARGIN)                       /* Check for overrun */
  ------------------
  |  |  180|  11.9k|#define WORK_SIZE_SAFETY_MARGIN (100)
  ------------------
 5755|      0|      {
 5756|      0|      *errorcodeptr = (code >= cb->start_workspace + cb->workspace_size)?
  ------------------
  |  Branch (5756:23): [True: 0, False: 0]
  ------------------
 5757|      0|        ERR52 : ERR86;
 5758|      0|      return 0;
 5759|      0|      }
 5760|       |
 5761|       |    /* There is at least one situation where code goes backwards: this is the
 5762|       |    case of a zero quantifier after a class (e.g. [ab]{0}). When the quantifier
 5763|       |    is processed, the whole class is eliminated. However, it is created first,
 5764|       |    so we have to allow memory for it. Therefore, don't ever reduce the length
 5765|       |    at this point. */
 5766|       |
 5767|  11.9k|    if (code < last_code) code = last_code;
  ------------------
  |  Branch (5767:9): [True: 0, False: 11.9k]
  ------------------
 5768|       |
 5769|       |    /* If the next thing is not a quantifier, we add the length of the previous
 5770|       |    item into the total, and reset the code pointer to the start of the
 5771|       |    workspace. Otherwise leave the previous item available to be quantified. */
 5772|       |
 5773|  11.9k|    if (meta < META_ASTERISK || meta > META_MINMAX_QUERY)
  ------------------
  |  |  279|  23.8k|#define META_ASTERISK         0x80340000u  /* *  */
  ------------------
                  if (meta < META_ASTERISK || meta > META_MINMAX_QUERY)
  ------------------
  |  |  290|  1.27k|#define META_MINMAX_QUERY     0x803f0000u  /* {n,m}? repeat */
  ------------------
  |  Branch (5773:9): [True: 10.6k, False: 1.27k]
  |  Branch (5773:33): [True: 0, False: 1.27k]
  ------------------
 5774|  10.6k|      {
 5775|  10.6k|      if (OFLOW_MAX - *lengthptr < (PCRE2_SIZE)(code - orig_code))
  ------------------
  |  |  200|  10.6k|#define OFLOW_MAX (INT_MAX - 20)
  ------------------
  |  Branch (5775:11): [True: 0, False: 10.6k]
  ------------------
 5776|      0|        {
 5777|      0|        *errorcodeptr = ERR20;   /* Integer overflow */
 5778|      0|        return 0;
 5779|      0|        }
 5780|  10.6k|      *lengthptr += (PCRE2_SIZE)(code - orig_code);
 5781|  10.6k|      if (*lengthptr > MAX_PATTERN_SIZE)
  ------------------
  |  |  110|  10.6k|#define MAX_PATTERN_SIZE (1 << 16)
  ------------------
  |  Branch (5781:11): [True: 0, False: 10.6k]
  ------------------
 5782|      0|        {
 5783|      0|        *errorcodeptr = ERR20;   /* Pattern is too large */
 5784|      0|        return 0;
 5785|      0|        }
 5786|  10.6k|      code = orig_code;
 5787|  10.6k|      }
 5788|       |
 5789|       |    /* Remember where this code item starts so we can catch the "backwards"
 5790|       |    case above next time round. */
 5791|       |
 5792|  11.9k|    last_code = code;
 5793|  11.9k|    }
 5794|       |
 5795|       |  /* Process the next parsed pattern item. If it is not a quantifier, remember
 5796|       |  where it starts so that it can be quantified when a quantifier follows.
 5797|       |  Checking for the legality of quantifiers happens in parse_regex(), except for
 5798|       |  a quantifier after an assertion that is a condition. */
 5799|       |
 5800|  23.7k|  if (meta < META_ASTERISK || meta > META_MINMAX_QUERY)
  ------------------
  |  |  279|  47.4k|#define META_ASTERISK         0x80340000u  /* *  */
  ------------------
                if (meta < META_ASTERISK || meta > META_MINMAX_QUERY)
  ------------------
  |  |  290|  2.54k|#define META_MINMAX_QUERY     0x803f0000u  /* {n,m}? repeat */
  ------------------
  |  Branch (5800:7): [True: 21.1k, False: 2.54k]
  |  Branch (5800:31): [True: 0, False: 2.54k]
  ------------------
 5801|  21.1k|    {
 5802|  21.1k|    previous = code;
 5803|  21.1k|    if (matched_char && !had_accept) okreturn = 1;
  ------------------
  |  Branch (5803:9): [True: 17.9k, False: 3.22k]
  |  Branch (5803:25): [True: 17.9k, False: 0]
  ------------------
 5804|  21.1k|    }
 5805|       |
 5806|  23.7k|  previous_matched_char = matched_char;
 5807|  23.7k|  matched_char = FALSE;
  ------------------
  |  |   87|  23.7k|#define FALSE   0
  ------------------
 5808|  23.7k|  note_group_empty = FALSE;
  ------------------
  |  |   87|  23.7k|#define FALSE   0
  ------------------
 5809|  23.7k|  skipunits = 0;         /* Default value for most subgroups */
 5810|       |
 5811|  23.7k|  switch(meta)
 5812|  23.7k|    {
 5813|       |    /* ===================================================================*/
 5814|       |    /* The branch terminates at pattern end or | or ) */
 5815|       |
 5816|    596|    case META_END:
  ------------------
  |  |  211|    596|#define META_END              0x80000000u  /* End of pattern */
  ------------------
  |  Branch (5816:5): [True: 596, False: 23.1k]
  ------------------
 5817|  1.34k|    case META_ALT:
  ------------------
  |  |  213|  1.34k|#define META_ALT              0x80010000u  /* alternation */
  ------------------
  |  Branch (5817:5): [True: 747, False: 22.9k]
  ------------------
 5818|  1.37k|    case META_KET:
  ------------------
  |  |  237|  1.37k|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
  |  Branch (5818:5): [True: 34, False: 23.6k]
  ------------------
 5819|  1.37k|    *firstcuptr = firstcu;
 5820|  1.37k|    *firstcuflagsptr = firstcuflags;
 5821|  1.37k|    *reqcuptr = reqcu;
 5822|  1.37k|    *reqcuflagsptr = reqcuflags;
 5823|  1.37k|    *codeptr = code;
 5824|  1.37k|    *pptrptr = pptr;
 5825|  1.37k|    return okreturn;
 5826|       |
 5827|       |
 5828|       |    /* ===================================================================*/
 5829|       |    /* Handle single-character metacharacters. In multiline mode, ^ disables
 5830|       |    the setting of any following char as a first character. */
 5831|       |
 5832|    337|    case META_CIRCUMFLEX:
  ------------------
  |  |  221|    337|#define META_CIRCUMFLEX       0x80090000u  /* ^ metacharacter */
  ------------------
  |  Branch (5832:5): [True: 337, False: 23.3k]
  ------------------
 5833|    337|    if ((options & PCRE2_MULTILINE) != 0)
  ------------------
  |  |  129|    337|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  ------------------
  |  Branch (5833:9): [True: 42, False: 295]
  ------------------
 5834|     42|      {
 5835|     42|      if (firstcuflags == REQ_UNSET)
  ------------------
  |  |  393|     42|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
  |  Branch (5835:11): [True: 2, False: 40]
  ------------------
 5836|      2|        zerofirstcuflags = firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      2|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 5837|     42|      *code++ = OP_CIRCM;
 5838|     42|      }
 5839|    295|    else *code++ = OP_CIRC;
 5840|    337|    break;
 5841|       |
 5842|     96|    case META_DOLLAR:
  ------------------
  |  |  234|     96|#define META_DOLLAR           0x80160000u  /* $ metacharacter */
  ------------------
  |  Branch (5842:5): [True: 96, False: 23.6k]
  ------------------
 5843|     96|    *code++ = ((options & PCRE2_MULTILINE) != 0)? OP_DOLLM : OP_DOLL;
  ------------------
  |  |  129|     96|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  ------------------
  |  Branch (5843:15): [True: 6, False: 90]
  ------------------
 5844|     96|    break;
 5845|       |
 5846|       |    /* There can never be a first char if '.' is first, whatever happens about
 5847|       |    repeats. The value of reqcu doesn't change either. */
 5848|       |
 5849|    580|    case META_DOT:
  ------------------
  |  |  235|    580|#define META_DOT              0x80170000u  /* . metacharacter */
  ------------------
  |  Branch (5849:5): [True: 580, False: 23.1k]
  ------------------
 5850|    580|    matched_char = TRUE;
  ------------------
  |  |   88|    580|#define TRUE    1
  ------------------
 5851|    580|    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|    580|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                  if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|     80|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (5851:9): [True: 80, False: 500]
  ------------------
 5852|    580|    zerofirstcu = firstcu;
 5853|    580|    zerofirstcuflags = firstcuflags;
 5854|    580|    zeroreqcu = reqcu;
 5855|    580|    zeroreqcuflags = reqcuflags;
 5856|    580|    *code++ = ((options & PCRE2_DOTALL) != 0)? OP_ALLANY: OP_ANY;
  ------------------
  |  |  124|    580|#define PCRE2_DOTALL              0x00000020u  /* C       */
  ------------------
  |  Branch (5856:15): [True: 152, False: 428]
  ------------------
 5857|    580|    break;
 5858|       |
 5859|       |
 5860|       |    /* ===================================================================*/
 5861|       |    /* Empty character classes are allowed if PCRE2_ALLOW_EMPTY_CLASS is set.
 5862|       |    Otherwise, an initial ']' is taken as a data character. When empty classes
 5863|       |    are allowed, [] must always fail, so generate OP_FAIL, whereas [^] must
 5864|       |    match any character, so generate OP_ALLANY. */
 5865|       |
 5866|      0|    case META_CLASS_EMPTY:
  ------------------
  |  |  223|      0|#define META_CLASS_EMPTY      0x800b0000u  /* empty class */
  ------------------
  |  Branch (5866:5): [True: 0, False: 23.7k]
  ------------------
 5867|      0|    case META_CLASS_EMPTY_NOT:
  ------------------
  |  |  224|      0|#define META_CLASS_EMPTY_NOT  0x800c0000u  /* negative empty class */
  ------------------
  |  Branch (5867:5): [True: 0, False: 23.7k]
  ------------------
 5868|      0|    matched_char = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5869|      0|    *code++ = (meta == META_CLASS_EMPTY_NOT)? OP_ALLANY : OP_FAIL;
  ------------------
  |  |  224|      0|#define META_CLASS_EMPTY_NOT  0x800c0000u  /* negative empty class */
  ------------------
  |  Branch (5869:15): [True: 0, False: 0]
  ------------------
 5870|      0|    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|      0|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                  if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (5870:9): [True: 0, False: 0]
  ------------------
 5871|      0|    zerofirstcu = firstcu;
 5872|      0|    zerofirstcuflags = firstcuflags;
 5873|      0|    break;
 5874|       |
 5875|       |
 5876|       |    /* ===================================================================*/
 5877|       |    /* Non-empty character class. If the included characters are all < 256, we
 5878|       |    build a 32-byte bitmap of the permitted characters, except in the special
 5879|       |    case where there is only one such character. For negated classes, we build
 5880|       |    the map as usual, then invert it at the end. However, we use a different
 5881|       |    opcode so that data characters > 255 can be handled correctly.
 5882|       |
 5883|       |    If the class contains characters outside the 0-255 range, a different
 5884|       |    opcode is compiled. It may optionally have a bit map for characters < 256,
 5885|       |    but those above are explicitly listed afterwards. A flag code unit tells
 5886|       |    whether the bitmap is present, and whether this is a negated class or
 5887|       |    not. */
 5888|       |
 5889|    140|    case META_CLASS_NOT:
  ------------------
  |  |  226|    140|#define META_CLASS_NOT        0x800e0000u  /* start non-empty negative class */
  ------------------
  |  Branch (5889:5): [True: 140, False: 23.5k]
  ------------------
 5890|    278|    case META_CLASS:
  ------------------
  |  |  222|    278|#define META_CLASS            0x800a0000u  /* start non-empty class */
  ------------------
  |  Branch (5890:5): [True: 138, False: 23.5k]
  ------------------
 5891|    278|    matched_char = TRUE;
  ------------------
  |  |   88|    278|#define TRUE    1
  ------------------
 5892|    278|    negate_class = meta == META_CLASS_NOT;
  ------------------
  |  |  226|    278|#define META_CLASS_NOT        0x800e0000u  /* start non-empty negative class */
  ------------------
 5893|       |
 5894|       |    /* We can optimize the case of a single character in a class by generating
 5895|       |    OP_CHAR or OP_CHARI if it's positive, or OP_NOT or OP_NOTI if it's
 5896|       |    negative. In the negative case there can be no first char if this item is
 5897|       |    first, whatever repeat count may follow. In the case of reqcu, save the
 5898|       |    previous value for reinstating. */
 5899|       |
 5900|       |    /* NOTE: at present this optimization is not effective if the only
 5901|       |    character in a class in 32-bit, non-UCP mode has its top bit set. */
 5902|       |
 5903|    278|    if (pptr[1] < META_END && pptr[2] == META_CLASS_END)
  ------------------
  |  |  211|    556|#define META_END              0x80000000u  /* End of pattern */
  ------------------
                  if (pptr[1] < META_END && pptr[2] == META_CLASS_END)
  ------------------
  |  |  225|    274|#define META_CLASS_END        0x800d0000u  /* end of non-empty class */
  ------------------
  |  Branch (5903:9): [True: 274, False: 4]
  |  Branch (5903:31): [True: 76, False: 198]
  ------------------
 5904|     76|      {
 5905|     76|#ifdef SUPPORT_UNICODE
 5906|     76|      uint32_t d;
 5907|     76|#endif
 5908|     76|      uint32_t c = pptr[1];
 5909|       |
 5910|     76|      pptr += 2;                 /* Move on to class end */
 5911|     76|      if (meta == META_CLASS)    /* A positive one-char class can be */
  ------------------
  |  |  222|     76|#define META_CLASS            0x800a0000u  /* start non-empty class */
  ------------------
  |  Branch (5911:11): [True: 8, False: 68]
  ------------------
 5912|      8|        {                        /* handled as a normal literal character. */
 5913|      8|        meta = c;                /* Set up the character */
 5914|      8|        goto NORMAL_CHAR_SET;
 5915|      8|        }
 5916|       |
 5917|       |      /* Handle a negative one-character class */
 5918|       |
 5919|     68|      zeroreqcu = reqcu;
 5920|     68|      zeroreqcuflags = reqcuflags;
 5921|     68|      if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|     68|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|     42|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (5921:11): [True: 42, False: 26]
  ------------------
 5922|     68|      zerofirstcu = firstcu;
 5923|     68|      zerofirstcuflags = firstcuflags;
 5924|       |
 5925|       |      /* For caseless UTF or UCP mode, check whether this character has more
 5926|       |      than one other case. If so, generate a special OP_NOTPROP item instead of
 5927|       |      OP_NOTI. When restricted by PCRE2_EXTRA_CASELESS_RESTRICT, ignore any
 5928|       |      caseless set that starts with an ASCII character. */
 5929|       |
 5930|     68|#ifdef SUPPORT_UNICODE
 5931|     68|      if ((utf||ucp) && (options & PCRE2_CASELESS) != 0 &&
  ------------------
  |  |  122|     46|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (5931:12): [True: 46, False: 22]
  |  Branch (5931:17): [True: 0, False: 22]
  |  Branch (5931:25): [True: 44, False: 2]
  ------------------
 5932|     44|          (d = UCD_CASESET(c)) != 0 &&
  ------------------
  |  | 1888|     44|#define UCD_CASESET(ch)     GET_UCD(ch)->caseset
  |  |  ------------------
  |  |  |  | 1873|     44|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|     44|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     44|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|     44|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     44|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     44|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     44|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|     44|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     44|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|     44|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     44|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     44|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     44|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     44|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|     44|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     44|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     44|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     44|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     44|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|     44|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     44|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     44|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5932:11): [True: 22, False: 22]
  ------------------
 5933|     22|          ((xoptions & PCRE2_EXTRA_CASELESS_RESTRICT) == 0 ||
  ------------------
  |  |  156|     22|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
  |  Branch (5933:12): [True: 22, False: 0]
  ------------------
 5934|      0|          PRIV(ucd_caseless_sets)[d] > 127))
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      0|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5934:11): [True: 0, False: 0]
  ------------------
 5935|     22|        {
 5936|     22|        *code++ = OP_NOTPROP;
 5937|     22|        *code++ = PT_CLIST;
  ------------------
  |  | 1303|     22|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
 5938|     22|        *code++ = d;
 5939|     22|        break;   /* We are finished with this class */
 5940|     22|        }
 5941|     46|#endif
 5942|       |      /* Char has only one other (usable) case, or UCP not available */
 5943|       |
 5944|     46|      *code++ = ((options & PCRE2_CASELESS) != 0)? OP_NOTI: OP_NOT;
  ------------------
  |  |  122|     46|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (5944:17): [True: 24, False: 22]
  ------------------
 5945|     46|      code += PUTCHAR(c, code);
  ------------------
  |  |  357|     46|#define PUTCHAR(c, p) ((utf && c > MAX_UTF_SINGLE_CU)? \
  |  |  ------------------
  |  |  |  |  282|     70|#define MAX_UTF_SINGLE_CU 127
  |  |  ------------------
  |  |  |  Branch (357:25): [True: 24, False: 22]
  |  |  |  Branch (357:32): [True: 0, False: 24]
  |  |  ------------------
  |  |  358|     46|  PRIV(ord2utf)(c,p) : (*p = c, 1))
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2030|      0|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5946|     46|      break;   /* We are finished with this class */
 5947|     68|      }        /* End of 1-char optimization */
 5948|       |
 5949|       |    /* Handle character classes that contain more than just one literal
 5950|       |    character. If there are exactly two characters in a positive class, see if
 5951|       |    they are case partners. This can be optimized to generate a caseless single
 5952|       |    character match (which also sets first/required code units if relevant).
 5953|       |    When casing restrictions apply, ignore a caseless set if both characters
 5954|       |    are ASCII. */
 5955|       |
 5956|    202|    if (meta == META_CLASS && pptr[1] < META_END && pptr[2] < META_END &&
  ------------------
  |  |  222|    404|#define META_CLASS            0x800a0000u  /* start non-empty class */
  ------------------
                  if (meta == META_CLASS && pptr[1] < META_END && pptr[2] < META_END &&
  ------------------
  |  |  211|    332|#define META_END              0x80000000u  /* End of pattern */
  ------------------
                  if (meta == META_CLASS && pptr[1] < META_END && pptr[2] < META_END &&
  ------------------
  |  |  211|    328|#define META_END              0x80000000u  /* End of pattern */
  ------------------
  |  Branch (5956:9): [True: 130, False: 72]
  |  Branch (5956:31): [True: 126, False: 4]
  |  Branch (5956:53): [True: 126, False: 0]
  ------------------
 5957|    126|        pptr[3] == META_CLASS_END)
  ------------------
  |  |  225|    126|#define META_CLASS_END        0x800d0000u  /* end of non-empty class */
  ------------------
  |  Branch (5957:9): [True: 56, False: 70]
  ------------------
 5958|     56|      {
 5959|     56|      uint32_t c = pptr[1];
 5960|       |
 5961|     56|#ifdef SUPPORT_UNICODE
 5962|     56|      if (UCD_CASESET(c) == 0 ||
  ------------------
  |  | 1888|     56|#define UCD_CASESET(ch)     GET_UCD(ch)->caseset
  |  |  ------------------
  |  |  |  | 1873|     56|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|     56|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     56|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|     56|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     56|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     56|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     56|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|     56|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     56|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|     56|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     56|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     56|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     56|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     56|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|     56|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     56|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     56|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     56|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     56|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|     56|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     56|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     56|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5962:11): [True: 56, False: 0]
  ------------------
 5963|      0|         ((xoptions & PCRE2_EXTRA_CASELESS_RESTRICT) != 0 &&
  ------------------
  |  |  156|      0|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
  |  Branch (5963:11): [True: 0, False: 0]
  ------------------
 5964|      0|         c < 128 && pptr[2] < 128))
  ------------------
  |  Branch (5964:10): [True: 0, False: 0]
  |  Branch (5964:21): [True: 0, False: 0]
  ------------------
 5965|     56|#endif
 5966|     56|        {
 5967|     56|        uint32_t d;
 5968|       |
 5969|     56|#ifdef SUPPORT_UNICODE
 5970|     56|        if ((utf || ucp) && c > 127) d = UCD_OTHERCASE(c); else
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5970:14): [True: 32, False: 24]
  |  Branch (5970:21): [True: 0, False: 24]
  |  Branch (5970:29): [True: 0, False: 32]
  ------------------
 5971|     56|#endif
 5972|     56|          {
 5973|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 5974|       |          if (c > 255) d = c; else
 5975|       |#endif
 5976|     56|          d = TABLE_GET(c, cb->fcc, c);
  ------------------
  |  |  214|     56|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
 5977|     56|          }
 5978|       |
 5979|     56|        if (c != d && pptr[2] == d)
  ------------------
  |  Branch (5979:13): [True: 48, False: 8]
  |  Branch (5979:23): [True: 0, False: 48]
  ------------------
 5980|      0|          {
 5981|      0|          pptr += 3;                 /* Move on to class end */
 5982|      0|          meta = c;
 5983|      0|          if ((options & PCRE2_CASELESS) == 0)
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (5983:15): [True: 0, False: 0]
  ------------------
 5984|      0|            {
 5985|      0|            reset_caseful = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5986|      0|            options |= PCRE2_CASELESS;
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
 5987|      0|            req_caseopt = REQ_CASELESS;
  ------------------
  |  |  395|      0|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
 5988|      0|            }
 5989|      0|          goto CLASS_CASELESS_CHAR;
 5990|      0|          }
 5991|     56|        }
 5992|     56|      }
 5993|       |
 5994|       |    /* If a non-extended class contains a negative special such as \S, we need
 5995|       |    to flip the negation flag at the end, so that support for characters > 255
 5996|       |    works correctly (they are all included in the class). An extended class may
 5997|       |    need to insert specific matching or non-matching code for wide characters.
 5998|       |    */
 5999|       |
 6000|    202|    should_flip_negation = match_all_or_no_wide_chars = FALSE;
  ------------------
  |  |   87|    202|#define FALSE   0
  ------------------
 6001|       |
 6002|       |    /* Extended class (xclass) will be used when characters > 255
 6003|       |    might match. */
 6004|       |
 6005|    202|#ifdef SUPPORT_WIDE_CHARS
 6006|    202|    xclass = FALSE;
  ------------------
  |  |   87|    202|#define FALSE   0
  ------------------
 6007|    202|    class_uchardata = code + LINK_SIZE + 2;   /* For XCLASS items */
  ------------------
  |  |   98|    202|#define LINK_SIZE 2
  ------------------
 6008|    202|    class_uchardata_base = class_uchardata;   /* Save the start */
 6009|    202|#endif
 6010|       |
 6011|       |    /* For optimization purposes, we track some properties of the class:
 6012|       |    class_has_8bitchar will be non-zero if the class contains at least one
 6013|       |    character with a code point less than 256; xclass_has_prop will be TRUE if
 6014|       |    Unicode property checks are present in the class. */
 6015|       |
 6016|    202|    class_has_8bitchar = 0;
 6017|    202|#ifdef SUPPORT_WIDE_CHARS
 6018|    202|    xclass_has_prop = FALSE;
  ------------------
  |  |   87|    202|#define FALSE   0
  ------------------
 6019|    202|#endif
 6020|       |
 6021|       |    /* Initialize the 256-bit (32-byte) bit map to all zeros. We build the map
 6022|       |    in a temporary bit of memory, in case the class contains fewer than two
 6023|       |    8-bit characters because in that case the compiled code doesn't use the bit
 6024|       |    map. */
 6025|       |
 6026|    202|    memset(classbits, 0, 32 * sizeof(uint8_t));
 6027|       |
 6028|       |    /* Process items until META_CLASS_END is reached. */
 6029|       |
 6030|  2.93k|    while ((meta = *(++pptr)) != META_CLASS_END)
  ------------------
  |  |  225|  2.93k|#define META_CLASS_END        0x800d0000u  /* end of non-empty class */
  ------------------
  |  Branch (6030:12): [True: 2.72k, False: 202]
  ------------------
 6031|  2.72k|      {
 6032|       |      /* Handle POSIX classes such as [:alpha:] etc. */
 6033|       |
 6034|  2.72k|      if (meta == META_POSIX || meta == META_POSIX_NEG)
  ------------------
  |  |  240|  5.45k|#define META_POSIX            0x801c0000u  /* POSIX class item */
  ------------------
                    if (meta == META_POSIX || meta == META_POSIX_NEG)
  ------------------
  |  |  241|  2.72k|#define META_POSIX_NEG        0x801d0000u  /* negative POSIX class item */
  ------------------
  |  Branch (6034:11): [True: 0, False: 2.72k]
  |  Branch (6034:33): [True: 0, False: 2.72k]
  ------------------
 6035|      0|        {
 6036|      0|        BOOL local_negate = (meta == META_POSIX_NEG);
  ------------------
  |  |  241|      0|#define META_POSIX_NEG        0x801d0000u  /* negative POSIX class item */
  ------------------
 6037|      0|        int posix_class = *(++pptr);
 6038|      0|        int taboffset, tabopt;
 6039|      0|        uint8_t pbits[32];
 6040|       |
 6041|      0|        should_flip_negation = local_negate;  /* Note negative special */
 6042|       |
 6043|       |        /* If matching is caseless, upper and lower are converted to alpha.
 6044|       |        This relies on the fact that the class table starts with alpha,
 6045|       |        lower, upper as the first 3 entries. */
 6046|       |
 6047|      0|        if ((options & PCRE2_CASELESS) != 0 && posix_class <= 2)
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (6047:13): [True: 0, False: 0]
  |  Branch (6047:48): [True: 0, False: 0]
  ------------------
 6048|      0|          posix_class = 0;
 6049|       |
 6050|       |        /* When PCRE2_UCP is set, some of the POSIX classes are converted to
 6051|       |        different escape sequences that use Unicode properties \p or \P.
 6052|       |        Others that are not available via \p or \P have to generate
 6053|       |        XCL_PROP/XCL_NOTPROP directly, which is done here. */
 6054|       |
 6055|      0|#ifdef SUPPORT_UNICODE
 6056|      0|        if ((options & PCRE2_UCP) != 0 &&
  ------------------
  |  |  136|      0|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (6056:13): [True: 0, False: 0]
  ------------------
 6057|      0|            (xoptions & PCRE2_EXTRA_ASCII_POSIX) == 0)
  ------------------
  |  |  160|      0|#define PCRE2_EXTRA_ASCII_POSIX              0x00000800u  /* C */
  ------------------
  |  Branch (6057:13): [True: 0, False: 0]
  ------------------
 6058|      0|          {
 6059|      0|          switch(posix_class)
 6060|      0|            {
 6061|      0|            case PC_GRAPH:
  ------------------
  |  |  710|      0|#define PC_GRAPH   8
  ------------------
  |  Branch (6061:13): [True: 0, False: 0]
  ------------------
 6062|      0|            case PC_PRINT:
  ------------------
  |  |  711|      0|#define PC_PRINT   9
  ------------------
  |  Branch (6062:13): [True: 0, False: 0]
  ------------------
 6063|      0|            case PC_PUNCT:
  ------------------
  |  |  712|      0|#define PC_PUNCT  10
  ------------------
  |  Branch (6063:13): [True: 0, False: 0]
  ------------------
 6064|      0|            *class_uchardata++ = local_negate? XCL_NOTPROP : XCL_PROP;
  ------------------
  |  | 1336|      0|#define XCL_NOTPROP  4     /* Unicode inverted property (ditto) */
  ------------------
                          *class_uchardata++ = local_negate? XCL_NOTPROP : XCL_PROP;
  ------------------
  |  | 1335|      0|#define XCL_PROP     3     /* Unicode property (2-byte property code follows) */
  ------------------
  |  Branch (6064:34): [True: 0, False: 0]
  ------------------
 6065|      0|            *class_uchardata++ = (PCRE2_UCHAR)
 6066|      0|              ((posix_class == PC_GRAPH)? PT_PXGRAPH :
  ------------------
  |  |  710|      0|#define PC_GRAPH   8
  ------------------
                            ((posix_class == PC_GRAPH)? PT_PXGRAPH :
  ------------------
  |  | 1315|      0|#define PT_PXGRAPH   14    /* [:graph:] - characters that mark the paper */
  ------------------
  |  Branch (6066:16): [True: 0, False: 0]
  ------------------
 6067|      0|               (posix_class == PC_PRINT)? PT_PXPRINT : PT_PXPUNCT);
  ------------------
  |  |  711|      0|#define PC_PRINT   9
  ------------------
                             (posix_class == PC_PRINT)? PT_PXPRINT : PT_PXPUNCT);
  ------------------
  |  | 1316|      0|#define PT_PXPRINT   15    /* [:print:] - [:graph:] plus non-control spaces */
  ------------------
                             (posix_class == PC_PRINT)? PT_PXPRINT : PT_PXPUNCT);
  ------------------
  |  | 1317|      0|#define PT_PXPUNCT   16    /* [:punct:] - punctuation characters */
  ------------------
  |  Branch (6067:16): [True: 0, False: 0]
  ------------------
 6068|      0|            *class_uchardata++ = 0;
 6069|      0|            xclass_has_prop = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6070|      0|            goto CONTINUE_CLASS;
 6071|       |
 6072|       |            /* For the other POSIX classes (ex: ascii) we are going to
 6073|       |            fall through to the non-UCP case and build a bit map for
 6074|       |            characters with code points less than 256. However, if we are in
 6075|       |            a negated POSIX class, characters with code points greater than
 6076|       |            255 must either all match or all not match, depending on whether
 6077|       |            the whole class is not or is negated. For example, for
 6078|       |            [[:^ascii:]... they must all match, whereas for [^[:^ascii:]...
 6079|       |            they must not.
 6080|       |
 6081|       |            In the special case where there are no xclass items, this is
 6082|       |            automatically handled by the use of OP_CLASS or OP_NCLASS, but an
 6083|       |            explicit range is needed for OP_XCLASS. Setting a flag here
 6084|       |            causes the range to be generated later when it is known that
 6085|       |            OP_XCLASS is required. In the 8-bit library this is relevant only in
 6086|       |            utf mode, since no wide characters can exist otherwise. */
 6087|       |
 6088|      0|            default:
  ------------------
  |  Branch (6088:13): [True: 0, False: 0]
  ------------------
 6089|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
 6090|      0|            if (utf)
  ------------------
  |  Branch (6090:17): [True: 0, False: 0]
  ------------------
 6091|      0|#endif
 6092|      0|            match_all_or_no_wide_chars |= local_negate;
 6093|      0|            break;
 6094|      0|            }
 6095|      0|          }
 6096|      0|#endif  /* SUPPORT_UNICODE */
 6097|       |
 6098|       |        /* In the non-UCP case, or when UCP makes no difference, we build the
 6099|       |        bit map for the POSIX class in a chunk of local store because we may
 6100|       |        be adding and subtracting from it, and we don't want to subtract bits
 6101|       |        that may be in the main map already. At the end we or the result into
 6102|       |        the bit map that is being built. */
 6103|       |
 6104|      0|        posix_class *= 3;
 6105|       |
 6106|       |        /* Copy in the first table (always present) */
 6107|       |
 6108|      0|        memcpy(pbits, cbits + posix_class_maps[posix_class],
 6109|      0|          32 * sizeof(uint8_t));
 6110|       |
 6111|       |        /* If there is a second table, add or remove it as required. */
 6112|       |
 6113|      0|        taboffset = posix_class_maps[posix_class + 1];
 6114|      0|        tabopt = posix_class_maps[posix_class + 2];
 6115|       |
 6116|      0|        if (taboffset >= 0)
  ------------------
  |  Branch (6116:13): [True: 0, False: 0]
  ------------------
 6117|      0|          {
 6118|      0|          if (tabopt >= 0)
  ------------------
  |  Branch (6118:15): [True: 0, False: 0]
  ------------------
 6119|      0|            for (int i = 0; i < 32; i++) pbits[i] |= cbits[(int)i + taboffset];
  ------------------
  |  Branch (6119:29): [True: 0, False: 0]
  ------------------
 6120|      0|          else
 6121|      0|            for (int i = 0; i < 32; i++) pbits[i] &= ~cbits[(int)i + taboffset];
  ------------------
  |  Branch (6121:29): [True: 0, False: 0]
  ------------------
 6122|      0|          }
 6123|       |
 6124|       |        /* Now see if we need to remove any special characters. An option
 6125|       |        value of 1 removes vertical space and 2 removes underscore. */
 6126|       |
 6127|      0|        if (tabopt < 0) tabopt = -tabopt;
  ------------------
  |  Branch (6127:13): [True: 0, False: 0]
  ------------------
 6128|      0|        if (tabopt == 1) pbits[1] &= ~0x3c;
  ------------------
  |  Branch (6128:13): [True: 0, False: 0]
  ------------------
 6129|      0|          else if (tabopt == 2) pbits[11] &= 0x7f;
  ------------------
  |  Branch (6129:20): [True: 0, False: 0]
  ------------------
 6130|       |
 6131|       |        /* Add the POSIX table or its complement into the main table that is
 6132|       |        being built and we are done. */
 6133|       |
 6134|      0|        if (local_negate)
  ------------------
  |  Branch (6134:13): [True: 0, False: 0]
  ------------------
 6135|      0|          for (int i = 0; i < 32; i++) classbits[i] |= (uint8_t)(~pbits[i]);
  ------------------
  |  Branch (6135:27): [True: 0, False: 0]
  ------------------
 6136|      0|        else
 6137|      0|          for (int i = 0; i < 32; i++) classbits[i] |= pbits[i];
  ------------------
  |  Branch (6137:27): [True: 0, False: 0]
  ------------------
 6138|       |
 6139|       |        /* Every class contains at least one < 256 character. */
 6140|       |
 6141|      0|        class_has_8bitchar = 1;
 6142|      0|        goto CONTINUE_CLASS;    /* End of POSIX handling */
 6143|      0|        }
 6144|       |
 6145|       |      /* Other than POSIX classes, the only items we should encounter are
 6146|       |      \d-type escapes and literal characters (possibly as ranges). */
 6147|       |
 6148|  2.72k|      if (meta == META_BIGVALUE)
  ------------------
  |  |  217|  2.72k|#define META_BIGVALUE         0x80050000u  /* Next is a literal > META_END */
  ------------------
  |  Branch (6148:11): [True: 0, False: 2.72k]
  ------------------
 6149|      0|        {
 6150|      0|        meta = *(++pptr);
 6151|      0|        goto CLASS_LITERAL;
 6152|      0|        }
 6153|       |
 6154|       |      /* Any other non-literal must be an escape */
 6155|       |
 6156|  2.72k|      if (meta >= META_END)
  ------------------
  |  |  211|  2.72k|#define META_END              0x80000000u  /* End of pattern */
  ------------------
  |  Branch (6156:11): [True: 36, False: 2.69k]
  ------------------
 6157|     36|        {
 6158|     36|        if (META_CODE(meta) != META_ESCAPE)
  ------------------
  |  |  113|     36|#define META_CODE(x)   (x & 0xffff0000u)
  ------------------
                      if (META_CODE(meta) != META_ESCAPE)
  ------------------
  |  |  236|     36|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
  |  Branch (6158:13): [True: 0, False: 36]
  ------------------
 6159|      0|          {
 6160|       |#ifdef DEBUG_SHOW_PARSED
 6161|       |          fprintf(stderr, "** Unrecognized parsed pattern item 0x%.8x "
 6162|       |                          "in character class\n", meta);
 6163|       |#endif
 6164|      0|          *errorcodeptr = ERR89;  /* Internal error - unrecognized. */
 6165|      0|          return 0;
 6166|      0|          }
 6167|     36|        escape = META_DATA(meta);
  ------------------
  |  |  114|     36|#define META_DATA(x)   (x & 0x0000ffffu)
  ------------------
 6168|       |
 6169|       |        /* Every class contains at least one < 256 character. */
 6170|       |
 6171|     36|        class_has_8bitchar++;
 6172|       |
 6173|     36|        switch(escape)
  ------------------
  |  Branch (6173:16): [True: 36, False: 0]
  ------------------
 6174|     36|          {
 6175|      2|          case ESC_d:
  ------------------
  |  Branch (6175:11): [True: 2, False: 34]
  ------------------
 6176|     66|          for (int i = 0; i < 32; i++) classbits[i] |= cbits[i+cbit_digit];
  ------------------
  |  |  583|     64|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
  |  Branch (6176:27): [True: 64, False: 2]
  ------------------
 6177|      2|          break;
 6178|       |
 6179|      0|          case ESC_D:
  ------------------
  |  Branch (6179:11): [True: 0, False: 36]
  ------------------
 6180|      0|          should_flip_negation = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6181|      0|          for (int i = 0; i < 32; i++)
  ------------------
  |  Branch (6181:27): [True: 0, False: 0]
  ------------------
 6182|      0|            classbits[i] |= (uint8_t)(~cbits[i+cbit_digit]);
  ------------------
  |  |  583|      0|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
 6183|      0|          break;
 6184|       |
 6185|      0|          case ESC_w:
  ------------------
  |  Branch (6185:11): [True: 0, False: 36]
  ------------------
 6186|      0|          for (int i = 0; i < 32; i++) classbits[i] |= cbits[i+cbit_word];
  ------------------
  |  |  586|      0|#define cbit_word    160      /* [:word:] or \w */
  ------------------
  |  Branch (6186:27): [True: 0, False: 0]
  ------------------
 6187|      0|          break;
 6188|       |
 6189|      0|          case ESC_W:
  ------------------
  |  Branch (6189:11): [True: 0, False: 36]
  ------------------
 6190|      0|          should_flip_negation = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6191|      0|          for (int i = 0; i < 32; i++)
  ------------------
  |  Branch (6191:27): [True: 0, False: 0]
  ------------------
 6192|      0|            classbits[i] |= (uint8_t)(~cbits[i+cbit_word]);
  ------------------
  |  |  586|      0|#define cbit_word    160      /* [:word:] or \w */
  ------------------
 6193|      0|          break;
 6194|       |
 6195|       |          /* Perl 5.004 onwards omitted VT from \s, but restored it at Perl
 6196|       |          5.18. Before PCRE 8.34, we had to preserve the VT bit if it was
 6197|       |          previously set by something earlier in the character class.
 6198|       |          Luckily, the value of CHAR_VT is 0x0b in both ASCII and EBCDIC, so
 6199|       |          we could just adjust the appropriate bit. From PCRE 8.34 we no
 6200|       |          longer treat \s and \S specially. */
 6201|       |
 6202|      0|          case ESC_s:
  ------------------
  |  Branch (6202:11): [True: 0, False: 36]
  ------------------
 6203|      0|          for (int i = 0; i < 32; i++) classbits[i] |= cbits[i+cbit_space];
  ------------------
  |  |  581|      0|#define cbit_space     0      /* [:space:] or \s */
  ------------------
  |  Branch (6203:27): [True: 0, False: 0]
  ------------------
 6204|      0|          break;
 6205|       |
 6206|      0|          case ESC_S:
  ------------------
  |  Branch (6206:11): [True: 0, False: 36]
  ------------------
 6207|      0|          should_flip_negation = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6208|      0|          for (int i = 0; i < 32; i++)
  ------------------
  |  Branch (6208:27): [True: 0, False: 0]
  ------------------
 6209|      0|            classbits[i] |= (uint8_t)(~cbits[i+cbit_space]);
  ------------------
  |  |  581|      0|#define cbit_space     0      /* [:space:] or \s */
  ------------------
 6210|      0|          break;
 6211|       |
 6212|       |          /* When adding the horizontal or vertical space lists to a class, or
 6213|       |          their complements, disable PCRE2_CASELESS, because it justs wastes
 6214|       |          time, and in the "not-x" UTF cases can create unwanted duplicates in
 6215|       |          the XCLASS list (provoked by characters that have more than one other
 6216|       |          case and by both cases being in the same "not-x" sublist). */
 6217|       |
 6218|      0|          case ESC_h:
  ------------------
  |  Branch (6218:11): [True: 0, False: 36]
  ------------------
 6219|      0|          (void)add_list_to_class(classbits, &class_uchardata,
 6220|      0|            options & ~PCRE2_CASELESS, xoptions, cb, PRIV(hspace_list),
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
                          options & ~PCRE2_CASELESS, xoptions, cb, PRIV(hspace_list),
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1954|      0|#define _pcre2_hspace_list             PCRE2_SUFFIX(_pcre2_hspace_list_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6221|      0|              NOTACHAR);
  ------------------
  |  |  223|      0|#define NOTACHAR 0xffffffff
  ------------------
 6222|      0|          break;
 6223|       |
 6224|      8|          case ESC_H:
  ------------------
  |  Branch (6224:11): [True: 8, False: 28]
  ------------------
 6225|      8|          (void)add_not_list_to_class(classbits, &class_uchardata,
 6226|      8|            options & ~PCRE2_CASELESS, xoptions, cb, PRIV(hspace_list));
  ------------------
  |  |  122|      8|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
                          options & ~PCRE2_CASELESS, xoptions, cb, PRIV(hspace_list));
  ------------------
  |  |  195|      8|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1954|      8|#define _pcre2_hspace_list             PCRE2_SUFFIX(_pcre2_hspace_list_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      8|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      8|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      8|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6227|      8|          break;
 6228|       |
 6229|      0|          case ESC_v:
  ------------------
  |  Branch (6229:11): [True: 0, False: 36]
  ------------------
 6230|      0|          (void)add_list_to_class(classbits, &class_uchardata,
 6231|      0|            options & ~PCRE2_CASELESS, xoptions, cb, PRIV(vspace_list),
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
                          options & ~PCRE2_CASELESS, xoptions, cb, PRIV(vspace_list),
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1955|      0|#define _pcre2_vspace_list             PCRE2_SUFFIX(_pcre2_vspace_list_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6232|      0|              NOTACHAR);
  ------------------
  |  |  223|      0|#define NOTACHAR 0xffffffff
  ------------------
 6233|      0|          break;
 6234|       |
 6235|      0|          case ESC_V:
  ------------------
  |  Branch (6235:11): [True: 0, False: 36]
  ------------------
 6236|      0|          (void)add_not_list_to_class(classbits, &class_uchardata,
 6237|      0|            options & ~PCRE2_CASELESS, xoptions, cb, PRIV(vspace_list));
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
                          options & ~PCRE2_CASELESS, xoptions, cb, PRIV(vspace_list));
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1955|      0|#define _pcre2_vspace_list             PCRE2_SUFFIX(_pcre2_vspace_list_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6238|      0|          break;
 6239|       |
 6240|       |          /* If Unicode is not supported, \P and \p are not allowed and are
 6241|       |          faulted at parse time, so will never appear here. */
 6242|       |
 6243|      0|#ifdef SUPPORT_UNICODE
 6244|     26|          case ESC_p:
  ------------------
  |  Branch (6244:11): [True: 26, False: 10]
  ------------------
 6245|     26|          case ESC_P:
  ------------------
  |  Branch (6245:11): [True: 0, False: 36]
  ------------------
 6246|     26|            {
 6247|     26|            uint32_t ptype = *(++pptr) >> 16;
 6248|     26|            uint32_t pdata = *pptr & 0xffff;
 6249|     26|            *class_uchardata++ = (escape == ESC_p)? XCL_PROP : XCL_NOTPROP;
  ------------------
  |  | 1335|     26|#define XCL_PROP     3     /* Unicode property (2-byte property code follows) */
  ------------------
                          *class_uchardata++ = (escape == ESC_p)? XCL_PROP : XCL_NOTPROP;
  ------------------
  |  | 1336|     26|#define XCL_NOTPROP  4     /* Unicode inverted property (ditto) */
  ------------------
  |  Branch (6249:34): [True: 26, False: 0]
  ------------------
 6250|     26|            *class_uchardata++ = ptype;
 6251|     26|            *class_uchardata++ = pdata;
 6252|     26|            xclass_has_prop = TRUE;
  ------------------
  |  |   88|     26|#define TRUE    1
  ------------------
 6253|     26|            class_has_8bitchar--;                /* Undo! */
 6254|     26|            }
 6255|     26|          break;
 6256|     36|#endif
 6257|     36|          }
 6258|       |
 6259|     36|        goto CONTINUE_CLASS;
 6260|     36|        }  /* End handling \d-type escapes */
 6261|       |
 6262|       |      /* A literal character may be followed by a range meta. At parse time
 6263|       |      there are checks for out-of-order characters, for ranges where the two
 6264|       |      characters are equal, and for hyphens that cannot indicate a range. At
 6265|       |      this point, therefore, no checking is needed. */
 6266|       |
 6267|  2.69k|      else
 6268|  2.69k|        {
 6269|  2.69k|        uint32_t c, d;
 6270|       |
 6271|  2.69k|        CLASS_LITERAL:
 6272|  2.69k|        c = d = meta;
 6273|       |
 6274|       |        /* Remember if \r or \n were explicitly used */
 6275|       |
 6276|  2.69k|        if (c == CHAR_CR || c == CHAR_NL) cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  990|  5.38k|#define CHAR_CR                     '\015'
  ------------------
                      if (c == CHAR_CR || c == CHAR_NL) cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  992|  2.57k|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|  2.57k|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
                      if (c == CHAR_CR || c == CHAR_NL) cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  536|    166|#define PCRE2_HASCRORLF     0x00000800  /* explicit \r or \n in pattern */
  ------------------
  |  Branch (6276:13): [True: 114, False: 2.57k]
  |  Branch (6276:29): [True: 52, False: 2.52k]
  ------------------
 6277|       |
 6278|       |        /* Process a character range */
 6279|       |
 6280|  2.69k|        if (pptr[1] == META_RANGE_LITERAL || pptr[1] == META_RANGE_ESCAPED)
  ------------------
  |  |  243|  5.38k|#define META_RANGE_LITERAL    0x801f0000u  /* range defined literally */
  ------------------
                      if (pptr[1] == META_RANGE_LITERAL || pptr[1] == META_RANGE_ESCAPED)
  ------------------
  |  |  242|  2.69k|#define META_RANGE_ESCAPED    0x801e0000u  /* range with at least one escape */
  ------------------
  |  Branch (6280:13): [True: 2, False: 2.69k]
  |  Branch (6280:46): [True: 2, False: 2.68k]
  ------------------
 6281|      4|          {
 6282|       |#ifdef EBCDIC
 6283|       |          BOOL range_is_literal = (pptr[1] == META_RANGE_LITERAL);
 6284|       |#endif
 6285|      4|          pptr += 2;
 6286|      4|          d = *pptr;
 6287|      4|          if (d == META_BIGVALUE) d = *(++pptr);
  ------------------
  |  |  217|      4|#define META_BIGVALUE         0x80050000u  /* Next is a literal > META_END */
  ------------------
  |  Branch (6287:15): [True: 0, False: 4]
  ------------------
 6288|       |
 6289|       |          /* Remember an explicit \r or \n, and add the range to the class. */
 6290|       |
 6291|      4|          if (d == CHAR_CR || d == CHAR_NL) cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  990|      8|#define CHAR_CR                     '\015'
  ------------------
                        if (d == CHAR_CR || d == CHAR_NL) cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  992|      4|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|      4|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
                        if (d == CHAR_CR || d == CHAR_NL) cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  536|      0|#define PCRE2_HASCRORLF     0x00000800  /* explicit \r or \n in pattern */
  ------------------
  |  Branch (6291:15): [True: 0, False: 4]
  |  Branch (6291:31): [True: 0, False: 4]
  ------------------
 6292|       |
 6293|       |          /* In an EBCDIC environment, Perl treats alphabetic ranges specially
 6294|       |          because there are holes in the encoding, and simply using the range
 6295|       |          A-Z (for example) would include the characters in the holes. This
 6296|       |          applies only to literal ranges; [\xC1-\xE9] is different to [A-Z]. */
 6297|       |
 6298|       |#ifdef EBCDIC
 6299|       |          if (range_is_literal &&
 6300|       |               (cb->ctypes[c] & ctype_letter) != 0 &&
 6301|       |               (cb->ctypes[d] & ctype_letter) != 0 &&
 6302|       |               (c <= CHAR_z) == (d <= CHAR_z))
 6303|       |            {
 6304|       |            uint32_t uc = (d <= CHAR_z)? 0 : 64;
 6305|       |            uint32_t C = c - uc;
 6306|       |            uint32_t D = d - uc;
 6307|       |
 6308|       |            if (C <= CHAR_i)
 6309|       |              {
 6310|       |              class_has_8bitchar +=
 6311|       |                add_to_class(classbits, &class_uchardata, options, xoptions,
 6312|       |                  cb, C + uc, ((D < CHAR_i)? D : CHAR_i) + uc);
 6313|       |              C = CHAR_j;
 6314|       |              }
 6315|       |
 6316|       |            if (C <= D && C <= CHAR_r)
 6317|       |              {
 6318|       |              class_has_8bitchar +=
 6319|       |                add_to_class(classbits, &class_uchardata, options, xoptions,
 6320|       |                  cb, C + uc, ((D < CHAR_r)? D : CHAR_r) + uc);
 6321|       |              C = CHAR_s;
 6322|       |              }
 6323|       |
 6324|       |            if (C <= D)
 6325|       |              {
 6326|       |              class_has_8bitchar +=
 6327|       |                add_to_class(classbits, &class_uchardata, options, xoptions,
 6328|       |                  cb, C + uc, D + uc);
 6329|       |              }
 6330|       |            }
 6331|       |          else
 6332|       |#endif
 6333|       |          /* Not an EBCDIC special range */
 6334|       |
 6335|      4|          class_has_8bitchar += add_to_class(classbits, &class_uchardata,
 6336|      4|            options, xoptions, cb, c, d);
 6337|      4|          goto CONTINUE_CLASS;   /* Go get the next char in the class */
 6338|      4|          }  /* End of range handling */
 6339|       |
 6340|       |
 6341|       |        /* Handle a single character. */
 6342|       |
 6343|  2.68k|        class_has_8bitchar +=
 6344|  2.68k|          add_to_class(classbits, &class_uchardata, options, xoptions, cb,
 6345|  2.68k|            meta, meta);
 6346|  2.68k|        }
 6347|       |
 6348|       |      /* Continue to the next item in the class. */
 6349|       |
 6350|  2.72k|      CONTINUE_CLASS:
 6351|       |
 6352|  2.72k|#ifdef SUPPORT_WIDE_CHARS
 6353|       |      /* If any wide characters or Unicode properties have been encountered,
 6354|       |      set xclass = TRUE. Then, in the pre-compile phase, accumulate the length
 6355|       |      of the extra data and reset the pointer. This is so that very large
 6356|       |      classes that contain a zillion wide characters or Unicode property tests
 6357|       |      do not overwrite the workspace (which is on the stack). */
 6358|       |
 6359|  2.72k|      if (class_uchardata > class_uchardata_base)
  ------------------
  |  Branch (6359:11): [True: 606, False: 2.12k]
  ------------------
 6360|    606|        {
 6361|    606|        xclass = TRUE;
  ------------------
  |  |   88|    606|#define TRUE    1
  ------------------
 6362|    606|        if (lengthptr != NULL)
  ------------------
  |  Branch (6362:13): [True: 42, False: 564]
  ------------------
 6363|     42|          {
 6364|     42|          *lengthptr += class_uchardata - class_uchardata_base;
 6365|     42|          class_uchardata = class_uchardata_base;
 6366|     42|          }
 6367|    606|        }
 6368|  2.72k|#endif
 6369|       |
 6370|  2.72k|      continue;  /* Needed to avoid error when not supporting wide chars */
 6371|  2.72k|      }   /* End of main class-processing loop */
 6372|       |
 6373|       |    /* If this class is the first thing in the branch, there can be no first
 6374|       |    char setting, whatever the repeat count. Any reqcu setting must remain
 6375|       |    unchanged after any kind of repeat. */
 6376|       |
 6377|    202|    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|    202|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                  if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|     92|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (6377:9): [True: 92, False: 110]
  ------------------
 6378|    202|    zerofirstcu = firstcu;
 6379|    202|    zerofirstcuflags = firstcuflags;
 6380|    202|    zeroreqcu = reqcu;
 6381|    202|    zeroreqcuflags = reqcuflags;
 6382|       |
 6383|       |    /* If there are characters with values > 255, or Unicode property settings
 6384|       |    (\p or \P), we have to compile an extended class, with its own opcode,
 6385|       |    unless there were no property settings and there was a negated special such
 6386|       |    as \S in the class, and PCRE2_UCP is not set, because in that case all
 6387|       |    characters > 255 are in or not in the class, so any that were explicitly
 6388|       |    given as well can be ignored.
 6389|       |
 6390|       |    In the UCP case, if certain negated POSIX classes (ex: [:^ascii:]) were
 6391|       |    were present in a class, we either have to match or not match all wide
 6392|       |    characters (depending on whether the whole class is or is not negated).
 6393|       |    This requirement is indicated by match_all_or_no_wide_chars being true.
 6394|       |    We do this by including an explicit range, which works in both cases.
 6395|       |    This applies only in UTF and 16-bit and 32-bit non-UTF modes, since there
 6396|       |    cannot be any wide characters in 8-bit non-UTF mode.
 6397|       |
 6398|       |    When there *are* properties in a positive UTF-8 or any 16-bit or 32_bit
 6399|       |    class where \S etc is present without PCRE2_UCP, causing an extended class
 6400|       |    to be compiled, we make sure that all characters > 255 are included by
 6401|       |    forcing match_all_or_no_wide_chars to be true.
 6402|       |
 6403|       |    If, when generating an xclass, there are no characters < 256, we can omit
 6404|       |    the bitmap in the actual compiled code. */
 6405|       |
 6406|    202|#ifdef SUPPORT_WIDE_CHARS  /* Defined for 16/32 bits, or 8-bit with Unicode */
 6407|    202|    if (xclass && (
  ------------------
  |  Branch (6407:9): [True: 54, False: 148]
  ------------------
 6408|     54|#ifdef SUPPORT_UNICODE
 6409|     54|        (options & PCRE2_UCP) != 0 ||
  ------------------
  |  |  136|     54|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (6409:9): [True: 50, False: 4]
  ------------------
 6410|      4|#endif
 6411|      4|        xclass_has_prop || !should_flip_negation))
  ------------------
  |  Branch (6411:9): [True: 4, False: 0]
  |  Branch (6411:28): [True: 0, False: 0]
  ------------------
 6412|     54|      {
 6413|     54|      if (match_all_or_no_wide_chars || (
  ------------------
  |  Branch (6413:11): [True: 0, False: 54]
  ------------------
 6414|     54|#if PCRE2_CODE_UNIT_WIDTH == 8
 6415|     54|           utf &&
  ------------------
  |  Branch (6415:12): [True: 50, False: 4]
  ------------------
 6416|     50|#endif
 6417|     50|           should_flip_negation && !negate_class && (options & PCRE2_UCP) == 0))
  ------------------
  |  |  136|      0|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (6417:12): [True: 0, False: 50]
  |  Branch (6417:36): [True: 0, False: 0]
  |  Branch (6417:53): [True: 0, False: 0]
  ------------------
 6418|      0|        {
 6419|      0|        *class_uchardata++ = XCL_RANGE;
  ------------------
  |  | 1334|      0|#define XCL_RANGE    2     /* A range (two multibyte chars) follows */
  ------------------
 6420|      0|        if (utf)   /* Will always be utf in the 8-bit library */
  ------------------
  |  Branch (6420:13): [True: 0, False: 0]
  ------------------
 6421|      0|          {
 6422|      0|          class_uchardata += PRIV(ord2utf)(0x100, class_uchardata);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|      0|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6423|      0|          class_uchardata += PRIV(ord2utf)(MAX_UTF_CODE_POINT, class_uchardata);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|      0|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        class_uchardata += PRIV(ord2utf)(MAX_UTF_CODE_POINT, class_uchardata);
  ------------------
  |  |  227|      0|#define MAX_UTF_CODE_POINT 0x10ffff
  ------------------
 6424|      0|          }
 6425|      0|        else       /* Can only happen for the 16-bit & 32-bit libraries */
 6426|      0|          {
 6427|       |#if PCRE2_CODE_UNIT_WIDTH == 16
 6428|       |          *class_uchardata++ = 0x100;
 6429|       |          *class_uchardata++ = 0xffffu;
 6430|       |#elif PCRE2_CODE_UNIT_WIDTH == 32
 6431|       |          *class_uchardata++ = 0x100;
 6432|       |          *class_uchardata++ = 0xffffffffu;
 6433|       |#endif
 6434|      0|          }
 6435|      0|        }
 6436|     54|      *class_uchardata++ = XCL_END;    /* Marks the end of extra data */
  ------------------
  |  | 1332|     54|#define XCL_END      0     /* Marks end of individual items */
  ------------------
 6437|     54|      *code++ = OP_XCLASS;
 6438|     54|      code += LINK_SIZE;
  ------------------
  |  |   98|     54|#define LINK_SIZE 2
  ------------------
 6439|     54|      *code = negate_class? XCL_NOT:0;
  ------------------
  |  | 1328|     18|#define XCL_NOT      0x01  /* Flag: this is a negative class */
  ------------------
  |  Branch (6439:15): [True: 18, False: 36]
  ------------------
 6440|     54|      if (xclass_has_prop) *code |= XCL_HASPROP;
  ------------------
  |  | 1330|     20|#define XCL_HASPROP  0x04  /* Flag: property checks are present. */
  ------------------
  |  Branch (6440:11): [True: 20, False: 34]
  ------------------
 6441|       |
 6442|       |      /* If the map is required, move up the extra data to make room for it;
 6443|       |      otherwise just move the code pointer to the end of the extra data. */
 6444|       |
 6445|     54|      if (class_has_8bitchar > 0)
  ------------------
  |  Branch (6445:11): [True: 54, False: 0]
  ------------------
 6446|     54|        {
 6447|     54|        *code++ |= XCL_MAP;
  ------------------
  |  | 1329|     54|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
 6448|     54|        (void)memmove(code + (32 / sizeof(PCRE2_UCHAR)), code,
 6449|     54|          CU2BYTES(class_uchardata - code));
  ------------------
  |  |  545|     54|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|     54|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 6450|     54|        if (negate_class && !xclass_has_prop)
  ------------------
  |  Branch (6450:13): [True: 18, False: 36]
  |  Branch (6450:29): [True: 12, False: 6]
  ------------------
 6451|     12|          {
 6452|       |          /* Using 255 ^ instead of ~ avoids clang sanitize warning. */
 6453|    396|          for (int i = 0; i < 32; i++) classbits[i] = 255 ^ classbits[i];
  ------------------
  |  Branch (6453:27): [True: 384, False: 12]
  ------------------
 6454|     12|          }
 6455|     54|        memcpy(code, classbits, 32);
 6456|     54|        code = class_uchardata + (32 / sizeof(PCRE2_UCHAR));
 6457|     54|        }
 6458|      0|      else code = class_uchardata;
 6459|       |
 6460|       |      /* Now fill in the complete length of the item */
 6461|       |
 6462|     54|      PUT(previous, 1, (int)(code - previous));
  ------------------
  |  |  106|     54|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|     54|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 6463|     54|      break;   /* End of class handling */
 6464|     54|      }
 6465|    148|#endif  /* SUPPORT_WIDE_CHARS */
 6466|       |
 6467|       |    /* If there are no characters > 255, or they are all to be included or
 6468|       |    excluded, set the opcode to OP_CLASS or OP_NCLASS, depending on whether the
 6469|       |    whole class was negated and whether there were negative specials such as \S
 6470|       |    (non-UCP) in the class. Then copy the 32-byte map into the code vector,
 6471|       |    negating it if necessary. */
 6472|       |
 6473|    148|    *code++ = (negate_class == should_flip_negation) ? OP_CLASS : OP_NCLASS;
  ------------------
  |  Branch (6473:15): [True: 94, False: 54]
  ------------------
 6474|    148|    if (lengthptr == NULL)    /* Save time in the pre-compile phase */
  ------------------
  |  Branch (6474:9): [True: 74, False: 74]
  ------------------
 6475|     74|      {
 6476|     74|      if (negate_class)
  ------------------
  |  Branch (6476:11): [True: 27, False: 47]
  ------------------
 6477|     27|        {
 6478|       |       /* Using 255 ^ instead of ~ avoids clang sanitize warning. */
 6479|    891|       for (int i = 0; i < 32; i++) classbits[i] = 255 ^ classbits[i];
  ------------------
  |  Branch (6479:24): [True: 864, False: 27]
  ------------------
 6480|     27|       }
 6481|     74|      memcpy(code, classbits, 32);
 6482|     74|      }
 6483|    148|    code += 32 / sizeof(PCRE2_UCHAR);
 6484|    148|    break;  /* End of class processing */
 6485|       |
 6486|       |
 6487|       |    /* ===================================================================*/
 6488|       |    /* Deal with (*VERB)s. */
 6489|       |
 6490|       |    /* Check for open captures before ACCEPT and close those that are within
 6491|       |    the same assertion level, also converting ACCEPT to ASSERT_ACCEPT in an
 6492|       |    assertion. In the first pass, just accumulate the length required;
 6493|       |    otherwise hitting (*ACCEPT) inside many nested parentheses can cause
 6494|       |    workspace overflow. Do not set firstcu after *ACCEPT. */
 6495|       |
 6496|      0|    case META_ACCEPT:
  ------------------
  |  |  266|      0|#define META_ACCEPT           0x802a0000u  /* (*ACCEPT) */
  ------------------
  |  Branch (6496:5): [True: 0, False: 23.7k]
  ------------------
 6497|      0|    cb->had_accept = had_accept = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6498|      0|    for (oc = open_caps;
 6499|      0|         oc != NULL && oc->assert_depth >= cb->assert_depth;
  ------------------
  |  Branch (6499:10): [True: 0, False: 0]
  |  Branch (6499:24): [True: 0, False: 0]
  ------------------
 6500|      0|         oc = oc->next)
 6501|      0|      {
 6502|      0|      if (lengthptr != NULL)
  ------------------
  |  Branch (6502:11): [True: 0, False: 0]
  ------------------
 6503|      0|        {
 6504|      0|        *lengthptr += CU2BYTES(1) + IMM2_SIZE;
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
                      *lengthptr += CU2BYTES(1) + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 6505|      0|        }
 6506|      0|      else
 6507|      0|        {
 6508|      0|        *code++ = OP_CLOSE;
 6509|      0|        PUT2INC(code, 0, oc->number);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 6510|      0|        }
 6511|      0|      }
 6512|      0|    *code++ = (cb->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT;
  ------------------
  |  Branch (6512:15): [True: 0, False: 0]
  ------------------
 6513|      0|    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|      0|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                  if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (6513:9): [True: 0, False: 0]
  ------------------
 6514|      0|    break;
 6515|       |
 6516|      0|    case META_PRUNE:
  ------------------
  |  |  270|      0|#define META_PRUNE            0x802e0000u  /*     must            */
  ------------------
  |  Branch (6516:5): [True: 0, False: 23.7k]
  ------------------
 6517|      0|    case META_SKIP:
  ------------------
  |  |  272|      0|#define META_SKIP             0x80300000u  /*         kept        */
  ------------------
  |  Branch (6517:5): [True: 0, False: 23.7k]
  ------------------
 6518|      0|    cb->had_pruneorskip = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6519|       |    /* Fall through */
 6520|      0|    case META_COMMIT:
  ------------------
  |  |  268|      0|#define META_COMMIT           0x802c0000u  /* These               */
  ------------------
  |  Branch (6520:5): [True: 0, False: 23.7k]
  ------------------
 6521|      0|    case META_FAIL:
  ------------------
  |  |  267|      0|#define META_FAIL             0x802b0000u  /* (*FAIL) */
  ------------------
  |  Branch (6521:5): [True: 0, False: 23.7k]
  ------------------
 6522|      0|    *code++ = verbops[(meta - META_MARK) >> 16];
  ------------------
  |  |  265|      0|#define META_MARK             0x80290000u  /* (*MARK) */
  ------------------
 6523|      0|    break;
 6524|       |
 6525|      0|    case META_THEN:
  ------------------
  |  |  274|      0|#define META_THEN             0x80320000u  /*             this    */
  ------------------
  |  Branch (6525:5): [True: 0, False: 23.7k]
  ------------------
 6526|      0|    cb->external_flags |= PCRE2_HASTHEN;
  ------------------
  |  |  537|      0|#define PCRE2_HASTHEN       0x00001000  /* pattern contains (*THEN) */
  ------------------
 6527|      0|    *code++ = OP_THEN;
 6528|      0|    break;
 6529|       |
 6530|       |    /* Handle verbs with arguments. Arguments can be very long, especially in
 6531|       |    16- and 32-bit modes, and can overflow the workspace in the first pass.
 6532|       |    However, the argument length is constrained to be small enough to fit in
 6533|       |    one code unit. This check happens in parse_regex(). In the first pass,
 6534|       |    instead of putting the argument into memory, we just update the length
 6535|       |    counter and set up an empty argument. */
 6536|       |
 6537|      0|    case META_THEN_ARG:
  ------------------
  |  |  275|      0|#define META_THEN_ARG         0x80330000u  /*               order */
  ------------------
  |  Branch (6537:5): [True: 0, False: 23.7k]
  ------------------
 6538|      0|    cb->external_flags |= PCRE2_HASTHEN;
  ------------------
  |  |  537|      0|#define PCRE2_HASTHEN       0x00001000  /* pattern contains (*THEN) */
  ------------------
 6539|      0|    goto VERB_ARG;
 6540|       |
 6541|      0|    case META_PRUNE_ARG:
  ------------------
  |  |  271|      0|#define META_PRUNE_ARG        0x802f0000u  /*       be            */
  ------------------
  |  Branch (6541:5): [True: 0, False: 23.7k]
  ------------------
 6542|      0|    case META_SKIP_ARG:
  ------------------
  |  |  273|      0|#define META_SKIP_ARG         0x80310000u  /*           in        */
  ------------------
  |  Branch (6542:5): [True: 0, False: 23.7k]
  ------------------
 6543|      0|    cb->had_pruneorskip = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6544|       |    /* Fall through */
 6545|      0|    case META_MARK:
  ------------------
  |  |  265|      0|#define META_MARK             0x80290000u  /* (*MARK) */
  ------------------
  |  Branch (6545:5): [True: 0, False: 23.7k]
  ------------------
 6546|      0|    case META_COMMIT_ARG:
  ------------------
  |  |  269|      0|#define META_COMMIT_ARG       0x802d0000u  /*   pairs             */
  ------------------
  |  Branch (6546:5): [True: 0, False: 23.7k]
  ------------------
 6547|      0|    VERB_ARG:
 6548|      0|    *code++ = verbops[(meta - META_MARK) >> 16];
  ------------------
  |  |  265|      0|#define META_MARK             0x80290000u  /* (*MARK) */
  ------------------
 6549|       |    /* The length is in characters. */
 6550|      0|    verbarglen = *(++pptr);
 6551|      0|    verbculen = 0;
 6552|      0|    tempcode = code++;
 6553|      0|    for (int i = 0; i < (int)verbarglen; i++)
  ------------------
  |  Branch (6553:21): [True: 0, False: 0]
  ------------------
 6554|      0|      {
 6555|      0|      meta = *(++pptr);
 6556|      0|#ifdef SUPPORT_UNICODE
 6557|      0|      if (utf) mclength = PRIV(ord2utf)(meta, mcbuffer); else
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|      0|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6557:11): [True: 0, False: 0]
  ------------------
 6558|      0|#endif
 6559|      0|        {
 6560|      0|        mclength = 1;
 6561|      0|        mcbuffer[0] = meta;
 6562|      0|        }
 6563|      0|      if (lengthptr != NULL) *lengthptr += mclength; else
  ------------------
  |  Branch (6563:11): [True: 0, False: 0]
  ------------------
 6564|      0|        {
 6565|      0|        memcpy(code, mcbuffer, CU2BYTES(mclength));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 6566|      0|        code += mclength;
 6567|      0|        verbculen += mclength;
 6568|      0|        }
 6569|      0|      }
 6570|       |
 6571|      0|    *tempcode = verbculen;   /* Fill in the code unit length */
 6572|      0|    *code++ = 0;             /* Terminating zero */
 6573|      0|    break;
 6574|       |
 6575|       |
 6576|       |    /* ===================================================================*/
 6577|       |    /* Handle options change. The new setting must be passed back for use in
 6578|       |    subsequent branches. Reset the greedy defaults and the case value for
 6579|       |    firstcu and reqcu. */
 6580|       |
 6581|      0|    case META_OPTIONS:
  ------------------
  |  |  239|      0|#define META_OPTIONS          0x801b0000u  /* (?i) and friends */
  ------------------
  |  Branch (6581:5): [True: 0, False: 23.7k]
  ------------------
 6582|      0|    *optionsptr = options = *(++pptr);
 6583|      0|    *xoptionsptr = xoptions = *(++pptr);
 6584|      0|    greedy_default = ((options & PCRE2_UNGREEDY) != 0);
  ------------------
  |  |  137|      0|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  ------------------
 6585|      0|    greedy_non_default = greedy_default ^ 1;
 6586|      0|    req_caseopt = ((options & PCRE2_CASELESS) != 0)? REQ_CASELESS : 0;
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
                  req_caseopt = ((options & PCRE2_CASELESS) != 0)? REQ_CASELESS : 0;
  ------------------
  |  |  395|      0|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
  |  Branch (6586:19): [True: 0, False: 0]
  ------------------
 6587|      0|    break;
 6588|       |
 6589|       |
 6590|       |    /* ===================================================================*/
 6591|       |    /* Handle conditional subpatterns. The case of (?(Rdigits) is ambiguous
 6592|       |    because it could be a numerical check on recursion, or a name check on a
 6593|       |    group's being set. The pre-pass sets up META_COND_RNUMBER as a name so that
 6594|       |    we can handle it either way. We first try for a name; if not found, process
 6595|       |    the number. */
 6596|       |
 6597|      0|    case META_COND_RNUMBER:   /* (?(Rdigits) */
  ------------------
  |  |  232|      0|#define META_COND_RNUMBER     0x80140000u  /* (?(Rdigits)... */
  ------------------
  |  Branch (6597:5): [True: 0, False: 23.7k]
  ------------------
 6598|      0|    case META_COND_NAME:      /* (?(name) or (?'name') or ?(<name>) */
  ------------------
  |  |  229|      0|#define META_COND_NAME        0x80110000u  /* (?(<name>)... */
  ------------------
  |  Branch (6598:5): [True: 0, False: 23.7k]
  ------------------
 6599|      0|    case META_COND_RNAME:     /* (?(R&name) - test for recursion */
  ------------------
  |  |  231|      0|#define META_COND_RNAME       0x80130000u  /* (?(R&name)... */
  ------------------
  |  Branch (6599:5): [True: 0, False: 23.7k]
  ------------------
 6600|      0|    bravalue = OP_COND;
 6601|      0|      {
 6602|      0|      int count, index;
 6603|      0|      unsigned int i;
 6604|      0|      PCRE2_SPTR name;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6605|      0|      named_group *ng = cb->named_groups;
  ------------------
  |  | 2010|      0|#define named_group                  PCRE2_SUFFIX(named_group_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6606|      0|      uint32_t length = *(++pptr);
 6607|       |
 6608|      0|      GETPLUSOFFSET(offset, pptr);
  ------------------
  |  |  104|      0|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 6609|      0|      name = cb->start_pattern + offset;
 6610|       |
 6611|       |      /* In the first pass, the names generated in the pre-pass are available,
 6612|       |      but the main name table has not yet been created. Scan the list of names
 6613|       |      generated in the pre-pass in order to get a number and whether or not
 6614|       |      this name is duplicated. If it is not duplicated, we can handle it as a
 6615|       |      numerical group. */
 6616|       |
 6617|      0|      for (i = 0; i < cb->names_found; i++, ng++)
  ------------------
  |  Branch (6617:19): [True: 0, False: 0]
  ------------------
 6618|      0|        {
 6619|      0|        if (length == ng->length &&
  ------------------
  |  Branch (6619:13): [True: 0, False: 0]
  ------------------
 6620|      0|            PRIV(strncmp)(name, ng->name, length) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2036|      0|#define _pcre2_strncmp               PCRE2_SUFFIX(_pcre2_strncmp_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6620:13): [True: 0, False: 0]
  ------------------
 6621|      0|          {
 6622|      0|          if (!ng->isdup)
  ------------------
  |  Branch (6622:15): [True: 0, False: 0]
  ------------------
 6623|      0|            {
 6624|      0|            code[1+LINK_SIZE] = (meta == META_COND_RNAME)? OP_RREF : OP_CREF;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                          code[1+LINK_SIZE] = (meta == META_COND_RNAME)? OP_RREF : OP_CREF;
  ------------------
  |  |  231|      0|#define META_COND_RNAME       0x80130000u  /* (?(R&name)... */
  ------------------
  |  Branch (6624:33): [True: 0, False: 0]
  ------------------
 6625|      0|            PUT2(code, 2+LINK_SIZE, ng->number);
  ------------------
  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  ------------------
 6626|      0|            if (ng->number > cb->top_backref) cb->top_backref = ng->number;
  ------------------
  |  Branch (6626:17): [True: 0, False: 0]
  ------------------
 6627|      0|            skipunits = 1+IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 6628|      0|            goto GROUP_PROCESS_NOTE_EMPTY;
 6629|      0|            }
 6630|      0|          break;  /* Found a duplicated name */
 6631|      0|          }
 6632|      0|        }
 6633|       |
 6634|       |      /* If the name was not found we have a bad reference, unless we are
 6635|       |      dealing with R<digits>, which is treated as a recursion test by number.
 6636|       |      */
 6637|       |
 6638|      0|      if (i >= cb->names_found)
  ------------------
  |  Branch (6638:11): [True: 0, False: 0]
  ------------------
 6639|      0|        {
 6640|      0|        groupnumber = 0;
 6641|      0|        if (meta == META_COND_RNUMBER)
  ------------------
  |  |  232|      0|#define META_COND_RNUMBER     0x80140000u  /* (?(Rdigits)... */
  ------------------
  |  Branch (6641:13): [True: 0, False: 0]
  ------------------
 6642|      0|          {
 6643|      0|          for (i = 1; i < length; i++)
  ------------------
  |  Branch (6643:23): [True: 0, False: 0]
  ------------------
 6644|      0|            {
 6645|      0|            groupnumber = groupnumber * 10 + name[i] - CHAR_0;
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
 6646|      0|            if (groupnumber > MAX_GROUP_NUMBER)
  ------------------
  |  |  147|      0|#define MAX_GROUP_NUMBER   65535u
  ------------------
  |  Branch (6646:17): [True: 0, False: 0]
  ------------------
 6647|      0|              {
 6648|      0|              *errorcodeptr = ERR61;
 6649|      0|              cb->erroroffset = offset + i;
 6650|      0|              return 0;
 6651|      0|              }
 6652|      0|            }
 6653|      0|          }
 6654|       |
 6655|      0|        if (meta != META_COND_RNUMBER || groupnumber > cb->bracount)
  ------------------
  |  |  232|      0|#define META_COND_RNUMBER     0x80140000u  /* (?(Rdigits)... */
  ------------------
  |  Branch (6655:13): [True: 0, False: 0]
  |  Branch (6655:42): [True: 0, False: 0]
  ------------------
 6656|      0|          {
 6657|      0|          *errorcodeptr = ERR15;
 6658|      0|          cb->erroroffset = offset;
 6659|      0|          return 0;
 6660|      0|          }
 6661|       |
 6662|       |        /* (?Rdigits) treated as a recursion reference by number. A value of
 6663|       |        zero (which is the result of both (?R) and (?R0)) means "any", and is
 6664|       |        translated into RREF_ANY (which is 0xffff). */
 6665|       |
 6666|      0|        if (groupnumber == 0) groupnumber = RREF_ANY;
  ------------------
  |  | 1816|      0|#define RREF_ANY  0xffff
  ------------------
  |  Branch (6666:13): [True: 0, False: 0]
  ------------------
 6667|      0|        code[1+LINK_SIZE] = OP_RREF;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 6668|      0|        PUT2(code, 2+LINK_SIZE, groupnumber);
  ------------------
  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  ------------------
 6669|      0|        skipunits = 1+IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 6670|      0|        goto GROUP_PROCESS_NOTE_EMPTY;
 6671|      0|        }
 6672|       |
 6673|       |      /* A duplicated name was found. Note that if an R<digits> name is found
 6674|       |      (META_COND_RNUMBER), it is a reference test, not a recursion test. */
 6675|       |
 6676|      0|      code[1+LINK_SIZE] = (meta == META_COND_RNAME)? OP_RREF : OP_CREF;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    code[1+LINK_SIZE] = (meta == META_COND_RNAME)? OP_RREF : OP_CREF;
  ------------------
  |  |  231|      0|#define META_COND_RNAME       0x80130000u  /* (?(R&name)... */
  ------------------
  |  Branch (6676:27): [True: 0, False: 0]
  ------------------
 6677|       |
 6678|       |      /* We have a duplicated name. In the compile pass we have to search the
 6679|       |      main table in order to get the index and count values. */
 6680|       |
 6681|      0|      count = 0;  /* Values for first pass (avoids compiler warning) */
 6682|      0|      index = 0;
 6683|      0|      if (lengthptr == NULL && !find_dupname_details(name, length, &index,
  ------------------
  |  Branch (6683:11): [True: 0, False: 0]
  |  Branch (6683:32): [True: 0, False: 0]
  ------------------
 6684|      0|            &count, errorcodeptr, cb)) return 0;
 6685|       |
 6686|       |      /* Add one to the opcode to change CREF/RREF into DNCREF/DNRREF and
 6687|       |      insert appropriate data values. */
 6688|       |
 6689|      0|      code[1+LINK_SIZE]++;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 6690|      0|      skipunits = 1+2*IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 6691|      0|      PUT2(code, 2+LINK_SIZE, index);
  ------------------
  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  ------------------
 6692|      0|      PUT2(code, 2+LINK_SIZE+IMM2_SIZE, count);
  ------------------
  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  ------------------
 6693|      0|      }
 6694|      0|    goto GROUP_PROCESS_NOTE_EMPTY;
 6695|       |
 6696|       |    /* The DEFINE condition is always false. Its internal groups may never
 6697|       |    be called, so matched_char must remain false, hence the jump to
 6698|       |    GROUP_PROCESS rather than GROUP_PROCESS_NOTE_EMPTY. */
 6699|       |
 6700|      0|    case META_COND_DEFINE:
  ------------------
  |  |  228|      0|#define META_COND_DEFINE      0x80100000u  /* (?(DEFINE)... */
  ------------------
  |  Branch (6700:5): [True: 0, False: 23.7k]
  ------------------
 6701|      0|    bravalue = OP_COND;
 6702|      0|    GETPLUSOFFSET(offset, pptr);
  ------------------
  |  |  104|      0|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 6703|      0|    code[1+LINK_SIZE] = OP_DEFINE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 6704|      0|    skipunits = 1;
 6705|      0|    goto GROUP_PROCESS;
 6706|       |
 6707|       |    /* Conditional test of a group's being set. */
 6708|       |
 6709|      0|    case META_COND_NUMBER:
  ------------------
  |  |  230|      0|#define META_COND_NUMBER      0x80120000u  /* (?(digits)... */
  ------------------
  |  Branch (6709:5): [True: 0, False: 23.7k]
  ------------------
 6710|      0|    bravalue = OP_COND;
 6711|      0|    GETPLUSOFFSET(offset, pptr);
  ------------------
  |  |  104|      0|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 6712|      0|    groupnumber = *(++pptr);
 6713|      0|    if (groupnumber > cb->bracount)
  ------------------
  |  Branch (6713:9): [True: 0, False: 0]
  ------------------
 6714|      0|      {
 6715|      0|      *errorcodeptr = ERR15;
 6716|      0|      cb->erroroffset = offset;
 6717|      0|      return 0;
 6718|      0|      }
 6719|      0|    if (groupnumber > cb->top_backref) cb->top_backref = groupnumber;
  ------------------
  |  Branch (6719:9): [True: 0, False: 0]
  ------------------
 6720|      0|    offset -= 2;   /* Point at initial ( for too many branches error */
 6721|      0|    code[1+LINK_SIZE] = OP_CREF;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 6722|      0|    skipunits = 1+IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 6723|      0|    PUT2(code, 2+LINK_SIZE, groupnumber);
  ------------------
  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  ------------------
 6724|      0|    goto GROUP_PROCESS_NOTE_EMPTY;
 6725|       |
 6726|       |    /* Test for the PCRE2 version. */
 6727|       |
 6728|      0|    case META_COND_VERSION:
  ------------------
  |  |  233|      0|#define META_COND_VERSION     0x80150000u  /* (?(VERSION<op>x.y)... */
  ------------------
  |  Branch (6728:5): [True: 0, False: 23.7k]
  ------------------
 6729|      0|    bravalue = OP_COND;
 6730|      0|    if (pptr[1] > 0)
  ------------------
  |  Branch (6730:9): [True: 0, False: 0]
  ------------------
 6731|      0|      code[1+LINK_SIZE] = ((PCRE2_MAJOR > pptr[2]) ||
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    code[1+LINK_SIZE] = ((PCRE2_MAJOR > pptr[2]) ||
  ------------------
  |  |   44|      0|#define PCRE2_MAJOR           10
  ------------------
  |  Branch (6731:28): [True: 0, False: 0]
  ------------------
 6732|      0|        (PCRE2_MAJOR == pptr[2] && PCRE2_MINOR >= pptr[3]))?
  ------------------
  |  |   44|      0|#define PCRE2_MAJOR           10
  ------------------
                      (PCRE2_MAJOR == pptr[2] && PCRE2_MINOR >= pptr[3]))?
  ------------------
  |  |   45|      0|#define PCRE2_MINOR           44
  ------------------
  |  Branch (6732:10): [True: 0, False: 0]
  |  Branch (6732:36): [True: 0, False: 0]
  ------------------
 6733|      0|          OP_TRUE : OP_FALSE;
 6734|      0|    else
 6735|      0|      code[1+LINK_SIZE] = (PCRE2_MAJOR == pptr[2] && PCRE2_MINOR == pptr[3])?
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    code[1+LINK_SIZE] = (PCRE2_MAJOR == pptr[2] && PCRE2_MINOR == pptr[3])?
  ------------------
  |  |   44|      0|#define PCRE2_MAJOR           10
  ------------------
                    code[1+LINK_SIZE] = (PCRE2_MAJOR == pptr[2] && PCRE2_MINOR == pptr[3])?
  ------------------
  |  |   45|      0|#define PCRE2_MINOR           44
  ------------------
  |  Branch (6735:28): [True: 0, False: 0]
  |  Branch (6735:54): [True: 0, False: 0]
  ------------------
 6736|      0|        OP_TRUE : OP_FALSE;
 6737|      0|    skipunits = 1;
 6738|      0|    pptr += 3;
 6739|      0|    goto GROUP_PROCESS_NOTE_EMPTY;
 6740|       |
 6741|       |    /* The condition is an assertion, possibly preceded by a callout. */
 6742|       |
 6743|      0|    case META_COND_ASSERT:
  ------------------
  |  |  227|      0|#define META_COND_ASSERT      0x800f0000u  /* (?(?assertion)... */
  ------------------
  |  Branch (6743:5): [True: 0, False: 23.7k]
  ------------------
 6744|      0|    bravalue = OP_COND;
 6745|      0|    goto GROUP_PROCESS_NOTE_EMPTY;
 6746|       |
 6747|       |
 6748|       |    /* ===================================================================*/
 6749|       |    /* Handle all kinds of nested bracketed groups. The non-capturing,
 6750|       |    non-conditional cases are here; others come to GROUP_PROCESS via goto. */
 6751|       |
 6752|      2|    case META_LOOKAHEAD:
  ------------------
  |  |  251|      2|#define META_LOOKAHEAD        0x80230000u  /* (?= */
  ------------------
  |  Branch (6752:5): [True: 2, False: 23.7k]
  ------------------
 6753|      2|    bravalue = OP_ASSERT;
 6754|      2|    cb->assert_depth += 1;
 6755|      2|    goto GROUP_PROCESS;
 6756|       |
 6757|      0|    case META_LOOKAHEAD_NA:
  ------------------
  |  |  258|      0|#define META_LOOKAHEAD_NA     0x80270000u  /* (*napla: */
  ------------------
  |  Branch (6757:5): [True: 0, False: 23.7k]
  ------------------
 6758|      0|    bravalue = OP_ASSERT_NA;
 6759|      0|    cb->assert_depth += 1;
 6760|      0|    goto GROUP_PROCESS;
 6761|       |
 6762|       |    /* Optimize (?!) to (*FAIL) unless it is quantified - which is a weird
 6763|       |    thing to do, but Perl allows all assertions to be quantified, and when
 6764|       |    they contain capturing parentheses there may be a potential use for
 6765|       |    this feature. Not that that applies to a quantified (?!) but we allow
 6766|       |    it for uniformity. */
 6767|       |
 6768|      0|    case META_LOOKAHEADNOT:
  ------------------
  |  |  252|      0|#define META_LOOKAHEADNOT     0x80240000u  /* (?! */
  ------------------
  |  Branch (6768:5): [True: 0, False: 23.7k]
  ------------------
 6769|      0|    if (pptr[1] == META_KET &&
  ------------------
  |  |  237|      0|#define META_KET              0x80190000u  /* closing parenthesis */
  ------------------
  |  Branch (6769:9): [True: 0, False: 0]
  ------------------
 6770|      0|         (pptr[2] < META_ASTERISK || pptr[2] > META_MINMAX_QUERY))
  ------------------
  |  |  279|      0|#define META_ASTERISK         0x80340000u  /* *  */
  ------------------
                       (pptr[2] < META_ASTERISK || pptr[2] > META_MINMAX_QUERY))
  ------------------
  |  |  290|      0|#define META_MINMAX_QUERY     0x803f0000u  /* {n,m}? repeat */
  ------------------
  |  Branch (6770:11): [True: 0, False: 0]
  |  Branch (6770:38): [True: 0, False: 0]
  ------------------
 6771|      0|      {
 6772|      0|      *code++ = OP_FAIL;
 6773|      0|      pptr++;
 6774|      0|      }
 6775|      0|    else
 6776|      0|      {
 6777|      0|      bravalue = OP_ASSERT_NOT;
 6778|      0|      cb->assert_depth += 1;
 6779|      0|      goto GROUP_PROCESS;
 6780|      0|      }
 6781|      0|    break;
 6782|       |
 6783|      0|    case META_LOOKBEHIND:
  ------------------
  |  |  253|      0|#define META_LOOKBEHIND       0x80250000u  /* (?<= */
  ------------------
  |  Branch (6783:5): [True: 0, False: 23.7k]
  ------------------
 6784|      0|    bravalue = OP_ASSERTBACK;
 6785|      0|    cb->assert_depth += 1;
 6786|      0|    goto GROUP_PROCESS;
 6787|       |
 6788|      0|    case META_LOOKBEHINDNOT:
  ------------------
  |  |  254|      0|#define META_LOOKBEHINDNOT    0x80260000u  /* (?<! */
  ------------------
  |  Branch (6788:5): [True: 0, False: 23.7k]
  ------------------
 6789|      0|    bravalue = OP_ASSERTBACK_NOT;
 6790|      0|    cb->assert_depth += 1;
 6791|      0|    goto GROUP_PROCESS;
 6792|       |
 6793|      0|    case META_LOOKBEHIND_NA:
  ------------------
  |  |  259|      0|#define META_LOOKBEHIND_NA    0x80280000u  /* (*naplb: */
  ------------------
  |  Branch (6793:5): [True: 0, False: 23.7k]
  ------------------
 6794|      0|    bravalue = OP_ASSERTBACK_NA;
 6795|      0|    cb->assert_depth += 1;
 6796|      0|    goto GROUP_PROCESS;
 6797|       |
 6798|      0|    case META_ATOMIC:
  ------------------
  |  |  214|      0|#define META_ATOMIC           0x80020000u  /* atomic group */
  ------------------
  |  Branch (6798:5): [True: 0, False: 23.7k]
  ------------------
 6799|      0|    bravalue = OP_ONCE;
 6800|      0|    goto GROUP_PROCESS_NOTE_EMPTY;
 6801|       |
 6802|      0|    case META_SCRIPT_RUN:
  ------------------
  |  |  246|      0|#define META_SCRIPT_RUN       0x80220000u  /* (*script_run:...) */
  ------------------
  |  Branch (6802:5): [True: 0, False: 23.7k]
  ------------------
 6803|      0|    bravalue = OP_SCRIPT_RUN;
 6804|      0|    goto GROUP_PROCESS_NOTE_EMPTY;
 6805|       |
 6806|      4|    case META_NOCAPTURE:
  ------------------
  |  |  238|      4|#define META_NOCAPTURE        0x801a0000u  /* no capture parens */
  ------------------
  |  Branch (6806:5): [True: 4, False: 23.7k]
  ------------------
 6807|      4|    bravalue = OP_BRA;
 6808|       |    /* Fall through */
 6809|       |
 6810|       |    /* Process nested bracketed regex. The nesting depth is maintained for the
 6811|       |    benefit of the stackguard function. The test for too deep nesting is now
 6812|       |    done in parse_regex(). Assertion and DEFINE groups come to GROUP_PROCESS;
 6813|       |    others come to GROUP_PROCESS_NOTE_EMPTY, to indicate that we need to take
 6814|       |    note of whether or not they may match an empty string. */
 6815|       |
 6816|     32|    GROUP_PROCESS_NOTE_EMPTY:
 6817|     32|    note_group_empty = TRUE;
  ------------------
  |  |   88|     32|#define TRUE    1
  ------------------
 6818|       |
 6819|     34|    GROUP_PROCESS:
 6820|     34|    cb->parens_depth += 1;
 6821|     34|    *code = bravalue;
 6822|     34|    pptr++;
 6823|     34|    tempcode = code;
 6824|     34|    tempreqvary = cb->req_varyopt;        /* Save value before group */
 6825|     34|    length_prevgroup = 0;                 /* Initialize for pre-compile phase */
 6826|       |
 6827|     34|    if ((group_return =
  ------------------
  |  Branch (6827:9): [True: 0, False: 34]
  ------------------
 6828|     34|         compile_regex(
 6829|     34|         options,                         /* The options state */
 6830|     34|         xoptions,                        /* The extra options state */
 6831|     34|         &tempcode,                       /* Where to put code (updated) */
 6832|     34|         &pptr,                           /* Input pointer (updated) */
 6833|     34|         errorcodeptr,                    /* Where to put an error message */
 6834|     34|         skipunits,                       /* Skip over bracket number */
 6835|     34|         &subfirstcu,                     /* For possible first char */
 6836|     34|         &subfirstcuflags,
 6837|     34|         &subreqcu,                       /* For possible last char */
 6838|     34|         &subreqcuflags,
 6839|     34|         bcptr,                           /* Current branch chain */
 6840|     34|         open_caps,                       /* Pointer to capture stack */
 6841|     34|         cb,                              /* Compile data block */
 6842|     34|         (lengthptr == NULL)? NULL :      /* Actual compile phase */
  ------------------
  |  Branch (6842:10): [True: 17, False: 17]
  ------------------
 6843|     34|           &length_prevgroup              /* Pre-compile phase */
 6844|     34|         )) == 0)
 6845|      0|      return 0;  /* Error */
 6846|       |
 6847|     34|    cb->parens_depth -= 1;
 6848|       |
 6849|       |    /* If that was a non-conditional significant group (not an assertion, not a
 6850|       |    DEFINE) that matches at least one character, then the current item matches
 6851|       |    a character. Conditionals are handled below. */
 6852|       |
 6853|     34|    if (note_group_empty && bravalue != OP_COND && group_return > 0)
  ------------------
  |  Branch (6853:9): [True: 32, False: 2]
  |  Branch (6853:29): [True: 32, False: 0]
  |  Branch (6853:52): [True: 18, False: 14]
  ------------------
 6854|     18|      matched_char = TRUE;
  ------------------
  |  |   88|     18|#define TRUE    1
  ------------------
 6855|       |
 6856|       |    /* If we've just compiled an assertion, pop the assert depth. */
 6857|       |
 6858|     34|    if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NA)
  ------------------
  |  Branch (6858:9): [True: 34, False: 0]
  |  Branch (6858:34): [True: 2, False: 32]
  ------------------
 6859|      2|      cb->assert_depth -= 1;
 6860|       |
 6861|       |    /* At the end of compiling, code is still pointing to the start of the
 6862|       |    group, while tempcode has been updated to point past the end of the group.
 6863|       |    The parsed pattern pointer (pptr) is on the closing META_KET.
 6864|       |
 6865|       |    If this is a conditional bracket, check that there are no more than
 6866|       |    two branches in the group, or just one if it's a DEFINE group. We do this
 6867|       |    in the real compile phase, not in the pre-pass, where the whole group may
 6868|       |    not be available. */
 6869|       |
 6870|     34|    if (bravalue == OP_COND && lengthptr == NULL)
  ------------------
  |  Branch (6870:9): [True: 0, False: 34]
  |  Branch (6870:32): [True: 0, False: 0]
  ------------------
 6871|      0|      {
 6872|      0|      PCRE2_UCHAR *tc = code;
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6873|      0|      int condcount = 0;
 6874|       |
 6875|      0|      do {
 6876|      0|         condcount++;
 6877|      0|         tc += GET(tc,1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 6878|      0|         }
 6879|      0|      while (*tc != OP_KET);
  ------------------
  |  Branch (6879:14): [True: 0, False: 0]
  ------------------
 6880|       |
 6881|       |      /* A DEFINE group is never obeyed inline (the "condition" is always
 6882|       |      false). It must have only one branch. Having checked this, change the
 6883|       |      opcode to OP_FALSE. */
 6884|       |
 6885|      0|      if (code[LINK_SIZE+1] == OP_DEFINE)
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (6885:11): [True: 0, False: 0]
  ------------------
 6886|      0|        {
 6887|      0|        if (condcount > 1)
  ------------------
  |  Branch (6887:13): [True: 0, False: 0]
  ------------------
 6888|      0|          {
 6889|      0|          cb->erroroffset = offset;
 6890|      0|          *errorcodeptr = ERR54;
 6891|      0|          return 0;
 6892|      0|          }
 6893|      0|        code[LINK_SIZE+1] = OP_FALSE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 6894|      0|        bravalue = OP_DEFINE;   /* A flag to suppress char handling below */
 6895|      0|        }
 6896|       |
 6897|       |      /* A "normal" conditional group. If there is just one branch, we must not
 6898|       |      make use of its firstcu or reqcu, because this is equivalent to an
 6899|       |      empty second branch. Also, it may match an empty string. If there are two
 6900|       |      branches, this item must match a character if the group must. */
 6901|       |
 6902|      0|      else
 6903|      0|        {
 6904|      0|        if (condcount > 2)
  ------------------
  |  Branch (6904:13): [True: 0, False: 0]
  ------------------
 6905|      0|          {
 6906|      0|          cb->erroroffset = offset;
 6907|      0|          *errorcodeptr = ERR27;
 6908|      0|          return 0;
 6909|      0|          }
 6910|      0|        if (condcount == 1) subfirstcuflags = subreqcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (6910:13): [True: 0, False: 0]
  ------------------
 6911|      0|          else if (group_return > 0) matched_char = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  |  Branch (6911:20): [True: 0, False: 0]
  ------------------
 6912|      0|        }
 6913|      0|      }
 6914|       |
 6915|       |    /* In the pre-compile phase, update the length by the length of the group,
 6916|       |    less the brackets at either end. Then reduce the compiled code to just a
 6917|       |    set of non-capturing brackets so that it doesn't use much memory if it is
 6918|       |    duplicated by a quantifier.*/
 6919|       |
 6920|     34|    if (lengthptr != NULL)
  ------------------
  |  Branch (6920:9): [True: 17, False: 17]
  ------------------
 6921|     17|      {
 6922|     17|      if (OFLOW_MAX - *lengthptr < length_prevgroup - 2 - 2*LINK_SIZE)
  ------------------
  |  |  200|     17|#define OFLOW_MAX (INT_MAX - 20)
  ------------------
                    if (OFLOW_MAX - *lengthptr < length_prevgroup - 2 - 2*LINK_SIZE)
  ------------------
  |  |   98|     17|#define LINK_SIZE 2
  ------------------
  |  Branch (6922:11): [True: 0, False: 17]
  ------------------
 6923|      0|        {
 6924|      0|        *errorcodeptr = ERR20;
 6925|      0|        return 0;
 6926|      0|        }
 6927|     17|      *lengthptr += length_prevgroup - 2 - 2*LINK_SIZE;
  ------------------
  |  |   98|     17|#define LINK_SIZE 2
  ------------------
 6928|     17|      code++;   /* This already contains bravalue */
 6929|     17|      PUTINC(code, 0, 1 + LINK_SIZE);
  ------------------
  |  |  547|     17|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|     17|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|     17|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|     17|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 6930|     17|      *code++ = OP_KET;
 6931|     17|      PUTINC(code, 0, 1 + LINK_SIZE);
  ------------------
  |  |  547|     17|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|     17|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|     17|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|     17|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 6932|     17|      break;    /* No need to waste time with special character handling */
 6933|     17|      }
 6934|       |
 6935|       |    /* Otherwise update the main code pointer to the end of the group. */
 6936|       |
 6937|     17|    code = tempcode;
 6938|       |
 6939|       |    /* For a DEFINE group, required and first character settings are not
 6940|       |    relevant. */
 6941|       |
 6942|     17|    if (bravalue == OP_DEFINE) break;
  ------------------
  |  Branch (6942:9): [True: 0, False: 17]
  ------------------
 6943|       |
 6944|       |    /* Handle updating of the required and first code units for other types of
 6945|       |    group. Update for normal brackets of all kinds, and conditions with two
 6946|       |    branches (see code above). If the bracket is followed by a quantifier with
 6947|       |    zero repeat, we have to back off. Hence the definition of zeroreqcu and
 6948|       |    zerofirstcu outside the main loop so that they can be accessed for the back
 6949|       |    off. */
 6950|       |
 6951|     17|    zeroreqcu = reqcu;
 6952|     17|    zeroreqcuflags = reqcuflags;
 6953|     17|    zerofirstcu = firstcu;
 6954|     17|    zerofirstcuflags = firstcuflags;
 6955|     17|    groupsetfirstcu = FALSE;
  ------------------
  |  |   87|     17|#define FALSE   0
  ------------------
 6956|       |
 6957|     17|    if (bravalue >= OP_ONCE)  /* Not an assertion */
  ------------------
  |  Branch (6957:9): [True: 16, False: 1]
  ------------------
 6958|     16|      {
 6959|       |      /* If we have not yet set a firstcu in this branch, take it from the
 6960|       |      subpattern, remembering that it was set here so that a repeat of more
 6961|       |      than one can replicate it as reqcu if necessary. If the subpattern has
 6962|       |      no firstcu, set "none" for the whole branch. In both cases, a zero
 6963|       |      repeat forces firstcu to "none". */
 6964|       |
 6965|     16|      if (firstcuflags == REQ_UNSET && subfirstcuflags != REQ_UNSET)
  ------------------
  |  |  393|     32|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                    if (firstcuflags == REQ_UNSET && subfirstcuflags != REQ_UNSET)
  ------------------
  |  |  393|      6|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
  |  Branch (6965:11): [True: 6, False: 10]
  |  Branch (6965:40): [True: 5, False: 1]
  ------------------
 6966|      5|        {
 6967|      5|        if (subfirstcuflags < REQ_NONE)
  ------------------
  |  |  394|      5|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (6967:13): [True: 3, False: 2]
  ------------------
 6968|      3|          {
 6969|      3|          firstcu = subfirstcu;
 6970|      3|          firstcuflags = subfirstcuflags;
 6971|      3|          groupsetfirstcu = TRUE;
  ------------------
  |  |   88|      3|#define TRUE    1
  ------------------
 6972|      3|          }
 6973|      2|        else firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      2|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 6974|      5|        zerofirstcuflags = REQ_NONE;
  ------------------
  |  |  394|      5|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 6975|      5|        }
 6976|       |
 6977|       |      /* If firstcu was previously set, convert the subpattern's firstcu
 6978|       |      into reqcu if there wasn't one, using the vary flag that was in
 6979|       |      existence beforehand. */
 6980|       |
 6981|     11|      else if (subfirstcuflags < REQ_NONE && subreqcuflags >= REQ_NONE)
  ------------------
  |  |  394|     22|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
                    else if (subfirstcuflags < REQ_NONE && subreqcuflags >= REQ_NONE)
  ------------------
  |  |  394|      3|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (6981:16): [True: 3, False: 8]
  |  Branch (6981:46): [True: 0, False: 3]
  ------------------
 6982|      0|        {
 6983|      0|        subreqcu = subfirstcu;
 6984|      0|        subreqcuflags = subfirstcuflags | tempreqvary;
 6985|      0|        }
 6986|       |
 6987|       |      /* If the subpattern set a required code unit (or set a first code unit
 6988|       |      that isn't really the first code unit - see above), set it. */
 6989|       |
 6990|     16|      if (subreqcuflags < REQ_NONE)
  ------------------
  |  |  394|     16|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (6990:11): [True: 6, False: 10]
  ------------------
 6991|      6|        {
 6992|      6|        reqcu = subreqcu;
 6993|      6|        reqcuflags = subreqcuflags;
 6994|      6|        }
 6995|     16|      }
 6996|       |
 6997|       |    /* For a forward assertion, we take the reqcu, if set, provided that the
 6998|       |    group has also set a firstcu. This can be helpful if the pattern that
 6999|       |    follows the assertion doesn't set a different char. For example, it's
 7000|       |    useful for /(?=abcde).+/. We can't set firstcu for an assertion, however
 7001|       |    because it leads to incorrect effect for patterns such as /(?=a)a.+/ when
 7002|       |    the "real" "a" would then become a reqcu instead of a firstcu. This is
 7003|       |    overcome by a scan at the end if there's no firstcu, looking for an
 7004|       |    asserted first char. A similar effect for patterns like /(?=.*X)X$/ means
 7005|       |    we must only take the reqcu when the group also set a firstcu. Otherwise,
 7006|       |    in that example, 'X' ends up set for both. */
 7007|       |
 7008|      1|    else if ((bravalue == OP_ASSERT || bravalue == OP_ASSERT_NA) &&
  ------------------
  |  Branch (7008:15): [True: 1, False: 0]
  |  Branch (7008:40): [True: 0, False: 0]
  ------------------
 7009|      1|             subreqcuflags < REQ_NONE && subfirstcuflags < REQ_NONE)
  ------------------
  |  |  394|      2|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
                           subreqcuflags < REQ_NONE && subfirstcuflags < REQ_NONE)
  ------------------
  |  |  394|      1|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (7009:14): [True: 1, False: 0]
  |  Branch (7009:42): [True: 1, False: 0]
  ------------------
 7010|      1|      {
 7011|      1|      reqcu = subreqcu;
 7012|      1|      reqcuflags = subreqcuflags;
 7013|      1|      }
 7014|       |
 7015|     17|    break;  /* End of nested group handling */
 7016|       |
 7017|       |
 7018|       |    /* ===================================================================*/
 7019|       |    /* Handle named backreferences and recursions. */
 7020|       |
 7021|      1|    case META_BACKREF_BYNAME:
  ------------------
  |  |  216|      1|#define META_BACKREF_BYNAME   0x80040000u  /* \k'name' */
  ------------------
  |  Branch (7021:5): [True: 1, False: 23.7k]
  ------------------
 7022|      1|    case META_RECURSE_BYNAME:
  ------------------
  |  |  245|      1|#define META_RECURSE_BYNAME   0x80210000u  /* (?&name) */
  ------------------
  |  Branch (7022:5): [True: 0, False: 23.7k]
  ------------------
 7023|      1|      {
 7024|      1|      int count, index;
 7025|      1|      PCRE2_SPTR name;
  ------------------
  |  |  820|      1|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      1|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      1|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      1|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7026|      1|      BOOL is_dupname = FALSE;
  ------------------
  |  |   87|      1|#define FALSE   0
  ------------------
 7027|      1|      named_group *ng = cb->named_groups;
  ------------------
  |  | 2010|      1|#define named_group                  PCRE2_SUFFIX(named_group_)
  |  |  ------------------
  |  |  |  |  994|      1|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      1|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      1|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7028|      1|      uint32_t length = *(++pptr);
 7029|       |
 7030|      1|      GETPLUSOFFSET(offset, pptr);
  ------------------
  |  |  104|      1|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 7031|      1|      name = cb->start_pattern + offset;
 7032|       |
 7033|       |      /* In the first pass, the names generated in the pre-pass are available,
 7034|       |      but the main name table has not yet been created. Scan the list of names
 7035|       |      generated in the pre-pass in order to get a number and whether or not
 7036|       |      this name is duplicated. */
 7037|       |
 7038|      1|      groupnumber = 0;
 7039|      1|      for (unsigned int i = 0; i < cb->names_found; i++, ng++)
  ------------------
  |  Branch (7039:32): [True: 0, False: 1]
  ------------------
 7040|      0|        {
 7041|      0|        if (length == ng->length &&
  ------------------
  |  Branch (7041:13): [True: 0, False: 0]
  ------------------
 7042|      0|            PRIV(strncmp)(name, ng->name, length) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2036|      0|#define _pcre2_strncmp               PCRE2_SUFFIX(_pcre2_strncmp_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7042:13): [True: 0, False: 0]
  ------------------
 7043|      0|          {
 7044|      0|          is_dupname = ng->isdup;
 7045|      0|          groupnumber = ng->number;
 7046|       |
 7047|       |          /* For a recursion, that's all that is needed. We can now go to
 7048|       |          the code that handles numerical recursion, applying it to the first
 7049|       |          group with the given name. */
 7050|       |
 7051|      0|          if (meta == META_RECURSE_BYNAME)
  ------------------
  |  |  245|      0|#define META_RECURSE_BYNAME   0x80210000u  /* (?&name) */
  ------------------
  |  Branch (7051:15): [True: 0, False: 0]
  ------------------
 7052|      0|            {
 7053|      0|            meta_arg = groupnumber;
 7054|      0|            goto HANDLE_NUMERICAL_RECURSION;
 7055|      0|            }
 7056|       |
 7057|       |          /* For a back reference, update the back reference map and the
 7058|       |          maximum back reference. */
 7059|       |
 7060|      0|          cb->backref_map |= (groupnumber < 32)? (1u << groupnumber) : 1;
  ------------------
  |  Branch (7060:30): [True: 0, False: 0]
  ------------------
 7061|      0|          if (groupnumber > cb->top_backref)
  ------------------
  |  Branch (7061:15): [True: 0, False: 0]
  ------------------
 7062|      0|            cb->top_backref = groupnumber;
 7063|      0|          }
 7064|      0|        }
 7065|       |
 7066|       |      /* If the name was not found we have a bad reference. */
 7067|       |
 7068|      1|      if (groupnumber == 0)
  ------------------
  |  Branch (7068:11): [True: 1, False: 0]
  ------------------
 7069|      1|        {
 7070|      1|        *errorcodeptr = ERR15;
 7071|      1|        cb->erroroffset = offset;
 7072|      1|        return 0;
 7073|      1|        }
 7074|       |
 7075|       |      /* If a back reference name is not duplicated, we can handle it as
 7076|       |      a numerical reference. */
 7077|       |
 7078|      0|      if (!is_dupname)
  ------------------
  |  Branch (7078:11): [True: 0, False: 0]
  ------------------
 7079|      0|        {
 7080|      0|        meta_arg = groupnumber;
 7081|      0|        goto HANDLE_SINGLE_REFERENCE;
 7082|      0|        }
 7083|       |
 7084|       |      /* If a back reference name is duplicated, we generate a different
 7085|       |      opcode to a numerical back reference. In the second pass we must
 7086|       |      search for the index and count in the final name table. */
 7087|       |
 7088|      0|      count = 0;  /* Values for first pass (avoids compiler warning) */
 7089|      0|      index = 0;
 7090|      0|      if (lengthptr == NULL && !find_dupname_details(name, length, &index,
  ------------------
  |  Branch (7090:11): [True: 0, False: 0]
  |  Branch (7090:32): [True: 0, False: 0]
  ------------------
 7091|      0|            &count, errorcodeptr, cb)) return 0;
 7092|       |
 7093|      0|      if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|      0|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (7093:11): [True: 0, False: 0]
  ------------------
 7094|      0|      *code++ = ((options & PCRE2_CASELESS) != 0)? OP_DNREFI : OP_DNREF;
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (7094:17): [True: 0, False: 0]
  ------------------
 7095|      0|      PUT2INC(code, 0, index);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7096|      0|      PUT2INC(code, 0, count);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7097|      0|      }
 7098|      0|    break;
 7099|       |
 7100|       |
 7101|       |    /* ===================================================================*/
 7102|       |    /* Handle a numerical callout. */
 7103|       |
 7104|      0|    case META_CALLOUT_NUMBER:
  ------------------
  |  |  218|      0|#define META_CALLOUT_NUMBER   0x80060000u  /* (?C with numerical argument */
  ------------------
  |  Branch (7104:5): [True: 0, False: 23.7k]
  ------------------
 7105|      0|    code[0] = OP_CALLOUT;
 7106|      0|    PUT(code, 1, pptr[1]);               /* Offset to next pattern item */
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7107|      0|    PUT(code, 1 + LINK_SIZE, pptr[2]);   /* Length of next pattern item */
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7108|      0|    code[1 + 2*LINK_SIZE] = pptr[3];
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7109|      0|    pptr += 3;
 7110|      0|    code += PRIV(OP_lengths)[OP_CALLOUT];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7111|      0|    break;
 7112|       |
 7113|       |
 7114|       |    /* ===================================================================*/
 7115|       |    /* Handle a callout with a string argument. In the pre-pass we just compute
 7116|       |    the length without generating anything. The length in pptr[3] includes both
 7117|       |    delimiters; in the actual compile only the first one is copied, but a
 7118|       |    terminating zero is added. Any doubled delimiters within the string make
 7119|       |    this an overestimate, but it is not worth bothering about. */
 7120|       |
 7121|      0|    case META_CALLOUT_STRING:
  ------------------
  |  |  219|      0|#define META_CALLOUT_STRING   0x80070000u  /* (?C with string argument */
  ------------------
  |  Branch (7121:5): [True: 0, False: 23.7k]
  ------------------
 7122|      0|    if (lengthptr != NULL)
  ------------------
  |  Branch (7122:9): [True: 0, False: 0]
  ------------------
 7123|      0|      {
 7124|      0|      *lengthptr += pptr[3] + (1 + 4*LINK_SIZE);
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7125|      0|      pptr += 3;
 7126|      0|      SKIPOFFSET(pptr);
  ------------------
  |  |  107|      0|#define SKIPOFFSET(p) p += 2
  ------------------
 7127|      0|      }
 7128|       |
 7129|       |    /* In the real compile we can copy the string. The starting delimiter is
 7130|       |     included so that the client can discover it if they want. We also pass the
 7131|       |     start offset to help a script language give better error messages. */
 7132|       |
 7133|      0|    else
 7134|      0|      {
 7135|      0|      PCRE2_SPTR pp;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7136|      0|      uint32_t delimiter;
 7137|      0|      uint32_t length = pptr[3];
 7138|      0|      PCRE2_UCHAR *callout_string = code + (1 + 4*LINK_SIZE);
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    PCRE2_UCHAR *callout_string = code + (1 + 4*LINK_SIZE);
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7139|       |
 7140|      0|      code[0] = OP_CALLOUT_STR;
 7141|      0|      PUT(code, 1, pptr[1]);               /* Offset to next pattern item */
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7142|      0|      PUT(code, 1 + LINK_SIZE, pptr[2]);   /* Length of next pattern item */
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7143|       |
 7144|      0|      pptr += 3;
 7145|      0|      GETPLUSOFFSET(offset, pptr);         /* Offset to string in pattern */
  ------------------
  |  |  104|      0|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 7146|      0|      pp = cb->start_pattern + offset;
 7147|      0|      delimiter = *callout_string++ = *pp++;
 7148|      0|      if (delimiter == CHAR_LEFT_CURLY_BRACKET)
  ------------------
  |  | 1091|      0|#define CHAR_LEFT_CURLY_BRACKET     '\173'
  ------------------
  |  Branch (7148:11): [True: 0, False: 0]
  ------------------
 7149|      0|        delimiter = CHAR_RIGHT_CURLY_BRACKET;
  ------------------
  |  | 1093|      0|#define CHAR_RIGHT_CURLY_BRACKET    '\175'
  ------------------
 7150|      0|      PUT(code, 1 + 3*LINK_SIZE, (int)(offset + 1));  /* One after delimiter */
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7151|       |
 7152|       |      /* The syntax of the pattern was checked in the parsing scan. The length
 7153|       |      includes both delimiters, but we have passed the opening one just above,
 7154|       |      so we reduce length before testing it. The test is for > 1 because we do
 7155|       |      not want to copy the final delimiter. This also ensures that pp[1] is
 7156|       |      accessible. */
 7157|       |
 7158|      0|      while (--length > 1)
  ------------------
  |  Branch (7158:14): [True: 0, False: 0]
  ------------------
 7159|      0|        {
 7160|      0|        if (*pp == delimiter && pp[1] == delimiter)
  ------------------
  |  Branch (7160:13): [True: 0, False: 0]
  |  Branch (7160:33): [True: 0, False: 0]
  ------------------
 7161|      0|          {
 7162|      0|          *callout_string++ = delimiter;
 7163|      0|          pp += 2;
 7164|      0|          length--;
 7165|      0|          }
 7166|      0|        else *callout_string++ = *pp++;
 7167|      0|        }
 7168|      0|      *callout_string++ = CHAR_NUL;
  ------------------
  |  |  999|      0|#define CHAR_NUL                    '\0'
  ------------------
 7169|       |
 7170|       |      /* Set the length of the entire item, the advance to its end. */
 7171|       |
 7172|      0|      PUT(code, 1 + 2*LINK_SIZE, (int)(callout_string - code));
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7173|      0|      code = callout_string;
 7174|      0|      }
 7175|      0|    break;
 7176|       |
 7177|       |
 7178|       |    /* ===================================================================*/
 7179|       |    /* Handle repetition. The different types are all sorted out in the parsing
 7180|       |    pass. */
 7181|       |
 7182|      0|    case META_MINMAX_PLUS:
  ------------------
  |  |  289|      0|#define META_MINMAX_PLUS      0x803e0000u  /* {n,m}+ repeat */
  ------------------
  |  Branch (7182:5): [True: 0, False: 23.7k]
  ------------------
 7183|      0|    case META_MINMAX_QUERY:
  ------------------
  |  |  290|      0|#define META_MINMAX_QUERY     0x803f0000u  /* {n,m}? repeat */
  ------------------
  |  Branch (7183:5): [True: 0, False: 23.7k]
  ------------------
 7184|     14|    case META_MINMAX:
  ------------------
  |  |  288|     14|#define META_MINMAX           0x803d0000u  /* {n,m}  repeat */
  ------------------
  |  Branch (7184:5): [True: 14, False: 23.6k]
  ------------------
 7185|     14|    repeat_min = *(++pptr);
 7186|     14|    repeat_max = *(++pptr);
 7187|     14|    goto REPEAT;
 7188|       |
 7189|    304|    case META_ASTERISK:
  ------------------
  |  |  279|    304|#define META_ASTERISK         0x80340000u  /* *  */
  ------------------
  |  Branch (7189:5): [True: 304, False: 23.4k]
  ------------------
 7190|    304|    case META_ASTERISK_PLUS:
  ------------------
  |  |  280|    304|#define META_ASTERISK_PLUS    0x80350000u  /* *+ */
  ------------------
  |  Branch (7190:5): [True: 0, False: 23.7k]
  ------------------
 7191|    345|    case META_ASTERISK_QUERY:
  ------------------
  |  |  281|    345|#define META_ASTERISK_QUERY   0x80360000u  /* *? */
  ------------------
  |  Branch (7191:5): [True: 41, False: 23.6k]
  ------------------
 7192|    345|    repeat_min = 0;
 7193|    345|    repeat_max = REPEAT_UNLIMITED;
  ------------------
  |  |  149|    345|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|    345|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
 7194|    345|    goto REPEAT;
 7195|       |
 7196|    985|    case META_PLUS:
  ------------------
  |  |  282|    985|#define META_PLUS             0x80370000u  /* +  */
  ------------------
  |  Branch (7196:5): [True: 985, False: 22.7k]
  ------------------
 7197|    999|    case META_PLUS_PLUS:
  ------------------
  |  |  283|    999|#define META_PLUS_PLUS        0x80380000u  /* ++ */
  ------------------
  |  Branch (7197:5): [True: 14, False: 23.6k]
  ------------------
 7198|  1.31k|    case META_PLUS_QUERY:
  ------------------
  |  |  284|  1.31k|#define META_PLUS_QUERY       0x80390000u  /* +? */
  ------------------
  |  Branch (7198:5): [True: 314, False: 23.3k]
  ------------------
 7199|  1.31k|    repeat_min = 1;
 7200|  1.31k|    repeat_max = REPEAT_UNLIMITED;
  ------------------
  |  |  149|  1.31k|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|  1.31k|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
 7201|  1.31k|    goto REPEAT;
 7202|       |
 7203|    729|    case META_QUERY:
  ------------------
  |  |  285|    729|#define META_QUERY            0x803a0000u  /* ?  */
  ------------------
  |  Branch (7203:5): [True: 729, False: 22.9k]
  ------------------
 7204|    781|    case META_QUERY_PLUS:
  ------------------
  |  |  286|    781|#define META_QUERY_PLUS       0x803b0000u  /* ?+ */
  ------------------
  |  Branch (7204:5): [True: 52, False: 23.6k]
  ------------------
 7205|    869|    case META_QUERY_QUERY:
  ------------------
  |  |  287|    869|#define META_QUERY_QUERY      0x803c0000u  /* ?? */
  ------------------
  |  Branch (7205:5): [True: 88, False: 23.6k]
  ------------------
 7206|    869|    repeat_min = 0;
 7207|    869|    repeat_max = 1;
 7208|       |
 7209|  2.54k|    REPEAT:
 7210|  2.54k|    if (previous_matched_char && repeat_min > 0) matched_char = TRUE;
  ------------------
  |  |   88|  1.32k|#define TRUE    1
  ------------------
  |  Branch (7210:9): [True: 2.54k, False: 0]
  |  Branch (7210:34): [True: 1.32k, False: 1.21k]
  ------------------
 7211|       |
 7212|       |    /* Remember whether this is a variable length repeat, and default to
 7213|       |    single-char opcodes. */
 7214|       |
 7215|  2.54k|    reqvary = (repeat_min == repeat_max)? 0 : REQ_VARY;
  ------------------
  |  |  396|  5.06k|#define REQ_VARY      0x00000002u  /* Code unit is followed by non-literal */
  ------------------
  |  Branch (7215:15): [True: 14, False: 2.52k]
  ------------------
 7216|  2.54k|    op_type = 0;
 7217|       |
 7218|       |    /* Adjust first and required code units for a zero repeat. */
 7219|       |
 7220|  2.54k|    if (repeat_min == 0)
  ------------------
  |  Branch (7220:9): [True: 1.21k, False: 1.32k]
  ------------------
 7221|  1.21k|      {
 7222|  1.21k|      firstcu = zerofirstcu;
 7223|  1.21k|      firstcuflags = zerofirstcuflags;
 7224|  1.21k|      reqcu = zeroreqcu;
 7225|  1.21k|      reqcuflags = zeroreqcuflags;
 7226|  1.21k|      }
 7227|       |
 7228|       |    /* Note the greediness and possessiveness. */
 7229|       |
 7230|  2.54k|    switch (meta)
 7231|  2.54k|      {
 7232|      0|      case META_MINMAX_PLUS:
  ------------------
  |  |  289|      0|#define META_MINMAX_PLUS      0x803e0000u  /* {n,m}+ repeat */
  ------------------
  |  Branch (7232:7): [True: 0, False: 2.54k]
  ------------------
 7233|      0|      case META_ASTERISK_PLUS:
  ------------------
  |  |  280|      0|#define META_ASTERISK_PLUS    0x80350000u  /* *+ */
  ------------------
  |  Branch (7233:7): [True: 0, False: 2.54k]
  ------------------
 7234|     14|      case META_PLUS_PLUS:
  ------------------
  |  |  283|     14|#define META_PLUS_PLUS        0x80380000u  /* ++ */
  ------------------
  |  Branch (7234:7): [True: 14, False: 2.52k]
  ------------------
 7235|     66|      case META_QUERY_PLUS:
  ------------------
  |  |  286|     66|#define META_QUERY_PLUS       0x803b0000u  /* ?+ */
  ------------------
  |  Branch (7235:7): [True: 52, False: 2.48k]
  ------------------
 7236|     66|      repeat_type = 0;                  /* Force greedy */
 7237|     66|      possessive_quantifier = TRUE;
  ------------------
  |  |   88|     66|#define TRUE    1
  ------------------
 7238|     66|      break;
 7239|       |
 7240|      0|      case META_MINMAX_QUERY:
  ------------------
  |  |  290|      0|#define META_MINMAX_QUERY     0x803f0000u  /* {n,m}? repeat */
  ------------------
  |  Branch (7240:7): [True: 0, False: 2.54k]
  ------------------
 7241|     41|      case META_ASTERISK_QUERY:
  ------------------
  |  |  281|     41|#define META_ASTERISK_QUERY   0x80360000u  /* *? */
  ------------------
  |  Branch (7241:7): [True: 41, False: 2.50k]
  ------------------
 7242|    355|      case META_PLUS_QUERY:
  ------------------
  |  |  284|    355|#define META_PLUS_QUERY       0x80390000u  /* +? */
  ------------------
  |  Branch (7242:7): [True: 314, False: 2.22k]
  ------------------
 7243|    443|      case META_QUERY_QUERY:
  ------------------
  |  |  287|    443|#define META_QUERY_QUERY      0x803c0000u  /* ?? */
  ------------------
  |  Branch (7243:7): [True: 88, False: 2.45k]
  ------------------
 7244|    443|      repeat_type = greedy_non_default;
 7245|    443|      possessive_quantifier = FALSE;
  ------------------
  |  |   87|    443|#define FALSE   0
  ------------------
 7246|    443|      break;
 7247|       |
 7248|  2.03k|      default:
  ------------------
  |  Branch (7248:7): [True: 2.03k, False: 509]
  ------------------
 7249|  2.03k|      repeat_type = greedy_default;
 7250|  2.03k|      possessive_quantifier = FALSE;
  ------------------
  |  |   87|  2.03k|#define FALSE   0
  ------------------
 7251|  2.03k|      break;
 7252|  2.54k|      }
 7253|       |
 7254|       |    /* Save start of previous item, in case we have to move it up in order to
 7255|       |    insert something before it, and remember what it was. */
 7256|       |
 7257|  2.54k|    tempcode = previous;
 7258|  2.54k|    op_previous = *previous;
 7259|       |
 7260|       |    /* Now handle repetition for the different types of item. If the repeat
 7261|       |    minimum and the repeat maximum are both 1, we can ignore the quantifier for
 7262|       |    non-parenthesized items, as they have only one alternative. For anything in
 7263|       |    parentheses, we must not ignore if {1} is possessive. */
 7264|       |
 7265|  2.54k|    switch (op_previous)
 7266|  2.54k|      {
 7267|       |      /* If previous was a character or negated character match, abolish the
 7268|       |      item and generate a repeat item instead. If a char item has a minimum of
 7269|       |      more than one, ensure that it is set in reqcu - it might not be if a
 7270|       |      sequence such as x{3} is the first thing in a branch because the x will
 7271|       |      have gone into firstcu instead.  */
 7272|       |
 7273|    590|      case OP_CHAR:
  ------------------
  |  Branch (7273:7): [True: 590, False: 1.95k]
  ------------------
 7274|  1.52k|      case OP_CHARI:
  ------------------
  |  Branch (7274:7): [True: 936, False: 1.60k]
  ------------------
 7275|  1.54k|      case OP_NOT:
  ------------------
  |  Branch (7275:7): [True: 14, False: 2.52k]
  ------------------
 7276|  1.55k|      case OP_NOTI:
  ------------------
  |  Branch (7276:7): [True: 16, False: 2.52k]
  ------------------
 7277|  1.55k|      if (repeat_max == 1 && repeat_min == 1) goto END_REPEAT;
  ------------------
  |  Branch (7277:11): [True: 654, False: 902]
  |  Branch (7277:30): [True: 0, False: 654]
  ------------------
 7278|  1.55k|      op_type = chartypeoffset[op_previous - OP_CHAR];
 7279|       |
 7280|       |      /* Deal with UTF characters that take up more than one code unit. */
 7281|       |
 7282|  1.55k|#ifdef MAYBE_UTF_MULTI
 7283|  1.55k|      if (utf && NOT_FIRSTCU(code[-1]))
  ------------------
  |  |  296|    806|#define NOT_FIRSTCU(c) (((c) & 0xc0u) == 0x80u)
  |  |  ------------------
  |  |  |  Branch (296:24): [True: 0, False: 806]
  |  |  ------------------
  ------------------
  |  Branch (7283:11): [True: 806, False: 750]
  ------------------
 7284|      0|        {
 7285|      0|        PCRE2_UCHAR *lastchar = code - 1;
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7286|      0|        BACKCHAR(lastchar);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7287|      0|        mclength = (uint32_t)(code - lastchar);   /* Length of UTF character */
 7288|      0|        memcpy(mcbuffer, lastchar, CU2BYTES(mclength));  /* Save the char */
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7289|      0|        }
 7290|  1.55k|      else
 7291|  1.55k|#endif  /* MAYBE_UTF_MULTI */
 7292|       |
 7293|       |      /* Handle the case of a single code unit - either with no UTF support, or
 7294|       |      with UTF disabled, or for a single-code-unit UTF character. In the latter
 7295|       |      case, for a repeated positive match, get the caseless flag for the
 7296|       |      required code unit from the previous character, because a class like [Aa]
 7297|       |      sets a caseless A but by now the req_caseopt flag has been reset. */
 7298|       |
 7299|  1.55k|        {
 7300|  1.55k|        mcbuffer[0] = code[-1];
 7301|  1.55k|        mclength = 1;
 7302|  1.55k|        if (op_previous <= OP_CHARI && repeat_min > 1)
  ------------------
  |  Branch (7302:13): [True: 1.52k, False: 30]
  |  Branch (7302:40): [True: 14, False: 1.51k]
  ------------------
 7303|     14|          {
 7304|     14|          reqcu = mcbuffer[0];
 7305|     14|          reqcuflags = cb->req_varyopt;
 7306|     14|          if (op_previous == OP_CHARI) reqcuflags |= REQ_CASELESS;
  ------------------
  |  |  395|     12|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
  |  Branch (7306:15): [True: 12, False: 2]
  ------------------
 7307|     14|          }
 7308|  1.55k|        }
 7309|  1.55k|      goto OUTPUT_SINGLE_REPEAT;  /* Code shared with single character types */
 7310|       |
 7311|       |      /* If previous was a character class or a back reference, we put the
 7312|       |      repeat stuff after it, but just skip the item if the repeat was {0,0}. */
 7313|       |
 7314|      0|#ifdef SUPPORT_WIDE_CHARS
 7315|     26|      case OP_XCLASS:
  ------------------
  |  Branch (7315:7): [True: 26, False: 2.51k]
  ------------------
 7316|     26|#endif
 7317|     98|      case OP_CLASS:
  ------------------
  |  Branch (7317:7): [True: 72, False: 2.46k]
  ------------------
 7318|    138|      case OP_NCLASS:
  ------------------
  |  Branch (7318:7): [True: 40, False: 2.50k]
  ------------------
 7319|    138|      case OP_REF:
  ------------------
  |  Branch (7319:7): [True: 0, False: 2.54k]
  ------------------
 7320|    138|      case OP_REFI:
  ------------------
  |  Branch (7320:7): [True: 0, False: 2.54k]
  ------------------
 7321|    138|      case OP_DNREF:
  ------------------
  |  Branch (7321:7): [True: 0, False: 2.54k]
  ------------------
 7322|    138|      case OP_DNREFI:
  ------------------
  |  Branch (7322:7): [True: 0, False: 2.54k]
  ------------------
 7323|       |
 7324|    138|      if (repeat_max == 0)
  ------------------
  |  Branch (7324:11): [True: 0, False: 138]
  ------------------
 7325|      0|        {
 7326|      0|        code = previous;
 7327|      0|        goto END_REPEAT;
 7328|      0|        }
 7329|    138|      if (repeat_max == 1 && repeat_min == 1) goto END_REPEAT;
  ------------------
  |  Branch (7329:11): [True: 56, False: 82]
  |  Branch (7329:30): [True: 0, False: 56]
  ------------------
 7330|       |
 7331|    138|      if (repeat_min == 0 && repeat_max == REPEAT_UNLIMITED)
  ------------------
  |  |  149|     92|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|     92|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7331:11): [True: 92, False: 46]
  |  Branch (7331:30): [True: 36, False: 56]
  ------------------
 7332|     36|        *code++ = OP_CRSTAR + repeat_type;
 7333|    102|      else if (repeat_min == 1 && repeat_max == REPEAT_UNLIMITED)
  ------------------
  |  |  149|     46|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|     46|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7333:16): [True: 46, False: 56]
  |  Branch (7333:35): [True: 46, False: 0]
  ------------------
 7334|     46|        *code++ = OP_CRPLUS + repeat_type;
 7335|     56|      else if (repeat_min == 0 && repeat_max == 1)
  ------------------
  |  Branch (7335:16): [True: 56, False: 0]
  |  Branch (7335:35): [True: 56, False: 0]
  ------------------
 7336|     56|        *code++ = OP_CRQUERY + repeat_type;
 7337|      0|      else
 7338|      0|        {
 7339|      0|        *code++ = OP_CRRANGE + repeat_type;
 7340|      0|        PUT2INC(code, 0, repeat_min);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7341|      0|        if (repeat_max == REPEAT_UNLIMITED) repeat_max = 0;  /* 2-byte encoding for max */
  ------------------
  |  |  149|      0|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7341:13): [True: 0, False: 0]
  ------------------
 7342|      0|        PUT2INC(code, 0, repeat_max);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7343|      0|        }
 7344|    138|      break;
 7345|       |
 7346|       |      /* If previous is OP_FAIL, it was generated by an empty class []
 7347|       |      (PCRE2_ALLOW_EMPTY_CLASS is set). The other ways in which OP_FAIL can be
 7348|       |      generated, that is by (*FAIL) or (?!), disallow a quantifier at parse
 7349|       |      time. We can just ignore this repeat. */
 7350|       |
 7351|      0|      case OP_FAIL:
  ------------------
  |  Branch (7351:7): [True: 0, False: 2.54k]
  ------------------
 7352|      0|      goto END_REPEAT;
 7353|       |
 7354|       |      /* Prior to 10.30, repeated recursions were wrapped in OP_ONCE brackets
 7355|       |      because pcre2_match() could not handle backtracking into recursively
 7356|       |      called groups. Now that this backtracking is available, we no longer need
 7357|       |      to do this. However, we still need to replicate recursions as we do for
 7358|       |      groups so as to have independent backtracking points. We can replicate
 7359|       |      for the minimum number of repeats directly. For optional repeats we now
 7360|       |      wrap the recursion in OP_BRA brackets and make use of the bracket
 7361|       |      repetition. */
 7362|       |
 7363|      0|      case OP_RECURSE:
  ------------------
  |  Branch (7363:7): [True: 0, False: 2.54k]
  ------------------
 7364|      0|      if (repeat_max == 1 && repeat_min == 1 && !possessive_quantifier)
  ------------------
  |  Branch (7364:11): [True: 0, False: 0]
  |  Branch (7364:30): [True: 0, False: 0]
  |  Branch (7364:49): [True: 0, False: 0]
  ------------------
 7365|      0|        goto END_REPEAT;
 7366|       |
 7367|       |      /* Generate unwrapped repeats for a non-zero minimum, except when the
 7368|       |      minimum is 1 and the maximum unlimited, because that can be handled with
 7369|       |      OP_BRA terminated by OP_KETRMAX/MIN. When the maximum is equal to the
 7370|       |      minimum, we just need to generate the appropriate additional copies.
 7371|       |      Otherwise we need to generate one more, to simulate the situation when
 7372|       |      the minimum is zero. */
 7373|       |
 7374|      0|      if (repeat_min > 0 && (repeat_min != 1 || repeat_max != REPEAT_UNLIMITED))
  ------------------
  |  |  149|      0|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7374:11): [True: 0, False: 0]
  |  Branch (7374:30): [True: 0, False: 0]
  |  Branch (7374:49): [True: 0, False: 0]
  ------------------
 7375|      0|        {
 7376|      0|        int replicate = repeat_min;
 7377|      0|        if (repeat_min == repeat_max) replicate--;
  ------------------
  |  Branch (7377:13): [True: 0, False: 0]
  ------------------
 7378|       |
 7379|       |        /* In the pre-compile phase, we don't actually do the replication. We
 7380|       |        just adjust the length as if we had. Do some paranoid checks for
 7381|       |        potential integer overflow. */
 7382|       |
 7383|      0|        if (lengthptr != NULL)
  ------------------
  |  Branch (7383:13): [True: 0, False: 0]
  ------------------
 7384|      0|          {
 7385|      0|          PCRE2_SIZE delta;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 7386|      0|          if (PRIV(ckd_smul)(&delta, replicate, 1 + LINK_SIZE) ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  ------------------
                        if (PRIV(ckd_smul)(&delta, replicate, 1 + LINK_SIZE) ||
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (7386:15): [True: 0, False: 0]
  ------------------
 7387|      0|              OFLOW_MAX - *lengthptr < delta)
  ------------------
  |  |  200|      0|#define OFLOW_MAX (INT_MAX - 20)
  ------------------
  |  Branch (7387:15): [True: 0, False: 0]
  ------------------
 7388|      0|            {
 7389|      0|            *errorcodeptr = ERR20;
 7390|      0|            return 0;
 7391|      0|            }
 7392|      0|          *lengthptr += delta;
 7393|      0|          }
 7394|       |
 7395|      0|        else for (int i = 0; i < replicate; i++)
  ------------------
  |  Branch (7395:30): [True: 0, False: 0]
  ------------------
 7396|      0|          {
 7397|      0|          memcpy(code, previous, CU2BYTES(1 + LINK_SIZE));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7398|      0|          previous = code;
 7399|      0|          code += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7400|      0|          }
 7401|       |
 7402|       |        /* If the number of repeats is fixed, we are done. Otherwise, adjust
 7403|       |        the counts and fall through. */
 7404|       |
 7405|      0|        if (repeat_min == repeat_max) break;
  ------------------
  |  Branch (7405:13): [True: 0, False: 0]
  ------------------
 7406|      0|        if (repeat_max != REPEAT_UNLIMITED) repeat_max -= repeat_min;
  ------------------
  |  |  149|      0|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7406:13): [True: 0, False: 0]
  ------------------
 7407|      0|        repeat_min = 0;
 7408|      0|        }
 7409|       |
 7410|       |      /* Wrap the recursion call in OP_BRA brackets. */
 7411|       |
 7412|      0|      (void)memmove(previous + 1 + LINK_SIZE, previous, CU2BYTES(1 + LINK_SIZE));
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    (void)memmove(previous + 1 + LINK_SIZE, previous, CU2BYTES(1 + LINK_SIZE));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7413|      0|      op_previous = *previous = OP_BRA;
 7414|      0|      PUT(previous, 1, 2 + 2*LINK_SIZE);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7415|      0|      previous[2 + 2*LINK_SIZE] = OP_KET;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7416|      0|      PUT(previous, 3 + 2*LINK_SIZE, 2 + 2*LINK_SIZE);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7417|      0|      code += 2 + 2 * LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7418|      0|      length_prevgroup = 3 + 3*LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7419|      0|      group_return = -1;  /* Set "may match empty string" */
 7420|       |
 7421|       |      /* Now treat as a repeated OP_BRA. */
 7422|       |      /* Fall through */
 7423|       |
 7424|       |      /* If previous was a bracket group, we may have to replicate it in
 7425|       |      certain cases. Note that at this point we can encounter only the "basic"
 7426|       |      bracket opcodes such as BRA and CBRA, as this is the place where they get
 7427|       |      converted into the more special varieties such as BRAPOS and SBRA.
 7428|       |      Originally, PCRE did not allow repetition of assertions, but now it does,
 7429|       |      for Perl compatibility. */
 7430|       |
 7431|      0|      case OP_ASSERT:
  ------------------
  |  Branch (7431:7): [True: 0, False: 2.54k]
  ------------------
 7432|      0|      case OP_ASSERT_NOT:
  ------------------
  |  Branch (7432:7): [True: 0, False: 2.54k]
  ------------------
 7433|      0|      case OP_ASSERT_NA:
  ------------------
  |  Branch (7433:7): [True: 0, False: 2.54k]
  ------------------
 7434|      0|      case OP_ASSERTBACK:
  ------------------
  |  Branch (7434:7): [True: 0, False: 2.54k]
  ------------------
 7435|      0|      case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (7435:7): [True: 0, False: 2.54k]
  ------------------
 7436|      0|      case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (7436:7): [True: 0, False: 2.54k]
  ------------------
 7437|      0|      case OP_ONCE:
  ------------------
  |  Branch (7437:7): [True: 0, False: 2.54k]
  ------------------
 7438|      0|      case OP_SCRIPT_RUN:
  ------------------
  |  Branch (7438:7): [True: 0, False: 2.54k]
  ------------------
 7439|      0|      case OP_BRA:
  ------------------
  |  Branch (7439:7): [True: 0, False: 2.54k]
  ------------------
 7440|      6|      case OP_CBRA:
  ------------------
  |  Branch (7440:7): [True: 6, False: 2.53k]
  ------------------
 7441|      6|      case OP_COND:
  ------------------
  |  Branch (7441:7): [True: 0, False: 2.54k]
  ------------------
 7442|      6|        {
 7443|      6|        int len = (int)(code - previous);
 7444|      6|        PCRE2_UCHAR *bralink = NULL;
  ------------------
  |  |  819|      6|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      6|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      6|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      6|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7445|      6|        PCRE2_UCHAR *brazeroptr = NULL;
  ------------------
  |  |  819|      6|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      6|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      6|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      6|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7446|       |
 7447|      6|        if (repeat_max == 1 && repeat_min == 1 && !possessive_quantifier)
  ------------------
  |  Branch (7447:13): [True: 4, False: 2]
  |  Branch (7447:32): [True: 0, False: 4]
  |  Branch (7447:51): [True: 0, False: 0]
  ------------------
 7448|      0|          goto END_REPEAT;
 7449|       |
 7450|       |        /* Repeating a DEFINE group (or any group where the condition is always
 7451|       |        FALSE and there is only one branch) is pointless, but Perl allows the
 7452|       |        syntax, so we just ignore the repeat. */
 7453|       |
 7454|      6|        if (op_previous == OP_COND && previous[LINK_SIZE+1] == OP_FALSE &&
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (7454:13): [True: 0, False: 6]
  |  Branch (7454:39): [True: 0, False: 0]
  ------------------
 7455|      0|            previous[GET(previous, 1)] != OP_ALT)
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (7455:13): [True: 0, False: 0]
  ------------------
 7456|      0|          goto END_REPEAT;
 7457|       |
 7458|       |        /* Perl allows all assertions to be quantified, and when they contain
 7459|       |        capturing parentheses and/or are optional there are potential uses for
 7460|       |        this feature. PCRE2 used to force the maximum quantifier to 1 on the
 7461|       |        invalid grounds that further repetition was never useful. This was
 7462|       |        always a bit pointless, since an assertion could be wrapped with a
 7463|       |        repeated group to achieve the effect. General repetition is now
 7464|       |        permitted, but if the maximum is unlimited it is set to one more than
 7465|       |        the minimum. */
 7466|       |
 7467|      6|        if (op_previous < OP_ONCE)    /* Assertion */
  ------------------
  |  Branch (7467:13): [True: 0, False: 6]
  ------------------
 7468|      0|          {
 7469|      0|          if (repeat_max == REPEAT_UNLIMITED) repeat_max = repeat_min + 1;
  ------------------
  |  |  149|      0|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7469:15): [True: 0, False: 0]
  ------------------
 7470|      0|          }
 7471|       |
 7472|       |        /* The case of a zero minimum is special because of the need to stick
 7473|       |        OP_BRAZERO in front of it, and because the group appears once in the
 7474|       |        data, whereas in other cases it appears the minimum number of times. For
 7475|       |        this reason, it is simplest to treat this case separately, as otherwise
 7476|       |        the code gets far too messy. There are several special subcases when the
 7477|       |        minimum is zero. */
 7478|       |
 7479|      6|        if (repeat_min == 0)
  ------------------
  |  Branch (7479:13): [True: 6, False: 0]
  ------------------
 7480|      6|          {
 7481|       |          /* If the maximum is also zero, we used to just omit the group from
 7482|       |          the output altogether, like this:
 7483|       |
 7484|       |          ** if (repeat_max == 0)
 7485|       |          **   {
 7486|       |          **   code = previous;
 7487|       |          **   goto END_REPEAT;
 7488|       |          **   }
 7489|       |
 7490|       |          However, that fails when a group or a subgroup within it is
 7491|       |          referenced as a subroutine from elsewhere in the pattern, so now we
 7492|       |          stick in OP_SKIPZERO in front of it so that it is skipped on
 7493|       |          execution. As we don't have a list of which groups are referenced, we
 7494|       |          cannot do this selectively.
 7495|       |
 7496|       |          If the maximum is 1 or unlimited, we just have to stick in the
 7497|       |          BRAZERO and do no more at this point. */
 7498|       |
 7499|      6|          if (repeat_max <= 1 || repeat_max == REPEAT_UNLIMITED)
  ------------------
  |  |  149|      2|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      2|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7499:15): [True: 4, False: 2]
  |  Branch (7499:34): [True: 2, False: 0]
  ------------------
 7500|      6|            {
 7501|      6|            (void)memmove(previous + 1, previous, CU2BYTES(len));
  ------------------
  |  |  545|      6|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      6|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7502|      6|            code++;
 7503|      6|            if (repeat_max == 0)
  ------------------
  |  Branch (7503:17): [True: 0, False: 6]
  ------------------
 7504|      0|              {
 7505|      0|              *previous++ = OP_SKIPZERO;
 7506|      0|              goto END_REPEAT;
 7507|      0|              }
 7508|      6|            brazeroptr = previous;    /* Save for possessive optimizing */
 7509|      6|            *previous++ = OP_BRAZERO + repeat_type;
 7510|      6|            }
 7511|       |
 7512|       |          /* If the maximum is greater than 1 and limited, we have to replicate
 7513|       |          in a nested fashion, sticking OP_BRAZERO before each set of brackets.
 7514|       |          The first one has to be handled carefully because it's the original
 7515|       |          copy, which has to be moved up. The remainder can be handled by code
 7516|       |          that is common with the non-zero minimum case below. We have to
 7517|       |          adjust the value or repeat_max, since one less copy is required. */
 7518|       |
 7519|      0|          else
 7520|      0|            {
 7521|      0|            int linkoffset;
 7522|      0|            (void)memmove(previous + 2 + LINK_SIZE, previous, CU2BYTES(len));
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                          (void)memmove(previous + 2 + LINK_SIZE, previous, CU2BYTES(len));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7523|      0|            code += 2 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7524|      0|            *previous++ = OP_BRAZERO + repeat_type;
 7525|      0|            *previous++ = OP_BRA;
 7526|       |
 7527|       |            /* We chain together the bracket link offset fields that have to be
 7528|       |            filled in later when the ends of the brackets are reached. */
 7529|       |
 7530|      0|            linkoffset = (bralink == NULL)? 0 : (int)(previous - bralink);
  ------------------
  |  Branch (7530:26): [True: 0, False: 0]
  ------------------
 7531|      0|            bralink = previous;
 7532|      0|            PUTINC(previous, 0, linkoffset);
  ------------------
  |  |  547|      0|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|      0|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 7533|      0|            }
 7534|       |
 7535|      6|          if (repeat_max != REPEAT_UNLIMITED) repeat_max--;
  ------------------
  |  |  149|      6|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      6|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7535:15): [True: 4, False: 2]
  ------------------
 7536|      6|          }
 7537|       |
 7538|       |        /* If the minimum is greater than zero, replicate the group as many
 7539|       |        times as necessary, and adjust the maximum to the number of subsequent
 7540|       |        copies that we need. */
 7541|       |
 7542|      0|        else
 7543|      0|          {
 7544|      0|          if (repeat_min > 1)
  ------------------
  |  Branch (7544:15): [True: 0, False: 0]
  ------------------
 7545|      0|            {
 7546|       |            /* In the pre-compile phase, we don't actually do the replication.
 7547|       |            We just adjust the length as if we had. Do some paranoid checks for
 7548|       |            potential integer overflow. */
 7549|       |
 7550|      0|            if (lengthptr != NULL)
  ------------------
  |  Branch (7550:17): [True: 0, False: 0]
  ------------------
 7551|      0|              {
 7552|      0|              PCRE2_SIZE delta;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 7553|      0|              if (PRIV(ckd_smul)(&delta, repeat_min - 1,
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  ------------------
  |  Branch (7553:19): [True: 0, False: 0]
  ------------------
 7554|      0|                                 (int)length_prevgroup) ||
 7555|      0|                  OFLOW_MAX - *lengthptr < delta)
  ------------------
  |  |  200|      0|#define OFLOW_MAX (INT_MAX - 20)
  ------------------
  |  Branch (7555:19): [True: 0, False: 0]
  ------------------
 7556|      0|                {
 7557|      0|                *errorcodeptr = ERR20;
 7558|      0|                return 0;
 7559|      0|                }
 7560|      0|              *lengthptr += delta;
 7561|      0|              }
 7562|       |
 7563|       |            /* This is compiling for real. If there is a set first code unit
 7564|       |            for the group, and we have not yet set a "required code unit", set
 7565|       |            it. */
 7566|       |
 7567|      0|            else
 7568|      0|              {
 7569|      0|              if (groupsetfirstcu && reqcuflags >= REQ_NONE)
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (7569:19): [True: 0, False: 0]
  |  Branch (7569:38): [True: 0, False: 0]
  ------------------
 7570|      0|                {
 7571|      0|                reqcu = firstcu;
 7572|      0|                reqcuflags = firstcuflags;
 7573|      0|                }
 7574|      0|              for (uint32_t i = 1; i < repeat_min; i++)
  ------------------
  |  Branch (7574:36): [True: 0, False: 0]
  ------------------
 7575|      0|                {
 7576|      0|                memcpy(code, previous, CU2BYTES(len));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7577|      0|                code += len;
 7578|      0|                }
 7579|      0|              }
 7580|      0|            }
 7581|       |
 7582|      0|          if (repeat_max != REPEAT_UNLIMITED) repeat_max -= repeat_min;
  ------------------
  |  |  149|      0|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7582:15): [True: 0, False: 0]
  ------------------
 7583|      0|          }
 7584|       |
 7585|       |        /* This code is common to both the zero and non-zero minimum cases. If
 7586|       |        the maximum is limited, it replicates the group in a nested fashion,
 7587|       |        remembering the bracket starts on a stack. In the case of a zero
 7588|       |        minimum, the first one was set up above. In all cases the repeat_max
 7589|       |        now specifies the number of additional copies needed. Again, we must
 7590|       |        remember to replicate entries on the forward reference list. */
 7591|       |
 7592|      6|        if (repeat_max != REPEAT_UNLIMITED)
  ------------------
  |  |  149|      6|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      6|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7592:13): [True: 4, False: 2]
  ------------------
 7593|      4|          {
 7594|       |          /* In the pre-compile phase, we don't actually do the replication. We
 7595|       |          just adjust the length as if we had. For each repetition we must add
 7596|       |          1 to the length for BRAZERO and for all but the last repetition we
 7597|       |          must add 2 + 2*LINKSIZE to allow for the nesting that occurs. Do some
 7598|       |          paranoid checks to avoid integer overflow. */
 7599|       |
 7600|      4|          if (lengthptr != NULL && repeat_max > 0)
  ------------------
  |  Branch (7600:15): [True: 2, False: 2]
  |  Branch (7600:36): [True: 0, False: 2]
  ------------------
 7601|      0|            {
 7602|      0|            PCRE2_SIZE delta;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 7603|      0|            if (PRIV(ckd_smul)(&delta, repeat_max,
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  ------------------
  |  Branch (7603:17): [True: 0, False: 0]
  ------------------
 7604|      0|                               (int)length_prevgroup + 1 + 2 + 2*LINK_SIZE) ||
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7605|      0|                OFLOW_MAX + (2 + 2*LINK_SIZE) - *lengthptr < delta)
  ------------------
  |  |  200|      0|#define OFLOW_MAX (INT_MAX - 20)
  ------------------
                              OFLOW_MAX + (2 + 2*LINK_SIZE) - *lengthptr < delta)
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (7605:17): [True: 0, False: 0]
  ------------------
 7606|      0|              {
 7607|      0|              *errorcodeptr = ERR20;
 7608|      0|              return 0;
 7609|      0|              }
 7610|      0|            delta -= (2 + 2*LINK_SIZE);   /* Last one doesn't nest */
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7611|      0|            *lengthptr += delta;
 7612|      0|            }
 7613|       |
 7614|       |          /* This is compiling for real */
 7615|       |
 7616|      4|          else for (uint32_t i = repeat_max; i >= 1; i--)
  ------------------
  |  Branch (7616:46): [True: 0, False: 4]
  ------------------
 7617|      0|            {
 7618|      0|            *code++ = OP_BRAZERO + repeat_type;
 7619|       |
 7620|       |            /* All but the final copy start a new nesting, maintaining the
 7621|       |            chain of brackets outstanding. */
 7622|       |
 7623|      0|            if (i != 1)
  ------------------
  |  Branch (7623:17): [True: 0, False: 0]
  ------------------
 7624|      0|              {
 7625|      0|              int linkoffset;
 7626|      0|              *code++ = OP_BRA;
 7627|      0|              linkoffset = (bralink == NULL)? 0 : (int)(code - bralink);
  ------------------
  |  Branch (7627:28): [True: 0, False: 0]
  ------------------
 7628|      0|              bralink = code;
 7629|      0|              PUTINC(code, 0, linkoffset);
  ------------------
  |  |  547|      0|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|      0|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 7630|      0|              }
 7631|       |
 7632|      0|            memcpy(code, previous, CU2BYTES(len));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7633|      0|            code += len;
 7634|      0|            }
 7635|       |
 7636|       |          /* Now chain through the pending brackets, and fill in their length
 7637|       |          fields (which are holding the chain links pro tem). */
 7638|       |
 7639|      4|          while (bralink != NULL)
  ------------------
  |  Branch (7639:18): [True: 0, False: 4]
  ------------------
 7640|      0|            {
 7641|      0|            int oldlinkoffset;
 7642|      0|            int linkoffset = (int)(code - bralink + 1);
 7643|      0|            PCRE2_UCHAR *bra = code - linkoffset;
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7644|      0|            oldlinkoffset = GET(bra, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 7645|      0|            bralink = (oldlinkoffset == 0)? NULL : bralink - oldlinkoffset;
  ------------------
  |  Branch (7645:23): [True: 0, False: 0]
  ------------------
 7646|      0|            *code++ = OP_KET;
 7647|      0|            PUTINC(code, 0, linkoffset);
  ------------------
  |  |  547|      0|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|      0|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 7648|      0|            PUT(bra, 1, linkoffset);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7649|      0|            }
 7650|      4|          }
 7651|       |
 7652|       |        /* If the maximum is unlimited, set a repeater in the final copy. For
 7653|       |        SCRIPT_RUN and ONCE brackets, that's all we need to do. However,
 7654|       |        possessively repeated ONCE brackets can be converted into non-capturing
 7655|       |        brackets, as the behaviour of (?:xx)++ is the same as (?>xx)++ and this
 7656|       |        saves having to deal with possessive ONCEs specially.
 7657|       |
 7658|       |        Otherwise, when we are doing the actual compile phase, check to see
 7659|       |        whether this group is one that could match an empty string. If so,
 7660|       |        convert the initial operator to the S form (e.g. OP_BRA -> OP_SBRA) so
 7661|       |        that runtime checking can be done. [This check is also applied to ONCE
 7662|       |        and SCRIPT_RUN groups at runtime, but in a different way.]
 7663|       |
 7664|       |        Then, if the quantifier was possessive and the bracket is not a
 7665|       |        conditional, we convert the BRA code to the POS form, and the KET code
 7666|       |        to KETRPOS. (It turns out to be convenient at runtime to detect this
 7667|       |        kind of subpattern at both the start and at the end.) The use of
 7668|       |        special opcodes makes it possible to reduce greatly the stack usage in
 7669|       |        pcre2_match(). If the group is preceded by OP_BRAZERO, convert this to
 7670|       |        OP_BRAPOSZERO.
 7671|       |
 7672|       |        Then, if the minimum number of matches is 1 or 0, cancel the possessive
 7673|       |        flag so that the default action below, of wrapping everything inside
 7674|       |        atomic brackets, does not happen. When the minimum is greater than 1,
 7675|       |        there will be earlier copies of the group, and so we still have to wrap
 7676|       |        the whole thing. */
 7677|       |
 7678|      2|        else
 7679|      2|          {
 7680|      2|          PCRE2_UCHAR *ketcode = code - 1 - LINK_SIZE;
  ------------------
  |  |  819|      2|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        PCRE2_UCHAR *ketcode = code - 1 - LINK_SIZE;
  ------------------
  |  |   98|      2|#define LINK_SIZE 2
  ------------------
 7681|      2|          PCRE2_UCHAR *bracode = ketcode - GET(ketcode, 1);
  ------------------
  |  |  819|      2|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        PCRE2_UCHAR *bracode = ketcode - GET(ketcode, 1);
  ------------------
  |  |  109|      2|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 7682|       |
 7683|       |          /* Convert possessive ONCE brackets to non-capturing */
 7684|       |
 7685|      2|          if (*bracode == OP_ONCE && possessive_quantifier) *bracode = OP_BRA;
  ------------------
  |  Branch (7685:15): [True: 0, False: 2]
  |  Branch (7685:38): [True: 0, False: 0]
  ------------------
 7686|       |
 7687|       |          /* For non-possessive ONCE and for SCRIPT_RUN brackets, all we need
 7688|       |          to do is to set the KET. */
 7689|       |
 7690|      2|          if (*bracode == OP_ONCE || *bracode == OP_SCRIPT_RUN)
  ------------------
  |  Branch (7690:15): [True: 0, False: 2]
  |  Branch (7690:38): [True: 0, False: 2]
  ------------------
 7691|      0|            *ketcode = OP_KETRMAX + repeat_type;
 7692|       |
 7693|       |          /* Handle non-SCRIPT_RUN and non-ONCE brackets and possessive ONCEs
 7694|       |          (which have been converted to non-capturing above). */
 7695|       |
 7696|      2|          else
 7697|      2|            {
 7698|       |            /* In the compile phase, adjust the opcode if the group can match
 7699|       |            an empty string. For a conditional group with only one branch, the
 7700|       |            value of group_return will not show "could be empty", so we must
 7701|       |            check that separately. */
 7702|       |
 7703|      2|            if (lengthptr == NULL)
  ------------------
  |  Branch (7703:17): [True: 1, False: 1]
  ------------------
 7704|      1|              {
 7705|      1|              if (group_return < 0) *bracode += OP_SBRA - OP_BRA;
  ------------------
  |  Branch (7705:19): [True: 0, False: 1]
  ------------------
 7706|      1|              if (*bracode == OP_COND && bracode[GET(bracode,1)] != OP_ALT)
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (7706:19): [True: 0, False: 1]
  |  Branch (7706:42): [True: 0, False: 0]
  ------------------
 7707|      0|                *bracode = OP_SCOND;
 7708|      1|              }
 7709|       |
 7710|       |            /* Handle possessive quantifiers. */
 7711|       |
 7712|      2|            if (possessive_quantifier)
  ------------------
  |  Branch (7712:17): [True: 0, False: 2]
  ------------------
 7713|      0|              {
 7714|       |              /* For COND brackets, we wrap the whole thing in a possessively
 7715|       |              repeated non-capturing bracket, because we have not invented POS
 7716|       |              versions of the COND opcodes. */
 7717|       |
 7718|      0|              if (*bracode == OP_COND || *bracode == OP_SCOND)
  ------------------
  |  Branch (7718:19): [True: 0, False: 0]
  |  Branch (7718:42): [True: 0, False: 0]
  ------------------
 7719|      0|                {
 7720|      0|                int nlen = (int)(code - bracode);
 7721|      0|                (void)memmove(bracode + 1 + LINK_SIZE, bracode, CU2BYTES(nlen));
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                              (void)memmove(bracode + 1 + LINK_SIZE, bracode, CU2BYTES(nlen));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7722|      0|                code += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7723|      0|                nlen += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7724|      0|                *bracode = (*bracode == OP_COND)? OP_BRAPOS : OP_SBRAPOS;
  ------------------
  |  Branch (7724:28): [True: 0, False: 0]
  ------------------
 7725|      0|                *code++ = OP_KETRPOS;
 7726|      0|                PUTINC(code, 0, nlen);
  ------------------
  |  |  547|      0|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|      0|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 7727|      0|                PUT(bracode, 1, nlen);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 7728|      0|                }
 7729|       |
 7730|       |              /* For non-COND brackets, we modify the BRA code and use KETRPOS. */
 7731|       |
 7732|      0|              else
 7733|      0|                {
 7734|      0|                *bracode += 1;              /* Switch to xxxPOS opcodes */
 7735|      0|                *ketcode = OP_KETRPOS;
 7736|      0|                }
 7737|       |
 7738|       |              /* If the minimum is zero, mark it as possessive, then unset the
 7739|       |              possessive flag when the minimum is 0 or 1. */
 7740|       |
 7741|      0|              if (brazeroptr != NULL) *brazeroptr = OP_BRAPOSZERO;
  ------------------
  |  Branch (7741:19): [True: 0, False: 0]
  ------------------
 7742|      0|              if (repeat_min < 2) possessive_quantifier = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (7742:19): [True: 0, False: 0]
  ------------------
 7743|      0|              }
 7744|       |
 7745|       |            /* Non-possessive quantifier */
 7746|       |
 7747|      2|            else *ketcode = OP_KETRMAX + repeat_type;
 7748|      2|            }
 7749|      2|          }
 7750|      6|        }
 7751|      6|      break;
 7752|       |
 7753|       |      /* If previous was a character type match (\d or similar), abolish it and
 7754|       |      create a suitable repeat item. The code is shared with single-character
 7755|       |      repeats by setting op_type to add a suitable offset into repeat_type.
 7756|       |      Note the the Unicode property types will be present only when
 7757|       |      SUPPORT_UNICODE is defined, but we don't wrap the little bits of code
 7758|       |      here because it just makes it horribly messy. */
 7759|       |
 7760|    841|      default:
  ------------------
  |  Branch (7760:7): [True: 841, False: 1.70k]
  ------------------
 7761|    841|      if (op_previous >= OP_EODN)   /* Not a character type - internal error */
  ------------------
  |  Branch (7761:11): [True: 0, False: 841]
  ------------------
 7762|      0|        {
 7763|      0|        *errorcodeptr = ERR10;
 7764|      0|        return 0;
 7765|      0|        }
 7766|    841|      else
 7767|    841|        {
 7768|    841|        int prop_type, prop_value;
 7769|    841|        PCRE2_UCHAR *oldcode;
  ------------------
  |  |  819|    841|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    841|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    841|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    841|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7770|       |
 7771|    841|        if (repeat_max == 1 && repeat_min == 1) goto END_REPEAT;
  ------------------
  |  Branch (7771:13): [True: 155, False: 686]
  |  Branch (7771:32): [True: 0, False: 155]
  ------------------
 7772|       |
 7773|    841|        op_type = OP_TYPESTAR - OP_STAR;      /* Use type opcodes */
 7774|    841|        mclength = 0;                         /* Not a character */
 7775|       |
 7776|    841|        if (op_previous == OP_PROP || op_previous == OP_NOTPROP)
  ------------------
  |  Branch (7776:13): [True: 50, False: 791]
  |  Branch (7776:39): [True: 80, False: 711]
  ------------------
 7777|    130|          {
 7778|    130|          prop_type = previous[1];
 7779|    130|          prop_value = previous[2];
 7780|    130|          }
 7781|    711|        else
 7782|    711|          {
 7783|       |          /* Come here from just above with a character in mcbuffer/mclength. */
 7784|  2.26k|          OUTPUT_SINGLE_REPEAT:
 7785|  2.26k|          prop_type = prop_value = -1;
 7786|  2.26k|          }
 7787|       |
 7788|       |        /* At this point, if prop_type == prop_value == -1 we either have a
 7789|       |        character in mcbuffer when mclength is greater than zero, or we have
 7790|       |        mclength zero, in which case there is a non-property character type in
 7791|       |        op_previous. If prop_type/value are not negative, we have a property
 7792|       |        character type in op_previous. */
 7793|       |
 7794|  2.39k|        oldcode = code;                   /* Save where we were */
 7795|  2.39k|        code = previous;                  /* Usually overwrite previous item */
 7796|       |
 7797|       |        /* If the maximum is zero then the minimum must also be zero; Perl allows
 7798|       |        this case, so we do too - by simply omitting the item altogether. */
 7799|       |
 7800|  2.39k|        if (repeat_max == 0) goto END_REPEAT;
  ------------------
  |  Branch (7800:13): [True: 0, False: 2.39k]
  ------------------
 7801|       |
 7802|       |        /* Combine the op_type with the repeat_type */
 7803|       |
 7804|  2.39k|        repeat_type += op_type;
 7805|       |
 7806|       |        /* A minimum of zero is handled either as the special case * or ?, or as
 7807|       |        an UPTO, with the maximum given. */
 7808|       |
 7809|  2.39k|        if (repeat_min == 0)
  ------------------
  |  Branch (7809:13): [True: 1.11k, False: 1.28k]
  ------------------
 7810|  1.11k|          {
 7811|  1.11k|          if (repeat_max == REPEAT_UNLIMITED) *code++ = OP_STAR + repeat_type;
  ------------------
  |  |  149|  1.11k|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|  1.11k|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7811:15): [True: 307, False: 809]
  ------------------
 7812|    809|            else if (repeat_max == 1) *code++ = OP_QUERY + repeat_type;
  ------------------
  |  Branch (7812:22): [True: 809, False: 0]
  ------------------
 7813|      0|          else
 7814|      0|            {
 7815|      0|            *code++ = OP_UPTO + repeat_type;
 7816|      0|            PUT2INC(code, 0, repeat_max);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7817|      0|            }
 7818|  1.11k|          }
 7819|       |
 7820|       |        /* A repeat minimum of 1 is optimized into some special cases. If the
 7821|       |        maximum is unlimited, we use OP_PLUS. Otherwise, the original item is
 7822|       |        left in place and, if the maximum is greater than 1, we use OP_UPTO with
 7823|       |        one less than the maximum. */
 7824|       |
 7825|  1.28k|        else if (repeat_min == 1)
  ------------------
  |  Branch (7825:18): [True: 1.26k, False: 14]
  ------------------
 7826|  1.26k|          {
 7827|  1.26k|          if (repeat_max == REPEAT_UNLIMITED)
  ------------------
  |  |  149|  1.26k|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|  1.26k|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7827:15): [True: 1.26k, False: 0]
  ------------------
 7828|  1.26k|            *code++ = OP_PLUS + repeat_type;
 7829|      0|          else
 7830|      0|            {
 7831|      0|            code = oldcode;  /* Leave previous item in place */
 7832|      0|            if (repeat_max == 1) goto END_REPEAT;
  ------------------
  |  Branch (7832:17): [True: 0, False: 0]
  ------------------
 7833|      0|            *code++ = OP_UPTO + repeat_type;
 7834|      0|            PUT2INC(code, 0, repeat_max - 1);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7835|      0|            }
 7836|  1.26k|          }
 7837|       |
 7838|       |        /* The case {n,n} is just an EXACT, while the general case {n,m} is
 7839|       |        handled as an EXACT followed by an UPTO or STAR or QUERY. */
 7840|       |
 7841|     14|        else
 7842|     14|          {
 7843|     14|          *code++ = OP_EXACT + op_type;  /* NB EXACT doesn't have repeat_type */
 7844|     14|          PUT2INC(code, 0, repeat_min);
  ------------------
  |  |  548|     14|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|     14|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|     14|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7845|       |
 7846|       |          /* Unless repeat_max equals repeat_min, fill in the data for EXACT,
 7847|       |          and then generate the second opcode. For a repeated Unicode property
 7848|       |          match, there are two extra values that define the required property,
 7849|       |          and mclength is set zero to indicate this. */
 7850|       |
 7851|     14|          if (repeat_max != repeat_min)
  ------------------
  |  Branch (7851:15): [True: 0, False: 14]
  ------------------
 7852|      0|            {
 7853|      0|            if (mclength > 0)
  ------------------
  |  Branch (7853:17): [True: 0, False: 0]
  ------------------
 7854|      0|              {
 7855|      0|              memcpy(code, mcbuffer, CU2BYTES(mclength));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7856|      0|              code += mclength;
 7857|      0|              }
 7858|      0|            else
 7859|      0|              {
 7860|      0|              *code++ = op_previous;
 7861|      0|              if (prop_type >= 0)
  ------------------
  |  Branch (7861:19): [True: 0, False: 0]
  ------------------
 7862|      0|                {
 7863|      0|                *code++ = prop_type;
 7864|      0|                *code++ = prop_value;
 7865|      0|                }
 7866|      0|              }
 7867|       |
 7868|       |            /* Now set up the following opcode */
 7869|       |
 7870|      0|            if (repeat_max == REPEAT_UNLIMITED)
  ------------------
  |  |  149|      0|#define REPEAT_UNLIMITED   (MAX_REPEAT_COUNT+1)
  |  |  ------------------
  |  |  |  |  148|      0|#define MAX_REPEAT_COUNT   65535u
  |  |  ------------------
  ------------------
  |  Branch (7870:17): [True: 0, False: 0]
  ------------------
 7871|      0|              *code++ = OP_STAR + repeat_type;
 7872|      0|            else
 7873|      0|              {
 7874|      0|              repeat_max -= repeat_min;
 7875|      0|              if (repeat_max == 1)
  ------------------
  |  Branch (7875:19): [True: 0, False: 0]
  ------------------
 7876|      0|                {
 7877|      0|                *code++ = OP_QUERY + repeat_type;
 7878|      0|                }
 7879|      0|              else
 7880|      0|                {
 7881|      0|                *code++ = OP_UPTO + repeat_type;
 7882|      0|                PUT2INC(code, 0, repeat_max);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 7883|      0|                }
 7884|      0|              }
 7885|      0|            }
 7886|     14|          }
 7887|       |
 7888|       |        /* Fill in the character or character type for the final opcode. */
 7889|       |
 7890|  2.39k|        if (mclength > 0)
  ------------------
  |  Branch (7890:13): [True: 1.55k, False: 841]
  ------------------
 7891|  1.55k|          {
 7892|  1.55k|          memcpy(code, mcbuffer, CU2BYTES(mclength));
  ------------------
  |  |  545|  1.55k|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|  1.55k|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7893|  1.55k|          code += mclength;
 7894|  1.55k|          }
 7895|    841|        else
 7896|    841|          {
 7897|    841|          *code++ = op_previous;
 7898|    841|          if (prop_type >= 0)
  ------------------
  |  Branch (7898:15): [True: 130, False: 711]
  ------------------
 7899|    130|            {
 7900|    130|            *code++ = prop_type;
 7901|    130|            *code++ = prop_value;
 7902|    130|            }
 7903|    841|          }
 7904|  2.39k|        }
 7905|  2.39k|      break;
 7906|  2.54k|      }  /* End of switch on different op_previous values */
 7907|       |
 7908|       |
 7909|       |    /* If the character following a repeat is '+', possessive_quantifier is
 7910|       |    TRUE. For some opcodes, there are special alternative opcodes for this
 7911|       |    case. For anything else, we wrap the entire repeated item inside OP_ONCE
 7912|       |    brackets. Logically, the '+' notation is just syntactic sugar, taken from
 7913|       |    Sun's Java package, but the special opcodes can optimize it.
 7914|       |
 7915|       |    Some (but not all) possessively repeated subpatterns have already been
 7916|       |    completely handled in the code just above. For them, possessive_quantifier
 7917|       |    is always FALSE at this stage. Note that the repeated item starts at
 7918|       |    tempcode, not at previous, which might be the first part of a string whose
 7919|       |    (former) last char we repeated. */
 7920|       |
 7921|  2.54k|    if (possessive_quantifier)
  ------------------
  |  Branch (7921:9): [True: 66, False: 2.47k]
  ------------------
 7922|     66|      {
 7923|     66|      int len;
 7924|       |
 7925|       |      /* Possessifying an EXACT quantifier has no effect, so we can ignore it.
 7926|       |      However, QUERY, STAR, or UPTO may follow (for quantifiers such as {5,6},
 7927|       |      {5,}, or {5,10}). We skip over an EXACT item; if the length of what
 7928|       |      remains is greater than zero, there's a further opcode that can be
 7929|       |      handled. If not, do nothing, leaving the EXACT alone. */
 7930|       |
 7931|     66|      switch(*tempcode)
  ------------------
  |  Branch (7931:14): [True: 6, False: 60]
  ------------------
 7932|     66|        {
 7933|      0|        case OP_TYPEEXACT:
  ------------------
  |  Branch (7933:9): [True: 0, False: 66]
  ------------------
 7934|      0|        tempcode += PRIV(OP_lengths)[*tempcode] +
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7935|      0|          ((tempcode[1 + IMM2_SIZE] == OP_PROP
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (7935:13): [True: 0, False: 0]
  ------------------
 7936|      0|          || tempcode[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0);
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (7936:14): [True: 0, False: 0]
  ------------------
 7937|      0|        break;
 7938|       |
 7939|       |        /* CHAR opcodes are used for exacts whose count is 1. */
 7940|       |
 7941|      0|        case OP_CHAR:
  ------------------
  |  Branch (7941:9): [True: 0, False: 66]
  ------------------
 7942|      0|        case OP_CHARI:
  ------------------
  |  Branch (7942:9): [True: 0, False: 66]
  ------------------
 7943|      0|        case OP_NOT:
  ------------------
  |  Branch (7943:9): [True: 0, False: 66]
  ------------------
 7944|      0|        case OP_NOTI:
  ------------------
  |  Branch (7944:9): [True: 0, False: 66]
  ------------------
 7945|      0|        case OP_EXACT:
  ------------------
  |  Branch (7945:9): [True: 0, False: 66]
  ------------------
 7946|      0|        case OP_EXACTI:
  ------------------
  |  Branch (7946:9): [True: 0, False: 66]
  ------------------
 7947|      0|        case OP_NOTEXACT:
  ------------------
  |  Branch (7947:9): [True: 0, False: 66]
  ------------------
 7948|      0|        case OP_NOTEXACTI:
  ------------------
  |  Branch (7948:9): [True: 0, False: 66]
  ------------------
 7949|      0|        tempcode += PRIV(OP_lengths)[*tempcode];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7950|      0|#ifdef SUPPORT_UNICODE
 7951|      0|        if (utf && HAS_EXTRALEN(tempcode[-1]))
  ------------------
  |  |  286|      0|#define HAS_EXTRALEN(c) HASUTF8EXTRALEN(c)
  |  |  ------------------
  |  |  |  |  272|      0|#define HASUTF8EXTRALEN(c) ((c) >= 0xc0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (272:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7951:13): [True: 0, False: 0]
  ------------------
 7952|      0|          tempcode += GET_EXTRALEN(tempcode[-1]);
  ------------------
  |  |  291|      0|#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3fu])
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  ------------------
 7953|      0|#endif
 7954|      0|        break;
 7955|       |
 7956|       |        /* For the class opcodes, the repeat operator appears at the end;
 7957|       |        adjust tempcode to point to it. */
 7958|       |
 7959|      2|        case OP_CLASS:
  ------------------
  |  Branch (7959:9): [True: 2, False: 64]
  ------------------
 7960|      6|        case OP_NCLASS:
  ------------------
  |  Branch (7960:9): [True: 4, False: 62]
  ------------------
 7961|      6|        tempcode += 1 + 32/sizeof(PCRE2_UCHAR);
 7962|      6|        break;
 7963|       |
 7964|      0|#ifdef SUPPORT_WIDE_CHARS
 7965|      0|        case OP_XCLASS:
  ------------------
  |  Branch (7965:9): [True: 0, False: 66]
  ------------------
 7966|      0|        tempcode += GET(tempcode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 7967|      0|        break;
 7968|     66|#endif
 7969|     66|        }
 7970|       |
 7971|       |      /* If tempcode is equal to code (which points to the end of the repeated
 7972|       |      item), it means we have skipped an EXACT item but there is no following
 7973|       |      QUERY, STAR, or UPTO; the value of len will be 0, and we do nothing. In
 7974|       |      all other cases, tempcode will be pointing to the repeat opcode, and will
 7975|       |      be less than code, so the value of len will be greater than 0. */
 7976|       |
 7977|     66|      len = (int)(code - tempcode);
 7978|     66|      if (len > 0)
  ------------------
  |  Branch (7978:11): [True: 66, False: 0]
  ------------------
 7979|     66|        {
 7980|     66|        unsigned int repcode = *tempcode;
 7981|       |
 7982|       |        /* There is a table for possessifying opcodes, all of which are less
 7983|       |        than OP_CALLOUT. A zero entry means there is no possessified version.
 7984|       |        */
 7985|       |
 7986|     66|        if (repcode < OP_CALLOUT && opcode_possessify[repcode] > 0)
  ------------------
  |  Branch (7986:13): [True: 66, False: 0]
  |  Branch (7986:37): [True: 66, False: 0]
  ------------------
 7987|     66|          *tempcode = opcode_possessify[repcode];
 7988|       |
 7989|       |        /* For opcode without a special possessified version, wrap the item in
 7990|       |        ONCE brackets. */
 7991|       |
 7992|      0|        else
 7993|      0|          {
 7994|      0|          (void)memmove(tempcode + 1 + LINK_SIZE, tempcode, CU2BYTES(len));
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                        (void)memmove(tempcode + 1 + LINK_SIZE, tempcode, CU2BYTES(len));
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7995|      0|          code += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7996|      0|          len += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 7997|      0|          tempcode[0] = OP_ONCE;
 7998|      0|          *code++ = OP_KET;
 7999|      0|          PUTINC(code, 0, len);
  ------------------
  |  |  547|      0|#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  |  |  ------------------
  |  |               #define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
  |  |  ------------------
  |  |  |  |   98|      0|#define LINK_SIZE 2
  |  |  ------------------
  ------------------
 8000|      0|          PUT(tempcode, 1, len);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 8001|      0|          }
 8002|     66|        }
 8003|     66|      }
 8004|       |
 8005|       |    /* We set the "follows varying string" flag for subsequently encountered
 8006|       |    reqcus if it isn't already set and we have just passed a varying length
 8007|       |    item. */
 8008|       |
 8009|  2.54k|    END_REPEAT:
 8010|  2.54k|    cb->req_varyopt |= reqvary;
 8011|  2.54k|    break;
 8012|       |
 8013|       |
 8014|       |    /* ===================================================================*/
 8015|       |    /* Handle a 32-bit data character with a value greater than META_END. */
 8016|       |
 8017|      0|    case META_BIGVALUE:
  ------------------
  |  |  217|      0|#define META_BIGVALUE         0x80050000u  /* Next is a literal > META_END */
  ------------------
  |  Branch (8017:5): [True: 0, False: 23.7k]
  ------------------
 8018|      0|    pptr++;
 8019|      0|    goto NORMAL_CHAR;
 8020|       |
 8021|       |
 8022|       |    /* ===============================================================*/
 8023|       |    /* Handle a back reference by number, which is the meta argument. The
 8024|       |    pattern offsets for back references to group numbers less than 10 are held
 8025|       |    in a special vector, to avoid using more than two parsed pattern elements
 8026|       |    in 64-bit environments. We only need the offset to the first occurrence,
 8027|       |    because if that doesn't fail, subsequent ones will also be OK. */
 8028|       |
 8029|      9|    case META_BACKREF:
  ------------------
  |  |  215|      9|#define META_BACKREF          0x80030000u  /* Back ref */
  ------------------
  |  Branch (8029:5): [True: 9, False: 23.7k]
  ------------------
 8030|      9|    if (meta_arg < 10) offset = cb->small_ref_offset[meta_arg];
  ------------------
  |  Branch (8030:9): [True: 5, False: 4]
  ------------------
 8031|      4|      else GETPLUSOFFSET(offset, pptr);
  ------------------
  |  |  104|      4|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 8032|       |
 8033|      9|    if (meta_arg > cb->bracount)
  ------------------
  |  Branch (8033:9): [True: 9, False: 0]
  ------------------
 8034|      9|      {
 8035|      9|      cb->erroroffset = offset;
 8036|      9|      *errorcodeptr = ERR15;  /* Non-existent subpattern */
 8037|      9|      return 0;
 8038|      9|      }
 8039|       |
 8040|       |    /* Come here from named backref handling when the reference is to a
 8041|       |    single group (that is, not to a duplicated name). The back reference
 8042|       |    data will have already been updated. We must disable firstcu if not
 8043|       |    set, to cope with cases like (?=(\w+))\1: which would otherwise set ':'
 8044|       |    later. */
 8045|       |
 8046|      0|    HANDLE_SINGLE_REFERENCE:
 8047|      0|    if (firstcuflags == REQ_UNSET) zerofirstcuflags = firstcuflags = REQ_NONE;
  ------------------
  |  |  393|      0|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                  if (firstcuflags == REQ_UNSET) zerofirstcuflags = firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8047:9): [True: 0, False: 0]
  ------------------
 8048|      0|    *code++ = ((options & PCRE2_CASELESS) != 0)? OP_REFI : OP_REF;
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (8048:15): [True: 0, False: 0]
  ------------------
 8049|      0|    PUT2INC(code, 0, meta_arg);
  ------------------
  |  |  548|      0|#define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  195|      0|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  |  |  ------------------
  |  |               #define PUT2INC(a,n,d)  PUT2(a,n,d), a += IMM2_SIZE
  |  |  ------------------
  |  |  |  |  193|      0|#define IMM2_SIZE 2
  |  |  ------------------
  ------------------
 8050|       |
 8051|       |    /* Update the map of back references, and keep the highest one. We
 8052|       |    could do this in parse_regex() for numerical back references, but not
 8053|       |    for named back references, because we don't know the numbers to which
 8054|       |    named back references refer. So we do it all in this function. */
 8055|       |
 8056|      0|    cb->backref_map |= (meta_arg < 32)? (1u << meta_arg) : 1;
  ------------------
  |  Branch (8056:24): [True: 0, False: 0]
  ------------------
 8057|      0|    if (meta_arg > cb->top_backref) cb->top_backref = meta_arg;
  ------------------
  |  Branch (8057:9): [True: 0, False: 0]
  ------------------
 8058|      0|    break;
 8059|       |
 8060|       |
 8061|       |    /* ===============================================================*/
 8062|       |    /* Handle recursion by inserting the number of the called group (which is
 8063|       |    the meta argument) after OP_RECURSE. At the end of compiling the pattern is
 8064|       |    scanned and these numbers are replaced by offsets within the pattern. It is
 8065|       |    done like this to avoid problems with forward references and adjusting
 8066|       |    offsets when groups are duplicated and moved (as discovered in previous
 8067|       |    implementations). Note that a recursion does not have a set first
 8068|       |    character. */
 8069|       |
 8070|      0|    case META_RECURSE:
  ------------------
  |  |  244|      0|#define META_RECURSE          0x80200000u  /* Recursion */
  ------------------
  |  Branch (8070:5): [True: 0, False: 23.7k]
  ------------------
 8071|      0|    GETPLUSOFFSET(offset, pptr);
  ------------------
  |  |  104|      0|  { s = ((PCRE2_SIZE)p[1] << 32) | (PCRE2_SIZE)p[2]; p += 2; }
  ------------------
 8072|      0|    if (meta_arg > cb->bracount)
  ------------------
  |  Branch (8072:9): [True: 0, False: 0]
  ------------------
 8073|      0|      {
 8074|      0|      cb->erroroffset = offset;
 8075|      0|      *errorcodeptr = ERR15;  /* Non-existent subpattern */
 8076|      0|      return 0;
 8077|      0|      }
 8078|      0|    HANDLE_NUMERICAL_RECURSION:
 8079|      0|    *code = OP_RECURSE;
 8080|      0|    PUT(code, 1, meta_arg);
  ------------------
  |  |  106|      0|  (a[n] = (PCRE2_UCHAR)((d) >> 8)), \
  |  |  107|      0|  (a[(n)+1] = (PCRE2_UCHAR)((d) & 255))
  ------------------
 8081|      0|    code += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 8082|      0|    groupsetfirstcu = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8083|      0|    cb->had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 8084|      0|    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|      0|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                  if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8084:9): [True: 0, False: 0]
  ------------------
 8085|      0|    zerofirstcu = firstcu;
 8086|      0|    zerofirstcuflags = firstcuflags;
 8087|      0|    break;
 8088|       |
 8089|       |
 8090|       |    /* ===============================================================*/
 8091|       |    /* Handle capturing parentheses; the number is the meta argument. */
 8092|       |
 8093|     28|    case META_CAPTURE:
  ------------------
  |  |  220|     28|#define META_CAPTURE          0x80080000u  /* Capturing parenthesis */
  ------------------
  |  Branch (8093:5): [True: 28, False: 23.6k]
  ------------------
 8094|     28|    bravalue = OP_CBRA;
 8095|     28|    skipunits = IMM2_SIZE;
  ------------------
  |  |  193|     28|#define IMM2_SIZE 2
  ------------------
 8096|     28|    PUT2(code, 1+LINK_SIZE, meta_arg);
  ------------------
  |  |  195|     28|#define PUT2(a,n,d) a[n] = (d) >> 8, a[(n)+1] = (d) & 255
  ------------------
 8097|     28|    cb->lastcapture = meta_arg;
 8098|     28|    goto GROUP_PROCESS_NOTE_EMPTY;
 8099|       |
 8100|       |
 8101|       |    /* ===============================================================*/
 8102|       |    /* Handle escape sequence items. For ones like \d, the ESC_values are
 8103|       |    arranged to be the same as the corresponding OP_values in the default case
 8104|       |    when PCRE2_UCP is not set (which is the only case in which they will appear
 8105|       |    here).
 8106|       |
 8107|       |    Note: \Q and \E are never seen here, as they were dealt with in
 8108|       |    parse_pattern(). Neither are numerical back references or recursions, which
 8109|       |    were turned into META_BACKREF or META_RECURSE items, respectively. \k and
 8110|       |    \g, when followed by names, are turned into META_BACKREF_BYNAME or
 8111|       |    META_RECURSE_BYNAME. */
 8112|       |
 8113|  1.30k|    case META_ESCAPE:
  ------------------
  |  |  236|  1.30k|#define META_ESCAPE           0x80180000u  /* \d and friends */
  ------------------
  |  Branch (8113:5): [True: 1.30k, False: 22.4k]
  ------------------
 8114|       |
 8115|       |    /* We can test for escape sequences that consume a character because their
 8116|       |    values lie between ESC_b and ESC_Z; this may have to change if any new ones
 8117|       |    are ever created. For these sequences, we disable the setting of a first
 8118|       |    character if it hasn't already been set. */
 8119|       |
 8120|  1.30k|    if (meta_arg > ESC_b && meta_arg < ESC_Z)
  ------------------
  |  Branch (8120:9): [True: 1.14k, False: 157]
  |  Branch (8120:29): [True: 1.13k, False: 14]
  ------------------
 8121|  1.13k|      {
 8122|  1.13k|      matched_char = TRUE;
  ------------------
  |  |   88|  1.13k|#define TRUE    1
  ------------------
 8123|  1.13k|      if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  393|  1.13k|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
                    if (firstcuflags == REQ_UNSET) firstcuflags = REQ_NONE;
  ------------------
  |  |  394|    333|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (8123:11): [True: 333, False: 798]
  ------------------
 8124|  1.13k|      }
 8125|       |
 8126|       |    /* Set values to reset to if this is followed by a zero repeat. */
 8127|       |
 8128|  1.30k|    zerofirstcu = firstcu;
 8129|  1.30k|    zerofirstcuflags = firstcuflags;
 8130|  1.30k|    zeroreqcu = reqcu;
 8131|  1.30k|    zeroreqcuflags = reqcuflags;
 8132|       |
 8133|       |    /* If Unicode is not supported, \P and \p are not allowed and are
 8134|       |    faulted at parse time, so will never appear here. */
 8135|       |
 8136|  1.30k|#ifdef SUPPORT_UNICODE
 8137|  1.30k|    if (meta_arg == ESC_P || meta_arg == ESC_p)
  ------------------
  |  Branch (8137:9): [True: 112, False: 1.19k]
  |  Branch (8137:30): [True: 78, False: 1.11k]
  ------------------
 8138|    190|      {
 8139|    190|      uint32_t ptype = *(++pptr) >> 16;
 8140|    190|      uint32_t pdata = *pptr & 0xffff;
 8141|       |
 8142|       |      /* The special case of \p{Any} is compiled to OP_ALLANY so as to benefit
 8143|       |      from the auto-anchoring code. */
 8144|       |
 8145|    190|      if (meta_arg == ESC_p && ptype == PT_ANY)
  ------------------
  |  | 1293|     78|#define PT_ANY        0    /* Any property - matches all chars */
  ------------------
  |  Branch (8145:11): [True: 78, False: 112]
  |  Branch (8145:32): [True: 0, False: 78]
  ------------------
 8146|      0|        {
 8147|      0|        *code++ = OP_ALLANY;
 8148|      0|        }
 8149|    190|      else
 8150|    190|        {
 8151|    190|        *code++ = (meta_arg == ESC_p)? OP_PROP : OP_NOTPROP;
  ------------------
  |  Branch (8151:19): [True: 78, False: 112]
  ------------------
 8152|    190|        *code++ = ptype;
 8153|    190|        *code++ = pdata;
 8154|    190|        }
 8155|    190|      break;  /* End META_ESCAPE */
 8156|    190|      }
 8157|  1.11k|#endif
 8158|       |
 8159|       |    /* \K is forbidden in lookarounds since 10.38 because that's what Perl has
 8160|       |    done. However, there's an option, in case anyone was relying on it. */
 8161|       |
 8162|  1.11k|    if (cb->assert_depth > 0 && meta_arg == ESC_K &&
  ------------------
  |  Branch (8162:9): [True: 0, False: 1.11k]
  |  Branch (8162:33): [True: 0, False: 0]
  ------------------
 8163|      0|        (xoptions & PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) == 0)
  ------------------
  |  |  155|      0|#define PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK     0x00000040u  /* C */
  ------------------
  |  Branch (8163:9): [True: 0, False: 0]
  ------------------
 8164|      0|      {
 8165|      0|      *errorcodeptr = ERR99;
 8166|      0|      return 0;
 8167|      0|      }
 8168|       |
 8169|       |    /* For the rest (including \X when Unicode is supported - if not it's
 8170|       |    faulted at parse time), the OP value is the escape value when PCRE2_UCP is
 8171|       |    not set; if it is set, most of them do not show up here because they are
 8172|       |    converted into Unicode property tests in parse_regex().
 8173|       |
 8174|       |    In non-UTF mode, and for both 32-bit modes, we turn \C into OP_ALLANY
 8175|       |    instead of OP_ANYBYTE so that it works in DFA mode and in lookbehinds.
 8176|       |    There are special UCP codes for \B and \b which are used in UCP mode unless
 8177|       |    "word" matching is being forced to ASCII.
 8178|       |
 8179|       |    Note that \b and \B do a one-character lookbehind, and \A also behaves as
 8180|       |    if it does. */
 8181|       |
 8182|  1.11k|    switch(meta_arg)
  ------------------
  |  Branch (8182:12): [True: 191, False: 921]
  ------------------
 8183|  1.11k|      {
 8184|     58|      case ESC_C:
  ------------------
  |  Branch (8184:7): [True: 58, False: 1.05k]
  ------------------
 8185|     58|      cb->external_flags |= PCRE2_HASBKC;  /* Record */
  ------------------
  |  |  547|     58|#define PCRE2_HASBKC        0x00400000  /* contains \C */
  ------------------
 8186|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 8187|       |      meta_arg = OP_ALLANY;
 8188|       |#else
 8189|     58|      if (!utf) meta_arg = OP_ALLANY;
  ------------------
  |  Branch (8189:11): [True: 26, False: 32]
  ------------------
 8190|     58|#endif
 8191|     58|      break;
 8192|       |
 8193|     58|      case ESC_B:
  ------------------
  |  Branch (8193:7): [True: 58, False: 1.05k]
  ------------------
 8194|    100|      case ESC_b:
  ------------------
  |  Branch (8194:7): [True: 42, False: 1.07k]
  ------------------
 8195|    100|      if ((options & PCRE2_UCP) != 0 && (xoptions & PCRE2_EXTRA_ASCII_BSW) == 0)
  ------------------
  |  |  136|    100|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
                    if ((options & PCRE2_UCP) != 0 && (xoptions & PCRE2_EXTRA_ASCII_BSW) == 0)
  ------------------
  |  |  159|     82|#define PCRE2_EXTRA_ASCII_BSW                0x00000400u  /* C */
  ------------------
  |  Branch (8195:11): [True: 82, False: 18]
  |  Branch (8195:41): [True: 82, False: 0]
  ------------------
 8196|     82|        meta_arg = (meta_arg == ESC_B)? OP_NOT_UCP_WORD_BOUNDARY :
  ------------------
  |  Branch (8196:20): [True: 46, False: 36]
  ------------------
 8197|     82|          OP_UCP_WORD_BOUNDARY;
 8198|       |      /* Fall through */
 8199|       |
 8200|    133|      case ESC_A:
  ------------------
  |  Branch (8200:7): [True: 33, False: 1.07k]
  ------------------
 8201|    133|      if (cb->max_lookbehind == 0) cb->max_lookbehind = 1;
  ------------------
  |  Branch (8201:11): [True: 65, False: 68]
  ------------------
 8202|    133|      break;
 8203|  1.11k|      }
 8204|       |
 8205|  1.11k|    *code++ = meta_arg;
 8206|  1.11k|    break;  /* End META_ESCAPE */
 8207|       |
 8208|       |
 8209|       |    /* ===================================================================*/
 8210|       |    /* Handle an unrecognized meta value. A parsed pattern value less than
 8211|       |    META_END is a literal. Otherwise we have a problem. */
 8212|       |
 8213|  17.1k|    default:
  ------------------
  |  Branch (8213:5): [True: 17.1k, False: 6.55k]
  ------------------
 8214|  17.1k|    if (meta >= META_END)
  ------------------
  |  |  211|  17.1k|#define META_END              0x80000000u  /* End of pattern */
  ------------------
  |  Branch (8214:9): [True: 0, False: 17.1k]
  ------------------
 8215|      0|      {
 8216|       |#ifdef DEBUG_SHOW_PARSED
 8217|       |      fprintf(stderr, "** Unrecognized parsed pattern item 0x%.8x\n", *pptr);
 8218|       |#endif
 8219|      0|      *errorcodeptr = ERR89;  /* Internal error - unrecognized. */
 8220|      0|      return 0;
 8221|      0|      }
 8222|       |
 8223|       |    /* Handle a literal character. We come here by goto in the case of a
 8224|       |    32-bit, non-UTF character whose value is greater than META_END. */
 8225|       |
 8226|  17.1k|    NORMAL_CHAR:
 8227|  17.1k|    meta = *pptr;     /* Get the full 32 bits */
 8228|  17.1k|    NORMAL_CHAR_SET:  /* Character is already in meta */
 8229|  17.1k|    matched_char = TRUE;
  ------------------
  |  |   88|  17.1k|#define TRUE    1
  ------------------
 8230|       |
 8231|       |    /* For caseless UTF or UCP mode, check whether this character has more than
 8232|       |    one other case. If so, generate a special OP_PROP item instead of OP_CHARI.
 8233|       |    When casing restrictions apply, ignore caseless sets that start with an
 8234|       |    ASCII character. */
 8235|       |
 8236|  17.1k|#ifdef SUPPORT_UNICODE
 8237|  17.1k|    if ((utf||ucp) && (options & PCRE2_CASELESS) != 0)
  ------------------
  |  |  122|  7.85k|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (8237:10): [True: 7.85k, False: 9.30k]
  |  Branch (8237:15): [True: 0, False: 9.30k]
  |  Branch (8237:23): [True: 5.99k, False: 1.85k]
  ------------------
 8238|  5.99k|      {
 8239|  5.99k|      uint32_t caseset = UCD_CASESET(meta);
  ------------------
  |  | 1888|  5.99k|#define UCD_CASESET(ch)     GET_UCD(ch)->caseset
  |  |  ------------------
  |  |  |  | 1873|  5.99k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  5.99k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  5.99k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  5.99k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  5.99k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  5.99k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  5.99k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  5.99k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  5.99k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  5.99k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  5.99k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  5.99k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  5.99k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  5.99k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  5.99k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  5.99k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  5.99k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  5.99k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  5.99k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  5.99k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  5.99k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  5.99k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8240|  5.99k|      if (caseset != 0 &&
  ------------------
  |  Branch (8240:11): [True: 348, False: 5.65k]
  ------------------
 8241|    348|           ((xoptions & PCRE2_EXTRA_CASELESS_RESTRICT) == 0 ||
  ------------------
  |  |  156|    348|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
  |  Branch (8241:13): [True: 348, False: 0]
  ------------------
 8242|      0|           PRIV(ucd_caseless_sets)[caseset] > 127))
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      0|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8242:12): [True: 0, False: 0]
  ------------------
 8243|    348|        {
 8244|    348|        *code++ = OP_PROP;
 8245|    348|        *code++ = PT_CLIST;
  ------------------
  |  | 1303|    348|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
 8246|    348|        *code++ = caseset;
 8247|    348|        if (firstcuflags == REQ_UNSET)
  ------------------
  |  |  393|    348|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
  |  Branch (8247:13): [True: 8, False: 340]
  ------------------
 8248|      8|          firstcuflags = zerofirstcuflags = REQ_NONE;
  ------------------
  |  |  394|      8|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 8249|    348|        break;  /* End handling this meta item */
 8250|    348|        }
 8251|  5.99k|      }
 8252|  16.8k|#endif
 8253|       |
 8254|       |    /* Caseful matches, or caseless and not one of the multicase characters. We
 8255|       |    come here by goto in the case of a positive class that contains only
 8256|       |    case-partners of a character with just two cases; matched_char has already
 8257|       |    been set TRUE and options fudged if necessary. */
 8258|       |
 8259|  16.8k|    CLASS_CASELESS_CHAR:
 8260|       |
 8261|       |    /* Get the character's code units into mcbuffer, with the length in
 8262|       |    mclength. When not in UTF mode, the length is always 1. */
 8263|       |
 8264|  16.8k|#ifdef SUPPORT_UNICODE
 8265|  16.8k|    if (utf) mclength = PRIV(ord2utf)(meta, mcbuffer); else
  ------------------
  |  |  195|  7.50k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|  7.50k|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  7.50k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  7.50k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  7.50k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8265:9): [True: 7.50k, False: 9.30k]
  ------------------
 8266|  9.30k|#endif
 8267|  9.30k|      {
 8268|  9.30k|      mclength = 1;
 8269|  9.30k|      mcbuffer[0] = meta;
 8270|  9.30k|      }
 8271|       |
 8272|       |    /* Generate the appropriate code */
 8273|       |
 8274|  16.8k|    *code++ = ((options & PCRE2_CASELESS) != 0)? OP_CHARI : OP_CHAR;
  ------------------
  |  |  122|  16.8k|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (8274:15): [True: 10.1k, False: 6.66k]
  ------------------
 8275|  16.8k|    memcpy(code, mcbuffer, CU2BYTES(mclength));
  ------------------
  |  |  545|  16.8k|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|  16.8k|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 8276|  16.8k|    code += mclength;
 8277|       |
 8278|       |    /* Remember if \r or \n were seen */
 8279|       |
 8280|  16.8k|    if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL)
  ------------------
  |  |  990|  33.6k|#define CHAR_CR                     '\015'
  ------------------
                  if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL)
  ------------------
  |  |  992|  16.7k|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|  16.7k|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
  |  Branch (8280:9): [True: 115, False: 16.7k]
  |  Branch (8280:35): [True: 322, False: 16.3k]
  ------------------
 8281|    437|      cb->external_flags |= PCRE2_HASCRORLF;
  ------------------
  |  |  536|    437|#define PCRE2_HASCRORLF     0x00000800  /* explicit \r or \n in pattern */
  ------------------
 8282|       |
 8283|       |    /* Set the first and required code units appropriately. If no previous
 8284|       |    first code unit, set it from this character, but revert to none on a zero
 8285|       |    repeat. Otherwise, leave the firstcu value alone, and don't change it on
 8286|       |    a zero repeat. */
 8287|       |
 8288|  16.8k|    if (firstcuflags == REQ_UNSET)
  ------------------
  |  |  393|  16.8k|#define REQ_UNSET     0xffffffffu  /* Not yet found anything */
  ------------------
  |  Branch (8288:9): [True: 671, False: 16.1k]
  ------------------
 8289|    671|      {
 8290|    671|      zerofirstcuflags = REQ_NONE;
  ------------------
  |  |  394|    671|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 8291|    671|      zeroreqcu = reqcu;
 8292|    671|      zeroreqcuflags = reqcuflags;
 8293|       |
 8294|       |      /* If the character is more than one code unit long, we can set a single
 8295|       |      firstcu only if it is not to be matched caselessly. Multiple possible
 8296|       |      starting code units may be picked up later in the studying code. */
 8297|       |
 8298|    671|      if (mclength == 1 || req_caseopt == 0)
  ------------------
  |  Branch (8298:11): [True: 667, False: 4]
  |  Branch (8298:28): [True: 0, False: 4]
  ------------------
 8299|    667|        {
 8300|    667|        firstcu = mcbuffer[0];
 8301|    667|        firstcuflags = req_caseopt;
 8302|    667|        if (mclength != 1)
  ------------------
  |  Branch (8302:13): [True: 0, False: 667]
  ------------------
 8303|      0|          {
 8304|      0|          reqcu = code[-1];
 8305|      0|          reqcuflags = cb->req_varyopt;
 8306|      0|          }
 8307|    667|        }
 8308|      4|      else firstcuflags = reqcuflags = REQ_NONE;
  ------------------
  |  |  394|      4|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 8309|    671|      }
 8310|       |
 8311|       |    /* firstcu was previously set; we can set reqcu only if the length is
 8312|       |    1 or the matching is caseful. */
 8313|       |
 8314|  16.1k|    else
 8315|  16.1k|      {
 8316|  16.1k|      zerofirstcu = firstcu;
 8317|  16.1k|      zerofirstcuflags = firstcuflags;
 8318|  16.1k|      zeroreqcu = reqcu;
 8319|  16.1k|      zeroreqcuflags = reqcuflags;
 8320|  16.1k|      if (mclength == 1 || req_caseopt == 0)
  ------------------
  |  Branch (8320:11): [True: 16.0k, False: 62]
  |  Branch (8320:28): [True: 10, False: 52]
  ------------------
 8321|  16.0k|        {
 8322|  16.0k|        reqcu = code[-1];
 8323|  16.0k|        reqcuflags = req_caseopt | cb->req_varyopt;
 8324|  16.0k|        }
 8325|  16.1k|      }
 8326|       |
 8327|       |    /* If caselessness was temporarily instated, reset it. */
 8328|       |
 8329|  16.8k|    if (reset_caseful)
  ------------------
  |  Branch (8329:9): [True: 0, False: 16.8k]
  ------------------
 8330|      0|      {
 8331|      0|      options &= ~PCRE2_CASELESS;
  ------------------
  |  |  122|      0|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
 8332|      0|      req_caseopt = 0;
 8333|      0|      reset_caseful = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8334|      0|      }
 8335|       |
 8336|  16.8k|    break;    /* End literal character handling */
 8337|  23.7k|    }         /* End of big switch */
 8338|  23.7k|  }           /* End of big loop */
 8339|       |
 8340|       |/* Control never reaches here. */
 8341|  1.38k|}
pcre2_compile.c:add_to_class_internal:
 5234|  3.59k|{
 5235|  3.59k|uint32_t c;
 5236|  3.59k|uint32_t classbits_end = (end <= 0xff ? end : 0xff);
  ------------------
  |  Branch (5236:27): [True: 3.41k, False: 188]
  ------------------
 5237|  3.59k|unsigned int n8 = 0;
 5238|       |
 5239|       |/* If caseless matching is required, scan the range and process alternate
 5240|       |cases. In Unicode, there are 8-bit characters that have alternate cases that
 5241|       |are greater than 255 and vice-versa (though these may be ignored if caseless
 5242|       |restriction is in force). Sometimes we can just extend the original range. */
 5243|       |
 5244|  3.59k|if ((options & PCRE2_CASELESS) != 0)
  ------------------
  |  |  122|  3.59k|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (5244:5): [True: 2.24k, False: 1.35k]
  ------------------
 5245|  2.24k|  {
 5246|  2.24k|#ifdef SUPPORT_UNICODE
 5247|  2.24k|  if ((options & (PCRE2_UTF|PCRE2_UCP)) != 0)
  ------------------
  |  |  138|  2.24k|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
                if ((options & (PCRE2_UTF|PCRE2_UCP)) != 0)
  ------------------
  |  |  136|  2.24k|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  |  Branch (5247:7): [True: 1.74k, False: 502]
  ------------------
 5248|  1.74k|    {
 5249|  1.74k|    int rc;
 5250|  1.74k|    uint32_t oc, od;
 5251|       |
 5252|  1.74k|    options &= ~PCRE2_CASELESS;   /* Remove for recursive calls */
  ------------------
  |  |  122|  1.74k|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
 5253|  1.74k|    c = start;
 5254|       |
 5255|  3.19k|    while ((rc = get_othercase_range(&c, end, &oc, &od,
  ------------------
  |  Branch (5255:12): [True: 1.45k, False: 1.74k]
  ------------------
 5256|  3.19k|             (xoptions & PCRE2_EXTRA_CASELESS_RESTRICT) != 0)) >= 0)
  ------------------
  |  |  156|  3.19k|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
 5257|  1.45k|      {
 5258|       |      /* Handle a single character that has more than one other case. */
 5259|       |
 5260|  1.45k|      if (rc > 0) n8 += add_list_to_class_internal(classbits, uchardptr,
  ------------------
  |  Branch (5260:11): [True: 76, False: 1.37k]
  ------------------
 5261|     76|        options, xoptions, cb, PRIV(ucd_caseless_sets) + rc, oc);
  ------------------
  |  |  195|     76|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|     76|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     76|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     76|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     76|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5262|       |
 5263|       |      /* Do nothing if the other case range is within the original range. */
 5264|       |
 5265|  1.37k|      else if (oc >= cb->class_range_start && od <= cb->class_range_end)
  ------------------
  |  Branch (5265:16): [True: 786, False: 588]
  |  Branch (5265:47): [True: 662, False: 124]
  ------------------
 5266|    662|        continue;
 5267|       |
 5268|       |      /* Extend the original range if there is overlap, noting that if oc < c,
 5269|       |      we can't have od > end because a subrange is always shorter than the
 5270|       |      basic range. Otherwise, use a recursive call to add the additional range.
 5271|       |      */
 5272|       |
 5273|    712|      else if (oc < start && od >= start - 1) start = oc; /* Extend downwards */
  ------------------
  |  Branch (5273:16): [True: 588, False: 124]
  |  Branch (5273:30): [True: 2, False: 586]
  ------------------
 5274|    710|      else if (od > end && oc <= end + 1)
  ------------------
  |  Branch (5274:16): [True: 124, False: 586]
  |  Branch (5274:28): [True: 10, False: 114]
  ------------------
 5275|     10|        {
 5276|     10|        end = od;       /* Extend upwards */
 5277|     10|        if (end > classbits_end) classbits_end = (end <= 0xff ? end : 0xff);
  ------------------
  |  Branch (5277:13): [True: 10, False: 0]
  |  Branch (5277:51): [True: 0, False: 10]
  ------------------
 5278|     10|        }
 5279|    700|      else n8 += add_to_class_internal(classbits, uchardptr, options, xoptions,
 5280|    700|        cb, oc, od);
 5281|  1.45k|      }
 5282|  1.74k|    }
 5283|    502|  else
 5284|       |#else
 5285|       |  (void)xoptions;   /* Avoid compiler warning */
 5286|       |#endif  /* SUPPORT_UNICODE */
 5287|       |
 5288|       |  /* Not UTF mode */
 5289|       |
 5290|  1.00k|  for (c = start; c <= classbits_end; c++)
  ------------------
  |  Branch (5290:19): [True: 502, False: 502]
  ------------------
 5291|    502|    {
 5292|    502|    SETBIT(classbits, cb->fcc[c]);
  ------------------
  |  |  386|    502|#define SETBIT(a,b) a[(b)/8] = (uint8_t)(a[(b)/8] | (1u << ((b)&7)))
  ------------------
 5293|    502|    n8++;
 5294|    502|    }
 5295|  2.24k|  }
 5296|       |
 5297|       |/* Now handle the originally supplied range. Adjust the final value according
 5298|       |to the bit length - this means that the same lists of (e.g.) horizontal spaces
 5299|       |can be used in all cases. */
 5300|       |
 5301|  3.59k|if ((options & PCRE2_UTF) == 0 && end > MAX_NON_UTF_CHAR)
  ------------------
  |  |  138|  3.59k|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
              if ((options & PCRE2_UTF) == 0 && end > MAX_NON_UTF_CHAR)
  ------------------
  |  | 1927|    856|#define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH))
  |  |  ------------------
  |  |  |  | 1860|    856|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (5301:5): [True: 856, False: 2.74k]
  |  Branch (5301:35): [True: 0, False: 856]
  ------------------
 5302|      0|  end = MAX_NON_UTF_CHAR;
  ------------------
  |  | 1927|      0|#define MAX_NON_UTF_CHAR (0xffffffffU >> (32 - PCRE2_CODE_UNIT_WIDTH))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 5303|       |
 5304|  3.59k|if (start > cb->class_range_start && end < cb->class_range_end) return n8;
  ------------------
  |  Branch (5304:5): [True: 218, False: 3.38k]
  |  Branch (5304:38): [True: 44, False: 174]
  ------------------
 5305|       |
 5306|       |/* Use the bitmap for characters < 256. Otherwise use extra data.*/
 5307|       |
 5308|  9.47k|for (c = start; c <= classbits_end; c++)
  ------------------
  |  Branch (5308:17): [True: 5.92k, False: 3.55k]
  ------------------
 5309|  5.92k|  {
 5310|       |  /* Regardless of start, c will always be <= 255. */
 5311|  5.92k|  SETBIT(classbits, c);
  ------------------
  |  |  386|  5.92k|#define SETBIT(a,b) a[(b)/8] = (uint8_t)(a[(b)/8] | (1u << ((b)&7)))
  ------------------
 5312|  5.92k|  n8++;
 5313|  5.92k|  }
 5314|       |
 5315|  3.55k|#ifdef SUPPORT_WIDE_CHARS
 5316|  3.55k|if (start <= 0xff) start = 0xff + 1;
  ------------------
  |  Branch (5316:5): [True: 3.40k, False: 150]
  ------------------
 5317|       |
 5318|  3.55k|if (end >= start)
  ------------------
  |  Branch (5318:5): [True: 160, False: 3.39k]
  ------------------
 5319|    160|  {
 5320|    160|  PCRE2_UCHAR *uchardata = *uchardptr;
  ------------------
  |  |  819|    160|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    160|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    160|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    160|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5321|       |
 5322|    160|#ifdef SUPPORT_UNICODE
 5323|    160|  if ((options & PCRE2_UTF) != 0)
  ------------------
  |  |  138|    160|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (5323:7): [True: 160, False: 0]
  ------------------
 5324|    160|    {
 5325|    160|    if (start < end)
  ------------------
  |  Branch (5325:9): [True: 74, False: 86]
  ------------------
 5326|     74|      {
 5327|     74|      *uchardata++ = XCL_RANGE;
  ------------------
  |  | 1334|     74|#define XCL_RANGE    2     /* A range (two multibyte chars) follows */
  ------------------
 5328|     74|      uchardata += PRIV(ord2utf)(start, uchardata);
  ------------------
  |  |  195|     74|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|     74|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     74|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     74|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     74|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5329|     74|      uchardata += PRIV(ord2utf)(end, uchardata);
  ------------------
  |  |  195|     74|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|     74|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     74|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     74|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     74|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5330|     74|      }
 5331|     86|    else if (start == end)
  ------------------
  |  Branch (5331:14): [True: 86, False: 0]
  ------------------
 5332|     86|      {
 5333|     86|      *uchardata++ = XCL_SINGLE;
  ------------------
  |  | 1333|     86|#define XCL_SINGLE   1     /* Single item (one multibyte char) follows */
  ------------------
 5334|     86|      uchardata += PRIV(ord2utf)(start, uchardata);
  ------------------
  |  |  195|     86|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|     86|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     86|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     86|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     86|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5335|     86|      }
 5336|    160|    }
 5337|      0|  else
 5338|      0|#endif  /* SUPPORT_UNICODE */
 5339|       |
 5340|       |  /* Without UTF support, character values are constrained by the bit length,
 5341|       |  and can only be > 256 for 16-bit and 32-bit libraries. */
 5342|       |
 5343|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
 5344|      0|    {}
 5345|       |#else
 5346|       |  if (start < end)
 5347|       |    {
 5348|       |    *uchardata++ = XCL_RANGE;
 5349|       |    *uchardata++ = start;
 5350|       |    *uchardata++ = end;
 5351|       |    }
 5352|       |  else if (start == end)
 5353|       |    {
 5354|       |    *uchardata++ = XCL_SINGLE;
 5355|       |    *uchardata++ = start;
 5356|       |    }
 5357|       |#endif  /* PCRE2_CODE_UNIT_WIDTH == 8 */
 5358|    160|  *uchardptr = uchardata;   /* Updata extra data pointer */
 5359|    160|  }
 5360|       |#else  /* SUPPORT_WIDE_CHARS */
 5361|       |  (void)uchardptr;          /* Avoid compiler warning */
 5362|       |#endif /* SUPPORT_WIDE_CHARS */
 5363|       |
 5364|  3.55k|return n8;    /* Number of 8-bit characters */
 5365|  3.59k|}
pcre2_compile.c:get_othercase_range:
 5153|  3.19k|{
 5154|  3.19k|uint32_t c, othercase, next;
 5155|  3.19k|unsigned int co;
 5156|       |
 5157|       |/* Find the first character that has an other case. If it has multiple other
 5158|       |cases, return its case offset value. When CASELESS_RESTRICT is set, ignore the
 5159|       |multi-case entries that begin with ASCII values. In 32-bit mode, a value
 5160|       |greater than the Unicode maximum ends the range. */
 5161|       |
 5162|  4.75k|for (c = *cptr; c <= d; c++)
  ------------------
  |  Branch (5162:17): [True: 3.01k, False: 1.74k]
  ------------------
 5163|  3.01k|  {
 5164|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 5165|       |  if (c > MAX_UTF_CODE_POINT) return -1;
 5166|       |#endif
 5167|  3.01k|  if ((co = UCD_CASESET(c)) != 0 &&
  ------------------
  |  | 1888|  3.01k|#define UCD_CASESET(ch)     GET_UCD(ch)->caseset
  |  |  ------------------
  |  |  |  | 1873|  3.01k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  3.01k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  3.01k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  3.01k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  3.01k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  3.01k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  3.01k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  3.01k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  3.01k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  3.01k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  3.01k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  3.01k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  3.01k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  3.01k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  3.01k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  3.01k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  3.01k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  3.01k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  3.01k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  3.01k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  3.01k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  3.01k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5167:7): [True: 76, False: 2.93k]
  ------------------
 5168|     76|      (!restricted || PRIV(ucd_caseless_sets)[co] > 127))
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      0|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5168:8): [True: 76, False: 0]
  |  Branch (5168:23): [True: 0, False: 0]
  ------------------
 5169|     76|    {
 5170|     76|    *ocptr = c++;   /* Character that has the set */
 5171|     76|    *cptr = c;      /* Rest of input range */
 5172|     76|    return (int)co;
 5173|     76|    }
 5174|       |
 5175|       |   /* This is not a valid multiple-case character. Check that the single other
 5176|       |   case is different to the original. We don't need to check "restricted" here
 5177|       |   because the non-ASCII characters with multiple cases that include an ASCII
 5178|       |   character don't have a different "othercase". */
 5179|       |
 5180|  2.93k|  if ((othercase = UCD_OTHERCASE(c)) != c) break;
  ------------------
  |  | 1889|  2.93k|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|  2.93k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  2.93k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  2.93k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  2.93k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  2.93k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  2.93k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  2.93k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  2.93k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  2.93k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  2.93k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  2.93k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  2.93k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  2.93k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  2.93k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  2.93k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  2.93k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  2.93k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  2.93k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  2.93k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  2.93k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  2.93k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  2.93k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5180:7): [True: 1.37k, False: 1.56k]
  ------------------
 5181|  2.93k|  }
 5182|       |
 5183|  3.12k|if (c > d) return -1;  /* Reached end of range */
  ------------------
  |  Branch (5183:5): [True: 1.74k, False: 1.37k]
  ------------------
 5184|       |
 5185|       |/* Found a character that has a single other case. Search for the end of the
 5186|       |range, which is either the end of the input range, or a character that has zero
 5187|       |or more than one other cases. */
 5188|       |
 5189|  1.37k|*ocptr = othercase;
 5190|  1.37k|next = othercase + 1;
 5191|       |
 5192|  1.57k|for (++c; c <= d; c++)
  ------------------
  |  Branch (5192:11): [True: 890, False: 682]
  ------------------
 5193|    890|  {
 5194|    890|  if ((co = UCD_CASESET(c)) != 0 || UCD_OTHERCASE(c) != next) break;
  ------------------
  |  | 1888|    890|#define UCD_CASESET(ch)     GET_UCD(ch)->caseset
  |  |  ------------------
  |  |  |  | 1873|    890|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|    890|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    890|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|    890|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    890|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    890|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    890|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|    890|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    890|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|    890|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    890|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    890|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    890|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    890|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|    890|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    890|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    890|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    890|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    890|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|    890|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    890|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    890|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if ((co = UCD_CASESET(c)) != 0 || UCD_OTHERCASE(c) != next) break;
  ------------------
  |  | 1889|    876|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|    876|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|    876|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    876|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|    876|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    876|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    876|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    876|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|    876|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    876|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|    876|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    876|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    876|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    876|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    876|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|    876|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    876|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    876|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    876|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    876|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|    876|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    876|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    876|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5194:7): [True: 14, False: 876]
  |  Branch (5194:37): [True: 678, False: 198]
  ------------------
 5195|    198|  next++;
 5196|    198|  }
 5197|       |
 5198|  1.37k|*odptr = next - 1;     /* End of othercase range */
 5199|  1.37k|*cptr = c;             /* Rest of input range */
 5200|  1.37k|return 0;
 5201|  3.12k|}
pcre2_compile.c:add_list_to_class_internal:
 5397|     76|{
 5398|     76|unsigned int n8 = 0;
 5399|    260|while (p[0] < NOTACHAR)
  ------------------
  |  |  223|    260|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (5399:8): [True: 184, False: 76]
  ------------------
 5400|    184|  {
 5401|    184|  unsigned int n = 0;
 5402|    184|  if (p[0] != except)
  ------------------
  |  Branch (5402:7): [True: 126, False: 58]
  ------------------
 5403|    126|    {
 5404|    170|    while(p[n+1] == p[0] + n + 1) n++;
  ------------------
  |  Branch (5404:11): [True: 44, False: 126]
  ------------------
 5405|    126|    n8 += add_to_class_internal(classbits, uchardptr, options, xoptions, cb,
 5406|    126|      p[0], p[n]);
 5407|    126|    }
 5408|    184|  p += n + 1;
 5409|    184|  }
 5410|     76|return n8;
 5411|     76|}
pcre2_compile.c:add_not_list_to_class:
 5517|      8|{
 5518|      8|BOOL utf = (options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|      8|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 5519|      8|unsigned int n8 = 0;
 5520|      8|if (p[0] > 0)
  ------------------
  |  Branch (5520:5): [True: 8, False: 0]
  ------------------
 5521|      8|  n8 += add_to_class(classbits, uchardptr, options, xoptions, cb, 0, p[0] - 1);
 5522|     80|while (p[0] < NOTACHAR)
  ------------------
  |  |  223|     80|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (5522:8): [True: 72, False: 8]
  ------------------
 5523|     72|  {
 5524|    152|  while (p[1] == p[0] + 1) p++;
  ------------------
  |  Branch (5524:10): [True: 80, False: 72]
  ------------------
 5525|     72|  n8 += add_to_class(classbits, uchardptr, options, xoptions, cb, p[0] + 1,
 5526|     72|    (p[1] == NOTACHAR) ? (utf ? 0x10ffffu : 0xffffffffu) : p[1] - 1);
  ------------------
  |  |  223|     72|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (5526:5): [True: 8, False: 64]
  |  Branch (5526:27): [True: 8, False: 0]
  ------------------
 5527|     72|  p++;
 5528|     72|  }
 5529|      8|return n8;
 5530|      8|}
pcre2_compile.c:add_to_class:
 5439|  2.77k|{
 5440|  2.77k|cb->class_range_start = start;
 5441|  2.77k|cb->class_range_end = end;
 5442|  2.77k|return add_to_class_internal(classbits, uchardptr, options, xoptions, cb,
 5443|  2.77k|  start, end);
 5444|  2.77k|}
pcre2_compile.c:is_anchored:
 8695|    299|{
 8696|    312|do {
 8697|    312|   PCRE2_SPTR scode = first_significant_code(
  ------------------
  |  |  820|    312|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    312|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    312|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    312|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8698|    312|     code + PRIV(OP_lengths)[*code], FALSE);
  ------------------
  |  |  195|    312|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|    312|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    312|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    312|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    312|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                   code + PRIV(OP_lengths)[*code], FALSE);
  ------------------
  |  |   87|    312|#define FALSE   0
  ------------------
 8699|    312|   int op = *scode;
 8700|       |
 8701|       |   /* Non-capturing brackets */
 8702|       |
 8703|    312|   if (op == OP_BRA  || op == OP_BRAPOS ||
  ------------------
  |  Branch (8703:8): [True: 0, False: 312]
  |  Branch (8703:25): [True: 0, False: 312]
  ------------------
 8704|    312|       op == OP_SBRA || op == OP_SBRAPOS)
  ------------------
  |  Branch (8704:8): [True: 0, False: 312]
  |  Branch (8704:25): [True: 0, False: 312]
  ------------------
 8705|      0|     {
 8706|      0|     if (!is_anchored(scode, bracket_map, cb, atomcount, inassert))
  ------------------
  |  Branch (8706:10): [True: 0, False: 0]
  ------------------
 8707|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8708|      0|     }
 8709|       |
 8710|       |   /* Capturing brackets */
 8711|       |
 8712|    312|   else if (op == OP_CBRA  || op == OP_CBRAPOS ||
  ------------------
  |  Branch (8712:13): [True: 2, False: 310]
  |  Branch (8712:31): [True: 0, False: 310]
  ------------------
 8713|    310|            op == OP_SCBRA || op == OP_SCBRAPOS)
  ------------------
  |  Branch (8713:13): [True: 0, False: 310]
  |  Branch (8713:31): [True: 0, False: 310]
  ------------------
 8714|      2|     {
 8715|      2|     int n = GET2(scode, 1+LINK_SIZE);
  ------------------
  |  |  194|      2|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 8716|      2|     uint32_t new_map = bracket_map | ((n < 32)? (1u << n) : 1);
  ------------------
  |  Branch (8716:40): [True: 2, False: 0]
  ------------------
 8717|      2|     if (!is_anchored(scode, new_map, cb, atomcount, inassert)) return FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
  |  Branch (8717:10): [True: 2, False: 0]
  ------------------
 8718|      2|     }
 8719|       |
 8720|       |   /* Positive forward assertion */
 8721|       |
 8722|    310|   else if (op == OP_ASSERT || op == OP_ASSERT_NA)
  ------------------
  |  Branch (8722:13): [True: 0, False: 310]
  |  Branch (8722:32): [True: 0, False: 310]
  ------------------
 8723|      0|     {
 8724|      0|     if (!is_anchored(scode, bracket_map, cb, atomcount, TRUE)) return FALSE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
                   if (!is_anchored(scode, bracket_map, cb, atomcount, TRUE)) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (8724:10): [True: 0, False: 0]
  ------------------
 8725|      0|     }
 8726|       |
 8727|       |   /* Condition. If there is no second branch, it can't be anchored. */
 8728|       |
 8729|    310|   else if (op == OP_COND || op == OP_SCOND)
  ------------------
  |  Branch (8729:13): [True: 0, False: 310]
  |  Branch (8729:30): [True: 0, False: 310]
  ------------------
 8730|      0|     {
 8731|      0|     if (scode[GET(scode,1)] != OP_ALT) return FALSE;
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                   if (scode[GET(scode,1)] != OP_ALT) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (8731:10): [True: 0, False: 0]
  ------------------
 8732|      0|     if (!is_anchored(scode, bracket_map, cb, atomcount, inassert))
  ------------------
  |  Branch (8732:10): [True: 0, False: 0]
  ------------------
 8733|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8734|      0|     }
 8735|       |
 8736|       |   /* Atomic groups */
 8737|       |
 8738|    310|   else if (op == OP_ONCE)
  ------------------
  |  Branch (8738:13): [True: 0, False: 310]
  ------------------
 8739|      0|     {
 8740|      0|     if (!is_anchored(scode, bracket_map, cb, atomcount + 1, inassert))
  ------------------
  |  Branch (8740:10): [True: 0, False: 0]
  ------------------
 8741|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8742|      0|     }
 8743|       |
 8744|       |   /* .* is not anchored unless DOTALL is set (which generates OP_ALLANY) and
 8745|       |   it isn't in brackets that are or may be referenced or inside an atomic
 8746|       |   group or an assertion. Also the pattern must not contain *PRUNE or *SKIP,
 8747|       |   because these break the feature. Consider, for example, /(?s).*?(*PRUNE)b/
 8748|       |   with the subject "aab", which matches "b", i.e. not at the start of a line.
 8749|       |   There is also an option that disables auto-anchoring. */
 8750|       |
 8751|    310|   else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR ||
  ------------------
  |  Branch (8751:14): [True: 2, False: 308]
  |  Branch (8751:35): [True: 0, False: 308]
  ------------------
 8752|    308|             op == OP_TYPEPOSSTAR))
  ------------------
  |  Branch (8752:14): [True: 0, False: 308]
  ------------------
 8753|      2|     {
 8754|      2|     if (scode[1] != OP_ALLANY || (bracket_map & cb->backref_map) != 0 ||
  ------------------
  |  Branch (8754:10): [True: 2, False: 0]
  |  Branch (8754:35): [True: 0, False: 0]
  ------------------
 8755|      0|         atomcount > 0 || cb->had_pruneorskip || inassert ||
  ------------------
  |  Branch (8755:10): [True: 0, False: 0]
  |  Branch (8755:27): [True: 0, False: 0]
  |  Branch (8755:50): [True: 0, False: 0]
  ------------------
 8756|      0|         (cb->external_options & PCRE2_NO_DOTSTAR_ANCHOR) != 0)
  ------------------
  |  |  134|      0|#define PCRE2_NO_DOTSTAR_ANCHOR   0x00008000u  /* C       */
  ------------------
  |  Branch (8756:10): [True: 0, False: 0]
  ------------------
 8757|      2|       return FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
 8758|      2|     }
 8759|       |
 8760|       |   /* Check for explicit anchoring */
 8761|       |
 8762|    308|   else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE;
  ------------------
  |  |   87|    294|#define FALSE   0
  ------------------
  |  Branch (8762:13): [True: 305, False: 3]
  |  Branch (8762:29): [True: 304, False: 1]
  |  Branch (8762:45): [True: 294, False: 10]
  ------------------
 8763|       |
 8764|     14|   code += GET(code, 1);
  ------------------
  |  |  109|     14|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 8765|     14|   }
 8766|    299|while (*code == OP_ALT);   /* Loop for each alternative */
  ------------------
  |  Branch (8766:8): [True: 13, False: 1]
  ------------------
 8767|      1|return TRUE;
  ------------------
  |  |   88|      1|#define TRUE    1
  ------------------
 8768|    299|}
pcre2_compile.c:first_significant_code:
 5062|    842|{
 5063|    842|for (;;)
 5064|    872|  {
 5065|    872|  switch ((int)*code)
 5066|    872|    {
 5067|      0|    case OP_ASSERT_NOT:
  ------------------
  |  Branch (5067:5): [True: 0, False: 872]
  ------------------
 5068|      0|    case OP_ASSERTBACK:
  ------------------
  |  Branch (5068:5): [True: 0, False: 872]
  ------------------
 5069|      0|    case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (5069:5): [True: 0, False: 872]
  ------------------
 5070|      0|    case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (5070:5): [True: 0, False: 872]
  ------------------
 5071|      0|    if (!skipassert) return code;
  ------------------
  |  Branch (5071:9): [True: 0, False: 0]
  ------------------
 5072|      0|    do code += GET(code, 1); while (*code == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (5072:37): [True: 0, False: 0]
  ------------------
 5073|      0|    code += PRIV(OP_lengths)[*code];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5074|      0|    break;
 5075|       |
 5076|      0|    case OP_WORD_BOUNDARY:
  ------------------
  |  Branch (5076:5): [True: 0, False: 872]
  ------------------
 5077|     12|    case OP_NOT_WORD_BOUNDARY:
  ------------------
  |  Branch (5077:5): [True: 12, False: 860]
  ------------------
 5078|     42|    case OP_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (5078:5): [True: 30, False: 842]
  ------------------
 5079|     92|    case OP_NOT_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (5079:5): [True: 50, False: 822]
  ------------------
 5080|     92|    if (!skipassert) return code;
  ------------------
  |  Branch (5080:9): [True: 62, False: 30]
  ------------------
 5081|       |    /* Fall through */
 5082|       |
 5083|     30|    case OP_CALLOUT:
  ------------------
  |  Branch (5083:5): [True: 0, False: 872]
  ------------------
 5084|     30|    case OP_CREF:
  ------------------
  |  Branch (5084:5): [True: 0, False: 872]
  ------------------
 5085|     30|    case OP_DNCREF:
  ------------------
  |  Branch (5085:5): [True: 0, False: 872]
  ------------------
 5086|     30|    case OP_RREF:
  ------------------
  |  Branch (5086:5): [True: 0, False: 872]
  ------------------
 5087|     30|    case OP_DNRREF:
  ------------------
  |  Branch (5087:5): [True: 0, False: 872]
  ------------------
 5088|     30|    case OP_FALSE:
  ------------------
  |  Branch (5088:5): [True: 0, False: 872]
  ------------------
 5089|     30|    case OP_TRUE:
  ------------------
  |  Branch (5089:5): [True: 0, False: 872]
  ------------------
 5090|     30|    code += PRIV(OP_lengths)[*code];
  ------------------
  |  |  195|     30|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|     30|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     30|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     30|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     30|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5091|     30|    break;
 5092|       |
 5093|      0|    case OP_CALLOUT_STR:
  ------------------
  |  Branch (5093:5): [True: 0, False: 872]
  ------------------
 5094|      0|    code += GET(code, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5095|      0|    break;
 5096|       |
 5097|      0|    case OP_SKIPZERO:
  ------------------
  |  Branch (5097:5): [True: 0, False: 872]
  ------------------
 5098|      0|    code += 2 + GET(code, 2) + LINK_SIZE;
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  code += 2 + GET(code, 2) + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5099|      0|    break;
 5100|       |
 5101|      0|    case OP_COND:
  ------------------
  |  Branch (5101:5): [True: 0, False: 872]
  ------------------
 5102|      0|    case OP_SCOND:
  ------------------
  |  Branch (5102:5): [True: 0, False: 872]
  ------------------
 5103|      0|    if (code[1+LINK_SIZE] != OP_FALSE ||   /* Not DEFINE */
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (5103:9): [True: 0, False: 0]
  ------------------
 5104|      0|        code[GET(code, 1)] != OP_KET)      /* More than one branch */
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (5104:9): [True: 0, False: 0]
  ------------------
 5105|      0|      return code;
 5106|      0|    code += GET(code, 1) + 1 + LINK_SIZE;
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  code += GET(code, 1) + 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5107|      0|    break;
 5108|       |
 5109|      0|    case OP_MARK:
  ------------------
  |  Branch (5109:5): [True: 0, False: 872]
  ------------------
 5110|      0|    case OP_COMMIT_ARG:
  ------------------
  |  Branch (5110:5): [True: 0, False: 872]
  ------------------
 5111|      0|    case OP_PRUNE_ARG:
  ------------------
  |  Branch (5111:5): [True: 0, False: 872]
  ------------------
 5112|      0|    case OP_SKIP_ARG:
  ------------------
  |  Branch (5112:5): [True: 0, False: 872]
  ------------------
 5113|      0|    case OP_THEN_ARG:
  ------------------
  |  Branch (5113:5): [True: 0, False: 872]
  ------------------
 5114|      0|    code += code[1] + PRIV(OP_lengths)[*code];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5115|      0|    break;
 5116|       |
 5117|    780|    default:
  ------------------
  |  Branch (5117:5): [True: 780, False: 92]
  ------------------
 5118|    780|    return code;
 5119|    872|    }
 5120|    872|  }
 5121|       |/* Control never reaches here */
 5122|    842|}
pcre2_compile.c:find_firstassertedcu:
 9077|    259|{
 9078|    259|uint32_t c = 0;
 9079|    259|uint32_t cflags = REQ_NONE;
  ------------------
  |  |  394|    259|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 9080|       |
 9081|    259|*flags = REQ_NONE;
  ------------------
  |  |  394|    259|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
 9082|    259|do {
 9083|    259|   uint32_t d;
 9084|    259|   uint32_t dflags;
 9085|    259|   int xl = (*code == OP_CBRA || *code == OP_SCBRA ||
  ------------------
  |  Branch (9085:14): [True: 2, False: 257]
  |  Branch (9085:34): [True: 0, False: 257]
  ------------------
 9086|    257|             *code == OP_CBRAPOS || *code == OP_SCBRAPOS)? IMM2_SIZE:0;
  ------------------
  |  |  193|      2|#define IMM2_SIZE 2
  ------------------
  |  Branch (9086:14): [True: 0, False: 257]
  |  Branch (9086:37): [True: 0, False: 257]
  ------------------
 9087|    259|   PCRE2_SPTR scode = first_significant_code(code + 1+LINK_SIZE + xl, TRUE);
  ------------------
  |  |  820|    259|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    259|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    259|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    259|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                 PCRE2_SPTR scode = first_significant_code(code + 1+LINK_SIZE + xl, TRUE);
  ------------------
  |  |   98|    259|#define LINK_SIZE 2
  ------------------
                 PCRE2_SPTR scode = first_significant_code(code + 1+LINK_SIZE + xl, TRUE);
  ------------------
  |  |   88|    259|#define TRUE    1
  ------------------
 9088|    259|   PCRE2_UCHAR op = *scode;
  ------------------
  |  |  819|    259|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    259|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    259|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    259|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9089|       |
 9090|    259|   switch(op)
 9091|    259|     {
 9092|    158|     default:
  ------------------
  |  Branch (9092:6): [True: 158, False: 101]
  ------------------
 9093|    158|     return 0;
 9094|       |
 9095|      0|     case OP_BRA:
  ------------------
  |  Branch (9095:6): [True: 0, False: 259]
  ------------------
 9096|      0|     case OP_BRAPOS:
  ------------------
  |  Branch (9096:6): [True: 0, False: 259]
  ------------------
 9097|      2|     case OP_CBRA:
  ------------------
  |  Branch (9097:6): [True: 2, False: 257]
  ------------------
 9098|      2|     case OP_SCBRA:
  ------------------
  |  Branch (9098:6): [True: 0, False: 259]
  ------------------
 9099|      2|     case OP_CBRAPOS:
  ------------------
  |  Branch (9099:6): [True: 0, False: 259]
  ------------------
 9100|      2|     case OP_SCBRAPOS:
  ------------------
  |  Branch (9100:6): [True: 0, False: 259]
  ------------------
 9101|      2|     case OP_ASSERT:
  ------------------
  |  Branch (9101:6): [True: 0, False: 259]
  ------------------
 9102|      2|     case OP_ASSERT_NA:
  ------------------
  |  Branch (9102:6): [True: 0, False: 259]
  ------------------
 9103|      2|     case OP_ONCE:
  ------------------
  |  Branch (9103:6): [True: 0, False: 259]
  ------------------
 9104|      2|     case OP_SCRIPT_RUN:
  ------------------
  |  Branch (9104:6): [True: 0, False: 259]
  ------------------
 9105|      2|     d = find_firstassertedcu(scode, &dflags, inassert +
 9106|      2|       ((op == OP_ASSERT || op == OP_ASSERT_NA)?1:0));
  ------------------
  |  Branch (9106:10): [True: 0, False: 2]
  |  Branch (9106:29): [True: 0, False: 2]
  ------------------
 9107|      2|     if (dflags >= REQ_NONE) return 0;
  ------------------
  |  |  394|      2|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (9107:10): [True: 2, False: 0]
  ------------------
 9108|      0|     if (cflags >= REQ_NONE) { c = d; cflags = dflags; }
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (9108:10): [True: 0, False: 0]
  ------------------
 9109|      0|       else if (c != d || cflags != dflags) return 0;
  ------------------
  |  Branch (9109:17): [True: 0, False: 0]
  |  Branch (9109:27): [True: 0, False: 0]
  ------------------
 9110|      0|     break;
 9111|       |
 9112|      0|     case OP_EXACT:
  ------------------
  |  Branch (9112:6): [True: 0, False: 259]
  ------------------
 9113|      0|     scode += IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 9114|       |     /* Fall through */
 9115|       |
 9116|     34|     case OP_CHAR:
  ------------------
  |  Branch (9116:6): [True: 34, False: 225]
  ------------------
 9117|     35|     case OP_PLUS:
  ------------------
  |  Branch (9117:6): [True: 1, False: 258]
  ------------------
 9118|     35|     case OP_MINPLUS:
  ------------------
  |  Branch (9118:6): [True: 0, False: 259]
  ------------------
 9119|     35|     case OP_POSPLUS:
  ------------------
  |  Branch (9119:6): [True: 0, False: 259]
  ------------------
 9120|     35|     if (inassert == 0) return 0;
  ------------------
  |  Branch (9120:10): [True: 35, False: 0]
  ------------------
 9121|      0|     if (cflags >= REQ_NONE) { c = scode[1]; cflags = 0; }
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
  |  Branch (9121:10): [True: 0, False: 0]
  ------------------
 9122|      0|       else if (c != scode[1]) return 0;
  ------------------
  |  Branch (9122:17): [True: 0, False: 0]
  ------------------
 9123|      0|     break;
 9124|       |
 9125|      0|     case OP_EXACTI:
  ------------------
  |  Branch (9125:6): [True: 0, False: 259]
  ------------------
 9126|      0|     scode += IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 9127|       |     /* Fall through */
 9128|       |
 9129|     63|     case OP_CHARI:
  ------------------
  |  Branch (9129:6): [True: 63, False: 196]
  ------------------
 9130|     63|     case OP_PLUSI:
  ------------------
  |  Branch (9130:6): [True: 0, False: 259]
  ------------------
 9131|     64|     case OP_MINPLUSI:
  ------------------
  |  Branch (9131:6): [True: 1, False: 258]
  ------------------
 9132|     64|     case OP_POSPLUSI:
  ------------------
  |  Branch (9132:6): [True: 0, False: 259]
  ------------------
 9133|     64|     if (inassert == 0) return 0;
  ------------------
  |  Branch (9133:10): [True: 64, False: 0]
  ------------------
 9134|       |
 9135|       |     /* If the character is more than one code unit long, we cannot set its
 9136|       |     first code unit when matching caselessly. Later scanning may pick up
 9137|       |     multiple code units. */
 9138|       |
 9139|      0|#ifdef SUPPORT_UNICODE
 9140|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
 9141|      0|     if (scode[1] >= 0x80) return 0;
  ------------------
  |  Branch (9141:10): [True: 0, False: 0]
  ------------------
 9142|       |#elif PCRE2_CODE_UNIT_WIDTH == 16
 9143|       |     if (scode[1] >= 0xd800 && scode[1] <= 0xdfff) return 0;
 9144|       |#endif
 9145|      0|#endif
 9146|       |
 9147|      0|     if (cflags >= REQ_NONE) { c = scode[1]; cflags = REQ_CASELESS; }
  ------------------
  |  |  394|      0|#define REQ_NONE      0xfffffffeu  /* Found not fixed character */
  ------------------
                   if (cflags >= REQ_NONE) { c = scode[1]; cflags = REQ_CASELESS; }
  ------------------
  |  |  395|      0|#define REQ_CASELESS  0x00000001u  /* Code unit in xxcu is caseless */
  ------------------
  |  Branch (9147:10): [True: 0, False: 0]
  ------------------
 9148|      0|       else if (c != scode[1]) return 0;
  ------------------
  |  Branch (9148:17): [True: 0, False: 0]
  ------------------
 9149|      0|     break;
 9150|    259|     }
 9151|       |
 9152|      0|   code += GET(code, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 9153|      0|   }
 9154|    259|while (*code == OP_ALT);
  ------------------
  |  Branch (9154:8): [True: 0, False: 0]
  ------------------
 9155|       |
 9156|      0|*flags = cflags;
 9157|      0|return c;
 9158|    259|}
pcre2_compile.c:is_startline:
 8800|    258|{
 8801|    271|do {
 8802|    271|   PCRE2_SPTR scode = first_significant_code(
  ------------------
  |  |  820|    271|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    271|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    271|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    271|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8803|    271|     code + PRIV(OP_lengths)[*code], FALSE);
  ------------------
  |  |  195|    271|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|    271|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    271|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    271|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    271|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                   code + PRIV(OP_lengths)[*code], FALSE);
  ------------------
  |  |   87|    271|#define FALSE   0
  ------------------
 8804|    271|   int op = *scode;
 8805|       |
 8806|       |   /* If we are at the start of a conditional assertion group, *both* the
 8807|       |   conditional assertion *and* what follows the condition must satisfy the test
 8808|       |   for start of line. Other kinds of condition fail. Note that there may be an
 8809|       |   auto-callout at the start of a condition. */
 8810|       |
 8811|    271|   if (op == OP_COND)
  ------------------
  |  Branch (8811:8): [True: 0, False: 271]
  ------------------
 8812|      0|     {
 8813|      0|     scode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 8814|       |
 8815|      0|     if (*scode == OP_CALLOUT) scode += PRIV(OP_lengths)[OP_CALLOUT];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (8815:10): [True: 0, False: 0]
  ------------------
 8816|      0|       else if (*scode == OP_CALLOUT_STR) scode += GET(scode, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (8816:17): [True: 0, False: 0]
  ------------------
 8817|       |
 8818|      0|     switch (*scode)
 8819|      0|       {
 8820|      0|       case OP_CREF:
  ------------------
  |  Branch (8820:8): [True: 0, False: 0]
  ------------------
 8821|      0|       case OP_DNCREF:
  ------------------
  |  Branch (8821:8): [True: 0, False: 0]
  ------------------
 8822|      0|       case OP_RREF:
  ------------------
  |  Branch (8822:8): [True: 0, False: 0]
  ------------------
 8823|      0|       case OP_DNRREF:
  ------------------
  |  Branch (8823:8): [True: 0, False: 0]
  ------------------
 8824|      0|       case OP_FAIL:
  ------------------
  |  Branch (8824:8): [True: 0, False: 0]
  ------------------
 8825|      0|       case OP_FALSE:
  ------------------
  |  Branch (8825:8): [True: 0, False: 0]
  ------------------
 8826|      0|       case OP_TRUE:
  ------------------
  |  Branch (8826:8): [True: 0, False: 0]
  ------------------
 8827|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8828|       |
 8829|      0|       default:     /* Assertion */
  ------------------
  |  Branch (8829:8): [True: 0, False: 0]
  ------------------
 8830|      0|       if (!is_startline(scode, bracket_map, cb, atomcount, TRUE)) return FALSE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
                     if (!is_startline(scode, bracket_map, cb, atomcount, TRUE)) return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (8830:12): [True: 0, False: 0]
  ------------------
 8831|      0|       do scode += GET(scode, 1); while (*scode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (8831:42): [True: 0, False: 0]
  ------------------
 8832|      0|       scode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 8833|      0|       break;
 8834|      0|       }
 8835|      0|     scode = first_significant_code(scode, FALSE);
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8836|      0|     op = *scode;
 8837|      0|     }
 8838|       |
 8839|       |   /* Non-capturing brackets */
 8840|       |
 8841|    271|   if (op == OP_BRA  || op == OP_BRAPOS ||
  ------------------
  |  Branch (8841:8): [True: 0, False: 271]
  |  Branch (8841:25): [True: 0, False: 271]
  ------------------
 8842|    271|       op == OP_SBRA || op == OP_SBRAPOS)
  ------------------
  |  Branch (8842:8): [True: 0, False: 271]
  |  Branch (8842:25): [True: 0, False: 271]
  ------------------
 8843|      0|     {
 8844|      0|     if (!is_startline(scode, bracket_map, cb, atomcount, inassert))
  ------------------
  |  Branch (8844:10): [True: 0, False: 0]
  ------------------
 8845|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8846|      0|     }
 8847|       |
 8848|       |   /* Capturing brackets */
 8849|       |
 8850|    271|   else if (op == OP_CBRA  || op == OP_CBRAPOS ||
  ------------------
  |  Branch (8850:13): [True: 2, False: 269]
  |  Branch (8850:31): [True: 0, False: 269]
  ------------------
 8851|    269|            op == OP_SCBRA || op == OP_SCBRAPOS)
  ------------------
  |  Branch (8851:13): [True: 0, False: 269]
  |  Branch (8851:31): [True: 0, False: 269]
  ------------------
 8852|      2|     {
 8853|      2|     int n = GET2(scode, 1+LINK_SIZE);
  ------------------
  |  |  194|      2|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 8854|      2|     unsigned int new_map = bracket_map | ((n < 32)? (1u << n) : 1);
  ------------------
  |  Branch (8854:44): [True: 2, False: 0]
  ------------------
 8855|      2|     if (!is_startline(scode, new_map, cb, atomcount, inassert)) return FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
  |  Branch (8855:10): [True: 2, False: 0]
  ------------------
 8856|      2|     }
 8857|       |
 8858|       |   /* Positive forward assertions */
 8859|       |
 8860|    269|   else if (op == OP_ASSERT || op == OP_ASSERT_NA)
  ------------------
  |  Branch (8860:13): [True: 0, False: 269]
  |  Branch (8860:32): [True: 0, False: 269]
  ------------------
 8861|      0|     {
 8862|      0|     if (!is_startline(scode, bracket_map, cb, atomcount, TRUE))
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  |  Branch (8862:10): [True: 0, False: 0]
  ------------------
 8863|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8864|      0|     }
 8865|       |
 8866|       |   /* Atomic brackets */
 8867|       |
 8868|    269|   else if (op == OP_ONCE)
  ------------------
  |  Branch (8868:13): [True: 0, False: 269]
  ------------------
 8869|      0|     {
 8870|      0|     if (!is_startline(scode, bracket_map, cb, atomcount + 1, inassert))
  ------------------
  |  Branch (8870:10): [True: 0, False: 0]
  ------------------
 8871|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8872|      0|     }
 8873|       |
 8874|       |   /* .* means "start at start or after \n" if it isn't in atomic brackets or
 8875|       |   brackets that may be referenced or an assertion, and as long as the pattern
 8876|       |   does not contain *PRUNE or *SKIP, because these break the feature. Consider,
 8877|       |   for example, /.*?a(*PRUNE)b/ with the subject "aab", which matches "ab",
 8878|       |   i.e. not at the start of a line. There is also an option that disables this
 8879|       |   optimization. */
 8880|       |
 8881|    269|   else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)
  ------------------
  |  Branch (8881:13): [True: 2, False: 267]
  |  Branch (8881:34): [True: 0, False: 267]
  |  Branch (8881:58): [True: 0, False: 267]
  ------------------
 8882|      2|     {
 8883|      2|     if (scode[1] != OP_ANY || (bracket_map & cb->backref_map) != 0 ||
  ------------------
  |  Branch (8883:10): [True: 0, False: 2]
  |  Branch (8883:32): [True: 0, False: 2]
  ------------------
 8884|      2|         atomcount > 0 || cb->had_pruneorskip || inassert ||
  ------------------
  |  Branch (8884:10): [True: 0, False: 2]
  |  Branch (8884:27): [True: 0, False: 2]
  |  Branch (8884:50): [True: 0, False: 2]
  ------------------
 8885|      2|         (cb->external_options & PCRE2_NO_DOTSTAR_ANCHOR) != 0)
  ------------------
  |  |  134|      2|#define PCRE2_NO_DOTSTAR_ANCHOR   0x00008000u  /* C       */
  ------------------
  |  Branch (8885:10): [True: 0, False: 2]
  ------------------
 8886|      0|       return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 8887|      2|     }
 8888|       |
 8889|       |   /* Check for explicit circumflex; anything else gives a FALSE result. Note
 8890|       |   in particular that this includes atomic brackets OP_ONCE because the number
 8891|       |   of characters matched by .* cannot be adjusted inside them. */
 8892|       |
 8893|    267|   else if (op != OP_CIRC && op != OP_CIRCM) return FALSE;
  ------------------
  |  |   87|    256|#define FALSE   0
  ------------------
  |  Branch (8893:13): [True: 257, False: 10]
  |  Branch (8893:30): [True: 256, False: 1]
  ------------------
 8894|       |
 8895|       |   /* Move on to the next alternative */
 8896|       |
 8897|     13|   code += GET(code, 1);
  ------------------
  |  |  109|     13|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 8898|     13|   }
 8899|    258|while (*code == OP_ALT);  /* Loop for each alternative */
  ------------------
  |  Branch (8899:8): [True: 13, False: 0]
  ------------------
 8900|      0|return TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 8901|    258|}

php_pcre2_config:
   79|      8|{
   80|      8|if (where == NULL)  /* Requests a length */
  ------------------
  |  Branch (80:5): [True: 4, False: 4]
  ------------------
   81|      4|  {
   82|      4|  switch(what)
   83|      4|    {
   84|      0|    default:
  ------------------
  |  Branch (84:5): [True: 0, False: 4]
  ------------------
   85|      0|    return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |  375|      0|#define PCRE2_ERROR_BADOPTION         (-34)
  ------------------
   86|       |
   87|      0|    case PCRE2_CONFIG_BSR:
  ------------------
  |  |  445|      0|#define PCRE2_CONFIG_BSR                     0
  ------------------
  |  Branch (87:5): [True: 0, False: 4]
  ------------------
   88|      0|    case PCRE2_CONFIG_COMPILED_WIDTHS:
  ------------------
  |  |  460|      0|#define PCRE2_CONFIG_COMPILED_WIDTHS        14
  ------------------
  |  Branch (88:5): [True: 0, False: 4]
  ------------------
   89|      0|    case PCRE2_CONFIG_DEPTHLIMIT:
  ------------------
  |  |  452|      0|#define PCRE2_CONFIG_DEPTHLIMIT              7
  ------------------
  |  Branch (89:5): [True: 0, False: 4]
  ------------------
   90|      0|    case PCRE2_CONFIG_HEAPLIMIT:
  ------------------
  |  |  458|      0|#define PCRE2_CONFIG_HEAPLIMIT              12
  ------------------
  |  Branch (90:5): [True: 0, False: 4]
  ------------------
   91|      0|    case PCRE2_CONFIG_JIT:
  ------------------
  |  |  446|      0|#define PCRE2_CONFIG_JIT                     1
  ------------------
  |  Branch (91:5): [True: 0, False: 4]
  ------------------
   92|      0|    case PCRE2_CONFIG_LINKSIZE:
  ------------------
  |  |  448|      0|#define PCRE2_CONFIG_LINKSIZE                3
  ------------------
  |  Branch (92:5): [True: 0, False: 4]
  ------------------
   93|      0|    case PCRE2_CONFIG_MATCHLIMIT:
  ------------------
  |  |  449|      0|#define PCRE2_CONFIG_MATCHLIMIT              4
  ------------------
  |  Branch (93:5): [True: 0, False: 4]
  ------------------
   94|      0|    case PCRE2_CONFIG_NEVER_BACKSLASH_C:
  ------------------
  |  |  459|      0|#define PCRE2_CONFIG_NEVER_BACKSLASH_C      13
  ------------------
  |  Branch (94:5): [True: 0, False: 4]
  ------------------
   95|      0|    case PCRE2_CONFIG_NEWLINE:
  ------------------
  |  |  450|      0|#define PCRE2_CONFIG_NEWLINE                 5
  ------------------
  |  Branch (95:5): [True: 0, False: 4]
  ------------------
   96|      0|    case PCRE2_CONFIG_PARENSLIMIT:
  ------------------
  |  |  451|      0|#define PCRE2_CONFIG_PARENSLIMIT             6
  ------------------
  |  Branch (96:5): [True: 0, False: 4]
  ------------------
   97|      0|    case PCRE2_CONFIG_STACKRECURSE:    /* Obsolete */
  ------------------
  |  |  454|      0|#define PCRE2_CONFIG_STACKRECURSE            8  /* Obsolete */
  ------------------
  |  Branch (97:5): [True: 0, False: 4]
  ------------------
   98|      0|    case PCRE2_CONFIG_TABLES_LENGTH:
  ------------------
  |  |  461|      0|#define PCRE2_CONFIG_TABLES_LENGTH          15
  ------------------
  |  Branch (98:5): [True: 0, False: 4]
  ------------------
   99|      0|    case PCRE2_CONFIG_UNICODE:
  ------------------
  |  |  455|      0|#define PCRE2_CONFIG_UNICODE                 9
  ------------------
  |  Branch (99:5): [True: 0, False: 4]
  ------------------
  100|      0|    return sizeof(uint32_t);
  101|       |
  102|       |    /* These are handled below */
  103|       |
  104|      0|    case PCRE2_CONFIG_JITTARGET:
  ------------------
  |  |  447|      0|#define PCRE2_CONFIG_JITTARGET               2
  ------------------
  |  Branch (104:5): [True: 0, False: 4]
  ------------------
  105|      1|    case PCRE2_CONFIG_UNICODE_VERSION:
  ------------------
  |  |  456|      1|#define PCRE2_CONFIG_UNICODE_VERSION        10
  ------------------
  |  Branch (105:5): [True: 1, False: 3]
  ------------------
  106|      4|    case PCRE2_CONFIG_VERSION:
  ------------------
  |  |  457|      4|#define PCRE2_CONFIG_VERSION                11
  ------------------
  |  Branch (106:5): [True: 3, False: 1]
  ------------------
  107|      4|    break;
  108|      4|    }
  109|      4|  }
  110|       |
  111|      8|switch (what)
  112|      8|  {
  113|      0|  default:
  ------------------
  |  Branch (113:3): [True: 0, False: 8]
  ------------------
  114|      0|  return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |  375|      0|#define PCRE2_ERROR_BADOPTION         (-34)
  ------------------
  115|       |
  116|      0|  case PCRE2_CONFIG_BSR:
  ------------------
  |  |  445|      0|#define PCRE2_CONFIG_BSR                     0
  ------------------
  |  Branch (116:3): [True: 0, False: 8]
  ------------------
  117|       |#ifdef BSR_ANYCRLF
  118|       |  *((uint32_t *)where) = PCRE2_BSR_ANYCRLF;
  119|       |#else
  120|      0|  *((uint32_t *)where) = PCRE2_BSR_UNICODE;
  ------------------
  |  |  217|      0|#define PCRE2_BSR_UNICODE         1
  ------------------
  121|      0|#endif
  122|      0|  break;
  123|       |
  124|      0|  case PCRE2_CONFIG_COMPILED_WIDTHS:
  ------------------
  |  |  460|      0|#define PCRE2_CONFIG_COMPILED_WIDTHS        14
  ------------------
  |  Branch (124:3): [True: 0, False: 8]
  ------------------
  125|      0|  *((uint32_t *)where) = 0
  126|      0|#ifdef SUPPORT_PCRE2_8
  127|      0|  + 1
  128|      0|#endif
  129|       |#ifdef SUPPORT_PCRE2_16
  130|       |  + 2
  131|       |#endif
  132|       |#ifdef SUPPORT_PCRE2_32
  133|       |  + 4
  134|       |#endif
  135|      0|  ;
  136|      0|  break;
  137|       |
  138|      0|  case PCRE2_CONFIG_DEPTHLIMIT:
  ------------------
  |  |  452|      0|#define PCRE2_CONFIG_DEPTHLIMIT              7
  ------------------
  |  Branch (138:3): [True: 0, False: 8]
  ------------------
  139|      0|  *((uint32_t *)where) = MATCH_LIMIT_DEPTH;
  ------------------
  |  |   64|      0|#define MATCH_LIMIT_DEPTH MATCH_LIMIT
  |  |  ------------------
  |  |  |  |   52|      0|#define MATCH_LIMIT 10000000
  |  |  ------------------
  ------------------
  140|      0|  break;
  141|       |
  142|      0|  case PCRE2_CONFIG_HEAPLIMIT:
  ------------------
  |  |  458|      0|#define PCRE2_CONFIG_HEAPLIMIT              12
  ------------------
  |  Branch (142:3): [True: 0, False: 8]
  ------------------
  143|      0|  *((uint32_t *)where) = HEAP_LIMIT;
  ------------------
  |  |   35|      0|#define HEAP_LIMIT 20000000
  ------------------
  144|      0|  break;
  145|       |
  146|      0|  case PCRE2_CONFIG_JIT:
  ------------------
  |  |  446|      0|#define PCRE2_CONFIG_JIT                     1
  ------------------
  |  Branch (146:3): [True: 0, False: 8]
  ------------------
  147|       |#ifdef SUPPORT_JIT
  148|       |  *((uint32_t *)where) = 1;
  149|       |#else
  150|      0|  *((uint32_t *)where) = 0;
  151|      0|#endif
  152|      0|  break;
  153|       |
  154|      0|  case PCRE2_CONFIG_JITTARGET:
  ------------------
  |  |  447|      0|#define PCRE2_CONFIG_JITTARGET               2
  ------------------
  |  Branch (154:3): [True: 0, False: 8]
  ------------------
  155|       |#ifdef SUPPORT_JIT
  156|       |    {
  157|       |    const char *v = PRIV(jit_get_target)();
  158|       |    return (int)(1 + ((where == NULL)?
  159|       |      strlen(v) : PRIV(strcpy_c8)((PCRE2_UCHAR *)where, v)));
  160|       |    }
  161|       |#else
  162|      0|  return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |  375|      0|#define PCRE2_ERROR_BADOPTION         (-34)
  ------------------
  163|      0|#endif
  164|       |
  165|      0|  case PCRE2_CONFIG_LINKSIZE:
  ------------------
  |  |  448|      0|#define PCRE2_CONFIG_LINKSIZE                3
  ------------------
  |  Branch (165:3): [True: 0, False: 8]
  ------------------
  166|      0|  *((uint32_t *)where) = (uint32_t)configured_link_size;
  167|      0|  break;
  168|       |
  169|      0|  case PCRE2_CONFIG_MATCHLIMIT:
  ------------------
  |  |  449|      0|#define PCRE2_CONFIG_MATCHLIMIT              4
  ------------------
  |  Branch (169:3): [True: 0, False: 8]
  ------------------
  170|      0|  *((uint32_t *)where) = MATCH_LIMIT;
  ------------------
  |  |   52|      0|#define MATCH_LIMIT 10000000
  ------------------
  171|      0|  break;
  172|       |
  173|      0|  case PCRE2_CONFIG_NEWLINE:
  ------------------
  |  |  450|      0|#define PCRE2_CONFIG_NEWLINE                 5
  ------------------
  |  Branch (173:3): [True: 0, False: 8]
  ------------------
  174|      0|  *((uint32_t *)where) = NEWLINE_DEFAULT;
  ------------------
  |  |   89|      0|#define NEWLINE_DEFAULT 2
  ------------------
  175|      0|  break;
  176|       |
  177|      0|  case PCRE2_CONFIG_NEVER_BACKSLASH_C:
  ------------------
  |  |  459|      0|#define PCRE2_CONFIG_NEVER_BACKSLASH_C      13
  ------------------
  |  Branch (177:3): [True: 0, False: 8]
  ------------------
  178|       |#ifdef NEVER_BACKSLASH_C
  179|       |  *((uint32_t *)where) = 1;
  180|       |#else
  181|      0|  *((uint32_t *)where) = 0;
  182|      0|#endif
  183|      0|  break;
  184|       |
  185|      0|  case PCRE2_CONFIG_PARENSLIMIT:
  ------------------
  |  |  451|      0|#define PCRE2_CONFIG_PARENSLIMIT             6
  ------------------
  |  Branch (185:3): [True: 0, False: 8]
  ------------------
  186|      0|  *((uint32_t *)where) = PARENS_NEST_LIMIT;
  ------------------
  |  |   42|      0|#define PARENS_NEST_LIMIT 250
  ------------------
  187|      0|  break;
  188|       |
  189|       |  /* This is now obsolete. The stack is no longer used via recursion for
  190|       |  handling backtracking in pcre2_match(). */
  191|       |
  192|      0|  case PCRE2_CONFIG_STACKRECURSE:
  ------------------
  |  |  454|      0|#define PCRE2_CONFIG_STACKRECURSE            8  /* Obsolete */
  ------------------
  |  Branch (192:3): [True: 0, False: 8]
  ------------------
  193|      0|  *((uint32_t *)where) = 0;
  194|      0|  break;
  195|       |
  196|      0|  case PCRE2_CONFIG_TABLES_LENGTH:
  ------------------
  |  |  461|      0|#define PCRE2_CONFIG_TABLES_LENGTH          15
  ------------------
  |  Branch (196:3): [True: 0, False: 8]
  ------------------
  197|      0|  *((uint32_t *)where) = TABLES_LENGTH;
  ------------------
  |  |  610|      0|#define TABLES_LENGTH (ctypes_offset + 256)
  |  |  ------------------
  |  |  |  |  609|      0|#define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define cbits_offset  512                           /* Character classes */
  |  |  |  |  ------------------
  |  |  |  |               #define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  |  |  ------------------
  |  |  |  |  |  |  591|      0|#define cbit_length  320      /* Length of the cbits table */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|      0|  break;
  199|       |
  200|      2|  case PCRE2_CONFIG_UNICODE_VERSION:
  ------------------
  |  |  456|      2|#define PCRE2_CONFIG_UNICODE_VERSION        10
  ------------------
  |  Branch (200:3): [True: 2, False: 6]
  ------------------
  201|      2|    {
  202|      2|#if defined SUPPORT_UNICODE
  203|      2|    const char *v = PRIV(unicode_version);
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1966|      2|#define _pcre2_unicode_version         PCRE2_SUFFIX(_pcre2_unicode_version_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|       |#else
  205|       |    const char *v = "Unicode not supported";
  206|       |#endif
  207|      2|    return (int)(1 + ((where == NULL)?
  ------------------
  |  Branch (207:23): [True: 1, False: 1]
  ------------------
  208|      1|      strlen(v) : PRIV(strcpy_c8)((PCRE2_UCHAR *)where, v)));
  ------------------
  |  |  195|      1|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2034|      1|#define _pcre2_strcpy_c8             PCRE2_SUFFIX(_pcre2_strcpy_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      1|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      1|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|      0|   }
  210|      0|  break;
  211|       |
  212|      0|  case PCRE2_CONFIG_UNICODE:
  ------------------
  |  |  455|      0|#define PCRE2_CONFIG_UNICODE                 9
  ------------------
  |  Branch (212:3): [True: 0, False: 8]
  ------------------
  213|      0|#if defined SUPPORT_UNICODE
  214|      0|  *((uint32_t *)where) = 1;
  215|       |#else
  216|       |  *((uint32_t *)where) = 0;
  217|       |#endif
  218|      0|  break;
  219|       |
  220|       |  /* The hackery in setting "v" below is to cope with the case when
  221|       |  PCRE2_PRERELEASE is set to an empty string (which it is for real releases).
  222|       |  If the second alternative is used in this case, it does not leave a space
  223|       |  before the date. On the other hand, if all four macros are put into a single
  224|       |  XSTRING when PCRE2_PRERELEASE is not empty, an unwanted space is inserted.
  225|       |  There are problems using an "obvious" approach like this:
  226|       |
  227|       |     XSTRING(PCRE2_MAJOR) "." XSTRING(PCRE_MINOR)
  228|       |     XSTRING(PCRE2_PRERELEASE) " " XSTRING(PCRE_DATE)
  229|       |
  230|       |  because, when PCRE2_PRERELEASE is empty, this leads to an attempted expansion
  231|       |  of STRING(). The C standard states: "If (before argument substitution) any
  232|       |  argument consists of no preprocessing tokens, the behavior is undefined." It
  233|       |  turns out the gcc treats this case as a single empty string - which is what
  234|       |  we really want - but Visual C grumbles about the lack of an argument for the
  235|       |  macro. Unfortunately, both are within their rights. As there seems to be no
  236|       |  way to test for a macro's value being empty at compile time, we have to
  237|       |  resort to a runtime test. */
  238|       |
  239|      6|  case PCRE2_CONFIG_VERSION:
  ------------------
  |  |  457|      6|#define PCRE2_CONFIG_VERSION                11
  ------------------
  |  Branch (239:3): [True: 6, False: 2]
  ------------------
  240|      6|    {
  241|      6|    const char *v = (XSTRING(Z PCRE2_PRERELEASE)[1] == 0)?
  ------------------
  |  |   58|      6|#define XSTRING(s) STRING(s)
  |  |  ------------------
  |  |  |  |   57|      6|#define STRING(a)  # a
  |  |  ------------------
  ------------------
  |  Branch (241:21): [True: 6, Folded]
  ------------------
  242|      6|      XSTRING(PCRE2_MAJOR.PCRE2_MINOR PCRE2_DATE) :
  ------------------
  |  |   58|      6|#define XSTRING(s) STRING(s)
  |  |  ------------------
  |  |  |  |   57|      6|#define STRING(a)  # a
  |  |  ------------------
  ------------------
  243|      6|      XSTRING(PCRE2_MAJOR.PCRE2_MINOR) XSTRING(PCRE2_PRERELEASE PCRE2_DATE);
  ------------------
  |  |   58|      0|#define XSTRING(s) STRING(s)
  |  |  ------------------
  |  |  |  |   57|      0|#define STRING(a)  # a
  |  |  ------------------
  ------------------
                    XSTRING(PCRE2_MAJOR.PCRE2_MINOR) XSTRING(PCRE2_PRERELEASE PCRE2_DATE);
  ------------------
  |  |   58|      0|#define XSTRING(s) STRING(s)
  |  |  ------------------
  |  |  |  |   57|      0|#define STRING(a)  # a
  |  |  ------------------
  ------------------
  244|      6|    return (int)(1 + ((where == NULL)?
  ------------------
  |  Branch (244:23): [True: 3, False: 3]
  ------------------
  245|      3|      strlen(v) : PRIV(strcpy_c8)((PCRE2_UCHAR *)where, v)));
  ------------------
  |  |  195|      3|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2034|      3|#define _pcre2_strcpy_c8             PCRE2_SUFFIX(_pcre2_strcpy_c8_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      3|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      3|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      3|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|      0|    }
  247|      8|  }
  248|       |
  249|      0|return 0;
  250|      8|}

_pcre2_memctl_malloc_8:
   87|      6|{
   88|      6|pcre2_memctl *newmemctl;
   89|      6|void *yield = (memctl == NULL)? malloc(size) :
  ------------------
  |  Branch (89:15): [True: 0, False: 6]
  ------------------
   90|      6|  memctl->malloc(size, memctl->memory_data);
   91|      6|if (yield == NULL) return NULL;
  ------------------
  |  Branch (91:5): [True: 0, False: 6]
  ------------------
   92|      6|newmemctl = (pcre2_memctl *)yield;
   93|      6|if (memctl == NULL)
  ------------------
  |  Branch (93:5): [True: 0, False: 6]
  ------------------
   94|      0|  {
   95|      0|  newmemctl->malloc = default_malloc;
   96|      0|  newmemctl->free = default_free;
   97|      0|  newmemctl->memory_data = NULL;
   98|      0|  }
   99|      6|else *newmemctl = *memctl;
  100|      6|return yield;
  101|      6|}
php_pcre2_general_context_create:
  117|  33.5k|{
  118|  33.5k|pcre2_general_context *gcontext;
  ------------------
  |  |  840|  33.5k|#define pcre2_general_context          PCRE2_SUFFIX(pcre2_general_context_)
  |  |  ------------------
  |  |  |  |  994|  33.5k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  33.5k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  33.5k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|  33.5k|if (private_malloc == NULL) private_malloc = default_malloc;
  ------------------
  |  Branch (119:5): [True: 0, False: 33.5k]
  ------------------
  120|  33.5k|if (private_free == NULL) private_free = default_free;
  ------------------
  |  Branch (120:5): [True: 0, False: 33.5k]
  ------------------
  121|  33.5k|gcontext = private_malloc(sizeof(pcre2_real_general_context), memory_data);
  122|  33.5k|if (gcontext == NULL) return NULL;
  ------------------
  |  Branch (122:5): [True: 0, False: 33.5k]
  ------------------
  123|  33.5k|gcontext->memctl.malloc = private_malloc;
  124|  33.5k|gcontext->memctl.free = private_free;
  125|  33.5k|gcontext->memctl.memory_data = memory_data;
  126|  33.5k|return gcontext;
  127|  33.5k|}
php_pcre2_compile_context_create:
  152|      2|{
  153|      2|pcre2_compile_context *ccontext = PRIV(memctl_malloc)(
  ------------------
  |  |  841|      2|#define pcre2_compile_context          PCRE2_SUFFIX(pcre2_compile_context_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              pcre2_compile_context *ccontext = PRIV(memctl_malloc)(
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2029|      2|#define _pcre2_memctl_malloc         PCRE2_SUFFIX(_pcre2_memctl_malloc_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|      2|  sizeof(pcre2_real_compile_context), (pcre2_memctl *)gcontext);
  155|      2|if (ccontext == NULL) return NULL;
  ------------------
  |  Branch (155:5): [True: 0, False: 2]
  ------------------
  156|      2|*ccontext = PRIV(default_compile_context);
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1947|      2|#define _pcre2_default_compile_context PCRE2_SUFFIX(_pcre2_default_compile_context_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|      2|if (gcontext != NULL)
  ------------------
  |  Branch (157:5): [True: 2, False: 0]
  ------------------
  158|      2|  *((pcre2_memctl *)ccontext) = *((pcre2_memctl *)gcontext);
  159|      2|return ccontext;
  160|      2|}
php_pcre2_match_context_create:
  186|      2|{
  187|      2|pcre2_match_context *mcontext = PRIV(memctl_malloc)(
  ------------------
  |  |  843|      2|#define pcre2_match_context            PCRE2_SUFFIX(pcre2_match_context_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              pcre2_match_context *mcontext = PRIV(memctl_malloc)(
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2029|      2|#define _pcre2_memctl_malloc         PCRE2_SUFFIX(_pcre2_memctl_malloc_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|      2|  sizeof(pcre2_real_match_context), (pcre2_memctl *)gcontext);
  189|      2|if (mcontext == NULL) return NULL;
  ------------------
  |  Branch (189:5): [True: 0, False: 2]
  ------------------
  190|      2|*mcontext = PRIV(default_match_context);
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1949|      2|#define _pcre2_default_match_context   PCRE2_SUFFIX(_pcre2_default_match_context_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|      2|if (gcontext != NULL)
  ------------------
  |  Branch (191:5): [True: 2, False: 0]
  ------------------
  192|      2|  *((pcre2_memctl *)mcontext) = *((pcre2_memctl *)gcontext);
  193|      2|return mcontext;
  194|      2|}
php_pcre2_general_context_free:
  285|  33.5k|{
  286|  33.5k|if (gcontext != NULL)
  ------------------
  |  Branch (286:5): [True: 33.5k, False: 0]
  ------------------
  287|  33.5k|  gcontext->memctl.free(gcontext, gcontext->memctl.memory_data);
  288|  33.5k|}
php_pcre2_set_character_tables:
  329|    344|{
  330|    344|ccontext->tables = tables;
  331|    344|return 0;
  332|    344|}
php_pcre2_set_compile_extra_options:
  398|    344|{
  399|    344|ccontext->extra_options = options;
  400|    344|return 0;
  401|    344|}
php_pcre2_set_match_limit:
  443|      2|{
  444|      2|mcontext->match_limit = limit;
  445|      2|return 0;
  446|      2|}
php_pcre2_set_depth_limit:
  450|      2|{
  451|      2|mcontext->depth_limit = limit;
  452|      2|return 0;
  453|      2|}

php_pcre2_get_error_message:
  302|     46|{
  303|     46|const unsigned char *message;
  304|     46|PCRE2_SIZE i;
  ------------------
  |  |  479|     46|#define PCRE2_SIZE            size_t
  ------------------
  305|     46|int n;
  306|       |
  307|     46|if (size == 0) return PCRE2_ERROR_NOMEMORY;
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
  |  Branch (307:5): [True: 0, False: 46]
  ------------------
  308|       |
  309|     46|if (enumber >= COMPILE_ERROR_BASE)  /* Compile error */
  ------------------
  |  |  239|     46|#define COMPILE_ERROR_BASE 100
  ------------------
  |  Branch (309:5): [True: 42, False: 4]
  ------------------
  310|     42|  {
  311|     42|  message = compile_error_texts;
  312|     42|  n = enumber - COMPILE_ERROR_BASE;
  ------------------
  |  |  239|     42|#define COMPILE_ERROR_BASE 100
  ------------------
  313|     42|  }
  314|      4|else if (enumber < 0)               /* Match or UTF error */
  ------------------
  |  Branch (314:10): [True: 4, False: 0]
  ------------------
  315|      4|  {
  316|      4|  message = match_error_texts;
  317|      4|  n = -enumber;
  318|      4|  }
  319|      0|else                                /* Invalid error number */
  320|      0|  {
  321|      0|  message = (unsigned char *)"\0";  /* Empty message list */
  322|      0|  n = 1;
  323|      0|  }
  324|       |
  325|  1.27k|for (; n > 0; n--)
  ------------------
  |  Branch (325:8): [True: 1.22k, False: 46]
  ------------------
  326|  1.22k|  {
  327|  47.2k|  while (*message++ != CHAR_NUL) {};
  ------------------
  |  |  999|  47.2k|#define CHAR_NUL                    '\0'
  ------------------
  |  Branch (327:10): [True: 46.0k, False: 1.22k]
  ------------------
  328|  1.22k|  if (*message == CHAR_NUL) return PCRE2_ERROR_BADDATA;
  ------------------
  |  |  999|  1.22k|#define CHAR_NUL                    '\0'
  ------------------
                if (*message == CHAR_NUL) return PCRE2_ERROR_BADDATA;
  ------------------
  |  |  370|      0|#define PCRE2_ERROR_BADDATA           (-29)
  ------------------
  |  Branch (328:7): [True: 0, False: 1.22k]
  ------------------
  329|  1.22k|  }
  330|       |
  331|  1.83k|for (i = 0; *message != 0; i++)
  ------------------
  |  Branch (331:13): [True: 1.78k, False: 46]
  ------------------
  332|  1.78k|  {
  333|  1.78k|  if (i >= size - 1)
  ------------------
  |  Branch (333:7): [True: 0, False: 1.78k]
  ------------------
  334|      0|    {
  335|      0|    buffer[i] = 0;     /* Terminate partial message */
  336|      0|    return PCRE2_ERROR_NOMEMORY;
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
  337|      0|    }
  338|  1.78k|  buffer[i] = *message++;
  339|  1.78k|  }
  340|       |
  341|     46|buffer[i] = 0;
  342|     46|return (int)i;
  343|     46|}

_pcre2_extuni_8:
   98|  29.1k|{
   99|  29.1k|BOOL was_ep_ZWJ = FALSE;
  ------------------
  |  |   87|  29.1k|#define FALSE   0
  ------------------
  100|  29.1k|int lgb = UCD_GRAPHBREAK(c);
  ------------------
  |  | 1887|  29.1k|#define UCD_GRAPHBREAK(ch)  GET_UCD(ch)->gbprop
  |  |  ------------------
  |  |  |  | 1873|  29.1k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  29.1k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  29.1k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  29.1k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  29.1k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  29.1k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  29.1k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  29.1k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  29.1k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  29.1k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  29.1k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  29.1k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  29.1k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  29.1k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  29.1k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  29.1k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  29.1k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  29.1k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  29.1k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  29.1k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  29.1k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  29.1k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  101|       |
  102|  29.1k|while (eptr < end_subject)
  ------------------
  |  Branch (102:8): [True: 28.0k, False: 1.13k]
  ------------------
  103|  28.0k|  {
  104|  28.0k|  int rgb;
  105|  28.0k|  int len = 1;
  106|  28.0k|  if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }
  ------------------
  |  |  330|  10.6k|  c = *eptr; \
  |  |  331|  10.6k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|    480|    { \
  |  |  |  |  341|    480|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 480]
  |  |  |  |  ------------------
  |  |  |  |  342|    480|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|    480|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 480, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|    480|      { \
  |  |  |  |  348|    480|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|    480|      len += 2; \
  |  |  |  |  350|    480|      } \
  |  |  |  |  351|    480|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|    480|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 480, False: 10.1k]
  |  |  ------------------
  ------------------
  |  Branch (106:7): [True: 17.4k, False: 10.6k]
  ------------------
  107|  28.0k|  rgb = UCD_GRAPHBREAK(c);
  ------------------
  |  | 1887|  28.0k|#define UCD_GRAPHBREAK(ch)  GET_UCD(ch)->gbprop
  |  |  ------------------
  |  |  |  | 1873|  28.0k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  28.0k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  28.0k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  28.0k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  28.0k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  28.0k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  28.0k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  28.0k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  28.0k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  28.0k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  28.0k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  28.0k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  28.0k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  28.0k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  28.0k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  28.0k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  28.0k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  28.0k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  28.0k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  28.0k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  28.0k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  28.0k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|  28.0k|  if ((PRIV(ucp_gbtable)[lgb] & (1u << rgb)) == 0) break;
  ------------------
  |  |  195|  28.0k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1963|  28.0k|#define _pcre2_ucp_gbtable             PCRE2_SUFFIX(_pcre2_ucp_gbtable_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  28.0k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  28.0k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  28.0k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (108:7): [True: 28.0k, False: 0]
  ------------------
  109|       |
  110|       |  /* ZWJ followed by Extended Pictographic is allowed only if the ZWJ was
  111|       |  preceded by Extended Pictographic. */
  112|       |
  113|      0|  if (lgb == ucp_gbZWJ && rgb == ucp_gbExtended_Pictographic && !was_ep_ZWJ)
  ------------------
  |  Branch (113:7): [True: 0, False: 0]
  |  Branch (113:27): [True: 0, False: 0]
  |  Branch (113:65): [True: 0, False: 0]
  ------------------
  114|      0|    break;
  115|       |
  116|       |  /* Not breaking between Regional Indicators is allowed only if there
  117|       |  are an even number of preceding RIs. */
  118|       |
  119|      0|  if (lgb == ucp_gbRegional_Indicator && rgb == ucp_gbRegional_Indicator)
  ------------------
  |  Branch (119:7): [True: 0, False: 0]
  |  Branch (119:42): [True: 0, False: 0]
  ------------------
  120|      0|    {
  121|      0|    int ricount = 0;
  122|      0|    PCRE2_SPTR bptr = eptr - 1;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|      0|    if (utf) BACKCHAR(bptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (123:9): [True: 0, False: 0]
  ------------------
  124|       |
  125|       |    /* bptr is pointing to the left-hand character */
  126|       |
  127|      0|    while (bptr > start_subject)
  ------------------
  |  Branch (127:12): [True: 0, False: 0]
  ------------------
  128|      0|      {
  129|      0|      bptr--;
  130|      0|      if (utf)
  ------------------
  |  Branch (130:11): [True: 0, False: 0]
  ------------------
  131|      0|        {
  132|      0|        BACKCHAR(bptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  133|      0|        GETCHAR(c, bptr);
  ------------------
  |  |  302|      0|  c = *eptr; \
  |  |  303|      0|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      0|    { \
  |  |  |  |  285|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  286|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  288|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      0|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      0|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  134|      0|        }
  135|      0|      else
  136|      0|      c = *bptr;
  137|      0|      if (UCD_GRAPHBREAK(c) != ucp_gbRegional_Indicator) break;
  ------------------
  |  | 1887|      0|#define UCD_GRAPHBREAK(ch)  GET_UCD(ch)->gbprop
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (137:11): [True: 0, False: 0]
  ------------------
  138|      0|      ricount++;
  139|      0|      }
  140|      0|    if ((ricount & 1) != 0) break;  /* Grapheme break required */
  ------------------
  |  Branch (140:9): [True: 0, False: 0]
  ------------------
  141|      0|    }
  142|       |
  143|       |  /* Set a flag when ZWJ follows Extended Pictographic (with optional Extend in
  144|       |  between; see next statement). */
  145|       |
  146|      0|  was_ep_ZWJ = (lgb == ucp_gbExtended_Pictographic && rgb == ucp_gbZWJ);
  ------------------
  |  Branch (146:17): [True: 0, False: 0]
  |  Branch (146:55): [True: 0, False: 0]
  ------------------
  147|       |
  148|       |  /* If Extend follows Extended_Pictographic, do not update lgb; this allows
  149|       |  any number of them before a following ZWJ. */
  150|       |
  151|      0|  if (rgb != ucp_gbExtend || lgb != ucp_gbExtended_Pictographic) lgb = rgb;
  ------------------
  |  Branch (151:7): [True: 0, False: 0]
  |  Branch (151:30): [True: 0, False: 0]
  ------------------
  152|       |
  153|      0|  eptr += len;
  154|      0|  if (xcount != NULL) *xcount += 1;
  ------------------
  |  Branch (154:7): [True: 0, False: 0]
  ------------------
  155|      0|  }
  156|       |
  157|  29.1k|return eptr;
  158|  29.1k|}

php_pcre2_match:
 6533|    584|{
 6534|    584|int rc;
 6535|    584|int was_zero_terminated = 0;
 6536|    584|const uint8_t *start_bits = NULL;
 6537|    584|const pcre2_real_code *re = (const pcre2_real_code *)code;
 6538|       |
 6539|    584|BOOL anchored;
 6540|    584|BOOL firstline;
 6541|    584|BOOL has_first_cu = FALSE;
  ------------------
  |  |   87|    584|#define FALSE   0
  ------------------
 6542|    584|BOOL has_req_cu = FALSE;
  ------------------
  |  |   87|    584|#define FALSE   0
  ------------------
 6543|    584|BOOL startline;
 6544|       |
 6545|    584|#if PCRE2_CODE_UNIT_WIDTH == 8
 6546|    584|PCRE2_SPTR memchr_found_first_cu;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6547|    584|PCRE2_SPTR memchr_found_first_cu2;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6548|    584|#endif
 6549|       |
 6550|    584|PCRE2_UCHAR first_cu = 0;
  ------------------
  |  |  819|    584|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6551|    584|PCRE2_UCHAR first_cu2 = 0;
  ------------------
  |  |  819|    584|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6552|    584|PCRE2_UCHAR req_cu = 0;
  ------------------
  |  |  819|    584|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6553|    584|PCRE2_UCHAR req_cu2 = 0;
  ------------------
  |  |  819|    584|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6554|       |
 6555|    584|PCRE2_SPTR bumpalong_limit;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6556|    584|PCRE2_SPTR end_subject;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6557|    584|PCRE2_SPTR true_end_subject;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6558|    584|PCRE2_SPTR start_match;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6559|    584|PCRE2_SPTR req_cu_ptr;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6560|    584|PCRE2_SPTR start_partial;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6561|    584|PCRE2_SPTR match_partial;
  ------------------
  |  |  820|    584|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6562|       |
 6563|       |#ifdef SUPPORT_JIT
 6564|       |BOOL use_jit;
 6565|       |#endif
 6566|       |
 6567|       |/* This flag is needed even when Unicode is not supported for convenience
 6568|       |(it is used by the IS_NEWLINE macro). */
 6569|       |
 6570|    584|BOOL utf = FALSE;
  ------------------
  |  |   87|    584|#define FALSE   0
  ------------------
 6571|       |
 6572|    584|#ifdef SUPPORT_UNICODE
 6573|    584|BOOL ucp = FALSE;
  ------------------
  |  |   87|    584|#define FALSE   0
  ------------------
 6574|    584|BOOL allow_invalid;
 6575|    584|uint32_t fragment_options = 0;
 6576|       |#ifdef SUPPORT_JIT
 6577|       |BOOL jit_checked_utf = FALSE;
 6578|       |#endif
 6579|    584|#endif  /* SUPPORT_UNICODE */
 6580|       |
 6581|    584|PCRE2_SIZE frame_size;
  ------------------
  |  |  479|    584|#define PCRE2_SIZE            size_t
  ------------------
 6582|    584|PCRE2_SIZE heapframes_size;
  ------------------
  |  |  479|    584|#define PCRE2_SIZE            size_t
  ------------------
 6583|       |
 6584|       |/* We need to have mb as a pointer to a match block, because the IS_NEWLINE
 6585|       |macro is used below, and it expects NLBLOCK to be defined as a pointer. */
 6586|       |
 6587|    584|pcre2_callout_block cb;
  ------------------
  |  |  837|    584|#define pcre2_callout_block            PCRE2_SUFFIX(pcre2_callout_block_)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6588|    584|match_block actual_match_block;
  ------------------
  |  | 2009|    584|#define match_block                  PCRE2_SUFFIX(match_block_)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6589|    584|match_block *mb = &actual_match_block;
  ------------------
  |  | 2009|    584|#define match_block                  PCRE2_SUFFIX(match_block_)
  |  |  ------------------
  |  |  |  |  994|    584|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    584|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    584|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6590|       |
 6591|       |/* Recognize NULL, length 0 as an empty string. */
 6592|       |
 6593|    584|if (subject == NULL && length == 0) subject = (PCRE2_SPTR)"";
  ------------------
  |  Branch (6593:5): [True: 0, False: 584]
  |  Branch (6593:24): [True: 0, False: 0]
  ------------------
 6594|       |
 6595|       |/* Plausibility checks */
 6596|       |
 6597|    584|if ((options & ~PUBLIC_MATCH_OPTIONS) != 0) return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |   74|    584|  (PCRE2_ANCHORED|PCRE2_ENDANCHORED|PCRE2_NOTBOL|PCRE2_NOTEOL|PCRE2_NOTEMPTY| \
  |  |  ------------------
  |  |  |  |  105|    584|#define PCRE2_ANCHORED            0x80000000u
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_ENDANCHORED|PCRE2_NOTBOL|PCRE2_NOTEOL|PCRE2_NOTEMPTY| \
  |  |  ------------------
  |  |  |  |  107|    584|#define PCRE2_ENDANCHORED         0x20000000u
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_ENDANCHORED|PCRE2_NOTBOL|PCRE2_NOTEOL|PCRE2_NOTEMPTY| \
  |  |  ------------------
  |  |  |  |  176|    584|#define PCRE2_NOTBOL                      0x00000001u
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_ENDANCHORED|PCRE2_NOTBOL|PCRE2_NOTEOL|PCRE2_NOTEMPTY| \
  |  |  ------------------
  |  |  |  |  177|    584|#define PCRE2_NOTEOL                      0x00000002u
  |  |  ------------------
  |  |                 (PCRE2_ANCHORED|PCRE2_ENDANCHORED|PCRE2_NOTBOL|PCRE2_NOTEOL|PCRE2_NOTEMPTY| \
  |  |  ------------------
  |  |  |  |  178|    584|#define PCRE2_NOTEMPTY                    0x00000004u  /* ) These two must be kept */
  |  |  ------------------
  |  |   75|    584|   PCRE2_NOTEMPTY_ATSTART|PCRE2_NO_UTF_CHECK|PCRE2_PARTIAL_HARD| \
  |  |  ------------------
  |  |  |  |  179|    584|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  |  |  ------------------
  |  |                  PCRE2_NOTEMPTY_ATSTART|PCRE2_NO_UTF_CHECK|PCRE2_PARTIAL_HARD| \
  |  |  ------------------
  |  |  |  |  106|    584|#define PCRE2_NO_UTF_CHECK        0x40000000u
  |  |  ------------------
  |  |                  PCRE2_NOTEMPTY_ATSTART|PCRE2_NO_UTF_CHECK|PCRE2_PARTIAL_HARD| \
  |  |  ------------------
  |  |  |  |  181|    584|#define PCRE2_PARTIAL_HARD                0x00000020u
  |  |  ------------------
  |  |   76|    584|   PCRE2_PARTIAL_SOFT|PCRE2_NO_JIT|PCRE2_COPY_MATCHED_SUBJECT| \
  |  |  ------------------
  |  |  |  |  180|    584|#define PCRE2_PARTIAL_SOFT                0x00000010u
  |  |  ------------------
  |  |                  PCRE2_PARTIAL_SOFT|PCRE2_NO_JIT|PCRE2_COPY_MATCHED_SUBJECT| \
  |  |  ------------------
  |  |  |  |  189|    584|#define PCRE2_NO_JIT                      0x00002000u  /* not for pcre2_dfa_match() */
  |  |  ------------------
  |  |                  PCRE2_PARTIAL_SOFT|PCRE2_NO_JIT|PCRE2_COPY_MATCHED_SUBJECT| \
  |  |  ------------------
  |  |  |  |  190|    584|#define PCRE2_COPY_MATCHED_SUBJECT        0x00004000u
  |  |  ------------------
  |  |   77|    584|   PCRE2_DISABLE_RECURSELOOP_CHECK)
  |  |  ------------------
  |  |  |  |  194|    584|#define PCRE2_DISABLE_RECURSELOOP_CHECK   0x00040000u  /* not for pcre2_dfa_match() or pcre2_jit_match() */
  |  |  ------------------
  ------------------
              if ((options & ~PUBLIC_MATCH_OPTIONS) != 0) return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |  375|      0|#define PCRE2_ERROR_BADOPTION         (-34)
  ------------------
  |  Branch (6597:5): [True: 0, False: 584]
  ------------------
 6598|    584|if (code == NULL || subject == NULL || match_data == NULL)
  ------------------
  |  Branch (6598:5): [True: 0, False: 584]
  |  Branch (6598:21): [True: 0, False: 584]
  |  Branch (6598:40): [True: 0, False: 584]
  ------------------
 6599|      0|  return PCRE2_ERROR_NULL;
  ------------------
  |  |  392|      0|#define PCRE2_ERROR_NULL              (-51)
  ------------------
 6600|       |
 6601|    584|start_match = subject + start_offset;
 6602|    584|req_cu_ptr = start_match - 1;
 6603|    584|if (length == PCRE2_ZERO_TERMINATED)
  ------------------
  |  |  481|    584|#define PCRE2_ZERO_TERMINATED (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (6603:5): [True: 0, False: 584]
  ------------------
 6604|      0|  {
 6605|      0|  length = PRIV(strlen)(subject);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2035|      0|#define _pcre2_strlen                PCRE2_SUFFIX(_pcre2_strlen_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6606|      0|  was_zero_terminated = 1;
 6607|      0|  }
 6608|    584|true_end_subject = end_subject = subject + length;
 6609|       |
 6610|    584|if (start_offset > length) return PCRE2_ERROR_BADOFFSET;
  ------------------
  |  |  374|      0|#define PCRE2_ERROR_BADOFFSET         (-33)
  ------------------
  |  Branch (6610:5): [True: 0, False: 584]
  ------------------
 6611|       |
 6612|       |/* Check that the first field in the block is the magic number. */
 6613|       |
 6614|    584|if (re->magic_number != MAGIC_NUMBER) return PCRE2_ERROR_BADMAGIC;
  ------------------
  |  |  564|    584|#define MAGIC_NUMBER  0x50435245UL   /* 'PCRE' */
  ------------------
              if (re->magic_number != MAGIC_NUMBER) return PCRE2_ERROR_BADMAGIC;
  ------------------
  |  |  372|      0|#define PCRE2_ERROR_BADMAGIC          (-31)
  ------------------
  |  Branch (6614:5): [True: 0, False: 584]
  ------------------
 6615|       |
 6616|       |/* Check the code unit width. */
 6617|       |
 6618|    584|if ((re->flags & PCRE2_MODE_MASK) != PCRE2_CODE_UNIT_WIDTH/8)
  ------------------
  |  |  550|    584|#define PCRE2_MODE_MASK     (PCRE2_MODE8 | PCRE2_MODE16 | PCRE2_MODE32)
  |  |  ------------------
  |  |  |  |  526|    584|#define PCRE2_MODE8         0x00000001  /* compiled in 8 bit mode */
  |  |  ------------------
  |  |               #define PCRE2_MODE_MASK     (PCRE2_MODE8 | PCRE2_MODE16 | PCRE2_MODE32)
  |  |  ------------------
  |  |  |  |  527|    584|#define PCRE2_MODE16        0x00000002  /* compiled in 16 bit mode */
  |  |  ------------------
  |  |               #define PCRE2_MODE_MASK     (PCRE2_MODE8 | PCRE2_MODE16 | PCRE2_MODE32)
  |  |  ------------------
  |  |  |  |  528|    584|#define PCRE2_MODE32        0x00000004  /* compiled in 32 bit mode */
  |  |  ------------------
  ------------------
              if ((re->flags & PCRE2_MODE_MASK) != PCRE2_CODE_UNIT_WIDTH/8)
  ------------------
  |  | 1860|    584|#define PCRE2_CODE_UNIT_WIDTH 8
  ------------------
  |  Branch (6618:5): [True: 0, False: 584]
  ------------------
 6619|      0|  return PCRE2_ERROR_BADMODE;
  ------------------
  |  |  373|      0|#define PCRE2_ERROR_BADMODE           (-32)
  ------------------
 6620|       |
 6621|       |/* PCRE2_NOTEMPTY and PCRE2_NOTEMPTY_ATSTART are match-time flags in the
 6622|       |options variable for this function. Users of PCRE2 who are not calling the
 6623|       |function directly would like to have a way of setting these flags, in the same
 6624|       |way that they can set pcre2_compile() flags like PCRE2_NO_AUTOPOSSESS with
 6625|       |constructions like (*NO_AUTOPOSSESS). To enable this, (*NOTEMPTY) and
 6626|       |(*NOTEMPTY_ATSTART) set bits in the pattern's "flag" function which we now
 6627|       |transfer to the options for this function. The bits are guaranteed to be
 6628|       |adjacent, but do not have the same values. This bit of Boolean trickery assumes
 6629|       |that the match-time bits are not more significant than the flag bits. If by
 6630|       |accident this is not the case, a compile-time division by zero error will
 6631|       |occur. */
 6632|       |
 6633|    584|#define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
 6634|    584|#define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART)
 6635|    584|options |= (re->flags & FF) / ((FF & (~FF+1)) / (OO & (~OO+1)));
  ------------------
  |  | 6633|    584|#define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
  |  |  ------------------
  |  |  |  |  541|    584|#define PCRE2_NOTEMPTY_SET  0x00010000  /* (*NOTEMPTY) used        ) keep */
  |  |  ------------------
  |  |               #define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
  |  |  ------------------
  |  |  |  |  542|    584|#define PCRE2_NE_ATST_SET   0x00020000  /* (*NOTEMPTY_ATSTART) used) together */
  |  |  ------------------
  ------------------
              options |= (re->flags & FF) / ((FF & (~FF+1)) / (OO & (~OO+1)));
  ------------------
  |  | 6633|    584|#define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
  |  |  ------------------
  |  |  |  |  541|    584|#define PCRE2_NOTEMPTY_SET  0x00010000  /* (*NOTEMPTY) used        ) keep */
  |  |  ------------------
  |  |               #define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
  |  |  ------------------
  |  |  |  |  542|    584|#define PCRE2_NE_ATST_SET   0x00020000  /* (*NOTEMPTY_ATSTART) used) together */
  |  |  ------------------
  ------------------
              options |= (re->flags & FF) / ((FF & (~FF+1)) / (OO & (~OO+1)));
  ------------------
  |  | 6633|    584|#define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
  |  |  ------------------
  |  |  |  |  541|    584|#define PCRE2_NOTEMPTY_SET  0x00010000  /* (*NOTEMPTY) used        ) keep */
  |  |  ------------------
  |  |               #define FF (PCRE2_NOTEMPTY_SET|PCRE2_NE_ATST_SET)
  |  |  ------------------
  |  |  |  |  542|    584|#define PCRE2_NE_ATST_SET   0x00020000  /* (*NOTEMPTY_ATSTART) used) together */
  |  |  ------------------
  ------------------
              options |= (re->flags & FF) / ((FF & (~FF+1)) / (OO & (~OO+1)));
  ------------------
  |  | 6634|    584|#define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART)
  |  |  ------------------
  |  |  |  |  178|    584|#define PCRE2_NOTEMPTY                    0x00000004u  /* ) These two must be kept */
  |  |  ------------------
  |  |               #define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART)
  |  |  ------------------
  |  |  |  |  179|    584|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  |  |  ------------------
  ------------------
              options |= (re->flags & FF) / ((FF & (~FF+1)) / (OO & (~OO+1)));
  ------------------
  |  | 6634|    584|#define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART)
  |  |  ------------------
  |  |  |  |  178|    584|#define PCRE2_NOTEMPTY                    0x00000004u  /* ) These two must be kept */
  |  |  ------------------
  |  |               #define OO (PCRE2_NOTEMPTY|PCRE2_NOTEMPTY_ATSTART)
  |  |  ------------------
  |  |  |  |  179|    584|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  |  |  ------------------
  ------------------
 6636|    584|#undef FF
 6637|    584|#undef OO
 6638|       |
 6639|       |/* If the pattern was successfully studied with JIT support, we will run the
 6640|       |JIT executable instead of the rest of this function. Most options must be set
 6641|       |at compile time for the JIT code to be usable. */
 6642|       |
 6643|       |#ifdef SUPPORT_JIT
 6644|       |use_jit = (re->executable_jit != NULL &&
 6645|       |          (options & ~PUBLIC_JIT_MATCH_OPTIONS) == 0);
 6646|       |#endif
 6647|       |
 6648|       |/* Initialize UTF/UCP parameters. */
 6649|       |
 6650|    584|#ifdef SUPPORT_UNICODE
 6651|    584|utf = (re->overall_options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|    584|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 6652|    584|allow_invalid = (re->overall_options & PCRE2_MATCH_INVALID_UTF) != 0;
  ------------------
  |  |  145|    584|#define PCRE2_MATCH_INVALID_UTF   0x04000000u  /*   J M D */
  ------------------
 6653|    584|ucp = (re->overall_options & PCRE2_UCP) != 0;
  ------------------
  |  |  136|    584|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
 6654|    584|#endif  /* SUPPORT_UNICODE */
 6655|       |
 6656|       |/* Convert the partial matching flags into an integer. */
 6657|       |
 6658|    584|mb->partial = ((options & PCRE2_PARTIAL_HARD) != 0)? 2 :
  ------------------
  |  |  181|    584|#define PCRE2_PARTIAL_HARD                0x00000020u
  ------------------
  |  Branch (6658:15): [True: 0, False: 584]
  ------------------
 6659|    584|              ((options & PCRE2_PARTIAL_SOFT) != 0)? 1 : 0;
  ------------------
  |  |  180|    584|#define PCRE2_PARTIAL_SOFT                0x00000010u
  ------------------
  |  Branch (6659:15): [True: 0, False: 584]
  ------------------
 6660|       |
 6661|       |/* Partial matching and PCRE2_ENDANCHORED are currently not allowed at the same
 6662|       |time. */
 6663|       |
 6664|    584|if (mb->partial != 0 &&
  ------------------
  |  Branch (6664:5): [True: 0, False: 584]
  ------------------
 6665|      0|   ((re->overall_options | options) & PCRE2_ENDANCHORED) != 0)
  ------------------
  |  |  107|      0|#define PCRE2_ENDANCHORED         0x20000000u
  ------------------
  |  Branch (6665:4): [True: 0, False: 0]
  ------------------
 6666|      0|  return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |  375|      0|#define PCRE2_ERROR_BADOPTION         (-34)
  ------------------
 6667|       |
 6668|       |/* It is an error to set an offset limit without setting the flag at compile
 6669|       |time. */
 6670|       |
 6671|    584|if (mcontext != NULL && mcontext->offset_limit != PCRE2_UNSET &&
  ------------------
  |  |  482|  1.16k|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (6671:5): [True: 584, False: 0]
  |  Branch (6671:25): [True: 0, False: 584]
  ------------------
 6672|      0|     (re->overall_options & PCRE2_USE_OFFSET_LIMIT) == 0)
  ------------------
  |  |  142|      0|#define PCRE2_USE_OFFSET_LIMIT    0x00800000u  /*   J M D */
  ------------------
  |  Branch (6672:6): [True: 0, False: 0]
  ------------------
 6673|      0|  return PCRE2_ERROR_BADOFFSETLIMIT;
  ------------------
  |  |  398|      0|#define PCRE2_ERROR_BADOFFSETLIMIT    (-56)
  ------------------
 6674|       |
 6675|       |/* If the match data block was previously used with PCRE2_COPY_MATCHED_SUBJECT,
 6676|       |free the memory that was obtained. Set the field to NULL for no match cases. */
 6677|       |
 6678|    584|if ((match_data->flags & PCRE2_MD_COPIED_SUBJECT) != 0)
  ------------------
  |  |  560|    584|#define PCRE2_MD_COPIED_SUBJECT  0x01u
  ------------------
  |  Branch (6678:5): [True: 0, False: 584]
  ------------------
 6679|      0|  {
 6680|      0|  match_data->memctl.free((void *)match_data->subject,
 6681|      0|    match_data->memctl.memory_data);
 6682|      0|  match_data->flags &= ~PCRE2_MD_COPIED_SUBJECT;
  ------------------
  |  |  560|      0|#define PCRE2_MD_COPIED_SUBJECT  0x01u
  ------------------
 6683|      0|  }
 6684|    584|match_data->subject = NULL;
 6685|       |
 6686|       |/* Zero the error offset in case the first code unit is invalid UTF. */
 6687|       |
 6688|    584|match_data->startchar = 0;
 6689|       |
 6690|       |
 6691|       |/* ============================= JIT matching ============================== */
 6692|       |
 6693|       |/* Prepare for JIT matching. Check a UTF string for validity unless no check is
 6694|       |requested or invalid UTF can be handled. We check only the portion of the
 6695|       |subject that might be be inspected during matching - from the offset minus the
 6696|       |maximum lookbehind to the given length. This saves time when a small part of a
 6697|       |large subject is being matched by the use of a starting offset. Note that the
 6698|       |maximum lookbehind is a number of characters, not code units. */
 6699|       |
 6700|       |#ifdef SUPPORT_JIT
 6701|       |if (use_jit)
 6702|       |  {
 6703|       |#ifdef SUPPORT_UNICODE
 6704|       |  if (utf && (options & PCRE2_NO_UTF_CHECK) == 0 && !allow_invalid)
 6705|       |    {
 6706|       |#if PCRE2_CODE_UNIT_WIDTH != 32
 6707|       |    unsigned int i;
 6708|       |#endif
 6709|       |
 6710|       |    /* For 8-bit and 16-bit UTF, check that the first code unit is a valid
 6711|       |    character start. */
 6712|       |
 6713|       |#if PCRE2_CODE_UNIT_WIDTH != 32
 6714|       |    if (start_match < end_subject && NOT_FIRSTCU(*start_match))
 6715|       |      {
 6716|       |      if (start_offset > 0) return PCRE2_ERROR_BADUTFOFFSET;
 6717|       |#if PCRE2_CODE_UNIT_WIDTH == 8
 6718|       |      return PCRE2_ERROR_UTF8_ERR20;  /* Isolated 0x80 byte */
 6719|       |#else
 6720|       |      return PCRE2_ERROR_UTF16_ERR3;  /* Isolated low surrogate */
 6721|       |#endif
 6722|       |      }
 6723|       |#endif  /* WIDTH != 32 */
 6724|       |
 6725|       |    /* Move back by the maximum lookbehind, just in case it happens at the very
 6726|       |    start of matching. */
 6727|       |
 6728|       |#if PCRE2_CODE_UNIT_WIDTH != 32
 6729|       |    for (i = re->max_lookbehind; i > 0 && start_match > subject; i--)
 6730|       |      {
 6731|       |      start_match--;
 6732|       |      while (start_match > subject &&
 6733|       |#if PCRE2_CODE_UNIT_WIDTH == 8
 6734|       |      (*start_match & 0xc0) == 0x80)
 6735|       |#else  /* 16-bit */
 6736|       |      (*start_match & 0xfc00) == 0xdc00)
 6737|       |#endif
 6738|       |        start_match--;
 6739|       |      }
 6740|       |#else  /* PCRE2_CODE_UNIT_WIDTH != 32 */
 6741|       |
 6742|       |    /* In the 32-bit library, one code unit equals one character. However,
 6743|       |    we cannot just subtract the lookbehind and then compare pointers, because
 6744|       |    a very large lookbehind could create an invalid pointer. */
 6745|       |
 6746|       |    if (start_offset >= re->max_lookbehind)
 6747|       |      start_match -= re->max_lookbehind;
 6748|       |    else
 6749|       |      start_match = subject;
 6750|       |#endif  /* PCRE2_CODE_UNIT_WIDTH != 32 */
 6751|       |
 6752|       |    /* Validate the relevant portion of the subject. Adjust the offset of an
 6753|       |    invalid code point to be an absolute offset in the whole string. */
 6754|       |
 6755|       |    match_data->rc = PRIV(valid_utf)(start_match,
 6756|       |      length - (start_match - subject), &(match_data->startchar));
 6757|       |    if (match_data->rc != 0)
 6758|       |      {
 6759|       |      match_data->startchar += start_match - subject;
 6760|       |      return match_data->rc;
 6761|       |      }
 6762|       |    jit_checked_utf = TRUE;
 6763|       |    }
 6764|       |#endif  /* SUPPORT_UNICODE */
 6765|       |
 6766|       |  /* If JIT returns BADOPTION, which means that the selected complete or
 6767|       |  partial matching mode was not compiled, fall through to the interpreter. */
 6768|       |
 6769|       |  rc = pcre2_jit_match(code, subject, length, start_offset, options,
 6770|       |    match_data, mcontext);
 6771|       |  if (rc != PCRE2_ERROR_JIT_BADOPTION)
 6772|       |    {
 6773|       |    match_data->subject_length = length;
 6774|       |    if (rc >= 0 && (options & PCRE2_COPY_MATCHED_SUBJECT) != 0)
 6775|       |      {
 6776|       |      length = CU2BYTES(length + was_zero_terminated);
 6777|       |      match_data->subject = match_data->memctl.malloc(length,
 6778|       |        match_data->memctl.memory_data);
 6779|       |      if (match_data->subject == NULL) return PCRE2_ERROR_NOMEMORY;
 6780|       |      memcpy((void *)match_data->subject, subject, length);
 6781|       |      match_data->flags |= PCRE2_MD_COPIED_SUBJECT;
 6782|       |      }
 6783|       |    return rc;
 6784|       |    }
 6785|       |  }
 6786|       |#endif  /* SUPPORT_JIT */
 6787|       |
 6788|       |/* ========================= End of JIT matching ========================== */
 6789|       |
 6790|       |
 6791|       |/* Proceed with non-JIT matching. The default is to allow lookbehinds to the
 6792|       |start of the subject. A UTF check when there is a non-zero offset may change
 6793|       |this. */
 6794|       |
 6795|    584|mb->check_subject = subject;
 6796|       |
 6797|       |/* If a UTF subject string was not checked for validity in the JIT code above,
 6798|       |check it here, and handle support for invalid UTF strings. The check above
 6799|       |happens only when invalid UTF is not supported and PCRE2_NO_CHECK_UTF is unset.
 6800|       |If we get here in those circumstances, it means the subject string is valid,
 6801|       |but for some reason JIT matching was not successful. There is no need to check
 6802|       |the subject again.
 6803|       |
 6804|       |We check only the portion of the subject that might be be inspected during
 6805|       |matching - from the offset minus the maximum lookbehind to the given length.
 6806|       |This saves time when a small part of a large subject is being matched by the
 6807|       |use of a starting offset. Note that the maximum lookbehind is a number of
 6808|       |characters, not code units.
 6809|       |
 6810|       |Note also that support for invalid UTF forces a check, overriding the setting
 6811|       |of PCRE2_NO_CHECK_UTF. */
 6812|       |
 6813|    584|#ifdef SUPPORT_UNICODE
 6814|    584|if (utf &&
  ------------------
  |  Branch (6814:5): [True: 164, False: 420]
  ------------------
 6815|       |#ifdef SUPPORT_JIT
 6816|       |    !jit_checked_utf &&
 6817|       |#endif
 6818|    164|    ((options & PCRE2_NO_UTF_CHECK) == 0 || allow_invalid))
  ------------------
  |  |  106|    164|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
  |  Branch (6818:6): [True: 163, False: 1]
  |  Branch (6818:45): [True: 0, False: 1]
  ------------------
 6819|    163|  {
 6820|    163|#if PCRE2_CODE_UNIT_WIDTH != 32
 6821|    163|  BOOL skipped_bad_start = FALSE;
  ------------------
  |  |   87|    163|#define FALSE   0
  ------------------
 6822|    163|#endif
 6823|       |
 6824|       |  /* For 8-bit and 16-bit UTF, check that the first code unit is a valid
 6825|       |  character start. If we are handling invalid UTF, just skip over such code
 6826|       |  units. Otherwise, give an appropriate error. */
 6827|       |
 6828|    163|#if PCRE2_CODE_UNIT_WIDTH != 32
 6829|    163|  if (allow_invalid)
  ------------------
  |  Branch (6829:7): [True: 0, False: 163]
  ------------------
 6830|      0|    {
 6831|      0|    while (start_match < end_subject && NOT_FIRSTCU(*start_match))
  ------------------
  |  |  296|      0|#define NOT_FIRSTCU(c) (((c) & 0xc0u) == 0x80u)
  |  |  ------------------
  |  |  |  Branch (296:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6831:12): [True: 0, False: 0]
  ------------------
 6832|      0|      {
 6833|      0|      start_match++;
 6834|      0|      skipped_bad_start = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6835|      0|      }
 6836|      0|    }
 6837|    163|  else if (start_match < end_subject && NOT_FIRSTCU(*start_match))
  ------------------
  |  |  296|    163|#define NOT_FIRSTCU(c) (((c) & 0xc0u) == 0x80u)
  |  |  ------------------
  |  |  |  Branch (296:24): [True: 1, False: 162]
  |  |  ------------------
  ------------------
  |  Branch (6837:12): [True: 163, False: 0]
  ------------------
 6838|      1|    {
 6839|      1|    if (start_offset > 0) return PCRE2_ERROR_BADUTFOFFSET;
  ------------------
  |  |  377|      0|#define PCRE2_ERROR_BADUTFOFFSET      (-36)
  ------------------
  |  Branch (6839:9): [True: 0, False: 1]
  ------------------
 6840|      1|#if PCRE2_CODE_UNIT_WIDTH == 8
 6841|      1|    return PCRE2_ERROR_UTF8_ERR20;  /* Isolated 0x80 byte */
  ------------------
  |  |  351|      1|#define PCRE2_ERROR_UTF8_ERR20      (-22)
  ------------------
 6842|       |#else
 6843|       |    return PCRE2_ERROR_UTF16_ERR3;  /* Isolated low surrogate */
 6844|       |#endif
 6845|      1|    }
 6846|    162|#endif  /* WIDTH != 32 */
 6847|       |
 6848|       |  /* The mb->check_subject field points to the start of UTF checking;
 6849|       |  lookbehinds can go back no further than this. */
 6850|       |
 6851|    162|  mb->check_subject = start_match;
 6852|       |
 6853|       |  /* Move back by the maximum lookbehind, just in case it happens at the very
 6854|       |  start of matching, but don't do this if we skipped bad 8-bit or 16-bit code
 6855|       |  units above. */
 6856|       |
 6857|    162|#if PCRE2_CODE_UNIT_WIDTH != 32
 6858|    162|  if (!skipped_bad_start)
  ------------------
  |  Branch (6858:7): [True: 162, False: 0]
  ------------------
 6859|    162|    {
 6860|    162|    unsigned int i;
 6861|    162|    for (i = re->max_lookbehind; i > 0 && mb->check_subject > subject; i--)
  ------------------
  |  Branch (6861:34): [True: 48, False: 114]
  |  Branch (6861:43): [True: 0, False: 48]
  ------------------
 6862|      0|      {
 6863|      0|      mb->check_subject--;
 6864|      0|      while (mb->check_subject > subject &&
  ------------------
  |  Branch (6864:14): [True: 0, False: 0]
  ------------------
 6865|      0|#if PCRE2_CODE_UNIT_WIDTH == 8
 6866|      0|      (*mb->check_subject & 0xc0) == 0x80)
  ------------------
  |  Branch (6866:7): [True: 0, False: 0]
  ------------------
 6867|       |#else  /* 16-bit */
 6868|       |      (*mb->check_subject & 0xfc00) == 0xdc00)
 6869|       |#endif
 6870|      0|        mb->check_subject--;
 6871|      0|      }
 6872|    162|    }
 6873|       |#else  /* PCRE2_CODE_UNIT_WIDTH != 32 */
 6874|       |
 6875|       |  /* In the 32-bit library, one code unit equals one character. However,
 6876|       |  we cannot just subtract the lookbehind and then compare pointers, because
 6877|       |  a very large lookbehind could create an invalid pointer. */
 6878|       |
 6879|       |  if (start_offset >= re->max_lookbehind)
 6880|       |    mb->check_subject -= re->max_lookbehind;
 6881|       |  else
 6882|       |    mb->check_subject = subject;
 6883|       |#endif  /* PCRE2_CODE_UNIT_WIDTH != 32 */
 6884|       |
 6885|       |  /* Validate the relevant portion of the subject. There's a loop in case we
 6886|       |  encounter bad UTF in the characters preceding start_match which we are
 6887|       |  scanning because of a lookbehind. */
 6888|       |
 6889|    162|  for (;;)
 6890|    162|    {
 6891|    162|    match_data->rc = PRIV(valid_utf)(mb->check_subject,
  ------------------
  |  |  195|    162|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2039|    162|#define _pcre2_valid_utf             PCRE2_SUFFIX(_pcre2_valid_utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    162|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    162|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    162|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6892|    162|      length - (mb->check_subject - subject), &(match_data->startchar));
 6893|       |
 6894|    162|    if (match_data->rc == 0) break;   /* Valid UTF string */
  ------------------
  |  Branch (6894:9): [True: 149, False: 13]
  ------------------
 6895|       |
 6896|       |    /* Invalid UTF string. Adjust the offset to be an absolute offset in the
 6897|       |    whole string. If we are handling invalid UTF strings, set end_subject to
 6898|       |    stop before the bad code unit, and set the options to "not end of line".
 6899|       |    Otherwise return the error. */
 6900|       |
 6901|     13|    match_data->startchar += mb->check_subject - subject;
 6902|     13|    if (!allow_invalid || match_data->rc > 0) return match_data->rc;
  ------------------
  |  Branch (6902:9): [True: 13, False: 0]
  |  Branch (6902:27): [True: 0, False: 0]
  ------------------
 6903|      0|    end_subject = subject + match_data->startchar;
 6904|       |
 6905|       |    /* If the end precedes start_match, it means there is invalid UTF in the
 6906|       |    extra code units we reversed over because of a lookbehind. Advance past the
 6907|       |    first bad code unit, and then skip invalid character starting code units in
 6908|       |    8-bit and 16-bit modes, and try again with the original end point. */
 6909|       |
 6910|      0|    if (end_subject < start_match)
  ------------------
  |  Branch (6910:9): [True: 0, False: 0]
  ------------------
 6911|      0|      {
 6912|      0|      mb->check_subject = end_subject + 1;
 6913|      0|#if PCRE2_CODE_UNIT_WIDTH != 32
 6914|      0|      while (mb->check_subject < start_match && NOT_FIRSTCU(*mb->check_subject))
  ------------------
  |  |  296|      0|#define NOT_FIRSTCU(c) (((c) & 0xc0u) == 0x80u)
  |  |  ------------------
  |  |  |  Branch (296:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6914:14): [True: 0, False: 0]
  ------------------
 6915|      0|        mb->check_subject++;
 6916|      0|#endif
 6917|      0|      end_subject = true_end_subject;
 6918|      0|      }
 6919|       |
 6920|       |    /* Otherwise, set the not end of line option, and do the match. */
 6921|       |
 6922|      0|    else
 6923|      0|      {
 6924|      0|      fragment_options = PCRE2_NOTEOL;
  ------------------
  |  |  177|      0|#define PCRE2_NOTEOL                      0x00000002u
  ------------------
 6925|      0|      break;
 6926|      0|      }
 6927|      0|    }
 6928|    162|  }
 6929|    570|#endif  /* SUPPORT_UNICODE */
 6930|       |
 6931|       |/* A NULL match context means "use a default context", but we take the memory
 6932|       |control functions from the pattern. */
 6933|       |
 6934|    570|if (mcontext == NULL)
  ------------------
  |  Branch (6934:5): [True: 0, False: 570]
  ------------------
 6935|      0|  {
 6936|      0|  mcontext = (pcre2_match_context *)(&PRIV(default_match_context));
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1949|      0|#define _pcre2_default_match_context   PCRE2_SUFFIX(_pcre2_default_match_context_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6937|      0|  mb->memctl = re->memctl;
 6938|      0|  }
 6939|    570|else mb->memctl = mcontext->memctl;
 6940|       |
 6941|    570|anchored = ((re->overall_options | options) & PCRE2_ANCHORED) != 0;
  ------------------
  |  |  105|    570|#define PCRE2_ANCHORED            0x80000000u
  ------------------
 6942|    570|firstline = !anchored && (re->overall_options & PCRE2_FIRSTLINE) != 0;
  ------------------
  |  |  127|    431|#define PCRE2_FIRSTLINE           0x00000100u  /*   J M D */
  ------------------
  |  Branch (6942:13): [True: 431, False: 139]
  |  Branch (6942:26): [True: 0, False: 431]
  ------------------
 6943|    570|startline = (re->flags & PCRE2_STARTLINE) != 0;
  ------------------
  |  |  534|    570|#define PCRE2_STARTLINE     0x00000200  /* start after \n for multiline */
  ------------------
 6944|    570|bumpalong_limit = (mcontext->offset_limit == PCRE2_UNSET)?
  ------------------
  |  |  482|    570|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (6944:19): [True: 570, False: 0]
  ------------------
 6945|    570|  true_end_subject : subject + mcontext->offset_limit;
 6946|       |
 6947|       |/* Initialize and set up the fixed fields in the callout block, with a pointer
 6948|       |in the match block. */
 6949|       |
 6950|    570|mb->cb = &cb;
 6951|    570|cb.version = 2;
 6952|    570|cb.subject = subject;
 6953|    570|cb.subject_length = (PCRE2_SIZE)(end_subject - subject);
 6954|    570|cb.callout_flags = 0;
 6955|       |
 6956|       |/* Fill in the remaining fields in the match block, except for moptions, which
 6957|       |gets set later. */
 6958|       |
 6959|    570|mb->callout = mcontext->callout;
 6960|    570|mb->callout_data = mcontext->callout_data;
 6961|       |
 6962|    570|mb->start_subject = subject;
 6963|    570|mb->start_offset = start_offset;
 6964|    570|mb->end_subject = end_subject;
 6965|    570|mb->true_end_subject = true_end_subject;
 6966|    570|mb->hasthen = (re->flags & PCRE2_HASTHEN) != 0;
  ------------------
  |  |  537|    570|#define PCRE2_HASTHEN       0x00001000  /* pattern contains (*THEN) */
  ------------------
 6967|    570|mb->allowemptypartial = (re->max_lookbehind > 0) ||
  ------------------
  |  Branch (6967:25): [True: 66, False: 504]
  ------------------
 6968|    504|    (re->flags & PCRE2_MATCH_EMPTY) != 0;
  ------------------
  |  |  538|    504|#define PCRE2_MATCH_EMPTY   0x00002000  /* pattern can match empty string */
  ------------------
  |  Branch (6968:5): [True: 275, False: 229]
  ------------------
 6969|    570|mb->poptions = re->overall_options;          /* Pattern options */
 6970|    570|mb->ignore_skip_arg = 0;
 6971|    570|mb->mark = mb->nomatch_mark = NULL;          /* In case never set */
 6972|       |
 6973|       |/* The name table is needed for finding all the numbers associated with a
 6974|       |given name, for condition testing. The code follows the name table. */
 6975|       |
 6976|    570|mb->name_table = (PCRE2_UCHAR *)((uint8_t *)re + sizeof(pcre2_real_code));
 6977|    570|mb->name_count = re->name_count;
 6978|    570|mb->name_entry_size = re->name_entry_size;
 6979|    570|mb->start_code = mb->name_table + re->name_count * re->name_entry_size;
 6980|       |
 6981|       |/* Process the \R and newline settings. */
 6982|       |
 6983|    570|mb->bsr_convention = re->bsr_convention;
 6984|    570|mb->nltype = NLTYPE_FIXED;
  ------------------
  |  |  490|    570|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
 6985|    570|switch(re->newline_convention)
 6986|    570|  {
 6987|      0|  case PCRE2_NEWLINE_CR:
  ------------------
  |  |  210|      0|#define PCRE2_NEWLINE_CR          1
  ------------------
  |  Branch (6987:3): [True: 0, False: 570]
  ------------------
 6988|      0|  mb->nllen = 1;
 6989|      0|  mb->nl[0] = CHAR_CR;
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
 6990|      0|  break;
 6991|       |
 6992|    570|  case PCRE2_NEWLINE_LF:
  ------------------
  |  |  211|    570|#define PCRE2_NEWLINE_LF          2
  ------------------
  |  Branch (6992:3): [True: 570, False: 0]
  ------------------
 6993|    570|  mb->nllen = 1;
 6994|    570|  mb->nl[0] = CHAR_NL;
  ------------------
  |  |  992|    570|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|    570|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
 6995|    570|  break;
 6996|       |
 6997|      0|  case PCRE2_NEWLINE_NUL:
  ------------------
  |  |  215|      0|#define PCRE2_NEWLINE_NUL         6
  ------------------
  |  Branch (6997:3): [True: 0, False: 570]
  ------------------
 6998|      0|  mb->nllen = 1;
 6999|      0|  mb->nl[0] = CHAR_NUL;
  ------------------
  |  |  999|      0|#define CHAR_NUL                    '\0'
  ------------------
 7000|      0|  break;
 7001|       |
 7002|      0|  case PCRE2_NEWLINE_CRLF:
  ------------------
  |  |  212|      0|#define PCRE2_NEWLINE_CRLF        3
  ------------------
  |  Branch (7002:3): [True: 0, False: 570]
  ------------------
 7003|      0|  mb->nllen = 2;
 7004|      0|  mb->nl[0] = CHAR_CR;
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
 7005|      0|  mb->nl[1] = CHAR_NL;
  ------------------
  |  |  992|      0|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
 7006|      0|  break;
 7007|       |
 7008|      0|  case PCRE2_NEWLINE_ANY:
  ------------------
  |  |  213|      0|#define PCRE2_NEWLINE_ANY         4
  ------------------
  |  Branch (7008:3): [True: 0, False: 570]
  ------------------
 7009|      0|  mb->nltype = NLTYPE_ANY;
  ------------------
  |  |  491|      0|#define NLTYPE_ANY      1     /* Newline is any Unicode line ending */
  ------------------
 7010|      0|  break;
 7011|       |
 7012|      0|  case PCRE2_NEWLINE_ANYCRLF:
  ------------------
  |  |  214|      0|#define PCRE2_NEWLINE_ANYCRLF     5
  ------------------
  |  Branch (7012:3): [True: 0, False: 570]
  ------------------
 7013|      0|  mb->nltype = NLTYPE_ANYCRLF;
  ------------------
  |  |  492|      0|#define NLTYPE_ANYCRLF  2     /* Newline is CR, LF, or CRLF */
  ------------------
 7014|      0|  break;
 7015|       |
 7016|      0|  default: return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  |  Branch (7016:3): [True: 0, False: 570]
  ------------------
 7017|    570|  }
 7018|       |
 7019|       |/* The backtracking frames have fixed data at the front, and a PCRE2_SIZE
 7020|       |vector at the end, whose size depends on the number of capturing parentheses in
 7021|       |the pattern. It is not used at all if there are no capturing parentheses.
 7022|       |
 7023|       |  frame_size                   is the total size of each frame
 7024|       |  match_data->heapframes       is the pointer to the frames vector
 7025|       |  match_data->heapframes_size  is the allocated size of the vector
 7026|       |
 7027|       |We must pad the frame_size for alignment to ensure subsequent frames are as
 7028|       |aligned as heapframe. Whilst ovector is word-aligned due to being a PCRE2_SIZE
 7029|       |array, that does not guarantee it is suitably aligned for pointers, as some
 7030|       |architectures have pointers that are larger than a size_t. */
 7031|       |
 7032|    570|frame_size = (offsetof(heapframe, ovector) +
 7033|    570|  re->top_bracket * 2 * sizeof(PCRE2_SIZE) + HEAPFRAME_ALIGNMENT - 1) &
  ------------------
  |  |  859|    570|#define HEAPFRAME_ALIGNMENT offsetof(heapframe_align, frame)
  ------------------
 7034|    570|  ~(HEAPFRAME_ALIGNMENT - 1);
  ------------------
  |  |  859|    570|#define HEAPFRAME_ALIGNMENT offsetof(heapframe_align, frame)
  ------------------
 7035|       |
 7036|       |/* Limits set in the pattern override the match context only if they are
 7037|       |smaller. */
 7038|       |
 7039|    570|mb->heap_limit = ((mcontext->heap_limit < re->limit_heap)?
  ------------------
  |  Branch (7039:19): [True: 570, False: 0]
  ------------------
 7040|    570|  mcontext->heap_limit : re->limit_heap);
 7041|       |
 7042|    570|mb->match_limit = (mcontext->match_limit < re->limit_match)?
  ------------------
  |  Branch (7042:19): [True: 570, False: 0]
  ------------------
 7043|    570|  mcontext->match_limit : re->limit_match;
 7044|       |
 7045|    570|mb->match_limit_depth = (mcontext->depth_limit < re->limit_depth)?
  ------------------
  |  Branch (7045:25): [True: 570, False: 0]
  ------------------
 7046|    570|  mcontext->depth_limit : re->limit_depth;
 7047|       |
 7048|       |/* If a pattern has very many capturing parentheses, the frame size may be very
 7049|       |large. Set the initial frame vector size to ensure that there are at least 10
 7050|       |available frames, but enforce a minimum of START_FRAMES_SIZE. If this is
 7051|       |greater than the heap limit, get as large a vector as possible. */
 7052|       |
 7053|    570|heapframes_size = frame_size * 10;
 7054|    570|if (heapframes_size < START_FRAMES_SIZE) heapframes_size = START_FRAMES_SIZE;
  ------------------
  |  |  248|    570|#define START_FRAMES_SIZE 20480
  ------------------
              if (heapframes_size < START_FRAMES_SIZE) heapframes_size = START_FRAMES_SIZE;
  ------------------
  |  |  248|    570|#define START_FRAMES_SIZE 20480
  ------------------
  |  Branch (7054:5): [True: 570, False: 0]
  ------------------
 7055|    570|if (heapframes_size / 1024 > mb->heap_limit)
  ------------------
  |  Branch (7055:5): [True: 0, False: 570]
  ------------------
 7056|      0|  {
 7057|      0|  PCRE2_SIZE max_size = 1024 * mb->heap_limit;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 7058|      0|  if (max_size < frame_size) return PCRE2_ERROR_HEAPLIMIT;
  ------------------
  |  |  405|      0|#define PCRE2_ERROR_HEAPLIMIT         (-63)
  ------------------
  |  Branch (7058:7): [True: 0, False: 0]
  ------------------
 7059|      0|  heapframes_size = max_size;
 7060|      0|  }
 7061|       |
 7062|       |/* If an existing frame vector in the match_data block is large enough, we can
 7063|       |use it. Otherwise, free any pre-existing vector and get a new one. */
 7064|       |
 7065|    570|if (match_data->heapframes_size < heapframes_size)
  ------------------
  |  Branch (7065:5): [True: 1, False: 569]
  ------------------
 7066|      1|  {
 7067|      1|  match_data->memctl.free(match_data->heapframes,
 7068|      1|    match_data->memctl.memory_data);
 7069|      1|  match_data->heapframes = match_data->memctl.malloc(heapframes_size,
 7070|      1|    match_data->memctl.memory_data);
 7071|      1|  if (match_data->heapframes == NULL)
  ------------------
  |  Branch (7071:7): [True: 0, False: 1]
  ------------------
 7072|      0|    {
 7073|      0|    match_data->heapframes_size = 0;
 7074|      0|    return PCRE2_ERROR_NOMEMORY;
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
 7075|      0|    }
 7076|      1|  match_data->heapframes_size = heapframes_size;
 7077|      1|  }
 7078|       |
 7079|       |/* Write to the ovector within the first frame to mark every capture unset and
 7080|       |to avoid uninitialized memory read errors when it is copied to a new frame. */
 7081|       |
 7082|    570|memset((char *)(match_data->heapframes) + offsetof(heapframe, ovector), 0xff,
 7083|    570|  frame_size - offsetof(heapframe, ovector));
 7084|       |
 7085|       |/* Pointers to the individual character tables */
 7086|       |
 7087|    570|mb->lcc = re->tables + lcc_offset;
  ------------------
  |  |  606|    570|#define lcc_offset      0                           /* Lower case */
  ------------------
 7088|    570|mb->fcc = re->tables + fcc_offset;
  ------------------
  |  |  607|    570|#define fcc_offset    256                           /* Flip case */
  ------------------
 7089|    570|mb->ctypes = re->tables + ctypes_offset;
  ------------------
  |  |  609|    570|#define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  ------------------
  |  |  |  |  608|    570|#define cbits_offset  512                           /* Character classes */
  |  |  ------------------
  |  |               #define ctypes_offset (cbits_offset + cbit_length)  /* Character types */
  |  |  ------------------
  |  |  |  |  591|    570|#define cbit_length  320      /* Length of the cbits table */
  |  |  ------------------
  ------------------
 7090|       |
 7091|       |/* Set up the first code unit to match, if available. If there's no first code
 7092|       |unit there may be a bitmap of possible first characters. */
 7093|       |
 7094|    570|if ((re->flags & PCRE2_FIRSTSET) != 0)
  ------------------
  |  |  529|    570|#define PCRE2_FIRSTSET      0x00000010  /* first_code unit is set */
  ------------------
  |  Branch (7094:5): [True: 41, False: 529]
  ------------------
 7095|     41|  {
 7096|     41|  has_first_cu = TRUE;
  ------------------
  |  |   88|     41|#define TRUE    1
  ------------------
 7097|     41|  first_cu = first_cu2 = (PCRE2_UCHAR)(re->first_codeunit);
 7098|     41|  if ((re->flags & PCRE2_FIRSTCASELESS) != 0)
  ------------------
  |  |  530|     41|#define PCRE2_FIRSTCASELESS 0x00000020  /* caseless first code unit */
  ------------------
  |  Branch (7098:7): [True: 4, False: 37]
  ------------------
 7099|      4|    {
 7100|      4|    first_cu2 = TABLE_GET(first_cu, mb->fcc, first_cu);
  ------------------
  |  |  214|      4|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
 7101|      4|#ifdef SUPPORT_UNICODE
 7102|      4|#if PCRE2_CODE_UNIT_WIDTH == 8
 7103|      4|    if (first_cu > 127 && ucp && !utf) first_cu2 = UCD_OTHERCASE(first_cu);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7103:9): [True: 0, False: 4]
  |  Branch (7103:27): [True: 0, False: 0]
  |  Branch (7103:34): [True: 0, False: 0]
  ------------------
 7104|       |#else
 7105|       |    if (first_cu > 127 && (utf || ucp)) first_cu2 = UCD_OTHERCASE(first_cu);
 7106|       |#endif
 7107|      4|#endif  /* SUPPORT_UNICODE */
 7108|      4|    }
 7109|     41|  }
 7110|    529|else
 7111|    529|  if (!startline && (re->flags & PCRE2_FIRSTMAPSET) != 0)
  ------------------
  |  |  531|    529|#define PCRE2_FIRSTMAPSET   0x00000040  /* bitmap of first code units is set */
  ------------------
  |  Branch (7111:7): [True: 529, False: 0]
  |  Branch (7111:21): [True: 88, False: 441]
  ------------------
 7112|     88|    start_bits = re->start_bitmap;
 7113|       |
 7114|       |/* There may also be a "last known required character" set. */
 7115|       |
 7116|    570|if ((re->flags & PCRE2_LASTSET) != 0)
  ------------------
  |  |  532|    570|#define PCRE2_LASTSET       0x00000080  /* last code unit is set */
  ------------------
  |  Branch (7116:5): [True: 117, False: 453]
  ------------------
 7117|    117|  {
 7118|    117|  has_req_cu = TRUE;
  ------------------
  |  |   88|    117|#define TRUE    1
  ------------------
 7119|    117|  req_cu = req_cu2 = (PCRE2_UCHAR)(re->last_codeunit);
 7120|    117|  if ((re->flags & PCRE2_LASTCASELESS) != 0)
  ------------------
  |  |  533|    117|#define PCRE2_LASTCASELESS  0x00000100  /* caseless last code unit */
  ------------------
  |  Branch (7120:7): [True: 15, False: 102]
  ------------------
 7121|     15|    {
 7122|     15|    req_cu2 = TABLE_GET(req_cu, mb->fcc, req_cu);
  ------------------
  |  |  214|     15|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
 7123|     15|#ifdef SUPPORT_UNICODE
 7124|     15|#if PCRE2_CODE_UNIT_WIDTH == 8
 7125|     15|    if (req_cu > 127 && ucp && !utf) req_cu2 = UCD_OTHERCASE(req_cu);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7125:9): [True: 0, False: 15]
  |  Branch (7125:25): [True: 0, False: 0]
  |  Branch (7125:32): [True: 0, False: 0]
  ------------------
 7126|       |#else
 7127|       |    if (req_cu > 127 && (utf || ucp)) req_cu2 = UCD_OTHERCASE(req_cu);
 7128|       |#endif
 7129|     15|#endif  /* SUPPORT_UNICODE */
 7130|     15|    }
 7131|    117|  }
 7132|       |
 7133|       |
 7134|       |/* ==========================================================================*/
 7135|       |
 7136|       |/* Loop for handling unanchored repeated matching attempts; for anchored regexs
 7137|       |the loop runs just once. */
 7138|       |
 7139|    570|#ifdef SUPPORT_UNICODE
 7140|    570|FRAGMENT_RESTART:
 7141|    570|#endif
 7142|       |
 7143|    570|start_partial = match_partial = NULL;
 7144|    570|mb->hitend = FALSE;
  ------------------
  |  |   87|    570|#define FALSE   0
  ------------------
 7145|       |
 7146|    570|#if PCRE2_CODE_UNIT_WIDTH == 8
 7147|    570|memchr_found_first_cu = NULL;
 7148|    570|memchr_found_first_cu2 = NULL;
 7149|    570|#endif
 7150|       |
 7151|    570|for(;;)
 7152|  6.74k|  {
 7153|  6.74k|  PCRE2_SPTR new_start_match;
  ------------------
  |  |  820|  6.74k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  6.74k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  6.74k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  6.74k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7154|       |
 7155|       |  /* ----------------- Start of match optimizations ---------------- */
 7156|       |
 7157|       |  /* There are some optimizations that avoid running the match if a known
 7158|       |  starting point is not found, or if a known later code unit is not present.
 7159|       |  However, there is an option (settable at compile time) that disables these,
 7160|       |  for testing and for ensuring that all callouts do actually occur. */
 7161|       |
 7162|  6.74k|  if ((re->overall_options & PCRE2_NO_START_OPTIMIZE) == 0)
  ------------------
  |  |  135|  6.74k|#define PCRE2_NO_START_OPTIMIZE   0x00010000u  /*   J M D */
  ------------------
  |  Branch (7162:7): [True: 6.74k, False: 0]
  ------------------
 7163|  6.74k|    {
 7164|       |    /* If firstline is TRUE, the start of the match is constrained to the first
 7165|       |    line of a multiline string. That is, the match must be before or at the
 7166|       |    first newline following the start of matching. Temporarily adjust
 7167|       |    end_subject so that we stop the scans for a first code unit at a newline.
 7168|       |    If the match fails at the newline, later code breaks the loop. */
 7169|       |
 7170|  6.74k|    if (firstline)
  ------------------
  |  Branch (7170:9): [True: 0, False: 6.74k]
  ------------------
 7171|      0|      {
 7172|      0|      PCRE2_SPTR t = start_match;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7173|      0|#ifdef SUPPORT_UNICODE
 7174|      0|      if (utf)
  ------------------
  |  Branch (7174:11): [True: 0, False: 0]
  ------------------
 7175|      0|        {
 7176|      0|        while (t < end_subject && !IS_NEWLINE(t))
  ------------------
  |  |  497|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|      0|    : \
  |  |  502|      0|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  503|      0|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  504|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 0, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|      0|    ) \
  |  |  506|      0|  )
  ------------------
  |  Branch (7176:16): [True: 0, False: 0]
  |  Branch (7176:35): [True: 0, False: 0]
  ------------------
 7177|      0|          {
 7178|      0|          t++;
 7179|      0|          ACROSSCHAR(t < end_subject, t, t++);
  ------------------
  |  |  353|      0|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 0, False: 0]
  |  |  |  Branch (353:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7180|      0|          }
 7181|      0|        }
 7182|      0|      else
 7183|      0|#endif
 7184|      0|      while (t < end_subject && !IS_NEWLINE(t)) t++;
  ------------------
  |  |  497|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|      0|    : \
  |  |  502|      0|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  503|      0|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  504|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 0, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|      0|    ) \
  |  |  506|      0|  )
  ------------------
  |  Branch (7184:14): [True: 0, False: 0]
  |  Branch (7184:33): [True: 0, False: 0]
  ------------------
 7185|      0|      end_subject = t;
 7186|      0|      }
 7187|       |
 7188|       |    /* Anchored: check the first code unit if one is recorded. This may seem
 7189|       |    pointless but it can help in detecting a no match case without scanning for
 7190|       |    the required code unit. */
 7191|       |
 7192|  6.74k|    if (anchored)
  ------------------
  |  Branch (7192:9): [True: 139, False: 6.60k]
  ------------------
 7193|    139|      {
 7194|    139|      if (has_first_cu || start_bits != NULL)
  ------------------
  |  Branch (7194:11): [True: 1, False: 138]
  |  Branch (7194:27): [True: 0, False: 138]
  ------------------
 7195|      1|        {
 7196|      1|        BOOL ok = start_match < end_subject;
 7197|      1|        if (ok)
  ------------------
  |  Branch (7197:13): [True: 1, False: 0]
  ------------------
 7198|      1|          {
 7199|      1|          PCRE2_UCHAR c = UCHAR21TEST(start_match);
  ------------------
  |  |  819|      1|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      1|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      1|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      1|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        PCRE2_UCHAR c = UCHAR21TEST(start_match);
  ------------------
  |  |  244|      1|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
 7200|      1|          ok = has_first_cu && (c == first_cu || c == first_cu2);
  ------------------
  |  Branch (7200:16): [True: 1, False: 0]
  |  Branch (7200:33): [True: 0, False: 1]
  |  Branch (7200:50): [True: 0, False: 1]
  ------------------
 7201|      1|          if (!ok && start_bits != NULL)
  ------------------
  |  Branch (7201:15): [True: 1, False: 0]
  |  Branch (7201:22): [True: 0, False: 1]
  ------------------
 7202|      0|            {
 7203|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 7204|       |            if (c > 255) c = 255;
 7205|       |#endif
 7206|      0|            ok = (start_bits[c/8] & (1u << (c&7))) != 0;
 7207|      0|            }
 7208|      1|          }
 7209|      1|        if (!ok)
  ------------------
  |  Branch (7209:13): [True: 1, False: 0]
  ------------------
 7210|      1|          {
 7211|      1|          rc = MATCH_NOMATCH;
  ------------------
  |  |   88|      1|#define MATCH_NOMATCH      0
  ------------------
 7212|      1|          break;
 7213|      1|          }
 7214|      1|        }
 7215|    139|      }
 7216|       |
 7217|       |    /* Not anchored. Advance to a unique first code unit if there is one. */
 7218|       |
 7219|  6.60k|    else
 7220|  6.60k|      {
 7221|  6.60k|      if (has_first_cu)
  ------------------
  |  Branch (7221:11): [True: 208, False: 6.39k]
  ------------------
 7222|    208|        {
 7223|    208|        if (first_cu != first_cu2)  /* Caseless */
  ------------------
  |  Branch (7223:13): [True: 5, False: 203]
  ------------------
 7224|      5|          {
 7225|       |          /* In 16-bit and 32_bit modes we have to do our own search, so can
 7226|       |          look for both cases at once. */
 7227|       |
 7228|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 7229|       |          PCRE2_UCHAR smc;
 7230|       |          while (start_match < end_subject &&
 7231|       |                (smc = UCHAR21TEST(start_match)) != first_cu &&
 7232|       |                 smc != first_cu2)
 7233|       |            start_match++;
 7234|       |#else
 7235|       |          /* In 8-bit mode, the use of memchr() gives a big speed up, even
 7236|       |          though we have to call it twice in order to find the earliest
 7237|       |          occurrence of the code unit in either of its cases. Caching is used
 7238|       |          to remember the positions of previously found code units. This can
 7239|       |          make a huge difference when the strings are very long and only one
 7240|       |          case is actually present. */
 7241|       |
 7242|      5|          PCRE2_SPTR pp1 = NULL;
  ------------------
  |  |  820|      5|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      5|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      5|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      5|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7243|      5|          PCRE2_SPTR pp2 = NULL;
  ------------------
  |  |  820|      5|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      5|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      5|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      5|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7244|      5|          PCRE2_SIZE searchlength = end_subject - start_match;
  ------------------
  |  |  479|      5|#define PCRE2_SIZE            size_t
  ------------------
 7245|       |
 7246|       |          /* If we haven't got a previously found position for first_cu, or if
 7247|       |          the current starting position is later, we need to do a search. If
 7248|       |          the code unit is not found, set it to the end. */
 7249|       |
 7250|      5|          if (memchr_found_first_cu == NULL ||
  ------------------
  |  Branch (7250:15): [True: 3, False: 2]
  ------------------
 7251|      2|              start_match > memchr_found_first_cu)
  ------------------
  |  Branch (7251:15): [True: 0, False: 2]
  ------------------
 7252|      3|            {
 7253|      3|            pp1 = memchr(start_match, first_cu, searchlength);
 7254|      3|            memchr_found_first_cu = (pp1 == NULL)? end_subject : pp1;
  ------------------
  |  Branch (7254:37): [True: 2, False: 1]
  ------------------
 7255|      3|            }
 7256|       |
 7257|       |          /* If the start is before a previously found position, use the
 7258|       |          previous position, or NULL if a previous search failed. */
 7259|       |
 7260|      2|          else pp1 = (memchr_found_first_cu == end_subject)? NULL :
  ------------------
  |  Branch (7260:22): [True: 2, False: 0]
  ------------------
 7261|      2|            memchr_found_first_cu;
 7262|       |
 7263|       |          /* Do the same thing for the other case. */
 7264|       |
 7265|      5|          if (memchr_found_first_cu2 == NULL ||
  ------------------
  |  Branch (7265:15): [True: 3, False: 2]
  ------------------
 7266|      2|              start_match > memchr_found_first_cu2)
  ------------------
  |  Branch (7266:15): [True: 2, False: 0]
  ------------------
 7267|      5|            {
 7268|      5|            pp2 = memchr(start_match, first_cu2, searchlength);
 7269|      5|            memchr_found_first_cu2 = (pp2 == NULL)? end_subject : pp2;
  ------------------
  |  Branch (7269:38): [True: 3, False: 2]
  ------------------
 7270|      5|            }
 7271|       |
 7272|      0|          else pp2 = (memchr_found_first_cu2 == end_subject)? NULL :
  ------------------
  |  Branch (7272:22): [True: 0, False: 0]
  ------------------
 7273|      0|            memchr_found_first_cu2;
 7274|       |
 7275|       |          /* Set the start to the end of the subject if neither case was found.
 7276|       |          Otherwise, use the earlier found point. */
 7277|       |
 7278|      5|          if (pp1 == NULL)
  ------------------
  |  Branch (7278:15): [True: 4, False: 1]
  ------------------
 7279|      4|            start_match = (pp2 == NULL)? end_subject : pp2;
  ------------------
  |  Branch (7279:27): [True: 2, False: 2]
  ------------------
 7280|      1|          else
 7281|      1|            start_match = (pp2 == NULL || pp1 < pp2)? pp1 : pp2;
  ------------------
  |  Branch (7281:28): [True: 1, False: 0]
  |  Branch (7281:43): [True: 0, False: 0]
  ------------------
 7282|       |
 7283|      5|#endif  /* 8-bit handling */
 7284|      5|          }
 7285|       |
 7286|       |        /* The caseful case is much simpler. */
 7287|       |
 7288|    203|        else
 7289|    203|          {
 7290|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 7291|       |          while (start_match < end_subject && UCHAR21TEST(start_match) !=
 7292|       |                 first_cu)
 7293|       |            start_match++;
 7294|       |#else
 7295|    203|          start_match = memchr(start_match, first_cu, end_subject - start_match);
 7296|    203|          if (start_match == NULL) start_match = end_subject;
  ------------------
  |  Branch (7296:15): [True: 20, False: 183]
  ------------------
 7297|    203|#endif
 7298|    203|          }
 7299|       |
 7300|       |        /* If we can't find the required first code unit, having reached the
 7301|       |        true end of the subject, break the bumpalong loop, to force a match
 7302|       |        failure, except when doing partial matching, when we let the next cycle
 7303|       |        run at the end of the subject. To see why, consider the pattern
 7304|       |        /(?<=abc)def/, which partially matches "abc", even though the string
 7305|       |        does not contain the starting character "d". If we have not reached the
 7306|       |        true end of the subject (PCRE2_FIRSTLINE caused end_subject to be
 7307|       |        temporarily modified) we also let the cycle run, because the matching
 7308|       |        string is legitimately allowed to start with the first code unit of a
 7309|       |        newline. */
 7310|       |
 7311|    208|        if (mb->partial == 0 && start_match >= mb->end_subject)
  ------------------
  |  Branch (7311:13): [True: 208, False: 0]
  |  Branch (7311:33): [True: 22, False: 186]
  ------------------
 7312|     22|          {
 7313|     22|          rc = MATCH_NOMATCH;
  ------------------
  |  |   88|     22|#define MATCH_NOMATCH      0
  ------------------
 7314|     22|          break;
 7315|     22|          }
 7316|    208|        }
 7317|       |
 7318|       |      /* If there's no first code unit, advance to just after a linebreak for a
 7319|       |      multiline match if required. */
 7320|       |
 7321|  6.39k|      else if (startline)
  ------------------
  |  Branch (7321:16): [True: 0, False: 6.39k]
  ------------------
 7322|      0|        {
 7323|      0|        if (start_match > mb->start_subject + start_offset)
  ------------------
  |  Branch (7323:13): [True: 0, False: 0]
  ------------------
 7324|      0|          {
 7325|      0|#ifdef SUPPORT_UNICODE
 7326|      0|          if (utf)
  ------------------
  |  Branch (7326:15): [True: 0, False: 0]
  ------------------
 7327|      0|            {
 7328|      0|            while (start_match < end_subject && !WAS_NEWLINE(start_match))
  ------------------
  |  |  511|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (511:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  512|      0|    ((p) > NLBLOCK->PSSTART && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) > NLBLOCK->PSSTART && \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |  |  Branch (512:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  513|      0|     PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2040|      0|#define _pcre2_was_newline           PCRE2_SUFFIX(_pcre2_was_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |  |  Branch (513:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  514|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  515|      0|    : \
  |  |  516|      0|    ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |                   ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (516:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  517|      0|     UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] &&              \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] &&              \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (517:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  518|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (518:7): [True: 0, False: 0]
  |  |  |  Branch (518:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  519|      0|    ) \
  |  |  520|      0|  )
  ------------------
  |  Branch (7328:20): [True: 0, False: 0]
  |  Branch (7328:49): [True: 0, False: 0]
  ------------------
 7329|      0|              {
 7330|      0|              start_match++;
 7331|      0|              ACROSSCHAR(start_match < end_subject, start_match, start_match++);
  ------------------
  |  |  353|      0|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 0, False: 0]
  |  |  |  Branch (353:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7332|      0|              }
 7333|      0|            }
 7334|      0|          else
 7335|      0|#endif
 7336|      0|          while (start_match < end_subject && !WAS_NEWLINE(start_match))
  ------------------
  |  |  511|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (511:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  512|      0|    ((p) > NLBLOCK->PSSTART && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) > NLBLOCK->PSSTART && \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |  |  Branch (512:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  513|      0|     PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2040|      0|#define _pcre2_was_newline           PCRE2_SUFFIX(_pcre2_was_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |  |  Branch (513:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  514|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  515|      0|    : \
  |  |  516|      0|    ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |                   ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (516:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  517|      0|     UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] &&              \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] &&              \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (517:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  518|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (518:7): [True: 0, False: 0]
  |  |  |  Branch (518:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  519|      0|    ) \
  |  |  520|      0|  )
  ------------------
  |  Branch (7336:18): [True: 0, False: 0]
  |  Branch (7336:47): [True: 0, False: 0]
  ------------------
 7337|      0|            start_match++;
 7338|       |
 7339|       |          /* If we have just passed a CR and the newline option is ANY or
 7340|       |          ANYCRLF, and we are now at a LF, advance the match position by one
 7341|       |          more code unit. */
 7342|       |
 7343|      0|          if (start_match[-1] == CHAR_CR &&
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (7343:15): [True: 0, False: 0]
  ------------------
 7344|      0|               (mb->nltype == NLTYPE_ANY || mb->nltype == NLTYPE_ANYCRLF) &&
  ------------------
  |  |  491|      0|#define NLTYPE_ANY      1     /* Newline is any Unicode line ending */
  ------------------
                             (mb->nltype == NLTYPE_ANY || mb->nltype == NLTYPE_ANYCRLF) &&
  ------------------
  |  |  492|      0|#define NLTYPE_ANYCRLF  2     /* Newline is CR, LF, or CRLF */
  ------------------
  |  Branch (7344:17): [True: 0, False: 0]
  |  Branch (7344:45): [True: 0, False: 0]
  ------------------
 7345|      0|               start_match < end_subject &&
  ------------------
  |  Branch (7345:16): [True: 0, False: 0]
  ------------------
 7346|      0|               UCHAR21TEST(start_match) == CHAR_NL)
  ------------------
  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
                             UCHAR21TEST(start_match) == CHAR_NL)
  ------------------
  |  |  992|      0|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
  |  Branch (7346:16): [True: 0, False: 0]
  ------------------
 7347|      0|            start_match++;
 7348|      0|          }
 7349|      0|        }
 7350|       |
 7351|       |      /* If there's no first code unit or a requirement for a multiline line
 7352|       |      start, advance to a non-unique first code unit if any have been
 7353|       |      identified. The bitmap contains only 256 bits. When code units are 16 or
 7354|       |      32 bits wide, all code units greater than 254 set the 255 bit. */
 7355|       |
 7356|  6.39k|      else if (start_bits != NULL)
  ------------------
  |  Branch (7356:16): [True: 843, False: 5.55k]
  ------------------
 7357|    843|        {
 7358|  2.42k|        while (start_match < end_subject)
  ------------------
  |  Branch (7358:16): [True: 2.38k, False: 37]
  ------------------
 7359|  2.38k|          {
 7360|  2.38k|          uint32_t c = UCHAR21TEST(start_match);
  ------------------
  |  |  244|  2.38k|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
 7361|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 7362|       |          if (c > 255) c = 255;
 7363|       |#endif
 7364|  2.38k|          if ((start_bits[c/8] & (1u << (c&7))) != 0) break;
  ------------------
  |  Branch (7364:15): [True: 806, False: 1.58k]
  ------------------
 7365|  1.58k|          start_match++;
 7366|  1.58k|          }
 7367|       |
 7368|       |        /* See comment above in first_cu checking about the next few lines. */
 7369|       |
 7370|    843|        if (mb->partial == 0 && start_match >= mb->end_subject)
  ------------------
  |  Branch (7370:13): [True: 843, False: 0]
  |  Branch (7370:33): [True: 37, False: 806]
  ------------------
 7371|     37|          {
 7372|     37|          rc = MATCH_NOMATCH;
  ------------------
  |  |   88|     37|#define MATCH_NOMATCH      0
  ------------------
 7373|     37|          break;
 7374|     37|          }
 7375|    843|        }
 7376|  6.60k|      }   /* End first code unit handling */
 7377|       |
 7378|       |    /* Restore fudged end_subject */
 7379|       |
 7380|  6.68k|    end_subject = mb->end_subject;
 7381|       |
 7382|       |    /* The following two optimizations must be disabled for partial matching. */
 7383|       |
 7384|  6.68k|    if (mb->partial == 0)
  ------------------
  |  Branch (7384:9): [True: 6.68k, False: 0]
  ------------------
 7385|  6.68k|      {
 7386|  6.68k|      PCRE2_SPTR p;
  ------------------
  |  |  820|  6.68k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  6.68k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  6.68k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  6.68k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7387|       |
 7388|       |      /* The minimum matching length is a lower bound; no string of that length
 7389|       |      may actually match the pattern. Although the value is, strictly, in
 7390|       |      characters, we treat it as code units to avoid spending too much time in
 7391|       |      this optimization. */
 7392|       |
 7393|  6.68k|      if (end_subject - start_match < re->minlength)
  ------------------
  |  Branch (7393:11): [True: 177, False: 6.50k]
  ------------------
 7394|    177|        {
 7395|    177|        rc = MATCH_NOMATCH;
  ------------------
  |  |   88|    177|#define MATCH_NOMATCH      0
  ------------------
 7396|    177|        break;
 7397|    177|        }
 7398|       |
 7399|       |      /* If req_cu is set, we know that that code unit must appear in the
 7400|       |      subject for the (non-partial) match to succeed. If the first code unit is
 7401|       |      set, req_cu must be later in the subject; otherwise the test starts at
 7402|       |      the match point. This optimization can save a huge amount of backtracking
 7403|       |      in patterns with nested unlimited repeats that aren't going to match.
 7404|       |      Writing separate code for caseful/caseless versions makes it go faster,
 7405|       |      as does using an autoincrement and backing off on a match. As in the case
 7406|       |      of the first code unit, using memchr() in the 8-bit library gives a big
 7407|       |      speed up. Unlike the first_cu check above, we do not need to call
 7408|       |      memchr() twice in the caseless case because we only need to check for the
 7409|       |      presence of the character in either case, not find the first occurrence.
 7410|       |
 7411|       |      The search can be skipped if the code unit was found later than the
 7412|       |      current starting point in a previous iteration of the bumpalong loop.
 7413|       |
 7414|       |      HOWEVER: when the subject string is very, very long, searching to its end
 7415|       |      can take a long time, and give bad performance on quite ordinary
 7416|       |      anchored patterns. This showed up when somebody was matching something
 7417|       |      like /^\d+C/ on a 32-megabyte string... so we don't do this when the
 7418|       |      string is sufficiently long, but it's worth searching a lot more for
 7419|       |      unanchored patterns. */
 7420|       |
 7421|  6.50k|      p = start_match + (has_first_cu? 1:0);
  ------------------
  |  Branch (7421:26): [True: 175, False: 6.32k]
  ------------------
 7422|  6.50k|      if (has_req_cu && p > req_cu_ptr)
  ------------------
  |  Branch (7422:11): [True: 2.19k, False: 4.30k]
  |  Branch (7422:25): [True: 334, False: 1.86k]
  ------------------
 7423|    334|        {
 7424|    334|        PCRE2_SIZE check_length = end_subject - start_match;
  ------------------
  |  |  479|    334|#define PCRE2_SIZE            size_t
  ------------------
 7425|       |
 7426|    334|        if (check_length < REQ_CU_MAX ||
  ------------------
  |  |  572|    668|#define REQ_CU_MAX       5000
  ------------------
  |  Branch (7426:13): [True: 334, False: 0]
  ------------------
 7427|      0|              (!anchored && check_length < REQ_CU_MAX * 1000))
  ------------------
  |  |  572|      0|#define REQ_CU_MAX       5000
  ------------------
  |  Branch (7427:16): [True: 0, False: 0]
  |  Branch (7427:29): [True: 0, False: 0]
  ------------------
 7428|    334|          {
 7429|    334|          if (req_cu != req_cu2)  /* Caseless */
  ------------------
  |  Branch (7429:15): [True: 13, False: 321]
  ------------------
 7430|     13|            {
 7431|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 7432|       |            while (p < end_subject)
 7433|       |              {
 7434|       |              uint32_t pp = UCHAR21INCTEST(p);
 7435|       |              if (pp == req_cu || pp == req_cu2) { p--; break; }
 7436|       |              }
 7437|       |#else  /* 8-bit code units */
 7438|     13|            PCRE2_SPTR pp = p;
  ------------------
  |  |  820|     13|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|     13|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     13|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     13|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7439|     13|            p = memchr(pp, req_cu, end_subject - pp);
 7440|     13|            if (p == NULL)
  ------------------
  |  Branch (7440:17): [True: 6, False: 7]
  ------------------
 7441|      6|              {
 7442|      6|              p = memchr(pp, req_cu2, end_subject - pp);
 7443|      6|              if (p == NULL) p = end_subject;
  ------------------
  |  Branch (7443:19): [True: 6, False: 0]
  ------------------
 7444|      6|              }
 7445|     13|#endif /* PCRE2_CODE_UNIT_WIDTH != 8 */
 7446|     13|            }
 7447|       |
 7448|       |          /* The caseful case */
 7449|       |
 7450|    321|          else
 7451|    321|            {
 7452|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 7453|       |            while (p < end_subject)
 7454|       |              {
 7455|       |              if (UCHAR21INCTEST(p) == req_cu) { p--; break; }
 7456|       |              }
 7457|       |
 7458|       |#else  /* 8-bit code units */
 7459|    321|            p = memchr(p, req_cu, end_subject - p);
 7460|    321|            if (p == NULL) p = end_subject;
  ------------------
  |  Branch (7460:17): [True: 25, False: 296]
  ------------------
 7461|    321|#endif
 7462|    321|            }
 7463|       |
 7464|       |          /* If we can't find the required code unit, break the bumpalong loop,
 7465|       |          forcing a match failure. */
 7466|       |
 7467|    334|          if (p >= end_subject)
  ------------------
  |  Branch (7467:15): [True: 31, False: 303]
  ------------------
 7468|     31|            {
 7469|     31|            rc = MATCH_NOMATCH;
  ------------------
  |  |   88|     31|#define MATCH_NOMATCH      0
  ------------------
 7470|     31|            break;
 7471|     31|            }
 7472|       |
 7473|       |          /* If we have found the required code unit, save the point where we
 7474|       |          found it, so that we don't search again next time round the bumpalong
 7475|       |          loop if the start hasn't yet passed this code unit. */
 7476|       |
 7477|    303|          req_cu_ptr = p;
 7478|    303|          }
 7479|    334|        }
 7480|  6.50k|      }
 7481|  6.68k|    }
 7482|       |
 7483|       |  /* ------------ End of start of match optimizations ------------ */
 7484|       |
 7485|       |  /* Give no match if we have passed the bumpalong limit. */
 7486|       |
 7487|  6.47k|  if (start_match > bumpalong_limit)
  ------------------
  |  Branch (7487:7): [True: 0, False: 6.47k]
  ------------------
 7488|      0|    {
 7489|      0|    rc = MATCH_NOMATCH;
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
 7490|      0|    break;
 7491|      0|    }
 7492|       |
 7493|       |  /* OK, we can now run the match. If "hitend" is set afterwards, remember the
 7494|       |  first starting point for which a partial match was found. */
 7495|       |
 7496|  6.47k|  cb.start_match = (PCRE2_SIZE)(start_match - subject);
 7497|  6.47k|  cb.callout_flags |= PCRE2_CALLOUT_STARTMATCH;
  ------------------
  |  |  520|  6.47k|#define PCRE2_CALLOUT_STARTMATCH    0x00000001u  /* Set for each bumpalong */
  ------------------
 7498|       |
 7499|  6.47k|  mb->start_used_ptr = start_match;
 7500|  6.47k|  mb->last_used_ptr = start_match;
 7501|  6.47k|#ifdef SUPPORT_UNICODE
 7502|  6.47k|  mb->moptions = options | fragment_options;
 7503|       |#else
 7504|       |  mb->moptions = options;
 7505|       |#endif
 7506|  6.47k|  mb->match_call_count = 0;
 7507|  6.47k|  mb->end_offset_top = 0;
 7508|  6.47k|  mb->skip_arg_count = 0;
 7509|       |
 7510|       |#ifdef DEBUG_SHOW_OPS
 7511|       |  fprintf(stderr, "++ Calling match()\n");
 7512|       |#endif
 7513|       |
 7514|  6.47k|  rc = match(start_match, mb->start_code, re->top_bracket, frame_size,
 7515|  6.47k|    match_data, mb);
 7516|       |
 7517|       |#ifdef DEBUG_SHOW_OPS
 7518|       |  fprintf(stderr, "++ match() returned %d\n\n", rc);
 7519|       |#endif
 7520|       |
 7521|  6.47k|  if (mb->hitend && start_partial == NULL)
  ------------------
  |  Branch (7521:7): [True: 0, False: 6.47k]
  |  Branch (7521:21): [True: 0, False: 0]
  ------------------
 7522|      0|    {
 7523|      0|    start_partial = mb->start_used_ptr;
 7524|      0|    match_partial = start_match;
 7525|      0|    }
 7526|       |
 7527|  6.47k|  switch(rc)
 7528|  6.47k|    {
 7529|       |    /* If MATCH_SKIP_ARG reaches this level it means that a MARK that matched
 7530|       |    the SKIP's arg was not found. In this circumstance, Perl ignores the SKIP
 7531|       |    entirely. The only way we can do that is to re-do the match at the same
 7532|       |    point, with a flag to force SKIP with an argument to be ignored. Just
 7533|       |    treating this case as NOMATCH does not work because it does not check other
 7534|       |    alternatives in patterns such as A(*SKIP:A)B|AC when the subject is AC. */
 7535|       |
 7536|      0|    case MATCH_SKIP_ARG:
  ------------------
  |  |  100|      0|#define MATCH_SKIP_ARG     (-994)
  ------------------
  |  Branch (7536:5): [True: 0, False: 6.47k]
  ------------------
 7537|      0|    new_start_match = start_match;
 7538|      0|    mb->ignore_skip_arg = mb->skip_arg_count;
 7539|      0|    break;
 7540|       |
 7541|       |    /* SKIP passes back the next starting point explicitly, but if it is no
 7542|       |    greater than the match we have just done, treat it as NOMATCH. */
 7543|       |
 7544|      0|    case MATCH_SKIP:
  ------------------
  |  |   99|      0|#define MATCH_SKIP         (-995)
  ------------------
  |  Branch (7544:5): [True: 0, False: 6.47k]
  ------------------
 7545|      0|    if (mb->verb_skip_ptr > start_match)
  ------------------
  |  Branch (7545:9): [True: 0, False: 0]
  ------------------
 7546|      0|      {
 7547|      0|      new_start_match = mb->verb_skip_ptr;
 7548|      0|      break;
 7549|      0|      }
 7550|       |    /* Fall through */
 7551|       |
 7552|       |    /* NOMATCH and PRUNE advance by one character. THEN at this level acts
 7553|       |    exactly like PRUNE. Unset ignore SKIP-with-argument. */
 7554|       |
 7555|  6.31k|    case MATCH_NOMATCH:
  ------------------
  |  |   88|  6.31k|#define MATCH_NOMATCH      0
  ------------------
  |  Branch (7555:5): [True: 6.31k, False: 158]
  ------------------
 7556|  6.31k|    case MATCH_PRUNE:
  ------------------
  |  |   98|  6.31k|#define MATCH_PRUNE        (-996)
  ------------------
  |  Branch (7556:5): [True: 0, False: 6.47k]
  ------------------
 7557|  6.31k|    case MATCH_THEN:
  ------------------
  |  |  101|  6.31k|#define MATCH_THEN         (-993)
  ------------------
  |  Branch (7557:5): [True: 0, False: 6.47k]
  ------------------
 7558|  6.31k|    mb->ignore_skip_arg = 0;
 7559|  6.31k|    new_start_match = start_match + 1;
 7560|  6.31k|#ifdef SUPPORT_UNICODE
 7561|  6.31k|    if (utf)
  ------------------
  |  Branch (7561:9): [True: 3.70k, False: 2.61k]
  ------------------
 7562|  3.70k|      ACROSSCHAR(new_start_match < end_subject, new_start_match,
  ------------------
  |  |  353|  3.86k|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 3.84k, False: 22]
  |  |  |  Branch (353:24): [True: 160, False: 3.68k]
  |  |  ------------------
  ------------------
 7563|  6.31k|        new_start_match++);
 7564|  6.31k|#endif
 7565|  6.31k|    break;
 7566|       |
 7567|       |    /* COMMIT disables the bumpalong, but otherwise behaves as NOMATCH. */
 7568|       |
 7569|      0|    case MATCH_COMMIT:
  ------------------
  |  |   97|      0|#define MATCH_COMMIT       (-997)
  ------------------
  |  Branch (7569:5): [True: 0, False: 6.47k]
  ------------------
 7570|      0|    rc = MATCH_NOMATCH;
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
 7571|      0|    goto ENDLOOP;
 7572|       |
 7573|       |    /* Any other return is either a match, or some kind of error. */
 7574|       |
 7575|    158|    default:
  ------------------
  |  Branch (7575:5): [True: 158, False: 6.31k]
  ------------------
 7576|    158|    goto ENDLOOP;
 7577|  6.47k|    }
 7578|       |
 7579|       |  /* Control reaches here for the various types of "no match at this point"
 7580|       |  result. Reset the code to MATCH_NOMATCH for subsequent checking. */
 7581|       |
 7582|  6.31k|  rc = MATCH_NOMATCH;
  ------------------
  |  |   88|  6.31k|#define MATCH_NOMATCH      0
  ------------------
 7583|       |
 7584|       |  /* If PCRE2_FIRSTLINE is set, the match must happen before or at the first
 7585|       |  newline in the subject (though it may continue over the newline). Therefore,
 7586|       |  if we have just failed to match, starting at a newline, do not continue. */
 7587|       |
 7588|  6.31k|  if (firstline && IS_NEWLINE(start_match)) break;
  ------------------
  |  |  497|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 0, False: 0]
  |  |  |  Branch (497:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|      0|    : \
  |  |  502|      0|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  503|      0|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  504|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 0, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|      0|    ) \
  |  |  506|      0|  )
  ------------------
  |  Branch (7588:7): [True: 0, False: 6.31k]
  ------------------
 7589|       |
 7590|       |  /* Advance to new matching position */
 7591|       |
 7592|  6.31k|  start_match = new_start_match;
 7593|       |
 7594|       |  /* Break the loop if the pattern is anchored or if we have passed the end of
 7595|       |  the subject. */
 7596|       |
 7597|  6.31k|  if (anchored || start_match > end_subject) break;
  ------------------
  |  Branch (7597:7): [True: 135, False: 6.17k]
  |  Branch (7597:19): [True: 9, False: 6.17k]
  ------------------
 7598|       |
 7599|       |  /* If we have just passed a CR and we are now at a LF, and the pattern does
 7600|       |  not contain any explicit matches for \r or \n, and the newline option is CRLF
 7601|       |  or ANY or ANYCRLF, advance the match position by one more code unit. In
 7602|       |  normal matching start_match will aways be greater than the first position at
 7603|       |  this stage, but a failed *SKIP can cause a return at the same point, which is
 7604|       |  why the first test exists. */
 7605|       |
 7606|  6.17k|  if (start_match > subject + start_offset &&
  ------------------
  |  Branch (7606:7): [True: 6.17k, False: 0]
  ------------------
 7607|  6.17k|      start_match[-1] == CHAR_CR &&
  ------------------
  |  |  990|  12.3k|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (7607:7): [True: 72, False: 6.09k]
  ------------------
 7608|     72|      start_match < end_subject &&
  ------------------
  |  Branch (7608:7): [True: 72, False: 0]
  ------------------
 7609|     72|      *start_match == CHAR_NL &&
  ------------------
  |  |  992|     72|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|  6.24k|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
  |  Branch (7609:7): [True: 3, False: 69]
  ------------------
 7610|      3|      (re->flags & PCRE2_HASCRORLF) == 0 &&
  ------------------
  |  |  536|      3|#define PCRE2_HASCRORLF     0x00000800  /* explicit \r or \n in pattern */
  ------------------
  |  Branch (7610:7): [True: 3, False: 0]
  ------------------
 7611|      3|        (mb->nltype == NLTYPE_ANY ||
  ------------------
  |  |  491|      6|#define NLTYPE_ANY      1     /* Newline is any Unicode line ending */
  ------------------
  |  Branch (7611:10): [True: 0, False: 3]
  ------------------
 7612|      3|         mb->nltype == NLTYPE_ANYCRLF ||
  ------------------
  |  |  492|      6|#define NLTYPE_ANYCRLF  2     /* Newline is CR, LF, or CRLF */
  ------------------
  |  Branch (7612:10): [True: 0, False: 3]
  ------------------
 7613|      3|         mb->nllen == 2))
  ------------------
  |  Branch (7613:10): [True: 0, False: 3]
  ------------------
 7614|      0|    start_match++;
 7615|       |
 7616|  6.17k|  mb->mark = NULL;   /* Reset for start of next match attempt */
 7617|  6.17k|  }                  /* End of for(;;) "bumpalong" loop */
 7618|       |
 7619|       |/* ==========================================================================*/
 7620|       |
 7621|       |/* When we reach here, one of the following stopping conditions is true:
 7622|       |
 7623|       |(1) The match succeeded, either completely, or partially;
 7624|       |
 7625|       |(2) The pattern is anchored or the match was failed after (*COMMIT);
 7626|       |
 7627|       |(3) We are past the end of the subject or the bumpalong limit;
 7628|       |
 7629|       |(4) PCRE2_FIRSTLINE is set and we have failed to match at a newline, because
 7630|       |    this option requests that a match occur at or before the first newline in
 7631|       |    the subject.
 7632|       |
 7633|       |(5) Some kind of error occurred.
 7634|       |
 7635|       |*/
 7636|       |
 7637|    570|ENDLOOP:
 7638|       |
 7639|       |/* If end_subject != true_end_subject, it means we are handling invalid UTF,
 7640|       |and have just processed a non-terminal fragment. If this resulted in no match
 7641|       |or a partial match we must carry on to the next fragment (a partial match is
 7642|       |returned to the caller only at the very end of the subject). A loop is used to
 7643|       |avoid trying to match against empty fragments; if the pattern can match an
 7644|       |empty string it would have done so already. */
 7645|       |
 7646|    570|#ifdef SUPPORT_UNICODE
 7647|    570|if (utf && end_subject != true_end_subject &&
  ------------------
  |  Branch (7647:5): [True: 150, False: 420]
  |  Branch (7647:12): [True: 0, False: 150]
  ------------------
 7648|      0|    (rc == MATCH_NOMATCH || rc == PCRE2_ERROR_PARTIAL))
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  (rc == MATCH_NOMATCH || rc == PCRE2_ERROR_PARTIAL))
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (7648:6): [True: 0, False: 0]
  |  Branch (7648:29): [True: 0, False: 0]
  ------------------
 7649|      0|  {
 7650|      0|  for (;;)
 7651|      0|    {
 7652|       |    /* Advance past the first bad code unit, and then skip invalid character
 7653|       |    starting code units in 8-bit and 16-bit modes. */
 7654|       |
 7655|      0|    start_match = end_subject + 1;
 7656|       |
 7657|      0|#if PCRE2_CODE_UNIT_WIDTH != 32
 7658|      0|    while (start_match < true_end_subject && NOT_FIRSTCU(*start_match))
  ------------------
  |  |  296|      0|#define NOT_FIRSTCU(c) (((c) & 0xc0u) == 0x80u)
  |  |  ------------------
  |  |  |  Branch (296:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7658:12): [True: 0, False: 0]
  ------------------
 7659|      0|      start_match++;
 7660|      0|#endif
 7661|       |
 7662|       |    /* If we have hit the end of the subject, there isn't another non-empty
 7663|       |    fragment, so give up. */
 7664|       |
 7665|      0|    if (start_match >= true_end_subject)
  ------------------
  |  Branch (7665:9): [True: 0, False: 0]
  ------------------
 7666|      0|      {
 7667|      0|      rc = MATCH_NOMATCH;  /* In case it was partial */
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
 7668|      0|      match_partial = NULL;
 7669|      0|      break;
 7670|      0|      }
 7671|       |
 7672|       |    /* Check the rest of the subject */
 7673|       |
 7674|      0|    mb->check_subject = start_match;
 7675|      0|    rc = PRIV(valid_utf)(start_match, length - (start_match - subject),
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2039|      0|#define _pcre2_valid_utf             PCRE2_SUFFIX(_pcre2_valid_utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7676|      0|      &(match_data->startchar));
 7677|       |
 7678|       |    /* The rest of the subject is valid UTF. */
 7679|       |
 7680|      0|    if (rc == 0)
  ------------------
  |  Branch (7680:9): [True: 0, False: 0]
  ------------------
 7681|      0|      {
 7682|      0|      mb->end_subject = end_subject = true_end_subject;
 7683|      0|      fragment_options = PCRE2_NOTBOL;
  ------------------
  |  |  176|      0|#define PCRE2_NOTBOL                      0x00000001u
  ------------------
 7684|      0|      goto FRAGMENT_RESTART;
 7685|      0|      }
 7686|       |
 7687|       |    /* A subsequent UTF error has been found; if the next fragment is
 7688|       |    non-empty, set up to process it. Otherwise, let the loop advance. */
 7689|       |
 7690|      0|    else if (rc < 0)
  ------------------
  |  Branch (7690:14): [True: 0, False: 0]
  ------------------
 7691|      0|      {
 7692|      0|      mb->end_subject = end_subject = start_match + match_data->startchar;
 7693|      0|      if (end_subject > start_match)
  ------------------
  |  Branch (7693:11): [True: 0, False: 0]
  ------------------
 7694|      0|        {
 7695|      0|        fragment_options = PCRE2_NOTBOL|PCRE2_NOTEOL;
  ------------------
  |  |  176|      0|#define PCRE2_NOTBOL                      0x00000001u
  ------------------
                      fragment_options = PCRE2_NOTBOL|PCRE2_NOTEOL;
  ------------------
  |  |  177|      0|#define PCRE2_NOTEOL                      0x00000002u
  ------------------
 7696|      0|        goto FRAGMENT_RESTART;
 7697|      0|        }
 7698|      0|      }
 7699|      0|    }
 7700|      0|  }
 7701|    570|#endif  /* SUPPORT_UNICODE */
 7702|       |
 7703|       |/* Fill in fields that are always returned in the match data. */
 7704|       |
 7705|    570|match_data->code = re;
 7706|    570|match_data->mark = mb->mark;
 7707|    570|match_data->matchedby = PCRE2_MATCHEDBY_INTERPRETER;
 7708|       |
 7709|       |/* Handle a fully successful match. Set the return code to the number of
 7710|       |captured strings, or 0 if there were too many to fit into the ovector, and then
 7711|       |set the remaining returned values before returning. Make a copy of the subject
 7712|       |string if requested. */
 7713|       |
 7714|    570|if (rc == MATCH_MATCH)
  ------------------
  |  |   87|    570|#define MATCH_MATCH        1
  ------------------
  |  Branch (7714:5): [True: 155, False: 415]
  ------------------
 7715|    155|  {
 7716|    155|  match_data->rc = ((int)mb->end_offset_top >= 2 * match_data->oveccount)?
  ------------------
  |  Branch (7716:20): [True: 0, False: 155]
  ------------------
 7717|    155|    0 : (int)mb->end_offset_top/2 + 1;
 7718|    155|  match_data->subject_length = length;
 7719|    155|  match_data->startchar = start_match - subject;
 7720|    155|  match_data->leftchar = mb->start_used_ptr - subject;
 7721|    155|  match_data->rightchar = ((mb->last_used_ptr > mb->end_match_ptr)?
  ------------------
  |  Branch (7721:28): [True: 34, False: 121]
  ------------------
 7722|    121|    mb->last_used_ptr : mb->end_match_ptr) - subject;
 7723|    155|  if ((options & PCRE2_COPY_MATCHED_SUBJECT) != 0)
  ------------------
  |  |  190|    155|#define PCRE2_COPY_MATCHED_SUBJECT        0x00004000u
  ------------------
  |  Branch (7723:7): [True: 0, False: 155]
  ------------------
 7724|      0|    {
 7725|      0|    length = CU2BYTES(length + was_zero_terminated);
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
 7726|      0|    match_data->subject = match_data->memctl.malloc(length,
 7727|      0|      match_data->memctl.memory_data);
 7728|      0|    if (match_data->subject == NULL) return PCRE2_ERROR_NOMEMORY;
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
  |  Branch (7728:9): [True: 0, False: 0]
  ------------------
 7729|      0|    memcpy((void *)match_data->subject, subject, length);
 7730|      0|    match_data->flags |= PCRE2_MD_COPIED_SUBJECT;
  ------------------
  |  |  560|      0|#define PCRE2_MD_COPIED_SUBJECT  0x01u
  ------------------
 7731|      0|    }
 7732|    155|  else match_data->subject = subject;
 7733|       |
 7734|    155|  return match_data->rc;
 7735|    155|  }
 7736|       |
 7737|       |/* Control gets here if there has been a partial match, an error, or if the
 7738|       |overall match attempt has failed at all permitted starting positions. Any mark
 7739|       |data is in the nomatch_mark field. */
 7740|       |
 7741|    415|match_data->mark = mb->nomatch_mark;
 7742|       |
 7743|       |/* For anything other than nomatch or partial match, just return the code. */
 7744|       |
 7745|    415|if (rc != MATCH_NOMATCH && rc != PCRE2_ERROR_PARTIAL) match_data->rc = rc;
  ------------------
  |  |   88|    830|#define MATCH_NOMATCH      0
  ------------------
              if (rc != MATCH_NOMATCH && rc != PCRE2_ERROR_PARTIAL) match_data->rc = rc;
  ------------------
  |  |  328|      3|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (7745:5): [True: 3, False: 412]
  |  Branch (7745:28): [True: 3, False: 0]
  ------------------
 7746|       |
 7747|       |/* Handle a partial match. If a "soft" partial match was requested, searching
 7748|       |for a complete match will have continued, and the value of rc at this point
 7749|       |will be MATCH_NOMATCH. For a "hard" partial match, it will already be
 7750|       |PCRE2_ERROR_PARTIAL. */
 7751|       |
 7752|    412|else if (match_partial != NULL)
  ------------------
  |  Branch (7752:10): [True: 0, False: 412]
  ------------------
 7753|      0|  {
 7754|      0|  match_data->subject = subject;
 7755|      0|  match_data->subject_length = length;
 7756|      0|  match_data->ovector[0] = match_partial - subject;
 7757|      0|  match_data->ovector[1] = end_subject - subject;
 7758|      0|  match_data->startchar = match_partial - subject;
 7759|      0|  match_data->leftchar = start_partial - subject;
 7760|      0|  match_data->rightchar = end_subject - subject;
 7761|      0|  match_data->rc = PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
 7762|      0|  }
 7763|       |
 7764|       |/* Else this is the classic nomatch case. */
 7765|       |
 7766|    412|else match_data->rc = PCRE2_ERROR_NOMATCH;
  ------------------
  |  |  327|    412|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
 7767|       |
 7768|    415|return match_data->rc;
 7769|    570|}
pcre2_match.c:match:
  596|  6.47k|{
  597|       |/* Frame-handling variables */
  598|       |
  599|  6.47k|heapframe *F;           /* Current frame pointer */
  600|  6.47k|heapframe *N = NULL;    /* Temporary frame pointers */
  601|  6.47k|heapframe *P = NULL;
  602|       |
  603|  6.47k|heapframe *frames_top;  /* End of frames vector */
  604|  6.47k|heapframe *assert_accept_frame = NULL;  /* For passing back a frame with captures */
  605|  6.47k|PCRE2_SIZE frame_copy_size;   /* Amount to copy when creating a new frame */
  ------------------
  |  |  479|  6.47k|#define PCRE2_SIZE            size_t
  ------------------
  606|       |
  607|       |/* Local variables that do not need to be preserved over calls to RRMATCH(). */
  608|       |
  609|  6.47k|PCRE2_SPTR branch_end = NULL;
  ------------------
  |  |  820|  6.47k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  6.47k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  6.47k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  6.47k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  610|  6.47k|PCRE2_SPTR branch_start;
  ------------------
  |  |  820|  6.47k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  6.47k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  6.47k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  6.47k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  611|  6.47k|PCRE2_SPTR bracode;     /* Temp pointer to start of group */
  ------------------
  |  |  820|  6.47k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  6.47k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  6.47k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  6.47k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|  6.47k|PCRE2_SIZE offset;      /* Used for group offsets */
  ------------------
  |  |  479|  6.47k|#define PCRE2_SIZE            size_t
  ------------------
  613|  6.47k|PCRE2_SIZE length;      /* Used for various length calculations */
  ------------------
  |  |  479|  6.47k|#define PCRE2_SIZE            size_t
  ------------------
  614|       |
  615|  6.47k|int rrc;                /* Return from functions & backtracking "recursions" */
  616|  6.47k|#ifdef SUPPORT_UNICODE
  617|  6.47k|int proptype;           /* Type of character property */
  618|  6.47k|#endif
  619|       |
  620|  6.47k|uint32_t i;             /* Used for local loops */
  621|  6.47k|uint32_t fc;            /* Character values */
  622|  6.47k|uint32_t number;        /* Used for group and other numbers */
  623|  6.47k|uint32_t reptype = 0;   /* Type of repetition (0 to avoid compiler warning) */
  624|  6.47k|uint32_t group_frame_type;  /* Specifies type for new group frames */
  625|       |
  626|  6.47k|BOOL condition;         /* Used in conditional groups */
  627|  6.47k|BOOL cur_is_word;       /* Used in "word" tests */
  628|  6.47k|BOOL prev_is_word;      /* Used in "word" tests */
  629|       |
  630|       |/* UTF and UCP flags */
  631|       |
  632|  6.47k|#ifdef SUPPORT_UNICODE
  633|  6.47k|BOOL utf = (mb->poptions & PCRE2_UTF) != 0;
  ------------------
  |  |  138|  6.47k|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  634|  6.47k|BOOL ucp = (mb->poptions & PCRE2_UCP) != 0;
  ------------------
  |  |  136|  6.47k|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  635|       |#else
  636|       |BOOL utf = FALSE;  /* Required for convenience even when no Unicode support */
  637|       |#endif
  638|       |
  639|       |/* This is the length of the last part of a backtracking frame that must be
  640|       |copied when a new frame is created. */
  641|       |
  642|  6.47k|frame_copy_size = frame_size - offsetof(heapframe, eptr);
  643|       |
  644|       |/* Set up the first frame and the end of the frames vector. */
  645|       |
  646|  6.47k|F = match_data->heapframes;
  647|  6.47k|frames_top = (heapframe *)((char *)F + match_data->heapframes_size);
  648|       |
  649|  6.47k|Frdepth = 0;                        /* "Recursion" depth */
  ------------------
  |  |  187|  6.47k|#define Frdepth            F->rdepth
  ------------------
  650|  6.47k|Fcapture_last = 0;                  /* Number of most recent capture */
  ------------------
  |  |  179|  6.47k|#define Fcapture_last      F->capture_last
  ------------------
  651|  6.47k|Fcurrent_recurse = RECURSE_UNSET;   /* Not pattern recursing. */
  ------------------
  |  |  180|  6.47k|#define Fcurrent_recurse   F->current_recurse
  ------------------
              Fcurrent_recurse = RECURSE_UNSET;   /* Not pattern recursing. */
  ------------------
  |  |   69|  6.47k|#define RECURSE_UNSET 0xffffffffu  /* Bigger than max group number */
  ------------------
  652|  6.47k|Fstart_match = Feptr = start_eptr;  /* Current data pointer and start match */
  ------------------
  |  |  188|  6.47k|#define Fstart_match       F->start_match
  ------------------
              Fstart_match = Feptr = start_eptr;  /* Current data pointer and start match */
  ------------------
  |  |  182|  6.47k|#define Feptr              F->eptr
  ------------------
  653|  6.47k|Fmark = NULL;                       /* Most recent mark */
  ------------------
  |  |  186|  6.47k|#define Fmark              F->mark
  ------------------
  654|  6.47k|Foffset_top = 0;                    /* End of captures within the frame */
  ------------------
  |  |  189|  6.47k|#define Foffset_top        F->offset_top
  ------------------
  655|  6.47k|Flast_group_offset = PCRE2_UNSET;   /* Saved frame of most recent group */
  ------------------
  |  |  184|  6.47k|#define Flast_group_offset F->last_group_offset
  ------------------
              Flast_group_offset = PCRE2_UNSET;   /* Saved frame of most recent group */
  ------------------
  |  |  482|  6.47k|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  656|  6.47k|group_frame_type = 0;               /* Not a start of group frame */
  657|  6.47k|goto NEW_FRAME;                     /* Start processing with this frame */
  658|       |
  659|       |/* Come back here when we want to create a new frame for remembering a
  660|       |backtracking point. */
  661|       |
  662|  23.4M|MATCH_RECURSE:
  663|       |
  664|       |/* Set up a new backtracking frame. If the vector is full, get a new one,
  665|       |doubling the size, but constrained by the heap limit (which is in KiB). */
  666|       |
  667|  23.4M|N = (heapframe *)((char *)F + frame_size);
  668|  23.4M|if ((heapframe *)((char *)N + frame_size) >= frames_top)
  ------------------
  |  Branch (668:5): [True: 0, False: 23.4M]
  ------------------
  669|      0|  {
  670|      0|  heapframe *new;
  671|      0|  PCRE2_SIZE newsize;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
  672|      0|  PCRE2_SIZE usedsize = (char *)N - (char *)(match_data->heapframes);
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
  673|       |
  674|      0|  if (match_data->heapframes_size >= PCRE2_SIZE_MAX / 2)
  ------------------
  |  |  480|      0|#define PCRE2_SIZE_MAX        SIZE_MAX
  ------------------
  |  Branch (674:7): [True: 0, False: 0]
  ------------------
  675|      0|    {
  676|      0|    if (match_data->heapframes_size == PCRE2_SIZE_MAX - 1)
  ------------------
  |  |  480|      0|#define PCRE2_SIZE_MAX        SIZE_MAX
  ------------------
  |  Branch (676:9): [True: 0, False: 0]
  ------------------
  677|      0|      return PCRE2_ERROR_NOMEMORY;
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
  678|      0|    newsize = PCRE2_SIZE_MAX - 1;
  ------------------
  |  |  480|      0|#define PCRE2_SIZE_MAX        SIZE_MAX
  ------------------
  679|      0|    }
  680|      0|  else
  681|      0|    newsize = match_data->heapframes_size * 2;
  682|       |
  683|      0|  if (newsize / 1024 >= mb->heap_limit)
  ------------------
  |  Branch (683:7): [True: 0, False: 0]
  ------------------
  684|      0|    {
  685|      0|    PCRE2_SIZE old_size = match_data->heapframes_size / 1024;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
  686|      0|    if (mb->heap_limit <= old_size)
  ------------------
  |  Branch (686:9): [True: 0, False: 0]
  ------------------
  687|      0|      return PCRE2_ERROR_HEAPLIMIT;
  ------------------
  |  |  405|      0|#define PCRE2_ERROR_HEAPLIMIT         (-63)
  ------------------
  688|      0|    else
  689|      0|      {
  690|      0|      PCRE2_SIZE max_delta = 1024 * (mb->heap_limit - old_size);
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
  691|      0|      int over_bytes = match_data->heapframes_size % 1024;
  692|      0|      if (over_bytes) max_delta -= (1024 - over_bytes);
  ------------------
  |  Branch (692:11): [True: 0, False: 0]
  ------------------
  693|      0|      newsize = match_data->heapframes_size + max_delta;
  694|      0|      }
  695|      0|    }
  696|       |
  697|       |  /* With a heap limit set, the permitted additional size may not be enough for
  698|       |  another frame, so do a final check. */
  699|       |
  700|      0|  if (newsize - usedsize < frame_size) return PCRE2_ERROR_HEAPLIMIT;
  ------------------
  |  |  405|      0|#define PCRE2_ERROR_HEAPLIMIT         (-63)
  ------------------
  |  Branch (700:7): [True: 0, False: 0]
  ------------------
  701|      0|  new = match_data->memctl.malloc(newsize, match_data->memctl.memory_data);
  702|      0|  if (new == NULL) return PCRE2_ERROR_NOMEMORY;
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
  |  Branch (702:7): [True: 0, False: 0]
  ------------------
  703|      0|  memcpy(new, match_data->heapframes, usedsize);
  704|       |
  705|      0|  N = (heapframe *)((char *)new + usedsize);
  706|      0|  F = (heapframe *)((char *)N - frame_size);
  707|       |
  708|      0|  match_data->memctl.free(match_data->heapframes, match_data->memctl.memory_data);
  709|      0|  match_data->heapframes = new;
  710|      0|  match_data->heapframes_size = newsize;
  711|      0|  frames_top = (heapframe *)((char *)new + newsize);
  712|      0|  }
  713|       |
  714|       |#ifdef DEBUG_SHOW_RMATCH
  715|       |fprintf(stderr, "++ RMATCH %d frame=%d", Freturn_id, Frdepth + 1);
  716|       |if (group_frame_type != 0)
  717|       |  {
  718|       |  fprintf(stderr, " type=%x ", group_frame_type);
  719|       |  switch (GF_IDMASK(group_frame_type))
  720|       |    {
  721|       |    case GF_CAPTURE:
  722|       |    fprintf(stderr, "capture=%d", GF_DATAMASK(group_frame_type));
  723|       |    break;
  724|       |
  725|       |    case GF_NOCAPTURE:
  726|       |    fprintf(stderr, "nocapture op=%d", GF_DATAMASK(group_frame_type));
  727|       |    break;
  728|       |
  729|       |    case GF_CONDASSERT:
  730|       |    fprintf(stderr, "condassert op=%d", GF_DATAMASK(group_frame_type));
  731|       |    break;
  732|       |
  733|       |    case GF_RECURSE:
  734|       |    fprintf(stderr, "recurse=%d", GF_DATAMASK(group_frame_type));
  735|       |    break;
  736|       |
  737|       |    default:
  738|       |    fprintf(stderr, "*** unknown ***");
  739|       |    break;
  740|       |    }
  741|       |  }
  742|       |fprintf(stderr, "\n");
  743|       |#endif
  744|       |
  745|       |/* Copy those fields that must be copied into the new frame, increase the
  746|       |"recursion" depth (i.e. the new frame's index) and then make the new frame
  747|       |current. */
  748|       |
  749|  23.4M|memcpy((char *)N + offsetof(heapframe, eptr),
  750|  23.4M|       (char *)F + offsetof(heapframe, eptr),
  751|  23.4M|       frame_copy_size);
  752|       |
  753|  23.4M|N->rdepth = Frdepth + 1;
  ------------------
  |  |  187|  23.4M|#define Frdepth            F->rdepth
  ------------------
  754|  23.4M|F = N;
  755|       |
  756|       |/* Carry on processing with a new frame. */
  757|       |
  758|  23.4M|NEW_FRAME:
  759|  23.4M|Fgroup_frame_type = group_frame_type;
  ------------------
  |  |  183|  23.4M|#define Fgroup_frame_type  F->group_frame_type
  ------------------
  760|  23.4M|Fecode = start_ecode;      /* Starting code pointer */
  ------------------
  |  |  181|  23.4M|#define Fecode             F->ecode
  ------------------
  761|  23.4M|Fback_frame = frame_size;  /* Default is go back one frame */
  ------------------
  |  |  178|  23.4M|#define Fback_frame        F->back_frame
  ------------------
  762|       |
  763|       |/* If this is a special type of group frame, remember its offset for quick
  764|       |access at the end of the group. If this is a recursion, set a new current
  765|       |recursion value. */
  766|       |
  767|  23.4M|if (group_frame_type != 0)
  ------------------
  |  Branch (767:5): [True: 78, False: 23.4M]
  ------------------
  768|     78|  {
  769|     78|  Flast_group_offset = (char *)F - (char *)match_data->heapframes;
  ------------------
  |  |  184|     78|#define Flast_group_offset F->last_group_offset
  ------------------
  770|     78|  if (GF_IDMASK(group_frame_type) == GF_RECURSE)
  ------------------
  |  |  118|     78|#define GF_IDMASK(a)   ((a) & 0xffff0000u)
  ------------------
                if (GF_IDMASK(group_frame_type) == GF_RECURSE)
  ------------------
  |  |  114|     78|#define GF_RECURSE     0x00040000u
  ------------------
  |  Branch (770:7): [True: 0, False: 78]
  ------------------
  771|      0|    Fcurrent_recurse = GF_DATAMASK(group_frame_type);
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
                  Fcurrent_recurse = GF_DATAMASK(group_frame_type);
  ------------------
  |  |  119|      0|#define GF_DATAMASK(a) ((a) & 0x0000ffffu)
  ------------------
  772|     78|  group_frame_type = 0;
  773|     78|  }
  774|       |
  775|       |
  776|       |/* ========================================================================= */
  777|       |/* This is the main processing loop. First check that we haven't recorded too
  778|       |many backtracks (search tree is too large), or that we haven't exceeded the
  779|       |recursive depth limit (used too many backtracking frames). If not, process the
  780|       |opcodes. */
  781|       |
  782|  23.4M|if (mb->match_call_count++ >= mb->match_limit) return PCRE2_ERROR_MATCHLIMIT;
  ------------------
  |  |  388|      3|#define PCRE2_ERROR_MATCHLIMIT        (-47)
  ------------------
  |  Branch (782:5): [True: 3, False: 23.4M]
  ------------------
  783|  23.4M|if (Frdepth >= mb->match_limit_depth) return PCRE2_ERROR_DEPTHLIMIT;
  ------------------
  |  |  187|  23.4M|#define Frdepth            F->rdepth
  ------------------
              if (Frdepth >= mb->match_limit_depth) return PCRE2_ERROR_DEPTHLIMIT;
  ------------------
  |  |  394|      0|#define PCRE2_ERROR_DEPTHLIMIT        (-53)
  ------------------
  |  Branch (783:5): [True: 0, False: 23.4M]
  ------------------
  784|       |
  785|       |#ifdef DEBUG_SHOW_OPS
  786|       |fprintf(stderr, "\n++ New frame: type=0x%x subject offset %ld\n",
  787|       |  GF_IDMASK(Fgroup_frame_type), Feptr - mb->start_subject);
  788|       |#endif
  789|       |
  790|  23.4M|for (;;)
  791|  28.4M|  {
  792|       |#ifdef DEBUG_SHOW_OPS
  793|       |fprintf(stderr, "++ %2ld op=%3d %s\n", Fecode - mb->start_code, *Fecode,
  794|       |  OP_names[*Fecode]);
  795|       |#endif
  796|       |
  797|  28.4M|  Fop = (uint8_t)(*Fecode);  /* Cast needed for 16-bit and 32-bit modes */
  ------------------
  |  |  191|  28.4M|#define Fop                F->op
  ------------------
                Fop = (uint8_t)(*Fecode);  /* Cast needed for 16-bit and 32-bit modes */
  ------------------
  |  |  181|  28.4M|#define Fecode             F->ecode
  ------------------
  798|  28.4M|  switch(Fop)
  ------------------
  |  |  191|  28.4M|#define Fop                F->op
  ------------------
  799|  28.4M|    {
  800|       |    /* ===================================================================== */
  801|       |    /* Before OP_ACCEPT there may be any number of OP_CLOSE opcodes, to close
  802|       |    any currently open capturing brackets. Unlike reaching the end of a group,
  803|       |    where we know the starting frame is at the top of the chained frames, in
  804|       |    this case we have to search back for the relevant frame in case other types
  805|       |    of group that use chained frames have intervened. Multiple OP_CLOSEs always
  806|       |    come innermost first, which matches the chain order. We can ignore this in
  807|       |    a recursion, because captures are not passed out of recursions. */
  808|       |
  809|      0|    case OP_CLOSE:
  ------------------
  |  Branch (809:5): [True: 0, False: 28.4M]
  ------------------
  810|      0|    if (Fcurrent_recurse == RECURSE_UNSET)
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
                  if (Fcurrent_recurse == RECURSE_UNSET)
  ------------------
  |  |   69|      0|#define RECURSE_UNSET 0xffffffffu  /* Bigger than max group number */
  ------------------
  |  Branch (810:9): [True: 0, False: 0]
  ------------------
  811|      0|      {
  812|      0|      number = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  813|      0|      offset = Flast_group_offset;
  ------------------
  |  |  184|      0|#define Flast_group_offset F->last_group_offset
  ------------------
  814|      0|      for(;;)
  815|      0|        {
  816|      0|        if (offset == PCRE2_UNSET) return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
                      if (offset == PCRE2_UNSET) return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  |  Branch (816:13): [True: 0, False: 0]
  ------------------
  817|      0|        N = (heapframe *)((char *)match_data->heapframes + offset);
  818|      0|        P = (heapframe *)((char *)N - frame_size);
  819|      0|        if (N->group_frame_type == (GF_CAPTURE | number)) break;
  ------------------
  |  |  111|      0|#define GF_CAPTURE     0x00010000u
  ------------------
  |  Branch (819:13): [True: 0, False: 0]
  ------------------
  820|      0|        offset = P->last_group_offset;
  821|      0|        }
  822|      0|      offset = (number << 1) - 2;
  823|      0|      Fcapture_last = number;
  ------------------
  |  |  179|      0|#define Fcapture_last      F->capture_last
  ------------------
  824|      0|      Fovector[offset] = P->eptr - mb->start_subject;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
  825|      0|      Fovector[offset+1] = Feptr - mb->start_subject;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                    Fovector[offset+1] = Feptr - mb->start_subject;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  826|      0|      if (offset >= Foffset_top) Foffset_top = offset + 2;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
                    if (offset >= Foffset_top) Foffset_top = offset + 2;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
  |  Branch (826:11): [True: 0, False: 0]
  ------------------
  827|      0|      }
  828|      0|    Fecode += PRIV(OP_lengths)[*Fecode];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += PRIV(OP_lengths)[*Fecode];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  Fecode += PRIV(OP_lengths)[*Fecode];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  829|      0|    break;
  830|       |
  831|       |
  832|       |    /* ===================================================================== */
  833|       |    /* Real or forced end of the pattern, assertion, or recursion. In an
  834|       |    assertion ACCEPT, update the last used pointer and remember the current
  835|       |    frame so that the captures and mark can be fished out of it. */
  836|       |
  837|      0|    case OP_ASSERT_ACCEPT:
  ------------------
  |  Branch (837:5): [True: 0, False: 28.4M]
  ------------------
  838|      0|    if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                  if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (838:9): [True: 0, False: 0]
  ------------------
  839|      0|    assert_accept_frame = F;
  840|      0|    RRETURN(MATCH_ACCEPT);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  841|       |
  842|       |    /* For ACCEPT within a recursion, we have to find the most recent
  843|       |    recursion. If not in a recursion, fall through to code that is common with
  844|       |    OP_END. */
  845|       |
  846|      0|    case OP_ACCEPT:
  ------------------
  |  Branch (846:5): [True: 0, False: 28.4M]
  ------------------
  847|      0|    if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
                  if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |   69|      0|#define RECURSE_UNSET 0xffffffffu  /* Bigger than max group number */
  ------------------
  |  Branch (847:9): [True: 0, False: 0]
  ------------------
  848|      0|      {
  849|       |#ifdef DEBUG_SHOW_OPS
  850|       |      fprintf(stderr, "++ Accept within recursion\n");
  851|       |#endif
  852|      0|      offset = Flast_group_offset;
  ------------------
  |  |  184|      0|#define Flast_group_offset F->last_group_offset
  ------------------
  853|      0|      for(;;)
  854|      0|        {
  855|      0|        if (offset == PCRE2_UNSET) return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
                      if (offset == PCRE2_UNSET) return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  |  Branch (855:13): [True: 0, False: 0]
  ------------------
  856|      0|        N = (heapframe *)((char *)match_data->heapframes + offset);
  857|      0|        P = (heapframe *)((char *)N - frame_size);
  858|      0|        if (GF_IDMASK(N->group_frame_type) == GF_RECURSE) break;
  ------------------
  |  |  118|      0|#define GF_IDMASK(a)   ((a) & 0xffff0000u)
  ------------------
                      if (GF_IDMASK(N->group_frame_type) == GF_RECURSE) break;
  ------------------
  |  |  114|      0|#define GF_RECURSE     0x00040000u
  ------------------
  |  Branch (858:13): [True: 0, False: 0]
  ------------------
  859|      0|        offset = P->last_group_offset;
  860|      0|        }
  861|       |
  862|       |      /* N is now the frame of the recursion; the previous frame is at the
  863|       |      OP_RECURSE position. Go back there, copying the current subject position
  864|       |      and mark, and the start_match position (\K might have changed it), and
  865|       |      then move on past the OP_RECURSE. */
  866|       |
  867|      0|      P->eptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  868|      0|      P->mark = Fmark;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
  869|      0|      P->start_match = Fstart_match;
  ------------------
  |  |  188|      0|#define Fstart_match       F->start_match
  ------------------
  870|      0|      F = P;
  871|      0|      Fecode += 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  872|      0|      continue;
  873|      0|      }
  874|       |    /* Fall through */
  875|       |
  876|       |    /* OP_END itself can never be reached within a recursion because that is
  877|       |    picked up when the OP_KET that always precedes OP_END is reached. */
  878|       |
  879|    421|    case OP_END:
  ------------------
  |  Branch (879:5): [True: 421, False: 28.4M]
  ------------------
  880|       |
  881|       |    /* Fail for an empty string match if either PCRE2_NOTEMPTY is set, or if
  882|       |    PCRE2_NOTEMPTY_ATSTART is set and we have matched at the start of the
  883|       |    subject. In both cases, backtracking will then try other alternatives, if
  884|       |    any. */
  885|       |
  886|    421|    if (Feptr == Fstart_match &&
  ------------------
  |  |  182|    421|#define Feptr              F->eptr
  ------------------
                  if (Feptr == Fstart_match &&
  ------------------
  |  |  188|    842|#define Fstart_match       F->start_match
  ------------------
  |  Branch (886:9): [True: 403, False: 18]
  ------------------
  887|    403|         ((mb->moptions & PCRE2_NOTEMPTY) != 0 ||
  ------------------
  |  |  178|    403|#define PCRE2_NOTEMPTY                    0x00000004u  /* ) These two must be kept */
  ------------------
  |  Branch (887:11): [True: 0, False: 403]
  ------------------
  888|    403|           ((mb->moptions & PCRE2_NOTEMPTY_ATSTART) != 0 &&
  ------------------
  |  |  179|    403|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  ------------------
  |  Branch (888:13): [True: 266, False: 137]
  ------------------
  889|    266|             Fstart_match == mb->start_subject + mb->start_offset)))
  ------------------
  |  |  188|    266|#define Fstart_match       F->start_match
  ------------------
  |  Branch (889:14): [True: 266, False: 0]
  ------------------
  890|    266|      {
  891|       |#ifdef DEBUG_SHOW_OPS
  892|       |      fprintf(stderr, "++ Backtrack because empty string\n");
  893|       |#endif
  894|    266|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    266|  {\
  |  |  560|    266|  rrc = ra;\
  |  |  561|    266|  goto RETURN_SWITCH;\
  |  |  562|    266|  }
  ------------------
  895|      0|      }
  896|       |
  897|       |    /* Fail if PCRE2_ENDANCHORED is set and the end of the match is not
  898|       |    the end of the subject. After (*ACCEPT) we fail the entire match (at this
  899|       |    position) but backtrack if we've reached the end of the pattern. This
  900|       |    applies whether or not we are in a recursion. */
  901|       |
  902|    155|    if (Feptr < mb->end_subject &&
  ------------------
  |  |  182|    155|#define Feptr              F->eptr
  ------------------
  |  Branch (902:9): [True: 145, False: 10]
  ------------------
  903|    145|        ((mb->moptions | mb->poptions) & PCRE2_ENDANCHORED) != 0)
  ------------------
  |  |  107|    145|#define PCRE2_ENDANCHORED         0x20000000u
  ------------------
  |  Branch (903:9): [True: 0, False: 145]
  ------------------
  904|      0|      {
  905|      0|      if (Fop == OP_END)
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
  |  Branch (905:11): [True: 0, False: 0]
  ------------------
  906|      0|        {
  907|       |#ifdef DEBUG_SHOW_OPS
  908|       |        fprintf(stderr, "++ Backtrack because not at end (endanchored set)\n");
  909|       |#endif
  910|      0|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  911|      0|        }
  912|       |
  913|       |#ifdef DEBUG_SHOW_OPS
  914|       |      fprintf(stderr, "++ Failed ACCEPT not at end (endanchnored set)\n");
  915|       |#endif
  916|      0|      return MATCH_NOMATCH;   /* (*ACCEPT) */
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
  917|      0|      }
  918|       |
  919|       |    /* We have a successful match of the whole pattern. Record the result and
  920|       |    then do a direct return from the function. If there is space in the offset
  921|       |    vector, set any pairs that follow the highest-numbered captured string but
  922|       |    are less than the number of capturing groups in the pattern to PCRE2_UNSET.
  923|       |    It is documented that this happens. "Gaps" are set to PCRE2_UNSET
  924|       |    dynamically. It is only those at the end that need setting here. */
  925|       |
  926|    155|    mb->end_match_ptr = Feptr;           /* Record where we ended */
  ------------------
  |  |  182|    155|#define Feptr              F->eptr
  ------------------
  927|    155|    mb->end_offset_top = Foffset_top;    /* and how many extracts were taken */
  ------------------
  |  |  189|    155|#define Foffset_top        F->offset_top
  ------------------
  928|    155|    mb->mark = Fmark;                    /* and the last success mark */
  ------------------
  |  |  186|    155|#define Fmark              F->mark
  ------------------
  929|    155|    if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|    155|#define Feptr              F->eptr
  ------------------
                  if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      5|#define Feptr              F->eptr
  ------------------
  |  Branch (929:9): [True: 5, False: 150]
  ------------------
  930|       |
  931|    155|    match_data->ovector[0] = Fstart_match - mb->start_subject;
  ------------------
  |  |  188|    155|#define Fstart_match       F->start_match
  ------------------
  932|    155|    match_data->ovector[1] = Feptr - mb->start_subject;
  ------------------
  |  |  182|    155|#define Feptr              F->eptr
  ------------------
  933|       |
  934|       |    /* Set i to the smaller of the sizes of the external and frame ovectors. */
  935|       |
  936|    155|    i = 2 * ((top_bracket + 1 > match_data->oveccount)?
  ------------------
  |  Branch (936:14): [True: 0, False: 155]
  ------------------
  937|    155|      match_data->oveccount : top_bracket + 1);
  938|    155|    memcpy(match_data->ovector + 2, Fovector, (i - 2) * sizeof(PCRE2_SIZE));
  ------------------
  |  |  192|    155|#define Fovector           F->ovector
  ------------------
  939|    155|    while (--i >= Foffset_top + 2) match_data->ovector[i] = PCRE2_UNSET;
  ------------------
  |  |  189|    155|#define Foffset_top        F->offset_top
  ------------------
                  while (--i >= Foffset_top + 2) match_data->ovector[i] = PCRE2_UNSET;
  ------------------
  |  |  482|    155|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (939:12): [True: 0, False: 155]
  ------------------
  940|    155|    return MATCH_MATCH;  /* Note: NOT RRETURN */
  ------------------
  |  |   87|    155|#define MATCH_MATCH        1
  ------------------
  941|       |
  942|       |
  943|       |    /*===================================================================== */
  944|       |    /* Match any single character type except newline; have to take care with
  945|       |    CRLF newlines and partial matching. */
  946|       |
  947|  2.02k|    case OP_ANY:
  ------------------
  |  Branch (947:5): [True: 2.02k, False: 28.4M]
  ------------------
  948|  2.02k|    if (IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  497|  2.02k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|  2.02k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|  2.02k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 48, False: 1.97k]
  |  |  |  Branch (497:4): [True: 0, False: 2.02k]
  |  |  ------------------
  |  |  498|  2.02k|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|  2.02k|    : \
  |  |  502|  2.02k|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  2.02k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|  2.02k|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  2.02k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 2.00k, False: 21]
  |  |  ------------------
  |  |  503|  2.02k|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|  2.00k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|  2.00k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 48, False: 1.95k]
  |  |  ------------------
  |  |  504|  2.02k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|     48|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 48, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|  2.02k|    ) \
  |  |  506|  2.02k|  )
  ------------------
                  if (IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     48|  {\
  |  |  560|     48|  rrc = ra;\
  |  |  561|     48|  goto RETURN_SWITCH;\
  |  |  562|     48|  }
  ------------------
  949|  1.97k|    if (mb->partial != 0 &&
  ------------------
  |  Branch (949:9): [True: 0, False: 1.97k]
  ------------------
  950|      0|        Feptr == mb->end_subject - 1 &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (950:9): [True: 0, False: 0]
  ------------------
  951|      0|        NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                      NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|  1.97k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (951:9): [True: 0, False: 0]
  ------------------
  952|      0|        NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (952:9): [True: 0, False: 0]
  ------------------
  953|      0|        UCHAR21TEST(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
                      UCHAR21TEST(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (953:9): [True: 0, False: 0]
  ------------------
  954|      0|      {
  955|      0|      mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  956|      0|      if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (956:11): [True: 0, False: 0]
  ------------------
  957|      0|      }
  958|       |    /* Fall through */
  959|       |
  960|       |    /* Match any single character whatsoever. */
  961|       |
  962|  3.16k|    case OP_ALLANY:
  ------------------
  |  Branch (962:5): [True: 1.18k, False: 28.4M]
  ------------------
  963|  3.16k|    if (Feptr >= mb->end_subject)  /* DO NOT merge the Feptr++ here; it must */
  ------------------
  |  |  182|  3.16k|#define Feptr              F->eptr
  ------------------
  |  Branch (963:9): [True: 38, False: 3.12k]
  ------------------
  964|     38|      {                            /* not be updated before SCHECK_PARTIAL. */
  965|     38|      SCHECK_PARTIAL();
  ------------------
  |  |  538|     38|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 38]
  |  |  ------------------
  |  |  539|     38|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     38|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
  966|     38|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     38|  {\
  |  |  560|     38|  rrc = ra;\
  |  |  561|     38|  goto RETURN_SWITCH;\
  |  |  562|     38|  }
  ------------------
  967|      0|      }
  968|  3.12k|    Feptr++;
  ------------------
  |  |  182|  3.12k|#define Feptr              F->eptr
  ------------------
  969|  3.12k|#ifdef SUPPORT_UNICODE
  970|  3.12k|    if (utf) ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|  1.84k|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 1.83k, False: 12]
  |  |  |  Branch (353:24): [True: 131, False: 1.70k]
  |  |  ------------------
  ------------------
  |  Branch (970:9): [True: 1.71k, False: 1.40k]
  ------------------
  971|  3.12k|#endif
  972|  3.12k|    Fecode++;
  ------------------
  |  |  181|  3.12k|#define Fecode             F->ecode
  ------------------
  973|  3.12k|    break;
  974|       |
  975|       |
  976|       |    /* ===================================================================== */
  977|       |    /* Match a single code unit, even in UTF mode. This opcode really does
  978|       |    match any code unit, even newline. (It really should be called ANYCODEUNIT,
  979|       |    of course - the byte name is from pre-16 bit days.) */
  980|       |
  981|  1.22k|    case OP_ANYBYTE:
  ------------------
  |  Branch (981:5): [True: 1.22k, False: 28.4M]
  ------------------
  982|  1.22k|    if (Feptr >= mb->end_subject)   /* DO NOT merge the Feptr++ here; it must */
  ------------------
  |  |  182|  1.22k|#define Feptr              F->eptr
  ------------------
  |  Branch (982:9): [True: 48, False: 1.17k]
  ------------------
  983|     48|      {                             /* not be updated before SCHECK_PARTIAL. */
  984|     48|      SCHECK_PARTIAL();
  ------------------
  |  |  538|     48|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 48]
  |  |  ------------------
  |  |  539|     48|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     48|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
  985|     48|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     48|  {\
  |  |  560|     48|  rrc = ra;\
  |  |  561|     48|  goto RETURN_SWITCH;\
  |  |  562|     48|  }
  ------------------
  986|      0|      }
  987|  1.17k|    Feptr++;
  ------------------
  |  |  182|  1.17k|#define Feptr              F->eptr
  ------------------
  988|  1.17k|    Fecode++;
  ------------------
  |  |  181|  1.17k|#define Fecode             F->ecode
  ------------------
  989|  1.17k|    break;
  990|       |
  991|       |
  992|       |    /* ===================================================================== */
  993|       |    /* Match a single character, casefully */
  994|       |
  995|  3.47M|    case OP_CHAR:
  ------------------
  |  Branch (995:5): [True: 3.47M, False: 24.9M]
  ------------------
  996|  3.47M|#ifdef SUPPORT_UNICODE
  997|  3.47M|    if (utf)
  ------------------
  |  Branch (997:9): [True: 3.45M, False: 19.0k]
  ------------------
  998|  3.45M|      {
  999|  3.45M|      Flength = 1;
  ------------------
  |  |  185|  3.45M|#define Flength            F->length
  ------------------
 1000|  3.45M|      Fecode++;
  ------------------
  |  |  181|  3.45M|#define Fecode             F->ecode
  ------------------
 1001|  3.45M|      GETCHARLEN(fc, Fecode, Flength);
  ------------------
  |  |  330|  3.45M|  c = *eptr; \
  |  |  331|  3.45M|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|    149|    { \
  |  |  |  |  341|    149|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 149]
  |  |  |  |  ------------------
  |  |  |  |  342|    149|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|    149|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 149]
  |  |  |  |  ------------------
  |  |  |  |  347|    149|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|    149|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 149, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|    149|      {\
  |  |  |  |  353|    149|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|    149|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|    149|      len += 3; \
  |  |  |  |  356|    149|      } \
  |  |  |  |  357|    149|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|    149|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 149, False: 3.45M]
  |  |  ------------------
  ------------------
 1002|  3.45M|      if (Flength > (PCRE2_SIZE)(mb->end_subject - Feptr))
  ------------------
  |  |  185|  3.45M|#define Flength            F->length
  ------------------
                    if (Flength > (PCRE2_SIZE)(mb->end_subject - Feptr))
  ------------------
  |  |  182|  3.45M|#define Feptr              F->eptr
  ------------------
  |  Branch (1002:11): [True: 79.1k, False: 3.37M]
  ------------------
 1003|  79.1k|        {
 1004|  79.1k|        CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */
  ------------------
  |  |  532|  79.1k|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|  79.1k|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 79.1k, False: 0]
  |  |  ------------------
  |  |  533|  79.1k|    { \
  |  |  534|  79.1k|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|  79.1k|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 79.1k]
  |  |  |  |  ------------------
  |  |  |  |  539|  79.1k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|  79.1k|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|  79.1k|    }
  ------------------
 1005|  79.1k|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  79.1k|  {\
  |  |  560|  79.1k|  rrc = ra;\
  |  |  561|  79.1k|  goto RETURN_SWITCH;\
  |  |  562|  79.1k|  }
  ------------------
 1006|      0|        }
 1007|  4.38M|      for (; Flength > 0; Flength--)
  ------------------
  |  |  185|  4.38M|#define Flength            F->length
  ------------------
                    for (; Flength > 0; Flength--)
  ------------------
  |  |  185|  1.01M|#define Flength            F->length
  ------------------
  |  Branch (1007:14): [True: 3.37M, False: 1.01M]
  ------------------
 1008|  3.37M|        {
 1009|  3.37M|        if (*Fecode++ != UCHAR21INC(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  181|  3.37M|#define Fecode             F->ecode
  ------------------
                      if (*Fecode++ != UCHAR21INC(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  245|  3.37M|#define UCHAR21INC(eptr)     (*(eptr)++)
  ------------------
                      if (*Fecode++ != UCHAR21INC(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  2.36M|  {\
  |  |  560|  2.36M|  rrc = ra;\
  |  |  561|  2.36M|  goto RETURN_SWITCH;\
  |  |  562|  2.36M|  }
  ------------------
  |  Branch (1009:13): [True: 2.36M, False: 1.01M]
  ------------------
 1010|  1.01M|        }
 1011|  3.37M|      }
 1012|  19.0k|    else
 1013|  19.0k|#endif
 1014|       |
 1015|       |    /* Not UTF mode */
 1016|  19.0k|      {
 1017|  19.0k|      if (mb->end_subject - Feptr < 1)
  ------------------
  |  |  182|  19.0k|#define Feptr              F->eptr
  ------------------
  |  Branch (1017:11): [True: 1.12k, False: 17.9k]
  ------------------
 1018|  1.12k|        {
 1019|  1.12k|        SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */
  ------------------
  |  |  538|  1.12k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1.12k]
  |  |  ------------------
  |  |  539|  1.12k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  1.12k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1020|  1.12k|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.12k|  {\
  |  |  560|  1.12k|  rrc = ra;\
  |  |  561|  1.12k|  goto RETURN_SWITCH;\
  |  |  562|  1.12k|  }
  ------------------
 1021|      0|        }
 1022|  17.9k|      if (Fecode[1] != *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  181|  17.9k|#define Fecode             F->ecode
  ------------------
                    if (Fecode[1] != *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|  17.9k|#define Feptr              F->eptr
  ------------------
                    if (Fecode[1] != *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  17.8k|  {\
  |  |  560|  17.8k|  rrc = ra;\
  |  |  561|  17.8k|  goto RETURN_SWITCH;\
  |  |  562|  17.8k|  }
  ------------------
  |  Branch (1022:11): [True: 17.8k, False: 67]
  ------------------
 1023|     67|      Fecode += 2;
  ------------------
  |  |  181|     67|#define Fecode             F->ecode
  ------------------
 1024|     67|      }
 1025|  1.01M|    break;
 1026|       |
 1027|       |
 1028|       |    /* ===================================================================== */
 1029|       |    /* Match a single character, caselessly. If we are at the end of the
 1030|       |    subject, give up immediately. We get here only when the pattern character
 1031|       |    has at most one other case. Characters with more than two cases are coded
 1032|       |    as OP_PROP with the pseudo-property PT_CLIST. */
 1033|       |
 1034|  1.01M|    case OP_CHARI:
  ------------------
  |  Branch (1034:5): [True: 149k, False: 28.3M]
  ------------------
 1035|   149k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   149k|#define Feptr              F->eptr
  ------------------
  |  Branch (1035:9): [True: 3.90k, False: 145k]
  ------------------
 1036|  3.90k|      {
 1037|  3.90k|      SCHECK_PARTIAL();
  ------------------
  |  |  538|  3.90k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 3.90k]
  |  |  ------------------
  |  |  539|  3.90k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  3.90k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1038|  3.90k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  3.90k|  {\
  |  |  560|  3.90k|  rrc = ra;\
  |  |  561|  3.90k|  goto RETURN_SWITCH;\
  |  |  562|  3.90k|  }
  ------------------
 1039|      0|      }
 1040|       |
 1041|   145k|#ifdef SUPPORT_UNICODE
 1042|   145k|    if (utf)
  ------------------
  |  Branch (1042:9): [True: 133k, False: 12.2k]
  ------------------
 1043|   133k|      {
 1044|   133k|      Flength = 1;
  ------------------
  |  |  185|   133k|#define Flength            F->length
  ------------------
 1045|   133k|      Fecode++;
  ------------------
  |  |  181|   133k|#define Fecode             F->ecode
  ------------------
 1046|   133k|      GETCHARLEN(fc, Fecode, Flength);
  ------------------
  |  |  330|   133k|  c = *eptr; \
  |  |  331|   133k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|     38|    { \
  |  |  |  |  341|     38|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 38, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|     38|      { \
  |  |  |  |  343|     38|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|     38|      len++; \
  |  |  |  |  345|     38|      } \
  |  |  |  |  346|     38|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|     38|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 38, False: 133k]
  |  |  ------------------
  ------------------
 1047|       |
 1048|       |      /* If the pattern character's value is < 128, we know that its other case
 1049|       |      (if any) is also < 128 (and therefore only one code unit long in all
 1050|       |      code-unit widths), so we can use the fast lookup table. We checked above
 1051|       |      that there is at least one character left in the subject. */
 1052|       |
 1053|   133k|      if (fc < 128)
  ------------------
  |  Branch (1053:11): [True: 133k, False: 38]
  ------------------
 1054|   133k|        {
 1055|   133k|        uint32_t cc = UCHAR21(Feptr);
  ------------------
  |  |  243|   133k|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 1056|   133k|        if (mb->lcc[fc] != TABLE_GET(cc, mb->lcc, cc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  214|   133k|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
                      if (mb->lcc[fc] != TABLE_GET(cc, mb->lcc, cc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|   127k|  {\
  |  |  560|   127k|  rrc = ra;\
  |  |  561|   127k|  goto RETURN_SWITCH;\
  |  |  562|   127k|  }
  ------------------
  |  Branch (1056:13): [True: 127k, False: 5.79k]
  ------------------
 1057|  5.79k|        Fecode++;
  ------------------
  |  |  181|  5.79k|#define Fecode             F->ecode
  ------------------
 1058|  5.79k|        Feptr++;
  ------------------
  |  |  182|  5.79k|#define Feptr              F->eptr
  ------------------
 1059|  5.79k|        }
 1060|       |
 1061|       |      /* Otherwise we must pick up the subject character and use Unicode
 1062|       |      property support to test its other case. Note that we cannot use the
 1063|       |      value of "Flength" to check for sufficient bytes left, because the other
 1064|       |      case of the character may have more or fewer code units. */
 1065|       |
 1066|     38|      else
 1067|     38|        {
 1068|     38|        uint32_t dc;
 1069|     38|        GETCHARINC(dc, Feptr);
  ------------------
  |  |  316|     38|  c = *eptr++; \
  |  |  317|     38|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      2|    { \
  |  |  |  |  307|      2|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      2|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      2|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      2|      { \
  |  |  |  |  316|      2|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      2|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      2|      eptr += 3; \
  |  |  |  |  319|      2|      } \
  |  |  |  |  320|      2|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      2|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 2, False: 36]
  |  |  ------------------
  ------------------
 1070|     38|        Fecode += Flength;
  ------------------
  |  |  181|     38|#define Fecode             F->ecode
  ------------------
                      Fecode += Flength;
  ------------------
  |  |  185|     38|#define Flength            F->length
  ------------------
 1071|     38|        if (dc != fc && dc != UCD_OTHERCASE(fc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1889|     38|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|     38|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|     38|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     38|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|     38|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     38|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     38|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     38|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|     38|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     38|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|     38|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     38|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     38|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     38|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     38|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|     38|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     38|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     38|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     38|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     38|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|     38|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     38|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     38|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (dc != fc && dc != UCD_OTHERCASE(fc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     38|  {\
  |  |  560|     38|  rrc = ra;\
  |  |  561|     38|  goto RETURN_SWITCH;\
  |  |  562|     38|  }
  ------------------
  |  Branch (1071:13): [True: 38, False: 0]
  |  Branch (1071:25): [True: 38, False: 0]
  ------------------
 1072|      0|        }
 1073|   133k|      }
 1074|       |
 1075|       |    /* If UCP is set without UTF we must do the same as above, but with one
 1076|       |    character per code unit. */
 1077|       |
 1078|  12.2k|    else if (ucp)
  ------------------
  |  Branch (1078:14): [True: 0, False: 12.2k]
  ------------------
 1079|      0|      {
 1080|      0|      uint32_t cc = UCHAR21(Feptr);
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 1081|      0|      fc = Fecode[1];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1082|      0|      if (fc < 128)
  ------------------
  |  Branch (1082:11): [True: 0, False: 0]
  ------------------
 1083|      0|        {
 1084|      0|        if (mb->lcc[fc] != TABLE_GET(cc, mb->lcc, cc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  214|      0|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
                      if (mb->lcc[fc] != TABLE_GET(cc, mb->lcc, cc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1084:13): [True: 0, False: 0]
  ------------------
 1085|      0|        }
 1086|      0|      else
 1087|      0|        {
 1088|      0|        if (cc != fc && cc != UCD_OTHERCASE(fc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (cc != fc && cc != UCD_OTHERCASE(fc)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1088:13): [True: 0, False: 0]
  |  Branch (1088:25): [True: 0, False: 0]
  ------------------
 1089|      0|        }
 1090|      0|      Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 1091|      0|      Fecode += 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1092|      0|      }
 1093|       |
 1094|  12.2k|    else
 1095|  12.2k|#endif   /* SUPPORT_UNICODE */
 1096|       |
 1097|       |    /* Not UTF or UCP mode; use the table for characters < 256. */
 1098|  12.2k|      {
 1099|  12.2k|      if (TABLE_GET(Fecode[1], mb->lcc, Fecode[1])
  ------------------
  |  |  214|  12.2k|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
  |  Branch (1099:11): [True: 9.68k, False: 2.56k]
  ------------------
 1100|  12.2k|          != TABLE_GET(*Feptr, mb->lcc, *Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  214|  12.2k|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
                        != TABLE_GET(*Feptr, mb->lcc, *Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  9.68k|  {\
  |  |  560|  9.68k|  rrc = ra;\
  |  |  561|  9.68k|  goto RETURN_SWITCH;\
  |  |  562|  9.68k|  }
  ------------------
 1101|  2.56k|      Feptr++;
  ------------------
  |  |  182|  2.56k|#define Feptr              F->eptr
  ------------------
 1102|  2.56k|      Fecode += 2;
  ------------------
  |  |  181|  2.56k|#define Fecode             F->ecode
  ------------------
 1103|  2.56k|      }
 1104|  8.36k|    break;
 1105|       |
 1106|       |
 1107|       |    /* ===================================================================== */
 1108|       |    /* Match not a single character. */
 1109|       |
 1110|  8.36k|    case OP_NOT:
  ------------------
  |  Branch (1110:5): [True: 56, False: 28.4M]
  ------------------
 1111|    177|    case OP_NOTI:
  ------------------
  |  Branch (1111:5): [True: 121, False: 28.4M]
  ------------------
 1112|    177|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    177|#define Feptr              F->eptr
  ------------------
  |  Branch (1112:9): [True: 0, False: 177]
  ------------------
 1113|      0|      {
 1114|      0|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1115|      0|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1116|      0|      }
 1117|       |
 1118|    177|#ifdef SUPPORT_UNICODE
 1119|    177|    if (utf)
  ------------------
  |  Branch (1119:9): [True: 121, False: 56]
  ------------------
 1120|    121|      {
 1121|    121|      uint32_t ch;
 1122|    121|      Fecode++;
  ------------------
  |  |  181|    121|#define Fecode             F->ecode
  ------------------
 1123|    121|      GETCHARINC(ch, Fecode);
  ------------------
  |  |  316|    121|  c = *eptr++; \
  |  |  317|    121|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 0, False: 121]
  |  |  ------------------
  ------------------
 1124|    121|      GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|    121|  c = *eptr++; \
  |  |  317|    121|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      7|    { \
  |  |  |  |  307|      7|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 2, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  308|      7|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      7|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 1, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  310|      5|      { \
  |  |  |  |  311|      1|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      1|      eptr += 2; \
  |  |  |  |  313|      1|      } \
  |  |  |  |  314|      5|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      4|      { \
  |  |  |  |  316|      4|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      4|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      4|      eptr += 3; \
  |  |  |  |  319|      4|      } \
  |  |  |  |  320|      4|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      7|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 7, False: 114]
  |  |  ------------------
  ------------------
 1125|    121|      if (ch == fc)
  ------------------
  |  Branch (1125:11): [True: 1, False: 120]
  ------------------
 1126|      1|        {
 1127|      1|        RRETURN(MATCH_NOMATCH);  /* Caseful match */
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
 1128|      0|        }
 1129|    120|      else if (Fop == OP_NOTI)   /* If caseless */
  ------------------
  |  |  191|    120|#define Fop                F->op
  ------------------
  |  Branch (1129:16): [True: 120, False: 0]
  ------------------
 1130|    120|        {
 1131|    120|        if (ch > 127)
  ------------------
  |  Branch (1131:13): [True: 0, False: 120]
  ------------------
 1132|      0|          ch = UCD_OTHERCASE(ch);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1133|    120|        else
 1134|    120|          ch = (mb->fcc)[ch];
 1135|    120|        if (ch == fc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1135:13): [True: 0, False: 120]
  ------------------
 1136|    120|        }
 1137|    121|      }
 1138|       |
 1139|       |    /* UCP without UTF is as above, but with one character per code unit. */
 1140|       |
 1141|     56|    else if (ucp)
  ------------------
  |  Branch (1141:14): [True: 0, False: 56]
  ------------------
 1142|      0|      {
 1143|      0|      uint32_t ch;
 1144|      0|      fc = UCHAR21INC(Feptr);
  ------------------
  |  |  245|      0|#define UCHAR21INC(eptr)     (*(eptr)++)
  ------------------
 1145|      0|      ch = Fecode[1];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1146|      0|      Fecode += 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1147|       |
 1148|      0|      if (ch == fc)
  ------------------
  |  Branch (1148:11): [True: 0, False: 0]
  ------------------
 1149|      0|        {
 1150|      0|        RRETURN(MATCH_NOMATCH);  /* Caseful match */
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1151|      0|        }
 1152|      0|      else if (Fop == OP_NOTI)   /* If caseless */
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
  |  Branch (1152:16): [True: 0, False: 0]
  ------------------
 1153|      0|        {
 1154|      0|        if (ch > 127)
  ------------------
  |  Branch (1154:13): [True: 0, False: 0]
  ------------------
 1155|      0|          ch = UCD_OTHERCASE(ch);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1156|      0|        else
 1157|      0|          ch = (mb->fcc)[ch];
 1158|      0|        if (ch == fc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1158:13): [True: 0, False: 0]
  ------------------
 1159|      0|        }
 1160|      0|      }
 1161|       |
 1162|     56|    else
 1163|     56|#endif  /* SUPPORT_UNICODE */
 1164|       |
 1165|       |    /* Neither UTF nor UCP is set */
 1166|       |
 1167|     56|      {
 1168|     56|      uint32_t ch = Fecode[1];
  ------------------
  |  |  181|     56|#define Fecode             F->ecode
  ------------------
 1169|     56|      fc = UCHAR21INC(Feptr);
  ------------------
  |  |  245|     56|#define UCHAR21INC(eptr)     (*(eptr)++)
  ------------------
 1170|     56|      if (ch == fc || (Fop == OP_NOTI && TABLE_GET(ch, mb->fcc, ch) == fc))
  ------------------
  |  |  191|     54|#define Fop                F->op
  ------------------
                    if (ch == fc || (Fop == OP_NOTI && TABLE_GET(ch, mb->fcc, ch) == fc))
  ------------------
  |  |  214|      0|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
  |  Branch (1170:11): [True: 2, False: 54]
  |  Branch (1170:24): [True: 0, False: 54]
  |  Branch (1170:42): [True: 0, False: 0]
  ------------------
 1171|     54|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      2|  {\
  |  |  560|      2|  rrc = ra;\
  |  |  561|      2|  goto RETURN_SWITCH;\
  |  |  562|      2|  }
  ------------------
 1172|     54|      Fecode += 2;
  ------------------
  |  |  181|     54|#define Fecode             F->ecode
  ------------------
 1173|     54|      }
 1174|    174|    break;
 1175|       |
 1176|       |
 1177|       |    /* ===================================================================== */
 1178|       |    /* Match a single character repeatedly. */
 1179|       |
 1180|    174|#define Loclength    F->temp_size
 1181|    174|#define Lstart_eptr  F->temp_sptr[0]
 1182|    174|#define Lcharptr     F->temp_sptr[1]
 1183|    174|#define Lmin         F->temp_32[0]
 1184|    174|#define Lmax         F->temp_32[1]
 1185|    174|#define Lc           F->temp_32[2]
 1186|    174|#define Loc          F->temp_32[3]
 1187|       |
 1188|    174|    case OP_EXACT:
  ------------------
  |  Branch (1188:5): [True: 0, False: 28.4M]
  ------------------
 1189|    142|    case OP_EXACTI:
  ------------------
  |  Branch (1189:5): [True: 142, False: 28.4M]
  ------------------
 1190|    142|    Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1183|    142|#define Lmin         F->temp_32[0]
  ------------------
                  Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1184|    142|#define Lmax         F->temp_32[1]
  ------------------
                  Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|    142|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1191|    142|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|    142|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|    142|#define IMM2_SIZE 2
  ------------------
 1192|    142|    goto REPEATCHAR;
 1193|       |
 1194|      0|    case OP_POSUPTO:
  ------------------
  |  Branch (1194:5): [True: 0, False: 28.4M]
  ------------------
 1195|      0|    case OP_POSUPTOI:
  ------------------
  |  Branch (1195:5): [True: 0, False: 28.4M]
  ------------------
 1196|      0|    reptype = REPTYPE_POS;
 1197|      0|    Lmin = 0;
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
 1198|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1184|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1199|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1200|      0|    goto REPEATCHAR;
 1201|       |
 1202|      0|    case OP_UPTO:
  ------------------
  |  Branch (1202:5): [True: 0, False: 28.4M]
  ------------------
 1203|      0|    case OP_UPTOI:
  ------------------
  |  Branch (1203:5): [True: 0, False: 28.4M]
  ------------------
 1204|      0|    reptype = REPTYPE_MAX;
 1205|      0|    Lmin = 0;
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
 1206|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1184|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1207|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1208|      0|    goto REPEATCHAR;
 1209|       |
 1210|      0|    case OP_MINUPTO:
  ------------------
  |  Branch (1210:5): [True: 0, False: 28.4M]
  ------------------
 1211|      0|    case OP_MINUPTOI:
  ------------------
  |  Branch (1211:5): [True: 0, False: 28.4M]
  ------------------
 1212|      0|    reptype = REPTYPE_MIN;
 1213|      0|    Lmin = 0;
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
 1214|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1184|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1215|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1216|      0|    goto REPEATCHAR;
 1217|       |
 1218|     57|    case OP_POSSTAR:
  ------------------
  |  Branch (1218:5): [True: 57, False: 28.4M]
  ------------------
 1219|    213|    case OP_POSSTARI:
  ------------------
  |  Branch (1219:5): [True: 156, False: 28.4M]
  ------------------
 1220|    213|    reptype = REPTYPE_POS;
 1221|    213|    Lmin = 0;
  ------------------
  |  | 1183|    213|#define Lmin         F->temp_32[0]
  ------------------
 1222|    213|    Lmax = UINT32_MAX;
  ------------------
  |  | 1184|    213|#define Lmax         F->temp_32[1]
  ------------------
 1223|    213|    Fecode++;
  ------------------
  |  |  181|    213|#define Fecode             F->ecode
  ------------------
 1224|    213|    goto REPEATCHAR;
 1225|       |
 1226|    296|    case OP_POSPLUS:
  ------------------
  |  Branch (1226:5): [True: 296, False: 28.4M]
  ------------------
 1227|    660|    case OP_POSPLUSI:
  ------------------
  |  Branch (1227:5): [True: 364, False: 28.4M]
  ------------------
 1228|    660|    reptype = REPTYPE_POS;
 1229|    660|    Lmin = 1;
  ------------------
  |  | 1183|    660|#define Lmin         F->temp_32[0]
  ------------------
 1230|    660|    Lmax = UINT32_MAX;
  ------------------
  |  | 1184|    660|#define Lmax         F->temp_32[1]
  ------------------
 1231|    660|    Fecode++;
  ------------------
  |  |  181|    660|#define Fecode             F->ecode
  ------------------
 1232|    660|    goto REPEATCHAR;
 1233|       |
 1234|  7.96k|    case OP_POSQUERY:
  ------------------
  |  Branch (1234:5): [True: 7.96k, False: 28.4M]
  ------------------
 1235|  13.0k|    case OP_POSQUERYI:
  ------------------
  |  Branch (1235:5): [True: 5.03k, False: 28.4M]
  ------------------
 1236|  13.0k|    reptype = REPTYPE_POS;
 1237|  13.0k|    Lmin = 0;
  ------------------
  |  | 1183|  13.0k|#define Lmin         F->temp_32[0]
  ------------------
 1238|  13.0k|    Lmax = 1;
  ------------------
  |  | 1184|  13.0k|#define Lmax         F->temp_32[1]
  ------------------
 1239|  13.0k|    Fecode++;
  ------------------
  |  |  181|  13.0k|#define Fecode             F->ecode
  ------------------
 1240|  13.0k|    goto REPEATCHAR;
 1241|       |
 1242|      3|    case OP_STAR:
  ------------------
  |  Branch (1242:5): [True: 3, False: 28.4M]
  ------------------
 1243|    280|    case OP_STARI:
  ------------------
  |  Branch (1243:5): [True: 277, False: 28.4M]
  ------------------
 1244|    306|    case OP_MINSTAR:
  ------------------
  |  Branch (1244:5): [True: 26, False: 28.4M]
  ------------------
 1245|    329|    case OP_MINSTARI:
  ------------------
  |  Branch (1245:5): [True: 23, False: 28.4M]
  ------------------
 1246|  2.10k|    case OP_PLUS:
  ------------------
  |  Branch (1246:5): [True: 1.77k, False: 28.4M]
  ------------------
 1247|  2.35k|    case OP_PLUSI:
  ------------------
  |  Branch (1247:5): [True: 251, False: 28.4M]
  ------------------
 1248|  2.36k|    case OP_MINPLUS:
  ------------------
  |  Branch (1248:5): [True: 10, False: 28.4M]
  ------------------
 1249|  2.98k|    case OP_MINPLUSI:
  ------------------
  |  Branch (1249:5): [True: 622, False: 28.4M]
  ------------------
 1250|  3.82k|    case OP_QUERY:
  ------------------
  |  Branch (1250:5): [True: 834, False: 28.4M]
  ------------------
 1251|  4.34k|    case OP_QUERYI:
  ------------------
  |  Branch (1251:5): [True: 527, False: 28.4M]
  ------------------
 1252|  4.34k|    case OP_MINQUERY:
  ------------------
  |  Branch (1252:5): [True: 0, False: 28.4M]
  ------------------
 1253|  22.0k|    case OP_MINQUERYI:
  ------------------
  |  Branch (1253:5): [True: 17.7k, False: 28.4M]
  ------------------
 1254|  22.0k|    fc = *Fecode++ - ((Fop < OP_STARI)? OP_STAR : OP_STARI);
  ------------------
  |  |  181|  22.0k|#define Fecode             F->ecode
  ------------------
                  fc = *Fecode++ - ((Fop < OP_STARI)? OP_STAR : OP_STARI);
  ------------------
  |  |  191|  22.0k|#define Fop                F->op
  ------------------
  |  Branch (1254:23): [True: 2.64k, False: 19.4k]
  ------------------
 1255|  22.0k|    Lmin = rep_min[fc];
  ------------------
  |  | 1183|  22.0k|#define Lmin         F->temp_32[0]
  ------------------
 1256|  22.0k|    Lmax = rep_max[fc];
  ------------------
  |  | 1184|  22.0k|#define Lmax         F->temp_32[1]
  ------------------
 1257|  22.0k|    reptype = rep_typ[fc];
 1258|       |
 1259|       |    /* Common code for all repeated single-character matches. We first check
 1260|       |    for the minimum number of characters. If the minimum equals the maximum, we
 1261|       |    are done. Otherwise, if minimizing, check the rest of the pattern for a
 1262|       |    match; if there isn't one, advance up to the maximum, one character at a
 1263|       |    time.
 1264|       |
 1265|       |    If maximizing, advance up to the maximum number of matching characters,
 1266|       |    until Feptr is past the end of the maximum run. If possessive, we are
 1267|       |    then done (no backing up). Otherwise, match at this position; anything
 1268|       |    other than no match is immediately returned. For nomatch, back up one
 1269|       |    character, unless we are matching \R and the last thing matched was
 1270|       |    \r\n, in which case, back up two code units until we reach the first
 1271|       |    optional character position.
 1272|       |
 1273|       |    The various UTF/non-UTF and caseful/caseless cases are handled separately,
 1274|       |    for speed. */
 1275|       |
 1276|  36.1k|    REPEATCHAR:
 1277|  36.1k|#ifdef SUPPORT_UNICODE
 1278|  36.1k|    if (utf)
  ------------------
  |  Branch (1278:9): [True: 10.7k, False: 25.3k]
  ------------------
 1279|  10.7k|      {
 1280|  10.7k|      Flength = 1;
  ------------------
  |  |  185|  10.7k|#define Flength            F->length
  ------------------
 1281|  10.7k|      Lcharptr = Fecode;
  ------------------
  |  | 1182|  10.7k|#define Lcharptr     F->temp_sptr[1]
  ------------------
                    Lcharptr = Fecode;
  ------------------
  |  |  181|  10.7k|#define Fecode             F->ecode
  ------------------
 1282|  10.7k|      GETCHARLEN(fc, Fecode, Flength);
  ------------------
  |  |  330|  10.7k|  c = *eptr; \
  |  |  331|  10.7k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 10.7k]
  |  |  ------------------
  ------------------
 1283|  10.7k|      Fecode += Flength;
  ------------------
  |  |  181|  10.7k|#define Fecode             F->ecode
  ------------------
                    Fecode += Flength;
  ------------------
  |  |  185|  10.7k|#define Flength            F->length
  ------------------
 1284|       |
 1285|       |      /* Handle multi-code-unit character matching, caseful and caseless. */
 1286|       |
 1287|  10.7k|      if (Flength > 1)
  ------------------
  |  |  185|  10.7k|#define Flength            F->length
  ------------------
  |  Branch (1287:11): [True: 0, False: 10.7k]
  ------------------
 1288|      0|        {
 1289|      0|        uint32_t othercase;
 1290|       |
 1291|      0|        if (Fop >= OP_STARI &&     /* Caseless */
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
  |  Branch (1291:13): [True: 0, False: 0]
  ------------------
 1292|      0|            (othercase = UCD_OTHERCASE(fc)) != fc)
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1292:13): [True: 0, False: 0]
  ------------------
 1293|      0|          Loclength = PRIV(ord2utf)(othercase, Foccu);
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
                        Loclength = PRIV(ord2utf)(othercase, Foccu);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|      0|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        Loclength = PRIV(ord2utf)(othercase, Foccu);
  ------------------
  |  |  190|      0|#define Foccu              F->occu
  ------------------
 1294|      0|        else Loclength = 0;
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
 1295|       |
 1296|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1296:21): [True: 0, False: 0]
  ------------------
 1297|      0|          {
 1298|      0|          if (Feptr <= mb->end_subject - Flength &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Feptr <= mb->end_subject - Flength &&
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
  |  Branch (1298:15): [True: 0, False: 0]
  ------------------
 1299|      0|            memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  | 1182|      0|#define Lcharptr     F->temp_sptr[1]
  ------------------
                          memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
                          memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
  |  Branch (1299:13): [True: 0, False: 0]
  ------------------
 1300|      0|          else if (Loclength > 0 &&
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
  |  Branch (1300:20): [True: 0, False: 0]
  ------------------
 1301|      0|                   Feptr <= mb->end_subject - Loclength &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                                 Feptr <= mb->end_subject - Loclength &&
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
  |  Branch (1301:20): [True: 0, False: 0]
  ------------------
 1302|      0|                   memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                                 memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  190|      0|#define Foccu              F->occu
  ------------------
                                 memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (1302:20): [True: 0, False: 0]
  ------------------
 1303|      0|            Feptr += Loclength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          Feptr += Loclength;
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
 1304|      0|          else
 1305|      0|            {
 1306|      0|            CHECK_PARTIAL();
  ------------------
  |  |  532|      0|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  533|      0|    { \
  |  |  534|      0|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|      0|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|      0|    }
  ------------------
 1307|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1308|      0|            }
 1309|      0|          }
 1310|       |
 1311|      0|        if (Lmin == Lmax) continue;
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
                      if (Lmin == Lmax) continue;
  ------------------
  |  | 1184|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1311:13): [True: 0, False: 0]
  ------------------
 1312|       |
 1313|      0|        if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (1313:13): [True: 0, False: 0]
  ------------------
 1314|      0|          {
 1315|      0|          for (;;)
 1316|      0|            {
 1317|      0|            RMATCH(Fecode, RM202);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 1318|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1318:17): [True: 0, False: 0]
  ------------------
 1319|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1184|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1319:17): [True: 0, False: 0]
  ------------------
 1320|      0|            if (Feptr <= mb->end_subject - Flength &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Feptr <= mb->end_subject - Flength &&
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
  |  Branch (1320:17): [True: 0, False: 0]
  ------------------
 1321|      0|              memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  | 1182|      0|#define Lcharptr     F->temp_sptr[1]
  ------------------
                            memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
                            memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0) Feptr += Flength;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
  |  Branch (1321:15): [True: 0, False: 0]
  ------------------
 1322|      0|            else if (Loclength > 0 &&
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
  |  Branch (1322:22): [True: 0, False: 0]
  ------------------
 1323|      0|                     Feptr <= mb->end_subject - Loclength &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                                   Feptr <= mb->end_subject - Loclength &&
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
  |  Branch (1323:22): [True: 0, False: 0]
  ------------------
 1324|      0|                     memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                                   memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  190|      0|#define Foccu              F->occu
  ------------------
                                   memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (1324:22): [True: 0, False: 0]
  ------------------
 1325|      0|              Feptr += Loclength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            Feptr += Loclength;
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
 1326|      0|            else
 1327|      0|              {
 1328|      0|              CHECK_PARTIAL();
  ------------------
  |  |  532|      0|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  533|      0|    { \
  |  |  534|      0|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|      0|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|      0|    }
  ------------------
 1329|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1330|      0|              }
 1331|      0|            }
 1332|       |          /* Control never gets here */
 1333|      0|          }
 1334|       |
 1335|      0|        else  /* Maximize */
 1336|      0|          {
 1337|      0|          Lstart_eptr = Feptr;
  ------------------
  |  | 1181|      0|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                        Lstart_eptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 1338|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1183|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1184|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1338:26): [True: 0, False: 0]
  ------------------
 1339|      0|            {
 1340|      0|            if (Feptr <= mb->end_subject - Flength &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Feptr <= mb->end_subject - Flength &&
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
  |  Branch (1340:17): [True: 0, False: 0]
  ------------------
 1341|      0|                memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                              memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0)
  ------------------
  |  | 1182|      0|#define Lcharptr     F->temp_sptr[1]
  ------------------
                              memcmp(Feptr, Lcharptr, CU2BYTES(Flength)) == 0)
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (1341:17): [True: 0, False: 0]
  ------------------
 1342|      0|              Feptr += Flength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            Feptr += Flength;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
 1343|      0|            else if (Loclength > 0 &&
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
  |  Branch (1343:22): [True: 0, False: 0]
  ------------------
 1344|      0|                     Feptr <= mb->end_subject - Loclength &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                                   Feptr <= mb->end_subject - Loclength &&
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
  |  Branch (1344:22): [True: 0, False: 0]
  ------------------
 1345|      0|                     memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                                   memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  190|      0|#define Foccu              F->occu
  ------------------
                                   memcmp(Feptr, Foccu, CU2BYTES(Loclength)) == 0)
  ------------------
  |  |  545|      0|#define CU2BYTES(x)     ((x)*((PCRE2_CODE_UNIT_WIDTH/8)))
  |  |  ------------------
  |  |  |  | 1860|      0|#define PCRE2_CODE_UNIT_WIDTH 8
  |  |  ------------------
  ------------------
  |  Branch (1345:22): [True: 0, False: 0]
  ------------------
 1346|      0|              Feptr += Loclength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            Feptr += Loclength;
  ------------------
  |  | 1180|      0|#define Loclength    F->temp_size
  ------------------
 1347|      0|            else
 1348|      0|              {
 1349|      0|              CHECK_PARTIAL();
  ------------------
  |  |  532|      0|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  533|      0|    { \
  |  |  534|      0|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|      0|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|      0|    }
  ------------------
 1350|      0|              break;
 1351|      0|              }
 1352|      0|            }
 1353|       |
 1354|       |          /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 1355|       |          Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
 1356|       |          go too far. */
 1357|       |
 1358|      0|          if (reptype != REPTYPE_POS) for(;;)
  ------------------
  |  Branch (1358:15): [True: 0, False: 0]
  ------------------
 1359|      0|            {
 1360|      0|            if (Feptr <= Lstart_eptr) break;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Feptr <= Lstart_eptr) break;
  ------------------
  |  | 1181|      0|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1360:17): [True: 0, False: 0]
  ------------------
 1361|      0|            RMATCH(Fecode, RM203);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 1362|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1362:17): [True: 0, False: 0]
  ------------------
 1363|      0|            Feptr--;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 1364|      0|            BACKCHAR(Feptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1365|      0|            }
 1366|      0|          }
 1367|      0|        break;   /* End of repeated wide character handling */
 1368|      0|        }
 1369|       |
 1370|       |      /* Length of UTF character is 1. Put it into the preserved variable and
 1371|       |      fall through to the non-UTF code. */
 1372|       |
 1373|  10.7k|      Lc = fc;
  ------------------
  |  | 1185|  10.7k|#define Lc           F->temp_32[2]
  ------------------
 1374|  10.7k|      }
 1375|  25.3k|    else
 1376|  25.3k|#endif  /* SUPPORT_UNICODE */
 1377|       |
 1378|       |    /* When not in UTF mode, load a single-code-unit character. Then proceed as
 1379|       |    above, using Unicode casing if either UTF or UCP is set. */
 1380|       |
 1381|  25.3k|    Lc = *Fecode++;
  ------------------
  |  | 1185|  25.3k|#define Lc           F->temp_32[2]
  ------------------
                  Lc = *Fecode++;
  ------------------
  |  |  181|  25.3k|#define Fecode             F->ecode
  ------------------
 1382|       |
 1383|       |    /* Caseless comparison */
 1384|       |
 1385|  36.1k|    if (Fop >= OP_STARI)
  ------------------
  |  |  191|  36.1k|#define Fop                F->op
  ------------------
  |  Branch (1385:9): [True: 25.1k, False: 10.9k]
  ------------------
 1386|  25.1k|      {
 1387|  25.1k|#if PCRE2_CODE_UNIT_WIDTH == 8
 1388|  25.1k|#ifdef SUPPORT_UNICODE
 1389|  25.1k|      if (ucp && !utf && Lc > 127) Loc = UCD_OTHERCASE(Lc);
  ------------------
  |  | 1185|      0|#define Lc           F->temp_32[2]
  ------------------
                    if (ucp && !utf && Lc > 127) Loc = UCD_OTHERCASE(Lc);
  ------------------
  |  | 1186|      0|#define Loc          F->temp_32[3]
  ------------------
                    if (ucp && !utf && Lc > 127) Loc = UCD_OTHERCASE(Lc);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1389:11): [True: 942, False: 24.2k]
  |  Branch (1389:18): [True: 0, False: 942]
  |  Branch (1389:26): [True: 0, False: 0]
  ------------------
 1390|  25.1k|      else
 1391|  25.1k|#endif  /* SUPPORT_UNICODE */
 1392|       |      /* Lc will be < 128 in UTF-8 mode. */
 1393|  25.1k|      Loc = mb->fcc[Lc];
  ------------------
  |  | 1186|  25.1k|#define Loc          F->temp_32[3]
  ------------------
                    Loc = mb->fcc[Lc];
  ------------------
  |  | 1185|  25.1k|#define Lc           F->temp_32[2]
  ------------------
 1394|       |#else /* 16-bit & 32-bit */
 1395|       |#ifdef SUPPORT_UNICODE
 1396|       |      if ((utf || ucp) && Lc > 127) Loc = UCD_OTHERCASE(Lc);
 1397|       |      else
 1398|       |#endif  /* SUPPORT_UNICODE */
 1399|       |      Loc = TABLE_GET(Lc, mb->fcc, Lc);
 1400|       |#endif  /* PCRE2_CODE_UNIT_WIDTH == 8 */
 1401|       |
 1402|  25.3k|      for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1183|  25.3k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1402:19): [True: 1.47k, False: 23.8k]
  ------------------
 1403|  1.47k|        {
 1404|  1.47k|        uint32_t cc;                 /* Faster than PCRE2_UCHAR */
 1405|  1.47k|        if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.47k|#define Feptr              F->eptr
  ------------------
  |  Branch (1405:13): [True: 14, False: 1.46k]
  ------------------
 1406|     14|          {
 1407|     14|          SCHECK_PARTIAL();
  ------------------
  |  |  538|     14|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 14]
  |  |  ------------------
  |  |  539|     14|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     14|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1408|     14|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     14|  {\
  |  |  560|     14|  rrc = ra;\
  |  |  561|     14|  goto RETURN_SWITCH;\
  |  |  562|     14|  }
  ------------------
 1409|      0|          }
 1410|  1.46k|        cc = UCHAR21TEST(Feptr);
  ------------------
  |  |  244|  1.46k|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
 1411|  1.46k|        if (Lc != cc && Loc != cc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1185|  1.46k|#define Lc           F->temp_32[2]
  ------------------
                      if (Lc != cc && Loc != cc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1186|  1.28k|#define Loc          F->temp_32[3]
  ------------------
                      if (Lc != cc && Loc != cc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.28k|  {\
  |  |  560|  1.28k|  rrc = ra;\
  |  |  561|  1.28k|  goto RETURN_SWITCH;\
  |  |  562|  1.28k|  }
  ------------------
  |  Branch (1411:13): [True: 1.28k, False: 175]
  |  Branch (1411:25): [True: 1.28k, False: 2]
  ------------------
 1412|    177|        Feptr++;
  ------------------
  |  |  182|    177|#define Feptr              F->eptr
  ------------------
 1413|    177|        }
 1414|  23.8k|      if (Lmin == Lmax) continue;
  ------------------
  |  | 1183|  23.8k|#define Lmin         F->temp_32[0]
  ------------------
                    if (Lmin == Lmax) continue;
  ------------------
  |  | 1184|  23.8k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1414:11): [True: 17, False: 23.8k]
  ------------------
 1415|       |
 1416|  23.8k|      if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (1416:11): [True: 17.7k, False: 6.04k]
  ------------------
 1417|  17.7k|        {
 1418|  17.7k|        for (;;)
 1419|  19.2k|          {
 1420|  19.2k|          uint32_t cc;               /* Faster than PCRE2_UCHAR */
 1421|  19.2k|          RMATCH(Fecode, RM25);
  ------------------
  |  |  551|  19.2k|  {\
  |  |  552|  19.2k|  start_ecode = ra;\
  |  |  553|  19.2k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  19.2k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  19.2k|  goto MATCH_RECURSE;\
  |  |  555|  19.2k|  L_##rb:;\
  |  |  556|  19.2k|  }
  ------------------
 1422|  19.2k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  19.2k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1422:15): [True: 0, False: 19.2k]
  ------------------
 1423|  19.2k|          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1183|  19.2k|#define Lmin         F->temp_32[0]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1184|  19.2k|#define Lmax         F->temp_32[1]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.38k|  {\
  |  |  560|  1.38k|  rrc = ra;\
  |  |  561|  1.38k|  goto RETURN_SWITCH;\
  |  |  562|  1.38k|  }
  ------------------
  |  Branch (1423:15): [True: 1.38k, False: 17.8k]
  ------------------
 1424|  17.8k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  17.8k|#define Feptr              F->eptr
  ------------------
  |  Branch (1424:15): [True: 392, False: 17.4k]
  ------------------
 1425|    392|            {
 1426|    392|            SCHECK_PARTIAL();
  ------------------
  |  |  538|    392|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 392]
  |  |  ------------------
  |  |  539|    392|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    392|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1427|    392|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    392|  {\
  |  |  560|    392|  rrc = ra;\
  |  |  561|    392|  goto RETURN_SWITCH;\
  |  |  562|    392|  }
  ------------------
 1428|      0|            }
 1429|  17.4k|          cc = UCHAR21TEST(Feptr);
  ------------------
  |  |  244|  17.4k|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
 1430|  17.4k|          if (Lc != cc && Loc != cc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1185|  17.4k|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc != cc && Loc != cc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1186|  16.0k|#define Loc          F->temp_32[3]
  ------------------
                        if (Lc != cc && Loc != cc) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  16.0k|  {\
  |  |  560|  16.0k|  rrc = ra;\
  |  |  561|  16.0k|  goto RETURN_SWITCH;\
  |  |  562|  16.0k|  }
  ------------------
  |  Branch (1430:15): [True: 16.0k, False: 1.43k]
  |  Branch (1430:27): [True: 16.0k, False: 2]
  ------------------
 1431|  1.43k|          Feptr++;
  ------------------
  |  |  182|  1.43k|#define Feptr              F->eptr
  ------------------
 1432|  1.43k|          }
 1433|       |        /* Control never gets here */
 1434|  17.7k|        }
 1435|       |
 1436|  6.04k|      else  /* Maximize */
 1437|  6.04k|        {
 1438|  6.04k|        Lstart_eptr = Feptr;
  ------------------
  |  | 1181|  6.04k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                      Lstart_eptr = Feptr;
  ------------------
  |  |  182|  6.04k|#define Feptr              F->eptr
  ------------------
 1439|  6.20k|        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1183|  6.04k|#define Lmin         F->temp_32[0]
  ------------------
                      for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1184|  6.20k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1439:24): [True: 6.11k, False: 91]
  ------------------
 1440|  6.11k|          {
 1441|  6.11k|          uint32_t cc;               /* Faster than PCRE2_UCHAR */
 1442|  6.11k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  6.11k|#define Feptr              F->eptr
  ------------------
  |  Branch (1442:15): [True: 65, False: 6.04k]
  ------------------
 1443|     65|            {
 1444|     65|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     65|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 65]
  |  |  ------------------
  |  |  539|     65|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     65|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1445|     65|            break;
 1446|     65|            }
 1447|  6.04k|          cc = UCHAR21TEST(Feptr);
  ------------------
  |  |  244|  6.04k|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
 1448|  6.04k|          if (Lc != cc && Loc != cc) break;
  ------------------
  |  | 1185|  6.04k|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc != cc && Loc != cc) break;
  ------------------
  |  | 1186|  5.91k|#define Loc          F->temp_32[3]
  ------------------
  |  Branch (1448:15): [True: 5.91k, False: 134]
  |  Branch (1448:27): [True: 5.89k, False: 23]
  ------------------
 1449|    157|          Feptr++;
  ------------------
  |  |  182|    157|#define Feptr              F->eptr
  ------------------
 1450|    157|          }
 1451|  6.04k|        if (reptype != REPTYPE_POS) for (;;)
  ------------------
  |  Branch (1451:13): [True: 804, False: 5.24k]
  ------------------
 1452|    818|          {
 1453|    818|          if (Feptr == Lstart_eptr) break;
  ------------------
  |  |  182|    818|#define Feptr              F->eptr
  ------------------
                        if (Feptr == Lstart_eptr) break;
  ------------------
  |  | 1181|    818|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1453:15): [True: 804, False: 14]
  ------------------
 1454|     14|          RMATCH(Fecode, RM26);
  ------------------
  |  |  551|     14|  {\
  |  |  552|     14|  start_ecode = ra;\
  |  |  553|     14|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|     14|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|     14|  goto MATCH_RECURSE;\
  |  |  555|     14|  L_##rb:;\
  |  |  556|     14|  }
  ------------------
 1455|     14|          Feptr--;
  ------------------
  |  |  182|     14|#define Feptr              F->eptr
  ------------------
 1456|     14|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|     14|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1456:15): [True: 0, False: 14]
  ------------------
 1457|     14|          }
 1458|  6.04k|        }
 1459|  23.8k|      }
 1460|       |
 1461|       |    /* Caseful comparisons (includes all multi-byte characters) */
 1462|       |
 1463|  10.9k|    else
 1464|  10.9k|      {
 1465|  11.8k|      for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1183|  11.8k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1465:19): [True: 2.08k, False: 9.73k]
  ------------------
 1466|  2.08k|        {
 1467|  2.08k|        if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  2.08k|#define Feptr              F->eptr
  ------------------
  |  Branch (1467:13): [True: 48, False: 2.03k]
  ------------------
 1468|     48|          {
 1469|     48|          SCHECK_PARTIAL();
  ------------------
  |  |  538|     48|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 48]
  |  |  ------------------
  |  |  539|     48|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     48|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1470|     48|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     48|  {\
  |  |  560|     48|  rrc = ra;\
  |  |  561|     48|  goto RETURN_SWITCH;\
  |  |  562|     48|  }
  ------------------
 1471|      0|          }
 1472|  2.03k|        if (Lc != UCHAR21INCTEST(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1185|  2.03k|#define Lc           F->temp_32[2]
  ------------------
                      if (Lc != UCHAR21INCTEST(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  246|  2.03k|#define UCHAR21INCTEST(eptr) (*(eptr)++)
  ------------------
                      if (Lc != UCHAR21INCTEST(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.19k|  {\
  |  |  560|  1.19k|  rrc = ra;\
  |  |  561|  1.19k|  goto RETURN_SWITCH;\
  |  |  562|  1.19k|  }
  ------------------
  |  Branch (1472:13): [True: 1.19k, False: 842]
  ------------------
 1473|    842|        }
 1474|       |
 1475|  9.73k|      if (Lmin == Lmax) continue;
  ------------------
  |  | 1183|  9.73k|#define Lmin         F->temp_32[0]
  ------------------
                    if (Lmin == Lmax) continue;
  ------------------
  |  | 1184|  9.73k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1475:11): [True: 0, False: 9.73k]
  ------------------
 1476|       |
 1477|  9.73k|      if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (1477:11): [True: 26, False: 9.70k]
  ------------------
 1478|     26|        {
 1479|     26|        for (;;)
 1480|     27|          {
 1481|     27|          RMATCH(Fecode, RM27);
  ------------------
  |  |  551|     27|  {\
  |  |  552|     27|  start_ecode = ra;\
  |  |  553|     27|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|     27|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|     27|  goto MATCH_RECURSE;\
  |  |  555|     27|  L_##rb:;\
  |  |  556|     27|  }
  ------------------
 1482|     27|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|     27|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1482:15): [True: 0, False: 27]
  ------------------
 1483|     27|          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1183|     27|#define Lmin         F->temp_32[0]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1184|     27|#define Lmax         F->temp_32[1]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1483:15): [True: 0, False: 27]
  ------------------
 1484|     27|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     27|#define Feptr              F->eptr
  ------------------
  |  Branch (1484:15): [True: 0, False: 27]
  ------------------
 1485|      0|            {
 1486|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1487|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1488|      0|            }
 1489|     27|          if (Lc != UCHAR21INCTEST(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1185|     27|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc != UCHAR21INCTEST(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  246|     27|#define UCHAR21INCTEST(eptr) (*(eptr)++)
  ------------------
                        if (Lc != UCHAR21INCTEST(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     26|  {\
  |  |  560|     26|  rrc = ra;\
  |  |  561|     26|  goto RETURN_SWITCH;\
  |  |  562|     26|  }
  ------------------
  |  Branch (1489:15): [True: 26, False: 1]
  ------------------
 1490|      1|          }
 1491|       |        /* Control never gets here */
 1492|     26|        }
 1493|  9.70k|      else  /* Maximize */
 1494|  9.70k|        {
 1495|  9.70k|        Lstart_eptr = Feptr;
  ------------------
  |  | 1181|  9.70k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                      Lstart_eptr = Feptr;
  ------------------
  |  |  182|  9.70k|#define Feptr              F->eptr
  ------------------
 1496|  11.9k|        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1183|  9.70k|#define Lmin         F->temp_32[0]
  ------------------
                      for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1184|  11.9k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1496:24): [True: 11.9k, False: 13]
  ------------------
 1497|  11.9k|          {
 1498|  11.9k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  11.9k|#define Feptr              F->eptr
  ------------------
  |  Branch (1498:15): [True: 12, False: 11.9k]
  ------------------
 1499|     12|            {
 1500|     12|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     12|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 12]
  |  |  ------------------
  |  |  539|     12|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     12|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1501|     12|            break;
 1502|     12|            }
 1503|       |
 1504|  11.9k|          if (Lc != UCHAR21TEST(Feptr)) break;
  ------------------
  |  | 1185|  11.9k|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc != UCHAR21TEST(Feptr)) break;
  ------------------
  |  |  244|  11.9k|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
  |  Branch (1504:15): [True: 9.68k, False: 2.27k]
  ------------------
 1505|  2.27k|          Feptr++;
  ------------------
  |  |  182|  2.27k|#define Feptr              F->eptr
  ------------------
 1506|  2.27k|          }
 1507|       |
 1508|  9.70k|        if (reptype != REPTYPE_POS) for (;;)
  ------------------
  |  Branch (1508:13): [True: 1.48k, False: 8.21k]
  ------------------
 1509|  3.75k|          {
 1510|  3.75k|          if (Feptr <= Lstart_eptr) break;
  ------------------
  |  |  182|  3.75k|#define Feptr              F->eptr
  ------------------
                        if (Feptr <= Lstart_eptr) break;
  ------------------
  |  | 1181|  3.75k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1510:15): [True: 1.48k, False: 2.26k]
  ------------------
 1511|  2.26k|          RMATCH(Fecode, RM28);
  ------------------
  |  |  551|  2.26k|  {\
  |  |  552|  2.26k|  start_ecode = ra;\
  |  |  553|  2.26k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  2.26k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  2.26k|  goto MATCH_RECURSE;\
  |  |  555|  2.26k|  L_##rb:;\
  |  |  556|  2.26k|  }
  ------------------
 1512|  2.26k|          Feptr--;
  ------------------
  |  |  182|  2.26k|#define Feptr              F->eptr
  ------------------
 1513|  2.26k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  2.26k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1513:15): [True: 0, False: 2.26k]
  ------------------
 1514|  2.26k|          }
 1515|  9.70k|        }
 1516|  9.73k|      }
 1517|  15.7k|    break;
 1518|       |
 1519|  15.7k|#undef Loclength
 1520|  15.7k|#undef Lstart_eptr
 1521|  15.7k|#undef Lcharptr
 1522|  15.7k|#undef Lmin
 1523|  15.7k|#undef Lmax
 1524|  15.7k|#undef Lc
 1525|  15.7k|#undef Loc
 1526|       |
 1527|       |
 1528|       |    /* ===================================================================== */
 1529|       |    /* Match a negated single one-byte character repeatedly. This is almost a
 1530|       |    repeat of the code for a repeated single character, but I haven't found a
 1531|       |    nice way of commoning these up that doesn't require a test of the
 1532|       |    positive/negative option for each character match. Maybe that wouldn't add
 1533|       |    very much to the time taken, but character matching *is* what this is all
 1534|       |    about... */
 1535|       |
 1536|  15.7k|#define Lstart_eptr  F->temp_sptr[0]
 1537|  15.7k|#define Lmin         F->temp_32[0]
 1538|  15.7k|#define Lmax         F->temp_32[1]
 1539|  15.7k|#define Lc           F->temp_32[2]
 1540|  15.7k|#define Loc          F->temp_32[3]
 1541|       |
 1542|  15.7k|    case OP_NOTEXACT:
  ------------------
  |  Branch (1542:5): [True: 0, False: 28.4M]
  ------------------
 1543|      0|    case OP_NOTEXACTI:
  ------------------
  |  Branch (1543:5): [True: 0, False: 28.4M]
  ------------------
 1544|      0|    Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
                  Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1545|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1546|      0|    goto REPEATNOTCHAR;
 1547|       |
 1548|      0|    case OP_NOTUPTO:
  ------------------
  |  Branch (1548:5): [True: 0, False: 28.4M]
  ------------------
 1549|      0|    case OP_NOTUPTOI:
  ------------------
  |  Branch (1549:5): [True: 0, False: 28.4M]
  ------------------
 1550|      0|    Lmin = 0;
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
 1551|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1552|      0|    reptype = REPTYPE_MAX;
 1553|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1554|      0|    goto REPEATNOTCHAR;
 1555|       |
 1556|      0|    case OP_NOTMINUPTO:
  ------------------
  |  Branch (1556:5): [True: 0, False: 28.4M]
  ------------------
 1557|      0|    case OP_NOTMINUPTOI:
  ------------------
  |  Branch (1557:5): [True: 0, False: 28.4M]
  ------------------
 1558|      0|    Lmin = 0;
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
 1559|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1560|      0|    reptype = REPTYPE_MIN;
 1561|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1562|      0|    goto REPEATNOTCHAR;
 1563|       |
 1564|      0|    case OP_NOTPOSSTAR:
  ------------------
  |  Branch (1564:5): [True: 0, False: 28.4M]
  ------------------
 1565|      0|    case OP_NOTPOSSTARI:
  ------------------
  |  Branch (1565:5): [True: 0, False: 28.4M]
  ------------------
 1566|      0|    reptype = REPTYPE_POS;
 1567|      0|    Lmin = 0;
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
 1568|      0|    Lmax = UINT32_MAX;
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
 1569|      0|    Fecode++;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1570|      0|    goto REPEATNOTCHAR;
 1571|       |
 1572|      0|    case OP_NOTPOSPLUS:
  ------------------
  |  Branch (1572:5): [True: 0, False: 28.4M]
  ------------------
 1573|      0|    case OP_NOTPOSPLUSI:
  ------------------
  |  Branch (1573:5): [True: 0, False: 28.4M]
  ------------------
 1574|      0|    reptype = REPTYPE_POS;
 1575|      0|    Lmin = 1;
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
 1576|      0|    Lmax = UINT32_MAX;
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
 1577|      0|    Fecode++;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1578|      0|    goto REPEATNOTCHAR;
 1579|       |
 1580|      0|    case OP_NOTPOSQUERY:
  ------------------
  |  Branch (1580:5): [True: 0, False: 28.4M]
  ------------------
 1581|      0|    case OP_NOTPOSQUERYI:
  ------------------
  |  Branch (1581:5): [True: 0, False: 28.4M]
  ------------------
 1582|      0|    reptype = REPTYPE_POS;
 1583|      0|    Lmin = 0;
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
 1584|      0|    Lmax = 1;
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
 1585|      0|    Fecode++;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1586|      0|    goto REPEATNOTCHAR;
 1587|       |
 1588|      0|    case OP_NOTPOSUPTO:
  ------------------
  |  Branch (1588:5): [True: 0, False: 28.4M]
  ------------------
 1589|      0|    case OP_NOTPOSUPTOI:
  ------------------
  |  Branch (1589:5): [True: 0, False: 28.4M]
  ------------------
 1590|      0|    reptype = REPTYPE_POS;
 1591|      0|    Lmin = 0;
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
 1592|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1593|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1594|      0|    goto REPEATNOTCHAR;
 1595|       |
 1596|    135|    case OP_NOTSTAR:
  ------------------
  |  Branch (1596:5): [True: 135, False: 28.4M]
  ------------------
 1597|    135|    case OP_NOTSTARI:
  ------------------
  |  Branch (1597:5): [True: 0, False: 28.4M]
  ------------------
 1598|    135|    case OP_NOTMINSTAR:
  ------------------
  |  Branch (1598:5): [True: 0, False: 28.4M]
  ------------------
 1599|    135|    case OP_NOTMINSTARI:
  ------------------
  |  Branch (1599:5): [True: 0, False: 28.4M]
  ------------------
 1600|    183|    case OP_NOTPLUS:
  ------------------
  |  Branch (1600:5): [True: 48, False: 28.4M]
  ------------------
 1601|    283|    case OP_NOTPLUSI:
  ------------------
  |  Branch (1601:5): [True: 100, False: 28.4M]
  ------------------
 1602|    283|    case OP_NOTMINPLUS:
  ------------------
  |  Branch (1602:5): [True: 0, False: 28.4M]
  ------------------
 1603|    283|    case OP_NOTMINPLUSI:
  ------------------
  |  Branch (1603:5): [True: 0, False: 28.4M]
  ------------------
 1604|    283|    case OP_NOTQUERY:
  ------------------
  |  Branch (1604:5): [True: 0, False: 28.4M]
  ------------------
 1605|    300|    case OP_NOTQUERYI:
  ------------------
  |  Branch (1605:5): [True: 17, False: 28.4M]
  ------------------
 1606|    300|    case OP_NOTMINQUERY:
  ------------------
  |  Branch (1606:5): [True: 0, False: 28.4M]
  ------------------
 1607|    300|    case OP_NOTMINQUERYI:
  ------------------
  |  Branch (1607:5): [True: 0, False: 28.4M]
  ------------------
 1608|    300|    fc = *Fecode++ - ((Fop >= OP_NOTSTARI)? OP_NOTSTARI: OP_NOTSTAR);
  ------------------
  |  |  181|    300|#define Fecode             F->ecode
  ------------------
                  fc = *Fecode++ - ((Fop >= OP_NOTSTARI)? OP_NOTSTARI: OP_NOTSTAR);
  ------------------
  |  |  191|    300|#define Fop                F->op
  ------------------
  |  Branch (1608:23): [True: 117, False: 183]
  ------------------
 1609|    300|    Lmin = rep_min[fc];
  ------------------
  |  | 1537|    300|#define Lmin         F->temp_32[0]
  ------------------
 1610|    300|    Lmax = rep_max[fc];
  ------------------
  |  | 1538|    300|#define Lmax         F->temp_32[1]
  ------------------
 1611|    300|    reptype = rep_typ[fc];
 1612|       |
 1613|       |    /* Common code for all repeated single-character non-matches. */
 1614|       |
 1615|    300|    REPEATNOTCHAR:
 1616|    300|    GETCHARINCTEST(Lc, Fecode);
  ------------------
  |  |  323|    300|  c = *eptr++; \
  |  |  324|    300|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 148, False: 152]
  |  |  |  Branch (324:14): [True: 0, False: 148]
  |  |  ------------------
  ------------------
 1617|       |
 1618|       |    /* The code is duplicated for the caseless and caseful cases, for speed,
 1619|       |    since matching characters is likely to be quite common. First, ensure the
 1620|       |    minimum number of matches are present. If Lmin = Lmax, we are done.
 1621|       |    Otherwise, if minimizing, keep trying the rest of the expression and
 1622|       |    advancing one matching character if failing, up to the maximum.
 1623|       |    Alternatively, if maximizing, find the maximum number of characters and
 1624|       |    work backwards. */
 1625|       |
 1626|    300|    if (Fop >= OP_NOTSTARI)     /* Caseless */
  ------------------
  |  |  191|    300|#define Fop                F->op
  ------------------
  |  Branch (1626:9): [True: 117, False: 183]
  ------------------
 1627|    117|      {
 1628|    117|#ifdef SUPPORT_UNICODE
 1629|    117|      if ((utf || ucp) && Lc > 127)
  ------------------
  |  | 1539|    100|#define Lc           F->temp_32[2]
  ------------------
  |  Branch (1629:12): [True: 100, False: 17]
  |  Branch (1629:19): [True: 0, False: 17]
  |  Branch (1629:27): [True: 0, False: 100]
  ------------------
 1630|      0|        Loc = UCD_OTHERCASE(Lc);
  ------------------
  |  | 1540|      0|#define Loc          F->temp_32[3]
  ------------------
                      Loc = UCD_OTHERCASE(Lc);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1631|    117|      else
 1632|    117|#endif /* SUPPORT_UNICODE */
 1633|       |
 1634|    117|      Loc = TABLE_GET(Lc, mb->fcc, Lc);  /* Other case from table */
  ------------------
  |  | 1540|    117|#define Loc          F->temp_32[3]
  ------------------
                    Loc = TABLE_GET(Lc, mb->fcc, Lc);  /* Other case from table */
  ------------------
  |  |  214|    117|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
 1635|       |
 1636|    117|#ifdef SUPPORT_UNICODE
 1637|    117|      if (utf)
  ------------------
  |  Branch (1637:11): [True: 100, False: 17]
  ------------------
 1638|    100|        {
 1639|    100|        uint32_t d;
 1640|    200|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1537|    200|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1640:21): [True: 100, False: 100]
  ------------------
 1641|    100|          {
 1642|    100|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    100|#define Feptr              F->eptr
  ------------------
  |  Branch (1642:15): [True: 0, False: 100]
  ------------------
 1643|      0|            {
 1644|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1645|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1646|      0|            }
 1647|    100|          GETCHARINC(d, Feptr);
  ------------------
  |  |  316|    100|  c = *eptr++; \
  |  |  317|    100|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      6|    { \
  |  |  |  |  307|      6|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 4, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      6|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      6|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      2|      { \
  |  |  |  |  316|      2|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      2|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      2|      eptr += 3; \
  |  |  |  |  319|      2|      } \
  |  |  |  |  320|      2|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      6|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 6, False: 94]
  |  |  ------------------
  ------------------
 1648|    100|          if (Lc == d || Loc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|    100|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc == d || Loc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1540|    100|#define Loc          F->temp_32[3]
  ------------------
                        if (Lc == d || Loc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1648:15): [True: 0, False: 100]
  |  Branch (1648:26): [True: 0, False: 100]
  ------------------
 1649|    100|          }
 1650|    100|        }
 1651|     17|      else
 1652|     17|#endif  /* SUPPORT_UNICODE */
 1653|       |
 1654|       |      /* Not UTF mode */
 1655|     17|        {
 1656|     17|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1537|     17|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1656:21): [True: 0, False: 17]
  ------------------
 1657|      0|          {
 1658|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (1658:15): [True: 0, False: 0]
  ------------------
 1659|      0|            {
 1660|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1661|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1662|      0|            }
 1663|      0|          if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|      0|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1540|      0|#define Loc          F->temp_32[3]
  ------------------
                        if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1663:15): [True: 0, False: 0]
  |  Branch (1663:31): [True: 0, False: 0]
  ------------------
 1664|      0|          Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 1665|      0|          }
 1666|     17|        }
 1667|       |
 1668|    117|      if (Lmin == Lmax) continue;  /* Finished for exact count */
  ------------------
  |  | 1537|    117|#define Lmin         F->temp_32[0]
  ------------------
                    if (Lmin == Lmax) continue;  /* Finished for exact count */
  ------------------
  |  | 1538|    117|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1668:11): [True: 0, False: 117]
  ------------------
 1669|       |
 1670|    117|      if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (1670:11): [True: 0, False: 117]
  ------------------
 1671|      0|        {
 1672|      0|#ifdef SUPPORT_UNICODE
 1673|      0|        if (utf)
  ------------------
  |  Branch (1673:13): [True: 0, False: 0]
  ------------------
 1674|      0|          {
 1675|      0|          uint32_t d;
 1676|      0|          for (;;)
 1677|      0|            {
 1678|      0|            RMATCH(Fecode, RM204);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 1679|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1679:17): [True: 0, False: 0]
  ------------------
 1680|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1680:17): [True: 0, False: 0]
  ------------------
 1681|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (1681:17): [True: 0, False: 0]
  ------------------
 1682|      0|              {
 1683|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1684|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1685|      0|              }
 1686|      0|            GETCHARINC(d, Feptr);
  ------------------
  |  |  316|      0|  c = *eptr++; \
  |  |  317|      0|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1687|      0|            if (Lc == d || Loc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|      0|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == d || Loc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1540|      0|#define Loc          F->temp_32[3]
  ------------------
                          if (Lc == d || Loc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1687:17): [True: 0, False: 0]
  |  Branch (1687:28): [True: 0, False: 0]
  ------------------
 1688|      0|            }
 1689|      0|          }
 1690|      0|        else
 1691|      0|#endif  /*SUPPORT_UNICODE */
 1692|       |
 1693|       |        /* Not UTF mode */
 1694|      0|          {
 1695|      0|          for (;;)
 1696|      0|            {
 1697|      0|            RMATCH(Fecode, RM29);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 1698|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1698:17): [True: 0, False: 0]
  ------------------
 1699|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1699:17): [True: 0, False: 0]
  ------------------
 1700|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (1700:17): [True: 0, False: 0]
  ------------------
 1701|      0|              {
 1702|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1703|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1704|      0|              }
 1705|      0|            if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|      0|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1540|      0|#define Loc          F->temp_32[3]
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1705:17): [True: 0, False: 0]
  |  Branch (1705:33): [True: 0, False: 0]
  ------------------
 1706|      0|            Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 1707|      0|            }
 1708|      0|          }
 1709|       |        /* Control never gets here */
 1710|      0|        }
 1711|       |
 1712|       |      /* Maximize case */
 1713|       |
 1714|    117|      else
 1715|    117|        {
 1716|    117|        Lstart_eptr = Feptr;
  ------------------
  |  | 1536|    117|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                      Lstart_eptr = Feptr;
  ------------------
  |  |  182|    117|#define Feptr              F->eptr
  ------------------
 1717|       |
 1718|    117|#ifdef SUPPORT_UNICODE
 1719|    117|        if (utf)
  ------------------
  |  Branch (1719:13): [True: 100, False: 17]
  ------------------
 1720|    100|          {
 1721|    100|          uint32_t d;
 1722|  2.96k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1537|    100|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1538|  2.96k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1722:26): [True: 2.96k, False: 0]
  ------------------
 1723|  2.96k|            {
 1724|  2.96k|            int len = 1;
 1725|  2.96k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  2.96k|#define Feptr              F->eptr
  ------------------
  |  Branch (1725:17): [True: 100, False: 2.86k]
  ------------------
 1726|    100|              {
 1727|    100|              SCHECK_PARTIAL();
  ------------------
  |  |  538|    100|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 100]
  |  |  ------------------
  |  |  539|    100|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    100|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1728|    100|              break;
 1729|    100|              }
 1730|  2.86k|            GETCHARLEN(d, Feptr, len);
  ------------------
  |  |  330|  2.86k|  c = *eptr; \
  |  |  331|  2.86k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|    172|    { \
  |  |  |  |  341|    172|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 78, False: 94]
  |  |  |  |  ------------------
  |  |  |  |  342|    172|      { \
  |  |  |  |  343|     78|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|     78|      len++; \
  |  |  |  |  345|     78|      } \
  |  |  |  |  346|    172|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 94]
  |  |  |  |  ------------------
  |  |  |  |  347|     94|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|     94|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 94, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|     94|      {\
  |  |  |  |  353|     94|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|     94|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|     94|      len += 3; \
  |  |  |  |  356|     94|      } \
  |  |  |  |  357|     94|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|    172|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 172, False: 2.69k]
  |  |  ------------------
  ------------------
 1731|  2.86k|            if (Lc == d || Loc == d) break;
  ------------------
  |  | 1539|  2.86k|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == d || Loc == d) break;
  ------------------
  |  | 1540|  2.86k|#define Loc          F->temp_32[3]
  ------------------
  |  Branch (1731:17): [True: 0, False: 2.86k]
  |  Branch (1731:28): [True: 0, False: 2.86k]
  ------------------
 1732|  2.86k|            Feptr += len;
  ------------------
  |  |  182|  2.86k|#define Feptr              F->eptr
  ------------------
 1733|  2.86k|            }
 1734|       |
 1735|       |          /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 1736|       |          Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
 1737|       |          go too far. */
 1738|       |
 1739|    100|          if (reptype != REPTYPE_POS) for(;;)
  ------------------
  |  Branch (1739:15): [True: 100, False: 0]
  ------------------
 1740|  2.96k|            {
 1741|  2.96k|            if (Feptr <= Lstart_eptr) break;
  ------------------
  |  |  182|  2.96k|#define Feptr              F->eptr
  ------------------
                          if (Feptr <= Lstart_eptr) break;
  ------------------
  |  | 1536|  2.96k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1741:17): [True: 100, False: 2.86k]
  ------------------
 1742|  2.86k|            RMATCH(Fecode, RM205);
  ------------------
  |  |  551|  2.86k|  {\
  |  |  552|  2.86k|  start_ecode = ra;\
  |  |  553|  2.86k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  2.86k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  2.86k|  goto MATCH_RECURSE;\
  |  |  555|  2.86k|  L_##rb:;\
  |  |  556|  2.86k|  }
  ------------------
 1743|  2.86k|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  2.86k|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1743:17): [True: 0, False: 2.86k]
  ------------------
 1744|  2.86k|            Feptr--;
  ------------------
  |  |  182|  2.86k|#define Feptr              F->eptr
  ------------------
 1745|  2.86k|            BACKCHAR(Feptr);
  ------------------
  |  |  345|  3.22k|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 360, False: 2.86k]
  |  |  ------------------
  ------------------
 1746|  2.86k|            }
 1747|    100|          }
 1748|     17|        else
 1749|     17|#endif  /* SUPPORT_UNICODE */
 1750|       |
 1751|       |        /* Not UTF mode */
 1752|     17|          {
 1753|     34|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1537|     17|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1538|     34|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1753:26): [True: 17, False: 17]
  ------------------
 1754|     17|            {
 1755|     17|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     17|#define Feptr              F->eptr
  ------------------
  |  Branch (1755:17): [True: 0, False: 17]
  ------------------
 1756|      0|              {
 1757|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1758|      0|              break;
 1759|      0|              }
 1760|     17|            if (Lc == *Feptr || Loc == *Feptr) break;
  ------------------
  |  | 1539|     17|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) break;
  ------------------
  |  |  182|     34|#define Feptr              F->eptr
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) break;
  ------------------
  |  | 1540|     17|#define Loc          F->temp_32[3]
  ------------------
                          if (Lc == *Feptr || Loc == *Feptr) break;
  ------------------
  |  |  182|     17|#define Feptr              F->eptr
  ------------------
  |  Branch (1760:17): [True: 0, False: 17]
  |  Branch (1760:33): [True: 0, False: 17]
  ------------------
 1761|     17|            Feptr++;
  ------------------
  |  |  182|     17|#define Feptr              F->eptr
  ------------------
 1762|     17|            }
 1763|     17|          if (reptype != REPTYPE_POS) for (;;)
  ------------------
  |  Branch (1763:15): [True: 17, False: 0]
  ------------------
 1764|     34|            {
 1765|     34|            if (Feptr == Lstart_eptr) break;
  ------------------
  |  |  182|     34|#define Feptr              F->eptr
  ------------------
                          if (Feptr == Lstart_eptr) break;
  ------------------
  |  | 1536|     34|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1765:17): [True: 17, False: 17]
  ------------------
 1766|     17|            RMATCH(Fecode, RM30);
  ------------------
  |  |  551|     17|  {\
  |  |  552|     17|  start_ecode = ra;\
  |  |  553|     17|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|     17|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|     17|  goto MATCH_RECURSE;\
  |  |  555|     17|  L_##rb:;\
  |  |  556|     17|  }
  ------------------
 1767|     17|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|     17|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1767:17): [True: 0, False: 17]
  ------------------
 1768|     17|            Feptr--;
  ------------------
  |  |  182|     17|#define Feptr              F->eptr
  ------------------
 1769|     17|            }
 1770|     17|          }
 1771|    117|        }
 1772|    117|      }
 1773|       |
 1774|       |    /* Caseful comparisons */
 1775|       |
 1776|    183|    else
 1777|    183|      {
 1778|    183|#ifdef SUPPORT_UNICODE
 1779|    183|      if (utf)
  ------------------
  |  Branch (1779:11): [True: 48, False: 135]
  ------------------
 1780|     48|        {
 1781|     48|        uint32_t d;
 1782|     96|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1537|     96|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1782:21): [True: 48, False: 48]
  ------------------
 1783|     48|          {
 1784|     48|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     48|#define Feptr              F->eptr
  ------------------
  |  Branch (1784:15): [True: 0, False: 48]
  ------------------
 1785|      0|            {
 1786|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1787|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1788|      0|            }
 1789|     48|          GETCHARINC(d, Feptr);
  ------------------
  |  |  316|     48|  c = *eptr++; \
  |  |  317|     48|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      4|    { \
  |  |  |  |  307|      4|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 2, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      4|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      4|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      2|      { \
  |  |  |  |  316|      2|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      2|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      2|      eptr += 3; \
  |  |  |  |  319|      2|      } \
  |  |  |  |  320|      2|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      4|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 4, False: 44]
  |  |  ------------------
  ------------------
 1790|     48|          if (Lc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|     48|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1790:15): [True: 0, False: 48]
  ------------------
 1791|     48|          }
 1792|     48|        }
 1793|    135|      else
 1794|    135|#endif
 1795|       |      /* Not UTF mode */
 1796|    135|        {
 1797|    135|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1537|    135|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (1797:21): [True: 0, False: 135]
  ------------------
 1798|      0|          {
 1799|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (1799:15): [True: 0, False: 0]
  ------------------
 1800|      0|            {
 1801|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1802|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1803|      0|            }
 1804|      0|          if (Lc == *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|      0|#define Lc           F->temp_32[2]
  ------------------
                        if (Lc == *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Lc == *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1804:15): [True: 0, False: 0]
  ------------------
 1805|      0|          }
 1806|    135|        }
 1807|       |
 1808|    183|      if (Lmin == Lmax) continue;
  ------------------
  |  | 1537|    183|#define Lmin         F->temp_32[0]
  ------------------
                    if (Lmin == Lmax) continue;
  ------------------
  |  | 1538|    183|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1808:11): [True: 0, False: 183]
  ------------------
 1809|       |
 1810|    183|      if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (1810:11): [True: 0, False: 183]
  ------------------
 1811|      0|        {
 1812|      0|#ifdef SUPPORT_UNICODE
 1813|      0|        if (utf)
  ------------------
  |  Branch (1813:13): [True: 0, False: 0]
  ------------------
 1814|      0|          {
 1815|      0|          uint32_t d;
 1816|      0|          for (;;)
 1817|      0|            {
 1818|      0|            RMATCH(Fecode, RM206);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 1819|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1819:17): [True: 0, False: 0]
  ------------------
 1820|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1820:17): [True: 0, False: 0]
  ------------------
 1821|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (1821:17): [True: 0, False: 0]
  ------------------
 1822|      0|              {
 1823|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1824|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1825|      0|              }
 1826|      0|            GETCHARINC(d, Feptr);
  ------------------
  |  |  316|      0|  c = *eptr++; \
  |  |  317|      0|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1827|      0|            if (Lc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|      0|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == d) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1827:17): [True: 0, False: 0]
  ------------------
 1828|      0|            }
 1829|      0|          }
 1830|      0|        else
 1831|      0|#endif
 1832|       |        /* Not UTF mode */
 1833|      0|          {
 1834|      0|          for (;;)
 1835|      0|            {
 1836|      0|            RMATCH(Fecode, RM31);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 1837|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1837:17): [True: 0, False: 0]
  ------------------
 1838|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1537|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1538|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1838:17): [True: 0, False: 0]
  ------------------
 1839|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (1839:17): [True: 0, False: 0]
  ------------------
 1840|      0|              {
 1841|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1842|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1843|      0|              }
 1844|      0|            if (Lc == *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1539|      0|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Lc == *Feptr++) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1844:17): [True: 0, False: 0]
  ------------------
 1845|      0|            }
 1846|      0|          }
 1847|       |        /* Control never gets here */
 1848|      0|        }
 1849|       |
 1850|       |      /* Maximize case */
 1851|       |
 1852|    183|      else
 1853|    183|        {
 1854|    183|        Lstart_eptr = Feptr;
  ------------------
  |  | 1536|    183|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                      Lstart_eptr = Feptr;
  ------------------
  |  |  182|    183|#define Feptr              F->eptr
  ------------------
 1855|       |
 1856|    183|#ifdef SUPPORT_UNICODE
 1857|    183|        if (utf)
  ------------------
  |  Branch (1857:13): [True: 48, False: 135]
  ------------------
 1858|     48|          {
 1859|     48|          uint32_t d;
 1860|  1.51k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1537|     48|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1538|  1.51k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1860:26): [True: 1.51k, False: 0]
  ------------------
 1861|  1.51k|            {
 1862|  1.51k|            int len = 1;
 1863|  1.51k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.51k|#define Feptr              F->eptr
  ------------------
  |  Branch (1863:17): [True: 48, False: 1.46k]
  ------------------
 1864|     48|              {
 1865|     48|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     48|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 48]
  |  |  ------------------
  |  |  539|     48|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     48|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1866|     48|              break;
 1867|     48|              }
 1868|  1.46k|            GETCHARLEN(d, Feptr, len);
  ------------------
  |  |  330|  1.46k|  c = *eptr; \
  |  |  331|  1.46k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|    142|    { \
  |  |  |  |  341|    142|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 51, False: 91]
  |  |  |  |  ------------------
  |  |  |  |  342|    142|      { \
  |  |  |  |  343|     51|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|     51|      len++; \
  |  |  |  |  345|     51|      } \
  |  |  |  |  346|    142|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 91]
  |  |  |  |  ------------------
  |  |  |  |  347|     91|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|     91|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 91, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|     91|      {\
  |  |  |  |  353|     91|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|     91|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|     91|      len += 3; \
  |  |  |  |  356|     91|      } \
  |  |  |  |  357|     91|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|    142|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 142, False: 1.32k]
  |  |  ------------------
  ------------------
 1869|  1.46k|            if (Lc == d) break;
  ------------------
  |  | 1539|  1.46k|#define Lc           F->temp_32[2]
  ------------------
  |  Branch (1869:17): [True: 0, False: 1.46k]
  ------------------
 1870|  1.46k|            Feptr += len;
  ------------------
  |  |  182|  1.46k|#define Feptr              F->eptr
  ------------------
 1871|  1.46k|            }
 1872|       |
 1873|       |          /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 1874|       |          Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
 1875|       |          go too far. */
 1876|       |
 1877|     48|          if (reptype != REPTYPE_POS) for(;;)
  ------------------
  |  Branch (1877:15): [True: 48, False: 0]
  ------------------
 1878|  1.51k|            {
 1879|  1.51k|            if (Feptr <= Lstart_eptr) break;
  ------------------
  |  |  182|  1.51k|#define Feptr              F->eptr
  ------------------
                          if (Feptr <= Lstart_eptr) break;
  ------------------
  |  | 1536|  1.51k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1879:17): [True: 48, False: 1.46k]
  ------------------
 1880|  1.46k|            RMATCH(Fecode, RM207);
  ------------------
  |  |  551|  1.46k|  {\
  |  |  552|  1.46k|  start_ecode = ra;\
  |  |  553|  1.46k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  1.46k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  1.46k|  goto MATCH_RECURSE;\
  |  |  555|  1.46k|  L_##rb:;\
  |  |  556|  1.46k|  }
  ------------------
 1881|  1.46k|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  1.46k|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1881:17): [True: 0, False: 1.46k]
  ------------------
 1882|  1.46k|            Feptr--;
  ------------------
  |  |  182|  1.46k|#define Feptr              F->eptr
  ------------------
 1883|  1.46k|            BACKCHAR(Feptr);
  ------------------
  |  |  345|  1.78k|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 324, False: 1.46k]
  |  |  ------------------
  ------------------
 1884|  1.46k|            }
 1885|     48|          }
 1886|    135|        else
 1887|    135|#endif
 1888|       |        /* Not UTF mode */
 1889|    135|          {
 1890|  7.12k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1537|    135|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1538|  7.12k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (1890:26): [True: 7.12k, False: 0]
  ------------------
 1891|  7.12k|            {
 1892|  7.12k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  7.12k|#define Feptr              F->eptr
  ------------------
  |  Branch (1892:17): [True: 130, False: 6.99k]
  ------------------
 1893|    130|              {
 1894|    130|              SCHECK_PARTIAL();
  ------------------
  |  |  538|    130|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 130]
  |  |  ------------------
  |  |  539|    130|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    130|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1895|    130|              break;
 1896|    130|              }
 1897|  6.99k|            if (Lc == *Feptr) break;
  ------------------
  |  | 1539|  6.99k|#define Lc           F->temp_32[2]
  ------------------
                          if (Lc == *Feptr) break;
  ------------------
  |  |  182|  6.99k|#define Feptr              F->eptr
  ------------------
  |  Branch (1897:17): [True: 5, False: 6.99k]
  ------------------
 1898|  6.99k|            Feptr++;
  ------------------
  |  |  182|  6.99k|#define Feptr              F->eptr
  ------------------
 1899|  6.99k|            }
 1900|    135|          if (reptype != REPTYPE_POS) for (;;)
  ------------------
  |  Branch (1900:15): [True: 135, False: 0]
  ------------------
 1901|  7.12k|            {
 1902|  7.12k|            if (Feptr == Lstart_eptr) break;
  ------------------
  |  |  182|  7.12k|#define Feptr              F->eptr
  ------------------
                          if (Feptr == Lstart_eptr) break;
  ------------------
  |  | 1536|  7.12k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (1902:17): [True: 135, False: 6.99k]
  ------------------
 1903|  6.99k|            RMATCH(Fecode, RM32);
  ------------------
  |  |  551|  6.99k|  {\
  |  |  552|  6.99k|  start_ecode = ra;\
  |  |  553|  6.99k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  6.99k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  6.99k|  goto MATCH_RECURSE;\
  |  |  555|  6.99k|  L_##rb:;\
  |  |  556|  6.99k|  }
  ------------------
 1904|  6.99k|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  6.99k|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1904:17): [True: 0, False: 6.99k]
  ------------------
 1905|  6.99k|            Feptr--;
  ------------------
  |  |  182|  6.99k|#define Feptr              F->eptr
  ------------------
 1906|  6.99k|            }
 1907|    135|          }
 1908|    183|        }
 1909|    183|      }
 1910|    300|    break;
 1911|       |
 1912|    300|#undef Lstart_eptr
 1913|    300|#undef Lmin
 1914|    300|#undef Lmax
 1915|    300|#undef Lc
 1916|    300|#undef Loc
 1917|       |
 1918|       |
 1919|       |    /* ===================================================================== */
 1920|       |    /* Match a bit-mapped character class, possibly repeatedly. These opcodes
 1921|       |    are used when all the characters in the class have values in the range
 1922|       |    0-255, and either the matching is caseful, or the characters are in the
 1923|       |    range 0-127 when UTF processing is enabled. The only difference between
 1924|       |    OP_CLASS and OP_NCLASS occurs when a data character outside the range is
 1925|       |    encountered. */
 1926|       |
 1927|    300|#define Lmin               F->temp_32[0]
 1928|    300|#define Lmax               F->temp_32[1]
 1929|    300|#define Lstart_eptr        F->temp_sptr[0]
 1930|    300|#define Lbyte_map_address  F->temp_sptr[1]
 1931|    300|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
 1932|       |
 1933|    537|    case OP_NCLASS:
  ------------------
  |  Branch (1933:5): [True: 537, False: 28.4M]
  ------------------
 1934|    831|    case OP_CLASS:
  ------------------
  |  Branch (1934:5): [True: 294, False: 28.4M]
  ------------------
 1935|    831|      {
 1936|    831|      Lbyte_map_address = Fecode + 1;           /* Save for matching */
  ------------------
  |  | 1930|    831|#define Lbyte_map_address  F->temp_sptr[1]
  ------------------
                    Lbyte_map_address = Fecode + 1;           /* Save for matching */
  ------------------
  |  |  181|    831|#define Fecode             F->ecode
  ------------------
 1937|    831|      Fecode += 1 + (32 / sizeof(PCRE2_UCHAR)); /* Advance past the item */
  ------------------
  |  |  181|    831|#define Fecode             F->ecode
  ------------------
 1938|       |
 1939|       |      /* Look past the end of the item to see if there is repeat information
 1940|       |      following. Then obey similar code to character type repeats. */
 1941|       |
 1942|    831|      switch (*Fecode)
  ------------------
  |  |  181|    831|#define Fecode             F->ecode
  ------------------
 1943|    831|        {
 1944|     95|        case OP_CRSTAR:
  ------------------
  |  Branch (1944:9): [True: 95, False: 736]
  ------------------
 1945|    215|        case OP_CRMINSTAR:
  ------------------
  |  Branch (1945:9): [True: 120, False: 711]
  ------------------
 1946|    215|        case OP_CRPLUS:
  ------------------
  |  Branch (1946:9): [True: 0, False: 831]
  ------------------
 1947|    292|        case OP_CRMINPLUS:
  ------------------
  |  Branch (1947:9): [True: 77, False: 754]
  ------------------
 1948|    448|        case OP_CRQUERY:
  ------------------
  |  Branch (1948:9): [True: 156, False: 675]
  ------------------
 1949|    488|        case OP_CRMINQUERY:
  ------------------
  |  Branch (1949:9): [True: 40, False: 791]
  ------------------
 1950|    547|        case OP_CRPOSSTAR:
  ------------------
  |  Branch (1950:9): [True: 59, False: 772]
  ------------------
 1951|    620|        case OP_CRPOSPLUS:
  ------------------
  |  Branch (1951:9): [True: 73, False: 758]
  ------------------
 1952|    620|        case OP_CRPOSQUERY:
  ------------------
  |  Branch (1952:9): [True: 0, False: 831]
  ------------------
 1953|    620|        fc = *Fecode++ - OP_CRSTAR;
  ------------------
  |  |  181|    620|#define Fecode             F->ecode
  ------------------
 1954|    620|        Lmin = rep_min[fc];
  ------------------
  |  | 1927|    620|#define Lmin               F->temp_32[0]
  ------------------
 1955|    620|        Lmax = rep_max[fc];
  ------------------
  |  | 1928|    620|#define Lmax               F->temp_32[1]
  ------------------
 1956|    620|        reptype = rep_typ[fc];
 1957|    620|        break;
 1958|       |
 1959|      0|        case OP_CRRANGE:
  ------------------
  |  Branch (1959:9): [True: 0, False: 831]
  ------------------
 1960|      0|        case OP_CRMINRANGE:
  ------------------
  |  Branch (1960:9): [True: 0, False: 831]
  ------------------
 1961|      0|        case OP_CRPOSRANGE:
  ------------------
  |  Branch (1961:9): [True: 0, False: 831]
  ------------------
 1962|      0|        Lmin = GET2(Fecode, 1);
  ------------------
  |  | 1927|      0|#define Lmin               F->temp_32[0]
  ------------------
                      Lmin = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1963|      0|        Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  | 1928|      0|#define Lmax               F->temp_32[1]
  ------------------
                      Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1964|      0|        if (Lmax == 0) Lmax = UINT32_MAX;       /* Max 0 => infinity */
  ------------------
  |  | 1928|      0|#define Lmax               F->temp_32[1]
  ------------------
                      if (Lmax == 0) Lmax = UINT32_MAX;       /* Max 0 => infinity */
  ------------------
  |  | 1928|      0|#define Lmax               F->temp_32[1]
  ------------------
  |  Branch (1964:13): [True: 0, False: 0]
  ------------------
 1965|      0|        reptype = rep_typ[*Fecode - OP_CRSTAR];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 1966|      0|        Fecode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      Fecode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1967|      0|        break;
 1968|       |
 1969|    211|        default:               /* No repeat follows */
  ------------------
  |  Branch (1969:9): [True: 211, False: 620]
  ------------------
 1970|    211|        Lmin = Lmax = 1;
  ------------------
  |  | 1927|    211|#define Lmin               F->temp_32[0]
  ------------------
                      Lmin = Lmax = 1;
  ------------------
  |  | 1928|    211|#define Lmax               F->temp_32[1]
  ------------------
 1971|    211|        break;
 1972|    831|        }
 1973|       |
 1974|       |      /* First, ensure the minimum number of matches are present. */
 1975|       |
 1976|    831|#ifdef SUPPORT_UNICODE
 1977|    831|      if (utf)
  ------------------
  |  Branch (1977:11): [True: 374, False: 457]
  ------------------
 1978|    374|        {
 1979|    642|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1927|    642|#define Lmin               F->temp_32[0]
  ------------------
  |  Branch (1979:21): [True: 343, False: 299]
  ------------------
 1980|    343|          {
 1981|    343|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    343|#define Feptr              F->eptr
  ------------------
  |  Branch (1981:15): [True: 0, False: 343]
  ------------------
 1982|      0|            {
 1983|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 1984|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 1985|      0|            }
 1986|    343|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|    343|  c = *eptr++; \
  |  |  317|    343|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      4|    { \
  |  |  |  |  307|      4|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 2, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      4|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      4|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      1|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      1|      eptr += 2; \
  |  |  |  |  313|      1|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      1|      { \
  |  |  |  |  316|      1|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      1|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      1|      eptr += 3; \
  |  |  |  |  319|      1|      } \
  |  |  |  |  320|      1|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      4|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 4, False: 339]
  |  |  ------------------
  ------------------
 1987|    343|          if (fc > 255)
  ------------------
  |  Branch (1987:15): [True: 4, False: 339]
  ------------------
 1988|      4|            {
 1989|      4|            if (Fop == OP_CLASS) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  191|      4|#define Fop                F->op
  ------------------
                          if (Fop == OP_CLASS) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (1989:17): [True: 0, False: 4]
  ------------------
 1990|      4|            }
 1991|    339|          else
 1992|    339|            if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1931|    339|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
  |  |  ------------------
  |  |  |  | 1930|    339|#define Lbyte_map_address  F->temp_sptr[1]
  |  |  ------------------
  ------------------
                          if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     75|  {\
  |  |  560|     75|  rrc = ra;\
  |  |  561|     75|  goto RETURN_SWITCH;\
  |  |  562|     75|  }
  ------------------
  |  Branch (1992:17): [True: 75, False: 264]
  ------------------
 1993|    268|          }
 1994|    374|        }
 1995|    457|      else
 1996|    457|#endif
 1997|       |      /* Not UTF mode */
 1998|    457|        {
 1999|    470|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 1927|    470|#define Lmin               F->temp_32[0]
  ------------------
  |  Branch (1999:21): [True: 18, False: 452]
  ------------------
 2000|     18|          {
 2001|     18|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     18|#define Feptr              F->eptr
  ------------------
  |  Branch (2001:15): [True: 0, False: 18]
  ------------------
 2002|      0|            {
 2003|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2004|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2005|      0|            }
 2006|     18|          fc = *Feptr++;
  ------------------
  |  |  182|     18|#define Feptr              F->eptr
  ------------------
 2007|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 2008|       |          if (fc > 255)
 2009|       |            {
 2010|       |            if (Fop == OP_CLASS) RRETURN(MATCH_NOMATCH);
 2011|       |            }
 2012|       |          else
 2013|       |#endif
 2014|     18|          if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1931|     18|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
  |  |  ------------------
  |  |  |  | 1930|     18|#define Lbyte_map_address  F->temp_sptr[1]
  |  |  ------------------
  ------------------
                        if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      5|  {\
  |  |  560|      5|  rrc = ra;\
  |  |  561|      5|  goto RETURN_SWITCH;\
  |  |  562|      5|  }
  ------------------
  |  Branch (2014:15): [True: 5, False: 13]
  ------------------
 2015|     13|          }
 2016|    457|        }
 2017|       |
 2018|       |      /* If Lmax == Lmin we are done. Continue with main loop. */
 2019|       |
 2020|    751|      if (Lmin == Lmax) continue;
  ------------------
  |  | 1927|    751|#define Lmin               F->temp_32[0]
  ------------------
                    if (Lmin == Lmax) continue;
  ------------------
  |  | 1928|    751|#define Lmax               F->temp_32[1]
  ------------------
  |  Branch (2020:11): [True: 204, False: 547]
  ------------------
 2021|       |
 2022|       |      /* If minimizing, keep testing the rest of the expression and advancing
 2023|       |      the pointer while it matches the class. */
 2024|       |
 2025|    547|      if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (2025:11): [True: 237, False: 310]
  ------------------
 2026|    237|        {
 2027|    237|#ifdef SUPPORT_UNICODE
 2028|    237|        if (utf)
  ------------------
  |  Branch (2028:13): [True: 93, False: 144]
  ------------------
 2029|     93|          {
 2030|     93|          for (;;)
 2031|    727|            {
 2032|    727|            RMATCH(Fecode, RM200);
  ------------------
  |  |  551|    727|  {\
  |  |  552|    727|  start_ecode = ra;\
  |  |  553|    727|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|    727|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|    727|  goto MATCH_RECURSE;\
  |  |  555|    727|  L_##rb:;\
  |  |  556|    727|  }
  ------------------
 2033|    727|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|    727|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2033:17): [True: 0, False: 727]
  ------------------
 2034|    727|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1927|    727|#define Lmin               F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1928|    727|#define Lmax               F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
  |  Branch (2034:17): [True: 1, False: 726]
  ------------------
 2035|    726|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    726|#define Feptr              F->eptr
  ------------------
  |  Branch (2035:17): [True: 2, False: 724]
  ------------------
 2036|      2|              {
 2037|      2|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      2|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  539|      2|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      2|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2038|      2|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      2|  {\
  |  |  560|      2|  rrc = ra;\
  |  |  561|      2|  goto RETURN_SWITCH;\
  |  |  562|      2|  }
  ------------------
 2039|      0|              }
 2040|    724|            GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|    724|  c = *eptr++; \
  |  |  317|    724|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     10|    { \
  |  |  |  |  307|     10|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 1, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  308|     10|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     10|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  310|      9|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      9|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      9|      { \
  |  |  |  |  316|      9|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      9|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      9|      eptr += 3; \
  |  |  |  |  319|      9|      } \
  |  |  |  |  320|      9|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     10|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 10, False: 714]
  |  |  ------------------
  ------------------
 2041|    724|            if (fc > 255)
  ------------------
  |  Branch (2041:17): [True: 10, False: 714]
  ------------------
 2042|     10|              {
 2043|     10|              if (Fop == OP_CLASS) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  191|     10|#define Fop                F->op
  ------------------
                            if (Fop == OP_CLASS) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
  |  Branch (2043:19): [True: 1, False: 9]
  ------------------
 2044|      9|              }
 2045|    714|            else
 2046|    714|              if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1931|    714|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
  |  |  ------------------
  |  |  |  | 1930|    714|#define Lbyte_map_address  F->temp_sptr[1]
  |  |  ------------------
  ------------------
                            if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     89|  {\
  |  |  560|     89|  rrc = ra;\
  |  |  561|     89|  goto RETURN_SWITCH;\
  |  |  562|     89|  }
  ------------------
  |  Branch (2046:19): [True: 89, False: 625]
  ------------------
 2047|    634|            }
 2048|     93|          }
 2049|    144|        else
 2050|    144|#endif
 2051|       |        /* Not UTF mode */
 2052|    144|          {
 2053|    144|          for (;;)
 2054|    772|            {
 2055|    772|            RMATCH(Fecode, RM23);
  ------------------
  |  |  551|    772|  {\
  |  |  552|    772|  start_ecode = ra;\
  |  |  553|    772|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|    772|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|    772|  goto MATCH_RECURSE;\
  |  |  555|    772|  L_##rb:;\
  |  |  556|    772|  }
  ------------------
 2056|    772|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|    772|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2056:17): [True: 0, False: 772]
  ------------------
 2057|    772|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1927|    772|#define Lmin               F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1928|    772|#define Lmax               F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      5|  {\
  |  |  560|      5|  rrc = ra;\
  |  |  561|      5|  goto RETURN_SWITCH;\
  |  |  562|      5|  }
  ------------------
  |  Branch (2057:17): [True: 5, False: 767]
  ------------------
 2058|    767|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    767|#define Feptr              F->eptr
  ------------------
  |  Branch (2058:17): [True: 14, False: 753]
  ------------------
 2059|     14|              {
 2060|     14|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     14|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 14]
  |  |  ------------------
  |  |  539|     14|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     14|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2061|     14|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     14|  {\
  |  |  560|     14|  rrc = ra;\
  |  |  561|     14|  goto RETURN_SWITCH;\
  |  |  562|     14|  }
  ------------------
 2062|      0|              }
 2063|    753|            fc = *Feptr++;
  ------------------
  |  |  182|    753|#define Feptr              F->eptr
  ------------------
 2064|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 2065|       |            if (fc > 255)
 2066|       |              {
 2067|       |              if (Fop == OP_CLASS) RRETURN(MATCH_NOMATCH);
 2068|       |              }
 2069|       |            else
 2070|       |#endif
 2071|    753|            if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 1931|    753|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
  |  |  ------------------
  |  |  |  | 1930|    753|#define Lbyte_map_address  F->temp_sptr[1]
  |  |  ------------------
  ------------------
                          if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    125|  {\
  |  |  560|    125|  rrc = ra;\
  |  |  561|    125|  goto RETURN_SWITCH;\
  |  |  562|    125|  }
  ------------------
  |  Branch (2071:17): [True: 125, False: 628]
  ------------------
 2072|    628|            }
 2073|    144|          }
 2074|       |        /* Control never gets here */
 2075|    237|        }
 2076|       |
 2077|       |      /* If maximizing, find the longest possible run, then work backwards. */
 2078|       |
 2079|    310|      else
 2080|    310|        {
 2081|    310|        Lstart_eptr = Feptr;
  ------------------
  |  | 1929|    310|#define Lstart_eptr        F->temp_sptr[0]
  ------------------
                      Lstart_eptr = Feptr;
  ------------------
  |  |  182|    310|#define Feptr              F->eptr
  ------------------
 2082|       |
 2083|    310|#ifdef SUPPORT_UNICODE
 2084|    310|        if (utf)
  ------------------
  |  Branch (2084:13): [True: 15, False: 295]
  ------------------
 2085|     15|          {
 2086|     43|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1927|     15|#define Lmin               F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1928|     43|#define Lmax               F->temp_32[1]
  ------------------
  |  Branch (2086:26): [True: 43, False: 0]
  ------------------
 2087|     43|            {
 2088|     43|            int len = 1;
 2089|     43|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     43|#define Feptr              F->eptr
  ------------------
  |  Branch (2089:17): [True: 5, False: 38]
  ------------------
 2090|      5|              {
 2091|      5|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      5|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 5]
  |  |  ------------------
  |  |  539|      5|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      5|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2092|      5|              break;
 2093|      5|              }
 2094|     38|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|     38|  c = *eptr; \
  |  |  331|     38|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      5|    { \
  |  |  |  |  341|      5|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 2, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  342|      5|      { \
  |  |  |  |  343|      2|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      2|      len++; \
  |  |  |  |  345|      2|      } \
  |  |  |  |  346|      5|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      3|      { \
  |  |  |  |  348|      3|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      3|      len += 2; \
  |  |  |  |  350|      3|      } \
  |  |  |  |  351|      3|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      5|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 5, False: 33]
  |  |  ------------------
  ------------------
 2095|     38|            if (fc > 255)
  ------------------
  |  Branch (2095:17): [True: 5, False: 33]
  ------------------
 2096|      5|              {
 2097|      5|              if (Fop == OP_CLASS) break;
  ------------------
  |  |  191|      5|#define Fop                F->op
  ------------------
  |  Branch (2097:19): [True: 0, False: 5]
  ------------------
 2098|      5|              }
 2099|     33|            else
 2100|     33|              if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) break;
  ------------------
  |  | 1931|     33|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
  |  |  ------------------
  |  |  |  | 1930|     33|#define Lbyte_map_address  F->temp_sptr[1]
  |  |  ------------------
  ------------------
  |  Branch (2100:19): [True: 10, False: 23]
  ------------------
 2101|     28|            Feptr += len;
  ------------------
  |  |  182|     28|#define Feptr              F->eptr
  ------------------
 2102|     28|            }
 2103|       |
 2104|     15|          if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (2104:15): [True: 10, False: 5]
  ------------------
 2105|       |
 2106|       |          /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 2107|       |          Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
 2108|       |          go too far. */
 2109|       |
 2110|      5|          for (;;)
 2111|     12|            {
 2112|     12|            RMATCH(Fecode, RM201);
  ------------------
  |  |  551|     12|  {\
  |  |  552|     12|  start_ecode = ra;\
  |  |  553|     12|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|     12|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|     12|  goto MATCH_RECURSE;\
  |  |  555|     12|  L_##rb:;\
  |  |  556|     12|  }
  ------------------
 2113|     12|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|     12|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2113:17): [True: 0, False: 12]
  ------------------
 2114|     12|            if (Feptr-- <= Lstart_eptr) break;  /* Tried at original position */
  ------------------
  |  |  182|     12|#define Feptr              F->eptr
  ------------------
                          if (Feptr-- <= Lstart_eptr) break;  /* Tried at original position */
  ------------------
  |  | 1929|     12|#define Lstart_eptr        F->temp_sptr[0]
  ------------------
  |  Branch (2114:17): [True: 5, False: 7]
  ------------------
 2115|      7|            BACKCHAR(Feptr);
  ------------------
  |  |  345|      9|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 2, False: 7]
  |  |  ------------------
  ------------------
 2116|      7|            }
 2117|      5|          }
 2118|    295|        else
 2119|    295|#endif
 2120|       |          /* Not UTF mode */
 2121|    295|          {
 2122|  1.66k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1927|    295|#define Lmin               F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 1928|  1.66k|#define Lmax               F->temp_32[1]
  ------------------
  |  Branch (2122:26): [True: 1.65k, False: 11]
  ------------------
 2123|  1.65k|            {
 2124|  1.65k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.65k|#define Feptr              F->eptr
  ------------------
  |  Branch (2124:17): [True: 49, False: 1.60k]
  ------------------
 2125|     49|              {
 2126|     49|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     49|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 49]
  |  |  ------------------
  |  |  539|     49|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     49|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2127|     49|              break;
 2128|     49|              }
 2129|  1.60k|            fc = *Feptr;
  ------------------
  |  |  182|  1.60k|#define Feptr              F->eptr
  ------------------
 2130|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 2131|       |            if (fc > 255)
 2132|       |              {
 2133|       |              if (Fop == OP_CLASS) break;
 2134|       |              }
 2135|       |            else
 2136|       |#endif
 2137|  1.60k|            if ((Lbyte_map[fc/8] & (1u << (fc&7))) == 0) break;
  ------------------
  |  | 1931|  1.60k|#define Lbyte_map          ((unsigned char *)Lbyte_map_address)
  |  |  ------------------
  |  |  |  | 1930|  1.60k|#define Lbyte_map_address  F->temp_sptr[1]
  |  |  ------------------
  ------------------
  |  Branch (2137:17): [True: 235, False: 1.37k]
  ------------------
 2138|  1.37k|            Feptr++;
  ------------------
  |  |  182|  1.37k|#define Feptr              F->eptr
  ------------------
 2139|  1.37k|            }
 2140|       |
 2141|    295|          if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (2141:15): [True: 49, False: 246]
  ------------------
 2142|       |
 2143|    813|          while (Feptr >= Lstart_eptr)
  ------------------
  |  |  182|    813|#define Feptr              F->eptr
  ------------------
                        while (Feptr >= Lstart_eptr)
  ------------------
  |  | 1929|    813|#define Lstart_eptr        F->temp_sptr[0]
  ------------------
  |  Branch (2143:18): [True: 567, False: 246]
  ------------------
 2144|    567|            {
 2145|    567|            RMATCH(Fecode, RM24);
  ------------------
  |  |  551|    567|  {\
  |  |  552|    567|  start_ecode = ra;\
  |  |  553|    567|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|    567|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|    567|  goto MATCH_RECURSE;\
  |  |  555|    567|  L_##rb:;\
  |  |  556|    567|  }
  ------------------
 2146|    567|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|    567|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2146:17): [True: 0, False: 567]
  ------------------
 2147|    567|            Feptr--;
  ------------------
  |  |  182|    567|#define Feptr              F->eptr
  ------------------
 2148|    567|            }
 2149|    246|          }
 2150|       |
 2151|    310|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    251|  {\
  |  |  560|    251|  rrc = ra;\
  |  |  561|    251|  goto RETURN_SWITCH;\
  |  |  562|    251|  }
  ------------------
 2152|      0|        }
 2153|    547|      }
 2154|       |    /* Control never gets here */
 2155|       |
 2156|      0|#undef Lbyte_map_address
 2157|      0|#undef Lbyte_map
 2158|      0|#undef Lstart_eptr
 2159|      0|#undef Lmin
 2160|      0|#undef Lmax
 2161|       |
 2162|       |
 2163|       |    /* ===================================================================== */
 2164|       |    /* Match an extended character class. In the 8-bit library, this opcode is
 2165|       |    encountered only when UTF-8 mode mode is supported. In the 16-bit and
 2166|       |    32-bit libraries, codepoints greater than 255 may be encountered even when
 2167|       |    UTF is not supported. */
 2168|       |
 2169|      0|#define Lstart_eptr  F->temp_sptr[0]
 2170|      0|#define Lxclass_data F->temp_sptr[1]
 2171|      0|#define Lmin         F->temp_32[0]
 2172|      0|#define Lmax         F->temp_32[1]
 2173|       |
 2174|      0|#ifdef SUPPORT_WIDE_CHARS
 2175|    764|    case OP_XCLASS:
  ------------------
  |  Branch (2175:5): [True: 764, False: 28.4M]
  ------------------
 2176|    764|      {
 2177|    764|      Lxclass_data = Fecode + 1 + LINK_SIZE;  /* Save for matching */
  ------------------
  |  | 2170|    764|#define Lxclass_data F->temp_sptr[1]
  ------------------
                    Lxclass_data = Fecode + 1 + LINK_SIZE;  /* Save for matching */
  ------------------
  |  |  181|    764|#define Fecode             F->ecode
  ------------------
                    Lxclass_data = Fecode + 1 + LINK_SIZE;  /* Save for matching */
  ------------------
  |  |   98|    764|#define LINK_SIZE 2
  ------------------
 2178|    764|      Fecode += GET(Fecode, 1);               /* Advance past the item */
  ------------------
  |  |  181|    764|#define Fecode             F->ecode
  ------------------
                    Fecode += GET(Fecode, 1);               /* Advance past the item */
  ------------------
  |  |  109|    764|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 2179|       |
 2180|    764|      switch (*Fecode)
  ------------------
  |  |  181|    764|#define Fecode             F->ecode
  ------------------
 2181|    764|        {
 2182|      0|        case OP_CRSTAR:
  ------------------
  |  Branch (2182:9): [True: 0, False: 764]
  ------------------
 2183|      0|        case OP_CRMINSTAR:
  ------------------
  |  Branch (2183:9): [True: 0, False: 764]
  ------------------
 2184|    124|        case OP_CRPLUS:
  ------------------
  |  Branch (2184:9): [True: 124, False: 640]
  ------------------
 2185|    149|        case OP_CRMINPLUS:
  ------------------
  |  Branch (2185:9): [True: 25, False: 739]
  ------------------
 2186|    149|        case OP_CRQUERY:
  ------------------
  |  Branch (2186:9): [True: 0, False: 764]
  ------------------
 2187|    200|        case OP_CRMINQUERY:
  ------------------
  |  Branch (2187:9): [True: 51, False: 713]
  ------------------
 2188|    200|        case OP_CRPOSSTAR:
  ------------------
  |  Branch (2188:9): [True: 0, False: 764]
  ------------------
 2189|    254|        case OP_CRPOSPLUS:
  ------------------
  |  Branch (2189:9): [True: 54, False: 710]
  ------------------
 2190|    254|        case OP_CRPOSQUERY:
  ------------------
  |  Branch (2190:9): [True: 0, False: 764]
  ------------------
 2191|    254|        fc = *Fecode++ - OP_CRSTAR;
  ------------------
  |  |  181|    254|#define Fecode             F->ecode
  ------------------
 2192|    254|        Lmin = rep_min[fc];
  ------------------
  |  | 2171|    254|#define Lmin         F->temp_32[0]
  ------------------
 2193|    254|        Lmax = rep_max[fc];
  ------------------
  |  | 2172|    254|#define Lmax         F->temp_32[1]
  ------------------
 2194|    254|        reptype = rep_typ[fc];
 2195|    254|        break;
 2196|       |
 2197|      0|        case OP_CRRANGE:
  ------------------
  |  Branch (2197:9): [True: 0, False: 764]
  ------------------
 2198|      0|        case OP_CRMINRANGE:
  ------------------
  |  Branch (2198:9): [True: 0, False: 764]
  ------------------
 2199|      0|        case OP_CRPOSRANGE:
  ------------------
  |  Branch (2199:9): [True: 0, False: 764]
  ------------------
 2200|      0|        Lmin = GET2(Fecode, 1);
  ------------------
  |  | 2171|      0|#define Lmin         F->temp_32[0]
  ------------------
                      Lmin = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 2201|      0|        Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  | 2172|      0|#define Lmax         F->temp_32[1]
  ------------------
                      Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 2202|      0|        if (Lmax == 0) Lmax = UINT32_MAX;  /* Max 0 => infinity */
  ------------------
  |  | 2172|      0|#define Lmax         F->temp_32[1]
  ------------------
                      if (Lmax == 0) Lmax = UINT32_MAX;  /* Max 0 => infinity */
  ------------------
  |  | 2172|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (2202:13): [True: 0, False: 0]
  ------------------
 2203|      0|        reptype = rep_typ[*Fecode - OP_CRSTAR];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 2204|      0|        Fecode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      Fecode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 2205|      0|        break;
 2206|       |
 2207|    510|        default:               /* No repeat follows */
  ------------------
  |  Branch (2207:9): [True: 510, False: 254]
  ------------------
 2208|    510|        Lmin = Lmax = 1;
  ------------------
  |  | 2171|    510|#define Lmin         F->temp_32[0]
  ------------------
                      Lmin = Lmax = 1;
  ------------------
  |  | 2172|    510|#define Lmax         F->temp_32[1]
  ------------------
 2209|    510|        break;
 2210|    764|        }
 2211|       |
 2212|       |      /* First, ensure the minimum number of matches are present. */
 2213|       |
 2214|  1.03k|      for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2171|  1.03k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2214:19): [True: 713, False: 324]
  ------------------
 2215|    713|        {
 2216|    713|        if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    713|#define Feptr              F->eptr
  ------------------
  |  Branch (2216:13): [True: 25, False: 688]
  ------------------
 2217|     25|          {
 2218|     25|          SCHECK_PARTIAL();
  ------------------
  |  |  538|     25|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 25]
  |  |  ------------------
  |  |  539|     25|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     25|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2219|     25|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     25|  {\
  |  |  560|     25|  rrc = ra;\
  |  |  561|     25|  goto RETURN_SWITCH;\
  |  |  562|     25|  }
  ------------------
 2220|      0|          }
 2221|    688|        GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    688|  c = *eptr++; \
  |  |  324|    688|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     42|    { \
  |  |  |  |  307|     42|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 15, False: 27]
  |  |  |  |  ------------------
  |  |  |  |  308|     42|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     42|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 27]
  |  |  |  |  ------------------
  |  |  |  |  310|     27|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|     27|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 27, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|     27|      { \
  |  |  |  |  316|     27|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|     27|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|     27|      eptr += 3; \
  |  |  |  |  319|     27|      } \
  |  |  |  |  320|     27|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     42|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 688, False: 0]
  |  |  |  Branch (324:14): [True: 42, False: 646]
  |  |  ------------------
  ------------------
 2222|    688|        if (!PRIV(xclass)(fc, Lxclass_data, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  195|    688|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2041|    688|#define _pcre2_xclass                PCRE2_SUFFIX(_pcre2_xclass_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    688|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    688|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    688|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (!PRIV(xclass)(fc, Lxclass_data, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2170|    688|#define Lxclass_data F->temp_sptr[1]
  ------------------
                      if (!PRIV(xclass)(fc, Lxclass_data, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    415|  {\
  |  |  560|    415|  rrc = ra;\
  |  |  561|    415|  goto RETURN_SWITCH;\
  |  |  562|    415|  }
  ------------------
  |  Branch (2222:13): [True: 415, False: 273]
  ------------------
 2223|    273|        }
 2224|       |
 2225|       |      /* If Lmax == Lmin we can just continue with the main loop. */
 2226|       |
 2227|    324|      if (Lmin == Lmax) continue;
  ------------------
  |  | 2171|    324|#define Lmin         F->temp_32[0]
  ------------------
                    if (Lmin == Lmax) continue;
  ------------------
  |  | 2172|    324|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (2227:11): [True: 143, False: 181]
  ------------------
 2228|       |
 2229|       |      /* If minimizing, keep testing the rest of the expression and advancing
 2230|       |      the pointer while it matches the class. */
 2231|       |
 2232|    181|      if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (2232:11): [True: 76, False: 105]
  ------------------
 2233|     76|        {
 2234|     76|        for (;;)
 2235|    327|          {
 2236|    327|          RMATCH(Fecode, RM100);
  ------------------
  |  |  551|    327|  {\
  |  |  552|    327|  start_ecode = ra;\
  |  |  553|    327|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|    327|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|    327|  goto MATCH_RECURSE;\
  |  |  555|    327|  L_##rb:;\
  |  |  556|    327|  }
  ------------------
 2237|    327|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|    327|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2237:15): [True: 0, False: 327]
  ------------------
 2238|    327|          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2171|    327|#define Lmin         F->temp_32[0]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2172|    327|#define Lmax         F->temp_32[1]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     18|  {\
  |  |  560|     18|  rrc = ra;\
  |  |  561|     18|  goto RETURN_SWITCH;\
  |  |  562|     18|  }
  ------------------
  |  Branch (2238:15): [True: 18, False: 309]
  ------------------
 2239|    309|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    309|#define Feptr              F->eptr
  ------------------
  |  Branch (2239:15): [True: 5, False: 304]
  ------------------
 2240|      5|            {
 2241|      5|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      5|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 5]
  |  |  ------------------
  |  |  539|      5|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      5|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2242|      5|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      5|  {\
  |  |  560|      5|  rrc = ra;\
  |  |  561|      5|  goto RETURN_SWITCH;\
  |  |  562|      5|  }
  ------------------
 2243|      0|            }
 2244|    304|          GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    304|  c = *eptr++; \
  |  |  324|    304|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     31|    { \
  |  |  |  |  307|     31|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 12, False: 19]
  |  |  |  |  ------------------
  |  |  |  |  308|     31|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     31|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 19]
  |  |  |  |  ------------------
  |  |  |  |  310|     19|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|     19|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|     19|      { \
  |  |  |  |  316|     19|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|     19|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|     19|      eptr += 3; \
  |  |  |  |  319|     19|      } \
  |  |  |  |  320|     19|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     31|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 304, False: 0]
  |  |  |  Branch (324:14): [True: 31, False: 273]
  |  |  ------------------
  ------------------
 2245|    304|          if (!PRIV(xclass)(fc, Lxclass_data, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  195|    304|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2041|    304|#define _pcre2_xclass                PCRE2_SUFFIX(_pcre2_xclass_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    304|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    304|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    304|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        if (!PRIV(xclass)(fc, Lxclass_data, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2170|    304|#define Lxclass_data F->temp_sptr[1]
  ------------------
                        if (!PRIV(xclass)(fc, Lxclass_data, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     53|  {\
  |  |  560|     53|  rrc = ra;\
  |  |  561|     53|  goto RETURN_SWITCH;\
  |  |  562|     53|  }
  ------------------
  |  Branch (2245:15): [True: 53, False: 251]
  ------------------
 2246|    251|          }
 2247|       |        /* Control never gets here */
 2248|     76|        }
 2249|       |
 2250|       |      /* If maximizing, find the longest possible run, then work backwards. */
 2251|       |
 2252|    105|      else
 2253|    105|        {
 2254|    105|        Lstart_eptr = Feptr;
  ------------------
  |  | 2169|    105|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                      Lstart_eptr = Feptr;
  ------------------
  |  |  182|    105|#define Feptr              F->eptr
  ------------------
 2255|    670|        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2171|    105|#define Lmin         F->temp_32[0]
  ------------------
                      for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2172|    670|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (2255:24): [True: 670, False: 0]
  ------------------
 2256|    670|          {
 2257|    670|          int len = 1;
 2258|    670|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    670|#define Feptr              F->eptr
  ------------------
  |  Branch (2258:15): [True: 0, False: 670]
  ------------------
 2259|      0|            {
 2260|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2261|      0|            break;
 2262|      0|            }
 2263|    670|#ifdef SUPPORT_UNICODE
 2264|    670|          GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|    670|  c = *eptr; \
  |  |  339|    670|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|     77|    { \
  |  |  |  |  341|     77|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 23, False: 54]
  |  |  |  |  ------------------
  |  |  |  |  342|     77|      { \
  |  |  |  |  343|     23|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|     23|      len++; \
  |  |  |  |  345|     23|      } \
  |  |  |  |  346|     77|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 54]
  |  |  |  |  ------------------
  |  |  |  |  347|     54|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|     54|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 54, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|     54|      {\
  |  |  |  |  353|     54|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|     54|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|     54|      len += 3; \
  |  |  |  |  356|     54|      } \
  |  |  |  |  357|     54|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|     77|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 670, False: 0]
  |  |  |  Branch (339:14): [True: 77, False: 593]
  |  |  ------------------
  ------------------
 2265|       |#else
 2266|       |          fc = *Feptr;
 2267|       |#endif
 2268|    670|          if (!PRIV(xclass)(fc, Lxclass_data, utf)) break;
  ------------------
  |  |  195|    670|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2041|    670|#define _pcre2_xclass                PCRE2_SUFFIX(_pcre2_xclass_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    670|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    670|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    670|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        if (!PRIV(xclass)(fc, Lxclass_data, utf)) break;
  ------------------
  |  | 2170|    670|#define Lxclass_data F->temp_sptr[1]
  ------------------
  |  Branch (2268:15): [True: 105, False: 565]
  ------------------
 2269|    565|          Feptr += len;
  ------------------
  |  |  182|    565|#define Feptr              F->eptr
  ------------------
 2270|    565|          }
 2271|       |
 2272|    105|        if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (2272:13): [True: 38, False: 67]
  ------------------
 2273|       |
 2274|       |        /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 2275|       |        Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
 2276|       |        go too far. */
 2277|       |
 2278|     67|        for(;;)
 2279|    592|          {
 2280|    592|          RMATCH(Fecode, RM101);
  ------------------
  |  |  551|    592|  {\
  |  |  552|    592|  start_ecode = ra;\
  |  |  553|    592|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|    592|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|    592|  goto MATCH_RECURSE;\
  |  |  555|    592|  L_##rb:;\
  |  |  556|    592|  }
  ------------------
 2281|    592|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|    592|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2281:15): [True: 0, False: 592]
  ------------------
 2282|    592|          if (Feptr-- <= Lstart_eptr) break;  /* Tried at original position */
  ------------------
  |  |  182|    592|#define Feptr              F->eptr
  ------------------
                        if (Feptr-- <= Lstart_eptr) break;  /* Tried at original position */
  ------------------
  |  | 2169|    592|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (2282:15): [True: 67, False: 525]
  ------------------
 2283|    525|#ifdef SUPPORT_UNICODE
 2284|    525|          if (utf) BACKCHAR(Feptr);
  ------------------
  |  |  345|    678|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 153, False: 525]
  |  |  ------------------
  ------------------
  |  Branch (2284:15): [True: 525, False: 0]
  ------------------
 2285|    525|#endif
 2286|    525|          }
 2287|     67|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     67|  {\
  |  |  560|     67|  rrc = ra;\
  |  |  561|     67|  goto RETURN_SWITCH;\
  |  |  562|     67|  }
  ------------------
 2288|      0|        }
 2289|       |
 2290|       |      /* Control never gets here */
 2291|    181|      }
 2292|      0|#endif  /* SUPPORT_WIDE_CHARS: end of XCLASS */
 2293|       |
 2294|      0|#undef Lstart_eptr
 2295|      0|#undef Lxclass_data
 2296|      0|#undef Lmin
 2297|      0|#undef Lmax
 2298|       |
 2299|       |
 2300|       |    /* ===================================================================== */
 2301|       |    /* Match various character types when PCRE2_UCP is not set. These opcodes
 2302|       |    are not generated when PCRE2_UCP is set - instead appropriate property
 2303|       |    tests are compiled. */
 2304|       |
 2305|  4.57k|    case OP_NOT_DIGIT:
  ------------------
  |  Branch (2305:5): [True: 4.57k, False: 28.4M]
  ------------------
 2306|  4.57k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  4.57k|#define Feptr              F->eptr
  ------------------
  |  Branch (2306:9): [True: 144, False: 4.43k]
  ------------------
 2307|    144|      {
 2308|    144|      SCHECK_PARTIAL();
  ------------------
  |  |  538|    144|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 144]
  |  |  ------------------
  |  |  539|    144|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    144|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2309|    144|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    144|  {\
  |  |  560|    144|  rrc = ra;\
  |  |  561|    144|  goto RETURN_SWITCH;\
  |  |  562|    144|  }
  ------------------
 2310|      0|      }
 2311|  4.43k|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  4.43k|  c = *eptr++; \
  |  |  324|  4.43k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 4.43k]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2312|  4.43k|    if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_digit) != 0)
  ------------------
  |  |  217|  8.86k|#define CHMAX_255(c) ((c) <= 255u)
  |  |  ------------------
  |  |  |  Branch (217:22): [True: 4.43k, False: 0]
  |  |  ------------------
  ------------------
                  if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_digit) != 0)
  ------------------
  |  |  600|  4.43k|#define ctype_digit    0x08
  ------------------
  |  Branch (2312:26): [True: 1.36k, False: 3.07k]
  ------------------
 2313|  3.07k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.36k|  {\
  |  |  560|  1.36k|  rrc = ra;\
  |  |  561|  1.36k|  goto RETURN_SWITCH;\
  |  |  562|  1.36k|  }
  ------------------
 2314|  3.07k|    Fecode++;
  ------------------
  |  |  181|  3.07k|#define Fecode             F->ecode
  ------------------
 2315|  3.07k|    break;
 2316|       |
 2317|  18.9k|    case OP_DIGIT:
  ------------------
  |  Branch (2317:5): [True: 18.9k, False: 28.4M]
  ------------------
 2318|  18.9k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  18.9k|#define Feptr              F->eptr
  ------------------
  |  Branch (2318:9): [True: 689, False: 18.2k]
  ------------------
 2319|    689|      {
 2320|    689|      SCHECK_PARTIAL();
  ------------------
  |  |  538|    689|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 689]
  |  |  ------------------
  |  |  539|    689|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    689|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2321|    689|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    689|  {\
  |  |  560|    689|  rrc = ra;\
  |  |  561|    689|  goto RETURN_SWITCH;\
  |  |  562|    689|  }
  ------------------
 2322|      0|      }
 2323|  18.2k|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  18.2k|  c = *eptr++; \
  |  |  324|  18.2k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 18.2k]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2324|  18.2k|    if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_digit) == 0)
  ------------------
  |  |  217|  36.5k|#define CHMAX_255(c) ((c) <= 255u)
  ------------------
                  if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_digit) == 0)
  ------------------
  |  |  600|  18.2k|#define ctype_digit    0x08
  ------------------
  |  Branch (2324:9): [True: 0, False: 18.2k]
  |  Branch (2324:27): [True: 17.4k, False: 864]
  ------------------
 2325|  17.4k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  17.4k|  {\
  |  |  560|  17.4k|  rrc = ra;\
  |  |  561|  17.4k|  goto RETURN_SWITCH;\
  |  |  562|  17.4k|  }
  ------------------
 2326|    864|    Fecode++;
  ------------------
  |  |  181|    864|#define Fecode             F->ecode
  ------------------
 2327|    864|    break;
 2328|       |
 2329|  10.9k|    case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (2329:5): [True: 10.9k, False: 28.4M]
  ------------------
 2330|  10.9k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  10.9k|#define Feptr              F->eptr
  ------------------
  |  Branch (2330:9): [True: 993, False: 9.95k]
  ------------------
 2331|    993|      {
 2332|    993|      SCHECK_PARTIAL();
  ------------------
  |  |  538|    993|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 993]
  |  |  ------------------
  |  |  539|    993|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    993|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2333|    993|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    993|  {\
  |  |  560|    993|  rrc = ra;\
  |  |  561|    993|  goto RETURN_SWITCH;\
  |  |  562|    993|  }
  ------------------
 2334|      0|      }
 2335|  9.95k|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  9.95k|  c = *eptr++; \
  |  |  324|  9.95k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 9.95k]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2336|  9.95k|    if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_space) != 0)
  ------------------
  |  |  217|  19.9k|#define CHMAX_255(c) ((c) <= 255u)
  |  |  ------------------
  |  |  |  Branch (217:22): [True: 9.95k, False: 0]
  |  |  ------------------
  ------------------
                  if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_space) != 0)
  ------------------
  |  |  597|  9.95k|#define ctype_space    0x01
  ------------------
  |  Branch (2336:26): [True: 0, False: 9.95k]
  ------------------
 2337|  9.95k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2338|  9.95k|    Fecode++;
  ------------------
  |  |  181|  9.95k|#define Fecode             F->ecode
  ------------------
 2339|  9.95k|    break;
 2340|       |
 2341|  1.44k|    case OP_WHITESPACE:
  ------------------
  |  Branch (2341:5): [True: 1.44k, False: 28.4M]
  ------------------
 2342|  1.44k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.44k|#define Feptr              F->eptr
  ------------------
  |  Branch (2342:9): [True: 15, False: 1.42k]
  ------------------
 2343|     15|      {
 2344|     15|      SCHECK_PARTIAL();
  ------------------
  |  |  538|     15|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 15]
  |  |  ------------------
  |  |  539|     15|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     15|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2345|     15|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     15|  {\
  |  |  560|     15|  rrc = ra;\
  |  |  561|     15|  goto RETURN_SWITCH;\
  |  |  562|     15|  }
  ------------------
 2346|      0|      }
 2347|  1.42k|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  1.42k|  c = *eptr++; \
  |  |  324|  1.42k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 1.42k]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2348|  1.42k|    if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_space) == 0)
  ------------------
  |  |  217|  2.85k|#define CHMAX_255(c) ((c) <= 255u)
  ------------------
                  if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_space) == 0)
  ------------------
  |  |  597|  1.42k|#define ctype_space    0x01
  ------------------
  |  Branch (2348:9): [True: 0, False: 1.42k]
  |  Branch (2348:27): [True: 1.30k, False: 123]
  ------------------
 2349|  1.30k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.30k|  {\
  |  |  560|  1.30k|  rrc = ra;\
  |  |  561|  1.30k|  goto RETURN_SWITCH;\
  |  |  562|  1.30k|  }
  ------------------
 2350|    123|    Fecode++;
  ------------------
  |  |  181|    123|#define Fecode             F->ecode
  ------------------
 2351|    123|    break;
 2352|       |
 2353|     63|    case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (2353:5): [True: 63, False: 28.4M]
  ------------------
 2354|     63|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     63|#define Feptr              F->eptr
  ------------------
  |  Branch (2354:9): [True: 0, False: 63]
  ------------------
 2355|      0|      {
 2356|      0|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2357|      0|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2358|      0|      }
 2359|     63|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|     63|  c = *eptr++; \
  |  |  324|     63|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 63]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2360|     63|    if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0)
  ------------------
  |  |  217|    126|#define CHMAX_255(c) ((c) <= 255u)
  |  |  ------------------
  |  |  |  Branch (217:22): [True: 63, False: 0]
  |  |  ------------------
  ------------------
                  if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0)
  ------------------
  |  |  601|     63|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (2360:26): [True: 9, False: 54]
  ------------------
 2361|     54|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      9|  {\
  |  |  560|      9|  rrc = ra;\
  |  |  561|      9|  goto RETURN_SWITCH;\
  |  |  562|      9|  }
  ------------------
 2362|     54|    Fecode++;
  ------------------
  |  |  181|     54|#define Fecode             F->ecode
  ------------------
 2363|     54|    break;
 2364|       |
 2365|     14|    case OP_WORDCHAR:
  ------------------
  |  Branch (2365:5): [True: 14, False: 28.4M]
  ------------------
 2366|     14|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     14|#define Feptr              F->eptr
  ------------------
  |  Branch (2366:9): [True: 0, False: 14]
  ------------------
 2367|      0|      {
 2368|      0|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2369|      0|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2370|      0|      }
 2371|     14|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|     14|  c = *eptr++; \
  |  |  324|     14|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 14]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2372|     14|    if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_word) == 0)
  ------------------
  |  |  217|     28|#define CHMAX_255(c) ((c) <= 255u)
  ------------------
                  if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_word) == 0)
  ------------------
  |  |  601|     14|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (2372:9): [True: 0, False: 14]
  |  Branch (2372:27): [True: 5, False: 9]
  ------------------
 2373|      9|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      5|  {\
  |  |  560|      5|  rrc = ra;\
  |  |  561|      5|  goto RETURN_SWITCH;\
  |  |  562|      5|  }
  ------------------
 2374|      9|    Fecode++;
  ------------------
  |  |  181|      9|#define Fecode             F->ecode
  ------------------
 2375|      9|    break;
 2376|       |
 2377|  20.2M|    case OP_ANYNL:
  ------------------
  |  Branch (2377:5): [True: 20.2M, False: 8.25M]
  ------------------
 2378|  20.2M|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  20.2M|#define Feptr              F->eptr
  ------------------
  |  Branch (2378:9): [True: 1.24M, False: 18.9M]
  ------------------
 2379|  1.24M|      {
 2380|  1.24M|      SCHECK_PARTIAL();
  ------------------
  |  |  538|  1.24M|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1.24M]
  |  |  ------------------
  |  |  539|  1.24M|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  1.24M|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2381|  1.24M|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.24M|  {\
  |  |  560|  1.24M|  rrc = ra;\
  |  |  561|  1.24M|  goto RETURN_SWITCH;\
  |  |  562|  1.24M|  }
  ------------------
 2382|      0|      }
 2383|  18.9M|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  18.9M|  c = *eptr++; \
  |  |  324|  18.9M|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|  1.88M|    { \
  |  |  |  |  307|  1.88M|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 8.07k, False: 1.87M]
  |  |  |  |  ------------------
  |  |  |  |  308|  1.88M|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|  1.88M|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 1.12M, False: 755k]
  |  |  |  |  ------------------
  |  |  |  |  310|  1.87M|      { \
  |  |  |  |  311|  1.12M|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|  1.12M|      eptr += 2; \
  |  |  |  |  313|  1.12M|      } \
  |  |  |  |  314|  1.87M|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 755k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|   755k|      { \
  |  |  |  |  316|   755k|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|   755k|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|   755k|      eptr += 3; \
  |  |  |  |  319|   755k|      } \
  |  |  |  |  320|   755k|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|  1.88M|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 18.9M, False: 2.91k]
  |  |  |  Branch (324:14): [True: 1.88M, False: 17.0M]
  |  |  ------------------
  ------------------
 2384|  18.9M|    switch(fc)
 2385|  18.9M|      {
 2386|  17.9M|      default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  17.9M|  {\
  |  |  560|  17.9M|  rrc = ra;\
  |  |  561|  17.9M|  goto RETURN_SWITCH;\
  |  |  562|  17.9M|  }
  ------------------
  |  Branch (2386:7): [True: 17.9M, False: 1.05M]
  ------------------
 2387|       |
 2388|  35.5k|      case CHAR_CR:
  ------------------
  |  |  990|  35.5k|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (2388:7): [True: 35.5k, False: 18.9M]
  ------------------
 2389|  35.5k|      if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  35.5k|#define Feptr              F->eptr
  ------------------
  |  Branch (2389:11): [True: 0, False: 35.5k]
  ------------------
 2390|      0|        {
 2391|      0|        SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2392|      0|        }
 2393|  35.5k|      else if (UCHAR21TEST(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  244|  35.5k|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
                    else if (UCHAR21TEST(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  991|  35.5k|#define CHAR_LF                     '\012'
  ------------------
                    else if (UCHAR21TEST(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      1|#define Feptr              F->eptr
  ------------------
  |  Branch (2393:16): [True: 1, False: 35.5k]
  ------------------
 2394|  35.5k|      break;
 2395|       |
 2396|  64.3k|      case CHAR_LF:
  ------------------
  |  |  991|  64.3k|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (2396:7): [True: 64.3k, False: 18.9M]
  ------------------
 2397|  64.3k|      break;
 2398|       |
 2399|   957k|      case CHAR_VT:
  ------------------
  |  |  988|   957k|#define CHAR_VT                     '\013'
  ------------------
  |  Branch (2399:7): [True: 957k, False: 18.0M]
  ------------------
 2400|   957k|      case CHAR_FF:
  ------------------
  |  |  989|   957k|#define CHAR_FF                     '\014'
  ------------------
  |  Branch (2400:7): [True: 11, False: 18.9M]
  ------------------
 2401|   957k|      case CHAR_NEL:
  ------------------
  |  |  993|   957k|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (2401:7): [True: 2, False: 18.9M]
  ------------------
 2402|   957k|#ifndef EBCDIC
 2403|   957k|      case 0x2028:
  ------------------
  |  Branch (2403:7): [True: 0, False: 18.9M]
  ------------------
 2404|   957k|      case 0x2029:
  ------------------
  |  Branch (2404:7): [True: 0, False: 18.9M]
  ------------------
 2405|   957k|#endif  /* Not EBCDIC */
 2406|   957k|      if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  218|   957k|#define PCRE2_BSR_ANYCRLF         2
  ------------------
                    if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2406:11): [True: 0, False: 957k]
  ------------------
 2407|   957k|      break;
 2408|  18.9M|      }
 2409|  1.05M|    Fecode++;
  ------------------
  |  |  181|  1.05M|#define Fecode             F->ecode
  ------------------
 2410|  1.05M|    break;
 2411|       |
 2412|   406k|    case OP_NOT_HSPACE:
  ------------------
  |  Branch (2412:5): [True: 406k, False: 28.0M]
  ------------------
 2413|   406k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   406k|#define Feptr              F->eptr
  ------------------
  |  Branch (2413:9): [True: 12.9k, False: 393k]
  ------------------
 2414|  12.9k|      {
 2415|  12.9k|      SCHECK_PARTIAL();
  ------------------
  |  |  538|  12.9k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 12.9k]
  |  |  ------------------
  |  |  539|  12.9k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  12.9k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2416|  12.9k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  12.9k|  {\
  |  |  560|  12.9k|  rrc = ra;\
  |  |  561|  12.9k|  goto RETURN_SWITCH;\
  |  |  562|  12.9k|  }
  ------------------
 2417|      0|      }
 2418|   393k|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|   393k|  c = *eptr++; \
  |  |  324|   393k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|  15.0k|    { \
  |  |  |  |  307|  15.0k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 15.0k]
  |  |  |  |  ------------------
  |  |  |  |  308|  15.0k|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|  15.0k|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 12.3k, False: 2.75k]
  |  |  |  |  ------------------
  |  |  |  |  310|  15.0k|      { \
  |  |  |  |  311|  12.3k|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|  12.3k|      eptr += 2; \
  |  |  |  |  313|  12.3k|      } \
  |  |  |  |  314|  15.0k|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 2.75k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|  2.75k|      { \
  |  |  |  |  316|  2.75k|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|  2.75k|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|  2.75k|      eptr += 3; \
  |  |  |  |  319|  2.75k|      } \
  |  |  |  |  320|  2.75k|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|  15.0k|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 393k, False: 159]
  |  |  |  Branch (324:14): [True: 15.0k, False: 378k]
  |  |  ------------------
  ------------------
 2419|   393k|    switch(fc)
 2420|   393k|      {
 2421|  70.2k|      HSPACE_CASES: RRETURN(MATCH_NOMATCH);  /* Byte and multibyte cases */
  ------------------
  |  |  430|  70.2k|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      2|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      2|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 2, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  426|  70.2k|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|  70.2k|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 70.2k, False: 323k]
  |  |  |  |  ------------------
  |  |  |  |  427|  70.2k|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|  70.2k|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|  70.2k|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  408|  70.2k|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  409|  70.2k|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  410|  70.2k|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  411|  70.2k|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  412|  70.2k|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  413|  70.2k|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  414|  70.2k|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  415|  70.2k|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  416|  70.2k|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  417|  70.2k|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  418|  70.2k|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  419|  70.2k|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  420|  70.2k|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  421|  70.2k|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 393k]
  |  |  |  |  ------------------
  |  |  |  |  422|  70.2k|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
                    HSPACE_CASES: RRETURN(MATCH_NOMATCH);  /* Byte and multibyte cases */
  ------------------
  |  |  559|  70.2k|  {\
  |  |  560|  70.2k|  rrc = ra;\
  |  |  561|  70.2k|  goto RETURN_SWITCH;\
  |  |  562|  70.2k|  }
  ------------------
 2422|   323k|      default: break;
  ------------------
  |  Branch (2422:7): [True: 323k, False: 70.2k]
  ------------------
 2423|   393k|      }
 2424|   323k|    Fecode++;
  ------------------
  |  |  181|   323k|#define Fecode             F->ecode
  ------------------
 2425|   323k|    break;
 2426|       |
 2427|  28.9k|    case OP_HSPACE:
  ------------------
  |  Branch (2427:5): [True: 28.9k, False: 28.4M]
  ------------------
 2428|  28.9k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  28.9k|#define Feptr              F->eptr
  ------------------
  |  Branch (2428:9): [True: 1.49k, False: 27.4k]
  ------------------
 2429|  1.49k|      {
 2430|  1.49k|      SCHECK_PARTIAL();
  ------------------
  |  |  538|  1.49k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1.49k]
  |  |  ------------------
  |  |  539|  1.49k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  1.49k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2431|  1.49k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.49k|  {\
  |  |  560|  1.49k|  rrc = ra;\
  |  |  561|  1.49k|  goto RETURN_SWITCH;\
  |  |  562|  1.49k|  }
  ------------------
 2432|      0|      }
 2433|  27.4k|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  27.4k|  c = *eptr++; \
  |  |  324|  27.4k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|    652|    { \
  |  |  |  |  307|    652|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 652]
  |  |  |  |  ------------------
  |  |  |  |  308|    652|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|    652|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 122, False: 530]
  |  |  |  |  ------------------
  |  |  |  |  310|    652|      { \
  |  |  |  |  311|    122|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|    122|      eptr += 2; \
  |  |  |  |  313|    122|      } \
  |  |  |  |  314|    652|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 530, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|    530|      { \
  |  |  |  |  316|    530|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|    530|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|    530|      eptr += 3; \
  |  |  |  |  319|    530|      } \
  |  |  |  |  320|    530|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|    652|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 27.4k, False: 21]
  |  |  |  Branch (324:14): [True: 652, False: 26.7k]
  |  |  ------------------
  ------------------
 2434|  27.4k|    switch(fc)
 2435|  27.4k|      {
 2436|    978|      HSPACE_CASES: break;  /* Byte and multibyte cases */
  ------------------
  |  |  430|    978|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      2|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      2|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 2, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  426|    974|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|    974|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 972, False: 26.4k]
  |  |  |  |  ------------------
  |  |  |  |  427|    978|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|    978|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|    978|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  408|    978|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  409|    978|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  410|    978|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  411|    978|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  412|    978|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  413|    978|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  414|    978|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  415|    978|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  416|    978|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  417|    978|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  418|    978|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  419|    978|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  420|    978|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  421|    978|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 27.4k]
  |  |  |  |  ------------------
  |  |  |  |  422|    978|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 2437|  26.4k|      default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  26.4k|  {\
  |  |  560|  26.4k|  rrc = ra;\
  |  |  561|  26.4k|  goto RETURN_SWITCH;\
  |  |  562|  26.4k|  }
  ------------------
  |  Branch (2437:7): [True: 26.4k, False: 978]
  ------------------
 2438|  27.4k|      }
 2439|    978|    Fecode++;
  ------------------
  |  |  181|    978|#define Fecode             F->ecode
  ------------------
 2440|    978|    break;
 2441|       |
 2442|    965|    case OP_NOT_VSPACE:
  ------------------
  |  Branch (2442:5): [True: 965, False: 28.4M]
  ------------------
 2443|    965|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    965|#define Feptr              F->eptr
  ------------------
  |  Branch (2443:9): [True: 3, False: 962]
  ------------------
 2444|      3|      {
 2445|      3|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      3|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 3]
  |  |  ------------------
  |  |  539|      3|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      3|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2446|      3|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      3|  {\
  |  |  560|      3|  rrc = ra;\
  |  |  561|      3|  goto RETURN_SWITCH;\
  |  |  562|      3|  }
  ------------------
 2447|      0|      }
 2448|    962|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    962|  c = *eptr++; \
  |  |  324|    962|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      4|    { \
  |  |  |  |  307|      4|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 2, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      4|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      4|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      2|      { \
  |  |  |  |  316|      2|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      2|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      2|      eptr += 3; \
  |  |  |  |  319|      2|      } \
  |  |  |  |  320|      2|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      4|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 210, False: 752]
  |  |  |  Branch (324:14): [True: 4, False: 206]
  |  |  ------------------
  ------------------
 2449|    962|    switch(fc)
 2450|    962|      {
 2451|    133|      VSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  448|    133|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|    109|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|    109|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 109, False: 853]
  |  |  |  |  ------------------
  |  |  |  |  442|    122|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|    122|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 13, False: 949]
  |  |  |  |  ------------------
  |  |  |  |  443|    127|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|    127|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 5, False: 957]
  |  |  |  |  ------------------
  |  |  |  |  444|    132|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|    132|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 5, False: 957]
  |  |  |  |  ------------------
  |  |  |  |  445|    133|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|    133|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|    133|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 962]
  |  |  |  |  ------------------
  |  |  |  |  438|    133|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
                    VSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    133|  {\
  |  |  560|    133|  rrc = ra;\
  |  |  561|    133|  goto RETURN_SWITCH;\
  |  |  562|    133|  }
  ------------------
 2452|    829|      default: break;
  ------------------
  |  Branch (2452:7): [True: 829, False: 133]
  ------------------
 2453|    962|      }
 2454|    829|    Fecode++;
  ------------------
  |  |  181|    829|#define Fecode             F->ecode
  ------------------
 2455|    829|    break;
 2456|       |
 2457|    102|    case OP_VSPACE:
  ------------------
  |  Branch (2457:5): [True: 102, False: 28.4M]
  ------------------
 2458|    102|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    102|#define Feptr              F->eptr
  ------------------
  |  Branch (2458:9): [True: 0, False: 102]
  ------------------
 2459|      0|      {
 2460|      0|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2461|      0|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2462|      0|      }
 2463|    102|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    102|  c = *eptr++; \
  |  |  324|    102|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      8|    { \
  |  |  |  |  307|      8|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 3, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  308|      8|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      8|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  310|      5|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      5|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      5|      { \
  |  |  |  |  316|      5|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      5|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      5|      eptr += 3; \
  |  |  |  |  319|      5|      } \
  |  |  |  |  320|      5|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      8|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 102, False: 0]
  |  |  |  Branch (324:14): [True: 8, False: 94]
  |  |  ------------------
  ------------------
 2464|    102|    switch(fc)
 2465|    102|      {
 2466|      7|      VSPACE_CASES: break;
  ------------------
  |  |  448|      7|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      1|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      1|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 1, False: 101]
  |  |  |  |  ------------------
  |  |  |  |  442|      7|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      7|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 6, False: 96]
  |  |  |  |  ------------------
  |  |  |  |  443|      7|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      7|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 102]
  |  |  |  |  ------------------
  |  |  |  |  444|      7|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      7|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 0, False: 102]
  |  |  |  |  ------------------
  |  |  |  |  445|      7|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      7|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      7|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 102]
  |  |  |  |  ------------------
  |  |  |  |  438|      7|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 2467|     95|      default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     95|  {\
  |  |  560|     95|  rrc = ra;\
  |  |  561|     95|  goto RETURN_SWITCH;\
  |  |  562|     95|  }
  ------------------
  |  Branch (2467:7): [True: 95, False: 7]
  ------------------
 2468|    102|      }
 2469|      7|    Fecode++;
  ------------------
  |  |  181|      7|#define Fecode             F->ecode
  ------------------
 2470|      7|    break;
 2471|       |
 2472|       |
 2473|      0|#ifdef SUPPORT_UNICODE
 2474|       |
 2475|       |    /* ===================================================================== */
 2476|       |    /* Check the next character by Unicode property. We will get here only
 2477|       |    if the support is in the binary; otherwise a compile-time error occurs. */
 2478|       |
 2479|    379|    case OP_PROP:
  ------------------
  |  Branch (2479:5): [True: 379, False: 28.4M]
  ------------------
 2480|  1.07M|    case OP_NOTPROP:
  ------------------
  |  Branch (2480:5): [True: 1.07M, False: 27.3M]
  ------------------
 2481|  1.07M|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.07M|#define Feptr              F->eptr
  ------------------
  |  Branch (2481:9): [True: 32.5k, False: 1.04M]
  ------------------
 2482|  32.5k|      {
 2483|  32.5k|      SCHECK_PARTIAL();
  ------------------
  |  |  538|  32.5k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 32.5k]
  |  |  ------------------
  |  |  539|  32.5k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  32.5k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2484|  32.5k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  32.5k|  {\
  |  |  560|  32.5k|  rrc = ra;\
  |  |  561|  32.5k|  goto RETURN_SWITCH;\
  |  |  562|  32.5k|  }
  ------------------
 2485|      0|      }
 2486|  1.04M|    GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  1.04M|  c = *eptr++; \
  |  |  324|  1.04M|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|  37.9k|    { \
  |  |  |  |  307|  37.9k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 7, False: 37.9k]
  |  |  |  |  ------------------
  |  |  |  |  308|  37.9k|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|  37.9k|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 30.1k, False: 7.84k]
  |  |  |  |  ------------------
  |  |  |  |  310|  37.9k|      { \
  |  |  |  |  311|  30.1k|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|  30.1k|      eptr += 2; \
  |  |  |  |  313|  30.1k|      } \
  |  |  |  |  314|  37.9k|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 7.84k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|  7.84k|      { \
  |  |  |  |  316|  7.84k|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|  7.84k|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|  7.84k|      eptr += 3; \
  |  |  |  |  319|  7.84k|      } \
  |  |  |  |  320|  7.84k|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|  37.9k|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 1.04M, False: 118]
  |  |  |  Branch (324:14): [True: 37.9k, False: 1.00M]
  |  |  ------------------
  ------------------
 2487|  1.04M|      {
 2488|  1.04M|      const uint32_t *cp;
 2489|  1.04M|      uint32_t chartype;
 2490|  1.04M|      const ucd_record *prop = GET_UCD(fc);
  ------------------
  |  | 1873|  1.04M|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|  1.04M|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|  1.04M|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|  1.04M|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|  1.04M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.04M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.04M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|  1.04M|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|  1.04M|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|  1.04M|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|  1.04M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.04M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.04M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|  1.04M|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|  1.04M|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|  1.04M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.04M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.04M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|  1.04M|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|  1.04M|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|  1.04M|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|  1.04M|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2491|  1.04M|      BOOL notmatch = Fop == OP_NOTPROP;
  ------------------
  |  |  191|  1.04M|#define Fop                F->op
  ------------------
 2492|       |
 2493|  1.04M|      switch(Fecode[1])
  ------------------
  |  |  181|  1.04M|#define Fecode             F->ecode
  ------------------
 2494|  1.04M|        {
 2495|      0|        case PT_ANY:
  ------------------
  |  | 1293|      0|#define PT_ANY        0    /* Any property - matches all chars */
  ------------------
  |  Branch (2495:9): [True: 0, False: 1.04M]
  ------------------
 2496|      0|        if (notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2496:13): [True: 0, False: 0]
  ------------------
 2497|      0|        break;
 2498|       |
 2499|      0|        case PT_LAMP:
  ------------------
  |  | 1294|      0|#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
  ------------------
  |  Branch (2499:9): [True: 0, False: 1.04M]
  ------------------
 2500|      0|        chartype = prop->chartype;
 2501|      0|        if ((chartype == ucp_Lu ||
  ------------------
  |  Branch (2501:13): [True: 0, False: 0]
  |  Branch (2501:14): [True: 0, False: 0]
  ------------------
 2502|      0|             chartype == ucp_Ll ||
  ------------------
  |  Branch (2502:14): [True: 0, False: 0]
  ------------------
 2503|      0|             chartype == ucp_Lt) == notmatch)
  ------------------
  |  Branch (2503:14): [True: 0, False: 0]
  ------------------
 2504|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2505|      0|        break;
 2506|       |
 2507|    118|        case PT_GC:
  ------------------
  |  | 1295|    118|#define PT_GC         2    /* Specified general characteristic (e.g. L) */
  ------------------
  |  Branch (2507:9): [True: 118, False: 1.04M]
  ------------------
 2508|    118|        if ((Fecode[2] == PRIV(ucp_gentype)[prop->chartype]) == notmatch)
  ------------------
  |  |  181|    118|#define Fecode             F->ecode
  ------------------
                      if ((Fecode[2] == PRIV(ucp_gentype)[prop->chartype]) == notmatch)
  ------------------
  |  |  195|    118|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|    118|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    118|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    118|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    118|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2508:13): [True: 97, False: 21]
  ------------------
 2509|     97|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     97|  {\
  |  |  560|     97|  rrc = ra;\
  |  |  561|     97|  goto RETURN_SWITCH;\
  |  |  562|     97|  }
  ------------------
 2510|     21|        break;
 2511|       |
 2512|     78|        case PT_PC:
  ------------------
  |  | 1296|     78|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
  |  Branch (2512:9): [True: 78, False: 1.04M]
  ------------------
 2513|     78|        if ((Fecode[2] == prop->chartype) == notmatch)
  ------------------
  |  |  181|     78|#define Fecode             F->ecode
  ------------------
  |  Branch (2513:13): [True: 69, False: 9]
  ------------------
 2514|     69|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     69|  {\
  |  |  560|     69|  rrc = ra;\
  |  |  561|     69|  goto RETURN_SWITCH;\
  |  |  562|     69|  }
  ------------------
 2515|      9|        break;
 2516|       |
 2517|      0|        case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (2517:9): [True: 0, False: 1.04M]
  ------------------
 2518|      0|        if ((Fecode[2] == prop->script) == notmatch)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (2518:13): [True: 0, False: 0]
  ------------------
 2519|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2520|      0|        break;
 2521|       |
 2522|      0|        case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (2522:9): [True: 0, False: 1.04M]
  ------------------
 2523|      0|          {
 2524|      0|          BOOL ok = (Fecode[2] == prop->script ||
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (2524:22): [True: 0, False: 0]
  ------------------
 2525|      0|                     MAPBIT(PRIV(ucd_script_sets) + UCD_SCRIPTX_PROP(prop), Fecode[2]) != 0);
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  |  Branch (2525:22): [True: 0, False: 0]
  ------------------
 2526|      0|          if (ok == notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2526:15): [True: 0, False: 0]
  ------------------
 2527|      0|          }
 2528|      0|        break;
 2529|       |
 2530|       |        /* These are specials */
 2531|       |
 2532|      0|        case PT_ALNUM:
  ------------------
  |  | 1299|      0|#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
  ------------------
  |  Branch (2532:9): [True: 0, False: 1.04M]
  ------------------
 2533|      0|        chartype = prop->chartype;
 2534|      0|        if ((PRIV(ucp_gentype)[chartype] == ucp_L ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2534:13): [True: 0, False: 0]
  |  Branch (2534:14): [True: 0, False: 0]
  ------------------
 2535|      0|             PRIV(ucp_gentype)[chartype] == ucp_N) == notmatch)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2535:14): [True: 0, False: 0]
  ------------------
 2536|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2537|      0|        break;
 2538|       |
 2539|       |        /* Perl space used to exclude VT, but from Perl 5.18 it is included,
 2540|       |        which means that Perl space and POSIX space are now identical. PCRE
 2541|       |        was changed at release 8.34. */
 2542|       |
 2543|  1.04M|        case PT_SPACE:    /* Perl space */
  ------------------
  |  | 1300|  1.04M|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
  |  Branch (2543:9): [True: 1.04M, False: 562]
  ------------------
 2544|  1.04M|        case PT_PXSPACE:  /* POSIX space */
  ------------------
  |  | 1301|  1.04M|#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
  ------------------
  |  Branch (2544:9): [True: 0, False: 1.04M]
  ------------------
 2545|  1.04M|        switch(fc)
 2546|  1.04M|          {
 2547|   313k|          HSPACE_CASES:
  ------------------
  |  |  430|  16.8k|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|  9.11k|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|  9.11k|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 9.11k, False: 1.03M]
  |  |  |  |  ------------------
  |  |  |  |  426|  16.8k|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|  16.8k|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 7.77k, False: 1.03M]
  |  |  |  |  ------------------
  |  |  |  |  427|  16.8k|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|  16.8k|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|  16.8k|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  408|  16.8k|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  409|  16.8k|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  410|  16.8k|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  411|  16.8k|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  412|  16.8k|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  413|  16.8k|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  414|  16.8k|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  415|  16.8k|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  416|  16.8k|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  417|  16.8k|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  418|  16.8k|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  419|  16.8k|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  420|  16.8k|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  421|  16.8k|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  422|  16.8k|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 2548|   596k|          VSPACE_CASES:
  ------------------
  |  |  448|  95.4k|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|  52.2k|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|  52.2k|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 35.3k, False: 1.00M]
  |  |  |  |  ------------------
  |  |  |  |  442|  81.0k|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|  81.0k|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 28.7k, False: 1.01M]
  |  |  |  |  ------------------
  |  |  |  |  443|  81.0k|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|  81.0k|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  444|  95.4k|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|  95.4k|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 14.3k, False: 1.02M]
  |  |  |  |  ------------------
  |  |  |  |  445|  95.4k|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  16.8k|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|  95.4k|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|  95.4k|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 1.04M]
  |  |  |  |  ------------------
  |  |  |  |  438|  95.4k|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 2549|   596k|          if (notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  95.4k|  {\
  |  |  560|  95.4k|  rrc = ra;\
  |  |  561|  95.4k|  goto RETURN_SWITCH;\
  |  |  562|  95.4k|  }
  ------------------
  |  Branch (2549:15): [True: 95.4k, False: 0]
  ------------------
 2550|      0|          break;
 2551|       |
 2552|   946k|          default:
  ------------------
  |  Branch (2552:11): [True: 946k, False: 95.4k]
  ------------------
 2553|   946k|          if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z) == notmatch)
  ------------------
  |  |  195|   946k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|   946k|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|   946k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|   946k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|   946k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2553:15): [True: 0, False: 946k]
  ------------------
 2554|   946k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2555|   946k|          break;
 2556|  1.04M|          }
 2557|   946k|        break;
 2558|       |
 2559|   946k|        case PT_WORD:
  ------------------
  |  | 1302|     82|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
  |  Branch (2559:9): [True: 82, False: 1.04M]
  ------------------
 2560|     82|        chartype = prop->chartype;
 2561|     82|        if ((PRIV(ucp_gentype)[chartype] == ucp_L ||
  ------------------
  |  |  195|     82|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     82|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     82|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     82|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     82|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2561:13): [True: 66, False: 16]
  |  Branch (2561:14): [True: 10, False: 72]
  ------------------
 2562|     72|             PRIV(ucp_gentype)[chartype] == ucp_N ||
  ------------------
  |  |  195|     72|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     72|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     72|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     72|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     72|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2562:14): [True: 3, False: 69]
  ------------------
 2563|     69|             chartype == ucp_Mn ||
  ------------------
  |  Branch (2563:14): [True: 0, False: 69]
  ------------------
 2564|     69|             chartype == ucp_Pc) == notmatch)
  ------------------
  |  Branch (2564:14): [True: 3, False: 66]
  ------------------
 2565|     66|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     66|  {\
  |  |  560|     66|  rrc = ra;\
  |  |  561|     66|  goto RETURN_SWITCH;\
  |  |  562|     66|  }
  ------------------
 2566|     16|        break;
 2567|       |
 2568|    284|        case PT_CLIST:
  ------------------
  |  | 1303|    284|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (2568:9): [True: 284, False: 1.04M]
  ------------------
 2569|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 2570|       |            if (fc > MAX_UTF_CODE_POINT)
 2571|       |              {
 2572|       |              if (notmatch) break;;
 2573|       |              RRETURN(MATCH_NOMATCH);
 2574|       |              }
 2575|       |#endif
 2576|    284|        cp = PRIV(ucd_caseless_sets) + Fecode[2];
  ------------------
  |  |  195|    284|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|    284|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    284|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    284|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    284|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      cp = PRIV(ucd_caseless_sets) + Fecode[2];
  ------------------
  |  |  181|    284|#define Fecode             F->ecode
  ------------------
 2577|    284|        for (;;)
 2578|    355|          {
 2579|    355|          if (fc < *cp)
  ------------------
  |  Branch (2579:15): [True: 280, False: 75]
  ------------------
 2580|    280|            { if (notmatch) break; else { RRETURN(MATCH_NOMATCH); } }
  ------------------
  |  |  559|     97|  {\
  |  |  560|     97|  rrc = ra;\
  |  |  561|     97|  goto RETURN_SWITCH;\
  |  |  562|     97|  }
  ------------------
  |  Branch (2580:19): [True: 183, False: 97]
  ------------------
 2581|     75|          if (fc == *cp++)
  ------------------
  |  Branch (2581:15): [True: 4, False: 71]
  ------------------
 2582|      4|            { if (notmatch) { RRETURN(MATCH_NOMATCH); } else break; }
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
  |  Branch (2582:19): [True: 1, False: 3]
  ------------------
 2583|     75|          }
 2584|    186|        break;
 2585|       |
 2586|    186|        case PT_UCNC:
  ------------------
  |  | 1304|      0|#define PT_UCNC      11    /* Universal Character nameable character */
  ------------------
  |  Branch (2586:9): [True: 0, False: 1.04M]
  ------------------
 2587|      0|        if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1004|      0|#define CHAR_DOLLAR_SIGN            '\044'
  ------------------
                      if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1032|      0|#define CHAR_COMMERCIAL_AT          '\100'
  ------------------
  |  Branch (2587:13): [True: 0, False: 0]
  |  Branch (2587:14): [True: 0, False: 0]
  |  Branch (2587:40): [True: 0, False: 0]
  ------------------
 2588|      0|             fc == CHAR_GRAVE_ACCENT || (fc >= 0xa0 && fc <= 0xd7ff) ||
  ------------------
  |  | 1064|      0|#define CHAR_GRAVE_ACCENT           '\140'
  ------------------
  |  Branch (2588:14): [True: 0, False: 0]
  |  Branch (2588:42): [True: 0, False: 0]
  |  Branch (2588:56): [True: 0, False: 0]
  ------------------
 2589|      0|             fc >= 0xe000) == notmatch)
  ------------------
  |  Branch (2589:14): [True: 0, False: 0]
  ------------------
 2590|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2591|      0|        break;
 2592|       |
 2593|      0|        case PT_BIDICL:
  ------------------
  |  | 1305|      0|#define PT_BIDICL    12    /* Specified bidi class */
  ------------------
  |  Branch (2593:9): [True: 0, False: 1.04M]
  ------------------
 2594|      0|        if ((UCD_BIDICLASS_PROP(prop) == Fecode[2]) == notmatch)
  ------------------
  |  | 1881|      0|#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
  |  |  ------------------
  |  |  |  | 1877|      0|#define UCD_BIDICLASS_SHIFT 11
  |  |  ------------------
  ------------------
                      if ((UCD_BIDICLASS_PROP(prop) == Fecode[2]) == notmatch)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (2594:13): [True: 0, False: 0]
  ------------------
 2595|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2596|      0|        break;
 2597|       |
 2598|      0|        case PT_BOOL:
  ------------------
  |  | 1306|      0|#define PT_BOOL      13    /* Boolean property */
  ------------------
  |  Branch (2598:9): [True: 0, False: 1.04M]
  ------------------
 2599|      0|          {
 2600|      0|          BOOL ok = MAPBIT(PRIV(ucd_boolprop_sets) +
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
 2601|      0|            UCD_BPROPS_PROP(prop), Fecode[2]) != 0;
 2602|      0|          if (ok == notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2602:15): [True: 0, False: 0]
  ------------------
 2603|      0|          }
 2604|      0|        break;
 2605|       |
 2606|       |        /* This should never occur */
 2607|       |
 2608|      0|        default:
  ------------------
  |  Branch (2608:9): [True: 0, False: 1.04M]
  ------------------
 2609|      0|        return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 2610|  1.04M|        }
 2611|       |
 2612|   947k|      Fecode += 3;
  ------------------
  |  |  181|   947k|#define Fecode             F->ecode
  ------------------
 2613|   947k|      }
 2614|      0|    break;
 2615|       |
 2616|       |
 2617|       |    /* ===================================================================== */
 2618|       |    /* Match an extended Unicode sequence. We will get here only if the support
 2619|       |    is in the binary; otherwise a compile-time error occurs. */
 2620|       |
 2621|  11.7k|    case OP_EXTUNI:
  ------------------
  |  Branch (2621:5): [True: 11.7k, False: 28.4M]
  ------------------
 2622|  11.7k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  11.7k|#define Feptr              F->eptr
  ------------------
  |  Branch (2622:9): [True: 516, False: 11.2k]
  ------------------
 2623|    516|      {
 2624|    516|      SCHECK_PARTIAL();
  ------------------
  |  |  538|    516|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 516]
  |  |  ------------------
  |  |  539|    516|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    516|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2625|    516|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    516|  {\
  |  |  560|    516|  rrc = ra;\
  |  |  561|    516|  goto RETURN_SWITCH;\
  |  |  562|    516|  }
  ------------------
 2626|      0|      }
 2627|  11.2k|    else
 2628|  11.2k|      {
 2629|  11.2k|      GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  11.2k|  c = *eptr++; \
  |  |  324|  11.2k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|    480|    { \
  |  |  |  |  307|    480|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 480]
  |  |  |  |  ------------------
  |  |  |  |  308|    480|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|    480|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 480, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|    480|      { \
  |  |  |  |  311|    480|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|    480|      eptr += 2; \
  |  |  |  |  313|    480|      } \
  |  |  |  |  314|    480|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|    480|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 11.1k, False: 99]
  |  |  |  Branch (324:14): [True: 480, False: 10.6k]
  |  |  ------------------
  ------------------
 2630|  11.2k|      Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject, utf,
  ------------------
  |  |  182|  11.2k|#define Feptr              F->eptr
  ------------------
                    Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject, utf,
  ------------------
  |  |  195|  11.2k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2022|  11.2k|#define _pcre2_extuni                PCRE2_SUFFIX(_pcre2_extuni_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  11.2k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  11.2k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  11.2k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject, utf,
  ------------------
  |  |  182|  11.2k|#define Feptr              F->eptr
  ------------------
 2631|  11.2k|        NULL);
 2632|  11.2k|      }
 2633|  11.2k|    CHECK_PARTIAL();
  ------------------
  |  |  532|  11.2k|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|  11.2k|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 517, False: 10.7k]
  |  |  ------------------
  |  |  533|  11.2k|    { \
  |  |  534|    517|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|    517|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 517]
  |  |  |  |  ------------------
  |  |  |  |  539|    517|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|    517|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|    517|    }
  ------------------
 2634|  11.2k|    Fecode++;
  ------------------
  |  |  181|  11.2k|#define Fecode             F->ecode
  ------------------
 2635|  11.2k|    break;
 2636|       |
 2637|      0|#endif  /* SUPPORT_UNICODE */
 2638|       |
 2639|       |
 2640|       |    /* ===================================================================== */
 2641|       |    /* Match a single character type repeatedly. Note that the property type
 2642|       |    does not need to be in a stack frame as it is not used within an RMATCH()
 2643|       |    loop. */
 2644|       |
 2645|      0|#define Lstart_eptr  F->temp_sptr[0]
 2646|      0|#define Lmin         F->temp_32[0]
 2647|      0|#define Lmax         F->temp_32[1]
 2648|      0|#define Lctype       F->temp_32[2]
 2649|      0|#define Lpropvalue   F->temp_32[3]
 2650|       |
 2651|      0|    case OP_TYPEEXACT:
  ------------------
  |  Branch (2651:5): [True: 0, False: 28.4M]
  ------------------
 2652|      0|    Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                  Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmin = Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 2653|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 2654|      0|    goto REPEATTYPE;
 2655|       |
 2656|      0|    case OP_TYPEUPTO:
  ------------------
  |  Branch (2656:5): [True: 0, False: 28.4M]
  ------------------
 2657|      0|    case OP_TYPEMINUPTO:
  ------------------
  |  Branch (2657:5): [True: 0, False: 28.4M]
  ------------------
 2658|      0|    Lmin = 0;
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
 2659|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 2660|      0|    reptype = (*Fecode == OP_TYPEMINUPTO)? REPTYPE_MIN : REPTYPE_MAX;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (2660:15): [True: 0, False: 0]
  ------------------
 2661|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 2662|      0|    goto REPEATTYPE;
 2663|       |
 2664|  83.8k|    case OP_TYPEPOSSTAR:
  ------------------
  |  Branch (2664:5): [True: 83.8k, False: 28.3M]
  ------------------
 2665|  83.8k|    reptype = REPTYPE_POS;
 2666|  83.8k|    Lmin = 0;
  ------------------
  |  | 2646|  83.8k|#define Lmin         F->temp_32[0]
  ------------------
 2667|  83.8k|    Lmax = UINT32_MAX;
  ------------------
  |  | 2647|  83.8k|#define Lmax         F->temp_32[1]
  ------------------
 2668|  83.8k|    Fecode++;
  ------------------
  |  |  181|  83.8k|#define Fecode             F->ecode
  ------------------
 2669|  83.8k|    goto REPEATTYPE;
 2670|       |
 2671|   689k|    case OP_TYPEPOSPLUS:
  ------------------
  |  Branch (2671:5): [True: 689k, False: 27.7M]
  ------------------
 2672|   689k|    reptype = REPTYPE_POS;
 2673|   689k|    Lmin = 1;
  ------------------
  |  | 2646|   689k|#define Lmin         F->temp_32[0]
  ------------------
 2674|   689k|    Lmax = UINT32_MAX;
  ------------------
  |  | 2647|   689k|#define Lmax         F->temp_32[1]
  ------------------
 2675|   689k|    Fecode++;
  ------------------
  |  |  181|   689k|#define Fecode             F->ecode
  ------------------
 2676|   689k|    goto REPEATTYPE;
 2677|       |
 2678|    409|    case OP_TYPEPOSQUERY:
  ------------------
  |  Branch (2678:5): [True: 409, False: 28.4M]
  ------------------
 2679|    409|    reptype = REPTYPE_POS;
 2680|    409|    Lmin = 0;
  ------------------
  |  | 2646|    409|#define Lmin         F->temp_32[0]
  ------------------
 2681|    409|    Lmax = 1;
  ------------------
  |  | 2647|    409|#define Lmax         F->temp_32[1]
  ------------------
 2682|    409|    Fecode++;
  ------------------
  |  |  181|    409|#define Fecode             F->ecode
  ------------------
 2683|    409|    goto REPEATTYPE;
 2684|       |
 2685|      0|    case OP_TYPEPOSUPTO:
  ------------------
  |  Branch (2685:5): [True: 0, False: 28.4M]
  ------------------
 2686|      0|    reptype = REPTYPE_POS;
 2687|      0|    Lmin = 0;
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
 2688|      0|    Lmax = GET2(Fecode, 1);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 2689|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 2690|      0|    goto REPEATTYPE;
 2691|       |
 2692|  3.24k|    case OP_TYPESTAR:
  ------------------
  |  Branch (2692:5): [True: 3.24k, False: 28.4M]
  ------------------
 2693|  3.26k|    case OP_TYPEMINSTAR:
  ------------------
  |  Branch (2693:5): [True: 12, False: 28.4M]
  ------------------
 2694|  1.53M|    case OP_TYPEPLUS:
  ------------------
  |  Branch (2694:5): [True: 1.52M, False: 26.9M]
  ------------------
 2695|  1.54M|    case OP_TYPEMINPLUS:
  ------------------
  |  Branch (2695:5): [True: 15.6k, False: 28.4M]
  ------------------
 2696|  1.55M|    case OP_TYPEQUERY:
  ------------------
  |  Branch (2696:5): [True: 6.28k, False: 28.4M]
  ------------------
 2697|  2.19M|    case OP_TYPEMINQUERY:
  ------------------
  |  Branch (2697:5): [True: 646k, False: 27.8M]
  ------------------
 2698|  2.19M|    fc = *Fecode++ - OP_TYPESTAR;
  ------------------
  |  |  181|  2.19M|#define Fecode             F->ecode
  ------------------
 2699|  2.19M|    Lmin = rep_min[fc];
  ------------------
  |  | 2646|  2.19M|#define Lmin         F->temp_32[0]
  ------------------
 2700|  2.19M|    Lmax = rep_max[fc];
  ------------------
  |  | 2647|  2.19M|#define Lmax         F->temp_32[1]
  ------------------
 2701|  2.19M|    reptype = rep_typ[fc];
 2702|       |
 2703|       |    /* Common code for all repeated character type matches. */
 2704|       |
 2705|  2.97M|    REPEATTYPE:
 2706|  2.97M|    Lctype = *Fecode++;      /* Code for the character type */
  ------------------
  |  | 2648|  2.97M|#define Lctype       F->temp_32[2]
  ------------------
                  Lctype = *Fecode++;      /* Code for the character type */
  ------------------
  |  |  181|  2.97M|#define Fecode             F->ecode
  ------------------
 2707|       |
 2708|  2.97M|#ifdef SUPPORT_UNICODE
 2709|  2.97M|    if (Lctype == OP_PROP || Lctype == OP_NOTPROP)
  ------------------
  |  | 2648|  2.97M|#define Lctype       F->temp_32[2]
  ------------------
                  if (Lctype == OP_PROP || Lctype == OP_NOTPROP)
  ------------------
  |  | 2648|  2.97M|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (2709:9): [True: 652, False: 2.97M]
  |  Branch (2709:30): [True: 895k, False: 2.07M]
  ------------------
 2710|   895k|      {
 2711|   895k|      proptype = *Fecode++;
  ------------------
  |  |  181|   895k|#define Fecode             F->ecode
  ------------------
 2712|   895k|      Lpropvalue = *Fecode++;
  ------------------
  |  | 2649|   895k|#define Lpropvalue   F->temp_32[3]
  ------------------
                    Lpropvalue = *Fecode++;
  ------------------
  |  |  181|   895k|#define Fecode             F->ecode
  ------------------
 2713|   895k|      }
 2714|  2.07M|    else proptype = -1;
 2715|  2.97M|#endif
 2716|       |
 2717|       |    /* First, ensure the minimum number of matches are present. Use inline
 2718|       |    code for maximizing the speed, and do the type test once at the start
 2719|       |    (i.e. keep it out of the loops). As there are no calls to RMATCH in the
 2720|       |    loops, we can use an ordinary variable for "notmatch". The code for UTF
 2721|       |    mode is separated out for tidiness, except for Unicode property tests. */
 2722|       |
 2723|  2.97M|    if (Lmin > 0)
  ------------------
  |  | 2646|  2.97M|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2723:9): [True: 2.23M, False: 740k]
  ------------------
 2724|  2.23M|      {
 2725|  2.23M|#ifdef SUPPORT_UNICODE
 2726|  2.23M|      if (proptype >= 0)  /* Property tests in all modes */
  ------------------
  |  Branch (2726:11): [True: 162k, False: 2.06M]
  ------------------
 2727|   162k|        {
 2728|   162k|        BOOL notmatch = Lctype == OP_NOTPROP;
  ------------------
  |  | 2648|   162k|#define Lctype       F->temp_32[2]
  ------------------
 2729|   162k|        switch(proptype)
 2730|   162k|          {
 2731|      0|          case PT_ANY:
  ------------------
  |  | 1293|      0|#define PT_ANY        0    /* Any property - matches all chars */
  ------------------
  |  Branch (2731:11): [True: 0, False: 162k]
  ------------------
 2732|      0|          if (notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (2732:15): [True: 0, False: 0]
  ------------------
 2733|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2733:23): [True: 0, False: 0]
  ------------------
 2734|      0|            {
 2735|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2735:17): [True: 0, False: 0]
  ------------------
 2736|      0|              {
 2737|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2738|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2739|      0|              }
 2740|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2741|      0|            }
 2742|      0|          break;
 2743|       |
 2744|      0|          case PT_LAMP:
  ------------------
  |  | 1294|      0|#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
  ------------------
  |  Branch (2744:11): [True: 0, False: 162k]
  ------------------
 2745|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2745:23): [True: 0, False: 0]
  ------------------
 2746|      0|            {
 2747|      0|            int chartype;
 2748|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2748:17): [True: 0, False: 0]
  ------------------
 2749|      0|              {
 2750|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2751|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2752|      0|              }
 2753|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2754|      0|            chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2755|      0|            if ((chartype == ucp_Lu ||
  ------------------
  |  Branch (2755:17): [True: 0, False: 0]
  |  Branch (2755:18): [True: 0, False: 0]
  ------------------
 2756|      0|                 chartype == ucp_Ll ||
  ------------------
  |  Branch (2756:18): [True: 0, False: 0]
  ------------------
 2757|      0|                 chartype == ucp_Lt) == notmatch)
  ------------------
  |  Branch (2757:18): [True: 0, False: 0]
  ------------------
 2758|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2759|      0|            }
 2760|      0|          break;
 2761|       |
 2762|      0|          case PT_GC:
  ------------------
  |  | 1295|      0|#define PT_GC         2    /* Specified general characteristic (e.g. L) */
  ------------------
  |  Branch (2762:11): [True: 0, False: 162k]
  ------------------
 2763|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2763:23): [True: 0, False: 0]
  ------------------
 2764|      0|            {
 2765|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2765:17): [True: 0, False: 0]
  ------------------
 2766|      0|              {
 2767|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2768|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2769|      0|              }
 2770|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2771|      0|            if ((UCD_CATEGORY(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 1886|      0|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_CATEGORY(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (2771:17): [True: 0, False: 0]
  ------------------
 2772|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2773|      0|            }
 2774|      0|          break;
 2775|       |
 2776|     96|          case PT_PC:
  ------------------
  |  | 1296|     96|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
  |  Branch (2776:11): [True: 96, False: 162k]
  ------------------
 2777|    192|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    192|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2777:23): [True: 96, False: 96]
  ------------------
 2778|     96|            {
 2779|     96|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     96|#define Feptr              F->eptr
  ------------------
  |  Branch (2779:17): [True: 0, False: 96]
  ------------------
 2780|      0|              {
 2781|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2782|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2783|      0|              }
 2784|     96|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|     96|  c = *eptr++; \
  |  |  324|     96|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 96, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 96]
  |  |  ------------------
  ------------------
 2785|     96|            if ((UCD_CHARTYPE(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 1884|     96|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|     96|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|     96|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     96|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|     96|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     96|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     96|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     96|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|     96|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     96|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|     96|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     96|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     96|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     96|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     96|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|     96|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     96|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     96|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     96|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     96|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|     96|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     96|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     96|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_CHARTYPE(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 2649|     96|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (2785:17): [True: 0, False: 96]
  ------------------
 2786|     96|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2787|     96|            }
 2788|     96|          break;
 2789|       |
 2790|     96|          case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (2790:11): [True: 0, False: 162k]
  ------------------
 2791|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2791:23): [True: 0, False: 0]
  ------------------
 2792|      0|            {
 2793|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2793:17): [True: 0, False: 0]
  ------------------
 2794|      0|              {
 2795|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2796|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2797|      0|              }
 2798|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2799|      0|            if ((UCD_SCRIPT(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 1885|      0|#define UCD_SCRIPT(ch)      GET_UCD(ch)->script
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_SCRIPT(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (2799:17): [True: 0, False: 0]
  ------------------
 2800|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2801|      0|            }
 2802|      0|          break;
 2803|       |
 2804|      0|          case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (2804:11): [True: 0, False: 162k]
  ------------------
 2805|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2805:23): [True: 0, False: 0]
  ------------------
 2806|      0|            {
 2807|      0|            BOOL ok;
 2808|      0|            const ucd_record *prop;
 2809|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2809:17): [True: 0, False: 0]
  ------------------
 2810|      0|              {
 2811|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2812|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2813|      0|              }
 2814|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2815|      0|            prop = GET_UCD(fc);
  ------------------
  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2816|      0|            ok = (prop->script == Lpropvalue ||
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (2816:19): [True: 0, False: 0]
  ------------------
 2817|      0|                  MAPBIT(PRIV(ucd_script_sets) + UCD_SCRIPTX_PROP(prop), Lpropvalue) != 0);
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  |  Branch (2817:19): [True: 0, False: 0]
  ------------------
 2818|      0|            if (ok == notmatch)
  ------------------
  |  Branch (2818:17): [True: 0, False: 0]
  ------------------
 2819|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2820|      0|            }
 2821|      0|          break;
 2822|       |
 2823|      0|          case PT_ALNUM:
  ------------------
  |  | 1299|      0|#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
  ------------------
  |  Branch (2823:11): [True: 0, False: 162k]
  ------------------
 2824|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2824:23): [True: 0, False: 0]
  ------------------
 2825|      0|            {
 2826|      0|            int category;
 2827|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2827:17): [True: 0, False: 0]
  ------------------
 2828|      0|              {
 2829|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2830|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2831|      0|              }
 2832|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2833|      0|            category = UCD_CATEGORY(fc);
  ------------------
  |  | 1886|      0|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2834|      0|            if ((category == ucp_L || category == ucp_N) == notmatch)
  ------------------
  |  Branch (2834:17): [True: 0, False: 0]
  |  Branch (2834:18): [True: 0, False: 0]
  |  Branch (2834:39): [True: 0, False: 0]
  ------------------
 2835|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2836|      0|            }
 2837|      0|          break;
 2838|       |
 2839|       |          /* Perl space used to exclude VT, but from Perl 5.18 it is included,
 2840|       |          which means that Perl space and POSIX space are now identical. PCRE
 2841|       |          was changed at release 8.34. */
 2842|       |
 2843|   162k|          case PT_SPACE:    /* Perl space */
  ------------------
  |  | 1300|   162k|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
  |  Branch (2843:11): [True: 162k, False: 623]
  ------------------
 2844|   162k|          case PT_PXSPACE:  /* POSIX space */
  ------------------
  |  | 1301|   162k|#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
  ------------------
  |  Branch (2844:11): [True: 0, False: 162k]
  ------------------
 2845|   311k|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|   311k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2845:23): [True: 162k, False: 149k]
  ------------------
 2846|   162k|            {
 2847|   162k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   162k|#define Feptr              F->eptr
  ------------------
  |  Branch (2847:17): [True: 6.48k, False: 155k]
  ------------------
 2848|  6.48k|              {
 2849|  6.48k|              SCHECK_PARTIAL();
  ------------------
  |  |  538|  6.48k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 6.48k]
  |  |  ------------------
  |  |  539|  6.48k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  6.48k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2850|  6.48k|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  6.48k|  {\
  |  |  560|  6.48k|  rrc = ra;\
  |  |  561|  6.48k|  goto RETURN_SWITCH;\
  |  |  562|  6.48k|  }
  ------------------
 2851|      0|              }
 2852|   155k|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|   155k|  c = *eptr++; \
  |  |  324|   155k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|  11.3k|    { \
  |  |  |  |  307|  11.3k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 42, False: 11.2k]
  |  |  |  |  ------------------
  |  |  |  |  308|  11.3k|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|  11.3k|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 6.30k, False: 4.95k]
  |  |  |  |  ------------------
  |  |  |  |  310|  11.2k|      { \
  |  |  |  |  311|  6.30k|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|  6.30k|      eptr += 2; \
  |  |  |  |  313|  6.30k|      } \
  |  |  |  |  314|  11.2k|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 4.95k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|  4.95k|      { \
  |  |  |  |  316|  4.95k|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|  4.95k|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|  4.95k|      eptr += 3; \
  |  |  |  |  319|  4.95k|      } \
  |  |  |  |  320|  4.95k|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|  11.3k|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 155k, False: 0]
  |  |  |  Branch (324:14): [True: 11.3k, False: 144k]
  |  |  ------------------
  ------------------
 2853|   155k|            switch(fc)
 2854|   155k|              {
 2855|  9.70k|              HSPACE_CASES:
  ------------------
  |  |  430|    538|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|     24|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|     24|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 24, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  426|    538|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|    538|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 514, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  427|    538|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|    538|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|    538|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  408|    538|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  409|    538|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  410|    538|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  411|    538|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  412|    538|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  413|    538|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  414|    538|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  415|    538|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  416|    538|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  417|    538|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  418|    538|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  419|    538|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  420|    538|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  421|    538|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  422|    538|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 2856|  39.9k|              VSPACE_CASES:
  ------------------
  |  |  448|  6.58k|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|    756|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|    756|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 218, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  442|  6.45k|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|  6.45k|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 5.69k, False: 150k]
  |  |  |  |  ------------------
  |  |  |  |  443|  6.45k|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|  6.45k|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  444|  6.58k|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|  6.58k|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 130, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  445|  6.58k|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    538|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|  6.58k|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|  6.58k|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  |  |  438|  6.58k|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 2857|  39.9k|              if (notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  6.57k|  {\
  |  |  560|  6.57k|  rrc = ra;\
  |  |  561|  6.57k|  goto RETURN_SWITCH;\
  |  |  562|  6.57k|  }
  ------------------
  |  Branch (2857:19): [True: 6.57k, False: 7]
  ------------------
 2858|      7|              break;
 2859|       |
 2860|   149k|              default:
  ------------------
  |  Branch (2860:15): [True: 149k, False: 6.58k]
  ------------------
 2861|   149k|              if ((UCD_CATEGORY(fc) == ucp_Z) == notmatch)
  ------------------
  |  | 1886|   149k|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|   149k|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|   149k|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|   149k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|   149k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|   149k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|   149k|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|   149k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|   149k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|   149k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|   149k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|   149k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   149k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   149k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|   149k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|   149k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|   149k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|   149k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   149k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   149k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|   149k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|   149k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|   149k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   149k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   149k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|   149k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|   149k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|   149k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|   149k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2861:19): [True: 47, False: 149k]
  ------------------
 2862|   149k|                RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     47|  {\
  |  |  560|     47|  rrc = ra;\
  |  |  561|     47|  goto RETURN_SWITCH;\
  |  |  562|     47|  }
  ------------------
 2863|   149k|              break;
 2864|   155k|              }
 2865|   155k|            }
 2866|   149k|          break;
 2867|       |
 2868|   149k|          case PT_WORD:
  ------------------
  |  | 1302|    395|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
  |  Branch (2868:11): [True: 395, False: 162k]
  ------------------
 2869|    549|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    549|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2869:23): [True: 395, False: 154]
  ------------------
 2870|    395|            {
 2871|    395|            int chartype, category;
 2872|    395|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    395|#define Feptr              F->eptr
  ------------------
  |  Branch (2872:17): [True: 7, False: 388]
  ------------------
 2873|      7|              {
 2874|      7|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      7|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 7]
  |  |  ------------------
  |  |  539|      7|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      7|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2875|      7|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      7|  {\
  |  |  560|      7|  rrc = ra;\
  |  |  561|      7|  goto RETURN_SWITCH;\
  |  |  562|      7|  }
  ------------------
 2876|      0|              }
 2877|    388|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    388|  c = *eptr++; \
  |  |  324|    388|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      7|    { \
  |  |  |  |  307|      7|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      7|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      7|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      7|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 388, False: 0]
  |  |  |  Branch (324:14): [True: 7, False: 381]
  |  |  ------------------
  ------------------
 2878|    388|            chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|    388|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|    388|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|    388|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    388|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|    388|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    388|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    388|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    388|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|    388|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    388|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|    388|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    388|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    388|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    388|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    388|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|    388|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    388|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    388|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    388|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    388|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|    388|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    388|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    388|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2879|    388|            category = PRIV(ucp_gentype)[chartype];
  ------------------
  |  |  195|    388|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|    388|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    388|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    388|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    388|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2880|    388|            if ((category == ucp_L || category == ucp_N ||
  ------------------
  |  Branch (2880:17): [True: 234, False: 154]
  |  Branch (2880:18): [True: 82, False: 306]
  |  Branch (2880:39): [True: 36, False: 270]
  ------------------
 2881|    270|                 chartype == ucp_Mn || chartype == ucp_Pc) == notmatch)
  ------------------
  |  Branch (2881:18): [True: 0, False: 270]
  |  Branch (2881:40): [True: 5, False: 265]
  ------------------
 2882|    234|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    234|  {\
  |  |  560|    234|  rrc = ra;\
  |  |  561|    234|  goto RETURN_SWITCH;\
  |  |  562|    234|  }
  ------------------
 2883|    154|            }
 2884|    154|          break;
 2885|       |
 2886|    154|          case PT_CLIST:
  ------------------
  |  | 1303|    132|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (2886:11): [True: 132, False: 162k]
  ------------------
 2887|    260|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    260|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2887:23): [True: 132, False: 128]
  ------------------
 2888|    132|            {
 2889|    132|            const uint32_t *cp;
 2890|    132|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    132|#define Feptr              F->eptr
  ------------------
  |  Branch (2890:17): [True: 0, False: 132]
  ------------------
 2891|      0|              {
 2892|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2893|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2894|      0|              }
 2895|    132|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    132|  c = *eptr++; \
  |  |  324|    132|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      7|    { \
  |  |  |  |  307|      7|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 5, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  308|      7|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      7|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  310|      2|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      2|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      2|      { \
  |  |  |  |  316|      2|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      2|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      2|      eptr += 3; \
  |  |  |  |  319|      2|      } \
  |  |  |  |  320|      2|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      7|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 132, False: 0]
  |  |  |  Branch (324:14): [True: 7, False: 125]
  |  |  ------------------
  ------------------
 2896|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 2897|       |            if (fc > MAX_UTF_CODE_POINT)
 2898|       |              {
 2899|       |              if (notmatch) continue;
 2900|       |              RRETURN(MATCH_NOMATCH);
 2901|       |              }
 2902|       |#endif
 2903|    132|            cp = PRIV(ucd_caseless_sets) + Lpropvalue;
  ------------------
  |  |  195|    132|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|    132|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    132|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    132|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    132|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          cp = PRIV(ucd_caseless_sets) + Lpropvalue;
  ------------------
  |  | 2649|    132|#define Lpropvalue   F->temp_32[3]
  ------------------
 2904|    132|            for (;;)
 2905|    171|              {
 2906|    171|              if (fc < *cp)
  ------------------
  |  Branch (2906:19): [True: 128, False: 43]
  ------------------
 2907|    128|                {
 2908|    128|                if (notmatch) break;
  ------------------
  |  Branch (2908:21): [True: 128, False: 0]
  ------------------
 2909|    128|                RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2910|      0|                }
 2911|     43|              if (fc == *cp++)
  ------------------
  |  Branch (2911:19): [True: 4, False: 39]
  ------------------
 2912|      4|                {
 2913|      4|                if (notmatch) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      4|  {\
  |  |  560|      4|  rrc = ra;\
  |  |  561|      4|  goto RETURN_SWITCH;\
  |  |  562|      4|  }
  ------------------
  |  Branch (2913:21): [True: 4, False: 0]
  ------------------
 2914|      0|                break;
 2915|      4|                }
 2916|     43|              }
 2917|    132|            }
 2918|    128|          break;
 2919|       |
 2920|    128|          case PT_UCNC:
  ------------------
  |  | 1304|      0|#define PT_UCNC      11    /* Universal Character nameable character */
  ------------------
  |  Branch (2920:11): [True: 0, False: 162k]
  ------------------
 2921|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2921:23): [True: 0, False: 0]
  ------------------
 2922|      0|            {
 2923|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2923:17): [True: 0, False: 0]
  ------------------
 2924|      0|              {
 2925|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2926|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2927|      0|              }
 2928|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2929|      0|            if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1004|      0|#define CHAR_DOLLAR_SIGN            '\044'
  ------------------
                          if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1032|      0|#define CHAR_COMMERCIAL_AT          '\100'
  ------------------
  |  Branch (2929:17): [True: 0, False: 0]
  |  Branch (2929:18): [True: 0, False: 0]
  |  Branch (2929:44): [True: 0, False: 0]
  ------------------
 2930|      0|                 fc == CHAR_GRAVE_ACCENT || (fc >= 0xa0 && fc <= 0xd7ff) ||
  ------------------
  |  | 1064|      0|#define CHAR_GRAVE_ACCENT           '\140'
  ------------------
  |  Branch (2930:18): [True: 0, False: 0]
  |  Branch (2930:46): [True: 0, False: 0]
  |  Branch (2930:60): [True: 0, False: 0]
  ------------------
 2931|      0|                 fc >= 0xe000) == notmatch)
  ------------------
  |  Branch (2931:18): [True: 0, False: 0]
  ------------------
 2932|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2933|      0|            }
 2934|      0|          break;
 2935|       |
 2936|      0|          case PT_BIDICL:
  ------------------
  |  | 1305|      0|#define PT_BIDICL    12    /* Specified bidi class */
  ------------------
  |  Branch (2936:11): [True: 0, False: 162k]
  ------------------
 2937|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2937:23): [True: 0, False: 0]
  ------------------
 2938|      0|            {
 2939|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2939:17): [True: 0, False: 0]
  ------------------
 2940|      0|              {
 2941|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2942|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2943|      0|              }
 2944|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2945|      0|            if ((UCD_BIDICLASS(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 1892|      0|#define UCD_BIDICLASS(ch)   UCD_BIDICLASS_PROP(GET_UCD(ch))
  |  |  ------------------
  |  |  |  | 1881|      0|#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1877|      0|#define UCD_BIDICLASS_SHIFT 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_BIDICLASS(fc) == Lpropvalue) == notmatch)
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (2945:17): [True: 0, False: 0]
  ------------------
 2946|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2947|      0|            }
 2948|      0|          break;
 2949|       |
 2950|      0|          case PT_BOOL:
  ------------------
  |  | 1306|      0|#define PT_BOOL      13    /* Boolean property */
  ------------------
  |  Branch (2950:11): [True: 0, False: 162k]
  ------------------
 2951|      0|          for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2951:23): [True: 0, False: 0]
  ------------------
 2952|      0|            {
 2953|      0|            BOOL ok;
 2954|      0|            const ucd_record *prop;
 2955|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (2955:17): [True: 0, False: 0]
  ------------------
 2956|      0|              {
 2957|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2958|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2959|      0|              }
 2960|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2961|      0|            prop = GET_UCD(fc);
  ------------------
  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2962|      0|            ok = MAPBIT(PRIV(ucd_boolprop_sets) +
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
 2963|      0|              UCD_BPROPS_PROP(prop), Lpropvalue) != 0;
 2964|      0|            if (ok == notmatch)
  ------------------
  |  Branch (2964:17): [True: 0, False: 0]
  ------------------
 2965|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 2966|      0|            }
 2967|      0|          break;
 2968|       |
 2969|       |          /* This should not occur */
 2970|       |
 2971|      0|          default:
  ------------------
  |  Branch (2971:11): [True: 0, False: 162k]
  ------------------
 2972|      0|          return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 2973|   162k|          }
 2974|   162k|        }
 2975|       |
 2976|       |      /* Match extended Unicode sequences. We will get here only if the
 2977|       |      support is in the binary; otherwise a compile-time error occurs. */
 2978|       |
 2979|  2.06M|      else if (Lctype == OP_EXTUNI)
  ------------------
  |  | 2648|  2.06M|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (2979:16): [True: 630, False: 2.06M]
  ------------------
 2980|    630|        {
 2981|  1.24k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|  1.24k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (2981:21): [True: 630, False: 615]
  ------------------
 2982|    630|          {
 2983|    630|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    630|#define Feptr              F->eptr
  ------------------
  |  Branch (2983:15): [True: 15, False: 615]
  ------------------
 2984|     15|            {
 2985|     15|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     15|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 15]
  |  |  ------------------
  |  |  539|     15|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     15|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 2986|     15|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     15|  {\
  |  |  560|     15|  rrc = ra;\
  |  |  561|     15|  goto RETURN_SWITCH;\
  |  |  562|     15|  }
  ------------------
 2987|      0|            }
 2988|    615|          else
 2989|    615|            {
 2990|    615|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    615|  c = *eptr++; \
  |  |  324|    615|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 615]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2991|    615|            Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject,
  ------------------
  |  |  182|    615|#define Feptr              F->eptr
  ------------------
                          Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject,
  ------------------
  |  |  195|    615|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2022|    615|#define _pcre2_extuni                PCRE2_SUFFIX(_pcre2_extuni_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    615|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    615|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    615|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject,
  ------------------
  |  |  182|    615|#define Feptr              F->eptr
  ------------------
 2992|    615|              mb->end_subject, utf, NULL);
 2993|    615|            }
 2994|    615|          CHECK_PARTIAL();
  ------------------
  |  |  532|    615|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|    615|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 16, False: 599]
  |  |  ------------------
  |  |  533|    615|    { \
  |  |  534|     16|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|     16|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  |  |  539|     16|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|     16|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|     16|    }
  ------------------
 2995|    615|          }
 2996|    630|        }
 2997|  2.06M|      else
 2998|  2.06M|#endif     /* SUPPORT_UNICODE */
 2999|       |
 3000|       |/* Handle all other cases in UTF mode */
 3001|       |
 3002|  2.06M|#ifdef SUPPORT_UNICODE
 3003|  2.06M|      if (utf) switch(Lctype)
  ------------------
  |  | 2648|  1.87M|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3003:11): [True: 1.87M, False: 196k]
  ------------------
 3004|  1.87M|        {
 3005|    175|        case OP_ANY:
  ------------------
  |  Branch (3005:9): [True: 175, False: 1.87M]
  ------------------
 3006|    350|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    350|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3006:21): [True: 175, False: 175]
  ------------------
 3007|    175|          {
 3008|    175|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    175|#define Feptr              F->eptr
  ------------------
  |  Branch (3008:15): [True: 0, False: 175]
  ------------------
 3009|      0|            {
 3010|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3011|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3012|      0|            }
 3013|    175|          if (IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  497|    175|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|    175|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|    175|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 0, False: 175]
  |  |  |  Branch (497:4): [True: 0, False: 175]
  |  |  ------------------
  |  |  498|    175|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|    175|    : \
  |  |  502|    175|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|    175|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|    175|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|    175|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 175, False: 0]
  |  |  ------------------
  |  |  503|    175|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|    175|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|    175|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 0, False: 175]
  |  |  ------------------
  |  |  504|    175|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 0, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|    175|    ) \
  |  |  506|    175|  )
  ------------------
                        if (IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3014|    175|          if (mb->partial != 0 &&
  ------------------
  |  Branch (3014:15): [True: 0, False: 175]
  ------------------
 3015|      0|              Feptr + 1 >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3015:15): [True: 0, False: 0]
  ------------------
 3016|      0|              NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                            NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|    175|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (3016:15): [True: 0, False: 0]
  ------------------
 3017|      0|              NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3017:15): [True: 0, False: 0]
  ------------------
 3018|      0|              UCHAR21(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                            UCHAR21(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3018:15): [True: 0, False: 0]
  ------------------
 3019|      0|            {
 3020|      0|            mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3021|      0|            if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (3021:17): [True: 0, False: 0]
  ------------------
 3022|      0|            }
 3023|    175|          Feptr++;
  ------------------
  |  |  182|    175|#define Feptr              F->eptr
  ------------------
 3024|    175|          ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|    177|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 177, False: 0]
  |  |  |  Branch (353:24): [True: 2, False: 175]
  |  |  ------------------
  ------------------
 3025|    175|          }
 3026|    175|        break;
 3027|       |
 3028|  1.35M|        case OP_ALLANY:
  ------------------
  |  Branch (3028:9): [True: 1.35M, False: 520k]
  ------------------
 3029|  2.64M|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|  2.64M|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3029:21): [True: 1.35M, False: 1.29M]
  ------------------
 3030|  1.35M|          {
 3031|  1.35M|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.35M|#define Feptr              F->eptr
  ------------------
  |  Branch (3031:15): [True: 53.5k, False: 1.29M]
  ------------------
 3032|  53.5k|            {
 3033|  53.5k|            SCHECK_PARTIAL();
  ------------------
  |  |  538|  53.5k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 53.5k]
  |  |  ------------------
  |  |  539|  53.5k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  53.5k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3034|  53.5k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  53.5k|  {\
  |  |  560|  53.5k|  rrc = ra;\
  |  |  561|  53.5k|  goto RETURN_SWITCH;\
  |  |  562|  53.5k|  }
  ------------------
 3035|      0|            }
 3036|  1.29M|          Feptr++;
  ------------------
  |  |  182|  1.29M|#define Feptr              F->eptr
  ------------------
 3037|  1.29M|          ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|  1.60M|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 1.55M, False: 47.6k]
  |  |  |  Branch (353:24): [True: 305k, False: 1.25M]
  |  |  ------------------
  ------------------
 3038|  1.29M|          }
 3039|  1.29M|        break;
 3040|       |
 3041|  1.29M|        case OP_ANYBYTE:
  ------------------
  |  Branch (3041:9): [True: 55, False: 1.87M]
  ------------------
 3042|     55|        if (Feptr > mb->end_subject - Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|     55|#define Feptr              F->eptr
  ------------------
                      if (Feptr > mb->end_subject - Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|     55|#define Lmin         F->temp_32[0]
  ------------------
                      if (Feptr > mb->end_subject - Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3042:13): [True: 0, False: 55]
  ------------------
 3043|     55|        Feptr += Lmin;
  ------------------
  |  |  182|     55|#define Feptr              F->eptr
  ------------------
                      Feptr += Lmin;
  ------------------
  |  | 2646|     55|#define Lmin         F->temp_32[0]
  ------------------
 3044|     55|        break;
 3045|       |
 3046|   510k|        case OP_ANYNL:
  ------------------
  |  Branch (3046:9): [True: 510k, False: 1.36M]
  ------------------
 3047|   538k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|   538k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3047:21): [True: 510k, False: 27.4k]
  ------------------
 3048|   510k|          {
 3049|   510k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   510k|#define Feptr              F->eptr
  ------------------
  |  Branch (3049:15): [True: 14.9k, False: 495k]
  ------------------
 3050|  14.9k|            {
 3051|  14.9k|            SCHECK_PARTIAL();
  ------------------
  |  |  538|  14.9k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 14.9k]
  |  |  ------------------
  |  |  539|  14.9k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  14.9k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3052|  14.9k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  14.9k|  {\
  |  |  560|  14.9k|  rrc = ra;\
  |  |  561|  14.9k|  goto RETURN_SWITCH;\
  |  |  562|  14.9k|  }
  ------------------
 3053|      0|            }
 3054|   495k|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|   495k|  c = *eptr++; \
  |  |  317|   495k|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|  13.3k|    { \
  |  |  |  |  307|  13.3k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 13.3k]
  |  |  |  |  ------------------
  |  |  |  |  308|  13.3k|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|  13.3k|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 13.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|  13.3k|      { \
  |  |  |  |  311|  13.3k|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|  13.3k|      eptr += 2; \
  |  |  |  |  313|  13.3k|      } \
  |  |  |  |  314|  13.3k|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|  13.3k|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 13.3k, False: 482k]
  |  |  ------------------
  ------------------
 3055|   495k|          switch(fc)
 3056|   495k|            {
 3057|   468k|            default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|   468k|  {\
  |  |  560|   468k|  rrc = ra;\
  |  |  561|   468k|  goto RETURN_SWITCH;\
  |  |  562|   468k|  }
  ------------------
  |  Branch (3057:13): [True: 468k, False: 27.4k]
  ------------------
 3058|       |
 3059|     30|            case CHAR_CR:
  ------------------
  |  |  990|     30|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (3059:13): [True: 30, False: 495k]
  ------------------
 3060|     30|            if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  182|     30|#define Feptr              F->eptr
  ------------------
                          if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  243|     30|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                          if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  991|     30|#define CHAR_LF                     '\012'
  ------------------
                          if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      1|#define Feptr              F->eptr
  ------------------
  |  Branch (3060:17): [True: 30, False: 0]
  |  Branch (3060:44): [True: 1, False: 29]
  ------------------
 3061|     30|            break;
 3062|       |
 3063|  15.8k|            case CHAR_LF:
  ------------------
  |  |  991|  15.8k|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (3063:13): [True: 15.8k, False: 480k]
  ------------------
 3064|  15.8k|            break;
 3065|       |
 3066|  11.6k|            case CHAR_VT:
  ------------------
  |  |  988|  11.6k|#define CHAR_VT                     '\013'
  ------------------
  |  Branch (3066:13): [True: 11.6k, False: 484k]
  ------------------
 3067|  11.6k|            case CHAR_FF:
  ------------------
  |  |  989|  11.6k|#define CHAR_FF                     '\014'
  ------------------
  |  Branch (3067:13): [True: 1, False: 495k]
  ------------------
 3068|  11.6k|            case CHAR_NEL:
  ------------------
  |  |  993|  11.6k|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (3068:13): [True: 0, False: 495k]
  ------------------
 3069|  11.6k|#ifndef EBCDIC
 3070|  11.6k|            case 0x2028:
  ------------------
  |  Branch (3070:13): [True: 0, False: 495k]
  ------------------
 3071|  11.6k|            case 0x2029:
  ------------------
  |  Branch (3071:13): [True: 0, False: 495k]
  ------------------
 3072|  11.6k|#endif  /* Not EBCDIC */
 3073|  11.6k|            if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  218|  11.6k|#define PCRE2_BSR_ANYCRLF         2
  ------------------
                          if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3073:17): [True: 0, False: 11.6k]
  ------------------
 3074|  11.6k|            break;
 3075|   495k|            }
 3076|   495k|          }
 3077|  27.4k|        break;
 3078|       |
 3079|  27.4k|        case OP_NOT_HSPACE:
  ------------------
  |  Branch (3079:9): [True: 107, False: 1.87M]
  ------------------
 3080|    213|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    213|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3080:21): [True: 107, False: 106]
  ------------------
 3081|    107|          {
 3082|    107|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    107|#define Feptr              F->eptr
  ------------------
  |  Branch (3082:15): [True: 0, False: 107]
  ------------------
 3083|      0|            {
 3084|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3085|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3086|      0|            }
 3087|    107|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|    107|  c = *eptr++; \
  |  |  317|    107|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 0, False: 107]
  |  |  ------------------
  ------------------
 3088|    107|          switch(fc)
 3089|    107|            {
 3090|      1|            HSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  430|      1|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  426|      1|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      1|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 1, False: 106]
  |  |  |  |  ------------------
  |  |  |  |  427|      1|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      1|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      1|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  408|      1|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  409|      1|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  410|      1|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  411|      1|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  412|      1|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  413|      1|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  414|      1|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  415|      1|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  416|      1|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  417|      1|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  418|      1|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  419|      1|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  420|      1|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  421|      1|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 107]
  |  |  |  |  ------------------
  |  |  |  |  422|      1|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
                          HSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
 3091|    106|            default: break;
  ------------------
  |  Branch (3091:13): [True: 106, False: 1]
  ------------------
 3092|    107|            }
 3093|    107|          }
 3094|    106|        break;
 3095|       |
 3096|  3.37k|        case OP_HSPACE:
  ------------------
  |  Branch (3096:9): [True: 3.37k, False: 1.86M]
  ------------------
 3097|  3.99k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|  3.99k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3097:21): [True: 3.37k, False: 615]
  ------------------
 3098|  3.37k|          {
 3099|  3.37k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  3.37k|#define Feptr              F->eptr
  ------------------
  |  Branch (3099:15): [True: 67, False: 3.30k]
  ------------------
 3100|     67|            {
 3101|     67|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     67|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 67]
  |  |  ------------------
  |  |  539|     67|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     67|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3102|     67|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     67|  {\
  |  |  560|     67|  rrc = ra;\
  |  |  561|     67|  goto RETURN_SWITCH;\
  |  |  562|     67|  }
  ------------------
 3103|      0|            }
 3104|  3.30k|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|  3.30k|  c = *eptr++; \
  |  |  317|  3.30k|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     63|    { \
  |  |  |  |  307|     63|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 63]
  |  |  |  |  ------------------
  |  |  |  |  308|     63|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     63|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 63, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|     63|      { \
  |  |  |  |  311|     63|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|     63|      eptr += 2; \
  |  |  |  |  313|     63|      } \
  |  |  |  |  314|     63|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     63|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 63, False: 3.24k]
  |  |  ------------------
  ------------------
 3105|  3.30k|          switch(fc)
 3106|  3.30k|            {
 3107|    615|            HSPACE_CASES: break;
  ------------------
  |  |  430|    615|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|    130|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|    130|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 130, False: 3.17k]
  |  |  |  |  ------------------
  |  |  |  |  426|    615|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|    615|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 485, False: 2.82k]
  |  |  |  |  ------------------
  |  |  |  |  427|    615|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|    615|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|    615|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  408|    615|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  409|    615|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  410|    615|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  411|    615|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  412|    615|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  413|    615|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  414|    615|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  415|    615|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  416|    615|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  417|    615|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  418|    615|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  419|    615|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  420|    615|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  421|    615|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 3.30k]
  |  |  |  |  ------------------
  |  |  |  |  422|    615|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 3108|  2.69k|            default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  2.69k|  {\
  |  |  560|  2.69k|  rrc = ra;\
  |  |  561|  2.69k|  goto RETURN_SWITCH;\
  |  |  562|  2.69k|  }
  ------------------
  |  Branch (3108:13): [True: 2.69k, False: 615]
  ------------------
 3109|  3.30k|            }
 3110|  3.30k|          }
 3111|    615|        break;
 3112|       |
 3113|  5.83k|        case OP_NOT_VSPACE:
  ------------------
  |  Branch (3113:9): [True: 5.83k, False: 1.86M]
  ------------------
 3114|  11.3k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|  11.3k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3114:21): [True: 5.83k, False: 5.54k]
  ------------------
 3115|  5.83k|          {
 3116|  5.83k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  5.83k|#define Feptr              F->eptr
  ------------------
  |  Branch (3116:15): [True: 97, False: 5.73k]
  ------------------
 3117|     97|            {
 3118|     97|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     97|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 97]
  |  |  ------------------
  |  |  539|     97|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     97|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3119|     97|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     97|  {\
  |  |  560|     97|  rrc = ra;\
  |  |  561|     97|  goto RETURN_SWITCH;\
  |  |  562|     97|  }
  ------------------
 3120|      0|            }
 3121|  5.73k|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|  5.73k|  c = *eptr++; \
  |  |  317|  5.73k|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     30|    { \
  |  |  |  |  307|     30|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 15, False: 15]
  |  |  |  |  ------------------
  |  |  |  |  308|     30|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     30|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 1, False: 14]
  |  |  |  |  ------------------
  |  |  |  |  310|     15|      { \
  |  |  |  |  311|      1|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      1|      eptr += 2; \
  |  |  |  |  313|      1|      } \
  |  |  |  |  314|     15|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|     14|      { \
  |  |  |  |  316|     14|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|     14|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|     14|      eptr += 3; \
  |  |  |  |  319|     14|      } \
  |  |  |  |  320|     14|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     30|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 30, False: 5.70k]
  |  |  ------------------
  ------------------
 3122|  5.73k|          switch(fc)
 3123|  5.73k|            {
 3124|    193|            VSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  448|    193|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      2|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      2|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 2, False: 5.73k]
  |  |  |  |  ------------------
  |  |  |  |  442|     32|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|     32|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 30, False: 5.70k]
  |  |  |  |  ------------------
  |  |  |  |  443|    174|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|    174|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 142, False: 5.59k]
  |  |  |  |  ------------------
  |  |  |  |  444|    193|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|    193|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 19, False: 5.71k]
  |  |  |  |  ------------------
  |  |  |  |  445|    193|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|    193|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|    193|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 5.73k]
  |  |  |  |  ------------------
  |  |  |  |  438|    193|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
                          VSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    193|  {\
  |  |  560|    193|  rrc = ra;\
  |  |  561|    193|  goto RETURN_SWITCH;\
  |  |  562|    193|  }
  ------------------
 3125|  5.54k|            default: break;
  ------------------
  |  Branch (3125:13): [True: 5.54k, False: 193]
  ------------------
 3126|  5.73k|            }
 3127|  5.73k|          }
 3128|  5.54k|        break;
 3129|       |
 3130|  5.54k|        case OP_VSPACE:
  ------------------
  |  Branch (3130:9): [True: 0, False: 1.87M]
  ------------------
 3131|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3131:21): [True: 0, False: 0]
  ------------------
 3132|      0|          {
 3133|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3133:15): [True: 0, False: 0]
  ------------------
 3134|      0|            {
 3135|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3136|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3137|      0|            }
 3138|      0|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|      0|  c = *eptr++; \
  |  |  317|      0|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3139|      0|          switch(fc)
 3140|      0|            {
 3141|      0|            VSPACE_CASES: break;
  ------------------
  |  |  448|      0|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      0|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  442|      0|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  443|      0|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  444|      0|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  445|      0|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      0|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      0|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  438|      0|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 3142|      0|            default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3142:13): [True: 0, False: 0]
  ------------------
 3143|      0|            }
 3144|      0|          }
 3145|      0|        break;
 3146|       |
 3147|      0|        case OP_NOT_DIGIT:
  ------------------
  |  Branch (3147:9): [True: 0, False: 1.87M]
  ------------------
 3148|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3148:21): [True: 0, False: 0]
  ------------------
 3149|      0|          {
 3150|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3150:15): [True: 0, False: 0]
  ------------------
 3151|      0|            {
 3152|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3153|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3154|      0|            }
 3155|      0|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|      0|  c = *eptr++; \
  |  |  317|      0|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3156|      0|          if (fc < 128 && (mb->ctypes[fc] & ctype_digit) != 0)
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (3156:15): [True: 0, False: 0]
  |  Branch (3156:27): [True: 0, False: 0]
  ------------------
 3157|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3158|      0|          }
 3159|      0|        break;
 3160|       |
 3161|      0|        case OP_DIGIT:
  ------------------
  |  Branch (3161:9): [True: 0, False: 1.87M]
  ------------------
 3162|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3162:21): [True: 0, False: 0]
  ------------------
 3163|      0|          {
 3164|      0|          uint32_t cc;
 3165|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3165:15): [True: 0, False: 0]
  ------------------
 3166|      0|            {
 3167|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3168|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3169|      0|            }
 3170|      0|          cc = UCHAR21(Feptr);
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 3171|      0|          if (cc >= 128 || (mb->ctypes[cc] & ctype_digit) == 0)
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (3171:15): [True: 0, False: 0]
  |  Branch (3171:28): [True: 0, False: 0]
  ------------------
 3172|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3173|      0|          Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 3174|       |          /* No need to skip more code units - we know it has only one. */
 3175|      0|          }
 3176|      0|        break;
 3177|       |
 3178|      0|        case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (3178:9): [True: 0, False: 1.87M]
  ------------------
 3179|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3179:21): [True: 0, False: 0]
  ------------------
 3180|      0|          {
 3181|      0|          uint32_t cc;
 3182|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3182:15): [True: 0, False: 0]
  ------------------
 3183|      0|            {
 3184|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3185|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3186|      0|            }
 3187|      0|          cc = UCHAR21(Feptr);
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 3188|      0|          if (cc < 128 && (mb->ctypes[cc] & ctype_space) != 0)
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (3188:15): [True: 0, False: 0]
  |  Branch (3188:27): [True: 0, False: 0]
  ------------------
 3189|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3190|      0|          Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 3191|      0|          ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|      0|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 0, False: 0]
  |  |  |  Branch (353:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3192|      0|          }
 3193|      0|        break;
 3194|       |
 3195|      0|        case OP_WHITESPACE:
  ------------------
  |  Branch (3195:9): [True: 0, False: 1.87M]
  ------------------
 3196|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3196:21): [True: 0, False: 0]
  ------------------
 3197|      0|          {
 3198|      0|          uint32_t cc;
 3199|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3199:15): [True: 0, False: 0]
  ------------------
 3200|      0|            {
 3201|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3202|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3203|      0|            }
 3204|      0|          cc = UCHAR21(Feptr);
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 3205|      0|          if (cc >= 128 || (mb->ctypes[cc] & ctype_space) == 0)
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (3205:15): [True: 0, False: 0]
  |  Branch (3205:28): [True: 0, False: 0]
  ------------------
 3206|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3207|      0|          Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 3208|       |          /* No need to skip more code units - we know it has only one. */
 3209|      0|          }
 3210|      0|        break;
 3211|       |
 3212|      0|        case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (3212:9): [True: 0, False: 1.87M]
  ------------------
 3213|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3213:21): [True: 0, False: 0]
  ------------------
 3214|      0|          {
 3215|      0|          uint32_t cc;
 3216|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3216:15): [True: 0, False: 0]
  ------------------
 3217|      0|            {
 3218|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3219|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3220|      0|            }
 3221|      0|          cc = UCHAR21(Feptr);
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 3222|      0|          if (cc < 128 && (mb->ctypes[cc] & ctype_word) != 0)
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (3222:15): [True: 0, False: 0]
  |  Branch (3222:27): [True: 0, False: 0]
  ------------------
 3223|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3224|      0|          Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 3225|      0|          ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|      0|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 0, False: 0]
  |  |  |  Branch (353:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3226|      0|          }
 3227|      0|        break;
 3228|       |
 3229|      0|        case OP_WORDCHAR:
  ------------------
  |  Branch (3229:9): [True: 0, False: 1.87M]
  ------------------
 3230|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3230:21): [True: 0, False: 0]
  ------------------
 3231|      0|          {
 3232|      0|          uint32_t cc;
 3233|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3233:15): [True: 0, False: 0]
  ------------------
 3234|      0|            {
 3235|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3236|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3237|      0|            }
 3238|      0|          cc = UCHAR21(Feptr);
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
 3239|      0|          if (cc >= 128 || (mb->ctypes[cc] & ctype_word) == 0)
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (3239:15): [True: 0, False: 0]
  |  Branch (3239:28): [True: 0, False: 0]
  ------------------
 3240|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3241|      0|          Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 3242|       |          /* No need to skip more code units - we know it has only one. */
 3243|      0|          }
 3244|      0|        break;
 3245|       |
 3246|      0|        default:
  ------------------
  |  Branch (3246:9): [True: 0, False: 1.87M]
  ------------------
 3247|      0|        return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 3248|  1.87M|        }  /* End switch(Lctype) */
 3249|       |
 3250|   196k|      else
 3251|   196k|#endif     /* SUPPORT_UNICODE */
 3252|       |
 3253|       |      /* Code for the non-UTF case for minimum matching of operators other
 3254|       |      than OP_PROP and OP_NOTPROP. */
 3255|       |
 3256|   196k|      switch(Lctype)
  ------------------
  |  | 2648|   196k|#define Lctype       F->temp_32[2]
  ------------------
 3257|   196k|        {
 3258|  10.2k|        case OP_ANY:
  ------------------
  |  Branch (3258:9): [True: 10.2k, False: 186k]
  ------------------
 3259|  20.0k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|  20.0k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3259:21): [True: 10.2k, False: 9.75k]
  ------------------
 3260|  10.2k|          {
 3261|  10.2k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  10.2k|#define Feptr              F->eptr
  ------------------
  |  Branch (3261:15): [True: 188, False: 10.0k]
  ------------------
 3262|    188|            {
 3263|    188|            SCHECK_PARTIAL();
  ------------------
  |  |  538|    188|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 188]
  |  |  ------------------
  |  |  539|    188|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    188|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3264|    188|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    188|  {\
  |  |  560|    188|  rrc = ra;\
  |  |  561|    188|  goto RETURN_SWITCH;\
  |  |  562|    188|  }
  ------------------
 3265|      0|            }
 3266|  10.0k|          if (IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  497|  10.0k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|  10.0k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|  10.0k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 310, False: 9.75k]
  |  |  |  Branch (497:4): [True: 0, False: 10.0k]
  |  |  ------------------
  |  |  498|  10.0k|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|  10.0k|    : \
  |  |  502|  10.0k|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  10.0k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|  10.0k|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  10.0k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 10.0k, False: 0]
  |  |  ------------------
  |  |  503|  10.0k|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|  10.0k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|  10.0k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 310, False: 9.75k]
  |  |  ------------------
  |  |  504|  10.0k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|    310|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 310, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|  10.0k|    ) \
  |  |  506|  10.0k|  )
  ------------------
                        if (IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    310|  {\
  |  |  560|    310|  rrc = ra;\
  |  |  561|    310|  goto RETURN_SWITCH;\
  |  |  562|    310|  }
  ------------------
 3267|  9.75k|          if (mb->partial != 0 &&
  ------------------
  |  Branch (3267:15): [True: 0, False: 9.75k]
  ------------------
 3268|      0|              Feptr + 1 >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3268:15): [True: 0, False: 0]
  ------------------
 3269|      0|              NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                            NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|  9.75k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (3269:15): [True: 0, False: 0]
  ------------------
 3270|      0|              NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3270:15): [True: 0, False: 0]
  ------------------
 3271|      0|              *Feptr == NLBLOCK->nl[0])
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            *Feptr == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3271:15): [True: 0, False: 0]
  ------------------
 3272|      0|            {
 3273|      0|            mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3274|      0|            if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (3274:17): [True: 0, False: 0]
  ------------------
 3275|      0|            }
 3276|  9.75k|          Feptr++;
  ------------------
  |  |  182|  9.75k|#define Feptr              F->eptr
  ------------------
 3277|  9.75k|          }
 3278|  9.75k|        break;
 3279|       |
 3280|  9.75k|        case OP_ALLANY:
  ------------------
  |  Branch (3280:9): [True: 1.08k, False: 195k]
  ------------------
 3281|  1.08k|        if (Feptr > mb->end_subject - Lmin)
  ------------------
  |  |  182|  1.08k|#define Feptr              F->eptr
  ------------------
                      if (Feptr > mb->end_subject - Lmin)
  ------------------
  |  | 2646|  1.08k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3281:13): [True: 64, False: 1.01k]
  ------------------
 3282|     64|          {
 3283|     64|          SCHECK_PARTIAL();
  ------------------
  |  |  538|     64|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 64]
  |  |  ------------------
  |  |  539|     64|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     64|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3284|     64|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     64|  {\
  |  |  560|     64|  rrc = ra;\
  |  |  561|     64|  goto RETURN_SWITCH;\
  |  |  562|     64|  }
  ------------------
 3285|      0|          }
 3286|  1.01k|        Feptr += Lmin;
  ------------------
  |  |  182|  1.01k|#define Feptr              F->eptr
  ------------------
                      Feptr += Lmin;
  ------------------
  |  | 2646|  1.01k|#define Lmin         F->temp_32[0]
  ------------------
 3287|  1.01k|        break;
 3288|       |
 3289|       |        /* This OP_ANYBYTE case will never be reached because \C gets turned
 3290|       |        into OP_ALLANY in non-UTF mode. Cut out the code so that coverage
 3291|       |        reports don't complain about it's never being used. */
 3292|       |
 3293|       |/*        case OP_ANYBYTE:
 3294|       |*        if (Feptr > mb->end_subject - Lmin)
 3295|       |*          {
 3296|       |*          SCHECK_PARTIAL();
 3297|       |*          RRETURN(MATCH_NOMATCH);
 3298|       |*          }
 3299|       |*        Feptr += Lmin;
 3300|       |*        break;
 3301|       |*/
 3302|    156|        case OP_ANYNL:
  ------------------
  |  Branch (3302:9): [True: 156, False: 196k]
  ------------------
 3303|    178|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    178|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3303:21): [True: 156, False: 22]
  ------------------
 3304|    156|          {
 3305|    156|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    156|#define Feptr              F->eptr
  ------------------
  |  Branch (3305:15): [True: 0, False: 156]
  ------------------
 3306|      0|            {
 3307|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3308|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3309|      0|            }
 3310|    156|          switch(*Feptr++)
  ------------------
  |  |  182|    156|#define Feptr              F->eptr
  ------------------
 3311|    156|            {
 3312|    134|            default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    134|  {\
  |  |  560|    134|  rrc = ra;\
  |  |  561|    134|  goto RETURN_SWITCH;\
  |  |  562|    134|  }
  ------------------
  |  Branch (3312:13): [True: 134, False: 22]
  ------------------
 3313|       |
 3314|      0|            case CHAR_CR:
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (3314:13): [True: 0, False: 156]
  ------------------
 3315|      0|            if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
                          if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3315:17): [True: 0, False: 0]
  |  Branch (3315:44): [True: 0, False: 0]
  ------------------
 3316|      0|            break;
 3317|       |
 3318|      3|            case CHAR_LF:
  ------------------
  |  |  991|      3|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (3318:13): [True: 3, False: 153]
  ------------------
 3319|      3|            break;
 3320|       |
 3321|     18|            case CHAR_VT:
  ------------------
  |  |  988|     18|#define CHAR_VT                     '\013'
  ------------------
  |  Branch (3321:13): [True: 18, False: 138]
  ------------------
 3322|     19|            case CHAR_FF:
  ------------------
  |  |  989|     19|#define CHAR_FF                     '\014'
  ------------------
  |  Branch (3322:13): [True: 1, False: 155]
  ------------------
 3323|     19|            case CHAR_NEL:
  ------------------
  |  |  993|     19|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (3323:13): [True: 0, False: 156]
  ------------------
 3324|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 3325|       |            case 0x2028:
 3326|       |            case 0x2029:
 3327|       |#endif
 3328|     19|            if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  218|     19|#define PCRE2_BSR_ANYCRLF         2
  ------------------
                          if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3328:17): [True: 0, False: 19]
  ------------------
 3329|     19|            break;
 3330|    156|            }
 3331|    156|          }
 3332|     22|        break;
 3333|       |
 3334|     91|        case OP_NOT_HSPACE:
  ------------------
  |  Branch (3334:9): [True: 91, False: 196k]
  ------------------
 3335|    176|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    176|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3335:21): [True: 91, False: 85]
  ------------------
 3336|     91|          {
 3337|     91|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     91|#define Feptr              F->eptr
  ------------------
  |  Branch (3337:15): [True: 0, False: 91]
  ------------------
 3338|      0|            {
 3339|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3340|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3341|      0|            }
 3342|     91|          switch(*Feptr++)
  ------------------
  |  |  182|     91|#define Feptr              F->eptr
  ------------------
 3343|     91|            {
 3344|     85|            default: break;
  ------------------
  |  Branch (3344:13): [True: 85, False: 6]
  ------------------
 3345|     85|            HSPACE_BYTE_CASES:
  ------------------
  |  |  425|      2|  case CHAR_HT: \
  |  |  ------------------
  |  |  |  |  987|      2|#define CHAR_HT                     '\011'
  |  |  ------------------
  |  |  |  Branch (425:3): [True: 2, False: 89]
  |  |  ------------------
  |  |  426|      6|  case CHAR_SPACE: \
  |  |  ------------------
  |  |  |  | 1000|      6|#define CHAR_SPACE                  '\040'
  |  |  ------------------
  |  |  |  Branch (426:3): [True: 4, False: 87]
  |  |  ------------------
  |  |  427|     85|  case CHAR_NBSP
  |  |  ------------------
  |  |  |  | 1095|     85|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  ------------------
  ------------------
 3346|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 3347|       |            HSPACE_MULTIBYTE_CASES:
 3348|       |#endif
 3349|      6|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      6|  {\
  |  |  560|      6|  rrc = ra;\
  |  |  561|      6|  goto RETURN_SWITCH;\
  |  |  562|      6|  }
  ------------------
 3350|     91|            }
 3351|     91|          }
 3352|     85|        break;
 3353|       |
 3354|    263|        case OP_HSPACE:
  ------------------
  |  Branch (3354:9): [True: 263, False: 196k]
  ------------------
 3355|    263|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    263|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3355:21): [True: 263, False: 0]
  ------------------
 3356|    263|          {
 3357|    263|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    263|#define Feptr              F->eptr
  ------------------
  |  Branch (3357:15): [True: 16, False: 247]
  ------------------
 3358|     16|            {
 3359|     16|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     16|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 16]
  |  |  ------------------
  |  |  539|     16|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     16|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3360|     16|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     16|  {\
  |  |  560|     16|  rrc = ra;\
  |  |  561|     16|  goto RETURN_SWITCH;\
  |  |  562|     16|  }
  ------------------
 3361|      0|            }
 3362|    247|          switch(*Feptr++)
  ------------------
  |  |  182|    247|#define Feptr              F->eptr
  ------------------
 3363|    247|            {
 3364|    247|            default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    247|  {\
  |  |  560|    247|  rrc = ra;\
  |  |  561|    247|  goto RETURN_SWITCH;\
  |  |  562|    247|  }
  ------------------
  |  Branch (3364:13): [True: 247, False: 0]
  ------------------
 3365|      0|            HSPACE_BYTE_CASES:
  ------------------
  |  |  425|      0|  case CHAR_HT: \
  |  |  ------------------
  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  ------------------
  |  |  |  Branch (425:3): [True: 0, False: 247]
  |  |  ------------------
  |  |  426|      0|  case CHAR_SPACE: \
  |  |  ------------------
  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  ------------------
  |  |  |  Branch (426:3): [True: 0, False: 247]
  |  |  ------------------
  |  |  427|      0|  case CHAR_NBSP
  |  |  ------------------
  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  ------------------
  ------------------
 3366|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 3367|       |            HSPACE_MULTIBYTE_CASES:
 3368|       |#endif
 3369|      0|            break;
 3370|    247|            }
 3371|    247|          }
 3372|      0|        break;
 3373|       |
 3374|    131|        case OP_NOT_VSPACE:
  ------------------
  |  Branch (3374:9): [True: 131, False: 196k]
  ------------------
 3375|    254|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    254|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3375:21): [True: 131, False: 123]
  ------------------
 3376|    131|          {
 3377|    131|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    131|#define Feptr              F->eptr
  ------------------
  |  Branch (3377:15): [True: 0, False: 131]
  ------------------
 3378|      0|            {
 3379|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3380|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3381|      0|            }
 3382|    131|          switch(*Feptr++)
  ------------------
  |  |  182|    131|#define Feptr              F->eptr
  ------------------
 3383|    131|            {
 3384|      8|            VSPACE_BYTE_CASES:
  ------------------
  |  |  441|      5|  case CHAR_LF: \
  |  |  ------------------
  |  |  |  |  991|      5|#define CHAR_LF                     '\012'
  |  |  ------------------
  |  |  |  Branch (441:3): [True: 5, False: 126]
  |  |  ------------------
  |  |  442|      5|  case CHAR_VT: \
  |  |  ------------------
  |  |  |  |  988|      5|#define CHAR_VT                     '\013'
  |  |  ------------------
  |  |  |  Branch (442:3): [True: 0, False: 131]
  |  |  ------------------
  |  |  443|      8|  case CHAR_FF: \
  |  |  ------------------
  |  |  |  |  989|      8|#define CHAR_FF                     '\014'
  |  |  ------------------
  |  |  |  Branch (443:3): [True: 3, False: 128]
  |  |  ------------------
  |  |  444|      8|  case CHAR_CR: \
  |  |  ------------------
  |  |  |  |  990|      8|#define CHAR_CR                     '\015'
  |  |  ------------------
  |  |  |  Branch (444:3): [True: 0, False: 131]
  |  |  ------------------
  |  |  445|      8|  case CHAR_NEL
  |  |  ------------------
  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  ------------------
  ------------------
 3385|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 3386|       |            VSPACE_MULTIBYTE_CASES:
 3387|       |#endif
 3388|      8|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      8|  {\
  |  |  560|      8|  rrc = ra;\
  |  |  561|      8|  goto RETURN_SWITCH;\
  |  |  562|      8|  }
  ------------------
 3389|    123|            default: break;
  ------------------
  |  Branch (3389:13): [True: 123, False: 8]
  ------------------
 3390|    131|            }
 3391|    131|          }
 3392|    123|        break;
 3393|       |
 3394|    123|        case OP_VSPACE:
  ------------------
  |  Branch (3394:9): [True: 0, False: 196k]
  ------------------
 3395|      0|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3395:21): [True: 0, False: 0]
  ------------------
 3396|      0|          {
 3397|      0|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3397:15): [True: 0, False: 0]
  ------------------
 3398|      0|            {
 3399|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3400|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3401|      0|            }
 3402|      0|          switch(*Feptr++)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 3403|      0|            {
 3404|      0|            default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3404:13): [True: 0, False: 0]
  ------------------
 3405|      0|            VSPACE_BYTE_CASES:
  ------------------
  |  |  441|      0|  case CHAR_LF: \
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  442|      0|  case CHAR_VT: \
  |  |  ------------------
  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  ------------------
  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  443|      0|  case CHAR_FF: \
  |  |  ------------------
  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  ------------------
  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  444|      0|  case CHAR_CR: \
  |  |  ------------------
  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  ------------------
  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  445|      0|  case CHAR_NEL
  |  |  ------------------
  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  ------------------
  ------------------
 3406|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 3407|       |            VSPACE_MULTIBYTE_CASES:
 3408|       |#endif
 3409|      0|            break;
 3410|      0|            }
 3411|      0|          }
 3412|      0|        break;
 3413|       |
 3414|  5.98k|        case OP_NOT_DIGIT:
  ------------------
  |  Branch (3414:9): [True: 5.98k, False: 190k]
  ------------------
 3415|  10.1k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|  10.1k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3415:21): [True: 5.98k, False: 4.16k]
  ------------------
 3416|  5.98k|          {
 3417|  5.98k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  5.98k|#define Feptr              F->eptr
  ------------------
  |  Branch (3417:15): [True: 236, False: 5.74k]
  ------------------
 3418|    236|            {
 3419|    236|            SCHECK_PARTIAL();
  ------------------
  |  |  538|    236|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 236]
  |  |  ------------------
  |  |  539|    236|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    236|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3420|    236|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    236|  {\
  |  |  560|    236|  rrc = ra;\
  |  |  561|    236|  goto RETURN_SWITCH;\
  |  |  562|    236|  }
  ------------------
 3421|      0|            }
 3422|  5.74k|          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0)
  ------------------
  |  |  212|  5.74k|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|  11.4k|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 5.74k, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0)
  ------------------
  |  |  182|  5.74k|#define Feptr              F->eptr
  ------------------
                        if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0)
  ------------------
  |  |  600|  5.74k|#define ctype_digit    0x08
  ------------------
  |  Branch (3422:34): [True: 1.58k, False: 4.16k]
  ------------------
 3423|  4.16k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.58k|  {\
  |  |  560|  1.58k|  rrc = ra;\
  |  |  561|  1.58k|  goto RETURN_SWITCH;\
  |  |  562|  1.58k|  }
  ------------------
 3424|  4.16k|          Feptr++;
  ------------------
  |  |  182|  4.16k|#define Feptr              F->eptr
  ------------------
 3425|  4.16k|          }
 3426|  4.16k|        break;
 3427|       |
 3428|   178k|        case OP_DIGIT:
  ------------------
  |  Branch (3428:9): [True: 178k, False: 18.1k]
  ------------------
 3429|   178k|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|   178k|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3429:21): [True: 178k, False: 94]
  ------------------
 3430|   178k|          {
 3431|   178k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   178k|#define Feptr              F->eptr
  ------------------
  |  Branch (3431:15): [True: 5.20k, False: 172k]
  ------------------
 3432|  5.20k|            {
 3433|  5.20k|            SCHECK_PARTIAL();
  ------------------
  |  |  538|  5.20k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 5.20k]
  |  |  ------------------
  |  |  539|  5.20k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  5.20k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3434|  5.20k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  5.20k|  {\
  |  |  560|  5.20k|  rrc = ra;\
  |  |  561|  5.20k|  goto RETURN_SWITCH;\
  |  |  562|  5.20k|  }
  ------------------
 3435|      0|            }
 3436|   172k|          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0)
  ------------------
  |  |  212|   172k|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|   345k|#define TRUE    1
  |  |  ------------------
  ------------------
                        if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0)
  ------------------
  |  |  182|   172k|#define Feptr              F->eptr
  ------------------
                        if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0)
  ------------------
  |  |  600|   172k|#define ctype_digit    0x08
  ------------------
  |  Branch (3436:15): [Folded, False: 172k]
  |  Branch (3436:35): [True: 172k, False: 94]
  ------------------
 3437|   172k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|   172k|  {\
  |  |  560|   172k|  rrc = ra;\
  |  |  561|   172k|  goto RETURN_SWITCH;\
  |  |  562|   172k|  }
  ------------------
 3438|     94|          Feptr++;
  ------------------
  |  |  182|     94|#define Feptr              F->eptr
  ------------------
 3439|     94|          }
 3440|     94|        break;
 3441|       |
 3442|     94|        case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (3442:9): [True: 67, False: 196k]
  ------------------
 3443|    131|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|    131|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3443:21): [True: 67, False: 64]
  ------------------
 3444|     67|          {
 3445|     67|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     67|#define Feptr              F->eptr
  ------------------
  |  Branch (3445:15): [True: 2, False: 65]
  ------------------
 3446|      2|            {
 3447|      2|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      2|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  539|      2|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      2|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3448|      2|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      2|  {\
  |  |  560|      2|  rrc = ra;\
  |  |  561|      2|  goto RETURN_SWITCH;\
  |  |  562|      2|  }
  ------------------
 3449|      0|            }
 3450|     65|          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0)
  ------------------
  |  |  212|     65|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    130|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 65, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0)
  ------------------
  |  |  182|     65|#define Feptr              F->eptr
  ------------------
                        if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0)
  ------------------
  |  |  597|     65|#define ctype_space    0x01
  ------------------
  |  Branch (3450:34): [True: 1, False: 64]
  ------------------
 3451|     64|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
 3452|     64|          Feptr++;
  ------------------
  |  |  182|     64|#define Feptr              F->eptr
  ------------------
 3453|     64|          }
 3454|     64|        break;
 3455|       |
 3456|     73|        case OP_WHITESPACE:
  ------------------
  |  Branch (3456:9): [True: 73, False: 196k]
  ------------------
 3457|     95|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|     95|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3457:21): [True: 73, False: 22]
  ------------------
 3458|     73|          {
 3459|     73|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     73|#define Feptr              F->eptr
  ------------------
  |  Branch (3459:15): [True: 1, False: 72]
  ------------------
 3460|      1|            {
 3461|      1|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      1|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  539|      1|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      1|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3462|      1|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      1|  {\
  |  |  560|      1|  rrc = ra;\
  |  |  561|      1|  goto RETURN_SWITCH;\
  |  |  562|      1|  }
  ------------------
 3463|      0|            }
 3464|     72|          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0)
  ------------------
  |  |  212|     72|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    144|#define TRUE    1
  |  |  ------------------
  ------------------
                        if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0)
  ------------------
  |  |  182|     72|#define Feptr              F->eptr
  ------------------
                        if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0)
  ------------------
  |  |  597|     72|#define ctype_space    0x01
  ------------------
  |  Branch (3464:15): [Folded, False: 72]
  |  Branch (3464:35): [True: 50, False: 22]
  ------------------
 3465|     50|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     50|  {\
  |  |  560|     50|  rrc = ra;\
  |  |  561|     50|  goto RETURN_SWITCH;\
  |  |  562|     50|  }
  ------------------
 3466|     22|          Feptr++;
  ------------------
  |  |  182|     22|#define Feptr              F->eptr
  ------------------
 3467|     22|          }
 3468|     22|        break;
 3469|       |
 3470|     56|        case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (3470:9): [True: 56, False: 196k]
  ------------------
 3471|     99|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|     99|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3471:21): [True: 56, False: 43]
  ------------------
 3472|     56|          {
 3473|     56|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     56|#define Feptr              F->eptr
  ------------------
  |  Branch (3473:15): [True: 0, False: 56]
  ------------------
 3474|      0|            {
 3475|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3476|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3477|      0|            }
 3478|     56|          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0)
  ------------------
  |  |  212|     56|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    112|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 56, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0)
  ------------------
  |  |  182|     56|#define Feptr              F->eptr
  ------------------
                        if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0)
  ------------------
  |  |  601|     56|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (3478:34): [True: 13, False: 43]
  ------------------
 3479|     43|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     13|  {\
  |  |  560|     13|  rrc = ra;\
  |  |  561|     13|  goto RETURN_SWITCH;\
  |  |  562|     13|  }
  ------------------
 3480|     43|          Feptr++;
  ------------------
  |  |  182|     43|#define Feptr              F->eptr
  ------------------
 3481|     43|          }
 3482|     43|        break;
 3483|       |
 3484|     43|        case OP_WORDCHAR:
  ------------------
  |  Branch (3484:9): [True: 31, False: 196k]
  ------------------
 3485|     59|        for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 2646|     59|#define Lmin         F->temp_32[0]
  ------------------
  |  Branch (3485:21): [True: 31, False: 28]
  ------------------
 3486|     31|          {
 3487|     31|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     31|#define Feptr              F->eptr
  ------------------
  |  Branch (3487:15): [True: 0, False: 31]
  ------------------
 3488|      0|            {
 3489|      0|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3490|      0|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3491|      0|            }
 3492|     31|          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0)
  ------------------
  |  |  212|     31|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|     62|#define TRUE    1
  |  |  ------------------
  ------------------
                        if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0)
  ------------------
  |  |  182|     31|#define Feptr              F->eptr
  ------------------
                        if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0)
  ------------------
  |  |  601|     31|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (3492:15): [Folded, False: 31]
  |  Branch (3492:35): [True: 3, False: 28]
  ------------------
 3493|     28|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      3|  {\
  |  |  560|      3|  rrc = ra;\
  |  |  561|      3|  goto RETURN_SWITCH;\
  |  |  562|      3|  }
  ------------------
 3494|     28|          Feptr++;
  ------------------
  |  |  182|     28|#define Feptr              F->eptr
  ------------------
 3495|     28|          }
 3496|     28|        break;
 3497|       |
 3498|     28|        default:
  ------------------
  |  Branch (3498:9): [True: 0, False: 196k]
  ------------------
 3499|      0|        return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 3500|   196k|        }
 3501|  2.23M|      }
 3502|       |
 3503|       |    /* If Lmin = Lmax we are done. Continue with the main loop. */
 3504|       |
 3505|  2.23M|    if (Lmin == Lmax) continue;
  ------------------
  |  | 2646|  2.23M|#define Lmin         F->temp_32[0]
  ------------------
                  if (Lmin == Lmax) continue;
  ------------------
  |  | 2647|  2.23M|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (3505:9): [True: 0, False: 2.23M]
  ------------------
 3506|       |
 3507|       |    /* If minimizing, we have to test the rest of the pattern before each
 3508|       |    subsequent match. This means we cannot use a local "notmatch" variable as
 3509|       |    in the other cases. As all 4 temporary 32-bit values in the frame are
 3510|       |    already in use, just test the type each time. */
 3511|       |
 3512|  2.23M|    if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (3512:9): [True: 659k, False: 1.57M]
  ------------------
 3513|   659k|      {
 3514|   659k|#ifdef SUPPORT_UNICODE
 3515|   659k|      if (proptype >= 0)
  ------------------
  |  Branch (3515:11): [True: 647k, False: 12.2k]
  ------------------
 3516|   647k|        {
 3517|   647k|        switch(proptype)
 3518|   647k|          {
 3519|      0|          case PT_ANY:
  ------------------
  |  | 1293|      0|#define PT_ANY        0    /* Any property - matches all chars */
  ------------------
  |  Branch (3519:11): [True: 0, False: 647k]
  ------------------
 3520|      0|          for (;;)
 3521|      0|            {
 3522|      0|            RMATCH(Fecode, RM208);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3523|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3523:17): [True: 0, False: 0]
  ------------------
 3524|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3524:17): [True: 0, False: 0]
  ------------------
 3525|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3525:17): [True: 0, False: 0]
  ------------------
 3526|      0|              {
 3527|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3528|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3529|      0|              }
 3530|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3531|      0|            if (Lctype == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
                          if (Lctype == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3531:17): [True: 0, False: 0]
  ------------------
 3532|      0|            }
 3533|       |          /* Control never gets here */
 3534|       |
 3535|      0|          case PT_LAMP:
  ------------------
  |  | 1294|      0|#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
  ------------------
  |  Branch (3535:11): [True: 0, False: 647k]
  ------------------
 3536|      0|          for (;;)
 3537|      0|            {
 3538|      0|            int chartype;
 3539|      0|            RMATCH(Fecode, RM209);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3540|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3540:17): [True: 0, False: 0]
  ------------------
 3541|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3541:17): [True: 0, False: 0]
  ------------------
 3542|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3542:17): [True: 0, False: 0]
  ------------------
 3543|      0|              {
 3544|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3545|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3546|      0|              }
 3547|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3548|      0|            chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3549|      0|            if ((chartype == ucp_Lu ||
  ------------------
  |  Branch (3549:17): [True: 0, False: 0]
  |  Branch (3549:18): [True: 0, False: 0]
  ------------------
 3550|      0|                 chartype == ucp_Ll ||
  ------------------
  |  Branch (3550:18): [True: 0, False: 0]
  ------------------
 3551|      0|                 chartype == ucp_Lt) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3551:18): [True: 0, False: 0]
  ------------------
 3552|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3553|      0|            }
 3554|       |          /* Control never gets here */
 3555|       |
 3556|      0|          case PT_GC:
  ------------------
  |  | 1295|      0|#define PT_GC         2    /* Specified general characteristic (e.g. L) */
  ------------------
  |  Branch (3556:11): [True: 0, False: 647k]
  ------------------
 3557|      0|          for (;;)
 3558|      0|            {
 3559|      0|            RMATCH(Fecode, RM210);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3560|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3560:17): [True: 0, False: 0]
  ------------------
 3561|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3561:17): [True: 0, False: 0]
  ------------------
 3562|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3562:17): [True: 0, False: 0]
  ------------------
 3563|      0|              {
 3564|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3565|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3566|      0|              }
 3567|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3568|      0|            if ((UCD_CATEGORY(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 1886|      0|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_CATEGORY(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
                          if ((UCD_CATEGORY(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3568:17): [True: 0, False: 0]
  ------------------
 3569|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3570|      0|            }
 3571|       |          /* Control never gets here */
 3572|       |
 3573|      0|          case PT_PC:
  ------------------
  |  | 1296|      0|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
  |  Branch (3573:11): [True: 0, False: 647k]
  ------------------
 3574|      0|          for (;;)
 3575|      0|            {
 3576|      0|            RMATCH(Fecode, RM211);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3577|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3577:17): [True: 0, False: 0]
  ------------------
 3578|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3578:17): [True: 0, False: 0]
  ------------------
 3579|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3579:17): [True: 0, False: 0]
  ------------------
 3580|      0|              {
 3581|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3582|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3583|      0|              }
 3584|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3585|      0|            if ((UCD_CHARTYPE(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_CHARTYPE(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
                          if ((UCD_CHARTYPE(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3585:17): [True: 0, False: 0]
  ------------------
 3586|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3587|      0|            }
 3588|       |          /* Control never gets here */
 3589|       |
 3590|      0|          case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (3590:11): [True: 0, False: 647k]
  ------------------
 3591|      0|          for (;;)
 3592|      0|            {
 3593|      0|            RMATCH(Fecode, RM212);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3594|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3594:17): [True: 0, False: 0]
  ------------------
 3595|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3595:17): [True: 0, False: 0]
  ------------------
 3596|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3596:17): [True: 0, False: 0]
  ------------------
 3597|      0|              {
 3598|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3599|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3600|      0|              }
 3601|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3602|      0|            if ((UCD_SCRIPT(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 1885|      0|#define UCD_SCRIPT(ch)      GET_UCD(ch)->script
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_SCRIPT(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
                          if ((UCD_SCRIPT(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3602:17): [True: 0, False: 0]
  ------------------
 3603|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3604|      0|            }
 3605|       |          /* Control never gets here */
 3606|       |
 3607|      0|          case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (3607:11): [True: 0, False: 647k]
  ------------------
 3608|      0|          for (;;)
 3609|      0|            {
 3610|      0|            BOOL ok;
 3611|      0|            const ucd_record *prop;
 3612|      0|            RMATCH(Fecode, RM225);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3613|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3613:17): [True: 0, False: 0]
  ------------------
 3614|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3614:17): [True: 0, False: 0]
  ------------------
 3615|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3615:17): [True: 0, False: 0]
  ------------------
 3616|      0|              {
 3617|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3618|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3619|      0|              }
 3620|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3621|      0|            prop = GET_UCD(fc);
  ------------------
  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3622|      0|            ok = (prop->script == Lpropvalue
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (3622:19): [True: 0, False: 0]
  ------------------
 3623|      0|                  || MAPBIT(PRIV(ucd_script_sets) + UCD_SCRIPTX_PROP(prop), Lpropvalue) != 0);
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  |  Branch (3623:22): [True: 0, False: 0]
  ------------------
 3624|      0|            if (ok == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3624:17): [True: 0, False: 0]
  ------------------
 3625|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3626|      0|            }
 3627|       |          /* Control never gets here */
 3628|       |
 3629|      0|          case PT_ALNUM:
  ------------------
  |  | 1299|      0|#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
  ------------------
  |  Branch (3629:11): [True: 0, False: 647k]
  ------------------
 3630|      0|          for (;;)
 3631|      0|            {
 3632|      0|            int category;
 3633|      0|            RMATCH(Fecode, RM213);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3634|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3634:17): [True: 0, False: 0]
  ------------------
 3635|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3635:17): [True: 0, False: 0]
  ------------------
 3636|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3636:17): [True: 0, False: 0]
  ------------------
 3637|      0|              {
 3638|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3639|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3640|      0|              }
 3641|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3642|      0|            category = UCD_CATEGORY(fc);
  ------------------
  |  | 1886|      0|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3643|      0|            if ((category == ucp_L || category == ucp_N) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3643:17): [True: 0, False: 0]
  |  Branch (3643:18): [True: 0, False: 0]
  |  Branch (3643:39): [True: 0, False: 0]
  ------------------
 3644|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3645|      0|            }
 3646|       |          /* Control never gets here */
 3647|       |
 3648|       |          /* Perl space used to exclude VT, but from Perl 5.18 it is included,
 3649|       |          which means that Perl space and POSIX space are now identical. PCRE
 3650|       |          was changed at release 8.34. */
 3651|       |
 3652|   647k|          case PT_SPACE:    /* Perl space */
  ------------------
  |  | 1300|   647k|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
  |  Branch (3652:11): [True: 647k, False: 44]
  ------------------
 3653|   647k|          case PT_PXSPACE:  /* POSIX space */
  ------------------
  |  | 1301|   647k|#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
  ------------------
  |  Branch (3653:11): [True: 0, False: 647k]
  ------------------
 3654|   647k|          for (;;)
 3655|  1.23M|            {
 3656|  1.23M|            RMATCH(Fecode, RM214);
  ------------------
  |  |  551|  1.23M|  {\
  |  |  552|  1.23M|  start_ecode = ra;\
  |  |  553|  1.23M|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  1.23M|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  1.23M|  goto MATCH_RECURSE;\
  |  |  555|  1.23M|  L_##rb:;\
  |  |  556|  1.23M|  }
  ------------------
 3657|  1.23M|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  1.23M|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3657:17): [True: 0, False: 1.23M]
  ------------------
 3658|  1.23M|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|  1.23M|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|  1.23M|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|   572k|  {\
  |  |  560|   572k|  rrc = ra;\
  |  |  561|   572k|  goto RETURN_SWITCH;\
  |  |  562|   572k|  }
  ------------------
  |  Branch (3658:17): [True: 572k, False: 659k]
  ------------------
 3659|   659k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   659k|#define Feptr              F->eptr
  ------------------
  |  Branch (3659:17): [True: 19.6k, False: 639k]
  ------------------
 3660|  19.6k|              {
 3661|  19.6k|              SCHECK_PARTIAL();
  ------------------
  |  |  538|  19.6k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 19.6k]
  |  |  ------------------
  |  |  539|  19.6k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  19.6k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3662|  19.6k|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  19.6k|  {\
  |  |  560|  19.6k|  rrc = ra;\
  |  |  561|  19.6k|  goto RETURN_SWITCH;\
  |  |  562|  19.6k|  }
  ------------------
 3663|      0|              }
 3664|   639k|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|   639k|  c = *eptr++; \
  |  |  324|   639k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|  24.8k|    { \
  |  |  |  |  307|  24.8k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 20, False: 24.8k]
  |  |  |  |  ------------------
  |  |  |  |  308|  24.8k|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|  24.8k|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 18.2k, False: 6.55k]
  |  |  |  |  ------------------
  |  |  |  |  310|  24.8k|      { \
  |  |  |  |  311|  18.2k|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|  18.2k|      eptr += 2; \
  |  |  |  |  313|  18.2k|      } \
  |  |  |  |  314|  24.8k|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 6.55k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|  6.55k|      { \
  |  |  |  |  316|  6.55k|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|  6.55k|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|  6.55k|      eptr += 3; \
  |  |  |  |  319|  6.55k|      } \
  |  |  |  |  320|  6.55k|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|  24.8k|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 639k, False: 0]
  |  |  |  Branch (324:14): [True: 24.8k, False: 614k]
  |  |  ------------------
  ------------------
 3665|   639k|            switch(fc)
 3666|   639k|              {
 3667|   233k|              HSPACE_CASES:
  ------------------
  |  |  430|  12.6k|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|  4.75k|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|  4.75k|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 4.75k, False: 635k]
  |  |  |  |  ------------------
  |  |  |  |  426|  12.6k|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|  12.6k|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 7.93k, False: 631k]
  |  |  |  |  ------------------
  |  |  |  |  427|  12.6k|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|  12.6k|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|  12.6k|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  408|  12.6k|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  409|  12.6k|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  410|  12.6k|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  411|  12.6k|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  412|  12.6k|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  413|  12.6k|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  414|  12.6k|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  415|  12.6k|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  416|  12.6k|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  417|  12.6k|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  418|  12.6k|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  419|  12.6k|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  420|  12.6k|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  421|  12.6k|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  422|  12.6k|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 3668|   348k|              VSPACE_CASES:
  ------------------
  |  |  448|  55.3k|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|  31.2k|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|  31.2k|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 18.5k, False: 621k]
  |  |  |  |  ------------------
  |  |  |  |  442|  47.9k|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|  47.9k|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 16.7k, False: 623k]
  |  |  |  |  ------------------
  |  |  |  |  443|  47.9k|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|  47.9k|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  444|  55.3k|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|  55.3k|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 7.40k, False: 632k]
  |  |  |  |  ------------------
  |  |  |  |  445|  55.3k|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  12.6k|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|  55.3k|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|  55.3k|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 639k]
  |  |  |  |  ------------------
  |  |  |  |  438|  55.3k|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 3669|   348k|              if (Lctype == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2648|  55.3k|#define Lctype       F->temp_32[2]
  ------------------
                            if (Lctype == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  55.3k|  {\
  |  |  560|  55.3k|  rrc = ra;\
  |  |  561|  55.3k|  goto RETURN_SWITCH;\
  |  |  562|  55.3k|  }
  ------------------
  |  Branch (3669:19): [True: 55.3k, False: 0]
  ------------------
 3670|      0|              break;
 3671|       |
 3672|   584k|              default:
  ------------------
  |  Branch (3672:15): [True: 584k, False: 55.3k]
  ------------------
 3673|   584k|              if ((UCD_CATEGORY(fc) == ucp_Z) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 1886|   584k|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|   584k|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|   584k|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|   584k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|   584k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|   584k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|   584k|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|   584k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|   584k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|   584k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|   584k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|   584k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   584k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   584k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|   584k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|   584k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|   584k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|   584k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   584k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   584k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|   584k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|   584k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|   584k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   584k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   584k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|   584k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|   584k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|   584k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|   584k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                            if ((UCD_CATEGORY(fc) == ucp_Z) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|   584k|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3673:19): [True: 0, False: 584k]
  ------------------
 3674|   584k|                RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3675|   584k|              break;
 3676|   639k|              }
 3677|   639k|            }
 3678|       |          /* Control never gets here */
 3679|       |
 3680|     44|          case PT_WORD:
  ------------------
  |  | 1302|     44|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
  |  Branch (3680:11): [True: 44, False: 647k]
  ------------------
 3681|     44|          for (;;)
 3682|    218|            {
 3683|    218|            int chartype, category;
 3684|    218|            RMATCH(Fecode, RM215);
  ------------------
  |  |  551|    218|  {\
  |  |  552|    218|  start_ecode = ra;\
  |  |  553|    218|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|    218|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|    218|  goto MATCH_RECURSE;\
  |  |  555|    218|  L_##rb:;\
  |  |  556|    218|  }
  ------------------
 3685|    218|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|    218|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3685:17): [True: 0, False: 218]
  ------------------
 3686|    218|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|    218|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|    218|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3686:17): [True: 0, False: 218]
  ------------------
 3687|    218|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    218|#define Feptr              F->eptr
  ------------------
  |  Branch (3687:17): [True: 0, False: 218]
  ------------------
 3688|      0|              {
 3689|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3690|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3691|      0|              }
 3692|    218|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|    218|  c = *eptr++; \
  |  |  324|    218|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     15|    { \
  |  |  |  |  307|     15|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|     15|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     15|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     15|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 218, False: 0]
  |  |  |  Branch (324:14): [True: 15, False: 203]
  |  |  ------------------
  ------------------
 3693|    218|            chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|    218|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|    218|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|    218|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    218|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|    218|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    218|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    218|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    218|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|    218|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    218|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|    218|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    218|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    218|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    218|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|    218|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|    218|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    218|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    218|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    218|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    218|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|    218|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    218|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|    218|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3694|    218|            category = PRIV(ucp_gentype)[chartype];
  ------------------
  |  |  195|    218|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|    218|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    218|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    218|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    218|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3695|    218|            if ((category == ucp_L ||
  ------------------
  |  Branch (3695:17): [True: 44, False: 174]
  |  Branch (3695:18): [True: 44, False: 174]
  ------------------
 3696|    174|                 category == ucp_N ||
  ------------------
  |  Branch (3696:18): [True: 41, False: 133]
  ------------------
 3697|    133|                 chartype == ucp_Mn ||
  ------------------
  |  Branch (3697:18): [True: 0, False: 133]
  ------------------
 3698|    218|                 chartype == ucp_Pc) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|    218|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3698:18): [True: 3, False: 130]
  ------------------
 3699|    174|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     44|  {\
  |  |  560|     44|  rrc = ra;\
  |  |  561|     44|  goto RETURN_SWITCH;\
  |  |  562|     44|  }
  ------------------
 3700|    174|            }
 3701|       |          /* Control never gets here */
 3702|       |
 3703|      0|          case PT_CLIST:
  ------------------
  |  | 1303|      0|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (3703:11): [True: 0, False: 647k]
  ------------------
 3704|      0|          for (;;)
 3705|      0|            {
 3706|      0|            const uint32_t *cp;
 3707|      0|            RMATCH(Fecode, RM216);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3708|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3708:17): [True: 0, False: 0]
  ------------------
 3709|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3709:17): [True: 0, False: 0]
  ------------------
 3710|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3710:17): [True: 0, False: 0]
  ------------------
 3711|      0|              {
 3712|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3713|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3714|      0|              }
 3715|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3716|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 3717|       |            if (fc > MAX_UTF_CODE_POINT)
 3718|       |              {
 3719|       |              if (Lctype == OP_NOTPROP) continue;
 3720|       |              RRETURN(MATCH_NOMATCH);
 3721|       |              }
 3722|       |#endif
 3723|      0|            cp = PRIV(ucd_caseless_sets) + Lpropvalue;
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      0|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          cp = PRIV(ucd_caseless_sets) + Lpropvalue;
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
 3724|      0|            for (;;)
 3725|      0|              {
 3726|      0|              if (fc < *cp)
  ------------------
  |  Branch (3726:19): [True: 0, False: 0]
  ------------------
 3727|      0|                {
 3728|      0|                if (Lctype == OP_NOTPROP) break;
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3728:21): [True: 0, False: 0]
  ------------------
 3729|      0|                RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3730|      0|                }
 3731|      0|              if (fc == *cp++)
  ------------------
  |  Branch (3731:19): [True: 0, False: 0]
  ------------------
 3732|      0|                {
 3733|      0|                if (Lctype == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
                              if (Lctype == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3733:21): [True: 0, False: 0]
  ------------------
 3734|      0|                break;
 3735|      0|                }
 3736|      0|              }
 3737|      0|            }
 3738|       |          /* Control never gets here */
 3739|       |
 3740|      0|          case PT_UCNC:
  ------------------
  |  | 1304|      0|#define PT_UCNC      11    /* Universal Character nameable character */
  ------------------
  |  Branch (3740:11): [True: 0, False: 647k]
  ------------------
 3741|      0|          for (;;)
 3742|      0|            {
 3743|      0|            RMATCH(Fecode, RM217);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3744|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3744:17): [True: 0, False: 0]
  ------------------
 3745|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3745:17): [True: 0, False: 0]
  ------------------
 3746|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3746:17): [True: 0, False: 0]
  ------------------
 3747|      0|              {
 3748|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3749|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3750|      0|              }
 3751|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3752|      0|            if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1004|      0|#define CHAR_DOLLAR_SIGN            '\044'
  ------------------
                          if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1032|      0|#define CHAR_COMMERCIAL_AT          '\100'
  ------------------
  |  Branch (3752:17): [True: 0, False: 0]
  |  Branch (3752:18): [True: 0, False: 0]
  |  Branch (3752:44): [True: 0, False: 0]
  ------------------
 3753|      0|                 fc == CHAR_GRAVE_ACCENT || (fc >= 0xa0 && fc <= 0xd7ff) ||
  ------------------
  |  | 1064|      0|#define CHAR_GRAVE_ACCENT           '\140'
  ------------------
  |  Branch (3753:18): [True: 0, False: 0]
  |  Branch (3753:46): [True: 0, False: 0]
  |  Branch (3753:60): [True: 0, False: 0]
  ------------------
 3754|      0|                 fc >= 0xe000) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3754:18): [True: 0, False: 0]
  ------------------
 3755|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3756|      0|            }
 3757|       |          /* Control never gets here */
 3758|       |
 3759|      0|          case PT_BIDICL:
  ------------------
  |  | 1305|      0|#define PT_BIDICL    12    /* Specified bidi class */
  ------------------
  |  Branch (3759:11): [True: 0, False: 647k]
  ------------------
 3760|      0|          for (;;)
 3761|      0|            {
 3762|      0|            RMATCH(Fecode, RM224);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3763|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3763:17): [True: 0, False: 0]
  ------------------
 3764|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3764:17): [True: 0, False: 0]
  ------------------
 3765|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3765:17): [True: 0, False: 0]
  ------------------
 3766|      0|              {
 3767|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3768|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3769|      0|              }
 3770|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3771|      0|            if ((UCD_BIDICLASS(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 1892|      0|#define UCD_BIDICLASS(ch)   UCD_BIDICLASS_PROP(GET_UCD(ch))
  |  |  ------------------
  |  |  |  | 1881|      0|#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1877|      0|#define UCD_BIDICLASS_SHIFT 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_BIDICLASS(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
                          if ((UCD_BIDICLASS(fc) == Lpropvalue) == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3771:17): [True: 0, False: 0]
  ------------------
 3772|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3773|      0|            }
 3774|       |          /* Control never gets here */
 3775|       |
 3776|      0|          case PT_BOOL:
  ------------------
  |  | 1306|      0|#define PT_BOOL      13    /* Boolean property */
  ------------------
  |  Branch (3776:11): [True: 0, False: 647k]
  ------------------
 3777|      0|          for (;;)
 3778|      0|            {
 3779|      0|            BOOL ok;
 3780|      0|            const ucd_record *prop;
 3781|      0|            RMATCH(Fecode, RM223);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 3782|      0|            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3782:17): [True: 0, False: 0]
  ------------------
 3783|      0|            if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
                          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3783:17): [True: 0, False: 0]
  ------------------
 3784|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3784:17): [True: 0, False: 0]
  ------------------
 3785|      0|              {
 3786|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3787|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3788|      0|              }
 3789|      0|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|      0|  c = *eptr++; \
  |  |  324|      0|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 0]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3790|      0|            prop = GET_UCD(fc);
  ------------------
  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3791|      0|            ok = MAPBIT(PRIV(ucd_boolprop_sets) +
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
 3792|      0|              UCD_BPROPS_PROP(prop), Lpropvalue) != 0;
 3793|      0|            if (ok == (Lctype == OP_NOTPROP))
  ------------------
  |  | 2648|      0|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3793:17): [True: 0, False: 0]
  ------------------
 3794|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3795|      0|            }
 3796|       |          /* Control never gets here */
 3797|       |
 3798|       |          /* This should never occur */
 3799|      0|          default:
  ------------------
  |  Branch (3799:11): [True: 0, False: 647k]
  ------------------
 3800|      0|          return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 3801|   647k|          }
 3802|   647k|        }
 3803|       |
 3804|       |      /* Match extended Unicode sequences. We will get here only if the
 3805|       |      support is in the binary; otherwise a compile-time error occurs. */
 3806|       |
 3807|  12.2k|      else if (Lctype == OP_EXTUNI)
  ------------------
  |  | 2648|  12.2k|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (3807:16): [True: 85, False: 12.2k]
  ------------------
 3808|     85|        {
 3809|     85|        for (;;)
 3810|  2.20k|          {
 3811|  2.20k|          RMATCH(Fecode, RM218);
  ------------------
  |  |  551|  2.20k|  {\
  |  |  552|  2.20k|  start_ecode = ra;\
  |  |  553|  2.20k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  2.20k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  2.20k|  goto MATCH_RECURSE;\
  |  |  555|  2.20k|  L_##rb:;\
  |  |  556|  2.20k|  }
  ------------------
 3812|  2.20k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  2.20k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3812:15): [True: 0, False: 2.20k]
  ------------------
 3813|  2.20k|          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|  2.20k|#define Lmin         F->temp_32[0]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|  2.20k|#define Lmax         F->temp_32[1]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     54|  {\
  |  |  560|     54|  rrc = ra;\
  |  |  561|     54|  goto RETURN_SWITCH;\
  |  |  562|     54|  }
  ------------------
  |  Branch (3813:15): [True: 54, False: 2.15k]
  ------------------
 3814|  2.15k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  2.15k|#define Feptr              F->eptr
  ------------------
  |  Branch (3814:15): [True: 31, False: 2.12k]
  ------------------
 3815|     31|            {
 3816|     31|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     31|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 31]
  |  |  ------------------
  |  |  539|     31|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     31|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3817|     31|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     31|  {\
  |  |  560|     31|  rrc = ra;\
  |  |  561|     31|  goto RETURN_SWITCH;\
  |  |  562|     31|  }
  ------------------
 3818|      0|            }
 3819|  2.12k|          else
 3820|  2.12k|            {
 3821|  2.12k|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  2.12k|  c = *eptr++; \
  |  |  324|  2.12k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 2.12k]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3822|  2.12k|            Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject,
  ------------------
  |  |  182|  2.12k|#define Feptr              F->eptr
  ------------------
                          Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject,
  ------------------
  |  |  195|  2.12k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2022|  2.12k|#define _pcre2_extuni                PCRE2_SUFFIX(_pcre2_extuni_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  2.12k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  2.12k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  2.12k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject,
  ------------------
  |  |  182|  2.12k|#define Feptr              F->eptr
  ------------------
 3823|  2.12k|              utf, NULL);
 3824|  2.12k|            }
 3825|  2.12k|          CHECK_PARTIAL();
  ------------------
  |  |  532|  2.12k|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|  2.12k|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 31, False: 2.09k]
  |  |  ------------------
  |  |  533|  2.12k|    { \
  |  |  534|     31|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|     31|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 31]
  |  |  |  |  ------------------
  |  |  |  |  539|     31|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|     31|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|     31|    }
  ------------------
 3826|  2.12k|          }
 3827|     85|        }
 3828|  12.2k|      else
 3829|  12.2k|#endif     /* SUPPORT_UNICODE */
 3830|       |
 3831|       |      /* UTF mode for non-property testing character types. */
 3832|       |
 3833|  12.2k|#ifdef SUPPORT_UNICODE
 3834|  12.2k|      if (utf)
  ------------------
  |  Branch (3834:11): [True: 5.66k, False: 6.54k]
  ------------------
 3835|  5.66k|        {
 3836|  5.66k|        for (;;)
 3837|   122k|          {
 3838|   122k|          RMATCH(Fecode, RM219);
  ------------------
  |  |  551|   122k|  {\
  |  |  552|   122k|  start_ecode = ra;\
  |  |  553|   122k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|   122k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|   122k|  goto MATCH_RECURSE;\
  |  |  555|   122k|  L_##rb:;\
  |  |  556|   122k|  }
  ------------------
 3839|   122k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|   122k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3839:15): [True: 0, False: 122k]
  ------------------
 3840|   122k|          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|   122k|#define Lmin         F->temp_32[0]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|   122k|#define Lmax         F->temp_32[1]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     38|  {\
  |  |  560|     38|  rrc = ra;\
  |  |  561|     38|  goto RETURN_SWITCH;\
  |  |  562|     38|  }
  ------------------
  |  Branch (3840:15): [True: 38, False: 122k]
  ------------------
 3841|   122k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   122k|#define Feptr              F->eptr
  ------------------
  |  Branch (3841:15): [True: 2.28k, False: 120k]
  ------------------
 3842|  2.28k|            {
 3843|  2.28k|            SCHECK_PARTIAL();
  ------------------
  |  |  538|  2.28k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 2.28k]
  |  |  ------------------
  |  |  539|  2.28k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  2.28k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3844|  2.28k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  2.28k|  {\
  |  |  560|  2.28k|  rrc = ra;\
  |  |  561|  2.28k|  goto RETURN_SWITCH;\
  |  |  562|  2.28k|  }
  ------------------
 3845|      0|            }
 3846|   120k|          if (Lctype == OP_ANY && IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2648|   120k|#define Lctype       F->temp_32[2]
  ------------------
                        if (Lctype == OP_ANY && IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  497|    963|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|    963|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|    963|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 27, False: 936]
  |  |  |  Branch (497:4): [True: 0, False: 963]
  |  |  ------------------
  |  |  498|    963|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|    963|    : \
  |  |  502|    963|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|    963|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|    963|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|    963|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 963, False: 0]
  |  |  ------------------
  |  |  503|    963|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|    963|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|    963|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 27, False: 936]
  |  |  ------------------
  |  |  504|    963|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|     27|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 27, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|    963|    ) \
  |  |  506|    963|  )
  ------------------
                        if (Lctype == OP_ANY && IS_NEWLINE(Feptr)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     27|  {\
  |  |  560|     27|  rrc = ra;\
  |  |  561|     27|  goto RETURN_SWITCH;\
  |  |  562|     27|  }
  ------------------
  |  Branch (3846:15): [True: 963, False: 119k]
  ------------------
 3847|   120k|          GETCHARINC(fc, Feptr);
  ------------------
  |  |  316|   120k|  c = *eptr++; \
  |  |  317|   120k|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|    458|    { \
  |  |  |  |  307|    458|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 17, False: 441]
  |  |  |  |  ------------------
  |  |  |  |  308|    458|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|    458|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 282, False: 159]
  |  |  |  |  ------------------
  |  |  |  |  310|    441|      { \
  |  |  |  |  311|    282|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|    282|      eptr += 2; \
  |  |  |  |  313|    282|      } \
  |  |  |  |  314|    441|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 159, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|    159|      { \
  |  |  |  |  316|    159|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|    159|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|    159|      eptr += 3; \
  |  |  |  |  319|    159|      } \
  |  |  |  |  320|    159|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|    458|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 458, False: 119k]
  |  |  ------------------
  ------------------
 3848|   120k|          switch(Lctype)
  ------------------
  |  | 2648|   120k|#define Lctype       F->temp_32[2]
  ------------------
 3849|   120k|            {
 3850|    936|            case OP_ANY:               /* This is the non-NL case */
  ------------------
  |  Branch (3850:13): [True: 936, False: 119k]
  ------------------
 3851|    936|            if (mb->partial != 0 &&    /* Take care with CRLF partial */
  ------------------
  |  Branch (3851:17): [True: 0, False: 936]
  ------------------
 3852|      0|                Feptr >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3852:17): [True: 0, False: 0]
  ------------------
 3853|      0|                NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                              NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|    936|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (3853:17): [True: 0, False: 0]
  ------------------
 3854|      0|                NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3854:17): [True: 0, False: 0]
  ------------------
 3855|      0|                fc == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3855:17): [True: 0, False: 0]
  ------------------
 3856|      0|              {
 3857|      0|              mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3858|      0|              if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (3858:19): [True: 0, False: 0]
  ------------------
 3859|      0|              }
 3860|    936|            break;
 3861|       |
 3862|  12.9k|            case OP_ALLANY:
  ------------------
  |  Branch (3862:13): [True: 12.9k, False: 107k]
  ------------------
 3863|  12.9k|            case OP_ANYBYTE:
  ------------------
  |  Branch (3863:13): [True: 38, False: 120k]
  ------------------
 3864|  12.9k|            break;
 3865|       |
 3866|      0|            case OP_ANYNL:
  ------------------
  |  Branch (3866:13): [True: 0, False: 120k]
  ------------------
 3867|      0|            switch(fc)
 3868|      0|              {
 3869|      0|              default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3869:15): [True: 0, False: 0]
  ------------------
 3870|       |
 3871|      0|              case CHAR_CR:
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (3871:15): [True: 0, False: 0]
  ------------------
 3872|      0|              if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                            if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
                            if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3872:19): [True: 0, False: 0]
  |  Branch (3872:46): [True: 0, False: 0]
  ------------------
 3873|      0|              break;
 3874|       |
 3875|      0|              case CHAR_LF:
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (3875:15): [True: 0, False: 0]
  ------------------
 3876|      0|              break;
 3877|       |
 3878|      0|              case CHAR_VT:
  ------------------
  |  |  988|      0|#define CHAR_VT                     '\013'
  ------------------
  |  Branch (3878:15): [True: 0, False: 0]
  ------------------
 3879|      0|              case CHAR_FF:
  ------------------
  |  |  989|      0|#define CHAR_FF                     '\014'
  ------------------
  |  Branch (3879:15): [True: 0, False: 0]
  ------------------
 3880|      0|              case CHAR_NEL:
  ------------------
  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (3880:15): [True: 0, False: 0]
  ------------------
 3881|      0|#ifndef EBCDIC
 3882|      0|              case 0x2028:
  ------------------
  |  Branch (3882:15): [True: 0, False: 0]
  ------------------
 3883|      0|              case 0x2029:
  ------------------
  |  Branch (3883:15): [True: 0, False: 0]
  ------------------
 3884|      0|#endif  /* Not EBCDIC */
 3885|      0|              if (mb->bsr_convention == PCRE2_BSR_ANYCRLF)
  ------------------
  |  |  218|      0|#define PCRE2_BSR_ANYCRLF         2
  ------------------
  |  Branch (3885:19): [True: 0, False: 0]
  ------------------
 3886|      0|                RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3887|      0|              break;
 3888|      0|              }
 3889|      0|            break;
 3890|       |
 3891|      0|            case OP_NOT_HSPACE:
  ------------------
  |  Branch (3891:13): [True: 0, False: 120k]
  ------------------
 3892|      0|            switch(fc)
 3893|      0|              {
 3894|      0|              HSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  430|      0|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  426|      0|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  427|      0|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      0|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      0|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  408|      0|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  409|      0|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  410|      0|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  411|      0|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  412|      0|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  413|      0|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  414|      0|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|      0|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  416|      0|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  417|      0|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  418|      0|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  419|      0|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  420|      0|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  421|      0|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  422|      0|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
                            HSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3895|      0|              default: break;
  ------------------
  |  Branch (3895:15): [True: 0, False: 0]
  ------------------
 3896|      0|              }
 3897|      0|            break;
 3898|       |
 3899|      0|            case OP_HSPACE:
  ------------------
  |  Branch (3899:13): [True: 0, False: 120k]
  ------------------
 3900|      0|            switch(fc)
 3901|      0|              {
 3902|      0|              HSPACE_CASES: break;
  ------------------
  |  |  430|      0|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  426|      0|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  427|      0|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      0|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      0|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  408|      0|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  409|      0|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  410|      0|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  411|      0|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  412|      0|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  413|      0|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  414|      0|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|      0|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  416|      0|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  417|      0|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  418|      0|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  419|      0|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  420|      0|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  421|      0|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  422|      0|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 3903|      0|              default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3903:15): [True: 0, False: 0]
  ------------------
 3904|      0|              }
 3905|      0|            break;
 3906|       |
 3907|   106k|            case OP_NOT_VSPACE:
  ------------------
  |  Branch (3907:13): [True: 106k, False: 13.9k]
  ------------------
 3908|   106k|            switch(fc)
 3909|   106k|              {
 3910|  3.31k|              VSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  448|  3.31k|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|     37|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|     37|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 37, False: 106k]
  |  |  |  |  ------------------
  |  |  |  |  442|    141|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|    141|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 104, False: 106k]
  |  |  |  |  ------------------
  |  |  |  |  443|  3.30k|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|  3.30k|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 3.16k, False: 103k]
  |  |  |  |  ------------------
  |  |  |  |  444|  3.31k|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|  3.31k|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 11, False: 106k]
  |  |  |  |  ------------------
  |  |  |  |  445|  3.31k|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|  3.31k|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|  3.31k|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 106k]
  |  |  |  |  ------------------
  |  |  |  |  438|  3.31k|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
                            VSPACE_CASES: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  3.31k|  {\
  |  |  560|  3.31k|  rrc = ra;\
  |  |  561|  3.31k|  goto RETURN_SWITCH;\
  |  |  562|  3.31k|  }
  ------------------
 3911|   103k|              default: break;
  ------------------
  |  Branch (3911:15): [True: 103k, False: 3.31k]
  ------------------
 3912|   106k|              }
 3913|   103k|            break;
 3914|       |
 3915|   103k|            case OP_VSPACE:
  ------------------
  |  Branch (3915:13): [True: 0, False: 120k]
  ------------------
 3916|      0|            switch(fc)
 3917|      0|              {
 3918|      0|              VSPACE_CASES: break;
  ------------------
  |  |  448|      0|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      0|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  442|      0|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  443|      0|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  444|      0|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  445|      0|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      0|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      0|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  438|      0|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 3919|      0|              default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3919:15): [True: 0, False: 0]
  ------------------
 3920|      0|              }
 3921|      0|            break;
 3922|       |
 3923|      0|            case OP_NOT_DIGIT:
  ------------------
  |  Branch (3923:13): [True: 0, False: 120k]
  ------------------
 3924|      0|            if (fc < 256 && (mb->ctypes[fc] & ctype_digit) != 0)
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (3924:17): [True: 0, False: 0]
  |  Branch (3924:29): [True: 0, False: 0]
  ------------------
 3925|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3926|      0|            break;
 3927|       |
 3928|      0|            case OP_DIGIT:
  ------------------
  |  Branch (3928:13): [True: 0, False: 120k]
  ------------------
 3929|      0|            if (fc >= 256 || (mb->ctypes[fc] & ctype_digit) == 0)
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (3929:17): [True: 0, False: 0]
  |  Branch (3929:30): [True: 0, False: 0]
  ------------------
 3930|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3931|      0|            break;
 3932|       |
 3933|      0|            case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (3933:13): [True: 0, False: 120k]
  ------------------
 3934|      0|            if (fc < 256 && (mb->ctypes[fc] & ctype_space) != 0)
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (3934:17): [True: 0, False: 0]
  |  Branch (3934:29): [True: 0, False: 0]
  ------------------
 3935|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3936|      0|            break;
 3937|       |
 3938|      0|            case OP_WHITESPACE:
  ------------------
  |  Branch (3938:13): [True: 0, False: 120k]
  ------------------
 3939|      0|            if (fc >= 256 || (mb->ctypes[fc] & ctype_space) == 0)
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (3939:17): [True: 0, False: 0]
  |  Branch (3939:30): [True: 0, False: 0]
  ------------------
 3940|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3941|      0|            break;
 3942|       |
 3943|      0|            case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (3943:13): [True: 0, False: 120k]
  ------------------
 3944|      0|            if (fc < 256 && (mb->ctypes[fc] & ctype_word) != 0)
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (3944:17): [True: 0, False: 0]
  |  Branch (3944:29): [True: 0, False: 0]
  ------------------
 3945|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3946|      0|            break;
 3947|       |
 3948|      0|            case OP_WORDCHAR:
  ------------------
  |  Branch (3948:13): [True: 0, False: 120k]
  ------------------
 3949|      0|            if (fc >= 256 || (mb->ctypes[fc] & ctype_word) == 0)
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (3949:17): [True: 0, False: 0]
  |  Branch (3949:30): [True: 0, False: 0]
  ------------------
 3950|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 3951|      0|            break;
 3952|       |
 3953|      0|            default:
  ------------------
  |  Branch (3953:13): [True: 0, False: 120k]
  ------------------
 3954|      0|            return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 3955|   120k|            }
 3956|   120k|          }
 3957|  5.66k|        }
 3958|  6.54k|      else
 3959|  6.54k|#endif  /* SUPPORT_UNICODE */
 3960|       |
 3961|       |      /* Not UTF mode */
 3962|  6.54k|        {
 3963|  6.54k|        for (;;)
 3964|  61.4k|          {
 3965|  61.4k|          RMATCH(Fecode, RM33);
  ------------------
  |  |  551|  61.4k|  {\
  |  |  552|  61.4k|  start_ecode = ra;\
  |  |  553|  61.4k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  61.4k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  61.4k|  goto MATCH_RECURSE;\
  |  |  555|  61.4k|  L_##rb:;\
  |  |  556|  61.4k|  }
  ------------------
 3966|  61.4k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  61.4k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (3966:15): [True: 0, False: 61.4k]
  ------------------
 3967|  61.4k|          if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2646|  61.4k|#define Lmin         F->temp_32[0]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 2647|  61.4k|#define Lmax         F->temp_32[1]
  ------------------
                        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    165|  {\
  |  |  560|    165|  rrc = ra;\
  |  |  561|    165|  goto RETURN_SWITCH;\
  |  |  562|    165|  }
  ------------------
  |  Branch (3967:15): [True: 165, False: 61.2k]
  ------------------
 3968|  61.2k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  61.2k|#define Feptr              F->eptr
  ------------------
  |  Branch (3968:15): [True: 2.25k, False: 59.0k]
  ------------------
 3969|  2.25k|            {
 3970|  2.25k|            SCHECK_PARTIAL();
  ------------------
  |  |  538|  2.25k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 2.25k]
  |  |  ------------------
  |  |  539|  2.25k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  2.25k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 3971|  2.25k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  2.25k|  {\
  |  |  560|  2.25k|  rrc = ra;\
  |  |  561|  2.25k|  goto RETURN_SWITCH;\
  |  |  562|  2.25k|  }
  ------------------
 3972|      0|            }
 3973|  59.0k|          if (Lctype == OP_ANY && IS_NEWLINE(Feptr))
  ------------------
  |  | 2648|  59.0k|#define Lctype       F->temp_32[2]
  ------------------
                        if (Lctype == OP_ANY && IS_NEWLINE(Feptr))
  ------------------
  |  |  497|  27.9k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|  27.9k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|  27.9k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 1.23k, False: 26.7k]
  |  |  |  Branch (497:4): [True: 0, False: 27.9k]
  |  |  ------------------
  |  |  498|  27.9k|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|  27.9k|    : \
  |  |  502|  27.9k|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  27.9k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|  27.9k|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  27.9k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 27.9k, False: 0]
  |  |  ------------------
  |  |  503|  27.9k|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|  27.9k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|  27.9k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 1.23k, False: 26.7k]
  |  |  ------------------
  |  |  504|  27.9k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|  1.23k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 1.23k, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|  27.9k|    ) \
  |  |  506|  27.9k|  )
  ------------------
  |  Branch (3973:15): [True: 27.9k, False: 31.0k]
  ------------------
 3974|  57.8k|            RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.23k|  {\
  |  |  560|  1.23k|  rrc = ra;\
  |  |  561|  1.23k|  goto RETURN_SWITCH;\
  |  |  562|  1.23k|  }
  ------------------
 3975|  57.8k|          fc = *Feptr++;
  ------------------
  |  |  182|  57.8k|#define Feptr              F->eptr
  ------------------
 3976|  57.8k|          switch(Lctype)
  ------------------
  |  | 2648|  57.8k|#define Lctype       F->temp_32[2]
  ------------------
 3977|  57.8k|            {
 3978|  26.7k|            case OP_ANY:               /* This is the non-NL case */
  ------------------
  |  Branch (3978:13): [True: 26.7k, False: 31.0k]
  ------------------
 3979|  26.7k|            if (mb->partial != 0 &&    /* Take care with CRLF partial */
  ------------------
  |  Branch (3979:17): [True: 0, False: 26.7k]
  ------------------
 3980|      0|                Feptr >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (3980:17): [True: 0, False: 0]
  ------------------
 3981|      0|                NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                              NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|  26.7k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (3981:17): [True: 0, False: 0]
  ------------------
 3982|      0|                NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3982:17): [True: 0, False: 0]
  ------------------
 3983|      0|                fc == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (3983:17): [True: 0, False: 0]
  ------------------
 3984|      0|              {
 3985|      0|              mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 3986|      0|              if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (3986:19): [True: 0, False: 0]
  ------------------
 3987|      0|              }
 3988|  26.7k|            break;
 3989|       |
 3990|  26.7k|            case OP_ALLANY:
  ------------------
  |  Branch (3990:13): [True: 10.5k, False: 47.2k]
  ------------------
 3991|  10.5k|            case OP_ANYBYTE:
  ------------------
  |  Branch (3991:13): [True: 0, False: 57.8k]
  ------------------
 3992|  10.5k|            break;
 3993|       |
 3994|      4|            case OP_ANYNL:
  ------------------
  |  Branch (3994:13): [True: 4, False: 57.8k]
  ------------------
 3995|      4|            switch(fc)
 3996|      4|              {
 3997|      4|              default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      4|  {\
  |  |  560|      4|  rrc = ra;\
  |  |  561|      4|  goto RETURN_SWITCH;\
  |  |  562|      4|  }
  ------------------
  |  Branch (3997:15): [True: 4, False: 0]
  ------------------
 3998|       |
 3999|      0|              case CHAR_CR:
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (3999:15): [True: 0, False: 4]
  ------------------
 4000|      0|              if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
                            if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4000:19): [True: 0, False: 0]
  |  Branch (4000:46): [True: 0, False: 0]
  ------------------
 4001|      0|              break;
 4002|       |
 4003|      0|              case CHAR_LF:
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (4003:15): [True: 0, False: 4]
  ------------------
 4004|      0|              break;
 4005|       |
 4006|      0|              case CHAR_VT:
  ------------------
  |  |  988|      0|#define CHAR_VT                     '\013'
  ------------------
  |  Branch (4006:15): [True: 0, False: 4]
  ------------------
 4007|      0|              case CHAR_FF:
  ------------------
  |  |  989|      0|#define CHAR_FF                     '\014'
  ------------------
  |  Branch (4007:15): [True: 0, False: 4]
  ------------------
 4008|      0|              case CHAR_NEL:
  ------------------
  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (4008:15): [True: 0, False: 4]
  ------------------
 4009|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4010|       |              case 0x2028:
 4011|       |              case 0x2029:
 4012|       |#endif
 4013|      0|              if (mb->bsr_convention == PCRE2_BSR_ANYCRLF)
  ------------------
  |  |  218|      0|#define PCRE2_BSR_ANYCRLF         2
  ------------------
  |  Branch (4013:19): [True: 0, False: 0]
  ------------------
 4014|      0|                RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 4015|      0|              break;
 4016|      4|              }
 4017|      0|            break;
 4018|       |
 4019|  1.42k|            case OP_NOT_HSPACE:
  ------------------
  |  Branch (4019:13): [True: 1.42k, False: 56.3k]
  ------------------
 4020|  1.42k|            switch(fc)
 4021|  1.42k|              {
 4022|  1.34k|              default: break;
  ------------------
  |  Branch (4022:15): [True: 1.34k, False: 74]
  ------------------
 4023|  1.34k|              HSPACE_BYTE_CASES:
  ------------------
  |  |  425|     40|  case CHAR_HT: \
  |  |  ------------------
  |  |  |  |  987|     40|#define CHAR_HT                     '\011'
  |  |  ------------------
  |  |  |  Branch (425:3): [True: 40, False: 1.38k]
  |  |  ------------------
  |  |  426|     52|  case CHAR_SPACE: \
  |  |  ------------------
  |  |  |  | 1000|     52|#define CHAR_SPACE                  '\040'
  |  |  ------------------
  |  |  |  Branch (426:3): [True: 12, False: 1.40k]
  |  |  ------------------
  |  |  427|  1.34k|  case CHAR_NBSP
  |  |  ------------------
  |  |  |  | 1095|  1.34k|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  ------------------
  ------------------
 4024|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4025|       |              HSPACE_MULTIBYTE_CASES:
 4026|       |#endif
 4027|     74|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     74|  {\
  |  |  560|     74|  rrc = ra;\
  |  |  561|     74|  goto RETURN_SWITCH;\
  |  |  562|     74|  }
  ------------------
 4028|  1.42k|              }
 4029|  1.34k|            break;
 4030|       |
 4031|  1.34k|            case OP_HSPACE:
  ------------------
  |  Branch (4031:13): [True: 0, False: 57.8k]
  ------------------
 4032|      0|            switch(fc)
 4033|      0|              {
 4034|      0|              default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (4034:15): [True: 0, False: 0]
  ------------------
 4035|      0|              HSPACE_BYTE_CASES:
  ------------------
  |  |  425|      0|  case CHAR_HT: \
  |  |  ------------------
  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  ------------------
  |  |  |  Branch (425:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  426|      0|  case CHAR_SPACE: \
  |  |  ------------------
  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  ------------------
  |  |  |  Branch (426:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  427|      0|  case CHAR_NBSP
  |  |  ------------------
  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  ------------------
  ------------------
 4036|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4037|       |              HSPACE_MULTIBYTE_CASES:
 4038|       |#endif
 4039|      0|              break;
 4040|      0|              }
 4041|      0|            break;
 4042|       |
 4043|      0|            case OP_NOT_VSPACE:
  ------------------
  |  Branch (4043:13): [True: 0, False: 57.8k]
  ------------------
 4044|      0|            switch(fc)
 4045|      0|              {
 4046|      0|              default: break;
  ------------------
  |  Branch (4046:15): [True: 0, False: 0]
  ------------------
 4047|      0|              VSPACE_BYTE_CASES:
  ------------------
  |  |  441|      0|  case CHAR_LF: \
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  442|      0|  case CHAR_VT: \
  |  |  ------------------
  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  ------------------
  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  443|      0|  case CHAR_FF: \
  |  |  ------------------
  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  ------------------
  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  444|      0|  case CHAR_CR: \
  |  |  ------------------
  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  ------------------
  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  445|      0|  case CHAR_NEL
  |  |  ------------------
  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  ------------------
  ------------------
 4048|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4049|       |              VSPACE_MULTIBYTE_CASES:
 4050|       |#endif
 4051|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 4052|      0|              }
 4053|      0|            break;
 4054|       |
 4055|      0|            case OP_VSPACE:
  ------------------
  |  Branch (4055:13): [True: 0, False: 57.8k]
  ------------------
 4056|      0|            switch(fc)
 4057|      0|              {
 4058|      0|              default: RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (4058:15): [True: 0, False: 0]
  ------------------
 4059|      0|              VSPACE_BYTE_CASES:
  ------------------
  |  |  441|      0|  case CHAR_LF: \
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  442|      0|  case CHAR_VT: \
  |  |  ------------------
  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  ------------------
  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  443|      0|  case CHAR_FF: \
  |  |  ------------------
  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  ------------------
  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  444|      0|  case CHAR_CR: \
  |  |  ------------------
  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  ------------------
  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  445|      0|  case CHAR_NEL
  |  |  ------------------
  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  ------------------
  ------------------
 4060|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4061|       |              VSPACE_MULTIBYTE_CASES:
 4062|       |#endif
 4063|      0|              break;
 4064|      0|              }
 4065|      0|            break;
 4066|       |
 4067|  17.7k|            case OP_NOT_DIGIT:
  ------------------
  |  Branch (4067:13): [True: 17.7k, False: 40.0k]
  ------------------
 4068|  17.7k|            if (MAX_255(fc) && (mb->ctypes[fc] & ctype_digit) != 0)
  ------------------
  |  |  212|  17.7k|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|  35.5k|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 17.7k, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (MAX_255(fc) && (mb->ctypes[fc] & ctype_digit) != 0)
  ------------------
  |  |  600|  17.7k|#define ctype_digit    0x08
  ------------------
  |  Branch (4068:32): [True: 2.74k, False: 15.0k]
  ------------------
 4069|  15.0k|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  2.74k|  {\
  |  |  560|  2.74k|  rrc = ra;\
  |  |  561|  2.74k|  goto RETURN_SWITCH;\
  |  |  562|  2.74k|  }
  ------------------
 4070|  15.0k|            break;
 4071|       |
 4072|      0|            case OP_DIGIT:
  ------------------
  |  Branch (4072:13): [True: 0, False: 57.8k]
  ------------------
 4073|      0|            if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_digit) == 0)
  ------------------
  |  |  212|      0|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  ------------------
                          if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_digit) == 0)
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (4073:17): [Folded, False: 0]
  |  Branch (4073:33): [True: 0, False: 0]
  ------------------
 4074|      0|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 4075|      0|            break;
 4076|       |
 4077|    993|            case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (4077:13): [True: 993, False: 56.8k]
  ------------------
 4078|    993|            if (MAX_255(fc) && (mb->ctypes[fc] & ctype_space) != 0)
  ------------------
  |  |  212|    993|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|  1.98k|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 993, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (MAX_255(fc) && (mb->ctypes[fc] & ctype_space) != 0)
  ------------------
  |  |  597|    993|#define ctype_space    0x01
  ------------------
  |  Branch (4078:32): [True: 0, False: 993]
  ------------------
 4079|    993|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 4080|    993|            break;
 4081|       |
 4082|     18|            case OP_WHITESPACE:
  ------------------
  |  Branch (4082:13): [True: 18, False: 57.7k]
  ------------------
 4083|     18|            if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_space) == 0)
  ------------------
  |  |  212|     18|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|     36|#define TRUE    1
  |  |  ------------------
  ------------------
                          if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_space) == 0)
  ------------------
  |  |  597|     18|#define ctype_space    0x01
  ------------------
  |  Branch (4083:17): [Folded, False: 18]
  |  Branch (4083:33): [True: 6, False: 12]
  ------------------
 4084|     12|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      6|  {\
  |  |  560|      6|  rrc = ra;\
  |  |  561|      6|  goto RETURN_SWITCH;\
  |  |  562|      6|  }
  ------------------
 4085|     12|            break;
 4086|       |
 4087|    226|            case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (4087:13): [True: 226, False: 57.5k]
  ------------------
 4088|    226|            if (MAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0)
  ------------------
  |  |  212|    226|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    452|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 226, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (MAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0)
  ------------------
  |  |  601|    226|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (4088:32): [True: 53, False: 173]
  ------------------
 4089|    173|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     53|  {\
  |  |  560|     53|  rrc = ra;\
  |  |  561|     53|  goto RETURN_SWITCH;\
  |  |  562|     53|  }
  ------------------
 4090|    173|            break;
 4091|       |
 4092|     29|            case OP_WORDCHAR:
  ------------------
  |  Branch (4092:13): [True: 29, False: 57.7k]
  ------------------
 4093|     29|            if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_word) == 0)
  ------------------
  |  |  212|     29|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|     58|#define TRUE    1
  |  |  ------------------
  ------------------
                          if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_word) == 0)
  ------------------
  |  |  601|     29|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (4093:17): [Folded, False: 29]
  |  Branch (4093:33): [True: 11, False: 18]
  ------------------
 4094|     18|              RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     11|  {\
  |  |  560|     11|  rrc = ra;\
  |  |  561|     11|  goto RETURN_SWITCH;\
  |  |  562|     11|  }
  ------------------
 4095|     18|            break;
 4096|       |
 4097|      0|            default:
  ------------------
  |  Branch (4097:13): [True: 0, False: 57.8k]
  ------------------
 4098|      0|            return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 4099|  57.8k|            }
 4100|  57.8k|          }
 4101|  6.54k|        }
 4102|       |      /* Control never gets here */
 4103|   659k|      }
 4104|       |
 4105|       |    /* If maximizing, it is worth using inline code for speed, doing the type
 4106|       |    test once at the start (i.e. keep it out of the loops). Once again,
 4107|       |    "notmatch" can be an ordinary local variable because the loops do not call
 4108|       |    RMATCH. */
 4109|       |
 4110|  1.57M|    else
 4111|  1.57M|      {
 4112|  1.57M|      Lstart_eptr = Feptr;  /* Remember where we started */
  ------------------
  |  | 2645|  1.57M|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                    Lstart_eptr = Feptr;  /* Remember where we started */
  ------------------
  |  |  182|  1.57M|#define Feptr              F->eptr
  ------------------
 4113|       |
 4114|  1.57M|#ifdef SUPPORT_UNICODE
 4115|  1.57M|      if (proptype >= 0)
  ------------------
  |  Branch (4115:11): [True: 235k, False: 1.34M]
  ------------------
 4116|   235k|        {
 4117|   235k|        BOOL notmatch = Lctype == OP_NOTPROP;
  ------------------
  |  | 2648|   235k|#define Lctype       F->temp_32[2]
  ------------------
 4118|   235k|        switch(proptype)
 4119|   235k|          {
 4120|      0|          case PT_ANY:
  ------------------
  |  | 1293|      0|#define PT_ANY        0    /* Any property - matches all chars */
  ------------------
  |  Branch (4120:11): [True: 0, False: 235k]
  ------------------
 4121|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4121:26): [True: 0, False: 0]
  ------------------
 4122|      0|            {
 4123|      0|            int len = 1;
 4124|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4124:17): [True: 0, False: 0]
  ------------------
 4125|      0|              {
 4126|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4127|      0|              break;
 4128|      0|              }
 4129|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4130|      0|            if (notmatch) break;
  ------------------
  |  Branch (4130:17): [True: 0, False: 0]
  ------------------
 4131|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4132|      0|            }
 4133|      0|          break;
 4134|       |
 4135|      0|          case PT_LAMP:
  ------------------
  |  | 1294|      0|#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
  ------------------
  |  Branch (4135:11): [True: 0, False: 235k]
  ------------------
 4136|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4136:26): [True: 0, False: 0]
  ------------------
 4137|      0|            {
 4138|      0|            int chartype;
 4139|      0|            int len = 1;
 4140|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4140:17): [True: 0, False: 0]
  ------------------
 4141|      0|              {
 4142|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4143|      0|              break;
 4144|      0|              }
 4145|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4146|      0|            chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4147|      0|            if ((chartype == ucp_Lu ||
  ------------------
  |  Branch (4147:17): [True: 0, False: 0]
  |  Branch (4147:18): [True: 0, False: 0]
  ------------------
 4148|      0|                 chartype == ucp_Ll ||
  ------------------
  |  Branch (4148:18): [True: 0, False: 0]
  ------------------
 4149|      0|                 chartype == ucp_Lt) == notmatch)
  ------------------
  |  Branch (4149:18): [True: 0, False: 0]
  ------------------
 4150|      0|              break;
 4151|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4152|      0|            }
 4153|      0|          break;
 4154|       |
 4155|    290|          case PT_GC:
  ------------------
  |  | 1295|    290|#define PT_GC         2    /* Specified general characteristic (e.g. L) */
  ------------------
  |  Branch (4155:11): [True: 290, False: 234k]
  ------------------
 4156|    386|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    290|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|    386|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4156:26): [True: 371, False: 15]
  ------------------
 4157|    371|            {
 4158|    371|            int len = 1;
 4159|    371|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    371|#define Feptr              F->eptr
  ------------------
  |  Branch (4159:17): [True: 0, False: 371]
  ------------------
 4160|      0|              {
 4161|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4162|      0|              break;
 4163|      0|              }
 4164|    371|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|    371|  c = *eptr; \
  |  |  339|    371|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 371]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4165|    371|            if ((UCD_CATEGORY(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 1886|    371|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|    371|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|    371|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|    371|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|    371|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|    371|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|    371|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|    371|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|    371|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|    371|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|    371|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|    371|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    371|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    371|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|    371|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|    371|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|    371|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|    371|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    371|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    371|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|    371|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|    371|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|    371|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|    371|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|    371|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|    371|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|    371|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|    371|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|    371|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_CATEGORY(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 2649|    371|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (4165:17): [True: 275, False: 96]
  ------------------
 4166|     96|            Feptr+= len;
  ------------------
  |  |  182|     96|#define Feptr              F->eptr
  ------------------
 4167|     96|            }
 4168|    290|          break;
 4169|       |
 4170|    290|          case PT_PC:
  ------------------
  |  | 1296|    162|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
  |  Branch (4170:11): [True: 162, False: 235k]
  ------------------
 4171|  4.74k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    162|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  4.74k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4171:26): [True: 4.68k, False: 56]
  ------------------
 4172|  4.68k|            {
 4173|  4.68k|            int len = 1;
 4174|  4.68k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  4.68k|#define Feptr              F->eptr
  ------------------
  |  Branch (4174:17): [True: 96, False: 4.59k]
  ------------------
 4175|     96|              {
 4176|     96|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     96|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 96]
  |  |  ------------------
  |  |  539|     96|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     96|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4177|     96|              break;
 4178|     96|              }
 4179|  4.59k|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|  4.59k|  c = *eptr; \
  |  |  339|  4.59k|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      1|    { \
  |  |  |  |  341|      1|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      1|      { \
  |  |  |  |  343|      1|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      1|      len++; \
  |  |  |  |  345|      1|      } \
  |  |  |  |  346|      1|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      1|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 4.59k, False: 0]
  |  |  |  Branch (339:14): [True: 1, False: 4.59k]
  |  |  ------------------
  ------------------
 4180|  4.59k|            if ((UCD_CHARTYPE(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 1884|  4.59k|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|  4.59k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  4.59k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  4.59k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  4.59k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  4.59k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  4.59k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  4.59k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  4.59k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  4.59k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  4.59k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  4.59k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  4.59k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  4.59k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  4.59k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  4.59k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  4.59k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  4.59k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  4.59k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  4.59k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  4.59k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  4.59k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  4.59k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_CHARTYPE(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 2649|  4.59k|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (4180:17): [True: 10, False: 4.58k]
  ------------------
 4181|  4.58k|            Feptr+= len;
  ------------------
  |  |  182|  4.58k|#define Feptr              F->eptr
  ------------------
 4182|  4.58k|            }
 4183|    162|          break;
 4184|       |
 4185|    162|          case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (4185:11): [True: 0, False: 235k]
  ------------------
 4186|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4186:26): [True: 0, False: 0]
  ------------------
 4187|      0|            {
 4188|      0|            int len = 1;
 4189|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4189:17): [True: 0, False: 0]
  ------------------
 4190|      0|              {
 4191|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4192|      0|              break;
 4193|      0|              }
 4194|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4195|      0|            if ((UCD_SCRIPT(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 1885|      0|#define UCD_SCRIPT(ch)      GET_UCD(ch)->script
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_SCRIPT(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (4195:17): [True: 0, False: 0]
  ------------------
 4196|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4197|      0|            }
 4198|      0|          break;
 4199|       |
 4200|      0|          case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (4200:11): [True: 0, False: 235k]
  ------------------
 4201|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4201:26): [True: 0, False: 0]
  ------------------
 4202|      0|            {
 4203|      0|            BOOL ok;
 4204|      0|            const ucd_record *prop;
 4205|      0|            int len = 1;
 4206|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4206:17): [True: 0, False: 0]
  ------------------
 4207|      0|              {
 4208|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4209|      0|              break;
 4210|      0|              }
 4211|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4212|      0|            prop = GET_UCD(fc);
  ------------------
  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4213|      0|            ok = (prop->script == Lpropvalue ||
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (4213:19): [True: 0, False: 0]
  ------------------
 4214|      0|                  MAPBIT(PRIV(ucd_script_sets) + UCD_SCRIPTX_PROP(prop), Lpropvalue) != 0);
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  |  Branch (4214:19): [True: 0, False: 0]
  ------------------
 4215|      0|            if (ok == notmatch) break;
  ------------------
  |  Branch (4215:17): [True: 0, False: 0]
  ------------------
 4216|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4217|      0|            }
 4218|      0|          break;
 4219|       |
 4220|      0|          case PT_ALNUM:
  ------------------
  |  | 1299|      0|#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
  ------------------
  |  Branch (4220:11): [True: 0, False: 235k]
  ------------------
 4221|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4221:26): [True: 0, False: 0]
  ------------------
 4222|      0|            {
 4223|      0|            int category;
 4224|      0|            int len = 1;
 4225|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4225:17): [True: 0, False: 0]
  ------------------
 4226|      0|              {
 4227|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4228|      0|              break;
 4229|      0|              }
 4230|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4231|      0|            category = UCD_CATEGORY(fc);
  ------------------
  |  | 1886|      0|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|      0|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4232|      0|            if ((category == ucp_L || category == ucp_N) == notmatch)
  ------------------
  |  Branch (4232:17): [True: 0, False: 0]
  |  Branch (4232:18): [True: 0, False: 0]
  |  Branch (4232:39): [True: 0, False: 0]
  ------------------
 4233|      0|              break;
 4234|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4235|      0|            }
 4236|      0|          break;
 4237|       |
 4238|       |          /* Perl space used to exclude VT, but from Perl 5.18 it is included,
 4239|       |          which means that Perl space and POSIX space are now identical. PCRE
 4240|       |          was changed at release 8.34. */
 4241|       |
 4242|   150k|          case PT_SPACE:    /* Perl space */
  ------------------
  |  | 1300|   150k|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
  |  Branch (4242:11): [True: 150k, False: 84.5k]
  ------------------
 4243|   150k|          case PT_PXSPACE:  /* POSIX space */
  ------------------
  |  | 1301|   150k|#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
  ------------------
  |  Branch (4243:11): [True: 0, False: 235k]
  ------------------
 4244|  1.30M|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|   150k|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  1.30M|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4244:26): [True: 1.30M, False: 0]
  ------------------
 4245|  1.30M|            {
 4246|  1.30M|            int len = 1;
 4247|  1.30M|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.30M|#define Feptr              F->eptr
  ------------------
  |  Branch (4247:17): [True: 53.1k, False: 1.25M]
  ------------------
 4248|  53.1k|              {
 4249|  53.1k|              SCHECK_PARTIAL();
  ------------------
  |  |  538|  53.1k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 53.1k]
  |  |  ------------------
  |  |  539|  53.1k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  53.1k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4250|  53.1k|              break;
 4251|  53.1k|              }
 4252|  1.25M|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|  1.25M|  c = *eptr; \
  |  |  339|  1.25M|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|   113k|    { \
  |  |  |  |  341|   113k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 668, False: 112k]
  |  |  |  |  ------------------
  |  |  |  |  342|   113k|      { \
  |  |  |  |  343|    668|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|    668|      len++; \
  |  |  |  |  345|    668|      } \
  |  |  |  |  346|   113k|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 34.6k, False: 78.0k]
  |  |  |  |  ------------------
  |  |  |  |  347|   112k|      { \
  |  |  |  |  348|  34.6k|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|  34.6k|      len += 2; \
  |  |  |  |  350|  34.6k|      } \
  |  |  |  |  351|   112k|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 78.0k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|  78.0k|      {\
  |  |  |  |  353|  78.0k|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|  78.0k|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|  78.0k|      len += 3; \
  |  |  |  |  356|  78.0k|      } \
  |  |  |  |  357|  78.0k|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|   113k|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 1.25M, False: 0]
  |  |  |  Branch (339:14): [True: 113k, False: 1.13M]
  |  |  ------------------
  ------------------
 4253|  1.25M|            switch(fc)
 4254|  1.25M|              {
 4255|  91.1k|              HSPACE_CASES:
  ------------------
  |  |  430|  5.01k|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|    989|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|    989|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 989, False: 1.24M]
  |  |  |  |  ------------------
  |  |  |  |  426|  5.01k|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|  5.01k|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 4.02k, False: 1.24M]
  |  |  |  |  ------------------
  |  |  |  |  427|  5.01k|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|  5.01k|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|  5.01k|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  408|  5.01k|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  409|  5.01k|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  410|  5.01k|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  411|  5.01k|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  412|  5.01k|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  413|  5.01k|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  414|  5.01k|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  415|  5.01k|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  416|  5.01k|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  417|  5.01k|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  418|  5.01k|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  419|  5.01k|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  420|  5.01k|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  421|  5.01k|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  422|  5.01k|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
 4256|   589k|              VSPACE_CASES:
  ------------------
  |  |  448|  97.5k|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|  6.52k|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|  6.52k|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 1.51k, False: 1.24M]
  |  |  |  |  ------------------
  |  |  |  |  442|  96.1k|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|  96.1k|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 89.6k, False: 1.16M]
  |  |  |  |  ------------------
  |  |  |  |  443|  96.1k|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|  96.1k|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  444|  97.5k|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|  97.5k|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 1.35k, False: 1.24M]
  |  |  |  |  ------------------
  |  |  |  |  445|  97.5k|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  5.01k|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|  97.5k|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|  97.5k|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 1.25M]
  |  |  |  |  ------------------
  |  |  |  |  438|  97.5k|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
 4257|   589k|              if (notmatch) goto ENDLOOP99;  /* Break the loop */
  ------------------
  |  Branch (4257:19): [True: 97.5k, False: 3]
  ------------------
 4258|      3|              break;
 4259|       |
 4260|  1.15M|              default:
  ------------------
  |  Branch (4260:15): [True: 1.15M, False: 97.5k]
  ------------------
 4261|  1.15M|              if ((UCD_CATEGORY(fc) == ucp_Z) == notmatch)
  ------------------
  |  | 1886|  1.15M|#define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  |  195|  1.15M|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 1964|  1.15M|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|  1.15M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|  1.15M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.15M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define UCD_CATEGORY(ch)    PRIV(ucp_gentype)[UCD_CHARTYPE(ch)]
  |  |  ------------------
  |  |  |  | 1884|  1.15M|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  |  |  ------------------
  |  |  |  |  |  | 1873|  1.15M|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1865|  1.15M|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|  1.15M|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1960|  1.15M|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.15M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.15M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.15M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1866|  1.15M|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|  1.15M|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1962|  1.15M|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.15M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.15M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.15M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  195|  1.15M|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1961|  1.15M|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.15M|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.15M|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.15M|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|  1.15M|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1867|  1.15M|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|  1.15M|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1864|  1.15M|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4261:19): [True: 7, False: 1.15M]
  ------------------
 4262|      7|                goto ENDLOOP99;   /* Break the loop */
 4263|  1.15M|              break;
 4264|  1.25M|              }
 4265|  1.15M|            Feptr+= len;
  ------------------
  |  |  182|  1.15M|#define Feptr              F->eptr
  ------------------
 4266|  1.15M|            }
 4267|   150k|          ENDLOOP99:
 4268|   150k|          break;
 4269|       |
 4270|  83.9k|          case PT_WORD:
  ------------------
  |  | 1302|  83.9k|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
  |  Branch (4270:11): [True: 83.9k, False: 151k]
  ------------------
 4271|   520k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|  83.9k|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|   520k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4271:26): [True: 520k, False: 0]
  ------------------
 4272|   520k|            {
 4273|   520k|            int chartype, category;
 4274|   520k|            int len = 1;
 4275|   520k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   520k|#define Feptr              F->eptr
  ------------------
  |  Branch (4275:17): [True: 33.3k, False: 486k]
  ------------------
 4276|  33.3k|              {
 4277|  33.3k|              SCHECK_PARTIAL();
  ------------------
  |  |  538|  33.3k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 33.3k]
  |  |  ------------------
  |  |  539|  33.3k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  33.3k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4278|  33.3k|              break;
 4279|  33.3k|              }
 4280|   486k|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|   486k|  c = *eptr; \
  |  |  339|   486k|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|  1.83k|    { \
  |  |  |  |  341|  1.83k|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 607, False: 1.22k]
  |  |  |  |  ------------------
  |  |  |  |  342|  1.83k|      { \
  |  |  |  |  343|    607|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|    607|      len++; \
  |  |  |  |  345|    607|      } \
  |  |  |  |  346|  1.83k|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 1.22k]
  |  |  |  |  ------------------
  |  |  |  |  347|  1.22k|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|  1.22k|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 1.22k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|  1.22k|      {\
  |  |  |  |  353|  1.22k|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|  1.22k|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|  1.22k|      len += 3; \
  |  |  |  |  356|  1.22k|      } \
  |  |  |  |  357|  1.22k|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|  1.83k|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 486k, False: 0]
  |  |  |  Branch (339:14): [True: 1.83k, False: 485k]
  |  |  ------------------
  ------------------
 4281|   486k|            chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|   486k|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|   486k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|   486k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|   486k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|   486k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|   486k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   486k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   486k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|   486k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|   486k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|   486k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|   486k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   486k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   486k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|   486k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|   486k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|   486k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|   486k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|   486k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|   486k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|   486k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|   486k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|   486k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4282|   486k|            category = PRIV(ucp_gentype)[chartype];
  ------------------
  |  |  195|   486k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|   486k|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|   486k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|   486k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|   486k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4283|   486k|            if ((category == ucp_L ||
  ------------------
  |  Branch (4283:17): [True: 50.6k, False: 436k]
  |  Branch (4283:18): [True: 42.1k, False: 444k]
  ------------------
 4284|   444k|                 category == ucp_N ||
  ------------------
  |  Branch (4284:18): [True: 6.43k, False: 438k]
  ------------------
 4285|   438k|                 chartype == ucp_Mn ||
  ------------------
  |  Branch (4285:18): [True: 715, False: 437k]
  ------------------
 4286|   437k|                 chartype == ucp_Pc) == notmatch)
  ------------------
  |  Branch (4286:18): [True: 1.40k, False: 436k]
  ------------------
 4287|  50.6k|              break;
 4288|   436k|            Feptr+= len;
  ------------------
  |  |  182|   436k|#define Feptr              F->eptr
  ------------------
 4289|   436k|            }
 4290|  83.9k|          break;
 4291|       |
 4292|  83.9k|          case PT_CLIST:
  ------------------
  |  | 1303|    128|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (4292:11): [True: 128, False: 235k]
  ------------------
 4293|  1.88k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    128|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  1.88k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4293:26): [True: 1.88k, False: 0]
  ------------------
 4294|  1.88k|            {
 4295|  1.88k|            const uint32_t *cp;
 4296|  1.88k|            int len = 1;
 4297|  1.88k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.88k|#define Feptr              F->eptr
  ------------------
  |  Branch (4297:17): [True: 46, False: 1.83k]
  ------------------
 4298|     46|              {
 4299|     46|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     46|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 46]
  |  |  ------------------
  |  |  539|     46|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     46|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4300|     46|              break;
 4301|     46|              }
 4302|  1.83k|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|  1.83k|  c = *eptr; \
  |  |  339|  1.83k|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|    143|    { \
  |  |  |  |  341|    143|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 80, False: 63]
  |  |  |  |  ------------------
  |  |  |  |  342|    143|      { \
  |  |  |  |  343|     80|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|     80|      len++; \
  |  |  |  |  345|     80|      } \
  |  |  |  |  346|    143|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 63]
  |  |  |  |  ------------------
  |  |  |  |  347|     63|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|     63|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 63, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|     63|      {\
  |  |  |  |  353|     63|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|     63|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|     63|      len += 3; \
  |  |  |  |  356|     63|      } \
  |  |  |  |  357|     63|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|    143|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 1.83k, False: 0]
  |  |  |  Branch (339:14): [True: 143, False: 1.69k]
  |  |  ------------------
  ------------------
 4303|       |#if PCRE2_CODE_UNIT_WIDTH == 32
 4304|       |            if (fc > MAX_UTF_CODE_POINT)
 4305|       |              {
 4306|       |              if (!notmatch) goto GOT_MAX;
 4307|       |              }
 4308|       |            else
 4309|       |#endif
 4310|  1.83k|              {
 4311|  1.83k|              cp = PRIV(ucd_caseless_sets) + Lpropvalue;
  ------------------
  |  |  195|  1.83k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|  1.83k|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  1.83k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  1.83k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  1.83k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                            cp = PRIV(ucd_caseless_sets) + Lpropvalue;
  ------------------
  |  | 2649|  1.83k|#define Lpropvalue   F->temp_32[3]
  ------------------
 4312|  1.83k|              for (;;)
 4313|  2.48k|                {
 4314|  2.48k|                if (fc < *cp)
  ------------------
  |  Branch (4314:21): [True: 1.75k, False: 735]
  ------------------
 4315|  1.75k|                  { if (notmatch) break; else goto GOT_MAX; }
  ------------------
  |  Branch (4315:25): [True: 1.75k, False: 0]
  ------------------
 4316|    735|                if (fc == *cp++)
  ------------------
  |  Branch (4316:21): [True: 82, False: 653]
  ------------------
 4317|     82|                  { if (notmatch) goto GOT_MAX; else break; }
  ------------------
  |  Branch (4317:25): [True: 82, False: 0]
  ------------------
 4318|    735|                }
 4319|  1.83k|              }
 4320|       |
 4321|  1.75k|            Feptr += len;
  ------------------
  |  |  182|  1.75k|#define Feptr              F->eptr
  ------------------
 4322|  1.75k|            }
 4323|    128|          GOT_MAX:
 4324|    128|          break;
 4325|       |
 4326|     46|          case PT_UCNC:
  ------------------
  |  | 1304|      0|#define PT_UCNC      11    /* Universal Character nameable character */
  ------------------
  |  Branch (4326:11): [True: 0, False: 235k]
  ------------------
 4327|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4327:26): [True: 0, False: 0]
  ------------------
 4328|      0|            {
 4329|      0|            int len = 1;
 4330|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4330:17): [True: 0, False: 0]
  ------------------
 4331|      0|              {
 4332|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4333|      0|              break;
 4334|      0|              }
 4335|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4336|      0|            if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1004|      0|#define CHAR_DOLLAR_SIGN            '\044'
  ------------------
                          if ((fc == CHAR_DOLLAR_SIGN || fc == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1032|      0|#define CHAR_COMMERCIAL_AT          '\100'
  ------------------
  |  Branch (4336:17): [True: 0, False: 0]
  |  Branch (4336:18): [True: 0, False: 0]
  |  Branch (4336:44): [True: 0, False: 0]
  ------------------
 4337|      0|                 fc == CHAR_GRAVE_ACCENT || (fc >= 0xa0 && fc <= 0xd7ff) ||
  ------------------
  |  | 1064|      0|#define CHAR_GRAVE_ACCENT           '\140'
  ------------------
  |  Branch (4337:18): [True: 0, False: 0]
  |  Branch (4337:46): [True: 0, False: 0]
  |  Branch (4337:60): [True: 0, False: 0]
  ------------------
 4338|      0|                 fc >= 0xe000) == notmatch)
  ------------------
  |  Branch (4338:18): [True: 0, False: 0]
  ------------------
 4339|      0|              break;
 4340|      0|            Feptr += len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4341|      0|            }
 4342|      0|          break;
 4343|       |
 4344|      0|          case PT_BIDICL:
  ------------------
  |  | 1305|      0|#define PT_BIDICL    12    /* Specified bidi class */
  ------------------
  |  Branch (4344:11): [True: 0, False: 235k]
  ------------------
 4345|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4345:26): [True: 0, False: 0]
  ------------------
 4346|      0|            {
 4347|      0|            int len = 1;
 4348|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4348:17): [True: 0, False: 0]
  ------------------
 4349|      0|              {
 4350|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4351|      0|              break;
 4352|      0|              }
 4353|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4354|      0|            if ((UCD_BIDICLASS(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 1892|      0|#define UCD_BIDICLASS(ch)   UCD_BIDICLASS_PROP(GET_UCD(ch))
  |  |  ------------------
  |  |  |  | 1881|      0|#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1877|      0|#define UCD_BIDICLASS_SHIFT 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if ((UCD_BIDICLASS(fc) == Lpropvalue) == notmatch) break;
  ------------------
  |  | 2649|      0|#define Lpropvalue   F->temp_32[3]
  ------------------
  |  Branch (4354:17): [True: 0, False: 0]
  ------------------
 4355|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4356|      0|            }
 4357|      0|          break;
 4358|       |
 4359|      0|          case PT_BOOL:
  ------------------
  |  | 1306|      0|#define PT_BOOL      13    /* Boolean property */
  ------------------
  |  Branch (4359:11): [True: 0, False: 235k]
  ------------------
 4360|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4360:26): [True: 0, False: 0]
  ------------------
 4361|      0|            {
 4362|      0|            BOOL ok;
 4363|      0|            const ucd_record *prop;
 4364|      0|            int len = 1;
 4365|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4365:17): [True: 0, False: 0]
  ------------------
 4366|      0|              {
 4367|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4368|      0|              break;
 4369|      0|              }
 4370|      0|            GETCHARLENTEST(fc, Feptr, len);
  ------------------
  |  |  338|      0|  c = *eptr; \
  |  |  339|      0|  if (utf && c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (339:7): [True: 0, False: 0]
  |  |  |  Branch (339:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4371|      0|            prop = GET_UCD(fc);
  ------------------
  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4372|      0|            ok = MAPBIT(PRIV(ucd_boolprop_sets) +
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
 4373|      0|              UCD_BPROPS_PROP(prop), Lpropvalue) != 0;
 4374|      0|            if (ok == notmatch) break;
  ------------------
  |  Branch (4374:17): [True: 0, False: 0]
  ------------------
 4375|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4376|      0|            }
 4377|      0|          break;
 4378|       |
 4379|      0|          default:
  ------------------
  |  Branch (4379:11): [True: 0, False: 235k]
  ------------------
 4380|      0|          return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 4381|   235k|          }
 4382|       |
 4383|       |        /* Feptr is now past the end of the maximum run */
 4384|       |
 4385|   235k|        if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (4385:13): [True: 83.9k, False: 151k]
  ------------------
 4386|       |
 4387|       |        /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 4388|       |        Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
 4389|       |        go too far. */
 4390|       |
 4391|   151k|        for(;;)
 4392|  1.30M|          {
 4393|  1.30M|          if (Feptr <= Lstart_eptr) break;
  ------------------
  |  |  182|  1.30M|#define Feptr              F->eptr
  ------------------
                        if (Feptr <= Lstart_eptr) break;
  ------------------
  |  | 2645|  1.30M|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (4393:15): [True: 151k, False: 1.15M]
  ------------------
 4394|  1.15M|          RMATCH(Fecode, RM222);
  ------------------
  |  |  551|  1.15M|  {\
  |  |  552|  1.15M|  start_ecode = ra;\
  |  |  553|  1.15M|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  1.15M|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  1.15M|  goto MATCH_RECURSE;\
  |  |  555|  1.15M|  L_##rb:;\
  |  |  556|  1.15M|  }
  ------------------
 4395|  1.15M|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  1.15M|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (4395:15): [True: 0, False: 1.15M]
  ------------------
 4396|  1.15M|          Feptr--;
  ------------------
  |  |  182|  1.15M|#define Feptr              F->eptr
  ------------------
 4397|  1.15M|          if (utf) BACKCHAR(Feptr);
  ------------------
  |  |  345|  1.45M|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 304k, False: 1.15M]
  |  |  ------------------
  ------------------
  |  Branch (4397:15): [True: 1.15M, False: 96]
  ------------------
 4398|  1.15M|          }
 4399|   151k|        }
 4400|       |
 4401|       |      /* Match extended Unicode grapheme clusters. We will get here only if the
 4402|       |      support is in the binary; otherwise a compile-time error occurs. */
 4403|       |
 4404|  1.34M|      else if (Lctype == OP_EXTUNI)
  ------------------
  |  | 2648|  1.34M|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (4404:16): [True: 640, False: 1.34M]
  ------------------
 4405|    640|        {
 4406|  15.8k|        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    640|#define Lmin         F->temp_32[0]
  ------------------
                      for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  15.8k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4406:24): [True: 15.8k, False: 50]
  ------------------
 4407|  15.8k|          {
 4408|  15.8k|          if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  15.8k|#define Feptr              F->eptr
  ------------------
  |  Branch (4408:15): [True: 590, False: 15.2k]
  ------------------
 4409|    590|            {
 4410|    590|            SCHECK_PARTIAL();
  ------------------
  |  |  538|    590|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 590]
  |  |  ------------------
  |  |  539|    590|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    590|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4411|    590|            break;
 4412|    590|            }
 4413|  15.2k|          else
 4414|  15.2k|            {
 4415|  15.2k|            GETCHARINCTEST(fc, Feptr);
  ------------------
  |  |  323|  15.2k|  c = *eptr++; \
  |  |  324|  15.2k|  if (utf && c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|      0|    { \
  |  |  |  |  307|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|      0|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|      0|    }
  |  |  ------------------
  |  |  |  Branch (324:7): [True: 0, False: 15.2k]
  |  |  |  Branch (324:14): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4416|  15.2k|            Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject,
  ------------------
  |  |  182|  15.2k|#define Feptr              F->eptr
  ------------------
                          Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject,
  ------------------
  |  |  195|  15.2k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2022|  15.2k|#define _pcre2_extuni                PCRE2_SUFFIX(_pcre2_extuni_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  15.2k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  15.2k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  15.2k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject,
  ------------------
  |  |  182|  15.2k|#define Feptr              F->eptr
  ------------------
 4417|  15.2k|              utf, NULL);
 4418|  15.2k|            }
 4419|  15.2k|          CHECK_PARTIAL();
  ------------------
  |  |  532|  15.2k|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|  15.2k|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 574, False: 14.6k]
  |  |  ------------------
  |  |  533|  15.2k|    { \
  |  |  534|    574|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|    574|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 574]
  |  |  |  |  ------------------
  |  |  |  |  539|    574|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|    574|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|    574|    }
  ------------------
 4420|  15.2k|          }
 4421|       |
 4422|       |        /* Feptr is now past the end of the maximum run */
 4423|       |
 4424|    640|        if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (4424:13): [True: 37, False: 603]
  ------------------
 4425|       |
 4426|       |        /* We use <= Lstart_eptr rather than == Lstart_eptr to detect the start
 4427|       |        of the run while backtracking because the use of \C in UTF mode can
 4428|       |        cause BACKCHAR to move back past Lstart_eptr. This is just palliative;
 4429|       |        the use of \C in UTF mode is fraught with danger. */
 4430|       |
 4431|    603|        for(;;)
 4432|  15.7k|          {
 4433|  15.7k|          int lgb, rgb;
 4434|  15.7k|          PCRE2_SPTR fptr;
  ------------------
  |  |  820|  15.7k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  15.7k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  15.7k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  15.7k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4435|       |
 4436|  15.7k|          if (Feptr <= Lstart_eptr) break;   /* At start of char run */
  ------------------
  |  |  182|  15.7k|#define Feptr              F->eptr
  ------------------
                        if (Feptr <= Lstart_eptr) break;   /* At start of char run */
  ------------------
  |  | 2645|  15.7k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (4436:15): [True: 602, False: 15.1k]
  ------------------
 4437|  15.1k|          RMATCH(Fecode, RM220);
  ------------------
  |  |  551|  15.1k|  {\
  |  |  552|  15.1k|  start_ecode = ra;\
  |  |  553|  15.1k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  15.1k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  15.1k|  goto MATCH_RECURSE;\
  |  |  555|  15.1k|  L_##rb:;\
  |  |  556|  15.1k|  }
  ------------------
 4438|  15.1k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  15.1k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (4438:15): [True: 0, False: 15.1k]
  ------------------
 4439|       |
 4440|       |          /* Backtracking over an extended grapheme cluster involves inspecting
 4441|       |          the previous two characters (if present) to see if a break is
 4442|       |          permitted between them. */
 4443|       |
 4444|  15.1k|          Feptr--;
  ------------------
  |  |  182|  15.1k|#define Feptr              F->eptr
  ------------------
 4445|  15.1k|          if (!utf) fc = *Feptr; else
  ------------------
  |  |  182|  15.1k|#define Feptr              F->eptr
  ------------------
  |  Branch (4445:15): [True: 15.1k, False: 0]
  ------------------
 4446|      0|            {
 4447|      0|            BACKCHAR(Feptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4448|      0|            GETCHAR(fc, Feptr);
  ------------------
  |  |  302|      0|  c = *eptr; \
  |  |  303|      0|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      0|    { \
  |  |  |  |  285|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  286|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  288|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      0|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      0|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4449|      0|            }
 4450|  15.1k|          rgb = UCD_GRAPHBREAK(fc);
  ------------------
  |  | 1887|  15.1k|#define UCD_GRAPHBREAK(ch)  GET_UCD(ch)->gbprop
  |  |  ------------------
  |  |  |  | 1873|  15.1k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  15.1k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  15.1k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  15.1k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  15.1k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  15.1k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  15.1k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  15.1k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  15.1k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  15.1k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  15.1k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  15.1k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  15.1k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  15.1k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  15.1k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  15.1k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  15.1k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  15.1k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  15.1k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  15.1k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  15.1k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  15.1k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4451|       |
 4452|  15.1k|          for (;;)
 4453|  15.1k|            {
 4454|  15.1k|            if (Feptr <= Lstart_eptr) break;   /* At start of char run */
  ------------------
  |  |  182|  15.1k|#define Feptr              F->eptr
  ------------------
                          if (Feptr <= Lstart_eptr) break;   /* At start of char run */
  ------------------
  |  | 2645|  15.1k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (4454:17): [True: 580, False: 14.6k]
  ------------------
 4455|  14.6k|            fptr = Feptr - 1;
  ------------------
  |  |  182|  14.6k|#define Feptr              F->eptr
  ------------------
 4456|  14.6k|            if (!utf) fc = *fptr; else
  ------------------
  |  Branch (4456:17): [True: 14.6k, False: 0]
  ------------------
 4457|      0|              {
 4458|      0|              BACKCHAR(fptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4459|      0|              GETCHAR(fc, fptr);
  ------------------
  |  |  302|      0|  c = *eptr; \
  |  |  303|      0|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      0|    { \
  |  |  |  |  285|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  286|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      0|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  288|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      0|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      0|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4460|      0|              }
 4461|  14.6k|            lgb = UCD_GRAPHBREAK(fc);
  ------------------
  |  | 1887|  14.6k|#define UCD_GRAPHBREAK(ch)  GET_UCD(ch)->gbprop
  |  |  ------------------
  |  |  |  | 1873|  14.6k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  14.6k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  14.6k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  14.6k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  14.6k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  14.6k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  14.6k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  14.6k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  14.6k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  14.6k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  14.6k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  14.6k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  14.6k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  14.6k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  14.6k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  14.6k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  14.6k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  14.6k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  14.6k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  14.6k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  14.6k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  14.6k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4462|  14.6k|            if ((PRIV(ucp_gbtable)[lgb] & (1u << rgb)) == 0) break;
  ------------------
  |  |  195|  14.6k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1963|  14.6k|#define _pcre2_ucp_gbtable             PCRE2_SUFFIX(_pcre2_ucp_gbtable_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  14.6k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  14.6k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  14.6k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4462:17): [True: 14.6k, False: 0]
  ------------------
 4463|      0|            Feptr = fptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4464|      0|            rgb = lgb;
 4465|      0|            }
 4466|  15.1k|          }
 4467|    603|        }
 4468|       |
 4469|  1.34M|      else
 4470|  1.34M|#endif   /* SUPPORT_UNICODE */
 4471|       |
 4472|  1.34M|#ifdef SUPPORT_UNICODE
 4473|  1.34M|      if (utf)
  ------------------
  |  Branch (4473:11): [True: 1.33M, False: 9.63k]
  ------------------
 4474|  1.33M|        {
 4475|  1.33M|        switch(Lctype)
  ------------------
  |  | 2648|  1.33M|#define Lctype       F->temp_32[2]
  ------------------
 4476|  1.33M|          {
 4477|    173|          case OP_ANY:
  ------------------
  |  Branch (4477:11): [True: 173, False: 1.33M]
  ------------------
 4478|  6.22k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    173|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  6.22k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4478:26): [True: 6.20k, False: 14]
  ------------------
 4479|  6.20k|            {
 4480|  6.20k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  6.20k|#define Feptr              F->eptr
  ------------------
  |  Branch (4480:17): [True: 157, False: 6.05k]
  ------------------
 4481|    157|              {
 4482|    157|              SCHECK_PARTIAL();
  ------------------
  |  |  538|    157|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 157]
  |  |  ------------------
  |  |  539|    157|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    157|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4483|    157|              break;
 4484|    157|              }
 4485|  6.05k|            if (IS_NEWLINE(Feptr)) break;
  ------------------
  |  |  497|  6.05k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|  6.05k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|  6.05k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 2, False: 6.05k]
  |  |  |  Branch (497:4): [True: 0, False: 6.05k]
  |  |  ------------------
  |  |  498|  6.05k|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|  6.05k|    : \
  |  |  502|  6.05k|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  6.05k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|  6.05k|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  6.05k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 6.05k, False: 0]
  |  |  ------------------
  |  |  503|  6.05k|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|  6.05k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|  6.05k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 2, False: 6.05k]
  |  |  ------------------
  |  |  504|  6.05k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      2|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 2, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|  6.05k|    ) \
  |  |  506|  6.05k|  )
  ------------------
 4486|  6.05k|            if (mb->partial != 0 &&    /* Take care with CRLF partial */
  ------------------
  |  Branch (4486:17): [True: 0, False: 6.05k]
  ------------------
 4487|      0|                Feptr + 1 >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4487:17): [True: 0, False: 0]
  ------------------
 4488|      0|                NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                              NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|  6.05k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (4488:17): [True: 0, False: 0]
  ------------------
 4489|      0|                NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (4489:17): [True: 0, False: 0]
  ------------------
 4490|      0|                UCHAR21(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                              UCHAR21(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (4490:17): [True: 0, False: 0]
  ------------------
 4491|      0|              {
 4492|      0|              mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4493|      0|              if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (4493:19): [True: 0, False: 0]
  ------------------
 4494|      0|              }
 4495|  6.05k|            Feptr++;
  ------------------
  |  |  182|  6.05k|#define Feptr              F->eptr
  ------------------
 4496|  6.05k|            ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|  6.11k|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 5.96k, False: 157]
  |  |  |  Branch (353:24): [True: 69, False: 5.89k]
  |  |  ------------------
  ------------------
 4497|  6.05k|            }
 4498|    173|          break;
 4499|       |
 4500|  1.29M|          case OP_ALLANY:
  ------------------
  |  Branch (4500:11): [True: 1.29M, False: 34.7k]
  ------------------
 4501|  1.29M|          if (Lmax < UINT32_MAX)
  ------------------
  |  | 2647|  1.29M|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4501:15): [True: 114, False: 1.29M]
  ------------------
 4502|    114|            {
 4503|    226|            for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    114|#define Lmin         F->temp_32[0]
  ------------------
                          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|    226|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4503:28): [True: 114, False: 112]
  ------------------
 4504|    114|              {
 4505|    114|              if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    114|#define Feptr              F->eptr
  ------------------
  |  Branch (4505:19): [True: 2, False: 112]
  ------------------
 4506|      2|                {
 4507|      2|                SCHECK_PARTIAL();
  ------------------
  |  |  538|      2|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  539|      2|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      2|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4508|      2|                break;
 4509|      2|                }
 4510|    112|              Feptr++;
  ------------------
  |  |  182|    112|#define Feptr              F->eptr
  ------------------
 4511|    112|              ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++);
  ------------------
  |  |  353|    112|  while((condition) && ((*eptr) & 0xc0u) == 0x80u) action
  |  |  ------------------
  |  |  |  Branch (353:9): [True: 112, False: 0]
  |  |  |  Branch (353:24): [True: 0, False: 112]
  |  |  ------------------
  ------------------
 4512|    112|              }
 4513|    114|            }
 4514|  1.29M|          else
 4515|  1.29M|            {
 4516|  1.29M|            Feptr = mb->end_subject;   /* Unlimited UTF-8 repeat */
  ------------------
  |  |  182|  1.29M|#define Feptr              F->eptr
  ------------------
 4517|  1.29M|            SCHECK_PARTIAL();
  ------------------
  |  |  538|  1.29M|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1.29M]
  |  |  ------------------
  |  |  539|  1.29M|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  1.29M|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4518|  1.29M|            }
 4519|  1.29M|          break;
 4520|       |
 4521|       |          /* The "byte" (i.e. "code unit") case is the same as non-UTF */
 4522|       |
 4523|  1.29M|          case OP_ANYBYTE:
  ------------------
  |  Branch (4523:11): [True: 63, False: 1.33M]
  ------------------
 4524|     63|          fc = Lmax - Lmin;
  ------------------
  |  | 2647|     63|#define Lmax         F->temp_32[1]
  ------------------
                        fc = Lmax - Lmin;
  ------------------
  |  | 2646|     63|#define Lmin         F->temp_32[0]
  ------------------
 4525|     63|          if (fc > (uint32_t)(mb->end_subject - Feptr))
  ------------------
  |  |  182|     63|#define Feptr              F->eptr
  ------------------
  |  Branch (4525:15): [True: 55, False: 8]
  ------------------
 4526|     55|            {
 4527|     55|            Feptr = mb->end_subject;
  ------------------
  |  |  182|     55|#define Feptr              F->eptr
  ------------------
 4528|     55|            SCHECK_PARTIAL();
  ------------------
  |  |  538|     55|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 55]
  |  |  ------------------
  |  |  539|     55|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     55|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4529|     55|            }
 4530|      8|          else Feptr += fc;
  ------------------
  |  |  182|      8|#define Feptr              F->eptr
  ------------------
 4531|     63|          break;
 4532|       |
 4533|  27.7k|          case OP_ANYNL:
  ------------------
  |  Branch (4533:11): [True: 27.7k, False: 1.30M]
  ------------------
 4534|  27.8k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|  27.7k|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  27.8k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4534:26): [True: 27.8k, False: 0]
  ------------------
 4535|  27.8k|            {
 4536|  27.8k|            int len = 1;
 4537|  27.8k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  27.8k|#define Feptr              F->eptr
  ------------------
  |  Branch (4537:17): [True: 2, False: 27.8k]
  ------------------
 4538|      2|              {
 4539|      2|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      2|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  539|      2|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      2|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4540|      2|              break;
 4541|      2|              }
 4542|  27.8k|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|  27.8k|  c = *eptr; \
  |  |  331|  27.8k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      2|    { \
  |  |  |  |  341|      2|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  342|      2|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      2|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  347|      2|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      2|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      2|      {\
  |  |  |  |  353|      2|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      2|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      2|      len += 3; \
  |  |  |  |  356|      2|      } \
  |  |  |  |  357|      2|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      2|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 2, False: 27.8k]
  |  |  ------------------
  ------------------
 4543|  27.8k|            if (fc == CHAR_CR)
  ------------------
  |  |  990|  27.8k|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (4543:17): [True: 64, False: 27.7k]
  ------------------
 4544|     64|              {
 4545|     64|              if (++Feptr >= mb->end_subject) break;
  ------------------
  |  |  182|     64|#define Feptr              F->eptr
  ------------------
  |  Branch (4545:19): [True: 0, False: 64]
  ------------------
 4546|     64|              if (UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  243|     64|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                            if (UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  991|     64|#define CHAR_LF                     '\012'
  ------------------
                            if (UCHAR21(Feptr) == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4546:19): [True: 0, False: 64]
  ------------------
 4547|     64|              }
 4548|  27.7k|            else
 4549|  27.7k|              {
 4550|  27.7k|              if (fc != CHAR_LF &&
  ------------------
  |  |  991|  55.5k|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (4550:19): [True: 27.7k, False: 17]
  ------------------
 4551|  27.7k|                  (mb->bsr_convention == PCRE2_BSR_ANYCRLF ||
  ------------------
  |  |  218|  55.4k|#define PCRE2_BSR_ANYCRLF         2
  ------------------
  |  Branch (4551:20): [True: 0, False: 27.7k]
  ------------------
 4552|  27.7k|                   (fc != CHAR_VT && fc != CHAR_FF && fc != CHAR_NEL
  ------------------
  |  |  988|  55.4k|#define CHAR_VT                     '\013'
  ------------------
                                 (fc != CHAR_VT && fc != CHAR_FF && fc != CHAR_NEL
  ------------------
  |  |  989|  55.4k|#define CHAR_FF                     '\014'
  ------------------
                                 (fc != CHAR_VT && fc != CHAR_FF && fc != CHAR_NEL
  ------------------
  |  |  993|  55.4k|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (4552:21): [True: 27.7k, False: 5]
  |  Branch (4552:38): [True: 27.7k, False: 0]
  |  Branch (4552:55): [True: 27.7k, False: 0]
  ------------------
 4553|  27.7k|#ifndef EBCDIC
 4554|  27.7k|                    && fc != 0x2028 && fc != 0x2029
  ------------------
  |  Branch (4554:24): [True: 27.7k, False: 0]
  |  Branch (4554:40): [True: 27.7k, False: 0]
  ------------------
 4555|  27.7k|#endif  /* Not EBCDIC */
 4556|  27.7k|                    )))
 4557|  27.7k|                break;
 4558|     22|              Feptr += len;
  ------------------
  |  |  182|     22|#define Feptr              F->eptr
  ------------------
 4559|     22|              }
 4560|  27.8k|            }
 4561|  27.7k|          break;
 4562|       |
 4563|  27.7k|          case OP_NOT_HSPACE:
  ------------------
  |  Branch (4563:11): [True: 5.95k, False: 1.32M]
  ------------------
 4564|  6.56k|          case OP_HSPACE:
  ------------------
  |  Branch (4564:11): [True: 615, False: 1.33M]
  ------------------
 4565|  18.3k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|  6.56k|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  18.3k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4565:26): [True: 12.6k, False: 5.69k]
  ------------------
 4566|  12.6k|            {
 4567|  12.6k|            BOOL gotspace;
 4568|  12.6k|            int len = 1;
 4569|  12.6k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  12.6k|#define Feptr              F->eptr
  ------------------
  |  Branch (4569:17): [True: 300, False: 12.3k]
  ------------------
 4570|    300|              {
 4571|    300|              SCHECK_PARTIAL();
  ------------------
  |  |  538|    300|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 300]
  |  |  ------------------
  |  |  539|    300|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    300|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4572|    300|              break;
 4573|    300|              }
 4574|  12.3k|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|  12.3k|  c = *eptr; \
  |  |  331|  12.3k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|     14|    { \
  |  |  |  |  341|     14|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 4, False: 10]
  |  |  |  |  ------------------
  |  |  |  |  342|     14|      { \
  |  |  |  |  343|      4|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      4|      len++; \
  |  |  |  |  345|      4|      } \
  |  |  |  |  346|     14|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  |  |  347|     10|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|     10|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|     10|      {\
  |  |  |  |  353|     10|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|     10|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|     10|      len += 3; \
  |  |  |  |  356|     10|      } \
  |  |  |  |  357|     10|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|     14|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 14, False: 12.3k]
  |  |  ------------------
  ------------------
 4575|  12.3k|            switch(fc)
 4576|  12.3k|              {
 4577|    930|              HSPACE_CASES: gotspace = TRUE; break;
  ------------------
  |  |  430|    930|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  426|    930|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|    930|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 930, False: 11.4k]
  |  |  |  |  ------------------
  |  |  |  |  427|    930|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|    930|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|    930|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  408|    930|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  409|    930|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  410|    930|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  411|    930|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  412|    930|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  413|    930|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  414|    930|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  415|    930|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  416|    930|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  417|    930|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  418|    930|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  419|    930|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  420|    930|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  421|    930|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 12.3k]
  |  |  |  |  ------------------
  |  |  |  |  422|    930|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
                            HSPACE_CASES: gotspace = TRUE; break;
  ------------------
  |  |   88|    930|#define TRUE    1
  ------------------
 4578|  11.4k|              default: gotspace = FALSE; break;
  ------------------
  |  |   87|  11.4k|#define FALSE   0
  ------------------
  |  Branch (4578:15): [True: 11.4k, False: 930]
  ------------------
 4579|  12.3k|              }
 4580|  12.3k|            if (gotspace == (Lctype == OP_NOT_HSPACE)) break;
  ------------------
  |  | 2648|  12.3k|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (4580:17): [True: 576, False: 11.7k]
  ------------------
 4581|  11.7k|            Feptr += len;
  ------------------
  |  |  182|  11.7k|#define Feptr              F->eptr
  ------------------
 4582|  11.7k|            }
 4583|  6.56k|          break;
 4584|       |
 4585|  6.56k|          case OP_NOT_VSPACE:
  ------------------
  |  Branch (4585:11): [True: 246, False: 1.33M]
  ------------------
 4586|    246|          case OP_VSPACE:
  ------------------
  |  Branch (4586:11): [True: 0, False: 1.33M]
  ------------------
 4587|  2.59k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    246|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  2.59k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4587:26): [True: 2.57k, False: 15]
  ------------------
 4588|  2.57k|            {
 4589|  2.57k|            BOOL gotspace;
 4590|  2.57k|            int len = 1;
 4591|  2.57k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  2.57k|#define Feptr              F->eptr
  ------------------
  |  Branch (4591:17): [True: 95, False: 2.48k]
  ------------------
 4592|     95|              {
 4593|     95|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     95|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 95]
  |  |  ------------------
  |  |  539|     95|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     95|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4594|     95|              break;
 4595|     95|              }
 4596|  2.48k|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|  2.48k|  c = *eptr; \
  |  |  331|  2.48k|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|     97|    { \
  |  |  |  |  341|     97|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 48, False: 49]
  |  |  |  |  ------------------
  |  |  |  |  342|     97|      { \
  |  |  |  |  343|     48|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|     48|      len++; \
  |  |  |  |  345|     48|      } \
  |  |  |  |  346|     97|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 11, False: 38]
  |  |  |  |  ------------------
  |  |  |  |  347|     49|      { \
  |  |  |  |  348|     11|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|     11|      len += 2; \
  |  |  |  |  350|     11|      } \
  |  |  |  |  351|     49|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 38, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|     38|      {\
  |  |  |  |  353|     38|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|     38|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|     38|      len += 3; \
  |  |  |  |  356|     38|      } \
  |  |  |  |  357|     38|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|     97|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 97, False: 2.38k]
  |  |  ------------------
  ------------------
 4597|  2.48k|            switch(fc)
 4598|  2.48k|              {
 4599|    136|              VSPACE_CASES: gotspace = TRUE; break;
  ------------------
  |  |  448|    136|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|     14|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|     14|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 14, False: 2.47k]
  |  |  |  |  ------------------
  |  |  |  |  442|     57|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|     57|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 43, False: 2.44k]
  |  |  |  |  ------------------
  |  |  |  |  443|    120|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|    120|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 63, False: 2.42k]
  |  |  |  |  ------------------
  |  |  |  |  444|    136|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|    136|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 16, False: 2.46k]
  |  |  |  |  ------------------
  |  |  |  |  445|    136|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|    136|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|    136|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 2.48k]
  |  |  |  |  ------------------
  |  |  |  |  438|    136|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
                            VSPACE_CASES: gotspace = TRUE; break;
  ------------------
  |  |   88|    136|#define TRUE    1
  ------------------
 4600|  2.34k|              default: gotspace = FALSE; break;
  ------------------
  |  |   87|  2.34k|#define FALSE   0
  ------------------
  |  Branch (4600:15): [True: 2.34k, False: 136]
  ------------------
 4601|  2.48k|              }
 4602|  2.48k|            if (gotspace == (Lctype == OP_NOT_VSPACE)) break;
  ------------------
  |  | 2648|  2.48k|#define Lctype       F->temp_32[2]
  ------------------
  |  Branch (4602:17): [True: 136, False: 2.34k]
  ------------------
 4603|  2.34k|            Feptr += len;
  ------------------
  |  |  182|  2.34k|#define Feptr              F->eptr
  ------------------
 4604|  2.34k|            }
 4605|    246|          break;
 4606|       |
 4607|    246|          case OP_NOT_DIGIT:
  ------------------
  |  Branch (4607:11): [True: 0, False: 1.33M]
  ------------------
 4608|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4608:26): [True: 0, False: 0]
  ------------------
 4609|      0|            {
 4610|      0|            int len = 1;
 4611|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4611:17): [True: 0, False: 0]
  ------------------
 4612|      0|              {
 4613|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4614|      0|              break;
 4615|      0|              }
 4616|      0|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|      0|  c = *eptr; \
  |  |  331|      0|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4617|      0|            if (fc < 256 && (mb->ctypes[fc] & ctype_digit) != 0) break;
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (4617:17): [True: 0, False: 0]
  |  Branch (4617:29): [True: 0, False: 0]
  ------------------
 4618|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4619|      0|            }
 4620|      0|          break;
 4621|       |
 4622|      0|          case OP_DIGIT:
  ------------------
  |  Branch (4622:11): [True: 0, False: 1.33M]
  ------------------
 4623|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4623:26): [True: 0, False: 0]
  ------------------
 4624|      0|            {
 4625|      0|            int len = 1;
 4626|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4626:17): [True: 0, False: 0]
  ------------------
 4627|      0|              {
 4628|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4629|      0|              break;
 4630|      0|              }
 4631|      0|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|      0|  c = *eptr; \
  |  |  331|      0|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4632|      0|            if (fc >= 256 ||(mb->ctypes[fc] & ctype_digit) == 0) break;
  ------------------
  |  |  600|      0|#define ctype_digit    0x08
  ------------------
  |  Branch (4632:17): [True: 0, False: 0]
  |  Branch (4632:29): [True: 0, False: 0]
  ------------------
 4633|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4634|      0|            }
 4635|      0|          break;
 4636|       |
 4637|      0|          case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (4637:11): [True: 0, False: 1.33M]
  ------------------
 4638|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4638:26): [True: 0, False: 0]
  ------------------
 4639|      0|            {
 4640|      0|            int len = 1;
 4641|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4641:17): [True: 0, False: 0]
  ------------------
 4642|      0|              {
 4643|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4644|      0|              break;
 4645|      0|              }
 4646|      0|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|      0|  c = *eptr; \
  |  |  331|      0|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4647|      0|            if (fc < 256 && (mb->ctypes[fc] & ctype_space) != 0) break;
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (4647:17): [True: 0, False: 0]
  |  Branch (4647:29): [True: 0, False: 0]
  ------------------
 4648|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4649|      0|            }
 4650|      0|          break;
 4651|       |
 4652|      0|          case OP_WHITESPACE:
  ------------------
  |  Branch (4652:11): [True: 0, False: 1.33M]
  ------------------
 4653|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4653:26): [True: 0, False: 0]
  ------------------
 4654|      0|            {
 4655|      0|            int len = 1;
 4656|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4656:17): [True: 0, False: 0]
  ------------------
 4657|      0|              {
 4658|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4659|      0|              break;
 4660|      0|              }
 4661|      0|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|      0|  c = *eptr; \
  |  |  331|      0|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4662|      0|            if (fc >= 256 ||(mb->ctypes[fc] & ctype_space) == 0) break;
  ------------------
  |  |  597|      0|#define ctype_space    0x01
  ------------------
  |  Branch (4662:17): [True: 0, False: 0]
  |  Branch (4662:29): [True: 0, False: 0]
  ------------------
 4663|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4664|      0|            }
 4665|      0|          break;
 4666|       |
 4667|      0|          case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (4667:11): [True: 0, False: 1.33M]
  ------------------
 4668|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4668:26): [True: 0, False: 0]
  ------------------
 4669|      0|            {
 4670|      0|            int len = 1;
 4671|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4671:17): [True: 0, False: 0]
  ------------------
 4672|      0|              {
 4673|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4674|      0|              break;
 4675|      0|              }
 4676|      0|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|      0|  c = *eptr; \
  |  |  331|      0|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4677|      0|            if (fc < 256 && (mb->ctypes[fc] & ctype_word) != 0) break;
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (4677:17): [True: 0, False: 0]
  |  Branch (4677:29): [True: 0, False: 0]
  ------------------
 4678|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4679|      0|            }
 4680|      0|          break;
 4681|       |
 4682|      0|          case OP_WORDCHAR:
  ------------------
  |  Branch (4682:11): [True: 0, False: 1.33M]
  ------------------
 4683|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4683:26): [True: 0, False: 0]
  ------------------
 4684|      0|            {
 4685|      0|            int len = 1;
 4686|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4686:17): [True: 0, False: 0]
  ------------------
 4687|      0|              {
 4688|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4689|      0|              break;
 4690|      0|              }
 4691|      0|            GETCHARLEN(fc, Feptr, len);
  ------------------
  |  |  330|      0|  c = *eptr; \
  |  |  331|      0|  if (c >= 0xc0u) GETUTF8LEN(c, eptr, len);
  |  |  ------------------
  |  |  |  |  340|      0|    { \
  |  |  |  |  341|      0|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (341:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  342|      0|      { \
  |  |  |  |  343|      0|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  344|      0|      len++; \
  |  |  |  |  345|      0|      } \
  |  |  |  |  346|      0|    else if ((c & 0x10u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (346:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  347|      0|      { \
  |  |  |  |  348|      0|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  349|      0|      len += 2; \
  |  |  |  |  350|      0|      } \
  |  |  |  |  351|      0|    else if ((c & 0x08u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (351:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  352|      0|      {\
  |  |  |  |  353|      0|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  354|      0|          ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  355|      0|      len += 3; \
  |  |  |  |  356|      0|      } \
  |  |  |  |  357|      0|    else if ((c & 0x04u)  == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  358|      0|      { \
  |  |  |  |  359|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  360|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  361|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  362|      0|      len += 4; \
  |  |  |  |  363|      0|      } \
  |  |  |  |  364|      0|    else \
  |  |  |  |  365|      0|      {\
  |  |  |  |  366|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  367|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  368|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  369|      0|      len += 5; \
  |  |  |  |  370|      0|      } \
  |  |  |  |  371|      0|    }
  |  |  ------------------
  |  |  |  Branch (331:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4692|      0|            if (fc >= 256 || (mb->ctypes[fc] & ctype_word) == 0) break;
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (4692:17): [True: 0, False: 0]
  |  Branch (4692:30): [True: 0, False: 0]
  ------------------
 4693|      0|            Feptr+= len;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4694|      0|            }
 4695|      0|          break;
 4696|       |
 4697|      0|          default:
  ------------------
  |  Branch (4697:11): [True: 0, False: 1.33M]
  ------------------
 4698|      0|          return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 4699|  1.33M|          }
 4700|       |
 4701|  1.33M|        if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (4701:13): [True: 27.7k, False: 1.30M]
  ------------------
 4702|       |
 4703|       |        /* After \C in UTF mode, Lstart_eptr might be in the middle of a
 4704|       |        Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't go
 4705|       |        too far. */
 4706|       |
 4707|  1.30M|        for(;;)
 4708|  21.9M|          {
 4709|  21.9M|          if (Feptr <= Lstart_eptr) break;
  ------------------
  |  |  182|  21.9M|#define Feptr              F->eptr
  ------------------
                        if (Feptr <= Lstart_eptr) break;
  ------------------
  |  | 2645|  21.9M|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (4709:15): [True: 1.30M, False: 20.6M]
  ------------------
 4710|  20.6M|          RMATCH(Fecode, RM221);
  ------------------
  |  |  551|  20.6M|  {\
  |  |  552|  20.6M|  start_ecode = ra;\
  |  |  553|  20.6M|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  20.6M|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  20.6M|  goto MATCH_RECURSE;\
  |  |  555|  20.6M|  L_##rb:;\
  |  |  556|  20.6M|  }
  ------------------
 4711|  20.6M|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  20.6M|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (4711:15): [True: 0, False: 20.6M]
  ------------------
 4712|  20.6M|          Feptr--;
  ------------------
  |  |  182|  20.6M|#define Feptr              F->eptr
  ------------------
 4713|  20.6M|          BACKCHAR(Feptr);
  ------------------
  |  |  345|  25.3M|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 4.64M, False: 20.6M]
  |  |  ------------------
  ------------------
 4714|  20.6M|          if (Lctype == OP_ANYNL && Feptr > Lstart_eptr &&
  ------------------
  |  | 2648|  20.6M|#define Lctype       F->temp_32[2]
  ------------------
                        if (Lctype == OP_ANYNL && Feptr > Lstart_eptr &&
  ------------------
  |  |  182|     86|#define Feptr              F->eptr
  ------------------
                        if (Lctype == OP_ANYNL && Feptr > Lstart_eptr &&
  ------------------
  |  | 2645|  20.6M|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (4714:15): [True: 86, False: 20.6M]
  |  Branch (4714:37): [True: 46, False: 40]
  ------------------
 4715|     46|              UCHAR21(Feptr) == CHAR_NL && UCHAR21(Feptr - 1) == CHAR_CR)
  ------------------
  |  |  243|     46|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                            UCHAR21(Feptr) == CHAR_NL && UCHAR21(Feptr - 1) == CHAR_CR)
  ------------------
  |  |  992|     46|#define CHAR_NL                     CHAR_LF
  |  |  ------------------
  |  |  |  |  991|  20.6M|#define CHAR_LF                     '\012'
  |  |  ------------------
  ------------------
                            UCHAR21(Feptr) == CHAR_NL && UCHAR21(Feptr - 1) == CHAR_CR)
  ------------------
  |  |  243|      0|#define UCHAR21(eptr)        (*(eptr))
  ------------------
                            UCHAR21(Feptr) == CHAR_NL && UCHAR21(Feptr - 1) == CHAR_CR)
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (4715:15): [True: 0, False: 46]
  |  Branch (4715:44): [True: 0, False: 0]
  ------------------
 4716|      0|            Feptr--;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4717|  20.6M|          }
 4718|  1.30M|        }
 4719|  9.63k|      else
 4720|  9.63k|#endif  /* SUPPORT_UNICODE */
 4721|       |
 4722|       |      /* Not UTF mode */
 4723|  9.63k|        {
 4724|  9.63k|        switch(Lctype)
  ------------------
  |  | 2648|  9.63k|#define Lctype       F->temp_32[2]
  ------------------
 4725|  9.63k|          {
 4726|  7.98k|          case OP_ANY:
  ------------------
  |  Branch (4726:11): [True: 7.98k, False: 1.64k]
  ------------------
 4727|   198k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|  7.98k|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|   198k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4727:26): [True: 198k, False: 50]
  ------------------
 4728|   198k|            {
 4729|   198k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|   198k|#define Feptr              F->eptr
  ------------------
  |  Branch (4729:17): [True: 5.88k, False: 193k]
  ------------------
 4730|  5.88k|              {
 4731|  5.88k|              SCHECK_PARTIAL();
  ------------------
  |  |  538|  5.88k|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 5.88k]
  |  |  ------------------
  |  |  539|  5.88k|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|  5.88k|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4732|  5.88k|              break;
 4733|  5.88k|              }
 4734|   193k|            if (IS_NEWLINE(Feptr)) break;
  ------------------
  |  |  497|   193k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|   193k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|   193k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:3): [True: 2.05k, False: 191k]
  |  |  |  Branch (497:4): [True: 0, False: 193k]
  |  |  ------------------
  |  |  498|   193k|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|   193k|    : \
  |  |  502|   193k|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|   193k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|   193k|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|   193k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 193k, False: 0]
  |  |  ------------------
  |  |  503|   193k|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|   193k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|   193k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 2.05k, False: 191k]
  |  |  ------------------
  |  |  504|   193k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|  2.05k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 2.05k, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|   193k|    ) \
  |  |  506|   193k|  )
  ------------------
 4735|   191k|            if (mb->partial != 0 &&    /* Take care with CRLF partial */
  ------------------
  |  Branch (4735:17): [True: 0, False: 191k]
  ------------------
 4736|      0|                Feptr + 1 >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4736:17): [True: 0, False: 0]
  ------------------
 4737|      0|                NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                              NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|   191k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (4737:17): [True: 0, False: 0]
  ------------------
 4738|      0|                NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (4738:17): [True: 0, False: 0]
  ------------------
 4739|      0|                *Feptr == NLBLOCK->nl[0])
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                              *Feptr == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (4739:17): [True: 0, False: 0]
  ------------------
 4740|      0|              {
 4741|      0|              mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 4742|      0|              if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (4742:19): [True: 0, False: 0]
  ------------------
 4743|      0|              }
 4744|   191k|            Feptr++;
  ------------------
  |  |  182|   191k|#define Feptr              F->eptr
  ------------------
 4745|   191k|            }
 4746|  7.98k|          break;
 4747|       |
 4748|  7.98k|          case OP_ALLANY:
  ------------------
  |  Branch (4748:11): [True: 17, False: 9.61k]
  ------------------
 4749|     17|          case OP_ANYBYTE:
  ------------------
  |  Branch (4749:11): [True: 0, False: 9.63k]
  ------------------
 4750|     17|          fc = Lmax - Lmin;
  ------------------
  |  | 2647|     17|#define Lmax         F->temp_32[1]
  ------------------
                        fc = Lmax - Lmin;
  ------------------
  |  | 2646|     17|#define Lmin         F->temp_32[0]
  ------------------
 4751|     17|          if (fc > (uint32_t)(mb->end_subject - Feptr))
  ------------------
  |  |  182|     17|#define Feptr              F->eptr
  ------------------
  |  Branch (4751:15): [True: 5, False: 12]
  ------------------
 4752|      5|            {
 4753|      5|            Feptr = mb->end_subject;
  ------------------
  |  |  182|      5|#define Feptr              F->eptr
  ------------------
 4754|      5|            SCHECK_PARTIAL();
  ------------------
  |  |  538|      5|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 5]
  |  |  ------------------
  |  |  539|      5|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      5|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4755|      5|            }
 4756|     12|          else Feptr += fc;
  ------------------
  |  |  182|     12|#define Feptr              F->eptr
  ------------------
 4757|     17|          break;
 4758|       |
 4759|     29|          case OP_ANYNL:
  ------------------
  |  Branch (4759:11): [True: 29, False: 9.60k]
  ------------------
 4760|     35|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|     29|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|     35|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4760:26): [True: 35, False: 0]
  ------------------
 4761|     35|            {
 4762|     35|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     35|#define Feptr              F->eptr
  ------------------
  |  Branch (4762:17): [True: 0, False: 35]
  ------------------
 4763|      0|              {
 4764|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4765|      0|              break;
 4766|      0|              }
 4767|     35|            fc = *Feptr;
  ------------------
  |  |  182|     35|#define Feptr              F->eptr
  ------------------
 4768|     35|            if (fc == CHAR_CR)
  ------------------
  |  |  990|     35|#define CHAR_CR                     '\015'
  ------------------
  |  Branch (4768:17): [True: 0, False: 35]
  ------------------
 4769|      0|              {
 4770|      0|              if (++Feptr >= mb->end_subject) break;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4770:19): [True: 0, False: 0]
  ------------------
 4771|      0|              if (*Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            if (*Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  991|      0|#define CHAR_LF                     '\012'
  ------------------
                            if (*Feptr == CHAR_LF) Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4771:19): [True: 0, False: 0]
  ------------------
 4772|      0|              }
 4773|     35|            else
 4774|     35|              {
 4775|     35|              if (fc != CHAR_LF && (mb->bsr_convention == PCRE2_BSR_ANYCRLF ||
  ------------------
  |  |  991|     70|#define CHAR_LF                     '\012'
  ------------------
                            if (fc != CHAR_LF && (mb->bsr_convention == PCRE2_BSR_ANYCRLF ||
  ------------------
  |  |  218|     70|#define PCRE2_BSR_ANYCRLF         2
  ------------------
  |  Branch (4775:19): [True: 35, False: 0]
  |  Branch (4775:37): [True: 0, False: 35]
  ------------------
 4776|     35|                 (fc != CHAR_VT && fc != CHAR_FF && fc != CHAR_NEL
  ------------------
  |  |  988|     70|#define CHAR_VT                     '\013'
  ------------------
                               (fc != CHAR_VT && fc != CHAR_FF && fc != CHAR_NEL
  ------------------
  |  |  989|     64|#define CHAR_FF                     '\014'
  ------------------
                               (fc != CHAR_VT && fc != CHAR_FF && fc != CHAR_NEL
  ------------------
  |  |  993|     29|#define CHAR_NEL                    ((unsigned char)'\x85')
  ------------------
  |  Branch (4776:19): [True: 29, False: 6]
  |  Branch (4776:36): [True: 29, False: 0]
  |  Branch (4776:53): [True: 29, False: 0]
  ------------------
 4777|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4778|       |                 && fc != 0x2028 && fc != 0x2029
 4779|       |#endif
 4780|     35|                 ))) break;
 4781|      6|              Feptr++;
  ------------------
  |  |  182|      6|#define Feptr              F->eptr
  ------------------
 4782|      6|              }
 4783|     35|            }
 4784|     29|          break;
 4785|       |
 4786|     29|          case OP_NOT_HSPACE:
  ------------------
  |  Branch (4786:11): [True: 1, False: 9.63k]
  ------------------
 4787|     28|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      1|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|     28|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4787:26): [True: 28, False: 0]
  ------------------
 4788|     28|            {
 4789|     28|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     28|#define Feptr              F->eptr
  ------------------
  |  Branch (4789:17): [True: 1, False: 27]
  ------------------
 4790|      1|              {
 4791|      1|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      1|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  539|      1|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      1|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4792|      1|              break;
 4793|      1|              }
 4794|     27|            switch(*Feptr)
  ------------------
  |  |  182|     27|#define Feptr              F->eptr
  ------------------
 4795|     27|              {
 4796|     27|              default: Feptr++; break;
  ------------------
  |  |  182|     27|#define Feptr              F->eptr
  ------------------
  |  Branch (4796:15): [True: 27, False: 0]
  ------------------
 4797|      0|              HSPACE_BYTE_CASES:
  ------------------
  |  |  425|      0|  case CHAR_HT: \
  |  |  ------------------
  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  ------------------
  |  |  |  Branch (425:3): [True: 0, False: 27]
  |  |  ------------------
  |  |  426|      0|  case CHAR_SPACE: \
  |  |  ------------------
  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  ------------------
  |  |  |  Branch (426:3): [True: 0, False: 27]
  |  |  ------------------
  |  |  427|     27|  case CHAR_NBSP
  |  |  ------------------
  |  |  |  | 1095|     27|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  ------------------
  ------------------
 4798|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4799|       |              HSPACE_MULTIBYTE_CASES:
 4800|       |#endif
 4801|      0|              goto ENDLOOP00;
 4802|     27|              }
 4803|     27|            }
 4804|      1|          ENDLOOP00:
 4805|      1|          break;
 4806|       |
 4807|      1|          case OP_HSPACE:
  ------------------
  |  Branch (4807:11): [True: 0, False: 9.63k]
  ------------------
 4808|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4808:26): [True: 0, False: 0]
  ------------------
 4809|      0|            {
 4810|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4810:17): [True: 0, False: 0]
  ------------------
 4811|      0|              {
 4812|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4813|      0|              break;
 4814|      0|              }
 4815|      0|            switch(*Feptr)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4816|      0|              {
 4817|      0|              default: goto ENDLOOP01;
  ------------------
  |  Branch (4817:15): [True: 0, False: 0]
  ------------------
 4818|      0|              HSPACE_BYTE_CASES:
  ------------------
  |  |  425|      0|  case CHAR_HT: \
  |  |  ------------------
  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  ------------------
  |  |  |  Branch (425:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  426|      0|  case CHAR_SPACE: \
  |  |  ------------------
  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  ------------------
  |  |  |  Branch (426:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  427|      0|  case CHAR_NBSP
  |  |  ------------------
  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  ------------------
  ------------------
 4819|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4820|       |              HSPACE_MULTIBYTE_CASES:
 4821|       |#endif
 4822|      0|              Feptr++; break;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4823|      0|              }
 4824|      0|            }
 4825|      0|          ENDLOOP01:
 4826|      0|          break;
 4827|       |
 4828|    232|          case OP_NOT_VSPACE:
  ------------------
  |  Branch (4828:11): [True: 232, False: 9.40k]
  ------------------
 4829|  2.57k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    232|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  2.57k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4829:26): [True: 2.57k, False: 0]
  ------------------
 4830|  2.57k|            {
 4831|  2.57k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  2.57k|#define Feptr              F->eptr
  ------------------
  |  Branch (4831:17): [True: 70, False: 2.50k]
  ------------------
 4832|     70|              {
 4833|     70|              SCHECK_PARTIAL();
  ------------------
  |  |  538|     70|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 70]
  |  |  ------------------
  |  |  539|     70|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|     70|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4834|     70|              break;
 4835|     70|              }
 4836|  2.50k|            switch(*Feptr)
  ------------------
  |  |  182|  2.50k|#define Feptr              F->eptr
  ------------------
 4837|  2.50k|              {
 4838|  2.34k|              default: Feptr++; break;
  ------------------
  |  |  182|  2.34k|#define Feptr              F->eptr
  ------------------
  |  Branch (4838:15): [True: 2.34k, False: 162]
  ------------------
 4839|    740|              VSPACE_BYTE_CASES:
  ------------------
  |  |  441|    116|  case CHAR_LF: \
  |  |  ------------------
  |  |  |  |  991|    116|#define CHAR_LF                     '\012'
  |  |  ------------------
  |  |  |  Branch (441:3): [True: 116, False: 2.39k]
  |  |  ------------------
  |  |  442|    138|  case CHAR_VT: \
  |  |  ------------------
  |  |  |  |  988|    138|#define CHAR_VT                     '\013'
  |  |  ------------------
  |  |  |  Branch (442:3): [True: 22, False: 2.48k]
  |  |  ------------------
  |  |  443|    162|  case CHAR_FF: \
  |  |  ------------------
  |  |  |  |  989|    162|#define CHAR_FF                     '\014'
  |  |  ------------------
  |  |  |  Branch (443:3): [True: 24, False: 2.48k]
  |  |  ------------------
  |  |  444|    162|  case CHAR_CR: \
  |  |  ------------------
  |  |  |  |  990|    162|#define CHAR_CR                     '\015'
  |  |  ------------------
  |  |  |  Branch (444:3): [True: 0, False: 2.50k]
  |  |  ------------------
  |  |  445|  2.34k|  case CHAR_NEL
  |  |  ------------------
  |  |  |  |  993|  2.34k|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  ------------------
  ------------------
 4840|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4841|       |              VSPACE_MULTIBYTE_CASES:
 4842|       |#endif
 4843|    740|              goto ENDLOOP02;
 4844|  2.50k|              }
 4845|  2.50k|            }
 4846|    232|          ENDLOOP02:
 4847|    232|          break;
 4848|       |
 4849|     70|          case OP_VSPACE:
  ------------------
  |  Branch (4849:11): [True: 0, False: 9.63k]
  ------------------
 4850|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4850:26): [True: 0, False: 0]
  ------------------
 4851|      0|            {
 4852|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4852:17): [True: 0, False: 0]
  ------------------
 4853|      0|              {
 4854|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4855|      0|              break;
 4856|      0|              }
 4857|      0|            switch(*Feptr)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4858|      0|              {
 4859|      0|              default: goto ENDLOOP03;
  ------------------
  |  Branch (4859:15): [True: 0, False: 0]
  ------------------
 4860|      0|              VSPACE_BYTE_CASES:
  ------------------
  |  |  441|      0|  case CHAR_LF: \
  |  |  ------------------
  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  ------------------
  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  442|      0|  case CHAR_VT: \
  |  |  ------------------
  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  ------------------
  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  443|      0|  case CHAR_FF: \
  |  |  ------------------
  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  ------------------
  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  444|      0|  case CHAR_CR: \
  |  |  ------------------
  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  ------------------
  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  445|      0|  case CHAR_NEL
  |  |  ------------------
  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  ------------------
  ------------------
 4861|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 4862|       |              VSPACE_MULTIBYTE_CASES:
 4863|       |#endif
 4864|      0|              Feptr++; break;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4865|      0|              }
 4866|      0|            }
 4867|      0|          ENDLOOP03:
 4868|      0|          break;
 4869|       |
 4870|  1.02k|          case OP_NOT_DIGIT:
  ------------------
  |  Branch (4870:11): [True: 1.02k, False: 8.60k]
  ------------------
 4871|  3.52k|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|  1.02k|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|  3.52k|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4871:26): [True: 3.52k, False: 0]
  ------------------
 4872|  3.52k|            {
 4873|  3.52k|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  3.52k|#define Feptr              F->eptr
  ------------------
  |  Branch (4873:17): [True: 369, False: 3.16k]
  ------------------
 4874|    369|              {
 4875|    369|              SCHECK_PARTIAL();
  ------------------
  |  |  538|    369|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 369]
  |  |  ------------------
  |  |  539|    369|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|    369|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4876|    369|              break;
 4877|    369|              }
 4878|  3.16k|            if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0)
  ------------------
  |  |  212|  3.16k|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|  6.32k|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 3.16k, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0)
  ------------------
  |  |  182|  3.16k|#define Feptr              F->eptr
  ------------------
                          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0)
  ------------------
  |  |  600|  3.16k|#define ctype_digit    0x08
  ------------------
  |  Branch (4878:36): [True: 656, False: 2.50k]
  ------------------
 4879|    656|              break;
 4880|  2.50k|            Feptr++;
  ------------------
  |  |  182|  2.50k|#define Feptr              F->eptr
  ------------------
 4881|  2.50k|            }
 4882|  1.02k|          break;
 4883|       |
 4884|  1.02k|          case OP_DIGIT:
  ------------------
  |  Branch (4884:11): [True: 94, False: 9.54k]
  ------------------
 4885|     94|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|     94|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|     94|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4885:26): [True: 94, False: 0]
  ------------------
 4886|     94|            {
 4887|     94|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     94|#define Feptr              F->eptr
  ------------------
  |  Branch (4887:17): [True: 0, False: 94]
  ------------------
 4888|      0|              {
 4889|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4890|      0|              break;
 4891|      0|              }
 4892|     94|            if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0)
  ------------------
  |  |  212|     94|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    188|#define TRUE    1
  |  |  ------------------
  ------------------
                          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0)
  ------------------
  |  |  182|     94|#define Feptr              F->eptr
  ------------------
                          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0)
  ------------------
  |  |  600|     94|#define ctype_digit    0x08
  ------------------
  |  Branch (4892:17): [Folded, False: 94]
  |  Branch (4892:37): [True: 94, False: 0]
  ------------------
 4893|     94|              break;
 4894|      0|            Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4895|      0|            }
 4896|     94|          break;
 4897|       |
 4898|     94|          case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (4898:11): [True: 71, False: 9.56k]
  ------------------
 4899|    135|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|     71|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|    135|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4899:26): [True: 71, False: 64]
  ------------------
 4900|     71|            {
 4901|     71|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     71|#define Feptr              F->eptr
  ------------------
  |  Branch (4901:17): [True: 1, False: 70]
  ------------------
 4902|      1|              {
 4903|      1|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      1|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  539|      1|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      1|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4904|      1|              break;
 4905|      1|              }
 4906|     70|            if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0)
  ------------------
  |  |  212|     70|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    140|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 70, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0)
  ------------------
  |  |  182|     70|#define Feptr              F->eptr
  ------------------
                          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0)
  ------------------
  |  |  597|     70|#define ctype_space    0x01
  ------------------
  |  Branch (4906:36): [True: 6, False: 64]
  ------------------
 4907|      6|              break;
 4908|     64|            Feptr++;
  ------------------
  |  |  182|     64|#define Feptr              F->eptr
  ------------------
 4909|     64|            }
 4910|     71|          break;
 4911|       |
 4912|     71|          case OP_WHITESPACE:
  ------------------
  |  Branch (4912:11): [True: 27, False: 9.60k]
  ------------------
 4913|     59|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|     27|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|     59|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4913:26): [True: 57, False: 2]
  ------------------
 4914|     57|            {
 4915|     57|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|     57|#define Feptr              F->eptr
  ------------------
  |  Branch (4915:17): [True: 0, False: 57]
  ------------------
 4916|      0|              {
 4917|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4918|      0|              break;
 4919|      0|              }
 4920|     57|            if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0)
  ------------------
  |  |  212|     57|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    114|#define TRUE    1
  |  |  ------------------
  ------------------
                          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0)
  ------------------
  |  |  182|     57|#define Feptr              F->eptr
  ------------------
                          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0)
  ------------------
  |  |  597|     57|#define ctype_space    0x01
  ------------------
  |  Branch (4920:17): [Folded, False: 57]
  |  Branch (4920:37): [True: 25, False: 32]
  ------------------
 4921|     25|              break;
 4922|     32|            Feptr++;
  ------------------
  |  |  182|     32|#define Feptr              F->eptr
  ------------------
 4923|     32|            }
 4924|     27|          break;
 4925|       |
 4926|     27|          case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (4926:11): [True: 0, False: 9.63k]
  ------------------
 4927|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|      0|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|      0|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4927:26): [True: 0, False: 0]
  ------------------
 4928|      0|            {
 4929|      0|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4929:17): [True: 0, False: 0]
  ------------------
 4930|      0|              {
 4931|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4932|      0|              break;
 4933|      0|              }
 4934|      0|            if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0)
  ------------------
  |  |  212|      0|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                          if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0)
  ------------------
  |  |  601|      0|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (4934:36): [True: 0, False: 0]
  ------------------
 4935|      0|              break;
 4936|      0|            Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 4937|      0|            }
 4938|      0|          break;
 4939|       |
 4940|    149|          case OP_WORDCHAR:
  ------------------
  |  Branch (4940:11): [True: 149, False: 9.48k]
  ------------------
 4941|    231|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2646|    149|#define Lmin         F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 2647|    231|#define Lmax         F->temp_32[1]
  ------------------
  |  Branch (4941:26): [True: 178, False: 53]
  ------------------
 4942|    178|            {
 4943|    178|            if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|    178|#define Feptr              F->eptr
  ------------------
  |  Branch (4943:17): [True: 0, False: 178]
  ------------------
 4944|      0|              {
 4945|      0|              SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 4946|      0|              break;
 4947|      0|              }
 4948|    178|            if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0)
  ------------------
  |  |  212|    178|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    356|#define TRUE    1
  |  |  ------------------
  ------------------
                          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0)
  ------------------
  |  |  182|    178|#define Feptr              F->eptr
  ------------------
                          if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0)
  ------------------
  |  |  601|    178|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (4948:17): [Folded, False: 178]
  |  Branch (4948:37): [True: 96, False: 82]
  ------------------
 4949|     96|              break;
 4950|     82|            Feptr++;
  ------------------
  |  |  182|     82|#define Feptr              F->eptr
  ------------------
 4951|     82|            }
 4952|    149|          break;
 4953|       |
 4954|    149|          default:
  ------------------
  |  Branch (4954:11): [True: 0, False: 9.63k]
  ------------------
 4955|      0|          return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 4956|  9.63k|          }
 4957|       |
 4958|  9.63k|        if (reptype == REPTYPE_POS) continue;    /* No backtracking */
  ------------------
  |  Branch (4958:13): [True: 416, False: 9.21k]
  ------------------
 4959|       |
 4960|  9.21k|        for (;;)
 4961|   203k|          {
 4962|   203k|          if (Feptr == Lstart_eptr) break;
  ------------------
  |  |  182|   203k|#define Feptr              F->eptr
  ------------------
                        if (Feptr == Lstart_eptr) break;
  ------------------
  |  | 2645|   203k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
  |  Branch (4962:15): [True: 9.21k, False: 194k]
  ------------------
 4963|   194k|          RMATCH(Fecode, RM34);
  ------------------
  |  |  551|   194k|  {\
  |  |  552|   194k|  start_ecode = ra;\
  |  |  553|   194k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|   194k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|   194k|  goto MATCH_RECURSE;\
  |  |  555|   194k|  L_##rb:;\
  |  |  556|   194k|  }
  ------------------
 4964|   194k|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|   194k|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (4964:15): [True: 0, False: 194k]
  ------------------
 4965|   194k|          Feptr--;
  ------------------
  |  |  182|   194k|#define Feptr              F->eptr
  ------------------
 4966|   194k|          if (Lctype == OP_ANYNL && Feptr > Lstart_eptr && *Feptr == CHAR_LF &&
  ------------------
  |  | 2648|   194k|#define Lctype       F->temp_32[2]
  ------------------
                        if (Lctype == OP_ANYNL && Feptr > Lstart_eptr && *Feptr == CHAR_LF &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Lctype == OP_ANYNL && Feptr > Lstart_eptr && *Feptr == CHAR_LF &&
  ------------------
  |  | 2645|   194k|#define Lstart_eptr  F->temp_sptr[0]
  ------------------
                        if (Lctype == OP_ANYNL && Feptr > Lstart_eptr && *Feptr == CHAR_LF &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Lctype == OP_ANYNL && Feptr > Lstart_eptr && *Feptr == CHAR_LF &&
  ------------------
  |  |  991|   194k|#define CHAR_LF                     '\012'
  ------------------
  |  Branch (4966:15): [True: 0, False: 194k]
  |  Branch (4966:37): [True: 0, False: 0]
  |  Branch (4966:60): [True: 0, False: 0]
  ------------------
 4967|      0|              Feptr[-1] == CHAR_CR) Feptr--;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                            Feptr[-1] == CHAR_CR) Feptr--;
  ------------------
  |  |  990|      0|#define CHAR_CR                     '\015'
  ------------------
                            Feptr[-1] == CHAR_CR) Feptr--;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (4967:15): [True: 0, False: 0]
  ------------------
 4968|   194k|          }
 4969|  9.21k|        }
 4970|  1.57M|      }
 4971|  1.46M|    break;  /* End of repeat character type processing */
 4972|       |
 4973|  1.46M|#undef Lstart_eptr
 4974|  1.46M|#undef Lmin
 4975|  1.46M|#undef Lmax
 4976|  1.46M|#undef Lctype
 4977|  1.46M|#undef Lpropvalue
 4978|       |
 4979|       |
 4980|       |    /* ===================================================================== */
 4981|       |    /* Match a back reference, possibly repeatedly. Look past the end of the
 4982|       |    item to see if there is repeat information following. The OP_REF and
 4983|       |    OP_REFI opcodes are used for a reference to a numbered group or to a
 4984|       |    non-duplicated named group. For a duplicated named group, OP_DNREF and
 4985|       |    OP_DNREFI are used. In this case we must scan the list of groups to which
 4986|       |    the name refers, and use the first one that is set. */
 4987|       |
 4988|  1.46M|#define Lmin      F->temp_32[0]
 4989|  1.46M|#define Lmax      F->temp_32[1]
 4990|  1.46M|#define Lcaseless F->temp_32[2]
 4991|  1.46M|#define Lstart    F->temp_sptr[0]
 4992|  1.46M|#define Loffset   F->temp_size
 4993|       |
 4994|  1.46M|    case OP_DNREF:
  ------------------
  |  Branch (4994:5): [True: 0, False: 28.4M]
  ------------------
 4995|      0|    case OP_DNREFI:
  ------------------
  |  Branch (4995:5): [True: 0, False: 28.4M]
  ------------------
 4996|      0|    Lcaseless = (Fop == OP_DNREFI);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
                  Lcaseless = (Fop == OP_DNREFI);
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
 4997|      0|      {
 4998|      0|      int count = GET2(Fecode, 1+IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 4999|      0|      PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5000|      0|      Fecode += 1 + 2*IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += 1 + 2*IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 5001|       |
 5002|      0|      while (count-- > 0)
  ------------------
  |  Branch (5002:14): [True: 0, False: 0]
  ------------------
 5003|      0|        {
 5004|      0|        Loffset = (GET2(slot, 0) << 1) - 2;
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                      Loffset = (GET2(slot, 0) << 1) - 2;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5005|      0|        if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET) break;
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                      if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET) break;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
                      if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET) break;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                      if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET) break;
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                      if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET) break;
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (5005:13): [True: 0, False: 0]
  |  Branch (5005:38): [True: 0, False: 0]
  ------------------
 5006|      0|        slot += mb->name_entry_size;
 5007|      0|        }
 5008|      0|      }
 5009|      0|    goto REF_REPEAT;
 5010|       |
 5011|      0|    case OP_REF:
  ------------------
  |  Branch (5011:5): [True: 0, False: 28.4M]
  ------------------
 5012|      0|    case OP_REFI:
  ------------------
  |  Branch (5012:5): [True: 0, False: 28.4M]
  ------------------
 5013|      0|    Lcaseless = (Fop == OP_REFI);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
                  Lcaseless = (Fop == OP_REFI);
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
 5014|      0|    Loffset = (GET2(Fecode, 1) << 1) - 2;
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                  Loffset = (GET2(Fecode, 1) << 1) - 2;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5015|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 5016|       |
 5017|       |    /* Set up for repetition, or handle the non-repeated case. The maximum and
 5018|       |    minimum must be in the heap frame, but as they are short-term values, we
 5019|       |    use temporary fields. */
 5020|       |
 5021|      0|    REF_REPEAT:
 5022|      0|    switch (*Fecode)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5023|      0|      {
 5024|      0|      case OP_CRSTAR:
  ------------------
  |  Branch (5024:7): [True: 0, False: 0]
  ------------------
 5025|      0|      case OP_CRMINSTAR:
  ------------------
  |  Branch (5025:7): [True: 0, False: 0]
  ------------------
 5026|      0|      case OP_CRPLUS:
  ------------------
  |  Branch (5026:7): [True: 0, False: 0]
  ------------------
 5027|      0|      case OP_CRMINPLUS:
  ------------------
  |  Branch (5027:7): [True: 0, False: 0]
  ------------------
 5028|      0|      case OP_CRQUERY:
  ------------------
  |  Branch (5028:7): [True: 0, False: 0]
  ------------------
 5029|      0|      case OP_CRMINQUERY:
  ------------------
  |  Branch (5029:7): [True: 0, False: 0]
  ------------------
 5030|      0|      fc = *Fecode++ - OP_CRSTAR;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5031|      0|      Lmin = rep_min[fc];
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
 5032|      0|      Lmax = rep_max[fc];
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
 5033|      0|      reptype = rep_typ[fc];
 5034|      0|      break;
 5035|       |
 5036|      0|      case OP_CRRANGE:
  ------------------
  |  Branch (5036:7): [True: 0, False: 0]
  ------------------
 5037|      0|      case OP_CRMINRANGE:
  ------------------
  |  Branch (5037:7): [True: 0, False: 0]
  ------------------
 5038|      0|      Lmin = GET2(Fecode, 1);
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
                    Lmin = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5039|      0|      Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
                    Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5040|      0|      reptype = rep_typ[*Fecode - OP_CRSTAR];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5041|      0|      if (Lmax == 0) Lmax = UINT32_MAX;  /* Max 0 => infinity */
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
                    if (Lmax == 0) Lmax = UINT32_MAX;  /* Max 0 => infinity */
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
  |  Branch (5041:11): [True: 0, False: 0]
  ------------------
 5042|      0|      Fecode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 5043|      0|      break;
 5044|       |
 5045|      0|      default:                  /* No repeat follows */
  ------------------
  |  Branch (5045:7): [True: 0, False: 0]
  ------------------
 5046|      0|        {
 5047|      0|        rrc = match_ref(Loffset, Lcaseless, F, mb, &length);
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                      rrc = match_ref(Loffset, Lcaseless, F, mb, &length);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
 5048|      0|        if (rrc != 0)
  ------------------
  |  Branch (5048:13): [True: 0, False: 0]
  ------------------
 5049|      0|          {
 5050|      0|          if (rrc > 0) Feptr = mb->end_subject;   /* Partial match */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5050:15): [True: 0, False: 0]
  ------------------
 5051|      0|          CHECK_PARTIAL();
  ------------------
  |  |  532|      0|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  533|      0|    { \
  |  |  534|      0|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|      0|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|      0|    }
  ------------------
 5052|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5053|      0|          }
 5054|      0|        }
 5055|      0|      Feptr += length;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5056|      0|      continue;              /* With the main loop */
 5057|      0|      }
 5058|       |
 5059|       |    /* Handle repeated back references. If a set group has length zero, just
 5060|       |    continue with the main loop, because it matches however many times. For an
 5061|       |    unset reference, if the minimum is zero, we can also just continue. We can
 5062|       |    also continue if PCRE2_MATCH_UNSET_BACKREF is set, because this makes unset
 5063|       |    group behave as a zero-length group. For any other unset cases, carrying
 5064|       |    on will result in NOMATCH. */
 5065|       |
 5066|      0|    if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET)
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                  if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET)
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
                  if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET)
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                  if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET)
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                  if (Loffset < Foffset_top && Fovector[Loffset] != PCRE2_UNSET)
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (5066:9): [True: 0, False: 0]
  |  Branch (5066:34): [True: 0, False: 0]
  ------------------
 5067|      0|      {
 5068|      0|      if (Fovector[Loffset] == Fovector[Loffset + 1]) continue;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                    if (Fovector[Loffset] == Fovector[Loffset + 1]) continue;
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                    if (Fovector[Loffset] == Fovector[Loffset + 1]) continue;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                    if (Fovector[Loffset] == Fovector[Loffset + 1]) continue;
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
  |  Branch (5068:11): [True: 0, False: 0]
  ------------------
 5069|      0|      }
 5070|      0|    else  /* Group is not set */
 5071|      0|      {
 5072|      0|      if (Lmin == 0 || (mb->poptions & PCRE2_MATCH_UNSET_BACKREF) != 0)
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
                    if (Lmin == 0 || (mb->poptions & PCRE2_MATCH_UNSET_BACKREF) != 0)
  ------------------
  |  |  128|      0|#define PCRE2_MATCH_UNSET_BACKREF 0x00000200u  /* C J M   */
  ------------------
  |  Branch (5072:11): [True: 0, False: 0]
  |  Branch (5072:24): [True: 0, False: 0]
  ------------------
 5073|      0|        continue;
 5074|      0|      }
 5075|       |
 5076|       |    /* First, ensure the minimum number of matches are present. */
 5077|       |
 5078|      0|    for (i = 1; i <= Lmin; i++)
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
  |  Branch (5078:17): [True: 0, False: 0]
  ------------------
 5079|      0|      {
 5080|      0|      PCRE2_SIZE slength;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 5081|      0|      rrc = match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                    rrc = match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
 5082|      0|      if (rrc != 0)
  ------------------
  |  Branch (5082:11): [True: 0, False: 0]
  ------------------
 5083|      0|        {
 5084|      0|        if (rrc > 0) Feptr = mb->end_subject;   /* Partial match */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5084:13): [True: 0, False: 0]
  ------------------
 5085|      0|        CHECK_PARTIAL();
  ------------------
  |  |  532|      0|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  533|      0|    { \
  |  |  534|      0|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|      0|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|      0|    }
  ------------------
 5086|      0|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5087|      0|        }
 5088|      0|      Feptr += slength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5089|      0|      }
 5090|       |
 5091|       |    /* If min = max, we are done. They are not both allowed to be zero. */
 5092|       |
 5093|      0|    if (Lmin == Lmax) continue;
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
                  if (Lmin == Lmax) continue;
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
  |  Branch (5093:9): [True: 0, False: 0]
  ------------------
 5094|       |
 5095|       |    /* If minimizing, keep trying and advancing the pointer. */
 5096|       |
 5097|      0|    if (reptype == REPTYPE_MIN)
  ------------------
  |  Branch (5097:9): [True: 0, False: 0]
  ------------------
 5098|      0|      {
 5099|      0|      for (;;)
 5100|      0|        {
 5101|      0|        PCRE2_SIZE slength;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 5102|      0|        RMATCH(Fecode, RM20);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5103|      0|        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5103:13): [True: 0, False: 0]
  ------------------
 5104|      0|        if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
                      if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
                      if (Lmin++ >= Lmax) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5104:13): [True: 0, False: 0]
  ------------------
 5105|      0|        rrc = match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                      rrc = match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
 5106|      0|        if (rrc != 0)
  ------------------
  |  Branch (5106:13): [True: 0, False: 0]
  ------------------
 5107|      0|          {
 5108|      0|          if (rrc > 0) Feptr = mb->end_subject;   /* Partial match */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5108:15): [True: 0, False: 0]
  ------------------
 5109|      0|          CHECK_PARTIAL();
  ------------------
  |  |  532|      0|  if (Feptr >= mb->end_subject) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (532:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  533|      0|    { \
  |  |  534|      0|    SCHECK_PARTIAL(); \
  |  |  ------------------
  |  |  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  540|      0|    { \
  |  |  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  543|      0|    }
  |  |  ------------------
  |  |  535|      0|    }
  ------------------
 5110|      0|          RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5111|      0|          }
 5112|      0|        Feptr += slength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5113|      0|        }
 5114|       |      /* Control never gets here */
 5115|      0|      }
 5116|       |
 5117|       |    /* If maximizing, find the longest string and work backwards, as long as
 5118|       |    the matched lengths for each iteration are the same. */
 5119|       |
 5120|      0|    else
 5121|      0|      {
 5122|      0|      BOOL samelengths = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5123|      0|      Lstart = Feptr;     /* Starting position */
  ------------------
  |  | 4991|      0|#define Lstart    F->temp_sptr[0]
  ------------------
                    Lstart = Feptr;     /* Starting position */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5124|      0|      Flength = Fovector[Loffset+1] - Fovector[Loffset];
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
                    Flength = Fovector[Loffset+1] - Fovector[Loffset];
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                    Flength = Fovector[Loffset+1] - Fovector[Loffset];
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                    Flength = Fovector[Loffset+1] - Fovector[Loffset];
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                    Flength = Fovector[Loffset+1] - Fovector[Loffset];
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
 5125|       |
 5126|      0|      for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
                    for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
  |  Branch (5126:22): [True: 0, False: 0]
  ------------------
 5127|      0|        {
 5128|      0|        PCRE2_SIZE slength;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 5129|      0|        rrc = match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                      rrc = match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
 5130|      0|        if (rrc != 0)
  ------------------
  |  Branch (5130:13): [True: 0, False: 0]
  ------------------
 5131|      0|          {
 5132|       |          /* Can't use CHECK_PARTIAL because we don't want to update Feptr in
 5133|       |          the soft partial matching case. */
 5134|       |
 5135|      0|          if (rrc > 0 && mb->partial != 0 &&
  ------------------
  |  Branch (5135:15): [True: 0, False: 0]
  |  Branch (5135:26): [True: 0, False: 0]
  ------------------
 5136|      0|              mb->end_subject > mb->start_used_ptr)
  ------------------
  |  Branch (5136:15): [True: 0, False: 0]
  ------------------
 5137|      0|            {
 5138|      0|            mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5139|      0|            if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (5139:17): [True: 0, False: 0]
  ------------------
 5140|      0|            }
 5141|      0|          break;
 5142|      0|          }
 5143|       |
 5144|      0|        if (slength != Flength) samelengths = FALSE;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
                      if (slength != Flength) samelengths = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (5144:13): [True: 0, False: 0]
  ------------------
 5145|      0|        Feptr += slength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5146|      0|        }
 5147|       |
 5148|       |      /* If the length matched for each repetition is the same as the length of
 5149|       |      the captured group, we can easily work backwards. This is the normal
 5150|       |      case. However, in caseless UTF-8 mode there are pairs of case-equivalent
 5151|       |      characters whose lengths (in terms of code units) differ. However, this
 5152|       |      is very rare, so we handle it by re-matching fewer and fewer times. */
 5153|       |
 5154|      0|      if (samelengths)
  ------------------
  |  Branch (5154:11): [True: 0, False: 0]
  ------------------
 5155|      0|        {
 5156|      0|        while (Feptr >= Lstart)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                      while (Feptr >= Lstart)
  ------------------
  |  | 4991|      0|#define Lstart    F->temp_sptr[0]
  ------------------
  |  Branch (5156:16): [True: 0, False: 0]
  ------------------
 5157|      0|          {
 5158|      0|          RMATCH(Fecode, RM21);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5159|      0|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5159:15): [True: 0, False: 0]
  ------------------
 5160|      0|          Feptr -= Flength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        Feptr -= Flength;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
 5161|      0|          }
 5162|      0|        }
 5163|       |
 5164|       |      /* The rare case of non-matching lengths. Re-scan the repetition for each
 5165|       |      iteration. We know that match_ref() will succeed every time. */
 5166|       |
 5167|      0|      else
 5168|      0|        {
 5169|      0|        Lmax = i;
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
 5170|      0|        for (;;)
 5171|      0|          {
 5172|      0|          RMATCH(Fecode, RM22);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5173|      0|          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5173:15): [True: 0, False: 0]
  ------------------
 5174|      0|          if (Feptr == Lstart) break; /* Failed after minimal repetition */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        if (Feptr == Lstart) break; /* Failed after minimal repetition */
  ------------------
  |  | 4991|      0|#define Lstart    F->temp_sptr[0]
  ------------------
  |  Branch (5174:15): [True: 0, False: 0]
  ------------------
 5175|      0|          Feptr = Lstart;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                        Feptr = Lstart;
  ------------------
  |  | 4991|      0|#define Lstart    F->temp_sptr[0]
  ------------------
 5176|      0|          Lmax--;
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
 5177|      0|          for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 4988|      0|#define Lmin      F->temp_32[0]
  ------------------
                        for (i = Lmin; i < Lmax; i++)
  ------------------
  |  | 4989|      0|#define Lmax      F->temp_32[1]
  ------------------
  |  Branch (5177:26): [True: 0, False: 0]
  ------------------
 5178|      0|            {
 5179|      0|            PCRE2_SIZE slength;
  ------------------
  |  |  479|      0|#define PCRE2_SIZE            size_t
  ------------------
 5180|      0|            (void)match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4992|      0|#define Loffset   F->temp_size
  ------------------
                          (void)match_ref(Loffset, Lcaseless, F, mb, &slength);
  ------------------
  |  | 4990|      0|#define Lcaseless F->temp_32[2]
  ------------------
 5181|      0|            Feptr += slength;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5182|      0|            }
 5183|      0|          }
 5184|      0|        }
 5185|       |
 5186|      0|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5187|      0|      }
 5188|       |    /* Control never gets here */
 5189|       |
 5190|      0|#undef Lcaseless
 5191|      0|#undef Lmin
 5192|      0|#undef Lmax
 5193|      0|#undef Lstart
 5194|      0|#undef Loffset
 5195|       |
 5196|       |
 5197|       |
 5198|       |/* ========================================================================= */
 5199|       |/*           Opcodes for the start of various parenthesized items            */
 5200|       |/* ========================================================================= */
 5201|       |
 5202|       |    /* In all cases, if the result of RMATCH() is MATCH_THEN, check whether the
 5203|       |    (*THEN) is within the current branch by comparing the address of OP_THEN
 5204|       |    that is passed back with the end of the branch. If (*THEN) is within the
 5205|       |    current branch, and the branch is one of two or more alternatives (it
 5206|       |    either starts or ends with OP_ALT), we have reached the limit of THEN's
 5207|       |    action, so convert the return code to NOMATCH, which will cause normal
 5208|       |    backtracking to happen from now on. Otherwise, THEN is passed back to an
 5209|       |    outer alternative. This implements Perl's treatment of parenthesized
 5210|       |    groups, where a group not containing | does not affect the current
 5211|       |    alternative, that is, (X) is NOT the same as (X|(*F)). */
 5212|       |
 5213|       |
 5214|       |    /* ===================================================================== */
 5215|       |    /* BRAZERO, BRAMINZERO and SKIPZERO occur just before a non-possessive
 5216|       |    bracket group, indicating that it may occur zero times. It may repeat
 5217|       |    infinitely, or not at all - i.e. it could be ()* or ()? or even (){0} in
 5218|       |    the pattern. Brackets with fixed upper repeat limits are compiled as a
 5219|       |    number of copies, with the optional ones preceded by BRAZERO or BRAMINZERO.
 5220|       |    Possessive groups with possible zero repeats are preceded by BRAPOSZERO. */
 5221|       |
 5222|      0|#define Lnext_ecode F->temp_sptr[0]
 5223|       |
 5224|     46|    case OP_BRAZERO:
  ------------------
  |  Branch (5224:5): [True: 46, False: 28.4M]
  ------------------
 5225|     46|    Lnext_ecode = Fecode + 1;
  ------------------
  |  | 5222|     46|#define Lnext_ecode F->temp_sptr[0]
  ------------------
                  Lnext_ecode = Fecode + 1;
  ------------------
  |  |  181|     46|#define Fecode             F->ecode
  ------------------
 5226|     46|    RMATCH(Lnext_ecode, RM9);
  ------------------
  |  |  551|     46|  {\
  |  |  552|     46|  start_ecode = ra;\
  |  |  553|     46|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|     46|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|     46|  goto MATCH_RECURSE;\
  |  |  555|     46|  L_##rb:;\
  |  |  556|     46|  }
  ------------------
 5227|     46|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|     46|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5227:9): [True: 0, False: 46]
  ------------------
 5228|     46|    do Lnext_ecode += GET(Lnext_ecode, 1); while (*Lnext_ecode == OP_ALT);
  ------------------
  |  | 5222|     46|#define Lnext_ecode F->temp_sptr[0]
  ------------------
                  do Lnext_ecode += GET(Lnext_ecode, 1); while (*Lnext_ecode == OP_ALT);
  ------------------
  |  |  109|     46|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  do Lnext_ecode += GET(Lnext_ecode, 1); while (*Lnext_ecode == OP_ALT);
  ------------------
  |  | 5222|     46|#define Lnext_ecode F->temp_sptr[0]
  ------------------
  |  Branch (5228:51): [True: 0, False: 46]
  ------------------
 5229|     46|    Fecode = Lnext_ecode + 1 + LINK_SIZE;
  ------------------
  |  |  181|     46|#define Fecode             F->ecode
  ------------------
                  Fecode = Lnext_ecode + 1 + LINK_SIZE;
  ------------------
  |  | 5222|     46|#define Lnext_ecode F->temp_sptr[0]
  ------------------
                  Fecode = Lnext_ecode + 1 + LINK_SIZE;
  ------------------
  |  |   98|     46|#define LINK_SIZE 2
  ------------------
 5230|     46|    break;
 5231|       |
 5232|      0|    case OP_BRAMINZERO:
  ------------------
  |  Branch (5232:5): [True: 0, False: 28.4M]
  ------------------
 5233|      0|    Lnext_ecode = Fecode + 1;
  ------------------
  |  | 5222|      0|#define Lnext_ecode F->temp_sptr[0]
  ------------------
                  Lnext_ecode = Fecode + 1;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5234|      0|    do Lnext_ecode += GET(Lnext_ecode, 1); while (*Lnext_ecode == OP_ALT);
  ------------------
  |  | 5222|      0|#define Lnext_ecode F->temp_sptr[0]
  ------------------
                  do Lnext_ecode += GET(Lnext_ecode, 1); while (*Lnext_ecode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  do Lnext_ecode += GET(Lnext_ecode, 1); while (*Lnext_ecode == OP_ALT);
  ------------------
  |  | 5222|      0|#define Lnext_ecode F->temp_sptr[0]
  ------------------
  |  Branch (5234:51): [True: 0, False: 0]
  ------------------
 5235|      0|    RMATCH(Lnext_ecode + 1 + LINK_SIZE, RM10);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5236|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5236:9): [True: 0, False: 0]
  ------------------
 5237|      0|    Fecode++;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5238|      0|    break;
 5239|       |
 5240|      0|#undef Lnext_ecode
 5241|       |
 5242|      0|    case OP_SKIPZERO:
  ------------------
  |  Branch (5242:5): [True: 0, False: 28.4M]
  ------------------
 5243|      0|    Fecode++;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5244|      0|    do Fecode += GET(Fecode,1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  do Fecode += GET(Fecode,1); while (*Fecode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  do Fecode += GET(Fecode,1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5244:40): [True: 0, False: 0]
  ------------------
 5245|      0|    Fecode += 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5246|      0|    break;
 5247|       |
 5248|       |
 5249|       |    /* ===================================================================== */
 5250|       |    /* Handle possessive brackets with an unlimited repeat. The end of these
 5251|       |    brackets will always be OP_KETRPOS, which returns MATCH_KETRPOS without
 5252|       |    going further in the pattern. */
 5253|       |
 5254|      0|#define Lframe_type    F->temp_32[0]
 5255|      0|#define Lmatched_once  F->temp_32[1]
 5256|      0|#define Lzero_allowed  F->temp_32[2]
 5257|      0|#define Lstart_eptr    F->temp_sptr[0]
 5258|      0|#define Lstart_group   F->temp_sptr[1]
 5259|       |
 5260|      0|    case OP_BRAPOSZERO:
  ------------------
  |  Branch (5260:5): [True: 0, False: 28.4M]
  ------------------
 5261|      0|    Lzero_allowed = TRUE;                /* Zero repeat is allowed */
  ------------------
  |  | 5256|      0|#define Lzero_allowed  F->temp_32[2]
  ------------------
                  Lzero_allowed = TRUE;                /* Zero repeat is allowed */
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5262|      0|    Fecode += 1;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5263|      0|    if (*Fecode == OP_CBRAPOS || *Fecode == OP_SCBRAPOS)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  if (*Fecode == OP_CBRAPOS || *Fecode == OP_SCBRAPOS)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5263:9): [True: 0, False: 0]
  |  Branch (5263:34): [True: 0, False: 0]
  ------------------
 5264|      0|      goto POSSESSIVE_CAPTURE;
 5265|      0|    goto POSSESSIVE_NON_CAPTURE;
 5266|       |
 5267|      0|    case OP_BRAPOS:
  ------------------
  |  Branch (5267:5): [True: 0, False: 28.4M]
  ------------------
 5268|      0|    case OP_SBRAPOS:
  ------------------
  |  Branch (5268:5): [True: 0, False: 28.4M]
  ------------------
 5269|      0|    Lzero_allowed = FALSE;               /* Zero repeat not allowed */
  ------------------
  |  | 5256|      0|#define Lzero_allowed  F->temp_32[2]
  ------------------
                  Lzero_allowed = FALSE;               /* Zero repeat not allowed */
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 5270|       |
 5271|      0|    POSSESSIVE_NON_CAPTURE:
 5272|      0|    Lframe_type = GF_NOCAPTURE;          /* Remembered frame type */
  ------------------
  |  | 5254|      0|#define Lframe_type    F->temp_32[0]
  ------------------
                  Lframe_type = GF_NOCAPTURE;          /* Remembered frame type */
  ------------------
  |  |  112|      0|#define GF_NOCAPTURE   0x00020000u
  ------------------
 5273|      0|    goto POSSESSIVE_GROUP;
 5274|       |
 5275|      0|    case OP_CBRAPOS:
  ------------------
  |  Branch (5275:5): [True: 0, False: 28.4M]
  ------------------
 5276|      0|    case OP_SCBRAPOS:
  ------------------
  |  Branch (5276:5): [True: 0, False: 28.4M]
  ------------------
 5277|      0|    Lzero_allowed = FALSE;               /* Zero repeat not allowed */
  ------------------
  |  | 5256|      0|#define Lzero_allowed  F->temp_32[2]
  ------------------
                  Lzero_allowed = FALSE;               /* Zero repeat not allowed */
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 5278|       |
 5279|      0|    POSSESSIVE_CAPTURE:
 5280|      0|    number = GET2(Fecode, 1+LINK_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5281|      0|    Lframe_type = GF_CAPTURE | number;   /* Remembered frame type */
  ------------------
  |  | 5254|      0|#define Lframe_type    F->temp_32[0]
  ------------------
                  Lframe_type = GF_CAPTURE | number;   /* Remembered frame type */
  ------------------
  |  |  111|      0|#define GF_CAPTURE     0x00010000u
  ------------------
 5282|       |
 5283|      0|    POSSESSIVE_GROUP:
 5284|      0|    Lmatched_once = FALSE;               /* Never matched */
  ------------------
  |  | 5255|      0|#define Lmatched_once  F->temp_32[1]
  ------------------
                  Lmatched_once = FALSE;               /* Never matched */
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 5285|      0|    Lstart_group = Fecode;               /* Start of this group */
  ------------------
  |  | 5258|      0|#define Lstart_group   F->temp_sptr[1]
  ------------------
                  Lstart_group = Fecode;               /* Start of this group */
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5286|       |
 5287|      0|    for (;;)
 5288|      0|      {
 5289|      0|      Lstart_eptr = Feptr;               /* Position at group start */
  ------------------
  |  | 5257|      0|#define Lstart_eptr    F->temp_sptr[0]
  ------------------
                    Lstart_eptr = Feptr;               /* Position at group start */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5290|      0|      group_frame_type = Lframe_type;
  ------------------
  |  | 5254|      0|#define Lframe_type    F->temp_32[0]
  ------------------
 5291|      0|      RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM8);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5292|      0|      if (rrc == MATCH_KETRPOS)
  ------------------
  |  |   94|      0|#define MATCH_KETRPOS      (-998)
  ------------------
  |  Branch (5292:11): [True: 0, False: 0]
  ------------------
 5293|      0|        {
 5294|      0|        Lmatched_once = TRUE;            /* Matched at least once */
  ------------------
  |  | 5255|      0|#define Lmatched_once  F->temp_32[1]
  ------------------
                      Lmatched_once = TRUE;            /* Matched at least once */
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5295|      0|        if (Feptr == Lstart_eptr)        /* Empty match; skip to end */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                      if (Feptr == Lstart_eptr)        /* Empty match; skip to end */
  ------------------
  |  | 5257|      0|#define Lstart_eptr    F->temp_sptr[0]
  ------------------
  |  Branch (5295:13): [True: 0, False: 0]
  ------------------
 5296|      0|          {
 5297|      0|          do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                        do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                        do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5297:47): [True: 0, False: 0]
  ------------------
 5298|      0|          break;
 5299|      0|          }
 5300|       |
 5301|      0|        Fecode = Lstart_group;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      Fecode = Lstart_group;
  ------------------
  |  | 5258|      0|#define Lstart_group   F->temp_sptr[1]
  ------------------
 5302|      0|        continue;
 5303|      0|        }
 5304|       |
 5305|       |      /* See comment above about handling THEN. */
 5306|       |
 5307|      0|      if (rrc == MATCH_THEN)
  ------------------
  |  |  101|      0|#define MATCH_THEN         (-993)
  ------------------
  |  Branch (5307:11): [True: 0, False: 0]
  ------------------
 5308|      0|        {
 5309|      0|        PCRE2_SPTR next_ecode = Fecode + GET(Fecode,1);
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PCRE2_SPTR next_ecode = Fecode + GET(Fecode,1);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      PCRE2_SPTR next_ecode = Fecode + GET(Fecode,1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5310|      0|        if (mb->verb_ecode_ptr < next_ecode &&
  ------------------
  |  Branch (5310:13): [True: 0, False: 0]
  ------------------
 5311|      0|            (*Fecode == OP_ALT || *next_ecode == OP_ALT))
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5311:14): [True: 0, False: 0]
  |  Branch (5311:35): [True: 0, False: 0]
  ------------------
 5312|      0|          rrc = MATCH_NOMATCH;
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
 5313|      0|        }
 5314|       |
 5315|      0|      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5315:11): [True: 0, False: 0]
  ------------------
 5316|      0|      Fecode += GET(Fecode, 1);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += GET(Fecode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5317|      0|      if (*Fecode != OP_ALT) break;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5317:11): [True: 0, False: 0]
  ------------------
 5318|      0|      }
 5319|       |
 5320|       |    /* Success if matched something or zero repeat allowed */
 5321|       |
 5322|      0|    if (Lmatched_once || Lzero_allowed)
  ------------------
  |  | 5255|      0|#define Lmatched_once  F->temp_32[1]
  |  |  ------------------
  |  |  |  Branch (5255:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                  if (Lmatched_once || Lzero_allowed)
  ------------------
  |  | 5256|      0|#define Lzero_allowed  F->temp_32[2]
  |  |  ------------------
  |  |  |  Branch (5256:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5323|      0|      {
 5324|      0|      Fecode += 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5325|      0|      break;
 5326|      0|      }
 5327|       |
 5328|      0|    RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5329|       |
 5330|      0|#undef Lmatched_once
 5331|      0|#undef Lzero_allowed
 5332|      0|#undef Lframe_type
 5333|      0|#undef Lstart_eptr
 5334|      0|#undef Lstart_group
 5335|       |
 5336|       |
 5337|       |    /* ===================================================================== */
 5338|       |    /* Handle non-capturing brackets that cannot match an empty string. When we
 5339|       |    get to the final alternative within the brackets, as long as there are no
 5340|       |    THEN's in the pattern, we can optimize by not recording a new backtracking
 5341|       |    point. (Ideally we should test for a THEN within this group, but we don't
 5342|       |    have that information.) Don't do this if we are at the very top level,
 5343|       |    however, because that would make handling assertions and once-only brackets
 5344|       |    messier when there is nothing to go back to. */
 5345|       |
 5346|      0|#define Lframe_type F->temp_32[0]     /* Set for all that use GROUPLOOP */
 5347|      0|#define Lnext_branch F->temp_sptr[0]  /* Used only in OP_BRA handling */
 5348|       |
 5349|  6.47k|    case OP_BRA:
  ------------------
  |  Branch (5349:5): [True: 6.47k, False: 28.4M]
  ------------------
 5350|  6.47k|    if (mb->hasthen || Frdepth == 0)
  ------------------
  |  |  187|  6.47k|#define Frdepth            F->rdepth
  ------------------
  |  Branch (5350:9): [True: 0, False: 6.47k]
  |  Branch (5350:24): [True: 6.47k, False: 2]
  ------------------
 5351|  6.47k|      {
 5352|  6.47k|      Lframe_type = 0;
  ------------------
  |  | 5346|  6.47k|#define Lframe_type F->temp_32[0]     /* Set for all that use GROUPLOOP */
  ------------------
 5353|  6.47k|      goto GROUPLOOP;
 5354|  6.47k|      }
 5355|       |
 5356|      2|    for (;;)
 5357|      4|      {
 5358|      4|      Lnext_branch = Fecode + GET(Fecode, 1);
  ------------------
  |  | 5347|      4|#define Lnext_branch F->temp_sptr[0]  /* Used only in OP_BRA handling */
  ------------------
                    Lnext_branch = Fecode + GET(Fecode, 1);
  ------------------
  |  |  181|      4|#define Fecode             F->ecode
  ------------------
                    Lnext_branch = Fecode + GET(Fecode, 1);
  ------------------
  |  |  109|      4|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5359|      4|      if (*Lnext_branch != OP_ALT) break;
  ------------------
  |  | 5347|      4|#define Lnext_branch F->temp_sptr[0]  /* Used only in OP_BRA handling */
  ------------------
  |  Branch (5359:11): [True: 2, False: 2]
  ------------------
 5360|       |
 5361|       |      /* This is never the final branch. We do not need to test for MATCH_THEN
 5362|       |      here because this code is not used when there is a THEN in the pattern. */
 5363|       |
 5364|      2|      RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM1);
  ------------------
  |  |  551|      2|  {\
  |  |  552|      2|  start_ecode = ra;\
  |  |  553|      2|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      2|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      2|  goto MATCH_RECURSE;\
  |  |  555|      2|  L_##rb:;\
  |  |  556|      2|  }
  ------------------
 5365|      2|      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      2|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5365:11): [True: 0, False: 2]
  ------------------
 5366|      2|      Fecode = Lnext_branch;
  ------------------
  |  |  181|      2|#define Fecode             F->ecode
  ------------------
                    Fecode = Lnext_branch;
  ------------------
  |  | 5347|      2|#define Lnext_branch F->temp_sptr[0]  /* Used only in OP_BRA handling */
  ------------------
 5367|      2|      }
 5368|       |
 5369|       |    /* Hit the start of the final branch. Continue at this level. */
 5370|       |
 5371|      2|    Fecode += PRIV(OP_lengths)[*Fecode];
  ------------------
  |  |  181|      2|#define Fecode             F->ecode
  ------------------
                  Fecode += PRIV(OP_lengths)[*Fecode];
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      2|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  Fecode += PRIV(OP_lengths)[*Fecode];
  ------------------
  |  |  181|      2|#define Fecode             F->ecode
  ------------------
 5372|      2|    break;
 5373|       |
 5374|      0|#undef Lnext_branch
 5375|       |
 5376|       |
 5377|       |    /* ===================================================================== */
 5378|       |    /* Handle a capturing bracket, other than those that are possessive with an
 5379|       |    unlimited repeat. */
 5380|       |
 5381|     78|    case OP_CBRA:
  ------------------
  |  Branch (5381:5): [True: 78, False: 28.4M]
  ------------------
 5382|     78|    case OP_SCBRA:
  ------------------
  |  Branch (5382:5): [True: 0, False: 28.4M]
  ------------------
 5383|     78|    Lframe_type = GF_CAPTURE | GET2(Fecode, 1+LINK_SIZE);
  ------------------
  |  | 5346|     78|#define Lframe_type F->temp_32[0]     /* Set for all that use GROUPLOOP */
  ------------------
                  Lframe_type = GF_CAPTURE | GET2(Fecode, 1+LINK_SIZE);
  ------------------
  |  |  111|     78|#define GF_CAPTURE     0x00010000u
  ------------------
                  Lframe_type = GF_CAPTURE | GET2(Fecode, 1+LINK_SIZE);
  ------------------
  |  |  194|     78|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5384|     78|    goto GROUPLOOP;
 5385|       |
 5386|       |
 5387|       |    /* ===================================================================== */
 5388|       |    /* Atomic groups and non-capturing brackets that can match an empty string
 5389|       |    must record a backtracking point and also set up a chained frame. */
 5390|       |
 5391|      0|    case OP_ONCE:
  ------------------
  |  Branch (5391:5): [True: 0, False: 28.4M]
  ------------------
 5392|      0|    case OP_SCRIPT_RUN:
  ------------------
  |  Branch (5392:5): [True: 0, False: 28.4M]
  ------------------
 5393|      0|    case OP_SBRA:
  ------------------
  |  Branch (5393:5): [True: 0, False: 28.4M]
  ------------------
 5394|      0|    Lframe_type = GF_NOCAPTURE | Fop;
  ------------------
  |  | 5346|      0|#define Lframe_type F->temp_32[0]     /* Set for all that use GROUPLOOP */
  ------------------
                  Lframe_type = GF_NOCAPTURE | Fop;
  ------------------
  |  |  112|      0|#define GF_NOCAPTURE   0x00020000u
  ------------------
                  Lframe_type = GF_NOCAPTURE | Fop;
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
 5395|       |
 5396|  6.55k|    GROUPLOOP:
 5397|  6.55k|    for (;;)
 5398|  12.8k|      {
 5399|  12.8k|      group_frame_type = Lframe_type;
  ------------------
  |  | 5346|  12.8k|#define Lframe_type F->temp_32[0]     /* Set for all that use GROUPLOOP */
  ------------------
 5400|  12.8k|      RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM2);
  ------------------
  |  |  551|  12.8k|  {\
  |  |  552|  12.8k|  start_ecode = ra;\
  |  |  553|  12.8k|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|  12.8k|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|  12.8k|  goto MATCH_RECURSE;\
  |  |  555|  12.8k|  L_##rb:;\
  |  |  556|  12.7k|  }
  ------------------
 5401|  12.7k|      if (rrc == MATCH_THEN)
  ------------------
  |  |  101|  12.7k|#define MATCH_THEN         (-993)
  ------------------
  |  Branch (5401:11): [True: 0, False: 12.7k]
  ------------------
 5402|      0|        {
 5403|      0|        PCRE2_SPTR next_ecode = Fecode + GET(Fecode,1);
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PCRE2_SPTR next_ecode = Fecode + GET(Fecode,1);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      PCRE2_SPTR next_ecode = Fecode + GET(Fecode,1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5404|      0|        if (mb->verb_ecode_ptr < next_ecode &&
  ------------------
  |  Branch (5404:13): [True: 0, False: 0]
  ------------------
 5405|      0|            (*Fecode == OP_ALT || *next_ecode == OP_ALT))
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5405:14): [True: 0, False: 0]
  |  Branch (5405:35): [True: 0, False: 0]
  ------------------
 5406|      0|          rrc = MATCH_NOMATCH;
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
 5407|      0|        }
 5408|  12.7k|      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|  12.7k|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5408:11): [True: 0, False: 12.7k]
  ------------------
 5409|  12.7k|      Fecode += GET(Fecode, 1);
  ------------------
  |  |  181|  12.7k|#define Fecode             F->ecode
  ------------------
                    Fecode += GET(Fecode, 1);
  ------------------
  |  |  109|  12.7k|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5410|  12.7k|      if (*Fecode != OP_ALT) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  181|  12.7k|#define Fecode             F->ecode
  ------------------
                    if (*Fecode != OP_ALT) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  6.39k|  {\
  |  |  560|  6.39k|  rrc = ra;\
  |  |  561|  6.39k|  goto RETURN_SWITCH;\
  |  |  562|  6.39k|  }
  ------------------
  |  Branch (5410:11): [True: 6.39k, False: 6.34k]
  ------------------
 5411|  6.34k|      }
 5412|       |    /* Control never reaches here. */
 5413|       |
 5414|      0|#undef Lframe_type
 5415|       |
 5416|       |
 5417|       |    /* ===================================================================== */
 5418|       |    /* Pattern recursion either matches the current regex, or some
 5419|       |    subexpression. The offset data is the offset to the starting bracket from
 5420|       |    the start of the whole pattern. This is so that it works from duplicated
 5421|       |    subpatterns. For a whole-pattern recursion, we have to infer the number
 5422|       |    zero. */
 5423|       |
 5424|      0|#define Lframe_type F->temp_32[0]
 5425|      0|#define Lstart_branch F->temp_sptr[0]
 5426|       |
 5427|      0|    case OP_RECURSE:
  ------------------
  |  Branch (5427:5): [True: 0, False: 28.4M]
  ------------------
 5428|      0|    bracode = mb->start_code + GET(Fecode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5429|      0|    number = (bracode == mb->start_code)? 0 : GET2(bracode, 1 + LINK_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (5429:14): [True: 0, False: 0]
  ------------------
 5430|       |
 5431|       |    /* If we are already in a pattern recursion, check for repeating the same
 5432|       |    one without changing the subject pointer or the last referenced character
 5433|       |    in the subject. This should catch convoluted mutual recursions; some
 5434|       |    simple cases are caught at compile time. However, there are rare cases when
 5435|       |    this check needs to be turned off. In this case, actual recursion loops
 5436|       |    will be caught by the match or heap limits. */
 5437|       |
 5438|      0|    if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
                  if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |   69|      0|#define RECURSE_UNSET 0xffffffffu  /* Bigger than max group number */
  ------------------
  |  Branch (5438:9): [True: 0, False: 0]
  ------------------
 5439|      0|      {
 5440|      0|      offset = Flast_group_offset;
  ------------------
  |  |  184|      0|#define Flast_group_offset F->last_group_offset
  ------------------
 5441|      0|      while (offset != PCRE2_UNSET)
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (5441:14): [True: 0, False: 0]
  ------------------
 5442|      0|        {
 5443|      0|        N = (heapframe *)((char *)match_data->heapframes + offset);
 5444|      0|        P = (heapframe *)((char *)N - frame_size);
 5445|      0|        if (N->group_frame_type == (GF_RECURSE | number))
  ------------------
  |  |  114|      0|#define GF_RECURSE     0x00040000u
  ------------------
  |  Branch (5445:13): [True: 0, False: 0]
  ------------------
 5446|      0|          {
 5447|      0|          if (Feptr == P->eptr && mb->last_used_ptr == P->recurse_last_used &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5447:15): [True: 0, False: 0]
  |  Branch (5447:35): [True: 0, False: 0]
  ------------------
 5448|      0|               (mb->moptions & PCRE2_DISABLE_RECURSELOOP_CHECK) == 0)
  ------------------
  |  |  194|      0|#define PCRE2_DISABLE_RECURSELOOP_CHECK   0x00040000u  /* not for pcre2_dfa_match() or pcre2_jit_match() */
  ------------------
  |  Branch (5448:16): [True: 0, False: 0]
  ------------------
 5449|      0|            return PCRE2_ERROR_RECURSELOOP;
  ------------------
  |  |  393|      0|#define PCRE2_ERROR_RECURSELOOP       (-52)
  ------------------
 5450|      0|          break;
 5451|      0|          }
 5452|      0|        offset = P->last_group_offset;
 5453|      0|        }
 5454|      0|      }
 5455|       |
 5456|       |    /* Remember the current last referenced character and then run the
 5457|       |    recursion branch by branch. */
 5458|       |
 5459|      0|    F->recurse_last_used = mb->last_used_ptr;
 5460|      0|    Lstart_branch = bracode;
  ------------------
  |  | 5425|      0|#define Lstart_branch F->temp_sptr[0]
  ------------------
 5461|      0|    Lframe_type = GF_RECURSE | number;
  ------------------
  |  | 5424|      0|#define Lframe_type F->temp_32[0]
  ------------------
                  Lframe_type = GF_RECURSE | number;
  ------------------
  |  |  114|      0|#define GF_RECURSE     0x00040000u
  ------------------
 5462|       |
 5463|      0|    for (;;)
 5464|      0|      {
 5465|      0|      PCRE2_SPTR next_ecode;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5466|       |
 5467|      0|      group_frame_type = Lframe_type;
  ------------------
  |  | 5424|      0|#define Lframe_type F->temp_32[0]
  ------------------
 5468|      0|      RMATCH(Lstart_branch + PRIV(OP_lengths)[*Lstart_branch], RM11);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5469|      0|      next_ecode = Lstart_branch + GET(Lstart_branch,1);
  ------------------
  |  | 5425|      0|#define Lstart_branch F->temp_sptr[0]
  ------------------
                    next_ecode = Lstart_branch + GET(Lstart_branch,1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5470|       |
 5471|       |      /* Handle backtracking verbs, which are defined in a range that can
 5472|       |      easily be tested for. PCRE does not allow THEN, SKIP, PRUNE or COMMIT to
 5473|       |      escape beyond a recursion; they cause a NOMATCH for the entire recursion.
 5474|       |
 5475|       |      When one of these verbs triggers, the current recursion group number is
 5476|       |      recorded. If it matches the recursion we are processing, the verb
 5477|       |      happened within the recursion and we must deal with it. Otherwise it must
 5478|       |      have happened after the recursion completed, and so has to be passed
 5479|       |      back. See comment above about handling THEN. */
 5480|       |
 5481|      0|      if (rrc >= MATCH_BACKTRACK_MIN && rrc <= MATCH_BACKTRACK_MAX &&
  ------------------
  |  |  103|      0|#define MATCH_BACKTRACK_MIN MATCH_COMMIT
  |  |  ------------------
  |  |  |  |   97|      0|#define MATCH_COMMIT       (-997)
  |  |  ------------------
  ------------------
                    if (rrc >= MATCH_BACKTRACK_MIN && rrc <= MATCH_BACKTRACK_MAX &&
  ------------------
  |  |  102|      0|#define MATCH_BACKTRACK_MAX MATCH_THEN
  |  |  ------------------
  |  |  |  |  101|      0|#define MATCH_THEN         (-993)
  |  |  ------------------
  ------------------
  |  Branch (5481:11): [True: 0, False: 0]
  |  Branch (5481:41): [True: 0, False: 0]
  ------------------
 5482|      0|          mb->verb_current_recurse == (Lframe_type ^ GF_RECURSE))
  ------------------
  |  | 5424|      0|#define Lframe_type F->temp_32[0]
  ------------------
                        mb->verb_current_recurse == (Lframe_type ^ GF_RECURSE))
  ------------------
  |  |  114|      0|#define GF_RECURSE     0x00040000u
  ------------------
  |  Branch (5482:11): [True: 0, False: 0]
  ------------------
 5483|      0|        {
 5484|      0|        if (rrc == MATCH_THEN && mb->verb_ecode_ptr < next_ecode &&
  ------------------
  |  |  101|      0|#define MATCH_THEN         (-993)
  ------------------
  |  Branch (5484:13): [True: 0, False: 0]
  |  Branch (5484:34): [True: 0, False: 0]
  ------------------
 5485|      0|            (*Lstart_branch == OP_ALT || *next_ecode == OP_ALT))
  ------------------
  |  | 5425|      0|#define Lstart_branch F->temp_sptr[0]
  ------------------
  |  Branch (5485:14): [True: 0, False: 0]
  |  Branch (5485:42): [True: 0, False: 0]
  ------------------
 5486|      0|          rrc = MATCH_NOMATCH;
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
 5487|      0|        else RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5488|      0|        }
 5489|       |
 5490|       |      /* Note that carrying on after (*ACCEPT) in a recursion is handled in the
 5491|       |      OP_ACCEPT code. Nothing needs to be done here. */
 5492|       |
 5493|      0|      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5493:11): [True: 0, False: 0]
  ------------------
 5494|      0|      Lstart_branch = next_ecode;
  ------------------
  |  | 5425|      0|#define Lstart_branch F->temp_sptr[0]
  ------------------
 5495|      0|      if (*Lstart_branch != OP_ALT) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 5425|      0|#define Lstart_branch F->temp_sptr[0]
  ------------------
                    if (*Lstart_branch != OP_ALT) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5495:11): [True: 0, False: 0]
  ------------------
 5496|      0|      }
 5497|       |    /* Control never reaches here. */
 5498|       |
 5499|      0|#undef Lframe_type
 5500|      0|#undef Lstart_branch
 5501|       |
 5502|       |
 5503|       |    /* ===================================================================== */
 5504|       |    /* Positive assertions are like other groups except that PCRE doesn't allow
 5505|       |    the effect of (*THEN) to escape beyond an assertion; it is therefore
 5506|       |    treated as NOMATCH. (*ACCEPT) is treated as successful assertion, with its
 5507|       |    captures and mark retained. Any other return is an error. */
 5508|       |
 5509|      0|#define Lframe_type  F->temp_32[0]
 5510|       |
 5511|      0|    case OP_ASSERT:
  ------------------
  |  Branch (5511:5): [True: 0, False: 28.4M]
  ------------------
 5512|      0|    case OP_ASSERTBACK:
  ------------------
  |  Branch (5512:5): [True: 0, False: 28.4M]
  ------------------
 5513|      0|    case OP_ASSERT_NA:
  ------------------
  |  Branch (5513:5): [True: 0, False: 28.4M]
  ------------------
 5514|      0|    case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (5514:5): [True: 0, False: 28.4M]
  ------------------
 5515|      0|    Lframe_type = GF_NOCAPTURE | Fop;
  ------------------
  |  | 5509|      0|#define Lframe_type  F->temp_32[0]
  ------------------
                  Lframe_type = GF_NOCAPTURE | Fop;
  ------------------
  |  |  112|      0|#define GF_NOCAPTURE   0x00020000u
  ------------------
                  Lframe_type = GF_NOCAPTURE | Fop;
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
 5516|      0|    for (;;)
 5517|      0|      {
 5518|      0|      group_frame_type = Lframe_type;
  ------------------
  |  | 5509|      0|#define Lframe_type  F->temp_32[0]
  ------------------
 5519|      0|      RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM3);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5520|      0|      if (rrc == MATCH_ACCEPT)
  ------------------
  |  |   93|      0|#define MATCH_ACCEPT       (-999)
  ------------------
  |  Branch (5520:11): [True: 0, False: 0]
  ------------------
 5521|      0|        {
 5522|      0|        memcpy(Fovector,
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
 5523|      0|              (char *)assert_accept_frame + offsetof(heapframe, ovector),
 5524|      0|              assert_accept_frame->offset_top * sizeof(PCRE2_SIZE));
 5525|      0|        Foffset_top = assert_accept_frame->offset_top;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 5526|      0|        Fmark = assert_accept_frame->mark;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
 5527|      0|        break;
 5528|      0|        }
 5529|      0|      if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
  ------------------
  |  |  101|      0|#define MATCH_THEN         (-993)
  ------------------
                    if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5529:11): [True: 0, False: 0]
  |  Branch (5529:35): [True: 0, False: 0]
  ------------------
 5530|      0|      Fecode += GET(Fecode, 1);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += GET(Fecode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5531|      0|      if (*Fecode != OP_ALT) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    if (*Fecode != OP_ALT) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5531:11): [True: 0, False: 0]
  ------------------
 5532|      0|      }
 5533|       |
 5534|      0|    do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5534:41): [True: 0, False: 0]
  ------------------
 5535|      0|    Fecode += 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5536|      0|    break;
 5537|       |
 5538|      0|#undef Lframe_type
 5539|       |
 5540|       |
 5541|       |    /* ===================================================================== */
 5542|       |    /* Handle negative assertions. Loop for each non-matching branch as for
 5543|       |    positive assertions. */
 5544|       |
 5545|      0|#define Lframe_type  F->temp_32[0]
 5546|       |
 5547|      0|    case OP_ASSERT_NOT:
  ------------------
  |  Branch (5547:5): [True: 0, False: 28.4M]
  ------------------
 5548|      0|    case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (5548:5): [True: 0, False: 28.4M]
  ------------------
 5549|      0|    Lframe_type  = GF_NOCAPTURE | Fop;
  ------------------
  |  | 5545|      0|#define Lframe_type  F->temp_32[0]
  ------------------
                  Lframe_type  = GF_NOCAPTURE | Fop;
  ------------------
  |  |  112|      0|#define GF_NOCAPTURE   0x00020000u
  ------------------
                  Lframe_type  = GF_NOCAPTURE | Fop;
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
 5550|       |
 5551|      0|    for (;;)
 5552|      0|      {
 5553|      0|      group_frame_type = Lframe_type;
  ------------------
  |  | 5545|      0|#define Lframe_type  F->temp_32[0]
  ------------------
 5554|      0|      RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM4);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5555|      0|      switch(rrc)
 5556|      0|        {
 5557|      0|        case MATCH_ACCEPT:   /* Assertion matched, therefore it fails. */
  ------------------
  |  |   93|      0|#define MATCH_ACCEPT       (-999)
  ------------------
  |  Branch (5557:9): [True: 0, False: 0]
  ------------------
 5558|      0|        case MATCH_MATCH:
  ------------------
  |  |   87|      0|#define MATCH_MATCH        1
  ------------------
  |  Branch (5558:9): [True: 0, False: 0]
  ------------------
 5559|      0|        RRETURN (MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5560|       |
 5561|      0|        case MATCH_NOMATCH:  /* Branch failed, try next if present. */
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
  |  Branch (5561:9): [True: 0, False: 0]
  ------------------
 5562|      0|        case MATCH_THEN:
  ------------------
  |  |  101|      0|#define MATCH_THEN         (-993)
  ------------------
  |  Branch (5562:9): [True: 0, False: 0]
  ------------------
 5563|      0|        Fecode += GET(Fecode, 1);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      Fecode += GET(Fecode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5564|      0|        if (*Fecode != OP_ALT) goto ASSERT_NOT_FAILED;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5564:13): [True: 0, False: 0]
  ------------------
 5565|      0|        break;
 5566|       |
 5567|      0|        case MATCH_COMMIT:   /* Assertion forced to fail, therefore continue. */
  ------------------
  |  |   97|      0|#define MATCH_COMMIT       (-997)
  ------------------
  |  Branch (5567:9): [True: 0, False: 0]
  ------------------
 5568|      0|        case MATCH_SKIP:
  ------------------
  |  |   99|      0|#define MATCH_SKIP         (-995)
  ------------------
  |  Branch (5568:9): [True: 0, False: 0]
  ------------------
 5569|      0|        case MATCH_PRUNE:
  ------------------
  |  |   98|      0|#define MATCH_PRUNE        (-996)
  ------------------
  |  Branch (5569:9): [True: 0, False: 0]
  ------------------
 5570|      0|        do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                      do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5570:45): [True: 0, False: 0]
  ------------------
 5571|      0|        goto ASSERT_NOT_FAILED;
 5572|       |
 5573|      0|        default:             /* Pass back any other return */
  ------------------
  |  Branch (5573:9): [True: 0, False: 0]
  ------------------
 5574|      0|        RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5575|      0|        }
 5576|      0|      }
 5577|       |
 5578|       |    /* None of the branches have matched or there was a backtrack to (*COMMIT),
 5579|       |    (*SKIP), (*PRUNE), or (*THEN) in the last branch. This is success for a
 5580|       |    negative assertion, so carry on. */
 5581|       |
 5582|      0|    ASSERT_NOT_FAILED:
 5583|      0|    Fecode += 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5584|      0|    break;
 5585|       |
 5586|      0|#undef Lframe_type
 5587|       |
 5588|       |
 5589|       |    /* ===================================================================== */
 5590|       |    /* The callout item calls an external function, if one is provided, passing
 5591|       |    details of the match so far. This is mainly for debugging, though the
 5592|       |    function is able to force a failure. */
 5593|       |
 5594|      0|    case OP_CALLOUT:
  ------------------
  |  Branch (5594:5): [True: 0, False: 28.4M]
  ------------------
 5595|      0|    case OP_CALLOUT_STR:
  ------------------
  |  Branch (5595:5): [True: 0, False: 28.4M]
  ------------------
 5596|      0|    rrc = do_callout(F, mb, &length);
 5597|      0|    if (rrc > 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5597:9): [True: 0, False: 0]
  ------------------
 5598|      0|    if (rrc < 0) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5598:9): [True: 0, False: 0]
  ------------------
 5599|      0|    Fecode += length;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5600|      0|    break;
 5601|       |
 5602|       |
 5603|       |    /* ===================================================================== */
 5604|       |    /* Conditional group: compilation checked that there are no more than two
 5605|       |    branches. If the condition is false, skipping the first branch takes us
 5606|       |    past the end of the item if there is only one branch, but that's exactly
 5607|       |    what we want. */
 5608|       |
 5609|      0|    case OP_COND:
  ------------------
  |  Branch (5609:5): [True: 0, False: 28.4M]
  ------------------
 5610|      0|    case OP_SCOND:
  ------------------
  |  Branch (5610:5): [True: 0, False: 28.4M]
  ------------------
 5611|       |
 5612|       |    /* The variable Flength will be added to Fecode when the condition is
 5613|       |    false, to get to the second branch. Setting it to the offset to the ALT or
 5614|       |    KET, then incrementing Fecode achieves this effect. However, if the second
 5615|       |    branch is non-existent, we must point to the KET so that the end of the
 5616|       |    group is correctly processed. We now have Fecode pointing to the condition
 5617|       |    or callout. */
 5618|       |
 5619|      0|    Flength = GET(Fecode, 1);    /* Offset to the second branch */
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
                  Flength = GET(Fecode, 1);    /* Offset to the second branch */
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5620|      0|    if (Fecode[Flength] != OP_ALT) Flength -= 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  if (Fecode[Flength] != OP_ALT) Flength -= 1 + LINK_SIZE;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
                  if (Fecode[Flength] != OP_ALT) Flength -= 1 + LINK_SIZE;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
                  if (Fecode[Flength] != OP_ALT) Flength -= 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (5620:9): [True: 0, False: 0]
  ------------------
 5621|      0|    Fecode += 1 + LINK_SIZE;     /* From this opcode */
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + LINK_SIZE;     /* From this opcode */
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5622|       |
 5623|       |    /* Because of the way auto-callout works during compile, a callout item is
 5624|       |    inserted between OP_COND and an assertion condition. Such a callout can
 5625|       |    also be inserted manually. */
 5626|       |
 5627|      0|    if (*Fecode == OP_CALLOUT || *Fecode == OP_CALLOUT_STR)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  if (*Fecode == OP_CALLOUT || *Fecode == OP_CALLOUT_STR)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5627:9): [True: 0, False: 0]
  |  Branch (5627:34): [True: 0, False: 0]
  ------------------
 5628|      0|      {
 5629|      0|      rrc = do_callout(F, mb, &length);
 5630|      0|      if (rrc > 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5630:11): [True: 0, False: 0]
  ------------------
 5631|      0|      if (rrc < 0) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5631:11): [True: 0, False: 0]
  ------------------
 5632|       |
 5633|       |      /* Advance Fecode past the callout, so it now points to the condition. We
 5634|       |      must adjust Flength so that the value of Fecode+Flength is unchanged. */
 5635|       |
 5636|      0|      Fecode += length;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5637|      0|      Flength -= length;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
 5638|      0|      }
 5639|       |
 5640|       |    /* Test the various possible conditions */
 5641|       |
 5642|      0|    condition = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 5643|      0|    switch(*Fecode)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5644|      0|      {
 5645|      0|      case OP_RREF:                  /* Group recursion test */
  ------------------
  |  Branch (5645:7): [True: 0, False: 0]
  ------------------
 5646|      0|      if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
                    if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |   69|      0|#define RECURSE_UNSET 0xffffffffu  /* Bigger than max group number */
  ------------------
  |  Branch (5646:11): [True: 0, False: 0]
  ------------------
 5647|      0|        {
 5648|      0|        number = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5649|      0|        condition = (number == RREF_ANY || number == Fcurrent_recurse);
  ------------------
  |  | 1816|      0|#define RREF_ANY  0xffff
  ------------------
                      condition = (number == RREF_ANY || number == Fcurrent_recurse);
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
  |  Branch (5649:22): [True: 0, False: 0]
  |  Branch (5649:44): [True: 0, False: 0]
  ------------------
 5650|      0|        }
 5651|      0|      break;
 5652|       |
 5653|      0|      case OP_DNRREF:       /* Duplicate named group recursion test */
  ------------------
  |  Branch (5653:7): [True: 0, False: 0]
  ------------------
 5654|      0|      if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
                    if (Fcurrent_recurse != RECURSE_UNSET)
  ------------------
  |  |   69|      0|#define RECURSE_UNSET 0xffffffffu  /* Bigger than max group number */
  ------------------
  |  Branch (5654:11): [True: 0, False: 0]
  ------------------
 5655|      0|        {
 5656|      0|        int count = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5657|      0|        PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5658|      0|        while (count-- > 0)
  ------------------
  |  Branch (5658:16): [True: 0, False: 0]
  ------------------
 5659|      0|          {
 5660|      0|          number = GET2(slot, 0);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5661|      0|          condition = number == Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 5662|      0|          if (condition) break;
  ------------------
  |  Branch (5662:15): [True: 0, False: 0]
  ------------------
 5663|      0|          slot += mb->name_entry_size;
 5664|      0|          }
 5665|      0|        }
 5666|      0|      break;
 5667|       |
 5668|      0|      case OP_CREF:                         /* Numbered group used test */
  ------------------
  |  Branch (5668:7): [True: 0, False: 0]
  ------------------
 5669|      0|      offset = (GET2(Fecode, 1) << 1) - 2;  /* Doubled ref number */
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5670|      0|      condition = offset < Foffset_top && Fovector[offset] != PCRE2_UNSET;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
                    condition = offset < Foffset_top && Fovector[offset] != PCRE2_UNSET;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                    condition = offset < Foffset_top && Fovector[offset] != PCRE2_UNSET;
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (5670:19): [True: 0, False: 0]
  |  Branch (5670:43): [True: 0, False: 0]
  ------------------
 5671|      0|      break;
 5672|       |
 5673|      0|      case OP_DNCREF:      /* Duplicate named group used test */
  ------------------
  |  Branch (5673:7): [True: 0, False: 0]
  ------------------
 5674|      0|        {
 5675|      0|        int count = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5676|      0|        PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size;
  ------------------
  |  |  820|      0|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5677|      0|        while (count-- > 0)
  ------------------
  |  Branch (5677:16): [True: 0, False: 0]
  ------------------
 5678|      0|          {
 5679|      0|          offset = (GET2(slot, 0) << 1) - 2;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5680|      0|          condition = offset < Foffset_top && Fovector[offset] != PCRE2_UNSET;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
                        condition = offset < Foffset_top && Fovector[offset] != PCRE2_UNSET;
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
                        condition = offset < Foffset_top && Fovector[offset] != PCRE2_UNSET;
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (5680:23): [True: 0, False: 0]
  |  Branch (5680:47): [True: 0, False: 0]
  ------------------
 5681|      0|          if (condition) break;
  ------------------
  |  Branch (5681:15): [True: 0, False: 0]
  ------------------
 5682|      0|          slot += mb->name_entry_size;
 5683|      0|          }
 5684|      0|        }
 5685|      0|      break;
 5686|       |
 5687|      0|      case OP_FALSE:
  ------------------
  |  Branch (5687:7): [True: 0, False: 0]
  ------------------
 5688|      0|      case OP_FAIL:   /* The assertion (?!) becomes OP_FAIL */
  ------------------
  |  Branch (5688:7): [True: 0, False: 0]
  ------------------
 5689|      0|      break;
 5690|       |
 5691|      0|      case OP_TRUE:
  ------------------
  |  Branch (5691:7): [True: 0, False: 0]
  ------------------
 5692|      0|      condition = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 5693|      0|      break;
 5694|       |
 5695|       |      /* The condition is an assertion. Run code similar to the assertion code
 5696|       |      above. */
 5697|       |
 5698|      0|#define Lpositive      F->temp_32[0]
 5699|      0|#define Lstart_branch  F->temp_sptr[0]
 5700|       |
 5701|      0|      default:
  ------------------
  |  Branch (5701:7): [True: 0, False: 0]
  ------------------
 5702|      0|      Lpositive = (*Fecode == OP_ASSERT || *Fecode == OP_ASSERTBACK);
  ------------------
  |  | 5698|      0|#define Lpositive      F->temp_32[0]
  ------------------
                    Lpositive = (*Fecode == OP_ASSERT || *Fecode == OP_ASSERTBACK);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Lpositive = (*Fecode == OP_ASSERT || *Fecode == OP_ASSERTBACK);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5702:20): [True: 0, False: 0]
  |  Branch (5702:44): [True: 0, False: 0]
  ------------------
 5703|      0|      Lstart_branch = Fecode;
  ------------------
  |  | 5699|      0|#define Lstart_branch  F->temp_sptr[0]
  ------------------
                    Lstart_branch = Fecode;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5704|       |
 5705|      0|      for (;;)
 5706|      0|        {
 5707|      0|        group_frame_type = GF_CONDASSERT | *Fecode;
  ------------------
  |  |  113|      0|#define GF_CONDASSERT  0x00030000u
  ------------------
                      group_frame_type = GF_CONDASSERT | *Fecode;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 5708|      0|        RMATCH(Lstart_branch + PRIV(OP_lengths)[*Lstart_branch], RM5);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5709|       |
 5710|      0|        switch(rrc)
 5711|      0|          {
 5712|      0|          case MATCH_ACCEPT:  /* Save captures */
  ------------------
  |  |   93|      0|#define MATCH_ACCEPT       (-999)
  ------------------
  |  Branch (5712:11): [True: 0, False: 0]
  ------------------
 5713|      0|          memcpy(Fovector,
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
 5714|      0|                (char *)assert_accept_frame + offsetof(heapframe, ovector),
 5715|      0|                assert_accept_frame->offset_top * sizeof(PCRE2_SIZE));
 5716|      0|          Foffset_top = assert_accept_frame->offset_top;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 5717|       |
 5718|       |          /* Fall through */
 5719|       |          /* In the case of a match, the captures have already been put into
 5720|       |          the current frame. */
 5721|       |
 5722|      0|          case MATCH_MATCH:
  ------------------
  |  |   87|      0|#define MATCH_MATCH        1
  ------------------
  |  Branch (5722:11): [True: 0, False: 0]
  ------------------
 5723|      0|          condition = Lpositive;   /* TRUE for positive assertion */
  ------------------
  |  | 5698|      0|#define Lpositive      F->temp_32[0]
  ------------------
 5724|      0|          break;
 5725|       |
 5726|       |          /* PCRE doesn't allow the effect of (*THEN) to escape beyond an
 5727|       |          assertion; it is therefore always treated as NOMATCH. */
 5728|       |
 5729|      0|          case MATCH_NOMATCH:
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
  |  Branch (5729:11): [True: 0, False: 0]
  ------------------
 5730|      0|          case MATCH_THEN:
  ------------------
  |  |  101|      0|#define MATCH_THEN         (-993)
  ------------------
  |  Branch (5730:11): [True: 0, False: 0]
  ------------------
 5731|      0|          Lstart_branch += GET(Lstart_branch, 1);
  ------------------
  |  | 5699|      0|#define Lstart_branch  F->temp_sptr[0]
  ------------------
                        Lstart_branch += GET(Lstart_branch, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5732|      0|          if (*Lstart_branch == OP_ALT) continue;  /* Try next branch */
  ------------------
  |  | 5699|      0|#define Lstart_branch  F->temp_sptr[0]
  ------------------
  |  Branch (5732:15): [True: 0, False: 0]
  ------------------
 5733|      0|          condition = !Lpositive;  /* TRUE for negative assertion */
  ------------------
  |  | 5698|      0|#define Lpositive      F->temp_32[0]
  ------------------
 5734|      0|          break;
 5735|       |
 5736|       |          /* These force no match without checking other branches. */
 5737|       |
 5738|      0|          case MATCH_COMMIT:
  ------------------
  |  |   97|      0|#define MATCH_COMMIT       (-997)
  ------------------
  |  Branch (5738:11): [True: 0, False: 0]
  ------------------
 5739|      0|          case MATCH_SKIP:
  ------------------
  |  |   99|      0|#define MATCH_SKIP         (-995)
  ------------------
  |  Branch (5739:11): [True: 0, False: 0]
  ------------------
 5740|      0|          case MATCH_PRUNE:
  ------------------
  |  |   98|      0|#define MATCH_PRUNE        (-996)
  ------------------
  |  Branch (5740:11): [True: 0, False: 0]
  ------------------
 5741|      0|          condition = !Lpositive;
  ------------------
  |  | 5698|      0|#define Lpositive      F->temp_32[0]
  ------------------
 5742|      0|          break;
 5743|       |
 5744|      0|          default:
  ------------------
  |  Branch (5744:11): [True: 0, False: 0]
  ------------------
 5745|      0|          RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5746|      0|          }
 5747|      0|        break;  /* Out of the branch loop */
 5748|      0|        }
 5749|       |
 5750|       |      /* If the condition is true, find the end of the assertion so that
 5751|       |      advancing past it gets us to the start of the first branch. */
 5752|       |
 5753|      0|      if (condition)
  ------------------
  |  Branch (5753:11): [True: 0, False: 0]
  ------------------
 5754|      0|        {
 5755|      0|        do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                      do Fecode += GET(Fecode, 1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (5755:45): [True: 0, False: 0]
  ------------------
 5756|      0|        }
 5757|      0|      break;  /* End of assertion condition */
 5758|      0|      }
 5759|       |
 5760|      0|#undef Lpositive
 5761|      0|#undef Lstart_branch
 5762|       |
 5763|       |    /* Choose branch according to the condition. */
 5764|       |
 5765|      0|    Fecode += condition? PRIV(OP_lengths)[*Fecode] : Flength;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += condition? PRIV(OP_lengths)[*Fecode] : Flength;
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  Fecode += condition? PRIV(OP_lengths)[*Fecode] : Flength;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += condition? PRIV(OP_lengths)[*Fecode] : Flength;
  ------------------
  |  |  185|      0|#define Flength            F->length
  ------------------
  |  Branch (5765:15): [True: 0, False: 0]
  ------------------
 5766|       |
 5767|       |    /* If the opcode is OP_SCOND it means we are at a repeated conditional
 5768|       |    group that might match an empty string. We must therefore descend a level
 5769|       |    so that the start is remembered for checking. For OP_COND we can just
 5770|       |    continue at this level. */
 5771|       |
 5772|      0|    if (Fop == OP_SCOND)
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
  |  Branch (5772:9): [True: 0, False: 0]
  ------------------
 5773|      0|      {
 5774|      0|      group_frame_type  = GF_NOCAPTURE | Fop;
  ------------------
  |  |  112|      0|#define GF_NOCAPTURE   0x00020000u
  ------------------
                    group_frame_type  = GF_NOCAPTURE | Fop;
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
 5775|      0|      RMATCH(Fecode, RM35);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5776|      0|      RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5777|      0|      }
 5778|      0|    break;
 5779|       |
 5780|       |
 5781|       |
 5782|       |/* ========================================================================= */
 5783|       |/*                  End of start of parenthesis opcodes                      */
 5784|       |/* ========================================================================= */
 5785|       |
 5786|       |
 5787|       |    /* ===================================================================== */
 5788|       |    /* Move the subject pointer back by one fixed amount. This occurs at the
 5789|       |    start of each branch that has a fixed length in a lookbehind assertion. If
 5790|       |    we are too close to the start to move back, fail. When working with UTF-8
 5791|       |    we move back a number of characters, not bytes. */
 5792|       |
 5793|      0|    case OP_REVERSE:
  ------------------
  |  Branch (5793:5): [True: 0, False: 28.4M]
  ------------------
 5794|      0|    number = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5795|      0|#ifdef SUPPORT_UNICODE
 5796|      0|    if (utf)
  ------------------
  |  Branch (5796:9): [True: 0, False: 0]
  ------------------
 5797|      0|      {
 5798|      0|      while (number-- > 0)
  ------------------
  |  Branch (5798:14): [True: 0, False: 0]
  ------------------
 5799|      0|        {
 5800|      0|        if (Feptr <= mb->check_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                      if (Feptr <= mb->check_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5800:13): [True: 0, False: 0]
  ------------------
 5801|      0|        Feptr--;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5802|      0|        BACKCHAR(Feptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5803|      0|        }
 5804|      0|      }
 5805|      0|    else
 5806|      0|#endif
 5807|       |
 5808|       |    /* No UTF support, or not in UTF mode: count is code unit count */
 5809|       |
 5810|      0|      {
 5811|      0|      if ((ptrdiff_t)number > Feptr - mb->start_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                    if ((ptrdiff_t)number > Feptr - mb->start_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5811:11): [True: 0, False: 0]
  ------------------
 5812|      0|      Feptr -= number;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5813|      0|      }
 5814|       |
 5815|       |    /* Save the earliest consulted character, then skip to next opcode */
 5816|       |
 5817|      0|    if (Feptr < mb->start_used_ptr) mb->start_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                  if (Feptr < mb->start_used_ptr) mb->start_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5817:9): [True: 0, False: 0]
  ------------------
 5818|      0|    Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 5819|      0|    break;
 5820|       |
 5821|       |
 5822|       |    /* ===================================================================== */
 5823|       |    /* Move the subject pointer back by a variable amount. This occurs at the
 5824|       |    start of each branch of a lookbehind assertion when the branch has a
 5825|       |    variable, but limited, length. A loop is needed to try matching the branch
 5826|       |    after moving back different numbers of characters. If we are too close to
 5827|       |    the start to move back even the minimum amount, fail. When working with
 5828|       |    UTF-8 we move back a number of characters, not bytes. */
 5829|       |
 5830|      0|#define Lmin F->temp_32[0]
 5831|      0|#define Lmax F->temp_32[1]
 5832|      0|#define Leptr F->temp_sptr[0]
 5833|       |
 5834|      0|    case OP_VREVERSE:
  ------------------
  |  Branch (5834:5): [True: 0, False: 28.4M]
  ------------------
 5835|      0|    Lmin = GET2(Fecode, 1);
  ------------------
  |  | 5830|      0|#define Lmin F->temp_32[0]
  ------------------
                  Lmin = GET2(Fecode, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5836|      0|    Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
                  Lmax = GET2(Fecode, 1 + IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5837|      0|    Leptr = Feptr;
  ------------------
  |  | 5832|      0|#define Leptr F->temp_sptr[0]
  ------------------
                  Leptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5838|       |
 5839|       |    /* Move back by the maximum branch length and then work forwards. This
 5840|       |    ensures that items such as \d{3,5} get the maximum length, which is
 5841|       |    relevant for captures, and makes for Perl compatibility. */
 5842|       |
 5843|      0|#ifdef SUPPORT_UNICODE
 5844|      0|    if (utf)
  ------------------
  |  Branch (5844:9): [True: 0, False: 0]
  ------------------
 5845|      0|      {
 5846|      0|      for (i = 0; i < Lmax; i++)
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
  |  Branch (5846:19): [True: 0, False: 0]
  ------------------
 5847|      0|        {
 5848|      0|        if (Feptr == mb->start_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5848:13): [True: 0, False: 0]
  ------------------
 5849|      0|          {
 5850|      0|          if (i < Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 5830|      0|#define Lmin F->temp_32[0]
  ------------------
                        if (i < Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5850:15): [True: 0, False: 0]
  ------------------
 5851|      0|          Lmax = i;
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
 5852|      0|          break;
 5853|      0|          }
 5854|      0|        Feptr--;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5855|      0|        BACKCHAR(Feptr);
  ------------------
  |  |  345|      0|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5856|      0|        }
 5857|      0|      }
 5858|      0|    else
 5859|      0|#endif
 5860|       |
 5861|       |    /* No UTF support or not in UTF mode */
 5862|       |
 5863|      0|      {
 5864|      0|      ptrdiff_t diff = Feptr - mb->start_subject;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5865|      0|      uint32_t available = (diff > 65535)? 65535 : ((diff > 0)? (int)diff : 0);
  ------------------
  |  Branch (5865:28): [True: 0, False: 0]
  |  Branch (5865:53): [True: 0, False: 0]
  ------------------
 5866|      0|      if (Lmin > available) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 5830|      0|#define Lmin F->temp_32[0]
  ------------------
                    if (Lmin > available) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5866:11): [True: 0, False: 0]
  ------------------
 5867|      0|      if (Lmax > available) Lmax = available;
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
                    if (Lmax > available) Lmax = available;
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
  |  Branch (5867:11): [True: 0, False: 0]
  ------------------
 5868|      0|      Feptr -= Lmax;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                    Feptr -= Lmax;
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
 5869|      0|      }
 5870|       |
 5871|       |    /* Now try matching, moving forward one character on failure, until we
 5872|       |    reach the mimimum back length. */
 5873|       |
 5874|      0|    for (;;)
 5875|      0|      {
 5876|      0|      RMATCH(Fecode + 1 + 2 * IMM2_SIZE, RM37);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 5877|      0|      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5877:11): [True: 0, False: 0]
  ------------------
 5878|      0|      if (Lmax-- <= Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 5831|      0|#define Lmax F->temp_32[1]
  ------------------
                    if (Lmax-- <= Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  | 5830|      0|#define Lmin F->temp_32[0]
  ------------------
                    if (Lmax-- <= Lmin) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (5878:11): [True: 0, False: 0]
  ------------------
 5879|      0|      Feptr++;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 5880|      0|#ifdef SUPPORT_UNICODE
 5881|      0|      if (utf) { FORWARDCHARTEST(Feptr, mb->end_subject); }
  ------------------
  |  |  349|      0|#define FORWARDCHARTEST(eptr,end) while(eptr < end && (*eptr & 0xc0u) == 0x80u) eptr++
  |  |  ------------------
  |  |  |  Branch (349:41): [True: 0, False: 0]
  |  |  |  Branch (349:55): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5881:11): [True: 0, False: 0]
  ------------------
 5882|      0|#endif
 5883|      0|      }
 5884|       |    /* Control never reaches here */
 5885|       |
 5886|      0|#undef Lmin
 5887|      0|#undef Lmax
 5888|      0|#undef Leptr
 5889|       |
 5890|       |    /* ===================================================================== */
 5891|       |    /* An alternation is the end of a branch; scan along to find the end of the
 5892|       |    bracketed group. */
 5893|       |
 5894|    407|    case OP_ALT:
  ------------------
  |  Branch (5894:5): [True: 407, False: 28.4M]
  ------------------
 5895|    407|    branch_end = Fecode;
  ------------------
  |  |  181|    407|#define Fecode             F->ecode
  ------------------
 5896|  1.46k|    do Fecode += GET(Fecode,1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|  1.46k|#define Fecode             F->ecode
  ------------------
                  do Fecode += GET(Fecode,1); while (*Fecode == OP_ALT);
  ------------------
  |  |  109|  1.46k|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                  do Fecode += GET(Fecode,1); while (*Fecode == OP_ALT);
  ------------------
  |  |  181|  1.46k|#define Fecode             F->ecode
  ------------------
  |  Branch (5896:40): [True: 1.05k, False: 407]
  ------------------
 5897|    407|    break;
 5898|       |
 5899|       |
 5900|       |    /* ===================================================================== */
 5901|       |    /* The end of a parenthesized group. For all but OP_BRA and OP_COND, the
 5902|       |    starting frame was added to the chained frames in order to remember the
 5903|       |    starting subject position for the group. (Not true for OP_BRA when it's a
 5904|       |    whole pattern recursion, but that is handled separately below.)*/
 5905|       |
 5906|    455|    case OP_KET:
  ------------------
  |  Branch (5906:5): [True: 455, False: 28.4M]
  ------------------
 5907|    455|    case OP_KETRMIN:
  ------------------
  |  Branch (5907:5): [True: 0, False: 28.4M]
  ------------------
 5908|    455|    case OP_KETRMAX:
  ------------------
  |  Branch (5908:5): [True: 0, False: 28.4M]
  ------------------
 5909|    455|    case OP_KETRPOS:
  ------------------
  |  Branch (5909:5): [True: 0, False: 28.4M]
  ------------------
 5910|       |
 5911|    455|    bracode = Fecode - GET(Fecode, 1);
  ------------------
  |  |  181|    455|#define Fecode             F->ecode
  ------------------
                  bracode = Fecode - GET(Fecode, 1);
  ------------------
  |  |  109|    455|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5912|       |
 5913|    455|    if (branch_end == NULL) branch_end = Fecode;
  ------------------
  |  |  181|     48|#define Fecode             F->ecode
  ------------------
  |  Branch (5913:9): [True: 48, False: 407]
  ------------------
 5914|    455|    branch_start = bracode;
 5915|  1.49k|    while (branch_start + GET(branch_start, 1) != branch_end)
  ------------------
  |  |  109|  1.49k|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (5915:12): [True: 1.04k, False: 455]
  ------------------
 5916|  1.04k|      branch_start += GET(branch_start, 1);
  ------------------
  |  |  109|  1.49k|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 5917|    455|    branch_end = NULL;
 5918|       |
 5919|       |    /* Point N to the frame at the start of the most recent group, and P to its
 5920|       |    predecessor. Remember the subject pointer at the start of the group. */
 5921|       |
 5922|    455|    if (*bracode != OP_BRA && *bracode != OP_COND)
  ------------------
  |  Branch (5922:9): [True: 33, False: 422]
  |  Branch (5922:31): [True: 33, False: 0]
  ------------------
 5923|     33|      {
 5924|     33|      N = (heapframe *)((char *)match_data->heapframes + Flast_group_offset);
  ------------------
  |  |  184|     33|#define Flast_group_offset F->last_group_offset
  ------------------
 5925|     33|      P = (heapframe *)((char *)N - frame_size);
 5926|     33|      Flast_group_offset = P->last_group_offset;
  ------------------
  |  |  184|     33|#define Flast_group_offset F->last_group_offset
  ------------------
 5927|       |
 5928|       |#ifdef DEBUG_SHOW_RMATCH
 5929|       |      fprintf(stderr, "++ KET for frame=%d type=%x prev char offset=%lu\n",
 5930|       |        N->rdepth, N->group_frame_type,
 5931|       |        (char *)P->eptr - (char *)mb->start_subject);
 5932|       |#endif
 5933|       |
 5934|       |      /* If we are at the end of an assertion that is a condition, return a
 5935|       |      match, discarding any intermediate backtracking points. Copy back the
 5936|       |      mark setting and the captures into the frame before N so that they are
 5937|       |      set on return. Doing this for all assertions, both positive and negative,
 5938|       |      seems to match what Perl does. */
 5939|       |
 5940|     33|      if (GF_IDMASK(N->group_frame_type) == GF_CONDASSERT)
  ------------------
  |  |  118|     33|#define GF_IDMASK(a)   ((a) & 0xffff0000u)
  ------------------
                    if (GF_IDMASK(N->group_frame_type) == GF_CONDASSERT)
  ------------------
  |  |  113|     33|#define GF_CONDASSERT  0x00030000u
  ------------------
  |  Branch (5940:11): [True: 0, False: 33]
  ------------------
 5941|      0|        {
 5942|      0|        memcpy((char *)P + offsetof(heapframe, ovector), Fovector,
  ------------------
  |  |  192|      0|#define Fovector           F->ovector
  ------------------
 5943|      0|          Foffset_top * sizeof(PCRE2_SIZE));
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 5944|      0|        P->offset_top = Foffset_top;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 5945|      0|        P->mark = Fmark;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
 5946|      0|        Fback_frame = (char *)F - (char *)P;
  ------------------
  |  |  178|      0|#define Fback_frame        F->back_frame
  ------------------
 5947|      0|        RRETURN(MATCH_MATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5948|      0|        }
 5949|     33|      }
 5950|    422|    else P = NULL;   /* Indicates starting frame not recorded */
 5951|       |
 5952|       |    /* The group was not a conditional assertion. */
 5953|       |
 5954|    455|    switch (*bracode)
  ------------------
  |  Branch (5954:13): [True: 455, False: 0]
  ------------------
 5955|    455|      {
 5956|       |      /* Whole pattern recursion is handled as a recursion into group 0, but
 5957|       |      the entire pattern is wrapped in OP_BRA/OP_KET rather than a capturing
 5958|       |      group - a design mistake: it should perhaps have been capture group 0.
 5959|       |      Anyway, that means the end of such recursion must be handled here. It is
 5960|       |      detected by checking for an immediately following OP_END when we are
 5961|       |      recursing in group 0. If this is not the end of a whole-pattern
 5962|       |      recursion, there is nothing to be done. */
 5963|       |
 5964|    422|      case OP_BRA:
  ------------------
  |  Branch (5964:7): [True: 422, False: 33]
  ------------------
 5965|    422|      if (Fcurrent_recurse != 0 || Fecode[1+LINK_SIZE] != OP_END) break;
  ------------------
  |  |  180|    422|#define Fcurrent_recurse   F->current_recurse
  ------------------
                    if (Fcurrent_recurse != 0 || Fecode[1+LINK_SIZE] != OP_END) break;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    if (Fcurrent_recurse != 0 || Fecode[1+LINK_SIZE] != OP_END) break;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (5965:11): [True: 422, False: 0]
  |  Branch (5965:36): [True: 0, False: 0]
  ------------------
 5966|       |
 5967|       |      /* It is the end of whole-pattern recursion. */
 5968|       |
 5969|      0|      offset = Flast_group_offset;
  ------------------
  |  |  184|      0|#define Flast_group_offset F->last_group_offset
  ------------------
 5970|      0|      if (offset == PCRE2_UNSET) return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
                    if (offset == PCRE2_UNSET) return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  |  Branch (5970:11): [True: 0, False: 0]
  ------------------
 5971|      0|      N = (heapframe *)((char *)match_data->heapframes + offset);
 5972|      0|      P = (heapframe *)((char *)N - frame_size);
 5973|      0|      Flast_group_offset = P->last_group_offset;
  ------------------
  |  |  184|      0|#define Flast_group_offset F->last_group_offset
  ------------------
 5974|       |
 5975|       |      /* Reinstate the previous set of captures and then carry on after the
 5976|       |      recursion call. */
 5977|       |
 5978|      0|      memcpy((char *)F + offsetof(heapframe, ovector), P->ovector,
 5979|      0|        Foffset_top * sizeof(PCRE2_SIZE));
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 5980|      0|      Foffset_top = P->offset_top;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 5981|      0|      Fcapture_last = P->capture_last;
  ------------------
  |  |  179|      0|#define Fcapture_last      F->capture_last
  ------------------
 5982|      0|      Fcurrent_recurse = P->current_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 5983|      0|      Fecode = P->ecode + 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode = P->ecode + 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 5984|      0|      continue;  /* With next opcode */
 5985|       |
 5986|      0|      case OP_COND:     /* No need to do anything for these */
  ------------------
  |  Branch (5986:7): [True: 0, False: 455]
  ------------------
 5987|      0|      case OP_SCOND:
  ------------------
  |  Branch (5987:7): [True: 0, False: 455]
  ------------------
 5988|      0|      break;
 5989|       |
 5990|       |      /* Non-atomic positive assertions are like OP_BRA, except that the
 5991|       |      subject pointer must be put back to where it was at the start of the
 5992|       |      assertion. For a variable lookbehind, check its end point. */
 5993|       |
 5994|      0|      case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (5994:7): [True: 0, False: 455]
  ------------------
 5995|      0|      if (branch_start[1 + LINK_SIZE] == OP_VREVERSE && Feptr != P->eptr)
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    if (branch_start[1 + LINK_SIZE] == OP_VREVERSE && Feptr != P->eptr)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (5995:11): [True: 0, False: 0]
  |  Branch (5995:57): [True: 0, False: 0]
  ------------------
 5996|      0|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 5997|       |      /* Fall through */
 5998|       |
 5999|      0|      case OP_ASSERT_NA:
  ------------------
  |  Branch (5999:7): [True: 0, False: 455]
  ------------------
 6000|      0|      if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                    if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6000:11): [True: 0, False: 0]
  ------------------
 6001|      0|      Feptr = P->eptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 6002|      0|      break;
 6003|       |
 6004|       |      /* Atomic positive assertions are like OP_ONCE, except that in addition
 6005|       |      the subject pointer must be put back to where it was at the start of the
 6006|       |      assertion. For a variable lookbehind, check its end point. */
 6007|       |
 6008|      0|      case OP_ASSERTBACK:
  ------------------
  |  Branch (6008:7): [True: 0, False: 455]
  ------------------
 6009|      0|      if (branch_start[1 + LINK_SIZE] == OP_VREVERSE && Feptr != P->eptr)
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    if (branch_start[1 + LINK_SIZE] == OP_VREVERSE && Feptr != P->eptr)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6009:11): [True: 0, False: 0]
  |  Branch (6009:57): [True: 0, False: 0]
  ------------------
 6010|      0|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6011|       |      /* Fall through */
 6012|       |
 6013|      0|      case OP_ASSERT:
  ------------------
  |  Branch (6013:7): [True: 0, False: 455]
  ------------------
 6014|      0|      if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                    if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6014:11): [True: 0, False: 0]
  ------------------
 6015|      0|      Feptr = P->eptr;
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 6016|       |      /* Fall through */
 6017|       |
 6018|       |      /* For an atomic group, discard internal backtracking points. We must
 6019|       |      also ensure that any remaining branches within the top-level of the group
 6020|       |      are not tried. Do this by adjusting the code pointer within the backtrack
 6021|       |      frame so that it points to the final branch. */
 6022|       |
 6023|      0|      case OP_ONCE:
  ------------------
  |  Branch (6023:7): [True: 0, False: 455]
  ------------------
 6024|      0|      Fback_frame = ((char *)F - (char *)P);
  ------------------
  |  |  178|      0|#define Fback_frame        F->back_frame
  ------------------
 6025|      0|      for (;;)
 6026|      0|        {
 6027|      0|        uint32_t y = GET(P->ecode,1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 6028|      0|        if ((P->ecode)[y] != OP_ALT) break;
  ------------------
  |  Branch (6028:13): [True: 0, False: 0]
  ------------------
 6029|      0|        P->ecode += y;
 6030|      0|        }
 6031|      0|      break;
 6032|       |
 6033|       |      /* A matching negative assertion returns MATCH, which is turned into
 6034|       |      NOMATCH at the assertion level. For a variable lookbehind, check its end
 6035|       |      point. */
 6036|       |
 6037|      0|      case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (6037:7): [True: 0, False: 455]
  ------------------
 6038|      0|      if (branch_start[1 + LINK_SIZE] == OP_VREVERSE && Feptr != P->eptr)
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
                    if (branch_start[1 + LINK_SIZE] == OP_VREVERSE && Feptr != P->eptr)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6038:11): [True: 0, False: 0]
  |  Branch (6038:57): [True: 0, False: 0]
  ------------------
 6039|      0|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6040|       |      /* Fall through */
 6041|       |
 6042|      0|      case OP_ASSERT_NOT:
  ------------------
  |  Branch (6042:7): [True: 0, False: 455]
  ------------------
 6043|      0|      RRETURN(MATCH_MATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6044|       |
 6045|       |      /* At the end of a script run, apply the script-checking rules. This code
 6046|       |      will never by exercised if Unicode support it not compiled, because in
 6047|       |      that environment script runs cause an error at compile time. */
 6048|       |
 6049|      0|      case OP_SCRIPT_RUN:
  ------------------
  |  Branch (6049:7): [True: 0, False: 455]
  ------------------
 6050|      0|      if (!PRIV(script_run)(P->eptr, Feptr, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2031|      0|#define _pcre2_script_run            PCRE2_SUFFIX(_pcre2_script_run_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    if (!PRIV(script_run)(P->eptr, Feptr, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
                    if (!PRIV(script_run)(P->eptr, Feptr, utf)) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6050:11): [True: 0, False: 0]
  ------------------
 6051|      0|      break;
 6052|       |
 6053|       |      /* Whole-pattern recursion is coded as a recurse into group 0, and is
 6054|       |      handled with OP_BRA above. Other recursion is handled here. */
 6055|       |
 6056|     33|      case OP_CBRA:
  ------------------
  |  Branch (6056:7): [True: 33, False: 422]
  ------------------
 6057|     33|      case OP_CBRAPOS:
  ------------------
  |  Branch (6057:7): [True: 0, False: 455]
  ------------------
 6058|     33|      case OP_SCBRA:
  ------------------
  |  Branch (6058:7): [True: 0, False: 455]
  ------------------
 6059|     33|      case OP_SCBRAPOS:
  ------------------
  |  Branch (6059:7): [True: 0, False: 455]
  ------------------
 6060|     33|      number = GET2(bracode, 1+LINK_SIZE);
  ------------------
  |  |  194|     33|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 6061|       |
 6062|       |      /* Handle a recursively called group. We reinstate the previous set of
 6063|       |      captures and then carry on after the recursion call. */
 6064|       |
 6065|     33|      if (Fcurrent_recurse == number)
  ------------------
  |  |  180|     33|#define Fcurrent_recurse   F->current_recurse
  ------------------
  |  Branch (6065:11): [True: 0, False: 33]
  ------------------
 6066|      0|        {
 6067|      0|        P = (heapframe *)((char *)N - frame_size);
 6068|      0|        memcpy((char *)F + offsetof(heapframe, ovector), P->ovector,
 6069|      0|          Foffset_top * sizeof(PCRE2_SIZE));
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 6070|      0|        Foffset_top = P->offset_top;
  ------------------
  |  |  189|      0|#define Foffset_top        F->offset_top
  ------------------
 6071|      0|        Fcapture_last = P->capture_last;
  ------------------
  |  |  179|      0|#define Fcapture_last      F->capture_last
  ------------------
 6072|      0|        Fcurrent_recurse = P->current_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6073|      0|        Fecode = P->ecode + 1 + LINK_SIZE;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      Fecode = P->ecode + 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 6074|      0|        continue;  /* With next opcode */
 6075|      0|        }
 6076|       |
 6077|       |      /* Deal with actual capturing. */
 6078|       |
 6079|     33|      offset = (number << 1) - 2;
 6080|     33|      Fcapture_last = number;
  ------------------
  |  |  179|     33|#define Fcapture_last      F->capture_last
  ------------------
 6081|     33|      Fovector[offset] = P->eptr - mb->start_subject;
  ------------------
  |  |  192|     33|#define Fovector           F->ovector
  ------------------
 6082|     33|      Fovector[offset+1] = Feptr - mb->start_subject;
  ------------------
  |  |  192|     33|#define Fovector           F->ovector
  ------------------
                    Fovector[offset+1] = Feptr - mb->start_subject;
  ------------------
  |  |  182|     33|#define Feptr              F->eptr
  ------------------
 6083|     33|      if (offset >= Foffset_top) Foffset_top = offset + 2;
  ------------------
  |  |  189|     33|#define Foffset_top        F->offset_top
  ------------------
                    if (offset >= Foffset_top) Foffset_top = offset + 2;
  ------------------
  |  |  189|     33|#define Foffset_top        F->offset_top
  ------------------
  |  Branch (6083:11): [True: 33, False: 0]
  ------------------
 6084|     33|      break;
 6085|    455|      }  /* End actions relating to the starting opcode */
 6086|       |
 6087|       |    /* OP_KETRPOS is a possessive repeating ket. Remember the current position,
 6088|       |    and return the MATCH_KETRPOS. This makes it possible to do the repeats one
 6089|       |    at a time from the outer level. This must precede the empty string test -
 6090|       |    in this case that test is done at the outer level. */
 6091|       |
 6092|    455|    if (*Fecode == OP_KETRPOS)
  ------------------
  |  |  181|    455|#define Fecode             F->ecode
  ------------------
  |  Branch (6092:9): [True: 0, False: 455]
  ------------------
 6093|      0|      {
 6094|      0|      memcpy((char *)P + offsetof(heapframe, eptr),
 6095|      0|             (char *)F + offsetof(heapframe, eptr),
 6096|      0|             frame_copy_size);
 6097|      0|      RRETURN(MATCH_KETRPOS);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6098|      0|      }
 6099|       |
 6100|       |    /* Handle the different kinds of closing brackets. A non-repeating ket
 6101|       |    needs no special action, just continuing at this level. This also happens
 6102|       |    for the repeating kets if the group matched no characters, in order to
 6103|       |    forcibly break infinite loops. Otherwise, the repeating kets try the rest
 6104|       |    of the pattern or restart from the preceding bracket, in the appropriate
 6105|       |    order. */
 6106|       |
 6107|    455|    if (Fop != OP_KET && (P == NULL || Feptr != P->eptr))
  ------------------
  |  |  191|    455|#define Fop                F->op
  ------------------
                  if (Fop != OP_KET && (P == NULL || Feptr != P->eptr))
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6107:9): [True: 0, False: 455]
  |  Branch (6107:27): [True: 0, False: 0]
  |  Branch (6107:40): [True: 0, False: 0]
  ------------------
 6108|      0|      {
 6109|      0|      if (Fop == OP_KETRMIN)
  ------------------
  |  |  191|      0|#define Fop                F->op
  ------------------
  |  Branch (6109:11): [True: 0, False: 0]
  ------------------
 6110|      0|        {
 6111|      0|        RMATCH(Fecode + 1 + LINK_SIZE, RM6);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6112|      0|        if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6112:13): [True: 0, False: 0]
  ------------------
 6113|      0|        Fecode -= GET(Fecode, 1);
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                      Fecode -= GET(Fecode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 6114|      0|        break;   /* End of ket processing */
 6115|      0|        }
 6116|       |
 6117|       |      /* Repeat the maximum number of times (KETRMAX) */
 6118|       |
 6119|      0|      RMATCH(bracode, RM7);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6120|      0|      if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6120:11): [True: 0, False: 0]
  ------------------
 6121|      0|      }
 6122|       |
 6123|       |    /* Carry on at this level for a non-repeating ket, or after matching an
 6124|       |    empty string, or after repeating for a maximum number of times. */
 6125|       |
 6126|    455|    Fecode += 1 + LINK_SIZE;
  ------------------
  |  |  181|    455|#define Fecode             F->ecode
  ------------------
                  Fecode += 1 + LINK_SIZE;
  ------------------
  |  |   98|    455|#define LINK_SIZE 2
  ------------------
 6127|    455|    break;
 6128|       |
 6129|       |
 6130|       |    /* ===================================================================== */
 6131|       |    /* Start and end of line assertions, not multiline mode. */
 6132|       |
 6133|  19.3k|    case OP_CIRC:   /* Start of line, unless PCRE2_NOTBOL is set. */
  ------------------
  |  Branch (6133:5): [True: 19.3k, False: 28.4M]
  ------------------
 6134|  19.3k|    if (Feptr != mb->start_subject || (mb->moptions & PCRE2_NOTBOL) != 0)
  ------------------
  |  |  182|  19.3k|#define Feptr              F->eptr
  ------------------
                  if (Feptr != mb->start_subject || (mb->moptions & PCRE2_NOTBOL) != 0)
  ------------------
  |  |  176|     15|#define PCRE2_NOTBOL                      0x00000001u
  ------------------
  |  Branch (6134:9): [True: 19.3k, False: 15]
  |  Branch (6134:39): [True: 0, False: 15]
  ------------------
 6135|  19.3k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  19.3k|  {\
  |  |  560|  19.3k|  rrc = ra;\
  |  |  561|  19.3k|  goto RETURN_SWITCH;\
  |  |  562|  19.3k|  }
  ------------------
 6136|     15|    Fecode++;
  ------------------
  |  |  181|     15|#define Fecode             F->ecode
  ------------------
 6137|     15|    break;
 6138|       |
 6139|     38|    case OP_SOD:    /* Unconditional start of subject */
  ------------------
  |  Branch (6139:5): [True: 38, False: 28.4M]
  ------------------
 6140|     38|    if (Feptr != mb->start_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|     38|#define Feptr              F->eptr
  ------------------
                  if (Feptr != mb->start_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|     35|  {\
  |  |  560|     35|  rrc = ra;\
  |  |  561|     35|  goto RETURN_SWITCH;\
  |  |  562|     35|  }
  ------------------
  |  Branch (6140:9): [True: 35, False: 3]
  ------------------
 6141|      3|    Fecode++;
  ------------------
  |  |  181|      3|#define Fecode             F->ecode
  ------------------
 6142|      3|    break;
 6143|       |
 6144|       |    /* When PCRE2_NOTEOL is unset, assert before the subject end, or a
 6145|       |    terminating newline unless PCRE2_DOLLAR_ENDONLY is set. */
 6146|       |
 6147|    107|    case OP_DOLL:
  ------------------
  |  Branch (6147:5): [True: 107, False: 28.4M]
  ------------------
 6148|    107|    if ((mb->moptions & PCRE2_NOTEOL) != 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  177|    107|#define PCRE2_NOTEOL                      0x00000002u
  ------------------
                  if ((mb->moptions & PCRE2_NOTEOL) != 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6148:9): [True: 0, False: 107]
  ------------------
 6149|    107|    if ((mb->poptions & PCRE2_DOLLAR_ENDONLY) == 0) goto ASSERT_NL_OR_EOS;
  ------------------
  |  |  123|    107|#define PCRE2_DOLLAR_ENDONLY      0x00000010u  /*   J M D */
  ------------------
  |  Branch (6149:9): [True: 107, False: 0]
  ------------------
 6150|       |
 6151|       |    /* Fall through */
 6152|       |    /* Unconditional end of subject assertion (\z). */
 6153|       |
 6154|    156|    case OP_EOD:
  ------------------
  |  Branch (6154:5): [True: 156, False: 28.4M]
  ------------------
 6155|    156|    if (Feptr < mb->true_end_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|    156|#define Feptr              F->eptr
  ------------------
                  if (Feptr < mb->true_end_subject) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    152|  {\
  |  |  560|    152|  rrc = ra;\
  |  |  561|    152|  goto RETURN_SWITCH;\
  |  |  562|    152|  }
  ------------------
  |  Branch (6155:9): [True: 152, False: 4]
  ------------------
 6156|      4|    if (mb->partial != 0)
  ------------------
  |  Branch (6156:9): [True: 0, False: 4]
  ------------------
 6157|      0|      {
 6158|      0|      mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6159|      0|      if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (6159:11): [True: 0, False: 0]
  ------------------
 6160|      0|      }
 6161|      4|    Fecode++;
  ------------------
  |  |  181|      4|#define Fecode             F->ecode
  ------------------
 6162|      4|    break;
 6163|       |
 6164|       |    /* End of subject or ending \n assertion (\Z) */
 6165|       |
 6166|  23.9k|    case OP_EODN:
  ------------------
  |  Branch (6166:5): [True: 23.9k, False: 28.4M]
  ------------------
 6167|  24.0k|    ASSERT_NL_OR_EOS:
 6168|  24.0k|    if (Feptr < mb->end_subject &&
  ------------------
  |  |  182|  24.0k|#define Feptr              F->eptr
  ------------------
  |  Branch (6168:9): [True: 23.5k, False: 569]
  ------------------
 6169|  23.5k|        (!IS_NEWLINE(Feptr) || Feptr != mb->end_subject - mb->nllen))
  ------------------
  |  |  497|  47.0k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|  23.5k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|  23.5k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:4): [True: 0, False: 23.5k]
  |  |  ------------------
  |  |  498|  47.0k|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|  47.0k|    : \
  |  |  502|  47.0k|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  23.5k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|  23.5k|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  23.5k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 23.5k, False: 0]
  |  |  ------------------
  |  |  503|  23.5k|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|  23.5k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|  23.5k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 1.20k, False: 22.3k]
  |  |  ------------------
  |  |  504|  23.5k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|  1.20k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 1.20k, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|  23.5k|    ) \
  |  |  506|  47.0k|  )
  ------------------
                      (!IS_NEWLINE(Feptr) || Feptr != mb->end_subject - mb->nllen))
  ------------------
  |  |  182|  1.20k|#define Feptr              F->eptr
  ------------------
  |  Branch (6169:10): [True: 22.3k, False: 1.20k]
  |  Branch (6169:32): [True: 1.20k, False: 0]
  ------------------
 6170|  23.5k|      {
 6171|  23.5k|      if (mb->partial != 0 &&
  ------------------
  |  Branch (6171:11): [True: 0, False: 23.5k]
  ------------------
 6172|      0|          Feptr + 1 >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6172:11): [True: 0, False: 0]
  ------------------
 6173|      0|          NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                        NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|  23.5k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (6173:11): [True: 0, False: 0]
  ------------------
 6174|      0|          NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (6174:11): [True: 0, False: 0]
  ------------------
 6175|      0|          UCHAR21TEST(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
                        UCHAR21TEST(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (6175:11): [True: 0, False: 0]
  ------------------
 6176|      0|        {
 6177|      0|        mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6178|      0|        if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (6178:13): [True: 0, False: 0]
  ------------------
 6179|      0|        }
 6180|  23.5k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  23.5k|  {\
  |  |  560|  23.5k|  rrc = ra;\
  |  |  561|  23.5k|  goto RETURN_SWITCH;\
  |  |  562|  23.5k|  }
  ------------------
 6181|      0|      }
 6182|       |
 6183|       |    /* Either at end of string or \n before end. */
 6184|       |
 6185|    569|    if (mb->partial != 0)
  ------------------
  |  Branch (6185:9): [True: 0, False: 569]
  ------------------
 6186|      0|      {
 6187|      0|      mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6188|      0|      if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (6188:11): [True: 0, False: 0]
  ------------------
 6189|      0|      }
 6190|    569|    Fecode++;
  ------------------
  |  |  181|    569|#define Fecode             F->ecode
  ------------------
 6191|    569|    break;
 6192|       |
 6193|       |
 6194|       |    /* ===================================================================== */
 6195|       |    /* Start and end of line assertions, multiline mode. */
 6196|       |
 6197|       |    /* Start of subject unless notbol, or after any newline except for one at
 6198|       |    the very end, unless PCRE2_ALT_CIRCUMFLEX is set. */
 6199|       |
 6200|  1.42k|    case OP_CIRCM:
  ------------------
  |  Branch (6200:5): [True: 1.42k, False: 28.4M]
  ------------------
 6201|  1.42k|    if ((mb->moptions & PCRE2_NOTBOL) != 0 && Feptr == mb->start_subject)
  ------------------
  |  |  176|  1.42k|#define PCRE2_NOTBOL                      0x00000001u
  ------------------
                  if ((mb->moptions & PCRE2_NOTBOL) != 0 && Feptr == mb->start_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6201:9): [True: 0, False: 1.42k]
  |  Branch (6201:47): [True: 0, False: 0]
  ------------------
 6202|  1.42k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6203|  1.42k|    if (Feptr != mb->start_subject &&
  ------------------
  |  |  182|  1.42k|#define Feptr              F->eptr
  ------------------
  |  Branch (6203:9): [True: 1.42k, False: 1]
  ------------------
 6204|  1.42k|        ((Feptr == mb->end_subject &&
  ------------------
  |  |  182|  1.42k|#define Feptr              F->eptr
  ------------------
  |  Branch (6204:11): [True: 186, False: 1.24k]
  ------------------
 6205|    186|           (mb->poptions & PCRE2_ALT_CIRCUMFLEX) == 0) ||
  ------------------
  |  |  140|    186|#define PCRE2_ALT_CIRCUMFLEX      0x00200000u  /*   J M D */
  ------------------
  |  Branch (6205:12): [True: 186, False: 0]
  ------------------
 6206|  1.24k|         !WAS_NEWLINE(Feptr)))
  ------------------
  |  |  511|  1.24k|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|  1.24k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|  1.24k|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (511:4): [True: 0, False: 1.24k]
  |  |  ------------------
  |  |  512|  1.24k|    ((p) > NLBLOCK->PSSTART && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) > NLBLOCK->PSSTART && \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |  |  Branch (512:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  513|      0|     PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2040|      0|#define _pcre2_was_newline           PCRE2_SUFFIX(_pcre2_was_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(was_newline)((p), NLBLOCK->nltype, NLBLOCK->PSSTART, \
  |  |  ------------------
  |  |  |  |   66|      0|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |  |  Branch (513:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  514|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  515|  1.24k|    : \
  |  |  516|  1.24k|    ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  1.24k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   66|  1.24k|#define PSSTART start_subject   /* Field containing processed string start */
  |  |  ------------------
  |  |                   ((p) >= NLBLOCK->PSSTART + NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|  1.24k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (516:6): [True: 1.24k, False: 0]
  |  |  ------------------
  |  |  517|  1.24k|     UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] &&              \
  |  |  ------------------
  |  |  |  |  244|  1.24k|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p - NLBLOCK->nllen) == NLBLOCK->nl[0] &&              \
  |  |  ------------------
  |  |  |  |   65|  1.24k|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (517:6): [True: 9, False: 1.23k]
  |  |  ------------------
  |  |  518|  1.24k|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |   65|      9|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p - NLBLOCK->nllen + 1) == NLBLOCK->nl[1]) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (518:7): [True: 9, False: 0]
  |  |  |  Branch (518:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  519|  1.24k|    ) \
  |  |  520|  1.24k|  )
  ------------------
  |  Branch (6206:10): [True: 1.23k, False: 9]
  ------------------
 6207|  1.41k|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|  1.41k|  {\
  |  |  560|  1.41k|  rrc = ra;\
  |  |  561|  1.41k|  goto RETURN_SWITCH;\
  |  |  562|  1.41k|  }
  ------------------
 6208|     10|    Fecode++;
  ------------------
  |  |  181|     10|#define Fecode             F->ecode
  ------------------
 6209|     10|    break;
 6210|       |
 6211|       |    /* Assert before any newline, or before end of subject unless noteol is
 6212|       |    set. */
 6213|       |
 6214|      0|    case OP_DOLLM:
  ------------------
  |  Branch (6214:5): [True: 0, False: 28.4M]
  ------------------
 6215|      0|    if (Feptr < mb->end_subject)
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6215:9): [True: 0, False: 0]
  ------------------
 6216|      0|      {
 6217|      0|      if (!IS_NEWLINE(Feptr))
  ------------------
  |  |  497|      0|  ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                 ((NLBLOCK->nltype != NLTYPE_FIXED)? \
  |  |  ------------------
  |  |  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  |  |  ------------------
  |  |  |  Branch (497:4): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|    ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) < NLBLOCK->PSEND && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (498:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  499|      0|     PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  ------------------
  |  |  |  |  |  | 2024|      0|#define _pcre2_is_newline            PCRE2_SUFFIX(_pcre2_is_newline_)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    PRIV(is_newline)((p), NLBLOCK->nltype, NLBLOCK->PSEND, \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |  |  Branch (499:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  500|      0|       &(NLBLOCK->nllen), utf)) \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  501|      0|    : \
  |  |  502|      0|    ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   67|      0|#define PSEND   end_subject     /* Field containing processed string end */
  |  |  ------------------
  |  |                   ((p) <= NLBLOCK->PSEND - NLBLOCK->nllen && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (502:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  503|      0|     UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    UCHAR21TEST(p) == NLBLOCK->nl[0] && \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (503:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  504|      0|     (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  |  |  ------------------
  |  |                    (NLBLOCK->nllen == 1 || UCHAR21TEST(p+1) == NLBLOCK->nl[1])       \
  |  |  ------------------
  |  |  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  |  |  ------------------
  |  |  |  Branch (504:7): [True: 0, False: 0]
  |  |  |  Branch (504:30): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|      0|    ) \
  |  |  506|      0|  )
  ------------------
  |  Branch (6217:11): [True: 0, False: 0]
  ------------------
 6218|      0|        {
 6219|      0|        if (mb->partial != 0 &&
  ------------------
  |  Branch (6219:13): [True: 0, False: 0]
  ------------------
 6220|      0|            Feptr + 1 >= mb->end_subject &&
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
  |  Branch (6220:13): [True: 0, False: 0]
  ------------------
 6221|      0|            NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
                          NLBLOCK->nltype == NLTYPE_FIXED &&
  ------------------
  |  |  490|      0|#define NLTYPE_FIXED    0     /* Newline is a fixed length string */
  ------------------
  |  Branch (6221:13): [True: 0, False: 0]
  ------------------
 6222|      0|            NLBLOCK->nllen == 2 &&
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (6222:13): [True: 0, False: 0]
  ------------------
 6223|      0|            UCHAR21TEST(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |  244|      0|#define UCHAR21TEST(eptr)    (*(eptr))
  ------------------
                          UCHAR21TEST(Feptr) == NLBLOCK->nl[0])
  ------------------
  |  |   65|      0|#define NLBLOCK mb              /* Block containing newline information */
  ------------------
  |  Branch (6223:13): [True: 0, False: 0]
  ------------------
 6224|      0|          {
 6225|      0|          mb->hitend = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 6226|      0|          if (mb->partial > 1) return PCRE2_ERROR_PARTIAL;
  ------------------
  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  ------------------
  |  Branch (6226:15): [True: 0, False: 0]
  ------------------
 6227|      0|          }
 6228|      0|        RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6229|      0|        }
 6230|      0|      }
 6231|      0|    else
 6232|      0|      {
 6233|      0|      if ((mb->moptions & PCRE2_NOTEOL) != 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  177|      0|#define PCRE2_NOTEOL                      0x00000002u
  ------------------
                    if ((mb->moptions & PCRE2_NOTEOL) != 0) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6233:11): [True: 0, False: 0]
  ------------------
 6234|      0|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      0|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  539|      0|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      0|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 6235|      0|      }
 6236|      0|    Fecode++;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6237|      0|    break;
 6238|       |
 6239|       |
 6240|       |    /* ===================================================================== */
 6241|       |    /* Start of match assertion */
 6242|       |
 6243|    310|    case OP_SOM:
  ------------------
  |  Branch (6243:5): [True: 310, False: 28.4M]
  ------------------
 6244|    310|    if (Feptr != mb->start_subject + mb->start_offset) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  182|    310|#define Feptr              F->eptr
  ------------------
                  if (Feptr != mb->start_subject + mb->start_offset) RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    305|  {\
  |  |  560|    305|  rrc = ra;\
  |  |  561|    305|  goto RETURN_SWITCH;\
  |  |  562|    305|  }
  ------------------
  |  Branch (6244:9): [True: 305, False: 5]
  ------------------
 6245|      5|    Fecode++;
  ------------------
  |  |  181|      5|#define Fecode             F->ecode
  ------------------
 6246|      5|    break;
 6247|       |
 6248|       |
 6249|       |    /* ===================================================================== */
 6250|       |    /* Reset the start of match point */
 6251|       |
 6252|     99|    case OP_SET_SOM:
  ------------------
  |  Branch (6252:5): [True: 99, False: 28.4M]
  ------------------
 6253|     99|    Fstart_match = Feptr;
  ------------------
  |  |  188|     99|#define Fstart_match       F->start_match
  ------------------
                  Fstart_match = Feptr;
  ------------------
  |  |  182|     99|#define Feptr              F->eptr
  ------------------
 6254|     99|    Fecode++;
  ------------------
  |  |  181|     99|#define Fecode             F->ecode
  ------------------
 6255|     99|    break;
 6256|       |
 6257|       |
 6258|       |    /* ===================================================================== */
 6259|       |    /* Word boundary assertions. Find out if the previous and current
 6260|       |    characters are "word" characters. It takes a bit more work in UTF mode.
 6261|       |    Characters > 255 are assumed to be "non-word" characters when PCRE2_UCP is
 6262|       |    not set. When it is set, use Unicode properties if available, even when not
 6263|       |    in UTF mode. Remember the earliest and latest consulted characters. */
 6264|       |
 6265|    291|    case OP_NOT_WORD_BOUNDARY:
  ------------------
  |  Branch (6265:5): [True: 291, False: 28.4M]
  ------------------
 6266|    466|    case OP_WORD_BOUNDARY:
  ------------------
  |  Branch (6266:5): [True: 175, False: 28.4M]
  ------------------
 6267|  1.00k|    case OP_NOT_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (6267:5): [True: 535, False: 28.4M]
  ------------------
 6268|  1.58k|    case OP_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (6268:5): [True: 583, False: 28.4M]
  ------------------
 6269|  1.58k|    if (Feptr == mb->check_subject) prev_is_word = FALSE; else
  ------------------
  |  |  182|  1.58k|#define Feptr              F->eptr
  ------------------
                  if (Feptr == mb->check_subject) prev_is_word = FALSE; else
  ------------------
  |  |   87|     35|#define FALSE   0
  ------------------
  |  Branch (6269:9): [True: 35, False: 1.54k]
  ------------------
 6270|  1.54k|      {
 6271|  1.54k|      PCRE2_SPTR lastptr = Feptr - 1;
  ------------------
  |  |  820|  1.54k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  1.54k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.54k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.54k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    PCRE2_SPTR lastptr = Feptr - 1;
  ------------------
  |  |  182|  1.54k|#define Feptr              F->eptr
  ------------------
 6272|  1.54k|#ifdef SUPPORT_UNICODE
 6273|  1.54k|      if (utf)
  ------------------
  |  Branch (6273:11): [True: 1.08k, False: 461]
  ------------------
 6274|  1.08k|        {
 6275|  1.08k|        BACKCHAR(lastptr);
  ------------------
  |  |  345|  1.10k|#define BACKCHAR(eptr) while((*eptr & 0xc0u) == 0x80u) eptr--
  |  |  ------------------
  |  |  |  Branch (345:30): [True: 12, False: 1.08k]
  |  |  ------------------
  ------------------
 6276|  1.08k|        GETCHAR(fc, lastptr);
  ------------------
  |  |  302|  1.08k|  c = *eptr; \
  |  |  303|  1.08k|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      4|    { \
  |  |  |  |  285|      4|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  286|      4|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      4|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  288|      4|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      4|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      4|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      4|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      4|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      4|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 4, False: 1.08k]
  |  |  ------------------
  ------------------
 6277|  1.08k|        }
 6278|    461|      else
 6279|    461|#endif  /* SUPPORT_UNICODE */
 6280|    461|      fc = *lastptr;
 6281|  1.54k|      if (lastptr < mb->start_used_ptr) mb->start_used_ptr = lastptr;
  ------------------
  |  Branch (6281:11): [True: 1.33k, False: 213]
  ------------------
 6282|  1.54k|#ifdef SUPPORT_UNICODE
 6283|  1.54k|      if (Fop == OP_UCP_WORD_BOUNDARY || Fop == OP_NOT_UCP_WORD_BOUNDARY)
  ------------------
  |  |  191|  1.54k|#define Fop                F->op
  ------------------
                    if (Fop == OP_UCP_WORD_BOUNDARY || Fop == OP_NOT_UCP_WORD_BOUNDARY)
  ------------------
  |  |  191|    978|#define Fop                F->op
  ------------------
  |  Branch (6283:11): [True: 571, False: 978]
  |  Branch (6283:42): [True: 517, False: 461]
  ------------------
 6284|  1.08k|        {
 6285|  1.08k|        int chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|  1.08k|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|  1.08k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  1.08k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  1.08k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  1.08k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.08k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.08k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.08k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  1.08k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  1.08k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  1.08k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.08k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.08k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.08k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  1.08k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  1.08k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.08k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.08k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.08k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  1.08k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  1.08k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  1.08k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  1.08k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6286|  1.08k|        int category = PRIV(ucp_gentype)[chartype];
  ------------------
  |  |  195|  1.08k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|  1.08k|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  1.08k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  1.08k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  1.08k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6287|  1.08k|        prev_is_word = (category == ucp_L || category == ucp_N ||
  ------------------
  |  Branch (6287:25): [True: 220, False: 868]
  |  Branch (6287:46): [True: 87, False: 781]
  ------------------
 6288|    781|          chartype == ucp_Mn || chartype == ucp_Pc);
  ------------------
  |  Branch (6288:11): [True: 0, False: 781]
  |  Branch (6288:33): [True: 9, False: 772]
  ------------------
 6289|  1.08k|        }
 6290|    461|      else
 6291|    461|#endif  /* SUPPORT_UNICODE */
 6292|    461|      prev_is_word = CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0;
  ------------------
  |  |  217|    922|#define CHMAX_255(c) ((c) <= 255u)
  |  |  ------------------
  |  |  |  Branch (217:22): [True: 461, False: 0]
  |  |  ------------------
  ------------------
                    prev_is_word = CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0;
  ------------------
  |  |  601|    461|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (6292:39): [True: 141, False: 320]
  ------------------
 6293|  1.54k|      }
 6294|       |
 6295|       |    /* Get status of next character */
 6296|       |
 6297|  1.58k|    if (Feptr >= mb->end_subject)
  ------------------
  |  |  182|  1.58k|#define Feptr              F->eptr
  ------------------
  |  Branch (6297:9): [True: 4, False: 1.58k]
  ------------------
 6298|      4|      {
 6299|      4|      SCHECK_PARTIAL();
  ------------------
  |  |  538|      4|  if (mb->partial != 0 && \
  |  |  ------------------
  |  |  |  Branch (538:7): [True: 0, False: 4]
  |  |  ------------------
  |  |  539|      4|      (Feptr > mb->start_used_ptr || mb->allowemptypartial)) \
  |  |  ------------------
  |  |  |  |  182|      0|#define Feptr              F->eptr
  |  |  ------------------
  |  |  |  Branch (539:8): [True: 0, False: 0]
  |  |  |  Branch (539:38): [True: 0, False: 0]
  |  |  ------------------
  |  |  540|      4|    { \
  |  |  541|      0|    mb->hitend = TRUE; \
  |  |  ------------------
  |  |  |  |   88|      0|#define TRUE    1
  |  |  ------------------
  |  |  542|      0|    if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
  |  |  ------------------
  |  |  |  |  328|      0|#define PCRE2_ERROR_PARTIAL          (-2)
  |  |  ------------------
  |  |  |  Branch (542:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  543|      0|    }
  ------------------
 6300|      4|      cur_is_word = FALSE;
  ------------------
  |  |   87|      4|#define FALSE   0
  ------------------
 6301|      4|      }
 6302|  1.58k|    else
 6303|  1.58k|      {
 6304|  1.58k|      PCRE2_SPTR nextptr = Feptr + 1;
  ------------------
  |  |  820|  1.58k|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|  1.58k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.58k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.58k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    PCRE2_SPTR nextptr = Feptr + 1;
  ------------------
  |  |  182|  1.58k|#define Feptr              F->eptr
  ------------------
 6305|  1.58k|#ifdef SUPPORT_UNICODE
 6306|  1.58k|      if (utf)
  ------------------
  |  Branch (6306:11): [True: 1.11k, False: 463]
  ------------------
 6307|  1.11k|        {
 6308|  1.11k|        FORWARDCHARTEST(nextptr, mb->end_subject);
  ------------------
  |  |  349|  1.13k|#define FORWARDCHARTEST(eptr,end) while(eptr < end && (*eptr & 0xc0u) == 0x80u) eptr++
  |  |  ------------------
  |  |  |  Branch (349:41): [True: 1.13k, False: 3]
  |  |  |  Branch (349:55): [True: 19, False: 1.11k]
  |  |  ------------------
  ------------------
 6309|  1.11k|        GETCHAR(fc, Feptr);
  ------------------
  |  |  302|  1.11k|  c = *eptr; \
  |  |  303|  1.11k|  if (c >= 0xc0u) GETUTF8(c, eptr);
  |  |  ------------------
  |  |  |  |  284|      7|    { \
  |  |  |  |  285|      7|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:9): [True: 1, False: 6]
  |  |  |  |  ------------------
  |  |  |  |  286|      7|      c = ((c & 0x1fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  287|      7|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (287:14): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  |  288|      6|      c = ((c & 0x0fu) << 12) | ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  289|      6|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (289:14): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  290|      6|      c = ((c & 0x07u) << 18) | ((eptr[1] & 0x3fu) << 12) | \
  |  |  |  |  291|      6|      ((eptr[2] & 0x3fu) << 6) | (eptr[3] & 0x3fu); \
  |  |  |  |  292|      6|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (292:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  293|      0|      c = ((c & 0x03u) << 24) | ((eptr[1] & 0x3fu) << 18) | \
  |  |  |  |  294|      0|          ((eptr[2] & 0x3fu) << 12) | ((eptr[3] & 0x3fu) << 6) | \
  |  |  |  |  295|      0|          (eptr[4] & 0x3fu); \
  |  |  |  |  296|      0|    else \
  |  |  |  |  297|      0|      c = ((c & 0x01u) << 30) | ((eptr[1] & 0x3fu) << 24) | \
  |  |  |  |  298|      0|          ((eptr[2] & 0x3fu) << 18) | ((eptr[3] & 0x3fu) << 12) | \
  |  |  |  |  299|      0|          ((eptr[4] & 0x3fu) << 6) | (eptr[5] & 0x3fu); \
  |  |  |  |  300|      7|    }
  |  |  ------------------
  |  |  |  Branch (303:7): [True: 7, False: 1.11k]
  |  |  ------------------
  ------------------
 6310|  1.11k|        }
 6311|    463|      else
 6312|    463|#endif  /* SUPPORT_UNICODE */
 6313|    463|      fc = *Feptr;
  ------------------
  |  |  182|    463|#define Feptr              F->eptr
  ------------------
 6314|  1.58k|      if (nextptr > mb->last_used_ptr) mb->last_used_ptr = nextptr;
  ------------------
  |  Branch (6314:11): [True: 1.56k, False: 15]
  ------------------
 6315|  1.58k|#ifdef SUPPORT_UNICODE
 6316|  1.58k|      if (Fop == OP_UCP_WORD_BOUNDARY || Fop == OP_NOT_UCP_WORD_BOUNDARY)
  ------------------
  |  |  191|  1.58k|#define Fop                F->op
  ------------------
                    if (Fop == OP_UCP_WORD_BOUNDARY || Fop == OP_NOT_UCP_WORD_BOUNDARY)
  ------------------
  |  |  191|    998|#define Fop                F->op
  ------------------
  |  Branch (6316:11): [True: 582, False: 998]
  |  Branch (6316:42): [True: 535, False: 463]
  ------------------
 6317|  1.11k|        {
 6318|  1.11k|        int chartype = UCD_CHARTYPE(fc);
  ------------------
  |  | 1884|  1.11k|#define UCD_CHARTYPE(ch)    GET_UCD(ch)->chartype
  |  |  ------------------
  |  |  |  | 1873|  1.11k|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|  1.11k|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  1.11k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|  1.11k|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.11k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.11k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.11k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|  1.11k|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  1.11k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|  1.11k|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.11k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.11k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.11k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|  1.11k|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|  1.11k|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|  1.11k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|  1.11k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|  1.11k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  1.11k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|  1.11k|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  1.11k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|  1.11k|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6319|  1.11k|        int category = PRIV(ucp_gentype)[chartype];
  ------------------
  |  |  195|  1.11k|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|  1.11k|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|  1.11k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|  1.11k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|  1.11k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6320|  1.11k|        cur_is_word = (category == ucp_L || category == ucp_N ||
  ------------------
  |  Branch (6320:24): [True: 226, False: 891]
  |  Branch (6320:45): [True: 88, False: 803]
  ------------------
 6321|    803|          chartype == ucp_Mn || chartype == ucp_Pc);
  ------------------
  |  Branch (6321:11): [True: 0, False: 803]
  |  Branch (6321:33): [True: 9, False: 794]
  ------------------
 6322|  1.11k|        }
 6323|    463|      else
 6324|    463|#endif  /* SUPPORT_UNICODE */
 6325|    463|      cur_is_word = CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0;
  ------------------
  |  |  217|    926|#define CHMAX_255(c) ((c) <= 255u)
  |  |  ------------------
  |  |  |  Branch (217:22): [True: 463, False: 0]
  |  |  ------------------
  ------------------
                    cur_is_word = CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0;
  ------------------
  |  |  601|    463|#define ctype_word     0x10    /* alphanumeric or '_' */
  ------------------
  |  Branch (6325:38): [True: 139, False: 324]
  ------------------
 6326|  1.58k|      }
 6327|       |
 6328|       |    /* Now see if the situation is what we want */
 6329|       |
 6330|  1.58k|    if ((*Fecode++ == OP_WORD_BOUNDARY || Fop == OP_UCP_WORD_BOUNDARY)?
  ------------------
  |  |  181|  1.58k|#define Fecode             F->ecode
  ------------------
                  if ((*Fecode++ == OP_WORD_BOUNDARY || Fop == OP_UCP_WORD_BOUNDARY)?
  ------------------
  |  |  191|  1.40k|#define Fop                F->op
  ------------------
  |  Branch (6330:9): [True: 817, False: 767]
  |  Branch (6330:10): [True: 175, False: 1.40k]
  |  Branch (6330:43): [True: 583, False: 826]
  ------------------
 6331|    826|         cur_is_word == prev_is_word : cur_is_word != prev_is_word)
 6332|    817|      RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|    817|  {\
  |  |  560|    817|  rrc = ra;\
  |  |  561|    817|  goto RETURN_SWITCH;\
  |  |  562|    817|  }
  ------------------
 6333|    767|    break;
 6334|       |
 6335|       |
 6336|       |    /* ===================================================================== */
 6337|       |    /* Backtracking (*VERB)s, with and without arguments. Note that if the
 6338|       |    pattern is successfully matched, we do not come back from RMATCH. */
 6339|       |
 6340|      0|    case OP_MARK:
  ------------------
  |  Branch (6340:5): [True: 0, False: 28.4M]
  ------------------
 6341|      0|    Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
                  Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6342|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode] + Fecode[1], RM12);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6343|       |
 6344|       |    /* A return of MATCH_SKIP_ARG means that matching failed at SKIP with an
 6345|       |    argument, and we must check whether that argument matches this MARK's
 6346|       |    argument. It is passed back in mb->verb_skip_ptr. If it does match, we
 6347|       |    return MATCH_SKIP with mb->verb_skip_ptr now pointing to the subject
 6348|       |    position that corresponds to this mark. Otherwise, pass back the return
 6349|       |    code unaltered. */
 6350|       |
 6351|      0|    if (rrc == MATCH_SKIP_ARG &&
  ------------------
  |  |  100|      0|#define MATCH_SKIP_ARG     (-994)
  ------------------
  |  Branch (6351:9): [True: 0, False: 0]
  ------------------
 6352|      0|             PRIV(strcmp)(Fecode + 2, mb->verb_skip_ptr) == 0)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2032|      0|#define _pcre2_strcmp                PCRE2_SUFFIX(_pcre2_strcmp_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                           PRIV(strcmp)(Fecode + 2, mb->verb_skip_ptr) == 0)
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
  |  Branch (6352:14): [True: 0, False: 0]
  ------------------
 6353|      0|      {
 6354|      0|      mb->verb_skip_ptr = Feptr;   /* Pass back current position */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 6355|      0|      RRETURN(MATCH_SKIP);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6356|      0|      }
 6357|      0|    RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6358|       |
 6359|      0|    case OP_FAIL:
  ------------------
  |  Branch (6359:5): [True: 0, False: 28.4M]
  ------------------
 6360|      0|    RRETURN(MATCH_NOMATCH);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6361|       |
 6362|       |    /* Record the current recursing group number in mb->verb_current_recurse
 6363|       |    when a backtracking return such as MATCH_COMMIT is given. This enables the
 6364|       |    recurse processing to catch verbs from within the recursion. */
 6365|       |
 6366|      0|    case OP_COMMIT:
  ------------------
  |  Branch (6366:5): [True: 0, False: 28.4M]
  ------------------
 6367|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM13);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6368|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6368:9): [True: 0, False: 0]
  ------------------
 6369|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6370|      0|    RRETURN(MATCH_COMMIT);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6371|       |
 6372|      0|    case OP_COMMIT_ARG:
  ------------------
  |  Branch (6372:5): [True: 0, False: 28.4M]
  ------------------
 6373|      0|    Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
                  Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6374|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode] + Fecode[1], RM36);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6375|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6375:9): [True: 0, False: 0]
  ------------------
 6376|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6377|      0|    RRETURN(MATCH_COMMIT);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6378|       |
 6379|      0|    case OP_PRUNE:
  ------------------
  |  Branch (6379:5): [True: 0, False: 28.4M]
  ------------------
 6380|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM14);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6381|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6381:9): [True: 0, False: 0]
  ------------------
 6382|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6383|      0|    RRETURN(MATCH_PRUNE);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6384|       |
 6385|      0|    case OP_PRUNE_ARG:
  ------------------
  |  Branch (6385:5): [True: 0, False: 28.4M]
  ------------------
 6386|      0|    Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
                  Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6387|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode] + Fecode[1], RM15);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6388|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6388:9): [True: 0, False: 0]
  ------------------
 6389|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6390|      0|    RRETURN(MATCH_PRUNE);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6391|       |
 6392|      0|    case OP_SKIP:
  ------------------
  |  Branch (6392:5): [True: 0, False: 28.4M]
  ------------------
 6393|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM16);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6394|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6394:9): [True: 0, False: 0]
  ------------------
 6395|      0|    mb->verb_skip_ptr = Feptr;   /* Pass back current position */
  ------------------
  |  |  182|      0|#define Feptr              F->eptr
  ------------------
 6396|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6397|      0|    RRETURN(MATCH_SKIP);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6398|       |
 6399|       |    /* Note that, for Perl compatibility, SKIP with an argument does NOT set
 6400|       |    nomatch_mark. When a pattern match ends with a SKIP_ARG for which there was
 6401|       |    not a matching mark, we have to re-run the match, ignoring the SKIP_ARG
 6402|       |    that failed and any that precede it (either they also failed, or were not
 6403|       |    triggered). To do this, we maintain a count of executed SKIP_ARGs. If a
 6404|       |    SKIP_ARG gets to top level, the match is re-run with mb->ignore_skip_arg
 6405|       |    set to the count of the one that failed. */
 6406|       |
 6407|      0|    case OP_SKIP_ARG:
  ------------------
  |  Branch (6407:5): [True: 0, False: 28.4M]
  ------------------
 6408|      0|    mb->skip_arg_count++;
 6409|      0|    if (mb->skip_arg_count <= mb->ignore_skip_arg)
  ------------------
  |  Branch (6409:9): [True: 0, False: 0]
  ------------------
 6410|      0|      {
 6411|      0|      Fecode += PRIV(OP_lengths)[*Fecode] + Fecode[1];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += PRIV(OP_lengths)[*Fecode] + Fecode[1];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    Fecode += PRIV(OP_lengths)[*Fecode] + Fecode[1];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
                    Fecode += PRIV(OP_lengths)[*Fecode] + Fecode[1];
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6412|      0|      break;
 6413|      0|      }
 6414|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode] + Fecode[1], RM17);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6415|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6415:9): [True: 0, False: 0]
  ------------------
 6416|       |
 6417|       |    /* Pass back the current skip name and return the special MATCH_SKIP_ARG
 6418|       |    return code. This will either be caught by a matching MARK, or get to the
 6419|       |    top, where it causes a rematch with mb->ignore_skip_arg set to the value of
 6420|       |    mb->skip_arg_count. */
 6421|       |
 6422|      0|    mb->verb_skip_ptr = Fecode + 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6423|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6424|      0|    RRETURN(MATCH_SKIP_ARG);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6425|       |
 6426|       |    /* For THEN (and THEN_ARG) we pass back the address of the opcode, so that
 6427|       |    the branch in which it occurs can be determined. */
 6428|       |
 6429|      0|    case OP_THEN:
  ------------------
  |  Branch (6429:5): [True: 0, False: 28.4M]
  ------------------
 6430|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode], RM18);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6431|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6431:9): [True: 0, False: 0]
  ------------------
 6432|      0|    mb->verb_ecode_ptr = Fecode;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6433|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6434|      0|    RRETURN(MATCH_THEN);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6435|       |
 6436|      0|    case OP_THEN_ARG:
  ------------------
  |  Branch (6436:5): [True: 0, False: 28.4M]
  ------------------
 6437|      0|    Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  186|      0|#define Fmark              F->mark
  ------------------
                  Fmark = mb->nomatch_mark = Fecode + 2;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6438|      0|    RMATCH(Fecode + PRIV(OP_lengths)[*Fecode] + Fecode[1], RM19);
  ------------------
  |  |  551|      0|  {\
  |  |  552|      0|  start_ecode = ra;\
  |  |  553|      0|  Freturn_id = rb;\
  |  |  ------------------
  |  |  |  |  193|      0|#define Freturn_id         F->return_id
  |  |  ------------------
  |  |  554|      0|  goto MATCH_RECURSE;\
  |  |  555|      0|  L_##rb:;\
  |  |  556|      0|  }
  ------------------
 6439|      0|    if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |   88|      0|#define MATCH_NOMATCH      0
  ------------------
                  if (rrc != MATCH_NOMATCH) RRETURN(rrc);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
  |  Branch (6439:9): [True: 0, False: 0]
  ------------------
 6440|      0|    mb->verb_ecode_ptr = Fecode;
  ------------------
  |  |  181|      0|#define Fecode             F->ecode
  ------------------
 6441|      0|    mb->verb_current_recurse = Fcurrent_recurse;
  ------------------
  |  |  180|      0|#define Fcurrent_recurse   F->current_recurse
  ------------------
 6442|      0|    RRETURN(MATCH_THEN);
  ------------------
  |  |  559|      0|  {\
  |  |  560|      0|  rrc = ra;\
  |  |  561|      0|  goto RETURN_SWITCH;\
  |  |  562|      0|  }
  ------------------
 6443|       |
 6444|       |
 6445|       |    /* ===================================================================== */
 6446|       |    /* There's been some horrible disaster. Arrival here can only mean there is
 6447|       |    something seriously wrong in the code above or the OP_xxx definitions. */
 6448|       |
 6449|      0|    default:
  ------------------
  |  Branch (6449:5): [True: 0, False: 28.4M]
  ------------------
 6450|      0|    return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 6451|  28.4M|    }
 6452|       |
 6453|       |  /* Do not insert any code in here without much thought; it is assumed
 6454|       |  that "continue" in the code above comes out to here to repeat the main
 6455|       |  loop. */
 6456|       |
 6457|  28.4M|  }  /* End of main loop */
 6458|       |/* Control never reaches here */
 6459|       |
 6460|       |
 6461|       |/* ========================================================================= */
 6462|       |/* The RRETURN() macro jumps here. The number that is saved in Freturn_id
 6463|       |indicates which label we actually want to return to. The value in Frdepth is
 6464|       |the index number of the frame in the vector. The return value has been placed
 6465|       |in rrc. */
 6466|       |
 6467|      0|#define LBL(val) case val: goto L_RM##val;
 6468|       |
 6469|  23.4M|RETURN_SWITCH:
 6470|  23.4M|if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|  23.4M|#define Feptr              F->eptr
  ------------------
              if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
  ------------------
  |  |  182|  17.6k|#define Feptr              F->eptr
  ------------------
  |  Branch (6470:5): [True: 17.6k, False: 23.4M]
  ------------------
 6471|  23.4M|if (Frdepth == 0) return rrc;                     /* Exit from the top level */
  ------------------
  |  |  187|  23.4M|#define Frdepth            F->rdepth
  ------------------
  |  Branch (6471:5): [True: 6.31k, False: 23.4M]
  ------------------
 6472|  23.4M|F = (heapframe *)((char *)F - Fback_frame);       /* Backtrack */
  ------------------
  |  |  178|  23.4M|#define Fback_frame        F->back_frame
  ------------------
 6473|  23.4M|mb->cb->callout_flags |= PCRE2_CALLOUT_BACKTRACK; /* Note for callouts */
  ------------------
  |  |  521|  23.4M|#define PCRE2_CALLOUT_BACKTRACK     0x00000002u  /* Set after a backtrack */
  ------------------
 6474|       |
 6475|       |#ifdef DEBUG_SHOW_RMATCH
 6476|       |fprintf(stderr, "++ RETURN %d to RM%d\n", rrc, Freturn_id);
 6477|       |#endif
 6478|       |
 6479|  23.4M|switch (Freturn_id)
  ------------------
  |  |  193|  23.4M|#define Freturn_id         F->return_id
  ------------------
 6480|  23.4M|  {
 6481|  12.7k|  LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      2|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 2, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|  12.7k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 12.7k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 1) LBL( 2) LBL( 3) LBL( 4) LBL( 5) LBL( 6) LBL( 7) LBL( 8)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
 6482|     46|  LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|     46|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 46, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL( 9) LBL(10) LBL(11) LBL(12) LBL(13) LBL(14) LBL(15) LBL(16)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
 6483|    772|  LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|    772|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 772, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(17) LBL(18) LBL(19) LBL(20) LBL(21) LBL(22) LBL(23) LBL(24)
  ------------------
  |  | 6467|    567|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 567, False: 23.4M]
  |  |  ------------------
  ------------------
 6484|  19.2k|  LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|  19.2k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 19.2k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|     14|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 14, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|     27|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 27, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|  2.26k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 2.26k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|     17|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 17, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(25) LBL(26) LBL(27) LBL(28) LBL(29) LBL(30) LBL(31) LBL(32)
  ------------------
  |  | 6467|  6.99k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 6.99k, False: 23.4M]
  |  |  ------------------
  ------------------
 6485|   194k|  LBL(33) LBL(34) LBL(35) LBL(36) LBL(37)
  ------------------
  |  | 6467|  61.4k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 61.4k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(33) LBL(34) LBL(35) LBL(36) LBL(37)
  ------------------
  |  | 6467|   194k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 194k, False: 23.2M]
  |  |  ------------------
  ------------------
                LBL(33) LBL(34) LBL(35) LBL(36) LBL(37)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(33) LBL(34) LBL(35) LBL(36) LBL(37)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(33) LBL(34) LBL(35) LBL(36) LBL(37)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
 6486|       |
 6487|      0|#ifdef SUPPORT_WIDE_CHARS
 6488|    592|  LBL(100) LBL(101)
  ------------------
  |  | 6467|    327|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 327, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(100) LBL(101)
  ------------------
  |  | 6467|    592|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 592, False: 23.4M]
  |  |  ------------------
  ------------------
 6489|      0|#endif
 6490|       |
 6491|      0|#ifdef SUPPORT_UNICODE
 6492|  2.86k|  LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|    727|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 727, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|     12|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 12, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|  2.86k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 2.86k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(200) LBL(201) LBL(202) LBL(203) LBL(204) LBL(205) LBL(206)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
 6493|  1.46k|  LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|  1.46k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 1.46k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(207) LBL(208) LBL(209) LBL(210) LBL(211) LBL(212) LBL(213)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
 6494|  1.23M|  LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|  1.23M|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 1.23M, False: 22.2M]
  |  |  ------------------
  ------------------
                LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|    218|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 218, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|  2.20k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 2.20k, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|   122k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 122k, False: 23.3M]
  |  |  ------------------
  ------------------
                LBL(214) LBL(215) LBL(216) LBL(217) LBL(218) LBL(219) LBL(220)
  ------------------
  |  | 6467|  15.1k|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 15.1k, False: 23.4M]
  |  |  ------------------
  ------------------
 6495|  20.6M|  LBL(221) LBL(222) LBL(223) LBL(224) LBL(225)
  ------------------
  |  | 6467|  20.6M|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 20.6M, False: 2.83M]
  |  |  ------------------
  ------------------
                LBL(221) LBL(222) LBL(223) LBL(224) LBL(225)
  ------------------
  |  | 6467|  1.15M|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 1.15M, False: 22.3M]
  |  |  ------------------
  ------------------
                LBL(221) LBL(222) LBL(223) LBL(224) LBL(225)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(221) LBL(222) LBL(223) LBL(224) LBL(225)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
                LBL(221) LBL(222) LBL(223) LBL(224) LBL(225)
  ------------------
  |  | 6467|      0|#define LBL(val) case val: goto L_RM##val;
  |  |  ------------------
  |  |  |  Branch (6467:18): [True: 0, False: 23.4M]
  |  |  ------------------
  ------------------
 6496|      0|#endif
 6497|       |
 6498|      0|  default:
  ------------------
  |  Branch (6498:3): [True: 0, False: 23.4M]
  ------------------
 6499|      0|  return PCRE2_ERROR_INTERNAL;
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
 6500|  23.4M|  }
 6501|  23.4M|#undef LBL
 6502|  23.4M|}

php_pcre2_match_data_create:
   59|      2|{
   60|      2|pcre2_match_data *yield;
  ------------------
  |  |  844|      2|#define pcre2_match_data               PCRE2_SUFFIX(pcre2_match_data_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|      2|if (oveccount < 1) oveccount = 1;
  ------------------
  |  Branch (61:5): [True: 0, False: 2]
  ------------------
   62|      2|if (oveccount > UINT16_MAX) oveccount = UINT16_MAX;
  ------------------
  |  Branch (62:5): [True: 0, False: 2]
  ------------------
   63|      2|yield = PRIV(memctl_malloc)(
  ------------------
  |  |  195|      2|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2029|      2|#define _pcre2_memctl_malloc         PCRE2_SUFFIX(_pcre2_memctl_malloc_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   64|      2|  offsetof(pcre2_match_data, ovector) + 2*oveccount*sizeof(PCRE2_SIZE),
   65|      2|  (pcre2_memctl *)gcontext);
   66|      2|if (yield == NULL) return NULL;
  ------------------
  |  Branch (66:5): [True: 0, False: 2]
  ------------------
   67|      2|yield->oveccount = oveccount;
   68|      2|yield->flags = 0;
   69|       |yield->heapframes = NULL;
   70|      2|yield->heapframes_size = 0;
   71|      2|return yield;
   72|      2|}
php_pcre2_get_mark:
  120|      2|{
  121|      2|return match_data->mark;
  122|      2|}
php_pcre2_get_ovector_pointer:
  132|    322|{
  133|    322|return match_data->ovector;
  134|    322|}

_pcre2_ord2utf_8:
   82|  7.82k|{
   83|       |/* Convert to UTF-8 */
   84|       |
   85|  7.82k|#if PCRE2_CODE_UNIT_WIDTH == 8
   86|  7.82k|int i, j;
   87|  8.37k|for (i = 0; i < PRIV(utf8_table1_size); i++)
  ------------------
  |  |  195|  8.37k|#define PRIV(name) _pcre2_##name
  ------------------
  |  Branch (87:13): [True: 8.37k, False: 0]
  ------------------
   88|  8.37k|  if ((int)cvalue <= PRIV(utf8_table1)[i]) break;
  ------------------
  |  |  195|  8.37k|#define PRIV(name) _pcre2_##name
  ------------------
  |  Branch (88:7): [True: 7.82k, False: 544]
  ------------------
   89|  7.82k|buffer += i;
   90|  8.37k|for (j = i; j > 0; j--)
  ------------------
  |  Branch (90:13): [True: 544, False: 7.82k]
  ------------------
   91|    544| {
   92|    544| *buffer-- = 0x80 | (cvalue & 0x3f);
   93|    544| cvalue >>= 6;
   94|    544| }
   95|  7.82k|*buffer = PRIV(utf8_table2)[i] | cvalue;
  ------------------
  |  |  195|  7.82k|#define PRIV(name) _pcre2_##name
  ------------------
   96|  7.82k|return i + 1;
   97|       |
   98|       |/* Convert to UTF-16 */
   99|       |
  100|       |#elif PCRE2_CODE_UNIT_WIDTH == 16
  101|       |if (cvalue <= 0xffff)
  102|       |  {
  103|       |  *buffer = (PCRE2_UCHAR)cvalue;
  104|       |  return 1;
  105|       |  }
  106|       |cvalue -= 0x10000;
  107|       |*buffer++ = 0xd800 | (cvalue >> 10);
  108|       |*buffer = 0xdc00 | (cvalue & 0x3ff);
  109|       |return 2;
  110|       |
  111|       |/* Convert to UTF-32 */
  112|       |
  113|       |#else
  114|       |*buffer = (PCRE2_UCHAR)cvalue;
  115|       |return 1;
  116|       |#endif
  117|  7.82k|}

php_pcre2_pattern_info:
   66|    596|{
   67|    596|const pcre2_real_code *re = (pcre2_real_code *)code;
   68|       |
   69|    596|if (where == NULL)   /* Requests field length */
  ------------------
  |  Branch (69:5): [True: 0, False: 596]
  ------------------
   70|      0|  {
   71|      0|  switch(what)
  ------------------
  |  Branch (71:10): [True: 0, False: 0]
  ------------------
   72|      0|    {
   73|      0|    case PCRE2_INFO_ALLOPTIONS:
  ------------------
  |  |  414|      0|#define PCRE2_INFO_ALLOPTIONS            0
  ------------------
  |  Branch (73:5): [True: 0, False: 0]
  ------------------
   74|      0|    case PCRE2_INFO_ARGOPTIONS:
  ------------------
  |  |  415|      0|#define PCRE2_INFO_ARGOPTIONS            1
  ------------------
  |  Branch (74:5): [True: 0, False: 0]
  ------------------
   75|      0|    case PCRE2_INFO_BACKREFMAX:
  ------------------
  |  |  416|      0|#define PCRE2_INFO_BACKREFMAX            2
  ------------------
  |  Branch (75:5): [True: 0, False: 0]
  ------------------
   76|      0|    case PCRE2_INFO_BSR:
  ------------------
  |  |  417|      0|#define PCRE2_INFO_BSR                   3
  ------------------
  |  Branch (76:5): [True: 0, False: 0]
  ------------------
   77|      0|    case PCRE2_INFO_CAPTURECOUNT:
  ------------------
  |  |  418|      0|#define PCRE2_INFO_CAPTURECOUNT          4
  ------------------
  |  Branch (77:5): [True: 0, False: 0]
  ------------------
   78|      0|    case PCRE2_INFO_DEPTHLIMIT:
  ------------------
  |  |  435|      0|#define PCRE2_INFO_DEPTHLIMIT           21
  ------------------
  |  Branch (78:5): [True: 0, False: 0]
  ------------------
   79|      0|    case PCRE2_INFO_EXTRAOPTIONS:
  ------------------
  |  |  441|      0|#define PCRE2_INFO_EXTRAOPTIONS         26
  ------------------
  |  Branch (79:5): [True: 0, False: 0]
  ------------------
   80|      0|    case PCRE2_INFO_FIRSTCODETYPE:
  ------------------
  |  |  420|      0|#define PCRE2_INFO_FIRSTCODETYPE         6
  ------------------
  |  Branch (80:5): [True: 0, False: 0]
  ------------------
   81|      0|    case PCRE2_INFO_FIRSTCODEUNIT:
  ------------------
  |  |  419|      0|#define PCRE2_INFO_FIRSTCODEUNIT         5
  ------------------
  |  Branch (81:5): [True: 0, False: 0]
  ------------------
   82|      0|    case PCRE2_INFO_HASBACKSLASHC:
  ------------------
  |  |  438|      0|#define PCRE2_INFO_HASBACKSLASHC        23
  ------------------
  |  Branch (82:5): [True: 0, False: 0]
  ------------------
   83|      0|    case PCRE2_INFO_HASCRORLF:
  ------------------
  |  |  422|      0|#define PCRE2_INFO_HASCRORLF             8
  ------------------
  |  Branch (83:5): [True: 0, False: 0]
  ------------------
   84|      0|    case PCRE2_INFO_HEAPLIMIT:
  ------------------
  |  |  440|      0|#define PCRE2_INFO_HEAPLIMIT            25
  ------------------
  |  Branch (84:5): [True: 0, False: 0]
  ------------------
   85|      0|    case PCRE2_INFO_JCHANGED:
  ------------------
  |  |  423|      0|#define PCRE2_INFO_JCHANGED              9
  ------------------
  |  Branch (85:5): [True: 0, False: 0]
  ------------------
   86|      0|    case PCRE2_INFO_LASTCODETYPE:
  ------------------
  |  |  426|      0|#define PCRE2_INFO_LASTCODETYPE         12
  ------------------
  |  Branch (86:5): [True: 0, False: 0]
  ------------------
   87|      0|    case PCRE2_INFO_LASTCODEUNIT:
  ------------------
  |  |  425|      0|#define PCRE2_INFO_LASTCODEUNIT         11
  ------------------
  |  Branch (87:5): [True: 0, False: 0]
  ------------------
   88|      0|    case PCRE2_INFO_MATCHEMPTY:
  ------------------
  |  |  427|      0|#define PCRE2_INFO_MATCHEMPTY           13
  ------------------
  |  Branch (88:5): [True: 0, False: 0]
  ------------------
   89|      0|    case PCRE2_INFO_MATCHLIMIT:
  ------------------
  |  |  428|      0|#define PCRE2_INFO_MATCHLIMIT           14
  ------------------
  |  Branch (89:5): [True: 0, False: 0]
  ------------------
   90|      0|    case PCRE2_INFO_MAXLOOKBEHIND:
  ------------------
  |  |  429|      0|#define PCRE2_INFO_MAXLOOKBEHIND        15
  ------------------
  |  Branch (90:5): [True: 0, False: 0]
  ------------------
   91|      0|    case PCRE2_INFO_MINLENGTH:
  ------------------
  |  |  430|      0|#define PCRE2_INFO_MINLENGTH            16
  ------------------
  |  Branch (91:5): [True: 0, False: 0]
  ------------------
   92|      0|    case PCRE2_INFO_NAMEENTRYSIZE:
  ------------------
  |  |  432|      0|#define PCRE2_INFO_NAMEENTRYSIZE        18
  ------------------
  |  Branch (92:5): [True: 0, False: 0]
  ------------------
   93|      0|    case PCRE2_INFO_NAMECOUNT:
  ------------------
  |  |  431|      0|#define PCRE2_INFO_NAMECOUNT            17
  ------------------
  |  Branch (93:5): [True: 0, False: 0]
  ------------------
   94|      0|    case PCRE2_INFO_NEWLINE:
  ------------------
  |  |  434|      0|#define PCRE2_INFO_NEWLINE              20
  ------------------
  |  Branch (94:5): [True: 0, False: 0]
  ------------------
   95|      0|    return sizeof(uint32_t);
   96|       |
   97|      0|    case PCRE2_INFO_FIRSTBITMAP:
  ------------------
  |  |  421|      0|#define PCRE2_INFO_FIRSTBITMAP           7
  ------------------
  |  Branch (97:5): [True: 0, False: 0]
  ------------------
   98|      0|    return sizeof(const uint8_t *);
   99|       |
  100|      0|    case PCRE2_INFO_JITSIZE:
  ------------------
  |  |  424|      0|#define PCRE2_INFO_JITSIZE              10
  ------------------
  |  Branch (100:5): [True: 0, False: 0]
  ------------------
  101|      0|    case PCRE2_INFO_SIZE:
  ------------------
  |  |  437|      0|#define PCRE2_INFO_SIZE                 22
  ------------------
  |  Branch (101:5): [True: 0, False: 0]
  ------------------
  102|      0|    case PCRE2_INFO_FRAMESIZE:
  ------------------
  |  |  439|      0|#define PCRE2_INFO_FRAMESIZE            24
  ------------------
  |  Branch (102:5): [True: 0, False: 0]
  ------------------
  103|      0|    return sizeof(size_t);
  104|       |
  105|      0|    case PCRE2_INFO_NAMETABLE:
  ------------------
  |  |  433|      0|#define PCRE2_INFO_NAMETABLE            19
  ------------------
  |  Branch (105:5): [True: 0, False: 0]
  ------------------
  106|      0|    return sizeof(PCRE2_SPTR);
  107|      0|    }
  108|      0|  }
  109|       |
  110|    596|if (re == NULL) return PCRE2_ERROR_NULL;
  ------------------
  |  |  392|      0|#define PCRE2_ERROR_NULL              (-51)
  ------------------
  |  Branch (110:5): [True: 0, False: 596]
  ------------------
  111|       |
  112|       |/* Check that the first field in the block is the magic number. If it is not,
  113|       |return with PCRE2_ERROR_BADMAGIC. */
  114|       |
  115|    596|if (re->magic_number != MAGIC_NUMBER) return PCRE2_ERROR_BADMAGIC;
  ------------------
  |  |  564|    596|#define MAGIC_NUMBER  0x50435245UL   /* 'PCRE' */
  ------------------
              if (re->magic_number != MAGIC_NUMBER) return PCRE2_ERROR_BADMAGIC;
  ------------------
  |  |  372|      0|#define PCRE2_ERROR_BADMAGIC          (-31)
  ------------------
  |  Branch (115:5): [True: 0, False: 596]
  ------------------
  116|       |
  117|       |/* Check that this pattern was compiled in the correct bit mode */
  118|       |
  119|    596|if ((re->flags & (PCRE2_CODE_UNIT_WIDTH/8)) == 0) return PCRE2_ERROR_BADMODE;
  ------------------
  |  | 1860|    596|#define PCRE2_CODE_UNIT_WIDTH 8
  ------------------
              if ((re->flags & (PCRE2_CODE_UNIT_WIDTH/8)) == 0) return PCRE2_ERROR_BADMODE;
  ------------------
  |  |  373|      0|#define PCRE2_ERROR_BADMODE           (-32)
  ------------------
  |  Branch (119:5): [True: 0, False: 596]
  ------------------
  120|       |
  121|    596|switch(what)
  122|    596|  {
  123|      0|  case PCRE2_INFO_ALLOPTIONS:
  ------------------
  |  |  414|      0|#define PCRE2_INFO_ALLOPTIONS            0
  ------------------
  |  Branch (123:3): [True: 0, False: 596]
  ------------------
  124|      0|  *((uint32_t *)where) = re->overall_options;
  125|      0|  break;
  126|       |
  127|      0|  case PCRE2_INFO_ARGOPTIONS:
  ------------------
  |  |  415|      0|#define PCRE2_INFO_ARGOPTIONS            1
  ------------------
  |  Branch (127:3): [True: 0, False: 596]
  ------------------
  128|      0|  *((uint32_t *)where) = re->compile_options;
  129|      0|  break;
  130|       |
  131|      0|  case PCRE2_INFO_BACKREFMAX:
  ------------------
  |  |  416|      0|#define PCRE2_INFO_BACKREFMAX            2
  ------------------
  |  Branch (131:3): [True: 0, False: 596]
  ------------------
  132|      0|  *((uint32_t *)where) = re->top_backref;
  133|      0|  break;
  134|       |
  135|      0|  case PCRE2_INFO_BSR:
  ------------------
  |  |  417|      0|#define PCRE2_INFO_BSR                   3
  ------------------
  |  Branch (135:3): [True: 0, False: 596]
  ------------------
  136|      0|  *((uint32_t *)where) = re->bsr_convention;
  137|      0|  break;
  138|       |
  139|    298|  case PCRE2_INFO_CAPTURECOUNT:
  ------------------
  |  |  418|    298|#define PCRE2_INFO_CAPTURECOUNT          4
  ------------------
  |  Branch (139:3): [True: 298, False: 298]
  ------------------
  140|    298|  *((uint32_t *)where) = re->top_bracket;
  141|    298|  break;
  142|       |
  143|      0|  case PCRE2_INFO_DEPTHLIMIT:
  ------------------
  |  |  435|      0|#define PCRE2_INFO_DEPTHLIMIT           21
  ------------------
  |  Branch (143:3): [True: 0, False: 596]
  ------------------
  144|      0|  *((uint32_t *)where) = re->limit_depth;
  145|      0|  if (re->limit_depth == UINT32_MAX) return PCRE2_ERROR_UNSET;
  ------------------
  |  |  397|      0|#define PCRE2_ERROR_UNSET             (-55)
  ------------------
  |  Branch (145:7): [True: 0, False: 0]
  ------------------
  146|      0|  break;
  147|       |
  148|      0|  case PCRE2_INFO_EXTRAOPTIONS:
  ------------------
  |  |  441|      0|#define PCRE2_INFO_EXTRAOPTIONS         26
  ------------------
  |  Branch (148:3): [True: 0, False: 596]
  ------------------
  149|      0|  *((uint32_t *)where) = re->extra_options;
  150|      0|  break;
  151|       |
  152|      0|  case PCRE2_INFO_FIRSTCODETYPE:
  ------------------
  |  |  420|      0|#define PCRE2_INFO_FIRSTCODETYPE         6
  ------------------
  |  Branch (152:3): [True: 0, False: 596]
  ------------------
  153|      0|  *((uint32_t *)where) = ((re->flags & PCRE2_FIRSTSET) != 0)? 1 :
  ------------------
  |  |  529|      0|#define PCRE2_FIRSTSET      0x00000010  /* first_code unit is set */
  ------------------
  |  Branch (153:26): [True: 0, False: 0]
  ------------------
  154|      0|                         ((re->flags & PCRE2_STARTLINE) != 0)? 2 : 0;
  ------------------
  |  |  534|      0|#define PCRE2_STARTLINE     0x00000200  /* start after \n for multiline */
  ------------------
  |  Branch (154:26): [True: 0, False: 0]
  ------------------
  155|      0|  break;
  156|       |
  157|      0|  case PCRE2_INFO_FIRSTCODEUNIT:
  ------------------
  |  |  419|      0|#define PCRE2_INFO_FIRSTCODEUNIT         5
  ------------------
  |  Branch (157:3): [True: 0, False: 596]
  ------------------
  158|      0|  *((uint32_t *)where) = ((re->flags & PCRE2_FIRSTSET) != 0)?
  ------------------
  |  |  529|      0|#define PCRE2_FIRSTSET      0x00000010  /* first_code unit is set */
  ------------------
  |  Branch (158:26): [True: 0, False: 0]
  ------------------
  159|      0|    re->first_codeunit : 0;
  160|      0|  break;
  161|       |
  162|      0|  case PCRE2_INFO_FIRSTBITMAP:
  ------------------
  |  |  421|      0|#define PCRE2_INFO_FIRSTBITMAP           7
  ------------------
  |  Branch (162:3): [True: 0, False: 596]
  ------------------
  163|      0|  *((const uint8_t **)where) = ((re->flags & PCRE2_FIRSTMAPSET) != 0)?
  ------------------
  |  |  531|      0|#define PCRE2_FIRSTMAPSET   0x00000040  /* bitmap of first code units is set */
  ------------------
  |  Branch (163:32): [True: 0, False: 0]
  ------------------
  164|      0|    &(re->start_bitmap[0]) : NULL;
  165|      0|  break;
  166|       |
  167|      0|  case PCRE2_INFO_FRAMESIZE:
  ------------------
  |  |  439|      0|#define PCRE2_INFO_FRAMESIZE            24
  ------------------
  |  Branch (167:3): [True: 0, False: 596]
  ------------------
  168|      0|  *((size_t *)where) = offsetof(heapframe, ovector) +
  169|      0|    re->top_bracket * 2 * sizeof(PCRE2_SIZE);
  170|      0|  break;
  171|       |
  172|      0|  case PCRE2_INFO_HASBACKSLASHC:
  ------------------
  |  |  438|      0|#define PCRE2_INFO_HASBACKSLASHC        23
  ------------------
  |  Branch (172:3): [True: 0, False: 596]
  ------------------
  173|      0|  *((uint32_t *)where) = (re->flags & PCRE2_HASBKC) != 0;
  ------------------
  |  |  547|      0|#define PCRE2_HASBKC        0x00400000  /* contains \C */
  ------------------
  174|      0|  break;
  175|       |
  176|      0|  case PCRE2_INFO_HASCRORLF:
  ------------------
  |  |  422|      0|#define PCRE2_INFO_HASCRORLF             8
  ------------------
  |  Branch (176:3): [True: 0, False: 596]
  ------------------
  177|      0|  *((uint32_t *)where) = (re->flags & PCRE2_HASCRORLF) != 0;
  ------------------
  |  |  536|      0|#define PCRE2_HASCRORLF     0x00000800  /* explicit \r or \n in pattern */
  ------------------
  178|      0|  break;
  179|       |
  180|      0|  case PCRE2_INFO_HEAPLIMIT:
  ------------------
  |  |  440|      0|#define PCRE2_INFO_HEAPLIMIT            25
  ------------------
  |  Branch (180:3): [True: 0, False: 596]
  ------------------
  181|      0|  *((uint32_t *)where) = re->limit_heap;
  182|      0|  if (re->limit_heap == UINT32_MAX) return PCRE2_ERROR_UNSET;
  ------------------
  |  |  397|      0|#define PCRE2_ERROR_UNSET             (-55)
  ------------------
  |  Branch (182:7): [True: 0, False: 0]
  ------------------
  183|      0|  break;
  184|       |
  185|      0|  case PCRE2_INFO_JCHANGED:
  ------------------
  |  |  423|      0|#define PCRE2_INFO_JCHANGED              9
  ------------------
  |  Branch (185:3): [True: 0, False: 596]
  ------------------
  186|      0|  *((uint32_t *)where) = (re->flags & PCRE2_JCHANGED) != 0;
  ------------------
  |  |  535|      0|#define PCRE2_JCHANGED      0x00000400  /* j option used in pattern */
  ------------------
  187|      0|  break;
  188|       |
  189|      0|  case PCRE2_INFO_JITSIZE:
  ------------------
  |  |  424|      0|#define PCRE2_INFO_JITSIZE              10
  ------------------
  |  Branch (189:3): [True: 0, False: 596]
  ------------------
  190|       |#ifdef SUPPORT_JIT
  191|       |  *((size_t *)where) = (re->executable_jit != NULL)?
  192|       |    PRIV(jit_get_size)(re->executable_jit) : 0;
  193|       |#else
  194|      0|  *((size_t *)where) = 0;
  195|      0|#endif
  196|      0|  break;
  197|       |
  198|      0|  case PCRE2_INFO_LASTCODETYPE:
  ------------------
  |  |  426|      0|#define PCRE2_INFO_LASTCODETYPE         12
  ------------------
  |  Branch (198:3): [True: 0, False: 596]
  ------------------
  199|      0|  *((uint32_t *)where) = ((re->flags & PCRE2_LASTSET) != 0)? 1 : 0;
  ------------------
  |  |  532|      0|#define PCRE2_LASTSET       0x00000080  /* last code unit is set */
  ------------------
  |  Branch (199:26): [True: 0, False: 0]
  ------------------
  200|      0|  break;
  201|       |
  202|      0|  case PCRE2_INFO_LASTCODEUNIT:
  ------------------
  |  |  425|      0|#define PCRE2_INFO_LASTCODEUNIT         11
  ------------------
  |  Branch (202:3): [True: 0, False: 596]
  ------------------
  203|      0|  *((uint32_t *)where) = ((re->flags & PCRE2_LASTSET) != 0)?
  ------------------
  |  |  532|      0|#define PCRE2_LASTSET       0x00000080  /* last code unit is set */
  ------------------
  |  Branch (203:26): [True: 0, False: 0]
  ------------------
  204|      0|    re->last_codeunit : 0;
  205|      0|  break;
  206|       |
  207|      0|  case PCRE2_INFO_MATCHEMPTY:
  ------------------
  |  |  427|      0|#define PCRE2_INFO_MATCHEMPTY           13
  ------------------
  |  Branch (207:3): [True: 0, False: 596]
  ------------------
  208|      0|  *((uint32_t *)where) = (re->flags & PCRE2_MATCH_EMPTY) != 0;
  ------------------
  |  |  538|      0|#define PCRE2_MATCH_EMPTY   0x00002000  /* pattern can match empty string */
  ------------------
  209|      0|  break;
  210|       |
  211|      0|  case PCRE2_INFO_MATCHLIMIT:
  ------------------
  |  |  428|      0|#define PCRE2_INFO_MATCHLIMIT           14
  ------------------
  |  Branch (211:3): [True: 0, False: 596]
  ------------------
  212|      0|  *((uint32_t *)where) = re->limit_match;
  213|      0|  if (re->limit_match == UINT32_MAX) return PCRE2_ERROR_UNSET;
  ------------------
  |  |  397|      0|#define PCRE2_ERROR_UNSET             (-55)
  ------------------
  |  Branch (213:7): [True: 0, False: 0]
  ------------------
  214|      0|  break;
  215|       |
  216|      0|  case PCRE2_INFO_MAXLOOKBEHIND:
  ------------------
  |  |  429|      0|#define PCRE2_INFO_MAXLOOKBEHIND        15
  ------------------
  |  Branch (216:3): [True: 0, False: 596]
  ------------------
  217|      0|  *((uint32_t *)where) = re->max_lookbehind;
  218|      0|  break;
  219|       |
  220|      0|  case PCRE2_INFO_MINLENGTH:
  ------------------
  |  |  430|      0|#define PCRE2_INFO_MINLENGTH            16
  ------------------
  |  Branch (220:3): [True: 0, False: 596]
  ------------------
  221|      0|  *((uint32_t *)where) = re->minlength;
  222|      0|  break;
  223|       |
  224|      0|  case PCRE2_INFO_NAMEENTRYSIZE:
  ------------------
  |  |  432|      0|#define PCRE2_INFO_NAMEENTRYSIZE        18
  ------------------
  |  Branch (224:3): [True: 0, False: 596]
  ------------------
  225|      0|  *((uint32_t *)where) = re->name_entry_size;
  226|      0|  break;
  227|       |
  228|    298|  case PCRE2_INFO_NAMECOUNT:
  ------------------
  |  |  431|    298|#define PCRE2_INFO_NAMECOUNT            17
  ------------------
  |  Branch (228:3): [True: 298, False: 298]
  ------------------
  229|    298|  *((uint32_t *)where) = re->name_count;
  230|    298|  break;
  231|       |
  232|      0|  case PCRE2_INFO_NAMETABLE:
  ------------------
  |  |  433|      0|#define PCRE2_INFO_NAMETABLE            19
  ------------------
  |  Branch (232:3): [True: 0, False: 596]
  ------------------
  233|      0|  *((PCRE2_SPTR *)where) = (PCRE2_SPTR)((char *)re + sizeof(pcre2_real_code));
  234|      0|  break;
  235|       |
  236|      0|  case PCRE2_INFO_NEWLINE:
  ------------------
  |  |  434|      0|#define PCRE2_INFO_NEWLINE              20
  ------------------
  |  Branch (236:3): [True: 0, False: 596]
  ------------------
  237|      0|  *((uint32_t *)where) = re->newline_convention;
  238|      0|  break;
  239|       |
  240|      0|  case PCRE2_INFO_SIZE:
  ------------------
  |  |  437|      0|#define PCRE2_INFO_SIZE                 22
  ------------------
  |  Branch (240:3): [True: 0, False: 596]
  ------------------
  241|      0|  *((size_t *)where) = re->blocksize;
  242|      0|  break;
  243|       |
  244|      0|  default: return PCRE2_ERROR_BADOPTION;
  ------------------
  |  |  375|      0|#define PCRE2_ERROR_BADOPTION         (-34)
  ------------------
  |  Branch (244:3): [True: 0, False: 596]
  ------------------
  245|    596|  }
  246|       |
  247|    596|return 0;
  248|    596|}

_pcre2_strcmp_c8_8:
  131|     93|{
  132|     93|PCRE2_UCHAR c1, c2;
  ------------------
  |  |  819|     93|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|     93|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     93|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     93|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  133|    121|while (*str1 != '\0' || *str2 != '\0')
  ------------------
  |  Branch (133:8): [True: 93, False: 28]
  |  Branch (133:25): [True: 16, False: 12]
  ------------------
  134|    109|  {
  135|    109|  c1 = *str1++;
  136|    109|  c2 = *str2++;
  137|    109|  if (c1 != c2) return ((c1 > c2) << 1) - 1;
  ------------------
  |  Branch (137:7): [True: 81, False: 28]
  ------------------
  138|    109|  }
  139|     12|return 0;
  140|     93|}
_pcre2_strncmp_c8_8:
  187|    313|{
  188|    313|PCRE2_UCHAR c1, c2;
  ------------------
  |  |  819|    313|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    313|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    313|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    313|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|    315|for (; len > 0; len--)
  ------------------
  |  Branch (189:8): [True: 315, False: 0]
  ------------------
  190|    315|  {
  191|    315|  c1 = *str1++;
  192|    315|  c2 = *str2++;
  193|    315|  if (c1 != c2) return ((c1 > c2) << 1) - 1;
  ------------------
  |  Branch (193:7): [True: 313, False: 2]
  ------------------
  194|    315|  }
  195|      0|return 0;
  196|    313|}
_pcre2_strcpy_c8_8:
  230|      4|{
  231|      4|PCRE2_UCHAR *t = str1;
  ------------------
  |  |  819|      4|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  232|     58|while (*str2 != 0) *t++ = *str2++;
  ------------------
  |  Branch (232:8): [True: 54, False: 4]
  ------------------
  233|      4|*t = 0;
  234|      4|return t - str1;
  235|      4|}

_pcre2_study_8:
 1763|    298|{
 1764|    298|int count = 0;
 1765|    298|PCRE2_UCHAR *code;
  ------------------
  |  |  819|    298|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1766|    298|BOOL utf = (re->overall_options & PCRE2_UTF) != 0;
  ------------------
  |  |  138|    298|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
 1767|    298|BOOL ucp = (re->overall_options & PCRE2_UCP) != 0;
  ------------------
  |  |  136|    298|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
 1768|       |
 1769|       |/* Find start of compiled code */
 1770|       |
 1771|    298|code = (PCRE2_UCHAR *)((uint8_t *)re + sizeof(pcre2_real_code)) +
 1772|    298|  re->name_entry_size * re->name_count;
 1773|       |
 1774|       |/* For a pattern that has a first code unit, or a multiline pattern that
 1775|       |matches only at "line start", there is no point in seeking a list of starting
 1776|       |code units. */
 1777|       |
 1778|    298|if ((re->flags & (PCRE2_FIRSTSET|PCRE2_STARTLINE)) == 0)
  ------------------
  |  |  529|    298|#define PCRE2_FIRSTSET      0x00000010  /* first_code unit is set */
  ------------------
              if ((re->flags & (PCRE2_FIRSTSET|PCRE2_STARTLINE)) == 0)
  ------------------
  |  |  534|    298|#define PCRE2_STARTLINE     0x00000200  /* start after \n for multiline */
  ------------------
  |  Branch (1778:5): [True: 257, False: 41]
  ------------------
 1779|    257|  {
 1780|    257|  int depth = 0;
 1781|    257|  int rc = set_start_bits(re, code, utf, ucp, &depth);
 1782|    257|  if (rc == SSB_UNKNOWN) return 1;
  ------------------
  |  Branch (1782:7): [True: 0, False: 257]
  ------------------
 1783|       |
 1784|       |  /* If a list of starting code units was set up, scan the list to see if only
 1785|       |  one or two were listed. Having only one listed is rare because usually a
 1786|       |  single starting code unit will have been recognized and PCRE2_FIRSTSET set.
 1787|       |  If two are listed, see if they are caseless versions of the same character;
 1788|       |  if so we can replace the list with a caseless first code unit. This gives
 1789|       |  better performance and is plausibly worth doing for patterns such as [Ww]ord
 1790|       |  or (word|WORD). */
 1791|       |
 1792|    257|  if (rc == SSB_DONE)
  ------------------
  |  Branch (1792:7): [True: 90, False: 167]
  ------------------
 1793|     90|    {
 1794|     90|    int i;
 1795|     90|    int a = -1;
 1796|     90|    int b = -1;
 1797|     90|    uint8_t *p = re->start_bitmap;
 1798|     90|    uint32_t flags = PCRE2_FIRSTMAPSET;
  ------------------
  |  |  531|     90|#define PCRE2_FIRSTMAPSET   0x00000040  /* bitmap of first code units is set */
  ------------------
 1799|       |
 1800|    561|    for (i = 0; i < 256; p++, i += 8)
  ------------------
  |  Branch (1800:17): [True: 560, False: 1]
  ------------------
 1801|    560|      {
 1802|    560|      uint8_t x = *p;
 1803|    560|      if (x != 0)
  ------------------
  |  Branch (1803:11): [True: 141, False: 419]
  ------------------
 1804|    141|        {
 1805|    141|        int c;
 1806|    141|        uint8_t y = x & (~x + 1);   /* Least significant bit */
 1807|    141|        if (y != x) goto DONE;      /* More than one bit set */
  ------------------
  |  Branch (1807:13): [True: 58, False: 83]
  ------------------
 1808|       |
 1809|       |        /* In the 16-bit and 32-bit libraries, the bit for 0xff means "0xff and
 1810|       |        all wide characters", so we cannot use it here. */
 1811|       |
 1812|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 1813|       |        if (i == 248 && x == 0x80) goto DONE;
 1814|       |#endif
 1815|       |
 1816|       |        /* Compute the character value */
 1817|       |
 1818|     83|        c = i;
 1819|     83|        switch (x)
  ------------------
  |  Branch (1819:17): [True: 83, False: 0]
  ------------------
 1820|     83|          {
 1821|     20|          case 1:   break;
  ------------------
  |  Branch (1821:11): [True: 20, False: 63]
  ------------------
 1822|     10|          case 2:   c += 1; break;  case 4:  c += 2; break;
  ------------------
  |  Branch (1822:11): [True: 10, False: 73]
  |  Branch (1822:37): [True: 9, False: 74]
  ------------------
 1823|     13|          case 8:   c += 3; break;  case 16: c += 4; break;
  ------------------
  |  Branch (1823:11): [True: 13, False: 70]
  |  Branch (1823:37): [True: 5, False: 78]
  ------------------
 1824|     11|          case 32:  c += 5; break;  case 64: c += 6; break;
  ------------------
  |  Branch (1824:11): [True: 8, False: 75]
  |  Branch (1824:37): [True: 11, False: 72]
  ------------------
 1825|      7|          case 128: c += 7; break;
  ------------------
  |  Branch (1825:11): [True: 7, False: 76]
  ------------------
 1826|     83|          }
 1827|       |
 1828|       |        /* c contains the code unit value, in the range 0-255. In 8-bit UTF
 1829|       |        mode, only values < 128 can be used. In all the other cases, c is a
 1830|       |        character value. */
 1831|       |
 1832|     83|#if PCRE2_CODE_UNIT_WIDTH == 8
 1833|     83|        if (utf && c > 127) goto DONE;
  ------------------
  |  Branch (1833:13): [True: 21, False: 62]
  |  Branch (1833:20): [True: 1, False: 20]
  ------------------
 1834|     82|#endif
 1835|     82|        if (a < 0) a = c;   /* First one found, save in a */
  ------------------
  |  Branch (1835:13): [True: 47, False: 35]
  ------------------
 1836|     35|        else if (b < 0)     /* Second one found */
  ------------------
  |  Branch (1836:18): [True: 30, False: 5]
  ------------------
 1837|     30|          {
 1838|     30|          int d = TABLE_GET((unsigned int)c, re->tables + fcc_offset, c);
  ------------------
  |  |  214|     30|#define TABLE_GET(c, table, default) ((table)[c])
  ------------------
 1839|       |
 1840|     30|#ifdef SUPPORT_UNICODE
 1841|     30|          if (utf || ucp)
  ------------------
  |  Branch (1841:15): [True: 7, False: 23]
  |  Branch (1841:22): [True: 0, False: 23]
  ------------------
 1842|      7|            {
 1843|      7|            if (UCD_CASESET(c) != 0) goto DONE;     /* Multiple case set */
  ------------------
  |  | 1888|      7|#define UCD_CASESET(ch)     GET_UCD(ch)->caseset
  |  |  ------------------
  |  |  |  | 1873|      7|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      7|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      7|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      7|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      7|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      7|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      7|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      7|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      7|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      7|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      7|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      7|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      7|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      7|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      7|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      7|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      7|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      7|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      7|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      7|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      7|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      7|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1843:17): [True: 1, False: 6]
  ------------------
 1844|      6|            if (c > 127) d = UCD_OTHERCASE(c);
  ------------------
  |  | 1889|      0|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|      0|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|      0|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|      0|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|      0|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|      0|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|      0|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|      0|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|      0|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1844:17): [True: 0, False: 6]
  ------------------
 1845|      6|            }
 1846|     29|#endif  /* SUPPORT_UNICODE */
 1847|       |
 1848|     29|          if (d != a) goto DONE;   /* Not the other case of a */
  ------------------
  |  Branch (1848:15): [True: 24, False: 5]
  ------------------
 1849|      5|          b = c;                   /* Save second in b */
 1850|      5|          }
 1851|      5|        else goto DONE;   /* More than two characters found */
 1852|     82|        }
 1853|    560|      }
 1854|       |
 1855|       |    /* Replace the start code unit bits with a first code unit, but only if it
 1856|       |    is not the same as a required later code unit. This is because a search for
 1857|       |    a required code unit starts after an explicit first code unit, but at a
 1858|       |    code unit found from the bitmap. Patterns such as /a*a/ don't work
 1859|       |    if both the start unit and required unit are the same. */
 1860|       |
 1861|      1|    if (a >= 0 &&
  ------------------
  |  Branch (1861:9): [True: 1, False: 0]
  ------------------
 1862|      1|        (
 1863|      1|        (re->flags & PCRE2_LASTSET) == 0 ||
  ------------------
  |  |  532|      1|#define PCRE2_LASTSET       0x00000080  /* last code unit is set */
  ------------------
  |  Branch (1863:9): [True: 0, False: 1]
  ------------------
 1864|      1|          (
 1865|      1|          re->last_codeunit != (uint32_t)a &&
  ------------------
  |  Branch (1865:11): [True: 0, False: 1]
  ------------------
 1866|      0|          (b < 0 || re->last_codeunit != (uint32_t)b)
  ------------------
  |  Branch (1866:12): [True: 0, False: 0]
  |  Branch (1866:21): [True: 0, False: 0]
  ------------------
 1867|      1|          )
 1868|      1|        ))
 1869|      0|      {
 1870|      0|      re->first_codeunit = a;
 1871|      0|      flags = PCRE2_FIRSTSET;
  ------------------
  |  |  529|      0|#define PCRE2_FIRSTSET      0x00000010  /* first_code unit is set */
  ------------------
 1872|      0|      if (b >= 0) flags |= PCRE2_FIRSTCASELESS;
  ------------------
  |  |  530|      0|#define PCRE2_FIRSTCASELESS 0x00000020  /* caseless first code unit */
  ------------------
  |  Branch (1872:11): [True: 0, False: 0]
  ------------------
 1873|      0|      }
 1874|       |
 1875|     90|    DONE:
 1876|     90|    re->flags |= flags;
 1877|     90|    }
 1878|    257|  }
 1879|       |
 1880|       |/* Find the minimum length of subject string. If the pattern can match an empty
 1881|       |string, the minimum length is already known. If the pattern contains (*ACCEPT)
 1882|       |all bets are off, and we don't even try to find a minimum length. If there are
 1883|       |more back references than the size of the vector we are going to cache them in,
 1884|       |do nothing. A pattern that complicated will probably take a long time to
 1885|       |analyze and may in any case turn out to be too complicated. Note that back
 1886|       |reference minima are held as 16-bit numbers. */
 1887|       |
 1888|    298|if ((re->flags & (PCRE2_MATCH_EMPTY|PCRE2_HASACCEPT)) == 0 &&
  ------------------
  |  |  538|    298|#define PCRE2_MATCH_EMPTY   0x00002000  /* pattern can match empty string */
  ------------------
              if ((re->flags & (PCRE2_MATCH_EMPTY|PCRE2_HASACCEPT)) == 0 &&
  ------------------
  |  |  548|    298|#define PCRE2_HASACCEPT     0x00800000  /* contains (*ACCEPT) */
  ------------------
  |  Branch (1888:5): [True: 286, False: 12]
  ------------------
 1889|    286|     re->top_backref <= MAX_CACHE_BACKREF)
  ------------------
  |  |   53|    286|#define MAX_CACHE_BACKREF 128
  ------------------
  |  Branch (1889:6): [True: 286, False: 0]
  ------------------
 1890|    286|  {
 1891|    286|  int min;
 1892|    286|  int backref_cache[MAX_CACHE_BACKREF+1];
 1893|    286|  backref_cache[0] = 0;    /* Highest one that is set */
 1894|    286|  min = find_minlength(re, code, code, utf, NULL, &count, backref_cache);
 1895|    286|  switch(min)
 1896|    286|    {
 1897|     10|    case -1:  /* \C in UTF mode or over-complex regex */
  ------------------
  |  Branch (1897:5): [True: 10, False: 276]
  ------------------
 1898|     10|    break;    /* Leave minlength unchanged (will be zero) */
 1899|       |
 1900|      0|    case -2:
  ------------------
  |  Branch (1900:5): [True: 0, False: 286]
  ------------------
 1901|      0|    return 2; /* missing capturing bracket */
 1902|       |
 1903|      0|    case -3:
  ------------------
  |  Branch (1903:5): [True: 0, False: 286]
  ------------------
 1904|      0|    return 3; /* unrecognized opcode */
 1905|       |
 1906|    276|    default:
  ------------------
  |  Branch (1906:5): [True: 276, False: 10]
  ------------------
 1907|    276|    re->minlength = (min > UINT16_MAX)? UINT16_MAX : min;
  ------------------
  |  Branch (1907:21): [True: 0, False: 276]
  ------------------
 1908|    276|    break;
 1909|    286|    }
 1910|    286|  }
 1911|       |
 1912|    298|return 0;
 1913|    298|}
pcre2_study.c:set_start_bits:
  958|    263|{
  959|    263|uint32_t c;
  960|    263|int yield = SSB_DONE;
  961|       |
  962|    263|#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8
  963|    263|int table_limit = utf? 16:32;
  ------------------
  |  Branch (963:19): [True: 140, False: 123]
  ------------------
  964|       |#else
  965|       |int table_limit = 32;
  966|       |#endif
  967|       |
  968|    263|*depthptr += 1;
  969|    263|if (*depthptr > 1000) return SSB_TOODEEP;
  ------------------
  |  Branch (969:5): [True: 0, False: 263]
  ------------------
  970|       |
  971|    263|do
  972|    511|  {
  973|    511|  BOOL try_next = TRUE;
  ------------------
  |  |   88|    511|#define TRUE    1
  ------------------
  974|    511|  PCRE2_SPTR tcode = code + 1 + LINK_SIZE;
  ------------------
  |  |  820|    511|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    511|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    511|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    511|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                PCRE2_SPTR tcode = code + 1 + LINK_SIZE;
  ------------------
  |  |   98|    511|#define LINK_SIZE 2
  ------------------
  975|       |
  976|    511|  if (*code == OP_CBRA || *code == OP_SCBRA ||
  ------------------
  |  Branch (976:7): [True: 4, False: 507]
  |  Branch (976:27): [True: 0, False: 507]
  ------------------
  977|    507|      *code == OP_CBRAPOS || *code == OP_SCBRAPOS) tcode += IMM2_SIZE;
  ------------------
  |  |  193|      4|#define IMM2_SIZE 2
  ------------------
  |  Branch (977:7): [True: 0, False: 507]
  |  Branch (977:30): [True: 0, False: 507]
  ------------------
  978|       |
  979|  1.13k|  while (try_next)    /* Loop for items in this branch */
  ------------------
  |  Branch (979:10): [True: 790, False: 349]
  ------------------
  980|    790|    {
  981|    790|    int rc;
  982|    790|    PCRE2_SPTR ncode;
  ------------------
  |  |  820|    790|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    790|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    790|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    790|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  983|    790|    uint8_t *classmap = NULL;
  984|    790|#ifdef SUPPORT_WIDE_CHARS
  985|    790|    PCRE2_UCHAR xclassflags;
  ------------------
  |  |  819|    790|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    790|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    790|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    790|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  986|    790|#endif
  987|       |
  988|    790|    switch(*tcode)
  989|    790|      {
  990|       |      /* If we reach something we don't understand, it means a new opcode has
  991|       |      been created that hasn't been added to this function. Hopefully this
  992|       |      problem will be discovered during testing. */
  993|       |
  994|      0|      default:
  ------------------
  |  Branch (994:7): [True: 0, False: 790]
  ------------------
  995|      0|      return SSB_UNKNOWN;
  996|       |
  997|       |      /* Fail for a valid opcode that implies no starting bits. */
  998|       |
  999|      0|      case OP_ACCEPT:
  ------------------
  |  Branch (999:7): [True: 0, False: 790]
  ------------------
 1000|      0|      case OP_ASSERT_ACCEPT:
  ------------------
  |  Branch (1000:7): [True: 0, False: 790]
  ------------------
 1001|     21|      case OP_ALLANY:
  ------------------
  |  Branch (1001:7): [True: 21, False: 769]
  ------------------
 1002|     35|      case OP_ANY:
  ------------------
  |  Branch (1002:7): [True: 14, False: 776]
  ------------------
 1003|     39|      case OP_ANYBYTE:
  ------------------
  |  Branch (1003:7): [True: 4, False: 786]
  ------------------
 1004|     40|      case OP_CIRCM:
  ------------------
  |  Branch (1004:7): [True: 1, False: 789]
  ------------------
 1005|     40|      case OP_CLOSE:
  ------------------
  |  Branch (1005:7): [True: 0, False: 790]
  ------------------
 1006|     40|      case OP_COMMIT:
  ------------------
  |  Branch (1006:7): [True: 0, False: 790]
  ------------------
 1007|     40|      case OP_COMMIT_ARG:
  ------------------
  |  Branch (1007:7): [True: 0, False: 790]
  ------------------
 1008|     40|      case OP_COND:
  ------------------
  |  Branch (1008:7): [True: 0, False: 790]
  ------------------
 1009|     40|      case OP_CREF:
  ------------------
  |  Branch (1009:7): [True: 0, False: 790]
  ------------------
 1010|     40|      case OP_FALSE:
  ------------------
  |  Branch (1010:7): [True: 0, False: 790]
  ------------------
 1011|     40|      case OP_TRUE:
  ------------------
  |  Branch (1011:7): [True: 0, False: 790]
  ------------------
 1012|     40|      case OP_DNCREF:
  ------------------
  |  Branch (1012:7): [True: 0, False: 790]
  ------------------
 1013|     40|      case OP_DNREF:
  ------------------
  |  Branch (1013:7): [True: 0, False: 790]
  ------------------
 1014|     40|      case OP_DNREFI:
  ------------------
  |  Branch (1014:7): [True: 0, False: 790]
  ------------------
 1015|     40|      case OP_DNRREF:
  ------------------
  |  Branch (1015:7): [True: 0, False: 790]
  ------------------
 1016|     42|      case OP_DOLL:
  ------------------
  |  Branch (1016:7): [True: 2, False: 788]
  ------------------
 1017|     42|      case OP_DOLLM:
  ------------------
  |  Branch (1017:7): [True: 0, False: 790]
  ------------------
 1018|     42|      case OP_END:
  ------------------
  |  Branch (1018:7): [True: 0, False: 790]
  ------------------
 1019|     42|      case OP_EOD:
  ------------------
  |  Branch (1019:7): [True: 0, False: 790]
  ------------------
 1020|     44|      case OP_EODN:
  ------------------
  |  Branch (1020:7): [True: 2, False: 788]
  ------------------
 1021|     55|      case OP_EXTUNI:
  ------------------
  |  Branch (1021:7): [True: 11, False: 779]
  ------------------
 1022|     55|      case OP_FAIL:
  ------------------
  |  Branch (1022:7): [True: 0, False: 790]
  ------------------
 1023|     55|      case OP_MARK:
  ------------------
  |  Branch (1023:7): [True: 0, False: 790]
  ------------------
 1024|     56|      case OP_NOT:
  ------------------
  |  Branch (1024:7): [True: 1, False: 789]
  ------------------
 1025|     56|      case OP_NOTEXACT:
  ------------------
  |  Branch (1025:7): [True: 0, False: 790]
  ------------------
 1026|     56|      case OP_NOTEXACTI:
  ------------------
  |  Branch (1026:7): [True: 0, False: 790]
  ------------------
 1027|     59|      case OP_NOTI:
  ------------------
  |  Branch (1027:7): [True: 3, False: 787]
  ------------------
 1028|     59|      case OP_NOTMINPLUS:
  ------------------
  |  Branch (1028:7): [True: 0, False: 790]
  ------------------
 1029|     59|      case OP_NOTMINPLUSI:
  ------------------
  |  Branch (1029:7): [True: 0, False: 790]
  ------------------
 1030|     59|      case OP_NOTMINQUERY:
  ------------------
  |  Branch (1030:7): [True: 0, False: 790]
  ------------------
 1031|     59|      case OP_NOTMINQUERYI:
  ------------------
  |  Branch (1031:7): [True: 0, False: 790]
  ------------------
 1032|     59|      case OP_NOTMINSTAR:
  ------------------
  |  Branch (1032:7): [True: 0, False: 790]
  ------------------
 1033|     59|      case OP_NOTMINSTARI:
  ------------------
  |  Branch (1033:7): [True: 0, False: 790]
  ------------------
 1034|     59|      case OP_NOTMINUPTO:
  ------------------
  |  Branch (1034:7): [True: 0, False: 790]
  ------------------
 1035|     59|      case OP_NOTMINUPTOI:
  ------------------
  |  Branch (1035:7): [True: 0, False: 790]
  ------------------
 1036|     60|      case OP_NOTPLUS:
  ------------------
  |  Branch (1036:7): [True: 1, False: 789]
  ------------------
 1037|     65|      case OP_NOTPLUSI:
  ------------------
  |  Branch (1037:7): [True: 5, False: 785]
  ------------------
 1038|     65|      case OP_NOTPOSPLUS:
  ------------------
  |  Branch (1038:7): [True: 0, False: 790]
  ------------------
 1039|     65|      case OP_NOTPOSPLUSI:
  ------------------
  |  Branch (1039:7): [True: 0, False: 790]
  ------------------
 1040|     65|      case OP_NOTPOSQUERY:
  ------------------
  |  Branch (1040:7): [True: 0, False: 790]
  ------------------
 1041|     65|      case OP_NOTPOSQUERYI:
  ------------------
  |  Branch (1041:7): [True: 0, False: 790]
  ------------------
 1042|     65|      case OP_NOTPOSSTAR:
  ------------------
  |  Branch (1042:7): [True: 0, False: 790]
  ------------------
 1043|     65|      case OP_NOTPOSSTARI:
  ------------------
  |  Branch (1043:7): [True: 0, False: 790]
  ------------------
 1044|     65|      case OP_NOTPOSUPTO:
  ------------------
  |  Branch (1044:7): [True: 0, False: 790]
  ------------------
 1045|     65|      case OP_NOTPOSUPTOI:
  ------------------
  |  Branch (1045:7): [True: 0, False: 790]
  ------------------
 1046|     90|      case OP_NOTPROP:
  ------------------
  |  Branch (1046:7): [True: 25, False: 765]
  ------------------
 1047|     90|      case OP_NOTQUERY:
  ------------------
  |  Branch (1047:7): [True: 0, False: 790]
  ------------------
 1048|     91|      case OP_NOTQUERYI:
  ------------------
  |  Branch (1048:7): [True: 1, False: 789]
  ------------------
 1049|     93|      case OP_NOTSTAR:
  ------------------
  |  Branch (1049:7): [True: 2, False: 788]
  ------------------
 1050|     93|      case OP_NOTSTARI:
  ------------------
  |  Branch (1050:7): [True: 0, False: 790]
  ------------------
 1051|     93|      case OP_NOTUPTO:
  ------------------
  |  Branch (1051:7): [True: 0, False: 790]
  ------------------
 1052|     93|      case OP_NOTUPTOI:
  ------------------
  |  Branch (1052:7): [True: 0, False: 790]
  ------------------
 1053|    107|      case OP_NOT_HSPACE:
  ------------------
  |  Branch (1053:7): [True: 14, False: 776]
  ------------------
 1054|    124|      case OP_NOT_VSPACE:
  ------------------
  |  Branch (1054:7): [True: 17, False: 773]
  ------------------
 1055|    124|      case OP_PRUNE:
  ------------------
  |  Branch (1055:7): [True: 0, False: 790]
  ------------------
 1056|    124|      case OP_PRUNE_ARG:
  ------------------
  |  Branch (1056:7): [True: 0, False: 790]
  ------------------
 1057|    124|      case OP_RECURSE:
  ------------------
  |  Branch (1057:7): [True: 0, False: 790]
  ------------------
 1058|    124|      case OP_REF:
  ------------------
  |  Branch (1058:7): [True: 0, False: 790]
  ------------------
 1059|    124|      case OP_REFI:
  ------------------
  |  Branch (1059:7): [True: 0, False: 790]
  ------------------
 1060|    124|      case OP_REVERSE:
  ------------------
  |  Branch (1060:7): [True: 0, False: 790]
  ------------------
 1061|    124|      case OP_VREVERSE:
  ------------------
  |  Branch (1061:7): [True: 0, False: 790]
  ------------------
 1062|    124|      case OP_RREF:
  ------------------
  |  Branch (1062:7): [True: 0, False: 790]
  ------------------
 1063|    124|      case OP_SCOND:
  ------------------
  |  Branch (1063:7): [True: 0, False: 790]
  ------------------
 1064|    125|      case OP_SET_SOM:
  ------------------
  |  Branch (1064:7): [True: 1, False: 789]
  ------------------
 1065|    125|      case OP_SKIP:
  ------------------
  |  Branch (1065:7): [True: 0, False: 790]
  ------------------
 1066|    125|      case OP_SKIP_ARG:
  ------------------
  |  Branch (1066:7): [True: 0, False: 790]
  ------------------
 1067|    129|      case OP_SOD:
  ------------------
  |  Branch (1067:7): [True: 4, False: 786]
  ------------------
 1068|    132|      case OP_SOM:
  ------------------
  |  Branch (1068:7): [True: 3, False: 787]
  ------------------
 1069|    132|      case OP_THEN:
  ------------------
  |  Branch (1069:7): [True: 0, False: 790]
  ------------------
 1070|    132|      case OP_THEN_ARG:
  ------------------
  |  Branch (1070:7): [True: 0, False: 790]
  ------------------
 1071|    132|      return SSB_FAIL;
 1072|       |
 1073|       |      /* OP_CIRC happens only at the start of an anchored branch (multiline ^
 1074|       |      uses OP_CIRCM). Skip over it. */
 1075|       |
 1076|     19|      case OP_CIRC:
  ------------------
  |  Branch (1076:7): [True: 19, False: 771]
  ------------------
 1077|     19|      tcode += PRIV(OP_lengths)[OP_CIRC];
  ------------------
  |  |  195|     19|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|     19|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     19|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     19|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     19|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1078|     19|      break;
 1079|       |
 1080|       |      /* A "real" property test implies no starting bits, but the fake property
 1081|       |      PT_CLIST identifies a list of characters. These lists are short, as they
 1082|       |      are used for characters with more than one "other case", so there is no
 1083|       |      point in recognizing them for OP_NOTPROP. */
 1084|       |
 1085|     18|      case OP_PROP:
  ------------------
  |  Branch (1085:7): [True: 18, False: 772]
  ------------------
 1086|     18|      if (tcode[1] != PT_CLIST) return SSB_FAIL;
  ------------------
  |  | 1303|     18|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (1086:11): [True: 14, False: 4]
  ------------------
 1087|      4|        {
 1088|      4|        const uint32_t *p = PRIV(ucd_caseless_sets) + tcode[2];
  ------------------
  |  |  195|      4|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1957|      4|#define _pcre2_ucd_caseless_sets       PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|     16|        while ((c = *p++) < NOTACHAR)
  ------------------
  |  |  223|     16|#define NOTACHAR 0xffffffff
  ------------------
  |  Branch (1089:16): [True: 12, False: 4]
  ------------------
 1090|     12|          {
 1091|     12|#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8
 1092|     12|          if (utf)
  ------------------
  |  Branch (1092:15): [True: 12, False: 0]
  ------------------
 1093|     12|            {
 1094|     12|            PCRE2_UCHAR buff[6];
  ------------------
  |  |  819|     12|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|     12|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     12|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     12|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1095|     12|            (void)PRIV(ord2utf)(c, buff);
  ------------------
  |  |  195|     12|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|     12|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     12|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     12|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     12|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1096|     12|            c = buff[0];
 1097|     12|            }
 1098|     12|#endif
 1099|     12|          if (c > 0xff) SET_BIT(0xff); else SET_BIT(c);
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
                        if (c > 0xff) SET_BIT(0xff); else SET_BIT(c);
  ------------------
  |  |   57|     12|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
  |  Branch (1099:15): [True: 0, False: 12]
  ------------------
 1100|     12|          }
 1101|      4|        }
 1102|      4|      try_next = FALSE;
  ------------------
  |  |   87|      4|#define FALSE   0
  ------------------
 1103|      4|      break;
 1104|       |
 1105|       |      /* We can ignore word boundary tests. */
 1106|       |
 1107|      0|      case OP_WORD_BOUNDARY:
  ------------------
  |  Branch (1107:7): [True: 0, False: 790]
  ------------------
 1108|      5|      case OP_NOT_WORD_BOUNDARY:
  ------------------
  |  Branch (1108:7): [True: 5, False: 785]
  ------------------
 1109|     17|      case OP_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (1109:7): [True: 12, False: 778]
  ------------------
 1110|     33|      case OP_NOT_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (1110:7): [True: 16, False: 774]
  ------------------
 1111|     33|      tcode++;
 1112|     33|      break;
 1113|       |
 1114|       |      /* For a positive lookahead assertion, inspect what immediately follows,
 1115|       |      ignoring intermediate assertions and callouts. If the next item is one
 1116|       |      that sets a mandatory character, skip this assertion. Otherwise, treat it
 1117|       |      the same as other bracket groups. */
 1118|       |
 1119|      0|      case OP_ASSERT:
  ------------------
  |  Branch (1119:7): [True: 0, False: 790]
  ------------------
 1120|      0|      case OP_ASSERT_NA:
  ------------------
  |  Branch (1120:7): [True: 0, False: 790]
  ------------------
 1121|      0|      ncode = tcode + GET(tcode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1122|      0|      while (*ncode == OP_ALT) ncode += GET(ncode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1122:14): [True: 0, False: 0]
  ------------------
 1123|      0|      ncode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 1124|       |
 1125|       |      /* Skip irrelevant items */
 1126|       |
 1127|      0|      for (BOOL done = FALSE; !done;)
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  |  Branch (1127:31): [True: 0, False: 0]
  ------------------
 1128|      0|        {
 1129|      0|        switch (*ncode)
 1130|      0|          {
 1131|      0|          case OP_ASSERT:
  ------------------
  |  Branch (1131:11): [True: 0, False: 0]
  ------------------
 1132|      0|          case OP_ASSERT_NOT:
  ------------------
  |  Branch (1132:11): [True: 0, False: 0]
  ------------------
 1133|      0|          case OP_ASSERTBACK:
  ------------------
  |  Branch (1133:11): [True: 0, False: 0]
  ------------------
 1134|      0|          case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (1134:11): [True: 0, False: 0]
  ------------------
 1135|      0|          case OP_ASSERT_NA:
  ------------------
  |  Branch (1135:11): [True: 0, False: 0]
  ------------------
 1136|      0|          case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (1136:11): [True: 0, False: 0]
  ------------------
 1137|      0|          ncode += GET(ncode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1138|      0|          while (*ncode == OP_ALT) ncode += GET(ncode, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1138:18): [True: 0, False: 0]
  ------------------
 1139|      0|          ncode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 1140|      0|          break;
 1141|       |
 1142|      0|          case OP_WORD_BOUNDARY:
  ------------------
  |  Branch (1142:11): [True: 0, False: 0]
  ------------------
 1143|      0|          case OP_NOT_WORD_BOUNDARY:
  ------------------
  |  Branch (1143:11): [True: 0, False: 0]
  ------------------
 1144|      0|          case OP_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (1144:11): [True: 0, False: 0]
  ------------------
 1145|      0|          case OP_NOT_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (1145:11): [True: 0, False: 0]
  ------------------
 1146|      0|          ncode++;
 1147|      0|          break;
 1148|       |
 1149|      0|          case OP_CALLOUT:
  ------------------
  |  Branch (1149:11): [True: 0, False: 0]
  ------------------
 1150|      0|          ncode += PRIV(OP_lengths)[OP_CALLOUT];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1151|      0|          break;
 1152|       |
 1153|      0|          case OP_CALLOUT_STR:
  ------------------
  |  Branch (1153:11): [True: 0, False: 0]
  ------------------
 1154|      0|          ncode += GET(ncode, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1155|      0|          break;
 1156|       |
 1157|      0|          default:
  ------------------
  |  Branch (1157:11): [True: 0, False: 0]
  ------------------
 1158|      0|          done = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 1159|      0|          break;
 1160|      0|          }
 1161|      0|        }
 1162|       |
 1163|       |      /* Now check the next significant item. */
 1164|       |
 1165|      0|      switch(*ncode)
 1166|      0|        {
 1167|      0|        default:
  ------------------
  |  Branch (1167:9): [True: 0, False: 0]
  ------------------
 1168|      0|        break;
 1169|       |
 1170|      0|        case OP_PROP:
  ------------------
  |  Branch (1170:9): [True: 0, False: 0]
  ------------------
 1171|      0|        if (ncode[1] != PT_CLIST) break;
  ------------------
  |  | 1303|      0|#define PT_CLIST     10    /* Pseudo-property: match character list */
  ------------------
  |  Branch (1171:13): [True: 0, False: 0]
  ------------------
 1172|       |        /* Fall through */
 1173|      0|        case OP_ANYNL:
  ------------------
  |  Branch (1173:9): [True: 0, False: 0]
  ------------------
 1174|      0|        case OP_CHAR:
  ------------------
  |  Branch (1174:9): [True: 0, False: 0]
  ------------------
 1175|      0|        case OP_CHARI:
  ------------------
  |  Branch (1175:9): [True: 0, False: 0]
  ------------------
 1176|      0|        case OP_EXACT:
  ------------------
  |  Branch (1176:9): [True: 0, False: 0]
  ------------------
 1177|      0|        case OP_EXACTI:
  ------------------
  |  Branch (1177:9): [True: 0, False: 0]
  ------------------
 1178|      0|        case OP_HSPACE:
  ------------------
  |  Branch (1178:9): [True: 0, False: 0]
  ------------------
 1179|      0|        case OP_MINPLUS:
  ------------------
  |  Branch (1179:9): [True: 0, False: 0]
  ------------------
 1180|      0|        case OP_MINPLUSI:
  ------------------
  |  Branch (1180:9): [True: 0, False: 0]
  ------------------
 1181|      0|        case OP_PLUS:
  ------------------
  |  Branch (1181:9): [True: 0, False: 0]
  ------------------
 1182|      0|        case OP_PLUSI:
  ------------------
  |  Branch (1182:9): [True: 0, False: 0]
  ------------------
 1183|      0|        case OP_POSPLUS:
  ------------------
  |  Branch (1183:9): [True: 0, False: 0]
  ------------------
 1184|      0|        case OP_POSPLUSI:
  ------------------
  |  Branch (1184:9): [True: 0, False: 0]
  ------------------
 1185|      0|        case OP_VSPACE:
  ------------------
  |  Branch (1185:9): [True: 0, False: 0]
  ------------------
 1186|       |        /* Note that these types will only be present in non-UCP mode. */
 1187|      0|        case OP_DIGIT:
  ------------------
  |  Branch (1187:9): [True: 0, False: 0]
  ------------------
 1188|      0|        case OP_NOT_DIGIT:
  ------------------
  |  Branch (1188:9): [True: 0, False: 0]
  ------------------
 1189|      0|        case OP_WORDCHAR:
  ------------------
  |  Branch (1189:9): [True: 0, False: 0]
  ------------------
 1190|      0|        case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (1190:9): [True: 0, False: 0]
  ------------------
 1191|      0|        case OP_WHITESPACE:
  ------------------
  |  Branch (1191:9): [True: 0, False: 0]
  ------------------
 1192|      0|        case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (1192:9): [True: 0, False: 0]
  ------------------
 1193|      0|        tcode = ncode;
 1194|      0|        continue;   /* With the following significant opcode */
 1195|      0|        }
 1196|       |      /* Fall through */
 1197|       |
 1198|       |      /* For a group bracket or a positive assertion without an immediately
 1199|       |      following mandatory setting, recurse to set bits from within the
 1200|       |      subpattern. If it can't find anything, we have to give up. If it finds
 1201|       |      some mandatory character(s), we are done for this branch. Otherwise,
 1202|       |      carry on scanning after the subpattern. */
 1203|       |
 1204|      2|      case OP_BRA:
  ------------------
  |  Branch (1204:7): [True: 2, False: 788]
  ------------------
 1205|      2|      case OP_SBRA:
  ------------------
  |  Branch (1205:7): [True: 0, False: 790]
  ------------------
 1206|      4|      case OP_CBRA:
  ------------------
  |  Branch (1206:7): [True: 2, False: 788]
  ------------------
 1207|      4|      case OP_SCBRA:
  ------------------
  |  Branch (1207:7): [True: 0, False: 790]
  ------------------
 1208|      4|      case OP_BRAPOS:
  ------------------
  |  Branch (1208:7): [True: 0, False: 790]
  ------------------
 1209|      4|      case OP_SBRAPOS:
  ------------------
  |  Branch (1209:7): [True: 0, False: 790]
  ------------------
 1210|      4|      case OP_CBRAPOS:
  ------------------
  |  Branch (1210:7): [True: 0, False: 790]
  ------------------
 1211|      4|      case OP_SCBRAPOS:
  ------------------
  |  Branch (1211:7): [True: 0, False: 790]
  ------------------
 1212|      4|      case OP_ONCE:
  ------------------
  |  Branch (1212:7): [True: 0, False: 790]
  ------------------
 1213|      4|      case OP_SCRIPT_RUN:
  ------------------
  |  Branch (1213:7): [True: 0, False: 790]
  ------------------
 1214|      4|      rc = set_start_bits(re, tcode, utf, ucp, depthptr);
 1215|      4|      if (rc == SSB_DONE)
  ------------------
  |  Branch (1215:11): [True: 2, False: 2]
  ------------------
 1216|      2|        {
 1217|      2|        try_next = FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
 1218|      2|        }
 1219|      2|      else if (rc == SSB_CONTINUE)
  ------------------
  |  Branch (1219:16): [True: 2, False: 0]
  ------------------
 1220|      2|        {
 1221|      4|        do tcode += GET(tcode, 1); while (*tcode == OP_ALT);
  ------------------
  |  |  109|      4|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1221:43): [True: 2, False: 2]
  ------------------
 1222|      2|        tcode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      2|#define LINK_SIZE 2
  ------------------
 1223|      2|        }
 1224|      0|      else return rc;   /* FAIL, UNKNOWN, or TOODEEP */
 1225|      4|      break;
 1226|       |
 1227|       |      /* If we hit ALT or KET, it means we haven't found anything mandatory in
 1228|       |      this branch, though we might have found something optional. For ALT, we
 1229|       |      continue with the next alternative, but we have to arrange that the final
 1230|       |      result from subpattern is SSB_CONTINUE rather than SSB_DONE. For KET,
 1231|       |      return SSB_CONTINUE: if this is the top level, that indicates failure,
 1232|       |      but after a nested subpattern, it causes scanning to continue. */
 1233|       |
 1234|     30|      case OP_ALT:
  ------------------
  |  Branch (1234:7): [True: 30, False: 760]
  ------------------
 1235|     30|      yield = SSB_CONTINUE;
 1236|     30|      try_next = FALSE;
  ------------------
  |  |   87|     30|#define FALSE   0
  ------------------
 1237|     30|      break;
 1238|       |
 1239|      2|      case OP_KET:
  ------------------
  |  Branch (1239:7): [True: 2, False: 788]
  ------------------
 1240|      2|      case OP_KETRMAX:
  ------------------
  |  Branch (1240:7): [True: 0, False: 790]
  ------------------
 1241|      2|      case OP_KETRMIN:
  ------------------
  |  Branch (1241:7): [True: 0, False: 790]
  ------------------
 1242|      2|      case OP_KETRPOS:
  ------------------
  |  Branch (1242:7): [True: 0, False: 790]
  ------------------
 1243|      2|      return SSB_CONTINUE;
 1244|       |
 1245|       |      /* Skip over callout */
 1246|       |
 1247|      0|      case OP_CALLOUT:
  ------------------
  |  Branch (1247:7): [True: 0, False: 790]
  ------------------
 1248|      0|      tcode += PRIV(OP_lengths)[OP_CALLOUT];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1249|      0|      break;
 1250|       |
 1251|      0|      case OP_CALLOUT_STR:
  ------------------
  |  Branch (1251:7): [True: 0, False: 790]
  ------------------
 1252|      0|      tcode += GET(tcode, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1253|      0|      break;
 1254|       |
 1255|       |      /* Skip over lookbehind and negative lookahead assertions */
 1256|       |
 1257|      0|      case OP_ASSERT_NOT:
  ------------------
  |  Branch (1257:7): [True: 0, False: 790]
  ------------------
 1258|      0|      case OP_ASSERTBACK:
  ------------------
  |  Branch (1258:7): [True: 0, False: 790]
  ------------------
 1259|      0|      case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (1259:7): [True: 0, False: 790]
  ------------------
 1260|      0|      case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (1260:7): [True: 0, False: 790]
  ------------------
 1261|      0|      do tcode += GET(tcode, 1); while (*tcode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1261:41): [True: 0, False: 0]
  ------------------
 1262|      0|      tcode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 1263|      0|      break;
 1264|       |
 1265|       |      /* BRAZERO does the bracket, but carries on. */
 1266|       |
 1267|      2|      case OP_BRAZERO:
  ------------------
  |  Branch (1267:7): [True: 2, False: 788]
  ------------------
 1268|      2|      case OP_BRAMINZERO:
  ------------------
  |  Branch (1268:7): [True: 0, False: 790]
  ------------------
 1269|      2|      case OP_BRAPOSZERO:
  ------------------
  |  Branch (1269:7): [True: 0, False: 790]
  ------------------
 1270|      2|      rc = set_start_bits(re, ++tcode, utf, ucp, depthptr);
 1271|      2|      if (rc == SSB_FAIL || rc == SSB_UNKNOWN || rc == SSB_TOODEEP) return rc;
  ------------------
  |  Branch (1271:11): [True: 0, False: 2]
  |  Branch (1271:29): [True: 0, False: 2]
  |  Branch (1271:50): [True: 0, False: 2]
  ------------------
 1272|      3|      do tcode += GET(tcode,1); while (*tcode == OP_ALT);
  ------------------
  |  |  109|      3|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1272:40): [True: 1, False: 2]
  ------------------
 1273|      2|      tcode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      2|#define LINK_SIZE 2
  ------------------
 1274|      2|      break;
 1275|       |
 1276|       |      /* SKIPZERO skips the bracket. */
 1277|       |
 1278|      0|      case OP_SKIPZERO:
  ------------------
  |  Branch (1278:7): [True: 0, False: 790]
  ------------------
 1279|      0|      tcode++;
 1280|      0|      do tcode += GET(tcode,1); while (*tcode == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1280:40): [True: 0, False: 0]
  ------------------
 1281|      0|      tcode += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
 1282|      0|      break;
 1283|       |
 1284|       |      /* Single-char * or ? sets the bit and tries the next item */
 1285|       |
 1286|      1|      case OP_STAR:
  ------------------
  |  Branch (1286:7): [True: 1, False: 789]
  ------------------
 1287|      2|      case OP_MINSTAR:
  ------------------
  |  Branch (1287:7): [True: 1, False: 789]
  ------------------
 1288|      5|      case OP_POSSTAR:
  ------------------
  |  Branch (1288:7): [True: 3, False: 787]
  ------------------
 1289|     21|      case OP_QUERY:
  ------------------
  |  Branch (1289:7): [True: 16, False: 774]
  ------------------
 1290|     21|      case OP_MINQUERY:
  ------------------
  |  Branch (1290:7): [True: 0, False: 790]
  ------------------
 1291|     29|      case OP_POSQUERY:
  ------------------
  |  Branch (1291:7): [True: 8, False: 782]
  ------------------
 1292|     29|      tcode = set_table_bit(re, tcode + 1, FALSE, utf, ucp);
  ------------------
  |  |   87|     29|#define FALSE   0
  ------------------
 1293|     29|      break;
 1294|       |
 1295|      2|      case OP_STARI:
  ------------------
  |  Branch (1295:7): [True: 2, False: 788]
  ------------------
 1296|      2|      case OP_MINSTARI:
  ------------------
  |  Branch (1296:7): [True: 0, False: 790]
  ------------------
 1297|      8|      case OP_POSSTARI:
  ------------------
  |  Branch (1297:7): [True: 6, False: 784]
  ------------------
 1298|     16|      case OP_QUERYI:
  ------------------
  |  Branch (1298:7): [True: 8, False: 782]
  ------------------
 1299|     16|      case OP_MINQUERYI:
  ------------------
  |  Branch (1299:7): [True: 0, False: 790]
  ------------------
 1300|     43|      case OP_POSQUERYI:
  ------------------
  |  Branch (1300:7): [True: 27, False: 763]
  ------------------
 1301|     43|      tcode = set_table_bit(re, tcode + 1, TRUE, utf, ucp);
  ------------------
  |  |   88|     43|#define TRUE    1
  ------------------
 1302|     43|      break;
 1303|       |
 1304|       |      /* Single-char upto sets the bit and tries the next */
 1305|       |
 1306|      0|      case OP_UPTO:
  ------------------
  |  Branch (1306:7): [True: 0, False: 790]
  ------------------
 1307|      0|      case OP_MINUPTO:
  ------------------
  |  Branch (1307:7): [True: 0, False: 790]
  ------------------
 1308|      0|      case OP_POSUPTO:
  ------------------
  |  Branch (1308:7): [True: 0, False: 790]
  ------------------
 1309|      0|      tcode = set_table_bit(re, tcode + 1 + IMM2_SIZE, FALSE, utf, ucp);
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
                    tcode = set_table_bit(re, tcode + 1 + IMM2_SIZE, FALSE, utf, ucp);
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1310|      0|      break;
 1311|       |
 1312|      0|      case OP_UPTOI:
  ------------------
  |  Branch (1312:7): [True: 0, False: 790]
  ------------------
 1313|      0|      case OP_MINUPTOI:
  ------------------
  |  Branch (1313:7): [True: 0, False: 790]
  ------------------
 1314|      0|      case OP_POSUPTOI:
  ------------------
  |  Branch (1314:7): [True: 0, False: 790]
  ------------------
 1315|      0|      tcode = set_table_bit(re, tcode + 1 + IMM2_SIZE, TRUE, utf, ucp);
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
                    tcode = set_table_bit(re, tcode + 1 + IMM2_SIZE, TRUE, utf, ucp);
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
 1316|      0|      break;
 1317|       |
 1318|       |      /* At least one single char sets the bit and stops */
 1319|       |
 1320|      0|      case OP_EXACT:
  ------------------
  |  Branch (1320:7): [True: 0, False: 790]
  ------------------
 1321|      0|      tcode += IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1322|       |      /* Fall through */
 1323|     98|      case OP_CHAR:
  ------------------
  |  Branch (1323:7): [True: 98, False: 692]
  ------------------
 1324|     99|      case OP_PLUS:
  ------------------
  |  Branch (1324:7): [True: 1, False: 789]
  ------------------
 1325|     99|      case OP_MINPLUS:
  ------------------
  |  Branch (1325:7): [True: 0, False: 790]
  ------------------
 1326|    108|      case OP_POSPLUS:
  ------------------
  |  Branch (1326:7): [True: 9, False: 781]
  ------------------
 1327|    108|      (void)set_table_bit(re, tcode + 1, FALSE, utf, ucp);
  ------------------
  |  |   87|    108|#define FALSE   0
  ------------------
 1328|    108|      try_next = FALSE;
  ------------------
  |  |   87|    108|#define FALSE   0
  ------------------
 1329|    108|      break;
 1330|       |
 1331|      3|      case OP_EXACTI:
  ------------------
  |  Branch (1331:7): [True: 3, False: 787]
  ------------------
 1332|      3|      tcode += IMM2_SIZE;
  ------------------
  |  |  193|      3|#define IMM2_SIZE 2
  ------------------
 1333|       |      /* Fall through */
 1334|    124|      case OP_CHARI:
  ------------------
  |  Branch (1334:7): [True: 121, False: 669]
  ------------------
 1335|    127|      case OP_PLUSI:
  ------------------
  |  Branch (1335:7): [True: 3, False: 787]
  ------------------
 1336|    128|      case OP_MINPLUSI:
  ------------------
  |  Branch (1336:7): [True: 1, False: 789]
  ------------------
 1337|    132|      case OP_POSPLUSI:
  ------------------
  |  Branch (1337:7): [True: 4, False: 786]
  ------------------
 1338|    132|      (void)set_table_bit(re, tcode + 1, TRUE, utf, ucp);
  ------------------
  |  |   88|    132|#define TRUE    1
  ------------------
 1339|    132|      try_next = FALSE;
  ------------------
  |  |   87|    132|#define FALSE   0
  ------------------
 1340|    132|      break;
 1341|       |
 1342|       |      /* Special spacing and line-terminating items. These recognize specific
 1343|       |      lists of characters. The difference between VSPACE and ANYNL is that the
 1344|       |      latter can match the two-character CRLF sequence, but that is not
 1345|       |      relevant for finding the first character, so their code here is
 1346|       |      identical. */
 1347|       |
 1348|      4|      case OP_HSPACE:
  ------------------
  |  Branch (1348:7): [True: 4, False: 786]
  ------------------
 1349|      4|      SET_BIT(CHAR_HT);
  ------------------
  |  |   57|      4|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1350|      4|      SET_BIT(CHAR_SPACE);
  ------------------
  |  |   57|      4|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1351|       |
 1352|       |      /* For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
 1353|       |      the bits for 0xA0 and for code units >= 255, independently of UTF. */
 1354|       |
 1355|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 1356|       |      SET_BIT(0xA0);
 1357|       |      SET_BIT(0xFF);
 1358|       |#else
 1359|       |      /* For the 8-bit library in UTF-8 mode, set the bits for the first code
 1360|       |      units of horizontal space characters. */
 1361|       |
 1362|      4|#ifdef SUPPORT_UNICODE
 1363|      4|      if (utf)
  ------------------
  |  Branch (1363:11): [True: 0, False: 4]
  ------------------
 1364|      0|        {
 1365|      0|        SET_BIT(0xC2);  /* For U+00A0 */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1366|      0|        SET_BIT(0xE1);  /* For U+1680, U+180E */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1367|      0|        SET_BIT(0xE2);  /* For U+2000 - U+200A, U+202F, U+205F */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1368|      0|        SET_BIT(0xE3);  /* For U+3000 */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1369|      0|        }
 1370|      4|      else
 1371|      4|#endif
 1372|       |      /* For the 8-bit library not in UTF-8 mode, set the bit for 0xA0, unless
 1373|       |      the code is EBCDIC. */
 1374|      4|        {
 1375|      4|#ifndef EBCDIC
 1376|      4|        SET_BIT(0xA0);
  ------------------
  |  |   57|      4|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1377|      4|#endif  /* Not EBCDIC */
 1378|      4|        }
 1379|      4|#endif  /* 8-bit support */
 1380|       |
 1381|      4|      try_next = FALSE;
  ------------------
  |  |   87|      4|#define FALSE   0
  ------------------
 1382|      4|      break;
 1383|       |
 1384|     27|      case OP_ANYNL:
  ------------------
  |  Branch (1384:7): [True: 27, False: 763]
  ------------------
 1385|     29|      case OP_VSPACE:
  ------------------
  |  Branch (1385:7): [True: 2, False: 788]
  ------------------
 1386|     29|      SET_BIT(CHAR_LF);
  ------------------
  |  |   57|     29|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1387|     29|      SET_BIT(CHAR_VT);
  ------------------
  |  |   57|     29|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1388|     29|      SET_BIT(CHAR_FF);
  ------------------
  |  |   57|     29|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1389|     29|      SET_BIT(CHAR_CR);
  ------------------
  |  |   57|     29|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1390|       |
 1391|       |      /* For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
 1392|       |      the bits for NEL and for code units >= 255, independently of UTF. */
 1393|       |
 1394|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 1395|       |      SET_BIT(CHAR_NEL);
 1396|       |      SET_BIT(0xFF);
 1397|       |#else
 1398|       |      /* For the 8-bit library in UTF-8 mode, set the bits for the first code
 1399|       |      units of vertical space characters. */
 1400|       |
 1401|     29|#ifdef SUPPORT_UNICODE
 1402|     29|      if (utf)
  ------------------
  |  Branch (1402:11): [True: 18, False: 11]
  ------------------
 1403|     18|        {
 1404|     18|        SET_BIT(0xC2);  /* For U+0085 (NEL) */
  ------------------
  |  |   57|     18|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1405|     18|        SET_BIT(0xE2);  /* For U+2028, U+2029 */
  ------------------
  |  |   57|     18|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1406|     18|        }
 1407|     11|      else
 1408|     11|#endif
 1409|       |      /* For the 8-bit library not in UTF-8 mode, set the bit for NEL. */
 1410|     11|        {
 1411|     11|        SET_BIT(CHAR_NEL);
  ------------------
  |  |   57|     11|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1412|     11|        }
 1413|     29|#endif  /* 8-bit support */
 1414|       |
 1415|     29|      try_next = FALSE;
  ------------------
  |  |   87|     29|#define FALSE   0
  ------------------
 1416|     29|      break;
 1417|       |
 1418|       |      /* Single character types set the bits and stop. Note that if PCRE2_UCP
 1419|       |      is set, we do not see these opcodes because \d etc are converted to
 1420|       |      properties. Therefore, these apply in the case when only characters less
 1421|       |      than 256 are recognized to match the types. */
 1422|       |
 1423|      0|      case OP_NOT_DIGIT:
  ------------------
  |  Branch (1423:7): [True: 0, False: 790]
  ------------------
 1424|      0|      set_nottype_bits(re, cbit_digit, table_limit);
  ------------------
  |  |  583|      0|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
 1425|      0|      try_next = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1426|      0|      break;
 1427|       |
 1428|      0|      case OP_DIGIT:
  ------------------
  |  Branch (1428:7): [True: 0, False: 790]
  ------------------
 1429|      0|      set_type_bits(re, cbit_digit, table_limit);
  ------------------
  |  |  583|      0|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
 1430|      0|      try_next = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1431|      0|      break;
 1432|       |
 1433|      0|      case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (1433:7): [True: 0, False: 790]
  ------------------
 1434|      0|      set_nottype_bits(re, cbit_space, table_limit);
  ------------------
  |  |  581|      0|#define cbit_space     0      /* [:space:] or \s */
  ------------------
 1435|      0|      try_next = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1436|      0|      break;
 1437|       |
 1438|     11|      case OP_WHITESPACE:
  ------------------
  |  Branch (1438:7): [True: 11, False: 779]
  ------------------
 1439|     11|      set_type_bits(re, cbit_space, table_limit);
  ------------------
  |  |  581|     11|#define cbit_space     0      /* [:space:] or \s */
  ------------------
 1440|     11|      try_next = FALSE;
  ------------------
  |  |   87|     11|#define FALSE   0
  ------------------
 1441|     11|      break;
 1442|       |
 1443|      2|      case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (1443:7): [True: 2, False: 788]
  ------------------
 1444|      2|      set_nottype_bits(re, cbit_word, table_limit);
  ------------------
  |  |  586|      2|#define cbit_word    160      /* [:word:] or \w */
  ------------------
 1445|      2|      try_next = FALSE;
  ------------------
  |  |   87|      2|#define FALSE   0
  ------------------
 1446|      2|      break;
 1447|       |
 1448|      5|      case OP_WORDCHAR:
  ------------------
  |  Branch (1448:7): [True: 5, False: 785]
  ------------------
 1449|      5|      set_type_bits(re, cbit_word, table_limit);
  ------------------
  |  |  586|      5|#define cbit_word    160      /* [:word:] or \w */
  ------------------
 1450|      5|      try_next = FALSE;
  ------------------
  |  |   87|      5|#define FALSE   0
  ------------------
 1451|      5|      break;
 1452|       |
 1453|       |      /* One or more character type fudges the pointer and restarts, knowing
 1454|       |      it will hit a single character type and stop there. */
 1455|       |
 1456|     58|      case OP_TYPEPLUS:
  ------------------
  |  Branch (1456:7): [True: 58, False: 732]
  ------------------
 1457|     84|      case OP_TYPEMINPLUS:
  ------------------
  |  Branch (1457:7): [True: 26, False: 764]
  ------------------
 1458|     97|      case OP_TYPEPOSPLUS:
  ------------------
  |  Branch (1458:7): [True: 13, False: 777]
  ------------------
 1459|     97|      tcode++;
 1460|     97|      break;
 1461|       |
 1462|      0|      case OP_TYPEEXACT:
  ------------------
  |  Branch (1462:7): [True: 0, False: 790]
  ------------------
 1463|      0|      tcode += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1464|      0|      break;
 1465|       |
 1466|       |      /* Zero or more repeats of character types set the bits and then
 1467|       |      try again. */
 1468|       |
 1469|      0|      case OP_TYPEUPTO:
  ------------------
  |  Branch (1469:7): [True: 0, False: 790]
  ------------------
 1470|      0|      case OP_TYPEMINUPTO:
  ------------------
  |  Branch (1470:7): [True: 0, False: 790]
  ------------------
 1471|      0|      case OP_TYPEPOSUPTO:
  ------------------
  |  Branch (1471:7): [True: 0, False: 790]
  ------------------
 1472|      0|      tcode += IMM2_SIZE;  /* Fall through */
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
 1473|       |
 1474|      6|      case OP_TYPESTAR:
  ------------------
  |  Branch (1474:7): [True: 6, False: 784]
  ------------------
 1475|      6|      case OP_TYPEMINSTAR:
  ------------------
  |  Branch (1475:7): [True: 0, False: 790]
  ------------------
 1476|      8|      case OP_TYPEPOSSTAR:
  ------------------
  |  Branch (1476:7): [True: 2, False: 788]
  ------------------
 1477|     12|      case OP_TYPEQUERY:
  ------------------
  |  Branch (1477:7): [True: 4, False: 786]
  ------------------
 1478|     16|      case OP_TYPEMINQUERY:
  ------------------
  |  Branch (1478:7): [True: 4, False: 786]
  ------------------
 1479|     35|      case OP_TYPEPOSQUERY:
  ------------------
  |  Branch (1479:7): [True: 19, False: 771]
  ------------------
 1480|     35|      switch(tcode[1])
 1481|     35|        {
 1482|      6|        default:
  ------------------
  |  Branch (1482:9): [True: 6, False: 29]
  ------------------
 1483|      9|        case OP_ANY:
  ------------------
  |  Branch (1483:9): [True: 3, False: 32]
  ------------------
 1484|      9|        case OP_ALLANY:
  ------------------
  |  Branch (1484:9): [True: 0, False: 35]
  ------------------
 1485|      9|        return SSB_FAIL;
 1486|       |
 1487|      0|        case OP_HSPACE:
  ------------------
  |  Branch (1487:9): [True: 0, False: 35]
  ------------------
 1488|      0|        SET_BIT(CHAR_HT);
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1489|      0|        SET_BIT(CHAR_SPACE);
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1490|       |
 1491|       |        /* For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
 1492|       |        the bits for 0xA0 and for code units >= 255, independently of UTF. */
 1493|       |
 1494|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 1495|       |        SET_BIT(0xA0);
 1496|       |        SET_BIT(0xFF);
 1497|       |#else
 1498|       |        /* For the 8-bit library in UTF-8 mode, set the bits for the first code
 1499|       |        units of horizontal space characters. */
 1500|       |
 1501|      0|#ifdef SUPPORT_UNICODE
 1502|      0|        if (utf)
  ------------------
  |  Branch (1502:13): [True: 0, False: 0]
  ------------------
 1503|      0|          {
 1504|      0|          SET_BIT(0xC2);  /* For U+00A0 */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1505|      0|          SET_BIT(0xE1);  /* For U+1680, U+180E */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1506|      0|          SET_BIT(0xE2);  /* For U+2000 - U+200A, U+202F, U+205F */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1507|      0|          SET_BIT(0xE3);  /* For U+3000 */
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1508|      0|          }
 1509|      0|        else
 1510|      0|#endif
 1511|       |        /* For the 8-bit library not in UTF-8 mode, set the bit for 0xA0, unless
 1512|       |        the code is EBCDIC. */
 1513|      0|          {
 1514|      0|#ifndef EBCDIC
 1515|      0|          SET_BIT(0xA0);
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1516|      0|#endif  /* Not EBCDIC */
 1517|      0|          }
 1518|      0|#endif  /* 8-bit support */
 1519|      0|        break;
 1520|       |
 1521|      2|        case OP_ANYNL:
  ------------------
  |  Branch (1521:9): [True: 2, False: 33]
  ------------------
 1522|      2|        case OP_VSPACE:
  ------------------
  |  Branch (1522:9): [True: 0, False: 35]
  ------------------
 1523|      2|        SET_BIT(CHAR_LF);
  ------------------
  |  |   57|      2|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1524|      2|        SET_BIT(CHAR_VT);
  ------------------
  |  |   57|      2|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1525|      2|        SET_BIT(CHAR_FF);
  ------------------
  |  |   57|      2|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1526|      2|        SET_BIT(CHAR_CR);
  ------------------
  |  |   57|      2|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1527|       |
 1528|       |        /* For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
 1529|       |        the bits for NEL and for code units >= 255, independently of UTF. */
 1530|       |
 1531|       |#if PCRE2_CODE_UNIT_WIDTH != 8
 1532|       |        SET_BIT(CHAR_NEL);
 1533|       |        SET_BIT(0xFF);
 1534|       |#else
 1535|       |        /* For the 8-bit library in UTF-8 mode, set the bits for the first code
 1536|       |        units of vertical space characters. */
 1537|       |
 1538|      2|#ifdef SUPPORT_UNICODE
 1539|      2|        if (utf)
  ------------------
  |  Branch (1539:13): [True: 1, False: 1]
  ------------------
 1540|      1|          {
 1541|      1|          SET_BIT(0xC2);  /* For U+0085 (NEL) */
  ------------------
  |  |   57|      1|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1542|      1|          SET_BIT(0xE2);  /* For U+2028, U+2029 */
  ------------------
  |  |   57|      1|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1543|      1|          }
 1544|      1|        else
 1545|      1|#endif
 1546|       |        /* For the 8-bit library not in UTF-8 mode, set the bit for NEL. */
 1547|      1|          {
 1548|      1|          SET_BIT(CHAR_NEL);
  ------------------
  |  |   57|      1|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
 1549|      1|          }
 1550|      2|#endif  /* 8-bit support */
 1551|      2|        break;
 1552|       |
 1553|      0|        case OP_NOT_DIGIT:
  ------------------
  |  Branch (1553:9): [True: 0, False: 35]
  ------------------
 1554|      0|        set_nottype_bits(re, cbit_digit, table_limit);
  ------------------
  |  |  583|      0|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
 1555|      0|        break;
 1556|       |
 1557|      0|        case OP_DIGIT:
  ------------------
  |  Branch (1557:9): [True: 0, False: 35]
  ------------------
 1558|      0|        set_type_bits(re, cbit_digit, table_limit);
  ------------------
  |  |  583|      0|#define cbit_digit    64      /* [:digit:] or \d */
  ------------------
 1559|      0|        break;
 1560|       |
 1561|      1|        case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (1561:9): [True: 1, False: 34]
  ------------------
 1562|      1|        set_nottype_bits(re, cbit_space, table_limit);
  ------------------
  |  |  581|      1|#define cbit_space     0      /* [:space:] or \s */
  ------------------
 1563|      1|        break;
 1564|       |
 1565|      5|        case OP_WHITESPACE:
  ------------------
  |  Branch (1565:9): [True: 5, False: 30]
  ------------------
 1566|      5|        set_type_bits(re, cbit_space, table_limit);
  ------------------
  |  |  581|      5|#define cbit_space     0      /* [:space:] or \s */
  ------------------
 1567|      5|        break;
 1568|       |
 1569|      0|        case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (1569:9): [True: 0, False: 35]
  ------------------
 1570|      0|        set_nottype_bits(re, cbit_word, table_limit);
  ------------------
  |  |  586|      0|#define cbit_word    160      /* [:word:] or \w */
  ------------------
 1571|      0|        break;
 1572|       |
 1573|     18|        case OP_WORDCHAR:
  ------------------
  |  Branch (1573:9): [True: 18, False: 17]
  ------------------
 1574|     18|        set_type_bits(re, cbit_word, table_limit);
  ------------------
  |  |  586|     18|#define cbit_word    160      /* [:word:] or \w */
  ------------------
 1575|     18|        break;
 1576|     35|        }
 1577|       |
 1578|     26|      tcode += 2;
 1579|     26|      break;
 1580|       |
 1581|       |      /* Extended class: if there are any property checks, or if this is a
 1582|       |      negative XCLASS without a map, give up. If there are no property checks,
 1583|       |      there must be wide characters on the XCLASS list, because otherwise an
 1584|       |      XCLASS would not have been created. This means that code points >= 255
 1585|       |      are potential starters. In the UTF-8 case we can scan them and set bits
 1586|       |      for the relevant leading bytes. */
 1587|       |
 1588|      0|#ifdef SUPPORT_WIDE_CHARS
 1589|     15|      case OP_XCLASS:
  ------------------
  |  Branch (1589:7): [True: 15, False: 775]
  ------------------
 1590|     15|      xclassflags = tcode[1 + LINK_SIZE];
  ------------------
  |  |   98|     15|#define LINK_SIZE 2
  ------------------
 1591|     15|      if ((xclassflags & XCL_HASPROP) != 0 ||
  ------------------
  |  | 1330|     15|#define XCL_HASPROP  0x04  /* Flag: property checks are present. */
  ------------------
  |  Branch (1591:11): [True: 5, False: 10]
  ------------------
 1592|     10|          (xclassflags & (XCL_MAP|XCL_NOT)) == XCL_NOT)
  ------------------
  |  | 1329|     10|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
                        (xclassflags & (XCL_MAP|XCL_NOT)) == XCL_NOT)
  ------------------
  |  | 1328|     10|#define XCL_NOT      0x01  /* Flag: this is a negative class */
  ------------------
                        (xclassflags & (XCL_MAP|XCL_NOT)) == XCL_NOT)
  ------------------
  |  | 1328|     10|#define XCL_NOT      0x01  /* Flag: this is a negative class */
  ------------------
  |  Branch (1592:11): [True: 0, False: 10]
  ------------------
 1593|      5|        return SSB_FAIL;
 1594|       |
 1595|       |      /* We have a positive XCLASS or a negative one without a map. Set up the
 1596|       |      map pointer if there is one, and fall through. */
 1597|       |
 1598|     10|      classmap = ((xclassflags & XCL_MAP) == 0)? NULL :
  ------------------
  |  | 1329|     10|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
  |  Branch (1598:18): [True: 0, False: 10]
  ------------------
 1599|     10|        (uint8_t *)(tcode + 1 + LINK_SIZE + 1);
  ------------------
  |  |   98|     10|#define LINK_SIZE 2
  ------------------
 1600|       |
 1601|       |      /* In UTF-8 mode, scan the character list and set bits for leading bytes,
 1602|       |      then jump to handle the map. */
 1603|       |
 1604|     10|#if PCRE2_CODE_UNIT_WIDTH == 8
 1605|     10|      if (utf && (xclassflags & XCL_NOT) == 0)
  ------------------
  |  | 1328|     10|#define XCL_NOT      0x01  /* Flag: this is a negative class */
  ------------------
  |  Branch (1605:11): [True: 10, False: 0]
  |  Branch (1605:18): [True: 5, False: 5]
  ------------------
 1606|      5|        {
 1607|      5|        PCRE2_UCHAR b, e;
  ------------------
  |  |  819|      5|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      5|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      5|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      5|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1608|      5|        PCRE2_SPTR p = tcode + 1 + LINK_SIZE + 1 + ((classmap == NULL)? 0:32);
  ------------------
  |  |  820|      5|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|      5|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      5|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      5|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PCRE2_SPTR p = tcode + 1 + LINK_SIZE + 1 + ((classmap == NULL)? 0:32);
  ------------------
  |  |   98|      5|#define LINK_SIZE 2
  ------------------
  |  Branch (1608:53): [True: 0, False: 5]
  ------------------
 1609|      5|        tcode += GET(tcode, 1);
  ------------------
  |  |  109|      5|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1610|       |
 1611|     62|        for (;;) switch (*p++)
 1612|     62|          {
 1613|     27|          case XCL_SINGLE:
  ------------------
  |  | 1333|     27|#define XCL_SINGLE   1     /* Single item (one multibyte char) follows */
  ------------------
  |  Branch (1613:11): [True: 27, False: 35]
  ------------------
 1614|     27|          b = *p++;
 1615|     79|          while ((*p & 0xc0) == 0x80) p++;
  ------------------
  |  Branch (1615:18): [True: 52, False: 27]
  ------------------
 1616|     27|          re->start_bitmap[b/8] |= (1u << (b&7));
 1617|     27|          break;
 1618|       |
 1619|     30|          case XCL_RANGE:
  ------------------
  |  | 1334|     30|#define XCL_RANGE    2     /* A range (two multibyte chars) follows */
  ------------------
  |  Branch (1619:11): [True: 30, False: 32]
  ------------------
 1620|     30|          b = *p++;
 1621|     85|          while ((*p & 0xc0) == 0x80) p++;
  ------------------
  |  Branch (1621:18): [True: 55, False: 30]
  ------------------
 1622|     30|          e = *p++;
 1623|     93|          while ((*p & 0xc0) == 0x80) p++;
  ------------------
  |  Branch (1623:18): [True: 63, False: 30]
  ------------------
 1624|    251|          for (; b <= e; b++)
  ------------------
  |  Branch (1624:18): [True: 221, False: 30]
  ------------------
 1625|    221|            re->start_bitmap[b/8] |= (1u << (b&7));
 1626|     30|          break;
 1627|       |
 1628|      5|          case XCL_END:
  ------------------
  |  | 1332|      5|#define XCL_END      0     /* Marks end of individual items */
  ------------------
  |  Branch (1628:11): [True: 5, False: 57]
  ------------------
 1629|      5|          goto HANDLE_CLASSMAP;
 1630|       |
 1631|      0|          default:
  ------------------
  |  Branch (1631:11): [True: 0, False: 62]
  ------------------
 1632|      0|          return SSB_UNKNOWN;   /* Internal error, should not occur */
 1633|     62|          }
 1634|      5|        }
 1635|      5|#endif  /* SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8 */
 1636|      5|#endif  /* SUPPORT_WIDE_CHARS */
 1637|       |
 1638|       |      /* It seems that the fall through comment must be outside the #ifdef if
 1639|       |      it is to avoid the gcc compiler warning. */
 1640|       |
 1641|       |      /* Fall through */
 1642|       |
 1643|       |      /* Enter here for a negative non-XCLASS. In the 8-bit library, if we are
 1644|       |      in UTF mode, any byte with a value >= 0xc4 is a potentially valid starter
 1645|       |      because it starts a character with a value > 255. In 8-bit non-UTF mode,
 1646|       |      there is no difference between CLASS and NCLASS. In all other wide
 1647|       |      character modes, set the 0xFF bit to indicate code units >= 255. */
 1648|       |
 1649|     24|      case OP_NCLASS:
  ------------------
  |  Branch (1649:7): [True: 19, False: 771]
  ------------------
 1650|     24|#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8
 1651|     24|      if (utf)
  ------------------
  |  Branch (1651:11): [True: 16, False: 8]
  ------------------
 1652|     16|        {
 1653|     16|        re->start_bitmap[24] |= 0xf0;            /* Bits for 0xc4 - 0xc8 */
 1654|     16|        memset(re->start_bitmap+25, 0xff, 7);    /* Bits for 0xc9 - 0xff */
 1655|     16|        }
 1656|       |#elif PCRE2_CODE_UNIT_WIDTH != 8
 1657|       |      SET_BIT(0xFF);                             /* For characters >= 255 */
 1658|       |#endif
 1659|       |      /* Fall through */
 1660|       |
 1661|       |      /* Enter here for a positive non-XCLASS. If we have fallen through from
 1662|       |      an XCLASS, classmap will already be set; just advance the code pointer.
 1663|       |      Otherwise, set up classmap for a a non-XCLASS and advance past it. */
 1664|       |
 1665|     45|      case OP_CLASS:
  ------------------
  |  Branch (1665:7): [True: 21, False: 769]
  ------------------
 1666|     45|      if (*tcode == OP_XCLASS) tcode += GET(tcode, 1); else
  ------------------
  |  |  109|      5|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (1666:11): [True: 5, False: 40]
  ------------------
 1667|     40|        {
 1668|     40|        classmap = (uint8_t *)(++tcode);
 1669|     40|        tcode += 32 / sizeof(PCRE2_UCHAR);
 1670|     40|        }
 1671|       |
 1672|       |      /* When wide characters are supported, classmap may be NULL. In UTF-8
 1673|       |      (sic) mode, the bits in a class bit map correspond to character values,
 1674|       |      not to byte values. However, the bit map we are constructing is for byte
 1675|       |      values. So we have to do a conversion for characters whose code point is
 1676|       |      greater than 127. In fact, there are only two possible starting bytes for
 1677|       |      characters in the range 128 - 255. */
 1678|       |
 1679|     45|#if defined SUPPORT_WIDE_CHARS && PCRE2_CODE_UNIT_WIDTH == 8
 1680|     50|      HANDLE_CLASSMAP:
 1681|     50|#endif
 1682|     50|      if (classmap != NULL)
  ------------------
  |  Branch (1682:11): [True: 50, False: 0]
  ------------------
 1683|     50|        {
 1684|     50|#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8
 1685|     50|        if (utf)
  ------------------
  |  Branch (1685:13): [True: 25, False: 25]
  ------------------
 1686|     25|          {
 1687|    425|          for (c = 0; c < 16; c++) re->start_bitmap[c] |= classmap[c];
  ------------------
  |  Branch (1687:23): [True: 400, False: 25]
  ------------------
 1688|    831|          for (c = 128; c < 256; c++)
  ------------------
  |  Branch (1688:25): [True: 806, False: 25]
  ------------------
 1689|    806|            {
 1690|    806|            if ((classmap[c/8] & (1u << (c&7))) != 0)
  ------------------
  |  Branch (1690:17): [True: 38, False: 768]
  ------------------
 1691|     38|              {
 1692|     38|              int d = (c >> 6) | 0xc0;                 /* Set bit for this starter */
 1693|     38|              re->start_bitmap[d/8] |= (1u << (d&7));  /* and then skip on to the */
 1694|     38|              c = (c & 0xc0) + 0x40 - 1;               /* next relevant character. */
 1695|     38|              }
 1696|    806|            }
 1697|     25|          }
 1698|     25|        else
 1699|     25|#endif
 1700|       |        /* In all modes except UTF-8, the two bit maps are compatible. */
 1701|       |
 1702|     25|          {
 1703|    825|          for (c = 0; c < 32; c++) re->start_bitmap[c] |= classmap[c];
  ------------------
  |  Branch (1703:23): [True: 800, False: 25]
  ------------------
 1704|     25|          }
 1705|     50|        }
 1706|       |
 1707|       |      /* Act on what follows the class. For a zero minimum repeat, continue;
 1708|       |      otherwise stop processing. */
 1709|       |
 1710|     50|      switch (*tcode)
 1711|     50|        {
 1712|      3|        case OP_CRSTAR:
  ------------------
  |  Branch (1712:9): [True: 3, False: 47]
  ------------------
 1713|      9|        case OP_CRMINSTAR:
  ------------------
  |  Branch (1713:9): [True: 6, False: 44]
  ------------------
 1714|     17|        case OP_CRQUERY:
  ------------------
  |  Branch (1714:9): [True: 8, False: 42]
  ------------------
 1715|     23|        case OP_CRMINQUERY:
  ------------------
  |  Branch (1715:9): [True: 6, False: 44]
  ------------------
 1716|     27|        case OP_CRPOSSTAR:
  ------------------
  |  Branch (1716:9): [True: 4, False: 46]
  ------------------
 1717|     28|        case OP_CRPOSQUERY:
  ------------------
  |  Branch (1717:9): [True: 1, False: 49]
  ------------------
 1718|     28|        tcode++;
 1719|     28|        break;
 1720|       |
 1721|      0|        case OP_CRRANGE:
  ------------------
  |  Branch (1721:9): [True: 0, False: 50]
  ------------------
 1722|      0|        case OP_CRMINRANGE:
  ------------------
  |  Branch (1722:9): [True: 0, False: 50]
  ------------------
 1723|      0|        case OP_CRPOSRANGE:
  ------------------
  |  Branch (1723:9): [True: 0, False: 50]
  ------------------
 1724|      0|        if (GET2(tcode, 1) == 0) tcode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
                      if (GET2(tcode, 1) == 0) tcode += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (1724:13): [True: 0, False: 0]
  ------------------
 1725|      0|          else try_next = FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
 1726|      0|        break;
 1727|       |
 1728|     22|        default:
  ------------------
  |  Branch (1728:9): [True: 22, False: 28]
  ------------------
 1729|     22|        try_next = FALSE;
  ------------------
  |  |   87|     22|#define FALSE   0
  ------------------
 1730|     22|        break;
 1731|     50|        }
 1732|     50|      break; /* End of class handling case */
 1733|    790|      }      /* End of switch for opcodes */
 1734|    790|    }        /* End of try_next loop */
 1735|       |
 1736|    349|  code += GET(code, 1);   /* Advance to next branch */
  ------------------
  |  |  109|    349|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
 1737|    349|  }
 1738|    349|while (*code == OP_ALT);
  ------------------
  |  Branch (1738:8): [True: 248, False: 101]
  ------------------
 1739|       |
 1740|    101|return yield;
 1741|    263|}
pcre2_study.c:set_table_bit:
  786|    312|{
  787|    312|uint32_t c = *p++;   /* First code unit */
  788|       |
  789|    312|(void)utf;           /* Stop compiler warnings when UTF not supported */
  790|    312|(void)ucp;
  791|       |
  792|       |/* In 16-bit and 32-bit modes, code units greater than 0xff set the bit for
  793|       |0xff. */
  794|       |
  795|       |#if PCRE2_CODE_UNIT_WIDTH != 8
  796|       |if (c > 0xff) SET_BIT(0xff); else
  797|       |#endif
  798|       |
  799|    312|SET_BIT(c);
  ------------------
  |  |   57|    312|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
  800|       |
  801|       |/* In UTF-8 or UTF-16 mode, pick up the remaining code units in order to find
  802|       |the end of the character, even when caseless. */
  803|       |
  804|    312|#ifdef SUPPORT_UNICODE
  805|    312|if (utf)
  ------------------
  |  Branch (805:5): [True: 94, False: 218]
  ------------------
  806|     94|  {
  807|     94|#if PCRE2_CODE_UNIT_WIDTH == 8
  808|     94|  if (c >= 0xc0) GETUTF8INC(c, p);
  ------------------
  |  |  306|      2|    { \
  |  |  307|      2|    if ((c & 0x20u) == 0) \
  |  |  ------------------
  |  |  |  Branch (307:9): [True: 1, False: 1]
  |  |  ------------------
  |  |  308|      2|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  309|      2|    else if ((c & 0x10u) == 0) \
  |  |  ------------------
  |  |  |  Branch (309:14): [True: 0, False: 1]
  |  |  ------------------
  |  |  310|      1|      { \
  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  312|      0|      eptr += 2; \
  |  |  313|      0|      } \
  |  |  314|      1|    else if ((c & 0x08u) == 0) \
  |  |  ------------------
  |  |  |  Branch (314:14): [True: 1, False: 0]
  |  |  ------------------
  |  |  315|      1|      { \
  |  |  316|      1|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  317|      1|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  318|      1|      eptr += 3; \
  |  |  319|      1|      } \
  |  |  320|      1|    else if ((c & 0x04u) == 0) \
  |  |  ------------------
  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  ------------------
  |  |  321|      0|      { \
  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  325|      0|      eptr += 4; \
  |  |  326|      0|      } \
  |  |  327|      0|    else \
  |  |  328|      0|      { \
  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  332|      0|      eptr += 5; \
  |  |  333|      0|      } \
  |  |  334|      2|    }
  ------------------
  |  Branch (808:7): [True: 2, False: 92]
  ------------------
  809|       |#elif PCRE2_CODE_UNIT_WIDTH == 16
  810|       |  if ((c & 0xfc00) == 0xd800) GETUTF16INC(c, p);
  811|       |#endif
  812|     94|  }
  813|    312|#endif  /* SUPPORT_UNICODE */
  814|       |
  815|       |/* If caseless, handle the other case of the character. */
  816|       |
  817|    312|if (caseless)
  ------------------
  |  Branch (817:5): [True: 175, False: 137]
  ------------------
  818|    175|  {
  819|    175|#ifdef SUPPORT_UNICODE
  820|    175|  if (utf || ucp)
  ------------------
  |  Branch (820:7): [True: 73, False: 102]
  |  Branch (820:14): [True: 0, False: 102]
  ------------------
  821|     73|    {
  822|     73|    c = UCD_OTHERCASE(c);
  ------------------
  |  | 1889|     73|#define UCD_OTHERCASE(ch)   ((uint32_t)((int)ch + (int)(GET_UCD(ch)->other_case)))
  |  |  ------------------
  |  |  |  | 1873|     73|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1865|     73|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     73|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1960|     73|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     73|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     73|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     73|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1866|     73|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     73|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1962|     73|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     73|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     73|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     73|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  195|     73|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1961|     73|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     73|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  813|     73|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     73|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     73|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1867|     73|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     73|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1864|     73|#define UCD_BLOCK_SIZE 128
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  823|     73|#if PCRE2_CODE_UNIT_WIDTH == 8
  824|     73|    if (utf)
  ------------------
  |  Branch (824:9): [True: 73, False: 0]
  ------------------
  825|     73|      {
  826|     73|      PCRE2_UCHAR buff[6];
  ------------------
  |  |  819|     73|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|     73|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     73|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     73|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  827|     73|      (void)PRIV(ord2utf)(c, buff);
  ------------------
  |  |  195|     73|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|     73|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     73|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     73|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     73|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|     73|      SET_BIT(buff[0]);
  ------------------
  |  |   57|     73|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
  829|     73|      }
  830|      0|    else if (c < 256) SET_BIT(c);
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
  |  Branch (830:14): [True: 0, False: 0]
  ------------------
  831|       |#else  /* 16-bit or 32-bit mode */
  832|       |    if (c > 0xff) SET_BIT(0xff); else SET_BIT(c);
  833|       |#endif
  834|     73|    }
  835|       |
  836|    102|  else
  837|    102|#endif  /* SUPPORT_UNICODE */
  838|       |
  839|       |  /* Not UTF or UCP */
  840|       |
  841|    102|  if (MAX_255(c)) SET_BIT(re->tables[fcc_offset + c]);
  ------------------
  |  |  212|    102|#define MAX_255(c) TRUE
  |  |  ------------------
  |  |  |  |   88|    102|#define TRUE    1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (88:17): [True: 102, Folded]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (MAX_255(c)) SET_BIT(re->tables[fcc_offset + c]);
  ------------------
  |  |   57|    102|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
  842|    175|  }
  843|       |
  844|    312|return p;
  845|    312|}
pcre2_study.c:set_nottype_bits:
  911|      3|{
  912|      3|uint32_t c;
  913|     99|for (c = 0; c < table_limit; c++)
  ------------------
  |  Branch (913:13): [True: 96, False: 3]
  ------------------
  914|     96|  re->start_bitmap[c] |= (uint8_t)(~(re->tables[c+cbits_offset+cbit_type]));
  ------------------
  |  |  608|     96|#define cbits_offset  512                           /* Character classes */
  ------------------
  915|      3|#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8
  916|      3|if (table_limit != 32) for (c = 24; c < 32; c++) re->start_bitmap[c] = 0xff;
  ------------------
  |  Branch (916:5): [True: 0, False: 3]
  |  Branch (916:37): [True: 0, False: 0]
  ------------------
  917|      3|#endif
  918|      3|}
pcre2_study.c:set_type_bits:
  870|     39|{
  871|     39|uint32_t c;
  872|  1.28k|for (c = 0; c < table_limit; c++)
  ------------------
  |  Branch (872:13): [True: 1.24k, False: 39]
  ------------------
  873|  1.24k|  re->start_bitmap[c] |= re->tables[c+cbits_offset+cbit_type];
  ------------------
  |  |  608|  1.24k|#define cbits_offset  512                           /* Character classes */
  ------------------
  874|     39|#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH == 8
  875|     39|if (table_limit == 32) return;
  ------------------
  |  Branch (875:5): [True: 39, False: 0]
  ------------------
  876|      0|for (c = 128; c < 256; c++)
  ------------------
  |  Branch (876:15): [True: 0, False: 0]
  ------------------
  877|      0|  {
  878|      0|  if ((re->tables[cbits_offset + c/8] & (1u << (c&7))) != 0)
  ------------------
  |  |  608|      0|#define cbits_offset  512                           /* Character classes */
  ------------------
  |  Branch (878:7): [True: 0, False: 0]
  ------------------
  879|      0|    {
  880|      0|    PCRE2_UCHAR buff[6];
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  881|      0|    (void)PRIV(ord2utf)(c, buff);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2030|      0|#define _pcre2_ord2utf               PCRE2_SUFFIX(_pcre2_ord2utf_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  882|      0|    SET_BIT(buff[0]);
  ------------------
  |  |   57|      0|#define SET_BIT(c) re->start_bitmap[(c)/8] |= (1u << ((c)&7))
  ------------------
  883|      0|    }
  884|      0|  }
  885|      0|#endif  /* UTF-8 */
  886|      0|}
pcre2_study.c:find_minlength:
  106|    299|{
  107|    299|int length = -1;
  108|    299|int branchlength = 0;
  109|    299|int prev_cap_recno = -1;
  110|    299|int prev_cap_d = 0;
  111|    299|int prev_recurse_recno = -1;
  112|    299|int prev_recurse_d = 0;
  113|    299|uint32_t once_fudge = 0;
  114|    299|BOOL had_recurse = FALSE;
  ------------------
  |  |   87|    299|#define FALSE   0
  ------------------
  115|    299|BOOL dupcapused = (re->flags & PCRE2_DUPCAPUSED) != 0;
  ------------------
  |  |  546|    299|#define PCRE2_DUPCAPUSED    0x00200000  /* contains (?| */
  ------------------
  116|    299|PCRE2_SPTR nextbranch = code + GET(code, 1);
  ------------------
  |  |  820|    299|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    299|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    299|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    299|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              PCRE2_SPTR nextbranch = code + GET(code, 1);
  ------------------
  |  |  109|    299|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  117|    299|PCRE2_UCHAR *cc = (PCRE2_UCHAR *)code + 1 + LINK_SIZE;
  ------------------
  |  |  819|    299|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    299|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    299|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    299|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              PCRE2_UCHAR *cc = (PCRE2_UCHAR *)code + 1 + LINK_SIZE;
  ------------------
  |  |   98|    299|#define LINK_SIZE 2
  ------------------
  118|    299|recurse_check this_recurse;
  119|       |
  120|       |/* If this is a "could be empty" group, its minimum length is 0. */
  121|       |
  122|    299|if (*code >= OP_SBRA && *code <= OP_SCOND) return 0;
  ------------------
  |  Branch (122:5): [True: 0, False: 299]
  |  Branch (122:25): [True: 0, False: 0]
  ------------------
  123|       |
  124|       |/* Skip over capturing bracket number */
  125|       |
  126|    299|if (*code == OP_CBRA || *code == OP_CBRAPOS) cc += IMM2_SIZE;
  ------------------
  |  |  193|     11|#define IMM2_SIZE 2
  ------------------
  |  Branch (126:5): [True: 11, False: 288]
  |  Branch (126:25): [True: 0, False: 288]
  ------------------
  127|       |
  128|       |/* A large and/or complex regex can take too long to process. */
  129|       |
  130|    299|if ((*countptr)++ > 1000) return -1;
  ------------------
  |  Branch (130:5): [True: 0, False: 299]
  ------------------
  131|       |
  132|       |/* Scan along the opcodes for this branch. If we get to the end of the branch,
  133|       |check the length against that of the other branches. If the accumulated length
  134|       |passes 16-bits, reset to that value and skip the rest of the branch. */
  135|       |
  136|    299|for (;;)
  137|  9.55k|  {
  138|  9.55k|  int d, min, recno;
  139|  9.55k|  PCRE2_UCHAR op, *cs, *ce;
  ------------------
  |  |  819|  9.55k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  9.55k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  9.55k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  9.55k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|       |
  141|  9.55k|  if (branchlength >= UINT16_MAX)
  ------------------
  |  Branch (141:7): [True: 0, False: 9.55k]
  ------------------
  142|      0|    {
  143|      0|    branchlength = UINT16_MAX;
  144|      0|    cc = (PCRE2_UCHAR *)nextbranch;
  145|      0|    }
  146|       |
  147|  9.55k|  op = *cc;
  148|  9.55k|  switch (op)
  149|  9.55k|    {
  150|      0|    case OP_COND:
  ------------------
  |  Branch (150:5): [True: 0, False: 9.55k]
  ------------------
  151|      0|    case OP_SCOND:
  ------------------
  |  Branch (151:5): [True: 0, False: 9.55k]
  ------------------
  152|       |
  153|       |    /* If there is only one branch in a condition, the implied branch has zero
  154|       |    length, so we don't add anything. This covers the DEFINE "condition"
  155|       |    automatically. If there are two branches we can treat it the same as any
  156|       |    other non-capturing subpattern. */
  157|       |
  158|      0|    cs = cc + GET(cc, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  159|      0|    if (*cs != OP_ALT)
  ------------------
  |  Branch (159:9): [True: 0, False: 0]
  ------------------
  160|      0|      {
  161|      0|      cc = cs + 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  162|      0|      break;
  163|      0|      }
  164|      0|    goto PROCESS_NON_CAPTURE;
  165|       |
  166|      2|    case OP_BRA:
  ------------------
  |  Branch (166:5): [True: 2, False: 9.55k]
  ------------------
  167|       |    /* There's a special case of OP_BRA, when it is wrapped round a repeated
  168|       |    OP_RECURSE. We'd like to process the latter at this level so that
  169|       |    remembering the value works for repeated cases. So we do nothing, but
  170|       |    set a fudge value to skip over the OP_KET after the recurse. */
  171|       |
  172|      2|    if (cc[1+LINK_SIZE] == OP_RECURSE && cc[2*(1+LINK_SIZE)] == OP_KET)
  ------------------
  |  |   98|      2|#define LINK_SIZE 2
  ------------------
                  if (cc[1+LINK_SIZE] == OP_RECURSE && cc[2*(1+LINK_SIZE)] == OP_KET)
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  |  Branch (172:9): [True: 0, False: 2]
  |  Branch (172:42): [True: 0, False: 0]
  ------------------
  173|      0|      {
  174|      0|      once_fudge = 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  175|      0|      cc += 1 + LINK_SIZE;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  176|      0|      break;
  177|      0|      }
  178|       |    /* Fall through */
  179|       |
  180|      2|    case OP_ONCE:
  ------------------
  |  Branch (180:5): [True: 0, False: 9.55k]
  ------------------
  181|      2|    case OP_SCRIPT_RUN:
  ------------------
  |  Branch (181:5): [True: 0, False: 9.55k]
  ------------------
  182|      2|    case OP_SBRA:
  ------------------
  |  Branch (182:5): [True: 0, False: 9.55k]
  ------------------
  183|      2|    case OP_BRAPOS:
  ------------------
  |  Branch (183:5): [True: 0, False: 9.55k]
  ------------------
  184|      2|    case OP_SBRAPOS:
  ------------------
  |  Branch (184:5): [True: 0, False: 9.55k]
  ------------------
  185|      2|    PROCESS_NON_CAPTURE:
  186|      2|    d = find_minlength(re, cc, startcode, utf, recurses, countptr,
  187|      2|      backref_cache);
  188|      2|    if (d < 0) return d;
  ------------------
  |  Branch (188:9): [True: 0, False: 2]
  ------------------
  189|      2|    branchlength += d;
  190|      4|    do cc += GET(cc, 1); while (*cc == OP_ALT);
  ------------------
  |  |  109|      4|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (190:33): [True: 2, False: 2]
  ------------------
  191|      2|    cc += 1 + LINK_SIZE;
  ------------------
  |  |   98|      2|#define LINK_SIZE 2
  ------------------
  192|      2|    break;
  193|       |
  194|       |    /* To save time for repeated capturing subpatterns, we remember the
  195|       |    length of the previous one. Unfortunately we can't do the same for
  196|       |    the unnumbered ones above. Nor can we do this if (?| is present in the
  197|       |    pattern because captures with the same number are not then identical. */
  198|       |
  199|     11|    case OP_CBRA:
  ------------------
  |  Branch (199:5): [True: 11, False: 9.54k]
  ------------------
  200|     11|    case OP_SCBRA:
  ------------------
  |  Branch (200:5): [True: 0, False: 9.55k]
  ------------------
  201|     11|    case OP_CBRAPOS:
  ------------------
  |  Branch (201:5): [True: 0, False: 9.55k]
  ------------------
  202|     11|    case OP_SCBRAPOS:
  ------------------
  |  Branch (202:5): [True: 0, False: 9.55k]
  ------------------
  203|     11|    recno = (int)GET2(cc, 1+LINK_SIZE);
  ------------------
  |  |  194|     11|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  204|     11|    if (dupcapused || recno != prev_cap_recno)
  ------------------
  |  Branch (204:9): [True: 0, False: 11]
  |  Branch (204:23): [True: 11, False: 0]
  ------------------
  205|     11|      {
  206|     11|      prev_cap_recno = recno;
  207|     11|      prev_cap_d = find_minlength(re, cc, startcode, utf, recurses, countptr,
  208|     11|        backref_cache);
  209|     11|      if (prev_cap_d < 0) return prev_cap_d;
  ------------------
  |  Branch (209:11): [True: 0, False: 11]
  ------------------
  210|     11|      }
  211|     11|    branchlength += prev_cap_d;
  212|     12|    do cc += GET(cc, 1); while (*cc == OP_ALT);
  ------------------
  |  |  109|     12|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (212:33): [True: 1, False: 11]
  ------------------
  213|     11|    cc += 1 + LINK_SIZE;
  ------------------
  |  |   98|     11|#define LINK_SIZE 2
  ------------------
  214|     11|    break;
  215|       |
  216|       |    /* ACCEPT makes things far too complicated; we have to give up. In fact,
  217|       |    from 10.34 onwards, if a pattern contains (*ACCEPT), this function is not
  218|       |    used. However, leave the code in place, just in case. */
  219|       |
  220|      0|    case OP_ACCEPT:
  ------------------
  |  Branch (220:5): [True: 0, False: 9.55k]
  ------------------
  221|      0|    case OP_ASSERT_ACCEPT:
  ------------------
  |  Branch (221:5): [True: 0, False: 9.55k]
  ------------------
  222|      0|    return -1;
  223|       |
  224|       |    /* Reached end of a branch; if it's a ket it is the end of a nested
  225|       |    call. If it's ALT it is an alternation in a nested call. If it is END it's
  226|       |    the end of the outer call. All can be handled by the same code. If the
  227|       |    length of any branch is zero, there is no need to scan any subsequent
  228|       |    branches. */
  229|       |
  230|    267|    case OP_ALT:
  ------------------
  |  Branch (230:5): [True: 267, False: 9.29k]
  ------------------
  231|    555|    case OP_KET:
  ------------------
  |  Branch (231:5): [True: 288, False: 9.27k]
  ------------------
  232|    555|    case OP_KETRMAX:
  ------------------
  |  Branch (232:5): [True: 0, False: 9.55k]
  ------------------
  233|    555|    case OP_KETRMIN:
  ------------------
  |  Branch (233:5): [True: 0, False: 9.55k]
  ------------------
  234|    555|    case OP_KETRPOS:
  ------------------
  |  Branch (234:5): [True: 0, False: 9.55k]
  ------------------
  235|    555|    case OP_END:
  ------------------
  |  Branch (235:5): [True: 0, False: 9.55k]
  ------------------
  236|    555|    if (length < 0 || (!had_recurse && branchlength < length))
  ------------------
  |  Branch (236:9): [True: 298, False: 257]
  |  Branch (236:24): [True: 257, False: 0]
  |  Branch (236:40): [True: 125, False: 132]
  ------------------
  237|    423|      length = branchlength;
  238|    555|    if (op != OP_ALT || length == 0) return length;
  ------------------
  |  Branch (238:9): [True: 288, False: 267]
  |  Branch (238:25): [True: 1, False: 266]
  ------------------
  239|    266|    nextbranch = cc + GET(cc, 1);
  ------------------
  |  |  109|    266|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  240|    266|    cc += 1 + LINK_SIZE;
  ------------------
  |  |   98|    266|#define LINK_SIZE 2
  ------------------
  241|    266|    branchlength = 0;
  242|    266|    had_recurse = FALSE;
  ------------------
  |  |   87|    266|#define FALSE   0
  ------------------
  243|    266|    break;
  244|       |
  245|       |    /* Skip over assertive subpatterns */
  246|       |
  247|      1|    case OP_ASSERT:
  ------------------
  |  Branch (247:5): [True: 1, False: 9.55k]
  ------------------
  248|      1|    case OP_ASSERT_NOT:
  ------------------
  |  Branch (248:5): [True: 0, False: 9.55k]
  ------------------
  249|      1|    case OP_ASSERTBACK:
  ------------------
  |  Branch (249:5): [True: 0, False: 9.55k]
  ------------------
  250|      1|    case OP_ASSERTBACK_NOT:
  ------------------
  |  Branch (250:5): [True: 0, False: 9.55k]
  ------------------
  251|      1|    case OP_ASSERT_NA:
  ------------------
  |  Branch (251:5): [True: 0, False: 9.55k]
  ------------------
  252|      1|    case OP_ASSERTBACK_NA:
  ------------------
  |  Branch (252:5): [True: 0, False: 9.55k]
  ------------------
  253|      1|    do cc += GET(cc, 1); while (*cc == OP_ALT);
  ------------------
  |  |  109|      1|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (253:33): [True: 0, False: 1]
  ------------------
  254|       |    /* Fall through */
  255|       |
  256|       |    /* Skip over things that don't match chars */
  257|       |
  258|      1|    case OP_REVERSE:
  ------------------
  |  Branch (258:5): [True: 0, False: 9.55k]
  ------------------
  259|      1|    case OP_VREVERSE:
  ------------------
  |  Branch (259:5): [True: 0, False: 9.55k]
  ------------------
  260|      1|    case OP_CREF:
  ------------------
  |  Branch (260:5): [True: 0, False: 9.55k]
  ------------------
  261|      1|    case OP_DNCREF:
  ------------------
  |  Branch (261:5): [True: 0, False: 9.55k]
  ------------------
  262|      1|    case OP_RREF:
  ------------------
  |  Branch (262:5): [True: 0, False: 9.55k]
  ------------------
  263|      1|    case OP_DNRREF:
  ------------------
  |  Branch (263:5): [True: 0, False: 9.55k]
  ------------------
  264|      1|    case OP_FALSE:
  ------------------
  |  Branch (264:5): [True: 0, False: 9.55k]
  ------------------
  265|      1|    case OP_TRUE:
  ------------------
  |  Branch (265:5): [True: 0, False: 9.55k]
  ------------------
  266|      1|    case OP_CALLOUT:
  ------------------
  |  Branch (266:5): [True: 0, False: 9.55k]
  ------------------
  267|     17|    case OP_SOD:
  ------------------
  |  Branch (267:5): [True: 16, False: 9.54k]
  ------------------
  268|     28|    case OP_SOM:
  ------------------
  |  Branch (268:5): [True: 11, False: 9.54k]
  ------------------
  269|     30|    case OP_EOD:
  ------------------
  |  Branch (269:5): [True: 2, False: 9.55k]
  ------------------
  270|     35|    case OP_EODN:
  ------------------
  |  Branch (270:5): [True: 5, False: 9.55k]
  ------------------
  271|    180|    case OP_CIRC:
  ------------------
  |  Branch (271:5): [True: 145, False: 9.41k]
  ------------------
  272|    201|    case OP_CIRCM:
  ------------------
  |  Branch (272:5): [True: 21, False: 9.53k]
  ------------------
  273|    234|    case OP_DOLL:
  ------------------
  |  Branch (273:5): [True: 33, False: 9.52k]
  ------------------
  274|    237|    case OP_DOLLM:
  ------------------
  |  Branch (274:5): [True: 3, False: 9.55k]
  ------------------
  275|    243|    case OP_NOT_WORD_BOUNDARY:
  ------------------
  |  Branch (275:5): [True: 6, False: 9.55k]
  ------------------
  276|    246|    case OP_WORD_BOUNDARY:
  ------------------
  |  Branch (276:5): [True: 3, False: 9.55k]
  ------------------
  277|    269|    case OP_NOT_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (277:5): [True: 23, False: 9.53k]
  ------------------
  278|    287|    case OP_UCP_WORD_BOUNDARY:
  ------------------
  |  Branch (278:5): [True: 18, False: 9.54k]
  ------------------
  279|    287|    cc += PRIV(OP_lengths)[*cc];
  ------------------
  |  |  195|    287|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|    287|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    287|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    287|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    287|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|    287|    break;
  281|       |
  282|      0|    case OP_CALLOUT_STR:
  ------------------
  |  Branch (282:5): [True: 0, False: 9.55k]
  ------------------
  283|      0|    cc += GET(cc, 1 + 2*LINK_SIZE);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  284|      0|    break;
  285|       |
  286|       |    /* Skip over a subpattern that has a {0} or {0,x} quantifier */
  287|       |
  288|      3|    case OP_BRAZERO:
  ------------------
  |  Branch (288:5): [True: 3, False: 9.55k]
  ------------------
  289|      3|    case OP_BRAMINZERO:
  ------------------
  |  Branch (289:5): [True: 0, False: 9.55k]
  ------------------
  290|      3|    case OP_BRAPOSZERO:
  ------------------
  |  Branch (290:5): [True: 0, False: 9.55k]
  ------------------
  291|      3|    case OP_SKIPZERO:
  ------------------
  |  Branch (291:5): [True: 0, False: 9.55k]
  ------------------
  292|      3|    cc += PRIV(OP_lengths)[*cc];
  ------------------
  |  |  195|      3|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      3|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      3|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      3|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      3|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  293|      4|    do cc += GET(cc, 1); while (*cc == OP_ALT);
  ------------------
  |  |  109|      4|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (293:33): [True: 1, False: 3]
  ------------------
  294|      3|    cc += 1 + LINK_SIZE;
  ------------------
  |  |   98|      3|#define LINK_SIZE 2
  ------------------
  295|      3|    break;
  296|       |
  297|       |    /* Handle literal characters and + repetitions */
  298|       |
  299|  2.44k|    case OP_CHAR:
  ------------------
  |  Branch (299:5): [True: 2.44k, False: 7.11k]
  ------------------
  300|  6.83k|    case OP_CHARI:
  ------------------
  |  Branch (300:5): [True: 4.39k, False: 5.16k]
  ------------------
  301|  6.84k|    case OP_NOT:
  ------------------
  |  Branch (301:5): [True: 4, False: 9.55k]
  ------------------
  302|  6.84k|    case OP_NOTI:
  ------------------
  |  Branch (302:5): [True: 4, False: 9.55k]
  ------------------
  303|  6.86k|    case OP_PLUS:
  ------------------
  |  Branch (303:5): [True: 21, False: 9.53k]
  ------------------
  304|  6.91k|    case OP_PLUSI:
  ------------------
  |  Branch (304:5): [True: 48, False: 9.51k]
  ------------------
  305|  6.91k|    case OP_MINPLUS:
  ------------------
  |  Branch (305:5): [True: 6, False: 9.55k]
  ------------------
  306|  6.92k|    case OP_MINPLUSI:
  ------------------
  |  Branch (306:5): [True: 5, False: 9.55k]
  ------------------
  307|  7.02k|    case OP_POSPLUS:
  ------------------
  |  Branch (307:5): [True: 102, False: 9.45k]
  ------------------
  308|  7.15k|    case OP_POSPLUSI:
  ------------------
  |  Branch (308:5): [True: 126, False: 9.43k]
  ------------------
  309|  7.15k|    case OP_NOTPLUS:
  ------------------
  |  Branch (309:5): [True: 1, False: 9.55k]
  ------------------
  310|  7.15k|    case OP_NOTPLUSI:
  ------------------
  |  Branch (310:5): [True: 5, False: 9.55k]
  ------------------
  311|  7.15k|    case OP_NOTMINPLUS:
  ------------------
  |  Branch (311:5): [True: 0, False: 9.55k]
  ------------------
  312|  7.15k|    case OP_NOTMINPLUSI:
  ------------------
  |  Branch (312:5): [True: 0, False: 9.55k]
  ------------------
  313|  7.15k|    case OP_NOTPOSPLUS:
  ------------------
  |  Branch (313:5): [True: 0, False: 9.55k]
  ------------------
  314|  7.15k|    case OP_NOTPOSPLUSI:
  ------------------
  |  Branch (314:5): [True: 0, False: 9.55k]
  ------------------
  315|  7.15k|    branchlength++;
  316|  7.15k|    cc += 2;
  317|  7.15k|#ifdef SUPPORT_UNICODE
  318|  7.15k|    if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
  ------------------
  |  |  286|  3.37k|#define HAS_EXTRALEN(c) HASUTF8EXTRALEN(c)
  |  |  ------------------
  |  |  |  |  272|  3.37k|#define HASUTF8EXTRALEN(c) ((c) >= 0xc0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (272:28): [True: 32, False: 3.33k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
  ------------------
  |  |  291|     32|#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3fu])
  |  |  ------------------
  |  |  |  |  195|     32|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  ------------------
  |  Branch (318:9): [True: 3.37k, False: 3.78k]
  ------------------
  319|  7.15k|#endif
  320|  7.15k|    break;
  321|       |
  322|    199|    case OP_TYPEPLUS:
  ------------------
  |  Branch (322:5): [True: 199, False: 9.36k]
  ------------------
  323|    277|    case OP_TYPEMINPLUS:
  ------------------
  |  Branch (323:5): [True: 78, False: 9.48k]
  ------------------
  324|    303|    case OP_TYPEPOSPLUS:
  ------------------
  |  Branch (324:5): [True: 26, False: 9.53k]
  ------------------
  325|    303|    branchlength++;
  326|    303|    cc += (cc[1] == OP_PROP || cc[1] == OP_NOTPROP)? 4 : 2;
  ------------------
  |  Branch (326:12): [True: 19, False: 284]
  |  Branch (326:32): [True: 27, False: 257]
  ------------------
  327|    303|    break;
  328|       |
  329|       |    /* Handle exact repetitions. The count is already in characters, but we
  330|       |    may need to skip over a multibyte character in UTF mode.  */
  331|       |
  332|      1|    case OP_EXACT:
  ------------------
  |  Branch (332:5): [True: 1, False: 9.55k]
  ------------------
  333|      7|    case OP_EXACTI:
  ------------------
  |  Branch (333:5): [True: 6, False: 9.55k]
  ------------------
  334|      7|    case OP_NOTEXACT:
  ------------------
  |  Branch (334:5): [True: 0, False: 9.55k]
  ------------------
  335|      7|    case OP_NOTEXACTI:
  ------------------
  |  Branch (335:5): [True: 0, False: 9.55k]
  ------------------
  336|      7|    branchlength += GET2(cc,1);
  ------------------
  |  |  194|      7|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  337|      7|    cc += 2 + IMM2_SIZE;
  ------------------
  |  |  193|      7|#define IMM2_SIZE 2
  ------------------
  338|      7|#ifdef SUPPORT_UNICODE
  339|      7|    if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
  ------------------
  |  |  286|      7|#define HAS_EXTRALEN(c) HASUTF8EXTRALEN(c)
  |  |  ------------------
  |  |  |  |  272|      7|#define HASUTF8EXTRALEN(c) ((c) >= 0xc0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (272:28): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
  ------------------
  |  |  291|      0|#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3fu])
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  ------------------
  |  Branch (339:9): [True: 7, False: 0]
  ------------------
  340|      7|#endif
  341|      7|    break;
  342|       |
  343|      0|    case OP_TYPEEXACT:
  ------------------
  |  Branch (343:5): [True: 0, False: 9.55k]
  ------------------
  344|      0|    branchlength += GET2(cc,1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  345|      0|    cc += 2 + IMM2_SIZE + ((cc[1 + IMM2_SIZE] == OP_PROP
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
                  cc += 2 + IMM2_SIZE + ((cc[1 + IMM2_SIZE] == OP_PROP
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (345:29): [True: 0, False: 0]
  ------------------
  346|      0|      || cc[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0);
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (346:10): [True: 0, False: 0]
  ------------------
  347|      0|    break;
  348|       |
  349|       |    /* Handle single-char non-literal matchers */
  350|       |
  351|    185|    case OP_PROP:
  ------------------
  |  Branch (351:5): [True: 185, False: 9.37k]
  ------------------
  352|    212|    case OP_NOTPROP:
  ------------------
  |  Branch (352:5): [True: 27, False: 9.53k]
  ------------------
  353|    212|    cc += 2;
  354|       |    /* Fall through */
  355|       |
  356|    221|    case OP_NOT_DIGIT:
  ------------------
  |  Branch (356:5): [True: 9, False: 9.55k]
  ------------------
  357|    237|    case OP_DIGIT:
  ------------------
  |  Branch (357:5): [True: 16, False: 9.54k]
  ------------------
  358|    238|    case OP_NOT_WHITESPACE:
  ------------------
  |  Branch (358:5): [True: 1, False: 9.55k]
  ------------------
  359|    252|    case OP_WHITESPACE:
  ------------------
  |  Branch (359:5): [True: 14, False: 9.54k]
  ------------------
  360|    256|    case OP_NOT_WORDCHAR:
  ------------------
  |  Branch (360:5): [True: 4, False: 9.55k]
  ------------------
  361|    268|    case OP_WORDCHAR:
  ------------------
  |  Branch (361:5): [True: 12, False: 9.54k]
  ------------------
  362|    391|    case OP_ANY:
  ------------------
  |  Branch (362:5): [True: 123, False: 9.43k]
  ------------------
  363|    420|    case OP_ALLANY:
  ------------------
  |  Branch (363:5): [True: 29, False: 9.53k]
  ------------------
  364|    431|    case OP_EXTUNI:
  ------------------
  |  Branch (364:5): [True: 11, False: 9.54k]
  ------------------
  365|    438|    case OP_HSPACE:
  ------------------
  |  Branch (365:5): [True: 7, False: 9.55k]
  ------------------
  366|    512|    case OP_NOT_HSPACE:
  ------------------
  |  Branch (366:5): [True: 74, False: 9.48k]
  ------------------
  367|    521|    case OP_VSPACE:
  ------------------
  |  Branch (367:5): [True: 9, False: 9.55k]
  ------------------
  368|    541|    case OP_NOT_VSPACE:
  ------------------
  |  Branch (368:5): [True: 20, False: 9.53k]
  ------------------
  369|    541|    branchlength++;
  370|    541|    cc++;
  371|    541|    break;
  372|       |
  373|       |    /* "Any newline" might match two characters, but it also might match just
  374|       |    one. */
  375|       |
  376|     49|    case OP_ANYNL:
  ------------------
  |  Branch (376:5): [True: 49, False: 9.51k]
  ------------------
  377|     49|    branchlength += 1;
  378|     49|    cc++;
  379|     49|    break;
  380|       |
  381|       |    /* The single-byte matcher means we can't proceed in UTF mode. (In
  382|       |    non-UTF mode \C will actually be turned into OP_ALLANY, so won't ever
  383|       |    appear, but leave the code, just in case.) */
  384|       |
  385|     10|    case OP_ANYBYTE:
  ------------------
  |  Branch (385:5): [True: 10, False: 9.54k]
  ------------------
  386|     10|#ifdef SUPPORT_UNICODE
  387|     10|    if (utf) return -1;
  ------------------
  |  Branch (387:9): [True: 10, False: 0]
  ------------------
  388|      0|#endif
  389|      0|    branchlength++;
  390|      0|    cc++;
  391|      0|    break;
  392|       |
  393|       |    /* For repeated character types, we have to test for \p and \P, which have
  394|       |    an extra two bytes of parameters. */
  395|       |
  396|     23|    case OP_TYPESTAR:
  ------------------
  |  Branch (396:5): [True: 23, False: 9.53k]
  ------------------
  397|     25|    case OP_TYPEMINSTAR:
  ------------------
  |  Branch (397:5): [True: 2, False: 9.55k]
  ------------------
  398|     51|    case OP_TYPEQUERY:
  ------------------
  |  Branch (398:5): [True: 26, False: 9.53k]
  ------------------
  399|     71|    case OP_TYPEMINQUERY:
  ------------------
  |  Branch (399:5): [True: 20, False: 9.53k]
  ------------------
  400|     80|    case OP_TYPEPOSSTAR:
  ------------------
  |  Branch (400:5): [True: 9, False: 9.55k]
  ------------------
  401|    106|    case OP_TYPEPOSQUERY:
  ------------------
  |  Branch (401:5): [True: 26, False: 9.53k]
  ------------------
  402|    106|    if (cc[1] == OP_PROP || cc[1] == OP_NOTPROP) cc += 2;
  ------------------
  |  Branch (402:9): [True: 5, False: 101]
  |  Branch (402:29): [True: 13, False: 88]
  ------------------
  403|    106|    cc += PRIV(OP_lengths)[op];
  ------------------
  |  |  195|    106|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|    106|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    106|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    106|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    106|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|    106|    break;
  405|       |
  406|      0|    case OP_TYPEUPTO:
  ------------------
  |  Branch (406:5): [True: 0, False: 9.55k]
  ------------------
  407|      0|    case OP_TYPEMINUPTO:
  ------------------
  |  Branch (407:5): [True: 0, False: 9.55k]
  ------------------
  408|      0|    case OP_TYPEPOSUPTO:
  ------------------
  |  Branch (408:5): [True: 0, False: 9.55k]
  ------------------
  409|      0|    if (cc[1 + IMM2_SIZE] == OP_PROP
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (409:9): [True: 0, False: 0]
  ------------------
  410|      0|      || cc[1 + IMM2_SIZE] == OP_NOTPROP) cc += 2;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  |  Branch (410:10): [True: 0, False: 0]
  ------------------
  411|      0|    cc += PRIV(OP_lengths)[op];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  412|      0|    break;
  413|       |
  414|       |    /* Check a class for variable quantification */
  415|       |
  416|     46|    case OP_CLASS:
  ------------------
  |  Branch (416:5): [True: 46, False: 9.51k]
  ------------------
  417|     72|    case OP_NCLASS:
  ------------------
  |  Branch (417:5): [True: 26, False: 9.53k]
  ------------------
  418|     72|#ifdef SUPPORT_WIDE_CHARS
  419|     99|    case OP_XCLASS:
  ------------------
  |  Branch (419:5): [True: 27, False: 9.53k]
  ------------------
  420|       |    /* The original code caused an unsigned overflow in 64 bit systems,
  421|       |    so now we use a conditional statement. */
  422|     99|    if (op == OP_XCLASS)
  ------------------
  |  Branch (422:9): [True: 27, False: 72]
  ------------------
  423|     27|      cc += GET(cc, 1);
  ------------------
  |  |  109|     27|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  424|     72|    else
  425|     72|      cc += PRIV(OP_lengths)[OP_CLASS];
  ------------------
  |  |  195|     72|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|     72|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     72|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     72|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     72|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  426|       |#else
  427|       |    cc += PRIV(OP_lengths)[OP_CLASS];
  428|       |#endif
  429|       |
  430|     99|    switch (*cc)
  431|     99|      {
  432|      3|      case OP_CRPLUS:
  ------------------
  |  Branch (432:7): [True: 3, False: 96]
  ------------------
  433|      6|      case OP_CRMINPLUS:
  ------------------
  |  Branch (433:7): [True: 3, False: 96]
  ------------------
  434|     23|      case OP_CRPOSPLUS:
  ------------------
  |  Branch (434:7): [True: 17, False: 82]
  ------------------
  435|     23|      branchlength++;
  436|       |      /* Fall through */
  437|       |
  438|     29|      case OP_CRSTAR:
  ------------------
  |  Branch (438:7): [True: 6, False: 93]
  ------------------
  439|     37|      case OP_CRMINSTAR:
  ------------------
  |  Branch (439:7): [True: 8, False: 91]
  ------------------
  440|     48|      case OP_CRQUERY:
  ------------------
  |  Branch (440:7): [True: 11, False: 88]
  ------------------
  441|     60|      case OP_CRMINQUERY:
  ------------------
  |  Branch (441:7): [True: 12, False: 87]
  ------------------
  442|     63|      case OP_CRPOSSTAR:
  ------------------
  |  Branch (442:7): [True: 3, False: 96]
  ------------------
  443|     68|      case OP_CRPOSQUERY:
  ------------------
  |  Branch (443:7): [True: 5, False: 94]
  ------------------
  444|     68|      cc++;
  445|     68|      break;
  446|       |
  447|      0|      case OP_CRRANGE:
  ------------------
  |  Branch (447:7): [True: 0, False: 99]
  ------------------
  448|      0|      case OP_CRMINRANGE:
  ------------------
  |  Branch (448:7): [True: 0, False: 99]
  ------------------
  449|      0|      case OP_CRPOSRANGE:
  ------------------
  |  Branch (449:7): [True: 0, False: 99]
  ------------------
  450|      0|      branchlength += GET2(cc,1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  451|      0|      cc += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  452|      0|      break;
  453|       |
  454|     31|      default:
  ------------------
  |  Branch (454:7): [True: 31, False: 68]
  ------------------
  455|     31|      branchlength++;
  456|     31|      break;
  457|     99|      }
  458|     99|    break;
  459|       |
  460|       |    /* Backreferences and subroutine calls (OP_RECURSE) are treated in the same
  461|       |    way: we find the minimum length for the subpattern. A recursion
  462|       |    (backreference or subroutine) causes an a flag to be set that causes the
  463|       |    length of this branch to be ignored. The logic is that a recursion can only
  464|       |    make sense if there is another alternative that stops the recursing. That
  465|       |    will provide the minimum length (when no recursion happens).
  466|       |
  467|       |    If PCRE2_MATCH_UNSET_BACKREF is set, a backreference to an unset bracket
  468|       |    matches an empty string (by default it causes a matching failure), so in
  469|       |    that case we must set the minimum length to zero.
  470|       |
  471|       |    For backreferenes, if duplicate numbers are present in the pattern we check
  472|       |    for a reference to a duplicate. If it is, we don't know which version will
  473|       |    be referenced, so we have to set the minimum length to zero. */
  474|       |
  475|       |    /* Duplicate named pattern back reference. */
  476|       |
  477|     99|    case OP_DNREF:
  ------------------
  |  Branch (477:5): [True: 0, False: 9.55k]
  ------------------
  478|      0|    case OP_DNREFI:
  ------------------
  |  Branch (478:5): [True: 0, False: 9.55k]
  ------------------
  479|      0|    if (!dupcapused && (re->overall_options & PCRE2_MATCH_UNSET_BACKREF) == 0)
  ------------------
  |  |  128|      0|#define PCRE2_MATCH_UNSET_BACKREF 0x00000200u  /* C J M   */
  ------------------
  |  Branch (479:9): [True: 0, False: 0]
  |  Branch (479:24): [True: 0, False: 0]
  ------------------
  480|      0|      {
  481|      0|      int count = GET2(cc, 1+IMM2_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  482|      0|      PCRE2_UCHAR *slot =
  ------------------
  |  |  819|      0|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  483|      0|        (PCRE2_UCHAR *)((uint8_t *)re + sizeof(pcre2_real_code)) +
  484|      0|          GET2(cc, 1) * re->name_entry_size;
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  485|       |
  486|      0|      d = INT_MAX;
  487|       |
  488|       |      /* Scan all groups with the same name; find the shortest. */
  489|       |
  490|      0|      while (count-- > 0)
  ------------------
  |  Branch (490:14): [True: 0, False: 0]
  ------------------
  491|      0|        {
  492|      0|        int dd, i;
  493|      0|        recno = GET2(slot, 0);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  494|       |
  495|      0|        if (recno <= backref_cache[0] && backref_cache[recno] >= 0)
  ------------------
  |  Branch (495:13): [True: 0, False: 0]
  |  Branch (495:42): [True: 0, False: 0]
  ------------------
  496|      0|          dd = backref_cache[recno];
  497|      0|        else
  498|      0|          {
  499|      0|          ce = cs = (PCRE2_UCHAR *)PRIV(find_bracket)(startcode, utf, recno);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2023|      0|#define _pcre2_find_bracket          PCRE2_SUFFIX(_pcre2_find_bracket_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  500|      0|          if (cs == NULL) return -2;
  ------------------
  |  Branch (500:15): [True: 0, False: 0]
  ------------------
  501|      0|          do ce += GET(ce, 1); while (*ce == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (501:39): [True: 0, False: 0]
  ------------------
  502|       |
  503|      0|          dd = 0;
  504|      0|          if (!dupcapused ||
  ------------------
  |  Branch (504:15): [True: 0, False: 0]
  ------------------
  505|      0|              (PCRE2_UCHAR *)PRIV(find_bracket)(ce, utf, recno) == NULL)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2023|      0|#define _pcre2_find_bracket          PCRE2_SUFFIX(_pcre2_find_bracket_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (505:15): [True: 0, False: 0]
  ------------------
  506|      0|            {
  507|      0|            if (cc > cs && cc < ce)    /* Simple recursion */
  ------------------
  |  Branch (507:17): [True: 0, False: 0]
  |  Branch (507:28): [True: 0, False: 0]
  ------------------
  508|      0|              {
  509|      0|              had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  510|      0|              }
  511|      0|            else
  512|      0|              {
  513|      0|              recurse_check *r = recurses;
  514|      0|              for (r = recurses; r != NULL; r = r->prev)
  ------------------
  |  Branch (514:34): [True: 0, False: 0]
  ------------------
  515|      0|                if (r->group == cs) break;
  ------------------
  |  Branch (515:21): [True: 0, False: 0]
  ------------------
  516|      0|              if (r != NULL)           /* Mutual recursion */
  ------------------
  |  Branch (516:19): [True: 0, False: 0]
  ------------------
  517|      0|                {
  518|      0|                had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  519|      0|                }
  520|      0|              else
  521|      0|                {
  522|      0|                this_recurse.prev = recurses;  /* No recursion */
  523|      0|                this_recurse.group = cs;
  524|      0|                dd = find_minlength(re, cs, startcode, utf, &this_recurse,
  525|      0|                  countptr, backref_cache);
  526|      0|                if (dd < 0) return dd;
  ------------------
  |  Branch (526:21): [True: 0, False: 0]
  ------------------
  527|      0|                }
  528|      0|              }
  529|      0|            }
  530|       |
  531|      0|          backref_cache[recno] = dd;
  532|      0|          for (i = backref_cache[0] + 1; i < recno; i++) backref_cache[i] = -1;
  ------------------
  |  Branch (532:42): [True: 0, False: 0]
  ------------------
  533|      0|          backref_cache[0] = recno;
  534|      0|          }
  535|       |
  536|      0|        if (dd < d) d = dd;
  ------------------
  |  Branch (536:13): [True: 0, False: 0]
  ------------------
  537|      0|        if (d <= 0) break;    /* No point looking at any more */
  ------------------
  |  Branch (537:13): [True: 0, False: 0]
  ------------------
  538|      0|        slot += re->name_entry_size;
  539|      0|        }
  540|      0|      }
  541|      0|    else d = 0;
  542|      0|    cc += 1 + 2*IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  543|      0|    goto REPEAT_BACK_REFERENCE;
  544|       |
  545|       |    /* Single back reference by number. References by name are converted to by
  546|       |    number when there is no duplication. */
  547|       |
  548|      0|    case OP_REF:
  ------------------
  |  Branch (548:5): [True: 0, False: 9.55k]
  ------------------
  549|      0|    case OP_REFI:
  ------------------
  |  Branch (549:5): [True: 0, False: 9.55k]
  ------------------
  550|      0|    recno = GET2(cc, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  551|      0|    if (recno <= backref_cache[0] && backref_cache[recno] >= 0)
  ------------------
  |  Branch (551:9): [True: 0, False: 0]
  |  Branch (551:38): [True: 0, False: 0]
  ------------------
  552|      0|      d = backref_cache[recno];
  553|      0|    else
  554|      0|      {
  555|      0|      int i;
  556|      0|      d = 0;
  557|       |
  558|      0|      if ((re->overall_options & PCRE2_MATCH_UNSET_BACKREF) == 0)
  ------------------
  |  |  128|      0|#define PCRE2_MATCH_UNSET_BACKREF 0x00000200u  /* C J M   */
  ------------------
  |  Branch (558:11): [True: 0, False: 0]
  ------------------
  559|      0|        {
  560|      0|        ce = cs = (PCRE2_UCHAR *)PRIV(find_bracket)(startcode, utf, recno);
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2023|      0|#define _pcre2_find_bracket          PCRE2_SUFFIX(_pcre2_find_bracket_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  561|      0|        if (cs == NULL) return -2;
  ------------------
  |  Branch (561:13): [True: 0, False: 0]
  ------------------
  562|      0|        do ce += GET(ce, 1); while (*ce == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (562:37): [True: 0, False: 0]
  ------------------
  563|       |
  564|      0|        if (!dupcapused ||
  ------------------
  |  Branch (564:13): [True: 0, False: 0]
  ------------------
  565|      0|            (PCRE2_UCHAR *)PRIV(find_bracket)(ce, utf, recno) == NULL)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 2023|      0|#define _pcre2_find_bracket          PCRE2_SUFFIX(_pcre2_find_bracket_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (565:13): [True: 0, False: 0]
  ------------------
  566|      0|          {
  567|      0|          if (cc > cs && cc < ce)    /* Simple recursion */
  ------------------
  |  Branch (567:15): [True: 0, False: 0]
  |  Branch (567:26): [True: 0, False: 0]
  ------------------
  568|      0|            {
  569|      0|            had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  570|      0|            }
  571|      0|          else
  572|      0|            {
  573|      0|            recurse_check *r = recurses;
  574|      0|            for (r = recurses; r != NULL; r = r->prev) if (r->group == cs) break;
  ------------------
  |  Branch (574:32): [True: 0, False: 0]
  |  Branch (574:60): [True: 0, False: 0]
  ------------------
  575|      0|            if (r != NULL)           /* Mutual recursion */
  ------------------
  |  Branch (575:17): [True: 0, False: 0]
  ------------------
  576|      0|              {
  577|      0|              had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  578|      0|              }
  579|      0|            else                     /* No recursion */
  580|      0|              {
  581|      0|              this_recurse.prev = recurses;
  582|      0|              this_recurse.group = cs;
  583|      0|              d = find_minlength(re, cs, startcode, utf, &this_recurse, countptr,
  584|      0|                backref_cache);
  585|      0|              if (d < 0) return d;
  ------------------
  |  Branch (585:19): [True: 0, False: 0]
  ------------------
  586|      0|              }
  587|      0|            }
  588|      0|          }
  589|      0|        }
  590|       |
  591|      0|      backref_cache[recno] = d;
  592|      0|      for (i = backref_cache[0] + 1; i < recno; i++) backref_cache[i] = -1;
  ------------------
  |  Branch (592:38): [True: 0, False: 0]
  ------------------
  593|      0|      backref_cache[0] = recno;
  594|      0|      }
  595|       |
  596|      0|    cc += 1 + IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  597|       |
  598|       |    /* Handle repeated back references */
  599|       |
  600|      0|    REPEAT_BACK_REFERENCE:
  601|      0|    switch (*cc)
  602|      0|      {
  603|      0|      case OP_CRSTAR:
  ------------------
  |  Branch (603:7): [True: 0, False: 0]
  ------------------
  604|      0|      case OP_CRMINSTAR:
  ------------------
  |  Branch (604:7): [True: 0, False: 0]
  ------------------
  605|      0|      case OP_CRQUERY:
  ------------------
  |  Branch (605:7): [True: 0, False: 0]
  ------------------
  606|      0|      case OP_CRMINQUERY:
  ------------------
  |  Branch (606:7): [True: 0, False: 0]
  ------------------
  607|      0|      case OP_CRPOSSTAR:
  ------------------
  |  Branch (607:7): [True: 0, False: 0]
  ------------------
  608|      0|      case OP_CRPOSQUERY:
  ------------------
  |  Branch (608:7): [True: 0, False: 0]
  ------------------
  609|      0|      min = 0;
  610|      0|      cc++;
  611|      0|      break;
  612|       |
  613|      0|      case OP_CRPLUS:
  ------------------
  |  Branch (613:7): [True: 0, False: 0]
  ------------------
  614|      0|      case OP_CRMINPLUS:
  ------------------
  |  Branch (614:7): [True: 0, False: 0]
  ------------------
  615|      0|      case OP_CRPOSPLUS:
  ------------------
  |  Branch (615:7): [True: 0, False: 0]
  ------------------
  616|      0|      min = 1;
  617|      0|      cc++;
  618|      0|      break;
  619|       |
  620|      0|      case OP_CRRANGE:
  ------------------
  |  Branch (620:7): [True: 0, False: 0]
  ------------------
  621|      0|      case OP_CRMINRANGE:
  ------------------
  |  Branch (621:7): [True: 0, False: 0]
  ------------------
  622|      0|      case OP_CRPOSRANGE:
  ------------------
  |  Branch (622:7): [True: 0, False: 0]
  ------------------
  623|      0|      min = GET2(cc, 1);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  624|      0|      cc += 1 + 2 * IMM2_SIZE;
  ------------------
  |  |  193|      0|#define IMM2_SIZE 2
  ------------------
  625|      0|      break;
  626|       |
  627|      0|      default:
  ------------------
  |  Branch (627:7): [True: 0, False: 0]
  ------------------
  628|      0|      min = 1;
  629|      0|      break;
  630|      0|      }
  631|       |
  632|       |     /* Take care not to overflow: (1) min and d are ints, so check that their
  633|       |     product is not greater than INT_MAX. (2) branchlength is limited to
  634|       |     UINT16_MAX (checked at the top of the loop). */
  635|       |
  636|      0|    if ((d > 0 && (INT_MAX/d) < min) || UINT16_MAX - branchlength < min*d)
  ------------------
  |  Branch (636:10): [True: 0, False: 0]
  |  Branch (636:19): [True: 0, False: 0]
  |  Branch (636:41): [True: 0, False: 0]
  ------------------
  637|      0|      branchlength = UINT16_MAX;
  638|      0|    else branchlength += min * d;
  639|      0|    break;
  640|       |
  641|       |    /* Recursion always refers to the first occurrence of a subpattern with a
  642|       |    given number. Therefore, we can always make use of caching, even when the
  643|       |    pattern contains multiple subpatterns with the same number. */
  644|       |
  645|      0|    case OP_RECURSE:
  ------------------
  |  Branch (645:5): [True: 0, False: 9.55k]
  ------------------
  646|      0|    cs = ce = (PCRE2_UCHAR *)startcode + GET(cc, 1);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  647|      0|    recno = GET2(cs, 1+LINK_SIZE);
  ------------------
  |  |  194|      0|#define GET2(a,n) (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  648|      0|    if (recno == prev_recurse_recno)
  ------------------
  |  Branch (648:9): [True: 0, False: 0]
  ------------------
  649|      0|      {
  650|      0|      branchlength += prev_recurse_d;
  651|      0|      }
  652|      0|    else
  653|      0|      {
  654|      0|      do ce += GET(ce, 1); while (*ce == OP_ALT);
  ------------------
  |  |  109|      0|  (unsigned int)(((a)[n] << 8) | (a)[(n)+1])
  ------------------
  |  Branch (654:35): [True: 0, False: 0]
  ------------------
  655|      0|      if (cc > cs && cc < ce)    /* Simple recursion */
  ------------------
  |  Branch (655:11): [True: 0, False: 0]
  |  Branch (655:22): [True: 0, False: 0]
  ------------------
  656|      0|        had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  657|      0|      else
  658|      0|        {
  659|      0|        recurse_check *r = recurses;
  660|      0|        for (r = recurses; r != NULL; r = r->prev) if (r->group == cs) break;
  ------------------
  |  Branch (660:28): [True: 0, False: 0]
  |  Branch (660:56): [True: 0, False: 0]
  ------------------
  661|      0|        if (r != NULL)          /* Mutual recursion */
  ------------------
  |  Branch (661:13): [True: 0, False: 0]
  ------------------
  662|      0|          had_recurse = TRUE;
  ------------------
  |  |   88|      0|#define TRUE    1
  ------------------
  663|      0|        else
  664|      0|          {
  665|      0|          this_recurse.prev = recurses;
  666|      0|          this_recurse.group = cs;
  667|      0|          prev_recurse_d = find_minlength(re, cs, startcode, utf, &this_recurse,
  668|      0|            countptr, backref_cache);
  669|      0|          if (prev_recurse_d < 0) return prev_recurse_d;
  ------------------
  |  Branch (669:15): [True: 0, False: 0]
  ------------------
  670|      0|          prev_recurse_recno = recno;
  671|      0|          branchlength += prev_recurse_d;
  672|      0|          }
  673|      0|        }
  674|      0|      }
  675|      0|    cc += 1 + LINK_SIZE + once_fudge;
  ------------------
  |  |   98|      0|#define LINK_SIZE 2
  ------------------
  676|      0|    once_fudge = 0;
  677|      0|    break;
  678|       |
  679|       |    /* Anything else does not or need not match a character. We can get the
  680|       |    item's length from the table, but for those that can match zero occurrences
  681|       |    of a character, we must take special action for UTF-8 characters. As it
  682|       |    happens, the "NOT" versions of these opcodes are used at present only for
  683|       |    ASCII characters, so they could be omitted from this list. However, in
  684|       |    future that may change, so we include them here so as not to leave a
  685|       |    gotcha for a future maintainer. */
  686|       |
  687|      0|    case OP_UPTO:
  ------------------
  |  Branch (687:5): [True: 0, False: 9.55k]
  ------------------
  688|      0|    case OP_UPTOI:
  ------------------
  |  Branch (688:5): [True: 0, False: 9.55k]
  ------------------
  689|      0|    case OP_NOTUPTO:
  ------------------
  |  Branch (689:5): [True: 0, False: 9.55k]
  ------------------
  690|      0|    case OP_NOTUPTOI:
  ------------------
  |  Branch (690:5): [True: 0, False: 9.55k]
  ------------------
  691|      0|    case OP_MINUPTO:
  ------------------
  |  Branch (691:5): [True: 0, False: 9.55k]
  ------------------
  692|      0|    case OP_MINUPTOI:
  ------------------
  |  Branch (692:5): [True: 0, False: 9.55k]
  ------------------
  693|      0|    case OP_NOTMINUPTO:
  ------------------
  |  Branch (693:5): [True: 0, False: 9.55k]
  ------------------
  694|      0|    case OP_NOTMINUPTOI:
  ------------------
  |  Branch (694:5): [True: 0, False: 9.55k]
  ------------------
  695|      0|    case OP_POSUPTO:
  ------------------
  |  Branch (695:5): [True: 0, False: 9.55k]
  ------------------
  696|      0|    case OP_POSUPTOI:
  ------------------
  |  Branch (696:5): [True: 0, False: 9.55k]
  ------------------
  697|      0|    case OP_NOTPOSUPTO:
  ------------------
  |  Branch (697:5): [True: 0, False: 9.55k]
  ------------------
  698|      0|    case OP_NOTPOSUPTOI:
  ------------------
  |  Branch (698:5): [True: 0, False: 9.55k]
  ------------------
  699|       |
  700|      4|    case OP_STAR:
  ------------------
  |  Branch (700:5): [True: 4, False: 9.55k]
  ------------------
  701|     16|    case OP_STARI:
  ------------------
  |  Branch (701:5): [True: 12, False: 9.54k]
  ------------------
  702|     18|    case OP_NOTSTAR:
  ------------------
  |  Branch (702:5): [True: 2, False: 9.55k]
  ------------------
  703|     18|    case OP_NOTSTARI:
  ------------------
  |  Branch (703:5): [True: 0, False: 9.55k]
  ------------------
  704|     19|    case OP_MINSTAR:
  ------------------
  |  Branch (704:5): [True: 1, False: 9.55k]
  ------------------
  705|     20|    case OP_MINSTARI:
  ------------------
  |  Branch (705:5): [True: 1, False: 9.55k]
  ------------------
  706|     20|    case OP_NOTMINSTAR:
  ------------------
  |  Branch (706:5): [True: 0, False: 9.55k]
  ------------------
  707|     20|    case OP_NOTMINSTARI:
  ------------------
  |  Branch (707:5): [True: 0, False: 9.55k]
  ------------------
  708|     53|    case OP_POSSTAR:
  ------------------
  |  Branch (708:5): [True: 33, False: 9.52k]
  ------------------
  709|    112|    case OP_POSSTARI:
  ------------------
  |  Branch (709:5): [True: 59, False: 9.50k]
  ------------------
  710|    112|    case OP_NOTPOSSTAR:
  ------------------
  |  Branch (710:5): [True: 0, False: 9.55k]
  ------------------
  711|    112|    case OP_NOTPOSSTARI:
  ------------------
  |  Branch (711:5): [True: 0, False: 9.55k]
  ------------------
  712|       |
  713|    140|    case OP_QUERY:
  ------------------
  |  Branch (713:5): [True: 28, False: 9.53k]
  ------------------
  714|    170|    case OP_QUERYI:
  ------------------
  |  Branch (714:5): [True: 30, False: 9.52k]
  ------------------
  715|    173|    case OP_NOTQUERY:
  ------------------
  |  Branch (715:5): [True: 3, False: 9.55k]
  ------------------
  716|    174|    case OP_NOTQUERYI:
  ------------------
  |  Branch (716:5): [True: 1, False: 9.55k]
  ------------------
  717|    176|    case OP_MINQUERY:
  ------------------
  |  Branch (717:5): [True: 2, False: 9.55k]
  ------------------
  718|    179|    case OP_MINQUERYI:
  ------------------
  |  Branch (718:5): [True: 3, False: 9.55k]
  ------------------
  719|    180|    case OP_NOTMINQUERY:
  ------------------
  |  Branch (719:5): [True: 1, False: 9.55k]
  ------------------
  720|    182|    case OP_NOTMINQUERYI:
  ------------------
  |  Branch (720:5): [True: 2, False: 9.55k]
  ------------------
  721|    268|    case OP_POSQUERY:
  ------------------
  |  Branch (721:5): [True: 86, False: 9.47k]
  ------------------
  722|    427|    case OP_POSQUERYI:
  ------------------
  |  Branch (722:5): [True: 159, False: 9.40k]
  ------------------
  723|    427|    case OP_NOTPOSQUERY:
  ------------------
  |  Branch (723:5): [True: 0, False: 9.55k]
  ------------------
  724|    427|    case OP_NOTPOSQUERYI:
  ------------------
  |  Branch (724:5): [True: 0, False: 9.55k]
  ------------------
  725|       |
  726|    427|    cc += PRIV(OP_lengths)[op];
  ------------------
  |  |  195|    427|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|    427|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|    427|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|    427|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|    427|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  727|    427|#ifdef SUPPORT_UNICODE
  728|    427|    if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
  ------------------
  |  |  286|    193|#define HAS_EXTRALEN(c) HASUTF8EXTRALEN(c)
  |  |  ------------------
  |  |  |  |  272|    193|#define HASUTF8EXTRALEN(c) ((c) >= 0xc0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (272:28): [True: 0, False: 193]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
  ------------------
  |  |  291|      0|#define GET_EXTRALEN(c) (PRIV(utf8_table4)[(c) & 0x3fu])
  |  |  ------------------
  |  |  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  ------------------
  |  Branch (728:9): [True: 193, False: 234]
  ------------------
  729|    427|#endif
  730|    427|    break;
  731|       |
  732|       |    /* Skip these, but we need to add in the name length. */
  733|       |
  734|      0|    case OP_MARK:
  ------------------
  |  Branch (734:5): [True: 0, False: 9.55k]
  ------------------
  735|      0|    case OP_COMMIT_ARG:
  ------------------
  |  Branch (735:5): [True: 0, False: 9.55k]
  ------------------
  736|      0|    case OP_PRUNE_ARG:
  ------------------
  |  Branch (736:5): [True: 0, False: 9.55k]
  ------------------
  737|      0|    case OP_SKIP_ARG:
  ------------------
  |  Branch (737:5): [True: 0, False: 9.55k]
  ------------------
  738|      0|    case OP_THEN_ARG:
  ------------------
  |  Branch (738:5): [True: 0, False: 9.55k]
  ------------------
  739|      0|    cc += PRIV(OP_lengths)[op] + cc[1];
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      0|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  740|      0|    break;
  741|       |
  742|       |    /* The remaining opcodes are just skipped over. */
  743|       |
  744|      0|    case OP_CLOSE:
  ------------------
  |  Branch (744:5): [True: 0, False: 9.55k]
  ------------------
  745|      0|    case OP_COMMIT:
  ------------------
  |  Branch (745:5): [True: 0, False: 9.55k]
  ------------------
  746|      0|    case OP_FAIL:
  ------------------
  |  Branch (746:5): [True: 0, False: 9.55k]
  ------------------
  747|      0|    case OP_PRUNE:
  ------------------
  |  Branch (747:5): [True: 0, False: 9.55k]
  ------------------
  748|      1|    case OP_SET_SOM:
  ------------------
  |  Branch (748:5): [True: 1, False: 9.55k]
  ------------------
  749|      1|    case OP_SKIP:
  ------------------
  |  Branch (749:5): [True: 0, False: 9.55k]
  ------------------
  750|      1|    case OP_THEN:
  ------------------
  |  Branch (750:5): [True: 0, False: 9.55k]
  ------------------
  751|      1|    cc += PRIV(OP_lengths)[op];
  ------------------
  |  |  195|      1|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1944|      1|#define _pcre2_OP_lengths              PCRE2_SUFFIX(_pcre2_OP_lengths_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      1|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      1|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  752|      1|    break;
  753|       |
  754|       |    /* This should not occur: we list all opcodes explicitly so that when
  755|       |    new ones get added they are properly considered. */
  756|       |
  757|      0|    default:
  ------------------
  |  Branch (757:5): [True: 0, False: 9.55k]
  ------------------
  758|      0|    return -3;
  759|  9.55k|    }
  760|  9.55k|  }
  761|       |/* Control never gets here */
  762|    299|}

_pcre2_valid_utf_8:
   95|    331|{
   96|    331|PCRE2_SPTR p;
  ------------------
  |  |  820|    331|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    331|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    331|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    331|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|    331|uint32_t c;
   98|       |
   99|       |/* ----------------- Check a UTF-8 string ----------------- */
  100|       |
  101|    331|#if PCRE2_CODE_UNIT_WIDTH == 8
  102|       |
  103|       |/* Originally, this function checked according to RFC 2279, allowing for values
  104|       |in the range 0 to 0x7fffffff, up to 6 bytes long, but ensuring that they were
  105|       |in the canonical format. Once somebody had pointed out RFC 3629 to me (it
  106|       |obsoletes 2279), additional restrictions were applied. The values are now
  107|       |limited to be between 0 and 0x0010ffff, no more than 4 bytes long, and the
  108|       |subrange 0xd000 to 0xdfff is excluded. However, the format of 5-byte and 6-byte
  109|       |characters is still checked. Error returns are as follows:
  110|       |
  111|       |PCRE2_ERROR_UTF8_ERR1   Missing 1 byte at the end of the string
  112|       |PCRE2_ERROR_UTF8_ERR2   Missing 2 bytes at the end of the string
  113|       |PCRE2_ERROR_UTF8_ERR3   Missing 3 bytes at the end of the string
  114|       |PCRE2_ERROR_UTF8_ERR4   Missing 4 bytes at the end of the string
  115|       |PCRE2_ERROR_UTF8_ERR5   Missing 5 bytes at the end of the string
  116|       |PCRE2_ERROR_UTF8_ERR6   2nd-byte's two top bits are not 0x80
  117|       |PCRE2_ERROR_UTF8_ERR7   3rd-byte's two top bits are not 0x80
  118|       |PCRE2_ERROR_UTF8_ERR8   4th-byte's two top bits are not 0x80
  119|       |PCRE2_ERROR_UTF8_ERR9   5th-byte's two top bits are not 0x80
  120|       |PCRE2_ERROR_UTF8_ERR10  6th-byte's two top bits are not 0x80
  121|       |PCRE2_ERROR_UTF8_ERR11  5-byte character is not permitted by RFC 3629
  122|       |PCRE2_ERROR_UTF8_ERR12  6-byte character is not permitted by RFC 3629
  123|       |PCRE2_ERROR_UTF8_ERR13  4-byte character with value > 0x10ffff is not permitted
  124|       |PCRE2_ERROR_UTF8_ERR14  3-byte character with value 0xd800-0xdfff is not permitted
  125|       |PCRE2_ERROR_UTF8_ERR15  Overlong 2-byte sequence
  126|       |PCRE2_ERROR_UTF8_ERR16  Overlong 3-byte sequence
  127|       |PCRE2_ERROR_UTF8_ERR17  Overlong 4-byte sequence
  128|       |PCRE2_ERROR_UTF8_ERR18  Overlong 5-byte sequence (won't ever occur)
  129|       |PCRE2_ERROR_UTF8_ERR19  Overlong 6-byte sequence (won't ever occur)
  130|       |PCRE2_ERROR_UTF8_ERR20  Isolated 0x80 byte (not within UTF-8 character)
  131|       |PCRE2_ERROR_UTF8_ERR21  Byte with the illegal value 0xfe or 0xff
  132|       |*/
  133|       |
  134|  15.2k|for (p = string; length > 0; p++)
  ------------------
  |  Branch (134:18): [True: 14.9k, False: 314]
  ------------------
  135|  14.9k|  {
  136|  14.9k|  uint32_t ab, d;
  137|       |
  138|  14.9k|  c = *p;
  139|  14.9k|  length--;
  140|       |
  141|  14.9k|  if (c < 128) continue;                /* ASCII character */
  ------------------
  |  Branch (141:7): [True: 14.6k, False: 228]
  ------------------
  142|       |
  143|    228|  if (c < 0xc0)                         /* Isolated 10xx xxxx byte */
  ------------------
  |  Branch (143:7): [True: 4, False: 224]
  ------------------
  144|      4|    {
  145|      4|    *erroroffset = (PCRE2_SIZE)(p - string);
  146|      4|    return PCRE2_ERROR_UTF8_ERR20;
  ------------------
  |  |  351|      4|#define PCRE2_ERROR_UTF8_ERR20      (-22)
  ------------------
  147|      4|    }
  148|       |
  149|    224|  if (c >= 0xfe)                        /* Invalid 0xfe or 0xff bytes */
  ------------------
  |  Branch (149:7): [True: 1, False: 223]
  ------------------
  150|      1|    {
  151|      1|    *erroroffset = (PCRE2_SIZE)(p - string);
  152|      1|    return PCRE2_ERROR_UTF8_ERR21;
  ------------------
  |  |  352|      1|#define PCRE2_ERROR_UTF8_ERR21      (-23)
  ------------------
  153|      1|    }
  154|       |
  155|    223|  ab = PRIV(utf8_table4)[c & 0x3f];     /* Number of additional bytes (1-5) */
  ------------------
  |  |  195|    223|#define PRIV(name) _pcre2_##name
  ------------------
  156|    223|  if (length < ab)                      /* Missing bytes */
  ------------------
  |  Branch (156:7): [True: 3, False: 220]
  ------------------
  157|      3|    {
  158|      3|    *erroroffset = (PCRE2_SIZE)(p - string);
  159|      3|    switch(ab - length)
  ------------------
  |  Branch (159:12): [True: 3, False: 0]
  ------------------
  160|      3|      {
  161|      1|      case 1: return PCRE2_ERROR_UTF8_ERR1;
  ------------------
  |  |  332|      1|#define PCRE2_ERROR_UTF8_ERR1        (-3)
  ------------------
  |  Branch (161:7): [True: 1, False: 2]
  ------------------
  162|      0|      case 2: return PCRE2_ERROR_UTF8_ERR2;
  ------------------
  |  |  333|      0|#define PCRE2_ERROR_UTF8_ERR2        (-4)
  ------------------
  |  Branch (162:7): [True: 0, False: 3]
  ------------------
  163|      1|      case 3: return PCRE2_ERROR_UTF8_ERR3;
  ------------------
  |  |  334|      1|#define PCRE2_ERROR_UTF8_ERR3        (-5)
  ------------------
  |  Branch (163:7): [True: 1, False: 2]
  ------------------
  164|      0|      case 4: return PCRE2_ERROR_UTF8_ERR4;
  ------------------
  |  |  335|      0|#define PCRE2_ERROR_UTF8_ERR4        (-6)
  ------------------
  |  Branch (164:7): [True: 0, False: 3]
  ------------------
  165|      1|      case 5: return PCRE2_ERROR_UTF8_ERR5;
  ------------------
  |  |  336|      1|#define PCRE2_ERROR_UTF8_ERR5        (-7)
  ------------------
  |  Branch (165:7): [True: 1, False: 2]
  ------------------
  166|      3|      }
  167|      3|    }
  168|    220|  length -= ab;                         /* Length remaining */
  169|       |
  170|       |  /* Check top bits in the second byte */
  171|       |
  172|    220|  if (((d = *(++p)) & 0xc0) != 0x80)
  ------------------
  |  Branch (172:7): [True: 5, False: 215]
  ------------------
  173|      5|    {
  174|      5|    *erroroffset = (PCRE2_SIZE)(p - string) - 1;
  175|      5|    return PCRE2_ERROR_UTF8_ERR6;
  ------------------
  |  |  337|      5|#define PCRE2_ERROR_UTF8_ERR6        (-8)
  ------------------
  176|      5|    }
  177|       |
  178|       |  /* For each length, check that the remaining bytes start with the 0x80 bit
  179|       |  set and not the 0x40 bit. Then check for an overlong sequence, and for the
  180|       |  excluded range 0xd800 to 0xdfff. */
  181|       |
  182|    215|  switch (ab)
  ------------------
  |  Branch (182:11): [True: 215, False: 0]
  ------------------
  183|    215|    {
  184|       |    /* 2-byte character. No further bytes to check for 0x80. Check first byte
  185|       |    for for xx00 000x (overlong sequence). */
  186|       |
  187|     98|    case 1: if ((c & 0x3e) == 0)
  ------------------
  |  Branch (187:5): [True: 98, False: 117]
  |  Branch (187:17): [True: 0, False: 98]
  ------------------
  188|      0|      {
  189|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 1;
  190|      0|      return PCRE2_ERROR_UTF8_ERR15;
  ------------------
  |  |  346|      0|#define PCRE2_ERROR_UTF8_ERR15      (-17)
  ------------------
  191|      0|      }
  192|     98|    break;
  193|       |
  194|       |    /* 3-byte character. Check third byte for 0x80. Then check first 2 bytes
  195|       |      for 1110 0000, xx0x xxxx (overlong sequence) or
  196|       |          1110 1101, 1010 xxxx (0xd800 - 0xdfff) */
  197|       |
  198|     98|    case 2:
  ------------------
  |  Branch (198:5): [True: 38, False: 177]
  ------------------
  199|     38|    if ((*(++p) & 0xc0) != 0x80)     /* Third byte */
  ------------------
  |  Branch (199:9): [True: 1, False: 37]
  ------------------
  200|      1|      {
  201|      1|      *erroroffset = (PCRE2_SIZE)(p - string) - 2;
  202|      1|      return PCRE2_ERROR_UTF8_ERR7;
  ------------------
  |  |  338|      1|#define PCRE2_ERROR_UTF8_ERR7        (-9)
  ------------------
  203|      1|      }
  204|     37|    if (c == 0xe0 && (d & 0x20) == 0)
  ------------------
  |  Branch (204:9): [True: 4, False: 33]
  |  Branch (204:22): [True: 0, False: 4]
  ------------------
  205|      0|      {
  206|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 2;
  207|      0|      return PCRE2_ERROR_UTF8_ERR16;
  ------------------
  |  |  347|      0|#define PCRE2_ERROR_UTF8_ERR16      (-18)
  ------------------
  208|      0|      }
  209|     37|    if (c == 0xed && d >= 0xa0)
  ------------------
  |  Branch (209:9): [True: 1, False: 36]
  |  Branch (209:22): [True: 1, False: 0]
  ------------------
  210|      1|      {
  211|      1|      *erroroffset = (PCRE2_SIZE)(p - string) - 2;
  212|      1|      return PCRE2_ERROR_UTF8_ERR14;
  ------------------
  |  |  345|      1|#define PCRE2_ERROR_UTF8_ERR14      (-16)
  ------------------
  213|      1|      }
  214|     36|    break;
  215|       |
  216|       |    /* 4-byte character. Check 3rd and 4th bytes for 0x80. Then check first 2
  217|       |       bytes for for 1111 0000, xx00 xxxx (overlong sequence), then check for a
  218|       |       character greater than 0x0010ffff (f4 8f bf bf) */
  219|       |
  220|     78|    case 3:
  ------------------
  |  Branch (220:5): [True: 78, False: 137]
  ------------------
  221|     78|    if ((*(++p) & 0xc0) != 0x80)     /* Third byte */
  ------------------
  |  Branch (221:9): [True: 0, False: 78]
  ------------------
  222|      0|      {
  223|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 2;
  224|      0|      return PCRE2_ERROR_UTF8_ERR7;
  ------------------
  |  |  338|      0|#define PCRE2_ERROR_UTF8_ERR7        (-9)
  ------------------
  225|      0|      }
  226|     78|    if ((*(++p) & 0xc0) != 0x80)     /* Fourth byte */
  ------------------
  |  Branch (226:9): [True: 1, False: 77]
  ------------------
  227|      1|      {
  228|      1|      *erroroffset = (PCRE2_SIZE)(p - string) - 3;
  229|      1|      return PCRE2_ERROR_UTF8_ERR8;
  ------------------
  |  |  339|      1|#define PCRE2_ERROR_UTF8_ERR8       (-10)
  ------------------
  230|      1|      }
  231|     77|    if (c == 0xf0 && (d & 0x30) == 0)
  ------------------
  |  Branch (231:9): [True: 2, False: 75]
  |  Branch (231:22): [True: 0, False: 2]
  ------------------
  232|      0|      {
  233|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 3;
  234|      0|      return PCRE2_ERROR_UTF8_ERR17;
  ------------------
  |  |  348|      0|#define PCRE2_ERROR_UTF8_ERR17      (-19)
  ------------------
  235|      0|      }
  236|     77|    if (c > 0xf4 || (c == 0xf4 && d > 0x8f))
  ------------------
  |  Branch (236:9): [True: 0, False: 77]
  |  Branch (236:22): [True: 1, False: 76]
  |  Branch (236:35): [True: 0, False: 1]
  ------------------
  237|      0|      {
  238|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 3;
  239|      0|      return PCRE2_ERROR_UTF8_ERR13;
  ------------------
  |  |  344|      0|#define PCRE2_ERROR_UTF8_ERR13      (-15)
  ------------------
  240|      0|      }
  241|     77|    break;
  242|       |
  243|       |    /* 5-byte and 6-byte characters are not allowed by RFC 3629, and will be
  244|       |    rejected by the length test below. However, we do the appropriate tests
  245|       |    here so that overlong sequences get diagnosed, and also in case there is
  246|       |    ever an option for handling these larger code points. */
  247|       |
  248|       |    /* 5-byte character. Check 3rd, 4th, and 5th bytes for 0x80. Then check for
  249|       |    1111 1000, xx00 0xxx */
  250|       |
  251|     77|    case 4:
  ------------------
  |  Branch (251:5): [True: 0, False: 215]
  ------------------
  252|      0|    if ((*(++p) & 0xc0) != 0x80)     /* Third byte */
  ------------------
  |  Branch (252:9): [True: 0, False: 0]
  ------------------
  253|      0|      {
  254|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 2;
  255|      0|      return PCRE2_ERROR_UTF8_ERR7;
  ------------------
  |  |  338|      0|#define PCRE2_ERROR_UTF8_ERR7        (-9)
  ------------------
  256|      0|      }
  257|      0|    if ((*(++p) & 0xc0) != 0x80)     /* Fourth byte */
  ------------------
  |  Branch (257:9): [True: 0, False: 0]
  ------------------
  258|      0|      {
  259|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 3;
  260|      0|      return PCRE2_ERROR_UTF8_ERR8;
  ------------------
  |  |  339|      0|#define PCRE2_ERROR_UTF8_ERR8       (-10)
  ------------------
  261|      0|      }
  262|      0|    if ((*(++p) & 0xc0) != 0x80)     /* Fifth byte */
  ------------------
  |  Branch (262:9): [True: 0, False: 0]
  ------------------
  263|      0|      {
  264|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 4;
  265|      0|      return PCRE2_ERROR_UTF8_ERR9;
  ------------------
  |  |  340|      0|#define PCRE2_ERROR_UTF8_ERR9       (-11)
  ------------------
  266|      0|      }
  267|      0|    if (c == 0xf8 && (d & 0x38) == 0)
  ------------------
  |  Branch (267:9): [True: 0, False: 0]
  |  Branch (267:22): [True: 0, False: 0]
  ------------------
  268|      0|      {
  269|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 4;
  270|      0|      return PCRE2_ERROR_UTF8_ERR18;
  ------------------
  |  |  349|      0|#define PCRE2_ERROR_UTF8_ERR18      (-20)
  ------------------
  271|      0|      }
  272|      0|    break;
  273|       |
  274|       |    /* 6-byte character. Check 3rd-6th bytes for 0x80. Then check for
  275|       |    1111 1100, xx00 00xx. */
  276|       |
  277|      1|    case 5:
  ------------------
  |  Branch (277:5): [True: 1, False: 214]
  ------------------
  278|      1|    if ((*(++p) & 0xc0) != 0x80)     /* Third byte */
  ------------------
  |  Branch (278:9): [True: 1, False: 0]
  ------------------
  279|      1|      {
  280|      1|      *erroroffset = (PCRE2_SIZE)(p - string) - 2;
  281|      1|      return PCRE2_ERROR_UTF8_ERR7;
  ------------------
  |  |  338|      1|#define PCRE2_ERROR_UTF8_ERR7        (-9)
  ------------------
  282|      1|      }
  283|      0|    if ((*(++p) & 0xc0) != 0x80)     /* Fourth byte */
  ------------------
  |  Branch (283:9): [True: 0, False: 0]
  ------------------
  284|      0|      {
  285|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 3;
  286|      0|      return PCRE2_ERROR_UTF8_ERR8;
  ------------------
  |  |  339|      0|#define PCRE2_ERROR_UTF8_ERR8       (-10)
  ------------------
  287|      0|      }
  288|      0|    if ((*(++p) & 0xc0) != 0x80)     /* Fifth byte */
  ------------------
  |  Branch (288:9): [True: 0, False: 0]
  ------------------
  289|      0|      {
  290|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 4;
  291|      0|      return PCRE2_ERROR_UTF8_ERR9;
  ------------------
  |  |  340|      0|#define PCRE2_ERROR_UTF8_ERR9       (-11)
  ------------------
  292|      0|      }
  293|      0|    if ((*(++p) & 0xc0) != 0x80)     /* Sixth byte */
  ------------------
  |  Branch (293:9): [True: 0, False: 0]
  ------------------
  294|      0|      {
  295|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 5;
  296|      0|      return PCRE2_ERROR_UTF8_ERR10;
  ------------------
  |  |  341|      0|#define PCRE2_ERROR_UTF8_ERR10      (-12)
  ------------------
  297|      0|      }
  298|      0|    if (c == 0xfc && (d & 0x3c) == 0)
  ------------------
  |  Branch (298:9): [True: 0, False: 0]
  |  Branch (298:22): [True: 0, False: 0]
  ------------------
  299|      0|      {
  300|      0|      *erroroffset = (PCRE2_SIZE)(p - string) - 5;
  301|      0|      return PCRE2_ERROR_UTF8_ERR19;
  ------------------
  |  |  350|      0|#define PCRE2_ERROR_UTF8_ERR19      (-21)
  ------------------
  302|      0|      }
  303|      0|    break;
  304|    215|    }
  305|       |
  306|       |  /* Character is valid under RFC 2279, but 4-byte and 5-byte characters are
  307|       |  excluded by RFC 3629. The pointer p is currently at the last byte of the
  308|       |  character. */
  309|       |
  310|    211|  if (ab > 3)
  ------------------
  |  Branch (310:7): [True: 0, False: 211]
  ------------------
  311|      0|    {
  312|      0|    *erroroffset = (PCRE2_SIZE)(p - string) - ab;
  313|      0|    return (ab == 4)? PCRE2_ERROR_UTF8_ERR11 : PCRE2_ERROR_UTF8_ERR12;
  ------------------
  |  |  342|      0|#define PCRE2_ERROR_UTF8_ERR11      (-13)
  ------------------
                  return (ab == 4)? PCRE2_ERROR_UTF8_ERR11 : PCRE2_ERROR_UTF8_ERR12;
  ------------------
  |  |  343|      0|#define PCRE2_ERROR_UTF8_ERR12      (-14)
  ------------------
  |  Branch (313:12): [True: 0, False: 0]
  ------------------
  314|      0|    }
  315|    211|  }
  316|    314|return 0;
  317|       |
  318|       |
  319|       |/* ----------------- Check a UTF-16 string ----------------- */
  320|       |
  321|       |#elif PCRE2_CODE_UNIT_WIDTH == 16
  322|       |
  323|       |/* There's not so much work, nor so many errors, for UTF-16.
  324|       |PCRE2_ERROR_UTF16_ERR1  Missing low surrogate at the end of the string
  325|       |PCRE2_ERROR_UTF16_ERR2  Invalid low surrogate
  326|       |PCRE2_ERROR_UTF16_ERR3  Isolated low surrogate
  327|       |*/
  328|       |
  329|       |for (p = string; length > 0; p++)
  330|       |  {
  331|       |  c = *p;
  332|       |  length--;
  333|       |
  334|       |  if ((c & 0xf800) != 0xd800)
  335|       |    {
  336|       |    /* Normal UTF-16 code point. Neither high nor low surrogate. */
  337|       |    }
  338|       |  else if ((c & 0x0400) == 0)
  339|       |    {
  340|       |    /* High surrogate. Must be a followed by a low surrogate. */
  341|       |    if (length == 0)
  342|       |      {
  343|       |      *erroroffset = (PCRE2_SIZE)(p - string);
  344|       |      return PCRE2_ERROR_UTF16_ERR1;
  345|       |      }
  346|       |    p++;
  347|       |    length--;
  348|       |    if ((*p & 0xfc00) != 0xdc00)
  349|       |      {
  350|       |      *erroroffset = (PCRE2_SIZE)(p - string) - 1;
  351|       |      return PCRE2_ERROR_UTF16_ERR2;
  352|       |      }
  353|       |    }
  354|       |  else
  355|       |    {
  356|       |    /* Isolated low surrogate. Always an error. */
  357|       |    *erroroffset = (PCRE2_SIZE)(p - string);
  358|       |    return PCRE2_ERROR_UTF16_ERR3;
  359|       |    }
  360|       |  }
  361|       |return 0;
  362|       |
  363|       |
  364|       |
  365|       |/* ----------------- Check a UTF-32 string ----------------- */
  366|       |
  367|       |#else
  368|       |
  369|       |/* There is very little to do for a UTF-32 string.
  370|       |PCRE2_ERROR_UTF32_ERR1  Surrogate character
  371|       |PCRE2_ERROR_UTF32_ERR2  Character > 0x10ffff
  372|       |*/
  373|       |
  374|       |for (p = string; length > 0; length--, p++)
  375|       |  {
  376|       |  c = *p;
  377|       |  if ((c & 0xfffff800u) != 0xd800u)
  378|       |    {
  379|       |    /* Normal UTF-32 code point. Neither high nor low surrogate. */
  380|       |    if (c > 0x10ffffu)
  381|       |      {
  382|       |      *erroroffset = (PCRE2_SIZE)(p - string);
  383|       |      return PCRE2_ERROR_UTF32_ERR2;
  384|       |      }
  385|       |    }
  386|       |  else
  387|       |    {
  388|       |    /* A surrogate */
  389|       |    *erroroffset = (PCRE2_SIZE)(p - string);
  390|       |    return PCRE2_ERROR_UTF32_ERR1;
  391|       |    }
  392|       |  }
  393|       |return 0;
  394|       |#endif  /* CODE_UNIT_WIDTH */
  395|    331|}

_pcre2_xclass_8:
   70|  1.67k|{
   71|  1.67k|PCRE2_UCHAR t;
  ------------------
  |  |  819|  1.67k|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|  1.67k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  1.67k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  1.67k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|  1.67k|BOOL negated = (*data & XCL_NOT) != 0;
  ------------------
  |  | 1328|  1.67k|#define XCL_NOT      0x01  /* Flag: this is a negative class */
  ------------------
   73|       |
   74|  1.67k|#if PCRE2_CODE_UNIT_WIDTH == 8
   75|       |/* In 8 bit mode, this must always be TRUE. Help the compiler to know that. */
   76|  1.67k|utf = TRUE;
  ------------------
  |  |   88|  1.67k|#define TRUE    1
  ------------------
   77|  1.67k|#endif
   78|       |
   79|       |/* Code points < 256 are matched against a bitmap, if one is present. If not,
   80|       |we still carry on, because there may be ranges that start below 256 in the
   81|       |additional data. */
   82|       |
   83|  1.67k|if (c < 256)
  ------------------
  |  Branch (83:5): [True: 1.52k, False: 150]
  ------------------
   84|  1.52k|  {
   85|  1.52k|  if ((*data & XCL_HASPROP) == 0)
  ------------------
  |  | 1330|  1.52k|#define XCL_HASPROP  0x04  /* Flag: property checks are present. */
  ------------------
  |  Branch (85:7): [True: 1.44k, False: 77]
  ------------------
   86|  1.44k|    {
   87|  1.44k|    if ((*data & XCL_MAP) == 0) return negated;
  ------------------
  |  | 1329|  1.44k|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
  |  Branch (87:9): [True: 0, False: 1.44k]
  ------------------
   88|  1.44k|    return (((uint8_t *)(data + 1))[c/8] & (1u << (c&7))) != 0;
   89|  1.44k|    }
   90|     77|  if ((*data & XCL_MAP) != 0 &&
  ------------------
  |  | 1329|     77|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
  |  Branch (90:7): [True: 77, False: 0]
  ------------------
   91|     77|    (((uint8_t *)(data + 1))[c/8] & (1u << (c&7))) != 0)
  ------------------
  |  Branch (91:5): [True: 34, False: 43]
  ------------------
   92|     34|    return !negated; /* char found */
   93|     77|  }
   94|       |
   95|       |/* First skip the bit map if present. Then match against the list of Unicode
   96|       |properties or large chars or ranges that end with a large char. We won't ever
   97|       |encounter XCL_PROP or XCL_NOTPROP when UTF support is not compiled. */
   98|       |
   99|    193|if ((*data++ & XCL_MAP) != 0) data += 32 / sizeof(PCRE2_UCHAR);
  ------------------
  |  | 1329|    193|#define XCL_MAP      0x02  /* Flag: a 32-byte map is present */
  ------------------
  |  Branch (99:5): [True: 193, False: 0]
  ------------------
  100|       |
  101|    504|while ((t = *data++) != XCL_END)
  ------------------
  |  | 1332|    504|#define XCL_END      0     /* Marks end of individual items */
  ------------------
  |  Branch (101:8): [True: 324, False: 180]
  ------------------
  102|    324|  {
  103|    324|  uint32_t x, y;
  104|    324|  if (t == XCL_SINGLE)
  ------------------
  |  | 1333|    324|#define XCL_SINGLE   1     /* Single item (one multibyte char) follows */
  ------------------
  |  Branch (104:7): [True: 188, False: 136]
  ------------------
  105|    188|    {
  106|    188|#ifdef SUPPORT_UNICODE
  107|    188|    if (utf)
  ------------------
  |  Branch (107:9): [True: 188, False: 0]
  ------------------
  108|    188|      {
  109|    188|      GETCHARINC(x, data); /* macro generates multiple statements */
  ------------------
  |  |  316|    188|  c = *eptr++; \
  |  |  317|    188|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|    188|    { \
  |  |  |  |  307|    188|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 71, False: 117]
  |  |  |  |  ------------------
  |  |  |  |  308|    188|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|    188|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 117, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|    117|      { \
  |  |  |  |  311|    117|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|    117|      eptr += 2; \
  |  |  |  |  313|    117|      } \
  |  |  |  |  314|    117|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|    188|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 188, False: 0]
  |  |  ------------------
  ------------------
  110|    188|      }
  111|      0|    else
  112|      0|#endif
  113|      0|    x = *data++;
  114|    188|    if (c == x) return !negated;
  ------------------
  |  Branch (114:9): [True: 0, False: 188]
  ------------------
  115|    188|    }
  116|    136|  else if (t == XCL_RANGE)
  ------------------
  |  | 1334|    136|#define XCL_RANGE    2     /* A range (two multibyte chars) follows */
  ------------------
  |  Branch (116:12): [True: 76, False: 60]
  ------------------
  117|     76|    {
  118|     76|#ifdef SUPPORT_UNICODE
  119|     76|    if (utf)
  ------------------
  |  Branch (119:9): [True: 76, False: 0]
  ------------------
  120|     76|      {
  121|     76|      GETCHARINC(x, data); /* macro generates multiple statements */
  ------------------
  |  |  316|     76|  c = *eptr++; \
  |  |  317|     76|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     76|    { \
  |  |  |  |  307|     76|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 76, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|     76|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     76|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     76|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 76, False: 0]
  |  |  ------------------
  ------------------
  122|     76|      GETCHARINC(y, data); /* macro generates multiple statements */
  ------------------
  |  |  316|     76|  c = *eptr++; \
  |  |  317|     76|  if (c >= 0xc0u) GETUTF8INC(c, eptr);
  |  |  ------------------
  |  |  |  |  306|     76|    { \
  |  |  |  |  307|     76|    if ((c & 0x20u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (307:9): [True: 76, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  308|     76|      c = ((c & 0x1fu) << 6) | (*eptr++ & 0x3fu); \
  |  |  |  |  309|     76|    else if ((c & 0x10u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (309:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  310|      0|      { \
  |  |  |  |  311|      0|      c = ((c & 0x0fu) << 12) | ((*eptr & 0x3fu) << 6) | (eptr[1] & 0x3fu); \
  |  |  |  |  312|      0|      eptr += 2; \
  |  |  |  |  313|      0|      } \
  |  |  |  |  314|      0|    else if ((c & 0x08u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (314:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  315|      0|      { \
  |  |  |  |  316|      0|      c = ((c & 0x07u) << 18) | ((*eptr & 0x3fu) << 12) | \
  |  |  |  |  317|      0|          ((eptr[1] & 0x3fu) << 6) | (eptr[2] & 0x3fu); \
  |  |  |  |  318|      0|      eptr += 3; \
  |  |  |  |  319|      0|      } \
  |  |  |  |  320|      0|    else if ((c & 0x04u) == 0) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (320:14): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  321|      0|      { \
  |  |  |  |  322|      0|      c = ((c & 0x03u) << 24) | ((*eptr & 0x3fu) << 18) | \
  |  |  |  |  323|      0|          ((eptr[1] & 0x3fu) << 12) | ((eptr[2] & 0x3fu) << 6) | \
  |  |  |  |  324|      0|          (eptr[3] & 0x3fu); \
  |  |  |  |  325|      0|      eptr += 4; \
  |  |  |  |  326|      0|      } \
  |  |  |  |  327|      0|    else \
  |  |  |  |  328|      0|      { \
  |  |  |  |  329|      0|      c = ((c & 0x01u) << 30) | ((*eptr & 0x3fu) << 24) | \
  |  |  |  |  330|      0|          ((eptr[1] & 0x3fu) << 18) | ((eptr[2] & 0x3fu) << 12) | \
  |  |  |  |  331|      0|          ((eptr[3] & 0x3fu) << 6) | (eptr[4] & 0x3fu); \
  |  |  |  |  332|      0|      eptr += 5; \
  |  |  |  |  333|      0|      } \
  |  |  |  |  334|     76|    }
  |  |  ------------------
  |  |  |  Branch (317:7): [True: 76, False: 0]
  |  |  ------------------
  ------------------
  123|     76|      }
  124|      0|    else
  125|      0|#endif
  126|      0|      {
  127|      0|      x = *data++;
  128|      0|      y = *data++;
  129|      0|      }
  130|     76|    if (c >= x && c <= y) return !negated;
  ------------------
  |  Branch (130:9): [True: 76, False: 0]
  |  Branch (130:19): [True: 0, False: 76]
  ------------------
  131|     76|    }
  132|       |
  133|     60|#ifdef SUPPORT_UNICODE
  134|     60|  else  /* XCL_PROP & XCL_NOTPROP */
  135|     60|    {
  136|     60|    int chartype;
  137|     60|    const ucd_record *prop = GET_UCD(c);
  ------------------
  |  | 1873|     60|#define GET_UCD(ch) REAL_GET_UCD(ch)
  |  |  ------------------
  |  |  |  | 1865|     60|#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     60|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1960|     60|#define _pcre2_ucd_records             PCRE2_SUFFIX(_pcre2_ucd_records_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|     60|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|     60|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     60|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1866|     60|        PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     60|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1962|     60|#define _pcre2_ucd_stage2              PCRE2_SUFFIX(_pcre2_ucd_stage2_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|     60|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|     60|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     60|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  |  195|     60|#define PRIV(name) _pcre2_##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1961|     60|#define _pcre2_ucd_stage1              PCRE2_SUFFIX(_pcre2_ucd_stage1_)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|     60|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  813|     60|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  812|     60|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|     60|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  | 1867|     60|        UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|     60|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  |  |                       UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE])
  |  |  |  |  ------------------
  |  |  |  |  |  | 1864|     60|#define UCD_BLOCK_SIZE 128
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|     60|    BOOL isprop = t == XCL_PROP;
  ------------------
  |  | 1335|     60|#define XCL_PROP     3     /* Unicode property (2-byte property code follows) */
  ------------------
  139|     60|    BOOL ok;
  140|       |
  141|     60|    switch(*data)
  142|     60|      {
  143|      0|      case PT_ANY:
  ------------------
  |  | 1293|      0|#define PT_ANY        0    /* Any property - matches all chars */
  ------------------
  |  Branch (143:7): [True: 0, False: 60]
  ------------------
  144|      0|      if (isprop) return !negated;
  ------------------
  |  Branch (144:11): [True: 0, False: 0]
  ------------------
  145|      0|      break;
  146|       |
  147|      0|      case PT_LAMP:
  ------------------
  |  | 1294|      0|#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
  ------------------
  |  Branch (147:7): [True: 0, False: 60]
  ------------------
  148|      0|      chartype = prop->chartype;
  149|      0|      if ((chartype == ucp_Lu || chartype == ucp_Ll ||
  ------------------
  |  Branch (149:11): [True: 0, False: 0]
  |  Branch (149:12): [True: 0, False: 0]
  |  Branch (149:34): [True: 0, False: 0]
  ------------------
  150|      0|           chartype == ucp_Lt) == isprop) return !negated;
  ------------------
  |  Branch (150:12): [True: 0, False: 0]
  ------------------
  151|      0|      break;
  152|       |
  153|      0|      case PT_GC:
  ------------------
  |  | 1295|      0|#define PT_GC         2    /* Specified general characteristic (e.g. L) */
  ------------------
  |  Branch (153:7): [True: 0, False: 60]
  ------------------
  154|      0|      if ((data[1] == PRIV(ucp_gentype)[prop->chartype]) == isprop)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (154:11): [True: 0, False: 0]
  ------------------
  155|      0|        return !negated;
  156|      0|      break;
  157|       |
  158|     32|      case PT_PC:
  ------------------
  |  | 1296|     32|#define PT_PC         3    /* Specified particular characteristic (e.g. Lu) */
  ------------------
  |  Branch (158:7): [True: 32, False: 28]
  ------------------
  159|     32|      if ((data[1] == prop->chartype) == isprop) return !negated;
  ------------------
  |  Branch (159:11): [True: 0, False: 32]
  ------------------
  160|     32|      break;
  161|       |
  162|     32|      case PT_SC:
  ------------------
  |  | 1297|      0|#define PT_SC         4    /* Script only (e.g. Han) */
  ------------------
  |  Branch (162:7): [True: 0, False: 60]
  ------------------
  163|      0|      if ((data[1] == prop->script) == isprop) return !negated;
  ------------------
  |  Branch (163:11): [True: 0, False: 0]
  ------------------
  164|      0|      break;
  165|       |
  166|      0|      case PT_SCX:
  ------------------
  |  | 1298|      0|#define PT_SCX        5    /* Script extensions (includes SC) */
  ------------------
  |  Branch (166:7): [True: 0, False: 60]
  ------------------
  167|      0|      ok = (data[1] == prop->script ||
  ------------------
  |  Branch (167:13): [True: 0, False: 0]
  ------------------
  168|      0|            MAPBIT(PRIV(ucd_script_sets) + UCD_SCRIPTX_PROP(prop), data[1]) != 0);
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  |  Branch (168:13): [True: 0, False: 0]
  ------------------
  169|      0|      if (ok == isprop) return !negated;
  ------------------
  |  Branch (169:11): [True: 0, False: 0]
  ------------------
  170|      0|      break;
  171|       |
  172|      0|      case PT_ALNUM:
  ------------------
  |  | 1299|      0|#define PT_ALNUM      6    /* Alphanumeric - the union of L and N */
  ------------------
  |  Branch (172:7): [True: 0, False: 60]
  ------------------
  173|      0|      chartype = prop->chartype;
  174|      0|      if ((PRIV(ucp_gentype)[chartype] == ucp_L ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (174:11): [True: 0, False: 0]
  |  Branch (174:12): [True: 0, False: 0]
  ------------------
  175|      0|           PRIV(ucp_gentype)[chartype] == ucp_N) == isprop)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (175:12): [True: 0, False: 0]
  ------------------
  176|      0|        return !negated;
  177|      0|      break;
  178|       |
  179|       |      /* Perl space used to exclude VT, but from Perl 5.18 it is included,
  180|       |      which means that Perl space and POSIX space are now identical. PCRE
  181|       |      was changed at release 8.34. */
  182|       |
  183|      0|      case PT_SPACE:    /* Perl space */
  ------------------
  |  | 1300|      0|#define PT_SPACE      7    /* Perl space - general category Z plus 9,10,12,13 */
  ------------------
  |  Branch (183:7): [True: 0, False: 60]
  ------------------
  184|      0|      case PT_PXSPACE:  /* POSIX space */
  ------------------
  |  | 1301|      0|#define PT_PXSPACE    8    /* POSIX space - Z plus 9,10,11,12,13 */
  ------------------
  |  Branch (184:7): [True: 0, False: 60]
  ------------------
  185|      0|      switch(c)
  186|      0|        {
  187|      0|        HSPACE_CASES:
  ------------------
  |  |  430|      0|  HSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  425|      0|  case CHAR_HT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  987|      0|#define CHAR_HT                     '\011'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (425:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  426|      0|  case CHAR_SPACE: \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1000|      0|#define CHAR_SPACE                  '\040'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (426:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  427|      0|  case CHAR_NBSP
  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|#define CHAR_NBSP                   ((unsigned char)'\xa0')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  431|      0|  HSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  407|      0|  case 0x1680:  /* OGHAM SPACE MARK */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (407:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  408|      0|  case 0x180e:  /* MONGOLIAN VOWEL SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (408:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  409|      0|  case 0x2000:  /* EN QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (409:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  410|      0|  case 0x2001:  /* EM QUAD */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (410:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  411|      0|  case 0x2002:  /* EN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (411:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  412|      0|  case 0x2003:  /* EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (412:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  413|      0|  case 0x2004:  /* THREE-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (413:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  414|      0|  case 0x2005:  /* FOUR-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|      0|  case 0x2006:  /* SIX-PER-EM SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (415:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  416|      0|  case 0x2007:  /* FIGURE SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (416:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  417|      0|  case 0x2008:  /* PUNCTUATION SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (417:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  418|      0|  case 0x2009:  /* THIN SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (418:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  419|      0|  case 0x200A:  /* HAIR SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (419:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  420|      0|  case 0x202f:  /* NARROW NO-BREAK SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (420:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  421|      0|  case 0x205f:  /* MEDIUM MATHEMATICAL SPACE */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  422|      0|  case 0x3000   /* IDEOGRAPHIC SPACE */
  |  |  ------------------
  ------------------
  188|      0|        VSPACE_CASES:
  ------------------
  |  |  448|      0|  VSPACE_BYTE_CASES: \
  |  |  ------------------
  |  |  |  |  441|      0|  case CHAR_LF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  991|      0|#define CHAR_LF                     '\012'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (441:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  442|      0|  case CHAR_VT: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  988|      0|#define CHAR_VT                     '\013'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (442:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  443|      0|  case CHAR_FF: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  989|      0|#define CHAR_FF                     '\014'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (443:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  444|      0|  case CHAR_CR: \
  |  |  |  |  ------------------
  |  |  |  |  |  |  990|      0|#define CHAR_CR                     '\015'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (444:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  445|      0|  case CHAR_NEL
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define CHAR_NEL                    ((unsigned char)'\x85')
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  449|      0|  VSPACE_MULTIBYTE_CASES
  |  |  ------------------
  |  |  |  |  437|      0|  case 0x2028:    /* LINE SEPARATOR */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (437:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  438|      0|  case 0x2029     /* PARAGRAPH SEPARATOR */
  |  |  ------------------
  ------------------
  189|      0|        if (isprop) return !negated;
  ------------------
  |  Branch (189:13): [True: 0, False: 0]
  ------------------
  190|      0|        break;
  191|       |
  192|      0|        default:
  ------------------
  |  Branch (192:9): [True: 0, False: 0]
  ------------------
  193|      0|        if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z) == isprop)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (193:13): [True: 0, False: 0]
  ------------------
  194|      0|          return !negated;
  195|      0|        break;
  196|      0|        }
  197|      0|      break;
  198|       |
  199|     28|      case PT_WORD:
  ------------------
  |  | 1302|     28|#define PT_WORD       9    /* Word - L, N, Mn, or Pc */
  ------------------
  |  Branch (199:7): [True: 28, False: 32]
  ------------------
  200|     28|      chartype = prop->chartype;
  201|     28|      if ((PRIV(ucp_gentype)[chartype] == ucp_L ||
  ------------------
  |  |  195|     28|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     28|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     28|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     28|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     28|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (201:11): [True: 13, False: 15]
  |  Branch (201:12): [True: 12, False: 16]
  ------------------
  202|     16|           PRIV(ucp_gentype)[chartype] == ucp_N ||
  ------------------
  |  |  195|     16|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|     16|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|     16|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|     16|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|     16|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (202:12): [True: 0, False: 16]
  ------------------
  203|     16|           chartype == ucp_Mn || chartype == ucp_Pc) == isprop)
  ------------------
  |  Branch (203:12): [True: 0, False: 16]
  |  Branch (203:34): [True: 1, False: 15]
  ------------------
  204|     13|        return !negated;
  205|     15|      break;
  206|       |
  207|     15|      case PT_UCNC:
  ------------------
  |  | 1304|      0|#define PT_UCNC      11    /* Universal Character nameable character */
  ------------------
  |  Branch (207:7): [True: 0, False: 60]
  ------------------
  208|      0|      if (c < 0xa0)
  ------------------
  |  Branch (208:11): [True: 0, False: 0]
  ------------------
  209|      0|        {
  210|      0|        if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1004|      0|#define CHAR_DOLLAR_SIGN            '\044'
  ------------------
                      if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT ||
  ------------------
  |  | 1032|      0|#define CHAR_COMMERCIAL_AT          '\100'
  ------------------
  |  Branch (210:13): [True: 0, False: 0]
  |  Branch (210:14): [True: 0, False: 0]
  |  Branch (210:39): [True: 0, False: 0]
  ------------------
  211|      0|             c == CHAR_GRAVE_ACCENT) == isprop)
  ------------------
  |  | 1064|      0|#define CHAR_GRAVE_ACCENT           '\140'
  ------------------
  |  Branch (211:14): [True: 0, False: 0]
  ------------------
  212|      0|          return !negated;
  213|      0|        }
  214|      0|      else
  215|      0|        {
  216|      0|        if ((c < 0xd800 || c > 0xdfff) == isprop)
  ------------------
  |  Branch (216:13): [True: 0, False: 0]
  |  Branch (216:14): [True: 0, False: 0]
  |  Branch (216:28): [True: 0, False: 0]
  ------------------
  217|      0|          return !negated;
  218|      0|        }
  219|      0|      break;
  220|       |
  221|      0|      case PT_BIDICL:
  ------------------
  |  | 1305|      0|#define PT_BIDICL    12    /* Specified bidi class */
  ------------------
  |  Branch (221:7): [True: 0, False: 60]
  ------------------
  222|      0|      if ((UCD_BIDICLASS_PROP(prop) == data[1]) == isprop)
  ------------------
  |  | 1881|      0|#define UCD_BIDICLASS_PROP(prop) ((prop)->scriptx_bidiclass >> UCD_BIDICLASS_SHIFT)
  |  |  ------------------
  |  |  |  | 1877|      0|#define UCD_BIDICLASS_SHIFT 11
  |  |  ------------------
  ------------------
  |  Branch (222:11): [True: 0, False: 0]
  ------------------
  223|      0|        return !negated;
  224|      0|      break;
  225|       |
  226|      0|      case PT_BOOL:
  ------------------
  |  | 1306|      0|#define PT_BOOL      13    /* Boolean property */
  ------------------
  |  Branch (226:7): [True: 0, False: 60]
  ------------------
  227|      0|      ok = MAPBIT(PRIV(ucd_boolprop_sets) +
  ------------------
  |  | 1898|      0|#define MAPBIT(map,n) ((map)[(n)/32]&(1u<<((n)%32)))
  ------------------
  228|      0|        UCD_BPROPS_PROP(prop), data[1]) != 0;
  229|      0|      if (ok == isprop) return !negated;
  ------------------
  |  Branch (229:11): [True: 0, False: 0]
  ------------------
  230|      0|      break;
  231|       |
  232|       |      /* The following three properties can occur only in an XCLASS, as there
  233|       |      is no \p or \P coding for them. */
  234|       |
  235|       |      /* Graphic character. Implement this as not Z (space or separator) and
  236|       |      not C (other), except for Cf (format) with a few exceptions. This seems
  237|       |      to be what Perl does. The exceptional characters are:
  238|       |
  239|       |      U+061C           Arabic Letter Mark
  240|       |      U+180E           Mongolian Vowel Separator
  241|       |      U+2066 - U+2069  Various "isolate"s
  242|       |      */
  243|       |
  244|      0|      case PT_PXGRAPH:
  ------------------
  |  | 1315|      0|#define PT_PXGRAPH   14    /* [:graph:] - characters that mark the paper */
  ------------------
  |  Branch (244:7): [True: 0, False: 60]
  ------------------
  245|      0|      chartype = prop->chartype;
  246|      0|      if ((PRIV(ucp_gentype)[chartype] != ucp_Z &&
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (246:11): [True: 0, False: 0]
  |  Branch (246:12): [True: 0, False: 0]
  ------------------
  247|      0|            (PRIV(ucp_gentype)[chartype] != ucp_C ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (247:14): [True: 0, False: 0]
  ------------------
  248|      0|              (chartype == ucp_Cf &&
  ------------------
  |  Branch (248:16): [True: 0, False: 0]
  ------------------
  249|      0|                c != 0x061c && c != 0x180e && (c < 0x2066 || c > 0x2069))
  ------------------
  |  Branch (249:17): [True: 0, False: 0]
  |  Branch (249:32): [True: 0, False: 0]
  |  Branch (249:48): [True: 0, False: 0]
  |  Branch (249:62): [True: 0, False: 0]
  ------------------
  250|      0|         )) == isprop)
  251|      0|        return !negated;
  252|      0|      break;
  253|       |
  254|       |      /* Printable character: same as graphic, with the addition of Zs, i.e.
  255|       |      not Zl and not Zp, and U+180E. */
  256|       |
  257|      0|      case PT_PXPRINT:
  ------------------
  |  | 1316|      0|#define PT_PXPRINT   15    /* [:print:] - [:graph:] plus non-control spaces */
  ------------------
  |  Branch (257:7): [True: 0, False: 60]
  ------------------
  258|      0|      chartype = prop->chartype;
  259|      0|      if ((chartype != ucp_Zl &&
  ------------------
  |  Branch (259:11): [True: 0, False: 0]
  |  Branch (259:12): [True: 0, False: 0]
  ------------------
  260|      0|           chartype != ucp_Zp &&
  ------------------
  |  Branch (260:12): [True: 0, False: 0]
  ------------------
  261|      0|            (PRIV(ucp_gentype)[chartype] != ucp_C ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (261:14): [True: 0, False: 0]
  ------------------
  262|      0|              (chartype == ucp_Cf &&
  ------------------
  |  Branch (262:16): [True: 0, False: 0]
  ------------------
  263|      0|                c != 0x061c && (c < 0x2066 || c > 0x2069))
  ------------------
  |  Branch (263:17): [True: 0, False: 0]
  |  Branch (263:33): [True: 0, False: 0]
  |  Branch (263:47): [True: 0, False: 0]
  ------------------
  264|      0|         )) == isprop)
  265|      0|        return !negated;
  266|      0|      break;
  267|       |
  268|       |      /* Punctuation: all Unicode punctuation, plus ASCII characters that
  269|       |      Unicode treats as symbols rather than punctuation, for Perl
  270|       |      compatibility (these are $+<=>^`|~). */
  271|       |
  272|      0|      case PT_PXPUNCT:
  ------------------
  |  | 1317|      0|#define PT_PXPUNCT   16    /* [:punct:] - punctuation characters */
  ------------------
  |  Branch (272:7): [True: 0, False: 60]
  ------------------
  273|      0|      chartype = prop->chartype;
  274|      0|      if ((PRIV(ucp_gentype)[chartype] == ucp_P ||
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (274:11): [True: 0, False: 0]
  |  Branch (274:12): [True: 0, False: 0]
  ------------------
  275|      0|            (c < 128 && PRIV(ucp_gentype)[chartype] == ucp_S)) == isprop)
  ------------------
  |  |  195|      0|#define PRIV(name) _pcre2_##name
  |  |  ------------------
  |  |  |  | 1964|      0|#define _pcre2_ucp_gentype             PCRE2_SUFFIX(_pcre2_ucp_gentype_)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (275:14): [True: 0, False: 0]
  |  Branch (275:25): [True: 0, False: 0]
  ------------------
  276|      0|        return !negated;
  277|      0|      break;
  278|       |
  279|       |      /* Perl has two sets of hex digits */
  280|       |
  281|      0|      case PT_PXXDIGIT:
  ------------------
  |  | 1318|      0|#define PT_PXXDIGIT  17    /* [:xdigit:] - hex digits */
  ------------------
  |  Branch (281:7): [True: 0, False: 60]
  ------------------
  282|      0|      if (((c >= CHAR_0 && c <= CHAR_9) ||
  ------------------
  |  | 1016|      0|#define CHAR_0                      '\060'
  ------------------
                    if (((c >= CHAR_0 && c <= CHAR_9) ||
  ------------------
  |  | 1025|      0|#define CHAR_9                      '\071'
  ------------------
  |  Branch (282:11): [True: 0, False: 0]
  |  Branch (282:13): [True: 0, False: 0]
  |  Branch (282:28): [True: 0, False: 0]
  ------------------
  283|      0|           (c >= CHAR_A && c <= CHAR_F) ||
  ------------------
  |  | 1033|      0|#define CHAR_A                      '\101'
  ------------------
                         (c >= CHAR_A && c <= CHAR_F) ||
  ------------------
  |  | 1038|      0|#define CHAR_F                      '\106'
  ------------------
  |  Branch (283:13): [True: 0, False: 0]
  |  Branch (283:28): [True: 0, False: 0]
  ------------------
  284|      0|           (c >= CHAR_a && c <= CHAR_f) ||
  ------------------
  |  | 1065|      0|#define CHAR_a                      '\141'
  ------------------
                         (c >= CHAR_a && c <= CHAR_f) ||
  ------------------
  |  | 1070|      0|#define CHAR_f                      '\146'
  ------------------
  |  Branch (284:13): [True: 0, False: 0]
  |  Branch (284:28): [True: 0, False: 0]
  ------------------
  285|      0|           (c >= 0xff10 && c <= 0xff19) ||  /* Fullwidth digits */
  ------------------
  |  Branch (285:13): [True: 0, False: 0]
  |  Branch (285:28): [True: 0, False: 0]
  ------------------
  286|      0|           (c >= 0xff21 && c <= 0xff26) ||  /* Fullwidth letters */
  ------------------
  |  Branch (286:13): [True: 0, False: 0]
  |  Branch (286:28): [True: 0, False: 0]
  ------------------
  287|      0|           (c >= 0xff41 && c <= 0xff46)) == isprop)
  ------------------
  |  Branch (287:13): [True: 0, False: 0]
  |  Branch (287:28): [True: 0, False: 0]
  ------------------
  288|      0|        return !negated;
  289|      0|      break;
  290|       |
  291|       |      /* This should never occur, but compilers may mutter if there is no
  292|       |      default. */
  293|       |
  294|      0|      default:
  ------------------
  |  Branch (294:7): [True: 0, False: 60]
  ------------------
  295|      0|      return FALSE;
  ------------------
  |  |   87|      0|#define FALSE   0
  ------------------
  296|     60|      }
  297|       |
  298|     47|    data += 2;
  299|     47|    }
  300|       |#else
  301|       |  (void)utf;  /* Avoid compiler warning */
  302|       |#endif  /* SUPPORT_UNICODE */
  303|    324|  }
  304|       |
  305|    180|return negated;   /* char did not match */
  306|    193|}

pcre_get_compiled_regex_cache_ex:
  575|    380|{
  576|    380|	pcre2_code			*re = NULL;
  ------------------
  |  |  822|    380|#define pcre2_code                  PCRE2_SUFFIX(pcre2_code_)
  |  |  ------------------
  |  |  |  |  994|    380|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    380|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    380|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  577|       |#if 10 == PCRE2_MAJOR && 37 == PCRE2_MINOR && !defined(HAVE_BUNDLED_PCRE)
  578|       |	uint32_t			 coptions = PCRE2_NO_START_OPTIMIZE;
  579|       |#else
  580|    380|	uint32_t			 coptions = 0;
  581|    380|#endif
  582|    380|	uint32_t			 eoptions = 0;
  583|    380|	PCRE2_UCHAR	         error[128];
  ------------------
  |  |  819|    380|#define PCRE2_UCHAR                 PCRE2_SUFFIX(PCRE2_UCHAR)
  |  |  ------------------
  |  |  |  |  994|    380|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    380|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    380|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|    380|	PCRE2_SIZE           erroffset;
  ------------------
  |  |  479|    380|#define PCRE2_SIZE            size_t
  ------------------
  585|    380|	int                  errnumber;
  586|    380|	char				 delimiter;
  587|    380|	char				 start_delimiter;
  588|    380|	char				 end_delimiter;
  589|    380|	char				*p, *pp;
  590|    380|	char				*pattern;
  591|    380|	size_t				 pattern_len;
  592|    380|	uint32_t			 poptions = 0;
  593|    380|	const uint8_t       *tables = NULL;
  594|    380|	zval                *zv;
  595|    380|	pcre_cache_entry	 new_entry;
  596|    380|	int					 rc;
  597|    380|	zend_string 		*key;
  598|    380|	pcre_cache_entry	*ret;
  599|       |
  600|    380|	if (locale_aware && BG(ctype_string)) {
  ------------------
  |  |  113|    380|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 380]
  |  |  ------------------
  ------------------
  |  Branch (600:6): [True: 380, False: 0]
  ------------------
  601|      0|		key = zend_string_concat2(
  602|      0|			ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)),
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  603|      0|			ZSTR_VAL(regex), ZSTR_LEN(regex));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(regex), ZSTR_LEN(regex));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  604|    380|	} else {
  605|    380|		key = regex;
  606|    380|	}
  607|       |
  608|       |	/* Try to lookup the cached regex entry, and if successful, just pass
  609|       |	   back the compiled pattern, otherwise go on and compile it. */
  610|    380|	zv = zend_hash_find(&PCRE_G(pcre_cache), key);
  ------------------
  |  |   88|    380|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|    380|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  611|    380|	if (zv) {
  ------------------
  |  Branch (611:6): [True: 24, False: 356]
  ------------------
  612|     24|		if (key != regex) {
  ------------------
  |  Branch (612:7): [True: 0, False: 24]
  ------------------
  613|      0|			zend_string_release_ex(key, 0);
  614|      0|		}
  615|     24|		return (pcre_cache_entry*)Z_PTR_P(zv);
  ------------------
  |  | 1053|     24|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|     24|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  616|     24|	}
  617|       |
  618|    356|	p = ZSTR_VAL(regex);
  ------------------
  |  |   67|    356|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  619|    356|	const char* end_p = ZSTR_VAL(regex) + ZSTR_LEN(regex);
  ------------------
  |  |   67|    356|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	const char* end_p = ZSTR_VAL(regex) + ZSTR_LEN(regex);
  ------------------
  |  |   68|    356|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  620|       |
  621|       |	/* Parse through the leading whitespace, and display a warning if we
  622|       |	   get to the end without encountering a delimiter. */
  623|    356|	while (isspace((unsigned char)*p)) p++;
  ------------------
  |  Branch (623:9): [True: 0, False: 356]
  ------------------
  624|    356|	if (p >= end_p) {
  ------------------
  |  Branch (624:6): [True: 0, False: 356]
  ------------------
  625|      0|		if (key != regex) {
  ------------------
  |  Branch (625:7): [True: 0, False: 0]
  ------------------
  626|      0|			zend_string_release_ex(key, 0);
  627|      0|		}
  628|      0|		php_error_docref(NULL, E_WARNING, "Empty regular expression");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  629|      0|		pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  630|      0|		return NULL;
  631|      0|	}
  632|       |
  633|       |	/* Get the delimiter and display a warning if it is alphanumeric
  634|       |	   or a backslash. */
  635|    356|	delimiter = *p++;
  636|    356|	if (isalnum((unsigned char)delimiter) || delimiter == '\\' || delimiter == '\0') {
  ------------------
  |  Branch (636:6): [True: 1, False: 355]
  |  Branch (636:43): [True: 0, False: 355]
  |  Branch (636:64): [True: 0, False: 355]
  ------------------
  637|      1|		if (key != regex) {
  ------------------
  |  Branch (637:7): [True: 0, False: 1]
  ------------------
  638|      0|			zend_string_release_ex(key, 0);
  639|      0|		}
  640|      1|		php_error_docref(NULL, E_WARNING, "Delimiter must not be alphanumeric, backslash, or NUL byte");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  641|      1|		pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  ------------------
  |  |  385|      1|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  642|      1|		return NULL;
  643|      1|	}
  644|       |
  645|    355|	start_delimiter = delimiter;
  646|    355|	if ((pp = strchr("([{< )]}> )]}>", delimiter)))
  ------------------
  |  Branch (646:6): [True: 4, False: 351]
  ------------------
  647|      4|		delimiter = pp[5];
  648|    355|	end_delimiter = delimiter;
  649|       |
  650|    355|	pp = p;
  651|       |
  652|    355|	if (start_delimiter == end_delimiter) {
  ------------------
  |  Branch (652:6): [True: 354, False: 1]
  ------------------
  653|       |		/* We need to iterate through the pattern, searching for the ending delimiter,
  654|       |		   but skipping the backslashed delimiters.  If the ending delimiter is not
  655|       |		   found, display a warning. */
  656|  16.4k|		while (pp < end_p) {
  ------------------
  |  Branch (656:10): [True: 16.4k, False: 3]
  ------------------
  657|  16.4k|			if (*pp == '\\' && pp + 1 < end_p) pp++;
  ------------------
  |  Branch (657:8): [True: 1.12k, False: 15.3k]
  |  Branch (657:23): [True: 1.12k, False: 0]
  ------------------
  658|  15.3k|			else if (*pp == delimiter)
  ------------------
  |  Branch (658:13): [True: 351, False: 14.9k]
  ------------------
  659|    351|				break;
  660|  16.1k|			pp++;
  661|  16.1k|		}
  662|    354|	} else {
  663|       |		/* We iterate through the pattern, searching for the matching ending
  664|       |		 * delimiter. For each matching starting delimiter, we increment nesting
  665|       |		 * level, and decrement it for each matching ending delimiter. If we
  666|       |		 * reach the end of the pattern without matching, display a warning.
  667|       |		 */
  668|      1|		int brackets = 1; 	/* brackets nesting level */
  669|     67|		while (pp < end_p) {
  ------------------
  |  Branch (669:10): [True: 66, False: 1]
  ------------------
  670|     66|			if (*pp == '\\' && pp + 1 < end_p) pp++;
  ------------------
  |  Branch (670:8): [True: 4, False: 62]
  |  Branch (670:23): [True: 4, False: 0]
  ------------------
  671|     62|			else if (*pp == end_delimiter && --brackets <= 0)
  ------------------
  |  Branch (671:13): [True: 4, False: 58]
  |  Branch (671:37): [True: 0, False: 4]
  ------------------
  672|      0|				break;
  673|     62|			else if (*pp == start_delimiter)
  ------------------
  |  Branch (673:13): [True: 5, False: 57]
  ------------------
  674|      5|				brackets++;
  675|     66|			pp++;
  676|     66|		}
  677|      1|	}
  678|       |
  679|    355|	if (pp >= end_p) {
  ------------------
  |  Branch (679:6): [True: 4, False: 351]
  ------------------
  680|      4|		if (key != regex) {
  ------------------
  |  Branch (680:7): [True: 0, False: 4]
  ------------------
  681|      0|			zend_string_release_ex(key, 0);
  682|      0|		}
  683|      4|		if (start_delimiter == end_delimiter) {
  ------------------
  |  Branch (683:7): [True: 3, False: 1]
  ------------------
  684|      3|			php_error_docref(NULL,E_WARNING, "No ending delimiter '%c' found", delimiter);
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
  685|      3|		} else {
  686|      1|			php_error_docref(NULL,E_WARNING, "No ending matching delimiter '%c' found", delimiter);
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  687|      1|		}
  688|      4|		pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  ------------------
  |  |  385|      4|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  689|      4|		return NULL;
  690|      4|	}
  691|       |
  692|       |	/* Make a copy of the actual pattern. */
  693|    351|	pattern_len = pp - p;
  694|    351|	pattern = estrndup(p, pattern_len);
  ------------------
  |  |  164|    351|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    351|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    351|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    351|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    351|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|       |
  696|       |	/* Move on to the options */
  697|    351|	pp++;
  698|       |
  699|       |	/* Parse through the options, setting appropriate flags.  Display
  700|       |	   a warning if we encounter an unknown modifier. */
  701|    905|	while (pp < end_p) {
  ------------------
  |  Branch (701:9): [True: 561, False: 344]
  ------------------
  702|    561|		switch (*pp++) {
  703|       |			/* Perl compatible options */
  704|    209|			case 'i':	coptions |= PCRE2_CASELESS;		break;
  ------------------
  |  |  122|    209|#define PCRE2_CASELESS            0x00000008u  /* C       */
  ------------------
  |  Branch (704:4): [True: 209, False: 352]
  ------------------
  705|     36|			case 'm':	coptions |= PCRE2_MULTILINE;		break;
  ------------------
  |  |  129|     36|#define PCRE2_MULTILINE           0x00000400u  /* C       */
  ------------------
  |  Branch (705:4): [True: 36, False: 525]
  ------------------
  706|      4|			case 'n':	coptions |= PCRE2_NO_AUTO_CAPTURE;	break;
  ------------------
  |  |  132|      4|#define PCRE2_NO_AUTO_CAPTURE     0x00002000u  /* C       */
  ------------------
  |  Branch (706:4): [True: 4, False: 557]
  ------------------
  707|     48|			case 's':	coptions |= PCRE2_DOTALL;		break;
  ------------------
  |  |  124|     48|#define PCRE2_DOTALL              0x00000020u  /* C       */
  ------------------
  |  Branch (707:4): [True: 48, False: 513]
  ------------------
  708|      5|			case 'x':	coptions |= PCRE2_EXTENDED;		break;
  ------------------
  |  |  126|      5|#define PCRE2_EXTENDED            0x00000080u  /* C       */
  ------------------
  |  Branch (708:4): [True: 5, False: 556]
  ------------------
  709|       |
  710|       |			/* PCRE specific options */
  711|      3|			case 'A':	coptions |= PCRE2_ANCHORED;		break;
  ------------------
  |  |  105|      3|#define PCRE2_ANCHORED            0x80000000u
  ------------------
  |  Branch (711:4): [True: 3, False: 558]
  ------------------
  712|      1|			case 'D':	coptions |= PCRE2_DOLLAR_ENDONLY;break;
  ------------------
  |  |  123|      1|#define PCRE2_DOLLAR_ENDONLY      0x00000010u  /*   J M D */
  ------------------
  |  Branch (712:4): [True: 1, False: 560]
  ------------------
  713|      0|#ifdef PCRE2_EXTRA_CASELESS_RESTRICT
  714|     11|			case 'r':	eoptions |= PCRE2_EXTRA_CASELESS_RESTRICT; break;
  ------------------
  |  |  156|     11|#define PCRE2_EXTRA_CASELESS_RESTRICT        0x00000080u  /* C */
  ------------------
  |  Branch (714:4): [True: 11, False: 550]
  ------------------
  715|      0|#endif
  716|      0|			case 'S':	/* Pass. */					break;
  ------------------
  |  Branch (716:4): [True: 0, False: 561]
  ------------------
  717|      1|			case 'X':	/* Pass. */					break;
  ------------------
  |  Branch (717:4): [True: 1, False: 560]
  ------------------
  718|     26|			case 'U':	coptions |= PCRE2_UNGREEDY;		break;
  ------------------
  |  |  137|     26|#define PCRE2_UNGREEDY            0x00040000u  /* C       */
  ------------------
  |  Branch (718:4): [True: 26, False: 535]
  ------------------
  719|    172|			case 'u':	coptions |= PCRE2_UTF;
  ------------------
  |  |  138|    172|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (719:4): [True: 172, False: 389]
  ------------------
  720|       |	/* In  PCRE,  by  default, \d, \D, \s, \S, \w, and \W recognize only ASCII
  721|       |	   characters, even in UTF-8 mode. However, this can be changed by setting
  722|       |	   the PCRE2_UCP option. */
  723|    172|#ifdef PCRE2_UCP
  724|    172|						coptions |= PCRE2_UCP;
  ------------------
  |  |  136|    172|#define PCRE2_UCP                 0x00020000u  /* C J M D */
  ------------------
  725|    172|#endif
  726|    172|				break;
  727|     15|			case 'J':	coptions |= PCRE2_DUPNAMES;		break;
  ------------------
  |  |  125|     15|#define PCRE2_DUPNAMES            0x00000040u  /* C       */
  ------------------
  |  Branch (727:4): [True: 15, False: 546]
  ------------------
  728|       |
  729|      6|			case ' ':
  ------------------
  |  Branch (729:4): [True: 6, False: 555]
  ------------------
  730|     22|			case '\n':
  ------------------
  |  Branch (730:4): [True: 16, False: 545]
  ------------------
  731|     23|			case '\r':
  ------------------
  |  Branch (731:4): [True: 1, False: 560]
  ------------------
  732|     23|				break;
  733|       |
  734|      0|			case 'e': /* legacy eval */
  ------------------
  |  Branch (734:4): [True: 0, False: 561]
  ------------------
  735|      7|			default:
  ------------------
  |  Branch (735:4): [True: 7, False: 554]
  ------------------
  736|      7|				if (pp[-1]) {
  ------------------
  |  Branch (736:9): [True: 7, False: 0]
  ------------------
  737|      7|					php_error_docref(NULL, E_WARNING, "Unknown modifier '%c'", pp[-1]);
  ------------------
  |  |   23|      7|#define E_WARNING			(1<<1L)
  ------------------
  738|      7|				} else {
  739|      0|					php_error_docref(NULL, E_WARNING, "NUL byte is not a valid modifier");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  740|      0|				}
  741|      7|				pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  ------------------
  |  |  385|      7|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  742|      7|				efree(pattern);
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|      7|				if (key != regex) {
  ------------------
  |  Branch (743:9): [True: 0, False: 7]
  ------------------
  744|      0|					zend_string_release_ex(key, 0);
  745|      0|				}
  746|      7|				return NULL;
  747|    561|		}
  748|    561|	}
  749|       |
  750|    344|	if (key != regex) {
  ------------------
  |  Branch (750:6): [True: 0, False: 344]
  ------------------
  751|      0|		zv = zend_hash_str_lookup(&char_tables, ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zv = zend_hash_str_lookup(&char_tables, ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  752|      0|		if (Z_ISNULL_P(zv)) {
  ------------------
  |  |  970|      0|#define Z_ISNULL_P(zval_p)			Z_ISNULL(*(zval_p))
  |  |  ------------------
  |  |  |  |  969|      0|#define Z_ISNULL(zval)				(Z_TYPE(zval) == IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISNULL(zval)				(Z_TYPE(zval) == IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (969:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  753|      0|			tables = pcre2_maketables(gctx);
  ------------------
  |  |  879|      0|#define pcre2_maketables                      PCRE2_SUFFIX(pcre2_maketables_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   51|      0|#define pcre2_maketables_8 php_pcre2_maketables
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  754|      0|			if (UNEXPECTED(!tables)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  755|       |				/* Remove the placeholder entry created by zend_hash_str_lookup(),
  756|       |				 * set ptr to NULL first so the destructor (pefree) is safe. */
  757|      0|				ZVAL_PTR(zv, NULL);
  ------------------
  |  | 1251|      0|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      0|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      0|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      0|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  758|      0|				zend_hash_str_del(&char_tables, ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				zend_hash_str_del(&char_tables, ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  759|      0|				php_error_docref(NULL,E_WARNING, "Failed to generate locale character tables");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  760|      0|				pcre_handle_exec_error(PCRE2_ERROR_NOMEMORY);
  ------------------
  |  |  389|      0|#define PCRE2_ERROR_NOMEMORY          (-48)
  ------------------
  761|      0|				zend_string_release_ex(key, 0);
  762|      0|				efree(pattern);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  763|      0|				return NULL;
  764|      0|			}
  765|      0|			ZVAL_PTR(zv, (void *)tables);
  ------------------
  |  | 1251|      0|#define ZVAL_PTR(z, p) do {										\
  |  | 1252|      0|		Z_PTR_P(z) = (p);										\
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1253|      0|		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_PTR;								\
  |  |  ------------------
  |  |  |  |  630|      0|#define IS_PTR						13
  |  |  ------------------
  |  | 1254|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1254:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  766|      0|		} else {
  767|      0|			tables = Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  768|      0|		}
  769|      0|	}
  770|    344|	pcre2_set_character_tables(cctx, tables);
  ------------------
  |  |  896|    344|#define pcre2_set_character_tables            PCRE2_SUFFIX(pcre2_set_character_tables_)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   66|    344|#define pcre2_set_character_tables_8 php_pcre2_set_character_tables
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  771|       |
  772|    344|	pcre2_set_compile_extra_options(cctx, eoptions);
  ------------------
  |  |  897|    344|#define pcre2_set_compile_extra_options       PCRE2_SUFFIX(pcre2_set_compile_extra_options_)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   67|    344|#define pcre2_set_compile_extra_options_8 php_pcre2_set_compile_extra_options
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  773|       |
  774|       |	/* Compile pattern and display a warning if compilation failed. */
  775|    344|	re = pcre2_compile((PCRE2_SPTR)pattern, pattern_len, coptions, &errnumber, &erroffset, cctx);
  ------------------
  |  |  853|    344|#define pcre2_compile                         PCRE2_SUFFIX(pcre2_compile_)
  |  |  ------------------
  |  |  |  |  994|    344|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    344|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    344|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|    344|#define pcre2_compile_8 php_pcre2_compile
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  776|       |
  777|    344|	if (re == NULL) {
  ------------------
  |  Branch (777:6): [True: 46, False: 298]
  ------------------
  778|     46|		if (key != regex) {
  ------------------
  |  Branch (778:7): [True: 0, False: 46]
  ------------------
  779|      0|			zend_string_release_ex(key, 0);
  780|      0|		}
  781|     46|		pcre2_get_error_message(errnumber, error, sizeof(error));
  ------------------
  |  |  866|     46|#define pcre2_get_error_message               PCRE2_SUFFIX(pcre2_get_error_message_)
  |  |  ------------------
  |  |  |  |  994|     46|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     46|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     46|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   40|     46|#define pcre2_get_error_message_8 php_pcre2_get_error_message
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  782|     46|		php_error_docref(NULL,E_WARNING, "Compilation failed: %s at offset %zu", error, erroffset);
  ------------------
  |  |   23|     46|#define E_WARNING			(1<<1L)
  ------------------
  783|     46|		pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  ------------------
  |  |  385|     46|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  784|     46|		efree(pattern);
  ------------------
  |  |  154|     46|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     46|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     46|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     46|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     46|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|     46|		return NULL;
  786|     46|	}
  787|       |
  788|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  789|       |	if (PCRE_G(jit)) {
  790|       |		/* Enable PCRE JIT compiler */
  791|       |		rc = pcre2_jit_compile(re, PCRE2_JIT_COMPLETE);
  792|       |		if (EXPECTED(rc >= 0)) {
  793|       |			size_t jit_size = 0;
  794|       |			if (!pcre2_pattern_info(re, PCRE2_INFO_JITSIZE, &jit_size) && jit_size > 0) {
  795|       |				poptions |= PREG_JIT;
  796|       |			}
  797|       |		} else if (rc == PCRE2_ERROR_NOMEMORY) {
  798|       |			php_error_docref(NULL, E_WARNING,
  799|       |				"Allocation of JIT memory failed, PCRE JIT will be disabled. "
  800|       |				"This is likely caused by security restrictions. "
  801|       |				"Either grant PHP permission to allocate executable memory, or set pcre.jit=0");
  802|       |			PCRE_G(jit) = 0;
  803|       |		} else {
  804|       |			pcre2_get_error_message(rc, error, sizeof(error));
  805|       |			php_error_docref(NULL, E_WARNING, "JIT compilation failed: %s", error);
  806|       |			pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  807|       |		}
  808|       |	}
  809|       |#endif
  810|    298|	efree(pattern);
  ------------------
  |  |  154|    298|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    298|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    298|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    298|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    298|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  811|       |
  812|       |	/*
  813|       |	 * If we reached cache limit, clean out the items from the head of the list;
  814|       |	 * these are supposedly the oldest ones (but not necessarily the least used
  815|       |	 * ones).
  816|       |	 */
  817|    298|	if (zend_hash_num_elements(&PCRE_G(pcre_cache)) == PCRE_CACHE_SIZE) {
  ------------------
  |  |   88|    298|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|    298|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              	if (zend_hash_num_elements(&PCRE_G(pcre_cache)) == PCRE_CACHE_SIZE) {
  ------------------
  |  |   36|    298|#define PCRE_CACHE_SIZE 4096
  ------------------
  |  Branch (817:6): [True: 0, False: 298]
  ------------------
  818|      0|		int num_clean = PCRE_CACHE_SIZE / 8;
  ------------------
  |  |   36|      0|#define PCRE_CACHE_SIZE 4096
  ------------------
  819|      0|		zend_hash_apply_with_argument(&PCRE_G(pcre_cache), pcre_clean_cache, &num_clean);
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  820|      0|	}
  821|       |
  822|       |	/* Store the compiled pattern and extra info in the cache. */
  823|    298|	new_entry.re = re;
  824|    298|	new_entry.preg_options = poptions;
  825|    298|	new_entry.compile_options = coptions;
  826|    298|	new_entry.refcount = 0;
  827|    298|	new_entry.subpats_table = NULL;
  828|       |
  829|    298|	if ((rc = pcre2_pattern_info(re, PCRE2_INFO_CAPTURECOUNT, &new_entry.capture_count)) < 0 ||
  ------------------
  |  |  889|    298|#define pcre2_pattern_info                    PCRE2_SUFFIX(pcre2_pattern_info_)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   59|    298|#define pcre2_pattern_info_8 php_pcre2_pattern_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if ((rc = pcre2_pattern_info(re, PCRE2_INFO_CAPTURECOUNT, &new_entry.capture_count)) < 0 ||
  ------------------
  |  |  418|    298|#define PCRE2_INFO_CAPTURECOUNT          4
  ------------------
  |  Branch (829:6): [True: 0, False: 298]
  ------------------
  830|    298|	    (rc = pcre2_pattern_info(re, PCRE2_INFO_NAMECOUNT, &new_entry.name_count)) < 0) {
  ------------------
  |  |  889|    298|#define pcre2_pattern_info                    PCRE2_SUFFIX(pcre2_pattern_info_)
  |  |  ------------------
  |  |  |  |  994|    298|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    298|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    298|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   59|    298|#define pcre2_pattern_info_8 php_pcre2_pattern_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	    (rc = pcre2_pattern_info(re, PCRE2_INFO_NAMECOUNT, &new_entry.name_count)) < 0) {
  ------------------
  |  |  431|    298|#define PCRE2_INFO_NAMECOUNT            17
  ------------------
  |  Branch (830:6): [True: 0, False: 298]
  ------------------
  831|      0|		if (key != regex) {
  ------------------
  |  Branch (831:7): [True: 0, False: 0]
  ------------------
  832|      0|			zend_string_release_ex(key, 0);
  833|      0|		}
  834|      0|		pcre2_code_free(new_entry.re);
  ------------------
  |  |  852|      0|#define pcre2_code_free                       PCRE2_SUFFIX(pcre2_code_free_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   27|      0|#define pcre2_code_free_8 php_pcre2_code_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  835|      0|		php_error_docref(NULL, E_WARNING, "Internal pcre_pattern_info() error %d", rc);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  836|      0|		pcre_handle_exec_error(PCRE2_ERROR_INTERNAL);
  ------------------
  |  |  385|      0|#define PCRE2_ERROR_INTERNAL          (-44)
  ------------------
  837|      0|		return NULL;
  838|      0|	}
  839|       |
  840|       |	/*
  841|       |	 * Interned strings are not duplicated when stored in HashTable,
  842|       |	 * but all the interned strings created during HTTP request are removed
  843|       |	 * at end of request. However PCRE_G(pcre_cache) must be consistent
  844|       |	 * on the next request as well. So we disable usage of interned strings
  845|       |	 * as hash keys especually for this table.
  846|       |	 * See bug #63180
  847|       |	 */
  848|    298|	if (!(GC_FLAGS(key) & IS_STR_PERMANENT)) {
  ------------------
  |  |  777|    298|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    298|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              	if (!(GC_FLAGS(key) & IS_STR_PERMANENT)) {
  ------------------
  |  |  840|    298|#define IS_STR_PERMANENT        	(1<<8)        /* relives request boundary */
  ------------------
  |  Branch (848:6): [True: 298, False: 0]
  ------------------
  849|    298|		zend_string *str = zend_string_init(ZSTR_VAL(key), ZSTR_LEN(key), 1);
  ------------------
  |  |   67|    298|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_string *str = zend_string_init(ZSTR_VAL(key), ZSTR_LEN(key), 1);
  ------------------
  |  |   68|    298|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  850|    298|		GC_MAKE_PERSISTENT_LOCAL(str);
  ------------------
  |  | 1326|    298|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 298]
  |  |  ------------------
  ------------------
  851|       |
  852|    298|		ret = zend_hash_add_new_mem(&PCRE_G(pcre_cache), str, &new_entry, sizeof(pcre_cache_entry));
  ------------------
  |  |   88|    298|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|    298|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  853|    298|		zend_string_release(str);
  854|    298|	} else {
  855|      0|		ret = zend_hash_add_new_mem(&PCRE_G(pcre_cache), key, &new_entry, sizeof(pcre_cache_entry));
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  856|      0|	}
  857|       |
  858|    298|	if (key != regex) {
  ------------------
  |  Branch (858:6): [True: 0, False: 298]
  ------------------
  859|      0|		zend_string_release_ex(key, 0);
  860|      0|	}
  861|       |
  862|    298|	return ret;
  863|    298|}
pcre_get_compiled_regex_cache:
  868|    380|{
  869|       |	return pcre_get_compiled_regex_cache_ex(regex, true);
  870|    380|}
php_pcre_match_impl:
 1141|    306|{
 1142|    306|	zval			 result_set;		/* Holds a set of subpatterns after
 1143|       |										   a global match */
 1144|    306|	HashTable	   **match_sets = NULL;	/* An array of sets of matches for each
 1145|       |										   subpattern after a global match */
 1146|    306|	uint32_t		 options;			/* Execution options */
 1147|    306|	int				 count;				/* Count of matched subpatterns */
 1148|    306|	uint32_t		 num_subpats;		/* Number of captured subpatterns */
 1149|    306|	int				 matched;			/* Has anything matched */
 1150|    306|	zend_string	   **subpat_names;		/* Array for named subpatterns */
 1151|    306|	size_t			 i;
 1152|    306|	uint32_t		 subpats_order;		/* Order of subpattern matches */
 1153|    306|	uint32_t		 offset_capture;	/* Capture match offsets: yes/no */
 1154|    306|	zend_long		 unmatched_as_null;	/* Null non-matches: yes/no */
 1155|    306|	PCRE2_SPTR       mark = NULL;		/* Target for MARK name */
  ------------------
  |  |  820|    306|#define PCRE2_SPTR                  PCRE2_SUFFIX(PCRE2_SPTR)
  |  |  ------------------
  |  |  |  |  994|    306|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    306|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    306|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1156|    306|	HashTable		*marks = NULL;		/* Array of marks for PREG_PATTERN_ORDER */
 1157|    306|	pcre2_match_data *match_data;
  ------------------
  |  |  844|    306|#define pcre2_match_data               PCRE2_SUFFIX(pcre2_match_data_)
  |  |  ------------------
  |  |  |  |  994|    306|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    306|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    306|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1158|    306|	PCRE2_SIZE		 start_offset2, orig_start_offset;
  ------------------
  |  |  479|    306|#define PCRE2_SIZE            size_t
  ------------------
 1159|    306|	bool old_mdata_used;
 1160|       |
 1161|    306|	char *subject = ZSTR_VAL(subject_str);
  ------------------
  |  |   67|    306|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1162|    306|	size_t subject_len = ZSTR_LEN(subject_str);
  ------------------
  |  |   68|    306|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1163|       |
 1164|       |	/* Overwrite the passed-in value for subpatterns with an empty array. */
 1165|    306|	if (subpats != NULL) {
  ------------------
  |  Branch (1165:6): [True: 1, False: 305]
  ------------------
 1166|      1|		subpats = zend_try_array_init(subpats);
 1167|      1|		if (!subpats) {
  ------------------
  |  Branch (1167:7): [True: 0, False: 1]
  ------------------
 1168|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1168:4): [True: 0, False: 0]
  |  Branch (1168:4): [True: 0, False: 0]
  ------------------
 1169|      0|		}
 1170|      1|	}
 1171|       |
 1172|    306|	subpats_order = global ? PREG_PATTERN_ORDER : 0;
  ------------------
  |  |   23|      0|#define PREG_PATTERN_ORDER			1
  ------------------
  |  Branch (1172:18): [True: 0, False: 306]
  ------------------
 1173|       |
 1174|    306|	if (flags) {
  ------------------
  |  Branch (1174:6): [True: 0, False: 306]
  ------------------
 1175|      0|		offset_capture = flags & PREG_OFFSET_CAPTURE;
  ------------------
  |  |   25|      0|#define PREG_OFFSET_CAPTURE			(1<<8)
  ------------------
 1176|      0|		unmatched_as_null = flags & PREG_UNMATCHED_AS_NULL;
  ------------------
  |  |   26|      0|#define PREG_UNMATCHED_AS_NULL		(1<<9)
  ------------------
 1177|       |
 1178|       |		/*
 1179|       |		 * subpats_order is pre-set to pattern mode so we change it only if
 1180|       |		 * necessary.
 1181|       |		 */
 1182|      0|		if (flags & 0xff) {
  ------------------
  |  Branch (1182:7): [True: 0, False: 0]
  ------------------
 1183|      0|			subpats_order = flags & 0xff;
 1184|      0|			if ((global && (subpats_order < PREG_PATTERN_ORDER || subpats_order > PREG_SET_ORDER)) ||
  ------------------
  |  |   23|      0|#define PREG_PATTERN_ORDER			1
  ------------------
              			if ((global && (subpats_order < PREG_PATTERN_ORDER || subpats_order > PREG_SET_ORDER)) ||
  ------------------
  |  |   24|      0|#define PREG_SET_ORDER				2
  ------------------
  |  Branch (1184:9): [True: 0, False: 0]
  |  Branch (1184:20): [True: 0, False: 0]
  |  Branch (1184:58): [True: 0, False: 0]
  ------------------
 1185|      0|				(!global && subpats_order != 0)) {
  ------------------
  |  Branch (1185:6): [True: 0, False: 0]
  |  Branch (1185:17): [True: 0, False: 0]
  ------------------
 1186|      0|				zend_argument_value_error(4, "must be a PREG_* constant");
 1187|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1187:5): [True: 0, False: 0]
  |  Branch (1187:5): [True: 0, False: 0]
  ------------------
 1188|      0|			}
 1189|      0|		}
 1190|    306|	} else {
 1191|    306|		offset_capture = 0;
 1192|    306|		unmatched_as_null = 0;
 1193|    306|	}
 1194|       |
 1195|       |	/* Negative offset counts from the end of the string. */
 1196|    306|	if (start_offset < 0) {
  ------------------
  |  Branch (1196:6): [True: 0, False: 306]
  ------------------
 1197|      0|		if ((PCRE2_SIZE)-start_offset <= subject_len) {
  ------------------
  |  Branch (1197:7): [True: 0, False: 0]
  ------------------
 1198|      0|			start_offset2 = subject_len + start_offset;
 1199|      0|		} else {
 1200|      0|			start_offset2 = 0;
 1201|      0|		}
 1202|    306|	} else {
 1203|    306|		start_offset2 = (PCRE2_SIZE)start_offset;
 1204|    306|	}
 1205|       |
 1206|    306|	if (start_offset2 > subject_len) {
  ------------------
  |  Branch (1206:6): [True: 0, False: 306]
  ------------------
 1207|      0|		pcre_handle_exec_error(PCRE2_ERROR_BADOFFSET);
  ------------------
  |  |  374|      0|#define PCRE2_ERROR_BADOFFSET         (-33)
  ------------------
 1208|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1209|      0|	}
 1210|       |
 1211|       |	/* Calculate the size of the offsets array, and allocate memory for it. */
 1212|    306|	num_subpats = pce->capture_count + 1;
 1213|       |
 1214|       |	/*
 1215|       |	 * Build a mapping from subpattern numbers to their names. We will
 1216|       |	 * allocate the table only if there are any named subpatterns.
 1217|       |	 */
 1218|    306|	subpat_names = NULL;
 1219|    306|	if (subpats && pce->name_count > 0) {
  ------------------
  |  Branch (1219:6): [True: 1, False: 305]
  |  Branch (1219:17): [True: 0, False: 1]
  ------------------
 1220|      0|		subpat_names = ensure_subpats_table(pce->name_count, pce);
 1221|      0|		if (UNEXPECTED(!subpat_names)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1222|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1223|      0|		}
 1224|      0|	}
 1225|       |
 1226|    306|	matched = 0;
 1227|    306|	PCRE_G(error_code) = PHP_PCRE_NO_ERROR;
  ------------------
  |  |   88|    306|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|    306|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1228|       |
 1229|    306|	old_mdata_used = mdata_used;
 1230|    306|	if (!old_mdata_used && num_subpats <= PHP_PCRE_PREALLOC_MDATA_SIZE) {
  ------------------
  |  |  200|    306|#define PHP_PCRE_PREALLOC_MDATA_SIZE 32
  ------------------
  |  Branch (1230:6): [True: 306, False: 0]
  |  Branch (1230:25): [True: 306, False: 0]
  ------------------
 1231|    306|		mdata_used = true;
 1232|    306|		match_data = mdata;
 1233|    306|	} else {
 1234|      0|		match_data = pcre2_match_data_create_from_pattern(pce->re, PCRE_G(gctx_zmm));
  ------------------
  |  |  886|      0|#define pcre2_match_data_create_from_pattern  PCRE2_SUFFIX(pcre2_match_data_create_from_pattern_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   57|      0|#define pcre2_match_data_create_from_pattern_8 php_pcre2_match_data_create_from_pattern
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		match_data = pcre2_match_data_create_from_pattern(pce->re, PCRE_G(gctx_zmm));
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1235|      0|		if (!match_data) {
  ------------------
  |  Branch (1235:7): [True: 0, False: 0]
  ------------------
 1236|      0|			PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1237|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1238|      0|		}
 1239|      0|	}
 1240|       |
 1241|       |	/* Allocate match sets array and initialize the values. */
 1242|    306|	if (global && subpats && subpats_order == PREG_PATTERN_ORDER) {
  ------------------
  |  |   23|      0|#define PREG_PATTERN_ORDER			1
  ------------------
  |  Branch (1242:6): [True: 0, False: 306]
  |  Branch (1242:16): [True: 0, False: 0]
  |  Branch (1242:27): [True: 0, False: 0]
  ------------------
 1243|      0|		match_sets = safe_emalloc(num_subpats, sizeof(HashTable *), 0);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1244|      0|		for (i=0; i<num_subpats; i++) {
  ------------------
  |  Branch (1244:13): [True: 0, False: 0]
  ------------------
 1245|      0|			match_sets[i] = zend_new_array(0);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 1246|      0|		}
 1247|      0|	}
 1248|       |
 1249|       |	/* Array of subpattern offsets */
 1250|    306|	PCRE2_SIZE *const offsets = pcre2_get_ovector_pointer(match_data);
  ------------------
  |  |  479|    306|#define PCRE2_SIZE            size_t
  ------------------
              	PCRE2_SIZE *const offsets = pcre2_get_ovector_pointer(match_data);
  ------------------
  |  |  870|    306|#define pcre2_get_ovector_pointer             PCRE2_SUFFIX(pcre2_get_ovector_pointer_)
  |  |  ------------------
  |  |  |  |  994|    306|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    306|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    306|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   42|    306|#define pcre2_get_ovector_pointer_8 php_pcre2_get_ovector_pointer
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1251|       |
 1252|    306|	orig_start_offset = start_offset2;
 1253|    306|	options =
 1254|    306|		(pce->compile_options & PCRE2_UTF) && !is_known_valid_utf8(subject_str, orig_start_offset)
  ------------------
  |  |  138|    306|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (1254:3): [True: 164, False: 142]
  |  Branch (1254:41): [True: 163, False: 1]
  ------------------
 1255|    306|			? 0 : PCRE2_NO_UTF_CHECK;
  ------------------
  |  |  106|    449|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
 1256|       |
 1257|       |	/* Execute the regular expression. */
 1258|       |#ifdef HAVE_PCRE_JIT_SUPPORT
 1259|       |	if ((pce->preg_options & PREG_JIT) && options) {
 1260|       |		count = pcre2_jit_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset2,
 1261|       |				PCRE2_NO_UTF_CHECK, match_data, mctx);
 1262|       |	} else
 1263|       |#endif
 1264|    306|	count = pcre2_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset2,
  ------------------
  |  |  881|    306|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|    306|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    306|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    306|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    306|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1265|    306|			options, match_data, mctx);
 1266|       |
 1267|    306|	while (1) {
  ------------------
  |  Branch (1267:9): [True: 306, Folded]
  ------------------
 1268|       |		/* If something has matched */
 1269|    306|		if (count >= 0) {
  ------------------
  |  Branch (1269:7): [True: 18, False: 288]
  ------------------
 1270|       |			/* Check for too many substrings condition. */
 1271|     18|			if (UNEXPECTED(count == 0)) {
  ------------------
  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 18]
  |  |  ------------------
  ------------------
 1272|      0|				php_error_docref(NULL, E_NOTICE, "Matched, but too many substrings");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1273|      0|				count = num_subpats;
 1274|      0|			}
 1275|       |
 1276|     18|matched:
 1277|     18|			matched++;
 1278|       |
 1279|       |			/* If subpatterns array has been passed, fill it in with values. */
 1280|     18|			if (subpats != NULL) {
  ------------------
  |  Branch (1280:8): [True: 0, False: 18]
  ------------------
 1281|       |				/* Try to get the list of substrings and display a warning if failed. */
 1282|      0|				if (UNEXPECTED(offsets[1] < offsets[0])) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1283|      0|					if (match_sets) {
  ------------------
  |  Branch (1283:10): [True: 0, False: 0]
  ------------------
 1284|      0|						for (i = 0; i < num_subpats; i++) {
  ------------------
  |  Branch (1284:19): [True: 0, False: 0]
  ------------------
 1285|      0|							zend_array_destroy(match_sets[i]);
 1286|      0|						}
 1287|      0|						efree(match_sets);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1288|      0|					}
 1289|      0|					if (marks) {
  ------------------
  |  Branch (1289:10): [True: 0, False: 0]
  ------------------
 1290|      0|						zend_array_destroy(marks);
 1291|      0|					}
 1292|      0|					if (match_data != mdata) {
  ------------------
  |  Branch (1292:10): [True: 0, False: 0]
  ------------------
 1293|      0|						pcre2_match_data_free(match_data);
  ------------------
  |  |  887|      0|#define pcre2_match_data_free                 PCRE2_SUFFIX(pcre2_match_data_free_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   58|      0|#define pcre2_match_data_free_8 php_pcre2_match_data_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1294|      0|					}
 1295|      0|					php_error_docref(NULL, E_WARNING, "Get subpatterns list failed");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1296|      0|					RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1297|      0|				}
 1298|       |
 1299|      0|				if (global) {	/* global pattern matching */
  ------------------
  |  Branch (1299:9): [True: 0, False: 0]
  ------------------
 1300|      0|					if (subpats_order == PREG_PATTERN_ORDER) {
  ------------------
  |  |   23|      0|#define PREG_PATTERN_ORDER			1
  ------------------
  |  Branch (1300:10): [True: 0, False: 0]
  ------------------
 1301|       |						/* For each subpattern, insert it into the appropriate array. */
 1302|      0|						if (offset_capture) {
  ------------------
  |  Branch (1302:11): [True: 0, False: 0]
  ------------------
 1303|      0|							for (i = 0; i < count; i++) {
  ------------------
  |  Branch (1303:20): [True: 0, False: 0]
  ------------------
 1304|      0|								add_offset_pair(
 1305|      0|									match_sets[i], subject, offsets[2*i], offsets[2*i+1],
 1306|      0|									NULL, unmatched_as_null);
 1307|      0|							}
 1308|      0|						} else {
 1309|      0|							for (i = 0; i < count; i++) {
  ------------------
  |  Branch (1309:20): [True: 0, False: 0]
  ------------------
 1310|      0|								zval val;
 1311|      0|								populate_match_value(
 1312|      0|									&val, subject, offsets[2*i], offsets[2*i+1], unmatched_as_null);
 1313|      0|								zend_hash_next_index_insert_new(match_sets[i], &val);
 1314|      0|							}
 1315|      0|						}
 1316|      0|						mark = pcre2_get_mark(match_data);
  ------------------
  |  |  867|      0|#define pcre2_get_mark                        PCRE2_SUFFIX(pcre2_get_mark_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   41|      0|#define pcre2_get_mark_8 php_pcre2_get_mark
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|       |						/* Add MARK, if available */
 1318|      0|						if (mark) {
  ------------------
  |  Branch (1318:11): [True: 0, False: 0]
  ------------------
 1319|      0|							if (!marks) {
  ------------------
  |  Branch (1319:12): [True: 0, False: 0]
  ------------------
 1320|      0|								marks = zend_new_array(0);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
 1321|      0|							}
 1322|      0|							zval tmp;
 1323|      0|							ZVAL_STRING(&tmp, (char *) mark);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1324|      0|							zend_hash_index_add_new(marks, matched - 1, &tmp);
 1325|      0|						}
 1326|       |						/*
 1327|       |						 * If the number of captured subpatterns on this run is
 1328|       |						 * less than the total possible number, pad the result
 1329|       |						 * arrays with NULLs or empty strings.
 1330|       |						 */
 1331|      0|						if (count < num_subpats) {
  ------------------
  |  Branch (1331:11): [True: 0, False: 0]
  ------------------
 1332|      0|							for (int i = count; i < num_subpats; i++) {
  ------------------
  |  Branch (1332:28): [True: 0, False: 0]
  ------------------
 1333|      0|								if (offset_capture) {
  ------------------
  |  Branch (1333:13): [True: 0, False: 0]
  ------------------
 1334|      0|									add_offset_pair(
 1335|      0|										match_sets[i], NULL, PCRE2_UNSET, PCRE2_UNSET,
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
              										match_sets[i], NULL, PCRE2_UNSET, PCRE2_UNSET,
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
 1336|      0|										NULL, unmatched_as_null);
 1337|      0|								} else if (unmatched_as_null) {
  ------------------
  |  Branch (1337:20): [True: 0, False: 0]
  ------------------
 1338|      0|									zval tmp;
 1339|      0|									ZVAL_NULL(&tmp);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1340|      0|									zend_hash_next_index_insert_new(match_sets[i], &tmp);
 1341|      0|								} else {
 1342|      0|									zval tmp;
 1343|      0|									ZVAL_EMPTY_STRING(&tmp);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1344|      0|									zend_hash_next_index_insert_new(match_sets[i], &tmp);
 1345|      0|								}
 1346|      0|							}
 1347|      0|						}
 1348|      0|					} else {
 1349|       |						/* Allocate and populate the result set array */
 1350|      0|						mark = pcre2_get_mark(match_data);
  ------------------
  |  |  867|      0|#define pcre2_get_mark                        PCRE2_SUFFIX(pcre2_get_mark_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   41|      0|#define pcre2_get_mark_8 php_pcre2_get_mark
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1351|      0|						array_init_size(&result_set, count + (mark ? 1 : 0));
  ------------------
  |  Branch (1351:45): [True: 0, False: 0]
  ------------------
 1352|      0|						populate_subpat_array(
 1353|      0|							Z_ARRVAL(result_set), subject, offsets, subpat_names,
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1354|      0|							num_subpats, count, mark, flags);
 1355|       |						/* And add it to the output array */
 1356|      0|						zend_hash_next_index_insert_new(Z_ARRVAL_P(subpats), &result_set);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1357|      0|					}
 1358|      0|				} else {			/* single pattern matching */
 1359|       |					/* For each subpattern, insert it into the subpatterns array. */
 1360|      0|					mark = pcre2_get_mark(match_data);
  ------------------
  |  |  867|      0|#define pcre2_get_mark                        PCRE2_SUFFIX(pcre2_get_mark_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   41|      0|#define pcre2_get_mark_8 php_pcre2_get_mark
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1361|      0|					populate_subpat_array(
 1362|      0|						Z_ARRVAL_P(subpats), subject, offsets, subpat_names, num_subpats, count, mark, flags);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1363|      0|					break;
 1364|      0|				}
 1365|      0|			}
 1366|       |
 1367|       |			/* Advance to the next piece. */
 1368|     18|			start_offset2 = offsets[1];
 1369|       |
 1370|       |			/* If we have matched an empty string, mimic what Perl's /g options does.
 1371|       |			   This turns out to be rather cunning. First we set PCRE2_NOTEMPTY_ATSTART and try
 1372|       |			   the match again at the same point. If this fails (picked up above) we
 1373|       |			   advance to the next character. */
 1374|     18|			if (start_offset2 == offsets[0]) {
  ------------------
  |  Branch (1374:8): [True: 3, False: 15]
  ------------------
 1375|      3|				count = pcre2_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset2,
  ------------------
  |  |  881|      3|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|      3|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      3|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      3|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      3|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1376|      3|					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  106|      3|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
              					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  179|      3|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  ------------------
              					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  105|      3|#define PCRE2_ANCHORED            0x80000000u
  ------------------
 1377|      3|				if (count >= 0) {
  ------------------
  |  Branch (1377:9): [True: 0, False: 3]
  ------------------
 1378|      0|					if (global) {
  ------------------
  |  Branch (1378:10): [True: 0, False: 0]
  ------------------
 1379|      0|						goto matched;
 1380|      0|					} else {
 1381|      0|						break;
 1382|      0|					}
 1383|      3|				} else if (count == PCRE2_ERROR_NOMATCH) {
  ------------------
  |  |  327|      3|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
  |  Branch (1383:16): [True: 3, False: 0]
  ------------------
 1384|       |					/* If we previously set PCRE2_NOTEMPTY_ATSTART after a null match,
 1385|       |					   this is not necessarily the end. We need to advance
 1386|       |					   the start offset, and continue. Fudge the offset values
 1387|       |					   to achieve this, unless we're already at the end of the string. */
 1388|      3|					if (start_offset2 < subject_len) {
  ------------------
  |  Branch (1388:10): [True: 3, False: 0]
  ------------------
 1389|      3|						size_t unit_len = calculate_unit_length(pce, subject + start_offset2);
 1390|       |
 1391|      3|						start_offset2 += unit_len;
 1392|      3|					} else {
 1393|      0|						break;
 1394|      0|					}
 1395|      3|				} else {
 1396|      0|					goto error;
 1397|      0|				}
 1398|      3|			}
 1399|    288|		} else if (count == PCRE2_ERROR_NOMATCH) {
  ------------------
  |  |  327|    288|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
  |  Branch (1399:14): [True: 271, False: 17]
  ------------------
 1400|    271|			break;
 1401|    271|		} else {
 1402|     17|error:
 1403|     17|			pcre_handle_exec_error(count);
 1404|     17|			break;
 1405|     17|		}
 1406|       |
 1407|     18|		if (!global) {
  ------------------
  |  Branch (1407:7): [True: 18, False: 0]
  ------------------
 1408|     18|			break;
 1409|     18|		}
 1410|       |
 1411|       |		/* Execute the regular expression. */
 1412|       |#ifdef HAVE_PCRE_JIT_SUPPORT
 1413|       |		if ((pce->preg_options & PREG_JIT)) {
 1414|       |			if (start_offset2 > subject_len) {
 1415|       |				pcre_handle_exec_error(PCRE2_ERROR_BADOFFSET);
 1416|       |				break;
 1417|       |			}
 1418|       |			count = pcre2_jit_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset2,
 1419|       |					PCRE2_NO_UTF_CHECK, match_data, mctx);
 1420|       |		} else
 1421|       |#endif
 1422|      0|		count = pcre2_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset2,
  ------------------
  |  |  881|      0|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1423|      0|				PCRE2_NO_UTF_CHECK, match_data, mctx);
  ------------------
  |  |  106|      0|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
 1424|      0|	}
 1425|    306|	if (match_data != mdata) {
  ------------------
  |  Branch (1425:6): [True: 0, False: 306]
  ------------------
 1426|      0|		pcre2_match_data_free(match_data);
  ------------------
  |  |  887|      0|#define pcre2_match_data_free                 PCRE2_SUFFIX(pcre2_match_data_free_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   58|      0|#define pcre2_match_data_free_8 php_pcre2_match_data_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1427|      0|	}
 1428|    306|	mdata_used = old_mdata_used;
 1429|       |
 1430|       |	/* Add the match sets to the output array and clean up */
 1431|    306|	if (match_sets) {
  ------------------
  |  Branch (1431:6): [True: 0, False: 306]
  ------------------
 1432|      0|		if (subpat_names) {
  ------------------
  |  Branch (1432:7): [True: 0, False: 0]
  ------------------
 1433|      0|			for (i = 0; i < num_subpats; i++) {
  ------------------
  |  Branch (1433:16): [True: 0, False: 0]
  ------------------
 1434|      0|				zval wrapper;
 1435|      0|				ZVAL_ARR(&wrapper, match_sets[i]);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1436|      0|				if (subpat_names[i]) {
  ------------------
  |  Branch (1436:9): [True: 0, False: 0]
  ------------------
 1437|      0|					zend_hash_update(Z_ARRVAL_P(subpats), subpat_names[i], &wrapper);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1438|      0|					GC_ADDREF(match_sets[i]);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 1439|      0|				}
 1440|      0|				zend_hash_next_index_insert_new(Z_ARRVAL_P(subpats), &wrapper);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1441|      0|			}
 1442|      0|		} else {
 1443|      0|			for (i = 0; i < num_subpats; i++) {
  ------------------
  |  Branch (1443:16): [True: 0, False: 0]
  ------------------
 1444|      0|				zval wrapper;
 1445|      0|				ZVAL_ARR(&wrapper, match_sets[i]);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1446|      0|				zend_hash_next_index_insert_new(Z_ARRVAL_P(subpats), &wrapper);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1447|      0|			}
 1448|      0|		}
 1449|      0|		efree(match_sets);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1450|       |
 1451|      0|		if (marks) {
  ------------------
  |  Branch (1451:7): [True: 0, False: 0]
  ------------------
 1452|      0|			zval tmp;
 1453|      0|			ZVAL_ARR(&tmp, marks);
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1454|      0|			zend_hash_str_update(Z_ARRVAL_P(subpats), "MARK", sizeof("MARK") - 1, &tmp);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1455|      0|		}
 1456|      0|	}
 1457|       |
 1458|    306|	if (PCRE_G(error_code) == PHP_PCRE_NO_ERROR) {
  ------------------
  |  |   88|    306|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|    306|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1458:6): [True: 289, False: 17]
  ------------------
 1459|       |		/* If there was no error and we're in /u mode, remember that the string is valid UTF-8. */
 1460|    289|		if ((pce->compile_options & PCRE2_UTF)
  ------------------
  |  |  138|    289|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (1460:7): [True: 147, False: 142]
  ------------------
 1461|    147|				&& !ZSTR_IS_INTERNED(subject_str) && orig_start_offset == 0) {
  ------------------
  |  Branch (1461:8): [True: 146, False: 1]
  |  Branch (1461:42): [True: 146, False: 0]
  ------------------
 1462|    146|			GC_ADD_FLAGS(subject_str, IS_STR_VALID_UTF8);
  ------------------
  |  |  780|    146|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|    146|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|    146|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|    146|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|    146|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 146]
  |  |  ------------------
  ------------------
 1463|    146|		}
 1464|       |
 1465|    289|		RETVAL_LONG(matched);
  ------------------
  |  | 1022|    289|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  ------------------
  |  |  |  | 1076|    289|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|    289|		zval *__z = (z);				\
  |  |  |  | 1078|    289|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|    289|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|    289|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|    289|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    289|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    289|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|    289|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|    289|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 289]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1466|    289|	} else {
 1467|     17|		RETVAL_FALSE;
  ------------------
  |  | 1043|     17|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|     17|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|     17|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     17|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|     17|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1468|     17|	}
 1469|    306|}
zif_preg_match:
 1474|    353|{
 1475|    353|	php_do_pcre_match(INTERNAL_FUNCTION_PARAM_PASSTHRU, false);
  ------------------
  |  |  587|    353|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1476|    353|}
php_pcre_replace:
 1583|     26|{
 1584|     26|	pcre_cache_entry	*pce;			    /* Compiled regular expression */
 1585|     26|	zend_string	 		*result;			/* Function result */
 1586|       |
 1587|       |	/* Abort on pending exception, e.g. thrown from __toString(). */
 1588|     26|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  ------------------
  ------------------
 1589|      0|		return NULL;
 1590|      0|	}
 1591|       |
 1592|       |	/* Compile regex or get it from cache. */
 1593|     26|	if ((pce = pcre_get_compiled_regex_cache(regex)) == NULL) {
  ------------------
  |  Branch (1593:6): [True: 12, False: 14]
  ------------------
 1594|     12|		return NULL;
 1595|     12|	}
 1596|     14|	pce->refcount++;
 1597|     14|	result = php_pcre_replace_impl(pce, subject_str, subject, subject_len, replace_str,
 1598|     14|		limit, replace_count);
 1599|     14|	pce->refcount--;
 1600|       |
 1601|     14|	return result;
 1602|     26|}
php_pcre_replace_impl:
 1607|     14|{
 1608|     14|	uint32_t		 options;			/* Execution options */
 1609|     14|	int				 count;				/* Count of matched subpatterns */
 1610|     14|	uint32_t		 num_subpats;		/* Number of captured subpatterns */
 1611|     14|	size_t			 new_len;			/* Length of needed storage */
 1612|     14|	size_t			 alloc_len;			/* Actual allocated length */
 1613|     14|	size_t			 match_len;			/* Length of the current match */
 1614|     14|	int				 backref;			/* Backreference number */
 1615|     14|	PCRE2_SIZE		 start_offset;		/* Where the new search starts */
  ------------------
  |  |  479|     14|#define PCRE2_SIZE            size_t
  ------------------
 1616|     14|	size_t			 last_end_offset;	/* Where the last search ended */
 1617|     14|	char			*walkbuf,			/* Location of current replacement in the result */
 1618|     14|					*walk,				/* Used to walk the replacement string */
 1619|     14|					 walk_last;			/* Last walked character */
 1620|     14|	const char		*match,				/* The current match */
 1621|     14|					*piece,				/* The current piece of subject */
 1622|     14|					*replace_end;		/* End of replacement string */
 1623|     14|	size_t			result_len; 		/* Length of result */
 1624|     14|	zend_string		*result;			/* Result of replacement */
 1625|     14|	pcre2_match_data *match_data;
  ------------------
  |  |  844|     14|#define pcre2_match_data               PCRE2_SUFFIX(pcre2_match_data_)
  |  |  ------------------
  |  |  |  |  994|     14|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     14|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     14|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1626|     14|	bool old_mdata_used;
 1627|       |
 1628|       |	/* Calculate the size of the offsets array, and allocate memory for it. */
 1629|     14|	num_subpats = pce->capture_count + 1;
 1630|     14|	alloc_len = 0;
 1631|     14|	result = NULL;
 1632|       |
 1633|       |	/* Initialize */
 1634|     14|	match = NULL;
 1635|     14|	start_offset = 0;
 1636|     14|	last_end_offset = 0;
 1637|     14|	result_len = 0;
 1638|     14|	PCRE_G(error_code) = PHP_PCRE_NO_ERROR;
  ------------------
  |  |   88|     14|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|     14|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1639|       |
 1640|     14|	old_mdata_used = mdata_used;
 1641|     14|	if (!old_mdata_used && num_subpats <= PHP_PCRE_PREALLOC_MDATA_SIZE) {
  ------------------
  |  |  200|     14|#define PHP_PCRE_PREALLOC_MDATA_SIZE 32
  ------------------
  |  Branch (1641:6): [True: 14, False: 0]
  |  Branch (1641:25): [True: 14, False: 0]
  ------------------
 1642|     14|		mdata_used = true;
 1643|     14|		match_data = mdata;
 1644|     14|	} else {
 1645|      0|		match_data = pcre2_match_data_create_from_pattern(pce->re, PCRE_G(gctx_zmm));
  ------------------
  |  |  886|      0|#define pcre2_match_data_create_from_pattern  PCRE2_SUFFIX(pcre2_match_data_create_from_pattern_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   57|      0|#define pcre2_match_data_create_from_pattern_8 php_pcre2_match_data_create_from_pattern
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		match_data = pcre2_match_data_create_from_pattern(pce->re, PCRE_G(gctx_zmm));
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1646|      0|		if (!match_data) {
  ------------------
  |  Branch (1646:7): [True: 0, False: 0]
  ------------------
 1647|      0|			PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1648|      0|			return NULL;
 1649|      0|		}
 1650|      0|	}
 1651|       |
 1652|     14|	options = (pce->compile_options & PCRE2_UTF) ? 0 : PCRE2_NO_UTF_CHECK;
  ------------------
  |  |  138|     14|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
              	options = (pce->compile_options & PCRE2_UTF) ? 0 : PCRE2_NO_UTF_CHECK;
  ------------------
  |  |  106|     28|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
  |  Branch (1652:12): [True: 0, False: 14]
  ------------------
 1653|       |
 1654|       |	/* Array of subpattern offsets */
 1655|     14|	PCRE2_SIZE *const offsets = pcre2_get_ovector_pointer(match_data);
  ------------------
  |  |  479|     14|#define PCRE2_SIZE            size_t
  ------------------
              	PCRE2_SIZE *const offsets = pcre2_get_ovector_pointer(match_data);
  ------------------
  |  |  870|     14|#define pcre2_get_ovector_pointer             PCRE2_SUFFIX(pcre2_get_ovector_pointer_)
  |  |  ------------------
  |  |  |  |  994|     14|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     14|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     14|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   42|     14|#define pcre2_get_ovector_pointer_8 php_pcre2_get_ovector_pointer
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1656|       |
 1657|       |	/* Execute the regular expression. */
 1658|       |#ifdef HAVE_PCRE_JIT_SUPPORT
 1659|       |	if ((pce->preg_options & PREG_JIT) && options) {
 1660|       |		count = pcre2_jit_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset,
 1661|       |				PCRE2_NO_UTF_CHECK, match_data, mctx);
 1662|       |	} else
 1663|       |#endif
 1664|     14|	count = pcre2_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset,
  ------------------
  |  |  881|     14|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|     14|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|     14|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|     14|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     14|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1665|     14|			options, match_data, mctx);
 1666|       |
 1667|    139|	while (1) {
  ------------------
  |  Branch (1667:9): [True: 139, Folded]
  ------------------
 1668|    139|		piece = subject + last_end_offset;
 1669|       |
 1670|    139|		if (count >= 0 && limit > 0) {
  ------------------
  |  Branch (1670:7): [True: 132, False: 7]
  |  Branch (1670:21): [True: 132, False: 0]
  ------------------
 1671|    132|			bool simple_string;
 1672|       |
 1673|       |			/* Check for too many substrings condition. */
 1674|    132|			if (UNEXPECTED(count == 0)) {
  ------------------
  |  |  457|    132|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 132]
  |  |  ------------------
  ------------------
 1675|      0|				php_error_docref(NULL,E_NOTICE, "Matched, but too many substrings");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1676|      0|				count = num_subpats;
 1677|      0|			}
 1678|       |
 1679|    135|matched:
 1680|    135|			if (UNEXPECTED(offsets[1] < offsets[0])) {
  ------------------
  |  |  457|    135|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 135]
  |  |  ------------------
  ------------------
 1681|      0|				PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1682|      0|				if (result) {
  ------------------
  |  Branch (1682:9): [True: 0, False: 0]
  ------------------
 1683|      0|					zend_string_release_ex(result, 0);
 1684|      0|					result = NULL;
 1685|      0|				}
 1686|      0|				break;
 1687|      0|			}
 1688|       |
 1689|    135|			if (replace_count) {
  ------------------
  |  Branch (1689:8): [True: 135, False: 0]
  ------------------
 1690|    135|				++*replace_count;
 1691|    135|			}
 1692|       |
 1693|       |			/* Set the match location in subject */
 1694|    135|			match = subject + offsets[0];
 1695|       |
 1696|    135|			new_len = result_len + offsets[0] - last_end_offset; /* part before the match */
 1697|       |
 1698|    135|			walk = ZSTR_VAL(replace_str);
  ------------------
  |  |   67|    135|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1699|    135|			replace_end = walk + ZSTR_LEN(replace_str);
  ------------------
  |  |   68|    135|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1700|    135|			walk_last = 0;
 1701|    135|			simple_string = true;
 1702|    255|			while (walk < replace_end) {
  ------------------
  |  Branch (1702:11): [True: 120, False: 135]
  ------------------
 1703|    120|				if ('\\' == *walk || '$' == *walk) {
  ------------------
  |  Branch (1703:9): [True: 0, False: 120]
  |  Branch (1703:26): [True: 0, False: 120]
  ------------------
 1704|      0|					simple_string = false;
 1705|      0|					if (walk_last == '\\') {
  ------------------
  |  Branch (1705:10): [True: 0, False: 0]
  ------------------
 1706|      0|						walk++;
 1707|      0|						walk_last = 0;
 1708|      0|						continue;
 1709|      0|					}
 1710|      0|					if (preg_get_backref(&walk, &backref)) {
  ------------------
  |  Branch (1710:10): [True: 0, False: 0]
  ------------------
 1711|      0|						if (backref < count)
  ------------------
  |  Branch (1711:11): [True: 0, False: 0]
  ------------------
 1712|      0|							new_len += offsets[(backref<<1)+1] - offsets[backref<<1];
 1713|      0|						continue;
 1714|      0|					}
 1715|      0|				}
 1716|    120|				new_len++;
 1717|    120|				walk++;
 1718|    120|				walk_last = walk[-1];
 1719|    120|			}
 1720|       |
 1721|    135|			if (new_len >= alloc_len) {
  ------------------
  |  Branch (1721:8): [True: 31, False: 104]
  ------------------
 1722|     31|				alloc_len = zend_safe_address_guarded(2, new_len, ZSTR_MAX_OVERHEAD) - ZSTR_MAX_OVERHEAD;
  ------------------
  |  |  122|     31|#define ZSTR_MAX_OVERHEAD (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
  |  |  ------------------
  |  |  |  |   34|     31|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|     31|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|     31|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|     31|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				alloc_len = zend_safe_address_guarded(2, new_len, ZSTR_MAX_OVERHEAD) - ZSTR_MAX_OVERHEAD;
  ------------------
  |  |  122|     31|#define ZSTR_MAX_OVERHEAD (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
  |  |  ------------------
  |  |  |  |   34|     31|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|     31|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|     31|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|     31|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1723|     31|				if (result == NULL) {
  ------------------
  |  Branch (1723:9): [True: 7, False: 24]
  ------------------
 1724|      7|					result = zend_string_alloc(alloc_len, 0);
 1725|     24|				} else {
 1726|     24|					result = zend_string_extend(result, alloc_len, 0);
 1727|     24|				}
 1728|     31|			}
 1729|       |
 1730|    135|			if (match-piece > 0) {
  ------------------
  |  Branch (1730:8): [True: 122, False: 13]
  ------------------
 1731|       |				/* copy the part of the string before the match */
 1732|    122|				memcpy(&ZSTR_VAL(result)[result_len], piece, match-piece);
  ------------------
  |  |   67|    122|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1733|    122|				result_len += (match-piece);
 1734|    122|			}
 1735|       |
 1736|    135|			if (simple_string) {
  ------------------
  |  Branch (1736:8): [True: 135, False: 0]
  ------------------
 1737|       |				/* copy replacement */
 1738|    135|				memcpy(&ZSTR_VAL(result)[result_len], ZSTR_VAL(replace_str), ZSTR_LEN(replace_str)+1);
  ------------------
  |  |   67|    135|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				memcpy(&ZSTR_VAL(result)[result_len], ZSTR_VAL(replace_str), ZSTR_LEN(replace_str)+1);
  ------------------
  |  |   67|    135|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				memcpy(&ZSTR_VAL(result)[result_len], ZSTR_VAL(replace_str), ZSTR_LEN(replace_str)+1);
  ------------------
  |  |   68|    135|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1739|    135|				result_len += ZSTR_LEN(replace_str);
  ------------------
  |  |   68|    135|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1740|    135|			} else {
 1741|       |				/* copy replacement and backrefs */
 1742|      0|				walkbuf = ZSTR_VAL(result) + result_len;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1743|       |
 1744|      0|				walk = ZSTR_VAL(replace_str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1745|      0|				walk_last = 0;
 1746|      0|				while (walk < replace_end) {
  ------------------
  |  Branch (1746:12): [True: 0, False: 0]
  ------------------
 1747|      0|					if ('\\' == *walk || '$' == *walk) {
  ------------------
  |  Branch (1747:10): [True: 0, False: 0]
  |  Branch (1747:27): [True: 0, False: 0]
  ------------------
 1748|      0|						if (walk_last == '\\') {
  ------------------
  |  Branch (1748:11): [True: 0, False: 0]
  ------------------
 1749|      0|							*(walkbuf-1) = *walk++;
 1750|      0|							walk_last = 0;
 1751|      0|							continue;
 1752|      0|						}
 1753|      0|						if (preg_get_backref(&walk, &backref)) {
  ------------------
  |  Branch (1753:11): [True: 0, False: 0]
  ------------------
 1754|      0|							if (backref < count) {
  ------------------
  |  Branch (1754:12): [True: 0, False: 0]
  ------------------
 1755|      0|								if (offsets[backref<<1] < SIZE_MAX) {
  ------------------
  |  Branch (1755:13): [True: 0, False: 0]
  ------------------
 1756|      0|									match_len = offsets[(backref<<1)+1] - offsets[backref<<1];
 1757|      0|									walkbuf = zend_mempcpy(walkbuf, subject + offsets[backref << 1], match_len);
 1758|      0|								}
 1759|      0|							}
 1760|      0|							continue;
 1761|      0|						}
 1762|      0|					}
 1763|      0|					*walkbuf++ = *walk++;
 1764|      0|					walk_last = walk[-1];
 1765|      0|				}
 1766|      0|				*walkbuf = '\0';
 1767|       |				/* increment the result length by how much we've added to the string */
 1768|      0|				result_len += (walkbuf - (ZSTR_VAL(result) + result_len));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1769|      0|			}
 1770|       |
 1771|    135|			limit--;
 1772|       |
 1773|       |			/* Advance to the next piece. */
 1774|    135|			start_offset = last_end_offset = offsets[1];
 1775|       |
 1776|       |			/* If we have matched an empty string, mimic what Perl's /g options does.
 1777|       |			   This turns out to be rather cunning. First we set PCRE2_NOTEMPTY_ATSTART and try
 1778|       |			   the match again at the same point. If this fails (picked up above) we
 1779|       |			   advance to the next character. */
 1780|    135|			if (start_offset == offsets[0]) {
  ------------------
  |  Branch (1780:8): [True: 132, False: 3]
  ------------------
 1781|    132|				count = pcre2_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset,
  ------------------
  |  |  881|    132|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|    132|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    132|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    132|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    132|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1782|    132|					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  106|    132|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
              					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  179|    132|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  ------------------
              					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  105|    132|#define PCRE2_ANCHORED            0x80000000u
  ------------------
 1783|       |
 1784|    132|				piece = subject + start_offset;
 1785|    132|				if (count >= 0 && limit > 0) {
  ------------------
  |  Branch (1785:9): [True: 3, False: 129]
  |  Branch (1785:23): [True: 3, False: 0]
  ------------------
 1786|      3|					goto matched;
 1787|    129|				} else if (count == PCRE2_ERROR_NOMATCH || limit == 0) {
  ------------------
  |  |  327|    258|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
  |  Branch (1787:16): [True: 129, False: 0]
  |  Branch (1787:48): [True: 0, False: 0]
  ------------------
 1788|       |					/* If we previously set PCRE2_NOTEMPTY_ATSTART after a null match,
 1789|       |					   this is not necessarily the end. We need to advance
 1790|       |					   the start offset, and continue. Fudge the offset values
 1791|       |					   to achieve this, unless we're already at the end of the string. */
 1792|    129|					if (start_offset < subject_len) {
  ------------------
  |  Branch (1792:10): [True: 122, False: 7]
  ------------------
 1793|    122|						size_t unit_len = calculate_unit_length(pce, piece);
 1794|    122|						start_offset += unit_len;
 1795|    122|					} else {
 1796|      7|						goto not_matched;
 1797|      7|					}
 1798|    129|				} else {
 1799|      0|					goto error;
 1800|      0|				}
 1801|    132|			}
 1802|       |
 1803|    135|		} else if (count == PCRE2_ERROR_NOMATCH || limit == 0) {
  ------------------
  |  |  327|     14|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
  |  Branch (1803:14): [True: 7, False: 0]
  |  Branch (1803:46): [True: 0, False: 0]
  ------------------
 1804|     14|not_matched:
 1805|     14|			if (!result && subject_str) {
  ------------------
  |  Branch (1805:8): [True: 7, False: 7]
  |  Branch (1805:19): [True: 7, False: 0]
  ------------------
 1806|      7|				result = zend_string_copy(subject_str);
 1807|      7|				break;
 1808|      7|			}
 1809|       |			/* now we know exactly how long it is */
 1810|      7|			alloc_len = result_len + subject_len - last_end_offset;
 1811|      7|			if (NULL != result) {
  ------------------
  |  Branch (1811:8): [True: 7, False: 0]
  ------------------
 1812|      7|				result = zend_string_realloc(result, alloc_len, 0);
 1813|      7|			} else {
 1814|      0|				result = zend_string_alloc(alloc_len, 0);
 1815|      0|			}
 1816|       |			/* stick that last bit of string on our output */
 1817|      7|			memcpy(ZSTR_VAL(result) + result_len, piece, subject_len - last_end_offset);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1818|      7|			result_len += subject_len - last_end_offset;
 1819|      7|			ZSTR_VAL(result)[result_len] = '\0';
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1820|      7|			ZSTR_LEN(result) = result_len;
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1821|      7|			break;
 1822|     14|		} else {
 1823|      0|error:
 1824|      0|			pcre_handle_exec_error(count);
 1825|      0|			if (result) {
  ------------------
  |  Branch (1825:8): [True: 0, False: 0]
  ------------------
 1826|      0|				zend_string_release_ex(result, 0);
 1827|      0|				result = NULL;
 1828|      0|			}
 1829|      0|			break;
 1830|      0|		}
 1831|       |
 1832|       |#ifdef HAVE_PCRE_JIT_SUPPORT
 1833|       |		if (pce->preg_options & PREG_JIT) {
 1834|       |			count = pcre2_jit_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset,
 1835|       |					PCRE2_NO_UTF_CHECK, match_data, mctx);
 1836|       |		} else
 1837|       |#endif
 1838|    125|		count = pcre2_match(pce->re, (PCRE2_SPTR)subject, subject_len, start_offset,
  ------------------
  |  |  881|    125|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|    125|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|    125|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|    125|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    125|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1839|    125|					PCRE2_NO_UTF_CHECK, match_data, mctx);
  ------------------
  |  |  106|    125|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
 1840|    125|	}
 1841|     14|	if (match_data != mdata) {
  ------------------
  |  Branch (1841:6): [True: 0, False: 14]
  ------------------
 1842|      0|		pcre2_match_data_free(match_data);
  ------------------
  |  |  887|      0|#define pcre2_match_data_free                 PCRE2_SUFFIX(pcre2_match_data_free_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   58|      0|#define pcre2_match_data_free_8 php_pcre2_match_data_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1843|      0|	}
 1844|     14|	mdata_used = old_mdata_used;
 1845|       |
 1846|     14|	return result;
 1847|     14|}
zif_preg_replace:
 2366|     27|{
 2367|     27|	preg_replace_common(INTERNAL_FUNCTION_PARAM_PASSTHRU, false);
  ------------------
  |  |  587|     27|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2368|     27|}
zif_preg_replace_callback:
 2396|      2|{
 2397|      2|	zval *zcount = NULL;
 2398|      2|	zend_string *regex_str;
 2399|      2|	HashTable *regex_ht;
 2400|      2|	zend_string *subject_str;
 2401|      2|	HashTable *subject_ht;
 2402|      2|	zend_long limit = -1, flags = 0;
 2403|      2|	size_t replace_count;
 2404|      2|	zend_fcall_info fci = empty_fcall_info;
  ------------------
  |  |  700|      2|# define empty_fcall_info (zend_fcall_info) {0}
  ------------------
 2405|      2|	zend_fcall_info_cache fcc = empty_fcall_info_cache;
  ------------------
  |  |  701|      2|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
 2406|       |
 2407|       |	/* Get function parameters and do error-checking. */
 2408|      6|	ZEND_PARSE_PARAMETERS_START(3, 6)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2409|     10|		Z_PARAM_ARRAY_HT_OR_STR(regex_ht, regex_str)
  ------------------
  |  | 2167|      2|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|      2|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2409:3): [True: 2, False: 0]
  |  Branch (2409:3): [True: 0, False: 0]
  |  Branch (2409:3): [True: 2, False: 0]
  |  Branch (2409:3): [True: 0, False: 0]
  |  Branch (2409:3): [True: 2, False: 0]
  |  Branch (2409:3): [True: 0, False: 0]
  |  Branch (2409:3): [True: 0, False: 2]
  |  Branch (2409:3): [True: 2, False: 0]
  |  Branch (2409:3): [True: 0, False: 0]
  |  Branch (2409:3): [True: 0, False: 0]
  ------------------
 2410|     10|		Z_PARAM_FUNC(fci, fcc)
  ------------------
  |  | 1833|      2|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      2|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (2410:3): [True: 2, False: 0]
  |  Branch (2410:3): [True: 0, False: 0]
  |  Branch (2410:3): [True: 2, False: 0]
  |  Branch (2410:3): [True: 0, False: 0]
  |  Branch (2410:3): [True: 2, False: 0]
  |  Branch (2410:3): [True: 0, False: 0]
  |  Branch (2410:3): [True: 0, False: 2]
  |  Branch (2410:3): [True: 2, False: 0]
  |  Branch (2410:3): [True: 0, False: 0]
  |  Branch (2410:3): [True: 0, False: 0]
  ------------------
 2411|     12|		Z_PARAM_ARRAY_HT_OR_STR(subject_ht, subject_str)
  ------------------
  |  | 2167|      2|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|      2|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2411:3): [True: 2, False: 0]
  |  Branch (2411:3): [True: 0, False: 0]
  |  Branch (2411:3): [True: 2, False: 0]
  |  Branch (2411:3): [True: 0, False: 0]
  |  Branch (2411:3): [True: 2, False: 0]
  |  Branch (2411:3): [True: 0, False: 0]
  |  Branch (2411:3): [True: 0, False: 2]
  |  Branch (2411:3): [True: 2, False: 0]
  |  Branch (2411:3): [True: 0, False: 0]
  |  Branch (2411:3): [True: 0, False: 0]
  ------------------
 2412|     12|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
 2413|     12|		Z_PARAM_LONG(limit)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2413:3): [True: 2, False: 0]
  |  Branch (2413:3): [True: 0, False: 0]
  |  Branch (2413:3): [True: 0, False: 2]
  |  Branch (2413:3): [True: 2, False: 0]
  |  Branch (2413:3): [True: 2, False: 0]
  |  Branch (2413:3): [True: 0, False: 0]
  |  Branch (2413:3): [True: 2, False: 0]
  |  Branch (2413:3): [True: 0, False: 0]
  |  Branch (2413:3): [True: 0, False: 0]
  |  Branch (2413:3): [True: 0, False: 0]
  ------------------
 2414|      0|		Z_PARAM_ZVAL(zcount)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      0|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  |  Branch (2414:3): [True: 0, False: 0]
  ------------------
 2415|      0|		Z_PARAM_LONG(flags)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  |  Branch (2415:3): [True: 0, False: 0]
  ------------------
 2416|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2416:2): [True: 0, False: 0]
  |  Branch (2416:2): [True: 0, False: 0]
  |  Branch (2416:2): [True: 0, False: 0]
  |  Branch (2416:2): [True: 0, False: 0]
  ------------------
 2417|       |
 2418|      2|	replace_count = php_preg_replace_func_impl(return_value, regex_str, regex_ht,
 2419|      2|		&fci, &fcc,
 2420|      2|		subject_str, subject_ht, limit, flags);
 2421|      2|	if (zcount) {
  ------------------
  |  Branch (2421:6): [True: 0, False: 2]
  ------------------
 2422|       |		ZEND_TRY_ASSIGN_REF_LONG(zcount, replace_count);
  ------------------
  |  | 1215|      0|#define ZEND_TRY_ASSIGN_REF_LONG(zv, lval) do { \
  |  | 1216|      0|	ZEND_ASSERT(Z_ISREF_P(zv)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1217|      0|	_ZEND_TRY_ASSIGN_LONG(zv, lval, 1); \
  |  |  ------------------
  |  |  |  | 1198|      0|#define _ZEND_TRY_ASSIGN_LONG(zv, lval, is_ref) do { \
  |  |  |  | 1199|      0|	zval *_zv = zv; \
  |  |  |  | 1200|      0|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1200:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1201|      0|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1202|      0|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1203|      0|			zend_try_assign_typed_ref_long(ref, lval); \
  |  |  |  | 1204|      0|			break; \
  |  |  |  | 1205|      0|		} \
  |  |  |  | 1206|      0|		_zv = &ref->val; \
  |  |  |  | 1207|      0|	} \
  |  |  |  | 1208|      0|	zval_ptr_safe_dtor(_zv); \
  |  |  |  | 1209|      0|	ZVAL_LONG(_zv, lval); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1210:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1218|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1218:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2422:3): [True: 0, False: 0]
  |  Branch (2422:3): [True: 0, False: 0]
  ------------------
 2423|      0|	}
 2424|      2|}
zif_preg_quote:
 2757|      5|{
 2758|      5|	zend_string *str;       		/* Input string argument */
 2759|      5|	zend_string	*delim = NULL;		/* Additional delimiter argument */
 2760|      5|	char		*in_str;			/* Input string */
 2761|      5|	char		*in_str_end;    	/* End of the input string */
 2762|      5|	zend_string	*out_str;			/* Output string with quoted characters */
 2763|      5|	size_t       extra_len;         /* Number of additional characters */
 2764|      5|	char 		*p,					/* Iterator for input string */
 2765|      5|				*q,					/* Iterator for output string */
 2766|      5|				 delim_char = '\0',	/* Delimiter character to be quoted */
 2767|      5|				 c;					/* Current character */
 2768|       |
 2769|       |	/* Get the arguments and check for errors */
 2770|     15|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2771|     20|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      5|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      5|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2771:3): [True: 5, False: 0]
  |  Branch (2771:3): [True: 0, False: 0]
  |  Branch (2771:3): [True: 5, False: 0]
  |  Branch (2771:3): [True: 0, False: 0]
  |  Branch (2771:3): [True: 5, False: 0]
  |  Branch (2771:3): [True: 0, False: 0]
  |  Branch (2771:3): [True: 0, False: 5]
  |  Branch (2771:3): [True: 5, False: 0]
  |  Branch (2771:3): [True: 0, False: 0]
  |  Branch (2771:3): [True: 0, False: 0]
  ------------------
 2772|      5|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      5|	_optional = 1;
  ------------------
 2773|     10|		Z_PARAM_STR_OR_NULL(delim)
  ------------------
  |  | 2105|      5|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      5|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      5|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2773:3): [True: 5, False: 0]
  |  Branch (2773:3): [True: 0, False: 0]
  |  Branch (2773:3): [True: 0, False: 5]
  |  Branch (2773:3): [True: 5, False: 0]
  |  Branch (2773:3): [True: 5, False: 0]
  |  Branch (2773:3): [True: 0, False: 0]
  |  Branch (2773:3): [True: 5, False: 0]
  |  Branch (2773:3): [True: 0, False: 0]
  |  Branch (2773:3): [True: 0, False: 0]
  |  Branch (2773:3): [True: 0, False: 0]
  ------------------
 2774|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2774:2): [True: 0, False: 0]
  |  Branch (2774:2): [True: 0, False: 0]
  |  Branch (2774:2): [True: 0, False: 0]
  |  Branch (2774:2): [True: 0, False: 0]
  ------------------
 2775|       |
 2776|       |	/* Nothing to do if we got an empty string */
 2777|      5|	if (ZSTR_LEN(str) == 0) {
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2777:6): [True: 0, False: 5]
  ------------------
 2778|      0|		RETURN_EMPTY_STRING();
  ------------------
  |  | 1058|      0|#define RETURN_EMPTY_STRING() 			do { RETVAL_EMPTY_STRING(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1032|      0|#define RETVAL_EMPTY_STRING()			ZVAL_EMPTY_STRING(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1058:79): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2779|      0|	}
 2780|       |
 2781|      5|	in_str = ZSTR_VAL(str);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2782|      5|	in_str_end = in_str + ZSTR_LEN(str);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2783|       |
 2784|      5|	if (delim) {
  ------------------
  |  Branch (2784:6): [True: 0, False: 5]
  ------------------
 2785|      0|		delim_char = ZSTR_VAL(delim)[0];
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2786|      0|	}
 2787|       |
 2788|       |	/* Go through the string and quote necessary characters */
 2789|      5|	extra_len = 0;
 2790|      5|	p = in_str;
 2791|    353|	do {
 2792|    353|		c = *p;
 2793|    353|		switch(c) {
 2794|      1|			case '.':
  ------------------
  |  Branch (2794:4): [True: 1, False: 352]
  ------------------
 2795|      4|			case '\\':
  ------------------
  |  Branch (2795:4): [True: 3, False: 350]
  ------------------
 2796|     15|			case '+':
  ------------------
  |  Branch (2796:4): [True: 11, False: 342]
  ------------------
 2797|     15|			case '*':
  ------------------
  |  Branch (2797:4): [True: 0, False: 353]
  ------------------
 2798|     25|			case '?':
  ------------------
  |  Branch (2798:4): [True: 10, False: 343]
  ------------------
 2799|     28|			case '[':
  ------------------
  |  Branch (2799:4): [True: 3, False: 350]
  ------------------
 2800|     29|			case '^':
  ------------------
  |  Branch (2800:4): [True: 1, False: 352]
  ------------------
 2801|     32|			case ']':
  ------------------
  |  Branch (2801:4): [True: 3, False: 350]
  ------------------
 2802|     33|			case '$':
  ------------------
  |  Branch (2802:4): [True: 1, False: 352]
  ------------------
 2803|     38|			case '(':
  ------------------
  |  Branch (2803:4): [True: 5, False: 348]
  ------------------
 2804|     39|			case ')':
  ------------------
  |  Branch (2804:4): [True: 1, False: 352]
  ------------------
 2805|     42|			case '{':
  ------------------
  |  Branch (2805:4): [True: 3, False: 350]
  ------------------
 2806|     44|			case '}':
  ------------------
  |  Branch (2806:4): [True: 2, False: 351]
  ------------------
 2807|     44|			case '=':
  ------------------
  |  Branch (2807:4): [True: 0, False: 353]
  ------------------
 2808|     44|			case '!':
  ------------------
  |  Branch (2808:4): [True: 0, False: 353]
  ------------------
 2809|     46|			case '>':
  ------------------
  |  Branch (2809:4): [True: 2, False: 351]
  ------------------
 2810|     47|			case '<':
  ------------------
  |  Branch (2810:4): [True: 1, False: 352]
  ------------------
 2811|     48|			case '|':
  ------------------
  |  Branch (2811:4): [True: 1, False: 352]
  ------------------
 2812|     61|			case ':':
  ------------------
  |  Branch (2812:4): [True: 13, False: 340]
  ------------------
 2813|     65|			case '-':
  ------------------
  |  Branch (2813:4): [True: 4, False: 349]
  ------------------
 2814|     66|			case '#':
  ------------------
  |  Branch (2814:4): [True: 1, False: 352]
  ------------------
 2815|     66|				extra_len++;
 2816|     66|				break;
 2817|       |
 2818|     19|			case '\0':
  ------------------
  |  Branch (2818:4): [True: 19, False: 334]
  ------------------
 2819|     19|				extra_len+=3;
 2820|     19|				break;
 2821|       |
 2822|    268|			default:
  ------------------
  |  Branch (2822:4): [True: 268, False: 85]
  ------------------
 2823|    268|				if (c == delim_char) {
  ------------------
  |  Branch (2823:9): [True: 0, False: 268]
  ------------------
 2824|      0|					extra_len++;
 2825|      0|				}
 2826|    268|				break;
 2827|    353|		}
 2828|    353|		p++;
 2829|    353|	} while (p != in_str_end);
  ------------------
  |  Branch (2829:11): [True: 348, False: 5]
  ------------------
 2830|       |
 2831|      5|	if (extra_len == 0) {
  ------------------
  |  Branch (2831:6): [True: 1, False: 4]
  ------------------
 2832|      1|		RETURN_STR_COPY(str);
  ------------------
  |  | 1053|      1|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      1|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      1|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      1|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      1|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      1|		} else {										\
  |  |  |  |  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      1|		}												\
  |  |  |  |  |  | 1123|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2833|      1|	}
 2834|       |
 2835|       |	/* Allocate enough memory so that even if each character
 2836|       |	   is quoted, we won't run out of room */
 2837|      4|	out_str = zend_string_safe_alloc(1, ZSTR_LEN(str), extra_len, 0);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2838|      4|	q = ZSTR_VAL(out_str);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2839|      4|	p = in_str;
 2840|       |
 2841|    344|	do {
 2842|    344|		c = *p;
 2843|    344|		switch(c) {
 2844|      1|			case '.':
  ------------------
  |  Branch (2844:4): [True: 1, False: 343]
  ------------------
 2845|      4|			case '\\':
  ------------------
  |  Branch (2845:4): [True: 3, False: 341]
  ------------------
 2846|     15|			case '+':
  ------------------
  |  Branch (2846:4): [True: 11, False: 333]
  ------------------
 2847|     15|			case '*':
  ------------------
  |  Branch (2847:4): [True: 0, False: 344]
  ------------------
 2848|     25|			case '?':
  ------------------
  |  Branch (2848:4): [True: 10, False: 334]
  ------------------
 2849|     28|			case '[':
  ------------------
  |  Branch (2849:4): [True: 3, False: 341]
  ------------------
 2850|     29|			case '^':
  ------------------
  |  Branch (2850:4): [True: 1, False: 343]
  ------------------
 2851|     32|			case ']':
  ------------------
  |  Branch (2851:4): [True: 3, False: 341]
  ------------------
 2852|     33|			case '$':
  ------------------
  |  Branch (2852:4): [True: 1, False: 343]
  ------------------
 2853|     38|			case '(':
  ------------------
  |  Branch (2853:4): [True: 5, False: 339]
  ------------------
 2854|     39|			case ')':
  ------------------
  |  Branch (2854:4): [True: 1, False: 343]
  ------------------
 2855|     42|			case '{':
  ------------------
  |  Branch (2855:4): [True: 3, False: 341]
  ------------------
 2856|     44|			case '}':
  ------------------
  |  Branch (2856:4): [True: 2, False: 342]
  ------------------
 2857|     44|			case '=':
  ------------------
  |  Branch (2857:4): [True: 0, False: 344]
  ------------------
 2858|     44|			case '!':
  ------------------
  |  Branch (2858:4): [True: 0, False: 344]
  ------------------
 2859|     46|			case '>':
  ------------------
  |  Branch (2859:4): [True: 2, False: 342]
  ------------------
 2860|     47|			case '<':
  ------------------
  |  Branch (2860:4): [True: 1, False: 343]
  ------------------
 2861|     48|			case '|':
  ------------------
  |  Branch (2861:4): [True: 1, False: 343]
  ------------------
 2862|     61|			case ':':
  ------------------
  |  Branch (2862:4): [True: 13, False: 331]
  ------------------
 2863|     65|			case '-':
  ------------------
  |  Branch (2863:4): [True: 4, False: 340]
  ------------------
 2864|     66|			case '#':
  ------------------
  |  Branch (2864:4): [True: 1, False: 343]
  ------------------
 2865|     66|				*q++ = '\\';
 2866|     66|				*q++ = c;
 2867|     66|				break;
 2868|       |
 2869|     19|			case '\0':
  ------------------
  |  Branch (2869:4): [True: 19, False: 325]
  ------------------
 2870|     19|				*q++ = '\\';
 2871|     19|				*q++ = '0';
 2872|     19|				*q++ = '0';
 2873|     19|				*q++ = '0';
 2874|     19|				break;
 2875|       |
 2876|    259|			default:
  ------------------
  |  Branch (2876:4): [True: 259, False: 85]
  ------------------
 2877|    259|				if (c == delim_char) {
  ------------------
  |  Branch (2877:9): [True: 0, False: 259]
  ------------------
 2878|      0|					*q++ = '\\';
 2879|      0|				}
 2880|    259|				*q++ = c;
 2881|    259|				break;
 2882|    344|		}
 2883|    344|		p++;
 2884|    344|	} while (p != in_str_end);
  ------------------
  |  Branch (2884:11): [True: 340, False: 4]
  ------------------
 2885|      4|	*q = '\0';
 2886|       |
 2887|      4|	RETURN_NEW_STR(out_str);
  ------------------
  |  | 1052|      4|#define RETURN_NEW_STR(s)				do { RETVAL_NEW_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1026|      4|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      4|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      4|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      4|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      4|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      4|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1052:71): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2888|      4|}
php_pcre_mctx:
 3062|      3|{/*{{{*/
 3063|      3|	return mctx;
 3064|      3|}/*}}}*/
php_pcre.c:pcre_handle_exec_error:
  106|     75|{
  107|     75|	int preg_code = 0;
  108|       |
  109|     75|	switch (pcre_code) {
  110|      3|		case PCRE2_ERROR_MATCHLIMIT:
  ------------------
  |  |  388|      3|#define PCRE2_ERROR_MATCHLIMIT        (-47)
  ------------------
  |  Branch (110:3): [True: 3, False: 72]
  ------------------
  111|      3|			preg_code = PHP_PCRE_BACKTRACK_LIMIT_ERROR;
  112|      3|			break;
  113|       |
  114|      0|		case PCRE2_ERROR_RECURSIONLIMIT:
  ------------------
  |  |  395|      0|#define PCRE2_ERROR_RECURSIONLIMIT    (-53)  /* Obsolete synonym */
  ------------------
  |  Branch (114:3): [True: 0, False: 75]
  ------------------
  115|      0|			preg_code = PHP_PCRE_RECURSION_LIMIT_ERROR;
  116|      0|			break;
  117|       |
  118|      0|		case PCRE2_ERROR_BADUTFOFFSET:
  ------------------
  |  |  377|      0|#define PCRE2_ERROR_BADUTFOFFSET      (-36)
  ------------------
  |  Branch (118:3): [True: 0, False: 75]
  ------------------
  119|      0|			preg_code = PHP_PCRE_BAD_UTF8_OFFSET_ERROR;
  120|      0|			break;
  121|       |
  122|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  123|       |		case PCRE2_ERROR_JIT_STACKLIMIT:
  124|       |			preg_code = PHP_PCRE_JIT_STACKLIMIT_ERROR;
  125|       |			break;
  126|       |#endif
  127|       |
  128|     72|		default:
  ------------------
  |  Branch (128:3): [True: 72, False: 3]
  ------------------
  129|     72|			if (pcre_code <= PCRE2_ERROR_UTF8_ERR1 && pcre_code >= PCRE2_ERROR_UTF8_ERR21) {
  ------------------
  |  |  332|    144|#define PCRE2_ERROR_UTF8_ERR1        (-3)
  ------------------
              			if (pcre_code <= PCRE2_ERROR_UTF8_ERR1 && pcre_code >= PCRE2_ERROR_UTF8_ERR21) {
  ------------------
  |  |  352|     72|#define PCRE2_ERROR_UTF8_ERR21      (-23)
  ------------------
  |  Branch (129:8): [True: 72, False: 0]
  |  Branch (129:46): [True: 14, False: 58]
  ------------------
  130|     14|				preg_code = PHP_PCRE_BAD_UTF8_ERROR;
  131|     58|			} else  {
  132|     58|				preg_code = PHP_PCRE_INTERNAL_ERROR;
  133|     58|			}
  134|     72|			break;
  135|     75|	}
  136|       |
  137|     75|	PCRE_G(error_code) = preg_code;
  ------------------
  |  |   88|     75|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|     75|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  138|     75|}
php_pcre.c:is_known_valid_utf8:
 1123|    164|		zend_string *subject_str, PCRE2_SIZE start_offset) {
 1124|    164|	if (!ZSTR_IS_VALID_UTF8(subject_str)) {
  ------------------
  |  Branch (1124:6): [True: 163, False: 1]
  ------------------
 1125|       |		/* We don't know whether the string is valid UTF-8 or not. */
 1126|    163|		return false;
 1127|    163|	}
 1128|       |
 1129|      1|	if (start_offset == ZSTR_LEN(subject_str)) {
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1129:6): [True: 1, False: 0]
  ------------------
 1130|       |		/* Degenerate case: Offset points to end of string. */
 1131|      1|		return true;
 1132|      1|	}
 1133|       |
 1134|       |	/* Check that the offset does not point to an UTF-8 continuation byte. */
 1135|      0|	return (ZSTR_VAL(subject_str)[start_offset] & 0xc0) != 0x80;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1136|      1|}
php_pcre.c:populate_match_value:
  940|      2|		bool unmatched_as_null) {
  941|      2|	if (PCRE2_UNSET == start_offset) {
  ------------------
  |  |  482|      2|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
  |  Branch (941:6): [True: 0, False: 2]
  ------------------
  942|      0|		if (unmatched_as_null) {
  ------------------
  |  Branch (942:7): [True: 0, False: 0]
  ------------------
  943|      0|			ZVAL_NULL(val);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  944|      0|		} else {
  945|      0|			ZVAL_EMPTY_STRING(val);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  946|      0|		}
  947|      2|	} else {
  948|      2|		populate_match_value_str(val, subject, start_offset, end_offset);
  949|      2|	}
  950|      2|}
php_pcre.c:populate_subpat_array:
 1018|      2|		uint32_t num_subpats, int count, const PCRE2_SPTR mark, zend_long flags) {
 1019|      2|	zend_long offset_capture = flags & PREG_OFFSET_CAPTURE;
  ------------------
  |  |   25|      2|#define PREG_OFFSET_CAPTURE			(1<<8)
  ------------------
 1020|      2|	zend_long unmatched_as_null = flags & PREG_UNMATCHED_AS_NULL;
  ------------------
  |  |   26|      2|#define PREG_UNMATCHED_AS_NULL		(1<<9)
  ------------------
 1021|      2|	zval val;
 1022|      2|	int i;
 1023|      2|	if (subpat_names) {
  ------------------
  |  Branch (1023:6): [True: 0, False: 2]
  ------------------
 1024|      0|		if (offset_capture) {
  ------------------
  |  Branch (1024:7): [True: 0, False: 0]
  ------------------
 1025|      0|			for (i = 0; i < count; i++) {
  ------------------
  |  Branch (1025:16): [True: 0, False: 0]
  ------------------
 1026|      0|				add_offset_pair(
 1027|      0|					subpats_ht, subject, offsets[2*i], offsets[2*i+1],
 1028|      0|					subpat_names[i], unmatched_as_null);
 1029|      0|			}
 1030|      0|			if (unmatched_as_null) {
  ------------------
  |  Branch (1030:8): [True: 0, False: 0]
  ------------------
 1031|      0|				for (i = count; i < num_subpats; i++) {
  ------------------
  |  Branch (1031:21): [True: 0, False: 0]
  ------------------
 1032|      0|					add_offset_pair(subpats_ht, NULL, PCRE2_UNSET, PCRE2_UNSET, subpat_names[i], 1);
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
              					add_offset_pair(subpats_ht, NULL, PCRE2_UNSET, PCRE2_UNSET, subpat_names[i], 1);
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
 1033|      0|				}
 1034|      0|			}
 1035|      0|		} else {
 1036|      0|			for (i = 0; i < count; i++) {
  ------------------
  |  Branch (1036:16): [True: 0, False: 0]
  ------------------
 1037|      0|				populate_match_value(
 1038|      0|					&val, subject, offsets[2*i], offsets[2*i+1], unmatched_as_null);
 1039|      0|				if (subpat_names[i]) {
  ------------------
  |  Branch (1039:9): [True: 0, False: 0]
  ------------------
 1040|      0|					add_named(subpats_ht, subpat_names[i], &val, offsets[2*i] == PCRE2_UNSET);
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
 1041|      0|				}
 1042|      0|				zend_hash_next_index_insert_new(subpats_ht, &val);
 1043|      0|			}
 1044|      0|			if (unmatched_as_null) {
  ------------------
  |  Branch (1044:8): [True: 0, False: 0]
  ------------------
 1045|      0|				for (i = count; i < num_subpats; i++) {
  ------------------
  |  Branch (1045:21): [True: 0, False: 0]
  ------------------
 1046|      0|					ZVAL_NULL(&val);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1047|      0|					if (subpat_names[i]) {
  ------------------
  |  Branch (1047:10): [True: 0, False: 0]
  ------------------
 1048|      0|						zend_hash_add(subpats_ht, subpat_names[i], &val);
 1049|      0|					}
 1050|      0|					zend_hash_next_index_insert_new(subpats_ht, &val);
 1051|      0|				}
 1052|      0|			}
 1053|      0|		}
 1054|      2|	} else {
 1055|      2|		if (offset_capture) {
  ------------------
  |  Branch (1055:7): [True: 0, False: 2]
  ------------------
 1056|      0|			for (i = 0; i < count; i++) {
  ------------------
  |  Branch (1056:16): [True: 0, False: 0]
  ------------------
 1057|      0|				add_offset_pair(
 1058|      0|					subpats_ht, subject, offsets[2*i], offsets[2*i+1], NULL, unmatched_as_null);
 1059|      0|			}
 1060|      0|			if (unmatched_as_null) {
  ------------------
  |  Branch (1060:8): [True: 0, False: 0]
  ------------------
 1061|      0|				for (i = count; i < num_subpats; i++) {
  ------------------
  |  Branch (1061:21): [True: 0, False: 0]
  ------------------
 1062|      0|					add_offset_pair(subpats_ht, NULL, PCRE2_UNSET, PCRE2_UNSET, NULL, 1);
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
              					add_offset_pair(subpats_ht, NULL, PCRE2_UNSET, PCRE2_UNSET, NULL, 1);
  ------------------
  |  |  482|      0|#define PCRE2_UNSET           (~(PCRE2_SIZE)0)
  ------------------
 1063|      0|				}
 1064|      0|			}
 1065|      2|		} else {
 1066|      4|			for (i = 0; i < count; i++) {
  ------------------
  |  Branch (1066:16): [True: 2, False: 2]
  ------------------
 1067|      2|				populate_match_value(
 1068|      2|					&val, subject, offsets[2*i], offsets[2*i+1], unmatched_as_null);
 1069|      2|				zend_hash_next_index_insert_new(subpats_ht, &val);
 1070|      2|			}
 1071|      2|			if (unmatched_as_null) {
  ------------------
  |  Branch (1071:8): [True: 0, False: 2]
  ------------------
 1072|      0|				ZVAL_NULL(&val);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1073|      0|				for (i = count; i < num_subpats; i++) {
  ------------------
  |  Branch (1073:21): [True: 0, False: 0]
  ------------------
 1074|      0|					zend_hash_next_index_insert_new(subpats_ht, &val);
 1075|      0|				}
 1076|      0|			}
 1077|      2|		}
 1078|      2|	}
 1079|       |	/* Add MARK, if available */
 1080|      2|	if (mark) {
  ------------------
  |  Branch (1080:6): [True: 0, False: 2]
  ------------------
 1081|      0|		ZVAL_STRING(&val, (char *)mark);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1082|      0|		zend_hash_str_update(subpats_ht, ZEND_STRL("MARK"), &val);
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1083|      0|	}
 1084|      2|}
php_pcre.c:calculate_unit_length:
  557|    125|{
  558|    125|	size_t unit_len;
  559|       |
  560|    125|	if (pce->compile_options & PCRE2_UTF) {
  ------------------
  |  |  138|    125|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
  |  Branch (560:6): [True: 0, False: 125]
  ------------------
  561|      0|		const char *end = start;
  562|       |
  563|       |		/* skip continuation bytes */
  564|      0|		while ((*++end & 0xC0) == 0x80);
  ------------------
  |  Branch (564:10): [True: 0, False: 0]
  ------------------
  565|      0|		unit_len = end - start;
  566|    125|	} else {
  567|    125|		unit_len = 1;
  568|    125|	}
  569|    125|	return unit_len;
  570|    125|}
php_pcre.c:php_do_pcre_match:
 1087|    353|{
 1088|       |	/* parameters */
 1089|    353|	zend_string		 *regex;			/* Regular expression */
 1090|    353|	zend_string		 *subject;			/* String to match against */
 1091|    353|	pcre_cache_entry *pce;				/* Compiled regular expression */
 1092|    353|	zval			 *subpats = NULL;	/* Array for subpatterns */
 1093|    353|	zend_long		  flags = 0;		/* Match control flags */
 1094|    353|	zend_long		  start_offset = 0;	/* Where the new search starts */
 1095|       |
 1096|  1.05k|	ZEND_PARSE_PARAMETERS_START(2, 5)
  ------------------
  |  | 1629|    353|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    353|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    353|		const int _flags = (flags); \
  |  |  |  | 1599|    353|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    353|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    353|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    353|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    353|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    353|		uint32_t _i = 0; \
  |  |  |  | 1603|    353|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    353|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    353|		char *_error = NULL; \
  |  |  |  | 1606|    353|		bool _dummy = 0; \
  |  |  |  | 1607|    353|		bool _optional = 0; \
  |  |  |  | 1608|    353|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    353|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    353|		((void)_i); \
  |  |  |  | 1610|    353|		((void)_real_arg); \
  |  |  |  | 1611|    353|		((void)_arg); \
  |  |  |  | 1612|    353|		((void)_expected_type); \
  |  |  |  | 1613|    353|		((void)_error); \
  |  |  |  | 1614|    353|		((void)_optional); \
  |  |  |  | 1615|    353|		((void)_dummy); \
  |  |  |  | 1616|    353|		\
  |  |  |  | 1617|    353|		do { \
  |  |  |  | 1618|    353|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    706|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    353|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    352|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|    353|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    353|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    353|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    352|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1097|  1.40k|		Z_PARAM_STR(regex)
  ------------------
  |  | 2102|    352|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|    352|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    352|	++_i; \
  |  |  |  |  |  | 1654|    352|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    352|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    352|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    352|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    352|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    352|	_real_arg++; \
  |  |  |  |  |  | 1660|    352|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    352|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    352|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|    352|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    352|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1097:3): [True: 352, False: 0]
  |  Branch (1097:3): [True: 0, False: 0]
  |  Branch (1097:3): [True: 352, False: 0]
  |  Branch (1097:3): [True: 0, False: 0]
  |  Branch (1097:3): [True: 352, False: 0]
  |  Branch (1097:3): [True: 0, False: 0]
  |  Branch (1097:3): [True: 0, False: 352]
  |  Branch (1097:3): [True: 352, False: 0]
  |  Branch (1097:3): [True: 0, False: 0]
  |  Branch (1097:3): [True: 0, False: 0]
  ------------------
 1098|  1.76k|		Z_PARAM_STR(subject)
  ------------------
  |  | 2102|    352|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|    352|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    352|	++_i; \
  |  |  |  |  |  | 1654|    352|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    352|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    352|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    352|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    352|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    352|	_real_arg++; \
  |  |  |  |  |  | 1660|    352|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    352|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    352|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|    352|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    352|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1098:3): [True: 352, False: 0]
  |  Branch (1098:3): [True: 0, False: 0]
  |  Branch (1098:3): [True: 352, False: 0]
  |  Branch (1098:3): [True: 0, False: 0]
  |  Branch (1098:3): [True: 352, False: 0]
  |  Branch (1098:3): [True: 0, False: 0]
  |  Branch (1098:3): [True: 0, False: 352]
  |  Branch (1098:3): [True: 352, False: 0]
  |  Branch (1098:3): [True: 0, False: 0]
  |  Branch (1098:3): [True: 0, False: 0]
  ------------------
 1099|    352|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|    352|	_optional = 1;
  ------------------
 1100|    708|		Z_PARAM_ZVAL(subpats)
  ------------------
  |  | 2116|      2|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|    352|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|    352|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|    352|	++_i; \
  |  |  |  |  |  |  |  | 1654|    352|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    352|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|    352|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    352|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|    352|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 352, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|    352|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|    352|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 350, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|    352|	} \
  |  |  |  |  |  |  |  | 1659|    352|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      2|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1100:3): [True: 352, False: 0]
  |  Branch (1100:3): [True: 0, False: 0]
  |  Branch (1100:3): [True: 0, False: 352]
  |  Branch (1100:3): [True: 352, False: 0]
  |  Branch (1100:3): [True: 352, False: 0]
  |  Branch (1100:3): [True: 0, False: 0]
  |  Branch (1100:3): [True: 352, False: 0]
  |  Branch (1100:3): [True: 0, False: 0]
  |  Branch (1100:3): [True: 0, False: 0]
  |  Branch (1100:3): [True: 0, False: 0]
  ------------------
 1101|    708|		Z_PARAM_LONG(flags)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1101:3): [True: 2, False: 0]
  |  Branch (1101:3): [True: 0, False: 0]
  |  Branch (1101:3): [True: 0, False: 2]
  |  Branch (1101:3): [True: 2, False: 0]
  |  Branch (1101:3): [True: 2, False: 0]
  |  Branch (1101:3): [True: 0, False: 0]
  |  Branch (1101:3): [True: 2, False: 0]
  |  Branch (1101:3): [True: 0, False: 0]
  |  Branch (1101:3): [True: 0, False: 0]
  |  Branch (1101:3): [True: 0, False: 0]
  ------------------
 1102|      0|		Z_PARAM_LONG(start_offset)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  |  Branch (1102:3): [True: 0, False: 0]
  ------------------
 1103|    353|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|    353|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    353|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 352]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|    353|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 352]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1103:2): [True: 0, False: 0]
  |  Branch (1103:2): [True: 0, False: 0]
  |  Branch (1103:2): [True: 0, False: 0]
  |  Branch (1103:2): [True: 0, False: 0]
  ------------------
 1104|       |
 1105|       |	/* Compile regex or get it from cache. */
 1106|    352|	if ((pce = pcre_get_compiled_regex_cache(regex)) == NULL) {
  ------------------
  |  Branch (1106:6): [True: 46, False: 306]
  ------------------
 1107|     46|		RETURN_FALSE;
  ------------------
  |  | 1069|     46|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|     46|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|     46|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|     46|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     46|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     46|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     46|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|     46|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 46]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1108|     46|	}
 1109|       |
 1110|    306|	if (start_offset == ZEND_LONG_MIN) {
  ------------------
  |  |   35|    306|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (1110:6): [True: 0, False: 306]
  ------------------
 1111|      0|		zend_argument_value_error(5, "must be greater than " ZEND_LONG_FMT, ZEND_LONG_MIN);
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
              		zend_argument_value_error(5, "must be greater than " ZEND_LONG_FMT, ZEND_LONG_MIN);
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
 1112|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1112:3): [True: 0, False: 0]
  |  Branch (1112:3): [True: 0, False: 0]
  ------------------
 1113|      0|	}
 1114|       |
 1115|    306|	pce->refcount++;
 1116|    306|	php_pcre_match_impl(pce, subject, return_value, subpats,
 1117|    306|		global, flags, start_offset);
 1118|    306|	pce->refcount--;
 1119|    306|}
php_pcre.c:preg_replace_common:
 2339|     27|{
 2340|     27|	zend_string *regex_str, *replace_str, *subject_str;
 2341|     27|	HashTable *regex_ht, *replace_ht, *subject_ht;
 2342|     27|	zend_long limit = -1;
 2343|     27|	zval *zcount = NULL;
 2344|       |
 2345|       |	/* Get function parameters and do error-checking. */
 2346|     80|	ZEND_PARSE_PARAMETERS_START(3, 5)
  ------------------
  |  | 1629|     27|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     27|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     27|		const int _flags = (flags); \
  |  |  |  | 1599|     27|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     27|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     27|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     27|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     27|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     27|		uint32_t _i = 0; \
  |  |  |  | 1603|     27|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     27|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     27|		char *_error = NULL; \
  |  |  |  | 1606|     27|		bool _dummy = 0; \
  |  |  |  | 1607|     27|		bool _optional = 0; \
  |  |  |  | 1608|     27|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     27|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     27|		((void)_i); \
  |  |  |  | 1610|     27|		((void)_real_arg); \
  |  |  |  | 1611|     27|		((void)_arg); \
  |  |  |  | 1612|     27|		((void)_expected_type); \
  |  |  |  | 1613|     27|		((void)_error); \
  |  |  |  | 1614|     27|		((void)_optional); \
  |  |  |  | 1615|     27|		((void)_dummy); \
  |  |  |  | 1616|     27|		\
  |  |  |  | 1617|     27|		do { \
  |  |  |  | 1618|     27|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     54|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     27|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|     27|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     27|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     27|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     26|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2347|    130|		Z_PARAM_ARRAY_HT_OR_STR(regex_ht, regex_str)
  ------------------
  |  | 2167|     26|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|     26|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     26|	++_i; \
  |  |  |  |  |  | 1654|     26|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     26|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     26|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     26|	_real_arg++; \
  |  |  |  |  |  | 1660|     26|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     26|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     26|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|     26|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2347:3): [True: 26, False: 0]
  |  Branch (2347:3): [True: 0, False: 0]
  |  Branch (2347:3): [True: 26, False: 0]
  |  Branch (2347:3): [True: 0, False: 0]
  |  Branch (2347:3): [True: 26, False: 0]
  |  Branch (2347:3): [True: 0, False: 0]
  |  Branch (2347:3): [True: 0, False: 26]
  |  Branch (2347:3): [True: 26, False: 0]
  |  Branch (2347:3): [True: 0, False: 0]
  |  Branch (2347:3): [True: 0, False: 0]
  ------------------
 2348|    130|		Z_PARAM_ARRAY_HT_OR_STR(replace_ht, replace_str)
  ------------------
  |  | 2167|     26|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|     26|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     26|	++_i; \
  |  |  |  |  |  | 1654|     26|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     26|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     26|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     26|	_real_arg++; \
  |  |  |  |  |  | 1660|     26|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     26|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     26|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|     26|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2348:3): [True: 26, False: 0]
  |  Branch (2348:3): [True: 0, False: 0]
  |  Branch (2348:3): [True: 26, False: 0]
  |  Branch (2348:3): [True: 0, False: 0]
  |  Branch (2348:3): [True: 26, False: 0]
  |  Branch (2348:3): [True: 0, False: 0]
  |  Branch (2348:3): [True: 0, False: 26]
  |  Branch (2348:3): [True: 26, False: 0]
  |  Branch (2348:3): [True: 0, False: 0]
  |  Branch (2348:3): [True: 0, False: 0]
  ------------------
 2349|    130|		Z_PARAM_ARRAY_HT_OR_STR(subject_ht, subject_str)
  ------------------
  |  | 2167|     26|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|     26|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     26|	++_i; \
  |  |  |  |  |  | 1654|     26|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     26|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     26|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     26|	_real_arg++; \
  |  |  |  |  |  | 1660|     26|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     26|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     26|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|     26|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2349:3): [True: 26, False: 0]
  |  Branch (2349:3): [True: 0, False: 0]
  |  Branch (2349:3): [True: 26, False: 0]
  |  Branch (2349:3): [True: 0, False: 0]
  |  Branch (2349:3): [True: 26, False: 0]
  |  Branch (2349:3): [True: 0, False: 0]
  |  Branch (2349:3): [True: 0, False: 26]
  |  Branch (2349:3): [True: 26, False: 0]
  |  Branch (2349:3): [True: 0, False: 0]
  |  Branch (2349:3): [True: 0, False: 0]
  ------------------
 2350|    130|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     26|	_optional = 1;
  ------------------
 2351|    130|		Z_PARAM_LONG(limit)
  ------------------
  |  | 1905|     26|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|     26|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     26|	++_i; \
  |  |  |  |  |  | 1654|     26|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     26|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     26|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 26, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     26|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 23, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     26|	} \
  |  |  |  |  |  | 1659|     26|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      3|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2351:3): [True: 26, False: 0]
  |  Branch (2351:3): [True: 0, False: 0]
  |  Branch (2351:3): [True: 0, False: 26]
  |  Branch (2351:3): [True: 26, False: 0]
  |  Branch (2351:3): [True: 26, False: 0]
  |  Branch (2351:3): [True: 0, False: 0]
  |  Branch (2351:3): [True: 26, False: 0]
  |  Branch (2351:3): [True: 0, False: 0]
  |  Branch (2351:3): [True: 0, False: 0]
  |  Branch (2351:3): [True: 0, False: 0]
  ------------------
 2352|      9|		Z_PARAM_ZVAL(zcount)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      3|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      3|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      3|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      3|	} \
  |  |  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2352:3): [True: 3, False: 0]
  |  Branch (2352:3): [True: 0, False: 0]
  |  Branch (2352:3): [True: 0, False: 3]
  |  Branch (2352:3): [True: 3, False: 0]
  |  Branch (2352:3): [True: 3, False: 0]
  |  Branch (2352:3): [True: 0, False: 0]
  |  Branch (2352:3): [True: 3, False: 0]
  |  Branch (2352:3): [True: 0, False: 0]
  |  Branch (2352:3): [True: 0, False: 0]
  |  Branch (2352:3): [True: 0, False: 0]
  ------------------
 2353|     27|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     27|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     27|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     27|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2353:2): [True: 0, False: 0]
  |  Branch (2353:2): [True: 0, False: 0]
  |  Branch (2353:2): [True: 0, False: 0]
  |  Branch (2353:2): [True: 0, False: 0]
  ------------------
 2354|       |
 2355|     26|	_preg_replace_common(
 2356|     26|		return_value,
 2357|     26|		regex_ht, regex_str,
 2358|     26|		replace_ht, replace_str,
 2359|     26|		subject_ht, subject_str,
 2360|     26|		limit, zcount, is_filter);
 2361|     26|}
php_pcre.c:_preg_replace_common:
 2270|     26|) {
 2271|     26|	size_t replace_count = 0;
 2272|     26|	zend_string	*result;
 2273|     26|	size_t old_replace_count;
 2274|       |
 2275|       |	/* If replace is an array then the regex argument needs to also be an array */
 2276|     26|	if (replace_ht && !regex_ht) {
  ------------------
  |  Branch (2276:6): [True: 0, False: 26]
  |  Branch (2276:20): [True: 0, False: 0]
  ------------------
 2277|      0|		zend_argument_type_error(1, "must be of type array when argument #2 ($replacement) is an array, string given");
 2278|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2278:3): [True: 0, False: 0]
  |  Branch (2278:3): [True: 0, False: 0]
  ------------------
 2279|      0|	}
 2280|       |
 2281|     26|	if (subject_str) {
  ------------------
  |  Branch (2281:6): [True: 26, False: 0]
  ------------------
 2282|     26|		old_replace_count = replace_count;
 2283|     26|		result = php_replace_in_subject(regex_str, regex_ht, replace_str, replace_ht,
 2284|     26|			subject_str, limit, &replace_count);
 2285|     26|		if (result != NULL) {
  ------------------
  |  Branch (2285:7): [True: 14, False: 12]
  ------------------
 2286|     14|			if (!is_filter || replace_count > old_replace_count) {
  ------------------
  |  Branch (2286:8): [True: 14, False: 0]
  |  Branch (2286:22): [True: 0, False: 0]
  ------------------
 2287|     14|				RETVAL_STR(result);
  ------------------
  |  | 1024|     14|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1088|     14|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|     14|		zval *__z = (z);						\
  |  |  |  | 1090|     14|		zend_string *__s = (s);					\
  |  |  |  | 1091|     14|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     14|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     14|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|     14|		/* interned strings support */			\
  |  |  |  | 1093|     14|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 6, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1094|     14|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      6|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|     14|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|     22|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2288|     14|			} else {
 2289|      0|				zend_string_release_ex(result, 0);
 2290|      0|				RETVAL_NULL();
  ------------------
  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2291|      0|			}
 2292|     14|		} else {
 2293|     12|			RETVAL_NULL();
  ------------------
  |  | 1021|     12|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  ------------------
  |  |  |  | 1059|     12|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|     12|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|     12|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2294|     12|		}
 2295|     26|	} else {
 2296|       |		/* if subject is an array */
 2297|      0|		zval		*subject_entry, zv;
 2298|      0|		zend_string	*string_key;
 2299|      0|		zend_ulong	 num_key;
 2300|       |
 2301|      0|		ZEND_ASSERT(subject_ht != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2301:3): [True: 0, False: 0]
  |  Branch (2301:3): [True: 0, False: 0]
  ------------------
 2302|       |
 2303|      0|		array_init_size(return_value, zend_hash_num_elements(subject_ht));
 2304|      0|		HashTable *return_value_ht = Z_ARRVAL_P(return_value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2305|       |
 2306|       |		/* For each subject entry, convert it to string, then perform replacement
 2307|       |		   and add the result to the return_value array. */
 2308|      0|		ZEND_HASH_FOREACH_KEY_VAL(subject_ht, num_key, string_key, subject_entry) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
 2309|      0|			old_replace_count = replace_count;
 2310|      0|			zend_string *tmp_subject_entry_str;
 2311|      0|			zend_string *subject_entry_str = zval_get_tmp_string(subject_entry, &tmp_subject_entry_str);
 2312|      0|			result = php_replace_in_subject(regex_str, regex_ht, replace_str, replace_ht,
 2313|      0|				subject_entry_str, limit, &replace_count);
 2314|       |
 2315|      0|			if (result != NULL) {
  ------------------
  |  Branch (2315:8): [True: 0, False: 0]
  ------------------
 2316|      0|				if (!is_filter || replace_count > old_replace_count) {
  ------------------
  |  Branch (2316:9): [True: 0, False: 0]
  |  Branch (2316:23): [True: 0, False: 0]
  ------------------
 2317|       |					/* Add to return array */
 2318|      0|					ZVAL_STR(&zv, result);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2319|      0|					if (string_key) {
  ------------------
  |  Branch (2319:10): [True: 0, False: 0]
  ------------------
 2320|      0|						zend_hash_add_new(return_value_ht, string_key, &zv);
 2321|      0|					} else {
 2322|      0|						zend_hash_index_add_new(return_value_ht, num_key, &zv);
 2323|      0|					}
 2324|      0|				} else {
 2325|      0|					zend_string_release_ex(result, 0);
 2326|      0|				}
 2327|      0|			}
 2328|      0|			zend_tmp_string_release(tmp_subject_entry_str);
 2329|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2330|      0|	}
 2331|       |
 2332|     26|	if (zcount) {
  ------------------
  |  Branch (2332:6): [True: 0, False: 26]
  ------------------
 2333|       |		ZEND_TRY_ASSIGN_REF_LONG(zcount, replace_count);
  ------------------
  |  | 1215|      0|#define ZEND_TRY_ASSIGN_REF_LONG(zv, lval) do { \
  |  | 1216|      0|	ZEND_ASSERT(Z_ISREF_P(zv)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1217|      0|	_ZEND_TRY_ASSIGN_LONG(zv, lval, 1); \
  |  |  ------------------
  |  |  |  | 1198|      0|#define _ZEND_TRY_ASSIGN_LONG(zv, lval, is_ref) do { \
  |  |  |  | 1199|      0|	zval *_zv = zv; \
  |  |  |  | 1200|      0|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1200:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1201|      0|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1202|      0|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1203|      0|			zend_try_assign_typed_ref_long(ref, lval); \
  |  |  |  | 1204|      0|			break; \
  |  |  |  | 1205|      0|		} \
  |  |  |  | 1206|      0|		_zv = &ref->val; \
  |  |  |  | 1207|      0|	} \
  |  |  |  | 1208|      0|	zval_ptr_safe_dtor(_zv); \
  |  |  |  | 1209|      0|	ZVAL_LONG(_zv, lval); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1210:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1218|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1218:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2333:3): [True: 0, False: 0]
  |  Branch (2333:3): [True: 0, False: 0]
  ------------------
 2334|      0|	}
 2335|     26|}
php_pcre.c:php_replace_in_subject:
 2150|     26|{
 2151|     26|	zend_string *result;
 2152|       |
 2153|     26|	if (regex_str) {
  ------------------
  |  Branch (2153:6): [True: 26, False: 0]
  ------------------
 2154|     26|		ZEND_ASSERT(replace_str != NULL);
  ------------------
  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2154:3): [True: 0, False: 26]
  |  Branch (2154:3): [True: 26, False: 0]
  ------------------
 2155|     26|		result = php_pcre_replace(regex_str, subject, ZSTR_VAL(subject), ZSTR_LEN(subject),
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		result = php_pcre_replace(regex_str, subject, ZSTR_VAL(subject), ZSTR_LEN(subject),
  ------------------
  |  |   68|     26|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2156|     26|			replace_str, limit, replace_count);
 2157|     26|	} else {
 2158|      0|		ZEND_ASSERT(regex_ht != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2158:3): [True: 0, False: 0]
  |  Branch (2158:3): [True: 0, False: 0]
  ------------------
 2159|      0|		result = php_pcre_replace_array(regex_ht, replace_str, replace_ht, subject,
 2160|      0|			limit, replace_count);
 2161|      0|	}
 2162|     26|	return result;
 2163|     26|}
php_pcre.c:php_preg_replace_func_impl:
 2212|      2|{
 2213|      2|	zend_string	*result;
 2214|      2|	size_t replace_count = 0;
 2215|       |
 2216|      2|	if (subject_str) {
  ------------------
  |  Branch (2216:6): [True: 2, False: 0]
  ------------------
 2217|      2|		result = php_replace_in_subject_func(
 2218|      2|			regex_str, regex_ht, fci, fcc, subject_str, limit_val, &replace_count, flags);
 2219|      2|		if (result != NULL) {
  ------------------
  |  Branch (2219:7): [True: 2, False: 0]
  ------------------
 2220|      2|			RETVAL_STR(result);
  ------------------
  |  | 1024|      2|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2221|      2|		} else {
 2222|      0|			RETVAL_NULL();
  ------------------
  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  ------------------
  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2223|      0|		}
 2224|      2|	} else {
 2225|       |		/* if subject is an array */
 2226|      0|		zval		*subject_entry, zv;
 2227|      0|		zend_string	*string_key;
 2228|      0|		zend_ulong	 num_key;
 2229|       |
 2230|      0|		ZEND_ASSERT(subject_ht != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2230:3): [True: 0, False: 0]
  |  Branch (2230:3): [True: 0, False: 0]
  ------------------
 2231|       |
 2232|      0|		array_init_size(return_value, zend_hash_num_elements(subject_ht));
 2233|      0|		HashTable *return_value_ht = Z_ARRVAL_P(return_value);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2234|       |
 2235|       |		/* For each subject entry, convert it to string, then perform replacement
 2236|       |		   and add the result to the return_value array. */
 2237|      0|		ZEND_HASH_FOREACH_KEY_VAL(subject_ht, num_key, string_key, subject_entry) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
 2238|      0|			zend_string *tmp_subject_entry_str;
 2239|      0|			zend_string *subject_entry_str = zval_try_get_tmp_string(subject_entry, &tmp_subject_entry_str);
 2240|      0|			if (UNEXPECTED(subject_entry_str == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2241|      0|				break;
 2242|      0|			}
 2243|       |
 2244|      0|			result = php_replace_in_subject_func(
 2245|      0|				regex_str, regex_ht, fci, fcc, subject_entry_str, limit_val, &replace_count, flags);
 2246|      0|			if (result != NULL) {
  ------------------
  |  Branch (2246:8): [True: 0, False: 0]
  ------------------
 2247|       |				/* Add to return array */
 2248|      0|				ZVAL_STR(&zv, result);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2249|      0|				if (string_key) {
  ------------------
  |  Branch (2249:9): [True: 0, False: 0]
  ------------------
 2250|      0|					zend_hash_add_new(return_value_ht, string_key, &zv);
 2251|      0|				} else {
 2252|      0|					zend_hash_index_add_new(return_value_ht, num_key, &zv);
 2253|      0|				}
 2254|      0|			}
 2255|      0|			zend_tmp_string_release(tmp_subject_entry_str);
 2256|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2257|      0|	}
 2258|       |
 2259|      2|	return replace_count;
 2260|      2|}
php_pcre.c:php_replace_in_subject_func:
 2169|      2|{
 2170|      2|	zend_string *result;
 2171|       |
 2172|      2|	if (regex_str) {
  ------------------
  |  Branch (2172:6): [True: 2, False: 0]
  ------------------
 2173|      2|		result = php_pcre_replace_func(regex_str, subject, fci, fcc, limit, replace_count, flags);
 2174|      2|		return result;
 2175|      2|	} else {
 2176|       |		/* If regex is an array */
 2177|      0|		zval		*regex_entry;
 2178|       |
 2179|      0|		ZEND_ASSERT(regex_ht != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2179:3): [True: 0, False: 0]
  |  Branch (2179:3): [True: 0, False: 0]
  ------------------
 2180|       |
 2181|      0|		zend_string_addref(subject);
 2182|       |
 2183|       |		/* For each entry in the regex array, get the entry */
 2184|      0|		ZEND_HASH_FOREACH_VAL(regex_ht, regex_entry) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 2185|       |			/* Make sure we're dealing with strings. */
 2186|      0|			zend_string *tmp_regex_entry_str;
 2187|      0|			zend_string *regex_entry_str = zval_try_get_tmp_string(regex_entry, &tmp_regex_entry_str);
 2188|      0|			if (UNEXPECTED(regex_entry_str == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2189|      0|				break;
 2190|      0|			}
 2191|       |
 2192|       |			/* Do the actual replacement and put the result back into subject
 2193|       |			   for further replacements. */
 2194|      0|			result = php_pcre_replace_func(
 2195|      0|				regex_entry_str, subject, fci, fcc, limit, replace_count, flags);
 2196|      0|			zend_tmp_string_release(tmp_regex_entry_str);
 2197|      0|			zend_string_release(subject);
 2198|      0|			subject = result;
 2199|      0|			if (UNEXPECTED(result == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2200|      0|				break;
 2201|      0|			}
 2202|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2203|       |
 2204|      0|		return subject;
 2205|      0|	}
 2206|      2|}
php_pcre.c:php_pcre_replace_func:
 2054|      2|{
 2055|      2|	pcre_cache_entry	*pce;			    /* Compiled regular expression */
 2056|      2|	zend_string	 		*result;			/* Function result */
 2057|       |
 2058|       |	/* Compile regex or get it from cache. */
 2059|      2|	if ((pce = pcre_get_compiled_regex_cache(regex)) == NULL) {
  ------------------
  |  Branch (2059:6): [True: 0, False: 2]
  ------------------
 2060|      0|		return NULL;
 2061|      0|	}
 2062|      2|	pce->refcount++;
 2063|      2|	result = php_pcre_replace_func_impl(pce, subject_str, fci, fcc, limit, replace_count, flags);
 2064|      2|	pce->refcount--;
 2065|       |
 2066|      2|	return result;
 2067|      2|}
php_pcre.c:php_pcre_replace_func_impl:
 1853|      2|) {
 1854|      2|	uint32_t		 options;			/* Execution options */
 1855|      2|	int				 count;				/* Count of matched subpatterns */
 1856|      2|	zend_string		**subpat_names;		/* Array for named subpatterns */
 1857|      2|	uint32_t		 num_subpats;		/* Number of captured subpatterns */
 1858|      2|	size_t			 alloc_len;			/* Actual allocated length */
 1859|      2|	PCRE2_SIZE		 start_offset;		/* Where the new search starts */
  ------------------
  |  |  479|      2|#define PCRE2_SIZE            size_t
  ------------------
 1860|      2|	size_t			 last_end_offset;	/* Where the last search ended */
 1861|      2|	const char		*match,				/* The current match */
 1862|      2|					*piece;				/* The current piece of subject */
 1863|      2|	size_t			result_len; 		/* Length of result */
 1864|      2|	zend_string		*result;			/* Result of replacement */
 1865|      2|	pcre2_match_data *match_data;
  ------------------
  |  |  844|      2|#define pcre2_match_data               PCRE2_SUFFIX(pcre2_match_data_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1866|      2|	bool old_mdata_used;
 1867|       |
 1868|       |	/* Calculate the size of the offsets array, and allocate memory for it. */
 1869|      2|	num_subpats = pce->capture_count + 1;
 1870|      2|	if (pce->name_count > 0) {
  ------------------
  |  Branch (1870:6): [True: 0, False: 2]
  ------------------
 1871|      0|		subpat_names = ensure_subpats_table(pce->name_count, pce);
 1872|      0|		if (UNEXPECTED(!subpat_names)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1873|      0|			return NULL;
 1874|      0|		}
 1875|      2|	} else {
 1876|      2|		subpat_names = NULL;
 1877|      2|	}
 1878|       |
 1879|      2|	alloc_len = 0;
 1880|      2|	result = NULL;
 1881|       |
 1882|       |	/* Initialize */
 1883|      2|	match = NULL;
 1884|      2|	start_offset = 0;
 1885|      2|	last_end_offset = 0;
 1886|      2|	result_len = 0;
 1887|      2|	PCRE_G(error_code) = PHP_PCRE_NO_ERROR;
  ------------------
  |  |   88|      2|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1888|       |
 1889|      2|	old_mdata_used = mdata_used;
 1890|      2|	if (!old_mdata_used && num_subpats <= PHP_PCRE_PREALLOC_MDATA_SIZE) {
  ------------------
  |  |  200|      2|#define PHP_PCRE_PREALLOC_MDATA_SIZE 32
  ------------------
  |  Branch (1890:6): [True: 2, False: 0]
  |  Branch (1890:25): [True: 2, False: 0]
  ------------------
 1891|      2|		mdata_used = 1;
 1892|      2|		match_data = mdata;
 1893|      2|	} else {
 1894|      0|		match_data = pcre2_match_data_create_from_pattern(pce->re, PCRE_G(gctx_zmm));
  ------------------
  |  |  886|      0|#define pcre2_match_data_create_from_pattern  PCRE2_SUFFIX(pcre2_match_data_create_from_pattern_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   57|      0|#define pcre2_match_data_create_from_pattern_8 php_pcre2_match_data_create_from_pattern
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		match_data = pcre2_match_data_create_from_pattern(pce->re, PCRE_G(gctx_zmm));
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1895|      0|		if (!match_data) {
  ------------------
  |  Branch (1895:7): [True: 0, False: 0]
  ------------------
 1896|      0|			PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1897|      0|			mdata_used = old_mdata_used;
 1898|      0|			return NULL;
 1899|      0|		}
 1900|      0|	}
 1901|       |
 1902|      2|	options = (pce->compile_options & PCRE2_UTF) ? 0 : PCRE2_NO_UTF_CHECK;
  ------------------
  |  |  138|      2|#define PCRE2_UTF                 0x00080000u  /* C J M D */
  ------------------
              	options = (pce->compile_options & PCRE2_UTF) ? 0 : PCRE2_NO_UTF_CHECK;
  ------------------
  |  |  106|      4|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
  |  Branch (1902:12): [True: 0, False: 2]
  ------------------
 1903|       |
 1904|       |	/* Array of subpattern offsets */
 1905|      2|	PCRE2_SIZE *const offsets = pcre2_get_ovector_pointer(match_data);
  ------------------
  |  |  479|      2|#define PCRE2_SIZE            size_t
  ------------------
              	PCRE2_SIZE *const offsets = pcre2_get_ovector_pointer(match_data);
  ------------------
  |  |  870|      2|#define pcre2_get_ovector_pointer             PCRE2_SUFFIX(pcre2_get_ovector_pointer_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   42|      2|#define pcre2_get_ovector_pointer_8 php_pcre2_get_ovector_pointer
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1906|       |
 1907|       |	/* Execute the regular expression. */
 1908|       |#ifdef HAVE_PCRE_JIT_SUPPORT
 1909|       |	if ((pce->preg_options & PREG_JIT) && options) {
 1910|       |		count = pcre2_jit_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
 1911|       |				PCRE2_NO_UTF_CHECK, match_data, mctx);
 1912|       |	} else
 1913|       |#endif
 1914|      2|	count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |  881|      2|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1915|      2|			options, match_data, mctx);
 1916|       |
 1917|      2|	while (1) {
  ------------------
  |  Branch (1917:9): [True: 2, Folded]
  ------------------
 1918|      2|		piece = ZSTR_VAL(subject_str) + last_end_offset;
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1919|       |
 1920|      2|		if (count >= 0 && limit) {
  ------------------
  |  Branch (1920:7): [True: 2, False: 0]
  |  Branch (1920:21): [True: 2, False: 0]
  ------------------
 1921|       |			/* Check for too many substrings condition. */
 1922|      2|			if (UNEXPECTED(count == 0)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1923|      0|				php_error_docref(NULL,E_NOTICE, "Matched, but too many substrings");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1924|      0|				count = num_subpats;
 1925|      0|			}
 1926|       |
 1927|      2|matched:
 1928|      2|			if (UNEXPECTED(offsets[1] < offsets[0])) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1929|      0|				PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
  ------------------
  |  |   88|      0|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 1930|      0|				if (result) {
  ------------------
  |  Branch (1930:9): [True: 0, False: 0]
  ------------------
 1931|      0|					zend_string_release_ex(result, 0);
 1932|      0|					result = NULL;
 1933|      0|				}
 1934|      0|				break;
 1935|      0|			}
 1936|       |
 1937|      2|			if (replace_count) {
  ------------------
  |  Branch (1937:8): [True: 2, False: 0]
  ------------------
 1938|      2|				++*replace_count;
 1939|      2|			}
 1940|       |
 1941|       |			/* Set the match location in subject */
 1942|      2|			match = ZSTR_VAL(subject_str) + offsets[0];
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1943|       |
 1944|       |			/* Length of needed storage */
 1945|      2|			size_t new_len = result_len + offsets[0] - last_end_offset; /* part before the match */
 1946|       |
 1947|       |			/* Use custom function to get replacement string and its length. */
 1948|      2|			zend_string *eval_result = preg_do_repl_func(
 1949|      2|				fci, fcc, ZSTR_VAL(subject_str), offsets, subpat_names, num_subpats, count,
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1950|      2|				pcre2_get_mark(match_data), flags);
  ------------------
  |  |  867|      2|#define pcre2_get_mark                        PCRE2_SUFFIX(pcre2_get_mark_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   41|      2|#define pcre2_get_mark_8 php_pcre2_get_mark
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1951|       |
 1952|      2|			if (UNEXPECTED(eval_result == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1953|      0|				goto error;
 1954|      0|			}
 1955|      2|			new_len = zend_safe_address_guarded(1, ZSTR_LEN(eval_result) + ZSTR_MAX_OVERHEAD, new_len) -ZSTR_MAX_OVERHEAD;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			new_len = zend_safe_address_guarded(1, ZSTR_LEN(eval_result) + ZSTR_MAX_OVERHEAD, new_len) -ZSTR_MAX_OVERHEAD;
  ------------------
  |  |  122|      2|#define ZSTR_MAX_OVERHEAD (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
  |  |  ------------------
  |  |  |  |   34|      2|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      2|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			new_len = zend_safe_address_guarded(1, ZSTR_LEN(eval_result) + ZSTR_MAX_OVERHEAD, new_len) -ZSTR_MAX_OVERHEAD;
  ------------------
  |  |  122|      2|#define ZSTR_MAX_OVERHEAD (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
  |  |  ------------------
  |  |  |  |   34|      2|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      2|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1956|      2|			if (new_len >= alloc_len) {
  ------------------
  |  Branch (1956:8): [True: 2, False: 0]
  ------------------
 1957|      2|				alloc_len = zend_safe_address_guarded(2, new_len, ZSTR_MAX_OVERHEAD) - ZSTR_MAX_OVERHEAD;
  ------------------
  |  |  122|      2|#define ZSTR_MAX_OVERHEAD (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
  |  |  ------------------
  |  |  |  |   34|      2|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      2|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				alloc_len = zend_safe_address_guarded(2, new_len, ZSTR_MAX_OVERHEAD) - ZSTR_MAX_OVERHEAD;
  ------------------
  |  |  122|      2|#define ZSTR_MAX_OVERHEAD (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
  |  |  ------------------
  |  |  |  |   34|      2|#define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  ------------------
  |  |  |  |               #define ZEND_MM_ALIGNED_SIZE(size)	(((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   32|      2|#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 2114|      2|#define ZEND_MM_ALIGNMENT (size_t)8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1958|      2|				if (result == NULL) {
  ------------------
  |  Branch (1958:9): [True: 2, False: 0]
  ------------------
 1959|      2|					result = zend_string_alloc(alloc_len, 0);
 1960|      2|				} else {
 1961|      0|					result = zend_string_extend(result, alloc_len, 0);
 1962|      0|				}
 1963|      2|			}
 1964|       |
 1965|      2|			if (match-piece > 0) {
  ------------------
  |  Branch (1965:8): [True: 0, False: 2]
  ------------------
 1966|       |				/* copy the part of the string before the match */
 1967|      0|				memcpy(ZSTR_VAL(result) + result_len, piece, match-piece);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1968|      0|				result_len += (match-piece);
 1969|      0|			}
 1970|       |
 1971|       |			/* If using custom function, copy result to the buffer and clean up. */
 1972|      2|			memcpy(ZSTR_VAL(result) + result_len, ZSTR_VAL(eval_result), ZSTR_LEN(eval_result));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(result) + result_len, ZSTR_VAL(eval_result), ZSTR_LEN(eval_result));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ZSTR_VAL(result) + result_len, ZSTR_VAL(eval_result), ZSTR_LEN(eval_result));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1973|      2|			result_len += ZSTR_LEN(eval_result);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1974|      2|			zend_string_release_ex(eval_result, 0);
 1975|       |
 1976|      2|			limit--;
 1977|       |
 1978|       |			/* Advance to the next piece. */
 1979|      2|			start_offset = last_end_offset = offsets[1];
 1980|       |
 1981|       |			/* If we have matched an empty string, mimic what Perl's /g options does.
 1982|       |			   This turns out to be rather cunning. First we set PCRE2_NOTEMPTY_ATSTART and try
 1983|       |			   the match again at the same point. If this fails (picked up above) we
 1984|       |			   advance to the next character. */
 1985|      2|			if (start_offset == offsets[0]) {
  ------------------
  |  Branch (1985:8): [True: 2, False: 0]
  ------------------
 1986|      2|				count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |  881|      2|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1987|      2|					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  106|      2|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
              					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  179|      2|#define PCRE2_NOTEMPTY_ATSTART            0x00000008u  /* ) adjacent to each other. */
  ------------------
              					PCRE2_NO_UTF_CHECK | PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED, match_data, mctx);
  ------------------
  |  |  105|      2|#define PCRE2_ANCHORED            0x80000000u
  ------------------
 1988|       |
 1989|      2|				piece = ZSTR_VAL(subject_str) + start_offset;
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1990|      2|				if (count >= 0 && limit) {
  ------------------
  |  Branch (1990:9): [True: 0, False: 2]
  |  Branch (1990:23): [True: 0, False: 0]
  ------------------
 1991|      0|					goto matched;
 1992|      2|				} else if (count == PCRE2_ERROR_NOMATCH || limit == 0) {
  ------------------
  |  |  327|      4|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
  |  Branch (1992:16): [True: 2, False: 0]
  |  Branch (1992:48): [True: 0, False: 0]
  ------------------
 1993|       |					/* If we previously set PCRE2_NOTEMPTY_ATSTART after a null match,
 1994|       |					   this is not necessarily the end. We need to advance
 1995|       |					   the start offset, and continue. Fudge the offset values
 1996|       |					   to achieve this, unless we're already at the end of the string. */
 1997|      2|					if (start_offset < ZSTR_LEN(subject_str)) {
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1997:10): [True: 0, False: 2]
  ------------------
 1998|      0|						size_t unit_len = calculate_unit_length(pce, piece);
 1999|      0|						start_offset += unit_len;
 2000|      2|					} else {
 2001|      2|						goto not_matched;
 2002|      2|					}
 2003|      2|				} else {
 2004|      0|					goto error;
 2005|      0|				}
 2006|      2|			}
 2007|       |
 2008|      2|		} else if (count == PCRE2_ERROR_NOMATCH || limit == 0) {
  ------------------
  |  |  327|      0|#define PCRE2_ERROR_NOMATCH          (-1)
  ------------------
  |  Branch (2008:14): [True: 0, False: 0]
  |  Branch (2008:46): [True: 0, False: 0]
  ------------------
 2009|      2|not_matched:
 2010|      2|			if (result == NULL) {
  ------------------
  |  Branch (2010:8): [True: 0, False: 2]
  ------------------
 2011|      0|				result = zend_string_copy(subject_str);
 2012|      0|				break;
 2013|      0|			}
 2014|       |			/* now we know exactly how long it is */
 2015|      2|			size_t segment_len = ZSTR_LEN(subject_str) - last_end_offset;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2016|      2|			alloc_len = result_len + segment_len;
 2017|      2|			result = zend_string_realloc(result, alloc_len, 0);
 2018|       |			/* stick that last bit of string on our output */
 2019|      2|			memcpy(ZSTR_VAL(result) + result_len, piece, segment_len);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2020|      2|			result_len += segment_len;
 2021|      2|			ZSTR_VAL(result)[result_len] = '\0';
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2022|      2|			ZSTR_LEN(result) = result_len;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2023|      2|			break;
 2024|      2|		} else {
 2025|      0|error:
 2026|      0|			pcre_handle_exec_error(count);
 2027|      0|			if (result) {
  ------------------
  |  Branch (2027:8): [True: 0, False: 0]
  ------------------
 2028|      0|				zend_string_release_ex(result, 0);
 2029|      0|				result = NULL;
 2030|      0|			}
 2031|      0|			break;
 2032|      0|		}
 2033|       |#ifdef HAVE_PCRE_JIT_SUPPORT
 2034|       |		if ((pce->preg_options & PREG_JIT)) {
 2035|       |			count = pcre2_jit_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
 2036|       |					PCRE2_NO_UTF_CHECK, match_data, mctx);
 2037|       |		} else
 2038|       |#endif
 2039|      0|		count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |  881|      0|#define pcre2_match                           PCRE2_SUFFIX(pcre2_match_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define pcre2_match_8 php_pcre2_match
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		count = pcre2_match(pce->re, (PCRE2_SPTR)ZSTR_VAL(subject_str), ZSTR_LEN(subject_str), start_offset,
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2040|      0|				PCRE2_NO_UTF_CHECK, match_data, mctx);
  ------------------
  |  |  106|      0|#define PCRE2_NO_UTF_CHECK        0x40000000u
  ------------------
 2041|      0|	}
 2042|      2|	if (match_data != mdata) {
  ------------------
  |  Branch (2042:6): [True: 0, False: 2]
  ------------------
 2043|      0|		pcre2_match_data_free(match_data);
  ------------------
  |  |  887|      0|#define pcre2_match_data_free                 PCRE2_SUFFIX(pcre2_match_data_free_)
  |  |  ------------------
  |  |  |  |  994|      0|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      0|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      0|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   58|      0|#define pcre2_match_data_free_8 php_pcre2_match_data_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2044|      0|	}
 2045|      2|	mdata_used = old_mdata_used;
 2046|       |
 2047|      2|	return result;
 2048|      2|}
php_pcre.c:preg_do_repl_func:
 1551|      2|{
 1552|      2|	zend_string *result_str = NULL;
 1553|      2|	zval		 retval;			/* Function return value */
 1554|      2|	zval	     arg;				/* Argument to pass to function */
 1555|       |
 1556|      2|	array_init_size(&arg, count + (mark ? 1 : 0));
  ------------------
  |  Branch (1556:33): [True: 0, False: 2]
  ------------------
 1557|      2|	populate_subpat_array(Z_ARRVAL(arg), subject, offsets, subpat_names, num_subpats, count, mark, flags);
  ------------------
  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1558|       |
 1559|      2|	fci->retval = &retval;
 1560|      2|	fci->param_count = 1;
 1561|      2|	fci->params = &arg;
 1562|      2|	fci->consumed_args = zend_fci_consumed_arg(0);
 1563|      2|	zend_call_function(fci, fcc);
 1564|      2|	zval_ptr_dtor(&arg);
 1565|      2|	if (EXPECTED(Z_TYPE(retval) == IS_STRING)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1566|      0|		return Z_STR(retval);
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
 1567|      0|	}
 1568|       |	/* No Exception has occurred */
 1569|      2|	else if (EXPECTED(Z_TYPE(retval) != IS_UNDEF)) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1570|      2|		result_str = zval_try_get_string_func(&retval);
 1571|      2|	}
 1572|      2|	zval_ptr_dtor(&retval);
 1573|       |
 1574|      2|	return result_str;
 1575|      2|}
php_pcre.c:populate_match_value_str:
  934|      2|		zval *val, const char *subject, PCRE2_SIZE start_offset, PCRE2_SIZE end_offset) {
  935|      2|	ZVAL_STRINGL_FAST(val, subject + start_offset, end_offset - start_offset);
  ------------------
  |  |  994|      2|#define ZVAL_STRINGL_FAST(z, s, l) do {			\
  |  |  995|      2|		ZVAL_STR(z, zend_string_init_fast(s, l));	\
  |  |  ------------------
  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  996|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (996:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  936|      2|}
php_pcre.c:zm_startup_pcre:
  412|      2|{
  413|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  414|       |	if (UNEXPECTED(!pcre2_init_ok)) {
  415|       |		/* Retry. */
  416|       |		php_pcre_init_pcre2(PCRE_G(jit));
  417|       |		if (!pcre2_init_ok) {
  418|       |			return FAILURE;
  419|       |		}
  420|       |	}
  421|       |#endif
  422|       |
  423|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
  424|       |
  425|      2|	php_pcre_version = _pcre2_config_str(PCRE2_CONFIG_VERSION);
  ------------------
  |  |  457|      2|#define PCRE2_CONFIG_VERSION                11
  ------------------
  426|       |
  427|      2|	register_php_pcre_symbols(module_number);
  428|       |
  429|      2|	return SUCCESS;
  430|      2|}
php_pcre.c:OnUpdateBacktrackLimit:
  314|      2|{/*{{{*/
  315|      2|	OnUpdateLong(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  316|      2|	if (mctx) {
  ------------------
  |  Branch (316:6): [True: 2, False: 0]
  ------------------
  317|      2|		pcre2_set_match_limit(mctx, (uint32_t)PCRE_G(backtrack_limit));
  ------------------
  |  |  903|      2|#define pcre2_set_match_limit                 PCRE2_SUFFIX(pcre2_set_match_limit_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   73|      2|#define pcre2_set_match_limit_8 php_pcre2_set_match_limit
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		pcre2_set_match_limit(mctx, (uint32_t)PCRE_G(backtrack_limit));
  ------------------
  |  |   88|      2|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  318|      2|	}
  319|       |
  320|      2|	return SUCCESS;
  321|      2|}/*}}}*/
php_pcre.c:OnUpdateRecursionLimit:
  324|      2|{/*{{{*/
  325|      2|	OnUpdateLong(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  326|      2|	if (mctx) {
  ------------------
  |  Branch (326:6): [True: 2, False: 0]
  ------------------
  327|      2|		pcre2_set_depth_limit(mctx, (uint32_t)PCRE_G(recursion_limit));
  ------------------
  |  |  899|      2|#define pcre2_set_depth_limit                 PCRE2_SUFFIX(pcre2_set_depth_limit_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   69|      2|#define pcre2_set_depth_limit_8 php_pcre2_set_depth_limit
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		pcre2_set_depth_limit(mctx, (uint32_t)PCRE_G(recursion_limit));
  ------------------
  |  |   88|      2|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  328|      2|	}
  329|       |
  330|      2|	return SUCCESS;
  331|      2|}/*}}}*/
php_pcre.c:_pcre2_config_str:
  356|      4|{/*{{{*/
  357|      4|	int len = pcre2_config(what, NULL);
  ------------------
  |  |  857|      4|#define pcre2_config                          PCRE2_SUFFIX(pcre2_config_)
  |  |  ------------------
  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|      4|#define pcre2_config_8 php_pcre2_config
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  358|      4|	char *ret = (char *) malloc(len + 1);
  359|       |
  360|      4|	len = pcre2_config(what, ret);
  ------------------
  |  |  857|      4|#define pcre2_config                          PCRE2_SUFFIX(pcre2_config_)
  |  |  ------------------
  |  |  |  |  994|      4|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      4|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      4|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   32|      4|#define pcre2_config_8 php_pcre2_config
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|      4|	if (!len) {
  ------------------
  |  Branch (361:6): [True: 0, False: 4]
  ------------------
  362|      0|		free(ret);
  363|      0|		return NULL;
  364|      0|	}
  365|       |
  366|      4|	return ret;
  367|      4|}/*}}}*/
php_pcre.c:zm_activate_pcre:
  446|  33.5k|{
  447|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  448|       |	if (UNEXPECTED(!pcre2_init_ok)) {
  449|       |		/* Retry. */
  450|       |		php_pcre_mutex_lock();
  451|       |		php_pcre_init_pcre2(PCRE_G(jit));
  452|       |		if (!pcre2_init_ok) {
  453|       |			php_pcre_mutex_unlock();
  454|       |			return FAILURE;
  455|       |		}
  456|       |		php_pcre_mutex_unlock();
  457|       |	}
  458|       |
  459|       |	mdata_used = 0;
  460|       |#endif
  461|       |
  462|  33.5k|	PCRE_G(error_code) = PHP_PCRE_NO_ERROR;
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  463|  33.5k|	PCRE_G(gctx_zmm) = pcre2_general_context_create(php_pcre_emalloc, php_pcre_efree, NULL);
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              	PCRE_G(gctx_zmm) = pcre2_general_context_create(php_pcre_emalloc, php_pcre_efree, NULL);
  ------------------
  |  |  864|  33.5k|#define pcre2_general_context_create          PCRE2_SUFFIX(pcre2_general_context_create_)
  |  |  ------------------
  |  |  |  |  994|  33.5k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  33.5k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  33.5k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   38|  33.5k|#define pcre2_general_context_create_8 php_pcre2_general_context_create
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  464|  33.5k|	if (!PCRE_G(gctx_zmm)) {
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (464:6): [True: 0, False: 33.5k]
  ------------------
  465|      0|		return FAILURE;
  466|      0|	}
  467|       |
  468|  33.5k|	return SUCCESS;
  469|  33.5k|}
php_pcre.c:php_pcre_emalloc:
  191|  33.5k|{
  192|       |	return emalloc(size);
  ------------------
  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|  33.5k|}
php_pcre.c:php_pcre_efree:
  196|  33.5k|{
  197|       |	efree(block);
  ------------------
  |  |  154|  33.5k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|  33.5k|}
php_pcre.c:zm_deactivate_pcre:
  473|  33.5k|{
  474|  33.5k|	pcre_cache_entry *pce;
  475|  17.1M|	ZEND_HASH_MAP_FOREACH_PTR(&PCRE_G(pcre_cache), pce) {
  ------------------
  |  | 1341|  8.54M|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|  33.5k|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|  33.5k|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|  33.5k|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|  33.5k|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|  33.5k|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|  33.5k|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  8.57M|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 8.54M, False: 33.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  8.54M|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  8.54M|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  8.54M|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 8.54M]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  8.54M|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  8.54M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8.54M]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  8.54M|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|  33.5k|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|  33.5k|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (475:2): [True: 0, False: 33.5k]
  |  Branch (475:2): [True: 33.5k, False: 0]
  ------------------
  476|  17.1M|		if (pce->subpats_table) {
  ------------------
  |  Branch (476:7): [True: 0, False: 8.54M]
  ------------------
  477|      0|			free_subpats_table(pce->subpats_table, pce->capture_count + 1);
  478|      0|			pce->subpats_table = NULL;
  479|      0|		}
  480|  17.1M|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  8.54M|		} \
  |  | 1102|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  481|       |
  482|  33.5k|	pcre2_general_context_free(PCRE_G(gctx_zmm));
  ------------------
  |  |  865|  33.5k|#define pcre2_general_context_free            PCRE2_SUFFIX(pcre2_general_context_free_)
  |  |  ------------------
  |  |  |  |  994|  33.5k|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|  33.5k|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|  33.5k|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   39|  33.5k|#define pcre2_general_context_free_8 php_pcre2_general_context_free
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	pcre2_general_context_free(PCRE_G(gctx_zmm));
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  483|  33.5k|	PCRE_G(gctx_zmm) = NULL;
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  484|       |
  485|  33.5k|	zval_ptr_dtor(&PCRE_G(unmatched_null_pair));
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  486|  33.5k|	zval_ptr_dtor(&PCRE_G(unmatched_empty_pair));
  ------------------
  |  |   88|  33.5k|#define PCRE_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcre, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  487|  33.5k|	ZVAL_UNDEF(&PCRE_G(unmatched_null_pair));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  488|  33.5k|	ZVAL_UNDEF(&PCRE_G(unmatched_empty_pair));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  489|  33.5k|	return SUCCESS;
  490|  33.5k|}
php_pcre.c:zm_info_pcre:
  371|      1|{
  372|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  373|       |	uint32_t flag = 0;
  374|       |	char *jit_target = _pcre2_config_str(PCRE2_CONFIG_JITTARGET);
  375|       |#endif
  376|      1|	char *version = _pcre2_config_str(PCRE2_CONFIG_VERSION);
  ------------------
  |  |  457|      1|#define PCRE2_CONFIG_VERSION                11
  ------------------
  377|      1|	char *unicode = _pcre2_config_str(PCRE2_CONFIG_UNICODE_VERSION);
  ------------------
  |  |  456|      1|#define PCRE2_CONFIG_UNICODE_VERSION        10
  ------------------
  378|       |
  379|      1|	php_info_print_table_start();
  380|      1|	php_info_print_table_row(2, "PCRE (Perl Compatible Regular Expressions) Support", "enabled" );
  381|      1|	php_info_print_table_row(2, "PCRE Library Version", version);
  382|      1|	free(version);
  383|      1|	php_info_print_table_row(2, "PCRE Unicode Version", unicode);
  384|      1|	free(unicode);
  385|       |
  386|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  387|       |	if (!pcre2_config(PCRE2_CONFIG_JIT, &flag)) {
  388|       |		php_info_print_table_row(2, "PCRE JIT Support", flag ? "enabled" : "disabled");
  389|       |	} else {
  390|       |		php_info_print_table_row(2, "PCRE JIT Support", "unknown" );
  391|       |	}
  392|       |	if (jit_target) {
  393|       |		php_info_print_table_row(2, "PCRE JIT Target", jit_target);
  394|       |	}
  395|       |	free(jit_target);
  396|       |#else
  397|      1|	php_info_print_table_row(2, "PCRE JIT Support", "not compiled in" );
  398|      1|#endif
  399|       |
  400|       |#ifdef HAVE_PCRE_VALGRIND_SUPPORT
  401|       |	php_info_print_table_row(2, "PCRE Valgrind Support", "enabled" );
  402|       |#endif
  403|       |
  404|      1|	php_info_print_table_end();
  405|       |
  406|      1|	DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      1|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
  407|      1|}
php_pcre.c:zm_globals_ctor_pcre:
  284|      2|{
  285|      2|	php_pcre_mutex_alloc();
  286|       |
  287|      2|	zend_hash_init(&pcre_globals->pcre_cache, 0, NULL, php_free_pcre_cache, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  288|       |
  289|      2|	pcre_globals->backtrack_limit = 0;
  290|      2|	pcre_globals->recursion_limit = 0;
  291|      2|	pcre_globals->error_code      = PHP_PCRE_NO_ERROR;
  292|      2|	ZVAL_UNDEF(&pcre_globals->unmatched_null_pair);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  293|      2|	ZVAL_UNDEF(&pcre_globals->unmatched_empty_pair);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  294|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  295|       |	pcre_globals->jit = 1;
  296|       |#endif
  297|       |
  298|      2|	php_pcre_init_pcre2(1);
  299|      2|	zend_hash_init(&char_tables, 1, NULL, php_pcre_free_char_table, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  300|      2|}
php_pcre.c:php_pcre_init_pcre2:
  203|      2|{/*{{{*/
  204|      2|	if (!gctx) {
  ------------------
  |  Branch (204:6): [True: 2, False: 0]
  ------------------
  205|      2|		gctx = pcre2_general_context_create(php_pcre_malloc, php_pcre_free, NULL);
  ------------------
  |  |  864|      2|#define pcre2_general_context_create          PCRE2_SUFFIX(pcre2_general_context_create_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   38|      2|#define pcre2_general_context_create_8 php_pcre2_general_context_create
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  206|      2|		if (!gctx) {
  ------------------
  |  Branch (206:7): [True: 0, False: 2]
  ------------------
  207|      0|			pcre2_init_ok = 0;
  208|      0|			return;
  209|      0|		}
  210|      2|	}
  211|       |
  212|      2|	if (!cctx) {
  ------------------
  |  Branch (212:6): [True: 2, False: 0]
  ------------------
  213|      2|		cctx = pcre2_compile_context_create(gctx);
  ------------------
  |  |  855|      2|#define pcre2_compile_context_create          PCRE2_SUFFIX(pcre2_compile_context_create_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   30|      2|#define pcre2_compile_context_create_8 php_pcre2_compile_context_create
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|      2|		if (!cctx) {
  ------------------
  |  Branch (214:7): [True: 0, False: 2]
  ------------------
  215|      0|			pcre2_init_ok = 0;
  216|      0|			return;
  217|      0|		}
  218|      2|	}
  219|       |
  220|      2|	if (!mctx) {
  ------------------
  |  Branch (220:6): [True: 2, False: 0]
  ------------------
  221|      2|		mctx = pcre2_match_context_create(gctx);
  ------------------
  |  |  883|      2|#define pcre2_match_context_create            PCRE2_SUFFIX(pcre2_match_context_create_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|      2|#define pcre2_match_context_create_8 php_pcre2_match_context_create
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|      2|		if (!mctx) {
  ------------------
  |  Branch (222:7): [True: 0, False: 2]
  ------------------
  223|      0|			pcre2_init_ok = 0;
  224|      0|			return;
  225|      0|		}
  226|      2|	}
  227|       |
  228|       |#ifdef HAVE_PCRE_JIT_SUPPORT
  229|       |	if (jit && !jit_stack) {
  230|       |		jit_stack = pcre2_jit_stack_create(PCRE_JIT_STACK_MIN_SIZE, PCRE_JIT_STACK_MAX_SIZE, gctx);
  231|       |		if (!jit_stack) {
  232|       |			pcre2_init_ok = 0;
  233|       |			return;
  234|       |		}
  235|       |	}
  236|       |#endif
  237|       |
  238|      2|	if (!mdata) {
  ------------------
  |  Branch (238:6): [True: 2, False: 0]
  ------------------
  239|      2|		mdata = pcre2_match_data_create(PHP_PCRE_PREALLOC_MDATA_SIZE, gctx);
  ------------------
  |  |  885|      2|#define pcre2_match_data_create               PCRE2_SUFFIX(pcre2_match_data_create_)
  |  |  ------------------
  |  |  |  |  994|      2|#define PCRE2_SUFFIX(a) PCRE2_GLUE(a, PCRE2_CODE_UNIT_WIDTH)
  |  |  |  |  ------------------
  |  |  |  |  |  |  813|      2|#define PCRE2_GLUE(a,b) PCRE2_JOIN(a,b)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  812|      2|#define PCRE2_JOIN(a,b) a ## b
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   56|      2|#define pcre2_match_data_create_8 php_pcre2_match_data_create
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		mdata = pcre2_match_data_create(PHP_PCRE_PREALLOC_MDATA_SIZE, gctx);
  ------------------
  |  |  200|      2|#define PHP_PCRE_PREALLOC_MDATA_SIZE 32
  ------------------
  240|      2|		if (!mdata) {
  ------------------
  |  Branch (240:7): [True: 0, False: 2]
  ------------------
  241|      0|			pcre2_init_ok = 0;
  242|      0|			return;
  243|      0|		}
  244|      2|	}
  245|       |
  246|      2|	pcre2_init_ok = 1;
  247|      2|}/*}}}*/
php_pcre.c:php_pcre_malloc:
  181|    307|{
  182|       |	return pemalloc(size, 1);
  ------------------
  |  |  188|    307|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|    307|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    307|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|    307|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    307|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 307, Folded]
  |  |  ------------------
  ------------------
  183|    307|}
php_pcre.c:php_pcre_free:
  186|      1|{
  187|       |	pefree(block, 1);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 1, Folded]
  |  |  ------------------
  ------------------
  188|      1|}

php_pcre.c:register_php_pcre_symbols:
  106|      2|{
  107|      2|	REGISTER_LONG_CONSTANT("PREG_PATTERN_ORDER", PREG_PATTERN_ORDER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  108|      2|	REGISTER_LONG_CONSTANT("PREG_SET_ORDER", PREG_SET_ORDER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  109|      2|	REGISTER_LONG_CONSTANT("PREG_OFFSET_CAPTURE", PREG_OFFSET_CAPTURE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  110|      2|	REGISTER_LONG_CONSTANT("PREG_UNMATCHED_AS_NULL", PREG_UNMATCHED_AS_NULL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  111|      2|	REGISTER_LONG_CONSTANT("PREG_SPLIT_NO_EMPTY", PREG_SPLIT_NO_EMPTY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  112|      2|	REGISTER_LONG_CONSTANT("PREG_SPLIT_DELIM_CAPTURE", PREG_SPLIT_DELIM_CAPTURE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  113|      2|	REGISTER_LONG_CONSTANT("PREG_SPLIT_OFFSET_CAPTURE", PREG_SPLIT_OFFSET_CAPTURE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  114|      2|	REGISTER_LONG_CONSTANT("PREG_GREP_INVERT", PREG_GREP_INVERT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  115|      2|	REGISTER_LONG_CONSTANT("PREG_NO_ERROR", PHP_PCRE_NO_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  116|      2|	REGISTER_LONG_CONSTANT("PREG_INTERNAL_ERROR", PHP_PCRE_INTERNAL_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  117|      2|	REGISTER_LONG_CONSTANT("PREG_BACKTRACK_LIMIT_ERROR", PHP_PCRE_BACKTRACK_LIMIT_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  118|      2|	REGISTER_LONG_CONSTANT("PREG_RECURSION_LIMIT_ERROR", PHP_PCRE_RECURSION_LIMIT_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  119|      2|	REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_ERROR", PHP_PCRE_BAD_UTF8_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  120|      2|	REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR", PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  121|      2|	REGISTER_LONG_CONSTANT("PREG_JIT_STACKLIMIT_ERROR", PHP_PCRE_JIT_STACKLIMIT_ERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  122|      2|	REGISTER_STRING_CONSTANT("PCRE_VERSION", php_pcre_version, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
  123|      2|	REGISTER_LONG_CONSTANT("PCRE_VERSION_MAJOR", PCRE2_MAJOR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  124|      2|	REGISTER_LONG_CONSTANT("PCRE_VERSION_MINOR", PCRE2_MINOR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  125|      2|	REGISTER_BOOL_CONSTANT("PCRE_JIT_SUPPORT", PHP_PCRE_JIT_SUPPORT, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
  126|      2|}

php_random_bytes_ex:
   68|     10|{
   69|       |#ifdef PHP_WIN32
   70|       |	/* Defer to CryptGenRandom on Windows */
   71|       |	if (php_win32_get_random_bytes(bytes, size) == FAILURE) {
   72|       |		snprintf(errstr, errstr_size, "Failed to retrieve randomness from the operating system (BCryptGenRandom)");
   73|       |		return FAILURE;
   74|       |	}
   75|       |#elif defined(HAVE_COMMONCRYPTO_COMMONRANDOM_H)
   76|       |	/*
   77|       |	 * Purposely prioritized upon arc4random_buf for modern macOs releases
   78|       |	 * arc4random api on this platform uses `ccrng_generate` which returns
   79|       |	 * a status but silented to respect the "no fail" arc4random api interface
   80|       |	 * the vast majority of the time, it works fine ; but better make sure we catch failures
   81|       |	 */
   82|       |	if (CCRandomGenerateBytes(bytes, size) != kCCSuccess) {
   83|       |		snprintf(errstr, errstr_size, "Failed to retrieve randomness from the operating system (CCRandomGenerateBytes)");
   84|       |		return FAILURE;
   85|       |	}
   86|       |#elif defined(HAVE_ARC4RANDOM_BUF) && ((defined(__OpenBSD__) && OpenBSD >= 201405) || (defined(__NetBSD__) && __NetBSD_Version__ >= 700000001 && __NetBSD_Version__ < 1000000000) || \
   87|       |  defined(__APPLE__) || defined(__HAIKU__))
   88|       |	/*
   89|       |	 * OpenBSD until there is a valid equivalent
   90|       |	 * or NetBSD before the 10.x release
   91|       |	 * falls back to arc4random_buf
   92|       |	 * giving a decent output, the main benefit
   93|       |	 * is being (relatively) failsafe.
   94|       |	 * Older macOs releases fall also into this
   95|       |	 * category for reasons explained above.
   96|       |	 */
   97|       |	arc4random_buf(bytes, size);
   98|       |#else
   99|     10|	size_t read_bytes = 0;
  100|     10|# if (defined(__linux__) && defined(SYS_getrandom)) || (defined(__FreeBSD__) && __FreeBSD_version >= 1200000) || (defined(__DragonFly__) && __DragonFly_version >= 500700) || \
  101|     10|  (defined(__sun) && defined(HAVE_GETRANDOM)) || (defined(__NetBSD__) && __NetBSD_Version__ >= 1000000000) || defined(__midipix__)
  102|       |	/* Linux getrandom(2) syscall or FreeBSD/DragonFlyBSD/NetBSD getrandom(2) function
  103|       |	 * Being a syscall, implemented in the kernel, getrandom offers higher quality output
  104|       |	 * compared to the arc4random api albeit a fallback to /dev/urandom is considered.
  105|       |	 */
  106|     20|	while (read_bytes < size) {
  ------------------
  |  Branch (106:9): [True: 10, False: 10]
  ------------------
  107|       |		/* Below, (bytes + read_bytes)  is pointer arithmetic.
  108|       |
  109|       |		   bytes   read_bytes  size
  110|       |		     |      |           |
  111|       |		    [#######=============] (we're going to write over the = region)
  112|       |		             \\\\\\\\\\\\\
  113|       |		              amount_to_read
  114|       |		*/
  115|     10|		size_t amount_to_read = size - read_bytes;
  116|     10|		ssize_t n;
  117|       |
  118|     10|		errno = 0;
  119|     10|#  if defined(__linux__)
  120|     10|		n = syscall(SYS_getrandom, bytes + read_bytes, amount_to_read, 0);
  121|       |#  else
  122|       |		n = getrandom(bytes + read_bytes, amount_to_read, 0);
  123|       |#  endif
  124|       |
  125|     10|		if (n == -1) {
  ------------------
  |  Branch (125:7): [True: 0, False: 10]
  ------------------
  126|      0|			if (errno == ENOSYS) {
  ------------------
  |  Branch (126:8): [True: 0, False: 0]
  ------------------
  127|       |				/* This can happen if PHP was compiled against a newer kernel where getrandom()
  128|       |				 * is available, but then runs on an older kernel without getrandom(). If this
  129|       |				 * happens we simply fall back to reading from /dev/urandom. */
  130|      0|				ZEND_ASSERT(read_bytes == 0);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (130:5): [True: 0, False: 0]
  |  Branch (130:5): [True: 0, False: 0]
  ------------------
  131|      0|				break;
  132|      0|			} else if (errno == EINTR || errno == EAGAIN) {
  ------------------
  |  Branch (132:15): [True: 0, False: 0]
  |  Branch (132:33): [True: 0, False: 0]
  ------------------
  133|       |				/* Try again */
  134|      0|				continue;
  135|      0|			} else {
  136|       |				/* If the syscall fails, fall back to reading from /dev/urandom */
  137|      0|				break;
  138|      0|			}
  139|      0|		}
  140|       |
  141|       |#  if __has_feature(memory_sanitizer)
  142|       |		/* MSan does not instrument manual syscall invocations. */
  143|       |		__msan_unpoison(bytes + read_bytes, n);
  144|       |#  endif
  145|     10|		read_bytes += (size_t) n;
  146|     10|	}
  147|     10|# endif
  148|     10|	if (read_bytes < size) {
  ------------------
  |  Branch (148:6): [True: 0, False: 10]
  ------------------
  149|      0|		int    fd = zend_atomic_int_load_ex(&random_fd);
  150|      0|		struct stat st;
  151|       |
  152|      0|		if (fd < 0) {
  ------------------
  |  Branch (152:7): [True: 0, False: 0]
  ------------------
  153|      0|			errno = 0;
  154|      0|			fd = open("/dev/urandom", O_RDONLY);
  155|      0|			if (fd < 0) {
  ------------------
  |  Branch (155:8): [True: 0, False: 0]
  ------------------
  156|      0|				if (errno != 0) {
  ------------------
  |  Branch (156:9): [True: 0, False: 0]
  ------------------
  157|      0|					snprintf(errstr, errstr_size, "Cannot open /dev/urandom: %s", strerror(errno));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  158|      0|				} else {
  159|      0|					snprintf(errstr, errstr_size, "Cannot open /dev/urandom");
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  160|      0|				}
  161|      0|				return FAILURE;
  162|      0|			}
  163|       |
  164|      0|			errno = 0;
  165|       |			/* Does the file exist and is it a character device? */
  166|      0|			if (fstat(fd, &st) != 0 ||
  ------------------
  |  Branch (166:8): [True: 0, False: 0]
  ------------------
  167|       |# ifdef S_ISNAM
  168|       |					!(S_ISNAM(st.st_mode) || S_ISCHR(st.st_mode))
  169|       |# else
  170|      0|					!S_ISCHR(st.st_mode)
  ------------------
  |  Branch (170:6): [True: 0, False: 0]
  ------------------
  171|      0|# endif
  172|      0|			) {
  173|      0|				close(fd);
  174|      0|				if (errno != 0) {
  ------------------
  |  Branch (174:9): [True: 0, False: 0]
  ------------------
  175|      0|					snprintf(errstr, errstr_size, "Error reading from /dev/urandom: %s", strerror(errno));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  176|      0|				} else {
  177|      0|					snprintf(errstr, errstr_size, "Error reading from /dev/urandom");
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  178|      0|				}
  179|      0|				return FAILURE;
  180|      0|			}
  181|      0|			int expected = -1;
  182|      0|			if (!zend_atomic_int_compare_exchange_ex(&random_fd, &expected, fd)) {
  ------------------
  |  Branch (182:8): [True: 0, False: 0]
  ------------------
  183|      0|				close(fd);
  184|       |				/* expected is now the actual value of random_fd */
  185|      0|				fd = expected;
  186|      0|			}
  187|      0|		}
  188|       |
  189|      0|		read_bytes = 0;
  190|      0|		while (read_bytes < size) {
  ------------------
  |  Branch (190:10): [True: 0, False: 0]
  ------------------
  191|      0|			errno = 0;
  192|      0|			ssize_t n = read(fd, bytes + read_bytes, size - read_bytes);
  193|       |
  194|      0|			if (n <= 0) {
  ------------------
  |  Branch (194:8): [True: 0, False: 0]
  ------------------
  195|      0|				if (errno != 0) {
  ------------------
  |  Branch (195:9): [True: 0, False: 0]
  ------------------
  196|      0|					snprintf(errstr, errstr_size, "Could not gather sufficient random data: %s", strerror(errno));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  197|      0|				} else {
  198|      0|					snprintf(errstr, errstr_size, "Could not gather sufficient random data");
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  199|      0|				}
  200|      0|				return FAILURE;
  201|      0|			}
  202|       |
  203|      0|			read_bytes += (size_t) n;
  204|      0|		}
  205|      0|	}
  206|     10|#endif
  207|       |
  208|     10|	return SUCCESS;
  209|     10|}
php_random_bytes:
  212|     10|{
  213|     10|	char errstr[128];
  214|     10|	zend_result result = php_random_bytes_ex(bytes, size, errstr, sizeof(errstr));
  215|       |
  216|     10|	if (result == FAILURE && should_throw) {
  ------------------
  |  Branch (216:6): [True: 0, False: 10]
  |  Branch (216:27): [True: 0, False: 0]
  ------------------
  217|      0|		zend_throw_exception(random_ce_Random_RandomException, errstr, 0);
  218|      0|	}
  219|       |
  220|     10|	return result;
  221|     10|}
php_random_int:
  224|      2|{
  225|      2|	zend_ulong umax;
  226|      2|	zend_ulong trial;
  227|       |
  228|      2|	if (min == max) {
  ------------------
  |  Branch (228:6): [True: 0, False: 2]
  ------------------
  229|      0|		*result = min;
  230|      0|		return SUCCESS;
  231|      0|	}
  232|       |
  233|      2|	umax = (zend_ulong) max - (zend_ulong) min;
  234|       |
  235|      2|	if (php_random_bytes(&trial, sizeof(trial), should_throw) == FAILURE) {
  ------------------
  |  Branch (235:6): [True: 0, False: 2]
  ------------------
  236|      0|		return FAILURE;
  237|      0|	}
  238|       |
  239|       |	/* Special case where no modulus is required */
  240|      2|	if (umax == ZEND_ULONG_MAX) {
  ------------------
  |  |   36|      2|# define ZEND_ULONG_MAX UINT64_MAX
  ------------------
  |  Branch (240:6): [True: 0, False: 2]
  ------------------
  241|      0|		*result = (zend_long)trial;
  242|      0|		return SUCCESS;
  243|      0|	}
  244|       |
  245|       |	/* Increment the max so the range is inclusive of max */
  246|      2|	umax++;
  247|       |
  248|       |	/* Powers of two are not biased */
  249|      2|	if ((umax & (umax - 1)) != 0) {
  ------------------
  |  Branch (249:6): [True: 0, False: 2]
  ------------------
  250|       |		/* Ceiling under which ZEND_LONG_MAX % max == 0 */
  251|      0|		zend_ulong limit = ZEND_ULONG_MAX - (ZEND_ULONG_MAX % umax) - 1;
  ------------------
  |  |   36|      0|# define ZEND_ULONG_MAX UINT64_MAX
  ------------------
              		zend_ulong limit = ZEND_ULONG_MAX - (ZEND_ULONG_MAX % umax) - 1;
  ------------------
  |  |   36|      0|# define ZEND_ULONG_MAX UINT64_MAX
  ------------------
  252|       |
  253|       |		/* Discard numbers over the limit to avoid modulo bias */
  254|      0|		while (trial > limit) {
  ------------------
  |  Branch (254:10): [True: 0, False: 0]
  ------------------
  255|      0|			if (php_random_bytes(&trial, sizeof(trial), should_throw) == FAILURE) {
  ------------------
  |  Branch (255:8): [True: 0, False: 0]
  ------------------
  256|      0|				return FAILURE;
  257|      0|			}
  258|      0|		}
  259|      0|	}
  260|       |
  261|      2|	*result = (zend_long)((trial % umax) + min);
  262|      2|	return SUCCESS;
  263|      2|}

php_random_mt19937_seed32:
  127|      4|{
  128|      4|	uint32_t i, prev_state;
  129|       |
  130|       |	/* Initialize generator state with seed
  131|       |	   See Knuth TAOCP Vol 2, 3rd Ed, p.106 for multiplier.
  132|       |	   In previous versions, most significant bits (MSBs) of the seed affect
  133|       |	   only MSBs of the state array.  Modified 9 Jan 2002 by Makoto Matsumoto. */
  134|      4|	state->state[0] = seed;
  135|  2.49k|	for (i = 1; i < N; i++) {
  ------------------
  |  |   87|  2.49k|#define N             624                 /* length of state vector */
  ------------------
  |  Branch (135:14): [True: 2.49k, False: 4]
  ------------------
  136|  2.49k|		prev_state = state->state[i - 1];
  137|  2.49k|		state->state[i] = (1812433253U * (prev_state  ^ (prev_state  >> 30)) + i) & 0xffffffffU;
  138|  2.49k|	}
  139|      4|	state->count = i;
  140|       |
  141|      4|	mt19937_reload(state);
  142|      4|}
php_random_mt19937_seed_default:
  239|      2|{
  240|      2|	uint32_t seed = 0;
  241|       |
  242|      2|	if (php_random_bytes_silent(&seed, sizeof(seed)) == FAILURE) {
  ------------------
  |  Branch (242:6): [True: 0, False: 2]
  ------------------
  243|      0|		seed = (uint32_t)php_random_generate_fallback_seed();
  244|      0|	}
  245|       |
  246|      2|	php_random_mt19937_seed32(state, seed);
  247|      2|}
zim_Random_Engine_Mt19937___construct:
  252|      2|{
  253|      2|	php_random_algo_with_state engine = Z_RANDOM_ENGINE_P(ZEND_THIS)->engine;
  ------------------
  |  |  131|      2|# define Z_RANDOM_ENGINE_P(zval) php_random_engine_from_obj(Z_OBJ_P(zval))
  |  |  ------------------
  |  |  |  |  128|      2|#define php_random_engine_from_obj(object) ZEND_CONTAINER_OF(object, php_random_engine, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  254|      2|	php_random_status_state_mt19937 *state = engine.state;
  255|      2|	zend_long seed, mode = MT_RAND_MT19937;
  256|      2|	bool seed_is_null = true;
  257|       |
  258|      6|	ZEND_PARSE_PARAMETERS_START(0, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|      6|		Z_PARAM_OPTIONAL;
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  260|      6|		Z_PARAM_LONG_OR_NULL(seed, seed_is_null);
  ------------------
  |  | 1908|      2|	Z_PARAM_LONG_EX(dest, is_null, 1, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (260:3): [True: 2, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 0, False: 2]
  |  Branch (260:3): [True: 2, False: 0]
  |  Branch (260:3): [True: 2, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 2, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  ------------------
  261|      0|		Z_PARAM_LONG(mode);
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  |  Branch (261:3): [True: 0, False: 0]
  ------------------
  262|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (262:2): [True: 0, False: 0]
  |  Branch (262:2): [True: 0, False: 0]
  |  Branch (262:2): [True: 0, False: 0]
  |  Branch (262:2): [True: 0, False: 0]
  ------------------
  263|       |
  264|      2|	switch (mode) {
  265|      2|		case MT_RAND_MT19937:
  ------------------
  |  Branch (265:3): [True: 2, False: 0]
  ------------------
  266|      2|			state->mode = MT_RAND_MT19937;
  267|      2|			break;
  268|      0|		case MT_RAND_PHP:
  ------------------
  |  Branch (268:3): [True: 0, False: 2]
  ------------------
  269|      0|			zend_error(E_DEPRECATED, "The MT_RAND_PHP variant of Mt19937 is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  270|      0|			state->mode = MT_RAND_PHP;
  271|      0|			break;
  272|      0|		default:
  ------------------
  |  Branch (272:3): [True: 0, False: 2]
  ------------------
  273|      0|			zend_argument_value_error(2, "must be either MT_RAND_MT19937 or MT_RAND_PHP");
  274|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (274:4): [True: 0, False: 0]
  |  Branch (274:4): [True: 0, False: 0]
  ------------------
  275|      2|	}
  276|       |
  277|      2|	if (seed_is_null) {
  ------------------
  |  Branch (277:6): [True: 2, False: 0]
  ------------------
  278|       |		/* MT19937 has a very large state, uses CSPRNG for seeding only */
  279|      2|		if (php_random_bytes_throw(&seed, sizeof(seed)) == FAILURE) {
  ------------------
  |  Branch (279:7): [True: 0, False: 2]
  ------------------
  280|      0|			zend_throw_exception(random_ce_Random_RandomException, "Failed to generate a random seed", 0);
  281|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (281:4): [True: 0, False: 0]
  |  Branch (281:4): [True: 0, False: 0]
  ------------------
  282|      0|		}
  283|      2|	}
  284|       |
  285|      2|	php_random_mt19937_seed32(state, seed);
  286|      2|}
engine_mt19937.c:mt19937_reload:
  102|      4|{
  103|      4|	uint32_t *p = state->state;
  104|       |
  105|      4|	if (state->mode == MT_RAND_MT19937) {
  ------------------
  |  Branch (105:6): [True: 4, False: 0]
  ------------------
  106|    912|		for (uint32_t i = N - M; i--; ++p) {
  ------------------
  |  |   87|      4|#define N             624                 /* length of state vector */
  ------------------
              		for (uint32_t i = N - M; i--; ++p) {
  ------------------
  |  |   92|      4|#define M             (397)                /* a period parameter */
  ------------------
  |  Branch (106:28): [True: 908, False: 4]
  ------------------
  107|    908|			*p = twist(p[M], p[0], p[1]);
  ------------------
  |  |   98|    908|#define twist(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   96|    908|#define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   93|    908|#define hiBit(u)      ((u) & 0x80000000U)  /* mask all but highest   bit of u */
  |  |  |  |  ------------------
  |  |  |  |               #define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|    908|#define loBits(u)     ((u) & 0x7FFFFFFFU)  /* mask     the highest   bit of u */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define twist(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   94|    908|#define loBit(u)      ((u) & 0x00000001U)  /* mask all but lowest    bit of u */
  |  |  ------------------
  ------------------
  108|    908|		}
  109|  1.58k|		for (uint32_t i = M; --i; ++p) {
  ------------------
  |  |   92|      4|#define M             (397)                /* a period parameter */
  ------------------
  |  Branch (109:24): [True: 1.58k, False: 4]
  ------------------
  110|  1.58k|			*p = twist(p[M-N], p[0], p[1]);
  ------------------
  |  |   98|  1.58k|#define twist(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   96|  1.58k|#define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   93|  1.58k|#define hiBit(u)      ((u) & 0x80000000U)  /* mask all but highest   bit of u */
  |  |  |  |  ------------------
  |  |  |  |               #define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  1.58k|#define loBits(u)     ((u) & 0x7FFFFFFFU)  /* mask     the highest   bit of u */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define twist(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   94|  1.58k|#define loBit(u)      ((u) & 0x00000001U)  /* mask all but lowest    bit of u */
  |  |  ------------------
  ------------------
  111|  1.58k|		}
  112|      4|		*p = twist(p[M-N], p[0], state->state[0]);
  ------------------
  |  |   98|      4|#define twist(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   96|      4|#define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      4|#define hiBit(u)      ((u) & 0x80000000U)  /* mask all but highest   bit of u */
  |  |  |  |  ------------------
  |  |  |  |               #define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|      4|#define loBits(u)     ((u) & 0x7FFFFFFFU)  /* mask     the highest   bit of u */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define twist(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(v))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   94|      4|#define loBit(u)      ((u) & 0x00000001U)  /* mask all but lowest    bit of u */
  |  |  ------------------
  ------------------
  113|      4|	} else {
  114|      0|		for (uint32_t i = N - M; i--; ++p) {
  ------------------
  |  |   87|      0|#define N             624                 /* length of state vector */
  ------------------
              		for (uint32_t i = N - M; i--; ++p) {
  ------------------
  |  |   92|      0|#define M             (397)                /* a period parameter */
  ------------------
  |  Branch (114:28): [True: 0, False: 0]
  ------------------
  115|      0|			*p = twist_php(p[M], p[0], p[1]);
  ------------------
  |  |   99|      0|#define twist_php(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   96|      0|#define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|#define hiBit(u)      ((u) & 0x80000000U)  /* mask all but highest   bit of u */
  |  |  |  |  ------------------
  |  |  |  |               #define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|      0|#define loBits(u)     ((u) & 0x7FFFFFFFU)  /* mask     the highest   bit of u */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define twist_php(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   94|      0|#define loBit(u)      ((u) & 0x00000001U)  /* mask all but lowest    bit of u */
  |  |  ------------------
  ------------------
  116|      0|		}
  117|      0|		for (uint32_t i = M; --i; ++p) {
  ------------------
  |  |   92|      0|#define M             (397)                /* a period parameter */
  ------------------
  |  Branch (117:24): [True: 0, False: 0]
  ------------------
  118|      0|			*p = twist_php(p[M-N], p[0], p[1]);
  ------------------
  |  |   99|      0|#define twist_php(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   96|      0|#define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|#define hiBit(u)      ((u) & 0x80000000U)  /* mask all but highest   bit of u */
  |  |  |  |  ------------------
  |  |  |  |               #define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|      0|#define loBits(u)     ((u) & 0x7FFFFFFFU)  /* mask     the highest   bit of u */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define twist_php(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   94|      0|#define loBit(u)      ((u) & 0x00000001U)  /* mask all but lowest    bit of u */
  |  |  ------------------
  ------------------
  119|      0|		}
  120|      0|		*p = twist_php(p[M-N], p[0], state->state[0]);
  ------------------
  |  |   99|      0|#define twist_php(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   96|      0|#define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|#define hiBit(u)      ((u) & 0x80000000U)  /* mask all but highest   bit of u */
  |  |  |  |  ------------------
  |  |  |  |               #define mixBits(u, v) (hiBit(u) | loBits(v)) /* move hi bit of u to hi bit of v */
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|      0|#define loBits(u)     ((u) & 0x7FFFFFFFU)  /* mask     the highest   bit of u */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define twist_php(m,u,v)  (m ^ (mixBits(u,v) >> 1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU))
  |  |  ------------------
  |  |  |  |   94|      0|#define loBit(u)      ((u) & 0x00000001U)  /* mask all but lowest    bit of u */
  |  |  ------------------
  ------------------
  121|      0|	}
  122|       |
  123|      4|	state->count = 0;
  124|      4|}
engine_mt19937.c:generate:
  145|      3|{
  146|      3|	php_random_status_state_mt19937 *s = state;
  147|      3|	uint32_t s1;
  148|       |
  149|      3|	if (s->count >= N) {
  ------------------
  |  |   87|      3|#define N             624                 /* length of state vector */
  ------------------
  |  Branch (149:6): [True: 0, False: 3]
  ------------------
  150|      0|		mt19937_reload(s);
  151|      0|	}
  152|       |
  153|      3|	s1 = s->state[s->count++];
  154|      3|	s1 ^= (s1 >> 11);
  155|      3|	s1 ^= (s1 << 7) & 0x9d2c5680U;
  156|      3|	s1 ^= (s1 << 15) & 0xefc60000U;
  157|       |
  158|      3|	return (php_random_result){
  159|      3|		.size = sizeof(uint32_t),
  160|      3|		.result = (uint64_t) (s1 ^ (s1 >> 18)),
  161|      3|	};
  162|      3|}
engine_mt19937.c:range:
  165|      3|{
  166|      3|	return php_random_range((php_random_algo_with_state){
  167|      3|		.algo = &php_random_algo_mt19937,
  168|      3|		.state = state,
  169|      3|	}, min, max);
  170|      3|}

php_random_pcgoneseq128xslrr64_seed128:
   37|      2|{
   38|      2|	s->state = php_random_uint128_constant(0ULL, 0ULL);
   39|      2|	step(s);
   40|      2|	s->state = php_random_uint128_add(s->state, seed);
   41|      2|	step(s);
   42|      2|}
zim_Random_Engine_PcgOneseq128XslRr64___construct:
  139|      2|{
  140|      2|	php_random_algo_with_state engine = Z_RANDOM_ENGINE_P(ZEND_THIS)->engine;
  ------------------
  |  |  131|      2|# define Z_RANDOM_ENGINE_P(zval) php_random_engine_from_obj(Z_OBJ_P(zval))
  |  |  ------------------
  |  |  |  |  128|      2|#define php_random_engine_from_obj(object) ZEND_CONTAINER_OF(object, php_random_engine, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|      2|	php_random_status_state_pcgoneseq128xslrr64 *state = engine.state;
  142|      2|	zend_string *str_seed = NULL;
  143|      2|	zend_long int_seed = 0;
  144|      2|	bool seed_is_null = true;
  145|       |
  146|      6|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  147|      6|		Z_PARAM_OPTIONAL;
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  148|      6|		Z_PARAM_STR_OR_LONG_OR_NULL(str_seed, int_seed, seed_is_null);
  ------------------
  |  | 2184|      2|	Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, is_null, 1);
  |  |  ------------------
  |  |  |  | 2173|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2174|      0|	if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2175|      0|		_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2175:20): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2176|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2177|      0|		break; \
  |  |  |  | 2178|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (148:3): [True: 2, False: 0]
  |  Branch (148:3): [True: 0, False: 0]
  |  Branch (148:3): [True: 0, False: 2]
  |  Branch (148:3): [True: 2, False: 0]
  |  Branch (148:3): [True: 2, False: 0]
  |  Branch (148:3): [True: 0, False: 0]
  |  Branch (148:3): [True: 2, False: 0]
  |  Branch (148:3): [True: 0, False: 0]
  |  Branch (148:3): [True: 0, False: 0]
  |  Branch (148:3): [True: 0, False: 0]
  ------------------
  149|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (149:2): [True: 0, False: 0]
  |  Branch (149:2): [True: 0, False: 0]
  |  Branch (149:2): [True: 0, False: 0]
  |  Branch (149:2): [True: 0, False: 0]
  ------------------
  150|       |
  151|      2|	if (seed_is_null) {
  ------------------
  |  Branch (151:6): [True: 2, False: 0]
  ------------------
  152|      2|		php_random_uint128_t s;
  153|       |
  154|      2|		if (php_random_bytes_throw(&s, sizeof(s)) == FAILURE) {
  ------------------
  |  Branch (154:7): [True: 0, False: 2]
  ------------------
  155|      0|			zend_throw_exception(random_ce_Random_RandomException, "Failed to generate a random seed", 0);
  156|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (156:4): [True: 0, False: 0]
  |  Branch (156:4): [True: 0, False: 0]
  ------------------
  157|      0|		}
  158|       |
  159|      2|		php_random_pcgoneseq128xslrr64_seed128(state, s);
  160|      2|	} else {
  161|      0|		if (str_seed) {
  ------------------
  |  Branch (161:7): [True: 0, False: 0]
  ------------------
  162|       |			/* char (byte: 8 bit) * 16 = 128 bits */
  163|      0|			if (ZSTR_LEN(str_seed) == 16) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (163:8): [True: 0, False: 0]
  ------------------
  164|      0|				uint64_t t[2];
  165|       |
  166|       |				/* Endianness safe copy */
  167|      0|				for (uint32_t i = 0; i < 2; i++) {
  ------------------
  |  Branch (167:26): [True: 0, False: 0]
  ------------------
  168|      0|					t[i] = 0;
  169|      0|					for (uint32_t j = 0; j < 8; j++) {
  ------------------
  |  Branch (169:27): [True: 0, False: 0]
  ------------------
  170|      0|						t[i] += ((uint64_t) (unsigned char) ZSTR_VAL(str_seed)[(i * 8) + j]) << (j * 8);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  171|      0|					}
  172|      0|				}
  173|       |
  174|      0|				php_random_pcgoneseq128xslrr64_seed128(state, php_random_uint128_constant(t[0], t[1]));
  175|      0|			} else {
  176|      0|				zend_argument_value_error(1, "must be a 16 byte (128 bit) string");
  177|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (177:5): [True: 0, False: 0]
  |  Branch (177:5): [True: 0, False: 0]
  ------------------
  178|      0|			}
  179|      0|		} else {
  180|      0|			php_random_pcgoneseq128xslrr64_seed128(state, php_random_uint128_constant(0ULL, (uint64_t) int_seed));
  181|      0|		}
  182|      0|	}
  183|      2|}
engine_pcgoneseq128xslrr64.c:step:
   29|      4|{
   30|      4|	s->state = php_random_uint128_add(
   31|      4|		php_random_uint128_multiply(s->state, php_random_uint128_constant(2549297995355413924ULL,4865540595714422341ULL)),
   32|      4|		php_random_uint128_constant(6364136223846793005ULL,1442695040888963407ULL)
   33|      4|	);
   34|      4|}

php_random_xoshiro256starstar_seed256:
   84|      2|{
   85|      2|	state->state[0] = s0;
   86|      2|	state->state[1] = s1;
   87|      2|	state->state[2] = s2;
   88|      2|	state->state[3] = s3;
   89|      2|}
zim_Random_Engine_Xoshiro256StarStar___construct:
  205|      2|{
  206|      2|	php_random_algo_with_state engine = Z_RANDOM_ENGINE_P(ZEND_THIS)->engine;
  ------------------
  |  |  131|      2|# define Z_RANDOM_ENGINE_P(zval) php_random_engine_from_obj(Z_OBJ_P(zval))
  |  |  ------------------
  |  |  |  |  128|      2|#define php_random_engine_from_obj(object) ZEND_CONTAINER_OF(object, php_random_engine, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|      2|	php_random_status_state_xoshiro256starstar *state = engine.state;
  208|      2|	zend_string *str_seed = NULL;
  209|      2|	zend_long int_seed = 0;
  210|      2|	bool seed_is_null = true;
  211|       |
  212|      6|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|      6|		Z_PARAM_OPTIONAL;
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  214|      6|		Z_PARAM_STR_OR_LONG_OR_NULL(str_seed, int_seed, seed_is_null);
  ------------------
  |  | 2184|      2|	Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, is_null, 1);
  |  |  ------------------
  |  |  |  | 2173|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2174|      0|	if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2175|      0|		_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2175:20): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2176|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2177|      0|		break; \
  |  |  |  | 2178|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (214:3): [True: 2, False: 0]
  |  Branch (214:3): [True: 0, False: 0]
  |  Branch (214:3): [True: 0, False: 2]
  |  Branch (214:3): [True: 2, False: 0]
  |  Branch (214:3): [True: 2, False: 0]
  |  Branch (214:3): [True: 0, False: 0]
  |  Branch (214:3): [True: 2, False: 0]
  |  Branch (214:3): [True: 0, False: 0]
  |  Branch (214:3): [True: 0, False: 0]
  |  Branch (214:3): [True: 0, False: 0]
  ------------------
  215|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (215:2): [True: 0, False: 0]
  |  Branch (215:2): [True: 0, False: 0]
  |  Branch (215:2): [True: 0, False: 0]
  |  Branch (215:2): [True: 0, False: 0]
  ------------------
  216|       |
  217|      2|	if (seed_is_null) {
  ------------------
  |  Branch (217:6): [True: 2, False: 0]
  ------------------
  218|      2|		uint64_t t[4];
  219|       |
  220|      2|		do {
  221|      2|			if (php_random_bytes_throw(&t, sizeof(t)) == FAILURE) {
  ------------------
  |  Branch (221:8): [True: 0, False: 2]
  ------------------
  222|      0|				zend_throw_exception(random_ce_Random_RandomException, "Failed to generate a random seed", 0);
  223|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (223:5): [True: 0, False: 0]
  |  Branch (223:5): [True: 0, False: 0]
  ------------------
  224|      0|			}
  225|      2|		} while (UNEXPECTED(t[0] == 0 && t[1] == 0 && t[2] == 0 && t[3] == 0));
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  226|       |
  227|      2|		php_random_xoshiro256starstar_seed256(state, t[0], t[1], t[2], t[3]);
  228|      2|	} else {
  229|      0|		if (str_seed) {
  ------------------
  |  Branch (229:7): [True: 0, False: 0]
  ------------------
  230|       |			/* char (byte: 8 bit) * 32 = 256 bits */
  231|      0|			if (ZSTR_LEN(str_seed) == 32) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (231:8): [True: 0, False: 0]
  ------------------
  232|      0|				uint64_t t[4];
  233|       |
  234|       |				/* Endianness safe copy */
  235|      0|				for (uint32_t i = 0; i < 4; i++) {
  ------------------
  |  Branch (235:26): [True: 0, False: 0]
  ------------------
  236|      0|					t[i] = 0;
  237|      0|					for (uint32_t j = 0; j < 8; j++) {
  ------------------
  |  Branch (237:27): [True: 0, False: 0]
  ------------------
  238|      0|						t[i] += ((uint64_t) (unsigned char) ZSTR_VAL(str_seed)[(i * 8) + j]) << (j * 8);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  239|      0|					}
  240|      0|				}
  241|       |
  242|      0|				if (UNEXPECTED(t[0] == 0 && t[1] == 0 && t[2] == 0 && t[3] == 0)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  243|      0|					zend_argument_value_error(1, "must not consist entirely of NUL bytes");
  244|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (244:6): [True: 0, False: 0]
  |  Branch (244:6): [True: 0, False: 0]
  ------------------
  245|      0|				}
  246|       |
  247|      0|				php_random_xoshiro256starstar_seed256(state, t[0], t[1], t[2], t[3]);
  248|      0|			} else {
  249|      0|				zend_argument_value_error(1, "must be a 32 byte (256 bit) string");
  250|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (250:5): [True: 0, False: 0]
  |  Branch (250:5): [True: 0, False: 0]
  ------------------
  251|      0|			}
  252|      0|		} else {
  253|      0|			php_random_xoshiro256starstar_seed64(state, (uint64_t) int_seed);
  254|      0|		}
  255|      0|	}
  256|      2|}

engine_mt19937.c:php_random_bytes_silent:
   32|      2|{
   33|       |	return php_random_bytes(bytes, size, false);
   34|      2|}
engine_mt19937.c:php_random_bytes_throw:
   27|      2|{
   28|       |	return php_random_bytes(bytes, size, true);
   29|      2|}
engine_pcgoneseq128xslrr64.c:php_random_bytes_throw:
   27|      2|{
   28|       |	return php_random_bytes(bytes, size, true);
   29|      2|}
engine_xoshiro256starstar.c:php_random_bytes_throw:
   27|      2|{
   28|       |	return php_random_bytes(bytes, size, true);
   29|      2|}
random.c:php_random_int_throw:
   37|      2|{
   38|       |	return php_random_int(min, max, result, true);
   39|      2|}

engine_pcgoneseq128xslrr64.c:php_random_uint128_constant:
   98|     10|{
   99|     10|	php_random_uint128_t r;
  100|       |
  101|     10|	r = ((php_random_uint128_t) hi << 64) + lo;
  102|       |
  103|     10|	return r;
  104|     10|}
engine_pcgoneseq128xslrr64.c:php_random_uint128_add:
  107|      6|{
  108|      6|	return num1 + num2;
  109|      6|}
engine_pcgoneseq128xslrr64.c:php_random_uint128_multiply:
  112|      4|{
  113|      4|	return num1 * num2;
  114|      4|}

php_random_range32:
   79|      3|{
   80|      3|	const php_random_algo *algo = engine.algo;
   81|      3|	void *state = engine.state;
   82|       |
   83|      3|	uint32_t result;
   84|      3|	size_t total_size;
   85|       |
   86|      3|	result = 0;
   87|      3|	total_size = 0;
   88|      3|	do {
   89|      3|		php_random_result r = algo->generate(state);
   90|      3|		result = result | (((uint32_t) r.result) << (total_size * 8));
   91|      3|		total_size += r.size;
   92|      3|		if (EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 3]
  |  |  ------------------
  ------------------
   93|      0|			return 0;
   94|      0|		}
   95|      3|	} while (total_size < sizeof(uint32_t));
  ------------------
  |  Branch (95:11): [True: 0, False: 3]
  ------------------
   96|       |
   97|       |	/* Special case where no modulus is required */
   98|      3|	if (UNEXPECTED(umax == UINT32_MAX)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
   99|      0|		return result;
  100|      0|	}
  101|       |
  102|       |	/* Increment the max so range is inclusive of max */
  103|      3|	umax++;
  104|       |
  105|       |	/* Powers of two are not biased */
  106|      3|	if ((umax & (umax - 1)) == 0) {
  ------------------
  |  Branch (106:6): [True: 3, False: 0]
  ------------------
  107|      3|		return result & (umax - 1);
  108|      3|	}
  109|       |
  110|       |	/* Ceiling under which UINT32_MAX % max == 0 */
  111|      0|	uint32_t limit = UINT32_MAX - (UINT32_MAX % umax) - 1;
  112|       |
  113|       |	/* Discard numbers over the limit to avoid modulo bias */
  114|      0|	uint32_t count = 0;
  115|      0|	while (UNEXPECTED(result > limit)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  116|       |		/* If the requirements cannot be met in a cycles, return fail */
  117|      0|		if (++count > PHP_RANDOM_RANGE_ATTEMPTS) {
  ------------------
  |  |   46|      0|#define PHP_RANDOM_RANGE_ATTEMPTS (50)
  ------------------
  |  Branch (117:7): [True: 0, False: 0]
  ------------------
  118|      0|			zend_throw_error(random_ce_Random_BrokenRandomEngineError, "Failed to generate an acceptable random number in %d attempts", PHP_RANDOM_RANGE_ATTEMPTS);
  ------------------
  |  |   46|      0|#define PHP_RANDOM_RANGE_ATTEMPTS (50)
  ------------------
  119|      0|			return 0;
  120|      0|		}
  121|       |
  122|      0|		result = 0;
  123|      0|		total_size = 0;
  124|      0|		do {
  125|      0|			php_random_result r = algo->generate(state);
  126|      0|			result = result | (((uint32_t) r.result) << (total_size * 8));
  127|      0|			total_size += r.size;
  128|      0|			if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  129|      0|				return 0;
  130|      0|			}
  131|      0|		} while (total_size < sizeof(uint32_t));
  ------------------
  |  Branch (131:12): [True: 0, False: 0]
  ------------------
  132|      0|	}
  133|       |
  134|      0|	return result % umax;
  135|      0|}
php_random_status_alloc:
  237|     10|{
  238|     10|	return algo->state_size > 0 ? pecalloc(1, algo->state_size, persistent) : NULL;
  ------------------
  |  |  199|      6|#define pecalloc(nmemb, size, persistent) ((persistent)?__zend_calloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):ecalloc((nmemb), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pecalloc(nmemb, size, persistent) ((persistent)?__zend_calloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):ecalloc((nmemb), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pecalloc(nmemb, size, persistent) ((persistent)?__zend_calloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):ecalloc((nmemb), (size)))
  |  |  ------------------
  |  |  |  |  157|      6|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (199:44): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (238:9): [True: 6, False: 4]
  ------------------
  239|     10|}
php_random_status_free:
  247|     10|{
  248|       |	pefree(status, persistent);
  ------------------
  |  |  190|     10|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 10]
  |  |  ------------------
  ------------------
  249|     10|}
php_random_engine_common_init:
  252|     10|{
  253|     10|	php_random_engine *engine = zend_object_alloc(sizeof(php_random_engine), ce);
  254|       |
  255|     10|	zend_object_std_init(&engine->std, ce);
  256|     10|	object_properties_init(&engine->std, ce);
  257|       |
  258|     10|	engine->engine = (php_random_algo_with_state){
  259|     10|		.algo = algo,
  260|     10|		.state = php_random_status_alloc(algo, false)
  261|     10|	};
  262|       |
  263|     10|	return engine;
  264|     10|}
php_random_engine_common_free_object:
  267|     10|{
  268|     10|	php_random_engine *engine = php_random_engine_from_obj(object);
  ------------------
  |  |  128|     10|#define php_random_engine_from_obj(object) ZEND_CONTAINER_OF(object, php_random_engine, std)
  |  |  ------------------
  |  |  |  |  407|     10|	_Generic( \
  |  |  |  |  408|     10|		(ptr), \
  |  |  |  |  409|     10|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     10|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     10|	)
  |  |  ------------------
  ------------------
  269|       |
  270|       |	php_random_status_free(engine->engine.state, false);
  271|     10|	zend_object_std_dtor(object);
  272|     10|}
php_random_range:
  291|      3|{
  292|      3|	zend_ulong umax = (zend_ulong) max - (zend_ulong) min;
  293|       |
  294|      3|	if (umax > UINT32_MAX) {
  ------------------
  |  Branch (294:6): [True: 0, False: 3]
  ------------------
  295|      0|		return (zend_long) (php_random_range64(engine, umax) + min);
  296|      0|	}
  297|       |
  298|      3|	return (zend_long) (php_random_range32(engine, umax) + min);
  299|      3|}
php_random_default_status:
  311|      6|{
  312|      6|	php_random_status_state_mt19937 *state = &RANDOM_G(mt19937);
  ------------------
  |  |  199|      6|# define RANDOM_G(v)	ZEND_MODULE_GLOBALS_ACCESSOR(random, v)
  |  |  ------------------
  |  |  |  |  276|      6|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  313|       |
  314|      6|	if (!RANDOM_G(mt19937_seeded)) {
  ------------------
  |  |  199|      6|# define RANDOM_G(v)	ZEND_MODULE_GLOBALS_ACCESSOR(random, v)
  |  |  ------------------
  |  |  |  |  276|      6|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (314:6): [True: 2, False: 4]
  ------------------
  315|      2|		state->mode = MT_RAND_MT19937;
  316|      2|		php_random_mt19937_seed_default(state);
  317|      2|		RANDOM_G(mt19937_seeded) = true;
  ------------------
  |  |  199|      2|# define RANDOM_G(v)	ZEND_MODULE_GLOBALS_ACCESSOR(random, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  318|      2|	}
  319|       |
  320|      6|	return state;
  321|      6|}
php_mt_rand_range:
  453|      3|{
  454|      3|	return php_random_algo_mt19937.range(php_random_default_status(), min, max);
  455|      3|}
php_mt_rand_common:
  461|      3|{
  462|      3|	php_random_status_state_mt19937 *s = php_random_default_status();
  463|       |
  464|      3|	if (s->mode == MT_RAND_MT19937) {
  ------------------
  |  Branch (464:6): [True: 3, False: 0]
  ------------------
  465|      3|		return php_mt_rand_range(min, max);
  466|      3|	}
  467|       |
  468|      0|	uint64_t r = php_random_algo_mt19937.generate(php_random_default_status()).result >> 1;
  469|       |
  470|       |	/* This is an inlined version of the RAND_RANGE_BADSCALING macro that does not invoke UB when encountering
  471|       |	 * (max - min) > ZEND_LONG_MAX.
  472|       |	 */
  473|      0|	zend_ulong offset = (double) ( (double) max - min + 1.0) * (r / (PHP_MT_RAND_MAX + 1.0));
  ------------------
  |  |   39|      0|# define PHP_MT_RAND_MAX ((zend_long) (0x7FFFFFFF)) /* (1<<31) - 1 */
  ------------------
  474|       |
  475|      0|	return (zend_long) (offset + min);
  476|      3|}
zif_mt_rand:
  522|      4|{
  523|      4|	zend_long min, max;
  524|      4|	int argc = ZEND_NUM_ARGS();
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  525|       |
  526|      4|	if (argc == 0) {
  ------------------
  |  Branch (526:6): [True: 0, False: 4]
  ------------------
  527|       |		/* genrand_int31 in mt19937ar.c performs a right shift */
  528|      0|		RETURN_LONG(php_mt_rand() >> 1);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  529|      0|	}
  530|       |
  531|     12|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|     16|		Z_PARAM_LONG(min)
  ------------------
  |  | 1905|      4|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (532:3): [True: 4, False: 0]
  |  Branch (532:3): [True: 0, False: 0]
  |  Branch (532:3): [True: 4, False: 0]
  |  Branch (532:3): [True: 0, False: 0]
  |  Branch (532:3): [True: 4, False: 0]
  |  Branch (532:3): [True: 0, False: 0]
  |  Branch (532:3): [True: 0, False: 4]
  |  Branch (532:3): [True: 4, False: 0]
  |  Branch (532:3): [True: 0, False: 0]
  |  Branch (532:3): [True: 0, False: 0]
  ------------------
  533|     20|		Z_PARAM_LONG(max)
  ------------------
  |  | 1905|      4|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (533:3): [True: 4, False: 0]
  |  Branch (533:3): [True: 0, False: 0]
  |  Branch (533:3): [True: 4, False: 0]
  |  Branch (533:3): [True: 0, False: 0]
  |  Branch (533:3): [True: 4, False: 0]
  |  Branch (533:3): [True: 0, False: 0]
  |  Branch (533:3): [True: 0, False: 4]
  |  Branch (533:3): [True: 4, False: 0]
  |  Branch (533:3): [True: 0, False: 0]
  |  Branch (533:3): [True: 0, False: 0]
  ------------------
  534|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (534:2): [True: 4, False: 0]
  |  Branch (534:2): [True: 0, False: 0]
  |  Branch (534:2): [True: 4, False: 0]
  |  Branch (534:2): [True: 0, False: 0]
  ------------------
  535|       |
  536|      4|	if (UNEXPECTED(max < min)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  537|      1|		zend_argument_value_error(2, "must be greater than or equal to argument #1 ($min)");
  538|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (538:3): [True: 0, False: 1]
  |  Branch (538:3): [True: 1, False: 0]
  ------------------
  539|      1|	}
  540|       |
  541|      3|	RETURN_LONG(php_mt_rand_common(min, max));
  ------------------
  |  | 1048|      3|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      3|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      3|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  542|      3|}
zif_random_int:
  612|      2|{
  613|      2|	zend_long min, max, result;
  614|       |
  615|      6|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|      8|		Z_PARAM_LONG(min)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      2|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (616:3): [True: 2, False: 0]
  |  Branch (616:3): [True: 0, False: 0]
  |  Branch (616:3): [True: 2, False: 0]
  |  Branch (616:3): [True: 0, False: 0]
  |  Branch (616:3): [True: 2, False: 0]
  |  Branch (616:3): [True: 0, False: 0]
  |  Branch (616:3): [True: 0, False: 2]
  |  Branch (616:3): [True: 2, False: 0]
  |  Branch (616:3): [True: 0, False: 0]
  |  Branch (616:3): [True: 0, False: 0]
  ------------------
  617|     10|		Z_PARAM_LONG(max)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      2|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (617:3): [True: 2, False: 0]
  |  Branch (617:3): [True: 0, False: 0]
  |  Branch (617:3): [True: 2, False: 0]
  |  Branch (617:3): [True: 0, False: 0]
  |  Branch (617:3): [True: 2, False: 0]
  |  Branch (617:3): [True: 0, False: 0]
  |  Branch (617:3): [True: 0, False: 2]
  |  Branch (617:3): [True: 2, False: 0]
  |  Branch (617:3): [True: 0, False: 0]
  |  Branch (617:3): [True: 0, False: 0]
  ------------------
  618|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (618:2): [True: 2, False: 0]
  |  Branch (618:2): [True: 0, False: 0]
  |  Branch (618:2): [True: 2, False: 0]
  |  Branch (618:2): [True: 0, False: 0]
  ------------------
  619|       |
  620|      2|	if (min > max) {
  ------------------
  |  Branch (620:6): [True: 0, False: 2]
  ------------------
  621|      0|		zend_argument_value_error(1, "must be less than or equal to argument #2 ($max)");
  622|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (622:3): [True: 0, False: 0]
  |  Branch (622:3): [True: 0, False: 0]
  ------------------
  623|      0|	}
  624|       |
  625|      2|	if (php_random_int_throw(min, max, &result) == FAILURE) {
  ------------------
  |  Branch (625:6): [True: 0, False: 2]
  ------------------
  626|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (626:3): [True: 0, False: 0]
  |  Branch (626:3): [True: 0, False: 0]
  ------------------
  627|      0|	}
  628|       |
  629|      2|	RETURN_LONG(result);
  ------------------
  |  | 1048|      2|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      2|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      2|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  630|      2|}
zm_startup_random:
  727|      2|{
  728|       |	/* Random\Engine */
  729|      2|	random_ce_Random_Engine = register_class_Random_Engine();
  730|       |
  731|       |	/* Random\CryptoSafeEngine */
  732|      2|	random_ce_Random_CryptoSafeEngine = register_class_Random_CryptoSafeEngine(random_ce_Random_Engine);
  733|       |
  734|       |	/* Random\RandomError */
  735|      2|	random_ce_Random_RandomError = register_class_Random_RandomError(zend_ce_error);
  736|       |
  737|       |	/* Random\BrokenRandomEngineError */
  738|      2|	random_ce_Random_BrokenRandomEngineError = register_class_Random_BrokenRandomEngineError(random_ce_Random_RandomError);
  739|       |
  740|       |	/* Random\RandomException */
  741|      2|	random_ce_Random_RandomException = register_class_Random_RandomException(zend_ce_exception);
  742|       |
  743|       |	/* Random\Engine\Mt19937 */
  744|      2|	random_ce_Random_Engine_Mt19937 = register_class_Random_Engine_Mt19937(random_ce_Random_Engine);
  745|      2|	random_ce_Random_Engine_Mt19937->create_object = php_random_engine_mt19937_new;
  746|      2|	random_ce_Random_Engine_Mt19937->default_object_handlers = &random_engine_mt19937_object_handlers;
  747|      2|	memcpy(&random_engine_mt19937_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  748|      2|	random_engine_mt19937_object_handlers.offset = offsetof(php_random_engine, std);
  749|      2|	random_engine_mt19937_object_handlers.free_obj = php_random_engine_common_free_object;
  750|      2|	random_engine_mt19937_object_handlers.clone_obj = php_random_engine_common_clone_object;
  751|       |
  752|       |	/* Random\Engine\PcgOnseq128XslRr64 */
  753|      2|	random_ce_Random_Engine_PcgOneseq128XslRr64 = register_class_Random_Engine_PcgOneseq128XslRr64(random_ce_Random_Engine);
  754|      2|	random_ce_Random_Engine_PcgOneseq128XslRr64->create_object = php_random_engine_pcgoneseq128xslrr64_new;
  755|      2|	random_ce_Random_Engine_PcgOneseq128XslRr64->default_object_handlers = &random_engine_pcgoneseq128xslrr64_object_handlers;
  756|      2|	memcpy(&random_engine_pcgoneseq128xslrr64_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  757|      2|	random_engine_pcgoneseq128xslrr64_object_handlers.offset = offsetof(php_random_engine, std);
  758|      2|	random_engine_pcgoneseq128xslrr64_object_handlers.free_obj = php_random_engine_common_free_object;
  759|      2|	random_engine_pcgoneseq128xslrr64_object_handlers.clone_obj = php_random_engine_common_clone_object;
  760|       |
  761|       |	/* Random\Engine\Xoshiro256StarStar */
  762|      2|	random_ce_Random_Engine_Xoshiro256StarStar = register_class_Random_Engine_Xoshiro256StarStar(random_ce_Random_Engine);
  763|      2|	random_ce_Random_Engine_Xoshiro256StarStar->create_object = php_random_engine_xoshiro256starstar_new;
  764|      2|	random_ce_Random_Engine_Xoshiro256StarStar->default_object_handlers = &random_engine_xoshiro256starstar_object_handlers;
  765|      2|	memcpy(&random_engine_xoshiro256starstar_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  766|      2|	random_engine_xoshiro256starstar_object_handlers.offset = offsetof(php_random_engine, std);
  767|      2|	random_engine_xoshiro256starstar_object_handlers.free_obj = php_random_engine_common_free_object;
  768|      2|	random_engine_xoshiro256starstar_object_handlers.clone_obj = php_random_engine_common_clone_object;
  769|       |
  770|       |	/* Random\Engine\Secure */
  771|      2|	random_ce_Random_Engine_Secure = register_class_Random_Engine_Secure(random_ce_Random_CryptoSafeEngine);
  772|      2|	random_ce_Random_Engine_Secure->create_object = php_random_engine_secure_new;
  773|      2|	random_ce_Random_Engine_Secure->default_object_handlers = &random_engine_secure_object_handlers;
  774|      2|	memcpy(&random_engine_secure_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  775|      2|	random_engine_secure_object_handlers.offset = offsetof(php_random_engine, std);
  776|      2|	random_engine_secure_object_handlers.free_obj = php_random_engine_common_free_object;
  777|      2|	random_engine_secure_object_handlers.clone_obj = NULL;
  778|       |
  779|       |	/* Random\Randomizer */
  780|      2|	random_ce_Random_Randomizer = register_class_Random_Randomizer();
  781|      2|	random_ce_Random_Randomizer->create_object = php_random_randomizer_new;
  782|      2|	random_ce_Random_Randomizer->default_object_handlers = &random_randomizer_object_handlers;
  783|      2|	memcpy(&random_randomizer_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
  784|      2|	random_randomizer_object_handlers.offset = offsetof(php_random_randomizer, std);
  785|      2|	random_randomizer_object_handlers.free_obj = randomizer_free_obj;
  786|      2|	random_randomizer_object_handlers.clone_obj = NULL;
  787|       |
  788|       |	/* Random\IntervalBoundary */
  789|      2|	random_ce_Random_IntervalBoundary = register_class_Random_IntervalBoundary();
  790|       |
  791|      2|	register_random_symbols(module_number);
  792|       |
  793|      2|	return SUCCESS;
  794|      2|}
zm_activate_random:
  808|  33.5k|{
  809|  33.5k|	RANDOM_G(combined_lcg_seeded) = false;
  ------------------
  |  |  199|  33.5k|# define RANDOM_G(v)	ZEND_MODULE_GLOBALS_ACCESSOR(random, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  810|  33.5k|	RANDOM_G(mt19937_seeded) = false;
  ------------------
  |  |  199|  33.5k|# define RANDOM_G(v)	ZEND_MODULE_GLOBALS_ACCESSOR(random, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  811|       |
  812|  33.5k|	return SUCCESS;
  813|  33.5k|}
random.c:php_random_engine_mt19937_new:
  197|      2|{
  198|      2|	return &php_random_engine_common_init(ce, &php_random_algo_mt19937)->std;
  199|      2|}
random.c:php_random_engine_pcgoneseq128xslrr64_new:
  202|      2|{
  203|      2|	return &php_random_engine_common_init(ce, &php_random_algo_pcgoneseq128xslrr64)->std;
  204|      2|}
random.c:php_random_engine_xoshiro256starstar_new:
  207|      2|{
  208|      2|	return &php_random_engine_common_init(ce, &php_random_algo_xoshiro256starstar)->std;
  209|      2|}
random.c:php_random_engine_secure_new:
  212|      4|{
  213|      4|	return &php_random_engine_common_init(ce, &php_random_algo_secure)->std;
  214|      4|}
random.c:php_random_randomizer_new:
  217|      2|{
  218|      2|	php_random_randomizer *randomizer = zend_object_alloc(sizeof(php_random_randomizer), ce);
  219|       |
  220|      2|	zend_object_std_init(&randomizer->std, ce);
  221|      2|	object_properties_init(&randomizer->std, ce);
  222|       |
  223|      2|	return &randomizer->std;
  224|      2|}
random.c:randomizer_free_obj:
  226|      2|static void randomizer_free_obj(zend_object *object) {
  227|      2|	php_random_randomizer *randomizer = php_random_randomizer_from_obj(object);
  ------------------
  |  |  129|      2|#define php_random_randomizer_from_obj(object) ZEND_CONTAINER_OF(object, php_random_randomizer, std)
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
  228|       |
  229|      2|	if (randomizer->is_userland_algo) {
  ------------------
  |  Branch (229:6): [True: 0, False: 2]
  ------------------
  230|      0|		php_random_status_free(randomizer->engine.state, false);
  231|      0|	}
  232|       |
  233|      2|	zend_object_std_dtor(&randomizer->std);
  234|      2|}
random.c:zm_globals_ctor_random:
  720|      2|{
  721|       |	random_globals->fallback_seed_state.initialized = false;
  722|      2|}

random.c:register_class_Random_Engine:
  293|      2|{
  294|      2|	zend_class_entry ce, *class_entry;
  295|       |
  296|      2|	INIT_NS_CLASS_ENTRY(ce, "Random", "Engine", class_Random_Engine_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  297|      2|	class_entry = zend_register_internal_interface(&ce);
  298|       |
  299|      2|	return class_entry;
  300|      2|}
random.c:register_class_Random_CryptoSafeEngine:
  303|      2|{
  304|      2|	zend_class_entry ce, *class_entry;
  305|       |
  306|      2|	INIT_NS_CLASS_ENTRY(ce, "Random", "CryptoSafeEngine", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  307|      2|	class_entry = zend_register_internal_interface(&ce);
  308|      2|	zend_class_implements(class_entry, 1, class_entry_Random_Engine);
  309|       |
  310|      2|	return class_entry;
  311|      2|}
random.c:register_class_Random_RandomError:
  346|      2|{
  347|      2|	zend_class_entry ce, *class_entry;
  348|       |
  349|      2|	INIT_NS_CLASS_ENTRY(ce, "Random", "RandomError", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  350|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  351|       |
  352|      2|	return class_entry;
  353|      2|}
random.c:register_class_Random_BrokenRandomEngineError:
  356|      2|{
  357|      2|	zend_class_entry ce, *class_entry;
  358|       |
  359|      2|	INIT_NS_CLASS_ENTRY(ce, "Random", "BrokenRandomEngineError", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Random_RandomError, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  361|       |
  362|      2|	return class_entry;
  363|      2|}
random.c:register_class_Random_RandomException:
  366|      2|{
  367|      2|	zend_class_entry ce, *class_entry;
  368|       |
  369|      2|	INIT_NS_CLASS_ENTRY(ce, "Random", "RandomException", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  371|       |
  372|      2|	return class_entry;
  373|      2|}
random.c:register_class_Random_Engine_Mt19937:
  249|      2|{
  250|      2|	zend_class_entry ce, *class_entry;
  251|       |
  252|      2|	INIT_NS_CLASS_ENTRY(ce, "Random\\Engine", "Mt19937", class_Random_Engine_Mt19937_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  254|      2|	zend_class_implements(class_entry, 1, class_entry_Random_Engine);
  255|       |
  256|      2|	return class_entry;
  257|      2|}
random.c:register_class_Random_Engine_PcgOneseq128XslRr64:
  260|      2|{
  261|      2|	zend_class_entry ce, *class_entry;
  262|       |
  263|      2|	INIT_NS_CLASS_ENTRY(ce, "Random\\Engine", "PcgOneseq128XslRr64", class_Random_Engine_PcgOneseq128XslRr64_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  265|      2|	zend_class_implements(class_entry, 1, class_entry_Random_Engine);
  266|       |
  267|      2|	return class_entry;
  268|      2|}
random.c:register_class_Random_Engine_Xoshiro256StarStar:
  271|      2|{
  272|      2|	zend_class_entry ce, *class_entry;
  273|       |
  274|      2|	INIT_NS_CLASS_ENTRY(ce, "Random\\Engine", "Xoshiro256StarStar", class_Random_Engine_Xoshiro256StarStar_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  275|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  276|      2|	zend_class_implements(class_entry, 1, class_entry_Random_Engine);
  277|       |
  278|      2|	return class_entry;
  279|      2|}
random.c:register_class_Random_Engine_Secure:
  282|      2|{
  283|      2|	zend_class_entry ce, *class_entry;
  284|       |
  285|      2|	INIT_NS_CLASS_ENTRY(ce, "Random\\Engine", "Secure", class_Random_Engine_Secure_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
  287|      2|	zend_class_implements(class_entry, 1, class_entry_Random_CryptoSafeEngine);
  288|       |
  289|      2|	return class_entry;
  290|      2|}
random.c:register_class_Random_Randomizer:
  314|      2|{
  315|      2|	zend_class_entry ce, *class_entry;
  316|       |
  317|      2|	INIT_NS_CLASS_ENTRY(ce, "Random", "Randomizer", class_Random_Randomizer_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  319|       |
  320|      2|	zval property_engine_default_value;
  321|      2|	ZVAL_UNDEF(&property_engine_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  322|      2|	zend_string *property_engine_name = zend_string_init("engine", sizeof("engine") - 1, true);
  323|      2|	zend_string *property_engine_class_Random_Engine = zend_string_init("Random\\Engine", sizeof("Random\\Engine")-1, 1);
  324|      2|	zend_declare_typed_property(class_entry, property_engine_name, &property_engine_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_engine_class_Random_Engine, 0, 0));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_engine_name, &property_engine_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_engine_class_Random_Engine, 0, 0));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_engine_name, &property_engine_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_engine_class_Random_Engine, 0, 0));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  325|      2|	zend_string_release_ex(property_engine_name, true);
  326|       |
  327|      2|	return class_entry;
  328|      2|}
random.c:register_class_Random_IntervalBoundary:
  331|      2|{
  332|      2|	zend_class_entry *class_entry = zend_register_internal_enum("Random\\IntervalBoundary", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  333|       |
  334|      2|	zend_enum_add_case_cstr(class_entry, "ClosedOpen", NULL);
  335|       |
  336|      2|	zend_enum_add_case_cstr(class_entry, "ClosedClosed", NULL);
  337|       |
  338|      2|	zend_enum_add_case_cstr(class_entry, "OpenClosed", NULL);
  339|       |
  340|      2|	zend_enum_add_case_cstr(class_entry, "OpenOpen", NULL);
  341|       |
  342|      2|	return class_entry;
  343|      2|}
random.c:register_random_symbols:
  228|      2|{
  229|      2|	REGISTER_LONG_CONSTANT("MT_RAND_MT19937", MT_RAND_MT19937, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  230|      2|	zend_constant *const_MT_RAND_PHP = REGISTER_LONG_CONSTANT("MT_RAND_PHP", MT_RAND_PHP, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  231|       |
  232|       |
  233|      2|	zend_attribute *attribute_Deprecated_func_lcg_value_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "lcg_value", sizeof("lcg_value") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
  234|      2|	ZVAL_STR(&attribute_Deprecated_func_lcg_value_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_4));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  235|      2|	attribute_Deprecated_func_lcg_value_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  236|      2|	zend_string *attribute_Deprecated_func_lcg_value_0_arg1_str = zend_string_init("use \\Random\\Randomizer::getFloat() instead", strlen("use \\Random\\Randomizer::getFloat() instead"), 1);
  237|      2|	ZVAL_STR(&attribute_Deprecated_func_lcg_value_0->args[1].value, attribute_Deprecated_func_lcg_value_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  238|      2|	attribute_Deprecated_func_lcg_value_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  239|       |
  240|      2|	zend_attribute *attribute_Deprecated_const_MT_RAND_PHP_0 = zend_add_global_constant_attribute(const_MT_RAND_PHP, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  241|      2|	ZVAL_STR(&attribute_Deprecated_const_MT_RAND_PHP_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  242|      2|	attribute_Deprecated_const_MT_RAND_PHP_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  243|      2|	zend_string *attribute_Deprecated_const_MT_RAND_PHP_0_arg1_str = zend_string_init("as it uses a biased non-standard variant of Mt19937", strlen("as it uses a biased non-standard variant of Mt19937"), 1);
  244|      2|	ZVAL_STR(&attribute_Deprecated_const_MT_RAND_PHP_0->args[1].value, attribute_Deprecated_const_MT_RAND_PHP_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  245|      2|	attribute_Deprecated_const_MT_RAND_PHP_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  246|      2|}

zim_Random_Randomizer___construct:
   55|      2|{
   56|      2|	php_random_randomizer *randomizer = Z_RANDOM_RANDOMIZER_P(ZEND_THIS);
  ------------------
  |  |  133|      2|# define Z_RANDOM_RANDOMIZER_P(zval) php_random_randomizer_from_obj(Z_OBJ_P(zval));
  |  |  ------------------
  |  |  |  |  129|      2|#define php_random_randomizer_from_obj(object) ZEND_CONTAINER_OF(object, php_random_randomizer, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   57|      2|	zval engine;
   58|      2|	zval *param_engine = NULL;
   59|       |
   60|      6|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|      6|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
   62|      6|		Z_PARAM_OBJECT_OF_CLASS_OR_NULL(param_engine, random_ce_Random_Engine);
  ------------------
  |  | 1988|      2|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 1, 0)
  |  |  ------------------
  |  |  |  | 1971|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      0|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (62:3): [True: 2, False: 0]
  |  Branch (62:3): [True: 0, False: 0]
  |  Branch (62:3): [True: 0, False: 2]
  |  Branch (62:3): [True: 2, False: 0]
  |  Branch (62:3): [True: 2, False: 0]
  |  Branch (62:3): [True: 0, False: 0]
  |  Branch (62:3): [True: 2, False: 0]
  |  Branch (62:3): [True: 0, False: 0]
  |  Branch (62:3): [True: 0, False: 0]
  |  Branch (62:3): [True: 0, False: 0]
  ------------------
   63|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (63:2): [True: 0, False: 0]
  |  Branch (63:2): [True: 0, False: 0]
  |  Branch (63:2): [True: 0, False: 0]
  |  Branch (63:2): [True: 0, False: 0]
  ------------------
   64|       |
   65|      2|	if (param_engine != NULL) {
  ------------------
  |  Branch (65:6): [True: 0, False: 2]
  ------------------
   66|      0|		ZVAL_COPY(&engine, param_engine);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   67|      2|	} else {
   68|       |		/* Create default RNG instance */
   69|      2|		object_init_ex(&engine, random_ce_Random_Engine_Secure);
   70|      2|	}
   71|       |
   72|      2|	zend_update_property(random_ce_Random_Randomizer, Z_OBJ_P(ZEND_THIS), "engine", strlen("engine"), &engine);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
   73|       |
   74|      2|	OBJ_RELEASE(Z_OBJ_P(&engine));
  ------------------
  |  |   44|      2|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
   75|       |
   76|      2|	if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   77|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (77:3): [True: 0, False: 0]
  |  Branch (77:3): [True: 0, False: 0]
  ------------------
   78|      0|	}
   79|       |
   80|      2|	randomizer_common_init(randomizer, Z_OBJ_P(&engine));
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
   81|      2|}
randomizer.c:randomizer_common_init:
   29|      2|static inline void randomizer_common_init(php_random_randomizer *randomizer, zend_object *engine_object) {
   30|      2|	if (engine_object->ce->type == ZEND_INTERNAL_CLASS) {
  ------------------
  |  Branch (30:6): [True: 2, False: 0]
  ------------------
   31|       |		/* Internal classes always php_random_engine struct */
   32|      2|		php_random_engine *engine = php_random_engine_from_obj(engine_object);
  ------------------
  |  |  128|      2|#define php_random_engine_from_obj(object) ZEND_CONTAINER_OF(object, php_random_engine, std)
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
   33|       |
   34|       |		/* Copy engine pointers */
   35|      2|		randomizer->engine = engine->engine;
   36|      2|	} else {
   37|       |		/* Self allocation */
   38|      0|		php_random_status_state_user *state = php_random_status_alloc(&php_random_algo_user, false);
   39|      0|		randomizer->engine = (php_random_algo_with_state){
   40|      0|			.algo = &php_random_algo_user,
   41|      0|			.state = state,
   42|      0|		};
   43|       |
   44|       |		/* Create compatible state */
   45|      0|		state->object = engine_object;
   46|      0|		state->generate_method = zend_hash_str_find_ptr(&engine_object->ce->function_table, "generate", strlen("generate"));
   47|       |
   48|       |		/* Mark self-allocated for memory management */
   49|       |		randomizer->is_userland_algo = true;
   50|      0|	}
   51|      2|}

zend_reflection_class_factory:
 1390|     56|{
 1391|     56|	reflection_object *intern;
 1392|       |
 1393|     56|	zend_class_entry *reflection_ce =
 1394|     56|		ce->ce_flags & ZEND_ACC_ENUM ? reflection_enum_ptr : reflection_class_ptr;
  ------------------
  |  |  284|     56|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (1394:3): [True: 3, False: 53]
  ------------------
 1395|     56|	object_init_ex(object, reflection_ce);
 1396|     56|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     56|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     56|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     56|	_Generic( \
  |  |  |  |  |  |  408|     56|		(ptr), \
  |  |  |  |  |  |  409|     56|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     56|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     56|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1397|     56|	intern->ptr = ce;
 1398|     56|	intern->ref_type = REF_TYPE_OTHER;
 1399|     56|	intern->ce = ce;
 1400|     56|	ZVAL_STR_COPY(reflection_prop_name(object), ce->name);
  ------------------
  |  | 1112|     56|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     56|		zval *__z = (z);								\
  |  | 1114|     56|		zend_string *__s = (s);							\
  |  | 1115|     56|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     56|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     56|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     56|		/* interned strings support */					\
  |  | 1117|     56|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 54, False: 2]
  |  |  ------------------
  |  | 1118|     54|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     54|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     54|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     54|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     54|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     54|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|     56|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 56]
  |  |  ------------------
  ------------------
 1401|     56|}
zim_Reflection_getModifierNames:
 1659|      1|{
 1660|      1|	zend_long modifiers;
 1661|       |
 1662|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &modifiers) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1662:6): [True: 0, False: 1]
  ------------------
 1663|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1663:3): [True: 0, False: 0]
  |  Branch (1663:3): [True: 0, False: 0]
  ------------------
 1664|      0|	}
 1665|       |
 1666|      1|	array_init(return_value);
 1667|       |
 1668|      1|	if (modifiers & (ZEND_ACC_ABSTRACT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  233|      1|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
              	if (modifiers & (ZEND_ACC_ABSTRACT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  234|      1|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (1668:6): [True: 0, False: 1]
  ------------------
 1669|      0|		add_next_index_stringl(return_value, "abstract", sizeof("abstract")-1);
 1670|      0|	}
 1671|      1|	if (modifiers & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      1|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1671:6): [True: 1, False: 0]
  ------------------
 1672|      1|		add_next_index_stringl(return_value, "final", sizeof("final")-1);
 1673|      1|	}
 1674|      1|	if (modifiers & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      1|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1674:6): [True: 0, False: 1]
  ------------------
 1675|      0|		add_next_index_stringl(return_value, "virtual", sizeof("virtual")-1);
 1676|      0|	}
 1677|       |
 1678|       |	/* These are mutually exclusive */
 1679|      1|	switch (modifiers & ZEND_ACC_PPP_MASK) {
  ------------------
  |  |  421|      1|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (1679:10): [True: 1, False: 0]
  ------------------
 1680|      0|		case ZEND_ACC_PUBLIC:
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1680:3): [True: 0, False: 1]
  ------------------
 1681|      0|			add_next_index_stringl(return_value, "public", sizeof("public")-1);
 1682|      0|			break;
 1683|      0|		case ZEND_ACC_PRIVATE:
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1683:3): [True: 0, False: 1]
  ------------------
 1684|      0|			add_next_index_stringl(return_value, "private", sizeof("private")-1);
 1685|      0|			break;
 1686|      1|		case ZEND_ACC_PROTECTED:
  ------------------
  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1686:3): [True: 1, False: 0]
  ------------------
 1687|      1|			add_next_index_stringl(return_value, "protected", sizeof("protected")-1);
 1688|      1|			break;
 1689|      1|	}
 1690|       |	/* These are also mutually exclusive */
 1691|      1|	switch (modifiers & ZEND_ACC_PPP_SET_MASK) {
  ------------------
  |  |  422|      1|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      1|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      1|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      1|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1691:10): [True: 0, False: 1]
  ------------------
 1692|      0|		case ZEND_ACC_PROTECTED_SET:
  ------------------
  |  |  274|      0|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  |  Branch (1692:3): [True: 0, False: 1]
  ------------------
 1693|      0|			add_next_index_stringl(return_value, "protected(set)", sizeof("protected(set)")-1);
 1694|      0|			break;
 1695|      0|		case ZEND_ACC_PRIVATE_SET:
  ------------------
  |  |  275|      0|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  |  Branch (1695:3): [True: 0, False: 1]
  ------------------
 1696|      0|			add_next_index_stringl(return_value, "private(set)", sizeof("private(set)")-1);
 1697|      0|			break;
 1698|      1|	}
 1699|       |
 1700|      1|	if (modifiers & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      1|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1700:6): [True: 0, False: 1]
  ------------------
 1701|      0|		add_next_index_str(return_value, ZSTR_KNOWN(ZEND_STR_STATIC));
 1702|      0|	}
 1703|       |
 1704|      1|	if (modifiers & (ZEND_ACC_READONLY | ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  237|      1|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	if (modifiers & (ZEND_ACC_READONLY | ZEND_ACC_READONLY_CLASS)) {
  ------------------
  |  |  311|      1|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (1704:6): [True: 0, False: 1]
  ------------------
 1705|      0|		add_next_index_stringl(return_value, "readonly", sizeof("readonly")-1);
 1706|      0|	}
 1707|      1|}
zim_ReflectionFunction___construct:
 1712|     40|{
 1713|     40|	zval *object;
 1714|     40|	zend_object *closure_obj = NULL;
 1715|     40|	reflection_object *intern;
 1716|     40|	zend_function *fptr;
 1717|     40|	zend_string *fname, *lcname;
 1718|       |
 1719|     40|	object = ZEND_THIS;
  ------------------
  |  |  523|     40|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     40|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1720|     40|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     40|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     40|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     40|	_Generic( \
  |  |  |  |  |  |  408|     40|		(ptr), \
  |  |  |  |  |  |  409|     40|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     40|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     40|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1721|       |
 1722|    118|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     40|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     40|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     40|		const int _flags = (flags); \
  |  |  |  | 1599|     40|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     40|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     40|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     40|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     40|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     40|		uint32_t _i = 0; \
  |  |  |  | 1603|     40|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     40|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     40|		char *_error = NULL; \
  |  |  |  | 1606|     40|		bool _dummy = 0; \
  |  |  |  | 1607|     40|		bool _optional = 0; \
  |  |  |  | 1608|     40|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     40|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     40|		((void)_i); \
  |  |  |  | 1610|     40|		((void)_real_arg); \
  |  |  |  | 1611|     40|		((void)_arg); \
  |  |  |  | 1612|     40|		((void)_expected_type); \
  |  |  |  | 1613|     40|		((void)_error); \
  |  |  |  | 1614|     40|		((void)_optional); \
  |  |  |  | 1615|     40|		((void)_dummy); \
  |  |  |  | 1616|     40|		\
  |  |  |  | 1617|     40|		do { \
  |  |  |  | 1618|     40|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     80|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     40|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|     40|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     40|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     40|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     38|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1723|    190|		Z_PARAM_OBJ_OF_CLASS_OR_STR(closure_obj, zend_ce_closure, fname)
  ------------------
  |  | 1797|     38|	Z_PARAM_OBJ_OF_CLASS_OR_STR_EX(destination_object, base_ce, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1783|     38|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     38|	++_i; \
  |  |  |  |  |  | 1654|     38|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     38|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     38|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     38|	_real_arg++; \
  |  |  |  |  |  | 1660|     38|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     38|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     38|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1784|     38|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, base_ce, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     38|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1785|      0|		if (base_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1785:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1786|      0|			_error = ZSTR_VAL((base_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1787|      0|			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1589|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL 6
  |  |  |  |  ------------------
  |  |  |  |               			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1588|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING         5
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1787:18): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1788|      0|			break; \
  |  |  |  | 1789|      0|		} else { \
  |  |  |  | 1790|      0|			_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1790:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1791|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1792|      0|			break; \
  |  |  |  | 1793|      0|		} \
  |  |  |  | 1794|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (1723:3): [True: 38, False: 0]
  |  Branch (1723:3): [True: 0, False: 0]
  |  Branch (1723:3): [True: 38, False: 0]
  |  Branch (1723:3): [True: 0, False: 0]
  |  Branch (1723:3): [True: 38, False: 0]
  |  Branch (1723:3): [True: 0, False: 0]
  |  Branch (1723:3): [True: 0, False: 38]
  |  Branch (1723:3): [True: 38, False: 0]
  |  Branch (1723:3): [True: 0, False: 0]
  |  Branch (1723:3): [True: 0, False: 0]
  ------------------
 1724|    190|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     38|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     38|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     38|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     38|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  |  | 1641|     40|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 38]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     40|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 38]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1724:2): [True: 38, False: 0]
  |  Branch (1724:2): [True: 0, False: 0]
  |  Branch (1724:2): [True: 38, False: 0]
  |  Branch (1724:2): [True: 0, False: 0]
  ------------------
 1725|       |
 1726|     38|	if (closure_obj) {
  ------------------
  |  Branch (1726:6): [True: 9, False: 29]
  ------------------
 1727|      9|		fptr = (zend_function*)zend_get_closure_method_def(closure_obj);
 1728|     29|	} else {
 1729|     29|		if (UNEXPECTED(ZSTR_VAL(fname)[0] == '\\')) {
  ------------------
  |  |  457|     29|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 28]
  |  |  ------------------
  ------------------
 1730|       |			/* Ignore leading "\" */
 1731|      1|			ALLOCA_FLAG(use_heap)
 1732|      1|			ZSTR_ALLOCA_ALLOC(lcname, ZSTR_LEN(fname) - 1, use_heap);
  ------------------
  |  |  125|      1|#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap) do { \
  |  |  126|      1|	(str) = (zend_string *)do_alloca(ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(_len), 8), (use_heap)); \
  |  |  ------------------
  |  |  |  |  247|      1|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  127|      1|	GC_SET_REFCOUNT(str, 1); \
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  |  128|      1|	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               	GC_TYPE_INFO(str) = GC_STRING; \
  |  |  ------------------
  |  |  |  |  806|      1|#define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_STRING					(IS_STRING       | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|      1|	ZSTR_H(str) = 0; \
  |  |  ------------------
  |  |  |  |   69|      1|#define ZSTR_H(zstr)    (zstr)->h
  |  |  ------------------
  |  |  130|      1|	ZSTR_LEN(str) = _len; \
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  131|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (131:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1733|      1|			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(fname) + 1, ZSTR_LEN(fname) - 1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(fname) + 1, ZSTR_LEN(fname) - 1);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(fname) + 1, ZSTR_LEN(fname) - 1);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1734|      1|			fptr = zend_fetch_function(lcname);
 1735|      1|			ZSTR_ALLOCA_FREE(lcname, use_heap);
  ------------------
  |  |  139|      1|#define ZSTR_ALLOCA_FREE(str, use_heap) free_alloca(str, use_heap)
  |  |  ------------------
  |  |  |  |  248|      1|# define free_alloca(p, use_heap)	efree(p)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1736|     28|		} else {
 1737|     28|			lcname = zend_string_tolower(fname);
 1738|     28|			fptr = zend_fetch_function(lcname);
 1739|     28|			zend_string_release(lcname);
 1740|     28|		}
 1741|       |
 1742|     29|		if (fptr == NULL) {
  ------------------
  |  Branch (1742:7): [True: 1, False: 28]
  ------------------
 1743|      1|			zend_throw_exception_ex(reflection_exception_ptr, 0,
 1744|      1|				"Function %s() does not exist", ZSTR_VAL(fname));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1745|      1|			RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1745:4): [True: 0, False: 1]
  |  Branch (1745:4): [True: 1, False: 0]
  ------------------
 1746|      1|		}
 1747|     29|	}
 1748|       |
 1749|     37|	if (intern->ptr) {
  ------------------
  |  Branch (1749:6): [True: 0, False: 37]
  ------------------
 1750|      0|		zval_ptr_dtor(&intern->obj);
 1751|      0|		zval_ptr_dtor(reflection_prop_name(object));
 1752|      0|	}
 1753|       |
 1754|     37|	ZVAL_STR_COPY(reflection_prop_name(object), fptr->common.function_name);
  ------------------
  |  | 1112|     37|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     37|		zval *__z = (z);								\
  |  | 1114|     37|		zend_string *__s = (s);							\
  |  | 1115|     37|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     37|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     37|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     37|		/* interned strings support */					\
  |  | 1117|     37|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 14, False: 23]
  |  |  ------------------
  |  | 1118|     14|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     14|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     14|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     23|		} else {										\
  |  | 1120|     23|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     23|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     23|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     23|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     23|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     23|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     23|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     23|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     23|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     23|		}												\
  |  | 1123|     37|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 37]
  |  |  ------------------
  ------------------
 1755|     37|	intern->ptr = fptr;
 1756|     37|	intern->ref_type = REF_TYPE_FUNCTION;
 1757|     37|	if (closure_obj) {
  ------------------
  |  Branch (1757:6): [True: 9, False: 28]
  ------------------
 1758|      9|		ZVAL_OBJ_COPY(&intern->obj, closure_obj);
  ------------------
  |  | 1146|      9|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      9|		zval *__z = (z);						\
  |  | 1148|      9|		zend_object *__o = (o);					\
  |  | 1149|      9|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      9|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      9|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      9|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      9|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      9|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      9|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      9|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1759|     28|	} else {
 1760|     28|		ZVAL_UNDEF(&intern->obj);
  ------------------
  |  | 1055|     28|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     28|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     28|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     28|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     28|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     28|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1761|     28|	}
 1762|       |	intern->ce = NULL;
 1763|     37|}
zim_ReflectionFunction___toString:
 1768|      9|{
 1769|      9|	reflection_object *intern;
 1770|      9|	zend_function *fptr;
 1771|      9|	smart_str str = {0};
 1772|       |
 1773|      9|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      9|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      9|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 1774|      9|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      9|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      9|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      9|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      9|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      9|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      9|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      9|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      9|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      9|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      9|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      9|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      9|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      9|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      9|	target = intern->ptr; \
  |  |  121|      9|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 9]
  |  |  ------------------
  ------------------
  |  Branch (1774:2): [True: 0, False: 0]
  |  Branch (1774:2): [True: 0, False: 0]
  |  Branch (1774:2): [True: 0, False: 0]
  |  Branch (1774:2): [True: 0, False: 0]
  ------------------
 1775|      9|	_function_string(&str, fptr, intern->ce, "");
 1776|      9|	RETURN_STR(smart_str_extract(&str));
  ------------------
  |  | 1050|      9|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      9|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      9|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      9|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      9|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      9|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      9|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      9|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      9|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      9|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      9|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      9|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     18|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      9|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      9|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      9|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      9|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1777|      9|}
zim_ReflectionFunctionAbstract_getName:
 1782|      2|{
 1783|      2|	reflection_object *intern;
 1784|      2|	zend_function *fptr;
 1785|       |
 1786|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1787|       |
 1788|      2|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (1788:2): [True: 0, False: 0]
  |  Branch (1788:2): [True: 0, False: 0]
  |  Branch (1788:2): [True: 0, False: 0]
  |  Branch (1788:2): [True: 0, False: 0]
  ------------------
 1789|      2|	RETURN_STR_COPY(fptr->common.function_name);
  ------------------
  |  | 1053|      2|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      2|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      2|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      2|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      2|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      2|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1790|      2|}
zim_ReflectionFunctionAbstract_isClosure:
 1795|      1|{
 1796|      1|	reflection_object *intern;
 1797|      1|	zend_function *fptr;
 1798|       |
 1799|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1800|       |
 1801|      1|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1801:2): [True: 0, False: 0]
  |  Branch (1801:2): [True: 0, False: 0]
  |  Branch (1801:2): [True: 0, False: 0]
  |  Branch (1801:2): [True: 0, False: 0]
  ------------------
 1802|      1|	RETURN_BOOL(fptr->common.fn_flags & ZEND_ACC_CLOSURE);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1803|      1|}
zim_ReflectionFunctionAbstract_getClosureThis:
 1808|      1|{
 1809|      1|	reflection_object *intern;
 1810|      1|	zval* closure_this;
 1811|       |
 1812|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1813|       |
 1814|      1|	GET_REFLECTION_OBJECT();
  ------------------
  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  ------------------
  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  ------------------
  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  ------------------
  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  ------------------
  |  |  111|      0|			RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|		} \
  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  114|      0|		RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|	} \
  |  |  116|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1814:2): [True: 0, False: 0]
  |  Branch (1814:2): [True: 0, False: 0]
  |  Branch (1814:2): [True: 0, False: 0]
  |  Branch (1814:2): [True: 0, False: 0]
  ------------------
 1815|      1|	if (!Z_ISUNDEF(intern->obj)) {
  ------------------
  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (1815:6): [True: 1, False: 0]
  ------------------
 1816|      1|		closure_this = zend_get_closure_this_ptr(&intern->obj);
 1817|      1|		if (!Z_ISUNDEF_P(closure_this)) {
  ------------------
  |  |  967|      1|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1817:7): [True: 0, False: 1]
  ------------------
 1818|      0|			RETURN_OBJ_COPY(Z_OBJ_P(closure_this));
  ------------------
  |  | 1064|      0|#define RETURN_OBJ_COPY(r)				do { RETVAL_OBJ_COPY(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1038|      0|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  |  |  | 1147|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1148|      0|		zend_object *__o = (o);					\
  |  |  |  |  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1152|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1064:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1819|      0|		}
 1820|      1|	}
 1821|      1|}
zim_ReflectionFunction_getClosure:
 1913|      7|{
 1914|      7|	reflection_object *intern;
 1915|      7|	zend_function *fptr;
 1916|       |
 1917|      7|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      7|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      7|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      1|			zend_wrong_parameters_none_error(); \
  |  | 1634|      1|			return; \
  |  | 1635|      1|		} \
  |  | 1636|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1918|      6|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      6|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      6|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      6|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      6|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      6|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      6|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      6|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      6|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      6|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      6|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      6|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      6|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      6|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      6|	target = intern->ptr; \
  |  |  121|      6|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (1918:2): [True: 0, False: 0]
  |  Branch (1918:2): [True: 0, False: 0]
  |  Branch (1918:2): [True: 0, False: 0]
  |  Branch (1918:2): [True: 0, False: 0]
  ------------------
 1919|       |
 1920|      6|	if (!Z_ISUNDEF(intern->obj)) {
  ------------------
  |  |  966|      6|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (1920:6): [True: 0, False: 6]
  ------------------
 1921|       |		/* Closures are immutable objects */
 1922|      0|		RETURN_OBJ_COPY(Z_OBJ(intern->obj));
  ------------------
  |  | 1064|      0|#define RETURN_OBJ_COPY(r)				do { RETVAL_OBJ_COPY(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1038|      0|#define RETVAL_OBJ_COPY(r)				ZVAL_OBJ_COPY(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  |  |  |  |  | 1147|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1148|      0|		zend_object *__o = (o);					\
  |  |  |  |  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1152|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1064:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1923|      6|	} else {
 1924|      6|		zend_create_fake_closure(return_value, fptr, NULL, NULL, NULL);
 1925|      6|	}
 1926|      6|}
zim_ReflectionFunction_isAnonymous:
 1955|      3|{
 1956|      3|	reflection_object *intern;
 1957|      3|	zend_function *fptr;
 1958|       |
 1959|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1960|       |
 1961|      3|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (1961:2): [True: 0, False: 0]
  |  Branch (1961:2): [True: 0, False: 0]
  |  Branch (1961:2): [True: 0, False: 0]
  |  Branch (1961:2): [True: 0, False: 0]
  ------------------
 1962|      3|	RETURN_BOOL((fptr->common.fn_flags & (ZEND_ACC_CLOSURE | ZEND_ACC_FAKE_CLOSURE)) == ZEND_ACC_CLOSURE);
  ------------------
  |  | 1046|      3|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      3|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      3|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      3|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      3|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1963|      3|}
zim_ReflectionFunction_isDisabled:
 1968|      1|{
 1969|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1970|       |
 1971|       |	/* A disabled function cannot be queried using Reflection. */
 1972|      1|	RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1973|      1|}
zim_ReflectionFunctionAbstract_getAttributes:
 2045|      3|{
 2046|      3|	reflection_object *intern;
 2047|      3|	zend_function *fptr;
 2048|      3|	uint32_t target;
 2049|       |
 2050|      3|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (2050:2): [True: 0, False: 0]
  |  Branch (2050:2): [True: 0, False: 0]
  |  Branch (2050:2): [True: 0, False: 0]
  |  Branch (2050:2): [True: 0, False: 0]
  ------------------
 2051|       |
 2052|      3|	if (fptr->common.scope && (fptr->common.fn_flags & (ZEND_ACC_CLOSURE|ZEND_ACC_FAKE_CLOSURE)) != ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|      0|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
              	if (fptr->common.scope && (fptr->common.fn_flags & (ZEND_ACC_CLOSURE|ZEND_ACC_FAKE_CLOSURE)) != ZEND_ACC_CLOSURE) {
  ------------------
  |  |  385|      0|#define ZEND_ACC_FAKE_CLOSURE            (1 << 23) /*     |  X  |     |     */ /* Same as ZEND_CALL_FAKE_CLOSURE */
  ------------------
              	if (fptr->common.scope && (fptr->common.fn_flags & (ZEND_ACC_CLOSURE|ZEND_ACC_FAKE_CLOSURE)) != ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|      0|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (2052:6): [True: 0, False: 3]
  |  Branch (2052:28): [True: 0, False: 0]
  ------------------
 2053|      0|		target = ZEND_ATTRIBUTE_TARGET_METHOD;
  ------------------
  |  |   27|      0|#define ZEND_ATTRIBUTE_TARGET_METHOD		(1<<2)
  ------------------
 2054|      3|	} else {
 2055|      3|		target = ZEND_ATTRIBUTE_TARGET_FUNCTION;
  ------------------
  |  |   26|      3|#define ZEND_ATTRIBUTE_TARGET_FUNCTION		(1<<1)
  ------------------
 2056|      3|	}
 2057|       |
 2058|      3|	reflect_attributes(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |   49|      3|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2059|      3|		fptr->common.attributes, 0, fptr->common.scope, target,
 2060|      3|		fptr->type == ZEND_USER_FUNCTION ? fptr->op_array.filename : NULL);
  ------------------
  |  Branch (2060:3): [True: 3, False: 0]
  ------------------
 2061|      3|}
zim_ReflectionFunction_invokeArgs:
 2127|      1|{
 2128|      1|	zval retval;
 2129|      1|	zend_fcall_info_cache fcc;
 2130|      1|	reflection_object *intern;
 2131|      1|	zend_function *fptr;
 2132|      1|	HashTable *params;
 2133|       |
 2134|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "h", &params) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2134:6): [True: 0, False: 1]
  ------------------
 2135|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2135:3): [True: 0, False: 0]
  |  Branch (2135:3): [True: 0, False: 0]
  ------------------
 2136|      0|	}
 2137|       |
 2138|      1|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2138:2): [True: 0, False: 0]
  |  Branch (2138:2): [True: 0, False: 0]
  |  Branch (2138:2): [True: 0, False: 0]
  |  Branch (2138:2): [True: 0, False: 0]
  ------------------
 2139|       |
 2140|      1|	fcc.function_handler = fptr;
 2141|      1|	fcc.called_scope = NULL;
 2142|      1|	fcc.object = NULL;
 2143|       |
 2144|      1|	if (!Z_ISUNDEF(intern->obj)) {
  ------------------
  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (2144:6): [True: 1, False: 0]
  ------------------
 2145|      1|		Z_OBJ_HT(intern->obj)->get_closure(
  ------------------
  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2146|      1|			Z_OBJ(intern->obj), &fcc.called_scope, &fcc.function_handler, &fcc.object, 0);
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 2147|      1|	}
 2148|       |
 2149|      1|	zend_call_known_fcc(&fcc, &retval, /* num_params */ 0, /* params */ NULL, params);
 2150|       |
 2151|      1|	if (Z_ISREF(retval)) {
  ------------------
  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2152|      0|		zend_unwrap_reference(&retval);
 2153|      0|	}
 2154|      1|	RETURN_COPY_VALUE(&retval);
  ------------------
  |  | 1066|      1|#define RETURN_COPY_VALUE(zv)			do { RETVAL_COPY_VALUE(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1040|      1|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1066:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2155|      1|}
zim_ReflectionFunctionAbstract_getParameters:
 2208|      2|{
 2209|      2|	reflection_object *intern;
 2210|      2|	zend_function *fptr;
 2211|      2|	uint32_t i, num_args;
 2212|      2|	struct _zend_arg_info *arg_info;
 2213|       |
 2214|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2215|       |
 2216|      2|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2216:2): [True: 0, False: 0]
  |  Branch (2216:2): [True: 0, False: 0]
  |  Branch (2216:2): [True: 0, False: 0]
  |  Branch (2216:2): [True: 0, False: 0]
  ------------------
 2217|       |
 2218|      2|	arg_info= fptr->common.arg_info;
 2219|      2|	num_args = fptr->common.num_args;
 2220|      2|	if (fptr->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|      2|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (2220:6): [True: 0, False: 2]
  ------------------
 2221|      0|		num_args++;
 2222|      0|	}
 2223|       |
 2224|      2|	if (!num_args) {
  ------------------
  |  Branch (2224:6): [True: 0, False: 2]
  ------------------
 2225|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2226|      0|	}
 2227|       |
 2228|      2|	array_init(return_value);
 2229|      6|	for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (2229:14): [True: 4, False: 2]
  ------------------
 2230|      4|		zval parameter;
 2231|       |
 2232|      4|		reflection_parameter_factory(
 2233|      4|			_copy_function(fptr),
 2234|      4|			Z_ISUNDEF(intern->obj) ? NULL : &intern->obj,
  ------------------
  |  |  966|      4|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 2235|      4|			arg_info,
 2236|      4|			i,
 2237|      4|			i < fptr->common.required_num_args,
 2238|      4|			&parameter
 2239|      4|		);
 2240|      4|		zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &parameter);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2241|       |
 2242|      4|		arg_info++;
 2243|      4|	}
 2244|      2|}
zim_ReflectionFunctionAbstract_getExtension:
 2249|      2|{
 2250|      2|	reflection_object *intern;
 2251|      2|	zend_function *fptr;
 2252|      2|	zend_internal_function *internal;
 2253|       |
 2254|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2255|       |
 2256|      2|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2256:2): [True: 0, False: 0]
  |  Branch (2256:2): [True: 0, False: 0]
  |  Branch (2256:2): [True: 0, False: 0]
  |  Branch (2256:2): [True: 0, False: 0]
  ------------------
 2257|       |
 2258|      2|	if (fptr->type != ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (2258:6): [True: 1, False: 1]
  ------------------
 2259|      1|		RETURN_NULL();
  ------------------
  |  | 1047|      1|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      1|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2260|      1|	}
 2261|       |
 2262|      1|	internal = (zend_internal_function *)fptr;
 2263|      1|	if (internal->module) {
  ------------------
  |  Branch (2263:6): [True: 1, False: 0]
  ------------------
 2264|      1|		reflection_extension_factory(return_value, internal->module->name);
 2265|      1|	} else {
 2266|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2267|      0|	}
 2268|      1|}
zim_ReflectionFunctionAbstract_getExtensionName:
 2273|      3|{
 2274|      3|	reflection_object *intern;
 2275|      3|	zend_function *fptr;
 2276|      3|	zend_internal_function *internal;
 2277|       |
 2278|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2279|       |
 2280|      3|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (2280:2): [True: 0, False: 0]
  |  Branch (2280:2): [True: 0, False: 0]
  |  Branch (2280:2): [True: 0, False: 0]
  |  Branch (2280:2): [True: 0, False: 0]
  ------------------
 2281|       |
 2282|      3|	if (fptr->type != ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (2282:6): [True: 1, False: 2]
  ------------------
 2283|      1|		RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2284|      1|	}
 2285|       |
 2286|      2|	internal = (zend_internal_function *)fptr;
 2287|      2|	if (internal->module) {
  ------------------
  |  Branch (2287:6): [True: 2, False: 0]
  ------------------
 2288|      2|		RETURN_STRING(internal->module->name);
  ------------------
  |  | 1054|      2|#define RETURN_STRING(s) 				do { RETVAL_STRING(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1028|      2|#define RETVAL_STRING(s)				ZVAL_STRING(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  967|      2|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  |  |  968|      2|		const char *_s = (s);					\
  |  |  |  |  |  |  969|      2|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  963|      2|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  |  |  964|      2|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  965|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  970|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (970:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1054:70): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2289|      2|	} else {
 2290|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2291|      0|	}
 2292|      2|}
zim_ReflectionGenerator___construct:
 2297|      4|{
 2298|      4|	zval *generator, *object;
 2299|      4|	reflection_object *intern;
 2300|       |
 2301|      4|	object = ZEND_THIS;
  ------------------
  |  |  523|      4|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2302|      4|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      4|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      4|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2303|       |
 2304|      4|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "O", &generator, zend_ce_generator) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2304:6): [True: 2, False: 2]
  ------------------
 2305|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2305:3): [True: 0, False: 2]
  |  Branch (2305:3): [True: 2, False: 0]
  ------------------
 2306|      2|	}
 2307|       |
 2308|      2|	if (intern->ce) {
  ------------------
  |  Branch (2308:6): [True: 0, False: 2]
  ------------------
 2309|      0|		zval_ptr_dtor(&intern->obj);
 2310|      0|	}
 2311|       |
 2312|      2|	intern->ref_type = REF_TYPE_GENERATOR;
 2313|      2|	ZVAL_OBJ_COPY(&intern->obj, Z_OBJ_P(generator));
  ------------------
  |  | 1146|      2|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      2|		zval *__z = (z);						\
  |  | 1148|      2|		zend_object *__o = (o);					\
  |  | 1149|      2|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      2|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2314|      2|	intern->ce = zend_ce_generator;
 2315|      2|}
zim_ReflectionGenerator_getTrace:
 2326|      1|{
 2327|      1|	zend_long options = DEBUG_BACKTRACE_PROVIDE_OBJECT;
  ------------------
  |  |  458|      1|#define DEBUG_BACKTRACE_PROVIDE_OBJECT (1<<0)
  ------------------
 2328|      1|	zend_generator *generator = (zend_generator *) Z_OBJ(Z_REFLECTION_P(ZEND_THIS)->obj);
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 2329|      1|	zend_generator *root_generator;
 2330|      1|	zend_execute_data *ex_backup = EG(current_execute_data);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 2331|      1|	zend_execute_data *ex = generator->execute_data;
 2332|      1|	zend_execute_data *root_prev = NULL, *cur_prev;
 2333|       |
 2334|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &options) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2334:6): [True: 0, False: 1]
  ------------------
 2335|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2335:3): [True: 0, False: 0]
  |  Branch (2335:3): [True: 0, False: 0]
  ------------------
 2336|      0|	}
 2337|       |
 2338|      1|	REFLECTION_CHECK_VALID_GENERATOR(ex)
  ------------------
  |  | 2319|      1|	if (!ex) { \
  |  |  ------------------
  |  |  |  Branch (2319:6): [True: 1, False: 0]
  |  |  ------------------
  |  | 2320|      1|		zend_throw_exception(reflection_exception_ptr, "Cannot fetch information from a closed Generator", 0); \
  |  | 2321|      1|		RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2322|      1|	}
  ------------------
  |  Branch (2338:2): [True: 0, False: 1]
  |  Branch (2338:2): [True: 1, False: 0]
  ------------------
 2339|       |
 2340|      0|	root_generator = zend_generator_get_current(generator);
 2341|       |
 2342|      0|	cur_prev = generator->execute_data->prev_execute_data;
 2343|      0|	if (generator == root_generator) {
  ------------------
  |  Branch (2343:6): [True: 0, False: 0]
  ------------------
 2344|      0|		generator->execute_data->prev_execute_data = NULL;
 2345|      0|	} else {
 2346|      0|		root_prev = root_generator->execute_data->prev_execute_data;
 2347|      0|		generator->execute_fake.prev_execute_data = NULL;
 2348|      0|		root_generator->execute_data->prev_execute_data = &generator->execute_fake;
 2349|      0|	}
 2350|       |
 2351|      0|	EG(current_execute_data) = root_generator->execute_data;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2352|      0|	zend_fetch_debug_backtrace(return_value, 0, options, 0);
 2353|      0|	EG(current_execute_data) = ex_backup;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2354|       |
 2355|      0|	root_generator->execute_data->prev_execute_data = root_prev;
 2356|      0|	generator->execute_data->prev_execute_data = cur_prev;
 2357|      0|}
zim_ReflectionParameter___construct:
 2454|      4|{
 2455|      4|	parameter_reference *ref;
 2456|      4|	zval *reference;
 2457|      4|	zend_string *arg_name = NULL;
 2458|      4|	zend_long position;
 2459|      4|	zval *object;
 2460|      4|	zval *prop_name;
 2461|      4|	reflection_object *intern;
 2462|      4|	zend_function *fptr;
 2463|      4|	struct _zend_arg_info *arg_info;
 2464|      4|	uint32_t num_args;
 2465|      4|	zend_class_entry *ce = NULL;
 2466|      4|	bool is_closure = 0;
 2467|       |
 2468|     10|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2469|     10|		Z_PARAM_ZVAL(reference)
  ------------------
  |  | 2116|      2|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      2|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      2|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      2|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2469:3): [True: 2, False: 0]
  |  Branch (2469:3): [True: 0, False: 0]
  |  Branch (2469:3): [True: 2, False: 0]
  |  Branch (2469:3): [True: 0, False: 0]
  |  Branch (2469:3): [True: 2, False: 0]
  |  Branch (2469:3): [True: 0, False: 0]
  |  Branch (2469:3): [True: 0, False: 2]
  |  Branch (2469:3): [True: 2, False: 0]
  |  Branch (2469:3): [True: 0, False: 0]
  |  Branch (2469:3): [True: 0, False: 0]
  ------------------
 2470|     10|		Z_PARAM_STR_OR_LONG(arg_name, position)
  ------------------
  |  | 2181|      2|	Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, _dummy, 0);
  |  |  ------------------
  |  |  |  | 2173|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2174|      2|	if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2175|      0|		_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2175:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2176|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2177|      0|		break; \
  |  |  |  | 2178|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2470:3): [True: 2, False: 0]
  |  Branch (2470:3): [True: 0, False: 0]
  |  Branch (2470:3): [True: 2, False: 0]
  |  Branch (2470:3): [True: 0, False: 0]
  |  Branch (2470:3): [True: 2, False: 0]
  |  Branch (2470:3): [True: 0, False: 0]
  |  Branch (2470:3): [True: 0, False: 2]
  |  Branch (2470:3): [True: 2, False: 0]
  |  Branch (2470:3): [True: 0, False: 0]
  |  Branch (2470:3): [True: 0, False: 0]
  ------------------
 2471|     10|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2471:2): [True: 2, False: 0]
  |  Branch (2471:2): [True: 0, False: 0]
  |  Branch (2471:2): [True: 2, False: 0]
  |  Branch (2471:2): [True: 0, False: 0]
  ------------------
 2472|       |
 2473|      2|	object = ZEND_THIS;
  ------------------
  |  |  523|      2|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 2474|      2|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2475|       |
 2476|       |	/* First, find the function */
 2477|      2|	switch (Z_TYPE_P(reference)) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2478|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (2478:3): [True: 0, False: 2]
  ------------------
 2479|      0|			{
 2480|      0|				zend_string *lcname = zend_string_tolower(Z_STR_P(reference));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2481|      0|				fptr = zend_hash_find_ptr(EG(function_table), lcname);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2482|      0|				zend_string_release(lcname);
 2483|      0|				if (!fptr) {
  ------------------
  |  Branch (2483:9): [True: 0, False: 0]
  ------------------
 2484|      0|					zend_throw_exception_ex(reflection_exception_ptr, 0,
 2485|      0|						"Function %s() does not exist", Z_STRVAL_P(reference));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2486|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2486:6): [True: 0, False: 0]
  |  Branch (2486:6): [True: 0, False: 0]
  ------------------
 2487|      0|				}
 2488|      0|				ce = fptr->common.scope;
 2489|      0|			}
 2490|      0|			break;
 2491|       |
 2492|      2|		case IS_ARRAY: {
  ------------------
  |  |  613|      2|#define IS_ARRAY					7
  ------------------
  |  Branch (2492:3): [True: 2, False: 0]
  ------------------
 2493|      2|				zval *classref;
 2494|      2|				zval *method;
 2495|      2|				zend_string *name, *lcname;
 2496|       |
 2497|      2|				if (((classref = zend_hash_index_find(Z_ARRVAL_P(reference), 0)) == NULL)
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2497:9): [True: 0, False: 2]
  ------------------
 2498|      2|					|| ((method = zend_hash_index_find(Z_ARRVAL_P(reference), 1)) == NULL))
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2498:9): [True: 0, False: 2]
  ------------------
 2499|      0|				{
 2500|      0|					zend_throw_exception(reflection_exception_ptr, "Expected array($object, $method) or array($classname, $method)", 0);
 2501|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2501:6): [True: 0, False: 0]
  |  Branch (2501:6): [True: 0, False: 0]
  ------------------
 2502|      0|				}
 2503|       |
 2504|      2|				if (Z_TYPE_P(classref) == IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(classref) == IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (2504:9): [True: 0, False: 2]
  ------------------
 2505|      0|					ce = Z_OBJCE_P(classref);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2506|      2|				} else {
 2507|      2|					name = zval_try_get_string(classref);
 2508|      2|					if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2509|      0|						return;
 2510|      0|					}
 2511|      2|					if ((ce = zend_lookup_class(name)) == NULL) {
  ------------------
  |  Branch (2511:10): [True: 0, False: 2]
  ------------------
 2512|      0|						zend_throw_exception_ex(reflection_exception_ptr, 0,
 2513|      0|								"Class \"%s\" does not exist", ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2514|      0|						zend_string_release(name);
 2515|      0|						RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2515:7): [True: 0, False: 0]
  |  Branch (2515:7): [True: 0, False: 0]
  ------------------
 2516|      0|					}
 2517|      2|					zend_string_release(name);
 2518|      2|				}
 2519|       |
 2520|      2|				name = zval_try_get_string(method);
 2521|      2|				if (UNEXPECTED(!name)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2522|      0|					return;
 2523|      0|				}
 2524|       |
 2525|      2|				lcname = zend_string_tolower(name);
 2526|      2|				if (Z_TYPE_P(classref) == IS_OBJECT && is_closure_invoke(ce, lcname)
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(classref) == IS_OBJECT && is_closure_invoke(ce, lcname)
  ------------------
  |  |  614|      4|#define IS_OBJECT					8
  ------------------
  |  Branch (2526:9): [True: 0, False: 2]
  |  Branch (2526:44): [True: 0, False: 0]
  ------------------
 2527|      0|					&& (fptr = zend_get_closure_invoke_method(Z_OBJ_P(classref))) != NULL)
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (2527:9): [True: 0, False: 0]
  ------------------
 2528|      0|				{
 2529|       |					/* nothing to do. don't set is_closure since is the invoke handler,
 2530|       |					   not the closure itself */
 2531|      2|				} else if ((fptr = zend_hash_find_ptr(&ce->function_table, lcname)) == NULL) {
  ------------------
  |  Branch (2531:16): [True: 2, False: 0]
  ------------------
 2532|      2|					zend_throw_exception_ex(reflection_exception_ptr, 0,
 2533|      2|						"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2534|      2|					zend_string_release(name);
 2535|      2|					zend_string_release(lcname);
 2536|      2|					RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2536:6): [True: 0, False: 2]
  |  Branch (2536:6): [True: 2, False: 0]
  ------------------
 2537|      2|				}
 2538|      0|				zend_string_release(name);
 2539|      0|				zend_string_release(lcname);
 2540|      0|			}
 2541|      0|			break;
 2542|       |
 2543|      0|		case IS_OBJECT: {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (2543:3): [True: 0, False: 2]
  ------------------
 2544|      0|				ce = Z_OBJCE_P(reference);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2545|       |
 2546|      0|				if (instanceof_function(ce, zend_ce_closure)) {
  ------------------
  |  Branch (2546:9): [True: 0, False: 0]
  ------------------
 2547|      0|					fptr = (zend_function *)zend_get_closure_method_def(Z_OBJ_P(reference));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 2548|      0|					Z_ADDREF_P(reference);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 2549|      0|					is_closure = 1;
 2550|      0|				} else if ((fptr = zend_hash_find_ptr(&ce->function_table, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE))) == NULL) {
  ------------------
  |  Branch (2550:16): [True: 0, False: 0]
  ------------------
 2551|      0|					zend_throw_exception_ex(reflection_exception_ptr, 0,
 2552|      0|						"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZEND_INVOKE_FUNC_NAME);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZEND_INVOKE_FUNC_NAME);
  ------------------
  |  | 1254|      0|#define ZEND_INVOKE_FUNC_NAME       "__invoke"
  ------------------
 2553|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2553:6): [True: 0, False: 0]
  |  Branch (2553:6): [True: 0, False: 0]
  ------------------
 2554|      0|				}
 2555|      0|			}
 2556|      0|			break;
 2557|       |
 2558|      0|		default:
  ------------------
  |  Branch (2558:3): [True: 0, False: 2]
  ------------------
 2559|      0|			zend_argument_error(reflection_exception_ptr, 1, "must be a string, an array(class, method), or a callable object, %s given", zend_zval_value_name(reference));
 2560|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2560:4): [True: 0, False: 0]
  |  Branch (2560:4): [True: 0, False: 0]
  ------------------
 2561|      2|	}
 2562|       |
 2563|       |	/* Now, search for the parameter */
 2564|      0|	arg_info = fptr->common.arg_info;
 2565|      0|	num_args = fptr->common.num_args;
 2566|      0|	if (fptr->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|      0|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (2566:6): [True: 0, False: 0]
  ------------------
 2567|      0|		num_args++;
 2568|      0|	}
 2569|      0|	if (arg_name != NULL) {
  ------------------
  |  Branch (2569:6): [True: 0, False: 0]
  ------------------
 2570|      0|		uint32_t i;
 2571|      0|		position = -1;
 2572|       |
 2573|      0|		for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (2573:15): [True: 0, False: 0]
  ------------------
 2574|      0|			if (arg_info[i].name) {
  ------------------
  |  Branch (2574:8): [True: 0, False: 0]
  ------------------
 2575|      0|				if (zend_string_equals(arg_name, arg_info[i].name)) {
  ------------------
  |  Branch (2575:9): [True: 0, False: 0]
  ------------------
 2576|      0|					position = i;
 2577|      0|					break;
 2578|      0|				}
 2579|      0|			}
 2580|      0|		}
 2581|      0|		if (position == -1) {
  ------------------
  |  Branch (2581:7): [True: 0, False: 0]
  ------------------
 2582|      0|			zend_throw_exception(reflection_exception_ptr, "The parameter specified by its name could not be found", 0);
 2583|      0|			goto failure;
 2584|      0|		}
 2585|      0|	} else {
 2586|      0|		if (position < 0) {
  ------------------
  |  Branch (2586:7): [True: 0, False: 0]
  ------------------
 2587|      0|			zend_argument_value_error(2, "must be greater than or equal to 0");
 2588|      0|			goto failure;
 2589|      0|		}
 2590|      0|		if (position >= num_args) {
  ------------------
  |  Branch (2590:7): [True: 0, False: 0]
  ------------------
 2591|      0|			zend_throw_exception(reflection_exception_ptr, "The parameter specified by its offset could not be found", 0);
 2592|      0|			goto failure;
 2593|      0|		}
 2594|      0|	}
 2595|       |
 2596|      0|	if (intern->ptr) {
  ------------------
  |  Branch (2596:6): [True: 0, False: 0]
  ------------------
 2597|      0|		reflection_free_parameter_reference(intern->ptr);
 2598|      0|	}
 2599|       |
 2600|      0|	ref = (parameter_reference*) emalloc(sizeof(parameter_reference));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2601|      0|	ref->arg_info = &arg_info[position];
 2602|      0|	ref->offset = (uint32_t)position;
 2603|      0|	ref->required = (uint32_t)position < fptr->common.required_num_args;
 2604|      0|	ref->fptr = fptr;
 2605|       |	/* TODO: copy fptr */
 2606|      0|	intern->ptr = ref;
 2607|      0|	intern->ref_type = REF_TYPE_PARAMETER;
 2608|      0|	intern->ce = ce;
 2609|      0|	zval_ptr_dtor(&intern->obj);
 2610|      0|	if (reference && is_closure) {
  ------------------
  |  Branch (2610:6): [True: 0, False: 0]
  |  Branch (2610:19): [True: 0, False: 0]
  ------------------
 2611|      0|		ZVAL_COPY_VALUE(&intern->obj, reference);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2612|      0|	} else {
 2613|      0|		ZVAL_UNDEF(&intern->obj);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2614|      0|	}
 2615|       |
 2616|      0|	prop_name = reflection_prop_name(object);
 2617|      0|	zval_ptr_dtor(prop_name);
 2618|      0|	ZVAL_STR_COPY(prop_name, arg_info[position].name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2619|      0|	return;
 2620|       |
 2621|      0|failure:
 2622|      0|	if (fptr->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
  ------------------
  |  |  372|      0|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (2622:6): [True: 0, False: 0]
  ------------------
 2623|      0|		zend_string_release_ex(fptr->common.function_name, 0);
 2624|      0|		zend_free_trampoline(fptr);
  ------------------
  |  |  344|      0|#define zend_free_trampoline(func) do { \
  |  |  345|      0|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      0|		} else { \
  |  |  349|      0|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      0|		} \
  |  |  351|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2625|      0|	}
 2626|      0|	if (is_closure) {
  ------------------
  |  Branch (2626:6): [True: 0, False: 0]
  ------------------
 2627|      0|		zval_ptr_dtor(reference);
 2628|      0|	}
 2629|       |	RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2629:2): [True: 0, False: 0]
  |  Branch (2629:2): [True: 0, False: 0]
  ------------------
 2630|      0|}
zim_ReflectionParameter_getClass:
 2711|      1|{
 2712|      1|	reflection_object *intern;
 2713|      1|	parameter_reference *param;
 2714|      1|	zend_class_entry *ce;
 2715|       |
 2716|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2717|      1|	GET_REFLECTION_OBJECT_PTR(param);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2717:2): [True: 0, False: 0]
  |  Branch (2717:2): [True: 0, False: 0]
  |  Branch (2717:2): [True: 0, False: 0]
  |  Branch (2717:2): [True: 0, False: 0]
  ------------------
 2718|       |
 2719|       |	// TODO: This is going to return null for union types, which is rather odd.
 2720|      1|	if (ZEND_TYPE_HAS_NAME(param->arg_info->type)) {
  ------------------
  |  |  160|      1|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|      1|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2721|       |		/* Class name is stored as a string, we might also get "self" or "parent"
 2722|       |		 * - For "self", simply use the function scope. If scope is NULL then
 2723|       |		 *   the function is global and thus self does not make any sense
 2724|       |		 *
 2725|       |		 * - For "parent", use the function scope's parent. If scope is NULL then
 2726|       |		 *   the function is global and thus parent does not make any sense.
 2727|       |		 *   If the parent is NULL then the class does not extend anything and
 2728|       |		 *   thus parent does not make any sense, either.
 2729|       |		 *
 2730|       |		 * TODO: Think about moving these checks to the compiler or some sort of
 2731|       |		 * lint-mode.
 2732|       |		 */
 2733|      1|		zend_string *class_name;
 2734|       |
 2735|      1|		class_name = ZEND_TYPE_NAME(param->arg_info->type);
  ------------------
  |  |  184|      1|	((zend_string *) (t).ptr)
  ------------------
 2736|      1|		if (zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_SELF))) {
  ------------------
  |  |  401|      1|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 1]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2737|      0|			ce = param->fptr->common.scope;
 2738|      0|			if (!ce) {
  ------------------
  |  Branch (2738:8): [True: 0, False: 0]
  ------------------
 2739|      0|				zend_throw_exception_ex(reflection_exception_ptr, 0,
 2740|      0|					"Parameter uses \"self\" as type but function is not a class member");
 2741|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2741:5): [True: 0, False: 0]
  |  Branch (2741:5): [True: 0, False: 0]
  ------------------
 2742|      0|			}
 2743|      1|		} else if (zend_string_equals_ci(class_name, ZSTR_KNOWN(ZEND_STR_PARENT))) {
  ------------------
  |  |  401|      1|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 0, False: 1]
  |  |  |  Branch (401:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2744|      0|			ce = param->fptr->common.scope;
 2745|      0|			if (!ce) {
  ------------------
  |  Branch (2745:8): [True: 0, False: 0]
  ------------------
 2746|      0|				zend_throw_exception_ex(reflection_exception_ptr, 0,
 2747|      0|					"Parameter uses \"parent\" as type but function is not a class member");
 2748|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2748:5): [True: 0, False: 0]
  |  Branch (2748:5): [True: 0, False: 0]
  ------------------
 2749|      0|			}
 2750|      0|			if (!ce->parent) {
  ------------------
  |  Branch (2750:8): [True: 0, False: 0]
  ------------------
 2751|      0|				zend_throw_exception_ex(reflection_exception_ptr, 0,
 2752|      0|					"Parameter uses \"parent\" as type although class does not have a parent");
 2753|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2753:5): [True: 0, False: 0]
  |  Branch (2753:5): [True: 0, False: 0]
  ------------------
 2754|      0|			}
 2755|      0|			ce = ce->parent;
 2756|      1|		} else {
 2757|      1|			ce = zend_lookup_class(class_name);
 2758|      1|			if (!ce) {
  ------------------
  |  Branch (2758:8): [True: 0, False: 1]
  ------------------
 2759|      0|				zend_throw_exception_ex(reflection_exception_ptr, 0,
 2760|      0|					"Class \"%s\" does not exist", ZSTR_VAL(class_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2761|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2761:5): [True: 0, False: 0]
  |  Branch (2761:5): [True: 0, False: 0]
  ------------------
 2762|      0|			}
 2763|      1|		}
 2764|      1|		zend_reflection_class_factory(ce, return_value);
 2765|      1|	}
 2766|      1|}
zim_ReflectionNamedType_getName:
 3098|      3|{
 3099|      3|	reflection_object *intern;
 3100|      3|	type_reference *param;
 3101|       |
 3102|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3103|      3|	GET_REFLECTION_OBJECT_PTR(param);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (3103:2): [True: 0, False: 0]
  |  Branch (3103:2): [True: 0, False: 0]
  |  Branch (3103:2): [True: 0, False: 0]
  |  Branch (3103:2): [True: 0, False: 0]
  ------------------
 3104|       |
 3105|      3|	if (param->legacy_behavior) {
  ------------------
  |  Branch (3105:6): [True: 3, False: 0]
  ------------------
 3106|      3|		RETURN_STR(zend_type_to_string_without_null(param->type));
  ------------------
  |  | 1050|      3|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      3|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      3|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      3|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      3|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3107|      3|	}
 3108|      0|	RETURN_STR(zend_named_reflection_type_to_string(param->type));
  ------------------
  |  | 1050|      0|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      0|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      0|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3109|      0|}
zim_ReflectionNamedType_isBuiltin:
 3114|      1|{
 3115|      1|	reflection_object *intern;
 3116|      1|	type_reference *param;
 3117|       |
 3118|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3119|      1|	GET_REFLECTION_OBJECT_PTR(param);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3119:2): [True: 0, False: 0]
  |  Branch (3119:2): [True: 0, False: 0]
  |  Branch (3119:2): [True: 0, False: 0]
  |  Branch (3119:2): [True: 0, False: 0]
  ------------------
 3120|       |
 3121|      1|	if (ZEND_TYPE_IS_ITERABLE_FALLBACK(param->type)) {
  ------------------
  |  |  169|      1|	((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  139|      1|#define _ZEND_TYPE_ITERABLE_BIT (1u << 21)
  |  |  ------------------
  |  |  |  Branch (169:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3122|      0|		RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3123|      0|	}
 3124|       |
 3125|       |	/* Treat "static" as a class type for the purposes of reflection. */
 3126|      1|	RETVAL_BOOL(ZEND_TYPE_IS_ONLY_MASK(param->type)
  ------------------
  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      4|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:5): [True: 1, False: 0]
  |  |  |  |  |  Branch (1073:5): [True: 1, False: 0]
  |  |  |  |  |  Branch (1073:5): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3127|      1|		&& !(ZEND_TYPE_FULL_MASK(param->type) & MAY_BE_STATIC));
 3128|      1|}
zim_ReflectionMethod___construct:
 3336|      7|ZEND_METHOD(ReflectionMethod, __construct) {
 3337|      7|	instantiate_reflection_method(INTERNAL_FUNCTION_PARAM_PASSTHRU, true);
  ------------------
  |  |   49|      7|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 3338|      7|}
zim_ReflectionMethod_createFromMethodName:
 3341|      1|ZEND_METHOD(ReflectionMethod, createFromMethodName) {
 3342|      1|	instantiate_reflection_method(INTERNAL_FUNCTION_PARAM_PASSTHRU, false);
  ------------------
  |  |   49|      1|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 3343|      1|}
zim_ReflectionMethod___toString:
 3347|      3|{
 3348|      3|	reflection_object *intern;
 3349|      3|	zend_function *mptr;
 3350|      3|	smart_str str = {0};
 3351|       |
 3352|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3353|      3|	GET_REFLECTION_OBJECT_PTR(mptr);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (3353:2): [True: 0, False: 0]
  |  Branch (3353:2): [True: 0, False: 0]
  |  Branch (3353:2): [True: 0, False: 0]
  |  Branch (3353:2): [True: 0, False: 0]
  ------------------
 3354|      3|	_function_string(&str, mptr, intern->ce, "");
 3355|      3|	RETURN_STR(smart_str_extract(&str));
  ------------------
  |  | 1050|      3|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      3|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      3|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      3|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      3|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3356|      3|}
zim_ReflectionFunctionAbstract_isDeprecated:
 3547|      1|{
 3548|      1|	_function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_DEPRECATED);
  ------------------
  |  |   49|      1|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	_function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_DEPRECATED);
  ------------------
  |  |  258|      1|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
 3549|      1|}
zim_ReflectionFunctionAbstract_getReturnType:
 3654|      2|{
 3655|      2|	reflection_object *intern;
 3656|      2|	zend_function *fptr;
 3657|       |
 3658|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3659|       |
 3660|      2|	GET_REFLECTION_OBJECT_PTR(fptr);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (3660:2): [True: 0, False: 0]
  |  Branch (3660:2): [True: 0, False: 0]
  |  Branch (3660:2): [True: 0, False: 0]
  |  Branch (3660:2): [True: 0, False: 0]
  ------------------
 3661|       |
 3662|      2|	if (!(fptr->op_array.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || ZEND_ARG_TYPE_IS_TENTATIVE(&fptr->common.arg_info[-1])) {
  ------------------
  |  |  355|      2|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
              	if (!(fptr->op_array.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || ZEND_ARG_TYPE_IS_TENTATIVE(&fptr->common.arg_info[-1])) {
  ------------------
  |  | 1136|      2|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|      2|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1128|      2|#define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      2|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1136:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (3662:6): [True: 0, False: 2]
  ------------------
 3663|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3664|      0|	}
 3665|       |
 3666|      2|	reflection_type_factory(fptr->common.arg_info[-1].type, return_value, true);
 3667|      2|}
zim_ReflectionMethod_getPrototype:
 3774|      1|{
 3775|      1|	reflection_object *intern;
 3776|      1|	zend_function *mptr;
 3777|       |
 3778|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3779|       |
 3780|      1|	GET_REFLECTION_OBJECT_PTR(mptr);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3780:2): [True: 0, False: 0]
  |  Branch (3780:2): [True: 0, False: 0]
  |  Branch (3780:2): [True: 0, False: 0]
  |  Branch (3780:2): [True: 0, False: 0]
  ------------------
 3781|       |
 3782|      1|	if (!mptr->common.prototype) {
  ------------------
  |  Branch (3782:6): [True: 1, False: 0]
  ------------------
 3783|      1|		zend_throw_exception_ex(reflection_exception_ptr, 0,
 3784|      1|			"Method %s::%s does not have a prototype", ZSTR_VAL(intern->ce->name), ZSTR_VAL(mptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			"Method %s::%s does not have a prototype", ZSTR_VAL(intern->ce->name), ZSTR_VAL(mptr->common.function_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3785|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3785:3): [True: 0, False: 1]
  |  Branch (3785:3): [True: 1, False: 0]
  ------------------
 3786|      1|	}
 3787|       |
 3788|      0|	reflection_method_factory(mptr->common.prototype->common.scope, mptr->common.prototype, NULL, return_value);
 3789|      0|}
zim_ReflectionClassConstant___construct:
 3805|     11|{
 3806|     11|	zval *object;
 3807|     11|	zend_string *classname_str;
 3808|     11|	zend_object *classname_obj;
 3809|     11|	zend_string *constname;
 3810|     11|	reflection_object *intern;
 3811|     11|	zend_class_entry *ce;
 3812|     11|	zend_class_constant *constant = NULL;
 3813|       |
 3814|     27|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|     11|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     11|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     11|		const int _flags = (flags); \
  |  |  |  | 1599|     11|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     11|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     11|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     11|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     11|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     11|		uint32_t _i = 0; \
  |  |  |  | 1603|     11|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     11|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     11|		char *_error = NULL; \
  |  |  |  | 1606|     11|		bool _dummy = 0; \
  |  |  |  | 1607|     11|		bool _optional = 0; \
  |  |  |  | 1608|     11|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     11|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     11|		((void)_i); \
  |  |  |  | 1610|     11|		((void)_real_arg); \
  |  |  |  | 1611|     11|		((void)_arg); \
  |  |  |  | 1612|     11|		((void)_expected_type); \
  |  |  |  | 1613|     11|		((void)_error); \
  |  |  |  | 1614|     11|		((void)_optional); \
  |  |  |  | 1615|     11|		((void)_dummy); \
  |  |  |  | 1616|     11|		\
  |  |  |  | 1617|     11|		do { \
  |  |  |  | 1618|     11|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 6, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     11|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      6|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      6|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      6|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      6|				} \
  |  |  |  | 1623|      6|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      6|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      6|				break; \
  |  |  |  | 1625|      6|			} \
  |  |  |  | 1626|     11|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     11|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     11|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3815|     27|		Z_PARAM_OBJ_OR_STR(classname_obj, classname_str)
  ------------------
  |  | 1777|      5|	Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1769|      5|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1770|      5|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1771|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1771:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1772|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1773|      0|		break; \
  |  |  |  | 1774|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (3815:3): [True: 5, False: 0]
  |  Branch (3815:3): [True: 0, False: 0]
  |  Branch (3815:3): [True: 5, False: 0]
  |  Branch (3815:3): [True: 0, False: 0]
  |  Branch (3815:3): [True: 5, False: 0]
  |  Branch (3815:3): [True: 0, False: 0]
  |  Branch (3815:3): [True: 0, False: 5]
  |  Branch (3815:3): [True: 5, False: 0]
  |  Branch (3815:3): [True: 0, False: 0]
  |  Branch (3815:3): [True: 0, False: 0]
  ------------------
 3816|     25|		Z_PARAM_STR(constname)
  ------------------
  |  | 2102|      5|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      5|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3816:3): [True: 5, False: 0]
  |  Branch (3816:3): [True: 0, False: 0]
  |  Branch (3816:3): [True: 5, False: 0]
  |  Branch (3816:3): [True: 0, False: 0]
  |  Branch (3816:3): [True: 5, False: 0]
  |  Branch (3816:3): [True: 0, False: 0]
  |  Branch (3816:3): [True: 0, False: 5]
  |  Branch (3816:3): [True: 5, False: 0]
  |  Branch (3816:3): [True: 0, False: 0]
  |  Branch (3816:3): [True: 0, False: 0]
  ------------------
 3817|     11|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      5|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|     11|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 6, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      6|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      6|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      6|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      6|			} \
  |  |  |  | 1645|      6|			failure; \
  |  |  |  | 1646|      6|		} \
  |  |  |  | 1647|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3817:2): [True: 5, False: 0]
  |  Branch (3817:2): [True: 0, False: 0]
  |  Branch (3817:2): [True: 5, False: 0]
  |  Branch (3817:2): [True: 0, False: 0]
  ------------------
 3818|       |
 3819|      5|	if (classname_obj) {
  ------------------
  |  Branch (3819:6): [True: 0, False: 5]
  ------------------
 3820|      0|		ce = classname_obj->ce;
 3821|      5|	} else {
 3822|      5|		if ((ce = zend_lookup_class(classname_str)) == NULL) {
  ------------------
  |  Branch (3822:7): [True: 0, False: 5]
  ------------------
 3823|      0|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Class \"%s\" does not exist", ZSTR_VAL(classname_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3824|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3824:4): [True: 0, False: 0]
  |  Branch (3824:4): [True: 0, False: 0]
  ------------------
 3825|      0|		}
 3826|      5|	}
 3827|       |
 3828|      5|	object = ZEND_THIS;
  ------------------
  |  |  523|      5|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3829|      5|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      5|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      5|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      5|	_Generic( \
  |  |  |  |  |  |  408|      5|		(ptr), \
  |  |  |  |  |  |  409|      5|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      5|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      5|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3830|       |
 3831|      5|	if ((constant = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), constname)) == NULL) {
  ------------------
  |  |  334|      5|	zend_class_constants_table(ce)
  ------------------
  |  Branch (3831:6): [True: 0, False: 5]
  ------------------
 3832|      0|		zend_throw_exception_ex(reflection_exception_ptr, 0, "Constant %s::%s does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(constname));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_throw_exception_ex(reflection_exception_ptr, 0, "Constant %s::%s does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(constname));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3833|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3833:3): [True: 0, False: 0]
  |  Branch (3833:3): [True: 0, False: 0]
  ------------------
 3834|      0|	}
 3835|       |
 3836|      5|	intern->ptr = constant;
 3837|      5|	intern->ref_type = REF_TYPE_CLASS_CONSTANT;
 3838|      5|	intern->ce = constant->ce;
 3839|      5|	ZVAL_STR_COPY(reflection_prop_name(object), constname);
  ------------------
  |  | 1112|      5|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      5|		zval *__z = (z);								\
  |  | 1114|      5|		zend_string *__s = (s);							\
  |  | 1115|      5|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      5|		/* interned strings support */					\
  |  | 1117|      5|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 4]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 3840|      5|	ZVAL_STR_COPY(reflection_prop_class(object), constant->ce->name);
  ------------------
  |  | 1112|      5|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      5|		zval *__z = (z);								\
  |  | 1114|      5|		zend_string *__s = (s);							\
  |  | 1115|      5|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      5|		/* interned strings support */					\
  |  | 1117|      5|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 4]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 3841|      5|}
zim_ReflectionClassConstant___toString:
 3846|      1|{
 3847|      1|	reflection_object *intern;
 3848|      1|	zend_class_constant *ref;
 3849|      1|	smart_str str = {0};
 3850|       |
 3851|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3852|       |
 3853|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3853:2): [True: 0, False: 0]
  |  Branch (3853:2): [True: 0, False: 0]
  |  Branch (3853:2): [True: 0, False: 0]
  |  Branch (3853:2): [True: 0, False: 0]
  ------------------
 3854|       |
 3855|      1|	zval *name = reflection_prop_name(ZEND_THIS);
  ------------------
  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3856|      1|	if (Z_ISUNDEF_P(name)) {
  ------------------
  |  |  967|      1|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3857|      0|		zend_throw_error(NULL,
 3858|      0|			"Typed property ReflectionClassConstant::$name "
 3859|      0|			"must not be accessed before initialization");
 3860|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3860:3): [True: 0, False: 0]
  |  Branch (3860:3): [True: 0, False: 0]
  ------------------
 3861|      0|	}
 3862|      1|	ZVAL_DEREF(name);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3863|      1|	ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3863:2): [True: 0, False: 1]
  |  Branch (3863:2): [True: 1, False: 0]
  ------------------
 3864|       |
 3865|      1|	_class_const_string(&str, Z_STR_P(name), ref, "");
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3866|      1|	RETURN_STR(smart_str_extract(&str));
  ------------------
  |  | 1050|      1|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      1|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      1|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3867|      1|}
zim_ReflectionClassConstant_isDeprecated:
 4049|      1|{
 4050|      1|	reflection_object *intern;
 4051|      1|	zend_constant *ref;
 4052|       |
 4053|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4054|       |
 4055|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4055:2): [True: 0, False: 0]
  |  Branch (4055:2): [True: 0, False: 0]
  |  Branch (4055:2): [True: 0, False: 0]
  |  Branch (4055:2): [True: 0, False: 0]
  ------------------
 4056|       |
 4057|      1|	RETURN_BOOL(ZEND_CLASS_CONST_FLAGS(ref) & ZEND_ACC_DEPRECATED);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4058|      1|}
zim_ReflectionClass___construct:
 4107|     62|{
 4108|     62|	reflection_class_object_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  ------------------
  |  |   49|     62|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 4109|     62|}
zim_ReflectionClass_getStaticProperties:
 4154|      1|{
 4155|      1|	reflection_object *intern;
 4156|      1|	zend_class_entry *ce;
 4157|      1|	zend_property_info *prop_info;
 4158|      1|	zval *prop;
 4159|      1|	zend_string *key;
 4160|       |
 4161|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4162|       |
 4163|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4163:2): [True: 0, False: 0]
  |  Branch (4163:2): [True: 0, False: 0]
  |  Branch (4163:2): [True: 0, False: 0]
  |  Branch (4163:2): [True: 0, False: 0]
  ------------------
 4164|       |
 4165|      1|	if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 4166|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4166:3): [True: 0, False: 0]
  |  Branch (4166:3): [True: 0, False: 0]
  ------------------
 4167|      0|	}
 4168|       |
 4169|      1|	if (ce->default_static_members_count && !CE_STATIC_MEMBERS(ce)) {
  ------------------
  |  |  331|      1|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      1|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      1|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      1|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      1|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4169:6): [True: 1, False: 0]
  |  Branch (4169:42): [True: 0, False: 1]
  ------------------
 4170|      0|		zend_class_init_statics(ce);
 4171|      0|	}
 4172|       |
 4173|      1|	array_init(return_value);
 4174|       |
 4175|      4|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&ce->properties_info, key, prop_info) {
  ------------------
  |  | 1448|      1|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      2|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      1|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      1|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      1|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 1]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      1|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      1|	_key = _p->key; \
  |  | 1450|      1|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4175:2): [True: 0, False: 1]
  |  Branch (4175:2): [True: 1, False: 0]
  ------------------
 4176|      4|		if (((prop_info->flags & ZEND_ACC_PRIVATE) &&
  ------------------
  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4176:8): [True: 0, False: 1]
  ------------------
 4177|      0|		     prop_info->ce != ce)) {
  ------------------
  |  Branch (4177:8): [True: 0, False: 0]
  ------------------
 4178|      0|			continue;
 4179|      0|		}
 4180|      1|		if ((prop_info->flags & ZEND_ACC_STATIC) == 0) {
  ------------------
  |  |  227|      1|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (4180:7): [True: 0, False: 1]
  ------------------
 4181|      0|			continue;
 4182|      0|		}
 4183|       |
 4184|      1|		prop = &CE_STATIC_MEMBERS(ce)[prop_info->offset];
  ------------------
  |  |  331|      1|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      1|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      1|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      1|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      1|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      1|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4185|      1|		ZVAL_DEINDIRECT(prop);
  ------------------
  |  | 1480|      1|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      1|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      1|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 1]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4186|       |
 4187|      1|		if (ZEND_TYPE_IS_SET(prop_info->type) && Z_ISUNDEF_P(prop)) {
  ------------------
  |  |  152|      2|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      1|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              		if (ZEND_TYPE_IS_SET(prop_info->type) && Z_ISUNDEF_P(prop)) {
  ------------------
  |  |  967|      0|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      0|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4188|      0|			continue;
 4189|      0|		}
 4190|       |
 4191|       |		/* enforce read only access */
 4192|      1|		ZVAL_DEREF(prop);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4193|      1|		Z_TRY_ADDREF_P(prop);
  ------------------
  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      1|	zval *_pz = (pz);				\
  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4194|       |
 4195|      1|		zend_hash_update(Z_ARRVAL_P(return_value), key, prop);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4196|      1|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      1|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4197|      1|}
zim_ReflectionClass_getDefaultProperties:
 4291|      3|{
 4292|      3|	reflection_object *intern;
 4293|      3|	zend_class_entry *ce;
 4294|       |
 4295|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 4296|      3|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (4296:2): [True: 0, False: 0]
  |  Branch (4296:2): [True: 0, False: 0]
  |  Branch (4296:2): [True: 0, False: 0]
  |  Branch (4296:2): [True: 0, False: 0]
  ------------------
 4297|      3|	array_init(return_value);
 4298|      3|	if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 4299|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4299:3): [True: 0, False: 0]
  |  Branch (4299:3): [True: 0, False: 0]
  ------------------
 4300|      0|	}
 4301|      3|	add_class_vars(ce, true, return_value);
 4302|       |	add_class_vars(ce, false, return_value);
 4303|      3|}
zim_ReflectionClass___toString:
 4308|     19|{
 4309|     19|	reflection_object *intern;
 4310|     19|	zend_class_entry *ce;
 4311|     19|	smart_str str = {0};
 4312|       |
 4313|     19|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|     19|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|     19|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
 4314|     19|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|     19|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|     19|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|     19|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|     19|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|     19|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|     19|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|     19|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|     19|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|     19|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|     19|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|     19|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|     19|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 19]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|     19|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|     19|	target = intern->ptr; \
  |  |  121|     19|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 19]
  |  |  ------------------
  ------------------
  |  Branch (4314:2): [True: 0, False: 0]
  |  Branch (4314:2): [True: 0, False: 0]
  |  Branch (4314:2): [True: 0, False: 0]
  |  Branch (4314:2): [True: 0, False: 0]
  ------------------
 4315|     19|	_class_string(&str, ce, &intern->obj, "");
 4316|     19|	RETURN_STR(smart_str_extract(&str));
  ------------------
  |  | 1050|     19|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|     19|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|     19|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|     19|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|     19|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|     19|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|     19|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|     19|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|     19|		/* interned strings support */			\
  |  |  |  |  |  | 1093|     19|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|     19|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|     19|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     38|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|     19|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|     19|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|     19|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|     19|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4317|     19|}
zim_ReflectionClass_getName:
 4322|      1|{
 4323|      1|	reflection_object *intern;
 4324|      1|	zend_class_entry *ce;
 4325|       |
 4326|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4327|       |
 4328|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4328:2): [True: 0, False: 0]
  |  Branch (4328:2): [True: 0, False: 0]
  |  Branch (4328:2): [True: 0, False: 0]
  |  Branch (4328:2): [True: 0, False: 0]
  ------------------
 4329|      1|	RETURN_STR_COPY(ce->name);
  ------------------
  |  | 1053|      1|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      1|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      1|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      1|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      1|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      1|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      1|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      1|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      1|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4330|      1|}
zim_ReflectionClass_getAttributes:
 4431|     10|{
 4432|     10|	reflection_object *intern;
 4433|     10|	zend_class_entry *ce;
 4434|       |
 4435|     10|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|     10|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|     10|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|     10|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|     10|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|     10|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|     10|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|     10|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|     10|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|     10|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|     10|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|     10|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|     10|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|     10|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|     10|	target = intern->ptr; \
  |  |  121|     10|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 10]
  |  |  ------------------
  ------------------
  |  Branch (4435:2): [True: 0, False: 0]
  |  Branch (4435:2): [True: 0, False: 0]
  |  Branch (4435:2): [True: 0, False: 0]
  |  Branch (4435:2): [True: 0, False: 0]
  ------------------
 4436|       |
 4437|     10|	reflect_attributes(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |   49|     10|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 4438|     10|		ce->attributes, 0, ce, ZEND_ATTRIBUTE_TARGET_CLASS,
  ------------------
  |  |   25|     10|#define ZEND_ATTRIBUTE_TARGET_CLASS			(1<<0)
  ------------------
 4439|     10|		ce->type == ZEND_USER_CLASS ? ce->info.user.filename : NULL);
  ------------------
  |  Branch (4439:3): [True: 10, False: 0]
  ------------------
 4440|     10|}
zim_ReflectionClass_hasMethod:
 4462|      3|{
 4463|      3|	reflection_object *intern;
 4464|      3|	zend_class_entry *ce;
 4465|      3|	zend_string *name, *lc_name;
 4466|       |
 4467|      3|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name) == FAILURE) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4467:6): [True: 0, False: 3]
  ------------------
 4468|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4468:3): [True: 0, False: 0]
  |  Branch (4468:3): [True: 0, False: 0]
  ------------------
 4469|      0|	}
 4470|       |
 4471|      3|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (4471:2): [True: 0, False: 0]
  |  Branch (4471:2): [True: 0, False: 0]
  |  Branch (4471:2): [True: 0, False: 0]
  |  Branch (4471:2): [True: 0, False: 0]
  ------------------
 4472|      3|	lc_name = zend_string_tolower(name);
 4473|      3|	RETVAL_BOOL(zend_hash_exists(&ce->function_table, lc_name) || is_closure_invoke(ce, lc_name));
  ------------------
  |  | 1020|      3|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  ------------------
  |  |  |  | 1071|      3|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      3|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      6|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      6|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:5): [True: 0, False: 3]
  |  |  |  |  |  Branch (1073:5): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1074|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4474|      3|	zend_string_release(lc_name);
 4475|      3|}
zim_ReflectionClass_getMethod:
 4480|      2|{
 4481|      2|	reflection_object *intern;
 4482|      2|	zend_class_entry *ce;
 4483|      2|	zend_function *mptr;
 4484|      2|	zval obj_tmp;
 4485|      2|	zend_string *name, *lc_name;
 4486|       |
 4487|      2|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4487:6): [True: 0, False: 2]
  ------------------
 4488|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4488:3): [True: 0, False: 0]
  |  Branch (4488:3): [True: 0, False: 0]
  ------------------
 4489|      0|	}
 4490|       |
 4491|      2|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (4491:2): [True: 0, False: 0]
  |  Branch (4491:2): [True: 0, False: 0]
  |  Branch (4491:2): [True: 0, False: 0]
  |  Branch (4491:2): [True: 0, False: 0]
  ------------------
 4492|      2|	lc_name = zend_string_tolower(name);
 4493|      2|	if (!Z_ISUNDEF(intern->obj) && is_closure_invoke(ce, lc_name)
  ------------------
  |  |  966|      4|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (4493:6): [True: 0, False: 2]
  |  Branch (4493:33): [True: 0, False: 0]
  ------------------
 4494|      0|		&& (mptr = zend_get_closure_invoke_method(Z_OBJ(intern->obj))) != NULL)
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  |  Branch (4494:6): [True: 0, False: 0]
  ------------------
 4495|      0|	{
 4496|       |		/* don't assign closure_object since we only reflect the invoke handler
 4497|       |		   method and not the closure definition itself */
 4498|      0|		reflection_method_factory(ce, mptr, NULL, return_value);
 4499|      2|	} else if (Z_ISUNDEF(intern->obj) && is_closure_invoke(ce, lc_name)
  ------------------
  |  |  966|      4|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4499:39): [True: 0, False: 2]
  ------------------
 4500|      0|		&& object_init_ex(&obj_tmp, ce) == SUCCESS && (mptr = zend_get_closure_invoke_method(Z_OBJ(obj_tmp))) != NULL) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  |  Branch (4500:6): [True: 0, False: 0]
  |  Branch (4500:49): [True: 0, False: 0]
  ------------------
 4501|       |		/* don't assign closure_object since we only reflect the invoke handler
 4502|       |		   method and not the closure definition itself */
 4503|      0|		reflection_method_factory(ce, mptr, NULL, return_value);
 4504|      0|		zval_ptr_dtor(&obj_tmp);
 4505|      2|	} else if ((mptr = zend_hash_find_ptr(&ce->function_table, lc_name)) != NULL) {
  ------------------
  |  Branch (4505:13): [True: 2, False: 0]
  ------------------
 4506|      2|		reflection_method_factory(ce, mptr, NULL, return_value);
 4507|      2|	} else {
 4508|      0|		zend_throw_exception_ex(reflection_exception_ptr, 0,
 4509|      0|				"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4510|      0|	}
 4511|      2|	zend_string_release(lc_name);
 4512|      2|}
zim_ReflectionClass_getMethods:
 4534|      7|{
 4535|      7|	reflection_object *intern;
 4536|      7|	zend_class_entry *ce;
 4537|      7|	zend_function *mptr;
 4538|      7|	zend_long filter;
 4539|      7|	bool filter_is_null = true;
 4540|       |
 4541|      7|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l!", &filter, &filter_is_null) == FAILURE) {
  ------------------
  |  |  529|      7|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4541:6): [True: 0, False: 7]
  ------------------
 4542|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4542:3): [True: 0, False: 0]
  |  Branch (4542:3): [True: 0, False: 0]
  ------------------
 4543|      0|	}
 4544|       |
 4545|      7|	if (filter_is_null) {
  ------------------
  |  Branch (4545:6): [True: 2, False: 5]
  ------------------
 4546|      2|		filter = ZEND_ACC_PPP_MASK | ZEND_ACC_ABSTRACT | ZEND_ACC_FINAL | ZEND_ACC_STATIC;
  ------------------
  |  |  421|      2|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      2|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
              		filter = ZEND_ACC_PPP_MASK | ZEND_ACC_ABSTRACT | ZEND_ACC_FINAL | ZEND_ACC_STATIC;
  ------------------
  |  |  233|      2|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
              		filter = ZEND_ACC_PPP_MASK | ZEND_ACC_ABSTRACT | ZEND_ACC_FINAL | ZEND_ACC_STATIC;
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              		filter = ZEND_ACC_PPP_MASK | ZEND_ACC_ABSTRACT | ZEND_ACC_FINAL | ZEND_ACC_STATIC;
  ------------------
  |  |  227|      2|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
 4547|      2|	}
 4548|       |
 4549|      7|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      7|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      7|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      7|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      7|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      7|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      7|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      7|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      7|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      7|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      7|	target = intern->ptr; \
  |  |  121|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (4549:2): [True: 0, False: 0]
  |  Branch (4549:2): [True: 0, False: 0]
  |  Branch (4549:2): [True: 0, False: 0]
  |  Branch (4549:2): [True: 0, False: 0]
  ------------------
 4550|       |
 4551|      7|	array_init(return_value);
 4552|     78|	ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, mptr) {
  ------------------
  |  | 1341|     32|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      7|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      7|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      7|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      7|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      7|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      7|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     39|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 32, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     32|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     32|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     32|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 32]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     32|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     32|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 32]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     32|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      7|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      7|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4552:2): [True: 0, False: 7]
  |  Branch (4552:2): [True: 7, False: 0]
  ------------------
 4553|     78|		_addmethod(mptr, ce, Z_ARRVAL_P(return_value), filter);
  ------------------
  |  |  997|     32|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     32|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     32|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4554|     78|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     32|		} \
  |  | 1102|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 4555|       |
 4556|      7|	if (instanceof_function(ce, zend_ce_closure)) {
  ------------------
  |  Branch (4556:6): [True: 5, False: 2]
  ------------------
 4557|      5|		bool has_obj = Z_TYPE(intern->obj) != IS_UNDEF;
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		bool has_obj = Z_TYPE(intern->obj) != IS_UNDEF;
  ------------------
  |  |  606|      5|#define IS_UNDEF					0
  ------------------
 4558|      5|		zval obj_tmp;
 4559|      5|		zend_object *obj;
 4560|      5|		if (!has_obj) {
  ------------------
  |  Branch (4560:7): [True: 0, False: 5]
  ------------------
 4561|      0|			object_init_ex(&obj_tmp, ce);
 4562|      0|			obj = Z_OBJ(obj_tmp);
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 4563|      5|		} else {
 4564|      5|			obj = Z_OBJ(intern->obj);
  ------------------
  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 4565|      5|		}
 4566|      5|		zend_function *closure = zend_get_closure_invoke_method(obj);
 4567|      5|		if (closure) {
  ------------------
  |  Branch (4567:7): [True: 5, False: 0]
  ------------------
 4568|      5|			if (!_addmethod(closure, ce, Z_ARRVAL_P(return_value), filter)) {
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4568:8): [True: 2, False: 3]
  ------------------
 4569|      2|				_free_function(closure);
 4570|      2|			}
 4571|      5|		}
 4572|      5|		if (!has_obj) {
  ------------------
  |  Branch (4572:7): [True: 0, False: 5]
  ------------------
 4573|      0|			zval_ptr_dtor(&obj_tmp);
 4574|      0|		}
 4575|      5|	}
 4576|      7|}
zim_ReflectionClass_hasProperty:
 4581|      4|{
 4582|      4|	reflection_object *intern;
 4583|      4|	zend_property_info *property_info;
 4584|      4|	zend_class_entry *ce;
 4585|      4|	zend_string *name;
 4586|       |
 4587|      4|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4587:6): [True: 0, False: 4]
  ------------------
 4588|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4588:3): [True: 0, False: 0]
  |  Branch (4588:3): [True: 0, False: 0]
  ------------------
 4589|      0|	}
 4590|       |
 4591|      4|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      4|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      4|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      4|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      4|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      4|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      4|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      4|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      4|	target = intern->ptr; \
  |  |  121|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (4591:2): [True: 0, False: 0]
  |  Branch (4591:2): [True: 0, False: 0]
  |  Branch (4591:2): [True: 0, False: 0]
  |  Branch (4591:2): [True: 0, False: 0]
  ------------------
 4592|      4|	if ((property_info = zend_hash_find_ptr(&ce->properties_info, name)) != NULL) {
  ------------------
  |  Branch (4592:6): [True: 0, False: 4]
  ------------------
 4593|      0|		if ((property_info->flags & ZEND_ACC_PRIVATE) && property_info->ce != ce) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4593:7): [True: 0, False: 0]
  |  Branch (4593:52): [True: 0, False: 0]
  ------------------
 4594|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4595|      0|		}
 4596|      0|		RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4597|      4|	} else {
 4598|      4|		if (Z_TYPE(intern->obj) != IS_UNDEF) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(intern->obj) != IS_UNDEF) {
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (4598:7): [True: 1, False: 3]
  ------------------
 4599|      1|			if (Z_OBJ_HANDLER(intern->obj, has_property)(Z_OBJ(intern->obj), name, ZEND_PROPERTY_EXISTS, NULL)) {
  ------------------
  |  | 1005|      1|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_OBJ_HANDLER(intern->obj, has_property)(Z_OBJ(intern->obj), name, ZEND_PROPERTY_EXISTS, NULL)) {
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              			if (Z_OBJ_HANDLER(intern->obj, has_property)(Z_OBJ(intern->obj), name, ZEND_PROPERTY_EXISTS, NULL)) {
  ------------------
  |  |  247|      1|#define ZEND_PROPERTY_EXISTS    0x2          /* Property exists */
  ------------------
  |  Branch (4599:8): [True: 0, False: 1]
  ------------------
 4600|      0|				RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4601|      0|			}
 4602|      1|		}
 4603|      4|		RETURN_FALSE;
  ------------------
  |  | 1069|      4|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      4|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      4|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      4|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4604|      4|	}
 4605|      4|}
zim_ReflectionClass_getProperty:
 4610|      3|{
 4611|      3|	reflection_object *intern;
 4612|      3|	zend_class_entry *ce, *ce2;
 4613|      3|	zend_property_info *property_info;
 4614|      3|	zend_string *name, *classname;
 4615|      3|	char *tmp, *str_name;
 4616|      3|	size_t classname_len, str_name_len;
 4617|       |
 4618|      3|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name) == FAILURE) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4618:6): [True: 0, False: 3]
  ------------------
 4619|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4619:3): [True: 0, False: 0]
  |  Branch (4619:3): [True: 0, False: 0]
  ------------------
 4620|      0|	}
 4621|       |
 4622|      3|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (4622:2): [True: 0, False: 0]
  |  Branch (4622:2): [True: 0, False: 0]
  |  Branch (4622:2): [True: 0, False: 0]
  |  Branch (4622:2): [True: 0, False: 0]
  ------------------
 4623|      3|	if ((property_info = zend_hash_find_ptr(&ce->properties_info, name)) != NULL) {
  ------------------
  |  Branch (4623:6): [True: 3, False: 0]
  ------------------
 4624|      3|		if (!(property_info->flags & ZEND_ACC_PRIVATE) || property_info->ce == ce) {
  ------------------
  |  |  221|      3|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4624:7): [True: 1, False: 2]
  |  Branch (4624:53): [True: 2, False: 0]
  ------------------
 4625|      3|			reflection_property_factory(ce, name, property_info, return_value);
 4626|      3|			return;
 4627|      3|		}
 4628|      3|	} else if (Z_TYPE(intern->obj) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	} else if (Z_TYPE(intern->obj) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (4628:13): [True: 0, False: 0]
  ------------------
 4629|       |		/* Check for dynamic properties */
 4630|      0|		if (zend_hash_exists(Z_OBJ_HT(intern->obj)->get_properties(Z_OBJ(intern->obj)), name)) {
  ------------------
  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		if (zend_hash_exists(Z_OBJ_HT(intern->obj)->get_properties(Z_OBJ(intern->obj)), name)) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  |  Branch (4630:7): [True: 0, False: 0]
  ------------------
 4631|      0|			reflection_property_factory(ce, name, NULL, return_value);
 4632|      0|			return;
 4633|      0|		}
 4634|      0|	}
 4635|      0|	str_name = ZSTR_VAL(name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4636|      0|	if ((tmp = strstr(ZSTR_VAL(name), "::")) != NULL) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (4636:6): [True: 0, False: 0]
  ------------------
 4637|      0|		classname_len = tmp - ZSTR_VAL(name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4638|      0|		classname = zend_string_alloc(classname_len, 0);
 4639|      0|		zend_str_tolower_copy(ZSTR_VAL(classname), ZSTR_VAL(name), classname_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_str_tolower_copy(ZSTR_VAL(classname), ZSTR_VAL(name), classname_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4640|      0|		ZSTR_VAL(classname)[classname_len] = '\0';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4641|      0|		str_name_len = ZSTR_LEN(name) - (classname_len + 2);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4642|      0|		str_name = tmp + 2;
 4643|       |
 4644|      0|		ce2 = zend_lookup_class(classname);
 4645|      0|		if (!ce2) {
  ------------------
  |  Branch (4645:7): [True: 0, False: 0]
  ------------------
 4646|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (4646:8): [True: 0, False: 0]
  ------------------
 4647|      0|				zend_throw_exception_ex(reflection_exception_ptr, -1, "Class \"%s\" does not exist", ZSTR_VAL(classname));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4648|      0|			}
 4649|      0|			zend_string_release_ex(classname, 0);
 4650|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4650:4): [True: 0, False: 0]
  |  Branch (4650:4): [True: 0, False: 0]
  ------------------
 4651|      0|		}
 4652|      0|		zend_string_release_ex(classname, 0);
 4653|       |
 4654|      0|		if (!instanceof_function(ce, ce2)) {
  ------------------
  |  Branch (4654:7): [True: 0, False: 0]
  ------------------
 4655|      0|			zend_throw_exception_ex(reflection_exception_ptr, -1, "Fully qualified property name %s::$%s does not specify a base class of %s", ZSTR_VAL(ce2->name), str_name, ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_throw_exception_ex(reflection_exception_ptr, -1, "Fully qualified property name %s::$%s does not specify a base class of %s", ZSTR_VAL(ce2->name), str_name, ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4656|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4656:4): [True: 0, False: 0]
  |  Branch (4656:4): [True: 0, False: 0]
  ------------------
 4657|      0|		}
 4658|      0|		ce = ce2;
 4659|       |
 4660|      0|		property_info = zend_hash_str_find_ptr(&ce->properties_info, str_name, str_name_len);
 4661|      0|		if (property_info != NULL
  ------------------
  |  Branch (4661:7): [True: 0, False: 0]
  ------------------
 4662|      0|		 && (!(property_info->flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4662:8): [True: 0, False: 0]
  ------------------
 4663|      0|		  || property_info->ce == ce)) {
  ------------------
  |  Branch (4663:8): [True: 0, False: 0]
  ------------------
 4664|      0|			reflection_property_factory_str(ce, str_name, str_name_len, property_info, return_value);
 4665|      0|			return;
 4666|      0|		}
 4667|      0|	}
 4668|      0|	zend_throw_exception_ex(reflection_exception_ptr, 0, "Property %s::$%s does not exist", ZSTR_VAL(ce->name), str_name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4669|      0|}
zim_ReflectionClass_hasConstant:
 4746|      5|{
 4747|      5|	reflection_object *intern;
 4748|      5|	zend_class_entry *ce;
 4749|      5|	zend_string *name;
 4750|       |
 4751|      5|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name) == FAILURE) {
  ------------------
  |  |  529|      5|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4751:6): [True: 0, False: 5]
  ------------------
 4752|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4752:3): [True: 0, False: 0]
  |  Branch (4752:3): [True: 0, False: 0]
  ------------------
 4753|      0|	}
 4754|       |
 4755|      5|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      5|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      5|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      5|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      5|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      5|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      5|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      5|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      5|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      5|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      5|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      5|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      5|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      5|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      5|	target = intern->ptr; \
  |  |  121|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 5]
  |  |  ------------------
  ------------------
  |  Branch (4755:2): [True: 0, False: 0]
  |  Branch (4755:2): [True: 0, False: 0]
  |  Branch (4755:2): [True: 0, False: 0]
  |  Branch (4755:2): [True: 0, False: 0]
  ------------------
 4756|      5|	if (zend_hash_exists(&ce->constants_table, name)) {
  ------------------
  |  Branch (4756:6): [True: 1, False: 4]
  ------------------
 4757|      1|		RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4758|      4|	} else {
 4759|      4|		RETURN_FALSE;
  ------------------
  |  | 1069|      4|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      4|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      4|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      4|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      4|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4760|      4|	}
 4761|      5|}
zim_ReflectionClass_getConstants:
 4766|      1|{
 4767|      1|	reflection_object *intern;
 4768|      1|	zend_class_entry *ce;
 4769|      1|	zend_string *key;
 4770|      1|	zend_class_constant *constant;
 4771|      1|	zval val;
 4772|      1|	zend_long filter;
 4773|      1|	bool filter_is_null = true;
 4774|       |
 4775|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l!", &filter, &filter_is_null) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4775:6): [True: 0, False: 1]
  ------------------
 4776|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4776:3): [True: 0, False: 0]
  |  Branch (4776:3): [True: 0, False: 0]
  ------------------
 4777|      0|	}
 4778|       |
 4779|      1|	if (filter_is_null) {
  ------------------
  |  Branch (4779:6): [True: 1, False: 0]
  ------------------
 4780|      1|		filter = ZEND_ACC_PPP_MASK;
  ------------------
  |  |  421|      1|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      1|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
 4781|      1|	}
 4782|       |
 4783|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4783:2): [True: 0, False: 0]
  |  Branch (4783:2): [True: 0, False: 0]
  |  Branch (4783:2): [True: 0, False: 0]
  |  Branch (4783:2): [True: 0, False: 0]
  ------------------
 4784|       |
 4785|      1|	array_init(return_value);
 4786|      6|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(CE_CONSTANTS_TABLE(ce), key, constant) {
  ------------------
  |  | 1448|      2|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      3|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      2|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      2|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      2|	_key = _p->key; \
  |  | 1450|      2|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4786:2): [True: 0, False: 1]
  |  Branch (4786:2): [True: 1, False: 0]
  ------------------
 4787|      6|		if (UNEXPECTED(Z_TYPE(constant->value) == IS_CONSTANT_AST && zend_update_class_constant(constant, key, constant->ce) != SUCCESS)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 2, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 4788|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4788:4): [True: 0, False: 0]
  |  Branch (4788:4): [True: 0, False: 0]
  ------------------
 4789|      0|		}
 4790|       |
 4791|      2|		if (ZEND_CLASS_CONST_FLAGS(constant) & filter) {
  ------------------
  |  |  498|      2|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      2|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
  |  Branch (4791:7): [True: 2, False: 0]
  ------------------
 4792|      2|			ZVAL_COPY_OR_DUP(&val, &constant->value);
  ------------------
  |  | 1457|      2|	do {																\
  |  | 1458|      2|		zval *_z1 = (z);												\
  |  | 1459|      2|		const zval *_z2 = (v);											\
  |  | 1460|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      2|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      2|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 2, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      2|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      2|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      2|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      2|		}																\
  |  | 1472|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4793|      2|			zend_hash_add_new(Z_ARRVAL_P(return_value), key, &val);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4794|      2|		}
 4795|      2|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4796|      1|}
zim_ReflectionClass_getConstant:
 4832|      2|{
 4833|      2|	reflection_object *intern;
 4834|      2|	zend_class_entry *ce;
 4835|      2|	const HashTable *constants_table;
 4836|      2|	zend_class_constant *c;
 4837|      2|	zend_string *name, *key;
 4838|       |
 4839|      2|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4839:6): [True: 0, False: 2]
  ------------------
 4840|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4840:3): [True: 0, False: 0]
  |  Branch (4840:3): [True: 0, False: 0]
  ------------------
 4841|      0|	}
 4842|       |
 4843|      2|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (4843:2): [True: 0, False: 0]
  |  Branch (4843:2): [True: 0, False: 0]
  |  Branch (4843:2): [True: 0, False: 0]
  |  Branch (4843:2): [True: 0, False: 0]
  ------------------
 4844|      2|	constants_table = CE_CONSTANTS_TABLE(ce);
  ------------------
  |  |  334|      2|	zend_class_constants_table(ce)
  ------------------
 4845|      8|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(constants_table, key, c) {
  ------------------
  |  | 1448|      2|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      4|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      2|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      2|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      2|	_key = _p->key; \
  |  | 1450|      2|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4845:2): [True: 0, False: 2]
  |  Branch (4845:2): [True: 2, False: 0]
  ------------------
 4846|      8|		if (UNEXPECTED(Z_TYPE(c->value) == IS_CONSTANT_AST && zend_update_class_constant(c, key, c->ce) != SUCCESS)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4847|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4847:4): [True: 0, False: 0]
  |  Branch (4847:4): [True: 0, False: 0]
  ------------------
 4848|      0|		}
 4849|      8|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4850|      2|	if ((c = zend_hash_find_ptr(constants_table, name)) == NULL) {
  ------------------
  |  Branch (4850:6): [True: 1, False: 1]
  ------------------
 4851|      1|		zend_error(
 4852|      1|			E_DEPRECATED,
  ------------------
  |  |   36|      1|#define E_DEPRECATED		(1<<13L)
  ------------------
 4853|      1|			"ReflectionClass::getConstant() for a non-existent constant is deprecated, "
 4854|      1|				"use ReflectionClass::hasConstant() to check if the constant exists"
 4855|      1|		);
 4856|      1|		RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4857|      1|	}
 4858|      1|	ZVAL_COPY_OR_DUP(return_value, &c->value);
  ------------------
  |  | 1457|      1|	do {																\
  |  | 1458|      1|		zval *_z1 = (z);												\
  |  | 1459|      1|		const zval *_z2 = (v);											\
  |  | 1460|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4859|      1|}
zim_ReflectionClass_isCloneable:
 4918|      1|{
 4919|      1|	reflection_object *intern;
 4920|      1|	zend_class_entry *ce;
 4921|      1|	zval obj;
 4922|       |
 4923|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4924|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4924:2): [True: 0, False: 0]
  |  Branch (4924:2): [True: 0, False: 0]
  |  Branch (4924:2): [True: 0, False: 0]
  |  Branch (4924:2): [True: 0, False: 0]
  ------------------
 4925|      1|	if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
  ------------------
  |  |  281|      1|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              	if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
  ------------------
  |  |  282|      1|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
              	if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
  ------------------
  |  |  234|      1|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
              	if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
  ------------------
  |  |  291|      1|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
              	if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS | ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|      1|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (4925:6): [True: 0, False: 1]
  ------------------
 4926|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4927|      0|	}
 4928|      1|	if (ce->clone) {
  ------------------
  |  Branch (4928:6): [True: 0, False: 1]
  ------------------
 4929|      0|		RETURN_BOOL(ce->clone->common.fn_flags & ZEND_ACC_PUBLIC);
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4930|      0|	}
 4931|      1|	if (!Z_ISUNDEF(intern->obj)) {
  ------------------
  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (4931:6): [True: 0, False: 1]
  ------------------
 4932|      0|		RETURN_BOOL(Z_OBJ_HANDLER(intern->obj, clone_obj) != NULL);
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4933|      1|	} else {
 4934|      1|		if (UNEXPECTED(object_init_ex(&obj, ce) != SUCCESS)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 4935|      0|			return;
 4936|      0|		}
 4937|       |		/* We're not calling the constructor, so don't call the destructor either. */
 4938|      1|		zend_object_store_ctor_failed(Z_OBJ(obj));
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 4939|      1|		RETVAL_BOOL(Z_OBJ_HANDLER(obj, clone_obj) != NULL);
  ------------------
  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4940|      1|		zval_ptr_dtor(&obj);
 4941|      1|	}
 4942|      1|}
zim_ReflectionClass_isFinal:
 4966|      1|{
 4967|      1|	_class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_FINAL);
  ------------------
  |  |   49|      1|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	_class_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      1|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
 4968|      1|}
zim_ReflectionClass_newInstance:
 5015|      1|{
 5016|      1|	reflection_object *intern;
 5017|      1|	zend_class_entry *ce;
 5018|      1|	zend_function *constructor;
 5019|       |
 5020|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5020:2): [True: 0, False: 0]
  |  Branch (5020:2): [True: 0, False: 0]
  |  Branch (5020:2): [True: 0, False: 0]
  |  Branch (5020:2): [True: 0, False: 0]
  ------------------
 5021|       |
 5022|      1|	if (UNEXPECTED(object_init_ex(return_value, ce) != SUCCESS)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 5023|      1|		return;
 5024|      1|	}
 5025|       |
 5026|      0|	const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 5027|      0|	EG(fake_scope) = ce;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 5028|      0|	constructor = Z_OBJ_HT_P(return_value)->get_constructor(Z_OBJ_P(return_value));
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	constructor = Z_OBJ_HT_P(return_value)->get_constructor(Z_OBJ_P(return_value));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5029|      0|	EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 5030|       |
 5031|       |	/* Run the constructor if there is one */
 5032|      0|	if (constructor) {
  ------------------
  |  Branch (5032:6): [True: 0, False: 0]
  ------------------
 5033|      0|		zval *params;
 5034|      0|		int num_args;
 5035|      0|		HashTable *named_params;
 5036|       |
 5037|      0|		if (!(constructor->common.fn_flags & ZEND_ACC_PUBLIC)) {
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (5037:7): [True: 0, False: 0]
  ------------------
 5038|      0|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Access to non-public constructor of class %s", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5039|      0|			zval_ptr_dtor(return_value);
 5040|      0|			RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5041|      0|		}
 5042|       |
 5043|      0|		ZEND_PARSE_PARAMETERS_START(0, -1)
  ------------------
  |  | 1629|      0|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      0|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      0|		const int _flags = (flags); \
  |  |  |  | 1599|      0|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      0|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      0|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      0|		uint32_t _i = 0; \
  |  |  |  | 1603|      0|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      0|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      0|		char *_error = NULL; \
  |  |  |  | 1606|      0|		bool _dummy = 0; \
  |  |  |  | 1607|      0|		bool _optional = 0; \
  |  |  |  | 1608|      0|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      0|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      0|		((void)_i); \
  |  |  |  | 1610|      0|		((void)_real_arg); \
  |  |  |  | 1611|      0|		((void)_arg); \
  |  |  |  | 1612|      0|		((void)_expected_type); \
  |  |  |  | 1613|      0|		((void)_error); \
  |  |  |  | 1614|      0|		((void)_optional); \
  |  |  |  | 1615|      0|		((void)_dummy); \
  |  |  |  | 1616|      0|		\
  |  |  |  | 1617|      0|		do { \
  |  |  |  | 1618|      0|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      0|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      0|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5044|      0|			Z_PARAM_VARIADIC_WITH_NAMED(params, num_args, named_params)
  ------------------
  |  | 2142|      0|#define Z_PARAM_VARIADIC_WITH_NAMED(dest, dest_num, dest_named) do { \
  |  | 2143|      0|		uint32_t _num_varargs = _num_args - _i; \
  |  | 2144|      0|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2145|      0|			dest = _real_arg + 1; \
  |  | 2146|      0|			dest_num = _num_varargs; \
  |  | 2147|      0|		} else { \
  |  | 2148|      0|			dest = NULL; \
  |  | 2149|      0|			dest_num = 0; \
  |  | 2150|      0|		} \
  |  | 2151|      0|		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  687|      0|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  673|      0|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  |  |  ------------------
  |  |  |  Branch (2151:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 2152|      0|			dest_named = execute_data->extra_named_params; \
  |  | 2153|      0|		} else { \
  |  | 2154|      0|			dest_named = NULL; \
  |  | 2155|      0|		} \
  |  | 2156|      0|	} while (0);
  |  |  ------------------
  |  |  |  Branch (2156:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5045|      0|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      0|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5045:3): [True: 0, False: 0]
  |  Branch (5045:3): [True: 0, False: 0]
  |  Branch (5045:3): [True: 0, False: 0]
  |  Branch (5045:3): [True: 0, False: 0]
  ------------------
 5046|       |
 5047|      0|		zend_call_known_function(
 5048|      0|			constructor, Z_OBJ_P(return_value), Z_OBJCE_P(return_value), NULL,
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			constructor, Z_OBJ_P(return_value), Z_OBJCE_P(return_value), NULL,
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5049|      0|			num_args, params, named_params);
 5050|       |
 5051|      0|		if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5052|      0|			zend_object_store_ctor_failed(Z_OBJ_P(return_value));
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5053|      0|		}
 5054|      0|	} else if (ZEND_NUM_ARGS()) {
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (712:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5055|      0|		zend_throw_exception_ex(reflection_exception_ptr, 0, "Class %s does not have a constructor, so you cannot pass any constructor arguments", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5056|      0|	}
 5057|      0|}
zim_ReflectionClass_newInstanceWithoutConstructor:
 5062|      1|{
 5063|      1|	reflection_object *intern;
 5064|      1|	zend_class_entry *ce;
 5065|       |
 5066|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5066:2): [True: 0, False: 0]
  |  Branch (5066:2): [True: 0, False: 0]
  |  Branch (5066:2): [True: 0, False: 0]
  |  Branch (5066:2): [True: 0, False: 0]
  ------------------
 5067|       |
 5068|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5069|       |
 5070|      1|	if (ce->type == ZEND_INTERNAL_CLASS
  ------------------
  |  Branch (5070:6): [True: 0, False: 1]
  ------------------
 5071|      0|			&& ce->create_object != NULL && (ce->ce_flags & ZEND_ACC_FINAL)) {
  ------------------
  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (5071:7): [True: 0, False: 0]
  |  Branch (5071:36): [True: 0, False: 0]
  ------------------
 5072|      0|		zend_throw_exception_ex(reflection_exception_ptr, 0, "Class %s is an internal class marked as final that cannot be instantiated without invoking its constructor", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5073|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5073:3): [True: 0, False: 0]
  |  Branch (5073:3): [True: 0, False: 0]
  ------------------
 5074|      0|	}
 5075|       |
 5076|      1|	object_init_ex(return_value, ce);
 5077|      1|}
reflection_class_new_lazy:
 5130|      8|{
 5131|      8|	reflection_object *intern;
 5132|      8|	zend_object *obj;
 5133|      8|	zend_class_entry *ce;
 5134|      8|	zend_fcall_info fci;
 5135|      8|	zend_fcall_info_cache fcc;
 5136|      8|	zend_long options = 0;
 5137|       |
 5138|      8|	ZEND_ASSERT(strategy == ZEND_LAZY_OBJECT_STRATEGY_GHOST
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5138:2): [True: 8, False: 0]
  |  Branch (5138:2): [True: 0, False: 0]
  |  Branch (5138:2): [True: 6, False: 2]
  |  Branch (5138:2): [True: 2, False: 0]
  ------------------
 5139|      8|			|| strategy == ZEND_LAZY_OBJECT_STRATEGY_PROXY);
 5140|       |
 5141|      8|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      8|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      8|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      8|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      8|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      8|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      8|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      8|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      8|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      8|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      8|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      8|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      8|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      8|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      8|	target = intern->ptr; \
  |  |  121|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (5141:2): [True: 0, False: 0]
  |  Branch (5141:2): [True: 0, False: 0]
  |  Branch (5141:2): [True: 0, False: 0]
  |  Branch (5141:2): [True: 0, False: 0]
  ------------------
 5142|       |
 5143|      8|	if (is_reset) {
  ------------------
  |  Branch (5143:6): [True: 0, False: 8]
  ------------------
 5144|      0|		ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|      0|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      0|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      0|		const int _flags = (flags); \
  |  |  |  | 1599|      0|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      0|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      0|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      0|		uint32_t _i = 0; \
  |  |  |  | 1603|      0|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      0|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      0|		char *_error = NULL; \
  |  |  |  | 1606|      0|		bool _dummy = 0; \
  |  |  |  | 1607|      0|		bool _optional = 0; \
  |  |  |  | 1608|      0|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      0|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      0|		((void)_i); \
  |  |  |  | 1610|      0|		((void)_real_arg); \
  |  |  |  | 1611|      0|		((void)_arg); \
  |  |  |  | 1612|      0|		((void)_expected_type); \
  |  |  |  | 1613|      0|		((void)_error); \
  |  |  |  | 1614|      0|		((void)_optional); \
  |  |  |  | 1615|      0|		((void)_dummy); \
  |  |  |  | 1616|      0|		\
  |  |  |  | 1617|      0|		do { \
  |  |  |  | 1618|      0|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      0|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      0|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      0|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      0|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5145|      0|			Z_PARAM_OBJ_OF_CLASS(obj, ce)
  ------------------
  |  | 2006|      0|	Z_PARAM_OBJ_OF_CLASS_EX(dest, _ce, 0, 0)
  |  |  ------------------
  |  |  |  | 1992|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1993|      0|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1994|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1994:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1995|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1996|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1996:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1997|      0|				break; \
  |  |  |  | 1998|      0|			} else { \
  |  |  |  | 1999|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1999:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2000|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2001|      0|				break; \
  |  |  |  | 2002|      0|			} \
  |  |  |  | 2003|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  |  Branch (5145:4): [True: 0, False: 0]
  ------------------
 5146|      0|			Z_PARAM_FUNC(fci, fcc)
  ------------------
  |  | 1833|      0|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      0|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  |  Branch (5146:4): [True: 0, False: 0]
  ------------------
 5147|      0|			Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      0|	_optional = 1;
  ------------------
 5148|      0|			Z_PARAM_LONG(options)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  |  Branch (5148:4): [True: 0, False: 0]
  ------------------
 5149|      0|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      0|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5149:3): [True: 0, False: 0]
  |  Branch (5149:3): [True: 0, False: 0]
  |  Branch (5149:3): [True: 0, False: 0]
  |  Branch (5149:3): [True: 0, False: 0]
  ------------------
 5150|      8|	} else {
 5151|     24|		ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5152|     32|			Z_PARAM_FUNC(fci, fcc)
  ------------------
  |  | 1833|      8|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      8|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      8|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (5152:4): [True: 8, False: 0]
  |  Branch (5152:4): [True: 0, False: 0]
  |  Branch (5152:4): [True: 8, False: 0]
  |  Branch (5152:4): [True: 0, False: 0]
  |  Branch (5152:4): [True: 8, False: 0]
  |  Branch (5152:4): [True: 0, False: 0]
  |  Branch (5152:4): [True: 0, False: 8]
  |  Branch (5152:4): [True: 8, False: 0]
  |  Branch (5152:4): [True: 0, False: 0]
  |  Branch (5152:4): [True: 0, False: 0]
  ------------------
 5153|      8|			Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      8|	_optional = 1;
  ------------------
 5154|     16|			Z_PARAM_LONG(options)
  ------------------
  |  | 1905|      8|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      8|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      8|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 8, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      8|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5154:4): [True: 8, False: 0]
  |  Branch (5154:4): [True: 0, False: 0]
  |  Branch (5154:4): [True: 0, False: 8]
  |  Branch (5154:4): [True: 8, False: 0]
  |  Branch (5154:4): [True: 8, False: 0]
  |  Branch (5154:4): [True: 0, False: 0]
  |  Branch (5154:4): [True: 8, False: 0]
  |  Branch (5154:4): [True: 0, False: 0]
  |  Branch (5154:4): [True: 0, False: 0]
  |  Branch (5154:4): [True: 0, False: 0]
  ------------------
 5155|      8|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5155:3): [True: 0, False: 0]
  |  Branch (5155:3): [True: 0, False: 0]
  |  Branch (5155:3): [True: 0, False: 0]
  |  Branch (5155:3): [True: 0, False: 0]
  ------------------
 5156|      8|		obj = NULL;
 5157|      8|	}
 5158|       |
 5159|      8|	if (options & ~ZEND_LAZY_OBJECT_USER_MASK) {
  ------------------
  |  |   38|      8|#define ZEND_LAZY_OBJECT_USER_MASK (                                        \
  |  |   39|      8|	ZEND_LAZY_OBJECT_SKIP_INITIALIZATION_ON_SERIALIZE |                     \
  |  |  ------------------
  |  |  |  |   33|      8|#define ZEND_LAZY_OBJECT_SKIP_INITIALIZATION_ON_SERIALIZE   (1<<3)
  |  |  ------------------
  |  |   40|      8|	ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR                                        \
  |  |  ------------------
  |  |  |  |   36|      8|#define ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR                    (1<<4)
  |  |  ------------------
  |  |   41|      8|)
  ------------------
  |  Branch (5159:6): [True: 0, False: 8]
  ------------------
 5160|      0|		uint32_t arg_num = 2 + is_reset;
 5161|      0|		zend_argument_error(reflection_exception_ptr, arg_num,
 5162|      0|				"contains invalid flags");
 5163|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5163:3): [True: 0, False: 0]
  |  Branch (5163:3): [True: 0, False: 0]
  ------------------
 5164|      0|	}
 5165|       |
 5166|      8|	if (!is_reset && (options & ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR)) {
  ------------------
  |  |   36|      8|#define ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR                    (1<<4)
  ------------------
  |  Branch (5166:6): [True: 8, False: 0]
  |  Branch (5166:19): [True: 0, False: 8]
  ------------------
 5167|      0|		zend_argument_error(reflection_exception_ptr, 2,
 5168|      0|				"does not accept ReflectionClass::SKIP_DESTRUCTOR");
 5169|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5169:3): [True: 0, False: 0]
  |  Branch (5169:3): [True: 0, False: 0]
  ------------------
 5170|      0|	}
 5171|       |
 5172|      8|	if (is_reset) {
  ------------------
  |  Branch (5172:6): [True: 0, False: 8]
  ------------------
 5173|      0|		if (zend_object_is_lazy(obj) && !zend_lazy_object_initialized(obj)) {
  ------------------
  |  Branch (5173:7): [True: 0, False: 0]
  |  Branch (5173:35): [True: 0, False: 0]
  ------------------
 5174|      0|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Object is already lazy");
 5175|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5175:4): [True: 0, False: 0]
  |  Branch (5175:4): [True: 0, False: 0]
  ------------------
 5176|      0|		}
 5177|      8|	} else {
 5178|      8|		obj = NULL;
 5179|      8|	}
 5180|       |
 5181|      8|	if (!fcc.function_handler) {
  ------------------
  |  Branch (5181:6): [True: 0, False: 8]
  ------------------
 5182|       |		/* Call trampoline has been cleared by zpp. Refetch it, because we want to deal
 5183|       |		 * with it ourselves. It is important that it is not refetched on every call,
 5184|       |		 * because calls may occur from different scopes. */
 5185|      0|		zend_is_callable_ex(&fci.function_name, NULL, 0, NULL, &fcc, NULL);
 5186|      0|	}
 5187|       |
 5188|      8|	obj = zend_object_make_lazy(obj, ce, &fci.function_name, &fcc,
 5189|      8|			strategy | options);
 5190|       |
 5191|      8|	if (!obj) {
  ------------------
  |  Branch (5191:6): [True: 2, False: 6]
  ------------------
 5192|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5192:3): [True: 0, False: 2]
  |  Branch (5192:3): [True: 2, False: 0]
  ------------------
 5193|      2|	}
 5194|       |
 5195|      6|	if (!is_reset) {
  ------------------
  |  Branch (5195:6): [True: 6, False: 0]
  ------------------
 5196|      6|		RETURN_OBJ(obj);
  ------------------
  |  | 1063|      6|#define RETURN_OBJ(r)					do { RETVAL_OBJ(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1037|      6|#define RETVAL_OBJ(r)					ZVAL_OBJ(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1140|      6|#define ZVAL_OBJ(z, o) do {						\
  |  |  |  |  |  | 1141|      6|		zval *__z = (z);						\
  |  |  |  |  |  | 1142|      6|		Z_OBJ_P(__z) = (o);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1143|      6|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  830|      6|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  614|      6|#define IS_OBJECT					8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1144|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1144:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1063:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5197|      6|	}
 5198|      6|}
zim_ReflectionClass_newLazyGhost:
 5202|      6|{
 5203|      6|	reflection_class_new_lazy(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |   49|      6|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 5204|      6|			ZEND_LAZY_OBJECT_STRATEGY_GHOST, /* is_reset */ false);
  ------------------
  |  |   27|      6|#define ZEND_LAZY_OBJECT_STRATEGY_GHOST                     (1<<1)
  ------------------
 5205|      6|}
zim_ReflectionClass_newLazyProxy:
 5210|      2|{
 5211|      2|	reflection_class_new_lazy(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |   49|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 5212|      2|			ZEND_LAZY_OBJECT_STRATEGY_PROXY, /* is_reset */ false);
  ------------------
  |  |   24|      2|#define ZEND_LAZY_OBJECT_STRATEGY_PROXY                     (1<<0)
  ------------------
 5213|      2|}
zim_ReflectionClass_getInterfaceNames:
 5350|      1|{
 5351|      1|	reflection_object *intern;
 5352|      1|	zend_class_entry *ce;
 5353|      1|	uint32_t i;
 5354|       |
 5355|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5356|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5356:2): [True: 0, False: 0]
  |  Branch (5356:2): [True: 0, False: 0]
  |  Branch (5356:2): [True: 0, False: 0]
  |  Branch (5356:2): [True: 0, False: 0]
  ------------------
 5357|       |
 5358|      1|	if (!ce->num_interfaces) {
  ------------------
  |  Branch (5358:6): [True: 0, False: 1]
  ------------------
 5359|       |		/* Return an empty array if this class implements no interfaces */
 5360|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5361|      0|	}
 5362|       |
 5363|      1|	ZEND_ASSERT(ce->ce_flags & ZEND_ACC_LINKED);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (5363:2): [True: 0, False: 1]
  |  Branch (5363:2): [True: 1, False: 0]
  ------------------
 5364|      1|	array_init(return_value);
 5365|       |
 5366|      2|	for (i=0; i < ce->num_interfaces; i++) {
  ------------------
  |  Branch (5366:12): [True: 1, False: 1]
  ------------------
 5367|      1|		add_next_index_str(return_value, zend_string_copy(ce->interfaces[i]->name));
 5368|      1|	}
 5369|      1|}
zim_ReflectionClass_getParentClass:
 5475|      2|{
 5476|      2|	reflection_object *intern;
 5477|      2|	zend_class_entry *ce;
 5478|       |
 5479|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 5480|      2|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (5480:2): [True: 0, False: 0]
  |  Branch (5480:2): [True: 0, False: 0]
  |  Branch (5480:2): [True: 0, False: 0]
  |  Branch (5480:2): [True: 0, False: 0]
  ------------------
 5481|       |
 5482|      2|	if (ce->parent) {
  ------------------
  |  Branch (5482:6): [True: 1, False: 1]
  ------------------
 5483|      1|		zend_reflection_class_factory(ce->parent, return_value);
 5484|      1|	} else {
 5485|      1|		RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5486|      1|	}
 5487|      2|}
zim_ReflectionClass_isSubclassOf:
 5492|      2|{
 5493|      2|	reflection_object *intern, *argument;
 5494|      2|	zend_class_entry *ce, *class_ce;
 5495|      2|	zend_string *class_str;
 5496|      2|	zend_object *class_obj;
 5497|       |
 5498|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5499|     10|		Z_PARAM_OBJ_OF_CLASS_OR_STR(class_obj, reflection_class_ptr, class_str)
  ------------------
  |  | 1797|      2|	Z_PARAM_OBJ_OF_CLASS_OR_STR_EX(destination_object, base_ce, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1783|      2|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1784|      2|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, base_ce, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1785|      0|		if (base_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1785:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1786|      0|			_error = ZSTR_VAL((base_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1787|      0|			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1589|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL 6
  |  |  |  |  ------------------
  |  |  |  |               			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1588|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING         5
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1787:18): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1788|      0|			break; \
  |  |  |  | 1789|      0|		} else { \
  |  |  |  | 1790|      0|			_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1790:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1791|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1792|      0|			break; \
  |  |  |  | 1793|      0|		} \
  |  |  |  | 1794|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (5499:3): [True: 2, False: 0]
  |  Branch (5499:3): [True: 0, False: 0]
  |  Branch (5499:3): [True: 2, False: 0]
  |  Branch (5499:3): [True: 0, False: 0]
  |  Branch (5499:3): [True: 2, False: 0]
  |  Branch (5499:3): [True: 0, False: 0]
  |  Branch (5499:3): [True: 0, False: 2]
  |  Branch (5499:3): [True: 2, False: 0]
  |  Branch (5499:3): [True: 0, False: 0]
  |  Branch (5499:3): [True: 0, False: 0]
  ------------------
 5500|     10|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5500:2): [True: 2, False: 0]
  |  Branch (5500:2): [True: 0, False: 0]
  |  Branch (5500:2): [True: 2, False: 0]
  |  Branch (5500:2): [True: 0, False: 0]
  ------------------
 5501|       |
 5502|      2|	if (class_obj) {
  ------------------
  |  Branch (5502:6): [True: 1, False: 1]
  ------------------
 5503|      1|		argument = reflection_object_from_obj(class_obj);
  ------------------
  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
 5504|      1|		if (argument->ptr == NULL) {
  ------------------
  |  Branch (5504:7): [True: 0, False: 1]
  ------------------
 5505|      0|			zend_throw_error(NULL, "Internal error: Failed to retrieve the argument's reflection object");
 5506|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5506:4): [True: 0, False: 0]
  |  Branch (5506:4): [True: 0, False: 0]
  ------------------
 5507|      0|		}
 5508|       |
 5509|      1|		class_ce = argument->ptr;
 5510|      1|	} else {
 5511|      1|		if ((class_ce = zend_lookup_class(class_str)) == NULL) {
  ------------------
  |  Branch (5511:7): [True: 1, False: 0]
  ------------------
 5512|      1|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Class \"%s\" does not exist", ZSTR_VAL(class_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5513|      1|			RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5513:4): [True: 0, False: 1]
  |  Branch (5513:4): [True: 1, False: 0]
  ------------------
 5514|      1|		}
 5515|      1|	}
 5516|       |
 5517|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5517:2): [True: 0, False: 0]
  |  Branch (5517:2): [True: 0, False: 0]
  |  Branch (5517:2): [True: 0, False: 0]
  |  Branch (5517:2): [True: 0, False: 0]
  ------------------
 5518|       |
 5519|      1|	RETURN_BOOL((ce != class_ce && instanceof_function(ce, class_ce)));
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 1]
  |  |  |  |  |  |  |  Branch (1073:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5520|      1|}
zim_ReflectionClass_implementsInterface:
 5525|      1|{
 5526|      1|	reflection_object *intern, *argument;
 5527|      1|	zend_string *interface_str;
 5528|      1|	zend_class_entry *ce, *interface_ce;
 5529|      1|	zend_object *interface_obj;
 5530|       |
 5531|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5532|      5|		Z_PARAM_OBJ_OF_CLASS_OR_STR(interface_obj, reflection_class_ptr, interface_str)
  ------------------
  |  | 1797|      1|	Z_PARAM_OBJ_OF_CLASS_OR_STR_EX(destination_object, base_ce, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1783|      1|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1784|      1|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, base_ce, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1785|      0|		if (base_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1785:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1786|      0|			_error = ZSTR_VAL((base_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1787|      0|			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1589|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL 6
  |  |  |  |  ------------------
  |  |  |  |               			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1588|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING         5
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1787:18): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1788|      0|			break; \
  |  |  |  | 1789|      0|		} else { \
  |  |  |  | 1790|      0|			_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1790:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1791|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1792|      0|			break; \
  |  |  |  | 1793|      0|		} \
  |  |  |  | 1794|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (5532:3): [True: 1, False: 0]
  |  Branch (5532:3): [True: 0, False: 0]
  |  Branch (5532:3): [True: 1, False: 0]
  |  Branch (5532:3): [True: 0, False: 0]
  |  Branch (5532:3): [True: 1, False: 0]
  |  Branch (5532:3): [True: 0, False: 0]
  |  Branch (5532:3): [True: 0, False: 1]
  |  Branch (5532:3): [True: 1, False: 0]
  |  Branch (5532:3): [True: 0, False: 0]
  |  Branch (5532:3): [True: 0, False: 0]
  ------------------
 5533|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5533:2): [True: 1, False: 0]
  |  Branch (5533:2): [True: 0, False: 0]
  |  Branch (5533:2): [True: 1, False: 0]
  |  Branch (5533:2): [True: 0, False: 0]
  ------------------
 5534|       |
 5535|      1|	if (interface_obj) {
  ------------------
  |  Branch (5535:6): [True: 0, False: 1]
  ------------------
 5536|      0|		argument = reflection_object_from_obj(interface_obj);
  ------------------
  |  |  177|      0|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  ------------------
  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      0|	)
  |  |  ------------------
  ------------------
 5537|      0|		if (argument->ptr == NULL) {
  ------------------
  |  Branch (5537:7): [True: 0, False: 0]
  ------------------
 5538|      0|			zend_throw_error(NULL, "Internal error: Failed to retrieve the argument's reflection object");
 5539|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5539:4): [True: 0, False: 0]
  |  Branch (5539:4): [True: 0, False: 0]
  ------------------
 5540|      0|		}
 5541|       |
 5542|      0|		interface_ce = argument->ptr;
 5543|      1|	} else {
 5544|      1|		if ((interface_ce = zend_lookup_class(interface_str)) == NULL) {
  ------------------
  |  Branch (5544:7): [True: 0, False: 1]
  ------------------
 5545|      0|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Interface \"%s\" does not exist", ZSTR_VAL(interface_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5546|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5546:4): [True: 0, False: 0]
  |  Branch (5546:4): [True: 0, False: 0]
  ------------------
 5547|      0|		}
 5548|      1|	}
 5549|       |
 5550|      1|	if (!(interface_ce->ce_flags & ZEND_ACC_INTERFACE)) {
  ------------------
  |  |  281|      1|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (5550:6): [True: 1, False: 0]
  ------------------
 5551|      1|		zend_throw_exception_ex(reflection_exception_ptr, 0, "%s is not an interface", ZSTR_VAL(interface_ce->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5552|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5552:3): [True: 0, False: 1]
  |  Branch (5552:3): [True: 1, False: 0]
  ------------------
 5553|      1|	}
 5554|       |
 5555|      0|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      0|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      0|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      0|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      0|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      0|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      0|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      0|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|	target = intern->ptr; \
  |  |  121|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5555:2): [True: 0, False: 0]
  |  Branch (5555:2): [True: 0, False: 0]
  |  Branch (5555:2): [True: 0, False: 0]
  |  Branch (5555:2): [True: 0, False: 0]
  ------------------
 5556|       |
 5557|      0|	RETURN_BOOL(instanceof_function(ce, interface_ce));
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5558|      0|}
zim_ReflectionClass_getExtension:
 5583|      1|{
 5584|      1|	reflection_object *intern;
 5585|      1|	zend_class_entry *ce;
 5586|       |
 5587|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5588|       |
 5589|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5589:2): [True: 0, False: 0]
  |  Branch (5589:2): [True: 0, False: 0]
  |  Branch (5589:2): [True: 0, False: 0]
  |  Branch (5589:2): [True: 0, False: 0]
  ------------------
 5590|       |
 5591|      1|	if ((ce->type == ZEND_INTERNAL_CLASS) && ce->info.internal.module) {
  ------------------
  |  Branch (5591:6): [True: 0, False: 1]
  |  Branch (5591:43): [True: 0, False: 0]
  ------------------
 5592|      0|		reflection_extension_factory(return_value, ce->info.internal.module->name);
 5593|      0|	}
 5594|      1|}
zim_ReflectionClass_getExtensionName:
 5599|      1|{
 5600|      1|	reflection_object *intern;
 5601|      1|	zend_class_entry *ce;
 5602|       |
 5603|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5604|       |
 5605|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (5605:2): [True: 0, False: 0]
  |  Branch (5605:2): [True: 0, False: 0]
  |  Branch (5605:2): [True: 0, False: 0]
  |  Branch (5605:2): [True: 0, False: 0]
  ------------------
 5606|       |
 5607|      1|	if ((ce->type == ZEND_INTERNAL_CLASS) && ce->info.internal.module) {
  ------------------
  |  Branch (5607:6): [True: 0, False: 1]
  |  Branch (5607:43): [True: 0, False: 0]
  ------------------
 5608|      0|		RETURN_STRING(ce->info.internal.module->name);
  ------------------
  |  | 1054|      0|#define RETURN_STRING(s) 				do { RETVAL_STRING(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1028|      0|#define RETVAL_STRING(s)				ZVAL_STRING(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  |  |  968|      0|		const char *_s = (s);					\
  |  |  |  |  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  970|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1054:70): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5609|      1|	} else {
 5610|      1|		RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5611|      1|	}
 5612|      1|}
zim_ReflectionObject___construct:
 5671|     15|{
 5672|     15|	reflection_class_object_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  ------------------
  |  |   49|     15|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 5673|     15|}
zim_ReflectionProperty___construct:
 5678|     15|{
 5679|     15|	zend_string *classname_str;
 5680|     15|	zend_object *classname_obj;
 5681|     15|	zend_string *name;
 5682|     15|	int dynam_prop = 0;
 5683|     15|	zval *object;
 5684|     15|	reflection_object *intern;
 5685|     15|	zend_class_entry *ce;
 5686|     15|	zend_property_info *property_info = NULL;
 5687|     15|	property_reference *reference;
 5688|       |
 5689|     43|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|     15|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     15|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     15|		const int _flags = (flags); \
  |  |  |  | 1599|     15|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     15|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     15|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     15|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     15|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     15|		uint32_t _i = 0; \
  |  |  |  | 1603|     15|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     15|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     15|		char *_error = NULL; \
  |  |  |  | 1606|     15|		bool _dummy = 0; \
  |  |  |  | 1607|     15|		bool _optional = 0; \
  |  |  |  | 1608|     15|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     15|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     15|		((void)_i); \
  |  |  |  | 1610|     15|		((void)_real_arg); \
  |  |  |  | 1611|     15|		((void)_arg); \
  |  |  |  | 1612|     15|		((void)_expected_type); \
  |  |  |  | 1613|     15|		((void)_error); \
  |  |  |  | 1614|     15|		((void)_optional); \
  |  |  |  | 1615|     15|		((void)_dummy); \
  |  |  |  | 1616|     15|		\
  |  |  |  | 1617|     15|		do { \
  |  |  |  | 1618|     15|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     15|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|     15|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     15|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     15|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     13|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5690|     65|		Z_PARAM_OBJ_OR_STR(classname_obj, classname_str)
  ------------------
  |  | 1777|     13|	Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1769|     13|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     13|	++_i; \
  |  |  |  |  |  | 1654|     13|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     13|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     13|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     13|	_real_arg++; \
  |  |  |  |  |  | 1660|     13|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     13|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     13|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1770|     13|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1771|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1771:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1772|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1773|      0|		break; \
  |  |  |  | 1774|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (5690:3): [True: 13, False: 0]
  |  Branch (5690:3): [True: 0, False: 0]
  |  Branch (5690:3): [True: 13, False: 0]
  |  Branch (5690:3): [True: 0, False: 0]
  |  Branch (5690:3): [True: 13, False: 0]
  |  Branch (5690:3): [True: 0, False: 0]
  |  Branch (5690:3): [True: 0, False: 13]
  |  Branch (5690:3): [True: 13, False: 0]
  |  Branch (5690:3): [True: 0, False: 0]
  |  Branch (5690:3): [True: 0, False: 0]
  ------------------
 5691|     65|		Z_PARAM_STR(name)
  ------------------
  |  | 2102|     13|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     13|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     13|	++_i; \
  |  |  |  |  |  | 1654|     13|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     13|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     13|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     13|	_real_arg++; \
  |  |  |  |  |  | 1660|     13|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     13|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     13|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     13|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5691:3): [True: 13, False: 0]
  |  Branch (5691:3): [True: 0, False: 0]
  |  Branch (5691:3): [True: 13, False: 0]
  |  Branch (5691:3): [True: 0, False: 0]
  |  Branch (5691:3): [True: 13, False: 0]
  |  Branch (5691:3): [True: 0, False: 0]
  |  Branch (5691:3): [True: 0, False: 13]
  |  Branch (5691:3): [True: 13, False: 0]
  |  Branch (5691:3): [True: 0, False: 0]
  |  Branch (5691:3): [True: 0, False: 0]
  ------------------
 5692|     15|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     13|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     13|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     13|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  |  | 1641|     15|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5692:2): [True: 13, False: 0]
  |  Branch (5692:2): [True: 0, False: 0]
  |  Branch (5692:2): [True: 13, False: 0]
  |  Branch (5692:2): [True: 0, False: 0]
  ------------------
 5693|       |
 5694|     13|	object = ZEND_THIS;
  ------------------
  |  |  523|     13|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     13|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 5695|     13|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     13|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     13|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     13|	_Generic( \
  |  |  |  |  |  |  408|     13|		(ptr), \
  |  |  |  |  |  |  409|     13|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     13|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     13|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5696|       |
 5697|     13|	if (classname_obj) {
  ------------------
  |  Branch (5697:6): [True: 4, False: 9]
  ------------------
 5698|      4|		ce = classname_obj->ce;
 5699|      9|	} else {
 5700|      9|		if ((ce = zend_lookup_class(classname_str)) == NULL) {
  ------------------
  |  Branch (5700:7): [True: 1, False: 8]
  ------------------
 5701|      1|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Class \"%s\" does not exist", ZSTR_VAL(classname_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5702|      1|			RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5702:4): [True: 0, False: 1]
  |  Branch (5702:4): [True: 1, False: 0]
  ------------------
 5703|      1|		}
 5704|      9|	}
 5705|       |
 5706|     12|	property_info = zend_hash_find_ptr(&ce->properties_info, name);
 5707|     12|	if (property_info == NULL
  ------------------
  |  Branch (5707:6): [True: 3, False: 9]
  ------------------
 5708|      9|	 || ((property_info->flags & ZEND_ACC_PRIVATE)
  ------------------
  |  |  221|      9|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (5708:7): [True: 0, False: 9]
  ------------------
 5709|      3|	  && property_info->ce != ce)) {
  ------------------
  |  Branch (5709:7): [True: 0, False: 0]
  ------------------
 5710|       |		/* Check for dynamic properties */
 5711|      3|		if (property_info == NULL && classname_obj) {
  ------------------
  |  Branch (5711:7): [True: 3, False: 0]
  |  Branch (5711:32): [True: 3, False: 0]
  ------------------
 5712|      3|			if (zend_hash_exists(classname_obj->handlers->get_properties(classname_obj), name)) {
  ------------------
  |  Branch (5712:8): [True: 3, False: 0]
  ------------------
 5713|      3|				dynam_prop = 1;
 5714|      3|			}
 5715|      3|		}
 5716|      3|		if (dynam_prop == 0) {
  ------------------
  |  Branch (5716:7): [True: 0, False: 3]
  ------------------
 5717|      0|			zend_throw_exception_ex(reflection_exception_ptr, 0, "Property %s::$%s does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_throw_exception_ex(reflection_exception_ptr, 0, "Property %s::$%s does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5718|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5718:4): [True: 0, False: 0]
  |  Branch (5718:4): [True: 0, False: 0]
  ------------------
 5719|      0|		}
 5720|      3|	}
 5721|       |
 5722|     12|	zval *prop_name = reflection_prop_name(object);
 5723|     12|	zval_ptr_dtor(prop_name);
 5724|     12|	ZVAL_STR_COPY(prop_name, name);
  ------------------
  |  | 1112|     12|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     12|		zval *__z = (z);								\
  |  | 1114|     12|		zend_string *__s = (s);							\
  |  | 1115|     12|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     12|		/* interned strings support */					\
  |  | 1117|     12|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 6, False: 6]
  |  |  ------------------
  |  | 1118|      6|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      6|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      6|		} else {										\
  |  | 1120|      6|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      6|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      6|		}												\
  |  | 1123|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 5725|       |	/* Note: class name are always interned, no need to destroy them */
 5726|     12|	if (dynam_prop == 0) {
  ------------------
  |  Branch (5726:6): [True: 9, False: 3]
  ------------------
 5727|      9|		ZVAL_STR_COPY(reflection_prop_class(object), property_info->ce->name);
  ------------------
  |  | 1112|      9|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      9|		zval *__z = (z);								\
  |  | 1114|      9|		zend_string *__s = (s);							\
  |  | 1115|      9|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      9|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      9|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      9|		/* interned strings support */					\
  |  | 1117|      9|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 8, False: 1]
  |  |  ------------------
  |  | 1118|      8|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      8|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      8|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      8|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 5728|      9|	} else {
 5729|      3|		ZVAL_STR_COPY(reflection_prop_class(object), ce->name);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      3|		zend_string *__s = (s);							\
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 3, False: 0]
  |  |  ------------------
  |  | 1118|      3|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      3|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      3|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 5730|      3|	}
 5731|       |
 5732|     12|	if (intern->ptr) {
  ------------------
  |  Branch (5732:6): [True: 1, False: 11]
  ------------------
 5733|      1|		reflection_free_property_reference(intern->ptr);
 5734|      1|	}
 5735|       |
 5736|     12|	reference = (property_reference*) emalloc(sizeof(property_reference));
  ------------------
  |  |  150|     12|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     12|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     12|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     12|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     12|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5737|     12|	reference->prop = dynam_prop ? NULL : property_info;
  ------------------
  |  Branch (5737:20): [True: 3, False: 9]
  ------------------
 5738|     12|	reference->unmangled_name = zend_string_copy(name);
 5739|     12|	memset(reference->cache_slot, 0, sizeof(reference->cache_slot));
 5740|     12|	intern->ptr = reference;
 5741|     12|	intern->ref_type = REF_TYPE_PROPERTY;
 5742|     12|	intern->ce = ce;
 5743|     12|}
zim_ReflectionProperty___toString:
 5748|      2|{
 5749|      2|	reflection_object *intern;
 5750|      2|	property_reference *ref;
 5751|      2|	smart_str str = {0};
 5752|       |
 5753|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 5754|      2|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (5754:2): [True: 0, False: 0]
  |  Branch (5754:2): [True: 0, False: 0]
  |  Branch (5754:2): [True: 0, False: 0]
  |  Branch (5754:2): [True: 0, False: 0]
  ------------------
 5755|      2|	_property_string(&str, ref->prop, ZSTR_VAL(ref->unmangled_name), "");
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5756|      2|	RETURN_STR(smart_str_extract(&str));
  ------------------
  |  | 1050|      2|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5757|      2|}
zim_ReflectionProperty_getValue:
 5900|      4|{
 5901|      4|	reflection_object *intern;
 5902|      4|	property_reference *ref;
 5903|      4|	zval *object = NULL;
 5904|      4|	zval *member_p = NULL;
 5905|       |
 5906|     12|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5907|     12|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      4|	_optional = 1;
  ------------------
 5908|     16|		Z_PARAM_OBJECT_EX(object, 1, 0)
  ------------------
  |  | 1941|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  ------------------
  |  |  |  | 1653|      4|	++_i; \
  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1656:6): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1657|      4|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1658|      4|	} \
  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1664|      0|		} \
  |  |  |  | 1665|      0|	} \
  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1668|      0|	}
  |  |  ------------------
  |  | 1942|      4|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, NULL, check_null))) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1943|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  ------------------
  |  |  |  Branch (1943:21): [True: 0, Folded]
  |  |  ------------------
  |  | 1944|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  ------------------
  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  ------------------
  |  | 1945|      0|			break; \
  |  | 1946|      0|		}
  ------------------
  |  Branch (5908:3): [True: 4, False: 0]
  |  Branch (5908:3): [True: 0, False: 0]
  |  Branch (5908:3): [True: 0, False: 4]
  |  Branch (5908:3): [True: 4, False: 0]
  |  Branch (5908:3): [True: 4, False: 0]
  |  Branch (5908:3): [True: 0, False: 0]
  |  Branch (5908:3): [True: 4, False: 0]
  |  Branch (5908:3): [True: 0, False: 0]
  |  Branch (5908:3): [True: 0, False: 0]
  |  Branch (5908:3): [True: 0, False: 0]
  ------------------
 5909|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5909:2): [True: 4, False: 0]
  |  Branch (5909:2): [True: 0, False: 0]
  |  Branch (5909:2): [True: 4, False: 0]
  |  Branch (5909:2): [True: 0, False: 0]
  ------------------
 5910|       |
 5911|      4|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      4|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      4|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      4|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      4|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      4|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      4|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      4|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      4|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      4|	target = intern->ptr; \
  |  |  121|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (5911:2): [True: 0, False: 0]
  |  Branch (5911:2): [True: 0, False: 0]
  |  Branch (5911:2): [True: 0, False: 0]
  |  Branch (5911:2): [True: 0, False: 0]
  ------------------
 5912|       |
 5913|      4|	if (prop_get_flags(ref) & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      4|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (5913:6): [True: 0, False: 4]
  ------------------
 5914|      0|		member_p = zend_read_static_property_ex(intern->ce, ref->unmangled_name, 0);
 5915|      0|		if (member_p) {
  ------------------
  |  Branch (5915:7): [True: 0, False: 0]
  ------------------
 5916|      0|			RETURN_COPY_DEREF(member_p);
  ------------------
  |  | 1067|      0|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      0|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      0|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5917|      0|		}
 5918|      4|	} else {
 5919|      4|		zval rv;
 5920|       |
 5921|      4|		if (!object) {
  ------------------
  |  Branch (5921:7): [True: 0, False: 4]
  ------------------
 5922|      0|			zend_argument_type_error(1, "must be provided for instance properties");
 5923|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5923:4): [True: 0, False: 0]
  |  Branch (5923:4): [True: 0, False: 0]
  ------------------
 5924|      0|		}
 5925|       |
 5926|       |		/* TODO: Should this always use intern->ce? */
 5927|      4|		if (!instanceof_function(Z_OBJCE_P(object), ref->prop ? ref->prop->ce : intern->ce)) {
  ------------------
  |  | 1012|      4|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      4|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5927:7): [True: 0, False: 4]
  |  Branch (5927:47): [True: 4, False: 0]
  ------------------
 5928|      0|			zend_throw_exception(reflection_exception_ptr, "Given object is not an instance of the class this property was declared in", 0);
 5929|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5929:4): [True: 0, False: 0]
  |  Branch (5929:4): [True: 0, False: 0]
  ------------------
 5930|      0|		}
 5931|       |
 5932|      4|		if (ref->cache_slot[0] == Z_OBJCE_P(object)) {
  ------------------
  |  | 1012|      4|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      4|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5932:7): [True: 0, False: 4]
  ------------------
 5933|      0|			uintptr_t prop_offset = (uintptr_t) ref->cache_slot[1];
 5934|       |
 5935|      0|			if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5936|      0|				zval *retval = OBJ_PROP(Z_OBJ_P(object), prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 5937|      0|				if (EXPECTED(!Z_ISUNDEF_P(retval))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5938|      0|					RETURN_COPY_DEREF(retval);
  ------------------
  |  | 1067|      0|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      0|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      0|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5939|      0|				}
 5940|      0|			}
 5941|      0|		}
 5942|       |
 5943|      4|		const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 5944|      4|		EG(fake_scope) = intern->ce;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 5945|      4|		member_p = Z_OBJ_P(object)->handlers->read_property(Z_OBJ_P(object),
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		member_p = Z_OBJ_P(object)->handlers->read_property(Z_OBJ_P(object),
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 5946|      4|				ref->unmangled_name, BP_VAR_R, ref->cache_slot, &rv);
  ------------------
  |  | 1074|      4|#define BP_VAR_R			0
  ------------------
 5947|      4|		EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
 5948|       |
 5949|      4|		if (member_p != &rv) {
  ------------------
  |  Branch (5949:7): [True: 4, False: 0]
  ------------------
 5950|      4|			RETURN_COPY_DEREF(member_p);
  ------------------
  |  | 1067|      4|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      4|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      4|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      4|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      4|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      3|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      1|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      1|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      2|			} else {									\
  |  |  |  |  |  | 1517|      2|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      2|			}											\
  |  |  |  |  |  | 1519|      3|		}												\
  |  |  |  |  |  | 1520|      4|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      4|	do {												\
  |  |  |  |  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5951|      4|		} else {
 5952|      0|			if (Z_ISREF_P(member_p)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5953|      0|				zend_unwrap_reference(member_p);
 5954|      0|			}
 5955|      0|			RETURN_COPY_VALUE(member_p);
  ------------------
  |  | 1066|      0|#define RETURN_COPY_VALUE(zv)			do { RETVAL_COPY_VALUE(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1040|      0|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1066:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5956|      0|		}
 5957|      4|	}
 5958|      4|}
zim_ReflectionProperty_getRawValue:
 6024|      2|{
 6025|      2|	reflection_object *intern;
 6026|      2|	property_reference *ref;
 6027|      2|	zval *object;
 6028|       |
 6029|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6030|      8|		Z_PARAM_OBJECT(object)
  ------------------
  |  | 1949|      2|	Z_PARAM_OBJECT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1941|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1942|      2|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|      1|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1943:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1944|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1945|      1|			break; \
  |  |  |  | 1946|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (6030:3): [True: 2, False: 0]
  |  Branch (6030:3): [True: 0, False: 0]
  |  Branch (6030:3): [True: 2, False: 0]
  |  Branch (6030:3): [True: 0, False: 0]
  |  Branch (6030:3): [True: 2, False: 0]
  |  Branch (6030:3): [True: 0, False: 0]
  |  Branch (6030:3): [True: 0, False: 2]
  |  Branch (6030:3): [True: 2, False: 0]
  |  Branch (6030:3): [True: 0, False: 0]
  |  Branch (6030:3): [True: 0, False: 0]
  ------------------
 6031|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6031:2): [True: 1, False: 0]
  |  Branch (6031:2): [True: 0, False: 0]
  |  Branch (6031:2): [True: 1, False: 0]
  |  Branch (6031:2): [True: 0, False: 0]
  ------------------
 6032|       |
 6033|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6033:2): [True: 0, False: 0]
  |  Branch (6033:2): [True: 0, False: 0]
  |  Branch (6033:2): [True: 0, False: 0]
  |  Branch (6033:2): [True: 0, False: 0]
  ------------------
 6034|       |
 6035|      1|	if (!instanceof_function(Z_OBJCE_P(object), intern->ce)) {
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6035:6): [True: 0, False: 1]
  ------------------
 6036|      0|		zend_throw_exception(reflection_exception_ptr, "Given object is not an instance of the class this property was declared in", 0);
 6037|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6037:3): [True: 0, False: 0]
  |  Branch (6037:3): [True: 0, False: 0]
  ------------------
 6038|      0|	}
 6039|       |
 6040|      1|	if (ref->cache_slot[0] == Z_OBJCE_P(object)) {
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6040:6): [True: 0, False: 1]
  ------------------
 6041|      0|		uintptr_t prop_offset = (uintptr_t) ref->cache_slot[1];
 6042|       |
 6043|      0|		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6044|      0|			zval *retval = OBJ_PROP(Z_OBJ_P(object), prop_offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 6045|      0|			if (EXPECTED(!Z_ISUNDEF_P(retval))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6046|      0|				RETURN_COPY_DEREF(retval);
  ------------------
  |  | 1067|      0|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      0|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      0|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      0|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      0|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      0|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6047|      0|			}
 6048|      0|		}
 6049|      0|	}
 6050|       |
 6051|      1|	zend_property_info *prop = reflection_property_get_effective_prop(ref,
 6052|      1|			intern->ce, Z_OBJ_P(object));
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 6053|       |
 6054|      1|	if (UNEXPECTED(prop && (prop->flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6055|      0|		zend_throw_exception(reflection_exception_ptr, "May not use getRawValue on static properties", 0);
 6056|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6056:3): [True: 0, False: 0]
  |  Branch (6056:3): [True: 0, False: 0]
  ------------------
 6057|      0|	}
 6058|       |
 6059|      1|	if (!prop || !prop->hooks || !prop->hooks[ZEND_PROPERTY_HOOK_GET]) {
  ------------------
  |  Branch (6059:6): [True: 1, False: 0]
  |  Branch (6059:15): [True: 0, False: 0]
  |  Branch (6059:31): [True: 0, False: 0]
  ------------------
 6060|      1|		zval rv;
 6061|      1|		const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 6062|      1|		EG(fake_scope) = intern->ce;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 6063|      1|		zval *member_p = Z_OBJ_P(object)->handlers->read_property(
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 6064|      1|				Z_OBJ_P(object), ref->unmangled_name, BP_VAR_R,
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              				Z_OBJ_P(object), ref->unmangled_name, BP_VAR_R,
  ------------------
  |  | 1074|      1|#define BP_VAR_R			0
  ------------------
 6065|      1|				ref->cache_slot, &rv);
 6066|      1|		EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 6067|       |
 6068|      1|		if (member_p != &rv) {
  ------------------
  |  Branch (6068:7): [True: 1, False: 0]
  ------------------
 6069|      1|			RETURN_COPY_DEREF(member_p);
  ------------------
  |  | 1067|      1|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      1|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      1|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      1|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      1|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      1|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      1|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      1|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6070|      1|		} else {
 6071|      0|			if (Z_ISREF_P(member_p)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6072|      0|				zend_unwrap_reference(member_p);
 6073|      0|			}
 6074|      0|			RETURN_COPY_VALUE(member_p);
  ------------------
  |  | 1066|      0|#define RETURN_COPY_VALUE(zv)			do { RETVAL_COPY_VALUE(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1040|      0|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      0|	do {												\
  |  |  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1066:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6075|      0|		}
 6076|      1|	} else {
 6077|      0|		zend_function *func = zend_get_property_hook_trampoline(prop, ZEND_PROPERTY_HOOK_GET, ref->unmangled_name);
 6078|      0|		zend_call_known_instance_method_with_0_params(func, Z_OBJ_P(object), return_value);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 6079|      0|	}
 6080|      1|}
zim_ReflectionProperty_setRawValue:
 6098|      1|{
 6099|      1|	reflection_object *intern;
 6100|      1|	property_reference *ref;
 6101|      1|	zval *object;
 6102|      1|	zval *value;
 6103|       |
 6104|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6104:2): [True: 0, False: 0]
  |  Branch (6104:2): [True: 0, False: 0]
  |  Branch (6104:2): [True: 0, False: 0]
  |  Branch (6104:2): [True: 0, False: 0]
  ------------------
 6105|       |
 6106|      3|	ZEND_PARSE_PARAMETERS_START(2, 2) {
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6107|      4|		Z_PARAM_OBJECT(object)
  ------------------
  |  | 1949|      1|	Z_PARAM_OBJECT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1941|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1942|      1|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1943|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1943:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1944|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1945|      0|			break; \
  |  |  |  | 1946|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (6107:3): [True: 1, False: 0]
  |  Branch (6107:3): [True: 0, False: 0]
  |  Branch (6107:3): [True: 1, False: 0]
  |  Branch (6107:3): [True: 0, False: 0]
  |  Branch (6107:3): [True: 1, False: 0]
  |  Branch (6107:3): [True: 0, False: 0]
  |  Branch (6107:3): [True: 0, False: 1]
  |  Branch (6107:3): [True: 1, False: 0]
  |  Branch (6107:3): [True: 0, False: 0]
  |  Branch (6107:3): [True: 0, False: 0]
  ------------------
 6108|      5|		Z_PARAM_ZVAL(value)
  ------------------
  |  | 2116|      1|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      1|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      1|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6108:3): [True: 1, False: 0]
  |  Branch (6108:3): [True: 0, False: 0]
  |  Branch (6108:3): [True: 1, False: 0]
  |  Branch (6108:3): [True: 0, False: 0]
  |  Branch (6108:3): [True: 1, False: 0]
  |  Branch (6108:3): [True: 0, False: 0]
  |  Branch (6108:3): [True: 0, False: 1]
  |  Branch (6108:3): [True: 1, False: 0]
  |  Branch (6108:3): [True: 0, False: 0]
  |  Branch (6108:3): [True: 0, False: 0]
  ------------------
 6109|      5|	} ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6109:4): [True: 1, False: 0]
  |  Branch (6109:4): [True: 0, False: 0]
  |  Branch (6109:4): [True: 1, False: 0]
  |  Branch (6109:4): [True: 0, False: 0]
  ------------------
 6110|       |
 6111|      1|	zend_property_info *prop = reflection_property_get_effective_prop(ref,
 6112|      1|			intern->ce, Z_OBJ_P(object));
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 6113|       |
 6114|      1|	if (UNEXPECTED(prop && (prop->flags & ZEND_ACC_STATIC))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 1]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6115|      0|		zend_throw_exception(reflection_exception_ptr, "May not use setRawValue on static properties", 0);
 6116|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6116:3): [True: 0, False: 0]
  |  Branch (6116:3): [True: 0, False: 0]
  ------------------
 6117|      0|	}
 6118|       |
 6119|      1|	reflection_property_set_raw_value(prop, ref->unmangled_name,
 6120|      1|			ref->cache_slot, intern, Z_OBJ_P(object), value);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 6121|      1|}
zim_ReflectionProperty_getDeclaringClass:
 6345|      1|{
 6346|      1|	reflection_object *intern;
 6347|      1|	property_reference *ref;
 6348|      1|	zend_class_entry *ce;
 6349|       |
 6350|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6351|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6351:2): [True: 0, False: 0]
  |  Branch (6351:2): [True: 0, False: 0]
  |  Branch (6351:2): [True: 0, False: 0]
  |  Branch (6351:2): [True: 0, False: 0]
  ------------------
 6352|       |
 6353|      1|	ce = ref->prop ? ref->prop->ce : intern->ce;
  ------------------
  |  Branch (6353:7): [True: 1, False: 0]
  ------------------
 6354|      1|	zend_reflection_class_factory(ce, return_value);
 6355|      1|}
zim_ReflectionProperty_getType:
 6404|      1|{
 6405|      1|	reflection_object *intern;
 6406|      1|	property_reference *ref;
 6407|       |
 6408|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6409|       |
 6410|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6410:2): [True: 0, False: 0]
  |  Branch (6410:2): [True: 0, False: 0]
  |  Branch (6410:2): [True: 0, False: 0]
  |  Branch (6410:2): [True: 0, False: 0]
  ------------------
 6411|       |
 6412|      1|	if (!ref->prop || !ZEND_TYPE_IS_SET(ref->prop->type)) {
  ------------------
  |  |  152|      1|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      1|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  ------------------
  |  Branch (6412:6): [True: 0, False: 1]
  |  Branch (6412:20): [True: 0, False: 1]
  ------------------
 6413|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6414|      0|	}
 6415|       |
 6416|      1|	reflection_type_factory(ref->prop->type, return_value, true);
 6417|      1|}
zim_ReflectionProperty_isReadable:
 6690|      2|{
 6691|      2|	reflection_object *intern;
 6692|      2|	property_reference *ref;
 6693|      2|	zend_string *scope_name;
 6694|      2|	zend_object *obj = NULL;
 6695|       |
 6696|      6|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6697|      8|		Z_PARAM_STR_OR_NULL(scope_name)
  ------------------
  |  | 2105|      2|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (6697:3): [True: 2, False: 0]
  |  Branch (6697:3): [True: 0, False: 0]
  |  Branch (6697:3): [True: 2, False: 0]
  |  Branch (6697:3): [True: 0, False: 0]
  |  Branch (6697:3): [True: 2, False: 0]
  |  Branch (6697:3): [True: 0, False: 0]
  |  Branch (6697:3): [True: 0, False: 2]
  |  Branch (6697:3): [True: 2, False: 0]
  |  Branch (6697:3): [True: 0, False: 0]
  |  Branch (6697:3): [True: 0, False: 0]
  ------------------
 6698|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
 6699|      8|		Z_PARAM_OBJ_OR_NULL(obj)
  ------------------
  |  | 1967|      2|	Z_PARAM_OBJ_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 1956|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1957|      2|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1958|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1958:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1959|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1960|      0|			break; \
  |  |  |  | 1961|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (6699:3): [True: 2, False: 0]
  |  Branch (6699:3): [True: 0, False: 0]
  |  Branch (6699:3): [True: 0, False: 2]
  |  Branch (6699:3): [True: 2, False: 0]
  |  Branch (6699:3): [True: 2, False: 0]
  |  Branch (6699:3): [True: 0, False: 0]
  |  Branch (6699:3): [True: 2, False: 0]
  |  Branch (6699:3): [True: 0, False: 0]
  |  Branch (6699:3): [True: 0, False: 0]
  |  Branch (6699:3): [True: 0, False: 0]
  ------------------
 6700|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6700:2): [True: 2, False: 0]
  |  Branch (6700:2): [True: 0, False: 0]
  |  Branch (6700:2): [True: 2, False: 0]
  |  Branch (6700:2): [True: 0, False: 0]
  ------------------
 6701|       |
 6702|      2|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (6702:2): [True: 0, False: 0]
  |  Branch (6702:2): [True: 0, False: 0]
  |  Branch (6702:2): [True: 0, False: 0]
  |  Branch (6702:2): [True: 0, False: 0]
  ------------------
 6703|       |
 6704|      2|	zend_property_info *prop = ref->prop;
 6705|      2|	if (prop && obj) {
  ------------------
  |  Branch (6705:6): [True: 1, False: 1]
  |  Branch (6705:14): [True: 0, False: 1]
  ------------------
 6706|      0|		if (prop->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (6706:7): [True: 0, False: 0]
  ------------------
 6707|      0|			zend_throw_exception(reflection_exception_ptr, "null is expected as object argument for static properties", 0);
 6708|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6708:4): [True: 0, False: 0]
  |  Branch (6708:4): [True: 0, False: 0]
  ------------------
 6709|      0|		}
 6710|      0|		if (!instanceof_function(obj->ce, prop->ce)) {
  ------------------
  |  Branch (6710:7): [True: 0, False: 0]
  ------------------
 6711|      0|			zend_throw_exception(reflection_exception_ptr, "Given object is not an instance of the class this property was declared in", 0);
 6712|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6712:4): [True: 0, False: 0]
  |  Branch (6712:4): [True: 0, False: 0]
  ------------------
 6713|      0|		}
 6714|      0|		prop = reflection_property_get_effective_prop(ref, intern->ce, obj);
 6715|      0|	}
 6716|       |
 6717|      2|	zend_class_entry *ce = obj ? obj->ce : intern->ce;
  ------------------
  |  Branch (6717:25): [True: 1, False: 1]
  ------------------
 6718|      2|	if (!prop) {
  ------------------
  |  Branch (6718:6): [True: 1, False: 1]
  ------------------
 6719|      1|		if (obj && obj->properties && zend_hash_find(obj->properties, ref->unmangled_name)) {
  ------------------
  |  Branch (6719:7): [True: 1, False: 0]
  |  Branch (6719:14): [True: 1, False: 0]
  |  Branch (6719:33): [True: 1, False: 0]
  ------------------
 6720|      1|			RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6721|      1|		}
 6722|      0|handle_magic_get:
 6723|      0|		if (ce->__get) {
  ------------------
  |  Branch (6723:7): [True: 0, False: 0]
  ------------------
 6724|      0|			if (obj && ce->__isset) {
  ------------------
  |  Branch (6724:8): [True: 0, False: 0]
  |  Branch (6724:15): [True: 0, False: 0]
  ------------------
 6725|      0|				uint32_t *guard = zend_get_property_guard(obj, ref->unmangled_name);
 6726|      0|				if (!((*guard) & ZEND_GUARD_PROPERTY_ISSET)) {
  ------------------
  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  ------------------
  |  Branch (6726:9): [True: 0, False: 0]
  ------------------
 6727|      0|					GC_ADDREF(obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 6728|      0|					*guard |= ZEND_GUARD_PROPERTY_ISSET;
  ------------------
  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  ------------------
 6729|      0|					zval member;
 6730|      0|					ZVAL_STR(&member, ref->unmangled_name);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6731|      0|					zend_call_known_instance_method_with_1_params(ce->__isset, obj, return_value, &member);
 6732|       |
 6733|      0|					if (Z_TYPE_P(return_value) == IS_REFERENCE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(return_value) == IS_REFERENCE) {
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (6733:10): [True: 0, False: 0]
  ------------------
 6734|      0|						zend_unwrap_reference(return_value);
 6735|      0|					}
 6736|       |
 6737|      0|					*guard &= ~ZEND_GUARD_PROPERTY_ISSET;
  ------------------
  |  |  645|      0|#define ZEND_GUARD_PROPERTY_ISSET	(1<<3)
  ------------------
 6738|      0|					OBJ_RELEASE(obj);
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 6739|      0|					return;
 6740|      0|				}
 6741|      0|			}
 6742|      0|			RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6743|      0|		}
 6744|      0|		if (obj && zend_lazy_object_must_init(obj)) {
  ------------------
  |  Branch (6744:7): [True: 0, False: 0]
  |  Branch (6744:14): [True: 0, False: 0]
  ------------------
 6745|      0|			obj = zend_lazy_object_init(obj);
 6746|      0|			if (!obj) {
  ------------------
  |  Branch (6746:8): [True: 0, False: 0]
  ------------------
 6747|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6747:5): [True: 0, False: 0]
  |  Branch (6747:5): [True: 0, False: 0]
  ------------------
 6748|      0|			}
 6749|      0|			if (obj->properties && zend_hash_find(obj->properties, ref->unmangled_name)) {
  ------------------
  |  Branch (6749:8): [True: 0, False: 0]
  |  Branch (6749:27): [True: 0, False: 0]
  ------------------
 6750|      0|				RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6751|      0|			}
 6752|      0|		}
 6753|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6754|      0|	}
 6755|       |
 6756|      1|	zend_class_entry *scope;
 6757|      1|	if (get_ce_from_scope_name(&scope, scope_name, execute_data) == FAILURE) {
  ------------------
  |  Branch (6757:6): [True: 1, False: 0]
  ------------------
 6758|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6758:3): [True: 0, False: 1]
  |  Branch (6758:3): [True: 1, False: 0]
  ------------------
 6759|      1|	}
 6760|       |
 6761|      0|	if (!check_visibility(prop->flags & ZEND_ACC_PPP_MASK, prop->ce, scope)) {
  ------------------
  |  |  421|      0|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (6761:6): [True: 0, False: 0]
  ------------------
 6762|      0|		if (!(prop->flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (6762:7): [True: 0, False: 0]
  ------------------
 6763|      0|			goto handle_magic_get;
 6764|      0|		}
 6765|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6766|      0|	}
 6767|       |
 6768|      0|	if (prop->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (6768:6): [True: 0, False: 0]
  ------------------
 6769|      0|		ZEND_ASSERT(prop->hooks);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6769:3): [True: 0, False: 0]
  |  Branch (6769:3): [True: 0, False: 0]
  ------------------
 6770|      0|		if (!prop->hooks[ZEND_PROPERTY_HOOK_GET]) {
  ------------------
  |  Branch (6770:7): [True: 0, False: 0]
  ------------------
 6771|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6772|      0|		}
 6773|      0|	} else if (obj && (!prop->hooks || !prop->hooks[ZEND_PROPERTY_HOOK_GET])) {
  ------------------
  |  Branch (6773:13): [True: 0, False: 0]
  |  Branch (6773:21): [True: 0, False: 0]
  |  Branch (6773:37): [True: 0, False: 0]
  ------------------
 6774|      0|retry_declared:;
 6775|      0|		zval *prop_val = OBJ_PROP(obj, prop->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 6776|      0|		if (Z_TYPE_P(prop_val) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(prop_val) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (6776:7): [True: 0, False: 0]
  ------------------
 6777|      0|			if (zend_lazy_object_must_init(obj) && (Z_PROP_FLAG_P(prop_val) & IS_PROP_LAZY)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (zend_lazy_object_must_init(obj) && (Z_PROP_FLAG_P(prop_val) & IS_PROP_LAZY)) {
  ------------------
  |  | 1579|      0|#define IS_PROP_LAZY (1<<2)
  ------------------
  |  Branch (6777:8): [True: 0, False: 0]
  |  Branch (6777:43): [True: 0, False: 0]
  ------------------
 6778|      0|				obj = zend_lazy_object_init(obj);
 6779|      0|				if (!obj) {
  ------------------
  |  Branch (6779:9): [True: 0, False: 0]
  ------------------
 6780|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6780:6): [True: 0, False: 0]
  |  Branch (6780:6): [True: 0, False: 0]
  ------------------
 6781|      0|				}
 6782|      0|				goto retry_declared;
 6783|      0|			}
 6784|      0|			if (!(Z_PROP_FLAG_P(prop_val) & IS_PROP_UNINIT)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(Z_PROP_FLAG_P(prop_val) & IS_PROP_UNINIT)) {
  ------------------
  |  | 1577|      0|#define IS_PROP_UNINIT (1<<0)
  ------------------
  |  Branch (6784:8): [True: 0, False: 0]
  ------------------
 6785|      0|				goto handle_magic_get;
 6786|      0|			}
 6787|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6788|      0|		}
 6789|      0|	} else if (prop->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (6789:13): [True: 0, False: 0]
  ------------------
 6790|      0|		if (ce->default_static_members_count && !CE_STATIC_MEMBERS(ce)) {
  ------------------
  |  |  331|      0|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6790:7): [True: 0, False: 0]
  |  Branch (6790:43): [True: 0, False: 0]
  ------------------
 6791|      0|			zend_class_init_statics(ce);
 6792|      0|		}
 6793|      0|		zval *prop_val = CE_STATIC_MEMBERS(ce) + prop->offset;
  ------------------
  |  |  331|      0|	((zval*)ZEND_MAP_PTR_GET((ce)->static_members_table))
  |  |  ------------------
  |  |  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6794|      0|		RETURN_BOOL(!Z_ISUNDEF_P(prop_val));
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6795|      0|	}
 6796|       |
 6797|      0|	RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6798|      0|}
zim_ReflectionProperty_isWritable:
 6801|      1|{
 6802|      1|	reflection_object *intern;
 6803|      1|	property_reference *ref;
 6804|      1|	zend_string *scope_name;
 6805|      1|	zend_object *obj = NULL;
 6806|       |
 6807|      3|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6808|      4|		Z_PARAM_STR_OR_NULL(scope_name)
  ------------------
  |  | 2105|      1|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      1|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (6808:3): [True: 1, False: 0]
  |  Branch (6808:3): [True: 0, False: 0]
  |  Branch (6808:3): [True: 1, False: 0]
  |  Branch (6808:3): [True: 0, False: 0]
  |  Branch (6808:3): [True: 1, False: 0]
  |  Branch (6808:3): [True: 0, False: 0]
  |  Branch (6808:3): [True: 0, False: 1]
  |  Branch (6808:3): [True: 1, False: 0]
  |  Branch (6808:3): [True: 0, False: 0]
  |  Branch (6808:3): [True: 0, False: 0]
  ------------------
 6809|      1|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
 6810|      4|		Z_PARAM_OBJ_OR_NULL(obj)
  ------------------
  |  | 1967|      1|	Z_PARAM_OBJ_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 1956|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1957|      1|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1958|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1958:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1959|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1960|      0|			break; \
  |  |  |  | 1961|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (6810:3): [True: 1, False: 0]
  |  Branch (6810:3): [True: 0, False: 0]
  |  Branch (6810:3): [True: 0, False: 1]
  |  Branch (6810:3): [True: 1, False: 0]
  |  Branch (6810:3): [True: 1, False: 0]
  |  Branch (6810:3): [True: 0, False: 0]
  |  Branch (6810:3): [True: 1, False: 0]
  |  Branch (6810:3): [True: 0, False: 0]
  |  Branch (6810:3): [True: 0, False: 0]
  |  Branch (6810:3): [True: 0, False: 0]
  ------------------
 6811|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6811:2): [True: 1, False: 0]
  |  Branch (6811:2): [True: 0, False: 0]
  |  Branch (6811:2): [True: 1, False: 0]
  |  Branch (6811:2): [True: 0, False: 0]
  ------------------
 6812|       |
 6813|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6813:2): [True: 0, False: 0]
  |  Branch (6813:2): [True: 0, False: 0]
  |  Branch (6813:2): [True: 0, False: 0]
  |  Branch (6813:2): [True: 0, False: 0]
  ------------------
 6814|       |
 6815|      1|	zend_property_info *prop = ref->prop;
 6816|      1|	if (prop && obj) {
  ------------------
  |  Branch (6816:6): [True: 1, False: 0]
  |  Branch (6816:14): [True: 0, False: 1]
  ------------------
 6817|      0|		if (prop->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (6817:7): [True: 0, False: 0]
  ------------------
 6818|      0|			zend_throw_exception(reflection_exception_ptr, "null is expected as object argument for static properties", 0);
 6819|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6819:4): [True: 0, False: 0]
  |  Branch (6819:4): [True: 0, False: 0]
  ------------------
 6820|      0|		}
 6821|      0|		if (!instanceof_function(obj->ce, prop->ce)) {
  ------------------
  |  Branch (6821:7): [True: 0, False: 0]
  ------------------
 6822|      0|			zend_throw_exception(reflection_exception_ptr, "Given object is not an instance of the class this property was declared in", 0);
 6823|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6823:4): [True: 0, False: 0]
  |  Branch (6823:4): [True: 0, False: 0]
  ------------------
 6824|      0|		}
 6825|      0|		prop = reflection_property_get_effective_prop(ref, intern->ce, obj);
 6826|      0|	}
 6827|       |
 6828|      1|	zend_class_entry *ce = obj ? obj->ce : intern->ce;
  ------------------
  |  Branch (6828:25): [True: 0, False: 1]
  ------------------
 6829|      1|	if (!prop) {
  ------------------
  |  Branch (6829:6): [True: 0, False: 1]
  ------------------
 6830|      0|		if (!(ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  301|      0|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  |  Branch (6830:7): [True: 0, False: 0]
  ------------------
 6831|      0|			RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6832|      0|		}
 6833|       |		/* This path is effectively unreachable, but theoretically possible for
 6834|       |		 * two internal classes where ZEND_ACC_NO_DYNAMIC_PROPERTIES is only
 6835|       |		 * added to the subclass, in which case a ReflectionProperty can be
 6836|       |		 * constructed on the parent class, and then tested on the subclass. */
 6837|      0|handle_magic_set:
 6838|      0|		RETURN_BOOL(ce->__set);
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6839|      0|	}
 6840|       |
 6841|      1|	zend_class_entry *scope;
 6842|      1|	if (get_ce_from_scope_name(&scope, scope_name, execute_data) == FAILURE) {
  ------------------
  |  Branch (6842:6): [True: 1, False: 0]
  ------------------
 6843|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6843:3): [True: 0, False: 1]
  |  Branch (6843:3): [True: 1, False: 0]
  ------------------
 6844|      1|	}
 6845|       |
 6846|      0|	if (!check_visibility(prop->flags & ZEND_ACC_PPP_MASK, prop->ce, scope)) {
  ------------------
  |  |  421|      0|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (6846:6): [True: 0, False: 0]
  ------------------
 6847|      0|		if (!(prop->flags & ZEND_ACC_STATIC)) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (6847:7): [True: 0, False: 0]
  ------------------
 6848|      0|			goto handle_magic_set;
 6849|      0|		}
 6850|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6851|      0|	}
 6852|      0|	uint32_t set_visibility = prop->flags & ZEND_ACC_PPP_SET_MASK;
  ------------------
  |  |  422|      0|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|      0|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|      0|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|      0|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
 6853|      0|	if (!set_visibility) {
  ------------------
  |  Branch (6853:6): [True: 0, False: 0]
  ------------------
 6854|      0|		set_visibility = zend_visibility_to_set_visibility(prop->flags & ZEND_ACC_PPP_MASK);
  ------------------
  |  |  421|      0|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
 6855|      0|	}
 6856|      0|	if (!check_visibility(set_visibility_to_visibility(set_visibility), prop->ce, scope)) {
  ------------------
  |  Branch (6856:6): [True: 0, False: 0]
  ------------------
 6857|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6858|      0|	}
 6859|       |
 6860|      0|	if (prop->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (6860:6): [True: 0, False: 0]
  ------------------
 6861|      0|		ZEND_ASSERT(prop->hooks);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6861:3): [True: 0, False: 0]
  |  Branch (6861:3): [True: 0, False: 0]
  ------------------
 6862|      0|		if (!prop->hooks[ZEND_PROPERTY_HOOK_SET]) {
  ------------------
  |  Branch (6862:7): [True: 0, False: 0]
  ------------------
 6863|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6864|      0|		}
 6865|      0|	} else if (obj && (prop->flags & ZEND_ACC_READONLY)) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (6865:13): [True: 0, False: 0]
  |  Branch (6865:20): [True: 0, False: 0]
  ------------------
 6866|      0|retry:;
 6867|      0|		zval *prop_val = OBJ_PROP(obj, prop->offset);
  ------------------
  |  |  480|      0|	((zval*)((char*)(obj) + offset))
  ------------------
 6868|      0|		if (Z_TYPE_P(prop_val) == IS_UNDEF
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(prop_val) == IS_UNDEF
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (6868:7): [True: 0, False: 0]
  ------------------
 6869|      0|		 && zend_lazy_object_must_init(obj)
  ------------------
  |  Branch (6869:7): [True: 0, False: 0]
  ------------------
 6870|      0|		 && (Z_PROP_FLAG_P(prop_val) & IS_PROP_LAZY)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		 && (Z_PROP_FLAG_P(prop_val) & IS_PROP_LAZY)) {
  ------------------
  |  | 1579|      0|#define IS_PROP_LAZY (1<<2)
  ------------------
  |  Branch (6870:7): [True: 0, False: 0]
  ------------------
 6871|      0|			obj = zend_lazy_object_init(obj);
 6872|      0|			if (!obj) {
  ------------------
  |  Branch (6872:8): [True: 0, False: 0]
  ------------------
 6873|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6873:5): [True: 0, False: 0]
  |  Branch (6873:5): [True: 0, False: 0]
  ------------------
 6874|      0|			}
 6875|      0|			goto retry;
 6876|      0|		}
 6877|      0|		if (Z_TYPE_P(prop_val) != IS_UNDEF && !(Z_PROP_FLAG_P(prop_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(prop_val) != IS_UNDEF && !(Z_PROP_FLAG_P(prop_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
              		if (Z_TYPE_P(prop_val) != IS_UNDEF && !(Z_PROP_FLAG_P(prop_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1580|      0|#define Z_PROP_FLAG_P(z) Z_EXTRA_P(z)
  |  |  ------------------
  |  |  |  |  705|      0|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(prop_val) != IS_UNDEF && !(Z_PROP_FLAG_P(prop_val) & IS_PROP_REINITABLE)) {
  ------------------
  |  | 1578|      0|#define IS_PROP_REINITABLE (1<<1)  /* It has impact only on readonly properties */
  ------------------
  |  Branch (6877:7): [True: 0, False: 0]
  |  Branch (6877:41): [True: 0, False: 0]
  ------------------
 6878|      0|			RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6879|      0|		}
 6880|      0|	}
 6881|       |
 6882|      0|	RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6883|      0|}
zim_ReflectionExtension___construct:
 6887|     27|{
 6888|     27|	zval *object;
 6889|     27|	reflection_object *intern;
 6890|     27|	zend_module_entry *module;
 6891|     27|	zend_string *name_str;
 6892|       |
 6893|     27|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &name_str) == FAILURE) {
  ------------------
  |  |  529|     27|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     27|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     27|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6893:6): [True: 2, False: 25]
  ------------------
 6894|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6894:3): [True: 0, False: 2]
  |  Branch (6894:3): [True: 2, False: 0]
  ------------------
 6895|      2|	}
 6896|       |
 6897|     25|	object = ZEND_THIS;
  ------------------
  |  |  523|     25|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     25|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 6898|     25|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     25|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     25|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     25|	_Generic( \
  |  |  |  |  |  |  408|     25|		(ptr), \
  |  |  |  |  |  |  409|     25|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     25|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     25|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6899|     25|	if ((module = zend_hash_find_ptr_lc(&module_registry, name_str)) == NULL) {
  ------------------
  |  Branch (6899:6): [True: 1, False: 24]
  ------------------
 6900|      1|		zend_throw_exception_ex(reflection_exception_ptr, 0,
 6901|      1|			"Extension \"%s\" does not exist", ZSTR_VAL(name_str));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 6902|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6902:3): [True: 0, False: 1]
  |  Branch (6902:3): [True: 1, False: 0]
  ------------------
 6903|      1|	}
 6904|     24|	zval *prop_name = reflection_prop_name(object);
 6905|     24|	zval_ptr_dtor(prop_name);
 6906|     24|	ZVAL_STRING(prop_name, module->name);
  ------------------
  |  |  967|     24|#define ZVAL_STRING(z, s) do {					\
  |  |  968|     24|		const char *_s = (s);					\
  |  |  969|     24|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|     24|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|     24|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|     24|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|     24|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|     24|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|     24|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|     24|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|     24|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|     24|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     24|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     24|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     24|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|     24|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|     24|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|     24|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|     24|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|     24|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
 6907|     24|	intern->ptr = module;
 6908|     24|	intern->ref_type = REF_TYPE_OTHER;
 6909|       |	intern->ce = NULL;
 6910|     24|}
zim_ReflectionExtension_getName:
 6929|      1|{
 6930|      1|	reflection_object *intern;
 6931|      1|	zend_module_entry *module;
 6932|       |
 6933|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6934|       |
 6935|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6935:2): [True: 0, False: 0]
  |  Branch (6935:2): [True: 0, False: 0]
  |  Branch (6935:2): [True: 0, False: 0]
  |  Branch (6935:2): [True: 0, False: 0]
  ------------------
 6936|      1|	RETURN_STRING(module->name);
  ------------------
  |  | 1054|      1|#define RETURN_STRING(s) 				do { RETVAL_STRING(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1028|      1|#define RETVAL_STRING(s)				ZVAL_STRING(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  967|      1|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  |  |  968|      1|		const char *_s = (s);					\
  |  |  |  |  |  |  969|      1|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  963|      1|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  |  |  964|      1|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  965|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  970|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (970:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1054:70): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6937|      1|}
zim_ReflectionExtension_getVersion:
 6942|      3|{
 6943|      3|	reflection_object *intern;
 6944|      3|	zend_module_entry *module;
 6945|       |
 6946|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 6947|      3|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (6947:2): [True: 0, False: 0]
  |  Branch (6947:2): [True: 0, False: 0]
  |  Branch (6947:2): [True: 0, False: 0]
  |  Branch (6947:2): [True: 0, False: 0]
  ------------------
 6948|       |
 6949|       |	/* An extension does not necessarily have a version number */
 6950|      3|	if (module->version == NO_VERSION_YET) {
  ------------------
  |  |   61|      3|#define NO_VERSION_YET NULL
  ------------------
  |  Branch (6950:6): [True: 0, False: 3]
  ------------------
 6951|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6952|      3|	} else {
 6953|      3|		RETURN_STRING(module->version);
  ------------------
  |  | 1054|      3|#define RETURN_STRING(s) 				do { RETVAL_STRING(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1028|      3|#define RETVAL_STRING(s)				ZVAL_STRING(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  |  967|      3|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  |  |  968|      3|		const char *_s = (s);					\
  |  |  |  |  |  |  969|      3|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  963|      3|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  |  |  964|      3|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1105|      3|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  |  |  | 1106|      3|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1107|      3|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  |  |  | 1108|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1109|      3|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1110|      3|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  965|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  970|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (970:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1054:70): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6954|      3|	}
 6955|      3|}
zim_ReflectionExtension_getFunctions:
 6960|      2|{
 6961|      2|	reflection_object *intern;
 6962|      2|	zend_module_entry *module;
 6963|      2|	zval function;
 6964|      2|	zend_function *fptr;
 6965|       |
 6966|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 6967|      2|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (6967:2): [True: 0, False: 0]
  |  Branch (6967:2): [True: 0, False: 0]
  |  Branch (6967:2): [True: 0, False: 0]
  |  Branch (6967:2): [True: 0, False: 0]
  ------------------
 6968|       |
 6969|      2|	array_init(return_value);
 6970|  2.76k|	ZEND_HASH_MAP_FOREACH_PTR(CG(function_table), fptr) {
  ------------------
  |  | 1341|  1.38k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.38k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 1.38k, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  1.38k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  1.38k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  1.38k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 1.38k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  1.38k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.38k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  1.38k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6970:2): [True: 0, False: 2]
  |  Branch (6970:2): [True: 2, False: 0]
  ------------------
 6971|  2.76k|		if (fptr->common.type==ZEND_INTERNAL_FUNCTION
  ------------------
  |  Branch (6971:7): [True: 1.38k, False: 0]
  ------------------
 6972|  1.38k|			&& fptr->internal_function.module == module) {
  ------------------
  |  Branch (6972:7): [True: 1.02k, False: 352]
  ------------------
 6973|  1.02k|			reflection_function_factory(fptr, NULL, &function);
 6974|  1.02k|			zend_hash_update(Z_ARRVAL_P(return_value), fptr->common.function_name, &function);
  ------------------
  |  |  997|  1.02k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  1.02k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  1.02k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6975|  1.02k|		}
 6976|  2.76k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  1.38k|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 6977|      2|}
zim_ReflectionExtension_getConstants:
 6982|      1|{
 6983|      1|	reflection_object *intern;
 6984|      1|	zend_module_entry *module;
 6985|      1|	zend_constant *constant;
 6986|       |
 6987|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6988|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (6988:2): [True: 0, False: 0]
  |  Branch (6988:2): [True: 0, False: 0]
  |  Branch (6988:2): [True: 0, False: 0]
  |  Branch (6988:2): [True: 0, False: 0]
  ------------------
 6989|       |
 6990|      1|	array_init(return_value);
 6991|  1.09k|	ZEND_HASH_MAP_FOREACH_PTR(EG(zend_constants), constant) {
  ------------------
  |  | 1341|    546|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    547|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 546, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    546|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    546|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    546|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 546]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    546|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    546|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 546]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    546|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6991:2): [True: 0, False: 1]
  |  Branch (6991:2): [True: 1, False: 0]
  ------------------
 6992|  1.09k|		if (module->module_number == ZEND_CONSTANT_MODULE_NUMBER(constant)) {
  ------------------
  |  |   54|    546|	(Z_CONSTANT_FLAGS((c)->value) >> 8)
  |  |  ------------------
  |  |  |  |  701|    546|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
  |  Branch (6992:7): [True: 393, False: 153]
  ------------------
 6993|    393|			zval const_val;
 6994|    393|			ZVAL_COPY_OR_DUP(&const_val, &constant->value);
  ------------------
  |  | 1457|    393|	do {																\
  |  | 1458|    393|		zval *_z1 = (z);												\
  |  | 1459|    393|		const zval *_z2 = (v);											\
  |  | 1460|    393|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|    393|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    393|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|    393|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|    393|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    393|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|    393|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|    393|	do {												\
  |  |  |  | 1408|    393|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    393|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    393|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    393|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    393|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    393|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    393|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 393]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|    393|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|    393|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    393|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 393]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|    393|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 393]
  |  |  ------------------
  ------------------
 6995|    393|			zend_hash_update(Z_ARRVAL_P(return_value), constant->name, &const_val);
  ------------------
  |  |  997|    393|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    393|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    393|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6996|    393|		}
 6997|  1.09k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    546|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6998|      1|}
zim_ReflectionExtension_getINIEntries:
 7018|      1|{
 7019|      1|	reflection_object *intern;
 7020|      1|	zend_module_entry *module;
 7021|      1|	zend_ini_entry *ini_entry;
 7022|       |
 7023|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7024|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7024:2): [True: 0, False: 0]
  |  Branch (7024:2): [True: 0, False: 0]
  |  Branch (7024:2): [True: 0, False: 0]
  |  Branch (7024:2): [True: 0, False: 0]
  ------------------
 7025|       |
 7026|      1|	array_init(return_value);
 7027|    360|	ZEND_HASH_MAP_FOREACH_PTR(EG(ini_directives), ini_entry) {
  ------------------
  |  | 1341|    179|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    180|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 179, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    179|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    179|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    179|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 179]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    179|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    179|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 179]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|    179|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7027:2): [True: 0, False: 1]
  |  Branch (7027:2): [True: 1, False: 0]
  ------------------
 7028|    360|		_addinientry(ini_entry, return_value, module->module_number);
 7029|    360|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    179|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7030|      1|}
zim_ReflectionExtension_getClasses:
 7059|      2|{
 7060|      2|	reflection_object *intern;
 7061|      2|	zend_module_entry *module;
 7062|      2|	zend_string *key;
 7063|      2|	zend_class_entry *ce;
 7064|       |
 7065|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 7066|      2|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (7066:2): [True: 0, False: 0]
  |  Branch (7066:2): [True: 0, False: 0]
  |  Branch (7066:2): [True: 0, False: 0]
  |  Branch (7066:2): [True: 0, False: 0]
  ------------------
 7067|       |
 7068|      2|	array_init(return_value);
 7069|    700|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(EG(class_table), key, ce) {
  ------------------
  |  | 1448|    348|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    350|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 348, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    348|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    348|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    348|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 348]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    348|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    348|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 348]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    348|	_key = _p->key; \
  |  | 1450|    348|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7069:2): [True: 0, False: 2]
  |  Branch (7069:2): [True: 2, False: 0]
  ------------------
 7070|    700|		add_extension_class(ce, key, return_value, module, true);
 7071|    700|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    348|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 7072|      2|}
zim_ReflectionExtension_getClassNames:
 7077|      1|{
 7078|      1|	reflection_object *intern;
 7079|      1|	zend_module_entry *module;
 7080|      1|	zend_string *key;
 7081|      1|	zend_class_entry *ce;
 7082|       |
 7083|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7084|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7084:2): [True: 0, False: 0]
  |  Branch (7084:2): [True: 0, False: 0]
  |  Branch (7084:2): [True: 0, False: 0]
  |  Branch (7084:2): [True: 0, False: 0]
  ------------------
 7085|       |
 7086|      1|	array_init(return_value);
 7087|    350|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(EG(class_table), key, ce) {
  ------------------
  |  | 1448|    174|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|    175|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 174, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|    174|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|    174|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    174|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 174]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|    174|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    174|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 174]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|    174|	_key = _p->key; \
  |  | 1450|    174|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7087:2): [True: 0, False: 1]
  |  Branch (7087:2): [True: 1, False: 0]
  ------------------
 7088|    350|		add_extension_class(ce, key, return_value, module, false);
 7089|    350|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    174|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7090|      1|}
zim_ReflectionExtension_getDependencies:
 7095|      1|{
 7096|      1|	reflection_object *intern;
 7097|      1|	zend_module_entry *module;
 7098|      1|	const zend_module_dep *dep;
 7099|       |
 7100|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7101|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7101:2): [True: 0, False: 0]
  |  Branch (7101:2): [True: 0, False: 0]
  |  Branch (7101:2): [True: 0, False: 0]
  |  Branch (7101:2): [True: 0, False: 0]
  ------------------
 7102|       |
 7103|      1|	dep = module->deps;
 7104|       |
 7105|      1|	if (!dep)
  ------------------
  |  Branch (7105:6): [True: 0, False: 1]
  ------------------
 7106|      0|	{
 7107|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7108|      0|	}
 7109|       |
 7110|      1|	array_init(return_value);
 7111|      4|	while(dep->name) {
  ------------------
  |  Branch (7111:8): [True: 3, False: 1]
  ------------------
 7112|      3|		zend_string *relation;
 7113|      3|		char *rel_type;
 7114|      3|		size_t len = 0;
 7115|       |
 7116|      3|		switch(dep->type) {
 7117|      2|			case MODULE_DEP_REQUIRED:
  ------------------
  |  |  101|      2|#define MODULE_DEP_REQUIRED		1
  ------------------
  |  Branch (7117:4): [True: 2, False: 1]
  ------------------
 7118|      2|				rel_type = "Required";
 7119|      2|				len += sizeof("Required") - 1;
 7120|      2|				break;
 7121|      0|			case MODULE_DEP_CONFLICTS:
  ------------------
  |  |  102|      0|#define MODULE_DEP_CONFLICTS	2
  ------------------
  |  Branch (7121:4): [True: 0, False: 3]
  ------------------
 7122|      0|				rel_type = "Conflicts";
 7123|      0|				len += sizeof("Conflicts") - 1;
 7124|      0|				break;
 7125|      1|			case MODULE_DEP_OPTIONAL:
  ------------------
  |  |  103|      1|#define MODULE_DEP_OPTIONAL		3
  ------------------
  |  Branch (7125:4): [True: 1, False: 2]
  ------------------
 7126|      1|				rel_type = "Optional";
 7127|      1|				len += sizeof("Optional") - 1;
 7128|      1|				break;
 7129|      0|			default:
  ------------------
  |  Branch (7129:4): [True: 0, False: 3]
  ------------------
 7130|      0|				rel_type = "Error"; /* shouldn't happen */
 7131|      0|				len += sizeof("Error") - 1;
 7132|      0|				break;
 7133|      3|		}
 7134|       |
 7135|      3|		if (dep->rel) {
  ------------------
  |  Branch (7135:7): [True: 0, False: 3]
  ------------------
 7136|      0|			len += strlen(dep->rel) + 1;
 7137|      0|		}
 7138|       |
 7139|      3|		if (dep->version) {
  ------------------
  |  Branch (7139:7): [True: 0, False: 3]
  ------------------
 7140|      0|			len += strlen(dep->version) + 1;
 7141|      0|		}
 7142|       |
 7143|      3|		relation = zend_string_alloc(len, 0);
 7144|      3|		snprintf(ZSTR_VAL(relation), ZSTR_LEN(relation) + 1, "%s%s%s%s%s",
  ------------------
  |  |   97|      3|#define snprintf ap_php_snprintf
  ------------------
              		snprintf(ZSTR_VAL(relation), ZSTR_LEN(relation) + 1, "%s%s%s%s%s",
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		snprintf(ZSTR_VAL(relation), ZSTR_LEN(relation) + 1, "%s%s%s%s%s",
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 7145|      3|						rel_type,
 7146|      3|						dep->rel ? " " : "",
  ------------------
  |  Branch (7146:7): [True: 0, False: 3]
  ------------------
 7147|      3|						dep->rel ? dep->rel : "",
  ------------------
  |  Branch (7147:7): [True: 0, False: 3]
  ------------------
 7148|      3|						dep->version ? " " : "",
  ------------------
  |  Branch (7148:7): [True: 0, False: 3]
  ------------------
 7149|      3|						dep->version ? dep->version : "");
  ------------------
  |  Branch (7149:7): [True: 0, False: 3]
  ------------------
 7150|      3|		add_assoc_str(return_value, dep->name, relation);
 7151|      3|		dep++;
 7152|      3|	}
 7153|      1|}
zim_ReflectionExtension_info:
 7158|      7|{
 7159|      7|	reflection_object *intern;
 7160|      7|	zend_module_entry *module;
 7161|       |
 7162|      7|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      7|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      7|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 7163|      7|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      7|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      7|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      7|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      7|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      7|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      7|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      7|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      7|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      7|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      7|	target = intern->ptr; \
  |  |  121|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 7]
  |  |  ------------------
  ------------------
  |  Branch (7163:2): [True: 0, False: 0]
  |  Branch (7163:2): [True: 0, False: 0]
  |  Branch (7163:2): [True: 0, False: 0]
  |  Branch (7163:2): [True: 0, False: 0]
  ------------------
 7164|       |
 7165|      7|	php_info_print_module(module);
 7166|      7|}
zim_ReflectionExtension_isPersistent:
 7171|      1|{
 7172|      1|	reflection_object *intern;
 7173|      1|	zend_module_entry *module;
 7174|       |
 7175|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7176|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7176:2): [True: 0, False: 0]
  |  Branch (7176:2): [True: 0, False: 0]
  |  Branch (7176:2): [True: 0, False: 0]
  |  Branch (7176:2): [True: 0, False: 0]
  ------------------
 7177|       |
 7178|      1|	RETURN_BOOL(module->type == MODULE_PERSISTENT);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7179|      1|}
zim_ReflectionExtension_isTemporary:
 7184|      1|{
 7185|      1|	reflection_object *intern;
 7186|      1|	zend_module_entry *module;
 7187|       |
 7188|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7189|      1|	GET_REFLECTION_OBJECT_PTR(module);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7189:2): [True: 0, False: 0]
  |  Branch (7189:2): [True: 0, False: 0]
  |  Branch (7189:2): [True: 0, False: 0]
  |  Branch (7189:2): [True: 0, False: 0]
  ------------------
 7190|       |
 7191|      1|	RETURN_BOOL(module->type == MODULE_TEMPORARY);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7192|      1|}
zim_ReflectionZendExtension___construct:
 7197|      3|{
 7198|      3|	zval *object;
 7199|      3|	reflection_object *intern;
 7200|      3|	zend_extension *extension;
 7201|      3|	char *name_str;
 7202|      3|	size_t name_len;
 7203|       |
 7204|      3|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &name_str, &name_len) == FAILURE) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7204:6): [True: 2, False: 1]
  ------------------
 7205|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7205:3): [True: 0, False: 2]
  |  Branch (7205:3): [True: 2, False: 0]
  ------------------
 7206|      2|	}
 7207|       |
 7208|      1|	object = ZEND_THIS;
  ------------------
  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7209|      1|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7210|       |
 7211|      1|	extension = zend_get_extension(name_str);
 7212|      1|	if (!extension) {
  ------------------
  |  Branch (7212:6): [True: 1, False: 0]
  ------------------
 7213|      1|		zend_throw_exception_ex(reflection_exception_ptr, 0,
 7214|      1|				"Zend Extension \"%s\" does not exist", name_str);
 7215|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7215:3): [True: 0, False: 1]
  |  Branch (7215:3): [True: 1, False: 0]
  ------------------
 7216|      1|	}
 7217|      0|	ZVAL_STRING(reflection_prop_name(object), extension->name);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7218|      0|	intern->ptr = extension;
 7219|      0|	intern->ref_type = REF_TYPE_OTHER;
 7220|       |	intern->ce = NULL;
 7221|      0|}
zim_ReflectionAttribute___toString:
 7421|      1|{
 7422|      1|	reflection_object *intern;
 7423|      1|	attribute_reference *attr;
 7424|       |
 7425|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7426|       |
 7427|      1|	GET_REFLECTION_OBJECT_PTR(attr);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7427:2): [True: 0, False: 0]
  |  Branch (7427:2): [True: 0, False: 0]
  |  Branch (7427:2): [True: 0, False: 0]
  |  Branch (7427:2): [True: 0, False: 0]
  ------------------
 7428|       |
 7429|      1|	smart_str str = {0};
 7430|      1|	smart_str_appends(&str, "Attribute [ ");
 7431|      1|	smart_str_append(&str, attr->data->name);
 7432|      1|	smart_str_appends(&str, " ]");
 7433|       |
 7434|      1|	if (attr->data->argc > 0) {
  ------------------
  |  Branch (7434:6): [True: 1, False: 0]
  ------------------
 7435|      1|		smart_str_appends(&str, " {\n");
 7436|      1|		smart_str_append_printf(&str, "  - Arguments [%d] {\n", attr->data->argc);
 7437|       |
 7438|      2|		for (uint32_t i = 0; i < attr->data->argc; i++) {
  ------------------
  |  Branch (7438:24): [True: 1, False: 1]
  ------------------
 7439|      1|			smart_str_append_printf(&str, "    Argument #%d [ ", i);
 7440|      1|			if (attr->data->args[i].name != NULL) {
  ------------------
  |  Branch (7440:8): [True: 0, False: 1]
  ------------------
 7441|      0|				smart_str_append(&str, attr->data->args[i].name);
 7442|      0|				smart_str_appends(&str, " = ");
 7443|      0|			}
 7444|       |
 7445|      1|			format_default_value(&str, &attr->data->args[i].value);
 7446|       |
 7447|      1|			smart_str_appends(&str, " ]\n");
 7448|      1|		}
 7449|      1|		smart_str_appends(&str, "  }\n");
 7450|       |
 7451|      1|		smart_str_appends(&str, "}\n");
 7452|      1|	} else {
 7453|      0|		smart_str_appendc(&str, '\n');
 7454|      0|	}
 7455|       |
 7456|      1|	RETURN_STR(smart_str_extract(&str));
  ------------------
  |  | 1050|      1|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      1|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      1|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7457|      1|}
zim_ReflectionAttribute_newInstance:
 7530|      8|{
 7531|      8|	reflection_object *intern;
 7532|      8|	attribute_reference *attr;
 7533|      8|	zend_attribute *marker;
 7534|       |
 7535|      8|	zend_class_entry *ce;
 7536|       |
 7537|      8|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      8|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      8|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 7538|       |
 7539|      8|	GET_REFLECTION_OBJECT_PTR(attr);
  ------------------
  |  |  118|      8|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      8|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      8|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      8|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      8|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      8|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      8|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      8|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      8|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      8|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      8|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      8|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      8|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      8|	target = intern->ptr; \
  |  |  121|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (7539:2): [True: 0, False: 0]
  |  Branch (7539:2): [True: 0, False: 0]
  |  Branch (7539:2): [True: 0, False: 0]
  |  Branch (7539:2): [True: 0, False: 0]
  ------------------
 7540|       |
 7541|      8|	if (NULL == (ce = zend_lookup_class(attr->data->name))) {
  ------------------
  |  Branch (7541:6): [True: 0, False: 8]
  ------------------
 7542|      0|		zend_throw_error(NULL, "Attribute class \"%s\" not found", ZSTR_VAL(attr->data->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7543|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7543:3): [True: 0, False: 0]
  |  Branch (7543:3): [True: 0, False: 0]
  ------------------
 7544|      0|	}
 7545|       |
 7546|      8|	if (NULL == (marker = zend_get_attribute_str(ce->attributes, ZEND_STRL("attribute")))) {
  ------------------
  |  |  541|      8|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  |  Branch (7546:6): [True: 0, False: 8]
  ------------------
 7547|      0|		zend_throw_error(NULL, "Attempting to use non-attribute class \"%s\" as attribute", ZSTR_VAL(attr->data->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7548|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7548:3): [True: 0, False: 0]
  |  Branch (7548:3): [True: 0, False: 0]
  ------------------
 7549|      0|	}
 7550|       |
 7551|       |	/* This code can be reached under one of three possible conditions:
 7552|       |	 * - the attribute is an internal attribute, and it had the target and
 7553|       |	 *   and repetition validated already
 7554|       |	 * - the attribute is an internal attribute and repetition was validated
 7555|       |	 *   already, the internal validator might have been run if the target was
 7556|       |	 *   correct, but any error would have been stored in
 7557|       |	 *   `zend_attribute.validation_error` instead of being thrown due to the
 7558|       |	 *   presence of #[DelayedTargetValidation]
 7559|       |	 * - the attribute is a user attribute, and neither target nor repetition
 7560|       |	 *   have been validated.
 7561|       |	 */
 7562|      8|	uint32_t flags = zend_attribute_attribute_get_flags(marker, ce);
 7563|      8|	if (EG(exception)) {
  ------------------
  |  |   45|      8|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 6]
  |  |  ------------------
  ------------------
 7564|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7564:3): [True: 0, False: 2]
  |  Branch (7564:3): [True: 2, False: 0]
  ------------------
 7565|      2|	}
 7566|       |
 7567|       |	/* No harm in always running target validation, for internal attributes
 7568|       |	 * without #[DelayedTargetValidation] it isn't necessary but will always
 7569|       |	 * succeed. */
 7570|      6|	if (!(attr->target & flags)) {
  ------------------
  |  Branch (7570:6): [True: 1, False: 5]
  ------------------
 7571|      1|		zend_string *location = zend_get_attribute_target_names(attr->target);
 7572|      1|		zend_string *allowed = zend_get_attribute_target_names(flags);
 7573|       |
 7574|      1|		zend_throw_error(NULL, "Attribute \"%s\" cannot target %s (allowed targets: %s)",
 7575|      1|			ZSTR_VAL(attr->data->name), ZSTR_VAL(location), ZSTR_VAL(allowed)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(attr->data->name), ZSTR_VAL(location), ZSTR_VAL(allowed)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_VAL(attr->data->name), ZSTR_VAL(location), ZSTR_VAL(allowed)
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7576|      1|		);
 7577|       |
 7578|      1|		zend_string_release(location);
 7579|      1|		zend_string_release(allowed);
 7580|       |
 7581|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7581:3): [True: 0, False: 1]
  |  Branch (7581:3): [True: 1, False: 0]
  ------------------
 7582|      1|	}
 7583|       |
 7584|      5|	if (attr->data->validation_error != NULL) {
  ------------------
  |  Branch (7584:6): [True: 0, False: 5]
  ------------------
 7585|       |		/* Delayed validation errors should only be set for internal attributes. */
 7586|      0|		ZEND_ASSERT(ce->type == ZEND_INTERNAL_CLASS);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7586:3): [True: 0, False: 0]
  |  Branch (7586:3): [True: 0, False: 0]
  ------------------
 7587|       |		/* Delayed validation errors should only be set when
 7588|       |		 * #[\DelayedTargetValidation] is used. Searching for the attribute is
 7589|       |		 * more expensive than just an assertion and so we don't worry about it
 7590|       |		 * for non-debug builds. See discussion on GH-18817. */
 7591|      0|#if ZEND_DEBUG
 7592|      0|		zend_attribute *delayed_target_validation = zend_get_attribute_str(
 7593|      0|			attr->attributes,
 7594|      0|			"delayedtargetvalidation",
 7595|      0|			strlen("delayedtargetvalidation")
 7596|      0|		);
 7597|      0|		ZEND_ASSERT(delayed_target_validation != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7597:3): [True: 0, False: 0]
  |  Branch (7597:3): [True: 0, False: 0]
  ------------------
 7598|      0|#endif
 7599|      0|		zend_throw_exception(zend_ce_error, ZSTR_VAL(attr->data->validation_error), 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7600|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7600:3): [True: 0, False: 0]
  |  Branch (7600:3): [True: 0, False: 0]
  ------------------
 7601|      0|	}
 7602|       |
 7603|       |	/* Repetition validation is done even if #[DelayedTargetValidation] is used
 7604|       |	 * and so can be skipped for internal attributes. */
 7605|      5|	if (ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (7605:6): [True: 4, False: 1]
  ------------------
 7606|      4|		if (!(flags & ZEND_ATTRIBUTE_IS_REPEATABLE)) {
  ------------------
  |  |   33|      4|#define ZEND_ATTRIBUTE_IS_REPEATABLE		(1<<7)
  ------------------
  |  Branch (7606:7): [True: 4, False: 0]
  ------------------
 7607|      4|			if (zend_is_attribute_repeated(attr->attributes, attr->data)) {
  ------------------
  |  Branch (7607:8): [True: 0, False: 4]
  ------------------
 7608|      0|				zend_throw_error(NULL, "Attribute \"%s\" must not be repeated", ZSTR_VAL(attr->data->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7609|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7609:5): [True: 0, False: 0]
  |  Branch (7609:5): [True: 0, False: 0]
  ------------------
 7610|      0|			}
 7611|      4|		}
 7612|      4|	}
 7613|       |
 7614|      5|	zval obj;
 7615|       |
 7616|      5|	if (SUCCESS != zend_get_attribute_object(&obj, ce, attr->data, attr->scope, attr->filename)) {
  ------------------
  |  Branch (7616:6): [True: 4, False: 1]
  ------------------
 7617|      4|		RETURN_THROWS();
  ------------------
  |  | 1071|      4|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7617:3): [True: 0, False: 4]
  |  Branch (7617:3): [True: 4, False: 0]
  ------------------
 7618|      4|	}
 7619|       |
 7620|      1|	RETURN_COPY_VALUE(&obj);
  ------------------
  |  | 1066|      1|#define RETURN_COPY_VALUE(zv)			do { RETVAL_COPY_VALUE(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1040|      1|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1066:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7621|      1|}
zim_ReflectionEnum___construct:
 7624|      4|{
 7625|      4|	reflection_class_object_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  ------------------
  |  |   49|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 7626|      4|	if (EG(exception)) {
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 7627|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7627:3): [True: 0, False: 2]
  |  Branch (7627:3): [True: 2, False: 0]
  ------------------
 7628|      2|	}
 7629|       |
 7630|      2|	reflection_object *intern;
 7631|      2|	zend_class_entry *ce;
 7632|      2|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (7632:2): [True: 0, False: 0]
  |  Branch (7632:2): [True: 0, False: 0]
  |  Branch (7632:2): [True: 0, False: 0]
  |  Branch (7632:2): [True: 0, False: 0]
  ------------------
 7633|       |
 7634|      2|	if (!(ce->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|      2|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (7634:6): [True: 0, False: 2]
  ------------------
 7635|      0|		zend_throw_exception_ex(reflection_exception_ptr, -1, "Class \"%s\" is not an enum", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7636|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7636:3): [True: 0, False: 0]
  |  Branch (7636:3): [True: 0, False: 0]
  ------------------
 7637|      0|	}
 7638|      2|}
zim_ReflectionEnumUnitCase___construct:
 7735|      7|{
 7736|      7|	ZEND_MN(ReflectionClassConstant___construct)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |   72|      7|#define ZEND_MN(name) zim_##name
  ------------------
              	ZEND_MN(ReflectionClassConstant___construct)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |   49|      7|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 7737|      7|	if (EG(exception)) {
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 4, False: 3]
  |  |  ------------------
  ------------------
 7738|      4|		RETURN_THROWS();
  ------------------
  |  | 1071|      4|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7738:3): [True: 0, False: 4]
  |  Branch (7738:3): [True: 4, False: 0]
  ------------------
 7739|      4|	}
 7740|       |
 7741|      3|	reflection_object *intern;
 7742|      3|	zend_class_constant *ref;
 7743|       |
 7744|      3|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (7744:2): [True: 0, False: 0]
  |  Branch (7744:2): [True: 0, False: 0]
  |  Branch (7744:2): [True: 0, False: 0]
  |  Branch (7744:2): [True: 0, False: 0]
  ------------------
 7745|       |
 7746|      3|	if (!(ZEND_CLASS_CONST_FLAGS(ref) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  498|      3|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      3|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (!(ZEND_CLASS_CONST_FLAGS(ref) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  255|      3|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (7746:6): [True: 0, False: 3]
  ------------------
 7747|      0|		zval *case_name = reflection_prop_name(ZEND_THIS);
  ------------------
  |  |  523|      0|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7748|      0|		zend_throw_exception_ex(reflection_exception_ptr, 0, "Constant %s::%s is not a case", ZSTR_VAL(ref->ce->name), Z_STRVAL_P(case_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_throw_exception_ex(reflection_exception_ptr, 0, "Constant %s::%s is not a case", ZSTR_VAL(ref->ce->name), Z_STRVAL_P(case_name));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7749|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7749:3): [True: 0, False: 0]
  |  Branch (7749:3): [True: 0, False: 0]
  ------------------
 7750|      0|	}
 7751|      3|}
zim_ReflectionEnumUnitCase_getEnum:
 7754|      1|{
 7755|      1|	reflection_object *intern;
 7756|      1|	zend_class_constant *ref;
 7757|       |
 7758|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7759|      1|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7759:2): [True: 0, False: 0]
  |  Branch (7759:2): [True: 0, False: 0]
  |  Branch (7759:2): [True: 0, False: 0]
  |  Branch (7759:2): [True: 0, False: 0]
  ------------------
 7760|       |
 7761|      1|	zend_reflection_class_factory(ref->ce, return_value);
 7762|      1|}
zim_ReflectionEnumBackedCase___construct:
 7765|      4|{
 7766|      4|	ZEND_MN(ReflectionEnumUnitCase___construct)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |   72|      4|#define ZEND_MN(name) zim_##name
  ------------------
              	ZEND_MN(ReflectionEnumUnitCase___construct)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |   49|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 7767|      4|	if (EG(exception)) {
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 7768|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7768:3): [True: 0, False: 2]
  |  Branch (7768:3): [True: 2, False: 0]
  ------------------
 7769|      2|	}
 7770|       |
 7771|      2|	reflection_object *intern;
 7772|      2|	zend_class_constant *ref;
 7773|       |
 7774|      2|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (7774:2): [True: 0, False: 0]
  |  Branch (7774:2): [True: 0, False: 0]
  |  Branch (7774:2): [True: 0, False: 0]
  |  Branch (7774:2): [True: 0, False: 0]
  ------------------
 7775|       |
 7776|      2|	if (ref->ce->enum_backing_type == IS_UNDEF) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (7776:6): [True: 0, False: 2]
  ------------------
 7777|      0|		zval *case_name = reflection_prop_name(ZEND_THIS);
  ------------------
  |  |  523|      0|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      0|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7778|      0|		zend_throw_exception_ex(reflection_exception_ptr, 0, "Enum case %s::%s is not a backed case", ZSTR_VAL(ref->ce->name), Z_STRVAL_P(case_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_throw_exception_ex(reflection_exception_ptr, 0, "Enum case %s::%s is not a backed case", ZSTR_VAL(ref->ce->name), Z_STRVAL_P(case_name));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7779|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7779:3): [True: 0, False: 0]
  |  Branch (7779:3): [True: 0, False: 0]
  ------------------
 7780|      0|	}
 7781|      2|}
zim_ReflectionEnumBackedCase_getBackingValue:
 7784|      2|{
 7785|      2|	reflection_object *intern;
 7786|      2|	zend_class_constant *ref;
 7787|       |
 7788|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 7789|      2|	GET_REFLECTION_OBJECT_PTR(ref);
  ------------------
  |  |  118|      2|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      2|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      2|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      2|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      2|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      2|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      2|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      2|	target = intern->ptr; \
  |  |  121|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (7789:2): [True: 0, False: 0]
  |  Branch (7789:2): [True: 0, False: 0]
  |  Branch (7789:2): [True: 0, False: 0]
  |  Branch (7789:2): [True: 0, False: 0]
  ------------------
 7790|       |
 7791|      2|	if (Z_TYPE(ref->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(ref->value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      2|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (7791:6): [True: 2, False: 0]
  ------------------
 7792|      2|		zval_update_constant_ex(&ref->value, ref->ce);
 7793|      2|		if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 7794|      2|			RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7794:4): [True: 0, False: 2]
  |  Branch (7794:4): [True: 2, False: 0]
  ------------------
 7795|      2|		}
 7796|      2|	}
 7797|       |
 7798|      0|	ZEND_ASSERT(intern->ce->enum_backing_type != IS_UNDEF);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (7798:2): [True: 0, False: 0]
  |  Branch (7798:2): [True: 0, False: 0]
  ------------------
 7799|      0|	zval *member_p = zend_enum_fetch_case_value(Z_OBJ(ref->value));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 7800|       |
 7801|      0|	ZVAL_COPY_OR_DUP(return_value, member_p);
  ------------------
  |  | 1457|      0|	do {																\
  |  | 1458|      0|		zval *_z1 = (z);												\
  |  | 1459|      0|		const zval *_z2 = (v);											\
  |  | 1460|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7802|      0|}
zim_ReflectionFiber___construct:
 7806|      3|{
 7807|      3|	zval *fiber, *object;
 7808|      3|	reflection_object *intern;
 7809|       |
 7810|      3|	object = ZEND_THIS;
  ------------------
  |  |  523|      3|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7811|      3|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7812|       |
 7813|      7|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7814|      7|		Z_PARAM_OBJECT_OF_CLASS(fiber, zend_ce_fiber)
  ------------------
  |  | 1985|      1|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 0, 0)
  |  |  ------------------
  |  |  |  | 1971|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      1|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (7814:3): [True: 1, False: 0]
  |  Branch (7814:3): [True: 0, False: 0]
  |  Branch (7814:3): [True: 1, False: 0]
  |  Branch (7814:3): [True: 0, False: 0]
  |  Branch (7814:3): [True: 1, False: 0]
  |  Branch (7814:3): [True: 0, False: 0]
  |  Branch (7814:3): [True: 0, False: 1]
  |  Branch (7814:3): [True: 1, False: 0]
  |  Branch (7814:3): [True: 0, False: 0]
  |  Branch (7814:3): [True: 0, False: 0]
  ------------------
 7815|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7815:2): [True: 1, False: 0]
  |  Branch (7815:2): [True: 0, False: 0]
  |  Branch (7815:2): [True: 1, False: 0]
  |  Branch (7815:2): [True: 0, False: 0]
  ------------------
 7816|       |
 7817|      1|	if (intern->ce) {
  ------------------
  |  Branch (7817:6): [True: 0, False: 1]
  ------------------
 7818|      0|		zval_ptr_dtor(&intern->obj);
 7819|      0|	}
 7820|       |
 7821|      1|	intern->ref_type = REF_TYPE_FIBER;
 7822|      1|	ZVAL_OBJ_COPY(&intern->obj, Z_OBJ_P(fiber));
  ------------------
  |  | 1146|      1|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      1|		zval *__z = (z);						\
  |  | 1148|      1|		zend_object *__o = (o);					\
  |  | 1149|      1|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      1|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 7823|      1|	intern->ce = zend_ce_fiber;
 7824|      1|}
zim_ReflectionConstant___construct:
 7948|     10|{
 7949|     10|	zend_string *name;
 7950|       |
 7951|     10|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|     10|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 7952|     10|	reflection_object *intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     10|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     10|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     10|	_Generic( \
  |  |  |  |  |  |  408|     10|		(ptr), \
  |  |  |  |  |  |  409|     10|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     10|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     10|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7953|       |
 7954|     28|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     10|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     10|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     10|		const int _flags = (flags); \
  |  |  |  | 1599|     10|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     10|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     10|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     10|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     10|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     10|		uint32_t _i = 0; \
  |  |  |  | 1603|     10|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     10|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     10|		char *_error = NULL; \
  |  |  |  | 1606|     10|		bool _dummy = 0; \
  |  |  |  | 1607|     10|		bool _optional = 0; \
  |  |  |  | 1608|     10|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     10|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     10|		((void)_i); \
  |  |  |  | 1610|     10|		((void)_real_arg); \
  |  |  |  | 1611|     10|		((void)_arg); \
  |  |  |  | 1612|     10|		((void)_expected_type); \
  |  |  |  | 1613|     10|		((void)_error); \
  |  |  |  | 1614|     10|		((void)_optional); \
  |  |  |  | 1615|     10|		((void)_dummy); \
  |  |  |  | 1616|     10|		\
  |  |  |  | 1617|     10|		do { \
  |  |  |  | 1618|     10|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     10|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|     10|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     10|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     10|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7955|     32|		Z_PARAM_STR(name)
  ------------------
  |  | 2102|      8|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      8|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      8|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (7955:3): [True: 8, False: 0]
  |  Branch (7955:3): [True: 0, False: 0]
  |  Branch (7955:3): [True: 8, False: 0]
  |  Branch (7955:3): [True: 0, False: 0]
  |  Branch (7955:3): [True: 8, False: 0]
  |  Branch (7955:3): [True: 0, False: 0]
  |  Branch (7955:3): [True: 0, False: 8]
  |  Branch (7955:3): [True: 8, False: 0]
  |  Branch (7955:3): [True: 0, False: 0]
  |  Branch (7955:3): [True: 0, False: 0]
  ------------------
 7956|     10|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      8|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      8|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      8|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1641|     10|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7956:2): [True: 8, False: 0]
  |  Branch (7956:2): [True: 0, False: 0]
  |  Branch (7956:2): [True: 8, False: 0]
  |  Branch (7956:2): [True: 0, False: 0]
  ------------------
 7957|       |
 7958|       |	/* Build name with lowercased ns. */
 7959|     10|	bool backslash_prefixed = ZSTR_VAL(name)[0] == '\\';
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7960|      8|	char *source = ZSTR_VAL(name) + backslash_prefixed;
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7961|      8|	size_t source_len = ZSTR_LEN(name) - backslash_prefixed;
  ------------------
  |  |   68|      8|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 7962|      8|	zend_string *lc_name = zend_string_alloc(source_len, /* persistent */ false);
 7963|      8|	const char *ns_end = zend_memrchr(source, '\\', source_len);
 7964|      8|	size_t ns_len = 0;
 7965|      8|	if (ns_end) {
  ------------------
  |  Branch (7965:6): [True: 1, False: 7]
  ------------------
 7966|      1|		ns_len = ns_end - ZSTR_VAL(name);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7967|      1|		zend_str_tolower_copy(ZSTR_VAL(lc_name), source, ns_len);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7968|      1|	}
 7969|      8|	memcpy(ZSTR_VAL(lc_name) + ns_len, source + ns_len, source_len - ns_len);
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7970|       |
 7971|      8|	zend_constant *const_ = zend_get_constant_ptr(lc_name);
 7972|      8|	zend_string_release_ex(lc_name, /* persistent */ false);
 7973|      8|	if (!const_) {
  ------------------
  |  Branch (7973:6): [True: 1, False: 7]
  ------------------
 7974|      1|		zend_throw_exception_ex(reflection_exception_ptr, 0, "Constant \"%s\" does not exist", ZSTR_VAL(name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 7975|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7975:3): [True: 0, False: 1]
  |  Branch (7975:3): [True: 1, False: 0]
  ------------------
 7976|      1|	}
 7977|       |
 7978|      7|	intern->ptr = const_;
 7979|      7|	intern->ref_type = REF_TYPE_OTHER;
 7980|       |
 7981|      7|	zval *name_zv = reflection_prop_name(object);
 7982|      7|	zval_ptr_dtor(name_zv);
 7983|      7|	ZVAL_STR_COPY(name_zv, name);
  ------------------
  |  | 1112|      7|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      7|		zval *__z = (z);								\
  |  | 1114|      7|		zend_string *__s = (s);							\
  |  | 1115|      7|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      7|		/* interned strings support */					\
  |  | 1117|      7|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 6]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      6|		} else {										\
  |  | 1120|      6|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      6|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      6|		}												\
  |  | 1123|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 7984|      7|}
zim_ReflectionConstant_isDeprecated:
 8060|      1|{
 8061|      1|	reflection_object *intern;
 8062|      1|	zend_constant *const_;
 8063|       |
 8064|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 8065|       |
 8066|      1|	GET_REFLECTION_OBJECT_PTR(const_);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (8066:2): [True: 0, False: 0]
  |  Branch (8066:2): [True: 0, False: 0]
  |  Branch (8066:2): [True: 0, False: 0]
  |  Branch (8066:2): [True: 0, False: 0]
  ------------------
 8067|      1|	RETURN_BOOL(ZEND_CONSTANT_FLAGS(const_) & CONST_DEPRECATED);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 8068|      1|}
zim_ReflectionConstant_getAttributes:
 8138|      3|{
 8139|      3|	reflection_object *intern;
 8140|      3|	zend_constant *const_;
 8141|       |
 8142|      3|	GET_REFLECTION_OBJECT_PTR(const_);
  ------------------
  |  |  118|      3|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      3|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      3|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      3|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      3|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      3|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      3|	target = intern->ptr; \
  |  |  121|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (8142:2): [True: 0, False: 0]
  |  Branch (8142:2): [True: 0, False: 0]
  |  Branch (8142:2): [True: 0, False: 0]
  |  Branch (8142:2): [True: 0, False: 0]
  ------------------
 8143|       |
 8144|      3|	reflect_attributes(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |   49|      3|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 8145|      3|		const_->attributes, 0, NULL, ZEND_ATTRIBUTE_TARGET_CONST,
  ------------------
  |  |   31|      3|#define ZEND_ATTRIBUTE_TARGET_CONST			(1<<6)
  ------------------
 8146|      3|		const_->filename);
 8147|      3|}
zm_startup_reflection:
 8163|      2|{
 8164|      2|	memcpy(&reflection_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
 8165|      2|	reflection_object_handlers.offset = offsetof(reflection_object, zo);
 8166|      2|	reflection_object_handlers.free_obj = reflection_free_objects_storage;
 8167|      2|	reflection_object_handlers.clone_obj = NULL;
 8168|      2|	reflection_object_handlers.write_property = _reflection_write_property;
 8169|      2|	reflection_object_handlers.get_gc = reflection_get_gc;
 8170|       |
 8171|      2|	reflection_exception_ptr = register_class_ReflectionException(zend_ce_exception);
 8172|       |
 8173|      2|	reflection_ptr = register_class_Reflection();
 8174|       |
 8175|      2|	reflector_ptr = register_class_Reflector(zend_ce_stringable);
 8176|       |
 8177|      2|	reflection_function_abstract_ptr = register_class_ReflectionFunctionAbstract(reflector_ptr);
 8178|      2|	reflection_function_abstract_ptr->default_object_handlers = &reflection_object_handlers;
 8179|      2|	reflection_function_abstract_ptr->create_object = reflection_objects_new;
 8180|       |
 8181|      2|	reflection_function_ptr = register_class_ReflectionFunction(reflection_function_abstract_ptr);
 8182|      2|	reflection_function_ptr->create_object = reflection_objects_new;
 8183|      2|	reflection_function_ptr->default_object_handlers = &reflection_object_handlers;
 8184|       |
 8185|      2|	reflection_generator_ptr = register_class_ReflectionGenerator();
 8186|      2|	reflection_generator_ptr->create_object = reflection_objects_new;
 8187|      2|	reflection_generator_ptr->default_object_handlers = &reflection_object_handlers;
 8188|       |
 8189|      2|	reflection_parameter_ptr = register_class_ReflectionParameter(reflector_ptr);
 8190|      2|	reflection_parameter_ptr->create_object = reflection_objects_new;
 8191|      2|	reflection_parameter_ptr->default_object_handlers = &reflection_object_handlers;
 8192|       |
 8193|      2|	reflection_type_ptr = register_class_ReflectionType(zend_ce_stringable);
 8194|      2|	reflection_type_ptr->create_object = reflection_objects_new;
 8195|      2|	reflection_type_ptr->default_object_handlers = &reflection_object_handlers;
 8196|       |
 8197|      2|	reflection_named_type_ptr = register_class_ReflectionNamedType(reflection_type_ptr);
 8198|      2|	reflection_named_type_ptr->create_object = reflection_objects_new;
 8199|      2|	reflection_named_type_ptr->default_object_handlers = &reflection_object_handlers;
 8200|       |
 8201|      2|	reflection_union_type_ptr = register_class_ReflectionUnionType(reflection_type_ptr);
 8202|      2|	reflection_union_type_ptr->create_object = reflection_objects_new;
 8203|      2|	reflection_union_type_ptr->default_object_handlers = &reflection_object_handlers;
 8204|       |
 8205|      2|	reflection_intersection_type_ptr = register_class_ReflectionIntersectionType(reflection_type_ptr);
 8206|      2|	reflection_intersection_type_ptr->create_object = reflection_objects_new;
 8207|      2|	reflection_intersection_type_ptr->default_object_handlers = &reflection_object_handlers;
 8208|       |
 8209|      2|	reflection_method_ptr = register_class_ReflectionMethod(reflection_function_abstract_ptr);
 8210|      2|	reflection_method_ptr->create_object = reflection_objects_new;
 8211|      2|	reflection_method_ptr->default_object_handlers = &reflection_object_handlers;
 8212|       |
 8213|      2|	reflection_class_ptr = register_class_ReflectionClass(reflector_ptr);
 8214|      2|	reflection_class_ptr->create_object = reflection_objects_new;
 8215|      2|	reflection_class_ptr->default_object_handlers = &reflection_object_handlers;
 8216|       |
 8217|      2|	reflection_object_ptr = register_class_ReflectionObject(reflection_class_ptr);
 8218|      2|	reflection_object_ptr->create_object = reflection_objects_new;
 8219|      2|	reflection_object_ptr->default_object_handlers = &reflection_object_handlers;
 8220|       |
 8221|      2|	reflection_property_ptr = register_class_ReflectionProperty(reflector_ptr);
 8222|      2|	reflection_property_ptr->create_object = reflection_objects_new;
 8223|      2|	reflection_property_ptr->default_object_handlers = &reflection_object_handlers;
 8224|       |
 8225|      2|	reflection_class_constant_ptr = register_class_ReflectionClassConstant(reflector_ptr);
 8226|      2|	reflection_class_constant_ptr->create_object = reflection_objects_new;
 8227|      2|	reflection_class_constant_ptr->default_object_handlers = &reflection_object_handlers;
 8228|       |
 8229|      2|	reflection_extension_ptr = register_class_ReflectionExtension(reflector_ptr);
 8230|      2|	reflection_extension_ptr->create_object = reflection_objects_new;
 8231|      2|	reflection_extension_ptr->default_object_handlers = &reflection_object_handlers;
 8232|       |
 8233|      2|	reflection_zend_extension_ptr = register_class_ReflectionZendExtension(reflector_ptr);
 8234|      2|	reflection_zend_extension_ptr->create_object = reflection_objects_new;
 8235|      2|	reflection_zend_extension_ptr->default_object_handlers = &reflection_object_handlers;
 8236|       |
 8237|      2|	reflection_reference_ptr = register_class_ReflectionReference();
 8238|      2|	reflection_reference_ptr->create_object = reflection_objects_new;
 8239|      2|	reflection_reference_ptr->default_object_handlers = &reflection_object_handlers;
 8240|       |
 8241|      2|	reflection_attribute_ptr = register_class_ReflectionAttribute(reflector_ptr);
 8242|      2|	reflection_attribute_ptr->create_object = reflection_objects_new;
 8243|      2|	reflection_attribute_ptr->default_object_handlers = &reflection_object_handlers;
 8244|       |
 8245|      2|	reflection_enum_ptr = register_class_ReflectionEnum(reflection_class_ptr);
 8246|      2|	reflection_enum_ptr->create_object = reflection_objects_new;
 8247|      2|	reflection_enum_ptr->default_object_handlers = &reflection_object_handlers;
 8248|       |
 8249|      2|	reflection_enum_unit_case_ptr = register_class_ReflectionEnumUnitCase(reflection_class_constant_ptr);
 8250|      2|	reflection_enum_unit_case_ptr->create_object = reflection_objects_new;
 8251|      2|	reflection_enum_unit_case_ptr->default_object_handlers = &reflection_object_handlers;
 8252|       |
 8253|      2|	reflection_enum_backed_case_ptr = register_class_ReflectionEnumBackedCase(reflection_enum_unit_case_ptr);
 8254|      2|	reflection_enum_backed_case_ptr->create_object = reflection_objects_new;
 8255|      2|	reflection_enum_backed_case_ptr->default_object_handlers = &reflection_object_handlers;
 8256|       |
 8257|      2|	reflection_fiber_ptr = register_class_ReflectionFiber();
 8258|      2|	reflection_fiber_ptr->create_object = reflection_objects_new;
 8259|      2|	reflection_fiber_ptr->default_object_handlers = &reflection_object_handlers;
 8260|       |
 8261|      2|	reflection_constant_ptr = register_class_ReflectionConstant(reflector_ptr);
 8262|      2|	reflection_constant_ptr->create_object = reflection_objects_new;
 8263|      2|	reflection_constant_ptr->default_object_handlers = &reflection_object_handlers;
 8264|       |
 8265|      2|	reflection_property_hook_type_ptr = register_class_PropertyHookType();
 8266|       |
 8267|      2|	REFLECTION_G(key_initialized) = false;
  ------------------
  |  |   65|      2|#define REFLECTION_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(reflection, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 8268|       |
 8269|      2|	return SUCCESS;
 8270|      2|} /* }}} */
zm_info_reflection:
 8273|      7|{
 8274|      7|	php_info_print_table_start();
 8275|      7|	php_info_print_table_row(2, "Reflection", "enabled");
 8276|      7|	php_info_print_table_end();
 8277|      7|} /* }}} */
php_reflection.c:reflection_prop_name:
   67|  1.29k|static zend_always_inline zval *reflection_prop_name(zval *object) {
   68|       |	/* $name is always in the first property slot. */
   69|  1.29k|	ZEND_ASSERT(Z_OBJCE_P(object)->default_properties_count >= 1);
  ------------------
  |  |  112|  1.29k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (69:2): [True: 0, False: 1.29k]
  |  Branch (69:2): [True: 1.29k, False: 0]
  ------------------
   70|  1.29k|	return &Z_OBJ_P(object)->properties_table[0];
  ------------------
  |  | 1000|  1.29k|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|  1.29k|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
   71|  1.29k|}
php_reflection.c:_function_string:
  859|     80|{
  860|     80|	smart_str param_indent = {0};
  861|     80|	zend_function *overwrites;
  862|     80|	zend_string *lc_name;
  863|       |
  864|       |	/* TBD: Repair indenting of doc comment (or is this to be done in the parser?)
  865|       |	 * What's "wrong" is that any whitespace before the doc comment start is
  866|       |	 * swallowed, leading to an unaligned comment.
  867|       |	 */
  868|     80|	if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) {
  ------------------
  |  Branch (868:6): [True: 13, False: 67]
  |  Branch (868:42): [True: 0, False: 13]
  ------------------
  869|      0|		smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(fptr->op_array.doc_comment));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  870|     80|	} else if (fptr->type == ZEND_INTERNAL_FUNCTION && fptr->internal_function.doc_comment) {
  ------------------
  |  Branch (870:13): [True: 67, False: 13]
  |  Branch (870:53): [True: 0, False: 67]
  ------------------
  871|      0|		smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(fptr->internal_function.doc_comment));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  872|      0|	}
  873|       |
  874|     80|	smart_str_appends(str, indent);
  875|     80|	smart_str_appends(str, fptr->common.fn_flags & ZEND_ACC_CLOSURE ? "Closure [ " : (fptr->common.scope ? "Method [ " : "Function [ "));
  ------------------
  |  |  384|     80|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (875:25): [True: 2, False: 78]
  |  Branch (875:84): [True: 71, False: 7]
  ------------------
  876|     80|	smart_str_appends(str, (fptr->type == ZEND_USER_FUNCTION) ? "<user" : "<internal");
  ------------------
  |  Branch (876:25): [True: 13, False: 67]
  ------------------
  877|     80|	if (fptr->common.fn_flags & ZEND_ACC_DEPRECATED) {
  ------------------
  |  |  258|     80|#define ZEND_ACC_DEPRECATED              (1 << 11) /*  X  |  X  |     |  X  */
  ------------------
  |  Branch (877:6): [True: 0, False: 80]
  ------------------
  878|      0|		smart_str_appends(str, ", deprecated");
  879|      0|	}
  880|     80|	if (fptr->type == ZEND_INTERNAL_FUNCTION && ((zend_internal_function*)fptr)->module) {
  ------------------
  |  Branch (880:6): [True: 67, False: 13]
  |  Branch (880:46): [True: 64, False: 3]
  ------------------
  881|     64|		smart_str_append_printf(str, ":%s", ((zend_internal_function*)fptr)->module->name);
  882|     64|	}
  883|       |
  884|     80|	if (scope && fptr->common.scope) {
  ------------------
  |  Branch (884:6): [True: 71, False: 9]
  |  Branch (884:15): [True: 71, False: 0]
  ------------------
  885|     71|		if (fptr->common.scope != scope) {
  ------------------
  |  Branch (885:7): [True: 0, False: 71]
  ------------------
  886|      0|			smart_str_append_printf(str, ", inherits %s", ZSTR_VAL(fptr->common.scope->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  887|     71|		} else if (fptr->common.scope->parent) {
  ------------------
  |  Branch (887:14): [True: 1, False: 70]
  ------------------
  888|      1|			lc_name = zend_string_tolower(fptr->common.function_name);
  889|      1|			if ((overwrites = zend_hash_find_ptr(&fptr->common.scope->parent->function_table, lc_name)) != NULL) {
  ------------------
  |  Branch (889:8): [True: 1, False: 0]
  ------------------
  890|      1|				if (fptr->common.scope != overwrites->common.scope && !(overwrites->common.fn_flags & ZEND_ACC_PRIVATE)) {
  ------------------
  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (890:9): [True: 1, False: 0]
  |  Branch (890:59): [True: 1, False: 0]
  ------------------
  891|      1|					smart_str_append_printf(str, ", overwrites %s", ZSTR_VAL(overwrites->common.scope->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  892|      1|				}
  893|      1|			}
  894|      1|			zend_string_release_ex(lc_name, 0);
  895|      1|		}
  896|     71|	}
  897|     80|	if (fptr->common.prototype && fptr->common.prototype->common.scope) {
  ------------------
  |  Branch (897:6): [True: 4, False: 76]
  |  Branch (897:32): [True: 4, False: 0]
  ------------------
  898|      4|		smart_str_append_printf(str, ", prototype %s", ZSTR_VAL(fptr->common.prototype->common.scope->name));
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  899|      4|	}
  900|     80|	if (fptr->common.fn_flags & ZEND_ACC_CTOR) {
  ------------------
  |  |  381|     80|#define ZEND_ACC_CTOR                    (1 << 21) /*     |  X  |     |     */
  ------------------
  |  Branch (900:6): [True: 1, False: 79]
  ------------------
  901|      1|		smart_str_appends(str, ", ctor");
  902|      1|	}
  903|     80|	smart_str_appends(str, "> ");
  904|       |
  905|     80|	if (fptr->common.fn_flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     80|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (905:6): [True: 0, False: 80]
  ------------------
  906|      0|		smart_str_appends(str, "abstract ");
  907|      0|	}
  908|     80|	if (fptr->common.fn_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     80|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (908:6): [True: 0, False: 80]
  ------------------
  909|      0|		smart_str_appends(str, "final ");
  910|      0|	}
  911|     80|	if (fptr->common.fn_flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     80|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (911:6): [True: 2, False: 78]
  ------------------
  912|      2|		smart_str_appends(str, "static ");
  913|      2|	}
  914|       |
  915|     80|	if (fptr->common.scope) {
  ------------------
  |  Branch (915:6): [True: 71, False: 9]
  ------------------
  916|       |		/* These are mutually exclusive */
  917|     71|		switch (fptr->common.fn_flags & ZEND_ACC_PPP_MASK) {
  ------------------
  |  |  421|     71|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|     71|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|     71|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|     71|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  918|     69|			case ZEND_ACC_PUBLIC:
  ------------------
  |  |  219|     69|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (918:4): [True: 69, False: 2]
  ------------------
  919|     69|				smart_str_appends(str, "public ");
  920|     69|				break;
  921|      2|			case ZEND_ACC_PRIVATE:
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (921:4): [True: 2, False: 69]
  ------------------
  922|      2|				smart_str_appends(str, "private ");
  923|      2|				break;
  924|      0|			case ZEND_ACC_PROTECTED:
  ------------------
  |  |  220|      0|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (924:4): [True: 0, False: 71]
  ------------------
  925|      0|				smart_str_appends(str, "protected ");
  926|      0|				break;
  927|      0|			default:
  ------------------
  |  Branch (927:4): [True: 0, False: 71]
  ------------------
  928|      0|				smart_str_appends(str, "<visibility error> ");
  929|      0|				break;
  930|     71|		}
  931|     71|		smart_str_appends(str, "method ");
  932|     71|	} else {
  933|      9|		smart_str_appends(str, "function ");
  934|      9|	}
  935|       |
  936|     80|	if (fptr->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE) {
  ------------------
  |  |  352|     80|#define ZEND_ACC_RETURN_REFERENCE        (1 << 12) /*     |  X  |     |     */
  ------------------
  |  Branch (936:6): [True: 0, False: 80]
  ------------------
  937|      0|		smart_str_appendc(str, '&');
  938|      0|	}
  939|     80|	smart_str_append_printf(str, "%s ] {\n", ZSTR_VAL(fptr->common.function_name));
  ------------------
  |  |   67|     80|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  940|       |	/* The information where a function is declared is only available for user classes */
  941|     80|	if (fptr->type == ZEND_USER_FUNCTION) {
  ------------------
  |  Branch (941:6): [True: 13, False: 67]
  ------------------
  942|     13|		smart_str_append_printf(str, "%s  @@ %s %d - %d\n", indent,
  943|     13|						ZSTR_VAL(fptr->op_array.filename),
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  944|     13|						fptr->op_array.line_start,
  945|     13|						fptr->op_array.line_end);
  946|     13|	}
  947|     80|	smart_str_append_printf(&param_indent, "%s  ", indent);
  948|     80|	smart_str_0(&param_indent);
  949|     80|	if (fptr->common.fn_flags & ZEND_ACC_CLOSURE) {
  ------------------
  |  |  384|     80|#define ZEND_ACC_CLOSURE                 (1 << 22) /*     |  X  |     |     */
  ------------------
  |  Branch (949:6): [True: 2, False: 78]
  ------------------
  950|      2|		_function_closure_string(str, fptr, ZSTR_VAL(param_indent.s));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  951|      2|	}
  952|     80|	_function_parameter_string(str, fptr, ZSTR_VAL(param_indent.s));
  ------------------
  |  |   67|     80|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  953|     80|	smart_str_free(&param_indent);
  954|     80|	if ((fptr->op_array.fn_flags & ZEND_ACC_HAS_RETURN_TYPE)) {
  ------------------
  |  |  355|     80|#define ZEND_ACC_HAS_RETURN_TYPE         (1 << 13) /*     |  X  |     |     */
  ------------------
  |  Branch (954:6): [True: 66, False: 14]
  ------------------
  955|     66|		smart_str_append_printf(str, "  %s- %s [ ", indent, ZEND_ARG_TYPE_IS_TENTATIVE(&fptr->common.arg_info[-1]) ? "Tentative return" : "Return");
  ------------------
  |  | 1136|     66|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|     66|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1128|     66|#define _ZEND_IS_TENTATIVE_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 4))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     66|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1136:2): [True: 50, False: 16]
  |  |  ------------------
  ------------------
  956|     66|		if (ZEND_TYPE_IS_SET(fptr->common.arg_info[-1].type)) {
  ------------------
  |  |  152|     66|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     66|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 66, False: 0]
  |  |  ------------------
  ------------------
  957|     66|			zend_string *type_str = zend_type_to_string(fptr->common.arg_info[-1].type);
  958|     66|			smart_str_append_printf(str, "%s ", ZSTR_VAL(type_str));
  ------------------
  |  |   67|     66|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  959|     66|			zend_string_release(type_str);
  960|     66|		}
  961|     66|		smart_str_appends(str, "]\n");
  962|     66|	}
  963|     80|	smart_str_append_printf(str, "%s}\n", indent);
  964|     80|}
php_reflection.c:_function_closure_string:
  831|      2|{
  832|      2|	uint32_t i, count;
  833|      2|	const zend_string *key;
  834|      2|	const HashTable *static_variables;
  835|       |
  836|      2|	if (fptr->type != ZEND_USER_FUNCTION || !fptr->op_array.static_variables) {
  ------------------
  |  Branch (836:6): [True: 0, False: 2]
  |  Branch (836:42): [True: 2, False: 0]
  ------------------
  837|      2|		return;
  838|      2|	}
  839|       |
  840|      0|	static_variables = ZEND_MAP_PTR_GET(fptr->op_array.static_variables_ptr);
  ------------------
  |  |   54|      0|	((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
  |  |  ------------------
  |  |  |  |   52|      0|	(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
  |  |  |  |  ------------------
  |  |  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (52:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|		ZEND_MAP_PTR_GET_IMM(ptr) : \
  |  |  ------------------
  |  |  |  |   58|      0|	(*ZEND_MAP_PTR_OFFSET2PTR((intptr_t)ZEND_MAP_PTR(ptr)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|		((void*)(ZEND_MAP_PTR(ptr)))))
  |  |  ------------------
  |  |  |  |   31|      0|	ptr ## __ptr
  |  |  ------------------
  ------------------
  841|      0|	count = zend_hash_num_elements(static_variables);
  842|       |
  843|      0|	if (!count) {
  ------------------
  |  Branch (843:6): [True: 0, False: 0]
  ------------------
  844|      0|		return;
  845|      0|	}
  846|       |
  847|      0|	smart_str_appendc(str, '\n');
  848|      0|	smart_str_append_printf(str, "%s- Bound Variables [%u] {\n", indent, count);
  849|      0|	i = 0;
  850|      0|	ZEND_HASH_MAP_FOREACH_STR_KEY(static_variables, key) {
  ------------------
  |  | 1361|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|      0|	_key = _p->key;
  ------------------
  |  Branch (850:2): [True: 0, False: 0]
  |  Branch (850:2): [True: 0, False: 0]
  ------------------
  851|      0|		smart_str_append_printf(str, "%s    Variable #%d [ $%s ]\n", indent, i++, ZSTR_VAL(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  852|      0|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  853|      0|	smart_str_append_printf(str, "%s}\n", indent);
  854|      0|}
php_reflection.c:_function_parameter_string:
  805|     80|{
  806|     80|	struct _zend_arg_info *arg_info = fptr->common.arg_info;
  807|     80|	uint32_t i, num_args, num_required = fptr->common.required_num_args;
  808|       |
  809|     80|	if (!arg_info) {
  ------------------
  |  Branch (809:6): [True: 4, False: 76]
  ------------------
  810|      4|		return;
  811|      4|	}
  812|       |
  813|     76|	num_args = fptr->common.num_args;
  814|     76|	if (fptr->common.fn_flags & ZEND_ACC_VARIADIC) {
  ------------------
  |  |  358|     76|#define ZEND_ACC_VARIADIC                (1 << 14) /*     |  X  |     |     */
  ------------------
  |  Branch (814:6): [True: 3, False: 73]
  ------------------
  815|      3|		num_args++;
  816|      3|	}
  817|     76|	smart_str_appendc(str, '\n');
  818|     76|	smart_str_append_printf(str, "%s- Parameters [%d] {\n", indent, num_args);
  819|    140|	for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (819:14): [True: 64, False: 76]
  ------------------
  820|     64|		smart_str_append_printf(str, "%s  ", indent);
  821|     64|		_parameter_string(str, fptr, arg_info, i, i < num_required, indent);
  822|     64|		smart_str_appendc(str, '\n');
  823|     64|		arg_info++;
  824|     64|	}
  825|     76|	smart_str_append_printf(str, "%s}\n", indent);
  826|     76|}
php_reflection.c:reflect_attributes:
 1317|     16|{
 1318|     16|	zend_string *name = NULL;
 1319|     16|	zend_long flags = 0;
 1320|     16|	zend_class_entry *base = NULL;
 1321|       |
 1322|     16|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|S!l", &name, &flags) == FAILURE) {
  ------------------
  |  |  529|     16|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     16|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     16|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1322:6): [True: 0, False: 16]
  ------------------
 1323|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1323:3): [True: 0, False: 0]
  |  Branch (1323:3): [True: 0, False: 0]
  ------------------
 1324|      0|	}
 1325|       |
 1326|     16|	if (flags & ~REFLECTION_ATTRIBUTE_IS_INSTANCEOF) {
  ------------------
  |  |   53|     16|#define REFLECTION_ATTRIBUTE_IS_INSTANCEOF (1 << 1)
  ------------------
  |  Branch (1326:6): [True: 0, False: 16]
  ------------------
 1327|      0|		zend_argument_value_error(2, "must be a valid attribute filter flag");
 1328|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1328:3): [True: 0, False: 0]
  |  Branch (1328:3): [True: 0, False: 0]
  ------------------
 1329|      0|	}
 1330|       |
 1331|     16|	if (name && (flags & REFLECTION_ATTRIBUTE_IS_INSTANCEOF)) {
  ------------------
  |  |   53|      0|#define REFLECTION_ATTRIBUTE_IS_INSTANCEOF (1 << 1)
  ------------------
  |  Branch (1331:6): [True: 0, False: 16]
  |  Branch (1331:14): [True: 0, False: 0]
  ------------------
 1332|      0|		if (NULL == (base = zend_lookup_class(name))) {
  ------------------
  |  Branch (1332:7): [True: 0, False: 0]
  ------------------
 1333|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1333:8): [True: 0, False: 0]
  ------------------
 1334|      0|				zend_throw_error(NULL, "Class \"%s\" not found", ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1335|      0|			}
 1336|       |
 1337|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1337:4): [True: 0, False: 0]
  |  Branch (1337:4): [True: 0, False: 0]
  ------------------
 1338|      0|		}
 1339|       |
 1340|      0|		name = NULL;
 1341|      0|	}
 1342|       |
 1343|     16|	if (!attributes) {
  ------------------
  |  Branch (1343:6): [True: 0, False: 16]
  ------------------
 1344|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1345|      0|	}
 1346|       |
 1347|     16|	array_init(return_value);
 1348|       |
 1349|     16|	if (FAILURE == read_attributes(return_value, attributes, scope, offset, target, name, base, filename)) {
  ------------------
  |  Branch (1349:6): [True: 0, False: 16]
  ------------------
 1350|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1350:3): [True: 0, False: 0]
  |  Branch (1350:3): [True: 0, False: 0]
  ------------------
 1351|      0|	}
 1352|     16|}
php_reflection.c:read_attributes:
 1263|     16|{
 1264|     16|	ZEND_ASSERT(attributes != NULL);
  ------------------
  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1264:2): [True: 0, False: 16]
  |  Branch (1264:2): [True: 16, False: 0]
  ------------------
 1265|       |
 1266|     16|	zend_attribute *attr;
 1267|     16|	zval tmp;
 1268|       |
 1269|     16|	if (name) {
  ------------------
  |  Branch (1269:6): [True: 0, False: 16]
  ------------------
 1270|       |		// Name based filtering using lowercased key.
 1271|      0|		zend_string *filter = zend_string_tolower(name);
 1272|       |
 1273|      0|		ZEND_HASH_PACKED_FOREACH_PTR(attributes, attr) {
  ------------------
  |  | 1502|      0|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      0|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      0|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      0|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      0|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      0|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      0|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|      0|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|      0|			(void) _idx; \
  |  |  |  |  |  | 1478|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1503|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1273:3): [True: 0, False: 0]
  |  Branch (1273:3): [True: 0, False: 0]
  ------------------
 1274|      0|			if (attr->offset == offset && zend_string_equals(attr->lcname, filter)) {
  ------------------
  |  Branch (1274:8): [True: 0, False: 0]
  |  Branch (1274:34): [True: 0, False: 0]
  ------------------
 1275|      0|				reflection_attribute_factory(&tmp, attributes, attr, scope, target, filename);
 1276|      0|				add_next_index_zval(ret, &tmp);
 1277|      0|			}
 1278|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1279|       |
 1280|      0|		zend_string_release(filter);
 1281|      0|		return SUCCESS;
 1282|      0|	}
 1283|       |
 1284|     74|	ZEND_HASH_PACKED_FOREACH_PTR(attributes, attr) {
  ------------------
  |  | 1502|     21|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|     16|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|     16|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|     16|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|     16|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|     16|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|     16|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|     16|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     16|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|     37|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 21, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|     21|			(void) _idx; \
  |  |  |  |  |  | 1478|     21|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     21|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 21]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1503|     21|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|     16|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     16|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1284:2): [True: 0, False: 16]
  |  Branch (1284:2): [True: 16, False: 0]
  ------------------
 1285|     74|		if (attr->offset != offset) {
  ------------------
  |  Branch (1285:7): [True: 0, False: 21]
  ------------------
 1286|      0|			continue;
 1287|      0|		}
 1288|       |
 1289|     21|		if (base) {
  ------------------
  |  Branch (1289:7): [True: 0, False: 21]
  ------------------
 1290|       |			// Base type filtering.
 1291|      0|			zend_class_entry *ce = zend_lookup_class_ex(attr->name, attr->lcname, 0);
 1292|       |
 1293|      0|			if (ce == NULL) {
  ------------------
  |  Branch (1293:8): [True: 0, False: 0]
  ------------------
 1294|       |				// Bailout on error, otherwise ignore unavailable class.
 1295|      0|				if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1296|      0|					return FAILURE;
 1297|      0|				}
 1298|       |
 1299|      0|				continue;
 1300|      0|			}
 1301|       |
 1302|      0|			if (!instanceof_function(ce, base)) {
  ------------------
  |  Branch (1302:8): [True: 0, False: 0]
  ------------------
 1303|      0|				continue;
 1304|      0|			}
 1305|      0|		}
 1306|       |
 1307|     21|		reflection_attribute_factory(&tmp, attributes, attr, scope, target, filename);
 1308|     21|		add_next_index_zval(ret, &tmp);
 1309|     21|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     21|		} \
  |  | 1102|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
 1310|       |
 1311|     16|	return SUCCESS;
 1312|     16|}
php_reflection.c:reflection_attribute_factory:
 1243|     21|{
 1244|     21|	reflection_object *intern;
 1245|     21|	attribute_reference *reference;
 1246|       |
 1247|     21|	object_init_ex(object, reflection_attribute_ptr);
 1248|     21|	intern  = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     21|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     21|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     21|	_Generic( \
  |  |  |  |  |  |  408|     21|		(ptr), \
  |  |  |  |  |  |  409|     21|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     21|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     21|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1249|     21|	reference = (attribute_reference*) emalloc(sizeof(attribute_reference));
  ------------------
  |  |  150|     21|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     21|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     21|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     21|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     21|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1250|     21|	reference->attributes = attributes;
 1251|     21|	reference->data = data;
 1252|     21|	reference->scope = scope;
 1253|     21|	reference->filename = filename ? zend_string_copy(filename) : NULL;
  ------------------
  |  Branch (1253:24): [True: 20, False: 1]
  ------------------
 1254|     21|	reference->target = target;
 1255|     21|	intern->ptr = reference;
 1256|     21|	intern->ref_type = REF_TYPE_ATTRIBUTE;
 1257|     21|	ZVAL_STR_COPY(reflection_prop_name(object), data->name);
  ------------------
  |  | 1112|     21|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     21|		zval *__z = (z);								\
  |  | 1114|     21|		zend_string *__s = (s);							\
  |  | 1115|     21|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     21|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     21|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     21|		/* interned strings support */					\
  |  | 1117|     21|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1, False: 20]
  |  |  ------------------
  |  | 1118|      1|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     20|		} else {										\
  |  | 1120|     20|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     20|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     20|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     20|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     20|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     20|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     20|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     20|		}												\
  |  | 1123|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
 1258|     21|}
php_reflection.c:reflection_parameter_factory:
 1431|      4|{
 1432|      4|	reflection_object *intern;
 1433|      4|	parameter_reference *reference;
 1434|      4|	zval *prop_name;
 1435|       |
 1436|      4|	object_init_ex(object, reflection_parameter_ptr);
 1437|      4|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      4|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      4|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1438|      4|	reference = (parameter_reference*) emalloc(sizeof(parameter_reference));
  ------------------
  |  |  150|      4|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1439|      4|	reference->arg_info = arg_info;
 1440|      4|	reference->offset = offset;
 1441|      4|	reference->required = required;
 1442|      4|	reference->fptr = fptr;
 1443|      4|	intern->ptr = reference;
 1444|      4|	intern->ref_type = REF_TYPE_PARAMETER;
 1445|      4|	intern->ce = fptr->common.scope;
 1446|      4|	if (closure_object) {
  ------------------
  |  Branch (1446:6): [True: 2, False: 2]
  ------------------
 1447|      2|		ZVAL_OBJ_COPY(&intern->obj, Z_OBJ_P(closure_object));
  ------------------
  |  | 1146|      2|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      2|		zval *__z = (z);						\
  |  | 1148|      2|		zend_object *__o = (o);					\
  |  | 1149|      2|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      2|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1448|      2|	}
 1449|       |
 1450|      4|	prop_name = reflection_prop_name(object);
 1451|      4|	ZVAL_STR_COPY(prop_name, arg_info->name);
  ------------------
  |  | 1112|      4|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      4|		zval *__z = (z);								\
  |  | 1114|      4|		zend_string *__s = (s);							\
  |  | 1115|      4|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      4|		/* interned strings support */					\
  |  | 1117|      4|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 4, False: 0]
  |  |  ------------------
  |  | 1118|      4|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1452|      4|}
php_reflection.c:_copy_function:
  194|      4|{
  195|      4|	if (fptr
  ------------------
  |  Branch (195:6): [True: 4, False: 0]
  ------------------
  196|      4|		&& (fptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE))
  ------------------
  |  |  372|      4|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (196:6): [True: 2, False: 2]
  ------------------
  197|      2|	{
  198|      2|		zend_function *copy_fptr;
  199|      2|		copy_fptr = emalloc(sizeof(zend_function));
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|      2|		memcpy(copy_fptr, fptr, sizeof(zend_function));
  201|      2|		copy_fptr->internal_function.function_name = zend_string_copy(fptr->internal_function.function_name);
  202|      2|		return copy_fptr;
  203|      2|	} else {
  204|       |		/* no copy needed */
  205|      2|		return fptr;
  206|      2|	}
  207|      4|}
php_reflection.c:reflection_extension_factory:
 1418|      1|{
 1419|      1|	size_t name_len = strlen(name_str);
 1420|      1|	struct _zend_module_entry *module = zend_hash_str_find_ptr_lc(&module_registry, name_str, name_len);
 1421|      1|	if (!module) {
  ------------------
  |  Branch (1421:6): [True: 0, False: 1]
  ------------------
 1422|      0|		return;
 1423|      0|	}
 1424|       |
 1425|      1|	reflection_extension_factory_ex(object, module);
 1426|      1|}
php_reflection.c:reflection_extension_factory_ex:
 1406|      1|{
 1407|      1|	object_init_ex(object, reflection_extension_ptr);
 1408|      1|	reflection_object *intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1409|      1|	intern->ptr = module;
 1410|      1|	intern->ref_type = REF_TYPE_OTHER;
 1411|      1|	intern->ce = NULL;
 1412|      1|	ZVAL_STRING(reflection_prop_name(object), module->name);
  ------------------
  |  |  967|      1|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      1|		const char *_s = (s);					\
  |  |  969|      1|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      1|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      1|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1413|      1|}
php_reflection.c:reflection_function_factory:
 1538|  1.02k|{
 1539|  1.02k|	reflection_object *intern;
 1540|  1.02k|	object_init_ex(object, reflection_function_ptr);
 1541|  1.02k|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|  1.02k|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|  1.02k|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|  1.02k|	_Generic( \
  |  |  |  |  |  |  408|  1.02k|		(ptr), \
  |  |  |  |  |  |  409|  1.02k|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|  1.02k|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|  1.02k|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1542|  1.02k|	intern->ptr = function;
 1543|  1.02k|	intern->ref_type = REF_TYPE_FUNCTION;
 1544|  1.02k|	intern->ce = NULL;
 1545|  1.02k|	if (closure_object) {
  ------------------
  |  Branch (1545:6): [True: 0, False: 1.02k]
  ------------------
 1546|      0|		ZVAL_OBJ_COPY(&intern->obj, Z_OBJ_P(closure_object));
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1547|      0|	}
 1548|  1.02k|	ZVAL_STR_COPY(reflection_prop_name(object), function->common.function_name);
  ------------------
  |  | 1112|  1.02k|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|  1.02k|		zval *__z = (z);								\
  |  | 1114|  1.02k|		zend_string *__s = (s);							\
  |  | 1115|  1.02k|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|  1.02k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|  1.02k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|  1.02k|		/* interned strings support */					\
  |  | 1117|  1.02k|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 1.02k, False: 0]
  |  |  ------------------
  |  | 1118|  1.02k|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|  1.02k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  1.02k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|  1.02k|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  1.02k|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|  1.02k|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|  1.02k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 1.02k]
  |  |  ------------------
  ------------------
 1549|  1.02k|}
php_reflection.c:reflection_method_factory:
 1554|     22|{
 1555|     22|	reflection_object *intern;
 1556|       |
 1557|     22|	object_init_ex(object, reflection_method_ptr);
 1558|     22|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     22|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     22|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     22|	_Generic( \
  |  |  |  |  |  |  408|     22|		(ptr), \
  |  |  |  |  |  |  409|     22|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     22|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     22|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1559|     22|	intern->ptr = method;
 1560|     22|	intern->ref_type = REF_TYPE_FUNCTION;
 1561|     22|	intern->ce = ce;
 1562|     22|	if (closure_object) {
  ------------------
  |  Branch (1562:6): [True: 0, False: 22]
  ------------------
 1563|      0|		ZVAL_OBJ_COPY(&intern->obj, Z_OBJ_P(closure_object));
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1564|      0|	}
 1565|       |
 1566|     22|	ZVAL_STR_COPY(reflection_prop_name(object), method->common.function_name);
  ------------------
  |  | 1112|     22|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     22|		zval *__z = (z);								\
  |  | 1114|     22|		zend_string *__s = (s);							\
  |  | 1115|     22|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     22|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     22|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     22|		/* interned strings support */					\
  |  | 1117|     22|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 21, False: 1]
  |  |  ------------------
  |  | 1118|     21|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     21|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     21|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     21|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1567|     22|	ZVAL_STR_COPY(reflection_prop_class(object), method->common.scope->name);
  ------------------
  |  | 1112|     22|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     22|		zval *__z = (z);								\
  |  | 1114|     22|		zend_string *__s = (s);							\
  |  | 1115|     22|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     22|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     22|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     22|		/* interned strings support */					\
  |  | 1117|     22|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 20, False: 2]
  |  |  ------------------
  |  | 1118|     20|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     20|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     20|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     20|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|     22|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 22]
  |  |  ------------------
  ------------------
 1568|     22|}
php_reflection.c:is_closure_invoke:
  188|     71|static inline bool is_closure_invoke(const zend_class_entry *ce, const zend_string *lcname) {
  189|     71|	return ce == zend_ce_closure
  ------------------
  |  Branch (189:9): [True: 0, False: 71]
  ------------------
  190|      0|		&& zend_string_equals(lcname, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE));
  ------------------
  |  Branch (190:6): [True: 0, False: 0]
  ------------------
  191|     71|}
php_reflection.c:reflection_free_parameter_reference:
  228|      4|{
  229|      4|	_free_function(reference->fptr);
  230|       |	efree(reference);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|      4|}
php_reflection.c:_parameter_string:
  760|     64|{
  761|     64|	smart_str_append_printf(str, "Parameter #%d [ ", offset);
  762|     64|	if (!required) {
  ------------------
  |  Branch (762:6): [True: 35, False: 29]
  ------------------
  763|     35|		smart_str_appends(str, "<optional> ");
  764|     35|	} else {
  765|     29|		smart_str_appends(str, "<required> ");
  766|     29|	}
  767|     64|	if (ZEND_TYPE_IS_SET(arg_info->type)) {
  ------------------
  |  |  152|     64|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     64|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 62, False: 2]
  |  |  ------------------
  ------------------
  768|     62|		zend_string *type_str = zend_type_to_string(arg_info->type);
  769|     62|		smart_str_append(str, type_str);
  770|     62|		smart_str_appendc(str, ' ');
  771|     62|		zend_string_release(type_str);
  772|     62|	}
  773|     64|	if (ZEND_ARG_SEND_MODE(arg_info)) {
  ------------------
  |  | 1130|     64|	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  |  261|     64|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) >> _ZEND_SEND_MODE_SHIFT) & 3)
  |  |  ------------------
  |  |  |  | 1125|     64|#define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     64|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1130:2): [True: 3, False: 61]
  |  |  ------------------
  ------------------
  774|      3|		smart_str_appendc(str, '&');
  775|      3|	}
  776|     64|	if (ZEND_ARG_IS_VARIADIC(arg_info)) {
  ------------------
  |  | 1132|     64|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|     64|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1126|     64|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     64|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1132:2): [True: 3, False: 61]
  |  |  ------------------
  ------------------
  777|      3|		smart_str_appends(str, "...");
  778|      3|	}
  779|     64|	smart_str_append_printf(str, "$%s", ZSTR_VAL(arg_info->name));
  ------------------
  |  |   67|     64|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  780|       |
  781|     64|	if (!required && !ZEND_ARG_IS_VARIADIC(arg_info)) {
  ------------------
  |  | 1132|     35|	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  |  261|     35|	((t).type_mask)
  |  |  ------------------
  |  |               	((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_VARIADIC_BIT) != 0)
  |  |  ------------------
  |  |  |  | 1126|     35|#define _ZEND_IS_VARIADIC_BIT (1 << (_ZEND_TYPE_EXTRA_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|     35|#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT 25
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (781:6): [True: 35, False: 29]
  |  Branch (781:19): [True: 32, False: 3]
  ------------------
  782|     32|		if (fptr->type == ZEND_INTERNAL_FUNCTION) {
  ------------------
  |  Branch (782:7): [True: 12, False: 20]
  ------------------
  783|     12|			smart_str_appends(str, " = ");
  784|       |			/* TODO: We don't have a way to fetch the default value for an internal function
  785|       |			 * with userland arg info. */
  786|     12|			if (arg_info->default_value) {
  ------------------
  |  Branch (786:8): [True: 11, False: 1]
  ------------------
  787|     11|				smart_str_append(str, arg_info->default_value);
  788|     11|			} else {
  789|      1|				smart_str_appends(str, "<default>");
  790|      1|			}
  791|     20|		} else {
  792|     20|			zval *default_value = get_default_from_recv((zend_op_array*)fptr, offset);
  793|     20|			if (default_value) {
  ------------------
  |  Branch (793:8): [True: 20, False: 0]
  ------------------
  794|     20|				smart_str_appends(str, " = ");
  795|     20|				format_default_value(str, default_value);
  796|     20|			}
  797|     20|		}
  798|     32|	}
  799|     64|	smart_str_appends(str, " ]");
  800|     64|}
php_reflection.c:reflection_type_factory:
 1498|      3|{
 1499|      3|	reflection_object *intern;
 1500|      3|	type_reference *reference;
 1501|      3|	reflection_type_kind type_kind = get_type_kind(type);
 1502|      3|	bool is_mixed = ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY;
  ------------------
  |  |  264|      3|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|      3|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	bool is_mixed = ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY;
  ------------------
  |  |   34|      3|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      3|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      3|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      3|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      3|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      3|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      3|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      3|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      3|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      3|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      3|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      3|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      3|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1503|      3|	bool is_only_null = (ZEND_TYPE_PURE_MASK(type) == MAY_BE_NULL && !ZEND_TYPE_IS_COMPLEX(type));
  ------------------
  |  |  264|      3|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|      3|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	bool is_only_null = (ZEND_TYPE_PURE_MASK(type) == MAY_BE_NULL && !ZEND_TYPE_IS_COMPLEX(type));
  ------------------
  |  |   24|      6|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  ------------------
              	bool is_only_null = (ZEND_TYPE_PURE_MASK(type) == MAY_BE_NULL && !ZEND_TYPE_IS_COMPLEX(type));
  ------------------
  |  |  157|      0|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|      0|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1503:23): [True: 0, False: 3]
  |  Branch (1503:67): [True: 0, False: 0]
  ------------------
 1504|       |
 1505|      3|	switch (type_kind) {
 1506|      0|		case INTERSECTION_TYPE:
  ------------------
  |  Branch (1506:3): [True: 0, False: 3]
  ------------------
 1507|      0|			object_init_ex(object, reflection_intersection_type_ptr);
 1508|      0|			break;
 1509|      0|		case UNION_TYPE:
  ------------------
  |  Branch (1509:3): [True: 0, False: 3]
  ------------------
 1510|      0|			object_init_ex(object, reflection_union_type_ptr);
 1511|      0|			break;
 1512|      3|		case NAMED_TYPE:
  ------------------
  |  Branch (1512:3): [True: 3, False: 0]
  ------------------
 1513|      3|			object_init_ex(object, reflection_named_type_ptr);
 1514|      3|			break;
 1515|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1515:3): [True: 0, False: 3]
  |  Branch (1515:12): [Folded, False: 0]
  |  Branch (1515:12): [Folded, False: 0]
  ------------------
 1516|      3|	}
 1517|       |
 1518|      3|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1519|      3|	reference = (type_reference*) emalloc(sizeof(type_reference));
  ------------------
  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1520|      3|	reference->type = type;
 1521|      3|	reference->legacy_behavior = legacy_behavior && type_kind == NAMED_TYPE && !is_mixed && !is_only_null;
  ------------------
  |  Branch (1521:31): [True: 3, False: 0]
  |  Branch (1521:50): [True: 3, False: 0]
  |  Branch (1521:77): [True: 3, False: 0]
  |  Branch (1521:90): [True: 3, False: 0]
  ------------------
 1522|      3|	intern->ptr = reference;
 1523|      3|	intern->ref_type = REF_TYPE_TYPE;
 1524|       |
 1525|       |	/* Property types may be resolved during the lifetime of the ReflectionType.
 1526|       |	 * If we reference a string, make sure it doesn't get released. However, only
 1527|       |	 * do this for the top-level type, as resolutions inside type lists will be
 1528|       |	 * fully visible to us (we'd have to do a fully copy of the type if we wanted
 1529|       |	 * to prevent that). */
 1530|      3|	if (ZEND_TYPE_HAS_NAME(type)) {
  ------------------
  |  |  160|      3|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|      3|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 1531|      1|		zend_string_addref(ZEND_TYPE_NAME(type));
  ------------------
  |  |  184|      1|	((zend_string *) (t).ptr)
  ------------------
 1532|      1|	}
 1533|      3|}
php_reflection.c:get_type_kind:
 1465|      3|static reflection_type_kind get_type_kind(zend_type type) {
 1466|      3|	uint32_t type_mask_without_null = ZEND_TYPE_PURE_MASK_WITHOUT_NULL(type);
  ------------------
  |  |  270|      3|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK & ~_ZEND_TYPE_NULLABLE_BIT)
  |  |  ------------------
  |  |  |  |  147|      3|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  |  |               	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK & ~_ZEND_TYPE_NULLABLE_BIT)
  |  |  ------------------
  |  |  |  |  149|      3|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  ------------------
  ------------------
 1467|       |
 1468|      3|	if (ZEND_TYPE_HAS_LIST(type)) {
  ------------------
  |  |  166|      3|	((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
  |  |  ------------------
  |  |  |  |  136|      3|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  ------------------
  |  |  |  Branch (166:2): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1469|      0|		if (ZEND_TYPE_IS_INTERSECTION(type)) {
  ------------------
  |  |  172|      0|	((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)
  |  |  ------------------
  |  |  |  |  143|      0|#define _ZEND_TYPE_INTERSECTION_BIT (1u << 19)
  |  |  ------------------
  |  |  |  Branch (172:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1470|      0|			return INTERSECTION_TYPE;
 1471|      0|		}
 1472|      0|		ZEND_ASSERT(ZEND_TYPE_IS_UNION(type));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1472:3): [True: 0, False: 0]
  |  Branch (1472:3): [True: 0, False: 0]
  ------------------
 1473|      0|		return UNION_TYPE;
 1474|      0|	}
 1475|       |
 1476|      3|	if (ZEND_TYPE_IS_COMPLEX(type)) {
  ------------------
  |  |  157|      3|	((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
  |  |  ------------------
  |  |  |  |  137|      3|#define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      3|#define _ZEND_TYPE_LIST_BIT (1u << 22)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      3|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  |  |  ------------------
  |  |  |  |               #define _ZEND_TYPE_KIND_MASK (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      3|#define _ZEND_TYPE_LITERAL_NAME_BIT (1u << 23)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (157:2): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 1477|       |		/* BC support for 'iterable' type */
 1478|      1|		if (UNEXPECTED(ZEND_TYPE_IS_ITERABLE_FALLBACK(type))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1479|      0|			return NAMED_TYPE;
 1480|      0|		}
 1481|      1|		if (type_mask_without_null != 0) {
  ------------------
  |  Branch (1481:7): [True: 0, False: 1]
  ------------------
 1482|      0|			return UNION_TYPE;
 1483|      0|		}
 1484|      1|		return NAMED_TYPE;
 1485|      1|	}
 1486|      2|	if (type_mask_without_null == MAY_BE_BOOL || ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY) {
  ------------------
  |  |   27|      4|#define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   25|      2|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_BOOL                 (MAY_BE_FALSE|MAY_BE_TRUE)
  |  |  ------------------
  |  |  |  |   26|      2|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (type_mask_without_null == MAY_BE_BOOL || ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY) {
  ------------------
  |  |  264|      2|	((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
  |  |  ------------------
  |  |  |  |  147|      2|#define _ZEND_TYPE_MAY_BE_MASK ((1u << 18) - 1)
  |  |  ------------------
  ------------------
              	if (type_mask_without_null == MAY_BE_BOOL || ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY) {
  ------------------
  |  |   34|      2|#define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   24|      2|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   25|      2|#define MAY_BE_FALSE	            (1 << IS_FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   26|      2|#define MAY_BE_TRUE		            (1 << IS_TRUE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   28|      2|#define MAY_BE_LONG		            (1 << IS_LONG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   29|      2|#define MAY_BE_DOUBLE	            (1 << IS_DOUBLE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      2|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   30|      2|#define MAY_BE_STRING	            (1 << IS_STRING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   31|      2|#define MAY_BE_ARRAY	            (1 << IS_ARRAY)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   32|      2|#define MAY_BE_OBJECT	            (1 << IS_OBJECT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAY_BE_ANY                  (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)
  |  |  ------------------
  |  |  |  |   33|      2|#define MAY_BE_RESOURCE	            (1 << IS_RESOURCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      2|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1486:6): [True: 0, False: 2]
  |  Branch (1486:47): [True: 0, False: 2]
  ------------------
 1487|      0|		return NAMED_TYPE;
 1488|      0|	}
 1489|       |	/* Check that only one bit is set. */
 1490|      2|	if ((type_mask_without_null & (type_mask_without_null - 1)) != 0) {
  ------------------
  |  Branch (1490:6): [True: 0, False: 2]
  ------------------
 1491|      0|		return UNION_TYPE;
 1492|      0|	}
 1493|      2|	return NAMED_TYPE;
 1494|      2|}
php_reflection.c:get_default_from_recv:
  702|     20|static zval *get_default_from_recv(zend_op_array *op_array, uint32_t offset) {
  703|     20|	zend_op *recv = get_recv_op(op_array, offset);
  704|     20|	if (!recv || recv->opcode != ZEND_RECV_INIT) {
  ------------------
  |  |  187|     20|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (704:6): [True: 0, False: 20]
  |  Branch (704:15): [True: 0, False: 20]
  ------------------
  705|      0|		return NULL;
  706|      0|	}
  707|       |
  708|     20|	return RT_CONSTANT(recv, recv->op2);
  ------------------
  |  |  841|     20|	((zval*)(((char*)(opline)) + (int32_t)(node).constant))
  ------------------
  709|     20|}
php_reflection.c:get_recv_op:
  685|     20|{
  686|     20|	zend_op *op = op_array->opcodes;
  687|     20|	const zend_op *end = op + op_array->last;
  688|       |
  689|     20|	++offset;
  690|     41|	while (op < end) {
  ------------------
  |  Branch (690:9): [True: 41, False: 0]
  ------------------
  691|     41|		if ((op->opcode == ZEND_RECV || op->opcode == ZEND_RECV_INIT
  ------------------
  |  |  186|     82|#define ZEND_RECV                            63
  ------------------
              		if ((op->opcode == ZEND_RECV || op->opcode == ZEND_RECV_INIT
  ------------------
  |  |  187|     82|#define ZEND_RECV_INIT                       64
  ------------------
  |  Branch (691:8): [True: 0, False: 41]
  |  Branch (691:35): [True: 41, False: 0]
  ------------------
  692|     41|		    || op->opcode == ZEND_RECV_VARIADIC) && op->op1.num == offset)
  ------------------
  |  |  286|      0|#define ZEND_RECV_VARIADIC                  164
  ------------------
  |  Branch (692:10): [True: 0, False: 0]
  |  Branch (692:47): [True: 20, False: 21]
  ------------------
  693|     20|		{
  694|     20|			return op;
  695|     20|		}
  696|     21|		++op;
  697|     21|	}
  698|      0|	ZEND_ASSERT(0 && "Failed to find op");
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (698:2): [Folded, False: 0]
  |  Branch (698:2): [True: 0, False: 0]
  |  Branch (698:2): [Folded, False: 0]
  |  Branch (698:2): [True: 0, False: 0]
  ------------------
  699|      0|	return NULL;
  700|      0|}
php_reflection.c:zend_named_reflection_type_to_string:
 3067|      3|static zend_string *zend_named_reflection_type_to_string(zend_type type) {
 3068|      3|	if (ZEND_TYPE_IS_ITERABLE_FALLBACK(type)) {
  ------------------
  |  |  169|      3|	((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)
  |  |  ------------------
  |  |  |  |  139|      3|#define _ZEND_TYPE_ITERABLE_BIT (1u << 21)
  |  |  ------------------
  |  |  |  Branch (169:2): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 3069|      0|		zend_string *iterable = ZSTR_KNOWN(ZEND_STR_ITERABLE);
 3070|      0|		if (ZEND_TYPE_FULL_MASK(type) & MAY_BE_NULL) {
  ------------------
  |  |  261|      0|	((t).type_mask)
  ------------------
              		if (ZEND_TYPE_FULL_MASK(type) & MAY_BE_NULL) {
  ------------------
  |  |   24|      0|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  ------------------
  |  Branch (3070:7): [True: 0, False: 0]
  ------------------
 3071|      0|			return zend_string_concat2("?", strlen("?"), ZSTR_VAL(iterable), ZSTR_LEN(iterable));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			return zend_string_concat2("?", strlen("?"), ZSTR_VAL(iterable), ZSTR_LEN(iterable));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3072|      0|		}
 3073|      0|		return iterable;
 3074|      0|	}
 3075|      3|	return zend_type_to_string(type);
 3076|      3|}
php_reflection.c:zend_type_to_string_without_null:
 3078|      3|static zend_string *zend_type_to_string_without_null(zend_type type) {
 3079|      3|	ZEND_TYPE_FULL_MASK(type) &= ~MAY_BE_NULL;
  ------------------
  |  |  261|      3|	((t).type_mask)
  ------------------
              	ZEND_TYPE_FULL_MASK(type) &= ~MAY_BE_NULL;
  ------------------
  |  |   24|      3|#define MAY_BE_NULL		            (1 << IS_NULL)
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  ------------------
 3080|      3|	return zend_named_reflection_type_to_string(type);
 3081|      3|}
php_reflection.c:instantiate_reflection_method:
 3225|      8|{
 3226|      8|	zend_object *arg1_obj = NULL;
 3227|      8|	zend_string *arg1_str;
 3228|      8|	zend_string *arg2_str = NULL;
 3229|       |
 3230|      8|	zend_object *orig_obj = NULL;
 3231|      8|	zend_class_entry *ce = NULL;
 3232|      8|	zend_string *class_name = NULL;
 3233|      8|	char *method_name;
 3234|      8|	size_t method_name_len;
 3235|      8|	char *lcname;
 3236|       |
 3237|      8|	zval *object;
 3238|      8|	reflection_object *intern;
 3239|      8|	zend_function *mptr;
 3240|       |
 3241|      8|	if (is_constructor) {
  ------------------
  |  Branch (3241:6): [True: 7, False: 1]
  ------------------
 3242|      7|		if (ZEND_NUM_ARGS() == 1) {
  ------------------
  |  |  529|      7|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3242:7): [True: 0, False: 7]
  ------------------
 3243|      0|			zend_error(E_DEPRECATED, "Calling ReflectionMethod::__construct() with 1 argument is deprecated, "
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 3244|      0|				"use ReflectionMethod::createFromMethodName() instead");
 3245|      0|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3246|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3246:5): [True: 0, False: 0]
  |  Branch (3246:5): [True: 0, False: 0]
  ------------------
 3247|      0|			}
 3248|      0|		}
 3249|       |
 3250|     19|		ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      7|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      7|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      7|		const int _flags = (flags); \
  |  |  |  | 1599|      7|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      7|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      7|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      7|		uint32_t _i = 0; \
  |  |  |  | 1603|      7|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      7|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      7|		char *_error = NULL; \
  |  |  |  | 1606|      7|		bool _dummy = 0; \
  |  |  |  | 1607|      7|		bool _optional = 0; \
  |  |  |  | 1608|      7|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      7|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      7|		((void)_i); \
  |  |  |  | 1610|      7|		((void)_real_arg); \
  |  |  |  | 1611|      7|		((void)_arg); \
  |  |  |  | 1612|      7|		((void)_expected_type); \
  |  |  |  | 1613|      7|		((void)_error); \
  |  |  |  | 1614|      7|		((void)_optional); \
  |  |  |  | 1615|      7|		((void)_dummy); \
  |  |  |  | 1616|      7|		\
  |  |  |  | 1617|      7|		do { \
  |  |  |  | 1618|      7|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      7|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      7|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      7|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3251|     25|			Z_PARAM_OBJ_OR_STR(arg1_obj, arg1_str)
  ------------------
  |  | 1777|      5|	Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1769|      5|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1770|      5|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1771|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1771:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1772|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1773|      0|		break; \
  |  |  |  | 1774|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (3251:4): [True: 5, False: 0]
  |  Branch (3251:4): [True: 0, False: 0]
  |  Branch (3251:4): [True: 5, False: 0]
  |  Branch (3251:4): [True: 0, False: 0]
  |  Branch (3251:4): [True: 5, False: 0]
  |  Branch (3251:4): [True: 0, False: 0]
  |  Branch (3251:4): [True: 0, False: 5]
  |  Branch (3251:4): [True: 5, False: 0]
  |  Branch (3251:4): [True: 0, False: 0]
  |  Branch (3251:4): [True: 0, False: 0]
  ------------------
 3252|     25|			Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      5|	_optional = 1;
  ------------------
 3253|     25|			Z_PARAM_STR_OR_NULL(arg2_str)
  ------------------
  |  | 2105|      5|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      5|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      5|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      5|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3253:4): [True: 5, False: 0]
  |  Branch (3253:4): [True: 0, False: 0]
  |  Branch (3253:4): [True: 0, False: 5]
  |  Branch (3253:4): [True: 5, False: 0]
  |  Branch (3253:4): [True: 5, False: 0]
  |  Branch (3253:4): [True: 0, False: 0]
  |  Branch (3253:4): [True: 5, False: 0]
  |  Branch (3253:4): [True: 0, False: 0]
  |  Branch (3253:4): [True: 0, False: 0]
  |  Branch (3253:4): [True: 0, False: 0]
  ------------------
 3254|      7|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      5|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|      7|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3254:3): [True: 5, False: 0]
  |  Branch (3254:3): [True: 0, False: 0]
  |  Branch (3254:3): [True: 5, False: 0]
  |  Branch (3254:3): [True: 0, False: 0]
  ------------------
 3255|      7|	} else {
 3256|      3|		ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3257|      4|			Z_PARAM_STR(arg1_str)
  ------------------
  |  | 2102|      1|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      1|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3257:4): [True: 1, False: 0]
  |  Branch (3257:4): [True: 0, False: 0]
  |  Branch (3257:4): [True: 1, False: 0]
  |  Branch (3257:4): [True: 0, False: 0]
  |  Branch (3257:4): [True: 1, False: 0]
  |  Branch (3257:4): [True: 0, False: 0]
  |  Branch (3257:4): [True: 0, False: 1]
  |  Branch (3257:4): [True: 1, False: 0]
  |  Branch (3257:4): [True: 0, False: 0]
  |  Branch (3257:4): [True: 0, False: 0]
  ------------------
 3258|      1|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3258:3): [True: 1, False: 0]
  |  Branch (3258:3): [True: 0, False: 0]
  |  Branch (3258:3): [True: 1, False: 0]
  |  Branch (3258:3): [True: 0, False: 0]
  ------------------
 3259|      1|	}
 3260|       |
 3261|      6|	if (arg1_obj) {
  ------------------
  |  Branch (3261:6): [True: 4, False: 2]
  ------------------
 3262|      4|		if (!arg2_str) {
  ------------------
  |  Branch (3262:7): [True: 0, False: 4]
  ------------------
 3263|      0|			zend_argument_value_error(2, "cannot be null when argument #1 ($objectOrMethod) is an object");
 3264|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3264:4): [True: 0, False: 0]
  |  Branch (3264:4): [True: 0, False: 0]
  ------------------
 3265|      0|		}
 3266|       |
 3267|      4|		orig_obj = arg1_obj;
 3268|      4|		ce = arg1_obj->ce;
 3269|      4|		method_name = ZSTR_VAL(arg2_str);
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3270|      4|		method_name_len = ZSTR_LEN(arg2_str);
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3271|      4|	} else if (arg2_str) {
  ------------------
  |  Branch (3271:13): [True: 1, False: 1]
  ------------------
 3272|      1|		class_name = zend_string_copy(arg1_str);
 3273|      1|		method_name = ZSTR_VAL(arg2_str);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3274|      1|		method_name_len = ZSTR_LEN(arg2_str);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3275|      1|	} else {
 3276|      1|		char *tmp;
 3277|      1|		size_t tmp_len;
 3278|      1|		char *name = ZSTR_VAL(arg1_str);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3279|       |
 3280|      1|		if ((tmp = strstr(name, "::")) == NULL) {
  ------------------
  |  Branch (3280:7): [True: 0, False: 1]
  ------------------
 3281|      0|			zend_argument_error(reflection_exception_ptr, 1, "must be a valid method name");
 3282|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3282:4): [True: 0, False: 0]
  |  Branch (3282:4): [True: 0, False: 0]
  ------------------
 3283|      0|		}
 3284|      1|		tmp_len = tmp - name;
 3285|       |
 3286|      1|		class_name = zend_string_init(name, tmp_len, 0);
 3287|      1|		method_name = tmp + 2;
 3288|      1|		method_name_len = ZSTR_LEN(arg1_str) - tmp_len - 2;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3289|      1|	}
 3290|       |
 3291|      6|	if (class_name) {
  ------------------
  |  Branch (3291:6): [True: 2, False: 4]
  ------------------
 3292|      2|		if ((ce = zend_lookup_class(class_name)) == NULL) {
  ------------------
  |  Branch (3292:7): [True: 0, False: 2]
  ------------------
 3293|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (3293:8): [True: 0, False: 0]
  ------------------
 3294|      0|				zend_throw_exception_ex(reflection_exception_ptr, 0, "Class \"%s\" does not exist", ZSTR_VAL(class_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3295|      0|			}
 3296|      0|			zend_string_release(class_name);
 3297|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3297:4): [True: 0, False: 0]
  |  Branch (3297:4): [True: 0, False: 0]
  ------------------
 3298|      0|		}
 3299|       |
 3300|      2|		zend_string_release(class_name);
 3301|      2|	}
 3302|       |
 3303|      6|	if (is_constructor) {
  ------------------
  |  Branch (3303:6): [True: 5, False: 1]
  ------------------
 3304|      5|		object = ZEND_THIS;
  ------------------
  |  |  523|      5|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      5|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 3305|      5|	} else {
 3306|      1|		object_init_ex(return_value, execute_data->This.value.ce ? execute_data->This.value.ce : reflection_method_ptr);
  ------------------
  |  Branch (3306:32): [True: 1, False: 0]
  ------------------
 3307|      1|		object = return_value;
 3308|      1|	}
 3309|      6|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      6|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      6|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      6|	_Generic( \
  |  |  |  |  |  |  408|      6|		(ptr), \
  |  |  |  |  |  |  409|      6|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      6|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      6|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3310|       |
 3311|      6|	lcname = zend_str_tolower_dup(method_name, method_name_len);
 3312|       |
 3313|      6|	if (ce == zend_ce_closure && orig_obj && (method_name_len == sizeof(ZEND_INVOKE_FUNC_NAME)-1)
  ------------------
  |  | 1254|      4|#define ZEND_INVOKE_FUNC_NAME       "__invoke"
  ------------------
  |  Branch (3313:6): [True: 4, False: 2]
  |  Branch (3313:31): [True: 4, False: 0]
  |  Branch (3313:43): [True: 3, False: 1]
  ------------------
 3314|      3|		&& memcmp(lcname, ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0
  ------------------
  |  | 1254|      3|#define ZEND_INVOKE_FUNC_NAME       "__invoke"
  ------------------
              		&& memcmp(lcname, ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0
  ------------------
  |  | 1254|      3|#define ZEND_INVOKE_FUNC_NAME       "__invoke"
  ------------------
  |  Branch (3314:6): [True: 2, False: 1]
  ------------------
 3315|      2|		&& (mptr = zend_get_closure_invoke_method(orig_obj)) != NULL)
  ------------------
  |  Branch (3315:6): [True: 2, False: 0]
  ------------------
 3316|      2|	{
 3317|       |		/* Store the original closure object so we can validate it in invoke/invokeArgs.
 3318|       |		 * Each closure has a unique __invoke signature, so we must reject different closures. */
 3319|      2|		ZVAL_OBJ_COPY(&intern->obj, orig_obj);
  ------------------
  |  | 1146|      2|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      2|		zval *__z = (z);						\
  |  | 1148|      2|		zend_object *__o = (o);					\
  |  | 1149|      2|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      2|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      2|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      2|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      2|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      2|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3320|      4|	} else if ((mptr = zend_hash_str_find_ptr(&ce->function_table, lcname, method_name_len)) == NULL) {
  ------------------
  |  Branch (3320:13): [True: 2, False: 2]
  ------------------
 3321|      2|		efree(lcname);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3322|      2|		zend_throw_exception_ex(reflection_exception_ptr, 0,
 3323|      2|			"Method %s::%s() does not exist", ZSTR_VAL(ce->name), method_name);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3324|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3324:3): [True: 0, False: 2]
  |  Branch (3324:3): [True: 2, False: 0]
  ------------------
 3325|      2|	}
 3326|      4|	efree(lcname);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3327|       |
 3328|      4|	ZVAL_STR_COPY(reflection_prop_name(object), mptr->common.function_name);
  ------------------
  |  | 1112|      4|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      4|		zval *__z = (z);								\
  |  | 1114|      4|		zend_string *__s = (s);							\
  |  | 1115|      4|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      4|		/* interned strings support */					\
  |  | 1117|      4|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 2]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3329|      4|	ZVAL_STR_COPY(reflection_prop_class(object), mptr->common.scope->name);
  ------------------
  |  | 1112|      4|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      4|		zval *__z = (z);								\
  |  | 1114|      4|		zend_string *__s = (s);							\
  |  | 1115|      4|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      4|		/* interned strings support */					\
  |  | 1117|      4|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 2]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3330|      4|	intern->ptr = mptr;
 3331|      4|	intern->ref_type = REF_TYPE_FUNCTION;
 3332|      4|	intern->ce = ce;
 3333|      4|}
php_reflection.c:_function_check_flag:
 1378|      1|{
 1379|      1|	reflection_object *intern;
 1380|      1|	zend_function *mptr;
 1381|       |
 1382|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1383|      1|	GET_REFLECTION_OBJECT_PTR(mptr);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1383:2): [True: 0, False: 0]
  |  Branch (1383:2): [True: 0, False: 0]
  |  Branch (1383:2): [True: 0, False: 0]
  |  Branch (1383:2): [True: 0, False: 0]
  ------------------
 1384|      1|	RETURN_BOOL(mptr->common.fn_flags & mask);
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1385|      1|}
php_reflection.c:reflection_prop_class:
   73|     46|static zend_always_inline zval *reflection_prop_class(zval *object) {
   74|       |	/* $class is always in the second property slot. */
   75|     46|	ZEND_ASSERT(Z_OBJCE_P(object)->default_properties_count >= 2);
  ------------------
  |  |  112|     46|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (75:2): [True: 0, False: 46]
  |  Branch (75:2): [True: 46, False: 0]
  ------------------
   76|     46|	return &Z_OBJ_P(object)->properties_table[1];
  ------------------
  |  | 1000|     46|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     46|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
   77|     46|}
php_reflection.c:_class_const_string:
  625|     14|{
  626|     14|	if (Z_TYPE(c->value) == IS_CONSTANT_AST && zend_update_class_constant(c, name, c->ce) == FAILURE) {
  ------------------
  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(c->value) == IS_CONSTANT_AST && zend_update_class_constant(c, name, c->ce) == FAILURE) {
  ------------------
  |  |  617|     28|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (626:6): [True: 4, False: 10]
  |  Branch (626:45): [True: 4, False: 0]
  ------------------
  627|      4|		return;
  628|      4|	}
  629|       |
  630|     10|	const char *visibility = zend_visibility_string(ZEND_CLASS_CONST_FLAGS(c));
  ------------------
  |  |  498|     10|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     10|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
  631|     10|	const char *final = ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_FINAL ? "final " : "";
  ------------------
  |  |  498|     10|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     10|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	const char *final = ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_FINAL ? "final " : "";
  ------------------
  |  |  230|     10|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (631:22): [True: 0, False: 10]
  ------------------
  632|     10|	zend_string *type_str = ZEND_TYPE_IS_SET(c->type) ? zend_type_to_string(c->type) : NULL;
  ------------------
  |  |  152|     10|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     10|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 7, False: 3]
  |  |  ------------------
  ------------------
  633|     10|	const char *type = type_str ? ZSTR_VAL(type_str) : zend_zval_type_name(&c->value);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (633:21): [True: 7, False: 3]
  ------------------
  634|       |
  635|     10|	if (c->doc_comment) {
  ------------------
  |  Branch (635:6): [True: 0, False: 10]
  ------------------
  636|      0|		smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(c->doc_comment));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  637|      0|	}
  638|     10|	smart_str_append_printf(str, "%sConstant [ %s%s %s %s ] { ",
  639|     10|		indent, final, visibility, type, ZSTR_VAL(name));
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  640|     10|	if (Z_TYPE(c->value) == IS_ARRAY) {
  ------------------
  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(c->value) == IS_ARRAY) {
  ------------------
  |  |  613|     10|#define IS_ARRAY					7
  ------------------
  |  Branch (640:6): [True: 1, False: 9]
  ------------------
  641|      1|		smart_str_appends(str, "Array");
  642|      9|	} else if (Z_TYPE(c->value) == IS_OBJECT) {
  ------------------
  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	} else if (Z_TYPE(c->value) == IS_OBJECT) {
  ------------------
  |  |  614|      9|#define IS_OBJECT					8
  ------------------
  |  Branch (642:13): [True: 0, False: 9]
  ------------------
  643|      0|		smart_str_appends(str, "Object");
  644|      9|	} else {
  645|      9|		zend_string *tmp_value_str;
  646|      9|		zend_string *value_str = zval_get_tmp_string(&c->value, &tmp_value_str);
  647|      9|		smart_str_append(str, value_str);
  648|      9|		zend_tmp_string_release(tmp_value_str);
  649|      9|	}
  650|     10|	smart_str_appends(str, " }\n");
  651|       |
  652|     10|	if (type_str) {
  ------------------
  |  Branch (652:6): [True: 7, False: 3]
  ------------------
  653|      7|		zend_string_release(type_str);
  654|      7|	}
  655|     10|}
php_reflection.c:reflection_class_object_ctor:
 4062|     81|{
 4063|     81|	zval *object;
 4064|     81|	zend_string *arg_class = NULL;
 4065|     81|	zend_object *arg_obj;
 4066|     81|	reflection_object *intern;
 4067|     81|	zend_class_entry *ce;
 4068|       |
 4069|     81|	if (is_object) {
  ------------------
  |  Branch (4069:6): [True: 15, False: 66]
  ------------------
 4070|     43|		ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     15|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     15|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     15|		const int _flags = (flags); \
  |  |  |  | 1599|     15|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     15|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     15|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     15|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     15|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     15|		uint32_t _i = 0; \
  |  |  |  | 1603|     15|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     15|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     15|		char *_error = NULL; \
  |  |  |  | 1606|     15|		bool _dummy = 0; \
  |  |  |  | 1607|     15|		bool _optional = 0; \
  |  |  |  | 1608|     15|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     15|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     15|		((void)_i); \
  |  |  |  | 1610|     15|		((void)_real_arg); \
  |  |  |  | 1611|     15|		((void)_arg); \
  |  |  |  | 1612|     15|		((void)_expected_type); \
  |  |  |  | 1613|     15|		((void)_error); \
  |  |  |  | 1614|     15|		((void)_optional); \
  |  |  |  | 1615|     15|		((void)_dummy); \
  |  |  |  | 1616|     15|		\
  |  |  |  | 1617|     15|		do { \
  |  |  |  | 1618|     15|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     15|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|     15|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     15|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     15|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     13|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4071|     52|			Z_PARAM_OBJ(arg_obj)
  ------------------
  |  | 1964|     13|	Z_PARAM_OBJ_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1956|     13|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     13|	++_i; \
  |  |  |  |  |  | 1654|     13|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     13|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     13|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     13|	_real_arg++; \
  |  |  |  |  |  | 1660|     13|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     13|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     13|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1957|     13|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, NULL, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1958|      0|			_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1958:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1959|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1960|      0|			break; \
  |  |  |  | 1961|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (4071:4): [True: 13, False: 0]
  |  Branch (4071:4): [True: 0, False: 0]
  |  Branch (4071:4): [True: 13, False: 0]
  |  Branch (4071:4): [True: 0, False: 0]
  |  Branch (4071:4): [True: 13, False: 0]
  |  Branch (4071:4): [True: 0, False: 0]
  |  Branch (4071:4): [True: 0, False: 13]
  |  Branch (4071:4): [True: 13, False: 0]
  |  Branch (4071:4): [True: 0, False: 0]
  |  Branch (4071:4): [True: 0, False: 0]
  ------------------
 4072|     15|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     13|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     13|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     13|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  |  | 1641|     15|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4072:3): [True: 13, False: 0]
  |  Branch (4072:3): [True: 0, False: 0]
  |  Branch (4072:3): [True: 13, False: 0]
  |  Branch (4072:3): [True: 0, False: 0]
  ------------------
 4073|     66|	} else {
 4074|    194|		ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     66|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     66|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     66|		const int _flags = (flags); \
  |  |  |  | 1599|     66|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     66|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     66|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     66|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     66|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     66|		uint32_t _i = 0; \
  |  |  |  | 1603|     66|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     66|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     66|		char *_error = NULL; \
  |  |  |  | 1606|     66|		bool _dummy = 0; \
  |  |  |  | 1607|     66|		bool _optional = 0; \
  |  |  |  | 1608|     66|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     66|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     66|		((void)_i); \
  |  |  |  | 1610|     66|		((void)_real_arg); \
  |  |  |  | 1611|     66|		((void)_arg); \
  |  |  |  | 1612|     66|		((void)_expected_type); \
  |  |  |  | 1613|     66|		((void)_error); \
  |  |  |  | 1614|     66|		((void)_optional); \
  |  |  |  | 1615|     66|		((void)_dummy); \
  |  |  |  | 1616|     66|		\
  |  |  |  | 1617|     66|		do { \
  |  |  |  | 1618|     66|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    132|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     66|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      4|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      4|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      4|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      4|				} \
  |  |  |  | 1623|      4|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      4|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      4|				break; \
  |  |  |  | 1625|      4|			} \
  |  |  |  | 1626|     66|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     66|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     66|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     62|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4075|    310|			Z_PARAM_OBJ_OR_STR(arg_obj, arg_class)
  ------------------
  |  | 1777|     62|	Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, 0);
  |  |  ------------------
  |  |  |  | 1769|     62|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     62|	++_i; \
  |  |  |  |  |  | 1654|     62|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     62|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     62|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     62|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     62|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     62|	_real_arg++; \
  |  |  |  |  |  | 1660|     62|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     62|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     62|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1770|     62|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1771|      0|		_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1771:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1772|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1773|      0|		break; \
  |  |  |  | 1774|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (4075:4): [True: 62, False: 0]
  |  Branch (4075:4): [True: 0, False: 0]
  |  Branch (4075:4): [True: 62, False: 0]
  |  Branch (4075:4): [True: 0, False: 0]
  |  Branch (4075:4): [True: 62, False: 0]
  |  Branch (4075:4): [True: 0, False: 0]
  |  Branch (4075:4): [True: 0, False: 62]
  |  Branch (4075:4): [True: 62, False: 0]
  |  Branch (4075:4): [True: 0, False: 0]
  |  Branch (4075:4): [True: 0, False: 0]
  ------------------
 4076|    310|		ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     62|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     62|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     62|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     62|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  |  | 1641|     66|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      4|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      4|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 4, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      4|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      4|			} \
  |  |  |  | 1645|      4|			failure; \
  |  |  |  | 1646|      4|		} \
  |  |  |  | 1647|     66|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4076:3): [True: 62, False: 0]
  |  Branch (4076:3): [True: 0, False: 0]
  |  Branch (4076:3): [True: 62, False: 0]
  |  Branch (4076:3): [True: 0, False: 0]
  ------------------
 4077|     66|	}
 4078|       |
 4079|     75|	object = ZEND_THIS;
  ------------------
  |  |  523|     75|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     75|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 4080|     75|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|     75|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|     75|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     75|	_Generic( \
  |  |  |  |  |  |  408|     75|		(ptr), \
  |  |  |  |  |  |  409|     75|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     75|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     75|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4081|       |
 4082|       |	/* Note: class entry name is interned, no need to destroy them */
 4083|     75|	if (arg_obj) {
  ------------------
  |  Branch (4083:6): [True: 17, False: 58]
  ------------------
 4084|     17|		ZVAL_STR_COPY(reflection_prop_name(object), arg_obj->ce->name);
  ------------------
  |  | 1112|     17|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     17|		zval *__z = (z);								\
  |  | 1114|     17|		zend_string *__s = (s);							\
  |  | 1115|     17|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     17|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     17|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     17|		/* interned strings support */					\
  |  | 1117|     17|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 13, False: 4]
  |  |  ------------------
  |  | 1118|     13|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     13|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     13|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     13|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
 4085|     17|		intern->ptr = arg_obj->ce;
 4086|     17|		if (is_object) {
  ------------------
  |  Branch (4086:7): [True: 13, False: 4]
  ------------------
 4087|     13|			zval_ptr_dtor(&intern->obj);
 4088|     13|			ZVAL_OBJ_COPY(&intern->obj, arg_obj);
  ------------------
  |  | 1146|     13|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|     13|		zval *__z = (z);						\
  |  | 1148|     13|		zend_object *__o = (o);					\
  |  | 1149|     13|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|     13|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|     13|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|     13|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     13|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|     13|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     13|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     13|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     13|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     13|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     13|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     13|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
 4089|     13|		}
 4090|     58|	} else {
 4091|     58|		if ((ce = zend_lookup_class(arg_class)) == NULL) {
  ------------------
  |  Branch (4091:7): [True: 2, False: 56]
  ------------------
 4092|      2|			if (!EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (4092:8): [True: 2, False: 0]
  ------------------
 4093|      2|				zend_throw_exception_ex(reflection_exception_ptr, -1, "Class \"%s\" does not exist", ZSTR_VAL(arg_class));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4094|      2|			}
 4095|      2|			RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4095:4): [True: 0, False: 2]
  |  Branch (4095:4): [True: 2, False: 0]
  ------------------
 4096|      2|		}
 4097|       |
 4098|     56|		ZVAL_STR_COPY(reflection_prop_name(object), ce->name);
  ------------------
  |  | 1112|     56|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     56|		zval *__z = (z);								\
  |  | 1114|     56|		zend_string *__s = (s);							\
  |  | 1115|     56|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     56|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     56|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     56|		/* interned strings support */					\
  |  | 1117|     56|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 21, False: 35]
  |  |  ------------------
  |  | 1118|     21|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     21|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     21|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     35|		} else {										\
  |  | 1120|     35|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|     35|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|     35|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|     35|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     35|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|     35|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     35|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     35|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     35|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|     35|		}												\
  |  | 1123|     56|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 56]
  |  |  ------------------
  ------------------
 4099|     56|		intern->ptr = ce;
 4100|     56|	}
 4101|     73|	intern->ref_type = REF_TYPE_OTHER;
 4102|     73|}
php_reflection.c:add_class_vars:
 4114|      6|{
 4115|      6|	zend_property_info *prop_info;
 4116|      6|	zval *prop, prop_copy;
 4117|      6|	zend_string *key;
 4118|       |
 4119|     28|	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&ce->properties_info, key, prop_info) {
  ------------------
  |  | 1448|      8|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      6|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      6|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      6|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      6|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      6|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      6|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 8, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      8|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      8|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      8|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 8]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|      8|	_key = _p->key; \
  |  | 1450|      8|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      6|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      6|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4119:2): [True: 0, False: 6]
  |  Branch (4119:2): [True: 6, False: 0]
  ------------------
 4120|     28|		if (((prop_info->flags & ZEND_ACC_PRIVATE) &&
  ------------------
  |  |  221|      8|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4120:8): [True: 0, False: 8]
  ------------------
 4121|      0|		     prop_info->ce != ce)) {
  ------------------
  |  Branch (4121:8): [True: 0, False: 0]
  ------------------
 4122|      0|			continue;
 4123|      0|		}
 4124|       |
 4125|     28|		bool is_static = (prop_info->flags & ZEND_ACC_STATIC) != 0;
  ------------------
  |  |  227|      8|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
 4126|      8|		if (statics != is_static) {
  ------------------
  |  Branch (4126:7): [True: 4, False: 4]
  ------------------
 4127|      4|			continue;
 4128|      4|		}
 4129|       |
 4130|      4|		prop = property_get_default(prop_info);
 4131|      4|		if (!prop || Z_ISUNDEF_P(prop)) {
  ------------------
  |  |  967|      4|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      4|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 1, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4131:7): [True: 0, False: 4]
  ------------------
 4132|      1|			continue;
 4133|      1|		}
 4134|       |
 4135|       |		/* copy: enforce read only access */
 4136|      3|		ZVAL_DEREF(prop);
  ------------------
  |  | 1474|      3|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      3|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 4137|      3|		ZVAL_COPY_OR_DUP(&prop_copy, prop);
  ------------------
  |  | 1457|      3|	do {																\
  |  | 1458|      3|		zval *_z1 = (z);												\
  |  | 1459|      3|		const zval *_z2 = (v);											\
  |  | 1460|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      3|	do {												\
  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      3|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      3|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 3, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      3|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      3|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      3|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      3|		}																\
  |  | 1472|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 4138|       |
 4139|       |		/* this is necessary to make it able to work with default array
 4140|       |		* properties, returned to user */
 4141|      3|		if (Z_TYPE(prop_copy) == IS_CONSTANT_AST) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(prop_copy) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      3|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (4141:7): [True: 0, False: 3]
  ------------------
 4142|      0|			if (UNEXPECTED(zval_update_constant_ex(&prop_copy, ce) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4143|      0|				return;
 4144|      0|			}
 4145|      0|		}
 4146|       |
 4147|      3|		zend_hash_update(Z_ARRVAL_P(return_value), key, &prop_copy);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4148|      3|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 4149|      6|}
php_reflection.c:_class_string:
  308|     19|{
  309|     19|	int count, count_static_props = 0, count_static_funcs = 0, count_shadow_props = 0;
  310|     19|	zend_string *sub_indent = strpprintf(0, "%s    ", indent);
  ------------------
  |  |   28|     19|#define strpprintf zend_strpprintf
  ------------------
  311|       |
  312|       |	/* TBD: Repair indenting of doc comment (or is this to be done in the parser?) */
  313|     19|	if (ce->doc_comment) {
  ------------------
  |  Branch (313:6): [True: 0, False: 19]
  ------------------
  314|      0|		smart_str_append_printf(str, "%s%s", indent, ZSTR_VAL(ce->doc_comment));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  315|      0|		smart_str_appendc(str, '\n');
  316|      0|	}
  317|       |
  318|     19|	if (obj && Z_TYPE_P(obj) == IS_OBJECT) {
  ------------------
  |  |  669|     19|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     19|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (obj && Z_TYPE_P(obj) == IS_OBJECT) {
  ------------------
  |  |  614|     19|#define IS_OBJECT					8
  ------------------
  |  Branch (318:6): [True: 19, False: 0]
  |  Branch (318:13): [True: 4, False: 15]
  ------------------
  319|      4|		smart_str_append_printf(str, "%sObject of class [ ", indent);
  320|     15|	} else {
  321|     15|		char *kind = "Class";
  322|     15|		if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|     15|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (322:7): [True: 0, False: 15]
  ------------------
  323|      0|			kind = "Interface";
  324|     15|		} else if (ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     15|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (324:14): [True: 1, False: 14]
  ------------------
  325|      1|			kind = "Trait";
  326|     14|		} else if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|     14|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (326:14): [True: 2, False: 12]
  ------------------
  327|      2|			kind = "Enum";
  328|      2|		}
  329|     15|		smart_str_append_printf(str, "%s%s [ ", indent, kind);
  330|     15|	}
  331|     19|	smart_str_appends(str, (ce->type == ZEND_USER_CLASS) ? "<user" : "<internal");
  ------------------
  |  Branch (331:25): [True: 18, False: 1]
  ------------------
  332|     19|	if (ce->type == ZEND_INTERNAL_CLASS && ce->info.internal.module) {
  ------------------
  |  Branch (332:6): [True: 1, False: 18]
  |  Branch (332:41): [True: 1, False: 0]
  ------------------
  333|      1|		smart_str_append_printf(str, ":%s", ce->info.internal.module->name);
  334|      1|	}
  335|     19|	smart_str_appends(str, "> ");
  336|     19|	if (ce->get_iterator != NULL) {
  ------------------
  |  Branch (336:6): [True: 0, False: 19]
  ------------------
  337|      0|		smart_str_appends(str, "<iterateable> ");
  338|      0|	}
  339|     19|	if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|     19|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (339:6): [True: 0, False: 19]
  ------------------
  340|      0|		smart_str_appends(str, "interface ");
  341|     19|	} else if (ce->ce_flags & ZEND_ACC_TRAIT) {
  ------------------
  |  |  282|     19|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
  |  Branch (341:13): [True: 1, False: 18]
  ------------------
  342|      1|		smart_str_appends(str, "trait ");
  343|     18|	} else if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|     18|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (343:13): [True: 2, False: 16]
  ------------------
  344|      2|		smart_str_appends(str, "enum ");
  345|     16|	} else {
  346|     16|		if (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  291|     16|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
              		if (ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  234|     16|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (346:7): [True: 1, False: 15]
  ------------------
  347|      1|			smart_str_appends(str, "abstract ");
  348|      1|		}
  349|     16|		if (ce->ce_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     16|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (349:7): [True: 0, False: 16]
  ------------------
  350|      0|			smart_str_appends(str, "final ");
  351|      0|		}
  352|     16|		if (ce->ce_flags & ZEND_ACC_READONLY_CLASS) {
  ------------------
  |  |  311|     16|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  |  Branch (352:7): [True: 1, False: 15]
  ------------------
  353|      1|			smart_str_appends(str, "readonly ");
  354|      1|		}
  355|     16|		smart_str_appends(str, "class ");
  356|     16|	}
  357|     19|	smart_str_append(str, ce->name);
  358|     19|	if (ce->parent) {
  ------------------
  |  Branch (358:6): [True: 1, False: 18]
  ------------------
  359|      1|		smart_str_append_printf(str, " extends %s", ZSTR_VAL(ce->parent->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  360|      1|	}
  361|       |
  362|       |	// Show backing type of enums
  363|     19|	if ((ce->ce_flags & ZEND_ACC_ENUM) && (ce->enum_backing_type != IS_UNDEF)) {
  ------------------
  |  |  284|     19|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
              	if ((ce->ce_flags & ZEND_ACC_ENUM) && (ce->enum_backing_type != IS_UNDEF)) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (363:6): [True: 2, False: 17]
  |  Branch (363:40): [True: 0, False: 2]
  ------------------
  364|      0|		smart_str_appends(str,
  365|      0|			ce->enum_backing_type == IS_STRING ? ": string" : ": int"
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (365:4): [True: 0, False: 0]
  ------------------
  366|      0|		);
  367|      0|	}
  368|     19|	if (ce->num_interfaces) {
  ------------------
  |  Branch (368:6): [True: 3, False: 16]
  ------------------
  369|      3|		uint32_t i;
  370|       |
  371|      3|		ZEND_ASSERT(ce->ce_flags & ZEND_ACC_LINKED);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (371:3): [True: 0, False: 3]
  |  Branch (371:3): [True: 3, False: 0]
  ------------------
  372|      3|		if (ce->ce_flags & ZEND_ACC_INTERFACE) {
  ------------------
  |  |  281|      3|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (372:7): [True: 0, False: 3]
  ------------------
  373|      0|			smart_str_append_printf(str, " extends %s", ZSTR_VAL(ce->interfaces[0]->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  374|      3|		} else {
  375|      3|			smart_str_append_printf(str, " implements %s", ZSTR_VAL(ce->interfaces[0]->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  376|      3|		}
  377|      4|		for (i = 1; i < ce->num_interfaces; ++i) {
  ------------------
  |  Branch (377:15): [True: 1, False: 3]
  ------------------
  378|      1|			smart_str_append_printf(str, ", %s", ZSTR_VAL(ce->interfaces[i]->name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  379|      1|		}
  380|      3|	}
  381|     19|	smart_str_appends(str, " ] {\n");
  382|       |
  383|       |	/* The information where a class is declared is only available for user classes */
  384|     19|	if (ce->type == ZEND_USER_CLASS) {
  ------------------
  |  Branch (384:6): [True: 18, False: 1]
  ------------------
  385|     18|		smart_str_append_printf(str, "%s  @@ %s %d-%d\n", indent, ZSTR_VAL(ce->info.user.filename),
  ------------------
  |  |   67|     18|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  386|     18|						ce->info.user.line_start, ce->info.user.line_end);
  387|     18|	}
  388|       |
  389|       |	/* Constants */
  390|     19|	uint32_t total_count = zend_hash_num_elements(&ce->constants_table);
  391|     19|	uint32_t constant_count = 0;
  392|     19|	uint32_t enum_case_count = 0;
  393|     19|	smart_str constant_str = {0};
  394|     19|	smart_str enum_case_str = {0};
  395|       |	/* So that we don't need to loop through all of the constants multiple
  396|       |	 * times (count the constants vs. enum cases, print the constants, print
  397|       |	 * the enum cases) use some temporary helper smart strings. */
  398|     19|	if (total_count > 0) {
  ------------------
  |  Branch (398:6): [True: 9, False: 10]
  ------------------
  399|      9|		zend_string *key;
  400|      9|		zend_class_constant *c;
  401|       |
  402|     48|		ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(CE_CONSTANTS_TABLE(ce), key, c) {
  ------------------
  |  | 1448|     15|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      9|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      9|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      9|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      9|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      9|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      9|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     21|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 15, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     15|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     15|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     15|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 15]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     15|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1449|     15|	_key = _p->key; \
  |  | 1450|     15|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      9|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      9|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (402:3): [True: 0, False: 9]
  |  Branch (402:3): [True: 9, False: 0]
  ------------------
  403|     48|			if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE) {
  ------------------
  |  |  498|     15|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|     15|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              			if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE) {
  ------------------
  |  |  255|     15|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (403:8): [True: 2, False: 13]
  ------------------
  404|      2|				_enum_case_string(&enum_case_str, key, c, ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  405|      2|				enum_case_count++;
  406|     13|			} else {
  407|     13|				_class_const_string(&constant_str, key, c, ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  408|     13|				constant_count++;
  409|     13|			}
  410|     48|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 12]
  |  |  ------------------
  ------------------
  411|      3|				zend_string_release(sub_indent);
  412|      3|				smart_str_free(&enum_case_str);
  413|      3|				smart_str_free(&constant_str);
  414|      3|				return;
  415|      3|			}
  416|     48|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     15|		} \
  |  | 1102|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  417|      9|	}
  418|       |	// Enum cases go first, but the heading is only shown if there are any
  419|     16|	if (enum_case_count) {
  ------------------
  |  Branch (419:6): [True: 2, False: 14]
  ------------------
  420|      2|		smart_str_appendc(str, '\n');
  421|      2|		smart_str_append_printf(str, "%s  - Enum cases [%d] {\n", indent, enum_case_count);
  422|      2|		smart_str_append_smart_str(str, &enum_case_str);
  423|      2|		smart_str_append_printf(str, "%s  }\n", indent);
  424|      2|	}
  425|     16|	smart_str_appendc(str, '\n');
  426|     16|	smart_str_append_printf(str, "%s  - Constants [%d] {\n", indent, constant_count);
  427|     16|	smart_str_append_smart_str(str, &constant_str);
  428|     16|	smart_str_append_printf(str, "%s  }\n", indent);
  429|       |
  430|     16|	smart_str_free(&enum_case_str);
  431|     16|	smart_str_free(&constant_str);
  432|       |
  433|       |	/* Static properties */
  434|       |	/* counting static properties */
  435|     16|	count = zend_hash_num_elements(&ce->properties_info);
  436|     16|	if (count > 0) {
  ------------------
  |  Branch (436:6): [True: 9, False: 7]
  ------------------
  437|      9|		zend_property_info *prop;
  438|       |
  439|     42|		ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop) {
  ------------------
  |  | 1341|     12|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      9|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      9|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      9|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      9|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      9|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      9|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     21|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 12, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     12|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     12|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     12|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 12]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     12|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     12|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      9|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      9|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (439:3): [True: 0, False: 9]
  |  Branch (439:3): [True: 9, False: 0]
  ------------------
  440|     42|			if ((prop->flags & ZEND_ACC_PRIVATE) && prop->ce != ce) {
  ------------------
  |  |  221|     12|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (440:8): [True: 2, False: 10]
  |  Branch (440:44): [True: 1, False: 1]
  ------------------
  441|      1|				count_shadow_props++;
  442|     11|			} else if (prop->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     11|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (442:15): [True: 0, False: 11]
  ------------------
  443|      0|				count_static_props++;
  444|      0|			}
  445|     42|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     12|		} \
  |  | 1102|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
  446|      9|	}
  447|       |
  448|       |	/* static properties */
  449|     16|	smart_str_append_printf(str, "\n%s  - Static properties [%d] {\n", indent, count_static_props);
  450|     16|	if (count_static_props > 0) {
  ------------------
  |  Branch (450:6): [True: 0, False: 16]
  ------------------
  451|      0|		zend_property_info *prop;
  452|       |
  453|      0|		ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop) {
  ------------------
  |  | 1341|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (453:3): [True: 0, False: 0]
  |  Branch (453:3): [True: 0, False: 0]
  ------------------
  454|      0|			if ((prop->flags & ZEND_ACC_STATIC) && (!(prop->flags & ZEND_ACC_PRIVATE) || prop->ce == ce)) {
  ------------------
  |  |  227|      0|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
              			if ((prop->flags & ZEND_ACC_STATIC) && (!(prop->flags & ZEND_ACC_PRIVATE) || prop->ce == ce)) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (454:8): [True: 0, False: 0]
  |  Branch (454:44): [True: 0, False: 0]
  |  Branch (454:81): [True: 0, False: 0]
  ------------------
  455|      0|				_property_string(str, prop, NULL, ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  456|      0|			}
  457|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  458|      0|	}
  459|     16|	smart_str_append_printf(str, "%s  }\n", indent);
  460|       |
  461|       |	/* Static methods */
  462|       |	/* counting static methods */
  463|     16|	count = zend_hash_num_elements(&ce->function_table);
  464|     16|	if (count > 0) {
  ------------------
  |  Branch (464:6): [True: 5, False: 11]
  ------------------
  465|      5|		zend_function *mptr;
  466|       |
  467|    146|		ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, mptr) {
  ------------------
  |  | 1341|     68|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      5|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      5|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      5|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      5|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      5|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     73|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 68, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     68|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     68|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     68|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 68]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     68|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     68|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 68]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     68|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      5|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      5|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (467:3): [True: 0, False: 5]
  |  Branch (467:3): [True: 5, False: 0]
  ------------------
  468|    146|			if ((mptr->common.fn_flags & ZEND_ACC_STATIC)
  ------------------
  |  |  227|     68|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (468:8): [True: 2, False: 66]
  ------------------
  469|      2|				&& ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) == 0 || mptr->common.scope == ce))
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (469:9): [True: 2, False: 0]
  |  Branch (469:60): [True: 0, False: 0]
  ------------------
  470|      2|			{
  471|      2|				count_static_funcs++;
  472|      2|			}
  473|    146|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     68|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  474|      5|	}
  475|       |
  476|       |	/* static methods */
  477|     16|	smart_str_append_printf(str, "\n%s  - Static methods [%d] {", indent, count_static_funcs);
  478|     16|	if (count_static_funcs > 0) {
  ------------------
  |  Branch (478:6): [True: 2, False: 14]
  ------------------
  479|      2|		zend_function *mptr;
  480|       |
  481|      8|		ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, mptr) {
  ------------------
  |  | 1341|      2|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      2|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      2|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      2|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      2|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      2|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      4|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      2|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      2|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 2]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|      2|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      2|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (481:3): [True: 0, False: 2]
  |  Branch (481:3): [True: 2, False: 0]
  ------------------
  482|      8|			if ((mptr->common.fn_flags & ZEND_ACC_STATIC)
  ------------------
  |  |  227|      2|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (482:8): [True: 2, False: 0]
  ------------------
  483|      2|				&& ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) == 0 || mptr->common.scope == ce))
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (483:9): [True: 2, False: 0]
  |  Branch (483:60): [True: 0, False: 0]
  ------------------
  484|      2|			{
  485|      2|				smart_str_appendc(str, '\n');
  486|      2|				_function_string(str, mptr, ce, ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  487|      2|			}
  488|      8|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      2|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  489|     14|	} else {
  490|     14|		smart_str_appendc(str, '\n');
  491|     14|	}
  492|     16|	smart_str_append_printf(str, "%s  }\n", indent);
  493|       |
  494|       |	/* Default/Implicit properties */
  495|     16|	count = zend_hash_num_elements(&ce->properties_info) - count_static_props - count_shadow_props;
  496|     16|	smart_str_append_printf(str, "\n%s  - Properties [%d] {\n", indent, count);
  497|     16|	if (count > 0) {
  ------------------
  |  Branch (497:6): [True: 8, False: 8]
  ------------------
  498|      8|		zend_property_info *prop;
  499|       |
  500|     38|		ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, prop) {
  ------------------
  |  | 1341|     11|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      8|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      8|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      8|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      8|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      8|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      8|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     19|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 11, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     11|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     11|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     11|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 11]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     11|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     11|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (500:3): [True: 0, False: 8]
  |  Branch (500:3): [True: 8, False: 0]
  ------------------
  501|     38|			if (!(prop->flags & ZEND_ACC_STATIC)
  ------------------
  |  |  227|     11|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (501:8): [True: 11, False: 0]
  ------------------
  502|     11|			 && (!(prop->flags & ZEND_ACC_PRIVATE) || prop->ce == ce)) {
  ------------------
  |  |  221|     11|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (502:9): [True: 10, False: 1]
  |  Branch (502:46): [True: 1, False: 0]
  ------------------
  503|     11|				_property_string(str, prop, NULL, ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  504|     11|			}
  505|     38|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     11|		} \
  |  | 1102|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  506|      8|	}
  507|     16|	smart_str_append_printf(str, "%s  }\n", indent);
  508|       |
  509|     16|	if (obj && Z_TYPE_P(obj) == IS_OBJECT) {
  ------------------
  |  |  669|     16|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (obj && Z_TYPE_P(obj) == IS_OBJECT) {
  ------------------
  |  |  614|     16|#define IS_OBJECT					8
  ------------------
  |  Branch (509:6): [True: 16, False: 0]
  |  Branch (509:13): [True: 4, False: 12]
  ------------------
  510|      4|		HashTable    *properties = zend_get_properties_no_lazy_init(Z_OBJ_P(obj));
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  511|      4|		zend_string  *prop_name;
  512|      4|		smart_str prop_str = {0};
  513|       |
  514|      4|		count = 0;
  515|      4|		if (properties && zend_hash_num_elements(properties)) {
  ------------------
  |  Branch (515:7): [True: 4, False: 0]
  |  Branch (515:21): [True: 4, False: 0]
  ------------------
  516|     24|			ZEND_HASH_FOREACH_STR_KEY(properties, prop_name) {
  ------------------
  |  | 1153|     10|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      4|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      4|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      4|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      4|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      4|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      4|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      4|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      4|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      4|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      4|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      4|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      4|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     14|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 10, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     10|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     10|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     10|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     10|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|     10|			} else { \
  |  |  |  |  |  | 1060|     10|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     10|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     10|				__h = _p->h; \
  |  |  |  |  |  | 1063|     10|				__key = _p->key; \
  |  |  |  |  |  | 1064|     10|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     10|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 10]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|     10|			} \
  |  |  |  |  |  | 1068|     10|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     10|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1154|     10|	_key = __key;
  ------------------
  517|     24|				if (prop_name && ZSTR_LEN(prop_name) && ZSTR_VAL(prop_name)[0]) { /* skip all private and protected properties */
  ------------------
  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 10, False: 0]
  |  |  ------------------
  ------------------
              				if (prop_name && ZSTR_LEN(prop_name) && ZSTR_VAL(prop_name)[0]) { /* skip all private and protected properties */
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (517:9): [True: 10, False: 0]
  |  Branch (517:45): [True: 7, False: 3]
  ------------------
  518|      7|					if (!zend_hash_exists(&ce->properties_info, prop_name)) {
  ------------------
  |  Branch (518:10): [True: 3, False: 4]
  ------------------
  519|      3|						count++;
  520|      3|						_property_string(&prop_str, NULL, ZSTR_VAL(prop_name), ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						_property_string(&prop_str, NULL, ZSTR_VAL(prop_name), ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  521|      3|					}
  522|      7|				}
  523|     24|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     10|		} \
  |  | 1102|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  524|      4|		}
  525|       |
  526|      4|		smart_str_append_printf(str, "\n%s  - Dynamic properties [%d] {\n", indent, count);
  527|      4|		smart_str_append_smart_str(str, &prop_str);
  528|      4|		smart_str_append_printf(str, "%s  }\n", indent);
  529|      4|		smart_str_free(&prop_str);
  530|      4|	}
  531|       |
  532|       |	/* Non static methods */
  533|     16|	count = zend_hash_num_elements(&ce->function_table) - count_static_funcs;
  534|     16|	if (count > 0) {
  ------------------
  |  Branch (534:6): [True: 3, False: 13]
  ------------------
  535|      3|		zend_function *mptr;
  536|      3|		smart_str method_str = {0};
  537|       |
  538|      3|		count = 0;
  539|    138|		ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, mptr) {
  ------------------
  |  | 1341|     66|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      3|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      3|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      3|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      3|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      3|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      3|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     69|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 66, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     66|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     66|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     66|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 66]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     66|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     66|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 66]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     66|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (539:3): [True: 0, False: 3]
  |  Branch (539:3): [True: 3, False: 0]
  ------------------
  540|    138|			if ((mptr->common.fn_flags & ZEND_ACC_STATIC) == 0
  ------------------
  |  |  227|     66|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (540:8): [True: 66, False: 0]
  ------------------
  541|     66|				&& ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) == 0 || mptr->common.scope == ce))
  ------------------
  |  |  221|     66|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (541:9): [True: 65, False: 1]
  |  Branch (541:60): [True: 1, False: 0]
  ------------------
  542|     66|			{
  543|     66|				zend_function *closure;
  544|       |				/* see if this is a closure */
  545|     66|				if (obj && is_closure_invoke(ce, mptr->common.function_name)
  ------------------
  |  Branch (545:9): [True: 66, False: 0]
  |  Branch (545:16): [True: 0, False: 66]
  ------------------
  546|      0|					&& (closure = zend_get_closure_invoke_method(Z_OBJ_P(obj))) != NULL)
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (546:9): [True: 0, False: 0]
  ------------------
  547|      0|				{
  548|      0|					mptr = closure;
  549|     66|				} else {
  550|     66|					closure = NULL;
  551|     66|				}
  552|     66|				smart_str_appendc(&method_str, '\n');
  553|     66|				_function_string(&method_str, mptr, ce, ZSTR_VAL(sub_indent));
  ------------------
  |  |   67|     66|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  554|     66|				count++;
  555|     66|				_free_function(closure);
  556|     66|			}
  557|    138|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     66|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  558|      3|		smart_str_append_printf(str, "\n%s  - Methods [%d] {", indent, count);
  559|      3|		smart_str_append_smart_str(str, &method_str);
  560|      3|		if (!count) {
  ------------------
  |  Branch (560:7): [True: 0, False: 3]
  ------------------
  561|      0|			smart_str_appendc(str, '\n');
  562|      0|		}
  563|      3|		smart_str_free(&method_str);
  564|     13|	} else {
  565|     13|		smart_str_append_printf(str, "\n%s  - Methods [0] {\n", indent);
  566|     13|	}
  567|     16|	smart_str_append_printf(str, "%s  }\n", indent);
  568|       |
  569|     16|	smart_str_append_printf(str, "%s}\n", indent);
  570|     16|	zend_string_release_ex(sub_indent, 0);
  571|     16|}
php_reflection.c:_enum_case_string:
  659|      2|{
  660|      2|	if (Z_TYPE(c->value) == IS_CONSTANT_AST && zend_update_class_constant(c, name, c->ce) == FAILURE) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(c->value) == IS_CONSTANT_AST && zend_update_class_constant(c, name, c->ce) == FAILURE) {
  ------------------
  |  |  617|      4|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (660:6): [True: 2, False: 0]
  |  Branch (660:45): [True: 0, False: 2]
  ------------------
  661|      0|		return;
  662|      0|	}
  663|       |
  664|      2|	if (c->doc_comment) {
  ------------------
  |  Branch (664:6): [True: 0, False: 2]
  ------------------
  665|      0|		smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(c->doc_comment));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  666|      0|	}
  667|      2|	smart_str_append_printf(str, "%sCase %s", indent, ZSTR_VAL(name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  668|      2|	if (c->ce->enum_backing_type == IS_UNDEF) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (668:6): [True: 2, False: 0]
  ------------------
  669|       |		// No value
  670|      2|		smart_str_appendc(str, '\n');
  671|      2|	} else {
  672|       |		/* Has a value, which is the enum instance, get the value from that.
  673|       |		 * We know it must be either a string or integer so no need
  674|       |		 * for the IS_ARRAY or IS_OBJECT handling that _class_const_string()
  675|       |		 * requires. */
  676|      0|		zval *enum_val = zend_enum_fetch_case_value(Z_OBJ(c->value));
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  677|      0|		zend_string *tmp_value_str;
  678|      0|		zend_string *value_str = zval_get_tmp_string(enum_val, &tmp_value_str);
  679|      0|		smart_str_append_printf(str, " = %s\n", ZSTR_VAL(value_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  680|      0|		zend_tmp_string_release(tmp_value_str);
  681|      0|	}
  682|      2|}
php_reflection.c:_addmethod:
 4517|     37|{
 4518|     37|	if ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) && mptr->common.scope != ce) {
  ------------------
  |  |  221|     37|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (4518:6): [True: 5, False: 32]
  |  Branch (4518:52): [True: 0, False: 5]
  ------------------
 4519|      0|		return false;
 4520|      0|	}
 4521|       |
 4522|     37|	if (mptr->common.fn_flags & filter) {
  ------------------
  |  Branch (4522:6): [True: 20, False: 17]
  ------------------
 4523|     20|		zval method;
 4524|     20|		reflection_method_factory(ce, mptr, NULL, &method);
 4525|     20|		zend_hash_next_index_insert_new(ht, &method);
 4526|     20|		return true;
 4527|     20|	}
 4528|     17|	return false;
 4529|     37|}
php_reflection.c:_free_function:
  211|  1.16k|{
  212|  1.16k|	if (fptr
  ------------------
  |  Branch (212:6): [True: 1.09k, False: 66]
  ------------------
  213|  1.09k|		&& (fptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE))
  ------------------
  |  |  372|  1.09k|#define ZEND_ACC_CALL_VIA_TRAMPOLINE     (1 << 18) /*     |  X  |     |     */
  ------------------
  |  Branch (213:6): [True: 9, False: 1.08k]
  ------------------
  214|      9|	{
  215|      9|		zend_string_release_ex(fptr->internal_function.function_name, 0);
  216|       |		zend_free_trampoline(fptr);
  ------------------
  |  |  344|      9|#define zend_free_trampoline(func) do { \
  |  |  345|      9|		if ((func) == &EG(trampoline)) { \
  |  |  ------------------
  |  |  |  |   45|      9|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (345:7): [True: 0, False: 9]
  |  |  ------------------
  |  |  346|      0|			EG(trampoline).common.attributes = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  347|      0|			EG(trampoline).common.function_name = NULL; \
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  348|      9|		} else { \
  |  |  349|      9|			efree(func); \
  |  |  ------------------
  |  |  |  |  154|      9|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      9|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      9|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      9|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      9|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  350|      9|		} \
  |  |  351|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (351:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
  217|      9|	}
  218|  1.16k|}
php_reflection.c:reflection_property_factory:
 1573|      3|{
 1574|      3|	reflection_object *intern;
 1575|      3|	property_reference *reference;
 1576|       |
 1577|      3|	object_init_ex(object, reflection_property_ptr);
 1578|      3|	intern = Z_REFLECTION_P(object);
  ------------------
  |  |  179|      3|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  177|      3|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1579|      3|	reference = (property_reference*) emalloc(sizeof(property_reference));
  ------------------
  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1580|      3|	reference->prop = prop;
 1581|      3|	reference->unmangled_name = zend_string_copy(name);
 1582|      3|	memset(reference->cache_slot, 0, sizeof(reference->cache_slot));
 1583|      3|	intern->ptr = reference;
 1584|      3|	intern->ref_type = REF_TYPE_PROPERTY;
 1585|      3|	intern->ce = ce;
 1586|      3|	ZVAL_STR_COPY(reflection_prop_name(object), name);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      3|		zend_string *__s = (s);							\
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 1]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1587|      3|	ZVAL_STR_COPY(reflection_prop_class(object), prop ? prop->ce->name : ce->name);
  ------------------
  |  | 1112|      3|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      3|		zval *__z = (z);								\
  |  | 1114|      6|		zend_string *__s = (s);							\
  |  |  ------------------
  |  |  |  Branch (1114:23): [True: 3, False: 0]
  |  |  ------------------
  |  | 1115|      3|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      3|		/* interned strings support */					\
  |  | 1117|      3|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 2, False: 1]
  |  |  ------------------
  |  | 1118|      2|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      1|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      1|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      1|		}												\
  |  | 1123|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1588|      3|}
php_reflection.c:_class_check_flag:
 4884|      1|{
 4885|      1|	reflection_object *intern;
 4886|      1|	zend_class_entry *ce;
 4887|       |
 4888|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4889|      1|	GET_REFLECTION_OBJECT_PTR(ce);
  ------------------
  |  |  118|      1|#define GET_REFLECTION_OBJECT_PTR(target) do { \
  |  |  119|      1|	GET_REFLECTION_OBJECT(); \
  |  |  ------------------
  |  |  |  |  107|      1|#define GET_REFLECTION_OBJECT() do { \
  |  |  |  |  108|      1|	intern = Z_REFLECTION_P(ZEND_THIS); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  179|      1|#define Z_REFLECTION_P(zv)  reflection_object_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  177|      1|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  109|      1|	if (intern->ptr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (109:6): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  110|      0|		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		if (EG(exception) && EG(exception)->ce == reflection_exception_ptr) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (110:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  111|      0|			RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  112|      0|		} \
  |  |  |  |  113|      0|		zend_throw_error(NULL, "Internal error: Failed to retrieve the reflection object"); \
  |  |  |  |  114|      0|		RETURN_THROWS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	} \
  |  |  |  |  116|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      1|	target = intern->ptr; \
  |  |  121|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (121:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4889:2): [True: 0, False: 0]
  |  Branch (4889:2): [True: 0, False: 0]
  |  Branch (4889:2): [True: 0, False: 0]
  |  Branch (4889:2): [True: 0, False: 0]
  ------------------
 4890|      1|	RETVAL_BOOL(ce->ce_flags & mask);
  ------------------
  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4891|      1|}
php_reflection.c:reflection_free_property_reference:
  222|     15|{
  223|     15|	zend_string_release_ex(reference->unmangled_name, 0);
  224|       |	efree(reference);
  ------------------
  |  |  154|     15|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     15|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     15|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     15|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     15|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|     15|}
php_reflection.c:_property_string:
  982|     16|{
  983|     16|	if (prop && prop->doc_comment) {
  ------------------
  |  Branch (983:6): [True: 13, False: 3]
  |  Branch (983:14): [True: 0, False: 13]
  ------------------
  984|      0|		smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(prop->doc_comment));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  985|      0|	}
  986|     16|	smart_str_append_printf(str, "%sProperty [ ", indent);
  987|     16|	if (!prop) {
  ------------------
  |  Branch (987:6): [True: 3, False: 13]
  ------------------
  988|      3|		smart_str_append_printf(str, "<dynamic> public $%s", prop_name);
  989|     13|	} else {
  990|     13|		if (prop->flags & ZEND_ACC_ABSTRACT) {
  ------------------
  |  |  233|     13|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  |  Branch (990:7): [True: 0, False: 13]
  ------------------
  991|      0|			smart_str_appends(str, "abstract ");
  992|      0|		}
  993|     13|		if (prop->flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|     13|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (993:7): [True: 0, False: 13]
  ------------------
  994|      0|			smart_str_appends(str, "final ");
  995|      0|		}
  996|       |		/* These are mutually exclusive */
  997|     13|		switch (prop->flags & ZEND_ACC_PPP_MASK) {
  ------------------
  |  |  421|     13|#define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  219|     13|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  220|     13|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_MASK  (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE)
  |  |  ------------------
  |  |  |  |  221|     13|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  |  |  ------------------
  ------------------
  |  Branch (997:11): [True: 13, False: 0]
  ------------------
  998|     11|			case ZEND_ACC_PUBLIC:
  ------------------
  |  |  219|     11|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (998:4): [True: 11, False: 2]
  ------------------
  999|     11|				smart_str_appends(str, "public ");
 1000|     11|				break;
 1001|      1|			case ZEND_ACC_PRIVATE:
  ------------------
  |  |  221|      1|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1001:4): [True: 1, False: 12]
  ------------------
 1002|      1|				smart_str_appends(str, "private ");
 1003|      1|				break;
 1004|      1|			case ZEND_ACC_PROTECTED:
  ------------------
  |  |  220|      1|#define ZEND_ACC_PROTECTED               (1 <<  1) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (1004:4): [True: 1, False: 12]
  ------------------
 1005|      1|				smart_str_appends(str, "protected ");
 1006|      1|				break;
 1007|     13|		}
 1008|     13|		switch (prop->flags & ZEND_ACC_PPP_SET_MASK) {
  ------------------
  |  |  422|     13|#define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  273|     13|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  274|     13|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  |  |  ------------------
  |  |               #define ZEND_ACC_PPP_SET_MASK  (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET)
  |  |  ------------------
  |  |  |  |  275|     13|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  |  |  ------------------
  ------------------
  |  Branch (1008:11): [True: 4, False: 9]
  ------------------
 1009|      0|			case ZEND_ACC_PRIVATE_SET:
  ------------------
  |  |  275|      0|#define ZEND_ACC_PRIVATE_SET             (1 << 12) /*     |     |  X  |     */
  ------------------
  |  Branch (1009:4): [True: 0, False: 13]
  ------------------
 1010|      0|				smart_str_appends(str, "private(set) ");
 1011|      0|				break;
 1012|      4|			case ZEND_ACC_PROTECTED_SET:
  ------------------
  |  |  274|      4|#define ZEND_ACC_PROTECTED_SET           (1 << 11) /*     |     |  X  |     */
  ------------------
  |  Branch (1012:4): [True: 4, False: 9]
  ------------------
 1013|      4|				smart_str_appends(str, "protected(set) ");
 1014|      4|				break;
 1015|      0|			case ZEND_ACC_PUBLIC_SET:
  ------------------
  |  |  273|      0|#define ZEND_ACC_PUBLIC_SET              (1 << 10) /*     |     |  X  |     */
  ------------------
  |  Branch (1015:4): [True: 0, False: 13]
  ------------------
 1016|      0|				ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1016:5): [Folded, False: 0]
  |  Branch (1016:5): [Folded, False: 0]
  ------------------
 1017|      0|				break;
 1018|     13|		}
 1019|     13|		if (prop->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     13|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (1019:7): [True: 1, False: 12]
  ------------------
 1020|      1|			smart_str_appends(str, "static ");
 1021|      1|		}
 1022|     13|		if (prop->flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|     13|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1022:7): [True: 4, False: 9]
  ------------------
 1023|      4|			smart_str_appends(str, "readonly ");
 1024|      4|		}
 1025|     13|		if (prop->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|     13|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (1025:7): [True: 0, False: 13]
  ------------------
 1026|      0|			smart_str_appends(str, "virtual ");
 1027|      0|		}
 1028|     13|		if (ZEND_TYPE_IS_SET(prop->type)) {
  ------------------
  |  |  152|     13|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|     13|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 7, False: 6]
  |  |  ------------------
  ------------------
 1029|      7|			zend_string *type_str = zend_type_to_string(prop->type);
 1030|      7|			smart_str_append(str, type_str);
 1031|      7|			smart_str_appendc(str, ' ');
 1032|      7|			zend_string_release(type_str);
 1033|      7|		}
 1034|     13|		if (!prop_name) {
  ------------------
  |  Branch (1034:7): [True: 11, False: 2]
  ------------------
 1035|     11|			const char *class_name;
 1036|     11|			zend_unmangle_property_name(prop->name, &class_name, &prop_name);
  ------------------
  |  |  995|     11|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
 1037|     11|		}
 1038|     13|		smart_str_append_printf(str, "$%s", prop_name);
 1039|       |
 1040|     13|		zval *default_value = property_get_default(prop);
 1041|     13|		if (default_value && !Z_ISUNDEF_P(default_value)) {
  ------------------
  |  |  967|     13|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|     13|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|     13|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1041:7): [True: 13, False: 0]
  |  Branch (1041:24): [True: 8, False: 5]
  ------------------
 1042|      8|			smart_str_appends(str, " = ");
 1043|      8|			format_default_value(str, default_value);
 1044|      8|		}
 1045|     13|		if (prop->hooks != NULL) {
  ------------------
  |  Branch (1045:7): [True: 0, False: 13]
  ------------------
 1046|      0|			smart_str_appends(str, " {");
 1047|      0|			const zend_function *get_hooked = prop->hooks[ZEND_PROPERTY_HOOK_GET];
 1048|      0|			if (get_hooked != NULL) {
  ------------------
  |  Branch (1048:8): [True: 0, False: 0]
  ------------------
 1049|      0|				if (get_hooked->common.fn_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1049:9): [True: 0, False: 0]
  ------------------
 1050|      0|					smart_str_appends(str, " final get;");
 1051|      0|				} else {
 1052|      0|					smart_str_appends(str, " get;");
 1053|      0|				}
 1054|      0|			}
 1055|      0|			const zend_function *set_hooked = prop->hooks[ZEND_PROPERTY_HOOK_SET];
 1056|      0|			if (set_hooked != NULL) {
  ------------------
  |  Branch (1056:8): [True: 0, False: 0]
  ------------------
 1057|      0|				if (set_hooked->common.fn_flags & ZEND_ACC_FINAL) {
  ------------------
  |  |  230|      0|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
  |  Branch (1057:9): [True: 0, False: 0]
  ------------------
 1058|      0|					smart_str_appends(str, " final set;");
 1059|      0|				} else {
 1060|      0|					smart_str_appends(str, " set;");
 1061|      0|				}
 1062|      0|			}
 1063|      0|			smart_str_appends(str, " }");
 1064|      0|		}
 1065|     13|	}
 1066|       |
 1067|     16|	smart_str_appends(str, " ]\n");
 1068|     16|}
php_reflection.c:prop_get_flags:
  184|      4|static zend_always_inline uint32_t prop_get_flags(const property_reference *ref) {
  185|      4|	return ref->prop ? ref->prop->flags : ZEND_ACC_PUBLIC;
  ------------------
  |  |  219|      0|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (185:9): [True: 4, False: 0]
  ------------------
  186|      4|}
php_reflection.c:reflection_property_get_effective_prop:
 6015|      2|		property_reference *ref, zend_class_entry *scope, zend_object *object) {
 6016|      2|	zend_property_info *prop = ref->prop;
 6017|      2|	if (scope != object->ce && !(prop && (prop->flags & ZEND_ACC_PRIVATE))) {
  ------------------
  |  |  221|      0|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
  |  Branch (6017:6): [True: 0, False: 2]
  |  Branch (6017:31): [True: 0, False: 0]
  |  Branch (6017:39): [True: 0, False: 0]
  ------------------
 6018|      0|		prop = zend_hash_find_ptr(&object->ce->properties_info, ref->unmangled_name);
 6019|      0|	}
 6020|      2|	return prop;
 6021|      2|}
php_reflection.c:reflection_property_set_raw_value:
 6085|      1|{
 6086|      1|	if (!prop || !prop->hooks || !prop->hooks[ZEND_PROPERTY_HOOK_SET]) {
  ------------------
  |  Branch (6086:6): [True: 1, False: 0]
  |  Branch (6086:15): [True: 0, False: 0]
  |  Branch (6086:31): [True: 0, False: 0]
  ------------------
 6087|      1|		const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 6088|      1|		EG(fake_scope) = intern->ce;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 6089|      1|		object->handlers->write_property(object, unmangled_name, value, cache_slot);
 6090|      1|		EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
 6091|      1|	} else {
 6092|      0|		zend_function *func = zend_get_property_hook_trampoline(prop, ZEND_PROPERTY_HOOK_SET, unmangled_name);
 6093|       |		zend_call_known_instance_method_with_1_params(func, object, NULL, value);
 6094|      0|	}
 6095|      1|}
php_reflection.c:property_get_default:
  967|     17|static zval *property_get_default(zend_property_info *prop_info) {
  968|     17|	zend_class_entry *ce = prop_info->ce;
  969|     17|	if (prop_info->flags & ZEND_ACC_STATIC) {
  ------------------
  |  |  227|     17|#define ZEND_ACC_STATIC                  (1 <<  4) /*     |  X  |  X  |     */
  ------------------
  |  Branch (969:6): [True: 2, False: 15]
  ------------------
  970|      2|		zval *prop = &ce->default_static_members_table[prop_info->offset];
  971|      2|		ZVAL_DEINDIRECT(prop);
  ------------------
  |  | 1480|      2|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|      2|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|      2|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  972|      2|		return prop;
  973|     15|	} else if (prop_info->flags & ZEND_ACC_VIRTUAL) {
  ------------------
  |  |  270|     15|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (973:13): [True: 0, False: 15]
  ------------------
  974|      0|		return NULL;
  975|     15|	} else {
  976|       |		return &ce->default_properties_table[OBJ_PROP_TO_NUM(prop_info->offset)];
  ------------------
  |  |  486|     15|	(((offset) - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
  |  |  ------------------
  |  |  |  |  484|     15|	((uint32_t)(offsetof(zend_object, properties_table) + sizeof(zval) * (num)))
  |  |  ------------------
  ------------------
  977|     15|	}
  978|     17|}
php_reflection.c:get_ce_from_scope_name:
 6645|      2|{
 6646|      2|	if (!scope_name) {
  ------------------
  |  Branch (6646:6): [True: 0, False: 2]
  ------------------
 6647|      0|		*scope = NULL;
 6648|      0|		return SUCCESS;
 6649|      0|	}
 6650|       |
 6651|      2|	*scope = zend_lookup_class(scope_name);
 6652|      2|	if (!*scope) {
  ------------------
  |  Branch (6652:6): [True: 2, False: 0]
  ------------------
 6653|      2|		zend_throw_error(NULL, "Class \"%s\" not found", ZSTR_VAL(scope_name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 6654|      2|		return FAILURE;
 6655|      2|	}
 6656|      0|	return SUCCESS;
 6657|      2|}
php_reflection.c:_addinientry:
 7003|    179|{
 7004|    179|	if (number == ini_entry->module_number) {
  ------------------
  |  Branch (7004:6): [True: 14, False: 165]
  ------------------
 7005|     14|		zval zv;
 7006|     14|		if (ini_entry->value) {
  ------------------
  |  Branch (7006:7): [True: 11, False: 3]
  ------------------
 7007|     11|			ZVAL_STR_COPY(&zv, ini_entry->value);
  ------------------
  |  | 1112|     11|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     11|		zval *__z = (z);								\
  |  | 1114|     11|		zend_string *__s = (s);							\
  |  | 1115|     11|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     11|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     11|		/* interned strings support */					\
  |  | 1117|     11|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 11, False: 0]
  |  |  ------------------
  |  | 1118|     11|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     11|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     11|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     11|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
 7008|     11|		} else {
 7009|      3|			ZVAL_NULL(&zv);
  ------------------
  |  | 1059|      3|#define ZVAL_NULL(z) do {				\
  |  | 1060|      3|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      3|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 7010|      3|		}
 7011|     14|		zend_symtable_update(Z_ARRVAL_P(retval), ini_entry->name, &zv);
  ------------------
  |  |  997|     14|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     14|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     14|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7012|     14|	}
 7013|    179|}
php_reflection.c:add_extension_class:
 7035|    522|{
 7036|    522|	if (ce->type == ZEND_INTERNAL_CLASS && ce->info.internal.module && !strcasecmp(ce->info.internal.module->name, module->name)) {
  ------------------
  |  Branch (7036:6): [True: 522, False: 0]
  |  Branch (7036:41): [True: 522, False: 0]
  |  Branch (7036:69): [True: 64, False: 458]
  ------------------
 7037|     64|		zend_string *name;
 7038|       |
 7039|     64|		if (!zend_string_equals_ci(ce->name, key)) {
  ------------------
  |  |  401|     64|	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     64|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|    128|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     64|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     64|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   67|     64|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(s1) == ZSTR_LEN(s2) && !zend_binary_strcasecmp(ZSTR_VAL(s1), ZSTR_LEN(s1), ZSTR_VAL(s2), ZSTR_LEN(s2)))
  |  |  ------------------
  |  |  |  |   68|     64|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (401:3): [True: 64, False: 0]
  |  |  |  Branch (401:35): [True: 64, False: 0]
  |  |  ------------------
  ------------------
 7040|       |			/* This is a class alias, use alias name */
 7041|      0|			name = key;
 7042|     64|		} else {
 7043|       |			/* Use class name */
 7044|     64|			name = ce->name;
 7045|     64|		}
 7046|     64|		if (add_reflection_class) {
  ------------------
  |  Branch (7046:7): [True: 52, False: 12]
  ------------------
 7047|     52|			zval zclass;
 7048|     52|			zend_reflection_class_factory(ce, &zclass);
 7049|     52|			zend_hash_update(Z_ARRVAL_P(class_array), name, &zclass);
  ------------------
  |  |  997|     52|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     52|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     52|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7050|     52|		} else {
 7051|     12|			add_next_index_str(class_array, zend_string_copy(name));
 7052|     12|		}
 7053|     64|	}
 7054|    522|}
php_reflection.c:format_default_value:
  711|     57|static void format_default_value(smart_str *str, zval *value) {
  712|     57|	if (smart_str_append_zval(str, value, SIZE_MAX) == SUCCESS) {
  ------------------
  |  Branch (712:6): [True: 31, False: 26]
  ------------------
  713|       |		/* Nothing to do. */
  714|     31|	} else if (Z_TYPE_P(value) == IS_ARRAY) {
  ------------------
  |  |  669|     26|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     26|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(value) == IS_ARRAY) {
  ------------------
  |  |  613|     26|#define IS_ARRAY					7
  ------------------
  |  Branch (714:13): [True: 16, False: 10]
  ------------------
  715|     16|		zend_string *str_key;
  716|     16|		zend_long num_key;
  717|     16|		zval *zv;
  718|     16|		bool is_list = zend_array_is_list(Z_ARRVAL_P(value));
  ------------------
  |  |  997|     16|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     16|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     16|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  719|     16|		bool first = true;
  720|     16|		smart_str_appendc(str, '[');
  721|     77|		ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(value), num_key, str_key, zv) {
  ------------------
  |  | 1196|     33|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     16|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     16|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     16|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     16|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     16|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     16|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     16|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     16|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     16|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     16|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     16|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     16|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     16|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     49|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 33, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     33|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     33|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     33|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     33|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     33|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 29, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|     29|				__z++; \
  |  |  |  |  |  | 1057|     29|				__h = _idx; \
  |  |  |  |  |  | 1058|     29|				_idx++; \
  |  |  |  |  |  | 1059|     29|			} else { \
  |  |  |  |  |  | 1060|      4|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      4|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      4|				__h = _p->h; \
  |  |  |  |  |  | 1063|      4|				__key = _p->key; \
  |  |  |  |  |  | 1064|      4|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      4|			} \
  |  |  |  |  |  | 1068|     33|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     33|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     33|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|     28|	_h = __h; \
  |  | 1198|     28|	_key = __key; \
  |  | 1199|     28|	_val = _z;
  ------------------
  722|     77|			if (!first) {
  ------------------
  |  Branch (722:8): [True: 13, False: 15]
  ------------------
  723|     13|				smart_str_appends(str, ", ");
  724|     13|			}
  725|     77|			first = false;
  726|       |
  727|     77|			if (!is_list) {
  ------------------
  |  Branch (727:8): [True: 14, False: 14]
  ------------------
  728|     14|				if (str_key) {
  ------------------
  |  Branch (728:9): [True: 2, False: 12]
  ------------------
  729|      2|					smart_str_appendc(str, '\'');
  730|      2|					smart_str_append_escaped(str, ZSTR_VAL(str_key), ZSTR_LEN(str_key));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					smart_str_append_escaped(str, ZSTR_VAL(str_key), ZSTR_LEN(str_key));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  731|      2|					smart_str_appendc(str, '\'');
  732|     12|				} else {
  733|     12|					smart_str_append_long(str, num_key);
  734|     12|				}
  735|     14|				smart_str_appends(str, " => ");
  736|     14|			}
  737|     77|			format_default_value(str, zv);
  738|     77|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     28|		} \
  |  | 1102|     16|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 16]
  |  |  ------------------
  ------------------
  739|     16|		smart_str_appendc(str, ']');
  740|     16|	} else if (Z_TYPE_P(value) == IS_OBJECT) {
  ------------------
  |  |  669|     10|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(value) == IS_OBJECT) {
  ------------------
  |  |  614|     10|#define IS_OBJECT					8
  ------------------
  |  Branch (740:13): [True: 2, False: 8]
  ------------------
  741|       |		/* This branch is reached if the constant AST was already evaluated and
  742|       |		 * resulted in an object; enums are already handled in smart_str_append_zval()
  743|       |		 * (GH-15902) */
  744|      2|		zend_object *obj = Z_OBJ_P(value);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  745|      2|		zend_class_entry *class = obj->ce;
  746|      2|		ZEND_ASSERT(!(class->ce_flags & ZEND_ACC_ENUM));
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (746:3): [True: 0, False: 2]
  |  Branch (746:3): [True: 2, False: 0]
  ------------------
  747|      2|		smart_str_appends(str, "object(");
  748|      2|		smart_str_append(str, class->name);
  749|      2|		smart_str_appendc(str, ')');
  750|      8|	} else {
  751|      8|		ZEND_ASSERT(Z_TYPE_P(value) == IS_CONSTANT_AST);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (751:3): [True: 0, False: 8]
  |  Branch (751:3): [True: 8, False: 0]
  ------------------
  752|      8|		zend_string *ast_str = zend_ast_export("", Z_ASTVAL_P(value), "");
  ------------------
  |  | 1041|      8|#define Z_ASTVAL_P(zval_p)			Z_ASTVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1040|      8|#define Z_ASTVAL(zval)				GC_AST(Z_AST(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1038|      8|#define GC_AST(p)					((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  753|      8|		smart_str_append(str, ast_str);
  754|      8|		zend_string_release(ast_str);
  755|      8|	}
  756|     57|}
php_reflection.c:reflection_free_objects_storage:
  234|  1.35k|{
  235|  1.35k|	reflection_object *intern = reflection_object_from_obj(object);
  ------------------
  |  |  177|  1.35k|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  ------------------
  |  |  |  |  407|  1.35k|	_Generic( \
  |  |  |  |  408|  1.35k|		(ptr), \
  |  |  |  |  409|  1.35k|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|  1.35k|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|  1.35k|	)
  |  |  ------------------
  ------------------
  236|       |
  237|  1.35k|	if (intern->ptr) {
  ------------------
  |  Branch (237:6): [True: 1.29k, False: 54]
  ------------------
  238|  1.29k|		switch (intern->ref_type) {
  ------------------
  |  Branch (238:11): [True: 1.29k, False: 0]
  ------------------
  239|      4|		case REF_TYPE_PARAMETER:
  ------------------
  |  Branch (239:3): [True: 4, False: 1.29k]
  ------------------
  240|      4|			reflection_free_parameter_reference(intern->ptr);
  241|      4|			break;
  242|      3|		case REF_TYPE_TYPE:
  ------------------
  |  Branch (242:3): [True: 3, False: 1.29k]
  ------------------
  243|      3|		{
  244|      3|			type_reference *type_ref = intern->ptr;
  245|      3|			if (ZEND_TYPE_HAS_NAME(type_ref->type)) {
  ------------------
  |  |  160|      3|	((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
  |  |  ------------------
  |  |  |  |  133|      3|#define _ZEND_TYPE_NAME_BIT (1u << 24)
  |  |  ------------------
  |  |  |  Branch (160:2): [True: 1, False: 2]
  |  |  ------------------
  ------------------
  246|      1|				zend_string_release(ZEND_TYPE_NAME(type_ref->type));
  ------------------
  |  |  184|      1|	((zend_string *) (t).ptr)
  ------------------
  247|      1|			}
  248|      3|			efree(type_ref);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|      3|			break;
  250|      0|		}
  251|  1.09k|		case REF_TYPE_FUNCTION:
  ------------------
  |  Branch (251:3): [True: 1.09k, False: 205]
  ------------------
  252|  1.09k|			_free_function(intern->ptr);
  253|  1.09k|			break;
  254|     14|		case REF_TYPE_PROPERTY:
  ------------------
  |  Branch (254:3): [True: 14, False: 1.28k]
  ------------------
  255|     14|			reflection_free_property_reference(intern->ptr);
  256|     14|			break;
  257|     21|		case REF_TYPE_ATTRIBUTE: {
  ------------------
  |  Branch (257:3): [True: 21, False: 1.27k]
  ------------------
  258|     21|			attribute_reference *attr_ref = intern->ptr;
  259|     21|			if (attr_ref->filename) {
  ------------------
  |  Branch (259:8): [True: 20, False: 1]
  ------------------
  260|     20|				zend_string_release(attr_ref->filename);
  261|     20|			}
  262|     21|			efree(intern->ptr);
  ------------------
  |  |  154|     21|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     21|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     21|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     21|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     21|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|     21|			break;
  264|      0|		}
  265|      0|		case REF_TYPE_GENERATOR:
  ------------------
  |  Branch (265:3): [True: 0, False: 1.29k]
  ------------------
  266|      0|		case REF_TYPE_FIBER:
  ------------------
  |  Branch (266:3): [True: 0, False: 1.29k]
  ------------------
  267|      5|		case REF_TYPE_CLASS_CONSTANT:
  ------------------
  |  Branch (267:3): [True: 5, False: 1.29k]
  ------------------
  268|    163|		case REF_TYPE_OTHER:
  ------------------
  |  Branch (268:3): [True: 158, False: 1.13k]
  ------------------
  269|    163|			break;
  270|  1.29k|		}
  271|  1.29k|	}
  272|  1.35k|	intern->ptr = NULL;
  273|  1.35k|	zval_ptr_dtor(&intern->obj);
  274|  1.35k|	zend_object_std_dtor(object);
  275|  1.35k|}
php_reflection.c:reflection_get_gc:
  279|    226|{
  280|       |	reflection_object *intern = reflection_object_from_obj(obj);
  ------------------
  |  |  177|    226|#define reflection_object_from_obj(obj) ZEND_CONTAINER_OF(obj, reflection_object, zo)
  |  |  ------------------
  |  |  |  |  407|    226|	_Generic( \
  |  |  |  |  408|    226|		(ptr), \
  |  |  |  |  409|    226|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|    226|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|    226|	)
  |  |  ------------------
  ------------------
  281|    226|	*gc_data = &intern->obj;
  282|    226|	*gc_data_count = 1;
  283|    226|	return zend_std_get_properties(obj);
  284|    226|}
php_reflection.c:reflection_objects_new:
  288|  1.35k|{
  289|  1.35k|	reflection_object *intern = zend_object_alloc(sizeof(reflection_object), class_type);
  290|       |
  291|  1.35k|	zend_object_std_init(&intern->zo, class_type);
  292|  1.35k|	object_properties_init(&intern->zo, class_type);
  293|  1.35k|	return &intern->zo;
  294|  1.35k|}

php_reflection.c:register_class_ReflectionException:
 1390|      2|{
 1391|      2|	zend_class_entry ce, *class_entry;
 1392|       |
 1393|      2|	INIT_CLASS_ENTRY(ce, "ReflectionException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1394|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
 1395|       |
 1396|      2|	return class_entry;
 1397|      2|}
php_reflection.c:register_class_Reflection:
 1400|      2|{
 1401|      2|	zend_class_entry ce, *class_entry;
 1402|       |
 1403|      2|	INIT_CLASS_ENTRY(ce, "Reflection", class_Reflection_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1404|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
 1405|       |
 1406|      2|	return class_entry;
 1407|      2|}
php_reflection.c:register_class_Reflector:
 1410|      2|{
 1411|      2|	zend_class_entry ce, *class_entry;
 1412|       |
 1413|      2|	INIT_CLASS_ENTRY(ce, "Reflector", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1414|      2|	class_entry = zend_register_internal_interface(&ce);
 1415|      2|	zend_class_implements(class_entry, 1, class_entry_Stringable);
 1416|       |
 1417|      2|	return class_entry;
 1418|      2|}
php_reflection.c:register_class_ReflectionFunctionAbstract:
 1421|      2|{
 1422|      2|	zend_class_entry ce, *class_entry;
 1423|       |
 1424|      2|	INIT_CLASS_ENTRY(ce, "ReflectionFunctionAbstract", class_ReflectionFunctionAbstract_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1425|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_ABSTRACT|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  233|      2|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_ABSTRACT|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1426|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1427|       |
 1428|      2|	zval property_name_default_value;
 1429|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1430|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1431|       |
 1432|      2|	return class_entry;
 1433|      2|}
php_reflection.c:register_class_ReflectionFunction:
 1436|      2|{
 1437|      2|	zend_class_entry ce, *class_entry;
 1438|       |
 1439|      2|	INIT_CLASS_ENTRY(ce, "ReflectionFunction", class_ReflectionFunction_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1440|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionFunctionAbstract, 0);
 1441|       |
 1442|      2|	zval const_IS_DEPRECATED_value;
 1443|      2|	ZVAL_LONG(&const_IS_DEPRECATED_value, ZEND_ACC_DEPRECATED);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1444|      2|	zend_string *const_IS_DEPRECATED_name = zend_string_init_interned("IS_DEPRECATED", sizeof("IS_DEPRECATED") - 1, true);
 1445|      2|	zend_declare_typed_class_constant(class_entry, const_IS_DEPRECATED_name, &const_IS_DEPRECATED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_DEPRECATED_name, &const_IS_DEPRECATED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1446|      2|	zend_string_release_ex(const_IS_DEPRECATED_name, true);
 1447|       |
 1448|       |
 1449|      2|	zend_attribute *attribute_Deprecated_func_isdisabled_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "isdisabled", sizeof("isdisabled") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1450|      2|	ZVAL_STR(&attribute_Deprecated_func_isdisabled_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_0));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1451|      2|	attribute_Deprecated_func_isdisabled_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1452|      2|	zend_string *attribute_Deprecated_func_isdisabled_0_arg1_str = zend_string_init("as ReflectionFunction can no longer be constructed for disabled functions", strlen("as ReflectionFunction can no longer be constructed for disabled functions"), 1);
 1453|      2|	ZVAL_STR(&attribute_Deprecated_func_isdisabled_0->args[1].value, attribute_Deprecated_func_isdisabled_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1454|      2|	attribute_Deprecated_func_isdisabled_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1455|       |
 1456|      2|	return class_entry;
 1457|      2|}
php_reflection.c:register_class_ReflectionGenerator:
 1460|      2|{
 1461|      2|	zend_class_entry ce, *class_entry;
 1462|       |
 1463|      2|	INIT_CLASS_ENTRY(ce, "ReflectionGenerator", class_ReflectionGenerator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1464|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1465|       |
 1466|      2|	return class_entry;
 1467|      2|}
php_reflection.c:register_class_ReflectionParameter:
 1736|      2|{
 1737|      2|	zend_class_entry ce, *class_entry;
 1738|       |
 1739|      2|	INIT_CLASS_ENTRY(ce, "ReflectionParameter", class_ReflectionParameter_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1740|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1741|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1742|       |
 1743|      2|	zval property_name_default_value;
 1744|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1745|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1746|       |
 1747|       |
 1748|      2|	zend_attribute *attribute_Deprecated_func_getclass_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "getclass", sizeof("getclass") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1749|      2|	ZVAL_STR(&attribute_Deprecated_func_getclass_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_0));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1750|      2|	attribute_Deprecated_func_getclass_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1751|      2|	zend_string *attribute_Deprecated_func_getclass_0_arg1_str = zend_string_init("use ReflectionParameter::getType() instead", strlen("use ReflectionParameter::getType() instead"), 1);
 1752|      2|	ZVAL_STR(&attribute_Deprecated_func_getclass_0->args[1].value, attribute_Deprecated_func_getclass_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1753|      2|	attribute_Deprecated_func_getclass_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1754|       |
 1755|      2|	zend_attribute *attribute_Deprecated_func_isarray_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "isarray", sizeof("isarray") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1756|      2|	ZVAL_STR(&attribute_Deprecated_func_isarray_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_0));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1757|      2|	attribute_Deprecated_func_isarray_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1758|      2|	ZVAL_STR_COPY(&attribute_Deprecated_func_isarray_0->args[1].value, attribute_Deprecated_func_getclass_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1759|      2|	attribute_Deprecated_func_isarray_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1760|       |
 1761|      2|	zend_attribute *attribute_Deprecated_func_iscallable_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "iscallable", sizeof("iscallable") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1762|      2|	ZVAL_STR(&attribute_Deprecated_func_iscallable_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_0));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1763|      2|	attribute_Deprecated_func_iscallable_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1764|      2|	ZVAL_STR_COPY(&attribute_Deprecated_func_iscallable_0->args[1].value, attribute_Deprecated_func_getclass_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1765|      2|	attribute_Deprecated_func_iscallable_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1766|       |
 1767|      2|	return class_entry;
 1768|      2|}
php_reflection.c:register_class_ReflectionType:
 1771|      2|{
 1772|      2|	zend_class_entry ce, *class_entry;
 1773|       |
 1774|      2|	INIT_CLASS_ENTRY(ce, "ReflectionType", class_ReflectionType_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1775|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_ABSTRACT|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  233|      2|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_ABSTRACT|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1776|      2|	zend_class_implements(class_entry, 1, class_entry_Stringable);
 1777|       |
 1778|      2|	return class_entry;
 1779|      2|}
php_reflection.c:register_class_ReflectionNamedType:
 1782|      2|{
 1783|      2|	zend_class_entry ce, *class_entry;
 1784|       |
 1785|      2|	INIT_CLASS_ENTRY(ce, "ReflectionNamedType", class_ReflectionNamedType_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1786|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionType, 0);
 1787|       |
 1788|      2|	return class_entry;
 1789|      2|}
php_reflection.c:register_class_ReflectionUnionType:
 1792|      2|{
 1793|      2|	zend_class_entry ce, *class_entry;
 1794|       |
 1795|      2|	INIT_CLASS_ENTRY(ce, "ReflectionUnionType", class_ReflectionUnionType_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1796|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionType, 0);
 1797|       |
 1798|      2|	return class_entry;
 1799|      2|}
php_reflection.c:register_class_ReflectionIntersectionType:
 1802|      2|{
 1803|      2|	zend_class_entry ce, *class_entry;
 1804|       |
 1805|      2|	INIT_CLASS_ENTRY(ce, "ReflectionIntersectionType", class_ReflectionIntersectionType_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1806|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionType, 0);
 1807|       |
 1808|      2|	return class_entry;
 1809|      2|}
php_reflection.c:register_class_ReflectionMethod:
 1470|      2|{
 1471|      2|	zend_class_entry ce, *class_entry;
 1472|       |
 1473|      2|	INIT_CLASS_ENTRY(ce, "ReflectionMethod", class_ReflectionMethod_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1474|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionFunctionAbstract, 0);
 1475|       |
 1476|      2|	zval const_IS_STATIC_value;
 1477|      2|	ZVAL_LONG(&const_IS_STATIC_value, ZEND_ACC_STATIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1478|      2|	zend_string *const_IS_STATIC_name = zend_string_init_interned("IS_STATIC", sizeof("IS_STATIC") - 1, true);
 1479|      2|	zend_declare_typed_class_constant(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1480|      2|	zend_string_release_ex(const_IS_STATIC_name, true);
 1481|       |
 1482|      2|	zval const_IS_PUBLIC_value;
 1483|      2|	ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1484|      2|	zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, true);
 1485|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1486|      2|	zend_string_release_ex(const_IS_PUBLIC_name, true);
 1487|       |
 1488|      2|	zval const_IS_PROTECTED_value;
 1489|      2|	ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1490|      2|	zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, true);
 1491|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1492|      2|	zend_string_release_ex(const_IS_PROTECTED_name, true);
 1493|       |
 1494|      2|	zval const_IS_PRIVATE_value;
 1495|      2|	ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1496|      2|	zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, true);
 1497|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1498|      2|	zend_string_release_ex(const_IS_PRIVATE_name, true);
 1499|       |
 1500|      2|	zval const_IS_ABSTRACT_value;
 1501|      2|	ZVAL_LONG(&const_IS_ABSTRACT_value, ZEND_ACC_ABSTRACT);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1502|      2|	zend_string *const_IS_ABSTRACT_name = zend_string_init_interned("IS_ABSTRACT", sizeof("IS_ABSTRACT") - 1, true);
 1503|      2|	zend_declare_typed_class_constant(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1504|      2|	zend_string_release_ex(const_IS_ABSTRACT_name, true);
 1505|       |
 1506|      2|	zval const_IS_FINAL_value;
 1507|      2|	ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1508|      2|	zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, true);
 1509|      2|	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1510|      2|	zend_string_release_ex(const_IS_FINAL_name, true);
 1511|       |
 1512|      2|	zval property_class_default_value;
 1513|      2|	ZVAL_UNDEF(&property_class_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1514|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1515|       |
 1516|       |
 1517|      2|	zend_attribute *attribute_Deprecated_func_setaccessible_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setaccessible", sizeof("setaccessible") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1518|      2|	ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1519|      2|	attribute_Deprecated_func_setaccessible_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1520|      2|	zend_string *attribute_Deprecated_func_setaccessible_0_arg1_str = zend_string_init("as it has no effect since PHP 8.1", strlen("as it has no effect since PHP 8.1"), 1);
 1521|      2|	ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[1].value, attribute_Deprecated_func_setaccessible_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1522|      2|	attribute_Deprecated_func_setaccessible_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1523|       |
 1524|      2|	return class_entry;
 1525|      2|}
php_reflection.c:register_class_ReflectionClass:
 1528|      2|{
 1529|      2|	zend_class_entry ce, *class_entry;
 1530|       |
 1531|      2|	INIT_CLASS_ENTRY(ce, "ReflectionClass", class_ReflectionClass_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1532|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1533|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1534|       |
 1535|      2|	zval const_IS_IMPLICIT_ABSTRACT_value;
 1536|      2|	ZVAL_LONG(&const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1537|      2|	zend_string *const_IS_IMPLICIT_ABSTRACT_name = zend_string_init_interned("IS_IMPLICIT_ABSTRACT", sizeof("IS_IMPLICIT_ABSTRACT") - 1, true);
 1538|      2|	zend_declare_typed_class_constant(class_entry, const_IS_IMPLICIT_ABSTRACT_name, &const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_IMPLICIT_ABSTRACT_name, &const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1539|      2|	zend_string_release_ex(const_IS_IMPLICIT_ABSTRACT_name, true);
 1540|       |
 1541|      2|	zval const_IS_EXPLICIT_ABSTRACT_value;
 1542|      2|	ZVAL_LONG(&const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1543|      2|	zend_string *const_IS_EXPLICIT_ABSTRACT_name = zend_string_init_interned("IS_EXPLICIT_ABSTRACT", sizeof("IS_EXPLICIT_ABSTRACT") - 1, true);
 1544|      2|	zend_declare_typed_class_constant(class_entry, const_IS_EXPLICIT_ABSTRACT_name, &const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_EXPLICIT_ABSTRACT_name, &const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1545|      2|	zend_string_release_ex(const_IS_EXPLICIT_ABSTRACT_name, true);
 1546|       |
 1547|      2|	zval const_IS_FINAL_value;
 1548|      2|	ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1549|      2|	zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, true);
 1550|      2|	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1551|      2|	zend_string_release_ex(const_IS_FINAL_name, true);
 1552|       |
 1553|      2|	zval const_IS_READONLY_value;
 1554|      2|	ZVAL_LONG(&const_IS_READONLY_value, ZEND_ACC_READONLY_CLASS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1555|      2|	zend_string *const_IS_READONLY_name = zend_string_init_interned("IS_READONLY", sizeof("IS_READONLY") - 1, true);
 1556|      2|	zend_declare_typed_class_constant(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1557|      2|	zend_string_release_ex(const_IS_READONLY_name, true);
 1558|       |
 1559|      2|	zval const_SKIP_INITIALIZATION_ON_SERIALIZE_value;
 1560|      2|	ZVAL_LONG(&const_SKIP_INITIALIZATION_ON_SERIALIZE_value, ZEND_LAZY_OBJECT_SKIP_INITIALIZATION_ON_SERIALIZE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1561|      2|	zend_string *const_SKIP_INITIALIZATION_ON_SERIALIZE_name = zend_string_init_interned("SKIP_INITIALIZATION_ON_SERIALIZE", sizeof("SKIP_INITIALIZATION_ON_SERIALIZE") - 1, true);
 1562|      2|	zend_declare_typed_class_constant(class_entry, const_SKIP_INITIALIZATION_ON_SERIALIZE_name, &const_SKIP_INITIALIZATION_ON_SERIALIZE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_SKIP_INITIALIZATION_ON_SERIALIZE_name, &const_SKIP_INITIALIZATION_ON_SERIALIZE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1563|      2|	zend_string_release_ex(const_SKIP_INITIALIZATION_ON_SERIALIZE_name, true);
 1564|       |
 1565|      2|	zval const_SKIP_DESTRUCTOR_value;
 1566|      2|	ZVAL_LONG(&const_SKIP_DESTRUCTOR_value, ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1567|      2|	zend_string *const_SKIP_DESTRUCTOR_name = zend_string_init_interned("SKIP_DESTRUCTOR", sizeof("SKIP_DESTRUCTOR") - 1, true);
 1568|      2|	zend_declare_typed_class_constant(class_entry, const_SKIP_DESTRUCTOR_name, &const_SKIP_DESTRUCTOR_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_SKIP_DESTRUCTOR_name, &const_SKIP_DESTRUCTOR_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1569|      2|	zend_string_release_ex(const_SKIP_DESTRUCTOR_name, true);
 1570|       |
 1571|      2|	zval property_name_default_value;
 1572|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1573|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1574|       |
 1575|      2|	return class_entry;
 1576|      2|}
php_reflection.c:register_class_ReflectionObject:
 1579|      2|{
 1580|      2|	zend_class_entry ce, *class_entry;
 1581|       |
 1582|      2|	INIT_CLASS_ENTRY(ce, "ReflectionObject", class_ReflectionObject_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1583|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionClass, 0);
 1584|       |
 1585|      2|	return class_entry;
 1586|      2|}
php_reflection.c:register_class_ReflectionProperty:
 1606|      2|{
 1607|      2|	zend_class_entry ce, *class_entry;
 1608|       |
 1609|      2|	INIT_CLASS_ENTRY(ce, "ReflectionProperty", class_ReflectionProperty_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1610|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1611|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1612|       |
 1613|      2|	zval const_IS_STATIC_value;
 1614|      2|	ZVAL_LONG(&const_IS_STATIC_value, ZEND_ACC_STATIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1615|      2|	zend_string *const_IS_STATIC_name = zend_string_init_interned("IS_STATIC", sizeof("IS_STATIC") - 1, true);
 1616|      2|	zend_declare_typed_class_constant(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1617|      2|	zend_string_release_ex(const_IS_STATIC_name, true);
 1618|       |
 1619|      2|	zval const_IS_READONLY_value;
 1620|      2|	ZVAL_LONG(&const_IS_READONLY_value, ZEND_ACC_READONLY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1621|      2|	zend_string *const_IS_READONLY_name = zend_string_init_interned("IS_READONLY", sizeof("IS_READONLY") - 1, true);
 1622|      2|	zend_declare_typed_class_constant(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1623|      2|	zend_string_release_ex(const_IS_READONLY_name, true);
 1624|       |
 1625|      2|	zval const_IS_PUBLIC_value;
 1626|      2|	ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1627|      2|	zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, true);
 1628|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1629|      2|	zend_string_release_ex(const_IS_PUBLIC_name, true);
 1630|       |
 1631|      2|	zval const_IS_PROTECTED_value;
 1632|      2|	ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1633|      2|	zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, true);
 1634|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1635|      2|	zend_string_release_ex(const_IS_PROTECTED_name, true);
 1636|       |
 1637|      2|	zval const_IS_PRIVATE_value;
 1638|      2|	ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1639|      2|	zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, true);
 1640|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1641|      2|	zend_string_release_ex(const_IS_PRIVATE_name, true);
 1642|       |
 1643|      2|	zval const_IS_ABSTRACT_value;
 1644|      2|	ZVAL_LONG(&const_IS_ABSTRACT_value, ZEND_ACC_ABSTRACT);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1645|      2|	zend_string *const_IS_ABSTRACT_name = zend_string_init_interned("IS_ABSTRACT", sizeof("IS_ABSTRACT") - 1, true);
 1646|      2|	zend_declare_typed_class_constant(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1647|      2|	zend_string_release_ex(const_IS_ABSTRACT_name, true);
 1648|       |
 1649|      2|	zval const_IS_PROTECTED_SET_value;
 1650|      2|	ZVAL_LONG(&const_IS_PROTECTED_SET_value, ZEND_ACC_PROTECTED_SET);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1651|      2|	zend_string *const_IS_PROTECTED_SET_name = zend_string_init_interned("IS_PROTECTED_SET", sizeof("IS_PROTECTED_SET") - 1, true);
 1652|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_SET_name, &const_IS_PROTECTED_SET_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_SET_name, &const_IS_PROTECTED_SET_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1653|      2|	zend_string_release_ex(const_IS_PROTECTED_SET_name, true);
 1654|       |
 1655|      2|	zval const_IS_PRIVATE_SET_value;
 1656|      2|	ZVAL_LONG(&const_IS_PRIVATE_SET_value, ZEND_ACC_PRIVATE_SET);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1657|      2|	zend_string *const_IS_PRIVATE_SET_name = zend_string_init_interned("IS_PRIVATE_SET", sizeof("IS_PRIVATE_SET") - 1, true);
 1658|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_SET_name, &const_IS_PRIVATE_SET_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_SET_name, &const_IS_PRIVATE_SET_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1659|      2|	zend_string_release_ex(const_IS_PRIVATE_SET_name, true);
 1660|       |
 1661|      2|	zval const_IS_VIRTUAL_value;
 1662|      2|	ZVAL_LONG(&const_IS_VIRTUAL_value, ZEND_ACC_VIRTUAL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1663|      2|	zend_string *const_IS_VIRTUAL_name = zend_string_init_interned("IS_VIRTUAL", sizeof("IS_VIRTUAL") - 1, true);
 1664|      2|	zend_declare_typed_class_constant(class_entry, const_IS_VIRTUAL_name, &const_IS_VIRTUAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_VIRTUAL_name, &const_IS_VIRTUAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1665|      2|	zend_string_release_ex(const_IS_VIRTUAL_name, true);
 1666|       |
 1667|      2|	zval const_IS_FINAL_value;
 1668|      2|	ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1669|      2|	zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, true);
 1670|      2|	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1671|      2|	zend_string_release_ex(const_IS_FINAL_name, true);
 1672|       |
 1673|      2|	zval property_name_default_value;
 1674|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1675|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1676|       |
 1677|      2|	zval property_class_default_value;
 1678|      2|	ZVAL_UNDEF(&property_class_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1679|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1680|       |
 1681|       |
 1682|      2|	zend_attribute *attribute_Deprecated_func_setaccessible_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setaccessible", sizeof("setaccessible") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 1683|      2|	ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1684|      2|	attribute_Deprecated_func_setaccessible_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 1685|      2|	zend_string *attribute_Deprecated_func_setaccessible_0_arg1_str = zend_string_init("as it has no effect since PHP 8.1", strlen("as it has no effect since PHP 8.1"), 1);
 1686|      2|	ZVAL_STR(&attribute_Deprecated_func_setaccessible_0->args[1].value, attribute_Deprecated_func_setaccessible_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1687|      2|	attribute_Deprecated_func_setaccessible_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 1688|       |
 1689|      2|	return class_entry;
 1690|      2|}
php_reflection.c:register_class_ReflectionClassConstant:
 1693|      2|{
 1694|      2|	zend_class_entry ce, *class_entry;
 1695|       |
 1696|      2|	INIT_CLASS_ENTRY(ce, "ReflectionClassConstant", class_ReflectionClassConstant_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1697|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1698|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1699|       |
 1700|      2|	zval const_IS_PUBLIC_value;
 1701|      2|	ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1702|      2|	zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, true);
 1703|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1704|      2|	zend_string_release_ex(const_IS_PUBLIC_name, true);
 1705|       |
 1706|      2|	zval const_IS_PROTECTED_value;
 1707|      2|	ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1708|      2|	zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, true);
 1709|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1710|      2|	zend_string_release_ex(const_IS_PROTECTED_name, true);
 1711|       |
 1712|      2|	zval const_IS_PRIVATE_value;
 1713|      2|	ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1714|      2|	zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, true);
 1715|      2|	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1716|      2|	zend_string_release_ex(const_IS_PRIVATE_name, true);
 1717|       |
 1718|      2|	zval const_IS_FINAL_value;
 1719|      2|	ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1720|      2|	zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, true);
 1721|      2|	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1722|      2|	zend_string_release_ex(const_IS_FINAL_name, true);
 1723|       |
 1724|      2|	zval property_name_default_value;
 1725|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1726|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1727|       |
 1728|      2|	zval property_class_default_value;
 1729|      2|	ZVAL_UNDEF(&property_class_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1730|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CLASS), &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1731|       |
 1732|      2|	return class_entry;
 1733|      2|}
php_reflection.c:register_class_ReflectionExtension:
 1812|      2|{
 1813|      2|	zend_class_entry ce, *class_entry;
 1814|       |
 1815|      2|	INIT_CLASS_ENTRY(ce, "ReflectionExtension", class_ReflectionExtension_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1816|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1817|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1818|       |
 1819|      2|	zval property_name_default_value;
 1820|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1821|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1822|       |
 1823|      2|	return class_entry;
 1824|      2|}
php_reflection.c:register_class_ReflectionZendExtension:
 1827|      2|{
 1828|      2|	zend_class_entry ce, *class_entry;
 1829|       |
 1830|      2|	INIT_CLASS_ENTRY(ce, "ReflectionZendExtension", class_ReflectionZendExtension_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1831|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1832|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1833|       |
 1834|      2|	zval property_name_default_value;
 1835|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1836|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1837|       |
 1838|      2|	return class_entry;
 1839|      2|}
php_reflection.c:register_class_ReflectionReference:
 1842|      2|{
 1843|      2|	zend_class_entry ce, *class_entry;
 1844|       |
 1845|      2|	INIT_CLASS_ENTRY(ce, "ReflectionReference", class_ReflectionReference_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1846|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1847|       |
 1848|      2|	return class_entry;
 1849|      2|}
php_reflection.c:register_class_ReflectionAttribute:
 1852|      2|{
 1853|      2|	zend_class_entry ce, *class_entry;
 1854|       |
 1855|      2|	INIT_CLASS_ENTRY(ce, "ReflectionAttribute", class_ReflectionAttribute_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1856|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1857|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1858|       |
 1859|      2|	zval const_IS_INSTANCEOF_value;
 1860|      2|	ZVAL_LONG(&const_IS_INSTANCEOF_value, REFLECTION_ATTRIBUTE_IS_INSTANCEOF);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1861|      2|	zend_string *const_IS_INSTANCEOF_name = zend_string_init_interned("IS_INSTANCEOF", sizeof("IS_INSTANCEOF") - 1, true);
 1862|      2|	zend_declare_typed_class_constant(class_entry, const_IS_INSTANCEOF_name, &const_IS_INSTANCEOF_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IS_INSTANCEOF_name, &const_IS_INSTANCEOF_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1863|      2|	zend_string_release_ex(const_IS_INSTANCEOF_name, true);
 1864|       |
 1865|      2|	zval property_name_default_value;
 1866|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1867|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1868|       |
 1869|      2|	return class_entry;
 1870|      2|}
php_reflection.c:register_class_ReflectionEnum:
 1873|      2|{
 1874|      2|	zend_class_entry ce, *class_entry;
 1875|       |
 1876|      2|	INIT_CLASS_ENTRY(ce, "ReflectionEnum", class_ReflectionEnum_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1877|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionClass, 0);
 1878|       |
 1879|      2|	return class_entry;
 1880|      2|}
php_reflection.c:register_class_ReflectionEnumUnitCase:
 1883|      2|{
 1884|      2|	zend_class_entry ce, *class_entry;
 1885|       |
 1886|      2|	INIT_CLASS_ENTRY(ce, "ReflectionEnumUnitCase", class_ReflectionEnumUnitCase_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1887|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionClassConstant, 0);
 1888|       |
 1889|      2|	return class_entry;
 1890|      2|}
php_reflection.c:register_class_ReflectionEnumBackedCase:
 1893|      2|{
 1894|      2|	zend_class_entry ce, *class_entry;
 1895|       |
 1896|      2|	INIT_CLASS_ENTRY(ce, "ReflectionEnumBackedCase", class_ReflectionEnumBackedCase_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1897|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ReflectionEnumUnitCase, 0);
 1898|       |
 1899|      2|	return class_entry;
 1900|      2|}
php_reflection.c:register_class_ReflectionFiber:
 1903|      2|{
 1904|      2|	zend_class_entry ce, *class_entry;
 1905|       |
 1906|      2|	INIT_CLASS_ENTRY(ce, "ReflectionFiber", class_ReflectionFiber_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1907|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1908|       |
 1909|      2|	return class_entry;
 1910|      2|}
php_reflection.c:register_class_ReflectionConstant:
 1913|      2|{
 1914|      2|	zend_class_entry ce, *class_entry;
 1915|       |
 1916|      2|	INIT_CLASS_ENTRY(ce, "ReflectionConstant", class_ReflectionConstant_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 1917|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
 1918|      2|	zend_class_implements(class_entry, 1, class_entry_Reflector);
 1919|       |
 1920|      2|	zval property_name_default_value;
 1921|      2|	ZVAL_UNDEF(&property_name_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1922|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
 1923|       |
 1924|      2|	return class_entry;
 1925|      2|}
php_reflection.c:register_class_PropertyHookType:
 1589|      2|{
 1590|      2|	zend_class_entry *class_entry = zend_register_internal_enum("PropertyHookType", IS_STRING, NULL);
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
 1591|       |
 1592|      2|	zval enum_case_Get_value;
 1593|      2|	zend_string *enum_case_Get_value_str = zend_string_init("get", strlen("get"), 1);
 1594|      2|	ZVAL_STR(&enum_case_Get_value, enum_case_Get_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1595|      2|	zend_enum_add_case_cstr(class_entry, "Get", &enum_case_Get_value);
 1596|       |
 1597|      2|	zval enum_case_Set_value;
 1598|      2|	zend_string *enum_case_Set_value_str = zend_string_init("set", strlen("set"), 1);
 1599|      2|	ZVAL_STR(&enum_case_Set_value, enum_case_Set_value_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1600|      2|	zend_enum_add_case_cstr(class_entry, "Set", &enum_case_Set_value);
 1601|       |
 1602|      2|	return class_entry;
 1603|      2|}

zif_spl_autoload_register:
  394|     12|{
  395|     12|	bool do_throw = 1;
  396|     12|	bool prepend  = 0;
  397|     12|	zend_fcall_info fci = {0};
  398|     12|	zend_fcall_info_cache fcc;
  399|       |
  400|     36|	ZEND_PARSE_PARAMETERS_START(0, 3)
  ------------------
  |  | 1629|     12|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     12|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     12|		const int _flags = (flags); \
  |  |  |  | 1599|     12|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     12|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     12|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     12|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     12|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     12|		uint32_t _i = 0; \
  |  |  |  | 1603|     12|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     12|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     12|		char *_error = NULL; \
  |  |  |  | 1606|     12|		bool _dummy = 0; \
  |  |  |  | 1607|     12|		bool _optional = 0; \
  |  |  |  | 1608|     12|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     12|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     12|		((void)_i); \
  |  |  |  | 1610|     12|		((void)_real_arg); \
  |  |  |  | 1611|     12|		((void)_arg); \
  |  |  |  | 1612|     12|		((void)_expected_type); \
  |  |  |  | 1613|     12|		((void)_error); \
  |  |  |  | 1614|     12|		((void)_optional); \
  |  |  |  | 1615|     12|		((void)_dummy); \
  |  |  |  | 1616|     12|		\
  |  |  |  | 1617|     12|		do { \
  |  |  |  | 1618|     12|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     24|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     12|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     12|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     12|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     12|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     12|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  401|     36|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     12|	_optional = 1;
  ------------------
  402|     48|		Z_PARAM_FUNC_OR_NULL(fci, fcc)
  ------------------
  |  | 1839|     12|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 1, 0, true)
  |  |  ------------------
  |  |  |  | 1819|     12|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     12|	++_i; \
  |  |  |  |  |  | 1654|     12|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     12|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     12|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 12, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     12|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     12|	} \
  |  |  |  |  |  | 1659|     12|	_real_arg++; \
  |  |  |  |  |  | 1660|     12|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     12|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     12|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|     12|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (402:3): [True: 12, False: 0]
  |  Branch (402:3): [True: 0, False: 0]
  |  Branch (402:3): [True: 0, False: 12]
  |  Branch (402:3): [True: 12, False: 0]
  |  Branch (402:3): [True: 12, False: 0]
  |  Branch (402:3): [True: 0, False: 0]
  |  Branch (402:3): [True: 12, False: 0]
  |  Branch (402:3): [True: 0, False: 0]
  |  Branch (402:3): [True: 0, False: 0]
  |  Branch (402:3): [True: 0, False: 0]
  ------------------
  403|     36|		Z_PARAM_BOOL(do_throw)
  ------------------
  |  | 1735|     12|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     12|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     12|	++_i; \
  |  |  |  |  |  | 1654|     12|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     12|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     12|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     12|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 12, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     12|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 12, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     12|	} \
  |  |  |  |  |  | 1659|     12|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (403:3): [True: 12, False: 0]
  |  Branch (403:3): [True: 0, False: 0]
  |  Branch (403:3): [True: 0, False: 12]
  |  Branch (403:3): [True: 12, False: 0]
  |  Branch (403:3): [True: 12, False: 0]
  |  Branch (403:3): [True: 0, False: 0]
  |  Branch (403:3): [True: 12, False: 0]
  |  Branch (403:3): [True: 0, False: 0]
  |  Branch (403:3): [True: 0, False: 0]
  |  Branch (403:3): [True: 0, False: 0]
  ------------------
  404|      0|		Z_PARAM_BOOL(prepend)
  ------------------
  |  | 1735|      0|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  |  Branch (404:3): [True: 0, False: 0]
  ------------------
  405|     12|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     12|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (405:2): [True: 0, False: 0]
  |  Branch (405:2): [True: 0, False: 0]
  |  Branch (405:2): [True: 0, False: 0]
  |  Branch (405:2): [True: 0, False: 0]
  ------------------
  406|       |
  407|     12|	if (!do_throw) {
  ------------------
  |  Branch (407:6): [True: 0, False: 12]
  ------------------
  408|      0|		php_error_docref(NULL, E_NOTICE, "Argument #2 ($do_throw) has been ignored, "
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
  409|      0|			"spl_autoload_register() will always throw");
  410|      0|	}
  411|       |
  412|       |	/* If first arg is not null */
  413|     12|	if (ZEND_FCI_INITIALIZED(fci)) {
  ------------------
  |  |  342|     12|#define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
  |  |  ------------------
  |  |  |  Branch (342:35): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  414|     12|		if (!ZEND_FCC_INITIALIZED(fcc)) {
  ------------------
  |  |  343|     12|#define ZEND_FCC_INITIALIZED(fcc) ((fcc).function_handler != NULL)
  ------------------
  |  Branch (414:7): [True: 0, False: 12]
  ------------------
  415|       |			/* Call trampoline has been cleared by zpp. Refetch it, because we want to deal
  416|       |			 * with it ourselves. It is important that it is not refetched on every call,
  417|       |			 * because calls may occur from different scopes. */
  418|      0|			zend_is_callable_ex(&fci.function_name, NULL, IS_CALLABLE_SUPPRESS_DEPRECATIONS, NULL, &fcc, NULL);
  ------------------
  |  |  413|      0|#define IS_CALLABLE_SUPPRESS_DEPRECATIONS (1<<1)
  ------------------
  419|      0|		}
  420|       |
  421|     12|		if (fcc.function_handler->type == ZEND_INTERNAL_FUNCTION &&
  ------------------
  |  Branch (421:7): [True: 0, False: 12]
  ------------------
  422|      0|			fcc.function_handler->internal_function.handler == zif_spl_autoload_call) {
  ------------------
  |  Branch (422:4): [True: 0, False: 0]
  ------------------
  423|      0|			zend_argument_value_error(1, "must not be the spl_autoload_call() function");
  424|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (424:4): [True: 0, False: 0]
  |  Branch (424:4): [True: 0, False: 0]
  ------------------
  425|      0|		}
  426|     12|	} else {
  427|      0|		memset(&fcc, 0, sizeof(fcc));
  428|      0|		fcc.function_handler = zend_hash_str_find_ptr(CG(function_table), ZEND_STRL("spl_autoload"));
  ------------------
  |  |   35|      0|# define CG(v) (compiler_globals.v)
  ------------------
              		fcc.function_handler = zend_hash_str_find_ptr(CG(function_table), ZEND_STRL("spl_autoload"));
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  429|      0|	}
  430|       |
  431|     12|	zend_autoload_register_class_loader(&fcc, prepend);
  432|       |
  433|     12|	RETURN_TRUE;
  ------------------
  |  | 1070|     12|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|     12|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|     12|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|     12|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|     12|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|     12|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  434|     12|} /* }}} */
zm_info_spl:
  516|      1|{
  517|      1|	zval list, *zv;
  518|      1|	char *strg;
  519|       |
  520|      1|	php_info_print_table_start();
  521|      1|	php_info_print_table_row(2, "SPL support", "enabled");
  522|       |
  523|      1|	array_init(&list);
  524|      1|	SPL_LIST_CLASSES(&list, false, true)
  ------------------
  |  |  194|      1|	SPL_ADD_CLASS(AppendIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  195|      1|	SPL_ADD_CLASS(ArrayIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  196|      1|	SPL_ADD_CLASS(ArrayObject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      1|	SPL_ADD_CLASS(BadFunctionCallException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  198|      1|	SPL_ADD_CLASS(BadMethodCallException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  199|      1|	SPL_ADD_CLASS(CachingIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  200|      1|	SPL_ADD_CLASS(CallbackFilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  201|      1|	SPL_ADD_CLASS(DirectoryIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  202|      1|	SPL_ADD_CLASS(DomainException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  203|      1|	SPL_ADD_CLASS(EmptyIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  204|      1|	SPL_ADD_CLASS(FilesystemIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  205|      1|	SPL_ADD_CLASS(FilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  206|      1|	SPL_ADD_CLASS(GlobIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  207|      1|	SPL_ADD_CLASS(InfiniteIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  208|      1|	SPL_ADD_CLASS(InvalidArgumentException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  209|      1|	SPL_ADD_CLASS(IteratorIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  210|      1|	SPL_ADD_CLASS(LengthException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|      1|	SPL_ADD_CLASS(LimitIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|      1|	SPL_ADD_CLASS(LogicException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|      1|	SPL_ADD_CLASS(MultipleIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|      1|	SPL_ADD_CLASS(NoRewindIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|      1|	SPL_ADD_CLASS(OuterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|      1|	SPL_ADD_CLASS(OutOfBoundsException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|      1|	SPL_ADD_CLASS(OutOfRangeException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|      1|	SPL_ADD_CLASS(OverflowException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|      1|	SPL_ADD_CLASS(ParentIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|      1|	SPL_ADD_CLASS(RangeException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|      1|	SPL_ADD_CLASS(RecursiveArrayIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|      1|	SPL_ADD_CLASS(RecursiveCachingIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      1|	SPL_ADD_CLASS(RecursiveCallbackFilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|      1|	SPL_ADD_CLASS(RecursiveDirectoryIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|      1|	SPL_ADD_CLASS(RecursiveFilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  226|      1|	SPL_ADD_CLASS(RecursiveIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  227|      1|	SPL_ADD_CLASS(RecursiveIteratorIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  228|      1|	SPL_ADD_CLASS(RecursiveRegexIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  229|      1|	SPL_ADD_CLASS(RecursiveTreeIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  230|      1|	SPL_ADD_CLASS(RegexIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  231|      1|	SPL_ADD_CLASS(RuntimeException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  232|      1|	SPL_ADD_CLASS(SeekableIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      1|	SPL_ADD_CLASS(SplDoublyLinkedList, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  234|      1|	SPL_ADD_CLASS(SplFileInfo, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  235|      1|	SPL_ADD_CLASS(SplFileObject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  236|      1|	SPL_ADD_CLASS(SplFixedArray, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  237|      1|	SPL_ADD_CLASS(SplHeap, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  238|      1|	SPL_ADD_CLASS(SplMinHeap, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  239|      1|	SPL_ADD_CLASS(SplMaxHeap, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  240|      1|	SPL_ADD_CLASS(SplObjectStorage, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  241|      1|	SPL_ADD_CLASS(SplObserver, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  242|      1|	SPL_ADD_CLASS(SplPriorityQueue, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  243|      1|	SPL_ADD_CLASS(SplQueue, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  244|      1|	SPL_ADD_CLASS(SplStack, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  245|      1|	SPL_ADD_CLASS(SplSubject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|      1|	SPL_ADD_CLASS(SplTempFileObject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  247|      1|	SPL_ADD_CLASS(UnderflowException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  248|      1|	SPL_ADD_CLASS(UnexpectedValueException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  525|      1|	strg = estrdup("");
  ------------------
  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  526|     12|	ZEND_HASH_MAP_FOREACH_VAL(Z_ARRVAL_P(&list), zv) {
  ------------------
  |  | 1325|      5|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      6|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 5, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      5|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      5|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      5|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 5]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      5|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|      5|	_val = _z;
  ------------------
  |  Branch (526:2): [True: 0, False: 1]
  |  Branch (526:2): [True: 1, False: 0]
  ------------------
  527|     12|		spl_build_class_list_string(zv, &strg);
  528|     12|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      5|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  529|      1|	zend_array_destroy(Z_ARR(list));
  ------------------
  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  530|      1|	php_info_print_table_row(2, "Interfaces", strg + 2);
  531|      1|	efree(strg);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|       |
  533|      1|	array_init(&list);
  534|      1|	SPL_LIST_CLASSES(&list, true, false)
  ------------------
  |  |  194|      1|	SPL_ADD_CLASS(AppendIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  195|      1|	SPL_ADD_CLASS(ArrayIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  196|      1|	SPL_ADD_CLASS(ArrayObject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      1|	SPL_ADD_CLASS(BadFunctionCallException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  198|      1|	SPL_ADD_CLASS(BadMethodCallException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  199|      1|	SPL_ADD_CLASS(CachingIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  200|      1|	SPL_ADD_CLASS(CallbackFilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  201|      1|	SPL_ADD_CLASS(DirectoryIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  202|      1|	SPL_ADD_CLASS(DomainException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  203|      1|	SPL_ADD_CLASS(EmptyIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  204|      1|	SPL_ADD_CLASS(FilesystemIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  205|      1|	SPL_ADD_CLASS(FilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  206|      1|	SPL_ADD_CLASS(GlobIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  207|      1|	SPL_ADD_CLASS(InfiniteIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  208|      1|	SPL_ADD_CLASS(InvalidArgumentException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  209|      1|	SPL_ADD_CLASS(IteratorIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  210|      1|	SPL_ADD_CLASS(LengthException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|      1|	SPL_ADD_CLASS(LimitIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|      1|	SPL_ADD_CLASS(LogicException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|      1|	SPL_ADD_CLASS(MultipleIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|      1|	SPL_ADD_CLASS(NoRewindIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|      1|	SPL_ADD_CLASS(OuterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|      1|	SPL_ADD_CLASS(OutOfBoundsException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|      1|	SPL_ADD_CLASS(OutOfRangeException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|      1|	SPL_ADD_CLASS(OverflowException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|      1|	SPL_ADD_CLASS(ParentIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|      1|	SPL_ADD_CLASS(RangeException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|      1|	SPL_ADD_CLASS(RecursiveArrayIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|      1|	SPL_ADD_CLASS(RecursiveCachingIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      1|	SPL_ADD_CLASS(RecursiveCallbackFilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|      1|	SPL_ADD_CLASS(RecursiveDirectoryIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|      1|	SPL_ADD_CLASS(RecursiveFilterIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  226|      1|	SPL_ADD_CLASS(RecursiveIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  227|      1|	SPL_ADD_CLASS(RecursiveIteratorIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  228|      1|	SPL_ADD_CLASS(RecursiveRegexIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  229|      1|	SPL_ADD_CLASS(RecursiveTreeIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  230|      1|	SPL_ADD_CLASS(RegexIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  231|      1|	SPL_ADD_CLASS(RuntimeException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  232|      1|	SPL_ADD_CLASS(SeekableIterator, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      1|	SPL_ADD_CLASS(SplDoublyLinkedList, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  234|      1|	SPL_ADD_CLASS(SplFileInfo, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  235|      1|	SPL_ADD_CLASS(SplFileObject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  236|      1|	SPL_ADD_CLASS(SplFixedArray, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  237|      1|	SPL_ADD_CLASS(SplHeap, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  238|      1|	SPL_ADD_CLASS(SplMinHeap, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  239|      1|	SPL_ADD_CLASS(SplMaxHeap, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  240|      1|	SPL_ADD_CLASS(SplObjectStorage, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  241|      1|	SPL_ADD_CLASS(SplObserver, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  242|      1|	SPL_ADD_CLASS(SplPriorityQueue, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  243|      1|	SPL_ADD_CLASS(SplQueue, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  244|      1|	SPL_ADD_CLASS(SplStack, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  245|      1|	SPL_ADD_CLASS(SplSubject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|      1|	SPL_ADD_CLASS(SplTempFileObject, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  247|      1|	SPL_ADD_CLASS(UnderflowException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  248|      1|	SPL_ADD_CLASS(UnexpectedValueException, z_list, only_classes, only_interfaces); \
  |  |  ------------------
  |  |  |  |  191|      1|	spl_add_classes(Z_ARR_P(z_list), spl_ce_ ## class_name, only_classes, only_interfaces)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  535|      1|	strg = estrdup("");
  ------------------
  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  536|    102|	ZEND_HASH_MAP_FOREACH_VAL(Z_ARRVAL_P(&list), zv) {
  ------------------
  |  | 1325|     50|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     51|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 50, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     50|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     50|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     50|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 50]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     50|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     50|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 50]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1326|     50|	_val = _z;
  ------------------
  |  Branch (536:2): [True: 0, False: 1]
  |  Branch (536:2): [True: 1, False: 0]
  ------------------
  537|    102|		spl_build_class_list_string(zv, &strg);
  538|    102|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     50|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  539|      1|	zend_array_destroy(Z_ARR(list));
  ------------------
  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  540|      1|	php_info_print_table_row(2, "Classes", strg + 2);
  541|      1|	efree(strg);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  542|       |
  543|      1|	php_info_print_table_end();
  544|      1|}
zm_startup_spl:
  549|      2|{
  550|      2|	PHP_MINIT(spl_exceptions)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_exceptions)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  551|      2|	PHP_MINIT(spl_iterators)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_iterators)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  552|      2|	PHP_MINIT(spl_array)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_array)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  553|      2|	PHP_MINIT(spl_directory)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_directory)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  554|      2|	PHP_MINIT(spl_dllist)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_dllist)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  555|      2|	PHP_MINIT(spl_heap)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_heap)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  556|      2|	PHP_MINIT(spl_fixedarray)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_fixedarray)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  557|      2|	PHP_MINIT(spl_observer)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  ------------------
  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  ------------------
  ------------------
              	PHP_MINIT(spl_observer)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  558|       |
  559|      2|	return SUCCESS;
  560|      2|}
zm_activate_spl:
  564|  33.5k|{
  565|       |	spl_autoload_extensions = NULL;
  566|  33.5k|	return SUCCESS;
  567|  33.5k|} /* }}} */
zm_deactivate_spl:
  570|  33.5k|{
  571|  33.5k|	if (spl_autoload_extensions) {
  ------------------
  |  Branch (571:6): [True: 0, False: 33.5k]
  ------------------
  572|      0|		zend_string_release_ex(spl_autoload_extensions, 0);
  573|       |		spl_autoload_extensions = NULL;
  574|      0|	}
  575|  33.5k|	return SUCCESS;
  576|  33.5k|} /* }}} */
php_spl.c:spl_add_class_name:
   62|     55|{
   63|     55|	zval t;
   64|     55|	ZVAL_STR_COPY(&t, name);
  ------------------
  |  | 1112|     55|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|     55|		zval *__z = (z);								\
  |  | 1114|     55|		zend_string *__s = (s);							\
  |  | 1115|     55|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|     55|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     55|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|     55|		/* interned strings support */					\
  |  | 1117|     55|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 55, False: 0]
  |  |  ------------------
  |  | 1118|     55|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|     55|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     55|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|     55|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     55|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|     55|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|     55|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 55]
  |  |  ------------------
  ------------------
   65|     55|	zend_hash_add(list, name, &t);
   66|     55|}
php_spl.c:spl_add_classes:
   86|    110|{
   87|    110|	ZEND_ASSERT(pce);
  ------------------
  |  |  112|    110|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (87:2): [True: 0, False: 110]
  |  Branch (87:2): [True: 110, False: 0]
  ------------------
   88|    110|	ZEND_ASSERT(!(only_classes && only_interfaces) && "Cannot have both only classes and only interfaces be enabled");
  ------------------
  |  |  112|    110|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (88:2): [True: 0, False: 110]
  |  Branch (88:2): [True: 0, False: 0]
  |  Branch (88:2): [True: 0, False: 0]
  |  Branch (88:2): [True: 55, False: 55]
  |  Branch (88:2): [True: 0, False: 55]
  |  Branch (88:2): [True: 110, False: 0]
  ------------------
   89|    110|	if (
   90|    110|		(only_classes && (pce->ce_flags & ZEND_ACC_INTERFACE) == ZEND_ACC_INTERFACE)
  ------------------
  |  |  281|     55|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              		(only_classes && (pce->ce_flags & ZEND_ACC_INTERFACE) == ZEND_ACC_INTERFACE)
  ------------------
  |  |  281|     55|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (90:4): [True: 55, False: 55]
  |  Branch (90:20): [True: 5, False: 50]
  ------------------
   91|    105|		|| (only_interfaces && (pce->ce_flags & ZEND_ACC_INTERFACE) == 0)
  ------------------
  |  |  281|     55|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
  |  Branch (91:7): [True: 55, False: 50]
  |  Branch (91:26): [True: 50, False: 5]
  ------------------
   92|    110|	) {
   93|     55|		return;
   94|     55|	}
   95|     55|	spl_add_class_name(list, pce->name);
   96|     55|}
php_spl.c:spl_build_class_list_string:
  506|     55|{
  507|     55|	char *res;
  508|       |
  509|     55|	spprintf(&res, 0, "%s, %s", *list, Z_STRVAL_P(entry));
  ------------------
  |  |   27|     55|#define spprintf zend_spprintf
  ------------------
              	spprintf(&res, 0, "%s, %s", *list, Z_STRVAL_P(entry));
  ------------------
  |  |  985|     55|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     55|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     55|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  510|       |	efree(*list);
  ------------------
  |  |  154|     55|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     55|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     55|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     55|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     55|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     55|	*list = res;
  512|     55|} /* }}} */

zim_ArrayObject_offsetGet:
  654|      3|{
  655|      3|	zval *value, *index;
  656|      3|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &index) == FAILURE) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (656:6): [True: 0, False: 3]
  ------------------
  657|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (657:3): [True: 0, False: 0]
  |  Branch (657:3): [True: 0, False: 0]
  ------------------
  658|      0|	}
  659|      3|	value = spl_array_read_dimension_ex(0, Z_OBJ_P(ZEND_THIS), index, BP_VAR_R, return_value);
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	value = spl_array_read_dimension_ex(0, Z_OBJ_P(ZEND_THIS), index, BP_VAR_R, return_value);
  ------------------
  |  | 1074|      3|#define BP_VAR_R			0
  ------------------
  660|      3|	if (value != return_value) {
  ------------------
  |  Branch (660:6): [True: 3, False: 0]
  ------------------
  661|      3|		RETURN_COPY_DEREF(value);
  ------------------
  |  | 1067|      3|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      3|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      3|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      3|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      3|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      3|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      3|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      3|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      3|	do {												\
  |  |  |  |  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  662|      3|	}
  663|      3|} /* }}} */
zim_ArrayObject_offsetUnset:
  700|      1|{
  701|      1|	zval *index;
  702|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &index) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (702:6): [True: 0, False: 1]
  ------------------
  703|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (703:3): [True: 0, False: 0]
  |  Branch (703:3): [True: 0, False: 0]
  ------------------
  704|      0|	}
  705|      1|	spl_array_unset_dimension_ex(0, Z_OBJ_P(ZEND_THIS), index);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  706|      1|} /* }}} */
zim_ArrayObject___construct:
  988|     10|{
  989|     10|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|     10|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     10|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  990|     10|	spl_array_object *intern;
  991|     10|	zval *array;
  992|     10|	zend_long ar_flags = 0;
  993|     10|	zend_class_entry *ce_get_iterator = spl_ce_ArrayIterator;
  994|       |
  995|     10|	if (ZEND_NUM_ARGS() == 0) {
  ------------------
  |  |  529|     10|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     10|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     10|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (995:6): [True: 6, False: 4]
  ------------------
  996|      6|		return; /* nothing to do */
  997|      6|	}
  998|       |
  999|      4|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|AlC", &array, &ar_flags, &ce_get_iterator) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (999:6): [True: 1, False: 3]
  ------------------
 1000|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1000:3): [True: 0, False: 1]
  |  Branch (1000:3): [True: 1, False: 0]
  ------------------
 1001|      1|	}
 1002|       |
 1003|      3|	intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|      3|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      3|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1004|       |
 1005|      3|	if (ZEND_NUM_ARGS() > 2) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1005:6): [True: 0, False: 3]
  ------------------
 1006|      0|		intern->ce_get_iterator = ce_get_iterator;
 1007|      0|	}
 1008|       |
 1009|      3|	ar_flags &= ~SPL_ARRAY_INT_MASK;
  ------------------
  |  |   25|      3|#define SPL_ARRAY_INT_MASK           0xFFFF0000
  ------------------
 1010|       |
 1011|      3|	spl_array_set_array(object, intern, array, ar_flags, ZEND_NUM_ARGS() == 1);
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1012|      3|}
zim_ArrayIterator___construct:
 1647|     15|{
 1648|     15|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|     15|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|     15|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1649|     15|	spl_array_object *intern;
 1650|     15|	zval *array;
 1651|     15|	zend_long ar_flags = 0;
 1652|       |
 1653|     15|	if (ZEND_NUM_ARGS() == 0) {
  ------------------
  |  |  529|     15|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     15|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     15|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1653:6): [True: 4, False: 11]
  ------------------
 1654|      4|		return; /* nothing to do */
 1655|      4|	}
 1656|       |
 1657|     11|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|Al", &array, &ar_flags) == FAILURE) {
  ------------------
  |  |  529|     11|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     11|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     11|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1657:6): [True: 1, False: 10]
  ------------------
 1658|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1658:3): [True: 0, False: 1]
  |  Branch (1658:3): [True: 1, False: 0]
  ------------------
 1659|      1|	}
 1660|       |
 1661|     10|	intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|     10|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|     10|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     10|	_Generic( \
  |  |  |  |  |  |  408|     10|		(ptr), \
  |  |  |  |  |  |  409|     10|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     10|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     10|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1662|       |
 1663|     10|	ar_flags &= ~SPL_ARRAY_INT_MASK;
  ------------------
  |  |   25|     10|#define SPL_ARRAY_INT_MASK           0xFFFF0000
  ------------------
 1664|       |
 1665|     10|	spl_array_set_array(object, intern, array, ar_flags, ZEND_NUM_ARGS() == 1);
  ------------------
  |  |  529|     10|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     10|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     10|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1666|     10|}
zim_ArrayIterator_rewind:
 1671|      4|{
 1672|      4|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      4|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1673|      4|	spl_array_object *intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|      4|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      4|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1674|       |
 1675|      4|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      4|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      4|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1676|       |
 1677|      4|	spl_array_rewind(intern);
 1678|      4|}
zim_ArrayIterator_seek:
 1683|      1|{
 1684|      1|	zend_long opos, position;
 1685|      1|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1686|      1|	spl_array_object *intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|      1|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      1|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1687|      1|	HashTable *aht = spl_array_get_hash_table(intern);
 1688|      1|	int result;
 1689|       |
 1690|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &position) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1690:6): [True: 0, False: 1]
  ------------------
 1691|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1691:3): [True: 0, False: 0]
  |  Branch (1691:3): [True: 0, False: 0]
  ------------------
 1692|      0|	}
 1693|       |
 1694|      1|	opos = position;
 1695|       |
 1696|      1|	if (position >= 0) { /* negative values are not supported */
  ------------------
  |  Branch (1696:6): [True: 1, False: 0]
  ------------------
 1697|      1|		spl_array_rewind(intern);
 1698|      1|		result = SUCCESS;
 1699|       |
 1700|      1|		while (position-- > 0 && (result = spl_array_next(intern)) == SUCCESS);
  ------------------
  |  Branch (1700:10): [True: 1, False: 0]
  |  Branch (1700:28): [True: 0, False: 1]
  ------------------
 1701|       |
 1702|      1|		if (result == SUCCESS && zend_hash_has_more_elements_ex(aht, spl_array_get_pos_ptr(aht, intern)) == SUCCESS) {
  ------------------
  |  Branch (1702:7): [True: 0, False: 1]
  |  Branch (1702:28): [True: 0, False: 0]
  ------------------
 1703|      0|			return; /* ok */
 1704|      0|		}
 1705|      1|	}
 1706|      1|	zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0, "Seek position " ZEND_LONG_FMT " is out of range", opos);
 1707|      1|} /* }}} */
zim_ArrayIterator_current:
 1711|      3|{
 1712|      3|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      3|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1713|      3|	spl_array_object *intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|      3|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      3|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1714|      3|	zval *entry;
 1715|      3|	HashTable *aht = spl_array_get_hash_table(intern);
 1716|       |
 1717|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1718|       |
 1719|      3|	if ((entry = zend_hash_get_current_data_ex(aht, spl_array_get_pos_ptr(aht, intern))) == NULL) {
  ------------------
  |  Branch (1719:6): [True: 0, False: 3]
  ------------------
 1720|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1721|      0|	}
 1722|      3|	if (Z_TYPE_P(entry) == IS_INDIRECT) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(entry) == IS_INDIRECT) {
  ------------------
  |  |  629|      3|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1722:6): [True: 0, False: 3]
  ------------------
 1723|      0|		entry = Z_INDIRECT_P(entry);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1724|      0|		if (Z_TYPE_P(entry) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(entry) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1724:7): [True: 0, False: 0]
  ------------------
 1725|      0|			RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1726|      0|		}
 1727|      0|	}
 1728|      3|	RETURN_COPY_DEREF(entry);
  ------------------
  |  | 1067|      3|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      3|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      3|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      3|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      3|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      3|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      3|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      3|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      3|	do {												\
  |  |  |  |  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1729|      3|}
zim_ArrayIterator_next:
 1751|      3|{
 1752|      3|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      3|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1753|      3|	spl_array_object *intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|      3|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      3|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1754|      3|	HashTable *aht = spl_array_get_hash_table(intern);
 1755|       |
 1756|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1757|       |
 1758|      3|	spl_array_next_ex(intern, aht);
 1759|      3|}
zim_ArrayIterator_valid:
 1764|      7|{
 1765|      7|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      7|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1766|      7|	spl_array_object *intern = Z_SPLARRAY_P(object);
  ------------------
  |  |   56|      7|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      7|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      7|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1767|      7|	HashTable *aht = spl_array_get_hash_table(intern);
 1768|       |
 1769|      7|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      7|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      7|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1770|       |
 1771|      7|	RETURN_BOOL(zend_hash_has_more_elements_ex(aht, spl_array_get_pos_ptr(aht, intern)) == SUCCESS);
  ------------------
  |  | 1046|      7|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      7|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      7|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      7|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      7|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     11|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 3, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1772|      7|}
zm_startup_spl_array:
 1840|      2|{
 1841|      2|	spl_ce_ArrayObject = register_class_ArrayObject(zend_ce_aggregate, zend_ce_arrayaccess, zend_ce_serializable, zend_ce_countable);
 1842|      2|	spl_ce_ArrayObject->create_object = spl_array_object_new;
 1843|      2|	spl_ce_ArrayObject->default_object_handlers = &spl_handler_ArrayObject;
 1844|       |
 1845|      2|	memcpy(&spl_handler_ArrayObject, &std_object_handlers, sizeof(zend_object_handlers));
 1846|       |
 1847|      2|	spl_handler_ArrayObject.offset = offsetof(spl_array_object, std);
 1848|       |
 1849|      2|	spl_handler_ArrayObject.clone_obj = spl_array_object_clone;
 1850|      2|	spl_handler_ArrayObject.read_dimension = spl_array_read_dimension;
 1851|      2|	spl_handler_ArrayObject.write_dimension = spl_array_write_dimension;
 1852|      2|	spl_handler_ArrayObject.unset_dimension = spl_array_unset_dimension;
 1853|      2|	spl_handler_ArrayObject.has_dimension = spl_array_has_dimension;
 1854|      2|	spl_handler_ArrayObject.count_elements = spl_array_object_count_elements;
 1855|       |
 1856|      2|	spl_handler_ArrayObject.get_properties_for = spl_array_get_properties_for;
 1857|      2|	spl_handler_ArrayObject.get_gc = spl_array_get_gc;
 1858|      2|	spl_handler_ArrayObject.read_property = spl_array_read_property;
 1859|      2|	spl_handler_ArrayObject.write_property = spl_array_write_property;
 1860|      2|	spl_handler_ArrayObject.get_property_ptr_ptr = spl_array_get_property_ptr_ptr;
 1861|      2|	spl_handler_ArrayObject.has_property = spl_array_has_property;
 1862|      2|	spl_handler_ArrayObject.unset_property = spl_array_unset_property;
 1863|       |
 1864|      2|	spl_handler_ArrayObject.compare = spl_array_compare_objects;
 1865|      2|	spl_handler_ArrayObject.free_obj = spl_array_object_free_storage;
 1866|       |
 1867|      2|	spl_ce_ArrayIterator = register_class_ArrayIterator(spl_ce_SeekableIterator, zend_ce_arrayaccess, zend_ce_serializable, zend_ce_countable);
 1868|      2|	spl_ce_ArrayIterator->create_object = spl_array_object_new;
 1869|      2|	spl_ce_ArrayIterator->default_object_handlers = &spl_handler_ArrayObject;
 1870|      2|	spl_ce_ArrayIterator->get_iterator = spl_array_get_iterator;
 1871|       |
 1872|      2|	spl_ce_RecursiveArrayIterator = register_class_RecursiveArrayIterator(spl_ce_ArrayIterator, spl_ce_RecursiveIterator);
 1873|      2|	spl_ce_RecursiveArrayIterator->create_object = spl_array_object_new;
 1874|      2|	spl_ce_RecursiveArrayIterator->get_iterator = spl_array_get_iterator;
 1875|       |
 1876|      2|	return SUCCESS;
 1877|      2|}
spl_array.c:get_hash_key:
  269|      9|{
  270|      9|	key->release_key = false;
  271|      9|try_again:
  272|      9|	switch (Z_TYPE_P(offset)) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  273|      0|	case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (273:2): [True: 0, False: 9]
  ------------------
  274|      0|		zend_error(E_DEPRECATED, "Using null as an array offset is deprecated, use an empty string instead");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  275|      0|		key->key = ZSTR_EMPTY_ALLOC();
  276|      0|		return SUCCESS;
  277|      1|	case IS_STRING:
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (277:2): [True: 1, False: 8]
  ------------------
  278|      1|		key->key = Z_STR_P(offset);
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  279|      1|		if (ZEND_HANDLE_NUMERIC(key->key, key->h)) {
  ------------------
  |  |  424|      1|	ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx)
  |  |  ------------------
  |  |  |  |  421|      1|	_zend_handle_numeric_str(key, length, &idx)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|      0|			key->key = NULL;
  281|      0|			break;
  282|      0|		}
  283|      1|		return SUCCESS;
  284|      0|	case IS_RESOURCE:
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (284:2): [True: 0, False: 9]
  ------------------
  285|      0|		zend_use_resource_as_offset(offset);
  286|      0|		key->key = NULL;
  287|      0|		key->h = Z_RES_P(offset)->handle;
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  288|      0|		break;
  289|      1|	case IS_DOUBLE:
  ------------------
  |  |  611|      1|#define IS_DOUBLE					5
  ------------------
  |  Branch (289:2): [True: 1, False: 8]
  ------------------
  290|      1|		key->key = NULL;
  291|      1|		key->h = zend_dval_to_lval_safe(Z_DVAL_P(offset));
  ------------------
  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  292|      1|		break;
  293|      0|	case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (293:2): [True: 0, False: 9]
  ------------------
  294|      0|		key->key = NULL;
  295|      0|		key->h = 0;
  296|      0|		break;
  297|      0|	case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (297:2): [True: 0, False: 9]
  ------------------
  298|      0|		key->key = NULL;
  299|      0|		key->h = 1;
  300|      0|		break;
  301|      7|	case IS_LONG:
  ------------------
  |  |  610|      7|#define IS_LONG						4
  ------------------
  |  Branch (301:2): [True: 7, False: 2]
  ------------------
  302|      7|		key->key = NULL;
  303|      7|		key->h = Z_LVAL_P(offset);
  ------------------
  |  |  976|      7|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      7|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  304|      7|		break;
  305|      0|	case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (305:2): [True: 0, False: 9]
  ------------------
  306|      0|		ZVAL_DEREF(offset);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  307|      0|		goto try_again;
  308|      0|	default:
  ------------------
  |  Branch (308:2): [True: 0, False: 9]
  ------------------
  309|      0|		return FAILURE;
  310|      9|	}
  311|       |
  312|      8|	if (spl_array_is_object(intern)) {
  ------------------
  |  Branch (312:6): [True: 0, False: 8]
  ------------------
  313|      0|		key->key = zend_long_to_str(key->h);
  314|       |		key->release_key = true;
  315|      0|	}
  316|      8|	return SUCCESS;
  317|      9|}
spl_array.c:spl_hash_key_release:
  260|      1|static void spl_hash_key_release(spl_hash_key *key) {
  261|      1|	if (key->release_key) {
  ------------------
  |  Branch (261:6): [True: 0, False: 1]
  ------------------
  262|      0|		zend_string_release_ex(key->key, 0);
  263|      0|	}
  264|      1|}
spl_array.c:spl_array_read_dimension_ex:
  411|      7|{
  412|      7|	spl_array_object *intern = spl_array_from_obj(object);
  ------------------
  |  |   54|      7|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      7|	)
  |  |  ------------------
  ------------------
  413|      7|	zval *ret;
  414|       |
  415|      7|	if (check_inherited &&
  ------------------
  |  Branch (415:6): [True: 4, False: 3]
  ------------------
  416|      4|			(intern->fptr_offset_get || (type == BP_VAR_IS && intern->fptr_offset_has))) {
  ------------------
  |  | 1077|      8|#define BP_VAR_IS			3
  ------------------
  |  Branch (416:5): [True: 0, False: 4]
  |  Branch (416:33): [True: 0, False: 4]
  |  Branch (416:54): [True: 0, False: 0]
  ------------------
  417|      0|		if (type == BP_VAR_IS) {
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (417:7): [True: 0, False: 0]
  ------------------
  418|      0|			if (!spl_array_has_dimension(object, offset, 0)) {
  ------------------
  |  Branch (418:8): [True: 0, False: 0]
  ------------------
  419|      0|				return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  420|      0|			}
  421|      0|		}
  422|       |
  423|      0|		if (intern->fptr_offset_get) {
  ------------------
  |  Branch (423:7): [True: 0, False: 0]
  ------------------
  424|      0|			zval tmp;
  425|      0|			if (!offset) {
  ------------------
  |  Branch (425:8): [True: 0, False: 0]
  ------------------
  426|      0|				ZVAL_UNDEF(&tmp);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  427|      0|				offset = &tmp;
  428|      0|			}
  429|      0|			zend_call_method_with_1_params(object, object->ce, &intern->fptr_offset_get, "offsetGet", rv, offset);
  430|       |
  431|      0|			if (!Z_ISUNDEF_P(rv)) {
  ------------------
  |  |  967|      0|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      0|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (431:8): [True: 0, False: 0]
  ------------------
  432|      0|				return rv;
  433|      0|			}
  434|      0|			return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  435|      0|		}
  436|      0|	}
  437|       |
  438|      7|	ret = spl_array_get_dimension_ptr(check_inherited, intern, object->ce->name, offset, type);
  439|       |
  440|       |	/* When in a write context,
  441|       |	 * ZE has to be fooled into thinking this is in a reference set
  442|       |	 * by separating (if necessary) and returning as IS_REFERENCE (with refcount == 1)
  443|       |	 */
  444|       |
  445|      7|	if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) &&
  ------------------
  |  | 1075|     14|#define BP_VAR_W			1
  ------------------
              	if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) &&
  ------------------
  |  | 1076|     14|#define BP_VAR_RW			2
  ------------------
              	if ((type == BP_VAR_W || type == BP_VAR_RW || type == BP_VAR_UNSET) &&
  ------------------
  |  | 1079|      7|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (445:7): [True: 0, False: 7]
  |  Branch (445:27): [True: 0, False: 7]
  |  Branch (445:48): [True: 0, False: 7]
  ------------------
  446|      7|	    !Z_ISREF_P(ret) &&
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      7|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (446:6): [True: 0, False: 0]
  ------------------
  447|      0|	    EXPECTED(ret != &EG(uninitialized_zval))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  448|      0|		ZVAL_NEW_REF(ret, ret);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  449|      0|	}
  450|       |
  451|      7|	return ret;
  452|      7|} /* }}} */
spl_array.c:spl_array_get_dimension_ptr:
  321|      7|{
  322|      7|	zval *retval;
  323|      7|	spl_hash_key key;
  324|      7|	HashTable *ht = spl_array_get_hash_table(intern);
  325|       |
  326|      7|	if (!offset || Z_ISUNDEF_P(offset) || !ht) {
  ------------------
  |  |  967|      7|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|     14|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      7|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (326:6): [True: 0, False: 7]
  |  Branch (326:40): [True: 0, False: 7]
  ------------------
  327|      0|		return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  328|      0|	}
  329|       |
  330|      7|	if ((type == BP_VAR_W || type == BP_VAR_RW) && intern->nApplyCount > 0) {
  ------------------
  |  | 1075|     14|#define BP_VAR_W			1
  ------------------
              	if ((type == BP_VAR_W || type == BP_VAR_RW) && intern->nApplyCount > 0) {
  ------------------
  |  | 1076|      7|#define BP_VAR_RW			2
  ------------------
  |  Branch (330:7): [True: 0, False: 7]
  |  Branch (330:27): [True: 0, False: 7]
  |  Branch (330:49): [True: 0, False: 0]
  ------------------
  331|      0|		zend_throw_error(NULL, "Modification of ArrayObject during sorting is prohibited");
  332|      0|		return &EG(error_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  333|      0|	}
  334|       |
  335|      7|	if (get_hash_key(&key, intern, offset) == FAILURE) {
  ------------------
  |  Branch (335:6): [True: 0, False: 7]
  ------------------
  336|      0|		zend_illegal_container_offset(ce_name, offset, type);
  337|      0|		return (type == BP_VAR_W || type == BP_VAR_RW) ?
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
              		return (type == BP_VAR_W || type == BP_VAR_RW) ?
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
  |  Branch (337:11): [True: 0, False: 0]
  |  Branch (337:31): [True: 0, False: 0]
  ------------------
  338|      0|			&EG(error_zval) : &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			&EG(error_zval) : &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  339|      0|	}
  340|       |
  341|      7|	if (key.key) {
  ------------------
  |  Branch (341:6): [True: 0, False: 7]
  ------------------
  342|      0|		retval = zend_hash_find(ht, key.key);
  343|      0|		if (retval) {
  ------------------
  |  Branch (343:7): [True: 0, False: 0]
  ------------------
  344|      0|			if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(retval) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (344:8): [True: 0, False: 0]
  ------------------
  345|      0|				retval = Z_INDIRECT_P(retval);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  346|      0|				if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(retval) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (346:9): [True: 0, False: 0]
  ------------------
  347|      0|					switch (type) {
  ------------------
  |  Branch (347:14): [True: 0, False: 0]
  ------------------
  348|      0|						case BP_VAR_R:
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
  |  Branch (348:7): [True: 0, False: 0]
  ------------------
  349|      0|							zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              							zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  350|      0|							ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  351|      0|						case BP_VAR_UNSET:
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (351:7): [True: 0, False: 0]
  ------------------
  352|      0|						case BP_VAR_IS:
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (352:7): [True: 0, False: 0]
  ------------------
  353|      0|							retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  354|      0|							break;
  355|      0|						case BP_VAR_RW:
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
  |  Branch (355:7): [True: 0, False: 0]
  ------------------
  356|      0|							zend_error(E_WARNING,"Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              							zend_error(E_WARNING,"Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  357|      0|							ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  358|      0|						case BP_VAR_W: {
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  |  Branch (358:7): [True: 0, False: 0]
  ------------------
  359|      0|							ZVAL_NULL(retval);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  360|      0|						}
  361|      0|					}
  362|      0|				}
  363|      0|			}
  364|      0|		} else {
  365|      0|			switch (type) {
  ------------------
  |  Branch (365:12): [True: 0, False: 0]
  ------------------
  366|      0|				case BP_VAR_R:
  ------------------
  |  | 1074|      0|#define BP_VAR_R			0
  ------------------
  |  Branch (366:5): [True: 0, False: 0]
  ------------------
  367|      0|					zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              					zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  368|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  369|      0|				case BP_VAR_UNSET:
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (369:5): [True: 0, False: 0]
  ------------------
  370|      0|				case BP_VAR_IS:
  ------------------
  |  | 1077|      0|#define BP_VAR_IS			3
  ------------------
  |  Branch (370:5): [True: 0, False: 0]
  ------------------
  371|      0|					retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  372|      0|					break;
  373|      0|				case BP_VAR_RW:
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
  |  Branch (373:5): [True: 0, False: 0]
  ------------------
  374|      0|					zend_error(E_WARNING,"Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              					zend_error(E_WARNING,"Undefined array key \"%s\"", ZSTR_VAL(key.key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  375|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  376|      0|				case BP_VAR_W: {
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  |  Branch (376:5): [True: 0, False: 0]
  ------------------
  377|      0|				    zval value;
  378|      0|					ZVAL_NULL(&value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  379|      0|				    retval = zend_hash_update(ht, key.key, &value);
  380|      0|				}
  381|      0|			}
  382|      0|		}
  383|      0|		spl_hash_key_release(&key);
  384|      7|	} else {
  385|      7|		if ((retval = zend_hash_index_find(ht, key.h)) == NULL) {
  ------------------
  |  Branch (385:7): [True: 3, False: 4]
  ------------------
  386|      3|			switch (type) {
  ------------------
  |  Branch (386:12): [True: 3, False: 0]
  ------------------
  387|      3|				case BP_VAR_R:
  ------------------
  |  | 1074|      3|#define BP_VAR_R			0
  ------------------
  |  Branch (387:5): [True: 3, False: 0]
  ------------------
  388|      3|					zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, key.h);
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
              					zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, key.h);
  ------------------
  |  |   54|      3|# define ZEND_LONG_FMT "%" PRId64
  ------------------
  389|      3|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      3|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  390|      3|				case BP_VAR_UNSET:
  ------------------
  |  | 1079|      3|#define BP_VAR_UNSET		5
  ------------------
  |  Branch (390:5): [True: 0, False: 3]
  ------------------
  391|      3|				case BP_VAR_IS:
  ------------------
  |  | 1077|      3|#define BP_VAR_IS			3
  ------------------
  |  Branch (391:5): [True: 0, False: 3]
  ------------------
  392|      3|					retval = &EG(uninitialized_zval);
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  393|      3|					break;
  394|      0|				case BP_VAR_RW:
  ------------------
  |  | 1076|      0|#define BP_VAR_RW			2
  ------------------
  |  Branch (394:5): [True: 0, False: 3]
  ------------------
  395|      0|					zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, key.h);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              					zend_error(E_WARNING, "Undefined array key " ZEND_LONG_FMT, key.h);
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
  396|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  397|      0|				case BP_VAR_W: {
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  |  Branch (397:5): [True: 0, False: 3]
  ------------------
  398|      0|				    zval value;
  399|      0|					ZVAL_NULL(&value);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  400|      0|					retval = zend_hash_index_update(ht, key.h, &value);
  401|      0|			   }
  402|      3|			}
  403|      3|		}
  404|      7|	}
  405|      7|	return retval;
  406|      7|} /* }}} */
spl_array.c:spl_array_write_dimension_ex:
  460|      1|{
  461|      1|	spl_array_object *intern = spl_array_from_obj(object);
  ------------------
  |  |   54|      1|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
  462|      1|	HashTable *ht;
  463|      1|	spl_hash_key key;
  464|       |
  465|      1|	if (check_inherited && intern->fptr_offset_set) {
  ------------------
  |  Branch (465:6): [True: 1, False: 0]
  |  Branch (465:25): [True: 0, False: 1]
  ------------------
  466|      0|		zval tmp;
  467|       |
  468|      0|		if (!offset) {
  ------------------
  |  Branch (468:7): [True: 0, False: 0]
  ------------------
  469|      0|			ZVAL_NULL(&tmp);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  470|      0|			offset = &tmp;
  471|      0|		}
  472|      0|		zend_call_method_with_2_params(object, object->ce, &intern->fptr_offset_set, "offsetSet", NULL, offset, value);
  473|      0|		return;
  474|      0|	}
  475|       |
  476|      1|	if (intern->nApplyCount > 0) {
  ------------------
  |  Branch (476:6): [True: 0, False: 1]
  ------------------
  477|      0|		zend_throw_error(NULL, "Modification of ArrayObject during sorting is prohibited");
  478|      0|		return;
  479|      0|	}
  480|       |
  481|      1|	Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      1|	zval *_pz = (pz);				\
  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  482|      1|	if (!offset || Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (!offset || Z_TYPE_P(offset) == IS_NULL) {
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (482:6): [True: 0, False: 1]
  |  Branch (482:17): [True: 0, False: 1]
  ------------------
  483|      0|		ht = spl_array_get_hash_table(intern);
  484|      0|		if (UNEXPECTED(ht == intern->sentinel_array)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  485|      0|			return;
  486|      0|		}
  487|      0|		zend_hash_next_index_insert(ht, value);
  488|      0|		return;
  489|      0|	}
  490|       |
  491|      1|	if (get_hash_key(&key, intern, offset) == FAILURE) {
  ------------------
  |  Branch (491:6): [True: 0, False: 1]
  ------------------
  492|      0|		zend_illegal_container_offset(object->ce->name, offset, BP_VAR_W);
  ------------------
  |  | 1075|      0|#define BP_VAR_W			1
  ------------------
  493|      0|		zval_ptr_dtor(value);
  494|      0|		return;
  495|      0|	}
  496|       |
  497|      1|	ht = spl_array_get_hash_table(intern);
  498|      1|	if (UNEXPECTED(ht == intern->sentinel_array)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  499|      0|		spl_hash_key_release(&key);
  500|      0|		return;
  501|      0|	}
  502|       |
  503|      1|	if (key.key) {
  ------------------
  |  Branch (503:6): [True: 0, False: 1]
  ------------------
  504|      0|		zend_hash_update_ind(ht, key.key, value);
  505|      0|		spl_hash_key_release(&key);
  506|      1|	} else {
  507|      1|		zend_hash_index_update(ht, key.h, value);
  508|      1|	}
  509|      1|} /* }}} */
spl_array.c:spl_array_is_object:
  103|     32|{
  104|     32|	while (intern->ar_flags & SPL_ARRAY_USE_OTHER) {
  ------------------
  |  |   24|     32|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  |  Branch (104:9): [True: 0, False: 32]
  ------------------
  105|      0|		intern = Z_SPLARRAY_P(&intern->array);
  ------------------
  |  |   56|      0|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      0|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|      0|	}
  107|     32|	return (intern->ar_flags & SPL_ARRAY_IS_SELF) || Z_TYPE(intern->array) == IS_OBJECT;
  ------------------
  |  |   23|     32|#define SPL_ARRAY_IS_SELF            0x01000000
  ------------------
              	return (intern->ar_flags & SPL_ARRAY_IS_SELF) || Z_TYPE(intern->array) == IS_OBJECT;
  ------------------
  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	return (intern->ar_flags & SPL_ARRAY_IS_SELF) || Z_TYPE(intern->array) == IS_OBJECT;
  ------------------
  |  |  614|     64|#define IS_OBJECT					8
  ------------------
  |  Branch (107:9): [True: 0, False: 32]
  |  Branch (107:51): [True: 0, False: 32]
  ------------------
  108|     32|}
spl_array.c:spl_array_write_dimension:
  512|      1|{
  513|      1|	spl_array_write_dimension_ex(1, object, offset, value);
  514|      1|} /* }}} */
spl_array.c:spl_array_unset_dimension_ex:
  517|      1|{
  518|      1|	HashTable *ht;
  519|      1|	spl_array_object *intern = spl_array_from_obj(object);
  ------------------
  |  |   54|      1|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
  520|      1|	spl_hash_key key;
  521|       |
  522|      1|	if (check_inherited && intern->fptr_offset_del) {
  ------------------
  |  Branch (522:6): [True: 0, False: 1]
  |  Branch (522:25): [True: 0, False: 0]
  ------------------
  523|      0|		zend_call_method_with_1_params(object, object->ce, &intern->fptr_offset_del, "offsetUnset", NULL, offset);
  524|      0|		return;
  525|      0|	}
  526|       |
  527|      1|	if (intern->nApplyCount > 0) {
  ------------------
  |  Branch (527:6): [True: 0, False: 1]
  ------------------
  528|      0|		zend_throw_error(NULL, "Modification of ArrayObject during sorting is prohibited");
  529|      0|		return;
  530|      0|	}
  531|       |
  532|      1|	if (get_hash_key(&key, intern, offset) == FAILURE) {
  ------------------
  |  Branch (532:6): [True: 0, False: 1]
  ------------------
  533|      0|		zend_illegal_container_offset(object->ce->name, offset, BP_VAR_UNSET);
  ------------------
  |  | 1079|      0|#define BP_VAR_UNSET		5
  ------------------
  534|      0|		return;
  535|      0|	}
  536|       |
  537|      1|	ht = spl_array_get_hash_table(intern);
  538|      1|	if (key.key) {
  ------------------
  |  Branch (538:6): [True: 1, False: 0]
  ------------------
  539|      1|		zval *data = zend_hash_find(ht, key.key);
  540|      1|		if (data) {
  ------------------
  |  Branch (540:7): [True: 0, False: 1]
  ------------------
  541|      0|			if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (541:8): [True: 0, False: 0]
  ------------------
  542|      0|				data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  543|      0|				if (Z_TYPE_P(data) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(data) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (543:9): [True: 0, False: 0]
  ------------------
  544|      0|					zval garbage;
  545|      0|					ZVAL_COPY_VALUE(&garbage, data);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  546|      0|					ZVAL_UNDEF(data);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  547|      0|					HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              					HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
  ------------------
  |  |   46|      0|#define HASH_FLAG_HAS_EMPTY_IND    (1<<5)
  ------------------
  548|      0|					zend_hash_move_forward_ex(ht, spl_array_get_pos_ptr(ht, intern));
  549|      0|					if (spl_array_is_object(intern)) {
  ------------------
  |  Branch (549:10): [True: 0, False: 0]
  ------------------
  550|      0|						spl_array_skip_protected(intern, ht);
  551|      0|					}
  552|      0|					zval_ptr_dtor(&garbage);
  553|      0|				}
  554|      0|			} else {
  555|      0|				zend_hash_del(ht, key.key);
  556|      0|			}
  557|      0|		}
  558|      1|		spl_hash_key_release(&key);
  559|      1|	} else {
  560|      0|		zend_hash_index_del(ht, key.h);
  561|      0|	}
  562|      1|} /* }}} */
spl_array.c:spl_array_skip_protected:
  891|     13|{
  892|     13|	zend_string *string_key;
  893|     13|	zend_ulong num_key;
  894|     13|	zval *data;
  895|       |
  896|     13|	if (spl_array_is_object(intern)) {
  ------------------
  |  Branch (896:6): [True: 0, False: 13]
  ------------------
  897|      0|		uint32_t *pos_ptr = spl_array_get_pos_ptr(aht, intern);
  898|       |
  899|      0|		do {
  900|      0|			if (zend_hash_get_current_key_ex(aht, &string_key, &num_key, pos_ptr) == HASH_KEY_IS_STRING) {
  ------------------
  |  Branch (900:8): [True: 0, False: 0]
  ------------------
  901|      0|				data = zend_hash_get_current_data_ex(aht, pos_ptr);
  902|      0|				if (data && Z_TYPE_P(data) == IS_INDIRECT &&
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (data && Z_TYPE_P(data) == IS_INDIRECT &&
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (902:9): [True: 0, False: 0]
  |  Branch (902:17): [True: 0, False: 0]
  ------------------
  903|      0|				    Z_TYPE_P(data = Z_INDIRECT_P(data)) == IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				    Z_TYPE_P(data = Z_INDIRECT_P(data)) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (903:9): [True: 0, False: 0]
  ------------------
  904|       |					/* skip */
  905|      0|				} else if (!ZSTR_LEN(string_key) || ZSTR_VAL(string_key)[0]) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              				} else if (!ZSTR_LEN(string_key) || ZSTR_VAL(string_key)[0]) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (905:16): [True: 0, False: 0]
  |  Branch (905:41): [True: 0, False: 0]
  ------------------
  906|      0|					return SUCCESS;
  907|      0|				}
  908|      0|			} else {
  909|      0|				return SUCCESS;
  910|      0|			}
  911|      0|			if (zend_hash_has_more_elements_ex(aht, pos_ptr) != SUCCESS) {
  ------------------
  |  Branch (911:8): [True: 0, False: 0]
  ------------------
  912|      0|				return FAILURE;
  913|      0|			}
  914|      0|			zend_hash_move_forward_ex(aht, pos_ptr);
  915|      0|		} while (1);
  ------------------
  |  Branch (915:12): [True: 0, Folded]
  ------------------
  916|      0|	}
  917|     13|	return FAILURE;
  918|     13|} /* }}} */
spl_array.c:spl_array_get_hash_table:
   97|     75|static inline HashTable *spl_array_get_hash_table(spl_array_object* intern) { /* {{{ */
   98|     75|	return *spl_array_get_hash_table_ptr(intern);
   99|     75|}
spl_array.c:spl_array_get_hash_table_ptr:
   58|     75|static inline HashTable **spl_array_get_hash_table_ptr(spl_array_object* intern) { /* {{{ */
   59|       |	//??? TODO: Delay duplication for arrays; only duplicate for write operations
   60|     75|	if (intern->ar_flags & SPL_ARRAY_IS_SELF) {
  ------------------
  |  |   23|     75|#define SPL_ARRAY_IS_SELF            0x01000000
  ------------------
  |  Branch (60:6): [True: 0, False: 75]
  ------------------
   61|       |		/* rebuild properties */
   62|      0|		zend_std_get_properties_ex(&intern->std);
   63|      0|		return &intern->std.properties;
   64|     75|	} else if (intern->ar_flags & SPL_ARRAY_USE_OTHER) {
  ------------------
  |  |   24|     75|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  |  Branch (64:13): [True: 0, False: 75]
  ------------------
   65|      0|		spl_array_object *other = Z_SPLARRAY_P(&intern->array);
  ------------------
  |  |   56|      0|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      0|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   66|      0|		return spl_array_get_hash_table_ptr(other);
   67|     75|	} else if (Z_TYPE(intern->array) == IS_ARRAY) {
  ------------------
  |  |  668|     75|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	} else if (Z_TYPE(intern->array) == IS_ARRAY) {
  ------------------
  |  |  613|     75|#define IS_ARRAY					7
  ------------------
  |  Branch (67:13): [True: 75, False: 0]
  ------------------
   68|     75|		return &Z_ARRVAL(intern->array);
  ------------------
  |  |  996|     75|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|     75|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
   69|     75|	} else {
   70|      0|		zend_object *obj = Z_OBJ(intern->array);
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
   71|       |		/* Since we're directly playing with the properties table, we shall initialize the lazy object directly.
   72|       |		 * If we don't, it's possible to continue working with the wrong object in case we're using a proxy. */
   73|      0|		if (UNEXPECTED(zend_lazy_object_must_init(obj))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   74|      0|			obj = zend_lazy_object_init(obj);
   75|      0|			if (UNEXPECTED(!obj)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   76|      0|				if (!intern->sentinel_array) {
  ------------------
  |  Branch (76:9): [True: 0, False: 0]
  ------------------
   77|      0|					intern->sentinel_array = zend_new_array(0);
  ------------------
  |  |  342|      0|	_zend_new_array(size)
  ------------------
   78|      0|				}
   79|      0|				return &intern->sentinel_array;
   80|      0|			}
   81|      0|		}
   82|       |		/* should no longer be lazy */
   83|      0|		ZEND_ASSERT(!zend_lazy_object_must_init(obj));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (83:3): [True: 0, False: 0]
  |  Branch (83:3): [True: 0, False: 0]
  ------------------
   84|       |		/* rebuild properties */
   85|      0|		zend_std_get_properties_ex(obj);
   86|      0|		if (GC_REFCOUNT(obj->properties) > 1) {
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (86:7): [True: 0, False: 0]
  ------------------
   87|      0|			if (EXPECTED(!(GC_FLAGS(obj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   88|      0|				GC_DELREF(obj->properties);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
   89|      0|			}
   90|      0|			obj->properties = zend_array_dup(obj->properties);
   91|      0|		}
   92|      0|		return &obj->properties;
   93|      0|	}
   94|     75|}
spl_array.c:spl_array_set_array:
  921|     13|static void spl_array_set_array(zval *object, spl_array_object *intern, zval *array, zend_long ar_flags, bool just_array) {
  922|       |	/* Handled by ZPP prior to this, or for __unserialize() before passing to here */
  923|     13|	ZEND_ASSERT(Z_TYPE_P(array) == IS_ARRAY || Z_TYPE_P(array) == IS_OBJECT);
  ------------------
  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (923:2): [True: 13, False: 0]
  |  Branch (923:2): [True: 0, False: 0]
  |  Branch (923:2): [True: 13, False: 0]
  |  Branch (923:2): [True: 0, False: 0]
  ------------------
  924|     13|	zval garbage;
  925|     13|	ZVAL_UNDEF(&garbage);
  ------------------
  |  | 1055|     13|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     13|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     13|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  926|     13|	if (Z_TYPE_P(array) == IS_ARRAY) {
  ------------------
  |  |  669|     13|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     13|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(array) == IS_ARRAY) {
  ------------------
  |  |  613|     13|#define IS_ARRAY					7
  ------------------
  |  Branch (926:6): [True: 13, False: 0]
  ------------------
  927|     13|		ZVAL_COPY_VALUE(&garbage, &intern->array);
  ------------------
  |  | 1416|     13|	do {												\
  |  | 1417|     13|		zval *_z1 = (z);								\
  |  | 1418|     13|		const zval *_z2 = (v);							\
  |  | 1419|     13|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     13|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     13|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     13|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     13|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     13|	do {												\
  |  |  |  | 1408|     13|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     13|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     13|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     13|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     13|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  928|     13|		if (Z_REFCOUNT_P(array) == 1) {
  ------------------
  |  | 1275|     13|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (928:7): [True: 2, False: 11]
  ------------------
  929|      2|			ZVAL_COPY(&intern->array, array);
  ------------------
  |  | 1425|      2|	do {												\
  |  | 1426|      2|		zval *_z1 = (z);								\
  |  | 1427|      2|		const zval *_z2 = (v);							\
  |  | 1428|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      2|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      2|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      2|		}												\
  |  | 1434|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  930|     11|		} else {
  931|       |			//??? TODO: try to avoid array duplication
  932|     11|			ZVAL_ARR(&intern->array, zend_array_dup(Z_ARR_P(array)));
  ------------------
  |  | 1125|     11|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|     11|		zend_array *__arr = (a);				\
  |  | 1127|     11|		zval *__z = (z);						\
  |  | 1128|     11|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|     11|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     11|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|     11|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|     11|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     11|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|     11|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|     11|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     11|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     11|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     11|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
  933|     11|		}
  934|     13|	} else {
  935|      0|		php_error_docref(NULL, E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  936|      0|			"Using an object as a backing array for %s is deprecated, as it allows violating class constraints and invariants",
  937|      0|			instanceof_function(Z_OBJCE_P(object), spl_ce_ArrayIterator) ? "ArrayIterator" : "ArrayObject");
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (937:4): [True: 0, False: 0]
  ------------------
  938|      0|		if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  939|      0|			return;
  940|      0|		}
  941|      0|		if (Z_OBJ_HT_P(array) == &spl_handler_ArrayObject) {
  ------------------
  |  | 1003|      0|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (941:7): [True: 0, False: 0]
  ------------------
  942|      0|			ZVAL_COPY_VALUE(&garbage, &intern->array);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  943|      0|			if (just_array)	{
  ------------------
  |  Branch (943:8): [True: 0, False: 0]
  ------------------
  944|      0|				spl_array_object *other = Z_SPLARRAY_P(array);
  ------------------
  |  |   56|      0|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      0|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  945|      0|				ar_flags = other->ar_flags & ~SPL_ARRAY_INT_MASK;
  ------------------
  |  |   25|      0|#define SPL_ARRAY_INT_MASK           0xFFFF0000
  ------------------
  946|      0|			}
  947|      0|			if (Z_OBJ_P(object) == Z_OBJ_P(array)) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              			if (Z_OBJ_P(object) == Z_OBJ_P(array)) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (947:8): [True: 0, False: 0]
  ------------------
  948|      0|				ar_flags |= SPL_ARRAY_IS_SELF;
  ------------------
  |  |   23|      0|#define SPL_ARRAY_IS_SELF            0x01000000
  ------------------
  949|      0|				ZVAL_UNDEF(&intern->array);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  950|      0|			} else {
  951|      0|				ar_flags |= SPL_ARRAY_USE_OTHER;
  ------------------
  |  |   24|      0|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  952|      0|				ZVAL_COPY(&intern->array, array);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  953|      0|			}
  954|      0|		} else {
  955|      0|			zend_object_get_properties_t handler = Z_OBJ_HANDLER_P(array, get_properties);
  ------------------
  |  | 1006|      0|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      0|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  956|      0|			if (handler != zend_std_get_properties || Z_OBJ_HANDLER_P(array, get_properties_for)) {
  ------------------
  |  | 1006|      0|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|      0|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      0|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1005:34): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (956:8): [True: 0, False: 0]
  ------------------
  957|      0|				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0,
  958|      0|					"Overloaded object of type %s is not compatible with %s",
  959|      0|					ZSTR_VAL(Z_OBJCE_P(array)->name), ZSTR_VAL(intern->std.ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(Z_OBJCE_P(array)->name), ZSTR_VAL(intern->std.ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  960|      0|				ZEND_ASSERT(Z_TYPE(garbage) == IS_UNDEF);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (960:5): [True: 0, False: 0]
  |  Branch (960:5): [True: 0, False: 0]
  ------------------
  961|      0|				return;
  962|      0|			}
  963|      0|			if (UNEXPECTED(Z_OBJCE_P(array)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  964|      0|				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0,
  965|      0|					"Enums are not compatible with %s",
  966|      0|					ZSTR_VAL(intern->std.ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  967|      0|				ZEND_ASSERT(Z_TYPE(garbage) == IS_UNDEF);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (967:5): [True: 0, False: 0]
  |  Branch (967:5): [True: 0, False: 0]
  ------------------
  968|      0|				return;
  969|      0|			}
  970|      0|			ZVAL_COPY_VALUE(&garbage, &intern->array);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  971|      0|			ZVAL_COPY(&intern->array, array);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  972|      0|		}
  973|      0|	}
  974|       |
  975|     13|	intern->ar_flags &= ~SPL_ARRAY_IS_SELF & ~SPL_ARRAY_USE_OTHER;
  ------------------
  |  |   23|     13|#define SPL_ARRAY_IS_SELF            0x01000000
  ------------------
              	intern->ar_flags &= ~SPL_ARRAY_IS_SELF & ~SPL_ARRAY_USE_OTHER;
  ------------------
  |  |   24|     13|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  976|     13|	intern->ar_flags |= ar_flags;
  977|     13|	if (intern->ht_iter != (uint32_t)-1) {
  ------------------
  |  Branch (977:6): [True: 0, False: 13]
  ------------------
  978|      0|		zend_hash_iterator_del(intern->ht_iter);
  979|      0|		intern->ht_iter = (uint32_t)-1;
  980|      0|	}
  981|       |
  982|     13|	zval_ptr_dtor(&garbage);
  983|     13|}
spl_array.c:spl_array_object_new_ex:
  151|     25|{
  152|     25|	spl_array_object *intern;
  153|     25|	const zend_class_entry *parent = class_type;
  154|     25|	int inherited = 0;
  155|       |
  156|     25|	intern = zend_object_alloc(sizeof(spl_array_object), parent);
  157|       |
  158|     25|	zend_object_std_init(&intern->std, class_type);
  159|     25|	object_properties_init(&intern->std, class_type);
  160|       |
  161|     25|	intern->ar_flags = 0;
  162|     25|	intern->ce_get_iterator = spl_ce_ArrayIterator;
  163|     25|	if (orig) {
  ------------------
  |  Branch (163:6): [True: 0, False: 25]
  ------------------
  164|      0|		spl_array_object *other = spl_array_from_obj(orig);
  ------------------
  |  |   54|      0|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      0|	)
  |  |  ------------------
  ------------------
  165|       |
  166|      0|		intern->ar_flags &= ~ SPL_ARRAY_CLONE_MASK;
  ------------------
  |  |   26|      0|#define SPL_ARRAY_CLONE_MASK         0x0100FFFF
  ------------------
  167|      0|		intern->ar_flags |= (other->ar_flags & SPL_ARRAY_CLONE_MASK);
  ------------------
  |  |   26|      0|#define SPL_ARRAY_CLONE_MASK         0x0100FFFF
  ------------------
  168|      0|		intern->ce_get_iterator = other->ce_get_iterator;
  169|      0|		if (clone_orig) {
  ------------------
  |  Branch (169:7): [True: 0, False: 0]
  ------------------
  170|      0|			if (other->ar_flags & SPL_ARRAY_IS_SELF) {
  ------------------
  |  |   23|      0|#define SPL_ARRAY_IS_SELF            0x01000000
  ------------------
  |  Branch (170:8): [True: 0, False: 0]
  ------------------
  171|      0|				ZVAL_UNDEF(&intern->array);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  172|      0|			} else if (instanceof_function(class_type, spl_ce_ArrayObject)) {
  ------------------
  |  Branch (172:15): [True: 0, False: 0]
  ------------------
  173|      0|				ZVAL_ARR(&intern->array,
  ------------------
  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  | 1127|      0|		zval *__z = (z);						\
  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1130|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  174|      0|					zend_array_dup(spl_array_get_hash_table(other)));
  175|      0|			} else {
  176|      0|				#if ZEND_DEBUG
  177|       |				/* This is because the call to instanceof_function will remain because
  178|       |				 * the compiler can't prove in this compile unit that this function is
  179|       |				 * side-effect-free.
  180|       |				 * See https://github.com/php/php-src/pull/14518#discussion_r1638740932 */
  181|      0|				ZEND_ASSERT(instanceof_function(class_type, spl_ce_ArrayIterator));
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (181:5): [True: 0, False: 0]
  |  Branch (181:5): [True: 0, False: 0]
  ------------------
  182|      0|				#endif
  183|       |
  184|      0|				ZVAL_OBJ_COPY(&intern->array, orig);
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  185|      0|				intern->ar_flags |= SPL_ARRAY_USE_OTHER;
  ------------------
  |  |   24|      0|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  186|      0|			}
  187|      0|		} else {
  188|      0|			ZVAL_OBJ_COPY(&intern->array, orig);
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  189|      0|			intern->ar_flags |= SPL_ARRAY_USE_OTHER;
  ------------------
  |  |   24|      0|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  190|      0|		}
  191|     25|	} else {
  192|     25|		array_init(&intern->array);
  193|     25|	}
  194|       |
  195|     31|	while (parent) {
  ------------------
  |  Branch (195:9): [True: 31, False: 0]
  ------------------
  196|     31|		if (parent == spl_ce_ArrayIterator || parent == spl_ce_RecursiveArrayIterator || parent == spl_ce_ArrayObject) {
  ------------------
  |  Branch (196:7): [True: 15, False: 16]
  |  Branch (196:41): [True: 0, False: 16]
  |  Branch (196:84): [True: 10, False: 6]
  ------------------
  197|     25|			break;
  198|     25|		}
  199|      6|		parent = parent->parent;
  200|      6|		inherited = 1;
  201|      6|	}
  202|       |
  203|     25|	ZEND_ASSERT(parent);
  ------------------
  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (203:2): [True: 0, False: 25]
  |  Branch (203:2): [True: 25, False: 0]
  ------------------
  204|       |
  205|     25|	if (inherited) {
  ------------------
  |  Branch (205:6): [True: 6, False: 19]
  ------------------
  206|      6|		intern->fptr_offset_get = zend_hash_str_find_ptr(&class_type->function_table, "offsetget", sizeof("offsetget") - 1);
  207|      6|		if (intern->fptr_offset_get->common.scope == parent) {
  ------------------
  |  Branch (207:7): [True: 6, False: 0]
  ------------------
  208|      6|			intern->fptr_offset_get = NULL;
  209|      6|		}
  210|      6|		intern->fptr_offset_set = zend_hash_str_find_ptr(&class_type->function_table, "offsetset", sizeof("offsetset") - 1);
  211|      6|		if (intern->fptr_offset_set->common.scope == parent) {
  ------------------
  |  Branch (211:7): [True: 6, False: 0]
  ------------------
  212|      6|			intern->fptr_offset_set = NULL;
  213|      6|		}
  214|      6|		intern->fptr_offset_has = zend_hash_str_find_ptr(&class_type->function_table, "offsetexists", sizeof("offsetexists") - 1);
  215|      6|		if (intern->fptr_offset_has->common.scope == parent) {
  ------------------
  |  Branch (215:7): [True: 6, False: 0]
  ------------------
  216|      6|			intern->fptr_offset_has = NULL;
  217|      6|		}
  218|      6|		intern->fptr_offset_del = zend_hash_str_find_ptr(&class_type->function_table, "offsetunset",  sizeof("offsetunset") - 1);
  219|      6|		if (intern->fptr_offset_del->common.scope == parent) {
  ------------------
  |  Branch (219:7): [True: 6, False: 0]
  ------------------
  220|      6|			intern->fptr_offset_del = NULL;
  221|      6|		}
  222|       |		/* Find count() method */
  223|      6|		intern->fptr_count = zend_hash_find_ptr(&class_type->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
  224|      6|		if (intern->fptr_count->common.scope == parent) {
  ------------------
  |  Branch (224:7): [True: 6, False: 0]
  ------------------
  225|      6|			intern->fptr_count = NULL;
  226|      6|		}
  227|      6|	}
  228|       |
  229|     25|	intern->ht_iter = (uint32_t)-1;
  230|     25|	return &intern->std;
  231|     25|}
spl_array.c:spl_array_rewind:
 1594|     13|{
 1595|     13|	HashTable *aht = spl_array_get_hash_table(intern);
 1596|       |
 1597|     13|	if (intern->ht_iter == (uint32_t)-1) {
  ------------------
  |  Branch (1597:6): [True: 12, False: 1]
  ------------------
 1598|     12|		spl_array_get_pos_ptr(aht, intern);
 1599|     12|	} else {
 1600|      1|		zend_hash_internal_pointer_reset_ex(aht, spl_array_get_pos_ptr(aht, intern));
 1601|      1|		spl_array_skip_protected(intern, aht);
 1602|      1|	}
 1603|     13|}
spl_array.c:spl_array_next:
 1521|      1|{
 1522|      1|	HashTable *aht = spl_array_get_hash_table(intern);
 1523|       |
 1524|      1|	return spl_array_next_ex(intern, aht);
 1525|       |
 1526|      1|} /* }}} */
spl_array.c:spl_array_get_pos_ptr:
  122|     65|{
  123|     65|	if (UNEXPECTED(intern->ht_iter == (uint32_t)-1)) {
  ------------------
  |  |  457|     65|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 12, False: 53]
  |  |  ------------------
  ------------------
  124|     12|		spl_array_create_ht_iter(ht, intern);
  125|     12|	}
  126|     65|	return &EG(ht_iterators)[intern->ht_iter].pos;
  ------------------
  |  |   45|     65|# define EG(v) (executor_globals.v)
  ------------------
  127|     65|}
spl_array.c:spl_array_create_ht_iter:
  114|     12|{
  115|     12|	intern->ht_iter = zend_hash_iterator_add(ht, zend_hash_get_current_pos(ht));
  116|     12|	zend_hash_internal_pointer_reset_ex(ht, &EG(ht_iterators)[intern->ht_iter].pos);
  ------------------
  |  |   45|     12|# define EG(v) (executor_globals.v)
  ------------------
  117|     12|	spl_array_skip_protected(intern, ht);
  118|     12|}
spl_array.c:spl_array_next_ex:
 1509|     11|{
 1510|     11|	uint32_t *pos_ptr = spl_array_get_pos_ptr(aht, intern);
 1511|       |
 1512|     11|	zend_hash_move_forward_ex(aht, pos_ptr);
 1513|     11|	if (spl_array_is_object(intern)) {
  ------------------
  |  Branch (1513:6): [True: 0, False: 11]
  ------------------
 1514|      0|		return spl_array_skip_protected(intern, aht);
 1515|     11|	} else {
 1516|     11|		return zend_hash_has_more_elements_ex(aht, pos_ptr);
 1517|     11|	}
 1518|     11|} /* }}} */
spl_array.c:spl_array_object_new:
  236|     25|{
  237|       |	return spl_array_object_new_ex(class_type, NULL, 0);
  238|     25|}
spl_array.c:spl_array_read_dimension:
  455|      4|{
  456|      4|	return spl_array_read_dimension_ex(1, object, offset, type, rv);
  457|      4|} /* }}} */
spl_array.c:spl_array_get_gc:
  782|     22|{
  783|       |	spl_array_object *intern = spl_array_from_obj(obj);
  ------------------
  |  |   54|     22|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|     22|	_Generic( \
  |  |  |  |  408|     22|		(ptr), \
  |  |  |  |  409|     22|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     22|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     22|	)
  |  |  ------------------
  ------------------
  784|     22|	*gc_data = &intern->array;
  785|     22|	*gc_data_count = 1;
  786|     22|	return zend_std_get_properties(obj);
  787|     22|}
spl_array.c:spl_array_get_property_ptr_ptr:
  818|      1|{
  819|      1|	spl_array_object *intern = spl_array_from_obj(object);
  ------------------
  |  |   54|      1|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
  820|       |
  821|      1|	if ((intern->ar_flags & SPL_ARRAY_ARRAY_AS_PROPS) != 0
  ------------------
  |  |   21|      1|#define SPL_ARRAY_ARRAY_AS_PROPS     0x00000002
  ------------------
  |  Branch (821:6): [True: 0, False: 1]
  ------------------
  822|      0|		&& !zend_std_has_property(object, name, ZEND_PROPERTY_EXISTS, NULL)) {
  ------------------
  |  |  247|      0|#define ZEND_PROPERTY_EXISTS    0x2          /* Property exists */
  ------------------
  |  Branch (822:6): [True: 0, False: 0]
  ------------------
  823|      0|		if (cache_slot) {
  ------------------
  |  Branch (823:7): [True: 0, False: 0]
  ------------------
  824|      0|			cache_slot[0] = cache_slot[1] = cache_slot[2] = NULL;
  825|      0|		}
  826|       |
  827|       |		/* If object has offsetGet() overridden, then fallback to read_property,
  828|       |		 * which will call offsetGet(). */
  829|      0|		zval member;
  830|      0|		if (intern->fptr_offset_get) {
  ------------------
  |  Branch (830:7): [True: 0, False: 0]
  ------------------
  831|      0|			return NULL;
  832|      0|		}
  833|      0|		ZVAL_STR(&member, name);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  834|      0|		return spl_array_get_dimension_ptr(true, intern, object->ce->name, &member, type);
  835|      0|	}
  836|      1|	return zend_std_get_property_ptr_ptr(object, name, type, cache_slot);
  837|      1|} /* }}} */
spl_array.c:spl_array_object_free_storage:
  132|     25|{
  133|     25|	spl_array_object *intern = spl_array_from_obj(object);
  ------------------
  |  |   54|     25|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  ------------------
  |  |  |  |  407|     25|	_Generic( \
  |  |  |  |  408|     25|		(ptr), \
  |  |  |  |  409|     25|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     25|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     25|	)
  |  |  ------------------
  ------------------
  134|       |
  135|     25|	if (intern->ht_iter != (uint32_t) -1) {
  ------------------
  |  Branch (135:6): [True: 12, False: 13]
  ------------------
  136|     12|		zend_hash_iterator_del(intern->ht_iter);
  137|     12|	}
  138|       |
  139|     25|	if (UNEXPECTED(intern->sentinel_array)) {
  ------------------
  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 25]
  |  |  ------------------
  ------------------
  140|      0|		zend_array_release(intern->sentinel_array);
  141|      0|	}
  142|       |
  143|     25|	zend_object_std_dtor(&intern->std);
  144|       |
  145|     25|	zval_ptr_dtor(&intern->array);
  146|     25|}
spl_array.c:spl_array_get_iterator:
 1633|     10|{
 1634|     10|	spl_array_iterator *iterator = emalloc(sizeof(spl_array_iterator));
  ------------------
  |  |  150|     10|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1635|     10|	zend_iterator_init(&iterator->it);
 1636|       |
 1637|     10|	ZVAL_OBJ_COPY(&iterator->it.data, Z_OBJ_P(object));
  ------------------
  |  | 1146|     10|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|     10|		zval *__z = (z);						\
  |  | 1148|     10|		zend_object *__o = (o);					\
  |  | 1149|     10|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|     10|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|     10|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|     10|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|     10|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|     10|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|     10|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|     10|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1638|     10|	iterator->it.funcs = &spl_array_it_funcs;
 1639|     10|	iterator->by_ref = by_ref;
 1640|       |
 1641|     10|	return &iterator->it;
 1642|     10|}
spl_array.c:spl_array_it_dtor:
 1529|     10|{
 1530|     10|	zval_ptr_dtor(&iter->data);
 1531|     10|}
spl_array.c:spl_array_it_valid:
 1535|     13|{
 1536|       |	spl_array_object *object = Z_SPLARRAY_P(&iter->data);
  ------------------
  |  |   56|     13|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|     13|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     13|	_Generic( \
  |  |  |  |  |  |  408|     13|		(ptr), \
  |  |  |  |  |  |  409|     13|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     13|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     13|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1537|     13|	HashTable *aht = spl_array_get_hash_table(object);
 1538|     13|	return zend_hash_has_more_elements_ex(aht, spl_array_get_pos_ptr(aht, object));
 1539|     13|}
spl_array.c:spl_array_it_get_current_data:
 1543|      9|{
 1544|      9|	spl_array_iterator *array_iter = (spl_array_iterator*)iter;
 1545|      9|	spl_array_object *object = Z_SPLARRAY_P(&iter->data);
  ------------------
  |  |   56|      9|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      9|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      9|	_Generic( \
  |  |  |  |  |  |  408|      9|		(ptr), \
  |  |  |  |  |  |  409|      9|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      9|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      9|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1546|      9|	HashTable *aht = spl_array_get_hash_table(object);
 1547|      9|	zval *data = zend_hash_get_current_data_ex(aht, spl_array_get_pos_ptr(aht, object));
 1548|      9|	if (data && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (data && Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      9|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1548:6): [True: 9, False: 0]
  |  Branch (1548:14): [True: 0, False: 9]
  ------------------
 1549|      0|		data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1550|      0|	}
 1551|       |	// ZEND_FE_FETCH_RW converts the value to a reference but doesn't know the source is a property.
 1552|       |	// Typed properties must add a type source to the reference, and readonly properties must fail.
 1553|      9|	if (array_iter->by_ref
  ------------------
  |  Branch (1553:6): [True: 0, False: 9]
  ------------------
 1554|      0|	 && Z_TYPE_P(data) != IS_REFERENCE
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	 && Z_TYPE_P(data) != IS_REFERENCE
  ------------------
  |  |  616|      9|#define IS_REFERENCE				10
  ------------------
  |  Branch (1554:6): [True: 0, False: 0]
  ------------------
 1555|      0|	 && Z_TYPE(object->array) == IS_OBJECT
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	 && Z_TYPE(object->array) == IS_OBJECT
  ------------------
  |  |  614|      9|#define IS_OBJECT					8
  ------------------
  |  Branch (1555:6): [True: 0, False: 0]
  ------------------
 1556|      0|	 && !(object->ar_flags & (SPL_ARRAY_IS_SELF|SPL_ARRAY_USE_OTHER))) {
  ------------------
  |  |   23|      0|#define SPL_ARRAY_IS_SELF            0x01000000
  ------------------
              	 && !(object->ar_flags & (SPL_ARRAY_IS_SELF|SPL_ARRAY_USE_OTHER))) {
  ------------------
  |  |   24|      0|#define SPL_ARRAY_USE_OTHER          0x02000000
  ------------------
  |  Branch (1556:6): [True: 0, False: 0]
  ------------------
 1557|      0|		zend_string *key;
 1558|      0|		zend_hash_get_current_key_ex(aht, &key, NULL, spl_array_get_pos_ptr(aht, object));
 1559|      0|		zend_class_entry *ce = Z_OBJCE(object->array);
  ------------------
  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1560|      0|		zend_property_info *prop_info = zend_get_property_info(ce, key, true);
 1561|      0|		ZEND_ASSERT(prop_info != ZEND_WRONG_PROPERTY_INFO);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1561:3): [True: 0, False: 0]
  |  Branch (1561:3): [True: 0, False: 0]
  ------------------
 1562|      0|		if (EXPECTED(prop_info != NULL) && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (EXPECTED(prop_info != NULL) && ZEND_TYPE_IS_SET(prop_info->type)) {
  ------------------
  |  |  152|      0|	(((t).type_mask & _ZEND_TYPE_MASK) != 0)
  |  |  ------------------
  |  |  |  |  131|      0|#define _ZEND_TYPE_MASK ((1u << 25) - 1)
  |  |  ------------------
  |  |  |  Branch (152:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1563|      0|			if (prop_info->flags & ZEND_ACC_READONLY) {
  ------------------
  |  |  237|      0|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
  |  Branch (1563:8): [True: 0, False: 0]
  ------------------
 1564|      0|				zend_throw_error(NULL,
 1565|      0|					"Cannot acquire reference to readonly property %s::$%s",
 1566|      0|					ZSTR_VAL(prop_info->ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(prop_info->ce->name), ZSTR_VAL(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1567|      0|				return NULL;
 1568|      0|			}
 1569|      0|			ZVAL_NEW_REF(data, data);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1570|      0|			ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(data), prop_info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
 1571|      0|		}
 1572|      0|	}
 1573|      9|	return data;
 1574|      9|}
spl_array.c:spl_array_it_get_current_key:
 1578|      9|{
 1579|       |	spl_array_object *object = Z_SPLARRAY_P(&iter->data);
  ------------------
  |  |   56|      9|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      9|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      9|	_Generic( \
  |  |  |  |  |  |  408|      9|		(ptr), \
  |  |  |  |  |  |  409|      9|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      9|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      9|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1580|      9|	HashTable *aht = spl_array_get_hash_table(object);
 1581|      9|	zend_hash_get_current_key_zval_ex(aht, key, spl_array_get_pos_ptr(aht, object));
 1582|      9|}
spl_array.c:spl_array_it_move_forward:
 1586|      7|{
 1587|       |	spl_array_object *object = Z_SPLARRAY_P(&iter->data);
  ------------------
  |  |   56|      7|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      7|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      7|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1588|      7|	HashTable *aht = spl_array_get_hash_table(object);
 1589|      7|	spl_array_next_ex(object, aht);
 1590|      7|}
spl_array.c:spl_array_it_rewind:
 1607|      8|{
 1608|       |	spl_array_object *object = Z_SPLARRAY_P(&iter->data);
  ------------------
  |  |   56|      8|#define Z_SPLARRAY_P(zv)  spl_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   54|      8|#define spl_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_array_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      8|	_Generic( \
  |  |  |  |  |  |  408|      8|		(ptr), \
  |  |  |  |  |  |  409|      8|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      8|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      8|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1609|      8|	spl_array_rewind(object);
 1610|      8|}
spl_array.c:spl_array_it_get_gc:
 1614|     10|{
 1615|     10|	*n = 1;
 1616|     10|	*table = &iter->data;
 1617|       |	return NULL;
 1618|     10|}

spl_array.c:register_class_ArrayObject:
  258|      2|{
  259|      2|	zend_class_entry ce, *class_entry;
  260|       |
  261|      2|	INIT_CLASS_ENTRY(ce, "ArrayObject", class_ArrayObject_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  262|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  263|      2|	zend_class_implements(class_entry, 4, class_entry_IteratorAggregate, class_entry_ArrayAccess, class_entry_Serializable, class_entry_Countable);
  264|       |
  265|      2|	zval const_STD_PROP_LIST_value;
  266|      2|	ZVAL_LONG(&const_STD_PROP_LIST_value, SPL_ARRAY_STD_PROP_LIST);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  267|      2|	zend_string *const_STD_PROP_LIST_name = zend_string_init_interned("STD_PROP_LIST", sizeof("STD_PROP_LIST") - 1, true);
  268|      2|	zend_declare_typed_class_constant(class_entry, const_STD_PROP_LIST_name, &const_STD_PROP_LIST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_STD_PROP_LIST_name, &const_STD_PROP_LIST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  269|      2|	zend_string_release_ex(const_STD_PROP_LIST_name, true);
  270|       |
  271|      2|	zval const_ARRAY_AS_PROPS_value;
  272|      2|	ZVAL_LONG(&const_ARRAY_AS_PROPS_value, SPL_ARRAY_ARRAY_AS_PROPS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  273|      2|	zend_string *const_ARRAY_AS_PROPS_name = zend_string_init_interned("ARRAY_AS_PROPS", sizeof("ARRAY_AS_PROPS") - 1, true);
  274|      2|	zend_declare_typed_class_constant(class_entry, const_ARRAY_AS_PROPS_name, &const_ARRAY_AS_PROPS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ARRAY_AS_PROPS_name, &const_ARRAY_AS_PROPS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  275|      2|	zend_string_release_ex(const_ARRAY_AS_PROPS_name, true);
  276|       |
  277|      2|	return class_entry;
  278|      2|}
spl_array.c:register_class_ArrayIterator:
  281|      2|{
  282|      2|	zend_class_entry ce, *class_entry;
  283|       |
  284|      2|	INIT_CLASS_ENTRY(ce, "ArrayIterator", class_ArrayIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  285|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  286|      2|	zend_class_implements(class_entry, 4, class_entry_SeekableIterator, class_entry_ArrayAccess, class_entry_Serializable, class_entry_Countable);
  287|       |
  288|      2|	zval const_STD_PROP_LIST_value;
  289|      2|	ZVAL_LONG(&const_STD_PROP_LIST_value, SPL_ARRAY_STD_PROP_LIST);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  290|      2|	zend_string *const_STD_PROP_LIST_name = zend_string_init_interned("STD_PROP_LIST", sizeof("STD_PROP_LIST") - 1, true);
  291|      2|	zend_declare_typed_class_constant(class_entry, const_STD_PROP_LIST_name, &const_STD_PROP_LIST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_STD_PROP_LIST_name, &const_STD_PROP_LIST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  292|      2|	zend_string_release_ex(const_STD_PROP_LIST_name, true);
  293|       |
  294|      2|	zval const_ARRAY_AS_PROPS_value;
  295|      2|	ZVAL_LONG(&const_ARRAY_AS_PROPS_value, SPL_ARRAY_ARRAY_AS_PROPS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  296|      2|	zend_string *const_ARRAY_AS_PROPS_name = zend_string_init_interned("ARRAY_AS_PROPS", sizeof("ARRAY_AS_PROPS") - 1, true);
  297|      2|	zend_declare_typed_class_constant(class_entry, const_ARRAY_AS_PROPS_name, &const_ARRAY_AS_PROPS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ARRAY_AS_PROPS_name, &const_ARRAY_AS_PROPS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  298|      2|	zend_string_release_ex(const_ARRAY_AS_PROPS_name, true);
  299|       |
  300|      2|	return class_entry;
  301|      2|}
spl_array.c:register_class_RecursiveArrayIterator:
  304|      2|{
  305|      2|	zend_class_entry ce, *class_entry;
  306|       |
  307|      2|	INIT_CLASS_ENTRY(ce, "RecursiveArrayIterator", class_RecursiveArrayIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  308|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_ArrayIterator, 0);
  309|      2|	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
  310|       |
  311|      2|	zval const_CHILD_ARRAYS_ONLY_value;
  312|      2|	ZVAL_LONG(&const_CHILD_ARRAYS_ONLY_value, SPL_ARRAY_CHILD_ARRAYS_ONLY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  313|      2|	zend_string *const_CHILD_ARRAYS_ONLY_name = zend_string_init_interned("CHILD_ARRAYS_ONLY", sizeof("CHILD_ARRAYS_ONLY") - 1, true);
  314|      2|	zend_declare_typed_class_constant(class_entry, const_CHILD_ARRAYS_ONLY_name, &const_CHILD_ARRAYS_ONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CHILD_ARRAYS_ONLY_name, &const_CHILD_ARRAYS_ONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  315|      2|	zend_string_release_ex(const_CHILD_ARRAYS_ONLY_name, true);
  316|       |
  317|      2|	return class_entry;
  318|      2|}

zm_startup_spl_directory:
 2675|      2|{
 2676|      2|	spl_ce_SplFileInfo = register_class_SplFileInfo(zend_ce_stringable);
 2677|      2|	spl_ce_SplFileInfo->create_object = spl_filesystem_object_new;
 2678|      2|	spl_ce_SplFileInfo->default_object_handlers = &spl_filesystem_object_handlers;
 2679|       |
 2680|      2|	memcpy(&spl_filesystem_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
 2681|      2|	spl_filesystem_object_handlers.offset = offsetof(spl_filesystem_object, std);
 2682|      2|	spl_filesystem_object_handlers.clone_obj = spl_filesystem_object_clone;
 2683|      2|	spl_filesystem_object_handlers.dtor_obj = spl_filesystem_object_destroy_object;
 2684|      2|	spl_filesystem_object_handlers.free_obj = spl_filesystem_object_free_storage;
 2685|       |
 2686|      2|	spl_ce_DirectoryIterator = register_class_DirectoryIterator(spl_ce_SplFileInfo, spl_ce_SeekableIterator);
 2687|      2|	spl_ce_DirectoryIterator->create_object = spl_filesystem_object_new;
 2688|      2|	spl_ce_DirectoryIterator->get_iterator = spl_filesystem_dir_get_iterator;
 2689|       |
 2690|      2|	spl_ce_FilesystemIterator = register_class_FilesystemIterator(spl_ce_DirectoryIterator);
 2691|      2|	spl_ce_FilesystemIterator->create_object = spl_filesystem_object_new;
 2692|      2|	spl_ce_FilesystemIterator->get_iterator = spl_filesystem_tree_get_iterator;
 2693|       |
 2694|      2|	spl_ce_RecursiveDirectoryIterator = register_class_RecursiveDirectoryIterator(spl_ce_FilesystemIterator, spl_ce_RecursiveIterator);
 2695|      2|	spl_ce_RecursiveDirectoryIterator->create_object = spl_filesystem_object_new;
 2696|       |
 2697|      2|	memcpy(&spl_filesystem_object_check_handlers, &spl_filesystem_object_handlers, sizeof(zend_object_handlers));
 2698|      2|	spl_filesystem_object_check_handlers.clone_obj = NULL;
 2699|      2|	spl_filesystem_object_check_handlers.get_method = spl_filesystem_object_get_method_check;
 2700|       |
 2701|      2|	spl_ce_GlobIterator = register_class_GlobIterator(spl_ce_FilesystemIterator, zend_ce_countable);
 2702|      2|	spl_ce_GlobIterator->create_object = spl_filesystem_object_new;
 2703|      2|	spl_ce_GlobIterator->default_object_handlers = &spl_filesystem_object_check_handlers;
 2704|       |
 2705|      2|	spl_ce_SplFileObject = register_class_SplFileObject(spl_ce_SplFileInfo, spl_ce_RecursiveIterator, spl_ce_SeekableIterator);
 2706|      2|	spl_ce_SplFileObject->default_object_handlers = &spl_filesystem_object_check_handlers;
 2707|      2|	spl_ce_SplFileObject->create_object = spl_filesystem_object_new;
 2708|       |
 2709|      2|	spl_ce_SplTempFileObject = register_class_SplTempFileObject(spl_ce_SplFileObject);
 2710|      2|	spl_ce_SplTempFileObject->create_object = spl_filesystem_object_new;
 2711|       |
 2712|      2|	return SUCCESS;
 2713|      2|}

spl_directory.c:register_class_SplFileInfo:
  476|      2|{
  477|      2|	zend_class_entry ce, *class_entry;
  478|       |
  479|      2|	INIT_CLASS_ENTRY(ce, "SplFileInfo", class_SplFileInfo_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  480|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
  481|      2|	zend_class_implements(class_entry, 1, class_entry_Stringable);
  482|       |
  483|       |
  484|      2|	zend_attribute *attribute_Deprecated_func__bad_state_ex_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "_bad_state_ex", sizeof("_bad_state_ex") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  485|      2|	ZVAL_STR(&attribute_Deprecated_func__bad_state_ex_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_2));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  486|      2|	attribute_Deprecated_func__bad_state_ex_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  487|       |
  488|      2|	return class_entry;
  489|      2|}
spl_directory.c:register_class_DirectoryIterator:
  492|      2|{
  493|      2|	zend_class_entry ce, *class_entry;
  494|       |
  495|      2|	INIT_CLASS_ENTRY(ce, "DirectoryIterator", class_DirectoryIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  496|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplFileInfo, 0);
  497|      2|	zend_class_implements(class_entry, 1, class_entry_SeekableIterator);
  498|       |
  499|      2|	return class_entry;
  500|      2|}
spl_directory.c:register_class_FilesystemIterator:
  503|      2|{
  504|      2|	zend_class_entry ce, *class_entry;
  505|       |
  506|      2|	INIT_CLASS_ENTRY(ce, "FilesystemIterator", class_FilesystemIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  507|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_DirectoryIterator, 0);
  508|       |
  509|      2|	zval const_CURRENT_MODE_MASK_value;
  510|      2|	ZVAL_LONG(&const_CURRENT_MODE_MASK_value, SPL_FILE_DIR_CURRENT_MODE_MASK);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  511|      2|	zend_string *const_CURRENT_MODE_MASK_name = zend_string_init_interned("CURRENT_MODE_MASK", sizeof("CURRENT_MODE_MASK") - 1, true);
  512|      2|	zend_declare_typed_class_constant(class_entry, const_CURRENT_MODE_MASK_name, &const_CURRENT_MODE_MASK_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CURRENT_MODE_MASK_name, &const_CURRENT_MODE_MASK_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  513|      2|	zend_string_release_ex(const_CURRENT_MODE_MASK_name, true);
  514|       |
  515|      2|	zval const_CURRENT_AS_PATHNAME_value;
  516|      2|	ZVAL_LONG(&const_CURRENT_AS_PATHNAME_value, SPL_FILE_DIR_CURRENT_AS_PATHNAME);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  517|      2|	zend_string *const_CURRENT_AS_PATHNAME_name = zend_string_init_interned("CURRENT_AS_PATHNAME", sizeof("CURRENT_AS_PATHNAME") - 1, true);
  518|      2|	zend_declare_typed_class_constant(class_entry, const_CURRENT_AS_PATHNAME_name, &const_CURRENT_AS_PATHNAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CURRENT_AS_PATHNAME_name, &const_CURRENT_AS_PATHNAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  519|      2|	zend_string_release_ex(const_CURRENT_AS_PATHNAME_name, true);
  520|       |
  521|      2|	zval const_CURRENT_AS_FILEINFO_value;
  522|      2|	ZVAL_LONG(&const_CURRENT_AS_FILEINFO_value, SPL_FILE_DIR_CURRENT_AS_FILEINFO);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  523|      2|	zend_string *const_CURRENT_AS_FILEINFO_name = zend_string_init_interned("CURRENT_AS_FILEINFO", sizeof("CURRENT_AS_FILEINFO") - 1, true);
  524|      2|	zend_declare_typed_class_constant(class_entry, const_CURRENT_AS_FILEINFO_name, &const_CURRENT_AS_FILEINFO_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CURRENT_AS_FILEINFO_name, &const_CURRENT_AS_FILEINFO_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  525|      2|	zend_string_release_ex(const_CURRENT_AS_FILEINFO_name, true);
  526|       |
  527|      2|	zval const_CURRENT_AS_SELF_value;
  528|      2|	ZVAL_LONG(&const_CURRENT_AS_SELF_value, SPL_FILE_DIR_CURRENT_AS_SELF);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  529|      2|	zend_string *const_CURRENT_AS_SELF_name = zend_string_init_interned("CURRENT_AS_SELF", sizeof("CURRENT_AS_SELF") - 1, true);
  530|      2|	zend_declare_typed_class_constant(class_entry, const_CURRENT_AS_SELF_name, &const_CURRENT_AS_SELF_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CURRENT_AS_SELF_name, &const_CURRENT_AS_SELF_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  531|      2|	zend_string_release_ex(const_CURRENT_AS_SELF_name, true);
  532|       |
  533|      2|	zval const_KEY_MODE_MASK_value;
  534|      2|	ZVAL_LONG(&const_KEY_MODE_MASK_value, SPL_FILE_DIR_KEY_MODE_MASK);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  535|      2|	zend_string *const_KEY_MODE_MASK_name = zend_string_init_interned("KEY_MODE_MASK", sizeof("KEY_MODE_MASK") - 1, true);
  536|      2|	zend_declare_typed_class_constant(class_entry, const_KEY_MODE_MASK_name, &const_KEY_MODE_MASK_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_KEY_MODE_MASK_name, &const_KEY_MODE_MASK_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  537|      2|	zend_string_release_ex(const_KEY_MODE_MASK_name, true);
  538|       |
  539|      2|	zval const_KEY_AS_PATHNAME_value;
  540|      2|	ZVAL_LONG(&const_KEY_AS_PATHNAME_value, SPL_FILE_DIR_KEY_AS_PATHNAME);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  541|      2|	zend_string *const_KEY_AS_PATHNAME_name = zend_string_init_interned("KEY_AS_PATHNAME", sizeof("KEY_AS_PATHNAME") - 1, true);
  542|      2|	zend_declare_typed_class_constant(class_entry, const_KEY_AS_PATHNAME_name, &const_KEY_AS_PATHNAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_KEY_AS_PATHNAME_name, &const_KEY_AS_PATHNAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  543|      2|	zend_string_release_ex(const_KEY_AS_PATHNAME_name, true);
  544|       |
  545|      2|	zval const_FOLLOW_SYMLINKS_value;
  546|      2|	ZVAL_LONG(&const_FOLLOW_SYMLINKS_value, SPL_FILE_DIR_FOLLOW_SYMLINKS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  547|      2|	zend_string *const_FOLLOW_SYMLINKS_name = zend_string_init_interned("FOLLOW_SYMLINKS", sizeof("FOLLOW_SYMLINKS") - 1, true);
  548|      2|	zend_declare_typed_class_constant(class_entry, const_FOLLOW_SYMLINKS_name, &const_FOLLOW_SYMLINKS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_FOLLOW_SYMLINKS_name, &const_FOLLOW_SYMLINKS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  549|      2|	zend_string_release_ex(const_FOLLOW_SYMLINKS_name, true);
  550|       |
  551|      2|	zval const_KEY_AS_FILENAME_value;
  552|      2|	ZVAL_LONG(&const_KEY_AS_FILENAME_value, SPL_FILE_DIR_KEY_AS_FILENAME);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  553|      2|	zend_string *const_KEY_AS_FILENAME_name = zend_string_init_interned("KEY_AS_FILENAME", sizeof("KEY_AS_FILENAME") - 1, true);
  554|      2|	zend_declare_typed_class_constant(class_entry, const_KEY_AS_FILENAME_name, &const_KEY_AS_FILENAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_KEY_AS_FILENAME_name, &const_KEY_AS_FILENAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  555|      2|	zend_string_release_ex(const_KEY_AS_FILENAME_name, true);
  556|       |
  557|      2|	zval const_NEW_CURRENT_AND_KEY_value;
  558|      2|	ZVAL_LONG(&const_NEW_CURRENT_AND_KEY_value, SPL_FILE_NEW_CURRENT_AND_KEY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  559|      2|	zend_string *const_NEW_CURRENT_AND_KEY_name = zend_string_init_interned("NEW_CURRENT_AND_KEY", sizeof("NEW_CURRENT_AND_KEY") - 1, true);
  560|      2|	zend_declare_typed_class_constant(class_entry, const_NEW_CURRENT_AND_KEY_name, &const_NEW_CURRENT_AND_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_NEW_CURRENT_AND_KEY_name, &const_NEW_CURRENT_AND_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  561|      2|	zend_string_release_ex(const_NEW_CURRENT_AND_KEY_name, true);
  562|       |
  563|      2|	zval const_OTHER_MODE_MASK_value;
  564|      2|	ZVAL_LONG(&const_OTHER_MODE_MASK_value, SPL_FILE_DIR_OTHERS_MASK);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  565|      2|	zend_string *const_OTHER_MODE_MASK_name = zend_string_init_interned("OTHER_MODE_MASK", sizeof("OTHER_MODE_MASK") - 1, true);
  566|      2|	zend_declare_typed_class_constant(class_entry, const_OTHER_MODE_MASK_name, &const_OTHER_MODE_MASK_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_OTHER_MODE_MASK_name, &const_OTHER_MODE_MASK_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  567|      2|	zend_string_release_ex(const_OTHER_MODE_MASK_name, true);
  568|       |
  569|      2|	zval const_SKIP_DOTS_value;
  570|      2|	ZVAL_LONG(&const_SKIP_DOTS_value, SPL_FILE_DIR_SKIPDOTS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  571|      2|	zend_string *const_SKIP_DOTS_name = zend_string_init_interned("SKIP_DOTS", sizeof("SKIP_DOTS") - 1, true);
  572|      2|	zend_declare_typed_class_constant(class_entry, const_SKIP_DOTS_name, &const_SKIP_DOTS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_SKIP_DOTS_name, &const_SKIP_DOTS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  573|      2|	zend_string_release_ex(const_SKIP_DOTS_name, true);
  574|       |
  575|      2|	zval const_UNIX_PATHS_value;
  576|      2|	ZVAL_LONG(&const_UNIX_PATHS_value, SPL_FILE_DIR_UNIXPATHS);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  577|      2|	zend_string *const_UNIX_PATHS_name = zend_string_init_interned("UNIX_PATHS", sizeof("UNIX_PATHS") - 1, true);
  578|      2|	zend_declare_typed_class_constant(class_entry, const_UNIX_PATHS_name, &const_UNIX_PATHS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_UNIX_PATHS_name, &const_UNIX_PATHS_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  579|      2|	zend_string_release_ex(const_UNIX_PATHS_name, true);
  580|       |
  581|      2|	return class_entry;
  582|      2|}
spl_directory.c:register_class_RecursiveDirectoryIterator:
  585|      2|{
  586|      2|	zend_class_entry ce, *class_entry;
  587|       |
  588|      2|	INIT_CLASS_ENTRY(ce, "RecursiveDirectoryIterator", class_RecursiveDirectoryIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  589|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_FilesystemIterator, 0);
  590|      2|	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
  591|       |
  592|      2|	return class_entry;
  593|      2|}
spl_directory.c:register_class_GlobIterator:
  596|      2|{
  597|      2|	zend_class_entry ce, *class_entry;
  598|       |
  599|      2|	INIT_CLASS_ENTRY(ce, "GlobIterator", class_GlobIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  600|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_FilesystemIterator, 0);
  601|      2|	zend_class_implements(class_entry, 1, class_entry_Countable);
  602|       |
  603|      2|	return class_entry;
  604|      2|}
spl_directory.c:register_class_SplFileObject:
  607|      2|{
  608|      2|	zend_class_entry ce, *class_entry;
  609|       |
  610|      2|	INIT_CLASS_ENTRY(ce, "SplFileObject", class_SplFileObject_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  611|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplFileInfo, 0);
  612|      2|	zend_class_implements(class_entry, 2, class_entry_RecursiveIterator, class_entry_SeekableIterator);
  613|       |
  614|      2|	zval const_DROP_NEW_LINE_value;
  615|      2|	ZVAL_LONG(&const_DROP_NEW_LINE_value, SPL_FILE_OBJECT_DROP_NEW_LINE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  616|      2|	zend_string *const_DROP_NEW_LINE_name = zend_string_init_interned("DROP_NEW_LINE", sizeof("DROP_NEW_LINE") - 1, true);
  617|      2|	zend_declare_typed_class_constant(class_entry, const_DROP_NEW_LINE_name, &const_DROP_NEW_LINE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_DROP_NEW_LINE_name, &const_DROP_NEW_LINE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  618|      2|	zend_string_release_ex(const_DROP_NEW_LINE_name, true);
  619|       |
  620|      2|	zval const_READ_AHEAD_value;
  621|      2|	ZVAL_LONG(&const_READ_AHEAD_value, SPL_FILE_OBJECT_READ_AHEAD);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  622|      2|	zend_string *const_READ_AHEAD_name = zend_string_init_interned("READ_AHEAD", sizeof("READ_AHEAD") - 1, true);
  623|      2|	zend_declare_typed_class_constant(class_entry, const_READ_AHEAD_name, &const_READ_AHEAD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_READ_AHEAD_name, &const_READ_AHEAD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  624|      2|	zend_string_release_ex(const_READ_AHEAD_name, true);
  625|       |
  626|      2|	zval const_SKIP_EMPTY_value;
  627|      2|	ZVAL_LONG(&const_SKIP_EMPTY_value, SPL_FILE_OBJECT_SKIP_EMPTY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  628|      2|	zend_string *const_SKIP_EMPTY_name = zend_string_init_interned("SKIP_EMPTY", sizeof("SKIP_EMPTY") - 1, true);
  629|      2|	zend_declare_typed_class_constant(class_entry, const_SKIP_EMPTY_name, &const_SKIP_EMPTY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_SKIP_EMPTY_name, &const_SKIP_EMPTY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  630|      2|	zend_string_release_ex(const_SKIP_EMPTY_name, true);
  631|       |
  632|      2|	zval const_READ_CSV_value;
  633|      2|	ZVAL_LONG(&const_READ_CSV_value, SPL_FILE_OBJECT_READ_CSV);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  634|      2|	zend_string *const_READ_CSV_name = zend_string_init_interned("READ_CSV", sizeof("READ_CSV") - 1, true);
  635|      2|	zend_declare_typed_class_constant(class_entry, const_READ_CSV_name, &const_READ_CSV_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_READ_CSV_name, &const_READ_CSV_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  636|      2|	zend_string_release_ex(const_READ_CSV_name, true);
  637|       |
  638|      2|	return class_entry;
  639|      2|}
spl_directory.c:register_class_SplTempFileObject:
  642|      2|{
  643|      2|	zend_class_entry ce, *class_entry;
  644|       |
  645|      2|	INIT_CLASS_ENTRY(ce, "SplTempFileObject", class_SplTempFileObject_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  646|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplFileObject, 0);
  647|       |
  648|      2|	return class_entry;
  649|      2|}

zm_startup_spl_dllist:
 1198|      2|{
 1199|      2|	spl_ce_SplDoublyLinkedList = register_class_SplDoublyLinkedList(
 1200|      2|		zend_ce_iterator, zend_ce_countable, zend_ce_arrayaccess, zend_ce_serializable
 1201|      2|	);
 1202|      2|	spl_ce_SplDoublyLinkedList->create_object = spl_dllist_object_new;
 1203|      2|	spl_ce_SplDoublyLinkedList->default_object_handlers = &spl_handler_SplDoublyLinkedList;
 1204|      2|	spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator;
 1205|       |
 1206|      2|	memcpy(&spl_handler_SplDoublyLinkedList, &std_object_handlers, sizeof(zend_object_handlers));
 1207|       |
 1208|      2|	spl_handler_SplDoublyLinkedList.offset = offsetof(spl_dllist_object, std);
 1209|      2|	spl_handler_SplDoublyLinkedList.clone_obj = spl_dllist_object_clone;
 1210|      2|	spl_handler_SplDoublyLinkedList.count_elements = spl_dllist_object_count_elements;
 1211|      2|	spl_handler_SplDoublyLinkedList.get_gc = spl_dllist_object_get_gc;
 1212|      2|	spl_handler_SplDoublyLinkedList.free_obj = spl_dllist_object_free_storage;
 1213|       |
 1214|      2|	spl_ce_SplQueue = register_class_SplQueue(spl_ce_SplDoublyLinkedList);
 1215|      2|	spl_ce_SplQueue->create_object = spl_dllist_object_new;
 1216|      2|	spl_ce_SplQueue->get_iterator = spl_dllist_get_iterator;
 1217|       |
 1218|      2|	spl_ce_SplStack = register_class_SplStack(spl_ce_SplDoublyLinkedList);
 1219|      2|	spl_ce_SplStack->create_object = spl_dllist_object_new;
 1220|      2|	spl_ce_SplStack->get_iterator = spl_dllist_get_iterator;
 1221|       |
 1222|      2|	return SUCCESS;
 1223|      2|}

spl_dllist.c:register_class_SplDoublyLinkedList:
  150|      2|{
  151|      2|	zend_class_entry ce, *class_entry;
  152|       |
  153|      2|	INIT_CLASS_ENTRY(ce, "SplDoublyLinkedList", class_SplDoublyLinkedList_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  154|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  155|      2|	zend_class_implements(class_entry, 4, class_entry_Iterator, class_entry_Countable, class_entry_ArrayAccess, class_entry_Serializable);
  156|       |
  157|      2|	zval const_IT_MODE_LIFO_value;
  158|      2|	ZVAL_LONG(&const_IT_MODE_LIFO_value, SPL_DLLIST_IT_LIFO);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  159|      2|	zend_string *const_IT_MODE_LIFO_name = zend_string_init_interned("IT_MODE_LIFO", sizeof("IT_MODE_LIFO") - 1, true);
  160|      2|	zend_declare_typed_class_constant(class_entry, const_IT_MODE_LIFO_name, &const_IT_MODE_LIFO_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IT_MODE_LIFO_name, &const_IT_MODE_LIFO_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  161|      2|	zend_string_release_ex(const_IT_MODE_LIFO_name, true);
  162|       |
  163|      2|	zval const_IT_MODE_FIFO_value;
  164|      2|	ZVAL_LONG(&const_IT_MODE_FIFO_value, SPL_DLLIST_IT_FIFO);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  165|      2|	zend_string *const_IT_MODE_FIFO_name = zend_string_init_interned("IT_MODE_FIFO", sizeof("IT_MODE_FIFO") - 1, true);
  166|      2|	zend_declare_typed_class_constant(class_entry, const_IT_MODE_FIFO_name, &const_IT_MODE_FIFO_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IT_MODE_FIFO_name, &const_IT_MODE_FIFO_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  167|      2|	zend_string_release_ex(const_IT_MODE_FIFO_name, true);
  168|       |
  169|      2|	zval const_IT_MODE_DELETE_value;
  170|      2|	ZVAL_LONG(&const_IT_MODE_DELETE_value, SPL_DLLIST_IT_DELETE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  171|      2|	zend_string *const_IT_MODE_DELETE_name = zend_string_init_interned("IT_MODE_DELETE", sizeof("IT_MODE_DELETE") - 1, true);
  172|      2|	zend_declare_typed_class_constant(class_entry, const_IT_MODE_DELETE_name, &const_IT_MODE_DELETE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IT_MODE_DELETE_name, &const_IT_MODE_DELETE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  173|      2|	zend_string_release_ex(const_IT_MODE_DELETE_name, true);
  174|       |
  175|      2|	zval const_IT_MODE_KEEP_value;
  176|      2|	ZVAL_LONG(&const_IT_MODE_KEEP_value, SPL_DLLIST_IT_KEEP);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  177|      2|	zend_string *const_IT_MODE_KEEP_name = zend_string_init_interned("IT_MODE_KEEP", sizeof("IT_MODE_KEEP") - 1, true);
  178|      2|	zend_declare_typed_class_constant(class_entry, const_IT_MODE_KEEP_name, &const_IT_MODE_KEEP_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_IT_MODE_KEEP_name, &const_IT_MODE_KEEP_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  179|      2|	zend_string_release_ex(const_IT_MODE_KEEP_name, true);
  180|       |
  181|      2|	return class_entry;
  182|      2|}
spl_dllist.c:register_class_SplQueue:
  185|      2|{
  186|      2|	zend_class_entry ce, *class_entry;
  187|       |
  188|      2|	INIT_CLASS_ENTRY(ce, "SplQueue", class_SplQueue_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  189|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplDoublyLinkedList, 0);
  190|       |
  191|      2|	return class_entry;
  192|      2|}
spl_dllist.c:register_class_SplStack:
  195|      2|{
  196|      2|	zend_class_entry ce, *class_entry;
  197|       |
  198|      2|	INIT_CLASS_ENTRY(ce, "SplStack", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  199|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplDoublyLinkedList, 0);
  200|       |
  201|      2|	return class_entry;
  202|      2|}

zm_startup_spl_exceptions:
   44|      2|{
   45|      2|	spl_ce_LogicException = register_class_LogicException(zend_ce_exception);
   46|      2|	spl_ce_BadFunctionCallException = register_class_BadFunctionCallException(spl_ce_LogicException);
   47|      2|	spl_ce_BadMethodCallException = register_class_BadMethodCallException(spl_ce_BadFunctionCallException);
   48|      2|	spl_ce_DomainException = register_class_DomainException(spl_ce_LogicException);
   49|      2|	spl_ce_InvalidArgumentException = register_class_InvalidArgumentException(spl_ce_LogicException);
   50|      2|	spl_ce_LengthException = register_class_LengthException(spl_ce_LogicException);
   51|      2|	spl_ce_OutOfRangeException = register_class_OutOfRangeException(spl_ce_LogicException);
   52|       |
   53|      2|	spl_ce_RuntimeException = register_class_RuntimeException(zend_ce_exception);
   54|      2|	spl_ce_OutOfBoundsException = register_class_OutOfBoundsException(spl_ce_RuntimeException);
   55|      2|	spl_ce_OverflowException = register_class_OverflowException(spl_ce_RuntimeException);
   56|      2|	spl_ce_RangeException = register_class_RangeException(spl_ce_RuntimeException);
   57|      2|	spl_ce_UnderflowException = register_class_UnderflowException(spl_ce_RuntimeException);
   58|      2|	spl_ce_UnexpectedValueException = register_class_UnexpectedValueException(spl_ce_RuntimeException);
   59|       |
   60|      2|	return SUCCESS;
   61|      2|}

spl_exceptions.c:register_class_LogicException:
    5|      2|{
    6|      2|	zend_class_entry ce, *class_entry;
    7|       |
    8|      2|	INIT_CLASS_ENTRY(ce, "LogicException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
    9|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
   10|       |
   11|      2|	return class_entry;
   12|      2|}
spl_exceptions.c:register_class_BadFunctionCallException:
   15|      2|{
   16|      2|	zend_class_entry ce, *class_entry;
   17|       |
   18|      2|	INIT_CLASS_ENTRY(ce, "BadFunctionCallException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   19|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_LogicException, 0);
   20|       |
   21|      2|	return class_entry;
   22|      2|}
spl_exceptions.c:register_class_BadMethodCallException:
   25|      2|{
   26|      2|	zend_class_entry ce, *class_entry;
   27|       |
   28|      2|	INIT_CLASS_ENTRY(ce, "BadMethodCallException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   29|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_BadFunctionCallException, 0);
   30|       |
   31|      2|	return class_entry;
   32|      2|}
spl_exceptions.c:register_class_DomainException:
   35|      2|{
   36|      2|	zend_class_entry ce, *class_entry;
   37|       |
   38|      2|	INIT_CLASS_ENTRY(ce, "DomainException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   39|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_LogicException, 0);
   40|       |
   41|      2|	return class_entry;
   42|      2|}
spl_exceptions.c:register_class_InvalidArgumentException:
   45|      2|{
   46|      2|	zend_class_entry ce, *class_entry;
   47|       |
   48|      2|	INIT_CLASS_ENTRY(ce, "InvalidArgumentException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   49|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_LogicException, 0);
   50|       |
   51|      2|	return class_entry;
   52|      2|}
spl_exceptions.c:register_class_LengthException:
   55|      2|{
   56|      2|	zend_class_entry ce, *class_entry;
   57|       |
   58|      2|	INIT_CLASS_ENTRY(ce, "LengthException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   59|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_LogicException, 0);
   60|       |
   61|      2|	return class_entry;
   62|      2|}
spl_exceptions.c:register_class_OutOfRangeException:
   65|      2|{
   66|      2|	zend_class_entry ce, *class_entry;
   67|       |
   68|      2|	INIT_CLASS_ENTRY(ce, "OutOfRangeException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   69|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_LogicException, 0);
   70|       |
   71|      2|	return class_entry;
   72|      2|}
spl_exceptions.c:register_class_RuntimeException:
   75|      2|{
   76|      2|	zend_class_entry ce, *class_entry;
   77|       |
   78|      2|	INIT_CLASS_ENTRY(ce, "RuntimeException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   79|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
   80|       |
   81|      2|	return class_entry;
   82|      2|}
spl_exceptions.c:register_class_OutOfBoundsException:
   85|      2|{
   86|      2|	zend_class_entry ce, *class_entry;
   87|       |
   88|      2|	INIT_CLASS_ENTRY(ce, "OutOfBoundsException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   89|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RuntimeException, 0);
   90|       |
   91|      2|	return class_entry;
   92|      2|}
spl_exceptions.c:register_class_OverflowException:
   95|      2|{
   96|      2|	zend_class_entry ce, *class_entry;
   97|       |
   98|      2|	INIT_CLASS_ENTRY(ce, "OverflowException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   99|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RuntimeException, 0);
  100|       |
  101|      2|	return class_entry;
  102|      2|}
spl_exceptions.c:register_class_RangeException:
  105|      2|{
  106|      2|	zend_class_entry ce, *class_entry;
  107|       |
  108|      2|	INIT_CLASS_ENTRY(ce, "RangeException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  109|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RuntimeException, 0);
  110|       |
  111|      2|	return class_entry;
  112|      2|}
spl_exceptions.c:register_class_UnderflowException:
  115|      2|{
  116|      2|	zend_class_entry ce, *class_entry;
  117|       |
  118|      2|	INIT_CLASS_ENTRY(ce, "UnderflowException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  119|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RuntimeException, 0);
  120|       |
  121|      2|	return class_entry;
  122|      2|}
spl_exceptions.c:register_class_UnexpectedValueException:
  125|      2|{
  126|      2|	zend_class_entry ce, *class_entry;
  127|       |
  128|      2|	INIT_CLASS_ENTRY(ce, "UnexpectedValueException", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  129|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RuntimeException, 0);
  130|       |
  131|      2|	return class_entry;
  132|      2|}

zim_SplFixedArray___construct:
  530|      7|{
  531|      7|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      7|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      7|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  532|      7|	spl_fixedarray_object *intern;
  533|      7|	zend_long size = 0;
  534|       |
  535|      7|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &size) == FAILURE) {
  ------------------
  |  |  529|      7|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (535:6): [True: 1, False: 6]
  ------------------
  536|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (536:3): [True: 0, False: 1]
  |  Branch (536:3): [True: 1, False: 0]
  ------------------
  537|      1|	}
  538|       |
  539|      6|	if (size < 0) {
  ------------------
  |  Branch (539:6): [True: 0, False: 6]
  ------------------
  540|      0|		zend_argument_value_error(1, "must be greater than or equal to 0");
  541|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (541:3): [True: 0, False: 0]
  |  Branch (541:3): [True: 0, False: 0]
  ------------------
  542|      0|	}
  543|       |
  544|      6|	intern = Z_SPLFIXEDARRAY_P(object);
  ------------------
  |  |   58|      6|#define Z_SPLFIXEDARRAY_P(zv)  spl_fixed_array_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |   56|      6|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      6|	_Generic( \
  |  |  |  |  |  |  408|      6|		(ptr), \
  |  |  |  |  |  |  409|      6|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      6|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      6|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  545|       |
  546|      6|	if (!spl_fixedarray_empty(&intern->array)) {
  ------------------
  |  Branch (546:6): [True: 0, False: 6]
  ------------------
  547|       |		/* called __construct() twice, bail out */
  548|      0|		return;
  549|      0|	}
  550|       |
  551|      6|	spl_fixedarray_init(&intern->array, size);
  552|      6|}
zm_startup_spl_fixedarray:
  943|      2|{
  944|      2|	spl_ce_SplFixedArray = register_class_SplFixedArray(
  945|      2|		zend_ce_aggregate, zend_ce_arrayaccess, zend_ce_countable, php_json_serializable_ce);
  946|      2|	spl_ce_SplFixedArray->create_object = spl_fixedarray_new;
  947|      2|	spl_ce_SplFixedArray->default_object_handlers = &spl_handler_SplFixedArray;
  948|      2|	spl_ce_SplFixedArray->get_iterator = spl_fixedarray_get_iterator;
  949|       |
  950|      2|	memcpy(&spl_handler_SplFixedArray, &std_object_handlers, sizeof(zend_object_handlers));
  951|       |
  952|      2|	spl_handler_SplFixedArray.offset          = offsetof(spl_fixedarray_object, std);
  953|      2|	spl_handler_SplFixedArray.clone_obj       = spl_fixedarray_object_clone;
  954|      2|	spl_handler_SplFixedArray.read_dimension  = spl_fixedarray_object_read_dimension;
  955|      2|	spl_handler_SplFixedArray.write_dimension = spl_fixedarray_object_write_dimension;
  956|      2|	spl_handler_SplFixedArray.unset_dimension = spl_fixedarray_object_unset_dimension;
  957|      2|	spl_handler_SplFixedArray.has_dimension   = spl_fixedarray_object_has_dimension;
  958|      2|	spl_handler_SplFixedArray.count_elements  = spl_fixedarray_object_count_elements;
  959|      2|	spl_handler_SplFixedArray.get_properties_for = spl_fixedarray_object_get_properties_for;
  960|      2|	spl_handler_SplFixedArray.get_gc          = spl_fixedarray_object_get_gc;
  961|      2|	spl_handler_SplFixedArray.free_obj        = spl_fixedarray_object_free_storage;
  962|       |
  963|      2|	return SUCCESS;
  964|      2|}
spl_fixedarray.c:spl_fixedarray_empty:
   66|     13|{
   67|     13|	if (array->elements) {
  ------------------
  |  Branch (67:6): [True: 6, False: 7]
  ------------------
   68|      6|		ZEND_ASSERT(array->size > 0);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (68:3): [True: 0, False: 6]
  |  Branch (68:3): [True: 6, False: 0]
  ------------------
   69|      6|		return false;
   70|      6|	}
   71|      7|	ZEND_ASSERT(array->size == 0);
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (71:2): [True: 0, False: 7]
  |  Branch (71:2): [True: 7, False: 0]
  ------------------
   72|      7|	return true;
   73|      7|}
spl_fixedarray.c:spl_fixedarray_init:
  102|      6|{
  103|      6|	if (size > 0) {
  ------------------
  |  Branch (103:6): [True: 6, False: 0]
  ------------------
  104|      6|		spl_fixedarray_init_non_empty_struct(array, size);
  105|      6|		spl_fixedarray_init_elems(array, 0, size);
  106|      6|	} else {
  107|      0|		spl_fixedarray_default_ctor(array);
  108|      0|	}
  109|      6|}
spl_fixedarray.c:spl_fixedarray_init_elems:
   84|      6|{
   85|      6|	ZEND_ASSERT(from <= to);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (85:2): [True: 0, False: 6]
  |  Branch (85:2): [True: 6, False: 0]
  ------------------
   86|      6|	zval *begin = array->elements + from, *end = array->elements + to;
   87|       |
   88|  2.09M|	while (begin != end) {
  ------------------
  |  Branch (88:9): [True: 2.09M, False: 6]
  ------------------
   89|  2.09M|		ZVAL_NULL(begin++);
  ------------------
  |  | 1059|  2.09M|#define ZVAL_NULL(z) do {				\
  |  | 1060|  2.09M|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|  2.09M|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  2.09M|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|  2.09M|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|  2.09M|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2.09M]
  |  |  ------------------
  ------------------
   90|  2.09M|	}
   91|      6|}
spl_fixedarray.c:spl_fixedarray_init_non_empty_struct:
   94|      6|{
   95|      6|	array->size = 0; /* reset size in case ecalloc() fails */
   96|      6|	array->elements = size ? safe_emalloc(size, sizeof(zval), 0) : NULL;
  ------------------
  |  |  153|      6|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (96:20): [True: 6, False: 0]
  ------------------
   97|      6|	array->size = size;
   98|      6|	array->cached_resize = -1;
   99|      6|}
spl_fixedarray.c:spl_fixedarray_dtor:
  151|      7|{
  152|      7|	if (!spl_fixedarray_empty(array)) {
  ------------------
  |  Branch (152:6): [True: 6, False: 1]
  ------------------
  153|      6|		zval *begin = array->elements, *end = array->elements + array->size;
  154|      6|		array->elements = NULL;
  155|      6|		array->size = 0;
  156|  2.09M|		while (begin != end) {
  ------------------
  |  Branch (156:10): [True: 2.09M, False: 6]
  ------------------
  157|  2.09M|			zval_ptr_dtor(--end);
  158|  2.09M|		}
  159|       |		efree(begin);
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  160|      6|	}
  161|      7|}
spl_fixedarray.c:spl_offset_convert_to_ulong:
  349|      5|{
  350|      5|	if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
  ------------------
  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  351|       |		/* Allow skipping exception check at call-site. */
  352|      5|		ZEND_ASSERT(!EG(exception));
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (352:3): [True: 0, False: 5]
  |  Branch (352:3): [True: 5, False: 0]
  ------------------
  353|      5|		return Z_LVAL_P(offset);
  ------------------
  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  354|      5|	} else {
  355|      0|		return spl_offset_convert_to_ulong_slow(offset);
  356|      0|	}
  357|      5|}
spl_fixedarray.c:spl_fixedarray_object_read_dimension_helper:
  360|      2|{
  361|       |	/* we have to return NULL on error here to avoid memleak because of
  362|       |	 * ZE duplicating uninitialized_zval_ptr */
  363|      2|	if (UNEXPECTED(!offset)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  364|      0|		zend_throw_error(NULL, "[] operator not supported for SplFixedArray");
  365|      0|		return NULL;
  366|      0|	}
  367|       |
  368|      2|	zend_ulong index = spl_offset_convert_to_ulong(offset);
  369|      2|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  370|      0|		return NULL;
  371|      0|	}
  372|       |
  373|      2|	if (UNEXPECTED(index >= intern->array.size)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  374|      0|		zend_throw_exception(spl_ce_OutOfBoundsException, "Index invalid or out of range", 0);
  375|      0|		return NULL;
  376|      2|	} else {
  377|      2|		return &intern->array.elements[index];
  378|      2|	}
  379|      2|}
spl_fixedarray.c:spl_fixedarray_object_write_dimension_helper:
  407|      3|{
  408|      3|	if (UNEXPECTED(!offset)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  409|       |		/* '$array[] = value' syntax is not supported */
  410|      0|		zend_throw_error(NULL, "[] operator not supported for SplFixedArray");
  411|      0|		return;
  412|      0|	}
  413|       |
  414|      3|	zend_ulong index = spl_offset_convert_to_ulong(offset);
  415|      3|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  416|      0|		return;
  417|      0|	}
  418|       |
  419|      3|	if (UNEXPECTED(index >= intern->array.size)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
  420|      1|		zend_throw_exception(spl_ce_OutOfBoundsException, "Index invalid or out of range", 0);
  421|      2|	} else {
  422|       |		/* Fix #81429 */
  423|      2|		zval *ptr = &(intern->array.elements[index]);
  424|       |		/* This should be guaranteed by the VM handler or argument parsing. */
  425|      2|		ZEND_ASSERT(Z_TYPE_P(value) != IS_REFERENCE);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (425:3): [True: 0, False: 2]
  |  Branch (425:3): [True: 2, False: 0]
  ------------------
  426|      2|		Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      1|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      1|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  427|      2|		zend_safe_assign_to_variable_noref(ptr, value);
  428|      2|	}
  429|      3|}
spl_fixedarray.c:spl_fixedarray_new:
  300|      7|{
  301|      7|	return spl_fixedarray_object_new_ex(class_type, NULL, false);
  302|      7|}
spl_fixedarray.c:spl_fixedarray_object_new_ex:
  273|      7|{
  274|      7|	spl_fixedarray_object *intern;
  275|      7|	zend_class_entry      *parent = class_type;
  276|       |
  277|      7|	intern = zend_object_alloc(sizeof(spl_fixedarray_object), parent);
  278|       |
  279|      7|	zend_object_std_init(&intern->std, class_type);
  280|      7|	object_properties_init(&intern->std, class_type);
  281|       |
  282|      7|	if (orig && clone_orig) {
  ------------------
  |  Branch (282:6): [True: 0, False: 7]
  |  Branch (282:14): [True: 0, False: 0]
  ------------------
  283|      0|		spl_fixedarray_object *other = spl_fixed_array_from_obj(orig);
  ------------------
  |  |   56|      0|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  ------------------
  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      0|	)
  |  |  ------------------
  ------------------
  284|      0|		spl_fixedarray_copy_ctor(&intern->array, &other->array);
  285|      0|	}
  286|       |
  287|      7|	if (UNEXPECTED(class_type != spl_ce_SplFixedArray)) {
  ------------------
  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  288|       |		/* Find count() method */
  289|      0|		zend_function *fptr_count = zend_hash_find_ptr(&class_type->function_table, ZSTR_KNOWN(ZEND_STR_COUNT));
  290|      0|		if (fptr_count->common.scope == spl_ce_SplFixedArray) {
  ------------------
  |  Branch (290:7): [True: 0, False: 0]
  ------------------
  291|      0|			fptr_count = NULL;
  292|      0|		}
  293|      0|		intern->fptr_count = fptr_count;
  294|      0|	}
  295|       |
  296|      7|	return &intern->std;
  297|      7|}
spl_fixedarray.c:spl_fixedarray_object_read_dimension:
  384|      2|{
  385|      2|	if (type == BP_VAR_IS && !spl_fixedarray_object_has_dimension(object, offset, 0)) {
  ------------------
  |  | 1077|      4|#define BP_VAR_IS			3
  ------------------
  |  Branch (385:6): [True: 0, False: 2]
  |  Branch (385:27): [True: 0, False: 0]
  ------------------
  386|      0|		return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  387|      0|	}
  388|       |
  389|      2|	if (HAS_FIXEDARRAY_ARRAYACCESS_OVERRIDE(object, zf_offsetget)) {
  ------------------
  |  |   35|      2|#define HAS_FIXEDARRAY_ARRAYACCESS_OVERRIDE(object, method) UNEXPECTED((object)->ce != spl_ce_SplFixedArray && (object)->ce->arrayaccess_funcs_ptr->method->common.scope != spl_ce_SplFixedArray)
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  390|      0|		zval tmp;
  391|      0|		if (!offset) {
  ------------------
  |  Branch (391:7): [True: 0, False: 0]
  ------------------
  392|      0|			ZVAL_NULL(&tmp);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  393|      0|			offset = &tmp;
  394|      0|		}
  395|      0|		zend_call_known_instance_method_with_1_params(object->ce->arrayaccess_funcs_ptr->zf_offsetget, object, rv, offset);
  396|      0|		if (!Z_ISUNDEF_P(rv)) {
  ------------------
  |  |  967|      0|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      0|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (396:7): [True: 0, False: 0]
  ------------------
  397|      0|			return rv;
  398|      0|		}
  399|      0|		return &EG(uninitialized_zval);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  400|      0|	}
  401|       |
  402|      2|	spl_fixedarray_object *intern = spl_fixed_array_from_obj(object);
  ------------------
  |  |   56|      2|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  ------------------
  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      2|	)
  |  |  ------------------
  ------------------
  403|      2|	return spl_fixedarray_object_read_dimension_helper(intern, offset);
  404|      2|}
spl_fixedarray.c:spl_fixedarray_object_write_dimension:
  432|      3|{
  433|      3|	if (HAS_FIXEDARRAY_ARRAYACCESS_OVERRIDE(object, zf_offsetset)) {
  ------------------
  |  |   35|      3|#define HAS_FIXEDARRAY_ARRAYACCESS_OVERRIDE(object, method) UNEXPECTED((object)->ce != spl_ce_SplFixedArray && (object)->ce->arrayaccess_funcs_ptr->method->common.scope != spl_ce_SplFixedArray)
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  Branch (457:52): [True: 0, False: 3]
  |  |  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  434|      0|		zval tmp;
  435|       |
  436|      0|		if (!offset) {
  ------------------
  |  Branch (436:7): [True: 0, False: 0]
  ------------------
  437|      0|			ZVAL_NULL(&tmp);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  438|      0|			offset = &tmp;
  439|      0|		}
  440|      0|		zend_call_known_instance_method_with_2_params(object->ce->arrayaccess_funcs_ptr->zf_offsetset, object, NULL, offset, value);
  441|      0|		return;
  442|      0|	}
  443|       |
  444|      3|	spl_fixedarray_object *intern = spl_fixed_array_from_obj(object);
  ------------------
  |  |   56|      3|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  ------------------
  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      3|	)
  |  |  ------------------
  ------------------
  445|      3|	spl_fixedarray_object_write_dimension_helper(intern, offset, value);
  446|      3|}
spl_fixedarray.c:spl_fixedarray_object_get_properties_for:
  222|      1|{
  223|       |	/* This has __serialize, so the purpose is not ZEND_PROP_PURPOSE_SERIALIZE, which would expect a non-null return value */
  224|      1|	ZEND_ASSERT(purpose != ZEND_PROP_PURPOSE_SERIALIZE);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (224:2): [True: 0, False: 1]
  |  Branch (224:2): [True: 1, False: 0]
  ------------------
  225|       |
  226|      1|	const spl_fixedarray_object *intern = spl_fixed_array_from_obj(obj);
  ------------------
  |  |   56|      1|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  ------------------
  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      1|	)
  |  |  ------------------
  ------------------
  227|       |	/*
  228|       |	 * SplFixedArray can be subclassed or have dynamic properties (With or without AllowDynamicProperties in subclasses).
  229|       |	 * Instances of subclasses with declared properties may have properties but not yet have a property table.
  230|       |	 */
  231|      1|	HashTable *source_properties = obj->properties ? obj->properties : (obj->ce->default_properties_count ? zend_std_get_properties(obj) : NULL);
  ------------------
  |  Branch (231:33): [True: 0, False: 1]
  |  Branch (231:70): [True: 0, False: 1]
  ------------------
  232|       |
  233|      1|	const zend_long size = intern->array.size;
  234|      1|	if (size == 0 && (!source_properties || !zend_hash_num_elements(source_properties))) {
  ------------------
  |  Branch (234:6): [True: 0, False: 1]
  |  Branch (234:20): [True: 0, False: 0]
  |  Branch (234:42): [True: 0, False: 0]
  ------------------
  235|      0|		return NULL;
  236|      0|	}
  237|      1|	zval *const elements = intern->array.elements;
  238|      1|	HashTable *ht = zend_new_array(size);
  ------------------
  |  |  342|      1|	_zend_new_array(size)
  ------------------
  239|       |
  240|       |	/* The array elements are not *real properties*. */
  241|      1|	if (purpose != ZEND_PROP_PURPOSE_GET_OBJECT_VARS) {
  ------------------
  |  Branch (241:6): [True: 1, False: 0]
  ------------------
  242|  2.09M|		for (zend_long i = 0; i < size; i++) {
  ------------------
  |  Branch (242:25): [True: 2.09M, False: 1]
  ------------------
  243|  2.09M|			Z_TRY_ADDREF_P(&elements[i]);
  ------------------
  |  | 1285|  2.09M|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  2.09M|	zval *_pz = (pz);				\
  |  | 1287|  2.09M|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  2.09M|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  2.09M|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  2.09M|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 2.09M]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|  2.09M|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2.09M]
  |  |  ------------------
  ------------------
  244|  2.09M|			zend_hash_next_index_insert(ht, &elements[i]);
  245|  2.09M|		}
  246|      1|	}
  247|       |
  248|      1|	if (source_properties && zend_hash_num_elements(source_properties) > 0) {
  ------------------
  |  Branch (248:6): [True: 0, False: 1]
  |  Branch (248:27): [True: 0, False: 0]
  ------------------
  249|      0|		zend_long nkey;
  250|      0|		zend_string *skey;
  251|      0|		zval *value;
  252|      0|		ZEND_HASH_MAP_FOREACH_KEY_VAL_IND(source_properties, nkey, skey, value) {
  ------------------
  |  | 1426|      0|	ZEND_HASH_MAP_FOREACH(ht, 1); \
  |  |  ------------------
  |  |  |  | 1274|      0|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      0|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      0|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      0|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      0|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      0|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [True: 0, Folded]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1427|      0|	_h = _p->h; \
  |  | 1428|      0|	_key = _p->key; \
  |  | 1429|      0|	_val = _z;
  ------------------
  |  Branch (252:3): [True: 0, False: 0]
  |  Branch (252:3): [True: 0, False: 0]
  ------------------
  253|      0|			Z_TRY_ADDREF_P(value);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|      0|			if (skey) {
  ------------------
  |  Branch (254:8): [True: 0, False: 0]
  ------------------
  255|      0|				zend_hash_add_new(ht, skey, value);
  256|      0|			} else {
  257|      0|				zend_hash_index_update(ht, nkey, value);
  258|      0|			}
  259|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  260|      0|	}
  261|       |
  262|      1|	return ht;
  263|      1|}
spl_fixedarray.c:spl_fixedarray_object_get_gc:
  208|     12|{
  209|     12|	spl_fixedarray_object *intern = spl_fixed_array_from_obj(obj);
  ------------------
  |  |   56|     12|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  ------------------
  |  |  |  |  407|     12|	_Generic( \
  |  |  |  |  408|     12|		(ptr), \
  |  |  |  |  409|     12|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     12|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     12|	)
  |  |  ------------------
  ------------------
  210|       |
  211|     12|	*table = intern->array.elements;
  212|     12|	*n = (int)intern->array.size;
  213|       |
  214|     12|	if (obj->properties == NULL && obj->ce->default_properties_count == 0) {
  ------------------
  |  Branch (214:6): [True: 12, False: 0]
  |  Branch (214:33): [True: 12, False: 0]
  ------------------
  215|     12|		return NULL;
  216|     12|	} else {
  217|      0|		return zend_std_get_properties(obj);
  218|      0|	}
  219|     12|}
spl_fixedarray.c:spl_fixedarray_object_free_storage:
  266|      7|{
  267|       |	spl_fixedarray_object *intern = spl_fixed_array_from_obj(object);
  ------------------
  |  |   56|      7|#define spl_fixed_array_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_fixedarray_object, std)
  |  |  ------------------
  |  |  |  |  407|      7|	_Generic( \
  |  |  |  |  408|      7|		(ptr), \
  |  |  |  |  409|      7|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      7|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      7|	)
  |  |  ------------------
  ------------------
  268|      7|	spl_fixedarray_dtor(&intern->array);
  269|      7|	zend_object_std_dtor(&intern->std);
  270|      7|}

spl_fixedarray.c:register_class_SplFixedArray:
   92|      2|{
   93|      2|	zend_class_entry ce, *class_entry;
   94|       |
   95|      2|	INIT_CLASS_ENTRY(ce, "SplFixedArray", class_SplFixedArray_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   96|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
   97|      2|	zend_class_implements(class_entry, 4, class_entry_IteratorAggregate, class_entry_ArrayAccess, class_entry_Countable, class_entry_JsonSerializable);
   98|       |
   99|       |
  100|      2|	zend_attribute *attribute_Deprecated_func___wakeup_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "__wakeup", sizeof("__wakeup") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  101|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_4));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  102|      2|	attribute_Deprecated_func___wakeup_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  103|      2|	zend_string *attribute_Deprecated_func___wakeup_0_arg1_str = zend_string_init("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()", strlen("this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()"), 1);
  104|      2|	ZVAL_STR(&attribute_Deprecated_func___wakeup_0->args[1].value, attribute_Deprecated_func___wakeup_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  105|      2|	attribute_Deprecated_func___wakeup_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  106|       |
  107|      2|	return class_entry;
  108|      2|}

zm_startup_spl_heap:
 1324|      2|{
 1325|      2|	spl_ce_SplHeap = register_class_SplHeap(zend_ce_iterator, zend_ce_countable);
 1326|      2|	spl_ce_SplHeap->create_object = spl_heap_object_new;
 1327|      2|	spl_ce_SplHeap->default_object_handlers = &spl_handler_SplHeap;
 1328|      2|	spl_ce_SplHeap->get_iterator = spl_heap_get_iterator;
 1329|       |
 1330|      2|	memcpy(&spl_handler_SplHeap, &std_object_handlers, sizeof(zend_object_handlers));
 1331|       |
 1332|      2|	spl_handler_SplHeap.offset         = offsetof(spl_heap_object, std);
 1333|      2|	spl_handler_SplHeap.clone_obj      = spl_heap_object_clone;
 1334|      2|	spl_handler_SplHeap.count_elements = spl_heap_object_count_elements;
 1335|      2|	spl_handler_SplHeap.get_gc         = spl_heap_object_get_gc;
 1336|      2|	spl_handler_SplHeap.free_obj = spl_heap_object_free_storage;
 1337|       |
 1338|      2|	spl_ce_SplMinHeap = register_class_SplMinHeap(spl_ce_SplHeap);
 1339|      2|	spl_ce_SplMinHeap->create_object = spl_heap_object_new;
 1340|      2|	spl_ce_SplMinHeap->get_iterator = spl_heap_get_iterator;
 1341|       |
 1342|      2|	spl_ce_SplMaxHeap = register_class_SplMaxHeap(spl_ce_SplHeap);
 1343|      2|	spl_ce_SplMaxHeap->create_object = spl_heap_object_new;
 1344|      2|	spl_ce_SplMaxHeap->get_iterator = spl_heap_get_iterator;
 1345|       |
 1346|      2|	spl_ce_SplPriorityQueue = register_class_SplPriorityQueue(zend_ce_iterator, zend_ce_countable);
 1347|      2|	spl_ce_SplPriorityQueue->create_object = spl_heap_object_new;
 1348|      2|	spl_ce_SplPriorityQueue->default_object_handlers = &spl_handler_SplPriorityQueue;
 1349|      2|	spl_ce_SplPriorityQueue->get_iterator = spl_pqueue_get_iterator;
 1350|       |
 1351|      2|	memcpy(&spl_handler_SplPriorityQueue, &std_object_handlers, sizeof(zend_object_handlers));
 1352|       |
 1353|      2|	spl_handler_SplPriorityQueue.offset         = offsetof(spl_heap_object, std);
 1354|      2|	spl_handler_SplPriorityQueue.clone_obj      = spl_heap_object_clone;
 1355|      2|	spl_handler_SplPriorityQueue.count_elements = spl_heap_object_count_elements;
 1356|      2|	spl_handler_SplPriorityQueue.get_gc         = spl_pqueue_object_get_gc;
 1357|      2|	spl_handler_SplPriorityQueue.free_obj = spl_heap_object_free_storage;
 1358|       |
 1359|      2|	return SUCCESS;
 1360|      2|}

spl_heap.c:register_class_SplHeap:
  207|      2|{
  208|      2|	zend_class_entry ce, *class_entry;
  209|       |
  210|      2|	INIT_CLASS_ENTRY(ce, "SplHeap", class_SplHeap_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  211|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_ABSTRACT);
  ------------------
  |  |  233|      2|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  212|      2|	zend_class_implements(class_entry, 2, class_entry_Iterator, class_entry_Countable);
  213|       |
  214|      2|	return class_entry;
  215|      2|}
spl_heap.c:register_class_SplMinHeap:
  218|      2|{
  219|      2|	zend_class_entry ce, *class_entry;
  220|       |
  221|      2|	INIT_CLASS_ENTRY(ce, "SplMinHeap", class_SplMinHeap_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  222|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplHeap, 0);
  223|       |
  224|      2|	return class_entry;
  225|      2|}
spl_heap.c:register_class_SplMaxHeap:
  228|      2|{
  229|      2|	zend_class_entry ce, *class_entry;
  230|       |
  231|      2|	INIT_CLASS_ENTRY(ce, "SplMaxHeap", class_SplMaxHeap_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  232|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_SplHeap, 0);
  233|       |
  234|      2|	return class_entry;
  235|      2|}
spl_heap.c:register_class_SplPriorityQueue:
  178|      2|{
  179|      2|	zend_class_entry ce, *class_entry;
  180|       |
  181|      2|	INIT_CLASS_ENTRY(ce, "SplPriorityQueue", class_SplPriorityQueue_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  182|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  183|      2|	zend_class_implements(class_entry, 2, class_entry_Iterator, class_entry_Countable);
  184|       |
  185|      2|	zval const_EXTR_BOTH_value;
  186|      2|	ZVAL_LONG(&const_EXTR_BOTH_value, SPL_PQUEUE_EXTR_BOTH);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  187|      2|	zend_string *const_EXTR_BOTH_name = zend_string_init_interned("EXTR_BOTH", sizeof("EXTR_BOTH") - 1, true);
  188|      2|	zend_declare_typed_class_constant(class_entry, const_EXTR_BOTH_name, &const_EXTR_BOTH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_EXTR_BOTH_name, &const_EXTR_BOTH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  189|      2|	zend_string_release_ex(const_EXTR_BOTH_name, true);
  190|       |
  191|      2|	zval const_EXTR_PRIORITY_value;
  192|      2|	ZVAL_LONG(&const_EXTR_PRIORITY_value, SPL_PQUEUE_EXTR_PRIORITY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  193|      2|	zend_string *const_EXTR_PRIORITY_name = zend_string_init_interned("EXTR_PRIORITY", sizeof("EXTR_PRIORITY") - 1, true);
  194|      2|	zend_declare_typed_class_constant(class_entry, const_EXTR_PRIORITY_name, &const_EXTR_PRIORITY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_EXTR_PRIORITY_name, &const_EXTR_PRIORITY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  195|      2|	zend_string_release_ex(const_EXTR_PRIORITY_name, true);
  196|       |
  197|      2|	zval const_EXTR_DATA_value;
  198|      2|	ZVAL_LONG(&const_EXTR_DATA_value, SPL_PQUEUE_EXTR_DATA);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  199|      2|	zend_string *const_EXTR_DATA_name = zend_string_init_interned("EXTR_DATA", sizeof("EXTR_DATA") - 1, true);
  200|      2|	zend_declare_typed_class_constant(class_entry, const_EXTR_DATA_name, &const_EXTR_DATA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_EXTR_DATA_name, &const_EXTR_DATA_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  201|      2|	zend_string_release_ex(const_EXTR_DATA_name, true);
  202|       |
  203|      2|	return class_entry;
  204|      2|}

zim_RecursiveIteratorIterator___construct:
  657|      2|{
  658|      2|	spl_recursive_it_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveIteratorIterator, zend_ce_iterator, RIT_RecursiveIteratorIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  659|      2|} /* }}} */
zim_CallbackFilterIterator___construct:
 1404|      3|{
 1405|      3|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_CallbackFilterIterator, zend_ce_iterator, DIT_CallbackFilterIterator);
  ------------------
  |  |  587|      3|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1406|      3|} /* }}} */
zim_IteratorIterator_getInnerIterator:
 1410|      2|{
 1411|      2|	spl_dual_it_object   *intern;
 1412|       |
 1413|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1414|       |
 1415|      2|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      2|	do { 																						\
  |  |  149|      2|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      2|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      2|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      2|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      2|		(var) = it; 																			\
  |  |  155|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (1415:2): [True: 0, False: 0]
  |  Branch (1415:2): [True: 0, False: 0]
  ------------------
 1416|       |
 1417|      2|	if (!Z_ISUNDEF(intern->inner.zobject)) {
  ------------------
  |  |  966|      2|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (1417:6): [True: 2, False: 0]
  ------------------
 1418|      2|		zval *value = &intern->inner.zobject;
 1419|      2|		RETURN_COPY_DEREF(value);
  ------------------
  |  | 1067|      2|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      2|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      2|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      2|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      2|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      2|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      2|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      2|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      2|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      2|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      2|			} else {									\
  |  |  |  |  |  | 1517|      2|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      2|			}											\
  |  |  |  |  |  | 1519|      2|		}												\
  |  |  |  |  |  | 1520|      2|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      2|	do {												\
  |  |  |  |  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1420|      2|	} else {
 1421|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1422|      0|	}
 1423|      2|} /* }}} */
zim_IteratorIterator_rewind:
 1507|      3|{
 1508|      3|	spl_dual_it_object   *intern;
 1509|       |
 1510|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1511|       |
 1512|      3|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      3|	do { 																						\
  |  |  149|      3|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      3|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      3|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      3|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 3]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      3|		(var) = it; 																			\
  |  |  155|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (1512:2): [True: 0, False: 0]
  |  Branch (1512:2): [True: 0, False: 0]
  ------------------
 1513|       |
 1514|      3|	spl_dual_it_rewind(intern);
 1515|      3|	spl_dual_it_fetch(intern, 1);
 1516|      3|} /* }}} */
zim_IteratorIterator_valid:
 1520|      6|{
 1521|      6|	spl_dual_it_object   *intern;
 1522|       |
 1523|      6|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      6|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      6|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1524|       |
 1525|      6|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      6|	do { 																						\
  |  |  149|      6|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      6|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      6|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      6|	_Generic( \
  |  |  |  |  |  |  |  |  408|      6|		(ptr), \
  |  |  |  |  |  |  |  |  409|      6|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      6|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      6|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      6|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 6]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      6|		(var) = it; 																			\
  |  |  155|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (1525:2): [True: 0, False: 0]
  |  Branch (1525:2): [True: 0, False: 0]
  ------------------
 1526|       |
 1527|      6|	RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF);
  ------------------
  |  | 1046|      6|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      6|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      6|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      6|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      6|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      4|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      8|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 4, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1528|      6|} /* }}} */
zim_IteratorIterator_current:
 1548|      4|{
 1549|      4|	spl_dual_it_object   *intern;
 1550|       |
 1551|      4|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      4|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      4|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1552|       |
 1553|      4|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      4|	do { 																						\
  |  |  149|      4|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      4|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      4|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      4|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      4|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 4]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      4|		(var) = it; 																			\
  |  |  155|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (1553:2): [True: 0, False: 0]
  |  Branch (1553:2): [True: 0, False: 0]
  ------------------
 1554|       |
 1555|      4|	if (Z_TYPE(intern->current.data) != IS_UNDEF) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(intern->current.data) != IS_UNDEF) {
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (1555:6): [True: 4, False: 0]
  ------------------
 1556|      4|		RETURN_COPY_DEREF(&intern->current.data);
  ------------------
  |  | 1067|      4|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|      4|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|      4|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|      4|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|      4|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      4|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      4|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      0|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      0|			} else {									\
  |  |  |  |  |  | 1517|      0|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      0|			}											\
  |  |  |  |  |  | 1519|      0|		}												\
  |  |  |  |  |  | 1520|      4|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      4|	do {												\
  |  |  |  |  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1557|      4|	} else {
 1558|      0|		RETURN_NULL();
  ------------------
  |  | 1047|      0|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      0|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1559|      0|	}
 1560|      4|} /* }}} */
zim_IteratorIterator_next:
 1564|      3|{
 1565|      3|	spl_dual_it_object   *intern;
 1566|       |
 1567|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1568|       |
 1569|      3|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      3|	do { 																						\
  |  |  149|      3|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      3|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      3|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      3|	_Generic( \
  |  |  |  |  |  |  |  |  408|      3|		(ptr), \
  |  |  |  |  |  |  |  |  409|      3|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      3|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      3|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      3|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 3]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      3|		(var) = it; 																			\
  |  |  155|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  |  Branch (1569:2): [True: 0, False: 0]
  |  Branch (1569:2): [True: 0, False: 0]
  ------------------
 1570|       |
 1571|      3|	spl_dual_it_next(intern, 1);
 1572|      3|	spl_dual_it_fetch(intern, 1);
 1573|      3|} /* }}} */
zim_FilterIterator_rewind:
 1610|      1|{
 1611|      1|	spl_dual_it_object   *intern;
 1612|       |
 1613|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1614|       |
 1615|      1|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      1|	do { 																						\
  |  |  149|      1|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      1|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      1|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      1|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      1|		(var) = it; 																			\
  |  |  155|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1615:2): [True: 0, False: 0]
  |  Branch (1615:2): [True: 0, False: 0]
  ------------------
 1616|      1|	spl_filter_it_rewind(ZEND_THIS, intern);
  ------------------
  |  |  523|      1|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      1|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
 1617|      1|} /* }}} */
zim_RecursiveCallbackFilterIterator___construct:
 1632|      2|{
 1633|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveCallbackFilterIterator, spl_ce_RecursiveIterator, DIT_RecursiveCallbackFilterIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1634|      2|} /* }}} */
zim_ParentIterator___construct:
 1704|      2|{
 1705|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_ParentIterator, spl_ce_RecursiveIterator, DIT_ParentIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1706|      2|} /* }}} */
zim_RegexIterator___construct:
 1710|      2|{
 1711|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RegexIterator, zend_ce_iterator, DIT_RegexIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1712|      2|} /* }}} */
zim_CallbackFilterIterator_accept:
 1716|      1|{
 1717|      1|	spl_dual_it_object *intern;
 1718|       |
 1719|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1720|       |
 1721|      1|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      1|	do { 																						\
  |  |  149|      1|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      1|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      1|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      1|	_Generic( \
  |  |  |  |  |  |  |  |  408|      1|		(ptr), \
  |  |  |  |  |  |  |  |  409|      1|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      1|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      1|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      1|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 1]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      1|		(var) = it; 																			\
  |  |  155|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1721:2): [True: 0, False: 0]
  |  Branch (1721:2): [True: 0, False: 0]
  ------------------
 1722|       |
 1723|      1|	if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
              	if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (1723:6): [True: 0, False: 1]
  |  Branch (1723:50): [True: 0, False: 1]
  ------------------
 1724|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1725|      0|	}
 1726|       |
 1727|      1|	zval params[3];
 1728|      1|	ZVAL_COPY_VALUE(&params[0], &intern->current.data);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1729|      1|	ZVAL_COPY_VALUE(&params[1], &intern->current.key);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1730|      1|	ZVAL_COPY_VALUE(&params[2], &intern->inner.zobject);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1731|       |
 1732|      1|	zend_fcall_info_cache *fcc = &intern->u.callback_filter;
 1733|       |
 1734|      1|	zend_call_known_fcc(fcc, return_value, 3, params, NULL);
 1735|      1|	if (Z_ISUNDEF_P(return_value)) {
  ------------------
  |  |  967|      1|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1736|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1737|      1|	} else if (Z_ISREF_P(return_value)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1738|      1|		zend_unwrap_reference(return_value);
 1739|      1|	}
 1740|      1|}
zim_RecursiveRegexIterator___construct:
 1942|      2|{
 1943|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveRegexIterator, spl_ce_RecursiveIterator, DIT_RecursiveRegexIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1944|      2|} /* }}} */
zim_LimitIterator___construct:
 2165|      4|{
 2166|      4|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_LimitIterator, zend_ce_iterator, DIT_LimitIterator);
  ------------------
  |  |  587|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2167|      4|} /* }}} */
zim_LimitIterator_rewind:
 2171|      2|{
 2172|      2|	spl_dual_it_object   *intern;
 2173|       |
 2174|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2175|       |
 2176|      2|	SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS);
  ------------------
  |  |  148|      2|	do { 																						\
  |  |  149|      2|		spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); 										\
  |  |  ------------------
  |  |  |  |  145|      2|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  143|      2|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|      2|		if (it->dit_type == DIT_Unknown) { 														\
  |  |  ------------------
  |  |  |  Branch (150:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  151|      0|			zend_throw_error(NULL, "The object is in an invalid state as the parent constructor was not called"); 	\
  |  |  152|      0|			RETURN_THROWS(); 																			\
  |  |  ------------------
  |  |  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|      0|		} 																						\
  |  |  154|      2|		(var) = it; 																			\
  |  |  155|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (155:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2176:2): [True: 0, False: 0]
  |  Branch (2176:2): [True: 0, False: 0]
  ------------------
 2177|      2|	spl_dual_it_rewind(intern);
 2178|      2|	spl_limit_it_seek(intern, intern->u.limit.offset);
 2179|      2|} /* }}} */
zim_CachingIterator___construct:
 2328|      2|{
 2329|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_CachingIterator, zend_ce_iterator, DIT_CachingIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2330|      2|} /* }}} */
zim_RecursiveCachingIterator___construct:
 2587|      2|{
 2588|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveCachingIterator, spl_ce_RecursiveIterator, DIT_RecursiveCachingIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2589|      2|} /* }}} */
zim_IteratorIterator___construct:
 2623|      7|{
 2624|      7|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_IteratorIterator, zend_ce_traversable, DIT_IteratorIterator);
  ------------------
  |  |  587|      7|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2625|      7|} /* }}} */
zim_NoRewindIterator___construct:
 2629|      2|{
 2630|      2|	spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_NoRewindIterator, zend_ce_iterator, DIT_NoRewindIterator);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 2631|      2|} /* }}} */
zim_AppendIterator___construct:
 2800|      2|{
 2801|      2|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      2|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      2|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2802|       |
 2803|      2|	spl_dual_it_object *intern = Z_SPLDUAL_IT_P(ZEND_THIS);
  ------------------
  |  |  145|      2|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  143|      2|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      2|	_Generic( \
  |  |  |  |  |  |  408|      2|		(ptr), \
  |  |  |  |  |  |  409|      2|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      2|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      2|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|       |
 2805|       |	/* TODO: This should be converted to a normal Error as this is triggered when calling the constructor twice */
 2806|      2|	if (intern->dit_type != DIT_Unknown) {
  ------------------
  |  Branch (2806:6): [True: 0, False: 2]
  ------------------
 2807|      0|		zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "%s::getIterator() must be called exactly once per instance", ZSTR_VAL(spl_ce_AppendIterator->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2808|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2808:3): [True: 0, False: 0]
  |  Branch (2808:3): [True: 0, False: 0]
  ------------------
 2809|      0|	}
 2810|       |
 2811|      2|	intern->dit_type = DIT_AppendIterator;
 2812|      2|	object_init_ex(&intern->u.append.zarrayit, spl_ce_ArrayIterator);
 2813|      2|	zend_call_method_with_0_params(Z_OBJ(intern->u.append.zarrayit), spl_ce_ArrayIterator, &spl_ce_ArrayIterator->constructor, "__construct", NULL);
  ------------------
  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 2814|      2|	intern->u.append.iterator = spl_ce_ArrayIterator->get_iterator(spl_ce_ArrayIterator, &intern->u.append.zarrayit, 0);
 2815|       |
 2816|      2|} /* }}} */
spl_iterator_apply:
 2932|      2|{
 2933|      2|	zend_object_iterator   *iter;
 2934|      2|	zend_class_entry       *ce = Z_OBJCE_P(obj);
  ------------------
  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2935|       |
 2936|      2|	iter = ce->get_iterator(ce, obj, 0);
 2937|       |
 2938|      2|	if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2939|      0|		goto done;
 2940|      0|	}
 2941|       |
 2942|      2|	iter->index = 0;
 2943|      2|	if (iter->funcs->rewind) {
  ------------------
  |  Branch (2943:6): [True: 2, False: 0]
  ------------------
 2944|      2|		iter->funcs->rewind(iter);
 2945|      2|		if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2946|      1|			goto done;
 2947|      1|		}
 2948|      2|	}
 2949|       |
 2950|      2|	while (iter->funcs->valid(iter) == SUCCESS) {
  ------------------
  |  Branch (2950:9): [True: 1, False: 1]
  ------------------
 2951|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2952|      0|			goto done;
 2953|      0|		}
 2954|      1|		if (apply_func(iter, puser) == ZEND_HASH_APPLY_STOP || EG(exception)) {
  ------------------
  |  |  150|      2|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
              		if (apply_func(iter, puser) == ZEND_HASH_APPLY_STOP || EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2954:7): [True: 0, False: 1]
  ------------------
 2955|      0|			goto done;
 2956|      0|		}
 2957|      1|		iter->index++;
 2958|      1|		iter->funcs->move_forward(iter);
 2959|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2960|      0|			goto done;
 2961|      0|		}
 2962|      1|	}
 2963|       |
 2964|      2|done:
 2965|      2|	if (iter) {
  ------------------
  |  Branch (2965:6): [True: 2, False: 0]
  ------------------
 2966|      2|		zend_iterator_dtor(iter);
 2967|      2|	}
 2968|      2|	return EG(exception) ? FAILURE : SUCCESS;
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 2969|      1|}
zif_iterator_to_array:
 3018|      3|{
 3019|      3|	zval  *obj;
 3020|      3|	bool use_keys = 1;
 3021|       |
 3022|      9|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3023|     12|		Z_PARAM_ITERABLE(obj)
  ------------------
  |  | 1720|      3|	Z_PARAM_ITERABLE_EX(dest, 0)
  |  |  ------------------
  |  |  |  | 1712|      3|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1713|      3|	if (UNEXPECTED(!zend_parse_arg_iterable(_arg, &dest, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1714|      1|		_expected_type = check_null ? Z_EXPECTED_ITERABLE_OR_NULL : Z_EXPECTED_ITERABLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1714:20): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1715|      1|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1716|      1|		break; \
  |  |  |  | 1717|      1|	}
  |  |  ------------------
  ------------------
  |  Branch (3023:3): [True: 3, False: 0]
  |  Branch (3023:3): [True: 0, False: 0]
  |  Branch (3023:3): [True: 3, False: 0]
  |  Branch (3023:3): [True: 0, False: 0]
  |  Branch (3023:3): [True: 3, False: 0]
  |  Branch (3023:3): [True: 0, False: 0]
  |  Branch (3023:3): [True: 0, False: 3]
  |  Branch (3023:3): [True: 3, False: 0]
  |  Branch (3023:3): [True: 0, False: 0]
  |  Branch (3023:3): [True: 0, False: 0]
  ------------------
 3024|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
 3025|      6|		Z_PARAM_BOOL(use_keys)
  ------------------
  |  | 1735|      2|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      1|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3025:3): [True: 2, False: 0]
  |  Branch (3025:3): [True: 0, False: 0]
  |  Branch (3025:3): [True: 0, False: 2]
  |  Branch (3025:3): [True: 2, False: 0]
  |  Branch (3025:3): [True: 2, False: 0]
  |  Branch (3025:3): [True: 0, False: 0]
  |  Branch (3025:3): [True: 2, False: 0]
  |  Branch (3025:3): [True: 0, False: 0]
  |  Branch (3025:3): [True: 0, False: 0]
  |  Branch (3025:3): [True: 0, False: 0]
  ------------------
 3026|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3026:2): [True: 1, False: 0]
  |  Branch (3026:2): [True: 0, False: 0]
  |  Branch (3026:2): [True: 1, False: 0]
  |  Branch (3026:2): [True: 0, False: 0]
  ------------------
 3027|       |
 3028|      2|	if (Z_TYPE_P(obj) == IS_ARRAY) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(obj) == IS_ARRAY) {
  ------------------
  |  |  613|      2|#define IS_ARRAY					7
  ------------------
  |  Branch (3028:6): [True: 0, False: 2]
  ------------------
 3029|      0|		if (use_keys) {
  ------------------
  |  Branch (3029:7): [True: 0, False: 0]
  ------------------
 3030|      0|			RETURN_COPY(obj);
  ------------------
  |  | 1065|      0|#define RETURN_COPY(zv)					do { RETVAL_COPY(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1039|      0|#define RETVAL_COPY(zv)					ZVAL_COPY(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1425|      0|	do {												\
  |  |  |  |  |  | 1426|      0|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1433|      0|		}												\
  |  |  |  |  |  | 1434|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1065:68): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3031|      0|		} else {
 3032|      0|			RETURN_ARR(zend_array_to_list(Z_ARRVAL_P(obj)));
  ------------------
  |  | 1061|      0|#define RETURN_ARR(r)					do { RETVAL_ARR(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1035|      0|#define RETVAL_ARR(r)					ZVAL_ARR(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1061:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3033|      0|		}
 3034|      0|	}
 3035|       |
 3036|      2|	array_init(return_value);
 3037|      2|	spl_iterator_apply(obj, use_keys ? spl_iterator_to_array_apply : spl_iterator_to_values_apply, (void*)return_value);
  ------------------
  |  Branch (3037:26): [True: 1, False: 1]
  ------------------
 3038|      2|} /* }}} */
zm_startup_spl_iterators:
 3121|      2|{
 3122|      2|	spl_ce_RecursiveIterator = register_class_RecursiveIterator(zend_ce_iterator);
 3123|       |
 3124|      2|	spl_ce_OuterIterator = register_class_OuterIterator(zend_ce_iterator);
 3125|       |
 3126|      2|	spl_ce_RecursiveIteratorIterator = register_class_RecursiveIteratorIterator(spl_ce_OuterIterator);
 3127|      2|	spl_ce_RecursiveIteratorIterator->create_object = spl_RecursiveIteratorIterator_new;
 3128|      2|	spl_ce_RecursiveIteratorIterator->default_object_handlers = &spl_handlers_rec_it_it;
 3129|      2|	spl_ce_RecursiveIteratorIterator->get_iterator = spl_recursive_it_get_iterator;
 3130|       |
 3131|      2|	memcpy(&spl_handlers_rec_it_it, &std_object_handlers, sizeof(zend_object_handlers));
 3132|      2|	spl_handlers_rec_it_it.offset = offsetof(spl_recursive_it_object, std);
 3133|      2|	spl_handlers_rec_it_it.get_method = spl_recursive_it_get_method;
 3134|      2|	spl_handlers_rec_it_it.clone_obj = NULL;
 3135|      2|	spl_handlers_rec_it_it.free_obj = spl_RecursiveIteratorIterator_free_storage;
 3136|      2|	spl_handlers_rec_it_it.get_gc = spl_RecursiveIteratorIterator_get_gc;
 3137|       |
 3138|      2|	memcpy(&spl_handlers_dual_it, &std_object_handlers, sizeof(zend_object_handlers));
 3139|      2|	spl_handlers_dual_it.offset = offsetof(spl_dual_it_object, std);
 3140|      2|	spl_handlers_dual_it.get_method = spl_dual_it_get_method;
 3141|      2|	spl_handlers_dual_it.clone_obj = NULL;
 3142|      2|	spl_handlers_dual_it.free_obj = spl_dual_it_free_storage;
 3143|      2|	spl_handlers_dual_it.get_gc = spl_dual_it_get_gc;
 3144|       |
 3145|      2|	spl_ce_IteratorIterator = register_class_IteratorIterator(spl_ce_OuterIterator);
 3146|      2|	spl_ce_IteratorIterator->create_object = spl_dual_it_new;
 3147|      2|	spl_ce_IteratorIterator->default_object_handlers = &spl_handlers_dual_it;
 3148|       |
 3149|      2|	spl_ce_FilterIterator = register_class_FilterIterator(spl_ce_IteratorIterator);
 3150|      2|	spl_ce_FilterIterator->create_object = spl_dual_it_new;
 3151|       |
 3152|      2|	spl_ce_RecursiveFilterIterator = register_class_RecursiveFilterIterator(spl_ce_FilterIterator, spl_ce_RecursiveIterator);
 3153|      2|	spl_ce_RecursiveFilterIterator->create_object = spl_dual_it_new;
 3154|       |
 3155|      2|	spl_ce_CallbackFilterIterator = register_class_CallbackFilterIterator(spl_ce_FilterIterator);
 3156|      2|	spl_ce_CallbackFilterIterator->create_object = spl_dual_it_new;
 3157|       |
 3158|      2|	spl_ce_RecursiveCallbackFilterIterator = register_class_RecursiveCallbackFilterIterator(spl_ce_CallbackFilterIterator, spl_ce_RecursiveIterator);
 3159|      2|	spl_ce_RecursiveCallbackFilterIterator->create_object = spl_dual_it_new;
 3160|       |
 3161|      2|	spl_ce_ParentIterator = register_class_ParentIterator(spl_ce_RecursiveFilterIterator);
 3162|      2|	spl_ce_ParentIterator->create_object = spl_dual_it_new;
 3163|       |
 3164|      2|	spl_ce_SeekableIterator = register_class_SeekableIterator(zend_ce_iterator);
 3165|       |
 3166|      2|	spl_ce_LimitIterator = register_class_LimitIterator(spl_ce_IteratorIterator);
 3167|      2|	spl_ce_LimitIterator->create_object = spl_dual_it_new;
 3168|       |
 3169|      2|	spl_ce_CachingIterator = register_class_CachingIterator(spl_ce_IteratorIterator, zend_ce_arrayaccess, zend_ce_countable, zend_ce_stringable);
 3170|      2|	spl_ce_CachingIterator->create_object = spl_dual_it_new;
 3171|       |
 3172|      2|	spl_ce_RecursiveCachingIterator = register_class_RecursiveCachingIterator(spl_ce_CachingIterator, spl_ce_RecursiveIterator);
 3173|      2|	spl_ce_RecursiveCachingIterator->create_object = spl_dual_it_new;
 3174|       |
 3175|      2|	spl_ce_NoRewindIterator = register_class_NoRewindIterator(spl_ce_IteratorIterator);
 3176|      2|	spl_ce_NoRewindIterator->create_object = spl_dual_it_new;
 3177|       |
 3178|      2|	spl_ce_AppendIterator = register_class_AppendIterator(spl_ce_IteratorIterator);
 3179|      2|	spl_ce_AppendIterator->create_object = spl_dual_it_new;
 3180|       |
 3181|      2|	spl_ce_InfiniteIterator = register_class_InfiniteIterator(spl_ce_IteratorIterator);
 3182|      2|	spl_ce_InfiniteIterator->create_object = spl_dual_it_new;
 3183|       |
 3184|      2|	spl_ce_RegexIterator = register_class_RegexIterator(spl_ce_FilterIterator);
 3185|      2|	spl_ce_RegexIterator->create_object = spl_dual_it_new;
 3186|       |
 3187|      2|	spl_ce_RecursiveRegexIterator = register_class_RecursiveRegexIterator(spl_ce_RegexIterator, spl_ce_RecursiveIterator);
 3188|      2|	spl_ce_RecursiveRegexIterator->create_object = spl_dual_it_new;
 3189|       |
 3190|      2|	spl_ce_EmptyIterator = register_class_EmptyIterator(zend_ce_iterator);
 3191|       |
 3192|      2|	spl_ce_RecursiveTreeIterator = register_class_RecursiveTreeIterator(spl_ce_RecursiveIteratorIterator);
 3193|      2|	spl_ce_RecursiveTreeIterator->create_object = spl_RecursiveTreeIterator_new;
 3194|       |
 3195|      2|	return SUCCESS;
 3196|      2|}
spl_iterators.c:spl_recursive_it_it_construct:
  535|      2|{
  536|      2|	zval *object = ZEND_THIS;
  ------------------
  |  |  523|      2|#define ZEND_THIS                           (&EX(This))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  ------------------
  537|      2|	spl_recursive_it_object *intern;
  538|      2|	zval *iterator;
  539|      2|	zend_class_entry *ce_iterator;
  540|      2|	zend_long mode, flags;
  541|      2|	zval caching_it, aggregate_retval;
  542|       |
  543|      2|	switch (rit_type) {
  544|      0|		case RIT_RecursiveTreeIterator: {
  ------------------
  |  Branch (544:3): [True: 0, False: 2]
  ------------------
  545|      0|			zend_long user_caching_it_flags = CIT_CATCH_GET_CHILD;
  546|      0|			mode = RIT_SELF_FIRST;
  547|      0|			flags = RTIT_BYPASS_KEY;
  548|       |
  549|      0|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "o|lll", &iterator, &flags, &user_caching_it_flags, &mode) == FAILURE) {
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (549:8): [True: 0, False: 0]
  ------------------
  550|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (550:5): [True: 0, False: 0]
  |  Branch (550:5): [True: 0, False: 0]
  ------------------
  551|      0|			}
  552|       |
  553|      0|			if (instanceof_function(Z_OBJCE_P(iterator), zend_ce_aggregate)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (553:8): [True: 0, False: 0]
  ------------------
  554|      0|				if (spl_get_iterator_from_aggregate(
  ------------------
  |  Branch (554:9): [True: 0, False: 0]
  ------------------
  555|      0|						&aggregate_retval, Z_OBJCE_P(iterator), Z_OBJ_P(iterator)) == FAILURE) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						&aggregate_retval, Z_OBJCE_P(iterator), Z_OBJ_P(iterator)) == FAILURE) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  556|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (556:6): [True: 0, False: 0]
  |  Branch (556:6): [True: 0, False: 0]
  ------------------
  557|      0|				}
  558|      0|				iterator = &aggregate_retval;
  559|      0|			} else {
  560|      0|				Z_ADDREF_P(iterator);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  561|      0|			}
  562|       |
  563|      0|			zval params[2];
  564|      0|			ZVAL_COPY_VALUE(&params[0], iterator);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  565|      0|			ZVAL_LONG(&params[1], user_caching_it_flags);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  566|      0|			zend_result is_initialized = object_init_with_constructor(&caching_it, spl_ce_RecursiveCachingIterator, 2, params, NULL);
  567|      0|			zval_ptr_dtor(&params[0]);
  568|      0|			if (is_initialized == FAILURE) {
  ------------------
  |  Branch (568:8): [True: 0, False: 0]
  ------------------
  569|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (569:5): [True: 0, False: 0]
  |  Branch (569:5): [True: 0, False: 0]
  ------------------
  570|      0|			}
  571|       |
  572|      0|			iterator = &caching_it;
  573|      0|			break;
  574|      0|		}
  575|      2|		case RIT_RecursiveIteratorIterator:
  ------------------
  |  Branch (575:3): [True: 2, False: 0]
  ------------------
  576|      2|		default: {
  ------------------
  |  Branch (576:3): [True: 0, False: 2]
  ------------------
  577|      2|			mode = RIT_LEAVES_ONLY;
  578|      2|			flags = 0;
  579|      2|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "o|ll", &iterator, &mode, &flags) == FAILURE) {
  ------------------
  |  |  529|      2|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (579:8): [True: 2, False: 0]
  ------------------
  580|      2|				RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (580:5): [True: 0, False: 2]
  |  Branch (580:5): [True: 2, False: 0]
  ------------------
  581|      2|			}
  582|       |
  583|      0|			if (instanceof_function(Z_OBJCE_P(iterator), zend_ce_aggregate)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (583:8): [True: 0, False: 0]
  ------------------
  584|      0|				if (spl_get_iterator_from_aggregate(
  ------------------
  |  Branch (584:9): [True: 0, False: 0]
  ------------------
  585|      0|						&aggregate_retval, Z_OBJCE_P(iterator), Z_OBJ_P(iterator)) == FAILURE) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						&aggregate_retval, Z_OBJCE_P(iterator), Z_OBJ_P(iterator)) == FAILURE) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  586|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (586:6): [True: 0, False: 0]
  |  Branch (586:6): [True: 0, False: 0]
  ------------------
  587|      0|				}
  588|      0|				iterator = &aggregate_retval;
  589|      0|			} else {
  590|      0|				Z_ADDREF_P(iterator);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  591|      0|			}
  592|      0|			break;
  593|      0|		}
  594|      2|	}
  595|      0|	if (!instanceof_function(Z_OBJCE_P(iterator), spl_ce_RecursiveIterator)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (595:6): [True: 0, False: 0]
  ------------------
  596|      0|		if (iterator) {
  ------------------
  |  Branch (596:7): [True: 0, False: 0]
  ------------------
  597|      0|			zval_ptr_dtor(iterator);
  598|      0|		}
  599|      0|		zend_throw_exception(spl_ce_InvalidArgumentException, "An instance of RecursiveIterator or IteratorAggregate creating it is required", 0);
  600|      0|		return;
  601|      0|	}
  602|       |
  603|      0|	intern = Z_SPLRECURSIVE_IT_P(object);
  ------------------
  |  |  141|      0|#define Z_SPLRECURSIVE_IT_P(zv)  spl_recursive_it_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  139|      0|#define spl_recursive_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_recursive_it_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|      0|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  604|      0|	spl_RecursiveIteratorIterator_free_iterators(intern);
  605|      0|	intern->iterators = emalloc(sizeof(spl_sub_iterator));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|      0|	intern->level = 0;
  607|      0|	intern->mode = mode;
  608|      0|	intern->flags = (int)flags;
  609|      0|	intern->max_depth = -1;
  610|      0|	intern->in_iteration = false;
  611|      0|	intern->ce = Z_OBJCE_P(object);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|       |
  613|      0|	intern->beginIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "beginiteration", sizeof("beginiteration") - 1);
  614|      0|	if (intern->beginIteration->common.scope == ce_base) {
  ------------------
  |  Branch (614:6): [True: 0, False: 0]
  ------------------
  615|      0|		intern->beginIteration = NULL;
  616|      0|	}
  617|      0|	intern->endIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "enditeration", sizeof("enditeration") - 1);
  618|      0|	if (intern->endIteration->common.scope == ce_base) {
  ------------------
  |  Branch (618:6): [True: 0, False: 0]
  ------------------
  619|      0|		intern->endIteration = NULL;
  620|      0|	}
  621|      0|	intern->callHasChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callhaschildren", sizeof("callHasChildren") - 1);
  622|      0|	if (intern->callHasChildren->common.scope == ce_base) {
  ------------------
  |  Branch (622:6): [True: 0, False: 0]
  ------------------
  623|      0|		intern->callHasChildren = NULL;
  624|      0|	}
  625|      0|	intern->callGetChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callgetchildren", sizeof("callGetChildren") - 1);
  626|      0|	if (intern->callGetChildren->common.scope == ce_base) {
  ------------------
  |  Branch (626:6): [True: 0, False: 0]
  ------------------
  627|      0|		intern->callGetChildren = NULL;
  628|      0|	}
  629|      0|	intern->beginChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "beginchildren", sizeof("beginchildren") - 1);
  630|      0|	if (intern->beginChildren->common.scope == ce_base) {
  ------------------
  |  Branch (630:6): [True: 0, False: 0]
  ------------------
  631|      0|		intern->beginChildren = NULL;
  632|      0|	}
  633|      0|	intern->endChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "endchildren", sizeof("endchildren") - 1);
  634|      0|	if (intern->endChildren->common.scope == ce_base) {
  ------------------
  |  Branch (634:6): [True: 0, False: 0]
  ------------------
  635|      0|		intern->endChildren = NULL;
  636|      0|	}
  637|      0|	intern->nextElement = zend_hash_str_find_ptr(&intern->ce->function_table, "nextelement", sizeof("nextElement") - 1);
  638|      0|	if (intern->nextElement->common.scope == ce_base) {
  ------------------
  |  Branch (638:6): [True: 0, False: 0]
  ------------------
  639|      0|		intern->nextElement = NULL;
  640|      0|	}
  641|       |
  642|      0|	ce_iterator = Z_OBJCE_P(iterator); /* respect inheritance, don't use spl_ce_RecursiveIterator */
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|      0|	intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0);
  644|      0|	ZVAL_OBJ(&intern->iterators[0].zobject, Z_OBJ_P(iterator));
  ------------------
  |  | 1140|      0|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      0|		zval *__z = (z);						\
  |  | 1142|      0|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  645|      0|	intern->iterators[0].ce = ce_iterator;
  646|      0|	intern->iterators[0].state = RS_START;
  647|      0|	intern->iterators[0].haschildren = NULL;
  648|      0|	intern->iterators[0].getchildren = NULL;
  649|       |
  650|      0|	if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  651|      0|		spl_RecursiveIteratorIterator_free_iterators(intern);
  652|      0|	}
  653|      0|}
spl_iterators.c:spl_RecursiveIteratorIterator_free_iterators:
  521|      4|{
  522|      4|	if (object->iterators) {
  ------------------
  |  Branch (522:6): [True: 0, False: 4]
  ------------------
  523|      0|		while (object->level >= 0) {
  ------------------
  |  Branch (523:10): [True: 0, False: 0]
  ------------------
  524|      0|			zend_object_iterator *sub_iter = object->iterators[object->level].iterator;
  525|      0|			zend_iterator_dtor(sub_iter);
  526|      0|			zval_ptr_dtor(&object->iterators[object->level].zobject);
  527|      0|			object->level--;
  528|      0|		}
  529|      0|		efree(object->iterators);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|       |		object->iterators = NULL;
  531|      0|	}
  532|      4|}
spl_iterators.c:spl_dual_it_construct:
 1260|     28|{
 1261|     28|	zval                 *zobject, retval;
 1262|     28|	spl_dual_it_object   *intern;
 1263|     28|	zend_class_entry     *ce = NULL;
 1264|     28|	int                   inc_refcount = 1;
 1265|     28|	zend_error_handling   error_handling;
 1266|       |
 1267|     28|	intern = Z_SPLDUAL_IT_P(ZEND_THIS);
  ------------------
  |  |  145|     28|#define Z_SPLDUAL_IT_P(zv)  spl_dual_it_from_obj(Z_OBJ_P((zv)))
  |  |  ------------------
  |  |  |  |  143|     28|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  |  |  ------------------
  |  |  |  |  |  |  407|     28|	_Generic( \
  |  |  |  |  |  |  408|     28|		(ptr), \
  |  |  |  |  |  |  409|     28|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  |  |  410|     28|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  |  |  411|     28|	)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1268|       |
 1269|     28|	if (intern->dit_type != DIT_Unknown) {
  ------------------
  |  Branch (1269:6): [True: 0, False: 28]
  ------------------
 1270|      0|		zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "%s::getIterator() must be called exactly once per instance", ZSTR_VAL(ce_base->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1271|      0|		return NULL;
 1272|      0|	}
 1273|       |
 1274|     28|	switch (dit_type) {
 1275|      4|		case DIT_LimitIterator: {
  ------------------
  |  Branch (1275:3): [True: 4, False: 24]
  ------------------
 1276|      4|			intern->u.limit.offset = 0; /* start at beginning */
 1277|      4|			intern->u.limit.count = -1; /* get all */
 1278|      4|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "O|ll", &zobject, ce_inner, &intern->u.limit.offset, &intern->u.limit.count) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1278:8): [True: 2, False: 2]
  ------------------
 1279|      2|				return NULL;
 1280|      2|			}
 1281|      2|			if (intern->u.limit.offset < 0) {
  ------------------
  |  Branch (1281:8): [True: 0, False: 2]
  ------------------
 1282|      0|				zend_argument_value_error(2, "must be greater than or equal to 0");
 1283|      0|				return NULL;
 1284|      0|			}
 1285|      2|			if (intern->u.limit.count < -1) {
  ------------------
  |  Branch (1285:8): [True: 0, False: 2]
  ------------------
 1286|      0|				zend_argument_value_error(3, "must be greater than or equal to -1");
 1287|      0|				return NULL;
 1288|      0|			}
 1289|      2|			break;
 1290|      2|		}
 1291|      2|		case DIT_CachingIterator:
  ------------------
  |  Branch (1291:3): [True: 2, False: 26]
  ------------------
 1292|      4|		case DIT_RecursiveCachingIterator: {
  ------------------
  |  Branch (1292:3): [True: 2, False: 26]
  ------------------
 1293|      4|			zend_long flags = CIT_CALL_TOSTRING;
 1294|      4|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "O|l", &zobject, ce_inner, &flags) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1294:8): [True: 4, False: 0]
  ------------------
 1295|      4|				return NULL;
 1296|      4|			}
 1297|      0|			if (spl_cit_check_flags(flags) != SUCCESS) {
  ------------------
  |  Branch (1297:8): [True: 0, False: 0]
  ------------------
 1298|      0|				zend_argument_value_error(2, "must contain only one of CachingIterator::CALL_TOSTRING, "
 1299|      0|					"CachingIterator::TOSTRING_USE_KEY, CachingIterator::TOSTRING_USE_CURRENT, "
 1300|      0|					"or CachingIterator::TOSTRING_USE_INNER");
 1301|      0|				return NULL;
 1302|      0|			}
 1303|      0|			intern->u.caching.flags |= flags & CIT_PUBLIC;
 1304|      0|			array_init(&intern->u.caching.zcache);
 1305|      0|			break;
 1306|      0|		}
 1307|      7|		case DIT_IteratorIterator: {
  ------------------
  |  Branch (1307:3): [True: 7, False: 21]
  ------------------
 1308|      7|			zend_class_entry *ce_cast;
 1309|      7|			zend_string *class_name = NULL;
 1310|       |
 1311|      7|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "O|S!", &zobject, ce_inner, &class_name) == FAILURE) {
  ------------------
  |  |  529|      7|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1311:8): [True: 2, False: 5]
  ------------------
 1312|      2|				return NULL;
 1313|      2|			}
 1314|      5|			ce = Z_OBJCE_P(zobject);
  ------------------
  |  | 1012|      5|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      5|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1315|      5|			if (!instanceof_function(ce, zend_ce_iterator)) {
  ------------------
  |  Branch (1315:8): [True: 0, False: 5]
  ------------------
 1316|      0|				if (class_name) {
  ------------------
  |  Branch (1316:9): [True: 0, False: 0]
  ------------------
 1317|      0|					if (!(ce_cast = zend_lookup_class(class_name))
  ------------------
  |  Branch (1317:10): [True: 0, False: 0]
  ------------------
 1318|      0|					|| !instanceof_function(ce, ce_cast)
  ------------------
  |  Branch (1318:9): [True: 0, False: 0]
  ------------------
 1319|      0|					|| !ce_cast->get_iterator
  ------------------
  |  Branch (1319:9): [True: 0, False: 0]
  ------------------
 1320|      0|					) {
 1321|      0|						zend_throw_exception(spl_ce_LogicException, "Class to downcast to not found or not base class or does not implement Traversable", 0);
 1322|      0|						return NULL;
 1323|      0|					}
 1324|      0|					ce = ce_cast;
 1325|      0|				}
 1326|      0|				if (instanceof_function(ce, zend_ce_aggregate)) {
  ------------------
  |  Branch (1326:9): [True: 0, False: 0]
  ------------------
 1327|      0|					if (spl_get_iterator_from_aggregate(&retval, ce, Z_OBJ_P(zobject)) == FAILURE) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (1327:10): [True: 0, False: 0]
  ------------------
 1328|      0|						return NULL;
 1329|      0|					}
 1330|      0|					zobject = &retval;
 1331|      0|					ce = Z_OBJCE_P(zobject);
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1332|      0|					inc_refcount = 0;
 1333|      0|				}
 1334|      0|			}
 1335|      5|			break;
 1336|      5|		}
 1337|      5|		case DIT_RegexIterator:
  ------------------
  |  Branch (1337:3): [True: 2, False: 26]
  ------------------
 1338|      4|		case DIT_RecursiveRegexIterator: {
  ------------------
  |  Branch (1338:3): [True: 2, False: 26]
  ------------------
 1339|      4|			zend_string *regex;
 1340|      4|			zend_long mode = REGIT_MODE_MATCH;
 1341|       |
 1342|      4|			intern->u.regex.flags = 0;
 1343|      4|			intern->u.regex.preg_flags = 0;
 1344|      4|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "OS|lll", &zobject, ce_inner, &regex, &mode, &intern->u.regex.flags, &intern->u.regex.preg_flags) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1344:8): [True: 4, False: 0]
  ------------------
 1345|      4|				return NULL;
 1346|      4|			}
 1347|      0|			if (mode < 0 || mode >= REGIT_MODE_MAX) {
  ------------------
  |  Branch (1347:8): [True: 0, False: 0]
  |  Branch (1347:20): [True: 0, False: 0]
  ------------------
 1348|      0|				zend_argument_value_error(3, "must be RegexIterator::MATCH, RegexIterator::GET_MATCH, "
 1349|      0|					"RegexIterator::ALL_MATCHES, RegexIterator::SPLIT, or RegexIterator::REPLACE");
 1350|      0|				return NULL;
 1351|      0|			}
 1352|       |
 1353|       |			/* pcre_get_compiled_regex_cache() might emit E_WARNINGs that we want to promote to exception */
 1354|      0|			zend_replace_error_handling(EH_THROW, spl_ce_InvalidArgumentException, &error_handling);
 1355|      0|			intern->u.regex.pce = pcre_get_compiled_regex_cache(regex);
 1356|      0|			zend_restore_error_handling(&error_handling);
 1357|       |
 1358|      0|			if (intern->u.regex.pce == NULL) {
  ------------------
  |  Branch (1358:8): [True: 0, False: 0]
  ------------------
 1359|       |				/* pcre_get_compiled_regex_cache has already sent error */
 1360|      0|				return NULL;
 1361|      0|			}
 1362|      0|			intern->u.regex.mode = mode;
 1363|      0|			intern->u.regex.regex = zend_string_copy(regex);
 1364|      0|			php_pcre_pce_incref(intern->u.regex.pce);
 1365|      0|			break;
 1366|      0|		}
 1367|      3|		case DIT_CallbackFilterIterator:
  ------------------
  |  Branch (1367:3): [True: 3, False: 25]
  ------------------
 1368|      5|		case DIT_RecursiveCallbackFilterIterator: {
  ------------------
  |  Branch (1368:3): [True: 2, False: 26]
  ------------------
 1369|      5|			zend_fcall_info fci;
 1370|      5|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "OF", &zobject, ce_inner, &fci, &intern->u.callback_filter) == FAILURE) {
  ------------------
  |  |  529|      5|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1370:8): [True: 4, False: 1]
  ------------------
 1371|      4|				return NULL;
 1372|      4|			}
 1373|      1|			zend_fcc_addref(&intern->u.callback_filter);
 1374|      1|			break;
 1375|      5|		}
 1376|      4|		default:
  ------------------
  |  Branch (1376:3): [True: 4, False: 24]
  ------------------
 1377|      4|			if (zend_parse_parameters(ZEND_NUM_ARGS(), "O", &zobject, ce_inner) == FAILURE) {
  ------------------
  |  |  529|      4|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1377:8): [True: 4, False: 0]
  ------------------
 1378|      4|				return NULL;
 1379|      4|			}
 1380|      0|			break;
 1381|     28|	}
 1382|       |
 1383|      8|	intern->dit_type = dit_type;
 1384|      8|	if (inc_refcount) {
  ------------------
  |  Branch (1384:6): [True: 8, False: 0]
  ------------------
 1385|      8|		Z_ADDREF_P(zobject);
  ------------------
  |  | 1277|      8|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 1386|      8|	}
 1387|      8|	ZVAL_OBJ(&intern->inner.zobject, Z_OBJ_P(zobject));
  ------------------
  |  | 1140|      8|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      8|		zval *__z = (z);						\
  |  | 1142|      8|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      8|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      8|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      8|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      8|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      8|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      8|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1388|       |
 1389|      8|	intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject);
  ------------------
  |  | 1012|      3|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|     11|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1389:21): [True: 5, False: 3]
  ------------------
 1390|      8|	intern->inner.object = Z_OBJ_P(zobject);
  ------------------
  |  | 1000|      8|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1391|      8|	intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, zobject, 0);
 1392|       |
 1393|      8|	return intern;
 1394|     28|}
spl_iterators.c:spl_dual_it_rewind:
 1451|      6|{
 1452|      6|	spl_dual_it_free(intern);
 1453|      6|	intern->current.pos = 0;
 1454|      6|	if (intern->inner.iterator && intern->inner.iterator->funcs->rewind) {
  ------------------
  |  Branch (1454:6): [True: 6, False: 0]
  |  Branch (1454:32): [True: 6, False: 0]
  ------------------
 1455|      6|		intern->inner.iterator->funcs->rewind(intern->inner.iterator);
 1456|      6|	}
 1457|      6|}
spl_iterators.c:spl_dual_it_free:
 1426|     53|{
 1427|     53|	if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) {
  ------------------
  |  Branch (1427:6): [True: 27, False: 26]
  |  Branch (1427:32): [True: 0, False: 27]
  ------------------
 1428|      0|		intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator);
 1429|      0|	}
 1430|     53|	if (Z_TYPE(intern->current.data) != IS_UNDEF) {
  ------------------
  |  |  668|     53|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(intern->current.data) != IS_UNDEF) {
  ------------------
  |  |  606|     53|#define IS_UNDEF					0
  ------------------
  |  Branch (1430:6): [True: 5, False: 48]
  ------------------
 1431|      5|		zval_ptr_dtor(&intern->current.data);
 1432|      5|		ZVAL_UNDEF(&intern->current.data);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1433|      5|	}
 1434|     53|	if (Z_TYPE(intern->current.key) != IS_UNDEF) {
  ------------------
  |  |  668|     53|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(intern->current.key) != IS_UNDEF) {
  ------------------
  |  |  606|     53|#define IS_UNDEF					0
  ------------------
  |  Branch (1434:6): [True: 5, False: 48]
  ------------------
 1435|      5|		zval_ptr_dtor(&intern->current.key);
 1436|      5|		ZVAL_UNDEF(&intern->current.key);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1437|      5|	}
 1438|     53|	if (intern->dit_type == DIT_CachingIterator || intern->dit_type == DIT_RecursiveCachingIterator) {
  ------------------
  |  Branch (1438:6): [True: 0, False: 53]
  |  Branch (1438:49): [True: 0, False: 53]
  ------------------
 1439|      0|		if (intern->u.caching.zstr) {
  ------------------
  |  Branch (1439:7): [True: 0, False: 0]
  ------------------
 1440|      0|			zend_string_release(intern->u.caching.zstr);
 1441|      0|			intern->u.caching.zstr = NULL;
 1442|      0|		}
 1443|      0|		if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (1443:7): [True: 0, False: 0]
  ------------------
 1444|      0|			zval_ptr_dtor(&intern->u.caching.zchildren);
 1445|      0|			ZVAL_UNDEF(&intern->u.caching.zchildren);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1446|      0|		}
 1447|      0|	}
 1448|     53|}
spl_iterators.c:spl_dual_it_fetch:
 1469|      7|{
 1470|      7|	zval *data;
 1471|       |
 1472|      7|	spl_dual_it_free(intern);
 1473|      7|	if (!check_more || spl_dual_it_valid(intern) == SUCCESS) {
  ------------------
  |  Branch (1473:6): [True: 0, False: 7]
  |  Branch (1473:21): [True: 5, False: 2]
  ------------------
 1474|      5|		data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator);
 1475|      5|		if (data) {
  ------------------
  |  Branch (1475:7): [True: 5, False: 0]
  ------------------
 1476|      5|			ZVAL_COPY(&intern->current.data, data);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1477|      5|		}
 1478|       |
 1479|      5|		if (intern->inner.iterator->funcs->get_current_key) {
  ------------------
  |  Branch (1479:7): [True: 5, False: 0]
  ------------------
 1480|      5|			intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, &intern->current.key);
 1481|      5|			if (EG(exception)) {
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1482|      0|				zval_ptr_dtor(&intern->current.key);
 1483|      0|				ZVAL_UNDEF(&intern->current.key);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1484|      0|			}
 1485|      5|		} else {
 1486|      0|			ZVAL_LONG(&intern->current.key, intern->current.pos);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1487|      0|		}
 1488|      5|		return EG(exception) ? FAILURE : SUCCESS;
  ------------------
  |  |   45|      5|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1489|      5|	}
 1490|      2|	return FAILURE;
 1491|      7|}
spl_iterators.c:spl_dual_it_next:
 1494|      3|{
 1495|      3|	if (do_free) {
  ------------------
  |  Branch (1495:6): [True: 3, False: 0]
  ------------------
 1496|      3|		spl_dual_it_free(intern);
 1497|      3|	} else if (!intern->inner.iterator) {
  ------------------
  |  Branch (1497:13): [True: 0, False: 0]
  ------------------
 1498|      0|		zend_throw_error(NULL, "The inner constructor wasn't initialized with an iterator instance");
 1499|      0|		return;
 1500|      0|	}
 1501|      3|	intern->inner.iterator->funcs->move_forward(intern->inner.iterator);
 1502|      3|	intern->current.pos++;
 1503|      3|}
spl_iterators.c:spl_filter_it_rewind:
 1597|      1|{
 1598|      1|	spl_dual_it_rewind(intern);
 1599|      1|	spl_filter_it_fetch(zthis, intern);
 1600|      1|}
spl_iterators.c:spl_filter_it_fetch:
 1576|      1|{
 1577|      1|	zval retval;
 1578|       |
 1579|      1|	while (spl_dual_it_fetch(intern, 1) == SUCCESS) {
  ------------------
  |  Branch (1579:9): [True: 1, False: 0]
  ------------------
 1580|      1|		zend_call_method_with_0_params(Z_OBJ_P(zthis), intern->std.ce, NULL, "accept", &retval);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1581|      1|		if (Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (1581:7): [True: 1, False: 0]
  ------------------
 1582|      1|			if (zend_is_true(&retval)) {
  ------------------
  |  Branch (1582:8): [True: 1, False: 0]
  ------------------
 1583|      1|				zval_ptr_dtor(&retval);
 1584|      1|				return;
 1585|      1|			}
 1586|      0|			zval_ptr_dtor(&retval);
 1587|      0|		}
 1588|      0|		if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1589|      0|			return;
 1590|      0|		}
 1591|      0|		intern->inner.iterator->funcs->move_forward(intern->inner.iterator);
 1592|      0|	}
 1593|      0|	spl_dual_it_free(intern);
 1594|      0|}
spl_iterators.c:spl_limit_it_seek:
 2126|      2|{
 2127|      2|	zval  zpos;
 2128|       |
 2129|      2|	spl_dual_it_free(intern);
 2130|      2|	if (pos < intern->u.limit.offset) {
  ------------------
  |  Branch (2130:6): [True: 0, False: 2]
  ------------------
 2131|      0|		zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0, "Cannot seek to " ZEND_LONG_FMT " which is below the offset " ZEND_LONG_FMT, pos, intern->u.limit.offset);
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
 2132|      0|		return;
 2133|      0|	}
 2134|      2|	if (spl_limit_it_relative_pos_for(intern, pos) >= intern->u.limit.count && intern->u.limit.count != -1) {
  ------------------
  |  Branch (2134:6): [True: 2, False: 0]
  |  Branch (2134:77): [True: 1, False: 1]
  ------------------
 2135|      1|		zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0, "Cannot seek to " ZEND_LONG_FMT " which is behind offset " ZEND_LONG_FMT " plus count " ZEND_LONG_FMT, pos, intern->u.limit.offset, intern->u.limit.count);
  ------------------
  |  |   54|      1|# define ZEND_LONG_FMT "%" PRId64
  ------------------
 2136|      1|		return;
 2137|      1|	}
 2138|      1|	if (pos != intern->current.pos && instanceof_function(intern->inner.ce, spl_ce_SeekableIterator)) {
  ------------------
  |  Branch (2138:6): [True: 1, False: 0]
  |  Branch (2138:36): [True: 1, False: 0]
  ------------------
 2139|      1|		ZVAL_LONG(&zpos, pos);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2140|      1|		spl_dual_it_free(intern);
 2141|      1|		zend_call_method_with_1_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "seek", NULL, &zpos);
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 2142|      1|		if (!EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (2142:7): [True: 0, False: 1]
  ------------------
 2143|      0|			intern->current.pos = pos;
 2144|      0|			if (spl_limit_it_valid(intern) == SUCCESS) {
  ------------------
  |  Branch (2144:8): [True: 0, False: 0]
  ------------------
 2145|      0|				spl_dual_it_fetch(intern, 0);
 2146|      0|			}
 2147|      0|		}
 2148|      1|	} else {
 2149|       |		/* emulate the forward seek, by next() calls */
 2150|       |		/* a back ward seek is done by a previous rewind() */
 2151|      0|		if (pos < intern->current.pos) {
  ------------------
  |  Branch (2151:7): [True: 0, False: 0]
  ------------------
 2152|      0|			spl_dual_it_rewind(intern);
 2153|      0|		}
 2154|      0|		while (pos > intern->current.pos && spl_dual_it_valid(intern) == SUCCESS) {
  ------------------
  |  Branch (2154:10): [True: 0, False: 0]
  |  Branch (2154:39): [True: 0, False: 0]
  ------------------
 2155|      0|			spl_dual_it_next(intern, 1);
 2156|      0|		}
 2157|      0|		if (spl_dual_it_valid(intern) == SUCCESS) {
  ------------------
  |  Branch (2157:7): [True: 0, False: 0]
  ------------------
 2158|      0|			spl_dual_it_fetch(intern, 1);
 2159|      0|		}
 2160|      0|	}
 2161|      1|}
spl_iterators.c:spl_limit_it_relative_pos_for:
 2110|      2|{
 2111|      2|	return pos - intern->u.limit.offset;
 2112|      2|}
spl_iterators.c:spl_dual_it_valid:
 1460|      7|{
 1461|      7|	if (!intern->inner.iterator) {
  ------------------
  |  Branch (1461:6): [True: 0, False: 7]
  ------------------
 1462|      0|		return FAILURE;
 1463|      0|	}
 1464|       |	/* FAILURE / SUCCESS */
 1465|      7|	return intern->inner.iterator->funcs->valid(intern->inner.iterator);
 1466|      7|}
spl_iterators.c:spl_iterator_to_values_apply:
 3000|      1|{
 3001|      1|	zval *data, *return_value = (zval*)puser;
 3002|       |
 3003|      1|	data = iter->funcs->get_current_data(iter);
 3004|      1|	if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3005|      0|		return ZEND_HASH_APPLY_STOP;
  ------------------
  |  |  150|      0|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
 3006|      0|	}
 3007|      1|	if (data == NULL) {
  ------------------
  |  Branch (3007:6): [True: 0, False: 1]
  ------------------
 3008|      0|		return ZEND_HASH_APPLY_STOP;
  ------------------
  |  |  150|      0|#define ZEND_HASH_APPLY_STOP				1<<1
  ------------------
 3009|      0|	}
 3010|      1|	Z_TRY_ADDREF_P(data);
  ------------------
  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      1|	zval *_pz = (pz);				\
  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3011|      1|	add_next_index_zval(return_value, data);
 3012|      1|	return ZEND_HASH_APPLY_KEEP;
  ------------------
  |  |  148|      1|#define ZEND_HASH_APPLY_KEEP				0
  ------------------
 3013|      1|}
spl_iterators.c:spl_RecursiveIteratorIterator_new:
  973|      2|{
  974|      2|	return spl_RecursiveIteratorIterator_new_ex(class_type, 0);
  975|      2|}
spl_iterators.c:spl_RecursiveIteratorIterator_new_ex:
  948|      4|{
  949|      4|	spl_recursive_it_object *intern;
  950|       |
  951|      4|	intern = zend_object_alloc(sizeof(spl_recursive_it_object), class_type);
  952|       |
  953|      4|	if (init_prefix) {
  ------------------
  |  Branch (953:6): [True: 2, False: 2]
  ------------------
  954|      2|		intern->prefix[0] = ZSTR_EMPTY_ALLOC();
  955|      2|		intern->prefix[1] = ZSTR_INIT_LITERAL("| ", 0);
  ------------------
  |  |  141|      2|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  956|      2|		intern->prefix[2] = ZSTR_INIT_LITERAL("  ", 0);
  ------------------
  |  |  141|      2|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  957|      2|		intern->prefix[3] = ZSTR_INIT_LITERAL("|-", 0);
  ------------------
  |  |  141|      2|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  958|      2|		intern->prefix[4] = ZSTR_INIT_LITERAL("\\-", 0);
  ------------------
  |  |  141|      2|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  959|      2|		intern->prefix[5] = ZSTR_EMPTY_ALLOC();
  960|       |
  961|      2|		intern->postfix[0] = ZSTR_EMPTY_ALLOC();
  962|      2|	}
  963|       |
  964|      4|	zend_object_std_init(&intern->std, class_type);
  965|      4|	object_properties_init(&intern->std, class_type);
  966|       |
  967|      4|	return &intern->std;
  968|      4|}
spl_iterators.c:spl_RecursiveIteratorIterator_free_storage:
  912|      4|{
  913|      4|	spl_recursive_it_object *object = spl_recursive_it_from_obj(_object);
  ------------------
  |  |  139|      4|#define spl_recursive_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_recursive_it_object, std)
  |  |  ------------------
  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      4|	)
  |  |  ------------------
  ------------------
  914|       |
  915|      4|	spl_RecursiveIteratorIterator_free_iterators(object);
  916|       |
  917|      4|	zend_object_std_dtor(&object->std);
  918|     28|	for (size_t i = 0; i < 6; i++) {
  ------------------
  |  Branch (918:21): [True: 24, False: 4]
  ------------------
  919|     24|		if (object->prefix[i]) {
  ------------------
  |  Branch (919:7): [True: 12, False: 12]
  ------------------
  920|     12|			zend_string_release(object->prefix[i]);
  921|     12|		}
  922|     24|	}
  923|       |
  924|      4|	if (object->postfix[0]) {
  ------------------
  |  Branch (924:6): [True: 2, False: 2]
  ------------------
  925|      2|		zend_string_release(object->postfix[0]);
  926|      2|	}
  927|      4|}
spl_iterators.c:spl_dual_it_get_method:
 1215|     11|{
 1216|     11|	zend_function        *function_handler;
 1217|     11|	spl_dual_it_object   *intern;
 1218|       |
 1219|     11|	intern = spl_dual_it_from_obj(*object);
  ------------------
  |  |  143|     11|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  ------------------
  |  |  |  |  407|     11|	_Generic( \
  |  |  |  |  408|     11|		(ptr), \
  |  |  |  |  409|     11|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     11|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     11|	)
  |  |  ------------------
  ------------------
 1220|       |
 1221|     11|	function_handler = zend_std_get_method(object, method, key);
 1222|     11|	if (!function_handler && intern->inner.ce) {
  ------------------
  |  Branch (1222:6): [True: 8, False: 3]
  |  Branch (1222:27): [True: 8, False: 0]
  ------------------
 1223|      8|		if ((function_handler = zend_hash_find_ptr(&intern->inner.ce->function_table, method)) == NULL) {
  ------------------
  |  Branch (1223:7): [True: 8, False: 0]
  ------------------
 1224|      8|			if (Z_OBJ_HT(intern->inner.zobject)->get_method) {
  ------------------
  |  | 1002|      8|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  ------------------
  |  |  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (1224:8): [True: 8, False: 0]
  ------------------
 1225|      8|				*object = Z_OBJ(intern->inner.zobject);
  ------------------
  |  |  999|      8|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1226|      8|				function_handler = (*object)->handlers->get_method(object, method, key);
 1227|      8|			}
 1228|      8|		} else {
 1229|      0|			*object = Z_OBJ(intern->inner.zobject);
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1230|      0|		}
 1231|      8|	}
 1232|     11|	return function_handler;
 1233|     11|}
spl_iterators.c:spl_dual_it_free_storage:
 1997|     34|{
 1998|     34|	spl_dual_it_object *object = spl_dual_it_from_obj(_object);
  ------------------
  |  |  143|     34|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  ------------------
  |  |  |  |  407|     34|	_Generic( \
  |  |  |  |  408|     34|		(ptr), \
  |  |  |  |  409|     34|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     34|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     34|	)
  |  |  ------------------
  ------------------
 1999|       |
 2000|     34|	spl_dual_it_free(object);
 2001|       |
 2002|     34|	if (object->inner.iterator) {
  ------------------
  |  Branch (2002:6): [True: 8, False: 26]
  ------------------
 2003|      8|		zend_iterator_dtor(object->inner.iterator);
 2004|      8|	}
 2005|       |
 2006|     34|	if (!Z_ISUNDEF(object->inner.zobject)) {
  ------------------
  |  |  966|     34|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|     34|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|     34|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (2006:6): [True: 8, False: 26]
  ------------------
 2007|      8|		zval_ptr_dtor(&object->inner.zobject);
 2008|      8|	}
 2009|       |
 2010|     34|	if (object->dit_type == DIT_AppendIterator) {
  ------------------
  |  Branch (2010:6): [True: 2, False: 32]
  ------------------
 2011|      2|		zend_iterator_dtor(object->u.append.iterator);
 2012|      2|		if (Z_TYPE(object->u.append.zarrayit) != IS_UNDEF) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(object->u.append.zarrayit) != IS_UNDEF) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (2012:7): [True: 2, False: 0]
  ------------------
 2013|      2|			zval_ptr_dtor(&object->u.append.zarrayit);
 2014|      2|		}
 2015|      2|	}
 2016|       |
 2017|     34|	if (object->dit_type == DIT_CachingIterator || object->dit_type == DIT_RecursiveCachingIterator) {
  ------------------
  |  Branch (2017:6): [True: 0, False: 34]
  |  Branch (2017:49): [True: 0, False: 34]
  ------------------
 2018|      0|		zval_ptr_dtor(&object->u.caching.zcache);
 2019|      0|	}
 2020|       |
 2021|     34|	if (object->dit_type == DIT_RegexIterator || object->dit_type == DIT_RecursiveRegexIterator) {
  ------------------
  |  Branch (2021:6): [True: 0, False: 34]
  |  Branch (2021:47): [True: 0, False: 34]
  ------------------
 2022|      0|		if (object->u.regex.pce) {
  ------------------
  |  Branch (2022:7): [True: 0, False: 0]
  ------------------
 2023|      0|			php_pcre_pce_decref(object->u.regex.pce);
 2024|      0|		}
 2025|      0|		if (object->u.regex.regex) {
  ------------------
  |  Branch (2025:7): [True: 0, False: 0]
  ------------------
 2026|      0|			zend_string_release_ex(object->u.regex.regex, 0);
 2027|      0|		}
 2028|      0|	}
 2029|       |
 2030|     34|	if (object->dit_type == DIT_CallbackFilterIterator || object->dit_type == DIT_RecursiveCallbackFilterIterator) {
  ------------------
  |  Branch (2030:6): [True: 1, False: 33]
  |  Branch (2030:56): [True: 0, False: 33]
  ------------------
 2031|      1|		if (ZEND_FCC_INITIALIZED(object->u.callback_filter)) {
  ------------------
  |  |  343|      1|#define ZEND_FCC_INITIALIZED(fcc) ((fcc).function_handler != NULL)
  |  |  ------------------
  |  |  |  Branch (343:35): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2032|      1|			zend_fcc_dtor(&object->u.callback_filter);
 2033|      1|		}
 2034|      1|	}
 2035|       |
 2036|     34|	zend_object_std_dtor(&object->std);
 2037|     34|}
spl_iterators.c:spl_dual_it_get_gc:
 2041|     14|{
 2042|     14|	spl_dual_it_object *object = spl_dual_it_from_obj(obj);
  ------------------
  |  |  143|     14|#define spl_dual_it_from_obj(obj) ZEND_CONTAINER_OF(obj, spl_dual_it_object, std)
  |  |  ------------------
  |  |  |  |  407|     14|	_Generic( \
  |  |  |  |  408|     14|		(ptr), \
  |  |  |  |  409|     14|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|     14|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|     14|	)
  |  |  ------------------
  ------------------
 2043|     14|	zend_get_gc_buffer *gc_buffer = zend_get_gc_buffer_create();
 2044|       |
 2045|     14|	if (object->inner.iterator) {
  ------------------
  |  Branch (2045:6): [True: 14, False: 0]
  ------------------
 2046|     14|		zend_get_gc_buffer_add_obj(gc_buffer, &object->inner.iterator->std);
 2047|     14|	}
 2048|       |
 2049|     14|	zend_get_gc_buffer_add_zval(gc_buffer, &object->current.data);
 2050|     14|	zend_get_gc_buffer_add_zval(gc_buffer, &object->current.key);
 2051|     14|	zend_get_gc_buffer_add_zval(gc_buffer, &object->inner.zobject);
 2052|       |
 2053|     14|	switch (object->dit_type) {
  ------------------
  |  Branch (2053:10): [True: 14, False: 0]
  ------------------
 2054|      0|		case DIT_Unknown:
  ------------------
  |  Branch (2054:3): [True: 0, False: 14]
  ------------------
 2055|      0|		case DIT_Default:
  ------------------
  |  Branch (2055:3): [True: 0, False: 14]
  ------------------
 2056|     10|		case DIT_IteratorIterator:
  ------------------
  |  Branch (2056:3): [True: 10, False: 4]
  ------------------
 2057|     10|		case DIT_NoRewindIterator:
  ------------------
  |  Branch (2057:3): [True: 0, False: 14]
  ------------------
 2058|     10|		case DIT_InfiniteIterator:
  ------------------
  |  Branch (2058:3): [True: 0, False: 14]
  ------------------
 2059|     14|		case DIT_LimitIterator:
  ------------------
  |  Branch (2059:3): [True: 4, False: 10]
  ------------------
 2060|     14|		case DIT_RegexIterator:
  ------------------
  |  Branch (2060:3): [True: 0, False: 14]
  ------------------
 2061|     14|		case DIT_RecursiveRegexIterator:
  ------------------
  |  Branch (2061:3): [True: 0, False: 14]
  ------------------
 2062|       |			/* Nothing to do */
 2063|     14|			break;
 2064|      0|		case DIT_AppendIterator:
  ------------------
  |  Branch (2064:3): [True: 0, False: 14]
  ------------------
 2065|      0|			zend_get_gc_buffer_add_obj(gc_buffer, &object->u.append.iterator->std);
 2066|      0|			if (Z_TYPE(object->u.append.zarrayit) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(object->u.append.zarrayit) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (2066:8): [True: 0, False: 0]
  ------------------
 2067|      0|				zend_get_gc_buffer_add_zval(gc_buffer, &object->u.append.zarrayit);
 2068|      0|			}
 2069|      0|			break;
 2070|      0|		case DIT_CachingIterator:
  ------------------
  |  Branch (2070:3): [True: 0, False: 14]
  ------------------
 2071|      0|		case DIT_RecursiveCachingIterator:
  ------------------
  |  Branch (2071:3): [True: 0, False: 14]
  ------------------
 2072|      0|			zend_get_gc_buffer_add_zval(gc_buffer, &object->u.caching.zcache);
 2073|      0|			zend_get_gc_buffer_add_zval(gc_buffer, &object->u.caching.zchildren);
 2074|      0|			break;
 2075|      0|		case DIT_CallbackFilterIterator:
  ------------------
  |  Branch (2075:3): [True: 0, False: 14]
  ------------------
 2076|      0|		case DIT_RecursiveCallbackFilterIterator:
  ------------------
  |  Branch (2076:3): [True: 0, False: 14]
  ------------------
 2077|      0|			if (ZEND_FCC_INITIALIZED(object->u.callback_filter)) {
  ------------------
  |  |  343|      0|#define ZEND_FCC_INITIALIZED(fcc) ((fcc).function_handler != NULL)
  |  |  ------------------
  |  |  |  Branch (343:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2078|      0|				zend_get_gc_buffer_add_fcc(gc_buffer, &object->u.callback_filter);
 2079|      0|			}
 2080|      0|			break;
 2081|     14|	}
 2082|       |
 2083|     14|	zend_get_gc_buffer_use(gc_buffer, table, n);
 2084|     14|	return zend_std_get_properties(obj);
 2085|     14|}
spl_iterators.c:spl_dual_it_new:
 2089|     34|{
 2090|     34|	spl_dual_it_object *intern;
 2091|       |
 2092|     34|	intern = zend_object_alloc(sizeof(spl_dual_it_object), class_type);
 2093|     34|	intern->dit_type = DIT_Unknown;
 2094|       |
 2095|     34|	zend_object_std_init(&intern->std, class_type);
 2096|     34|	object_properties_init(&intern->std, class_type);
 2097|       |
 2098|     34|	return &intern->std;
 2099|     34|}
spl_iterators.c:spl_RecursiveTreeIterator_new:
  980|      2|{
  981|      2|	return spl_RecursiveIteratorIterator_new_ex(class_type, 1);
  982|      2|}

spl_iterators.c:register_class_RecursiveIterator:
  636|      2|{
  637|      2|	zend_class_entry ce, *class_entry;
  638|       |
  639|      2|	INIT_CLASS_ENTRY(ce, "RecursiveIterator", class_RecursiveIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  640|      2|	class_entry = zend_register_internal_interface(&ce);
  641|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
  642|       |
  643|      2|	return class_entry;
  644|      2|}
spl_iterators.c:register_class_OuterIterator:
  682|      2|{
  683|      2|	zend_class_entry ce, *class_entry;
  684|       |
  685|      2|	INIT_CLASS_ENTRY(ce, "OuterIterator", class_OuterIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  686|      2|	class_entry = zend_register_internal_interface(&ce);
  687|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
  688|       |
  689|      2|	return class_entry;
  690|      2|}
spl_iterators.c:register_class_RecursiveIteratorIterator:
  647|      2|{
  648|      2|	zend_class_entry ce, *class_entry;
  649|       |
  650|      2|	INIT_CLASS_ENTRY(ce, "RecursiveIteratorIterator", class_RecursiveIteratorIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  651|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  652|      2|	zend_class_implements(class_entry, 1, class_entry_OuterIterator);
  653|       |
  654|      2|	zval const_LEAVES_ONLY_value;
  655|      2|	ZVAL_LONG(&const_LEAVES_ONLY_value, RIT_LEAVES_ONLY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  656|      2|	zend_string *const_LEAVES_ONLY_name = zend_string_init_interned("LEAVES_ONLY", sizeof("LEAVES_ONLY") - 1, true);
  657|      2|	zend_declare_typed_class_constant(class_entry, const_LEAVES_ONLY_name, &const_LEAVES_ONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_LEAVES_ONLY_name, &const_LEAVES_ONLY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  658|      2|	zend_string_release_ex(const_LEAVES_ONLY_name, true);
  659|       |
  660|      2|	zval const_SELF_FIRST_value;
  661|      2|	ZVAL_LONG(&const_SELF_FIRST_value, RIT_SELF_FIRST);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  662|      2|	zend_string *const_SELF_FIRST_name = zend_string_init_interned("SELF_FIRST", sizeof("SELF_FIRST") - 1, true);
  663|      2|	zend_declare_typed_class_constant(class_entry, const_SELF_FIRST_name, &const_SELF_FIRST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_SELF_FIRST_name, &const_SELF_FIRST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  664|      2|	zend_string_release_ex(const_SELF_FIRST_name, true);
  665|       |
  666|      2|	zval const_CHILD_FIRST_value;
  667|      2|	ZVAL_LONG(&const_CHILD_FIRST_value, RIT_CHILD_FIRST);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  668|      2|	zend_string *const_CHILD_FIRST_name = zend_string_init_interned("CHILD_FIRST", sizeof("CHILD_FIRST") - 1, true);
  669|      2|	zend_declare_typed_class_constant(class_entry, const_CHILD_FIRST_name, &const_CHILD_FIRST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CHILD_FIRST_name, &const_CHILD_FIRST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  670|      2|	zend_string_release_ex(const_CHILD_FIRST_name, true);
  671|       |
  672|      2|	zval const_CATCH_GET_CHILD_value;
  673|      2|	ZVAL_LONG(&const_CATCH_GET_CHILD_value, RIT_CATCH_GET_CHILD);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  674|      2|	zend_string *const_CATCH_GET_CHILD_name = zend_string_init_interned("CATCH_GET_CHILD", sizeof("CATCH_GET_CHILD") - 1, true);
  675|      2|	zend_declare_typed_class_constant(class_entry, const_CATCH_GET_CHILD_name, &const_CATCH_GET_CHILD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CATCH_GET_CHILD_name, &const_CATCH_GET_CHILD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  676|      2|	zend_string_release_ex(const_CATCH_GET_CHILD_name, true);
  677|       |
  678|      2|	return class_entry;
  679|      2|}
spl_iterators.c:register_class_IteratorIterator:
  693|      2|{
  694|      2|	zend_class_entry ce, *class_entry;
  695|       |
  696|      2|	INIT_CLASS_ENTRY(ce, "IteratorIterator", class_IteratorIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  697|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  698|      2|	zend_class_implements(class_entry, 1, class_entry_OuterIterator);
  699|       |
  700|      2|	return class_entry;
  701|      2|}
spl_iterators.c:register_class_FilterIterator:
  704|      2|{
  705|      2|	zend_class_entry ce, *class_entry;
  706|       |
  707|      2|	INIT_CLASS_ENTRY(ce, "FilterIterator", class_FilterIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  708|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_IteratorIterator, ZEND_ACC_ABSTRACT);
  ------------------
  |  |  233|      2|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  709|       |
  710|      2|	return class_entry;
  711|      2|}
spl_iterators.c:register_class_RecursiveFilterIterator:
  714|      2|{
  715|      2|	zend_class_entry ce, *class_entry;
  716|       |
  717|      2|	INIT_CLASS_ENTRY(ce, "RecursiveFilterIterator", class_RecursiveFilterIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  718|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_FilterIterator, ZEND_ACC_ABSTRACT);
  ------------------
  |  |  233|      2|#define ZEND_ACC_ABSTRACT                (1 <<  6) /*  X  |  X  |  X  |     */
  ------------------
  719|      2|	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
  720|       |
  721|      2|	return class_entry;
  722|      2|}
spl_iterators.c:register_class_CallbackFilterIterator:
  615|      2|{
  616|      2|	zend_class_entry ce, *class_entry;
  617|       |
  618|      2|	INIT_CLASS_ENTRY(ce, "CallbackFilterIterator", class_CallbackFilterIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  619|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_FilterIterator, 0);
  620|       |
  621|      2|	return class_entry;
  622|      2|}
spl_iterators.c:register_class_RecursiveCallbackFilterIterator:
  625|      2|{
  626|      2|	zend_class_entry ce, *class_entry;
  627|       |
  628|      2|	INIT_CLASS_ENTRY(ce, "RecursiveCallbackFilterIterator", class_RecursiveCallbackFilterIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  629|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_CallbackFilterIterator, 0);
  630|      2|	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
  631|       |
  632|      2|	return class_entry;
  633|      2|}
spl_iterators.c:register_class_ParentIterator:
  725|      2|{
  726|      2|	zend_class_entry ce, *class_entry;
  727|       |
  728|      2|	INIT_CLASS_ENTRY(ce, "ParentIterator", class_ParentIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  729|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RecursiveFilterIterator, 0);
  730|       |
  731|      2|	return class_entry;
  732|      2|}
spl_iterators.c:register_class_SeekableIterator:
  735|      2|{
  736|      2|	zend_class_entry ce, *class_entry;
  737|       |
  738|      2|	INIT_CLASS_ENTRY(ce, "SeekableIterator", class_SeekableIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  739|      2|	class_entry = zend_register_internal_interface(&ce);
  740|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
  741|       |
  742|      2|	return class_entry;
  743|      2|}
spl_iterators.c:register_class_LimitIterator:
  746|      2|{
  747|      2|	zend_class_entry ce, *class_entry;
  748|       |
  749|      2|	INIT_CLASS_ENTRY(ce, "LimitIterator", class_LimitIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  750|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_IteratorIterator, 0);
  751|       |
  752|      2|	return class_entry;
  753|      2|}
spl_iterators.c:register_class_CachingIterator:
  756|      2|{
  757|      2|	zend_class_entry ce, *class_entry;
  758|       |
  759|      2|	INIT_CLASS_ENTRY(ce, "CachingIterator", class_CachingIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  760|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_IteratorIterator, 0);
  761|      2|	zend_class_implements(class_entry, 3, class_entry_ArrayAccess, class_entry_Countable, class_entry_Stringable);
  762|       |
  763|      2|	zval const_CALL_TOSTRING_value;
  764|      2|	ZVAL_LONG(&const_CALL_TOSTRING_value, CIT_CALL_TOSTRING);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  765|      2|	zend_string *const_CALL_TOSTRING_name = zend_string_init_interned("CALL_TOSTRING", sizeof("CALL_TOSTRING") - 1, true);
  766|      2|	zend_declare_typed_class_constant(class_entry, const_CALL_TOSTRING_name, &const_CALL_TOSTRING_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CALL_TOSTRING_name, &const_CALL_TOSTRING_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  767|      2|	zend_string_release_ex(const_CALL_TOSTRING_name, true);
  768|       |
  769|      2|	zval const_CATCH_GET_CHILD_value;
  770|      2|	ZVAL_LONG(&const_CATCH_GET_CHILD_value, CIT_CATCH_GET_CHILD);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  771|      2|	zend_string *const_CATCH_GET_CHILD_name = zend_string_init_interned("CATCH_GET_CHILD", sizeof("CATCH_GET_CHILD") - 1, true);
  772|      2|	zend_declare_typed_class_constant(class_entry, const_CATCH_GET_CHILD_name, &const_CATCH_GET_CHILD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_CATCH_GET_CHILD_name, &const_CATCH_GET_CHILD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  773|      2|	zend_string_release_ex(const_CATCH_GET_CHILD_name, true);
  774|       |
  775|      2|	zval const_TOSTRING_USE_KEY_value;
  776|      2|	ZVAL_LONG(&const_TOSTRING_USE_KEY_value, CIT_TOSTRING_USE_KEY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  777|      2|	zend_string *const_TOSTRING_USE_KEY_name = zend_string_init_interned("TOSTRING_USE_KEY", sizeof("TOSTRING_USE_KEY") - 1, true);
  778|      2|	zend_declare_typed_class_constant(class_entry, const_TOSTRING_USE_KEY_name, &const_TOSTRING_USE_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TOSTRING_USE_KEY_name, &const_TOSTRING_USE_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  779|      2|	zend_string_release_ex(const_TOSTRING_USE_KEY_name, true);
  780|       |
  781|      2|	zval const_TOSTRING_USE_CURRENT_value;
  782|      2|	ZVAL_LONG(&const_TOSTRING_USE_CURRENT_value, CIT_TOSTRING_USE_CURRENT);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  783|      2|	zend_string *const_TOSTRING_USE_CURRENT_name = zend_string_init_interned("TOSTRING_USE_CURRENT", sizeof("TOSTRING_USE_CURRENT") - 1, true);
  784|      2|	zend_declare_typed_class_constant(class_entry, const_TOSTRING_USE_CURRENT_name, &const_TOSTRING_USE_CURRENT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TOSTRING_USE_CURRENT_name, &const_TOSTRING_USE_CURRENT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  785|      2|	zend_string_release_ex(const_TOSTRING_USE_CURRENT_name, true);
  786|       |
  787|      2|	zval const_TOSTRING_USE_INNER_value;
  788|      2|	ZVAL_LONG(&const_TOSTRING_USE_INNER_value, CIT_TOSTRING_USE_INNER);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  789|      2|	zend_string *const_TOSTRING_USE_INNER_name = zend_string_init_interned("TOSTRING_USE_INNER", sizeof("TOSTRING_USE_INNER") - 1, true);
  790|      2|	zend_declare_typed_class_constant(class_entry, const_TOSTRING_USE_INNER_name, &const_TOSTRING_USE_INNER_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_TOSTRING_USE_INNER_name, &const_TOSTRING_USE_INNER_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  791|      2|	zend_string_release_ex(const_TOSTRING_USE_INNER_name, true);
  792|       |
  793|      2|	zval const_FULL_CACHE_value;
  794|      2|	ZVAL_LONG(&const_FULL_CACHE_value, CIT_FULL_CACHE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  795|      2|	zend_string *const_FULL_CACHE_name = zend_string_init_interned("FULL_CACHE", sizeof("FULL_CACHE") - 1, true);
  796|      2|	zend_declare_typed_class_constant(class_entry, const_FULL_CACHE_name, &const_FULL_CACHE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_FULL_CACHE_name, &const_FULL_CACHE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  797|      2|	zend_string_release_ex(const_FULL_CACHE_name, true);
  798|       |
  799|      2|	return class_entry;
  800|      2|}
spl_iterators.c:register_class_RecursiveCachingIterator:
  803|      2|{
  804|      2|	zend_class_entry ce, *class_entry;
  805|       |
  806|      2|	INIT_CLASS_ENTRY(ce, "RecursiveCachingIterator", class_RecursiveCachingIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  807|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_CachingIterator, 0);
  808|      2|	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
  809|       |
  810|      2|	return class_entry;
  811|      2|}
spl_iterators.c:register_class_NoRewindIterator:
  814|      2|{
  815|      2|	zend_class_entry ce, *class_entry;
  816|       |
  817|      2|	INIT_CLASS_ENTRY(ce, "NoRewindIterator", class_NoRewindIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  818|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_IteratorIterator, 0);
  819|       |
  820|      2|	return class_entry;
  821|      2|}
spl_iterators.c:register_class_AppendIterator:
  824|      2|{
  825|      2|	zend_class_entry ce, *class_entry;
  826|       |
  827|      2|	INIT_CLASS_ENTRY(ce, "AppendIterator", class_AppendIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  828|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_IteratorIterator, 0);
  829|       |
  830|      2|	return class_entry;
  831|      2|}
spl_iterators.c:register_class_InfiniteIterator:
  834|      2|{
  835|      2|	zend_class_entry ce, *class_entry;
  836|       |
  837|      2|	INIT_CLASS_ENTRY(ce, "InfiniteIterator", class_InfiniteIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  838|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_IteratorIterator, 0);
  839|       |
  840|      2|	return class_entry;
  841|      2|}
spl_iterators.c:register_class_RegexIterator:
  844|      2|{
  845|      2|	zend_class_entry ce, *class_entry;
  846|       |
  847|      2|	INIT_CLASS_ENTRY(ce, "RegexIterator", class_RegexIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  848|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_FilterIterator, 0);
  849|       |
  850|      2|	zval const_USE_KEY_value;
  851|      2|	ZVAL_LONG(&const_USE_KEY_value, REGIT_USE_KEY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  852|      2|	zend_string *const_USE_KEY_name = zend_string_init_interned("USE_KEY", sizeof("USE_KEY") - 1, true);
  853|      2|	zend_declare_typed_class_constant(class_entry, const_USE_KEY_name, &const_USE_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_USE_KEY_name, &const_USE_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  854|      2|	zend_string_release_ex(const_USE_KEY_name, true);
  855|       |
  856|      2|	zval const_INVERT_MATCH_value;
  857|      2|	ZVAL_LONG(&const_INVERT_MATCH_value, REGIT_INVERTED);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  858|      2|	zend_string *const_INVERT_MATCH_name = zend_string_init_interned("INVERT_MATCH", sizeof("INVERT_MATCH") - 1, true);
  859|      2|	zend_declare_typed_class_constant(class_entry, const_INVERT_MATCH_name, &const_INVERT_MATCH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_INVERT_MATCH_name, &const_INVERT_MATCH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  860|      2|	zend_string_release_ex(const_INVERT_MATCH_name, true);
  861|       |
  862|      2|	zval const_MATCH_value;
  863|      2|	ZVAL_LONG(&const_MATCH_value, REGIT_MODE_MATCH);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  864|      2|	zend_string *const_MATCH_name = zend_string_init_interned("MATCH", sizeof("MATCH") - 1, true);
  865|      2|	zend_declare_typed_class_constant(class_entry, const_MATCH_name, &const_MATCH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_MATCH_name, &const_MATCH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  866|      2|	zend_string_release_ex(const_MATCH_name, true);
  867|       |
  868|      2|	zval const_GET_MATCH_value;
  869|      2|	ZVAL_LONG(&const_GET_MATCH_value, REGIT_MODE_GET_MATCH);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  870|      2|	zend_string *const_GET_MATCH_name = zend_string_init_interned("GET_MATCH", sizeof("GET_MATCH") - 1, true);
  871|      2|	zend_declare_typed_class_constant(class_entry, const_GET_MATCH_name, &const_GET_MATCH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_GET_MATCH_name, &const_GET_MATCH_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  872|      2|	zend_string_release_ex(const_GET_MATCH_name, true);
  873|       |
  874|      2|	zval const_ALL_MATCHES_value;
  875|      2|	ZVAL_LONG(&const_ALL_MATCHES_value, REGIT_MODE_ALL_MATCHES);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  876|      2|	zend_string *const_ALL_MATCHES_name = zend_string_init_interned("ALL_MATCHES", sizeof("ALL_MATCHES") - 1, true);
  877|      2|	zend_declare_typed_class_constant(class_entry, const_ALL_MATCHES_name, &const_ALL_MATCHES_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_ALL_MATCHES_name, &const_ALL_MATCHES_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  878|      2|	zend_string_release_ex(const_ALL_MATCHES_name, true);
  879|       |
  880|      2|	zval const_SPLIT_value;
  881|      2|	ZVAL_LONG(&const_SPLIT_value, REGIT_MODE_SPLIT);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  882|      2|	zend_string *const_SPLIT_name = zend_string_init_interned("SPLIT", sizeof("SPLIT") - 1, true);
  883|      2|	zend_declare_typed_class_constant(class_entry, const_SPLIT_name, &const_SPLIT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_SPLIT_name, &const_SPLIT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  884|      2|	zend_string_release_ex(const_SPLIT_name, true);
  885|       |
  886|      2|	zval const_REPLACE_value;
  887|      2|	ZVAL_LONG(&const_REPLACE_value, REGIT_MODE_REPLACE);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  888|      2|	zend_string *const_REPLACE_name = zend_string_init_interned("REPLACE", sizeof("REPLACE") - 1, true);
  889|      2|	zend_declare_typed_class_constant(class_entry, const_REPLACE_name, &const_REPLACE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_REPLACE_name, &const_REPLACE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  890|      2|	zend_string_release_ex(const_REPLACE_name, true);
  891|       |
  892|      2|	zval property_replacement_default_value;
  893|      2|	ZVAL_NULL(&property_replacement_default_value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  894|      2|	zend_string *property_replacement_name = zend_string_init("replacement", sizeof("replacement") - 1, true);
  895|      2|	zend_declare_typed_property(class_entry, property_replacement_name, &property_replacement_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_replacement_name, &property_replacement_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  896|      2|	zend_string_release_ex(property_replacement_name, true);
  897|       |
  898|      2|	return class_entry;
  899|      2|}
spl_iterators.c:register_class_RecursiveRegexIterator:
  902|      2|{
  903|      2|	zend_class_entry ce, *class_entry;
  904|       |
  905|      2|	INIT_CLASS_ENTRY(ce, "RecursiveRegexIterator", class_RecursiveRegexIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  906|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RegexIterator, 0);
  907|      2|	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
  908|       |
  909|      2|	return class_entry;
  910|      2|}
spl_iterators.c:register_class_EmptyIterator:
  604|      2|{
  605|      2|	zend_class_entry ce, *class_entry;
  606|       |
  607|      2|	INIT_CLASS_ENTRY(ce, "EmptyIterator", class_EmptyIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  608|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  609|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
  610|       |
  611|      2|	return class_entry;
  612|      2|}
spl_iterators.c:register_class_RecursiveTreeIterator:
  913|      2|{
  914|      2|	zend_class_entry ce, *class_entry;
  915|       |
  916|      2|	INIT_CLASS_ENTRY(ce, "RecursiveTreeIterator", class_RecursiveTreeIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  917|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_RecursiveIteratorIterator, 0);
  918|       |
  919|      2|	zval const_BYPASS_CURRENT_value;
  920|      2|	ZVAL_LONG(&const_BYPASS_CURRENT_value, RTIT_BYPASS_CURRENT);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  921|      2|	zend_string *const_BYPASS_CURRENT_name = zend_string_init_interned("BYPASS_CURRENT", sizeof("BYPASS_CURRENT") - 1, true);
  922|      2|	zend_declare_typed_class_constant(class_entry, const_BYPASS_CURRENT_name, &const_BYPASS_CURRENT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_BYPASS_CURRENT_name, &const_BYPASS_CURRENT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  923|      2|	zend_string_release_ex(const_BYPASS_CURRENT_name, true);
  924|       |
  925|      2|	zval const_BYPASS_KEY_value;
  926|      2|	ZVAL_LONG(&const_BYPASS_KEY_value, RTIT_BYPASS_KEY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  927|      2|	zend_string *const_BYPASS_KEY_name = zend_string_init_interned("BYPASS_KEY", sizeof("BYPASS_KEY") - 1, true);
  928|      2|	zend_declare_typed_class_constant(class_entry, const_BYPASS_KEY_name, &const_BYPASS_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_BYPASS_KEY_name, &const_BYPASS_KEY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  929|      2|	zend_string_release_ex(const_BYPASS_KEY_name, true);
  930|       |
  931|      2|	zval const_PREFIX_LEFT_value;
  932|      2|	ZVAL_LONG(&const_PREFIX_LEFT_value, 0);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  933|      2|	zend_string *const_PREFIX_LEFT_name = zend_string_init_interned("PREFIX_LEFT", sizeof("PREFIX_LEFT") - 1, true);
  934|      2|	zend_declare_typed_class_constant(class_entry, const_PREFIX_LEFT_name, &const_PREFIX_LEFT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PREFIX_LEFT_name, &const_PREFIX_LEFT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  935|      2|	zend_string_release_ex(const_PREFIX_LEFT_name, true);
  936|       |
  937|      2|	zval const_PREFIX_MID_HAS_NEXT_value;
  938|      2|	ZVAL_LONG(&const_PREFIX_MID_HAS_NEXT_value, 1);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  939|      2|	zend_string *const_PREFIX_MID_HAS_NEXT_name = zend_string_init_interned("PREFIX_MID_HAS_NEXT", sizeof("PREFIX_MID_HAS_NEXT") - 1, true);
  940|      2|	zend_declare_typed_class_constant(class_entry, const_PREFIX_MID_HAS_NEXT_name, &const_PREFIX_MID_HAS_NEXT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PREFIX_MID_HAS_NEXT_name, &const_PREFIX_MID_HAS_NEXT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  941|      2|	zend_string_release_ex(const_PREFIX_MID_HAS_NEXT_name, true);
  942|       |
  943|      2|	zval const_PREFIX_MID_LAST_value;
  944|      2|	ZVAL_LONG(&const_PREFIX_MID_LAST_value, 2);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  945|      2|	zend_string *const_PREFIX_MID_LAST_name = zend_string_init_interned("PREFIX_MID_LAST", sizeof("PREFIX_MID_LAST") - 1, true);
  946|      2|	zend_declare_typed_class_constant(class_entry, const_PREFIX_MID_LAST_name, &const_PREFIX_MID_LAST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PREFIX_MID_LAST_name, &const_PREFIX_MID_LAST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  947|      2|	zend_string_release_ex(const_PREFIX_MID_LAST_name, true);
  948|       |
  949|      2|	zval const_PREFIX_END_HAS_NEXT_value;
  950|      2|	ZVAL_LONG(&const_PREFIX_END_HAS_NEXT_value, 3);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  951|      2|	zend_string *const_PREFIX_END_HAS_NEXT_name = zend_string_init_interned("PREFIX_END_HAS_NEXT", sizeof("PREFIX_END_HAS_NEXT") - 1, true);
  952|      2|	zend_declare_typed_class_constant(class_entry, const_PREFIX_END_HAS_NEXT_name, &const_PREFIX_END_HAS_NEXT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PREFIX_END_HAS_NEXT_name, &const_PREFIX_END_HAS_NEXT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  953|      2|	zend_string_release_ex(const_PREFIX_END_HAS_NEXT_name, true);
  954|       |
  955|      2|	zval const_PREFIX_END_LAST_value;
  956|      2|	ZVAL_LONG(&const_PREFIX_END_LAST_value, 4);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  957|      2|	zend_string *const_PREFIX_END_LAST_name = zend_string_init_interned("PREFIX_END_LAST", sizeof("PREFIX_END_LAST") - 1, true);
  958|      2|	zend_declare_typed_class_constant(class_entry, const_PREFIX_END_LAST_name, &const_PREFIX_END_LAST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PREFIX_END_LAST_name, &const_PREFIX_END_LAST_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  959|      2|	zend_string_release_ex(const_PREFIX_END_LAST_name, true);
  960|       |
  961|      2|	zval const_PREFIX_RIGHT_value;
  962|      2|	ZVAL_LONG(&const_PREFIX_RIGHT_value, 5);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  963|      2|	zend_string *const_PREFIX_RIGHT_name = zend_string_init_interned("PREFIX_RIGHT", sizeof("PREFIX_RIGHT") - 1, true);
  964|      2|	zend_declare_typed_class_constant(class_entry, const_PREFIX_RIGHT_name, &const_PREFIX_RIGHT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_PREFIX_RIGHT_name, &const_PREFIX_RIGHT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  965|      2|	zend_string_release_ex(const_PREFIX_RIGHT_name, true);
  966|       |
  967|      2|	return class_entry;
  968|      2|}

zm_startup_spl_observer:
 1479|      2|{
 1480|      2|	spl_ce_SplObserver = register_class_SplObserver();
 1481|      2|	spl_ce_SplSubject = register_class_SplSubject();
 1482|       |
 1483|      2|	spl_ce_SplObjectStorage = register_class_SplObjectStorage(zend_ce_countable, spl_ce_SeekableIterator, zend_ce_serializable, zend_ce_arrayaccess);
 1484|      2|	spl_ce_SplObjectStorage->create_object = spl_SplObjectStorage_new;
 1485|      2|	spl_ce_SplObjectStorage->default_object_handlers = &spl_handler_SplObjectStorage;
 1486|       |
 1487|      2|	memcpy(&spl_handler_SplObjectStorage, &std_object_handlers, sizeof(zend_object_handlers));
 1488|       |
 1489|      2|	spl_handler_SplObjectStorage.offset          = offsetof(spl_SplObjectStorage, std);
 1490|      2|	spl_handler_SplObjectStorage.compare         = spl_object_storage_compare_objects;
 1491|      2|	spl_handler_SplObjectStorage.clone_obj       = spl_object_storage_clone;
 1492|      2|	spl_handler_SplObjectStorage.get_gc          = spl_object_storage_get_gc;
 1493|      2|	spl_handler_SplObjectStorage.free_obj        = spl_SplObjectStorage_free_storage;
 1494|      2|	spl_handler_SplObjectStorage.read_dimension  = spl_object_storage_read_dimension;
 1495|      2|	spl_handler_SplObjectStorage.write_dimension = spl_object_storage_write_dimension;
 1496|      2|	spl_handler_SplObjectStorage.has_dimension   = spl_object_storage_has_dimension;
 1497|      2|	spl_handler_SplObjectStorage.unset_dimension = spl_object_storage_unset_dimension;
 1498|       |
 1499|      2|	memcpy(&spl_handler_MultipleIterator, &spl_handler_SplObjectStorage, sizeof(zend_object_handlers));
 1500|       |
 1501|      2|	spl_handler_MultipleIterator.write_dimension = spl_multiple_iterator_write_dimension;
 1502|       |
 1503|      2|	spl_ce_MultipleIterator = register_class_MultipleIterator(zend_ce_iterator);
 1504|      2|	spl_ce_MultipleIterator->create_object = spl_SplObjectStorage_new;
 1505|      2|	spl_ce_MultipleIterator->default_object_handlers = &spl_handler_MultipleIterator;
 1506|       |
 1507|      2|	return SUCCESS;
 1508|      2|}

spl_observer.c:register_class_SplObserver:
  234|      2|{
  235|      2|	zend_class_entry ce, *class_entry;
  236|       |
  237|      2|	INIT_CLASS_ENTRY(ce, "SplObserver", class_SplObserver_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  238|      2|	class_entry = zend_register_internal_interface(&ce);
  239|       |
  240|      2|	return class_entry;
  241|      2|}
spl_observer.c:register_class_SplSubject:
  244|      2|{
  245|      2|	zend_class_entry ce, *class_entry;
  246|       |
  247|      2|	INIT_CLASS_ENTRY(ce, "SplSubject", class_SplSubject_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  248|      2|	class_entry = zend_register_internal_interface(&ce);
  249|       |
  250|      2|	return class_entry;
  251|      2|}
spl_observer.c:register_class_SplObjectStorage:
  254|      2|{
  255|      2|	zend_class_entry ce, *class_entry;
  256|       |
  257|      2|	INIT_CLASS_ENTRY(ce, "SplObjectStorage", class_SplObjectStorage_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  258|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  259|      2|	zend_class_implements(class_entry, 4, class_entry_Countable, class_entry_SeekableIterator, class_entry_Serializable, class_entry_ArrayAccess);
  260|       |
  261|       |
  262|      2|	zend_attribute *attribute_Deprecated_func_attach_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "attach", sizeof("attach") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  263|      2|	ZVAL_STR(&attribute_Deprecated_func_attach_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  264|      2|	attribute_Deprecated_func_attach_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  265|      2|	zend_string *attribute_Deprecated_func_attach_0_arg1_str = zend_string_init("use method SplObjectStorage::offsetSet() instead", strlen("use method SplObjectStorage::offsetSet() instead"), 1);
  266|      2|	ZVAL_STR(&attribute_Deprecated_func_attach_0->args[1].value, attribute_Deprecated_func_attach_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  267|      2|	attribute_Deprecated_func_attach_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  268|       |
  269|      2|	zend_attribute *attribute_Deprecated_func_detach_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "detach", sizeof("detach") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  270|      2|	ZVAL_STR(&attribute_Deprecated_func_detach_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  271|      2|	attribute_Deprecated_func_detach_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  272|      2|	zend_string *attribute_Deprecated_func_detach_0_arg1_str = zend_string_init("use method SplObjectStorage::offsetUnset() instead", strlen("use method SplObjectStorage::offsetUnset() instead"), 1);
  273|      2|	ZVAL_STR(&attribute_Deprecated_func_detach_0->args[1].value, attribute_Deprecated_func_detach_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  274|      2|	attribute_Deprecated_func_detach_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  275|       |
  276|      2|	zend_attribute *attribute_Deprecated_func_contains_0 = zend_add_function_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "contains", sizeof("contains") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  277|      2|	ZVAL_STR(&attribute_Deprecated_func_contains_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  278|      2|	attribute_Deprecated_func_contains_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  279|      2|	zend_string *attribute_Deprecated_func_contains_0_arg1_str = zend_string_init("use method SplObjectStorage::offsetExists() instead", strlen("use method SplObjectStorage::offsetExists() instead"), 1);
  280|      2|	ZVAL_STR(&attribute_Deprecated_func_contains_0->args[1].value, attribute_Deprecated_func_contains_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  281|      2|	attribute_Deprecated_func_contains_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  282|       |
  283|      2|	return class_entry;
  284|      2|}
spl_observer.c:register_class_MultipleIterator:
  287|      2|{
  288|      2|	zend_class_entry ce, *class_entry;
  289|       |
  290|      2|	INIT_CLASS_ENTRY(ce, "MultipleIterator", class_MultipleIterator_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  291|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
  292|      2|	zend_class_implements(class_entry, 1, class_entry_Iterator);
  293|       |
  294|      2|	zval const_MIT_NEED_ANY_value;
  295|      2|	ZVAL_LONG(&const_MIT_NEED_ANY_value, MIT_NEED_ANY);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  296|      2|	zend_string *const_MIT_NEED_ANY_name = zend_string_init_interned("MIT_NEED_ANY", sizeof("MIT_NEED_ANY") - 1, true);
  297|      2|	zend_declare_typed_class_constant(class_entry, const_MIT_NEED_ANY_name, &const_MIT_NEED_ANY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_MIT_NEED_ANY_name, &const_MIT_NEED_ANY_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  298|      2|	zend_string_release_ex(const_MIT_NEED_ANY_name, true);
  299|       |
  300|      2|	zval const_MIT_NEED_ALL_value;
  301|      2|	ZVAL_LONG(&const_MIT_NEED_ALL_value, MIT_NEED_ALL);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  302|      2|	zend_string *const_MIT_NEED_ALL_name = zend_string_init_interned("MIT_NEED_ALL", sizeof("MIT_NEED_ALL") - 1, true);
  303|      2|	zend_declare_typed_class_constant(class_entry, const_MIT_NEED_ALL_name, &const_MIT_NEED_ALL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_MIT_NEED_ALL_name, &const_MIT_NEED_ALL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  304|      2|	zend_string_release_ex(const_MIT_NEED_ALL_name, true);
  305|       |
  306|      2|	zval const_MIT_KEYS_NUMERIC_value;
  307|      2|	ZVAL_LONG(&const_MIT_KEYS_NUMERIC_value, MIT_KEYS_NUMERIC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  308|      2|	zend_string *const_MIT_KEYS_NUMERIC_name = zend_string_init_interned("MIT_KEYS_NUMERIC", sizeof("MIT_KEYS_NUMERIC") - 1, true);
  309|      2|	zend_declare_typed_class_constant(class_entry, const_MIT_KEYS_NUMERIC_name, &const_MIT_KEYS_NUMERIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_MIT_KEYS_NUMERIC_name, &const_MIT_KEYS_NUMERIC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  310|      2|	zend_string_release_ex(const_MIT_KEYS_NUMERIC_name, true);
  311|       |
  312|      2|	zval const_MIT_KEYS_ASSOC_value;
  313|      2|	ZVAL_LONG(&const_MIT_KEYS_ASSOC_value, MIT_KEYS_ASSOC);
  ------------------
  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      2|		zval *__z = (z);				\
  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  314|      2|	zend_string *const_MIT_KEYS_ASSOC_name = zend_string_init_interned("MIT_KEYS_ASSOC", sizeof("MIT_KEYS_ASSOC") - 1, true);
  315|      2|	zend_declare_typed_class_constant(class_entry, const_MIT_KEYS_ASSOC_name, &const_MIT_KEYS_ASSOC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_class_constant(class_entry, const_MIT_KEYS_ASSOC_name, &const_MIT_KEYS_ASSOC_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  316|      2|	zend_string_release_ex(const_MIT_KEYS_ASSOC_name, true);
  317|       |
  318|      2|	return class_entry;
  319|      2|}

zm_startup_array:
   71|      2|{
   72|      2|	ZEND_INIT_MODULE_GLOBALS(array, php_array_init_globals, NULL);
  ------------------
  |  |  275|      2|	globals_ctor(&module_name##_globals);
  ------------------
   73|       |
   74|      2|	return SUCCESS;
   75|      2|}
zif_asort:
  702|      1|{
  703|      1|	php_sort(INTERNAL_FUNCTION_PARAM_PASSTHRU, php_get_data_compare_func, false);
  ------------------
  |  |  587|      1|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  704|      1|}
zif_sort:
  716|     29|{
  717|     29|	php_sort(INTERNAL_FUNCTION_PARAM_PASSTHRU, php_get_data_compare_func, true);
  ------------------
  |  |  587|     29|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  718|     29|}
zif_rsort:
  723|      1|{
  724|      1|	php_sort(INTERNAL_FUNCTION_PARAM_PASSTHRU, php_get_data_reverse_compare_func, true);
  ------------------
  |  |  587|      1|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  725|      1|}
zif_ksort:
  737|      4|{
  738|      4|	php_sort(INTERNAL_FUNCTION_PARAM_PASSTHRU, php_get_key_compare_func, false);
  ------------------
  |  |  587|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  739|      4|}
zif_end:
  975|      6|{
  976|      6|	zval *array_zv;
  977|       |
  978|     18|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      6|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      6|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      6|		const int _flags = (flags); \
  |  |  |  | 1599|      6|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      6|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      6|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      6|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      6|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      6|		uint32_t _i = 0; \
  |  |  |  | 1603|      6|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      6|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      6|		char *_error = NULL; \
  |  |  |  | 1606|      6|		bool _dummy = 0; \
  |  |  |  | 1607|      6|		bool _optional = 0; \
  |  |  |  | 1608|      6|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      6|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      6|		((void)_i); \
  |  |  |  | 1610|      6|		((void)_real_arg); \
  |  |  |  | 1611|      6|		((void)_arg); \
  |  |  |  | 1612|      6|		((void)_expected_type); \
  |  |  |  | 1613|      6|		((void)_error); \
  |  |  |  | 1614|      6|		((void)_optional); \
  |  |  |  | 1615|      6|		((void)_dummy); \
  |  |  |  | 1616|      6|		\
  |  |  |  | 1617|      6|		do { \
  |  |  |  | 1618|      6|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      6|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      6|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  979|     24|		Z_PARAM_ARRAY_OR_OBJECT_EX(array_zv, 0, 1)
  ------------------
  |  | 1706|      6|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1698|      6|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 6, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      6|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      6|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      6|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      6|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      6|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      6|		} \
  |  |  |  |  |  | 1665|      6|	} \
  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 6, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      6|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      6|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      6|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      6|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      6|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      6|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 5, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      5|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      5|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      5|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      5|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      5|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      5|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      4|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      4|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      4|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      4|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      4|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      4|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      4|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      4|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      4|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      4|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      4|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      4|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      5|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 5]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      5|		}												\
  |  |  |  |  |  |  |  | 1551|      6|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      6|	}
  |  |  |  |  ------------------
  |  |  |  | 1699|      6|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1700|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1700:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1701|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1702|      0|			break; \
  |  |  |  | 1703|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (979:3): [True: 6, False: 0]
  |  Branch (979:3): [True: 0, False: 0]
  |  Branch (979:3): [True: 6, False: 0]
  |  Branch (979:3): [True: 0, False: 0]
  |  Branch (979:3): [True: 6, False: 0]
  |  Branch (979:3): [True: 0, False: 0]
  |  Branch (979:3): [True: 0, False: 6]
  |  Branch (979:3): [True: 6, False: 0]
  |  Branch (979:3): [True: 0, False: 6]
  |  Branch (979:3): [True: 6, False: 0]
  ------------------
  980|      6|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|      6|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (980:2): [True: 6, False: 0]
  |  Branch (980:2): [True: 0, False: 0]
  |  Branch (980:2): [True: 6, False: 0]
  |  Branch (980:2): [True: 0, False: 0]
  ------------------
  981|       |
  982|      6|	HashTable *array = get_ht_for_iap(array_zv, /* separate */ true);
  983|      6|	if (zend_hash_num_elements(array) == 0) {
  ------------------
  |  Branch (983:6): [True: 0, False: 6]
  ------------------
  984|       |		/* array->nInternalPointer is already 0 if the array is empty, even after removing elements */
  985|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  986|      0|	}
  987|      6|	zend_hash_internal_pointer_end(array);
  988|       |
  989|      6|	if (USED_RET()) {
  ------------------
  |  |   52|      6|	(!EX(prev_execute_data) || \
  |  |  ------------------
  |  |  |  |  730|     12|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (52:3): [True: 0, False: 6]
  |  |  ------------------
  |  |   53|      6|	 !ZEND_USER_CODE(EX(prev_execute_data)->func->common.type) || \
  |  |  ------------------
  |  |  |  | 1081|     12|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (53:3): [True: 0, False: 6]
  |  |  ------------------
  |  |   54|      6|	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |               	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  863|      6|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (54:3): [True: 3, False: 3]
  |  |  ------------------
  ------------------
  990|       |		php_array_iter_return_current(return_value, array, false);
  991|      3|	}
  992|      6|}
zif_prev:
  997|      2|{
  998|      2|	zval *array_zv;
  999|       |
 1000|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1001|      8|		Z_PARAM_ARRAY_OR_OBJECT_EX(array_zv, 0, 1)
  ------------------
  |  | 1706|      2|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1698|      2|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      2|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      2|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      2|		} \
  |  |  |  |  |  | 1665|      2|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      2|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      2|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      2|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      2|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      2|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 1, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      1|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      1|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      1|		}												\
  |  |  |  |  |  |  |  | 1551|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      2|	}
  |  |  |  |  ------------------
  |  |  |  | 1699|      2|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1700|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1700:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1701|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1702|      0|			break; \
  |  |  |  | 1703|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1001:3): [True: 2, False: 0]
  |  Branch (1001:3): [True: 0, False: 0]
  |  Branch (1001:3): [True: 2, False: 0]
  |  Branch (1001:3): [True: 0, False: 0]
  |  Branch (1001:3): [True: 2, False: 0]
  |  Branch (1001:3): [True: 0, False: 0]
  |  Branch (1001:3): [True: 0, False: 2]
  |  Branch (1001:3): [True: 2, False: 0]
  |  Branch (1001:3): [True: 0, False: 2]
  |  Branch (1001:3): [True: 2, False: 0]
  ------------------
 1002|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1002:2): [True: 2, False: 0]
  |  Branch (1002:2): [True: 0, False: 0]
  |  Branch (1002:2): [True: 2, False: 0]
  |  Branch (1002:2): [True: 0, False: 0]
  ------------------
 1003|       |
 1004|      2|	HashTable *array = get_ht_for_iap(array_zv, /* separate */ true);
 1005|      2|	if (zend_hash_num_elements(array) == 0) {
  ------------------
  |  Branch (1005:6): [True: 0, False: 2]
  ------------------
 1006|       |		/* array->nInternalPointer is already 0 if the array is empty, even after removing elements */
 1007|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1008|      0|	}
 1009|      2|	zend_hash_move_backwards(array);
 1010|       |
 1011|      2|	if (USED_RET()) {
  ------------------
  |  |   52|      2|	(!EX(prev_execute_data) || \
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (52:3): [True: 0, False: 2]
  |  |  ------------------
  |  |   53|      2|	 !ZEND_USER_CODE(EX(prev_execute_data)->func->common.type) || \
  |  |  ------------------
  |  |  |  | 1081|      4|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (53:3): [True: 0, False: 2]
  |  |  ------------------
  |  |   54|      2|	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |               	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (54:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1012|       |		php_array_iter_return_current(return_value, array, false);
 1013|      2|	}
 1014|      2|}
zif_next:
 1019|      3|{
 1020|      3|	zval *array_zv;
 1021|       |
 1022|      9|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1023|     12|		Z_PARAM_ARRAY_OR_OBJECT_EX(array_zv, 0, 1)
  ------------------
  |  | 1706|      3|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1698|      3|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 3, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      3|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      3|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      3|		} \
  |  |  |  |  |  | 1665|      3|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 3, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      3|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      3|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      3|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      3|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      3|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      3|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 1, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      1|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      1|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      1|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      1|		}												\
  |  |  |  |  |  |  |  | 1551|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      3|	}
  |  |  |  |  ------------------
  |  |  |  | 1699|      3|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1700|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1700:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1701|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1702|      0|			break; \
  |  |  |  | 1703|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1023:3): [True: 3, False: 0]
  |  Branch (1023:3): [True: 0, False: 0]
  |  Branch (1023:3): [True: 3, False: 0]
  |  Branch (1023:3): [True: 0, False: 0]
  |  Branch (1023:3): [True: 3, False: 0]
  |  Branch (1023:3): [True: 0, False: 0]
  |  Branch (1023:3): [True: 0, False: 3]
  |  Branch (1023:3): [True: 3, False: 0]
  |  Branch (1023:3): [True: 0, False: 3]
  |  Branch (1023:3): [True: 3, False: 0]
  ------------------
 1024|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1024:2): [True: 3, False: 0]
  |  Branch (1024:2): [True: 0, False: 0]
  |  Branch (1024:2): [True: 3, False: 0]
  |  Branch (1024:2): [True: 0, False: 0]
  ------------------
 1025|       |
 1026|      3|	HashTable *array = get_ht_for_iap(array_zv, /* separate */ true);
 1027|      3|	if (zend_hash_num_elements(array) == 0) {
  ------------------
  |  Branch (1027:6): [True: 0, False: 3]
  ------------------
 1028|       |		/* array->nInternalPointer is already 0 if the array is empty, even after removing elements */
 1029|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1030|      0|	}
 1031|      3|	zend_hash_move_forward(array);
 1032|       |
 1033|      3|	if (USED_RET()) {
  ------------------
  |  |   52|      3|	(!EX(prev_execute_data) || \
  |  |  ------------------
  |  |  |  |  730|      6|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (52:3): [True: 0, False: 3]
  |  |  ------------------
  |  |   53|      3|	 !ZEND_USER_CODE(EX(prev_execute_data)->func->common.type) || \
  |  |  ------------------
  |  |  |  | 1081|      6|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (53:3): [True: 0, False: 3]
  |  |  ------------------
  |  |   54|      3|	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  730|      3|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |               	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  863|      3|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (54:3): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 1034|       |		php_array_iter_return_current(return_value, array, true);
 1035|      2|	}
 1036|      3|}
zif_reset:
 1041|      2|{
 1042|      2|	zval *array_zv;
 1043|       |
 1044|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1045|      8|		Z_PARAM_ARRAY_OR_OBJECT_EX(array_zv, 0, 1)
  ------------------
  |  | 1706|      2|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1698|      2|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      2|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      2|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      2|		} \
  |  |  |  |  |  | 1665|      2|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      2|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      2|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      2|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      2|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      2|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      2|	}
  |  |  |  |  ------------------
  |  |  |  | 1699|      2|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1700|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1700:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1701|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1702|      0|			break; \
  |  |  |  | 1703|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1045:3): [True: 2, False: 0]
  |  Branch (1045:3): [True: 0, False: 0]
  |  Branch (1045:3): [True: 2, False: 0]
  |  Branch (1045:3): [True: 0, False: 0]
  |  Branch (1045:3): [True: 2, False: 0]
  |  Branch (1045:3): [True: 0, False: 0]
  |  Branch (1045:3): [True: 0, False: 2]
  |  Branch (1045:3): [True: 2, False: 0]
  |  Branch (1045:3): [True: 0, False: 2]
  |  Branch (1045:3): [True: 2, False: 0]
  ------------------
 1046|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1046:2): [True: 2, False: 0]
  |  Branch (1046:2): [True: 0, False: 0]
  |  Branch (1046:2): [True: 2, False: 0]
  |  Branch (1046:2): [True: 0, False: 0]
  ------------------
 1047|       |
 1048|      2|	HashTable *array = get_ht_for_iap(array_zv, /* separate */ true);
 1049|      2|	if (zend_hash_num_elements(array) == 0) {
  ------------------
  |  Branch (1049:6): [True: 0, False: 2]
  ------------------
 1050|       |		/* array->nInternalPointer is already 0 if the array is empty, even after removing elements */
 1051|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1052|      0|	}
 1053|      2|	zend_hash_internal_pointer_reset(array);
 1054|       |
 1055|      2|	if (USED_RET()) {
  ------------------
  |  |   52|      2|	(!EX(prev_execute_data) || \
  |  |  ------------------
  |  |  |  |  730|      4|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (52:3): [True: 0, False: 2]
  |  |  ------------------
  |  |   53|      2|	 !ZEND_USER_CODE(EX(prev_execute_data)->func->common.type) || \
  |  |  ------------------
  |  |  |  | 1081|      4|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (53:3): [True: 0, False: 2]
  |  |  ------------------
  |  |   54|      2|	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  730|      2|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |               	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  863|      2|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (54:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1056|       |		php_array_iter_return_current(return_value, array, true);
 1057|      2|	}
 1058|      2|}
zif_current:
 1063|     11|{
 1064|     11|	zval *array_zv;
 1065|       |
 1066|     33|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     11|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     11|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     11|		const int _flags = (flags); \
  |  |  |  | 1599|     11|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     11|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     11|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     11|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     11|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     11|		uint32_t _i = 0; \
  |  |  |  | 1603|     11|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     11|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     11|		char *_error = NULL; \
  |  |  |  | 1606|     11|		bool _dummy = 0; \
  |  |  |  | 1607|     11|		bool _optional = 0; \
  |  |  |  | 1608|     11|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     11|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     11|		((void)_i); \
  |  |  |  | 1610|     11|		((void)_real_arg); \
  |  |  |  | 1611|     11|		((void)_arg); \
  |  |  |  | 1612|     11|		((void)_expected_type); \
  |  |  |  | 1613|     11|		((void)_error); \
  |  |  |  | 1614|     11|		((void)_optional); \
  |  |  |  | 1615|     11|		((void)_dummy); \
  |  |  |  | 1616|     11|		\
  |  |  |  | 1617|     11|		do { \
  |  |  |  | 1618|     11|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     11|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     11|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     11|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     11|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     11|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1067|     44|		Z_PARAM_ARRAY_OR_OBJECT(array_zv)
  ------------------
  |  | 1709|     11|	Z_PARAM_ARRAY_OR_OBJECT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1706|     11|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1698|     11|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     11|	++_i; \
  |  |  |  |  |  |  |  | 1654|     11|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     11|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     11|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     11|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     11|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     11|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     11|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     11|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 11]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1699|     11|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1700|      2|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1700:21): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1701|      2|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      2|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1702|      2|			break; \
  |  |  |  |  |  | 1703|      2|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1067:3): [True: 11, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 11, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 11, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 11]
  |  Branch (1067:3): [True: 11, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  ------------------
 1068|     11|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     11|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      9|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      9|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  |  | 1641|     11|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     11|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1068:2): [True: 9, False: 0]
  |  Branch (1068:2): [True: 0, False: 0]
  |  Branch (1068:2): [True: 9, False: 0]
  |  Branch (1068:2): [True: 0, False: 0]
  ------------------
 1069|       |
 1070|      9|	HashTable *array = get_ht_for_iap(array_zv, /* separate */ false);
 1071|       |	php_array_iter_return_current(return_value, array, true);
 1072|      9|}
zif_key:
 1077|      8|{
 1078|      8|	zval *array_zv;
 1079|       |
 1080|     24|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1081|     32|		Z_PARAM_ARRAY_OR_OBJECT(array_zv)
  ------------------
  |  | 1709|      8|	Z_PARAM_ARRAY_OR_OBJECT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1706|      8|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1698|      8|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1699|      8|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1700|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1700:21): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1701|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1702|      0|			break; \
  |  |  |  |  |  | 1703|      0|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1081:3): [True: 8, False: 0]
  |  Branch (1081:3): [True: 0, False: 0]
  |  Branch (1081:3): [True: 8, False: 0]
  |  Branch (1081:3): [True: 0, False: 0]
  |  Branch (1081:3): [True: 8, False: 0]
  |  Branch (1081:3): [True: 0, False: 0]
  |  Branch (1081:3): [True: 0, False: 8]
  |  Branch (1081:3): [True: 8, False: 0]
  |  Branch (1081:3): [True: 0, False: 0]
  |  Branch (1081:3): [True: 0, False: 0]
  ------------------
 1082|      8|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      8|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      8|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      8|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1082:2): [True: 8, False: 0]
  |  Branch (1082:2): [True: 0, False: 0]
  |  Branch (1082:2): [True: 8, False: 0]
  |  Branch (1082:2): [True: 0, False: 0]
  ------------------
 1083|       |
 1084|      8|	HashTable *array = get_ht_for_iap(array_zv, /* separate */ false);
 1085|      8|	zval *entry = php_array_iter_seek_current(array, true);
 1086|      8|	if (EXPECTED(entry)) {
  ------------------
  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 1087|      8|		zend_hash_get_current_key_zval(array, return_value);
 1088|      8|	}
 1089|      8|}
zif_array_walk:
 1488|      9|{
 1489|      9|	zval *array;
 1490|      9|	zval *userdata = NULL;
 1491|      9|	php_array_walk_context context;
 1492|       |
 1493|     27|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|      9|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      9|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      9|		const int _flags = (flags); \
  |  |  |  | 1599|      9|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      9|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      9|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      9|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      9|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      9|		uint32_t _i = 0; \
  |  |  |  | 1603|      9|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      9|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      9|		char *_error = NULL; \
  |  |  |  | 1606|      9|		bool _dummy = 0; \
  |  |  |  | 1607|      9|		bool _optional = 0; \
  |  |  |  | 1608|      9|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      9|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      9|		((void)_i); \
  |  |  |  | 1610|      9|		((void)_real_arg); \
  |  |  |  | 1611|      9|		((void)_arg); \
  |  |  |  | 1612|      9|		((void)_expected_type); \
  |  |  |  | 1613|      9|		((void)_error); \
  |  |  |  | 1614|      9|		((void)_optional); \
  |  |  |  | 1615|      9|		((void)_dummy); \
  |  |  |  | 1616|      9|		\
  |  |  |  | 1617|      9|		do { \
  |  |  |  | 1618|      9|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      9|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      9|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      9|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      9|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      9|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1494|     36|		Z_PARAM_ARRAY_OR_OBJECT_EX(array, 0, 1)
  ------------------
  |  | 1706|      9|	Z_PARAM_ARRAY_OR_OBJECT_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1698|      9|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      9|	++_i; \
  |  |  |  |  |  | 1654|      9|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      9|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      9|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      9|	_real_arg++; \
  |  |  |  |  |  | 1660|      9|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      9|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 9, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      9|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      9|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 9, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      9|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      9|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      9|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      9|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      9|		} \
  |  |  |  |  |  | 1665|      9|	} \
  |  |  |  |  |  | 1666|      9|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 9, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      9|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      9|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      9|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      9|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      9|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      9|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 8, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      8|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      8|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      8|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      8|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      8|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      8|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      1|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      8|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 8]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      8|		}												\
  |  |  |  |  |  |  |  | 1551|      9|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 9]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      9|	}
  |  |  |  |  ------------------
  |  |  |  | 1699|      9|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 1))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1700|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1700:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1701|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1702|      0|			break; \
  |  |  |  | 1703|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1494:3): [True: 9, False: 0]
  |  Branch (1494:3): [True: 0, False: 0]
  |  Branch (1494:3): [True: 9, False: 0]
  |  Branch (1494:3): [True: 0, False: 0]
  |  Branch (1494:3): [True: 9, False: 0]
  |  Branch (1494:3): [True: 0, False: 0]
  |  Branch (1494:3): [True: 0, False: 9]
  |  Branch (1494:3): [True: 9, False: 0]
  |  Branch (1494:3): [True: 0, False: 9]
  |  Branch (1494:3): [True: 9, False: 0]
  ------------------
 1495|     45|		Z_PARAM_FUNC(context.fci, context.fci_cache)
  ------------------
  |  | 1833|      9|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      9|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      9|	++_i; \
  |  |  |  |  |  | 1654|      9|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      9|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      9|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      9|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      9|	_real_arg++; \
  |  |  |  |  |  | 1660|      9|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      9|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      9|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      9|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      1|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      1|			} else { \
  |  |  |  | 1825|      1|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      2|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1826|      1|			} \
  |  |  |  | 1827|      1|			break; \
  |  |  |  | 1828|      1|		} \
  |  |  ------------------
  ------------------
  |  Branch (1495:3): [True: 9, False: 0]
  |  Branch (1495:3): [True: 0, False: 0]
  |  Branch (1495:3): [True: 9, False: 0]
  |  Branch (1495:3): [True: 0, False: 0]
  |  Branch (1495:3): [True: 9, False: 0]
  |  Branch (1495:3): [True: 0, False: 0]
  |  Branch (1495:3): [True: 0, False: 9]
  |  Branch (1495:3): [True: 9, False: 0]
  |  Branch (1495:3): [True: 0, False: 0]
  |  Branch (1495:3): [True: 0, False: 0]
  ------------------
 1496|      8|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      8|	_optional = 1;
  ------------------
 1497|     16|		Z_PARAM_ZVAL(userdata)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      8|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      8|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 8, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      8|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 8, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      8|	} \
  |  |  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1497:3): [True: 8, False: 0]
  |  Branch (1497:3): [True: 0, False: 0]
  |  Branch (1497:3): [True: 0, False: 8]
  |  Branch (1497:3): [True: 8, False: 0]
  |  Branch (1497:3): [True: 8, False: 0]
  |  Branch (1497:3): [True: 0, False: 0]
  |  Branch (1497:3): [True: 8, False: 0]
  |  Branch (1497:3): [True: 0, False: 0]
  |  Branch (1497:3): [True: 0, False: 0]
  |  Branch (1497:3): [True: 0, False: 0]
  ------------------
 1498|     16|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      9|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      9|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1498:2): [True: 0, False: 0]
  |  Branch (1498:2): [True: 0, False: 0]
  |  Branch (1498:2): [True: 0, False: 0]
  |  Branch (1498:2): [True: 0, False: 0]
  ------------------
 1499|       |
 1500|      8|	php_array_walk(&context, array, userdata, /* recursive */ false);
 1501|      8|	RETURN_TRUE;
  ------------------
  |  | 1070|      8|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      8|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      8|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      8|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      8|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      8|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1502|      8|}
zif_in_array:
 1638|     28|{
 1639|     28|	php_search_array(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  ------------------
  |  |  587|     28|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1640|     28|}
zif_extract:
 2448|      6|{
 2449|      6|	zval *var_array_param;
 2450|      6|	zend_long extract_refs;
 2451|      6|	zend_long extract_type = PHP_EXTR_OVERWRITE;
  ------------------
  |  |   35|      6|#define PHP_EXTR_OVERWRITE			0
  ------------------
 2452|      6|	zend_string *prefix = NULL;
 2453|      6|	zend_long count;
 2454|      6|	zend_array *symbol_table;
 2455|       |
 2456|     18|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      6|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      6|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      6|		const int _flags = (flags); \
  |  |  |  | 1599|      6|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      6|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      6|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      6|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      6|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      6|		uint32_t _i = 0; \
  |  |  |  | 1603|      6|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      6|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      6|		char *_error = NULL; \
  |  |  |  | 1606|      6|		bool _dummy = 0; \
  |  |  |  | 1607|      6|		bool _optional = 0; \
  |  |  |  | 1608|      6|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      6|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      6|		((void)_i); \
  |  |  |  | 1610|      6|		((void)_real_arg); \
  |  |  |  | 1611|      6|		((void)_arg); \
  |  |  |  | 1612|      6|		((void)_expected_type); \
  |  |  |  | 1613|      6|		((void)_error); \
  |  |  |  | 1614|      6|		((void)_optional); \
  |  |  |  | 1615|      6|		((void)_dummy); \
  |  |  |  | 1616|      6|		\
  |  |  |  | 1617|      6|		do { \
  |  |  |  | 1618|      6|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      6|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      6|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2457|     24|		Z_PARAM_ARRAY_EX2(var_array_param, 0, 1, 0)
  ------------------
  |  | 1680|      6|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  ------------------
  |  |  |  | 1653|      6|	++_i; \
  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1658|      0|	} \
  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1661:6): [True: 6, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1662|      6|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1664|      0|		} \
  |  |  |  | 1665|      6|	} \
  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1668|      0|	}
  |  |  ------------------
  |  | 1681|      6|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  ------------------
  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  ------------------
  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  ------------------
  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  ------------------
  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  ------------------
  |  | 1684|      0|			break; \
  |  | 1685|      0|		}
  ------------------
  |  Branch (2457:3): [True: 6, False: 0]
  |  Branch (2457:3): [True: 0, False: 0]
  |  Branch (2457:3): [True: 6, False: 0]
  |  Branch (2457:3): [True: 0, False: 0]
  |  Branch (2457:3): [True: 6, False: 0]
  |  Branch (2457:3): [True: 0, False: 0]
  |  Branch (2457:3): [True: 0, False: 6]
  |  Branch (2457:3): [True: 6, False: 0]
  |  Branch (2457:3): [True: 0, False: 0]
  |  Branch (2457:3): [True: 0, False: 0]
  ------------------
 2458|      6|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      6|	_optional = 1;
  ------------------
 2459|     12|		Z_PARAM_LONG(extract_type)
  ------------------
  |  | 1905|      6|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      6|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      6|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 6, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      6|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2459:3): [True: 6, False: 0]
  |  Branch (2459:3): [True: 0, False: 0]
  |  Branch (2459:3): [True: 0, False: 6]
  |  Branch (2459:3): [True: 6, False: 0]
  |  Branch (2459:3): [True: 6, False: 0]
  |  Branch (2459:3): [True: 0, False: 0]
  |  Branch (2459:3): [True: 6, False: 0]
  |  Branch (2459:3): [True: 0, False: 0]
  |  Branch (2459:3): [True: 0, False: 0]
  |  Branch (2459:3): [True: 0, False: 0]
  ------------------
 2460|      0|		Z_PARAM_STR(prefix)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  |  Branch (2460:3): [True: 0, False: 0]
  ------------------
 2461|      6|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      6|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2461:2): [True: 0, False: 0]
  |  Branch (2461:2): [True: 0, False: 0]
  |  Branch (2461:2): [True: 0, False: 0]
  |  Branch (2461:2): [True: 0, False: 0]
  ------------------
 2462|       |
 2463|      6|	extract_refs = (extract_type & PHP_EXTR_REFS);
  ------------------
  |  |   43|      6|#define PHP_EXTR_REFS				0x100
  ------------------
 2464|      6|	if (extract_refs) {
  ------------------
  |  Branch (2464:6): [True: 0, False: 6]
  ------------------
 2465|      0|		SEPARATE_ARRAY(var_array_param);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2466|      0|	}
 2467|      6|	extract_type &= 0xff;
 2468|       |
 2469|      6|	if (extract_type < PHP_EXTR_OVERWRITE || extract_type > PHP_EXTR_IF_EXISTS) {
  ------------------
  |  |   35|     12|#define PHP_EXTR_OVERWRITE			0
  ------------------
              	if (extract_type < PHP_EXTR_OVERWRITE || extract_type > PHP_EXTR_IF_EXISTS) {
  ------------------
  |  |   41|      6|#define PHP_EXTR_IF_EXISTS			6
  ------------------
  |  Branch (2469:6): [True: 0, False: 6]
  |  Branch (2469:43): [True: 0, False: 6]
  ------------------
 2470|      0|		zend_argument_value_error(2, "must be a valid extract type");
 2471|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2471:3): [True: 0, False: 0]
  |  Branch (2471:3): [True: 0, False: 0]
  ------------------
 2472|      0|	}
 2473|       |
 2474|      6|	if (extract_type > PHP_EXTR_SKIP && extract_type <= PHP_EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) {
  ------------------
  |  |   36|     12|#define PHP_EXTR_SKIP				1
  ------------------
              	if (extract_type > PHP_EXTR_SKIP && extract_type <= PHP_EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) {
  ------------------
  |  |   40|      6|#define PHP_EXTR_PREFIX_IF_EXISTS	5
  ------------------
              	if (extract_type > PHP_EXTR_SKIP && extract_type <= PHP_EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) {
  ------------------
  |  |  529|      0|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      0|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      0|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2474:6): [True: 0, False: 6]
  |  Branch (2474:38): [True: 0, False: 0]
  |  Branch (2474:83): [True: 0, False: 0]
  ------------------
 2475|      0|		zend_argument_value_error(3, "is required when using this extract type");
 2476|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2476:3): [True: 0, False: 0]
  |  Branch (2476:3): [True: 0, False: 0]
  ------------------
 2477|      0|	}
 2478|       |
 2479|      6|	if (prefix) {
  ------------------
  |  Branch (2479:6): [True: 0, False: 6]
  ------------------
 2480|      0|		if (ZSTR_LEN(prefix) && !php_valid_var_name(prefix)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2480:27): [True: 0, False: 0]
  ------------------
 2481|      0|			zend_argument_value_error(3, "must be a valid identifier");
 2482|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2482:4): [True: 0, False: 0]
  |  Branch (2482:4): [True: 0, False: 0]
  ------------------
 2483|      0|		}
 2484|      0|	}
 2485|       |
 2486|      6|	if (zend_forbid_dynamic_call() == FAILURE) {
  ------------------
  |  Branch (2486:6): [True: 1, False: 5]
  ------------------
 2487|      1|		return;
 2488|      1|	}
 2489|       |
 2490|      5|	symbol_table = zend_rebuild_symbol_table();
 2491|      5|	ZEND_ASSERT(symbol_table && "A symbol table should always be available here");
  ------------------
  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2491:2): [True: 0, False: 5]
  |  Branch (2491:2): [True: 0, False: 0]
  |  Branch (2491:2): [True: 5, False: 0]
  |  Branch (2491:2): [True: 5, False: 0]
  ------------------
 2492|       |
 2493|      5|	if (extract_refs) {
  ------------------
  |  Branch (2493:6): [True: 0, False: 5]
  ------------------
 2494|      0|		switch (extract_type) {
 2495|      0|			case PHP_EXTR_IF_EXISTS:
  ------------------
  |  |   41|      0|#define PHP_EXTR_IF_EXISTS			6
  ------------------
  |  Branch (2495:4): [True: 0, False: 0]
  ------------------
 2496|      0|				count = php_extract_ref_if_exists(Z_ARRVAL_P(var_array_param), symbol_table);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2497|      0|				break;
 2498|      0|			case PHP_EXTR_OVERWRITE:
  ------------------
  |  |   35|      0|#define PHP_EXTR_OVERWRITE			0
  ------------------
  |  Branch (2498:4): [True: 0, False: 0]
  ------------------
 2499|      0|				count = php_extract_ref_overwrite(Z_ARRVAL_P(var_array_param), symbol_table);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2500|      0|				break;
 2501|      0|			case PHP_EXTR_PREFIX_IF_EXISTS:
  ------------------
  |  |   40|      0|#define PHP_EXTR_PREFIX_IF_EXISTS	5
  ------------------
  |  Branch (2501:4): [True: 0, False: 0]
  ------------------
 2502|      0|				count = php_extract_ref_prefix_if_exists(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2503|      0|				break;
 2504|      0|			case PHP_EXTR_PREFIX_SAME:
  ------------------
  |  |   37|      0|#define PHP_EXTR_PREFIX_SAME		2
  ------------------
  |  Branch (2504:4): [True: 0, False: 0]
  ------------------
 2505|      0|				count = php_extract_ref_prefix_same(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2506|      0|				break;
 2507|      0|			case PHP_EXTR_PREFIX_ALL:
  ------------------
  |  |   38|      0|#define PHP_EXTR_PREFIX_ALL			3
  ------------------
  |  Branch (2507:4): [True: 0, False: 0]
  ------------------
 2508|      0|				count = php_extract_ref_prefix_all(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2509|      0|				break;
 2510|      0|			case PHP_EXTR_PREFIX_INVALID:
  ------------------
  |  |   39|      0|#define PHP_EXTR_PREFIX_INVALID		4
  ------------------
  |  Branch (2510:4): [True: 0, False: 0]
  ------------------
 2511|      0|				count = php_extract_ref_prefix_invalid(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2512|      0|				break;
 2513|      0|			default:
  ------------------
  |  Branch (2513:4): [True: 0, False: 0]
  ------------------
 2514|      0|				count = php_extract_ref_skip(Z_ARRVAL_P(var_array_param), symbol_table);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2515|      0|				break;
 2516|      0|		}
 2517|      5|	} else {
 2518|       |		/* The array might be stored in a local variable that will be overwritten */
 2519|      5|		zval array_copy;
 2520|      5|		ZVAL_COPY(&array_copy, var_array_param);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 2521|      5|		switch (extract_type) {
 2522|      0|			case PHP_EXTR_IF_EXISTS:
  ------------------
  |  |   41|      0|#define PHP_EXTR_IF_EXISTS			6
  ------------------
  |  Branch (2522:4): [True: 0, False: 5]
  ------------------
 2523|      0|				count = php_extract_if_exists(Z_ARRVAL(array_copy), symbol_table);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2524|      0|				break;
 2525|      5|			case PHP_EXTR_OVERWRITE:
  ------------------
  |  |   35|      5|#define PHP_EXTR_OVERWRITE			0
  ------------------
  |  Branch (2525:4): [True: 5, False: 0]
  ------------------
 2526|      5|				count = php_extract_overwrite(Z_ARRVAL(array_copy), symbol_table);
  ------------------
  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2527|      5|				break;
 2528|      0|			case PHP_EXTR_PREFIX_IF_EXISTS:
  ------------------
  |  |   40|      0|#define PHP_EXTR_PREFIX_IF_EXISTS	5
  ------------------
  |  Branch (2528:4): [True: 0, False: 5]
  ------------------
 2529|      0|				count = php_extract_prefix_if_exists(Z_ARRVAL(array_copy), symbol_table, prefix);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2530|      0|				break;
 2531|      0|			case PHP_EXTR_PREFIX_SAME:
  ------------------
  |  |   37|      0|#define PHP_EXTR_PREFIX_SAME		2
  ------------------
  |  Branch (2531:4): [True: 0, False: 5]
  ------------------
 2532|      0|				count = php_extract_prefix_same(Z_ARRVAL(array_copy), symbol_table, prefix);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2533|      0|				break;
 2534|      0|			case PHP_EXTR_PREFIX_ALL:
  ------------------
  |  |   38|      0|#define PHP_EXTR_PREFIX_ALL			3
  ------------------
  |  Branch (2534:4): [True: 0, False: 5]
  ------------------
 2535|      0|				count = php_extract_prefix_all(Z_ARRVAL(array_copy), symbol_table, prefix);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2536|      0|				break;
 2537|      0|			case PHP_EXTR_PREFIX_INVALID:
  ------------------
  |  |   39|      0|#define PHP_EXTR_PREFIX_INVALID		4
  ------------------
  |  Branch (2537:4): [True: 0, False: 5]
  ------------------
 2538|      0|				count = php_extract_prefix_invalid(Z_ARRVAL(array_copy), symbol_table, prefix);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2539|      0|				break;
 2540|      0|			default:
  ------------------
  |  Branch (2540:4): [True: 0, False: 5]
  ------------------
 2541|      0|				count = php_extract_skip(Z_ARRVAL(array_copy), symbol_table);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2542|      0|				break;
 2543|      5|		}
 2544|      5|		zval_ptr_dtor(&array_copy);
 2545|      5|	}
 2546|       |
 2547|      5|	RETURN_LONG(count);
  ------------------
  |  | 1048|      5|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      5|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      5|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      5|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      5|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      5|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      5|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2548|      5|}
zif_compact:
 2593|      3|{
 2594|      3|	zval *args = NULL;	/* function arguments array */
 2595|      3|	uint32_t num_args, i;
 2596|      3|	zend_array *symbol_table;
 2597|       |
 2598|      9|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2599|      9|		Z_PARAM_VARIADIC('+', args, num_args)
  ------------------
  |  | 2140|      3|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|      3|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|      3|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|      3|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|      3|			dest = _real_arg + 1; \
  |  |  |  | 2126|      3|			dest_num = _num_varargs; \
  |  |  |  | 2127|      3|			_i += _num_varargs; \
  |  |  |  | 2128|      3|			_real_arg += _num_varargs; \
  |  |  |  | 2129|      3|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|      3|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|      3|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2600|      9|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2600:2): [True: 3, False: 0]
  |  Branch (2600:2): [True: 0, False: 0]
  |  Branch (2600:2): [True: 0, False: 3]
  |  Branch (2600:2): [True: 3, False: 0]
  ------------------
 2601|       |
 2602|      3|	if (zend_forbid_dynamic_call() == FAILURE) {
  ------------------
  |  Branch (2602:6): [True: 0, False: 3]
  ------------------
 2603|      0|		return;
 2604|      0|	}
 2605|       |
 2606|      3|	symbol_table = zend_rebuild_symbol_table();
 2607|      3|	ZEND_ASSERT(symbol_table && "A symbol table should always be available here");
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2607:2): [True: 0, False: 3]
  |  Branch (2607:2): [True: 0, False: 0]
  |  Branch (2607:2): [True: 3, False: 0]
  |  Branch (2607:2): [True: 3, False: 0]
  ------------------
 2608|       |
 2609|       |	/* compact() is probably most used with a single array of var_names
 2610|       |	   or multiple string names, rather than a combination of both.
 2611|       |	   So quickly guess a minimum result size based on that */
 2612|      3|	if (num_args && Z_TYPE(args[0]) == IS_ARRAY) {
  ------------------
  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (num_args && Z_TYPE(args[0]) == IS_ARRAY) {
  ------------------
  |  |  613|      3|#define IS_ARRAY					7
  ------------------
  |  Branch (2612:6): [True: 3, False: 0]
  |  Branch (2612:18): [True: 0, False: 3]
  ------------------
 2613|      0|		array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL(args[0])));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2614|      3|	} else {
 2615|      3|		array_init_size(return_value, num_args);
 2616|      3|	}
 2617|       |
 2618|      6|	for (i = 0; i < num_args; i++) {
  ------------------
  |  Branch (2618:14): [True: 3, False: 3]
  ------------------
 2619|      3|		php_compact_var(symbol_table, return_value, &args[i], i + 1);
 2620|      3|	}
 2621|      3|}
zif_array_fill:
 2626|      6|{
 2627|      6|	zval *val;
 2628|      6|	zend_long start_key, num;
 2629|       |
 2630|     18|	ZEND_PARSE_PARAMETERS_START(3, 3)
  ------------------
  |  | 1629|      6|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      6|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      6|		const int _flags = (flags); \
  |  |  |  | 1599|      6|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      6|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      6|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      6|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      6|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      6|		uint32_t _i = 0; \
  |  |  |  | 1603|      6|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      6|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      6|		char *_error = NULL; \
  |  |  |  | 1606|      6|		bool _dummy = 0; \
  |  |  |  | 1607|      6|		bool _optional = 0; \
  |  |  |  | 1608|      6|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      6|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      6|		((void)_i); \
  |  |  |  | 1610|      6|		((void)_real_arg); \
  |  |  |  | 1611|      6|		((void)_arg); \
  |  |  |  | 1612|      6|		((void)_expected_type); \
  |  |  |  | 1613|      6|		((void)_error); \
  |  |  |  | 1614|      6|		((void)_optional); \
  |  |  |  | 1615|      6|		((void)_dummy); \
  |  |  |  | 1616|      6|		\
  |  |  |  | 1617|      6|		do { \
  |  |  |  | 1618|      6|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      6|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      6|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2631|     24|		Z_PARAM_LONG(start_key)
  ------------------
  |  | 1905|      6|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      6|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      6|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2631:3): [True: 6, False: 0]
  |  Branch (2631:3): [True: 0, False: 0]
  |  Branch (2631:3): [True: 6, False: 0]
  |  Branch (2631:3): [True: 0, False: 0]
  |  Branch (2631:3): [True: 6, False: 0]
  |  Branch (2631:3): [True: 0, False: 0]
  |  Branch (2631:3): [True: 0, False: 6]
  |  Branch (2631:3): [True: 6, False: 0]
  |  Branch (2631:3): [True: 0, False: 0]
  |  Branch (2631:3): [True: 0, False: 0]
  ------------------
 2632|     30|		Z_PARAM_LONG(num)
  ------------------
  |  | 1905|      6|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      6|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      6|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2632:3): [True: 6, False: 0]
  |  Branch (2632:3): [True: 0, False: 0]
  |  Branch (2632:3): [True: 6, False: 0]
  |  Branch (2632:3): [True: 0, False: 0]
  |  Branch (2632:3): [True: 6, False: 0]
  |  Branch (2632:3): [True: 0, False: 0]
  |  Branch (2632:3): [True: 0, False: 6]
  |  Branch (2632:3): [True: 6, False: 0]
  |  Branch (2632:3): [True: 0, False: 0]
  |  Branch (2632:3): [True: 0, False: 0]
  ------------------
 2633|     30|		Z_PARAM_ZVAL(val)
  ------------------
  |  | 2116|      6|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      6|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      6|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      6|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2633:3): [True: 6, False: 0]
  |  Branch (2633:3): [True: 0, False: 0]
  |  Branch (2633:3): [True: 6, False: 0]
  |  Branch (2633:3): [True: 0, False: 0]
  |  Branch (2633:3): [True: 6, False: 0]
  |  Branch (2633:3): [True: 0, False: 0]
  |  Branch (2633:3): [True: 0, False: 6]
  |  Branch (2633:3): [True: 6, False: 0]
  |  Branch (2633:3): [True: 0, False: 0]
  |  Branch (2633:3): [True: 0, False: 0]
  ------------------
 2634|     30|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|      6|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2634:2): [True: 6, False: 0]
  |  Branch (2634:2): [True: 0, False: 0]
  |  Branch (2634:2): [True: 6, False: 0]
  |  Branch (2634:2): [True: 0, False: 0]
  ------------------
 2635|       |
 2636|      6|	if (EXPECTED(num > 0)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 2637|      6|		if (sizeof(num) > 4 && UNEXPECTED(num > INT_MAX)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (2637:7): [True: 6, Folded]
  ------------------
 2638|      0|			zend_argument_value_error(2, "is too large");
 2639|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2639:4): [True: 0, False: 0]
  |  Branch (2639:4): [True: 0, False: 0]
  ------------------
 2640|      6|		} else if (UNEXPECTED(start_key > ZEND_LONG_MAX - num + 1)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 2641|      0|			zend_throw_error(NULL, "Cannot add element to the array as the next element is already occupied");
 2642|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2642:4): [True: 0, False: 0]
  |  Branch (2642:4): [True: 0, False: 0]
  ------------------
 2643|      6|		} else if (EXPECTED(start_key >= 0) && EXPECTED(start_key < num)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
              		} else if (EXPECTED(start_key >= 0) && EXPECTED(start_key < num)) {
  ------------------
  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 2644|       |			/* create packed array */
 2645|      6|			zval *zv;
 2646|       |
 2647|      6|			array_init_size(return_value, (uint32_t)(start_key + num));
 2648|      6|			zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2649|      6|			Z_ARRVAL_P(return_value)->nNumUsed = (uint32_t)(start_key + num);
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2650|      6|			Z_ARRVAL_P(return_value)->nNumOfElements = (uint32_t)num;
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2651|      6|			Z_ARRVAL_P(return_value)->nNextFreeElement = (zend_long)(start_key + num);
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2652|       |
 2653|      6|			if (Z_REFCOUNTED_P(val)) {
  ------------------
  |  |  942|      6|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      6|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      6|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2654|      0|				GC_ADDREF_EX(Z_COUNTED_P(val), (uint32_t)num);
  ------------------
  |  |  720|      0|#define GC_ADDREF_EX(p, rc)			zend_gc_addref_ex(&(p)->gc, rc)
  ------------------
 2655|      0|			}
 2656|       |
 2657|      6|			zv = Z_ARRVAL_P(return_value)->arPacked;
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2658|       |
 2659|     26|			while (start_key--) {
  ------------------
  |  Branch (2659:11): [True: 20, False: 6]
  ------------------
 2660|     20|				ZVAL_UNDEF(zv);
  ------------------
  |  | 1055|     20|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     20|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     20|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 2661|     20|				zv++;
 2662|     20|			}
 2663|  51.2k|			while (num--) {
  ------------------
  |  Branch (2663:11): [True: 51.2k, False: 6]
  ------------------
 2664|  51.2k|				ZVAL_COPY_VALUE(zv, val);
  ------------------
  |  | 1416|  51.2k|	do {												\
  |  | 1417|  51.2k|		zval *_z1 = (z);								\
  |  | 1418|  51.2k|		const zval *_z2 = (v);							\
  |  | 1419|  51.2k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  51.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  51.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  51.2k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  51.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  51.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  51.2k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  51.2k|	do {												\
  |  |  |  | 1408|  51.2k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  51.2k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  51.2k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  51.2k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  51.2k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  51.2k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  51.2k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 51.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  51.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 51.2k]
  |  |  ------------------
  ------------------
 2665|  51.2k|				zv++;
 2666|  51.2k|			}
 2667|      6|		} else {
 2668|       |			/* create hash */
 2669|      0|			array_init_size(return_value, (uint32_t)num);
 2670|      0|			zend_hash_real_init_mixed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2671|      0|			if (Z_REFCOUNTED_P(val)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2672|      0|				GC_ADDREF_EX(Z_COUNTED_P(val), (uint32_t)num);
  ------------------
  |  |  720|      0|#define GC_ADDREF_EX(p, rc)			zend_gc_addref_ex(&(p)->gc, rc)
  ------------------
 2673|      0|			}
 2674|      0|			zend_hash_index_add_new(Z_ARRVAL_P(return_value), start_key, val);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2675|      0|			while (--num) {
  ------------------
  |  Branch (2675:11): [True: 0, False: 0]
  ------------------
 2676|      0|				zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), val);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2677|      0|				start_key++;
 2678|      0|			}
 2679|      0|		}
 2680|      6|	} else if (EXPECTED(num == 0)) {
  ------------------
  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2681|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2682|      0|	} else {
 2683|      0|		zend_argument_value_error(2, "must be greater than or equal to 0");
 2684|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2684:3): [True: 0, False: 0]
  |  Branch (2684:3): [True: 0, False: 0]
  ------------------
 2685|      0|	}
 2686|      6|}
zif_array_fill_keys:
 2691|      5|{
 2692|      5|	zval *keys, *val, *entry;
 2693|       |
 2694|     14|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2695|     16|		Z_PARAM_ARRAY(keys)
  ------------------
  |  | 1691|      4|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      4|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      4|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      4|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      1|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      1|			break; \
  |  |  |  |  |  | 1685|      1|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2695:3): [True: 4, False: 0]
  |  Branch (2695:3): [True: 0, False: 0]
  |  Branch (2695:3): [True: 4, False: 0]
  |  Branch (2695:3): [True: 0, False: 0]
  |  Branch (2695:3): [True: 4, False: 0]
  |  Branch (2695:3): [True: 0, False: 0]
  |  Branch (2695:3): [True: 0, False: 4]
  |  Branch (2695:3): [True: 4, False: 0]
  |  Branch (2695:3): [True: 0, False: 0]
  |  Branch (2695:3): [True: 0, False: 0]
  ------------------
 2696|     15|		Z_PARAM_ZVAL(val)
  ------------------
  |  | 2116|      3|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      4|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      3|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      3|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2696:3): [True: 3, False: 0]
  |  Branch (2696:3): [True: 0, False: 0]
  |  Branch (2696:3): [True: 3, False: 0]
  |  Branch (2696:3): [True: 0, False: 0]
  |  Branch (2696:3): [True: 3, False: 0]
  |  Branch (2696:3): [True: 0, False: 0]
  |  Branch (2696:3): [True: 0, False: 3]
  |  Branch (2696:3): [True: 3, False: 0]
  |  Branch (2696:3): [True: 0, False: 0]
  |  Branch (2696:3): [True: 0, False: 0]
  ------------------
 2697|     15|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2697:2): [True: 3, False: 0]
  |  Branch (2697:2): [True: 0, False: 0]
  |  Branch (2697:2): [True: 3, False: 0]
  |  Branch (2697:2): [True: 0, False: 0]
  ------------------
 2698|       |
 2699|       |	/* Initialize return array */
 2700|      3|	array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(keys)));
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2701|       |
 2702|     27|	ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(keys), entry) {
  ------------------
  |  | 1117|     12|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      3|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      3|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      3|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      3|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      3|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      3|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     15|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|     12|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 12, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1034|     12|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|     12|	_val = _z;
  ------------------
 2703|     27|		ZVAL_DEREF(entry);
  ------------------
  |  | 1474|     12|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     12|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 2704|     27|		if (Z_TYPE_P(entry) == IS_LONG) {
  ------------------
  |  |  669|     12|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     12|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(entry) == IS_LONG) {
  ------------------
  |  |  610|     12|#define IS_LONG						4
  ------------------
  |  Branch (2704:7): [True: 5, False: 7]
  ------------------
 2705|      5|			zend_hash_index_add(Z_ARRVAL_P(return_value), Z_LVAL_P(entry), val);
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			zend_hash_index_add(Z_ARRVAL_P(return_value), Z_LVAL_P(entry), val);
  ------------------
  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2706|      7|		} else {
 2707|      7|			zend_string *tmp_key;
 2708|      7|			zend_string *key = zval_get_tmp_string(entry, &tmp_key);
 2709|      7|			zend_symtable_add(Z_ARRVAL_P(return_value), key, val);
  ------------------
  |  |  997|      7|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      7|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2710|      7|			zend_tmp_string_release(tmp_key);
 2711|      7|		}
 2712|     27|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     12|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2713|       |
 2714|      3|	if (Z_REFCOUNTED_P(val)) {
  ------------------
  |  |  942|      3|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      3|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2715|      0|		GC_ADDREF_EX(Z_COUNTED_P(val), zend_hash_num_elements(Z_ARRVAL_P(return_value)));
  ------------------
  |  |  720|      0|#define GC_ADDREF_EX(p, rc)			zend_gc_addref_ex(&(p)->gc, rc)
  ------------------
 2716|      0|	}
 2717|      3|}
zif_range:
 2825|     31|{
 2826|     31|	zval *user_start, *user_end, *user_step = NULL, tmp;
 2827|     31|	bool is_step_double = false;
 2828|     31|	bool is_step_negative = false;
 2829|     31|	double step_double = 1.0;
 2830|     31|	zend_long step = 1;
 2831|       |
 2832|     93|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|     31|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     31|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     31|		const int _flags = (flags); \
  |  |  |  | 1599|     31|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     31|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     31|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     31|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     31|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     31|		uint32_t _i = 0; \
  |  |  |  | 1603|     31|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     31|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     31|		char *_error = NULL; \
  |  |  |  | 1606|     31|		bool _dummy = 0; \
  |  |  |  | 1607|     31|		bool _optional = 0; \
  |  |  |  | 1608|     31|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     31|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     31|		((void)_i); \
  |  |  |  | 1610|     31|		((void)_real_arg); \
  |  |  |  | 1611|     31|		((void)_arg); \
  |  |  |  | 1612|     31|		((void)_expected_type); \
  |  |  |  | 1613|     31|		((void)_error); \
  |  |  |  | 1614|     31|		((void)_optional); \
  |  |  |  | 1615|     31|		((void)_dummy); \
  |  |  |  | 1616|     31|		\
  |  |  |  | 1617|     31|		do { \
  |  |  |  | 1618|     31|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     31|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     31|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     31|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     31|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     31|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2833|    124|		Z_PARAM_NUMBER_OR_STR(user_start)
  ------------------
  |  | 1934|     31|	Z_PARAM_NUMBER_OR_STR_EX(dest, false)
  |  |  ------------------
  |  |  |  | 1926|     31|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     31|	++_i; \
  |  |  |  |  |  | 1654|     31|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     31|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     31|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     31|	_real_arg++; \
  |  |  |  |  |  | 1660|     31|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     31|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     31|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1927|     31|	if (UNEXPECTED(!zend_parse_arg_number_or_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1928|      0|		_expected_type = check_null ? Z_EXPECTED_NUMBER_OR_STRING_OR_NULL : Z_EXPECTED_NUMBER_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1928:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1929|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1930|      0|		break; \
  |  |  |  | 1931|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2833:3): [True: 31, False: 0]
  |  Branch (2833:3): [True: 0, False: 0]
  |  Branch (2833:3): [True: 31, False: 0]
  |  Branch (2833:3): [True: 0, False: 0]
  |  Branch (2833:3): [True: 31, False: 0]
  |  Branch (2833:3): [True: 0, False: 0]
  |  Branch (2833:3): [True: 0, False: 31]
  |  Branch (2833:3): [True: 31, False: 0]
  |  Branch (2833:3): [True: 0, False: 0]
  |  Branch (2833:3): [True: 0, False: 0]
  ------------------
 2834|    155|		Z_PARAM_NUMBER_OR_STR(user_end)
  ------------------
  |  | 1934|     31|	Z_PARAM_NUMBER_OR_STR_EX(dest, false)
  |  |  ------------------
  |  |  |  | 1926|     31|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     31|	++_i; \
  |  |  |  |  |  | 1654|     31|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     31|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     31|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     31|	_real_arg++; \
  |  |  |  |  |  | 1660|     31|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     31|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     31|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1927|     31|	if (UNEXPECTED(!zend_parse_arg_number_or_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1928|      0|		_expected_type = check_null ? Z_EXPECTED_NUMBER_OR_STRING_OR_NULL : Z_EXPECTED_NUMBER_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1928:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1929|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1930|      0|		break; \
  |  |  |  | 1931|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (2834:3): [True: 31, False: 0]
  |  Branch (2834:3): [True: 0, False: 0]
  |  Branch (2834:3): [True: 31, False: 0]
  |  Branch (2834:3): [True: 0, False: 0]
  |  Branch (2834:3): [True: 31, False: 0]
  |  Branch (2834:3): [True: 0, False: 0]
  |  Branch (2834:3): [True: 0, False: 31]
  |  Branch (2834:3): [True: 31, False: 0]
  |  Branch (2834:3): [True: 0, False: 0]
  |  Branch (2834:3): [True: 0, False: 0]
  ------------------
 2835|     31|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     31|	_optional = 1;
  ------------------
 2836|     76|		Z_PARAM_NUMBER(user_step)
  ------------------
  |  | 1923|     31|	Z_PARAM_NUMBER_EX(dest, 0)
  |  |  ------------------
  |  |  |  | 1912|     31|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     31|	++_i; \
  |  |  |  |  |  | 1654|     31|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     31|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     31|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 31, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     31|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 24, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     31|	} \
  |  |  |  |  |  | 1659|     31|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1913|      7|	if (UNEXPECTED(!zend_parse_arg_number(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1914|      1|		_expected_type = check_null ? Z_EXPECTED_NUMBER_OR_NULL : Z_EXPECTED_NUMBER; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1914:20): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1915|      1|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1916|      1|		break; \
  |  |  |  | 1917|      1|	}
  |  |  ------------------
  ------------------
  |  Branch (2836:3): [True: 31, False: 0]
  |  Branch (2836:3): [True: 0, False: 0]
  |  Branch (2836:3): [True: 0, False: 31]
  |  Branch (2836:3): [True: 31, False: 0]
  |  Branch (2836:3): [True: 31, False: 0]
  |  Branch (2836:3): [True: 0, False: 0]
  |  Branch (2836:3): [True: 31, False: 0]
  |  Branch (2836:3): [True: 0, False: 0]
  |  Branch (2836:3): [True: 0, False: 0]
  |  Branch (2836:3): [True: 0, False: 0]
  ------------------
 2837|     31|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|     31|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     31|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 30]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     31|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2837:2): [True: 6, False: 0]
  |  Branch (2837:2): [True: 0, False: 0]
  |  Branch (2837:2): [True: 6, False: 0]
  |  Branch (2837:2): [True: 0, False: 0]
  ------------------
 2838|       |
 2839|     30|	if (user_step) {
  ------------------
  |  Branch (2839:6): [True: 6, False: 24]
  ------------------
 2840|      6|		if (UNEXPECTED(Z_TYPE_P(user_step) == IS_DOUBLE)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
 2841|      2|			step_double = Z_DVAL_P(user_step);
  ------------------
  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2842|       |
 2843|      2|			if (zend_isinf(step_double)) {
  ------------------
  |  |  537|      2|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (2843:8): [True: 0, False: 2]
  ------------------
 2844|      0|				zend_argument_value_error(3, "must be a finite number, INF provided");
 2845|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2845:5): [True: 0, False: 0]
  |  Branch (2845:5): [True: 0, False: 0]
  ------------------
 2846|      0|			}
 2847|      2|			if (zend_isnan(step_double)) {
  ------------------
  |  |  536|      2|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (2847:8): [True: 0, False: 2]
  ------------------
 2848|      0|				zend_argument_value_error(3, "must be a finite number, NAN provided");
 2849|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2849:5): [True: 0, False: 0]
  |  Branch (2849:5): [True: 0, False: 0]
  ------------------
 2850|      0|			}
 2851|       |
 2852|       |			/* We only want positive step values. */
 2853|      2|			if (step_double < 0.0) {
  ------------------
  |  Branch (2853:8): [True: 2, False: 0]
  ------------------
 2854|      2|				is_step_negative = true;
 2855|      2|				step_double *= -1;
 2856|      2|			}
 2857|      2|			step = zend_dval_to_lval_silent(step_double);
 2858|      2|			if (!zend_is_long_compatible(step_double, step)) {
  ------------------
  |  Branch (2858:8): [True: 2, False: 0]
  ------------------
 2859|      2|				is_step_double = true;
 2860|      2|			}
 2861|      4|		} else {
 2862|      4|			step = Z_LVAL_P(user_step);
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2863|       |			/* We only want positive step values. */
 2864|      4|			if (step < 0) {
  ------------------
  |  Branch (2864:8): [True: 3, False: 1]
  ------------------
 2865|      3|				if (UNEXPECTED(step == ZEND_LONG_MIN)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 2866|      0|					zend_argument_value_error(3, "must be greater than " ZEND_LONG_FMT, step);
  ------------------
  |  |   54|      0|# define ZEND_LONG_FMT "%" PRId64
  ------------------
 2867|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2867:6): [True: 0, False: 0]
  |  Branch (2867:6): [True: 0, False: 0]
  ------------------
 2868|      0|				}
 2869|      3|				is_step_negative = true;
 2870|      3|				step *= -1;
 2871|      3|			}
 2872|      4|			step_double = (double) step;
 2873|      4|		}
 2874|      6|		if (step_double == 0.0) {
  ------------------
  |  Branch (2874:7): [True: 0, False: 6]
  ------------------
 2875|      0|			zend_argument_value_error(3, "cannot be 0");
 2876|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2876:4): [True: 0, False: 0]
  |  Branch (2876:4): [True: 0, False: 0]
  ------------------
 2877|      0|		}
 2878|      6|	}
 2879|       |
 2880|     30|	uint8_t start_type;
 2881|     30|	double start_double;
 2882|     30|	zend_long start_long;
 2883|     30|	uint8_t end_type;
 2884|     30|	double end_double;
 2885|     30|	zend_long end_long;
 2886|       |
 2887|     30|	start_type = php_range_process_input(user_start, 1, &start_long, &start_double);
 2888|     30|	if (start_type == 0) {
  ------------------
  |  Branch (2888:6): [True: 0, False: 30]
  ------------------
 2889|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2889:3): [True: 0, False: 0]
  |  Branch (2889:3): [True: 0, False: 0]
  ------------------
 2890|      0|	}
 2891|     30|	end_type = php_range_process_input(user_end, 2, &end_long, &end_double);
 2892|     30|	if (end_type == 0) {
  ------------------
  |  Branch (2892:6): [True: 0, False: 30]
  ------------------
 2893|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2893:3): [True: 0, False: 0]
  |  Branch (2893:3): [True: 0, False: 0]
  ------------------
 2894|      0|	}
 2895|       |
 2896|       |	/* If the range is given as strings, generate an array of characters. */
 2897|     30|	if (start_type >= IS_STRING || end_type >= IS_STRING) {
  ------------------
  |  |  612|     60|#define IS_STRING					6
  ------------------
              	if (start_type >= IS_STRING || end_type >= IS_STRING) {
  ------------------
  |  |  612|     21|#define IS_STRING					6
  ------------------
  |  Branch (2897:6): [True: 9, False: 21]
  |  Branch (2897:33): [True: 1, False: 20]
  ------------------
 2898|       |		/* If one of the inputs is NOT a string nor single-byte string */
 2899|     10|		if (UNEXPECTED(start_type < IS_STRING || end_type < IS_STRING)) {
  ------------------
  |  |  457|     19|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 4, False: 6]
  |  |  |  Branch (457:52): [True: 1, False: 9]
  |  |  |  Branch (457:52): [True: 3, False: 6]
  |  |  ------------------
  ------------------
 2900|      4|			if (start_type < IS_STRING) {
  ------------------
  |  |  612|      4|#define IS_STRING					6
  ------------------
  |  Branch (2900:8): [True: 1, False: 3]
  ------------------
 2901|      1|				if (end_type != IS_ARRAY) {
  ------------------
  |  |  613|      1|#define IS_ARRAY					7
  ------------------
  |  Branch (2901:9): [True: 1, False: 0]
  ------------------
 2902|      1|					php_error_docref(NULL, E_WARNING, "Argument #1 ($start) must be a single byte string if"
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 2903|      1|						" argument #2 ($end) is a single byte string, argument #2 ($end) converted to 0");
 2904|      1|				}
 2905|      1|				end_type = IS_LONG;
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
 2906|      3|			} else if (end_type < IS_STRING) {
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (2906:15): [True: 3, False: 0]
  ------------------
 2907|      3|				if (start_type != IS_ARRAY) {
  ------------------
  |  |  613|      3|#define IS_ARRAY					7
  ------------------
  |  Branch (2907:9): [True: 3, False: 0]
  ------------------
 2908|      3|					php_error_docref(NULL, E_WARNING, "Argument #2 ($end) must be a single byte string if"
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
 2909|      3|						" argument #1 ($start) is a single byte string, argument #1 ($start) converted to 0");
 2910|      3|				}
 2911|      3|				start_type = IS_LONG;
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
 2912|      3|			}
 2913|      4|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 2914|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2914:5): [True: 0, False: 0]
  |  Branch (2914:5): [True: 0, False: 0]
  ------------------
 2915|      0|			}
 2916|      4|			goto handle_numeric_inputs;
 2917|      4|		}
 2918|       |
 2919|      6|		if (is_step_double) {
  ------------------
  |  Branch (2919:7): [True: 1, False: 5]
  ------------------
 2920|       |			/* Only emit warning if one of the input is not a numeric digit */
 2921|      1|			if (start_type == IS_STRING || end_type == IS_STRING) {
  ------------------
  |  |  612|      2|#define IS_STRING					6
  ------------------
              			if (start_type == IS_STRING || end_type == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (2921:8): [True: 1, False: 0]
  |  Branch (2921:35): [True: 0, False: 0]
  ------------------
 2922|      1|				php_error_docref(NULL, E_WARNING, "Argument #3 ($step) must be of type int when generating an array"
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 2923|      1|					" of characters, inputs converted to 0");
 2924|      1|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2925|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2925:6): [True: 0, False: 0]
  |  Branch (2925:6): [True: 0, False: 0]
  ------------------
 2926|      0|				}
 2927|      1|			}
 2928|      1|			end_type = IS_LONG;
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
 2929|      1|			start_type = IS_LONG;
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
 2930|      1|			goto handle_numeric_inputs;
 2931|      1|		}
 2932|       |
 2933|       |		/* Generate array of characters, as zero-extended ints to make bounds checking possible in the loop condition */
 2934|      5|		int low = (unsigned char) Z_STRVAL_P(user_start)[0];
  ------------------
  |  |  985|      5|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      5|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2935|      5|		int high = (unsigned char) Z_STRVAL_P(user_end)[0];
  ------------------
  |  |  985|      5|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      5|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2936|       |
 2937|       |		/* Decreasing char range */
 2938|      5|		if (low > high) {
  ------------------
  |  Branch (2938:7): [True: 1, False: 4]
  ------------------
 2939|      1|			if (low - high < step) {
  ------------------
  |  Branch (2939:8): [True: 0, False: 1]
  ------------------
 2940|      0|				goto boundary_error;
 2941|      0|			}
 2942|       |			/* Initialize the return_value as an array. */
 2943|      1|			array_init_size(return_value, (uint32_t)(((low - high) / step) + 1));
 2944|      1|			zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2945|      1|			ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      1|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      1|		HashTable *__fill_ht = (ht); \
  |  | 1544|      1|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      1|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      1|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2945:4): [True: 0, False: 1]
  |  Branch (2945:4): [True: 1, False: 0]
  ------------------
 2946|     99|				for (; low >= high; low -= step) {
  ------------------
  |  Branch (2946:12): [True: 98, False: 1]
  ------------------
 2947|     98|					ZEND_HASH_FILL_SET_INTERNED_STR(ZSTR_CHAR(low));
  ------------------
  |  | 1577|     98|		ZVAL_INTERNED_STR(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1098|     98|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|     98|		zval *__z = (z);							\
  |  |  |  | 1100|     98|		zend_string *__s = (s);						\
  |  |  |  | 1101|     98|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     98|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     98|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|     98|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     98|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     98|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     98|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     98|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|     98|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 98]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2948|     98|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|     98|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|     98|		__fill_val++; \
  |  | 1581|     98|		__fill_idx++; \
  |  | 1582|     98|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 98]
  |  |  ------------------
  ------------------
 2949|     98|				}
 2950|      1|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      1|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      1|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      1|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      1|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      1|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      1|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2951|      4|		} else if (high > low) { /* Increasing char range */
  ------------------
  |  Branch (2951:14): [True: 2, False: 2]
  ------------------
 2952|      2|			if (is_step_negative) {
  ------------------
  |  Branch (2952:8): [True: 1, False: 1]
  ------------------
 2953|      1|				goto negative_step_error;
 2954|      1|			}
 2955|      1|			if (high - low < step) {
  ------------------
  |  Branch (2955:8): [True: 0, False: 1]
  ------------------
 2956|      0|				goto boundary_error;
 2957|      0|			}
 2958|      1|			array_init_size(return_value, (uint32_t)(((high - low) / step) + 1));
 2959|      1|			zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2960|      1|			ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      1|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      1|		HashTable *__fill_ht = (ht); \
  |  | 1544|      1|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      1|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      1|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2960:4): [True: 0, False: 1]
  |  Branch (2960:4): [True: 1, False: 0]
  ------------------
 2961|     19|				for (; low <= high; low += step) {
  ------------------
  |  Branch (2961:12): [True: 18, False: 1]
  ------------------
 2962|     18|					ZEND_HASH_FILL_SET_INTERNED_STR(ZSTR_CHAR(low));
  ------------------
  |  | 1577|     18|		ZVAL_INTERNED_STR(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1098|     18|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|     18|		zval *__z = (z);							\
  |  |  |  | 1100|     18|		zend_string *__s = (s);						\
  |  |  |  | 1101|     18|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     18|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     18|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|     18|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     18|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     18|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     18|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     18|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|     18|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2963|     18|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|     18|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|     18|		__fill_val++; \
  |  | 1581|     18|		__fill_idx++; \
  |  | 1582|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 2964|     18|				}
 2965|      1|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      1|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      1|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      1|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      1|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      1|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      1|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2966|      2|		} else {
 2967|      2|			array_init(return_value);
 2968|      2|			ZVAL_CHAR(&tmp, low);
  ------------------
  |  |  989|      2|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  990|      2|		char _c = (c);                          \
  |  |  991|      2|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  992|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (992:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2969|      2|			zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2970|      2|		}
 2971|      4|		return;
 2972|      5|	}
 2973|       |
 2974|     25|	handle_numeric_inputs:
 2975|     25|	if (start_type == IS_DOUBLE || end_type == IS_DOUBLE || is_step_double) {
  ------------------
  |  |  611|     50|#define IS_DOUBLE					5
  ------------------
              	if (start_type == IS_DOUBLE || end_type == IS_DOUBLE || is_step_double) {
  ------------------
  |  |  611|     47|#define IS_DOUBLE					5
  ------------------
  |  Branch (2975:6): [True: 3, False: 22]
  |  Branch (2975:33): [True: 2, False: 20]
  |  Branch (2975:58): [True: 2, False: 18]
  ------------------
 2976|      7|		double element;
 2977|      7|		uint32_t i, size;
 2978|       |
 2979|       |		/* Decreasing float range */
 2980|      7|		if (start_double > end_double) {
  ------------------
  |  Branch (2980:7): [True: 4, False: 3]
  ------------------
 2981|      4|			if (start_double - end_double < step_double) {
  ------------------
  |  Branch (2981:8): [True: 2, False: 2]
  ------------------
 2982|      2|				goto boundary_error;
 2983|      2|			}
 2984|       |
 2985|      2|			RANGE_CHECK_DOUBLE_INIT_ARRAY(start_double, end_double, step_double);
  ------------------
  |  | 2720|      2|#define RANGE_CHECK_DOUBLE_INIT_ARRAY(start, end, _step) do { \
  |  | 2721|      2|		double __calc_size = ((start - end) / (_step)) + 1; \
  |  | 2722|      2|		if (__calc_size >= (double)HT_MAX_SIZE) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  |  |  Branch (2722:7): [True: 2, False: 0]
  |  |  ------------------
  |  | 2723|      2|			double __exceed_by = __calc_size - (double)HT_MAX_SIZE; \
  |  |  ------------------
  |  |  |  |  456|      2|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2724|      2|			zend_value_error(\
  |  | 2725|      2|				"The supplied range exceeds the maximum array size by %.1f elements: " \
  |  | 2726|      2|				"start=%.1f, end=%.1f, step=%.1f. Max size: %.0f", \
  |  | 2727|      2|				__exceed_by, end, start, (_step), (double)HT_MAX_SIZE); \
  |  |  ------------------
  |  |  |  |  456|      2|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2728|      2|			RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2729|      2|		} \
  |  | 2730|      2|		size = (uint32_t)_php_math_round(__calc_size, 0, PHP_ROUND_HALF_UP); \
  |  |  ------------------
  |  |  |  |   21|      0|#define PHP_ROUND_HALF_UP        0x01    /* Arithmetic rounding, up == away from zero */
  |  |  ------------------
  |  | 2731|      0|		array_init_size(return_value, size); \
  |  | 2732|      0|		zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); \
  |  |  ------------------
  |  |  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2733|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2733:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2985:4): [True: 0, False: 2]
  |  Branch (2985:4): [True: 2, False: 0]
  ------------------
 2986|       |
 2987|      0|			ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      0|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      0|		HashTable *__fill_ht = (ht); \
  |  | 1544|      0|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      0|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      2|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (2987:4): [True: 0, False: 0]
  |  Branch (2987:4): [True: 0, False: 0]
  ------------------
 2988|      0|				for (i = 0, element = start_double; i < size && element >= end_double; ++i, element = start_double - (i * step_double)) {
  ------------------
  |  Branch (2988:41): [True: 0, False: 0]
  |  Branch (2988:53): [True: 0, False: 0]
  ------------------
 2989|      0|					ZEND_HASH_FILL_SET_DOUBLE(element);
  ------------------
  |  | 1568|      0|		ZVAL_DOUBLE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  | 1083|      0|		zval *__z = (z);				\
  |  |  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  |  | 1086|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2990|      0|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|      0|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|      0|		__fill_val++; \
  |  | 1581|      0|		__fill_idx++; \
  |  | 1582|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2991|      0|				}
 2992|      0|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      0|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      0|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      0|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      0|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      0|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      0|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2993|      3|		} else if (end_double > start_double) { /* Increasing float range */
  ------------------
  |  Branch (2993:14): [True: 2, False: 1]
  ------------------
 2994|      2|			if (is_step_negative) {
  ------------------
  |  Branch (2994:8): [True: 0, False: 2]
  ------------------
 2995|      0|				goto negative_step_error;
 2996|      0|			}
 2997|      2|			if (end_double - start_double < step_double) {
  ------------------
  |  Branch (2997:8): [True: 0, False: 2]
  ------------------
 2998|      0|				goto boundary_error;
 2999|      0|			}
 3000|       |
 3001|      2|			RANGE_CHECK_DOUBLE_INIT_ARRAY(end_double, start_double, step_double);
  ------------------
  |  | 2720|      2|#define RANGE_CHECK_DOUBLE_INIT_ARRAY(start, end, _step) do { \
  |  | 2721|      2|		double __calc_size = ((start - end) / (_step)) + 1; \
  |  | 2722|      2|		if (__calc_size >= (double)HT_MAX_SIZE) { \
  |  |  ------------------
  |  |  |  |  456|      2|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  |  |  Branch (2722:7): [True: 1, False: 1]
  |  |  ------------------
  |  | 2723|      1|			double __exceed_by = __calc_size - (double)HT_MAX_SIZE; \
  |  |  ------------------
  |  |  |  |  456|      1|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2724|      1|			zend_value_error(\
  |  | 2725|      1|				"The supplied range exceeds the maximum array size by %.1f elements: " \
  |  | 2726|      1|				"start=%.1f, end=%.1f, step=%.1f. Max size: %.0f", \
  |  | 2727|      1|				__exceed_by, end, start, (_step), (double)HT_MAX_SIZE); \
  |  |  ------------------
  |  |  |  |  456|      1|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2728|      1|			RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2729|      1|		} \
  |  | 2730|      2|		size = (uint32_t)_php_math_round(__calc_size, 0, PHP_ROUND_HALF_UP); \
  |  |  ------------------
  |  |  |  |   21|      1|#define PHP_ROUND_HALF_UP        0x01    /* Arithmetic rounding, up == away from zero */
  |  |  ------------------
  |  | 2731|      1|		array_init_size(return_value, size); \
  |  | 2732|      1|		zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); \
  |  |  ------------------
  |  |  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2733|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2733:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3001:4): [True: 0, False: 1]
  |  Branch (3001:4): [True: 1, False: 0]
  ------------------
 3002|       |
 3003|      1|			ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      1|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      1|		HashTable *__fill_ht = (ht); \
  |  | 1544|      1|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      1|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      2|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (3003:4): [True: 0, False: 1]
  |  Branch (3003:4): [True: 1, False: 0]
  ------------------
 3004|     13|				for (i = 0, element = start_double; i < size && element <= end_double; ++i, element = start_double + (i * step_double)) {
  ------------------
  |  Branch (3004:41): [True: 13, False: 0]
  |  Branch (3004:53): [True: 12, False: 1]
  ------------------
 3005|     12|					ZEND_HASH_FILL_SET_DOUBLE(element);
  ------------------
  |  | 1568|     12|		ZVAL_DOUBLE(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1082|     12|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  | 1083|     12|		zval *__z = (z);				\
  |  |  |  | 1084|     12|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  979|     12|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  978|     12|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1085|     12|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  611|     12|#define IS_DOUBLE					5
  |  |  |  |  ------------------
  |  |  |  | 1086|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1086:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3006|     12|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|     12|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|     12|		__fill_val++; \
  |  | 1581|     12|		__fill_idx++; \
  |  | 1582|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 3007|     12|				}
 3008|      1|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      1|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      1|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      1|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      1|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      1|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      1|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3009|      1|		} else {
 3010|      1|			array_init(return_value);
 3011|      1|			ZVAL_DOUBLE(&tmp, start_double);
  ------------------
  |  | 1082|      1|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      1|		zval *__z = (z);				\
  |  | 1084|      1|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      1|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      1|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      1|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      1|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3012|      1|			zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3013|      1|		}
 3014|     18|	} else {
 3015|     18|		ZEND_ASSERT(start_type == IS_LONG && end_type == IS_LONG && !is_step_double);
  ------------------
  |  |  112|     18|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3015:3): [True: 0, False: 18]
  |  Branch (3015:3): [True: 0, False: 0]
  |  Branch (3015:3): [True: 0, False: 0]
  |  Branch (3015:3): [True: 18, False: 0]
  |  Branch (3015:3): [True: 18, False: 0]
  |  Branch (3015:3): [True: 18, False: 0]
  ------------------
 3016|       |		/* unsigned_step is a zend_ulong so that comparisons to it don't overflow, i.e. low - high < lstep */
 3017|     18|		zend_ulong unsigned_step= (zend_ulong)step;
 3018|     18|		uint32_t i, size;
 3019|       |
 3020|       |		/* Decreasing int range */
 3021|     18|		if (start_long > end_long) {
  ------------------
  |  Branch (3021:7): [True: 3, False: 15]
  ------------------
 3022|      3|			if ((zend_ulong)start_long - end_long < unsigned_step) {
  ------------------
  |  Branch (3022:8): [True: 0, False: 3]
  ------------------
 3023|      0|				goto boundary_error;
 3024|      0|			}
 3025|       |
 3026|      3|			RANGE_CHECK_LONG_INIT_ARRAY(start_long, end_long, unsigned_step);
  ------------------
  |  | 2735|      3|#define RANGE_CHECK_LONG_INIT_ARRAY(start, end, _step) do { \
  |  | 2736|      3|		zend_ulong __calc_size = ((zend_ulong) start - end) / (_step); \
  |  | 2737|      3|		if (__calc_size >= HT_MAX_SIZE - 1) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  |  |  Branch (2737:7): [True: 1, False: 2]
  |  |  ------------------
  |  | 2738|      1|			uint64_t __excess = __calc_size - (HT_MAX_SIZE - 1); \
  |  |  ------------------
  |  |  |  |  456|      1|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2739|      1|			zend_value_error(\
  |  | 2740|      1|				"The supplied range exceeds the maximum array size by %" PRIu64 " elements: " \
  |  | 2741|      1|				"start=" ZEND_LONG_FMT ", end=" ZEND_LONG_FMT ", step=" ZEND_LONG_FMT ". " \
  |  | 2742|      1|				"Calculated size: %" PRIu64 ". Maximum size: %" PRIu64 ".", \
  |  | 2743|      1|				__excess, end, start, (_step), (uint64_t)__calc_size, (uint64_t)HT_MAX_SIZE); \
  |  |  ------------------
  |  |  |  |  456|      1|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2744|      1|			RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2745|      1|		} \
  |  | 2746|      3|		size = (uint32_t)(__calc_size + 1); \
  |  | 2747|      2|		array_init_size(return_value, size); \
  |  | 2748|      2|		zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); \
  |  |  ------------------
  |  |  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2749|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2749:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (3026:4): [True: 0, False: 1]
  |  Branch (3026:4): [True: 1, False: 0]
  ------------------
 3027|       |
 3028|      2|			ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      2|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      2|		HashTable *__fill_ht = (ht); \
  |  | 1544|      2|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      2|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      3|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (3028:4): [True: 0, False: 2]
  |  Branch (3028:4): [True: 2, False: 0]
  ------------------
 3029|     28|				for (i = 0; i < size; ++i) {
  ------------------
  |  Branch (3029:17): [True: 26, False: 2]
  ------------------
 3030|     26|					ZEND_HASH_FILL_SET_LONG(start_long - (i * unsigned_step));
  ------------------
  |  | 1565|     26|		ZVAL_LONG(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1076|     26|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|     26|		zval *__z = (z);				\
  |  |  |  | 1078|     26|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|     26|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|     26|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|     26|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|     26|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|     26|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3031|     26|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|     26|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|     26|		__fill_val++; \
  |  | 1581|     26|		__fill_idx++; \
  |  | 1582|     26|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 26]
  |  |  ------------------
  ------------------
 3032|     26|				}
 3033|      2|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      2|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      2|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      2|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      2|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      2|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      2|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3034|     15|		} else if (end_long > start_long) { /* Increasing int range */
  ------------------
  |  Branch (3034:14): [True: 14, False: 1]
  ------------------
 3035|     14|			if (is_step_negative) {
  ------------------
  |  Branch (3035:8): [True: 0, False: 14]
  ------------------
 3036|      0|				goto negative_step_error;
 3037|      0|			}
 3038|     14|			if ((zend_ulong)end_long - start_long < unsigned_step) {
  ------------------
  |  Branch (3038:8): [True: 0, False: 14]
  ------------------
 3039|      0|				goto boundary_error;
 3040|      0|			}
 3041|       |
 3042|     14|			RANGE_CHECK_LONG_INIT_ARRAY(end_long, start_long, unsigned_step);
  ------------------
  |  | 2735|     14|#define RANGE_CHECK_LONG_INIT_ARRAY(start, end, _step) do { \
  |  | 2736|     14|		zend_ulong __calc_size = ((zend_ulong) start - end) / (_step); \
  |  | 2737|     14|		if (__calc_size >= HT_MAX_SIZE - 1) { \
  |  |  ------------------
  |  |  |  |  456|     14|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  |  |  Branch (2737:7): [True: 1, False: 13]
  |  |  ------------------
  |  | 2738|      1|			uint64_t __excess = __calc_size - (HT_MAX_SIZE - 1); \
  |  |  ------------------
  |  |  |  |  456|      1|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2739|      1|			zend_value_error(\
  |  | 2740|      1|				"The supplied range exceeds the maximum array size by %" PRIu64 " elements: " \
  |  | 2741|      1|				"start=" ZEND_LONG_FMT ", end=" ZEND_LONG_FMT ", step=" ZEND_LONG_FMT ". " \
  |  | 2742|      1|				"Calculated size: %" PRIu64 ". Maximum size: %" PRIu64 ".", \
  |  | 2743|      1|				__excess, end, start, (_step), (uint64_t)__calc_size, (uint64_t)HT_MAX_SIZE); \
  |  |  ------------------
  |  |  |  |  456|      1|# define HT_MAX_SIZE 0x40000000
  |  |  ------------------
  |  | 2744|      1|			RETURN_THROWS(); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2745|      1|		} \
  |  | 2746|     14|		size = (uint32_t)(__calc_size + 1); \
  |  | 2747|     13|		array_init_size(return_value, size); \
  |  | 2748|     13|		zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); \
  |  |  ------------------
  |  |  |  |  997|     13|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  996|     13|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|     13|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2749|     13|	} while (0)
  |  |  ------------------
  |  |  |  Branch (2749:11): [Folded, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (3042:4): [True: 0, False: 1]
  |  Branch (3042:4): [True: 1, False: 0]
  ------------------
 3043|       |
 3044|     13|			ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|     13|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|     13|		HashTable *__fill_ht = (ht); \
  |  | 1544|     13|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|     13|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|     14|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (3044:4): [True: 0, False: 13]
  |  Branch (3044:4): [True: 12, False: 1]
  ------------------
 3045|  2.28k|				for (i = 0; i < size; ++i) {
  ------------------
  |  Branch (3045:17): [True: 2.27k, False: 12]
  ------------------
 3046|  2.27k|					ZEND_HASH_FILL_SET_LONG(start_long + (i * unsigned_step));
  ------------------
  |  | 1565|  2.27k|		ZVAL_LONG(__fill_val, _val)
  |  |  ------------------
  |  |  |  | 1076|  2.27k|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|  2.27k|		zval *__z = (z);				\
  |  |  |  | 1078|  2.27k|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|  2.27k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|  2.27k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|  2.27k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  2.27k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  2.27k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|  2.27k|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|  2.27k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 2.27k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3047|  2.27k|					ZEND_HASH_FILL_NEXT();
  ------------------
  |  | 1579|  2.27k|#define ZEND_HASH_FILL_NEXT() do {\
  |  | 1580|  2.27k|		__fill_val++; \
  |  | 1581|  2.27k|		__fill_idx++; \
  |  | 1582|  2.27k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1582:11): [Folded, False: 2.27k]
  |  |  ------------------
  ------------------
 3048|  2.27k|				}
 3049|     12|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|     12|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|     12|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|     12|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|     12|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|     12|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|     12|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|     12|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 3050|     13|		} else {
 3051|      1|			array_init(return_value);
 3052|      1|			ZVAL_LONG(&tmp, start_long);
  ------------------
  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      1|		zval *__z = (z);				\
  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3053|      1|			zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3054|      1|		}
 3055|     18|	}
 3056|     17|	return;
 3057|       |
 3058|     17|negative_step_error:
 3059|      1|	zend_argument_value_error(3, "must be greater than 0 for increasing ranges");
 3060|      1|	RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3060:2): [True: 0, False: 1]
  |  Branch (3060:2): [True: 1, False: 0]
  ------------------
 3061|       |
 3062|      2|boundary_error:
 3063|      2|	zend_argument_value_error(3, "must be less than the range spanned by argument #1 ($start) and argument #2 ($end)");
 3064|       |	RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3064:2): [True: 0, False: 2]
  |  Branch (3064:2): [True: 2, False: 0]
  ------------------
 3065|      2|}
zif_array_push:
 3389|     91|{
 3390|     91|	zval   *args,		/* Function arguments array */
 3391|     91|		   *stack;		/* Input array */
 3392|     91|	uint32_t argc;		/* Number of function arguments */
 3393|       |
 3394|       |
 3395|    273|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|     91|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     91|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     91|		const int _flags = (flags); \
  |  |  |  | 1599|     91|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     91|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     91|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     91|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     91|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     91|		uint32_t _i = 0; \
  |  |  |  | 1603|     91|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     91|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     91|		char *_error = NULL; \
  |  |  |  | 1606|     91|		bool _dummy = 0; \
  |  |  |  | 1607|     91|		bool _optional = 0; \
  |  |  |  | 1608|     91|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     91|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     91|		((void)_i); \
  |  |  |  | 1610|     91|		((void)_real_arg); \
  |  |  |  | 1611|     91|		((void)_arg); \
  |  |  |  | 1612|     91|		((void)_expected_type); \
  |  |  |  | 1613|     91|		((void)_error); \
  |  |  |  | 1614|     91|		((void)_optional); \
  |  |  |  | 1615|     91|		((void)_dummy); \
  |  |  |  | 1616|     91|		\
  |  |  |  | 1617|     91|		do { \
  |  |  |  | 1618|     91|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    182|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     91|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     91|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     91|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     91|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     91|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     91|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3396|    364|		Z_PARAM_ARRAY_EX(stack, 0, 1)
  ------------------
  |  | 1688|     91|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1680|     91|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     91|	++_i; \
  |  |  |  |  |  | 1654|     91|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     91|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     91|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     91|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     91|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     91|	_real_arg++; \
  |  |  |  |  |  | 1660|     91|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     91|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 91, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|     91|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|     91|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 91, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|     91|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|     91|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|     91|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|     91|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|     91|		} \
  |  |  |  |  |  | 1665|     91|	} \
  |  |  |  |  |  | 1666|     91|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 91, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|     91|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|     91|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|     91|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|     91|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     91|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|     91|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|     91|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|     91|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|     91|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 91, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|     91|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|     91|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|     91|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|     91|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     91|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|     91|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|     91|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|     91|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|     91|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 91]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|     91|		}												\
  |  |  |  |  |  |  |  | 1551|     91|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 91]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|     91|	}
  |  |  |  |  ------------------
  |  |  |  | 1681|     91|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     91|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1684|      0|			break; \
  |  |  |  | 1685|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3396:3): [True: 91, False: 0]
  |  Branch (3396:3): [True: 0, False: 0]
  |  Branch (3396:3): [True: 91, False: 0]
  |  Branch (3396:3): [True: 0, False: 0]
  |  Branch (3396:3): [True: 91, False: 0]
  |  Branch (3396:3): [True: 0, False: 0]
  |  Branch (3396:3): [True: 0, False: 91]
  |  Branch (3396:3): [True: 91, False: 0]
  |  Branch (3396:3): [True: 0, False: 91]
  |  Branch (3396:3): [True: 91, False: 0]
  ------------------
 3397|     91|		Z_PARAM_VARIADIC('+', args, argc)
  ------------------
  |  | 2140|     91|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|     91|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|     91|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|     91|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|     91|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 91, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|     91|			dest = _real_arg + 1; \
  |  |  |  | 2126|     91|			dest_num = _num_varargs; \
  |  |  |  | 2127|     91|			_i += _num_varargs; \
  |  |  |  | 2128|     91|			_real_arg += _num_varargs; \
  |  |  |  | 2129|     91|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|     91|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     91|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|     91|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 91]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3398|     91|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     91|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     91|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     91|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     91|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 91]
  |  |  |  |  ------------------
  |  |  |  | 1641|     91|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     91|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     91|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 91]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3398:2): [True: 91, False: 0]
  |  Branch (3398:2): [True: 0, False: 0]
  |  Branch (3398:2): [True: 0, False: 91]
  |  Branch (3398:2): [True: 91, False: 0]
  ------------------
 3399|       |
 3400|       |	/* For each subsequent argument, make it a reference, increase refcount, and add it to the end of the array */
 3401|    182|	for (uint32_t i = 0; i < argc; i++) {
  ------------------
  |  Branch (3401:23): [True: 91, False: 91]
  ------------------
 3402|     91|		Z_TRY_ADDREF(args[i]);
  ------------------
  |  | 1299|     91|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|     91|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|     91|	zval *_pz = (pz);				\
  |  |  |  | 1287|     91|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|     91|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|     91|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|     91|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 91]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|     91|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 91]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3403|       |
 3404|     91|		if (zend_hash_next_index_insert(Z_ARRVAL_P(stack), &args[i]) == NULL) {
  ------------------
  |  |  997|     91|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     91|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     91|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3404:7): [True: 0, False: 91]
  ------------------
 3405|      0|			Z_TRY_DELREF(args[i]);
  ------------------
  |  | 1300|      0|#define Z_TRY_DELREF(z)				Z_TRY_DELREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1292|      0|#define Z_TRY_DELREF_P(pz) do {		\
  |  |  |  | 1293|      0|	zval *_pz = (pz);				\
  |  |  |  | 1294|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1295|      0|		Z_DELREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1296|      0|	}								\
  |  |  |  | 1297|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1297:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3406|      0|			zend_throw_error(NULL, "Cannot add element to the array as the next element is already occupied");
 3407|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3407:4): [True: 0, False: 0]
  |  Branch (3407:4): [True: 0, False: 0]
  ------------------
 3408|      0|		}
 3409|     91|	}
 3410|       |
 3411|       |	/* Clean up and return the number of values in the stack */
 3412|     91|	RETVAL_LONG(zend_hash_num_elements(Z_ARRVAL_P(stack)));
  ------------------
  |  | 1022|     91|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  ------------------
  |  |  |  | 1076|     91|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|     91|		zval *__z = (z);				\
  |  |  |  | 1078|     91|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|     91|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|     91|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|     91|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     91|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     91|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|     91|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|     91|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 91]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3413|     91|}
zif_array_pop:
 3418|      1|{
 3419|      1|	zval *stack,	/* Input stack */
 3420|      1|		 *val;		/* Value to be popped */
 3421|      1|	uint32_t idx;
 3422|       |
 3423|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3424|      4|		Z_PARAM_ARRAY_EX(stack, 0, 1)
  ------------------
  |  | 1688|      1|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1680|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 1, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      1|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      1|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      1|		} \
  |  |  |  |  |  | 1665|      1|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 1, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      1|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      1|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      1|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      1|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      1|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      1|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      1|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      1|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      1|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      1|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      1|		}												\
  |  |  |  |  |  |  |  | 1551|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      1|	}
  |  |  |  |  ------------------
  |  |  |  | 1681|      1|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1684|      0|			break; \
  |  |  |  | 1685|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3424:3): [True: 1, False: 0]
  |  Branch (3424:3): [True: 0, False: 0]
  |  Branch (3424:3): [True: 1, False: 0]
  |  Branch (3424:3): [True: 0, False: 0]
  |  Branch (3424:3): [True: 1, False: 0]
  |  Branch (3424:3): [True: 0, False: 0]
  |  Branch (3424:3): [True: 0, False: 1]
  |  Branch (3424:3): [True: 1, False: 0]
  |  Branch (3424:3): [True: 0, False: 1]
  |  Branch (3424:3): [True: 1, False: 0]
  ------------------
 3425|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3425:2): [True: 1, False: 0]
  |  Branch (3425:2): [True: 0, False: 0]
  |  Branch (3425:2): [True: 1, False: 0]
  |  Branch (3425:2): [True: 0, False: 0]
  ------------------
 3426|       |
 3427|      1|	if (zend_hash_num_elements(Z_ARRVAL_P(stack)) == 0) {
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3427:6): [True: 0, False: 1]
  ------------------
 3428|      0|		return;
 3429|      0|	}
 3430|       |
 3431|      1|	if (HT_IS_PACKED(Z_ARRVAL_P(stack))) {
  ------------------
  |  |   62|      1|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 3432|       |		/* Get the last value and copy it into the return value */
 3433|      1|		idx = Z_ARRVAL_P(stack)->nNumUsed;
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3434|      1|		while (1) {
  ------------------
  |  Branch (3434:10): [True: 1, Folded]
  ------------------
 3435|      1|			if (idx == 0) {
  ------------------
  |  Branch (3435:8): [True: 0, False: 1]
  ------------------
 3436|      0|				return;
 3437|      0|			}
 3438|      1|			idx--;
 3439|      1|			val = Z_ARRVAL_P(stack)->arPacked + idx;
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3440|      1|			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (3440:8): [True: 1, False: 0]
  ------------------
 3441|      1|				break;
 3442|      1|			}
 3443|      1|		}
 3444|      1|		RETVAL_COPY_VALUE(val);
  ------------------
  |  | 1040|      1|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3445|      1|		ZVAL_UNDEF(val);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3446|       |
 3447|      1|		if (idx == (Z_ARRVAL_P(stack)->nNextFreeElement - 1)) {
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3447:7): [True: 1, False: 0]
  ------------------
 3448|      1|			Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1;
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1;
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3449|      1|		}
 3450|       |
 3451|       |		/* Delete the last value */
 3452|      1|		zend_hash_packed_del_val(Z_ARRVAL_P(stack), val);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3453|      1|	} else {
 3454|      0|		Bucket *p;
 3455|       |
 3456|       |		/* Get the last value and copy it into the return value */
 3457|      0|		idx = Z_ARRVAL_P(stack)->nNumUsed;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3458|      0|		while (1) {
  ------------------
  |  Branch (3458:10): [True: 0, Folded]
  ------------------
 3459|      0|			if (idx == 0) {
  ------------------
  |  Branch (3459:8): [True: 0, False: 0]
  ------------------
 3460|      0|				return;
 3461|      0|			}
 3462|      0|			idx--;
 3463|      0|			p = Z_ARRVAL_P(stack)->arData + idx;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3464|      0|			val = &p->val;
 3465|      0|			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3465:8): [True: 0, False: 0]
  ------------------
 3466|      0|				break;
 3467|      0|			}
 3468|      0|		}
 3469|      0|		RETVAL_COPY_VALUE(val);
  ------------------
  |  | 1040|      0|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3470|      0|		ZVAL_UNDEF(val);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3471|       |
 3472|      0|		if (!p->key && (zend_long)p->h == (Z_ARRVAL_P(stack)->nNextFreeElement - 1)) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3472:7): [True: 0, False: 0]
  |  Branch (3472:18): [True: 0, False: 0]
  ------------------
 3473|      0|			Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3474|      0|		}
 3475|       |
 3476|       |		/* Delete the last value */
 3477|      0|		zend_hash_del_bucket(Z_ARRVAL_P(stack), p);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3478|      0|	}
 3479|      1|	zend_hash_internal_pointer_reset(Z_ARRVAL_P(stack));
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3480|       |
 3481|      1|	if (Z_ISREF_P(return_value)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3482|      0|		zend_unwrap_reference(return_value);
 3483|      0|	}
 3484|      1|}
zif_array_shift:
 3489|      4|{
 3490|      4|	zval *stack,	/* Input stack */
 3491|      4|		 *val;		/* Value to be popped */
 3492|      4|	uint32_t idx;
 3493|       |
 3494|     12|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3495|     16|		Z_PARAM_ARRAY_EX(stack, 0, 1)
  ------------------
  |  | 1688|      4|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1680|      4|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 4, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      4|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 4, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      4|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      4|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      4|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      4|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      4|		} \
  |  |  |  |  |  | 1665|      4|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 4, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      4|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      4|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      4|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      4|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      4|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      4|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 4, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      4|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      4|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      4|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      4|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      4|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      4|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      4|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      4|		}												\
  |  |  |  |  |  |  |  | 1551|      4|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      4|	}
  |  |  |  |  ------------------
  |  |  |  | 1681|      4|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1684|      0|			break; \
  |  |  |  | 1685|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3495:3): [True: 4, False: 0]
  |  Branch (3495:3): [True: 0, False: 0]
  |  Branch (3495:3): [True: 4, False: 0]
  |  Branch (3495:3): [True: 0, False: 0]
  |  Branch (3495:3): [True: 4, False: 0]
  |  Branch (3495:3): [True: 0, False: 0]
  |  Branch (3495:3): [True: 0, False: 4]
  |  Branch (3495:3): [True: 4, False: 0]
  |  Branch (3495:3): [True: 0, False: 4]
  |  Branch (3495:3): [True: 4, False: 0]
  ------------------
 3496|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3496:2): [True: 4, False: 0]
  |  Branch (3496:2): [True: 0, False: 0]
  |  Branch (3496:2): [True: 4, False: 0]
  |  Branch (3496:2): [True: 0, False: 0]
  ------------------
 3497|       |
 3498|      4|	if (zend_hash_num_elements(Z_ARRVAL_P(stack)) == 0) {
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3498:6): [True: 0, False: 4]
  ------------------
 3499|      0|		return;
 3500|      0|	}
 3501|       |
 3502|       |	/* re-index like it did before */
 3503|      4|	if (HT_IS_PACKED(Z_ARRVAL_P(stack))) {
  ------------------
  |  |   62|      4|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      4|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      4|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 4, False: 0]
  |  |  ------------------
  ------------------
 3504|      4|		uint32_t k = 0;
 3505|       |
 3506|       |		/* Get the first value and copy it into the return value */
 3507|      4|		idx = 0;
 3508|      4|		while (1) {
  ------------------
  |  Branch (3508:10): [True: 4, Folded]
  ------------------
 3509|      4|			if (idx == Z_ARRVAL_P(stack)->nNumUsed) {
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3509:8): [True: 0, False: 4]
  ------------------
 3510|      0|				return;
 3511|      0|			}
 3512|      4|			val = Z_ARRVAL_P(stack)->arPacked + idx;
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3513|      4|			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (3513:8): [True: 4, False: 0]
  ------------------
 3514|      4|				break;
 3515|      4|			}
 3516|      0|			idx++;
 3517|      0|		}
 3518|      4|		RETVAL_COPY_VALUE(val);
  ------------------
  |  | 1040|      4|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  ------------------
  |  |  |  | 1416|      4|	do {												\
  |  |  |  | 1417|      4|		zval *_z1 = (z);								\
  |  |  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      4|	do {												\
  |  |  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3519|      4|		ZVAL_UNDEF(val);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3520|       |
 3521|       |		/* Delete the first value */
 3522|      4|		zend_hash_packed_del_val(Z_ARRVAL_P(stack), val);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3523|       |
 3524|      4|		if (EXPECTED(!HT_HAS_ITERATORS(Z_ARRVAL_P(stack)))) {
  ------------------
  |  |  456|      4|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 3525|      0|			for (idx = 0; idx < Z_ARRVAL_P(stack)->nNumUsed; idx++) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3525:18): [True: 0, False: 0]
  ------------------
 3526|      0|				val = Z_ARRVAL_P(stack)->arPacked + idx;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3527|      0|				if (Z_TYPE_P(val) == IS_UNDEF) continue;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3527:9): [True: 0, False: 0]
  ------------------
 3528|      0|				if (idx != k) {
  ------------------
  |  Branch (3528:9): [True: 0, False: 0]
  ------------------
 3529|      0|					zval *q = Z_ARRVAL_P(stack)->arPacked + k;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3530|      0|					ZVAL_COPY_VALUE(q, val);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3531|      0|					ZVAL_UNDEF(val);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3532|      0|				}
 3533|      0|				k++;
 3534|      0|			}
 3535|      4|		} else {
 3536|      4|			uint32_t iter_pos = zend_hash_iterators_lower_pos(Z_ARRVAL_P(stack), 0);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3537|       |
 3538|     13|			for (idx = 0; idx < Z_ARRVAL_P(stack)->nNumUsed; idx++) {
  ------------------
  |  |  997|     13|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     13|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     13|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3538:18): [True: 9, False: 4]
  ------------------
 3539|      9|				val = Z_ARRVAL_P(stack)->arPacked + idx;
  ------------------
  |  |  997|      9|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      9|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3540|      9|				if (Z_TYPE_P(val) == IS_UNDEF) continue;
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      9|#define IS_UNDEF					0
  ------------------
  |  Branch (3540:9): [True: 3, False: 6]
  ------------------
 3541|      6|				if (idx != k) {
  ------------------
  |  Branch (3541:9): [True: 6, False: 0]
  ------------------
 3542|      6|					zval *q = Z_ARRVAL_P(stack)->arPacked + k;
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3543|      6|					ZVAL_COPY_VALUE(q, val);
  ------------------
  |  | 1416|      6|	do {												\
  |  | 1417|      6|		zval *_z1 = (z);								\
  |  | 1418|      6|		const zval *_z2 = (v);							\
  |  | 1419|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 3544|      6|					ZVAL_UNDEF(val);
  ------------------
  |  | 1055|      6|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      6|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 3545|      6|					if (idx == iter_pos) {
  ------------------
  |  Branch (3545:10): [True: 3, False: 3]
  ------------------
 3546|      3|						zend_hash_iterators_update(Z_ARRVAL_P(stack), idx, k);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3547|      3|						iter_pos = zend_hash_iterators_lower_pos(Z_ARRVAL_P(stack), iter_pos + 1);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3548|      3|					}
 3549|      6|				}
 3550|      6|				k++;
 3551|      6|			}
 3552|      4|		}
 3553|      4|		Z_ARRVAL_P(stack)->nNumUsed = k;
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3554|      4|		Z_ARRVAL_P(stack)->nNextFreeElement = k;
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3555|      4|	} else {
 3556|      0|		uint32_t k = 0;
 3557|      0|		int should_rehash = 0;
 3558|      0|		Bucket *p;
 3559|       |
 3560|       |		/* Get the first value and copy it into the return value */
 3561|      0|		idx = 0;
 3562|      0|		while (1) {
  ------------------
  |  Branch (3562:10): [True: 0, Folded]
  ------------------
 3563|      0|			if (idx == Z_ARRVAL_P(stack)->nNumUsed) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3563:8): [True: 0, False: 0]
  ------------------
 3564|      0|				return;
 3565|      0|			}
 3566|      0|			p = Z_ARRVAL_P(stack)->arData + idx;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3567|      0|			val = &p->val;
 3568|      0|			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3568:8): [True: 0, False: 0]
  ------------------
 3569|      0|				break;
 3570|      0|			}
 3571|      0|			idx++;
 3572|      0|		}
 3573|      0|		RETVAL_COPY_VALUE(val);
  ------------------
  |  | 1040|      0|#define RETVAL_COPY_VALUE(zv)			ZVAL_COPY_VALUE(return_value, zv)
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3574|      0|		ZVAL_UNDEF(val);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3575|       |
 3576|       |		/* Delete the first value */
 3577|      0|		zend_hash_del_bucket(Z_ARRVAL_P(stack), p);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3578|       |
 3579|      0|		for (idx = 0; idx < Z_ARRVAL_P(stack)->nNumUsed; idx++) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3579:17): [True: 0, False: 0]
  ------------------
 3580|      0|			p = Z_ARRVAL_P(stack)->arData + idx;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3581|      0|			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3581:8): [True: 0, False: 0]
  ------------------
 3582|      0|			if (p->key == NULL) {
  ------------------
  |  Branch (3582:8): [True: 0, False: 0]
  ------------------
 3583|      0|				if (p->h != k) {
  ------------------
  |  Branch (3583:9): [True: 0, False: 0]
  ------------------
 3584|      0|					p->h = k++;
 3585|      0|					should_rehash = 1;
 3586|      0|				} else {
 3587|      0|					k++;
 3588|      0|				}
 3589|      0|			}
 3590|      0|		}
 3591|      0|		Z_ARRVAL_P(stack)->nNextFreeElement = k;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3592|      0|		if (should_rehash) {
  ------------------
  |  Branch (3592:7): [True: 0, False: 0]
  ------------------
 3593|      0|			zend_hash_rehash(Z_ARRVAL_P(stack));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3594|      0|		}
 3595|      0|	}
 3596|       |
 3597|      4|	zend_hash_internal_pointer_reset(Z_ARRVAL_P(stack));
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3598|       |
 3599|      4|	if (Z_ISREF_P(return_value)) {
  ------------------
  |  |  964|      4|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      4|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      4|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3600|      4|		zend_unwrap_reference(return_value);
 3601|      4|	}
 3602|      4|}
zif_array_unshift:
 3607|      2|{
 3608|      2|	zval   *args,			/* Function arguments array */
 3609|      2|		   *stack;			/* Input stack */
 3610|      2|	HashTable new_hash;		/* New hashtable for the stack */
 3611|      2|	uint32_t argc;			/* Number of function arguments */
 3612|      2|	zend_string *key;
 3613|      2|	zval *value;
 3614|       |
 3615|      6|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3616|      8|		Z_PARAM_ARRAY_EX(stack, 0, 1)
  ------------------
  |  | 1688|      2|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1680|      2|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      2|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      2|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      2|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      2|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      2|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      2|		} \
  |  |  |  |  |  | 1665|      2|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 2, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      2|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      2|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      2|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      2|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      2|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      2|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      2|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      2|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      2|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      2|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      1|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      1|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      1|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      1|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      1|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      1|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      1|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      1|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      1|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      1|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      1|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      1|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      2|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      2|		}												\
  |  |  |  |  |  |  |  | 1551|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      2|	}
  |  |  |  |  ------------------
  |  |  |  | 1681|      2|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1684|      0|			break; \
  |  |  |  | 1685|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3616:3): [True: 2, False: 0]
  |  Branch (3616:3): [True: 0, False: 0]
  |  Branch (3616:3): [True: 2, False: 0]
  |  Branch (3616:3): [True: 0, False: 0]
  |  Branch (3616:3): [True: 2, False: 0]
  |  Branch (3616:3): [True: 0, False: 0]
  |  Branch (3616:3): [True: 0, False: 2]
  |  Branch (3616:3): [True: 2, False: 0]
  |  Branch (3616:3): [True: 0, False: 2]
  |  Branch (3616:3): [True: 2, False: 0]
  ------------------
 3617|      2|		Z_PARAM_VARIADIC('+', args, argc)
  ------------------
  |  | 2140|      2|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|      2|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|      2|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|      2|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|      2|			dest = _real_arg + 1; \
  |  |  |  | 2126|      2|			dest_num = _num_varargs; \
  |  |  |  | 2127|      2|			_i += _num_varargs; \
  |  |  |  | 2128|      2|			_real_arg += _num_varargs; \
  |  |  |  | 2129|      2|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|      2|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|      2|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3618|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3618:2): [True: 2, False: 0]
  |  Branch (3618:2): [True: 0, False: 0]
  |  Branch (3618:2): [True: 0, False: 2]
  |  Branch (3618:2): [True: 2, False: 0]
  ------------------
 3619|       |
 3620|      2|	zend_hash_init(&new_hash, zend_hash_num_elements(Z_ARRVAL_P(stack)) + argc, NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 3621|       |
 3622|      2|	if (HT_IS_PACKED(Z_ARRVAL_P(stack))) {
  ------------------
  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 3623|      1|		zend_hash_real_init_packed(&new_hash);
 3624|       |
 3625|      1|		ZEND_HASH_FILL_PACKED(&new_hash) {
  ------------------
  |  | 1542|      1|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      1|		HashTable *__fill_ht = (ht); \
  |  | 1544|      1|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      1|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      1|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (3625:3): [True: 0, False: 1]
  |  Branch (3625:3): [True: 1, False: 0]
  ------------------
 3626|      9|			for (uint32_t i = 0; i < argc; i++) {
  ------------------
  |  Branch (3626:25): [True: 8, False: 1]
  ------------------
 3627|      8|				Z_TRY_ADDREF(args[i]);
  ------------------
  |  | 1299|      8|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      8|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      8|	zval *_pz = (pz);				\
  |  |  |  | 1287|      8|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|      8|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3628|      8|				ZEND_HASH_FILL_ADD(&args[i]);
  ------------------
  |  | 1584|      8|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|      8|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|      8|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      8|	do {												\
  |  |  |  |  |  | 1417|      8|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      8|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      8|	do {												\
  |  |  |  |  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      8|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|      8|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|      8|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|      8|		__fill_val++; \
  |  |  |  | 1581|      8|		__fill_idx++; \
  |  |  |  | 1582|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 3629|      8|			}
 3630|       |
 3631|      8|			ZEND_HASH_PACKED_FOREACH_VAL(Z_ARRVAL_P(stack), value) {
  ------------------
  |  | 1494|      3|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      1|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      1|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      1|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      1|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      1|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      1|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|      4|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 3, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|      3|			(void) _idx; \
  |  |  |  |  |  | 1478|      3|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1495|      3|	_val = _z;
  ------------------
  |  Branch (3631:4): [True: 0, False: 1]
  |  Branch (3631:4): [True: 1, False: 0]
  ------------------
 3632|      8|				ZEND_HASH_FILL_ADD(value);
  ------------------
  |  | 1584|      3|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|      3|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|      3|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      3|	do {												\
  |  |  |  |  |  | 1417|      3|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      3|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|      3|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|      3|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|      3|		__fill_val++; \
  |  |  |  | 1581|      3|		__fill_idx++; \
  |  |  |  | 1582|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3633|      8|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3634|      1|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      1|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      1|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      1|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      1|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      1|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      1|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3635|      1|	} else {
 3636|      2|		for (uint32_t i = 0; i < argc; i++) {
  ------------------
  |  Branch (3636:24): [True: 1, False: 1]
  ------------------
 3637|      1|			Z_TRY_ADDREF(args[i]);
  ------------------
  |  | 1299|      1|#define Z_TRY_ADDREF(z)				Z_TRY_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1285|      1|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      1|	zval *_pz = (pz);				\
  |  |  |  | 1287|      1|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      1|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      1|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      1|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3638|      1|			zend_hash_next_index_insert_new(&new_hash, &args[i]);
 3639|      1|		}
 3640|       |
 3641|      2|		ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(stack), key, value) {
  ------------------
  |  | 1389|      0|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      1|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      0|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      0|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      0|	_key = _p->key; \
  |  | 1391|      0|	_val = _z;
  ------------------
  |  Branch (3641:3): [True: 0, False: 1]
  |  Branch (3641:3): [True: 1, False: 0]
  ------------------
 3642|      2|			if (key) {
  ------------------
  |  Branch (3642:8): [True: 0, False: 0]
  ------------------
 3643|      0|				zend_hash_add_new(&new_hash, key, value);
 3644|      0|			} else {
 3645|      0|				zend_hash_next_index_insert_new(&new_hash, value);
 3646|      0|			}
 3647|      2|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3648|      1|	}
 3649|       |
 3650|      2|	if (UNEXPECTED(HT_HAS_ITERATORS(Z_ARRVAL_P(stack)))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 3651|      1|		zend_hash_iterators_advance(Z_ARRVAL_P(stack), argc);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3652|      1|		HT_SET_ITERATORS_COUNT(&new_hash, HT_ITERATORS_COUNT(Z_ARRVAL_P(stack)));
  ------------------
  |  |   81|      1|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  ------------------
  |  |  |  |   76|      1|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  ------------------
  |  |  |  Branch (81:50): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3653|      1|		HT_SET_ITERATORS_COUNT(Z_ARRVAL_P(stack), 0);
  ------------------
  |  |   81|      1|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  ------------------
  |  |  |  |   76|      1|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  ------------------
  |  |  |  Branch (81:50): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3654|      1|	}
 3655|       |
 3656|       |	/* replace HashTable data */
 3657|      2|	Z_ARRVAL_P(stack)->pDestructor = NULL;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3658|      2|	zend_hash_destroy(Z_ARRVAL_P(stack));
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3659|       |
 3660|      2|	HT_FLAGS(Z_ARRVAL_P(stack))          = HT_FLAGS(&new_hash);
  ------------------
  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(Z_ARRVAL_P(stack))          = HT_FLAGS(&new_hash);
  ------------------
  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
 3661|      2|	Z_ARRVAL_P(stack)->nTableSize        = new_hash.nTableSize;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3662|      2|	Z_ARRVAL_P(stack)->nTableMask        = new_hash.nTableMask;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3663|      2|	Z_ARRVAL_P(stack)->nNumUsed          = new_hash.nNumUsed;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3664|      2|	Z_ARRVAL_P(stack)->nNumOfElements    = new_hash.nNumOfElements;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3665|      2|	Z_ARRVAL_P(stack)->nNextFreeElement  = new_hash.nNextFreeElement;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3666|      2|	Z_ARRVAL_P(stack)->arData            = new_hash.arData;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3667|      2|	Z_ARRVAL_P(stack)->pDestructor       = new_hash.pDestructor;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3668|       |
 3669|      2|	zend_hash_internal_pointer_reset(Z_ARRVAL_P(stack));
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3670|       |
 3671|       |	/* Clean up and return the number of elements in the stack */
 3672|      2|	RETVAL_LONG(zend_hash_num_elements(Z_ARRVAL_P(stack)));
  ------------------
  |  | 1022|      2|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  ------------------
  |  |  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|      2|		zval *__z = (z);				\
  |  |  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3673|      2|}
zif_array_splice:
 3678|    253|{
 3679|    253|	zval *array,				/* Input array */
 3680|    253|		 *repl_array = NULL;	/* Replacement array */
 3681|    253|	HashTable  *rem_hash = NULL;
 3682|    253|	zend_long offset,
 3683|    253|			length = 0;
 3684|    253|	bool length_is_null = 1;
 3685|    253|	int		num_in;				/* Number of elements in the input array */
 3686|       |
 3687|    759|	ZEND_PARSE_PARAMETERS_START(2, 4)
  ------------------
  |  | 1629|    253|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    253|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    253|		const int _flags = (flags); \
  |  |  |  | 1599|    253|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    253|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    253|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    253|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    253|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    253|		uint32_t _i = 0; \
  |  |  |  | 1603|    253|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    253|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    253|		char *_error = NULL; \
  |  |  |  | 1606|    253|		bool _dummy = 0; \
  |  |  |  | 1607|    253|		bool _optional = 0; \
  |  |  |  | 1608|    253|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    253|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    253|		((void)_i); \
  |  |  |  | 1610|    253|		((void)_real_arg); \
  |  |  |  | 1611|    253|		((void)_arg); \
  |  |  |  | 1612|    253|		((void)_expected_type); \
  |  |  |  | 1613|    253|		((void)_error); \
  |  |  |  | 1614|    253|		((void)_optional); \
  |  |  |  | 1615|    253|		((void)_dummy); \
  |  |  |  | 1616|    253|		\
  |  |  |  | 1617|    253|		do { \
  |  |  |  | 1618|    253|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    506|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    253|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|    253|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    253|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    253|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    253|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3688|  1.01k|		Z_PARAM_ARRAY_EX(array, 0, 1)
  ------------------
  |  | 1688|    253|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1680|    253|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    253|	++_i; \
  |  |  |  |  |  | 1654|    253|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    253|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    253|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    253|	_real_arg++; \
  |  |  |  |  |  | 1660|    253|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    253|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 253, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|    253|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|    253|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 253, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|    253|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|    253|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|    253|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|    253|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|    253|		} \
  |  |  |  |  |  | 1665|    253|	} \
  |  |  |  |  |  | 1666|    253|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 253, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|    253|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|    253|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|    253|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|    253|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|    253|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|    253|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|    253|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|    253|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 253, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|    253|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|    253|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|    253|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|    253|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|    253|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|    253|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|    253|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|    253|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 253]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|    253|		}												\
  |  |  |  |  |  |  |  | 1551|    253|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 253]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|    253|	}
  |  |  |  |  ------------------
  |  |  |  | 1681|    253|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1684|      0|			break; \
  |  |  |  | 1685|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3688:3): [True: 253, False: 0]
  |  Branch (3688:3): [True: 0, False: 0]
  |  Branch (3688:3): [True: 253, False: 0]
  |  Branch (3688:3): [True: 0, False: 0]
  |  Branch (3688:3): [True: 253, False: 0]
  |  Branch (3688:3): [True: 0, False: 0]
  |  Branch (3688:3): [True: 0, False: 253]
  |  Branch (3688:3): [True: 253, False: 0]
  |  Branch (3688:3): [True: 0, False: 253]
  |  Branch (3688:3): [True: 253, False: 0]
  ------------------
 3689|  1.26k|		Z_PARAM_LONG(offset)
  ------------------
  |  | 1905|    253|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|    253|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    253|	++_i; \
  |  |  |  |  |  | 1654|    253|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    253|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    253|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    253|	_real_arg++; \
  |  |  |  |  |  | 1660|    253|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    253|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    253|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|    253|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3689:3): [True: 253, False: 0]
  |  Branch (3689:3): [True: 0, False: 0]
  |  Branch (3689:3): [True: 253, False: 0]
  |  Branch (3689:3): [True: 0, False: 0]
  |  Branch (3689:3): [True: 253, False: 0]
  |  Branch (3689:3): [True: 0, False: 0]
  |  Branch (3689:3): [True: 0, False: 253]
  |  Branch (3689:3): [True: 253, False: 0]
  |  Branch (3689:3): [True: 0, False: 0]
  |  Branch (3689:3): [True: 0, False: 0]
  ------------------
 3690|    253|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|    253|	_optional = 1;
  ------------------
 3691|    506|		Z_PARAM_LONG_OR_NULL(length, length_is_null)
  ------------------
  |  | 1908|    253|	Z_PARAM_LONG_EX(dest, is_null, 1, 0)
  |  |  ------------------
  |  |  |  | 1897|    253|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    253|	++_i; \
  |  |  |  |  |  | 1654|    253|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    253|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    253|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    253|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 253, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|    253|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 253, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|    253|	} \
  |  |  |  |  |  | 1659|    253|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3691:3): [True: 253, False: 0]
  |  Branch (3691:3): [True: 0, False: 0]
  |  Branch (3691:3): [True: 0, False: 253]
  |  Branch (3691:3): [True: 253, False: 0]
  |  Branch (3691:3): [True: 253, False: 0]
  |  Branch (3691:3): [True: 0, False: 0]
  |  Branch (3691:3): [True: 253, False: 0]
  |  Branch (3691:3): [True: 0, False: 0]
  |  Branch (3691:3): [True: 0, False: 0]
  |  Branch (3691:3): [True: 0, False: 0]
  ------------------
 3692|      0|		Z_PARAM_ZVAL(repl_array)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      0|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  |  Branch (3692:3): [True: 0, False: 0]
  ------------------
 3693|    253|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|    253|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|    253|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 253]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3693:2): [True: 0, False: 0]
  |  Branch (3693:2): [True: 0, False: 0]
  |  Branch (3693:2): [True: 0, False: 0]
  |  Branch (3693:2): [True: 0, False: 0]
  ------------------
 3694|       |
 3695|    253|	num_in = zend_hash_num_elements(Z_ARRVAL_P(array));
  ------------------
  |  |  997|    253|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    253|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    253|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3696|       |
 3697|    253|	if (length_is_null) {
  ------------------
  |  Branch (3697:6): [True: 253, False: 0]
  ------------------
 3698|    253|		length = num_in;
 3699|    253|	}
 3700|       |
 3701|    253|	if (ZEND_NUM_ARGS() == 4) {
  ------------------
  |  |  529|    253|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|    253|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|    253|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3701:6): [True: 0, False: 253]
  ------------------
 3702|       |		/* Make sure the last argument, if passed, is an array */
 3703|      0|		convert_to_array(repl_array);
 3704|      0|	}
 3705|       |
 3706|       |	/* Don't create the array of removed elements if it's not going
 3707|       |	 * to be used; e.g. only removing and/or replacing elements */
 3708|    253|	if (USED_RET()) {
  ------------------
  |  |   52|    253|	(!EX(prev_execute_data) || \
  |  |  ------------------
  |  |  |  |  730|    506|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |  |  Branch (52:3): [True: 0, False: 253]
  |  |  ------------------
  |  |   53|    253|	 !ZEND_USER_CODE(EX(prev_execute_data)->func->common.type) || \
  |  |  ------------------
  |  |  |  | 1081|    506|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (53:3): [True: 0, False: 253]
  |  |  ------------------
  |  |   54|    253|	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  730|    253|#define EX(element) 			((execute_data)->element)
  |  |  ------------------
  |  |               	 (EX(prev_execute_data)->opline->result_type != IS_UNUSED))
  |  |  ------------------
  |  |  |  |  863|    253|#define IS_UNUSED	0		/* Unused operand */
  |  |  ------------------
  |  |  |  Branch (54:3): [True: 253, False: 0]
  |  |  ------------------
  ------------------
 3709|    253|		zend_long size = length;
 3710|       |
 3711|       |		/* Clamp the offset.. */
 3712|    253|		if (offset > num_in) {
  ------------------
  |  Branch (3712:7): [True: 0, False: 253]
  ------------------
 3713|      0|			offset = num_in;
 3714|    253|		} else if (offset < 0 && (offset = (num_in + offset)) < 0) {
  ------------------
  |  Branch (3714:14): [True: 1, False: 252]
  |  Branch (3714:28): [True: 1, False: 0]
  ------------------
 3715|      1|			offset = 0;
 3716|      1|		}
 3717|       |
 3718|       |		/* ..and the length */
 3719|    253|		if (length < 0) {
  ------------------
  |  Branch (3719:7): [True: 0, False: 253]
  ------------------
 3720|      0|			size = num_in - offset + length;
 3721|    253|		} else if (((zend_ulong) offset + (zend_ulong) length) > (uint32_t) num_in) {
  ------------------
  |  Branch (3721:14): [True: 0, False: 253]
  ------------------
 3722|      0|			size = num_in - offset;
 3723|      0|		}
 3724|       |
 3725|       |		/* Initialize return value */
 3726|    253|		array_init_size(return_value, size > 0 ? (uint32_t)size : 0);
  ------------------
  |  Branch (3726:33): [True: 253, False: 0]
  ------------------
 3727|    253|		rem_hash = Z_ARRVAL_P(return_value);
  ------------------
  |  |  997|    253|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    253|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    253|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3728|    253|	} else {
 3729|       |		/* The return value will not be used, but make sure it still has the correct type. */
 3730|      0|		RETVAL_EMPTY_ARRAY();
  ------------------
  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  ------------------
  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3731|      0|	}
 3732|       |
 3733|       |	/* Perform splice */
 3734|    253|	php_splice(Z_ARRVAL_P(array), offset, length, repl_array ? Z_ARRVAL_P(repl_array) : NULL, rem_hash);
  ------------------
  |  |  997|    253|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    253|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    253|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	php_splice(Z_ARRVAL_P(array), offset, length, repl_array ? Z_ARRVAL_P(repl_array) : NULL, rem_hash);
  ------------------
  |  |  997|    253|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3734:48): [True: 0, False: 253]
  ------------------
 3735|    253|}
zif_array_values:
 4445|      3|{
 4446|      3|	zval	 *input;		/* Input array */
 4447|      3|	zend_array *arrval;
 4448|      3|	zend_long arrlen;
 4449|       |
 4450|      9|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4451|     12|		Z_PARAM_ARRAY(input)
  ------------------
  |  | 1691|      3|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      3|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      3|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      3|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      0|			break; \
  |  |  |  |  |  | 1685|      0|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4451:3): [True: 3, False: 0]
  |  Branch (4451:3): [True: 0, False: 0]
  |  Branch (4451:3): [True: 3, False: 0]
  |  Branch (4451:3): [True: 0, False: 0]
  |  Branch (4451:3): [True: 3, False: 0]
  |  Branch (4451:3): [True: 0, False: 0]
  |  Branch (4451:3): [True: 0, False: 3]
  |  Branch (4451:3): [True: 3, False: 0]
  |  Branch (4451:3): [True: 0, False: 0]
  |  Branch (4451:3): [True: 0, False: 0]
  ------------------
 4452|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4452:2): [True: 3, False: 0]
  |  Branch (4452:2): [True: 0, False: 0]
  |  Branch (4452:2): [True: 3, False: 0]
  |  Branch (4452:2): [True: 0, False: 0]
  ------------------
 4453|       |
 4454|      3|	arrval = Z_ARRVAL_P(input);
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4455|       |
 4456|       |	/* Return empty input as is */
 4457|      3|	arrlen = zend_hash_num_elements(arrval);
 4458|      3|	if (!arrlen) {
  ------------------
  |  Branch (4458:6): [True: 0, False: 3]
  ------------------
 4459|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4460|      0|	}
 4461|       |
 4462|       |	/* Return vector-like packed arrays as-is */
 4463|      3|	if (HT_IS_PACKED(arrval) && HT_IS_WITHOUT_HOLES(arrval) &&
  ------------------
  |  |   62|      6|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 3, False: 0]
  |  |  ------------------
  ------------------
              	if (HT_IS_PACKED(arrval) && HT_IS_WITHOUT_HOLES(arrval) &&
  ------------------
  |  |   65|      6|	((ht)->nNumUsed == (ht)->nNumOfElements)
  |  |  ------------------
  |  |  |  Branch (65:2): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 4464|      3|		arrval->nNextFreeElement == arrlen) {
  ------------------
  |  Branch (4464:3): [True: 3, False: 0]
  ------------------
 4465|      3|		RETURN_COPY(input);
  ------------------
  |  | 1065|      3|#define RETURN_COPY(zv)					do { RETVAL_COPY(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1039|      3|#define RETVAL_COPY(zv)					ZVAL_COPY(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1425|      3|	do {												\
  |  |  |  |  |  | 1426|      3|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1427|      3|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1428|      3|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1429|      3|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1430|      3|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      3|	do {												\
  |  |  |  |  |  |  |  | 1408|      3|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      3|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      3|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      3|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1431|      3|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  820|      3|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  711|      3|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1432|      3|			GC_ADDREF(_gc);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      3|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1433|      3|		}												\
  |  |  |  |  |  | 1434|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1434:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1065:68): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4466|      3|	}
 4467|       |
 4468|      0|	RETURN_ARR(zend_array_to_list(arrval));
  ------------------
  |  | 1061|      0|#define RETURN_ARR(r)					do { RETVAL_ARR(r); return; } while (0)
  |  |  ------------------
  |  |  |  | 1035|      0|#define RETVAL_ARR(r)					ZVAL_ARR(return_value, r)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1061:64): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4469|      0|}
zif_array_reverse:
 4623|      3|{
 4624|      3|	zval	 *input,				/* Input array */
 4625|      3|			 *entry;				/* An entry in the input array */
 4626|      3|	zend_string *string_key;
 4627|      3|	zend_ulong	  num_key;
 4628|      3|	bool preserve_keys = 0;	/* whether to preserve keys */
 4629|       |
 4630|      9|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4631|     12|		Z_PARAM_ARRAY(input)
  ------------------
  |  | 1691|      3|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      3|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      3|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      3|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      1|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      1|			break; \
  |  |  |  |  |  | 1685|      1|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4631:3): [True: 3, False: 0]
  |  Branch (4631:3): [True: 0, False: 0]
  |  Branch (4631:3): [True: 3, False: 0]
  |  Branch (4631:3): [True: 0, False: 0]
  |  Branch (4631:3): [True: 3, False: 0]
  |  Branch (4631:3): [True: 0, False: 0]
  |  Branch (4631:3): [True: 0, False: 3]
  |  Branch (4631:3): [True: 3, False: 0]
  |  Branch (4631:3): [True: 0, False: 0]
  |  Branch (4631:3): [True: 0, False: 0]
  ------------------
 4632|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
 4633|      4|		Z_PARAM_BOOL(preserve_keys)
  ------------------
  |  | 1735|      2|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (4633:3): [True: 2, False: 0]
  |  Branch (4633:3): [True: 0, False: 0]
  |  Branch (4633:3): [True: 0, False: 2]
  |  Branch (4633:3): [True: 2, False: 0]
  |  Branch (4633:3): [True: 2, False: 0]
  |  Branch (4633:3): [True: 0, False: 0]
  |  Branch (4633:3): [True: 2, False: 0]
  |  Branch (4633:3): [True: 0, False: 0]
  |  Branch (4633:3): [True: 0, False: 0]
  |  Branch (4633:3): [True: 0, False: 0]
  ------------------
 4634|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4634:2): [True: 0, False: 0]
  |  Branch (4634:2): [True: 0, False: 0]
  |  Branch (4634:2): [True: 0, False: 0]
  |  Branch (4634:2): [True: 0, False: 0]
  ------------------
 4635|       |
 4636|       |	/* Initialize return array */
 4637|      2|	array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(input)));
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4638|      2|	if (HT_IS_PACKED(Z_ARRVAL_P(input)) && !preserve_keys) {
  ------------------
  |  |   62|      4|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4638:41): [True: 2, False: 0]
  ------------------
 4639|      2|		zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4640|      2|		ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
  ------------------
  |  | 1542|      2|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|      2|		HashTable *__fill_ht = (ht); \
  |  | 1544|      2|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|      2|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|      2|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (4640:3): [True: 0, False: 2]
  |  Branch (4640:3): [True: 2, False: 0]
  ------------------
 4641|     20|			ZEND_HASH_PACKED_REVERSE_FOREACH_VAL(Z_ARRVAL_P(input), entry) {
  ------------------
  |  | 1498|      8|	ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1482|      2|#define ZEND_HASH_PACKED_REVERSE_FOREACH(_ht) do { \
  |  |  |  | 1483|      2|		const HashTable *__ht = (_ht); \
  |  |  |  | 1484|      2|		zend_ulong _idx = __ht->nNumUsed; \
  |  |  |  | 1485|      2|		zval *_z = __ht->arPacked + _idx; \
  |  |  |  | 1486|      2|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1487|     10|		while (_idx > 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1487:10): [True: 8, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1488|      8|			_z--; \
  |  |  |  | 1489|      8|			_idx--; \
  |  |  |  | 1490|      8|			(void) _idx; \
  |  |  |  | 1491|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1499|      8|	_val = _z;
  ------------------
  |  Branch (4641:4): [True: 0, False: 2]
  |  Branch (4641:4): [True: 2, False: 0]
  ------------------
 4642|     20|				if (UNEXPECTED(Z_ISREF_P(entry) &&
  ------------------
  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 2]
  |  |  |  Branch (457:52): [True: 8, False: 0]
  |  |  |  Branch (457:52): [True: 6, False: 2]
  |  |  ------------------
  ------------------
 4643|     20|					Z_REFCOUNT_P(entry) == 1)) {
 4644|      6|					entry = Z_REFVAL_P(entry);
  ------------------
  |  | 1033|      6|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      6|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      6|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4645|      6|				}
 4646|     20|				Z_TRY_ADDREF_P(entry);
  ------------------
  |  | 1285|      8|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      8|	zval *_pz = (pz);				\
  |  | 1287|      8|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 4, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      4|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      4|	}								\
  |  | 1290|      8|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 8]
  |  |  ------------------
  ------------------
 4647|     20|				ZEND_HASH_FILL_ADD(entry);
  ------------------
  |  | 1584|      8|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|      8|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|      8|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      8|	do {												\
  |  |  |  |  |  | 1417|      8|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      8|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      8|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      8|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      8|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      8|	do {												\
  |  |  |  |  |  |  |  | 1408|      8|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      8|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      8|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      8|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      8|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      8|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|      8|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|      8|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|      8|		__fill_val++; \
  |  |  |  | 1581|      8|		__fill_idx++; \
  |  |  |  | 1582|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 4648|     20|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      8|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4649|      2|		} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      2|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      2|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      2|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      2|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      2|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      2|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4650|      2|	} else {
 4651|      0|		ZEND_HASH_REVERSE_FOREACH_KEY_VAL(Z_ARRVAL_P(input), num_key, string_key, entry) {
  ------------------
  |  | 1202|      0|	ZEND_HASH_REVERSE_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1073|      0|#define ZEND_HASH_REVERSE_FOREACH(_ht, indirect) do { \
  |  |  |  | 1074|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1075|      0|		uint32_t _idx = __ht->nNumUsed; \
  |  |  |  | 1076|      0|		zval *_z; \
  |  |  |  | 1077|      0|		zend_ulong __h; \
  |  |  |  | 1078|      0|		zend_string *__key = NULL; \
  |  |  |  | 1079|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1080|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  ------------------
  |  |  |  | 1081|      0|		for (;_idx > 0; _idx--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1081:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1082|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1083|      0|				__z--; \
  |  |  |  | 1084|      0|				_z = __z; \
  |  |  |  | 1085|      0|				__h = _idx - 1; \
  |  |  |  | 1086|      0|			} else { \
  |  |  |  | 1087|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  | 1088|      0|				_p--; \
  |  |  |  | 1089|      0|				__z = &_p->val; \
  |  |  |  | 1090|      0|				_z = __z; \
  |  |  |  | 1091|      0|				__h = _p->h; \
  |  |  |  | 1092|      0|				__key = _p->key; \
  |  |  |  | 1093|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:9): [Folded, False: 0]
  |  |  |  |  |  Branch (1093:21): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1094|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      0|				} \
  |  |  |  | 1096|      0|			} \
  |  |  |  | 1097|      0|			(void) __h; (void) __key; (void) __z; \
  |  |  |  | 1098|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1203|      0|	_h = __h; \
  |  | 1204|      0|	_key = __key; \
  |  | 1205|      0|	_val = _z;
  ------------------
 4652|      0|			if (string_key) {
  ------------------
  |  Branch (4652:8): [True: 0, False: 0]
  ------------------
 4653|      0|				entry = zend_hash_add_new(Z_ARRVAL_P(return_value), string_key, entry);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4654|      0|			} else {
 4655|      0|				if (preserve_keys) {
  ------------------
  |  Branch (4655:9): [True: 0, False: 0]
  ------------------
 4656|      0|					entry = zend_hash_index_add_new(Z_ARRVAL_P(return_value), num_key, entry);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4657|      0|				} else {
 4658|      0|					entry = zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), entry);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4659|      0|				}
 4660|      0|			}
 4661|      0|			zval_add_ref(entry);
 4662|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4663|      0|	}
 4664|      2|}
zif_array_unique:
 4850|      3|{
 4851|      3|	zval *array;
 4852|      3|	Bucket *p;
 4853|      3|	zend_long sort_type = PHP_SORT_STRING;
  ------------------
  |  |   50|      3|#define PHP_SORT_STRING             2
  ------------------
 4854|      3|	bucket_compare_func_t cmp;
 4855|      3|	struct bucketindex *arTmp, *cmpdata, *lastkept;
 4856|      3|	uint32_t i, idx;
 4857|       |
 4858|      9|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4859|     12|		Z_PARAM_ARRAY(array)
  ------------------
  |  | 1691|      3|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      3|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      3|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      3|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      2|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      2|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      2|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      2|			break; \
  |  |  |  |  |  | 1685|      2|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4859:3): [True: 3, False: 0]
  |  Branch (4859:3): [True: 0, False: 0]
  |  Branch (4859:3): [True: 3, False: 0]
  |  Branch (4859:3): [True: 0, False: 0]
  |  Branch (4859:3): [True: 3, False: 0]
  |  Branch (4859:3): [True: 0, False: 0]
  |  Branch (4859:3): [True: 0, False: 3]
  |  Branch (4859:3): [True: 3, False: 0]
  |  Branch (4859:3): [True: 0, False: 0]
  |  Branch (4859:3): [True: 0, False: 0]
  ------------------
 4860|      1|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
 4861|      2|		Z_PARAM_LONG(sort_type)
  ------------------
  |  | 1905|      1|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (4861:3): [True: 1, False: 0]
  |  Branch (4861:3): [True: 0, False: 0]
  |  Branch (4861:3): [True: 0, False: 1]
  |  Branch (4861:3): [True: 1, False: 0]
  |  Branch (4861:3): [True: 1, False: 0]
  |  Branch (4861:3): [True: 0, False: 0]
  |  Branch (4861:3): [True: 1, False: 0]
  |  Branch (4861:3): [True: 0, False: 0]
  |  Branch (4861:3): [True: 0, False: 0]
  |  Branch (4861:3): [True: 0, False: 0]
  ------------------
 4862|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4862:2): [True: 0, False: 0]
  |  Branch (4862:2): [True: 0, False: 0]
  |  Branch (4862:2): [True: 0, False: 0]
  |  Branch (4862:2): [True: 0, False: 0]
  ------------------
 4863|       |
 4864|      1|	if (Z_ARRVAL_P(array)->nNumOfElements <= 1) {	/* nothing to do */
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4864:6): [True: 0, False: 1]
  ------------------
 4865|      0|		ZVAL_COPY(return_value, array);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4866|      0|		return;
 4867|      0|	}
 4868|       |
 4869|      1|	if (sort_type == PHP_SORT_STRING) {
  ------------------
  |  |   50|      1|#define PHP_SORT_STRING             2
  ------------------
  |  Branch (4869:6): [True: 1, False: 0]
  ------------------
 4870|      1|		HashTable seen;
 4871|      1|		zend_long num_key;
 4872|      1|		zend_string *str_key;
 4873|      1|		zval *val;
 4874|       |
 4875|      1|		zend_hash_init(&seen, zend_hash_num_elements(Z_ARRVAL_P(array)), NULL, NULL, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 4876|      1|		array_init(return_value);
 4877|       |
 4878|     13|		ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_key, str_key, val) {
  ------------------
  |  | 1196|      6|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      1|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      1|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      1|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      1|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      1|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      1|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      1|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      1|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      7|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 6, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      6|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      6|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      6|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      6|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      6|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      6|			} else { \
  |  |  |  |  |  | 1060|      6|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      6|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      6|				__h = _p->h; \
  |  |  |  |  |  | 1063|      6|				__key = _p->key; \
  |  |  |  |  |  | 1064|      6|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      6|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 6]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      6|			} \
  |  |  |  |  |  | 1068|      6|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      6|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      6|	_h = __h; \
  |  | 1198|      6|	_key = __key; \
  |  | 1199|      6|	_val = _z;
  ------------------
 4879|     13|			zval *retval;
 4880|     13|			if (Z_TYPE_P(val) == IS_STRING) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(val) == IS_STRING) {
  ------------------
  |  |  612|      6|#define IS_STRING					6
  ------------------
  |  Branch (4880:8): [True: 2, False: 4]
  ------------------
 4881|      2|				retval = zend_hash_add_empty_element(&seen, Z_STR_P(val));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 4882|      4|			} else {
 4883|      4|				zend_string *tmp_str_val;
 4884|      4|				zend_string *str_val = zval_get_tmp_string(val, &tmp_str_val);
 4885|      4|				retval = zend_hash_add_empty_element(&seen, str_val);
 4886|      4|				zend_tmp_string_release(tmp_str_val);
 4887|      4|			}
 4888|       |
 4889|     13|			if (retval) {
  ------------------
  |  Branch (4889:8): [True: 2, False: 4]
  ------------------
 4890|       |				/* First occurrence of the value */
 4891|      2|				if (UNEXPECTED(Z_ISREF_P(val) && Z_REFCOUNT_P(val) == 1)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 2]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4892|      0|					ZVAL_DEREF(val);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4893|      0|				}
 4894|      2|				Z_TRY_ADDREF_P(val);
  ------------------
  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      2|	zval *_pz = (pz);				\
  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      2|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      2|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      2|	}								\
  |  | 1290|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4895|       |
 4896|      2|				if (str_key) {
  ------------------
  |  Branch (4896:9): [True: 2, False: 0]
  ------------------
 4897|      2|					zend_hash_add_new(Z_ARRVAL_P(return_value), str_key, val);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4898|      2|				} else {
 4899|      0|					zend_hash_index_add_new(Z_ARRVAL_P(return_value), num_key, val);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4900|      0|				}
 4901|      2|			}
 4902|     13|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      6|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4903|       |
 4904|      1|		zend_hash_destroy(&seen);
 4905|      1|		return;
 4906|      1|	}
 4907|       |
 4908|      0|	cmp = php_get_data_compare_func_unstable(sort_type, false);
 4909|       |
 4910|      0|	bool in_place = zend_may_modify_arg_in_place(array);
 4911|      0|	if (in_place) {
  ------------------
  |  Branch (4911:6): [True: 0, False: 0]
  ------------------
 4912|      0|		RETVAL_ARR(Z_ARRVAL_P(array));
  ------------------
  |  | 1035|      0|#define RETVAL_ARR(r)					ZVAL_ARR(return_value, r)
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4913|      0|	} else {
 4914|      0|		RETVAL_ARR(zend_array_dup(Z_ARRVAL_P(array)));
  ------------------
  |  | 1035|      0|#define RETVAL_ARR(r)					ZVAL_ARR(return_value, r)
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4915|      0|	}
 4916|       |
 4917|       |	/* create and sort array with pointers to the target_hash buckets */
 4918|      0|	arTmp = pemalloc((Z_ARRVAL_P(array)->nNumOfElements + 1) * sizeof(struct bucketindex), GC_FLAGS(Z_ARRVAL_P(array)) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  188|      0|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4919|      0|	if (HT_IS_PACKED(Z_ARRVAL_P(array))) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4920|      0|		zval *zv = Z_ARRVAL_P(array)->arPacked;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4921|      0|		for (i = 0, idx = 0; idx < Z_ARRVAL_P(array)->nNumUsed; idx++, zv++) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4921:24): [True: 0, False: 0]
  ------------------
 4922|      0|			if (Z_TYPE_P(zv) == IS_UNDEF) continue;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (4922:8): [True: 0, False: 0]
  ------------------
 4923|      0|			ZVAL_COPY_VALUE(&arTmp[i].b.val, zv);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4924|      0|			arTmp[i].b.h = idx;
 4925|      0|			arTmp[i].b.key = NULL;
 4926|      0|			arTmp[i].i = i;
 4927|      0|			i++;
 4928|      0|		}
 4929|      0|	} else {
 4930|      0|		p = Z_ARRVAL_P(array)->arData;
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4931|      0|		for (i = 0, idx = 0; idx < Z_ARRVAL_P(array)->nNumUsed; idx++, p++) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4931:24): [True: 0, False: 0]
  ------------------
 4932|      0|			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (4932:8): [True: 0, False: 0]
  ------------------
 4933|      0|			arTmp[i].b = *p;
 4934|      0|			arTmp[i].i = i;
 4935|      0|			i++;
 4936|      0|		}
 4937|      0|	}
 4938|      0|	ZVAL_UNDEF(&arTmp[i].b.val);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4939|      0|	zend_sort((void *) arTmp, i, sizeof(struct bucketindex),
 4940|      0|			(compare_func_t) cmp, (swap_func_t) array_bucketindex_swap);
 4941|       |
 4942|      0|	if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4943|      0|		goto out;
 4944|      0|	}
 4945|       |
 4946|       |	/* go through the sorted array and delete duplicates from the copy */
 4947|      0|	lastkept = arTmp;
 4948|      0|	for (cmpdata = arTmp + 1; Z_TYPE(cmpdata->b.val) != IS_UNDEF; cmpdata++) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	for (cmpdata = arTmp + 1; Z_TYPE(cmpdata->b.val) != IS_UNDEF; cmpdata++) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (4948:28): [True: 0, False: 0]
  ------------------
 4949|      0|		if (cmp(&lastkept->b, &cmpdata->b)) {
  ------------------
  |  Branch (4949:7): [True: 0, False: 0]
  ------------------
 4950|      0|			lastkept = cmpdata;
 4951|      0|		} else {
 4952|      0|			if (lastkept->i > cmpdata->i) {
  ------------------
  |  Branch (4952:8): [True: 0, False: 0]
  ------------------
 4953|      0|				p = &lastkept->b;
 4954|      0|				lastkept = cmpdata;
 4955|      0|			} else {
 4956|      0|				p = &cmpdata->b;
 4957|      0|			}
 4958|      0|			if (p->key == NULL) {
  ------------------
  |  Branch (4958:8): [True: 0, False: 0]
  ------------------
 4959|      0|				zend_hash_index_del(Z_ARRVAL_P(return_value), p->h);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4960|      0|			} else {
 4961|      0|				zend_hash_del(Z_ARRVAL_P(return_value), p->key);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4962|      0|			}
 4963|      0|		}
 4964|      0|	}
 4965|       |
 4966|      0|out:
 4967|      0|	pefree(arTmp, GC_FLAGS(Z_ARRVAL_P(array)) & IS_ARRAY_PERSISTENT);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4968|       |
 4969|      0|	if (in_place) {
  ------------------
  |  Branch (4969:6): [True: 0, False: 0]
  ------------------
 4970|      0|		Z_ADDREF_P(return_value);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
 4971|      0|	}
 4972|      0|}
php_multisort_compare:
 5912|      3|{
 5913|      3|	Bucket *ab = *(Bucket **)a;
 5914|      3|	Bucket *bb = *(Bucket **)b;
 5915|      3|	int r;
 5916|      3|	zend_long result;
 5917|       |
 5918|      3|	r = 0;
 5919|      3|	do {
 5920|      3|		result = ARRAYG(multisort_func)[r](&ab[r], &bb[r]);
  ------------------
  |  |   71|      3|#define ARRAYG(v) ZEND_MODULE_GLOBALS_ACCESSOR(array, v)
  |  |  ------------------
  |  |  |  |  276|      3|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 5921|      3|		if (result != 0) {
  ------------------
  |  Branch (5921:7): [True: 2, False: 1]
  ------------------
 5922|      2|			return result > 0 ? 1 : -1;
  ------------------
  |  Branch (5922:11): [True: 0, False: 2]
  ------------------
 5923|      2|		}
 5924|      1|		r++;
 5925|      1|	} while (Z_TYPE(ab[r].val) != IS_UNDEF);
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	} while (Z_TYPE(ab[r].val) != IS_UNDEF);
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (5925:11): [True: 0, False: 1]
  ------------------
 5926|       |
 5927|      1|	return stable_sort_fallback(&ab[r], &bb[r]);
 5928|      3|}
zif_array_multisort:
 5949|      8|{
 5950|      8|	zval*			args;
 5951|      8|	zval**			arrays;
 5952|      8|	Bucket**		indirect;
 5953|      8|	uint32_t		idx;
 5954|      8|	HashTable*		hash;
 5955|      8|	uint32_t		argc;
 5956|      8|	uint32_t		array_size;
 5957|      8|	uint32_t		num_arrays = 0;
 5958|      8|	int				parse_state[MULTISORT_LAST];   /* 0 - flag not allowed 1 - flag allowed */
 5959|      8|	int				sort_order = PHP_SORT_ASC;
  ------------------
  |  |   52|      8|#define PHP_SORT_ASC                4
  ------------------
 5960|      8|	int				sort_type  = PHP_SORT_REGULAR;
  ------------------
  |  |   48|      8|#define PHP_SORT_REGULAR            0
  ------------------
 5961|      8|	uint32_t		i, k, n;
 5962|      8|	bucket_compare_func_t *func;
 5963|       |
 5964|     23|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5965|     23|		Z_PARAM_VARIADIC('+', args, argc)
  ------------------
  |  | 2140|      7|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|      7|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|      7|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|      7|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      7|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|      7|			dest = _real_arg + 1; \
  |  |  |  | 2126|      7|			dest_num = _num_varargs; \
  |  |  |  | 2127|      7|			_i += _num_varargs; \
  |  |  |  | 2128|      7|			_real_arg += _num_varargs; \
  |  |  |  | 2129|      7|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|      7|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|      7|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5966|     23|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      7|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      7|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5966:2): [True: 7, False: 0]
  |  Branch (5966:2): [True: 0, False: 0]
  |  Branch (5966:2): [True: 0, False: 7]
  |  Branch (5966:2): [True: 7, False: 0]
  ------------------
 5967|       |
 5968|       |	/* Allocate space for storing pointers to input arrays and sort flags. */
 5969|      7|	arrays = (zval **)ecalloc(argc, sizeof(zval *));
  ------------------
  |  |  157|      7|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5970|     21|	for (i = 0; i < MULTISORT_LAST; i++) {
  ------------------
  |  | 5909|     21|#define MULTISORT_LAST	2
  ------------------
  |  Branch (5970:14): [True: 14, False: 7]
  ------------------
 5971|     14|		parse_state[i] = 0;
 5972|     14|	}
 5973|      7|	func = ecalloc(argc, sizeof(bucket_compare_func_t));
  ------------------
  |  |  157|      7|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5974|       |
 5975|       |	/* Here we go through the input arguments and parse them. Each one can
 5976|       |	 * be either an array or a sort flag which follows an array. If not
 5977|       |	 * specified, the sort flags defaults to PHP_SORT_ASC and PHP_SORT_REGULAR
 5978|       |	 * accordingly. There can't be two sort flags of the same type after an
 5979|       |	 * array, and the very first argument has to be an array. */
 5980|     22|	for (i = 0; i < argc; i++) {
  ------------------
  |  Branch (5980:14): [True: 18, False: 4]
  ------------------
 5981|     18|		zval *arg = &args[i];
 5982|       |
 5983|     18|		ZVAL_DEREF(arg);
  ------------------
  |  | 1474|     18|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     18|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     18|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 10, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|     10|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|     10|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|     10|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|     10|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|     10|		}												\
  |  | 1478|     18|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 18]
  |  |  ------------------
  ------------------
 5984|     18|		if (Z_TYPE_P(arg) == IS_ARRAY) {
  ------------------
  |  |  669|     18|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     18|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(arg) == IS_ARRAY) {
  ------------------
  |  |  613|     18|#define IS_ARRAY					7
  ------------------
  |  Branch (5984:7): [True: 9, False: 9]
  ------------------
 5985|      9|			SEPARATE_ARRAY(arg);
  ------------------
  |  | 1536|      9|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      9|		zval *__zv = (zv);								\
  |  | 1538|      9|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      9|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      9|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      9|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      9|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 6, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      6|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      6|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      6|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      6|		zval *__z = (z);						\
  |  |  |  | 1128|      6|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      6|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      6|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      6|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      6|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      6|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      6|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      6|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      6|		}												\
  |  | 1543|      9|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 9]
  |  |  ------------------
  ------------------
 5986|       |			/* We see the next array, so we update the sort flags of
 5987|       |			 * the previous array and reset the sort flags. */
 5988|      9|			if (i > 0) {
  ------------------
  |  Branch (5988:8): [True: 3, False: 6]
  ------------------
 5989|      3|				func[num_arrays - 1] = php_get_data_compare_func_unstable(sort_type, sort_order != PHP_SORT_ASC);
  ------------------
  |  |   52|      3|#define PHP_SORT_ASC                4
  ------------------
 5990|      3|				sort_order = PHP_SORT_ASC;
  ------------------
  |  |   52|      3|#define PHP_SORT_ASC                4
  ------------------
 5991|      3|				sort_type = PHP_SORT_REGULAR;
  ------------------
  |  |   48|      3|#define PHP_SORT_REGULAR            0
  ------------------
 5992|      3|			}
 5993|      9|			arrays[num_arrays++] = arg;
 5994|       |
 5995|       |			/* Next one may be an array or a list of sort flags. */
 5996|     27|			for (k = 0; k < MULTISORT_LAST; k++) {
  ------------------
  |  | 5909|     27|#define MULTISORT_LAST	2
  ------------------
  |  Branch (5996:16): [True: 18, False: 9]
  ------------------
 5997|     18|				parse_state[k] = 1;
 5998|     18|			}
 5999|      9|		} else if (Z_TYPE_P(arg) == IS_LONG) {
  ------------------
  |  |  669|      9|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      9|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(arg) == IS_LONG) {
  ------------------
  |  |  610|      9|#define IS_LONG						4
  ------------------
  |  Branch (5999:14): [True: 6, False: 3]
  ------------------
 6000|      6|			switch (Z_LVAL_P(arg) & ~PHP_SORT_FLAG_CASE) {
  ------------------
  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              			switch (Z_LVAL_P(arg) & ~PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      6|#define PHP_SORT_FLAG_CASE          8
  ------------------
 6001|      4|				case PHP_SORT_ASC:
  ------------------
  |  |   52|      4|#define PHP_SORT_ASC                4
  ------------------
  |  Branch (6001:5): [True: 4, False: 2]
  ------------------
 6002|      4|				case PHP_SORT_DESC:
  ------------------
  |  |   51|      4|#define PHP_SORT_DESC               3
  ------------------
  |  Branch (6002:5): [True: 0, False: 6]
  ------------------
 6003|       |					/* flag allowed here */
 6004|      4|					if (parse_state[MULTISORT_ORDER] == 1) {
  ------------------
  |  | 5907|      4|#define MULTISORT_ORDER	0
  ------------------
  |  Branch (6004:10): [True: 4, False: 0]
  ------------------
 6005|       |						/* Save the flag and make sure then next arg is not the current flag. */
 6006|      4|						sort_order = Z_LVAL_P(arg) == PHP_SORT_DESC ? PHP_SORT_DESC : PHP_SORT_ASC;
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              						sort_order = Z_LVAL_P(arg) == PHP_SORT_DESC ? PHP_SORT_DESC : PHP_SORT_ASC;
  ------------------
  |  |   51|      4|#define PHP_SORT_DESC               3
  ------------------
              						sort_order = Z_LVAL_P(arg) == PHP_SORT_DESC ? PHP_SORT_DESC : PHP_SORT_ASC;
  ------------------
  |  |   51|      0|#define PHP_SORT_DESC               3
  ------------------
              						sort_order = Z_LVAL_P(arg) == PHP_SORT_DESC ? PHP_SORT_DESC : PHP_SORT_ASC;
  ------------------
  |  |   52|      8|#define PHP_SORT_ASC                4
  ------------------
  |  Branch (6006:20): [True: 0, False: 4]
  ------------------
 6007|      4|						parse_state[MULTISORT_ORDER] = 0;
  ------------------
  |  | 5907|      4|#define MULTISORT_ORDER	0
  ------------------
 6008|      4|					} else {
 6009|      0|						zend_argument_type_error(i + 1, "must be an array or a sort flag that has not already been specified");
 6010|      0|						MULTISORT_ABORT;
  ------------------
  |  | 5932|      0|	efree(func);	\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5933|      0|	efree(arrays);					\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5934|      0|	return;
  ------------------
 6011|      0|					}
 6012|      4|					break;
 6013|       |
 6014|      4|				case PHP_SORT_REGULAR:
  ------------------
  |  |   48|      0|#define PHP_SORT_REGULAR            0
  ------------------
  |  Branch (6014:5): [True: 0, False: 6]
  ------------------
 6015|      0|				case PHP_SORT_NUMERIC:
  ------------------
  |  |   49|      0|#define PHP_SORT_NUMERIC            1
  ------------------
  |  Branch (6015:5): [True: 0, False: 6]
  ------------------
 6016|      2|				case PHP_SORT_STRING:
  ------------------
  |  |   50|      2|#define PHP_SORT_STRING             2
  ------------------
  |  Branch (6016:5): [True: 2, False: 4]
  ------------------
 6017|      2|				case PHP_SORT_NATURAL:
  ------------------
  |  |   54|      2|#define PHP_SORT_NATURAL            6
  ------------------
  |  Branch (6017:5): [True: 0, False: 6]
  ------------------
 6018|      2|				case PHP_SORT_LOCALE_STRING:
  ------------------
  |  |   53|      2|#define PHP_SORT_LOCALE_STRING      5
  ------------------
  |  Branch (6018:5): [True: 0, False: 6]
  ------------------
 6019|       |					/* flag allowed here */
 6020|      2|					if (parse_state[MULTISORT_TYPE] == 1) {
  ------------------
  |  | 5908|      2|#define MULTISORT_TYPE	1
  ------------------
  |  Branch (6020:10): [True: 2, False: 0]
  ------------------
 6021|       |						/* Save the flag and make sure then next arg is not the current flag. */
 6022|      2|						sort_type = (int)Z_LVAL_P(arg);
  ------------------
  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 6023|      2|						parse_state[MULTISORT_TYPE] = 0;
  ------------------
  |  | 5908|      2|#define MULTISORT_TYPE	1
  ------------------
 6024|      2|					} else {
 6025|      0|						zend_argument_type_error(i + 1, "must be an array or a sort flag that has not already been specified");
 6026|      0|						MULTISORT_ABORT;
  ------------------
  |  | 5932|      0|	efree(func);	\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5933|      0|	efree(arrays);					\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5934|      0|	return;
  ------------------
 6027|      0|					}
 6028|      2|					break;
 6029|       |
 6030|      2|				default:
  ------------------
  |  Branch (6030:5): [True: 0, False: 6]
  ------------------
 6031|      0|					zend_argument_value_error(i + 1, "must be a valid sort flag");
 6032|      0|					MULTISORT_ABORT;
  ------------------
  |  | 5932|      0|	efree(func);	\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5933|      0|	efree(arrays);					\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5934|      0|	return;
  ------------------
 6033|      0|					break;
 6034|       |
 6035|      6|			}
 6036|      6|		} else {
 6037|      3|			zend_argument_type_error(i + 1, "must be an array or a sort flag");
 6038|      3|			MULTISORT_ABORT;
  ------------------
  |  | 5932|      3|	efree(func);	\
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5933|      3|	efree(arrays);					\
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5934|      3|	return;
  ------------------
 6039|      0|		}
 6040|     18|	}
 6041|       |
 6042|       |	/* Make sure the arrays are of the same size. */
 6043|      4|	array_size = zend_hash_num_elements(Z_ARRVAL_P(arrays[0]));
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6044|      6|	for (i = 1; i < num_arrays; i++) {
  ------------------
  |  Branch (6044:14): [True: 2, False: 4]
  ------------------
 6045|      2|		if (zend_hash_num_elements(Z_ARRVAL_P(arrays[i])) != array_size) {
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6045:7): [True: 0, False: 2]
  ------------------
 6046|      0|			zend_value_error("Array sizes are inconsistent");
 6047|      0|			MULTISORT_ABORT;
  ------------------
  |  | 5932|      0|	efree(func);	\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5933|      0|	efree(arrays);					\
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5934|      0|	return;
  ------------------
 6048|      0|		}
 6049|      2|	}
 6050|       |
 6051|       |	/* If all arrays are empty we don't need to do anything. */
 6052|      4|	if (array_size < 1) {
  ------------------
  |  Branch (6052:6): [True: 1, False: 3]
  ------------------
 6053|      1|		efree(func);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6054|      1|		efree(arrays);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6055|      1|		RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6056|      1|	}
 6057|       |
 6058|       |	/* Take care of the last array sort flags. */
 6059|      3|	func[num_arrays - 1] = php_get_data_compare_func_unstable(sort_type, sort_order != PHP_SORT_ASC);
  ------------------
  |  |   52|      3|#define PHP_SORT_ASC                4
  ------------------
 6060|      3|	bucket_compare_func_t *old_multisort_func = ARRAYG(multisort_func);
  ------------------
  |  |   71|      3|#define ARRAYG(v) ZEND_MODULE_GLOBALS_ACCESSOR(array, v)
  |  |  ------------------
  |  |  |  |  276|      3|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 6061|      3|	ARRAYG(multisort_func) = func;
  ------------------
  |  |   71|      3|#define ARRAYG(v) ZEND_MODULE_GLOBALS_ACCESSOR(array, v)
  |  |  ------------------
  |  |  |  |  276|      3|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 6062|       |
 6063|       |	/* Create the indirection array. This array is of size MxN, where
 6064|       |	 * M is the number of entries in each input array and N is the number
 6065|       |	 * of the input arrays + 1. The last column is UNDEF to indicate the end
 6066|       |	 * of the row. It also stores the original position for stable sorting. */
 6067|      3|	indirect = (Bucket **)safe_emalloc(array_size, sizeof(Bucket *), 0);
  ------------------
  |  |  153|      3|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6068|       |	/* Move num_arrays multiplication to size because it's essentially impossible to overflow. */
 6069|      3|	Bucket *indirects = (Bucket *)safe_emalloc(array_size, sizeof(Bucket) * (num_arrays + 1), 0);
  ------------------
  |  |  153|      3|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6070|      9|	for (i = 0; i < array_size; i++) {
  ------------------
  |  Branch (6070:14): [True: 6, False: 3]
  ------------------
 6071|      6|		indirect[i] = indirects + (i * (num_arrays + 1));
 6072|      6|	}
 6073|      6|	for (i = 0; i < num_arrays; i++) {
  ------------------
  |  Branch (6073:14): [True: 3, False: 3]
  ------------------
 6074|      3|		k = 0;
 6075|      3|		if (HT_IS_PACKED(Z_ARRVAL_P(arrays[i]))) {
  ------------------
  |  |   62|      3|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 6076|      2|			zval *zv = Z_ARRVAL_P(arrays[i])->arPacked;
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6077|      6|			for (idx = 0; idx < Z_ARRVAL_P(arrays[i])->nNumUsed; idx++, zv++) {
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6077:18): [True: 4, False: 2]
  ------------------
 6078|      4|				if (Z_TYPE_P(zv) == IS_UNDEF) continue;
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(zv) == IS_UNDEF) continue;
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (6078:9): [True: 0, False: 4]
  ------------------
 6079|      4|				ZVAL_COPY_VALUE(&indirect[k][i].val, zv);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 6080|      4|				indirect[k][i].h = idx;
 6081|      4|				indirect[k][i].key = NULL;
 6082|      4|				k++;
 6083|      4|			}
 6084|      2|		} else {
 6085|      1|			Bucket *p = Z_ARRVAL_P(arrays[i])->arData;
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6086|      3|			for (idx = 0; idx < Z_ARRVAL_P(arrays[i])->nNumUsed; idx++, p++) {
  ------------------
  |  |  997|      3|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6086:18): [True: 2, False: 1]
  ------------------
 6087|      2|				if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (6087:9): [True: 0, False: 2]
  ------------------
 6088|      2|				indirect[k][i] = *p;
 6089|      2|				k++;
 6090|      2|			}
 6091|      1|		}
 6092|      3|	}
 6093|      9|	for (k = 0; k < array_size; k++) {
  ------------------
  |  Branch (6093:14): [True: 6, False: 3]
  ------------------
 6094|      6|		ZVAL_UNDEF(&indirect[k][num_arrays].val);
  ------------------
  |  | 1055|      6|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      6|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 6095|      6|		Z_EXTRA_P(&indirect[k][num_arrays].val) = k;
  ------------------
  |  |  705|      6|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      6|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
 6096|      6|	}
 6097|       |
 6098|       |	/* Do the actual sort magic - bada-bim, bada-boom. */
 6099|      3|	zend_sort(indirect, array_size, sizeof(Bucket *), php_multisort_compare, (swap_func_t)array_bucket_p_sawp);
 6100|      3|	if (EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 6101|      1|		goto clean_up;
 6102|      1|	}
 6103|       |
 6104|       |	/* Restructure the arrays based on sorted indirect - this is mostly taken from zend_hash_sort() function. */
 6105|      4|	for (i = 0; i < num_arrays; i++) {
  ------------------
  |  Branch (6105:14): [True: 2, False: 2]
  ------------------
 6106|      2|		hash = Z_ARRVAL_P(arrays[i]);
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6107|      2|		hash->nNumUsed = array_size;
 6108|      2|		hash->nNextFreeElement = array_size;
 6109|      2|		hash->nInternalPointer = 0;
 6110|      2|		if (HT_IS_PACKED(hash)) {
  ------------------
  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 6111|      6|			for (k = 0; k < array_size; k++) {
  ------------------
  |  Branch (6111:16): [True: 4, False: 2]
  ------------------
 6112|      4|				ZVAL_COPY_VALUE(&hash->arPacked[k], &indirect[k][i].val);
  ------------------
  |  | 1416|      4|	do {												\
  |  | 1417|      4|		zval *_z1 = (z);								\
  |  | 1418|      4|		const zval *_z2 = (v);							\
  |  | 1419|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 6113|      4|			}
 6114|      2|		} else {
 6115|      0|			bool repack = true;
 6116|       |
 6117|      0|			for (n = 0, k = 0; k < array_size; k++) {
  ------------------
  |  Branch (6117:23): [True: 0, False: 0]
  ------------------
 6118|      0|				hash->arData[k] = indirect[k][i];
 6119|      0|				if (hash->arData[k].key == NULL) {
  ------------------
  |  Branch (6119:9): [True: 0, False: 0]
  ------------------
 6120|      0|					hash->arData[k].h = n++;
 6121|      0|				} else {
 6122|      0|					repack = false;
 6123|      0|				}
 6124|      0|			}
 6125|      0|			if (repack) {
  ------------------
  |  Branch (6125:8): [True: 0, False: 0]
  ------------------
 6126|      0|				zend_hash_to_packed(hash);
 6127|      0|			} else {
 6128|      0|				zend_hash_rehash(hash);
 6129|      0|			}
 6130|      0|		}
 6131|      2|	}
 6132|      2|	RETVAL_TRUE;
  ------------------
  |  | 1044|      2|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  ------------------
  |  |  |  | 1067|      2|#define ZVAL_TRUE(z) do {				\
  |  |  |  | 1068|      2|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  ------------------
  |  |  |  | 1069|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1069:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6133|       |
 6134|      3|clean_up:
 6135|      3|	efree(indirects);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6136|      3|	efree(indirect);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6137|      3|	efree(func);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6138|      3|	efree(arrays);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6139|      3|	ARRAYG(multisort_func) = old_multisort_func;
  ------------------
  |  |   71|      3|#define ARRAYG(v) ZEND_MODULE_GLOBALS_ACCESSOR(array, v)
  |  |  ------------------
  |  |  |  |  276|      3|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
 6140|      3|}
zif_array_reduce:
 6422|      8|{
 6423|      8|	zval *input;
 6424|      8|	zval args[2];
 6425|      8|	zval *operand;
 6426|      8|	zend_fcall_info fci;
 6427|      8|	zend_fcall_info_cache fci_cache;
 6428|      8|	zval *initial = NULL;
 6429|      8|	HashTable *htbl;
 6430|       |
 6431|     24|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6432|     32|		Z_PARAM_ARRAY(input)
  ------------------
  |  | 1691|      8|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      8|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      8|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      8|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      1|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      1|			break; \
  |  |  |  |  |  | 1685|      1|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6432:3): [True: 8, False: 0]
  |  Branch (6432:3): [True: 0, False: 0]
  |  Branch (6432:3): [True: 8, False: 0]
  |  Branch (6432:3): [True: 0, False: 0]
  |  Branch (6432:3): [True: 8, False: 0]
  |  Branch (6432:3): [True: 0, False: 0]
  |  Branch (6432:3): [True: 0, False: 8]
  |  Branch (6432:3): [True: 8, False: 0]
  |  Branch (6432:3): [True: 0, False: 0]
  |  Branch (6432:3): [True: 0, False: 0]
  ------------------
 6433|     35|		Z_PARAM_FUNC(fci, fci_cache)
  ------------------
  |  | 1833|      8|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      7|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      1|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      1|			} else { \
  |  |  |  | 1825|      1|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      2|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1826|      1|			} \
  |  |  |  | 1827|      1|			break; \
  |  |  |  | 1828|      1|		} \
  |  |  ------------------
  ------------------
  |  Branch (6433:3): [True: 7, False: 0]
  |  Branch (6433:3): [True: 0, False: 0]
  |  Branch (6433:3): [True: 7, False: 0]
  |  Branch (6433:3): [True: 0, False: 0]
  |  Branch (6433:3): [True: 7, False: 0]
  |  Branch (6433:3): [True: 0, False: 0]
  |  Branch (6433:3): [True: 0, False: 7]
  |  Branch (6433:3): [True: 7, False: 0]
  |  Branch (6433:3): [True: 0, False: 0]
  |  Branch (6433:3): [True: 0, False: 0]
  ------------------
 6434|      6|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      6|	_optional = 1;
  ------------------
 6435|     22|		Z_PARAM_ZVAL(initial)
  ------------------
  |  | 2116|      5|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      6|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      6|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 6, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      6|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 5]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      6|	} \
  |  |  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      5|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6435:3): [True: 6, False: 0]
  |  Branch (6435:3): [True: 0, False: 0]
  |  Branch (6435:3): [True: 0, False: 6]
  |  Branch (6435:3): [True: 6, False: 0]
  |  Branch (6435:3): [True: 6, False: 0]
  |  Branch (6435:3): [True: 0, False: 0]
  |  Branch (6435:3): [True: 6, False: 0]
  |  Branch (6435:3): [True: 0, False: 0]
  |  Branch (6435:3): [True: 0, False: 0]
  |  Branch (6435:3): [True: 0, False: 0]
  ------------------
 6436|     22|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      5|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      5|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      5|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6436:2): [True: 5, False: 0]
  |  Branch (6436:2): [True: 0, False: 0]
  |  Branch (6436:2): [True: 5, False: 0]
  |  Branch (6436:2): [True: 0, False: 0]
  ------------------
 6437|       |
 6438|      6|	if (initial) {
  ------------------
  |  Branch (6438:6): [True: 5, False: 1]
  ------------------
 6439|      5|		ZVAL_COPY(return_value, initial);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 6440|      5|	} else {
 6441|      1|		ZVAL_NULL(return_value);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6442|      1|	}
 6443|       |
 6444|       |	/* (zval **)input points to an element of argument stack
 6445|       |	 * the base pointer of which is subject to change.
 6446|       |	 * thus we need to keep the pointer to the hashtable for safety */
 6447|      6|	htbl = Z_ARRVAL_P(input);
  ------------------
  |  |  997|      6|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      6|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      6|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6448|       |
 6449|      6|	if (zend_hash_num_elements(htbl) == 0) {
  ------------------
  |  Branch (6449:6): [True: 0, False: 6]
  ------------------
 6450|      0|		return;
 6451|      0|	}
 6452|       |
 6453|      6|	fci.retval = return_value;
 6454|      6|	fci.param_count = 2;
 6455|      6|	fci.params = args;
 6456|      6|	fci.consumed_args = zend_fci_consumed_arg(0);
 6457|       |
 6458|     34|	ZEND_HASH_FOREACH_VAL(htbl, operand) {
  ------------------
  |  | 1117|     14|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      6|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      6|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      6|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      6|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      6|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      6|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      6|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      6|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      6|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|     18|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|     12|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 14, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1034|     14|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|     14|	_val = _z;
  ------------------
 6459|     34|		ZVAL_COPY_VALUE(&args[0], return_value);
  ------------------
  |  | 1416|     14|	do {												\
  |  | 1417|     14|		zval *_z1 = (z);								\
  |  | 1418|     14|		const zval *_z2 = (v);							\
  |  | 1419|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 6460|     34|		ZVAL_COPY_VALUE(&args[1], operand);
  ------------------
  |  | 1416|     14|	do {												\
  |  | 1417|     14|		zval *_z1 = (z);								\
  |  | 1418|     14|		const zval *_z2 = (v);							\
  |  | 1419|     14|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     14|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     14|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     14|	do {												\
  |  |  |  | 1408|     14|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     14|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     14|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     14|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     14|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     14|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     14|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 14]
  |  |  ------------------
  ------------------
 6461|       |
 6462|     34|		zend_call_function(&fci, &fci_cache);
 6463|     34|		zval_ptr_dtor(&args[0]);
 6464|       |
 6465|     34|		if (EXPECTED(!Z_ISUNDEF_P(return_value))) {
  ------------------
  |  |  456|     14|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 12, False: 2]
  |  |  ------------------
  ------------------
 6466|     12|			if (UNEXPECTED(Z_ISREF_P(return_value))) {
  ------------------
  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 6, False: 6]
  |  |  ------------------
  ------------------
 6467|      6|				zend_unwrap_reference(return_value);
 6468|      6|			}
 6469|     12|		} else {
 6470|      2|			RETURN_NULL();
  ------------------
  |  | 1047|      2|#define RETURN_NULL()					do { RETVAL_NULL(); return;} while (0)
  |  |  ------------------
  |  |  |  | 1021|      2|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  |  |  |  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1061|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1047:63): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6471|      2|		}
 6472|     34|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     14|		} \
  |  | 1102|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 6473|      6|}
zif_array_filter:
 6494|      2|{
 6495|      2|	zval *array;
 6496|      2|	zval *operand;
 6497|      2|	zval *key;
 6498|      2|	zval args[2];
 6499|      2|	zval retval;
 6500|      2|	bool have_callback = 0;
 6501|      2|	zend_long use_type = ARRAY_FILTER_USE_VALUE;
  ------------------
  |  |   60|      2|#define ARRAY_FILTER_USE_VALUE	0
  ------------------
 6502|      2|	zend_string *string_key;
 6503|      2|	zend_fcall_info fci = empty_fcall_info;
  ------------------
  |  |  700|      2|# define empty_fcall_info (zend_fcall_info) {0}
  ------------------
 6504|      2|	zend_fcall_info_cache fci_cache;
 6505|      2|	zend_ulong num_key;
 6506|       |
 6507|      6|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6508|      8|		Z_PARAM_ARRAY(array)
  ------------------
  |  | 1691|      2|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      2|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      2|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      2|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      0|			break; \
  |  |  |  |  |  | 1685|      0|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6508:3): [True: 2, False: 0]
  |  Branch (6508:3): [True: 0, False: 0]
  |  Branch (6508:3): [True: 2, False: 0]
  |  Branch (6508:3): [True: 0, False: 0]
  |  Branch (6508:3): [True: 2, False: 0]
  |  Branch (6508:3): [True: 0, False: 0]
  |  Branch (6508:3): [True: 0, False: 2]
  |  Branch (6508:3): [True: 2, False: 0]
  |  Branch (6508:3): [True: 0, False: 0]
  |  Branch (6508:3): [True: 0, False: 0]
  ------------------
 6509|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
 6510|      8|		Z_PARAM_FUNC_OR_NULL(fci, fci_cache)
  ------------------
  |  | 1839|      2|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 1, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      2|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (6510:3): [True: 2, False: 0]
  |  Branch (6510:3): [True: 0, False: 0]
  |  Branch (6510:3): [True: 0, False: 2]
  |  Branch (6510:3): [True: 2, False: 0]
  |  Branch (6510:3): [True: 2, False: 0]
  |  Branch (6510:3): [True: 0, False: 0]
  |  Branch (6510:3): [True: 2, False: 0]
  |  Branch (6510:3): [True: 0, False: 0]
  |  Branch (6510:3): [True: 0, False: 0]
  |  Branch (6510:3): [True: 0, False: 0]
  ------------------
 6511|      6|		Z_PARAM_LONG(use_type)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (6511:3): [True: 2, False: 0]
  |  Branch (6511:3): [True: 0, False: 0]
  |  Branch (6511:3): [True: 0, False: 2]
  |  Branch (6511:3): [True: 2, False: 0]
  |  Branch (6511:3): [True: 2, False: 0]
  |  Branch (6511:3): [True: 0, False: 0]
  |  Branch (6511:3): [True: 2, False: 0]
  |  Branch (6511:3): [True: 0, False: 0]
  |  Branch (6511:3): [True: 0, False: 0]
  |  Branch (6511:3): [True: 0, False: 0]
  ------------------
 6512|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6512:2): [True: 0, False: 0]
  |  Branch (6512:2): [True: 0, False: 0]
  |  Branch (6512:2): [True: 0, False: 0]
  |  Branch (6512:2): [True: 0, False: 0]
  ------------------
 6513|       |
 6514|      2|	switch (use_type) {
 6515|      2|		case ARRAY_FILTER_USE_VALUE:
  ------------------
  |  |   60|      2|#define ARRAY_FILTER_USE_VALUE	0
  ------------------
  |  Branch (6515:3): [True: 2, False: 0]
  ------------------
 6516|      2|		case ARRAY_FILTER_USE_BOTH:
  ------------------
  |  |   61|      2|#define ARRAY_FILTER_USE_BOTH	1
  ------------------
  |  Branch (6516:3): [True: 0, False: 2]
  ------------------
 6517|      2|		case ARRAY_FILTER_USE_KEY:
  ------------------
  |  |   62|      2|#define ARRAY_FILTER_USE_KEY	2
  ------------------
  |  Branch (6517:3): [True: 0, False: 2]
  ------------------
 6518|      2|			break;
 6519|      0|		default:
  ------------------
  |  Branch (6519:3): [True: 0, False: 2]
  ------------------
 6520|      0|			zend_argument_value_error(3, "must be one of ARRAY_FILTER_USE_VALUE, ARRAY_FILTER_USE_KEY, or ARRAY_FILTER_USE_BOTH");
 6521|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6521:3): [True: 0, False: 0]
  |  Branch (6521:3): [True: 0, False: 0]
  ------------------
 6522|      2|	}
 6523|       |
 6524|      2|	if (zend_hash_num_elements(Z_ARRVAL_P(array)) == 0) {
  ------------------
  |  |  997|      2|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      2|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6524:6): [True: 0, False: 2]
  ------------------
 6525|      0|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      0|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      0|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      0|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      0|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6526|      0|	}
 6527|      2|	array_init(return_value);
 6528|       |
 6529|      2|	if (ZEND_FCI_INITIALIZED(fci)) {
  ------------------
  |  |  342|      2|#define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
  |  |  ------------------
  |  |  |  Branch (342:35): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 6530|      1|		have_callback = 1;
 6531|      1|		fci.retval = &retval;
 6532|      1|		if (use_type == ARRAY_FILTER_USE_BOTH) {
  ------------------
  |  |   61|      1|#define ARRAY_FILTER_USE_BOTH	1
  ------------------
  |  Branch (6532:7): [True: 0, False: 1]
  ------------------
 6533|      0|			fci.param_count = 2;
 6534|      0|			key = &args[1];
 6535|      1|		} else {
 6536|      1|			fci.param_count = 1;
 6537|      1|			key = &args[0];
 6538|      1|		}
 6539|      1|	}
 6540|       |
 6541|      6|	ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_key, string_key, operand) {
  ------------------
  |  | 1196|      2|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      2|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      2|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      2|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      2|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      2|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      2|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      4|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      2|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      2|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      2|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      2|				__z++; \
  |  |  |  |  |  | 1057|      2|				__h = _idx; \
  |  |  |  |  |  | 1058|      2|				_idx++; \
  |  |  |  |  |  | 1059|      2|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      2|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      2|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      2|	_h = __h; \
  |  | 1198|      2|	_key = __key; \
  |  | 1199|      2|	_val = _z;
  ------------------
 6542|      6|		if (have_callback) {
  ------------------
  |  Branch (6542:7): [True: 1, False: 1]
  ------------------
 6543|      1|			if (use_type != ARRAY_FILTER_USE_VALUE) {
  ------------------
  |  |   60|      1|#define ARRAY_FILTER_USE_VALUE	0
  ------------------
  |  Branch (6543:8): [True: 0, False: 1]
  ------------------
 6544|       |				/* Set up the key */
 6545|      0|				if (!string_key) {
  ------------------
  |  Branch (6545:9): [True: 0, False: 0]
  ------------------
 6546|      0|					ZVAL_LONG(key, num_key);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6547|      0|				} else {
 6548|      0|					ZVAL_STR(key, string_key);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6549|      0|				}
 6550|      0|			}
 6551|      1|			if (use_type != ARRAY_FILTER_USE_KEY) {
  ------------------
  |  |   62|      1|#define ARRAY_FILTER_USE_KEY	2
  ------------------
  |  Branch (6551:8): [True: 1, False: 0]
  ------------------
 6552|      1|				ZVAL_COPY_VALUE(&args[0], operand);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6553|      1|			}
 6554|      1|			fci.params = args;
 6555|       |
 6556|      1|			zend_result result = zend_call_function(&fci, &fci_cache);
 6557|      1|			ZEND_ASSERT(result == SUCCESS);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6557:4): [True: 0, False: 1]
  |  Branch (6557:4): [True: 1, False: 0]
  ------------------
 6558|       |
 6559|      1|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 6560|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6560:5): [True: 0, False: 0]
  |  Branch (6560:5): [True: 0, False: 0]
  ------------------
 6561|      0|			}
 6562|       |
 6563|      1|			if (!php_is_true(&retval)) {
  ------------------
  |  Branch (6563:8): [True: 0, False: 1]
  ------------------
 6564|      0|				continue;
 6565|      0|			}
 6566|      1|		} else if (!zend_is_true(operand)) {
  ------------------
  |  Branch (6566:14): [True: 1, False: 0]
  ------------------
 6567|      1|			continue;
 6568|      1|		}
 6569|       |
 6570|      1|		if (string_key) {
  ------------------
  |  Branch (6570:7): [True: 0, False: 1]
  ------------------
 6571|      0|			operand = zend_hash_add_new(Z_ARRVAL_P(return_value), string_key, operand);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6572|      1|		} else {
 6573|      1|			operand = zend_hash_index_add_new(Z_ARRVAL_P(return_value), num_key, operand);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6574|      1|		}
 6575|      1|		zval_add_ref(operand);
 6576|      1|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      1|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 6577|      2|}
zif_array_map:
 6708|    208|{
 6709|    208|	zval *arrays = NULL;
 6710|    208|	uint32_t n_arrays = 0;
 6711|    208|	zval result;
 6712|    208|	zend_fcall_info fci;
 6713|    208|	zend_fcall_info_cache fci_cache;
 6714|    208|	uint32_t i;
 6715|    208|	uint32_t k, maxlen = 0;
 6716|       |
 6717|    624|	ZEND_PARSE_PARAMETERS_START(2, -1)
  ------------------
  |  | 1629|    208|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    208|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    208|		const int _flags = (flags); \
  |  |  |  | 1599|    208|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    208|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    208|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    208|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    208|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    208|		uint32_t _i = 0; \
  |  |  |  | 1603|    208|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    208|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    208|		char *_error = NULL; \
  |  |  |  | 1606|    208|		bool _dummy = 0; \
  |  |  |  | 1607|    208|		bool _optional = 0; \
  |  |  |  | 1608|    208|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    208|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    208|		((void)_i); \
  |  |  |  | 1610|    208|		((void)_real_arg); \
  |  |  |  | 1611|    208|		((void)_arg); \
  |  |  |  | 1612|    208|		((void)_expected_type); \
  |  |  |  | 1613|    208|		((void)_error); \
  |  |  |  | 1614|    208|		((void)_optional); \
  |  |  |  | 1615|    208|		((void)_dummy); \
  |  |  |  | 1616|    208|		\
  |  |  |  | 1617|    208|		do { \
  |  |  |  | 1618|    208|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    416|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 208]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    208|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    208|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 208]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|    208|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    208|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    208|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    208|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6718|    832|		Z_PARAM_FUNC_OR_NULL(fci, fci_cache)
  ------------------
  |  | 1839|    208|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 1, 0, true)
  |  |  ------------------
  |  |  |  | 1819|    208|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    208|	++_i; \
  |  |  |  |  |  | 1654|    208|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    208|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    208|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    208|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    208|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 208]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    208|	_real_arg++; \
  |  |  |  |  |  | 1660|    208|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    208|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 208]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    208|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 208]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|    208|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    208|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 207]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      1|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      1|			} else { \
  |  |  |  | 1825|      1|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      1|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      1|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1826|      1|			} \
  |  |  |  | 1827|      1|			break; \
  |  |  |  | 1828|      1|		} \
  |  |  ------------------
  ------------------
  |  Branch (6718:3): [True: 208, False: 0]
  |  Branch (6718:3): [True: 0, False: 0]
  |  Branch (6718:3): [True: 208, False: 0]
  |  Branch (6718:3): [True: 0, False: 0]
  |  Branch (6718:3): [True: 208, False: 0]
  |  Branch (6718:3): [True: 0, False: 0]
  |  Branch (6718:3): [True: 0, False: 208]
  |  Branch (6718:3): [True: 208, False: 0]
  |  Branch (6718:3): [True: 0, False: 0]
  |  Branch (6718:3): [True: 0, False: 0]
  ------------------
 6719|    207|		Z_PARAM_VARIADIC('+', arrays, n_arrays)
  ------------------
  |  | 2140|    207|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|    207|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|    207|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|    207|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|    207|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 207, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|    207|			dest = _real_arg + 1; \
  |  |  |  | 2126|    207|			dest_num = _num_varargs; \
  |  |  |  | 2127|    207|			_i += _num_varargs; \
  |  |  |  | 2128|    207|			_real_arg += _num_varargs; \
  |  |  |  | 2129|    207|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|    207|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    207|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 207]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|    207|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 207]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6720|    208|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|    207|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|    207|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    207|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|    207|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 207]
  |  |  |  |  ------------------
  |  |  |  | 1641|    208|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    208|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 207]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|    208|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 207]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6720:2): [True: 207, False: 0]
  |  Branch (6720:2): [True: 0, False: 0]
  |  Branch (6720:2): [True: 0, False: 207]
  |  Branch (6720:2): [True: 207, False: 0]
  ------------------
 6721|       |
 6722|    207|	if (n_arrays == 1) {
  ------------------
  |  Branch (6722:6): [True: 202, False: 5]
  ------------------
 6723|    202|		if (Z_TYPE(arrays[0]) != IS_ARRAY) {
  ------------------
  |  |  668|    202|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(arrays[0]) != IS_ARRAY) {
  ------------------
  |  |  613|    202|#define IS_ARRAY					7
  ------------------
  |  Branch (6723:7): [True: 0, False: 202]
  ------------------
 6724|      0|			zend_argument_type_error(2, "must be of type array, %s given", zend_zval_value_name(&arrays[0]));
 6725|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6725:4): [True: 0, False: 0]
  |  Branch (6725:4): [True: 0, False: 0]
  ------------------
 6726|      0|		}
 6727|    202|		const HashTable *input = Z_ARRVAL(arrays[0]);
  ------------------
  |  |  996|    202|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|    202|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 6728|    202|		maxlen = zend_hash_num_elements(input);
 6729|       |
 6730|       |		/* Short-circuit: if no callback and only one array, just return it. */
 6731|    202|		if (!ZEND_FCI_INITIALIZED(fci) || !maxlen) {
  ------------------
  |  |  342|    404|#define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
  ------------------
  |  Branch (6731:7): [True: 0, False: 202]
  |  Branch (6731:37): [True: 0, False: 202]
  ------------------
 6732|      0|			ZVAL_COPY(return_value, &arrays[0]);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6733|      0|			return;
 6734|      0|		}
 6735|       |
 6736|    202|		fci.retval = &result;
 6737|    202|		fci.param_count = 1;
 6738|       |
 6739|    202|		if (HT_IS_PACKED(input)) {
  ------------------
  |  |   62|    202|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    202|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    202|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 201, False: 1]
  |  |  ------------------
  ------------------
 6740|    201|			array_init_size(return_value, input->nNumUsed);
 6741|    201|			HashTable *output = Z_ARRVAL_P(return_value);
  ------------------
  |  |  997|    201|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    201|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    201|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6742|    201|			zend_hash_real_init_packed(output);
 6743|       |
 6744|    201|			uint32_t undefs = 0;
 6745|    201|			ZEND_HASH_FILL_PACKED(output) {
  ------------------
  |  | 1542|    201|#define ZEND_HASH_FILL_PACKED(ht) do { \
  |  | 1543|    201|		HashTable *__fill_ht = (ht); \
  |  | 1544|    201|		zval *__fill_val = __fill_ht->arPacked + __fill_ht->nNumUsed; \
  |  | 1545|    201|		uint32_t __fill_idx = __fill_ht->nNumUsed; \
  |  | 1546|    201|		ZEND_ASSERT(HT_IS_PACKED(__fill_ht));
  |  |  ------------------
  |  |  |  |  112|    201|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  ------------------
  |  Branch (6745:4): [True: 0, False: 201]
  |  Branch (6745:4): [True: 201, False: 0]
  ------------------
 6746|       |				/* Can't use ZEND_HASH_PACKED_FOREACH_VAL() because we need to also account for the UNDEF values
 6747|       |				 * so the keys in the output array will match those of the input array. */
 6748|    202|				for (zval *cur = input->arPacked, *end = input->arPacked + input->nNumUsed; cur != end; cur++) {
  ------------------
  |  Branch (6748:81): [True: 201, False: 1]
  ------------------
 6749|    201|					if (EXPECTED(!Z_ISUNDEF_P(cur))) {
  ------------------
  |  |  456|    201|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 201, False: 0]
  |  |  ------------------
  ------------------
 6750|    201|						fci.params = cur;
 6751|    201|						zend_result ret = zend_call_function(&fci, &fci_cache);
 6752|    201|						ZEND_ASSERT(ret == SUCCESS);
  ------------------
  |  |  112|    201|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6752:7): [True: 0, False: 201]
  |  Branch (6752:7): [True: 2, False: 199]
  ------------------
 6753|    201|						ZEND_IGNORE_VALUE(ret);
  ------------------
  |  |  142|      2|# define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
  ------------------
 6754|      2|						if (UNEXPECTED(Z_ISUNDEF(result))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 6755|      1|							ZEND_HASH_FILL_FINISH();
  ------------------
  |  | 1589|      1|#define ZEND_HASH_FILL_FINISH() do { \
  |  | 1590|      1|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  | 1591|      1|		__fill_ht->nNumUsed = __fill_idx; \
  |  | 1592|      1|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  | 1593|      1|		__fill_ht->nInternalPointer = 0; \
  |  | 1594|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1594:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6756|      1|							RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6756:8): [True: 0, False: 1]
  |  Branch (6756:8): [True: 1, False: 0]
  ------------------
 6757|      1|						}
 6758|      2|					} else {
 6759|      0|						ZVAL_UNDEF(&result);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6760|      0|						undefs++;
 6761|      0|					}
 6762|      1|					ZEND_HASH_FILL_ADD(&result);
  ------------------
  |  | 1584|      1|#define ZEND_HASH_FILL_ADD(_val) do { \
  |  | 1585|      1|		ZEND_HASH_FILL_SET(_val); \
  |  |  ------------------
  |  |  |  | 1559|      1|		ZVAL_COPY_VALUE(__fill_val, _val)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1586|      1|		ZEND_HASH_FILL_NEXT(); \
  |  |  ------------------
  |  |  |  | 1579|      1|#define ZEND_HASH_FILL_NEXT() do {\
  |  |  |  | 1580|      1|		__fill_val++; \
  |  |  |  | 1581|      1|		__fill_idx++; \
  |  |  |  | 1582|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1582:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1587|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1587:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6763|      1|				}
 6764|    201|			} ZEND_HASH_FILL_END();
  ------------------
  |  | 1597|      1|		ZEND_HASH_FILL_FINISH(); \
  |  |  ------------------
  |  |  |  | 1589|      1|#define ZEND_HASH_FILL_FINISH() do { \
  |  |  |  | 1590|      1|		__fill_ht->nNumOfElements += __fill_idx - __fill_ht->nNumUsed; \
  |  |  |  | 1591|      1|		__fill_ht->nNumUsed = __fill_idx; \
  |  |  |  | 1592|      1|		__fill_ht->nNextFreeElement = __fill_idx; \
  |  |  |  | 1593|      1|		__fill_ht->nInternalPointer = 0; \
  |  |  |  | 1594|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1594:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1598|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1598:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6765|      1|			output->nNumOfElements -= undefs;
 6766|      1|		} else {
 6767|      1|			zend_ulong num_key;
 6768|      1|			zend_string *str_key;
 6769|       |
 6770|      1|			array_init_size(return_value, maxlen);
 6771|      1|			HashTable *output = Z_ARRVAL_P(return_value);
  ------------------
  |  |  997|      1|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6772|      1|			zend_hash_real_init_mixed(output);
 6773|       |
 6774|     14|			ZEND_HASH_MAP_FOREACH_KEY_VAL(input, num_key, str_key, fci.params) {
  ------------------
  |  | 1404|      6|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|      7|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 6, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      6|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      6|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      6|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 6]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      6|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1405|      6|	_h = _p->h; \
  |  | 1406|      6|	_key = _p->key; \
  |  | 1407|      6|	_val = _z;
  ------------------
  |  Branch (6774:4): [True: 0, False: 1]
  |  Branch (6774:4): [True: 1, False: 0]
  ------------------
 6775|     14|				zend_result ret = zend_call_function(&fci, &fci_cache);
 6776|     14|				ZEND_ASSERT(ret == SUCCESS);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6776:5): [True: 0, False: 6]
  |  Branch (6776:5): [True: 6, False: 0]
  ------------------
 6777|     14|				ZEND_IGNORE_VALUE(ret);
  ------------------
  |  |  142|      6|# define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
  ------------------
 6778|      6|				if (UNEXPECTED(Z_ISUNDEF(result))) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 6779|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6779:6): [True: 0, False: 0]
  |  Branch (6779:6): [True: 0, False: 0]
  ------------------
 6780|      0|				}
 6781|      6|				if (str_key) {
  ------------------
  |  Branch (6781:9): [True: 6, False: 0]
  ------------------
 6782|      6|					_zend_hash_append(output, str_key, &result);
 6783|      6|				} else {
 6784|      0|					zend_hash_index_add_new(output, num_key, &result);
 6785|      0|				}
 6786|      6|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      6|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 6787|      1|		}
 6788|    202|	} else {
 6789|     13|		for (i = 0; i < n_arrays; i++) {
  ------------------
  |  Branch (6789:15): [True: 11, False: 2]
  ------------------
 6790|     11|			if (Z_TYPE(arrays[i]) != IS_ARRAY) {
  ------------------
  |  |  668|     11|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(arrays[i]) != IS_ARRAY) {
  ------------------
  |  |  613|     11|#define IS_ARRAY					7
  ------------------
  |  Branch (6790:8): [True: 3, False: 8]
  ------------------
 6791|      3|				zend_argument_type_error(i + 2, "must be of type array, %s given", zend_zval_value_name(&arrays[i]));
 6792|      3|				RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6792:5): [True: 0, False: 3]
  |  Branch (6792:5): [True: 3, False: 0]
  ------------------
 6793|      3|			}
 6794|      8|			if (zend_hash_num_elements(Z_ARRVAL(arrays[i])) > maxlen) {
  ------------------
  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (6794:8): [True: 3, False: 5]
  ------------------
 6795|      3|				maxlen = zend_hash_num_elements(Z_ARRVAL(arrays[i]));
  ------------------
  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 6796|      3|			}
 6797|      8|		}
 6798|       |
 6799|      2|		array_init_size(return_value, maxlen);
 6800|       |
 6801|      2|		if (!ZEND_FCI_INITIALIZED(fci)) {
  ------------------
  |  |  342|      2|#define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
  ------------------
  |  Branch (6801:7): [True: 2, False: 0]
  ------------------
 6802|      2|			uint32_t *array_pos = ecalloc(n_arrays, sizeof(HashPosition));
  ------------------
  |  |  157|      2|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6803|      2|			zval zv;
 6804|       |
 6805|       |			/* We iterate through all the arrays at once. */
 6806|      9|			for (k = 0; k < maxlen; k++) {
  ------------------
  |  Branch (6806:16): [True: 7, False: 2]
  ------------------
 6807|       |
 6808|       |				/* If no callback, the result will be an array, consisting of current
 6809|       |				 * entries from all arrays. */
 6810|      7|				array_init_size(&result, n_arrays);
 6811|       |
 6812|     36|				for (i = 0; i < n_arrays; i++) {
  ------------------
  |  Branch (6812:17): [True: 29, False: 7]
  ------------------
 6813|       |					/* If this array still has elements, add the current one to the
 6814|       |					 * parameter list, otherwise use null value. */
 6815|     29|					uint32_t pos = array_pos[i];
 6816|     29|					if (HT_IS_PACKED(Z_ARRVAL(arrays[i]))) {
  ------------------
  |  |   62|     29|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|     29|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|     29|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 29, False: 0]
  |  |  ------------------
  ------------------
 6817|     29|						while (1) {
  ------------------
  |  Branch (6817:14): [True: 29, Folded]
  ------------------
 6818|     29|							if (pos >= Z_ARRVAL(arrays[i])->nNumUsed) {
  ------------------
  |  |  996|     29|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|     29|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (6818:12): [True: 4, False: 25]
  ------------------
 6819|      4|								ZVAL_NULL(&zv);
  ------------------
  |  | 1059|      4|#define ZVAL_NULL(z) do {				\
  |  | 1060|      4|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      4|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 6820|      4|								break;
 6821|     25|							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arPacked[pos]) != IS_UNDEF) {
  ------------------
  |  |  668|     25|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arPacked[pos]) != IS_UNDEF) {
  ------------------
  |  |  606|     25|#define IS_UNDEF					0
  ------------------
  |  Branch (6821:19): [True: 25, False: 0]
  ------------------
 6822|     25|								ZVAL_COPY(&zv, &Z_ARRVAL(arrays[i])->arPacked[pos]);
  ------------------
  |  | 1425|     25|	do {												\
  |  | 1426|     25|		zval *_z1 = (z);								\
  |  | 1427|     25|		const zval *_z2 = (v);							\
  |  | 1428|     25|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     25|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     25|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|     25|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|     25|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     25|	do {												\
  |  |  |  | 1408|     25|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     25|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     25|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     25|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     25|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|     25|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|     25|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|     25|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 25]
  |  |  ------------------
  ------------------
 6823|     25|								array_pos[i] = pos + 1;
 6824|     25|								break;
 6825|     25|							}
 6826|      0|							pos++;
 6827|      0|						}
 6828|     29|					} else {
 6829|      0|						while (1) {
  ------------------
  |  Branch (6829:14): [True: 0, Folded]
  ------------------
 6830|      0|							if (pos >= Z_ARRVAL(arrays[i])->nNumUsed) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (6830:12): [True: 0, False: 0]
  ------------------
 6831|      0|								ZVAL_NULL(&zv);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6832|      0|								break;
 6833|      0|							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arData[pos].val) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arData[pos].val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (6833:19): [True: 0, False: 0]
  ------------------
 6834|      0|								ZVAL_COPY(&zv, &Z_ARRVAL(arrays[i])->arData[pos].val);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6835|      0|								array_pos[i] = pos + 1;
 6836|      0|								break;
 6837|      0|							}
 6838|      0|							pos++;
 6839|      0|						}
 6840|      0|					}
 6841|     29|					zend_hash_next_index_insert_new(Z_ARRVAL(result), &zv);
  ------------------
  |  |  996|     29|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|     29|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 6842|     29|				}
 6843|       |
 6844|      7|				zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &result);
  ------------------
  |  |  997|      7|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      7|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6845|      7|			}
 6846|       |
 6847|      2|			efree(array_pos);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6848|      2|		} else {
 6849|      0|			zval *params = (zval *)safe_emalloc(n_arrays, sizeof(zval), 0);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6850|       |
 6851|       |			/* Remember next starting point in the array, initialize those as zeros. */
 6852|      0|			for (i = 0; i < n_arrays; i++) {
  ------------------
  |  Branch (6852:16): [True: 0, False: 0]
  ------------------
 6853|      0|				Z_EXTRA(params[i]) = 0;
  ------------------
  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
 6854|      0|			}
 6855|       |
 6856|      0|			fci.retval = &result;
 6857|      0|			fci.param_count = n_arrays;
 6858|      0|			fci.params = params;
 6859|       |
 6860|       |			/* We iterate through all the arrays at once. */
 6861|      0|			for (k = 0; k < maxlen; k++) {
  ------------------
  |  Branch (6861:16): [True: 0, False: 0]
  ------------------
 6862|      0|				for (i = 0; i < n_arrays; i++) {
  ------------------
  |  Branch (6862:17): [True: 0, False: 0]
  ------------------
 6863|       |					/* If this array still has elements, add the current one to the
 6864|       |					 * parameter list, otherwise use null value. */
 6865|      0|					uint32_t pos = Z_EXTRA(params[i]);
  ------------------
  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
 6866|      0|					if (HT_IS_PACKED(Z_ARRVAL(arrays[i]))) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6867|      0|						while (1) {
  ------------------
  |  Branch (6867:14): [True: 0, Folded]
  ------------------
 6868|      0|							if (pos >= Z_ARRVAL(arrays[i])->nNumUsed) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (6868:12): [True: 0, False: 0]
  ------------------
 6869|      0|								ZVAL_NULL(&params[i]);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6870|      0|								break;
 6871|      0|							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arPacked[pos]) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arPacked[pos]) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (6871:19): [True: 0, False: 0]
  ------------------
 6872|      0|								ZVAL_COPY_VALUE(&params[i], &Z_ARRVAL(arrays[i])->arPacked[pos]);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6873|      0|								Z_EXTRA(params[i]) = pos + 1;
  ------------------
  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
 6874|      0|								break;
 6875|      0|							}
 6876|      0|							pos++;
 6877|      0|						}
 6878|      0|					} else {
 6879|      0|						while (1) {
  ------------------
  |  Branch (6879:14): [True: 0, Folded]
  ------------------
 6880|      0|							if (pos >= Z_ARRVAL(arrays[i])->nNumUsed) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (6880:12): [True: 0, False: 0]
  ------------------
 6881|      0|								ZVAL_NULL(&params[i]);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6882|      0|								break;
 6883|      0|							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arData[pos].val) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              							} else if (Z_TYPE(Z_ARRVAL(arrays[i])->arData[pos].val) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (6883:19): [True: 0, False: 0]
  ------------------
 6884|      0|								ZVAL_COPY_VALUE(&params[i], &Z_ARRVAL(arrays[i])->arData[pos].val);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6885|      0|								Z_EXTRA(params[i]) = pos + 1;
  ------------------
  |  |  704|      0|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
 6886|      0|								break;
 6887|      0|							}
 6888|      0|							pos++;
 6889|      0|						}
 6890|      0|					}
 6891|      0|				}
 6892|       |
 6893|      0|				zend_result ret = zend_call_function(&fci, &fci_cache);
 6894|      0|				ZEND_ASSERT(ret == SUCCESS);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (6894:5): [True: 0, False: 0]
  |  Branch (6894:5): [True: 0, False: 0]
  ------------------
 6895|      0|				ZEND_IGNORE_VALUE(ret);
  ------------------
  |  |  142|      0|# define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
  ------------------
 6896|       |
 6897|      0|				if (Z_TYPE(result) == IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(result) == IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (6897:9): [True: 0, False: 0]
  ------------------
 6898|      0|					efree(params);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6899|      0|					RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6899:6): [True: 0, False: 0]
  |  Branch (6899:6): [True: 0, False: 0]
  ------------------
 6900|      0|				}
 6901|       |
 6902|      0|				zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &result);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6903|      0|			}
 6904|       |
 6905|      0|			efree(params);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6906|      0|		}
 6907|      2|	}
 6908|    207|}
array.c:php_array_init_globals:
   65|      2|{
   66|      2|	memset(array_globals, 0, sizeof(zend_array_globals));
   67|      2|}
array.c:php_array_natural_compare:
  111|     41|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|     41|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|     41|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|     41|	int _result = (result); \
  |  |  100|     41|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|     41|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 41, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|     41|		return _result; \
  |  |  102|     41|	} \
  |  |  103|     41|	return stable_sort_fallback((a), (b)); \
  |  |  104|     41|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|     41|	} \
array.c:php_array_natural_compare_unstable_i:
  344|     41|{
  345|       |	return php_array_natural_general_compare(a, b, false);
  346|     41|}
array.c:php_array_natural_general_compare:
  330|     41|{
  331|     41|	zend_string *tmp_str1, *tmp_str2;
  332|     41|	zend_string *str1 = zval_get_tmp_string(&f->val, &tmp_str1);
  333|     41|	zend_string *str2 = zval_get_tmp_string(&s->val, &tmp_str2);
  334|       |
  335|     41|	int result = strnatcmp_ex(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2), fold_case);
  ------------------
  |  |   67|     41|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	int result = strnatcmp_ex(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2), fold_case);
  ------------------
  |  |   68|     41|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	int result = strnatcmp_ex(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2), fold_case);
  ------------------
  |  |   67|     41|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	int result = strnatcmp_ex(ZSTR_VAL(str1), ZSTR_LEN(str1), ZSTR_VAL(str2), ZSTR_LEN(str2), fold_case);
  ------------------
  |  |   68|     41|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  336|       |
  337|     41|	zend_tmp_string_release(tmp_str1);
  338|     41|	zend_tmp_string_release(tmp_str2);
  339|     41|	return result;
  340|     41|}
array.c:php_sort:
  682|     35|static zend_always_inline void php_sort(INTERNAL_FUNCTION_PARAMETERS, get_compare_function get_cmp, bool renumber) {
  683|     35|	HashTable *array;
  684|     35|	zend_long sort_type = PHP_SORT_REGULAR;
  ------------------
  |  |   48|     35|#define PHP_SORT_REGULAR            0
  ------------------
  685|     35|	bucket_compare_func_t cmp;
  686|       |
  687|    105|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     35|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     35|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     35|		const int _flags = (flags); \
  |  |  |  | 1599|     35|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     35|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     35|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     35|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     35|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     35|		uint32_t _i = 0; \
  |  |  |  | 1603|     35|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     35|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     35|		char *_error = NULL; \
  |  |  |  | 1606|     35|		bool _dummy = 0; \
  |  |  |  | 1607|     35|		bool _optional = 0; \
  |  |  |  | 1608|     35|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     35|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     35|		((void)_i); \
  |  |  |  | 1610|     35|		((void)_real_arg); \
  |  |  |  | 1611|     35|		((void)_arg); \
  |  |  |  | 1612|     35|		((void)_expected_type); \
  |  |  |  | 1613|     35|		((void)_error); \
  |  |  |  | 1614|     35|		((void)_optional); \
  |  |  |  | 1615|     35|		((void)_dummy); \
  |  |  |  | 1616|     35|		\
  |  |  |  | 1617|     35|		do { \
  |  |  |  | 1618|     35|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     70|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     35|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     35|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     35|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     35|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     35|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|    140|		Z_PARAM_ARRAY_HT_EX(array, 0, 1)
  ------------------
  |  | 1858|     35|	Z_PARAM_ARRAY_HT_EX2(dest, check_null, separate, separate)
  |  |  ------------------
  |  |  |  | 1850|     35|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     35|	++_i; \
  |  |  |  |  |  | 1654|     35|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     35|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     35|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     35|	_real_arg++; \
  |  |  |  |  |  | 1660|     35|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     35|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [True: 35, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|     35|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|     35|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 35, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|     35|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|     35|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|     35|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|     35|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|     35|		} \
  |  |  |  |  |  | 1665|     35|	} \
  |  |  |  |  |  | 1666|     35|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [True: 35, Folded]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|     35|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|     35|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|     35|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|     35|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|     35|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|     35|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|     35|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|     35|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 35, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|     35|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|     35|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|     35|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|     35|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|     35|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|     35|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|     35|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 20, False: 15]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|     20|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|     20|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|     20|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|     20|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|     20|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|     20|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|     20|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|     20|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|     20|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|     20|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|     20|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|     20|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|     20|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|     20|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|     20|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 20]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|     20|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|     20|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|     20|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|     35|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 35]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|     35|		}												\
  |  |  |  |  |  |  |  | 1551|     35|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 35]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|     35|	}
  |  |  |  |  ------------------
  |  |  |  | 1851|     35|		if (UNEXPECTED(!zend_parse_arg_array_ht(_arg, &dest, check_null, 0, separate))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1852|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1852:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1853|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1854|      0|			break; \
  |  |  |  | 1855|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (688:3): [True: 35, False: 0]
  |  Branch (688:3): [True: 0, False: 0]
  |  Branch (688:3): [True: 35, False: 0]
  |  Branch (688:3): [True: 0, False: 0]
  |  Branch (688:3): [True: 35, False: 0]
  |  Branch (688:3): [True: 0, False: 0]
  |  Branch (688:3): [True: 0, False: 35]
  |  Branch (688:3): [True: 35, False: 0]
  |  Branch (688:3): [True: 0, False: 35]
  |  Branch (688:3): [True: 35, False: 0]
  ------------------
  689|     35|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     35|	_optional = 1;
  ------------------
  690|    130|		Z_PARAM_LONG(sort_type)
  ------------------
  |  | 1905|     35|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|     35|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     35|	++_i; \
  |  |  |  |  |  | 1654|     35|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     35|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     35|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     35|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     35|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 5, False: 30]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     35|	} \
  |  |  |  |  |  | 1659|     35|	_real_arg++; \
  |  |  |  |  |  | 1660|     30|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     30|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 30]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     30|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 30]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|     30|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 30]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (690:3): [True: 35, False: 0]
  |  Branch (690:3): [True: 0, False: 0]
  |  Branch (690:3): [True: 0, False: 35]
  |  Branch (690:3): [True: 35, False: 0]
  |  Branch (690:3): [True: 35, False: 0]
  |  Branch (690:3): [True: 0, False: 0]
  |  Branch (690:3): [True: 35, False: 0]
  |  Branch (690:3): [True: 0, False: 0]
  |  Branch (690:3): [True: 0, False: 0]
  |  Branch (690:3): [True: 0, False: 0]
  ------------------
  691|     35|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     30|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     30|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     30|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     30|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  |  | 1641|     35|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     35|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     35|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (691:2): [True: 30, False: 0]
  |  Branch (691:2): [True: 0, False: 0]
  |  Branch (691:2): [True: 30, False: 0]
  |  Branch (691:2): [True: 0, False: 0]
  ------------------
  692|       |
  693|     35|	cmp = get_cmp(sort_type);
  694|       |
  695|     35|	zend_array_sort(array, cmp, renumber);
  696|       |
  697|     35|	RETURN_TRUE;
  ------------------
  |  | 1070|     35|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|     35|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|     35|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|     35|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     35|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     35|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|     35|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|     35|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 35]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  698|     35|}
array.c:php_get_data_compare_func:
  435|     30|{
  436|     30|	switch (sort_type & ~PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|     30|#define PHP_SORT_FLAG_CASE          8
  ------------------
  437|      1|		case PHP_SORT_NUMERIC:
  ------------------
  |  |   49|      1|#define PHP_SORT_NUMERIC            1
  ------------------
  |  Branch (437:3): [True: 1, False: 29]
  ------------------
  438|      1|			return php_array_data_compare_numeric;
  439|       |
  440|     10|		case PHP_SORT_STRING:
  ------------------
  |  |   50|     10|#define PHP_SORT_STRING             2
  ------------------
  |  Branch (440:3): [True: 10, False: 20]
  ------------------
  441|     10|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|     10|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (441:8): [True: 7, False: 3]
  ------------------
  442|      7|				return php_array_data_compare_string_case;
  443|      7|			} else {
  444|      3|				return php_array_data_compare_string;
  445|      3|			}
  446|       |
  447|      5|		case PHP_SORT_NATURAL:
  ------------------
  |  |   54|      5|#define PHP_SORT_NATURAL            6
  ------------------
  |  Branch (447:3): [True: 5, False: 25]
  ------------------
  448|      5|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      5|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (448:8): [True: 0, False: 5]
  ------------------
  449|      0|				return php_array_natural_case_compare;
  450|      5|			} else {
  451|      5|				return php_array_natural_compare;
  452|      5|			}
  453|       |
  454|      1|		case PHP_SORT_LOCALE_STRING:
  ------------------
  |  |   53|      1|#define PHP_SORT_LOCALE_STRING      5
  ------------------
  |  Branch (454:3): [True: 1, False: 29]
  ------------------
  455|      1|			return php_array_data_compare_string_locale;
  456|       |
  457|      5|		case PHP_SORT_REGULAR:
  ------------------
  |  |   48|      5|#define PHP_SORT_REGULAR            0
  ------------------
  |  Branch (457:3): [True: 5, False: 25]
  ------------------
  458|     13|		default:
  ------------------
  |  Branch (458:3): [True: 8, False: 22]
  ------------------
  459|     13|			return php_array_data_compare;
  460|     30|	}
  461|      0|	return NULL;
  462|     30|}
array.c:php_array_data_compare_numeric:
  111|      5|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|      5|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|      5|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|      5|	int _result = (result); \
  |  |  100|      5|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      3|		return _result; \
  |  |  102|      3|	} \
  |  |  103|      5|	return stable_sort_fallback((a), (b)); \
  |  |  104|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|      5|	} \
array.c:php_array_data_compare_numeric_unstable_i:
  312|      5|{
  313|      5|	return numeric_compare_function(&f->val, &s->val);
  314|      5|}
array.c:php_array_data_compare_string_case:
  111|     55|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|     55|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|     55|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|     55|	int _result = (result); \
  |  |  100|     55|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|     55|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 52, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|     52|		return _result; \
  |  |  102|     52|	} \
  |  |  103|     55|	return stable_sort_fallback((a), (b)); \
  |  |  104|     55|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|     55|	} \
array.c:php_array_data_compare_string_case_unstable_i:
  318|     55|{
  319|     55|	return string_case_compare_function(&f->val, &s->val);
  320|     55|}
array.c:php_array_data_compare_string:
  111|     11|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|     11|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|     11|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|     11|	int _result = (result); \
  |  |  100|     11|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|     11|		return _result; \
  |  |  102|     11|	} \
  |  |  103|     11|	return stable_sort_fallback((a), (b)); \
  |  |  104|     11|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|     11|	} \
array.c:php_array_data_compare_string_unstable_i:
  324|     13|{
  325|     13|	return string_compare_function(&f->val, &s->val);
  326|     13|}
array.c:php_array_data_compare_string_locale:
  111|     37|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|     37|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|     37|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|     37|	int _result = (result); \
  |  |  100|     37|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|     37|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 35, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|     35|		return _result; \
  |  |  102|     35|	} \
  |  |  103|     37|	return stable_sort_fallback((a), (b)); \
  |  |  104|     37|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|     37|	} \
array.c:php_array_data_compare_string_locale_unstable_i:
  356|     37|{
  357|     37|	return string_locale_compare_function(&f->val, &s->val);
  358|     37|}
array.c:php_array_data_compare:
  111|    102|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|    102|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|    102|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|    102|	int _result = (result); \
  |  |  100|    102|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|    102|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 93, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|     93|		return _result; \
  |  |  102|     93|	} \
  |  |  103|    102|	return stable_sort_fallback((a), (b)); \
  |  |  104|    102|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|    102|	} \
array.c:php_array_data_compare_unstable_i:
  286|    114|{
  287|    114|	int result = zend_compare(&f->val, &s->val);
  288|       |	/* Special enums handling for array_unique. We don't want to add this logic to zend_compare as
  289|       |	 * that would be observable via comparison operators. */
  290|    114|	zval *rhs = &s->val;
  291|    114|	ZVAL_DEREF(rhs);
  ------------------
  |  | 1474|    114|#define ZVAL_DEREF(z) do {								\
  |  | 1475|    114|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|    114|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 3, False: 111]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      3|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      3|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      3|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      3|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      3|		}												\
  |  | 1478|    114|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 114]
  |  |  ------------------
  ------------------
  292|    114|	if (UNEXPECTED(Z_TYPE_P(rhs) == IS_OBJECT)
  ------------------
  |  |  457|    228|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 114]
  |  |  ------------------
  ------------------
  293|      0|	 && result == ZEND_UNCOMPARABLE
  ------------------
  |  |  454|    114|#define ZEND_UNCOMPARABLE 1
  ------------------
  |  Branch (293:6): [True: 0, False: 0]
  ------------------
  294|      0|	 && (Z_OBJCE_P(rhs)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	 && (Z_OBJCE_P(rhs)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|      0|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (294:6): [True: 0, False: 0]
  ------------------
  295|      0|		zval *lhs = &f->val;
  296|      0|		ZVAL_DEREF(lhs);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  297|      0|		if (Z_TYPE_P(lhs) == IS_OBJECT && (Z_OBJCE_P(lhs)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(lhs) == IS_OBJECT && (Z_OBJCE_P(lhs)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
              		if (Z_TYPE_P(lhs) == IS_OBJECT && (Z_OBJCE_P(lhs)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(lhs) == IS_OBJECT && (Z_OBJCE_P(lhs)->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|      0|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (297:7): [True: 0, False: 0]
  |  Branch (297:37): [True: 0, False: 0]
  ------------------
  298|       |			// Order doesn't matter, we just need to group the same enum values
  299|      0|			uintptr_t lhs_uintptr = (uintptr_t)Z_OBJ_P(lhs);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  300|      0|			uintptr_t rhs_uintptr = (uintptr_t)Z_OBJ_P(rhs);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  301|      0|			return lhs_uintptr == rhs_uintptr ? 0 : (lhs_uintptr < rhs_uintptr ? -1 : 1);
  ------------------
  |  Branch (301:11): [True: 0, False: 0]
  |  Branch (301:45): [True: 0, False: 0]
  ------------------
  302|      0|		} else {
  303|       |			// Shift enums to the end of the array
  304|      0|			return -1;
  305|      0|		}
  306|      0|	}
  307|    114|	return result;
  308|    114|}
array.c:php_get_data_reverse_compare_func:
  465|      1|{
  466|      1|	switch (sort_type & ~PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      1|#define PHP_SORT_FLAG_CASE          8
  ------------------
  467|      0|		case PHP_SORT_NUMERIC:
  ------------------
  |  |   49|      0|#define PHP_SORT_NUMERIC            1
  ------------------
  |  Branch (467:3): [True: 0, False: 1]
  ------------------
  468|      0|			return php_array_reverse_data_compare_numeric;
  469|       |
  470|      0|		case PHP_SORT_STRING:
  ------------------
  |  |   50|      0|#define PHP_SORT_STRING             2
  ------------------
  |  Branch (470:3): [True: 0, False: 1]
  ------------------
  471|      0|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      0|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (471:8): [True: 0, False: 0]
  ------------------
  472|      0|				return php_array_reverse_data_compare_string_case;
  473|      0|			} else {
  474|      0|				return php_array_reverse_data_compare_string;
  475|      0|			}
  476|       |
  477|      0|		case PHP_SORT_NATURAL:
  ------------------
  |  |   54|      0|#define PHP_SORT_NATURAL            6
  ------------------
  |  Branch (477:3): [True: 0, False: 1]
  ------------------
  478|      0|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      0|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (478:8): [True: 0, False: 0]
  ------------------
  479|      0|				return php_array_reverse_natural_case_compare;
  480|      0|			} else {
  481|      0|				return php_array_reverse_natural_compare;
  482|      0|			}
  483|       |
  484|      0|		case PHP_SORT_LOCALE_STRING:
  ------------------
  |  |   53|      0|#define PHP_SORT_LOCALE_STRING      5
  ------------------
  |  Branch (484:3): [True: 0, False: 1]
  ------------------
  485|      0|			return php_array_reverse_data_compare_string_locale;
  486|       |
  487|      1|		case PHP_SORT_REGULAR:
  ------------------
  |  |   48|      1|#define PHP_SORT_REGULAR            0
  ------------------
  |  Branch (487:3): [True: 1, False: 0]
  ------------------
  488|      1|		default:
  ------------------
  |  Branch (488:3): [True: 0, False: 1]
  ------------------
  489|      1|			return php_array_reverse_data_compare;
  490|      1|	}
  491|      0|	return NULL;
  492|      1|}
array.c:php_array_data_compare_string_unstable:
  108|      2|	static zend_never_inline int php_array_##name##_unstable(Bucket *a, Bucket *b) { \
  109|      2|		return php_array_##name##_unstable_i(a, b); \
  110|      2|	} \
array.c:php_array_reverse_data_compare:
  117|     11|	static zend_never_inline int php_array_reverse_##name(Bucket *a, Bucket *b) { \
  118|     11|		RETURN_STABLE_SORT(a, b, php_array_reverse_##name##_unstable(a, b)); \
  ------------------
  |  |   98|     11|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|     11|	int _result = (result); \
  |  |  100|     11|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|     11|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|     11|		return _result; \
  |  |  102|     11|	} \
  |  |  103|     11|	return stable_sort_fallback((a), (b)); \
  |  |  104|     11|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  119|     11|	} \
array.c:php_array_reverse_data_compare_unstable:
  114|     11|	static zend_never_inline int php_array_reverse_##name##_unstable(Bucket *a, Bucket *b) { \
  115|     11|		return php_array_##name##_unstable(a, b) * -1; \
  116|     11|	} \
array.c:php_array_data_compare_unstable:
  108|     12|	static zend_never_inline int php_array_##name##_unstable(Bucket *a, Bucket *b) { \
  109|     12|		return php_array_##name##_unstable_i(a, b); \
  110|     12|	} \
array.c:php_array_key_compare_numeric_unstable_i:
  146|      5|{
  147|      5|	if (f->key == NULL && s->key == NULL) {
  ------------------
  |  Branch (147:6): [True: 4, False: 1]
  |  Branch (147:24): [True: 3, False: 1]
  ------------------
  148|      3|		return (zend_long)f->h > (zend_long)s->h ? 1 : -1;
  ------------------
  |  Branch (148:10): [True: 0, False: 3]
  ------------------
  149|      3|	} else {
  150|      2|		double d1, d2;
  151|      2|		if (f->key) {
  ------------------
  |  Branch (151:7): [True: 1, False: 1]
  ------------------
  152|      1|			d1 = zend_strtod(f->key->val, NULL);
  153|      1|		} else {
  154|      1|			d1 = (double)(zend_long)f->h;
  155|      1|		}
  156|      2|		if (s->key) {
  ------------------
  |  Branch (156:7): [True: 1, False: 1]
  ------------------
  157|      1|			d2 = zend_strtod(s->key->val, NULL);
  158|      1|		} else {
  159|      1|			d2 = (double)(zend_long)s->h;
  160|      1|		}
  161|      2|		return ZEND_THREEWAY_COMPARE(d1, d2);
  ------------------
  |  |  552|      2|#define ZEND_THREEWAY_COMPARE(a, b) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1))
  |  |  ------------------
  |  |  |  Branch (552:38): [True: 1, False: 1]
  |  |  |  Branch (552:56): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  162|      2|	}
  163|      5|}
array.c:php_array_key_compare_string_unstable_i:
  192|      3|{
  193|      3|	const char *s1, *s2;
  194|      3|	size_t l1, l2;
  195|      3|	char buf1[MAX_LENGTH_OF_LONG + 1];
  196|      3|	char buf2[MAX_LENGTH_OF_LONG + 1];
  197|       |
  198|      3|	if (f->key) {
  ------------------
  |  Branch (198:6): [True: 0, False: 3]
  ------------------
  199|      0|		s1 = f->key->val;
  200|      0|		l1 = f->key->len;
  201|      3|	} else {
  202|      3|		s1 = zend_print_long_to_buf(buf1 + sizeof(buf1) - 1, f->h);
  203|      3|		l1 = buf1 + sizeof(buf1) - 1 - s1;
  204|      3|	}
  205|      3|	if (s->key) {
  ------------------
  |  Branch (205:6): [True: 0, False: 3]
  ------------------
  206|      0|		s2 = s->key->val;
  207|      0|		l2 = s->key->len;
  208|      3|	} else {
  209|      3|		s2 = zend_print_long_to_buf(buf2 + sizeof(buf2) - 1, s->h);
  210|      3|		l2 = buf2 + sizeof(buf2) - 1 - s2;
  211|      3|	}
  212|      3|	return zend_binary_strcmp(s1, l1, s2, l2);
  213|      3|}
array.c:php_array_key_compare_unstable_i:
  122|      1|{
  123|      1|	zval first;
  124|      1|	zval second;
  125|       |
  126|      1|	if (f->key == NULL && s->key == NULL) {
  ------------------
  |  Branch (126:6): [True: 1, False: 0]
  |  Branch (126:24): [True: 1, False: 0]
  ------------------
  127|      1|		return (zend_long)f->h > (zend_long)s->h ? 1 : -1;
  ------------------
  |  Branch (127:10): [True: 0, False: 1]
  ------------------
  128|      1|	} else if (f->key && s->key) {
  ------------------
  |  Branch (128:13): [True: 0, False: 0]
  |  Branch (128:23): [True: 0, False: 0]
  ------------------
  129|      0|		return zendi_smart_strcmp(f->key, s->key);
  130|      0|	}
  131|      0|	if (f->key) {
  ------------------
  |  Branch (131:6): [True: 0, False: 0]
  ------------------
  132|      0|		ZVAL_STR(&first, f->key);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  133|      0|	} else {
  134|      0|		ZVAL_LONG(&first, f->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  135|      0|	}
  136|      0|	if (s->key) {
  ------------------
  |  Branch (136:6): [True: 0, False: 0]
  ------------------
  137|      0|		ZVAL_STR(&second, s->key);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  138|      0|	} else {
  139|      0|		ZVAL_LONG(&second, s->h);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  140|      0|	}
  141|      0|	return zend_compare(&first, &second);
  142|      1|}
array.c:php_get_key_compare_func:
  375|      4|{
  376|      4|	switch (sort_type & ~PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      4|#define PHP_SORT_FLAG_CASE          8
  ------------------
  377|      2|		case PHP_SORT_NUMERIC:
  ------------------
  |  |   49|      2|#define PHP_SORT_NUMERIC            1
  ------------------
  |  Branch (377:3): [True: 2, False: 2]
  ------------------
  378|      2|			return php_array_key_compare_numeric;
  379|       |
  380|      1|		case PHP_SORT_STRING:
  ------------------
  |  |   50|      1|#define PHP_SORT_STRING             2
  ------------------
  |  Branch (380:3): [True: 1, False: 3]
  ------------------
  381|      1|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      1|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (381:8): [True: 0, False: 1]
  ------------------
  382|      0|				return php_array_key_compare_string_case;
  383|      1|			} else {
  384|      1|				return php_array_key_compare_string;
  385|      1|			}
  386|       |
  387|      0|		case PHP_SORT_NATURAL:
  ------------------
  |  |   54|      0|#define PHP_SORT_NATURAL            6
  ------------------
  |  Branch (387:3): [True: 0, False: 4]
  ------------------
  388|      0|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      0|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (388:8): [True: 0, False: 0]
  ------------------
  389|      0|				return php_array_key_compare_string_natural_case;
  390|      0|			} else {
  391|      0|				return php_array_key_compare_string_natural;
  392|      0|			}
  393|       |
  394|      0|		case PHP_SORT_LOCALE_STRING:
  ------------------
  |  |   53|      0|#define PHP_SORT_LOCALE_STRING      5
  ------------------
  |  Branch (394:3): [True: 0, False: 4]
  ------------------
  395|      0|			return php_array_key_compare_string_locale;
  396|       |
  397|      1|		case PHP_SORT_REGULAR:
  ------------------
  |  |   48|      1|#define PHP_SORT_REGULAR            0
  ------------------
  |  Branch (397:3): [True: 1, False: 3]
  ------------------
  398|      1|		default:
  ------------------
  |  Branch (398:3): [True: 0, False: 4]
  ------------------
  399|      1|			return php_array_key_compare;
  400|      4|	}
  401|      0|	return NULL;
  402|      4|}
array.c:php_array_key_compare_numeric:
  111|      5|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|      5|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|      5|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|      5|	int _result = (result); \
  |  |  100|      5|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|      5|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 4, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      4|		return _result; \
  |  |  102|      4|	} \
  |  |  103|      5|	return stable_sort_fallback((a), (b)); \
  |  |  104|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|      5|	} \
array.c:php_array_key_compare_string:
  111|      3|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|      3|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|      3|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|      3|	int _result = (result); \
  |  |  100|      3|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      3|		return _result; \
  |  |  102|      3|	} \
  |  |  103|      3|	return stable_sort_fallback((a), (b)); \
  |  |  104|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|      3|	} \
array.c:php_array_key_compare:
  111|      1|	static zend_never_inline int php_array_##name(Bucket *a, Bucket *b) { \
  112|      1|		RETURN_STABLE_SORT(a, b, php_array_##name##_unstable_i(a, b)); \
  ------------------
  |  |   98|      1|#define RETURN_STABLE_SORT(a, b, result) do { \
  |  |   99|      1|	int _result = (result); \
  |  |  100|      1|	if (EXPECTED(_result)) { \
  |  |  ------------------
  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      1|		return _result; \
  |  |  102|      1|	} \
  |  |  103|      1|	return stable_sort_fallback((a), (b)); \
  |  |  104|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (104:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  113|      1|	} \
array.c:get_ht_for_iap:
  914|     30|static inline HashTable *get_ht_for_iap(zval *zv, bool separate) {
  915|     30|	if (EXPECTED(Z_TYPE_P(zv) == IS_ARRAY)) {
  ------------------
  |  |  456|     30|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 20, False: 10]
  |  |  ------------------
  ------------------
  916|     20|		return Z_ARRVAL_P(zv);
  ------------------
  |  |  997|     20|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     20|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     20|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  917|     20|	}
  918|       |
  919|     10|	ZEND_ASSERT(Z_TYPE_P(zv) == IS_OBJECT);
  ------------------
  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (919:2): [True: 0, False: 10]
  |  Branch (919:2): [True: 10, False: 0]
  ------------------
  920|     10|	php_error_docref(NULL, E_DEPRECATED,
  ------------------
  |  |   36|     10|#define E_DEPRECATED		(1<<13L)
  ------------------
  921|     10|		"Calling %s() on an object is deprecated", get_active_function_name());
  922|       |
  923|     10|	zend_object *zobj = Z_OBJ_P(zv);
  ------------------
  |  | 1000|     10|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     10|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  924|     10|	if (separate && zobj->properties && UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (924:6): [True: 6, False: 4]
  |  Branch (924:18): [True: 6, False: 0]
  ------------------
  925|      2|		if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
  ------------------
  |  |  456|      2|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  926|      2|			GC_DELREF(zobj->properties);
  ------------------
  |  |  719|      2|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  927|      2|		}
  928|      2|		zobj->properties = zend_array_dup(zobj->properties);
  929|      2|	}
  930|     10|	return zobj->handlers->get_properties(zobj);
  931|     10|}
array.c:php_array_iter_return_current:
  964|     18|{
  965|     18|	zval *entry = php_array_iter_seek_current(array, forward_direction);
  966|     18|	if (EXPECTED(entry)) {
  ------------------
  |  |  456|     18|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 15, False: 3]
  |  |  ------------------
  ------------------
  967|     15|		RETURN_COPY_DEREF(entry);
  ------------------
  |  | 1067|     15|#define RETURN_COPY_DEREF(zv)			do { RETVAL_COPY_DEREF(zv); return; } while (0)
  |  |  ------------------
  |  |  |  | 1041|     15|#define RETVAL_COPY_DEREF(zv)			ZVAL_COPY_DEREF(return_value, zv)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1508|     15|#define ZVAL_COPY_DEREF(z, v) do {						\
  |  |  |  |  |  | 1509|     15|		zval *_z3 = (v);								\
  |  |  |  |  |  | 1510|     15|		if (Z_OPT_REFCOUNTED_P(_z3)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|     15|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|     15|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|     15|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|     15|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 6, False: 9]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1511|      6|			if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) {		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1512|      0|				_z3 = Z_REFVAL_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1513|      0|				if (Z_OPT_REFCOUNTED_P(_z3)) {			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  955|      0|#define Z_OPT_REFCOUNTED_P(zval_p)	Z_OPT_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  954|      0|#define Z_OPT_REFCOUNTED(zval)		Z_TYPE_INFO_REFCOUNTED(Z_TYPE_INFO(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1514|      0|					Z_ADDREF_P(_z3);					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1515|      0|				}										\
  |  |  |  |  |  | 1516|      6|			} else {									\
  |  |  |  |  |  | 1517|      6|				Z_ADDREF_P(_z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1277|      6|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1518|      6|			}											\
  |  |  |  |  |  | 1519|      6|		}												\
  |  |  |  |  |  | 1520|     15|		ZVAL_COPY_VALUE(z, _z3);						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|     15|	do {												\
  |  |  |  |  |  |  |  | 1417|     15|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|     15|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|     15|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|     15|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|     15|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|     15|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|     15|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|     15|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|     15|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|     15|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|     15|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 15]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|     15|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1521|     15|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1521:11): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1067:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  968|     15|	} else {
  969|      3|		RETURN_FALSE;
  ------------------
  |  | 1069|      3|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      3|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  970|      3|	}
  971|     18|}
array.c:php_array_iter_seek_current:
  934|     26|{
  935|     26|	zval *entry;
  936|       |
  937|     26|	while (true) {
  ------------------
  |  Branch (937:9): [True: 26, Folded]
  ------------------
  938|     26|		if ((entry = zend_hash_get_current_data(array)) == NULL) {
  ------------------
  |  Branch (938:7): [True: 3, False: 23]
  ------------------
  939|      3|			return NULL;
  940|      3|		}
  941|       |
  942|     23|		ZVAL_DEINDIRECT(entry);
  ------------------
  |  | 1480|     23|#define ZVAL_DEINDIRECT(z) do {							\
  |  | 1481|     23|		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (Z_TYPE_P(z) == IS_INDIRECT) {				\
  |  |  ------------------
  |  |  |  |  629|     23|#define IS_INDIRECT             	12
  |  |  ------------------
  |  |  |  Branch (1481:7): [True: 0, False: 23]
  |  |  ------------------
  |  | 1482|      0|			(z) = Z_INDIRECT_P(z);						\
  |  |  ------------------
  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1483|      0|		}												\
  |  | 1484|     23|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1484:11): [Folded, False: 23]
  |  |  ------------------
  ------------------
  943|       |
  944|       |		/* Possible with an uninitialized typed property */
  945|     23|		if (UNEXPECTED(Z_TYPE_P(entry) == IS_UNDEF)) {
  ------------------
  |  |  457|     23|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  ------------------
  ------------------
  946|      0|			zend_result result;
  947|      0|			if (forward_direction) {
  ------------------
  |  Branch (947:8): [True: 0, False: 0]
  ------------------
  948|      0|				result = zend_hash_move_forward(array);
  949|      0|			} else {
  950|      0|				result = zend_hash_move_backwards(array);
  951|      0|			}
  952|      0|			if (result != SUCCESS) {
  ------------------
  |  Branch (952:8): [True: 0, False: 0]
  ------------------
  953|      0|				return NULL;
  954|      0|			}
  955|     23|		} else {
  956|     23|			break;
  957|     23|		}
  958|     23|	}
  959|       |
  960|     23|	return entry;
  961|     26|}
array.c:php_array_walk:
 1361|      8|{
 1362|      8|	zval args[3],		/* Arguments to userland function */
 1363|      8|		 retval,		/* Return value - unused */
 1364|      8|		 *zv;
 1365|      8|	HashTable *target_hash = HASH_OF(array);
  ------------------
  |  | 1073|      8|#define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  |  613|      8|#define IS_ARRAY					7
  |  |  ------------------
  |  |               #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  996|      7|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  ------------------
  |  |               #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL)))
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1073:21): [True: 7, False: 1]
  |  |  |  Branch (1073:63): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1366|      8|	HashPosition pos;
 1367|      8|	uint32_t ht_iter;
 1368|      8|	zend_result result = SUCCESS;
 1369|       |
 1370|       |	/* Create a local copy of fci, as we want to use different arguments at different
 1371|       |	 * levels of recursion. */
 1372|      8|	zend_fcall_info fci = context->fci;
 1373|       |
 1374|      8|	if (zend_hash_num_elements(target_hash) == 0) {
  ------------------
  |  Branch (1374:6): [True: 0, False: 8]
  ------------------
 1375|      0|		return result;
 1376|      0|	}
 1377|       |
 1378|       |	/* Set up known arguments */
 1379|      8|	ZVAL_UNDEF(&args[1]);
  ------------------
  |  | 1055|      8|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      8|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      8|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
 1380|      8|	if (userdata) {
  ------------------
  |  Branch (1380:6): [True: 0, False: 8]
  ------------------
 1381|      0|		ZVAL_COPY_VALUE(&args[2], userdata);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1382|      0|	}
 1383|       |
 1384|      8|	fci.retval = &retval;
 1385|      8|	fci.param_count = userdata ? 3 : 2;
  ------------------
  |  Branch (1385:20): [True: 0, False: 8]
  ------------------
 1386|      8|	fci.params = args;
 1387|       |
 1388|      8|	zend_hash_internal_pointer_reset_ex(target_hash, &pos);
 1389|      8|	ht_iter = zend_hash_iterator_add(target_hash, pos);
 1390|       |
 1391|       |	/* Iterate through hash */
 1392|     39|	do {
 1393|       |		/* Retrieve value */
 1394|     39|		zv = zend_hash_get_current_data_ex(target_hash, &pos);
 1395|     39|		if (zv == NULL) {
  ------------------
  |  Branch (1395:7): [True: 7, False: 32]
  ------------------
 1396|      7|			break;
 1397|      7|		}
 1398|       |
 1399|       |		/* Skip undefined indirect elements */
 1400|     32|		if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  669|     32|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(zv) == IS_INDIRECT) {
  ------------------
  |  |  629|     32|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1400:7): [True: 1, False: 31]
  ------------------
 1401|      1|			zv = Z_INDIRECT_P(zv);
  ------------------
  |  | 1044|      1|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      1|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1402|      1|			if (Z_TYPE_P(zv) == IS_UNDEF) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) == IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (1402:8): [True: 0, False: 1]
  ------------------
 1403|      0|				zend_hash_move_forward_ex(target_hash, &pos);
 1404|      0|				continue;
 1405|      0|			}
 1406|       |
 1407|       |			/* Add type source for property references. */
 1408|      1|			if (Z_TYPE_P(zv) != IS_REFERENCE && Z_TYPE_P(array) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) != IS_REFERENCE && Z_TYPE_P(array) == IS_OBJECT) {
  ------------------
  |  |  616|      2|#define IS_REFERENCE				10
  ------------------
              			if (Z_TYPE_P(zv) != IS_REFERENCE && Z_TYPE_P(array) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(zv) != IS_REFERENCE && Z_TYPE_P(array) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (1408:8): [True: 1, False: 0]
  |  Branch (1408:40): [True: 1, False: 0]
  ------------------
 1409|      1|				zend_property_info *prop_info =
 1410|      1|					zend_get_typed_property_info_for_slot(Z_OBJ_P(array), zv);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1411|      1|				if (prop_info) {
  ------------------
  |  Branch (1411:9): [True: 0, False: 1]
  ------------------
 1412|      0|					ZVAL_NEW_REF(zv, zv);
  ------------------
  |  | 1205|      0|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      0|		zend_reference *_ref =									\
  |  | 1207|      0|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      0|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      0|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      0|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      0|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      0|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      0|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      0|	do {												\
  |  |  |  | 1417|      0|		zval *_z1 = (z);								\
  |  |  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      0|	do {												\
  |  |  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      0|		_ref->sources.ptr = NULL;									\
  |  | 1212|      0|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      0|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      0|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1413|      0|					ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(zv), prop_info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
 1414|      0|				}
 1415|      1|			}
 1416|      1|		}
 1417|       |
 1418|       |		/* Ensure the value is a reference. Otherwise the location of the value may be freed. */
 1419|     32|		ZVAL_MAKE_REF(zv);
  ------------------
  |  | 1492|     32|#define ZVAL_MAKE_REF(zv) do {							\
  |  | 1493|     32|		zval *__zv = (zv);								\
  |  | 1494|     32|		if (!Z_ISREF_P(__zv)) {							\
  |  |  ------------------
  |  |  |  |  964|     32|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|     32|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|     32|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1494:7): [True: 7, False: 25]
  |  |  ------------------
  |  | 1495|      7|			ZVAL_NEW_REF(__zv, __zv);					\
  |  |  ------------------
  |  |  |  | 1205|      7|#define ZVAL_NEW_REF(z, r) do {									\
  |  |  |  | 1206|      7|		zend_reference *_ref =									\
  |  |  |  | 1207|      7|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1208|      7|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      7|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  | 1209|      7|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      7|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  810|      7|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      7|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      7|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      7|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      7|	do {												\
  |  |  |  |  |  | 1417|      7|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      7|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      7|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      7|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      7|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      7|	do {												\
  |  |  |  |  |  |  |  | 1408|      7|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      7|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      7|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      7|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      7|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1211|      7|		_ref->sources.ptr = NULL;									\
  |  |  |  | 1212|      7|		Z_REF_P(z) = _ref;										\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      7|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      7|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1213|      7|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  832|      7|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      7|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1214|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1214:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1496|      7|		}												\
  |  | 1497|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1497:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
 1420|       |
 1421|       |		/* Retrieve key */
 1422|     32|		zend_hash_get_current_key_zval_ex(target_hash, &args[1], &pos);
 1423|       |
 1424|       |		/* Move to next element already now -- this mirrors the approach used by foreach
 1425|       |		 * and ensures proper behavior with regard to modifications. */
 1426|     32|		zend_hash_move_forward_ex(target_hash, &pos);
 1427|       |
 1428|       |		/* Back up hash position, as it may change */
 1429|     32|		EG(ht_iterators)[ht_iter].pos = pos;
  ------------------
  |  |   45|     32|# define EG(v) (executor_globals.v)
  ------------------
 1430|       |
 1431|     32|		if (recursive && Z_TYPE_P(Z_REFVAL_P(zv)) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (recursive && Z_TYPE_P(Z_REFVAL_P(zv)) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1431:7): [True: 0, False: 32]
  |  Branch (1431:20): [True: 0, False: 0]
  ------------------
 1432|      0|			HashTable *thash;
 1433|      0|			zval ref;
 1434|      0|			ZVAL_COPY_VALUE(&ref, zv);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1435|       |
 1436|      0|			ZVAL_DEREF(zv);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1437|      0|			SEPARATE_ARRAY(zv);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1438|      0|			thash = Z_ARRVAL_P(zv);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1439|      0|			if (GC_IS_RECURSIVE(thash)) {
  ------------------
  |  |  887|      0|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|      0|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1440|      0|				zend_throw_error(NULL, "Recursion detected");
 1441|      0|				result = FAILURE;
 1442|      0|				break;
 1443|      0|			}
 1444|       |
 1445|      0|			Z_ADDREF(ref);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
 1446|      0|			GC_PROTECT_RECURSION(thash);
  ------------------
  |  |  889|      0|#define GC_PROTECT_RECURSION(p) do { \
  |  |  890|      0|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  782|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  891|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1447|      0|			result = php_array_walk(context, zv, userdata, recursive);
 1448|      0|			if (Z_TYPE_P(Z_REFVAL(ref)) == IS_ARRAY && thash == Z_ARRVAL_P(Z_REFVAL(ref))) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(Z_REFVAL(ref)) == IS_ARRAY && thash == Z_ARRVAL_P(Z_REFVAL(ref))) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              			if (Z_TYPE_P(Z_REFVAL(ref)) == IS_ARRAY && thash == Z_ARRVAL_P(Z_REFVAL(ref))) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1448:8): [True: 0, False: 0]
  |  Branch (1448:47): [True: 0, False: 0]
  ------------------
 1449|       |				/* If the hashtable changed in the meantime, we'll "leak" this apply count
 1450|       |				 * increment -- our reference to thash is no longer valid. */
 1451|      0|				GC_UNPROTECT_RECURSION(thash);
  ------------------
  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1452|      0|			}
 1453|      0|			zval_ptr_dtor(&ref);
 1454|     32|		} else {
 1455|     32|			ZVAL_COPY_VALUE(&args[0], zv);
  ------------------
  |  | 1416|     32|	do {												\
  |  | 1417|     32|		zval *_z1 = (z);								\
  |  | 1418|     32|		const zval *_z2 = (v);							\
  |  | 1419|     32|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|     32|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|     32|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|     32|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|     32|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|     32|	do {												\
  |  |  |  | 1408|     32|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|     32|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|     32|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|     32|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     32|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     32|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|     32|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|     32|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 32]
  |  |  ------------------
  ------------------
 1456|       |
 1457|       |			/* Call the userland function */
 1458|     32|			result = zend_call_function(&fci, &context->fci_cache);
 1459|     32|			zval_ptr_dtor(&retval);
 1460|     32|		}
 1461|       |
 1462|     32|		zval_ptr_dtor_str(&args[1]);
 1463|       |
 1464|     32|		if (result == FAILURE) {
  ------------------
  |  Branch (1464:7): [True: 0, False: 32]
  ------------------
 1465|      0|			break;
 1466|      0|		}
 1467|       |
 1468|       |		/* Reload array and position -- both may have changed */
 1469|     32|		if (Z_TYPE_P(array) == IS_ARRAY) {
  ------------------
  |  |  669|     32|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(array) == IS_ARRAY) {
  ------------------
  |  |  613|     32|#define IS_ARRAY					7
  ------------------
  |  Branch (1469:7): [True: 31, False: 1]
  ------------------
 1470|     31|			pos = zend_hash_iterator_pos_ex(ht_iter, array);
 1471|     31|			target_hash = Z_ARRVAL_P(array);
  ------------------
  |  |  997|     31|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     31|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     31|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1472|     31|		} else if (Z_TYPE_P(array) == IS_OBJECT) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(array) == IS_OBJECT) {
  ------------------
  |  |  614|      1|#define IS_OBJECT					8
  ------------------
  |  Branch (1472:14): [True: 1, False: 0]
  ------------------
 1473|      1|			target_hash = Z_OBJPROP_P(array);
  ------------------
  |  | 1015|      1|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      1|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1474|      1|			pos = zend_hash_iterator_pos(ht_iter, target_hash);
 1475|      1|		} else {
 1476|      0|			zend_type_error("Iterated value is no longer an array or object");
 1477|      0|			result = FAILURE;
 1478|      0|			break;
 1479|      0|		}
 1480|     32|	} while (!EG(exception));
  ------------------
  |  |   45|     32|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1480:11): [True: 31, False: 1]
  ------------------
 1481|       |
 1482|      8|	zend_hash_iterator_del(ht_iter);
 1483|      8|	return result;
 1484|      8|}
array.c:php_search_array:
 1621|     28|{
 1622|     28|	zval *value,		/* value to check for */
 1623|     28|		 *array;		/* array to check in */
 1624|     28|	bool strict = 0;	/* strict comparison or not */
 1625|       |
 1626|     84|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|     28|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     28|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     28|		const int _flags = (flags); \
  |  |  |  | 1599|     28|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     28|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     28|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     28|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     28|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     28|		uint32_t _i = 0; \
  |  |  |  | 1603|     28|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     28|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     28|		char *_error = NULL; \
  |  |  |  | 1606|     28|		bool _dummy = 0; \
  |  |  |  | 1607|     28|		bool _optional = 0; \
  |  |  |  | 1608|     28|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     28|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     28|		((void)_i); \
  |  |  |  | 1610|     28|		((void)_real_arg); \
  |  |  |  | 1611|     28|		((void)_arg); \
  |  |  |  | 1612|     28|		((void)_expected_type); \
  |  |  |  | 1613|     28|		((void)_error); \
  |  |  |  | 1614|     28|		((void)_optional); \
  |  |  |  | 1615|     28|		((void)_dummy); \
  |  |  |  | 1616|     28|		\
  |  |  |  | 1617|     28|		do { \
  |  |  |  | 1618|     28|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     56|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     28|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 28]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     28|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     28|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     28|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     28|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1627|    112|		Z_PARAM_ZVAL(value)
  ------------------
  |  | 2116|     28|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     28|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     28|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     28|	++_i; \
  |  |  |  |  |  |  |  | 1654|     28|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     28|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     28|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     28|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     28|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     28|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     28|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     28|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1627:3): [True: 28, False: 0]
  |  Branch (1627:3): [True: 0, False: 0]
  |  Branch (1627:3): [True: 28, False: 0]
  |  Branch (1627:3): [True: 0, False: 0]
  |  Branch (1627:3): [True: 28, False: 0]
  |  Branch (1627:3): [True: 0, False: 0]
  |  Branch (1627:3): [True: 0, False: 28]
  |  Branch (1627:3): [True: 28, False: 0]
  |  Branch (1627:3): [True: 0, False: 0]
  |  Branch (1627:3): [True: 0, False: 0]
  ------------------
 1628|    112|		Z_PARAM_ARRAY(array)
  ------------------
  |  | 1691|     28|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|     28|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|     28|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     28|	++_i; \
  |  |  |  |  |  |  |  | 1654|     28|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     28|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     28|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     28|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     28|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     28|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     28|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     28|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 28]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|     28|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 26]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      2|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      2|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      2|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      2|			break; \
  |  |  |  |  |  | 1685|      2|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1628:3): [True: 28, False: 0]
  |  Branch (1628:3): [True: 0, False: 0]
  |  Branch (1628:3): [True: 28, False: 0]
  |  Branch (1628:3): [True: 0, False: 0]
  |  Branch (1628:3): [True: 28, False: 0]
  |  Branch (1628:3): [True: 0, False: 0]
  |  Branch (1628:3): [True: 0, False: 28]
  |  Branch (1628:3): [True: 28, False: 0]
  |  Branch (1628:3): [True: 0, False: 0]
  |  Branch (1628:3): [True: 0, False: 0]
  ------------------
 1629|     26|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     26|	_optional = 1;
  ------------------
 1630|    102|		Z_PARAM_BOOL(strict)
  ------------------
  |  | 1735|     26|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     26|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     26|	++_i; \
  |  |  |  |  |  | 1654|     26|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     26|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     26|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     26|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 26, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     26|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 25]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     26|	} \
  |  |  |  |  |  | 1659|     26|	_real_arg++; \
  |  |  |  |  |  | 1660|     25|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     25|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     25|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|     25|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     25|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 25]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1630:3): [True: 26, False: 0]
  |  Branch (1630:3): [True: 0, False: 0]
  |  Branch (1630:3): [True: 0, False: 26]
  |  Branch (1630:3): [True: 26, False: 0]
  |  Branch (1630:3): [True: 26, False: 0]
  |  Branch (1630:3): [True: 0, False: 0]
  |  Branch (1630:3): [True: 26, False: 0]
  |  Branch (1630:3): [True: 0, False: 0]
  |  Branch (1630:3): [True: 0, False: 0]
  |  Branch (1630:3): [True: 0, False: 0]
  ------------------
 1631|     28|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     25|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     25|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     25|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     25|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  |  | 1641|     28|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|     28|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1631:2): [True: 25, False: 0]
  |  Branch (1631:2): [True: 0, False: 0]
  |  Branch (1631:2): [True: 25, False: 0]
  |  Branch (1631:2): [True: 0, False: 0]
  ------------------
 1632|       |
 1633|     26|	_php_search_array(return_value, value, array, strict, behavior);
 1634|     26|}
array.c:_php_search_array:
 1529|     26|{
 1530|     26|	zval *entry; /* pointer to array entry */
 1531|     26|	zend_ulong num_idx;
 1532|     26|	zend_string *str_idx;
 1533|       |
 1534|     26|	if (strict) {
  ------------------
  |  Branch (1534:6): [True: 25, False: 1]
  ------------------
 1535|     25|		if (Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  669|     25|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     25|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  610|     25|#define IS_LONG						4
  ------------------
  |  Branch (1535:7): [True: 0, False: 25]
  ------------------
 1536|      0|			ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
 1537|      0|				ZVAL_DEREF(entry);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1538|      0|				if (Z_TYPE_P(entry) == IS_LONG && Z_LVAL_P(entry) == Z_LVAL_P(value)) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(entry) == IS_LONG && Z_LVAL_P(entry) == Z_LVAL_P(value)) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
              				if (Z_TYPE_P(entry) == IS_LONG && Z_LVAL_P(entry) == Z_LVAL_P(value)) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(entry) == IS_LONG && Z_LVAL_P(entry) == Z_LVAL_P(value)) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1538:9): [True: 0, False: 0]
  |  Branch (1538:39): [True: 0, False: 0]
  ------------------
 1539|      0|					if (behavior == 0) {
  ------------------
  |  Branch (1539:10): [True: 0, False: 0]
  ------------------
 1540|      0|						RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1541|      0|					} else {
 1542|      0|						if (str_idx) {
  ------------------
  |  Branch (1542:11): [True: 0, False: 0]
  ------------------
 1543|      0|							RETURN_STR_COPY(str_idx);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1544|      0|						} else {
 1545|      0|							RETURN_LONG(num_idx);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1546|      0|						}
 1547|      0|					}
 1548|      0|				}
 1549|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1550|     25|		} else {
 1551|  22.3k|			ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
  ------------------
  |  | 1196|  11.1k|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     25|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     25|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     25|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     25|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     25|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     25|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     25|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     25|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     25|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     25|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     25|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     25|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     25|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     25|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|  11.2k|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 11.1k, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|  11.1k|			zval *_z = __z; \
  |  |  |  |  |  | 1055|  11.1k|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  11.1k|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|  11.1k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|  11.1k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 11.1k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|  11.1k|				__z++; \
  |  |  |  |  |  | 1057|  11.1k|				__h = _idx; \
  |  |  |  |  |  | 1058|  11.1k|				_idx++; \
  |  |  |  |  |  | 1059|  11.1k|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|  11.1k|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|  11.1k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  11.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 11.1k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|  11.1k|	_h = __h; \
  |  | 1198|  11.1k|	_key = __key; \
  |  | 1199|  11.1k|	_val = _z;
  ------------------
 1552|  22.3k|				ZVAL_DEREF(entry);
  ------------------
  |  | 1474|  11.1k|#define ZVAL_DEREF(z) do {								\
  |  | 1475|  11.1k|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|  11.1k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 11.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|  11.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 11.1k]
  |  |  ------------------
  ------------------
 1553|  22.3k|				if (fast_is_identical_function(value, entry)) {
  ------------------
  |  Branch (1553:9): [True: 6, False: 11.1k]
  ------------------
 1554|      6|					if (behavior == 0) {
  ------------------
  |  Branch (1554:10): [True: 6, False: 0]
  ------------------
 1555|      6|						RETURN_TRUE;
  ------------------
  |  | 1070|      6|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      6|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      6|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      6|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      6|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1556|      6|					} else {
 1557|      0|						if (str_idx) {
  ------------------
  |  Branch (1557:11): [True: 0, False: 0]
  ------------------
 1558|      0|							RETURN_STR_COPY(str_idx);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1559|      0|						} else {
 1560|      0|							RETURN_LONG(num_idx);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1561|      0|						}
 1562|      0|					}
 1563|      6|				}
 1564|  22.3k|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  11.1k|		} \
  |  | 1102|     25|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
 1565|     25|		}
 1566|     25|	} else {
 1567|      1|		if (Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(value) == IS_LONG) {
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
  |  Branch (1567:7): [True: 0, False: 1]
  ------------------
 1568|      0|			ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
 1569|      0|				if (fast_equal_check_long(value, entry)) {
  ------------------
  |  Branch (1569:9): [True: 0, False: 0]
  ------------------
 1570|      0|					if (behavior == 0) {
  ------------------
  |  Branch (1570:10): [True: 0, False: 0]
  ------------------
 1571|      0|						RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1572|      0|					} else {
 1573|      0|						if (str_idx) {
  ------------------
  |  Branch (1573:11): [True: 0, False: 0]
  ------------------
 1574|      0|							RETURN_STR_COPY(str_idx);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1575|      0|						} else {
 1576|      0|							RETURN_LONG(num_idx);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1577|      0|						}
 1578|      0|					}
 1579|      0|				}
 1580|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1581|      1|		} else if (Z_TYPE_P(value) == IS_STRING) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(value) == IS_STRING) {
  ------------------
  |  |  612|      1|#define IS_STRING					6
  ------------------
  |  Branch (1581:14): [True: 1, False: 0]
  ------------------
 1582|  1.02k|			ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
  ------------------
  |  | 1196|    514|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      1|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      1|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      1|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      1|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      1|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      1|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      1|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      1|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      1|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      1|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      1|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|    515|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 514, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|    514|			zval *_z = __z; \
  |  |  |  |  |  | 1055|    514|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    514|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    514|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    514|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 514, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|    514|				__z++; \
  |  |  |  |  |  | 1057|    514|				__h = _idx; \
  |  |  |  |  |  | 1058|    514|				_idx++; \
  |  |  |  |  |  | 1059|    514|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|    514|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|    514|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    514|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 514]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|    514|	_h = __h; \
  |  | 1198|    514|	_key = __key; \
  |  | 1199|    514|	_val = _z;
  ------------------
 1583|  1.02k|				if (fast_equal_check_string(value, entry)) {
  ------------------
  |  Branch (1583:9): [True: 0, False: 514]
  ------------------
 1584|      0|					if (behavior == 0) {
  ------------------
  |  Branch (1584:10): [True: 0, False: 0]
  ------------------
 1585|      0|						RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1586|      0|					} else {
 1587|      0|						if (str_idx) {
  ------------------
  |  Branch (1587:11): [True: 0, False: 0]
  ------------------
 1588|      0|							RETURN_STR_COPY(str_idx);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1589|      0|						} else {
 1590|      0|							RETURN_LONG(num_idx);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1591|      0|						}
 1592|      0|					}
 1593|      0|				}
 1594|  1.02k|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    514|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1595|      1|		} else {
 1596|      0|			ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
 1597|      0|				if (fast_equal_check_function(value, entry)) {
  ------------------
  |  Branch (1597:9): [True: 0, False: 0]
  ------------------
 1598|      0|					if (behavior == 0) {
  ------------------
  |  Branch (1598:10): [True: 0, False: 0]
  ------------------
 1599|      0|						RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1600|      0|					} else {
 1601|      0|						if (str_idx) {
  ------------------
  |  Branch (1601:11): [True: 0, False: 0]
  ------------------
 1602|      0|							RETURN_STR_COPY(str_idx);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1603|      0|						} else {
 1604|      0|							RETURN_LONG(num_idx);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1605|      0|						}
 1606|      0|					}
 1607|      0|				}
 1608|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1609|      0|		}
 1610|      1|	}
 1611|       |
 1612|     20|	RETURN_FALSE;
  ------------------
  |  | 1069|     20|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|     20|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|     20|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|     20|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     20|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|     20|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 20]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1613|     20|}
array.c:php_valid_var_name:
 1677|      8|{
 1678|       |	/* first 256 bits for first character, and second 256 bits for the next */
 1679|      8|	static const uint32_t charset[8] = {
 1680|       |	     /*  31      0   63     32   95     64   127    96 */
 1681|      8|			0x00000000, 0x00000000, 0x87fffffe, 0x07fffffe,
 1682|      8|			0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff};
 1683|      8|	static const uint32_t charset2[8] = {
 1684|       |	     /*  31      0   63     32   95     64   127    96 */
 1685|      8|			0x00000000, 0x03ff0000, 0x87fffffe, 0x07fffffe,
 1686|      8|			0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff};
 1687|       |
 1688|      8|	if (UNEXPECTED(!ZSTR_LEN(var_name))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 1689|      0|		return false;
 1690|      0|	}
 1691|       |
 1692|       |	/* These are allowed as first char: [a-zA-Z_\x7f-\xff] */
 1693|      8|	uint32_t ch = (uint32_t)((unsigned char *)ZSTR_VAL(var_name))[0];
  ------------------
  |  |   67|      8|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1694|      8|	if (UNEXPECTED(!ZEND_BIT_TEST(charset, ch))) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  ------------------
  ------------------
 1695|      1|		return false;
 1696|      1|	}
 1697|       |
 1698|       |	/* And these as the rest: [a-zA-Z0-9_\x7f-\xff] */
 1699|      7|	if (ZSTR_LEN(var_name) > 1) {
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1699:6): [True: 4, False: 3]
  ------------------
 1700|      4|		size_t i = 1;
 1701|     26|		do {
 1702|     26|			ch = (uint32_t)((unsigned char *)ZSTR_VAL(var_name))[i];
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1703|     26|			if (UNEXPECTED(!ZEND_BIT_TEST(charset2, ch))) {
  ------------------
  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 25]
  |  |  ------------------
  ------------------
 1704|      1|				return false;
 1705|      1|			}
 1706|     26|		} while (++i < ZSTR_LEN(var_name));
  ------------------
  |  |   68|     25|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1706:12): [True: 22, False: 3]
  ------------------
 1707|      4|	}
 1708|      6|	return true;
 1709|      7|}
array.c:php_extract_overwrite:
 1860|      5|{
 1861|      5|	zend_long count = 0;
 1862|      5|	zend_string *var_name;
 1863|      5|	zval *entry, *orig_var;
 1864|       |
 1865|      5|	if (HT_IS_PACKED(arr)) {
  ------------------
  |  |   62|      5|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      5|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      5|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 1866|      0|		return 0;
 1867|      0|	}
 1868|     26|	ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(arr, var_name, entry) {
  ------------------
  |  | 1389|      8|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      5|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      5|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      5|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      5|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      5|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     12|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 8, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|      8|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|      8|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      8|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 8]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|      8|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1390|      8|	_key = _p->key; \
  |  | 1391|      8|	_val = _z;
  ------------------
  |  Branch (1868:2): [True: 0, False: 5]
  |  Branch (1868:2): [True: 5, False: 0]
  ------------------
 1869|     26|		if (!var_name) {
  ------------------
  |  Branch (1869:7): [True: 0, False: 8]
  ------------------
 1870|      0|			continue;
 1871|      0|		}
 1872|      8|		if (!php_valid_var_name(var_name)) {
  ------------------
  |  Branch (1872:7): [True: 2, False: 6]
  ------------------
 1873|      2|			continue;
 1874|      2|		}
 1875|      6|		if (zend_string_equals(var_name, ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  Branch (1875:7): [True: 1, False: 5]
  ------------------
 1876|      1|			zend_throw_error(NULL, "Cannot re-assign $this");
 1877|      1|			return -1;
 1878|      1|		}
 1879|      5|		orig_var = zend_hash_find_known_hash(symbol_table, var_name);
 1880|      5|		if (orig_var) {
  ------------------
  |  Branch (1880:7): [True: 2, False: 3]
  ------------------
 1881|      2|			if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
  ------------------
  |  |  629|      2|#define IS_INDIRECT             	12
  ------------------
  |  Branch (1881:8): [True: 2, False: 0]
  ------------------
 1882|      2|				orig_var = Z_INDIRECT_P(orig_var);
  ------------------
  |  | 1044|      2|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      2|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
 1883|      2|			}
 1884|      2|			if (zend_string_equals_literal(var_name, "GLOBALS")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1885|      0|				continue;
 1886|      0|			}
 1887|      2|			ZVAL_DEREF(entry);
  ------------------
  |  | 1474|      2|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      2|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1888|      2|			ZEND_TRY_ASSIGN_COPY_EX(orig_var, entry, 0);
  ------------------
  |  | 1473|      2|#define ZEND_TRY_ASSIGN_COPY_EX(zv, other_zv, strict) do { \
  |  | 1474|      2|	Z_TRY_ADDREF_P(other_zv); \
  |  |  ------------------
  |  |  |  | 1285|      2|#define Z_TRY_ADDREF_P(pz) do {		\
  |  |  |  | 1286|      2|	zval *_pz = (pz);				\
  |  |  |  | 1287|      2|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  |  |  ------------------
  |  |  |  | 1289|      0|	}								\
  |  |  |  | 1290|      2|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1290:10): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1475|      2|	ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict); \
  |  |  ------------------
  |  |  |  | 1466|      2|	_ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1451|      2|#define _ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict, is_ref) do { \
  |  |  |  |  |  | 1452|      2|	zval *_zv = zv; \
  |  |  |  |  |  | 1453|      2|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1453:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1454|      0|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1455|      0|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1456|      0|			zend_try_assign_typed_ref_zval_ex(ref, other_zv, strict); \
  |  |  |  |  |  | 1457|      0|			break; \
  |  |  |  |  |  | 1458|      0|		} \
  |  |  |  |  |  | 1459|      0|		_zv = &ref->val; \
  |  |  |  |  |  | 1460|      0|	} \
  |  |  |  |  |  | 1461|      2|	zval_ptr_safe_dtor(_zv); \
  |  |  |  |  |  | 1462|      2|	ZVAL_COPY_VALUE(_zv, other_zv); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1416|      2|	do {												\
  |  |  |  |  |  |  |  | 1417|      2|		zval *_z1 = (z);								\
  |  |  |  |  |  |  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  |  |  |  |  |  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1407|      2|	do {												\
  |  |  |  |  |  |  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1422|      2|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1463|      2|} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1463:10): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (1476:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1889|      2|			if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1890|      0|				return -1;
 1891|      0|			}
 1892|      3|		} else {
 1893|      3|			ZVAL_DEREF(entry);
  ------------------
  |  | 1474|      3|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      3|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1894|      3|			Z_TRY_ADDREF_P(entry);
  ------------------
  |  | 1285|      3|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      3|	zval *_pz = (pz);				\
  |  | 1287|      3|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      3|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      3|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      3|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1895|      3|			zend_hash_add_new(symbol_table, var_name, entry);
 1896|      3|		}
 1897|      5|		count++;
 1898|      5|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      5|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1899|       |
 1900|      4|	return count;
 1901|      5|}
array.c:php_compact_var:
 2552|      3|{
 2553|      3|	zval *value_ptr, data;
 2554|       |
 2555|      3|	ZVAL_DEREF(entry);
  ------------------
  |  | 1474|      3|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      3|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 2556|      3|	if (Z_TYPE_P(entry) == IS_STRING) {
  ------------------
  |  |  669|      3|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(entry) == IS_STRING) {
  ------------------
  |  |  612|      3|#define IS_STRING					6
  ------------------
  |  Branch (2556:6): [True: 3, False: 0]
  ------------------
 2557|      3|		if ((value_ptr = zend_hash_find_ind(eg_active_symbol_table, Z_STR_P(entry))) != NULL) {
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2557:7): [True: 0, False: 3]
  ------------------
 2558|      0|			ZVAL_DEREF(value_ptr);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2559|      0|			Z_TRY_ADDREF_P(value_ptr);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2560|      0|			zend_hash_update(Z_ARRVAL_P(return_value), Z_STR_P(entry), value_ptr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			zend_hash_update(Z_ARRVAL_P(return_value), Z_STR_P(entry), value_ptr);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2561|      3|		} else if (zend_string_equals(Z_STR_P(entry), ZSTR_KNOWN(ZEND_STR_THIS))) {
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2561:14): [True: 0, False: 3]
  ------------------
 2562|      0|			zend_object *object = zend_get_this_object(EG(current_execute_data));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2563|      0|			if (object) {
  ------------------
  |  Branch (2563:8): [True: 0, False: 0]
  ------------------
 2564|      0|				ZVAL_OBJ_COPY(&data, object);
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2565|      0|				zend_hash_update(Z_ARRVAL_P(return_value), Z_STR_P(entry), &data);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				zend_hash_update(Z_ARRVAL_P(return_value), Z_STR_P(entry), &data);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2566|      0|			}
 2567|      3|		} else {
 2568|      3|			php_error_docref_unchecked(NULL, E_WARNING, "Undefined variable $%S", Z_STR_P(entry));
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
              			php_error_docref_unchecked(NULL, E_WARNING, "Undefined variable $%S", Z_STR_P(entry));
  ------------------
  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2569|      3|		}
 2570|      3|	} else if (Z_TYPE_P(entry) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(entry) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (2570:13): [True: 0, False: 0]
  ------------------
 2571|      0|		if (Z_REFCOUNTED_P(entry)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2572|      0|			if (Z_IS_RECURSIVE_P(entry)) {
  ------------------
  |  |  908|      0|#define Z_IS_RECURSIVE_P(zv)        Z_IS_RECURSIVE(*(zv))
  |  |  ------------------
  |  |  |  |  905|      0|#define Z_IS_RECURSIVE(zval)        GC_IS_RECURSIVE(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  887|      0|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  800|      0|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (887:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2573|      0|				zend_throw_error(NULL, "Recursion detected");
 2574|      0|				return;
 2575|      0|			}
 2576|      0|			Z_PROTECT_RECURSION_P(entry);
  ------------------
  |  |  909|      0|#define Z_PROTECT_RECURSION_P(zv)   Z_PROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  906|      0|#define Z_PROTECT_RECURSION(zval)   GC_PROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  889|      0|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  890|      0|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  782|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  891|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (891:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2577|      0|		}
 2578|      0|		ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(entry), value_ptr) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 2579|      0|			php_compact_var(eg_active_symbol_table, return_value, value_ptr, pos);
 2580|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2581|      0|		if (Z_REFCOUNTED_P(entry)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2582|      0|			Z_UNPROTECT_RECURSION_P(entry);
  ------------------
  |  |  910|      0|#define Z_UNPROTECT_RECURSION_P(zv) Z_UNPROTECT_RECURSION(*(zv))
  |  |  ------------------
  |  |  |  |  907|      0|#define Z_UNPROTECT_RECURSION(zval) GC_UNPROTECT_RECURSION(Z_COUNTED(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2583|      0|		}
 2584|      0|	} else {
 2585|      0|		php_error_docref(NULL, E_WARNING, "Argument #%d must be string or array of strings, %s given", pos, zend_zval_value_name(entry));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 2586|      0|		return;
 2587|      0|	}
 2588|      3|}
array.c:php_range_process_input:
 2758|     60|{
 2759|     60|	switch (Z_TYPE_P(input)) {
  ------------------
  |  |  669|     60|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     60|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 2760|     35|		case IS_LONG:
  ------------------
  |  |  610|     35|#define IS_LONG						4
  ------------------
  |  Branch (2760:3): [True: 35, False: 25]
  ------------------
 2761|     35|			*lval = Z_LVAL_P(input);
  ------------------
  |  |  976|     35|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     35|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2762|     35|			*dval = (double) Z_LVAL_P(input);
  ------------------
  |  |  976|     35|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|     35|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 2763|     35|			return IS_LONG;
  ------------------
  |  |  610|     35|#define IS_LONG						4
  ------------------
 2764|      7|		case IS_DOUBLE:
  ------------------
  |  |  611|      7|#define IS_DOUBLE					5
  ------------------
  |  Branch (2764:3): [True: 7, False: 53]
  ------------------
 2765|      7|			*dval = Z_DVAL_P(input);
  ------------------
  |  |  979|      7|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      7|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
 2766|      7|			check_dval_value:
 2767|      7|			if (zend_isinf(*dval)) {
  ------------------
  |  |  537|      7|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (2767:8): [True: 0, False: 7]
  ------------------
 2768|      0|				zend_argument_value_error(arg_num, "must be a finite number, INF provided");
 2769|      0|				return 0;
 2770|      0|			}
 2771|      7|			if (zend_isnan(*dval)) {
  ------------------
  |  |  536|      7|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (2771:8): [True: 0, False: 7]
  ------------------
 2772|      0|				zend_argument_value_error(arg_num, "must be a finite number, NAN provided");
 2773|      0|				return 0;
 2774|      0|			}
 2775|      7|			return IS_DOUBLE;
  ------------------
  |  |  611|      7|#define IS_DOUBLE					5
  ------------------
 2776|     18|		case IS_STRING: {
  ------------------
  |  |  612|     18|#define IS_STRING					6
  ------------------
  |  Branch (2776:3): [True: 18, False: 42]
  ------------------
 2777|       |			/* Process strings:
 2778|       |			 * - Empty strings are converted to 0 with a diagnostic
 2779|       |			 * - Check if string is numeric and store the values in passed pointer
 2780|       |			 * - If numeric float, this means it cannot be a numeric string with only one byte GOTO IS_DOUBLE
 2781|       |			 * - If numeric int, check it is one byte or not
 2782|       |			 *   - If it one byte, return IS_ARRAY as IS_LONG < IS_STRING < IS_ARRAY
 2783|       |			 *   - If not should only be interpreted as int, return IS_LONG;
 2784|       |			 * - Otherwise is a string and return IS_STRING */
 2785|     18|			if (Z_STRLEN_P(input) == 0) {
  ------------------
  |  |  988|     18|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     18|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     18|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2785:8): [True: 1, False: 17]
  ------------------
 2786|      1|				const char *arg_name = get_active_function_arg_name(arg_num);
 2787|      1|				php_error_docref(NULL, E_WARNING, "Argument #%d ($%s) must not be empty, casted to 0", arg_num, arg_name);
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 2788|      1|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2789|      0|					return 0;
 2790|      0|				}
 2791|      1|				*lval = 0;
 2792|      1|				*dval = 0.0;
 2793|      1|				return IS_LONG;
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
 2794|      1|			}
 2795|     17|			uint8_t type = is_numeric_str_function(Z_STR_P(input), lval, dval);
  ------------------
  |  |  982|     17|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     17|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2796|     17|			if (type == IS_DOUBLE) {
  ------------------
  |  |  611|     17|#define IS_DOUBLE					5
  ------------------
  |  Branch (2796:8): [True: 0, False: 17]
  ------------------
 2797|      0|				goto check_dval_value;
 2798|      0|			}
 2799|     17|			if (type == IS_LONG) {
  ------------------
  |  |  610|     17|#define IS_LONG						4
  ------------------
  |  Branch (2799:8): [True: 1, False: 16]
  ------------------
 2800|      1|				*dval = (double) *lval;
 2801|      1|				if (Z_STRLEN_P(input) == 1) {
  ------------------
  |  |  988|      1|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2801:9): [True: 0, False: 1]
  ------------------
 2802|      0|					return IS_ARRAY;
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
 2803|      1|				} else {
 2804|      1|					return IS_LONG;
  ------------------
  |  |  610|      1|#define IS_LONG						4
  ------------------
 2805|      1|				}
 2806|      1|			}
 2807|     16|			if (Z_STRLEN_P(input) != 1) {
  ------------------
  |  |  988|     16|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|     16|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     16|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2807:8): [True: 13, False: 3]
  ------------------
 2808|     13|				const char *arg_name = get_active_function_arg_name(arg_num);
 2809|     13|				php_error_docref(NULL, E_WARNING, "Argument #%d ($%s) must be a single byte, subsequent bytes are ignored", arg_num, arg_name);
  ------------------
  |  |   23|     13|#define E_WARNING			(1<<1L)
  ------------------
 2810|     13|				if (UNEXPECTED(EG(exception))) {
  ------------------
  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  ------------------
  ------------------
 2811|      0|					return 0;
 2812|      0|				}
 2813|     13|			}
 2814|       |			/* Set fall back values to 0 in case the other argument is not a string */
 2815|     16|			*lval = 0;
 2816|     16|			*dval = 0.0;
 2817|     16|			return IS_STRING;
  ------------------
  |  |  612|     16|#define IS_STRING					6
  ------------------
 2818|     16|		}
 2819|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2819:3): [True: 0, False: 60]
  |  Branch (2819:12): [Folded, False: 0]
  |  Branch (2819:12): [Folded, False: 0]
  ------------------
 2820|     60|	}
 2821|     60|}
array.c:php_splice:
 3181|    253|{
 3182|    253|	HashTable 	 out_hash;			/* Output hashtable */
 3183|    253|	zend_long	 num_in;			/* Number of entries in the input hashtable */
 3184|    253|	zend_long	 pos;				/* Current position in the hashtable */
 3185|    253|	uint32_t     idx;
 3186|    253|	zval		*entry;				/* Hash entry */
 3187|    253|	uint32_t    iter_pos = zend_hash_iterators_lower_pos(in_hash, 0);
 3188|       |
 3189|    253|	GC_ADDREF(in_hash);
  ------------------
  |  |  718|    253|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 3190|    253|	HT_ALLOW_COW_VIOLATION(in_hash); /* Will be reset when setting the flags for in_hash */
  ------------------
  |  |   71|    253|# define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   52|    253|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               # define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   47|    253|#define HASH_FLAG_ALLOW_COW_VIOLATION (1<<6)
  |  |  ------------------
  ------------------
 3191|       |
 3192|       |	/* Get number of entries in the input hash */
 3193|    253|	num_in = zend_hash_num_elements(in_hash);
 3194|       |
 3195|       |	/* Clamp the offset.. */
 3196|    253|	if (offset > num_in) {
  ------------------
  |  Branch (3196:6): [True: 0, False: 253]
  ------------------
 3197|      0|		offset = num_in;
 3198|    253|	} else if (offset < 0 && (offset = (num_in + offset)) < 0) {
  ------------------
  |  Branch (3198:13): [True: 0, False: 253]
  |  Branch (3198:27): [True: 0, False: 0]
  ------------------
 3199|      0|		offset = 0;
 3200|      0|	}
 3201|       |
 3202|       |	/* ..and the length */
 3203|    253|	if (length < 0) {
  ------------------
  |  Branch (3203:6): [True: 0, False: 253]
  ------------------
 3204|      0|		length = num_in - offset + length;
 3205|    253|	} else if (((unsigned)offset + (unsigned)length) > (unsigned)num_in) {
  ------------------
  |  Branch (3205:13): [True: 0, False: 253]
  ------------------
 3206|      0|		length = num_in - offset;
 3207|      0|	}
 3208|       |
 3209|       |	/* Create and initialize output hash */
 3210|    253|	zend_hash_init(&out_hash, (length > 0 ? num_in - length : 0) + (replace ? zend_hash_num_elements(replace) : 0), NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|  1.01k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  |  |  ------------------
  |  |  |  Branch (111:25): [True: 253, False: 0]
  |  |  |  Branch (111:25): [True: 0, False: 253]
  |  |  ------------------
  ------------------
 3211|       |
 3212|    253|	if (HT_IS_PACKED(in_hash)) {
  ------------------
  |  |   62|    253|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|    253|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|    253|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 253, False: 0]
  |  |  ------------------
  ------------------
 3213|       |		/* Start at the beginning of the input hash and copy entries to output hash until offset is reached */
 3214|    253|		entry = in_hash->arPacked;
 3215|    253|		for (pos = 0, idx = 0; pos < offset && idx < in_hash->nNumUsed; idx++, entry++) {
  ------------------
  |  Branch (3215:26): [True: 0, False: 253]
  |  Branch (3215:42): [True: 0, False: 0]
  ------------------
 3216|      0|			if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3216:8): [True: 0, False: 0]
  ------------------
 3217|       |
 3218|      0|			zend_hash_next_index_insert_new(&out_hash, entry);
 3219|      0|			if (idx == iter_pos) {
  ------------------
  |  Branch (3219:8): [True: 0, False: 0]
  ------------------
 3220|      0|				if ((zend_long)idx != pos) {
  ------------------
  |  Branch (3220:9): [True: 0, False: 0]
  ------------------
 3221|      0|					zend_hash_iterators_update(in_hash, idx, pos);
 3222|      0|				}
 3223|      0|				iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos + 1);
 3224|      0|			}
 3225|      0|			pos++;
 3226|      0|		}
 3227|       |
 3228|       |		/* If hash for removed entries exists, go until offset+length and copy the entries to it */
 3229|    253|		if (removed != NULL) {
  ------------------
  |  Branch (3229:7): [True: 253, False: 0]
  ------------------
 3230|    506|			for ( ; pos - offset < length && idx < in_hash->nNumUsed; idx++, entry++) {
  ------------------
  |  Branch (3230:12): [True: 253, False: 253]
  |  Branch (3230:37): [True: 253, False: 0]
  ------------------
 3231|    253|				if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  669|    253|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    253|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  606|    253|#define IS_UNDEF					0
  ------------------
  |  Branch (3231:9): [True: 0, False: 253]
  ------------------
 3232|    253|				pos++;
 3233|    253|				Z_TRY_ADDREF_P(entry);
  ------------------
  |  | 1285|    253|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|    253|	zval *_pz = (pz);				\
  |  | 1287|    253|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|    253|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|    253|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|    253|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 253, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|    253|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|    253|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|    253|	}								\
  |  | 1290|    253|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 253]
  |  |  ------------------
  ------------------
 3234|    253|				zend_hash_next_index_insert_new(removed, entry);
 3235|    253|				zend_hash_packed_del_val(in_hash, entry);
 3236|       |				/* Bump iterator positions to the element after replacement. */
 3237|    253|				if (idx == iter_pos) {
  ------------------
  |  Branch (3237:9): [True: 0, False: 253]
  ------------------
 3238|      0|					zend_hash_iterators_update(in_hash, idx, offset + length);
 3239|      0|					iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos + 1);
 3240|      0|				}
 3241|    253|			}
 3242|    253|		} else { /* otherwise just skip those entries */
 3243|      0|			zend_long pos2 = pos;
 3244|       |
 3245|      0|			for ( ; pos2 - offset < length && idx < in_hash->nNumUsed; idx++, entry++) {
  ------------------
  |  Branch (3245:12): [True: 0, False: 0]
  |  Branch (3245:38): [True: 0, False: 0]
  ------------------
 3246|      0|				if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3246:9): [True: 0, False: 0]
  ------------------
 3247|      0|				pos2++;
 3248|      0|				zend_hash_packed_del_val(in_hash, entry);
 3249|       |				/* Bump iterator positions to the element after replacement. */
 3250|      0|				if (idx == iter_pos) {
  ------------------
  |  Branch (3250:9): [True: 0, False: 0]
  ------------------
 3251|      0|					zend_hash_iterators_update(in_hash, idx, offset + length);
 3252|      0|					iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos + 1);
 3253|      0|				}
 3254|      0|			}
 3255|      0|		}
 3256|       |
 3257|       |		/* If there are entries to insert.. */
 3258|    253|		if (replace) {
  ------------------
  |  Branch (3258:7): [True: 0, False: 253]
  ------------------
 3259|      0|			ZEND_HASH_FOREACH_VAL(replace, entry) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 3260|      0|				Z_TRY_ADDREF_P(entry);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3261|      0|				zend_hash_next_index_insert_new(&out_hash, entry);
 3262|      0|				pos++;
 3263|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3264|      0|		}
 3265|       |
 3266|       |		/* Copy the remaining input hash entries to the output hash */
 3267|    253|		entry = in_hash->arPacked + idx;
 3268|    253|		for ( ; idx < in_hash->nNumUsed ; idx++, entry++) {
  ------------------
  |  Branch (3268:11): [True: 0, False: 253]
  ------------------
 3269|      0|			if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(entry) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3269:8): [True: 0, False: 0]
  ------------------
 3270|      0|			zend_hash_next_index_insert_new(&out_hash, entry);
 3271|      0|			if (idx == iter_pos) {
  ------------------
  |  Branch (3271:8): [True: 0, False: 0]
  ------------------
 3272|      0|				if ((zend_long)idx != pos) {
  ------------------
  |  Branch (3272:9): [True: 0, False: 0]
  ------------------
 3273|      0|					zend_hash_iterators_update(in_hash, idx, pos);
 3274|      0|				}
 3275|      0|				iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos + 1);
 3276|      0|			}
 3277|      0|			pos++;
 3278|      0|		}
 3279|    253|	} else {
 3280|      0|		Bucket *p = in_hash->arData;
 3281|       |
 3282|       |		/* Start at the beginning of the input hash and copy entries to output hash until offset is reached */
 3283|      0|		for (pos = 0, idx = 0; pos < offset && idx < in_hash->nNumUsed; idx++, p++) {
  ------------------
  |  Branch (3283:26): [True: 0, False: 0]
  |  Branch (3283:42): [True: 0, False: 0]
  ------------------
 3284|      0|			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3284:8): [True: 0, False: 0]
  ------------------
 3285|      0|			entry = &p->val;
 3286|       |
 3287|       |			/* Update output hash depending on key type */
 3288|      0|			if (p->key == NULL) {
  ------------------
  |  Branch (3288:8): [True: 0, False: 0]
  ------------------
 3289|      0|				zend_hash_next_index_insert_new(&out_hash, entry);
 3290|      0|			} else {
 3291|      0|				zend_hash_add_new(&out_hash, p->key, entry);
 3292|      0|			}
 3293|      0|			if (idx == iter_pos) {
  ------------------
  |  Branch (3293:8): [True: 0, False: 0]
  ------------------
 3294|      0|				if ((zend_long)idx != pos) {
  ------------------
  |  Branch (3294:9): [True: 0, False: 0]
  ------------------
 3295|      0|					zend_hash_iterators_update(in_hash, idx, pos);
 3296|      0|				}
 3297|      0|				iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos + 1);
 3298|      0|			}
 3299|      0|			pos++;
 3300|      0|		}
 3301|       |
 3302|       |		/* If hash for removed entries exists, go until offset+length and copy the entries to it */
 3303|      0|		if (removed != NULL) {
  ------------------
  |  Branch (3303:7): [True: 0, False: 0]
  ------------------
 3304|      0|			for ( ; pos - offset < length && idx < in_hash->nNumUsed; idx++, p++) {
  ------------------
  |  Branch (3304:12): [True: 0, False: 0]
  |  Branch (3304:37): [True: 0, False: 0]
  ------------------
 3305|      0|				if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3305:9): [True: 0, False: 0]
  ------------------
 3306|      0|				pos++;
 3307|      0|				entry = &p->val;
 3308|      0|				Z_TRY_ADDREF_P(entry);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3309|      0|				if (p->key == NULL) {
  ------------------
  |  Branch (3309:9): [True: 0, False: 0]
  ------------------
 3310|      0|					zend_hash_next_index_insert_new(removed, entry);
 3311|      0|				} else {
 3312|      0|					zend_hash_add_new(removed, p->key, entry);
 3313|      0|				}
 3314|      0|				zend_hash_del_bucket(in_hash, p);
 3315|      0|			}
 3316|      0|		} else { /* otherwise just skip those entries */
 3317|      0|			zend_long pos2 = pos;
 3318|       |
 3319|      0|			for ( ; pos2 - offset < length && idx < in_hash->nNumUsed; idx++, p++) {
  ------------------
  |  Branch (3319:12): [True: 0, False: 0]
  |  Branch (3319:38): [True: 0, False: 0]
  ------------------
 3320|      0|				if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3320:9): [True: 0, False: 0]
  ------------------
 3321|      0|				pos2++;
 3322|      0|				zend_hash_del_bucket(in_hash, p);
 3323|      0|			}
 3324|      0|		}
 3325|      0|		iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos);
 3326|       |
 3327|       |		/* If there are entries to insert.. */
 3328|      0|		if (replace) {
  ------------------
  |  Branch (3328:7): [True: 0, False: 0]
  ------------------
 3329|      0|			ZEND_HASH_FOREACH_VAL(replace, entry) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 3330|      0|				Z_TRY_ADDREF_P(entry);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3331|      0|				zend_hash_next_index_insert_new(&out_hash, entry);
 3332|      0|				pos++;
 3333|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3334|      0|		}
 3335|       |
 3336|       |		/* Copy the remaining input hash entries to the output hash */
 3337|      0|		for ( ; idx < in_hash->nNumUsed ; idx++, p++) {
  ------------------
  |  Branch (3337:11): [True: 0, False: 0]
  ------------------
 3338|      0|			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(p->val) == IS_UNDEF) continue;
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (3338:8): [True: 0, False: 0]
  ------------------
 3339|      0|			entry = &p->val;
 3340|      0|			if (p->key == NULL) {
  ------------------
  |  Branch (3340:8): [True: 0, False: 0]
  ------------------
 3341|      0|				zend_hash_next_index_insert_new(&out_hash, entry);
 3342|      0|			} else {
 3343|      0|				zend_hash_add_new(&out_hash, p->key, entry);
 3344|      0|			}
 3345|      0|			if (idx == iter_pos) {
  ------------------
  |  Branch (3345:8): [True: 0, False: 0]
  ------------------
 3346|      0|				if ((zend_long)idx != pos) {
  ------------------
  |  Branch (3346:9): [True: 0, False: 0]
  ------------------
 3347|      0|					zend_hash_iterators_update(in_hash, idx, pos);
 3348|      0|				}
 3349|      0|				iter_pos = zend_hash_iterators_lower_pos(in_hash, iter_pos + 1);
 3350|      0|			}
 3351|      0|			pos++;
 3352|      0|		}
 3353|      0|	}
 3354|       |
 3355|       |	/* replace HashTable data */
 3356|    253|	HT_SET_ITERATORS_COUNT(&out_hash, HT_ITERATORS_COUNT(in_hash));
  ------------------
  |  |   81|    253|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  ------------------
  |  |  |  |   76|    253|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  ------------------
  |  |  |  Branch (81:50): [Folded, False: 253]
  |  |  ------------------
  ------------------
 3357|    253|	HT_SET_ITERATORS_COUNT(in_hash, 0);
  ------------------
  |  |   81|    253|	do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
  |  |  ------------------
  |  |  |  |   76|    253|#define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount
  |  |  ------------------
  |  |  |  Branch (81:50): [Folded, False: 253]
  |  |  ------------------
  ------------------
 3358|    253|	in_hash->pDestructor = NULL;
 3359|       |
 3360|       |	/* Set internal pointer to 0 directly instead of calling zend_hash_internal_pointer_reset().
 3361|       |	 * This avoids the COW violation assertion and delays advancing to the first valid position
 3362|       |	 * until after we've switched to the new array structure (out_hash). The iterator will be
 3363|       |	 * advanced when actually accessed, at which point it will find valid indexes in the new array. */
 3364|    253|	in_hash->nInternalPointer = 0;
 3365|       |
 3366|    253|	if (UNEXPECTED(GC_DELREF(in_hash) == 0)) {
  ------------------
  |  |  457|    253|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 253]
  |  |  ------------------
  ------------------
 3367|       |		/* Array was completely deallocated during the operation */
 3368|      0|		zend_array_destroy(in_hash);
 3369|      0|		zend_hash_destroy(&out_hash);
 3370|      0|		zend_throw_error(NULL, "Array was modified during array_splice operation");
 3371|      0|		return;
 3372|      0|	}
 3373|       |
 3374|    253|	zend_hash_destroy(in_hash);
 3375|       |
 3376|    253|	HT_FLAGS(in_hash)          = HT_FLAGS(&out_hash);
  ------------------
  |  |   52|    253|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
              	HT_FLAGS(in_hash)          = HT_FLAGS(&out_hash);
  ------------------
  |  |   52|    253|#define HT_FLAGS(ht) (ht)->u.flags
  ------------------
 3377|    253|	in_hash->nTableSize        = out_hash.nTableSize;
 3378|    253|	in_hash->nTableMask        = out_hash.nTableMask;
 3379|    253|	in_hash->nNumUsed          = out_hash.nNumUsed;
 3380|    253|	in_hash->nNumOfElements    = out_hash.nNumOfElements;
 3381|    253|	in_hash->nNextFreeElement  = out_hash.nNextFreeElement;
 3382|    253|	in_hash->arData            = out_hash.arData;
 3383|    253|	in_hash->pDestructor       = out_hash.pDestructor;
 3384|    253|}
array.c:php_get_data_compare_func_unstable:
  495|      6|{
  496|      6|	switch (sort_type & ~PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      6|#define PHP_SORT_FLAG_CASE          8
  ------------------
  497|      0|		case PHP_SORT_NUMERIC:
  ------------------
  |  |   49|      0|#define PHP_SORT_NUMERIC            1
  ------------------
  |  Branch (497:3): [True: 0, False: 6]
  ------------------
  498|      0|			if (reverse) {
  ------------------
  |  Branch (498:8): [True: 0, False: 0]
  ------------------
  499|      0|				return php_array_reverse_data_compare_numeric_unstable;
  500|      0|			} else {
  501|      0|				return php_array_data_compare_numeric_unstable;
  502|      0|			}
  503|      0|			break;
  504|       |
  505|      2|		case PHP_SORT_STRING:
  ------------------
  |  |   50|      2|#define PHP_SORT_STRING             2
  ------------------
  |  Branch (505:3): [True: 2, False: 4]
  ------------------
  506|      2|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      2|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (506:8): [True: 0, False: 2]
  ------------------
  507|      0|				if (reverse) {
  ------------------
  |  Branch (507:9): [True: 0, False: 0]
  ------------------
  508|      0|					return php_array_reverse_data_compare_string_case_unstable;
  509|      0|				} else {
  510|      0|					return php_array_data_compare_string_case_unstable;
  511|      0|				}
  512|      2|			} else {
  513|      2|				if (reverse) {
  ------------------
  |  Branch (513:9): [True: 0, False: 2]
  ------------------
  514|      0|					return php_array_reverse_data_compare_string_unstable;
  515|      2|				} else {
  516|      2|					return php_array_data_compare_string_unstable;
  517|      2|				}
  518|      2|			}
  519|      0|			break;
  520|       |
  521|      0|		case PHP_SORT_NATURAL:
  ------------------
  |  |   54|      0|#define PHP_SORT_NATURAL            6
  ------------------
  |  Branch (521:3): [True: 0, False: 6]
  ------------------
  522|      0|			if (sort_type & PHP_SORT_FLAG_CASE) {
  ------------------
  |  |   55|      0|#define PHP_SORT_FLAG_CASE          8
  ------------------
  |  Branch (522:8): [True: 0, False: 0]
  ------------------
  523|      0|				if (reverse) {
  ------------------
  |  Branch (523:9): [True: 0, False: 0]
  ------------------
  524|      0|					return php_array_reverse_natural_case_compare_unstable;
  525|      0|				} else {
  526|      0|					return php_array_natural_case_compare_unstable;
  527|      0|				}
  528|      0|			} else {
  529|      0|				if (reverse) {
  ------------------
  |  Branch (529:9): [True: 0, False: 0]
  ------------------
  530|      0|					return php_array_reverse_natural_compare_unstable;
  531|      0|				} else {
  532|      0|					return php_array_natural_compare_unstable;
  533|      0|				}
  534|      0|			}
  535|      0|			break;
  536|       |
  537|      0|		case PHP_SORT_LOCALE_STRING:
  ------------------
  |  |   53|      0|#define PHP_SORT_LOCALE_STRING      5
  ------------------
  |  Branch (537:3): [True: 0, False: 6]
  ------------------
  538|      0|			if (reverse) {
  ------------------
  |  Branch (538:8): [True: 0, False: 0]
  ------------------
  539|      0|				return php_array_reverse_data_compare_string_locale_unstable;
  540|      0|			} else {
  541|      0|				return php_array_data_compare_string_locale_unstable;
  542|      0|			}
  543|      0|			break;
  544|       |
  545|      4|		case PHP_SORT_REGULAR:
  ------------------
  |  |   48|      4|#define PHP_SORT_REGULAR            0
  ------------------
  |  Branch (545:3): [True: 4, False: 2]
  ------------------
  546|      4|		default:
  ------------------
  |  Branch (546:3): [True: 0, False: 6]
  ------------------
  547|      4|			if (reverse) {
  ------------------
  |  Branch (547:8): [True: 0, False: 4]
  ------------------
  548|      0|				return php_array_reverse_data_compare_unstable;
  549|      4|			} else {
  550|      4|				return php_array_data_compare_unstable;
  551|      4|			}
  552|      0|			break;
  553|      6|	}
  554|      0|	return NULL;
  555|      6|}
array.c:stable_sort_fallback:
   88|     18|static zend_never_inline ZEND_COLD int stable_sort_fallback(Bucket *a, Bucket *b) {
   89|     18|	if (Z_EXTRA(a->val) > Z_EXTRA(b->val)) {
  ------------------
  |  |  704|     18|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
              	if (Z_EXTRA(a->val) > Z_EXTRA(b->val)) {
  ------------------
  |  |  704|     18|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
  |  Branch (89:6): [True: 0, False: 18]
  ------------------
   90|      0|		return 1;
   91|     18|	} else if (Z_EXTRA(a->val) < Z_EXTRA(b->val)) {
  ------------------
  |  |  704|     18|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
              	} else if (Z_EXTRA(a->val) < Z_EXTRA(b->val)) {
  ------------------
  |  |  704|     18|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
  |  Branch (91:13): [True: 18, False: 0]
  ------------------
   92|     18|		return -1;
   93|     18|	} else {
   94|      0|		return 0;
   95|      0|	}
   96|     18|}
array.c:php_is_true:
 6478|      1|{
 6479|      1|	switch (Z_TYPE_P(zv)) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 6480|      1|		case IS_TRUE:
  ------------------
  |  |  609|      1|#define IS_TRUE						3
  ------------------
  |  Branch (6480:3): [True: 1, False: 0]
  ------------------
 6481|      1|			return true;
 6482|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (6482:3): [True: 0, False: 1]
  ------------------
 6483|      0|			return false;
 6484|      0|		default: {
  ------------------
  |  Branch (6484:3): [True: 0, False: 1]
  ------------------
 6485|       |			bool rv = zend_is_true(zv);
 6486|      0|			zval_ptr_dtor(zv);
 6487|      0|			return rv;
 6488|      0|		}
 6489|      1|	}
 6490|      1|}

zm_startup_assert:
  136|      2|{
  137|      2|	ZEND_INIT_MODULE_GLOBALS(assert, php_assert_init_globals, NULL);
  ------------------
  |  |  275|      2|	globals_ctor(&module_name##_globals);
  ------------------
  138|       |
  139|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
  140|       |
  141|      2|	return SUCCESS;
  142|      2|}
zm_deactivate_assert:
  156|  33.5k|{
  157|  33.5k|	if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  668|  33.5k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  606|  33.5k|#define IS_UNDEF					0
  ------------------
  |  Branch (157:6): [True: 5, False: 33.5k]
  ------------------
  158|      5|		zval_ptr_dtor(&ASSERTG(callback));
  ------------------
  |  |   33|      5|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      5|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  159|      5|		ZVAL_UNDEF(&ASSERTG(callback));
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  160|      5|	}
  161|       |
  162|  33.5k|	return SUCCESS;
  163|  33.5k|}
zm_info_assert:
  167|      1|{
  168|      1|	DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      1|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
  169|      1|}
zif_assert:
  174|    155|{
  175|    155|	zval *assertion;
  176|    155|	zend_string *description_str = NULL;
  177|    155|	zend_object *description_obj = NULL;
  178|       |
  179|       |	/* EG(assertions) <= 0 is only reachable by dynamic calls to assert(),
  180|       |	 * since calls known at compile time will skip the entire call when
  181|       |	 * assertions are disabled.
  182|       |	 */
  183|    155|	if (!ASSERTG(active) || EG(assertions) <= 0) {
  ------------------
  |  |   33|    155|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|    310|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              	if (!ASSERTG(active) || EG(assertions) <= 0) {
  ------------------
  |  |   45|    155|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (183:6): [True: 0, False: 155]
  |  Branch (183:26): [True: 0, False: 155]
  ------------------
  184|      0|		RETURN_TRUE;
  ------------------
  |  | 1070|      0|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      0|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  185|      0|	}
  186|       |
  187|    464|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|    155|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    155|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    155|		const int _flags = (flags); \
  |  |  |  | 1599|    155|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    155|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    155|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    155|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    155|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    155|		uint32_t _i = 0; \
  |  |  |  | 1603|    155|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    155|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    155|		char *_error = NULL; \
  |  |  |  | 1606|    155|		bool _dummy = 0; \
  |  |  |  | 1607|    155|		bool _optional = 0; \
  |  |  |  | 1608|    155|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    155|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    155|		((void)_i); \
  |  |  |  | 1610|    155|		((void)_real_arg); \
  |  |  |  | 1611|    155|		((void)_arg); \
  |  |  |  | 1612|    155|		((void)_expected_type); \
  |  |  |  | 1613|    155|		((void)_error); \
  |  |  |  | 1614|    155|		((void)_optional); \
  |  |  |  | 1615|    155|		((void)_dummy); \
  |  |  |  | 1616|    155|		\
  |  |  |  | 1617|    155|		do { \
  |  |  |  | 1618|    155|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    310|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 154]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    155|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    154|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 154]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|    155|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    155|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    155|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    154|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|    616|		Z_PARAM_ZVAL(assertion)
  ------------------
  |  | 2116|    154|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|    154|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|    154|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|    154|	++_i; \
  |  |  |  |  |  |  |  | 1654|    154|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    154|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|    154|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    154|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|    154|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 154]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|    154|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|    154|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|    154|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 154]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|    154|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 154]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|    154|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (188:3): [True: 154, False: 0]
  |  Branch (188:3): [True: 0, False: 0]
  |  Branch (188:3): [True: 154, False: 0]
  |  Branch (188:3): [True: 0, False: 0]
  |  Branch (188:3): [True: 154, False: 0]
  |  Branch (188:3): [True: 0, False: 0]
  |  Branch (188:3): [True: 0, False: 154]
  |  Branch (188:3): [True: 154, False: 0]
  |  Branch (188:3): [True: 0, False: 0]
  |  Branch (188:3): [True: 0, False: 0]
  ------------------
  189|    616|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|    154|	_optional = 1;
  ------------------
  190|    767|		Z_PARAM_OBJ_OF_CLASS_OR_STR_OR_NULL(description_obj, zend_ce_throwable, description_str)
  ------------------
  |  | 1800|    154|	Z_PARAM_OBJ_OF_CLASS_OR_STR_EX(destination_object, base_ce, destination_string, 1);
  |  |  ------------------
  |  |  |  | 1783|    154|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    154|	++_i; \
  |  |  |  |  |  | 1654|    154|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    154|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    154|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    154|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    154|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 154, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|    154|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    154|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 153]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|    154|	} \
  |  |  |  |  |  | 1659|    154|	_real_arg++; \
  |  |  |  |  |  | 1660|    153|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    153|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 153]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    153|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 153]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1784|    153|	if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, base_ce, &destination_string, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    153|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 153]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1785|      0|		if (base_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1785:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1786|      0|			_error = ZSTR_VAL((base_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1787|      0|			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1589|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL 6
  |  |  |  |  ------------------
  |  |  |  |               			_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1588|      0|#define ZPP_ERROR_WRONG_CLASS_OR_STRING         5
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1787:18): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1788|      0|			break; \
  |  |  |  | 1789|      0|		} else { \
  |  |  |  | 1790|      0|			_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1790:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1791|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1792|      0|			break; \
  |  |  |  | 1793|      0|		} \
  |  |  |  | 1794|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (190:3): [True: 154, False: 0]
  |  Branch (190:3): [True: 0, False: 0]
  |  Branch (190:3): [True: 0, False: 154]
  |  Branch (190:3): [True: 154, False: 0]
  |  Branch (190:3): [True: 154, False: 0]
  |  Branch (190:3): [True: 0, False: 0]
  |  Branch (190:3): [True: 154, False: 0]
  |  Branch (190:3): [True: 0, False: 0]
  |  Branch (190:3): [True: 0, False: 0]
  |  Branch (190:3): [True: 0, False: 0]
  ------------------
  191|    767|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|    153|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|    153|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    153|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|    153|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 153]
  |  |  |  |  ------------------
  |  |  |  | 1641|    155|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    155|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 154]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|    155|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 154]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (191:2): [True: 153, False: 0]
  |  Branch (191:2): [True: 0, False: 0]
  |  Branch (191:2): [True: 153, False: 0]
  |  Branch (191:2): [True: 0, False: 0]
  ------------------
  192|       |
  193|    154|	if (zend_is_true(assertion)) {
  ------------------
  |  Branch (193:6): [True: 130, False: 24]
  ------------------
  194|    130|		RETURN_TRUE;
  ------------------
  |  | 1070|    130|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|    130|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|    130|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|    130|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    130|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    130|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|    130|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|    130|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 130]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  195|    130|	}
  196|       |
  197|     24|	if (description_obj) {
  ------------------
  |  Branch (197:6): [True: 0, False: 24]
  ------------------
  198|      0|		GC_ADDREF(description_obj);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  199|      0|		zend_throw_exception_internal(description_obj);
  200|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (200:3): [True: 0, False: 0]
  |  Branch (200:3): [True: 0, False: 0]
  ------------------
  201|      0|	}
  202|       |
  203|     24|	if (Z_TYPE(ASSERTG(callback)) == IS_UNDEF && ASSERTG(cb)) {
  ------------------
  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(ASSERTG(callback)) == IS_UNDEF && ASSERTG(cb)) {
  ------------------
  |  |  606|     48|#define IS_UNDEF					0
  ------------------
              	if (Z_TYPE(ASSERTG(callback)) == IS_UNDEF && ASSERTG(cb)) {
  ------------------
  |  |   33|     19|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|     19|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 0, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (203:6): [True: 19, False: 5]
  ------------------
  204|      0|		ZVAL_STRING(&ASSERTG(callback), ASSERTG(cb));
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  205|      0|	}
  206|       |
  207|     24|	if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  606|     24|#define IS_UNDEF					0
  ------------------
  |  Branch (207:6): [True: 5, False: 19]
  ------------------
  208|      5|		zval args[4];
  209|      5|		zval retval;
  210|      5|		uint32_t lineno = zend_get_executed_lineno();
  211|      5|		zend_string *filename = zend_get_executed_filename_ex();
  212|      5|		if (UNEXPECTED(!filename)) {
  ------------------
  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  213|      0|			filename = ZSTR_KNOWN(ZEND_STR_UNKNOWN_CAPITALIZED);
  214|      0|		}
  215|       |
  216|      5|		ZVAL_STR(&args[0], filename);
  ------------------
  |  | 1088|      5|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      5|		zval *__z = (z);						\
  |  | 1090|      5|		zend_string *__s = (s);					\
  |  | 1091|      5|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      5|		/* interned strings support */			\
  |  | 1093|      5|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 5]
  |  |  ------------------
  |  | 1094|      5|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      5|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  217|      5|		ZVAL_LONG(&args[1], lineno);
  ------------------
  |  | 1076|      5|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      5|		zval *__z = (z);				\
  |  | 1078|      5|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      5|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      5|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      5|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      5|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  218|      5|		ZVAL_NULL(&args[2]);
  ------------------
  |  | 1059|      5|#define ZVAL_NULL(z) do {				\
  |  | 1060|      5|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  219|       |
  220|      5|		ZVAL_FALSE(&retval);
  ------------------
  |  | 1063|      5|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      5|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      5|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  221|       |
  222|      5|		if (description_str) {
  ------------------
  |  Branch (222:7): [True: 5, False: 0]
  ------------------
  223|      5|			ZVAL_STR(&args[3], description_str);
  ------------------
  |  | 1088|      5|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      5|		zval *__z = (z);						\
  |  | 1090|      5|		zend_string *__s = (s);					\
  |  | 1091|      5|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      5|		/* interned strings support */			\
  |  | 1093|      5|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 5]
  |  |  ------------------
  |  | 1094|      5|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      5|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  224|      5|			call_user_function(NULL, NULL, &ASSERTG(callback), &retval, 4, args);
  ------------------
  |  |  694|      5|	_call_user_function_impl(object, function_name, retval_ptr, param_count, params, NULL)
  ------------------
  225|      5|		} else {
  226|      0|			call_user_function(NULL, NULL, &ASSERTG(callback), &retval, 3, args);
  ------------------
  |  |  694|      0|	_call_user_function_impl(object, function_name, retval_ptr, param_count, params, NULL)
  ------------------
  227|      0|		}
  228|       |
  229|      5|		zval_ptr_dtor(&retval);
  230|      5|	}
  231|       |
  232|     24|	if (ASSERTG(exception)) {
  ------------------
  |  |   33|     24|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|     24|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 21, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  233|     21|		zend_throw_exception(assertion_error_ce, description_str ? ZSTR_VAL(description_str) : NULL, E_ERROR);
  ------------------
  |  |   67|     21|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_throw_exception(assertion_error_ce, description_str ? ZSTR_VAL(description_str) : NULL, E_ERROR);
  ------------------
  |  |   22|     21|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (233:44): [True: 21, False: 0]
  ------------------
  234|     21|		if (ASSERTG(bail)) {
  ------------------
  |  |   33|     21|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|     21|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 1, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  235|       |			/* When bail is turned on, the exception will not be caught. */
  236|      1|			zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              			zend_exception_error(EG(exception), E_ERROR);
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
  237|      1|		}
  238|     21|	} else if (ASSERTG(warning)) {
  ------------------
  |  |   33|      3|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      3|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|      3|		php_error_docref(NULL, E_WARNING, "%s failed", description_str ? ZSTR_VAL(description_str) : "Assertion");
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
              		php_error_docref(NULL, E_WARNING, "%s failed", description_str ? ZSTR_VAL(description_str) : "Assertion");
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (239:50): [True: 3, False: 0]
  ------------------
  240|      3|	}
  241|       |
  242|     24|	if (ASSERTG(bail)) {
  ------------------
  |  |   33|     24|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|     24|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 3, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  243|      3|		if (EG(exception)) {
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 1]
  |  |  ------------------
  ------------------
  244|       |			/* The callback might have thrown. Use E_WARNING to print the
  245|       |			 * exception so we can avoid bailout and use unwind_exit. */
  246|      2|			zend_exception_error(EG(exception), E_WARNING);
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              			zend_exception_error(EG(exception), E_WARNING);
  ------------------
  |  |   23|      2|#define E_WARNING			(1<<1L)
  ------------------
  247|      2|		}
  248|      3|		zend_throw_unwind_exit();
  249|      3|		RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (249:3): [True: 0, False: 3]
  |  Branch (249:3): [True: 3, False: 0]
  ------------------
  250|     21|	} else {
  251|     21|		RETURN_FALSE;
  ------------------
  |  | 1069|     21|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|     21|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|     21|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|     21|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     21|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     21|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     21|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|     21|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  252|     21|	}
  253|     24|}
zif_assert_options:
  258|     14|{
  259|     14|	zval *value = NULL;
  260|     14|	zend_long what;
  261|     14|	bool oldint;
  262|     14|	uint32_t ac = ZEND_NUM_ARGS();
  ------------------
  |  |  529|     14|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     14|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     14|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|     14|	zend_string *key;
  264|       |
  265|     42|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     14|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     14|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     14|		const int _flags = (flags); \
  |  |  |  | 1599|     14|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     14|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     14|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     14|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     14|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     14|		uint32_t _i = 0; \
  |  |  |  | 1603|     14|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     14|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     14|		char *_error = NULL; \
  |  |  |  | 1606|     14|		bool _dummy = 0; \
  |  |  |  | 1607|     14|		bool _optional = 0; \
  |  |  |  | 1608|     14|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     14|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     14|		((void)_i); \
  |  |  |  | 1610|     14|		((void)_real_arg); \
  |  |  |  | 1611|     14|		((void)_arg); \
  |  |  |  | 1612|     14|		((void)_expected_type); \
  |  |  |  | 1613|     14|		((void)_error); \
  |  |  |  | 1614|     14|		((void)_optional); \
  |  |  |  | 1615|     14|		((void)_dummy); \
  |  |  |  | 1616|     14|		\
  |  |  |  | 1617|     14|		do { \
  |  |  |  | 1618|     14|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     14|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     14|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     14|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     14|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     14|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  266|     56|		Z_PARAM_LONG(what)
  ------------------
  |  | 1905|     14|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|     14|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     14|	++_i; \
  |  |  |  |  |  | 1654|     14|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     14|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     14|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     14|	_real_arg++; \
  |  |  |  |  |  | 1660|     14|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     14|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     14|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|     14|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (266:3): [True: 14, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 14, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 14, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 0, False: 14]
  |  Branch (266:3): [True: 14, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  |  Branch (266:3): [True: 0, False: 0]
  ------------------
  267|     14|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     14|	_optional = 1;
  ------------------
  268|     56|		Z_PARAM_ZVAL(value)
  ------------------
  |  | 2116|     14|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     14|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     14|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     14|	++_i; \
  |  |  |  |  |  |  |  | 1654|     14|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     14|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     14|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 14, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|     14|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|     14|	} \
  |  |  |  |  |  |  |  | 1659|     14|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     14|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     14|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     14|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     14|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (268:3): [True: 14, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 14]
  |  Branch (268:3): [True: 14, False: 0]
  |  Branch (268:3): [True: 14, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 14, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  |  Branch (268:3): [True: 0, False: 0]
  ------------------
  269|     56|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     14|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     14|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     14|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  |  | 1641|     14|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (269:2): [True: 14, False: 0]
  |  Branch (269:2): [True: 0, False: 0]
  |  Branch (269:2): [True: 14, False: 0]
  |  Branch (269:2): [True: 0, False: 0]
  ------------------
  270|       |
  271|     14|	switch (what) {
  272|      0|	case PHP_ASSERT_ACTIVE:
  ------------------
  |  Branch (272:2): [True: 0, False: 14]
  ------------------
  273|      0|		oldint = ASSERTG(active);
  ------------------
  |  |   33|      0|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  274|      0|		if (ac == 2) {
  ------------------
  |  Branch (274:7): [True: 0, False: 0]
  ------------------
  275|      0|			zend_string *value_str = zval_try_get_string(value);
  276|      0|			if (UNEXPECTED(!value_str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  277|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (277:5): [True: 0, False: 0]
  |  Branch (277:5): [True: 0, False: 0]
  ------------------
  278|      0|			}
  279|       |
  280|      0|			key = ZSTR_INIT_LITERAL("assert.active", 0);
  ------------------
  |  |  141|      0|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  281|      0|			zend_alter_ini_entry_ex(key, value_str, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      0|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|      0|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              			zend_alter_ini_entry_ex(key, value_str, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      0|#define ZEND_INI_STAGE_ASSERT_OPTIONS (1<<6)
  ------------------
  282|      0|			zend_string_release_ex(key, 0);
  283|      0|			zend_string_release_ex(value_str, 0);
  284|      0|		}
  285|      0|		RETURN_LONG(oldint);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  286|       |
  287|      3|	case PHP_ASSERT_BAIL:
  ------------------
  |  Branch (287:2): [True: 3, False: 11]
  ------------------
  288|      3|		oldint = ASSERTG(bail);
  ------------------
  |  |   33|      3|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      3|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  289|      3|		if (ac == 2) {
  ------------------
  |  Branch (289:7): [True: 3, False: 0]
  ------------------
  290|      3|			zend_string *value_str = zval_try_get_string(value);
  291|      3|			if (UNEXPECTED(!value_str)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  292|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (292:5): [True: 0, False: 0]
  |  Branch (292:5): [True: 0, False: 0]
  ------------------
  293|      0|			}
  294|       |
  295|      3|			key = ZSTR_INIT_LITERAL("assert.bail", 0);
  ------------------
  |  |  141|      3|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  296|      3|			zend_alter_ini_entry_ex(key, value_str, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      3|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|      3|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              			zend_alter_ini_entry_ex(key, value_str, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      3|#define ZEND_INI_STAGE_ASSERT_OPTIONS (1<<6)
  ------------------
  297|      3|			zend_string_release_ex(key, 0);
  298|      3|			zend_string_release_ex(value_str, 0);
  299|      3|		}
  300|      3|		RETURN_LONG(oldint);
  ------------------
  |  | 1048|      3|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      3|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      3|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  301|       |
  302|      0|	case PHP_ASSERT_WARNING:
  ------------------
  |  Branch (302:2): [True: 0, False: 14]
  ------------------
  303|      0|		oldint = ASSERTG(warning);
  ------------------
  |  |   33|      0|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  304|      0|		if (ac == 2) {
  ------------------
  |  Branch (304:7): [True: 0, False: 0]
  ------------------
  305|      0|			zend_string *value_str = zval_try_get_string(value);
  306|      0|			if (UNEXPECTED(!value_str)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  307|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (307:5): [True: 0, False: 0]
  |  Branch (307:5): [True: 0, False: 0]
  ------------------
  308|      0|			}
  309|       |
  310|      0|			key = ZSTR_INIT_LITERAL("assert.warning", 0);
  ------------------
  |  |  141|      0|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  311|      0|			zend_alter_ini_entry_ex(key, value_str, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      0|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|      0|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              			zend_alter_ini_entry_ex(key, value_str, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      0|#define ZEND_INI_STAGE_ASSERT_OPTIONS (1<<6)
  ------------------
  312|      0|			zend_string_release_ex(key, 0);
  313|      0|			zend_string_release_ex(value_str, 0);
  314|      0|		}
  315|      0|		RETURN_LONG(oldint);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  316|       |
  317|      5|	case PHP_ASSERT_CALLBACK:
  ------------------
  |  Branch (317:2): [True: 5, False: 9]
  ------------------
  318|      5|		if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  606|      5|#define IS_UNDEF					0
  ------------------
  |  Branch (318:7): [True: 0, False: 5]
  ------------------
  319|      0|			ZVAL_COPY(return_value, &ASSERTG(callback));
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  320|      5|		} else if (ASSERTG(cb)) {
  ------------------
  |  |   33|      5|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      5|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  321|      0|			RETVAL_STRING(ASSERTG(cb));
  ------------------
  |  | 1028|      0|#define RETVAL_STRING(s)				ZVAL_STRING(return_value, s)
  |  |  ------------------
  |  |  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  968|      0|		const char *_s = (s);					\
  |  |  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  970|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  322|      5|		} else {
  323|      5|			RETVAL_NULL();
  ------------------
  |  | 1021|      5|#define RETVAL_NULL()					ZVAL_NULL(return_value)
  |  |  ------------------
  |  |  |  | 1059|      5|#define ZVAL_NULL(z) do {				\
  |  |  |  | 1060|      5|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  607|      5|#define IS_NULL						1
  |  |  |  |  ------------------
  |  |  |  | 1061|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1061:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  324|      5|		}
  325|       |
  326|      5|		if (ac == 2) {
  ------------------
  |  Branch (326:7): [True: 5, False: 0]
  ------------------
  327|      5|			zval_ptr_dtor(&ASSERTG(callback));
  ------------------
  |  |   33|      5|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      5|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  328|      5|			if (Z_TYPE_P(value) == IS_NULL) {
  ------------------
  |  |  669|      5|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(value) == IS_NULL) {
  ------------------
  |  |  607|      5|#define IS_NULL						1
  ------------------
  |  Branch (328:8): [True: 0, False: 5]
  ------------------
  329|      0|				ZVAL_UNDEF(&ASSERTG(callback));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  330|      5|			} else {
  331|      5|				ZVAL_COPY(&ASSERTG(callback), value);
  ------------------
  |  | 1425|      5|	do {												\
  |  | 1426|      5|		zval *_z1 = (z);								\
  |  | 1427|      5|		const zval *_z2 = (v);							\
  |  | 1428|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      5|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      5|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      5|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      5|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      5|		}												\
  |  | 1434|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  332|      5|			}
  333|      5|		}
  334|      5|		return;
  335|       |
  336|      6|	case PHP_ASSERT_EXCEPTION:
  ------------------
  |  Branch (336:2): [True: 6, False: 8]
  ------------------
  337|      6|		oldint = ASSERTG(exception);
  ------------------
  |  |   33|      6|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      6|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  338|      6|		if (ac == 2) {
  ------------------
  |  Branch (338:7): [True: 6, False: 0]
  ------------------
  339|      6|			zend_string *val = zval_try_get_string(value);
  340|      6|			if (UNEXPECTED(!val)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  341|      0|				RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (341:5): [True: 0, False: 0]
  |  Branch (341:5): [True: 0, False: 0]
  ------------------
  342|      0|			}
  343|       |
  344|      6|			key = ZSTR_INIT_LITERAL("assert.exception", 0);
  ------------------
  |  |  141|      6|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  345|      6|			zend_alter_ini_entry_ex(key, val, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      6|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|      6|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              			zend_alter_ini_entry_ex(key, val, PHP_INI_USER, ZEND_INI_STAGE_ASSERT_OPTIONS, 0);
  ------------------
  |  |   39|      6|#define ZEND_INI_STAGE_ASSERT_OPTIONS (1<<6)
  ------------------
  346|      6|			zend_string_release_ex(val, 0);
  347|      6|			zend_string_release_ex(key, 0);
  348|      6|		}
  349|      6|		RETURN_LONG(oldint);
  ------------------
  |  | 1048|      6|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      6|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      6|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      6|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      6|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      6|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      6|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  350|       |
  351|      0|	default:
  ------------------
  |  Branch (351:2): [True: 0, False: 14]
  ------------------
  352|      0|		zend_argument_value_error(1, "must be an ASSERT_* constant");
  353|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (353:3): [True: 0, False: 0]
  |  Branch (353:3): [True: 0, False: 0]
  ------------------
  354|     14|	}
  355|     14|}
assert.c:php_assert_init_globals:
  129|      2|{
  130|      2|	ZVAL_UNDEF(&assert_globals_p->callback);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  131|       |	assert_globals_p->cb = NULL;
  132|      2|}
assert.c:OnUpdateActiveBool:
   79|      2|{
   80|      2|	bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
   81|      2|	*p = zend_ini_parse_bool(new_value);
   82|      2|	if (php_must_emit_ini_deprecation(stage) && !*p) {
  ------------------
  |  Branch (82:6): [True: 2, False: 0]
  |  Branch (82:46): [True: 0, False: 2]
  ------------------
   83|      0|		php_error_docref(NULL, E_DEPRECATED, "assert.active INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
   84|      0|	}
   85|      2|	return SUCCESS;
   86|      2|}
assert.c:php_must_emit_ini_deprecation:
   42|     25|{
   43|     25|	return stage != ZEND_INI_STAGE_DEACTIVATE && stage != ZEND_INI_STAGE_SHUTDOWN && stage != ZEND_INI_STAGE_ASSERT_OPTIONS;
  ------------------
  |  |  226|     50|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  ------------------
              	return stage != ZEND_INI_STAGE_DEACTIVATE && stage != ZEND_INI_STAGE_SHUTDOWN && stage != ZEND_INI_STAGE_ASSERT_OPTIONS;
  ------------------
  |  |  224|     42|#define ZEND_INI_STAGE_SHUTDOWN		(1<<1)
  ------------------
              	return stage != ZEND_INI_STAGE_DEACTIVATE && stage != ZEND_INI_STAGE_SHUTDOWN && stage != ZEND_INI_STAGE_ASSERT_OPTIONS;
  ------------------
  |  |   39|     42|#define ZEND_INI_STAGE_ASSERT_OPTIONS (1<<6)
  ------------------
  |  Branch (43:9): [True: 17, False: 8]
  |  Branch (43:47): [True: 17, False: 0]
  |  Branch (43:83): [True: 8, False: 9]
  ------------------
   44|     25|}
assert.c:OnUpdateBailBool:
   89|      8|{
   90|      8|	bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      8|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      8|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
   91|      8|	*p = zend_ini_parse_bool(new_value);
   92|      8|	if (php_must_emit_ini_deprecation(stage) && *p) {
  ------------------
  |  Branch (92:6): [True: 2, False: 6]
  |  Branch (92:46): [True: 0, False: 2]
  ------------------
   93|      0|		php_error_docref(NULL, E_DEPRECATED, "assert.bail INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
   94|      0|	}
   95|      8|	return SUCCESS;
   96|      8|}
assert.c:OnUpdateWarningBool:
  110|      2|{
  111|      2|	bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  112|      2|	*p = zend_ini_parse_bool(new_value);
  113|      2|	if (php_must_emit_ini_deprecation(stage) && !*p) {
  ------------------
  |  Branch (113:6): [True: 2, False: 0]
  |  Branch (113:46): [True: 0, False: 2]
  ------------------
  114|      0|		php_error_docref(NULL, E_DEPRECATED, "assert.warning INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  115|      0|	}
  116|      2|	return SUCCESS;
  117|      2|}
assert.c:OnChangeCallback:
   47|      2|{
   48|      2|	if (EG(current_execute_data)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   49|      0|		if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (49:7): [True: 0, False: 0]
  ------------------
   50|      0|			zval_ptr_dtor(&ASSERTG(callback));
  ------------------
  |  |   33|      0|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
   51|      0|			ZVAL_UNDEF(&ASSERTG(callback));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   52|      0|		}
   53|      0|		if (new_value && (Z_TYPE(ASSERTG(callback)) != IS_UNDEF || ZSTR_LEN(new_value))) {
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (new_value && (Z_TYPE(ASSERTG(callback)) != IS_UNDEF || ZSTR_LEN(new_value))) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
              		if (new_value && (Z_TYPE(ASSERTG(callback)) != IS_UNDEF || ZSTR_LEN(new_value))) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (53:7): [True: 0, False: 0]
  |  Branch (53:21): [True: 0, False: 0]
  ------------------
   54|      0|			if (php_must_emit_ini_deprecation(stage)) {
  ------------------
  |  Branch (54:8): [True: 0, False: 0]
  ------------------
   55|      0|				php_error_docref(NULL, E_DEPRECATED, "assert.callback INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
   56|      0|			}
   57|      0|			ZVAL_STR_COPY(&ASSERTG(callback), new_value);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
   58|      0|		}
   59|      2|	} else {
   60|      2|		if (ASSERTG(cb)) {
  ------------------
  |  |   33|      2|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (276:54): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|      0|			pefree(ASSERTG(cb), 1);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, Folded]
  |  |  ------------------
  ------------------
   62|      0|		}
   63|      2|		if (new_value && ZSTR_LEN(new_value)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (63:7): [True: 0, False: 2]
  ------------------
   64|      0|			if (php_must_emit_ini_deprecation(stage)) {
  ------------------
  |  Branch (64:8): [True: 0, False: 0]
  ------------------
   65|      0|				php_error_docref(NULL, E_DEPRECATED, "assert.callback INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
   66|      0|			}
   67|      0|			ASSERTG(cb) = pemalloc(ZSTR_LEN(new_value) + 1, 1);
  ------------------
  |  |   33|      0|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              			ASSERTG(cb) = pemalloc(ZSTR_LEN(new_value) + 1, 1);
  ------------------
  |  |  188|      0|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, Folded]
  |  |  ------------------
  ------------------
   68|      0|			memcpy(ASSERTG(cb), ZSTR_VAL(new_value), ZSTR_LEN(new_value));
  ------------------
  |  |   33|      0|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              			memcpy(ASSERTG(cb), ZSTR_VAL(new_value), ZSTR_LEN(new_value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			memcpy(ASSERTG(cb), ZSTR_VAL(new_value), ZSTR_LEN(new_value));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   69|      0|			ASSERTG(cb)[ZSTR_LEN(new_value)] = '\0';
  ------------------
  |  |   33|      0|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
              			ASSERTG(cb)[ZSTR_LEN(new_value)] = '\0';
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   70|      2|		} else {
   71|      2|			ASSERTG(cb) = NULL;
  ------------------
  |  |   33|      2|#define ASSERTG(v) ZEND_MODULE_GLOBALS_ACCESSOR(assert, v)
  |  |  ------------------
  |  |  |  |  276|      2|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
   72|      2|		}
   73|      2|	}
   74|      2|	return SUCCESS;
   75|      2|}
assert.c:OnUpdateExceptionBool:
   99|     13|{
  100|     13|	bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|     13|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|     13|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  101|     13|	*p = zend_ini_parse_bool(new_value);
  102|     13|	if (php_must_emit_ini_deprecation(stage) && !*p) {
  ------------------
  |  Branch (102:6): [True: 2, False: 11]
  |  Branch (102:46): [True: 0, False: 2]
  ------------------
  103|      0|		php_error_docref(NULL, E_DEPRECATED, "assert.exception INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  104|      0|	}
  105|     13|	return SUCCESS;
  106|     13|}

base64.c:resolve_base64_encode:
  416|      2|static base64_encode_func_t resolve_base64_encode(void) {
  417|      2|# ifdef BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO
  418|      2|	if (zend_cpu_supports_avx512_vbmi()) {
  ------------------
  |  Branch (418:6): [True: 0, False: 2]
  ------------------
  419|      0|		return php_base64_encode_avx512_vbmi;
  420|      0|	} else
  421|      2|# endif
  422|      2|# ifdef BASE64_INTRIN_AVX512_FUNC_PROTO
  423|      2|	if (zend_cpu_supports_avx512()) {
  ------------------
  |  Branch (423:6): [True: 0, False: 2]
  ------------------
  424|      0|		return php_base64_encode_avx512;
  425|      0|	} else
  426|      2|# endif
  427|      2|# ifdef ZEND_INTRIN_AVX2_FUNC_PROTO
  428|      2|	if (zend_cpu_supports_avx2()) {
  ------------------
  |  Branch (428:6): [True: 2, False: 0]
  ------------------
  429|      2|		return php_base64_encode_avx2;
  430|      2|	} else
  431|      0|# endif
  432|      0|#ifdef ZEND_INTRIN_SSSE3_FUNC_PROTO
  433|      0|	if (zend_cpu_supports_ssse3()) {
  ------------------
  |  Branch (433:6): [True: 0, False: 0]
  ------------------
  434|      0|		return php_base64_encode_ssse3;
  435|      0|	}
  436|      0|#endif
  437|      0|	return php_base64_encode_default;
  438|      2|}
base64.c:resolve_base64_decode:
  442|      2|static base64_decode_func_t resolve_base64_decode(void) {
  443|      2|# ifdef BASE64_INTRIN_AVX512_VBMI_FUNC_PROTO
  444|      2|	if (zend_cpu_supports_avx512_vbmi()) {
  ------------------
  |  Branch (444:6): [True: 0, False: 2]
  ------------------
  445|      0|		return php_base64_decode_ex_avx512_vbmi;
  446|      0|	} else
  447|      2|# endif
  448|      2|# ifdef BASE64_INTRIN_AVX512_FUNC_PROTO
  449|      2|	if (zend_cpu_supports_avx512()) {
  ------------------
  |  Branch (449:6): [True: 0, False: 2]
  ------------------
  450|      0|		return php_base64_decode_ex_avx512;
  451|      0|	} else
  452|      2|# endif
  453|      2|# ifdef ZEND_INTRIN_AVX2_FUNC_PROTO
  454|      2|	if (zend_cpu_supports_avx2()) {
  ------------------
  |  Branch (454:6): [True: 2, False: 0]
  ------------------
  455|      2|		return php_base64_decode_ex_avx2;
  456|      2|	} else
  457|      0|# endif
  458|      0|#ifdef ZEND_INTRIN_SSSE3_FUNC_PROTO
  459|      0|	if (zend_cpu_supports_ssse3()) {
  ------------------
  |  Branch (459:6): [True: 0, False: 0]
  ------------------
  460|      0|		return php_base64_decode_ex_ssse3;
  461|      0|	}
  462|      0|#endif
  463|      0|	return php_base64_decode_ex_default;
  464|      2|}

zm_startup_basic:
  277|      2|{
  278|       |#ifdef ZTS
  279|       |	ts_allocate_id(&basic_globals_id, sizeof(php_basic_globals), (ts_allocate_ctor) basic_globals_ctor, (ts_allocate_dtor) basic_globals_dtor);
  280|       |# ifdef PHP_WIN32
  281|       |	ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor)php_win32_core_globals_ctor, (ts_allocate_dtor)php_win32_core_globals_dtor );
  282|       |# endif
  283|       |#else
  284|      2|	basic_globals_ctor(&basic_globals);
  285|       |# ifdef PHP_WIN32
  286|       |	php_win32_core_globals_ctor(&the_php_win32_core_globals);
  287|       |# endif
  288|      2|#endif
  289|       |
  290|      2|	register_basic_functions_symbols(module_number);
  291|       |
  292|      2|	php_ce_incomplete_class = register_class___PHP_Incomplete_Class();
  293|      2|	php_register_incomplete_class_handlers();
  294|       |
  295|      2|	assertion_error_ce = register_class_AssertionError(zend_ce_error);
  296|       |
  297|      2|	rounding_mode_ce = register_class_RoundingMode();
  298|      2|	sort_direction_ce = register_class_SortDirection();
  299|       |
  300|      2|	BASIC_MINIT_SUBMODULE(var)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  301|      2|	BASIC_MINIT_SUBMODULE(file)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  302|      2|	BASIC_MINIT_SUBMODULE(browscap)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  303|      2|	BASIC_MINIT_SUBMODULE(standard_filters)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  304|      2|	BASIC_MINIT_SUBMODULE(user_filters)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  305|      2|	BASIC_MINIT_SUBMODULE(password)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  306|      2|	BASIC_MINIT_SUBMODULE(image)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  307|       |
  308|       |#ifdef ZTS
  309|       |	BASIC_MINIT_SUBMODULE(localeconv)
  310|       |#endif
  311|       |
  312|       |#ifdef ZEND_INTRIN_SSE4_2_FUNC_PTR
  313|       |	BASIC_MINIT_SUBMODULE(string_intrin)
  314|       |#endif
  315|       |
  316|       |#ifdef ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PTR
  317|       |	BASIC_MINIT_SUBMODULE(crc32_x86_intrin)
  318|       |#endif
  319|       |
  320|       |#if defined(ZEND_INTRIN_AVX2_FUNC_PTR) || defined(ZEND_INTRIN_SSSE3_FUNC_PTR)
  321|       |	BASIC_MINIT_SUBMODULE(base64_intrin)
  322|       |#endif
  323|       |
  324|      2|	BASIC_MINIT_SUBMODULE(crypt)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  325|       |
  326|      2|	BASIC_MINIT_SUBMODULE(dir)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  327|      2|#ifdef HAVE_SYSLOG_H
  328|      2|	BASIC_MINIT_SUBMODULE(syslog)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  329|      2|#endif
  330|      2|	BASIC_MINIT_SUBMODULE(array)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  331|      2|	BASIC_MINIT_SUBMODULE(assert)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  332|      2|	BASIC_MINIT_SUBMODULE(url_scanner_ex)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  333|      2|#ifdef PHP_CAN_SUPPORT_PROC_OPEN
  334|      2|	BASIC_MINIT_SUBMODULE(proc_open)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  335|      2|#endif
  336|      2|	BASIC_MINIT_SUBMODULE(exec)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  337|       |
  338|      2|	BASIC_MINIT_SUBMODULE(stream_errors)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  339|      2|	BASIC_MINIT_SUBMODULE(user_streams)
  ------------------
  |  |  260|      2|	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |  376|      2|#define PHP_MINIT		ZEND_MODULE_STARTUP_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  224|      2|#define ZEND_MODULE_STARTUP_N(module)       zm_startup_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) != SUCCESS) {\
  |  |  ------------------
  |  |  |  |   27|      2|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  261|      0|		return FAILURE; \
  |  |  262|      0|	}
  ------------------
  340|       |
  341|      2|	php_register_url_stream_wrapper("php", &php_stream_php_wrapper);
  342|      2|	php_register_url_stream_wrapper("file", &php_plain_files_wrapper);
  343|      2|	php_register_url_stream_wrapper("glob", &php_glob_stream_wrapper);
  344|      2|	php_register_url_stream_wrapper("data", &php_stream_rfc2397_wrapper);
  345|      2|	php_register_url_stream_wrapper("http", &php_stream_http_wrapper);
  346|      2|	php_register_url_stream_wrapper("ftp", &php_stream_ftp_wrapper);
  347|       |
  348|      2|	return SUCCESS;
  349|      2|}
zm_activate_basic:
  388|  33.5k|{
  389|  33.5k|	memset(BG(strtok_table), 0, 256);
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  390|       |
  391|  33.5k|	BG(serialize_lock) = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  392|  33.5k|	memset(&BG(serialize), 0, sizeof(BG(serialize)));
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
              	memset(&BG(serialize), 0, sizeof(BG(serialize)));
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  393|  33.5k|	memset(&BG(unserialize), 0, sizeof(BG(unserialize)));
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
              	memset(&BG(unserialize), 0, sizeof(BG(unserialize)));
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  394|       |
  395|  33.5k|	BG(strtok_string) = NULL;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  396|  33.5k|	BG(strtok_last) = NULL;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  397|  33.5k|	BG(ctype_string) = NULL;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  398|  33.5k|	BG(locale_changed) = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  399|  33.5k|	BG(user_compare_fci) = empty_fcall_info;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
              	BG(user_compare_fci) = empty_fcall_info;
  ------------------
  |  |  700|  33.5k|# define empty_fcall_info (zend_fcall_info) {0}
  ------------------
  400|  33.5k|	BG(user_compare_fci_cache) = empty_fcall_info_cache;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
              	BG(user_compare_fci_cache) = empty_fcall_info_cache;
  ------------------
  |  |  701|  33.5k|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
  401|  33.5k|	BG(page_uid) = -1;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  402|  33.5k|	BG(page_gid) = -1;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  403|  33.5k|	BG(page_inode) = -1;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  404|  33.5k|	BG(page_mtime) = -1;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  405|  33.5k|#ifdef HAVE_PUTENV
  406|  33.5k|	zend_hash_init(&BG(putenv_ht), 1, NULL, php_putenv_destructor, 0);
  ------------------
  |  |  111|  33.5k|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  407|  33.5k|#endif
  408|  33.5k|	BG(user_shutdown_function_names) = NULL;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  409|       |
  410|  33.5k|	PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  378|  33.5k|#define PHP_RINIT		ZEND_MODULE_ACTIVATE_N
  |  |  ------------------
  |  |  |  |  226|  33.5k|#define ZEND_MODULE_ACTIVATE_N(module)		zm_activate_##module
  |  |  ------------------
  ------------------
              	PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   27|  33.5k|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  411|  33.5k|	BASIC_RINIT_SUBMODULE(dir)
  ------------------
  |  |  265|  33.5k|	PHP_RINIT(module)(INIT_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  378|  33.5k|#define PHP_RINIT		ZEND_MODULE_ACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|  33.5k|#define ZEND_MODULE_ACTIVATE_N(module)		zm_activate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RINIT(module)(INIT_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   27|  33.5k|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  ------------------
  412|  33.5k|	BASIC_RINIT_SUBMODULE(url_scanner_ex)
  ------------------
  |  |  265|  33.5k|	PHP_RINIT(module)(INIT_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  378|  33.5k|#define PHP_RINIT		ZEND_MODULE_ACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  226|  33.5k|#define ZEND_MODULE_ACTIVATE_N(module)		zm_activate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RINIT(module)(INIT_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   27|  33.5k|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  |  |  ------------------
  ------------------
  413|       |
  414|       |	/* Initialize memory for last http headers */
  415|  33.5k|	ZVAL_UNDEF(&BG(last_http_headers));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  416|       |
  417|       |	/* Setup default context */
  418|  33.5k|	FG(default_context) = NULL;
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  ------------------
  419|       |
  420|       |	/* Default to global wrappers only */
  421|  33.5k|	FG(stream_wrappers) = NULL;
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  ------------------
  422|       |
  423|       |	/* Default to global filters only */
  424|  33.5k|	FG(stream_filters) = NULL;
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  ------------------
  425|       |
  426|  33.5k|	return SUCCESS;
  427|  33.5k|}
zm_deactivate_basic:
  431|  33.5k|{
  432|  33.5k|	if (BG(strtok_string)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 7, False: 33.5k]
  |  |  ------------------
  ------------------
  433|      7|		zend_string_release(BG(strtok_string));
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
  434|      7|		BG(strtok_string) = NULL;
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
  435|      7|	}
  436|  33.5k|#ifdef HAVE_PUTENV
  437|  33.5k|	tsrm_env_lock();
  438|  33.5k|	zend_hash_destroy(&BG(putenv_ht));
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  439|  33.5k|	tsrm_env_unlock();
  440|  33.5k|#endif
  441|       |
  442|  33.5k|	if (BG(umask) != -1) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (442:6): [True: 0, False: 33.5k]
  ------------------
  443|      0|		umask(BG(umask));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  444|      0|	}
  445|       |
  446|       |	/* Check if locale was changed and change it back
  447|       |	 * to the value in startup environment */
  448|  33.5k|	if (BG(locale_changed)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  449|      0|		setlocale(LC_ALL, "C");
  450|      0|		zend_reset_lc_ctype_locale();
  451|      0|		zend_update_current_locale();
  452|      0|		if (BG(ctype_string)) {
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  453|      0|			zend_string_release_ex(BG(ctype_string), 0);
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  454|      0|			BG(ctype_string) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  455|      0|		}
  456|      0|	}
  457|       |
  458|       |	/* FG(stream_wrappers) and FG(stream_filters) are destroyed
  459|       |	 * during php_request_shutdown() */
  460|       |
  461|  33.5k|	PHP_RSHUTDOWN(filestat)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  ------------------
  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  ------------------
  ------------------
              	PHP_RSHUTDOWN(filestat)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  ------------------
  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  ------------------
  462|  33.5k|#ifdef HAVE_SYSLOG_H
  463|  33.5k|	BASIC_RSHUTDOWN_SUBMODULE(syslog);
  ------------------
  |  |  271|  33.5k|	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  |  |  ------------------
  ------------------
  464|  33.5k|#endif
  465|  33.5k|	BASIC_RSHUTDOWN_SUBMODULE(assert)
  ------------------
  |  |  271|  33.5k|	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  |  |  ------------------
  ------------------
  466|  33.5k|	BASIC_RSHUTDOWN_SUBMODULE(url_scanner_ex)
  ------------------
  |  |  271|  33.5k|	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  |  |  ------------------
  ------------------
  467|  33.5k|	BASIC_RSHUTDOWN_SUBMODULE(streams)
  ------------------
  |  |  271|  33.5k|	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  |  |  ------------------
  ------------------
  468|       |#ifdef PHP_WIN32
  469|       |	BASIC_RSHUTDOWN_SUBMODULE(win32_core_globals)
  470|       |#endif
  471|       |
  472|  33.5k|	if (BG(user_tick_functions)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 7, False: 33.5k]
  |  |  ------------------
  ------------------
  473|      7|		zend_llist_destroy(BG(user_tick_functions));
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
  474|      7|		efree(BG(user_tick_functions));
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|      7|		BG(user_tick_functions) = NULL;
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
  476|      7|	}
  477|       |
  478|  33.5k|	BASIC_RSHUTDOWN_SUBMODULE(user_filters)
  ------------------
  |  |  271|  33.5k|	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  |  |  ------------------
  ------------------
  479|  33.5k|	BASIC_RSHUTDOWN_SUBMODULE(browscap)
  ------------------
  |  |  271|  33.5k|	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  379|  33.5k|#define PHP_RSHUTDOWN	ZEND_MODULE_DEACTIVATE_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  227|  33.5k|#define ZEND_MODULE_DEACTIVATE_N(module)	zm_deactivate_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   29|  33.5k|#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
  |  |  ------------------
  ------------------
  480|       |
  481|       |	/* Free last http headers */
  482|  33.5k|	zval_ptr_dtor(&BG(last_http_headers));
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  483|       |
  484|  33.5k|	BG(page_uid) = -1;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  485|  33.5k|	BG(page_gid) = -1;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  486|  33.5k|	return SUCCESS;
  487|  33.5k|}
zm_info_basic:
  491|      1|{
  492|      1|	php_info_print_table_start();
  493|      1|	BASIC_MINFO_SUBMODULE(dl)
  ------------------
  |  |  268|      1|	PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  380|      1|#define PHP_MINFO		ZEND_MODULE_INFO_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  229|      1|#define ZEND_MODULE_INFO_N(module)			zm_info_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   31|      1|#define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module
  |  |  ------------------
  ------------------
  494|      1|	BASIC_MINFO_SUBMODULE(mail)
  ------------------
  |  |  268|      1|	PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  380|      1|#define PHP_MINFO		ZEND_MODULE_INFO_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  229|      1|#define ZEND_MODULE_INFO_N(module)			zm_info_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   31|      1|#define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module
  |  |  ------------------
  ------------------
  495|      1|	php_info_print_table_end();
  496|      1|	BASIC_MINFO_SUBMODULE(assert)
  ------------------
  |  |  268|      1|	PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |  380|      1|#define PHP_MINFO		ZEND_MODULE_INFO_N
  |  |  |  |  ------------------
  |  |  |  |  |  |  229|      1|#define ZEND_MODULE_INFO_N(module)			zm_info_##module
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
  |  |  ------------------
  |  |  |  |   31|      1|#define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module
  |  |  ------------------
  ------------------
  497|      1|}
zif_constant:
  502|      8|{
  503|      8|	zend_string *const_name;
  504|      8|	zval *c;
  505|      8|	zend_class_entry *scope;
  506|       |
  507|     23|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  508|     28|		Z_PARAM_STR(const_name)
  ------------------
  |  | 2102|      7|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      7|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (508:3): [True: 7, False: 0]
  |  Branch (508:3): [True: 0, False: 0]
  |  Branch (508:3): [True: 7, False: 0]
  |  Branch (508:3): [True: 0, False: 0]
  |  Branch (508:3): [True: 7, False: 0]
  |  Branch (508:3): [True: 0, False: 0]
  |  Branch (508:3): [True: 0, False: 7]
  |  Branch (508:3): [True: 7, False: 0]
  |  Branch (508:3): [True: 0, False: 0]
  |  Branch (508:3): [True: 0, False: 0]
  ------------------
  509|      8|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      7|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      7|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (509:2): [True: 7, False: 0]
  |  Branch (509:2): [True: 0, False: 0]
  |  Branch (509:2): [True: 7, False: 0]
  |  Branch (509:2): [True: 0, False: 0]
  ------------------
  510|       |
  511|      7|	scope = zend_get_executed_scope();
  512|      7|	c = zend_get_constant_ex(const_name, scope, ZEND_FETCH_CLASS_EXCEPTION);
  ------------------
  |  | 1052|      7|#define ZEND_FETCH_CLASS_EXCEPTION   0x0200
  ------------------
  513|      7|	if (!c) {
  ------------------
  |  Branch (513:6): [True: 3, False: 4]
  ------------------
  514|      3|		RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (514:3): [True: 0, False: 3]
  |  Branch (514:3): [True: 3, False: 0]
  ------------------
  515|      3|	}
  516|       |
  517|      4|	ZVAL_COPY_OR_DUP(return_value, c);
  ------------------
  |  | 1457|      4|	do {																\
  |  | 1458|      4|		zval *_z1 = (z);												\
  |  | 1459|      4|		const zval *_z2 = (v);											\
  |  | 1460|      4|		zend_refcounted *_gc = Z_COUNTED_P(_z2);						\
  |  |  ------------------
  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1461|      4|		uint32_t _t = Z_TYPE_INFO_P(_z2);								\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1462|      4|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);							\
  |  |  ------------------
  |  |  |  | 1407|      4|	do {												\
  |  |  |  | 1408|      4|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      4|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      4|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      4|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1463|      4|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {								\
  |  |  ------------------
  |  |  |  |  820|      4|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      4|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1464|      0|			/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */			\
  |  | 1465|      0|			if (EXPECTED(!(GC_FLAGS(_gc) & GC_PERSISTENT)				\
  |  |  ------------------
  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  |  Branch (456:52): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1466|      0|					|| GC_TYPE(_gc) == IS_OBJECT)) {					\
  |  | 1467|      0|				GC_ADDREF(_gc);											\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1468|      0|			} else {													\
  |  | 1469|      0|				zval_copy_ctor_func(_z1);								\
  |  | 1470|      0|			}															\
  |  | 1471|      0|		}																\
  |  | 1472|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1472:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  518|      4|	if (Z_TYPE_P(return_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(return_value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      4|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (518:6): [True: 0, False: 4]
  ------------------
  519|      0|		if (UNEXPECTED(zval_update_constant_ex(return_value, scope) != SUCCESS)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  520|       |			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (520:4): [True: 0, False: 0]
  |  Branch (520:4): [True: 0, False: 0]
  ------------------
  521|      0|		}
  522|      0|	}
  523|      4|}
php_getenv:
  647|      2|PHPAPI zend_string *php_getenv(const char *str, size_t str_len) {
  648|       |#ifdef PHP_WIN32
  649|       |	{
  650|       |		wchar_t *keyw = php_win32_cp_conv_any_to_w(str, str_len, PHP_WIN32_CP_IGNORE_LEN_P);
  651|       |		if (!keyw) {
  652|       |			return NULL;
  653|       |		}
  654|       |
  655|       |		SetLastError(0);
  656|       |		/* If the given buffer is not large enough to hold the data, the return value is
  657|       |		 * the buffer size,  in characters, required to hold the string and its terminating
  658|       |		 * null character. We use this return value to alloc the final buffer. */
  659|       |		wchar_t dummybuf;
  660|       |		DWORD size = GetEnvironmentVariableW(keyw, &dummybuf, 0);
  661|       |		if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) {
  662|       |			/* The environment variable doesn't exist. */
  663|       |			free(keyw);
  664|       |			return NULL;
  665|       |		}
  666|       |
  667|       |		if (size == 0) {
  668|       |			/* env exists, but it is empty */
  669|       |			free(keyw);
  670|       |			return ZSTR_EMPTY_ALLOC();
  671|       |		}
  672|       |
  673|       |		wchar_t *valw = emalloc((size + 1) * sizeof(wchar_t));
  674|       |		size = GetEnvironmentVariableW(keyw, valw, size);
  675|       |		if (size == 0) {
  676|       |			/* has been removed between the two calls */
  677|       |			free(keyw);
  678|       |			efree(valw);
  679|       |			return ZSTR_EMPTY_ALLOC();
  680|       |		} else {
  681|       |			char *ptr = php_win32_cp_w_to_any(valw);
  682|       |			zend_string *result = zend_string_init(ptr, strlen(ptr), 0);
  683|       |			free(ptr);
  684|       |			free(keyw);
  685|       |			efree(valw);
  686|       |			return result;
  687|       |		}
  688|       |	}
  689|       |#else
  690|      2|	tsrm_env_lock();
  691|       |
  692|       |	/* system method returns a const */
  693|      2|	char *ptr = getenv(str);
  694|      2|	zend_string *result = NULL;
  695|      2|	if (ptr) {
  ------------------
  |  Branch (695:6): [True: 0, False: 2]
  ------------------
  696|      0|		result = zend_string_init(ptr, strlen(ptr), 0);
  697|      0|	}
  698|       |
  699|      2|	tsrm_env_unlock();
  700|      2|	return result;
  701|      2|#endif
  702|      2|}
zif_getenv:
  707|      2|{
  708|      2|	char *str = NULL;
  709|      2|	size_t str_len;
  710|      2|	bool local_only = 0;
  711|       |
  712|      6|	ZEND_PARSE_PARAMETERS_START(0, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  713|      6|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  714|      8|		Z_PARAM_PATH_OR_NULL(str, str_len)
  ------------------
  |  | 2045|      2|	Z_PARAM_PATH_EX(dest, dest_len, 1, 0)
  |  |  ------------------
  |  |  |  | 2034|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2035|      2|		if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2036|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2036:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2037|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2038|      0|			break; \
  |  |  |  | 2039|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (714:3): [True: 2, False: 0]
  |  Branch (714:3): [True: 0, False: 0]
  |  Branch (714:3): [True: 0, False: 2]
  |  Branch (714:3): [True: 2, False: 0]
  |  Branch (714:3): [True: 2, False: 0]
  |  Branch (714:3): [True: 0, False: 0]
  |  Branch (714:3): [True: 2, False: 0]
  |  Branch (714:3): [True: 0, False: 0]
  |  Branch (714:3): [True: 0, False: 0]
  |  Branch (714:3): [True: 0, False: 0]
  ------------------
  715|      6|		Z_PARAM_BOOL(local_only)
  ------------------
  |  | 1735|      2|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (715:3): [True: 2, False: 0]
  |  Branch (715:3): [True: 0, False: 0]
  |  Branch (715:3): [True: 0, False: 2]
  |  Branch (715:3): [True: 2, False: 0]
  |  Branch (715:3): [True: 2, False: 0]
  |  Branch (715:3): [True: 0, False: 0]
  |  Branch (715:3): [True: 2, False: 0]
  |  Branch (715:3): [True: 0, False: 0]
  |  Branch (715:3): [True: 0, False: 0]
  |  Branch (715:3): [True: 0, False: 0]
  ------------------
  716|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (716:2): [True: 0, False: 0]
  |  Branch (716:2): [True: 0, False: 0]
  |  Branch (716:2): [True: 0, False: 0]
  |  Branch (716:2): [True: 0, False: 0]
  ------------------
  717|       |
  718|      2|	if (!str) {
  ------------------
  |  Branch (718:6): [True: 0, False: 2]
  ------------------
  719|      0|		array_init(return_value);
  720|      0|		php_load_environment_variables(return_value);
  721|      0|		return;
  722|      0|	}
  723|       |
  724|      2|	if (!local_only) {
  ------------------
  |  Branch (724:6): [True: 2, False: 0]
  ------------------
  725|       |		/* SAPI method returns an emalloc()'d string */
  726|      2|		char *ptr = sapi_getenv(str, str_len);
  727|      2|		if (ptr) {
  ------------------
  |  Branch (727:7): [True: 0, False: 2]
  ------------------
  728|       |			// TODO: avoid reallocation ???
  729|      0|			RETVAL_STRING(ptr);
  ------------------
  |  | 1028|      0|#define RETVAL_STRING(s)				ZVAL_STRING(return_value, s)
  |  |  ------------------
  |  |  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  968|      0|		const char *_s = (s);					\
  |  |  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  970|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  730|      0|			efree(ptr);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  731|      0|			return;
  732|      0|		}
  733|      2|	}
  734|       |
  735|      2|	zend_string *res = php_getenv(str, str_len);
  736|      2|	if (res) {
  ------------------
  |  Branch (736:6): [True: 0, False: 2]
  ------------------
  737|      0|		RETURN_STR(res);
  ------------------
  |  | 1050|      0|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      0|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      0|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  738|      0|	}
  739|      2|	RETURN_FALSE;
  ------------------
  |  | 1069|      2|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      2|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      2|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      2|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  740|      2|}
zif_error_log:
 1346|      4|{
 1347|      4|	zend_string *message, *opt = NULL, *headers = NULL;
 1348|      4|	zend_long erropt = 0;
 1349|       |
 1350|     12|	ZEND_PARSE_PARAMETERS_START(1, 4)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1351|     16|		Z_PARAM_STR(message)
  ------------------
  |  | 2102|      4|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      4|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1351:3): [True: 4, False: 0]
  |  Branch (1351:3): [True: 0, False: 0]
  |  Branch (1351:3): [True: 4, False: 0]
  |  Branch (1351:3): [True: 0, False: 0]
  |  Branch (1351:3): [True: 4, False: 0]
  |  Branch (1351:3): [True: 0, False: 0]
  |  Branch (1351:3): [True: 0, False: 4]
  |  Branch (1351:3): [True: 4, False: 0]
  |  Branch (1351:3): [True: 0, False: 0]
  |  Branch (1351:3): [True: 0, False: 0]
  ------------------
 1352|      4|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      4|	_optional = 1;
  ------------------
 1353|     14|		Z_PARAM_LONG(erropt)
  ------------------
  |  | 1905|      4|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      4|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      4|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      3|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1353:3): [True: 4, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 0, False: 4]
  |  Branch (1353:3): [True: 4, False: 0]
  |  Branch (1353:3): [True: 4, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 4, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  ------------------
 1354|      9|		Z_PARAM_PATH_STR_OR_NULL(opt)
  ------------------
  |  | 2060|      3|	Z_PARAM_PATH_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2049|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      3|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      3|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2050|      0|		if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2051|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2051:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2052|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2053|      0|			break; \
  |  |  |  | 2054|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1354:3): [True: 3, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 0, False: 3]
  |  Branch (1354:3): [True: 3, False: 0]
  |  Branch (1354:3): [True: 3, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 3, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  ------------------
 1355|      0|		Z_PARAM_STR_OR_NULL(headers)
  ------------------
  |  | 2105|      0|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  |  Branch (1355:3): [True: 0, False: 0]
  ------------------
 1356|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1356:2): [True: 0, False: 0]
  |  Branch (1356:2): [True: 0, False: 0]
  |  Branch (1356:2): [True: 0, False: 0]
  |  Branch (1356:2): [True: 0, False: 0]
  ------------------
 1357|       |
 1358|      4|	RETURN_BOOL(_php_error_log((int) erropt, message, opt, headers) == SUCCESS);
  ------------------
  |  | 1046|      4|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      4|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      4|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      4|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      4|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      6|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      4|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1359|      4|}
_php_error_log:
 1363|      4|{
 1364|      4|	php_stream *stream = NULL;
 1365|      4|	size_t nbytes;
 1366|      4|	const char *hdrs = NULL;
 1367|       |
 1368|      4|	switch (opt_err)
 1369|      4|	{
 1370|      2|		case 1:		/*send an email */
  ------------------
  |  Branch (1370:3): [True: 2, False: 2]
  ------------------
 1371|      2|			if (!opt) {
  ------------------
  |  Branch (1371:8): [True: 2, False: 0]
  ------------------
 1372|      2|				return FAILURE;
 1373|      2|			}
 1374|       |
 1375|      0|			hdrs = headers ? ZSTR_VAL(headers) : NULL;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1375:11): [True: 0, False: 0]
  ------------------
 1376|      0|			if (!php_mail(ZSTR_VAL(opt), "PHP error_log message", ZSTR_VAL(message), hdrs, NULL)) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			if (!php_mail(ZSTR_VAL(opt), "PHP error_log message", ZSTR_VAL(message), hdrs, NULL)) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1376:8): [True: 0, False: 0]
  ------------------
 1377|      0|				return FAILURE;
 1378|      0|			}
 1379|      0|			break;
 1380|       |
 1381|      0|		case 2:		/*send to an address */
  ------------------
  |  Branch (1381:3): [True: 0, False: 4]
  ------------------
 1382|      0|			zend_value_error("TCP/IP option is not available for error logging");
 1383|      0|			return FAILURE;
 1384|       |
 1385|      0|		case 3:		/*save to a file */
  ------------------
  |  Branch (1385:3): [True: 0, False: 4]
  ------------------
 1386|      0|			stream = php_stream_open_wrapper(opt ? ZSTR_VAL(opt) : NULL, "a", REPORT_ERRORS, NULL);
  ------------------
  |  |  644|      0|#define php_stream_open_wrapper(path, mode, options, opened)	_php_stream_open_wrapper_ex((path), (mode), (options), (opened), NULL STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (644:91): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1387|      0|			if (!stream) {
  ------------------
  |  Branch (1387:8): [True: 0, False: 0]
  ------------------
 1388|      0|				return FAILURE;
 1389|      0|			}
 1390|      0|			nbytes = php_stream_write(stream, ZSTR_VAL(message), ZSTR_LEN(message));
  ------------------
  |  |  374|      0|#define php_stream_write(stream, buf, count)	_php_stream_write(stream, (buf), (count))
  ------------------
 1391|      0|			php_stream_close(stream);
  ------------------
  |  |  357|      0|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      0|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      0|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1392|      0|			if (nbytes != ZSTR_LEN(message)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1392:8): [True: 0, False: 0]
  ------------------
 1393|      0|				return FAILURE;
 1394|      0|			}
 1395|      0|			break;
 1396|       |
 1397|      0|		case 4: /* send to SAPI */
  ------------------
  |  Branch (1397:3): [True: 0, False: 4]
  ------------------
 1398|      0|			if (sapi_module.log_message) {
  ------------------
  |  Branch (1398:8): [True: 0, False: 0]
  ------------------
 1399|      0|				sapi_module.log_message(ZSTR_VAL(message), -1);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1400|      0|			} else {
 1401|      0|				return FAILURE;
 1402|      0|			}
 1403|      0|			break;
 1404|       |
 1405|      2|		default:
  ------------------
  |  Branch (1405:3): [True: 2, False: 2]
  ------------------
 1406|      2|			php_log_err_with_severity(ZSTR_VAL(message), LOG_NOTICE);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1407|      2|			break;
 1408|      4|	}
 1409|      2|	return SUCCESS;
 1410|      4|}
zif_call_user_func:
 1468|      7|{
 1469|      7|	zval retval;
 1470|      7|	zend_fcall_info fci;
 1471|      7|	zend_fcall_info_cache fci_cache;
 1472|       |
 1473|     21|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      7|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      7|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      7|		const int _flags = (flags); \
  |  |  |  | 1599|      7|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      7|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      7|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      7|		uint32_t _i = 0; \
  |  |  |  | 1603|      7|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      7|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      7|		char *_error = NULL; \
  |  |  |  | 1606|      7|		bool _dummy = 0; \
  |  |  |  | 1607|      7|		bool _optional = 0; \
  |  |  |  | 1608|      7|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      7|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      7|		((void)_i); \
  |  |  |  | 1610|      7|		((void)_real_arg); \
  |  |  |  | 1611|      7|		((void)_arg); \
  |  |  |  | 1612|      7|		((void)_expected_type); \
  |  |  |  | 1613|      7|		((void)_error); \
  |  |  |  | 1614|      7|		((void)_optional); \
  |  |  |  | 1615|      7|		((void)_dummy); \
  |  |  |  | 1616|      7|		\
  |  |  |  | 1617|      7|		do { \
  |  |  |  | 1618|      7|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      7|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      7|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      7|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1474|     28|		Z_PARAM_FUNC(fci, fci_cache)
  ------------------
  |  | 1833|      7|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      7|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      1|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      1|			} else { \
  |  |  |  | 1825|      1|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      2|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1826|      1|			} \
  |  |  |  | 1827|      1|			break; \
  |  |  |  | 1828|      1|		} \
  |  |  ------------------
  ------------------
  |  Branch (1474:3): [True: 7, False: 0]
  |  Branch (1474:3): [True: 0, False: 0]
  |  Branch (1474:3): [True: 7, False: 0]
  |  Branch (1474:3): [True: 0, False: 0]
  |  Branch (1474:3): [True: 7, False: 0]
  |  Branch (1474:3): [True: 0, False: 0]
  |  Branch (1474:3): [True: 0, False: 7]
  |  Branch (1474:3): [True: 7, False: 0]
  |  Branch (1474:3): [True: 0, False: 0]
  |  Branch (1474:3): [True: 0, False: 0]
  ------------------
 1475|      6|		Z_PARAM_VARIADIC_WITH_NAMED(fci.params, fci.param_count, fci.named_params)
  ------------------
  |  | 2142|      6|#define Z_PARAM_VARIADIC_WITH_NAMED(dest, dest_num, dest_named) do { \
  |  | 2143|      6|		uint32_t _num_varargs = _num_args - _i; \
  |  | 2144|      6|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  ------------------
  |  |  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (456:32): [True: 3, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2145|      3|			dest = _real_arg + 1; \
  |  | 2146|      3|			dest_num = _num_varargs; \
  |  | 2147|      3|		} else { \
  |  | 2148|      3|			dest = NULL; \
  |  | 2149|      3|			dest_num = 0; \
  |  | 2150|      3|		} \
  |  | 2151|      6|		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  687|      6|	Z_TYPE_INFO((call)->This)
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		if (ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { \
  |  |  ------------------
  |  |  |  |  673|      6|#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
  |  |  ------------------
  |  |  |  Branch (2151:7): [True: 2, False: 4]
  |  |  ------------------
  |  | 2152|      2|			dest_named = execute_data->extra_named_params; \
  |  | 2153|      4|		} else { \
  |  | 2154|      4|			dest_named = NULL; \
  |  | 2155|      4|		} \
  |  | 2156|      6|	} while (0);
  |  |  ------------------
  |  |  |  Branch (2156:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1476|      7|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|      7|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1476:2): [True: 6, False: 0]
  |  Branch (1476:2): [True: 0, False: 0]
  |  Branch (1476:2): [True: 0, False: 6]
  |  Branch (1476:2): [True: 6, False: 0]
  ------------------
 1477|       |
 1478|      6|	fci.retval = &retval;
 1479|       |
 1480|      6|	if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      6|#define IS_UNDEF					0
  ------------------
  |  Branch (1480:6): [True: 6, False: 0]
  |  Branch (1480:57): [True: 5, False: 1]
  ------------------
 1481|      5|		if (Z_ISREF(retval)) {
  ------------------
  |  |  963|      5|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  ------------------
  |  |  |  Branch (963:26): [True: 1, False: 4]
  |  |  ------------------
  ------------------
 1482|      1|			zend_unwrap_reference(&retval);
 1483|      1|		}
 1484|      5|		ZVAL_COPY_VALUE(return_value, &retval);
  ------------------
  |  | 1416|      5|	do {												\
  |  | 1417|      5|		zval *_z1 = (z);								\
  |  | 1418|      5|		const zval *_z2 = (v);							\
  |  | 1419|      5|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      5|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      5|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      5|	do {												\
  |  |  |  | 1408|      5|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      5|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      5|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      5|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1485|      5|	}
 1486|      6|}
zif_call_user_func_array:
 1492|      2|{
 1493|      2|	zval retval;
 1494|      2|	HashTable *params;
 1495|      2|	zend_fcall_info fci;
 1496|      2|	zend_fcall_info_cache fci_cache;
 1497|       |
 1498|      5|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1499|      5|		Z_PARAM_FUNC(fci, fci_cache)
  ------------------
  |  | 1833|      1|	Z_PARAM_FUNC_EX2(dest_fci, dest_fcc, 0, 0, true)
  |  |  ------------------
  |  |  |  | 1819|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1820|      1|		if (UNEXPECTED(!zend_parse_arg_func(_arg, &dest_fci, &dest_fcc, check_null, &_error, free_trampoline))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1821|      0|			if (!_error) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1821:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1822|      0|				_expected_type = check_null ? Z_EXPECTED_FUNC_OR_NULL : Z_EXPECTED_FUNC; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1822:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1823|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1824|      0|			} else { \
  |  |  |  | 1825|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1595|      0|#define ZPP_ERROR_WRONG_CALLBACK_OR_NULL        12
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CALLBACK_OR_NULL : ZPP_ERROR_WRONG_CALLBACK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1585|      0|#define ZPP_ERROR_WRONG_CALLBACK                2
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1825:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1826|      0|			} \
  |  |  |  | 1827|      0|			break; \
  |  |  |  | 1828|      0|		} \
  |  |  ------------------
  ------------------
  |  Branch (1499:3): [True: 1, False: 0]
  |  Branch (1499:3): [True: 0, False: 0]
  |  Branch (1499:3): [True: 1, False: 0]
  |  Branch (1499:3): [True: 0, False: 0]
  |  Branch (1499:3): [True: 1, False: 0]
  |  Branch (1499:3): [True: 0, False: 0]
  |  Branch (1499:3): [True: 0, False: 1]
  |  Branch (1499:3): [True: 1, False: 0]
  |  Branch (1499:3): [True: 0, False: 0]
  |  Branch (1499:3): [True: 0, False: 0]
  ------------------
 1500|      5|		Z_PARAM_ARRAY_HT(params)
  ------------------
  |  | 1861|      1|	Z_PARAM_ARRAY_HT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1858|      1|	Z_PARAM_ARRAY_HT_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1850|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1851|      1|		if (UNEXPECTED(!zend_parse_arg_array_ht(_arg, &dest, check_null, 0, separate))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1852|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1852:21): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1853|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1854|      0|			break; \
  |  |  |  |  |  | 1855|      0|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1500:3): [True: 1, False: 0]
  |  Branch (1500:3): [True: 0, False: 0]
  |  Branch (1500:3): [True: 1, False: 0]
  |  Branch (1500:3): [True: 0, False: 0]
  |  Branch (1500:3): [True: 1, False: 0]
  |  Branch (1500:3): [True: 0, False: 0]
  |  Branch (1500:3): [True: 0, False: 1]
  |  Branch (1500:3): [True: 1, False: 0]
  |  Branch (1500:3): [True: 0, False: 0]
  |  Branch (1500:3): [True: 0, False: 0]
  ------------------
 1501|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1501:2): [True: 1, False: 0]
  |  Branch (1501:2): [True: 0, False: 0]
  |  Branch (1501:2): [True: 1, False: 0]
  |  Branch (1501:2): [True: 0, False: 0]
  ------------------
 1502|       |
 1503|      1|	fci.named_params = params;
 1504|      1|	fci.retval = &retval;
 1505|       |
 1506|      1|	if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (1506:6): [True: 1, False: 0]
  |  Branch (1506:57): [True: 1, False: 0]
  ------------------
 1507|      1|		if (Z_ISREF(retval)) {
  ------------------
  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  ------------------
  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1508|      0|			zend_unwrap_reference(&retval);
 1509|      0|		}
 1510|      1|		ZVAL_COPY_VALUE(return_value, &retval);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1511|      1|	}
 1512|      1|}
php_call_shutdown_functions:
 1645|  33.5k|{
 1646|  33.5k|	if (BG(user_shutdown_function_names)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 6, False: 33.5k]
  |  |  ------------------
  ------------------
 1647|      6|		zend_try {
  ------------------
  |  |  276|      6|	{															\
  |  |  277|      6|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      6|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      6|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      6|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      6|																\
  |  |  280|      6|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      6|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      6|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 1648|      6|			zend_hash_apply(BG(user_shutdown_function_names), user_shutdown_function_call);
  ------------------
  |  |  113|      6|#define BG(v) (basic_globals.v)
  ------------------
 1649|      6|		} zend_end_try();
  ------------------
  |  |  288|      6|		}														\
  |  |  289|      6|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      6|	}
  ------------------
 1650|      6|	}
 1651|  33.5k|}
php_free_shutdown_functions:
 1655|  33.5k|{
 1656|  33.5k|	if (BG(user_shutdown_function_names))
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 6, False: 33.5k]
  |  |  ------------------
  ------------------
 1657|      6|		zend_try {
  ------------------
  |  |  276|      6|	{															\
  |  |  277|      6|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      6|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      6|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      6|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      6|																\
  |  |  280|      6|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      6|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      6|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 1658|      6|			zend_hash_destroy(BG(user_shutdown_function_names));
  ------------------
  |  |  113|      6|#define BG(v) (basic_globals.v)
  ------------------
 1659|      6|			FREE_HASHTABLE(BG(user_shutdown_function_names));
  ------------------
  |  |  235|      6|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      6|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1660|      6|			BG(user_shutdown_function_names) = NULL;
  ------------------
  |  |  113|      6|#define BG(v) (basic_globals.v)
  ------------------
 1661|      6|		} zend_catch {
  ------------------
  |  |  283|      6|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|      6|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      0|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1661:5): [True: 0, False: 6]
  |  Branch (1661:5): [True: 6, False: 0]
  |  Branch (1661:5): [True: 0, False: 0]
  |  Branch (1661:5): [True: 0, False: 0]
  ------------------
 1662|       |			/* maybe shutdown method call exit, we just ignore it */
 1663|      0|			FREE_HASHTABLE(BG(user_shutdown_function_names));
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1664|      0|			BG(user_shutdown_function_names) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1665|  33.5k|		} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|      6|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      6|	}
  ------------------
 1666|  33.5k|}
zif_register_shutdown_function:
 1671|      9|{
 1672|      9|	zend_fcall_info fci;
 1673|      9|	php_shutdown_function_entry entry = {
 1674|      9|		.fci_cache = empty_fcall_info_cache,
  ------------------
  |  |  701|      9|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
 1675|      9|		.params = NULL,
 1676|      9|		.param_count = 0,
 1677|      9|	};
 1678|      9|	zval *params = NULL;
 1679|      9|	bool status;
 1680|       |
 1681|      9|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "F*", &fci, &entry.fci_cache, &params, &entry.param_count) == FAILURE) {
  ------------------
  |  |  529|      9|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      9|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      9|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1681:6): [True: 1, False: 8]
  ------------------
 1682|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1682:3): [True: 0, False: 1]
  |  Branch (1682:3): [True: 1, False: 0]
  ------------------
 1683|      1|	}
 1684|       |
 1685|      8|	zend_fcc_addref(&entry.fci_cache);
 1686|      8|	if (entry.param_count) {
  ------------------
  |  Branch (1686:6): [True: 0, False: 8]
  ------------------
 1687|      0|		ZEND_ASSERT(params != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1687:3): [True: 0, False: 0]
  |  Branch (1687:3): [True: 0, False: 0]
  ------------------
 1688|      0|		entry.params = (zval *) safe_emalloc(entry.param_count, sizeof(zval), 0);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1689|      0|		for (uint32_t i = 0; i < entry.param_count; i++) {
  ------------------
  |  Branch (1689:24): [True: 0, False: 0]
  ------------------
 1690|      0|			ZVAL_COPY(&entry.params[i], &params[i]);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1691|      0|		}
 1692|      0|	}
 1693|       |
 1694|      8|	status = append_user_shutdown_function(&entry);
 1695|       |	ZEND_ASSERT(status);
  ------------------
  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1695:2): [True: 0, False: 8]
  |  Branch (1695:2): [True: 8, False: 0]
  ------------------
 1696|      8|}
append_user_shutdown_function:
 1722|      8|{
 1723|      8|	if (!BG(user_shutdown_function_names)) {
  ------------------
  |  |  113|      8|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1723:6): [True: 6, False: 2]
  ------------------
 1724|      6|		ALLOC_HASHTABLE(BG(user_shutdown_function_names));
  ------------------
  |  |  232|      6|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1725|      6|		zend_hash_init(BG(user_shutdown_function_names), 0, NULL, user_shutdown_function_dtor, 0);
  ------------------
  |  |  111|      6|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1726|      6|	}
 1727|       |
 1728|      8|	return zend_hash_next_index_insert_mem(BG(user_shutdown_function_names), shutdown_function_entry, sizeof(php_shutdown_function_entry)) != NULL;
  ------------------
  |  |  113|      8|#define BG(v) (basic_globals.v)
  ------------------
 1729|      8|}
php_get_highlight_struct:
 1733|  3.40k|{
 1734|  3.40k|	syntax_highlighter_ini->highlight_comment = zend_ini_string_literal("highlight.comment");
  ------------------
  |  |  101|  3.40k|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1735|  3.40k|	syntax_highlighter_ini->highlight_default = zend_ini_string_literal("highlight.default");
  ------------------
  |  |  101|  3.40k|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1736|  3.40k|	syntax_highlighter_ini->highlight_html    = zend_ini_string_literal("highlight.html");
  ------------------
  |  |  101|  3.40k|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1737|  3.40k|	syntax_highlighter_ini->highlight_keyword = zend_ini_string_literal("highlight.keyword");
  ------------------
  |  |  101|  3.40k|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1738|       |	syntax_highlighter_ini->highlight_string  = zend_ini_string_literal("highlight.string");
  ------------------
  |  |  101|  3.40k|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1739|  3.40k|}
zif_highlight_string:
 1826|  3.40k|{
 1827|  3.40k|	zend_string *str;
 1828|  3.40k|	zend_syntax_highlighter_ini syntax_highlighter_ini;
 1829|  3.40k|	char *hicompiled_string_description;
 1830|  3.40k|	bool i = 0;
 1831|  3.40k|	int old_error_reporting = EG(error_reporting);
  ------------------
  |  |   45|  3.40k|# define EG(v) (executor_globals.v)
  ------------------
 1832|       |
 1833|  10.2k|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|  3.40k|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|  3.40k|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|  3.40k|		const int _flags = (flags); \
  |  |  |  | 1599|  3.40k|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|  3.40k|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|  3.40k|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|  3.40k|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|  3.40k|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|  3.40k|		uint32_t _i = 0; \
  |  |  |  | 1603|  3.40k|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|  3.40k|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|  3.40k|		char *_error = NULL; \
  |  |  |  | 1606|  3.40k|		bool _dummy = 0; \
  |  |  |  | 1607|  3.40k|		bool _optional = 0; \
  |  |  |  | 1608|  3.40k|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|  3.40k|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|  3.40k|		((void)_i); \
  |  |  |  | 1610|  3.40k|		((void)_real_arg); \
  |  |  |  | 1611|  3.40k|		((void)_arg); \
  |  |  |  | 1612|  3.40k|		((void)_expected_type); \
  |  |  |  | 1613|  3.40k|		((void)_error); \
  |  |  |  | 1614|  3.40k|		((void)_optional); \
  |  |  |  | 1615|  3.40k|		((void)_dummy); \
  |  |  |  | 1616|  3.40k|		\
  |  |  |  | 1617|  3.40k|		do { \
  |  |  |  | 1618|  3.40k|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  6.80k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|  3.40k|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  3.40k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|  3.40k|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|  3.40k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|  3.40k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|  3.40k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1834|  13.6k|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|  3.40k|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|  3.40k|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|  3.40k|	++_i; \
  |  |  |  |  |  | 1654|  3.40k|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  3.40k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|  3.40k|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  3.40k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|  3.40k|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|  3.40k|	_real_arg++; \
  |  |  |  |  |  | 1660|  3.40k|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|  3.40k|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|  3.40k|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|  3.40k|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  3.40k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1834:3): [True: 3.40k, False: 0]
  |  Branch (1834:3): [True: 0, False: 0]
  |  Branch (1834:3): [True: 3.40k, False: 0]
  |  Branch (1834:3): [True: 0, False: 0]
  |  Branch (1834:3): [True: 3.40k, False: 0]
  |  Branch (1834:3): [True: 0, False: 0]
  |  Branch (1834:3): [True: 0, False: 3.40k]
  |  Branch (1834:3): [True: 3.40k, False: 0]
  |  Branch (1834:3): [True: 0, False: 0]
  |  Branch (1834:3): [True: 0, False: 0]
  ------------------
 1835|  3.40k|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|  3.40k|	_optional = 1;
  ------------------
 1836|  6.81k|		Z_PARAM_BOOL(i)
  ------------------
  |  | 1735|  3.40k|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|  3.40k|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|  3.40k|	++_i; \
  |  |  |  |  |  | 1654|  3.40k|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  3.40k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|  3.40k|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  3.40k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|  3.40k|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 3.40k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|  3.40k|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  3.40k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 3.40k, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|  3.40k|	} \
  |  |  |  |  |  | 1659|  3.40k|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      3|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1836:3): [True: 3.40k, False: 0]
  |  Branch (1836:3): [True: 0, False: 0]
  |  Branch (1836:3): [True: 0, False: 3.40k]
  |  Branch (1836:3): [True: 3.40k, False: 0]
  |  Branch (1836:3): [True: 3.40k, False: 0]
  |  Branch (1836:3): [True: 0, False: 0]
  |  Branch (1836:3): [True: 3.40k, False: 0]
  |  Branch (1836:3): [True: 0, False: 0]
  |  Branch (1836:3): [True: 0, False: 0]
  |  Branch (1836:3): [True: 0, False: 0]
  ------------------
 1837|  3.40k|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|  3.40k|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  3.40k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|  3.40k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1837:2): [True: 3, False: 0]
  |  Branch (1837:2): [True: 0, False: 0]
  |  Branch (1837:2): [True: 3, False: 0]
  |  Branch (1837:2): [True: 0, False: 0]
  ------------------
 1838|       |
 1839|  3.40k|	if (i) {
  ------------------
  |  Branch (1839:6): [True: 3, False: 3.40k]
  ------------------
 1840|      3|		if (UNEXPECTED(php_output_start_default() != SUCCESS)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1841|      0|			zend_throw_error(NULL, "Unable to start output handler");
 1842|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1842:4): [True: 0, False: 0]
  |  Branch (1842:4): [True: 0, False: 0]
  ------------------
 1843|      0|		}
 1844|      3|	}
 1845|       |
 1846|  3.40k|	EG(error_reporting) = E_ERROR;
  ------------------
  |  |   45|  3.40k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(error_reporting) = E_ERROR;
  ------------------
  |  |   22|  3.40k|#define E_ERROR				(1<<0L)
  ------------------
 1847|       |
 1848|  3.40k|	php_get_highlight_struct(&syntax_highlighter_ini);
 1849|       |
 1850|  3.40k|	hicompiled_string_description = zend_make_compiled_string_description("highlighted code");
 1851|       |
 1852|  3.40k|	highlight_string(str, &syntax_highlighter_ini, hicompiled_string_description);
 1853|  3.40k|	efree(hicompiled_string_description);
  ------------------
  |  |  154|  3.40k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  3.40k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  3.40k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  3.40k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  3.40k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1854|       |
 1855|  3.40k|	EG(error_reporting) = old_error_reporting;
  ------------------
  |  |   45|  3.40k|# define EG(v) (executor_globals.v)
  ------------------
 1856|       |
 1857|  3.40k|	if (i) {
  ------------------
  |  Branch (1857:6): [True: 3, False: 3.40k]
  ------------------
 1858|      3|		php_output_get_contents(return_value);
 1859|      3|		php_output_discard();
 1860|      3|		ZEND_ASSERT(Z_TYPE_P(return_value) == IS_STRING);
  ------------------
  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1860:3): [True: 0, False: 3]
  |  Branch (1860:3): [True: 3, False: 0]
  ------------------
 1861|  3.40k|	} else {
 1862|       |		// TODO Make this function void?
 1863|  3.40k|		RETURN_TRUE;
  ------------------
  |  | 1070|  3.40k|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|  3.40k|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|  3.40k|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|  3.40k|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  3.40k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  3.40k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|  3.40k|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|  3.40k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 3.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1864|  3.40k|	}
 1865|  3.40k|}
zif_ini_parse_quantity:
 1870|      3|{
 1871|      3|	zend_string *shorthand;
 1872|      3|	zend_string *errstr;
 1873|       |
 1874|      9|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1875|     12|		Z_PARAM_STR(shorthand)
  ------------------
  |  | 2102|      3|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      3|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1875:3): [True: 3, False: 0]
  |  Branch (1875:3): [True: 0, False: 0]
  |  Branch (1875:3): [True: 3, False: 0]
  |  Branch (1875:3): [True: 0, False: 0]
  |  Branch (1875:3): [True: 3, False: 0]
  |  Branch (1875:3): [True: 0, False: 0]
  |  Branch (1875:3): [True: 0, False: 3]
  |  Branch (1875:3): [True: 3, False: 0]
  |  Branch (1875:3): [True: 0, False: 0]
  |  Branch (1875:3): [True: 0, False: 0]
  ------------------
 1876|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1876:2): [True: 3, False: 0]
  |  Branch (1876:2): [True: 0, False: 0]
  |  Branch (1876:2): [True: 3, False: 0]
  |  Branch (1876:2): [True: 0, False: 0]
  ------------------
 1877|       |
 1878|      3|	RETVAL_LONG(zend_ini_parse_quantity(shorthand, &errstr));
  ------------------
  |  | 1022|      3|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  ------------------
  |  |  |  | 1076|      3|#define ZVAL_LONG(z, l) do {			\
  |  |  |  | 1077|      3|		zval *__z = (z);				\
  |  |  |  | 1078|      3|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1079|      3|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  610|      3|#define IS_LONG						4
  |  |  |  |  ------------------
  |  |  |  | 1080|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1080:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1879|       |
 1880|      3|	if (errstr) {
  ------------------
  |  Branch (1880:6): [True: 0, False: 3]
  ------------------
 1881|      0|		zend_error(E_WARNING, "%s", ZSTR_VAL(errstr));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "%s", ZSTR_VAL(errstr));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1882|      0|		zend_string_release(errstr);
 1883|      0|	}
 1884|      3|}
zif_ini_get:
 1889|     15|{
 1890|     15|	zend_string *varname, *val;
 1891|       |
 1892|     45|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     15|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     15|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     15|		const int _flags = (flags); \
  |  |  |  | 1599|     15|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     15|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     15|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     15|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     15|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     15|		uint32_t _i = 0; \
  |  |  |  | 1603|     15|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     15|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     15|		char *_error = NULL; \
  |  |  |  | 1606|     15|		bool _dummy = 0; \
  |  |  |  | 1607|     15|		bool _optional = 0; \
  |  |  |  | 1608|     15|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     15|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     15|		((void)_i); \
  |  |  |  | 1610|     15|		((void)_real_arg); \
  |  |  |  | 1611|     15|		((void)_arg); \
  |  |  |  | 1612|     15|		((void)_expected_type); \
  |  |  |  | 1613|     15|		((void)_error); \
  |  |  |  | 1614|     15|		((void)_optional); \
  |  |  |  | 1615|     15|		((void)_dummy); \
  |  |  |  | 1616|     15|		\
  |  |  |  | 1617|     15|		do { \
  |  |  |  | 1618|     15|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     15|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     15|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     15|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     15|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     15|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1893|     60|		Z_PARAM_STR(varname)
  ------------------
  |  | 2102|     15|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     15|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     15|	++_i; \
  |  |  |  |  |  | 1654|     15|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     15|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     15|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     15|	_real_arg++; \
  |  |  |  |  |  | 1660|     15|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     15|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     15|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     15|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1893:3): [True: 15, False: 0]
  |  Branch (1893:3): [True: 0, False: 0]
  |  Branch (1893:3): [True: 15, False: 0]
  |  Branch (1893:3): [True: 0, False: 0]
  |  Branch (1893:3): [True: 15, False: 0]
  |  Branch (1893:3): [True: 0, False: 0]
  |  Branch (1893:3): [True: 0, False: 15]
  |  Branch (1893:3): [True: 15, False: 0]
  |  Branch (1893:3): [True: 0, False: 0]
  |  Branch (1893:3): [True: 0, False: 0]
  ------------------
 1894|     15|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     15|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     15|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     15|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  |  | 1641|     15|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     15|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1894:2): [True: 15, False: 0]
  |  Branch (1894:2): [True: 0, False: 0]
  |  Branch (1894:2): [True: 15, False: 0]
  |  Branch (1894:2): [True: 0, False: 0]
  ------------------
 1895|       |
 1896|     15|	val = zend_ini_get_value(varname);
 1897|       |
 1898|     15|	if (!val) {
  ------------------
  |  Branch (1898:6): [True: 5, False: 10]
  ------------------
 1899|      5|		RETURN_FALSE;
  ------------------
  |  | 1069|      5|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      5|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      5|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      5|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      5|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1900|      5|	}
 1901|       |
 1902|     10|	ZVAL_SET_INI_STR(return_value, val);
  ------------------
  |  | 1256|     10|#define ZVAL_SET_INI_STR(zv, val) do { \
  |  | 1257|     10|	if (ZSTR_IS_INTERNED(val)) { \
  |  |  ------------------
  |  |  |  Branch (1257:6): [True: 7, False: 3]
  |  |  ------------------
  |  | 1258|      7|		ZVAL_INTERNED_STR(zv, val); \
  |  |  ------------------
  |  |  |  | 1098|      7|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      7|		zval *__z = (z);							\
  |  |  |  | 1100|      7|		zend_string *__s = (s);						\
  |  |  |  | 1101|      7|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      7|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      7|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1259|      7|	} else if (ZSTR_LEN(val) == 0) { \
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (1259:13): [True: 0, False: 3]
  |  |  ------------------
  |  | 1260|      0|		ZVAL_EMPTY_STRING(zv); \
  |  |  ------------------
  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1261|      3|	} else if (ZSTR_LEN(val) == 1) { \
  |  |  ------------------
  |  |  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (1261:13): [True: 2, False: 1]
  |  |  ------------------
  |  | 1262|      2|		ZVAL_CHAR(zv, ZSTR_VAL(val)[0]); \
  |  |  ------------------
  |  |  |  |  989|      2|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  |  |  990|      2|		char _c = (c);                          \
  |  |  |  |  991|      2|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  992|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (992:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1263|      2|	} else if (!(GC_FLAGS(val) & GC_PERSISTENT)) { \
  |  |  ------------------
  |  |  |  |  777|      1|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	} else if (!(GC_FLAGS(val) & GC_PERSISTENT)) { \
  |  |  ------------------
  |  |  |  |  802|      1|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  |  |  |  Branch (1263:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1264|      1|		ZVAL_NEW_STR(zv, zend_string_copy(val)); \
  |  |  ------------------
  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1265|      1|	} else { \
  |  | 1266|      0|		ZVAL_NEW_STR(zv, zend_string_init(ZSTR_VAL(val), ZSTR_LEN(val), 0)); \
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1267|      0|	} \
  |  | 1268|     10|} while (0)
  |  |  ------------------
  |  |  |  Branch (1268:10): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1903|     10|}
zif_ini_set:
 1985|     57|{
 1986|     57|	zend_string *varname;
 1987|     57|	zval *new_value;
 1988|     57|	zend_string *val;
 1989|       |
 1990|    170|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|     57|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     57|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     57|		const int _flags = (flags); \
  |  |  |  | 1599|     57|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     57|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     57|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     57|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     57|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     57|		uint32_t _i = 0; \
  |  |  |  | 1603|     57|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     57|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     57|		char *_error = NULL; \
  |  |  |  | 1606|     57|		bool _dummy = 0; \
  |  |  |  | 1607|     57|		bool _optional = 0; \
  |  |  |  | 1608|     57|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     57|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     57|		((void)_i); \
  |  |  |  | 1610|     57|		((void)_real_arg); \
  |  |  |  | 1611|     57|		((void)_arg); \
  |  |  |  | 1612|     57|		((void)_expected_type); \
  |  |  |  | 1613|     57|		((void)_error); \
  |  |  |  | 1614|     57|		((void)_optional); \
  |  |  |  | 1615|     57|		((void)_dummy); \
  |  |  |  | 1616|     57|		\
  |  |  |  | 1617|     57|		do { \
  |  |  |  | 1618|     57|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    114|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     57|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     56|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|     57|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     57|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     57|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     56|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1991|    224|		Z_PARAM_STR(varname)
  ------------------
  |  | 2102|     56|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     56|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     56|	++_i; \
  |  |  |  |  |  | 1654|     56|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     56|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     56|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     56|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     56|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     56|	_real_arg++; \
  |  |  |  |  |  | 1660|     56|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     56|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     56|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     56|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     56|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1991:3): [True: 56, False: 0]
  |  Branch (1991:3): [True: 0, False: 0]
  |  Branch (1991:3): [True: 56, False: 0]
  |  Branch (1991:3): [True: 0, False: 0]
  |  Branch (1991:3): [True: 56, False: 0]
  |  Branch (1991:3): [True: 0, False: 0]
  |  Branch (1991:3): [True: 0, False: 56]
  |  Branch (1991:3): [True: 56, False: 0]
  |  Branch (1991:3): [True: 0, False: 0]
  |  Branch (1991:3): [True: 0, False: 0]
  ------------------
 1992|    280|		Z_PARAM_ZVAL(new_value)
  ------------------
  |  | 2116|     56|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     56|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     56|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     56|	++_i; \
  |  |  |  |  |  |  |  | 1654|     56|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     56|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     56|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     56|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     56|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 56]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     56|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     56|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     56|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 56]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     56|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 56]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     56|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1992:3): [True: 56, False: 0]
  |  Branch (1992:3): [True: 0, False: 0]
  |  Branch (1992:3): [True: 56, False: 0]
  |  Branch (1992:3): [True: 0, False: 0]
  |  Branch (1992:3): [True: 56, False: 0]
  |  Branch (1992:3): [True: 0, False: 0]
  |  Branch (1992:3): [True: 0, False: 56]
  |  Branch (1992:3): [True: 56, False: 0]
  |  Branch (1992:3): [True: 0, False: 0]
  |  Branch (1992:3): [True: 0, False: 0]
  ------------------
 1993|    280|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     56|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     56|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     56|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     56|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 56]
  |  |  |  |  ------------------
  |  |  |  | 1641|     57|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     57|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     57|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1993:2): [True: 56, False: 0]
  |  Branch (1993:2): [True: 0, False: 0]
  |  Branch (1993:2): [True: 56, False: 0]
  |  Branch (1993:2): [True: 0, False: 0]
  ------------------
 1994|       |
 1995|     56|	if (Z_TYPE_P(new_value) > IS_STRING) {
  ------------------
  |  |  669|     56|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     56|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(new_value) > IS_STRING) {
  ------------------
  |  |  612|     56|#define IS_STRING					6
  ------------------
  |  Branch (1995:6): [True: 0, False: 56]
  ------------------
 1996|      0|		zend_argument_type_error(2, "must be of type string|int|float|bool|null");
 1997|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1997:3): [True: 0, False: 0]
  |  Branch (1997:3): [True: 0, False: 0]
  ------------------
 1998|      0|	}
 1999|       |
 2000|     56|	val = zend_ini_get_value(varname);
 2001|       |
 2002|     56|	if (val) {
  ------------------
  |  Branch (2002:6): [True: 48, False: 8]
  ------------------
 2003|     48|		ZVAL_SET_INI_STR(return_value, val);
  ------------------
  |  | 1256|     48|#define ZVAL_SET_INI_STR(zv, val) do { \
  |  | 1257|     48|	if (ZSTR_IS_INTERNED(val)) { \
  |  |  ------------------
  |  |  |  Branch (1257:6): [True: 48, False: 0]
  |  |  ------------------
  |  | 1258|     48|		ZVAL_INTERNED_STR(zv, val); \
  |  |  ------------------
  |  |  |  | 1098|     48|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|     48|		zval *__z = (z);							\
  |  |  |  | 1100|     48|		zend_string *__s = (s);						\
  |  |  |  | 1101|     48|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     48|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     48|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|     48|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     48|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     48|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     48|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     48|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|     48|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 48]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1259|     48|	} else if (ZSTR_LEN(val) == 0) { \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (1259:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1260|      0|		ZVAL_EMPTY_STRING(zv); \
  |  |  ------------------
  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1261|      0|	} else if (ZSTR_LEN(val) == 1) { \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (1261:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1262|      0|		ZVAL_CHAR(zv, ZSTR_VAL(val)[0]); \
  |  |  ------------------
  |  |  |  |  989|      0|#define ZVAL_CHAR(z, c)  do {		            \
  |  |  |  |  990|      0|		char _c = (c);                          \
  |  |  |  |  991|      0|		ZVAL_INTERNED_STR(z, ZSTR_CHAR((zend_uchar) _c));	\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  992|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (992:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1263|      0|	} else if (!(GC_FLAGS(val) & GC_PERSISTENT)) { \
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	} else if (!(GC_FLAGS(val) & GC_PERSISTENT)) { \
  |  |  ------------------
  |  |  |  |  802|      0|#define GC_PERSISTENT               (1<<7) /* allocated using malloc */
  |  |  ------------------
  |  |  |  Branch (1263:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1264|      0|		ZVAL_NEW_STR(zv, zend_string_copy(val)); \
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1265|      0|	} else { \
  |  | 1266|      0|		ZVAL_NEW_STR(zv, zend_string_init(ZSTR_VAL(val), ZSTR_LEN(val), 0)); \
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1267|      0|	} \
  |  | 1268|     48|} while (0)
  |  |  ------------------
  |  |  |  Branch (1268:10): [Folded, False: 48]
  |  |  ------------------
  ------------------
 2004|     48|	} else {
 2005|      8|		RETVAL_FALSE;
  ------------------
  |  | 1043|      8|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|      8|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      8|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      8|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2006|      8|	}
 2007|       |
 2008|     56|	zend_string *new_value_tmp_str;
 2009|     56|	zend_string *new_value_str = zval_get_tmp_string(new_value, &new_value_tmp_str);
 2010|       |
 2011|       |	/* open basedir check */
 2012|     56|	if (PG(open_basedir)) {
  ------------------
  |  |   29|     56|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 56, False: 0]
  |  |  ------------------
  ------------------
 2013|     56|		if (
 2014|     56|			zend_string_equals_literal(varname, "java.class.path")
  ------------------
  |  |  407|    112|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 56]
  |  |  ------------------
  ------------------
 2015|     56|			|| zend_string_equals_literal(varname, "java.home")
  ------------------
  |  |  407|    112|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 56]
  |  |  ------------------
  ------------------
 2016|     56|			|| zend_string_equals_literal(varname, "java.library.path")
  ------------------
  |  |  407|    112|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 56]
  |  |  ------------------
  ------------------
 2017|     56|			|| zend_string_equals_literal(varname, "vpopmail.directory")
  ------------------
  |  |  407|     56|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 56]
  |  |  ------------------
  ------------------
 2018|     56|		) {
 2019|      0|			if (php_check_open_basedir(ZSTR_VAL(new_value_str))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (2019:8): [True: 0, False: 0]
  ------------------
 2020|      0|				zval_ptr_dtor_str(return_value);
 2021|      0|				zend_tmp_string_release(new_value_tmp_str);
 2022|      0|				RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2023|      0|			}
 2024|      0|		}
 2025|     56|	}
 2026|       |
 2027|     56|	if (zend_alter_ini_entry_ex(varname, new_value_str, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0) == FAILURE) {
  ------------------
  |  |   39|     56|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|     56|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              	if (zend_alter_ini_entry_ex(varname, new_value_str, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0) == FAILURE) {
  ------------------
  |  |   73|     56|#define PHP_INI_STAGE_RUNTIME		ZEND_INI_STAGE_RUNTIME
  |  |  ------------------
  |  |  |  |  227|     56|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  |  |  ------------------
  ------------------
  |  Branch (2027:6): [True: 25, False: 31]
  ------------------
 2028|     25|		zval_ptr_dtor_str(return_value);
 2029|     25|		RETVAL_FALSE;
  ------------------
  |  | 1043|     25|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|     25|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|     25|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     25|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     25|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     25|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|     25|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2030|     25|	}
 2031|     56|	zend_tmp_string_release(new_value_tmp_str);
 2032|     56|}
zif_set_include_path:
 2050|      6|{
 2051|      6|	zend_string *new_value;
 2052|      6|	zend_string *key;
 2053|       |
 2054|     18|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      6|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      6|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      6|		const int _flags = (flags); \
  |  |  |  | 1599|      6|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      6|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      6|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      6|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      6|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      6|		uint32_t _i = 0; \
  |  |  |  | 1603|      6|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      6|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      6|		char *_error = NULL; \
  |  |  |  | 1606|      6|		bool _dummy = 0; \
  |  |  |  | 1607|      6|		bool _optional = 0; \
  |  |  |  | 1608|      6|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      6|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      6|		((void)_i); \
  |  |  |  | 1610|      6|		((void)_real_arg); \
  |  |  |  | 1611|      6|		((void)_arg); \
  |  |  |  | 1612|      6|		((void)_expected_type); \
  |  |  |  | 1613|      6|		((void)_error); \
  |  |  |  | 1614|      6|		((void)_optional); \
  |  |  |  | 1615|      6|		((void)_dummy); \
  |  |  |  | 1616|      6|		\
  |  |  |  | 1617|      6|		do { \
  |  |  |  | 1618|      6|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      6|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      6|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2055|     24|		Z_PARAM_PATH_STR(new_value)
  ------------------
  |  | 2057|      6|	Z_PARAM_PATH_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2049|      6|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2050|      6|		if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2051|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2051:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2052|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2053|      0|			break; \
  |  |  |  | 2054|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2055:3): [True: 6, False: 0]
  |  Branch (2055:3): [True: 0, False: 0]
  |  Branch (2055:3): [True: 6, False: 0]
  |  Branch (2055:3): [True: 0, False: 0]
  |  Branch (2055:3): [True: 6, False: 0]
  |  Branch (2055:3): [True: 0, False: 0]
  |  Branch (2055:3): [True: 0, False: 6]
  |  Branch (2055:3): [True: 6, False: 0]
  |  Branch (2055:3): [True: 0, False: 0]
  |  Branch (2055:3): [True: 0, False: 0]
  ------------------
 2056|      6|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|      6|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2056:2): [True: 6, False: 0]
  |  Branch (2056:2): [True: 0, False: 0]
  |  Branch (2056:2): [True: 6, False: 0]
  |  Branch (2056:2): [True: 0, False: 0]
  ------------------
 2057|       |
 2058|      6|	zend_string *old_value = zend_ini_str_literal("include_path");
  ------------------
  |  |  100|      6|#define zend_ini_str_literal(name) zend_ini_str((name), sizeof("" name) - 1, false)
  ------------------
 2059|       |	/* copy to return here, because alter might free it! */
 2060|      6|	if (old_value) {
  ------------------
  |  Branch (2060:6): [True: 6, False: 0]
  ------------------
 2061|      6|		RETVAL_STR_COPY(old_value);
  ------------------
  |  | 1027|      6|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  ------------------
  |  |  |  | 1112|      6|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  | 1113|      6|		zval *__z = (z);								\
  |  |  |  | 1114|      6|		zend_string *__s = (s);							\
  |  |  |  | 1115|      6|		Z_STR_P(__z) = __s;								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1116|      6|		/* interned strings support */					\
  |  |  |  | 1117|      6|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1117:7): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1118|      6|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      6|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1119|      6|		} else {										\
  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  ------------------
  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1122|      0|		}												\
  |  |  |  | 1123|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1123:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2062|      6|	} else {
 2063|      0|		RETVAL_FALSE;
  ------------------
  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|      0|	}
 2065|       |
 2066|      6|	key = ZSTR_INIT_LITERAL("include_path", 0);
  ------------------
  |  |  141|      6|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 2067|      6|	if (zend_alter_ini_entry_ex(key, new_value, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0) == FAILURE) {
  ------------------
  |  |   39|      6|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|      6|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              	if (zend_alter_ini_entry_ex(key, new_value, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0) == FAILURE) {
  ------------------
  |  |   73|      6|#define PHP_INI_STAGE_RUNTIME		ZEND_INI_STAGE_RUNTIME
  |  |  ------------------
  |  |  |  |  227|      6|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  |  |  ------------------
  ------------------
  |  Branch (2067:6): [True: 0, False: 6]
  ------------------
 2068|      0|		zend_string_release_ex(key, 0);
 2069|      0|		zval_ptr_dtor_str(return_value);
 2070|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2071|      0|	}
 2072|      6|	zend_string_release_ex(key, 0);
 2073|      6|}
zif_print_r:
 2093|     40|{
 2094|     40|	zval *var;
 2095|     40|	bool do_return = 0;
 2096|       |
 2097|    120|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     40|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     40|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     40|		const int _flags = (flags); \
  |  |  |  | 1599|     40|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     40|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     40|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     40|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     40|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     40|		uint32_t _i = 0; \
  |  |  |  | 1603|     40|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     40|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     40|		char *_error = NULL; \
  |  |  |  | 1606|     40|		bool _dummy = 0; \
  |  |  |  | 1607|     40|		bool _optional = 0; \
  |  |  |  | 1608|     40|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     40|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     40|		((void)_i); \
  |  |  |  | 1610|     40|		((void)_real_arg); \
  |  |  |  | 1611|     40|		((void)_arg); \
  |  |  |  | 1612|     40|		((void)_expected_type); \
  |  |  |  | 1613|     40|		((void)_error); \
  |  |  |  | 1614|     40|		((void)_optional); \
  |  |  |  | 1615|     40|		((void)_dummy); \
  |  |  |  | 1616|     40|		\
  |  |  |  | 1617|     40|		do { \
  |  |  |  | 1618|     40|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     80|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 40]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     40|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 40]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     40|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     40|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     40|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     40|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2098|    160|		Z_PARAM_ZVAL(var)
  ------------------
  |  | 2116|     40|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     40|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     40|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     40|	++_i; \
  |  |  |  |  |  |  |  | 1654|     40|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     40|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     40|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 40]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     40|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     40|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     40|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 40]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     40|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 40]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     40|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2098:3): [True: 40, False: 0]
  |  Branch (2098:3): [True: 0, False: 0]
  |  Branch (2098:3): [True: 40, False: 0]
  |  Branch (2098:3): [True: 0, False: 0]
  |  Branch (2098:3): [True: 40, False: 0]
  |  Branch (2098:3): [True: 0, False: 0]
  |  Branch (2098:3): [True: 0, False: 40]
  |  Branch (2098:3): [True: 40, False: 0]
  |  Branch (2098:3): [True: 0, False: 0]
  |  Branch (2098:3): [True: 0, False: 0]
  ------------------
 2099|    160|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     40|	_optional = 1;
  ------------------
 2100|    160|		Z_PARAM_BOOL(do_return)
  ------------------
  |  | 1735|     40|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     40|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     40|	++_i; \
  |  |  |  |  |  | 1654|     40|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     40|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     40|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     40|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 40, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     40|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 40, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     40|	} \
  |  |  |  |  |  | 1659|     40|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2100:3): [True: 40, False: 0]
  |  Branch (2100:3): [True: 0, False: 0]
  |  Branch (2100:3): [True: 0, False: 40]
  |  Branch (2100:3): [True: 40, False: 0]
  |  Branch (2100:3): [True: 40, False: 0]
  |  Branch (2100:3): [True: 0, False: 0]
  |  Branch (2100:3): [True: 40, False: 0]
  |  Branch (2100:3): [True: 0, False: 0]
  |  Branch (2100:3): [True: 0, False: 0]
  |  Branch (2100:3): [True: 0, False: 0]
  ------------------
 2101|     40|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     40|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     40|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 40]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     40|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2101:2): [True: 0, False: 0]
  |  Branch (2101:2): [True: 0, False: 0]
  |  Branch (2101:2): [True: 0, False: 0]
  |  Branch (2101:2): [True: 0, False: 0]
  ------------------
 2102|       |
 2103|     40|	if (do_return) {
  ------------------
  |  Branch (2103:6): [True: 0, False: 40]
  ------------------
 2104|      0|		RETURN_STR(zend_print_zval_r_to_str(var, 0));
  ------------------
  |  | 1050|      0|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      0|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      0|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2105|     40|	} else {
 2106|     40|		zend_print_zval_r(var, 0);
 2107|     40|		RETURN_TRUE;
  ------------------
  |  | 1070|     40|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|     40|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|     40|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|     40|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     40|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     40|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|     40|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|     40|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 40]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2108|     40|	}
 2109|     40|}
zif_register_tick_function:
 2273|      7|{
 2274|      7|	user_tick_function_entry tick_fe = {
 2275|      7|		.fci_cache = empty_fcall_info_cache,
  ------------------
  |  |  701|      7|# define empty_fcall_info_cache (zend_fcall_info_cache) {0}
  ------------------
 2276|      7|		.params = NULL,
 2277|      7|		.param_count = 0,
 2278|      7|		.calling = false,
 2279|      7|	};
 2280|      7|	zend_fcall_info fci;
 2281|      7|	zval *params = NULL;
 2282|       |
 2283|      7|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "F*", &fci, &tick_fe.fci_cache, &params, &tick_fe.param_count) == FAILURE) {
  ------------------
  |  |  529|      7|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2283:6): [True: 0, False: 7]
  ------------------
 2284|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2284:3): [True: 0, False: 0]
  |  Branch (2284:3): [True: 0, False: 0]
  ------------------
 2285|      0|	}
 2286|       |
 2287|      7|	zend_fcc_addref(&tick_fe.fci_cache);
 2288|      7|	if (tick_fe.param_count) {
  ------------------
  |  Branch (2288:6): [True: 0, False: 7]
  ------------------
 2289|      0|		ZEND_ASSERT(params != NULL);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (2289:3): [True: 0, False: 0]
  |  Branch (2289:3): [True: 0, False: 0]
  ------------------
 2290|      0|		tick_fe.params = (zval *) safe_emalloc(tick_fe.param_count, sizeof(zval), 0);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2291|      0|		for (uint32_t i = 0; i < tick_fe.param_count; i++) {
  ------------------
  |  Branch (2291:24): [True: 0, False: 0]
  ------------------
 2292|      0|			ZVAL_COPY(&tick_fe.params[i], &params[i]);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2293|      0|		}
 2294|      0|	}
 2295|       |
 2296|      7|	if (!BG(user_tick_functions)) {
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (2296:6): [True: 7, False: 0]
  ------------------
 2297|      7|		BG(user_tick_functions) = (zend_llist *) emalloc(sizeof(zend_llist));
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
              		BG(user_tick_functions) = (zend_llist *) emalloc(sizeof(zend_llist));
  ------------------
  |  |  150|      7|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2298|      7|		zend_llist_init(BG(user_tick_functions),
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
 2299|      7|						sizeof(user_tick_function_entry),
 2300|      7|						(llist_dtor_func_t) user_tick_function_dtor, 0);
 2301|      7|		php_add_tick_function(run_user_tick_functions, NULL);
 2302|      7|	}
 2303|       |
 2304|      7|	zend_llist_add_element(BG(user_tick_functions), &tick_fe);
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
 2305|       |
 2306|      7|	RETURN_TRUE;
  ------------------
  |  | 1070|      7|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      7|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      7|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      7|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      7|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2307|      7|}
zif_parse_ini_file:
 2484|      5|{
 2485|      5|	zend_string *filename = NULL;
 2486|      5|	bool process_sections = 0;
 2487|      5|	zend_long scanner_mode = ZEND_INI_SCANNER_NORMAL;
  ------------------
  |  |   27|      5|#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
  ------------------
 2488|      5|	zend_file_handle fh;
 2489|      5|	zend_ini_parser_cb_t ini_parser_cb;
 2490|       |
 2491|     15|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2492|     20|		Z_PARAM_PATH_STR(filename)
  ------------------
  |  | 2057|      5|	Z_PARAM_PATH_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2049|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2050|      5|		if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2051|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2051:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2052|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2053|      0|			break; \
  |  |  |  | 2054|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2492:3): [True: 5, False: 0]
  |  Branch (2492:3): [True: 0, False: 0]
  |  Branch (2492:3): [True: 5, False: 0]
  |  Branch (2492:3): [True: 0, False: 0]
  |  Branch (2492:3): [True: 5, False: 0]
  |  Branch (2492:3): [True: 0, False: 0]
  |  Branch (2492:3): [True: 0, False: 5]
  |  Branch (2492:3): [True: 5, False: 0]
  |  Branch (2492:3): [True: 0, False: 0]
  |  Branch (2492:3): [True: 0, False: 0]
  ------------------
 2493|      5|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      5|	_optional = 1;
  ------------------
 2494|     20|		Z_PARAM_BOOL(process_sections)
  ------------------
  |  | 1735|      5|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      5|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      5|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      5|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2494:3): [True: 5, False: 0]
  |  Branch (2494:3): [True: 0, False: 0]
  |  Branch (2494:3): [True: 0, False: 5]
  |  Branch (2494:3): [True: 5, False: 0]
  |  Branch (2494:3): [True: 5, False: 0]
  |  Branch (2494:3): [True: 0, False: 0]
  |  Branch (2494:3): [True: 5, False: 0]
  |  Branch (2494:3): [True: 0, False: 0]
  |  Branch (2494:3): [True: 0, False: 0]
  |  Branch (2494:3): [True: 0, False: 0]
  ------------------
 2495|     23|		Z_PARAM_LONG(scanner_mode)
  ------------------
  |  | 1905|      5|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      5|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      5|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      1|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1900|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      1|			break; \
  |  |  |  | 1902|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (2495:3): [True: 5, False: 0]
  |  Branch (2495:3): [True: 0, False: 0]
  |  Branch (2495:3): [True: 0, False: 5]
  |  Branch (2495:3): [True: 5, False: 0]
  |  Branch (2495:3): [True: 5, False: 0]
  |  Branch (2495:3): [True: 0, False: 0]
  |  Branch (2495:3): [True: 5, False: 0]
  |  Branch (2495:3): [True: 0, False: 0]
  |  Branch (2495:3): [True: 0, False: 0]
  |  Branch (2495:3): [True: 0, False: 0]
  ------------------
 2496|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2496:2): [True: 3, False: 0]
  |  Branch (2496:2): [True: 0, False: 0]
  |  Branch (2496:2): [True: 3, False: 0]
  |  Branch (2496:2): [True: 0, False: 0]
  ------------------
 2497|       |
 2498|      4|	if (ZSTR_LEN(filename) == 0) {
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2498:6): [True: 2, False: 2]
  ------------------
 2499|      2|		zend_argument_must_not_be_empty_error(1);
 2500|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2500:3): [True: 0, False: 2]
  |  Branch (2500:3): [True: 2, False: 0]
  ------------------
 2501|      2|	}
 2502|       |
 2503|       |	/* Set callback function */
 2504|      2|	if (process_sections) {
  ------------------
  |  Branch (2504:6): [True: 1, False: 1]
  ------------------
 2505|      1|		ZVAL_UNDEF(&BG(active_ini_file_section));
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2506|      1|		ini_parser_cb = (zend_ini_parser_cb_t) php_ini_parser_cb_with_sections;
 2507|      1|	} else {
 2508|      1|		ini_parser_cb = (zend_ini_parser_cb_t) php_simple_ini_parser_cb;
 2509|      1|	}
 2510|       |
 2511|       |	/* Setup filehandle */
 2512|      2|	zend_stream_init_filename_ex(&fh, filename);
 2513|       |
 2514|      2|	array_init(return_value);
 2515|      2|	if (zend_parse_ini_file(&fh, 0, (int)scanner_mode, ini_parser_cb, return_value) == FAILURE) {
  ------------------
  |  Branch (2515:6): [True: 2, False: 0]
  ------------------
 2516|      2|		zend_array_destroy(Z_ARR_P(return_value));
  ------------------
  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2517|      2|		RETVAL_FALSE;
  ------------------
  |  | 1043|      2|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|      2|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      2|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2518|      2|	}
 2519|      2|	zend_destroy_file_handle(&fh);
 2520|      2|}
zif_parse_ini_string:
 2525|  9.38k|{
 2526|  9.38k|	char *string = NULL, *str = NULL;
 2527|  9.38k|	size_t str_len = 0;
 2528|  9.38k|	bool process_sections = 0;
 2529|  9.38k|	zend_long scanner_mode = ZEND_INI_SCANNER_NORMAL;
  ------------------
  |  |   27|  9.38k|#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
  ------------------
 2530|  9.38k|	zend_ini_parser_cb_t ini_parser_cb;
 2531|       |
 2532|  28.1k|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|  9.38k|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|  9.38k|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|  9.38k|		const int _flags = (flags); \
  |  |  |  | 1599|  9.38k|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|  9.38k|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|  9.38k|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|  9.38k|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|  9.38k|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|  9.38k|		uint32_t _i = 0; \
  |  |  |  | 1603|  9.38k|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|  9.38k|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|  9.38k|		char *_error = NULL; \
  |  |  |  | 1606|  9.38k|		bool _dummy = 0; \
  |  |  |  | 1607|  9.38k|		bool _optional = 0; \
  |  |  |  | 1608|  9.38k|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|  9.38k|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|  9.38k|		((void)_i); \
  |  |  |  | 1610|  9.38k|		((void)_real_arg); \
  |  |  |  | 1611|  9.38k|		((void)_arg); \
  |  |  |  | 1612|  9.38k|		((void)_expected_type); \
  |  |  |  | 1613|  9.38k|		((void)_error); \
  |  |  |  | 1614|  9.38k|		((void)_optional); \
  |  |  |  | 1615|  9.38k|		((void)_dummy); \
  |  |  |  | 1616|  9.38k|		\
  |  |  |  | 1617|  9.38k|		do { \
  |  |  |  | 1618|  9.38k|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  18.7k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9.38k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|  9.38k|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  9.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 9.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|  9.38k|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|  9.38k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|  9.38k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|  9.37k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2533|  37.5k|		Z_PARAM_STRING(str, str_len)
  ------------------
  |  | 2087|  9.37k|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|  9.37k|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|  9.37k|	++_i; \
  |  |  |  |  |  | 1654|  9.37k|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  9.37k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|  9.37k|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  9.37k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|  9.37k|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 9.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|  9.37k|	_real_arg++; \
  |  |  |  |  |  | 1660|  9.37k|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|  9.37k|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 9.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|  9.37k|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 9.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|  9.37k|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  9.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 9.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2533:3): [True: 9.37k, False: 0]
  |  Branch (2533:3): [True: 0, False: 0]
  |  Branch (2533:3): [True: 9.37k, False: 0]
  |  Branch (2533:3): [True: 0, False: 0]
  |  Branch (2533:3): [True: 9.37k, False: 0]
  |  Branch (2533:3): [True: 0, False: 0]
  |  Branch (2533:3): [True: 0, False: 9.37k]
  |  Branch (2533:3): [True: 9.37k, False: 0]
  |  Branch (2533:3): [True: 0, False: 0]
  |  Branch (2533:3): [True: 0, False: 0]
  ------------------
 2534|  9.37k|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|  9.37k|	_optional = 1;
  ------------------
 2535|  19.8k|		Z_PARAM_BOOL(process_sections)
  ------------------
  |  | 1735|  9.37k|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|  9.37k|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|  9.37k|	++_i; \
  |  |  |  |  |  | 1654|  9.37k|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  9.37k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|  9.37k|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  9.37k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|  9.37k|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 9.37k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|  9.37k|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  9.37k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 8.84k, False: 530]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|  9.37k|	} \
  |  |  |  |  |  | 1659|  9.37k|	_real_arg++; \
  |  |  |  |  |  | 1660|    530|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    530|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 530]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    530|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 530]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|    530|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    530|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 530]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2535:3): [True: 9.37k, False: 0]
  |  Branch (2535:3): [True: 0, False: 0]
  |  Branch (2535:3): [True: 0, False: 9.37k]
  |  Branch (2535:3): [True: 9.37k, False: 0]
  |  Branch (2535:3): [True: 9.37k, False: 0]
  |  Branch (2535:3): [True: 0, False: 0]
  |  Branch (2535:3): [True: 9.37k, False: 0]
  |  Branch (2535:3): [True: 0, False: 0]
  |  Branch (2535:3): [True: 0, False: 0]
  |  Branch (2535:3): [True: 0, False: 0]
  ------------------
 2536|  2.64k|		Z_PARAM_LONG(scanner_mode)
  ------------------
  |  | 1905|    530|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|    530|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    530|	++_i; \
  |  |  |  |  |  | 1654|    530|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    530|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    530|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    530|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    530|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 530, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|    530|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    530|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 526]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|    530|	} \
  |  |  |  |  |  | 1659|    530|	_real_arg++; \
  |  |  |  |  |  | 1660|    526|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    526|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 526]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    526|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 526]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|    526|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    526|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 526]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2536:3): [True: 530, False: 0]
  |  Branch (2536:3): [True: 0, False: 0]
  |  Branch (2536:3): [True: 0, False: 530]
  |  Branch (2536:3): [True: 530, False: 0]
  |  Branch (2536:3): [True: 530, False: 0]
  |  Branch (2536:3): [True: 0, False: 0]
  |  Branch (2536:3): [True: 530, False: 0]
  |  Branch (2536:3): [True: 0, False: 0]
  |  Branch (2536:3): [True: 0, False: 0]
  |  Branch (2536:3): [True: 0, False: 0]
  ------------------
 2537|  9.38k|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|    526|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|    526|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|    526|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|    526|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 526]
  |  |  |  |  ------------------
  |  |  |  | 1641|  9.38k|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  9.38k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 9.37k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|  9.38k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 9.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2537:2): [True: 526, False: 0]
  |  Branch (2537:2): [True: 0, False: 0]
  |  Branch (2537:2): [True: 526, False: 0]
  |  Branch (2537:2): [True: 0, False: 0]
  ------------------
 2538|       |
 2539|  9.37k|	if (INT_MAX - str_len < ZEND_MMAP_AHEAD) {
  ------------------
  |  |   36|  18.7k|#define ZEND_MMAP_AHEAD 32
  ------------------
  |  Branch (2539:6): [True: 0, False: 9.37k]
  ------------------
 2540|      0|		RETVAL_FALSE;
  ------------------
  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2541|      0|	}
 2542|       |
 2543|       |	/* Set callback function */
 2544|  9.37k|	if (process_sections) {
  ------------------
  |  Branch (2544:6): [True: 525, False: 8.85k]
  ------------------
 2545|    525|		ZVAL_UNDEF(&BG(active_ini_file_section));
  ------------------
  |  | 1055|    525|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    525|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    525|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    525|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    525|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    525|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 525]
  |  |  ------------------
  ------------------
 2546|    525|		ini_parser_cb = (zend_ini_parser_cb_t) php_ini_parser_cb_with_sections;
 2547|  8.85k|	} else {
 2548|  8.85k|		ini_parser_cb = (zend_ini_parser_cb_t) php_simple_ini_parser_cb;
 2549|  8.85k|	}
 2550|       |
 2551|       |	/* Setup string */
 2552|  9.37k|	string = (char *) emalloc(str_len + ZEND_MMAP_AHEAD);
  ------------------
  |  |  150|  9.37k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  9.37k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  9.37k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  9.37k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  9.37k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2553|  9.37k|	memcpy(string, str, str_len);
 2554|  9.37k|	memset(string + str_len, 0, ZEND_MMAP_AHEAD);
  ------------------
  |  |   36|  9.37k|#define ZEND_MMAP_AHEAD 32
  ------------------
 2555|       |
 2556|  9.37k|	array_init(return_value);
 2557|  9.37k|	if (zend_parse_ini_string(string, 0, (int)scanner_mode, ini_parser_cb, return_value) == FAILURE) {
  ------------------
  |  Branch (2557:6): [True: 5.46k, False: 3.91k]
  ------------------
 2558|  5.46k|		zend_array_destroy(Z_ARR_P(return_value));
  ------------------
  |  |  994|  5.46k|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|  5.46k|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 2559|  5.46k|		RETVAL_FALSE;
  ------------------
  |  | 1043|  5.46k|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|  5.46k|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|  5.46k|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  5.46k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  5.46k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|  5.46k|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|  5.46k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 5.46k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2560|  5.46k|	}
 2561|       |	efree(string);
  ------------------
  |  |  154|  9.37k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  9.37k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  9.37k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  9.37k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  9.37k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2562|  9.37k|}
basic_functions.c:basic_globals_ctor:
  217|      2|{
  218|      2|	memset(basic_globals_p, 0, sizeof(php_basic_globals));
  219|       |
  220|      2|	basic_globals_p->umask = -1;
  221|      2|	basic_globals_p->url_adapt_session_ex.type = 1;
  222|       |
  223|      2|	zend_hash_init(&basic_globals_p->url_adapt_session_hosts_ht, 0, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  224|      2|	zend_hash_init(&basic_globals_p->url_adapt_output_hosts_ht, 0, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  225|       |
  226|      2|	basic_globals_p->page_uid = -1;
  227|      2|	basic_globals_p->page_gid = -1;
  228|      2|}
basic_functions.c:user_shutdown_function_call:
 1607|      8|{
 1608|      8|	php_shutdown_function_entry *entry = Z_PTR_P(zv);
  ------------------
  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1609|       |
 1610|      8|	zend_call_known_fcc(&entry->fci_cache, NULL, entry->param_count, entry->params, NULL);
 1611|      8|	return 0;
 1612|      8|}
basic_functions.c:user_shutdown_function_dtor:
 1584|      8|{
 1585|      8|	php_shutdown_function_entry *shutdown_function_entry = Z_PTR_P(zv);
  ------------------
  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1586|       |
 1587|      8|	for (uint32_t i = 0; i < shutdown_function_entry->param_count; i++) {
  ------------------
  |  Branch (1587:23): [True: 0, False: 8]
  ------------------
 1588|      0|		zval_ptr_dtor(&shutdown_function_entry->params[i]);
 1589|      0|	}
 1590|      8|	efree(shutdown_function_entry->params);
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1591|      8|	zend_fcc_dtor(&shutdown_function_entry->fci_cache);
 1592|       |	efree(shutdown_function_entry);
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1593|      8|}
basic_functions.c:user_tick_function_dtor:
 1597|      7|{
 1598|      7|	for (uint32_t i = 0; i < tick_function_entry->param_count; i++) {
  ------------------
  |  Branch (1598:23): [True: 0, False: 7]
  ------------------
 1599|      0|		zval_ptr_dtor(&tick_function_entry->params[i]);
 1600|      0|	}
 1601|       |	efree(tick_function_entry->params);
  ------------------
  |  |  154|      7|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      7|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      7|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      7|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      7|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1602|      7|	zend_fcc_dtor(&tick_function_entry->fci_cache);
 1603|      7|}
basic_functions.c:run_user_tick_functions:
 1627|      8|{
 1628|      8|	zend_llist_apply(BG(user_tick_functions), (llist_apply_func_t) user_tick_function_call);
  ------------------
  |  |  113|      8|#define BG(v) (basic_globals.v)
  ------------------
 1629|      8|}
basic_functions.c:user_tick_function_call:
 1616|      8|{
 1617|       |	/* Prevent re-entrant calls to the same user ticks function */
 1618|      8|	if (!tick_fe->calling) {
  ------------------
  |  Branch (1618:6): [True: 8, False: 0]
  ------------------
 1619|      8|		tick_fe->calling = true;
 1620|      8|		zend_call_known_fcc(&tick_fe->fci_cache, NULL, tick_fe->param_count, tick_fe->params, NULL);
 1621|       |		tick_fe->calling = false;
 1622|      8|	}
 1623|      8|}
basic_functions.c:php_ini_parser_cb_with_sections:
 2464|    572|{
 2465|    572|	if (callback_type == ZEND_INI_PARSER_SECTION) {
  ------------------
  |  |  241|    572|#define ZEND_INI_PARSER_SECTION	  2 /* Section: [foobar] */
  ------------------
  |  Branch (2465:6): [True: 33, False: 539]
  ------------------
 2466|     33|		array_init(&BG(active_ini_file_section));
  ------------------
  |  |  113|     33|#define BG(v) (basic_globals.v)
  ------------------
 2467|     33|		zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), &BG(active_ini_file_section));
  ------------------
  |  |  997|     33|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     33|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     33|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), &BG(active_ini_file_section));
  ------------------
  |  |  982|     33|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     33|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              		zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), &BG(active_ini_file_section));
  ------------------
  |  |  113|     33|#define BG(v) (basic_globals.v)
  ------------------
 2468|    539|	} else if (arg2) {
  ------------------
  |  Branch (2468:13): [True: 515, False: 24]
  ------------------
 2469|    515|		zval *active_arr;
 2470|       |
 2471|    515|		if (Z_TYPE(BG(active_ini_file_section)) != IS_UNDEF) {
  ------------------
  |  |  668|    515|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(BG(active_ini_file_section)) != IS_UNDEF) {
  ------------------
  |  |  606|    515|#define IS_UNDEF					0
  ------------------
  |  Branch (2471:7): [True: 87, False: 428]
  ------------------
 2472|     87|			active_arr = &BG(active_ini_file_section);
  ------------------
  |  |  113|     87|#define BG(v) (basic_globals.v)
  ------------------
 2473|    428|		} else {
 2474|    428|			active_arr = arr;
 2475|    428|		}
 2476|       |
 2477|    515|		php_simple_ini_parser_cb(arg1, arg2, arg3, callback_type, active_arr);
 2478|    515|	}
 2479|    572|}
basic_functions.c:php_simple_ini_parser_cb:
 2407|  69.8k|{
 2408|  69.8k|	switch (callback_type) {
  ------------------
  |  Branch (2408:10): [True: 69.8k, False: 0]
  ------------------
 2409|       |
 2410|  65.6k|		case ZEND_INI_PARSER_ENTRY:
  ------------------
  |  |  240|  65.6k|#define ZEND_INI_PARSER_ENTRY     1 /* Normal entry: foo = bar */
  ------------------
  |  Branch (2410:3): [True: 65.6k, False: 4.20k]
  ------------------
 2411|  65.6k|			if (!arg2) {
  ------------------
  |  Branch (2411:8): [True: 26.7k, False: 38.9k]
  ------------------
 2412|       |				/* bare string - nothing to do */
 2413|  26.7k|				break;
 2414|  26.7k|			}
 2415|  38.9k|			Z_TRY_ADDREF_P(arg2);
  ------------------
  |  | 1285|  38.9k|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|  38.9k|	zval *_pz = (pz);				\
  |  | 1287|  38.9k|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|  38.9k|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|  38.9k|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|  38.9k|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 38.1k, False: 797]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|  38.1k|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|  38.1k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|  38.1k|	}								\
  |  | 1290|  38.9k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 38.9k]
  |  |  ------------------
  ------------------
 2416|  38.9k|			zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), arg2);
  ------------------
  |  |  997|  38.9k|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|  38.9k|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|  38.9k|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), arg2);
  ------------------
  |  |  982|  38.9k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|  38.9k|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2417|  38.9k|			break;
 2418|       |
 2419|    198|		case ZEND_INI_PARSER_POP_ENTRY:
  ------------------
  |  |  242|    198|#define ZEND_INI_PARSER_POP_ENTRY 3 /* Offset entry: foo[] = bar */
  ------------------
  |  Branch (2419:3): [True: 198, False: 69.6k]
  ------------------
 2420|    198|		{
 2421|    198|			zval hash, *find_hash;
 2422|       |
 2423|    198|			if (!arg2) {
  ------------------
  |  Branch (2423:8): [True: 0, False: 198]
  ------------------
 2424|       |				/* bare string - nothing to do */
 2425|      0|				break;
 2426|      0|			}
 2427|       |
 2428|       |			/* entry in the form x[a]=b where x might need to be an array index */
 2429|    198|			if (!(Z_STRLEN_P(arg1) > 1 && Z_STRVAL_P(arg1)[0] == '0') && is_numeric_string(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), NULL, NULL, 0) == IS_LONG) {
  ------------------
  |  |  988|    198|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    198|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    198|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(Z_STRLEN_P(arg1) > 1 && Z_STRVAL_P(arg1)[0] == '0') && is_numeric_string(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), NULL, NULL, 0) == IS_LONG) {
  ------------------
  |  |  985|    198|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    198|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    198|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(Z_STRLEN_P(arg1) > 1 && Z_STRVAL_P(arg1)[0] == '0') && is_numeric_string(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), NULL, NULL, 0) == IS_LONG) {
  ------------------
  |  |  985|    198|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|    198|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    198|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(Z_STRLEN_P(arg1) > 1 && Z_STRVAL_P(arg1)[0] == '0') && is_numeric_string(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), NULL, NULL, 0) == IS_LONG) {
  ------------------
  |  |  988|    198|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    198|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    198|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (!(Z_STRLEN_P(arg1) > 1 && Z_STRVAL_P(arg1)[0] == '0') && is_numeric_string(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), NULL, NULL, 0) == IS_LONG) {
  ------------------
  |  |  610|    198|#define IS_LONG						4
  ------------------
  |  Branch (2429:10): [True: 198, False: 0]
  |  Branch (2429:34): [True: 0, False: 198]
  |  Branch (2429:65): [True: 0, False: 198]
  ------------------
 2430|      0|				zend_ulong key = (zend_ulong) ZEND_STRTOUL(Z_STRVAL_P(arg1), NULL, 0);
  ------------------
  |  |   69|      0|#  define ZEND_STRTOUL(s0, s1, base) strtoull((s0), (s1), (base))
  ------------------
 2431|      0|				if ((find_hash = zend_hash_index_find(Z_ARRVAL_P(arr), key)) == NULL) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2431:9): [True: 0, False: 0]
  ------------------
 2432|      0|					array_init(&hash);
 2433|      0|					find_hash = zend_hash_index_add_new(Z_ARRVAL_P(arr), key, &hash);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2434|      0|				}
 2435|    198|			} else {
 2436|    198|				if ((find_hash = zend_hash_find(Z_ARRVAL_P(arr), Z_STR_P(arg1))) == NULL) {
  ------------------
  |  |  997|    198|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    198|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    198|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				if ((find_hash = zend_hash_find(Z_ARRVAL_P(arr), Z_STR_P(arg1))) == NULL) {
  ------------------
  |  |  982|    198|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    198|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  |  Branch (2436:9): [True: 198, False: 0]
  ------------------
 2437|    198|					array_init(&hash);
 2438|    198|					find_hash = zend_hash_add_new(Z_ARRVAL_P(arr), Z_STR_P(arg1), &hash);
  ------------------
  |  |  997|    198|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    198|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    198|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					find_hash = zend_hash_add_new(Z_ARRVAL_P(arr), Z_STR_P(arg1), &hash);
  ------------------
  |  |  982|    198|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|    198|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 2439|    198|				}
 2440|    198|			}
 2441|       |
 2442|    198|			if (Z_TYPE_P(find_hash) != IS_ARRAY) {
  ------------------
  |  |  669|    198|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    198|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(find_hash) != IS_ARRAY) {
  ------------------
  |  |  613|    198|#define IS_ARRAY					7
  ------------------
  |  Branch (2442:8): [True: 0, False: 198]
  ------------------
 2443|      0|				zval_ptr_dtor_nogc(find_hash);
 2444|      0|				array_init(find_hash);
 2445|      0|			}
 2446|       |
 2447|    198|			if (!arg3 || (Z_TYPE_P(arg3) == IS_STRING && Z_STRLEN_P(arg3) == 0)) {
  ------------------
  |  |  669|    198|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    198|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (!arg3 || (Z_TYPE_P(arg3) == IS_STRING && Z_STRLEN_P(arg3) == 0)) {
  ------------------
  |  |  612|    396|#define IS_STRING					6
  ------------------
              			if (!arg3 || (Z_TYPE_P(arg3) == IS_STRING && Z_STRLEN_P(arg3) == 0)) {
  ------------------
  |  |  988|    198|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    198|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    198|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2447:8): [True: 0, False: 198]
  |  Branch (2447:18): [True: 198, False: 0]
  |  Branch (2447:49): [True: 0, False: 198]
  ------------------
 2448|      0|				Z_TRY_ADDREF_P(arg2);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2449|      0|				add_next_index_zval(find_hash, arg2);
 2450|    198|			} else {
 2451|    198|				array_set_zval_key(Z_ARRVAL_P(find_hash), arg3, arg2);
  ------------------
  |  |  997|    198|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    198|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    198|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2452|    198|			}
 2453|    198|		}
 2454|      0|		break;
 2455|       |
 2456|  4.01k|		case ZEND_INI_PARSER_SECTION:
  ------------------
  |  |  241|  4.01k|#define ZEND_INI_PARSER_SECTION	  2 /* Section: [foobar] */
  ------------------
  |  Branch (2456:3): [True: 4.01k, False: 65.8k]
  ------------------
 2457|  4.01k|			break;
 2458|  69.8k|	}
 2459|  69.8k|}

basic_functions.c:register_basic_functions_symbols:
 3535|      2|{
 3536|      2|	REGISTER_LONG_CONSTANT("EXTR_OVERWRITE", PHP_EXTR_OVERWRITE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3537|      2|	REGISTER_LONG_CONSTANT("EXTR_SKIP", PHP_EXTR_SKIP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3538|      2|	REGISTER_LONG_CONSTANT("EXTR_PREFIX_SAME", PHP_EXTR_PREFIX_SAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3539|      2|	REGISTER_LONG_CONSTANT("EXTR_PREFIX_ALL", PHP_EXTR_PREFIX_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3540|      2|	REGISTER_LONG_CONSTANT("EXTR_PREFIX_INVALID", PHP_EXTR_PREFIX_INVALID, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3541|      2|	REGISTER_LONG_CONSTANT("EXTR_PREFIX_IF_EXISTS", PHP_EXTR_PREFIX_IF_EXISTS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3542|      2|	REGISTER_LONG_CONSTANT("EXTR_IF_EXISTS", PHP_EXTR_IF_EXISTS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3543|      2|	REGISTER_LONG_CONSTANT("EXTR_REFS", PHP_EXTR_REFS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3544|      2|	REGISTER_LONG_CONSTANT("SORT_ASC", PHP_SORT_ASC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3545|      2|	REGISTER_LONG_CONSTANT("SORT_DESC", PHP_SORT_DESC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3546|      2|	REGISTER_LONG_CONSTANT("SORT_REGULAR", PHP_SORT_REGULAR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3547|      2|	REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3548|      2|	REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3549|      2|	REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3550|      2|	REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3551|      2|	REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3552|      2|	REGISTER_LONG_CONSTANT("CASE_LOWER", PHP_CASE_LOWER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3553|      2|	REGISTER_LONG_CONSTANT("CASE_UPPER", PHP_CASE_UPPER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3554|      2|	REGISTER_LONG_CONSTANT("COUNT_NORMAL", PHP_COUNT_NORMAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3555|      2|	REGISTER_LONG_CONSTANT("COUNT_RECURSIVE", PHP_COUNT_RECURSIVE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3556|      2|	REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_VALUE", ARRAY_FILTER_USE_VALUE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3557|      2|	REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_BOTH", ARRAY_FILTER_USE_BOTH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3558|      2|	REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_KEY", ARRAY_FILTER_USE_KEY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3559|      2|	zend_constant *const_ASSERT_ACTIVE = REGISTER_LONG_CONSTANT("ASSERT_ACTIVE", PHP_ASSERT_ACTIVE, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3560|      2|	zend_constant *const_ASSERT_CALLBACK = REGISTER_LONG_CONSTANT("ASSERT_CALLBACK", PHP_ASSERT_CALLBACK, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3561|      2|	zend_constant *const_ASSERT_BAIL = REGISTER_LONG_CONSTANT("ASSERT_BAIL", PHP_ASSERT_BAIL, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3562|      2|	zend_constant *const_ASSERT_WARNING = REGISTER_LONG_CONSTANT("ASSERT_WARNING", PHP_ASSERT_WARNING, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3563|      2|	zend_constant *const_ASSERT_EXCEPTION = REGISTER_LONG_CONSTANT("ASSERT_EXCEPTION", PHP_ASSERT_EXCEPTION, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3564|      2|	REGISTER_LONG_CONSTANT("CONNECTION_ABORTED", PHP_CONNECTION_ABORTED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3565|      2|	REGISTER_LONG_CONSTANT("CONNECTION_NORMAL", PHP_CONNECTION_NORMAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3566|      2|	REGISTER_LONG_CONSTANT("CONNECTION_TIMEOUT", PHP_CONNECTION_TIMEOUT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3567|      2|	REGISTER_LONG_CONSTANT("INI_USER", ZEND_INI_USER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3568|      2|	REGISTER_LONG_CONSTANT("INI_PERDIR", ZEND_INI_PERDIR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3569|      2|	REGISTER_LONG_CONSTANT("INI_SYSTEM", ZEND_INI_SYSTEM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3570|      2|	REGISTER_LONG_CONSTANT("INI_ALL", ZEND_INI_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3571|      2|	REGISTER_LONG_CONSTANT("INI_SCANNER_NORMAL", ZEND_INI_SCANNER_NORMAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3572|      2|	REGISTER_LONG_CONSTANT("INI_SCANNER_RAW", ZEND_INI_SCANNER_RAW, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3573|      2|	REGISTER_LONG_CONSTANT("INI_SCANNER_TYPED", ZEND_INI_SCANNER_TYPED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3574|      2|	REGISTER_LONG_CONSTANT("PHP_URL_SCHEME", PHP_URL_SCHEME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3575|      2|	REGISTER_LONG_CONSTANT("PHP_URL_HOST", PHP_URL_HOST, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3576|      2|	REGISTER_LONG_CONSTANT("PHP_URL_PORT", PHP_URL_PORT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3577|      2|	REGISTER_LONG_CONSTANT("PHP_URL_USER", PHP_URL_USER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3578|      2|	REGISTER_LONG_CONSTANT("PHP_URL_PASS", PHP_URL_PASS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3579|      2|	REGISTER_LONG_CONSTANT("PHP_URL_PATH", PHP_URL_PATH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3580|      2|	REGISTER_LONG_CONSTANT("PHP_URL_QUERY", PHP_URL_QUERY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3581|      2|	REGISTER_LONG_CONSTANT("PHP_URL_FRAGMENT", PHP_URL_FRAGMENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3582|      2|	REGISTER_LONG_CONSTANT("PHP_QUERY_RFC1738", PHP_QUERY_RFC1738, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3583|      2|	REGISTER_LONG_CONSTANT("PHP_QUERY_RFC3986", PHP_QUERY_RFC3986, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3584|      2|	REGISTER_DOUBLE_CONSTANT("M_E", M_E, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3585|      2|	ZEND_ASSERT(M_E == 2.718281828459045);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3585:2): [True: 0, Folded]
  |  Branch (3585:2): [True: 2, Folded]
  ------------------
 3586|      2|	REGISTER_DOUBLE_CONSTANT("M_LOG2E", M_LOG2E, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3587|      2|	ZEND_ASSERT(M_LOG2E == 1.4426950408889634);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3587:2): [True: 0, Folded]
  |  Branch (3587:2): [True: 2, Folded]
  ------------------
 3588|      2|	REGISTER_DOUBLE_CONSTANT("M_LOG10E", M_LOG10E, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3589|      2|	ZEND_ASSERT(M_LOG10E == 0.4342944819032518);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3589:2): [True: 0, Folded]
  |  Branch (3589:2): [True: 2, Folded]
  ------------------
 3590|      2|	REGISTER_DOUBLE_CONSTANT("M_LN2", M_LN2, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3591|      2|	ZEND_ASSERT(M_LN2 == 0.6931471805599453);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3591:2): [True: 0, Folded]
  |  Branch (3591:2): [True: 2, Folded]
  ------------------
 3592|      2|	REGISTER_DOUBLE_CONSTANT("M_LN10", M_LN10, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3593|      2|	ZEND_ASSERT(M_LN10 == 2.302585092994046);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3593:2): [True: 0, Folded]
  |  Branch (3593:2): [True: 2, Folded]
  ------------------
 3594|      2|	REGISTER_DOUBLE_CONSTANT("M_PI", M_PI, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3595|      2|	ZEND_ASSERT(M_PI == 3.141592653589793);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3595:2): [True: 0, Folded]
  |  Branch (3595:2): [True: 2, Folded]
  ------------------
 3596|      2|	REGISTER_DOUBLE_CONSTANT("M_PI_2", M_PI_2, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3597|      2|	ZEND_ASSERT(M_PI_2 == 1.5707963267948966);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3597:2): [True: 0, Folded]
  |  Branch (3597:2): [True: 2, Folded]
  ------------------
 3598|      2|	REGISTER_DOUBLE_CONSTANT("M_PI_4", M_PI_4, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3599|      2|	ZEND_ASSERT(M_PI_4 == 0.7853981633974483);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3599:2): [True: 0, Folded]
  |  Branch (3599:2): [True: 2, Folded]
  ------------------
 3600|      2|	REGISTER_DOUBLE_CONSTANT("M_1_PI", M_1_PI, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3601|      2|	ZEND_ASSERT(M_1_PI == 0.3183098861837907);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3601:2): [True: 0, Folded]
  |  Branch (3601:2): [True: 2, Folded]
  ------------------
 3602|      2|	REGISTER_DOUBLE_CONSTANT("M_2_PI", M_2_PI, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3603|      2|	ZEND_ASSERT(M_2_PI == 0.6366197723675814);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3603:2): [True: 0, Folded]
  |  Branch (3603:2): [True: 2, Folded]
  ------------------
 3604|      2|	REGISTER_DOUBLE_CONSTANT("M_SQRTPI", M_SQRTPI, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3605|      2|	ZEND_ASSERT(M_SQRTPI == 1.772453850905516);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3605:2): [True: 0, Folded]
  |  Branch (3605:2): [True: 2, Folded]
  ------------------
 3606|      2|	REGISTER_DOUBLE_CONSTANT("M_2_SQRTPI", M_2_SQRTPI, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3607|      2|	ZEND_ASSERT(M_2_SQRTPI == 1.1283791670955126);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3607:2): [True: 0, Folded]
  |  Branch (3607:2): [True: 2, Folded]
  ------------------
 3608|      2|	REGISTER_DOUBLE_CONSTANT("M_LNPI", M_LNPI, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3609|      2|	ZEND_ASSERT(M_LNPI == 1.1447298858494002);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3609:2): [True: 0, Folded]
  |  Branch (3609:2): [True: 2, Folded]
  ------------------
 3610|      2|	REGISTER_DOUBLE_CONSTANT("M_EULER", M_EULER, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3611|      2|	ZEND_ASSERT(M_EULER == 0.5772156649015329);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3611:2): [True: 0, Folded]
  |  Branch (3611:2): [True: 2, Folded]
  ------------------
 3612|      2|	REGISTER_DOUBLE_CONSTANT("M_SQRT2", M_SQRT2, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3613|      2|	ZEND_ASSERT(M_SQRT2 == 1.4142135623730951);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3613:2): [True: 0, Folded]
  |  Branch (3613:2): [True: 2, Folded]
  ------------------
 3614|      2|	REGISTER_DOUBLE_CONSTANT("M_SQRT1_2", M_SQRT1_2, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3615|      2|	ZEND_ASSERT(M_SQRT1_2 == 0.7071067811865476);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3615:2): [True: 0, Folded]
  |  Branch (3615:2): [True: 2, Folded]
  ------------------
 3616|      2|	REGISTER_DOUBLE_CONSTANT("M_SQRT3", M_SQRT3, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3617|      2|	ZEND_ASSERT(M_SQRT3 == 1.7320508075688772);
  ------------------
  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (3617:2): [True: 0, Folded]
  |  Branch (3617:2): [True: 2, Folded]
  ------------------
 3618|      2|	REGISTER_DOUBLE_CONSTANT("INF", ZEND_INFINITY, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3619|      2|	REGISTER_DOUBLE_CONSTANT("NAN", ZEND_NAN, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
 3620|      2|	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_UP", PHP_ROUND_HALF_UP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3621|      2|	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_DOWN", PHP_ROUND_HALF_DOWN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3622|      2|	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_EVEN", PHP_ROUND_HALF_EVEN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3623|      2|	REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_ODD", PHP_ROUND_HALF_ODD, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3624|      2|	REGISTER_LONG_CONSTANT("CRYPT_SALT_LENGTH", PHP_MAX_SALT_LEN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3625|      2|	REGISTER_LONG_CONSTANT("CRYPT_STD_DES", 1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3626|      2|	REGISTER_LONG_CONSTANT("CRYPT_EXT_DES", 1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3627|      2|	REGISTER_LONG_CONSTANT("CRYPT_MD5", 1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3628|      2|	REGISTER_LONG_CONSTANT("CRYPT_BLOWFISH", 1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3629|      2|	REGISTER_LONG_CONSTANT("CRYPT_SHA256", 1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3630|      2|	REGISTER_LONG_CONSTANT("CRYPT_SHA512", 1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3631|      2|#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
 3632|      2|	REGISTER_LONG_CONSTANT("DNS_A", PHP_DNS_A, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3633|      2|	REGISTER_LONG_CONSTANT("DNS_NS", PHP_DNS_NS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3634|      2|	REGISTER_LONG_CONSTANT("DNS_CNAME", PHP_DNS_CNAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3635|      2|	REGISTER_LONG_CONSTANT("DNS_SOA", PHP_DNS_SOA, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3636|      2|	REGISTER_LONG_CONSTANT("DNS_PTR", PHP_DNS_PTR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3637|      2|	REGISTER_LONG_CONSTANT("DNS_HINFO", PHP_DNS_HINFO, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3638|      2|#endif
 3639|      2|#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) && (!defined(PHP_WIN32))
 3640|      2|	REGISTER_LONG_CONSTANT("DNS_CAA", PHP_DNS_CAA, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3641|      2|#endif
 3642|      2|#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)))
 3643|      2|	REGISTER_LONG_CONSTANT("DNS_MX", PHP_DNS_MX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3644|      2|	REGISTER_LONG_CONSTANT("DNS_TXT", PHP_DNS_TXT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3645|      2|	REGISTER_LONG_CONSTANT("DNS_SRV", PHP_DNS_SRV, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3646|      2|	REGISTER_LONG_CONSTANT("DNS_NAPTR", PHP_DNS_NAPTR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3647|      2|	REGISTER_LONG_CONSTANT("DNS_AAAA", PHP_DNS_AAAA, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3648|      2|	REGISTER_LONG_CONSTANT("DNS_A6", PHP_DNS_A6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3649|      2|	REGISTER_LONG_CONSTANT("DNS_ANY", PHP_DNS_ANY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3650|      2|	REGISTER_LONG_CONSTANT("DNS_ALL", PHP_DNS_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3651|      2|#endif
 3652|      2|	REGISTER_LONG_CONSTANT("HTML_SPECIALCHARS", PHP_HTML_SPECIALCHARS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3653|      2|	REGISTER_LONG_CONSTANT("HTML_ENTITIES", PHP_HTML_ENTITIES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3654|      2|	REGISTER_LONG_CONSTANT("ENT_COMPAT", ENT_COMPAT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3655|      2|	REGISTER_LONG_CONSTANT("ENT_QUOTES", ENT_QUOTES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3656|      2|	REGISTER_LONG_CONSTANT("ENT_NOQUOTES", ENT_NOQUOTES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3657|      2|	REGISTER_LONG_CONSTANT("ENT_IGNORE", ENT_IGNORE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3658|      2|	REGISTER_LONG_CONSTANT("ENT_SUBSTITUTE", ENT_SUBSTITUTE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3659|      2|	REGISTER_LONG_CONSTANT("ENT_DISALLOWED", ENT_DISALLOWED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3660|      2|	REGISTER_LONG_CONSTANT("ENT_HTML401", ENT_HTML401, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3661|      2|	REGISTER_LONG_CONSTANT("ENT_XML1", ENT_XML1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3662|      2|	REGISTER_LONG_CONSTANT("ENT_XHTML", ENT_XHTML, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3663|      2|	REGISTER_LONG_CONSTANT("ENT_HTML5", ENT_HTML5, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3664|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_GIF", IMAGE_FILETYPE_GIF, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3665|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG", IMAGE_FILETYPE_JPEG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3666|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_PNG", IMAGE_FILETYPE_PNG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3667|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_SWF", IMAGE_FILETYPE_SWF, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3668|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_PSD", IMAGE_FILETYPE_PSD, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3669|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_BMP", IMAGE_FILETYPE_BMP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3670|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_II", IMAGE_FILETYPE_TIFF_II, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3671|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_MM", IMAGE_FILETYPE_TIFF_MM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3672|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_JPC", IMAGE_FILETYPE_JPC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3673|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3674|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3675|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3676|       |#if (defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB))
 3677|       |	REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_PERSISTENT);
 3678|       |#endif
 3679|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3680|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_WBMP", IMAGE_FILETYPE_WBMP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3681|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG2000", IMAGE_FILETYPE_JPC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3682|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_XBM", IMAGE_FILETYPE_XBM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3683|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_ICO", IMAGE_FILETYPE_ICO, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3684|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_WEBP", IMAGE_FILETYPE_WEBP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3685|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_AVIF", IMAGE_FILETYPE_AVIF, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3686|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_HEIF", IMAGE_FILETYPE_HEIF, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3687|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_UNKNOWN", IMAGE_FILETYPE_UNKNOWN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3688|      2|	REGISTER_LONG_CONSTANT("IMAGETYPE_COUNT", IMAGE_FILETYPE_FIXED_COUNT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3689|      2|	REGISTER_LONG_CONSTANT("INFO_GENERAL", PHP_INFO_GENERAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3690|      2|	REGISTER_LONG_CONSTANT("INFO_CREDITS", PHP_INFO_CREDITS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3691|      2|	REGISTER_LONG_CONSTANT("INFO_CONFIGURATION", PHP_INFO_CONFIGURATION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3692|      2|	REGISTER_LONG_CONSTANT("INFO_MODULES", PHP_INFO_MODULES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3693|      2|	REGISTER_LONG_CONSTANT("INFO_ENVIRONMENT", PHP_INFO_ENVIRONMENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3694|      2|	REGISTER_LONG_CONSTANT("INFO_VARIABLES", PHP_INFO_VARIABLES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3695|      2|	REGISTER_LONG_CONSTANT("INFO_LICENSE", PHP_INFO_LICENSE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3696|      2|	REGISTER_LONG_CONSTANT("INFO_ALL", PHP_INFO_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3697|      2|	REGISTER_LONG_CONSTANT("CREDITS_GROUP", PHP_CREDITS_GROUP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3698|      2|	REGISTER_LONG_CONSTANT("CREDITS_GENERAL", PHP_CREDITS_GENERAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3699|      2|	REGISTER_LONG_CONSTANT("CREDITS_SAPI", PHP_CREDITS_SAPI, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3700|      2|	REGISTER_LONG_CONSTANT("CREDITS_MODULES", PHP_CREDITS_MODULES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3701|      2|	REGISTER_LONG_CONSTANT("CREDITS_DOCS", PHP_CREDITS_DOCS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3702|      2|	REGISTER_LONG_CONSTANT("CREDITS_FULLPAGE", PHP_CREDITS_FULLPAGE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3703|      2|	REGISTER_LONG_CONSTANT("CREDITS_QA", PHP_CREDITS_QA, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3704|      2|	REGISTER_LONG_CONSTANT("CREDITS_ALL", PHP_CREDITS_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3705|      2|	REGISTER_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3706|      2|	REGISTER_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3707|      2|	REGISTER_LONG_CONSTANT("LOG_CRIT", LOG_CRIT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3708|      2|	REGISTER_LONG_CONSTANT("LOG_ERR", LOG_ERR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3709|      2|	REGISTER_LONG_CONSTANT("LOG_WARNING", LOG_WARNING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3710|      2|	REGISTER_LONG_CONSTANT("LOG_NOTICE", LOG_NOTICE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3711|      2|	REGISTER_LONG_CONSTANT("LOG_INFO", LOG_INFO, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3712|      2|	REGISTER_LONG_CONSTANT("LOG_DEBUG", LOG_DEBUG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3713|      2|	REGISTER_LONG_CONSTANT("LOG_KERN", LOG_KERN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3714|      2|	REGISTER_LONG_CONSTANT("LOG_USER", LOG_USER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3715|      2|	REGISTER_LONG_CONSTANT("LOG_MAIL", LOG_MAIL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3716|      2|	REGISTER_LONG_CONSTANT("LOG_DAEMON", LOG_DAEMON, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3717|      2|	REGISTER_LONG_CONSTANT("LOG_AUTH", LOG_AUTH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3718|      2|	REGISTER_LONG_CONSTANT("LOG_SYSLOG", LOG_SYSLOG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3719|      2|	REGISTER_LONG_CONSTANT("LOG_LPR", LOG_LPR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3720|      2|#if defined(LOG_NEWS)
 3721|      2|	REGISTER_LONG_CONSTANT("LOG_NEWS", LOG_NEWS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3722|      2|#endif
 3723|      2|#if defined(LOG_UUCP)
 3724|      2|	REGISTER_LONG_CONSTANT("LOG_UUCP", LOG_UUCP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3725|      2|#endif
 3726|      2|#if defined(LOG_CRON)
 3727|      2|	REGISTER_LONG_CONSTANT("LOG_CRON", LOG_CRON, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3728|      2|#endif
 3729|      2|#if defined(LOG_AUTHPRIV)
 3730|      2|	REGISTER_LONG_CONSTANT("LOG_AUTHPRIV", LOG_AUTHPRIV, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3731|      2|#endif
 3732|      2|#if !defined(PHP_WIN32)
 3733|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL0", LOG_LOCAL0, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3734|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL1", LOG_LOCAL1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3735|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL2", LOG_LOCAL2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3736|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL3", LOG_LOCAL3, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3737|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL4", LOG_LOCAL4, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3738|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL5", LOG_LOCAL5, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3739|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL6", LOG_LOCAL6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3740|      2|	REGISTER_LONG_CONSTANT("LOG_LOCAL7", LOG_LOCAL7, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3741|      2|#endif
 3742|      2|	REGISTER_LONG_CONSTANT("LOG_PID", LOG_PID, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3743|      2|	REGISTER_LONG_CONSTANT("LOG_CONS", LOG_CONS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3744|      2|	REGISTER_LONG_CONSTANT("LOG_ODELAY", LOG_ODELAY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3745|      2|	REGISTER_LONG_CONSTANT("LOG_NDELAY", LOG_NDELAY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3746|      2|#if defined(LOG_NOWAIT)
 3747|      2|	REGISTER_LONG_CONSTANT("LOG_NOWAIT", LOG_NOWAIT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3748|      2|#endif
 3749|      2|#if defined(LOG_PERROR)
 3750|      2|	REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3751|      2|#endif
 3752|      2|	REGISTER_LONG_CONSTANT("STR_PAD_LEFT", PHP_STR_PAD_LEFT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3753|      2|	REGISTER_LONG_CONSTANT("STR_PAD_RIGHT", PHP_STR_PAD_RIGHT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3754|      2|	REGISTER_LONG_CONSTANT("STR_PAD_BOTH", PHP_STR_PAD_BOTH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3755|      2|	REGISTER_LONG_CONSTANT("PATHINFO_DIRNAME", PHP_PATHINFO_DIRNAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3756|      2|	REGISTER_LONG_CONSTANT("PATHINFO_BASENAME", PHP_PATHINFO_BASENAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3757|      2|	REGISTER_LONG_CONSTANT("PATHINFO_EXTENSION", PHP_PATHINFO_EXTENSION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3758|      2|	REGISTER_LONG_CONSTANT("PATHINFO_FILENAME", PHP_PATHINFO_FILENAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3759|      2|	REGISTER_LONG_CONSTANT("PATHINFO_ALL", PHP_PATHINFO_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3760|      2|	REGISTER_LONG_CONSTANT("CHAR_MAX", CHAR_MAX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3761|      2|	REGISTER_LONG_CONSTANT("LC_CTYPE", LC_CTYPE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3762|      2|	REGISTER_LONG_CONSTANT("LC_NUMERIC", LC_NUMERIC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3763|      2|	REGISTER_LONG_CONSTANT("LC_TIME", LC_TIME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3764|      2|	REGISTER_LONG_CONSTANT("LC_COLLATE", LC_COLLATE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3765|      2|	REGISTER_LONG_CONSTANT("LC_MONETARY", LC_MONETARY, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3766|      2|	REGISTER_LONG_CONSTANT("LC_ALL", LC_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3767|      2|#if defined(LC_MESSAGES)
 3768|      2|	REGISTER_LONG_CONSTANT("LC_MESSAGES", LC_MESSAGES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3769|      2|#endif
 3770|      2|#if defined(HAVE_NL_LANGINFO) && defined(ABDAY_1)
 3771|      2|	REGISTER_LONG_CONSTANT("ABDAY_1", ABDAY_1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3772|      2|	REGISTER_LONG_CONSTANT("ABDAY_2", ABDAY_2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3773|      2|	REGISTER_LONG_CONSTANT("ABDAY_3", ABDAY_3, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3774|      2|	REGISTER_LONG_CONSTANT("ABDAY_4", ABDAY_4, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3775|      2|	REGISTER_LONG_CONSTANT("ABDAY_5", ABDAY_5, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3776|      2|	REGISTER_LONG_CONSTANT("ABDAY_6", ABDAY_6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3777|      2|	REGISTER_LONG_CONSTANT("ABDAY_7", ABDAY_7, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3778|      2|#endif
 3779|      2|#if defined(HAVE_NL_LANGINFO) && defined(DAY_1)
 3780|      2|	REGISTER_LONG_CONSTANT("DAY_1", DAY_1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3781|      2|	REGISTER_LONG_CONSTANT("DAY_2", DAY_2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3782|      2|	REGISTER_LONG_CONSTANT("DAY_3", DAY_3, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3783|      2|	REGISTER_LONG_CONSTANT("DAY_4", DAY_4, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3784|      2|	REGISTER_LONG_CONSTANT("DAY_5", DAY_5, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3785|      2|	REGISTER_LONG_CONSTANT("DAY_6", DAY_6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3786|      2|	REGISTER_LONG_CONSTANT("DAY_7", DAY_7, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3787|      2|#endif
 3788|      2|#if defined(HAVE_NL_LANGINFO) && defined(ABMON_1)
 3789|      2|	REGISTER_LONG_CONSTANT("ABMON_1", ABMON_1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3790|      2|	REGISTER_LONG_CONSTANT("ABMON_2", ABMON_2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3791|      2|	REGISTER_LONG_CONSTANT("ABMON_3", ABMON_3, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3792|      2|	REGISTER_LONG_CONSTANT("ABMON_4", ABMON_4, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3793|      2|	REGISTER_LONG_CONSTANT("ABMON_5", ABMON_5, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3794|      2|	REGISTER_LONG_CONSTANT("ABMON_6", ABMON_6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3795|      2|	REGISTER_LONG_CONSTANT("ABMON_7", ABMON_7, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3796|      2|	REGISTER_LONG_CONSTANT("ABMON_8", ABMON_8, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3797|      2|	REGISTER_LONG_CONSTANT("ABMON_9", ABMON_9, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3798|      2|	REGISTER_LONG_CONSTANT("ABMON_10", ABMON_10, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3799|      2|	REGISTER_LONG_CONSTANT("ABMON_11", ABMON_11, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3800|      2|	REGISTER_LONG_CONSTANT("ABMON_12", ABMON_12, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3801|      2|#endif
 3802|      2|#if defined(HAVE_NL_LANGINFO) && defined(MON_1)
 3803|      2|	REGISTER_LONG_CONSTANT("MON_1", MON_1, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3804|      2|	REGISTER_LONG_CONSTANT("MON_2", MON_2, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3805|      2|	REGISTER_LONG_CONSTANT("MON_3", MON_3, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3806|      2|	REGISTER_LONG_CONSTANT("MON_4", MON_4, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3807|      2|	REGISTER_LONG_CONSTANT("MON_5", MON_5, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3808|      2|	REGISTER_LONG_CONSTANT("MON_6", MON_6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3809|      2|	REGISTER_LONG_CONSTANT("MON_7", MON_7, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3810|      2|	REGISTER_LONG_CONSTANT("MON_8", MON_8, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3811|      2|	REGISTER_LONG_CONSTANT("MON_9", MON_9, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3812|      2|	REGISTER_LONG_CONSTANT("MON_10", MON_10, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3813|      2|	REGISTER_LONG_CONSTANT("MON_11", MON_11, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3814|      2|	REGISTER_LONG_CONSTANT("MON_12", MON_12, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3815|      2|#endif
 3816|      2|#if defined(HAVE_NL_LANGINFO) && defined(AM_STR)
 3817|      2|	REGISTER_LONG_CONSTANT("AM_STR", AM_STR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3818|      2|#endif
 3819|      2|#if defined(HAVE_NL_LANGINFO) && defined(PM_STR)
 3820|      2|	REGISTER_LONG_CONSTANT("PM_STR", PM_STR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3821|      2|#endif
 3822|      2|#if defined(HAVE_NL_LANGINFO) && defined(D_T_FMT)
 3823|      2|	REGISTER_LONG_CONSTANT("D_T_FMT", D_T_FMT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3824|      2|#endif
 3825|      2|#if defined(HAVE_NL_LANGINFO) && defined(D_FMT)
 3826|      2|	REGISTER_LONG_CONSTANT("D_FMT", D_FMT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3827|      2|#endif
 3828|      2|#if defined(HAVE_NL_LANGINFO) && defined(T_FMT)
 3829|      2|	REGISTER_LONG_CONSTANT("T_FMT", T_FMT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3830|      2|#endif
 3831|      2|#if defined(HAVE_NL_LANGINFO) && defined(T_FMT_AMPM)
 3832|      2|	REGISTER_LONG_CONSTANT("T_FMT_AMPM", T_FMT_AMPM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3833|      2|#endif
 3834|      2|#if defined(HAVE_NL_LANGINFO) && defined(ERA)
 3835|      2|	REGISTER_LONG_CONSTANT("ERA", ERA, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3836|      2|#endif
 3837|      2|#if defined(HAVE_NL_LANGINFO) && defined(ERA_YEAR)
 3838|      2|	REGISTER_LONG_CONSTANT("ERA_YEAR", ERA_YEAR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3839|      2|#endif
 3840|      2|#if defined(HAVE_NL_LANGINFO) && defined(ERA_D_T_FMT)
 3841|      2|	REGISTER_LONG_CONSTANT("ERA_D_T_FMT", ERA_D_T_FMT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3842|      2|#endif
 3843|      2|#if defined(HAVE_NL_LANGINFO) && defined(ERA_D_FMT)
 3844|      2|	REGISTER_LONG_CONSTANT("ERA_D_FMT", ERA_D_FMT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3845|      2|#endif
 3846|      2|#if defined(HAVE_NL_LANGINFO) && defined(ERA_T_FMT)
 3847|      2|	REGISTER_LONG_CONSTANT("ERA_T_FMT", ERA_T_FMT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3848|      2|#endif
 3849|      2|#if defined(HAVE_NL_LANGINFO) && defined(ALT_DIGITS)
 3850|      2|	REGISTER_LONG_CONSTANT("ALT_DIGITS", ALT_DIGITS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3851|      2|#endif
 3852|      2|#if defined(HAVE_NL_LANGINFO) && defined(INT_CURR_SYMBOL)
 3853|      2|	REGISTER_LONG_CONSTANT("INT_CURR_SYMBOL", INT_CURR_SYMBOL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3854|      2|#endif
 3855|      2|#if defined(HAVE_NL_LANGINFO) && defined(CURRENCY_SYMBOL)
 3856|      2|	REGISTER_LONG_CONSTANT("CURRENCY_SYMBOL", CURRENCY_SYMBOL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3857|      2|#endif
 3858|      2|#if defined(HAVE_NL_LANGINFO) && defined(CRNCYSTR)
 3859|      2|	REGISTER_LONG_CONSTANT("CRNCYSTR", CRNCYSTR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3860|      2|#endif
 3861|      2|#if defined(HAVE_NL_LANGINFO) && defined(MON_DECIMAL_POINT)
 3862|      2|	REGISTER_LONG_CONSTANT("MON_DECIMAL_POINT", MON_DECIMAL_POINT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3863|      2|#endif
 3864|      2|#if defined(HAVE_NL_LANGINFO) && defined(MON_THOUSANDS_SEP)
 3865|      2|	REGISTER_LONG_CONSTANT("MON_THOUSANDS_SEP", MON_THOUSANDS_SEP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3866|      2|#endif
 3867|      2|#if defined(HAVE_NL_LANGINFO) && defined(MON_GROUPING)
 3868|      2|	REGISTER_LONG_CONSTANT("MON_GROUPING", MON_GROUPING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3869|      2|#endif
 3870|      2|#if defined(HAVE_NL_LANGINFO) && defined(POSITIVE_SIGN)
 3871|      2|	REGISTER_LONG_CONSTANT("POSITIVE_SIGN", POSITIVE_SIGN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3872|      2|#endif
 3873|      2|#if defined(HAVE_NL_LANGINFO) && defined(NEGATIVE_SIGN)
 3874|      2|	REGISTER_LONG_CONSTANT("NEGATIVE_SIGN", NEGATIVE_SIGN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3875|      2|#endif
 3876|      2|#if defined(HAVE_NL_LANGINFO) && defined(INT_FRAC_DIGITS)
 3877|      2|	REGISTER_LONG_CONSTANT("INT_FRAC_DIGITS", INT_FRAC_DIGITS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3878|      2|#endif
 3879|      2|#if defined(HAVE_NL_LANGINFO) && defined(FRAC_DIGITS)
 3880|      2|	REGISTER_LONG_CONSTANT("FRAC_DIGITS", FRAC_DIGITS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3881|      2|#endif
 3882|      2|#if defined(HAVE_NL_LANGINFO) && defined(P_CS_PRECEDES)
 3883|      2|	REGISTER_LONG_CONSTANT("P_CS_PRECEDES", P_CS_PRECEDES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3884|      2|#endif
 3885|      2|#if defined(HAVE_NL_LANGINFO) && defined(P_SEP_BY_SPACE)
 3886|      2|	REGISTER_LONG_CONSTANT("P_SEP_BY_SPACE", P_SEP_BY_SPACE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3887|      2|#endif
 3888|      2|#if defined(HAVE_NL_LANGINFO) && defined(N_CS_PRECEDES)
 3889|      2|	REGISTER_LONG_CONSTANT("N_CS_PRECEDES", N_CS_PRECEDES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3890|      2|#endif
 3891|      2|#if defined(HAVE_NL_LANGINFO) && defined(N_SEP_BY_SPACE)
 3892|      2|	REGISTER_LONG_CONSTANT("N_SEP_BY_SPACE", N_SEP_BY_SPACE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3893|      2|#endif
 3894|      2|#if defined(HAVE_NL_LANGINFO) && defined(P_SIGN_POSN)
 3895|      2|	REGISTER_LONG_CONSTANT("P_SIGN_POSN", P_SIGN_POSN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3896|      2|#endif
 3897|      2|#if defined(HAVE_NL_LANGINFO) && defined(N_SIGN_POSN)
 3898|      2|	REGISTER_LONG_CONSTANT("N_SIGN_POSN", N_SIGN_POSN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3899|      2|#endif
 3900|      2|#if defined(HAVE_NL_LANGINFO) && defined(DECIMAL_POINT)
 3901|      2|	REGISTER_LONG_CONSTANT("DECIMAL_POINT", DECIMAL_POINT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3902|      2|#endif
 3903|      2|#if defined(HAVE_NL_LANGINFO) && defined(RADIXCHAR)
 3904|      2|	REGISTER_LONG_CONSTANT("RADIXCHAR", RADIXCHAR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3905|      2|#endif
 3906|      2|#if defined(HAVE_NL_LANGINFO) && defined(THOUSANDS_SEP)
 3907|      2|	REGISTER_LONG_CONSTANT("THOUSANDS_SEP", THOUSANDS_SEP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3908|      2|#endif
 3909|      2|#if defined(HAVE_NL_LANGINFO) && defined(THOUSEP)
 3910|      2|	REGISTER_LONG_CONSTANT("THOUSEP", THOUSEP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3911|      2|#endif
 3912|      2|#if defined(HAVE_NL_LANGINFO) && defined(GROUPING)
 3913|      2|	REGISTER_LONG_CONSTANT("GROUPING", GROUPING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3914|      2|#endif
 3915|      2|#if defined(HAVE_NL_LANGINFO) && defined(YESEXPR)
 3916|      2|	REGISTER_LONG_CONSTANT("YESEXPR", YESEXPR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3917|      2|#endif
 3918|      2|#if defined(HAVE_NL_LANGINFO) && defined(NOEXPR)
 3919|      2|	REGISTER_LONG_CONSTANT("NOEXPR", NOEXPR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3920|      2|#endif
 3921|      2|#if defined(HAVE_NL_LANGINFO) && defined(YESSTR)
 3922|      2|	REGISTER_LONG_CONSTANT("YESSTR", YESSTR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3923|      2|#endif
 3924|      2|#if defined(HAVE_NL_LANGINFO) && defined(NOSTR)
 3925|      2|	REGISTER_LONG_CONSTANT("NOSTR", NOSTR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3926|      2|#endif
 3927|      2|#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
 3928|      2|	REGISTER_LONG_CONSTANT("CODESET", CODESET, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
 3929|      2|#endif
 3930|       |
 3931|       |
 3932|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "crypt", sizeof("crypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3933|      2|#if defined(HAVE_STRPTIME)
 3934|       |
 3935|      2|	zend_attribute *attribute_Deprecated_func_strptime_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "strptime", sizeof("strptime") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3936|      2|	ZVAL_STR(&attribute_Deprecated_func_strptime_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_2));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3937|      2|	attribute_Deprecated_func_strptime_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3938|      2|	zend_string *attribute_Deprecated_func_strptime_0_arg1_str = zend_string_init("use date_parse_from_format() (for locale-independent parsing), or IntlDateFormatter::parse() (for locale-dependent parsing) instead", strlen("use date_parse_from_format() (for locale-independent parsing), or IntlDateFormatter::parse() (for locale-dependent parsing) instead"), 1);
 3939|      2|	ZVAL_STR(&attribute_Deprecated_func_strptime_0->args[1].value, attribute_Deprecated_func_strptime_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3940|      2|	attribute_Deprecated_func_strptime_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3941|      2|#endif
 3942|       |
 3943|      2|	zend_attribute *attribute_Deprecated_func_assert_options_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "assert_options", sizeof("assert_options") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3944|      2|	ZVAL_STR(&attribute_Deprecated_func_assert_options_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3945|      2|	attribute_Deprecated_func_assert_options_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3946|       |
 3947|      2|	zend_attribute *attribute_Deprecated_func_utf8_encode_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "utf8_encode", sizeof("utf8_encode") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3948|      2|	ZVAL_STR(&attribute_Deprecated_func_utf8_encode_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_2));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3949|      2|	attribute_Deprecated_func_utf8_encode_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3950|      2|	zend_string *attribute_Deprecated_func_utf8_encode_0_arg1_str = zend_string_init("visit the php.net documentation for various alternatives", strlen("visit the php.net documentation for various alternatives"), 1);
 3951|      2|	ZVAL_STR(&attribute_Deprecated_func_utf8_encode_0->args[1].value, attribute_Deprecated_func_utf8_encode_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3952|      2|	attribute_Deprecated_func_utf8_encode_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3953|       |
 3954|      2|	zend_attribute *attribute_Deprecated_func_utf8_decode_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "utf8_decode", sizeof("utf8_decode") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3955|      2|	ZVAL_STR(&attribute_Deprecated_func_utf8_decode_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_2));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3956|      2|	attribute_Deprecated_func_utf8_decode_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3957|      2|	ZVAL_STR_COPY(&attribute_Deprecated_func_utf8_decode_0->args[1].value, attribute_Deprecated_func_utf8_encode_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3958|      2|	attribute_Deprecated_func_utf8_decode_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3959|       |
 3960|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "password_hash", sizeof("password_hash") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3961|       |
 3962|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "password_verify", sizeof("password_verify") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3963|      2|#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32))
 3964|       |
 3965|      2|	zend_attribute *attribute_Deprecated_func_socket_set_timeout_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "socket_set_timeout", sizeof("socket_set_timeout") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  ------------------
  |  |   35|      2|# define CG(v) (compiler_globals.v)
  ------------------
 3966|      2|	ZVAL_STR(&attribute_Deprecated_func_socket_set_timeout_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_5));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3967|      2|	attribute_Deprecated_func_socket_set_timeout_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3968|      2|	zend_string *attribute_Deprecated_func_socket_set_timeout_0_arg1_str = zend_string_init("use stream_set_timeout() instead", strlen("use stream_set_timeout() instead"), 1);
 3969|      2|	ZVAL_STR(&attribute_Deprecated_func_socket_set_timeout_0->args[1].value, attribute_Deprecated_func_socket_set_timeout_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3970|      2|	attribute_Deprecated_func_socket_set_timeout_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3971|      2|#endif
 3972|       |
 3973|      2|	zend_attribute *attribute_Deprecated_const_ASSERT_ACTIVE_0 = zend_add_global_constant_attribute(const_ASSERT_ACTIVE, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 3974|      2|	ZVAL_STR(&attribute_Deprecated_const_ASSERT_ACTIVE_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3975|      2|	attribute_Deprecated_const_ASSERT_ACTIVE_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3976|      2|	zend_string *attribute_Deprecated_const_ASSERT_ACTIVE_0_arg1_str = zend_string_init("as assert_options() is deprecated", strlen("as assert_options() is deprecated"), 1);
 3977|      2|	ZVAL_STR(&attribute_Deprecated_const_ASSERT_ACTIVE_0->args[1].value, attribute_Deprecated_const_ASSERT_ACTIVE_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3978|      2|	attribute_Deprecated_const_ASSERT_ACTIVE_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3979|       |
 3980|      2|	zend_attribute *attribute_Deprecated_const_ASSERT_CALLBACK_0 = zend_add_global_constant_attribute(const_ASSERT_CALLBACK, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 3981|      2|	ZVAL_STR(&attribute_Deprecated_const_ASSERT_CALLBACK_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3982|      2|	attribute_Deprecated_const_ASSERT_CALLBACK_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3983|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_ASSERT_CALLBACK_0->args[1].value, attribute_Deprecated_const_ASSERT_ACTIVE_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3984|      2|	attribute_Deprecated_const_ASSERT_CALLBACK_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3985|       |
 3986|      2|	zend_attribute *attribute_Deprecated_const_ASSERT_BAIL_0 = zend_add_global_constant_attribute(const_ASSERT_BAIL, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 3987|      2|	ZVAL_STR(&attribute_Deprecated_const_ASSERT_BAIL_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3988|      2|	attribute_Deprecated_const_ASSERT_BAIL_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3989|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_ASSERT_BAIL_0->args[1].value, attribute_Deprecated_const_ASSERT_ACTIVE_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3990|      2|	attribute_Deprecated_const_ASSERT_BAIL_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3991|       |
 3992|      2|	zend_attribute *attribute_Deprecated_const_ASSERT_WARNING_0 = zend_add_global_constant_attribute(const_ASSERT_WARNING, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 3993|      2|	ZVAL_STR(&attribute_Deprecated_const_ASSERT_WARNING_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3994|      2|	attribute_Deprecated_const_ASSERT_WARNING_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 3995|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_ASSERT_WARNING_0->args[1].value, attribute_Deprecated_const_ASSERT_ACTIVE_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3996|      2|	attribute_Deprecated_const_ASSERT_WARNING_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 3997|       |
 3998|      2|	zend_attribute *attribute_Deprecated_const_ASSERT_EXCEPTION_0 = zend_add_global_constant_attribute(const_ASSERT_EXCEPTION, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
 3999|      2|	ZVAL_STR(&attribute_Deprecated_const_ASSERT_EXCEPTION_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_3));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4000|      2|	attribute_Deprecated_const_ASSERT_EXCEPTION_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
 4001|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_ASSERT_EXCEPTION_0->args[1].value, attribute_Deprecated_const_ASSERT_ACTIVE_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4002|      2|	attribute_Deprecated_const_ASSERT_EXCEPTION_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
 4003|      2|}
basic_functions.c:register_class___PHP_Incomplete_Class:
 4017|      2|{
 4018|      2|	zend_class_entry ce, *class_entry;
 4019|       |
 4020|      2|	INIT_CLASS_ENTRY(ce, "__PHP_Incomplete_Class", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 4021|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES);
  ------------------
  |  |  308|      2|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
 4022|       |
 4023|      2|	zend_string *attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class_0 = zend_string_init_interned("AllowDynamicProperties", sizeof("AllowDynamicProperties") - 1, true);
 4024|      2|	zend_add_class_attribute(class_entry, attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class_0, 0);
 4025|      2|	zend_string_release_ex(attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class_0, true);
 4026|       |
 4027|      2|	return class_entry;
 4028|      2|}
basic_functions.c:register_class_AssertionError:
 4031|      2|{
 4032|      2|	zend_class_entry ce, *class_entry;
 4033|       |
 4034|      2|	INIT_CLASS_ENTRY(ce, "AssertionError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
 4035|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, 0);
 4036|       |
 4037|      2|	return class_entry;
 4038|      2|}
basic_functions.c:register_class_RoundingMode:
 4041|      2|{
 4042|      2|	zend_class_entry *class_entry = zend_register_internal_enum("RoundingMode", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
 4043|       |
 4044|      2|	zend_enum_add_case_cstr(class_entry, "HalfAwayFromZero", NULL);
 4045|       |
 4046|      2|	zend_enum_add_case_cstr(class_entry, "HalfTowardsZero", NULL);
 4047|       |
 4048|      2|	zend_enum_add_case_cstr(class_entry, "HalfEven", NULL);
 4049|       |
 4050|      2|	zend_enum_add_case_cstr(class_entry, "HalfOdd", NULL);
 4051|       |
 4052|      2|	zend_enum_add_case_cstr(class_entry, "TowardsZero", NULL);
 4053|       |
 4054|      2|	zend_enum_add_case_cstr(class_entry, "AwayFromZero", NULL);
 4055|       |
 4056|      2|	zend_enum_add_case_cstr(class_entry, "NegativeInfinity", NULL);
 4057|       |
 4058|      2|	zend_enum_add_case_cstr(class_entry, "PositiveInfinity", NULL);
 4059|       |
 4060|      2|	return class_entry;
 4061|      2|}
basic_functions.c:register_class_SortDirection:
 4006|      2|{
 4007|      2|	zend_class_entry *class_entry = zend_register_internal_enum("SortDirection", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
 4008|       |
 4009|      2|	zend_enum_add_case_cstr(class_entry, "Ascending", NULL);
 4010|       |
 4011|      2|	zend_enum_add_case_cstr(class_entry, "Descending", NULL);
 4012|       |
 4013|      2|	return class_entry;
 4014|      2|}

OnChangeBrowscap:
  479|      2|{
  480|      2|	if (stage == PHP_INI_STAGE_STARTUP) {
  ------------------
  |  |   69|      2|#define PHP_INI_STAGE_STARTUP		ZEND_INI_STAGE_STARTUP
  |  |  ------------------
  |  |  |  |  223|      2|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (480:6): [True: 2, False: 0]
  ------------------
  481|       |		/* value handled in browscap.c's MINIT */
  482|      2|		return SUCCESS;
  483|      2|	} else if (stage == PHP_INI_STAGE_ACTIVATE) {
  ------------------
  |  |   71|      0|#define PHP_INI_STAGE_ACTIVATE		ZEND_INI_STAGE_ACTIVATE
  |  |  ------------------
  |  |  |  |  225|      0|#define ZEND_INI_STAGE_ACTIVATE		(1<<2)
  |  |  ------------------
  ------------------
  |  Branch (483:13): [True: 0, False: 0]
  ------------------
  484|      0|		browser_data *bdata = &BROWSCAP_G(activation_bdata);
  ------------------
  |  |   58|      0|#define BROWSCAP_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(browscap, v)
  |  |  ------------------
  |  |  |  |  276|      0|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  485|      0|		if (bdata->filename[0] != '\0') {
  ------------------
  |  Branch (485:7): [True: 0, False: 0]
  ------------------
  486|      0|			browscap_bdata_dtor(bdata, false);
  487|      0|		}
  488|      0|		if (VCWD_REALPATH(ZSTR_VAL(new_value), bdata->filename) == NULL) {
  ------------------
  |  |  339|      0|#define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path)
  ------------------
  |  Branch (488:7): [True: 0, False: 0]
  ------------------
  489|      0|			return FAILURE;
  490|      0|		}
  491|      0|		return SUCCESS;
  492|      0|	}
  493|       |
  494|      0|	return FAILURE;
  495|      2|}
zm_startup_browscap:
  499|      2|{
  500|      2|	const char *browscap = zend_ini_string_literal("browscap");
  ------------------
  |  |  101|      2|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
  501|       |
  502|       |#ifdef ZTS
  503|       |	ts_allocate_id(&browscap_globals_id, sizeof(browser_data), (ts_allocate_ctor) browscap_globals_ctor, NULL);
  504|       |#endif
  505|       |	/* ctor call not really needed for non-ZTS */
  506|       |
  507|      2|	if (browscap && browscap[0]) {
  ------------------
  |  Branch (507:6): [True: 2, False: 0]
  |  Branch (507:18): [True: 0, False: 2]
  ------------------
  508|      0|		if (browscap_read_file(browscap, &global_bdata, true) == FAILURE) {
  ------------------
  |  Branch (508:7): [True: 0, False: 0]
  ------------------
  509|      0|			return FAILURE;
  510|      0|		}
  511|      0|	}
  512|       |
  513|      2|	return SUCCESS;
  514|      2|}
zm_deactivate_browscap:
  518|  33.5k|{
  519|  33.5k|	browser_data *bdata = &BROWSCAP_G(activation_bdata);
  ------------------
  |  |   58|  33.5k|#define BROWSCAP_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(browscap, v)
  |  |  ------------------
  |  |  |  |  276|  33.5k|#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
  |  |  ------------------
  ------------------
  520|  33.5k|	if (bdata->filename[0] != '\0') {
  ------------------
  |  Branch (520:6): [True: 0, False: 33.5k]
  ------------------
  521|      0|		browscap_bdata_dtor(bdata, false);
  522|      0|	}
  523|       |
  524|  33.5k|	return SUCCESS;
  525|  33.5k|}

crc32_x86.c:resolve_crc32_x86_simd_update:
  324|      2|static crc32_x86_simd_func_t resolve_crc32_x86_simd_update(void) {
  325|      2|	if (zend_cpu_supports_sse42() && zend_cpu_supports_pclmul()) {
  ------------------
  |  Branch (325:6): [True: 2, False: 0]
  |  Branch (325:35): [True: 2, False: 0]
  ------------------
  326|      2|		return crc32_sse42_pclmul_update;
  327|      2|	}
  328|      0|	return crc32_x86_simd_update_default;
  329|      2|}

php_print_credits:
   23|      1|{
   24|      1|	if (!sapi_module.phpinfo_as_text && flag & PHP_CREDITS_FULLPAGE) {
  ------------------
  |  |   41|      0|#define PHP_CREDITS_FULLPAGE		(1<<5)
  ------------------
  |  Branch (24:6): [True: 0, False: 1]
  |  Branch (24:38): [True: 0, False: 0]
  ------------------
   25|      0|		php_print_info_htmlhead();
   26|      0|	}
   27|       |
   28|      1|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (28:6): [True: 0, False: 1]
  ------------------
   29|      0|		PUTS("<h1>PHP Credits</h1>\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
   30|      1|	} else {
   31|      1|		PUTS("PHP Credits\n");
  ------------------
  |  |  162|      1|#define PUTS(str)					do {				\
  |  |  163|      1|	const char *__str = (str);							\
  |  |  164|      1|	php_output_write(__str, strlen(__str));	\
  |  |  165|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
   32|      1|	}
   33|       |
   34|      1|	if (flag & PHP_CREDITS_GROUP) {
  ------------------
  |  |   36|      1|#define PHP_CREDITS_GROUP			(1<<0)
  ------------------
  |  Branch (34:6): [True: 1, False: 0]
  ------------------
   35|       |		/* Group */
   36|       |
   37|      1|		php_info_print_table_start();
   38|      1|		php_info_print_table_header(1, "PHP Group");
   39|      1|		php_info_print_table_row(1, "Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski");
   40|      1|		php_info_print_table_end();
   41|      1|	}
   42|       |
   43|      1|	if (flag & PHP_CREDITS_GENERAL) {
  ------------------
  |  |   37|      1|#define PHP_CREDITS_GENERAL			(1<<1)
  ------------------
  |  Branch (43:6): [True: 1, False: 0]
  ------------------
   44|       |		/* Design & Concept */
   45|      1|		php_info_print_table_start();
   46|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (46:7): [True: 0, False: 1]
  ------------------
   47|      0|			php_info_print_table_header(1, "Language Design &amp; Concept");
   48|      1|		} else {
   49|      1|			php_info_print_table_header(1, "Language Design & Concept");
   50|      1|		}
   51|      1|		php_info_print_table_row(1, "Andi Gutmans, Rasmus Lerdorf, Zeev Suraski, Marcus Boerger");
   52|      1|		php_info_print_table_end();
   53|       |
   54|       |		/* PHP Language */
   55|      1|		php_info_print_table_start();
   56|      1|		php_info_print_table_colspan_header(2, "PHP Authors");
   57|      1|		php_info_print_table_header(2, "Contribution", "Authors");
   58|      1|		CREDIT_LINE("Zend Scripting Language Engine", "Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Marcus Boerger, Dmitry Stogov, Xinchen Hui, Nikita Popov");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   59|      1|		CREDIT_LINE("Extension Module API", "Andi Gutmans, Zeev Suraski, Andrei Zmievski");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   60|      1|		CREDIT_LINE("UNIX Build and Modularization", "Stig Bakken, Sascha Schumann, Jani Taskinen, Peter Kokot");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   61|      1|		CREDIT_LINE("Windows Support", "Shane Caraveo, Zeev Suraski, Wez Furlong, Pierre-Alain Joye, Anatol Belski, Kalle Sommer Nielsen");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   62|      1|		CREDIT_LINE("Server API (SAPI) Abstraction Layer", "Andi Gutmans, Shane Caraveo, Zeev Suraski");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   63|      1|		CREDIT_LINE("Streams Abstraction Layer", "Wez Furlong, Sara Golemon");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   64|      1|		CREDIT_LINE("PHP Data Objects Layer", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   65|      1|		CREDIT_LINE("Output Handler", "Zeev Suraski, Thies C. Arntzen, Marcus Boerger, Michael Wallner");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   66|      1|		CREDIT_LINE("Consistent 64 bit support", "Anthony Ferrara, Anatol Belski");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   67|      1|		php_info_print_table_end();
   68|      1|	}
   69|       |
   70|      1|	if (flag & PHP_CREDITS_SAPI) {
  ------------------
  |  |   38|      1|#define PHP_CREDITS_SAPI			(1<<2)
  ------------------
  |  Branch (70:6): [True: 1, False: 0]
  ------------------
   71|       |		/* SAPI Modules */
   72|       |
   73|      1|		php_info_print_table_start();
   74|      1|		php_info_print_table_colspan_header(2, "SAPI Modules");
   75|      1|		php_info_print_table_header(2, "Contribution", "Authors");
   76|      1|#include "credits_sapi.h"
  ------------------
  |  |    1|       |/*
  |  |    2|       |                      DO NOT EDIT THIS FILE!
  |  |    3|       |
  |  |    4|       | it has been automatically created by scripts/dev/credits from
  |  |    5|       | the information found in the various ext/.../CREDITS and
  |  |    6|       | sapi/.../CREDITS files
  |  |    7|       |
  |  |    8|       | if you want to change an entry you have to edit the appropriate
  |  |    9|       | CREDITS file instead
  |  |   10|       |
  |  |   11|       |*/
  |  |   12|       |
  |  |   13|      1|CREDIT_LINE("Apache 2 Handler", "Ian Holsman, Justin Erenkrantz (based on Apache 2 Filter code)");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   14|      1|CREDIT_LINE("CGI / FastCGI", "Rasmus Lerdorf, Stig Bakken, Shane Caraveo, Dmitry Stogov");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   15|      1|CREDIT_LINE("CLI", "Edin Kadribasic, Marcus Boerger, Johannes Schlueter, Moriyoshi Koizumi, Xinchen Hui");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   16|      1|CREDIT_LINE("Embed", "Edin Kadribasic");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   17|      1|CREDIT_LINE("FastCGI Process Manager", "Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   18|      1|CREDIT_LINE("litespeed", "George Wang");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   19|      1|CREDIT_LINE("phpdbg", "Felipe Pena, Joe Watkins, Bob Weinand");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  ------------------
   77|      1|		php_info_print_table_end();
   78|      1|	}
   79|       |
   80|      1|	if (flag & PHP_CREDITS_MODULES) {
  ------------------
  |  |   39|      1|#define PHP_CREDITS_MODULES			(1<<3)
  ------------------
  |  Branch (80:6): [True: 1, False: 0]
  ------------------
   81|       |		/* Modules */
   82|       |
   83|      1|		php_info_print_table_start();
   84|      1|		php_info_print_table_colspan_header(2, "Module Authors");
   85|      1|		php_info_print_table_header(2, "Module", "Authors");
   86|      1|#include "credits_ext.h"
  ------------------
  |  |    1|       |/*
  |  |    2|       |                      DO NOT EDIT THIS FILE!
  |  |    3|       |
  |  |    4|       | it has been automatically created by scripts/dev/credits from
  |  |    5|       | the information found in the various ext/.../CREDITS and
  |  |    6|       | sapi/.../CREDITS files
  |  |    7|       |
  |  |    8|       | if you want to change an entry you have to edit the appropriate
  |  |    9|       | CREDITS file instead
  |  |   10|       |
  |  |   11|       |*/
  |  |   12|       |
  |  |   13|      1|CREDIT_LINE("BC Math", "Andi Gutmans");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   14|      1|CREDIT_LINE("Bzip2", "Sterling Hughes");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   15|      1|CREDIT_LINE("Calendar", "Shane Caraveo, Colin Viebrock, Hartmut Holzgraefe, Wez Furlong");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   16|      1|CREDIT_LINE("COM and .Net", "Wez Furlong");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   17|      1|CREDIT_LINE("ctype", "Hartmut Holzgraefe");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   18|      1|CREDIT_LINE("cURL", "Sterling Hughes");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   19|      1|CREDIT_LINE("Date/Time Support", "Derick Rethans");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   20|      1|CREDIT_LINE("DB-LIB (MS SQL, Sybase)", "Wez Furlong, Frank M. Kromann, Adam Baratz");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   21|      1|CREDIT_LINE("DBA", "Sascha Schumann, Marcus Boerger");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   22|      1|CREDIT_LINE("DOM", "Christian Stocker, Rob Richards, Marcus Boerger, Nora Dossche");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   23|      1|CREDIT_LINE("enchant", "Pierre-Alain Joye, Ilia Alshanetsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   24|      1|CREDIT_LINE("EXIF", "Rasmus Lerdorf, Marcus Boerger");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   25|      1|CREDIT_LINE("FFI", "Dmitry Stogov");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   26|      1|CREDIT_LINE("fileinfo", "Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   27|      1|CREDIT_LINE("Firebird driver for PDO", "Ard Biesheuvel");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   28|      1|CREDIT_LINE("FTP", "Stefan Esser, Andrew Skalski");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   29|      1|CREDIT_LINE("GD imaging", "Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger, Mark Randall");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   30|      1|CREDIT_LINE("GetText", "Alex Plotnick");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   31|      1|CREDIT_LINE("GNU GMP support", "Stanislav Malyshev");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   32|      1|CREDIT_LINE("Iconv", "Rui Hirokawa, Stig Bakken, Moriyoshi Koizumi");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   33|      1|CREDIT_LINE("Input Filter", "Rasmus Lerdorf, Derick Rethans, Pierre-Alain Joye, Ilia Alshanetsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   34|      1|CREDIT_LINE("Internationalization", "Ed Batutis, Vladimir Iordanov, Dmitry Lakhtyuk, Stanislav Malyshev, Vadim Savchuk, Kirti Velankar");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   35|      1|CREDIT_LINE("JSON", "Jakub Zelenka, Omar Kilani, Scott MacVicar");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   36|      1|CREDIT_LINE("LDAP", "Amitay Isaacs, Eric Warnke, Rasmus Lerdorf, Gerrit Thomson, Stig Venaas");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   37|      1|CREDIT_LINE("LIBXML", "Christian Stocker, Rob Richards, Marcus Boerger, Wez Furlong, Shane Caraveo");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   38|      1|CREDIT_LINE("Multibyte String Functions", "Tsukada Takuya, Rui Hirokawa");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   39|      1|CREDIT_LINE("MySQL driver for PDO", "George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   40|      1|CREDIT_LINE("MySQLi", "Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   41|      1|CREDIT_LINE("MySQLnd", "Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlüter");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   42|      1|CREDIT_LINE("ODBC driver for PDO", "Wez Furlong");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   43|      1|CREDIT_LINE("ODBC", "Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   44|      1|CREDIT_LINE("Opcache", "Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Dmitry Stogov, Xinchen Hui");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   45|      1|CREDIT_LINE("OpenSSL", "Stig Venaas, Wez Furlong, Sascha Kettler, Scott MacVicar, Eliot Lear");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   46|      1|CREDIT_LINE("pcntl", "Jason Greene, Arnaud Le Blanc");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   47|      1|CREDIT_LINE("Perl Compatible Regexps", "Andrei Zmievski");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   48|      1|CREDIT_LINE("PHP Archive", "Gregory Beaver, Marcus Boerger");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   49|      1|CREDIT_LINE("PHP Data Objects", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   50|      1|CREDIT_LINE("PHP hash", "Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner, Scott MacVicar");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   51|      1|CREDIT_LINE("Posix", "Kristian Koehntopp");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   52|      1|CREDIT_LINE("PostgreSQL driver for PDO", "Edin Kadribasic, Ilia Alshanetsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   53|      1|CREDIT_LINE("PostgreSQL", "Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   54|      1|CREDIT_LINE("random", "Go Kudo, Tim Düsterhus, Guilliam Xavier, Christoph M. Becker, Jakub Zelenka, Bob Weinand, Máté Kocsis, and Original RNG implementators");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   55|      1|CREDIT_LINE("Readline", "Thies C. Arntzen");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   56|      1|CREDIT_LINE("Reflection", "Marcus Boerger, Timm Friebe, George Schlossnagle, Andrei Zmievski, Johannes Schlueter");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   57|      1|CREDIT_LINE("Sessions", "Sascha Schumann, Andrei Zmievski");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   58|      1|CREDIT_LINE("Shared Memory Operations", "Slava Poliakov, Ilia Alshanetsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   59|      1|CREDIT_LINE("SimpleXML", "Sterling Hughes, Marcus Boerger, Rob Richards");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   60|      1|CREDIT_LINE("SNMP", "Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne, Boris Lytochkin");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   61|      1|CREDIT_LINE("SOAP", "Brad Lafountain, Shane Caraveo, Dmitry Stogov");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   62|      1|CREDIT_LINE("Sockets", "Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   63|      1|CREDIT_LINE("Sodium", "Frank Denis");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   64|      1|CREDIT_LINE("SPL", "Marcus Boerger, Etienne Kneuss");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   65|      1|CREDIT_LINE("SQLite 3.x driver for PDO", "Wez Furlong");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   66|      1|CREDIT_LINE("SQLite3", "Scott MacVicar, Ilia Alshanetsky, Brad Dewar");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   67|      1|CREDIT_LINE("System V Message based IPC", "Wez Furlong");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   68|      1|CREDIT_LINE("System V Semaphores", "Tom May");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   69|      1|CREDIT_LINE("System V Shared Memory", "Christian Cartus");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   70|      1|CREDIT_LINE("tidy", "John Coggeshall, Ilia Alshanetsky");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   71|      1|CREDIT_LINE("tokenizer", "Andrei Zmievski, Johannes Schlueter");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   72|      1|CREDIT_LINE("uri", "Máté Kocsis, Tim Düsterhus, Ignace Nyamagana Butera, Arnaud Le Blanc, Dennis Snell, Nora Dossche, Nicolas Grekas");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   73|      1|CREDIT_LINE("XML", "Stig Bakken, Thies C. Arntzen, Sterling Hughes");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   74|      1|CREDIT_LINE("XMLReader", "Rob Richards");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   75|      1|CREDIT_LINE("XMLWriter", "Rob Richards, Pierre-Alain Joye");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   76|      1|CREDIT_LINE("XSL", "Christian Stocker, Rob Richards");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   77|      1|CREDIT_LINE("Zip", "Pierre-Alain Joye, Remi Collet");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  |  |   78|      1|CREDIT_LINE("Zlib", "Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti, Michael Wallner");
  |  |  ------------------
  |  |  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  |  |  ------------------
  ------------------
   87|      1|		php_info_print_table_end();
   88|      1|	}
   89|       |
   90|      1|	if (flag & PHP_CREDITS_DOCS) {
  ------------------
  |  |   40|      1|#define PHP_CREDITS_DOCS			(1<<4)
  ------------------
  |  Branch (90:6): [True: 1, False: 0]
  ------------------
   91|      1|		php_info_print_table_start();
   92|      1|		php_info_print_table_colspan_header(2, "PHP Documentation");
   93|      1|		CREDIT_LINE("Authors", "Mehdi Achour, Friedhelm Betz, Antony Dovgal, Nuno Lopes, Hannes Magnusson, Philip Olson, Georg Richter, Damien Seguy, Jakub Vrana, Adam Harvey");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   94|      1|		CREDIT_LINE("Editor", "Peter Cowburn");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   95|      1|		CREDIT_LINE("User Note Maintainers", "Daniel P. Brown, Thiago Henrique Pojda");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   96|      1|		CREDIT_LINE("Other Contributors", "Previously active authors, editors and other contributors are listed in the manual.");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
   97|      1|		php_info_print_table_end();
   98|      1|	}
   99|       |
  100|      1|	if (flag & PHP_CREDITS_QA) {
  ------------------
  |  |   42|      1|#define PHP_CREDITS_QA				(1<<6)
  ------------------
  |  Branch (100:6): [True: 1, False: 0]
  ------------------
  101|      1|		php_info_print_table_start();
  102|      1|		php_info_print_table_header(1, "PHP Quality Assurance Team");
  103|      1|		php_info_print_table_row(1, "Ilia Alshanetsky, Joerg Behrens, Antony Dovgal, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Pierre-Alain Joye, Dmitry Stogov, Felipe Pena, David Soria Parra, Stanislav Malyshev, Julien Pauli, Stephen Zarkos, Anatol Belski, Remi Collet, Ferenc Kovacs");
  104|      1|		php_info_print_table_end();
  105|      1|	}
  106|       |
  107|      1|	if (flag & PHP_CREDITS_WEB) {
  ------------------
  |  |   43|      1|#define PHP_CREDITS_WEB             (1<<7)
  ------------------
  |  Branch (107:6): [True: 1, False: 0]
  ------------------
  108|       |		/* Websites and infrastructure */
  109|       |
  110|      1|		php_info_print_table_start();
  111|      1|		php_info_print_table_colspan_header(2, "Websites and Infrastructure team");
  112|       |		/* www., wiki., windows., master., and others, I guess pecl. too? */
  113|      1|		CREDIT_LINE("PHP Websites Team", "Rasmus Lerdorf, Hannes Magnusson, Philip Olson, Lukas Kahwe Smith, Pierre-Alain Joye, Kalle Sommer Nielsen, Peter Cowburn, Adam Harvey, Ferenc Kovacs, Levi Morrison");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
  114|      1|		CREDIT_LINE("Event Maintainers", "Damien Seguy, Daniel P. Brown");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
  115|       |		/* Mirroring */
  116|      1|		CREDIT_LINE("Network Infrastructure", "Daniel P. Brown");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
  117|       |		/* Windows build boxes and such things */
  118|      1|		CREDIT_LINE("Windows Infrastructure", "Alex Schoenmaker");
  ------------------
  |  |   20|      1|#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
  ------------------
  119|      1|		php_info_print_table_end();
  120|      1|	}
  121|       |
  122|      1|	if (!sapi_module.phpinfo_as_text && flag & PHP_CREDITS_FULLPAGE) {
  ------------------
  |  |   41|      0|#define PHP_CREDITS_FULLPAGE		(1<<5)
  ------------------
  |  Branch (122:6): [True: 0, False: 1]
  |  Branch (122:38): [True: 0, False: 0]
  ------------------
  123|      0|		PUTS("</div></body></html>\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  124|      0|	}
  125|      1|}

zm_startup_crypt:
   49|      2|{
   50|      2|#if PHP_USE_PHP_CRYPT_R
   51|      2|	php_init_crypt_r();
   52|      2|#endif
   53|       |
   54|      2|	return SUCCESS;
   55|      2|}

zm_activate_dir:
   74|  33.5k|{
   75|  33.5k|	DIRG(default_dir) = NULL;
  ------------------
  |  |   44|  33.5k|#define DIRG(v) (dir_globals.v)
  ------------------
   76|  33.5k|	return SUCCESS;
   77|  33.5k|}
zm_startup_dir:
   80|      2|{
   81|      2|	dirsep_str[0] = DEFAULT_SLASH;
  ------------------
  |  |  105|      2|#define DEFAULT_SLASH '/'
  ------------------
   82|      2|	dirsep_str[1] = '\0';
   83|       |
   84|      2|	pathsep_str[0] = ZEND_PATHS_SEPARATOR;
  ------------------
  |  |   43|      2|# define ZEND_PATHS_SEPARATOR		':'
  ------------------
   85|      2|	pathsep_str[1] = '\0';
   86|       |
   87|      2|	register_dir_symbols(module_number);
   88|       |
   89|      2|	dir_class_entry_ptr = register_class_Directory();
   90|      2|	dir_class_entry_ptr->default_object_handlers = &dir_class_object_handlers;
   91|       |
   92|      2|	memcpy(&dir_class_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
   93|      2|	dir_class_object_handlers.get_constructor = dir_class_get_constructor;
   94|      2|	dir_class_object_handlers.clone_obj = NULL;
   95|      2|	dir_class_object_handlers.compare = zend_objects_not_comparable;
   96|       |
   97|       |#ifdef ZTS
   98|       |	ts_allocate_id(&dir_globals_id, sizeof(php_dir_globals), NULL, NULL);
   99|       |#endif
  100|       |
  101|      2|	return SUCCESS;
  102|      2|}
zif_dir:
  152|      4|{
  153|      4|	_php_do_opendir(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  ------------------
  |  |  587|      4|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  154|      4|}
zif_glob:
  424|      2|{
  425|      2|	size_t cwd_skip = 0;
  426|       |#if defined(ZTS) && !defined(PHP_GLOB_ALTDIRFUNC)
  427|       |	char cwd[MAXPATHLEN];
  428|       |	char work_pattern[MAXPATHLEN];
  429|       |#endif
  430|      2|	char *pattern = NULL;
  431|      2|	size_t pattern_len;
  432|      2|	zend_long flags = 0;
  433|      2|	php_glob_t globbuf;
  434|      2|	size_t n;
  435|      2|	int ret;
  436|      2|	bool basedir_limit = 0;
  437|      2|	zval tmp;
  438|       |
  439|      6|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  440|      8|		Z_PARAM_PATH(pattern, pattern_len)
  ------------------
  |  | 2042|      2|	Z_PARAM_PATH_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2034|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2035|      2|		if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2036|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2036:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2037|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2038|      0|			break; \
  |  |  |  | 2039|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (440:3): [True: 2, False: 0]
  |  Branch (440:3): [True: 0, False: 0]
  |  Branch (440:3): [True: 2, False: 0]
  |  Branch (440:3): [True: 0, False: 0]
  |  Branch (440:3): [True: 2, False: 0]
  |  Branch (440:3): [True: 0, False: 0]
  |  Branch (440:3): [True: 0, False: 2]
  |  Branch (440:3): [True: 2, False: 0]
  |  Branch (440:3): [True: 0, False: 0]
  |  Branch (440:3): [True: 0, False: 0]
  ------------------
  441|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  442|      4|		Z_PARAM_LONG(flags)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (442:3): [True: 2, False: 0]
  |  Branch (442:3): [True: 0, False: 0]
  |  Branch (442:3): [True: 0, False: 2]
  |  Branch (442:3): [True: 2, False: 0]
  |  Branch (442:3): [True: 2, False: 0]
  |  Branch (442:3): [True: 0, False: 0]
  |  Branch (442:3): [True: 2, False: 0]
  |  Branch (442:3): [True: 0, False: 0]
  |  Branch (442:3): [True: 0, False: 0]
  |  Branch (442:3): [True: 0, False: 0]
  ------------------
  443|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (443:2): [True: 0, False: 0]
  |  Branch (443:2): [True: 0, False: 0]
  |  Branch (443:2): [True: 0, False: 0]
  |  Branch (443:2): [True: 0, False: 0]
  ------------------
  444|       |
  445|      2|	if (pattern_len >= MAXPATHLEN) {
  ------------------
  |  Branch (445:6): [True: 0, False: 2]
  ------------------
  446|      0|		php_error_docref(NULL, E_WARNING, "Pattern exceeds the maximum allowed length of %d characters", MAXPATHLEN);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  447|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  448|      0|	}
  449|       |
  450|      2|	if ((PHP_GLOB_AVAILABLE_FLAGS & flags) != flags) {
  ------------------
  |  |  177|      2|#define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  152|      2|#define	PHP_GLOB_BRACE	0x0080	/* Expand braces ala csh. */
  |  |  ------------------
  |  |               #define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  141|      2|#define	PHP_GLOB_MARK	0x0008	/* Append / to matching directories. */
  |  |  ------------------
  |  |               #define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  143|      2|#define	PHP_GLOB_NOSORT	0x0020	/* Don't sort. */
  |  |  ------------------
  |  |               #define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  142|      2|#define	PHP_GLOB_NOCHECK	0x0010	/* Return pattern itself if nothing matches. */
  |  |  ------------------
  |  |               #define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  144|      2|#define	PHP_GLOB_NOESCAPE	0x1000	/* Disable backslash escaping. */
  |  |  ------------------
  |  |               #define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  140|      2|#define	PHP_GLOB_ERR	0x0004	/* Return on error. */
  |  |  ------------------
  |  |               #define PHP_GLOB_AVAILABLE_FLAGS (0 | PHP_GLOB_BRACE | PHP_GLOB_MARK | PHP_GLOB_NOSORT | PHP_GLOB_NOCHECK | PHP_GLOB_NOESCAPE | PHP_GLOB_ERR | PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  171|      2|#define PHP_GLOB_ONLYDIR (1<<30)
  |  |  ------------------
  ------------------
  |  Branch (450:6): [True: 0, False: 2]
  ------------------
  451|      0|		php_error_docref(NULL, E_WARNING, "At least one of the passed flags is invalid or not supported on this platform");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  452|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  453|      0|	}
  454|       |
  455|      2|	memset(&globbuf, 0, sizeof(globbuf));
  456|       |
  457|      2|	int passed_glob_flags = flags & PHP_GLOB_FLAGMASK;
  ------------------
  |  |  172|      2|#define PHP_GLOB_FLAGMASK (~PHP_GLOB_ONLYDIR)
  |  |  ------------------
  |  |  |  |  171|      2|#define PHP_GLOB_ONLYDIR (1<<30)
  |  |  ------------------
  ------------------
  458|       |
  459|       |#ifdef ZTS
  460|       |	if (!IS_ABSOLUTE_PATH(pattern, pattern_len)) {
  461|       |		/* System glob uses the current work directory which is not thread safe.
  462|       |		 * The first fix is to override the functions used to open/read/... paths
  463|       |		 * with the VCWD ones used in PHP.
  464|       |		 * If that functionality is unavailable for whatever reason, fall back
  465|       |		 * to prepending the current working directory to the passed path.
  466|       |		 * However, that comes with limitations regarding meta characters
  467|       |		 * that is not solvable in general (GH-13204). */
  468|       |# ifdef PHP_GLOB_ALTDIRFUNC
  469|       |		globbuf.gl_opendir = php_glob_opendir_wrapper;
  470|       |		globbuf.gl_readdir = (struct dirent *(*)(void *)) readdir;
  471|       |		globbuf.gl_closedir = php_glob_closedir_wrapper;
  472|       |		globbuf.gl_lstat = php_glob_lstat_wrapper;
  473|       |		globbuf.gl_stat = php_glob_stat_wrapper;
  474|       |		passed_glob_flags |= PHP_GLOB_ALTDIRFUNC;
  475|       |# else
  476|       |		char *result = VCWD_GETCWD(cwd, MAXPATHLEN);
  477|       |		if (!result) {
  478|       |			cwd[0] = '\0';
  479|       |		}
  480|       |#  ifdef PHP_WIN32
  481|       |		if (IS_SLASH(*pattern)) {
  482|       |			cwd[2] = '\0';
  483|       |		}
  484|       |#  endif
  485|       |		cwd_skip = strlen(cwd)+1;
  486|       |
  487|       |		snprintf(work_pattern, MAXPATHLEN, "%s%c%s", cwd, DEFAULT_SLASH, pattern);
  488|       |		pattern = work_pattern;
  489|       |# endif
  490|       |	}
  491|       |#endif
  492|       |
  493|      2|	if (0 != (ret = php_glob(pattern, passed_glob_flags, NULL, &globbuf))) {
  ------------------
  |  Branch (493:6): [True: 2, False: 0]
  ------------------
  494|      2|#ifdef PHP_GLOB_NOMATCH
  495|      2|		if (PHP_GLOB_NOMATCH == ret) {
  ------------------
  |  |  148|      2|#define	PHP_GLOB_NOMATCH	(-3)	/* No match and PHP_GLOB_NOCHECK not set. */
  ------------------
  |  Branch (495:7): [True: 2, False: 0]
  ------------------
  496|       |			/* Some glob implementation simply return no data if no matches
  497|       |			   were found, others return the PHP_GLOB_NOMATCH error code.
  498|       |			   We don't want to treat PHP_GLOB_NOMATCH as an error condition
  499|       |			   so that PHP glob() behaves the same on both types of
  500|       |			   implementations and so that 'foreach (glob() as ...'
  501|       |			   can be used for simple glob() calls without further error
  502|       |			   checking.
  503|       |			*/
  504|      2|			goto no_results;
  505|      2|		}
  506|      0|#endif
  507|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  508|      0|	}
  509|       |
  510|       |	/* now catch the FreeBSD style of "no matches" */
  511|      0|	if (!globbuf.gl_pathc || !globbuf.gl_pathv) {
  ------------------
  |  Branch (511:6): [True: 0, False: 0]
  |  Branch (511:27): [True: 0, False: 0]
  ------------------
  512|      0|#ifdef PHP_GLOB_NOMATCH
  513|      2|no_results:
  514|      2|#endif
  515|      2|		RETURN_EMPTY_ARRAY();
  ------------------
  |  | 1062|      2|#define RETURN_EMPTY_ARRAY()			do { RETVAL_EMPTY_ARRAY(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1036|      2|#define RETVAL_EMPTY_ARRAY()			ZVAL_EMPTY_ARRAY(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      2|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |  |  |  |  |   90|      2|		zval *__z = (z);								\
  |  |  |  |  |  |   91|      2|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   92|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   93|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (93:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1062:76): [Folded, False: 0]
  |  |  ------------------
  ------------------
  516|      2|	}
  517|       |
  518|      0|	array_init(return_value);
  519|      0|	for (n = 0; n < (size_t)globbuf.gl_pathc; n++) {
  ------------------
  |  Branch (519:14): [True: 0, False: 0]
  ------------------
  520|      0|		if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (520:27): [True: 0, False: 0]
  ------------------
  521|      0|			if (php_check_open_basedir_ex(globbuf.gl_pathv[n], 0)) {
  ------------------
  |  Branch (521:8): [True: 0, False: 0]
  ------------------
  522|      0|				basedir_limit = 1;
  523|      0|				continue;
  524|      0|			}
  525|      0|		}
  526|       |		/* we need to do this every time since PHP_GLOB_ONLYDIR does not guarantee that
  527|       |		 * all directories will be filtered. GNU libc documentation states the
  528|       |		 * following:
  529|       |		 * If the information about the type of the file is easily available
  530|       |		 * non-directories will be rejected but no extra work will be done to
  531|       |		 * determine the information for each file. I.e., the caller must still be
  532|       |		 * able to filter directories out.
  533|       |		 */
  534|      0|		if (flags & PHP_GLOB_ONLYDIR) {
  ------------------
  |  |  171|      0|#define PHP_GLOB_ONLYDIR (1<<30)
  ------------------
  |  Branch (534:7): [True: 0, False: 0]
  ------------------
  535|      0|			zend_stat_t s = {0};
  536|       |
  537|      0|			if (0 != VCWD_STAT(globbuf.gl_pathv[n], &s)) {
  ------------------
  |  |  334|      0|#define VCWD_STAT(path, buff) php_sys_stat(path, buff)
  |  |  ------------------
  |  |  |  |  155|      0|# define php_sys_stat stat
  |  |  ------------------
  ------------------
  |  Branch (537:8): [True: 0, False: 0]
  ------------------
  538|      0|				continue;
  539|      0|			}
  540|       |
  541|      0|			if (S_IFDIR != (s.st_mode & S_IFMT)) {
  ------------------
  |  Branch (541:8): [True: 0, False: 0]
  ------------------
  542|      0|				continue;
  543|      0|			}
  544|      0|		}
  545|      0|		ZVAL_STRING(&tmp, globbuf.gl_pathv[n]+cwd_skip);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  546|      0|		zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  547|      0|	}
  548|       |
  549|      0|	php_globfree(&globbuf);
  550|       |
  551|      0|	if (basedir_limit && !zend_hash_num_elements(Z_ARRVAL_P(return_value))) {
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (551:6): [True: 0, False: 0]
  |  Branch (551:23): [True: 0, False: 0]
  ------------------
  552|      0|		zend_array_destroy(Z_ARR_P(return_value));
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  553|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  554|      0|	}
  555|      0|}
dir.c:dir_class_get_constructor:
   55|      2|{
   56|      2|	zend_throw_error(NULL, "Cannot directly construct Directory, use dir() instead");
   57|       |	return NULL;
   58|      2|}
dir.c:_php_do_opendir:
  107|      4|{
  108|      4|	char *dirname;
  109|      4|	size_t dir_len;
  110|      4|	zval *zcontext = NULL;
  111|      4|	php_stream_context *context = NULL;
  112|      4|	php_stream *dirp;
  113|       |
  114|     12|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|     16|		Z_PARAM_PATH(dirname, dir_len)
  ------------------
  |  | 2042|      4|	Z_PARAM_PATH_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2034|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2035|      4|		if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2036|      1|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2036:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2037|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2038|      1|			break; \
  |  |  |  | 2039|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (115:3): [True: 4, False: 0]
  |  Branch (115:3): [True: 0, False: 0]
  |  Branch (115:3): [True: 4, False: 0]
  |  Branch (115:3): [True: 0, False: 0]
  |  Branch (115:3): [True: 4, False: 0]
  |  Branch (115:3): [True: 0, False: 0]
  |  Branch (115:3): [True: 0, False: 4]
  |  Branch (115:3): [True: 4, False: 0]
  |  Branch (115:3): [True: 0, False: 0]
  |  Branch (115:3): [True: 0, False: 0]
  ------------------
  116|      3|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      3|	_optional = 1;
  ------------------
  117|      6|		Z_PARAM_RESOURCE_OR_NULL(zcontext)
  ------------------
  |  | 2075|      3|	Z_PARAM_RESOURCE_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2064|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      3|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      3|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2065|      0|		if (UNEXPECTED(!zend_parse_arg_resource(_arg, &dest, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2066|      0|			_expected_type = check_null ? Z_EXPECTED_RESOURCE_OR_NULL : Z_EXPECTED_RESOURCE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2066:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2067|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2068|      0|			break; \
  |  |  |  | 2069|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (117:3): [True: 3, False: 0]
  |  Branch (117:3): [True: 0, False: 0]
  |  Branch (117:3): [True: 0, False: 3]
  |  Branch (117:3): [True: 3, False: 0]
  |  Branch (117:3): [True: 3, False: 0]
  |  Branch (117:3): [True: 0, False: 0]
  |  Branch (117:3): [True: 3, False: 0]
  |  Branch (117:3): [True: 0, False: 0]
  |  Branch (117:3): [True: 0, False: 0]
  |  Branch (117:3): [True: 0, False: 0]
  ------------------
  118|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (118:2): [True: 0, False: 0]
  |  Branch (118:2): [True: 0, False: 0]
  |  Branch (118:2): [True: 0, False: 0]
  |  Branch (118:2): [True: 0, False: 0]
  ------------------
  119|       |
  120|      3|	context = php_stream_context_from_zval(zcontext, 0);
  ------------------
  |  |   34|      3|#define php_stream_context_from_zval(zcontext, nocontext) ( \
  |  |   35|      3|		(zcontext) ? zend_fetch_resource_ex(zcontext, "Stream-Context", php_le_stream_context()) : \
  |  |  ------------------
  |  |  |  Branch (35:3): [True: 0, False: 3]
  |  |  ------------------
  |  |   36|      3|		php_stream_context_get_default(nocontext))
  |  |  ------------------
  |  |  |  |   28|      3|	(without_context) ? NULL : FG(default_context) ? FG(default_context) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |  116|      3|#define FG(v) (file_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (116:15): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	(without_context) ? NULL : FG(default_context) ? FG(default_context) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |  116|      0|#define FG(v) (file_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:2): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  |   29|      3|		(FG(default_context) = php_stream_context_alloc())
  |  |  |  |  ------------------
  |  |  |  |  |  |  116|      3|#define FG(v) (file_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|       |
  122|      3|	dirp = php_stream_opendir(dirname, REPORT_ERRORS, context);
  ------------------
  |  |  423|      3|#define php_stream_opendir(path, options, context)	_php_stream_opendir((path), (options), (context) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      3|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      3|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|       |
  124|      3|	if (dirp == NULL) {
  ------------------
  |  Branch (124:6): [True: 3, False: 0]
  ------------------
  125|      3|		RETURN_FALSE;
  ------------------
  |  | 1069|      3|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      3|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      3|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      3|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      3|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  126|      3|	}
  127|       |
  128|      0|	dirp->flags |= PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      0|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  129|       |
  130|      0|	php_set_default_dir(dirp->res);
  131|       |
  132|      0|	if (createobject) {
  ------------------
  |  Branch (132:6): [True: 0, False: 0]
  ------------------
  133|      0|		object_init_ex(return_value, dir_class_entry_ptr);
  134|      0|		ZVAL_STRINGL(Z_DIRECTORY_PATH_P(return_value), dirname, dir_len);
  ------------------
  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  135|      0|		ZVAL_RES(Z_DIRECTORY_HANDLE_P(return_value), dirp->res);
  ------------------
  |  | 1154|      0|#define ZVAL_RES(z, r) do {						\
  |  | 1155|      0|		zval *__z = (z);						\
  |  | 1156|      0|		Z_RES_P(__z) = (r);						\
  |  |  ------------------
  |  |  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1157|      0|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  831|      0|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1158|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1158:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  136|      0|		php_stream_auto_cleanup(dirp); /* so we don't get warnings under debug */
  ------------------
  |  |  270|      0|#define php_stream_auto_cleanup(stream)	{ (stream)->__exposed = 1; }
  ------------------
  137|      0|	} else {
  138|      0|		php_stream_to_zval(dirp, return_value);
  ------------------
  |  |  274|      0|#define php_stream_to_zval(stream, zval)	{ ZVAL_RES(zval, (stream)->res); (stream)->__exposed = 1; }
  |  |  ------------------
  |  |  |  | 1154|      0|#define ZVAL_RES(z, r) do {						\
  |  |  |  | 1155|      0|		zval *__z = (z);						\
  |  |  |  | 1156|      0|		Z_RES_P(__z) = (r);						\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1157|      0|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  831|      0|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      0|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1158|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1158:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|      0|	}
  140|      0|}

dir.c:register_dir_symbols:
   24|      2|{
   25|      2|	REGISTER_STRING_CONSTANT("DIRECTORY_SEPARATOR", dirsep_str, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   26|      2|	REGISTER_STRING_CONSTANT("PATH_SEPARATOR", pathsep_str, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   27|      2|#if (defined(PHP_GLOB_BRACE) && PHP_GLOB_BRACE != 0)
   28|      2|	REGISTER_LONG_CONSTANT("GLOB_BRACE", PHP_GLOB_BRACE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   29|      2|#endif
   30|      2|#if (defined(PHP_GLOB_ERR) && PHP_GLOB_ERR != 0)
   31|      2|	REGISTER_LONG_CONSTANT("GLOB_ERR", PHP_GLOB_ERR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   32|      2|#endif
   33|      2|#if (defined(PHP_GLOB_MARK) && PHP_GLOB_MARK != 0)
   34|      2|	REGISTER_LONG_CONSTANT("GLOB_MARK", PHP_GLOB_MARK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   35|      2|#endif
   36|      2|#if (defined(PHP_GLOB_NOCHECK) && PHP_GLOB_NOCHECK != 0)
   37|      2|	REGISTER_LONG_CONSTANT("GLOB_NOCHECK", PHP_GLOB_NOCHECK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   38|      2|#endif
   39|      2|#if (defined(PHP_GLOB_NOESCAPE) && PHP_GLOB_NOESCAPE != 0)
   40|      2|	REGISTER_LONG_CONSTANT("GLOB_NOESCAPE", PHP_GLOB_NOESCAPE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   41|      2|#endif
   42|      2|#if (defined(PHP_GLOB_NOSORT) && PHP_GLOB_NOSORT != 0)
   43|      2|	REGISTER_LONG_CONSTANT("GLOB_NOSORT", PHP_GLOB_NOSORT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   44|      2|#endif
   45|      2|#if (defined(PHP_GLOB_ONLYDIR) && PHP_GLOB_ONLYDIR != 0)
   46|      2|	REGISTER_LONG_CONSTANT("GLOB_ONLYDIR", PHP_GLOB_ONLYDIR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   47|      2|#endif
   48|      2|#if defined(PHP_GLOB_AVAILABLE_FLAGS)
   49|      2|	REGISTER_LONG_CONSTANT("GLOB_AVAILABLE_FLAGS", PHP_GLOB_AVAILABLE_FLAGS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   50|      2|#endif
   51|      2|	REGISTER_LONG_CONSTANT("SCANDIR_SORT_ASCENDING", PHP_SCANDIR_SORT_ASCENDING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   52|      2|	REGISTER_LONG_CONSTANT("SCANDIR_SORT_DESCENDING", PHP_SCANDIR_SORT_DESCENDING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   53|      2|	REGISTER_LONG_CONSTANT("SCANDIR_SORT_NONE", PHP_SCANDIR_SORT_NONE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   54|      2|}
dir.c:register_class_Directory:
   57|      2|{
   58|      2|	zend_class_entry ce, *class_entry;
   59|       |
   60|      2|	INIT_CLASS_ENTRY(ce, "Directory", class_Directory_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   61|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
  ------------------
  |  |  341|      2|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
   62|       |
   63|      2|	zval property_path_default_value;
   64|      2|	ZVAL_UNDEF(&property_path_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   65|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PATH), &property_path_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PATH), &property_path_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_PATH), &property_path_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
   66|       |
   67|      2|	zval property_handle_default_value;
   68|      2|	ZVAL_UNDEF(&property_handle_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   69|      2|	zend_string *property_handle_name = zend_string_init("handle", sizeof("handle") - 1, true);
   70|      2|	zend_declare_typed_property(class_entry, property_handle_name, &property_handle_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_handle_name, &property_handle_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_handle_name, &property_handle_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
   71|      2|	zend_string_release_ex(property_handle_name, true);
   72|       |
   73|      2|	return class_entry;
   74|      2|}

zm_info_dl:
  291|      1|{
  292|      1|#if defined(HAVE_LIBDL)
  293|      1|#define PHP_DL_SUPPORT_STATUS "enabled"
  294|       |#else
  295|       |#define PHP_DL_SUPPORT_STATUS "unavailable"
  296|       |#endif
  297|      1|	php_info_print_table_row(2, "Dynamic Library Support", PHP_DL_SUPPORT_STATUS);
  ------------------
  |  |  293|      1|#define PHP_DL_SUPPORT_STATUS "enabled"
  ------------------
  298|      1|}

zm_startup_exec:
   55|      2|{
   56|      2|#ifdef _SC_ARG_MAX
   57|      2|	cmd_max_len = sysconf(_SC_ARG_MAX);
   58|      2|	if ((size_t)-1 == cmd_max_len) {
  ------------------
  |  Branch (58:6): [True: 0, False: 2]
  ------------------
   59|      0|#ifdef _POSIX_ARG_MAX
   60|      0|		cmd_max_len = _POSIX_ARG_MAX;
   61|       |#else
   62|       |		cmd_max_len = 4096;
   63|       |#endif
   64|      0|	}
   65|       |#elif defined(ARG_MAX)
   66|       |	cmd_max_len = ARG_MAX;
   67|       |#elif defined(PHP_WIN32)
   68|       |	/* Executed commands will run through cmd.exe. As long as it's the case,
   69|       |		it's just the constant limit.*/
   70|       |	cmd_max_len = 8192;
   71|       |#else
   72|       |	/* This is just an arbitrary value for the fallback case. */
   73|       |	cmd_max_len = 4096;
   74|       |#endif
   75|       |
   76|      2|	return SUCCESS;
   77|      2|}
php_escape_shell_arg:
  379|      1|{
  380|      1|	size_t x, y = 0;
  381|      1|	zend_string *cmd;
  382|       |
  383|      1|	ZEND_ASSERT(!zend_str_has_nul_byte(unescaped_arg) && "Must be a binary safe string");
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (383:2): [True: 0, False: 1]
  |  Branch (383:2): [True: 0, False: 0]
  |  Branch (383:2): [True: 1, False: 0]
  |  Branch (383:2): [True: 1, False: 0]
  ------------------
  384|      1|	size_t l = ZSTR_LEN(unescaped_arg);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  385|      1|	const char *str = ZSTR_VAL(unescaped_arg);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  386|       |
  387|      1|	uint64_t estimate = (4 * (uint64_t)l) + 3;
  388|       |
  389|       |	/* max command line length - two single quotes - \0 byte length */
  390|      1|	if (l > cmd_max_len - 2 - 1) {
  ------------------
  |  Branch (390:6): [True: 0, False: 1]
  ------------------
  391|      0|		zend_value_error("Argument exceeds the allowed length of %zu bytes", cmd_max_len);
  392|      0|		return ZSTR_EMPTY_ALLOC();
  393|      0|	}
  394|       |
  395|      1|	cmd = zend_string_safe_alloc(4, l, 2, 0); /* worst case */
  396|       |
  397|       |#ifdef PHP_WIN32
  398|       |	ZSTR_VAL(cmd)[y++] = '"';
  399|       |#else
  400|      1|	ZSTR_VAL(cmd)[y++] = '\'';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  401|      1|#endif
  402|       |
  403|     17|	for (x = 0; x < l; x++) {
  ------------------
  |  Branch (403:14): [True: 16, False: 1]
  ------------------
  404|     16|		int mb_len = php_mblen(str + x, (l - x));
  ------------------
  |  |   61|     16|# define php_mblen(ptr, len) ((int) mbrlen(ptr, len, &BG(mblen_state)))
  |  |  ------------------
  |  |  |  |  113|     16|#define BG(v) (basic_globals.v)
  |  |  ------------------
  ------------------
  405|       |
  406|       |		/* skip non-valid multibyte characters */
  407|     16|		if (mb_len < 0) {
  ------------------
  |  Branch (407:7): [True: 0, False: 16]
  ------------------
  408|      0|			continue;
  409|     16|		} else if (mb_len > 1) {
  ------------------
  |  Branch (409:14): [True: 0, False: 16]
  ------------------
  410|      0|			memcpy(ZSTR_VAL(cmd) + y, str + x, mb_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  411|      0|			y += mb_len;
  412|      0|			x += mb_len - 1;
  413|      0|			continue;
  414|      0|		}
  415|       |
  416|     16|		switch (str[x]) {
  417|       |#ifdef PHP_WIN32
  418|       |		case '"':
  419|       |		case '%':
  420|       |		case '!':
  421|       |			ZSTR_VAL(cmd)[y++] = ' ';
  422|       |			break;
  423|       |#else
  424|      0|		case '\'':
  ------------------
  |  Branch (424:3): [True: 0, False: 16]
  ------------------
  425|      0|			ZSTR_VAL(cmd)[y++] = '\'';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  426|      0|			ZSTR_VAL(cmd)[y++] = '\\';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  427|      0|			ZSTR_VAL(cmd)[y++] = '\'';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  428|      0|#endif
  429|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  430|     16|		default:
  ------------------
  |  Branch (430:3): [True: 16, False: 0]
  ------------------
  431|     16|			ZSTR_VAL(cmd)[y++] = str[x];
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  432|     16|		}
  433|     16|	}
  434|       |#ifdef PHP_WIN32
  435|       |	if (y > 0 && '\\' == ZSTR_VAL(cmd)[y - 1]) {
  436|       |		int k = 0, n = y - 1;
  437|       |		for (; n >= 0 && '\\' == ZSTR_VAL(cmd)[n]; n--, k++);
  438|       |		if (k % 2) {
  439|       |			ZSTR_VAL(cmd)[y++] = '\\';
  440|       |		}
  441|       |	}
  442|       |
  443|       |	ZSTR_VAL(cmd)[y++] = '"';
  444|       |#else
  445|      1|	ZSTR_VAL(cmd)[y++] = '\'';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  446|      1|#endif
  447|      1|	ZSTR_VAL(cmd)[y] = '\0';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  448|       |
  449|      1|	if (y > cmd_max_len + 1) {
  ------------------
  |  Branch (449:6): [True: 0, False: 1]
  ------------------
  450|      0|		zend_value_error("Escaped argument exceeds the allowed length of %zu bytes", cmd_max_len);
  451|      0|		zend_string_release_ex(cmd, 0);
  452|      0|		return ZSTR_EMPTY_ALLOC();
  453|      0|	}
  454|       |
  455|      1|	if ((estimate - y) > 4096) {
  ------------------
  |  Branch (455:6): [True: 0, False: 1]
  ------------------
  456|       |		/* realloc if the estimate was way overill
  457|       |		 * Arbitrary cutoff point of 4096 */
  458|      0|		cmd = zend_string_truncate(cmd, y, 0);
  459|      0|	}
  460|      1|	ZSTR_LEN(cmd) = y;
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  461|      1|	return cmd;
  462|      1|}
zif_escapeshellarg:
  484|      1|{
  485|      1|	zend_string *argument;
  486|       |
  487|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  488|      4|		Z_PARAM_PATH_STR(argument)
  ------------------
  |  | 2057|      1|	Z_PARAM_PATH_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2049|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2050|      1|		if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2051|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2051:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2052|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2053|      0|			break; \
  |  |  |  | 2054|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (488:3): [True: 1, False: 0]
  |  Branch (488:3): [True: 0, False: 0]
  |  Branch (488:3): [True: 1, False: 0]
  |  Branch (488:3): [True: 0, False: 0]
  |  Branch (488:3): [True: 1, False: 0]
  |  Branch (488:3): [True: 0, False: 0]
  |  Branch (488:3): [True: 0, False: 1]
  |  Branch (488:3): [True: 1, False: 0]
  |  Branch (488:3): [True: 0, False: 0]
  |  Branch (488:3): [True: 0, False: 0]
  ------------------
  489|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (489:2): [True: 1, False: 0]
  |  Branch (489:2): [True: 0, False: 0]
  |  Branch (489:2): [True: 1, False: 0]
  |  Branch (489:2): [True: 0, False: 0]
  ------------------
  490|       |
  491|      1|	RETVAL_STR(php_escape_shell_arg(argument));
  ------------------
  |  | 1024|      1|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      1|		zval *__z = (z);						\
  |  |  |  | 1090|      1|		zend_string *__s = (s);					\
  |  |  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      1|		/* interned strings support */			\
  |  |  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  492|      1|}

php_le_stream_context:
  110|      4|{
  111|      4|	return le_stream_context;
  112|      4|}
zm_startup_file:
  157|      2|{
  158|      2|	le_stream_context = zend_register_list_destructors_ex(file_context_dtor, NULL, "stream-context", module_number);
  159|       |
  160|       |#ifdef ZTS
  161|       |	ts_allocate_id(&file_globals_id, sizeof(php_file_globals), (ts_allocate_ctor) file_globals_ctor, (ts_allocate_dtor) file_globals_dtor);
  162|       |#else
  163|      2|	file_globals_ctor(&file_globals);
  164|      2|#endif
  165|       |
  166|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
  167|       |
  168|      2|	register_file_symbols(module_number);
  169|       |
  170|      2|	return SUCCESS;
  171|      2|}
zif_file:
  593|      4|{
  594|      4|	char *filename;
  595|      4|	size_t filename_len;
  596|      4|	char *p, *s, *e;
  597|      4|	int i = 0;
  598|      4|	char eol_marker = '\n';
  599|      4|	zend_long flags = 0;
  600|      4|	bool use_include_path;
  601|      4|	bool include_new_line;
  602|      4|	bool skip_blank_lines;
  603|      4|	php_stream *stream;
  604|      4|	zval *zcontext = NULL;
  605|      4|	php_stream_context *context = NULL;
  606|      4|	zend_string *target_buf;
  607|       |
  608|       |	/* Parse arguments */
  609|     12|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  610|     16|		Z_PARAM_PATH(filename, filename_len)
  ------------------
  |  | 2042|      4|	Z_PARAM_PATH_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2034|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2035|      4|		if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2036|      0|			_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2036:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2037|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2038|      0|			break; \
  |  |  |  | 2039|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (610:3): [True: 4, False: 0]
  |  Branch (610:3): [True: 0, False: 0]
  |  Branch (610:3): [True: 4, False: 0]
  |  Branch (610:3): [True: 0, False: 0]
  |  Branch (610:3): [True: 4, False: 0]
  |  Branch (610:3): [True: 0, False: 0]
  |  Branch (610:3): [True: 0, False: 4]
  |  Branch (610:3): [True: 4, False: 0]
  |  Branch (610:3): [True: 0, False: 0]
  |  Branch (610:3): [True: 0, False: 0]
  ------------------
  611|      4|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      4|	_optional = 1;
  ------------------
  612|     14|		Z_PARAM_LONG(flags)
  ------------------
  |  | 1905|      4|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      4|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      4|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      3|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      1|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1900|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      1|			break; \
  |  |  |  | 1902|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (612:3): [True: 4, False: 0]
  |  Branch (612:3): [True: 0, False: 0]
  |  Branch (612:3): [True: 0, False: 4]
  |  Branch (612:3): [True: 4, False: 0]
  |  Branch (612:3): [True: 4, False: 0]
  |  Branch (612:3): [True: 0, False: 0]
  |  Branch (612:3): [True: 4, False: 0]
  |  Branch (612:3): [True: 0, False: 0]
  |  Branch (612:3): [True: 0, False: 0]
  |  Branch (612:3): [True: 0, False: 0]
  ------------------
  613|      8|		Z_PARAM_RESOURCE_OR_NULL(zcontext)
  ------------------
  |  | 2075|      3|	Z_PARAM_RESOURCE_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2064|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2065|      1|		if (UNEXPECTED(!zend_parse_arg_resource(_arg, &dest, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2066|      1|			_expected_type = check_null ? Z_EXPECTED_RESOURCE_OR_NULL : Z_EXPECTED_RESOURCE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2066:21): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2067|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2068|      1|			break; \
  |  |  |  | 2069|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (613:3): [True: 2, False: 0]
  |  Branch (613:3): [True: 0, False: 0]
  |  Branch (613:3): [True: 0, False: 2]
  |  Branch (613:3): [True: 2, False: 0]
  |  Branch (613:3): [True: 2, False: 0]
  |  Branch (613:3): [True: 0, False: 0]
  |  Branch (613:3): [True: 2, False: 0]
  |  Branch (613:3): [True: 0, False: 0]
  |  Branch (613:3): [True: 0, False: 0]
  |  Branch (613:3): [True: 0, False: 0]
  ------------------
  614|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (614:2): [True: 0, False: 0]
  |  Branch (614:2): [True: 0, False: 0]
  |  Branch (614:2): [True: 0, False: 0]
  |  Branch (614:2): [True: 0, False: 0]
  ------------------
  615|       |
  616|      2|	if ((flags & ~(PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) != 0) {
  ------------------
  |  |   55|      2|#define PHP_FILE_USE_INCLUDE_PATH (1 << 0)
  ------------------
              	if ((flags & ~(PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) != 0) {
  ------------------
  |  |   56|      2|#define PHP_FILE_IGNORE_NEW_LINES (1 << 1)
  ------------------
              	if ((flags & ~(PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) != 0) {
  ------------------
  |  |   57|      2|#define PHP_FILE_SKIP_EMPTY_LINES (1 << 2)
  ------------------
              	if ((flags & ~(PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) != 0) {
  ------------------
  |  |   59|      2|#define PHP_FILE_NO_DEFAULT_CONTEXT (1 << 4)
  ------------------
  |  Branch (616:6): [True: 1, False: 1]
  ------------------
  617|      1|		zend_argument_value_error(2, "must be a valid flag value");
  618|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (618:3): [True: 0, False: 1]
  |  Branch (618:3): [True: 1, False: 0]
  ------------------
  619|      1|	}
  620|       |
  621|      1|	use_include_path = flags & PHP_FILE_USE_INCLUDE_PATH;
  ------------------
  |  |   55|      1|#define PHP_FILE_USE_INCLUDE_PATH (1 << 0)
  ------------------
  622|      1|	include_new_line = !(flags & PHP_FILE_IGNORE_NEW_LINES);
  ------------------
  |  |   56|      1|#define PHP_FILE_IGNORE_NEW_LINES (1 << 1)
  ------------------
  623|      1|	skip_blank_lines = flags & PHP_FILE_SKIP_EMPTY_LINES;
  ------------------
  |  |   57|      1|#define PHP_FILE_SKIP_EMPTY_LINES (1 << 2)
  ------------------
  624|       |
  625|      1|	php_stream_error_operation_begin();
  626|      1|	context = php_stream_context_from_zval(zcontext, flags & PHP_FILE_NO_DEFAULT_CONTEXT);
  ------------------
  |  |   34|      1|#define php_stream_context_from_zval(zcontext, nocontext) ( \
  |  |   35|      1|		(zcontext) ? zend_fetch_resource_ex(zcontext, "Stream-Context", php_le_stream_context()) : \
  |  |  ------------------
  |  |  |  Branch (35:3): [True: 0, False: 1]
  |  |  ------------------
  |  |   36|      1|		php_stream_context_get_default(nocontext))
  |  |  ------------------
  |  |  |  |   28|      1|	(without_context) ? NULL : FG(default_context) ? FG(default_context) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |  116|      1|#define FG(v) (file_globals.v)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (116:15): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	(without_context) ? NULL : FG(default_context) ? FG(default_context) : \
  |  |  |  |  ------------------
  |  |  |  |  |  |  116|      0|#define FG(v) (file_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (28:2): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   29|      1|		(FG(default_context) = php_stream_context_alloc())
  |  |  |  |  ------------------
  |  |  |  |  |  |  116|      1|#define FG(v) (file_globals.v)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  627|       |
  628|      1|	stream = php_stream_open_wrapper_ex(filename, "rb", (use_include_path ? USE_PATH : 0) | REPORT_ERRORS, NULL, context);
  ------------------
  |  |  645|      2|#define php_stream_open_wrapper_ex(path, mode, options, opened, context)	_php_stream_open_wrapper_ex((path), (mode), (options), (opened), (context) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      1|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      1|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (645:119): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  629|      1|	if (!stream) {
  ------------------
  |  Branch (629:6): [True: 0, False: 1]
  ------------------
  630|      0|		php_stream_error_operation_end(context);
  631|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  632|      0|	}
  633|       |
  634|       |	/* Initialize return array */
  635|      1|	array_init(return_value);
  636|       |
  637|      1|	if ((target_buf = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0)) != NULL) {
  ------------------
  |  |  535|      1|#define php_stream_copy_to_mem(src, maxlen, persistent) _php_stream_copy_to_mem((src), (maxlen), (persistent) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      1|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      1|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (637:6): [True: 0, False: 1]
  ------------------
  638|      0|		s = ZSTR_VAL(target_buf);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  639|      0|		e = ZSTR_VAL(target_buf) + ZSTR_LEN(target_buf);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		e = ZSTR_VAL(target_buf) + ZSTR_LEN(target_buf);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  640|       |
  641|      0|		if (!(p = (char*)php_stream_locate_eol(stream, target_buf))) {
  ------------------
  |  Branch (641:7): [True: 0, False: 0]
  ------------------
  642|      0|			p = e;
  643|      0|			goto parse_eol;
  644|      0|		}
  645|       |
  646|      0|		if (stream->flags & PHP_STREAM_FLAG_EOL_MAC) {
  ------------------
  |  |  169|      0|#define PHP_STREAM_FLAG_EOL_MAC						0x8
  ------------------
  |  Branch (646:7): [True: 0, False: 0]
  ------------------
  647|      0|			eol_marker = '\r';
  648|      0|		}
  649|       |
  650|       |		/* for performance reasons the code is duplicated, so that the if (include_new_line)
  651|       |		 * will not need to be done for every single line in the file. */
  652|      0|		if (include_new_line) {
  ------------------
  |  Branch (652:7): [True: 0, False: 0]
  ------------------
  653|      0|			do {
  654|      0|				p++;
  655|      0|parse_eol:
  656|      0|				add_index_stringl(return_value, i++, s, p-s);
  657|      0|				s = p;
  658|      0|			} while ((p = memchr(p, eol_marker, (e-p))));
  ------------------
  |  Branch (658:13): [True: 0, False: 0]
  ------------------
  659|      0|		} else {
  660|      0|			do {
  661|      0|				int windows_eol = 0;
  662|      0|				if (p != ZSTR_VAL(target_buf) && eol_marker == '\n' && *(p - 1) == '\r') {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (662:9): [True: 0, False: 0]
  |  Branch (662:38): [True: 0, False: 0]
  |  Branch (662:60): [True: 0, False: 0]
  ------------------
  663|      0|					windows_eol++;
  664|      0|				}
  665|      0|				if (skip_blank_lines && !(p-s-windows_eol)) {
  ------------------
  |  Branch (665:9): [True: 0, False: 0]
  |  Branch (665:29): [True: 0, False: 0]
  ------------------
  666|      0|					s = ++p;
  667|      0|					continue;
  668|      0|				}
  669|      0|				add_index_stringl(return_value, i++, s, p-s-windows_eol);
  670|      0|				s = ++p;
  671|      0|			} while ((p = memchr(p, eol_marker, (e-p))));
  ------------------
  |  Branch (671:13): [True: 0, False: 0]
  ------------------
  672|      0|		}
  673|       |
  674|       |		/* handle any leftovers of files without new lines */
  675|      0|		if (s != e) {
  ------------------
  |  Branch (675:7): [True: 0, False: 0]
  ------------------
  676|      0|			p = e;
  677|      0|			goto parse_eol;
  678|      0|		}
  679|       |
  680|      0|		zend_string_efree(target_buf);
  681|      0|	}
  682|       |
  683|      1|	php_stream_close(stream);
  ------------------
  |  |  357|      1|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      1|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      1|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      1|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  684|      1|	php_stream_error_operation_end(context);
  685|      1|}
zif_rewind:
 1062|      1|{
 1063|      1|	int ret;
 1064|      1|	php_stream *stream;
 1065|       |
 1066|      2|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1067|      2|		PHP_Z_PARAM_STREAM(stream)
  ------------------
  |  |  332|      0|#define PHP_Z_PARAM_STREAM(dest) PHP_Z_PARAM_STREAM_EX(dest, false)
  |  |  ------------------
  |  |  |  |  323|      0|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  |  324|      0|	if (UNEXPECTED(!php_stream_zend_parse_arg_into_stream(_arg, &destination_stream_ptr, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  325|      0|		_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  |  326|      0|		if (!EG(exception)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (326:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  327|      0|			_expected_type = check_null ? Z_EXPECTED_RESOURCE_OR_NULL : Z_EXPECTED_RESOURCE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (327:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  328|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  |  329|      0|		} \
  |  |  |  |  330|      0|		break; \
  |  |  |  |  331|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  |  Branch (1067:3): [True: 0, False: 0]
  ------------------
 1068|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1068:2): [True: 0, False: 0]
  |  Branch (1068:2): [True: 0, False: 0]
  |  Branch (1068:2): [True: 0, False: 0]
  |  Branch (1068:2): [True: 0, False: 0]
  ------------------
 1069|       |
 1070|      0|	php_stream_error_operation_begin();
 1071|      0|	ret = php_stream_rewind(stream);
  ------------------
  |  |  361|      0|#define php_stream_rewind(stream)	_php_stream_seek((stream), 0L, SEEK_SET)
  ------------------
 1072|      0|	php_stream_error_operation_end_for_stream(stream);
 1073|      0|	RETURN_BOOL(-1 != ret);
  ------------------
  |  | 1046|      0|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      0|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1074|      0|}
file.c:file_context_dtor:
  117|      4|{
  118|      4|	php_stream_context *context = (php_stream_context*)res->ptr;
  119|      4|	if (Z_TYPE(context->options) != IS_UNDEF) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(context->options) != IS_UNDEF) {
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (119:6): [True: 4, False: 0]
  ------------------
  120|      4|		zval_ptr_dtor(&context->options);
  121|      4|		ZVAL_UNDEF(&context->options);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  122|      4|	}
  123|      4|	php_stream_context_free(context);
  124|      4|}
file.c:file_globals_ctor:
  127|      2|{
  128|      2|	memset(file_globals_p, 0, sizeof(php_file_globals));
  129|      2|	file_globals_p->def_chunk_size = PHP_SOCK_CHUNK_SIZE;
  ------------------
  |  |  252|      2|#define PHP_SOCK_CHUNK_SIZE	8192
  ------------------
  130|      2|}
file.c:OnUpdateAutoDetectLineEndings:
  142|      2|{
  143|      2|	if (zend_ini_parse_bool(new_value)) {
  ------------------
  |  Branch (143:6): [True: 0, False: 2]
  ------------------
  144|      0|		zend_error(E_DEPRECATED, "auto_detect_line_endings is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  145|      0|	}
  146|      2|	return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  147|      2|}

file.c:register_file_symbols:
    5|      2|{
    6|      2|	REGISTER_LONG_CONSTANT("SEEK_SET", SEEK_SET, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    7|      2|	REGISTER_LONG_CONSTANT("SEEK_CUR", SEEK_CUR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    8|      2|	REGISTER_LONG_CONSTANT("SEEK_END", SEEK_END, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    9|      2|	REGISTER_LONG_CONSTANT("LOCK_SH", PHP_LOCK_SH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   10|      2|	REGISTER_LONG_CONSTANT("LOCK_EX", PHP_LOCK_EX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   11|      2|	REGISTER_LONG_CONSTANT("LOCK_UN", PHP_LOCK_UN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   12|      2|	REGISTER_LONG_CONSTANT("LOCK_NB", PHP_LOCK_NB, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   13|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_CONNECT", PHP_STREAM_NOTIFY_CONNECT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   14|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_REQUIRED", PHP_STREAM_NOTIFY_AUTH_REQUIRED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   15|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_RESULT", PHP_STREAM_NOTIFY_AUTH_RESULT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   16|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_MIME_TYPE_IS", PHP_STREAM_NOTIFY_MIME_TYPE_IS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   17|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_FILE_SIZE_IS", PHP_STREAM_NOTIFY_FILE_SIZE_IS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   18|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_REDIRECTED", PHP_STREAM_NOTIFY_REDIRECTED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   19|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_PROGRESS", PHP_STREAM_NOTIFY_PROGRESS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   20|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_FAILURE", PHP_STREAM_NOTIFY_FAILURE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   21|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_COMPLETED", PHP_STREAM_NOTIFY_COMPLETED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   22|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_RESOLVE", PHP_STREAM_NOTIFY_RESOLVE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   23|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_INFO", PHP_STREAM_NOTIFY_SEVERITY_INFO, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   24|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_WARN", PHP_STREAM_NOTIFY_SEVERITY_WARN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   25|      2|	REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_ERR", PHP_STREAM_NOTIFY_SEVERITY_ERR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   26|      2|	REGISTER_LONG_CONSTANT("STREAM_FILTER_READ", PHP_STREAM_FILTER_READ, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   27|      2|	REGISTER_LONG_CONSTANT("STREAM_FILTER_WRITE", PHP_STREAM_FILTER_WRITE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   28|      2|	REGISTER_LONG_CONSTANT("STREAM_FILTER_ALL", PHP_STREAM_FILTER_ALL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   29|      2|	REGISTER_LONG_CONSTANT("STREAM_CLIENT_PERSISTENT", PHP_STREAM_CLIENT_PERSISTENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   30|      2|	REGISTER_LONG_CONSTANT("STREAM_CLIENT_ASYNC_CONNECT", PHP_STREAM_CLIENT_ASYNC_CONNECT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   31|      2|	REGISTER_LONG_CONSTANT("STREAM_CLIENT_CONNECT", PHP_STREAM_CLIENT_CONNECT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   32|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_ANY_CLIENT", STREAM_CRYPTO_METHOD_ANY_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   33|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_CLIENT", STREAM_CRYPTO_METHOD_SSLv2_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   34|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_CLIENT", STREAM_CRYPTO_METHOD_SSLv3_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   35|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_CLIENT", STREAM_CRYPTO_METHOD_SSLv23_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   36|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_CLIENT", STREAM_CRYPTO_METHOD_TLS_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   37|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   38|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   39|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   40|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   41|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_ANY_SERVER", STREAM_CRYPTO_METHOD_ANY_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   42|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_SERVER", STREAM_CRYPTO_METHOD_SSLv2_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   43|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_SERVER", STREAM_CRYPTO_METHOD_SSLv3_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   44|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_SERVER", STREAM_CRYPTO_METHOD_SSLv23_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   45|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_SERVER", STREAM_CRYPTO_METHOD_TLS_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   46|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_0_SERVER", STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   47|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_1_SERVER", STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   48|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_2_SERVER", STREAM_CRYPTO_METHOD_TLSv1_2_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   49|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_3_SERVER", STREAM_CRYPTO_METHOD_TLSv1_3_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   50|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_SSLv3", STREAM_CRYPTO_METHOD_SSLv3_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   51|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_0", STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   52|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_1", STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   53|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_2", STREAM_CRYPTO_METHOD_TLSv1_2_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   54|      2|	REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_3", STREAM_CRYPTO_METHOD_TLSv1_3_SERVER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   55|      2|	REGISTER_LONG_CONSTANT("STREAM_SHUT_RD", STREAM_SHUT_RD, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   56|      2|	REGISTER_LONG_CONSTANT("STREAM_SHUT_WR", STREAM_SHUT_WR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   57|      2|	REGISTER_LONG_CONSTANT("STREAM_SHUT_RDWR", STREAM_SHUT_RDWR, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   58|      2|#if defined(PF_INET)
   59|      2|	REGISTER_LONG_CONSTANT("STREAM_PF_INET", PF_INET, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   60|      2|#endif
   61|       |#if (!defined(PF_INET) && defined(AF_INET))
   62|       |	REGISTER_LONG_CONSTANT("STREAM_PF_INET", AF_INET, CONST_PERSISTENT);
   63|       |#endif
   64|      2|#if defined(HAVE_IPV6) && defined(PF_INET6)
   65|      2|	REGISTER_LONG_CONSTANT("STREAM_PF_INET6", PF_INET6, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   66|      2|#endif
   67|       |#if defined(HAVE_IPV6) && (!defined(PF_INET6) && defined(AF_INET6))
   68|       |	REGISTER_LONG_CONSTANT("STREAM_PF_INET6", AF_INET6, CONST_PERSISTENT);
   69|       |#endif
   70|      2|#if defined(PF_UNIX)
   71|      2|	REGISTER_LONG_CONSTANT("STREAM_PF_UNIX", PF_UNIX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   72|      2|#endif
   73|       |#if (!defined(PF_UNIX) && defined(AF_UNIX))
   74|       |	REGISTER_LONG_CONSTANT("STREAM_PF_UNIX", AF_UNIX, CONST_PERSISTENT);
   75|       |#endif
   76|      2|#if defined(IPPROTO_IP)
   77|      2|	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_IP", IPPROTO_IP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   78|      2|#endif
   79|      2|#if (defined(IPPROTO_TCP) || defined(PHP_WIN32))
   80|      2|	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_TCP", IPPROTO_TCP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   81|      2|#endif
   82|      2|#if (defined(IPPROTO_UDP) || defined(PHP_WIN32))
   83|      2|	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_UDP", IPPROTO_UDP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   84|      2|#endif
   85|      2|#if (defined(IPPROTO_ICMP) || defined(PHP_WIN32))
   86|      2|	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_ICMP", IPPROTO_ICMP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   87|      2|#endif
   88|      2|#if (defined(IPPROTO_RAW) || defined(PHP_WIN32))
   89|      2|	REGISTER_LONG_CONSTANT("STREAM_IPPROTO_RAW", IPPROTO_RAW, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   90|      2|#endif
   91|      2|	REGISTER_LONG_CONSTANT("STREAM_SOCK_STREAM", SOCK_STREAM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   92|      2|	REGISTER_LONG_CONSTANT("STREAM_SOCK_DGRAM", SOCK_DGRAM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   93|      2|#if defined(SOCK_RAW)
   94|      2|	REGISTER_LONG_CONSTANT("STREAM_SOCK_RAW", SOCK_RAW, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   95|      2|#endif
   96|      2|#if defined(SOCK_SEQPACKET)
   97|      2|	REGISTER_LONG_CONSTANT("STREAM_SOCK_SEQPACKET", SOCK_SEQPACKET, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   98|      2|#endif
   99|      2|#if defined(SOCK_RDM)
  100|      2|	REGISTER_LONG_CONSTANT("STREAM_SOCK_RDM", SOCK_RDM, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  101|      2|#endif
  102|      2|	REGISTER_LONG_CONSTANT("STREAM_PEEK", STREAM_PEEK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  103|      2|	REGISTER_LONG_CONSTANT("STREAM_OOB", STREAM_OOB, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  104|      2|	REGISTER_LONG_CONSTANT("STREAM_SERVER_BIND", STREAM_XPORT_BIND, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  105|      2|	REGISTER_LONG_CONSTANT("STREAM_SERVER_LISTEN", STREAM_XPORT_LISTEN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  106|      2|	REGISTER_LONG_CONSTANT("FILE_USE_INCLUDE_PATH", PHP_FILE_USE_INCLUDE_PATH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  107|      2|	REGISTER_LONG_CONSTANT("FILE_IGNORE_NEW_LINES", PHP_FILE_IGNORE_NEW_LINES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  108|      2|	REGISTER_LONG_CONSTANT("FILE_SKIP_EMPTY_LINES", PHP_FILE_SKIP_EMPTY_LINES, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  109|      2|	REGISTER_LONG_CONSTANT("FILE_APPEND", PHP_FILE_APPEND, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  110|      2|	REGISTER_LONG_CONSTANT("FILE_NO_DEFAULT_CONTEXT", PHP_FILE_NO_DEFAULT_CONTEXT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  111|      2|	zend_constant *const_FILE_TEXT = REGISTER_LONG_CONSTANT("FILE_TEXT", 0, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  112|      2|	zend_constant *const_FILE_BINARY = REGISTER_LONG_CONSTANT("FILE_BINARY", 0, CONST_PERSISTENT | CONST_DEPRECATED);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  113|      2|#if defined(HAVE_FNMATCH)
  114|      2|	REGISTER_LONG_CONSTANT("FNM_NOESCAPE", FNM_NOESCAPE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  115|      2|	REGISTER_LONG_CONSTANT("FNM_PATHNAME", FNM_PATHNAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  116|      2|	REGISTER_LONG_CONSTANT("FNM_PERIOD", FNM_PERIOD, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  117|      2|#endif
  118|      2|#if defined(HAVE_FNMATCH) && defined(FNM_CASEFOLD)
  119|      2|	REGISTER_LONG_CONSTANT("FNM_CASEFOLD", FNM_CASEFOLD, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
  120|      2|#endif
  121|       |
  122|       |
  123|      2|	zend_attribute *attribute_Deprecated_const_FILE_TEXT_0 = zend_add_global_constant_attribute(const_FILE_TEXT, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  124|      2|	ZVAL_STR(&attribute_Deprecated_const_FILE_TEXT_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  125|      2|	attribute_Deprecated_const_FILE_TEXT_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  126|      2|	zend_string *attribute_Deprecated_const_FILE_TEXT_0_arg1_str = zend_string_init("as the constant has no effect", strlen("as the constant has no effect"), 1);
  127|      2|	ZVAL_STR(&attribute_Deprecated_const_FILE_TEXT_0->args[1].value, attribute_Deprecated_const_FILE_TEXT_0_arg1_str);
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  128|      2|	attribute_Deprecated_const_FILE_TEXT_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  129|       |
  130|      2|	zend_attribute *attribute_Deprecated_const_FILE_BINARY_0 = zend_add_global_constant_attribute(const_FILE_BINARY, ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 2);
  131|      2|	ZVAL_STR(&attribute_Deprecated_const_FILE_BINARY_0->args[0].value, ZSTR_KNOWN(ZEND_STR_8_DOT_1));
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 2, False: 0]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  132|      2|	attribute_Deprecated_const_FILE_BINARY_0->args[0].name = ZSTR_KNOWN(ZEND_STR_SINCE);
  133|      2|	ZVAL_STR_COPY(&attribute_Deprecated_const_FILE_BINARY_0->args[1].value, attribute_Deprecated_const_FILE_TEXT_0_arg1_str);
  ------------------
  |  | 1112|      2|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      2|		zval *__z = (z);								\
  |  | 1114|      2|		zend_string *__s = (s);							\
  |  | 1115|      2|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      2|		/* interned strings support */					\
  |  | 1117|      2|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 2]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      2|		} else {										\
  |  | 1120|      2|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      2|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      2|		}												\
  |  | 1123|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  134|      2|	attribute_Deprecated_const_FILE_BINARY_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE);
  135|      2|}

zm_activate_filestat:
   84|  33.5k|{
   85|  33.5k|	BG(CurrentStatFile)=NULL;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
   86|  33.5k|	BG(CurrentLStatFile)=NULL;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
   87|  33.5k|	return SUCCESS;
   88|  33.5k|}
zm_deactivate_filestat:
   92|  33.5k|{
   93|  33.5k|	if (BG(CurrentStatFile)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
   94|      0|		zend_string_release(BG(CurrentStatFile));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   95|      0|		BG(CurrentStatFile) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   96|      0|	}
   97|  33.5k|	if (BG(CurrentLStatFile)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
   98|      0|		zend_string_release(BG(CurrentLStatFile));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   99|      0|		BG(CurrentLStatFile) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  100|      0|	}
  101|  33.5k|	return SUCCESS;
  102|  33.5k|}
php_clear_stat_cache:
  696|     12|{
  697|       |	/* always clear CurrentStatFile and CurrentLStatFile even if filename is not NULL
  698|       |	 * as it may contain outdated data (e.g. "nlink" for a directory when deleting a file
  699|       |	 * in this directory, as shown by lstat_stat_variation9.phpt) */
  700|     12|	if (BG(CurrentStatFile)) {
  ------------------
  |  |  113|     12|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  701|      0|		zend_string_release(BG(CurrentStatFile));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  702|      0|		BG(CurrentStatFile) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  703|      0|	}
  704|     12|	if (BG(CurrentLStatFile)) {
  ------------------
  |  |  113|     12|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  705|      0|		zend_string_release(BG(CurrentLStatFile));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  706|      0|		BG(CurrentLStatFile) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  707|      0|	}
  708|     12|	if (clear_realpath_cache) {
  ------------------
  |  Branch (708:6): [True: 0, False: 12]
  ------------------
  709|      0|		if (filename != NULL) {
  ------------------
  |  Branch (709:7): [True: 0, False: 0]
  ------------------
  710|      0|			realpath_cache_del(filename, filename_len);
  711|      0|		} else {
  712|      0|			realpath_cache_clean();
  713|      0|		}
  714|      0|	}
  715|     12|}

zm_startup_standard_filters:
 2026|      2|{
 2027|      2|	int i;
 2028|       |
 2029|     14|	for (i = 0; standard_filters[i].ops; i++) {
  ------------------
  |  Branch (2029:14): [True: 12, False: 2]
  ------------------
 2030|     12|		if (FAILURE == php_stream_filter_register_factory(
  ------------------
  |  Branch (2030:7): [True: 0, False: 12]
  ------------------
 2031|     12|					standard_filters[i].ops->label,
 2032|     12|					standard_filters[i].factory
 2033|     12|					)) {
 2034|      0|			return FAILURE;
 2035|      0|		}
 2036|     12|	}
 2037|      2|	return SUCCESS;
 2038|      2|}

php_sprintf_get_argnum:
  375|     14|int php_sprintf_get_argnum(char **format, size_t *format_len) {
  376|     14|	char *temppos = *format;
  377|     14|	while (isdigit((unsigned char)*temppos)) temppos++;
  ------------------
  |  Branch (377:9): [True: 1, False: 14]
  ------------------
  378|     14|	if (*temppos != '$') {
  ------------------
  |  Branch (378:6): [True: 14, False: 0]
  ------------------
  379|     14|		return ARG_NUM_NEXT;
  ------------------
  |  |  372|     14|#define ARG_NUM_NEXT -1
  ------------------
  380|     14|	}
  381|       |
  382|      0|	int argnum = php_sprintf_getnumber(format, format_len);
  383|      0|	if (argnum <= 0) {
  ------------------
  |  Branch (383:6): [True: 0, False: 0]
  ------------------
  384|      0|		zend_value_error("Argument number specifier must be greater than zero and less than %d", INT_MAX);
  385|      0|		return ARG_NUM_INVALID;
  ------------------
  |  |  373|      0|#define ARG_NUM_INVALID -2
  ------------------
  386|      0|	}
  387|       |
  388|      0|	(*format)++;  /* skip the '$' */
  389|      0|	(*format_len)--;
  390|      0|	return argnum - 1;
  391|      0|}
zif_sprintf:
  760|      6|{
  761|      6|	zend_string *result;
  762|      6|	char *format;
  763|      6|	size_t format_len;
  764|      6|	zval *args;
  765|      6|	int argc;
  766|       |
  767|     18|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      6|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      6|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      6|		const int _flags = (flags); \
  |  |  |  | 1599|      6|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      6|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      6|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      6|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      6|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      6|		uint32_t _i = 0; \
  |  |  |  | 1603|      6|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      6|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      6|		char *_error = NULL; \
  |  |  |  | 1606|      6|		bool _dummy = 0; \
  |  |  |  | 1607|      6|		bool _optional = 0; \
  |  |  |  | 1608|      6|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      6|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      6|		((void)_i); \
  |  |  |  | 1610|      6|		((void)_real_arg); \
  |  |  |  | 1611|      6|		((void)_arg); \
  |  |  |  | 1612|      6|		((void)_expected_type); \
  |  |  |  | 1613|      6|		((void)_error); \
  |  |  |  | 1614|      6|		((void)_optional); \
  |  |  |  | 1615|      6|		((void)_dummy); \
  |  |  |  | 1616|      6|		\
  |  |  |  | 1617|      6|		do { \
  |  |  |  | 1618|      6|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      6|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      6|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  768|     24|		Z_PARAM_STRING(format, format_len)
  ------------------
  |  | 2087|      6|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|      6|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|      6|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (768:3): [True: 6, False: 0]
  |  Branch (768:3): [True: 0, False: 0]
  |  Branch (768:3): [True: 6, False: 0]
  |  Branch (768:3): [True: 0, False: 0]
  |  Branch (768:3): [True: 6, False: 0]
  |  Branch (768:3): [True: 0, False: 0]
  |  Branch (768:3): [True: 0, False: 6]
  |  Branch (768:3): [True: 6, False: 0]
  |  Branch (768:3): [True: 0, False: 0]
  |  Branch (768:3): [True: 0, False: 0]
  ------------------
  769|      6|		Z_PARAM_VARIADIC('*', args, argc)
  ------------------
  |  | 2140|      6|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|      6|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|      6|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|      6|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      6|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 3, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|      3|			dest = _real_arg + 1; \
  |  |  |  | 2126|      3|			dest_num = _num_varargs; \
  |  |  |  | 2127|      3|			_i += _num_varargs; \
  |  |  |  | 2128|      3|			_real_arg += _num_varargs; \
  |  |  |  | 2129|      3|		} else { \
  |  |  |  | 2130|      3|			dest = NULL; \
  |  |  |  | 2131|      3|			dest_num = 0; \
  |  |  |  | 2132|      3|		} \
  |  |  |  | 2133|      6|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|      6|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  770|      6|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      6|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|      6|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (770:2): [True: 6, False: 0]
  |  Branch (770:2): [True: 0, False: 0]
  |  Branch (770:2): [True: 0, False: 6]
  |  Branch (770:2): [True: 6, False: 0]
  ------------------
  771|       |
  772|      6|	result = php_formatted_print(format, format_len, args, argc, 1);
  773|      6|	if (result == NULL) {
  ------------------
  |  Branch (773:6): [True: 3, False: 3]
  ------------------
  774|      3|		RETURN_THROWS();
  ------------------
  |  | 1071|      3|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (774:3): [True: 0, False: 3]
  |  Branch (774:3): [True: 3, False: 0]
  ------------------
  775|      3|	}
  776|      3|	RETVAL_STR(result);
  ------------------
  |  | 1024|      3|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      3|		zval *__z = (z);						\
  |  |  |  | 1090|      3|		zend_string *__s = (s);					\
  |  |  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      3|		/* interned strings support */			\
  |  |  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|      3|}
zif_printf:
  808|      1|{
  809|      1|	zend_string *result;
  810|      1|	size_t rlen;
  811|      1|	char *format;
  812|      1|	size_t format_len;
  813|      1|	zval *args;
  814|      1|	int argc;
  815|       |
  816|      3|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  817|      4|		Z_PARAM_STRING(format, format_len)
  ------------------
  |  | 2087|      1|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|      1|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (817:3): [True: 1, False: 0]
  |  Branch (817:3): [True: 0, False: 0]
  |  Branch (817:3): [True: 1, False: 0]
  |  Branch (817:3): [True: 0, False: 0]
  |  Branch (817:3): [True: 1, False: 0]
  |  Branch (817:3): [True: 0, False: 0]
  |  Branch (817:3): [True: 0, False: 1]
  |  Branch (817:3): [True: 1, False: 0]
  |  Branch (817:3): [True: 0, False: 0]
  |  Branch (817:3): [True: 0, False: 0]
  ------------------
  818|      1|		Z_PARAM_VARIADIC('*', args, argc)
  ------------------
  |  | 2140|      1|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|      1|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|      1|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|      1|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|      1|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|      0|			dest = _real_arg + 1; \
  |  |  |  | 2126|      0|			dest_num = _num_varargs; \
  |  |  |  | 2127|      0|			_i += _num_varargs; \
  |  |  |  | 2128|      0|			_real_arg += _num_varargs; \
  |  |  |  | 2129|      1|		} else { \
  |  |  |  | 2130|      1|			dest = NULL; \
  |  |  |  | 2131|      1|			dest_num = 0; \
  |  |  |  | 2132|      1|		} \
  |  |  |  | 2133|      1|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|      1|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  819|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (819:2): [True: 1, False: 0]
  |  Branch (819:2): [True: 0, False: 0]
  |  Branch (819:2): [True: 0, False: 1]
  |  Branch (819:2): [True: 1, False: 0]
  ------------------
  820|       |
  821|      1|	result = php_formatted_print(format, format_len, args, argc, 1);
  822|      1|	if (result == NULL) {
  ------------------
  |  Branch (822:6): [True: 1, False: 0]
  ------------------
  823|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (823:3): [True: 0, False: 1]
  |  Branch (823:3): [True: 1, False: 0]
  ------------------
  824|      1|	}
  825|      0|	rlen = PHPWRITE(ZSTR_VAL(result), ZSTR_LEN(result));
  ------------------
  |  |  156|      0|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  826|      0|	zend_string_efree(result);
  827|      0|	RETURN_LONG(rlen);
  ------------------
  |  | 1048|      0|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      0|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  828|      0|}
formatted_print.c:php_sprintf_getnumber:
  352|      3|{
  353|      3|	char *endptr;
  354|      3|	zend_long num = ZEND_STRTOL(*buffer, &endptr, 10);
  ------------------
  |  |   68|      3|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
  355|      3|	size_t i;
  356|       |
  357|      3|	if (endptr != NULL) {
  ------------------
  |  Branch (357:6): [True: 3, False: 0]
  ------------------
  358|      3|		i = (endptr - *buffer);
  359|      3|		*len -= i;
  360|      3|		*buffer = endptr;
  361|      3|	}
  362|      3|	PRINTF_DEBUG(("sprintf_getnumber: number was %zu bytes long\n", i));
  363|       |
  364|      3|	if (num >= INT_MAX || num < 0) {
  ------------------
  |  Branch (364:6): [True: 0, False: 3]
  |  Branch (364:24): [True: 0, False: 3]
  ------------------
  365|      0|		return -1;
  366|      3|	} else {
  367|      3|		return (int) num;
  368|      3|	}
  369|      3|}
formatted_print.c:php_formatted_print:
  422|      7|{
  423|      7|	size_t size = 240, outpos = 0;
  424|      7|	int alignment, currarg, adjusting, argnum, width, precision;
  425|      7|	char *temppos, padding;
  426|      7|	zend_string *result;
  427|      7|	int always_sign;
  428|      7|	int max_missing_argnum = -1;
  429|       |
  430|       |	/* For debugging */
  431|      7|	const char *format_orig = format;
  432|      7|	ZEND_IGNORE_VALUE(format_orig);
  ------------------
  |  |  142|      7|# define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
  ------------------
  433|       |
  434|      7|	result = zend_string_alloc(size, 0);
  435|       |
  436|      7|	currarg = 0;
  437|      7|	argnum = 0;
  438|       |
  439|     54|	while (format_len) {
  ------------------
  |  Branch (439:9): [True: 49, False: 5]
  ------------------
  440|     49|		int expprec;
  441|     49|		zval *tmp;
  442|       |
  443|     49|		temppos = memchr(format, '%', format_len);
  444|     49|		if (!temppos) {
  ------------------
  |  Branch (444:7): [True: 1, False: 48]
  ------------------
  445|      1|			php_sprintf_appendchars(&result, &outpos, format, format_len);
  446|      1|			break;
  447|     48|		} else if (temppos != format) {
  ------------------
  |  Branch (447:14): [True: 14, False: 34]
  ------------------
  448|     14|			php_sprintf_appendchars(&result, &outpos, format, temppos - format);
  449|     14|			format_len -= temppos - format;
  450|     14|			format = temppos;
  451|     14|		}
  452|     48|		format++;			/* skip the '%' */
  453|     48|		format_len--;
  454|       |
  455|     48|		if (*format == '%') {
  ------------------
  |  Branch (455:7): [True: 33, False: 15]
  ------------------
  456|     33|			php_sprintf_appendchar(&result, &outpos, '%');
  457|     33|			format++;
  458|     33|			format_len--;
  459|     33|		} else {
  460|       |			/* starting a new format specifier, reset variables */
  461|     15|			alignment = ALIGN_RIGHT;
  ------------------
  |  |   28|     15|#define ALIGN_RIGHT 1
  ------------------
  462|     15|			adjusting = 0;
  463|     15|			padding = ' ';
  464|     15|			always_sign = 0;
  465|     15|			expprec = 0;
  466|       |
  467|     15|			PRINTF_DEBUG(("sprintf: first looking at '%c', inpos=%zu\n",
  468|     15|						  *format, format - format_orig));
  469|     15|			if (isalpha((unsigned char)*format)) {
  ------------------
  |  Branch (469:8): [True: 1, False: 14]
  ------------------
  470|      1|				width = precision = 0;
  471|      1|				argnum = ARG_NUM_NEXT;
  ------------------
  |  |  372|      1|#define ARG_NUM_NEXT -1
  ------------------
  472|     14|			} else {
  473|       |				/* first look for argnum */
  474|     14|				argnum = php_sprintf_get_argnum(&format, &format_len);
  475|     14|				if (argnum == ARG_NUM_INVALID) {
  ------------------
  |  |  373|     14|#define ARG_NUM_INVALID -2
  ------------------
  |  Branch (475:9): [True: 0, False: 14]
  ------------------
  476|      0|					goto fail;
  477|      0|				}
  478|       |
  479|       |				/* after argnum comes modifiers */
  480|     14|				PRINTF_DEBUG(("sprintf: looking for modifiers\n"
  481|     14|							  "sprintf: now looking at '%c', inpos=%zu\n",
  482|     14|							  *format, format - format_orig));
  483|     15|				for (;; format++, format_len--) {
  484|     15|					if (*format == ' ' || *format == '0') {
  ------------------
  |  Branch (484:10): [True: 0, False: 15]
  |  Branch (484:28): [True: 0, False: 15]
  ------------------
  485|      0|						padding = *format;
  486|     15|					} else if (*format == '-') {
  ------------------
  |  Branch (486:17): [True: 0, False: 15]
  ------------------
  487|      0|						alignment = ALIGN_LEFT;
  ------------------
  |  |   27|      0|#define ALIGN_LEFT 0
  ------------------
  488|       |						/* space padding, the default */
  489|     15|					} else if (*format == '+') {
  ------------------
  |  Branch (489:17): [True: 1, False: 14]
  ------------------
  490|      1|						always_sign = 1;
  491|     14|					} else if (*format == '\'') {
  ------------------
  |  Branch (491:17): [True: 1, False: 13]
  ------------------
  492|      1|						if (format_len > 1) {
  ------------------
  |  Branch (492:11): [True: 0, False: 1]
  ------------------
  493|      0|							format++;
  494|      0|							format_len--;
  495|      0|							padding = *format;
  496|      1|						} else {
  497|      1|							zend_value_error("Missing padding character");
  498|      1|							goto fail;
  499|      1|						}
  500|     13|					} else {
  501|     13|						PRINTF_DEBUG(("sprintf: end of modifiers\n"));
  502|     13|						break;
  503|     13|					}
  504|     15|				}
  505|     13|				PRINTF_DEBUG(("sprintf: padding='%c'\n", padding));
  506|     13|				PRINTF_DEBUG(("sprintf: alignment=%s\n",
  507|     13|							  (alignment == ALIGN_LEFT) ? "left" : "right"));
  508|       |
  509|       |
  510|       |				/* after modifiers comes width */
  511|     13|				if (*format == '*') {
  ------------------
  |  Branch (511:9): [True: 0, False: 13]
  ------------------
  512|      0|					format++;
  513|      0|					format_len--;
  514|       |
  515|      0|					int width_argnum = php_sprintf_get_argnum(&format, &format_len);
  516|      0|					if (width_argnum == ARG_NUM_INVALID) {
  ------------------
  |  |  373|      0|#define ARG_NUM_INVALID -2
  ------------------
  |  Branch (516:10): [True: 0, False: 0]
  ------------------
  517|      0|						goto fail;
  518|      0|					}
  519|      0|					if (width_argnum == ARG_NUM_NEXT) {
  ------------------
  |  |  372|      0|#define ARG_NUM_NEXT -1
  ------------------
  |  Branch (519:10): [True: 0, False: 0]
  ------------------
  520|      0|						width_argnum = currarg++;
  521|      0|					}
  522|      0|					if (width_argnum >= argc) {
  ------------------
  |  Branch (522:10): [True: 0, False: 0]
  ------------------
  523|      0|						max_missing_argnum = MAX(max_missing_argnum, width_argnum);
  ------------------
  |  Branch (523:28): [True: 0, False: 0]
  ------------------
  524|      0|						continue;
  525|      0|					}
  526|      0|					tmp = &args[width_argnum];
  527|      0|					ZVAL_DEREF(tmp);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  528|      0|					if (Z_TYPE_P(tmp) != IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(tmp) != IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (528:10): [True: 0, False: 0]
  ------------------
  529|      0|						zend_value_error("Width must be an integer");
  530|      0|						goto fail;
  531|      0|					}
  532|      0|					if (Z_LVAL_P(tmp) < 0 || Z_LVAL_P(tmp) > INT_MAX) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              					if (Z_LVAL_P(tmp) < 0 || Z_LVAL_P(tmp) > INT_MAX) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (532:10): [True: 0, False: 0]
  |  Branch (532:31): [True: 0, False: 0]
  ------------------
  533|      0|						zend_value_error("Width must be between 0 and %d", INT_MAX);
  534|      0|						goto fail;
  535|      0|					}
  536|      0|					width = Z_LVAL_P(tmp);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  537|      0|					adjusting |= ADJ_WIDTH;
  ------------------
  |  |   29|      0|#define ADJ_WIDTH 1
  ------------------
  538|     13|				} else if (isdigit((unsigned char)*format)) {
  ------------------
  |  Branch (538:16): [True: 1, False: 12]
  ------------------
  539|      1|					PRINTF_DEBUG(("sprintf: getting width\n"));
  540|      1|					if ((width = php_sprintf_getnumber(&format, &format_len)) < 0) {
  ------------------
  |  Branch (540:10): [True: 0, False: 1]
  ------------------
  541|      0|						zend_value_error("Width must be between 0 and %d", INT_MAX);
  542|      0|						goto fail;
  543|      0|					}
  544|      1|					adjusting |= ADJ_WIDTH;
  ------------------
  |  |   29|      1|#define ADJ_WIDTH 1
  ------------------
  545|     12|				} else {
  546|     12|					width = 0;
  547|     12|				}
  548|     13|				PRINTF_DEBUG(("sprintf: width=%d\n", width));
  549|       |
  550|       |				/* after width and argnum comes precision */
  551|     13|				if (*format == '.') {
  ------------------
  |  Branch (551:9): [True: 2, False: 11]
  ------------------
  552|      2|					format++;
  553|      2|					format_len--;
  554|      2|					PRINTF_DEBUG(("sprintf: getting precision\n"));
  555|      2|					if (*format == '*') {
  ------------------
  |  Branch (555:10): [True: 0, False: 2]
  ------------------
  556|      0|						format++;
  557|      0|						format_len--;
  558|       |
  559|      0|						int prec_argnum = php_sprintf_get_argnum(&format, &format_len);
  560|      0|						if (prec_argnum == ARG_NUM_INVALID) {
  ------------------
  |  |  373|      0|#define ARG_NUM_INVALID -2
  ------------------
  |  Branch (560:11): [True: 0, False: 0]
  ------------------
  561|      0|							goto fail;
  562|      0|						}
  563|      0|						if (prec_argnum == ARG_NUM_NEXT) {
  ------------------
  |  |  372|      0|#define ARG_NUM_NEXT -1
  ------------------
  |  Branch (563:11): [True: 0, False: 0]
  ------------------
  564|      0|							prec_argnum = currarg++;
  565|      0|						}
  566|      0|						if (prec_argnum >= argc) {
  ------------------
  |  Branch (566:11): [True: 0, False: 0]
  ------------------
  567|      0|							max_missing_argnum = MAX(max_missing_argnum, prec_argnum);
  ------------------
  |  Branch (567:29): [True: 0, False: 0]
  ------------------
  568|      0|							continue;
  569|      0|						}
  570|      0|						tmp = &args[prec_argnum];
  571|      0|						ZVAL_DEREF(tmp);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  572|      0|						if (Z_TYPE_P(tmp) != IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(tmp) != IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (572:11): [True: 0, False: 0]
  ------------------
  573|      0|							zend_value_error("Precision must be an integer");
  574|      0|							goto fail;
  575|      0|						}
  576|      0|						if (Z_LVAL_P(tmp) < -1 || Z_LVAL_P(tmp) > INT_MAX) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              						if (Z_LVAL_P(tmp) < -1 || Z_LVAL_P(tmp) > INT_MAX) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (576:11): [True: 0, False: 0]
  |  Branch (576:33): [True: 0, False: 0]
  ------------------
  577|      0|							zend_value_error("Precision must be between -1 and %d", INT_MAX);
  578|      0|							goto fail;
  579|      0|						}
  580|      0|						precision = Z_LVAL_P(tmp);
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  581|      0|						adjusting |= ADJ_PRECISION;
  ------------------
  |  |   30|      0|#define ADJ_PRECISION 2
  ------------------
  582|      0|						expprec = 1;
  583|      2|					} else if (isdigit((unsigned char)*format)) {
  ------------------
  |  Branch (583:17): [True: 2, False: 0]
  ------------------
  584|      2|						if ((precision = php_sprintf_getnumber(&format, &format_len)) < 0) {
  ------------------
  |  Branch (584:11): [True: 0, False: 2]
  ------------------
  585|      0|							zend_value_error("Precision must be between 0 and %d", INT_MAX);
  586|      0|							goto fail;
  587|      0|						}
  588|      2|						adjusting |= ADJ_PRECISION;
  ------------------
  |  |   30|      2|#define ADJ_PRECISION 2
  ------------------
  589|      2|						expprec = 1;
  590|      2|					} else {
  591|      0|						precision = 0;
  592|      0|						adjusting |= ADJ_PRECISION;
  ------------------
  |  |   30|      0|#define ADJ_PRECISION 2
  ------------------
  593|      0|					}
  594|     11|				} else {
  595|     11|					precision = 0;
  596|     11|				}
  597|     13|				PRINTF_DEBUG(("sprintf: precision=%d\n", precision));
  598|     13|			}
  599|       |
  600|     14|			if (*format == 'l') {
  ------------------
  |  Branch (600:8): [True: 0, False: 14]
  ------------------
  601|      0|				format++;
  602|      0|				format_len--;
  603|      0|			}
  604|     14|			PRINTF_DEBUG(("sprintf: format character='%c'\n", *format));
  605|       |
  606|     14|			if (argnum == ARG_NUM_NEXT) {
  ------------------
  |  |  372|     14|#define ARG_NUM_NEXT -1
  ------------------
  |  Branch (606:8): [True: 14, False: 0]
  ------------------
  607|     14|				argnum = currarg++;
  608|     14|			}
  609|     14|			if (argnum >= argc) {
  ------------------
  |  Branch (609:8): [True: 11, False: 3]
  ------------------
  610|     11|				max_missing_argnum = MAX(max_missing_argnum, argnum);
  ------------------
  |  Branch (610:26): [True: 0, False: 11]
  ------------------
  611|     11|				continue;
  612|     11|			}
  613|       |
  614|      3|			if (expprec && precision == -1
  ------------------
  |  Branch (614:8): [True: 2, False: 1]
  |  Branch (614:19): [True: 0, False: 2]
  ------------------
  615|      0|					&& *format != 'g' && *format != 'G' && *format != 'h' && *format != 'H') {
  ------------------
  |  Branch (615:9): [True: 0, False: 0]
  |  Branch (615:27): [True: 0, False: 0]
  |  Branch (615:45): [True: 0, False: 0]
  |  Branch (615:63): [True: 0, False: 0]
  ------------------
  616|      0|				zend_value_error("Precision -1 is only supported for %%g, %%G, %%h and %%H");
  617|      0|				goto fail;
  618|      0|			}
  619|       |
  620|       |			/* now we expect to find a type specifier */
  621|      3|			tmp = &args[argnum];
  622|      3|			switch (*format) {
  623|      1|				case 's': {
  ------------------
  |  Branch (623:5): [True: 1, False: 2]
  ------------------
  624|      1|					zend_string *t;
  625|      1|					zend_string *str = zval_get_tmp_string(tmp, &t);
  626|      1|					php_sprintf_appendstring(&result, &outpos,
  627|      1|											 ZSTR_VAL(str),
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  628|      1|											 width, precision, padding,
  629|      1|											 alignment,
  630|      1|											 ZSTR_LEN(str),
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  631|      1|											 /* neg */ false, expprec, 0);
  632|      1|					zend_tmp_string_release(t);
  633|      1|					break;
  634|      0|				}
  635|       |
  636|      0|				case 'd':
  ------------------
  |  Branch (636:5): [True: 0, False: 3]
  ------------------
  637|      0|					php_sprintf_appendint(&result, &outpos,
  638|      0|										  zval_get_long(tmp),
  639|      0|										  width, padding, alignment,
  640|      0|										  always_sign);
  641|      0|					break;
  642|       |
  643|      0|				case 'u':
  ------------------
  |  Branch (643:5): [True: 0, False: 3]
  ------------------
  644|      0|					php_sprintf_appenduint(&result, &outpos,
  645|      0|										  zval_get_long(tmp),
  646|      0|										  width, padding, alignment);
  647|      0|					break;
  648|       |
  649|      0|				case 'e':
  ------------------
  |  Branch (649:5): [True: 0, False: 3]
  ------------------
  650|      0|				case 'E':
  ------------------
  |  Branch (650:5): [True: 0, False: 3]
  ------------------
  651|      2|				case 'f':
  ------------------
  |  Branch (651:5): [True: 2, False: 1]
  ------------------
  652|      2|				case 'F':
  ------------------
  |  Branch (652:5): [True: 0, False: 3]
  ------------------
  653|      2|				case 'g':
  ------------------
  |  Branch (653:5): [True: 0, False: 3]
  ------------------
  654|      2|				case 'G':
  ------------------
  |  Branch (654:5): [True: 0, False: 3]
  ------------------
  655|      2|				case 'h':
  ------------------
  |  Branch (655:5): [True: 0, False: 3]
  ------------------
  656|      2|				case 'H':
  ------------------
  |  Branch (656:5): [True: 0, False: 3]
  ------------------
  657|      2|					php_sprintf_appenddouble(&result, &outpos,
  658|      2|											 zval_get_double(tmp),
  659|      2|											 width, padding, alignment,
  660|      2|											 precision, adjusting,
  661|      2|											 *format, always_sign
  662|      2|											);
  663|      2|					break;
  664|       |
  665|      0|				case 'c':
  ------------------
  |  Branch (665:5): [True: 0, False: 3]
  ------------------
  666|      0|					php_sprintf_appendchar(&result, &outpos,
  667|      0|										(char) zval_get_long(tmp));
  668|      0|					break;
  669|       |
  670|      0|				case 'o':
  ------------------
  |  Branch (670:5): [True: 0, False: 3]
  ------------------
  671|      0|					php_sprintf_append2n(&result, &outpos,
  672|      0|										 zval_get_long(tmp),
  673|      0|										 width, padding, alignment, 3,
  674|      0|										 hexchars, expprec);
  675|      0|					break;
  676|       |
  677|      0|				case 'x':
  ------------------
  |  Branch (677:5): [True: 0, False: 3]
  ------------------
  678|      0|					php_sprintf_append2n(&result, &outpos,
  679|      0|										 zval_get_long(tmp),
  680|      0|										 width, padding, alignment, 4,
  681|      0|										 hexchars, expprec);
  682|      0|					break;
  683|       |
  684|      0|				case 'X':
  ------------------
  |  Branch (684:5): [True: 0, False: 3]
  ------------------
  685|      0|					php_sprintf_append2n(&result, &outpos,
  686|      0|										 zval_get_long(tmp),
  687|      0|										 width, padding, alignment, 4,
  688|      0|										 HEXCHARS, expprec);
  689|      0|					break;
  690|       |
  691|      0|				case 'b':
  ------------------
  |  Branch (691:5): [True: 0, False: 3]
  ------------------
  692|      0|					php_sprintf_append2n(&result, &outpos,
  693|      0|										 zval_get_long(tmp),
  694|      0|										 width, padding, alignment, 1,
  695|      0|										 hexchars, expprec);
  696|      0|					break;
  697|       |
  698|      0|				case '%':
  ------------------
  |  Branch (698:5): [True: 0, False: 3]
  ------------------
  699|      0|					php_sprintf_appendchar(&result, &outpos, '%');
  700|       |
  701|      0|					break;
  702|       |
  703|      0|				case '\0':
  ------------------
  |  Branch (703:5): [True: 0, False: 3]
  ------------------
  704|      0|					if (!format_len) {
  ------------------
  |  Branch (704:10): [True: 0, False: 0]
  ------------------
  705|      0|						zend_value_error("Missing format specifier at end of string");
  706|      0|						goto fail;
  707|      0|					}
  708|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  709|       |
  710|      0|				default:
  ------------------
  |  Branch (710:5): [True: 0, False: 3]
  ------------------
  711|      0|					zend_value_error("Unknown format specifier \"%c\"", *format);
  712|      0|					goto fail;
  713|      3|			}
  714|      3|			format++;
  715|      3|			format_len--;
  716|      3|		}
  717|     48|	}
  718|       |
  719|      6|	if (max_missing_argnum >= 0) {
  ------------------
  |  Branch (719:6): [True: 3, False: 3]
  ------------------
  720|      3|		if (nb_additional_parameters == -1) {
  ------------------
  |  Branch (720:7): [True: 0, False: 3]
  ------------------
  721|      0|			zend_value_error("The arguments array must contain %d items, %d given", max_missing_argnum + 1, argc);
  722|      3|		} else {
  723|      3|			zend_argument_count_error("%d arguments are required, %d given", max_missing_argnum + nb_additional_parameters + 1, argc + nb_additional_parameters);
  724|      3|		}
  725|      3|		goto fail;
  726|      3|	}
  727|       |
  728|       |	/* possibly, we have to make sure we have room for the terminating null? */
  729|      3|	ZSTR_VAL(result)[outpos]=0;
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  730|      3|	ZSTR_LEN(result) = outpos;
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  731|      3|	return result;
  732|       |
  733|      4|fail:
  734|      4|	zend_string_efree(result);
  735|       |	return NULL;
  736|      6|}
formatted_print.c:php_sprintf_appendchars:
   61|     15|{
   62|     15|	if ((*pos + len) >= ZSTR_LEN(*buffer)) {
  ------------------
  |  |   68|     15|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (62:6): [True: 0, False: 15]
  ------------------
   63|      0|		size_t nlen = ZSTR_LEN(*buffer);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   64|       |
   65|      0|		PRINTF_DEBUG(("%s(): ereallocing buffer to %zu bytes\n", get_active_function_name(), ZSTR_LEN(*buffer)));
   66|      0|		do {
   67|      0|			nlen = nlen << 1;
   68|      0|		} while ((*pos + len) >= nlen);
  ------------------
  |  Branch (68:12): [True: 0, False: 0]
  ------------------
   69|      0|		*buffer = zend_string_extend(*buffer, nlen, 0);
   70|      0|	}
   71|     15|	PRINTF_DEBUG(("sprintf: appending \"%s\", pos=%zu\n", add, *pos));
   72|     15|	memcpy(ZSTR_VAL(*buffer) + (*pos), add, len);
  ------------------
  |  |   67|     15|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   73|     15|	*pos += len;
   74|     15|}
formatted_print.c:php_sprintf_appendchar:
   48|     33|{
   49|     33|	if ((*pos + 1) >= ZSTR_LEN(*buffer)) {
  ------------------
  |  |   68|     33|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (49:6): [True: 0, False: 33]
  ------------------
   50|      0|		PRINTF_DEBUG(("%s(): ereallocing buffer to %zu bytes\n", get_active_function_name(), ZSTR_LEN(*buffer)));
   51|      0|		*buffer = zend_string_extend(*buffer, ZSTR_LEN(*buffer) << 1, 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   52|      0|	}
   53|     33|	PRINTF_DEBUG(("sprintf: appending '%c', pos=%zu\n", add, *pos));
   54|     33|	ZSTR_VAL(*buffer)[(*pos)++] = add;
  ------------------
  |  |   67|     33|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   55|     33|}
formatted_print.c:php_sprintf_appendstring:
   82|      3|{
   83|      3|	size_t npad;
   84|      3|	size_t req_size;
   85|      3|	size_t copy_len;
   86|      3|	size_t m_width;
   87|       |
   88|      3|	copy_len = (expprec ? MIN(max_width, len) : len);
  ------------------
  |  Branch (88:14): [True: 0, False: 3]
  |  Branch (88:24): [True: 0, False: 0]
  ------------------
   89|      3|	npad = (min_width < copy_len) ? 0 : min_width - copy_len;
  ------------------
  |  Branch (89:9): [True: 3, False: 0]
  ------------------
   90|       |
   91|      3|	PRINTF_DEBUG(("sprintf: appendstring(%p, %zu, %zu, \"%s\", %zu, '%c', %zu)\n",
   92|      3|				  *buffer, *pos, ZSTR_LEN(*buffer), add, min_width, padding, alignment));
   93|      3|	m_width = MAX(min_width, copy_len);
  ------------------
  |  Branch (93:12): [True: 0, False: 3]
  ------------------
   94|       |
   95|      3|	if(m_width > INT_MAX - *pos - 1) {
  ------------------
  |  Branch (95:5): [True: 0, False: 3]
  ------------------
   96|      0|		zend_error_noreturn(E_ERROR, "Field width %zd is too long", m_width);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
   97|      0|	}
   98|       |
   99|      3|	req_size = *pos + m_width + 1;
  100|       |
  101|      3|	if (req_size > ZSTR_LEN(*buffer)) {
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (101:6): [True: 0, False: 3]
  ------------------
  102|      0|		size_t size = ZSTR_LEN(*buffer);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  103|      0|		while (req_size > size) {
  ------------------
  |  Branch (103:10): [True: 0, False: 0]
  ------------------
  104|      0|			if (size > SIZE_MAX/2) {
  ------------------
  |  Branch (104:8): [True: 0, False: 0]
  ------------------
  105|      0|				zend_error_noreturn(E_ERROR, "Field width %zd is too long", req_size);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  106|      0|			}
  107|      0|			size <<= 1;
  108|      0|		}
  109|      0|		PRINTF_DEBUG(("sprintf ereallocing buffer to %zu bytes\n", size));
  110|      0|		*buffer = zend_string_extend(*buffer, size, 0);
  111|      0|	}
  112|      3|	if (alignment == ALIGN_RIGHT) {
  ------------------
  |  |   28|      3|#define ALIGN_RIGHT 1
  ------------------
  |  Branch (112:6): [True: 3, False: 0]
  ------------------
  113|      3|		if ((neg || always_sign) && padding=='0') {
  ------------------
  |  Branch (113:8): [True: 0, False: 3]
  |  Branch (113:15): [True: 0, False: 3]
  |  Branch (113:31): [True: 0, False: 0]
  ------------------
  114|      0|			ZSTR_VAL(*buffer)[(*pos)++] = (neg) ? '-' : '+';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (114:34): [True: 0, False: 0]
  ------------------
  115|      0|			add++;
  116|      0|			len--;
  117|      0|			copy_len--;
  118|      0|		}
  119|      3|		while (npad-- > 0) {
  ------------------
  |  Branch (119:10): [True: 0, False: 3]
  ------------------
  120|      0|			ZSTR_VAL(*buffer)[(*pos)++] = padding;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  121|      0|		}
  122|      3|	}
  123|      3|	PRINTF_DEBUG(("sprintf: appending \"%s\"\n", add));
  124|      3|	memcpy(&ZSTR_VAL(*buffer)[*pos], add, copy_len + 1);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  125|      3|	*pos += copy_len;
  126|      3|	if (alignment == ALIGN_LEFT) {
  ------------------
  |  |   27|      3|#define ALIGN_LEFT 0
  ------------------
  |  Branch (126:6): [True: 0, False: 3]
  ------------------
  127|      0|		while (npad--) {
  ------------------
  |  Branch (127:10): [True: 0, False: 0]
  ------------------
  128|      0|			ZSTR_VAL(*buffer)[(*pos)++] = padding;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  129|      0|		}
  130|      0|	}
  131|      3|}
formatted_print.c:php_sprintf_appenddouble:
  219|      2|{
  220|      2|	char num_buf[NUM_BUF_SIZE];
  221|      2|	char *s = NULL;
  222|      2|	size_t s_len = 0;
  223|      2|	bool is_negative = false;
  224|       |#ifdef ZTS
  225|       |	struct lconv lconv;
  226|       |#else
  227|      2|	struct lconv *lconv;
  228|      2|#endif
  229|       |
  230|      2|	PRINTF_DEBUG(("sprintf: appenddouble(%p, %zu, %zu, %f, %zu, '%c', %zu, %c)\n",
  231|      2|				  *buffer, *pos, ZSTR_LEN(*buffer), number, width, padding, alignment, fmt));
  232|      2|	if ((adjust & ADJ_PRECISION) == 0) {
  ------------------
  |  |   30|      2|#define ADJ_PRECISION 2
  ------------------
  |  Branch (232:6): [True: 0, False: 2]
  ------------------
  233|      0|		precision = FLOAT_PRECISION;
  ------------------
  |  |   32|      0|#define FLOAT_PRECISION 6
  ------------------
  234|      2|	} else if (precision > MAX_FLOAT_PRECISION) {
  ------------------
  |  |   33|      2|#define MAX_FLOAT_PRECISION 53
  ------------------
  |  Branch (234:13): [True: 0, False: 2]
  ------------------
  235|      0|		php_error_docref(NULL, E_NOTICE, "Requested precision of %d digits was truncated to PHP maximum of %d digits", precision, MAX_FLOAT_PRECISION);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              		php_error_docref(NULL, E_NOTICE, "Requested precision of %d digits was truncated to PHP maximum of %d digits", precision, MAX_FLOAT_PRECISION);
  ------------------
  |  |   33|      0|#define MAX_FLOAT_PRECISION 53
  ------------------
  236|      0|		precision = MAX_FLOAT_PRECISION;
  ------------------
  |  |   33|      0|#define MAX_FLOAT_PRECISION 53
  ------------------
  237|      0|	}
  238|       |
  239|      2|	if (zend_isnan(number)) {
  ------------------
  |  |  536|      2|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (239:6): [True: 0, False: 2]
  ------------------
  240|      0|		is_negative = (number<0);
  241|      0|		php_sprintf_appendstring(buffer, pos, "NaN", 3, 0, padding,
  242|      0|								 alignment, 3, is_negative, 0, always_sign);
  243|      0|		return;
  244|      0|	}
  245|       |
  246|      2|	if (zend_isinf(number)) {
  ------------------
  |  |  537|      2|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (246:6): [True: 0, False: 2]
  ------------------
  247|      0|		is_negative = (number<0);		
  248|      0|		char *str = is_negative ? "-INF" : "INF";
  ------------------
  |  Branch (248:15): [True: 0, False: 0]
  ------------------
  249|      0|		php_sprintf_appendstring(buffer, pos, str, strlen(str), 0, padding,
  250|      0|								alignment, strlen(str), is_negative, 0, always_sign);
  251|      0|		return;
  252|      0|	}
  253|       |
  254|      2|	switch (fmt) {
  ------------------
  |  Branch (254:10): [True: 2, False: 0]
  ------------------
  255|      0|		case 'e':
  ------------------
  |  Branch (255:3): [True: 0, False: 2]
  ------------------
  256|      0|		case 'E':
  ------------------
  |  Branch (256:3): [True: 0, False: 2]
  ------------------
  257|      2|		case 'f':
  ------------------
  |  Branch (257:3): [True: 2, False: 0]
  ------------------
  258|      2|		case 'F':
  ------------------
  |  Branch (258:3): [True: 0, False: 2]
  ------------------
  259|       |#ifdef ZTS
  260|       |			localeconv_r(&lconv);
  261|       |#else
  262|      2|			lconv = localeconv();
  263|      2|#endif
  264|      2|			s = php_conv_fp((fmt == 'f')?'F':fmt, number, 0, precision,
  ------------------
  |  Branch (264:20): [True: 2, False: 0]
  ------------------
  265|      2|						(fmt == 'f')?LCONV_DECIMAL_POINT:'.',
  ------------------
  |  |   24|      2|#define LCONV_DECIMAL_POINT (*lconv->decimal_point)
  ------------------
  |  Branch (265:7): [True: 2, False: 0]
  ------------------
  266|      2|						&is_negative, &num_buf[1], &s_len);
  267|      2|			if (is_negative) {
  ------------------
  |  Branch (267:8): [True: 0, False: 2]
  ------------------
  268|      0|				num_buf[0] = '-';
  269|      0|				s = num_buf;
  270|      0|				s_len++;
  271|      2|			} else if (always_sign) {
  ------------------
  |  Branch (271:15): [True: 0, False: 2]
  ------------------
  272|      0|				num_buf[0] = '+';
  273|      0|				s = num_buf;
  274|      0|				s_len++;
  275|      0|			}
  276|      2|			break;
  277|       |
  278|      0|		case 'g':
  ------------------
  |  Branch (278:3): [True: 0, False: 2]
  ------------------
  279|      0|		case 'G':
  ------------------
  |  Branch (279:3): [True: 0, False: 2]
  ------------------
  280|      0|		case 'h':
  ------------------
  |  Branch (280:3): [True: 0, False: 2]
  ------------------
  281|      0|		case 'H':
  ------------------
  |  Branch (281:3): [True: 0, False: 2]
  ------------------
  282|      0|		{
  283|      0|			if (precision == 0)
  ------------------
  |  Branch (283:8): [True: 0, False: 0]
  ------------------
  284|      0|				precision = 1;
  285|       |
  286|      0|			char decimal_point = '.';
  287|      0|			if (fmt == 'g' || fmt == 'G') {
  ------------------
  |  Branch (287:8): [True: 0, False: 0]
  |  Branch (287:22): [True: 0, False: 0]
  ------------------
  288|       |#ifdef ZTS
  289|       |				localeconv_r(&lconv);
  290|       |#else
  291|      0|				lconv = localeconv();
  292|      0|#endif
  293|      0|				decimal_point = LCONV_DECIMAL_POINT;
  ------------------
  |  |   24|      0|#define LCONV_DECIMAL_POINT (*lconv->decimal_point)
  ------------------
  294|      0|			}
  295|       |
  296|      0|			char exp_char = fmt == 'G' || fmt == 'H' ? 'E' : 'e';
  ------------------
  |  Branch (296:20): [True: 0, False: 0]
  |  Branch (296:34): [True: 0, False: 0]
  ------------------
  297|       |			/* We use &num_buf[ 1 ], so that we have room for the sign. */
  298|      0|			s = zend_gcvt(number, precision, decimal_point, exp_char, &num_buf[1]);
  299|      0|			is_negative = false;
  300|      0|			if (*s == '-') {
  ------------------
  |  Branch (300:8): [True: 0, False: 0]
  ------------------
  301|      0|				is_negative = true;
  302|      0|				s = &num_buf[1];
  303|      0|			} else if (always_sign) {
  ------------------
  |  Branch (303:15): [True: 0, False: 0]
  ------------------
  304|      0|				num_buf[0] = '+';
  305|      0|				s = num_buf;
  306|      0|			}
  307|       |
  308|      0|			s_len = strlen(s);
  309|      0|			break;
  310|      0|		}
  311|      2|	}
  312|       |
  313|      2|	php_sprintf_appendstring(buffer, pos, s, width, 0, padding,
  314|      2|							 alignment, s_len, is_negative, 0, always_sign);
  315|      2|}

zif_header:
   31|      1|{
   32|      1|	bool rep = 1;
   33|      1|	sapi_header_line ctr = {0};
   34|      1|	char *line;
   35|      1|	size_t len;
   36|       |
   37|      3|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|      4|		Z_PARAM_STRING(line, len)
  ------------------
  |  | 2087|      1|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|      1|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (38:3): [True: 1, False: 0]
  |  Branch (38:3): [True: 0, False: 0]
  |  Branch (38:3): [True: 1, False: 0]
  |  Branch (38:3): [True: 0, False: 0]
  |  Branch (38:3): [True: 1, False: 0]
  |  Branch (38:3): [True: 0, False: 0]
  |  Branch (38:3): [True: 0, False: 1]
  |  Branch (38:3): [True: 1, False: 0]
  |  Branch (38:3): [True: 0, False: 0]
  |  Branch (38:3): [True: 0, False: 0]
  ------------------
   39|      1|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
   40|      2|		Z_PARAM_BOOL(rep)
  ------------------
  |  | 1735|      1|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (40:3): [True: 1, False: 0]
  |  Branch (40:3): [True: 0, False: 0]
  |  Branch (40:3): [True: 0, False: 1]
  |  Branch (40:3): [True: 1, False: 0]
  |  Branch (40:3): [True: 1, False: 0]
  |  Branch (40:3): [True: 0, False: 0]
  |  Branch (40:3): [True: 1, False: 0]
  |  Branch (40:3): [True: 0, False: 0]
  |  Branch (40:3): [True: 0, False: 0]
  |  Branch (40:3): [True: 0, False: 0]
  ------------------
   41|      0|		Z_PARAM_LONG(ctr.response_code)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  |  Branch (41:3): [True: 0, False: 0]
  ------------------
   42|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42:2): [True: 0, False: 0]
  |  Branch (42:2): [True: 0, False: 0]
  |  Branch (42:2): [True: 0, False: 0]
  |  Branch (42:2): [True: 0, False: 0]
  ------------------
   43|       |
   44|      1|	ctr.line = line;
   45|      1|	ctr.line_len = len;
   46|      1|	sapi_header_op(rep ? SAPI_HEADER_REPLACE:SAPI_HEADER_ADD, &ctr);
  ------------------
  |  |  303|      1|#define SAPI_HEADER_ADD			(1<<0)
  ------------------
  |  Branch (46:17): [True: 1, False: 0]
  ------------------
   47|      1|}
php_header:
   69|  33.5k|{
   70|  33.5k|	if (sapi_send_headers()==FAILURE || SG(request_info).headers_only) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (70:6): [True: 0, False: 33.5k]
  |  Branch (70:38): [True: 0, False: 33.5k]
  ------------------
   71|      0|		return false; /* don't allow output */
   72|  33.5k|	} else {
   73|       |		return true; /* allow output */
   74|  33.5k|	}
   75|  33.5k|}
zif_headers_sent:
  307|      1|{
  308|      1|	zval *arg1 = NULL, *arg2 = NULL;
  309|      1|	const char *file="";
  310|      1|	int line=0;
  311|       |
  312|      3|	ZEND_PARSE_PARAMETERS_START(0, 2)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|      3|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
  314|      4|		Z_PARAM_ZVAL(arg1)
  ------------------
  |  | 2116|      1|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      1|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      1|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (314:3): [True: 1, False: 0]
  |  Branch (314:3): [True: 0, False: 0]
  |  Branch (314:3): [True: 0, False: 1]
  |  Branch (314:3): [True: 1, False: 0]
  |  Branch (314:3): [True: 1, False: 0]
  |  Branch (314:3): [True: 0, False: 0]
  |  Branch (314:3): [True: 1, False: 0]
  |  Branch (314:3): [True: 0, False: 0]
  |  Branch (314:3): [True: 0, False: 0]
  |  Branch (314:3): [True: 0, False: 0]
  ------------------
  315|      4|		Z_PARAM_ZVAL(arg2)
  ------------------
  |  | 2116|      1|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      1|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      1|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (315:3): [True: 1, False: 0]
  |  Branch (315:3): [True: 0, False: 0]
  |  Branch (315:3): [True: 0, False: 1]
  |  Branch (315:3): [True: 1, False: 0]
  |  Branch (315:3): [True: 1, False: 0]
  |  Branch (315:3): [True: 0, False: 0]
  |  Branch (315:3): [True: 1, False: 0]
  |  Branch (315:3): [True: 0, False: 0]
  |  Branch (315:3): [True: 0, False: 0]
  |  Branch (315:3): [True: 0, False: 0]
  ------------------
  316|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (316:2): [True: 1, False: 0]
  |  Branch (316:2): [True: 0, False: 0]
  |  Branch (316:2): [True: 1, False: 0]
  |  Branch (316:2): [True: 0, False: 0]
  ------------------
  317|       |
  318|      1|	if (SG(headers_sent)) {
  ------------------
  |  |  158|      1|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  319|      0|		line = php_output_get_start_lineno();
  320|      0|		file = php_output_get_start_filename();
  321|      0|	}
  322|       |
  323|      1|	switch(ZEND_NUM_ARGS()) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (712:2): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  324|      1|	case 2:
  ------------------
  |  Branch (324:2): [True: 1, False: 0]
  ------------------
  325|      1|		ZEND_TRY_ASSIGN_REF_LONG(arg2, line);
  ------------------
  |  | 1215|      1|#define ZEND_TRY_ASSIGN_REF_LONG(zv, lval) do { \
  |  | 1216|      1|	ZEND_ASSERT(Z_ISREF_P(zv)); \
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1217|      1|	_ZEND_TRY_ASSIGN_LONG(zv, lval, 1); \
  |  |  ------------------
  |  |  |  | 1198|      1|#define _ZEND_TRY_ASSIGN_LONG(zv, lval, is_ref) do { \
  |  |  |  | 1199|      1|	zval *_zv = zv; \
  |  |  |  | 1200|      1|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1200:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1201|      1|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1202|      1|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1203|      0|			zend_try_assign_typed_ref_long(ref, lval); \
  |  |  |  | 1204|      0|			break; \
  |  |  |  | 1205|      0|		} \
  |  |  |  | 1206|      1|		_zv = &ref->val; \
  |  |  |  | 1207|      1|	} \
  |  |  |  | 1208|      1|	zval_ptr_safe_dtor(_zv); \
  |  |  |  | 1209|      1|	ZVAL_LONG(_zv, lval); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      1|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1210:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1218|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1218:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (325:3): [True: 0, False: 1]
  |  Branch (325:3): [True: 1, False: 0]
  ------------------
  326|      1|		ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      1|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  327|      1|	case 1:
  ------------------
  |  Branch (327:2): [True: 0, False: 1]
  ------------------
  328|      1|		if (file) {
  ------------------
  |  Branch (328:7): [True: 1, False: 0]
  ------------------
  329|      1|			ZEND_TRY_ASSIGN_REF_STRING(arg1, file);
  ------------------
  |  | 1325|      1|#define ZEND_TRY_ASSIGN_REF_STRING(zv, string) do { \
  |  | 1326|      1|	ZEND_ASSERT(Z_ISREF_P(zv)); \
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1327|      1|	_ZEND_TRY_ASSIGN_STRING(zv, string, 1); \
  |  |  ------------------
  |  |  |  | 1308|      1|#define _ZEND_TRY_ASSIGN_STRING(zv, string, is_ref) do { \
  |  |  |  | 1309|      1|	zval *_zv = zv; \
  |  |  |  | 1310|      1|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1310:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1311|      1|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1312|      1|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1313|      0|			zend_try_assign_typed_ref_string(ref, string); \
  |  |  |  | 1314|      0|			break; \
  |  |  |  | 1315|      0|		} \
  |  |  |  | 1316|      1|		_zv = &ref->val; \
  |  |  |  | 1317|      1|	} \
  |  |  |  | 1318|      1|	zval_ptr_safe_dtor(_zv); \
  |  |  |  | 1319|      1|	ZVAL_STRING(_zv, string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  967|      1|#define ZVAL_STRING(z, s) do {					\
  |  |  |  |  |  |  968|      1|		const char *_s = (s);					\
  |  |  |  |  |  |  969|      1|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  963|      1|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  |  |  964|      1|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  965|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  970|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (970:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1320|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1320:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1328|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1328:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (329:4): [True: 0, False: 1]
  |  Branch (329:4): [True: 1, False: 0]
  ------------------
  330|      1|		} else {
  331|      0|			ZEND_TRY_ASSIGN_REF_EMPTY_STRING(arg1);
  ------------------
  |  | 1259|      0|#define ZEND_TRY_ASSIGN_REF_EMPTY_STRING(zv) do { \
  |  | 1260|      0|	ZEND_ASSERT(Z_ISREF_P(zv)); \
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1261|      0|	_ZEND_TRY_ASSIGN_EMPTY_STRING(zv, 1); \
  |  |  ------------------
  |  |  |  | 1242|      0|#define _ZEND_TRY_ASSIGN_EMPTY_STRING(zv, is_ref) do { \
  |  |  |  | 1243|      0|	zval *_zv = zv; \
  |  |  |  | 1244|      0|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1244:6): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1245|      0|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      0|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1246|      0|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1247|      0|			zend_try_assign_typed_ref_empty_string(ref); \
  |  |  |  | 1248|      0|			break; \
  |  |  |  | 1249|      0|		} \
  |  |  |  | 1250|      0|		_zv = &ref->val; \
  |  |  |  | 1251|      0|	} \
  |  |  |  | 1252|      0|	zval_ptr_safe_dtor(_zv); \
  |  |  |  | 1253|      0|	ZVAL_EMPTY_STRING(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1254|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1254:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1262|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1262:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (331:4): [True: 0, False: 0]
  |  Branch (331:4): [True: 0, False: 0]
  ------------------
  332|      0|		}
  333|      1|		break;
  334|      1|	}
  335|       |
  336|      1|	RETURN_BOOL(SG(headers_sent));
  ------------------
  |  | 1046|      1|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      1|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  337|      1|}

php_escape_html_entities_ex:
 1130|     63|{
 1131|     63|	size_t cursor, maxlen, len;
 1132|     63|	zend_string *replaced;
 1133|     63|	enum entity_charset charset = determine_charset(hint_charset, quiet);
 1134|     63|	int doctype = flags & ENT_HTML_DOC_TYPE_MASK;
  ------------------
  |  |   23|     63|#define ENT_HTML_DOC_TYPE_MASK		(16|32)
  ------------------
 1135|     63|	entity_table_opt entity_table;
 1136|     63|	const enc_to_uni *to_uni_table = NULL;
 1137|     63|	const entity_ht *inv_map = NULL; /* used for !double_encode */
 1138|       |	/* only used if flags includes ENT_HTML_IGNORE_ERRORS or ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS */
 1139|     63|	const unsigned char *replacement = NULL;
 1140|     63|	size_t replacement_len = 0;
 1141|       |
 1142|     63|	if (all) { /* replace with all named entities */
  ------------------
  |  Branch (1142:6): [True: 63, False: 0]
  ------------------
 1143|     63|		if (!quiet && CHARSET_PARTIAL_SUPPORT(charset)) {
  ------------------
  |  |   32|     63|#define CHARSET_PARTIAL_SUPPORT(cs)	((cs) >= cs_big5)
  |  |  ------------------
  |  |  |  Branch (32:37): [True: 16, False: 47]
  |  |  ------------------
  ------------------
  |  Branch (1143:7): [True: 63, False: 0]
  ------------------
 1144|     16|			php_error_docref(NULL, E_NOTICE, "Only basic entities "
  ------------------
  |  |   25|     16|#define E_NOTICE			(1<<3L)
  ------------------
 1145|     16|				"substitution is supported for multi-byte encodings other than UTF-8; "
 1146|     16|				"functionality is equivalent to htmlspecialchars");
 1147|     16|		}
 1148|     63|		LIMIT_ALL(all, doctype, charset);
  ------------------
  |  |   50|     63|#define LIMIT_ALL(all, doctype, charset) do { \
  |  |   51|     63|	(all) = (all) && !CHARSET_PARTIAL_SUPPORT((charset)) && ((doctype) != ENT_HTML_DOC_XML1); \
  |  |  ------------------
  |  |  |  |   32|    126|#define CHARSET_PARTIAL_SUPPORT(cs)	((cs) >= cs_big5)
  |  |  ------------------
  |  |               	(all) = (all) && !CHARSET_PARTIAL_SUPPORT((charset)) && ((doctype) != ENT_HTML_DOC_XML1); \
  |  |  ------------------
  |  |  |  |   25|     47|#define ENT_HTML_DOC_XML1			16
  |  |  ------------------
  |  |  |  Branch (51:10): [True: 63, False: 0]
  |  |  |  Branch (51:19): [True: 47, False: 16]
  |  |  |  Branch (51:58): [True: 40, False: 7]
  |  |  ------------------
  |  |   52|     63|} while (0)
  |  |  ------------------
  |  |  |  Branch (52:10): [Folded, False: 63]
  |  |  ------------------
  ------------------
 1149|     63|	}
 1150|     63|	entity_table = determine_entity_table(all, doctype);
 1151|     63|	if (all && !CHARSET_UNICODE_COMPAT(charset)) {
  ------------------
  |  |   30|     40|#define CHARSET_UNICODE_COMPAT(cs)	((cs) <= cs_8859_1)
  ------------------
  |  Branch (1151:6): [True: 40, False: 23]
  |  Branch (1151:13): [True: 15, False: 25]
  ------------------
 1152|     15|		to_uni_table = enc_to_uni_index[charset];
 1153|     15|	}
 1154|       |
 1155|     63|	if (!double_encode) {
  ------------------
  |  Branch (1155:6): [True: 1, False: 62]
  ------------------
 1156|       |		/* first arg is 1 because we want to identify valid named entities
 1157|       |		 * even if we are only encoding the basic ones */
 1158|      1|		inv_map = unescape_inverse_map(1, flags);
 1159|      1|	}
 1160|       |
 1161|     63|	if (flags & (ENT_HTML_SUBSTITUTE_ERRORS | ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS)) {
  ------------------
  |  |   22|     63|#define ENT_HTML_SUBSTITUTE_ERRORS	8
  ------------------
              	if (flags & (ENT_HTML_SUBSTITUTE_ERRORS | ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS)) {
  ------------------
  |  |   29|     63|#define ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS	128
  ------------------
  |  Branch (1161:6): [True: 52, False: 11]
  ------------------
 1162|     52|		if (charset == cs_utf_8) {
  ------------------
  |  Branch (1162:7): [True: 23, False: 29]
  ------------------
 1163|     23|			replacement = (const unsigned char*)"\xEF\xBF\xBD";
 1164|     23|			replacement_len = sizeof("\xEF\xBF\xBD") - 1;
 1165|     29|		} else {
 1166|     29|			replacement = (const unsigned char*)"&#xFFFD;";
 1167|     29|			replacement_len = sizeof("&#xFFFD;") - 1;
 1168|     29|		}
 1169|     52|	}
 1170|       |
 1171|       |	/* initial estimate */
 1172|     63|	if (oldlen < 64) {
  ------------------
  |  Branch (1172:6): [True: 28, False: 35]
  ------------------
 1173|     28|		maxlen = 128;
 1174|     35|	} else {
 1175|     35|		maxlen = zend_safe_addmult(oldlen, 2, 0, "html_entities");
 1176|     35|	}
 1177|       |
 1178|     63|	replaced = zend_string_alloc(maxlen, 0);
 1179|     63|	len = 0;
 1180|     63|	cursor = 0;
 1181|  4.57k|	while (cursor < oldlen) {
  ------------------
  |  Branch (1181:9): [True: 4.52k, False: 54]
  ------------------
 1182|  4.52k|		const unsigned char *mbsequence = NULL;
 1183|  4.52k|		size_t mbseqlen					= 0,
 1184|  4.52k|		       cursor_before			= cursor;
 1185|  4.52k|		zend_result status				= SUCCESS;
 1186|  4.52k|		unsigned int this_char			= get_next_char(charset, old, oldlen, &cursor, &status);
 1187|       |
 1188|       |		/* guarantee we have at least 40 bytes to write.
 1189|       |		 * In HTML5, entities may take up to 33 bytes */
 1190|  4.52k|		if (len > maxlen - 40) { /* maxlen can never be smaller than 128 */
  ------------------
  |  Branch (1190:7): [True: 57, False: 4.46k]
  ------------------
 1191|     57|			replaced = zend_string_safe_realloc(replaced, maxlen, 1, 128, 0);
 1192|     57|			maxlen += 128;
 1193|     57|		}
 1194|       |
 1195|  4.52k|		if (status == FAILURE) {
  ------------------
  |  Branch (1195:7): [True: 515, False: 4.00k]
  ------------------
 1196|       |			/* invalid MB sequence */
 1197|    515|			if (flags & ENT_HTML_IGNORE_ERRORS) {
  ------------------
  |  |   21|    515|#define ENT_HTML_IGNORE_ERRORS		4
  ------------------
  |  Branch (1197:8): [True: 387, False: 128]
  ------------------
 1198|    387|				continue;
 1199|    387|			} else if (flags & ENT_HTML_SUBSTITUTE_ERRORS) {
  ------------------
  |  |   22|    128|#define ENT_HTML_SUBSTITUTE_ERRORS	8
  ------------------
  |  Branch (1199:15): [True: 119, False: 9]
  ------------------
 1200|    119|				memcpy(&ZSTR_VAL(replaced)[len], replacement, replacement_len);
  ------------------
  |  |   67|    119|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1201|    119|				len += replacement_len;
 1202|    119|				continue;
 1203|    119|			} else {
 1204|      9|				zend_string_efree(replaced);
 1205|      9|				return ZSTR_EMPTY_ALLOC();
 1206|      9|			}
 1207|  4.00k|		} else { /* SUCCESS */
 1208|  4.00k|			mbsequence = &old[cursor_before];
 1209|  4.00k|			mbseqlen = cursor - cursor_before;
 1210|  4.00k|		}
 1211|       |
 1212|  4.00k|		if (this_char != '&') { /* no entity on this position */
  ------------------
  |  Branch (1212:7): [True: 3.96k, False: 40]
  ------------------
 1213|  3.96k|			const unsigned char *rep	= NULL;
 1214|  3.96k|			size_t				rep_len	= 0;
 1215|       |
 1216|  3.96k|			if (((this_char == '\'' && !(flags & ENT_HTML_QUOTE_SINGLE)) ||
  ------------------
  |  |   19|     59|#define ENT_HTML_QUOTE_SINGLE		1
  ------------------
  |  Branch (1216:10): [True: 59, False: 3.90k]
  |  Branch (1216:31): [True: 18, False: 41]
  ------------------
 1217|  3.95k|					(this_char == '"' && !(flags & ENT_HTML_QUOTE_DOUBLE))))
  ------------------
  |  |   20|      0|#define ENT_HTML_QUOTE_DOUBLE		2
  ------------------
  |  Branch (1217:7): [True: 0, False: 3.95k]
  |  Branch (1217:27): [True: 0, False: 0]
  ------------------
 1218|     18|				goto pass_char_through;
 1219|       |
 1220|  3.95k|			if (all) { /* false that CHARSET_PARTIAL_SUPPORT(charset) */
  ------------------
  |  Branch (1220:8): [True: 2.34k, False: 1.60k]
  ------------------
 1221|  2.34k|				if (to_uni_table != NULL) {
  ------------------
  |  Branch (1221:9): [True: 1.26k, False: 1.08k]
  ------------------
 1222|       |					/* !CHARSET_UNICODE_COMPAT therefore not UTF-8; since UTF-8
 1223|       |					 * is the only multibyte encoding with !CHARSET_PARTIAL_SUPPORT,
 1224|       |					 * we're using a single byte encoding */
 1225|  1.26k|					map_to_unicode(this_char, to_uni_table, &this_char);
 1226|  1.26k|					if (this_char == 0xFFFF) /* no mapping; pass through */
  ------------------
  |  Branch (1226:10): [True: 0, False: 1.26k]
  ------------------
 1227|      0|						goto pass_char_through;
 1228|  1.26k|				}
 1229|       |				/* the cursor may advance */
 1230|  2.34k|				find_entity_for_char(this_char, charset, entity_table.ms_table, &rep,
 1231|  2.34k|					&rep_len, old, oldlen, &cursor);
 1232|  2.34k|			} else {
 1233|  1.60k|				find_entity_for_char_basic(this_char, entity_table.table, &rep, &rep_len);
 1234|  1.60k|			}
 1235|       |
 1236|  3.95k|			if (rep != NULL) {
  ------------------
  |  Branch (1236:8): [True: 401, False: 3.54k]
  ------------------
 1237|    401|				ZSTR_VAL(replaced)[len++] = '&';
  ------------------
  |  |   67|    401|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1238|    401|				memcpy(&ZSTR_VAL(replaced)[len], rep, rep_len);
  ------------------
  |  |   67|    401|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1239|    401|				len += rep_len;
 1240|    401|				ZSTR_VAL(replaced)[len++] = ';';
  ------------------
  |  |   67|    401|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1241|  3.54k|			} else {
 1242|       |				/* we did not find an entity for this char.
 1243|       |				 * check for its validity, if its valid pass it unchanged */
 1244|  3.54k|				if (flags & ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS) {
  ------------------
  |  |   29|  3.54k|#define ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS	128
  ------------------
  |  Branch (1244:9): [True: 2.90k, False: 645]
  ------------------
 1245|  2.90k|					if (CHARSET_UNICODE_COMPAT(charset)) {
  ------------------
  |  |   30|  2.90k|#define CHARSET_UNICODE_COMPAT(cs)	((cs) <= cs_8859_1)
  |  |  ------------------
  |  |  |  Branch (30:36): [True: 784, False: 2.12k]
  |  |  ------------------
  ------------------
 1246|    784|						if (!unicode_cp_is_allowed(this_char, doctype)) {
  ------------------
  |  Branch (1246:11): [True: 311, False: 473]
  ------------------
 1247|    311|							mbsequence = replacement;
 1248|    311|							mbseqlen = replacement_len;
 1249|    311|						}
 1250|  2.12k|					} else if (to_uni_table) {
  ------------------
  |  Branch (1250:17): [True: 965, False: 1.15k]
  ------------------
 1251|    965|						if (!all) /* otherwise we already did this */
  ------------------
  |  Branch (1251:11): [True: 0, False: 965]
  ------------------
 1252|      0|							map_to_unicode(this_char, to_uni_table, &this_char);
 1253|    965|						if (!unicode_cp_is_allowed(this_char, doctype)) {
  ------------------
  |  Branch (1253:11): [True: 400, False: 565]
  ------------------
 1254|    400|							mbsequence = replacement;
 1255|    400|							mbseqlen = replacement_len;
 1256|    400|						}
 1257|  1.15k|					} else {
 1258|       |						/* not a unicode code point, unless, coincidentally, it's in
 1259|       |						 * the 0x20..0x7D range (except 0x5C in sjis). We know nothing
 1260|       |						 * about other code points, because we have no tables. Since
 1261|       |						 * Unicode code points in that range are not disallowed in any
 1262|       |						 * document type, we could do nothing. However, conversion
 1263|       |						 * tables frequently map 0x00-0x1F to the respective C0 code
 1264|       |						 * points. Let's play it safe and admit that's the case */
 1265|  1.15k|						if (this_char <= 0x7D &&
  ------------------
  |  Branch (1265:11): [True: 552, False: 603]
  ------------------
 1266|    552|								!unicode_cp_is_allowed(this_char, doctype)) {
  ------------------
  |  Branch (1266:9): [True: 266, False: 286]
  ------------------
 1267|    266|							mbsequence = replacement;
 1268|    266|							mbseqlen = replacement_len;
 1269|    266|						}
 1270|  1.15k|					}
 1271|  2.90k|				}
 1272|  3.56k|pass_char_through:
 1273|  3.56k|				if (mbseqlen > 1) {
  ------------------
  |  Branch (1273:9): [True: 1.00k, False: 2.55k]
  ------------------
 1274|  1.00k|					memcpy(ZSTR_VAL(replaced) + len, mbsequence, mbseqlen);
  ------------------
  |  |   67|  1.00k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1275|  1.00k|					len += mbseqlen;
 1276|  2.55k|				} else {
 1277|  2.55k|					ZSTR_VAL(replaced)[len++] = mbsequence[0];
  ------------------
  |  |   67|  2.55k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1278|  2.55k|				}
 1279|  3.56k|			}
 1280|  3.95k|		} else { /* this_char == '&' */
 1281|     40|			if (double_encode) {
  ------------------
  |  Branch (1281:8): [True: 39, False: 1]
  ------------------
 1282|     39|encode_amp:
 1283|     39|				memcpy(&ZSTR_VAL(replaced)[len], "&amp;", sizeof("&amp;") - 1);
  ------------------
  |  |   67|     39|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1284|     39|				len += sizeof("&amp;") - 1;
 1285|     39|			} else { /* no double encode */
 1286|       |				/* check if entity is valid */
 1287|      1|				size_t ent_len; /* not counting & or ; */
 1288|       |				/* peek at next char */
 1289|      1|				if (old[cursor] == '#') { /* numeric entity */
  ------------------
  |  Branch (1289:9): [True: 0, False: 1]
  ------------------
 1290|      0|					unsigned code_point;
 1291|      0|					int valid;
 1292|      0|					char *pos = (char*)&old[cursor+1];
 1293|      0|					valid = process_numeric_entity((const char **)&pos, &code_point);
 1294|      0|					if (valid == FAILURE)
  ------------------
  |  Branch (1294:10): [True: 0, False: 0]
  ------------------
 1295|      0|						goto encode_amp;
 1296|      0|					if (flags & ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS) {
  ------------------
  |  |   29|      0|#define ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS	128
  ------------------
  |  Branch (1296:10): [True: 0, False: 0]
  ------------------
 1297|      0|						if (!numeric_entity_is_allowed(code_point, doctype))
  ------------------
  |  Branch (1297:11): [True: 0, False: 0]
  ------------------
 1298|      0|							goto encode_amp;
 1299|      0|					}
 1300|      0|					ent_len = pos - (char*)&old[cursor];
 1301|      1|				} else { /* named entity */
 1302|       |					/* check for vality of named entity */
 1303|      1|					const char *start = (const char *) &old[cursor],
 1304|      1|							   *next = start;
 1305|      1|					unsigned   dummy1, dummy2;
 1306|       |
 1307|      1|					if (process_named_entity_html(&next, &start, &ent_len) == FAILURE)
  ------------------
  |  Branch (1307:10): [True: 0, False: 1]
  ------------------
 1308|      0|						goto encode_amp;
 1309|      1|					if (resolve_named_entity_html(start, ent_len, inv_map, &dummy1, &dummy2) == FAILURE) {
  ------------------
  |  Branch (1309:10): [True: 0, False: 1]
  ------------------
 1310|      0|						if (!(doctype == ENT_HTML_DOC_XHTML && ent_len == 4 && start[0] == 'a'
  ------------------
  |  |   26|      0|#define ENT_HTML_DOC_XHTML			32
  ------------------
  |  Branch (1310:13): [True: 0, False: 0]
  |  Branch (1310:46): [True: 0, False: 0]
  |  Branch (1310:62): [True: 0, False: 0]
  ------------------
 1311|      0|									&& start[1] == 'p' && start[2] == 'o' && start[3] == 's')) {
  ------------------
  |  Branch (1311:13): [True: 0, False: 0]
  |  Branch (1311:32): [True: 0, False: 0]
  |  Branch (1311:51): [True: 0, False: 0]
  ------------------
 1312|       |							/* uses html4 inv_map, which doesn't include apos;. This is a
 1313|       |							 * hack to support it */
 1314|      0|							goto encode_amp;
 1315|      0|						}
 1316|      0|					}
 1317|      1|				}
 1318|       |				/* checks passed; copy entity to result */
 1319|       |				/* entity size is unbounded, we may need more memory */
 1320|       |				/* at this point maxlen - len >= 40 */
 1321|      1|				if (maxlen - len < ent_len + 2 /* & and ; */) {
  ------------------
  |  Branch (1321:9): [True: 0, False: 1]
  ------------------
 1322|       |					/* ent_len < oldlen, which is certainly <= SIZE_MAX/2 */
 1323|      0|					replaced = zend_string_safe_realloc(replaced, maxlen, 1, ent_len + 128, 0);
 1324|      0|					maxlen += ent_len + 128;
 1325|      0|				}
 1326|      1|				ZSTR_VAL(replaced)[len++] = '&';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1327|      1|				memcpy(&ZSTR_VAL(replaced)[len], &old[cursor], ent_len);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1328|      1|				len += ent_len;
 1329|      1|				ZSTR_VAL(replaced)[len++] = ';';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1330|      1|				cursor += ent_len + 1;
 1331|      1|			}
 1332|     40|		}
 1333|  4.00k|	}
 1334|     54|	ZSTR_VAL(replaced)[len] = '\0';
  ------------------
  |  |   67|     54|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1335|     54|	ZSTR_LEN(replaced) = len;
  ------------------
  |  |   68|     54|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1336|       |
 1337|     54|	return replaced;
 1338|     63|}
zif_htmlentities:
 1415|     64|{
 1416|     64|	php_html_entities(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  ------------------
  |  |  587|     64|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1417|     64|}
html.c:get_next_char:
   93|  4.52k|{
   94|  4.52k|	size_t pos = *cursor;
   95|  4.52k|	unsigned int this_char = 0;
   96|       |
   97|  4.52k|	*status = SUCCESS;
   98|  4.52k|	assert(pos <= str_len);
  ------------------
  |  Branch (98:2): [True: 0, False: 4.52k]
  |  Branch (98:2): [True: 4.52k, False: 0]
  ------------------
   99|       |
  100|  4.52k|	if (!CHECK_LEN(pos, 1))
  ------------------
  |  |   60|  4.52k|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (100:6): [True: 0, False: 4.52k]
  ------------------
  101|      0|		MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  102|       |
  103|  4.52k|	switch (charset) {
  104|  1.55k|	case cs_utf_8:
  ------------------
  |  Branch (104:2): [True: 1.55k, False: 2.96k]
  ------------------
  105|  1.55k|		{
  106|       |			/* We'll follow strategy 2. from section 3.6.1 of UTR #36:
  107|       |			 * "In a reported illegal byte sequence, do not include any
  108|       |			 *  non-initial byte that encodes a valid character or is a leading
  109|       |			 *  byte for a valid sequence." */
  110|  1.55k|			unsigned char c;
  111|  1.55k|			c = str[pos];
  112|  1.55k|			if (c < 0x80) {
  ------------------
  |  Branch (112:8): [True: 1.16k, False: 396]
  ------------------
  113|  1.16k|				this_char = c;
  114|  1.16k|				pos++;
  115|  1.16k|			} else if (c < 0xc2) {
  ------------------
  |  Branch (115:15): [True: 132, False: 264]
  ------------------
  116|    132|				MB_FAILURE(pos, 1);
  ------------------
  |  |   54|    132|#define MB_FAILURE(pos, advance) do { \
  |  |   55|    132|	*cursor = pos + (advance); \
  |  |   56|    132|	*status = FAILURE; \
  |  |   57|    132|	return 0; \
  |  |   58|    132|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  117|    264|			} else if (c < 0xe0) {
  ------------------
  |  Branch (117:15): [True: 89, False: 175]
  ------------------
  118|     89|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|     89|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (118:9): [True: 1, False: 88]
  ------------------
  119|      1|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      1|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      1|	*cursor = pos + (advance); \
  |  |   56|      1|	*status = FAILURE; \
  |  |   57|      1|	return 0; \
  |  |   58|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  120|       |
  121|     88|				if (!utf8_trail(str[pos + 1])) {
  ------------------
  |  |   67|     88|#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 70, False: 18]
  |  |  |  Branch (67:39): [True: 13, False: 57]
  |  |  ------------------
  ------------------
  122|     75|					MB_FAILURE(pos, utf8_lead(str[pos + 1]) ? 1 : 2);
  ------------------
  |  |   54|     75|#define MB_FAILURE(pos, advance) do { \
  |  |   55|    396|	*cursor = pos + (advance); \
  |  |  ------------------
  |  |  |  Branch (55:19): [True: 57, False: 0]
  |  |  |  Branch (55:19): [True: 54, False: 3]
  |  |  |  Branch (55:19): [True: 18, False: 57]
  |  |  ------------------
  |  |   56|     75|	*status = FAILURE; \
  |  |   57|     75|	return 0; \
  |  |   58|     75|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  123|     75|				}
  124|     13|				this_char = ((c & 0x1f) << 6) | (str[pos + 1] & 0x3f);
  125|     13|				if (this_char < 0x80) { /* non-shortest form */
  ------------------
  |  Branch (125:9): [True: 0, False: 13]
  ------------------
  126|      0|					MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  127|      0|				}
  128|     13|				pos += 2;
  129|    175|			} else if (c < 0xf0) {
  ------------------
  |  Branch (129:15): [True: 25, False: 150]
  ------------------
  130|     25|				size_t avail = str_len - pos;
  131|       |
  132|     25|				if (avail < 3 ||
  ------------------
  |  Branch (132:9): [True: 2, False: 23]
  ------------------
  133|     24|						!utf8_trail(str[pos + 1]) || !utf8_trail(str[pos + 2])) {
  ------------------
  |  |   67|     48|#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 14, False: 9]
  |  |  |  Branch (67:39): [True: 2, False: 12]
  |  |  ------------------
  ------------------
              						!utf8_trail(str[pos + 1]) || !utf8_trail(str[pos + 2])) {
  ------------------
  |  |   67|      2|#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 1, False: 1]
  |  |  |  Branch (67:39): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  134|     24|					if (avail < 2 || utf8_lead(str[pos + 1]))
  ------------------
  |  |   63|     23|#define utf8_lead(c)  ((c) < 0x80 || ((c) >= 0xC2 && (c) <= 0xF4))
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 9, False: 14]
  |  |  |  Branch (63:39): [True: 12, False: 2]
  |  |  |  Branch (63:54): [True: 6, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (134:10): [True: 1, False: 23]
  ------------------
  135|     16|						MB_FAILURE(pos, 1);
  ------------------
  |  |   54|     16|#define MB_FAILURE(pos, advance) do { \
  |  |   55|     16|	*cursor = pos + (advance); \
  |  |   56|     16|	*status = FAILURE; \
  |  |   57|     16|	return 0; \
  |  |   58|     16|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  136|      8|					else if (avail < 3 || utf8_lead(str[pos + 2]))
  ------------------
  |  |   63|      7|#define utf8_lead(c)  ((c) < 0x80 || ((c) >= 0xC2 && (c) <= 0xF4))
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 2, False: 5]
  |  |  |  Branch (63:39): [True: 2, False: 3]
  |  |  |  Branch (63:54): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (136:15): [True: 1, False: 7]
  ------------------
  137|      3|						MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      3|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      3|	*cursor = pos + (advance); \
  |  |   56|      3|	*status = FAILURE; \
  |  |   57|      3|	return 0; \
  |  |   58|      3|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  138|      5|					else
  139|      5|						MB_FAILURE(pos, 3);
  ------------------
  |  |   54|      5|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      5|	*cursor = pos + (advance); \
  |  |   56|      5|	*status = FAILURE; \
  |  |   57|      5|	return 0; \
  |  |   58|      5|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  140|     24|				}
  141|       |
  142|      1|				this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f);
  143|      1|				if (this_char < 0x800) { /* non-shortest form */
  ------------------
  |  Branch (143:9): [True: 0, False: 1]
  ------------------
  144|      0|					MB_FAILURE(pos, 3);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  145|      1|				} else if (this_char >= 0xd800 && this_char <= 0xdfff) { /* surrogate */
  ------------------
  |  Branch (145:16): [True: 0, False: 1]
  |  Branch (145:39): [True: 0, False: 0]
  ------------------
  146|      0|					MB_FAILURE(pos, 3);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  147|      0|				}
  148|      1|				pos += 3;
  149|    150|			} else if (c < 0xf5) {
  ------------------
  |  Branch (149:15): [True: 23, False: 127]
  ------------------
  150|     23|				size_t avail = str_len - pos;
  151|       |
  152|     23|				if (avail < 4 ||
  ------------------
  |  Branch (152:9): [True: 4, False: 19]
  ------------------
  153|     19|						!utf8_trail(str[pos + 1]) || !utf8_trail(str[pos + 2]) ||
  ------------------
  |  |   67|     42|#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 17, False: 2]
  |  |  |  Branch (67:39): [True: 8, False: 9]
  |  |  ------------------
  ------------------
              						!utf8_trail(str[pos + 1]) || !utf8_trail(str[pos + 2]) ||
  ------------------
  |  |   67|     31|#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 8, False: 0]
  |  |  |  Branch (67:39): [True: 4, False: 4]
  |  |  ------------------
  ------------------
  154|     22|						!utf8_trail(str[pos + 3])) {
  ------------------
  |  |   67|      4|#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
  |  |  ------------------
  |  |  |  Branch (67:24): [True: 4, False: 0]
  |  |  |  Branch (67:39): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  155|     22|					if (avail < 2 || utf8_lead(str[pos + 1]))
  ------------------
  |  |   63|     21|#define utf8_lead(c)  ((c) < 0x80 || ((c) >= 0xC2 && (c) <= 0xF4))
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 2, False: 19]
  |  |  |  Branch (63:39): [True: 11, False: 8]
  |  |  |  Branch (63:54): [True: 7, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (155:10): [True: 1, False: 21]
  ------------------
  156|     10|						MB_FAILURE(pos, 1);
  ------------------
  |  |   54|     10|#define MB_FAILURE(pos, advance) do { \
  |  |   55|     10|	*cursor = pos + (advance); \
  |  |   56|     10|	*status = FAILURE; \
  |  |   57|     10|	return 0; \
  |  |   58|     10|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  157|     12|					else if (avail < 3 || utf8_lead(str[pos + 2]))
  ------------------
  |  |   63|     11|#define utf8_lead(c)  ((c) < 0x80 || ((c) >= 0xC2 && (c) <= 0xF4))
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 0, False: 11]
  |  |  |  Branch (63:39): [True: 7, False: 4]
  |  |  |  Branch (63:54): [True: 3, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (157:15): [True: 1, False: 11]
  ------------------
  158|      4|						MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      4|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      4|	*cursor = pos + (advance); \
  |  |   56|      4|	*status = FAILURE; \
  |  |   57|      4|	return 0; \
  |  |   58|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  159|      8|					else if (avail < 4 || utf8_lead(str[pos + 3]))
  ------------------
  |  |   63|      7|#define utf8_lead(c)  ((c) < 0x80 || ((c) >= 0xC2 && (c) <= 0xF4))
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 0, False: 7]
  |  |  |  Branch (63:39): [True: 7, False: 0]
  |  |  |  Branch (63:54): [True: 6, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (159:15): [True: 1, False: 7]
  ------------------
  160|      7|						MB_FAILURE(pos, 3);
  ------------------
  |  |   54|      7|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      7|	*cursor = pos + (advance); \
  |  |   56|      7|	*status = FAILURE; \
  |  |   57|      7|	return 0; \
  |  |   58|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  161|      1|					else
  162|      1|						MB_FAILURE(pos, 4);
  ------------------
  |  |   54|      1|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      1|	*cursor = pos + (advance); \
  |  |   56|      1|	*status = FAILURE; \
  |  |   57|      1|	return 0; \
  |  |   58|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  163|     22|				}
  164|       |
  165|      1|				this_char = ((c & 0x07) << 18) | ((str[pos + 1] & 0x3f) << 12) | ((str[pos + 2] & 0x3f) << 6) | (str[pos + 3] & 0x3f);
  166|      1|				if (this_char < 0x10000 || this_char > 0x10FFFF) { /* non-shortest form or outside range */
  ------------------
  |  Branch (166:9): [True: 0, False: 1]
  |  Branch (166:32): [True: 0, False: 1]
  ------------------
  167|      0|					MB_FAILURE(pos, 4);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  168|      0|				}
  169|      1|				pos += 4;
  170|    127|			} else {
  171|    127|				MB_FAILURE(pos, 1);
  ------------------
  |  |   54|    127|#define MB_FAILURE(pos, advance) do { \
  |  |   55|    127|	*cursor = pos + (advance); \
  |  |   56|    127|	*status = FAILURE; \
  |  |   57|    127|	return 0; \
  |  |   58|    127|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  172|    127|			}
  173|  1.55k|		}
  174|  1.17k|		break;
  175|       |
  176|  1.17k|	case cs_big5:
  ------------------
  |  Branch (176:2): [True: 1.07k, False: 3.45k]
  ------------------
  177|       |		/* reference http://demo.icu-project.org/icu-bin/convexp?conv=big5 */
  178|  1.07k|		{
  179|  1.07k|			unsigned char c = str[pos];
  180|  1.07k|			if (c >= 0x81 && c <= 0xFE) {
  ------------------
  |  Branch (180:8): [True: 631, False: 442]
  |  Branch (180:21): [True: 104, False: 527]
  ------------------
  181|    104|				unsigned char next;
  182|    104|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|    104|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (182:9): [True: 0, False: 104]
  ------------------
  183|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  184|       |
  185|    104|				next = str[pos + 1];
  186|       |
  187|    104|				if ((next >= 0x40 && next <= 0x7E) ||
  ------------------
  |  Branch (187:10): [True: 76, False: 28]
  |  Branch (187:26): [True: 2, False: 74]
  ------------------
  188|    102|						(next >= 0xA1 && next <= 0xFE)) {
  ------------------
  |  Branch (188:8): [True: 31, False: 71]
  |  Branch (188:24): [True: 7, False: 24]
  ------------------
  189|      9|					this_char = (c << 8) | next;
  190|     95|				} else {
  191|     95|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|     95|#define MB_FAILURE(pos, advance) do { \
  |  |   55|     95|	*cursor = pos + (advance); \
  |  |   56|     95|	*status = FAILURE; \
  |  |   57|     95|	return 0; \
  |  |   58|     95|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  192|     95|				}
  193|      9|				pos += 2;
  194|    969|			} else {
  195|    969|				this_char = c;
  196|    969|				pos += 1;
  197|    969|			}
  198|  1.07k|		}
  199|    978|		break;
  200|       |
  201|    978|	case cs_big5hkscs:
  ------------------
  |  Branch (201:2): [True: 0, False: 4.52k]
  ------------------
  202|      0|		{
  203|      0|			unsigned char c = str[pos];
  204|      0|			if (c >= 0x81 && c <= 0xFE) {
  ------------------
  |  Branch (204:8): [True: 0, False: 0]
  |  Branch (204:21): [True: 0, False: 0]
  ------------------
  205|      0|				unsigned char next;
  206|      0|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|      0|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (206:9): [True: 0, False: 0]
  ------------------
  207|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  208|       |
  209|      0|				next = str[pos + 1];
  210|       |
  211|      0|				if ((next >= 0x40 && next <= 0x7E) ||
  ------------------
  |  Branch (211:10): [True: 0, False: 0]
  |  Branch (211:26): [True: 0, False: 0]
  ------------------
  212|      0|						(next >= 0xA1 && next <= 0xFE)) {
  ------------------
  |  Branch (212:8): [True: 0, False: 0]
  |  Branch (212:24): [True: 0, False: 0]
  ------------------
  213|      0|					this_char = (c << 8) | next;
  214|      0|				} else if (next != 0x80 && next != 0xFF) {
  ------------------
  |  Branch (214:16): [True: 0, False: 0]
  |  Branch (214:32): [True: 0, False: 0]
  ------------------
  215|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  216|      0|				} else {
  217|      0|					MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  218|      0|				}
  219|      0|				pos += 2;
  220|      0|			} else {
  221|      0|				this_char = c;
  222|      0|				pos += 1;
  223|      0|			}
  224|      0|		}
  225|      0|		break;
  226|       |
  227|    426|	case cs_gb2312: /* EUC-CN */
  ------------------
  |  Branch (227:2): [True: 426, False: 4.10k]
  ------------------
  228|    426|		{
  229|    426|			unsigned char c = str[pos];
  230|    426|			if (c >= 0xA1 && c <= 0xFE) {
  ------------------
  |  Branch (230:8): [True: 45, False: 381]
  |  Branch (230:21): [True: 16, False: 29]
  ------------------
  231|     16|				unsigned char next;
  232|     16|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|     16|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (232:9): [True: 0, False: 16]
  ------------------
  233|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  234|       |
  235|     16|				next = str[pos + 1];
  236|       |
  237|     16|				if (gb2312_trail(next)) {
  ------------------
  |  |   70|     16|#define gb2312_trail(c) ((c) >= 0xA1 && (c) <= 0xFE)
  |  |  ------------------
  |  |  |  Branch (70:26): [True: 9, False: 7]
  |  |  |  Branch (70:41): [True: 8, False: 1]
  |  |  ------------------
  ------------------
  238|      8|					this_char = (c << 8) | next;
  239|      8|				} else if (gb2312_lead(next)) {
  ------------------
  |  |   69|      8|#define gb2312_lead(c) ((c) != 0x8E && (c) != 0x8F && (c) != 0xA0 && (c) != 0xFF)
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 8, False: 0]
  |  |  |  Branch (69:40): [True: 8, False: 0]
  |  |  |  Branch (69:55): [True: 8, False: 0]
  |  |  |  Branch (69:70): [True: 7, False: 1]
  |  |  ------------------
  ------------------
  240|      7|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      7|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      7|	*cursor = pos + (advance); \
  |  |   56|      7|	*status = FAILURE; \
  |  |   57|      7|	return 0; \
  |  |   58|      7|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  241|      7|				} else {
  242|      1|					MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      1|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      1|	*cursor = pos + (advance); \
  |  |   56|      1|	*status = FAILURE; \
  |  |   57|      1|	return 0; \
  |  |   58|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  243|      1|				}
  244|      8|				pos += 2;
  245|    410|			} else if (gb2312_lead(c)) {
  ------------------
  |  |   69|    410|#define gb2312_lead(c) ((c) != 0x8E && (c) != 0x8F && (c) != 0xA0 && (c) != 0xFF)
  |  |  ------------------
  |  |  |  Branch (69:25): [True: 410, False: 0]
  |  |  |  Branch (69:40): [True: 406, False: 4]
  |  |  |  Branch (69:55): [True: 406, False: 0]
  |  |  |  Branch (69:70): [True: 377, False: 29]
  |  |  ------------------
  ------------------
  246|    377|				this_char = c;
  247|    377|				pos += 1;
  248|    377|			} else {
  249|     33|				MB_FAILURE(pos, 1);
  ------------------
  |  |   54|     33|#define MB_FAILURE(pos, advance) do { \
  |  |   55|     33|	*cursor = pos + (advance); \
  |  |   56|     33|	*status = FAILURE; \
  |  |   57|     33|	return 0; \
  |  |   58|     33|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  250|     33|			}
  251|    426|		}
  252|    385|		break;
  253|       |
  254|    385|	case cs_sjis:
  ------------------
  |  Branch (254:2): [True: 0, False: 4.52k]
  ------------------
  255|      0|		{
  256|      0|			unsigned char c = str[pos];
  257|      0|			if ((c >= 0x81 && c <= 0x9F) || (c >= 0xE0 && c <= 0xFC)) {
  ------------------
  |  Branch (257:9): [True: 0, False: 0]
  |  Branch (257:22): [True: 0, False: 0]
  |  Branch (257:37): [True: 0, False: 0]
  |  Branch (257:50): [True: 0, False: 0]
  ------------------
  258|      0|				unsigned char next;
  259|      0|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|      0|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (259:9): [True: 0, False: 0]
  ------------------
  260|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  261|       |
  262|      0|				next = str[pos + 1];
  263|       |
  264|      0|				if (sjis_trail(next)) {
  ------------------
  |  |   73|      0|#define sjis_trail(c) ((c) >= 0x40  && (c) != 0x7F && (c) < 0xFD)
  |  |  ------------------
  |  |  |  Branch (73:24): [True: 0, False: 0]
  |  |  |  Branch (73:40): [True: 0, False: 0]
  |  |  |  Branch (73:55): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  265|      0|					this_char = (c << 8) | next;
  266|      0|				} else if (sjis_lead(next)) {
  ------------------
  |  |   72|      0|#define sjis_lead(c) ((c) != 0x80 && (c) != 0xA0 && (c) < 0xFD)
  |  |  ------------------
  |  |  |  Branch (72:23): [True: 0, False: 0]
  |  |  |  Branch (72:38): [True: 0, False: 0]
  |  |  |  Branch (72:53): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  267|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  268|      0|				} else {
  269|      0|					MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  270|      0|				}
  271|      0|				pos += 2;
  272|      0|			} else if (c < 0x80 || (c >= 0xA1 && c <= 0xDF)) {
  ------------------
  |  Branch (272:15): [True: 0, False: 0]
  |  Branch (272:28): [True: 0, False: 0]
  |  Branch (272:41): [True: 0, False: 0]
  ------------------
  273|      0|				this_char = c;
  274|      0|				pos += 1;
  275|      0|			} else {
  276|      0|				MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  277|      0|			}
  278|      0|		}
  279|      0|		break;
  280|       |
  281|      0|	case cs_eucjp:
  ------------------
  |  Branch (281:2): [True: 0, False: 4.52k]
  ------------------
  282|      0|		{
  283|      0|			unsigned char c = str[pos];
  284|       |
  285|      0|			if (c >= 0xA1 && c <= 0xFE) {
  ------------------
  |  Branch (285:8): [True: 0, False: 0]
  |  Branch (285:21): [True: 0, False: 0]
  ------------------
  286|      0|				unsigned next;
  287|      0|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|      0|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (287:9): [True: 0, False: 0]
  ------------------
  288|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  289|      0|				next = str[pos + 1];
  290|       |
  291|      0|				if (next >= 0xA1 && next <= 0xFE) {
  ------------------
  |  Branch (291:9): [True: 0, False: 0]
  |  Branch (291:25): [True: 0, False: 0]
  ------------------
  292|       |					/* this a jis kanji char */
  293|      0|					this_char = (c << 8) | next;
  294|      0|				} else {
  295|      0|					MB_FAILURE(pos, (next != 0xA0 && next != 0xFF) ? 1 : 2);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |  ------------------
  |  |  |  Branch (55:19): [True: 0, False: 0]
  |  |  |  Branch (55:19): [True: 0, False: 0]
  |  |  ------------------
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  296|      0|				}
  297|      0|				pos += 2;
  298|      0|			} else if (c == 0x8E) {
  ------------------
  |  Branch (298:15): [True: 0, False: 0]
  ------------------
  299|      0|				unsigned next;
  300|      0|				if (!CHECK_LEN(pos, 2))
  ------------------
  |  |   60|      0|#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
  ------------------
  |  Branch (300:9): [True: 0, False: 0]
  ------------------
  301|      0|					MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  302|       |
  303|      0|				next = str[pos + 1];
  304|      0|				if (next >= 0xA1 && next <= 0xDF) {
  ------------------
  |  Branch (304:9): [True: 0, False: 0]
  |  Branch (304:25): [True: 0, False: 0]
  ------------------
  305|       |					/* JIS X 0201 kana */
  306|      0|					this_char = (c << 8) | next;
  307|      0|				} else {
  308|      0|					MB_FAILURE(pos, (next != 0xA0 && next != 0xFF) ? 1 : 2);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |  ------------------
  |  |  |  Branch (55:19): [True: 0, False: 0]
  |  |  |  Branch (55:19): [True: 0, False: 0]
  |  |  ------------------
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  309|      0|				}
  310|      0|				pos += 2;
  311|      0|			} else if (c == 0x8F) {
  ------------------
  |  Branch (311:15): [True: 0, False: 0]
  ------------------
  312|      0|				size_t avail = str_len - pos;
  313|       |
  314|      0|				if (avail < 3 || !(str[pos + 1] >= 0xA1 && str[pos + 1] <= 0xFE) ||
  ------------------
  |  Branch (314:9): [True: 0, False: 0]
  |  Branch (314:24): [True: 0, False: 0]
  |  Branch (314:48): [True: 0, False: 0]
  ------------------
  315|      0|						!(str[pos + 2] >= 0xA1 && str[pos + 2] <= 0xFE)) {
  ------------------
  |  Branch (315:9): [True: 0, False: 0]
  |  Branch (315:33): [True: 0, False: 0]
  ------------------
  316|      0|					if (avail < 2 || (str[pos + 1] != 0xA0 && str[pos + 1] != 0xFF))
  ------------------
  |  Branch (316:10): [True: 0, False: 0]
  |  Branch (316:24): [True: 0, False: 0]
  |  Branch (316:48): [True: 0, False: 0]
  ------------------
  317|      0|						MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  318|      0|					else if (avail < 3 || (str[pos + 2] != 0xA0 && str[pos + 2] != 0xFF))
  ------------------
  |  Branch (318:15): [True: 0, False: 0]
  |  Branch (318:29): [True: 0, False: 0]
  |  Branch (318:53): [True: 0, False: 0]
  ------------------
  319|      0|						MB_FAILURE(pos, 2);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  320|      0|					else
  321|      0|						MB_FAILURE(pos, 3);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  322|      0|				} else {
  323|       |					/* JIS X 0212 hojo-kanji */
  324|      0|					this_char = (c << 16) | (str[pos + 1] << 8) | str[pos + 2];
  325|      0|				}
  326|      0|				pos += 3;
  327|      0|			} else if (c != 0xA0 && c != 0xFF) {
  ------------------
  |  Branch (327:15): [True: 0, False: 0]
  |  Branch (327:28): [True: 0, False: 0]
  ------------------
  328|       |				/* character encoded in 1 code unit */
  329|      0|				this_char = c;
  330|      0|				pos += 1;
  331|      0|			} else {
  332|      0|				MB_FAILURE(pos, 1);
  ------------------
  |  |   54|      0|#define MB_FAILURE(pos, advance) do { \
  |  |   55|      0|	*cursor = pos + (advance); \
  |  |   56|      0|	*status = FAILURE; \
  |  |   57|      0|	return 0; \
  |  |   58|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (58:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  333|      0|			}
  334|      0|		}
  335|      0|		break;
  336|  1.46k|	default:
  ------------------
  |  Branch (336:2): [True: 1.46k, False: 3.05k]
  ------------------
  337|       |		/* single-byte charsets */
  338|  1.46k|		this_char = str[pos++];
  339|  1.46k|		break;
  340|  4.52k|	}
  341|       |
  342|  4.01k|	*cursor = pos;
  343|  4.01k|	return this_char;
  344|  4.52k|}
html.c:determine_charset:
  363|     63|{
  364|     63|	if (!charset_hint || !*charset_hint) {
  ------------------
  |  Branch (364:6): [True: 6, False: 57]
  |  Branch (364:23): [True: 0, False: 57]
  ------------------
  365|      6|		charset_hint = get_default_charset();
  366|      6|	}
  367|       |
  368|     63|	if (charset_hint && *charset_hint) {
  ------------------
  |  Branch (368:6): [True: 63, False: 0]
  |  Branch (368:22): [True: 63, False: 0]
  ------------------
  369|     63|		size_t len = strlen(charset_hint);
  370|       |		/* now walk the charset map and look for the codeset */
  371|  1.53k|		for (size_t i = 0; i < sizeof(charset_map)/sizeof(charset_map[0]); i++) {
  ------------------
  |  Branch (371:22): [True: 1.51k, False: 23]
  ------------------
  372|  1.51k|			if (len == charset_map[i].codeset_len &&
  ------------------
  |  Branch (372:8): [True: 160, False: 1.35k]
  ------------------
  373|    160|			    zend_binary_strcasecmp(charset_hint, len, charset_map[i].codeset, len) == 0) {
  ------------------
  |  Branch (373:8): [True: 40, False: 120]
  ------------------
  374|     40|				return charset_map[i].charset;
  375|     40|			}
  376|  1.51k|		}
  377|       |
  378|     23|		if (!quiet) {
  ------------------
  |  Branch (378:7): [True: 23, False: 0]
  ------------------
  379|     23|			php_error_docref(NULL, E_WARNING, "Charset \"%s\" is not supported, assuming UTF-8",
  ------------------
  |  |   23|     23|#define E_WARNING			(1<<1L)
  ------------------
  380|     23|					charset_hint);
  381|     23|		}
  382|     23|	}
  383|       |
  384|     23|	return cs_utf_8;
  385|     63|}
html.c:get_default_charset:
   76|      6|static char *get_default_charset(void) {
   77|      6|	if (PG(internal_encoding) && PG(internal_encoding)[0]) {
  ------------------
  |  |   29|     12|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 6]
  |  |  ------------------
  ------------------
              	if (PG(internal_encoding) && PG(internal_encoding)[0]) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (77:31): [True: 0, False: 0]
  ------------------
   78|      0|		return PG(internal_encoding);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
   79|      6|	} else if (SG(default_charset) && SG(default_charset)[0] ) {
  ------------------
  |  |  158|     12|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 6, False: 0]
  |  |  ------------------
  ------------------
              	} else if (SG(default_charset) && SG(default_charset)[0] ) {
  ------------------
  |  |  158|      6|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (79:36): [True: 6, False: 0]
  ------------------
   80|      6|		return SG(default_charset);
  ------------------
  |  |  158|      6|# define SG(v) (sapi_globals.v)
  ------------------
   81|      6|	}
   82|      0|	return NULL;
   83|      6|}
html.c:unescape_inverse_map:
  957|      1|{
  958|      1|	int document_type = flags & ENT_HTML_DOC_TYPE_MASK;
  ------------------
  |  |   23|      1|#define ENT_HTML_DOC_TYPE_MASK		(16|32)
  ------------------
  959|       |
  960|      1|	if (all) {
  ------------------
  |  Branch (960:6): [True: 1, False: 0]
  ------------------
  961|      1|		switch (document_type) {
  962|      1|		case ENT_HTML_DOC_HTML401:
  ------------------
  |  |   24|      1|#define ENT_HTML_DOC_HTML401		0
  ------------------
  |  Branch (962:3): [True: 1, False: 0]
  ------------------
  963|      1|		case ENT_HTML_DOC_XHTML: /* but watch out for &apos;...*/
  ------------------
  |  |   26|      1|#define ENT_HTML_DOC_XHTML			32
  ------------------
  |  Branch (963:3): [True: 0, False: 1]
  ------------------
  964|      1|			return &ent_ht_html4;
  965|      0|		case ENT_HTML_DOC_HTML5:
  ------------------
  |  |   27|      0|#define ENT_HTML_DOC_HTML5			(16|32)
  ------------------
  |  Branch (965:3): [True: 0, False: 1]
  ------------------
  966|      0|			return &ent_ht_html5;
  967|      0|		default:
  ------------------
  |  Branch (967:3): [True: 0, False: 1]
  ------------------
  968|      0|			return &ent_ht_be_apos;
  969|      1|		}
  970|      1|	} else {
  971|      0|		switch (document_type) {
  972|      0|		case ENT_HTML_DOC_HTML401:
  ------------------
  |  |   24|      0|#define ENT_HTML_DOC_HTML401		0
  ------------------
  |  Branch (972:3): [True: 0, False: 0]
  ------------------
  973|      0|			return &ent_ht_be_noapos;
  974|      0|		default:
  ------------------
  |  Branch (974:3): [True: 0, False: 0]
  ------------------
  975|      0|			return &ent_ht_be_apos;
  976|      0|		}
  977|      0|	}
  978|      1|}
html.c:determine_entity_table:
  985|     63|{
  986|     63|	entity_table_opt retval = {0};
  987|       |
  988|     63|	assert(!(doctype == ENT_HTML_DOC_XML1 && all));
  ------------------
  |  Branch (988:2): [True: 0, False: 63]
  |  Branch (988:2): [True: 0, False: 0]
  |  Branch (988:2): [True: 10, False: 53]
  |  Branch (988:2): [True: 0, False: 10]
  ------------------
  989|       |
  990|     63|	if (all) {
  ------------------
  |  Branch (990:6): [True: 40, False: 23]
  ------------------
  991|     40|		retval.ms_table = (doctype == ENT_HTML_DOC_HTML5) ?
  ------------------
  |  |   27|     40|#define ENT_HTML_DOC_HTML5			(16|32)
  ------------------
  |  Branch (991:21): [True: 13, False: 27]
  ------------------
  992|     27|			entity_ms_table_html5 : entity_ms_table_html4;
  993|     40|	} else {
  994|     23|		retval.table = (doctype == ENT_HTML_DOC_HTML401) ?
  ------------------
  |  |   24|     23|#define ENT_HTML_DOC_HTML401		0
  ------------------
  |  Branch (994:18): [True: 8, False: 15]
  ------------------
  995|     15|			stage3_table_be_noapos_00000 : stage3_table_be_apos_00000;
  996|     23|	}
  997|     63|	return retval;
  998|     63|}
html.c:map_to_unicode:
  575|  1.26k|{
  576|       |	/* only single byte encodings are currently supported; assumed code <= 0xFF */
  577|  1.26k|	*res = table->inner[ENT_ENC_TO_UNI_STAGE1(code)]->uni_cp[ENT_ENC_TO_UNI_STAGE2(code)];
  ------------------
  |  |   89|  1.26k|#define ENT_ENC_TO_UNI_STAGE1(k) ((k & 0xC0) >> 6)
  ------------------
              	*res = table->inner[ENT_ENC_TO_UNI_STAGE1(code)]->uni_cp[ENT_ENC_TO_UNI_STAGE2(code)];
  ------------------
  |  |   91|  1.26k|#define ENT_ENC_TO_UNI_STAGE2(k) ((k) & 0x3F)
  ------------------
  578|  1.26k|}
html.c:find_entity_for_char:
 1057|  2.34k|{
 1058|  2.34k|	unsigned stage1_idx = ENT_STAGE1_INDEX(k);
  ------------------
  |  | 1086|  2.34k|#define ENT_STAGE1_INDEX(k) (((k) & 0xFFF000) >> 12) /* > 1D, we have no mapping */
  ------------------
 1059|  2.34k|	const entity_stage3_row *c;
 1060|       |
 1061|  2.34k|	if (stage1_idx > 0x1D) {
  ------------------
  |  Branch (1061:6): [True: 0, False: 2.34k]
  ------------------
 1062|      0|		*entity     = NULL;
 1063|      0|		*entity_len = 0;
 1064|      0|		return;
 1065|      0|	}
 1066|       |
 1067|  2.34k|	c = &table[stage1_idx][ENT_STAGE2_INDEX(k)][ENT_STAGE3_INDEX(k)];
  ------------------
  |  | 1087|  2.34k|#define ENT_STAGE2_INDEX(k) (((k) & 0xFC0) >> 6)
  ------------------
              	c = &table[stage1_idx][ENT_STAGE2_INDEX(k)][ENT_STAGE3_INDEX(k)];
  ------------------
  |  | 1088|  2.34k|#define ENT_STAGE3_INDEX(k) ((k) & 0x3F)
  ------------------
 1068|       |
 1069|  2.34k|	if (!c->ambiguous) {
  ------------------
  |  Branch (1069:6): [True: 2.34k, False: 4]
  ------------------
 1070|  2.34k|		*entity     = (const unsigned char *)c->data.ent.entity;
 1071|  2.34k|		*entity_len = c->data.ent.entity_len;
 1072|  2.34k|	} else {
 1073|       |		/* peek at next char */
 1074|      4|		size_t cursor_before = *cursor;
 1075|      4|		zend_result status = SUCCESS;
 1076|      4|		unsigned next_char;
 1077|       |
 1078|      4|		if (!(*cursor < oldlen))
  ------------------
  |  Branch (1078:7): [True: 0, False: 4]
  ------------------
 1079|      0|			goto no_suitable_2nd;
 1080|       |
 1081|      4|		next_char = get_next_char(charset, old, oldlen, cursor, &status);
 1082|       |
 1083|      4|		if (status == FAILURE)
  ------------------
  |  Branch (1083:7): [True: 2, False: 2]
  ------------------
 1084|      2|			goto no_suitable_2nd;
 1085|       |
 1086|      2|		{
 1087|      2|			const entity_multicodepoint_row *s, *e;
 1088|       |
 1089|      2|			s = &c->data.multicodepoint_table[1];
 1090|      2|			e = s - 1 + c->data.multicodepoint_table[0].leading_entry.size;
 1091|       |			/* we could do a binary search but it's not worth it since we have
 1092|       |			 * at most two entries... */
 1093|      4|			for ( ; s <= e; s++) {
  ------------------
  |  Branch (1093:12): [True: 2, False: 2]
  ------------------
 1094|      2|				if (s->normal_entry.second_cp == next_char) {
  ------------------
  |  Branch (1094:9): [True: 0, False: 2]
  ------------------
 1095|      0|					*entity     = (const unsigned char *) s->normal_entry.entity;
 1096|      0|					*entity_len = s->normal_entry.entity_len;
 1097|      0|					return;
 1098|      0|				}
 1099|      2|			}
 1100|      2|		}
 1101|      4|no_suitable_2nd:
 1102|      4|		*cursor = cursor_before;
 1103|      4|		*entity = (const unsigned char *)
 1104|      4|			c->data.multicodepoint_table[0].leading_entry.default_entity;
 1105|      4|		*entity_len = c->data.multicodepoint_table[0].leading_entry.default_entity_len;
 1106|      4|	}
 1107|  2.34k|}
html.c:find_entity_for_char_basic:
 1116|  1.60k|{
 1117|  1.60k|	if (k >= 64U) {
  ------------------
  |  Branch (1117:6): [True: 979, False: 626]
  ------------------
 1118|    979|		*entity     = NULL;
 1119|    979|		*entity_len = 0;
 1120|    979|		return;
 1121|    979|	}
 1122|       |
 1123|    626|	*entity     = (const unsigned char *) table[k].data.ent.entity;
 1124|    626|	*entity_len = table[k].data.ent.entity_len;
 1125|    626|}
html.c:unicode_cp_is_allowed:
  583|  2.30k|{
  584|       |	/* XML 1.0				HTML 4.01			HTML 5
  585|       |	 * 0x09..0x0A			0x09..0x0A			0x09..0x0A
  586|       |	 * 0x0D					0x0D				0x0C..0x0D
  587|       |	 * 0x0020..0xD7FF		0x20..0x7E			0x20..0x7E
  588|       |	 *						0x00A0..0xD7FF		0x00A0..0xD7FF
  589|       |	 * 0xE000..0xFFFD		0xE000..0x10FFFF	0xE000..0xFDCF
  590|       |	 * 0x010000..0x10FFFF						0xFDF0..0x10FFFF (*)
  591|       |	 *
  592|       |	 * (*) exclude code points where ((code & 0xFFFF) >= 0xFFFE)
  593|       |	 *
  594|       |	 * References:
  595|       |	 * XML 1.0:   <http://www.w3.org/TR/REC-xml/#charsets>
  596|       |	 * HTML 4.01: <http://www.w3.org/TR/1999/PR-html40-19990824/sgml/sgmldecl.html>
  597|       |	 * HTML 5:    <http://dev.w3.org/html5/spec/Overview.html#preprocessing-the-input-stream>
  598|       |	 *
  599|       |	 * Not sure this is the relevant part for HTML 5, though. I opted to
  600|       |	 * disallow the characters that would result in a parse error when
  601|       |	 * preprocessing of the input stream. See also section 8.1.3.
  602|       |	 *
  603|       |	 * It's unclear if XHTML 1.0 allows C1 characters. I'll opt to apply to
  604|       |	 * XHTML 1.0 the same rules as for XML 1.0.
  605|       |	 * See <http://cmsmcq.com/2007/C1.xml>.
  606|       |	 */
  607|       |
  608|  2.30k|	switch (document_type) {
  609|    857|	case ENT_HTML_DOC_HTML401:
  ------------------
  |  |   24|    857|#define ENT_HTML_DOC_HTML401		0
  ------------------
  |  Branch (609:2): [True: 857, False: 1.44k]
  ------------------
  610|    857|		return (uni_cp >= 0x20 && uni_cp <= 0x7E) ||
  ------------------
  |  Branch (610:11): [True: 535, False: 322]
  |  Branch (610:29): [True: 507, False: 28]
  ------------------
  611|    350|			(uni_cp == 0x0A || uni_cp == 0x09 || uni_cp == 0x0D) ||
  ------------------
  |  Branch (611:5): [True: 32, False: 318]
  |  Branch (611:23): [True: 22, False: 296]
  |  Branch (611:41): [True: 23, False: 273]
  ------------------
  612|    273|			(uni_cp >= 0xA0 && uni_cp <= 0xD7FF) ||
  ------------------
  |  Branch (612:5): [True: 28, False: 245]
  |  Branch (612:23): [True: 28, False: 0]
  ------------------
  613|    245|			(uni_cp >= 0xE000 && uni_cp <= 0x10FFFF);
  ------------------
  |  Branch (613:5): [True: 0, False: 245]
  |  Branch (613:25): [True: 0, False: 0]
  ------------------
  614|    734|	case ENT_HTML_DOC_HTML5:
  ------------------
  |  |   27|    734|#define ENT_HTML_DOC_HTML5			(16|32)
  ------------------
  |  Branch (614:2): [True: 734, False: 1.56k]
  ------------------
  615|    734|		return (uni_cp >= 0x20 && uni_cp <= 0x7E) ||
  ------------------
  |  Branch (615:11): [True: 297, False: 437]
  |  Branch (615:29): [True: 279, False: 18]
  ------------------
  616|    455|			(uni_cp >= 0x09 && uni_cp <= 0x0D && uni_cp != 0x0B) || /* form feed U+0C allowed */
  ------------------
  |  Branch (616:5): [True: 146, False: 309]
  |  Branch (616:23): [True: 34, False: 112]
  |  Branch (616:41): [True: 32, False: 2]
  ------------------
  617|    423|			(uni_cp >= 0xA0 && uni_cp <= 0xD7FF) ||
  ------------------
  |  Branch (617:5): [True: 16, False: 407]
  |  Branch (617:23): [True: 16, False: 0]
  ------------------
  618|    407|			(uni_cp >= 0xE000 && uni_cp <= 0x10FFFF &&
  ------------------
  |  Branch (618:5): [True: 0, False: 407]
  |  Branch (618:25): [True: 0, False: 0]
  ------------------
  619|      0|				((uni_cp & 0xFFFF) < 0xFFFE) && /* last two of each plane (nonchars) disallowed */
  ------------------
  |  Branch (619:5): [True: 0, False: 0]
  ------------------
  620|      0|				(uni_cp < 0xFDD0 || uni_cp > 0xFDEF)); /* U+FDD0-U+FDEF (nonchars) disallowed */
  ------------------
  |  Branch (620:6): [True: 0, False: 0]
  |  Branch (620:25): [True: 0, False: 0]
  ------------------
  621|    489|	case ENT_HTML_DOC_XHTML:
  ------------------
  |  |   26|    489|#define ENT_HTML_DOC_XHTML			32
  ------------------
  |  Branch (621:2): [True: 489, False: 1.81k]
  ------------------
  622|    710|	case ENT_HTML_DOC_XML1:
  ------------------
  |  |   25|    710|#define ENT_HTML_DOC_XML1			16
  ------------------
  |  Branch (622:2): [True: 221, False: 2.08k]
  ------------------
  623|    710|		return (uni_cp >= 0x20 && uni_cp <= 0xD7FF) ||
  ------------------
  |  Branch (623:11): [True: 324, False: 386]
  |  Branch (623:29): [True: 323, False: 1]
  ------------------
  624|    387|			(uni_cp == 0x0A || uni_cp == 0x09 || uni_cp == 0x0D) ||
  ------------------
  |  Branch (624:5): [True: 29, False: 358]
  |  Branch (624:23): [True: 3, False: 355]
  |  Branch (624:41): [True: 29, False: 326]
  ------------------
  625|    326|			(uni_cp >= 0xE000 && uni_cp <= 0x10FFFF && uni_cp != 0xFFFE && uni_cp != 0xFFFF);
  ------------------
  |  Branch (625:5): [True: 1, False: 325]
  |  Branch (625:25): [True: 1, False: 0]
  |  Branch (625:47): [True: 1, False: 0]
  |  Branch (625:67): [True: 1, False: 0]
  ------------------
  626|      0|	default:
  ------------------
  |  Branch (626:2): [True: 0, False: 2.30k]
  ------------------
  627|      0|		return 1;
  628|  2.30k|	}
  629|  2.30k|}
html.c:process_named_entity_html:
  705|      1|{
  706|      1|	*start = *buf;
  707|       |
  708|       |	/* "&" is represented by a 0x26 in all supported encodings. That means
  709|       |	 * the byte after represents a character or is the leading byte of a
  710|       |	 * sequence of 8-bit code units. If in the ranges below, it represents
  711|       |	 * necessarily an alpha character because none of the supported encodings
  712|       |	 * has an overlap with ASCII in the leading byte (only on the second one) */
  713|      3|	while ((**buf >= 'a' && **buf <= 'z') ||
  ------------------
  |  Branch (713:10): [True: 2, False: 1]
  |  Branch (713:26): [True: 2, False: 0]
  ------------------
  714|      1|			(**buf >= 'A' && **buf <= 'Z') ||
  ------------------
  |  Branch (714:5): [True: 0, False: 1]
  |  Branch (714:21): [True: 0, False: 0]
  ------------------
  715|      2|			(**buf >= '0' && **buf <= '9')) {
  ------------------
  |  Branch (715:5): [True: 1, False: 0]
  |  Branch (715:21): [True: 0, False: 1]
  ------------------
  716|      2|		(*buf)++;
  717|      2|	}
  718|       |
  719|      1|	if (**buf != ';')
  ------------------
  |  Branch (719:6): [True: 0, False: 1]
  ------------------
  720|      0|		return FAILURE;
  721|       |
  722|       |	/* cast to size_t OK as the quantity is always non-negative */
  723|      1|	*length = *buf - *start;
  724|       |
  725|      1|	if (*length == 0)
  ------------------
  |  Branch (725:6): [True: 0, False: 1]
  ------------------
  726|      0|		return FAILURE;
  727|       |
  728|      1|	return SUCCESS;
  729|      1|}
html.c:resolve_named_entity_html:
  734|      1|{
  735|      1|	const entity_cp_map *s;
  736|      1|	zend_ulong hash = zend_inline_hash_func(start, length);
  737|       |
  738|      1|	s = ht->buckets[hash % ht->num_elems];
  739|      1|	while (s->entity) {
  ------------------
  |  Branch (739:9): [True: 1, False: 0]
  ------------------
  740|      1|		if (s->entity_len == length) {
  ------------------
  |  Branch (740:7): [True: 1, False: 0]
  ------------------
  741|      1|			if (memcmp(start, s->entity, length) == 0) {
  ------------------
  |  Branch (741:8): [True: 1, False: 0]
  ------------------
  742|      1|				*uni_cp1 = s->codepoint1;
  743|      1|				*uni_cp2 = s->codepoint2;
  744|      1|				return SUCCESS;
  745|      1|			}
  746|      1|		}
  747|      0|		s++;
  748|      0|	}
  749|      0|	return FAILURE;
  750|      1|}
html.c:php_html_entities:
 1343|     64|{
 1344|     64|	zend_string *str, *hint_charset = NULL;
 1345|     64|	zend_long flags = ENT_QUOTES|ENT_SUBSTITUTE;
  ------------------
  |  |   35|     64|#define ENT_QUOTES		(ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE)
  |  |  ------------------
  |  |  |  |   20|     64|#define ENT_HTML_QUOTE_DOUBLE		2
  |  |  ------------------
  |  |               #define ENT_QUOTES		(ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE)
  |  |  ------------------
  |  |  |  |   19|     64|#define ENT_HTML_QUOTE_SINGLE		1
  |  |  ------------------
  ------------------
              	zend_long flags = ENT_QUOTES|ENT_SUBSTITUTE;
  ------------------
  |  |   38|     64|#define ENT_SUBSTITUTE	ENT_HTML_SUBSTITUTE_ERRORS
  |  |  ------------------
  |  |  |  |   22|     64|#define ENT_HTML_SUBSTITUTE_ERRORS	8
  |  |  ------------------
  ------------------
 1346|     64|	zend_string *replaced;
 1347|     64|	bool double_encode = 1;
 1348|       |
 1349|    192|	ZEND_PARSE_PARAMETERS_START(1, 4)
  ------------------
  |  | 1629|     64|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     64|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     64|		const int _flags = (flags); \
  |  |  |  | 1599|     64|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     64|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     64|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     64|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     64|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     64|		uint32_t _i = 0; \
  |  |  |  | 1603|     64|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     64|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     64|		char *_error = NULL; \
  |  |  |  | 1606|     64|		bool _dummy = 0; \
  |  |  |  | 1607|     64|		bool _optional = 0; \
  |  |  |  | 1608|     64|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     64|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     64|		((void)_i); \
  |  |  |  | 1610|     64|		((void)_real_arg); \
  |  |  |  | 1611|     64|		((void)_arg); \
  |  |  |  | 1612|     64|		((void)_expected_type); \
  |  |  |  | 1613|     64|		((void)_error); \
  |  |  |  | 1614|     64|		((void)_optional); \
  |  |  |  | 1615|     64|		((void)_dummy); \
  |  |  |  | 1616|     64|		\
  |  |  |  | 1617|     64|		do { \
  |  |  |  | 1618|     64|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    128|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     64|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     64|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     64|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     64|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     64|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1350|    256|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|     64|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     64|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     64|	++_i; \
  |  |  |  |  |  | 1654|     64|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     64|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     64|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     64|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     64|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     64|	_real_arg++; \
  |  |  |  |  |  | 1660|     64|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     64|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     64|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     64|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1350:3): [True: 64, False: 0]
  |  Branch (1350:3): [True: 0, False: 0]
  |  Branch (1350:3): [True: 64, False: 0]
  |  Branch (1350:3): [True: 0, False: 0]
  |  Branch (1350:3): [True: 64, False: 0]
  |  Branch (1350:3): [True: 0, False: 0]
  |  Branch (1350:3): [True: 0, False: 64]
  |  Branch (1350:3): [True: 64, False: 0]
  |  Branch (1350:3): [True: 0, False: 0]
  |  Branch (1350:3): [True: 0, False: 0]
  ------------------
 1351|     64|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     64|	_optional = 1;
  ------------------
 1352|    254|		Z_PARAM_LONG(flags)
  ------------------
  |  | 1905|     64|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|     64|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     64|	++_i; \
  |  |  |  |  |  | 1654|     64|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     64|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     64|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     64|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     64|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 64, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     64|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 63]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     64|	} \
  |  |  |  |  |  | 1659|     64|	_real_arg++; \
  |  |  |  |  |  | 1660|     63|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     63|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 63]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     63|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 63]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|     63|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     63|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      1|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1900|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      1|			break; \
  |  |  |  | 1902|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (1352:3): [True: 64, False: 0]
  |  Branch (1352:3): [True: 0, False: 0]
  |  Branch (1352:3): [True: 0, False: 64]
  |  Branch (1352:3): [True: 64, False: 0]
  |  Branch (1352:3): [True: 64, False: 0]
  |  Branch (1352:3): [True: 0, False: 0]
  |  Branch (1352:3): [True: 64, False: 0]
  |  Branch (1352:3): [True: 0, False: 0]
  |  Branch (1352:3): [True: 0, False: 0]
  |  Branch (1352:3): [True: 0, False: 0]
  ------------------
 1353|    302|		Z_PARAM_STR_OR_NULL(hint_charset)
  ------------------
  |  | 2105|     63|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|     62|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     62|	++_i; \
  |  |  |  |  |  | 1654|     62|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     62|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     62|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     62|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     62|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     62|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 58]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     62|	} \
  |  |  |  |  |  | 1659|     62|	_real_arg++; \
  |  |  |  |  |  | 1660|     58|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     58|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 58]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     58|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 58]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     58|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     58|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 58]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1353:3): [True: 62, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 0, False: 62]
  |  Branch (1353:3): [True: 62, False: 0]
  |  Branch (1353:3): [True: 62, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 62, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  |  Branch (1353:3): [True: 0, False: 0]
  ------------------
 1354|    204|		Z_PARAM_BOOL(double_encode);
  ------------------
  |  | 1735|     58|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|     58|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     58|	++_i; \
  |  |  |  |  |  | 1654|     58|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     58|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     58|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     58|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     58|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 58, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|     58|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     58|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 43, False: 15]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|     58|	} \
  |  |  |  |  |  | 1659|     58|	_real_arg++; \
  |  |  |  |  |  | 1660|     15|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     15|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     15|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|     15|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     15|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1354:3): [True: 58, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 0, False: 58]
  |  Branch (1354:3): [True: 58, False: 0]
  |  Branch (1354:3): [True: 58, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 58, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  |  Branch (1354:3): [True: 0, False: 0]
  ------------------
 1355|     64|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     15|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     15|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     15|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     15|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  |  | 1641|     64|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     64|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 63]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     64|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 63]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1355:2): [True: 15, False: 0]
  |  Branch (1355:2): [True: 0, False: 0]
  |  Branch (1355:2): [True: 15, False: 0]
  |  Branch (1355:2): [True: 0, False: 0]
  ------------------
 1356|       |
 1357|     63|	if (ZSTR_LEN(str) == 0) {
  ------------------
  |  |   68|     63|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1357:6): [True: 0, False: 63]
  ------------------
 1358|      0|		RETURN_EMPTY_STRING();
  ------------------
  |  | 1058|      0|#define RETURN_EMPTY_STRING() 			do { RETVAL_EMPTY_STRING(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1032|      0|#define RETVAL_EMPTY_STRING()			ZVAL_EMPTY_STRING(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1058:79): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1359|      0|	}
 1360|     63|	replaced = php_escape_html_entities_ex(
 1361|     63|		(unsigned char*)ZSTR_VAL(str), ZSTR_LEN(str), all, (int) flags,
  ------------------
  |  |   67|     63|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		(unsigned char*)ZSTR_VAL(str), ZSTR_LEN(str), all, (int) flags,
  ------------------
  |  |   68|     63|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1362|     63|		hint_charset ? ZSTR_VAL(hint_charset) : NULL, double_encode, /* quiet */ 0);
  ------------------
  |  |   67|     57|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1362:3): [True: 57, False: 6]
  ------------------
 1363|     63|	RETVAL_STR(replaced);
  ------------------
  |  | 1024|     63|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1088|     63|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|     63|		zval *__z = (z);						\
  |  |  |  | 1090|     63|		zend_string *__s = (s);					\
  |  |  |  | 1091|     63|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     63|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     63|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|     63|		/* interned strings support */			\
  |  |  |  | 1093|     63|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     63|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     63|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 9, False: 54]
  |  |  |  |  ------------------
  |  |  |  | 1094|     63|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      9|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      9|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|     63|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|    117|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     54|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     54|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     54|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|     63|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 63]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1364|     63|}

php_is_image_avif:
 1206|     16|bool php_is_image_avif(php_stream* stream) {
 1207|     16|	struct php_avif_stream avif_stream;
 1208|     16|	avif_stream.stream = stream;
 1209|       |
 1210|     16|	return AvifInfoIdentifyStream(&avif_stream, php_avif_stream_read, php_avif_stream_skip) == kAvifInfoOk;
 1211|     16|}
php_image_type_to_mime_type:
 1216|      3|{
 1217|      3|	switch( image_type) {
 1218|      0|		case IMAGE_FILETYPE_GIF:
  ------------------
  |  Branch (1218:3): [True: 0, False: 3]
  ------------------
 1219|      0|			return "image/gif";
 1220|      0|		case IMAGE_FILETYPE_JPEG:
  ------------------
  |  Branch (1220:3): [True: 0, False: 3]
  ------------------
 1221|      0|			return "image/jpeg";
 1222|      0|		case IMAGE_FILETYPE_PNG:
  ------------------
  |  Branch (1222:3): [True: 0, False: 3]
  ------------------
 1223|      0|			return "image/png";
 1224|      0|		case IMAGE_FILETYPE_SWF:
  ------------------
  |  Branch (1224:3): [True: 0, False: 3]
  ------------------
 1225|      0|		case IMAGE_FILETYPE_SWC:
  ------------------
  |  Branch (1225:3): [True: 0, False: 3]
  ------------------
 1226|      0|			return "application/x-shockwave-flash";
 1227|      0|		case IMAGE_FILETYPE_PSD:
  ------------------
  |  Branch (1227:3): [True: 0, False: 3]
  ------------------
 1228|      0|			return "image/psd";
 1229|      0|		case IMAGE_FILETYPE_BMP:
  ------------------
  |  Branch (1229:3): [True: 0, False: 3]
  ------------------
 1230|      0|			return "image/bmp";
 1231|      0|		case IMAGE_FILETYPE_TIFF_II:
  ------------------
  |  Branch (1231:3): [True: 0, False: 3]
  ------------------
 1232|      0|		case IMAGE_FILETYPE_TIFF_MM:
  ------------------
  |  Branch (1232:3): [True: 0, False: 3]
  ------------------
 1233|      0|			return "image/tiff";
 1234|      0|		case IMAGE_FILETYPE_IFF:
  ------------------
  |  Branch (1234:3): [True: 0, False: 3]
  ------------------
 1235|      0|			return "image/iff";
 1236|      3|		case IMAGE_FILETYPE_WBMP:
  ------------------
  |  Branch (1236:3): [True: 3, False: 0]
  ------------------
 1237|      3|			return "image/vnd.wap.wbmp";
 1238|      0|		case IMAGE_FILETYPE_JPC:
  ------------------
  |  Branch (1238:3): [True: 0, False: 3]
  ------------------
 1239|      0|			return "application/octet-stream";
 1240|      0|		case IMAGE_FILETYPE_JP2:
  ------------------
  |  Branch (1240:3): [True: 0, False: 3]
  ------------------
 1241|      0|			return "image/jp2";
 1242|      0|		case IMAGE_FILETYPE_XBM:
  ------------------
  |  Branch (1242:3): [True: 0, False: 3]
  ------------------
 1243|      0|			return "image/xbm";
 1244|      0|		case IMAGE_FILETYPE_ICO:
  ------------------
  |  Branch (1244:3): [True: 0, False: 3]
  ------------------
 1245|      0|			return "image/vnd.microsoft.icon";
 1246|      0|		case IMAGE_FILETYPE_WEBP:
  ------------------
  |  Branch (1246:3): [True: 0, False: 3]
  ------------------
 1247|      0|			return "image/webp";
 1248|      0|		case IMAGE_FILETYPE_AVIF:
  ------------------
  |  Branch (1248:3): [True: 0, False: 3]
  ------------------
 1249|      0|			return "image/avif";
 1250|      0|		case IMAGE_FILETYPE_HEIF:
  ------------------
  |  Branch (1250:3): [True: 0, False: 3]
  ------------------
 1251|      0|			return "image/heif";
 1252|      0|		default: {
  ------------------
  |  Branch (1252:3): [True: 0, False: 3]
  ------------------
 1253|      0|			const struct php_image_handler *handler = zend_hash_index_find_ptr(&php_image_handlers, (zend_ulong) image_type);
 1254|      0|			if (handler) {
  ------------------
  |  Branch (1254:8): [True: 0, False: 0]
  ------------------
 1255|      0|				return handler->mime_type;
 1256|      0|			}
 1257|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1258|      0|		}
 1259|      0|		case IMAGE_FILETYPE_UNKNOWN:
  ------------------
  |  Branch (1259:3): [True: 0, False: 3]
  ------------------
 1260|      0|			return "application/octet-stream"; /* suppose binary format */
 1261|      3|	}
 1262|      3|}
php_getimagetype:
 1366|     22|{
 1367|     22|	char tmp[12];
 1368|     22|	int twelve_bytes_read;
 1369|       |
 1370|     22|	if ( !filetype) filetype = tmp;
  ------------------
  |  Branch (1370:7): [True: 22, False: 0]
  ------------------
 1371|     22|	if((php_stream_read(stream, filetype, 3)) != 3) {
  ------------------
  |  |  368|     22|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (1371:5): [True: 0, False: 22]
  ------------------
 1372|      0|		php_error_docref(NULL, E_NOTICE, "Error reading from %s!", input);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1373|      0|		return IMAGE_FILETYPE_UNKNOWN;
 1374|      0|	}
 1375|       |
 1376|       |/* BYTES READ: 3 */
 1377|     22|	if (!memcmp(filetype, php_sig_gif, 3)) {
  ------------------
  |  Branch (1377:6): [True: 0, False: 22]
  ------------------
 1378|      0|		return IMAGE_FILETYPE_GIF;
 1379|     22|	} else if (!memcmp(filetype, php_sig_jpg, 3)) {
  ------------------
  |  Branch (1379:13): [True: 0, False: 22]
  ------------------
 1380|      0|		return IMAGE_FILETYPE_JPEG;
 1381|     22|	} else if (!memcmp(filetype, php_sig_png, 3)) {
  ------------------
  |  Branch (1381:13): [True: 0, False: 22]
  ------------------
 1382|      0|		if (php_stream_read(stream, filetype+3, 5) != 5) {
  ------------------
  |  |  368|      0|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (1382:7): [True: 0, False: 0]
  ------------------
 1383|      0|			php_error_docref(NULL, E_NOTICE, "Error reading from %s!", input);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1384|      0|			return IMAGE_FILETYPE_UNKNOWN;
 1385|      0|		}
 1386|      0|		if (!memcmp(filetype, php_sig_png, 8)) {
  ------------------
  |  Branch (1386:7): [True: 0, False: 0]
  ------------------
 1387|      0|			return IMAGE_FILETYPE_PNG;
 1388|      0|		} else {
 1389|      0|			php_error_docref(NULL, E_WARNING, "PNG file corrupted by ASCII conversion");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1390|      0|			return IMAGE_FILETYPE_UNKNOWN;
 1391|      0|		}
 1392|     22|	} else if (!memcmp(filetype, php_sig_swf, 3)) {
  ------------------
  |  Branch (1392:13): [True: 0, False: 22]
  ------------------
 1393|      0|		return IMAGE_FILETYPE_SWF;
 1394|     22|	} else if (!memcmp(filetype, php_sig_swc, 3)) {
  ------------------
  |  Branch (1394:13): [True: 0, False: 22]
  ------------------
 1395|      0|		return IMAGE_FILETYPE_SWC;
 1396|     22|	} else if (!memcmp(filetype, php_sig_psd, 3)) {
  ------------------
  |  Branch (1396:13): [True: 0, False: 22]
  ------------------
 1397|      0|		return IMAGE_FILETYPE_PSD;
 1398|     22|	} else if (!memcmp(filetype, php_sig_bmp, 2)) {
  ------------------
  |  Branch (1398:13): [True: 0, False: 22]
  ------------------
 1399|      0|		return IMAGE_FILETYPE_BMP;
 1400|     22|	} else if (!memcmp(filetype, php_sig_jpc, 3)) {
  ------------------
  |  Branch (1400:13): [True: 0, False: 22]
  ------------------
 1401|      0|		return IMAGE_FILETYPE_JPC;
 1402|     22|	} else if (!memcmp(filetype, php_sig_riff, 3)) {
  ------------------
  |  Branch (1402:13): [True: 0, False: 22]
  ------------------
 1403|      0|		if (php_stream_read(stream, filetype+3, 9) != 9) {
  ------------------
  |  |  368|      0|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (1403:7): [True: 0, False: 0]
  ------------------
 1404|      0|			php_error_docref(NULL, E_NOTICE, "Error reading from %s!", input);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1405|      0|			return IMAGE_FILETYPE_UNKNOWN;
 1406|      0|		}
 1407|      0|		if (!memcmp(filetype+8, php_sig_webp, 4)) {
  ------------------
  |  Branch (1407:7): [True: 0, False: 0]
  ------------------
 1408|      0|			return IMAGE_FILETYPE_WEBP;
 1409|      0|		} else {
 1410|      0|			return IMAGE_FILETYPE_UNKNOWN;
 1411|      0|		}
 1412|      0|	}
 1413|       |
 1414|     22|	if (php_stream_read(stream, filetype+3, 1) != 1) {
  ------------------
  |  |  368|     22|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (1414:6): [True: 0, False: 22]
  ------------------
 1415|      0|		php_error_docref(NULL, E_NOTICE, "Error reading from %s!", input);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1416|      0|		return IMAGE_FILETYPE_UNKNOWN;
 1417|      0|	}
 1418|       |/* BYTES READ: 4 */
 1419|     22|	if (!memcmp(filetype, php_sig_tif_ii, 4)) {
  ------------------
  |  Branch (1419:6): [True: 6, False: 16]
  ------------------
 1420|      6|		return IMAGE_FILETYPE_TIFF_II;
 1421|     16|	} else if (!memcmp(filetype, php_sig_tif_mm, 4)) {
  ------------------
  |  Branch (1421:13): [True: 0, False: 16]
  ------------------
 1422|      0|		return IMAGE_FILETYPE_TIFF_MM;
 1423|     16|	} else if (!memcmp(filetype, php_sig_iff, 4)) {
  ------------------
  |  Branch (1423:13): [True: 0, False: 16]
  ------------------
 1424|      0|		return IMAGE_FILETYPE_IFF;
 1425|     16|	} else if (!memcmp(filetype, php_sig_ico, 4)) {
  ------------------
  |  Branch (1425:13): [True: 0, False: 16]
  ------------------
 1426|      0|		return IMAGE_FILETYPE_ICO;
 1427|      0|	}
 1428|       |
 1429|       |	/* WBMP may be smaller than 12 bytes, so delay error */
 1430|     16|	twelve_bytes_read = (php_stream_read(stream, filetype+4, 8) == 8);
  ------------------
  |  |  368|     16|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
 1431|       |
 1432|       |/* BYTES READ: 12 */
 1433|     16|	if (twelve_bytes_read && !memcmp(filetype, php_sig_jp2, 12)) {
  ------------------
  |  Branch (1433:6): [True: 15, False: 1]
  |  Branch (1433:27): [True: 0, False: 15]
  ------------------
 1434|      0|		return IMAGE_FILETYPE_JP2;
 1435|      0|	}
 1436|       |
 1437|     16|	if (!php_stream_rewind(stream) && php_is_image_avif(stream)) {
  ------------------
  |  |  361|     32|#define php_stream_rewind(stream)	_php_stream_seek((stream), 0L, SEEK_SET)
  ------------------
  |  Branch (1437:6): [True: 16, False: 0]
  |  Branch (1437:36): [True: 0, False: 16]
  ------------------
 1438|      0|		return IMAGE_FILETYPE_AVIF;
 1439|      0|	}
 1440|       |
 1441|       |	/* See GH-20201: this needs to be after avif checks to avoid identifying avif as heif. */
 1442|     16|	if (twelve_bytes_read && !memcmp(filetype + 4, php_sig_ftyp, 4) &&
  ------------------
  |  Branch (1442:6): [True: 15, False: 1]
  |  Branch (1442:27): [True: 6, False: 9]
  ------------------
 1443|      6|		(!memcmp(filetype + 8, php_sig_mif1, 4) || !memcmp(filetype + 8, php_sig_heic, 4) || !memcmp(filetype + 8, php_sig_heix, 4))) {
  ------------------
  |  Branch (1443:4): [True: 0, False: 6]
  |  Branch (1443:46): [True: 0, False: 6]
  |  Branch (1443:88): [True: 0, False: 6]
  ------------------
 1444|      0|		return IMAGE_FILETYPE_HEIF;
 1445|      0|	}
 1446|       |
 1447|       |/* AFTER ALL ABOVE FAILED */
 1448|     16|	if (php_get_wbmp(stream, NULL, 1)) {
  ------------------
  |  Branch (1448:6): [True: 3, False: 13]
  ------------------
 1449|      3|		return IMAGE_FILETYPE_WBMP;
 1450|      3|	}
 1451|       |
 1452|     13|	if (!twelve_bytes_read) {
  ------------------
  |  Branch (1452:6): [True: 1, False: 12]
  ------------------
 1453|      1|		php_error_docref(NULL, E_NOTICE, "Error reading from %s!", input);
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
 1454|      1|		return IMAGE_FILETYPE_UNKNOWN;
 1455|      1|	}
 1456|       |
 1457|     12|	if (php_get_xbm(stream, NULL)) {
  ------------------
  |  Branch (1457:6): [True: 0, False: 12]
  ------------------
 1458|      0|		return IMAGE_FILETYPE_XBM;
 1459|      0|	}
 1460|       |
 1461|     12|	zend_ulong h;
 1462|     12|	zval *zv;
 1463|     12|	ZEND_HASH_FOREACH_NUM_KEY_VAL(&php_image_handlers, h, zv) {
  ------------------
  |  | 1171|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     12|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     12|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     12|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     12|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     12|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     12|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     12|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     12|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     12|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     12|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     12|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     12|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     12|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1172|      0|	_h = __h; \
  |  | 1173|      0|	_val = _z;
  ------------------
 1464|     12|		const struct php_image_handler *handler = Z_PTR_P(zv);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
 1465|     12|		if (handler->identify(stream) == SUCCESS) {
  ------------------
  |  Branch (1465:7): [True: 0, False: 0]
  ------------------
 1466|      0|			return (int) h;
 1467|      0|		}
 1468|     12|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1469|       |
 1470|     12|	return IMAGE_FILETYPE_UNKNOWN;
 1471|     12|}
zif_getimagesizefromstring:
 1653|     22|{
 1654|     22|	php_getimagesize_from_any(INTERNAL_FUNCTION_PARAM_PASSTHRU, FROM_DATA);
  ------------------
  |  |  587|     22|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	php_getimagesize_from_any(INTERNAL_FUNCTION_PARAM_PASSTHRU, FROM_DATA);
  ------------------
  |  | 1602|     22|#define FROM_DATA 0
  ------------------
 1655|     22|}
zm_startup_image:
 1659|      2|{
 1660|      2|	zend_hash_init(&php_image_handlers, 4, NULL, NULL, true);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1661|      2|	return SUCCESS;
 1662|      2|}
image.c:php_avif_stream_read:
 1149|    203|static const uint8_t* php_avif_stream_read(void* stream, size_t num_bytes) {
 1150|    203|	struct php_avif_stream* avif_stream = (struct php_avif_stream*)stream;
 1151|       |
 1152|    203|	if (avif_stream == NULL || avif_stream->stream == NULL) {
  ------------------
  |  Branch (1152:6): [True: 0, False: 203]
  |  Branch (1152:29): [True: 0, False: 203]
  ------------------
 1153|      0|		return NULL;
 1154|      0|	}
 1155|    203|	if (php_stream_read(avif_stream->stream, (char*)avif_stream->buffer, num_bytes) != num_bytes) {
  ------------------
  |  |  368|    203|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (1155:6): [True: 4, False: 199]
  ------------------
 1156|      4|		avif_stream->stream = NULL; /* fail further calls */
 1157|      4|		return NULL;
 1158|      4|	}
 1159|    199|	return avif_stream->buffer;
 1160|    203|}
image.c:php_get_wbmp:
  915|     19|{
  916|     19|	int i, width = 0, height = 0;
  917|       |
  918|     19|	if (php_stream_rewind(stream)) {
  ------------------
  |  |  361|     19|#define php_stream_rewind(stream)	_php_stream_seek((stream), 0L, SEEK_SET)
  |  |  ------------------
  |  |  |  Branch (361:35): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  919|      0|		return 0;
  920|      0|	}
  921|       |
  922|       |	/* get type */
  923|     19|	if (php_stream_getc(stream) != 0) {
  ------------------
  |  |  388|     19|#define php_stream_getc(stream)	_php_stream_getc((stream))
  ------------------
  |  Branch (923:6): [True: 8, False: 11]
  ------------------
  924|      8|		return 0;
  925|      8|	}
  926|       |
  927|       |	/* skip header */
  928|     19|	do {
  929|     19|		i = php_stream_getc(stream);
  ------------------
  |  |  388|     19|#define php_stream_getc(stream)	_php_stream_getc((stream))
  ------------------
  930|     19|		if (i < 0) {
  ------------------
  |  Branch (930:7): [True: 0, False: 19]
  ------------------
  931|      0|			return 0;
  932|      0|		}
  933|     19|	} while (i & 0x80);
  ------------------
  |  Branch (933:11): [True: 8, False: 11]
  ------------------
  934|       |
  935|       |	/* get width */
  936|     11|	do {
  937|     11|		i = php_stream_getc(stream);
  ------------------
  |  |  388|     11|#define php_stream_getc(stream)	_php_stream_getc((stream))
  ------------------
  938|     11|		if (i < 0) {
  ------------------
  |  Branch (938:7): [True: 0, False: 11]
  ------------------
  939|      0|			return 0;
  940|      0|		}
  941|     11|		width = (width << 7) | (i & 0x7f);
  942|       |		/* maximum valid width for wbmp (although 127 may be a more accurate one) */
  943|     11|		if (width > 2048) {
  ------------------
  |  Branch (943:7): [True: 0, False: 11]
  ------------------
  944|      0|			return 0;
  945|      0|		}
  946|     11|	} while (i & 0x80);
  ------------------
  |  Branch (946:11): [True: 0, False: 11]
  ------------------
  947|       |
  948|       |	/* get height */
  949|     12|	do {
  950|     12|		i = php_stream_getc(stream);
  ------------------
  |  |  388|     12|#define php_stream_getc(stream)	_php_stream_getc((stream))
  ------------------
  951|     12|		if (i < 0) {
  ------------------
  |  Branch (951:7): [True: 0, False: 12]
  ------------------
  952|      0|			return 0;
  953|      0|		}
  954|     12|		height = (height << 7) | (i & 0x7f);
  955|       |		/* maximum valid height for wbmp (although 127 may be a more accurate one) */
  956|     12|		if (height > 2048) {
  ------------------
  |  Branch (956:7): [True: 0, False: 12]
  ------------------
  957|      0|			return 0;
  958|      0|		}
  959|     12|	} while (i & 0x80);
  ------------------
  |  Branch (959:11): [True: 1, False: 11]
  ------------------
  960|       |
  961|     11|	if (!height || !width) {
  ------------------
  |  Branch (961:6): [True: 1, False: 10]
  |  Branch (961:17): [True: 4, False: 6]
  ------------------
  962|      5|		return 0;
  963|      5|	}
  964|       |
  965|      6|	if (!check) {
  ------------------
  |  Branch (965:6): [True: 3, False: 3]
  ------------------
  966|      3|		(*result)->width = width;
  967|      3|		(*result)->height = height;
  968|      3|	}
  969|       |
  970|      6|	return IMAGE_FILETYPE_WBMP;
  971|     11|}
image.c:php_get_xbm:
  990|     12|{
  991|     12|	char *fline;
  992|     12|	char *iname;
  993|     12|	char *type;
  994|     12|	int value;
  995|     12|	unsigned int width = 0, height = 0;
  996|       |
  997|     12|	if (result) {
  ------------------
  |  Branch (997:6): [True: 0, False: 12]
  ------------------
  998|      0|		*result = NULL;
  999|      0|	}
 1000|     12|	if (php_stream_rewind(stream)) {
  ------------------
  |  |  361|     12|#define php_stream_rewind(stream)	_php_stream_seek((stream), 0L, SEEK_SET)
  |  |  ------------------
  |  |  |  Branch (361:35): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 1001|      0|		return 0;
 1002|      0|	}
 1003|     48|	while ((fline=php_stream_gets(stream, NULL, 0)) != NULL) {
  ------------------
  |  |  400|     48|#define php_stream_gets(stream, buf, maxlen)	_php_stream_get_line((stream), (buf), (maxlen), NULL)
  ------------------
  |  Branch (1003:9): [True: 36, False: 12]
  ------------------
 1004|     36|		iname = estrdup(fline); /* simple way to get necessary buffer of required size */
  ------------------
  |  |  163|     36|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1005|     36|		if (sscanf(fline, "#define %s %d", iname, &value) == 2) {
  ------------------
  |  Branch (1005:7): [True: 0, False: 36]
  ------------------
 1006|      0|			if (!(type = strrchr(iname, '_'))) {
  ------------------
  |  Branch (1006:8): [True: 0, False: 0]
  ------------------
 1007|      0|				type = iname;
 1008|      0|			} else {
 1009|      0|				type++;
 1010|      0|			}
 1011|       |
 1012|      0|			if (!strcmp("width", type)) {
  ------------------
  |  Branch (1012:8): [True: 0, False: 0]
  ------------------
 1013|      0|				width = (unsigned int) value;
 1014|      0|				if (height) {
  ------------------
  |  Branch (1014:9): [True: 0, False: 0]
  ------------------
 1015|      0|					efree(iname);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|      0|					break;
 1017|      0|				}
 1018|      0|			}
 1019|      0|			if (!strcmp("height", type)) {
  ------------------
  |  Branch (1019:8): [True: 0, False: 0]
  ------------------
 1020|      0|				height = (unsigned int) value;
 1021|      0|				if (width) {
  ------------------
  |  Branch (1021:9): [True: 0, False: 0]
  ------------------
 1022|      0|					efree(iname);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1023|      0|					break;
 1024|      0|				}
 1025|      0|			}
 1026|      0|		}
 1027|     36|		efree(fline);
  ------------------
  |  |  154|     36|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1028|     36|		efree(iname);
  ------------------
  |  |  154|     36|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1029|     36|	}
 1030|     12|	if (fline) {
  ------------------
  |  Branch (1030:6): [True: 0, False: 12]
  ------------------
 1031|      0|		efree(fline);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1032|      0|	}
 1033|       |
 1034|     12|	if (width && height) {
  ------------------
  |  Branch (1034:6): [True: 0, False: 12]
  |  Branch (1034:15): [True: 0, False: 0]
  ------------------
 1035|      0|		if (result) {
  ------------------
  |  Branch (1035:7): [True: 0, False: 0]
  ------------------
 1036|      0|			*result = (struct php_gfxinfo *) ecalloc(1, sizeof(struct php_gfxinfo));
  ------------------
  |  |  157|      0|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1037|      0|			(*result)->width = width;
 1038|      0|			(*result)->height = height;
 1039|      0|		}
 1040|      0|		return IMAGE_FILETYPE_XBM;
 1041|      0|	}
 1042|       |
 1043|     12|	return 0;
 1044|     12|}
image.c:php_getimagesize_from_any:
 1605|     22|static void php_getimagesize_from_any(INTERNAL_FUNCTION_PARAMETERS, int mode) {  /* {{{ */
 1606|     22|	zval *info = NULL;
 1607|     22|	php_stream *stream = NULL;
 1608|     22|	zend_string *input;
 1609|     22|	const int argc = ZEND_NUM_ARGS();
  ------------------
  |  |  529|     22|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     22|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     22|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1610|       |
 1611|     66|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     22|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     22|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     22|		const int _flags = (flags); \
  |  |  |  | 1599|     22|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     22|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     22|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     22|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     22|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     22|		uint32_t _i = 0; \
  |  |  |  | 1603|     22|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     22|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     22|		char *_error = NULL; \
  |  |  |  | 1606|     22|		bool _dummy = 0; \
  |  |  |  | 1607|     22|		bool _optional = 0; \
  |  |  |  | 1608|     22|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     22|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     22|		((void)_i); \
  |  |  |  | 1610|     22|		((void)_real_arg); \
  |  |  |  | 1611|     22|		((void)_arg); \
  |  |  |  | 1612|     22|		((void)_expected_type); \
  |  |  |  | 1613|     22|		((void)_error); \
  |  |  |  | 1614|     22|		((void)_optional); \
  |  |  |  | 1615|     22|		((void)_dummy); \
  |  |  |  | 1616|     22|		\
  |  |  |  | 1617|     22|		do { \
  |  |  |  | 1618|     22|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     44|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     22|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     22|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     22|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     22|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     22|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1612|     88|		Z_PARAM_STR(input)
  ------------------
  |  | 2102|     22|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     22|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     22|	++_i; \
  |  |  |  |  |  | 1654|     22|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     22|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     22|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     22|	_real_arg++; \
  |  |  |  |  |  | 1660|     22|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     22|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     22|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     22|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1612:3): [True: 22, False: 0]
  |  Branch (1612:3): [True: 0, False: 0]
  |  Branch (1612:3): [True: 22, False: 0]
  |  Branch (1612:3): [True: 0, False: 0]
  |  Branch (1612:3): [True: 22, False: 0]
  |  Branch (1612:3): [True: 0, False: 0]
  |  Branch (1612:3): [True: 0, False: 22]
  |  Branch (1612:3): [True: 22, False: 0]
  |  Branch (1612:3): [True: 0, False: 0]
  |  Branch (1612:3): [True: 0, False: 0]
  ------------------
 1613|     22|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     22|	_optional = 1;
  ------------------
 1614|     44|		Z_PARAM_ZVAL(info)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     22|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     22|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     22|	++_i; \
  |  |  |  |  |  |  |  | 1654|     22|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     22|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     22|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 22, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|     22|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 22, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|     22|	} \
  |  |  |  |  |  |  |  | 1659|     22|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1614:3): [True: 22, False: 0]
  |  Branch (1614:3): [True: 0, False: 0]
  |  Branch (1614:3): [True: 0, False: 22]
  |  Branch (1614:3): [True: 22, False: 0]
  |  Branch (1614:3): [True: 22, False: 0]
  |  Branch (1614:3): [True: 0, False: 0]
  |  Branch (1614:3): [True: 22, False: 0]
  |  Branch (1614:3): [True: 0, False: 0]
  |  Branch (1614:3): [True: 0, False: 0]
  |  Branch (1614:3): [True: 0, False: 0]
  ------------------
 1615|     44|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     22|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     22|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     22|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1615:2): [True: 0, False: 0]
  |  Branch (1615:2): [True: 0, False: 0]
  |  Branch (1615:2): [True: 0, False: 0]
  |  Branch (1615:2): [True: 0, False: 0]
  ------------------
 1616|       |
 1617|     22|	if (mode == FROM_PATH && zend_str_has_nul_byte(input)) {
  ------------------
  |  | 1603|     44|#define FROM_PATH 1
  ------------------
  |  Branch (1617:6): [True: 0, False: 22]
  |  Branch (1617:27): [True: 0, False: 0]
  ------------------
 1618|      0|		zend_argument_value_error(1, "must not contain any null bytes");
 1619|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1619:3): [True: 0, False: 0]
  |  Branch (1619:3): [True: 0, False: 0]
  ------------------
 1620|      0|	}
 1621|       |
 1622|     22|	if (argc == 2) {
  ------------------
  |  Branch (1622:6): [True: 0, False: 22]
  ------------------
 1623|      0|		info = zend_try_array_init(info);
 1624|      0|		if (!info) {
  ------------------
  |  Branch (1624:7): [True: 0, False: 0]
  ------------------
 1625|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1625:4): [True: 0, False: 0]
  |  Branch (1625:4): [True: 0, False: 0]
  ------------------
 1626|      0|		}
 1627|      0|	}
 1628|       |
 1629|     22|	if (mode == FROM_PATH) {
  ------------------
  |  | 1603|     22|#define FROM_PATH 1
  ------------------
  |  Branch (1629:6): [True: 0, False: 22]
  ------------------
 1630|      0|		stream = php_stream_open_wrapper(ZSTR_VAL(input), "rb", STREAM_MUST_SEEK|REPORT_ERRORS|IGNORE_PATH, NULL);
  ------------------
  |  |  644|      0|#define php_stream_open_wrapper(path, mode, options, opened)	_php_stream_open_wrapper_ex((path), (mode), (options), (opened), NULL STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1631|     22|	} else {
 1632|     22|		stream = php_stream_memory_open(TEMP_STREAM_READONLY, input);
  ------------------
  |  |   29|     22|#define php_stream_memory_open(mode, str) _php_stream_memory_open((mode), (str) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|     22|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|     22|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1633|     22|	}
 1634|       |
 1635|     22|	if (!stream) {
  ------------------
  |  Branch (1635:6): [True: 0, False: 22]
  ------------------
 1636|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1637|      0|	}
 1638|       |
 1639|     22|	php_getimagesize_from_stream(stream, ZSTR_VAL(input), info, INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |   67|     22|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	php_getimagesize_from_stream(stream, ZSTR_VAL(input), info, INTERNAL_FUNCTION_PARAM_PASSTHRU);
  ------------------
  |  |  587|     22|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 1640|     22|	php_stream_close(stream);
  ------------------
  |  |  357|     22|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|     22|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|     22|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|     22|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1641|     22|}
image.c:php_getimagesize_from_stream:
 1475|     22|{
 1476|     22|	int itype = 0;
 1477|     22|	struct php_gfxinfo *result = NULL;
 1478|     22|	const char *mime_type = NULL;
 1479|       |
 1480|     22|	if (!stream) {
  ------------------
  |  Branch (1480:6): [True: 0, False: 22]
  ------------------
 1481|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1482|      0|	}
 1483|       |
 1484|     22|	itype = php_getimagetype(stream, input, NULL);
 1485|     22|	switch( itype) {
 1486|      0|		case IMAGE_FILETYPE_GIF:
  ------------------
  |  Branch (1486:3): [True: 0, False: 22]
  ------------------
 1487|      0|			result = php_handle_gif(stream);
 1488|      0|			break;
 1489|      0|		case IMAGE_FILETYPE_JPEG:
  ------------------
  |  Branch (1489:3): [True: 0, False: 22]
  ------------------
 1490|      0|			if (info) {
  ------------------
  |  Branch (1490:8): [True: 0, False: 0]
  ------------------
 1491|      0|				result = php_handle_jpeg(stream, info);
 1492|      0|			} else {
 1493|      0|				result = php_handle_jpeg(stream, NULL);
 1494|      0|			}
 1495|      0|			break;
 1496|      0|		case IMAGE_FILETYPE_PNG:
  ------------------
  |  Branch (1496:3): [True: 0, False: 22]
  ------------------
 1497|      0|			result = php_handle_png(stream);
 1498|      0|			break;
 1499|      0|		case IMAGE_FILETYPE_SWF:
  ------------------
  |  Branch (1499:3): [True: 0, False: 22]
  ------------------
 1500|      0|			result = php_handle_swf(stream);
 1501|      0|			break;
 1502|      0|		case IMAGE_FILETYPE_SWC:
  ------------------
  |  Branch (1502:3): [True: 0, False: 22]
  ------------------
 1503|       |			/* TODO: with the new php_image_register_handler() APIs, this restriction could be solved */
 1504|       |#if defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB)
 1505|       |			result = php_handle_swc(stream);
 1506|       |#else
 1507|      0|			php_error_docref(NULL, E_NOTICE, "The image is a compressed SWF file, but you do not have a static version of the zlib extension enabled");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1508|      0|#endif
 1509|      0|			break;
 1510|      0|		case IMAGE_FILETYPE_PSD:
  ------------------
  |  Branch (1510:3): [True: 0, False: 22]
  ------------------
 1511|      0|			result = php_handle_psd(stream);
 1512|      0|			break;
 1513|      0|		case IMAGE_FILETYPE_BMP:
  ------------------
  |  Branch (1513:3): [True: 0, False: 22]
  ------------------
 1514|      0|			result = php_handle_bmp(stream);
 1515|      0|			break;
 1516|      6|		case IMAGE_FILETYPE_TIFF_II:
  ------------------
  |  Branch (1516:3): [True: 6, False: 16]
  ------------------
 1517|      6|			result = php_handle_tiff(stream, NULL, 0);
 1518|      6|			break;
 1519|      0|		case IMAGE_FILETYPE_TIFF_MM:
  ------------------
  |  Branch (1519:3): [True: 0, False: 22]
  ------------------
 1520|      0|			result = php_handle_tiff(stream, NULL, 1);
 1521|      0|			break;
 1522|      0|		case IMAGE_FILETYPE_JPC:
  ------------------
  |  Branch (1522:3): [True: 0, False: 22]
  ------------------
 1523|      0|			result = php_handle_jpc(stream);
 1524|      0|			break;
 1525|      0|		case IMAGE_FILETYPE_JP2:
  ------------------
  |  Branch (1525:3): [True: 0, False: 22]
  ------------------
 1526|      0|			result = php_handle_jp2(stream);
 1527|      0|			break;
 1528|      0|		case IMAGE_FILETYPE_IFF:
  ------------------
  |  Branch (1528:3): [True: 0, False: 22]
  ------------------
 1529|      0|			result = php_handle_iff(stream);
 1530|      0|			break;
 1531|      3|		case IMAGE_FILETYPE_WBMP:
  ------------------
  |  Branch (1531:3): [True: 3, False: 19]
  ------------------
 1532|      3|			result = php_handle_wbmp(stream);
 1533|      3|			break;
 1534|      0|		case IMAGE_FILETYPE_XBM:
  ------------------
  |  Branch (1534:3): [True: 0, False: 22]
  ------------------
 1535|      0|			result = php_handle_xbm(stream);
 1536|      0|			break;
 1537|      0|		case IMAGE_FILETYPE_ICO:
  ------------------
  |  Branch (1537:3): [True: 0, False: 22]
  ------------------
 1538|      0|			result = php_handle_ico(stream);
 1539|      0|			break;
 1540|      0|		case IMAGE_FILETYPE_WEBP:
  ------------------
  |  Branch (1540:3): [True: 0, False: 22]
  ------------------
 1541|      0|			result = php_handle_webp(stream);
 1542|      0|			break;
 1543|      0|		case IMAGE_FILETYPE_AVIF:
  ------------------
  |  Branch (1543:3): [True: 0, False: 22]
  ------------------
 1544|      0|			result = php_handle_avif(stream);
 1545|      0|			break;
 1546|      0|		case IMAGE_FILETYPE_HEIF:
  ------------------
  |  Branch (1546:3): [True: 0, False: 22]
  ------------------
 1547|      0|			if (!php_stream_rewind(stream)) {
  ------------------
  |  |  361|      0|#define php_stream_rewind(stream)	_php_stream_seek((stream), 0L, SEEK_SET)
  ------------------
  |  Branch (1547:8): [True: 0, False: 0]
  ------------------
 1548|      0|				result = php_handle_avif(stream);
 1549|      0|			}
 1550|      0|			break;
 1551|      0|		default: {
  ------------------
  |  Branch (1551:3): [True: 0, False: 22]
  ------------------
 1552|      0|			struct php_image_handler* handler = zend_hash_index_find_ptr(&php_image_handlers, (zend_ulong) itype);
 1553|      0|			if (handler) {
  ------------------
  |  Branch (1553:8): [True: 0, False: 0]
  ------------------
 1554|      0|				result = handler->get_info(stream);
 1555|      0|				mime_type = handler->mime_type;
 1556|      0|				break;
 1557|      0|			}
 1558|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1559|      0|		}
 1560|     13|		case IMAGE_FILETYPE_UNKNOWN:
  ------------------
  |  Branch (1560:3): [True: 13, False: 9]
  ------------------
 1561|     13|			break;
 1562|     22|	}
 1563|       |
 1564|     22|	if (result) {
  ------------------
  |  Branch (1564:6): [True: 3, False: 19]
  ------------------
 1565|      3|		array_init(return_value);
 1566|      3|		add_index_long(return_value, 0, result->width);
 1567|      3|		add_index_long(return_value, 1, result->height);
 1568|      3|		add_index_long(return_value, 2, itype);
 1569|      3|		if ((!result->width_unit || zend_string_equals_literal(result->width_unit, "px"))
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1569:8): [True: 3, False: 0]
  ------------------
 1570|      3|			&& (!result->height_unit || zend_string_equals_literal(result->height_unit, "px"))) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1570:8): [True: 3, False: 0]
  ------------------
 1571|      3|			char temp[MAX_LENGTH_OF_LONG * 2 + sizeof("width=\"\" height=\"\"")];
 1572|      3|			snprintf(temp, sizeof(temp), "width=\"%d\" height=\"%d\"", result->width, result->height);
  ------------------
  |  |   97|      3|#define snprintf ap_php_snprintf
  ------------------
 1573|      3|			add_index_string(return_value, 3, temp);
 1574|      3|		}
 1575|       |
 1576|      3|		if (result->bits != 0) {
  ------------------
  |  Branch (1576:7): [True: 0, False: 3]
  ------------------
 1577|      0|			add_assoc_long(return_value, "bits", result->bits);
 1578|      0|		}
 1579|      3|		if (result->channels != 0) {
  ------------------
  |  Branch (1579:7): [True: 0, False: 3]
  ------------------
 1580|      0|			add_assoc_long(return_value, "channels", result->channels);
 1581|      0|		}
 1582|      3|		add_assoc_string(return_value, "mime", mime_type ? mime_type : php_image_type_to_mime_type(itype));
  ------------------
  |  Branch (1582:42): [True: 0, False: 3]
  ------------------
 1583|       |
 1584|      3|		if (result->width_unit) {
  ------------------
  |  Branch (1584:7): [True: 0, False: 3]
  ------------------
 1585|      0|			add_assoc_str(return_value, "width_unit", result->width_unit);
 1586|      3|		} else {
 1587|      3|			add_assoc_string(return_value, "width_unit", "px");
 1588|      3|		}
 1589|      3|		if (result->height_unit) {
  ------------------
  |  Branch (1589:7): [True: 0, False: 3]
  ------------------
 1590|      0|			add_assoc_str(return_value, "height_unit", result->height_unit);
 1591|      3|		} else {
 1592|      3|			add_assoc_string(return_value, "height_unit", "px");
 1593|      3|		}
 1594|       |
 1595|      3|		efree(result);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1596|     19|	} else {
 1597|     19|		RETURN_FALSE;
  ------------------
  |  | 1069|     19|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|     19|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|     19|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|     19|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|     19|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|     19|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1598|     19|	}
 1599|     22|}
image.c:php_handle_tiff:
  774|      6|{
  775|      6|	struct php_gfxinfo *result = NULL;
  776|      6|	int i, num_entries;
  777|      6|	unsigned char *dir_entry;
  778|      6|	size_t ifd_size, dir_size, entry_value, width=0, height=0, ifd_addr;
  779|      6|	int entry_tag , entry_type;
  780|      6|	char *ifd_data, ifd_ptr[4];
  781|       |
  782|      6|	if (php_stream_read(stream, ifd_ptr, 4) != 4)
  ------------------
  |  |  368|      6|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (782:6): [True: 0, False: 6]
  ------------------
  783|      0|		return NULL;
  784|      6|	ifd_addr = php_ifd_get32u(ifd_ptr, motorola_intel);
  785|      6|	if (php_stream_seek(stream, ifd_addr-8, SEEK_CUR))
  ------------------
  |  |  362|      6|#define php_stream_seek(stream, offset, whence)	_php_stream_seek((stream), (offset), (whence))
  |  |  ------------------
  |  |  |  Branch (362:49): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  786|      0|		return NULL;
  787|      6|	ifd_size = 2;
  788|      6|	ifd_data = emalloc(ifd_size);
  ------------------
  |  |  150|      6|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  789|      6|	if (php_stream_read(stream, ifd_data, 2) != 2) {
  ------------------
  |  |  368|      6|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (789:6): [True: 3, False: 3]
  ------------------
  790|      3|		efree(ifd_data);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  791|      3|		return NULL;
  792|      3|	}
  793|      3|	num_entries = php_ifd_get16u(ifd_data, motorola_intel);
  794|      3|	dir_size = 2/*num dir entries*/ +12/*length of entry*/*num_entries +4/* offset to next ifd (points to thumbnail or NULL)*/;
  795|      3|	ifd_size = dir_size;
  796|      3|	ifd_data = erealloc(ifd_data,ifd_size);
  ------------------
  |  |  158|      3|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  797|      3|	if (php_stream_read(stream, ifd_data+2, dir_size-2) != dir_size-2) {
  ------------------
  |  |  368|      3|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (797:6): [True: 1, False: 2]
  ------------------
  798|      1|		efree(ifd_data);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  799|      1|		return NULL;
  800|      1|	}
  801|       |	/* now we have the directory we can look how long it should be */
  802|      2|	ifd_size = dir_size;
  803|      5|	for(i=0;i<num_entries;i++) {
  ------------------
  |  Branch (803:10): [True: 3, False: 2]
  ------------------
  804|      3|		dir_entry 	 = (unsigned char *) ifd_data+2+i*12;
  805|      3|		entry_tag    = php_ifd_get16u(dir_entry+0, motorola_intel);
  806|      3|		entry_type   = php_ifd_get16u(dir_entry+2, motorola_intel);
  807|      3|		switch(entry_type) {
  808|      0|			case TAG_FMT_BYTE:
  ------------------
  |  |  715|      0|#define TAG_FMT_BYTE       1
  ------------------
  |  Branch (808:4): [True: 0, False: 3]
  ------------------
  809|      0|			case TAG_FMT_SBYTE:
  ------------------
  |  |  720|      0|#define TAG_FMT_SBYTE      6
  ------------------
  |  Branch (809:4): [True: 0, False: 3]
  ------------------
  810|      0|				entry_value  = (size_t)(dir_entry[8]);
  811|      0|				break;
  812|      1|			case TAG_FMT_USHORT:
  ------------------
  |  |  717|      1|#define TAG_FMT_USHORT     3
  ------------------
  |  Branch (812:4): [True: 1, False: 2]
  ------------------
  813|      1|				entry_value  = php_ifd_get16u(dir_entry+8, motorola_intel);
  814|      1|				break;
  815|      0|			case TAG_FMT_SSHORT:
  ------------------
  |  |  722|      0|#define TAG_FMT_SSHORT     8
  ------------------
  |  Branch (815:4): [True: 0, False: 3]
  ------------------
  816|      0|				entry_value  = php_ifd_get16s(dir_entry+8, motorola_intel);
  817|      0|				break;
  818|      0|			case TAG_FMT_ULONG:
  ------------------
  |  |  718|      0|#define TAG_FMT_ULONG      4
  ------------------
  |  Branch (818:4): [True: 0, False: 3]
  ------------------
  819|      0|				entry_value  = php_ifd_get32u(dir_entry+8, motorola_intel);
  820|      0|				break;
  821|      0|			case TAG_FMT_SLONG:
  ------------------
  |  |  723|      0|#define TAG_FMT_SLONG      9
  ------------------
  |  Branch (821:4): [True: 0, False: 3]
  ------------------
  822|      0|				entry_value  = php_ifd_get32s(dir_entry+8, motorola_intel);
  823|      0|				break;
  824|      2|			default:
  ------------------
  |  Branch (824:4): [True: 2, False: 1]
  ------------------
  825|      2|				continue;
  826|      3|		}
  827|      1|		switch(entry_tag) {
  ------------------
  |  Branch (827:10): [True: 0, False: 1]
  ------------------
  828|      0|			case TAG_IMAGEWIDTH:
  ------------------
  |  |  709|      0|#define TAG_IMAGEWIDTH              0x0100
  ------------------
  |  Branch (828:4): [True: 0, False: 1]
  ------------------
  829|      0|			case TAG_COMP_IMAGEWIDTH:
  ------------------
  |  |  712|      0|#define TAG_COMP_IMAGEWIDTH         0xA002
  ------------------
  |  Branch (829:4): [True: 0, False: 1]
  ------------------
  830|      0|				width  = entry_value;
  831|      0|				break;
  832|      0|			case TAG_IMAGEHEIGHT:
  ------------------
  |  |  710|      0|#define TAG_IMAGEHEIGHT             0x0101
  ------------------
  |  Branch (832:4): [True: 0, False: 1]
  ------------------
  833|      0|			case TAG_COMP_IMAGEHEIGHT:
  ------------------
  |  |  713|      0|#define TAG_COMP_IMAGEHEIGHT        0xA003
  ------------------
  |  Branch (833:4): [True: 0, False: 1]
  ------------------
  834|      0|				height = entry_value;
  835|      0|				break;
  836|      1|		}
  837|      1|	}
  838|      2|	efree(ifd_data);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  839|      2|	if ( width && height) {
  ------------------
  |  Branch (839:7): [True: 0, False: 2]
  |  Branch (839:16): [True: 0, False: 0]
  ------------------
  840|       |		/* not the same when in for-loop */
  841|      0|		result = (struct php_gfxinfo *) ecalloc(1, sizeof(struct php_gfxinfo));
  ------------------
  |  |  157|      0|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  842|      0|		result->height   = height;
  843|      0|		result->width    = width;
  844|      0|		result->bits     = 0;
  845|      0|		result->channels = 0;
  846|      0|		return result;
  847|      0|	}
  848|      2|	return NULL;
  849|      2|}
image.c:php_ifd_get32u:
  766|      6|{
  767|      6|	return (unsigned)php_ifd_get32s(Long, motorola_intel) & 0xffffffff;
  768|      6|}
image.c:php_ifd_get16u:
  732|     10|{
  733|     10|	if (motorola_intel) {
  ------------------
  |  Branch (733:6): [True: 0, False: 10]
  ------------------
  734|      0|		return (((unsigned char *)Short)[0] << 8) | ((unsigned char *)Short)[1];
  735|     10|	} else {
  736|     10|		return (((unsigned char *)Short)[1] << 8) | ((unsigned char *)Short)[0];
  737|     10|	}
  738|     10|}
image.c:php_ifd_get32s:
  752|      6|{
  753|      6|	if (motorola_intel) {
  ------------------
  |  Branch (753:6): [True: 0, False: 6]
  ------------------
  754|      0|		return  ((unsigned)(((unsigned char *)Long)[0]) << 24) | (((unsigned char *)Long)[1] << 16)
  755|      0|		      | (((unsigned char *)Long)[2] << 8 ) | (((unsigned char *)Long)[3] << 0 );
  756|      6|	} else {
  757|      6|		return  ((unsigned)(((unsigned char *)Long)[3]) << 24) | (((unsigned char *)Long)[2] << 16)
  758|      6|		      | (((unsigned char *)Long)[1] << 8 ) | (((unsigned char *)Long)[0] << 0 );
  759|      6|	}
  760|      6|}
image.c:php_handle_wbmp:
  976|      3|{
  977|      3|	struct php_gfxinfo *result = (struct php_gfxinfo *) ecalloc(1, sizeof(struct php_gfxinfo));
  ------------------
  |  |  157|      3|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  978|       |
  979|      3|	if (!php_get_wbmp(stream, &result, 0)) {
  ------------------
  |  Branch (979:6): [True: 0, False: 3]
  ------------------
  980|      0|		efree(result);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  981|      0|		return NULL;
  982|      0|	}
  983|       |
  984|      3|	return result;
  985|      3|}

php_register_incomplete_class_handlers:
  110|      2|{
  111|      2|	memcpy(&php_incomplete_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
  112|      2|	php_incomplete_object_handlers.read_property = incomplete_class_get_property;
  113|      2|	php_incomplete_object_handlers.has_property = incomplete_class_has_property;
  114|      2|	php_incomplete_object_handlers.unset_property = incomplete_class_unset_property;
  115|      2|	php_incomplete_object_handlers.write_property = incomplete_class_write_property;
  116|      2|	php_incomplete_object_handlers.get_property_ptr_ptr = incomplete_class_get_property_ptr_ptr;
  117|      2|	php_incomplete_object_handlers.get_method = incomplete_class_get_method;
  118|       |
  119|      2|	php_ce_incomplete_class->create_object = php_create_incomplete_object;
  120|      2|}
php_store_class_name:
  140|      4|{
  141|      4|	zval val;
  142|       |
  143|      4|	ZVAL_STR_COPY(&val, name);
  ------------------
  |  | 1112|      4|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      4|		zval *__z = (z);								\
  |  | 1114|      4|		zend_string *__s = (s);							\
  |  | 1115|      4|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      4|		/* interned strings support */					\
  |  | 1117|      4|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 4]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      4|		} else {										\
  |  | 1120|      4|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      4|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      4|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      4|		}												\
  |  | 1123|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  144|      4|	zend_hash_str_update(Z_OBJPROP_P(object), MAGIC_MEMBER, sizeof(MAGIC_MEMBER)-1, &val);
  ------------------
  |  | 1015|      4|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      4|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      4|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	zend_hash_str_update(Z_OBJPROP_P(object), MAGIC_MEMBER, sizeof(MAGIC_MEMBER)-1, &val);
  ------------------
  |  |   44|      4|#define MAGIC_MEMBER "__PHP_Incomplete_Class_Name"
  ------------------
              	zend_hash_str_update(Z_OBJPROP_P(object), MAGIC_MEMBER, sizeof(MAGIC_MEMBER)-1, &val);
  ------------------
  |  |   44|      4|#define MAGIC_MEMBER "__PHP_Incomplete_Class_Name"
  ------------------
  145|      4|}
incomplete_class.c:php_create_incomplete_object:
   98|      6|{
   99|      6|	zend_object *object;
  100|       |
  101|      6|	object = zend_objects_new( class_type);
  102|      6|	object->handlers = &php_incomplete_object_handlers;
  103|       |
  104|      6|	object_properties_init(object, class_type);
  105|       |
  106|      6|	return object;
  107|      6|}

php_info_print_module:
  132|     20|{
  133|     20|	if (zend_module->info_func || zend_module->version) {
  ------------------
  |  Branch (133:6): [True: 19, False: 1]
  |  Branch (133:32): [True: 1, False: 0]
  ------------------
  134|     20|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (134:7): [True: 0, False: 20]
  ------------------
  135|      0|			zend_string *url_name = php_url_encode(zend_module->name, strlen(zend_module->name));
  136|       |
  137|      0|			zend_str_tolower(ZSTR_VAL(url_name), ZSTR_LEN(url_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			zend_str_tolower(ZSTR_VAL(url_name), ZSTR_LEN(url_name));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  138|      0|			php_info_printf("<h2><a name=\"module_%s\" href=\"#module_%s\">%s</a></h2>\n", ZSTR_VAL(url_name), ZSTR_VAL(url_name), zend_module->name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			php_info_printf("<h2><a name=\"module_%s\" href=\"#module_%s\">%s</a></h2>\n", ZSTR_VAL(url_name), ZSTR_VAL(url_name), zend_module->name);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  139|       |
  140|      0|			efree(url_name);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|     20|		} else {
  142|     20|			php_info_print_table_start();
  143|     20|			php_info_print_table_header(1, zend_module->name);
  144|     20|			php_info_print_table_end();
  145|     20|		}
  146|     20|		if (zend_module->info_func) {
  ------------------
  |  Branch (146:7): [True: 19, False: 1]
  ------------------
  147|     19|			zend_module->info_func(zend_module);
  148|     19|		} else {
  149|      1|			php_info_print_table_start();
  150|      1|			php_info_print_table_row(2, "Version", zend_module->version);
  151|      1|			php_info_print_table_end();
  152|      1|			DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      1|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
  153|      1|		}
  154|     20|	} else {
  155|      0|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (155:7): [True: 0, False: 0]
  ------------------
  156|      0|			php_info_printf("<tr><td class=\"v\">%s</td></tr>\n", zend_module->name);
  157|      0|		} else {
  158|      0|			php_info_printf("%s\n", zend_module->name);
  159|      0|		}
  160|      0|	}
  161|     20|}
php_get_uname:
  654|      1|{
  655|      1|	char *php_uname;
  656|       |
  657|      1|	ZEND_ASSERT(php_is_valid_uname_mode(mode));
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (657:2): [True: 0, False: 1]
  |  Branch (657:2): [True: 1, False: 0]
  ------------------
  658|       |#ifdef PHP_WIN32
  659|       |	char tmp_uname[256];
  660|       |	OSVERSIONINFOEX osvi = EG(windows_version_info);
  661|       |	DWORD dwWindowsMajorVersion = osvi.dwMajorVersion;
  662|       |	DWORD dwWindowsMinorVersion = osvi.dwMinorVersion;
  663|       |	DWORD dwBuild = osvi.dwBuildNumber;
  664|       |	DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
  665|       |	char ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
  666|       |
  667|       |	GetComputerName(ComputerName, &dwSize);
  668|       |
  669|       |	if (mode == 's') {
  670|       |		php_uname = "Windows NT";
  671|       |	} else if (mode == 'r') {
  672|       |		return strpprintf(0, "%lu.%lu", dwWindowsMajorVersion, dwWindowsMinorVersion);
  673|       |	} else if (mode == 'n') {
  674|       |		php_uname = ComputerName;
  675|       |	} else if (mode == 'v') {
  676|       |		char *winver = php_get_windows_name();
  677|       |
  678|       |		ZEND_ASSERT(winver != NULL);
  679|       |
  680|       |		zend_string *build_with_version = strpprintf(0, "build %lu (%s)", dwBuild, winver);
  681|       |		efree(winver);
  682|       |		return build_with_version;
  683|       |	} else if (mode == 'm') {
  684|       |		php_get_windows_cpu(tmp_uname, sizeof(tmp_uname));
  685|       |		php_uname = tmp_uname;
  686|       |	} else { /* assume mode == 'a' */
  687|       |		char *winver = php_get_windows_name();
  688|       |		char wincpu[20];
  689|       |
  690|       |		ZEND_ASSERT(winver != NULL);
  691|       |
  692|       |		php_get_windows_cpu(wincpu, sizeof(wincpu));
  693|       |
  694|       |		/* Windows "version" 6.2 could be Windows 8/Windows Server 2012, but also Windows 8.1/Windows Server 2012 R2 */
  695|       |		if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2) {
  696|       |			if (strncmp(winver, "Windows 8.1", strlen("Windows 8.1")) == 0 || strncmp(winver, "Windows Server 2012 R2", strlen("Windows Server 2012 R2")) == 0) {
  697|       |				dwWindowsMinorVersion = 3;
  698|       |			}
  699|       |		}
  700|       |
  701|       |		zend_string *build_with_all_info = strpprintf(0, "%s %s %lu.%lu build %lu (%s) %s",
  702|       |			"Windows NT", ComputerName, dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild,
  703|       |			winver ? winver: "unknown", wincpu);
  704|       |		efree(winver);
  705|       |		return build_with_all_info;
  706|       |	}
  707|       |#else
  708|      1|#ifdef HAVE_SYS_UTSNAME_H
  709|      1|	struct utsname buf;
  710|      1|	if (uname((struct utsname *)&buf) == -1) {
  ------------------
  |  Branch (710:6): [True: 0, False: 1]
  ------------------
  711|      0|		php_uname = PHP_UNAME;
  ------------------
  |  | 2000|      0|#define PHP_UNAME "Linux a61748e0e801 5.10.0-32-cloud-amd64 #1 SMP Debian 5.10.223-1 (2024-08-10) x86_64 x86_64 x86_64 GNU/Linux"
  ------------------
  712|      1|	} else {
  713|      1|		if (mode == 's') {
  ------------------
  |  Branch (713:7): [True: 0, False: 1]
  ------------------
  714|      0|			php_uname = buf.sysname;
  715|      1|		} else if (mode == 'r') {
  ------------------
  |  Branch (715:14): [True: 0, False: 1]
  ------------------
  716|      0|			php_uname = buf.release;
  717|      1|		} else if (mode == 'n') {
  ------------------
  |  Branch (717:14): [True: 0, False: 1]
  ------------------
  718|      0|			php_uname = buf.nodename;
  719|      1|		} else if (mode == 'v') {
  ------------------
  |  Branch (719:14): [True: 0, False: 1]
  ------------------
  720|      0|			php_uname = buf.version;
  721|      1|		} else if (mode == 'm') {
  ------------------
  |  Branch (721:14): [True: 0, False: 1]
  ------------------
  722|      0|			php_uname = buf.machine;
  723|      1|		} else { /* assume mode == 'a' */
  724|      1|			return strpprintf(0, "%s %s %s %s %s", buf.sysname, buf.nodename, buf.release, buf.version, buf.machine);
  ------------------
  |  |   28|      1|#define strpprintf zend_strpprintf
  ------------------
  725|      1|		}
  726|      1|	}
  727|       |#else
  728|       |	php_uname = PHP_UNAME;
  729|       |#endif
  730|      0|#endif
  731|      0|	return zend_string_init(php_uname, strlen(php_uname), 0);
  732|      1|}
php_print_info:
  759|      1|{
  760|      1|	char **env, *tmp1, *tmp2;
  761|      1|	zend_string *php_uname;
  762|       |
  763|      1|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (763:6): [True: 0, False: 1]
  ------------------
  764|      0|		php_print_info_htmlhead();
  765|      1|	} else {
  766|      1|		php_info_print("phpinfo()\n");
  767|      1|	}
  768|       |
  769|      1|	if (flag & PHP_INFO_GENERAL) {
  ------------------
  |  |   24|      1|#define PHP_INFO_GENERAL			(1<<0)
  ------------------
  |  Branch (769:6): [True: 1, False: 0]
  ------------------
  770|      1|		const char *zend_version = get_zend_version();
  771|      1|		char temp_api[10];
  772|       |
  773|      1|		php_uname = php_get_uname('a');
  774|       |
  775|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (775:7): [True: 0, False: 1]
  ------------------
  776|      0|			php_info_print_box_start(1);
  777|      0|		}
  778|       |
  779|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (779:7): [True: 0, False: 1]
  ------------------
  780|      0|	        time_t the_time;
  781|      0|	        struct tm *ta, tmbuf;
  782|       |
  783|      0|	        the_time = time(NULL);
  784|      0|	        ta = php_localtime_r(&the_time, &tmbuf);
  ------------------
  |  |   52|      0|#define php_localtime_r localtime_r
  ------------------
  785|       |
  786|      0|			php_info_print("<a href=\"https://www.php.net/\"><img src=\"");
  787|      0|	        if (ta && (ta->tm_mon==3) && (ta->tm_mday==1)) {
  ------------------
  |  Branch (787:14): [True: 0, False: 0]
  |  Branch (787:20): [True: 0, False: 0]
  |  Branch (787:39): [True: 0, False: 0]
  ------------------
  788|      0|		        php_info_print(PHP_EGG_LOGO_DATA_URI "\" alt=\"PHP logo\" /></a>");
  ------------------
  |  |   49|      0|#define PHP_EGG_LOGO_DATA_URI "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHkAAABACAMAAAAJUSgeAAADAFBMVEVHcExweqyBiLNHS42mqtBgY5dbXpVjd7tMTotISotMTo+VmrutsNanq9CusdaYnL6Tmb+qrMZKTIx0eK1hY6BISotITY+Ok8JmbqdvcauorMp8f7R9gKx3gaxecK1ISouTlsVZXHx3e7MBAQBISoszSacgKYQ6UrAvQqM9VbIdJn4hLIo4T60mNpYtPqQfKYcmNJ4sPpgzRp8pOpQpOaMzRqYnNZs1TKowRacyRqOustYlMZsqOoslMIkiLYYlMpYnNIwxRZstPpUcJYIxRasnN5AyR68lMpEkMY0wQpYqOpsvQZkfKZUmNZEkMHwZIHUsPpsvQacuPpI6ULU+Vr0wQ60uPp8wQp8pOacdJXs2S68kL3YjLY8tQZ4zSaMiLIEpOpgoN580SKsfKWwZIXseKJB+g7Y3TrIhL5RCWrhAV7QZIG0pN4crOp+DiLgsP6t6f7QhK3InNIA6Uro5TaosPqgqOpEfLY0dJXU9VLdyebAeJ4wlMoQ2S6cfK5EgK3kiMJkgLZotPI9BWr0aI18jMJ4VG2Y4TqQaJolvda2LkrmTl8U0SLIZJJGZncYiNaJrb6k1S54NDAYbGhFHYMA/PjptfLxNZscZK58cMZFEW8NNZLlHX7s8U6s2SrZddsgWJplXaK8oPZ9DWKpqesZHXbVZb8BiaqaMkMGlqc5YXpgSGFIUGVtTaL1QVJOeosyGjL48QVNmanoKCxAOE0crKytUa8knJR40N0Jjcq4iObA+UqE4SJUMHI+qrtNudqZJSUNshMYVHoN7gJIsQbX9/f5NT1JMT2KFl9BYWV9aX20xQo0dMadietZrcpFHYMwmMWYtZccLF4NXbdZ3iLtgb7l+jMctTrAGCC4wR7wWL7FJWp9LUnRxh9J8g6JLYatNhdk8d9FcaJ1lbqB3e4RUXYMIDUF6kt8bNZmpteoLE3YSFB9GdcKutL6Lj5d1dnUZS6lPZKQwPHXDx8+PlqudreVja4m/yuyKptoZIkODne/U2us5Usedoa8oL1YtYLdNAseBAAAAInRSTlMAq2nohiAy/EfPEE/pZ8E5/SCegWV7wMHI4w/MHpjVr9eBwELx9AAAFs9JREFUWMOs1XtUkmkeB/Bmxt1mtkybdrY9OzuX42uEGS8oSCQqIiiCECqgyKqJi3JxBQsFSSWMUFPRSREIvGAKocVoetI0b5nHMrVmTDtHy9qZmtPk6TJdpman086+XpqZ3bmcZmd+f8HLOXze7/P7Pc+zatXPlUfTwdhk1uatLPO7yw/We7i7ua2Dam1g4MBAS0tLW1vF+xs3bnTb8KqHx6rfsNyJfbGKuILsCGWJm7vbIvf9WqTbILqirMzpdLZLpelvv7PB46+/ifyOX98/8imZcRrf4QffehBWtlRSqbQdIj09KxarrMyzFNKl6VmvbPj9r5bfDevb/TckXZSXqN430NJW5mxP9/qu0qWlpaXtp5sbHA6Hy9okkdhdDkdDQ0OzcVr69q/T11wJ6tuxf29aiRKPLznwrZgFic729mmjy+7DUkGg1VorwYGpLDnbYNCKtWz5iMxnZk/WK6//f+x697WB1N3jQcf+DkMS6PqpVijjUshp42qHy2AwiIVk8DCNsE2yVWIwGVIzM0GxSVwrlojFYonGZraZC3oG3/zluPs6qKUtyL27xjOOJQjo+JTrPZA447DWimuhstrrJPa6AAQBgYgjq8QGk0UYp06LU/moxLXQO/nAURqR2tbf3zT42lu/+wXsX9wWp3igQloSUpSxqyj4VPGdeYdDYq1NLi5usttr7XZJdoHEZBDj4BIxLlWrFRsMZIIaD+aUk8FUKDObhSOIRBqRpt/c+Kn3Swdfdtvavbz2LGTs8B5/2Hr9uvfVK/ZalxiRskkCyWKJisUDVSaTxWAy8Xy0FnkMCBJEBEyELEeHj4lgsyLIeDUWROlQ9P7CQW/vP73+su5A2dIMtxZ9uLrB1fpwfLKj+kizw+powrBrodXUqthalgZVX681aYWpKpXFwqWr+Xw8P4KL0qjpmbwITA5GRAC5GIyGMjzV+uHL2O5LbtbyDPc0nu7SSogPTF0VPdB2cTU11LLYKqh4qUIxD68r5JMxWJxQxS7n6tR4FAYD8vEoPB4LCstlGBGKr0NxUVgGcmH8hre393s/22+Pdd+5XqVGKHDXnW8+Od13ZbWkydQ12bXNZeel4kB4ADyAR84E+RoNXQOm8oQxdF1hmgiMwYCyCA6HQxbK61F6rowOPcajIkMWxrOg2K+99dOwG9TfihfutNVqtZvO3fn4m10fXdkcdtDQ1TXpkliT46IRiJS4ABxIw4pEeDWdjsfGkPm6QjWCBmJy6stlEeWccra8Mg3PLSyk69NElMjQqStZRyD7jZ84XdZDgVuky6502sfHas8m+zism7cFNFn9g6KgrdM1WSu2KhhoNJoWB4fHiQiZhLy8Er1tpDcHm5YmwoIcWbmMw+Fyy1X1XB2dXqjT6PV5SmV4eP8Brz2tUOw//uiBtXZgoGzlkCo9VVngI+EdJtBEyJBE+uYmYqxi+2Yxm21RaetCQ8P9/KKTaCm0GLgIqdSBrkkLV5Sn12tQHI6Mi9HhwfKICA6Gri/U0bmGnP4SiiJYD0X6AIr95o+MFnTlrQQubaxEoAsKaEmHaQxf5JYFQV0d0Q/tFw3HlcvlOJZ/fqhfVHwSmhEdAI+haXrnH9195ujPy1scLlQOB6XByuo5MhBaaZuNe/nM4JfGYUqkbxP0x4ux3/jD/7a4raVtucOle3CfK9H+2WgSMpJGYVAEx4qKtxOJYX7xAalyi0XIyd5HDYvyj0IrwrZv3xQAjtwarbo/b8tEYUB8oYafg8Lzc2QcLgqS6baZUaDq+TNJfyQVnb7490d+QLtBN98KfBADD96piI9GCnwTwxHRNMHRY0lhQVGKsORtPJXloqmeR42lUqPCqAridv/s5LiR5m5gbHJudmTCpibwKyt1ZjNXJsPgC9P09N5Pq4HqmoovVfSog4zrUukPafeKtpUWlxZ/zvCFwUIoeSTYbj9ENA4rKCrKDxfko/38cTgW+6JJLqQGxYZRicT4JBo2E4ybNXYDZ27PNDc3OybMfPmlxYPt0sXe/pI0un7iRjXwJPDuV/M5FGLfwlSSsdTrg/+i11RUOFfgukPBJBLSt4TJhKn3/xvcBE8UMJlFuTtDFGh0EnQPWiwxPGqQIgVBiCtuajzSeJ08e6AaOD5aU1Mz1HF5tvlxR8f5jidPnng12IZLhvuNNcDVS4HnJl16RF0Qc7jfPOOEUr/37XbyrHix1MWHFUjf4DTB1TPnH/om/GtfKkgQMLcwizL2hqETaalCiCYLicE7/Wd6Wj87Ozo0NHbh4oPqKmC5huYvn1j+VNV9c9I2PDxl6gCG2Iav/mkspPj35ebD8mwTq9O9vV+cKRvLXsD+iDAGBUEY/uzuo7sdu4f37zgMqklMgS/z2NGgaCQFi2PJtUI5EXnqwlhN97JXfeBIFXDy/thYN9AJXDtXDXSeGBrqhn640DVVohkZrOo2zt+6M2POrDuYm5sA883r7zXe8F4+UtY4l+8Hr6xTh/aFpyAoU97Pnt59eu+jhaP5WAqSxNyihGUUUcNJSgScJ2fxVLHKrpOLaHcN5ABjjwHg/u2Gr69Bb3KtrAqoabl8qwWKXmM0p6EmmmuAe08/vmM0q7eJdxQxE3IFSPPciPHPS/L7zpUm7xkOT0lKQqjzH3fcDHx27+HCLjQi0ReWwfQNYYZSQ0mRtCV5ayzFDsknOnpmWjsB4OTjTuCs1TZ3rgao8rwGAGO35uYunQE6qwdH6GrNxTHgwtdfTDfbYMrsfZCckQEj6Mxz7I3rV6161elcXmvpIUZYEhyeMtw6CnQ+f9QxnsZgUCKVJGYRk0Txj1bAlCk4HguHyw46ZIXkm82VMvFZSD7TCZx3VY5ALT5xG/o+2sClz3pCuylrli4yW58/+OSLxnMyUkIIMTYXGpncBAoWpZvodUFddrYvw9HYqCQ4Dp6JPA6c6Hx873g8BsFgKJFbcjMySMnJ8X5IZcp/uC7XoKbSM46z9kOnsx+2/dKZjvuJeJJDLoSckJOckpOTkxhzOZsQUidHmuQkAWQjJAjZLFBIQFIx1pbJBIYtdKVcK6uOrtFVClhXhh1QVJDBRddVC15GHXa9bLvrZWztE+xuse9k8iEzmd/7/N/n/1zQje+iuUR0lTwzbsI238mQebxre9//AgyUfgK/zy7ktyw8AE0ujf0N//zju8uPUh9/2Mcv5uuixYVlZZWVGom/tXXL+ay3j3z06pUf38NYglAoisgV+NuNswd2lBAWt1TP5wsLaxOERyY1SgZUJegmzLujHwjT48xARRrUzZDF+XNwiZn7EOqtF11Xn56G2C90jf7+6dLL7u4917soN1+krS8WCgsrC70mKq8luSVr3ZFXIZffY1iOQBWE032F1z4zM4sNKBELgDUmoQZLKQmDXkQNbEQt76aiecPHee3XaDRvQwePd3SG13FnU9fCDK99zx6gP3+xcP82ZN7shUXgXn50c2XmRJtQL5KZhDavpri+WKMxhlpb/VlvHFntE+WJXIyFjo8SdveuldMPJ8fvKQUKu1XPF0n1OlkMwUxSUSB3YygEhaQIimLnzT7laCbFbx/njRzO7+s9zRu5fxQusv/Gg4eQ5lN3J67Pzz+6N/F1e3pfm15vlJtPSndbvVFSpJWEClrystZXrYrdkExxBKtACSUhaaJvjia6UaVASfj4IJHWQCN+Ti6SBnI3WSwl6sIIKHv21PDsaSDMzoK9Du8Y+6CD99cnaYiVt+rzqcXe3vn5y55LExMj6d42oci4u6H61snugNVnNVpCeS0tWVWr5CoORThCQaB2VhlDizYN4GxEKRYrffzCXV6zgQhYMblb2hhSWfyIelfkGq/9+FRnBjFz97uVY6dH27afejgy+S2kd+fISEfH8ckzL/Z9tfwS7HR1qGN6oamYNEgy2jZ8WdfqM4Ry81sas8qrMp4avYfFCKdCgVokTAwhVAqWjQgArfLwixk5J9lNc1ZpYwD3SUKEbddgmreyWiI7jx7y/POne/7V35Y/9O2p+w0dvKn7H1RXf7p4dyxnYhnsNNE1d4P33ZylkG9MrGpbnf24O+B05geAnOmbVTKDjCBgwoH+Y/CII6oSJYso4SCsiLHLORnbgxnr3BROUShmK4TUPjY9PX3n1ui4xBM7dGivxFJ0fmzzHBhrauHqZ19Ax0x+PjS/9HL0vbEznZ1D2518fqD/+7WsYRzfEcKbXpEbuuVsLMOxezy18ogA4Tj4xBAE7bZiJh3NRlK1Jr5UMiCxKuiwFcjtN3orFBKr3EHbcdzv9DmdVHJutp03faIPJpO8/OSh68tLyz/+88TDqSd/Spq0mu6G/22EwE7mZ60Hcvm4hxOLBQJxhCEIuQETKzNcjEMUCh8mN6UYu0dndEv5EqeVUtBq+1/SvPa0R+eIq2FGMNOs04nCVNZyIZPaC0ncZ6Goll+fWVpa6t3/j8lfLo5J+AbSvnb/rW4YTGa9UQ3kgR5xRAwngnExQibDIkoOQSBmtATBSCYhk9UaTI0ik9Fnoohz53QfQpH8d8LsiMfVMJwwGMGyuXhu8sTXkw/2/6GFshgbm97pmnj6cn55aeLMYu4OkpRJxteSs4cPDGetqy7P/t32QUFELAC5OYYWY3ImFuNiXI6AUykjHkOC1ulMIpNGapIYSScWVBv2ATmdommzOm5maNCJtTvtTr9i6PnzEy2NVF5BU1NjwWeLTyd6v5q49H5AK9LIJI/XgrMPbPhR1tuQbv2bcnIEghwxghC6eCwhq01FkFjYJXhPKU7JsITawZikGr5I4jNZS3ThoHZw8uztG2pHKhWPm2mMxgjCY7cTCrzvfF+b203l4ZRRZEluH/po8VJ/axNJksJayWvg7MOZ8Xd9dvmgOAfQYF8E8xjUiZjB3BPhdMFn3/y2p9baA2Stxusl3bhcYyGCNpdNO/xB/8mgw2GGD4NhYEgIm0VZiyQQcFN+HPfVuWEBOb9lS/Ida1BLktDrXhMbhjGYDdZll8d6cioqlDGxOEYzDpujh9FFEtyvYisXt2EkCWLXCoUak6kOt5IenS3qKrUJy8qEUbM57qB1DItBIsYIBRQhRZG/AMdDOG5xS0JuqdFiIb2kVktqRXVfVr8e8k8yk8EvqlUZskDBRTiadgSbz40zHJfYvPPZXMKhrU3J5AaTnm+yBii+tSTuCttqaprDYZstGIfMdtAYRiCQiyoVolAVFRWFQn4/sHHKTcJt+SC1Br7q+v8v5NWl9s1PVRUVoDbiwTiM0ambS1MROpX4zc6Lf0zJZTQj15JGGIStFo0whAZrXOFmVzgYjAfrm9UOtQPEBhOUICUqVYacm5vrp4xuihKJRHy9FOZnDV+vJesa1oAbDm/4+asJ8PHlCghZICDkarMublZXusbpVCqy85u9tIxJMXITaZVLpSKjV5qU19SUuuCl1eDl+vpmEuyMYVDuYlB4UZYocoZCeX63yF1XJwWyUC8s9mo0GlJjrnotsf87Af4MEmxbRQ64WVZvUwfV8WBlOGU+GXl2cW9Kx9C1coNW7pOK3HphU766tKa01OYKg5PV4frKZgdthu2OVWQOiqKWAEUFmgJbpdDXjUY+gIu9Xq9Wa1zrqeEfpt63BsUV27bliGMI660sLd1Z6nLVgGmDV1w9CZ3cXGuAA9qRZWUBu81VU1oTDofhfvFotLk+6mBkMkLBEpEIbPMhitpK4QV51O6tdbvdbr6wrFioiXo1DNbwGvj7Sf+tHkHmncUlCCEj6yt3Hvzk4MGL6fTxdNVJzmBgakmtmoT09BbqcXhlm+vVK+vM2mA46g3ClsMpYrFMxCi0HBzPz4dCEigokEpN0ozYUY2u5+/la7Prh+3mTXAziK1UYoxMF6zfdfCTK8+OZZr7fwoz39g06jCO709mjb4yW8xmMhM7gfb4Uw6OfwLXA46DQgtcj6OFtlw5mNdyxQ4olLa01JU1xRCtydS02UjUbG/ghTpiNDNZYlLf+Gbv1sQlvpmNie/cSxPjc2y23dZtP17w8nPPv+/ze57fzkcOL+F0yuWE2+31IOIKmk0GchLZZpMS22YbKAccOr9fBmG29PTwkYyBxxJa68WVfqPRq5yXyBznneu9dNjig7EKyGnQEZPOOUyUK+ut5l5bAl94sPPNb+P24rAckRN6tTqampxJZoEcyOXKNvD28EDcWZ5xOvwjFl4y2szTtNnMa7RGKzRy77gSZm9E3jeuu/7j0eBjJyQFA7Qh5C4Hks12e/fRcPRwp7s2by/aEU6O6ye50rx7DEoKyLYA1BOMkwOfDjidRYcfDUX8OnOPgeZjPE9mrEY6YlTKoRj6ECgqj2nf109P7iegP8JRyUJ6ghurtnfvf9Y5O/90v7/ldrpdUBV2vNQ3mUtmpezKzUg224owRussfrvbPxTyo8sSlVcJAp/pNxoiHiVMpB653E54er7+H/zMtqJDVqlkI1A+XAXID3cenfe6Lw2oiSHc7h5SinKfLQlZL51yGSQE3O1HJ5b1nFKP+tH4nEKQhJ9hFAafz6ce8iKIl7BDVUTSHxwY/NSG5oQJGpXJEEH1xEwlW91rP9qUf/yxFJetIYLACbuITPyazI4lIdCBSiVQJop+v1/niCtQCATqdMZVUrdbEEwmki1giQTv88zbZ4qTRT3/OLuO2kqdJsFkQyQUQolKNlnd+/ewxN7e2vLAQJeKSBYnq9XqenZ9XRSjCFd0OHTx2ARO+FG9RF5gFlQyk0BR9UaDauTDtLrMXZ4wL+47+tlN3HlKJV0yR4BcAqFo31984vagm5ryoLpctdpqNlvNVgvAwSg0KzlEeEKPB5GiE9UtLyuWDWZ+IRxmGo1GvU4xYRoKyzuxzz1q+whkk0oGw4UerwSA/EettngYXvv9+o2fkq323l4TTBZLCAJgl3LKGCLKiBgkLl8m4qp4yNvPbG+vhWkNhVkzJBUzZ3oUitpjPx+9cT1+D4pZZohb9NFKAHL7ndPnagA/xP5y2iFK4OZ6EsDRVCq1AQ2Y5PUcUrKPFHN3hx3q/pVBJpxnNINGDK6eGEnxwo1rn3fXIK+eu+kFMswxMovFy5UD2Wrz1WOvddgH8Nq0fr3VaoliqcLhrmDQpdZo6BiJmWMjhHO4kgsM+SThwlg2swqyjY3OsmRMmP7+5h3J3Odv1o/f6+2dsyzP9eBRLgBJ1EnAM2c3O/AOfVHmDYqiWClzHA4RVoIzKYon6dha2JJttbM+OnFxaWlJS2PaVavVemWUrbNCb/qLrnelvHr+dvlsLA3uNsT10WhlLLlefZz6p86c29zcrG0C/Y4fh35X4nAYpYPR8QhJa+AOQJI8s72Q3d0dM2eUPy8NDmq1VuuHV8DVLJwO+eSLHxLeBg1QzI2g0WClkkyKdw++8RWwXDp39FHEjiO4y5WKuuYxMhajaZKEv9jC1eqFW2OkcWkVsPBbxQqfjM4WCmw91pu+2vWy5zAB6llhUAajHIiEePeJ571TZ46f65DlStwll7tcUxmSZAErSMt9Jhz++69bOcqopepsIZHAsAIICaZNkAzTO32t662XkaFV9RrmUymuFMg9Re7Qzw+4oOcoXYhyaQmrxyi2zuTzULphhsnf/mWXKGhImqLYRIZk2Ua+MVvACvBh6fTLyGchwxRCT/8GRLHEHfb2/jm54VF7lX2QRSssRYJAhbfX8gLDkEwY/e6H6Fc0VZA0M6EpsCAj7CxLCQtMerrrjReTIbfTCplZ4/P2caWKOHYE+c0/J/uVuNq6sTGoqQtMHsBreYaJCWvh0INvgxqKEmgsYUwUsNGChtZgbD5PUYrpm6+/APsfPpGyoTDU6NQAAAAASUVORK5CYII="
  ------------------
  789|      0|	        } else {
  790|      0|		        php_info_print(PHP_LOGO_DATA_URI "\" alt=\"PHP logo\" /></a>");
  ------------------
  |  |   48|      0|#define PHP_LOGO_DATA_URI "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHkAAABACAYAAAA+j9gsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAD4BJREFUeNrsnXtwXFUdx8/dBGihmE21QCrQDY6oZZykon/gY5qizjgM2KQMfzFAOioOA5KEh+j4R9oZH7zT6MAMKrNphZFSQreKHRgZmspLHSCJ2Co6tBtJk7Zps7tJs5t95F5/33PvWU4293F29ybdlPzaM3df2XPv+Zzf4/zOuWc1tkjl+T0HQ3SQC6SBSlD6WKN4rusGm9F1ps/o5mPriOf8dd0YoNfi0nt4ntB1PT4zYwzQkf3kR9/sW4xtpS0CmE0SyPUFUJXFMIxZcM0jAZ4xrKMudQT7963HBF0n6EaUjkP0vI9K9OEHWqJLkNW1s8mC2WgVTwGAqWTafJzTWTKZmQuZ/k1MpAi2+eys6mpWfVaAPzcILu8EVKoCAaYFtPxrAXo8qyNwzZc7gSgzgN9Hx0Ecn3j8xr4lyHOhNrlpaJIgptM5DjCdzrJ0Jmce6bWFkOpqs0MErA4gXIBuAmY53gFmOPCcdaTXCbq+n16PPLXjewMfGcgEttECeouTpk5MplhyKsPBTiXNYyULtwIW7Cx1vlwuJyDLR9L0mQiVPb27fhA54yBbGttMpc1OWwF1cmKaH2FSF7vAjGezOZZJZ9j0dIZlMhnuRiToMO0c+N4X7oksasgEt9XS2KZCHzoem2Ixq5zpAuDTqTR14FMslZyepeEI4Ogj26n0vLj33uiigExgMWRpt+CGCsEePZqoePM738BPTaJzT7CpU0nu1yXpAXCC3VeRkCW4bfJYFZo6dmJyQTW2tvZc1nb719iyZWc5fmZ6Osu6H3uVzit52oBnMll2YizGxk8muFZLAshb/YKtzQdcaO3Y2CQ7eiy+YNGvLN+4+nJetm3bxhKJxJz316xZw1pbW9kLew+w1944XBEaPj6eYCeOx1gqNe07bK1MwIDbKcOFOR49GuePT5fcfOMX2drPXcQ0zf7y2tvbWVdXF/v1k2+yQ4dPVpQ5P0Um/NjoCX6UBMFZR6k+u7qMYVBYDIEqBW7eXAfPZX19zp2/oaGBHysNMGTFinPZik9fWggbI5Omb13zUDeB3lLsdwaK/YPeyAFU0i8Aw9/2Dwyx4SPjFQEYUlf3MTYw4Jx7CIVCbHR0oqIDNMD+FMG+ZE0dO/tsHlvAWnYS6H4qjfMC+Zld/wg92/tuv2WeeYT87j+H2aFDxysGLuSy+o/z49DQkONnmpqa2MjRyoYsZOXKGnb5Z+vZqlUrxUsAvI9At/oK+elnBpoNw+Dai9TekSMxDrgSh0KrSYshTprc2NhoRf1JtlikqirAVl98AddsSavDBDrsC+QdT7/TSoB344tzOZ39+70RbporVerqasyw1MEnC8iV6I9VTDi0uqbmfPFSq2W+gyUHXuEdb3WR5rab5jnD3i/BNMN8ChNaqsTiKa55KmBWX+Tuj0XQdQVF307nhTH0CPls+O0UPbaT5TQG/8qX68u6LpV67LQ6dNknaYgaYyPDx2TzvYGCsnhRkH8b/rsF2GDj1MCInkvxvRjOuCUlipWD/zrKx7ZOwBF0vfSSM2ShyaqAAOC1Nw+zt9/5YNbrN1zfwIdpfgnqebv/A6pnWAn4qlW1HPgHQ6OeoG3N9RO/+StMdDtmV2LxJPfBpQCGfwTgrVu38jFrKaW2tpZt2LCBdXR0sEgkwhv21u9cxQsyW3ZB1+DgoOM54btU6tu8eTPr6elhy5fr7IZNDey+e76e9/fCLcAllHpdKKinpaUlX8+111xB9VzNrYxqUAY/XVVVJYMOekLu2fFGM8VWYQRYiYkU9bD4vPlHFYnH4/zvkb1CgwACHgMoUpdyw3sFXcXUh4YHaNSHDqaxdL5jwVTXBpeXVY9oF3RcUQ+O09NT7Cayfld+4RJlP42gTIq8w66Qf/X4a6FTSSMMDcaE/NhYecMM+MdyG90OAhodWoAGkTUaSZByO5WdiA4GqwStrrM6k5vFKEXQserr63l7oR5V0NBojKctaSZtbneErOtGmFxwkGewjk0UzpCUlJSIRqMcjN8CkHLDqyRByq0PEGBBhDmdj7rQVujAaLfrrlk7xyW5gUaxpEtOmOQDr0e799NYmDVBi0+OT7FcbsaXxEQk8qprEBQMBm0vVKUBRcNjskFE8W71lSt79uzhda1d6w4ZGTUUp3NWAQ3TvW/fPvbVq+rZH/ceULOcF1/I06CY3QJohCCzNJnYdgEwwvpUKuNbUsLNpO3evZtfSGHp7+/nS2pw3LLFPVWLoA5yHQUtXvXFYjH+vU4F5yOibzsRUL38MTqC3XWh8GCWziMcDjt2BNEZUIfoUOpJkwvziT3S5ua8Jj/4yD5E0yERbPkhKv4RF4mhkN1wCMHN2rWfYZ2dnWz9+vXchNkJzBoaQ8Bxqg91wWo41YdO2dzczD+3bt06Rw0rBG4nOF8oi9M0Jsw9OgLqQ124BifLgeuHyVbN0NXUrODBmDWxgRR0pNrUYqMNgDOZGZbNzvgCuc4j0kX+GPJ2//CcMagQmKkbrm/knwVEp++SIXulM1+nhj9AY207QRDnpsnye24WA59DkuPlV/5j+z5eB2hE0W1tbTyQdNJmDpksRzFp2E9csFJAboRvDvz8gZdJgw2ek55KZphfAv+Inu8UdKnmkEUHQK93EjEZ4Rbkifq8JiactEpYAy9Nli2Gm6CjIZPn1qlKFWizleOG3BIwdKNZ+KRMxr9VHKvr1NKLXo2BhlAVFRPq1qlWW6MBr3NWyY2rTGXO5ySJlN9uDuiGsV7XTVPtl8CHYGizf/9+V5Om0hAwVV4ahuU8qia03HP26kyqFkMOTudDzjs/P/QKBUiBYa5ZNucfZJUkCG/0IhpCxYyqBF3lnLOII8q1GKqdStQ3rTh5MStwXX5O/nE1metGQzPHUH6JatA1OppQ8u1eUbpX44tO4GY5vM5Z9sduFgOfG1GwUOK6VFzaSAmrWCSfzGCuuT/O+bi6QwRdTtqXN2keJ4/ejgkJ5HedRARkbkGe6ARulgMWQ+Wc3cDAWohhoZdcue7ifJ7crfP6Me8dELd0Mv8U2begC2k9SHd3t+NnNm7cqKwRbiYUkykqvlZlmOYVLIq5bHRep46JzotOc9BhuFc0ZHGLph+CJIaXr1FZSIfxsdBiN1+LpALEK2By61Aqs0rwtV7DNBU3BMCYixYTLU6C8bM5hBwum0k1mesBpmPtlj+qXFenFsAgCVLon9DYeIxUnmh05HCdBIkCVRP6ussiepVZJZXIutCHwt2I0YGY2Kiz3AIyeG5aLNooVULQBbHy1/nAK2oEtEanheil+GO3aFg0FnwSilNC4q6OrXzywc0XCy1WMaFu/tgrCBLRuWpHuP+n1zqmRXFN0GAnwKgHeW1E1C/86UDJHFKptATZMPZTafbLXHtN3OPixKRC4ev4GwB2Gy6JxhQNEYul+KoKp79RMaGqKzy9ovzt27c7pidVZtYAGJMYOP7u6bdK1mLI1GQ+/ogSZBahwKuLO2jSZt0odw65xrUhAMNrZskLsGiIXz72F3bTjV+ixvtbWcMQr3NWCbog5VyXAIy63PLrqpJITIqHkcD9P7suSiYbG53wvTLKDbr8WBbjZqIF4F3PD3ItRn1eQd5CBF3lCM5RAIYfVp0/dgZ8SvbJ2/l8MmlvNw+8qJTjm+drWQwaAXO9KMuWncc1GBMXKkGeV/pU5ZxFIsTvzovOCu3HvDnOE7NTu3rLr+PE8fy6+IEX9947YM4n/+LbPT/88R8QqoYAuVSDrZLFKcYso2AcLBIeGDPu6h3M+yqvIE/4Y6w4LdUfi+jcr86L75KvC9+PcbVfd1hCi6U7Innwk1/+Q5rcoetsdyBg3s9aCmivBsNFifGfG9zCJUFiztmpEXAbqhMgr6SLWBPu9R1enRfm1ktrC6cVYWH+/Mqg43x6sYK1edaCex7vkRZHZkF+6P6NkXvvi/TpLNBUaqTtdcsoLtIrVTcem2EHDh7m2uq0ikMINBvafOmazzt+BkGMW9CF70DndPsOaJqb38Y1oXjdCYHOiqwbPofrKid6thMAlnxxPtMy6w4K0ubNhq73U5wd5PtVleCTd+50D2CEafLloqixyv0ufMcOGq64CVaMYN2119gfAdPpuscKOxWgCMDwxfm0pvzBhx9siRLoFt3ca7Ikf+x2yygaYzHdTSi7IT9y8fMJ2Lpdhg+ZCPA2+f05d1A88mBLHzQaoA1dL6ohVLJGi+1uQj8XQMyHIMgaGT6eDxuozMkD294LRaB7CPI27DLHQSskSFRvGa30O/zndF4fF0DMhwa//9//iZ2DcILqN7xBHn1oUweNn7eJ3WO9QHvdMlrMsphKEj8XQPgpuHVVMtGOgF0hC9CGTqbb2kHOzXx73aKiuiymEv2x22ICMYYeWSALBQ7RQ0fkoZIr4DnRtS3ohzf1dNzTG9d0PcwMLahZO8UyKTMm38wteratSVtkplq4oWj0PcfrEinPhYg14H+hvdIwCVs1bvb6O+UBMYFGl90d0LRGLRDgoHEUwYnXDniQStocTVUwfPLaKQGA/RoWOmkvtnsaG8unK+PWMKlH5e+Lznp03N27RdO0TkxmYNZKszYBlyfI3RpjsQkmMOo8ls4Wsx1EKcEVAEvayyNoeRzsO2RI+93PNRLesGYtNpBhL4l/prlgZz5ob0mbtZVFhWC301d0EuQgAHPgS7D9hssTHKyMbRfLptF213NBDRuoaqxNA2yh2VUBDnxJ1M1yRW6gOgt2x64gqXK7ht1yOWyW1+wl7bYXvhUygQXgit4KuVDuBGzSbA2bmmtayNzpRgJOGu7XosHFChZzvrGTiUKt5UMiVsmbmtsCb3+2lZmwm3hFNsA/CiYdKyfhYx3Aws8urp8nsJM72naGCG8zYwZMecjk/WHVVRbsMwU6tBVQsWJS2sNDlrgVTO0RE/vzKQtuN2+/85k5PxlUaL75D3BZwKss+JUqSFRAO/F7Eqlkmj+2gbrgYE8rZFluu+P3pOGsyWCG/Y9/GR8exC+vYfc5flxgzRdDGsDEz/8AJsxwQcBUKPCtmKOMFJO8OKMgF8r3b3sKkAm69TN+2OZCAm5ID/g9XPypwX29ufWgudq0urrKes/8nPkxgy1bdg6z/or/SFc2mzV/xs+6HwySTmdYJp2dpaWKEregYrVfn9/B0xkD2U6+e+sOaHqImTfLrycUOIZM1hJwC3oemPXbi/y5PnsrJ136bUa8pxu69BklmANWwDRkgR1wmwVaglyi3Nz6JLQ+ZG5NxQsgNdAhmIfJN7wxgoWg9fxzPQ+c/g9YAIXgeUKCyipJO4uR/wswAOIwB/5IgxvbAAAAAElFTkSuQmCC"
  ------------------
  791|      0|			}
  792|      0|		}
  793|       |
  794|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (794:7): [True: 0, False: 1]
  ------------------
  795|      0|			php_info_printf("<h1 class=\"p\">PHP Version %s</h1>\n", PHP_VERSION);
  ------------------
  |  |    7|      0|#define PHP_VERSION "8.6.0-dev"
  ------------------
  796|      1|		} else {
  797|      1|			php_info_print_table_row(2, "PHP Version", PHP_VERSION);
  ------------------
  |  |    7|      1|#define PHP_VERSION "8.6.0-dev"
  ------------------
  798|      1|		}
  799|      1|		php_info_print_box_end();
  800|      1|		php_info_print_table_start();
  801|      1|		php_info_print_table_row(2, "System", ZSTR_VAL(php_uname));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  802|      1|		php_info_print_table_row(2, "Build Date", php_build_date);
  803|      1|#ifdef PHP_BUILD_SYSTEM
  804|      1|		php_info_print_table_row(2, "Build System", PHP_BUILD_SYSTEM);
  ------------------
  |  | 1891|      1|#define PHP_BUILD_SYSTEM "Linux a61748e0e801 5.10.0-32-cloud-amd64 #1 SMP Debian 5.10.223-1 (2024-08-10) x86_64 x86_64 x86_64 GNU/Linux"
  ------------------
  805|      1|#endif
  806|      1|		if (php_build_provider()) {
  ------------------
  |  Branch (806:7): [True: 0, False: 1]
  ------------------
  807|      0|			php_info_print_table_row(2, "Build Provider", php_build_provider());
  808|      0|		}
  809|       |#ifdef PHP_BUILD_COMPILER
  810|       |		php_info_print_table_row(2, "Compiler", PHP_BUILD_COMPILER);
  811|       |#endif
  812|       |#ifdef PHP_BUILD_ARCH
  813|       |		php_info_print_table_row(2, "Architecture", PHP_BUILD_ARCH);
  814|       |#endif
  815|      1|#ifdef CONFIGURE_COMMAND
  816|      1|		php_info_print_table_row(2, "Configure Command", CONFIGURE_COMMAND );
  ------------------
  |  |   15|      1|#define CONFIGURE_COMMAND " './configure'  '--disable-all' '--enable-debug-assertions' '--enable-option-checking=fatal' '--enable-fuzzer' '--enable-exif' '--without-pcre-jit' '--disable-phpdbg' '--disable-cgi' '--enable-pic' 'CFLAGS=-O1 -fno-omit-frame-pointer -gline-tables-only -Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion -Wno-error=deprecated-declarations -Wno-error=implicit-function-declaration -Wno-error=implicit-int -Wno-error=unknown-warning-option -Wno-error=vla-cxx-extension -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fprofile-instr-generate -fcoverage-mapping -pthread -Wl,--no-as-needed -Wl,-ldl -Wl,-lm -Wno-unused-command-line-argument -fno-sanitize=object-size -DPROFITABILITY_CHECKS=0' 'CXXFLAGS=-O1 -fno-omit-frame-pointer -gline-tables-only -Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion -Wno-error=deprecated-declarations -Wno-error=implicit-function-declaration -Wno-error=implicit-int -Wno-error=unknown-warning-option -Wno-error=vla-cxx-extension -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fprofile-instr-generate -fcoverage-mapping -pthread -Wl,--no-as-needed -Wl,-ldl -Wl,-lm -Wno-unused-command-line-argument -stdlib=libc++ -fno-sanitize=object-size' 'CCC=clang++'"
  ------------------
  817|      1|#endif
  818|       |
  819|      1|		if (sapi_module.pretty_name) {
  ------------------
  |  Branch (819:7): [True: 1, False: 0]
  ------------------
  820|      1|			php_info_print_table_row(2, "Server API", sapi_module.pretty_name );
  821|      1|		}
  822|       |
  823|       |#ifdef VIRTUAL_DIR
  824|       |		php_info_print_table_row(2, "Virtual Directory Support", "enabled" );
  825|       |#else
  826|      1|		php_info_print_table_row(2, "Virtual Directory Support", "disabled" );
  827|      1|#endif
  828|       |
  829|      1|		php_info_print_table_row(2, "Configuration File (php.ini) Path", PHP_CONFIG_FILE_PATH);
  ------------------
  |  |   28|      1|#define PHP_CONFIG_FILE_PATH    "/usr/local/lib"
  ------------------
  830|      1|		php_info_print_table_row(2, "Loaded Configuration File", php_ini_opened_path ? php_ini_opened_path : "(none)");
  ------------------
  |  Branch (830:60): [True: 0, False: 1]
  ------------------
  831|      1|		php_info_print_table_row(2, "Scan this dir for additional .ini files", php_ini_scanned_path ? php_ini_scanned_path : "(none)");
  ------------------
  |  Branch (831:74): [True: 0, False: 1]
  ------------------
  832|      1|		php_info_print_table_row(2, "Additional .ini files parsed", php_ini_scanned_files ? php_ini_scanned_files : "(none)");
  ------------------
  |  Branch (832:63): [True: 0, False: 1]
  ------------------
  833|       |
  834|      1|		snprintf(temp_api, sizeof(temp_api), "%d", PHP_API_VERSION);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              		snprintf(temp_api, sizeof(temp_api), "%d", PHP_API_VERSION);
  ------------------
  |  |   23|      1|#define PHP_API_VERSION 20250926
  ------------------
  835|      1|		php_info_print_table_row(2, "PHP API", temp_api);
  836|       |
  837|      1|		snprintf(temp_api, sizeof(temp_api), "%d", ZEND_MODULE_API_NO);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              		snprintf(temp_api, sizeof(temp_api), "%d", ZEND_MODULE_API_NO);
  ------------------
  |  |   33|      1|#define ZEND_MODULE_API_NO 20250926
  ------------------
  838|      1|		php_info_print_table_row(2, "PHP Extension", temp_api);
  839|       |
  840|      1|		snprintf(temp_api, sizeof(temp_api), "%d", ZEND_EXTENSION_API_NO);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              		snprintf(temp_api, sizeof(temp_api), "%d", ZEND_EXTENSION_API_NO);
  ------------------
  |  |   46|      1|#define ZEND_EXTENSION_API_NO	420250926
  ------------------
  841|      1|		php_info_print_table_row(2, "Zend Extension", temp_api);
  842|       |
  843|      1|		php_info_print_table_row(2, "Zend Extension Build", ZEND_EXTENSION_BUILD_ID);
  ------------------
  |  |   53|      1|#define ZEND_EXTENSION_BUILD_ID "API" ZEND_TOSTR(ZEND_EXTENSION_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA
  |  |  ------------------
  |  |  |  |   31|      1|#define ZEND_BUILD_DEBUG ",debug"
  |  |  ------------------
  ------------------
  844|      1|		php_info_print_table_row(2, "PHP Extension Build", ZEND_MODULE_BUILD_ID);
  ------------------
  |  |   46|      1|#define ZEND_MODULE_BUILD_ID "API" ZEND_TOSTR(ZEND_MODULE_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA
  |  |  ------------------
  |  |  |  |   31|      1|#define ZEND_BUILD_DEBUG ",debug"
  |  |  ------------------
  ------------------
  845|       |
  846|      1|		snprintf(temp_api, sizeof(temp_api), "%d bits", SIZEOF_ZEND_LONG * 8);
  ------------------
  |  |   97|      1|#define snprintf ap_php_snprintf
  ------------------
              		snprintf(temp_api, sizeof(temp_api), "%d bits", SIZEOF_ZEND_LONG * 8);
  ------------------
  |  |   39|      1|# define SIZEOF_ZEND_LONG 8
  ------------------
  847|      1|		php_info_print_table_row(2, "PHP Integer Size", temp_api);
  848|       |
  849|      1|#if ZEND_DEBUG
  850|      1|		php_info_print_table_row(2, "Debug Build", "yes" );
  851|       |#else
  852|       |		php_info_print_table_row(2, "Debug Build", "no" );
  853|       |#endif
  854|       |
  855|       |#ifdef ZTS
  856|       |		php_info_print_table_row(2, "Thread Safety", "enabled" );
  857|       |		php_info_print_table_row(2, "Thread API", tsrm_api_name() );
  858|       |#else
  859|      1|		php_info_print_table_row(2, "Thread Safety", "disabled" );
  860|      1|#endif
  861|       |
  862|      1|#ifdef ZEND_SIGNALS
  863|      1|		php_info_print_table_row(2, "Zend Signal Handling", "enabled" );
  864|       |#else
  865|       |		php_info_print_table_row(2, "Zend Signal Handling", "disabled" );
  866|       |#endif
  867|       |
  868|      1|		php_info_print_table_row(2, "Zend Memory Manager", is_zend_mm() ? "enabled" : "disabled" );
  ------------------
  |  Branch (868:54): [True: 0, False: 1]
  ------------------
  869|       |
  870|      1|		{
  871|      1|			const zend_multibyte_functions *functions = zend_multibyte_get_functions();
  872|      1|			char *descr;
  873|      1|			if (functions) {
  ------------------
  |  Branch (873:8): [True: 0, False: 1]
  ------------------
  874|      0|				spprintf(&descr, 0, "provided by %s", functions->provider_name);
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
  875|      1|			} else {
  876|      1|				descr = estrdup("disabled");
  ------------------
  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  877|      1|			}
  878|      1|			php_info_print_table_row(2, "Zend Multibyte Support", descr);
  879|      1|			efree(descr);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  880|      1|		}
  881|       |
  882|       |#ifdef ZEND_MAX_EXECUTION_TIMERS
  883|       |		php_info_print_table_row(2, "Zend Max Execution Timers", "enabled" );
  884|       |#else
  885|      1|		php_info_print_table_row(2, "Zend Max Execution Timers", "disabled" );
  886|      1|#endif
  887|       |
  888|      1|#ifdef HAVE_IPV6
  889|      1|		php_info_print_table_row(2, "IPv6 Support", "enabled" );
  890|       |#else
  891|       |		php_info_print_table_row(2, "IPv6 Support", "disabled" );
  892|       |#endif
  893|       |
  894|       |#ifdef HAVE_DTRACE
  895|       |		php_info_print_table_row(2, "DTrace Support", (zend_dtrace_enabled ? "enabled" : "available, disabled"));
  896|       |#else
  897|      1|		php_info_print_table_row(2, "DTrace Support", "disabled" );
  898|      1|#endif
  899|       |
  900|      1|		php_info_print_stream_hash("PHP Streams",  php_stream_get_url_stream_wrappers_hash());
  ------------------
  |  |  662|      1|#define php_stream_get_url_stream_wrappers_hash()	_php_stream_get_url_stream_wrappers_hash()
  ------------------
  901|      1|		php_info_print_stream_hash("Stream Socket Transports", php_stream_xport_get_hash());
  902|      1|		php_info_print_stream_hash("Stream Filters", php_get_stream_filters_hash());
  ------------------
  |  |  665|      1|#define php_get_stream_filters_hash()	_php_get_stream_filters_hash()
  ------------------
  903|       |
  904|      1|		php_info_print_table_end();
  905|       |
  906|       |		/* Zend Engine */
  907|      1|		php_info_print_box_start(0);
  908|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (908:7): [True: 0, False: 1]
  ------------------
  909|      0|			php_info_print("<a href=\"https://www.zend.com/\"><img src=\"");
  910|      0|			php_info_print(ZEND_LOGO_DATA_URI "\" alt=\"Zend logo\" /></a>\n");
  ------------------
  |  |   50|      0|#define ZEND_LOGO_DATA_URI "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAAvCAYAAADKH9ehAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAEWJJREFUeNrsXQl0VNUZvjNJSAgEAxHCGsNitSBFxB1l0boUW1pp3VAUrKLWKgUPUlEB13K0Yq1alaXWuh5EadWK1F0s1gJaoaCgQDRKBBJDVhKSzPR+zPfg5vLevCUzmZnwvnP+k8ybN3fevfff73/vBAJTHxc+khL5kr6T1ODk5nAgTRTWloghFVtEg/zfh2PkSvq9pJGSKiX9SdKittbJoD/PSYkrJD0vKeB4IsNNotfuUtHk/CM+IvijpF9KGiDpGEkLJZ3lC7qPeKKTpD9IWiDpUOfWPCi61ZeLvD2VIhTwp9QlTjK5NsIXdB/xxHmSpvD/OucWPSAyQw2+LfeG1SbXVra1Tqb785xUaNdMel0g7Iu5V1zPv6dJqpD0kKR/+ILuI55o8oeg1bFT0kWSOkraQxK+oPvw0TZR3ZY758foyQXf//ZxUFh0Q/GEfNf9gHkaJ6m7pHJJSyTt9tnXhxtBR2EGlnHCMbZMaHuHzX19JZ0u6VRJh0k6hM+BpMjnklZIelPSNhff3V5StkNlEWBMFm+3LcC+BW3GuZP2GvfmiEiCCMUzxZIKRGSt9zeML/fdGAW9JB3O8c6SlMZ+b5f0qaQiF7EpnieXY1auvZfG7zhSUk8RSS428F7M5xfsh1eAV/vxOzoq16sklZBqbdpo5H2qDPRQXoP3Ki0+20FSFyrZUgt+Rt/7KH2vZb8/t/iMG2Sy/0dI6sbvgHGoV8a3xErQb5Q0iTfHCplkzlkW7w+VNF3ST7QJUzFK0pVkDFiw+yV95uC7r5Z0k3CW2ApwIkrJ9B9IelfSh2SIlqC/pDFUZAVk0rQoMhk2GYswx+AtWvMKPtcyEckW37pPwsIHNAuBniDpYhEpBMmJwvibJL0gIlVh39r0C8UlczkXQ/mM6OtEzuf3RfPVAxUY47f5PStcGKPxpOMldbbxiBptPMavJX1PuQ/P/olyz12S7rD4PLyqBTQ8gyXVSOot6VK+dxR53wyl7POjkv7pkpcwpleJSCHP4eQjM0BB/ZuG4Hl9EO8mQx4ZQ0FfL+k+k+t4wNlULpkO24IGnSzpQklzKPDRAMvZ1eXz9uXfH/Pvx5Ie44C5zYQXUgDPj6LEnMCQ3AFkjjupjGF9/kJmxPw1oiquz+6dalXcCRSmYxwK0kDSRI71azb3Y+6GiMi6P/5ey3F3YpExjxdQoG61uX8gBetkh2OWFkUIVGUT1pS9yosZNu1nkl8uZH+mikhxkx1wz7mkB0WkXsKJFw1ZuSWKotY9wjNJS6mUy41JK5P0c2qCnBgIeQWZvEK7Dnf6WUljTT5TS7d0KwezkJShdWIeGeuKKJo7FktUQylcl0i6RtL/HH4OjP+wB0UTLTGHfubRDWyi1g7SaoZQ495z9w7RpaHKqHEfLeklEyWzk+7dl3TTu1KQCpV7+pBB4IWstFFAgvOpJnTL6DoW0xPbw3k/nIYkW+kbmHeXhUEABklazrBDBdzTDfyuBo5DPq1eoUk7ZbSk70l6n3MZjUdCDpQvMF/rezn7/hX7Xs8wsj/7rsrWdQxnZtrwwENUosJkDDZxTjOUkEH1ds6lzJyDZzGScRsonGNcMCIG+WgRKTRQ8Su2p7uRi/mlKjZKekREChS2KIOcTvfqp3RZDlM+cxnfv8Thc75Pt8kqo92VzNTbxBqcQlceivAdByHDIxbvFTMOLovyHAGGK3qc/jJDoDc4hpjABzBm4UAglBFqEAOqt8mB29ss4uJnNCHfSK/tVZMYEfMykt7Bcco1eDLDHCT8gmzzRdLHZL6wRSgzg6GIgVl8Xj2uhPA+oQn53yTdK2mVMC8NzuJ8zaSyM/ApxyzWCFJRvUQ3eQ29BTNFcRgt+FTl2g30zDZZtD/ZRMifE5ES6Y9MxqAHQ7XZikI9nd97j5p1f83GZTPr6Crt2sOcOB1zTYT8HrqjVRZx4wbSAt47SXn/YsZV9zp4zuvJgNGQRaszmoN1rBY6IH4dHiVHcA5dZd2zeIbPv8ZBkghYTQFTx/h1WvSz6c3kM5ewGG8Prvxc5DZWS2u+dypnM5Y3sIJMXmbxfXW0misZN56oxITnWsyl2fg+6+C+zWTefMWr68RwaYF271htHBZqCsKqL28wB/ACjYShrE9nUjfWmEU33A7woqbR4k5UlNk4yoYOzOHvtGs30KO1QgnlZC2VohGOIGn7WEvW0ZdoMeCHfBgdo8X++m3V+s2wEHKzJMblJom92+ne2SHDwT1gknUispPpJLrrVZqwLxTmy5F5jOdVS72F/b6UwlbrcEytrD00+a8l/ZUM82jEZd8peu8uNYS8JxNWqis5IYqQCy1rPUULh8Y7fOYal3zzmPb6aJN7zlf+32bBV9ESclNE85WUX4j4oNbl/fM1b2eoxX3jyXNqiDTP4Xe8Rm9ItfSjvAr6DM0d+o5MXW/CuHO0a7eZTLYT3KF9LktYZ/WdCI+IkoV+lFZ6l3J9OF14HdM0F3MrhXxFjJmqhh5FBera24XqxaCqL0UosK97Z2ku+yJaEqf4D62ByoROcjZuN78Xaa9zTBSzKvxvC+vlrmgWVPU2h4j4FCO5lZ+vNBnpYHHfOOX/PfR83eApTaGM8CLop5l88WSLWAOu4AiNme5owcBO1xhlLGO/eGAFkyYqrtFe5zKzqU7KBE5o/BAIiv7VJSK7qV4GhEF1XtSk0YseWl6lWYI+cXj6pigJLkH3Vk0qfebxe4q0JGOGSDxCWn/Nchk9qJgMfGKS87LDes1IHeVW0LszgaC6sPMYE5lBt4CzRcuy4lVMLKlWfWwcJ+YpxtcGjtOYfzRjTgNIlv0rnpyCveeHNFSJ/jUlonH/3nNYqyOU28qYhHOLbzVPqFc81JQDKxnQ5twLdmjfmQzlxU6eoZ/mma3y8D3VonlhUr6bElhMwJ81RseSxW+jfOYULdYGAw5s4WBtpeU0ijKwxnp/HCfn70piCNlMFEUU8/WpmnZe1Bq80r96m5yMkIwx9nnNHTWFs114q0ArM1HsiUY7j5/rKFIThdrrzR7agHyoy9vd3Ag64uEfKa+xjIKlLqtTUBB7FWgJrQ9joFl1d2cQ2wzHaeDXa6/ztO9Wx+OT+FrzSAKuV12ptOZp+ljnaVawk8uxDpnMZXYCGB3PXqe5sl7QQ5ubhhQR9B4mQpvjIR+gJgrbOxV0rK/rVUyXmyRWdI2a2YLEhVP3BwmN9sJ9BtQpKkxiSDOrUeUhaeQaPevKzKQ3oIVTSGatcynoRl29sIkh440a8pURNoz00Ab4Ts1obxCps1FKl8k5IpKbcmsgu6nz6ETQC+iSqoKKOPmVJBmYnDjHX4EozB9s7TgwykkyYS13URAHpmstYIloOP/HEi6Wx5a4+DwSpH2V18tTyHUPm3iQeS1s09ai4/0ntVgNRQmzHTRulGwaQNnei3FgHqPcMBEJlXrNioAaE8AcupKBd7ElBu1uTxCzg+dmKB4TahiQNX/OxssAb00Uzdeci4S3FYhEQdfkWCrc1cI2K+2EDhsP1OUxZGUnOWTmcgphV0UgZ4jUR1hLlBiuJfqJpb61CXimOrq8RqiEeu6TU3iMwdzYgWhUnWHDDKr0ptLar6USqmOfYYiGMMTUN/KgziGVTo+pNJHBBfF0zVAQc6N2DUL+tcO2Yc1Rk2ss+yBmOko43yCSCljJXAWA7PD4eAt6MBy2yiNACRvVVN05t40pPLYPsT+zlRDpOLG/Jt8OSGKhmnBpivV7q/Y6JkucVgkyWKb52rVZwl0tvNDi+AzRvKjfK1Dnjvpd1FhPEc1LBVsbqENXN35cFaPY2BIVGdlWYZKqgPPj/RythNtpcNycpoOxwAae0bGwhAkAQg01cfiDWDRqZtHhCqFQ5FAtOXKXh/Yh6Ci2N5YMUDW2SHg/N3scn02N++cnMIZCBdwS9gtApRxqDc6OlzWtSrdc8cJGlzP5fzZDri1tQNixISWL/5fSQvcVzfe/wzXfSG8Kuw03pHB/t5KMik+EYJ1EC1d0zCw6fofqRI2ZJwpvyxN4uPs0q/6UR2szyESobxatf3aa7jvfrT0DGPNpYV3H3CI0BYLGllQdy7TX14rUP/zzDHpuRp0EPLnJvH68Qij/RXnyIyku5Ea+5S3NO7s01q77eMY1qqY8T7Qs+4qtq+o2UWhjZO6HuWhjJBlZXWbAHvbFSTAxqMW+RbuG3VfviAP36tshujINh6Tr3kE0BNMl5x8Qq6+mVTdwrMlzpRrGaGPzVpw9NDNFngjoFZZzRCS/FRPXHRZT31X2MgfYTQYX1WE1moaaQJfKEFTs/camkXnUwt9YtNWPiuc67VmRlb0yiRgS/cAe7is0QXuTAm9kikM2DNc5OkeGRaMU8tq0TJHbUCOtezMeRfITiSv1PLLbGE5gb/NOB/1AuR1KlLETDltidyR4XIPasyEnc6eIbRa9kfNifFeXJOAnVJBiKfFCvobcLKccLHWojHJpIPH3iXQlpoNLrdcH44sucvmQOHHjZ9rDrGdbixVmbk/XGy4mtiKuoQDjmQpFJLs6wuSZvqKmL0ky6zOZLry+420UKUaue5ooyeqy9+iopgM989cp1Dcp16bSU1tOJbyFyjedTID5wOk6OAUFFXUDKFRLkmBM3xH7fzIJwPLsxexDMWP2b8g38DqN45ywCuH0VNuv+XmjwOYCjtUakbg6AkGlNoQGBMB5A9g8hh2g7zFE2U4F35FxfHfmwwbxcz3Yl32C/oAwPwDAS6UXdpOhXPZ27Trc9R/SLTla0zzGoXl2QAexnLVZJB/CZMpV7HthfL4lJIrb54u+tdv3/rCiSbw+k88yM9ZxXgKwlHmZycq13iSr0KeMHmUZw6r1VICrLT4D5fy4wq/5DAvfjaWC9oAd9KxwTNUJynUjL+EqpwSTME1zOWMBuIxmZ7p9RCsNq+NmdxW09I1MdNkJeYZNHsIt0qKEO2Z4kvmHadS+Xqv2cqzc93rpuhdl54tg2DISuJljBW3uZjMHrAPqHOYK6zPIM23G2+14Rts4cyLbdxo3Y667UskOo/W/m/PwRhQBwZFkT2vXzDbTtLMZCyfP1155bbfDrpjKZoYH41bO+d97jmEgMPVxFMF0iHESIkiNtDhKuwV058cw0dBZNP+lFsSU/6VWf0E4P/x+IF2eJnokr4uW/2jAKPYjjRb7Cxef70c3qsCl0im1Gj/Uu2eF6sWo0rUiTQq7zS+pYjywnXYwcyOZfI4mKgHj9N2ttHqbRfSlQXhjw5XXy4S7ZbzOovkxVRsphHp8ia3HlyleZS1zHcvoVrdjuNFdEe7edGHzSbpSria/WZ3+cxYV5DCx/4w7FUfyfTW0WO+i7x2YrzKUXZFw/sut+OxJDGkHUxEZPwgCquQcIgxZR9oXekDQk8FF60bqwocupaIoEz6EmaC3C+0Ro6Wgp4eb2tpPJqN+4xXFXQ3TfUfCc5PDNnLZDpLIV1NADKyjZa87mHgmWX57bYdIfIY3pdCGf43xQUXI62kBn3fZxi4SPC8crIjDQ4yzFAaz/XcPJn7xf03VRzIB5Z7qCbBzPQi5jga2E9bCD+ELug8ficEZCk/Cmj8Ro3aLtLxDR1/QffhIHNRTUZCf+S5G7SJBp2b7G31B9+EjcVAFEInZQ2LU7jiN1zf4gu7DR+KwTvkfO9bGx6BNnEQ8XXmN5cT3fEH34SNxwN4A9dgknIEwyWNbeRTwV7WYHBVwFQfbwKb7vOUjiYAiKVT1PczXqCLD/n5UbuLcNxTKoCgExSFNmsFCHI6iJBQFnUbqqbWPHyFceDAOrC/oPpIN+FVaVLrNUa6dLPbvoEQdO4pd1OUylBVkCutsOkqosbNvwcE6qL6g+0hG3MY4ejots1pT3kE4P9QDdfuLKeDfHswD6gu6j2TF2yQcLoqEGurre9EdP1QTfmxJRdn0NlrvD+jmY69Egz+UQvxfgAEALJ4EcRDa/toAAAAASUVORK5CYII="
  ------------------
  911|      0|		}
  912|      1|		php_info_print("This program makes use of the Zend Scripting Language Engine:");
  913|      1|		php_info_print(!sapi_module.phpinfo_as_text?"<br />":"\n");
  ------------------
  |  Branch (913:18): [True: 0, False: 1]
  ------------------
  914|      1|		if (sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (914:7): [True: 1, False: 0]
  ------------------
  915|      1|			php_info_print(zend_version);
  916|      1|		} else {
  917|      0|			zend_html_puts(zend_version, strlen(zend_version));
  918|      0|		}
  919|      1|		php_info_print_box_end();
  920|      1|		zend_string_free(php_uname);
  921|      1|	}
  922|       |
  923|      1|	zend_ini_sort_entries();
  924|       |
  925|      1|	if (flag & PHP_INFO_CONFIGURATION) {
  ------------------
  |  |   26|      1|#define PHP_INFO_CONFIGURATION		(1<<2)
  ------------------
  |  Branch (925:6): [True: 1, False: 0]
  ------------------
  926|      1|		php_info_print_hr();
  927|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (927:7): [True: 0, False: 1]
  ------------------
  928|      0|			php_info_print("<h1>Configuration</h1>\n");
  929|      1|		} else {
  930|      1|			SECTION("Configuration");
  ------------------
  |  |   40|      1|#define SECTION(name)	if (!sapi_module.phpinfo_as_text) { \
  |  |  ------------------
  |  |  |  Branch (40:27): [True: 0, False: 1]
  |  |  ------------------
  |  |   41|      0|							php_info_print("<h2>" name "</h2>\n"); \
  |  |   42|      1|						} else { \
  |  |   43|      1|							php_info_print_table_start(); \
  |  |   44|      1|							php_info_print_table_header(1, name); \
  |  |   45|      1|							php_info_print_table_end(); \
  |  |   46|      1|						} \
  ------------------
  931|      1|		}
  932|      1|		if (!(flag & PHP_INFO_MODULES)) {
  ------------------
  |  |   27|      1|#define PHP_INFO_MODULES			(1<<3)
  ------------------
  |  Branch (932:7): [True: 0, False: 1]
  ------------------
  933|      0|			SECTION("PHP Core");
  ------------------
  |  |   40|      0|#define SECTION(name)	if (!sapi_module.phpinfo_as_text) { \
  |  |  ------------------
  |  |  |  Branch (40:27): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|							php_info_print("<h2>" name "</h2>\n"); \
  |  |   42|      0|						} else { \
  |  |   43|      0|							php_info_print_table_start(); \
  |  |   44|      0|							php_info_print_table_header(1, name); \
  |  |   45|      0|							php_info_print_table_end(); \
  |  |   46|      0|						} \
  ------------------
  934|      0|			display_ini_entries(NULL);
  935|      0|		}
  936|      1|	}
  937|       |
  938|      1|	if (flag & PHP_INFO_MODULES) {
  ------------------
  |  |   27|      1|#define PHP_INFO_MODULES			(1<<3)
  ------------------
  |  Branch (938:6): [True: 1, False: 0]
  ------------------
  939|      1|		HashTable sorted_registry;
  940|      1|		zend_module_entry *module;
  941|       |
  942|      1|		zend_hash_init(&sorted_registry, zend_hash_num_elements(&module_registry), NULL, NULL, 1);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  943|      1|		zend_hash_copy(&sorted_registry, &module_registry, NULL);
  944|      1|		zend_hash_sort(&sorted_registry, module_name_cmp, 0);
  945|       |
  946|     28|		ZEND_HASH_MAP_FOREACH_PTR(&sorted_registry, module) {
  ------------------
  |  | 1341|     13|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 13, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     13|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     13|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     13|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 13]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     13|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     13|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (946:3): [True: 0, False: 1]
  |  Branch (946:3): [True: 1, False: 0]
  ------------------
  947|     28|			if (module->info_func || module->version) {
  ------------------
  |  Branch (947:8): [True: 12, False: 1]
  |  Branch (947:29): [True: 1, False: 0]
  ------------------
  948|     13|				php_info_print_module(module);
  949|     13|			}
  950|     28|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     13|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  951|       |
  952|      1|		SECTION("Additional Modules");
  ------------------
  |  |   40|      1|#define SECTION(name)	if (!sapi_module.phpinfo_as_text) { \
  |  |  ------------------
  |  |  |  Branch (40:27): [True: 0, False: 1]
  |  |  ------------------
  |  |   41|      0|							php_info_print("<h2>" name "</h2>\n"); \
  |  |   42|      1|						} else { \
  |  |   43|      1|							php_info_print_table_start(); \
  |  |   44|      1|							php_info_print_table_header(1, name); \
  |  |   45|      1|							php_info_print_table_end(); \
  |  |   46|      1|						} \
  ------------------
  953|      1|		php_info_print_table_start();
  954|      1|		php_info_print_table_header(1, "Module Name");
  955|     28|		ZEND_HASH_MAP_FOREACH_PTR(&sorted_registry, module) {
  ------------------
  |  | 1341|     13|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      1|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      1|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      1|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      1|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      1|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      1|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     14|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 13, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     13|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     13|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     13|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 13]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     13|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|     13|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      1|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (955:3): [True: 0, False: 1]
  |  Branch (955:3): [True: 1, False: 0]
  ------------------
  956|     28|			if (!module->info_func && !module->version) {
  ------------------
  |  Branch (956:8): [True: 1, False: 12]
  |  Branch (956:30): [True: 0, False: 1]
  ------------------
  957|      0|				php_info_print_module(module);
  958|      0|			}
  959|     28|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     13|		} \
  |  | 1102|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  960|      1|		php_info_print_table_end();
  961|       |
  962|      1|		zend_hash_destroy(&sorted_registry);
  963|      1|	}
  964|       |
  965|      1|	if (flag & PHP_INFO_ENVIRONMENT) {
  ------------------
  |  |   28|      1|#define PHP_INFO_ENVIRONMENT		(1<<4)
  ------------------
  |  Branch (965:6): [True: 1, False: 0]
  ------------------
  966|      1|		SECTION("Environment");
  ------------------
  |  |   40|      1|#define SECTION(name)	if (!sapi_module.phpinfo_as_text) { \
  |  |  ------------------
  |  |  |  Branch (40:27): [True: 0, False: 1]
  |  |  ------------------
  |  |   41|      0|							php_info_print("<h2>" name "</h2>\n"); \
  |  |   42|      1|						} else { \
  |  |   43|      1|							php_info_print_table_start(); \
  |  |   44|      1|							php_info_print_table_header(1, name); \
  |  |   45|      1|							php_info_print_table_end(); \
  |  |   46|      1|						} \
  ------------------
  967|      1|		php_info_print_table_start();
  968|      1|		php_info_print_table_header(2, "Variable", "Value");
  969|      1|		tsrm_env_lock();
  970|     36|		for (env=environ; env!=NULL && *env !=NULL; env++) {
  ------------------
  |  Branch (970:21): [True: 36, False: 0]
  |  Branch (970:34): [True: 35, False: 1]
  ------------------
  971|     35|			tmp1 = estrdup(*env);
  ------------------
  |  |  163|     35|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     35|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     35|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     35|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     35|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  972|     35|			if (!(tmp2=strchr(tmp1,'='))) { /* malformed entry? */
  ------------------
  |  Branch (972:8): [True: 0, False: 35]
  ------------------
  973|      0|				efree(tmp1);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  974|      0|				continue;
  975|      0|			}
  976|     35|			*tmp2 = 0;
  977|     35|			tmp2++;
  978|     35|			php_info_print_table_row(2, tmp1, tmp2);
  979|     35|			efree(tmp1);
  ------------------
  |  |  154|     35|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     35|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     35|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     35|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     35|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  980|     35|		}
  981|      1|		tsrm_env_unlock();
  982|      1|		php_info_print_table_end();
  983|      1|	}
  984|       |
  985|      1|	if (flag & PHP_INFO_VARIABLES) {
  ------------------
  |  |   29|      1|#define PHP_INFO_VARIABLES			(1<<5)
  ------------------
  |  Branch (985:6): [True: 1, False: 0]
  ------------------
  986|      1|		zval *data;
  987|       |
  988|      1|		SECTION("PHP Variables");
  ------------------
  |  |   40|      1|#define SECTION(name)	if (!sapi_module.phpinfo_as_text) { \
  |  |  ------------------
  |  |  |  Branch (40:27): [True: 0, False: 1]
  |  |  ------------------
  |  |   41|      0|							php_info_print("<h2>" name "</h2>\n"); \
  |  |   42|      1|						} else { \
  |  |   43|      1|							php_info_print_table_start(); \
  |  |   44|      1|							php_info_print_table_header(1, name); \
  |  |   45|      1|							php_info_print_table_end(); \
  |  |   46|      1|						} \
  ------------------
  989|       |
  990|      1|		php_info_print_table_start();
  991|      1|		php_info_print_table_header(2, "Variable", "Value");
  992|      1|		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (992:7): [True: 0, False: 1]
  |  Branch (992:99): [True: 0, False: 0]
  ------------------
  993|      0|			php_info_print_table_row(2, "PHP_SELF", Z_STRVAL_P(data));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  994|      0|		}
  995|      1|		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (995:7): [True: 0, False: 1]
  |  Branch (995:109): [True: 0, False: 0]
  ------------------
  996|      0|			php_info_print_table_row(2, "PHP_AUTH_TYPE", Z_STRVAL_P(data));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  997|      0|		}
  998|      1|		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (998:7): [True: 0, False: 1]
  |  Branch (998:109): [True: 0, False: 0]
  ------------------
  999|      0|			php_info_print_table_row(2, "PHP_AUTH_USER", Z_STRVAL_P(data));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1000|      0|		}
 1001|      1|		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if ((data = zend_hash_str_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW")-1)) != NULL && Z_TYPE_P(data) == IS_STRING) {
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (1001:7): [True: 0, False: 1]
  |  Branch (1001:105): [True: 0, False: 0]
  ------------------
 1002|      0|			php_info_print_table_row(2, "PHP_AUTH_PW", Z_STRVAL_P(data));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1003|      0|		}
 1004|      1|		php_print_gpcse_array(ZEND_STRL("_REQUEST"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1005|      1|		php_print_gpcse_array(ZEND_STRL("_GET"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1006|      1|		php_print_gpcse_array(ZEND_STRL("_POST"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1007|      1|		php_print_gpcse_array(ZEND_STRL("_FILES"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1008|      1|		php_print_gpcse_array(ZEND_STRL("_COOKIE"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1009|      1|		php_print_gpcse_array(ZEND_STRL("_SERVER"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1010|      1|		php_print_gpcse_array(ZEND_STRL("_ENV"));
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
 1011|      1|		php_info_print_table_end();
 1012|      1|	}
 1013|       |
 1014|       |
 1015|      1|	if (flag & PHP_INFO_CREDITS) {
  ------------------
  |  |   25|      1|#define PHP_INFO_CREDITS			(1<<1)
  ------------------
  |  Branch (1015:6): [True: 1, False: 0]
  ------------------
 1016|      1|		php_info_print_hr();
 1017|      1|		php_print_credits(PHP_CREDITS_ALL & ~PHP_CREDITS_FULLPAGE);
  ------------------
  |  |   44|      1|#define PHP_CREDITS_ALL				0xFFFFFFFF
  ------------------
              		php_print_credits(PHP_CREDITS_ALL & ~PHP_CREDITS_FULLPAGE);
  ------------------
  |  |   41|      1|#define PHP_CREDITS_FULLPAGE		(1<<5)
  ------------------
 1018|      1|	}
 1019|       |
 1020|      1|	if (flag & PHP_INFO_LICENSE) {
  ------------------
  |  |   30|      1|#define PHP_INFO_LICENSE			(1<<6)
  ------------------
  |  Branch (1020:6): [True: 1, False: 0]
  ------------------
 1021|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1021:7): [True: 0, False: 1]
  ------------------
 1022|      0|			SECTION("License");
  ------------------
  |  |   40|      0|#define SECTION(name)	if (!sapi_module.phpinfo_as_text) { \
  |  |  ------------------
  |  |  |  Branch (40:27): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|							php_info_print("<h2>" name "</h2>\n"); \
  |  |   42|      0|						} else { \
  |  |   43|      0|							php_info_print_table_start(); \
  |  |   44|      0|							php_info_print_table_header(1, name); \
  |  |   45|      0|							php_info_print_table_end(); \
  |  |   46|      0|						} \
  ------------------
 1023|      0|			php_info_print_box_start(0);
 1024|      0|			php_info_print("<p>\n");
 1025|      0|			php_info_print("PHP is free software. You may redistribute it and/or modify it under the ");
 1026|      0|			php_info_print("terms of the Modified BSD License (SPDX-License-Identifier: BSD-3-Clause).\n");
 1027|      0|			php_info_print("</p>\n");
 1028|      0|			php_info_print("<p>\n");
 1029|      0|			php_info_print("Copyright &copy; The PHP Group and Contributors.<br>\n");
 1030|      0|			php_info_print("Copyright &copy; Zend Technologies Ltd., a subsidiary company of Perforce Software, Inc.\n");
 1031|      0|			php_info_print("</p>\n");
 1032|      0|			php_info_print("<p>\n");
 1033|      0|			php_info_print("Redistribution and use in source and binary forms, with or without ");
 1034|      0|			php_info_print("modification, are permitted provided that the following conditions are met:\n");
 1035|      0|			php_info_print("</p>\n");
 1036|      0|			php_info_print("<ol>\n");
 1037|      0|			php_info_print("<li>Redistributions of source code must retain the above copyright notice, this ");
 1038|      0|			php_info_print("list of conditions and the following disclaimer.</li>\n");
 1039|      0|			php_info_print("<li>Redistributions in binary form must reproduce the above copyright notice, ");
 1040|      0|			php_info_print("this list of conditions and the following disclaimer in the documentation ");
 1041|      0|			php_info_print("and/or other materials provided with the distribution.</li>\n");
 1042|      0|			php_info_print("<li>Neither the name of the copyright holder nor the names of its ");
 1043|      0|			php_info_print("contributors may be used to endorse or promote products derived from ");
 1044|      0|			php_info_print("this software without specific prior written permission.</li>\n");
 1045|      0|			php_info_print("</ol>\n");
 1046|      0|			php_info_print("<p>\n");
 1047|      0|			php_info_print("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" ");
 1048|      0|			php_info_print("AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ");
 1049|      0|			php_info_print("IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ");
 1050|      0|			php_info_print("DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE ");
 1051|      0|			php_info_print("FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ");
 1052|      0|			php_info_print("DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ");
 1053|      0|			php_info_print("SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER ");
 1054|      0|			php_info_print("CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ");
 1055|      0|			php_info_print("OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ");
 1056|      0|			php_info_print("OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n");
 1057|      0|			php_info_print("</p>\n");
 1058|      0|			php_info_print_box_end();
 1059|      1|		} else {
 1060|      1|			php_info_print("\n");
 1061|      1|			php_info_print("License\n");
 1062|      1|			php_info_print("\n");
 1063|      1|			php_info_print("PHP is free software. You may redistribute it and/or modify it under the\n");
 1064|      1|			php_info_print("terms of the Modified BSD License (SPDX-License-Identifier: BSD-3-Clause).\n");
 1065|      1|			php_info_print("\n");
 1066|      1|			php_info_print("Copyright © The PHP Group and Contributors.\n");
 1067|      1|			php_info_print("Copyright © Zend Technologies Ltd., a subsidiary company of\n");
 1068|      1|			php_info_print("    Perforce Software, Inc.\n");
 1069|      1|			php_info_print("\n");
 1070|      1|			php_info_print("Redistribution and use in source and binary forms, with or without\n");
 1071|      1|			php_info_print("modification, are permitted provided that the following conditions are met:\n");
 1072|      1|			php_info_print("\n");
 1073|      1|			php_info_print("1. Redistributions of source code must retain the above copyright notice, this\n");
 1074|      1|			php_info_print("   list of conditions and the following disclaimer.\n");
 1075|      1|			php_info_print("\n");
 1076|      1|			php_info_print("2. Redistributions in binary form must reproduce the above copyright notice,\n");
 1077|      1|			php_info_print("   this list of conditions and the following disclaimer in the documentation\n");
 1078|      1|			php_info_print("   and/or other materials provided with the distribution.\n");
 1079|      1|			php_info_print("\n");
 1080|      1|			php_info_print("3. Neither the name of the copyright holder nor the names of its\n");
 1081|      1|			php_info_print("   contributors may be used to endorse or promote products derived from\n");
 1082|      1|			php_info_print("   this software without specific prior written permission.\n");
 1083|      1|			php_info_print("\n");
 1084|      1|			php_info_print("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n");
 1085|      1|			php_info_print("AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n");
 1086|      1|			php_info_print("IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n");
 1087|      1|			php_info_print("DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n");
 1088|      1|			php_info_print("FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n");
 1089|      1|			php_info_print("DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n");
 1090|      1|			php_info_print("SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n");
 1091|      1|			php_info_print("CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n");
 1092|      1|			php_info_print("OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n");
 1093|      1|			php_info_print("OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n");
 1094|      1|		}
 1095|      1|	}
 1096|       |
 1097|      1|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1097:6): [True: 0, False: 1]
  ------------------
 1098|      0|		php_info_print("</div></body></html>");
 1099|      0|	}
 1100|      1|}
php_info_print_table_start:
 1104|     64|{
 1105|     64|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1105:6): [True: 0, False: 64]
  ------------------
 1106|      0|		php_info_print("<table>\n");
 1107|     64|	} else {
 1108|     64|		php_info_print("\n");
 1109|     64|	}
 1110|     64|}
php_info_print_table_end:
 1114|     65|{
 1115|     65|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1115:6): [True: 0, False: 65]
  ------------------
 1116|      0|		php_info_print("</table>\n");
 1117|      0|	}
 1118|       |
 1119|     65|}
php_info_print_box_start:
 1123|      1|{
 1124|      1|	php_info_print_table_start();
 1125|      1|	if (flag) {
  ------------------
  |  Branch (1125:6): [True: 0, False: 1]
  ------------------
 1126|      0|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1126:7): [True: 0, False: 0]
  ------------------
 1127|      0|			php_info_print("<tr class=\"h\"><td>\n");
 1128|      0|		}
 1129|      1|	} else {
 1130|      1|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1130:7): [True: 0, False: 1]
  ------------------
 1131|      0|			php_info_print("<tr class=\"v\"><td>\n");
 1132|      1|		} else {
 1133|      1|			php_info_print("\n");
 1134|      1|		}
 1135|      1|	}
 1136|      1|}
php_info_print_box_end:
 1140|      2|{
 1141|      2|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1141:6): [True: 0, False: 2]
  ------------------
 1142|      0|		php_info_print("</td></tr>\n");
 1143|      0|	}
 1144|      2|	php_info_print_table_end();
 1145|      2|}
php_info_print_hr:
 1149|      2|{
 1150|      2|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1150:6): [True: 0, False: 2]
  ------------------
 1151|      0|		php_info_print("<hr />\n");
 1152|      2|	} else {
 1153|      2|		php_info_print("\n\n _______________________________________________________________________\n\n");
 1154|      2|	}
 1155|      2|}
php_info_print_table_colspan_header:
 1159|      5|{
 1160|      5|	int spaces;
 1161|       |
 1162|      5|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1162:6): [True: 0, False: 5]
  ------------------
 1163|      0|		php_info_printf("<tr class=\"h\"><th colspan=\"%d\">%s</th></tr>\n", num_cols, header );
 1164|      5|	} else {
 1165|      5|		spaces = (int)(74 - strlen(header));
 1166|      5|		php_info_printf("%*s%s%*s\n", (int)(spaces/2), " ", header, (int)(spaces/2), " ");
 1167|      5|	}
 1168|      5|}
php_info_print_table_header:
 1173|     40|{
 1174|     40|	int i;
 1175|     40|	va_list row_elements;
 1176|     40|	char *row_element;
 1177|       |
 1178|     40|	va_start(row_elements, num_cols);
 1179|     40|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1179:6): [True: 0, False: 40]
  ------------------
 1180|      0|		php_info_print("<tr class=\"h\">");
 1181|      0|	}
 1182|     99|	for (i=0; i<num_cols; i++) {
  ------------------
  |  Branch (1182:12): [True: 59, False: 40]
  ------------------
 1183|     59|		row_element = va_arg(row_elements, char *);
 1184|     59|		if (!row_element || !*row_element) {
  ------------------
  |  Branch (1184:7): [True: 0, False: 59]
  |  Branch (1184:23): [True: 0, False: 59]
  ------------------
 1185|      0|			row_element = " ";
 1186|      0|		}
 1187|     59|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1187:7): [True: 0, False: 59]
  ------------------
 1188|      0|			php_info_print("<th>");
 1189|      0|			php_info_print(row_element);
 1190|      0|			php_info_print("</th>");
 1191|     59|		} else {
 1192|     59|			php_info_print(row_element);
 1193|     59|			if (i < num_cols-1) {
  ------------------
  |  Branch (1193:8): [True: 19, False: 40]
  ------------------
 1194|     19|				php_info_print(" => ");
 1195|     40|			} else {
 1196|     40|				php_info_print("\n");
 1197|     40|			}
 1198|     59|		}
 1199|     59|	}
 1200|     40|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1200:6): [True: 0, False: 40]
  ------------------
 1201|      0|		php_info_print("</tr>\n");
 1202|      0|	}
 1203|       |
 1204|       |	va_end(row_elements);
 1205|     40|}
php_info_print_table_row:
 1255|    216|{
 1256|    216|	va_list row_elements;
 1257|       |
 1258|    216|	va_start(row_elements, num_cols);
 1259|    216|	php_info_print_table_row_internal(num_cols, "v", row_elements);
 1260|       |	va_end(row_elements);
 1261|    216|}
zif_phpinfo:
 1278|      1|{
 1279|      1|	zend_long flag = PHP_INFO_ALL;
  ------------------
  |  |   31|      1|#define PHP_INFO_ALL				0xFFFFFFFF
  ------------------
 1280|       |
 1281|      3|	ZEND_PARSE_PARAMETERS_START(0, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1282|      3|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
 1283|      3|		Z_PARAM_LONG(flag)
  ------------------
  |  | 1905|      1|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1283:3): [True: 1, False: 0]
  |  Branch (1283:3): [True: 0, False: 0]
  |  Branch (1283:3): [True: 0, False: 1]
  |  Branch (1283:3): [True: 1, False: 0]
  |  Branch (1283:3): [True: 1, False: 0]
  |  Branch (1283:3): [True: 0, False: 0]
  |  Branch (1283:3): [True: 1, False: 0]
  |  Branch (1283:3): [True: 0, False: 0]
  |  Branch (1283:3): [True: 0, False: 0]
  |  Branch (1283:3): [True: 0, False: 0]
  ------------------
 1284|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1284:2): [True: 0, False: 0]
  |  Branch (1284:2): [True: 0, False: 0]
  |  Branch (1284:2): [True: 0, False: 0]
  |  Branch (1284:2): [True: 0, False: 0]
  ------------------
 1285|       |
 1286|       |	/* Andale!  Andale!  Yee-Hah! */
 1287|      1|	php_output_start_default();
 1288|      1|	php_print_info((int)flag);
 1289|      1|	php_output_end();
 1290|       |
 1291|      1|	RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1292|      1|}
info.c:php_info_printf:
   65|      8|{
   66|      8|	char *buf;
   67|      8|	size_t len, written;
   68|      8|	va_list argv;
   69|       |
   70|      8|	va_start(argv, fmt);
   71|      8|	len = vspprintf(&buf, 0, fmt, argv);
  ------------------
  |  |   29|      8|#define vspprintf zend_vspprintf
  ------------------
   72|      8|	va_end(argv);
   73|       |
   74|      8|	written = php_output_write(buf, len);
   75|       |	efree(buf);
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      8|	return written;
   77|      8|}
info.c:php_is_valid_uname_mode:
  648|      1|static inline bool php_is_valid_uname_mode(char mode) {
  649|      1|	return mode == 'a' || mode == 'm' || mode == 'n' || mode == 'r' || mode == 's' || mode == 'v';
  ------------------
  |  Branch (649:9): [True: 1, False: 0]
  |  Branch (649:24): [True: 0, False: 0]
  |  Branch (649:39): [True: 0, False: 0]
  |  Branch (649:54): [True: 0, False: 0]
  |  Branch (649:69): [True: 0, False: 0]
  |  Branch (649:84): [True: 0, False: 0]
  ------------------
  650|      1|}
info.c:php_info_print:
   81|  1.68k|{
   82|  1.68k|	return php_output_write(str, strlen(str));
   83|  1.68k|}
info.c:php_info_print_stream_hash:
   87|      3|{
   88|      3|	zend_string *key;
   89|       |
   90|      3|	if (ht) {
  ------------------
  |  Branch (90:6): [True: 3, False: 0]
  ------------------
   91|      3|		if (zend_hash_num_elements(ht)) {
  ------------------
  |  Branch (91:7): [True: 3, False: 0]
  ------------------
   92|      3|			int first = 1;
   93|       |
   94|      3|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (94:8): [True: 0, False: 3]
  ------------------
   95|      0|				php_info_printf("<tr><td class=\"e\">Registered %s</td><td class=\"v\">", name);
   96|      3|			} else {
   97|      3|				php_info_printf("\nRegistered %s => ", name);
   98|      3|			}
   99|       |
  100|      3|			if (!HT_IS_PACKED(ht)) {
  ------------------
  |  |   62|      3|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  ------------------
  |  Branch (100:8): [True: 3, False: 0]
  ------------------
  101|     38|				ZEND_HASH_MAP_FOREACH_STR_KEY(ht, key) {
  ------------------
  |  | 1361|     16|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      3|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      3|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      3|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      3|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      3|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      3|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|     19|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 16, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|     16|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|     16|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     16|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 16]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|     16|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 16]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1362|     16|	_key = _p->key;
  ------------------
  |  Branch (101:5): [True: 0, False: 3]
  |  Branch (101:5): [True: 3, False: 0]
  ------------------
  102|     38|					if (key) {
  ------------------
  |  Branch (102:10): [True: 16, False: 0]
  ------------------
  103|     16|						if (first) {
  ------------------
  |  Branch (103:11): [True: 3, False: 13]
  ------------------
  104|      3|							first = 0;
  105|     13|						} else {
  106|     13|							php_info_print(", ");
  107|     13|						}
  108|     16|						if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (108:11): [True: 0, False: 16]
  ------------------
  109|      0|							php_info_print_html_esc(ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							php_info_print_html_esc(ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  110|     16|						} else {
  111|     16|							php_info_print(ZSTR_VAL(key));
  ------------------
  |  |   67|     16|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  112|     16|						}
  113|     16|					}
  114|     38|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     16|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  115|      3|			}
  116|       |
  117|      3|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (117:8): [True: 0, False: 3]
  ------------------
  118|      0|				php_info_print("</td></tr>\n");
  119|      0|			}
  120|      3|		} else {
  121|      0|			char reg_name[128];
  122|      0|			snprintf(reg_name, sizeof(reg_name), "Registered %s", name);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  123|      0|			php_info_print_table_row(2, reg_name, "none registered");
  124|      0|		}
  125|      3|	} else {
  126|      0|		php_info_print_table_row(2, name, "disabled");
  127|      0|	}
  128|      3|}
info.c:module_name_cmp:
  751|     33|{
  752|     33|	return strcasecmp(((zend_module_entry *)Z_PTR(f->val))->name,
  ------------------
  |  | 1052|     33|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  753|     33|				  ((zend_module_entry *)Z_PTR(s->val))->name);
  ------------------
  |  | 1052|     33|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  754|     33|}
info.c:php_print_gpcse_array:
  166|      7|{
  167|      7|	zval *data, *tmp;
  168|      7|	zend_string *string_key;
  169|      7|	zend_ulong num_key;
  170|      7|	zend_string *key;
  171|       |
  172|      7|	key = zend_string_init(name, name_length, 0);
  173|      7|	zend_is_auto_global(key);
  174|       |
  175|      7|	if ((data = zend_hash_find_deref(&EG(symbol_table), key)) != NULL && (Z_TYPE_P(data) == IS_ARRAY)) {
  ------------------
  |  |   45|      7|# define EG(v) (executor_globals.v)
  ------------------
              	if ((data = zend_hash_find_deref(&EG(symbol_table), key)) != NULL && (Z_TYPE_P(data) == IS_ARRAY)) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if ((data = zend_hash_find_deref(&EG(symbol_table), key)) != NULL && (Z_TYPE_P(data) == IS_ARRAY)) {
  ------------------
  |  |  613|      7|#define IS_ARRAY					7
  ------------------
  |  Branch (175:6): [True: 7, False: 0]
  |  Branch (175:71): [True: 7, False: 0]
  ------------------
  176|    151|		ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(data), num_key, string_key, tmp) {
  ------------------
  |  | 1196|     72|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      7|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      7|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      7|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      7|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      7|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      7|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      7|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      7|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      7|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      7|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      7|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      7|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      7|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      7|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     79|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 72, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     72|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     72|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     72|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     72|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     72|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 72]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|     72|			} else { \
  |  |  |  |  |  | 1060|     72|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     72|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     72|				__h = _p->h; \
  |  |  |  |  |  | 1063|     72|				__key = _p->key; \
  |  |  |  |  |  | 1064|     72|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     72|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 72]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|     72|			} \
  |  |  |  |  |  | 1068|     72|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     72|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     72|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 72]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|     72|	_h = __h; \
  |  | 1198|     72|	_key = __key; \
  |  | 1199|     72|	_val = _z;
  ------------------
  177|    151|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (177:8): [True: 0, False: 72]
  ------------------
  178|      0|				php_info_print("<tr>");
  179|      0|				php_info_print("<td class=\"e\">");
  180|      0|			}
  181|       |
  182|    151|			php_info_print("$");
  183|    151|			php_info_print(name);
  184|    151|			php_info_print("['");
  185|       |
  186|    151|			if (string_key != NULL) {
  ------------------
  |  Branch (186:8): [True: 72, False: 0]
  ------------------
  187|     72|				if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (187:9): [True: 0, False: 72]
  ------------------
  188|      0|					php_info_print_html_esc(ZSTR_VAL(string_key), ZSTR_LEN(string_key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					php_info_print_html_esc(ZSTR_VAL(string_key), ZSTR_LEN(string_key));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  189|     72|				} else {
  190|     72|					php_info_print(ZSTR_VAL(string_key));
  ------------------
  |  |   67|     72|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  191|     72|				}
  192|     72|			} else {
  193|      0|				php_info_printf(ZEND_ULONG_FMT, num_key);
  ------------------
  |  |   55|      0|# define ZEND_ULONG_FMT "%" PRIu64
  ------------------
  194|      0|			}
  195|    151|			php_info_print("']");
  196|    151|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (196:8): [True: 0, False: 72]
  ------------------
  197|      0|				php_info_print("</td><td class=\"v\">");
  198|     72|			} else {
  199|     72|				php_info_print(" => ");
  200|     72|			}
  201|    151|			ZVAL_DEREF(tmp);
  ------------------
  |  | 1474|     72|#define ZVAL_DEREF(z) do {								\
  |  | 1475|     72|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|     72|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|     72|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 72]
  |  |  ------------------
  ------------------
  202|    151|			if (Z_TYPE_P(tmp) == IS_ARRAY) {
  ------------------
  |  |  669|     72|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     72|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(tmp) == IS_ARRAY) {
  ------------------
  |  |  613|     72|#define IS_ARRAY					7
  ------------------
  |  Branch (202:8): [True: 0, False: 72]
  ------------------
  203|      0|				if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (203:9): [True: 0, False: 0]
  ------------------
  204|      0|					zend_string *str = zend_print_zval_r_to_str(tmp, 0);
  205|      0|					php_info_print("<pre>");
  206|      0|					php_info_print_html_esc(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					php_info_print_html_esc(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  207|      0|					php_info_print("</pre>");
  208|      0|					zend_string_release_ex(str, 0);
  209|      0|				} else {
  210|      0|					zend_print_zval_r(tmp, 0);
  211|      0|				}
  212|     72|			} else {
  213|     72|				zend_string *tmp2;
  214|     72|				zend_string *str = zval_get_tmp_string(tmp, &tmp2);
  215|       |
  216|     72|				if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (216:9): [True: 0, False: 72]
  ------------------
  217|      0|					if (ZSTR_LEN(str) == 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (217:10): [True: 0, False: 0]
  ------------------
  218|      0|						php_info_print("<i>no value</i>");
  219|      0|					} else {
  220|      0|						php_info_print_html_esc(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_info_print_html_esc(ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  221|      0|					}
  222|     72|				} else {
  223|     72|					php_info_print(ZSTR_VAL(str));
  ------------------
  |  |   67|     72|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  224|     72|				}
  225|       |
  226|     72|				zend_tmp_string_release(tmp2);
  227|     72|			}
  228|    151|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (228:8): [True: 0, False: 72]
  ------------------
  229|      0|				php_info_print("</td></tr>\n");
  230|     72|			} else {
  231|     72|				php_info_print("\n");
  232|     72|			}
  233|    151|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     72|		} \
  |  | 1102|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
  234|      7|	}
  235|      7|	zend_string_efree(key);
  236|      7|}
info.c:php_info_print_table_row_internal:
 1211|    216|{
 1212|    216|	int i;
 1213|    216|	char *row_element;
 1214|       |
 1215|    216|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1215:6): [True: 0, False: 216]
  ------------------
 1216|      0|		php_info_print("<tr>");
 1217|      0|	}
 1218|    645|	for (i=0; i<num_cols; i++) {
  ------------------
  |  Branch (1218:12): [True: 429, False: 216]
  ------------------
 1219|    429|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1219:7): [True: 0, False: 429]
  ------------------
 1220|      0|			php_info_printf("<td class=\"%s\">",
 1221|      0|			   (i==0 ? "e" : value_class )
  ------------------
  |  Branch (1221:8): [True: 0, False: 0]
  ------------------
 1222|      0|			);
 1223|      0|		}
 1224|    429|		row_element = va_arg(row_elements, char *);
 1225|    429|		if (!row_element || !*row_element) {
  ------------------
  |  Branch (1225:7): [True: 0, False: 429]
  |  Branch (1225:23): [True: 2, False: 427]
  ------------------
 1226|      2|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1226:8): [True: 0, False: 2]
  ------------------
 1227|      0|				php_info_print( "<i>no value</i>" );
 1228|      2|			} else {
 1229|      2|				php_info_print( " " );
 1230|      2|			}
 1231|    427|		} else {
 1232|    427|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1232:8): [True: 0, False: 427]
  ------------------
 1233|      0|				php_info_print_html_esc(row_element, strlen(row_element));
 1234|    427|			} else {
 1235|    427|				php_info_print(row_element);
 1236|    427|				if (i < num_cols-1) {
  ------------------
  |  Branch (1236:9): [True: 213, False: 214]
  ------------------
 1237|    213|					php_info_print(" => ");
 1238|    213|				}
 1239|    427|			}
 1240|    427|		}
 1241|    429|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1241:7): [True: 0, False: 429]
  ------------------
 1242|      0|			php_info_print(" </td>");
 1243|    429|		} else if (i == (num_cols - 1)) {
  ------------------
  |  Branch (1243:14): [True: 216, False: 213]
  ------------------
 1244|    216|			php_info_print("\n");
 1245|    216|		}
 1246|    429|	}
 1247|    216|	if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (1247:6): [True: 0, False: 216]
  ------------------
 1248|      0|		php_info_print("</tr>\n");
 1249|      0|	}
 1250|    216|}

AvifInfoIdentifyStream:
  894|     16|                                      skip_stream_t skip) {
  895|     16|  if (read == NULL) return kAvifInfoNotEnoughData;
  ------------------
  |  Branch (895:7): [True: 0, False: 16]
  ------------------
  896|       |
  897|     16|  AvifInfoInternalStream internal_stream;
  898|     16|  internal_stream.stream = stream;
  899|     16|  internal_stream.read = read;
  900|     16|  internal_stream.skip = skip;  // Fallbacks to 'read' if null.
  901|     16|  internal_stream.num_read_bytes = 0;
  902|     16|  return AvifInfoInternalConvertStatus(ParseFtyp(&internal_stream));
  903|     16|}
avifinfo.c:AvifInfoInternalConvertStatus:
   27|     16|static AvifInfoStatus AvifInfoInternalConvertStatus(AvifInfoInternalStatus s) {
   28|     16|  return (s == kFound)                         ? kAvifInfoOk
  ------------------
  |  Branch (28:10): [True: 0, False: 16]
  ------------------
   29|     16|         : (s == kNotFound || s == kTruncated) ? kAvifInfoNotEnoughData
  ------------------
  |  Branch (29:13): [True: 0, False: 16]
  |  Branch (29:31): [True: 4, False: 12]
  ------------------
   30|     16|         : (s == kAborted)                     ? kAvifInfoTooComplex
  ------------------
  |  Branch (30:12): [True: 2, False: 10]
  ------------------
   31|     12|                                               : kAvifInfoInvalidFile;
   32|     16|}
avifinfo.c:ParseFtyp:
  796|     16|static AvifInfoInternalStatus ParseFtyp(AvifInfoInternalStream* stream) {
  797|     16|  AvifInfoInternalBox box;
  798|     16|  uint32_t num_parsed_boxes = 0;
  799|     16|  const int nesting_level = 0;
  800|     16|  AVIFINFO_CHECK_FOUND(AvifInfoInternalParseBox(
  ------------------
  |  |   93|     16|  AVIFINFO_CHECK_STATUS_IS((check_status), kFound)
  |  |  ------------------
  |  |  |  |   88|     16|  do {                                                                     \
  |  |  |  |   89|     16|    const AvifInfoInternalStatus status_returned = (check_status);         \
  |  |  |  |   90|     16|    AVIFINFO_CHECK(status_returned == (expected_status), status_returned); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     16|  do {                                                     \
  |  |  |  |  |  |   85|     16|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      2|  do {                                \
  |  |  |  |  |  |  |  |   79|      2|    return (check_status);            \
  |  |  |  |  |  |  |  |   80|      2|  } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (85:9): [True: 2, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   86|     16|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (86:12): [Folded, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   91|     16|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (91:12): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  801|     14|      nesting_level, stream, AVIFINFO_MAX_SIZE, &num_parsed_boxes, &box));
  802|     14|  AVIFINFO_CHECK(!memcmp(box.type, "ftyp", 4), kInvalid);
  ------------------
  |  |   84|     14|  do {                                                     \
  |  |   85|     14|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      8|  do {                                \
  |  |  |  |   79|      8|    return (check_status);            \
  |  |  |  |   80|      8|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 8, False: 6]
  |  |  ------------------
  |  |   86|     14|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 6]
  |  |  ------------------
  ------------------
  803|       |  // Iterate over brands. See ISO/IEC 14496-12:2012(E) 4.3.1
  804|      6|  AVIFINFO_CHECK(box.content_size >= 8, kInvalid);  // major_brand,minor_version
  ------------------
  |  |   84|      6|  do {                                                     \
  |  |   85|      6|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 6]
  |  |  ------------------
  |  |   86|      6|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 6]
  |  |  ------------------
  ------------------
  805|    188|  for (uint32_t i = 0; i + 4 <= box.content_size; i += 4) {
  ------------------
  |  Branch (805:24): [True: 187, False: 1]
  ------------------
  806|    187|    const uint8_t* data;
  807|    187|    AVIFINFO_CHECK_FOUND(AvifInfoInternalRead(stream, 4, &data));
  ------------------
  |  |   93|    187|  AVIFINFO_CHECK_STATUS_IS((check_status), kFound)
  |  |  ------------------
  |  |  |  |   88|    187|  do {                                                                     \
  |  |  |  |   89|    187|    const AvifInfoInternalStatus status_returned = (check_status);         \
  |  |  |  |   90|    187|    AVIFINFO_CHECK(status_returned == (expected_status), status_returned); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    187|  do {                                                     \
  |  |  |  |  |  |   85|    187|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      3|  do {                                \
  |  |  |  |  |  |  |  |   79|      3|    return (check_status);            \
  |  |  |  |  |  |  |  |   80|      3|  } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (85:9): [True: 3, False: 184]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   86|    187|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (86:12): [Folded, False: 184]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   91|    187|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (91:12): [Folded, False: 184]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  808|    184|    if (i == 4) continue;  // Skip minor_version.
  ------------------
  |  Branch (808:9): [True: 6, False: 178]
  ------------------
  809|    178|    if (!memcmp(data, "avif", 4) || !memcmp(data, "avis", 4)) {
  ------------------
  |  Branch (809:9): [True: 0, False: 178]
  |  Branch (809:37): [True: 0, False: 178]
  ------------------
  810|      0|      AVIFINFO_CHECK_FOUND(
  ------------------
  |  |   93|      0|  AVIFINFO_CHECK_STATUS_IS((check_status), kFound)
  |  |  ------------------
  |  |  |  |   88|      0|  do {                                                                     \
  |  |  |  |   89|      0|    const AvifInfoInternalStatus status_returned = (check_status);         \
  |  |  |  |   90|      0|    AVIFINFO_CHECK(status_returned == (expected_status), status_returned); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|  do {                                                     \
  |  |  |  |  |  |   85|      0|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|  do {                                \
  |  |  |  |  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (85:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   86|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (86:12): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   91|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (91:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  811|      0|          AvifInfoInternalSkip(stream, box.content_size - (i + 4)));
  812|      0|      return kFound;
  813|      0|    }
  814|    178|    AVIFINFO_CHECK(i <= 32 * 4, kAborted);  // Be reasonable.
  ------------------
  |  |   84|    178|  do {                                                     \
  |  |   85|    178|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      2|  do {                                \
  |  |  |  |   79|      2|    return (check_status);            \
  |  |  |  |   80|      2|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 2, False: 176]
  |  |  ------------------
  |  |   86|    178|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 176]
  |  |  ------------------
  ------------------
  815|    178|  }
  816|      1|  AVIFINFO_RETURN(kInvalid);  // No AVIF brand no good.
  ------------------
  |  |   78|      1|  do {                                \
  |  |   79|      1|    return (check_status);            \
  |  |   80|      1|  } while (0)
  |  |  ------------------
  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
  817|      1|}
avifinfo.c:AvifInfoInternalParseBox:
  301|     16|    AvifInfoInternalBox* box) {
  302|     16|  const uint8_t* data;
  303|       |  // See ISO/IEC 14496-12:2012(E) 4.2
  304|     16|  uint32_t box_header_size = 8;  // box 32b size + 32b type (at least)
  305|     16|  AVIFINFO_CHECK(box_header_size <= num_remaining_bytes, kInvalid);
  ------------------
  |  |   84|     16|  do {                                                     \
  |  |   85|     16|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 16]
  |  |  ------------------
  |  |   86|     16|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 16]
  |  |  ------------------
  ------------------
  306|     16|  AVIFINFO_CHECK_FOUND(AvifInfoInternalRead(stream, 8, &data));
  ------------------
  |  |   93|     16|  AVIFINFO_CHECK_STATUS_IS((check_status), kFound)
  |  |  ------------------
  |  |  |  |   88|     16|  do {                                                                     \
  |  |  |  |   89|     16|    const AvifInfoInternalStatus status_returned = (check_status);         \
  |  |  |  |   90|     16|    AVIFINFO_CHECK(status_returned == (expected_status), status_returned); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     16|  do {                                                     \
  |  |  |  |  |  |   85|     16|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      1|  do {                                \
  |  |  |  |  |  |  |  |   79|      1|    return (check_status);            \
  |  |  |  |  |  |  |  |   80|      1|  } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (85:9): [True: 1, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   86|     16|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (86:12): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   91|     16|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (91:12): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  307|     15|  box->size = AvifInfoInternalReadBigEndian(data, sizeof(uint32_t));
  308|     15|  memcpy(box->type, data + 4, 4);
  309|       |  // 'box->size==1' means 64-bit size should be read after the box type.
  310|       |  // 'box->size==0' means this box extends to all remaining bytes.
  311|     15|  if (box->size == 1) {
  ------------------
  |  Branch (311:7): [True: 0, False: 15]
  ------------------
  312|      0|    box_header_size += 8;
  313|      0|    AVIFINFO_CHECK(box_header_size <= num_remaining_bytes, kInvalid);
  ------------------
  |  |   84|      0|  do {                                                     \
  |  |   85|      0|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   86|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
  314|      0|    AVIFINFO_CHECK_FOUND(AvifInfoInternalRead(stream, 8, &data));
  ------------------
  |  |   93|      0|  AVIFINFO_CHECK_STATUS_IS((check_status), kFound)
  |  |  ------------------
  |  |  |  |   88|      0|  do {                                                                     \
  |  |  |  |   89|      0|    const AvifInfoInternalStatus status_returned = (check_status);         \
  |  |  |  |   90|      0|    AVIFINFO_CHECK(status_returned == (expected_status), status_returned); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|  do {                                                     \
  |  |  |  |  |  |   85|      0|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|  do {                                \
  |  |  |  |  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (85:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   86|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (86:12): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   91|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (91:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|       |    // Stop the parsing if any box has a size greater than 4GB.
  316|      0|    AVIFINFO_CHECK(AvifInfoInternalReadBigEndian(data, sizeof(uint32_t)) == 0,
  ------------------
  |  |   84|      0|  do {                                                     \
  |  |   85|      0|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   86|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
  317|      0|                   kAborted);
  318|       |    // Read the 32 least-significant bits.
  319|      0|    box->size = AvifInfoInternalReadBigEndian(data + 4, sizeof(uint32_t));
  320|     15|  } else if (box->size == 0) {
  ------------------
  |  Branch (320:14): [True: 0, False: 15]
  ------------------
  321|       |    // ISO/IEC 14496-12 4.2.2:
  322|       |    //   if size is 0, then this box shall be in a top-level box
  323|       |    //   (i.e. not contained in another box)
  324|      0|    AVIFINFO_CHECK(nesting_level == 0, kInvalid);
  ------------------
  |  |   84|      0|  do {                                                     \
  |  |   85|      0|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   86|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
  325|      0|    box->size = num_remaining_bytes;
  326|      0|  }
  327|     15|  AVIFINFO_CHECK(box->size >= box_header_size, kInvalid);
  ------------------
  |  |   84|     15|  do {                                                     \
  |  |   85|     15|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      1|  do {                                \
  |  |  |  |   79|      1|    return (check_status);            \
  |  |  |  |   80|      1|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 1, False: 14]
  |  |  ------------------
  |  |   86|     15|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 14]
  |  |  ------------------
  ------------------
  328|     14|  AVIFINFO_CHECK(box->size <= num_remaining_bytes, kInvalid);
  ------------------
  |  |   84|     14|  do {                                                     \
  |  |   85|     14|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 14]
  |  |  ------------------
  |  |   86|     14|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 14]
  |  |  ------------------
  ------------------
  329|       |
  330|       |  // 16 bytes of usertype should be read here if the box type is 'uuid'.
  331|       |  // 'uuid' boxes are skipped so usertype is part of the skipped body.
  332|       |
  333|     14|  const int has_fullbox_header =
  334|     14|      !memcmp(box->type, "meta", 4) || !memcmp(box->type, "pitm", 4) ||
  ------------------
  |  Branch (334:7): [True: 0, False: 14]
  |  Branch (334:40): [True: 0, False: 14]
  ------------------
  335|     14|      !memcmp(box->type, "ipma", 4) || !memcmp(box->type, "ispe", 4) ||
  ------------------
  |  Branch (335:7): [True: 0, False: 14]
  |  Branch (335:40): [True: 0, False: 14]
  ------------------
  336|     14|      !memcmp(box->type, "pixi", 4) || !memcmp(box->type, "iref", 4) ||
  ------------------
  |  Branch (336:7): [True: 0, False: 14]
  |  Branch (336:40): [True: 0, False: 14]
  ------------------
  337|     14|      !memcmp(box->type, "auxC", 4) || !memcmp(box->type, "iinf", 4) ||
  ------------------
  |  Branch (337:7): [True: 0, False: 14]
  |  Branch (337:40): [True: 0, False: 14]
  ------------------
  338|     14|      !memcmp(box->type, "infe", 4);
  ------------------
  |  Branch (338:7): [True: 0, False: 14]
  ------------------
  339|     14|  if (has_fullbox_header) box_header_size += 4;
  ------------------
  |  Branch (339:7): [True: 0, False: 14]
  ------------------
  340|     14|  AVIFINFO_CHECK(box->size >= box_header_size, kInvalid);
  ------------------
  |  |   84|     14|  do {                                                     \
  |  |   85|     14|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 14]
  |  |  ------------------
  |  |   86|     14|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 14]
  |  |  ------------------
  ------------------
  341|     14|  box->content_size = box->size - box_header_size;
  342|       |  // AvifInfoGetFeaturesStream() can be called on a full stream or on a stream
  343|       |  // where the 'ftyp' box was already read. Do not count 'ftyp' boxes towards
  344|       |  // AVIFINFO_MAX_NUM_BOXES, so that this function returns the same status in
  345|       |  // both situations (because of the AVIFINFO_MAX_NUM_BOXES check that would
  346|       |  // compare a different box count otherwise). This is fine because top-level
  347|       |  // 'ftyp' boxes are just skipped anyway.
  348|     14|  if (nesting_level != 0 || memcmp(box->type, "ftyp", 4)) {
  ------------------
  |  Branch (348:7): [True: 0, False: 14]
  |  Branch (348:29): [True: 8, False: 6]
  ------------------
  349|       |    // Avoid timeouts. The maximum number of parsed boxes is arbitrary.
  350|      8|    ++*num_parsed_boxes;
  351|      8|    AVIFINFO_CHECK(*num_parsed_boxes < AVIFINFO_MAX_NUM_BOXES, kAborted);
  ------------------
  |  |   84|      8|  do {                                                     \
  |  |   85|      8|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      0|  do {                                \
  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 0, False: 8]
  |  |  ------------------
  |  |   86|      8|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 8]
  |  |  ------------------
  ------------------
  352|      8|  }
  353|       |
  354|     14|  box->version = 0;
  355|     14|  box->flags = 0;
  356|     14|  if (has_fullbox_header) {
  ------------------
  |  Branch (356:7): [True: 0, False: 14]
  ------------------
  357|      0|    AVIFINFO_CHECK_FOUND(AvifInfoInternalRead(stream, 4, &data));
  ------------------
  |  |   93|      0|  AVIFINFO_CHECK_STATUS_IS((check_status), kFound)
  |  |  ------------------
  |  |  |  |   88|      0|  do {                                                                     \
  |  |  |  |   89|      0|    const AvifInfoInternalStatus status_returned = (check_status);         \
  |  |  |  |   90|      0|    AVIFINFO_CHECK(status_returned == (expected_status), status_returned); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|  do {                                                     \
  |  |  |  |  |  |   85|      0|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|  do {                                \
  |  |  |  |  |  |  |  |   79|      0|    return (check_status);            \
  |  |  |  |  |  |  |  |   80|      0|  } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (85:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   86|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (86:12): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   91|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (91:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  358|      0|    box->version = AvifInfoInternalReadBigEndian(data, 1);
  359|      0|    box->flags = AvifInfoInternalReadBigEndian(data + 1, 3);
  360|       |    // See AV1 Image File Format (AVIF) 8.1
  361|       |    // at https://aomediacodec.github.io/av1-avif/#avif-boxes (available when
  362|       |    // https://github.com/AOMediaCodec/av1-avif/pull/170 is merged).
  363|      0|    const uint32_t is_parsable =
  364|      0|        (!memcmp(box->type, "meta", 4) && box->version <= 0) ||
  ------------------
  |  Branch (364:10): [True: 0, False: 0]
  |  Branch (364:43): [True: 0, False: 0]
  ------------------
  365|      0|        (!memcmp(box->type, "pitm", 4) && box->version <= 1) ||
  ------------------
  |  Branch (365:10): [True: 0, False: 0]
  |  Branch (365:43): [True: 0, False: 0]
  ------------------
  366|      0|        (!memcmp(box->type, "ipma", 4) && box->version <= 1) ||
  ------------------
  |  Branch (366:10): [True: 0, False: 0]
  |  Branch (366:43): [True: 0, False: 0]
  ------------------
  367|      0|        (!memcmp(box->type, "ispe", 4) && box->version <= 0) ||
  ------------------
  |  Branch (367:10): [True: 0, False: 0]
  |  Branch (367:43): [True: 0, False: 0]
  ------------------
  368|      0|        (!memcmp(box->type, "pixi", 4) && box->version <= 0) ||
  ------------------
  |  Branch (368:10): [True: 0, False: 0]
  |  Branch (368:43): [True: 0, False: 0]
  ------------------
  369|      0|        (!memcmp(box->type, "iref", 4) && box->version <= 1) ||
  ------------------
  |  Branch (369:10): [True: 0, False: 0]
  |  Branch (369:43): [True: 0, False: 0]
  ------------------
  370|      0|        (!memcmp(box->type, "auxC", 4) && box->version <= 0) ||
  ------------------
  |  Branch (370:10): [True: 0, False: 0]
  |  Branch (370:43): [True: 0, False: 0]
  ------------------
  371|      0|        (!memcmp(box->type, "iinf", 4) && box->version <= 1) ||
  ------------------
  |  Branch (371:10): [True: 0, False: 0]
  |  Branch (371:43): [True: 0, False: 0]
  ------------------
  372|      0|        (!memcmp(box->type, "infe", 4) && box->version >= 2 &&
  ------------------
  |  Branch (372:10): [True: 0, False: 0]
  |  Branch (372:43): [True: 0, False: 0]
  ------------------
  373|      0|         box->version <= 3);
  ------------------
  |  Branch (373:10): [True: 0, False: 0]
  ------------------
  374|       |    // Instead of considering this file as invalid, skip unparsable boxes.
  375|      0|    if (!is_parsable) memcpy(box->type, "skip", 4);  // FreeSpaceBox
  ------------------
  |  Branch (375:9): [True: 0, False: 0]
  ------------------
  376|      0|  }
  377|     14|  AVIF_DEBUG_LOG("%*c", nesting_level * 2, ' ');
  378|     14|  AVIF_DEBUG_LOG("Box type %.4s size %d\n", box->type, box->size);
  379|     14|  return kFound;
  380|     14|}
avifinfo.c:AvifInfoInternalReadBigEndian:
   50|     15|                                              uint32_t num_bytes) {
   51|     15|  uint32_t value = 0;
   52|     75|  for (uint32_t i = 0; i < num_bytes; ++i) {
  ------------------
  |  Branch (52:24): [True: 60, False: 15]
  ------------------
   53|     60|    value = (value << 8) | input[i];
   54|     60|  }
   55|     15|  return value;
   56|     15|}
avifinfo.c:AvifInfoInternalRead:
  117|    203|    AvifInfoInternalStream* stream, uint32_t num_bytes, const uint8_t** data) {
  118|    203|  *data = stream->read(stream->stream, num_bytes);
  119|    203|  AVIFINFO_CHECK(*data != NULL, kTruncated);
  ------------------
  |  |   84|    203|  do {                                                     \
  |  |   85|    203|    if (!(check_condition)) AVIFINFO_RETURN(check_status); \
  |  |  ------------------
  |  |  |  |   78|      4|  do {                                \
  |  |  |  |   79|      4|    return (check_status);            \
  |  |  |  |   80|      4|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (80:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (85:9): [True: 4, False: 199]
  |  |  ------------------
  |  |   86|    203|  } while (0)
  |  |  ------------------
  |  |  |  Branch (86:12): [Folded, False: 199]
  |  |  ------------------
  ------------------
  120|    199|  stream->num_read_bytes += num_bytes;
  121|    199|  return kFound;
  122|    203|}

zm_info_mail:
  701|      1|{
  702|      1|	const char *sendmail_path = zend_ini_string_literal("sendmail_path");
  ------------------
  |  |  101|      1|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
  703|       |
  704|       |#ifdef PHP_WIN32
  705|       |	if (!sendmail_path) {
  706|       |		php_info_print_table_row(2, "Internal Sendmail Support for Windows", "enabled");
  707|       |	} else {
  708|       |		php_info_print_table_row(2, "Path to sendmail", sendmail_path);
  709|       |	}
  710|       |#else
  711|      1|	php_info_print_table_row(2, "Path to sendmail", sendmail_path);
  712|      1|#endif
  713|      1|}

_php_math_round:
  165|      1|PHPAPI double _php_math_round(double value, int places, int mode) {
  166|      1|	double exponent, tmp_value, tmp_value2;
  167|       |
  168|      1|	if (!zend_finite(value) || value == 0.0) {
  ------------------
  |  |  538|      1|# define zend_finite(a) isfinite(a)
  ------------------
  |  Branch (168:6): [True: 0, False: 1]
  |  Branch (168:29): [True: 0, False: 1]
  ------------------
  169|      0|		return value;
  170|      0|	}
  171|       |
  172|      1|	places = places < INT_MIN+1 ? INT_MIN+1 : places;
  ------------------
  |  Branch (172:11): [True: 0, False: 1]
  ------------------
  173|       |
  174|      1|	exponent = php_intpow10(abs(places));
  175|       |
  176|       |	/**
  177|       |	 * When extracting the integer part, the result may be incorrect as a decimal
  178|       |	 * number due to floating point errors.
  179|       |	 * e.g.
  180|       |	 * 0.285 * 10000000000 => 2849999999.9999995
  181|       |	 * floor(0.285 * 10000000000) => 2849999999
  182|       |	 *
  183|       |	 * Add 1 to the absolute value of the value adjusted by floor or ceil, use the
  184|       |	 * exponent to return it to its original precision, and compare it with value.
  185|       |	 * If it is equal to value, it is assumed that the absolute value is 1 smaller
  186|       |	 * due to error and will be corrected.
  187|       |	 * e.g.
  188|       |	 * 0.285 * 10000000000 => 2849999999.9999995
  189|       |	 * floor(0.285 * 10000000000) => 2849999999 (tmp_value)
  190|       |	 * tmp_value2 = 2849999999 + 1 => 2850000000
  191|       |	 * 2850000000 / 10000000000 == 0.285 => true
  192|       |	 * tmp_value = tmp_value2
  193|       |	 */
  194|       |
  195|      1|	if (value >= 0.0) {
  ------------------
  |  Branch (195:6): [True: 1, False: 0]
  ------------------
  196|      1|		tmp_value = floor(places > 0 ? value * exponent : value / exponent);
  ------------------
  |  Branch (196:21): [True: 0, False: 1]
  ------------------
  197|      1|		tmp_value2 = tmp_value + 1.0;
  198|      1|	} else {
  199|      0|		tmp_value = ceil(places > 0 ? value * exponent : value / exponent);
  ------------------
  |  Branch (199:20): [True: 0, False: 0]
  ------------------
  200|      0|		tmp_value2 = tmp_value - 1.0;
  201|      0|	}
  202|       |
  203|      1|	if ((places > 0 ? tmp_value2 / exponent : tmp_value2 * exponent) == value) {
  ------------------
  |  Branch (203:6): [True: 0, False: 1]
  |  Branch (203:7): [True: 0, False: 1]
  ------------------
  204|      0|		tmp_value = tmp_value2;
  205|      0|	}
  206|       |
  207|       |	/* This value is beyond our precision, so rounding it is pointless */
  208|      1|	if (fabs(tmp_value) >= 1e16) {
  ------------------
  |  Branch (208:6): [True: 0, False: 1]
  ------------------
  209|      0|		return value;
  210|      0|	}
  211|       |
  212|       |	/* round the temp value */
  213|      1|	tmp_value = php_round_helper(tmp_value, value, exponent, places, mode);
  214|       |
  215|       |	/* see if it makes sense to use simple division to round the value */
  216|      1|	if (abs(places) < 23) {
  ------------------
  |  Branch (216:6): [True: 1, False: 0]
  ------------------
  217|      1|		if (places > 0) {
  ------------------
  |  Branch (217:7): [True: 0, False: 1]
  ------------------
  218|      0|			tmp_value = tmp_value / exponent;
  219|      1|		} else {
  220|      1|			tmp_value = tmp_value * exponent;
  221|      1|		}
  222|      1|	} else {
  223|       |		/* Simple division can't be used since that will cause wrong results.
  224|       |		   Instead, the number is converted to a string and back again using
  225|       |		   strtod(). strtod() will return the nearest possible FP value for
  226|       |		   that string. */
  227|       |
  228|       |		/* 40 Bytes should be more than enough for this format string. The
  229|       |		   float won't be larger than 1e15 anyway. But just in case, use
  230|       |		   snprintf() and make sure the buffer is zero-terminated */
  231|      0|		char buf[40];
  232|      0|		snprintf(buf, 39, "%15fe%d", tmp_value, -places);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  233|      0|		buf[39] = '\0';
  234|      0|		tmp_value = zend_strtod(buf, NULL);
  235|       |		/* couldn't convert to string and back */
  236|      0|		if (!zend_finite(tmp_value) || zend_isnan(tmp_value)) {
  ------------------
  |  |  538|      0|# define zend_finite(a) isfinite(a)
  ------------------
              		if (!zend_finite(tmp_value) || zend_isnan(tmp_value)) {
  ------------------
  |  |  536|      0|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (236:7): [True: 0, False: 0]
  |  Branch (236:34): [True: 0, False: 0]
  ------------------
  237|      0|			tmp_value = value;
  238|      0|		}
  239|      0|	}
  240|      1|	return tmp_value;
  241|      1|}
zif_clamp:
  419|      1|{
  420|      1|	zval *zvalue, *zmin, *zmax;
  421|       |
  422|      2|	ZEND_PARSE_PARAMETERS_START(3, 3)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|      2|		Z_PARAM_ZVAL(zvalue)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      0|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  |  Branch (423:3): [True: 0, False: 0]
  ------------------
  424|      0|		Z_PARAM_ZVAL(zmin)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      0|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  |  Branch (424:3): [True: 0, False: 0]
  ------------------
  425|      0|		Z_PARAM_ZVAL(zmax)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      0|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  |  Branch (425:3): [True: 0, False: 0]
  ------------------
  426|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (426:2): [True: 0, False: 0]
  |  Branch (426:2): [True: 0, False: 0]
  |  Branch (426:2): [True: 0, False: 0]
  |  Branch (426:2): [True: 0, False: 0]
  ------------------
  427|       |
  428|      0|	php_math_clamp(return_value, zvalue, zmin, zmax);
  429|      0|}
zif_sin:
  446|      3|{
  447|      3|	double num;
  448|       |
  449|      9|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  450|     12|		Z_PARAM_DOUBLE(num)
  ------------------
  |  | 1812|      3|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      3|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      0|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1807|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      0|			break; \
  |  |  |  | 1809|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (450:3): [True: 3, False: 0]
  |  Branch (450:3): [True: 0, False: 0]
  |  Branch (450:3): [True: 3, False: 0]
  |  Branch (450:3): [True: 0, False: 0]
  |  Branch (450:3): [True: 3, False: 0]
  |  Branch (450:3): [True: 0, False: 0]
  |  Branch (450:3): [True: 0, False: 3]
  |  Branch (450:3): [True: 3, False: 0]
  |  Branch (450:3): [True: 0, False: 0]
  |  Branch (450:3): [True: 0, False: 0]
  ------------------
  451|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (451:2): [True: 3, False: 0]
  |  Branch (451:2): [True: 0, False: 0]
  |  Branch (451:2): [True: 3, False: 0]
  |  Branch (451:2): [True: 0, False: 0]
  ------------------
  452|      3|	RETURN_DOUBLE(sin(num));
  ------------------
  |  | 1049|      3|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      3|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      3|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      3|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      3|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      3|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      3|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      3|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      3|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  453|      3|}
zif_tan:
  470|      2|{
  471|      2|	double num;
  472|       |
  473|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  474|      8|		Z_PARAM_DOUBLE(num)
  ------------------
  |  | 1812|      2|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      2|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      0|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1807|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      0|			break; \
  |  |  |  | 1809|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (474:3): [True: 2, False: 0]
  |  Branch (474:3): [True: 0, False: 0]
  |  Branch (474:3): [True: 2, False: 0]
  |  Branch (474:3): [True: 0, False: 0]
  |  Branch (474:3): [True: 2, False: 0]
  |  Branch (474:3): [True: 0, False: 0]
  |  Branch (474:3): [True: 0, False: 2]
  |  Branch (474:3): [True: 2, False: 0]
  |  Branch (474:3): [True: 0, False: 0]
  |  Branch (474:3): [True: 0, False: 0]
  ------------------
  475|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (475:2): [True: 2, False: 0]
  |  Branch (475:2): [True: 0, False: 0]
  |  Branch (475:2): [True: 2, False: 0]
  |  Branch (475:2): [True: 0, False: 0]
  ------------------
  476|      2|	RETURN_DOUBLE(tan(num));
  ------------------
  |  | 1049|      2|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      2|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      2|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      2|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      2|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      2|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      2|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  477|      2|}
zif_is_nan:
  636|      2|{
  637|      2|	double dval;
  638|       |
  639|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  640|      8|		Z_PARAM_DOUBLE(dval)
  ------------------
  |  | 1812|      2|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      2|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      0|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1807|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      0|			break; \
  |  |  |  | 1809|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (640:3): [True: 2, False: 0]
  |  Branch (640:3): [True: 0, False: 0]
  |  Branch (640:3): [True: 2, False: 0]
  |  Branch (640:3): [True: 0, False: 0]
  |  Branch (640:3): [True: 2, False: 0]
  |  Branch (640:3): [True: 0, False: 0]
  |  Branch (640:3): [True: 0, False: 2]
  |  Branch (640:3): [True: 2, False: 0]
  |  Branch (640:3): [True: 0, False: 0]
  |  Branch (640:3): [True: 0, False: 0]
  ------------------
  641|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (641:2): [True: 2, False: 0]
  |  Branch (641:2): [True: 0, False: 0]
  |  Branch (641:2): [True: 2, False: 0]
  |  Branch (641:2): [True: 0, False: 0]
  ------------------
  642|      2|	RETURN_BOOL(zend_isnan(dval));
  ------------------
  |  | 1046|      2|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      2|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
  643|      2|}
zif_log:
  701|      4|{
  702|      4|	double num, base = 0;
  703|       |
  704|     12|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      4|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      4|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      4|		const int _flags = (flags); \
  |  |  |  | 1599|      4|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      4|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      4|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      4|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      4|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      4|		uint32_t _i = 0; \
  |  |  |  | 1603|      4|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      4|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      4|		char *_error = NULL; \
  |  |  |  | 1606|      4|		bool _dummy = 0; \
  |  |  |  | 1607|      4|		bool _optional = 0; \
  |  |  |  | 1608|      4|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      4|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      4|		((void)_i); \
  |  |  |  | 1610|      4|		((void)_real_arg); \
  |  |  |  | 1611|      4|		((void)_arg); \
  |  |  |  | 1612|      4|		((void)_expected_type); \
  |  |  |  | 1613|      4|		((void)_error); \
  |  |  |  | 1614|      4|		((void)_optional); \
  |  |  |  | 1615|      4|		((void)_dummy); \
  |  |  |  | 1616|      4|		\
  |  |  |  | 1617|      4|		do { \
  |  |  |  | 1618|      4|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      4|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      4|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      4|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      4|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  705|     16|		Z_PARAM_DOUBLE(num)
  ------------------
  |  | 1812|      4|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      4|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      1|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1807|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      1|			break; \
  |  |  |  | 1809|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (705:3): [True: 4, False: 0]
  |  Branch (705:3): [True: 0, False: 0]
  |  Branch (705:3): [True: 4, False: 0]
  |  Branch (705:3): [True: 0, False: 0]
  |  Branch (705:3): [True: 4, False: 0]
  |  Branch (705:3): [True: 0, False: 0]
  |  Branch (705:3): [True: 0, False: 4]
  |  Branch (705:3): [True: 4, False: 0]
  |  Branch (705:3): [True: 0, False: 0]
  |  Branch (705:3): [True: 0, False: 0]
  ------------------
  706|      3|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      3|	_optional = 1;
  ------------------
  707|      8|		Z_PARAM_DOUBLE(base)
  ------------------
  |  | 1812|      3|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      3|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      3|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      1|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      0|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1807|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      0|			break; \
  |  |  |  | 1809|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (707:3): [True: 3, False: 0]
  |  Branch (707:3): [True: 0, False: 0]
  |  Branch (707:3): [True: 0, False: 3]
  |  Branch (707:3): [True: 3, False: 0]
  |  Branch (707:3): [True: 3, False: 0]
  |  Branch (707:3): [True: 0, False: 0]
  |  Branch (707:3): [True: 3, False: 0]
  |  Branch (707:3): [True: 0, False: 0]
  |  Branch (707:3): [True: 0, False: 0]
  |  Branch (707:3): [True: 0, False: 0]
  ------------------
  708|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      4|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (708:2): [True: 1, False: 0]
  |  Branch (708:2): [True: 0, False: 0]
  |  Branch (708:2): [True: 1, False: 0]
  |  Branch (708:2): [True: 0, False: 0]
  ------------------
  709|       |
  710|      3|	if (ZEND_NUM_ARGS() == 1) {
  ------------------
  |  |  529|      3|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (710:6): [True: 2, False: 1]
  ------------------
  711|      2|		RETURN_DOUBLE(log(num));
  ------------------
  |  | 1049|      2|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      2|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      2|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      2|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      2|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      2|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      2|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  712|      2|	}
  713|       |
  714|      1|	if (base == 2.0) {
  ------------------
  |  Branch (714:6): [True: 0, False: 1]
  ------------------
  715|      0|		RETURN_DOUBLE(log2(num));
  ------------------
  |  | 1049|      0|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      0|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  716|      0|	}
  717|       |
  718|      1|	if (base == 10.0) {
  ------------------
  |  Branch (718:6): [True: 0, False: 1]
  ------------------
  719|      0|		RETURN_DOUBLE(log10(num));
  ------------------
  |  | 1049|      0|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      0|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  720|      0|	}
  721|       |
  722|      1|	if (base == 1.0) {
  ------------------
  |  Branch (722:6): [True: 0, False: 1]
  ------------------
  723|      0|		RETURN_DOUBLE(ZEND_NAN);
  ------------------
  |  | 1049|      0|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      0|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  724|      0|	}
  725|       |
  726|      1|	if (base <= 0.0) {
  ------------------
  |  Branch (726:6): [True: 1, False: 0]
  ------------------
  727|      1|		zend_argument_value_error(2, "must be greater than 0");
  728|      1|		RETURN_THROWS();
  ------------------
  |  | 1071|      1|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (728:3): [True: 0, False: 1]
  |  Branch (728:3): [True: 1, False: 0]
  ------------------
  729|      1|	}
  730|       |
  731|      0|	RETURN_DOUBLE(log(num) / log(base));
  ------------------
  |  | 1049|      0|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      0|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      0|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
  732|      0|}
zif_fdiv:
 1463|      2|{
 1464|      2|	double dividend, divisor;
 1465|       |
 1466|      6|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1467|      8|		Z_PARAM_DOUBLE(dividend)
  ------------------
  |  | 1812|      2|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      2|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      0|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1807|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      0|			break; \
  |  |  |  | 1809|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1467:3): [True: 2, False: 0]
  |  Branch (1467:3): [True: 0, False: 0]
  |  Branch (1467:3): [True: 2, False: 0]
  |  Branch (1467:3): [True: 0, False: 0]
  |  Branch (1467:3): [True: 2, False: 0]
  |  Branch (1467:3): [True: 0, False: 0]
  |  Branch (1467:3): [True: 0, False: 2]
  |  Branch (1467:3): [True: 2, False: 0]
  |  Branch (1467:3): [True: 0, False: 0]
  |  Branch (1467:3): [True: 0, False: 0]
  ------------------
 1468|     10|		Z_PARAM_DOUBLE(divisor)
  ------------------
  |  | 1812|      2|	Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1804|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1805|      2|		if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1806|      0|			_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1806:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1807|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1808|      0|			break; \
  |  |  |  | 1809|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1468:3): [True: 2, False: 0]
  |  Branch (1468:3): [True: 0, False: 0]
  |  Branch (1468:3): [True: 2, False: 0]
  |  Branch (1468:3): [True: 0, False: 0]
  |  Branch (1468:3): [True: 2, False: 0]
  |  Branch (1468:3): [True: 0, False: 0]
  |  Branch (1468:3): [True: 0, False: 2]
  |  Branch (1468:3): [True: 2, False: 0]
  |  Branch (1468:3): [True: 0, False: 0]
  |  Branch (1468:3): [True: 0, False: 0]
  ------------------
 1469|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1469:2): [True: 2, False: 0]
  |  Branch (1469:2): [True: 0, False: 0]
  |  Branch (1469:2): [True: 2, False: 0]
  |  Branch (1469:2): [True: 0, False: 0]
  ------------------
 1470|       |
 1471|      2|	RETURN_DOUBLE(dividend / divisor);
  ------------------
  |  | 1049|      2|#define RETURN_DOUBLE(d)				do { RETVAL_DOUBLE(d); return; } while (0)
  |  |  ------------------
  |  |  |  | 1023|      2|#define RETVAL_DOUBLE(d)				ZVAL_DOUBLE(return_value, d)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1082|      2|#define ZVAL_DOUBLE(z, d) do {			\
  |  |  |  |  |  | 1083|      2|		zval *__z = (z);				\
  |  |  |  |  |  | 1084|      2|		Z_DVAL_P(__z) = d;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  979|      2|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  978|      2|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1085|      2|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  611|      2|#define IS_DOUBLE					5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1086|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1086:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1049:69): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1472|      2|}
math.c:php_intpow10:
   36|      1|static inline double php_intpow10(int power) {
   37|       |	/* Not in lookup table */
   38|      1|	if (power < 0 || power > 22) {
  ------------------
  |  Branch (38:6): [True: 0, False: 1]
  |  Branch (38:19): [True: 0, False: 1]
  ------------------
   39|      0|		return pow(10.0, (double)power);
   40|      0|	}
   41|       |
   42|      1|	static const double powers[] = {
   43|      1|			1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11,
   44|      1|			1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22};
   45|       |
   46|      1|	return powers[power];
   47|      1|}
math.c:php_round_helper:
   66|      1|static inline double php_round_helper(double integral, double value, double exponent, int places, int mode) {
   67|      1|	double value_abs = fabs(value);
   68|      1|	double edge_case;
   69|       |
   70|      1|	switch (mode) {
   71|      1|		case PHP_ROUND_HALF_UP:
  ------------------
  |  |   21|      1|#define PHP_ROUND_HALF_UP        0x01    /* Arithmetic rounding, up == away from zero */
  ------------------
  |  Branch (71:3): [True: 1, False: 0]
  ------------------
   72|      1|			edge_case = php_round_get_basic_edge_case(integral, exponent, places);
   73|      1|			if (value_abs >= edge_case) {
  ------------------
  |  Branch (73:8): [True: 1, False: 0]
  ------------------
   74|       |				/* We must increase the magnitude of the integral part
   75|       |				 * (rounding up / towards infinity). copysign(1.0, integral)
   76|       |				 * will either result in 1.0 or -1.0 depending on the sign
   77|       |				 * of the input, thus increasing the magnitude, but without
   78|       |				 * generating branches in the assembly.
   79|       |				 *
   80|       |				 * This pattern is equally used for all the other modes.
   81|       |				 */
   82|      1|				return integral + copysign(1.0, integral);
   83|      1|			}
   84|       |
   85|      0|			return integral;
   86|       |
   87|      0|		case PHP_ROUND_HALF_DOWN:
  ------------------
  |  |   25|      0|#define PHP_ROUND_HALF_DOWN      0x02    /* Arithmetic rounding, down == towards zero */
  ------------------
  |  Branch (87:3): [True: 0, False: 1]
  ------------------
   88|      0|			edge_case = php_round_get_basic_edge_case(integral, exponent, places);
   89|      0|			if (value_abs > edge_case) {
  ------------------
  |  Branch (89:8): [True: 0, False: 0]
  ------------------
   90|      0|				return integral + copysign(1.0, integral);
   91|      0|			}
   92|       |
   93|      0|			return integral;
   94|       |
   95|      0|		case PHP_ROUND_CEILING:
  ------------------
  |  |   37|      0|#define PHP_ROUND_CEILING        0x05
  ------------------
  |  Branch (95:3): [True: 0, False: 1]
  ------------------
   96|      0|			edge_case = php_round_get_zero_edge_case(integral, exponent, places);
   97|      0|			if (value > 0.0 && value_abs > edge_case) {
  ------------------
  |  Branch (97:8): [True: 0, False: 0]
  |  Branch (97:23): [True: 0, False: 0]
  ------------------
   98|      0|				return integral + 1.0;
   99|      0|			}
  100|       |
  101|      0|			return integral;
  102|       |
  103|      0|		case PHP_ROUND_FLOOR:
  ------------------
  |  |   41|      0|#define PHP_ROUND_FLOOR          0x06
  ------------------
  |  Branch (103:3): [True: 0, False: 1]
  ------------------
  104|      0|			edge_case = php_round_get_zero_edge_case(integral, exponent, places);
  105|      0|			if (value < 0.0 && value_abs > edge_case) {
  ------------------
  |  Branch (105:8): [True: 0, False: 0]
  |  Branch (105:23): [True: 0, False: 0]
  ------------------
  106|      0|				return integral - 1.0;
  107|      0|			}
  108|       |
  109|      0|			return integral;
  110|       |
  111|      0|		case PHP_ROUND_TOWARD_ZERO:
  ------------------
  |  |   45|      0|#define PHP_ROUND_TOWARD_ZERO    0x07
  ------------------
  |  Branch (111:3): [True: 0, False: 1]
  ------------------
  112|      0|			return integral;
  113|       |
  114|      0|		case PHP_ROUND_AWAY_FROM_ZERO:
  ------------------
  |  |   49|      0|#define PHP_ROUND_AWAY_FROM_ZERO 0x08
  ------------------
  |  Branch (114:3): [True: 0, False: 1]
  ------------------
  115|      0|			edge_case = php_round_get_zero_edge_case(integral, exponent, places);
  116|      0|			if (value_abs > edge_case) {
  ------------------
  |  Branch (116:8): [True: 0, False: 0]
  ------------------
  117|      0|				return integral + copysign(1.0, integral);
  118|      0|			}
  119|       |
  120|      0|			return integral;
  121|       |
  122|      0|		case PHP_ROUND_HALF_EVEN:
  ------------------
  |  |   29|      0|#define PHP_ROUND_HALF_EVEN      0x03    /* Banker's rounding */
  ------------------
  |  Branch (122:3): [True: 0, False: 1]
  ------------------
  123|      0|			edge_case = php_round_get_basic_edge_case(integral, exponent, places);
  124|      0|			if (value_abs > edge_case) {
  ------------------
  |  Branch (124:8): [True: 0, False: 0]
  ------------------
  125|      0|				return integral + copysign(1.0, integral);
  126|      0|			} else if (UNEXPECTED(value_abs == edge_case)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  127|      0|				bool even = !fmod(integral, 2.0);
  128|       |
  129|       |				/* If the integral part is not even we can make it even
  130|       |				 * by adding one in the direction of the existing sign.
  131|       |				 */
  132|      0|				if (!even) {
  ------------------
  |  Branch (132:9): [True: 0, False: 0]
  ------------------
  133|      0|					return integral + copysign(1.0, integral);
  134|      0|				}
  135|      0|			}
  136|       |
  137|      0|			return integral;
  138|       |
  139|      0|		case PHP_ROUND_HALF_ODD:
  ------------------
  |  |   33|      0|#define PHP_ROUND_HALF_ODD       0x04
  ------------------
  |  Branch (139:3): [True: 0, False: 1]
  ------------------
  140|      0|			edge_case = php_round_get_basic_edge_case(integral, exponent, places);
  141|      0|			if (value_abs > edge_case) {
  ------------------
  |  Branch (141:8): [True: 0, False: 0]
  ------------------
  142|      0|				return integral + copysign(1.0, integral);
  143|      0|			} else if (UNEXPECTED(value_abs == edge_case)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  144|      0|				bool even = !fmod(integral, 2.0);
  145|       |
  146|      0|				if (even) {
  ------------------
  |  Branch (146:9): [True: 0, False: 0]
  ------------------
  147|      0|					return integral + copysign(1.0, integral);
  148|      0|				}
  149|      0|			}
  150|       |
  151|      0|			return integral;
  152|       |
  153|      0|		default: ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (153:3): [True: 0, False: 1]
  |  Branch (153:12): [Folded, False: 0]
  |  Branch (153:12): [Folded, False: 0]
  ------------------
  154|      1|	}
  155|       |	// FIXME: GCC bug, branch is considered reachable.
  156|      0|	ZEND_UNREACHABLE();
  ------------------
  |  |  127|      0|# define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |               # define ZEND_UNREACHABLE() do {ZEND_ASSERT(0); _ZEND_UNREACHABLE();} while (0)
  |  |  ------------------
  |  |  |  |  121|      0|# define _ZEND_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  |  Branch (127:78): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (156:2): [Folded, False: 0]
  |  Branch (156:2): [Folded, False: 0]
  ------------------
  157|      0|}
math.c:php_round_get_basic_edge_case:
   51|      1|{
   52|      1|	return (places > 0)
  ------------------
  |  Branch (52:9): [True: 0, False: 1]
  ------------------
   53|      1|		? fabs((integral + copysign(0.5, integral)) / exponent)
   54|      1|		: fabs((integral + copysign(0.5, integral)) * exponent);
   55|      1|}

make_digest_ex:
   26|      2|{
   27|      2|	static const char hexits[17] = "0123456789abcdef";
   28|       |
   29|     34|	for (size_t i = 0; i < len; i++) {
  ------------------
  |  Branch (29:21): [True: 32, False: 2]
  ------------------
   30|     32|		md5str[i * 2]       = hexits[digest[i] >> 4];
   31|     32|		md5str[(i * 2) + 1] = hexits[digest[i] &  0x0F];
   32|     32|	}
   33|      2|	md5str[len * 2] = '\0';
   34|      2|}
zif_md5:
   38|      2|{
   39|      2|	zend_string *arg;
   40|      2|	PHP_MD5_CTX context;
   41|      2|	unsigned char digest[16];
   42|      2|	bool raw_output = false;
   43|       |
   44|      6|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   45|      8|		Z_PARAM_STR(arg)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (45:3): [True: 2, False: 0]
  |  Branch (45:3): [True: 0, False: 0]
  |  Branch (45:3): [True: 2, False: 0]
  |  Branch (45:3): [True: 0, False: 0]
  |  Branch (45:3): [True: 2, False: 0]
  |  Branch (45:3): [True: 0, False: 0]
  |  Branch (45:3): [True: 0, False: 2]
  |  Branch (45:3): [True: 2, False: 0]
  |  Branch (45:3): [True: 0, False: 0]
  |  Branch (45:3): [True: 0, False: 0]
  ------------------
   46|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
   47|      4|		Z_PARAM_BOOL(raw_output)
  ------------------
  |  | 1735|      2|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (47:3): [True: 2, False: 0]
  |  Branch (47:3): [True: 0, False: 0]
  |  Branch (47:3): [True: 0, False: 2]
  |  Branch (47:3): [True: 2, False: 0]
  |  Branch (47:3): [True: 2, False: 0]
  |  Branch (47:3): [True: 0, False: 0]
  |  Branch (47:3): [True: 2, False: 0]
  |  Branch (47:3): [True: 0, False: 0]
  |  Branch (47:3): [True: 0, False: 0]
  |  Branch (47:3): [True: 0, False: 0]
  ------------------
   48|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (48:2): [True: 0, False: 0]
  |  Branch (48:2): [True: 0, False: 0]
  |  Branch (48:2): [True: 0, False: 0]
  |  Branch (48:2): [True: 0, False: 0]
  ------------------
   49|       |
   50|      2|	PHP_MD5Init(&context);
  ------------------
  |  |   41|      2|#define PHP_MD5Init(ctx) PHP_MD5InitArgs(ctx, NULL)
  ------------------
   51|      2|	PHP_MD5Update(&context, ZSTR_VAL(arg), ZSTR_LEN(arg));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	PHP_MD5Update(&context, ZSTR_VAL(arg), ZSTR_LEN(arg));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   52|      2|	PHP_MD5Final(digest, &context);
   53|      2|	if (raw_output) {
  ------------------
  |  Branch (53:6): [True: 0, False: 2]
  ------------------
   54|      0|		RETURN_STRINGL((char *) digest, 16);
  ------------------
  |  | 1055|      0|#define RETURN_STRINGL(s, l) 			do { RETVAL_STRINGL(s, l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1029|      0|#define RETVAL_STRINGL(s, l)			ZVAL_STRINGL(return_value, s, l)
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1055:77): [Folded, False: 0]
  |  |  ------------------
  ------------------
   55|      2|	} else {
   56|      2|		RETVAL_NEW_STR(zend_string_alloc(32, 0));
  ------------------
  |  | 1026|      2|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   57|      2|		make_digest_ex(Z_STRVAL_P(return_value), digest, 16);
  ------------------
  |  |  985|      2|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      2|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|      2|	}
   59|       |
   60|      2|}
PHP_MD5InitArgs:
  287|      4|{
  288|      4|	ctx->a = 0x67452301;
  289|      4|	ctx->b = 0xefcdab89;
  290|      4|	ctx->c = 0x98badcfe;
  291|      4|	ctx->d = 0x10325476;
  292|       |
  293|      4|	ctx->lo = 0;
  294|      4|	ctx->hi = 0;
  295|      4|}
PHP_MD5Update:
  298|     20|{
  299|     20|	uint32_t saved_lo;
  300|     20|	uint32_t used, free;
  301|       |
  302|     20|	saved_lo = ctx->lo;
  303|     20|	if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) {
  ------------------
  |  Branch (303:6): [True: 0, False: 20]
  ------------------
  304|      0|		ctx->hi++;
  305|      0|	}
  306|     20|	ctx->hi += size >> 29;
  307|       |
  308|     20|	used = saved_lo & 0x3f;
  309|       |
  310|     20|	if (used) {
  ------------------
  |  Branch (310:6): [True: 14, False: 6]
  ------------------
  311|     14|		free = 64 - used;
  312|       |
  313|     14|		if (size < free) {
  ------------------
  |  Branch (313:7): [True: 12, False: 2]
  ------------------
  314|     12|			memcpy(&ctx->buffer[used], data, size);
  315|     12|			return;
  316|     12|		}
  317|       |
  318|      2|		memcpy(&ctx->buffer[used], data, free);
  319|      2|		data = (unsigned char *)data + free;
  320|      2|		size -= free;
  321|      2|		body(ctx, ctx->buffer, 64);
  322|      2|	}
  323|       |
  324|      8|	if (size >= 64) {
  ------------------
  |  Branch (324:6): [True: 0, False: 8]
  ------------------
  325|      0|		data = body(ctx, data, size & ~(size_t)0x3f);
  326|      0|		size &= 0x3f;
  327|      0|	}
  328|       |
  329|      8|	memcpy(ctx->buffer, data, size);
  330|      8|}
PHP_MD5Final:
  333|      4|{
  334|      4|	uint32_t used, free;
  335|       |
  336|      4|	used = ctx->lo & 0x3f;
  337|       |
  338|      4|	ctx->buffer[used++] = 0x80;
  339|       |
  340|      4|	free = 64 - used;
  341|       |
  342|      4|	if (free < 8) {
  ------------------
  |  Branch (342:6): [True: 0, False: 4]
  ------------------
  343|      0|		memset(&ctx->buffer[used], 0, free);
  344|      0|		body(ctx, ctx->buffer, 64);
  345|      0|		used = 0;
  346|      0|		free = 64;
  347|      0|	}
  348|       |
  349|      4|	memset(&ctx->buffer[used], 0, free - 8);
  350|       |
  351|      4|	ctx->lo <<= 3;
  352|      4|	ctx->buffer[56] = ctx->lo;
  353|      4|	ctx->buffer[57] = ctx->lo >> 8;
  354|      4|	ctx->buffer[58] = ctx->lo >> 16;
  355|      4|	ctx->buffer[59] = ctx->lo >> 24;
  356|      4|	ctx->buffer[60] = ctx->hi;
  357|      4|	ctx->buffer[61] = ctx->hi >> 8;
  358|      4|	ctx->buffer[62] = ctx->hi >> 16;
  359|      4|	ctx->buffer[63] = ctx->hi >> 24;
  360|       |
  361|      4|	body(ctx, ctx->buffer, 64);
  362|       |
  363|      4|	result[0] = ctx->a;
  364|      4|	result[1] = ctx->a >> 8;
  365|      4|	result[2] = ctx->a >> 16;
  366|      4|	result[3] = ctx->a >> 24;
  367|      4|	result[4] = ctx->b;
  368|      4|	result[5] = ctx->b >> 8;
  369|      4|	result[6] = ctx->b >> 16;
  370|      4|	result[7] = ctx->b >> 24;
  371|      4|	result[8] = ctx->c;
  372|      4|	result[9] = ctx->c >> 8;
  373|      4|	result[10] = ctx->c >> 16;
  374|      4|	result[11] = ctx->c >> 24;
  375|      4|	result[12] = ctx->d;
  376|      4|	result[13] = ctx->d >> 8;
  377|      4|	result[14] = ctx->d >> 16;
  378|      4|	result[15] = ctx->d >> 24;
  379|       |
  380|      4|	ZEND_SECURE_ZERO(ctx, sizeof(*ctx));
  ------------------
  |  |  564|      4|#define ZEND_SECURE_ZERO(var, size) explicit_bzero((var), (size))
  ------------------
  381|      4|}
md5.c:body:
  180|      6|{
  181|      6|	const unsigned char *ptr;
  182|      6|	uint32_t a, b, c, d;
  183|      6|	uint32_t saved_a, saved_b, saved_c, saved_d;
  184|       |
  185|      6|	ptr = data;
  186|       |
  187|      6|	a = ctx->a;
  188|      6|	b = ctx->b;
  189|      6|	c = ctx->c;
  190|      6|	d = ctx->d;
  191|       |
  192|      6|	do {
  193|      6|		saved_a = a;
  194|      6|		saved_b = b;
  195|      6|		saved_c = c;
  196|      6|		saved_d = d;
  197|       |
  198|       |/* Round 1 */
  199|      6|		STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  199|      6|		STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  200|      6|		STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  200|      6|		STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  201|      6|		STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  201|      6|		STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  202|      6|		STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  202|      6|		STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  203|      6|		STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  203|      6|		STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  204|      6|		STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  204|      6|		STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  205|      6|		STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  205|      6|		STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  206|      6|		STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  206|      6|		STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  207|      6|		STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  207|      6|		STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  208|      6|		STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  208|      6|		STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  209|      6|		STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  209|      6|		STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  210|      6|		STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  210|      6|		STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  211|      6|		STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  211|      6|		STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  212|      6|		STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  212|      6|		STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  213|      6|		STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  213|      6|		STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  214|      6|		STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  214|      6|		STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      6|#define F(x, y, z)			((z) ^ ((x) & ((y) ^ (z))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  215|       |
  216|       |/* Round 2 */
  217|      6|		STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  217|      6|		STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  218|      6|		STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  218|      6|		STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  219|      6|		STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  219|      6|		STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  220|      6|		STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  220|      6|		STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  221|      6|		STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  221|      6|		STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  222|      6|		STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  222|      6|		STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  223|      6|		STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  223|      6|		STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  224|      6|		STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  224|      6|		STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  225|      6|		STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  225|      6|		STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  226|      6|		STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  226|      6|		STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  227|      6|		STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  227|      6|		STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  228|      6|		STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  228|      6|		STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  229|      6|		STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  229|      6|		STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  230|      6|		STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  230|      6|		STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  231|      6|		STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  231|      6|		STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  232|      6|		STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  232|      6|		STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  138|      6|#define G(x, y, z)			((y) ^ ((z) & ((x) ^ (y))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  233|       |
  234|       |/* Round 3 */
  235|      6|		STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  235|      6|		STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  236|      6|		STEP(H, d, a, b, c, GET(8), 0x8771f681, 11)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  236|      6|		STEP(H, d, a, b, c, GET(8), 0x8771f681, 11)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  237|      6|		STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  237|      6|		STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  238|      6|		STEP(H, b, c, d, a, GET(14), 0xfde5380c, 23)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  238|      6|		STEP(H, b, c, d, a, GET(14), 0xfde5380c, 23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  239|      6|		STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  239|      6|		STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  240|      6|		STEP(H, d, a, b, c, GET(4), 0x4bdecfa9, 11)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  240|      6|		STEP(H, d, a, b, c, GET(4), 0x4bdecfa9, 11)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  241|      6|		STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  241|      6|		STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  242|      6|		STEP(H, b, c, d, a, GET(10), 0xbebfbc70, 23)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  242|      6|		STEP(H, b, c, d, a, GET(10), 0xbebfbc70, 23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  243|      6|		STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  243|      6|		STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  244|      6|		STEP(H, d, a, b, c, GET(0), 0xeaa127fa, 11)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  244|      6|		STEP(H, d, a, b, c, GET(0), 0xeaa127fa, 11)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  245|      6|		STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  245|      6|		STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  246|      6|		STEP(H, b, c, d, a, GET(6), 0x04881d05, 23)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  246|      6|		STEP(H, b, c, d, a, GET(6), 0x04881d05, 23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  247|      6|		STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  247|      6|		STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  248|      6|		STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  248|      6|		STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  249|      6|		STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  249|      6|		STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  250|      6|		STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  250|      6|		STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23)
  |  |  |  |  ------------------
  |  |  |  |  |  |  139|      6|#define H(x, y, z)			((x) ^ (y) ^ (z))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  251|       |
  252|       |/* Round 4 */
  253|      6|		STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  253|      6|		STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  254|      6|		STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  254|      6|		STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  255|      6|		STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  255|      6|		STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  256|      6|		STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  256|      6|		STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  257|      6|		STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  257|      6|		STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  258|      6|		STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  258|      6|		STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  259|      6|		STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  259|      6|		STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  260|      6|		STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  260|      6|		STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  261|      6|		STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  261|      6|		STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  262|      6|		STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  262|      6|		STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  263|      6|		STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  263|      6|		STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  264|      6|		STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  264|      6|		STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  265|      6|		STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  265|      6|		STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  266|      6|		STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  266|      6|		STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  267|      6|		STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  267|      6|		STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  268|      6|		STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
  ------------------
  |  |  146|      6|	(a) += f((b), (c), (d)) + (x) + (t); \
  |  |  ------------------
  |  |  |  |  268|      6|		STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
  |  |  |  |  ------------------
  |  |  |  |  |  |  140|      6|#define I(x, y, z)			((y) ^ ((x) | ~(z)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|      6|	(a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
  |  |  148|      6|	(a) += (b);
  ------------------
  269|       |
  270|      6|		a += saved_a;
  271|      6|		b += saved_b;
  272|      6|		c += saved_c;
  273|      6|		d += saved_d;
  274|       |
  275|      6|		ptr += 64;
  276|      6|	} while (size -= 64);
  ------------------
  |  Branch (276:11): [True: 0, False: 6]
  ------------------
  277|       |
  278|      6|	ctx->a = a;
  279|      6|	ctx->b = b;
  280|      6|	ctx->c = c;
  281|      6|	ctx->d = d;
  282|       |
  283|      6|	return ptr;
  284|      6|}

php_password_algo_register:
   38|      2|int php_password_algo_register(const char *ident, const php_password_algo *algo) {
   39|      2|	zend_string *key = zend_string_init_interned(ident, strlen(ident), 1);
   40|      2|	return zend_hash_add_ptr(&php_password_algos, key, (void *) algo) ? SUCCESS : FAILURE;
  ------------------
  |  Branch (40:9): [True: 2, False: 0]
  ------------------
   41|      2|}
zm_startup_password:
  419|      2|{
  420|      2|	zend_hash_init(&php_password_algos, 4, NULL, ZVAL_PTR_DTOR, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  421|       |
  422|      2|	register_password_symbols(module_number);
  423|       |
  424|      2|	if (FAILURE == php_password_algo_register("2y", &php_password_algo_bcrypt)) {
  ------------------
  |  Branch (424:6): [True: 0, False: 2]
  ------------------
  425|      0|		return FAILURE;
  426|      0|	}
  427|       |
  428|       |#ifdef HAVE_ARGON2LIB
  429|       |	if (FAILURE == php_password_algo_register("argon2i", &php_password_algo_argon2i)) {
  430|       |		return FAILURE;
  431|       |	}
  432|       |	if (FAILURE == php_password_algo_register("argon2id", &php_password_algo_argon2id)) {
  433|       |		return FAILURE;
  434|       |	}
  435|       |#endif
  436|       |
  437|      2|	return SUCCESS;
  438|      2|}

password.c:register_password_symbols:
    5|      2|{
    6|      2|	REGISTER_STRING_CONSTANT("PASSWORD_DEFAULT", "2y", CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
    7|      2|	REGISTER_STRING_CONSTANT("PASSWORD_BCRYPT", "2y", CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
    8|      2|	REGISTER_LONG_CONSTANT("PASSWORD_BCRYPT_DEFAULT_COST", PHP_PASSWORD_BCRYPT_COST, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    9|       |#if defined(HAVE_ARGON2LIB)
   10|       |	REGISTER_STRING_CONSTANT("PASSWORD_ARGON2I", "argon2i", CONST_PERSISTENT);
   11|       |	REGISTER_STRING_CONSTANT("PASSWORD_ARGON2ID", "argon2id", CONST_PERSISTENT);
   12|       |	REGISTER_STRING_CONSTANT("PASSWORD_ARGON2_PROVIDER", "standard", CONST_PERSISTENT);
   13|       |	REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_MEMORY_COST", PHP_PASSWORD_ARGON2_MEMORY_COST, CONST_PERSISTENT);
   14|       |	REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_TIME_COST", PHP_PASSWORD_ARGON2_TIME_COST, CONST_PERSISTENT);
   15|       |	REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_THREADS", PHP_PASSWORD_ARGON2_THREADS, CONST_PERSISTENT);
   16|       |#endif
   17|      2|}

php_init_crypt_r:
   49|      2|{
   50|       |#ifdef ZTS
   51|       |	php_crypt_extended_init_lock = tsrm_mutex_alloc();
   52|       |#endif
   53|      2|}

php_fopen_wrapper.c:php_stream_url_wrap_php:
  180|      2|{
  181|      2|	int fd = -1;
  182|      2|	int mode_rw = 0;
  183|      2|	php_stream * stream = NULL;
  184|      2|	char *p, *token = NULL, *pathdup;
  185|      2|	zend_long max_memory;
  186|      2|	FILE *file = NULL;
  187|       |#ifdef PHP_WIN32
  188|       |	int pipe_requested = 0;
  189|       |#endif
  190|       |
  191|      2|	if (!strncasecmp(path, "php://", 6)) {
  ------------------
  |  Branch (191:6): [True: 2, False: 0]
  ------------------
  192|      2|		path += 6;
  193|      2|	}
  194|       |
  195|      2|	if (!strncasecmp(path, "temp", 4)) {
  ------------------
  |  Branch (195:6): [True: 0, False: 2]
  ------------------
  196|      0|		path += 4;
  197|      0|		max_memory = PHP_STREAM_MAX_MEM;
  ------------------
  |  |   20|      0|#define PHP_STREAM_MAX_MEM	2 * 1024 * 1024
  ------------------
  198|      0|		if (!strncasecmp(path, "/maxmemory:", 11)) {
  ------------------
  |  Branch (198:7): [True: 0, False: 0]
  ------------------
  199|      0|			path += 11;
  200|      0|			max_memory = ZEND_STRTOL(path, NULL, 10);
  ------------------
  |  |   68|      0|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
  201|      0|			if (max_memory < 0) {
  ------------------
  |  Branch (201:8): [True: 0, False: 0]
  ------------------
  202|      0|				zend_argument_value_error(2, "must be greater than or equal to 0");
  203|      0|				return NULL;
  204|      0|			}
  205|      0|		}
  206|      0|		mode_rw = php_stream_mode_from_str(mode);
  207|      0|		return php_stream_temp_create(mode_rw, max_memory);
  ------------------
  |  |   33|      0|#define php_stream_temp_create(mode, max_memory_usage) _php_stream_temp_create((mode), (max_memory_usage) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|      0|	}
  209|       |
  210|      2|	if (!strcasecmp(path, "memory")) {
  ------------------
  |  Branch (210:6): [True: 0, False: 2]
  ------------------
  211|      0|		mode_rw = php_stream_mode_from_str(mode);
  212|      0|		return php_stream_memory_create(mode_rw);
  ------------------
  |  |   27|      0|#define php_stream_memory_create(mode) _php_stream_memory_create((mode) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|      0|	}
  214|       |
  215|      2|	if (!strcasecmp(path, "output")) {
  ------------------
  |  Branch (215:6): [True: 0, False: 2]
  ------------------
  216|      0|		return php_stream_alloc(&php_stream_output_ops, NULL, 0, "wb");
  ------------------
  |  |  266|      0|#define php_stream_alloc(ops, thisptr, persistent_id, mode)	_php_stream_alloc((ops), (thisptr), (persistent_id), (mode) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|      0|	}
  218|       |
  219|      2|	if (!strcasecmp(path, "input")) {
  ------------------
  |  Branch (219:6): [True: 0, False: 2]
  ------------------
  220|      0|		php_stream_input_t *input;
  221|       |
  222|      0|		if ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include) ) {
  ------------------
  |  |  601|      0|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
              		if ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include) ) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (222:7): [True: 0, False: 0]
  |  Branch (222:46): [True: 0, False: 0]
  ------------------
  223|      0|			if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (223:8): [True: 0, False: 0]
  ------------------
  224|      0|				php_stream_wrapper_warn(wrapper, context, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  225|      0|					Disabled,
  226|      0|					"URL file-access is disabled in the server configuration");
  227|      0|			}
  228|      0|			return NULL;
  229|      0|		}
  230|       |
  231|      0|		input = ecalloc(1, sizeof(*input));
  ------------------
  |  |  157|      0|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  232|      0|		if ((input->body = SG(request_info).request_body)) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (232:7): [True: 0, False: 0]
  ------------------
  233|      0|			php_stream_rewind(input->body);
  ------------------
  |  |  361|      0|#define php_stream_rewind(stream)	_php_stream_seek((stream), 0L, SEEK_SET)
  ------------------
  234|      0|		} else {
  235|      0|			input->body = php_stream_temp_create_ex(TEMP_STREAM_DEFAULT, SAPI_POST_BLOCK_SIZE, PG(upload_tmp_dir));
  ------------------
  |  |   34|      0|#define php_stream_temp_create_ex(mode, max_memory_usage, tmpdir) _php_stream_temp_create_ex((mode), (max_memory_usage), (tmpdir) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|      0|			SG(request_info).request_body = input->body;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  237|      0|		}
  238|       |
  239|      0|		return php_stream_alloc(&php_stream_input_ops, input, 0, "rb");
  ------------------
  |  |  266|      0|#define php_stream_alloc(ops, thisptr, persistent_id, mode)	_php_stream_alloc((ops), (thisptr), (persistent_id), (mode) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|      0|	}
  241|       |
  242|      2|	if (!strcasecmp(path, "stdin")) {
  ------------------
  |  Branch (242:6): [True: 0, False: 2]
  ------------------
  243|      0|		if ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include) ) {
  ------------------
  |  |  601|      0|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
              		if ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include) ) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (243:7): [True: 0, False: 0]
  |  Branch (243:46): [True: 0, False: 0]
  ------------------
  244|      0|			if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (244:8): [True: 0, False: 0]
  ------------------
  245|      0|				php_stream_wrapper_warn(wrapper, context, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  246|      0|					Disabled,
  247|      0|					"URL file-access is disabled in the server configuration");
  248|      0|			}
  249|      0|			return NULL;
  250|      0|		}
  251|      0|		if (!strcmp(sapi_module.name, "cli")) {
  ------------------
  |  Branch (251:7): [True: 0, False: 0]
  ------------------
  252|      0|			static int cli_in = 0;
  253|      0|			fd = STDIN_FILENO;
  254|      0|			if (cli_in) {
  ------------------
  |  Branch (254:8): [True: 0, False: 0]
  ------------------
  255|      0|				fd = dup(fd);
  256|      0|			} else {
  257|      0|				cli_in = 1;
  258|      0|				file = stdin;
  259|      0|			}
  260|      0|		} else {
  261|      0|			fd = dup(STDIN_FILENO);
  262|      0|		}
  263|       |#ifdef PHP_WIN32
  264|       |		pipe_requested = 1;
  265|       |#endif
  266|      2|	} else if (!strcasecmp(path, "stdout")) {
  ------------------
  |  Branch (266:13): [True: 0, False: 2]
  ------------------
  267|      0|		if (!strcmp(sapi_module.name, "cli")) {
  ------------------
  |  Branch (267:7): [True: 0, False: 0]
  ------------------
  268|      0|			static int cli_out = 0;
  269|      0|			fd = STDOUT_FILENO;
  270|      0|			if (cli_out++) {
  ------------------
  |  Branch (270:8): [True: 0, False: 0]
  ------------------
  271|      0|				fd = dup(fd);
  272|      0|			} else {
  273|      0|				cli_out = 1;
  274|      0|				file = stdout;
  275|      0|			}
  276|      0|		} else {
  277|      0|			fd = dup(STDOUT_FILENO);
  278|      0|		}
  279|       |#ifdef PHP_WIN32
  280|       |		pipe_requested = 1;
  281|       |#endif
  282|      2|	} else if (!strcasecmp(path, "stderr")) {
  ------------------
  |  Branch (282:13): [True: 0, False: 2]
  ------------------
  283|      0|		if (!strcmp(sapi_module.name, "cli")) {
  ------------------
  |  Branch (283:7): [True: 0, False: 0]
  ------------------
  284|      0|			static int cli_err = 0;
  285|      0|			fd = STDERR_FILENO;
  286|      0|			if (cli_err++) {
  ------------------
  |  Branch (286:8): [True: 0, False: 0]
  ------------------
  287|      0|				fd = dup(fd);
  288|      0|			} else {
  289|      0|				cli_err = 1;
  290|      0|				file = stderr;
  291|      0|			}
  292|      0|		} else {
  293|      0|			fd = dup(STDERR_FILENO);
  294|      0|		}
  295|       |#ifdef PHP_WIN32
  296|       |		pipe_requested = 1;
  297|       |#endif
  298|      2|	} else if (!strncasecmp(path, "fd/", 3)) {
  ------------------
  |  Branch (298:13): [True: 0, False: 2]
  ------------------
  299|      0|		const char *start;
  300|      0|		char       *end;
  301|      0|		zend_long  fildes_ori;
  302|      0|		int		   dtablesize;
  303|       |
  304|      0|		if (strcmp(sapi_module.name, "cli")) {
  ------------------
  |  Branch (304:7): [True: 0, False: 0]
  ------------------
  305|      0|			if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (305:8): [True: 0, False: 0]
  ------------------
  306|      0|				php_stream_wrapper_warn(wrapper, context, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  307|      0|					Disabled,
  308|      0|					"Direct access to file descriptors is only available from command-line PHP");
  309|      0|			}
  310|      0|			return NULL;
  311|      0|		}
  312|       |
  313|      0|		if ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include) ) {
  ------------------
  |  |  601|      0|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
              		if ((options & STREAM_OPEN_FOR_INCLUDE) && !PG(allow_url_include) ) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (313:7): [True: 0, False: 0]
  |  Branch (313:46): [True: 0, False: 0]
  ------------------
  314|      0|			if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (314:8): [True: 0, False: 0]
  ------------------
  315|      0|				php_stream_wrapper_warn(wrapper, context, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  316|      0|					Disabled,
  317|      0|					"URL file-access is disabled in the server configuration");
  318|      0|			}
  319|      0|			return NULL;
  320|      0|		}
  321|       |
  322|      0|		start = &path[3];
  323|      0|		fildes_ori = ZEND_STRTOL(start, &end, 10);
  ------------------
  |  |   68|      0|#  define ZEND_STRTOL(s0, s1, base) strtoll((s0), (s1), (base))
  ------------------
  324|      0|		if (end == start || *end != '\0') {
  ------------------
  |  Branch (324:7): [True: 0, False: 0]
  |  Branch (324:23): [True: 0, False: 0]
  ------------------
  325|      0|			php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  326|      0|				InvalidUrl,
  327|      0|				"php://fd/ stream must be specified in the form php://fd/<orig fd>");
  328|      0|			return NULL;
  329|      0|		}
  330|       |
  331|      0|#ifdef HAVE_UNISTD_H
  332|      0|		dtablesize = getdtablesize();
  333|       |#else
  334|       |		dtablesize = INT_MAX;
  335|       |#endif
  336|       |
  337|      0|		if (fildes_ori < 0 || fildes_ori >= dtablesize) {
  ------------------
  |  Branch (337:7): [True: 0, False: 0]
  |  Branch (337:25): [True: 0, False: 0]
  ------------------
  338|      0|			php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  339|      0|				InvalidParam,
  340|      0|				"The file descriptors must be non-negative numbers smaller than %d", dtablesize);
  341|      0|			return NULL;
  342|      0|		}
  343|       |
  344|      0|		fd = dup((int)fildes_ori);
  345|      0|		if (fd == -1) {
  ------------------
  |  Branch (345:7): [True: 0, False: 0]
  ------------------
  346|      0|			php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  347|      0|				DupFailed,
  348|      0|				"Error duping file descriptor " ZEND_LONG_FMT "; possibly it doesn't exist: "
  349|      0|				"[%d]: %s", fildes_ori, errno, strerror(errno));
  350|      0|			return NULL;
  351|      0|		}
  352|      2|	} else if (!strncasecmp(path, "filter/", 7)) {
  ------------------
  |  Branch (352:13): [True: 1, False: 1]
  ------------------
  353|       |		/* Save time/memory when chain isn't specified */
  354|      1|		if (strchr(mode, 'r') || strchr(mode, '+')) {
  ------------------
  |  Branch (354:7): [True: 1, False: 0]
  |  Branch (354:28): [True: 0, False: 0]
  ------------------
  355|      1|			mode_rw |= PHP_STREAM_FILTER_READ;
  ------------------
  |  |   31|      1|#define PHP_STREAM_FILTER_READ	0x0001
  ------------------
  356|      1|		}
  357|      1|		if (strchr(mode, 'w') || strchr(mode, '+') || strchr(mode, 'a')) {
  ------------------
  |  Branch (357:7): [True: 0, False: 1]
  |  Branch (357:28): [True: 0, False: 1]
  |  Branch (357:49): [True: 0, False: 1]
  ------------------
  358|      0|			mode_rw |= PHP_STREAM_FILTER_WRITE;
  ------------------
  |  |   32|      0|#define PHP_STREAM_FILTER_WRITE	0x0002
  ------------------
  359|      0|		}
  360|      1|		pathdup = estrndup(path + 6, strlen(path + 6));
  ------------------
  |  |  164|      1|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|      1|		p = strstr(pathdup, "/resource=");
  362|      1|		if (!p) {
  ------------------
  |  Branch (362:7): [True: 0, False: 1]
  ------------------
  363|      0|			zend_throw_error(NULL, "No URL resource specified");
  364|      0|			efree(pathdup);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  365|      0|			return NULL;
  366|      0|		}
  367|       |
  368|      1|		if (!(stream = php_stream_open_wrapper_ex(p + 10, mode, options, opened_path, context))) {
  ------------------
  |  |  645|      1|#define php_stream_open_wrapper_ex(path, mode, options, opened, context)	_php_stream_open_wrapper_ex((path), (mode), (options), (opened), (context) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      1|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      1|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (368:7): [True: 0, False: 1]
  ------------------
  369|      0|			efree(pathdup);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|      0|			return NULL;
  371|      0|		}
  372|       |
  373|      1|		*p = '\0';
  374|       |
  375|      1|		p = php_strtok_r(pathdup + 1, "/", &token);
  ------------------
  |  |   94|      1|#define php_strtok_r strtok_r
  ------------------
  376|      2|		while (p) {
  ------------------
  |  Branch (376:10): [True: 1, False: 1]
  ------------------
  377|      1|			if (!strncasecmp(p, "read=", 5)) {
  ------------------
  |  Branch (377:8): [True: 1, False: 0]
  ------------------
  378|      1|				php_stream_apply_filter_list(stream, p + 5, 1, 0);
  379|      1|			} else if (!strncasecmp(p, "write=", 6)) {
  ------------------
  |  Branch (379:15): [True: 0, False: 0]
  ------------------
  380|      0|				php_stream_apply_filter_list(stream, p + 6, 0, 1);
  381|      0|			} else {
  382|      0|				php_stream_apply_filter_list(stream, p, mode_rw & PHP_STREAM_FILTER_READ, mode_rw & PHP_STREAM_FILTER_WRITE);
  ------------------
  |  |   31|      0|#define PHP_STREAM_FILTER_READ	0x0001
  ------------------
              				php_stream_apply_filter_list(stream, p, mode_rw & PHP_STREAM_FILTER_READ, mode_rw & PHP_STREAM_FILTER_WRITE);
  ------------------
  |  |   32|      0|#define PHP_STREAM_FILTER_WRITE	0x0002
  ------------------
  383|      0|			}
  384|      1|			p = php_strtok_r(NULL, "/", &token);
  ------------------
  |  |   94|      1|#define php_strtok_r strtok_r
  ------------------
  385|      1|		}
  386|      1|		efree(pathdup);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  387|       |
  388|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  389|      0|			php_stream_close(stream);
  ------------------
  |  |  357|      0|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      0|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      0|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  390|      0|			return NULL;
  391|      0|		}
  392|       |
  393|      1|		return stream;
  394|      1|	} else {
  395|       |		/* invalid php://thingy */
  396|      1|		php_stream_wrapper_warn(wrapper, context, options,
  ------------------
  |  |  173|      1|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      1|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      1|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      1|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  397|      1|				InvalidUrl, "Invalid php:// URL specified");
  398|      1|		return NULL;
  399|      1|	}
  400|       |
  401|       |	/* must be stdin, stderr or stdout */
  402|      0|	if (fd == -1)	{
  ------------------
  |  Branch (402:6): [True: 0, False: 0]
  ------------------
  403|       |		/* failed to dup */
  404|      0|		return NULL;
  405|      0|	}
  406|       |
  407|      0|#if defined(S_IFSOCK) && !defined(PHP_WIN32)
  408|      0|	do {
  409|      0|		zend_stat_t st = {0};
  410|      0|		memset(&st, 0, sizeof(st));
  411|      0|		if (zend_fstat(fd, &st) == 0 && (st.st_mode & S_IFMT) == S_IFSOCK) {
  ------------------
  |  |   97|      0|# define zend_fstat fstat
  ------------------
  |  Branch (411:7): [True: 0, False: 0]
  |  Branch (411:35): [True: 0, False: 0]
  ------------------
  412|      0|			stream = php_stream_sock_open_from_socket(fd, NULL);
  ------------------
  |  |  389|      0|#define php_stream_sock_open_from_socket(socket, persistent)	_php_stream_sock_open_from_socket((socket), (persistent) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  413|      0|			if (stream) {
  ------------------
  |  Branch (413:8): [True: 0, False: 0]
  ------------------
  414|      0|				stream->ops = &php_stream_socket_ops;
  415|      0|				return stream;
  416|      0|			}
  417|      0|		}
  418|      0|	} while (0);
  ------------------
  |  Branch (418:11): [Folded, False: 0]
  ------------------
  419|      0|#endif
  420|       |
  421|      0|	if (file) {
  ------------------
  |  Branch (421:6): [True: 0, False: 0]
  ------------------
  422|      0|		stream = php_stream_fopen_from_file(file, mode);
  ------------------
  |  |   31|      0|#define php_stream_fopen_from_file(file, mode)	_php_stream_fopen_from_file((file), (mode) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|      0|	} else {
  424|      0|		stream = php_stream_fopen_from_fd(fd, mode, NULL);
  ------------------
  |  |   34|      0|#define php_stream_fopen_from_fd(fd, mode, persistent_id)	_php_stream_fopen_from_fd((fd), (mode), (persistent_id), false STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  425|      0|		if (stream == NULL) {
  ------------------
  |  Branch (425:7): [True: 0, False: 0]
  ------------------
  426|      0|			close(fd);
  427|      0|		}
  428|      0|	}
  429|       |
  430|       |#ifdef PHP_WIN32
  431|       |	if (pipe_requested && stream && context) {
  432|       |		zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking");
  433|       |		if (blocking_pipes) {
  434|       |			php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, zval_get_long(blocking_pipes), NULL);
  435|       |		}
  436|       |	}
  437|       |#endif
  438|      0|	return stream;
  439|      0|}
php_fopen_wrapper.c:php_stream_apply_filter_list:
  148|      1|{
  149|      1|	char *p, *token = NULL;
  150|      1|	php_stream_filter *temp_filter;
  151|       |
  152|      1|	p = php_strtok_r(filterlist, "|", &token);
  ------------------
  |  |   94|      1|#define php_strtok_r strtok_r
  ------------------
  153|      2|	while (p) {
  ------------------
  |  Branch (153:9): [True: 1, False: 1]
  ------------------
  154|      1|		php_url_decode(p, strlen(p));
  155|      1|		if (read_chain) {
  ------------------
  |  Branch (155:7): [True: 1, False: 0]
  ------------------
  156|      1|			if ((temp_filter = php_stream_filter_create(p, NULL, php_stream_is_persistent(stream)))) {
  ------------------
  |  |  576|      1|#define php_stream_is_persistent(stream)	(stream)->is_persistent
  ------------------
  |  Branch (156:8): [True: 1, False: 0]
  ------------------
  157|      1|				php_stream_filter_append(&stream->readfilters, temp_filter);
  ------------------
  |  |  157|      1|#define php_stream_filter_append(chain, filter) _php_stream_filter_append((chain), (filter))
  ------------------
  158|      1|			} else {
  159|      0|				php_stream_wrapper_warn_nt(NULL, PHP_STREAM_CONTEXT(stream), REPORT_ERRORS,
  ------------------
  |  |  182|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, false, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  |  Branch (182:36): [True: 0, False: 0]
  |  |  ------------------
  |  |  183|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  160|      0|					CreateFailed,
  161|      0|					"Unable to create filter (%s)", p);
  162|      0|			}
  163|      1|		}
  164|      1|		if (write_chain) {
  ------------------
  |  Branch (164:7): [True: 0, False: 1]
  ------------------
  165|      0|			if ((temp_filter = php_stream_filter_create(p, NULL, php_stream_is_persistent(stream)))) {
  ------------------
  |  |  576|      0|#define php_stream_is_persistent(stream)	(stream)->is_persistent
  ------------------
  |  Branch (165:8): [True: 0, False: 0]
  ------------------
  166|      0|				php_stream_filter_append(&stream->writefilters, temp_filter);
  ------------------
  |  |  157|      0|#define php_stream_filter_append(chain, filter) _php_stream_filter_append((chain), (filter))
  ------------------
  167|      0|			} else {
  168|      0|				php_stream_wrapper_warn_nt(NULL, PHP_STREAM_CONTEXT(stream), REPORT_ERRORS,
  ------------------
  |  |  182|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, false, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  |  Branch (182:36): [True: 0, False: 0]
  |  |  ------------------
  |  |  183|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  169|      0|					CreateFailed,
  170|      0|					"Unable to create filter (%s)", p);
  171|      0|			}
  172|      0|		}
  173|      1|		p = php_strtok_r(NULL, "|", &token);
  ------------------
  |  |   94|      1|#define php_strtok_r strtok_r
  ------------------
  174|      1|	}
  175|      1|}

zm_startup_proc_open:
  330|      2|{
  331|       |	le_proc_open = zend_register_list_destructors_ex(proc_open_rsrc_dtor, NULL, "process",
  332|      2|		module_number);
  333|      2|	return SUCCESS;
  334|      2|}

php_quot_print_encode:
  139|     13|{
  140|     13|	zend_ulong lp = 0;
  141|     13|	unsigned char c, *d;
  142|     13|	const char *hex = "0123456789ABCDEF";
  143|     13|	zend_string *ret;
  144|       |
  145|     13|	ret = zend_string_safe_alloc(3, (length + (((3 * length)/(PHP_QPRINT_MAXL-9)) + 1)), 0, 0);
  ------------------
  |  |  136|     13|#define PHP_QPRINT_MAXL 75
  ------------------
  146|     13|	d = (unsigned char*)ZSTR_VAL(ret);
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  147|       |
  148|    706|	while (length--) {
  ------------------
  |  Branch (148:9): [True: 693, False: 13]
  ------------------
  149|    693|		if (((c = *str++) == '\015') && (*str == '\012') && length > 0) {
  ------------------
  |  Branch (149:7): [True: 2, False: 691]
  |  Branch (149:35): [True: 0, False: 2]
  |  Branch (149:55): [True: 0, False: 0]
  ------------------
  150|      0|			*d++ = '\015';
  151|      0|			*d++ = *str++;
  152|      0|			length--;
  153|      0|			lp = 0;
  154|    693|		} else {
  155|    693|			if (iscntrl (c) || (c == 0x7f) || (c & 0x80) || (c == '=') || ((c == ' ') && (*str == '\015'))) {
  ------------------
  |  Branch (155:8): [True: 281, False: 412]
  |  Branch (155:23): [True: 0, False: 412]
  |  Branch (155:38): [True: 189, False: 223]
  |  Branch (155:52): [True: 4, False: 219]
  |  Branch (155:67): [True: 41, False: 178]
  |  Branch (155:81): [True: 0, False: 41]
  ------------------
  156|    474|				if ((((lp+= 3) > PHP_QPRINT_MAXL) && (c <= 0x7f))
  ------------------
  |  |  136|    474|#define PHP_QPRINT_MAXL 75
  ------------------
  |  Branch (156:10): [True: 12, False: 462]
  |  Branch (156:42): [True: 8, False: 4]
  ------------------
  157|    466|				    || ((c > 0x7f) && (c <= 0xdf) && ((lp + 3) > PHP_QPRINT_MAXL))
  ------------------
  |  |  136|     41|#define PHP_QPRINT_MAXL 75
  ------------------
  |  Branch (157:13): [True: 189, False: 277]
  |  Branch (157:27): [True: 41, False: 148]
  |  Branch (157:42): [True: 3, False: 38]
  ------------------
  158|    463|				    || ((c > 0xdf) && (c <= 0xef) && ((lp + 6) > PHP_QPRINT_MAXL))
  ------------------
  |  |  136|     58|#define PHP_QPRINT_MAXL 75
  ------------------
  |  Branch (158:13): [True: 148, False: 315]
  |  Branch (158:27): [True: 58, False: 90]
  |  Branch (158:42): [True: 4, False: 54]
  ------------------
  159|    459|				    || ((c > 0xef) && (c <= 0xf4) && ((lp + 9) > PHP_QPRINT_MAXL))) {
  ------------------
  |  |  136|      2|#define PHP_QPRINT_MAXL 75
  ------------------
  |  Branch (159:13): [True: 90, False: 369]
  |  Branch (159:27): [True: 2, False: 88]
  |  Branch (159:42): [True: 0, False: 2]
  ------------------
  160|     15|					*d++ = '=';
  161|     15|					*d++ = '\015';
  162|     15|					*d++ = '\012';
  163|     15|					lp = 3;
  164|     15|				}
  165|    474|				*d++ = '=';
  166|    474|				*d++ = hex[c >> 4];
  167|    474|				*d++ = hex[c & 0xf];
  168|    474|			} else {
  169|    219|				if ((++lp) > PHP_QPRINT_MAXL) {
  ------------------
  |  |  136|    219|#define PHP_QPRINT_MAXL 75
  ------------------
  |  Branch (169:9): [True: 0, False: 219]
  ------------------
  170|      0|					*d++ = '=';
  171|      0|					*d++ = '\015';
  172|      0|					*d++ = '\012';
  173|      0|					lp = 1;
  174|      0|				}
  175|    219|				*d++ = c;
  176|    219|			}
  177|    693|		}
  178|    693|	}
  179|     13|	*d = '\0';
  180|     13|	ret = zend_string_truncate(ret, d - (unsigned char*)ZSTR_VAL(ret), 0);
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  181|     13|	return ret;
  182|     13|}
zif_quoted_printable_encode:
  255|     13|{
  256|     13|	zend_string *str;
  257|     13|	zend_string *new_str;
  258|       |
  259|     39|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     13|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     13|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     13|		const int _flags = (flags); \
  |  |  |  | 1599|     13|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     13|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     13|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     13|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     13|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     13|		uint32_t _i = 0; \
  |  |  |  | 1603|     13|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     13|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     13|		char *_error = NULL; \
  |  |  |  | 1606|     13|		bool _dummy = 0; \
  |  |  |  | 1607|     13|		bool _optional = 0; \
  |  |  |  | 1608|     13|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     13|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     13|		((void)_i); \
  |  |  |  | 1610|     13|		((void)_real_arg); \
  |  |  |  | 1611|     13|		((void)_arg); \
  |  |  |  | 1612|     13|		((void)_expected_type); \
  |  |  |  | 1613|     13|		((void)_error); \
  |  |  |  | 1614|     13|		((void)_optional); \
  |  |  |  | 1615|     13|		((void)_dummy); \
  |  |  |  | 1616|     13|		\
  |  |  |  | 1617|     13|		do { \
  |  |  |  | 1618|     13|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     26|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     13|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     13|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     13|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     13|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     13|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|     52|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|     13|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     13|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     13|	++_i; \
  |  |  |  |  |  | 1654|     13|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     13|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     13|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     13|	_real_arg++; \
  |  |  |  |  |  | 1660|     13|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     13|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     13|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     13|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (260:3): [True: 13, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 13, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 13, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 0, False: 13]
  |  Branch (260:3): [True: 13, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  |  Branch (260:3): [True: 0, False: 0]
  ------------------
  261|     13|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     13|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     13|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     13|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     13|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  |  | 1641|     13|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     13|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     13|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (261:2): [True: 13, False: 0]
  |  Branch (261:2): [True: 0, False: 0]
  |  Branch (261:2): [True: 13, False: 0]
  |  Branch (261:2): [True: 0, False: 0]
  ------------------
  262|       |
  263|     13|	if (!ZSTR_LEN(str)) {
  ------------------
  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (263:6): [True: 0, False: 13]
  ------------------
  264|      0|		RETURN_EMPTY_STRING();
  ------------------
  |  | 1058|      0|#define RETURN_EMPTY_STRING() 			do { RETVAL_EMPTY_STRING(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1032|      0|#define RETVAL_EMPTY_STRING()			ZVAL_EMPTY_STRING(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1058:79): [Folded, False: 0]
  |  |  ------------------
  ------------------
  265|      0|	}
  266|       |
  267|     13|	new_str = php_quot_print_encode((unsigned char *)ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   67|     13|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	new_str = php_quot_print_encode((unsigned char *)ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |   68|     13|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  268|     13|	RETURN_STR(new_str);
  ------------------
  |  | 1050|     13|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|     13|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|     13|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|     13|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|     13|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|     13|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|     13|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|     13|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|     13|		/* interned strings support */			\
  |  |  |  |  |  | 1093|     13|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     13|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     13|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|     13|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|     13|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     26|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|     13|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|     13|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|     13|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|     13|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  269|     13|}

zif_bin2hex:
  157|      1|{
  158|      1|	zend_string *result;
  159|      1|	zend_string *data;
  160|       |
  161|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|      4|		Z_PARAM_STR(data)
  ------------------
  |  | 2102|      1|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      1|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (162:3): [True: 1, False: 0]
  |  Branch (162:3): [True: 0, False: 0]
  |  Branch (162:3): [True: 1, False: 0]
  |  Branch (162:3): [True: 0, False: 0]
  |  Branch (162:3): [True: 1, False: 0]
  |  Branch (162:3): [True: 0, False: 0]
  |  Branch (162:3): [True: 0, False: 1]
  |  Branch (162:3): [True: 1, False: 0]
  |  Branch (162:3): [True: 0, False: 0]
  |  Branch (162:3): [True: 0, False: 0]
  ------------------
  163|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (163:2): [True: 1, False: 0]
  |  Branch (163:2): [True: 0, False: 0]
  |  Branch (163:2): [True: 1, False: 0]
  |  Branch (163:2): [True: 0, False: 0]
  ------------------
  164|       |
  165|      1|	result = php_bin2hex((unsigned char *)ZSTR_VAL(data), ZSTR_LEN(data));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	result = php_bin2hex((unsigned char *)ZSTR_VAL(data), ZSTR_LEN(data));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  166|       |
  167|      1|	RETURN_STR(result);
  ------------------
  |  | 1050|      1|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      1|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      1|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  168|      1|}
zif_explode:
  904|      1|{
  905|      1|	zend_string *str, *delim;
  906|      1|	zend_long limit = ZEND_LONG_MAX; /* No limit */
  ------------------
  |  |   34|      1|# define ZEND_LONG_MAX INT64_MAX
  ------------------
  907|      1|	zval tmp;
  908|       |
  909|      2|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  910|      2|		Z_PARAM_STR(delim)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  |  Branch (910:3): [True: 0, False: 0]
  ------------------
  911|      0|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  |  Branch (911:3): [True: 0, False: 0]
  ------------------
  912|      0|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      0|	_optional = 1;
  ------------------
  913|      0|		Z_PARAM_LONG(limit)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  |  Branch (913:3): [True: 0, False: 0]
  ------------------
  914|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (914:2): [True: 0, False: 0]
  |  Branch (914:2): [True: 0, False: 0]
  |  Branch (914:2): [True: 0, False: 0]
  |  Branch (914:2): [True: 0, False: 0]
  ------------------
  915|       |
  916|      0|	if (ZSTR_LEN(delim) == 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (916:6): [True: 0, False: 0]
  ------------------
  917|      0|		zend_argument_must_not_be_empty_error(1);
  918|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (918:3): [True: 0, False: 0]
  |  Branch (918:3): [True: 0, False: 0]
  ------------------
  919|      0|	}
  920|       |
  921|      0|	array_init(return_value);
  922|       |
  923|      0|	if (ZSTR_LEN(str) == 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (923:6): [True: 0, False: 0]
  ------------------
  924|      0|		if (limit >= 0) {
  ------------------
  |  Branch (924:7): [True: 0, False: 0]
  ------------------
  925|      0|			ZVAL_EMPTY_STRING(&tmp);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  926|      0|			zend_hash_index_add_new(Z_ARRVAL_P(return_value), 0, &tmp);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  927|      0|		}
  928|      0|		return;
  929|      0|	}
  930|       |
  931|      0|	if (limit > 1) {
  ------------------
  |  Branch (931:6): [True: 0, False: 0]
  ------------------
  932|      0|		php_explode(delim, str, return_value, limit);
  933|      0|	} else if (limit < 0) {
  ------------------
  |  Branch (933:13): [True: 0, False: 0]
  ------------------
  934|      0|		php_explode_negative_limit(delim, str, return_value, limit);
  935|      0|	} else {
  936|      0|		ZVAL_STR_COPY(&tmp, str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  937|      0|		zend_hash_index_add_new(Z_ARRVAL_P(return_value), 0, &tmp);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  938|      0|	}
  939|      0|}
zif_strtok:
 1123|    477|{
 1124|    477|	zend_string *str, *tok = NULL;
 1125|    477|	char *token;
 1126|    477|	char *token_end;
 1127|    477|	char *p;
 1128|    477|	char *pe;
 1129|    477|	size_t skipped = 0;
 1130|       |
 1131|  1.43k|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|    477|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|    477|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|    477|		const int _flags = (flags); \
  |  |  |  | 1599|    477|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|    477|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|    477|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|    477|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|    477|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|    477|		uint32_t _i = 0; \
  |  |  |  | 1603|    477|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|    477|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|    477|		char *_error = NULL; \
  |  |  |  | 1606|    477|		bool _dummy = 0; \
  |  |  |  | 1607|    477|		bool _optional = 0; \
  |  |  |  | 1608|    477|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|    477|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|    477|		((void)_i); \
  |  |  |  | 1610|    477|		((void)_real_arg); \
  |  |  |  | 1611|    477|		((void)_arg); \
  |  |  |  | 1612|    477|		((void)_expected_type); \
  |  |  |  | 1613|    477|		((void)_error); \
  |  |  |  | 1614|    477|		((void)_optional); \
  |  |  |  | 1615|    477|		((void)_dummy); \
  |  |  |  | 1616|    477|		\
  |  |  |  | 1617|    477|		do { \
  |  |  |  | 1618|    477|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    954|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|    477|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    477|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|    477|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|    477|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|    477|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|    477|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1132|  1.90k|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|    477|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|    477|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    477|	++_i; \
  |  |  |  |  |  | 1654|    477|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    477|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    477|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    477|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    477|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|    477|	_real_arg++; \
  |  |  |  |  |  | 1660|    477|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|    477|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|    477|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|    477|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    477|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1132:3): [True: 477, False: 0]
  |  Branch (1132:3): [True: 0, False: 0]
  |  Branch (1132:3): [True: 477, False: 0]
  |  Branch (1132:3): [True: 0, False: 0]
  |  Branch (1132:3): [True: 477, False: 0]
  |  Branch (1132:3): [True: 0, False: 0]
  |  Branch (1132:3): [True: 0, False: 477]
  |  Branch (1132:3): [True: 477, False: 0]
  |  Branch (1132:3): [True: 0, False: 0]
  |  Branch (1132:3): [True: 0, False: 0]
  ------------------
 1133|    477|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|    477|	_optional = 1;
  ------------------
 1134|    968|		Z_PARAM_STR_OR_NULL(tok)
  ------------------
  |  | 2105|    477|	Z_PARAM_STR_EX(dest, 1, 0)
  |  |  ------------------
  |  |  |  | 2094|    477|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|    477|	++_i; \
  |  |  |  |  |  | 1654|    477|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    477|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|    477|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    477|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|    477|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 477, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|    477|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    477|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 470, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|    477|	} \
  |  |  |  |  |  | 1659|    477|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      7|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1134:3): [True: 477, False: 0]
  |  Branch (1134:3): [True: 0, False: 0]
  |  Branch (1134:3): [True: 0, False: 477]
  |  Branch (1134:3): [True: 477, False: 0]
  |  Branch (1134:3): [True: 477, False: 0]
  |  Branch (1134:3): [True: 0, False: 0]
  |  Branch (1134:3): [True: 477, False: 0]
  |  Branch (1134:3): [True: 0, False: 0]
  |  Branch (1134:3): [True: 0, False: 0]
  |  Branch (1134:3): [True: 0, False: 0]
  ------------------
 1135|    477|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      7|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      7|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1641|    477|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|    477|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 477]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|    477|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 477]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1135:2): [True: 7, False: 0]
  |  Branch (1135:2): [True: 0, False: 0]
  |  Branch (1135:2): [True: 7, False: 0]
  |  Branch (1135:2): [True: 0, False: 0]
  ------------------
 1136|       |
 1137|    477|	if (!tok) {
  ------------------
  |  Branch (1137:6): [True: 470, False: 7]
  ------------------
 1138|    470|		tok = str;
 1139|    470|	} else {
 1140|      7|		if (BG(strtok_string)) {
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 1141|      0|			zend_string_release(BG(strtok_string));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1142|      0|		}
 1143|      7|		BG(strtok_string) = zend_string_copy(str);
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
 1144|      7|		BG(strtok_last) = ZSTR_VAL(str);
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
              		BG(strtok_last) = ZSTR_VAL(str);
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1145|      7|		BG(strtok_len) = ZSTR_LEN(str);
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
              		BG(strtok_len) = ZSTR_LEN(str);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1146|      7|	}
 1147|       |
 1148|    477|	if (!BG(strtok_string)) {
  ------------------
  |  |  113|    477|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1148:6): [True: 1, False: 476]
  ------------------
 1149|       |		/* String to tokenize not set. */
 1150|      1|		php_error_docref(NULL, E_WARNING, "Both arguments must be provided when starting tokenization");
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 1151|      1|		RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1152|      1|	}
 1153|       |
 1154|    476|	p = BG(strtok_last); /* Where we start to search */
  ------------------
  |  |  113|    476|#define BG(v) (basic_globals.v)
  ------------------
 1155|    476|	pe = ZSTR_VAL(BG(strtok_string)) + BG(strtok_len);
  ------------------
  |  |   67|    476|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	pe = ZSTR_VAL(BG(strtok_string)) + BG(strtok_len);
  ------------------
  |  |  113|    476|#define BG(v) (basic_globals.v)
  ------------------
 1156|    476|	if (p >= pe) {
  ------------------
  |  Branch (1156:6): [True: 450, False: 26]
  ------------------
 1157|       |		/* Reached the end of the string. */
 1158|    450|		RETURN_FALSE;
  ------------------
  |  | 1069|    450|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|    450|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|    450|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|    450|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    450|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    450|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|    450|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|    450|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 450]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1159|    450|	}
 1160|       |
 1161|     26|	token = ZSTR_VAL(tok);
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1162|     26|	token_end = token + ZSTR_LEN(tok);
  ------------------
  |  |   68|     26|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1163|       |
 1164|    185|	while (token < token_end) {
  ------------------
  |  Branch (1164:9): [True: 159, False: 26]
  ------------------
 1165|    159|		STRTOK_TABLE(token++) = 1;
  ------------------
  |  | 1119|    159|#define STRTOK_TABLE(p) BG(strtok_table)[(unsigned char) *p]
  |  |  ------------------
  |  |  |  |  113|    159|#define BG(v) (basic_globals.v)
  |  |  ------------------
  ------------------
 1166|    159|	}
 1167|       |
 1168|       |	/* Skip leading delimiters */
 1169|     27|	while (STRTOK_TABLE(p)) {
  ------------------
  |  | 1119|     27|#define STRTOK_TABLE(p) BG(strtok_table)[(unsigned char) *p]
  |  |  ------------------
  |  |  |  |  113|     27|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (1119:25): [True: 1, False: 26]
  |  |  ------------------
  ------------------
 1170|      1|		if (++p >= pe) {
  ------------------
  |  Branch (1170:7): [True: 0, False: 1]
  ------------------
 1171|       |			/* no other chars left */
 1172|      0|			goto return_false;
 1173|      0|		}
 1174|      1|		skipped++;
 1175|      1|	}
 1176|       |
 1177|       |	/* We know at this place that *p is no delimiter, so skip it */
 1178|    113|	while (++p < pe) {
  ------------------
  |  Branch (1178:9): [True: 106, False: 7]
  ------------------
 1179|    106|		if (STRTOK_TABLE(p)) {
  ------------------
  |  | 1119|    106|#define STRTOK_TABLE(p) BG(strtok_table)[(unsigned char) *p]
  |  |  ------------------
  |  |  |  |  113|    106|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (1119:25): [True: 19, False: 87]
  |  |  ------------------
  ------------------
 1180|     19|			goto return_token;
 1181|     19|		}
 1182|    106|	}
 1183|       |
 1184|      7|	if (p - BG(strtok_last)) {
  ------------------
  |  |  113|      7|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1184:6): [True: 7, False: 0]
  ------------------
 1185|     26|return_token:
 1186|     26|		RETVAL_STRINGL(BG(strtok_last) + skipped, (p - BG(strtok_last)) - skipped);
  ------------------
  |  | 1029|     26|#define RETVAL_STRINGL(s, l)			ZVAL_STRINGL(return_value, s, l)
  |  |  ------------------
  |  |  |  |  963|     26|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|     26|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|     26|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|     26|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|     26|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|     26|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|     26|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|     26|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|     26|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     26|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     26|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     26|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|     26|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|     26|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|     26|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|     26|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|     26|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1187|     26|		BG(strtok_last) = p + 1;
  ------------------
  |  |  113|     26|#define BG(v) (basic_globals.v)
  ------------------
 1188|     26|	} else {
 1189|      0|return_false:
 1190|      0|		RETVAL_FALSE;
  ------------------
  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1191|      0|		zend_string_release(BG(strtok_string));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1192|      0|		BG(strtok_string) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1193|      0|	}
 1194|       |
 1195|       |	/* Restore table -- usually faster then memset'ing the table on every invocation */
 1196|     26|	token = ZSTR_VAL(tok);
  ------------------
  |  |   67|     26|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1197|    185|	while (token < token_end) {
  ------------------
  |  Branch (1197:9): [True: 159, False: 26]
  ------------------
 1198|    159|		STRTOK_TABLE(token++) = 0;
  ------------------
  |  | 1119|    159|#define STRTOK_TABLE(p) BG(strtok_table)[(unsigned char) *p]
  |  |  ------------------
  |  |  |  |  113|    159|#define BG(v) (basic_globals.v)
  |  |  ------------------
  ------------------
 1199|    159|	}
 1200|     26|}
zif_strtoupper:
 1205|      7|{
 1206|      7|	zend_string *arg;
 1207|       |
 1208|     21|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      7|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      7|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      7|		const int _flags = (flags); \
  |  |  |  | 1599|      7|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      7|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      7|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      7|		uint32_t _i = 0; \
  |  |  |  | 1603|      7|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      7|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      7|		char *_error = NULL; \
  |  |  |  | 1606|      7|		bool _dummy = 0; \
  |  |  |  | 1607|      7|		bool _optional = 0; \
  |  |  |  | 1608|      7|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      7|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      7|		((void)_i); \
  |  |  |  | 1610|      7|		((void)_real_arg); \
  |  |  |  | 1611|      7|		((void)_arg); \
  |  |  |  | 1612|      7|		((void)_expected_type); \
  |  |  |  | 1613|      7|		((void)_error); \
  |  |  |  | 1614|      7|		((void)_optional); \
  |  |  |  | 1615|      7|		((void)_dummy); \
  |  |  |  | 1616|      7|		\
  |  |  |  | 1617|      7|		do { \
  |  |  |  | 1618|      7|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      7|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      7|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      7|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1209|     28|		Z_PARAM_STR(arg)
  ------------------
  |  | 2102|      7|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      7|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      1|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2097|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      1|			break; \
  |  |  |  | 2099|      1|		}
  |  |  ------------------
  ------------------
  |  Branch (1209:3): [True: 7, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 7, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 7, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 0, False: 7]
  |  Branch (1209:3): [True: 7, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  |  Branch (1209:3): [True: 0, False: 0]
  ------------------
 1210|      7|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      6|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      6|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1641|      7|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1210:2): [True: 6, False: 0]
  |  Branch (1210:2): [True: 0, False: 0]
  |  Branch (1210:2): [True: 6, False: 0]
  |  Branch (1210:2): [True: 0, False: 0]
  ------------------
 1211|       |
 1212|      6|	RETURN_STR(zend_string_toupper(arg));
  ------------------
  |  | 1050|      6|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      6|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      6|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      6|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      6|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      6|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      6|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      6|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      6|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      6|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     12|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1213|      6|}
zif_strtolower:
 1218|      2|{
 1219|      2|	zend_string *str;
 1220|       |
 1221|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1222|      8|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1222:3): [True: 2, False: 0]
  |  Branch (1222:3): [True: 0, False: 0]
  |  Branch (1222:3): [True: 2, False: 0]
  |  Branch (1222:3): [True: 0, False: 0]
  |  Branch (1222:3): [True: 2, False: 0]
  |  Branch (1222:3): [True: 0, False: 0]
  |  Branch (1222:3): [True: 0, False: 2]
  |  Branch (1222:3): [True: 2, False: 0]
  |  Branch (1222:3): [True: 0, False: 0]
  |  Branch (1222:3): [True: 0, False: 0]
  ------------------
 1223|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1223:2): [True: 2, False: 0]
  |  Branch (1223:2): [True: 0, False: 0]
  |  Branch (1223:2): [True: 2, False: 0]
  |  Branch (1223:2): [True: 0, False: 0]
  ------------------
 1224|       |
 1225|      2|	RETURN_STR(zend_string_tolower(str));
  ------------------
  |  | 1050|      2|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1226|      2|}
php_basename:
 1362|      1|{
 1363|      1|	const char *basename_start;
 1364|      1|	const char *basename_end;
 1365|       |
 1366|      1|	if (CG(ascii_compatible_locale)) {
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1367|      1|		basename_end = s + len - 1;
 1368|       |
 1369|       |		/* Strip trailing slashes */
 1370|      1|		while (basename_end >= s
  ------------------
  |  Branch (1370:10): [True: 1, False: 0]
  ------------------
 1371|       |#ifdef PHP_WIN32
 1372|       |			&& (*basename_end == '/'
 1373|       |				|| *basename_end == '\\'
 1374|       |				|| (*basename_end == ':'
 1375|       |					&& _is_basename_start(s, basename_end)))) {
 1376|       |#else
 1377|      1|			&& *basename_end == '/') {
  ------------------
  |  Branch (1377:7): [True: 0, False: 1]
  ------------------
 1378|      0|#endif
 1379|      0|			basename_end--;
 1380|      0|		}
 1381|      1|		if (basename_end < s) {
  ------------------
  |  Branch (1381:7): [True: 0, False: 1]
  ------------------
 1382|      0|			return ZSTR_EMPTY_ALLOC();
 1383|      0|		}
 1384|       |
 1385|       |		/* Extract filename */
 1386|      1|		basename_start = basename_end;
 1387|      1|		basename_end++;
 1388|     10|		while (basename_start > s
  ------------------
  |  Branch (1388:10): [True: 10, False: 0]
  ------------------
 1389|       |#ifdef PHP_WIN32
 1390|       |			&& *(basename_start-1) != '/'
 1391|       |			&& *(basename_start-1) != '\\') {
 1392|       |
 1393|       |			if (*(basename_start-1) == ':' &&
 1394|       |				_is_basename_start(s, basename_start - 1)) {
 1395|       |				break;
 1396|       |			}
 1397|       |#else
 1398|     10|			&& *(basename_start-1) != '/') {
  ------------------
  |  Branch (1398:7): [True: 9, False: 1]
  ------------------
 1399|      9|#endif
 1400|      9|			basename_start--;
 1401|      9|		}
 1402|      1|	} else {
 1403|       |		/* State 0 is directly after a directory separator (or at the start of the string).
 1404|       |		 * State 1 is everything else. */
 1405|      0|		int state = 0;
 1406|       |
 1407|      0|		basename_start = s;
 1408|      0|		basename_end = s;
 1409|      0|		while (len > 0) {
  ------------------
  |  Branch (1409:10): [True: 0, False: 0]
  ------------------
 1410|      0|			int inc_len = (*s == '\0' ? 1 : php_mblen(s, len));
  ------------------
  |  |   61|      0|# define php_mblen(ptr, len) ((int) mbrlen(ptr, len, &BG(mblen_state)))
  |  |  ------------------
  |  |  |  |  113|      0|#define BG(v) (basic_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1410:19): [True: 0, False: 0]
  ------------------
 1411|       |
 1412|      0|			switch (inc_len) {
 1413|      0|				case 0:
  ------------------
  |  Branch (1413:5): [True: 0, False: 0]
  ------------------
 1414|      0|					goto quit_loop;
 1415|      0|				case 1:
  ------------------
  |  Branch (1415:5): [True: 0, False: 0]
  ------------------
 1416|       |#ifdef PHP_WIN32
 1417|       |					if (*s == '/' || *s == '\\') {
 1418|       |#else
 1419|      0|					if (*s == '/') {
  ------------------
  |  Branch (1419:10): [True: 0, False: 0]
  ------------------
 1420|      0|#endif
 1421|      0|						if (state == 1) {
  ------------------
  |  Branch (1421:11): [True: 0, False: 0]
  ------------------
 1422|      0|							state = 0;
 1423|      0|							basename_end = s;
 1424|      0|						}
 1425|       |#ifdef PHP_WIN32
 1426|       |					/* Catch relative paths in c:file.txt style. They're not to confuse
 1427|       |					   with the NTFS streams. This part ensures also, that no drive
 1428|       |					   letter traversing happens. */
 1429|       |					} else if ((*s == ':' && (s - basename_start == 1))) {
 1430|       |						if (state == 0) {
 1431|       |							basename_start = s;
 1432|       |							state = 1;
 1433|       |						} else {
 1434|       |							basename_end = s;
 1435|       |							state = 0;
 1436|       |						}
 1437|       |#endif
 1438|      0|					} else {
 1439|      0|						if (state == 0) {
  ------------------
  |  Branch (1439:11): [True: 0, False: 0]
  ------------------
 1440|      0|							basename_start = s;
 1441|      0|							state = 1;
 1442|      0|						}
 1443|      0|					}
 1444|      0|					break;
 1445|      0|				default:
  ------------------
  |  Branch (1445:5): [True: 0, False: 0]
  ------------------
 1446|      0|					if (inc_len < 0) {
  ------------------
  |  Branch (1446:10): [True: 0, False: 0]
  ------------------
 1447|       |						/* If character is invalid, treat it like other non-significant characters. */
 1448|      0|						inc_len = 1;
 1449|      0|						php_mb_reset();
  ------------------
  |  |   62|      0|# define php_mb_reset() memset(&BG(mblen_state), 0, sizeof(BG(mblen_state)))
  |  |  ------------------
  |  |  |  |  113|      0|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |               # define php_mb_reset() memset(&BG(mblen_state), 0, sizeof(BG(mblen_state)))
  |  |  ------------------
  |  |  |  |  113|      0|#define BG(v) (basic_globals.v)
  |  |  ------------------
  ------------------
 1450|      0|					}
 1451|      0|					if (state == 0) {
  ------------------
  |  Branch (1451:10): [True: 0, False: 0]
  ------------------
 1452|      0|						basename_start = s;
 1453|      0|						state = 1;
 1454|      0|					}
 1455|      0|					break;
 1456|      0|			}
 1457|      0|			s += inc_len;
 1458|      0|			len -= inc_len;
 1459|      0|		}
 1460|       |
 1461|      0|quit_loop:
 1462|      0|		if (state == 1) {
  ------------------
  |  Branch (1462:7): [True: 0, False: 0]
  ------------------
 1463|      0|			basename_end = s;
 1464|      0|		}
 1465|      0|	}
 1466|       |
 1467|      1|	if (suffix != NULL && suffix_len < (size_t)(basename_end - basename_start) &&
  ------------------
  |  Branch (1467:6): [True: 0, False: 1]
  |  Branch (1467:24): [True: 0, False: 0]
  ------------------
 1468|      0|			memcmp(basename_end - suffix_len, suffix, suffix_len) == 0) {
  ------------------
  |  Branch (1468:4): [True: 0, False: 0]
  ------------------
 1469|      0|		basename_end -= suffix_len;
 1470|      0|	}
 1471|       |
 1472|      1|	return zend_string_init(basename_start, basename_end - basename_start, 0);
 1473|      1|}
zif_basename:
 1478|      1|{
 1479|      1|	char *string, *suffix = NULL;
 1480|      1|	size_t   string_len, suffix_len = 0;
 1481|       |
 1482|      3|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1483|      4|		Z_PARAM_STRING(string, string_len)
  ------------------
  |  | 2087|      1|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|      1|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1483:3): [True: 1, False: 0]
  |  Branch (1483:3): [True: 0, False: 0]
  |  Branch (1483:3): [True: 1, False: 0]
  |  Branch (1483:3): [True: 0, False: 0]
  |  Branch (1483:3): [True: 1, False: 0]
  |  Branch (1483:3): [True: 0, False: 0]
  |  Branch (1483:3): [True: 0, False: 1]
  |  Branch (1483:3): [True: 1, False: 0]
  |  Branch (1483:3): [True: 0, False: 0]
  |  Branch (1483:3): [True: 0, False: 0]
  ------------------
 1484|      1|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      1|	_optional = 1;
  ------------------
 1485|      2|		Z_PARAM_STRING(suffix, suffix_len)
  ------------------
  |  | 2087|      1|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      1|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      1|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|      0|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1485:3): [True: 1, False: 0]
  |  Branch (1485:3): [True: 0, False: 0]
  |  Branch (1485:3): [True: 0, False: 1]
  |  Branch (1485:3): [True: 1, False: 0]
  |  Branch (1485:3): [True: 1, False: 0]
  |  Branch (1485:3): [True: 0, False: 0]
  |  Branch (1485:3): [True: 1, False: 0]
  |  Branch (1485:3): [True: 0, False: 0]
  |  Branch (1485:3): [True: 0, False: 0]
  |  Branch (1485:3): [True: 0, False: 0]
  ------------------
 1486|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1486:2): [True: 0, False: 0]
  |  Branch (1486:2): [True: 0, False: 0]
  |  Branch (1486:2): [True: 0, False: 0]
  |  Branch (1486:2): [True: 0, False: 0]
  ------------------
 1487|       |
 1488|      1|	RETURN_STR(php_basename(string, string_len, suffix, suffix_len));
  ------------------
  |  | 1050|      1|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      1|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      1|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1489|      1|}
zif_dirname:
 1534|      2|{
 1535|      2|	zend_string *str;
 1536|      2|	zend_long levels = 1;
 1537|       |
 1538|      6|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1539|      8|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1539:3): [True: 2, False: 0]
  |  Branch (1539:3): [True: 0, False: 0]
  |  Branch (1539:3): [True: 2, False: 0]
  |  Branch (1539:3): [True: 0, False: 0]
  |  Branch (1539:3): [True: 2, False: 0]
  |  Branch (1539:3): [True: 0, False: 0]
  |  Branch (1539:3): [True: 0, False: 2]
  |  Branch (1539:3): [True: 2, False: 0]
  |  Branch (1539:3): [True: 0, False: 0]
  |  Branch (1539:3): [True: 0, False: 0]
  ------------------
 1540|      2|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
 1541|      4|		Z_PARAM_LONG(levels)
  ------------------
  |  | 1905|      2|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1541:3): [True: 2, False: 0]
  |  Branch (1541:3): [True: 0, False: 0]
  |  Branch (1541:3): [True: 0, False: 2]
  |  Branch (1541:3): [True: 2, False: 0]
  |  Branch (1541:3): [True: 2, False: 0]
  |  Branch (1541:3): [True: 0, False: 0]
  |  Branch (1541:3): [True: 2, False: 0]
  |  Branch (1541:3): [True: 0, False: 0]
  |  Branch (1541:3): [True: 0, False: 0]
  |  Branch (1541:3): [True: 0, False: 0]
  ------------------
 1542|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1542:2): [True: 0, False: 0]
  |  Branch (1542:2): [True: 0, False: 0]
  |  Branch (1542:2): [True: 0, False: 0]
  |  Branch (1542:2): [True: 0, False: 0]
  ------------------
 1543|       |
 1544|      2|	_zend_dirname(return_value, str, levels);
 1545|      2|}
zif_substr:
 2272|      5|{
 2273|      5|	zend_string *str;
 2274|      5|	zend_long l = 0, f;
 2275|      5|	bool len_is_null = 1;
 2276|       |
 2277|     14|	ZEND_PARSE_PARAMETERS_START(2, 3)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      4|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2278|     16|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      4|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      4|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2278:3): [True: 4, False: 0]
  |  Branch (2278:3): [True: 0, False: 0]
  |  Branch (2278:3): [True: 4, False: 0]
  |  Branch (2278:3): [True: 0, False: 0]
  |  Branch (2278:3): [True: 4, False: 0]
  |  Branch (2278:3): [True: 0, False: 0]
  |  Branch (2278:3): [True: 0, False: 4]
  |  Branch (2278:3): [True: 4, False: 0]
  |  Branch (2278:3): [True: 0, False: 0]
  |  Branch (2278:3): [True: 0, False: 0]
  ------------------
 2279|     20|		Z_PARAM_LONG(f)
  ------------------
  |  | 1905|      4|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2279:3): [True: 4, False: 0]
  |  Branch (2279:3): [True: 0, False: 0]
  |  Branch (2279:3): [True: 4, False: 0]
  |  Branch (2279:3): [True: 0, False: 0]
  |  Branch (2279:3): [True: 4, False: 0]
  |  Branch (2279:3): [True: 0, False: 0]
  |  Branch (2279:3): [True: 0, False: 4]
  |  Branch (2279:3): [True: 4, False: 0]
  |  Branch (2279:3): [True: 0, False: 0]
  |  Branch (2279:3): [True: 0, False: 0]
  ------------------
 2280|      4|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      4|	_optional = 1;
  ------------------
 2281|     16|		Z_PARAM_LONG_OR_NULL(l, len_is_null)
  ------------------
  |  | 1908|      4|	Z_PARAM_LONG_EX(dest, is_null, 1, 0)
  |  |  ------------------
  |  |  |  | 1897|      4|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      4|	++_i; \
  |  |  |  |  |  | 1654|      4|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      4|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      4|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      4|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      4|	} \
  |  |  |  |  |  | 1659|      4|	_real_arg++; \
  |  |  |  |  |  | 1660|      4|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      4|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      4|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      4|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2281:3): [True: 4, False: 0]
  |  Branch (2281:3): [True: 0, False: 0]
  |  Branch (2281:3): [True: 0, False: 4]
  |  Branch (2281:3): [True: 4, False: 0]
  |  Branch (2281:3): [True: 4, False: 0]
  |  Branch (2281:3): [True: 0, False: 0]
  |  Branch (2281:3): [True: 4, False: 0]
  |  Branch (2281:3): [True: 0, False: 0]
  |  Branch (2281:3): [True: 0, False: 0]
  |  Branch (2281:3): [True: 0, False: 0]
  ------------------
 2282|      5|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      4|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      4|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      4|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2282:2): [True: 4, False: 0]
  |  Branch (2282:2): [True: 0, False: 0]
  |  Branch (2282:2): [True: 4, False: 0]
  |  Branch (2282:2): [True: 0, False: 0]
  ------------------
 2283|       |
 2284|      4|	_zend_substr(return_value, str, f, len_is_null, l);
 2285|      4|}
zif_ord:
 2656|      2|{
 2657|      2|	zend_string *str;
 2658|       |
 2659|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2660|      8|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2660:3): [True: 2, False: 0]
  |  Branch (2660:3): [True: 0, False: 0]
  |  Branch (2660:3): [True: 2, False: 0]
  |  Branch (2660:3): [True: 0, False: 0]
  |  Branch (2660:3): [True: 2, False: 0]
  |  Branch (2660:3): [True: 0, False: 0]
  |  Branch (2660:3): [True: 0, False: 2]
  |  Branch (2660:3): [True: 2, False: 0]
  |  Branch (2660:3): [True: 0, False: 0]
  |  Branch (2660:3): [True: 0, False: 0]
  ------------------
 2661|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2661:2): [True: 2, False: 0]
  |  Branch (2661:2): [True: 0, False: 0]
  |  Branch (2661:2): [True: 2, False: 0]
  |  Branch (2661:2): [True: 0, False: 0]
  ------------------
 2662|       |
 2663|      2|	if (UNEXPECTED(ZSTR_LEN(str) != 1)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2664|      0|		if (ZSTR_LEN(str) == 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2664:7): [True: 0, False: 0]
  ------------------
 2665|      0|			php_error_docref(NULL, E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2666|      0|				"Providing an empty string is deprecated");
 2667|      0|		} else {
 2668|      0|			php_error_docref(NULL, E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 2669|      0|				"Providing a string that is not one byte long is deprecated. Use ord($str[0]) instead");
 2670|      0|		}
 2671|      0|	}
 2672|      2|	RETURN_LONG((unsigned char) ZSTR_VAL(str)[0]);
  ------------------
  |  | 1048|      2|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      2|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      2|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      2|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      2|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      2|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      2|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      2|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      2|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2673|      2|}
zif_ucfirst:
 2715|      1|{
 2716|      1|	zend_string *str;
 2717|       |
 2718|      3|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      1|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      1|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      1|		const int _flags = (flags); \
  |  |  |  | 1599|      1|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      1|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      1|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      1|		uint32_t _i = 0; \
  |  |  |  | 1603|      1|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      1|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      1|		char *_error = NULL; \
  |  |  |  | 1606|      1|		bool _dummy = 0; \
  |  |  |  | 1607|      1|		bool _optional = 0; \
  |  |  |  | 1608|      1|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      1|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      1|		((void)_i); \
  |  |  |  | 1610|      1|		((void)_real_arg); \
  |  |  |  | 1611|      1|		((void)_arg); \
  |  |  |  | 1612|      1|		((void)_expected_type); \
  |  |  |  | 1613|      1|		((void)_error); \
  |  |  |  | 1614|      1|		((void)_optional); \
  |  |  |  | 1615|      1|		((void)_dummy); \
  |  |  |  | 1616|      1|		\
  |  |  |  | 1617|      1|		do { \
  |  |  |  | 1618|      1|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      1|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      1|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      1|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      1|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2719|      4|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      1|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      1|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      1|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (2719:3): [True: 1, False: 0]
  |  Branch (2719:3): [True: 0, False: 0]
  |  Branch (2719:3): [True: 1, False: 0]
  |  Branch (2719:3): [True: 0, False: 0]
  |  Branch (2719:3): [True: 1, False: 0]
  |  Branch (2719:3): [True: 0, False: 0]
  |  Branch (2719:3): [True: 0, False: 1]
  |  Branch (2719:3): [True: 1, False: 0]
  |  Branch (2719:3): [True: 0, False: 0]
  |  Branch (2719:3): [True: 0, False: 0]
  ------------------
 2720|      1|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      1|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2720:2): [True: 1, False: 0]
  |  Branch (2720:2): [True: 0, False: 0]
  |  Branch (2720:2): [True: 1, False: 0]
  |  Branch (2720:2): [True: 0, False: 0]
  ------------------
 2721|       |
 2722|      1|	if (!ZSTR_LEN(str)) {
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2722:6): [True: 0, False: 1]
  ------------------
 2723|      0|		RETURN_EMPTY_STRING();
  ------------------
  |  | 1058|      0|#define RETURN_EMPTY_STRING() 			do { RETVAL_EMPTY_STRING(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1032|      0|#define RETVAL_EMPTY_STRING()			ZVAL_EMPTY_STRING(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1058:79): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2724|      0|	}
 2725|       |
 2726|      1|	RETURN_STR(php_ucfirst(str));
  ------------------
  |  | 1050|      1|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      1|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      1|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      1|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      1|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      1|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      1|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      1|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      1|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2727|      1|}
php_str_to_str:
 3336|      6|{
 3337|      6|	zend_string *new_str;
 3338|       |
 3339|      6|	if (needle_len < length) {
  ------------------
  |  Branch (3339:6): [True: 3, False: 3]
  ------------------
 3340|      3|		const char *end;
 3341|      3|		const char *s, *p;
 3342|      3|		char *e, *r;
 3343|       |
 3344|      3|		if (needle_len == str_len) {
  ------------------
  |  Branch (3344:7): [True: 0, False: 3]
  ------------------
 3345|      0|			new_str = zend_string_init(haystack, length, 0);
 3346|      0|			end = ZSTR_VAL(new_str) + length;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3347|      0|			for (p = ZSTR_VAL(new_str); (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			for (p = ZSTR_VAL(new_str); (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |  327|      0|#define php_memnstr zend_memnstr
  ------------------
  |  Branch (3347:32): [True: 0, False: 0]
  ------------------
 3348|      0|				memcpy(r, str, str_len);
 3349|      0|			}
 3350|      0|			return new_str;
 3351|      3|		} else {
 3352|      3|			if (str_len < needle_len) {
  ------------------
  |  Branch (3352:8): [True: 0, False: 3]
  ------------------
 3353|      0|				new_str = zend_string_alloc(length, 0);
 3354|      3|			} else {
 3355|      3|				size_t count = 0;
 3356|      3|				const char *o = haystack;
 3357|      3|				const char *n = needle;
 3358|      3|				const char *endp = o + length;
 3359|       |
 3360|      3|				while ((o = (char*)php_memnstr(o, n, needle_len, endp))) {
  ------------------
  |  |  327|      3|#define php_memnstr zend_memnstr
  ------------------
  |  Branch (3360:12): [True: 0, False: 3]
  ------------------
 3361|      0|					o += needle_len;
 3362|      0|					count++;
 3363|      0|				}
 3364|      3|				if (count == 0) {
  ------------------
  |  Branch (3364:9): [True: 3, False: 0]
  ------------------
 3365|       |					/* Needle doesn't occur, shortcircuit the actual replacement. */
 3366|      3|					new_str = zend_string_init(haystack, length, 0);
 3367|      3|					return new_str;
 3368|      3|				} else {
 3369|      0|					if (str_len > needle_len) {
  ------------------
  |  Branch (3369:10): [True: 0, False: 0]
  ------------------
 3370|      0|						new_str = zend_string_safe_alloc(count, str_len - needle_len, length, 0);
 3371|      0|					} else {
 3372|      0|						new_str = zend_string_alloc(count * (str_len - needle_len) + length, 0);
 3373|      0|					}
 3374|      0|				}
 3375|      3|			}
 3376|       |
 3377|      0|			s = e = ZSTR_VAL(new_str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3378|      0|			end = haystack + length;
 3379|      0|			for (p = haystack; (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |  327|      0|#define php_memnstr zend_memnstr
  ------------------
  |  Branch (3379:23): [True: 0, False: 0]
  ------------------
 3380|      0|				e = zend_mempcpy(e, p, r - p);
 3381|      0|				e = zend_mempcpy(e, str, str_len);
 3382|      0|			}
 3383|       |
 3384|      0|			if (p < end) {
  ------------------
  |  Branch (3384:8): [True: 0, False: 0]
  ------------------
 3385|      0|				e = zend_mempcpy(e, p, end - p);
 3386|      0|			}
 3387|       |
 3388|      0|			*e = '\0';
 3389|      0|			new_str = zend_string_truncate(new_str, e - s, 0);
 3390|      0|			return new_str;
 3391|      3|		}
 3392|      3|	} else if (needle_len > length || memcmp(haystack, needle, length)) {
  ------------------
  |  Branch (3392:13): [True: 3, False: 0]
  |  Branch (3392:36): [True: 0, False: 0]
  ------------------
 3393|      3|		new_str = zend_string_init(haystack, length, 0);
 3394|      3|		return new_str;
 3395|      3|	} else {
 3396|      0|		new_str = zend_string_init(str, str_len, 0);
 3397|       |
 3398|      0|		return new_str;
 3399|      0|	}
 3400|      6|}
zif_strrev:
 3529|     10|{
 3530|     10|	zend_string *str;
 3531|     10|	const char *s, *e;
 3532|     10|	char *p;
 3533|     10|	zend_string *n;
 3534|       |
 3535|     30|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     10|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     10|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     10|		const int _flags = (flags); \
  |  |  |  | 1599|     10|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     10|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     10|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     10|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     10|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     10|		uint32_t _i = 0; \
  |  |  |  | 1603|     10|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     10|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     10|		char *_error = NULL; \
  |  |  |  | 1606|     10|		bool _dummy = 0; \
  |  |  |  | 1607|     10|		bool _optional = 0; \
  |  |  |  | 1608|     10|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     10|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     10|		((void)_i); \
  |  |  |  | 1610|     10|		((void)_real_arg); \
  |  |  |  | 1611|     10|		((void)_arg); \
  |  |  |  | 1612|     10|		((void)_expected_type); \
  |  |  |  | 1613|     10|		((void)_error); \
  |  |  |  | 1614|     10|		((void)_optional); \
  |  |  |  | 1615|     10|		((void)_dummy); \
  |  |  |  | 1616|     10|		\
  |  |  |  | 1617|     10|		do { \
  |  |  |  | 1618|     10|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     10|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     10|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     10|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     10|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     10|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3536|     40|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|     10|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|     10|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     10|	++_i; \
  |  |  |  |  |  | 1654|     10|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     10|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     10|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     10|	_real_arg++; \
  |  |  |  |  |  | 1660|     10|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     10|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     10|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|     10|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3536:3): [True: 10, False: 0]
  |  Branch (3536:3): [True: 0, False: 0]
  |  Branch (3536:3): [True: 10, False: 0]
  |  Branch (3536:3): [True: 0, False: 0]
  |  Branch (3536:3): [True: 10, False: 0]
  |  Branch (3536:3): [True: 0, False: 0]
  |  Branch (3536:3): [True: 0, False: 10]
  |  Branch (3536:3): [True: 10, False: 0]
  |  Branch (3536:3): [True: 0, False: 0]
  |  Branch (3536:3): [True: 0, False: 0]
  ------------------
 3537|     10|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     10|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     10|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     10|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 1641|     10|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3537:2): [True: 10, False: 0]
  |  Branch (3537:2): [True: 0, False: 0]
  |  Branch (3537:2): [True: 10, False: 0]
  |  Branch (3537:2): [True: 0, False: 0]
  ------------------
 3538|       |
 3539|     10|	n = zend_string_alloc(ZSTR_LEN(str), 0);
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3540|     10|	p = ZSTR_VAL(n);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3541|       |
 3542|     10|	s = ZSTR_VAL(str);
  ------------------
  |  |   67|     10|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3543|     10|	e = s + ZSTR_LEN(str);
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3544|     10|	--e;
 3545|       |#ifdef ZEND_INTRIN_SSSE3_NATIVE
 3546|       |	if (e - s > 15) {
 3547|       |		const __m128i map = _mm_set_epi8(
 3548|       |				0, 1, 2, 3,
 3549|       |				4, 5, 6, 7,
 3550|       |				8, 9, 10, 11,
 3551|       |				12, 13, 14, 15);
 3552|       |		do {
 3553|       |			const __m128i str = _mm_loadu_si128((__m128i *)(e - 15));
 3554|       |			_mm_storeu_si128((__m128i *)p, _mm_shuffle_epi8(str, map));
 3555|       |			p += 16;
 3556|       |			e -= 16;
 3557|       |		} while (e - s > 15);
 3558|       |	}
 3559|       |#elif defined(__aarch64__)
 3560|       |	if (e - s > 15) {
 3561|       |		do {
 3562|       |			const uint8x16_t str = vld1q_u8((uint8_t *)(e - 15));
 3563|       |			/* Synthesize rev128 with a rev64 + ext. */
 3564|       |			const uint8x16_t rev = vrev64q_u8(str);
 3565|       |			const uint8x16_t ext = (uint8x16_t)
 3566|       |				vextq_u64((uint64x2_t)rev, (uint64x2_t)rev, 1);
 3567|       |			vst1q_u8((uint8_t *)p, ext);
 3568|       |			p += 16;
 3569|       |			e -= 16;
 3570|       |		} while (e - s > 15);
 3571|       |	}
 3572|       |#elif defined(_M_ARM64)
 3573|       |	if (e - s > 15) {
 3574|       |		do {
 3575|       |			const __n128 str = vld1q_u8((uint8_t *)(e - 15));
 3576|       |			/* Synthesize rev128 with a rev64 + ext. */
 3577|       |			/* strange force cast limit on windows: you cannot convert anything */
 3578|       |			const __n128 rev = vrev64q_u8(str);
 3579|       |			const __n128 ext = vextq_u64(rev, rev, 1);
 3580|       |			vst1q_u8((uint8_t *)p, ext);
 3581|       |			p += 16;
 3582|       |			e -= 16;
 3583|       |		} while (e - s > 15);
 3584|       |	}
 3585|       |#endif
 3586|     41|	while (e >= s) {
  ------------------
  |  Branch (3586:9): [True: 31, False: 10]
  ------------------
 3587|     31|		*p++ = *e--;
 3588|     31|	}
 3589|       |
 3590|     10|	*p = '\0';
 3591|       |
 3592|     10|	RETVAL_NEW_STR(n);
  ------------------
  |  | 1026|     10|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  ------------------
  |  |  |  | 1105|     10|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|     10|		zval *__z = (z);						\
  |  |  |  | 1107|     10|		zend_string *__s = (s);					\
  |  |  |  | 1108|     10|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|     10|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|     10|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|     10|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     10|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|     10|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|     10|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3593|     10|}
zif_stripcslashes:
 3716|      2|{
 3717|      2|	zend_string *str;
 3718|       |
 3719|      6|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3720|      8|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      2|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (3720:3): [True: 2, False: 0]
  |  Branch (3720:3): [True: 0, False: 0]
  |  Branch (3720:3): [True: 2, False: 0]
  |  Branch (3720:3): [True: 0, False: 0]
  |  Branch (3720:3): [True: 2, False: 0]
  |  Branch (3720:3): [True: 0, False: 0]
  |  Branch (3720:3): [True: 0, False: 2]
  |  Branch (3720:3): [True: 2, False: 0]
  |  Branch (3720:3): [True: 0, False: 0]
  |  Branch (3720:3): [True: 0, False: 0]
  ------------------
 3721|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3721:2): [True: 2, False: 0]
  |  Branch (3721:2): [True: 0, False: 0]
  |  Branch (3721:2): [True: 2, False: 0]
  |  Branch (3721:2): [True: 0, False: 0]
  ------------------
 3722|       |
 3723|      2|	ZVAL_STRINGL(return_value, ZSTR_VAL(str), ZSTR_LEN(str));
  ------------------
  |  |  963|      2|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      2|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3724|      2|	php_stripcslashes(Z_STR_P(return_value));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 3725|      2|}
php_stripcslashes:
 3744|      2|{
 3745|      2|	const char *source, *end;
 3746|      2|	char *target;
 3747|      2|	size_t  nlen = ZSTR_LEN(str), i;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3748|      2|	char numtmp[4];
 3749|       |
 3750|     26|	for (source = (char*)ZSTR_VAL(str), end = source + ZSTR_LEN(str), target = ZSTR_VAL(str); source < end; source++) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	for (source = (char*)ZSTR_VAL(str), end = source + ZSTR_LEN(str), target = ZSTR_VAL(str); source < end; source++) {
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	for (source = (char*)ZSTR_VAL(str), end = source + ZSTR_LEN(str), target = ZSTR_VAL(str); source < end; source++) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3750:92): [True: 24, False: 2]
  ------------------
 3751|     24|		if (*source == '\\' && source + 1 < end) {
  ------------------
  |  Branch (3751:7): [True: 1, False: 23]
  |  Branch (3751:26): [True: 1, False: 0]
  ------------------
 3752|      1|			source++;
 3753|      1|			switch (*source) {
 3754|      0|				case 'n':  *target++='\n'; nlen--; break;
  ------------------
  |  Branch (3754:5): [True: 0, False: 1]
  ------------------
 3755|      0|				case 'r':  *target++='\r'; nlen--; break;
  ------------------
  |  Branch (3755:5): [True: 0, False: 1]
  ------------------
 3756|      0|				case 'a':  *target++='\a'; nlen--; break;
  ------------------
  |  Branch (3756:5): [True: 0, False: 1]
  ------------------
 3757|      0|				case 't':  *target++='\t'; nlen--; break;
  ------------------
  |  Branch (3757:5): [True: 0, False: 1]
  ------------------
 3758|      0|				case 'v':  *target++='\v'; nlen--; break;
  ------------------
  |  Branch (3758:5): [True: 0, False: 1]
  ------------------
 3759|      0|				case 'b':  *target++='\b'; nlen--; break;
  ------------------
  |  Branch (3759:5): [True: 0, False: 1]
  ------------------
 3760|      0|				case 'f':  *target++='\f'; nlen--; break;
  ------------------
  |  Branch (3760:5): [True: 0, False: 1]
  ------------------
 3761|      1|				case '\\': *target++='\\'; nlen--; break;
  ------------------
  |  Branch (3761:5): [True: 1, False: 0]
  ------------------
 3762|      0|				case 'x':
  ------------------
  |  Branch (3762:5): [True: 0, False: 1]
  ------------------
 3763|      0|					if (source+1 < end && isxdigit((unsigned char)source[1])) {
  ------------------
  |  Branch (3763:10): [True: 0, False: 0]
  |  Branch (3763:28): [True: 0, False: 0]
  ------------------
 3764|      0|						numtmp[0] = *++source;
 3765|      0|						if (source+1 < end && isxdigit((unsigned char)source[1])) {
  ------------------
  |  Branch (3765:11): [True: 0, False: 0]
  |  Branch (3765:29): [True: 0, False: 0]
  ------------------
 3766|      0|							numtmp[1] = *++source;
 3767|      0|							numtmp[2] = '\0';
 3768|      0|							nlen-=3;
 3769|      0|						} else {
 3770|      0|							numtmp[1] = '\0';
 3771|      0|							nlen-=2;
 3772|      0|						}
 3773|      0|						*target++=(char)strtol(numtmp, NULL, 16);
 3774|      0|						break;
 3775|      0|					}
 3776|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 3777|      0|				default:
  ------------------
  |  Branch (3777:5): [True: 0, False: 1]
  ------------------
 3778|      0|					i=0;
 3779|      0|					while (source < end && *source >= '0' && *source <= '7' && i<3) {
  ------------------
  |  Branch (3779:13): [True: 0, False: 0]
  |  Branch (3779:29): [True: 0, False: 0]
  |  Branch (3779:47): [True: 0, False: 0]
  |  Branch (3779:65): [True: 0, False: 0]
  ------------------
 3780|      0|						numtmp[i++] = *source++;
 3781|      0|					}
 3782|      0|					if (i) {
  ------------------
  |  Branch (3782:10): [True: 0, False: 0]
  ------------------
 3783|      0|						numtmp[i]='\0';
 3784|      0|						*target++=(char)strtol(numtmp, NULL, 8);
 3785|      0|						nlen-=i;
 3786|      0|						source--;
 3787|      0|					} else {
 3788|      0|						*target++=*source;
 3789|      0|						nlen--;
 3790|      0|					}
 3791|      1|			}
 3792|     23|		} else {
 3793|     23|			*target++=*source;
 3794|     23|		}
 3795|     24|	}
 3796|       |
 3797|      2|	if (nlen != 0) {
  ------------------
  |  Branch (3797:6): [True: 1, False: 1]
  ------------------
 3798|      1|		*target='\0';
 3799|      1|	}
 3800|       |
 3801|      2|	ZSTR_LEN(str) = nlen;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3802|      2|}
php_addcslashes_str:
 3807|     20|{
 3808|     20|	char flags[256];
 3809|     20|	char *target;
 3810|     20|	const char *source, *end;
 3811|     20|	char c;
 3812|     20|	size_t  newlen;
 3813|     20|	zend_string *new_str = zend_string_safe_alloc(4, len, 0, 0);
 3814|       |
 3815|     20|	php_charmask((const unsigned char *) what, wlength, flags);
 3816|       |
 3817|    179|	for (source = str, end = source + len, target = ZSTR_VAL(new_str); source < end; source++) {
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3817:69): [True: 159, False: 20]
  ------------------
 3818|    159|		c = *source;
 3819|    159|		if (flags[(unsigned char)c]) {
  ------------------
  |  Branch (3819:7): [True: 0, False: 159]
  ------------------
 3820|      0|			if ((unsigned char) c < 32 || (unsigned char) c > 126) {
  ------------------
  |  Branch (3820:8): [True: 0, False: 0]
  |  Branch (3820:34): [True: 0, False: 0]
  ------------------
 3821|      0|				*target++ = '\\';
 3822|      0|				switch (c) {
 3823|      0|					case '\n': *target++ = 'n'; break;
  ------------------
  |  Branch (3823:6): [True: 0, False: 0]
  ------------------
 3824|      0|					case '\t': *target++ = 't'; break;
  ------------------
  |  Branch (3824:6): [True: 0, False: 0]
  ------------------
 3825|      0|					case '\r': *target++ = 'r'; break;
  ------------------
  |  Branch (3825:6): [True: 0, False: 0]
  ------------------
 3826|      0|					case '\a': *target++ = 'a'; break;
  ------------------
  |  Branch (3826:6): [True: 0, False: 0]
  ------------------
 3827|      0|					case '\v': *target++ = 'v'; break;
  ------------------
  |  Branch (3827:6): [True: 0, False: 0]
  ------------------
 3828|      0|					case '\b': *target++ = 'b'; break;
  ------------------
  |  Branch (3828:6): [True: 0, False: 0]
  ------------------
 3829|      0|					case '\f': *target++ = 'f'; break;
  ------------------
  |  Branch (3829:6): [True: 0, False: 0]
  ------------------
 3830|      0|					default: target += snprintf(target, 4, "%03o", (unsigned char) c);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  |  Branch (3830:6): [True: 0, False: 0]
  ------------------
 3831|      0|				}
 3832|      0|				continue;
 3833|      0|			}
 3834|      0|			*target++ = '\\';
 3835|      0|		}
 3836|    159|		*target++ = c;
 3837|    159|	}
 3838|     20|	*target = 0;
 3839|     20|	newlen = target - ZSTR_VAL(new_str);
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3840|     20|	if (newlen < len * 4) {
  ------------------
  |  Branch (3840:6): [True: 17, False: 3]
  ------------------
 3841|     17|		new_str = zend_string_truncate(new_str, newlen, 0);
 3842|     17|	}
 3843|     20|	return new_str;
 3844|     20|}
php_addcslashes:
 3849|      6|{
 3850|      6|	return php_addcslashes_str(ZSTR_VAL(str), ZSTR_LEN(str), what, wlength);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	return php_addcslashes_str(ZSTR_VAL(str), ZSTR_LEN(str), what, wlength);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3851|      6|}
zif_str_replace:
 4553|      8|{
 4554|      8|	php_str_replace_common(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  ------------------
  |  |  587|      8|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
 4555|      8|}
zif_strip_tags:
 4828|      5|{
 4829|      5|	zend_string *buf;
 4830|      5|	zend_string *str;
 4831|      5|	zend_string *allow_str = NULL;
 4832|      5|	HashTable *allow_ht = NULL;
 4833|      5|	const char *allowed_tags=NULL;
 4834|      5|	size_t allowed_tags_len=0;
 4835|      5|	smart_str tags_ss = {0};
 4836|       |
 4837|     15|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      5|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      5|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      5|		const int _flags = (flags); \
  |  |  |  | 1599|      5|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      5|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      5|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      5|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      5|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      5|		uint32_t _i = 0; \
  |  |  |  | 1603|      5|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      5|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      5|		char *_error = NULL; \
  |  |  |  | 1606|      5|		bool _dummy = 0; \
  |  |  |  | 1607|      5|		bool _optional = 0; \
  |  |  |  | 1608|      5|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      5|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      5|		((void)_i); \
  |  |  |  | 1610|      5|		((void)_real_arg); \
  |  |  |  | 1611|      5|		((void)_arg); \
  |  |  |  | 1612|      5|		((void)_expected_type); \
  |  |  |  | 1613|      5|		((void)_error); \
  |  |  |  | 1614|      5|		((void)_optional); \
  |  |  |  | 1615|      5|		((void)_dummy); \
  |  |  |  | 1616|      5|		\
  |  |  |  | 1617|      5|		do { \
  |  |  |  | 1618|      5|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      5|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      5|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      5|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      5|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      5|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4838|     20|		Z_PARAM_STR(str)
  ------------------
  |  | 2102|      5|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      5|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      5|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      5|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      5|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      5|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (4838:3): [True: 5, False: 0]
  |  Branch (4838:3): [True: 0, False: 0]
  |  Branch (4838:3): [True: 5, False: 0]
  |  Branch (4838:3): [True: 0, False: 0]
  |  Branch (4838:3): [True: 5, False: 0]
  |  Branch (4838:3): [True: 0, False: 0]
  |  Branch (4838:3): [True: 0, False: 5]
  |  Branch (4838:3): [True: 5, False: 0]
  |  Branch (4838:3): [True: 0, False: 0]
  |  Branch (4838:3): [True: 0, False: 0]
  ------------------
 4839|      5|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      5|	_optional = 1;
  ------------------
 4840|     13|		Z_PARAM_ARRAY_HT_OR_STR_OR_NULL(allow_ht, allow_str)
  ------------------
  |  | 2170|      5|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 1);
  |  |  ------------------
  |  |  |  | 2159|      5|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      5|	++_i; \
  |  |  |  |  |  | 1654|      5|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      5|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      5|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      5|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      5|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      5|	} \
  |  |  |  |  |  | 1659|      5|	_real_arg++; \
  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|      1|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (4840:3): [True: 5, False: 0]
  |  Branch (4840:3): [True: 0, False: 0]
  |  Branch (4840:3): [True: 0, False: 5]
  |  Branch (4840:3): [True: 5, False: 0]
  |  Branch (4840:3): [True: 5, False: 0]
  |  Branch (4840:3): [True: 0, False: 0]
  |  Branch (4840:3): [True: 5, False: 0]
  |  Branch (4840:3): [True: 0, False: 0]
  |  Branch (4840:3): [True: 0, False: 0]
  |  Branch (4840:3): [True: 0, False: 0]
  ------------------
 4841|     13|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      5|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      5|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4841:2): [True: 1, False: 0]
  |  Branch (4841:2): [True: 0, False: 0]
  |  Branch (4841:2): [True: 1, False: 0]
  |  Branch (4841:2): [True: 0, False: 0]
  ------------------
 4842|       |
 4843|      5|	if (allow_ht) {
  ------------------
  |  Branch (4843:6): [True: 0, False: 5]
  ------------------
 4844|      0|		zval *tmp;
 4845|      0|		zend_string *tag;
 4846|       |
 4847|      0|		ZEND_HASH_FOREACH_VAL(allow_ht, tmp) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 4848|      0|			tag = zval_get_string(tmp);
 4849|      0|			smart_str_appendc(&tags_ss, '<');
 4850|      0|			smart_str_append(&tags_ss, tag);
 4851|      0|			smart_str_appendc(&tags_ss, '>');
 4852|      0|			zend_string_release(tag);
 4853|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4854|      0|		if (tags_ss.s) {
  ------------------
  |  Branch (4854:7): [True: 0, False: 0]
  ------------------
 4855|      0|			smart_str_0(&tags_ss);
 4856|      0|			allowed_tags = ZSTR_VAL(tags_ss.s);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4857|      0|			allowed_tags_len = ZSTR_LEN(tags_ss.s);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4858|      0|		}
 4859|      5|	} else if (allow_str) {
  ------------------
  |  Branch (4859:13): [True: 1, False: 4]
  ------------------
 4860|      1|		allowed_tags = ZSTR_VAL(allow_str);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4861|      1|		allowed_tags_len = ZSTR_LEN(allow_str);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4862|      1|	}
 4863|       |
 4864|      5|	buf = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	buf = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4865|      5|	ZSTR_LEN(buf) = php_strip_tags_ex(ZSTR_VAL(buf), ZSTR_LEN(str), allowed_tags, allowed_tags_len, 0);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	ZSTR_LEN(buf) = php_strip_tags_ex(ZSTR_VAL(buf), ZSTR_LEN(str), allowed_tags, allowed_tags_len, 0);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	ZSTR_LEN(buf) = php_strip_tags_ex(ZSTR_VAL(buf), ZSTR_LEN(str), allowed_tags, allowed_tags_len, 0);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4866|      5|	smart_str_free(&tags_ss);
 4867|      5|	RETURN_NEW_STR(buf);
  ------------------
  |  | 1052|      5|#define RETURN_NEW_STR(s)				do { RETVAL_NEW_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1026|      5|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      5|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      5|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      5|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      5|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      5|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      5|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      5|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      5|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      5|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      5|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      5|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      5|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1052:71): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4868|      5|}
php_strip_tags_ex:
 5124|      5|{
 5125|      5|	char *tbuf, *tp, *rp, c, lc;
 5126|      5|	const char *buf, *p, *end;
 5127|      5|	int br, depth=0, in_q = 0;
 5128|      5|	uint8_t state = 0;
 5129|      5|	size_t pos;
 5130|      5|	char *allow_free = NULL;
 5131|      5|	char is_xml = 0;
 5132|       |
 5133|      5|	buf = estrndup(rbuf, len);
  ------------------
  |  |  164|      5|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5134|      5|	end = buf + len;
 5135|      5|	lc = '\0';
 5136|      5|	p = buf;
 5137|      5|	rp = rbuf;
 5138|      5|	br = 0;
 5139|      5|	if (allow) {
  ------------------
  |  Branch (5139:6): [True: 1, False: 4]
  ------------------
 5140|      1|		allow_free = zend_str_tolower_dup_ex(allow, allow_len);
 5141|      1|		allow = allow_free ? allow_free : allow;
  ------------------
  |  Branch (5141:11): [True: 0, False: 1]
  ------------------
 5142|      1|		tbuf = emalloc(PHP_TAG_BUF_SIZE + 1);
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5143|      1|		tp = tbuf;
 5144|      4|	} else {
 5145|      4|		tbuf = tp = NULL;
 5146|      4|	}
 5147|       |
 5148|    202|state_0:
 5149|    202|	if (p >= end) {
  ------------------
  |  Branch (5149:6): [True: 3, False: 199]
  ------------------
 5150|      3|		goto finish;
 5151|      3|	}
 5152|    199|	c = *p;
 5153|    199|	switch (c) {
 5154|     14|		case '\0':
  ------------------
  |  Branch (5154:3): [True: 14, False: 185]
  ------------------
 5155|     14|			break;
 5156|      3|		case '<':
  ------------------
  |  Branch (5156:3): [True: 3, False: 196]
  ------------------
 5157|      3|			if (in_q) {
  ------------------
  |  Branch (5157:8): [True: 0, False: 3]
  ------------------
 5158|      0|				break;
 5159|      0|			}
 5160|      3|			if (isspace((unsigned char)p[1]) && !allow_tag_spaces) {
  ------------------
  |  Branch (5160:8): [True: 1, False: 2]
  |  Branch (5160:40): [True: 1, False: 0]
  ------------------
 5161|      1|				*(rp++) = c;
 5162|      1|				break;
 5163|      1|			}
 5164|      2|			lc = '<';
 5165|      2|			state = 1;
 5166|      2|			if (allow) {
  ------------------
  |  Branch (5166:8): [True: 1, False: 1]
  ------------------
 5167|      1|				if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
  ------------------
  |  | 5029|      1|#define PHP_TAG_BUF_SIZE 1023
  ------------------
  |  Branch (5167:9): [True: 0, False: 1]
  ------------------
 5168|      0|					pos = tp - tbuf;
 5169|      0|					tbuf = erealloc(tbuf, (tp - tbuf) + PHP_TAG_BUF_SIZE + 1);
  ------------------
  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5170|      0|					tp = tbuf + pos;
 5171|      0|				}
 5172|      1|				*(tp++) = '<';
 5173|      1|			}
 5174|      2|			p++;
 5175|      2|			goto state_1;
 5176|     17|		case '>':
  ------------------
  |  Branch (5176:3): [True: 17, False: 182]
  ------------------
 5177|     17|			if (depth) {
  ------------------
  |  Branch (5177:8): [True: 0, False: 17]
  ------------------
 5178|      0|				depth--;
 5179|      0|				break;
 5180|      0|			}
 5181|       |
 5182|     17|			if (in_q) {
  ------------------
  |  Branch (5182:8): [True: 0, False: 17]
  ------------------
 5183|      0|				break;
 5184|      0|			}
 5185|       |
 5186|     17|			*(rp++) = c;
 5187|     17|			break;
 5188|    165|		default:
  ------------------
  |  Branch (5188:3): [True: 165, False: 34]
  ------------------
 5189|    165|			*(rp++) = c;
 5190|    165|			break;
 5191|    199|	}
 5192|    197|	p++;
 5193|    197|	goto state_0;
 5194|       |
 5195|     75|state_1:
 5196|     75|	if (p >= end) {
  ------------------
  |  Branch (5196:6): [True: 1, False: 74]
  ------------------
 5197|      1|		goto finish;
 5198|      1|	}
 5199|     74|	c = *p;
 5200|     74|	switch (c) {
 5201|      2|		case '\0':
  ------------------
  |  Branch (5201:3): [True: 2, False: 72]
  ------------------
 5202|      2|			break;
 5203|     20|		case '<':
  ------------------
  |  Branch (5203:3): [True: 20, False: 54]
  ------------------
 5204|     20|			if (in_q) {
  ------------------
  |  Branch (5204:8): [True: 0, False: 20]
  ------------------
 5205|      0|				break;
 5206|      0|			}
 5207|     20|			if (isspace((unsigned char)p[1]) && !allow_tag_spaces) {
  ------------------
  |  Branch (5207:8): [True: 0, False: 20]
  |  Branch (5207:40): [True: 0, False: 0]
  ------------------
 5208|      0|				goto reg_char_1;
 5209|      0|			}
 5210|     20|			depth++;
 5211|     20|			break;
 5212|      0|		case '>':
  ------------------
  |  Branch (5212:3): [True: 0, False: 74]
  ------------------
 5213|      0|			if (depth) {
  ------------------
  |  Branch (5213:8): [True: 0, False: 0]
  ------------------
 5214|      0|				depth--;
 5215|      0|				break;
 5216|      0|			}
 5217|      0|			if (in_q) {
  ------------------
  |  Branch (5217:8): [True: 0, False: 0]
  ------------------
 5218|      0|				break;
 5219|      0|			}
 5220|       |
 5221|      0|			lc = '>';
 5222|      0|			if (is_xml && p >= buf + 1 && *(p -1) == '-') {
  ------------------
  |  Branch (5222:8): [True: 0, False: 0]
  |  Branch (5222:18): [True: 0, False: 0]
  |  Branch (5222:34): [True: 0, False: 0]
  ------------------
 5223|      0|				break;
 5224|      0|			}
 5225|      0|			in_q = state = is_xml = 0;
 5226|      0|			if (allow) {
  ------------------
  |  Branch (5226:8): [True: 0, False: 0]
  ------------------
 5227|      0|				if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
  ------------------
  |  | 5029|      0|#define PHP_TAG_BUF_SIZE 1023
  ------------------
  |  Branch (5227:9): [True: 0, False: 0]
  ------------------
 5228|      0|					pos = tp - tbuf;
 5229|      0|					tbuf = erealloc(tbuf, (tp - tbuf) + PHP_TAG_BUF_SIZE + 1);
  ------------------
  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5230|      0|					tp = tbuf + pos;
 5231|      0|				}
 5232|      0|				*(tp++) = '>';
 5233|      0|				*tp='\0';
 5234|      0|				if (php_tag_find(tbuf, tp-tbuf, allow)) {
  ------------------
  |  Branch (5234:9): [True: 0, False: 0]
  ------------------
 5235|      0|					rp = zend_mempcpy(rp, tbuf, tp - tbuf);
 5236|      0|				}
 5237|      0|				tp = tbuf;
 5238|      0|			}
 5239|      0|			p++;
 5240|      0|			goto state_0;
 5241|      0|		case '"':
  ------------------
  |  Branch (5241:3): [True: 0, False: 74]
  ------------------
 5242|     31|		case '\'':
  ------------------
  |  Branch (5242:3): [True: 31, False: 43]
  ------------------
 5243|     31|			if (p != buf && (!in_q || *p == in_q)) {
  ------------------
  |  Branch (5243:8): [True: 31, False: 0]
  |  Branch (5243:21): [True: 16, False: 15]
  |  Branch (5243:30): [True: 15, False: 0]
  ------------------
 5244|     31|				if (in_q) {
  ------------------
  |  Branch (5244:9): [True: 15, False: 16]
  ------------------
 5245|     15|					in_q = 0;
 5246|     16|				} else {
 5247|     16|					in_q = *p;
 5248|     16|				}
 5249|     31|			}
 5250|     31|			goto reg_char_1;
 5251|      0|		case '!':
  ------------------
  |  Branch (5251:3): [True: 0, False: 74]
  ------------------
 5252|       |			/* JavaScript & Other HTML scripting languages */
 5253|      0|			if (p >= buf + 1 && *(p-1) == '<') {
  ------------------
  |  Branch (5253:8): [True: 0, False: 0]
  |  Branch (5253:24): [True: 0, False: 0]
  ------------------
 5254|      0|				state = 3;
 5255|      0|				lc = c;
 5256|      0|				p++;
 5257|      0|				goto state_3;
 5258|      0|			} else {
 5259|      0|				goto reg_char_1;
 5260|      0|			}
 5261|      0|			break;
 5262|      1|		case '?':
  ------------------
  |  Branch (5262:3): [True: 1, False: 73]
  ------------------
 5263|      1|			if (p >= buf + 1 && *(p-1) == '<') {
  ------------------
  |  Branch (5263:8): [True: 1, False: 0]
  |  Branch (5263:24): [True: 1, False: 0]
  ------------------
 5264|      1|				br=0;
 5265|      1|				state = 2;
 5266|      1|				p++;
 5267|      1|				goto state_2;
 5268|      1|			} else {
 5269|      0|				goto reg_char_1;
 5270|      0|			}
 5271|      0|			break;
 5272|     20|		default:
  ------------------
  |  Branch (5272:3): [True: 20, False: 54]
  ------------------
 5273|     51|reg_char_1:
 5274|     51|			if (allow) {
  ------------------
  |  Branch (5274:8): [True: 51, False: 0]
  ------------------
 5275|     51|				if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
  ------------------
  |  | 5029|     51|#define PHP_TAG_BUF_SIZE 1023
  ------------------
  |  Branch (5275:9): [True: 0, False: 51]
  ------------------
 5276|      0|					pos = tp - tbuf;
 5277|      0|					tbuf = erealloc(tbuf, (tp - tbuf) + PHP_TAG_BUF_SIZE + 1);
  ------------------
  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5278|      0|					tp = tbuf + pos;
 5279|      0|				}
 5280|     51|				*(tp++) = c;
 5281|     51|			}
 5282|     51|			break;
 5283|     74|	}
 5284|     73|	p++;
 5285|     73|	goto state_1;
 5286|       |
 5287|     17|state_2:
 5288|     17|	if (p >= end) {
  ------------------
  |  Branch (5288:6): [True: 1, False: 16]
  ------------------
 5289|      1|		goto finish;
 5290|      1|	}
 5291|     16|	c = *p;
 5292|     16|	switch (c) {
 5293|      2|		case '(':
  ------------------
  |  Branch (5293:3): [True: 2, False: 14]
  ------------------
 5294|      2|			if (lc != '"' && lc != '\'') {
  ------------------
  |  Branch (5294:8): [True: 2, False: 0]
  |  Branch (5294:21): [True: 2, False: 0]
  ------------------
 5295|      2|				lc = '(';
 5296|      2|				br++;
 5297|      2|			}
 5298|      2|			break;
 5299|      0|		case ')':
  ------------------
  |  Branch (5299:3): [True: 0, False: 16]
  ------------------
 5300|      0|			if (lc != '"' && lc != '\'') {
  ------------------
  |  Branch (5300:8): [True: 0, False: 0]
  |  Branch (5300:21): [True: 0, False: 0]
  ------------------
 5301|      0|				lc = ')';
 5302|      0|				br--;
 5303|      0|			}
 5304|      0|			break;
 5305|      0|		case '>':
  ------------------
  |  Branch (5305:3): [True: 0, False: 16]
  ------------------
 5306|      0|			if (depth) {
  ------------------
  |  Branch (5306:8): [True: 0, False: 0]
  ------------------
 5307|      0|				depth--;
 5308|      0|				break;
 5309|      0|			}
 5310|      0|			if (in_q) {
  ------------------
  |  Branch (5310:8): [True: 0, False: 0]
  ------------------
 5311|      0|				break;
 5312|      0|			}
 5313|       |
 5314|      0|			if (!br && p >= buf + 1 && lc != '\"' && *(p-1) == '?') {
  ------------------
  |  Branch (5314:8): [True: 0, False: 0]
  |  Branch (5314:15): [True: 0, False: 0]
  |  Branch (5314:31): [True: 0, False: 0]
  |  Branch (5314:45): [True: 0, False: 0]
  ------------------
 5315|      0|				in_q = state = 0;
 5316|      0|				tp = tbuf;
 5317|      0|				p++;
 5318|      0|				goto state_0;
 5319|      0|			}
 5320|      0|			break;
 5321|      0|		case '"':
  ------------------
  |  Branch (5321:3): [True: 0, False: 16]
  ------------------
 5322|      0|		case '\'':
  ------------------
  |  Branch (5322:3): [True: 0, False: 16]
  ------------------
 5323|      0|			if (p >= buf + 1 && *(p-1) != '\\') {
  ------------------
  |  Branch (5323:8): [True: 0, False: 0]
  |  Branch (5323:24): [True: 0, False: 0]
  ------------------
 5324|      0|				if (lc == c) {
  ------------------
  |  Branch (5324:9): [True: 0, False: 0]
  ------------------
 5325|      0|					lc = '\0';
 5326|      0|				} else if (lc != '\\') {
  ------------------
  |  Branch (5326:16): [True: 0, False: 0]
  ------------------
 5327|      0|					lc = c;
 5328|      0|				}
 5329|      0|				if (p != buf && (!in_q || *p == in_q)) {
  ------------------
  |  Branch (5329:9): [True: 0, False: 0]
  |  Branch (5329:22): [True: 0, False: 0]
  |  Branch (5329:31): [True: 0, False: 0]
  ------------------
 5330|      0|					if (in_q) {
  ------------------
  |  Branch (5330:10): [True: 0, False: 0]
  ------------------
 5331|      0|						in_q = 0;
 5332|      0|					} else {
 5333|      0|						in_q = *p;
 5334|      0|					}
 5335|      0|				}
 5336|      0|			}
 5337|      0|			break;
 5338|      0|		case 'l':
  ------------------
  |  Branch (5338:3): [True: 0, False: 16]
  ------------------
 5339|      0|		case 'L':
  ------------------
  |  Branch (5339:3): [True: 0, False: 16]
  ------------------
 5340|       |			/* swm: If we encounter '<?xml' then we shouldn't be in
 5341|       |			 * state == 2 (PHP). Switch back to HTML.
 5342|       |			 */
 5343|      0|			if (state == 2 && p > buf+4
  ------------------
  |  Branch (5343:8): [True: 0, False: 0]
  |  Branch (5343:22): [True: 0, False: 0]
  ------------------
 5344|      0|				     && (*(p-1) == 'm' || *(p-1) == 'M')
  ------------------
  |  Branch (5344:14): [True: 0, False: 0]
  |  Branch (5344:31): [True: 0, False: 0]
  ------------------
 5345|      0|				     && (*(p-2) == 'x' || *(p-2) == 'X')
  ------------------
  |  Branch (5345:14): [True: 0, False: 0]
  |  Branch (5345:31): [True: 0, False: 0]
  ------------------
 5346|      0|				     && *(p-3) == '?'
  ------------------
  |  Branch (5346:13): [True: 0, False: 0]
  ------------------
 5347|      0|				     && *(p-4) == '<') {
  ------------------
  |  Branch (5347:13): [True: 0, False: 0]
  ------------------
 5348|      0|				state = 1; is_xml=1;
 5349|      0|				p++;
 5350|      0|				goto state_1;
 5351|      0|			}
 5352|      0|			break;
 5353|     14|		default:
  ------------------
  |  Branch (5353:3): [True: 14, False: 2]
  ------------------
 5354|     14|			break;
 5355|     16|	}
 5356|     16|	p++;
 5357|     16|	goto state_2;
 5358|       |
 5359|      0|state_3:
 5360|      0|	if (p >= end) {
  ------------------
  |  Branch (5360:6): [True: 0, False: 0]
  ------------------
 5361|      0|		goto finish;
 5362|      0|	}
 5363|      0|	c = *p;
 5364|      0|	switch (c) {
 5365|      0|		case '>':
  ------------------
  |  Branch (5365:3): [True: 0, False: 0]
  ------------------
 5366|      0|			if (depth) {
  ------------------
  |  Branch (5366:8): [True: 0, False: 0]
  ------------------
 5367|      0|				depth--;
 5368|      0|				break;
 5369|      0|			}
 5370|      0|			if (in_q) {
  ------------------
  |  Branch (5370:8): [True: 0, False: 0]
  ------------------
 5371|      0|				break;
 5372|      0|			}
 5373|      0|			in_q = state = 0;
 5374|      0|			tp = tbuf;
 5375|      0|			p++;
 5376|      0|			goto state_0;
 5377|      0|		case '"':
  ------------------
  |  Branch (5377:3): [True: 0, False: 0]
  ------------------
 5378|      0|		case '\'':
  ------------------
  |  Branch (5378:3): [True: 0, False: 0]
  ------------------
 5379|      0|			if (p != buf && *(p-1) != '\\' && (!in_q || *p == in_q)) {
  ------------------
  |  Branch (5379:8): [True: 0, False: 0]
  |  Branch (5379:20): [True: 0, False: 0]
  |  Branch (5379:39): [True: 0, False: 0]
  |  Branch (5379:48): [True: 0, False: 0]
  ------------------
 5380|      0|				if (in_q) {
  ------------------
  |  Branch (5380:9): [True: 0, False: 0]
  ------------------
 5381|      0|					in_q = 0;
 5382|      0|				} else {
 5383|      0|					in_q = *p;
 5384|      0|				}
 5385|      0|			}
 5386|      0|			break;
 5387|      0|		case '-':
  ------------------
  |  Branch (5387:3): [True: 0, False: 0]
  ------------------
 5388|      0|			if (p >= buf + 2 && *(p-1) == '-' && *(p-2) == '!') {
  ------------------
  |  Branch (5388:8): [True: 0, False: 0]
  |  Branch (5388:24): [True: 0, False: 0]
  |  Branch (5388:41): [True: 0, False: 0]
  ------------------
 5389|      0|				state = 4;
 5390|      0|				p++;
 5391|      0|				goto state_4;
 5392|      0|			}
 5393|      0|			break;
 5394|      0|		case 'E':
  ------------------
  |  Branch (5394:3): [True: 0, False: 0]
  ------------------
 5395|      0|		case 'e':
  ------------------
  |  Branch (5395:3): [True: 0, False: 0]
  ------------------
 5396|       |			/* !DOCTYPE exception */
 5397|      0|			if (p > buf+6
  ------------------
  |  Branch (5397:8): [True: 0, False: 0]
  ------------------
 5398|      0|			     && (*(p-1) == 'p' || *(p-1) == 'P')
  ------------------
  |  Branch (5398:13): [True: 0, False: 0]
  |  Branch (5398:30): [True: 0, False: 0]
  ------------------
 5399|      0|			     && (*(p-2) == 'y' || *(p-2) == 'Y')
  ------------------
  |  Branch (5399:13): [True: 0, False: 0]
  |  Branch (5399:30): [True: 0, False: 0]
  ------------------
 5400|      0|			     && (*(p-3) == 't' || *(p-3) == 'T')
  ------------------
  |  Branch (5400:13): [True: 0, False: 0]
  |  Branch (5400:30): [True: 0, False: 0]
  ------------------
 5401|      0|			     && (*(p-4) == 'c' || *(p-4) == 'C')
  ------------------
  |  Branch (5401:13): [True: 0, False: 0]
  |  Branch (5401:30): [True: 0, False: 0]
  ------------------
 5402|      0|			     && (*(p-5) == 'o' || *(p-5) == 'O')
  ------------------
  |  Branch (5402:13): [True: 0, False: 0]
  |  Branch (5402:30): [True: 0, False: 0]
  ------------------
 5403|      0|			     && (*(p-6) == 'd' || *(p-6) == 'D')) {
  ------------------
  |  Branch (5403:13): [True: 0, False: 0]
  |  Branch (5403:30): [True: 0, False: 0]
  ------------------
 5404|      0|				state = 1;
 5405|      0|				p++;
 5406|      0|				goto state_1;
 5407|      0|			}
 5408|      0|			break;
 5409|      0|		default:
  ------------------
  |  Branch (5409:3): [True: 0, False: 0]
  ------------------
 5410|      0|			break;
 5411|      0|	}
 5412|      0|	p++;
 5413|      0|	goto state_3;
 5414|       |
 5415|      0|state_4:
 5416|      0|	while (p < end) {
  ------------------
  |  Branch (5416:9): [True: 0, False: 0]
  ------------------
 5417|      0|		c = *p;
 5418|      0|		if (c == '>' && !in_q) {
  ------------------
  |  Branch (5418:7): [True: 0, False: 0]
  |  Branch (5418:19): [True: 0, False: 0]
  ------------------
 5419|      0|			if (p >= buf + 2 && *(p-1) == '-' && *(p-2) == '-') {
  ------------------
  |  Branch (5419:8): [True: 0, False: 0]
  |  Branch (5419:24): [True: 0, False: 0]
  |  Branch (5419:41): [True: 0, False: 0]
  ------------------
 5420|      0|				in_q = state = 0;
 5421|      0|				tp = tbuf;
 5422|      0|				p++;
 5423|      0|				goto state_0;
 5424|      0|			}
 5425|      0|		}
 5426|      0|		p++;
 5427|      0|	}
 5428|       |
 5429|      5|finish:
 5430|      5|	if (rp < rbuf + len) {
  ------------------
  |  Branch (5430:6): [True: 4, False: 1]
  ------------------
 5431|      4|		*rp = '\0';
 5432|      4|	}
 5433|      5|	efree((void *)buf);
  ------------------
  |  |  154|      5|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      5|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      5|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5434|      5|	if (tbuf) {
  ------------------
  |  Branch (5434:6): [True: 1, False: 4]
  ------------------
 5435|      1|		efree(tbuf);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5436|      1|	}
 5437|      5|	if (allow_free) {
  ------------------
  |  Branch (5437:6): [True: 0, False: 5]
  ------------------
 5438|      0|		efree(allow_free);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5439|      0|	}
 5440|       |
 5441|      5|	return (size_t)(rp - rbuf);
 5442|      0|}
zif_str_repeat:
 5495|      7|{
 5496|      7|	zend_string		*input_str;		/* Input string */
 5497|      7|	zend_long 		mult;			/* Multiplier */
 5498|      7|	zend_string	*result;		/* Resulting string */
 5499|      7|	size_t		result_len;		/* Length of the resulting string */
 5500|       |
 5501|     21|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      7|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      7|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      7|		const int _flags = (flags); \
  |  |  |  | 1599|      7|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      7|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      7|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      7|		uint32_t _i = 0; \
  |  |  |  | 1603|      7|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      7|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      7|		char *_error = NULL; \
  |  |  |  | 1606|      7|		bool _dummy = 0; \
  |  |  |  | 1607|      7|		bool _optional = 0; \
  |  |  |  | 1608|      7|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      7|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      7|		((void)_i); \
  |  |  |  | 1610|      7|		((void)_real_arg); \
  |  |  |  | 1611|      7|		((void)_arg); \
  |  |  |  | 1612|      7|		((void)_expected_type); \
  |  |  |  | 1613|      7|		((void)_error); \
  |  |  |  | 1614|      7|		((void)_optional); \
  |  |  |  | 1615|      7|		((void)_dummy); \
  |  |  |  | 1616|      7|		\
  |  |  |  | 1617|      7|		do { \
  |  |  |  | 1618|      7|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      7|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      7|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      7|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      7|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      7|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5502|     28|		Z_PARAM_STR(input_str)
  ------------------
  |  | 2102|      7|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      7|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5502:3): [True: 7, False: 0]
  |  Branch (5502:3): [True: 0, False: 0]
  |  Branch (5502:3): [True: 7, False: 0]
  |  Branch (5502:3): [True: 0, False: 0]
  |  Branch (5502:3): [True: 7, False: 0]
  |  Branch (5502:3): [True: 0, False: 0]
  |  Branch (5502:3): [True: 0, False: 7]
  |  Branch (5502:3): [True: 7, False: 0]
  |  Branch (5502:3): [True: 0, False: 0]
  |  Branch (5502:3): [True: 0, False: 0]
  ------------------
 5503|     35|		Z_PARAM_LONG(mult)
  ------------------
  |  | 1905|      7|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      7|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      7|	++_i; \
  |  |  |  |  |  | 1654|      7|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      7|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      7|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      7|	_real_arg++; \
  |  |  |  |  |  | 1660|      7|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      7|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      7|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      7|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (5503:3): [True: 7, False: 0]
  |  Branch (5503:3): [True: 0, False: 0]
  |  Branch (5503:3): [True: 7, False: 0]
  |  Branch (5503:3): [True: 0, False: 0]
  |  Branch (5503:3): [True: 7, False: 0]
  |  Branch (5503:3): [True: 0, False: 0]
  |  Branch (5503:3): [True: 0, False: 7]
  |  Branch (5503:3): [True: 7, False: 0]
  |  Branch (5503:3): [True: 0, False: 0]
  |  Branch (5503:3): [True: 0, False: 0]
  ------------------
 5504|      7|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      7|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      7|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      7|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  |  | 1641|      7|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      7|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5504:2): [True: 7, False: 0]
  |  Branch (5504:2): [True: 0, False: 0]
  |  Branch (5504:2): [True: 7, False: 0]
  |  Branch (5504:2): [True: 0, False: 0]
  ------------------
 5505|       |
 5506|      7|	if (mult < 0) {
  ------------------
  |  Branch (5506:6): [True: 0, False: 7]
  ------------------
 5507|      0|		zend_argument_value_error(2, "must be greater than or equal to 0");
 5508|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (5508:3): [True: 0, False: 0]
  |  Branch (5508:3): [True: 0, False: 0]
  ------------------
 5509|      0|	}
 5510|       |
 5511|       |	/* Don't waste our time if it's empty */
 5512|       |	/* ... or if the multiplier is zero */
 5513|      7|	if (ZSTR_LEN(input_str) == 0 || mult == 0)
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (5513:6): [True: 0, False: 7]
  |  Branch (5513:34): [True: 0, False: 7]
  ------------------
 5514|      0|		RETURN_EMPTY_STRING();
  ------------------
  |  | 1058|      0|#define RETURN_EMPTY_STRING() 			do { RETVAL_EMPTY_STRING(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1032|      0|#define RETVAL_EMPTY_STRING()			ZVAL_EMPTY_STRING(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1058:79): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5515|       |
 5516|       |	/* Initialize the result string */
 5517|      7|	result = zend_string_safe_alloc(ZSTR_LEN(input_str), mult, 0, 0);
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5518|      7|	result_len = ZSTR_LEN(input_str) * mult;
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5519|      7|	ZSTR_COPY_CONCAT_PROPERTIES(result, input_str);
 5520|       |
 5521|       |	/* Heavy optimization for situations where input string is 1 byte long */
 5522|      7|	if (ZSTR_LEN(input_str) == 1) {
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (5522:6): [True: 5, False: 2]
  ------------------
 5523|      5|		memset(ZSTR_VAL(result), *ZSTR_VAL(input_str), mult);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memset(ZSTR_VAL(result), *ZSTR_VAL(input_str), mult);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5524|      5|	} else {
 5525|      2|		const char *s, *ee;
 5526|      2|		char *e;
 5527|      2|		ptrdiff_t l=0;
 5528|      2|		memcpy(ZSTR_VAL(result), ZSTR_VAL(input_str), ZSTR_LEN(input_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(result), ZSTR_VAL(input_str), ZSTR_LEN(input_str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		memcpy(ZSTR_VAL(result), ZSTR_VAL(input_str), ZSTR_LEN(input_str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5529|      2|		s = ZSTR_VAL(result);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5530|      2|		e = ZSTR_VAL(result) + ZSTR_LEN(input_str);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		e = ZSTR_VAL(result) + ZSTR_LEN(input_str);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 5531|      2|		ee = ZSTR_VAL(result) + result_len;
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5532|       |
 5533|     25|		while (e<ee) {
  ------------------
  |  Branch (5533:10): [True: 23, False: 2]
  ------------------
 5534|     23|			l = (e-s) < (ee-e) ? (e-s) : (ee-e);
  ------------------
  |  Branch (5534:8): [True: 22, False: 1]
  ------------------
 5535|     23|			memmove(e, s, l);
 5536|     23|			e += l;
 5537|     23|		}
 5538|      2|	}
 5539|       |
 5540|      7|	ZSTR_VAL(result)[result_len] = '\0';
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 5541|       |
 5542|      7|	RETURN_NEW_STR(result);
  ------------------
  |  | 1052|      7|#define RETURN_NEW_STR(s)				do { RETVAL_NEW_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1026|      7|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      7|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      7|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      7|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      7|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      7|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      7|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      7|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      7|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      7|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      7|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      7|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1052:71): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5543|      7|}
string.c:php_bin2hex:
   62|      1|{
   63|      1|	zend_string *result;
   64|      1|	size_t i, j;
   65|       |
   66|      1|	result = zend_string_safe_alloc(oldlen, 2 * sizeof(char), 0, 0);
   67|       |
   68|      5|	for (i = j = 0; i < oldlen; i++) {
  ------------------
  |  Branch (68:18): [True: 4, False: 1]
  ------------------
   69|      4|		ZSTR_VAL(result)[j++] = hexconvtab[old[i] >> 4];
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   70|      4|		ZSTR_VAL(result)[j++] = hexconvtab[old[i] & 15];
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   71|      4|	}
   72|      1|	ZSTR_VAL(result)[j] = '\0';
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   73|       |
   74|      1|	return result;
   75|      1|}
string.c:_zend_dirname:
 1501|      2|{
 1502|      2|	zend_string *ret;
 1503|       |
 1504|      2|	ret = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	ret = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1505|       |
 1506|      2|	if (levels == 1) {
  ------------------
  |  Branch (1506:6): [True: 2, False: 0]
  ------------------
 1507|       |		/* Default case */
 1508|       |#ifdef PHP_WIN32
 1509|       |		ZSTR_LEN(ret) = php_win32_ioutil_dirname(ZSTR_VAL(ret), ZSTR_LEN(str));
 1510|       |#else
 1511|      2|		ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), ZSTR_LEN(str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), ZSTR_LEN(str));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), ZSTR_LEN(str));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1512|      2|#endif
 1513|      2|	} else if (levels < 1) {
  ------------------
  |  Branch (1513:13): [True: 0, False: 0]
  ------------------
 1514|      0|		zend_argument_value_error(2, "must be greater than or equal to 1");
 1515|      0|		zend_string_efree(ret);
 1516|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1516:3): [True: 0, False: 0]
  |  Branch (1516:3): [True: 0, False: 0]
  ------------------
 1517|      0|	} else {
 1518|       |		/* Some levels up */
 1519|      0|		size_t str_len;
 1520|      0|		do {
 1521|       |#ifdef PHP_WIN32
 1522|       |			ZSTR_LEN(ret) = php_win32_ioutil_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret));
 1523|       |#else
 1524|      0|			ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              			ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1525|      0|#endif
 1526|      0|		} while (ZSTR_LEN(ret) < str_len && --levels);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1526:12): [True: 0, False: 0]
  |  Branch (1526:39): [True: 0, False: 0]
  ------------------
 1527|      0|	}
 1528|       |
 1529|      2|	RETURN_NEW_STR(ret);
  ------------------
  |  | 1052|      2|#define RETURN_NEW_STR(s)				do { RETVAL_NEW_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1026|      2|#define RETVAL_NEW_STR(s)				ZVAL_NEW_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      2|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      2|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      2|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1052:71): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1530|      2|}
string.c:_zend_substr:
 2232|      4|{
 2233|      4|	if (f < 0) {
  ------------------
  |  Branch (2233:6): [True: 0, False: 4]
  ------------------
 2234|       |		/* if "from" position is negative, count start position from the end
 2235|       |		 * of the string
 2236|       |		 */
 2237|      0|		if (-(size_t)f > ZSTR_LEN(str)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2237:7): [True: 0, False: 0]
  ------------------
 2238|      0|			f = 0;
 2239|      0|		} else {
 2240|      0|			f = (zend_long)ZSTR_LEN(str) + f;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2241|      0|		}
 2242|      4|	} else if ((size_t)f > ZSTR_LEN(str)) {
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2242:13): [True: 1, False: 3]
  ------------------
 2243|      1|		RETURN_EMPTY_STRING();
  ------------------
  |  | 1058|      1|#define RETURN_EMPTY_STRING() 			do { RETVAL_EMPTY_STRING(); return; } while (0)
  |  |  ------------------
  |  |  |  | 1032|      1|#define RETVAL_EMPTY_STRING()			ZVAL_EMPTY_STRING(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  |  972|      1|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  |  |  |  |  973|      1|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1098|      1|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  |  |  |  |  | 1099|      1|		zval *__z = (z);							\
  |  |  |  |  |  |  |  | 1100|      1|		zend_string *__s = (s);						\
  |  |  |  |  |  |  |  | 1101|      1|		Z_STR_P(__z) = __s;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1102|      1|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1103|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1103:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  974|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (974:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1058:79): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2244|      1|	}
 2245|       |
 2246|      3|	if (!len_is_null) {
  ------------------
  |  Branch (2246:6): [True: 3, False: 0]
  ------------------
 2247|      3|		if (l < 0) {
  ------------------
  |  Branch (2247:7): [True: 0, False: 3]
  ------------------
 2248|       |			/* if "length" position is negative, set it to the length
 2249|       |			 * needed to stop that many chars from the end of the string
 2250|       |			 */
 2251|      0|			if (-(size_t)l > ZSTR_LEN(str) - (size_t)f) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2251:8): [True: 0, False: 0]
  ------------------
 2252|      0|				l = 0;
 2253|      0|			} else {
 2254|      0|				l = (zend_long)ZSTR_LEN(str) - f + l;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2255|      0|			}
 2256|      3|		} else if ((size_t)l > ZSTR_LEN(str) - (size_t)f) {
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2256:14): [True: 0, False: 3]
  ------------------
 2257|      0|			l = (zend_long)ZSTR_LEN(str) - f;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2258|      0|		}
 2259|      3|	} else {
 2260|      0|		l = (zend_long)ZSTR_LEN(str) - f;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2261|      0|	}
 2262|       |
 2263|      3|	if (l == ZSTR_LEN(str)) {
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (2263:6): [True: 0, False: 3]
  ------------------
 2264|      0|		RETURN_STR_COPY(str);
  ------------------
  |  | 1053|      0|#define RETURN_STR_COPY(s)				do { RETVAL_STR_COPY(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1027|      0|#define RETVAL_STR_COPY(s)				ZVAL_STR_COPY(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  |  |  |  |  | 1113|      0|		zval *__z = (z);								\
  |  |  |  |  |  | 1114|      0|		zend_string *__s = (s);							\
  |  |  |  |  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1116|      0|		/* interned strings support */					\
  |  |  |  |  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1119|      0|		} else {										\
  |  |  |  |  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1122|      0|		}												\
  |  |  |  |  |  | 1123|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1053:73): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2265|      3|	} else {
 2266|      3|		RETURN_STRINGL_FAST(ZSTR_VAL(str) + f, l);
  ------------------
  |  | 1057|      3|#define RETURN_STRINGL_FAST(s, l)		do { RETVAL_STRINGL_FAST(s, l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1031|      3|#define RETVAL_STRINGL_FAST(s, l)		ZVAL_STRINGL_FAST(return_value, s, l)
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      3|#define ZVAL_STRINGL_FAST(z, s, l) do {			\
  |  |  |  |  |  |  995|      3|		ZVAL_STR(z, zend_string_init_fast(s, l));	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  |  |  | 1089|      3|		zval *__z = (z);						\
  |  |  |  |  |  |  |  | 1090|      3|		zend_string *__s = (s);					\
  |  |  |  |  |  |  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1092|      3|		/* interned strings support */			\
  |  |  |  |  |  |  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1096|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  996|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (996:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1057:85): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2267|      3|	}
 2268|      3|}
string.c:php_ucfirst:
 2700|      1|{
 2701|      1|	const unsigned char ch = ZSTR_VAL(str)[0];
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2702|      1|	unsigned char r = zend_toupper_ascii(ch);
  ------------------
  |  |  470|      1|#define zend_toupper_ascii(c) (zend_toupper_map[(unsigned char)(c)])
  ------------------
 2703|      1|	if (r == ch) {
  ------------------
  |  Branch (2703:6): [True: 1, False: 0]
  ------------------
 2704|      1|		return zend_string_copy(str);
 2705|      1|	} else {
 2706|      0|		zend_string *s = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_string *s = zend_string_init(ZSTR_VAL(str), ZSTR_LEN(str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 2707|      0|		ZSTR_VAL(s)[0] = r;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2708|      0|		return s;
 2709|      0|	}
 2710|      1|}
string.c:php_charmask:
  474|     20|{
  475|     20|	const unsigned char *end;
  476|     20|	unsigned char c;
  477|     20|	zend_result result = SUCCESS;
  478|       |
  479|     20|	memset(mask, 0, 256);
  480|     60|	for (end = input+len; input < end; input++) {
  ------------------
  |  Branch (480:24): [True: 40, False: 20]
  ------------------
  481|     40|		c=*input;
  482|     40|		if ((input+3 < end) && input[1] == '.' && input[2] == '.'
  ------------------
  |  Branch (482:7): [True: 0, False: 40]
  |  Branch (482:26): [True: 0, False: 0]
  |  Branch (482:45): [True: 0, False: 0]
  ------------------
  483|      0|				&& input[3] >= c) {
  ------------------
  |  Branch (483:8): [True: 0, False: 0]
  ------------------
  484|      0|			memset(mask+c, 1, input[3] - c + 1);
  485|      0|			input+=3;
  486|     40|		} else if ((input+1 < end) && input[0] == '.' && input[1] == '.') {
  ------------------
  |  Branch (486:14): [True: 20, False: 20]
  |  Branch (486:33): [True: 0, False: 20]
  |  Branch (486:52): [True: 0, False: 0]
  ------------------
  487|       |			/* Error, try to be as helpful as possible:
  488|       |			   (a range ending/starting with '.' won't be captured here) */
  489|      0|			if (end-len >= input) { /* there was no 'left' char */
  ------------------
  |  Branch (489:8): [True: 0, False: 0]
  ------------------
  490|      0|				php_error_docref(NULL, E_WARNING, "Invalid '..'-range, no character to the left of '..'");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  491|      0|				result = FAILURE;
  492|      0|				continue;
  493|      0|			}
  494|      0|			if (input+2 >= end) { /* there is no 'right' char */
  ------------------
  |  Branch (494:8): [True: 0, False: 0]
  ------------------
  495|      0|				php_error_docref(NULL, E_WARNING, "Invalid '..'-range, no character to the right of '..'");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  496|      0|				result = FAILURE;
  497|      0|				continue;
  498|      0|			}
  499|      0|			if (input[-1] > input[2]) { /* wrong order */
  ------------------
  |  Branch (499:8): [True: 0, False: 0]
  ------------------
  500|      0|				php_error_docref(NULL, E_WARNING, "Invalid '..'-range, '..'-range needs to be incrementing");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  501|      0|				result = FAILURE;
  502|      0|				continue;
  503|      0|			}
  504|       |			/* FIXME: better error (a..b..c is the only left possibility?) */
  505|      0|			php_error_docref(NULL, E_WARNING, "Invalid '..'-range");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  506|      0|			result = FAILURE;
  507|      0|			continue;
  508|     40|		} else {
  509|     40|			mask[c]=1;
  510|     40|		}
  511|     40|	}
  512|     20|	return result;
  513|     20|}
string.c:php_char_to_str_ex:
 3109|      2|{
 3110|      2|	zend_string *result;
 3111|      2|	size_t char_count;
 3112|      2|	int lc_from = 0;
 3113|      2|	const char *source, *source_end;
 3114|      2|	char *target;
 3115|       |
 3116|      2|	if (case_sensitivity) {
  ------------------
  |  Branch (3116:6): [True: 2, False: 0]
  ------------------
 3117|      2|		char_count = count_chars(ZSTR_VAL(str), ZSTR_LEN(str), from);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		char_count = count_chars(ZSTR_VAL(str), ZSTR_LEN(str), from);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3118|      2|	} else {
 3119|      0|		char_count = 0;
 3120|      0|		lc_from = zend_tolower_ascii(from);
  ------------------
  |  |  469|      0|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
 3121|      0|		source_end = ZSTR_VAL(str) + ZSTR_LEN(str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		source_end = ZSTR_VAL(str) + ZSTR_LEN(str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3122|      0|		for (source = ZSTR_VAL(str); source < source_end; source++) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3122:32): [True: 0, False: 0]
  ------------------
 3123|      0|			if (zend_tolower_ascii(*source) == lc_from) {
  ------------------
  |  |  469|      0|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
  |  Branch (3123:8): [True: 0, False: 0]
  ------------------
 3124|      0|				char_count++;
 3125|      0|			}
 3126|      0|		}
 3127|      0|	}
 3128|       |
 3129|      2|	if (char_count == 0) {
  ------------------
  |  Branch (3129:6): [True: 2, False: 0]
  ------------------
 3130|      2|		return zend_string_copy(str);
 3131|      2|	}
 3132|       |
 3133|      0|	if (replace_count) {
  ------------------
  |  Branch (3133:6): [True: 0, False: 0]
  ------------------
 3134|      0|		*replace_count += char_count;
 3135|      0|	}
 3136|       |
 3137|      0|	if (to_len > 0) {
  ------------------
  |  Branch (3137:6): [True: 0, False: 0]
  ------------------
 3138|      0|		result = zend_string_safe_alloc(char_count, to_len - 1, ZSTR_LEN(str), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3139|      0|	} else {
 3140|      0|		result = zend_string_alloc(ZSTR_LEN(str) - char_count, 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3141|      0|	}
 3142|      0|	target = ZSTR_VAL(result);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3143|       |
 3144|      0|	if (case_sensitivity) {
  ------------------
  |  Branch (3144:6): [True: 0, False: 0]
  ------------------
 3145|      0|		char *p = ZSTR_VAL(str), *e = p + ZSTR_LEN(str), *s = ZSTR_VAL(str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		char *p = ZSTR_VAL(str), *e = p + ZSTR_LEN(str), *s = ZSTR_VAL(str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              		char *p = ZSTR_VAL(str), *e = p + ZSTR_LEN(str), *s = ZSTR_VAL(str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3146|       |
 3147|      0|		while ((p = memchr(p, from, (e - p)))) {
  ------------------
  |  Branch (3147:10): [True: 0, False: 0]
  ------------------
 3148|      0|			target = zend_mempcpy(target, s, (p - s));
 3149|      0|			target = zend_mempcpy(target, to, to_len);
 3150|      0|			p++;
 3151|      0|			s = p;
 3152|      0|			if (--char_count == 0) break;
  ------------------
  |  Branch (3152:8): [True: 0, False: 0]
  ------------------
 3153|      0|		}
 3154|      0|		if (s < e) {
  ------------------
  |  Branch (3154:7): [True: 0, False: 0]
  ------------------
 3155|      0|			target = zend_mempcpy(target, s, e - s);
 3156|      0|		}
 3157|      0|	} else {
 3158|      0|		source_end = ZSTR_VAL(str) + ZSTR_LEN(str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		source_end = ZSTR_VAL(str) + ZSTR_LEN(str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3159|      0|		for (source = ZSTR_VAL(str); source < source_end; source++) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (3159:32): [True: 0, False: 0]
  ------------------
 3160|      0|			if (zend_tolower_ascii(*source) == lc_from) {
  ------------------
  |  |  469|      0|#define zend_tolower_ascii(c) (zend_tolower_map[(unsigned char)(c)])
  ------------------
  |  Branch (3160:8): [True: 0, False: 0]
  ------------------
 3161|      0|				target = zend_mempcpy(target, to, to_len);
 3162|      0|			} else {
 3163|      0|				*target = *source;
 3164|      0|				target++;
 3165|      0|			}
 3166|      0|		}
 3167|      0|	}
 3168|      0|	*target = 0;
 3169|      0|	return result;
 3170|      2|}
string.c:php_str_to_str_ex:
 3176|      4|{
 3177|       |
 3178|      4|	if (needle_len < ZSTR_LEN(haystack)) {
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (3178:6): [True: 3, False: 1]
  ------------------
 3179|      3|		zend_string *new_str;
 3180|      3|		const char *end;
 3181|      3|		const char *p, *r;
 3182|      3|		char *e;
 3183|       |
 3184|      3|		if (needle_len == str_len) {
  ------------------
  |  Branch (3184:7): [True: 0, False: 3]
  ------------------
 3185|      0|			new_str = NULL;
 3186|      0|			end = ZSTR_VAL(haystack) + ZSTR_LEN(haystack);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			end = ZSTR_VAL(haystack) + ZSTR_LEN(haystack);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3187|      0|			for (p = ZSTR_VAL(haystack); (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			for (p = ZSTR_VAL(haystack); (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |  327|      0|#define php_memnstr zend_memnstr
  ------------------
  |  Branch (3187:33): [True: 0, False: 0]
  ------------------
 3188|      0|				if (!new_str) {
  ------------------
  |  Branch (3188:9): [True: 0, False: 0]
  ------------------
 3189|      0|					new_str = zend_string_init(ZSTR_VAL(haystack), ZSTR_LEN(haystack), 0);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					new_str = zend_string_init(ZSTR_VAL(haystack), ZSTR_LEN(haystack), 0);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3190|      0|				}
 3191|      0|				memcpy(ZSTR_VAL(new_str) + (r - ZSTR_VAL(haystack)), str, str_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				memcpy(ZSTR_VAL(new_str) + (r - ZSTR_VAL(haystack)), str, str_len);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3192|      0|				(*replace_count)++;
 3193|      0|			}
 3194|      0|			if (!new_str) {
  ------------------
  |  Branch (3194:8): [True: 0, False: 0]
  ------------------
 3195|      0|				goto nothing_todo;
 3196|      0|			}
 3197|      0|			return new_str;
 3198|      3|		} else {
 3199|      3|			size_t count = 0;
 3200|      3|			const char *o = ZSTR_VAL(haystack);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3201|      3|			const char *n = needle;
 3202|      3|			const char *endp = o + ZSTR_LEN(haystack);
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3203|       |
 3204|      5|			while ((o = (char*)php_memnstr(o, n, needle_len, endp))) {
  ------------------
  |  |  327|      5|#define php_memnstr zend_memnstr
  ------------------
  |  Branch (3204:11): [True: 2, False: 3]
  ------------------
 3205|      2|				o += needle_len;
 3206|      2|				count++;
 3207|      2|			}
 3208|      3|			if (count == 0) {
  ------------------
  |  Branch (3208:8): [True: 1, False: 2]
  ------------------
 3209|       |				/* Needle doesn't occur, shortcircuit the actual replacement. */
 3210|      1|				goto nothing_todo;
 3211|      1|			}
 3212|      2|			if (str_len > needle_len) {
  ------------------
  |  Branch (3212:8): [True: 1, False: 1]
  ------------------
 3213|      1|				new_str = zend_string_safe_alloc(count, str_len - needle_len, ZSTR_LEN(haystack), 0);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3214|      1|			} else {
 3215|      1|				new_str = zend_string_alloc(count * (str_len - needle_len) + ZSTR_LEN(haystack), 0);
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3216|      1|			}
 3217|       |
 3218|      2|			e = ZSTR_VAL(new_str);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 3219|      2|			end = ZSTR_VAL(haystack) + ZSTR_LEN(haystack);
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			end = ZSTR_VAL(haystack) + ZSTR_LEN(haystack);
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 3220|      4|			for (p = ZSTR_VAL(haystack); (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			for (p = ZSTR_VAL(haystack); (r = (char*)php_memnstr(p, needle, needle_len, end)); p = r + needle_len) {
  ------------------
  |  |  327|      4|#define php_memnstr zend_memnstr
  ------------------
  |  Branch (3220:33): [True: 2, False: 2]
  ------------------
 3221|      2|				e = zend_mempcpy(e, p, r - p);
 3222|      2|				e = zend_mempcpy(e, str, str_len);
 3223|      2|				(*replace_count)++;
 3224|      2|			}
 3225|       |
 3226|      2|			if (p < end) {
  ------------------
  |  Branch (3226:8): [True: 2, False: 0]
  ------------------
 3227|      2|				e = zend_mempcpy(e, p, end - p);
 3228|      2|			}
 3229|       |
 3230|      2|			*e = '\0';
 3231|      2|			return new_str;
 3232|      3|		}
 3233|      3|	} else if (needle_len > ZSTR_LEN(haystack) || memcmp(ZSTR_VAL(haystack), needle, ZSTR_LEN(haystack))) {
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	} else if (needle_len > ZSTR_LEN(haystack) || memcmp(ZSTR_VAL(haystack), needle, ZSTR_LEN(haystack))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	} else if (needle_len > ZSTR_LEN(haystack) || memcmp(ZSTR_VAL(haystack), needle, ZSTR_LEN(haystack))) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (3233:13): [True: 1, False: 0]
  |  Branch (3233:48): [True: 0, False: 0]
  ------------------
 3234|      2|nothing_todo:
 3235|      2|		return zend_string_copy(haystack);
 3236|      1|	} else {
 3237|      0|		(*replace_count)++;
 3238|      0|		return zend_string_init_fast(str, str_len);
 3239|      0|	}
 3240|      4|}
string.c:resolve_addslashes:
 3874|      2|static php_addslashes_func_t resolve_addslashes(void) {
 3875|      2|	if (zend_cpu_supports_sse42()) {
  ------------------
  |  Branch (3875:6): [True: 2, False: 0]
  ------------------
 3876|      2|		return php_addslashes_sse42;
 3877|      2|	}
 3878|      0|	return php_addslashes_default;
 3879|      2|}
string.c:php_str_replace_common:
 4530|      8|{
 4531|      8|	zend_string *search_str;
 4532|      8|	HashTable *search_ht;
 4533|      8|	zend_string *replace_str;
 4534|      8|	HashTable *replace_ht;
 4535|      8|	zend_string *subject_str;
 4536|      8|	HashTable *subject_ht;
 4537|      8|	zval *zcount = NULL;
 4538|       |
 4539|     24|	ZEND_PARSE_PARAMETERS_START(3, 4)
  ------------------
  |  | 1629|      8|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      8|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      8|		const int _flags = (flags); \
  |  |  |  | 1599|      8|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      8|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      8|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      8|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      8|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      8|		uint32_t _i = 0; \
  |  |  |  | 1603|      8|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      8|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      8|		char *_error = NULL; \
  |  |  |  | 1606|      8|		bool _dummy = 0; \
  |  |  |  | 1607|      8|		bool _optional = 0; \
  |  |  |  | 1608|      8|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      8|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      8|		((void)_i); \
  |  |  |  | 1610|      8|		((void)_real_arg); \
  |  |  |  | 1611|      8|		((void)_arg); \
  |  |  |  | 1612|      8|		((void)_expected_type); \
  |  |  |  | 1613|      8|		((void)_error); \
  |  |  |  | 1614|      8|		((void)_optional); \
  |  |  |  | 1615|      8|		((void)_dummy); \
  |  |  |  | 1616|      8|		\
  |  |  |  | 1617|      8|		do { \
  |  |  |  | 1618|      8|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     16|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      8|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      8|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      8|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      8|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      8|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4540|     40|		Z_PARAM_ARRAY_HT_OR_STR(search_ht, search_str)
  ------------------
  |  | 2167|      8|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|      8|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|      8|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (4540:3): [True: 8, False: 0]
  |  Branch (4540:3): [True: 0, False: 0]
  |  Branch (4540:3): [True: 8, False: 0]
  |  Branch (4540:3): [True: 0, False: 0]
  |  Branch (4540:3): [True: 8, False: 0]
  |  Branch (4540:3): [True: 0, False: 0]
  |  Branch (4540:3): [True: 0, False: 8]
  |  Branch (4540:3): [True: 8, False: 0]
  |  Branch (4540:3): [True: 0, False: 0]
  |  Branch (4540:3): [True: 0, False: 0]
  ------------------
 4541|     40|		Z_PARAM_ARRAY_HT_OR_STR(replace_ht, replace_str)
  ------------------
  |  | 2167|      8|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|      8|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|      8|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (4541:3): [True: 8, False: 0]
  |  Branch (4541:3): [True: 0, False: 0]
  |  Branch (4541:3): [True: 8, False: 0]
  |  Branch (4541:3): [True: 0, False: 0]
  |  Branch (4541:3): [True: 8, False: 0]
  |  Branch (4541:3): [True: 0, False: 0]
  |  Branch (4541:3): [True: 0, False: 8]
  |  Branch (4541:3): [True: 8, False: 0]
  |  Branch (4541:3): [True: 0, False: 0]
  |  Branch (4541:3): [True: 0, False: 0]
  ------------------
 4542|     40|		Z_PARAM_ARRAY_HT_OR_STR(subject_ht, subject_str)
  ------------------
  |  | 2167|      8|	Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, 0);
  |  |  ------------------
  |  |  |  | 2159|      8|	Z_PARAM_PROLOGUE(0, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  | 1660|      8|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      8|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      8|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2160|      8|	if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2161|      0|		_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2161:20): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2162|      0|		_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2163|      0|		break; \
  |  |  |  | 2164|      0|	}
  |  |  ------------------
  ------------------
  |  Branch (4542:3): [True: 8, False: 0]
  |  Branch (4542:3): [True: 0, False: 0]
  |  Branch (4542:3): [True: 8, False: 0]
  |  Branch (4542:3): [True: 0, False: 0]
  |  Branch (4542:3): [True: 8, False: 0]
  |  Branch (4542:3): [True: 0, False: 0]
  |  Branch (4542:3): [True: 0, False: 8]
  |  Branch (4542:3): [True: 8, False: 0]
  |  Branch (4542:3): [True: 0, False: 0]
  |  Branch (4542:3): [True: 0, False: 0]
  ------------------
 4543|     40|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      8|	_optional = 1;
  ------------------
 4544|     40|		Z_PARAM_ZVAL(zcount)
  ------------------
  |  | 2116|      1|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      8|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      8|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      8|	++_i; \
  |  |  |  |  |  |  |  | 1654|      8|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      8|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      8|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 8, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      8|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 7, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      8|	} \
  |  |  |  |  |  |  |  | 1659|      8|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      1|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4544:3): [True: 8, False: 0]
  |  Branch (4544:3): [True: 0, False: 0]
  |  Branch (4544:3): [True: 0, False: 8]
  |  Branch (4544:3): [True: 8, False: 0]
  |  Branch (4544:3): [True: 8, False: 0]
  |  Branch (4544:3): [True: 0, False: 0]
  |  Branch (4544:3): [True: 8, False: 0]
  |  Branch (4544:3): [True: 0, False: 0]
  |  Branch (4544:3): [True: 0, False: 0]
  |  Branch (4544:3): [True: 0, False: 0]
  ------------------
 4545|     18|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      8|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4545:2): [True: 1, False: 0]
  |  Branch (4545:2): [True: 0, False: 0]
  |  Branch (4545:2): [True: 1, False: 0]
  |  Branch (4545:2): [True: 0, False: 0]
  ------------------
 4546|       |
 4547|      8|	_php_str_replace_common(return_value, search_ht, search_str, replace_ht, replace_str, subject_ht, subject_str, zcount, case_sensitivity);
 4548|      8|}
string.c:_php_str_replace_common:
 4487|      8|) {
 4488|      8|	zval *subject_entry;
 4489|      8|	zval result;
 4490|      8|	zend_string *string_key;
 4491|      8|	zend_ulong num_key;
 4492|      8|	zend_long count = 0;
 4493|       |
 4494|       |	/* Make sure we're dealing with strings and do the replacement. */
 4495|      8|	if (search_str && replace_ht) {
  ------------------
  |  Branch (4495:6): [True: 8, False: 0]
  |  Branch (4495:20): [True: 0, False: 8]
  ------------------
 4496|      0|		zend_argument_type_error(2, "must be of type string when argument #1 ($search) is a string");
 4497|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4497:3): [True: 0, False: 0]
  |  Branch (4497:3): [True: 0, False: 0]
  ------------------
 4498|      0|	}
 4499|       |
 4500|       |	/* if subject is an array */
 4501|      8|	if (subject_ht) {
  ------------------
  |  Branch (4501:6): [True: 5, False: 3]
  ------------------
 4502|      5|		array_init(return_value);
 4503|       |
 4504|       |		/* For each subject entry, convert it to string, then perform replacement
 4505|       |		   and add the result to the return_value array. */
 4506|     22|		ZEND_HASH_FOREACH_KEY_VAL(subject_ht, num_key, string_key, subject_entry) {
  ------------------
  |  | 1196|     10|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      5|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      5|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      5|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      5|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      5|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      5|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      5|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      5|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      5|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      5|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      5|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      5|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      5|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     15|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 10, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     10|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     10|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     10|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     10|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     10|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 6, False: 4]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      6|				__z++; \
  |  |  |  |  |  | 1057|      6|				__h = _idx; \
  |  |  |  |  |  | 1058|      6|				_idx++; \
  |  |  |  |  |  | 1059|      6|			} else { \
  |  |  |  |  |  | 1060|      4|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      4|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      4|				__h = _p->h; \
  |  |  |  |  |  | 1063|      4|				__key = _p->key; \
  |  |  |  |  |  | 1064|      4|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      4|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 4]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      4|			} \
  |  |  |  |  |  | 1068|     10|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     10|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 3, False: 7]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      7|	_h = __h; \
  |  | 1198|      7|	_key = __key; \
  |  | 1199|      7|	_val = _z;
  ------------------
 4507|     22|			zend_string *tmp_subject_str;
 4508|     22|			ZVAL_DEREF(subject_entry);
  ------------------
  |  | 1474|      7|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      7|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      7|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 1, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      1|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      1|		}												\
  |  | 1478|      7|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 7]
  |  |  ------------------
  ------------------
 4509|     22|			subject_str = zval_get_tmp_string(subject_entry, &tmp_subject_str);
 4510|     22|			count += php_str_replace_in_subject(search_str, search_ht, replace_str, replace_ht, subject_str, &result, case_sensitivity);
 4511|     22|			zend_tmp_string_release(tmp_subject_str);
 4512|       |
 4513|       |			/* Add to return array */
 4514|     22|			if (string_key) {
  ------------------
  |  Branch (4514:8): [True: 0, False: 7]
  ------------------
 4515|      0|				zend_hash_add_new(Z_ARRVAL_P(return_value), string_key, &result);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4516|      7|			} else {
 4517|      7|				zend_hash_index_add_new(Z_ARRVAL_P(return_value), num_key, &result);
  ------------------
  |  |  997|      7|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      7|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      7|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4518|      7|			}
 4519|     22|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      7|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
 4520|      5|	} else {	/* if subject is not an array */
 4521|      3|		count = php_str_replace_in_subject(search_str, search_ht, replace_str, replace_ht, subject_str, return_value, case_sensitivity);
 4522|      3|	}
 4523|      8|	if (zcount) {
  ------------------
  |  Branch (4523:6): [True: 1, False: 7]
  ------------------
 4524|       |		ZEND_TRY_ASSIGN_REF_LONG(zcount, count);
  ------------------
  |  | 1215|      1|#define ZEND_TRY_ASSIGN_REF_LONG(zv, lval) do { \
  |  | 1216|      1|	ZEND_ASSERT(Z_ISREF_P(zv)); \
  |  |  ------------------
  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  | 1217|      1|	_ZEND_TRY_ASSIGN_LONG(zv, lval, 1); \
  |  |  ------------------
  |  |  |  | 1198|      1|#define _ZEND_TRY_ASSIGN_LONG(zv, lval, is_ref) do { \
  |  |  |  | 1199|      1|	zval *_zv = zv; \
  |  |  |  | 1200|      1|	if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1200:6): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1201|      1|		zend_reference *ref = Z_REF_P(_zv); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1202|      1|		if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1203|      0|			zend_try_assign_typed_ref_long(ref, lval); \
  |  |  |  | 1204|      0|			break; \
  |  |  |  | 1205|      0|		} \
  |  |  |  | 1206|      1|		_zv = &ref->val; \
  |  |  |  | 1207|      1|	} \
  |  |  |  | 1208|      1|	zval_ptr_safe_dtor(_zv); \
  |  |  |  | 1209|      1|	ZVAL_LONG(_zv, lval); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      1|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      1|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1210:10): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1218|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1218:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4524:3): [True: 0, False: 1]
  |  Branch (4524:3): [True: 1, False: 0]
  ------------------
 4525|      1|	}
 4526|      8|}
string.c:php_str_replace_in_subject:
 4321|     10|) {
 4322|     10|	zval		*search_entry;
 4323|     10|	zend_string	*tmp_result;
 4324|     10|	char		*replace_value = NULL;
 4325|     10|	size_t		 replace_len = 0;
 4326|     10|	zend_long	 replace_count = 0;
 4327|     10|	zend_string *lc_subject_str = NULL;
 4328|     10|	uint32_t     replace_idx;
 4329|       |
 4330|     10|	if (ZSTR_LEN(subject_str) == 0) {
  ------------------
  |  |   68|     10|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4330:6): [True: 4, False: 6]
  ------------------
 4331|      4|		ZVAL_EMPTY_STRING(result);
  ------------------
  |  |  972|      4|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      4|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      4|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      4|		zval *__z = (z);							\
  |  |  |  | 1100|      4|		zend_string *__s = (s);						\
  |  |  |  | 1101|      4|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      4|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      4|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 4332|      4|		return 0;
 4333|      4|	}
 4334|       |
 4335|       |	/* If search is an array */
 4336|      6|	if (search_ht) {
  ------------------
  |  Branch (4336:6): [True: 0, False: 6]
  ------------------
 4337|       |		/* Duplicate subject string for repeated replacement */
 4338|      0|		zend_string_addref(subject_str);
 4339|       |
 4340|      0|		if (replace_ht) {
  ------------------
  |  Branch (4340:7): [True: 0, False: 0]
  ------------------
 4341|      0|			replace_idx = 0;
 4342|      0|		} else {
 4343|       |			/* Set replacement value to the passed one */
 4344|      0|			replace_value = ZSTR_VAL(replace_str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4345|      0|			replace_len = ZSTR_LEN(replace_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4346|      0|		}
 4347|       |
 4348|       |		/* For each entry in the search array, get the entry */
 4349|      0|		ZEND_HASH_FOREACH_VAL(search_ht, search_entry) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 4350|       |			/* Make sure we're dealing with strings. */
 4351|      0|			zend_string *tmp_search_str;
 4352|      0|			zend_string *search_str = zval_get_tmp_string(search_entry, &tmp_search_str);
 4353|      0|			zend_string *replace_entry_str, *tmp_replace_entry_str = NULL;
 4354|       |
 4355|       |			/* If replace is an array. */
 4356|      0|			if (replace_ht) {
  ------------------
  |  Branch (4356:8): [True: 0, False: 0]
  ------------------
 4357|       |				/* Get current entry */
 4358|      0|				zval *replace_entry = NULL;
 4359|      0|				if (HT_IS_PACKED(replace_ht)) {
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4360|      0|					while (replace_idx < replace_ht->nNumUsed) {
  ------------------
  |  Branch (4360:13): [True: 0, False: 0]
  ------------------
 4361|      0|						replace_entry = &replace_ht->arPacked[replace_idx];
 4362|      0|						if (Z_TYPE_P(replace_entry) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(replace_entry) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (4362:11): [True: 0, False: 0]
  ------------------
 4363|      0|							break;
 4364|      0|						}
 4365|      0|						replace_idx++;
 4366|      0|					}
 4367|      0|				} else {
 4368|      0|					while (replace_idx < replace_ht->nNumUsed) {
  ------------------
  |  Branch (4368:13): [True: 0, False: 0]
  ------------------
 4369|      0|						replace_entry = &replace_ht->arData[replace_idx].val;
 4370|      0|						if (Z_TYPE_P(replace_entry) != IS_UNDEF) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(replace_entry) != IS_UNDEF) {
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (4370:11): [True: 0, False: 0]
  ------------------
 4371|      0|							break;
 4372|      0|						}
 4373|      0|						replace_idx++;
 4374|      0|					}
 4375|      0|				}
 4376|      0|				if (replace_idx < replace_ht->nNumUsed) {
  ------------------
  |  Branch (4376:9): [True: 0, False: 0]
  ------------------
 4377|       |					/* Make sure we're dealing with strings. */
 4378|      0|					replace_entry_str = zval_get_tmp_string(replace_entry, &tmp_replace_entry_str);
 4379|       |
 4380|       |					/* Set replacement value to the one we got from array */
 4381|      0|					replace_value = ZSTR_VAL(replace_entry_str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4382|      0|					replace_len = ZSTR_LEN(replace_entry_str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4383|       |
 4384|      0|					replace_idx++;
 4385|      0|				} else {
 4386|       |					/* We've run out of replacement strings, so use an empty one. */
 4387|      0|					replace_value = "";
 4388|      0|					replace_len = 0;
 4389|      0|				}
 4390|      0|			}
 4391|       |
 4392|      0|			if (ZSTR_LEN(search_str) == 1) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4392:8): [True: 0, False: 0]
  ------------------
 4393|      0|				zend_long old_replace_count = replace_count;
 4394|       |
 4395|      0|				tmp_result = php_char_to_str_ex(subject_str,
 4396|      0|								ZSTR_VAL(search_str)[0],
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4397|      0|								replace_value,
 4398|      0|								replace_len,
 4399|      0|								case_sensitivity,
 4400|      0|								&replace_count);
 4401|      0|				if (lc_subject_str && replace_count != old_replace_count) {
  ------------------
  |  Branch (4401:9): [True: 0, False: 0]
  |  Branch (4401:27): [True: 0, False: 0]
  ------------------
 4402|      0|					zend_string_release_ex(lc_subject_str, 0);
 4403|      0|					lc_subject_str = NULL;
 4404|      0|				}
 4405|      0|			} else if (ZSTR_LEN(search_str) > 1) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4405:15): [True: 0, False: 0]
  ------------------
 4406|      0|				if (case_sensitivity) {
  ------------------
  |  Branch (4406:9): [True: 0, False: 0]
  ------------------
 4407|      0|					tmp_result = php_str_to_str_ex(subject_str,
 4408|      0|							ZSTR_VAL(search_str), ZSTR_LEN(search_str),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							ZSTR_VAL(search_str), ZSTR_LEN(search_str),
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 4409|      0|							replace_value, replace_len, &replace_count);
 4410|      0|				} else {
 4411|      0|					zend_long old_replace_count = replace_count;
 4412|       |
 4413|      0|					if (!lc_subject_str) {
  ------------------
  |  Branch (4413:10): [True: 0, False: 0]
  ------------------
 4414|      0|						lc_subject_str = zend_string_tolower(subject_str);
 4415|      0|					}
 4416|      0|					tmp_result = php_str_to_str_i_ex(subject_str, ZSTR_VAL(lc_subject_str),
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 4417|      0|							search_str, replace_value, replace_len, &replace_count);
 4418|      0|					if (replace_count != old_replace_count) {
  ------------------
  |  Branch (4418:10): [True: 0, False: 0]
  ------------------
 4419|      0|						zend_string_release_ex(lc_subject_str, 0);
 4420|      0|						lc_subject_str = NULL;
 4421|      0|					}
 4422|      0|				}
 4423|      0|			} else {
 4424|      0|				zend_tmp_string_release(tmp_search_str);
 4425|      0|				zend_tmp_string_release(tmp_replace_entry_str);
 4426|      0|				continue;
 4427|      0|			}
 4428|       |
 4429|      0|			zend_tmp_string_release(tmp_search_str);
 4430|      0|			zend_tmp_string_release(tmp_replace_entry_str);
 4431|       |
 4432|      0|			if (subject_str == tmp_result) {
  ------------------
  |  Branch (4432:8): [True: 0, False: 0]
  ------------------
 4433|      0|				zend_string_delref(subject_str);
 4434|      0|			} else {
 4435|      0|				zend_string_release_ex(subject_str, 0);
 4436|      0|				subject_str = tmp_result;
 4437|      0|				if (ZSTR_LEN(subject_str) == 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4437:9): [True: 0, False: 0]
  ------------------
 4438|      0|					zend_string_release_ex(subject_str, 0);
 4439|      0|					ZVAL_EMPTY_STRING(result);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4440|      0|					if (lc_subject_str) {
  ------------------
  |  Branch (4440:10): [True: 0, False: 0]
  ------------------
 4441|      0|						zend_string_release_ex(lc_subject_str, 0);
 4442|      0|					}
 4443|      0|					return replace_count;
 4444|      0|				}
 4445|      0|			}
 4446|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4447|      0|		ZVAL_STR(result, subject_str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4448|      0|		if (lc_subject_str) {
  ------------------
  |  Branch (4448:7): [True: 0, False: 0]
  ------------------
 4449|      0|			zend_string_release_ex(lc_subject_str, 0);
 4450|      0|		}
 4451|      6|	} else {
 4452|      6|		ZEND_ASSERT(search_str);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (4452:3): [True: 0, False: 6]
  |  Branch (4452:3): [True: 6, False: 0]
  ------------------
 4453|      6|		if (ZSTR_LEN(search_str) == 1) {
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4453:7): [True: 2, False: 4]
  ------------------
 4454|      2|			ZVAL_STR(result,
  ------------------
  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      2|		zval *__z = (z);						\
  |  | 1090|      2|		zend_string *__s = (s);					\
  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      2|		/* interned strings support */			\
  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 1]
  |  |  ------------------
  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      3|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 4455|      2|				php_char_to_str_ex(subject_str,
 4456|      2|							ZSTR_VAL(search_str)[0],
 4457|      2|							ZSTR_VAL(replace_str),
 4458|      2|							ZSTR_LEN(replace_str),
 4459|      2|							case_sensitivity,
 4460|      2|							&replace_count));
 4461|      4|		} else if (ZSTR_LEN(search_str) > 1) {
  ------------------
  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (4461:14): [True: 4, False: 0]
  ------------------
 4462|      4|			if (case_sensitivity) {
  ------------------
  |  Branch (4462:8): [True: 4, False: 0]
  ------------------
 4463|      4|				ZVAL_STR(result, php_str_to_str_ex(subject_str,
  ------------------
  |  | 1088|      4|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      4|		zval *__z = (z);						\
  |  | 1090|      4|		zend_string *__s = (s);					\
  |  | 1091|      4|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      4|		/* interned strings support */			\
  |  | 1093|      4|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 1, False: 3]
  |  |  ------------------
  |  | 1094|      4|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      4|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      7|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
 4464|      4|						ZSTR_VAL(search_str), ZSTR_LEN(search_str),
 4465|      4|						ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), &replace_count));
 4466|      4|			} else {
 4467|      0|				lc_subject_str = zend_string_tolower(subject_str);
 4468|      0|				ZVAL_STR(result, php_str_to_str_i_ex(subject_str, ZSTR_VAL(lc_subject_str),
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4469|      0|						search_str, ZSTR_VAL(replace_str), ZSTR_LEN(replace_str), &replace_count));
 4470|      0|				zend_string_release_ex(lc_subject_str, 0);
 4471|      0|			}
 4472|      4|		} else {
 4473|      0|			ZVAL_STR_COPY(result, subject_str);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4474|      0|		}
 4475|      6|	}
 4476|      6|	return replace_count;
 4477|      6|}
string.c:count_chars:
 3061|      2|{
 3062|      2|	zend_long count = 0;
 3063|      2|	const char *endp;
 3064|       |
 3065|      2|#ifdef XSSE2
 3066|      2|	if (length >= sizeof(__m128i)) {
  ------------------
  |  Branch (3066:6): [True: 0, False: 2]
  ------------------
 3067|      0|		__m128i search = _mm_set1_epi8(ch);
 3068|       |
 3069|      0|		do {
 3070|      0|			__m128i src = _mm_loadu_si128((__m128i*)(p));
 3071|      0|			uint32_t mask = _mm_movemask_epi8(_mm_cmpeq_epi8(src, search));
 3072|       |			// TODO: It would be great to use POPCNT, but it's available only with SSE4.1
 3073|      0|#if 1
 3074|      0|			while (mask != 0) {
  ------------------
  |  Branch (3074:11): [True: 0, False: 0]
  ------------------
 3075|      0|				count++;
 3076|      0|				mask = mask & (mask - 1);
 3077|      0|			}
 3078|       |#else
 3079|       |			if (mask) {
 3080|       |				mask = mask - ((mask >> 1) & 0x5555);
 3081|       |				mask = (mask & 0x3333) + ((mask >> 2) & 0x3333);
 3082|       |				mask = (mask + (mask >> 4)) & 0x0F0F;
 3083|       |				mask = (mask + (mask >> 8)) & 0x00ff;
 3084|       |				count += mask;
 3085|       |			}
 3086|       |#endif
 3087|      0|			p += sizeof(__m128i);
 3088|      0|			length -= sizeof(__m128i);
 3089|      0|		} while (length >= sizeof(__m128i));
  ------------------
  |  Branch (3089:12): [True: 0, False: 0]
  ------------------
 3090|      0|	}
 3091|      2|	endp = p + length;
 3092|      5|	while (p != endp) {
  ------------------
  |  Branch (3092:9): [True: 3, False: 2]
  ------------------
 3093|      3|		count += (*p == ch);
 3094|      3|		p++;
 3095|      3|	}
 3096|       |#else
 3097|       |	endp = p + length;
 3098|       |	while ((p = memchr(p, ch, endp-p))) {
 3099|       |		count++;
 3100|       |		p++;
 3101|       |	}
 3102|       |#endif
 3103|      2|	return count;
 3104|      2|}

strnatcmp_ex:
   89|     41|{
   90|     41|	unsigned char ca, cb;
   91|     41|	char const *ap, *bp;
   92|     41|	char const *aend = a + a_len,
   93|     41|			   *bend = b + b_len;
   94|     41|	int fractional, result;
   95|       |
   96|     41|	if (a_len == 0 || b_len == 0) {
  ------------------
  |  Branch (96:6): [True: 1, False: 40]
  |  Branch (96:20): [True: 11, False: 29]
  ------------------
   97|     12|		return (a_len == b_len ? 0 : (a_len > b_len ? 1 : -1));
  ------------------
  |  Branch (97:11): [True: 0, False: 12]
  |  Branch (97:33): [True: 11, False: 1]
  ------------------
   98|     12|	}
   99|       |
  100|     29|	ap = a;
  101|     29|	bp = b;
  102|       |
  103|     29|	ca = *ap; cb = *bp;
  104|       |
  105|       |	/* skip over leading zeros */
  106|     29|	while (ca == '0' && (ap+1 < aend) && isdigit((unsigned char)ap[1])) {
  ------------------
  |  Branch (106:9): [True: 0, False: 29]
  |  Branch (106:22): [True: 0, False: 0]
  |  Branch (106:39): [True: 0, False: 0]
  ------------------
  107|      0|		ca = *++ap;
  108|      0|	}
  109|       |
  110|     29|	while (cb == '0' && (bp+1 < bend) && isdigit((unsigned char)bp[1])) {
  ------------------
  |  Branch (110:9): [True: 2, False: 27]
  |  Branch (110:22): [True: 0, False: 2]
  |  Branch (110:39): [True: 0, False: 0]
  ------------------
  111|      0|		cb = *++bp;
  112|      0|	}
  113|       |
  114|     58|	while (1) {
  ------------------
  |  Branch (114:9): [True: 58, Folded]
  ------------------
  115|       |
  116|       |		/* Skip consecutive whitespace */
  117|     60|		while (isspace(ca)) {
  ------------------
  |  Branch (117:10): [True: 60, False: 58]
  ------------------
  118|     60|			ca = *++ap;
  119|     60|		}
  120|       |
  121|     58|		while (isspace(cb)) {
  ------------------
  |  Branch (121:10): [True: 2, False: 58]
  ------------------
  122|      2|			cb = *++bp;
  123|      2|		}
  124|       |
  125|       |		/* process run of digits */
  126|     58|		if (isdigit(ca)  &&  isdigit(cb)) {
  ------------------
  |  Branch (126:7): [True: 2, False: 56]
  |  Branch (126:24): [True: 2, False: 0]
  ------------------
  127|      2|			fractional = (ca == '0' || cb == '0');
  ------------------
  |  Branch (127:18): [True: 0, False: 2]
  |  Branch (127:31): [True: 0, False: 2]
  ------------------
  128|       |
  129|      2|			if (fractional)
  ------------------
  |  Branch (129:8): [True: 0, False: 2]
  ------------------
  130|      0|				result = compare_left(&ap, aend, &bp, bend);
  131|      2|			else
  132|      2|				result = compare_right(&ap, aend, &bp, bend);
  133|       |
  134|      2|			if (result != 0)
  ------------------
  |  Branch (134:8): [True: 1, False: 1]
  ------------------
  135|      1|				return result;
  136|      1|			else if (ap == aend && bp == bend)
  ------------------
  |  Branch (136:13): [True: 0, False: 1]
  |  Branch (136:27): [True: 0, False: 0]
  ------------------
  137|       |				/* End of the strings. Let caller sort them out. */
  138|      0|				return 0;
  139|      1|			else if (ap == aend)
  ------------------
  |  Branch (139:13): [True: 0, False: 1]
  ------------------
  140|      0|				return -1;
  141|      1|			else if (bp == bend)
  ------------------
  |  Branch (141:13): [True: 0, False: 1]
  ------------------
  142|      0|				return 1;
  143|      1|			else {
  144|       |				/* Keep on comparing from the current point. */
  145|      1|				ca = *ap; cb = *bp;
  146|      1|			}
  147|      2|		}
  148|       |
  149|     57|		if (is_case_insensitive) {
  ------------------
  |  Branch (149:7): [True: 0, False: 57]
  ------------------
  150|      0|			ca = toupper(ca);
  ------------------
  |  Branch (150:9): [True: 0, False: 0]
  |  Branch (150:9): [True: 0, False: 0]
  |  Branch (150:9): [Folded, False: 0]
  ------------------
  151|      0|			cb = toupper(cb);
  ------------------
  |  Branch (151:9): [True: 0, False: 0]
  |  Branch (151:9): [True: 0, False: 0]
  |  Branch (151:9): [Folded, False: 0]
  ------------------
  152|      0|		}
  153|       |
  154|     57|		if (ca < cb)
  ------------------
  |  Branch (154:7): [True: 11, False: 46]
  ------------------
  155|     11|			return -1;
  156|     46|		else if (ca > cb)
  ------------------
  |  Branch (156:12): [True: 17, False: 29]
  ------------------
  157|     17|			return +1;
  158|       |
  159|     29|		++ap; ++bp;
  160|     29|		if (ap >= aend && bp >= bend)
  ------------------
  |  Branch (160:7): [True: 0, False: 29]
  |  Branch (160:21): [True: 0, False: 0]
  ------------------
  161|       |			/* The strings compare the same.  Perhaps the caller
  162|       |			   will want to call strcmp to break the tie. */
  163|      0|			return 0;
  164|     29|		else if (ap >= aend)
  ------------------
  |  Branch (164:12): [True: 0, False: 29]
  ------------------
  165|      0|			return -1;
  166|     29|		else if (bp >= bend)
  ------------------
  |  Branch (166:12): [True: 0, False: 29]
  ------------------
  167|      0|			return 1;
  168|       |
  169|     29|		ca = *ap; cb = *bp;
  170|     29|	}
  171|     29|}
strnatcmp.c:compare_right:
   35|      2|{
   36|      2|	int bias = 0;
   37|       |
   38|       |	/* The longest run of digits wins.  That aside, the greatest
   39|       |	   value wins, but we can't know that it will until we've scanned
   40|       |	   both numbers to know that they have the same magnitude, so we
   41|       |	   remember it in BIAS. */
   42|     13|	for(;; (*a)++, (*b)++) {
   43|     13|		if ((*a == aend || !isdigit((unsigned char)**a)) &&
  ------------------
  |  Branch (43:8): [True: 0, False: 13]
  |  Branch (43:22): [True: 2, False: 11]
  ------------------
   44|      2|			(*b == bend || !isdigit((unsigned char)**b)))
  ------------------
  |  Branch (44:5): [True: 0, False: 2]
  |  Branch (44:19): [True: 1, False: 1]
  ------------------
   45|      1|			return bias;
   46|     12|		else if (*a == aend || !isdigit((unsigned char)**a))
  ------------------
  |  Branch (46:12): [True: 0, False: 12]
  |  Branch (46:26): [True: 1, False: 11]
  ------------------
   47|      1|			return -1;
   48|     11|		else if (*b == bend || !isdigit((unsigned char)**b))
  ------------------
  |  Branch (48:12): [True: 0, False: 11]
  |  Branch (48:26): [True: 0, False: 11]
  ------------------
   49|      0|			return +1;
   50|     11|		else if (**a < **b) {
  ------------------
  |  Branch (50:12): [True: 0, False: 11]
  ------------------
   51|      0|			if (!bias)
  ------------------
  |  Branch (51:8): [True: 0, False: 0]
  ------------------
   52|      0|				bias = -1;
   53|     11|		} else if (**a > **b) {
  ------------------
  |  Branch (53:14): [True: 1, False: 10]
  ------------------
   54|      1|			if (!bias)
  ------------------
  |  Branch (54:8): [True: 1, False: 0]
  ------------------
   55|      1|				bias = +1;
   56|      1|		}
   57|     13|	}
   58|       |
   59|      0|	return 0;
   60|      2|}

zm_startup_syslog:
   35|      2|{
   36|      2|	return SUCCESS;
   37|      2|}
zm_deactivate_syslog:
   41|  33.5k|{
   42|  33.5k|	php_closelog();
   43|  33.5k|	if (BG(syslog_device)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
   44|      0|		free(BG(syslog_device));
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   45|      0|		BG(syslog_device) = NULL;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   46|      0|	}
   47|  33.5k|	return SUCCESS;
   48|  33.5k|}

zif_is_array:
  318|      2|{
  319|      2|	php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
              	php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY);
  ------------------
  |  |  613|      2|#define IS_ARRAY					7
  ------------------
  320|      2|}
type.c:php_is_type:
  240|      2|{
  241|      2|	zval *arg;
  242|       |
  243|      5|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      1|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      1|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      1|				} \
  |  |  |  | 1623|      1|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      1|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      1|				break; \
  |  |  |  | 1625|      1|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      1|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      5|		Z_PARAM_ZVAL(arg)
  ------------------
  |  | 2116|      1|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      1|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      1|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      1|	++_i; \
  |  |  |  |  |  |  |  | 1654|      1|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      1|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      1|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      1|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      1|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (244:3): [True: 1, False: 0]
  |  Branch (244:3): [True: 0, False: 0]
  |  Branch (244:3): [True: 1, False: 0]
  |  Branch (244:3): [True: 0, False: 0]
  |  Branch (244:3): [True: 1, False: 0]
  |  Branch (244:3): [True: 0, False: 0]
  |  Branch (244:3): [True: 0, False: 1]
  |  Branch (244:3): [True: 1, False: 0]
  |  Branch (244:3): [True: 0, False: 0]
  |  Branch (244:3): [True: 0, False: 0]
  ------------------
  245|      4|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      1|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      1|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (245:2): [True: 1, False: 0]
  |  Branch (245:2): [True: 0, False: 0]
  |  Branch (245:2): [True: 1, False: 0]
  |  Branch (245:2): [True: 0, False: 0]
  ------------------
  246|       |
  247|      1|	if (Z_TYPE_P(arg) == type) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  |  Branch (247:6): [True: 1, False: 0]
  ------------------
  248|      1|		if (type == IS_RESOURCE) {
  ------------------
  |  |  615|      1|#define IS_RESOURCE					9
  ------------------
  |  Branch (248:7): [True: 0, False: 1]
  ------------------
  249|      0|			const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(arg));
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  250|      0|			if (!type_name) {
  ------------------
  |  Branch (250:8): [True: 0, False: 0]
  ------------------
  251|      0|				RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  252|      0|			}
  253|      0|		}
  254|      1|		RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  255|      1|	} else {
  256|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  257|      0|	}
  258|      1|}

php_url_decode_ex:
  584|      1|{
  585|      1|	char *dest_start = dest;
  586|      1|	const char *data = src;
  587|       |
  588|     14|	while (src_len--) {
  ------------------
  |  Branch (588:9): [True: 13, False: 1]
  ------------------
  589|     13|		if (*data == '+') {
  ------------------
  |  Branch (589:7): [True: 0, False: 13]
  ------------------
  590|      0|			*dest = ' ';
  591|      0|		}
  592|     13|		else if (*data == '%' && src_len >= 2 && isxdigit((unsigned char)data[1])
  ------------------
  |  Branch (592:12): [True: 0, False: 13]
  |  Branch (592:28): [True: 0, False: 0]
  |  Branch (592:44): [True: 0, False: 0]
  ------------------
  593|     13|				 && isxdigit((unsigned char)data[2])) {
  ------------------
  |  Branch (593:9): [True: 0, False: 0]
  ------------------
  594|      0|			*dest = (char) php_htoi(data + 1);
  595|      0|			data += 2;
  596|      0|			src_len -= 2;
  597|     13|		} else {
  598|     13|			*dest = *data;
  599|     13|		}
  600|     13|		data++;
  601|     13|		dest++;
  602|     13|	}
  603|      1|	*dest = '\0';
  604|      1|	return dest - dest_start;
  605|      1|}
php_url_decode:
  609|      1|{
  610|      1|	return php_url_decode_ex(str, str, len);
  611|      1|}

zm_startup_url_scanner_ex:
 1390|      2|{
 1391|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
 1392|      2|	return SUCCESS;
 1393|      2|}
zm_activate_url_scanner_ex:
 1403|  33.5k|{
 1404|  33.5k|	BG(url_adapt_session_ex).active    = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1405|  33.5k|	BG(url_adapt_session_ex).tag_type  = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1406|  33.5k|	BG(url_adapt_session_ex).attr_type = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1407|  33.5k|	BG(url_adapt_output_ex).active    = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1408|  33.5k|	BG(url_adapt_output_ex).tag_type  = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1409|  33.5k|	BG(url_adapt_output_ex).attr_type = 0;
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1410|  33.5k|	return SUCCESS;
 1411|  33.5k|}
zm_deactivate_url_scanner_ex:
 1414|  33.5k|{
 1415|  33.5k|	if (BG(url_adapt_session_ex).active) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1415:6): [True: 0, False: 33.5k]
  ------------------
 1416|      0|		php_url_scanner_ex_deactivate(true);
 1417|      0|		BG(url_adapt_session_ex).active    = 0;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1418|      0|		BG(url_adapt_session_ex).tag_type  = 0;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1419|      0|		BG(url_adapt_session_ex).attr_type = 0;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1420|      0|	}
 1421|  33.5k|	smart_str_free(&BG(url_adapt_session_ex).form_app);
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1422|  33.5k|	smart_str_free(&BG(url_adapt_session_ex).url_app);
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1423|       |
 1424|  33.5k|	if (BG(url_adapt_output_ex).active) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1424:6): [True: 0, False: 33.5k]
  ------------------
 1425|      0|		php_url_scanner_ex_deactivate(false);
 1426|      0|		BG(url_adapt_output_ex).active    = 0;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1427|      0|		BG(url_adapt_output_ex).tag_type  = 0;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1428|      0|		BG(url_adapt_output_ex).attr_type = 0;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1429|      0|	}
 1430|  33.5k|	smart_str_free(&BG(url_adapt_output_ex).form_app);
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1431|  33.5k|	smart_str_free(&BG(url_adapt_output_ex).url_app);
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  ------------------
 1432|       |
 1433|  33.5k|	return SUCCESS;
 1434|  33.5k|}
url_scanner_ex.c:OnUpdateSessionTags:
  104|      2|{
  105|      2|	if (!zend_string_starts_with_literal(new_value, "a=href,area=href,frame=src,form=")) {
  ------------------
  |  |  420|      2|	zend_string_starts_with_cstr(str, "" prefix, sizeof(prefix) - 1)
  ------------------
  |  Branch (105:6): [True: 0, False: 2]
  ------------------
  106|      0|		php_error_docref("session.configuration", E_DEPRECATED, "Usage of session.trans_sid_tags INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  107|      0|	}
  108|       |	return php_ini_on_update_tags(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, /* is_session */ true);
  109|      2|}
url_scanner_ex.c:php_ini_on_update_tags:
   49|      4|{
   50|      4|	url_adapt_state_ex_t *ctx;
   51|      4|	char *key;
   52|      4|	char *tmp;
   53|      4|	char *lasts = NULL;
   54|       |
   55|      4|	if (is_session) {
  ------------------
  |  Branch (55:6): [True: 2, False: 2]
  ------------------
   56|      2|		ctx = &BG(url_adapt_session_ex);
  ------------------
  |  |  113|      2|#define BG(v) (basic_globals.v)
  ------------------
   57|      2|	} else {
   58|      2|		ctx = &BG(url_adapt_output_ex);
  ------------------
  |  |  113|      2|#define BG(v) (basic_globals.v)
  ------------------
   59|      2|	}
   60|       |
   61|      4|	tmp = estrndup(ZSTR_VAL(new_value), ZSTR_LEN(new_value));
  ------------------
  |  |  164|      4|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   62|       |
   63|      4|	if (ctx->tags)
  ------------------
  |  Branch (63:6): [True: 0, False: 4]
  ------------------
   64|      0|		zend_hash_destroy(ctx->tags);
   65|      4|	else {
   66|      4|		ctx->tags = malloc(sizeof(HashTable));
   67|      4|		if (!ctx->tags) {
  ------------------
  |  Branch (67:7): [True: 0, False: 4]
  ------------------
   68|      0|			efree(tmp);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|			return FAILURE;
   70|      0|		}
   71|      4|	}
   72|       |
   73|      4|	zend_hash_init(ctx->tags, 0, NULL, tag_dtor, 1);
  ------------------
  |  |  111|      4|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   74|       |
   75|      4|	for (key = php_strtok_r(tmp, ",", &lasts);
  ------------------
  |  |   94|      4|#define php_strtok_r strtok_r
  ------------------
   76|     14|		 key;
  ------------------
  |  Branch (76:4): [True: 10, False: 4]
  ------------------
   77|     10|		 key = php_strtok_r(NULL, ",", &lasts)) {
  ------------------
  |  |   94|     10|#define php_strtok_r strtok_r
  ------------------
   78|     10|		char *val;
   79|       |
   80|     10|		val = strchr(key, '=');
   81|     10|		if (val) {
  ------------------
  |  Branch (81:7): [True: 10, False: 0]
  ------------------
   82|     10|			char *q;
   83|     10|			size_t keylen;
   84|     10|			zend_string *str;
   85|       |
   86|     10|			*val++ = '\0';
   87|     46|			for (q = key; *q; q++) {
  ------------------
  |  Branch (87:18): [True: 36, False: 10]
  ------------------
   88|     36|				*q = tolower((unsigned char)*q);
  ------------------
  |  Branch (88:10): [True: 0, False: 0]
  |  Branch (88:10): [True: 0, False: 0]
  |  Branch (88:10): [Folded, False: 36]
  ------------------
   89|     36|			}
   90|     10|			keylen = q - key;
   91|     10|			str = zend_string_init(key, keylen, 1);
   92|     10|			GC_MAKE_PERSISTENT_LOCAL(str);
  ------------------
  |  | 1326|     10|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 10]
  |  |  ------------------
  ------------------
   93|     10|			zend_hash_add_mem(ctx->tags, str, val, strlen(val)+1);
   94|     10|			zend_string_release_ex(str, 1);
   95|     10|		}
   96|     10|	}
   97|       |
   98|      4|	efree(tmp);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   99|       |
  100|      4|	return SUCCESS;
  101|      4|}
url_scanner_ex.c:OnUpdateSessionHosts:
  157|      2|{
  158|      2|	if (ZSTR_LEN(new_value) != 0) {
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (158:6): [True: 0, False: 2]
  ------------------
  159|      0|		php_error_docref("session.configuration", E_DEPRECATED, "Usage of session.trans_sid_hosts INI setting is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  160|      0|	}
  161|       |	return php_ini_on_update_hosts(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, /* is_session */ true);
  162|      2|}
url_scanner_ex.c:php_ini_on_update_hosts:
  117|      4|{
  118|      4|	HashTable *hosts;
  119|      4|	char *key;
  120|      4|	char *tmp;
  121|      4|	char *lasts = NULL;
  122|       |
  123|      4|	if (is_session) {
  ------------------
  |  Branch (123:6): [True: 2, False: 2]
  ------------------
  124|      2|		hosts = &BG(url_adapt_session_hosts_ht);
  ------------------
  |  |  113|      2|#define BG(v) (basic_globals.v)
  ------------------
  125|      2|	} else {
  126|      2|		hosts = &BG(url_adapt_output_hosts_ht);
  ------------------
  |  |  113|      2|#define BG(v) (basic_globals.v)
  ------------------
  127|      2|	}
  128|      4|	zend_hash_clean(hosts);
  129|       |
  130|       |	/* Use user supplied host whitelist */
  131|      4|	tmp = estrndup(ZSTR_VAL(new_value), ZSTR_LEN(new_value));
  ------------------
  |  |  164|      4|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|      4|	for (key = php_strtok_r(tmp, ",", &lasts);
  ------------------
  |  |   94|      4|#define php_strtok_r strtok_r
  ------------------
  133|      4|		 key;
  ------------------
  |  Branch (133:4): [True: 0, False: 4]
  ------------------
  134|      4|		 key = php_strtok_r(NULL, ",", &lasts)) {
  ------------------
  |  |   94|      0|#define php_strtok_r strtok_r
  ------------------
  135|      0|		size_t keylen;
  136|      0|		zend_string *tmp_key;
  137|      0|		char *q;
  138|       |
  139|      0|		for (q = key; *q; q++) {
  ------------------
  |  Branch (139:17): [True: 0, False: 0]
  ------------------
  140|      0|			*q = tolower((unsigned char)*q);
  ------------------
  |  Branch (140:9): [True: 0, False: 0]
  |  Branch (140:9): [True: 0, False: 0]
  |  Branch (140:9): [Folded, False: 0]
  ------------------
  141|      0|		}
  142|      0|		keylen = q - key;
  143|      0|		if (keylen > 0) {
  ------------------
  |  Branch (143:7): [True: 0, False: 0]
  ------------------
  144|       |			/* Note: the hash table is persistently allocated, so the strings must be too! */
  145|      0|			tmp_key = zend_string_init(key, keylen, true);
  146|      0|			GC_MAKE_PERSISTENT_LOCAL(tmp_key);
  ------------------
  |  | 1326|      0|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 0]
  |  |  ------------------
  ------------------
  147|      0|			zend_hash_add_empty_element(hosts, tmp_key);
  148|      0|			zend_string_release_ex(tmp_key, true);
  149|      0|		}
  150|      0|	}
  151|      4|	efree(tmp);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|       |
  153|      4|	return SUCCESS;
  154|      4|}
url_scanner_ex.c:OnUpdateOutputTags:
  112|      2|{
  113|       |	return php_ini_on_update_tags(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, /* is_session */ false);
  114|      2|}
url_scanner_ex.c:OnUpdateOutputHosts:
  165|      2|{
  166|       |	return php_ini_on_update_hosts(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, /* is_session */ false);
  167|      2|}

zim_php_user_filter_filter:
   39|      1|{
   40|      1|	zval *in, *out, *consumed;
   41|      1|	bool closing;
   42|      1|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrzb", &in, &out, &consumed, &closing) == FAILURE) {
  ------------------
  |  |  529|      1|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      1|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      1|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (42:6): [True: 0, False: 1]
  ------------------
   43|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (43:3): [True: 0, False: 0]
  |  Branch (43:3): [True: 0, False: 0]
  ------------------
   44|      0|	}
   45|       |
   46|      1|	RETURN_LONG(PSFS_ERR_FATAL);
  ------------------
  |  | 1048|      1|#define RETURN_LONG(l)					do { RETVAL_LONG(l); return; } while (0)
  |  |  ------------------
  |  |  |  | 1022|      1|#define RETVAL_LONG(l)					ZVAL_LONG(return_value, l)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1076|      1|#define ZVAL_LONG(z, l) do {			\
  |  |  |  |  |  | 1077|      1|		zval *__z = (z);				\
  |  |  |  |  |  | 1078|      1|		Z_LVAL_P(__z) = l;				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1079|      1|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  610|      1|#define IS_LONG						4
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1080|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1080:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1048:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
   47|      1|}
zim_php_user_filter_onCreate:
   61|      1|{
   62|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
   63|       |
   64|      1|	RETURN_TRUE;
  ------------------
  |  | 1070|      1|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      1|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      1|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      1|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
   65|      1|}
zim_php_user_filter_onClose:
   68|      1|{
   69|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
   70|      1|}
zm_startup_user_filters:
   85|      2|{
   86|       |	/* init the filter class ancestor */
   87|      2|	user_filter_class_entry = register_class_php_user_filter();
   88|      2|	stream_bucket_class_entry = register_class_StreamBucket();
   89|       |
   90|       |	/* Filters will dispose of their brigades */
   91|      2|	le_bucket_brigade = zend_register_list_destructors_ex(NULL, NULL, PHP_STREAM_BRIGADE_RES_NAME, module_number);
  ------------------
  |  |   23|      2|#define PHP_STREAM_BRIGADE_RES_NAME	"userfilter.bucket brigade"
  ------------------
   92|       |	/* Brigades will dispose of their buckets */
   93|      2|	le_bucket = zend_register_list_destructors_ex(php_bucket_dtor, NULL, PHP_STREAM_BUCKET_RES_NAME, module_number);
  ------------------
  |  |   24|      2|#define PHP_STREAM_BUCKET_RES_NAME "userfilter.bucket"
  ------------------
   94|       |
   95|      2|	if (le_bucket_brigade == FAILURE) {
  ------------------
  |  Branch (95:6): [True: 0, False: 2]
  ------------------
   96|      0|		return FAILURE;
   97|      0|	}
   98|       |
   99|      2|	register_user_filters_symbols(module_number);
  100|       |
  101|      2|	return SUCCESS;
  102|      2|}
zm_deactivate_user_filters:
  105|  33.5k|{
  106|  33.5k|	if (BG(user_filter_map)) {
  ------------------
  |  |  113|  33.5k|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 3, False: 33.5k]
  |  |  ------------------
  ------------------
  107|      3|		zend_hash_destroy(BG(user_filter_map));
  ------------------
  |  |  113|      3|#define BG(v) (basic_globals.v)
  ------------------
  108|      3|		efree(BG(user_filter_map));
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|      3|		BG(user_filter_map) = NULL;
  ------------------
  |  |  113|      3|#define BG(v) (basic_globals.v)
  ------------------
  110|      3|	}
  111|       |
  112|  33.5k|	return SUCCESS;
  113|  33.5k|}
zif_stream_filter_register:
  598|      3|{
  599|      3|	zend_string *filtername, *classname;
  600|      3|	struct php_user_filter_data *fdat;
  601|       |
  602|      9|	ZEND_PARSE_PARAMETERS_START(2, 2)
  ------------------
  |  | 1629|      3|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      3|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      3|		const int _flags = (flags); \
  |  |  |  | 1599|      3|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      3|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      3|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      3|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      3|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      3|		uint32_t _i = 0; \
  |  |  |  | 1603|      3|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      3|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      3|		char *_error = NULL; \
  |  |  |  | 1606|      3|		bool _dummy = 0; \
  |  |  |  | 1607|      3|		bool _optional = 0; \
  |  |  |  | 1608|      3|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      3|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      3|		((void)_i); \
  |  |  |  | 1610|      3|		((void)_real_arg); \
  |  |  |  | 1611|      3|		((void)_arg); \
  |  |  |  | 1612|      3|		((void)_expected_type); \
  |  |  |  | 1613|      3|		((void)_error); \
  |  |  |  | 1614|      3|		((void)_optional); \
  |  |  |  | 1615|      3|		((void)_dummy); \
  |  |  |  | 1616|      3|		\
  |  |  |  | 1617|      3|		do { \
  |  |  |  | 1618|      3|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      3|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      3|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      3|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      3|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      3|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  603|     12|		Z_PARAM_STR(filtername)
  ------------------
  |  | 2102|      3|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      3|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (603:3): [True: 3, False: 0]
  |  Branch (603:3): [True: 0, False: 0]
  |  Branch (603:3): [True: 3, False: 0]
  |  Branch (603:3): [True: 0, False: 0]
  |  Branch (603:3): [True: 3, False: 0]
  |  Branch (603:3): [True: 0, False: 0]
  |  Branch (603:3): [True: 0, False: 3]
  |  Branch (603:3): [True: 3, False: 0]
  |  Branch (603:3): [True: 0, False: 0]
  |  Branch (603:3): [True: 0, False: 0]
  ------------------
  604|     15|		Z_PARAM_STR(classname)
  ------------------
  |  | 2102|      3|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      3|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      3|	++_i; \
  |  |  |  |  |  | 1654|      3|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      3|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      3|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      3|	_real_arg++; \
  |  |  |  |  |  | 1660|      3|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      3|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      3|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      3|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (604:3): [True: 3, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 3, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 3, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 0, False: 3]
  |  Branch (604:3): [True: 3, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  |  Branch (604:3): [True: 0, False: 0]
  ------------------
  605|      3|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      3|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      3|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      3|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      3|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1641|      3|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (605:2): [True: 3, False: 0]
  |  Branch (605:2): [True: 0, False: 0]
  |  Branch (605:2): [True: 3, False: 0]
  |  Branch (605:2): [True: 0, False: 0]
  ------------------
  606|       |
  607|      3|	if (!ZSTR_LEN(filtername)) {
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (607:6): [True: 0, False: 3]
  ------------------
  608|      0|		zend_argument_value_error(1, "must be a non-empty string");
  609|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (609:3): [True: 0, False: 0]
  |  Branch (609:3): [True: 0, False: 0]
  ------------------
  610|      0|	}
  611|       |
  612|      3|	if (!ZSTR_LEN(classname)) {
  ------------------
  |  |   68|      3|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (612:6): [True: 0, False: 3]
  ------------------
  613|      0|		zend_argument_value_error(2, "must be a non-empty string");
  614|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (614:3): [True: 0, False: 0]
  |  Branch (614:3): [True: 0, False: 0]
  ------------------
  615|      0|	}
  616|       |
  617|      3|	if (!BG(user_filter_map)) {
  ------------------
  |  |  113|      3|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (617:6): [True: 3, False: 0]
  ------------------
  618|      3|		BG(user_filter_map) = (HashTable*) emalloc(sizeof(HashTable));
  ------------------
  |  |  113|      3|#define BG(v) (basic_globals.v)
  ------------------
              		BG(user_filter_map) = (HashTable*) emalloc(sizeof(HashTable));
  ------------------
  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  619|      3|		zend_hash_init(BG(user_filter_map), 8, NULL, (dtor_func_t) filter_item_dtor, 0);
  ------------------
  |  |  111|      3|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  620|      3|	}
  621|       |
  622|      3|	fdat = ecalloc(1, sizeof(struct php_user_filter_data));
  ------------------
  |  |  157|      3|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  623|      3|	fdat->classname = zend_string_copy(classname);
  624|       |
  625|      3|	if (zend_hash_add_ptr(BG(user_filter_map), filtername, fdat) != NULL) {
  ------------------
  |  |  113|      3|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (625:6): [True: 3, False: 0]
  ------------------
  626|      3|		if (php_stream_filter_register_factory_volatile(filtername, &user_filter_factory) == SUCCESS) {
  ------------------
  |  Branch (626:7): [True: 3, False: 0]
  ------------------
  627|      3|			RETURN_TRUE;
  ------------------
  |  | 1070|      3|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      3|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      3|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      3|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      3|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      3|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  628|      3|		}
  629|       |
  630|      0|		zend_hash_del(BG(user_filter_map), filtername);
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  631|      0|	} else {
  632|      0|		zend_string_release_ex(classname, 0);
  633|      0|		efree(fdat);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  634|      0|	}
  635|       |
  636|      0|	RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  637|      0|}
user_filters.c:filter_item_dtor:
  431|      3|{
  432|      3|	struct php_user_filter_data *fdat = Z_PTR_P(zv);
  ------------------
  |  | 1053|      3|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      3|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  433|      3|	zend_string_release_ex(fdat->classname, 0);
  434|       |	efree(fdat);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  435|      3|}
user_filters.c:user_filter_factory_create:
  326|      1|{
  327|      1|	struct php_user_filter_data *fdat = NULL;
  328|      1|	php_stream_filter *filter;
  329|      1|	zval obj;
  330|      1|	zval retval;
  331|      1|	size_t len;
  332|       |
  333|       |	/* some sanity checks */
  334|      1|	if (persistent) {
  ------------------
  |  Branch (334:6): [True: 0, False: 1]
  ------------------
  335|      0|		php_error_docref(NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  336|      0|				"Cannot use a user-space filter with a persistent stream");
  337|      0|		return NULL;
  338|      0|	}
  339|       |
  340|      1|	len = strlen(filtername);
  341|       |
  342|       |	/* determine the classname/class entry */
  343|      1|	if (NULL == (fdat = zend_hash_str_find_ptr(BG(user_filter_map), filtername, len))) {
  ------------------
  |  |  113|      1|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (343:6): [True: 0, False: 1]
  ------------------
  344|      0|		const char *period;
  345|       |
  346|       |		/* Userspace Filters using ambiguous wildcards could cause problems.
  347|       |           i.e.: myfilter.foo.bar will always call into myfilter.foo.*
  348|       |                 never seeing myfilter.*
  349|       |           TODO: Allow failed userfilter creations to continue
  350|       |                 scanning through the list */
  351|      0|		if ((period = strrchr(filtername, '.'))) {
  ------------------
  |  Branch (351:7): [True: 0, False: 0]
  ------------------
  352|      0|			char *wildcard = safe_emalloc(len, 1, 3);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |
  354|       |			/* Search for wildcard matches instead */
  355|      0|			memcpy(wildcard, filtername, len + 1); /* copy \0 */
  356|      0|			char *new_period = wildcard + (period - filtername);
  357|      0|			while (new_period) {
  ------------------
  |  Branch (357:11): [True: 0, False: 0]
  ------------------
  358|      0|				ZEND_ASSERT(new_period[0] == '.');
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (358:5): [True: 0, False: 0]
  |  Branch (358:5): [True: 0, False: 0]
  ------------------
  359|      0|				new_period[1] = '*';
  360|      0|				new_period[2] = '\0';
  361|      0|				if (NULL != (fdat = zend_hash_str_find_ptr(BG(user_filter_map), wildcard, strlen(wildcard)))) {
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (361:9): [True: 0, False: 0]
  ------------------
  362|      0|					new_period = NULL;
  363|      0|				} else {
  364|      0|					*new_period = '\0';
  365|      0|					new_period = strrchr(wildcard, '.');
  366|      0|				}
  367|      0|			}
  368|      0|			efree(wildcard);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  369|      0|		}
  370|      0|		ZEND_ASSERT(fdat);
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (370:3): [True: 0, False: 0]
  |  Branch (370:3): [True: 0, False: 0]
  ------------------
  371|      0|	}
  372|       |
  373|       |	/* bind the classname to the actual class */
  374|      1|	if (fdat->ce == NULL) {
  ------------------
  |  Branch (374:6): [True: 1, False: 0]
  ------------------
  375|      1|		if (NULL == (fdat->ce = zend_lookup_class(fdat->classname))) {
  ------------------
  |  Branch (375:7): [True: 0, False: 1]
  ------------------
  376|      0|			php_error_docref(NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  377|      0|					"User-filter \"%s\" requires class \"%s\", but that class is not defined",
  378|      0|					filtername, ZSTR_VAL(fdat->classname));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  379|      0|			return NULL;
  380|      0|		}
  381|      1|	}
  382|       |
  383|       |	/* create the object */
  384|      1|	if (object_init_ex(&obj, fdat->ce) == FAILURE) {
  ------------------
  |  Branch (384:6): [True: 0, False: 1]
  ------------------
  385|      0|		return NULL;
  386|      0|	}
  387|       |
  388|      1|	filter = php_stream_filter_alloc(&userfilter_ops, NULL, false,
  ------------------
  |  |  153|      1|		_php_stream_filter_alloc((fops), (thisptr), (persistent), (rseek), (wseek) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      1|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      1|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|      1|			PSFS_SEEKABLE_CHECK, PSFS_SEEKABLE_CHECK);
  390|       |
  391|       |	/* filtername */
  392|      1|	add_property_string(&obj, "filtername", filtername);
  393|       |
  394|       |	/* and the parameters, if any */
  395|      1|	if (filterparams) {
  ------------------
  |  Branch (395:6): [True: 0, False: 1]
  ------------------
  396|      0|		add_property_zval(&obj, "params", filterparams);
  397|      1|	} else {
  398|      1|		add_property_null(&obj, "params");
  399|      1|	}
  400|       |
  401|       |	/* invoke the constructor */
  402|      1|	zend_string *func_name = ZSTR_INIT_LITERAL("oncreate", 0);
  ------------------
  |  |  141|      1|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  403|      1|	zend_call_method_if_exists(Z_OBJ(obj), func_name, &retval, 0, NULL);
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  404|      1|	zend_string_release(func_name);
  405|       |
  406|      1|	if (Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (406:6): [True: 1, False: 0]
  ------------------
  407|      1|		if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (407:7): [True: 0, False: 1]
  ------------------
  408|       |			/* Kill the filter (safely) */
  409|      0|			ZVAL_UNDEF(&filter->abstract);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  410|      0|			php_stream_filter_free(filter);
  411|       |
  412|       |			/* Kill the object */
  413|      0|			zval_ptr_dtor(&obj);
  414|       |
  415|       |			/* Report failure to filter_alloc */
  416|      0|			return NULL;
  417|      0|		}
  418|      1|		zval_ptr_dtor(&retval);
  419|      1|	}
  420|       |
  421|      1|	ZVAL_OBJ(&filter->abstract, Z_OBJ(obj));
  ------------------
  |  | 1140|      1|#define ZVAL_OBJ(z, o) do {						\
  |  | 1141|      1|		zval *__z = (z);						\
  |  | 1142|      1|		Z_OBJ_P(__z) = (o);						\
  |  |  ------------------
  |  |  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1143|      1|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      1|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      1|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1144|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1144:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  422|       |
  423|      1|	return filter;
  424|      1|}
user_filters.c:userfilter_filter:
  173|      1|{
  174|      1|	int ret = PSFS_ERR_FATAL;
  175|      1|	zval *obj = &thisfilter->abstract;
  176|      1|	zval func_name;
  177|      1|	zval retval;
  178|      1|	zval args[4];
  179|      1|	int call_result;
  180|       |
  181|       |	/* the userfilter object probably doesn't exist anymore */
  182|      1|	if (CG(unclean_shutdown)) {
  ------------------
  |  |   35|      1|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  183|      0|		return ret;
  184|      0|	}
  185|       |
  186|       |	/* Make sure the stream is not closed while the filter callback executes. */
  187|      1|	uint32_t orig_no_fclose = stream->flags & PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      1|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  188|      1|	stream->flags |= PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      1|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  189|       |
  190|      1|	zend_string *stream_name = NULL;
  191|      1|	if (userfilter_assign_stream(stream, obj, &stream_name, orig_no_fclose) == FAILURE) {
  ------------------
  |  Branch (191:6): [True: 0, False: 1]
  ------------------
  192|      0|		if (buckets_in->head) {
  ------------------
  |  Branch (192:7): [True: 0, False: 0]
  ------------------
  193|      0|			php_error_docref(NULL, E_WARNING, "Unprocessed filter buckets remaining on input brigade");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  194|      0|		}
  195|      0|		return PSFS_ERR_FATAL;
  196|      0|	}
  197|       |
  198|      1|	ZVAL_STRINGL(&func_name, "filter", sizeof("filter")-1);
  ------------------
  |  |  963|      1|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      1|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      1|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      1|		zval *__z = (z);						\
  |  |  |  | 1107|      1|		zend_string *__s = (s);					\
  |  |  |  | 1108|      1|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      1|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      1|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  199|       |
  200|       |	/* Setup calling arguments */
  201|      1|	ZVAL_RES(&args[0], zend_register_resource(buckets_in, le_bucket_brigade));
  ------------------
  |  | 1154|      1|#define ZVAL_RES(z, r) do {						\
  |  | 1155|      1|		zval *__z = (z);						\
  |  | 1156|      1|		Z_RES_P(__z) = (r);						\
  |  |  ------------------
  |  |  |  | 1018|      1|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      1|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1157|      1|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  831|      1|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1158|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1158:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  202|      1|	ZVAL_RES(&args[1], zend_register_resource(buckets_out, le_bucket_brigade));
  ------------------
  |  | 1154|      1|#define ZVAL_RES(z, r) do {						\
  |  | 1155|      1|		zval *__z = (z);						\
  |  | 1156|      1|		Z_RES_P(__z) = (r);						\
  |  |  ------------------
  |  |  |  | 1018|      1|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      1|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1157|      1|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  ------------------
  |  |  |  |  831|      1|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1158|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1158:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  203|       |
  204|      1|	if (bytes_consumed) {
  ------------------
  |  Branch (204:6): [True: 0, False: 1]
  ------------------
  205|      0|		ZVAL_LONG(&args[2], *bytes_consumed);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  206|      1|	} else {
  207|      1|		ZVAL_NULL(&args[2]);
  ------------------
  |  | 1059|      1|#define ZVAL_NULL(z) do {				\
  |  | 1060|      1|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      1|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  208|      1|	}
  209|      1|	ZVAL_MAKE_REF(&args[2]);
  ------------------
  |  | 1492|      1|#define ZVAL_MAKE_REF(zv) do {							\
  |  | 1493|      1|		zval *__zv = (zv);								\
  |  | 1494|      1|		if (!Z_ISREF_P(__zv)) {							\
  |  |  ------------------
  |  |  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1494:7): [True: 1, False: 0]
  |  |  ------------------
  |  | 1495|      1|			ZVAL_NEW_REF(__zv, __zv);					\
  |  |  ------------------
  |  |  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  |  |  | 1206|      1|		zend_reference *_ref =									\
  |  |  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  |  |  ------------------
  |  |  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  |  |  ------------------
  |  |  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1416|      1|	do {												\
  |  |  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  |  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1214|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1496|      1|		}												\
  |  | 1497|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1497:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  210|       |
  211|      1|	ZVAL_BOOL(&args[3], flags & PSFS_FLAG_FLUSH_CLOSE);
  ------------------
  |  | 1071|      1|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      1|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      1|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      1|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 1, False: 0]
  |  |  ------------------
  |  | 1074|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  212|       |
  213|      1|	call_result = call_user_function(NULL,
  ------------------
  |  |  694|      1|	_call_user_function_impl(object, function_name, retval_ptr, param_count, params, NULL)
  ------------------
  214|      1|			obj,
  215|      1|			&func_name,
  216|      1|			&retval,
  217|      1|			4, args);
  218|       |
  219|      1|	zval_ptr_dtor(&func_name);
  220|       |
  221|      1|	if (call_result == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (call_result == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      1|#define IS_UNDEF					0
  ------------------
  |  Branch (221:6): [True: 1, False: 0]
  |  Branch (221:32): [True: 1, False: 0]
  ------------------
  222|      1|		convert_to_long(&retval);
  223|      1|		ret = (int)Z_LVAL(retval);
  ------------------
  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  224|      1|	} else if (call_result == FAILURE) {
  ------------------
  |  Branch (224:13): [True: 0, False: 0]
  ------------------
  225|      0|		php_error_docref(NULL, E_WARNING, "Failed to call filter function");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  226|      0|	}
  227|       |
  228|      1|	if (bytes_consumed) {
  ------------------
  |  Branch (228:6): [True: 0, False: 1]
  ------------------
  229|      0|		*bytes_consumed = zval_get_long(&args[2]);
  230|      0|	}
  231|       |
  232|      1|	if (buckets_in->head) {
  ------------------
  |  Branch (232:6): [True: 0, False: 1]
  ------------------
  233|      0|		php_error_docref(NULL, E_WARNING, "Unprocessed filter buckets remaining on input brigade");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  234|      0|	}
  235|       |
  236|       |	/* filter resources are cleaned up by the stream destructor,
  237|       |	 * keeping a reference to the stream resource here would prevent it
  238|       |	 * from being destroyed properly.
  239|       |	 * Since the property accepted a resource assignment above, it must have
  240|       |	 * no type hint or be typed as mixed, so we can safely assign null.
  241|       |	 */
  242|      1|	if (stream_name != NULL) {
  ------------------
  |  Branch (242:6): [True: 1, False: 0]
  ------------------
  243|      1|		zend_update_property_null(Z_OBJCE_P(obj), Z_OBJ_P(obj), ZSTR_VAL(stream_name), ZSTR_LEN(stream_name));
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		zend_update_property_null(Z_OBJCE_P(obj), Z_OBJ_P(obj), ZSTR_VAL(stream_name), ZSTR_LEN(stream_name));
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property_null(Z_OBJCE_P(obj), Z_OBJ_P(obj), ZSTR_VAL(stream_name), ZSTR_LEN(stream_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_update_property_null(Z_OBJCE_P(obj), Z_OBJ_P(obj), ZSTR_VAL(stream_name), ZSTR_LEN(stream_name));
  ------------------
  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  244|      1|		zend_string_release(stream_name);
  245|      1|	}
  246|       |
  247|      1|	zval_ptr_dtor(&args[3]);
  248|      1|	zval_ptr_dtor(&args[2]);
  249|      1|	zval_ptr_dtor(&args[1]);
  250|      1|	zval_ptr_dtor(&args[0]);
  251|       |
  252|      1|	stream->flags &= ~PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      1|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  253|      1|	stream->flags |= orig_no_fclose;
  254|       |
  255|      1|	return ret;
  256|      1|}
user_filters.c:userfilter_assign_stream:
  137|      1|{
  138|       |	/* Give the userfilter class a hook back to the stream */
  139|      1|	const zend_class_entry *old_scope = EG(fake_scope);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  140|      1|	EG(fake_scope) = Z_OBJCE_P(obj);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              	EG(fake_scope) = Z_OBJCE_P(obj);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|       |
  142|      1|	zend_string *stream_name = ZSTR_INIT_LITERAL("stream", false);
  ------------------
  |  |  141|      1|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  143|      1|	bool stream_property_exists = Z_OBJ_HT_P(obj)->has_property(Z_OBJ_P(obj), stream_name, ZEND_PROPERTY_EXISTS, NULL);
  ------------------
  |  | 1003|      1|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	bool stream_property_exists = Z_OBJ_HT_P(obj)->has_property(Z_OBJ_P(obj), stream_name, ZEND_PROPERTY_EXISTS, NULL);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	bool stream_property_exists = Z_OBJ_HT_P(obj)->has_property(Z_OBJ_P(obj), stream_name, ZEND_PROPERTY_EXISTS, NULL);
  ------------------
  |  |  247|      1|#define ZEND_PROPERTY_EXISTS    0x2          /* Property exists */
  ------------------
  144|      1|	if (stream_property_exists) {
  ------------------
  |  Branch (144:6): [True: 1, False: 0]
  ------------------
  145|      1|		zval stream_zval;
  146|      1|		php_stream_to_zval(stream, &stream_zval);
  ------------------
  |  |  274|      1|#define php_stream_to_zval(stream, zval)	{ ZVAL_RES(zval, (stream)->res); (stream)->__exposed = 1; }
  |  |  ------------------
  |  |  |  | 1154|      1|#define ZVAL_RES(z, r) do {						\
  |  |  |  | 1155|      1|		zval *__z = (z);						\
  |  |  |  | 1156|      1|		Z_RES_P(__z) = (r);						\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1018|      1|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      1|#define Z_RES(zval)					(zval).value.res
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1157|      1|		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  831|      1|#define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  615|      1|#define IS_RESOURCE					9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_RESOURCE_EX				(IS_RESOURCE       | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1158|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1158:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  147|      1|		zend_update_property_ex(Z_OBJCE_P(obj), Z_OBJ_P(obj), stream_name, &stream_zval);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		zend_update_property_ex(Z_OBJCE_P(obj), Z_OBJ_P(obj), stream_name, &stream_zval);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  148|       |		/* If property update threw an exception, skip filter execution */
  149|      1|		if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  150|      0|			EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  151|      0|			zend_string_release(stream_name);
  152|      0|			stream->flags &= ~PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      0|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  153|      0|			stream->flags |= orig_no_fclose;
  154|      0|			return FAILURE;
  155|      0|		}
  156|      1|		*stream_name_p = stream_name;
  157|      1|	} else {
  158|      0|		zend_string_release(stream_name);
  159|      0|	}
  160|      1|	EG(fake_scope) = old_scope;
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  161|       |
  162|      1|	return SUCCESS;
  163|      1|}
user_filters.c:userfilter_dtor:
  116|      1|{
  117|      1|	zval *obj = &thisfilter->abstract;
  118|      1|	zval retval;
  119|       |
  120|      1|	if (Z_ISUNDEF_P(obj)) {
  ------------------
  |  |  967|      1|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (966:28): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|       |		/* If there's no object associated then there's nothing to dispose of */
  122|      0|		return;
  123|      0|	}
  124|       |
  125|      1|	zend_string *func_name = ZSTR_INIT_LITERAL("onclose", 0);
  ------------------
  |  |  141|      1|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  126|      1|	zend_call_method_if_exists(Z_OBJ_P(obj), func_name, &retval, 0, NULL);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  127|      1|	zend_string_release(func_name);
  128|       |
  129|      1|	zval_ptr_dtor(&retval);
  130|       |
  131|       |	/* kill the object */
  132|      1|	zval_ptr_dtor(obj);
  133|      1|}

user_filters.c:register_class_php_user_filter:
   47|      2|{
   48|      2|	zend_class_entry ce, *class_entry;
   49|       |
   50|      2|	INIT_CLASS_ENTRY(ce, "php_user_filter", class_php_user_filter_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   51|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, 0);
   52|       |
   53|      2|	zval property_filtername_default_value;
   54|      2|	ZVAL_EMPTY_STRING(&property_filtername_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   55|      2|	zend_string *property_filtername_name = zend_string_init("filtername", sizeof("filtername") - 1, true);
   56|      2|	zend_declare_typed_property(class_entry, property_filtername_name, &property_filtername_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_filtername_name, &property_filtername_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
   57|      2|	zend_string_release_ex(property_filtername_name, true);
   58|       |
   59|      2|	zval property_params_default_value;
   60|      2|	ZVAL_EMPTY_STRING(&property_params_default_value);
  ------------------
  |  |  972|      2|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      2|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      2|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      2|		zval *__z = (z);							\
  |  |  |  | 1100|      2|		zend_string *__s = (s);						\
  |  |  |  | 1101|      2|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      2|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      2|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   61|      2|	zend_string *property_params_name = zend_string_init("params", sizeof("params") - 1, true);
   62|      2|	zend_declare_typed_property(class_entry, property_params_name, &property_params_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_params_name, &property_params_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
   63|      2|	zend_string_release_ex(property_params_name, true);
   64|       |
   65|      2|	zval property_stream_default_value;
   66|      2|	ZVAL_NULL(&property_stream_default_value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   67|      2|	zend_string *property_stream_name = zend_string_init("stream", sizeof("stream") - 1, true);
   68|      2|	zend_declare_typed_property(class_entry, property_stream_name, &property_stream_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_stream_name, &property_stream_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|      2|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
   69|      2|	zend_string_release_ex(property_stream_name, true);
   70|       |
   71|      2|	return class_entry;
   72|      2|}
user_filters.c:register_class_StreamBucket:
   75|      2|{
   76|      2|	zend_class_entry ce, *class_entry;
   77|       |
   78|      2|	INIT_CLASS_ENTRY(ce, "StreamBucket", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
   79|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
   80|       |
   81|      2|	zval property_bucket_default_value;
   82|      2|	ZVAL_NULL(&property_bucket_default_value);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   83|      2|	zend_string *property_bucket_name = zend_string_init("bucket", sizeof("bucket") - 1, true);
   84|      2|	zend_declare_typed_property(class_entry, property_bucket_name, &property_bucket_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_bucket_name, &property_bucket_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_NONE(0));
  ------------------
  |  |  287|      2|	_ZEND_TYPE_PREFIX { NULL, (extra_flags) }
  ------------------
   85|      2|	zend_string_release_ex(property_bucket_name, true);
   86|       |
   87|      2|	zval property_data_default_value;
   88|      2|	ZVAL_UNDEF(&property_data_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   89|      2|	zend_string *property_data_name = zend_string_init("data", sizeof("data") - 1, true);
   90|      2|	zend_declare_typed_property(class_entry, property_data_name, &property_data_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_data_name, &property_data_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
   91|      2|	zend_string_release_ex(property_data_name, true);
   92|       |
   93|      2|	zval property_datalen_default_value;
   94|      2|	ZVAL_UNDEF(&property_datalen_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   95|      2|	zend_string *property_datalen_name = zend_string_init("datalen", sizeof("datalen") - 1, true);
   96|      2|	zend_declare_typed_property(class_entry, property_datalen_name, &property_datalen_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_datalen_name, &property_datalen_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
   97|      2|	zend_string_release_ex(property_datalen_name, true);
   98|       |
   99|      2|	zval property_dataLength_default_value;
  100|      2|	ZVAL_UNDEF(&property_dataLength_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  101|      2|	zend_string *property_dataLength_name = zend_string_init("dataLength", sizeof("dataLength") - 1, true);
  102|      2|	zend_declare_typed_property(class_entry, property_dataLength_name, &property_dataLength_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_dataLength_name, &property_dataLength_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  103|      2|	zend_string_release_ex(property_dataLength_name, true);
  104|       |
  105|      2|	return class_entry;
  106|      2|}
user_filters.c:register_user_filters_symbols:
   37|      2|{
   38|      2|	REGISTER_LONG_CONSTANT("PSFS_PASS_ON", PSFS_PASS_ON, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   39|      2|	REGISTER_LONG_CONSTANT("PSFS_FEED_ME", PSFS_FEED_ME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   40|      2|	REGISTER_LONG_CONSTANT("PSFS_ERR_FATAL", PSFS_ERR_FATAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   41|      2|	REGISTER_LONG_CONSTANT("PSFS_FLAG_NORMAL", PSFS_FLAG_NORMAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   42|      2|	REGISTER_LONG_CONSTANT("PSFS_FLAG_FLUSH_INC", PSFS_FLAG_FLUSH_INC, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   43|      2|	REGISTER_LONG_CONSTANT("PSFS_FLAG_FLUSH_CLOSE", PSFS_FLAG_FLUSH_CLOSE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   44|      2|}

php_var_dump:
  108|  2.10M|{
  109|  2.10M|	HashTable *myht;
  110|  2.10M|	zend_string *class_name;
  111|  2.10M|	int is_ref = 0;
  112|  2.10M|	zend_ulong num;
  113|  2.10M|	zend_string *key;
  114|  2.10M|	zval *val;
  115|  2.10M|	uint32_t count;
  116|       |
  117|  2.10M|	if (level > 1) {
  ------------------
  |  Branch (117:6): [True: 2.09M, False: 2.22k]
  ------------------
  118|  2.09M|		php_printf("%*c", level - 1, ' ');
  119|  2.09M|	}
  120|       |
  121|  2.10M|again:
  122|  2.10M|	switch (Z_TYPE_P(struc)) {
  ------------------
  |  |  669|  2.10M|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.10M|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  123|    376|		case IS_FALSE:
  ------------------
  |  |  608|    376|#define IS_FALSE					2
  ------------------
  |  Branch (123:3): [True: 376, False: 2.10M]
  ------------------
  124|    376|			php_printf("%sbool(false)\n", COMMON);
  ------------------
  |  |   38|    376|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 0, False: 376]
  |  |  ------------------
  ------------------
  125|    376|			break;
  126|    146|		case IS_TRUE:
  ------------------
  |  |  609|    146|#define IS_TRUE						3
  ------------------
  |  Branch (126:3): [True: 146, False: 2.10M]
  ------------------
  127|    146|			php_printf("%sbool(true)\n", COMMON);
  ------------------
  |  |   38|    146|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 0, False: 146]
  |  |  ------------------
  ------------------
  128|    146|			break;
  129|  2.09M|		case IS_NULL:
  ------------------
  |  |  607|  2.09M|#define IS_NULL						1
  ------------------
  |  Branch (129:3): [True: 2.09M, False: 3.06k]
  ------------------
  130|  2.09M|			php_printf("%sNULL\n", COMMON);
  ------------------
  |  |   38|  2.09M|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 11, False: 2.09M]
  |  |  ------------------
  ------------------
  131|  2.09M|			break;
  132|    941|		case IS_LONG:
  ------------------
  |  |  610|    941|#define IS_LONG						4
  ------------------
  |  Branch (132:3): [True: 941, False: 2.10M]
  ------------------
  133|    941|			php_printf("%sint(" ZEND_LONG_FMT ")\n", COMMON, Z_LVAL_P(struc));
  ------------------
  |  |   38|    941|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 24, False: 917]
  |  |  ------------------
  ------------------
              			php_printf("%sint(" ZEND_LONG_FMT ")\n", COMMON, Z_LVAL_P(struc));
  ------------------
  |  |  976|    941|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|    941|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  134|    941|			break;
  135|     63|		case IS_DOUBLE:
  ------------------
  |  |  611|     63|#define IS_DOUBLE					5
  ------------------
  |  Branch (135:3): [True: 63, False: 2.10M]
  ------------------
  136|     63|			php_printf_unchecked("%sfloat(%.*H)\n", COMMON, (int) PG(serialize_precision), Z_DVAL_P(struc));
  ------------------
  |  |   38|     63|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 1, False: 62]
  |  |  ------------------
  ------------------
              			php_printf_unchecked("%sfloat(%.*H)\n", COMMON, (int) PG(serialize_precision), Z_DVAL_P(struc));
  ------------------
  |  |   29|     63|# define PG(v) (core_globals.v)
  ------------------
              			php_printf_unchecked("%sfloat(%.*H)\n", COMMON, (int) PG(serialize_precision), Z_DVAL_P(struc));
  ------------------
  |  |  979|     63|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|     63|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  137|     63|			break;
  138|    793|		case IS_STRING:
  ------------------
  |  |  612|    793|#define IS_STRING					6
  ------------------
  |  Branch (138:3): [True: 793, False: 2.10M]
  ------------------
  139|    793|			php_printf("%sstring(%zd) \"", COMMON, Z_STRLEN_P(struc));
  ------------------
  |  |   38|    793|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 11, False: 782]
  |  |  ------------------
  ------------------
              			php_printf("%sstring(%zd) \"", COMMON, Z_STRLEN_P(struc));
  ------------------
  |  |  988|    793|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|    793|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    793|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|    793|			PHPWRITE(Z_STRVAL_P(struc), Z_STRLEN_P(struc));
  ------------------
  |  |  156|    793|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  141|    793|			PUTS("\"\n");
  ------------------
  |  |  162|    793|#define PUTS(str)					do {				\
  |  |  163|    793|	const char *__str = (str);							\
  |  |  164|    793|	php_output_write(__str, strlen(__str));	\
  |  |  165|    793|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 793]
  |  |  ------------------
  ------------------
  142|    793|			break;
  143|    316|		case IS_ARRAY:
  ------------------
  |  |  613|    316|#define IS_ARRAY					7
  ------------------
  |  Branch (143:3): [True: 316, False: 2.10M]
  ------------------
  144|    316|			myht = Z_ARRVAL_P(struc);
  ------------------
  |  |  997|    316|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    316|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    316|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  145|    316|			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|    316|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    316|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|    316|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (145:8): [True: 292, False: 24]
  ------------------
  146|    292|				if (GC_IS_RECURSIVE(myht)) {
  ------------------
  |  |  887|    292|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|    292|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    292|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|    292|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 10, False: 282]
  |  |  ------------------
  ------------------
  147|     10|					PUTS("*RECURSION*\n");
  ------------------
  |  |  162|     10|#define PUTS(str)					do {				\
  |  |  163|     10|	const char *__str = (str);							\
  |  |  164|     10|	php_output_write(__str, strlen(__str));	\
  |  |  165|     10|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 10]
  |  |  ------------------
  ------------------
  148|     10|					return;
  149|     10|				}
  150|    282|				GC_ADDREF(myht);
  ------------------
  |  |  718|    282|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  151|    282|				GC_PROTECT_RECURSION(myht);
  ------------------
  |  |  889|    282|#define GC_PROTECT_RECURSION(p) do { \
  |  |  890|    282|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  780|    282|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  781|    282|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    282|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    282|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  782|    282|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (782:11): [Folded, False: 282]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  891|    282|	} while (0)
  |  |  ------------------
  |  |  |  Branch (891:11): [Folded, False: 282]
  |  |  ------------------
  ------------------
  152|    282|			}
  153|    306|			count = zend_hash_num_elements(myht);
  154|    306|			php_printf("%sarray(%d) {\n", COMMON, count);
  ------------------
  |  |   38|    306|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 3, False: 303]
  |  |  ------------------
  ------------------
  155|  1.76k|			ZEND_HASH_FOREACH_KEY_VAL(myht, num, key, val) {
  ------------------
  |  | 1196|    738|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|    306|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|    306|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|    306|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|    306|		zend_ulong __h; \
  |  |  |  |  |  | 1048|    306|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|    306|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|    306|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|    306|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    306|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    306|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    306|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|    306|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|    306|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    306|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|  1.04k|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 738, False: 306]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|    738|			zval *_z = __z; \
  |  |  |  |  |  | 1055|    738|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    738|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    738|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    738|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 500, False: 238]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|    500|				__z++; \
  |  |  |  |  |  | 1057|    500|				__h = _idx; \
  |  |  |  |  |  | 1058|    500|				_idx++; \
  |  |  |  |  |  | 1059|    500|			} else { \
  |  |  |  |  |  | 1060|    238|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|    238|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|    238|				__h = _p->h; \
  |  |  |  |  |  | 1063|    238|				__key = _p->key; \
  |  |  |  |  |  | 1064|    238|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    238|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 238]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|    238|			} \
  |  |  |  |  |  | 1068|    738|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|    738|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|    738|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 18, False: 720]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|    720|	_h = __h; \
  |  | 1198|    720|	_key = __key; \
  |  | 1199|    720|	_val = _z;
  ------------------
  156|  1.76k|				php_array_element_dump(val, num, key, level);
  157|  1.76k|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    720|		} \
  |  | 1102|    306|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 306]
  |  |  ------------------
  ------------------
  158|    306|			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|    306|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|    306|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|    306|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (158:8): [True: 282, False: 24]
  ------------------
  159|    282|				GC_UNPROTECT_RECURSION(myht);
  ------------------
  |  |  893|    282|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  894|    282|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  783|    282|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  784|    282|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|    282|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    282|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  785|    282|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (785:11): [Folded, False: 282]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  895|    282|	} while (0)
  |  |  ------------------
  |  |  |  Branch (895:11): [Folded, False: 282]
  |  |  ------------------
  ------------------
  160|    282|				GC_DTOR_NO_REF(myht);
  ------------------
  |  |  736|    282|	do { \
  |  |  737|    282|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|    282|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 282]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|    282|		} else { \
  |  |  741|    282|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|    282|		} \
  |  |  743|    282|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 282]
  |  |  ------------------
  ------------------
  161|    282|			}
  162|    306|			if (level > 1) {
  ------------------
  |  Branch (162:8): [True: 99, False: 207]
  ------------------
  163|     99|				php_printf("%*c", level-1, ' ');
  164|     99|			}
  165|    306|			PUTS("}\n");
  ------------------
  |  |  162|    306|#define PUTS(str)					do {				\
  |  |  163|    306|	const char *__str = (str);							\
  |  |  164|    306|	php_output_write(__str, strlen(__str));	\
  |  |  165|    306|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 306]
  |  |  ------------------
  ------------------
  166|    306|			break;
  167|    317|		case IS_OBJECT: {
  ------------------
  |  |  614|    317|#define IS_OBJECT					8
  ------------------
  |  Branch (167:3): [True: 317, False: 2.10M]
  ------------------
  168|    317|			zend_class_entry *ce = Z_OBJCE_P(struc);
  ------------------
  |  | 1012|    317|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|    317|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    317|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|    317|			if ((ce->ce_flags & ZEND_ACC_ENUM) && ce->__debugInfo == NULL) {
  ------------------
  |  |  284|    317|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (169:8): [True: 33, False: 284]
  |  Branch (169:42): [True: 30, False: 3]
  ------------------
  170|     30|				zval *case_name_zval = zend_enum_fetch_case_name(Z_OBJ_P(struc));
  ------------------
  |  | 1000|     30|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     30|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  171|     30|				php_printf("%senum(%s::%s)\n", COMMON, ZSTR_VAL(ce->name), Z_STRVAL_P(case_name_zval));
  ------------------
  |  |   38|     30|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 2, False: 28]
  |  |  ------------------
  ------------------
              				php_printf("%senum(%s::%s)\n", COMMON, ZSTR_VAL(ce->name), Z_STRVAL_P(case_name_zval));
  ------------------
  |  |   67|     30|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				php_printf("%senum(%s::%s)\n", COMMON, ZSTR_VAL(ce->name), Z_STRVAL_P(case_name_zval));
  ------------------
  |  |  985|     30|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|     30|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|     30|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|     30|				return;
  173|     30|			}
  174|    287|			zend_object *zobj = Z_OBJ_P(struc);
  ------------------
  |  | 1000|    287|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    287|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  175|    287|			uint32_t *guard = zend_get_recursion_guard(zobj);
  176|    287|			if (ZEND_GUARD_OR_GC_IS_RECURSIVE(guard, DEBUG, zobj)) {
  ------------------
  |  |  913|    287|	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  654|     25|#define ZEND_GUARD_IS_RECURSIVE(pg, t)			((*pg & ZEND_GUARD_RECURSION_TYPE(t)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|     25|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|     25|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  887|    262|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|    262|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|    262|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|    262|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (913:2): [True: 15, False: 272]
  |  |  |  Branch (913:3): [True: 25, False: 262]
  |  |  ------------------
  ------------------
  177|     15|				PUTS("*RECURSION*\n");
  ------------------
  |  |  162|     15|#define PUTS(str)					do {				\
  |  |  163|     15|	const char *__str = (str);							\
  |  |  164|     15|	php_output_write(__str, strlen(__str));	\
  |  |  165|     15|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 15]
  |  |  ------------------
  ------------------
  178|     15|				return;
  179|     15|			}
  180|    272|			ZEND_GUARD_OR_GC_PROTECT_RECURSION(guard, DEBUG, zobj);
  ------------------
  |  |  915|    272|#define ZEND_GUARD_OR_GC_PROTECT_RECURSION(pg, t, zobj) do { \
  |  |  916|    272|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (916:7): [True: 24, False: 248]
  |  |  ------------------
  |  |  917|     24|			ZEND_GUARD_PROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  655|     24|#define ZEND_GUARD_PROTECT_RECURSION(pg, t)		*pg |= ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|     24|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|     24|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  918|    248|		} else { \
  |  |  919|    248|			GC_PROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  889|    248|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  890|    248|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  780|    248|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  781|    248|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|    248|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|    248|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  782|    248|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 248]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  891|    248|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (891:11): [Folded, False: 248]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  920|    248|		} \
  |  |  921|    272|	} while(0)
  |  |  ------------------
  |  |  |  Branch (921:10): [Folded, False: 272]
  |  |  ------------------
  ------------------
  181|       |
  182|    272|			myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_DEBUG);
  183|    272|			if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|    272|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (183:8): [True: 3, False: 269]
  ------------------
  184|      3|				zval *case_name_zval = zend_enum_fetch_case_name(Z_OBJ_P(struc));
  ------------------
  |  | 1000|      3|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      3|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  185|      3|				php_printf("%senum(%s::%s) (%d) {\n", COMMON, ZSTR_VAL(ce->name), Z_STRVAL_P(case_name_zval), myht ? zend_array_count(myht) : 0);
  ------------------
  |  |   38|      3|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 0, False: 3]
  |  |  ------------------
  ------------------
              				php_printf("%senum(%s::%s) (%d) {\n", COMMON, ZSTR_VAL(ce->name), Z_STRVAL_P(case_name_zval), myht ? zend_array_count(myht) : 0);
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				php_printf("%senum(%s::%s) (%d) {\n", COMMON, ZSTR_VAL(ce->name), Z_STRVAL_P(case_name_zval), myht ? zend_array_count(myht) : 0);
  ------------------
  |  |  985|      3|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      3|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (185:99): [True: 3, False: 0]
  ------------------
  186|    269|			} else {
  187|    269|				class_name = Z_OBJ_HANDLER_P(struc, get_class_name)(Z_OBJ_P(struc));
  ------------------
  |  | 1006|    269|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|    269|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|    269|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|    269|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				class_name = Z_OBJ_HANDLER_P(struc, get_class_name)(Z_OBJ_P(struc));
  ------------------
  |  | 1000|    269|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    269|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  188|    269|				const char *prefix = php_var_dump_object_prefix(Z_OBJ_P(struc));
  ------------------
  |  | 1000|    269|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    269|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  189|       |
  190|    269|				php_printf("%s%sobject(%s)#%d (%d) {\n", COMMON, prefix, ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0);
  ------------------
  |  |   38|    269|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 4, False: 265]
  |  |  ------------------
  ------------------
              				php_printf("%s%sobject(%s)#%d (%d) {\n", COMMON, prefix, ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0);
  ------------------
  |  |   67|    269|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				php_printf("%s%sobject(%s)#%d (%d) {\n", COMMON, prefix, ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0);
  ------------------
  |  | 1009|    269|#define Z_OBJ_HANDLE_P(zval_p)      Z_OBJ_HANDLE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1008|    269|#define Z_OBJ_HANDLE(zval)          (Z_OBJ((zval)))->handle
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|    269|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (190:107): [True: 259, False: 10]
  ------------------
  191|    269|				zend_string_release_ex(class_name, 0);
  192|    269|			}
  193|       |
  194|    272|			if (myht) {
  ------------------
  |  Branch (194:8): [True: 262, False: 10]
  ------------------
  195|    262|				zend_ulong num;
  196|    262|				zend_string *key;
  197|    262|				zval *val;
  198|       |
  199|  4.19M|				ZEND_HASH_FOREACH_KEY_VAL(myht, num, key, val) {
  ------------------
  |  | 1196|  2.09M|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|    262|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|    262|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|    262|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|    262|		zend_ulong __h; \
  |  |  |  |  |  | 1048|    262|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|    262|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|    262|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|    262|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|    262|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    262|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|    262|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|    262|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|    262|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|    262|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|  2.09M|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 2.09M, False: 262]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|  2.09M|			zval *_z = __z; \
  |  |  |  |  |  | 1055|  2.09M|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  2.09M|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|  2.09M|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|  2.09M|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 2.09M, False: 237]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|  2.09M|				__z++; \
  |  |  |  |  |  | 1057|  2.09M|				__h = _idx; \
  |  |  |  |  |  | 1058|  2.09M|				_idx++; \
  |  |  |  |  |  | 1059|  2.09M|			} else { \
  |  |  |  |  |  | 1060|    237|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|    237|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|    237|				__h = _p->h; \
  |  |  |  |  |  | 1063|    237|				__key = _p->key; \
  |  |  |  |  |  | 1064|    237|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|    237|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 237]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|    237|			} \
  |  |  |  |  |  | 1068|  2.09M|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|  2.09M|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  2.09M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.09M]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|  2.09M|	_h = __h; \
  |  | 1198|  2.09M|	_key = __key; \
  |  | 1199|  2.09M|	_val = _z;
  ------------------
  200|  4.19M|					zend_property_info *prop_info = NULL;
  201|       |
  202|  4.19M|					if (Z_TYPE_P(val) == IS_INDIRECT) {
  ------------------
  |  |  669|  2.09M|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.09M|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(val) == IS_INDIRECT) {
  ------------------
  |  |  629|  2.09M|#define IS_INDIRECT             	12
  ------------------
  |  Branch (202:10): [True: 109, False: 2.09M]
  ------------------
  203|    109|						val = Z_INDIRECT_P(val);
  ------------------
  |  | 1044|    109|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|    109|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  204|    109|						if (key) {
  ------------------
  |  Branch (204:11): [True: 109, False: 0]
  ------------------
  205|    109|							prop_info = zend_get_typed_property_info_for_slot(Z_OBJ_P(struc), val);
  ------------------
  |  | 1000|    109|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|    109|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  206|    109|						}
  207|    109|					}
  208|       |
  209|  4.19M|					if (!Z_ISUNDEF_P(val) || prop_info) {
  ------------------
  |  |  967|  2.09M|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|  4.19M|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|  2.09M|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|  2.09M|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (209:10): [True: 2.09M, False: 7]
  |  Branch (209:31): [True: 7, False: 0]
  ------------------
  210|  2.09M|						php_object_property_dump(prop_info, val, num, key, level);
  211|  2.09M|					}
  212|  4.19M|				} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|  2.09M|		} \
  |  | 1102|    262|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 262]
  |  |  ------------------
  ------------------
  213|    262|				zend_release_properties(myht);
  ------------------
  |  |  338|    262|#define zend_release_properties(ht) do { \
  |  |  339|    262|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 262, False: 0]
  |  |  ------------------
  |  |  340|    262|		zend_array_release(ht); \
  |  |  341|    262|	} \
  |  |  342|    262|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 262]
  |  |  ------------------
  ------------------
  214|    262|			}
  215|    272|			if (level > 1) {
  ------------------
  |  Branch (215:8): [True: 71, False: 201]
  ------------------
  216|     71|				php_printf("%*c", level-1, ' ');
  217|     71|			}
  218|    272|			PUTS("}\n");
  ------------------
  |  |  162|    272|#define PUTS(str)					do {				\
  |  |  163|    272|	const char *__str = (str);							\
  |  |  164|    272|	php_output_write(__str, strlen(__str));	\
  |  |  165|    272|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 272]
  |  |  ------------------
  ------------------
  219|    272|			ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(guard, DEBUG, zobj);
  ------------------
  |  |  923|    272|#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj) do { \
  |  |  924|    272|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (924:7): [True: 23, False: 249]
  |  |  ------------------
  |  |  925|     23|			ZEND_GUARD_UNPROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  656|     23|#define ZEND_GUARD_UNPROTECT_RECURSION(pg, t)	*pg &= ~ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|     23|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|     23|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  926|    249|		} else { \
  |  |  927|    249|			GC_UNPROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  893|    249|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|    249|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|    249|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|    249|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|    249|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|    249|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|    249|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 249]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|    249|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 249]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|    249|		} \
  |  |  929|    272|	} while(0)
  |  |  ------------------
  |  |  |  Branch (929:10): [Folded, False: 272]
  |  |  ------------------
  ------------------
  220|    272|			break;
  221|    287|		}
  222|      0|		case IS_RESOURCE: {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (222:3): [True: 0, False: 2.10M]
  ------------------
  223|      0|			const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(struc));
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  224|      0|			php_printf("%sresource(" ZEND_LONG_FMT ") of type (%s)\n", COMMON, Z_RES_P(struc)->handle, type_name ? type_name : "Unknown");
  ------------------
  |  |   38|      0|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			php_printf("%sresource(" ZEND_LONG_FMT ") of type (%s)\n", COMMON, Z_RES_P(struc)->handle, type_name ? type_name : "Unknown");
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  |  Branch (224:95): [True: 0, False: 0]
  ------------------
  225|      0|			break;
  226|    287|		}
  227|    111|		case IS_REFERENCE:
  ------------------
  |  |  616|    111|#define IS_REFERENCE				10
  ------------------
  |  Branch (227:3): [True: 111, False: 2.10M]
  ------------------
  228|       |			//??? hide references with refcount==1 (for compatibility)
  229|    111|			if (Z_REFCOUNT_P(struc) > 1) {
  ------------------
  |  | 1275|    111|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (229:8): [True: 76, False: 35]
  ------------------
  230|     76|				is_ref = 1;
  231|     76|			}
  232|    111|			struc = Z_REFVAL_P(struc);
  ------------------
  |  | 1033|    111|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|    111|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    111|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  233|    111|			goto again;
  234|      0|		default:
  ------------------
  |  Branch (234:3): [True: 0, False: 2.10M]
  ------------------
  235|      0|			php_printf("%sUNKNOWN:0\n", COMMON);
  ------------------
  |  |   38|      0|#define COMMON (is_ref ? "&" : "")
  |  |  ------------------
  |  |  |  Branch (38:17): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  236|      0|			break;
  237|  2.10M|	}
  238|  2.10M|}
zif_var_dump:
  243|  2.12k|{
  244|  2.12k|	zval *args;
  245|  2.12k|	int argc;
  246|  2.12k|	int	i;
  247|       |
  248|  6.36k|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|  2.12k|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|  2.12k|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|  2.12k|		const int _flags = (flags); \
  |  |  |  | 1599|  2.12k|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|  2.12k|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|  2.12k|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|  2.12k|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|  2.12k|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|  2.12k|		uint32_t _i = 0; \
  |  |  |  | 1603|  2.12k|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|  2.12k|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|  2.12k|		char *_error = NULL; \
  |  |  |  | 1606|  2.12k|		bool _dummy = 0; \
  |  |  |  | 1607|  2.12k|		bool _optional = 0; \
  |  |  |  | 1608|  2.12k|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|  2.12k|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|  2.12k|		((void)_i); \
  |  |  |  | 1610|  2.12k|		((void)_real_arg); \
  |  |  |  | 1611|  2.12k|		((void)_arg); \
  |  |  |  | 1612|  2.12k|		((void)_expected_type); \
  |  |  |  | 1613|  2.12k|		((void)_error); \
  |  |  |  | 1614|  2.12k|		((void)_optional); \
  |  |  |  | 1615|  2.12k|		((void)_dummy); \
  |  |  |  | 1616|  2.12k|		\
  |  |  |  | 1617|  2.12k|		do { \
  |  |  |  | 1618|  2.12k|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  4.24k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|  2.12k|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.11k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|  2.12k|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|  2.12k|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|  2.12k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|  2.11k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|  6.36k|		Z_PARAM_VARIADIC('+', args, argc)
  ------------------
  |  | 2140|  2.11k|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|  2.11k|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|  2.11k|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|  2.11k|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|  2.11k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 2.11k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|  2.11k|			dest = _real_arg + 1; \
  |  |  |  | 2126|  2.11k|			dest_num = _num_varargs; \
  |  |  |  | 2127|  2.11k|			_i += _num_varargs; \
  |  |  |  | 2128|  2.11k|			_real_arg += _num_varargs; \
  |  |  |  | 2129|  2.11k|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|  2.11k|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.11k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|  2.11k|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 2.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  6.36k|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|  2.11k|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|  2.11k|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  2.11k|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|  2.11k|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2.11k]
  |  |  |  |  ------------------
  |  |  |  | 1641|  2.12k|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|  2.12k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 2.11k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|  2.12k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2.11k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (250:2): [True: 2.11k, False: 0]
  |  Branch (250:2): [True: 0, False: 0]
  |  Branch (250:2): [True: 0, False: 2.11k]
  |  Branch (250:2): [True: 2.11k, False: 0]
  ------------------
  251|       |
  252|  4.34k|	for (i = 0; i < argc; i++) {
  ------------------
  |  Branch (252:14): [True: 2.22k, False: 2.11k]
  ------------------
  253|  2.22k|		php_var_dump(&args[i], 1);
  254|  2.22k|	}
  255|  2.11k|}
php_debug_zval_dump:
  304|     17|{
  305|     17|	HashTable *myht = NULL;
  306|     17|	zend_string *class_name;
  307|     17|	zend_ulong index;
  308|     17|	zend_string *key;
  309|     17|	zval *val;
  310|     17|	uint32_t count;
  311|     17|	char *packed;
  312|       |
  313|     17|	if (level > 1) {
  ------------------
  |  Branch (313:6): [True: 6, False: 11]
  ------------------
  314|      6|		php_printf("%*c", level - 1, ' ');
  315|      6|	}
  316|       |
  317|     17|	switch (Z_TYPE_P(struc)) {
  ------------------
  |  |  669|     17|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     17|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  318|      0|	case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (318:2): [True: 0, False: 17]
  ------------------
  319|      0|		PUTS("bool(false)\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  320|      0|		break;
  321|      0|	case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (321:2): [True: 0, False: 17]
  ------------------
  322|      0|		PUTS("bool(true)\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  323|      0|		break;
  324|      0|	case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (324:2): [True: 0, False: 17]
  ------------------
  325|      0|		PUTS("NULL\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  326|      0|		break;
  327|      0|	case IS_LONG:
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (327:2): [True: 0, False: 17]
  ------------------
  328|      0|		php_printf("int(" ZEND_LONG_FMT ")\n", Z_LVAL_P(struc));
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  329|      0|		break;
  330|      0|	case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (330:2): [True: 0, False: 17]
  ------------------
  331|      0|		php_printf_unchecked("float(%.*H)\n", (int) PG(serialize_precision), Z_DVAL_P(struc));
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		php_printf_unchecked("float(%.*H)\n", (int) PG(serialize_precision), Z_DVAL_P(struc));
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
  332|      0|		break;
  333|      6|	case IS_STRING:
  ------------------
  |  |  612|      6|#define IS_STRING					6
  ------------------
  |  Branch (333:2): [True: 6, False: 11]
  ------------------
  334|      6|		php_printf("string(%zd) \"", Z_STRLEN_P(struc));
  ------------------
  |  |  988|      6|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      6|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  335|      6|		PHPWRITE(Z_STRVAL_P(struc), Z_STRLEN_P(struc));
  ------------------
  |  |  156|      6|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  336|      6|		if (Z_REFCOUNTED_P(struc)) {
  ------------------
  |  |  942|      6|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      6|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      6|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  337|      6|			php_printf("\" refcount(%u)\n", Z_REFCOUNT_P(struc));
  ------------------
  |  | 1275|      6|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  338|      6|		} else {
  339|      0|			PUTS("\" interned\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  340|      0|		}
  341|      6|		break;
  342|      0|	case IS_ARRAY:
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (342:2): [True: 0, False: 17]
  ------------------
  343|      0|		myht = Z_ARRVAL_P(struc);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  344|      0|		if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (344:7): [True: 0, False: 0]
  ------------------
  345|      0|			if (GC_IS_RECURSIVE(myht)) {
  ------------------
  |  |  887|      0|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|      0|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  346|      0|				PUTS("*RECURSION*\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  347|      0|				return;
  348|      0|			}
  349|      0|			GC_ADDREF(myht);
  ------------------
  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  350|      0|			GC_PROTECT_RECURSION(myht);
  ------------------
  |  |  889|      0|#define GC_PROTECT_RECURSION(p) do { \
  |  |  890|      0|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  782|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  891|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (891:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  351|      0|		}
  352|      0|		count = zend_hash_num_elements(myht);
  353|      0|		packed = HT_IS_PACKED(myht) ? "packed " : "";
  ------------------
  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  354|      0|		if (Z_REFCOUNTED_P(struc)) {
  ------------------
  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|       |			/* -1 because of ADDREF above. */
  356|      0|			php_printf("array(%d) %srefcount(%u){\n", count, packed, Z_REFCOUNT_P(struc) - 1);
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  357|      0|		} else {
  358|      0|			php_printf("array(%d) %sinterned {\n", count, packed);
  359|      0|		}
  360|      0|		ZEND_HASH_FOREACH_KEY_VAL(myht, index, key, val) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
  361|      0|			zval_array_element_dump(val, index, key, level);
  362|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  363|      0|		if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              		if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (363:7): [True: 0, False: 0]
  ------------------
  364|      0|			GC_UNPROTECT_RECURSION(myht);
  ------------------
  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  365|      0|			GC_DTOR_NO_REF(myht);
  ------------------
  |  |  736|      0|	do { \
  |  |  737|      0|		zend_refcounted_h *_p = &(p)->gc; \
  |  |  738|      0|		if (zend_gc_delref(_p) == 0) { \
  |  |  ------------------
  |  |  |  Branch (738:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|			rc_dtor_func((zend_refcounted *)_p); \
  |  |  740|      0|		} else { \
  |  |  741|      0|			gc_check_possible_root_no_ref((zend_refcounted *)_p); \
  |  |  742|      0|		} \
  |  |  743|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (743:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  366|      0|		}
  367|      0|		if (level > 1) {
  ------------------
  |  Branch (367:7): [True: 0, False: 0]
  ------------------
  368|      0|			php_printf("%*c", level - 1, ' ');
  369|      0|		}
  370|      0|		PUTS("}\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  371|      0|		break;
  372|     11|	case IS_OBJECT: {
  ------------------
  |  |  614|     11|#define IS_OBJECT					8
  ------------------
  |  Branch (372:2): [True: 11, False: 6]
  ------------------
  373|       |		/* Check if this is already recursing on the object before calling zend_get_properties_for,
  374|       |		 * to allow infinite recursion detection to work even if classes return temporary arrays,
  375|       |		 * and to avoid the need to update the properties table in place to reflect the state
  376|       |		 * if the result won't be used. (https://github.com/php/php-src/issues/8044) */
  377|     11|		zend_object *zobj = Z_OBJ_P(struc);
  ------------------
  |  | 1000|     11|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     11|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  378|     11|		uint32_t *guard = zend_get_recursion_guard(zobj);
  379|     11|		if (ZEND_GUARD_OR_GC_IS_RECURSIVE(guard, DEBUG, zobj)) {
  ------------------
  |  |  913|     11|	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  654|      0|#define ZEND_GUARD_IS_RECURSIVE(pg, t)			((*pg & ZEND_GUARD_RECURSION_TYPE(t)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|      0|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  887|     11|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|     11|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     11|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|     11|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (913:2): [True: 0, False: 11]
  |  |  |  Branch (913:3): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  380|      0|			PUTS("*RECURSION*\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  381|      0|			return;
  382|      0|		}
  383|     11|		ZEND_GUARD_OR_GC_PROTECT_RECURSION(guard, DEBUG, zobj);
  ------------------
  |  |  915|     11|#define ZEND_GUARD_OR_GC_PROTECT_RECURSION(pg, t, zobj) do { \
  |  |  916|     11|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (916:7): [True: 0, False: 11]
  |  |  ------------------
  |  |  917|      0|			ZEND_GUARD_PROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  655|      0|#define ZEND_GUARD_PROTECT_RECURSION(pg, t)		*pg |= ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|      0|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  918|     11|		} else { \
  |  |  919|     11|			GC_PROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  889|     11|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  890|     11|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  780|     11|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  781|     11|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     11|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  782|     11|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  891|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (891:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  920|     11|		} \
  |  |  921|     11|	} while(0)
  |  |  ------------------
  |  |  |  Branch (921:10): [Folded, False: 11]
  |  |  ------------------
  ------------------
  384|       |
  385|     11|		myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_DEBUG);
  386|     11|		class_name = Z_OBJ_HANDLER_P(struc, get_class_name)(Z_OBJ_P(struc));
  ------------------
  |  | 1006|     11|#define Z_OBJ_HANDLER_P(zv_p, hf)	Z_OBJ_HANDLER(*(zv_p), hf)
  |  |  ------------------
  |  |  |  | 1005|     11|#define Z_OBJ_HANDLER(zval, hf)		Z_OBJ_HT((zval))->hf
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|     11|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|     11|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		class_name = Z_OBJ_HANDLER_P(struc, get_class_name)(Z_OBJ_P(struc));
  ------------------
  |  | 1000|     11|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     11|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  387|     11|		const char *prefix = php_var_dump_object_prefix(Z_OBJ_P(struc));
  ------------------
  |  | 1000|     11|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|     11|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  388|       |
  389|     11|		php_printf("%sobject(%s)#%d (%d) refcount(%u){\n", prefix, ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0, Z_REFCOUNT_P(struc));
  ------------------
  |  |   67|     11|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		php_printf("%sobject(%s)#%d (%d) refcount(%u){\n", prefix, ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0, Z_REFCOUNT_P(struc));
  ------------------
  |  | 1009|     11|#define Z_OBJ_HANDLE_P(zval_p)      Z_OBJ_HANDLE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1008|     11|#define Z_OBJ_HANDLE(zval)          (Z_OBJ((zval)))->handle
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|     11|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		php_printf("%sobject(%s)#%d (%d) refcount(%u){\n", prefix, ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0, Z_REFCOUNT_P(struc));
  ------------------
  |  | 1275|     11|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (389:107): [True: 11, False: 0]
  ------------------
  390|     11|		zend_string_release_ex(class_name, 0);
  391|     11|		if (myht) {
  ------------------
  |  Branch (391:7): [True: 11, False: 0]
  ------------------
  392|     23|			ZEND_HASH_FOREACH_KEY_VAL(myht, index, key, val) {
  ------------------
  |  | 1196|      6|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|     11|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     11|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     11|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     11|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     11|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     11|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     11|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     11|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     11|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     11|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     11|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     11|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     11|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     11|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     17|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 6, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      6|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      6|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      6|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      6|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      6|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      6|			} else { \
  |  |  |  |  |  | 1060|      6|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      6|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      6|				__h = _p->h; \
  |  |  |  |  |  | 1063|      6|				__key = _p->key; \
  |  |  |  |  |  | 1064|      6|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      6|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 6]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      6|			} \
  |  |  |  |  |  | 1068|      6|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      6|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      6|	_h = __h; \
  |  | 1198|      6|	_key = __key; \
  |  | 1199|      6|	_val = _z;
  ------------------
  393|     23|				zend_property_info *prop_info = NULL;
  394|       |
  395|     23|				if (Z_TYPE_P(val) == IS_INDIRECT) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(val) == IS_INDIRECT) {
  ------------------
  |  |  629|      6|#define IS_INDIRECT             	12
  ------------------
  |  Branch (395:9): [True: 6, False: 0]
  ------------------
  396|      6|					val = Z_INDIRECT_P(val);
  ------------------
  |  | 1044|      6|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      6|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  397|      6|					if (key) {
  ------------------
  |  Branch (397:10): [True: 6, False: 0]
  ------------------
  398|      6|						prop_info = zend_get_typed_property_info_for_slot(Z_OBJ_P(struc), val);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  399|      6|					}
  400|      6|				}
  401|       |
  402|     23|				if (!Z_ISUNDEF_P(val) || prop_info) {
  ------------------
  |  |  967|      6|#define Z_ISUNDEF_P(zval_p)			Z_ISUNDEF(*(zval_p))
  |  |  ------------------
  |  |  |  |  966|     12|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  |  |  ------------------
  |  |  |  |  |  |  606|      6|#define IS_UNDEF					0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (402:9): [True: 6, False: 0]
  |  Branch (402:30): [True: 0, False: 0]
  ------------------
  403|      6|					zval_object_property_dump(prop_info, val, index, key, level);
  404|      6|				}
  405|     23|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      6|		} \
  |  | 1102|     11|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 11]
  |  |  ------------------
  ------------------
  406|     11|			zend_release_properties(myht);
  ------------------
  |  |  338|     11|#define zend_release_properties(ht) do { \
  |  |  339|     11|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 11, False: 0]
  |  |  ------------------
  |  |  340|     11|		zend_array_release(ht); \
  |  |  341|     11|	} \
  |  |  342|     11|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 11]
  |  |  ------------------
  ------------------
  407|     11|		}
  408|     11|		if (level > 1) {
  ------------------
  |  Branch (408:7): [True: 0, False: 11]
  ------------------
  409|      0|			php_printf("%*c", level - 1, ' ');
  410|      0|		}
  411|     11|		PUTS("}\n");
  ------------------
  |  |  162|     11|#define PUTS(str)					do {				\
  |  |  163|     11|	const char *__str = (str);							\
  |  |  164|     11|	php_output_write(__str, strlen(__str));	\
  |  |  165|     11|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 11]
  |  |  ------------------
  ------------------
  412|     11|		ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(guard, DEBUG, zobj);
  ------------------
  |  |  923|     11|#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj) do { \
  |  |  924|     11|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (924:7): [True: 0, False: 11]
  |  |  ------------------
  |  |  925|      0|			ZEND_GUARD_UNPROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  656|      0|#define ZEND_GUARD_UNPROTECT_RECURSION(pg, t)	*pg &= ~ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  648|      0|#define ZEND_GUARD_RECURSION_DEBUG	(1<<5)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  926|     11|		} else { \
  |  |  927|     11|			GC_UNPROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  893|     11|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|     11|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|     11|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|     11|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|     11|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|     11|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|     11|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|     11|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|     11|		} \
  |  |  929|     11|	} while(0)
  |  |  ------------------
  |  |  |  Branch (929:10): [Folded, False: 11]
  |  |  ------------------
  ------------------
  413|     11|		break;
  414|     11|	}
  415|      0|	case IS_RESOURCE: {
  ------------------
  |  |  615|      0|#define IS_RESOURCE					9
  ------------------
  |  Branch (415:2): [True: 0, False: 17]
  ------------------
  416|      0|		const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(struc));
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
  417|      0|		php_printf("resource(" ZEND_LONG_FMT ") of type (%s) refcount(%u)\n", Z_RES_P(struc)->handle, type_name ? type_name : "Unknown", Z_REFCOUNT_P(struc));
  ------------------
  |  | 1018|      0|#define Z_RES_P(zval_p)				Z_RES(*zval_p)
  |  |  ------------------
  |  |  |  | 1017|      0|#define Z_RES(zval)					(zval).value.res
  |  |  ------------------
  ------------------
              		php_printf("resource(" ZEND_LONG_FMT ") of type (%s) refcount(%u)\n", Z_RES_P(struc)->handle, type_name ? type_name : "Unknown", Z_REFCOUNT_P(struc));
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (417:97): [True: 0, False: 0]
  ------------------
  418|      0|		break;
  419|     11|	}
  420|      0|	case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (420:2): [True: 0, False: 17]
  ------------------
  421|      0|		php_printf("reference refcount(%u) {\n", Z_REFCOUNT_P(struc));
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  422|      0|		php_debug_zval_dump(Z_REFVAL_P(struc), level + 2);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  423|      0|		if (level > 1) {
  ------------------
  |  Branch (423:7): [True: 0, False: 0]
  ------------------
  424|      0|			php_printf("%*c", level - 1, ' ');
  425|      0|		}
  426|      0|		PUTS("}\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  427|      0|		break;
  428|      0|	default:
  ------------------
  |  Branch (428:2): [True: 0, False: 17]
  ------------------
  429|      0|		PUTS("UNKNOWN:0\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  430|      0|		break;
  431|     17|	}
  432|     17|}
zif_debug_zval_dump:
  437|     10|{
  438|     10|	zval *args;
  439|     10|	int argc;
  440|     10|	int	i;
  441|       |
  442|     30|	ZEND_PARSE_PARAMETERS_START(1, -1)
  ------------------
  |  | 1629|     10|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     10|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     10|		const int _flags = (flags); \
  |  |  |  | 1599|     10|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     10|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     10|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     10|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     10|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     10|		uint32_t _i = 0; \
  |  |  |  | 1603|     10|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     10|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     10|		char *_error = NULL; \
  |  |  |  | 1606|     10|		bool _dummy = 0; \
  |  |  |  | 1607|     10|		bool _optional = 0; \
  |  |  |  | 1608|     10|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     10|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     10|		((void)_i); \
  |  |  |  | 1610|     10|		((void)_real_arg); \
  |  |  |  | 1611|     10|		((void)_arg); \
  |  |  |  | 1612|     10|		((void)_expected_type); \
  |  |  |  | 1613|     10|		((void)_error); \
  |  |  |  | 1614|     10|		((void)_optional); \
  |  |  |  | 1615|     10|		((void)_dummy); \
  |  |  |  | 1616|     10|		\
  |  |  |  | 1617|     10|		do { \
  |  |  |  | 1618|     10|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     20|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     10|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     10|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     10|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     10|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     10|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  443|     30|		Z_PARAM_VARIADIC('+', args, argc)
  ------------------
  |  | 2140|     10|	Z_PARAM_VARIADIC_EX(spec, dest, dest_num, 0)
  |  |  ------------------
  |  |  |  | 2122|     10|#define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \
  |  |  |  | 2123|     10|		uint32_t _num_varargs = _num_args - _i - (post_varargs); \
  |  |  |  | 2124|     10|		if (EXPECTED(_num_varargs > 0)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  456|     10|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (456:32): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2125|     10|			dest = _real_arg + 1; \
  |  |  |  | 2126|     10|			dest_num = _num_varargs; \
  |  |  |  | 2127|     10|			_i += _num_varargs; \
  |  |  |  | 2128|     10|			_real_arg += _num_varargs; \
  |  |  |  | 2129|     10|		} else { \
  |  |  |  | 2130|      0|			dest = NULL; \
  |  |  |  | 2131|      0|			dest_num = 0; \
  |  |  |  | 2132|      0|		} \
  |  |  |  | 2133|     10|		if (UNEXPECTED(ZEND_CALL_INFO(execute_data) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2134|      0|			_error_code = ZPP_ERROR_UNEXPECTED_EXTRA_NAMED; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1594|      0|#define ZPP_ERROR_UNEXPECTED_EXTRA_NAMED        11
  |  |  |  |  ------------------
  |  |  |  | 2135|      0|			break; \
  |  |  |  | 2136|      0|		} \
  |  |  |  | 2137|     10|	} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2137:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  444|     30|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     10|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     10|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     10|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     10|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 1641|     10|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (444:2): [True: 10, False: 0]
  |  Branch (444:2): [True: 0, False: 0]
  |  Branch (444:2): [True: 0, False: 10]
  |  Branch (444:2): [True: 10, False: 0]
  ------------------
  445|       |
  446|     21|	for (i = 0; i < argc; i++) {
  ------------------
  |  Branch (446:14): [True: 11, False: 10]
  ------------------
  447|     11|		php_debug_zval_dump(&args[i], 1);
  448|     11|	}
  449|     10|}
php_var_export_ex:
  519|     23|{
  520|     23|	HashTable *myht;
  521|     23|	zend_string *ztmp, *ztmp2;
  522|     23|	zend_ulong index;
  523|     23|	zend_string *key;
  524|     23|	zval *val;
  525|       |
  526|     23|again:
  527|     23|	switch (Z_TYPE_P(struc)) {
  ------------------
  |  |  669|     23|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     23|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  528|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (528:3): [True: 0, False: 23]
  ------------------
  529|      0|			smart_str_appendl(buf, "false", 5);
  530|      0|			break;
  531|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (531:3): [True: 0, False: 23]
  ------------------
  532|      0|			smart_str_appendl(buf, "true", 4);
  533|      0|			break;
  534|      2|		case IS_NULL:
  ------------------
  |  |  607|      2|#define IS_NULL						1
  ------------------
  |  Branch (534:3): [True: 2, False: 21]
  ------------------
  535|      2|			smart_str_appendl(buf, "NULL", 4);
  536|      2|			break;
  537|      4|		case IS_LONG:
  ------------------
  |  |  610|      4|#define IS_LONG						4
  ------------------
  |  Branch (537:3): [True: 4, False: 19]
  ------------------
  538|       |			/* INT_MIN as a literal will be parsed as a float. Emit something like
  539|       |			 * -9223372036854775807-1 to avoid this. */
  540|      4|			if (Z_LVAL_P(struc) == ZEND_LONG_MIN) {
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
              			if (Z_LVAL_P(struc) == ZEND_LONG_MIN) {
  ------------------
  |  |   35|      4|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (540:8): [True: 0, False: 4]
  ------------------
  541|      0|				smart_str_append_long(buf, ZEND_LONG_MIN+1);
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  542|      0|				smart_str_appends(buf, "-1");
  543|      0|				break;
  544|      0|			}
  545|      4|			smart_str_append_long(buf, Z_LVAL_P(struc));
  ------------------
  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  546|      4|			break;
  547|      0|		case IS_DOUBLE:
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (547:3): [True: 0, False: 23]
  ------------------
  548|      0|			smart_str_append_double(
  549|      0|				buf, Z_DVAL_P(struc), (int) PG(serialize_precision), /* zero_fraction */ true);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              				buf, Z_DVAL_P(struc), (int) PG(serialize_precision), /* zero_fraction */ true);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  550|      0|			break;
  551|      6|		case IS_STRING:
  ------------------
  |  |  612|      6|#define IS_STRING					6
  ------------------
  |  Branch (551:3): [True: 6, False: 17]
  ------------------
  552|      6|			ztmp = php_addcslashes(Z_STR_P(struc), "'\\", 2);
  ------------------
  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  553|      6|			ztmp2 = php_str_to_str(ZSTR_VAL(ztmp), ZSTR_LEN(ztmp), "\0", 1, "' . \"\\0\" . '", 12);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			ztmp2 = php_str_to_str(ZSTR_VAL(ztmp), ZSTR_LEN(ztmp), "\0", 1, "' . \"\\0\" . '", 12);
  ------------------
  |  |   68|      6|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  554|       |
  555|      6|			smart_str_appendc(buf, '\'');
  556|      6|			smart_str_append(buf, ztmp2);
  557|      6|			smart_str_appendc(buf, '\'');
  558|       |
  559|      6|			zend_string_free(ztmp);
  560|      6|			zend_string_free(ztmp2);
  561|      6|			break;
  562|      5|		case IS_ARRAY:
  ------------------
  |  |  613|      5|#define IS_ARRAY					7
  ------------------
  |  Branch (562:3): [True: 5, False: 18]
  ------------------
  563|      5|			myht = Z_ARRVAL_P(struc);
  ------------------
  |  |  997|      5|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      5|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      5|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  564|      5|			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|      5|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      5|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (564:8): [True: 5, False: 0]
  ------------------
  565|      5|				if (GC_IS_RECURSIVE(myht)) {
  ------------------
  |  |  887|      5|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  777|      5|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  ------------------
  |  |  |  |  800|      5|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  ------------------
  |  |  |  Branch (887:2): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  566|      0|					smart_str_appendl(buf, "NULL", 4);
  567|      0|					zend_error(E_WARNING, "var_export does not handle circular references");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  568|      0|					return SUCCESS;
  569|      0|				}
  570|      5|				GC_ADDREF(myht);
  ------------------
  |  |  718|      5|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  571|      5|				GC_PROTECT_RECURSION(myht);
  ------------------
  |  |  889|      5|#define GC_PROTECT_RECURSION(p) do { \
  |  |  890|      5|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  780|      5|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  781|      5|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  782|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (782:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  891|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (891:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  572|      5|			}
  573|      5|			if (level > 1) {
  ------------------
  |  Branch (573:8): [True: 2, False: 3]
  ------------------
  574|      2|				smart_str_appendc(buf, '\n');
  575|      2|				buffer_append_spaces(buf, level - 1);
  ------------------
  |  |  453|      2|	do { \
  |  |  454|      2|		char *tmp_spaces; \
  |  |  455|      2|		size_t tmp_spaces_len; \
  |  |  456|      2|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|      2|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|      2|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|      2|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|      2|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  576|      2|			}
  577|      5|			smart_str_appendl(buf, "array (\n", 8);
  578|     11|			ZEND_HASH_FOREACH_KEY_VAL(myht, index, key, val) {
  ------------------
  |  | 1196|      3|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      5|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      5|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      5|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      5|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      5|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      5|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      5|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      5|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      5|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      5|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      5|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      5|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      5|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      5|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      8|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 3, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      3|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      3|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      3|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 3, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      3|				__z++; \
  |  |  |  |  |  | 1057|      3|				__h = _idx; \
  |  |  |  |  |  | 1058|      3|				_idx++; \
  |  |  |  |  |  | 1059|      3|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      3|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      3|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      3|	_h = __h; \
  |  | 1198|      3|	_key = __key; \
  |  | 1199|      3|	_val = _z;
  ------------------
  579|     11|				if (php_array_element_export(val, index, key, level, buf) == FAILURE) {
  ------------------
  |  Branch (579:9): [True: 0, False: 3]
  ------------------
  580|      0|					if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              					if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      0|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (580:10): [True: 0, False: 0]
  ------------------
  581|      0|						GC_UNPROTECT_RECURSION(myht);
  ------------------
  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  895|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  582|      0|						GC_DELREF(myht);
  ------------------
  |  |  719|      0|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  583|      0|					}
  584|      0|					return FAILURE;
  585|      0|				}
  586|     11|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      3|		} \
  |  | 1102|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  587|      5|			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  777|      5|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  ------------------
  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  ------------------
              			if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
  ------------------
  |  |  801|      5|#define GC_IMMUTABLE                (1<<6) /* can't be changed in place */
  ------------------
  |  Branch (587:8): [True: 5, False: 0]
  ------------------
  588|      5|				GC_UNPROTECT_RECURSION(myht);
  ------------------
  |  |  893|      5|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  894|      5|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  ------------------
  |  |  |  |  783|      5|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  784|      5|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      5|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      5|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  |  |  785|      5|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (785:11): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  895|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (895:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  589|      5|				GC_DELREF(myht);
  ------------------
  |  |  719|      5|#define GC_DELREF(p)				zend_gc_delref(&(p)->gc)
  ------------------
  590|      5|			}
  591|      5|			if (level > 1) {
  ------------------
  |  Branch (591:8): [True: 2, False: 3]
  ------------------
  592|      2|				buffer_append_spaces(buf, level - 1);
  ------------------
  |  |  453|      2|	do { \
  |  |  454|      2|		char *tmp_spaces; \
  |  |  455|      2|		size_t tmp_spaces_len; \
  |  |  456|      2|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|      2|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|      2|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|      2|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|      2|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  593|      2|			}
  594|      5|			smart_str_appendc(buf, ')');
  595|       |
  596|      5|			break;
  597|       |
  598|      6|		case IS_OBJECT: {
  ------------------
  |  |  614|      6|#define IS_OBJECT					8
  ------------------
  |  Branch (598:3): [True: 6, False: 17]
  ------------------
  599|       |			/* Check if this is already recursing on the object before calling zend_get_properties_for,
  600|       |			 * to allow infinite recursion detection to work even if classes return temporary arrays,
  601|       |			 * and to avoid the need to update the properties table in place to reflect the state
  602|       |			 * if the result won't be used. (https://github.com/php/php-src/issues/8044) */
  603|      6|			zend_object *zobj = Z_OBJ_P(struc);
  ------------------
  |  | 1000|      6|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  604|      6|			uint32_t *guard = zend_get_recursion_guard(zobj);
  605|      6|			if (ZEND_GUARD_OR_GC_IS_RECURSIVE(guard, EXPORT, zobj)) {
  ------------------
  |  |  913|      6|	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  654|      0|#define ZEND_GUARD_IS_RECURSIVE(pg, t)			((*pg & ZEND_GUARD_RECURSION_TYPE(t)) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  649|      0|#define ZEND_GUARD_RECURSION_EXPORT	(1<<6)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               	(pg ? ZEND_GUARD_IS_RECURSIVE(pg, t) : GC_IS_RECURSIVE(zobj))
  |  |  ------------------
  |  |  |  |  887|      6|	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  777|      6|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	(GC_FLAGS(p) & GC_PROTECTED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|      6|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (913:2): [True: 0, False: 6]
  |  |  |  Branch (913:3): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  606|      0|				smart_str_appendl(buf, "NULL", 4);
  607|      0|				zend_error(E_WARNING, "var_export does not handle circular references");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  608|      0|				return SUCCESS;
  609|      0|			}
  610|      6|			ZEND_GUARD_OR_GC_PROTECT_RECURSION(guard, EXPORT, zobj);
  ------------------
  |  |  915|      6|#define ZEND_GUARD_OR_GC_PROTECT_RECURSION(pg, t, zobj) do { \
  |  |  916|      6|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (916:7): [True: 0, False: 6]
  |  |  ------------------
  |  |  917|      0|			ZEND_GUARD_PROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  655|      0|#define ZEND_GUARD_PROTECT_RECURSION(pg, t)		*pg |= ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  649|      0|#define ZEND_GUARD_RECURSION_EXPORT	(1<<6)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  918|      6|		} else { \
  |  |  919|      6|			GC_PROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  889|      6|#define GC_PROTECT_RECURSION(p) do { \
  |  |  |  |  890|      6|		GC_ADD_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  780|      6|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  |  |  |  |  781|      6|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  782|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (782:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  891|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (891:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  920|      6|		} \
  |  |  921|      6|	} while(0)
  |  |  ------------------
  |  |  |  Branch (921:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
  611|      6|			myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_VAR_EXPORT);
  612|      6|			if (level > 1) {
  ------------------
  |  Branch (612:8): [True: 3, False: 3]
  ------------------
  613|      3|				smart_str_appendc(buf, '\n');
  614|      3|				buffer_append_spaces(buf, level - 1);
  ------------------
  |  |  453|      3|	do { \
  |  |  454|      3|		char *tmp_spaces; \
  |  |  455|      3|		size_t tmp_spaces_len; \
  |  |  456|      3|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|      3|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|      3|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|      3|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|      3|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  615|      3|			}
  616|       |
  617|      6|			zend_class_entry *ce = Z_OBJCE_P(struc);
  ------------------
  |  | 1012|      6|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      6|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      6|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|      6|			bool is_enum = ce->ce_flags & ZEND_ACC_ENUM;
  ------------------
  |  |  284|      6|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  619|       |
  620|       |			/* stdClass has no __set_state method, but can be casted to */
  621|      6|			if (ce == zend_standard_class_def) {
  ------------------
  |  Branch (621:8): [True: 0, False: 6]
  ------------------
  622|      0|				smart_str_appendl(buf, "(object) array(\n", 16);
  623|      6|			} else {
  624|      6|				smart_str_appendc(buf, '\\');
  625|      6|				smart_str_append(buf, ce->name);
  626|      6|				if (is_enum) {
  ------------------
  |  Branch (626:9): [True: 4, False: 2]
  ------------------
  627|      4|					zend_object *zobj = Z_OBJ_P(struc);
  ------------------
  |  | 1000|      4|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  628|      4|					zval *case_name_zval = zend_enum_fetch_case_name(zobj);
  629|      4|					smart_str_appendl(buf, "::", 2);
  630|      4|					smart_str_append(buf, Z_STR_P(case_name_zval));
  ------------------
  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  631|      4|				} else {
  632|      2|					smart_str_appendl(buf, "::__set_state(array(\n", 21);
  633|      2|				}
  634|      6|			}
  635|       |
  636|      6|			if (myht) {
  ------------------
  |  Branch (636:8): [True: 6, False: 0]
  ------------------
  637|      6|				if (!is_enum) {
  ------------------
  |  Branch (637:9): [True: 2, False: 4]
  ------------------
  638|     30|					ZEND_HASH_FOREACH_KEY_VAL_IND(myht, index, key, val) {
  ------------------
  |  | 1218|     14|	ZEND_HASH_FOREACH(ht, 1); \
  |  |  ------------------
  |  |  |  | 1071|      2|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      2|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      2|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      2|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      2|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      2|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      2|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      2|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      2|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      2|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      2|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      2|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      2|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     16|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 14, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     14|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     14|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     14|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     14|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     14|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|     14|			} else { \
  |  |  |  |  |  | 1060|     14|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     14|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     14|				__h = _p->h; \
  |  |  |  |  |  | 1063|     14|				__key = _p->key; \
  |  |  |  |  |  | 1064|     14|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|     14|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|     14|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     28|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [True: 14, Folded]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 14, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|     14|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|     14|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|     14|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|     14|				} \
  |  |  |  |  |  | 1067|     14|			} \
  |  |  |  |  |  | 1068|     14|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     14|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1219|     14|	_h = __h; \
  |  | 1220|     14|	_key = __key; \
  |  | 1221|     14|	_val = _z;
  ------------------
  639|       |						/* data is IS_PTR for properties with hooks. */
  640|     30|						zval tmp;
  641|     30|						if (UNEXPECTED(Z_TYPE_P(val) == IS_PTR)) {
  ------------------
  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  ------------------
  ------------------
  642|      0|							zend_property_info *prop_info = Z_PTR_P(val);
  ------------------
  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  643|      0|							if ((prop_info->flags & ZEND_ACC_VIRTUAL) && !prop_info->hooks[ZEND_PROPERTY_HOOK_GET]) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (643:12): [True: 0, False: 0]
  |  Branch (643:53): [True: 0, False: 0]
  ------------------
  644|      0|								continue;
  645|      0|							}
  646|      0|							const char *unmangled_name_cstr = zend_get_unmangled_property_name(prop_info->name);
  647|      0|							zend_string *unmangled_name = zend_string_init(unmangled_name_cstr, strlen(unmangled_name_cstr), false);
  648|      0|							val = zend_read_property_ex(prop_info->ce, zobj, unmangled_name, /* silent */ true, &tmp);
  649|      0|							zend_string_release_ex(unmangled_name, false);
  650|      0|							if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  651|      0|								ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(guard, EXPORT, zobj);
  ------------------
  |  |  923|      0|#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj) do { \
  |  |  924|      0|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (924:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  925|      0|			ZEND_GUARD_UNPROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  656|      0|#define ZEND_GUARD_UNPROTECT_RECURSION(pg, t)	*pg &= ~ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  649|      0|#define ZEND_GUARD_RECURSION_EXPORT	(1<<6)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  926|      0|		} else { \
  |  |  927|      0|			GC_UNPROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  893|      0|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|      0|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|      0|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|      0|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|      0|		} \
  |  |  929|      0|	} while(0)
  |  |  ------------------
  |  |  |  Branch (929:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  652|      0|								zend_release_properties(myht);
  ------------------
  |  |  338|      0|#define zend_release_properties(ht) do { \
  |  |  339|      0|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  340|      0|		zend_array_release(ht); \
  |  |  341|      0|	} \
  |  |  342|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  653|      0|								return FAILURE;
  654|      0|							}
  655|      0|						}
  656|     14|						php_object_element_export(val, index, key, level, buf);
  657|     14|						if (val == &tmp) {
  ------------------
  |  Branch (657:11): [True: 0, False: 14]
  ------------------
  658|      0|							zval_ptr_dtor(val);
  659|      0|						}
  660|     14|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     14|		} \
  |  | 1102|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  661|      2|				}
  662|      6|				zend_release_properties(myht);
  ------------------
  |  |  338|      6|#define zend_release_properties(ht) do { \
  |  |  339|      6|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 6, False: 0]
  |  |  ------------------
  |  |  340|      6|		zend_array_release(ht); \
  |  |  341|      6|	} \
  |  |  342|      6|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
  663|      6|			}
  664|      6|			ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(guard, EXPORT, zobj);
  ------------------
  |  |  923|      6|#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj) do { \
  |  |  924|      6|		if (pg) { \
  |  |  ------------------
  |  |  |  Branch (924:7): [True: 0, False: 6]
  |  |  ------------------
  |  |  925|      0|			ZEND_GUARD_UNPROTECT_RECURSION(pg, t); \
  |  |  ------------------
  |  |  |  |  656|      0|#define ZEND_GUARD_UNPROTECT_RECURSION(pg, t)	*pg &= ~ZEND_GUARD_RECURSION_TYPE(t)
  |  |  |  |  ------------------
  |  |  |  |  |  |  652|      0|#define ZEND_GUARD_RECURSION_TYPE(t) ZEND_GUARD_RECURSION_ ## t
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  649|      0|#define ZEND_GUARD_RECURSION_EXPORT	(1<<6)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  926|      6|		} else { \
  |  |  927|      6|			GC_UNPROTECT_RECURSION(zobj); \
  |  |  ------------------
  |  |  |  |  893|      6|#define GC_UNPROTECT_RECURSION(p) do { \
  |  |  |  |  894|      6|		GC_DEL_FLAGS(p, GC_PROTECTED); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  783|      6|#define GC_DEL_FLAGS(p, flags) do { \
  |  |  |  |  |  |  784|      6|		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  760|      6|#define GC_FLAGS_SHIFT				0
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  785|      6|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (785:11): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  895|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (895:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  928|      6|		} \
  |  |  929|      6|	} while(0)
  |  |  ------------------
  |  |  |  Branch (929:10): [Folded, False: 6]
  |  |  ------------------
  ------------------
  665|      6|			if (level > 1 && !is_enum) {
  ------------------
  |  Branch (665:8): [True: 3, False: 3]
  |  Branch (665:21): [True: 1, False: 2]
  ------------------
  666|      1|				buffer_append_spaces(buf, level - 1);
  ------------------
  |  |  453|      1|	do { \
  |  |  454|      1|		char *tmp_spaces; \
  |  |  455|      1|		size_t tmp_spaces_len; \
  |  |  456|      1|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|      1|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|      1|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|      1|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|      1|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  667|      1|			}
  668|      6|			if (ce == zend_standard_class_def) {
  ------------------
  |  Branch (668:8): [True: 0, False: 6]
  ------------------
  669|      0|				smart_str_appendc(buf, ')');
  670|      6|			} else if (!is_enum) {
  ------------------
  |  Branch (670:15): [True: 2, False: 4]
  ------------------
  671|      2|				smart_str_appendl(buf, "))", 2);
  672|      2|			}
  673|       |
  674|      6|			break;
  675|      6|		}
  676|      0|		case IS_REFERENCE:
  ------------------
  |  |  616|      0|#define IS_REFERENCE				10
  ------------------
  |  Branch (676:3): [True: 0, False: 23]
  ------------------
  677|      0|			struc = Z_REFVAL_P(struc);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  678|      0|			goto again;
  679|      0|		default:
  ------------------
  |  Branch (679:3): [True: 0, False: 23]
  ------------------
  680|      0|			smart_str_appendl(buf, "NULL", 4);
  681|      0|			break;
  682|     23|	}
  683|       |
  684|     23|	return SUCCESS;
  685|     23|}
zif_var_export:
  703|      6|{
  704|      6|	zval *var;
  705|      6|	bool return_output = 0;
  706|      6|	smart_str buf = {0};
  707|       |
  708|     18|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      6|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      6|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      6|		const int _flags = (flags); \
  |  |  |  | 1599|      6|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      6|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      6|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      6|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      6|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      6|		uint32_t _i = 0; \
  |  |  |  | 1603|      6|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      6|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      6|		char *_error = NULL; \
  |  |  |  | 1606|      6|		bool _dummy = 0; \
  |  |  |  | 1607|      6|		bool _optional = 0; \
  |  |  |  | 1608|      6|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      6|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      6|		((void)_i); \
  |  |  |  | 1610|      6|		((void)_real_arg); \
  |  |  |  | 1611|      6|		((void)_arg); \
  |  |  |  | 1612|      6|		((void)_expected_type); \
  |  |  |  | 1613|      6|		((void)_error); \
  |  |  |  | 1614|      6|		((void)_optional); \
  |  |  |  | 1615|      6|		((void)_dummy); \
  |  |  |  | 1616|      6|		\
  |  |  |  | 1617|      6|		do { \
  |  |  |  | 1618|      6|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     12|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      6|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      6|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      6|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      6|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      6|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  709|     24|		Z_PARAM_ZVAL(var)
  ------------------
  |  | 2116|      6|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      6|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      6|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      6|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      6|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      6|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      6|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (709:3): [True: 6, False: 0]
  |  Branch (709:3): [True: 0, False: 0]
  |  Branch (709:3): [True: 6, False: 0]
  |  Branch (709:3): [True: 0, False: 0]
  |  Branch (709:3): [True: 6, False: 0]
  |  Branch (709:3): [True: 0, False: 0]
  |  Branch (709:3): [True: 0, False: 6]
  |  Branch (709:3): [True: 6, False: 0]
  |  Branch (709:3): [True: 0, False: 0]
  |  Branch (709:3): [True: 0, False: 0]
  ------------------
  710|     24|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      6|	_optional = 1;
  ------------------
  711|     24|		Z_PARAM_BOOL(return_output)
  ------------------
  |  | 1735|      6|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      6|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      6|	++_i; \
  |  |  |  |  |  | 1654|      6|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      6|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      6|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      6|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 4, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      6|	} \
  |  |  |  |  |  | 1659|      6|	_real_arg++; \
  |  |  |  |  |  | 1660|      2|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      2|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      2|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      2|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (711:3): [True: 6, False: 0]
  |  Branch (711:3): [True: 0, False: 0]
  |  Branch (711:3): [True: 0, False: 6]
  |  Branch (711:3): [True: 6, False: 0]
  |  Branch (711:3): [True: 6, False: 0]
  |  Branch (711:3): [True: 0, False: 0]
  |  Branch (711:3): [True: 6, False: 0]
  |  Branch (711:3): [True: 0, False: 0]
  |  Branch (711:3): [True: 0, False: 0]
  |  Branch (711:3): [True: 0, False: 0]
  ------------------
  712|      6|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      2|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      2|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      2|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1641|      6|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (712:2): [True: 2, False: 0]
  |  Branch (712:2): [True: 0, False: 0]
  |  Branch (712:2): [True: 2, False: 0]
  |  Branch (712:2): [True: 0, False: 0]
  ------------------
  713|       |
  714|      6|	zend_result result = php_var_export_ex(var, 1, &buf);
  715|      6|	smart_str_0 (&buf);
  716|       |
  717|      6|	if (result == FAILURE) {
  ------------------
  |  Branch (717:6): [True: 0, False: 6]
  ------------------
  718|      0|		smart_str_free(&buf);
  719|      6|	} else if (return_output) {
  ------------------
  |  Branch (719:13): [True: 2, False: 4]
  ------------------
  720|      2|		RETURN_STR(smart_str_extract(&buf));
  ------------------
  |  | 1050|      2|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|      2|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|      2|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|      2|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|      2|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|      2|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|      2|		/* interned strings support */			\
  |  |  |  |  |  | 1093|      2|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|      2|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|      2|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
  721|      4|	} else {
  722|      4|		PHPWRITE(ZSTR_VAL(buf.s), ZSTR_LEN(buf.s));
  ------------------
  |  |  156|      4|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  723|      4|		smart_str_free(&buf);
  724|      4|	}
  725|      6|}
php_var_serialize:
 1324|     14|{
 1325|     14|	php_var_serialize_intern(buf, struc, *data, false, true);
 1326|     14|	smart_str_0(buf);
 1327|     14|}
php_var_serialize_init:
 1330|     14|PHPAPI php_serialize_data_t php_var_serialize_init(void) {
 1331|     14|	struct php_serialize_data *d;
 1332|       |	/* fprintf(stderr, "SERIALIZE_INIT      == lock: %u, level: %u\n", BG(serialize_lock), BG(serialize).level); */
 1333|     14|	if (BG(serialize_lock) || !BG(serialize).level) {
  ------------------
  |  |  113|     28|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 14]
  |  |  ------------------
  ------------------
              	if (BG(serialize_lock) || !BG(serialize).level) {
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1333:28): [True: 14, False: 0]
  ------------------
 1334|     14|		d = emalloc(sizeof(struct php_serialize_data));
  ------------------
  |  |  150|     14|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     14|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     14|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     14|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     14|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1335|     14|		zend_hash_init(&d->ht, 16, NULL, ZVAL_PTR_DTOR, 0);
  ------------------
  |  |  111|     14|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1336|     14|		d->n = 0;
 1337|     14|		if (!BG(serialize_lock)) {
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1337:7): [True: 14, False: 0]
  ------------------
 1338|     14|			BG(serialize).data = d;
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
 1339|     14|			BG(serialize).level = 1;
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
 1340|     14|		}
 1341|     14|	} else {
 1342|      0|		d = BG(serialize).data;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1343|      0|		++BG(serialize).level;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1344|      0|	}
 1345|     14|	return d;
 1346|     14|}
php_var_serialize_destroy:
 1348|     14|PHPAPI void php_var_serialize_destroy(php_serialize_data_t d) {
 1349|       |	/* fprintf(stderr, "SERIALIZE_DESTROY   == lock: %u, level: %u\n", BG(serialize_lock), BG(serialize).level); */
 1350|     14|	if (BG(serialize_lock) || BG(serialize).level == 1) {
  ------------------
  |  |  113|     28|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 14]
  |  |  ------------------
  ------------------
              	if (BG(serialize_lock) || BG(serialize).level == 1) {
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1350:28): [True: 14, False: 0]
  ------------------
 1351|     14|		zend_hash_destroy(&d->ht);
 1352|     14|		efree(d);
  ------------------
  |  |  154|     14|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     14|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     14|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     14|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     14|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1353|     14|	}
 1354|     14|	if (!BG(serialize_lock) && !--BG(serialize).level) {
  ------------------
  |  |  113|     28|#define BG(v) (basic_globals.v)
  ------------------
              	if (!BG(serialize_lock) && !--BG(serialize).level) {
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1354:6): [True: 14, False: 0]
  |  Branch (1354:29): [True: 14, False: 0]
  ------------------
 1355|     14|		BG(serialize).data = NULL;
  ------------------
  |  |  113|     14|#define BG(v) (basic_globals.v)
  ------------------
 1356|     14|	}
 1357|     14|}
zif_serialize:
 1361|     14|{
 1362|     14|	zval *struc;
 1363|     14|	php_serialize_data_t var_hash;
 1364|     14|	smart_str buf = {0};
 1365|       |
 1366|     42|	ZEND_PARSE_PARAMETERS_START(1, 1)
  ------------------
  |  | 1629|     14|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     14|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     14|		const int _flags = (flags); \
  |  |  |  | 1599|     14|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     14|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     14|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     14|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     14|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     14|		uint32_t _i = 0; \
  |  |  |  | 1603|     14|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     14|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     14|		char *_error = NULL; \
  |  |  |  | 1606|     14|		bool _dummy = 0; \
  |  |  |  | 1607|     14|		bool _optional = 0; \
  |  |  |  | 1608|     14|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     14|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     14|		((void)_i); \
  |  |  |  | 1610|     14|		((void)_real_arg); \
  |  |  |  | 1611|     14|		((void)_arg); \
  |  |  |  | 1612|     14|		((void)_expected_type); \
  |  |  |  | 1613|     14|		((void)_error); \
  |  |  |  | 1614|     14|		((void)_optional); \
  |  |  |  | 1615|     14|		((void)_dummy); \
  |  |  |  | 1616|     14|		\
  |  |  |  | 1617|     14|		do { \
  |  |  |  | 1618|     14|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     28|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     14|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     14|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     14|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     14|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     14|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1367|     56|		Z_PARAM_ZVAL(struc)
  ------------------
  |  | 2116|     14|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|     14|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|     14|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     14|	++_i; \
  |  |  |  |  |  |  |  | 1654|     14|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     14|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     14|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|     14|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|     14|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|     14|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|     14|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 14]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|     14|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1367:3): [True: 14, False: 0]
  |  Branch (1367:3): [True: 0, False: 0]
  |  Branch (1367:3): [True: 14, False: 0]
  |  Branch (1367:3): [True: 0, False: 0]
  |  Branch (1367:3): [True: 14, False: 0]
  |  Branch (1367:3): [True: 0, False: 0]
  |  Branch (1367:3): [True: 0, False: 14]
  |  Branch (1367:3): [True: 14, False: 0]
  |  Branch (1367:3): [True: 0, False: 0]
  |  Branch (1367:3): [True: 0, False: 0]
  ------------------
 1368|     56|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|     14|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|     14|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     14|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|     14|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  |  | 1641|     14|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     14|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 14]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|     14|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1368:2): [True: 14, False: 0]
  |  Branch (1368:2): [True: 0, False: 0]
  |  Branch (1368:2): [True: 14, False: 0]
  |  Branch (1368:2): [True: 0, False: 0]
  ------------------
 1369|       |
 1370|     14|	PHP_VAR_SERIALIZE_INIT(var_hash);
  ------------------
  |  |   49|     14|	(d) = php_var_serialize_init()
  ------------------
 1371|     14|	php_var_serialize(&buf, struc, &var_hash);
 1372|     14|	PHP_VAR_SERIALIZE_DESTROY(var_hash);
  ------------------
  |  |   52|     14|	php_var_serialize_destroy(d)
  ------------------
 1373|       |
 1374|     14|	if (EG(exception)) {
  ------------------
  |  |   45|     14|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 12]
  |  |  ------------------
  ------------------
 1375|      2|		smart_str_free(&buf);
 1376|      2|		RETURN_THROWS();
  ------------------
  |  | 1071|      2|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1376:3): [True: 0, False: 2]
  |  Branch (1376:3): [True: 2, False: 0]
  ------------------
 1377|      2|	}
 1378|       |
 1379|     12|	RETURN_STR(smart_str_extract(&buf));
  ------------------
  |  | 1050|     12|#define RETURN_STR(s) 					do { RETVAL_STR(s); return; } while (0)
  |  |  ------------------
  |  |  |  | 1024|     12|#define RETVAL_STR(s)					ZVAL_STR(return_value, s)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1088|     12|#define ZVAL_STR(z, s) do {						\
  |  |  |  |  |  | 1089|     12|		zval *__z = (z);						\
  |  |  |  |  |  | 1090|     12|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1091|     12|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|     12|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|     12|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1092|     12|		/* interned strings support */			\
  |  |  |  |  |  | 1093|     12|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     12|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     12|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1093:24): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1094|     12|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1095|     12|			IS_STRING_EX;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|     24|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|     12|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|     12|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|     12|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1096|     12|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1096:11): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1050:65): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1380|     12|}
php_unserialize_with_options:
 1385|     48|{
 1386|     48|	const unsigned char *p;
 1387|     48|	php_unserialize_data_t var_hash;
 1388|     48|	zval *retval;
 1389|     48|	HashTable *class_hash = NULL, *prev_class_hash;
 1390|     48|	zend_long prev_max_depth, prev_cur_depth;
 1391|       |
 1392|     48|	if (buf_len == 0) {
  ------------------
  |  Branch (1392:6): [True: 0, False: 48]
  ------------------
 1393|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1394|      0|	}
 1395|       |
 1396|     48|	p = (const unsigned char*) buf;
 1397|     48|	PHP_VAR_UNSERIALIZE_INIT(var_hash);
  ------------------
  |  |   55|     48|	(d) = php_var_unserialize_init()
  ------------------
 1398|       |
 1399|     48|	prev_class_hash = php_var_unserialize_get_allowed_classes(var_hash);
 1400|     48|	prev_max_depth = php_var_unserialize_get_max_depth(var_hash);
 1401|     48|	prev_cur_depth = php_var_unserialize_get_cur_depth(var_hash);
 1402|     48|	if (options != NULL) {
  ------------------
  |  Branch (1402:6): [True: 0, False: 48]
  ------------------
 1403|      0|		zval *classes, *max_depth;
 1404|       |
 1405|      0|		classes = zend_hash_str_find_deref(options, "allowed_classes", sizeof("allowed_classes")-1);
 1406|      0|		if (classes && Z_TYPE_P(classes) != IS_ARRAY && Z_TYPE_P(classes) != IS_TRUE && Z_TYPE_P(classes) != IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (classes && Z_TYPE_P(classes) != IS_ARRAY && Z_TYPE_P(classes) != IS_TRUE && Z_TYPE_P(classes) != IS_FALSE) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
              		if (classes && Z_TYPE_P(classes) != IS_ARRAY && Z_TYPE_P(classes) != IS_TRUE && Z_TYPE_P(classes) != IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (classes && Z_TYPE_P(classes) != IS_ARRAY && Z_TYPE_P(classes) != IS_TRUE && Z_TYPE_P(classes) != IS_FALSE) {
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
              		if (classes && Z_TYPE_P(classes) != IS_ARRAY && Z_TYPE_P(classes) != IS_TRUE && Z_TYPE_P(classes) != IS_FALSE) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (classes && Z_TYPE_P(classes) != IS_ARRAY && Z_TYPE_P(classes) != IS_TRUE && Z_TYPE_P(classes) != IS_FALSE) {
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1406:7): [True: 0, False: 0]
  |  Branch (1406:18): [True: 0, False: 0]
  |  Branch (1406:51): [True: 0, False: 0]
  |  Branch (1406:83): [True: 0, False: 0]
  ------------------
 1407|      0|			zend_type_error("%s(): Option \"allowed_classes\" must be of type array|bool, %s given", function_name, zend_zval_value_name(classes));
 1408|      0|			goto cleanup;
 1409|      0|		}
 1410|       |
 1411|      0|		if (classes && (Z_TYPE_P(classes) == IS_ARRAY || !zend_is_true(classes))) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (classes && (Z_TYPE_P(classes) == IS_ARRAY || !zend_is_true(classes))) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1411:7): [True: 0, False: 0]
  |  Branch (1411:19): [True: 0, False: 0]
  |  Branch (1411:52): [True: 0, False: 0]
  ------------------
 1412|      0|			ALLOC_HASHTABLE(class_hash);
  ------------------
  |  |  232|      0|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1413|      0|			zend_hash_init(class_hash, (Z_TYPE_P(classes) == IS_ARRAY)?zend_hash_num_elements(Z_ARRVAL_P(classes)):0, NULL, NULL, 0);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  |  |  ------------------
  |  |  |  Branch (111:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1414|      0|		}
 1415|      0|		if (class_hash && Z_TYPE_P(classes) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (class_hash && Z_TYPE_P(classes) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (1415:7): [True: 0, False: 0]
  |  Branch (1415:21): [True: 0, False: 0]
  ------------------
 1416|      0|			zval *entry;
 1417|       |
 1418|      0|			ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(classes), entry) {
  ------------------
  |  | 1117|      0|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|      0|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|      0|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|      0|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|      0|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|      0|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
 1419|      0|				ZVAL_DEREF(entry);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1420|      0|				if (UNEXPECTED(Z_TYPE_P(entry) != IS_STRING && Z_TYPE_P(entry) != IS_OBJECT)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1421|      0|					zend_type_error("%s(): Option \"allowed_classes\" must be an array of class names, %s given",
 1422|      0|						function_name, zend_zval_value_name(entry));
 1423|      0|					goto cleanup;
 1424|      0|				}
 1425|      0|				zend_string *tmp_str;
 1426|      0|				zend_string *name = zval_try_get_tmp_string(entry, &tmp_str);
 1427|      0|				if (UNEXPECTED(name == NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1428|      0|					goto cleanup;
 1429|      0|				}
 1430|      0|				if (UNEXPECTED(!zend_is_valid_class_name(name))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1431|      0|					zend_value_error("%s(): Option \"allowed_classes\" must be an array of class names, \"%s\" given", function_name, ZSTR_VAL(name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1432|      0|					zend_tmp_string_release(tmp_str);
 1433|      0|					goto cleanup;
 1434|      0|				}
 1435|      0|				zend_string *lcname = zend_string_tolower(name);
 1436|      0|				zend_hash_add_empty_element(class_hash, lcname);
 1437|      0|		        zend_string_release_ex(lcname, false);
 1438|      0|		        zend_tmp_string_release(tmp_str);
 1439|      0|			} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1440|      0|		}
 1441|      0|		php_var_unserialize_set_allowed_classes(var_hash, class_hash);
 1442|       |
 1443|      0|		max_depth = zend_hash_str_find_deref(options, "max_depth", sizeof("max_depth") - 1);
 1444|      0|		if (max_depth) {
  ------------------
  |  Branch (1444:7): [True: 0, False: 0]
  ------------------
 1445|      0|			if (Z_TYPE_P(max_depth) != IS_LONG) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(max_depth) != IS_LONG) {
  ------------------
  |  |  610|      0|#define IS_LONG						4
  ------------------
  |  Branch (1445:8): [True: 0, False: 0]
  ------------------
 1446|      0|				zend_type_error("%s(): Option \"max_depth\" must be of type int, %s given", function_name, zend_zval_value_name(max_depth));
 1447|      0|				goto cleanup;
 1448|      0|			}
 1449|      0|			if (Z_LVAL_P(max_depth) < 0) {
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (1449:8): [True: 0, False: 0]
  ------------------
 1450|      0|				zend_value_error("%s(): Option \"max_depth\" must be greater than or equal to 0", function_name);
 1451|      0|				goto cleanup;
 1452|      0|			}
 1453|       |
 1454|      0|			php_var_unserialize_set_max_depth(var_hash, Z_LVAL_P(max_depth));
  ------------------
  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1455|       |			/* If the max_depth for a nested unserialize() call has been overridden,
 1456|       |			 * start counting from zero again (for the nested call only). */
 1457|      0|			php_var_unserialize_set_cur_depth(var_hash, 0);
 1458|      0|		}
 1459|      0|	}
 1460|       |
 1461|     48|	if (BG(unserialize).level > 1) {
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1461:6): [True: 0, False: 48]
  ------------------
 1462|      0|		retval = var_tmp_var(&var_hash);
 1463|     48|	} else {
 1464|     48|		retval = return_value;
 1465|     48|	}
 1466|     48|	if (!php_var_unserialize(retval, &p, p + buf_len, &var_hash)) {
  ------------------
  |  Branch (1466:6): [True: 42, False: 6]
  ------------------
 1467|     42|		if (!EG(exception)) {
  ------------------
  |  |   45|     42|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1467:7): [True: 41, False: 1]
  ------------------
 1468|     41|			php_error_docref(NULL, E_WARNING, "Error at offset " ZEND_LONG_FMT " of %zd bytes",
  ------------------
  |  |   23|     41|#define E_WARNING			(1<<1L)
  ------------------
 1469|     41|				(zend_long)((char*)p - buf), buf_len);
 1470|     41|		}
 1471|     42|		if (BG(unserialize).level <= 1) {
  ------------------
  |  |  113|     42|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1471:7): [True: 42, False: 0]
  ------------------
 1472|     42|			zval_ptr_dtor(return_value);
 1473|     42|		}
 1474|     42|		RETVAL_FALSE;
  ------------------
  |  | 1043|     42|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  ------------------
  |  |  |  | 1063|     42|#define ZVAL_FALSE(z) do {				\
  |  |  |  | 1064|     42|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|     42|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|     42|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  608|     42|#define IS_FALSE					2
  |  |  |  |  ------------------
  |  |  |  | 1065|     42|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1065:11): [Folded, False: 42]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1475|     42|	} else {
 1476|      6|		if ((char*)p < buf + buf_len) {
  ------------------
  |  Branch (1476:7): [True: 0, False: 6]
  ------------------
 1477|      0|			if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1477:8): [True: 0, False: 0]
  ------------------
 1478|      0|				php_error_docref(NULL, E_WARNING, "Extra data starting at offset " ZEND_LONG_FMT " of %zd bytes",
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1479|      0|					(zend_long)((char*)p - buf), buf_len);
 1480|      0|			}
 1481|      0|		}
 1482|      6|		if (BG(unserialize).level > 1) {
  ------------------
  |  |  113|      6|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (1482:7): [True: 0, False: 6]
  ------------------
 1483|      0|			ZVAL_COPY(return_value, retval);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1484|      6|		} else if (Z_REFCOUNTED_P(return_value)) {
  ------------------
  |  |  942|      6|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      6|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      6|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1485|      6|			zend_refcounted *ref = Z_COUNTED_P(return_value);
  ------------------
  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1486|      6|			gc_check_possible_root(ref);
 1487|      6|		}
 1488|      6|	}
 1489|       |
 1490|     48|cleanup:
 1491|     48|	if (class_hash) {
  ------------------
  |  Branch (1491:6): [True: 0, False: 48]
  ------------------
 1492|      0|		zend_hash_destroy(class_hash);
 1493|      0|		FREE_HASHTABLE(class_hash);
  ------------------
  |  |  235|      0|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      0|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1494|      0|	}
 1495|       |
 1496|       |	/* Reset to previous options in case this is a nested call */
 1497|     48|	php_var_unserialize_set_allowed_classes(var_hash, prev_class_hash);
 1498|     48|	php_var_unserialize_set_max_depth(var_hash, prev_max_depth);
 1499|     48|	php_var_unserialize_set_cur_depth(var_hash, prev_cur_depth);
 1500|     48|	PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
  ------------------
  |  |   58|     48|	php_var_unserialize_destroy(d)
  ------------------
 1501|       |
 1502|       |	/* Per calling convention we must not return a reference here, so unwrap. We're doing this at
 1503|       |	 * the very end, because __wakeup() calls performed during UNSERIALIZE_DESTROY might affect
 1504|       |	 * the value we unwrap here. This is compatible with behavior in PHP <=7.0. */
 1505|     48|	if (Z_ISREF_P(return_value)) {
  ------------------
  |  |  964|     48|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     48|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     48|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     48|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 48]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1506|      0|		zend_unwrap_reference(return_value);
 1507|      0|	}
 1508|     48|}
zif_unserialize:
 1513|     49|{
 1514|     49|	char *buf = NULL;
 1515|     49|	size_t buf_len;
 1516|     49|	HashTable *options = NULL;
 1517|       |
 1518|    147|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|     49|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|     49|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|     49|		const int _flags = (flags); \
  |  |  |  | 1599|     49|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|     49|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|     49|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|     49|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|     49|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|     49|		uint32_t _i = 0; \
  |  |  |  | 1603|     49|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|     49|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|     49|		char *_error = NULL; \
  |  |  |  | 1606|     49|		bool _dummy = 0; \
  |  |  |  | 1607|     49|		bool _optional = 0; \
  |  |  |  | 1608|     49|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|     49|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|     49|		((void)_i); \
  |  |  |  | 1610|     49|		((void)_real_arg); \
  |  |  |  | 1611|     49|		((void)_arg); \
  |  |  |  | 1612|     49|		((void)_expected_type); \
  |  |  |  | 1613|     49|		((void)_error); \
  |  |  |  | 1614|     49|		((void)_optional); \
  |  |  |  | 1615|     49|		((void)_dummy); \
  |  |  |  | 1616|     49|		\
  |  |  |  | 1617|     49|		do { \
  |  |  |  | 1618|     49|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     98|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|     49|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|     49|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|     49|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|     49|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|     49|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1519|    196|		Z_PARAM_STRING(buf, buf_len)
  ------------------
  |  | 2087|     49|	Z_PARAM_STRING_EX(dest, dest_len, 0, 0)
  |  |  ------------------
  |  |  |  | 2079|     49|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|     49|	++_i; \
  |  |  |  |  |  | 1654|     49|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|     49|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|     49|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|     49|	_real_arg++; \
  |  |  |  |  |  | 1660|     49|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|     49|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|     49|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2080|     49|		if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 49]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2081|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2081:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2082|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2083|      0|			break; \
  |  |  |  | 2084|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (1519:3): [True: 49, False: 0]
  |  Branch (1519:3): [True: 0, False: 0]
  |  Branch (1519:3): [True: 49, False: 0]
  |  Branch (1519:3): [True: 0, False: 0]
  |  Branch (1519:3): [True: 49, False: 0]
  |  Branch (1519:3): [True: 0, False: 0]
  |  Branch (1519:3): [True: 0, False: 49]
  |  Branch (1519:3): [True: 49, False: 0]
  |  Branch (1519:3): [True: 0, False: 0]
  |  Branch (1519:3): [True: 0, False: 0]
  ------------------
 1520|     49|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|     49|	_optional = 1;
  ------------------
 1521|    100|		Z_PARAM_ARRAY_HT(options)
  ------------------
  |  | 1861|      1|	Z_PARAM_ARRAY_HT_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1858|     49|	Z_PARAM_ARRAY_HT_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1850|     49|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|     49|	++_i; \
  |  |  |  |  |  |  |  | 1654|     49|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|     49|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     49|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|     49|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 49, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|     49|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 48, False: 1]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|     49|	} \
  |  |  |  |  |  |  |  | 1659|     49|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      1|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      1|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      1|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 1]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1851|      1|		if (UNEXPECTED(!zend_parse_arg_array_ht(_arg, &dest, check_null, 0, separate))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1852|      1|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1852:21): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1853|      1|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      1|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1854|      1|			break; \
  |  |  |  |  |  | 1855|      1|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1521:3): [True: 49, False: 0]
  |  Branch (1521:3): [True: 0, False: 0]
  |  Branch (1521:3): [True: 0, False: 49]
  |  Branch (1521:3): [True: 49, False: 0]
  |  Branch (1521:3): [True: 49, False: 0]
  |  Branch (1521:3): [True: 0, False: 0]
  |  Branch (1521:3): [True: 49, False: 0]
  |  Branch (1521:3): [True: 0, False: 0]
  |  Branch (1521:3): [True: 0, False: 0]
  |  Branch (1521:3): [True: 0, False: 0]
  ------------------
 1522|     49|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      1|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|     49|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|     49|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 1, False: 48]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      1|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      1|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 1, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      1|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      1|			} \
  |  |  |  | 1645|      1|			failure; \
  |  |  |  | 1646|      1|		} \
  |  |  |  | 1647|     49|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 48]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1522:2): [True: 0, False: 0]
  |  Branch (1522:2): [True: 0, False: 0]
  |  Branch (1522:2): [True: 0, False: 0]
  |  Branch (1522:2): [True: 0, False: 0]
  ------------------
 1523|       |
 1524|     48|	php_unserialize_with_options(return_value, buf, buf_len, options, "unserialize");
 1525|     48|}
zm_startup_var:
 1567|      2|{
 1568|      2|	REGISTER_INI_ENTRIES();
  ------------------
  |  |  199|      2|#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
  ------------------
 1569|      2|	return SUCCESS;
 1570|      2|}
var.c:php_array_element_dump:
   41|    720|{
   42|    720|	if (key == NULL) { /* numeric key */
  ------------------
  |  Branch (42:6): [True: 527, False: 193]
  ------------------
   43|    527|		php_printf("%*c[" ZEND_LONG_FMT "]=>\n", level + 1, ' ', index);
   44|    527|	} else { /* string key */
   45|    193|		php_printf("%*c[\"", level + 1, ' ');
   46|    193|		PHPWRITE(ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |  156|    193|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
   47|    193|		php_printf("\"]=>\n");
   48|    193|	}
   49|    720|	php_var_dump(zv, level + 2);
   50|    720|}
var.c:php_var_dump_object_prefix:
   95|    279|static const char *php_var_dump_object_prefix(zend_object *obj) {
   96|    279|	if (EXPECTED(!zend_object_is_lazy(obj))) {
  ------------------
  |  |  456|    279|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 279, False: 0]
  |  |  ------------------
  ------------------
   97|    279|		return "";
   98|    279|	}
   99|       |
  100|      0|	if (zend_object_is_lazy_proxy(obj)) {
  ------------------
  |  Branch (100:6): [True: 0, False: 0]
  ------------------
  101|      0|		return "lazy proxy ";
  102|      0|	}
  103|       |
  104|      0|	return "lazy ghost ";
  105|      0|}
var.c:php_object_property_dump:
   54|  2.09M|{
   55|  2.09M|	const char *prop_name, *class_name;
   56|       |
   57|  2.09M|#ifdef ZEND_CHECK_STACK_LIMIT
   58|  2.09M|	if (UNEXPECTED(zend_call_stack_overflowed(EG(stack_limit)))) {
  ------------------
  |  |  457|  2.09M|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 2.09M]
  |  |  ------------------
  ------------------
   59|      0|		php_printf("%*cnesting level too deep", level + 1, ' ');
   60|      0|		return;
   61|      0|	}
   62|  2.09M|#endif
   63|  2.09M|	if (key == NULL) { /* numeric key */
  ------------------
  |  Branch (63:6): [True: 2.09M, False: 237]
  ------------------
   64|  2.09M|		php_printf("%*c[" ZEND_LONG_FMT "]=>\n", level + 1, ' ', index);
   65|  2.09M|	} else { /* string key */
   66|    237|		int unmangle = zend_unmangle_property_name(key, &class_name, &prop_name);
  ------------------
  |  |  995|    237|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
   67|    237|		php_printf("%*c[", level + 1, ' ');
   68|       |
   69|    237|		if (class_name && unmangle == SUCCESS) {
  ------------------
  |  Branch (69:7): [True: 10, False: 227]
  |  Branch (69:21): [True: 10, False: 0]
  ------------------
   70|     10|			if (class_name[0] == '*') {
  ------------------
  |  Branch (70:8): [True: 4, False: 6]
  ------------------
   71|      4|				php_printf("\"%s\":protected", prop_name);
   72|      6|			} else {
   73|      6|				php_printf("\"%s\":\"%s\":private", prop_name, class_name);
   74|      6|			}
   75|    227|		} else {
   76|    227|			php_printf("\"");
   77|    227|			PHPWRITE(ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |  156|    227|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
   78|    227|			php_printf("\"");
   79|    227|		}
   80|    237|		ZEND_PUTS("]=>\n");
  ------------------
  |  |  342|    237|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
   81|    237|	}
   82|       |
   83|  2.09M|	if (Z_TYPE_P(zv) == IS_UNDEF) {
  ------------------
  |  |  669|  2.09M|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  2.09M|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(zv) == IS_UNDEF) {
  ------------------
  |  |  606|  2.09M|#define IS_UNDEF					0
  ------------------
  |  Branch (83:6): [True: 7, False: 2.09M]
  ------------------
   84|      7|		ZEND_ASSERT(ZEND_TYPE_IS_SET(prop_info->type));
  ------------------
  |  |  112|      7|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (84:3): [True: 0, False: 7]
  |  Branch (84:3): [True: 7, False: 0]
  ------------------
   85|      7|		zend_string *type_str = zend_type_to_string(prop_info->type);
   86|      7|		php_printf("%*cuninitialized(%s)\n",
   87|      7|			level + 1, ' ', ZSTR_VAL(type_str));
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   88|      7|		zend_string_release(type_str);
   89|  2.09M|	} else {
   90|  2.09M|		php_var_dump(zv, level + 2);
   91|  2.09M|	}
   92|  2.09M|}
var.c:zval_object_property_dump:
  272|      6|{
  273|      6|	const char *prop_name, *class_name;
  274|       |
  275|      6|	if (key == NULL) { /* numeric key */
  ------------------
  |  Branch (275:6): [True: 0, False: 6]
  ------------------
  276|      0|		php_printf("%*c[" ZEND_LONG_FMT "]=>\n", level + 1, ' ', index);
  277|      6|	} else { /* string key */
  278|      6|		zend_unmangle_property_name(key, &class_name, &prop_name);
  ------------------
  |  |  995|      6|        zend_unmangle_property_name_ex(mangled_property, class_name, prop_name, NULL)
  ------------------
  279|      6|		php_printf("%*c[", level + 1, ' ');
  280|       |
  281|      6|		if (class_name) {
  ------------------
  |  Branch (281:7): [True: 0, False: 6]
  ------------------
  282|      0|			if (class_name[0] == '*') {
  ------------------
  |  Branch (282:8): [True: 0, False: 0]
  ------------------
  283|      0|				php_printf("\"%s\":protected", prop_name);
  284|      0|			} else {
  285|      0|				php_printf("\"%s\":\"%s\":private", prop_name, class_name);
  286|      0|			}
  287|      6|		} else {
  288|      6|			php_printf("\"%s\"", prop_name);
  289|      6|		}
  290|      6|		ZEND_PUTS("]=>\n");
  ------------------
  |  |  342|      6|#define ZEND_PUTS(str)					zend_write((str), strlen((str)))
  ------------------
  291|      6|	}
  292|      6|	if (prop_info && Z_TYPE_P(zv) == IS_UNDEF) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (prop_info && Z_TYPE_P(zv) == IS_UNDEF) {
  ------------------
  |  |  606|      6|#define IS_UNDEF					0
  ------------------
  |  Branch (292:6): [True: 6, False: 0]
  |  Branch (292:19): [True: 0, False: 6]
  ------------------
  293|      0|		zend_string *type_str = zend_type_to_string(prop_info->type);
  294|      0|		php_printf("%*cuninitialized(%s)\n",
  295|      0|			level + 1, ' ', ZSTR_VAL(type_str));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  296|      0|		zend_string_release(type_str);
  297|      6|	} else {
  298|      6|		php_debug_zval_dump(zv, level + 2);
  299|      6|	}
  300|      6|}
var.c:php_array_element_export:
  462|      3|{
  463|      3|	if (key == NULL) { /* numeric key */
  ------------------
  |  Branch (463:6): [True: 3, False: 0]
  ------------------
  464|      3|		buffer_append_spaces(buf, level+1);
  ------------------
  |  |  453|      3|	do { \
  |  |  454|      3|		char *tmp_spaces; \
  |  |  455|      3|		size_t tmp_spaces_len; \
  |  |  456|      3|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|      3|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|      3|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|      3|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|      3|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 3]
  |  |  ------------------
  ------------------
  465|      3|		smart_str_append_long(buf, (zend_long) index);
  466|      3|		smart_str_appendl(buf, " => ", 4);
  467|       |
  468|      3|	} else { /* string key */
  469|      0|		zend_string *tmp_str;
  470|      0|		zend_string *ckey = php_addcslashes(key, "'\\", 2);
  471|      0|		tmp_str = php_str_to_str(ZSTR_VAL(ckey), ZSTR_LEN(ckey), "\0", 1, "' . \"\\0\" . '", 12);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		tmp_str = php_str_to_str(ZSTR_VAL(ckey), ZSTR_LEN(ckey), "\0", 1, "' . \"\\0\" . '", 12);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  472|       |
  473|      0|		buffer_append_spaces(buf, level + 1);
  ------------------
  |  |  453|      0|	do { \
  |  |  454|      0|		char *tmp_spaces; \
  |  |  455|      0|		size_t tmp_spaces_len; \
  |  |  456|      0|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|      0|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|      0|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|      0|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|      0|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  474|       |
  475|      0|		smart_str_appendc(buf, '\'');
  476|      0|		smart_str_append(buf, tmp_str);
  477|      0|		smart_str_appendl(buf, "' => ", 5);
  478|       |
  479|      0|		zend_string_free(ckey);
  480|      0|		zend_string_free(tmp_str);
  481|      0|	}
  482|      3|	zend_result result = php_var_export_ex(zv, level + 2, buf);
  483|       |
  484|      3|	smart_str_appendc(buf, ',');
  485|      3|	smart_str_appendc(buf, '\n');
  486|       |
  487|      3|	return result;
  488|      3|}
var.c:php_object_element_export:
  492|     14|{
  493|     14|	buffer_append_spaces(buf, level + 2);
  ------------------
  |  |  453|     14|	do { \
  |  |  454|     14|		char *tmp_spaces; \
  |  |  455|     14|		size_t tmp_spaces_len; \
  |  |  456|     14|		tmp_spaces_len = spprintf(&tmp_spaces, 0,"%*c", num_spaces, ' '); \
  |  |  ------------------
  |  |  |  |   27|     14|#define spprintf zend_spprintf
  |  |  ------------------
  |  |  457|     14|		smart_str_appendl(buf, tmp_spaces, tmp_spaces_len); \
  |  |  458|     14|		efree(tmp_spaces); \
  |  |  ------------------
  |  |  |  |  154|     14|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     14|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     14|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     14|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     14|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|     14|	} while(0);
  |  |  ------------------
  |  |  |  Branch (459:10): [Folded, False: 14]
  |  |  ------------------
  ------------------
  494|     14|	if (key != NULL) {
  ------------------
  |  Branch (494:6): [True: 14, False: 0]
  ------------------
  495|     14|		const char *class_name, *prop_name;
  496|     14|		size_t prop_name_len;
  497|     14|		zend_string *pname_esc;
  498|       |
  499|     14|		zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_name_len);
  500|     14|		pname_esc = php_addcslashes_str(prop_name, prop_name_len, "'\\", 2);
  501|       |
  502|     14|		smart_str_appendc(buf, '\'');
  503|     14|		smart_str_append(buf, pname_esc);
  504|     14|		smart_str_appendc(buf, '\'');
  505|     14|		zend_string_release_ex(pname_esc, 0);
  506|     14|	} else {
  507|      0|		smart_str_append_long(buf, (zend_long) index);
  508|      0|	}
  509|     14|	smart_str_appendl(buf, " => ", 4);
  510|     14|	zend_result result = php_var_export_ex(zv, level + 2, buf);
  511|     14|	smart_str_appendc(buf, ',');
  512|     14|	smart_str_appendc(buf, '\n');
  513|       |
  514|     14|	return result;
  515|     14|}
var.c:php_var_serialize_intern:
 1052|     51|{
 1053|     51|	zend_long var_already;
 1054|     51|	HashTable *myht;
 1055|       |
 1056|     51|	if (EG(exception)) {
  ------------------
  |  |   45|     51|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 51]
  |  |  ------------------
  ------------------
 1057|      0|		return;
 1058|      0|	}
 1059|       |
 1060|     51|	if (UNEXPECTED(php_serialize_check_stack_limit())) {
  ------------------
  |  |  457|     51|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 51]
  |  |  ------------------
  ------------------
 1061|      0|		return;
 1062|      0|	}
 1063|       |
 1064|     51|	if (var_hash && (var_already = php_add_var_hash(var_hash, struc, in_rcn_array))) {
  ------------------
  |  Branch (1064:6): [True: 51, False: 0]
  |  Branch (1064:18): [True: 3, False: 48]
  ------------------
 1065|      3|		if (var_already == -1) {
  ------------------
  |  Branch (1065:7): [True: 0, False: 3]
  ------------------
 1066|       |			/* Reference to an object that failed to serialize, replace with null. */
 1067|      0|			smart_str_appendl(buf, "N;", 2);
 1068|      0|			return;
 1069|      3|		} else if (Z_ISREF_P(struc)) {
  ------------------
  |  |  964|      3|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      3|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      3|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      3|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1070|      1|			smart_str_appendl(buf, "R:", 2);
 1071|      1|			smart_str_append_long(buf, var_already);
 1072|      1|			smart_str_appendc(buf, ';');
 1073|      1|			return;
 1074|      2|		} else if (Z_TYPE_P(struc) == IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		} else if (Z_TYPE_P(struc) == IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (1074:14): [True: 2, False: 0]
  ------------------
 1075|      2|			smart_str_appendl(buf, "r:", 2);
 1076|      2|			smart_str_append_long(buf, var_already);
 1077|      2|			smart_str_appendc(buf, ';');
 1078|      2|			return;
 1079|      2|		}
 1080|      3|	}
 1081|       |
 1082|     49|again:
 1083|     49|	switch (Z_TYPE_P(struc)) {
  ------------------
  |  |  669|     49|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     49|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
 1084|      0|		case IS_FALSE:
  ------------------
  |  |  608|      0|#define IS_FALSE					2
  ------------------
  |  Branch (1084:3): [True: 0, False: 49]
  ------------------
 1085|      0|			smart_str_appendl(buf, "b:0;", 4);
 1086|      0|			return;
 1087|       |
 1088|      0|		case IS_TRUE:
  ------------------
  |  |  609|      0|#define IS_TRUE						3
  ------------------
  |  Branch (1088:3): [True: 0, False: 49]
  ------------------
 1089|      0|			smart_str_appendl(buf, "b:1;", 4);
 1090|      0|			return;
 1091|       |
 1092|      1|		case IS_NULL:
  ------------------
  |  |  607|      1|#define IS_NULL						1
  ------------------
  |  Branch (1092:3): [True: 1, False: 48]
  ------------------
 1093|      1|			smart_str_appendl(buf, "N;", 2);
 1094|      1|			return;
 1095|       |
 1096|      3|		case IS_LONG:
  ------------------
  |  |  610|      3|#define IS_LONG						4
  ------------------
  |  Branch (1096:3): [True: 3, False: 46]
  ------------------
 1097|      3|			php_var_serialize_long(buf, Z_LVAL_P(struc));
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
 1098|      3|			return;
 1099|       |
 1100|      0|		case IS_DOUBLE: {
  ------------------
  |  |  611|      0|#define IS_DOUBLE					5
  ------------------
  |  Branch (1100:3): [True: 0, False: 49]
  ------------------
 1101|      0|			char tmp_str[ZEND_DOUBLE_MAX_LENGTH];
 1102|      0|			zend_gcvt(Z_DVAL_P(struc), (int)PG(serialize_precision), '.', 'E', tmp_str);
  ------------------
  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  ------------------
  ------------------
              			zend_gcvt(Z_DVAL_P(struc), (int)PG(serialize_precision), '.', 'E', tmp_str);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
 1103|       |
 1104|      0|			size_t len = strlen(tmp_str);
 1105|      0|			char *res = smart_str_extend(buf, 2 + len + 1);
 1106|      0|			res = zend_mempcpy(res, "d:", 2);
 1107|      0|			memcpy(res, tmp_str, len);
 1108|      0|			res[len] = ';';
 1109|      0|			return;
 1110|      0|		}
 1111|       |
 1112|      4|		case IS_STRING:
  ------------------
  |  |  612|      4|#define IS_STRING					6
  ------------------
  |  Branch (1112:3): [True: 4, False: 45]
  ------------------
 1113|      4|			php_var_serialize_string(buf, Z_STRVAL_P(struc), Z_STRLEN_P(struc));
  ------------------
  |  |  985|      4|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      4|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			php_var_serialize_string(buf, Z_STRVAL_P(struc), Z_STRLEN_P(struc));
  ------------------
  |  |  988|      4|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      4|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1114|      4|			return;
 1115|       |
 1116|      9|		case IS_OBJECT: {
  ------------------
  |  |  614|      9|#define IS_OBJECT					8
  ------------------
  |  Branch (1116:3): [True: 9, False: 40]
  ------------------
 1117|      9|				zend_class_entry *ce = Z_OBJCE_P(struc);
  ------------------
  |  | 1012|      9|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      9|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1118|      9|				bool incomplete_class;
 1119|      9|				uint32_t count;
 1120|       |
 1121|      9|				if (ce->ce_flags & ZEND_ACC_NOT_SERIALIZABLE) {
  ------------------
  |  |  341|      9|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
  |  Branch (1121:9): [True: 2, False: 7]
  ------------------
 1122|      2|					zend_throw_exception_ex(NULL, 0, "Serialization of '%s' is not allowed",
 1123|      2|						ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1124|      2|					return;
 1125|      2|				}
 1126|       |
 1127|      7|				if (ce->ce_flags & ZEND_ACC_ENUM) {
  ------------------
  |  |  284|      7|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (1127:9): [True: 2, False: 5]
  ------------------
 1128|      2|					PHP_CLASS_ATTRIBUTES;
  ------------------
  |  |   40|      2|	zend_string *class_name;											\
  |  |   41|      2|	bool incomplete_class ZEND_ATTRIBUTE_UNUSED = 0
  ------------------
 1129|       |
 1130|      2|					zval *case_name_zval = zend_enum_fetch_case_name(Z_OBJ_P(struc));
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1131|       |
 1132|      2|					PHP_SET_CLASS_ATTRIBUTES(struc);
  ------------------
  |  |   26|      2|	if (Z_OBJCE_P(struc) == php_ce_incomplete_class) {	\
  |  |  ------------------
  |  |  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (26:6): [True: 0, False: 2]
  |  |  ------------------
  |  |   27|      0|		class_name = php_lookup_class_name(Z_OBJ_P(struc)); \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|      0|		if (!class_name) { \
  |  |  ------------------
  |  |  |  Branch (28:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   29|      0|			class_name = zend_string_init(INCOMPLETE_CLASS, sizeof(INCOMPLETE_CLASS) - 1, 0); \
  |  |  ------------------
  |  |  |  |   43|      0|#define INCOMPLETE_CLASS "__PHP_Incomplete_Class"
  |  |  ------------------
  |  |               			class_name = zend_string_init(INCOMPLETE_CLASS, sizeof(INCOMPLETE_CLASS) - 1, 0); \
  |  |  ------------------
  |  |  |  |   43|      0|#define INCOMPLETE_CLASS "__PHP_Incomplete_Class"
  |  |  ------------------
  |  |   30|      0|		} \
  |  |   31|      0|		incomplete_class = 1; \
  |  |   32|      2|	} else { \
  |  |   33|      2|		class_name = zend_string_copy(Z_OBJCE_P(struc)->name); \
  |  |  ------------------
  |  |  |  | 1012|      2|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1011|      2|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      2|	}
  ------------------
 1133|      2|					smart_str_appendl(buf, "E:", 2);
 1134|      2|					smart_str_append_unsigned(buf, ZSTR_LEN(class_name) + strlen(":") + Z_STRLEN_P(case_name_zval));
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              					smart_str_append_unsigned(buf, ZSTR_LEN(class_name) + strlen(":") + Z_STRLEN_P(case_name_zval));
  ------------------
  |  |  988|      2|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      2|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1135|      2|					smart_str_appendl(buf, ":\"", 2);
 1136|      2|					smart_str_append(buf, class_name);
 1137|      2|					smart_str_appendc(buf, ':');
 1138|      2|					smart_str_append(buf, Z_STR_P(case_name_zval));
  ------------------
  |  |  982|      2|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
 1139|      2|					smart_str_appendl(buf, "\";", 2);
 1140|      2|					PHP_CLEANUP_CLASS_ATTRIBUTES();
  ------------------
  |  |   37|      2|	zend_string_release_ex(class_name, 0)
  ------------------
 1141|      2|					return;
 1142|      2|				}
 1143|       |
 1144|      5|				if (ce->__serialize) {
  ------------------
  |  Branch (1144:9): [True: 0, False: 5]
  ------------------
 1145|      0|					zval retval, obj;
 1146|      0|					zend_string *key;
 1147|      0|					zval *data;
 1148|      0|					zend_ulong index;
 1149|       |
 1150|      0|					ZVAL_OBJ_COPY(&obj, Z_OBJ_P(struc));
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1151|      0|					if (php_var_serialize_call_magic_serialize(&retval, &obj) == FAILURE) {
  ------------------
  |  Branch (1151:10): [True: 0, False: 0]
  ------------------
 1152|      0|						if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1152:11): [True: 0, False: 0]
  ------------------
 1153|      0|							smart_str_appendl(buf, "N;", 2);
 1154|      0|						}
 1155|      0|						zval_ptr_dtor(&obj);
 1156|      0|						return;
 1157|      0|					}
 1158|       |
 1159|      0|					php_var_serialize_class_name(buf, &obj);
 1160|      0|					smart_str_append_unsigned(buf, zend_hash_num_elements(Z_ARRVAL(retval)));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1161|      0|					smart_str_appendl(buf, ":{", 2);
 1162|      0|					ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL(retval), index, key, data) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      0|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      0|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      0|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      0|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      0|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      0|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      0|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      0|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      0|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      0|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
 1163|      0|						if (!key) {
  ------------------
  |  Branch (1163:11): [True: 0, False: 0]
  ------------------
 1164|      0|							php_var_serialize_long(buf, index);
 1165|      0|						} else {
 1166|      0|							php_var_serialize_string(buf, ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							php_var_serialize_string(buf, ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1167|      0|						}
 1168|       |
 1169|      0|						if (Z_ISREF_P(data) && Z_REFCOUNT_P(data) == 1) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						if (Z_ISREF_P(data) && Z_REFCOUNT_P(data) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (1169:30): [True: 0, False: 0]
  ------------------
 1170|      0|							data = Z_REFVAL_P(data);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1171|      0|						}
 1172|      0|						php_var_serialize_intern(buf, data, var_hash, Z_REFCOUNT(retval) > 1, false);
  ------------------
  |  | 1280|      0|#define Z_REFCOUNT(z)				Z_REFCOUNT_P(&(z))
  |  |  ------------------
  |  |  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  |  |  ------------------
  ------------------
 1173|      0|					} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1174|      0|					smart_str_appendc(buf, '}');
 1175|       |
 1176|      0|					zval_ptr_dtor(&obj);
 1177|      0|					zval_ptr_dtor(&retval);
 1178|      0|					return;
 1179|      0|				}
 1180|       |
 1181|      5|				if (ce->serialize != NULL) {
  ------------------
  |  Branch (1181:9): [True: 0, False: 5]
  ------------------
 1182|       |					/* has custom handler */
 1183|      0|					unsigned char *serialized_data = NULL;
 1184|      0|					size_t serialized_length;
 1185|       |
 1186|      0|					if (ce->serialize(struc, &serialized_data, &serialized_length, (zend_serialize_data *)var_hash) == SUCCESS) {
  ------------------
  |  Branch (1186:10): [True: 0, False: 0]
  ------------------
 1187|      0|						char b1[32], b2[32];
 1188|      0|						char *s1 = zend_print_long_to_buf(b1 + sizeof(b1) - 1, ZSTR_LEN(Z_OBJCE_P(struc)->name));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1189|      0|						size_t l1 = b1 + sizeof(b1) - 1 - s1;
 1190|      0|						char *s2 = zend_print_long_to_buf(b2 + sizeof(b2) - 1, serialized_length);
 1191|      0|						size_t l2 = b2 + sizeof(b2) - 1 - s2;
 1192|      0|						char *res = smart_str_extend(buf, 2 + l1 + 2 + ZSTR_LEN(Z_OBJCE_P(struc)->name) + 2 + l2 + 2 + serialized_length + 1);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1193|      0|						res = zend_mempcpy(res, "C:", 2);
 1194|      0|						res = zend_mempcpy(res, s1, l1);
 1195|      0|						res = zend_mempcpy(res, ":\"", 2);
 1196|      0|						res = zend_mempcpy(res, ZSTR_VAL(Z_OBJCE_P(struc)->name), ZSTR_LEN(Z_OBJCE_P(struc)->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						res = zend_mempcpy(res, ZSTR_VAL(Z_OBJCE_P(struc)->name), ZSTR_LEN(Z_OBJCE_P(struc)->name));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1197|      0|						res = zend_mempcpy(res, "\":", 2);
 1198|      0|						res = zend_mempcpy(res, s2, l2);
 1199|      0|						res = zend_mempcpy(res, ":{", 2);
 1200|      0|						memcpy(res, (char *) serialized_data, serialized_length);
 1201|      0|						res[serialized_length] = '}';
 1202|      0|					} else {
 1203|       |						/* Mark this value in the var_hash, to avoid creating references to it. */
 1204|      0|						zval *var_idx = zend_hash_index_find(&var_hash->ht,
 1205|      0|							(zend_ulong) (uintptr_t) Z_COUNTED_P(struc));
  ------------------
  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
 1206|      0|						if (var_idx) {
  ------------------
  |  Branch (1206:11): [True: 0, False: 0]
  ------------------
 1207|      0|							ZVAL_LONG(var_idx, -1);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1208|      0|						}
 1209|      0|						smart_str_appendl(buf, "N;", 2);
 1210|      0|					}
 1211|      0|					if (serialized_data) {
  ------------------
  |  Branch (1211:10): [True: 0, False: 0]
  ------------------
 1212|      0|						efree(serialized_data);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1213|      0|					}
 1214|      0|					return;
 1215|      0|				}
 1216|       |
 1217|      5|				if (ce != PHP_IC_ENTRY) {
  ------------------
  |  |   22|      5|#define PHP_IC_ENTRY php_ce_incomplete_class
  ------------------
  |  Branch (1217:9): [True: 5, False: 0]
  ------------------
 1218|      5|					zval *zv = zend_hash_find_known_hash(&ce->function_table, ZSTR_KNOWN(ZEND_STR_SLEEP));
 1219|       |
 1220|      5|					if (zv) {
  ------------------
  |  Branch (1220:10): [True: 0, False: 5]
  ------------------
 1221|      0|						HashTable *ht;
 1222|      0|						zval tmp;
 1223|       |
 1224|      0|						ZVAL_OBJ_COPY(&tmp, Z_OBJ_P(struc));
  ------------------
  |  | 1146|      0|#define ZVAL_OBJ_COPY(z, o) do {				\
  |  | 1147|      0|		zval *__z = (z);						\
  |  | 1148|      0|		zend_object *__o = (o);					\
  |  | 1149|      0|		GC_ADDREF(__o);							\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1150|      0|		Z_OBJ_P(__z) = __o;						\
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1151|      0|		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_OBJECT_EX;		\
  |  |  ------------------
  |  |  |  |  830|      0|#define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  614|      0|#define IS_OBJECT					8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_OBJECT_EX				(IS_OBJECT         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1152|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1152:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1225|      0|						if (!(ht = php_var_serialize_call_sleep(Z_OBJ(tmp), Z_FUNC_P(zv)))) {
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
              						if (!(ht = php_var_serialize_call_sleep(Z_OBJ(tmp), Z_FUNC_P(zv)))) {
  ------------------
  |  | 1050|      0|#define Z_FUNC_P(zval_p)			Z_FUNC(*(zval_p))
  |  |  ------------------
  |  |  |  | 1049|      0|#define Z_FUNC(zval)				(zval).value.func
  |  |  ------------------
  ------------------
  |  Branch (1225:11): [True: 0, False: 0]
  ------------------
 1226|      0|							if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1226:12): [True: 0, False: 0]
  ------------------
 1227|       |								/* we should still add element even if it's not OK,
 1228|       |								 * since we already wrote the length of the array before */
 1229|      0|								smart_str_appendl(buf, "N;", 2);
 1230|      0|							}
 1231|      0|							OBJ_RELEASE(Z_OBJ(tmp));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1232|      0|							return;
 1233|      0|						}
 1234|       |
 1235|      0|						php_var_serialize_class(buf, &tmp, ht, var_hash);
 1236|      0|						zend_array_release(ht);
 1237|      0|						OBJ_RELEASE(Z_OBJ(tmp));
  ------------------
  |  |   44|      0|#define OBJ_RELEASE(obj) zend_object_release(obj)
  ------------------
 1238|      0|						return;
 1239|      0|					}
 1240|      5|				}
 1241|       |
 1242|      5|				incomplete_class = php_var_serialize_class_name(buf, struc);
 1243|       |
 1244|      5|				if (Z_OBJ_P(struc)->properties == NULL
  ------------------
  |  | 1000|      5|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (1244:9): [True: 1, False: 4]
  ------------------
 1245|      1|				 && Z_OBJ_HT_P(struc)->get_properties_for == NULL
  ------------------
  |  | 1003|      5|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1245:9): [True: 1, False: 0]
  ------------------
 1246|      1|				 && Z_OBJ_HT_P(struc)->get_properties == zend_std_get_properties
  ------------------
  |  | 1003|      5|#define Z_OBJ_HT_P(zval_p)			Z_OBJ_HT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1002|      1|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1246:9): [True: 1, False: 0]
  ------------------
 1247|      1|				 && !zend_object_is_lazy(Z_OBJ_P(struc))) {
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (1247:9): [True: 1, False: 0]
  ------------------
 1248|       |					/* Optimized version without rebuilding properties HashTable */
 1249|      1|					zend_object *obj = Z_OBJ_P(struc);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
 1250|      1|					zend_class_entry *ce = obj->ce;
 1251|      1|					zend_property_info *prop_info;
 1252|      1|					zval *prop;
 1253|      1|					int i;
 1254|       |
 1255|      1|					count = ce->default_properties_count;
 1256|      8|					for (i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (1256:18): [True: 7, False: 1]
  ------------------
 1257|      7|						prop_info = ce->properties_info_table[i];
 1258|      7|						if (!prop_info) {
  ------------------
  |  Branch (1258:11): [True: 0, False: 7]
  ------------------
 1259|      0|							count--;
 1260|      0|							continue;
 1261|      0|						}
 1262|      7|						prop = OBJ_PROP(obj, prop_info->offset);
  ------------------
  |  |  480|      7|	((zval*)((char*)(obj) + offset))
  ------------------
 1263|      7|						if (Z_TYPE_P(prop) == IS_UNDEF) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              						if (Z_TYPE_P(prop) == IS_UNDEF) {
  ------------------
  |  |  606|      7|#define IS_UNDEF					0
  ------------------
  |  Branch (1263:11): [True: 0, False: 7]
  ------------------
 1264|      0|							count--;
 1265|      0|							continue;
 1266|      0|						}
 1267|      7|					}
 1268|      1|					if (count) {
  ------------------
  |  Branch (1268:10): [True: 1, False: 0]
  ------------------
 1269|      1|						smart_str_append_unsigned(buf, count);
 1270|      1|						smart_str_appendl(buf, ":{", 2);
 1271|      8|						for (i = 0; i < ce->default_properties_count; i++) {
  ------------------
  |  Branch (1271:19): [True: 7, False: 1]
  ------------------
 1272|      7|							prop_info = ce->properties_info_table[i];
 1273|      7|							if (!prop_info) {
  ------------------
  |  Branch (1273:12): [True: 0, False: 7]
  ------------------
 1274|      0|								continue;
 1275|      0|							}
 1276|      7|							prop = OBJ_PROP(obj, prop_info->offset);
  ------------------
  |  |  480|      7|	((zval*)((char*)(obj) + offset))
  ------------------
 1277|      7|							if (Z_TYPE_P(prop) == IS_UNDEF) {
  ------------------
  |  |  669|      7|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              							if (Z_TYPE_P(prop) == IS_UNDEF) {
  ------------------
  |  |  606|      7|#define IS_UNDEF					0
  ------------------
  |  Branch (1277:12): [True: 0, False: 7]
  ------------------
 1278|      0|								continue;
 1279|      0|							}
 1280|       |
 1281|      7|							php_var_serialize_string(buf, ZSTR_VAL(prop_info->name), ZSTR_LEN(prop_info->name));
  ------------------
  |  |   67|      7|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							php_var_serialize_string(buf, ZSTR_VAL(prop_info->name), ZSTR_LEN(prop_info->name));
  ------------------
  |  |   68|      7|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1282|       |
 1283|      7|							if (Z_ISREF_P(prop) && Z_REFCOUNT_P(prop) == 1) {
  ------------------
  |  |  964|      7|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     14|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      7|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      7|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              							if (Z_ISREF_P(prop) && Z_REFCOUNT_P(prop) == 1) {
  ------------------
  |  | 1275|      0|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (1283:31): [True: 0, False: 0]
  ------------------
 1284|      0|								prop = Z_REFVAL_P(prop);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1285|      0|							}
 1286|       |
 1287|      7|							php_var_serialize_intern(buf, prop, var_hash, false, false);
 1288|      7|						}
 1289|      1|						smart_str_appendc(buf, '}');
 1290|      1|					} else {
 1291|      0|						smart_str_appendl(buf, "0:{}", 4);
 1292|      0|					}
 1293|      1|					return;
 1294|      1|				}
 1295|      4|				myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_SERIALIZE);
 1296|       |				/* count after serializing name, since php_var_serialize_class_name
 1297|       |				 * changes the count if the variable is incomplete class */
 1298|      4|				count = zend_array_count(myht);
 1299|      4|				if (count > 0 && incomplete_class) {
  ------------------
  |  Branch (1299:9): [True: 3, False: 1]
  |  Branch (1299:22): [True: 0, False: 3]
  ------------------
 1300|      0|					--count;
 1301|      0|				}
 1302|      4|				php_var_serialize_nested_data(buf, struc, myht, count, incomplete_class, var_hash, GC_REFCOUNT(myht) > 1);
  ------------------
  |  |  716|      4|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
 1303|      4|				zend_release_properties(myht);
  ------------------
  |  |  338|      4|#define zend_release_properties(ht) do { \
  |  |  339|      4|	if (ht) { \
  |  |  ------------------
  |  |  |  Branch (339:6): [True: 4, False: 0]
  |  |  ------------------
  |  |  340|      4|		zend_array_release(ht); \
  |  |  341|      4|	} \
  |  |  342|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (342:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1304|      4|				return;
 1305|      5|			}
 1306|     31|		case IS_ARRAY:
  ------------------
  |  |  613|     31|#define IS_ARRAY					7
  ------------------
  |  Branch (1306:3): [True: 31, False: 18]
  ------------------
 1307|     31|			smart_str_appendl(buf, "a:", 2);
 1308|     31|			myht = Z_ARRVAL_P(struc);
  ------------------
  |  |  997|     31|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|     31|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     31|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1309|     31|			php_var_serialize_nested_data(
 1310|     31|				buf, struc, myht, zend_array_count(myht), /* incomplete_class */ false, var_hash,
 1311|     31|				!is_root && (in_rcn_array || GC_REFCOUNT(myht) > 1));
  ------------------
  |  |  716|     25|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (1311:5): [True: 25, False: 6]
  |  Branch (1311:18): [True: 0, False: 25]
  |  Branch (1311:34): [True: 24, False: 1]
  ------------------
 1312|     31|			return;
 1313|      1|		case IS_REFERENCE:
  ------------------
  |  |  616|      1|#define IS_REFERENCE				10
  ------------------
  |  Branch (1313:3): [True: 1, False: 48]
  ------------------
 1314|      1|			struc = Z_REFVAL_P(struc);
  ------------------
  |  | 1033|      1|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      1|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1315|      1|			goto again;
 1316|      0|		default:
  ------------------
  |  Branch (1316:3): [True: 0, False: 49]
  ------------------
 1317|      0|			smart_str_appendl(buf, "i:0;", 4);
 1318|      0|			return;
 1319|     49|	}
 1320|     49|}
var.c:php_serialize_check_stack_limit:
 1041|     51|{
 1042|     51|#ifdef ZEND_CHECK_STACK_LIMIT
 1043|     51|	if (UNEXPECTED(zend_call_stack_overflowed(EG(stack_limit)))) {
  ------------------
  |  |  457|     51|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 51]
  |  |  ------------------
  ------------------
 1044|      0|		zend_call_stack_size_error();
 1045|      0|		return true;
 1046|      0|	}
 1047|     51|#endif
 1048|     51|	return false;
 1049|     51|}
var.c:php_add_var_hash:
  734|     51|{
  735|     51|	zval *zv;
  736|     51|	zend_ulong key;
  737|     51|	bool is_ref = Z_ISREF_P(var);
  ------------------
  |  |  964|     51|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     51|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     51|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     51|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  738|       |
  739|     51|	data->n += 1;
  740|       |
  741|     51|	if (is_ref) {
  ------------------
  |  Branch (741:6): [True: 2, False: 49]
  ------------------
  742|       |		/* pass */
  743|     49|	} else if (Z_TYPE_P(var) != IS_OBJECT) {
  ------------------
  |  |  669|     49|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     49|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	} else if (Z_TYPE_P(var) != IS_OBJECT) {
  ------------------
  |  |  614|     49|#define IS_OBJECT					8
  ------------------
  |  Branch (743:13): [True: 38, False: 11]
  ------------------
  744|     38|		return 0;
  745|     38|	} else if (!in_rcn_array
  ------------------
  |  Branch (745:13): [True: 7, False: 4]
  ------------------
  746|      7|	 && Z_REFCOUNT_P(var) == 1
  ------------------
  |  | 1275|      7|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (746:6): [True: 0, False: 7]
  ------------------
  747|      0|	 && (Z_OBJ_P(var)->properties == NULL || GC_REFCOUNT(Z_OBJ_P(var)->properties) == 1)
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	 && (Z_OBJ_P(var)->properties == NULL || GC_REFCOUNT(Z_OBJ_P(var)->properties) == 1)
  ------------------
  |  |  716|      0|#define GC_REFCOUNT(p)				zend_gc_refcount(&(p)->gc)
  ------------------
  |  Branch (747:7): [True: 0, False: 0]
  |  Branch (747:43): [True: 0, False: 0]
  ------------------
  748|       |	 /* __serialize and __sleep may arbitrarily increase the refcount */
  749|      0|	 && Z_OBJCE_P(var)->__serialize == NULL
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (749:6): [True: 0, False: 0]
  ------------------
  750|      0|	 && zend_hash_find_known_hash(&Z_OBJCE_P(var)->function_table, ZSTR_KNOWN(ZEND_STR_SLEEP)) == NULL) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (750:6): [True: 0, False: 0]
  ------------------
  751|      0|		return 0;
  752|      0|	}
  753|       |
  754|       |	/* References to objects are treated as if the reference didn't exist */
  755|     13|	if (is_ref && Z_TYPE_P(Z_REFVAL_P(var)) == IS_OBJECT) {
  ------------------
  |  |  669|      2|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (is_ref && Z_TYPE_P(Z_REFVAL_P(var)) == IS_OBJECT) {
  ------------------
  |  |  614|      2|#define IS_OBJECT					8
  ------------------
  |  Branch (755:6): [True: 2, False: 11]
  |  Branch (755:16): [True: 0, False: 2]
  ------------------
  756|      0|		var = Z_REFVAL_P(var);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  757|      0|	}
  758|       |
  759|       |	/* Index for the variable is stored using the numeric value of the pointer to
  760|       |	 * the zend_refcounted struct */
  761|     13|	key = (zend_ulong) (uintptr_t) Z_COUNTED_P(var);
  ------------------
  |  |  708|     13|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  707|     13|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  ------------------
  ------------------
  762|     13|	zv = zend_hash_index_find(&data->ht, key);
  763|       |
  764|     13|	if (zv) {
  ------------------
  |  Branch (764:6): [True: 3, False: 10]
  ------------------
  765|       |		/* References are only counted once, undo the data->n increment above */
  766|      3|		if (is_ref && Z_LVAL_P(zv) != -1) {
  ------------------
  |  |  976|      1|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      1|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  |  Branch (766:7): [True: 1, False: 2]
  |  Branch (766:17): [True: 1, False: 0]
  ------------------
  767|      1|			data->n -= 1;
  768|      1|		}
  769|       |
  770|      3|		return Z_LVAL_P(zv);
  ------------------
  |  |  976|      3|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  975|      3|#define Z_LVAL(zval)				(zval).value.lval
  |  |  ------------------
  ------------------
  771|     10|	} else {
  772|     10|		zval zv_n;
  773|     10|		ZVAL_LONG(&zv_n, data->n);
  ------------------
  |  | 1076|     10|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     10|		zval *__z = (z);				\
  |  | 1078|     10|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     10|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     10|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  774|     10|		zend_hash_index_add_new(&data->ht, key, &zv_n);
  775|       |
  776|       |		/* Additionally to the index, we also store the variable, to ensure that it is
  777|       |		 * not destroyed during serialization and its pointer reused. The variable is
  778|       |		 * stored at the numeric value of the pointer + 1, which cannot be the location
  779|       |		 * of another zend_refcounted structure. */
  780|     10|		zend_hash_index_add_new(&data->ht, key + 1, var);
  781|     10|		Z_ADDREF_P(var);
  ------------------
  |  | 1277|     10|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  782|       |
  783|     10|		return 0;
  784|     10|	}
  785|     13|}
var.c:php_var_serialize_long:
  789|      9|{
  790|      9|	char b[32];
  791|      9|	char *s = zend_print_long_to_buf(b + sizeof(b) - 1, val);
  792|      9|	size_t l = b + sizeof(b) - 1 - s;
  793|      9|	char *res = smart_str_extend(buf, 2 + l + 1);
  794|      9|	res = zend_mempcpy(res, "i:", 2);
  795|      9|	memcpy(res, s, l);
  796|      9|	res[l] = ';';
  797|      9|}
var.c:php_var_serialize_string:
  801|     35|{
  802|     35|	char b[32];
  803|     35|	char *s = zend_print_long_to_buf(b + sizeof(b) - 1, len);
  804|     35|	size_t l = b + sizeof(b) - 1 - s;
  805|     35|	char *res = smart_str_extend(buf, 2 + l + 2 + len + 2);
  806|     35|	res = zend_mempcpy(res, "s:", 2);
  807|     35|	res = zend_mempcpy(res, s, l);
  808|     35|	res = zend_mempcpy(res, ":\"", 2);
  809|     35|	res = zend_mempcpy(res, str, len);
  810|     35|	memcpy(res, "\";", 2);
  811|     35|}
var.c:php_var_serialize_class_name:
  815|      5|{
  816|      5|	char b[32];
  817|      5|	PHP_CLASS_ATTRIBUTES;
  ------------------
  |  |   40|      5|	zend_string *class_name;											\
  |  |   41|      5|	bool incomplete_class ZEND_ATTRIBUTE_UNUSED = 0
  ------------------
  818|       |
  819|      5|	PHP_SET_CLASS_ATTRIBUTES(struc);
  ------------------
  |  |   26|      5|	if (Z_OBJCE_P(struc) == php_ce_incomplete_class) {	\
  |  |  ------------------
  |  |  |  | 1012|      5|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1011|      5|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (26:6): [True: 0, False: 5]
  |  |  ------------------
  |  |   27|      0|		class_name = php_lookup_class_name(Z_OBJ_P(struc)); \
  |  |  ------------------
  |  |  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|      0|		if (!class_name) { \
  |  |  ------------------
  |  |  |  Branch (28:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   29|      0|			class_name = zend_string_init(INCOMPLETE_CLASS, sizeof(INCOMPLETE_CLASS) - 1, 0); \
  |  |  ------------------
  |  |  |  |   43|      0|#define INCOMPLETE_CLASS "__PHP_Incomplete_Class"
  |  |  ------------------
  |  |               			class_name = zend_string_init(INCOMPLETE_CLASS, sizeof(INCOMPLETE_CLASS) - 1, 0); \
  |  |  ------------------
  |  |  |  |   43|      0|#define INCOMPLETE_CLASS "__PHP_Incomplete_Class"
  |  |  ------------------
  |  |   30|      0|		} \
  |  |   31|      0|		incomplete_class = 1; \
  |  |   32|      5|	} else { \
  |  |   33|      5|		class_name = zend_string_copy(Z_OBJCE_P(struc)->name); \
  |  |  ------------------
  |  |  |  | 1012|      5|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1011|      5|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      5|	}
  ------------------
  820|      5|	size_t class_name_len = ZSTR_LEN(class_name);
  ------------------
  |  |   68|      5|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  821|      5|	char *s = zend_print_long_to_buf(b + sizeof(b) - 1, class_name_len);
  822|      5|	size_t l = b + sizeof(b) - 1 - s;
  823|      5|	char *res = smart_str_extend(buf, 2 + l + 2 + class_name_len + 2);
  824|      5|	res = zend_mempcpy(res, "O:", 2);
  825|      5|	res = zend_mempcpy(res, s, l);
  826|      5|	res = zend_mempcpy(res, ":\"", 2);
  827|      5|	res = zend_mempcpy(res, ZSTR_VAL(class_name), class_name_len);
  ------------------
  |  |   67|      5|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  828|      5|	memcpy(res, "\":", 2);
  829|      5|	PHP_CLEANUP_CLASS_ATTRIBUTES();
  ------------------
  |  |   37|      5|	zend_string_release_ex(class_name, 0)
  ------------------
  830|      5|	return incomplete_class;
  831|      5|}
var.c:php_var_serialize_nested_data:
  984|     35|{
  985|     35|	smart_str_append_unsigned(buf, count);
  986|     35|	smart_str_appendl(buf, ":{", 2);
  987|     35|	if (count > 0) {
  ------------------
  |  Branch (987:6): [True: 12, False: 23]
  ------------------
  988|     12|		zend_string *key;
  989|     12|		zval *data;
  990|     12|		zend_ulong index;
  991|       |
  992|     72|		ZEND_HASH_FOREACH_KEY_VAL_IND(ht, index, key, data) {
  ------------------
  |  | 1218|     30|	ZEND_HASH_FOREACH(ht, 1); \
  |  |  ------------------
  |  |  |  | 1071|     12|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|     12|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|     12|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|     12|		zend_ulong __h; \
  |  |  |  |  |  | 1048|     12|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|     12|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|     12|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|     12|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     12|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     12|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|     12|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|     12|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|     12|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|     42|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 30, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|     30|			zval *_z = __z; \
  |  |  |  |  |  | 1055|     30|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|     30|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|     30|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|     30|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 6, False: 24]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      6|				__z++; \
  |  |  |  |  |  | 1057|      6|				__h = _idx; \
  |  |  |  |  |  | 1058|      6|				_idx++; \
  |  |  |  |  |  | 1059|     24|			} else { \
  |  |  |  |  |  | 1060|     24|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|     24|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|     24|				__h = _p->h; \
  |  |  |  |  |  | 1063|     24|				__key = _p->key; \
  |  |  |  |  |  | 1064|     24|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|     24|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|     24|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|     48|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [True: 24, Folded]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 1, False: 23]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      1|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      1|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      1|				} \
  |  |  |  |  |  | 1067|     24|			} \
  |  |  |  |  |  | 1068|     30|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|     30|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|     30|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 30]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1219|     30|	_h = __h; \
  |  | 1220|     30|	_key = __key; \
  |  | 1221|     30|	_val = _z;
  ------------------
  993|     72|			if (incomplete_class && zend_string_equals_literal(key, MAGIC_MEMBER)) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (993:8): [True: 0, False: 30]
  ------------------
  994|      0|				incomplete_class = false;
  995|      0|				continue;
  996|      0|			}
  997|       |
  998|     30|			if (!key) {
  ------------------
  |  Branch (998:8): [True: 6, False: 24]
  ------------------
  999|      6|				php_var_serialize_long(buf, index);
 1000|     24|			} else {
 1001|     24|				php_var_serialize_string(buf, ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |   67|     24|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				php_var_serialize_string(buf, ZSTR_VAL(key), ZSTR_LEN(key));
  ------------------
  |  |   68|     24|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1002|     24|			}
 1003|       |
 1004|     30|			if (Z_ISREF_P(data) && Z_REFCOUNT_P(data) == 1) {
  ------------------
  |  |  964|     30|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|     60|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|     30|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 2, False: 28]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_ISREF_P(data) && Z_REFCOUNT_P(data) == 1) {
  ------------------
  |  | 1275|      2|#define Z_REFCOUNT_P(pz)			zval_refcount_p(pz)
  ------------------
  |  Branch (1004:27): [True: 0, False: 2]
  ------------------
 1005|      0|				data = Z_REFVAL_P(data);
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1006|      0|			}
 1007|       |
 1008|       |			/* we should still add element even if it's not OK,
 1009|       |			 * since we already wrote the length of the array before */
 1010|     30|			if (Z_TYPE_P(data) == IS_ARRAY) {
  ------------------
  |  |  669|     30|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|     30|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			if (Z_TYPE_P(data) == IS_ARRAY) {
  ------------------
  |  |  613|     30|#define IS_ARRAY					7
  ------------------
  |  Branch (1010:8): [True: 23, False: 7]
  ------------------
 1011|     23|				if (UNEXPECTED(Z_TYPE_P(struc) == IS_ARRAY && Z_ARR_P(data) == Z_ARR_P(struc))) {
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 23]
  |  |  |  Branch (457:52): [True: 23, False: 0]
  |  |  |  Branch (457:52): [True: 0, False: 23]
  |  |  ------------------
  ------------------
 1012|      0|					php_add_var_hash(var_hash, struc, in_rcn_array);
 1013|      0|					smart_str_appendl(buf, "N;", 2);
 1014|     23|				} else {
 1015|     23|					php_var_serialize_intern(buf, data, var_hash, in_rcn_array, false);
 1016|     23|				}
 1017|     23|			} else {
 1018|      7|				php_var_serialize_intern(buf, data, var_hash, in_rcn_array, false);
 1019|      7|			}
 1020|     30|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|     30|		} \
  |  | 1102|     12|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 12]
  |  |  ------------------
  ------------------
 1021|     12|	}
 1022|     35|	smart_str_appendc(buf, '}');
 1023|     35|}

php_var_unserialize_init:
   60|     48|PHPAPI php_unserialize_data_t php_var_unserialize_init(void) {
   61|     48|	php_unserialize_data_t d;
   62|       |	/* fprintf(stderr, "UNSERIALIZE_INIT    == lock: %u, level: %u\n", BG(serialize_lock), BG(unserialize).level); */
   63|     48|	if (BG(serialize_lock) || !BG(unserialize).level) {
  ------------------
  |  |  113|     96|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 48]
  |  |  ------------------
  ------------------
              	if (BG(serialize_lock) || !BG(unserialize).level) {
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (63:28): [True: 48, False: 0]
  ------------------
   64|     48|		d = emalloc(sizeof(struct php_unserialize_data));
  ------------------
  |  |  150|     48|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     48|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     48|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     48|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     48|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|     48|		d->last = &d->entries;
   66|     48|		d->first_dtor = d->last_dtor = NULL;
   67|     48|		d->allowed_classes = NULL;
   68|     48|		d->ref_props = NULL;
   69|     48|		d->cur_depth = 0;
   70|     48|		d->max_depth = BG(unserialize_max_depth);
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
   71|     48|		d->entries.used_slots = 0;
   72|     48|		d->entries.next = NULL;
   73|     48|		if (!BG(serialize_lock)) {
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (73:7): [True: 48, False: 0]
  ------------------
   74|     48|			BG(unserialize).data = d;
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
   75|     48|			BG(unserialize).level = 1;
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
   76|     48|		}
   77|     48|	} else {
   78|      0|		d = BG(unserialize).data;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   79|      0|		++BG(unserialize).level;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
   80|      0|	}
   81|     48|	return d;
   82|     48|}
php_var_unserialize_destroy:
   84|     48|PHPAPI void php_var_unserialize_destroy(php_unserialize_data_t d) {
   85|       |	/* fprintf(stderr, "UNSERIALIZE_DESTROY == lock: %u, level: %u\n", BG(serialize_lock), BG(unserialize).level); */
   86|     48|	if (BG(serialize_lock) || BG(unserialize).level == 1) {
  ------------------
  |  |  113|     96|#define BG(v) (basic_globals.v)
  |  |  ------------------
  |  |  |  Branch (113:15): [True: 0, False: 48]
  |  |  ------------------
  ------------------
              	if (BG(serialize_lock) || BG(unserialize).level == 1) {
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (86:28): [True: 48, False: 0]
  ------------------
   87|     48|		var_destroy(&d);
   88|     48|		efree(d);
  ------------------
  |  |  154|     48|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     48|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     48|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     48|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     48|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|     48|	}
   90|     48|	if (!BG(serialize_lock) && !--BG(unserialize).level) {
  ------------------
  |  |  113|     96|#define BG(v) (basic_globals.v)
  ------------------
              	if (!BG(serialize_lock) && !--BG(unserialize).level) {
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
  |  Branch (90:6): [True: 48, False: 0]
  |  Branch (90:29): [True: 48, False: 0]
  ------------------
   91|     48|		BG(unserialize).data = NULL;
  ------------------
  |  |  113|     48|#define BG(v) (basic_globals.v)
  ------------------
   92|     48|	}
   93|     48|}
php_var_unserialize_get_allowed_classes:
   95|     48|PHPAPI HashTable *php_var_unserialize_get_allowed_classes(php_unserialize_data_t d) {
   96|     48|	return d->allowed_classes;
   97|     48|}
php_var_unserialize_set_allowed_classes:
   98|     48|PHPAPI void php_var_unserialize_set_allowed_classes(php_unserialize_data_t d, HashTable *classes) {
   99|     48|	d->allowed_classes = classes;
  100|     48|}
php_var_unserialize_set_max_depth:
  102|     48|PHPAPI void php_var_unserialize_set_max_depth(php_unserialize_data_t d, zend_long max_depth) {
  103|     48|	d->max_depth = max_depth;
  104|     48|}
php_var_unserialize_get_max_depth:
  105|     48|PHPAPI zend_long php_var_unserialize_get_max_depth(php_unserialize_data_t d) {
  106|     48|	return d->max_depth;
  107|     48|}
php_var_unserialize_set_cur_depth:
  109|     48|PHPAPI void php_var_unserialize_set_cur_depth(php_unserialize_data_t d, zend_long cur_depth) {
  110|     48|	d->cur_depth = cur_depth;
  111|     48|}
php_var_unserialize_get_cur_depth:
  112|     48|PHPAPI zend_long php_var_unserialize_get_cur_depth(php_unserialize_data_t d) {
  113|     48|	return d->cur_depth;
  114|     48|}
var_tmp_var:
  188|      3|{
  189|      3|    return tmp_var(var_hashx, 1);
  190|      3|}
var_destroy:
  231|     48|{
  232|     48|	void *next;
  233|     48|	zend_long i;
  234|     48|	var_entries *var_hash = (*var_hashx)->entries.next;
  235|     48|	var_dtor_entries *var_dtor_hash = (*var_hashx)->first_dtor;
  236|     48|	bool delayed_call_failed = 0;
  237|       |
  238|       |#if VAR_ENTRIES_DBG
  239|       |	fprintf(stderr, "var_destroy( " ZEND_LONG_FMT ")\n", var_hash?var_hash->used_slots:-1L);
  240|       |#endif
  241|       |
  242|     48|	while (var_hash) {
  ------------------
  |  Branch (242:9): [True: 0, False: 48]
  ------------------
  243|      0|		next = var_hash->next;
  244|      0|		efree_size(var_hash, sizeof(var_entries));
  ------------------
  |  |  138|      0|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  245|      0|		var_hash = next;
  246|      0|	}
  247|       |
  248|     50|	while (var_dtor_hash) {
  ------------------
  |  Branch (248:9): [True: 2, False: 48]
  ------------------
  249|      7|		for (i = 0; i < var_dtor_hash->used_slots; i++) {
  ------------------
  |  Branch (249:15): [True: 5, False: 2]
  ------------------
  250|      5|			zval *zv = &var_dtor_hash->data[i];
  251|       |#if VAR_ENTRIES_DBG
  252|       |			fprintf(stderr, "var_destroy dtor(%p, %ld)\n", &var_dtor_hash->data[i], Z_REFCOUNT_P(&var_dtor_hash->data[i]));
  253|       |#endif
  254|       |
  255|      5|			if (Z_EXTRA_P(zv) == VAR_WAKEUP_FLAG) {
  ------------------
  |  |  705|      5|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      5|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			if (Z_EXTRA_P(zv) == VAR_WAKEUP_FLAG) {
  ------------------
  |  |   30|      5|#define VAR_WAKEUP_FLAG 1
  ------------------
  |  Branch (255:8): [True: 1, False: 4]
  ------------------
  256|       |				/* Perform delayed __wakeup calls */
  257|      1|				if (!delayed_call_failed) {
  ------------------
  |  Branch (257:9): [True: 1, False: 0]
  ------------------
  258|      1|					zval retval;
  259|      1|					zend_fcall_info fci;
  260|      1|					zend_fcall_info_cache fci_cache;
  261|       |
  262|      1|					ZEND_ASSERT(Z_TYPE_P(zv) == IS_OBJECT);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (262:6): [True: 0, False: 1]
  |  Branch (262:6): [True: 1, False: 0]
  ------------------
  263|       |
  264|      1|					fci.size = sizeof(fci);
  265|      1|					fci.object = Z_OBJ_P(zv);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  266|      1|					fci.retval = &retval;
  267|      1|					fci.param_count = 0;
  268|      1|					fci.params = NULL;
  269|      1|					fci.named_params = NULL;
  270|      1|					ZVAL_UNDEF(&fci.function_name);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  271|       |
  272|      1|					fci_cache.function_handler = zend_hash_find_ptr(
  273|      1|						&fci.object->ce->function_table, ZSTR_KNOWN(ZEND_STR_WAKEUP));
  274|      1|					fci_cache.object = fci.object;
  275|      1|					fci_cache.called_scope = fci.object->ce;
  276|       |
  277|      1|					BG(serialize_lock)++;
  ------------------
  |  |  113|      1|#define BG(v) (basic_globals.v)
  ------------------
  278|      1|					if (zend_call_function(&fci, &fci_cache) == FAILURE || Z_ISUNDEF(retval)) {
  ------------------
  |  |  966|      1|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (278:10): [True: 0, False: 1]
  ------------------
  279|      0|						delayed_call_failed = 1;
  280|      0|						GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  281|      0|					}
  282|      1|					BG(serialize_lock)--;
  ------------------
  |  |  113|      1|#define BG(v) (basic_globals.v)
  ------------------
  283|       |
  284|      1|					zval_ptr_dtor(&retval);
  285|      1|				} else {
  286|      0|					GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  287|      0|				}
  288|      4|			} else if (Z_EXTRA_P(zv) == VAR_UNSERIALIZE_FLAG) {
  ------------------
  |  |  705|      4|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      4|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              			} else if (Z_EXTRA_P(zv) == VAR_UNSERIALIZE_FLAG) {
  ------------------
  |  |   31|      4|#define VAR_UNSERIALIZE_FLAG 2
  ------------------
  |  Branch (288:15): [True: 1, False: 3]
  ------------------
  289|       |				/* Perform delayed __unserialize calls */
  290|      1|				if (!delayed_call_failed) {
  ------------------
  |  Branch (290:9): [True: 1, False: 0]
  ------------------
  291|      1|					zval param;
  292|      1|					ZVAL_COPY(&param, &var_dtor_hash->data[i + 1]);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  293|       |
  294|      1|					BG(serialize_lock)++;
  ------------------
  |  |  113|      1|#define BG(v) (basic_globals.v)
  ------------------
  295|      1|					zend_call_known_instance_method_with_1_params(
  296|      1|						Z_OBJCE_P(zv)->__unserialize, Z_OBJ_P(zv), NULL, &param);
  ------------------
  |  | 1012|      1|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      1|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              						Z_OBJCE_P(zv)->__unserialize, Z_OBJ_P(zv), NULL, &param);
  ------------------
  |  | 1000|      1|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  297|      1|					if (EG(exception)) {
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  298|      0|						delayed_call_failed = 1;
  299|      0|						GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  300|      0|					}
  301|      1|					BG(serialize_lock)--;
  ------------------
  |  |  113|      1|#define BG(v) (basic_globals.v)
  ------------------
  302|      1|					zval_ptr_dtor(&param);
  303|      1|				} else {
  304|      0|					GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      0|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      0|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      0|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  305|      0|				}
  306|      1|			}
  307|       |
  308|      5|			i_zval_ptr_dtor(zv);
  309|      5|		}
  310|      2|		next = var_dtor_hash->next;
  311|      2|		efree_size(var_dtor_hash, sizeof(var_dtor_entries));
  ------------------
  |  |  138|      2|	efree(ptr)
  |  |  ------------------
  |  |  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|      2|		var_dtor_hash = next;
  313|      2|	}
  314|       |
  315|     48|	if ((*var_hashx)->ref_props) {
  ------------------
  |  Branch (315:6): [True: 1, False: 47]
  ------------------
  316|      1|		zend_hash_destroy((*var_hashx)->ref_props);
  317|       |		FREE_HASHTABLE((*var_hashx)->ref_props);
  ------------------
  |  |  235|      1|	efree_size(ht, sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  138|      1|	efree(ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|      1|	}
  319|     48|}
php_var_unserialize:
  847|     48|{
  848|     48|	var_entries *orig_var_entries = (*var_hash)->last;
  849|     48|	zend_long orig_used_slots = orig_var_entries ? orig_var_entries->used_slots : 0;
  ------------------
  |  Branch (849:30): [True: 48, False: 0]
  ------------------
  850|     48|	int result;
  851|       |
  852|     48|	result = php_var_unserialize_internal(UNSERIALIZE_PASSTHRU);
  ------------------
  |  |  453|     48|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
  853|       |
  854|     48|	if (!result) {
  ------------------
  |  Branch (854:6): [True: 42, False: 6]
  ------------------
  855|       |		/* If the unserialization failed, mark all elements that have been added to var_hash
  856|       |		 * as NULL. This will forbid their use by other unserialize() calls in the same
  857|       |		 * unserialization context. */
  858|     42|		var_entries *e = orig_var_entries;
  859|     42|		zend_long s = orig_used_slots;
  860|     84|		while (e) {
  ------------------
  |  Branch (860:10): [True: 42, False: 42]
  ------------------
  861|     91|			for (; s < e->used_slots; s++) {
  ------------------
  |  Branch (861:11): [True: 49, False: 42]
  ------------------
  862|     49|				e->data[s] = NULL;
  863|     49|			}
  864|       |
  865|     42|			e = e->next;
  866|     42|			s = 0;
  867|     42|		}
  868|     42|	}
  869|       |
  870|     48|	return result;
  871|     48|}
var_unserializer.c:tmp_var:
  158|      4|{
  159|      4|    var_dtor_entries *var_hash;
  160|      4|	zend_long used_slots;
  161|       |
  162|      4|    if (!var_hashx || !*var_hashx || num < 1) {
  ------------------
  |  Branch (162:9): [True: 0, False: 4]
  |  Branch (162:23): [True: 0, False: 4]
  |  Branch (162:38): [True: 0, False: 4]
  ------------------
  163|      0|        return NULL;
  164|      0|    }
  165|       |
  166|      4|    var_hash = (*var_hashx)->last_dtor;
  167|      4|    if (!var_hash || var_hash->used_slots + num > VAR_DTOR_ENTRIES_MAX) {
  ------------------
  |  |   25|      2|#define VAR_DTOR_ENTRIES_MAX 255 /* 256 - offsetof(var_dtor_entries, data) / sizeof(zval) */
  ------------------
  |  Branch (167:9): [True: 2, False: 2]
  |  Branch (167:22): [True: 0, False: 2]
  ------------------
  168|      2|        var_hash = emalloc(sizeof(var_dtor_entries));
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|      2|        var_hash->used_slots = 0;
  170|      2|        var_hash->next = 0;
  171|       |
  172|      2|        if (!(*var_hashx)->first_dtor) {
  ------------------
  |  Branch (172:13): [True: 2, False: 0]
  ------------------
  173|      2|            (*var_hashx)->first_dtor = var_hash;
  174|      2|        } else {
  175|      0|            (*var_hashx)->last_dtor->next = var_hash;
  176|      0|        }
  177|       |
  178|      2|        (*var_hashx)->last_dtor = var_hash;
  179|      2|    }
  180|      9|	for (used_slots = var_hash->used_slots; var_hash->used_slots < used_slots + num; var_hash->used_slots++) {
  ------------------
  |  Branch (180:42): [True: 5, False: 4]
  ------------------
  181|      5|		ZVAL_UNDEF(&var_hash->data[var_hash->used_slots]);
  ------------------
  |  | 1055|      5|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      5|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      5|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      5|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      5|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      5|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 5]
  |  |  ------------------
  ------------------
  182|      5|		Z_EXTRA(var_hash->data[var_hash->used_slots]) = 0;
  ------------------
  |  |  704|      5|#define Z_EXTRA(zval)				(zval).u2.extra
  ------------------
  183|      5|	}
  184|      4|    return &var_hash->data[used_slots];
  185|      4|}
var_unserializer.c:php_var_unserialize_internal:
  874|    106|{
  875|    106|	const unsigned char *cursor, *limit, *marker, *start;
  876|    106|	zval *rval_ref;
  877|       |
  878|    106|	limit = max;
  879|    106|	cursor = *p;
  880|       |
  881|    106|	if (YYCURSOR >= YYLIMIT) {
  ------------------
  |  |  378|    106|#define YYCURSOR cursor
  ------------------
              	if (YYCURSOR >= YYLIMIT) {
  ------------------
  |  |  379|    106|#define YYLIMIT limit
  ------------------
  |  Branch (881:6): [True: 0, False: 106]
  ------------------
  882|      0|		return 0;
  883|      0|	}
  884|       |
  885|    106|	if (var_hash && (*p)[0] != 'R') {
  ------------------
  |  Branch (885:6): [True: 74, False: 32]
  |  Branch (885:18): [True: 73, False: 1]
  ------------------
  886|     73|		var_push(var_hash, rval);
  887|     73|	}
  888|       |
  889|    106|	start = cursor;
  890|       |
  891|       |
  892|    106|#line 893 "ext/standard/var_unserializer.c"
  893|    106|{
  894|    106|	YYCTYPE yych;
  ------------------
  |  |  377|    106|#define YYCTYPE unsigned char
  ------------------
  895|    106|	static const unsigned char yybm[] = {
  896|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  897|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  898|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  899|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  900|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  901|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  902|    106|		128, 128, 128, 128, 128, 128, 128, 128, 
  903|    106|		128, 128,   0,   0,   0,   0,   0,   0, 
  904|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  905|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  906|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  907|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  908|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  909|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  910|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  911|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  912|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  913|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  914|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  915|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  916|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  917|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  918|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  919|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  920|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  921|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  922|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  923|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  924|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  925|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  926|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  927|    106|		  0,   0,   0,   0,   0,   0,   0,   0, 
  928|    106|	};
  929|    106|	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  ------------------
  |  |  379|    106|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  ------------------
  |  |  378|    106|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  ------------------
  |  |  376|      4|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 4]
  |  |  ------------------
  ------------------
  |  Branch (929:6): [True: 4, False: 102]
  ------------------
  930|    106|	yych = *YYCURSOR;
  ------------------
  |  |  378|    106|#define YYCURSOR cursor
  ------------------
  931|    106|	switch (yych) {
  932|      1|	case 'C':
  ------------------
  |  Branch (932:2): [True: 1, False: 105]
  ------------------
  933|     26|	case 'O':	goto yy4;
  ------------------
  |  Branch (933:2): [True: 25, False: 81]
  ------------------
  934|     14|	case 'E':	goto yy5;
  ------------------
  |  Branch (934:2): [True: 14, False: 92]
  ------------------
  935|      3|	case 'N':	goto yy6;
  ------------------
  |  Branch (935:2): [True: 3, False: 103]
  ------------------
  936|      2|	case 'R':	goto yy7;
  ------------------
  |  Branch (936:2): [True: 2, False: 104]
  ------------------
  937|      3|	case 'S':	goto yy8;
  ------------------
  |  Branch (937:2): [True: 3, False: 103]
  ------------------
  938|     22|	case 'a':	goto yy9;
  ------------------
  |  Branch (938:2): [True: 22, False: 84]
  ------------------
  939|      0|	case 'b':	goto yy10;
  ------------------
  |  Branch (939:2): [True: 0, False: 106]
  ------------------
  940|      1|	case 'd':	goto yy11;
  ------------------
  |  Branch (940:2): [True: 1, False: 105]
  ------------------
  941|     10|	case 'i':	goto yy12;
  ------------------
  |  Branch (941:2): [True: 10, False: 96]
  ------------------
  942|      0|	case 'r':	goto yy13;
  ------------------
  |  Branch (942:2): [True: 0, False: 106]
  ------------------
  943|     24|	case 's':	goto yy14;
  ------------------
  |  Branch (943:2): [True: 24, False: 82]
  ------------------
  944|      0|	case '}':	goto yy15;
  ------------------
  |  Branch (944:2): [True: 0, False: 106]
  ------------------
  945|      1|	default:	goto yy2;
  ------------------
  |  Branch (945:2): [True: 1, False: 105]
  ------------------
  946|    106|	}
  947|      1|yy2:
  948|      1|	++YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
  949|     18|yy3:
  950|     18|#line 1435 "ext/standard/var_unserializer.re"
  951|     18|	{ return 0; }
  952|      0|#line 953 "ext/standard/var_unserializer.c"
  953|     26|yy4:
  954|     26|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|     26|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|     26|#define YYCURSOR cursor
  ------------------
  955|     26|	if (yych == ':') goto yy17;
  ------------------
  |  Branch (955:6): [True: 25, False: 1]
  ------------------
  956|      1|	goto yy3;
  957|     14|yy5:
  958|     14|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|     14|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|     14|#define YYCURSOR cursor
  ------------------
  959|     14|	if (yych == ':') goto yy19;
  ------------------
  |  Branch (959:6): [True: 13, False: 1]
  ------------------
  960|      1|	goto yy3;
  961|      3|yy6:
  962|      3|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      3|#define YYCURSOR cursor
  ------------------
  963|      3|	if (yych == ';') goto yy20;
  ------------------
  |  Branch (963:6): [True: 2, False: 1]
  ------------------
  964|      1|	goto yy3;
  965|      2|yy7:
  966|      2|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|      2|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
  967|      2|	if (yych == ':') goto yy22;
  ------------------
  |  Branch (967:6): [True: 1, False: 1]
  ------------------
  968|      1|	goto yy3;
  969|      3|yy8:
  970|      3|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|      3|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|      3|#define YYCURSOR cursor
  ------------------
  971|      3|	if (yych == ':') goto yy23;
  ------------------
  |  Branch (971:6): [True: 3, False: 0]
  ------------------
  972|      0|	goto yy3;
  973|     22|yy9:
  974|     22|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|     22|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|     22|#define YYCURSOR cursor
  ------------------
  975|     22|	if (yych == ':') goto yy24;
  ------------------
  |  Branch (975:6): [True: 22, False: 0]
  ------------------
  976|      0|	goto yy3;
  977|      0|yy10:
  978|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|      0|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
  979|      0|	if (yych == ':') goto yy25;
  ------------------
  |  Branch (979:6): [True: 0, False: 0]
  ------------------
  980|      0|	goto yy3;
  981|      1|yy11:
  982|      1|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|      1|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
  983|      1|	if (yych == ':') goto yy26;
  ------------------
  |  Branch (983:6): [True: 0, False: 1]
  ------------------
  984|      1|	goto yy3;
  985|     10|yy12:
  986|     10|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|     10|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|     10|#define YYCURSOR cursor
  ------------------
  987|     10|	if (yych == ':') goto yy27;
  ------------------
  |  Branch (987:6): [True: 10, False: 0]
  ------------------
  988|      0|	goto yy3;
  989|      0|yy13:
  990|      0|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|      0|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
  991|      0|	if (yych == ':') goto yy28;
  ------------------
  |  Branch (991:6): [True: 0, False: 0]
  ------------------
  992|      0|	goto yy3;
  993|     24|yy14:
  994|     24|	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  380|     24|#define YYMARKER marker
  ------------------
              	yych = *(YYMARKER = ++YYCURSOR);
  ------------------
  |  |  378|     24|#define YYCURSOR cursor
  ------------------
  995|     24|	if (yych == ':') goto yy29;
  ------------------
  |  Branch (995:6): [True: 24, False: 0]
  ------------------
  996|      0|	goto yy3;
  997|      0|yy15:
  998|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
  999|      0|#line 1429 "ext/standard/var_unserializer.re"
 1000|      0|	{
 1001|       |	/* this is the case where we have less data than planned */
 1002|      0|	php_error_docref(NULL, E_WARNING, "Unexpected end of serialized data");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1003|      0|	return 0; /* not sure if it should be 0 or 1 here? */
 1004|     24|}
 1005|      0|#line 1006 "ext/standard/var_unserializer.c"
 1006|     25|yy17:
 1007|     25|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     25|#define YYCURSOR cursor
  ------------------
 1008|     25|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (1008:6): [True: 25, False: 0]
  ------------------
 1009|     25|		goto yy30;
 1010|     25|	}
 1011|     12|yy18:
 1012|     12|	YYCURSOR = YYMARKER;
  ------------------
  |  |  378|     12|#define YYCURSOR cursor
  ------------------
              	YYCURSOR = YYMARKER;
  ------------------
  |  |  380|     12|#define YYMARKER marker
  ------------------
 1013|     12|	goto yy3;
 1014|     13|yy19:
 1015|     13|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     13|#define YYCURSOR cursor
  ------------------
 1016|     13|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1016:6): [True: 0, False: 13]
  ------------------
 1017|     13|	if (yych <= '9') goto yy32;
  ------------------
  |  Branch (1017:6): [True: 12, False: 1]
  ------------------
 1018|      1|	goto yy18;
 1019|      2|yy20:
 1020|      2|	++YYCURSOR;
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
 1021|      2|#line 953 "ext/standard/var_unserializer.re"
 1022|      2|	{
 1023|      2|	*p = YYCURSOR;
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
 1024|      2|	ZVAL_NULL(rval);
  ------------------
  |  | 1059|      2|#define ZVAL_NULL(z) do {				\
  |  | 1060|      2|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      2|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1025|      2|	return 1;
 1026|     13|}
 1027|      0|#line 1028 "ext/standard/var_unserializer.c"
 1028|      1|yy22:
 1029|      1|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1030|      1|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1030:6): [True: 0, False: 1]
  ------------------
 1031|      1|	if (yych <= '9') goto yy34;
  ------------------
  |  Branch (1031:6): [True: 1, False: 0]
  ------------------
 1032|      0|	goto yy18;
 1033|      3|yy23:
 1034|      3|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      3|#define YYCURSOR cursor
  ------------------
 1035|      3|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1035:6): [True: 0, False: 3]
  ------------------
 1036|      3|	if (yych <= '9') goto yy36;
  ------------------
  |  Branch (1036:6): [True: 2, False: 1]
  ------------------
 1037|      1|	goto yy18;
 1038|     22|yy24:
 1039|     22|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     22|#define YYCURSOR cursor
  ------------------
 1040|     22|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1040:6): [True: 0, False: 22]
  ------------------
 1041|     22|	if (yych <= '9') goto yy38;
  ------------------
  |  Branch (1041:6): [True: 22, False: 0]
  ------------------
 1042|      0|	goto yy18;
 1043|      0|yy25:
 1044|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1045|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1045:6): [True: 0, False: 0]
  ------------------
 1046|      0|	if (yych <= '0') goto yy40;
  ------------------
  |  Branch (1046:6): [True: 0, False: 0]
  ------------------
 1047|      0|	if (yych <= '1') goto yy41;
  ------------------
  |  Branch (1047:6): [True: 0, False: 0]
  ------------------
 1048|      0|	goto yy18;
 1049|      0|yy26:
 1050|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1051|      0|	if (yych <= '/') {
  ------------------
  |  Branch (1051:6): [True: 0, False: 0]
  ------------------
 1052|      0|		if (yych <= ',') {
  ------------------
  |  Branch (1052:7): [True: 0, False: 0]
  ------------------
 1053|      0|			if (yych == '+') goto yy42;
  ------------------
  |  Branch (1053:8): [True: 0, False: 0]
  ------------------
 1054|      0|			goto yy18;
 1055|      0|		} else {
 1056|      0|			if (yych <= '-') goto yy43;
  ------------------
  |  Branch (1056:8): [True: 0, False: 0]
  ------------------
 1057|      0|			if (yych <= '.') goto yy44;
  ------------------
  |  Branch (1057:8): [True: 0, False: 0]
  ------------------
 1058|      0|			goto yy18;
 1059|      0|		}
 1060|      0|	} else {
 1061|      0|		if (yych <= 'I') {
  ------------------
  |  Branch (1061:7): [True: 0, False: 0]
  ------------------
 1062|      0|			if (yych <= '9') goto yy45;
  ------------------
  |  Branch (1062:8): [True: 0, False: 0]
  ------------------
 1063|      0|			if (yych <= 'H') goto yy18;
  ------------------
  |  Branch (1063:8): [True: 0, False: 0]
  ------------------
 1064|      0|			goto yy47;
 1065|      0|		} else {
 1066|      0|			if (yych == 'N') goto yy48;
  ------------------
  |  Branch (1066:8): [True: 0, False: 0]
  ------------------
 1067|      0|			goto yy18;
 1068|      0|		}
 1069|      0|	}
 1070|     10|yy27:
 1071|     10|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     10|#define YYCURSOR cursor
  ------------------
 1072|     10|	if (yych <= ',') {
  ------------------
  |  Branch (1072:6): [True: 0, False: 10]
  ------------------
 1073|      0|		if (yych == '+') goto yy49;
  ------------------
  |  Branch (1073:7): [True: 0, False: 0]
  ------------------
 1074|      0|		goto yy18;
 1075|     10|	} else {
 1076|     10|		if (yych <= '-') goto yy49;
  ------------------
  |  Branch (1076:7): [True: 0, False: 10]
  ------------------
 1077|     10|		if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1077:7): [True: 0, False: 10]
  ------------------
 1078|     10|		if (yych <= '9') goto yy50;
  ------------------
  |  Branch (1078:7): [True: 10, False: 0]
  ------------------
 1079|      0|		goto yy18;
 1080|     10|	}
 1081|      0|yy28:
 1082|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1083|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1083:6): [True: 0, False: 0]
  ------------------
 1084|      0|	if (yych <= '9') goto yy52;
  ------------------
  |  Branch (1084:6): [True: 0, False: 0]
  ------------------
 1085|      0|	goto yy18;
 1086|     24|yy29:
 1087|     24|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     24|#define YYCURSOR cursor
  ------------------
 1088|     24|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1088:6): [True: 0, False: 24]
  ------------------
 1089|     24|	if (yych <= '9') goto yy54;
  ------------------
  |  Branch (1089:6): [True: 24, False: 0]
  ------------------
 1090|      0|	goto yy18;
 1091|     50|yy30:
 1092|     50|	++YYCURSOR;
  ------------------
  |  |  378|     50|#define YYCURSOR cursor
  ------------------
 1093|     50|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  379|     50|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  378|     50|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1093:6): [True: 0, False: 50]
  ------------------
 1094|     50|	yych = *YYCURSOR;
  ------------------
  |  |  378|     50|#define YYCURSOR cursor
  ------------------
 1095|     50|	if (yybm[0+yych] & 128) {
  ------------------
  |  Branch (1095:6): [True: 25, False: 25]
  ------------------
 1096|     25|		goto yy30;
 1097|     25|	}
 1098|     25|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1098:6): [True: 1, False: 24]
  ------------------
 1099|     24|	if (yych <= ':') goto yy56;
  ------------------
  |  Branch (1099:6): [True: 21, False: 3]
  ------------------
 1100|      3|	goto yy18;
 1101|     33|yy32:
 1102|     33|	++YYCURSOR;
  ------------------
  |  |  378|     33|#define YYCURSOR cursor
  ------------------
 1103|     33|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  379|     33|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  378|     33|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  376|      1|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1103:6): [True: 1, False: 32]
  ------------------
 1104|     33|	yych = *YYCURSOR;
  ------------------
  |  |  378|     33|#define YYCURSOR cursor
  ------------------
 1105|     33|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1105:6): [True: 1, False: 32]
  ------------------
 1106|     32|	if (yych <= '9') goto yy32;
  ------------------
  |  Branch (1106:6): [True: 21, False: 11]
  ------------------
 1107|     11|	if (yych <= ':') goto yy57;
  ------------------
  |  Branch (1107:6): [True: 10, False: 1]
  ------------------
 1108|      1|	goto yy18;
 1109|      1|yy34:
 1110|      1|	++YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1111|      1|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  379|      1|#define YYLIMIT limit
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1111:6): [True: 0, False: 1]
  ------------------
 1112|      1|	yych = *YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1113|      1|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1113:6): [True: 0, False: 1]
  ------------------
 1114|      1|	if (yych <= '9') goto yy34;
  ------------------
  |  Branch (1114:6): [True: 0, False: 1]
  ------------------
 1115|      1|	if (yych == ';') goto yy58;
  ------------------
  |  Branch (1115:6): [True: 1, False: 0]
  ------------------
 1116|      0|	goto yy18;
 1117|      4|yy36:
 1118|      4|	++YYCURSOR;
  ------------------
  |  |  378|      4|#define YYCURSOR cursor
  ------------------
 1119|      4|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  379|      4|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  378|      4|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1119:6): [True: 0, False: 4]
  ------------------
 1120|      4|	yych = *YYCURSOR;
  ------------------
  |  |  378|      4|#define YYCURSOR cursor
  ------------------
 1121|      4|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1121:6): [True: 0, False: 4]
  ------------------
 1122|      4|	if (yych <= '9') goto yy36;
  ------------------
  |  Branch (1122:6): [True: 2, False: 2]
  ------------------
 1123|      2|	if (yych <= ':') goto yy60;
  ------------------
  |  Branch (1123:6): [True: 2, False: 0]
  ------------------
 1124|      0|	goto yy18;
 1125|     33|yy38:
 1126|     33|	++YYCURSOR;
  ------------------
  |  |  378|     33|#define YYCURSOR cursor
  ------------------
 1127|     33|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  379|     33|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  378|     33|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1127:6): [True: 0, False: 33]
  ------------------
 1128|     33|	yych = *YYCURSOR;
  ------------------
  |  |  378|     33|#define YYCURSOR cursor
  ------------------
 1129|     33|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1129:6): [True: 0, False: 33]
  ------------------
 1130|     33|	if (yych <= '9') goto yy38;
  ------------------
  |  Branch (1130:6): [True: 11, False: 22]
  ------------------
 1131|     22|	if (yych <= ':') goto yy61;
  ------------------
  |  Branch (1131:6): [True: 21, False: 1]
  ------------------
 1132|      1|	goto yy18;
 1133|      1|yy40:
 1134|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1135|      0|	if (yych == ';') goto yy62;
  ------------------
  |  Branch (1135:6): [True: 0, False: 0]
  ------------------
 1136|      0|	goto yy18;
 1137|      0|yy41:
 1138|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1139|      0|	if (yych == ';') goto yy64;
  ------------------
  |  Branch (1139:6): [True: 0, False: 0]
  ------------------
 1140|      0|	goto yy18;
 1141|      0|yy42:
 1142|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1143|      0|	if (yych == '.') goto yy44;
  ------------------
  |  Branch (1143:6): [True: 0, False: 0]
  ------------------
 1144|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1144:6): [True: 0, False: 0]
  ------------------
 1145|      0|	if (yych <= '9') goto yy45;
  ------------------
  |  Branch (1145:6): [True: 0, False: 0]
  ------------------
 1146|      0|	goto yy18;
 1147|      0|yy43:
 1148|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1149|      0|	if (yych <= '/') {
  ------------------
  |  Branch (1149:6): [True: 0, False: 0]
  ------------------
 1150|      0|		if (yych != '.') goto yy18;
  ------------------
  |  Branch (1150:7): [True: 0, False: 0]
  ------------------
 1151|      0|	} else {
 1152|      0|		if (yych <= '9') goto yy45;
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|		if (yych == 'I') goto yy47;
  ------------------
  |  Branch (1153:7): [True: 0, False: 0]
  ------------------
 1154|      0|		goto yy18;
 1155|      0|	}
 1156|      0|yy44:
 1157|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1158|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1158:6): [True: 0, False: 0]
  ------------------
 1159|      0|	if (yych <= '9') goto yy66;
  ------------------
  |  Branch (1159:6): [True: 0, False: 0]
  ------------------
 1160|      0|	goto yy18;
 1161|      0|yy45:
 1162|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1163|      0|	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  ------------------
  |  |  379|      0|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1163:6): [True: 0, False: 0]
  ------------------
 1164|      0|	yych = *YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1165|      0|	if (yych <= ':') {
  ------------------
  |  Branch (1165:6): [True: 0, False: 0]
  ------------------
 1166|      0|		if (yych <= '.') {
  ------------------
  |  Branch (1166:7): [True: 0, False: 0]
  ------------------
 1167|      0|			if (yych <= '-') goto yy18;
  ------------------
  |  Branch (1167:8): [True: 0, False: 0]
  ------------------
 1168|      0|			goto yy66;
 1169|      0|		} else {
 1170|      0|			if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1170:8): [True: 0, False: 0]
  ------------------
 1171|      0|			if (yych <= '9') goto yy45;
  ------------------
  |  Branch (1171:8): [True: 0, False: 0]
  ------------------
 1172|      0|			goto yy18;
 1173|      0|		}
 1174|      0|	} else {
 1175|      0|		if (yych <= 'E') {
  ------------------
  |  Branch (1175:7): [True: 0, False: 0]
  ------------------
 1176|      0|			if (yych <= ';') goto yy68;
  ------------------
  |  Branch (1176:8): [True: 0, False: 0]
  ------------------
 1177|      0|			if (yych <= 'D') goto yy18;
  ------------------
  |  Branch (1177:8): [True: 0, False: 0]
  ------------------
 1178|      0|			goto yy70;
 1179|      0|		} else {
 1180|      0|			if (yych == 'e') goto yy70;
  ------------------
  |  Branch (1180:8): [True: 0, False: 0]
  ------------------
 1181|      0|			goto yy18;
 1182|      0|		}
 1183|      0|	}
 1184|      0|yy47:
 1185|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1186|      0|	if (yych == 'N') goto yy71;
  ------------------
  |  Branch (1186:6): [True: 0, False: 0]
  ------------------
 1187|      0|	goto yy18;
 1188|      0|yy48:
 1189|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1190|      0|	if (yych == 'A') goto yy72;
  ------------------
  |  Branch (1190:6): [True: 0, False: 0]
  ------------------
 1191|      0|	goto yy18;
 1192|      0|yy49:
 1193|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1194|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1194:6): [True: 0, False: 0]
  ------------------
 1195|      0|	if (yych >= ':') goto yy18;
  ------------------
  |  Branch (1195:6): [True: 0, False: 0]
  ------------------
 1196|     12|yy50:
 1197|     12|	++YYCURSOR;
  ------------------
  |  |  378|     12|#define YYCURSOR cursor
  ------------------
 1198|     12|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  379|     12|#define YYLIMIT limit
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  378|     12|#define YYCURSOR cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1198:6): [True: 0, False: 12]
  ------------------
 1199|     12|	yych = *YYCURSOR;
  ------------------
  |  |  378|     12|#define YYCURSOR cursor
  ------------------
 1200|     12|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1200:6): [True: 0, False: 12]
  ------------------
 1201|     12|	if (yych <= '9') goto yy50;
  ------------------
  |  Branch (1201:6): [True: 2, False: 10]
  ------------------
 1202|     10|	if (yych == ';') goto yy73;
  ------------------
  |  Branch (1202:6): [True: 10, False: 0]
  ------------------
 1203|      0|	goto yy18;
 1204|      0|yy52:
 1205|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1206|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  379|      0|#define YYLIMIT limit
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1206:6): [True: 0, False: 0]
  ------------------
 1207|      0|	yych = *YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1208|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1208:6): [True: 0, False: 0]
  ------------------
 1209|      0|	if (yych <= '9') goto yy52;
  ------------------
  |  Branch (1209:6): [True: 0, False: 0]
  ------------------
 1210|      0|	if (yych == ';') goto yy75;
  ------------------
  |  Branch (1210:6): [True: 0, False: 0]
  ------------------
 1211|      0|	goto yy18;
 1212|     31|yy54:
 1213|     31|	++YYCURSOR;
  ------------------
  |  |  378|     31|#define YYCURSOR cursor
  ------------------
 1214|     31|	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  379|     31|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  378|     31|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1214:6): [True: 0, False: 31]
  ------------------
 1215|     31|	yych = *YYCURSOR;
  ------------------
  |  |  378|     31|#define YYCURSOR cursor
  ------------------
 1216|     31|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1216:6): [True: 0, False: 31]
  ------------------
 1217|     31|	if (yych <= '9') goto yy54;
  ------------------
  |  Branch (1217:6): [True: 7, False: 24]
  ------------------
 1218|     24|	if (yych <= ':') goto yy77;
  ------------------
  |  Branch (1218:6): [True: 24, False: 0]
  ------------------
 1219|      0|	goto yy18;
 1220|     21|yy56:
 1221|     21|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     21|#define YYCURSOR cursor
  ------------------
 1222|     21|	if (yych == '"') goto yy78;
  ------------------
  |  Branch (1222:6): [True: 20, False: 1]
  ------------------
 1223|      1|	goto yy18;
 1224|     10|yy57:
 1225|     10|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     10|#define YYCURSOR cursor
  ------------------
 1226|     10|	if (yych == '"') goto yy80;
  ------------------
  |  Branch (1226:6): [True: 9, False: 1]
  ------------------
 1227|      1|	goto yy18;
 1228|      1|yy58:
 1229|      1|	++YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1230|      1|#line 897 "ext/standard/var_unserializer.re"
 1231|      1|	{
 1232|      1|	zend_long id;
 1233|       |
 1234|      1| 	*p = YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1235|      1|	if (!var_hash) return 0;
  ------------------
  |  Branch (1235:6): [True: 0, False: 1]
  ------------------
 1236|       |
 1237|      1|	id = parse_uiv(start + 2) - 1;
 1238|      1|	if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) {
  ------------------
  |  Branch (1238:6): [True: 0, False: 1]
  |  Branch (1238:18): [True: 0, False: 1]
  ------------------
 1239|      0|		return 0;
 1240|      0|	}
 1241|       |
 1242|      1|	if (rval_ref == rval || (Z_ISREF_P(rval_ref) && Z_REFVAL_P(rval_ref) == rval)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      2|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (rval_ref == rval || (Z_ISREF_P(rval_ref) && Z_REFVAL_P(rval_ref) == rval)) {
  ------------------
  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  ------------------
  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1242:6): [True: 0, False: 1]
  |  Branch (1242:50): [True: 0, False: 0]
  ------------------
 1243|      0|		return 0;
 1244|      0|	}
 1245|       |
 1246|      1|	if (!Z_ISREF_P(rval_ref)) {
  ------------------
  |  |  964|      1|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      1|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1246:6): [True: 1, False: 0]
  ------------------
 1247|      1|		zend_property_info *info = NULL;
 1248|      1|		if ((*var_hash)->ref_props) {
  ------------------
  |  Branch (1248:7): [True: 0, False: 1]
  ------------------
 1249|      0|			info = zend_hash_index_find_ptr((*var_hash)->ref_props, (uintptr_t) rval_ref);
 1250|      0|		}
 1251|      1|		ZVAL_NEW_REF(rval_ref, rval_ref);
  ------------------
  |  | 1205|      1|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|      1|		zend_reference *_ref =									\
  |  | 1207|      1|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|      1|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|      1|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|      1|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|      1|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|      1|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|      1|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|      1|	do {												\
  |  |  |  | 1417|      1|		zval *_z1 = (z);								\
  |  |  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  |  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|      1|	do {												\
  |  |  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|      1|		_ref->sources.ptr = NULL;									\
  |  | 1212|      1|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|      1|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|      1|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|      1|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|      1|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      1|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      1|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      1|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1252|      1|		if (info) {
  ------------------
  |  Branch (1252:7): [True: 0, False: 1]
  ------------------
 1253|      0|			ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(rval_ref), info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
 1254|      0|		}
 1255|      1|	}
 1256|       |
 1257|      1|	ZVAL_COPY(rval, rval_ref);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1258|       |
 1259|      1|	return 1;
 1260|      1|}
 1261|      0|#line 1262 "ext/standard/var_unserializer.c"
 1262|      2|yy60:
 1263|      2|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
 1264|      2|	if (yych == '"') goto yy82;
  ------------------
  |  Branch (1264:6): [True: 2, False: 0]
  ------------------
 1265|      0|	goto yy18;
 1266|     21|yy61:
 1267|     21|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     21|#define YYCURSOR cursor
  ------------------
 1268|     21|	if (yych == '{') goto yy84;
  ------------------
  |  Branch (1268:6): [True: 20, False: 1]
  ------------------
 1269|      1|	goto yy18;
 1270|      1|yy62:
 1271|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1272|      0|#line 959 "ext/standard/var_unserializer.re"
 1273|      0|	{
 1274|      0|	*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1275|      0|	ZVAL_FALSE(rval);
  ------------------
  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  | 1065|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1276|      0|	return 1;
 1277|     21|}
 1278|      0|#line 1279 "ext/standard/var_unserializer.c"
 1279|      0|yy64:
 1280|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1281|      0|#line 965 "ext/standard/var_unserializer.re"
 1282|      0|	{
 1283|      0|	*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1284|      0|	ZVAL_TRUE(rval);
  ------------------
  |  | 1067|      0|#define ZVAL_TRUE(z) do {				\
  |  | 1068|      0|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  | 1069|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1069:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1285|      0|	return 1;
 1286|     21|}
 1287|      0|#line 1288 "ext/standard/var_unserializer.c"
 1288|      0|yy66:
 1289|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1290|      0|	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  ------------------
  |  |  379|      0|#define YYLIMIT limit
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
              	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1290:6): [True: 0, False: 0]
  ------------------
 1291|      0|	yych = *YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1292|      0|	if (yych <= ';') {
  ------------------
  |  Branch (1292:6): [True: 0, False: 0]
  ------------------
 1293|      0|		if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1293:7): [True: 0, False: 0]
  ------------------
 1294|      0|		if (yych <= '9') goto yy66;
  ------------------
  |  Branch (1294:7): [True: 0, False: 0]
  ------------------
 1295|      0|		if (yych <= ':') goto yy18;
  ------------------
  |  Branch (1295:7): [True: 0, False: 0]
  ------------------
 1296|      0|	} else {
 1297|      0|		if (yych <= 'E') {
  ------------------
  |  Branch (1297:7): [True: 0, False: 0]
  ------------------
 1298|      0|			if (yych <= 'D') goto yy18;
  ------------------
  |  Branch (1298:8): [True: 0, False: 0]
  ------------------
 1299|      0|			goto yy70;
 1300|      0|		} else {
 1301|      0|			if (yych == 'e') goto yy70;
  ------------------
  |  Branch (1301:8): [True: 0, False: 0]
  ------------------
 1302|      0|			goto yy18;
 1303|      0|		}
 1304|      0|	}
 1305|      0|yy68:
 1306|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1307|      0|#line 1013 "ext/standard/var_unserializer.re"
 1308|      0|	{
 1309|       |#if SIZEOF_ZEND_LONG == 4
 1310|       |use_double:
 1311|       |#endif
 1312|      0|	*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1313|      0|	ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL));
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1314|      0|	return 1;
 1315|      0|}
 1316|      0|#line 1317 "ext/standard/var_unserializer.c"
 1317|      0|yy70:
 1318|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1319|      0|	if (yych <= ',') {
  ------------------
  |  Branch (1319:6): [True: 0, False: 0]
  ------------------
 1320|      0|		if (yych == '+') goto yy86;
  ------------------
  |  Branch (1320:7): [True: 0, False: 0]
  ------------------
 1321|      0|		goto yy18;
 1322|      0|	} else {
 1323|      0|		if (yych <= '-') goto yy86;
  ------------------
  |  Branch (1323:7): [True: 0, False: 0]
  ------------------
 1324|      0|		if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1324:7): [True: 0, False: 0]
  ------------------
 1325|      0|		if (yych <= '9') goto yy87;
  ------------------
  |  Branch (1325:7): [True: 0, False: 0]
  ------------------
 1326|      0|		goto yy18;
 1327|      0|	}
 1328|      0|yy71:
 1329|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1330|      0|	if (yych == 'F') goto yy89;
  ------------------
  |  Branch (1330:6): [True: 0, False: 0]
  ------------------
 1331|      0|	goto yy18;
 1332|      0|yy72:
 1333|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1334|      0|	if (yych == 'N') goto yy89;
  ------------------
  |  Branch (1334:6): [True: 0, False: 0]
  ------------------
 1335|      0|	goto yy18;
 1336|     10|yy73:
 1337|     10|	++YYCURSOR;
  ------------------
  |  |  378|     10|#define YYCURSOR cursor
  ------------------
 1338|     10|#line 971 "ext/standard/var_unserializer.re"
 1339|     10|	{
 1340|       |#if SIZEOF_ZEND_LONG == 4
 1341|       |	int digits = YYCURSOR - start - 3;
 1342|       |
 1343|       |	if (start[2] == '-' || start[2] == '+') {
 1344|       |		digits--;
 1345|       |	}
 1346|       |
 1347|       |	/* Use double for large zend_long values that were serialized on a 64-bit system */
 1348|       |	if (digits >= MAX_LENGTH_OF_LONG - 1) {
 1349|       |		if (digits == MAX_LENGTH_OF_LONG - 1) {
 1350|       |			int cmp = strncmp((char*)YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1);
 1351|       |
 1352|       |			if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) {
 1353|       |				goto use_double;
 1354|       |			}
 1355|       |		} else {
 1356|       |			goto use_double;
 1357|       |		}
 1358|       |	}
 1359|       |#endif
 1360|     10|	*p = YYCURSOR;
  ------------------
  |  |  378|     10|#define YYCURSOR cursor
  ------------------
 1361|     10|	ZVAL_LONG(rval, parse_iv(start + 2));
  ------------------
  |  | 1076|     10|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|     10|		zval *__z = (z);				\
  |  | 1078|     10|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|     10|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|     10|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|     10|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|     10|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1362|     10|	return 1;
 1363|      0|}
 1364|      0|#line 1365 "ext/standard/var_unserializer.c"
 1365|      0|yy75:
 1366|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1367|      0|#line 928 "ext/standard/var_unserializer.re"
 1368|      0|	{
 1369|      0|	zend_long id;
 1370|       |
 1371|      0| 	*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1372|      0|	if (!var_hash) return 0;
  ------------------
  |  Branch (1372:6): [True: 0, False: 0]
  ------------------
 1373|       |
 1374|      0|	id = parse_uiv(start + 2) - 1;
 1375|      0|	if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) {
  ------------------
  |  Branch (1375:6): [True: 0, False: 0]
  |  Branch (1375:18): [True: 0, False: 0]
  ------------------
 1376|      0|		return 0;
 1377|      0|	}
 1378|       |
 1379|      0|	if (rval_ref == rval) {
  ------------------
  |  Branch (1379:6): [True: 0, False: 0]
  ------------------
 1380|      0|		return 0;
 1381|      0|	}
 1382|       |
 1383|      0|	ZVAL_DEREF(rval_ref);
  ------------------
  |  | 1474|      0|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      0|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1384|      0|	if (Z_TYPE_P(rval_ref) != IS_OBJECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(rval_ref) != IS_OBJECT) {
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (1384:6): [True: 0, False: 0]
  ------------------
 1385|      0|		return 0;
 1386|      0|	}
 1387|       |
 1388|      0|	ZVAL_COPY(rval, rval_ref);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1389|       |
 1390|      0|	return 1;
 1391|      0|}
 1392|      0|#line 1393 "ext/standard/var_unserializer.c"
 1393|     24|yy77:
 1394|     24|	yych = *++YYCURSOR;
  ------------------
  |  |  378|     24|#define YYCURSOR cursor
  ------------------
 1395|     24|	if (yych == '"') goto yy90;
  ------------------
  |  Branch (1395:6): [True: 24, False: 0]
  ------------------
 1396|      0|	goto yy18;
 1397|     20|yy78:
 1398|     20|	++YYCURSOR;
  ------------------
  |  |  378|     20|#define YYCURSOR cursor
  ------------------
 1399|     20|#line 1129 "ext/standard/var_unserializer.re"
 1400|     20|	{
 1401|     20|	size_t len, maxlen;
 1402|     20|	zend_long elements;
 1403|     20|	char *str;
 1404|     20|	zend_string *class_name;
 1405|     20|	zend_class_entry *ce;
 1406|     20|	bool incomplete_class = 0;
 1407|     20|	bool custom_object = 0;
 1408|     20|	bool has_unserialize = 0;
 1409|       |
 1410|     20|	zval user_func;
 1411|     20|	zval retval;
 1412|     20|	zval args[1];
 1413|       |
 1414|     20|    if (!var_hash) return 0;
  ------------------
  |  Branch (1414:9): [True: 1, False: 19]
  ------------------
 1415|     19|	if (*start == 'C') {
  ------------------
  |  Branch (1415:6): [True: 1, False: 18]
  ------------------
 1416|      1|		custom_object = 1;
 1417|      1|	}
 1418|       |
 1419|     19|	len = parse_uiv(start + 2);
 1420|     19|	maxlen = max - YYCURSOR;
  ------------------
  |  |  378|     19|#define YYCURSOR cursor
  ------------------
 1421|     19|	if (maxlen < len || len == 0) {
  ------------------
  |  Branch (1421:6): [True: 2, False: 17]
  |  Branch (1421:22): [True: 0, False: 17]
  ------------------
 1422|      2|		*p = start + 2;
 1423|      2|		return 0;
 1424|      2|	}
 1425|       |
 1426|     17|	str = (char*)YYCURSOR;
  ------------------
  |  |  378|     17|#define YYCURSOR cursor
  ------------------
 1427|       |
 1428|     17|	YYCURSOR += len;
  ------------------
  |  |  378|     17|#define YYCURSOR cursor
  ------------------
 1429|       |
 1430|     17|	if (*(YYCURSOR) != '"') {
  ------------------
  |  |  378|     17|#define YYCURSOR cursor
  ------------------
  |  Branch (1430:6): [True: 0, False: 17]
  ------------------
 1431|      0|		*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1432|      0|		return 0;
 1433|      0|	}
 1434|     17|	if (*(YYCURSOR+1) != ':') {
  ------------------
  |  |  378|     17|#define YYCURSOR cursor
  ------------------
  |  Branch (1434:6): [True: 0, False: 17]
  ------------------
 1435|      0|		*p = YYCURSOR+1;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1436|      0|		return 0;
 1437|      0|	}
 1438|       |
 1439|     17|	if (len == 0) {
  ------------------
  |  Branch (1439:6): [True: 0, False: 17]
  ------------------
 1440|       |		/* empty class names are not allowed */
 1441|      0|		return 0;
 1442|      0|	}
 1443|       |
 1444|     17|	if (str[0] == '\000') {
  ------------------
  |  Branch (1444:6): [True: 1, False: 16]
  ------------------
 1445|       |		/* runtime definition keys are not allowed */
 1446|      1|		return 0;
 1447|      1|	}
 1448|       |
 1449|     16|	if (str[0] == '\\') {
  ------------------
  |  Branch (1449:6): [True: 0, False: 16]
  ------------------
 1450|       |		/* class name can't start from namespace separator */
 1451|      0|		return 0;
 1452|      0|	}
 1453|       |
 1454|     16|	class_name = zend_string_init_interned(str, len, 0);
 1455|       |
 1456|     16|	do {
 1457|     16|		zend_string *lc_name;
 1458|       |
 1459|     16|		if (!(*var_hash)->allowed_classes && ZSTR_HAS_CE_CACHE(class_name)) {
  ------------------
  |  |  862|     16|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|     16|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|     16|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|     16|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|     16|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 8, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (1459:7): [True: 16, False: 0]
  ------------------
 1460|      8|			ce = ZSTR_GET_CE_CACHE(class_name);
  ------------------
  |  |  863|      8|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      8|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      8|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      8|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 8, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      8|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      8|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      8|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1461|      8|			if (ce) {
  ------------------
  |  Branch (1461:8): [True: 1, False: 7]
  ------------------
 1462|      1|				break;
 1463|      1|			}
 1464|      8|		}
 1465|       |
 1466|     15|		lc_name = zend_string_tolower(class_name);
 1467|     15|		if(!unserialize_allowed_class(lc_name, var_hash)) {
  ------------------
  |  Branch (1467:6): [True: 0, False: 15]
  ------------------
 1468|      0|			zend_string_release_ex(lc_name, 0);
 1469|      0|			if (!zend_is_valid_class_name(class_name)) {
  ------------------
  |  Branch (1469:8): [True: 0, False: 0]
  ------------------
 1470|      0|				zend_string_release_ex(class_name, 0);
 1471|      0|				return 0;
 1472|      0|			}
 1473|      0|			incomplete_class = 1;
 1474|      0|			ce = PHP_IC_ENTRY;
  ------------------
  |  |   22|      0|#define PHP_IC_ENTRY php_ce_incomplete_class
  ------------------
 1475|      0|			break;
 1476|      0|		}
 1477|       |
 1478|     15|		if ((*var_hash)->allowed_classes && ZSTR_HAS_CE_CACHE(class_name)) {
  ------------------
  |  |  862|      0|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|      0|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      0|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|      0|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|      0|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (862:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1478:7): [True: 0, False: 15]
  ------------------
 1479|      0|			ce = ZSTR_GET_CE_CACHE(class_name);
  ------------------
  |  |  863|      0|#define ZSTR_GET_CE_CACHE(s)		ZSTR_GET_CE_CACHE_EX(s, 1)
  |  |  ------------------
  |  |  |  |  869|      0|	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  866|      0|#define ZSTR_VALID_CE_CACHE(s)		EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               	((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  879|      0|	(*(zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   35|      0|	((void**)((char*)CG(map_ptr_base) + offset))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   35|      0|# define CG(v) (compiler_globals.v)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (869:4): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1480|      0|			if (ce) {
  ------------------
  |  Branch (1480:8): [True: 0, False: 0]
  ------------------
 1481|      0|				zend_string_release_ex(lc_name, 0);
 1482|      0|				break;
 1483|      0|			}
 1484|      0|		}
 1485|       |
 1486|     15|		ce = zend_hash_find_ptr(EG(class_table), lc_name);
  ------------------
  |  |   45|     15|# define EG(v) (executor_globals.v)
  ------------------
 1487|     15|		if (ce
  ------------------
  |  Branch (1487:7): [True: 9, False: 6]
  ------------------
 1488|      9|		 && (ce->ce_flags & ZEND_ACC_LINKED)
  ------------------
  |  |  287|      9|#define ZEND_ACC_LINKED                  (1 <<  3) /*  X  |     |     |     */
  ------------------
  |  Branch (1488:7): [True: 9, False: 0]
  ------------------
 1489|      9|		 && !(ce->ce_flags & ZEND_ACC_ANON_CLASS)) {
  ------------------
  |  |  283|      9|#define ZEND_ACC_ANON_CLASS              (1 <<  2) /*  X  |     |     |     */
  ------------------
  |  Branch (1489:7): [True: 9, False: 0]
  ------------------
 1490|      9|			zend_string_release_ex(lc_name, 0);
 1491|      9|			break;
 1492|      9|		}
 1493|       |
 1494|      6|		if (!ZSTR_HAS_CE_CACHE(class_name) && !zend_is_valid_class_name(class_name)) {
  ------------------
  |  |  862|     12|#define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  777|      6|#define GC_FLAGS(p)					zval_gc_flags(GC_TYPE_INFO(p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  775|      6|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ZSTR_HAS_CE_CACHE(s)		(GC_FLAGS(s) & IS_STR_CLASS_NAME_MAP_PTR)
  |  |  ------------------
  |  |  |  |  837|      6|#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED  /* refcount is a map_ptr offset of class_entry */
  |  |  |  |  ------------------
  |  |  |  |  |  |  800|      6|#define GC_PROTECTED                (1<<5) /* used for recursion detection */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1494:7): [True: 6, False: 0]
  |  Branch (1494:41): [True: 0, False: 6]
  ------------------
 1495|      0|			zend_string_release_ex(lc_name, 0);
 1496|      0|			zend_string_release_ex(class_name, 0);
 1497|      0|			return 0;
 1498|      0|		}
 1499|       |
 1500|       |		/* Try to find class directly */
 1501|      6|		BG(serialize_lock)++;
  ------------------
  |  |  113|      6|#define BG(v) (basic_globals.v)
  ------------------
 1502|      6|		ce = zend_lookup_class_ex(class_name, lc_name, 0);
 1503|      6|		BG(serialize_lock)--;
  ------------------
  |  |  113|      6|#define BG(v) (basic_globals.v)
  ------------------
 1504|      6|		zend_string_release_ex(lc_name, 0);
 1505|      6|		if (EG(exception)) {
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 1506|      0|			zend_string_release_ex(class_name, 0);
 1507|      0|			return 0;
 1508|      0|		}
 1509|       |
 1510|      6|		if (ce) {
  ------------------
  |  Branch (1510:7): [True: 0, False: 6]
  ------------------
 1511|      0|			break;
 1512|      0|		}
 1513|       |
 1514|       |		/* Check for unserialize callback */
 1515|      6|		if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
  ------------------
  |  |   29|      6|# define PG(v) (core_globals.v)
  ------------------
              		if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1515:7): [True: 6, False: 0]
  |  Branch (1515:50): [True: 0, False: 0]
  ------------------
 1516|      6|			incomplete_class = 1;
 1517|      6|			ce = PHP_IC_ENTRY;
  ------------------
  |  |   22|      6|#define PHP_IC_ENTRY php_ce_incomplete_class
  ------------------
 1518|      6|			break;
 1519|      6|		}
 1520|       |
 1521|       |		/* Call unserialize callback */
 1522|      0|		ZVAL_STRING(&user_func, PG(unserialize_callback_func));
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1523|       |
 1524|      0|		ZVAL_STR(&args[0], class_name);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1525|      0|		BG(serialize_lock)++;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1526|      0|		call_user_function(NULL, NULL, &user_func, &retval, 1, args);
  ------------------
  |  |  694|      0|	_call_user_function_impl(object, function_name, retval_ptr, param_count, params, NULL)
  ------------------
 1527|      0|		BG(serialize_lock)--;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1528|      0|		zval_ptr_dtor(&retval);
 1529|       |
 1530|      0|		if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1531|      0|			zend_string_release_ex(class_name, 0);
 1532|      0|			zval_ptr_dtor(&user_func);
 1533|      0|			return 0;
 1534|      0|		}
 1535|       |
 1536|       |		/* The callback function may have defined the class */
 1537|      0|		BG(serialize_lock)++;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1538|      0|		if ((ce = zend_lookup_class(class_name)) == NULL) {
  ------------------
  |  Branch (1538:7): [True: 0, False: 0]
  ------------------
 1539|      0|			php_error_docref(NULL, E_WARNING, "Function %s() hasn't defined the class it was called for", Z_STRVAL(user_func));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              			php_error_docref(NULL, E_WARNING, "Function %s() hasn't defined the class it was called for", Z_STRVAL(user_func));
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
 1540|      0|			incomplete_class = 1;
 1541|      0|			ce = PHP_IC_ENTRY;
  ------------------
  |  |   22|      0|#define PHP_IC_ENTRY php_ce_incomplete_class
  ------------------
 1542|      0|		}
 1543|      0|		BG(serialize_lock)--;
  ------------------
  |  |  113|      0|#define BG(v) (basic_globals.v)
  ------------------
 1544|       |
 1545|      0|		zval_ptr_dtor(&user_func);
 1546|      0|	} while (0);
  ------------------
  |  Branch (1546:11): [Folded, False: 0]
  ------------------
 1547|       |
 1548|     16|	*p = YYCURSOR;
  ------------------
  |  |  378|     16|#define YYCURSOR cursor
  ------------------
 1549|       |
 1550|     16|	if (ce->ce_flags & ZEND_ACC_NOT_SERIALIZABLE) {
  ------------------
  |  |  341|     16|#define ZEND_ACC_NOT_SERIALIZABLE        (1 << 29) /*  X  |     |     |     */
  ------------------
  |  Branch (1550:6): [True: 0, False: 16]
  ------------------
 1551|      0|		zend_throw_exception_ex(NULL, 0, "Unserialization of '%s' is not allowed",
 1552|      0|			ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1553|      0|		zend_string_release_ex(class_name, 0);
 1554|      0|		return 0;
 1555|      0|	}
 1556|       |
 1557|     16|	if (custom_object) {
  ------------------
  |  Branch (1557:6): [True: 1, False: 15]
  ------------------
 1558|      1|		int ret;
 1559|       |
 1560|      1|		ret = object_custom(UNSERIALIZE_PASSTHRU, ce);
  ------------------
  |  |  453|      1|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
 1561|       |
 1562|      1|		if (ret && incomplete_class) {
  ------------------
  |  Branch (1562:7): [True: 0, False: 1]
  |  Branch (1562:14): [True: 0, False: 0]
  ------------------
 1563|      0|			php_store_class_name(rval, class_name);
 1564|      0|		}
 1565|      1|		zend_string_release_ex(class_name, 0);
 1566|      1|		return ret;
 1567|      1|	}
 1568|       |
 1569|     15|	if (*p >= max - 2) {
  ------------------
  |  Branch (1569:6): [True: 0, False: 15]
  ------------------
 1570|      0|		zend_error(E_WARNING, "Bad unserialize data");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1571|      0|		zend_string_release_ex(class_name, 0);
 1572|      0|		return 0;
 1573|      0|	}
 1574|       |
 1575|     15|	elements = parse_iv2(*p + 2, p);
 1576|     15|	if (elements < 0 || IS_FAKE_ELEM_COUNT(elements, max - YYCURSOR)) {
  ------------------
  |  |   35|     15|	((num_elems) > (serialized_len) / 2)
  |  |  ------------------
  |  |  |  Branch (35:2): [True: 2, False: 13]
  |  |  ------------------
  ------------------
  |  Branch (1576:6): [True: 0, False: 15]
  ------------------
 1577|      2|		zend_string_release_ex(class_name, 0);
 1578|      2|		return 0;
 1579|      2|	}
 1580|       |
 1581|     13|	YYCURSOR = *p;
  ------------------
  |  |  378|     13|#define YYCURSOR cursor
  ------------------
 1582|       |
 1583|     13|	if (*(YYCURSOR) != ':') {
  ------------------
  |  |  378|     13|#define YYCURSOR cursor
  ------------------
  |  Branch (1583:6): [True: 1, False: 12]
  ------------------
 1584|      1|		zend_string_release_ex(class_name, 0);
 1585|      1|		return 0;
 1586|      1|	}
 1587|     12|	if (*(YYCURSOR+1) != '{') {
  ------------------
  |  |  378|     12|#define YYCURSOR cursor
  ------------------
  |  Branch (1587:6): [True: 0, False: 12]
  ------------------
 1588|      0|		*p = YYCURSOR+1;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1589|      0|		zend_string_release_ex(class_name, 0);
 1590|      0|		return 0;
 1591|      0|	}
 1592|       |
 1593|     12|	*p += 2;
 1594|       |
 1595|     12|	has_unserialize = !incomplete_class && ce->__unserialize;
  ------------------
  |  Branch (1595:20): [True: 8, False: 4]
  |  Branch (1595:41): [True: 3, False: 5]
  ------------------
 1596|       |
 1597|       |	/* If this class implements Serializable, it should not land here but in object_custom().
 1598|       |	 * The passed string obviously doesn't descend from the regular serializer. However, if
 1599|       |	 * there is both Serializable::unserialize() and __unserialize(), then both may be used,
 1600|       |	 * depending on the serialization format. */
 1601|     12|	if (ce->serialize != NULL && !has_unserialize) {
  ------------------
  |  Branch (1601:6): [True: 0, False: 12]
  |  Branch (1601:31): [True: 0, False: 0]
  ------------------
 1602|      0|		zend_error(E_WARNING, "Erroneous data format for unserializing '%s'", ZSTR_VAL(ce->name));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Erroneous data format for unserializing '%s'", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1603|      0|		zend_string_release_ex(class_name, 0);
 1604|      0|		return 0;
 1605|      0|	}
 1606|       |
 1607|     12|	if (object_init_ex(rval, ce) == FAILURE) {
  ------------------
  |  Branch (1607:6): [True: 0, False: 12]
  ------------------
 1608|      0|		zend_string_release_ex(class_name, 0);
 1609|      0|		return 0;
 1610|      0|	}
 1611|       |
 1612|     12|	if (incomplete_class) {
  ------------------
  |  Branch (1612:6): [True: 4, False: 8]
  ------------------
 1613|      4|		php_store_class_name(rval, class_name);
 1614|      4|	}
 1615|     12|	zend_string_release_ex(class_name, 0);
 1616|       |
 1617|     12|	return object_common(UNSERIALIZE_PASSTHRU, elements, has_unserialize);
  ------------------
  |  |  453|     12|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
 1618|     12|}
 1619|      0|#line 1620 "ext/standard/var_unserializer.c"
 1620|      9|yy80:
 1621|      9|	++YYCURSOR;
  ------------------
  |  |  378|      9|#define YYCURSOR cursor
  ------------------
 1622|      9|#line 1349 "ext/standard/var_unserializer.re"
 1623|      9|	{
 1624|      9|	if (!var_hash) return 0;
  ------------------
  |  Branch (1624:6): [True: 0, False: 9]
  ------------------
 1625|       |
 1626|      9|	size_t len = parse_uiv(start + 2);
 1627|      9|	size_t maxlen = max - YYCURSOR;
  ------------------
  |  |  378|      9|#define YYCURSOR cursor
  ------------------
 1628|      9|	if (maxlen < len || len == 0) {
  ------------------
  |  Branch (1628:6): [True: 2, False: 7]
  |  Branch (1628:22): [True: 0, False: 7]
  ------------------
 1629|      2|		*p = start + 2;
 1630|      2|		return 0;
 1631|      2|	}
 1632|       |
 1633|      7|	char *str = (char *) YYCURSOR;
  ------------------
  |  |  378|      7|#define YYCURSOR cursor
  ------------------
 1634|      7|	YYCURSOR += len;
  ------------------
  |  |  378|      7|#define YYCURSOR cursor
  ------------------
 1635|       |
 1636|      7|	if (*(YYCURSOR) != '"') {
  ------------------
  |  |  378|      7|#define YYCURSOR cursor
  ------------------
  |  Branch (1636:6): [True: 0, False: 7]
  ------------------
 1637|      0|		*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1638|      0|		return 0;
 1639|      0|	}
 1640|      7|	if (*(YYCURSOR+1) != ';') {
  ------------------
  |  |  378|      7|#define YYCURSOR cursor
  ------------------
  |  Branch (1640:6): [True: 1, False: 6]
  ------------------
 1641|      1|		*p = YYCURSOR+1;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1642|      1|		return 0;
 1643|      1|	}
 1644|       |
 1645|      6|	char *colon_ptr = memchr(str, ':', len);
 1646|      6|	if (colon_ptr == NULL) {
  ------------------
  |  Branch (1646:6): [True: 1, False: 5]
  ------------------
 1647|      1|		php_error_docref(NULL, E_WARNING, "Invalid enum name '%.*s' (missing colon)", (int) len, str);
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
 1648|      1|		return 0;
 1649|      1|	}
 1650|      5|	size_t colon_pos = colon_ptr - str;
 1651|       |
 1652|      5|	zend_string *enum_name = zend_string_init(str, colon_pos, 0);
 1653|      5|	zend_string *case_name = zend_string_init(&str[colon_pos + 1], len - colon_pos - 1, 0);
 1654|       |
 1655|      5|	if (!zend_is_valid_class_name(enum_name)) {
  ------------------
  |  Branch (1655:6): [True: 0, False: 5]
  ------------------
 1656|      0|		goto fail;
 1657|      0|	}
 1658|       |
 1659|      5|	zend_class_entry *ce = zend_lookup_class(enum_name);
 1660|      5|	if (!ce) {
  ------------------
  |  Branch (1660:6): [True: 1, False: 4]
  ------------------
 1661|      1|		php_error_docref(NULL, E_WARNING, "Class '%s' not found", ZSTR_VAL(enum_name));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
              		php_error_docref(NULL, E_WARNING, "Class '%s' not found", ZSTR_VAL(enum_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1662|      1|		goto fail;
 1663|      1|	}
 1664|      4|	if (!(ce->ce_flags & ZEND_ACC_ENUM)) {
  ------------------
  |  |  284|      4|#define ZEND_ACC_ENUM                    (1 << 28) /*  X  |     |     |     */
  ------------------
  |  Branch (1664:6): [True: 1, False: 3]
  ------------------
 1665|      1|		php_error_docref(NULL, E_WARNING, "Class '%s' is not an enum", ZSTR_VAL(enum_name));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
              		php_error_docref(NULL, E_WARNING, "Class '%s' is not an enum", ZSTR_VAL(enum_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1666|      1|		goto fail;
 1667|      1|	}
 1668|       |
 1669|      3|	YYCURSOR += 2;
  ------------------
  |  |  378|      3|#define YYCURSOR cursor
  ------------------
 1670|      3|	*p = YYCURSOR;
  ------------------
  |  |  378|      3|#define YYCURSOR cursor
  ------------------
 1671|       |
 1672|      3|	zend_class_constant *c = zend_hash_find_ptr(CE_CONSTANTS_TABLE(ce), case_name);
  ------------------
  |  |  334|      3|	zend_class_constants_table(ce)
  ------------------
 1673|      3|	if (!c) {
  ------------------
  |  Branch (1673:6): [True: 1, False: 2]
  ------------------
 1674|      1|		php_error_docref(NULL, E_WARNING, "Undefined constant %s::%s", ZSTR_VAL(enum_name), ZSTR_VAL(case_name));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
              		php_error_docref(NULL, E_WARNING, "Undefined constant %s::%s", ZSTR_VAL(enum_name), ZSTR_VAL(case_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		php_error_docref(NULL, E_WARNING, "Undefined constant %s::%s", ZSTR_VAL(enum_name), ZSTR_VAL(case_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1675|      1|		goto fail;
 1676|      1|	}
 1677|       |
 1678|      2|	if (!(ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  498|      2|#define ZEND_CLASS_CONST_FLAGS(c) Z_CONSTANT_FLAGS((c)->value)
  |  |  ------------------
  |  |  |  |  701|      2|#define Z_CONSTANT_FLAGS(zval)		(zval).u2.constant_flags
  |  |  ------------------
  ------------------
              	if (!(ZEND_CLASS_CONST_FLAGS(c) & ZEND_CLASS_CONST_IS_CASE)) {
  ------------------
  |  |  255|      2|#define ZEND_CLASS_CONST_IS_CASE         (1 <<  6) /*     |     |     |  X  */
  ------------------
  |  Branch (1678:6): [True: 1, False: 1]
  ------------------
 1679|      1|		php_error_docref(NULL, E_WARNING, "%s::%s is not an enum case", ZSTR_VAL(enum_name), ZSTR_VAL(case_name));
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
              		php_error_docref(NULL, E_WARNING, "%s::%s is not an enum case", ZSTR_VAL(enum_name), ZSTR_VAL(case_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		php_error_docref(NULL, E_WARNING, "%s::%s is not an enum case", ZSTR_VAL(enum_name), ZSTR_VAL(case_name));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1680|      1|		goto fail;
 1681|      1|	}
 1682|       |
 1683|      1|	zend_string_release_ex(enum_name, 0);
 1684|      1|	zend_string_release_ex(case_name, 0);
 1685|       |
 1686|      1|	zval *value = &c->value;
 1687|      1|	if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
  ------------------
  |  |  617|      1|#define IS_CONSTANT_AST				11 /* Constant expressions */
  ------------------
  |  Branch (1687:6): [True: 0, False: 1]
  ------------------
 1688|      0|		if (zval_update_constant_ex(value, c->ce) == FAILURE) {
  ------------------
  |  Branch (1688:7): [True: 0, False: 0]
  ------------------
 1689|      0|			return 0;
 1690|      0|		}
 1691|      0|	}
 1692|      1|	ZEND_ASSERT(Z_TYPE_P(value) == IS_OBJECT);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1692:2): [True: 0, False: 1]
  |  Branch (1692:2): [True: 1, False: 0]
  ------------------
 1693|      1|	ZVAL_COPY(rval, value);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1694|       |
 1695|      1|	return 1;
 1696|       |
 1697|      4|fail:
 1698|      4|	zend_string_release_ex(enum_name, 0);
 1699|      4|	zend_string_release_ex(case_name, 0);
 1700|      4|	return 0;
 1701|      1|}
 1702|      0|#line 1703 "ext/standard/var_unserializer.c"
 1703|      2|yy82:
 1704|      2|	++YYCURSOR;
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
 1705|      2|#line 1059 "ext/standard/var_unserializer.re"
 1706|      2|	{
 1707|      2|	size_t len, maxlen;
 1708|      2|	zend_string *str;
 1709|       |
 1710|      2|	len = parse_uiv(start + 2);
 1711|      2|	maxlen = max - YYCURSOR;
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
 1712|      2|	if (maxlen < len) {
  ------------------
  |  Branch (1712:6): [True: 0, False: 2]
  ------------------
 1713|      0|		*p = start + 2;
 1714|      0|		return 0;
 1715|      0|	}
 1716|       |
 1717|      2|	if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) {
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
  |  Branch (1717:6): [True: 0, False: 2]
  ------------------
 1718|      0|		return 0;
 1719|      0|	}
 1720|       |
 1721|      2|	if (*(YYCURSOR) != '"') {
  ------------------
  |  |  378|      2|#define YYCURSOR cursor
  ------------------
  |  Branch (1721:6): [True: 1, False: 1]
  ------------------
 1722|      1|		zend_string_efree(str);
 1723|      1|		*p = YYCURSOR;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1724|      1|		return 0;
 1725|      1|	}
 1726|       |
 1727|      1|	if (*(YYCURSOR + 1) != ';') {
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
  |  Branch (1727:6): [True: 1, False: 0]
  ------------------
 1728|      1|		efree(str);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1729|      1|		*p = YYCURSOR + 1;
  ------------------
  |  |  378|      1|#define YYCURSOR cursor
  ------------------
 1730|      1|		return 0;
 1731|      1|	}
 1732|       |
 1733|      0|	YYCURSOR += 2;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1734|      0|	*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1735|       |
 1736|      0|	ZVAL_STR(rval, str);
  ------------------
  |  | 1088|      0|#define ZVAL_STR(z, s) do {						\
  |  | 1089|      0|		zval *__z = (z);						\
  |  | 1090|      0|		zend_string *__s = (s);					\
  |  | 1091|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|      0|		/* interned strings support */			\
  |  | 1093|      0|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 0, False: 0]
  |  |  ------------------
  |  | 1094|      0|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|      0|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1737|       |
 1738|      0|	php_error_docref(NULL, E_DEPRECATED, "Unserializing the 'S' format is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
 1739|       |
 1740|      0|	return 1;
 1741|      1|}
 1742|      0|#line 1743 "ext/standard/var_unserializer.c"
 1743|     20|yy84:
 1744|     20|	++YYCURSOR;
  ------------------
  |  |  378|     20|#define YYCURSOR cursor
  ------------------
 1745|     20|#line 1096 "ext/standard/var_unserializer.re"
 1746|     20|	{
 1747|     20|	zend_long elements = parse_iv(start + 2);
 1748|       |	/* use iv() not uiv() in order to check data range */
 1749|     20|	*p = YYCURSOR;
  ------------------
  |  |  378|     20|#define YYCURSOR cursor
  ------------------
 1750|     20|    if (!var_hash) return 0;
  ------------------
  |  Branch (1750:9): [True: 0, False: 20]
  ------------------
 1751|       |
 1752|     20|	if (elements < 0 || elements >= HT_MAX_SIZE || IS_FAKE_ELEM_COUNT(elements, max - YYCURSOR)) {
  ------------------
  |  |  456|     40|# define HT_MAX_SIZE 0x40000000
  ------------------
              	if (elements < 0 || elements >= HT_MAX_SIZE || IS_FAKE_ELEM_COUNT(elements, max - YYCURSOR)) {
  ------------------
  |  |   35|     20|	((num_elems) > (serialized_len) / 2)
  |  |  ------------------
  |  |  |  Branch (35:2): [True: 2, False: 18]
  |  |  ------------------
  ------------------
  |  Branch (1752:6): [True: 0, False: 20]
  |  Branch (1752:22): [True: 0, False: 20]
  ------------------
 1753|      2|		return 0;
 1754|      2|	}
 1755|       |
 1756|     18|	if (elements) {
  ------------------
  |  Branch (1756:6): [True: 8, False: 10]
  ------------------
 1757|      8|		array_init_size(rval, elements);
 1758|       |		/* we can't convert from packed to hash during unserialization, because
 1759|       |		   reference to some zvals might be kept in var_hash (to support references) */
 1760|      8|		zend_hash_real_init_mixed(Z_ARRVAL_P(rval));
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1761|     10|	} else {
 1762|     10|		ZVAL_EMPTY_ARRAY(rval);
  ------------------
  |  |   89|     10|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|     10|		zval *__z = (z);								\
  |  |   91|     10|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|     10|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|     10|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|     10|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|     10|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     10|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|     10|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
 1763|     10|		return finish_nested_data(UNSERIALIZE_PASSTHRU);
  ------------------
  |  |  453|     10|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
 1764|     10|	}
 1765|       |
 1766|       |	/* The array may contain references to itself, in which case we'll be modifying an
 1767|       |	 * rc>1 array. This is okay, since the array is, ostensibly, only visible to
 1768|       |	 * unserialize (in practice unserialization handlers also see it). Ideally we should
 1769|       |	 * prohibit "r:" references to non-objects, as we only generate them for objects. */
 1770|     18|	HT_ALLOW_COW_VIOLATION(Z_ARRVAL_P(rval));
  ------------------
  |  |   71|     18|# define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   52|      8|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               # define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   47|     18|#define HASH_FLAG_ALLOW_COW_VIOLATION (1<<6)
  |  |  ------------------
  ------------------
 1771|       |
 1772|      8|	if (!process_nested_array_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements)) {
  ------------------
  |  |  453|      8|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
              	if (!process_nested_array_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements)) {
  ------------------
  |  |  997|      8|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      8|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      8|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1772:6): [True: 4, False: 4]
  ------------------
 1773|      4|		return 0;
 1774|      4|	}
 1775|       |
 1776|      4|	return finish_nested_data(UNSERIALIZE_PASSTHRU);
  ------------------
  |  |  453|      4|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
 1777|      8|}
 1778|      0|#line 1779 "ext/standard/var_unserializer.c"
 1779|      0|yy86:
 1780|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1781|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1781:6): [True: 0, False: 0]
  ------------------
 1782|      0|	if (yych >= ':') goto yy18;
  ------------------
  |  Branch (1782:6): [True: 0, False: 0]
  ------------------
 1783|      0|yy87:
 1784|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1785|      0|	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  379|      0|#define YYLIMIT limit
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
              	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  ------------------
  |  |  376|      0|#define YYFILL(n) do { } while (0)
  |  |  ------------------
  |  |  |  Branch (376:33): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1785:6): [True: 0, False: 0]
  ------------------
 1786|      0|	yych = *YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1787|      0|	if (yych <= '/') goto yy18;
  ------------------
  |  Branch (1787:6): [True: 0, False: 0]
  ------------------
 1788|      0|	if (yych <= '9') goto yy87;
  ------------------
  |  Branch (1788:6): [True: 0, False: 0]
  ------------------
 1789|      0|	if (yych == ';') goto yy68;
  ------------------
  |  Branch (1789:6): [True: 0, False: 0]
  ------------------
 1790|      0|	goto yy18;
 1791|      0|yy89:
 1792|      0|	yych = *++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1793|      0|	if (yych == ';') goto yy92;
  ------------------
  |  Branch (1793:6): [True: 0, False: 0]
  ------------------
 1794|      0|	goto yy18;
 1795|     24|yy90:
 1796|     24|	++YYCURSOR;
  ------------------
  |  |  378|     24|#define YYCURSOR cursor
  ------------------
 1797|     24|#line 1022 "ext/standard/var_unserializer.re"
 1798|     24|	{
 1799|     24|	size_t len, maxlen;
 1800|     24|	char *str;
 1801|       |
 1802|     24|	len = parse_uiv(start + 2);
 1803|     24|	maxlen = max - YYCURSOR;
  ------------------
  |  |  378|     24|#define YYCURSOR cursor
  ------------------
 1804|     24|	if (maxlen < len) {
  ------------------
  |  Branch (1804:6): [True: 1, False: 23]
  ------------------
 1805|      1|		*p = start + 2;
 1806|      1|		return 0;
 1807|      1|	}
 1808|       |
 1809|     23|	str = (char*)YYCURSOR;
  ------------------
  |  |  378|     23|#define YYCURSOR cursor
  ------------------
 1810|       |
 1811|     23|	YYCURSOR += len;
  ------------------
  |  |  378|     23|#define YYCURSOR cursor
  ------------------
 1812|       |
 1813|     23|	if (*(YYCURSOR) != '"') {
  ------------------
  |  |  378|     23|#define YYCURSOR cursor
  ------------------
  |  Branch (1813:6): [True: 0, False: 23]
  ------------------
 1814|      0|		*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1815|      0|		return 0;
 1816|      0|	}
 1817|       |
 1818|     23|	if (*(YYCURSOR + 1) != ';') {
  ------------------
  |  |  378|     23|#define YYCURSOR cursor
  ------------------
  |  Branch (1818:6): [True: 0, False: 23]
  ------------------
 1819|      0|		*p = YYCURSOR + 1;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1820|      0|		return 0;
 1821|      0|	}
 1822|       |
 1823|     23|	YYCURSOR += 2;
  ------------------
  |  |  378|     23|#define YYCURSOR cursor
  ------------------
 1824|     23|	*p = YYCURSOR;
  ------------------
  |  |  378|     23|#define YYCURSOR cursor
  ------------------
 1825|       |
 1826|     23|	if (!var_hash) {
  ------------------
  |  Branch (1826:6): [True: 20, False: 3]
  ------------------
 1827|       |		/* Array or object key unserialization */
 1828|     20|		ZVAL_STR(rval, zend_string_init_existing_interned(str, len, 0));
  ------------------
  |  | 1088|     20|#define ZVAL_STR(z, s) do {						\
  |  | 1089|     20|		zval *__z = (z);						\
  |  | 1090|     20|		zend_string *__s = (s);					\
  |  | 1091|     20|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|     20|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|     20|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1092|     20|		/* interned strings support */			\
  |  | 1093|     20|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  ------------------
  |  |  |  |  678|     20|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     20|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1093:24): [True: 17, False: 3]
  |  |  ------------------
  |  | 1094|     20|			IS_INTERNED_STRING_EX : 			\
  |  |  ------------------
  |  |  |  |  826|     17|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|     17|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1095|     20|			IS_STRING_EX;						\
  |  |  ------------------
  |  |  |  |  828|     23|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      3|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      3|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      3|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1096|     20|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1096:11): [Folded, False: 20]
  |  |  ------------------
  ------------------
 1829|     20|	} else {
 1830|      3|		ZVAL_STRINGL_FAST(rval, str, len);
  ------------------
  |  |  994|      3|#define ZVAL_STRINGL_FAST(z, s, l) do {			\
  |  |  995|      3|		ZVAL_STR(z, zend_string_init_fast(s, l));	\
  |  |  ------------------
  |  |  |  | 1088|      3|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|      3|		zval *__z = (z);						\
  |  |  |  | 1090|      3|		zend_string *__s = (s);					\
  |  |  |  | 1091|      3|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      3|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      3|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|      3|		/* interned strings support */			\
  |  |  |  | 1093|      3|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      3|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      3|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 1094|      3|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      1|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|      3|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      5|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      2|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      2|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      2|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|      3|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  996|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (996:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1831|      3|	}
 1832|     23|	return 1;
 1833|     23|}
 1834|      0|#line 1835 "ext/standard/var_unserializer.c"
 1835|      0|yy92:
 1836|      0|	++YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1837|      0|#line 997 "ext/standard/var_unserializer.re"
 1838|      0|	{
 1839|      0|	*p = YYCURSOR;
  ------------------
  |  |  378|      0|#define YYCURSOR cursor
  ------------------
 1840|       |
 1841|      0|	if (!strncmp((char*)start + 2, "NAN", 3)) {
  ------------------
  |  Branch (1841:6): [True: 0, False: 0]
  ------------------
 1842|      0|		ZVAL_DOUBLE(rval, ZEND_NAN);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1843|      0|	} else if (!strncmp((char*)start + 2, "INF", 3)) {
  ------------------
  |  Branch (1843:13): [True: 0, False: 0]
  ------------------
 1844|      0|		ZVAL_DOUBLE(rval, ZEND_INFINITY);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1845|      0|	} else if (!strncmp((char*)start + 2, "-INF", 4)) {
  ------------------
  |  Branch (1845:13): [True: 0, False: 0]
  ------------------
 1846|      0|		ZVAL_DOUBLE(rval, -ZEND_INFINITY);
  ------------------
  |  | 1082|      0|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      0|		zval *__z = (z);				\
  |  | 1084|      0|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      0|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      0|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      0|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      0|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1847|      0|	} else {
 1848|      0|		ZVAL_NULL(rval);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1849|      0|	}
 1850|       |
 1851|      0|	return 1;
 1852|     23|}
 1853|     23|#line 1854 "ext/standard/var_unserializer.c"
 1854|     23|}
 1855|      0|#line 1437 "ext/standard/var_unserializer.re"
 1856|       |
 1857|       |
 1858|      0|	return 0;
 1859|     23|}
var_unserializer.c:var_push:
  117|     73|{
  118|     73|	var_entries *var_hash = (*var_hashx)->last;
  119|       |#if VAR_ENTRIES_DBG
  120|       |	fprintf(stderr, "var_push(" ZEND_LONG_FMT "): %d\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_P(rval));
  121|       |#endif
  122|       |
  123|     73|	if (var_hash->used_slots == VAR_ENTRIES_MAX) {
  ------------------
  |  |   24|     73|#define VAR_ENTRIES_MAX 1018     /* 1024 - offsetof(php_unserialize_data, entries) / sizeof(void*) */
  ------------------
  |  Branch (123:6): [True: 0, False: 73]
  ------------------
  124|      0|		var_hash = emalloc(sizeof(var_entries));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  125|      0|		var_hash->used_slots = 0;
  126|      0|		var_hash->next = 0;
  127|       |
  128|      0|		(*var_hashx)->last->next = var_hash;
  129|      0|		(*var_hashx)->last = var_hash;
  130|      0|	}
  131|       |
  132|     73|	var_hash->data[var_hash->used_slots++] = rval;
  133|     73|}
var_unserializer.c:parse_uiv:
  436|     55|{
  437|     55|	unsigned char cursor;
  438|     55|	size_t result = 0;
  439|       |
  440|    160|	while (1) {
  ------------------
  |  Branch (440:9): [True: 160, Folded]
  ------------------
  441|    160|		cursor = *p;
  442|    160|		if (cursor >= '0' && cursor <= '9') {
  ------------------
  |  Branch (442:7): [True: 160, False: 0]
  |  Branch (442:24): [True: 105, False: 55]
  ------------------
  443|    105|			result = result * 10 + (size_t)(cursor - (unsigned char)'0');
  444|    105|		} else {
  445|     55|			break;
  446|     55|		}
  447|    105|		p++;
  448|    105|	}
  449|     55|	return result;
  450|     55|}
var_unserializer.c:var_access:
  212|      1|{
  213|      1|	var_entries *var_hash = &(*var_hashx)->entries;
  214|       |#if VAR_ENTRIES_DBG
  215|       |	fprintf(stderr, "var_access(" ZEND_LONG_FMT "): " ZEND_LONG_FMT "\n", var_hash?var_hash->used_slots:-1L, id);
  216|       |#endif
  217|       |
  218|      1|	while (id >= VAR_ENTRIES_MAX && var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
  ------------------
  |  |   24|      2|#define VAR_ENTRIES_MAX 1018     /* 1024 - offsetof(php_unserialize_data, entries) / sizeof(void*) */
  ------------------
              	while (id >= VAR_ENTRIES_MAX && var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
  ------------------
  |  |   24|      0|#define VAR_ENTRIES_MAX 1018     /* 1024 - offsetof(php_unserialize_data, entries) / sizeof(void*) */
  ------------------
  |  Branch (218:9): [True: 0, False: 1]
  |  Branch (218:34): [True: 0, False: 0]
  |  Branch (218:46): [True: 0, False: 0]
  ------------------
  219|      0|		var_hash = var_hash->next;
  220|      0|		id -= VAR_ENTRIES_MAX;
  ------------------
  |  |   24|      0|#define VAR_ENTRIES_MAX 1018     /* 1024 - offsetof(php_unserialize_data, entries) / sizeof(void*) */
  ------------------
  221|      0|	}
  222|       |
  223|      1|	if (!var_hash) return NULL;
  ------------------
  |  Branch (223:6): [True: 0, False: 1]
  ------------------
  224|       |
  225|      1|	if (id < 0 || id >= var_hash->used_slots) return NULL;
  ------------------
  |  Branch (225:6): [True: 0, False: 1]
  |  Branch (225:16): [True: 0, False: 1]
  ------------------
  226|       |
  227|      1|	return var_hash->data[id];
  228|      1|}
var_unserializer.c:parse_iv:
  430|     30|{
  431|       |	return parse_iv2(p, NULL);
  432|     30|}
var_unserializer.c:unserialize_allowed_class:
  363|     15|{
  364|     15|	HashTable *classes = (*var_hashx)->allowed_classes;
  365|       |
  366|     15|	if(classes == NULL) {
  ------------------
  |  Branch (366:5): [True: 15, False: 0]
  ------------------
  367|     15|		return 1;
  368|     15|	}
  369|      0|	if(!zend_hash_num_elements(classes)) {
  ------------------
  |  Branch (369:5): [True: 0, False: 0]
  ------------------
  370|      0|		return 0;
  371|      0|	}
  372|       |
  373|      0|	return zend_hash_exists(classes, lcname);
  374|      0|}
var_unserializer.c:object_custom:
  734|      1|{
  735|      1|	zend_long datalen;
  736|       |
  737|      1|	datalen = parse_iv2((*p) + 2, p);
  738|       |
  739|      1|	if (max - (*p) < 2) {
  ------------------
  |  Branch (739:6): [True: 0, False: 1]
  ------------------
  740|      0|		return 0;
  741|      0|	}
  742|       |
  743|      1|	if ((*p)[0] != ':') {
  ------------------
  |  Branch (743:6): [True: 1, False: 0]
  ------------------
  744|      1|		return 0;
  745|      1|	}
  746|       |
  747|      0|	if ((*p)[1] != '{') {
  ------------------
  |  Branch (747:6): [True: 0, False: 0]
  ------------------
  748|      0|		(*p) += 1;
  749|      0|		return 0;
  750|      0|	}
  751|       |
  752|      0|	(*p) += 2;
  753|       |
  754|      0|	if (datalen < 0 || (max - (*p)) <= datalen) {
  ------------------
  |  Branch (754:6): [True: 0, False: 0]
  |  Branch (754:21): [True: 0, False: 0]
  ------------------
  755|      0|		zend_error(E_WARNING, "Insufficient data for unserializing - " ZEND_LONG_FMT " required, " ZEND_LONG_FMT " present", datalen, (zend_long)(max - (*p)));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  756|      0|		return 0;
  757|      0|	}
  758|       |
  759|       |	/* Check that '}' is present before calling ce->unserialize() to mitigate issues
  760|       |	 * with unserialize reading past the end of the passed buffer if the string is not
  761|       |	 * appropriately terminated (usually NUL terminated, but '}' is also sufficient.) */
  762|      0|	if ((*p)[datalen] != '}') {
  ------------------
  |  Branch (762:6): [True: 0, False: 0]
  ------------------
  763|      0|		(*p) += datalen;
  764|      0|		return 0;
  765|      0|	}
  766|       |
  767|      0|	if (ce->unserialize == NULL) {
  ------------------
  |  Branch (767:6): [True: 0, False: 0]
  ------------------
  768|      0|		zend_error(E_WARNING, "Class %s has no unserializer", ZSTR_VAL(ce->name));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              		zend_error(E_WARNING, "Class %s has no unserializer", ZSTR_VAL(ce->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  769|      0|		object_init_ex(rval, ce);
  770|      0|	} else if (ce->unserialize(rval, ce, (const unsigned char*)*p, datalen, (zend_unserialize_data *)var_hash) != SUCCESS) {
  ------------------
  |  Branch (770:13): [True: 0, False: 0]
  ------------------
  771|      0|		return 0;
  772|      0|	}
  773|       |
  774|      0|	(*p) += datalen + 1; /* +1 for '}' */
  775|      0|	return 1;
  776|      0|}
var_unserializer.c:parse_iv2:
  389|     46|{
  390|     46|	zend_ulong result = 0;
  391|     46|	zend_ulong neg = 0;
  392|     46|	const unsigned char *start;
  393|       |
  394|     46|	if (*p == '-') {
  ------------------
  |  Branch (394:6): [True: 0, False: 46]
  ------------------
  395|      0|		neg = 1;
  396|      0|		p++;
  397|     46|	} else if (UNEXPECTED(*p == '+')) {
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 46]
  |  |  ------------------
  ------------------
  398|      0|		p++;
  399|      0|	}
  400|       |
  401|     62|	while (UNEXPECTED(*p == '0')) {
  ------------------
  |  |  457|     62|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 16, False: 46]
  |  |  ------------------
  ------------------
  402|     16|		p++;
  403|     16|	}
  404|       |
  405|     46|	start = p;
  406|       |
  407|    102|	while (*p >= '0' && *p <= '9') {
  ------------------
  |  Branch (407:9): [True: 99, False: 3]
  |  Branch (407:22): [True: 56, False: 43]
  ------------------
  408|     56|		result = result * 10 + ((zend_ulong)(*p) - '0');
  409|     56|		p++;
  410|     56|	}
  411|       |
  412|     46|	if (q) {
  ------------------
  |  Branch (412:6): [True: 16, False: 30]
  ------------------
  413|     16|		*q = p;
  414|     16|	}
  415|       |
  416|       |	/* number too long or overflow */
  417|     46|	if (UNEXPECTED(p - start > MAX_LENGTH_OF_LONG - 1)
  ------------------
  |  |  457|     92|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 46]
  |  |  ------------------
  ------------------
  418|     46|	 || (SIZEOF_ZEND_LONG == 4
  ------------------
  |  |   39|     46|# define SIZEOF_ZEND_LONG 8
  ------------------
  |  Branch (418:7): [Folded, False: 46]
  ------------------
  419|      0|	 	&& UNEXPECTED(p - start == MAX_LENGTH_OF_LONG - 1)
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  420|      0|	 	&& UNEXPECTED(*start > '2'))
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  421|     46|	 || UNEXPECTED(result > ZEND_LONG_MAX + neg)) {
  ------------------
  |  |  457|     46|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 46]
  |  |  ------------------
  ------------------
  422|      0|		php_error_docref(NULL, E_WARNING, "Numerical result out of range");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  423|      0|		return (!neg) ? ZEND_LONG_MAX : ZEND_LONG_MIN;
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
              		return (!neg) ? ZEND_LONG_MAX : ZEND_LONG_MIN;
  ------------------
  |  |   35|      0|# define ZEND_LONG_MIN INT64_MIN
  ------------------
  |  Branch (423:10): [True: 0, False: 0]
  ------------------
  424|      0|	}
  425|       |
  426|     46|	return (zend_long) ((!neg) ? result : -result);
  ------------------
  |  Branch (426:22): [True: 46, False: 0]
  ------------------
  427|     46|}
var_unserializer.c:object_common:
  782|     12|{
  783|     12|	HashTable *ht;
  784|     12|	bool has_wakeup;
  785|       |
  786|     12|	if (has_unserialize) {
  ------------------
  |  Branch (786:6): [True: 3, False: 9]
  ------------------
  787|      3|		zval ary, *tmp;
  788|       |
  789|      3|		if (elements >= HT_MAX_SIZE) {
  ------------------
  |  |  456|      3|# define HT_MAX_SIZE 0x40000000
  ------------------
  |  Branch (789:7): [True: 0, False: 3]
  ------------------
  790|      0|			return 0;
  791|      0|		}
  792|       |
  793|      3|		array_init_size(&ary, elements);
  794|       |		/* Avoid reallocation due to packed -> mixed conversion. */
  795|      3|		zend_hash_real_init_mixed(Z_ARRVAL(ary));
  ------------------
  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  796|      3|		if (!process_nested_array_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL(ary), elements)) {
  ------------------
  |  |  453|      3|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
              		if (!process_nested_array_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL(ary), elements)) {
  ------------------
  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (796:7): [True: 2, False: 1]
  ------------------
  797|      2|			ZVAL_DEREF(rval);
  ------------------
  |  | 1474|      2|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      2|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  798|      2|			GC_ADD_FLAGS(Z_OBJ_P(rval), IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      2|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      2|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      2|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      2|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  799|      2|			zval_ptr_dtor(&ary);
  800|      2|			return 0;
  801|      2|		}
  802|       |
  803|       |		/* Delay __unserialize() call until end of serialization. We use two slots here to
  804|       |		 * store both the object and the unserialized data array. */
  805|      1|		ZVAL_DEREF(rval);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  806|      1|		tmp = tmp_var(var_hash, 2);
  807|      1|		ZVAL_COPY(tmp, rval);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  808|      1|		Z_EXTRA_P(tmp) = VAR_UNSERIALIZE_FLAG;
  ------------------
  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              		Z_EXTRA_P(tmp) = VAR_UNSERIALIZE_FLAG;
  ------------------
  |  |   31|      1|#define VAR_UNSERIALIZE_FLAG 2
  ------------------
  809|      1|		tmp++;
  810|      1|		ZVAL_COPY_VALUE(tmp, &ary);
  ------------------
  |  | 1416|      1|	do {												\
  |  | 1417|      1|		zval *_z1 = (z);								\
  |  | 1418|      1|		const zval *_z2 = (v);							\
  |  | 1419|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  811|       |
  812|      1|		return finish_nested_data(UNSERIALIZE_PASSTHRU);
  ------------------
  |  |  453|      1|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
  813|      3|	}
  814|       |
  815|      9|	has_wakeup = Z_OBJCE_P(rval) != PHP_IC_ENTRY
  ------------------
  |  | 1012|      9|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      9|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	has_wakeup = Z_OBJCE_P(rval) != PHP_IC_ENTRY
  ------------------
  |  |   22|     18|#define PHP_IC_ENTRY php_ce_incomplete_class
  ------------------
  |  Branch (815:15): [True: 5, False: 4]
  ------------------
  816|      5|		&& zend_hash_exists(&Z_OBJCE_P(rval)->function_table, ZSTR_KNOWN(ZEND_STR_WAKEUP));
  ------------------
  |  | 1012|      5|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      5|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      5|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (816:6): [True: 2, False: 3]
  ------------------
  817|       |
  818|      9|	ht = Z_OBJPROP_P(rval);
  ------------------
  |  | 1015|      9|#define Z_OBJPROP_P(zval_p)			Z_OBJPROP(*(zval_p))
  |  |  ------------------
  |  |  |  | 1014|      9|#define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1002|      9|#define Z_OBJ_HT(zval)				Z_OBJ(zval)->handlers
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define Z_OBJPROP(zval)				Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  819|      9|	if (elements >= (zend_long)(HT_MAX_SIZE - zend_hash_num_elements(ht))) {
  ------------------
  |  |  456|      9|# define HT_MAX_SIZE 0x40000000
  ------------------
  |  Branch (819:6): [True: 0, False: 9]
  ------------------
  820|      0|		return 0;
  821|      0|	}
  822|       |
  823|      9|	zend_hash_extend(ht, zend_hash_num_elements(ht) + elements, HT_IS_PACKED(ht));
  ------------------
  |  |   62|      9|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   52|      9|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  ------------------
  |  |  |  |   43|      9|#define HASH_FLAG_PACKED           (1<<2)
  |  |  ------------------
  ------------------
  824|      9|	if (!process_nested_object_data(UNSERIALIZE_PASSTHRU, ht, elements, Z_OBJ_P(rval))) {
  ------------------
  |  |  453|      9|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
              	if (!process_nested_object_data(UNSERIALIZE_PASSTHRU, ht, elements, Z_OBJ_P(rval))) {
  ------------------
  |  | 1000|      9|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      9|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (824:6): [True: 7, False: 2]
  ------------------
  825|      7|		if (has_wakeup) {
  ------------------
  |  Branch (825:7): [True: 1, False: 6]
  ------------------
  826|      1|			ZVAL_DEREF(rval);
  ------------------
  |  | 1474|      1|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      1|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  827|      1|			GC_ADD_FLAGS(Z_OBJ_P(rval), IS_OBJ_DESTRUCTOR_CALLED);
  ------------------
  |  |  780|      1|#define GC_ADD_FLAGS(p, flags) do { \
  |  |  781|      1|		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  775|      1|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
  |  |  ------------------
  |  |  |  |  760|      1|#define GC_FLAGS_SHIFT				0
  |  |  ------------------
  |  |  782|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (782:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  828|      1|		}
  829|      7|		return 0;
  830|      7|	}
  831|       |
  832|      2|	ZVAL_DEREF(rval);
  ------------------
  |  | 1474|      2|#define ZVAL_DEREF(z) do {								\
  |  | 1475|      2|		if (UNEXPECTED(Z_ISREF_P(z))) {					\
  |  |  ------------------
  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1476|      0|			(z) = Z_REFVAL_P(z);						\
  |  |  ------------------
  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1477|      0|		}												\
  |  | 1478|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1478:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  833|      2|	if (has_wakeup) {
  ------------------
  |  Branch (833:6): [True: 1, False: 1]
  ------------------
  834|       |		/* Delay __wakeup call until end of serialization */
  835|      1|		zval *wakeup_var = var_tmp_var(var_hash);
  836|      1|		ZVAL_COPY(wakeup_var, rval);
  ------------------
  |  | 1425|      1|	do {												\
  |  | 1426|      1|		zval *_z1 = (z);								\
  |  | 1427|      1|		const zval *_z2 = (v);							\
  |  | 1428|      1|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      1|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      1|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      1|	do {												\
  |  |  |  | 1408|      1|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      1|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      1|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      1|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      1|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      1|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      1|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      1|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      1|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      1|		}												\
  |  | 1434|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  837|      1|		Z_EXTRA_P(wakeup_var) = VAR_WAKEUP_FLAG;
  ------------------
  |  |  705|      1|#define Z_EXTRA_P(zval_p)			Z_EXTRA(*(zval_p))
  |  |  ------------------
  |  |  |  |  704|      1|#define Z_EXTRA(zval)				(zval).u2.extra
  |  |  ------------------
  ------------------
              		Z_EXTRA_P(wakeup_var) = VAR_WAKEUP_FLAG;
  ------------------
  |  |   30|      1|#define VAR_WAKEUP_FLAG 1
  ------------------
  838|      1|	}
  839|       |
  840|      2|	return finish_nested_data(UNSERIALIZE_PASSTHRU);
  ------------------
  |  |  453|      2|#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash
  ------------------
  841|      9|}
var_unserializer.c:process_nested_object_data:
  570|      9|{
  571|      9|	if (var_hash) {
  ------------------
  |  Branch (571:6): [True: 9, False: 0]
  ------------------
  572|      9|		if ((*var_hash)->max_depth > 0 && (*var_hash)->cur_depth >= (*var_hash)->max_depth) {
  ------------------
  |  Branch (572:7): [True: 9, False: 0]
  |  Branch (572:37): [True: 0, False: 9]
  ------------------
  573|      0|			php_error_docref(NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  574|      0|				"Maximum depth of " ZEND_LONG_FMT " exceeded. "
  575|      0|				"The depth limit can be changed using the max_depth unserialize() option "
  576|      0|				"or the unserialize_max_depth ini setting",
  577|      0|				(*var_hash)->max_depth);
  578|      0|			return 0;
  579|      0|		}
  580|      9|		(*var_hash)->cur_depth++;
  581|      9|	}
  582|       |
  583|     17|	while (elements-- > 0) {
  ------------------
  |  Branch (583:9): [True: 15, False: 2]
  ------------------
  584|     15|		zval key, *data;
  585|     15|		zend_property_info *info = NULL;
  586|       |
  587|     15|		ZVAL_UNDEF(&key);
  ------------------
  |  | 1055|     15|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     15|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     15|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     15|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     15|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     15|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 15]
  |  |  ------------------
  ------------------
  588|       |
  589|     15|		if (!php_var_unserialize_internal(&key, p, max, NULL)) {
  ------------------
  |  Branch (589:7): [True: 3, False: 12]
  ------------------
  590|      3|			zval_ptr_dtor(&key);
  591|      3|			goto failure;
  592|      3|		}
  593|       |
  594|     12|		if (EXPECTED(Z_TYPE(key) == IS_STRING)) {
  ------------------
  |  |  456|     12|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 10, False: 2]
  |  |  ------------------
  ------------------
  595|     11|string_key:
  596|     11|			data = zend_hash_find(ht, Z_STR(key));
  ------------------
  |  |  981|     11|#define Z_STR(zval)					(zval).value.str
  ------------------
  597|     11|			if (data != NULL) {
  ------------------
  |  Branch (597:8): [True: 8, False: 3]
  ------------------
  598|      8|				if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      8|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      8|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      8|#define IS_INDIRECT             	12
  ------------------
  |  Branch (598:9): [True: 8, False: 0]
  ------------------
  599|      8|declared_property:
  600|       |					/* This is a property with a declaration */
  601|      8|					data = Z_INDIRECT_P(data);
  ------------------
  |  | 1044|      8|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      8|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  602|      8|					info = zend_get_typed_property_info_for_slot(obj, data);
  603|      8|					if (info) {
  ------------------
  |  Branch (603:10): [True: 5, False: 3]
  ------------------
  604|      5|						if (Z_ISREF_P(data)) {
  ------------------
  |  |  964|      5|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      5|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  605|       |							/* If the value is overwritten, remove old type source from ref. */
  606|      0|							ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(data), info);
  ------------------
  |  |  595|      0|	zend_ref_del_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  607|      0|						}
  608|       |
  609|      5|						if ((*var_hash)->ref_props) {
  ------------------
  |  Branch (609:11): [True: 4, False: 1]
  ------------------
  610|       |							/* Remove old entry from ref_props table, if it exists. */
  611|      4|							zend_hash_index_del(
  612|      4|								(*var_hash)->ref_props, (uintptr_t) data);
  613|      4|						}
  614|      5|					}
  615|       |					/* We may override default property value, but they are usually immutable */
  616|      8|					if (Z_REFCOUNTED_P(data)) {
  ------------------
  |  |  942|      8|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      8|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      8|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 2, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|      2|						var_push_dtor_value(var_hash, data);
  618|      2|					}
  619|      8|					ZVAL_NULL(data);
  ------------------
  |  | 1059|      8|#define ZVAL_NULL(z) do {				\
  |  | 1060|      8|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      8|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      8|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      8|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  620|      8|				} else {
  621|       |					/* Unusual override of dynamic property */
  622|      0|					int ret = is_property_visibility_changed(obj->ce, &key);
  623|       |
  624|      0|					if (ret > 0) {
  ------------------
  |  Branch (624:10): [True: 0, False: 0]
  ------------------
  625|      0|						goto second_try;
  626|      0|					} else if (!ret) {
  ------------------
  |  Branch (626:17): [True: 0, False: 0]
  ------------------
  627|      0|						var_push_dtor_value(var_hash, data);
  628|      0|						ZVAL_NULL(data);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  629|      0|					} else if (ret < 0) {
  ------------------
  |  Branch (629:17): [True: 0, False: 0]
  ------------------
  630|      0|						goto failure;
  631|      0|					}
  632|      0|				}
  633|      8|			} else {
  634|      3|				int ret = is_property_visibility_changed(obj->ce, &key);
  635|       |
  636|      3|				if (EXPECTED(!ret)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  637|      3|					if (UNEXPECTED(obj->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
  638|      1|						zend_throw_error(NULL, "Cannot create dynamic property %s::$%s",
  639|      1|							ZSTR_VAL(obj->ce->name), zend_get_unmangled_property_name(Z_STR_P(&key)));
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							ZSTR_VAL(obj->ce->name), zend_get_unmangled_property_name(Z_STR_P(&key)));
  ------------------
  |  |  982|      1|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      1|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  640|      1|						zval_ptr_dtor_str(&key);
  641|      1|						goto failure;
  642|      2|					} else if (!(obj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) {
  ------------------
  |  |  308|      2|#define ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES (1 << 15) /* X  |     |     |     */
  ------------------
  |  Branch (642:17): [True: 0, False: 2]
  ------------------
  643|      0|						zend_error(E_DEPRECATED, "Creation of dynamic property %s::$%s is deprecated",
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  644|      0|							ZSTR_VAL(obj->ce->name), zend_get_unmangled_property_name(Z_STR_P(&key)));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              							ZSTR_VAL(obj->ce->name), zend_get_unmangled_property_name(Z_STR_P(&key)));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  645|      0|						if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  646|      0|							zval_ptr_dtor_str(&key);
  647|      0|							goto failure;
  648|      0|						}
  649|      0|					}
  650|       |
  651|      2|					data = zend_hash_add_new(ht, Z_STR(key), &EG(uninitialized_zval));
  ------------------
  |  |  981|      2|#define Z_STR(zval)					(zval).value.str
  ------------------
              					data = zend_hash_add_new(ht, Z_STR(key), &EG(uninitialized_zval));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
  652|      2|				} else if (ret < 0) {
  ------------------
  |  Branch (652:16): [True: 0, False: 0]
  ------------------
  653|      0|					goto failure;
  654|      0|				} else {
  655|      0|second_try:
  656|      0|					data = zend_hash_lookup(ht, Z_STR(key));
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  657|      0|					if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(data) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (657:10): [True: 0, False: 0]
  ------------------
  658|      0|						goto declared_property;
  659|      0|					} else if (UNEXPECTED(Z_TYPE_INFO_P(data) != IS_NULL)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  660|      0|						var_push_dtor_value(var_hash, data);
  661|      0|						ZVAL_NULL(data);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  662|      0|					}
  663|      0|				}
  664|      3|			}
  665|     10|			zval_ptr_dtor_str(&key);
  666|     10|		} else if (Z_TYPE(key) == IS_LONG) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		} else if (Z_TYPE(key) == IS_LONG) {
  ------------------
  |  |  610|      2|#define IS_LONG						4
  ------------------
  |  Branch (666:14): [True: 1, False: 1]
  ------------------
  667|       |			/* object properties should include no integers */
  668|      1|			convert_to_string(&key);
  ------------------
  |  |  390|      1|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      1|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      1|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  669|      1|			goto string_key;
  670|      1|		} else {
  671|      1|			zval_ptr_dtor(&key);
  672|      1|			goto failure;
  673|      1|		}
  674|       |
  675|     10|		if (!php_var_unserialize_internal(data, p, max, var_hash)) {
  ------------------
  |  Branch (675:7): [True: 2, False: 8]
  ------------------
  676|      2|			if (info && Z_ISREF_P(data)) {
  ------------------
  |  |  964|      0|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      0|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      0|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (676:8): [True: 0, False: 2]
  ------------------
  677|       |				/* Add type source even if we failed to unserialize.
  678|       |				 * The data is still stored in the property. */
  679|      0|				ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(data), info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  680|      0|			}
  681|      2|			goto failure;
  682|      2|		}
  683|       |
  684|      8|		if (UNEXPECTED(info)) {
  ------------------
  |  |  457|      8|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 5, False: 3]
  |  |  ------------------
  ------------------
  685|      5|			if (!zend_verify_prop_assignable_by_ref(info, data, /* strict */ 1)) {
  ------------------
  |  Branch (685:8): [True: 0, False: 5]
  ------------------
  686|      0|				zval_ptr_dtor(data);
  687|      0|				ZVAL_UNDEF(data);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  688|      0|				goto failure;
  689|      0|			}
  690|       |
  691|      5|			if (Z_ISREF_P(data)) {
  ------------------
  |  |  964|      5|#define Z_ISREF_P(zval_p)			Z_ISREF(*(zval_p))
  |  |  ------------------
  |  |  |  |  963|      5|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|      5|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (963:26): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  692|      0|				ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(data), info);
  ------------------
  |  |  592|      0|	zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source)
  |  |  ------------------
  |  |  |  |  120|      0|	(ref)->sources
  |  |  ------------------
  ------------------
  693|      5|			} else {
  694|       |				/* Remember to which property this slot belongs, so we can add a
  695|       |				 * type source if it is turned into a reference lateron. */
  696|      5|				if (!(*var_hash)->ref_props) {
  ------------------
  |  Branch (696:9): [True: 1, False: 4]
  ------------------
  697|      1|					(*var_hash)->ref_props = emalloc(sizeof(HashTable));
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  698|      1|					zend_hash_init((*var_hash)->ref_props, 8, NULL, NULL, 0);
  ------------------
  |  |  111|      1|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  699|      1|				}
  700|      5|				zend_hash_index_update_ptr(
  701|      5|					(*var_hash)->ref_props, (uintptr_t) data, info);
  702|      5|			}
  703|      5|		}
  704|       |
  705|      8|		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
  ------------------
  |  Branch (705:7): [True: 6, False: 2]
  |  Branch (705:19): [True: 1, False: 5]
  |  Branch (705:37): [True: 0, False: 1]
  ------------------
  706|      0|			(*p)--;
  707|      0|			goto failure;
  708|      0|		}
  709|      8|	}
  710|       |
  711|      2|	if (var_hash) {
  ------------------
  |  Branch (711:6): [True: 2, False: 0]
  ------------------
  712|      2|		(*var_hash)->cur_depth--;
  713|      2|	}
  714|      2|	return 1;
  715|       |
  716|      7|failure:
  717|      7|	if (var_hash) {
  ------------------
  |  Branch (717:6): [True: 7, False: 0]
  ------------------
  718|      7|		(*var_hash)->cur_depth--;
  719|      7|	}
  720|      7|	return 0;
  721|      9|}
var_unserializer.c:var_push_dtor_value:
  147|      2|{
  148|      2|	if (Z_REFCOUNTED_P(rval)) {
  ------------------
  |  |  942|      2|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  ------------------
  |  |  |  |  938|      2|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  671|      2|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (938:30): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|      2|		zval *tmp_var = var_tmp_var(var_hashx);
  150|      2|		if (!tmp_var) {
  ------------------
  |  Branch (150:7): [True: 0, False: 2]
  ------------------
  151|      0|			return;
  152|      0|		}
  153|      2|		ZVAL_COPY_VALUE(tmp_var, rval);
  ------------------
  |  | 1416|      2|	do {												\
  |  | 1417|      2|		zval *_z1 = (z);								\
  |  | 1418|      2|		const zval *_z2 = (v);							\
  |  | 1419|      2|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      2|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      2|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      2|	do {												\
  |  |  |  | 1408|      2|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      2|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      2|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      2|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  154|      2|	}
  155|      2|}
var_unserializer.c:is_property_visibility_changed:
  529|      3|{
  530|      3|	if (zend_hash_num_elements(&ce->properties_info) > 0) {
  ------------------
  |  Branch (530:6): [True: 0, False: 3]
  ------------------
  531|      0|		zend_property_info *existing_propinfo = NULL;
  532|      0|		const char *unmangled_class = NULL;
  533|      0|		const char *unmangled_prop;
  534|      0|		size_t unmangled_prop_len;
  535|       |
  536|      0|		if (UNEXPECTED(zend_unmangle_property_name_ex(Z_STR_P(key), &unmangled_class, &unmangled_prop, &unmangled_prop_len) == FAILURE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  537|      0|			zval_ptr_dtor_str(key);
  538|      0|			return -1;
  539|      0|		}
  540|       |
  541|      0|		if (unmangled_class == NULL) {
  ------------------
  |  Branch (541:7): [True: 0, False: 0]
  ------------------
  542|      0|			existing_propinfo = zend_hash_find_ptr(&ce->properties_info, Z_STR_P(key));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  543|      0|		} else {
  544|      0|			if (!strcmp(unmangled_class, "*")
  ------------------
  |  Branch (544:8): [True: 0, False: 0]
  ------------------
  545|      0|			 || !strcasecmp(unmangled_class, ZSTR_VAL(ce->name))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (545:8): [True: 0, False: 0]
  ------------------
  546|      0|				existing_propinfo = zend_hash_str_find_ptr(
  547|      0|					&ce->properties_info, unmangled_prop, unmangled_prop_len);
  548|      0|			}
  549|      0|		}
  550|       |
  551|      0|		if (existing_propinfo != NULL) {
  ------------------
  |  Branch (551:7): [True: 0, False: 0]
  ------------------
  552|      0|			if (!(existing_propinfo->flags & ZEND_ACC_VIRTUAL)) {
  ------------------
  |  |  270|      0|#define ZEND_ACC_VIRTUAL                 (1 <<  9) /*     |     |  X  |     */
  ------------------
  |  Branch (552:8): [True: 0, False: 0]
  ------------------
  553|      0|				zval_ptr_dtor_str(key);
  554|      0|				ZVAL_STR_COPY(key, existing_propinfo->name);
  ------------------
  |  | 1112|      0|#define ZVAL_STR_COPY(z, s) do {						\
  |  | 1113|      0|		zval *__z = (z);								\
  |  | 1114|      0|		zend_string *__s = (s);							\
  |  | 1115|      0|		Z_STR_P(__z) = __s;								\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1116|      0|		/* interned strings support */					\
  |  | 1117|      0|		if (ZSTR_IS_INTERNED(__s)) {					\
  |  |  ------------------
  |  |  |  Branch (1117:7): [True: 0, False: 0]
  |  |  ------------------
  |  | 1118|      0|			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  ------------------
  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1119|      0|		} else {										\
  |  | 1120|      0|			GC_ADDREF(__s);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1121|      0|			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               			Z_TYPE_INFO_P(__z) = IS_STRING_EX;			\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1122|      0|		}												\
  |  | 1123|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1123:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  555|      0|				return 1;
  556|      0|			} else {
  557|      0|				php_error_docref(NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  558|      0|					"Cannot unserialize value for virtual property %s::$%s",
  559|      0|					ZSTR_VAL(existing_propinfo->ce->name), Z_STRVAL_P(key));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              					ZSTR_VAL(existing_propinfo->ce->name), Z_STRVAL_P(key));
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  560|      0|				zval_ptr_dtor_str(key);
  561|      0|				return -1;
  562|      0|			}
  563|      0|		}
  564|      0|	}
  565|      3|	return 0;
  566|      3|}
var_unserializer.c:unserialize_str:
  324|      2|{
  325|      2|	size_t i, j;
  326|      2|	zend_string *str = zend_string_safe_alloc(1, len, 0, 0);
  327|      2|	unsigned char *end = *(unsigned char **)p+maxlen;
  328|       |
  329|     26|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (329:14): [True: 24, False: 2]
  ------------------
  330|     24|		if (*p >= end) {
  ------------------
  |  Branch (330:7): [True: 0, False: 24]
  ------------------
  331|      0|			zend_string_efree(str);
  332|      0|			return NULL;
  333|      0|		}
  334|     24|		if (**p != '\\') {
  ------------------
  |  Branch (334:7): [True: 24, False: 0]
  ------------------
  335|     24|			ZSTR_VAL(str)[i] = (char)**p;
  ------------------
  |  |   67|     24|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  336|     24|		} else {
  337|      0|			unsigned char ch = 0;
  338|       |
  339|      0|			for (j = 0; j < 2; j++) {
  ------------------
  |  Branch (339:16): [True: 0, False: 0]
  ------------------
  340|      0|				(*p)++;
  341|      0|				if (**p >= '0' && **p <= '9') {
  ------------------
  |  Branch (341:9): [True: 0, False: 0]
  |  Branch (341:23): [True: 0, False: 0]
  ------------------
  342|      0|					ch = (ch << 4) + (**p -'0');
  343|      0|				} else if (**p >= 'a' && **p <= 'f') {
  ------------------
  |  Branch (343:16): [True: 0, False: 0]
  |  Branch (343:30): [True: 0, False: 0]
  ------------------
  344|      0|					ch = (ch << 4) + (**p -'a'+10);
  345|      0|				} else if (**p >= 'A' && **p <= 'F') {
  ------------------
  |  Branch (345:16): [True: 0, False: 0]
  |  Branch (345:30): [True: 0, False: 0]
  ------------------
  346|      0|					ch = (ch << 4) + (**p -'A'+10);
  347|      0|				} else {
  348|      0|					zend_string_efree(str);
  349|      0|					return NULL;
  350|      0|				}
  351|      0|			}
  352|      0|			ZSTR_VAL(str)[i] = (char)ch;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  353|      0|		}
  354|     24|		(*p)++;
  355|     24|	}
  356|      2|	ZSTR_VAL(str)[i] = 0;
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  357|      2|	ZSTR_LEN(str) = i;
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  358|      2|	return str;
  359|      2|}
var_unserializer.c:finish_nested_data:
  724|     17|{
  725|     17|	if (*p >= max || **p != '}') {
  ------------------
  |  Branch (725:6): [True: 0, False: 17]
  |  Branch (725:19): [True: 1, False: 16]
  ------------------
  726|      1|		return 0;
  727|      1|	}
  728|       |
  729|     16|	(*p)++;
  730|     16|	return 1;
  731|     17|}
var_unserializer.c:process_nested_array_data:
  458|     11|{
  459|     11|	if (var_hash) {
  ------------------
  |  Branch (459:6): [True: 11, False: 0]
  ------------------
  460|     11|		if ((*var_hash)->max_depth > 0 && (*var_hash)->cur_depth >= (*var_hash)->max_depth) {
  ------------------
  |  Branch (460:7): [True: 11, False: 0]
  |  Branch (460:37): [True: 0, False: 11]
  ------------------
  461|      0|			php_error_docref(NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  462|      0|				"Maximum depth of " ZEND_LONG_FMT " exceeded. "
  463|      0|				"The depth limit can be changed using the max_depth unserialize() option "
  464|      0|				"or the unserialize_max_depth ini setting",
  465|      0|				(*var_hash)->max_depth);
  466|      0|			return 0;
  467|      0|		}
  468|     11|		(*var_hash)->cur_depth++;
  469|     11|	}
  470|       |
  471|     22|	while (elements-- > 0) {
  ------------------
  |  Branch (471:9): [True: 17, False: 5]
  ------------------
  472|     17|		zval key, *data;
  473|     17|		zend_ulong idx;
  474|       |
  475|     17|		ZVAL_UNDEF(&key);
  ------------------
  |  | 1055|     17|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|     17|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|     17|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|     17|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|     17|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|     17|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 17]
  |  |  ------------------
  ------------------
  476|       |
  477|     17|		if (!php_var_unserialize_internal(&key, p, max, NULL)) {
  ------------------
  |  Branch (477:7): [True: 1, False: 16]
  ------------------
  478|      1|			zval_ptr_dtor(&key);
  479|      1|			goto failure;
  480|      1|		}
  481|       |
  482|     16|		if (Z_TYPE(key) == IS_LONG) {
  ------------------
  |  |  668|     16|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(key) == IS_LONG) {
  ------------------
  |  |  610|     16|#define IS_LONG						4
  ------------------
  |  Branch (482:7): [True: 6, False: 10]
  ------------------
  483|      6|			idx = Z_LVAL(key);
  ------------------
  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  ------------------
  484|      6|numeric_key:
  485|      6|			data = zend_hash_index_lookup(ht, idx);
  486|      6|			if (UNEXPECTED(Z_TYPE_INFO_P(data) != IS_NULL)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  487|      0|				var_push_dtor_value(var_hash, data);
  488|      0|				ZVAL_NULL(data);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  489|      0|			}
  490|     10|		} else if (Z_TYPE(key) == IS_STRING) {
  ------------------
  |  |  668|     10|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		} else if (Z_TYPE(key) == IS_STRING) {
  ------------------
  |  |  612|     10|#define IS_STRING					6
  ------------------
  |  Branch (490:14): [True: 10, False: 0]
  ------------------
  491|     10|			if (UNEXPECTED(ZEND_HANDLE_NUMERIC(Z_STR(key), idx))) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
  492|      0|				zval_ptr_dtor_str(&key);
  493|      0|				goto numeric_key;
  494|      0|			}
  495|     10|			data = zend_hash_lookup(ht, Z_STR(key));
  ------------------
  |  |  981|     10|#define Z_STR(zval)					(zval).value.str
  ------------------
  496|     10|			if (UNEXPECTED(Z_TYPE_INFO_P(data) != IS_NULL)) {
  ------------------
  |  |  457|     10|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 10]
  |  |  ------------------
  ------------------
  497|      0|				var_push_dtor_value(var_hash, data);
  498|      0|				ZVAL_NULL(data);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  499|      0|			}
  500|     10|			zval_ptr_dtor_str(&key);
  501|     10|		} else {
  502|      0|			zval_ptr_dtor(&key);
  503|      0|			goto failure;
  504|      0|		}
  505|       |
  506|     16|		if (!php_var_unserialize_internal(data, p, max, var_hash)) {
  ------------------
  |  Branch (506:7): [True: 5, False: 11]
  ------------------
  507|      5|			goto failure;
  508|      5|		}
  509|       |
  510|     11|		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {
  ------------------
  |  Branch (510:7): [True: 7, False: 4]
  |  Branch (510:19): [True: 7, False: 0]
  |  Branch (510:37): [True: 0, False: 7]
  ------------------
  511|      0|			(*p)--;
  512|      0|			goto failure;
  513|      0|		}
  514|     11|	}
  515|       |
  516|      5|	if (var_hash) {
  ------------------
  |  Branch (516:6): [True: 5, False: 0]
  ------------------
  517|      5|		(*var_hash)->cur_depth--;
  518|      5|	}
  519|      5|	return 1;
  520|       |
  521|      6|failure:
  522|      6|	if (var_hash) {
  ------------------
  |  Branch (522:6): [True: 6, False: 0]
  ------------------
  523|      6|		(*var_hash)->cur_depth--;
  524|      6|	}
  525|      6|	return 0;
  526|     11|}

zim_Uri_Rfc3986_Uri___construct:
  417|      2|{
  418|      2|	create_rfc3986_uri(INTERNAL_FUNCTION_PARAM_PASSTHRU, true);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  419|      2|}
zim_Uri_WhatWg_InvalidUrlException___construct:
  422|      2|{
  423|      2|	zend_string *message = NULL;
  424|      2|	zval *errors = NULL;
  425|      2|	zend_long code = 0;
  426|      2|	zval *previous = NULL;
  427|       |
  428|      6|	ZEND_PARSE_PARAMETERS_START(0, 4)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      0|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      0|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      0|				} \
  |  |  |  | 1623|      0|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      0|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      0|				break; \
  |  |  |  | 1625|      0|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      2|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|      6|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      2|	_optional = 1;
  ------------------
  430|      6|		Z_PARAM_STR(message)
  ------------------
  |  | 2102|      2|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      2|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      2|	++_i; \
  |  |  |  |  |  | 1654|      2|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      2|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      2|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      2|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      2|	} \
  |  |  |  |  |  | 1659|      2|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (430:3): [True: 2, False: 0]
  |  Branch (430:3): [True: 0, False: 0]
  |  Branch (430:3): [True: 0, False: 2]
  |  Branch (430:3): [True: 2, False: 0]
  |  Branch (430:3): [True: 2, False: 0]
  |  Branch (430:3): [True: 0, False: 0]
  |  Branch (430:3): [True: 2, False: 0]
  |  Branch (430:3): [True: 0, False: 0]
  |  Branch (430:3): [True: 0, False: 0]
  |  Branch (430:3): [True: 0, False: 0]
  ------------------
  431|      0|		Z_PARAM_ARRAY(errors)
  ------------------
  |  | 1691|      0|	Z_PARAM_ARRAY_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 1688|      0|	Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1680|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1681|      0|		if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1682|      0|			_expected_type = check_null ? Z_EXPECTED_ARRAY_OR_NULL : Z_EXPECTED_ARRAY; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1682:21): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1683|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1684|      0|			break; \
  |  |  |  |  |  | 1685|      0|		}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  |  Branch (431:3): [True: 0, False: 0]
  ------------------
  432|      0|		Z_PARAM_LONG(code)
  ------------------
  |  | 1905|      0|	Z_PARAM_LONG_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1897|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1898|      0|		if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1899|      0|			_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1899:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1900|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1901|      0|			break; \
  |  |  |  | 1902|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  |  Branch (432:3): [True: 0, False: 0]
  ------------------
  433|      0|		Z_PARAM_OBJECT_OF_CLASS_OR_NULL(previous, zend_ce_throwable)
  ------------------
  |  | 1988|      0|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 1, 0)
  |  |  ------------------
  |  |  |  | 1971|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      0|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  |  Branch (433:3): [True: 0, False: 0]
  ------------------
  434|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      0|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      0|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      0|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      0|			} \
  |  |  |  | 1645|      0|			failure; \
  |  |  |  | 1646|      0|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (434:2): [True: 0, False: 0]
  |  Branch (434:2): [True: 0, False: 0]
  |  Branch (434:2): [True: 0, False: 0]
  |  Branch (434:2): [True: 0, False: 0]
  ------------------
  435|       |
  436|      2|	if (zend_update_exception_properties(INTERNAL_FUNCTION_PARAM_PASSTHRU, message, code, previous) == FAILURE) {
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  |  Branch (436:6): [True: 0, False: 2]
  ------------------
  437|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (437:3): [True: 0, False: 0]
  |  Branch (437:3): [True: 0, False: 0]
  ------------------
  438|      0|	}
  439|       |
  440|      2|	if (errors == NULL) {
  ------------------
  |  Branch (440:6): [True: 2, False: 0]
  ------------------
  441|      2|		zval tmp;
  442|      2|		ZVAL_EMPTY_ARRAY(&tmp);
  ------------------
  |  |   89|      2|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      2|		zval *__z = (z);								\
  |  |   91|      2|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  443|      2|		zend_update_property(php_uri_ce_whatwg_invalid_url_exception, Z_OBJ_P(ZEND_THIS), ZEND_STRL("errors"), &tmp);
  ------------------
  |  | 1000|      2|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      2|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property(php_uri_ce_whatwg_invalid_url_exception, Z_OBJ_P(ZEND_THIS), ZEND_STRL("errors"), &tmp);
  ------------------
  |  |  541|      2|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  444|      2|	} else {
  445|      0|		if (!is_list_of_whatwg_validation_errors(Z_ARR_P(errors))) {
  ------------------
  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (445:7): [True: 0, False: 0]
  ------------------
  446|      0|			zend_argument_value_error(2, "must be a list of %s", ZSTR_VAL(php_uri_ce_whatwg_url_validation_error->name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  447|      0|			RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (447:4): [True: 0, False: 0]
  |  Branch (447:4): [True: 0, False: 0]
  ------------------
  448|      0|		}
  449|       |
  450|      0|		zend_update_property(php_uri_ce_whatwg_invalid_url_exception, Z_OBJ_P(ZEND_THIS), ZEND_STRL("errors"), errors);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              		zend_update_property(php_uri_ce_whatwg_invalid_url_exception, Z_OBJ_P(ZEND_THIS), ZEND_STRL("errors"), errors);
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  451|      0|	}
  452|      2|	if (EG(exception)) {
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  453|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (453:3): [True: 0, False: 0]
  |  Branch (453:3): [True: 0, False: 0]
  ------------------
  454|      0|	}
  455|      2|}
zim_Uri_WhatWg_UrlValidationError___construct:
  458|      2|{
  459|      2|	zend_string *context;
  460|      2|	zval *type;
  461|      2|	bool failure;
  462|       |
  463|      4|	ZEND_PARSE_PARAMETERS_START(3, 3)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  464|      4|		Z_PARAM_STR(context)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  |  Branch (464:3): [True: 0, False: 0]
  ------------------
  465|      0|		Z_PARAM_OBJECT_OF_CLASS(type, php_uri_ce_whatwg_url_validation_error_type)
  ------------------
  |  | 1985|      0|	Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 0, 0)
  |  |  ------------------
  |  |  |  | 1971|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1972|      0|		if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1973|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1973:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1974|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1975|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1975:19): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1976|      0|				break; \
  |  |  |  | 1977|      0|			} else { \
  |  |  |  | 1978|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1978:22): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1979|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1980|      0|				break; \
  |  |  |  | 1981|      0|			} \
  |  |  |  | 1982|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  |  Branch (465:3): [True: 0, False: 0]
  ------------------
  466|      0|		Z_PARAM_BOOL(failure)
  ------------------
  |  | 1735|      0|	Z_PARAM_BOOL_EX(dest, _dummy, 0, 0)
  |  |  ------------------
  |  |  |  | 1727|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1728|      0|		if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1729|      0|			_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1729:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1730|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 1731|      0|			break; \
  |  |  |  | 1732|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  |  Branch (466:3): [True: 0, False: 0]
  ------------------
  467|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (467:2): [True: 0, False: 0]
  |  Branch (467:2): [True: 0, False: 0]
  |  Branch (467:2): [True: 0, False: 0]
  |  Branch (467:2): [True: 0, False: 0]
  ------------------
  468|       |
  469|      0|	zend_update_property_str(php_uri_ce_whatwg_url_validation_error, Z_OBJ_P(ZEND_THIS), ZEND_STRL("context"), context);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	zend_update_property_str(php_uri_ce_whatwg_url_validation_error, Z_OBJ_P(ZEND_THIS), ZEND_STRL("context"), context);
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  470|      0|	if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  471|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (471:3): [True: 0, False: 0]
  |  Branch (471:3): [True: 0, False: 0]
  ------------------
  472|      0|	}
  473|       |
  474|      0|	zend_update_property_ex(php_uri_ce_whatwg_url_validation_error, Z_OBJ_P(ZEND_THIS), ZSTR_KNOWN(ZEND_STR_TYPE), type);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  475|      0|	if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  476|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (476:3): [True: 0, False: 0]
  |  Branch (476:3): [True: 0, False: 0]
  ------------------
  477|      0|	}
  478|       |
  479|      0|	zval failure_zv;
  480|      0|	ZVAL_BOOL(&failure_zv, failure);
  ------------------
  |  | 1071|      0|#define ZVAL_BOOL(z, b) do {			\
  |  | 1072|      0|		Z_TYPE_INFO_P(z) =				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1073|      0|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  609|      0|#define IS_TRUE						3
  |  |  ------------------
  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  ------------------
  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  ------------------
  |  |  |  Branch (1073:4): [True: 0, False: 0]
  |  |  ------------------
  |  | 1074|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1074:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  481|      0|	zend_update_property(php_uri_ce_whatwg_url_validation_error, Z_OBJ_P(ZEND_THIS), ZEND_STRL("failure"), &failure_zv);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
              	zend_update_property(php_uri_ce_whatwg_url_validation_error, Z_OBJ_P(ZEND_THIS), ZEND_STRL("failure"), &failure_zv);
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  482|      0|	if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  483|       |		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (483:3): [True: 0, False: 0]
  |  Branch (483:3): [True: 0, False: 0]
  ------------------
  484|      0|	}
  485|      0|}
zim_Uri_WhatWg_Url___construct:
  510|      2|{
  511|      2|	create_whatwg_uri(INTERNAL_FUNCTION_PARAM_PASSTHRU, true);
  ------------------
  |  |  587|      2|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  512|      2|}
php_uri_object_create:
 1048|      4|{
 1049|      4|	php_uri_object *uri_object = zend_object_alloc(sizeof(*uri_object), class_type);
 1050|       |
 1051|      4|	zend_object_std_init(&uri_object->std, class_type);
 1052|      4|	object_properties_init(&uri_object->std, class_type);
 1053|       |
 1054|      4|	uri_object->parser = parser;
 1055|      4|	uri_object->uri = NULL;
 1056|       |
 1057|      4|	return uri_object;
 1058|      4|}
php_uri_object_handler_free:
 1071|      4|{
 1072|      4|	php_uri_object *uri_object = php_uri_object_from_obj(object);
  ------------------
  |  |  152|      4|#define php_uri_object_from_obj(object) ZEND_CONTAINER_OF(object, php_uri_object, std)
  |  |  ------------------
  |  |  |  |  407|      4|	_Generic( \
  |  |  |  |  408|      4|		(ptr), \
  |  |  |  |  409|      4|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      4|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      4|	)
  |  |  ------------------
  ------------------
 1073|       |
 1074|      4|	uri_object->parser->destroy(uri_object->uri);
 1075|      4|	zend_object_std_dtor(&uri_object->std);
 1076|      4|}
php_uri_parser_register:
 1098|      6|{
 1099|      6|	zend_string *key = zend_string_init_interned(uri_parser->name, strlen(uri_parser->name), true);
 1100|       |
 1101|      6|	ZEND_ASSERT(uri_parser->name != NULL);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1101:2): [True: 0, False: 6]
  |  Branch (1101:2): [True: 6, False: 0]
  ------------------
 1102|      6|	ZEND_ASSERT(uri_parser->parse != NULL);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1102:2): [True: 0, False: 6]
  |  Branch (1102:2): [True: 6, False: 0]
  ------------------
 1103|      6|	ZEND_ASSERT(uri_parser->clone != NULL || strcmp(uri_parser->name, PHP_URI_PARSER_PHP_PARSE_URL) == 0);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1103:2): [True: 6, False: 0]
  |  Branch (1103:2): [True: 0, False: 0]
  |  Branch (1103:2): [True: 4, False: 2]
  |  Branch (1103:2): [True: 2, False: 0]
  ------------------
 1104|      6|	ZEND_ASSERT(uri_parser->to_string != NULL || strcmp(uri_parser->name, PHP_URI_PARSER_PHP_PARSE_URL) == 0);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1104:2): [True: 6, False: 0]
  |  Branch (1104:2): [True: 0, False: 0]
  |  Branch (1104:2): [True: 4, False: 2]
  |  Branch (1104:2): [True: 2, False: 0]
  ------------------
 1105|      6|	ZEND_ASSERT(uri_parser->destroy != NULL);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1105:2): [True: 0, False: 6]
  |  Branch (1105:2): [True: 6, False: 0]
  ------------------
 1106|       |
 1107|      6|	zend_result result = zend_hash_add_ptr(&uri_parsers, key, (void *) uri_parser) != NULL ? SUCCESS : FAILURE;
  ------------------
  |  Branch (1107:23): [True: 6, False: 0]
  ------------------
 1108|       |
 1109|      6|	zend_string_release_ex(key, true);
 1110|       |
 1111|      6|	return result;
 1112|      6|}
zm_activate_uri:
 1182|  33.5k|{
 1183|  33.5k|	if (PHP_RINIT(uri_parser_whatwg)(INIT_FUNC_ARGS_PASSTHRU) == FAILURE) {
  ------------------
  |  |  378|  33.5k|#define PHP_RINIT		ZEND_MODULE_ACTIVATE_N
  |  |  ------------------
  |  |  |  |  226|  33.5k|#define ZEND_MODULE_ACTIVATE_N(module)		zm_activate_##module
  |  |  ------------------
  ------------------
              	if (PHP_RINIT(uri_parser_whatwg)(INIT_FUNC_ARGS_PASSTHRU) == FAILURE) {
  ------------------
  |  |   27|  33.5k|#define INIT_FUNC_ARGS_PASSTHRU	type, module_number
  ------------------
  |  Branch (1183:6): [True: 0, False: 33.5k]
  ------------------
 1184|      0|		return FAILURE;
 1185|      0|	}
 1186|       |
 1187|  33.5k|	return SUCCESS;
 1188|  33.5k|}
zm_post_zend_deactivate_uri:
 1191|  33.5k|{
 1192|  33.5k|	if (ZEND_MODULE_POST_ZEND_DEACTIVATE_N(uri_parser_whatwg)() == FAILURE) {
  ------------------
  |  |  228|  33.5k|#define ZEND_MODULE_POST_ZEND_DEACTIVATE_N(module)	zm_post_zend_deactivate_##module
  ------------------
  |  Branch (1192:6): [True: 0, False: 33.5k]
  ------------------
 1193|      0|		return FAILURE;
 1194|      0|	}
 1195|       |
 1196|  33.5k|	return SUCCESS;
 1197|  33.5k|}
php_uri.c:create_rfc3986_uri:
  376|      2|{
  377|      2|	zend_string *uri_str;
  378|      2|	zend_object *base_url_object = NULL;
  379|       |
  380|      4|	ZEND_PARSE_PARAMETERS_START(1, 2)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|      4|		Z_PARAM_STR(uri_str)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  |  Branch (381:3): [True: 0, False: 0]
  ------------------
  382|      0|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      0|	_optional = 1;
  ------------------
  383|      0|		Z_PARAM_OBJ_OF_CLASS_OR_NULL(base_url_object, php_uri_ce_rfc3986_uri)
  ------------------
  |  | 2009|      0|	Z_PARAM_OBJ_OF_CLASS_EX(dest, _ce, 1, 0)
  |  |  ------------------
  |  |  |  | 1992|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1993|      0|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1994|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1994:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1995|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1996|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1996:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1997|      0|				break; \
  |  |  |  | 1998|      0|			} else { \
  |  |  |  | 1999|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1999:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2000|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2001|      0|				break; \
  |  |  |  | 2002|      0|			} \
  |  |  |  | 2003|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  |  Branch (383:3): [True: 0, False: 0]
  ------------------
  384|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (384:2): [True: 0, False: 0]
  |  Branch (384:2): [True: 0, False: 0]
  |  Branch (384:2): [True: 0, False: 0]
  |  Branch (384:2): [True: 0, False: 0]
  ------------------
  385|       |
  386|      0|	php_uri_instantiate_uri(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |  587|      0|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  387|      0|		uri_str, base_url_object ? php_uri_object_from_obj(base_url_object) : NULL, is_constructor, is_constructor, NULL);
  ------------------
  |  |  152|      0|#define php_uri_object_from_obj(object) ZEND_CONTAINER_OF(object, php_uri_object, std)
  |  |  ------------------
  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      0|	)
  |  |  ------------------
  ------------------
  |  Branch (387:12): [True: 0, False: 0]
  ------------------
  388|      0|}
php_uri.c:create_whatwg_uri:
  488|      2|{
  489|      2|	zend_string *uri_str;
  490|      2|	zend_object *base_url_object = NULL;
  491|      2|	zval *errors = NULL;
  492|       |
  493|      4|	ZEND_PARSE_PARAMETERS_START(1, 3)
  ------------------
  |  | 1629|      2|	ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args)
  |  |  ------------------
  |  |  |  | 1597|      2|#define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \
  |  |  |  | 1598|      2|		const int _flags = (flags); \
  |  |  |  | 1599|      2|		uint32_t _min_num_args = (min_num_args); \
  |  |  |  | 1600|      2|		uint32_t _max_num_args = (uint32_t) (max_num_args); \
  |  |  |  | 1601|      2|		uint32_t _num_args = EX_NUM_ARGS(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  734|      2|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  712|      2|	(call)->This.u2.num_args
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1602|      2|		uint32_t _i = 0; \
  |  |  |  | 1603|      2|		zval *_real_arg, *_arg = NULL; \
  |  |  |  | 1604|      2|		zend_expected_type _expected_type = Z_EXPECTED_LONG; \
  |  |  |  | 1605|      2|		char *_error = NULL; \
  |  |  |  | 1606|      2|		bool _dummy = 0; \
  |  |  |  | 1607|      2|		bool _optional = 0; \
  |  |  |  | 1608|      2|		int _error_code = ZPP_ERROR_OK; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1583|      2|#define ZPP_ERROR_OK                            0
  |  |  |  |  ------------------
  |  |  |  | 1609|      2|		((void)_i); \
  |  |  |  | 1610|      2|		((void)_real_arg); \
  |  |  |  | 1611|      2|		((void)_arg); \
  |  |  |  | 1612|      2|		((void)_expected_type); \
  |  |  |  | 1613|      2|		((void)_error); \
  |  |  |  | 1614|      2|		((void)_optional); \
  |  |  |  | 1615|      2|		((void)_dummy); \
  |  |  |  | 1616|      2|		\
  |  |  |  | 1617|      2|		do { \
  |  |  |  | 1618|      2|			if (UNEXPECTED(_num_args < _min_num_args) || \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1619|      2|			    UNEXPECTED(_num_args > _max_num_args)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1620|      2|				if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1620:9): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1621|      2|					zend_wrong_parameters_count_error(_min_num_args, _max_num_args); \
  |  |  |  | 1622|      2|				} \
  |  |  |  | 1623|      2|				_error_code = ZPP_ERROR_FAILURE; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1584|      2|#define ZPP_ERROR_FAILURE                       1
  |  |  |  |  ------------------
  |  |  |  | 1624|      2|				break; \
  |  |  |  | 1625|      2|			} \
  |  |  |  | 1626|      2|			_real_arg = ZEND_CALL_ARG(execute_data, 0);
  |  |  |  |  ------------------
  |  |  |  |  |  |  728|      2|	ZEND_CALL_VAR_NUM(call, ((int)(n)) - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  725|      2|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  719|      0|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  494|      4|		Z_PARAM_STR(uri_str)
  ------------------
  |  | 2102|      0|	Z_PARAM_STR_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2094|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 2095|      0|		if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2096|      0|			_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2096:21): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2097|      0|			_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2098|      0|			break; \
  |  |  |  | 2099|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  |  Branch (494:3): [True: 0, False: 0]
  ------------------
  495|      0|		Z_PARAM_OPTIONAL
  ------------------
  |  | 1676|      0|	_optional = 1;
  ------------------
  496|      0|		Z_PARAM_OBJ_OF_CLASS_OR_NULL(base_url_object, php_uri_ce_whatwg_url)
  ------------------
  |  | 2009|      0|	Z_PARAM_OBJ_OF_CLASS_EX(dest, _ce, 1, 0)
  |  |  ------------------
  |  |  |  | 1992|      0|		Z_PARAM_PROLOGUE(deref, 0); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  ------------------
  |  |  |  | 1993|      0|		if (UNEXPECTED(!zend_parse_arg_obj(_arg, &dest, _ce, check_null))) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1994|      0|			if (_ce) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1994:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1995|      0|				_error = ZSTR_VAL((_ce)->name); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  |  | 1996|      0|				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1587|      0|#define ZPP_ERROR_WRONG_CLASS_OR_NULL           4
  |  |  |  |  ------------------
  |  |  |  |               				_error_code = check_null ? ZPP_ERROR_WRONG_CLASS_OR_NULL : ZPP_ERROR_WRONG_CLASS; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1586|      0|#define ZPP_ERROR_WRONG_CLASS                   3
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1996:19): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1997|      0|				break; \
  |  |  |  | 1998|      0|			} else { \
  |  |  |  | 1999|      0|				_expected_type = check_null ? Z_EXPECTED_OBJECT_OR_NULL : Z_EXPECTED_OBJECT; \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1999:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  | 2000|      0|				_error_code = ZPP_ERROR_WRONG_ARG; \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1592|      0|#define ZPP_ERROR_WRONG_ARG                     9
  |  |  |  |  ------------------
  |  |  |  | 2001|      0|				break; \
  |  |  |  | 2002|      0|			} \
  |  |  |  | 2003|      0|		}
  |  |  ------------------
  ------------------
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  |  Branch (496:3): [True: 0, False: 0]
  ------------------
  497|      0|		Z_PARAM_ZVAL(errors)
  ------------------
  |  | 2116|      0|	Z_PARAM_ZVAL_EX(dest, 0, 0)
  |  |  ------------------
  |  |  |  | 2113|      0|	Z_PARAM_ZVAL_EX2(dest, check_null, separate, separate)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2109|      0|		Z_PARAM_PROLOGUE(deref, separate); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1653|      0|	++_i; \
  |  |  |  |  |  |  |  | 1654|      0|	ZEND_ASSERT(_i <= _min_num_args || _optional==1); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1655|      0|	ZEND_ASSERT(_i >  _min_num_args || _optional==0); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1656|      0|	if (_optional) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1656:6): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1657|      0|		if (UNEXPECTED(_i >_num_args)) break; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1658|      0|	} \
  |  |  |  |  |  |  |  | 1659|      0|	_real_arg++; \
  |  |  |  |  |  |  |  | 1660|      0|	_arg = _real_arg; \
  |  |  |  |  |  |  |  | 1661|      0|	if (deref) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1661:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1662|      0|		if (EXPECTED(Z_ISREF_P(_arg))) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  456|      0|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (456:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1663|      0|			_arg = Z_REFVAL_P(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1033|      0|#define Z_REFVAL_P(zval_p)			Z_REFVAL(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1032|      0|#define Z_REFVAL(zval)				&Z_REF(zval)->val
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1029|      0|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1664|      0|		} \
  |  |  |  |  |  |  |  | 1665|      0|	} \
  |  |  |  |  |  |  |  | 1666|      0|	if (separate) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1666:6): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1667|      0|		SEPARATE_ZVAL_NOREF(_arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1545|      0|#define SEPARATE_ZVAL_NOREF(zv) do {					\
  |  |  |  |  |  |  |  |  |  | 1546|      0|		zval *_zv = (zv);								\
  |  |  |  |  |  |  |  |  |  | 1547|      0|		ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE);		\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1548|      0|		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               		if (Z_TYPE_P(_zv) == IS_ARRAY) {				\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1548:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1549|      0|			SEPARATE_ARRAY(_zv);						\
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  |  |  |  |  |  |  |  |  |  |  | 1537|      0|		zval *__zv = (zv);								\
  |  |  |  |  |  |  |  |  |  |  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  | 1542|      0|		}												\
  |  |  |  |  |  |  |  |  |  |  |  | 1543|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1550|      0|		}												\
  |  |  |  |  |  |  |  |  |  | 1551|      0|	} while (0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (1551:11): [Folded, False: 0]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1668|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2110|      0|		zend_parse_arg_zval_deref(_arg, &dest, check_null);
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  |  Branch (497:3): [True: 0, False: 0]
  ------------------
  498|      2|	ZEND_PARSE_PARAMETERS_END();
  ------------------
  |  | 1650|      0|	ZEND_PARSE_PARAMETERS_END_EX(return)
  |  |  ------------------
  |  |  |  | 1639|      0|			ZEND_ASSERT(_i == _max_num_args || _max_num_args == (uint32_t) -1); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  ------------------
  |  |  |  | 1640|      0|		} while (0); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1640:12): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1641|      2|		if (UNEXPECTED(_error_code != ZPP_ERROR_OK)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1642|      2|			if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  366|      2|#define ZEND_PARSE_PARAMS_QUIET (1<<1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1642:8): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  | 1643|      2|				zend_wrong_parameter_error(_error_code, _i, _error, _expected_type, _arg); \
  |  |  |  | 1644|      2|			} \
  |  |  |  | 1645|      2|			failure; \
  |  |  |  | 1646|      2|		} \
  |  |  |  | 1647|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1647:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (498:2): [True: 0, False: 0]
  |  Branch (498:2): [True: 0, False: 0]
  |  Branch (498:2): [True: 0, False: 0]
  |  Branch (498:2): [True: 0, False: 0]
  ------------------
  499|       |
  500|      0|	php_uri_instantiate_uri(INTERNAL_FUNCTION_PARAM_PASSTHRU,
  ------------------
  |  |  587|      0|#define INTERNAL_FUNCTION_PARAM_PASSTHRU execute_data, return_value
  ------------------
  501|      0|		uri_str, base_url_object ? php_uri_object_from_obj(base_url_object) : NULL, is_constructor, is_constructor, errors);
  ------------------
  |  |  152|      0|#define php_uri_object_from_obj(object) ZEND_CONTAINER_OF(object, php_uri_object, std)
  |  |  ------------------
  |  |  |  |  407|      0|	_Generic( \
  |  |  |  |  408|      0|		(ptr), \
  |  |  |  |  409|      0|		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
  |  |  |  |  410|      0|		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
  |  |  |  |  411|      0|	)
  |  |  ------------------
  ------------------
  |  Branch (501:12): [True: 0, False: 0]
  ------------------
  502|      0|}
php_uri.c:zm_startup_uri:
 1115|      2|{
 1116|      2|	php_uri_ce_rfc3986_uri = register_class_Uri_Rfc3986_Uri();
 1117|      2|	php_uri_ce_rfc3986_uri->create_object = php_uri_object_create_rfc3986;
 1118|      2|	php_uri_ce_rfc3986_uri->default_object_handlers = &object_handlers_rfc3986_uri;
 1119|      2|	memcpy(&object_handlers_rfc3986_uri, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
 1120|      2|	object_handlers_rfc3986_uri.offset = offsetof(php_uri_object, std);
 1121|      2|	object_handlers_rfc3986_uri.free_obj = php_uri_object_handler_free;
 1122|      2|	object_handlers_rfc3986_uri.clone_obj = php_uri_object_handler_clone;
 1123|       |
 1124|      2|	php_uri_ce_rfc3986_uri_type = register_class_Uri_Rfc3986_UriType();
 1125|      2|	php_uri_ce_rfc3986_uri_host_type = register_class_Uri_Rfc3986_UriHostType();
 1126|       |
 1127|      2|	php_uri_ce_whatwg_url = register_class_Uri_WhatWg_Url();
 1128|      2|	php_uri_ce_whatwg_url->create_object = php_uri_object_create_whatwg;
 1129|      2|	php_uri_ce_whatwg_url->default_object_handlers = &object_handlers_whatwg_uri;
 1130|      2|	memcpy(&object_handlers_whatwg_uri, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
  ------------------
  |  |  240|      2|	(&std_object_handlers)
  ------------------
 1131|      2|	object_handlers_whatwg_uri.offset = offsetof(php_uri_object, std);
 1132|      2|	object_handlers_whatwg_uri.free_obj = php_uri_object_handler_free;
 1133|      2|	object_handlers_whatwg_uri.clone_obj = php_uri_object_handler_clone;
 1134|       |
 1135|      2|	php_uri_ce_comparison_mode = register_class_Uri_UriComparisonMode();
 1136|      2|	php_uri_ce_exception = register_class_Uri_UriException(zend_ce_exception);
 1137|      2|	php_uri_ce_error = register_class_Uri_UriError(zend_ce_error);
 1138|      2|	php_uri_ce_invalid_uri_exception = register_class_Uri_InvalidUriException(php_uri_ce_exception);
 1139|      2|	php_uri_ce_whatwg_invalid_url_exception = register_class_Uri_WhatWg_InvalidUrlException(php_uri_ce_invalid_uri_exception);
 1140|      2|	php_uri_ce_whatwg_url_host_type = register_class_Uri_WhatWg_UrlHostType();
 1141|      2|	php_uri_ce_whatwg_url_validation_error = register_class_Uri_WhatWg_UrlValidationError();
 1142|      2|	php_uri_ce_whatwg_url_validation_error_type = register_class_Uri_WhatWg_UrlValidationErrorType();
 1143|       |
 1144|      2|	zend_hash_init(&uri_parsers, 4, NULL, NULL, true);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1145|       |
 1146|      2|	if (php_uri_parser_register(&php_uri_parser_rfc3986) == FAILURE) {
  ------------------
  |  Branch (1146:6): [True: 0, False: 2]
  ------------------
 1147|      0|		return FAILURE;
 1148|      0|	}
 1149|       |
 1150|      2|	if (php_uri_parser_register(&php_uri_parser_whatwg) == FAILURE) {
  ------------------
  |  Branch (1150:6): [True: 0, False: 2]
  ------------------
 1151|      0|		return FAILURE;
 1152|      0|	}
 1153|       |
 1154|      2|	if (php_uri_parser_register(&php_uri_parser_php_parse_url) == FAILURE) {
  ------------------
  |  Branch (1154:6): [True: 0, False: 2]
  ------------------
 1155|      0|		return FAILURE;
 1156|      0|	}
 1157|       |
 1158|      2|	return SUCCESS;
 1159|      2|}
php_uri.c:php_uri_object_create_rfc3986:
 1061|      2|{
 1062|      2|	return &php_uri_object_create(ce, &php_uri_parser_rfc3986)->std;
 1063|      2|}
php_uri.c:php_uri_object_create_whatwg:
 1066|      2|{
 1067|      2|	return &php_uri_object_create(ce, &php_uri_parser_whatwg)->std;
 1068|      2|}
php_uri.c:zm_info_uri:
 1162|      1|{
 1163|      1|	php_info_print_table_start();
 1164|      1|	php_info_print_table_row(2, "URI support", "active");
 1165|      1|#ifdef URI_STATIC_BUILD
 1166|      1|	php_info_print_table_row(2, "uriparser bundled version", URI_VER_ANSI);
  ------------------
  |  |   74|      1|      URI_VER_ANSI_HELPER(URI_VER_MAJOR, URI_VER_MINOR, URI_VER_RELEASE, \
  |  |  ------------------
  |  |  |  |   67|      1|      URI_INT_TO_ANSI(ma) "." URI_INT_TO_ANSI(mi) "." URI_INT_TO_ANSI(r) s
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      1|#  define URI_INT_TO_ANSI(x) URI_INT_TO_ANSI_HELPER(x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   60|      1|#  define URI_INT_TO_ANSI_HELPER(x) #x
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      1|                          URI_VER_SUFFIX_ANSI)
  ------------------
 1167|       |#else
 1168|       |	php_info_print_table_row(2, "uriparser compiled version", URI_VER_ANSI);
 1169|       |	php_info_print_table_row(2, "uriparser loaded version", uriBaseRuntimeVersionA());
 1170|       |#endif
 1171|      1|	php_info_print_table_end();
 1172|      1|}

php_uri.c:register_class_Uri_Rfc3986_Uri:
  407|      2|{
  408|      2|	zend_class_entry ce, *class_entry;
  409|       |
  410|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri\\Rfc3986", "Uri", class_Uri_Rfc3986_Uri_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  411|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  311|      2|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  412|       |
  413|       |
  414|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "withuserinfo", sizeof("withuserinfo") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  415|       |
  416|      2|	return class_entry;
  417|      2|}
php_uri.c:register_class_Uri_Rfc3986_UriType:
  377|      2|{
  378|      2|	zend_class_entry *class_entry = zend_register_internal_enum("Uri\\Rfc3986\\UriType", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  379|       |
  380|      2|	zend_enum_add_case_cstr(class_entry, "AbsolutePathReference", NULL);
  381|       |
  382|      2|	zend_enum_add_case_cstr(class_entry, "RelativePathReference", NULL);
  383|       |
  384|      2|	zend_enum_add_case_cstr(class_entry, "NetworkPathReference", NULL);
  385|       |
  386|      2|	zend_enum_add_case_cstr(class_entry, "Uri", NULL);
  387|       |
  388|      2|	return class_entry;
  389|      2|}
php_uri.c:register_class_Uri_Rfc3986_UriHostType:
  392|      2|{
  393|      2|	zend_class_entry *class_entry = zend_register_internal_enum("Uri\\Rfc3986\\UriHostType", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  394|       |
  395|      2|	zend_enum_add_case_cstr(class_entry, "IPv4", NULL);
  396|       |
  397|      2|	zend_enum_add_case_cstr(class_entry, "IPv6", NULL);
  398|       |
  399|      2|	zend_enum_add_case_cstr(class_entry, "IPvFuture", NULL);
  400|       |
  401|      2|	zend_enum_add_case_cstr(class_entry, "RegisteredName", NULL);
  402|       |
  403|      2|	return class_entry;
  404|      2|}
php_uri.c:register_class_Uri_WhatWg_Url:
  545|      2|{
  546|      2|	zend_class_entry ce, *class_entry;
  547|       |
  548|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri\\WhatWg", "Url", class_Uri_WhatWg_Url_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  549|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  311|      2|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  550|       |
  551|       |
  552|      2|	zend_add_parameter_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "withpassword", sizeof("withpassword") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
  553|       |
  554|      2|	return class_entry;
  555|      2|}
php_uri.c:register_class_Uri_UriComparisonMode:
  366|      2|{
  367|      2|	zend_class_entry *class_entry = zend_register_internal_enum("Uri\\UriComparisonMode", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  368|       |
  369|      2|	zend_enum_add_case_cstr(class_entry, "IncludeFragment", NULL);
  370|       |
  371|      2|	zend_enum_add_case_cstr(class_entry, "ExcludeFragment", NULL);
  372|       |
  373|      2|	return class_entry;
  374|      2|}
php_uri.c:register_class_Uri_UriException:
  336|      2|{
  337|      2|	zend_class_entry ce, *class_entry;
  338|       |
  339|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri", "UriException", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  341|       |
  342|      2|	return class_entry;
  343|      2|}
php_uri.c:register_class_Uri_UriError:
  346|      2|{
  347|      2|	zend_class_entry ce, *class_entry;
  348|       |
  349|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri", "UriError", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  350|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Error, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  351|       |
  352|      2|	return class_entry;
  353|      2|}
php_uri.c:register_class_Uri_InvalidUriException:
  356|      2|{
  357|      2|	zend_class_entry ce, *class_entry;
  358|       |
  359|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri", "InvalidUriException", NULL);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Uri_UriException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  361|       |
  362|      2|	return class_entry;
  363|      2|}
php_uri.c:register_class_Uri_WhatWg_InvalidUrlException:
  420|      2|{
  421|      2|	zend_class_entry ce, *class_entry;
  422|       |
  423|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri\\WhatWg", "InvalidUrlException", class_Uri_WhatWg_InvalidUrlException_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  424|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Uri_InvalidUriException, ZEND_ACC_NO_DYNAMIC_PROPERTIES);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
  425|       |
  426|      2|	zval property_errors_default_value;
  427|      2|	ZVAL_UNDEF(&property_errors_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  428|      2|	zend_string *property_errors_name = zend_string_init("errors", sizeof("errors") - 1, true);
  429|      2|	zend_declare_typed_property(class_entry, property_errors_name, &property_errors_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_errors_name, &property_errors_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_errors_name, &property_errors_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  430|      2|	zend_string_release_ex(property_errors_name, true);
  431|       |
  432|      2|	return class_entry;
  433|      2|}
php_uri.c:register_class_Uri_WhatWg_UrlHostType:
  528|      2|{
  529|      2|	zend_class_entry *class_entry = zend_register_internal_enum("Uri\\WhatWg\\UrlHostType", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  530|       |
  531|      2|	zend_enum_add_case_cstr(class_entry, "IPv4", NULL);
  532|       |
  533|      2|	zend_enum_add_case_cstr(class_entry, "IPv6", NULL);
  534|       |
  535|      2|	zend_enum_add_case_cstr(class_entry, "Domain", NULL);
  536|       |
  537|      2|	zend_enum_add_case_cstr(class_entry, "Opaque", NULL);
  538|       |
  539|      2|	zend_enum_add_case_cstr(class_entry, "Empty", NULL);
  540|       |
  541|      2|	return class_entry;
  542|      2|}
php_uri.c:register_class_Uri_WhatWg_UrlValidationError:
  501|      2|{
  502|      2|	zend_class_entry ce, *class_entry;
  503|       |
  504|      2|	INIT_NS_CLASS_ENTRY(ce, "Uri\\WhatWg", "UrlValidationError", class_Uri_WhatWg_UrlValidationError_methods);
  ------------------
  |  |  328|      2|	INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
  |  |  ------------------
  |  |  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      2|	{															\
  |  |  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  |  |  290|      2|	}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  505|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  301|      2|#define ZEND_ACC_NO_DYNAMIC_PROPERTIES   (1 << 13) /*  X  |     |     |     */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  311|      2|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  506|       |
  507|      2|	zval property_context_default_value;
  508|      2|	ZVAL_UNDEF(&property_context_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  509|      2|	zend_string *property_context_name = zend_string_init("context", sizeof("context") - 1, true);
  510|      2|	zend_declare_typed_property(class_entry, property_context_name, &property_context_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_context_name, &property_context_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_context_name, &property_context_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  511|      2|	zend_string_release_ex(property_context_name, true);
  512|       |
  513|      2|	zval property_type_default_value;
  514|      2|	ZVAL_UNDEF(&property_type_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  515|      2|	zend_string *property_type_class_Uri_WhatWg_UrlValidationErrorType = zend_string_init("Uri\\WhatWg\\\125rlValidationErrorType", sizeof("Uri\\WhatWg\\\125rlValidationErrorType")-1, 1);
  516|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TYPE), &property_type_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_type_class_Uri_WhatWg_UrlValidationErrorType, 0, 0));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TYPE), &property_type_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_type_class_Uri_WhatWg_UrlValidationErrorType, 0, 0));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_TYPE), &property_type_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_type_class_Uri_WhatWg_UrlValidationErrorType, 0, 0));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  517|       |
  518|      2|	zval property_failure_default_value;
  519|      2|	ZVAL_UNDEF(&property_failure_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  520|      2|	zend_string *property_failure_name = zend_string_init("failure", sizeof("failure") - 1, true);
  521|      2|	zend_declare_typed_property(class_entry, property_failure_name, &property_failure_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_failure_name, &property_failure_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_failure_name, &property_failure_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  522|      2|	zend_string_release_ex(property_failure_name, true);
  523|       |
  524|      2|	return class_entry;
  525|      2|}
php_uri.c:register_class_Uri_WhatWg_UrlValidationErrorType:
  436|      2|{
  437|      2|	zend_class_entry *class_entry = zend_register_internal_enum("Uri\\WhatWg\\UrlValidationErrorType", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  438|       |
  439|      2|	zend_enum_add_case_cstr(class_entry, "DomainToAscii", NULL);
  440|       |
  441|      2|	zend_enum_add_case_cstr(class_entry, "DomainToUnicode", NULL);
  442|       |
  443|      2|	zend_enum_add_case_cstr(class_entry, "DomainInvalidCodePoint", NULL);
  444|       |
  445|      2|	zend_enum_add_case_cstr(class_entry, "HostInvalidCodePoint", NULL);
  446|       |
  447|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4EmptyPart", NULL);
  448|       |
  449|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4TooManyParts", NULL);
  450|       |
  451|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4NonNumericPart", NULL);
  452|       |
  453|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4NonDecimalPart", NULL);
  454|       |
  455|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4OutOfRangePart", NULL);
  456|       |
  457|      2|	zend_enum_add_case_cstr(class_entry, "Ipv6Unclosed", NULL);
  458|       |
  459|      2|	zend_enum_add_case_cstr(class_entry, "Ipv6InvalidCompression", NULL);
  460|       |
  461|      2|	zend_enum_add_case_cstr(class_entry, "Ipv6TooManyPieces", NULL);
  462|       |
  463|      2|	zend_enum_add_case_cstr(class_entry, "Ipv6MultipleCompression", NULL);
  464|       |
  465|      2|	zend_enum_add_case_cstr(class_entry, "Ipv6InvalidCodePoint", NULL);
  466|       |
  467|      2|	zend_enum_add_case_cstr(class_entry, "Ipv6TooFewPieces", NULL);
  468|       |
  469|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4InIpv6TooManyPieces", NULL);
  470|       |
  471|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4InIpv6InvalidCodePoint", NULL);
  472|       |
  473|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4InIpv6OutOfRangePart", NULL);
  474|       |
  475|      2|	zend_enum_add_case_cstr(class_entry, "Ipv4InIpv6TooFewParts", NULL);
  476|       |
  477|      2|	zend_enum_add_case_cstr(class_entry, "InvalidUrlUnit", NULL);
  478|       |
  479|      2|	zend_enum_add_case_cstr(class_entry, "SpecialSchemeMissingFollowingSolidus", NULL);
  480|       |
  481|      2|	zend_enum_add_case_cstr(class_entry, "MissingSchemeNonRelativeUrl", NULL);
  482|       |
  483|      2|	zend_enum_add_case_cstr(class_entry, "InvalidReverseSoldius", NULL);
  484|       |
  485|      2|	zend_enum_add_case_cstr(class_entry, "InvalidCredentials", NULL);
  486|       |
  487|      2|	zend_enum_add_case_cstr(class_entry, "HostMissing", NULL);
  488|       |
  489|      2|	zend_enum_add_case_cstr(class_entry, "PortOutOfRange", NULL);
  490|       |
  491|      2|	zend_enum_add_case_cstr(class_entry, "PortInvalid", NULL);
  492|       |
  493|      2|	zend_enum_add_case_cstr(class_entry, "FileInvalidWindowsDriveLetter", NULL);
  494|       |
  495|      2|	zend_enum_add_case_cstr(class_entry, "FileInvalidWindowsDriveLetterHost", NULL);
  496|       |
  497|      2|	return class_entry;
  498|      2|}

uri_parser_rfc3986.c:php_uri_parser_rfc3986_destroy:
  673|      2|{
  674|      2|	php_uri_parser_rfc3986_uris *uriparser_uris = uri;
  675|       |
  676|      2|	if (UNEXPECTED(uriparser_uris == NULL)) {
  ------------------
  |  |  457|      2|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  677|      2|		return;
  678|      2|	}
  679|       |
  680|      0|	uriFreeUriMembersMmA(&uriparser_uris->uri, mm);
  681|      0|	uriFreeUriMembersMmA(&uriparser_uris->normalized_uri, mm);
  682|       |
  683|       |	efree(uriparser_uris);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  684|      0|}

zm_activate_uri_parser_whatwg:
  547|  33.5k|{
  548|  33.5k|	lxb_status_t status;
  549|       |	
  550|  33.5k|	status = lexbor_mraw_init(&lexbor_mraw, lexbor_mraw_byte_size);
  551|  33.5k|	if (status != LXB_STATUS_OK) {
  ------------------
  |  Branch (551:6): [True: 0, False: 33.5k]
  ------------------
  552|      0|		goto fail;
  553|      0|	}
  554|       |
  555|  33.5k|	status = lxb_url_parser_init(&lexbor_parser, &lexbor_mraw);
  556|  33.5k|	if (status != LXB_STATUS_OK) {
  ------------------
  |  Branch (556:6): [True: 0, False: 33.5k]
  ------------------
  557|      0|		goto fail;
  558|      0|	}
  559|       |
  560|  33.5k|	status = lxb_unicode_idna_init(&lexbor_idna);
  561|  33.5k|	if (status != LXB_STATUS_OK) {
  ------------------
  |  Branch (561:6): [True: 0, False: 33.5k]
  ------------------
  562|      0|		goto fail;
  563|      0|	}
  564|       |
  565|  33.5k|	return SUCCESS;
  566|       |
  567|      0| fail:
  568|       |
  569|       |	/* Unconditionally calling the _destroy() functions is
  570|       |	 * safe on a zeroed structure. */
  571|      0|	lxb_unicode_idna_destroy(&lexbor_idna, false);
  572|      0|	memset(&lexbor_idna, 0, sizeof(lexbor_idna));
  573|      0|	lxb_url_parser_destroy(&lexbor_parser, false);
  574|      0|	memset(&lexbor_parser, 0, sizeof(lexbor_parser));
  575|      0|	lexbor_mraw_destroy(&lexbor_mraw, false);
  576|      0|	memset(&lexbor_mraw, 0, sizeof(lexbor_mraw));
  577|       |
  578|      0|	return FAILURE;
  579|  33.5k|}
zm_post_zend_deactivate_uri_parser_whatwg:
  582|  33.5k|{
  583|  33.5k|	lxb_unicode_idna_destroy(&lexbor_idna, false);
  584|  33.5k|	memset(&lexbor_idna, 0, sizeof(lexbor_idna));
  585|  33.5k|	lxb_url_parser_destroy(&lexbor_parser, false);
  586|  33.5k|	memset(&lexbor_parser, 0, sizeof(lexbor_parser));
  587|  33.5k|	lexbor_mraw_destroy(&lexbor_mraw, false);
  588|  33.5k|	memset(&lexbor_mraw, 0, sizeof(lexbor_mraw));
  589|       |
  590|  33.5k|	return SUCCESS;
  591|  33.5k|}
uri_parser_whatwg.c:php_uri_parser_whatwg_destroy:
  653|      2|{
  654|      2|	lxb_url_t *lexbor_uri = uri;
  655|       |
  656|      2|	lxb_url_destroy(lexbor_uri);
  657|      2|}

sapi_startup:
   67|      2|{
   68|      2|	sf->ini_entries = NULL;
   69|      2|	sapi_module = *sf;
   70|       |
   71|       |#ifdef ZTS
   72|       |	ts_allocate_fast_id(&sapi_globals_id, &sapi_globals_offset, sizeof(sapi_globals_struct), (ts_allocate_ctor) sapi_globals_ctor, (ts_allocate_dtor) sapi_globals_dtor);
   73|       |# ifdef PHP_WIN32
   74|       |	_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
   75|       |# endif
   76|       |#else
   77|      2|	sapi_globals_ctor(&sapi_globals);
   78|      2|#endif
   79|       |
   80|       |#ifdef PHP_WIN32
   81|       |	tsrm_win32_startup();
   82|       |#endif
   83|       |
   84|      2|	reentrancy_startup();
   85|      2|}
sapi_free_header:
  104|  67.1k|{
  105|       |	efree(sapi_header->header);
  ------------------
  |  |  154|  67.1k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  67.1k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  67.1k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  67.1k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  67.1k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|  67.1k|}
sapi_get_default_content_type_header:
  344|  33.5k|{
  345|  33.5k|	uint32_t len;
  346|       |
  347|  33.5k|	default_header->header = get_default_content_type(sizeof("Content-type: ")-1, &len);
  348|  33.5k|	default_header->header_len = len;
  349|  33.5k|	memcpy(default_header->header, "Content-type: ", sizeof("Content-type: ") - 1);
  350|  33.5k|}
sapi_activate:
  429|  33.5k|{
  430|  33.5k|	zend_llist_init(&SG(sapi_headers).headers, sizeof(sapi_header_struct), (void (*)(void *)) sapi_free_header, 0);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  431|  33.5k|	SG(sapi_headers).send_default_content_type = 1;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  432|       |
  433|       |	/*
  434|       |	SG(sapi_headers).http_response_code = 200;
  435|       |	*/
  436|  33.5k|	SG(sapi_headers).http_status_line = NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  437|  33.5k|	SG(sapi_headers).mimetype = NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  438|  33.5k|	SG(headers_sent) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  439|  33.5k|	ZVAL_UNDEF(&SG(callback_func));
  ------------------
  |  | 1055|  33.5k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  33.5k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  33.5k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  440|  33.5k|	SG(read_post_bytes) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  441|  33.5k|	SG(request_info).request_body = NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  442|  33.5k|	SG(request_info).current_user = NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  443|  33.5k|	SG(request_info).current_user_length = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  444|  33.5k|	SG(request_info).no_headers = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  445|  33.5k|	SG(request_info).post_entry = NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  446|  33.5k|	SG(request_info).proto_num = 1000; /* Default to HTTP 1.0 */
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  447|  33.5k|	SG(global_request_time) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  448|  33.5k|	SG(post_read) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  449|       |	/* It's possible to override this general case in the activate() callback, if necessary. */
  450|  33.5k|	if (SG(request_info).request_method && !strcmp(SG(request_info).request_method, "HEAD")) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
              	if (SG(request_info).request_method && !strcmp(SG(request_info).request_method, "HEAD")) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (450:6): [True: 0, False: 33.5k]
  |  Branch (450:41): [True: 0, False: 0]
  ------------------
  451|      0|		SG(request_info).headers_only = 1;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  452|  33.5k|	} else {
  453|  33.5k|		SG(request_info).headers_only = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  454|  33.5k|	}
  455|  33.5k|	SG(rfc1867_uploaded_files) = NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  456|  33.5k|	SG(request_parse_body_context).throw_exceptions = false;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  457|  33.5k|	memset(&SG(request_parse_body_context).options_cache, 0, sizeof(SG(request_parse_body_context).options_cache));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
              	memset(&SG(request_parse_body_context).options_cache, 0, sizeof(SG(request_parse_body_context).options_cache));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  458|       |
  459|  33.5k|	if (sapi_module.pre_request_init) {
  ------------------
  |  Branch (459:6): [True: 0, False: 33.5k]
  ------------------
  460|      0|		sapi_module.pre_request_init();
  461|      0|	}
  462|       |
  463|       |	/* Handle request method */
  464|  33.5k|	if (SG(server_context)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  465|      0|		if (PG(enable_post_data_reading)
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  466|      0|		&& 	SG(request_info).content_type
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (466:7): [True: 0, False: 0]
  ------------------
  467|      0|		&&  SG(request_info).request_method
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (467:7): [True: 0, False: 0]
  ------------------
  468|      0|		&& !strcmp(SG(request_info).request_method, "POST")) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (468:6): [True: 0, False: 0]
  ------------------
  469|       |			/* HTTP POST may contain form data to be processed into variables
  470|       |			 * depending on given content type */
  471|      0|			sapi_read_post_data();
  472|      0|		} else {
  473|      0|			SG(request_info).content_type_dup = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  474|      0|		}
  475|       |
  476|       |		/* Cookies */
  477|      0|		SG(request_info).cookie_data = sapi_module.read_cookies();
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  478|      0|	}
  479|  33.5k|	if (sapi_module.activate) {
  ------------------
  |  Branch (479:6): [True: 0, False: 33.5k]
  ------------------
  480|      0|		sapi_module.activate();
  481|      0|	}
  482|  33.5k|	if (sapi_module.input_filter_init) {
  ------------------
  |  Branch (482:6): [True: 0, False: 33.5k]
  ------------------
  483|      0|		sapi_module.input_filter_init();
  484|      0|	}
  485|  33.5k|}
sapi_deactivate_module:
  497|  33.5k|{
  498|  33.5k|	zend_llist_destroy(&SG(sapi_headers).headers);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  499|  33.5k|	if (SG(request_info).request_body) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (499:6): [True: 0, False: 33.5k]
  ------------------
  500|      0|		SG(request_info).request_body = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  501|  33.5k|	} else if (SG(server_context)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  502|      0|		if (!SG(post_read)) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (502:7): [True: 0, False: 0]
  ------------------
  503|       |			/* make sure we've consumed all request input data */
  504|      0|			char dummy[SAPI_POST_BLOCK_SIZE];
  505|      0|			size_t read_bytes;
  506|       |
  507|      0|			do {
  508|      0|				read_bytes = sapi_read_post_block(dummy, SAPI_POST_BLOCK_SIZE);
  ------------------
  |  |   26|      0|#define SAPI_POST_BLOCK_SIZE 0x4000
  ------------------
  509|      0|			} while (SAPI_POST_BLOCK_SIZE == read_bytes);
  ------------------
  |  |   26|      0|#define SAPI_POST_BLOCK_SIZE 0x4000
  ------------------
  |  Branch (509:13): [True: 0, False: 0]
  ------------------
  510|      0|		}
  511|      0|	}
  512|  33.5k|	if (SG(request_info).auth_user) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (512:6): [True: 0, False: 33.5k]
  ------------------
  513|      0|		efree(SG(request_info).auth_user);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  514|      0|		SG(request_info).auth_user = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  515|      0|	}
  516|  33.5k|	if (SG(request_info).auth_password) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (516:6): [True: 0, False: 33.5k]
  ------------------
  517|      0|		efree(SG(request_info).auth_password);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  518|      0|		SG(request_info).auth_password = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  519|      0|	}
  520|  33.5k|	if (SG(request_info).auth_digest) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (520:6): [True: 0, False: 33.5k]
  ------------------
  521|      0|		efree(SG(request_info).auth_digest);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  522|      0|		SG(request_info).auth_digest = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  523|      0|	}
  524|  33.5k|	if (SG(request_info).content_type_dup) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (524:6): [True: 0, False: 33.5k]
  ------------------
  525|      0|		efree(SG(request_info).content_type_dup);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  526|      0|	}
  527|  33.5k|	if (SG(request_info).current_user) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (527:6): [True: 0, False: 33.5k]
  ------------------
  528|      0|		efree(SG(request_info).current_user);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  529|      0|	}
  530|  33.5k|	if (sapi_module.deactivate) {
  ------------------
  |  Branch (530:6): [True: 0, False: 33.5k]
  ------------------
  531|      0|		sapi_module.deactivate();
  532|      0|	}
  533|  33.5k|}
sapi_deactivate_destroy:
  536|  33.5k|{
  537|  33.5k|	if (SG(rfc1867_uploaded_files)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
  538|      0|		destroy_uploaded_files_hash();
  539|      0|	}
  540|  33.5k|	if (SG(sapi_headers).mimetype) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (540:6): [True: 0, False: 33.5k]
  ------------------
  541|      0|		efree(SG(sapi_headers).mimetype);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  542|      0|		SG(sapi_headers).mimetype = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  543|      0|	}
  544|  33.5k|	sapi_send_headers_free();
  545|  33.5k|	SG(sapi_started) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  546|  33.5k|	SG(headers_sent) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  547|  33.5k|	SG(request_info).headers_read = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  548|  33.5k|	SG(global_request_time) = 0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  549|  33.5k|}
sapi_deactivate:
  552|      2|{
  553|      2|	sapi_deactivate_module();
  554|      2|	sapi_deactivate_destroy();
  555|      2|}
sapi_initialize_empty_request:
  559|      2|{
  560|      2|	SG(server_context) = NULL;
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
  561|      2|	SG(request_info).request_method = NULL;
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
  562|      2|	SG(request_info).auth_digest = SG(request_info).auth_user = SG(request_info).auth_password = NULL;
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
              	SG(request_info).auth_digest = SG(request_info).auth_user = SG(request_info).auth_password = NULL;
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
              	SG(request_info).auth_digest = SG(request_info).auth_user = SG(request_info).auth_password = NULL;
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
  563|      2|	SG(request_info).content_type_dup = NULL;
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
  564|      2|}
sapi_add_header_ex:
  638|  33.5k|{
  639|  33.5k|	sapi_header_line ctr = {0};
  640|  33.5k|	int r;
  641|       |
  642|  33.5k|	ctr.line = header_line;
  643|  33.5k|	ctr.line_len = header_line_len;
  644|       |
  645|  33.5k|	r = sapi_header_op(replace ? SAPI_HEADER_REPLACE : SAPI_HEADER_ADD,
  ------------------
  |  |  303|  33.5k|#define SAPI_HEADER_ADD			(1<<0)
  ------------------
  |  Branch (645:21): [True: 33.5k, False: 0]
  ------------------
  646|  33.5k|			&ctr);
  647|       |
  648|  33.5k|	if (!duplicate)
  ------------------
  |  Branch (648:6): [True: 0, False: 33.5k]
  ------------------
  649|      0|		efree((void *) header_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  650|       |
  651|  33.5k|	return r;
  652|  33.5k|}
sapi_header_op:
  676|  33.5k|{
  677|  33.5k|	sapi_header_struct sapi_header;
  678|  33.5k|	char *colon_offset;
  679|  33.5k|	char *header_line;
  680|  33.5k|	size_t header_line_len, header_len;
  681|  33.5k|	int http_response_code;
  682|       |
  683|  33.5k|	if (SG(headers_sent) && !SG(request_info).no_headers) {
  ------------------
  |  |  158|  67.1k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 1, False: 33.5k]
  |  |  ------------------
  ------------------
              	if (SG(headers_sent) && !SG(request_info).no_headers) {
  ------------------
  |  |  158|      1|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (683:26): [True: 1, False: 0]
  ------------------
  684|      1|		const char *output_start_filename = php_output_get_start_filename();
  685|      1|		int output_start_lineno = php_output_get_start_lineno();
  686|       |
  687|      1|		if (output_start_filename) {
  ------------------
  |  Branch (687:7): [True: 1, False: 0]
  ------------------
  688|      1|			sapi_module.sapi_error(E_WARNING, "Cannot modify header information - headers already sent by (output started at %s:%d)",
  ------------------
  |  |   23|      1|#define E_WARNING			(1<<1L)
  ------------------
  689|      1|				output_start_filename, output_start_lineno);
  690|      1|		} else {
  691|      0|			sapi_module.sapi_error(E_WARNING, "Cannot modify header information - headers already sent");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  692|      0|		}
  693|      1|		return FAILURE;
  694|      1|	}
  695|       |
  696|  33.5k|	switch (op) {
  697|      0|		case SAPI_HEADER_SET_STATUS:
  ------------------
  |  Branch (697:3): [True: 0, False: 33.5k]
  ------------------
  698|      0|			sapi_update_response_code((int)(intptr_t) arg);
  699|      0|			return SUCCESS;
  700|       |
  701|      0|		case SAPI_HEADER_ADD:
  ------------------
  |  |  303|      0|#define SAPI_HEADER_ADD			(1<<0)
  ------------------
  |  Branch (701:3): [True: 0, False: 33.5k]
  ------------------
  702|  33.5k|		case SAPI_HEADER_REPLACE:
  ------------------
  |  Branch (702:3): [True: 33.5k, False: 0]
  ------------------
  703|  33.5k|		case SAPI_HEADER_DELETE_PREFIX:
  ------------------
  |  Branch (703:3): [True: 0, False: 33.5k]
  ------------------
  704|  33.5k|		case SAPI_HEADER_DELETE: {
  ------------------
  |  Branch (704:3): [True: 0, False: 33.5k]
  ------------------
  705|  33.5k|				sapi_header_line *p = arg;
  706|       |
  707|  33.5k|				if (!p->line || !p->line_len) {
  ------------------
  |  Branch (707:9): [True: 0, False: 33.5k]
  |  Branch (707:21): [True: 0, False: 33.5k]
  ------------------
  708|      0|					return FAILURE;
  709|      0|				}
  710|  33.5k|				header_line = estrndup(p->line, p->line_len);
  ------------------
  |  |  164|  33.5k|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  711|  33.5k|				header_line_len = p->line_len;
  712|  33.5k|				if (op == SAPI_HEADER_DELETE_PREFIX) {
  ------------------
  |  Branch (712:9): [True: 0, False: 33.5k]
  ------------------
  713|      0|					header_len = p->header_len;
  714|      0|					http_response_code = 0;
  715|  33.5k|				} else {
  716|  33.5k|					header_len = 0;
  717|  33.5k|					http_response_code = p->response_code;
  718|  33.5k|				}
  719|  33.5k|				break;
  720|  33.5k|			}
  721|       |
  722|      0|		case SAPI_HEADER_DELETE_ALL:
  ------------------
  |  Branch (722:3): [True: 0, False: 33.5k]
  ------------------
  723|      0|			if (sapi_module.header_handler) {
  ------------------
  |  Branch (723:8): [True: 0, False: 0]
  ------------------
  724|      0|				sapi_module.header_handler(&sapi_header, op, &SG(sapi_headers));
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  725|      0|			}
  726|      0|			zend_llist_clean(&SG(sapi_headers).headers);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  727|      0|			return SUCCESS;
  728|       |
  729|      0|		default:
  ------------------
  |  Branch (729:3): [True: 0, False: 33.5k]
  ------------------
  730|      0|			return FAILURE;
  731|  33.5k|	}
  732|       |
  733|       |	/* cut off trailing spaces, linefeeds and carriage-returns */
  734|  33.5k|	if (header_line_len && isspace((unsigned char)header_line[header_line_len - 1])) {
  ------------------
  |  Branch (734:6): [True: 33.5k, False: 0]
  |  Branch (734:25): [True: 0, False: 33.5k]
  ------------------
  735|      0|		do {
  736|      0|			header_line_len--;
  737|      0|		} while(header_line_len && isspace((unsigned char)header_line[header_line_len - 1]));
  ------------------
  |  Branch (737:11): [True: 0, False: 0]
  |  Branch (737:30): [True: 0, False: 0]
  ------------------
  738|      0|		header_line[header_line_len]='\0';
  739|      0|	}
  740|       |
  741|  33.5k|	if (op == SAPI_HEADER_DELETE || op == SAPI_HEADER_DELETE_PREFIX) {
  ------------------
  |  Branch (741:6): [True: 0, False: 33.5k]
  |  Branch (741:34): [True: 0, False: 33.5k]
  ------------------
  742|      0|		if (op == SAPI_HEADER_DELETE && strchr(header_line, ':')) {
  ------------------
  |  Branch (742:7): [True: 0, False: 0]
  |  Branch (742:35): [True: 0, False: 0]
  ------------------
  743|      0|			efree(header_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|      0|			sapi_module.sapi_error(E_WARNING, "Header to delete may not contain colon.");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  745|      0|			return FAILURE;
  746|      0|		}
  747|      0|		if (sapi_module.header_handler) {
  ------------------
  |  Branch (747:7): [True: 0, False: 0]
  ------------------
  748|      0|			sapi_header.header = header_line;
  749|      0|			sapi_header.header_len = header_line_len;
  750|      0|			sapi_module.header_handler(&sapi_header, op, &SG(sapi_headers));
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  751|      0|		}
  752|      0|		sapi_remove_header(&SG(sapi_headers).headers, header_line, header_line_len, header_len);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  753|      0|		efree(header_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  754|      0|		return SUCCESS;
  755|  33.5k|	} else {
  756|       |		/* new line/NUL character safety check */
  757|  33.5k|		uint32_t i;
  758|   940k|		for (i = 0; i < header_line_len; i++) {
  ------------------
  |  Branch (758:15): [True: 906k, False: 33.5k]
  ------------------
  759|       |			/* RFC 7230 ch. 3.2.4 deprecates folding support */
  760|   906k|			if (header_line[i] == '\n' || header_line[i] == '\r') {
  ------------------
  |  Branch (760:8): [True: 0, False: 906k]
  |  Branch (760:34): [True: 0, False: 906k]
  ------------------
  761|      0|				efree(header_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  762|      0|				sapi_module.sapi_error(E_WARNING, "Header may not contain "
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  763|      0|						"more than a single header, new line detected");
  764|      0|				return FAILURE;
  765|      0|			}
  766|   906k|			if (header_line[i] == '\0') {
  ------------------
  |  Branch (766:8): [True: 0, False: 906k]
  ------------------
  767|      0|				efree(header_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  768|      0|				sapi_module.sapi_error(E_WARNING, "Header may not contain NUL bytes");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  769|      0|				return FAILURE;
  770|      0|			}
  771|   906k|		}
  772|  33.5k|	}
  773|       |
  774|  33.5k|	sapi_header.header = header_line;
  775|  33.5k|	sapi_header.header_len = header_line_len;
  776|       |
  777|       |	/* Check the header for a few cases that we have special support for in SAPI */
  778|  33.5k|	if (header_line_len>=5
  ------------------
  |  Branch (778:6): [True: 33.5k, False: 0]
  ------------------
  779|  33.5k|		&& !strncasecmp(header_line, "HTTP/", 5)) {
  ------------------
  |  Branch (779:6): [True: 0, False: 33.5k]
  ------------------
  780|       |		/* filter out the response code */
  781|      0|		sapi_update_response_code(sapi_extract_response_code(header_line));
  782|       |		/* sapi_update_response_code doesn't free the status line if the code didn't change */
  783|      0|		if (SG(sapi_headers).http_status_line) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (783:7): [True: 0, False: 0]
  ------------------
  784|      0|			efree(SG(sapi_headers).http_status_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|      0|		}
  786|      0|		SG(sapi_headers).http_status_line = header_line;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  787|      0|		return SUCCESS;
  788|  33.5k|	} else {
  789|  33.5k|		colon_offset = strchr(header_line, ':');
  790|  33.5k|		if (colon_offset) {
  ------------------
  |  Branch (790:7): [True: 33.5k, False: 0]
  ------------------
  791|  33.5k|			*colon_offset = 0;
  792|  33.5k|			if (!strcasecmp(header_line, "Content-Type")) {
  ------------------
  |  Branch (792:8): [True: 0, False: 33.5k]
  ------------------
  793|      0|				char *ptr = colon_offset+1, *mimetype = NULL, *newheader;
  794|      0|				size_t len = header_line_len - (ptr - header_line), newlen;
  795|      0|				while (*ptr == ' ') {
  ------------------
  |  Branch (795:12): [True: 0, False: 0]
  ------------------
  796|      0|					ptr++;
  797|      0|					len--;
  798|      0|				}
  799|       |
  800|      0|				mimetype = estrdup(ptr);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  801|      0|				newlen = sapi_apply_default_charset(&mimetype, len);
  802|      0|				if (!SG(sapi_headers).mimetype){
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (802:9): [True: 0, False: 0]
  ------------------
  803|      0|					SG(sapi_headers).mimetype = estrdup(mimetype);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
              					SG(sapi_headers).mimetype = estrdup(mimetype);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  804|      0|				}
  805|       |
  806|      0|				if (newlen != 0) {
  ------------------
  |  Branch (806:9): [True: 0, False: 0]
  ------------------
  807|      0|					newlen += sizeof("Content-type: ");
  808|      0|					newheader = emalloc(newlen);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  809|      0|					PHP_STRLCPY(newheader, "Content-type: ", newlen, sizeof("Content-type: ")-1);
  ------------------
  |  |  133|      0|	{											\
  |  |  134|      0|		size_t php_str_len;						\
  |  |  135|      0|												\
  |  |  136|      0|		if (src_size >= size)					\
  |  |  ------------------
  |  |  |  Branch (136:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  137|      0|			php_str_len = size - 1;				\
  |  |  138|      0|		else									\
  |  |  139|      0|			php_str_len = src_size;				\
  |  |  140|      0|		memcpy(dst, src, php_str_len);			\
  |  |  141|      0|		dst[php_str_len] = '\0';				\
  |  |  142|      0|	}
  ------------------
  810|      0|					strlcat(newheader, mimetype, newlen);
  ------------------
  |  |  159|      0|#define strlcat php_strlcat
  ------------------
  811|      0|					sapi_header.header = newheader;
  812|      0|					sapi_header.header_len = (uint32_t)(newlen - 1);
  813|      0|					efree(header_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  814|      0|				}
  815|      0|				efree(mimetype);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  816|      0|				SG(sapi_headers).send_default_content_type = 0;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  817|  33.5k|			} else if (!strcasecmp(header_line, "Content-Length")) {
  ------------------
  |  Branch (817:15): [True: 0, False: 33.5k]
  ------------------
  818|       |				/* Script is setting Content-length. The script cannot reasonably
  819|       |				 * know the size of the message body after compression, so it's best
  820|       |				 * to disable compression altogether. This contributes to making scripts
  821|       |				 * portable between setups that have and don't have zlib compression
  822|       |				 * enabled globally. See req #44164 */
  823|      0|				zend_string *key = ZSTR_INIT_LITERAL("zlib.output_compression", 0);
  ------------------
  |  |  141|      0|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  824|      0|				zend_alter_ini_entry_chars(key,
  825|      0|					"0", sizeof("0") - 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
  ------------------
  |  |   39|      0|#define PHP_INI_USER	ZEND_INI_USER
  |  |  ------------------
  |  |  |  |   23|      0|#define ZEND_INI_USER	(1<<0)
  |  |  ------------------
  ------------------
              					"0", sizeof("0") - 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
  ------------------
  |  |   73|      0|#define PHP_INI_STAGE_RUNTIME		ZEND_INI_STAGE_RUNTIME
  |  |  ------------------
  |  |  |  |  227|      0|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  |  |  ------------------
  ------------------
  826|      0|				zend_string_release_ex(key, 0);
  827|  33.5k|			} else if (!strcasecmp(header_line, "Location")) {
  ------------------
  |  Branch (827:15): [True: 0, False: 33.5k]
  ------------------
  828|      0|				if ((SG(sapi_headers).http_response_code < 300 ||
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (828:10): [True: 0, False: 0]
  ------------------
  829|      0|					SG(sapi_headers).http_response_code > 399) &&
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (829:6): [True: 0, False: 0]
  ------------------
  830|      0|					SG(sapi_headers).http_response_code != 201) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (830:6): [True: 0, False: 0]
  ------------------
  831|       |					/* Return a Found Redirect if one is not already specified */
  832|      0|					if (http_response_code) { /* user specified redirect code */
  ------------------
  |  Branch (832:10): [True: 0, False: 0]
  ------------------
  833|      0|						sapi_update_response_code(http_response_code);
  834|      0|					} else if (SG(request_info).proto_num > 1000 &&
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (834:17): [True: 0, False: 0]
  ------------------
  835|      0|					   SG(request_info).request_method &&
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (835:9): [True: 0, False: 0]
  ------------------
  836|      0|					   strcmp(SG(request_info).request_method, "HEAD") &&
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (836:9): [True: 0, False: 0]
  ------------------
  837|      0|					   strcmp(SG(request_info).request_method, "GET")) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (837:9): [True: 0, False: 0]
  ------------------
  838|      0|						sapi_update_response_code(303);
  839|      0|					} else {
  840|      0|						sapi_update_response_code(302);
  841|      0|					}
  842|      0|				}
  843|  33.5k|			} else if (!strcasecmp(header_line, "WWW-Authenticate")) { /* HTTP Authentication */
  ------------------
  |  Branch (843:15): [True: 0, False: 33.5k]
  ------------------
  844|      0|				sapi_update_response_code(401); /* authentication-required */
  845|      0|			}
  846|  33.5k|			if (sapi_header.header==header_line) {
  ------------------
  |  Branch (846:8): [True: 33.5k, False: 0]
  ------------------
  847|  33.5k|				*colon_offset = ':';
  848|  33.5k|			}
  849|  33.5k|		}
  850|  33.5k|	}
  851|  33.5k|	if (http_response_code) {
  ------------------
  |  Branch (851:6): [True: 0, False: 33.5k]
  ------------------
  852|      0|		sapi_update_response_code(http_response_code);
  853|      0|	}
  854|  33.5k|	sapi_header_add_op(op, &sapi_header);
  855|  33.5k|	return SUCCESS;
  856|  33.5k|}
sapi_send_headers:
  860|  33.5k|{
  861|  33.5k|	int retval;
  862|  33.5k|	int ret = FAILURE;
  863|       |
  864|  33.5k|	if (SG(headers_sent) || SG(request_info).no_headers) {
  ------------------
  |  |  158|  67.1k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
              	if (SG(headers_sent) || SG(request_info).no_headers) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (864:26): [True: 0, False: 33.5k]
  ------------------
  865|      0|		return SUCCESS;
  866|      0|	}
  867|       |
  868|       |	/* Success-oriented. We set headers_sent to 1 here to avoid an infinite loop
  869|       |	 * in case of an error situation.
  870|       |	 */
  871|  33.5k|	if (SG(sapi_headers).send_default_content_type && sapi_module.send_headers) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (871:6): [True: 33.5k, False: 0]
  |  Branch (871:52): [True: 0, False: 33.5k]
  ------------------
  872|      0|	    uint32_t len = 0;
  873|      0|		char *default_mimetype = get_default_content_type(0, &len);
  874|       |
  875|      0|		if (default_mimetype && len) {
  ------------------
  |  Branch (875:7): [True: 0, False: 0]
  |  Branch (875:27): [True: 0, False: 0]
  ------------------
  876|      0|			sapi_header_struct default_header;
  877|       |
  878|      0|			SG(sapi_headers).mimetype = default_mimetype;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  879|       |
  880|      0|			default_header.header_len = sizeof("Content-type: ") - 1 + len;
  881|      0|			default_header.header = emalloc(default_header.header_len + 1);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  882|       |
  883|      0|			memcpy(default_header.header, "Content-type: ", sizeof("Content-type: ") - 1);
  884|      0|			memcpy(default_header.header + sizeof("Content-type: ") - 1, SG(sapi_headers).mimetype, len + 1);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  885|       |
  886|      0|			sapi_header_add_op(SAPI_HEADER_ADD, &default_header);
  ------------------
  |  |  303|      0|#define SAPI_HEADER_ADD			(1<<0)
  ------------------
  887|      0|		} else {
  888|      0|			efree(default_mimetype);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  889|      0|		}
  890|      0|		SG(sapi_headers).send_default_content_type = 0;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  891|      0|	}
  892|       |
  893|  33.5k|	if (Z_TYPE(SG(callback_func)) != IS_UNDEF) {
  ------------------
  |  |  668|  33.5k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(SG(callback_func)) != IS_UNDEF) {
  ------------------
  |  |  606|  33.5k|#define IS_UNDEF					0
  ------------------
  |  Branch (893:6): [True: 0, False: 33.5k]
  ------------------
  894|      0|		zval cb;
  895|      0|		ZVAL_COPY_VALUE(&cb, &SG(callback_func));
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  896|      0|		ZVAL_UNDEF(&SG(callback_func));
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  897|      0|		sapi_run_header_callback(&cb);
  898|      0|		zval_ptr_dtor(&cb);
  899|      0|	}
  900|       |
  901|  33.5k|	SG(headers_sent) = 1;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  902|       |
  903|  33.5k|	if (sapi_module.send_headers) {
  ------------------
  |  Branch (903:6): [True: 0, False: 33.5k]
  ------------------
  904|      0|		retval = sapi_module.send_headers(&SG(sapi_headers));
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  905|  33.5k|	} else {
  906|  33.5k|		retval = SAPI_HEADER_DO_SEND;
  ------------------
  |  |  307|  33.5k|#define SAPI_HEADER_DO_SEND				2
  ------------------
  907|  33.5k|	}
  908|       |
  909|  33.5k|	switch (retval) {
  ------------------
  |  Branch (909:10): [True: 33.5k, False: 0]
  ------------------
  910|      0|		case SAPI_HEADER_SENT_SUCCESSFULLY:
  ------------------
  |  |  306|      0|#define SAPI_HEADER_SENT_SUCCESSFULLY	1
  ------------------
  |  Branch (910:3): [True: 0, False: 33.5k]
  ------------------
  911|      0|			ret = SUCCESS;
  912|      0|			break;
  913|  33.5k|		case SAPI_HEADER_DO_SEND: {
  ------------------
  |  |  307|  33.5k|#define SAPI_HEADER_DO_SEND				2
  ------------------
  |  Branch (913:3): [True: 33.5k, False: 0]
  ------------------
  914|  33.5k|				sapi_header_struct http_status_line;
  915|  33.5k|				char buf[255];
  916|       |
  917|  33.5k|				if (SG(sapi_headers).http_status_line) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (917:9): [True: 0, False: 33.5k]
  ------------------
  918|      0|					http_status_line.header = SG(sapi_headers).http_status_line;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  919|      0|					http_status_line.header_len = (uint32_t)strlen(SG(sapi_headers).http_status_line);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  920|  33.5k|				} else {
  921|  33.5k|					http_status_line.header = buf;
  922|  33.5k|					http_status_line.header_len = slprintf(buf, sizeof(buf), "HTTP/1.0 %d X", SG(sapi_headers).http_response_code);
  ------------------
  |  |   87|  33.5k|#define slprintf ap_php_slprintf
  ------------------
              					http_status_line.header_len = slprintf(buf, sizeof(buf), "HTTP/1.0 %d X", SG(sapi_headers).http_response_code);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  923|  33.5k|				}
  924|  33.5k|				sapi_module.send_header(&http_status_line, SG(server_context));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  925|  33.5k|			}
  926|  33.5k|			zend_llist_apply_with_argument(&SG(sapi_headers).headers, (llist_apply_with_arg_func_t) sapi_module.send_header, SG(server_context));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
              			zend_llist_apply_with_argument(&SG(sapi_headers).headers, (llist_apply_with_arg_func_t) sapi_module.send_header, SG(server_context));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  927|  33.5k|			if(SG(sapi_headers).send_default_content_type) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (927:7): [True: 33.5k, False: 0]
  ------------------
  928|  33.5k|				sapi_header_struct default_header;
  929|       |
  930|  33.5k|				sapi_get_default_content_type_header(&default_header);
  931|  33.5k|				sapi_module.send_header(&default_header, SG(server_context));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  932|  33.5k|				sapi_free_header(&default_header);
  933|  33.5k|			}
  934|  33.5k|			sapi_module.send_header(NULL, SG(server_context));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  935|  33.5k|			ret = SUCCESS;
  936|  33.5k|			break;
  937|      0|		case SAPI_HEADER_SEND_FAILED:
  ------------------
  |  |  308|      0|#define SAPI_HEADER_SEND_FAILED			3
  ------------------
  |  Branch (937:3): [True: 0, False: 33.5k]
  ------------------
  938|      0|			SG(headers_sent) = 0;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  939|      0|			ret = FAILURE;
  940|      0|			break;
  941|  33.5k|	}
  942|       |
  943|  33.5k|	sapi_send_headers_free();
  944|       |
  945|  33.5k|	return ret;
  946|  33.5k|}
sapi_register_post_entries:
  950|      2|{
  951|      2|	const sapi_post_entry *p=post_entries;
  952|       |
  953|      6|	while (p->content_type) {
  ------------------
  |  Branch (953:9): [True: 4, False: 2]
  ------------------
  954|      4|		if (sapi_register_post_entry(p) == FAILURE) {
  ------------------
  |  Branch (954:7): [True: 0, False: 4]
  ------------------
  955|      0|			return FAILURE;
  956|      0|		}
  957|      4|		p++;
  958|      4|	}
  959|      2|	return SUCCESS;
  960|      2|}
sapi_register_post_entry:
  964|      4|{
  965|      4|	int ret;
  966|      4|	zend_string *key;
  967|      4|	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |  158|      8|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 4]
  |  |  ------------------
  ------------------
              	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  968|      0|		return FAILURE;
  969|      0|	}
  970|      4|	key = zend_string_init(post_entry->content_type, post_entry->content_type_len, 1);
  971|      4|	GC_MAKE_PERSISTENT_LOCAL(key);
  ------------------
  |  | 1326|      4|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 4]
  |  |  ------------------
  ------------------
  972|      4|	ret = zend_hash_add_mem(&SG(known_post_content_types), key,
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (972:8): [True: 4, False: 0]
  ------------------
  973|      4|			(void *) post_entry, sizeof(sapi_post_entry)) ? SUCCESS : FAILURE;
  974|      4|	zend_string_release_ex(key, 1);
  975|      4|	return ret;
  976|      4|}
sapi_register_default_post_reader:
  989|      2|{
  990|      2|	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  991|      0|		return FAILURE;
  992|      0|	}
  993|      2|	sapi_module.default_post_reader = default_post_reader;
  994|      2|	return SUCCESS;
  995|      2|}
sapi_register_treat_data:
  999|      2|{
 1000|      2|	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1001|      0|		return FAILURE;
 1002|      0|	}
 1003|      2|	sapi_module.treat_data = treat_data;
 1004|      2|	return SUCCESS;
 1005|      2|}
sapi_register_input_filter:
 1008|      2|{
 1009|      2|	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (SG(sapi_started) && EG(current_execute_data)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1010|      0|		return FAILURE;
 1011|      0|	}
 1012|      2|	sapi_module.input_filter = input_filter;
 1013|      2|	sapi_module.input_filter_init = input_filter_init;
 1014|      2|	return SUCCESS;
 1015|      2|}
sapi_flush:
 1018|  7.90M|{
 1019|  7.90M|	if (sapi_module.flush) {
  ------------------
  |  Branch (1019:6): [True: 7.90M, False: 0]
  ------------------
 1020|  7.90M|		sapi_module.flush(SG(server_context));
  ------------------
  |  |  158|  7.90M|# define SG(v) (sapi_globals.v)
  ------------------
 1021|  7.90M|		return SUCCESS;
 1022|  7.90M|	} else {
 1023|      0|		return FAILURE;
 1024|      0|	}
 1025|  7.90M|}
sapi_getenv:
 1040|      3|{
 1041|      3|	char *value, *tmp;
 1042|       |
 1043|      3|	if (!sapi_module.getenv) {
  ------------------
  |  Branch (1043:6): [True: 3, False: 0]
  ------------------
 1044|      3|		return NULL;
 1045|      3|	}
 1046|      0|	if (!strncasecmp(name, "HTTP_PROXY", name_len)) {
  ------------------
  |  Branch (1046:6): [True: 0, False: 0]
  ------------------
 1047|       |		/* Ugly fix for HTTP_PROXY issue, see bug #72573 */
 1048|      0|		return NULL;
 1049|      0|	}
 1050|      0|	tmp = sapi_module.getenv(name, name_len);
 1051|      0|	if (!tmp) {
  ------------------
  |  Branch (1051:6): [True: 0, False: 0]
  ------------------
 1052|      0|		return NULL;
 1053|      0|	}
 1054|      0|	value = estrdup(tmp);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1055|       |#ifdef PHP_WIN32
 1056|       |	if (strlen(sapi_module.name) == sizeof("cgi-fcgi") - 1 && !strcmp(sapi_module.name, "cgi-fcgi")) {
 1057|       |		/* XXX more modules to go, if needed. */
 1058|       |		free(tmp);
 1059|       |	}
 1060|       |#endif
 1061|      0|	if (sapi_module.input_filter) {
  ------------------
  |  Branch (1061:6): [True: 0, False: 0]
  ------------------
 1062|      0|		sapi_module.input_filter(PARSE_STRING, name, &value, strlen(value), NULL);
  ------------------
  |  |   25|      0|#define PARSE_STRING 3
  ------------------
 1063|      0|	}
 1064|      0|	return value;
 1065|      0|}
sapi_get_request_time:
 1105|  33.5k|{
 1106|  33.5k|	if(SG(global_request_time)) return SG(global_request_time);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 4, False: 33.5k]
  |  |  ------------------
  ------------------
              	if(SG(global_request_time)) return SG(global_request_time);
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  ------------------
 1107|       |
 1108|  33.5k|	if (!sapi_module.get_request_time
  ------------------
  |  Branch (1108:6): [True: 33.5k, False: 0]
  ------------------
 1109|  33.5k|			|| sapi_module.get_request_time(&SG(global_request_time)) == FAILURE) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (1109:7): [True: 0, False: 0]
  ------------------
 1110|  33.5k|		struct timeval tp = {0};
 1111|  33.5k|		if (!gettimeofday(&tp, NULL)) {
  ------------------
  |  Branch (1111:7): [True: 33.5k, False: 0]
  ------------------
 1112|  33.5k|			SG(global_request_time) = (double)(tp.tv_sec + tp.tv_usec / 1000000.00);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
 1113|  33.5k|		} else {
 1114|      0|			SG(global_request_time) = (double)time(0);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
 1115|      0|		}
 1116|  33.5k|	}
 1117|  33.5k|	return SG(global_request_time);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
 1118|  33.5k|}
SAPI.c:sapi_globals_ctor:
   51|      2|{
   52|      2|	memset(sapi_globals, 0, sizeof(*sapi_globals));
   53|      2|	zend_hash_init(&sapi_globals->known_post_content_types, 8, NULL, _type_dtor, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   54|      2|	php_setup_sapi_content_types();
   55|      2|}
SAPI.c:get_default_content_type:
  298|  33.5k|{
  299|  33.5k|	char *mimetype, *charset, *content_type;
  300|  33.5k|	uint32_t mimetype_len, charset_len;
  301|       |
  302|  33.5k|	if (SG(default_mimetype)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  303|  33.5k|		mimetype = SG(default_mimetype);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  304|  33.5k|		mimetype_len = (uint32_t)strlen(SG(default_mimetype));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  305|  33.5k|	} else {
  306|      0|		mimetype = SAPI_DEFAULT_MIMETYPE;
  ------------------
  |  |  310|      0|#define SAPI_DEFAULT_MIMETYPE		"text/html"
  ------------------
  307|      0|		mimetype_len = sizeof(SAPI_DEFAULT_MIMETYPE) - 1;
  ------------------
  |  |  310|      0|#define SAPI_DEFAULT_MIMETYPE		"text/html"
  ------------------
  308|      0|	}
  309|  33.5k|	if (SG(default_charset)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (158:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  310|  33.5k|		charset = SG(default_charset);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  311|  33.5k|		charset_len = (uint32_t)strlen(SG(default_charset));
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  312|  33.5k|	} else {
  313|      0|		charset = SAPI_DEFAULT_CHARSET;
  ------------------
  |  |  311|      0|#define SAPI_DEFAULT_CHARSET		PHP_DEFAULT_CHARSET
  |  |  ------------------
  |  |  |  |   25|      0|#define PHP_DEFAULT_CHARSET "UTF-8"
  |  |  ------------------
  ------------------
  314|      0|		charset_len = sizeof(SAPI_DEFAULT_CHARSET) - 1;
  ------------------
  |  |  311|      0|#define SAPI_DEFAULT_CHARSET		PHP_DEFAULT_CHARSET
  |  |  ------------------
  |  |  |  |   25|      0|#define PHP_DEFAULT_CHARSET "UTF-8"
  |  |  ------------------
  ------------------
  315|      0|	}
  316|       |
  317|  33.5k|	if (*charset && strncasecmp(mimetype, "text/", 5) == 0) {
  ------------------
  |  Branch (317:6): [True: 33.5k, False: 0]
  |  Branch (317:18): [True: 33.5k, False: 0]
  ------------------
  318|  33.5k|		char *p;
  319|       |
  320|  33.5k|		*len = prefix_len + mimetype_len + sizeof("; charset=") - 1 + charset_len;
  321|  33.5k|		content_type = (char*)emalloc(*len + 1);
  ------------------
  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  322|  33.5k|		p = content_type + prefix_len;
  323|  33.5k|		p = zend_mempcpy(p, mimetype, mimetype_len);
  324|  33.5k|		p = zend_mempcpy(p, "; charset=", sizeof("; charset=") - 1);
  325|  33.5k|		memcpy(p, charset, charset_len + 1);
  326|  33.5k|	} else {
  327|      0|		*len = prefix_len + mimetype_len;
  328|       |		content_type = (char*)emalloc(*len + 1);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  329|      0|		memcpy(content_type + prefix_len, mimetype, mimetype_len + 1);
  330|      0|	}
  331|  33.5k|	return content_type;
  332|  33.5k|}
SAPI.c:sapi_send_headers_free:
  489|  67.1k|{
  490|  67.1k|	if (SG(sapi_headers).http_status_line) {
  ------------------
  |  |  158|  67.1k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (490:6): [True: 0, False: 67.1k]
  ------------------
  491|      0|		efree(SG(sapi_headers).http_status_line);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  492|      0|		SG(sapi_headers).http_status_line = NULL;
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  493|      0|	}
  494|  67.1k|}
SAPI.c:sapi_remove_header:
  603|  33.5k|{
  604|  33.5k|	sapi_header_struct *header;
  605|  33.5k|	zend_llist_element *next;
  606|  33.5k|	zend_llist_element *current=l->head;
  607|       |
  608|  33.5k|	while (current) {
  ------------------
  |  Branch (608:9): [True: 0, False: 33.5k]
  ------------------
  609|      0|		header = (sapi_header_struct *)(current->data);
  610|      0|		next = current->next;
  611|       |		/*
  612|       |		 * prefix_len is set for DELETE_PREFIX (used for deleting i.e.
  613|       |		 * "Set-Cookie: PHPSESSID=", where we need more than just key)
  614|       |		 * look for the : otherwise
  615|       |		 */
  616|      0|		if (header->header_len > len
  ------------------
  |  Branch (616:7): [True: 0, False: 0]
  ------------------
  617|      0|				&& (header->header[len] == ':' || (prefix_len && len > prefix_len))
  ------------------
  |  Branch (617:9): [True: 0, False: 0]
  |  Branch (617:40): [True: 0, False: 0]
  |  Branch (617:54): [True: 0, False: 0]
  ------------------
  618|      0|				&& !strncasecmp(header->header, name, len)) {
  ------------------
  |  Branch (618:8): [True: 0, False: 0]
  ------------------
  619|      0|			if (current->prev) {
  ------------------
  |  Branch (619:8): [True: 0, False: 0]
  ------------------
  620|      0|				current->prev->next = next;
  621|      0|			} else {
  622|      0|				l->head = next;
  623|      0|			}
  624|      0|			if (next) {
  ------------------
  |  Branch (624:8): [True: 0, False: 0]
  ------------------
  625|      0|				next->prev = current->prev;
  626|      0|			} else {
  627|      0|				l->tail = current->prev;
  628|      0|			}
  629|      0|			sapi_free_header(header);
  630|       |			efree(current);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  631|      0|			--l->count;
  632|      0|		}
  633|      0|		current = next;
  634|      0|	}
  635|  33.5k|}
SAPI.c:sapi_header_add_op:
  655|  33.5k|{
  656|  33.5k|	if (!sapi_module.header_handler ||
  ------------------
  |  Branch (656:6): [True: 33.5k, False: 0]
  ------------------
  657|  33.5k|		(SAPI_HEADER_ADD & sapi_module.header_handler(sapi_header, op, &SG(sapi_headers)))) {
  ------------------
  |  |  303|      0|#define SAPI_HEADER_ADD			(1<<0)
  ------------------
              		(SAPI_HEADER_ADD & sapi_module.header_handler(sapi_header, op, &SG(sapi_headers)))) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (657:3): [True: 0, False: 0]
  ------------------
  658|  33.5k|		if (op == SAPI_HEADER_REPLACE) {
  ------------------
  |  Branch (658:7): [True: 33.5k, False: 0]
  ------------------
  659|  33.5k|			char *colon_offset = strchr(sapi_header->header, ':');
  660|       |
  661|  33.5k|			if (colon_offset) {
  ------------------
  |  Branch (661:8): [True: 33.5k, False: 0]
  ------------------
  662|  33.5k|				char sav = *colon_offset;
  663|       |
  664|  33.5k|				*colon_offset = 0;
  665|  33.5k|				sapi_remove_header(&SG(sapi_headers).headers, sapi_header->header, strlen(sapi_header->header), 0);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  666|  33.5k|				*colon_offset = sav;
  667|  33.5k|			}
  668|  33.5k|		}
  669|  33.5k|		zend_llist_add_element(&SG(sapi_headers).headers, (void *) sapi_header);
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  670|  33.5k|	} else {
  671|      0|		sapi_free_header(sapi_header);
  672|      0|	}
  673|  33.5k|}

OnUpdateBaseDir:
   72|      6|{
   73|      6|	char **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      6|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      6|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
   74|      6|	char *pathbuf, *ptr, *end;
   75|       |
   76|      6|	if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN || stage == PHP_INI_STAGE_ACTIVATE || stage == PHP_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |   69|      6|#define PHP_INI_STAGE_STARTUP		ZEND_INI_STAGE_STARTUP
  |  |  ------------------
  |  |  |  |  223|     12|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  |  |  ------------------
  ------------------
              	if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN || stage == PHP_INI_STAGE_ACTIVATE || stage == PHP_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |   70|      4|#define PHP_INI_STAGE_SHUTDOWN		ZEND_INI_STAGE_SHUTDOWN
  |  |  ------------------
  |  |  |  |  224|     10|#define ZEND_INI_STAGE_SHUTDOWN		(1<<1)
  |  |  ------------------
  ------------------
              	if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN || stage == PHP_INI_STAGE_ACTIVATE || stage == PHP_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |   71|      4|#define PHP_INI_STAGE_ACTIVATE		ZEND_INI_STAGE_ACTIVATE
  |  |  ------------------
  |  |  |  |  225|     10|#define ZEND_INI_STAGE_ACTIVATE		(1<<2)
  |  |  ------------------
  ------------------
              	if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN || stage == PHP_INI_STAGE_ACTIVATE || stage == PHP_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |   72|      4|#define PHP_INI_STAGE_DEACTIVATE	ZEND_INI_STAGE_DEACTIVATE
  |  |  ------------------
  |  |  |  |  226|      4|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  |  |  ------------------
  ------------------
  |  Branch (76:6): [True: 2, False: 4]
  |  Branch (76:40): [True: 0, False: 4]
  |  Branch (76:75): [True: 0, False: 4]
  |  Branch (76:110): [True: 2, False: 2]
  ------------------
   77|      4|		if (PG(open_basedir_modified)) {
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 1, False: 3]
  |  |  ------------------
  ------------------
   78|      1|			efree(*p);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   79|      1|		}
   80|       |		/* We're in a PHP_INI_SYSTEM context, no restrictions */
   81|      4|		*p = new_value ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   67|      4|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (81:8): [True: 4, False: 0]
  ------------------
   82|      4|		PG(open_basedir_modified) = false;
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  ------------------
   83|      4|		return SUCCESS;
   84|      4|	}
   85|       |
   86|       |	/* Shortcut: When we have a open_basedir and someone tries to unset, we know it'll fail */
   87|      2|	if (!new_value || !*ZSTR_VAL(new_value)) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (87:6): [True: 0, False: 2]
  |  Branch (87:20): [True: 1, False: 1]
  ------------------
   88|      1|		return FAILURE;
   89|      1|	}
   90|       |
   91|       |	/* Is the proposed open_basedir at least as restrictive as the current setting? */
   92|      1|	smart_str buf = {0};
   93|      1|	ptr = pathbuf = estrdup(ZSTR_VAL(new_value));
  ------------------
  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|      2|	while (ptr && *ptr) {
  ------------------
  |  Branch (94:9): [True: 1, False: 1]
  |  Branch (94:16): [True: 1, False: 0]
  ------------------
   95|      1|		end = strchr(ptr, DEFAULT_DIR_SEPARATOR);
  ------------------
  |  |  110|      1|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
   96|      1|		if (end != NULL) {
  ------------------
  |  Branch (96:7): [True: 0, False: 1]
  ------------------
   97|      0|			*end = '\0';
   98|      0|			end++;
   99|      0|		}
  100|      1|		char resolved_name[MAXPATHLEN + 1];
  101|      1|		if (expand_filepath(ptr, resolved_name) == NULL) {
  ------------------
  |  Branch (101:7): [True: 0, False: 1]
  ------------------
  102|      0|			efree(pathbuf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  103|      0|			smart_str_free(&buf);
  104|      0|			return FAILURE;
  105|      0|		}
  106|      1|		if (php_check_open_basedir_ex(resolved_name, 0) != 0) {
  ------------------
  |  Branch (106:7): [True: 0, False: 1]
  ------------------
  107|       |			/* At least one portion of this open_basedir is less restrictive than the prior one, FAIL */
  108|      0|			efree(pathbuf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|      0|			smart_str_free(&buf);
  110|      0|			return FAILURE;
  111|      0|		}
  112|      1|		if (smart_str_get_len(&buf) != 0) {
  ------------------
  |  Branch (112:7): [True: 0, False: 1]
  ------------------
  113|      0|			smart_str_appendc(&buf, DEFAULT_DIR_SEPARATOR);
  ------------------
  |  |  110|      0|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
  114|      0|		}
  115|      1|		smart_str_appends(&buf, resolved_name);
  116|      1|		ptr = end;
  117|      1|	}
  118|      1|	efree(pathbuf);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|       |
  120|       |	/* Everything checks out, set it */
  121|      1|	zend_string *tmp = smart_str_extract(&buf);
  122|      1|	char *result = estrdup(ZSTR_VAL(tmp));
  ------------------
  |  |  163|      1|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|      1|	if (PG(open_basedir_modified)) {
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  124|      0|		efree(*p);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  125|      0|	}
  126|      1|	*p = result;
  127|      1|	PG(open_basedir_modified) = true;
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
  128|      1|	zend_string_release(tmp);
  129|       |
  130|      1|	return SUCCESS;
  131|      1|}
php_check_specific_open_basedir:
  140|     63|{
  141|     63|	char resolved_name[MAXPATHLEN + 1];
  142|     63|	char resolved_basedir[MAXPATHLEN + 1];
  143|     63|	char local_open_basedir[MAXPATHLEN];
  144|     63|	char path_tmp[MAXPATHLEN + 1];
  145|     63|	char *path_file;
  146|     63|	size_t resolved_basedir_len;
  147|     63|	size_t resolved_name_len;
  148|     63|	size_t path_len;
  149|     63|	int nesting_level = 0;
  150|       |
  151|       |	/* Special case basedir==".": Use script-directory */
  152|     63|	if (strcmp(basedir, ".") || !VCWD_GETCWD(local_open_basedir, MAXPATHLEN)) {
  ------------------
  |  |  328|      0|#define VCWD_GETCWD(buff, size) getcwd(buff, size)
  ------------------
  |  Branch (152:6): [True: 63, False: 0]
  |  Branch (152:30): [True: 0, False: 0]
  ------------------
  153|       |		/* Else use the unmodified path */
  154|     63|		strlcpy(local_open_basedir, basedir, sizeof(local_open_basedir));
  ------------------
  |  |  149|     63|#define strlcpy php_strlcpy
  ------------------
  155|     63|	}
  156|       |
  157|     63|	path_len = strlen(path);
  158|     63|	if (path_len > (MAXPATHLEN - 1)) {
  ------------------
  |  Branch (158:6): [True: 0, False: 63]
  ------------------
  159|       |		/* empty and too long paths are invalid */
  160|      0|		return -1;
  161|      0|	}
  162|       |
  163|       |	/* normalize and expand path */
  164|     63|	if (expand_filepath(path, resolved_name) == NULL) {
  ------------------
  |  Branch (164:6): [True: 0, False: 63]
  ------------------
  165|      0|		return -1;
  166|      0|	}
  167|       |
  168|     63|	path_len = strlen(resolved_name);
  169|     63|	memcpy(path_tmp, resolved_name, path_len + 1); /* safe */
  170|       |
  171|    136|	while (VCWD_REALPATH(path_tmp, resolved_name) == NULL) {
  ------------------
  |  |  339|    136|#define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path)
  ------------------
  |  Branch (171:9): [True: 74, False: 62]
  ------------------
  172|     74|#if defined(PHP_WIN32) || defined(HAVE_SYMLINK)
  173|     74|		if (nesting_level == 0) {
  ------------------
  |  Branch (173:7): [True: 55, False: 19]
  ------------------
  174|     55|			ssize_t ret;
  175|     55|			char buf[MAXPATHLEN];
  176|       |
  177|     55|			ret = php_sys_readlink(path_tmp, buf, MAXPATHLEN - 1);
  ------------------
  |  |  159|     55|# define php_sys_readlink(link, target, target_len) readlink(link, target, target_len)
  ------------------
  178|     55|			if (ret == -1) {
  ------------------
  |  Branch (178:8): [True: 55, False: 0]
  ------------------
  179|       |				/* not a broken symlink, move along.. */
  180|     55|			} else {
  181|       |				/* put the real path into the path buffer */
  182|      0|				memcpy(path_tmp, buf, ret);
  183|      0|				path_tmp[ret] = '\0';
  184|      0|			}
  185|     55|		}
  186|     74|#endif
  187|       |
  188|       |#ifdef PHP_WIN32
  189|       |		path_file = strrchr(path_tmp, DEFAULT_SLASH);
  190|       |		if (!path_file) {
  191|       |			path_file = strrchr(path_tmp, '/');
  192|       |		}
  193|       |#else
  194|     74|		path_file = strrchr(path_tmp, DEFAULT_SLASH);
  ------------------
  |  |  105|     74|#define DEFAULT_SLASH '/'
  ------------------
  195|     74|#endif
  196|     74|		if (!path_file) {
  ------------------
  |  Branch (196:7): [True: 0, False: 74]
  ------------------
  197|       |			/* none of the path components exist. definitely not in open_basedir.. */
  198|      0|			return -1;
  199|     74|		} else {
  200|     74|			path_len = path_file - path_tmp + 1;
  201|       |#ifdef PHP_WIN32
  202|       |			if (path_len > 1 && path_tmp[path_len - 2] == ':') {
  203|       |				if (path_len != 3) {
  204|       |					return -1;
  205|       |				}
  206|       |				/* this is c:\ */
  207|       |				path_tmp[path_len] = '\0';
  208|       |			} else {
  209|       |				path_tmp[path_len - 1] = '\0';
  210|       |			}
  211|       |#else
  212|     74|			path_tmp[path_len - 1] = '\0';
  213|     74|#endif
  214|     74|		}
  215|     74|		if (*path_tmp == '\0') {
  ------------------
  |  Branch (215:7): [True: 1, False: 73]
  ------------------
  216|       |			/* Do not pass an empty string to realpath(), as this will resolve to CWD. */
  217|      1|			break;
  218|      1|		}
  219|     73|		nesting_level++;
  220|     73|	}
  221|       |
  222|       |	/* Resolve open_basedir to resolved_basedir */
  223|     63|	if (expand_filepath(local_open_basedir, resolved_basedir) != NULL) {
  ------------------
  |  Branch (223:6): [True: 63, False: 0]
  ------------------
  224|     63|		size_t basedir_len = strlen(basedir);
  225|       |		/* Handler for basedirs that end with a / */
  226|     63|		resolved_basedir_len = strlen(resolved_basedir);
  227|       |#ifdef PHP_WIN32
  228|       |		if (basedir[basedir_len - 1] == PHP_DIR_SEPARATOR || basedir[basedir_len - 1] == '/') {
  229|       |#else
  230|     63|		if (basedir[basedir_len - 1] == PHP_DIR_SEPARATOR) {
  ------------------
  |  |   70|     63|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  |  Branch (230:7): [True: 0, False: 63]
  ------------------
  231|      0|#endif
  232|      0|			if (resolved_basedir[resolved_basedir_len - 1] != PHP_DIR_SEPARATOR) {
  ------------------
  |  |   70|      0|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  |  Branch (232:8): [True: 0, False: 0]
  ------------------
  233|      0|				resolved_basedir[resolved_basedir_len] = PHP_DIR_SEPARATOR;
  ------------------
  |  |   70|      0|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  234|      0|				resolved_basedir[++resolved_basedir_len] = '\0';
  235|      0|			}
  236|     63|		} else {
  237|     63|				resolved_basedir[resolved_basedir_len++] = PHP_DIR_SEPARATOR;
  ------------------
  |  |   70|     63|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  238|     63|				resolved_basedir[resolved_basedir_len] = '\0';
  239|     63|		}
  240|       |
  241|     63|		resolved_name_len = strlen(resolved_name);
  242|     63|		if (path_tmp[path_len - 1] == PHP_DIR_SEPARATOR) {
  ------------------
  |  |   70|     63|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  |  Branch (242:7): [True: 0, False: 63]
  ------------------
  243|      0|			if (resolved_name[resolved_name_len - 1] != PHP_DIR_SEPARATOR) {
  ------------------
  |  |   70|      0|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  |  Branch (243:8): [True: 0, False: 0]
  ------------------
  244|      0|				resolved_name[resolved_name_len] = PHP_DIR_SEPARATOR;
  ------------------
  |  |   70|      0|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  245|      0|				resolved_name[++resolved_name_len] = '\0';
  246|      0|			}
  247|      0|		}
  248|       |
  249|       |		/* Check the path */
  250|       |#ifdef PHP_WIN32
  251|       |		if (strncasecmp(resolved_basedir, resolved_name, resolved_basedir_len) == 0) {
  252|       |#else
  253|     63|		if (strncmp(resolved_basedir, resolved_name, resolved_basedir_len) == 0) {
  ------------------
  |  Branch (253:7): [True: 6, False: 57]
  ------------------
  254|      6|#endif
  255|      6|			if (resolved_name_len > resolved_basedir_len &&
  ------------------
  |  Branch (255:8): [True: 6, False: 0]
  ------------------
  256|      6|				resolved_name[resolved_basedir_len - 1] != PHP_DIR_SEPARATOR) {
  ------------------
  |  |   70|      6|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  |  Branch (256:5): [True: 0, False: 6]
  ------------------
  257|      0|				return -1;
  258|      6|			} else {
  259|       |				/* File is in the right directory */
  260|      6|				return 0;
  261|      6|			}
  262|     57|		} else {
  263|       |			/* /openbasedir/ and /openbasedir are the same directory */
  264|     57|			if (resolved_basedir_len == (resolved_name_len + 1) && resolved_basedir[resolved_basedir_len - 1] == PHP_DIR_SEPARATOR) {
  ------------------
  |  |   70|     25|#	define PHP_DIR_SEPARATOR '/'
  ------------------
  |  Branch (264:8): [True: 25, False: 32]
  |  Branch (264:59): [True: 25, False: 0]
  ------------------
  265|       |#ifdef PHP_WIN32
  266|       |				if (strncasecmp(resolved_basedir, resolved_name, resolved_name_len) == 0) {
  267|       |#else
  268|     25|				if (strncmp(resolved_basedir, resolved_name, resolved_name_len) == 0) {
  ------------------
  |  Branch (268:9): [True: 23, False: 2]
  ------------------
  269|     23|#endif
  270|     23|					return 0;
  271|     23|				}
  272|     25|			}
  273|     34|			return -1;
  274|     57|		}
  275|     63|	} else {
  276|       |		/* Unable to resolve the real path, return -1 */
  277|      0|		return -1;
  278|      0|	}
  279|     63|}
php_check_open_basedir:
  283|     70|{
  284|     70|	return php_check_open_basedir_ex(path, 1);
  285|     70|}
php_check_open_basedir_ex:
  289|     71|{
  290|       |	/* Only check when open_basedir is available */
  291|     71|	if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|    142|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 63, False: 8]
  |  |  ------------------
  ------------------
              	if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|     63|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (291:26): [True: 63, False: 0]
  ------------------
  292|     63|		char *pathbuf;
  293|     63|		char *ptr;
  294|     63|		char *end;
  295|       |
  296|       |		/* Check if the path is too long so we can give a more useful error
  297|       |		* message. */
  298|     63|		if (strlen(path) > (MAXPATHLEN - 1)) {
  ------------------
  |  Branch (298:7): [True: 0, False: 63]
  ------------------
  299|      0|			php_error_docref(NULL, E_WARNING, "File name is longer than the maximum allowed path length on this platform (%d): %s", MAXPATHLEN, path);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  300|      0|			errno = EINVAL;
  301|      0|			return -1;
  302|      0|		}
  303|       |
  304|     63|		pathbuf = estrdup(PG(open_basedir));
  ------------------
  |  |  163|     63|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     63|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     63|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     63|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     63|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  305|       |
  306|     63|		ptr = pathbuf;
  307|       |
  308|     97|		while (ptr && *ptr) {
  ------------------
  |  Branch (308:10): [True: 63, False: 34]
  |  Branch (308:17): [True: 63, False: 0]
  ------------------
  309|     63|			end = strchr(ptr, DEFAULT_DIR_SEPARATOR);
  ------------------
  |  |  110|     63|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
  310|     63|			if (end != NULL) {
  ------------------
  |  Branch (310:8): [True: 0, False: 63]
  ------------------
  311|      0|				*end = '\0';
  312|      0|				end++;
  313|      0|			}
  314|       |
  315|     63|			if (php_check_specific_open_basedir(ptr, path) == 0) {
  ------------------
  |  Branch (315:8): [True: 29, False: 34]
  ------------------
  316|     29|				efree(pathbuf);
  ------------------
  |  |  154|     29|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     29|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     29|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     29|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     29|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|     29|				return 0;
  318|     29|			}
  319|       |
  320|     34|			ptr = end;
  321|     34|		}
  322|     34|		if (warn) {
  ------------------
  |  Branch (322:7): [True: 34, False: 0]
  ------------------
  323|     34|			php_error_docref(NULL, E_WARNING, "open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s)", path, PG(open_basedir));
  ------------------
  |  |   23|     34|#define E_WARNING			(1<<1L)
  ------------------
              			php_error_docref(NULL, E_WARNING, "open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s)", path, PG(open_basedir));
  ------------------
  |  |   29|     34|# define PG(v) (core_globals.v)
  ------------------
  324|     34|		}
  325|     34|		efree(pathbuf);
  ------------------
  |  |  154|     34|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     34|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     34|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     34|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     34|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|     34|		errno = EPERM; /* we deny permission to open it */
  327|     34|		return -1;
  328|     63|	}
  329|       |
  330|       |	/* Nothing to check... */
  331|      8|	return 0;
  332|     71|}
php_resolve_path:
  498|  5.36k|{
  499|  5.36k|	zend_string *resolved_path;
  500|  5.36k|	char trypath[MAXPATHLEN];
  501|  5.36k|	const char *ptr, *end, *p;
  502|  5.36k|	const char *actual_path;
  503|  5.36k|	php_stream_wrapper *wrapper;
  504|  5.36k|	zend_string *exec_filename;
  505|       |
  506|  5.36k|	if (!filename || zend_char_has_nul_byte(filename, filename_length)) {
  ------------------
  |  Branch (506:6): [True: 0, False: 5.36k]
  |  Branch (506:19): [True: 0, False: 5.36k]
  ------------------
  507|      0|		return NULL;
  508|      0|	}
  509|       |
  510|       |	/* Don't resolve paths which contain protocol (except of file://) */
  511|  11.6k|	for (p = filename; isalnum((unsigned char)*p) || *p == '+' || *p == '-' || *p == '.'; p++);
  ------------------
  |  Branch (511:21): [True: 6.23k, False: 5.38k]
  |  Branch (511:51): [True: 0, False: 5.38k]
  |  Branch (511:64): [True: 1, False: 5.38k]
  |  Branch (511:77): [True: 23, False: 5.36k]
  ------------------
  512|  5.36k|	if ((*p == ':') && (p - filename > 1) && (p[1] == '/') && (p[2] == '/')) {
  ------------------
  |  Branch (512:6): [True: 1.33k, False: 4.02k]
  |  Branch (512:21): [True: 1.33k, False: 1]
  |  Branch (512:43): [True: 1.33k, False: 2]
  |  Branch (512:60): [True: 1.33k, False: 0]
  ------------------
  513|  1.33k|		wrapper = php_stream_locate_url_wrapper(filename, &actual_path, STREAM_OPEN_FOR_INCLUDE);
  ------------------
  |  |  601|  1.33k|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  514|  1.33k|		if (wrapper == &php_plain_files_wrapper) {
  ------------------
  |  Branch (514:7): [True: 1, False: 1.33k]
  ------------------
  515|      1|			if ((resolved_path = tsrm_realpath_str(actual_path))) {
  ------------------
  |  Branch (515:8): [True: 0, False: 1]
  ------------------
  516|      0|				return resolved_path;
  517|      0|			}
  518|      1|		}
  519|  1.33k|		return NULL;
  520|  1.33k|	}
  521|       |
  522|  4.03k|	if ((*filename == '.' &&
  ------------------
  |  Branch (522:7): [True: 2, False: 4.02k]
  ------------------
  523|      2|	     (IS_SLASH(filename[1]) ||
  ------------------
  |  |  113|      4|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  524|      2|	      ((filename[1] == '.') && IS_SLASH(filename[2])))) ||
  ------------------
  |  |  113|      2|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (524:9): [True: 2, False: 0]
  ------------------
  525|  4.02k|	    IS_ABSOLUTE_PATH(filename, filename_length) ||
  ------------------
  |  |  127|  8.05k|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|  4.02k|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (127:2): [True: 31, False: 3.99k]
  |  |  ------------------
  ------------------
  526|       |#ifdef PHP_WIN32
  527|       |		/* This should count as an absolute local path as well, however
  528|       |		   IS_ABSOLUTE_PATH doesn't care about this path form till now. It
  529|       |		   might be a big thing to extend, thus just a local handling for
  530|       |		   now. */
  531|       |		(filename_length >=2 && IS_SLASH(filename[0]) && !IS_SLASH(filename[1])) ||
  532|       |#endif
  533|  3.99k|	    !path ||
  ------------------
  |  Branch (533:6): [True: 0, False: 3.99k]
  ------------------
  534|  3.99k|	    !*path) {
  ------------------
  |  Branch (534:6): [True: 0, False: 3.99k]
  ------------------
  535|     32|		return tsrm_realpath_str(filename);
  536|     32|	}
  537|       |
  538|  3.99k|	ptr = path;
  539|  7.99k|	while (ptr && *ptr) {
  ------------------
  |  Branch (539:9): [True: 4.03k, False: 3.96k]
  |  Branch (539:16): [True: 4.00k, False: 35]
  ------------------
  540|       |		/* Check for stream wrapper */
  541|  4.00k|		int is_stream_wrapper = 0;
  542|       |
  543|  19.8k|		for (p = ptr; isalnum((unsigned char)*p) || *p == '+' || *p == '-' || *p == '.'; p++);
  ------------------
  |  Branch (543:17): [True: 15.8k, False: 4.03k]
  |  Branch (543:47): [True: 0, False: 4.03k]
  |  Branch (543:60): [True: 0, False: 4.03k]
  |  Branch (543:73): [True: 36, False: 4.00k]
  ------------------
  544|  4.00k|		if ((*p == ':') && (p - ptr > 1) && (p[1] == '/') && (p[2] == '/')) {
  ------------------
  |  Branch (544:7): [True: 3.99k, False: 3]
  |  Branch (544:22): [True: 3.96k, False: 36]
  |  Branch (544:39): [True: 3.96k, False: 0]
  |  Branch (544:56): [True: 3.96k, False: 0]
  ------------------
  545|       |			/* .:// or ..:// is not a stream wrapper */
  546|  3.96k|			if (p[-1] != '.' || p[-2] != '.' || p - 2 != ptr) {
  ------------------
  |  Branch (546:8): [True: 3.96k, False: 0]
  |  Branch (546:24): [True: 0, False: 0]
  |  Branch (546:40): [True: 0, False: 0]
  ------------------
  547|  3.96k|				p += 3;
  548|  3.96k|				is_stream_wrapper = 1;
  549|  3.96k|			}
  550|  3.96k|		}
  551|  4.00k|		end = strchr(p, DEFAULT_DIR_SEPARATOR);
  ------------------
  |  |  110|  4.00k|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
  552|  4.00k|		if (end) {
  ------------------
  |  Branch (552:7): [True: 38, False: 3.96k]
  ------------------
  553|     38|			if (filename_length > (MAXPATHLEN - 2) || (end-ptr) > MAXPATHLEN || (end-ptr) + 1 + filename_length + 1 >= MAXPATHLEN) {
  ------------------
  |  Branch (553:8): [True: 0, False: 38]
  |  Branch (553:46): [True: 0, False: 38]
  |  Branch (553:72): [True: 0, False: 38]
  ------------------
  554|      0|				ptr = end + 1;
  555|      0|				continue;
  556|      0|			}
  557|     38|			memcpy(trypath, ptr, end-ptr);
  558|     38|			trypath[end-ptr] = '/';
  559|     38|			memcpy(trypath+(end-ptr)+1, filename, filename_length+1);
  560|     38|			ptr = end+1;
  561|  3.96k|		} else {
  562|  3.96k|			size_t len = strlen(ptr);
  563|       |
  564|  3.96k|			if (filename_length > (MAXPATHLEN - 2) || len > MAXPATHLEN || len + 1 + filename_length + 1 >= MAXPATHLEN) {
  ------------------
  |  Branch (564:8): [True: 0, False: 3.96k]
  |  Branch (564:46): [True: 0, False: 3.96k]
  |  Branch (564:66): [True: 0, False: 3.96k]
  ------------------
  565|      0|				break;
  566|      0|			}
  567|  3.96k|			memcpy(trypath, ptr, len);
  568|  3.96k|			trypath[len] = '/';
  569|  3.96k|			memcpy(trypath+len+1, filename, filename_length+1);
  570|  3.96k|			ptr = NULL;
  571|  3.96k|		}
  572|  4.00k|		actual_path = trypath;
  573|  4.00k|		if (is_stream_wrapper) {
  ------------------
  |  Branch (573:7): [True: 3.96k, False: 39]
  ------------------
  574|  3.96k|			wrapper = php_stream_locate_url_wrapper(trypath, &actual_path, STREAM_OPEN_FOR_INCLUDE);
  ------------------
  |  |  601|  3.96k|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  575|  3.96k|			if (!wrapper) {
  ------------------
  |  Branch (575:8): [True: 0, False: 3.96k]
  ------------------
  576|      0|				continue;
  577|  3.96k|			} else if (wrapper != &php_plain_files_wrapper) {
  ------------------
  |  Branch (577:15): [True: 3.96k, False: 0]
  ------------------
  578|  3.96k|				if (wrapper->wops->url_stat) {
  ------------------
  |  Branch (578:9): [True: 3.96k, False: 0]
  ------------------
  579|  3.96k|					php_stream_statbuf ssb;
  580|       |
  581|  3.96k|					if (SUCCESS == wrapper->wops->url_stat(wrapper, trypath, PHP_STREAM_URL_STAT_QUIET, &ssb, NULL)) {
  ------------------
  |  |  453|  3.96k|#define PHP_STREAM_URL_STAT_QUIET	2
  ------------------
  |  Branch (581:10): [True: 0, False: 3.96k]
  ------------------
  582|      0|						return zend_string_init(trypath, strlen(trypath), 0);
  583|      0|					}
  584|  3.96k|					if (EG(exception)) {
  ------------------
  |  |   45|  3.96k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 3.96k]
  |  |  ------------------
  ------------------
  585|      0|						return NULL;
  586|      0|					}
  587|  3.96k|				}
  588|  3.96k|				continue;
  589|  3.96k|			}
  590|  3.96k|		}
  591|     39|		if ((resolved_path = tsrm_realpath_str(actual_path))) {
  ------------------
  |  Branch (591:7): [True: 1, False: 38]
  ------------------
  592|      1|			return resolved_path;
  593|      1|		}
  594|     39|	} /* end provided path */
  595|       |
  596|       |	/* check in calling scripts' current working directory as a fallback case
  597|       |	 */
  598|  3.99k|	if (zend_is_executing() &&
  ------------------
  |  Branch (598:6): [True: 37, False: 3.96k]
  ------------------
  599|     37|	    (exec_filename = zend_get_executed_filename_ex()) != NULL) {
  ------------------
  |  Branch (599:6): [True: 37, False: 0]
  ------------------
  600|     37|		const char *exec_fname = ZSTR_VAL(exec_filename);
  ------------------
  |  |   67|     37|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  601|     37|		size_t exec_fname_length = ZSTR_LEN(exec_filename);
  ------------------
  |  |   68|     37|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  602|       |
  603|    407|		while (exec_fname_length > 0) {
  ------------------
  |  Branch (603:10): [True: 407, False: 0]
  ------------------
  604|    407|			--exec_fname_length;
  605|    407|			if (IS_SLASH(exec_fname[exec_fname_length])) {
  ------------------
  |  |  113|    407|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 37, False: 370]
  |  |  ------------------
  ------------------
  606|     37|				break;
  607|     37|			}
  608|    407|		}
  609|       |
  610|     37|		if (exec_fname_length > 0 &&
  ------------------
  |  Branch (610:7): [True: 37, False: 0]
  ------------------
  611|     37|			filename_length < (MAXPATHLEN - 2) &&
  ------------------
  |  Branch (611:4): [True: 37, False: 0]
  ------------------
  612|     37|		    exec_fname_length + 1 + filename_length + 1 < MAXPATHLEN) {
  ------------------
  |  Branch (612:7): [True: 37, False: 0]
  ------------------
  613|     37|			memcpy(trypath, exec_fname, exec_fname_length + 1);
  614|     37|			memcpy(trypath+exec_fname_length + 1, filename, filename_length+1);
  615|     37|			actual_path = trypath;
  616|       |
  617|       |			/* Check for stream wrapper */
  618|     37|			for (p = trypath; isalnum((unsigned char)*p) || *p == '+' || *p == '-' || *p == '.'; p++);
  ------------------
  |  Branch (618:22): [True: 0, False: 37]
  |  Branch (618:52): [True: 0, False: 37]
  |  Branch (618:65): [True: 0, False: 37]
  |  Branch (618:78): [True: 0, False: 37]
  ------------------
  619|     37|			if ((*p == ':') && (p - trypath > 1) && (p[1] == '/') && (p[2] == '/')) {
  ------------------
  |  Branch (619:8): [True: 0, False: 37]
  |  Branch (619:23): [True: 0, False: 0]
  |  Branch (619:44): [True: 0, False: 0]
  |  Branch (619:61): [True: 0, False: 0]
  ------------------
  620|      0|				wrapper = php_stream_locate_url_wrapper(trypath, &actual_path, STREAM_OPEN_FOR_INCLUDE);
  ------------------
  |  |  601|      0|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  621|      0|				if (!wrapper) {
  ------------------
  |  Branch (621:9): [True: 0, False: 0]
  ------------------
  622|      0|					return NULL;
  623|      0|				} else if (wrapper != &php_plain_files_wrapper) {
  ------------------
  |  Branch (623:16): [True: 0, False: 0]
  ------------------
  624|      0|					if (wrapper->wops->url_stat) {
  ------------------
  |  Branch (624:10): [True: 0, False: 0]
  ------------------
  625|      0|						php_stream_statbuf ssb;
  626|       |
  627|      0|						if (SUCCESS == wrapper->wops->url_stat(wrapper, trypath, PHP_STREAM_URL_STAT_QUIET, &ssb, NULL)) {
  ------------------
  |  |  453|      0|#define PHP_STREAM_URL_STAT_QUIET	2
  ------------------
  |  Branch (627:11): [True: 0, False: 0]
  ------------------
  628|      0|							return zend_string_init(trypath, strlen(trypath), 0);
  629|      0|						}
  630|      0|						if (EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  631|      0|							return NULL;
  632|      0|						}
  633|      0|					}
  634|      0|					return NULL;
  635|      0|				}
  636|      0|			}
  637|       |
  638|     37|			return tsrm_realpath_str(actual_path);
  639|     37|		}
  640|     37|	}
  641|       |
  642|  3.96k|	return NULL;
  643|  3.99k|}
php_fopen_with_path:
  651|      4|{
  652|      4|	char *pathbuf, *ptr, *end;
  653|      4|	char trypath[MAXPATHLEN];
  654|      4|	FILE *fp;
  655|      4|	size_t filename_length;
  656|      4|	zend_string *exec_filename;
  657|       |
  658|      4|	if (opened_path) {
  ------------------
  |  Branch (658:6): [True: 4, False: 0]
  ------------------
  659|      4|		*opened_path = NULL;
  660|      4|	}
  661|       |
  662|      4|	if (!filename) {
  ------------------
  |  Branch (662:6): [True: 0, False: 4]
  ------------------
  663|      0|		return NULL;
  664|      0|	}
  665|       |
  666|      4|	filename_length = strlen(filename);
  667|      4|#ifndef PHP_WIN32
  668|      4|	(void) filename_length;
  669|      4|#endif
  670|       |
  671|       |	/* Relative path open */
  672|      4|	if ((*filename == '.')
  ------------------
  |  Branch (672:6): [True: 0, False: 4]
  ------------------
  673|       |	/* Absolute path open */
  674|      4|	 || IS_ABSOLUTE_PATH(filename, filename_length)
  ------------------
  |  |  127|      8|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|      4|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (127:2): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  675|      4|	 || (!path || !*path)
  ------------------
  |  Branch (675:7): [True: 0, False: 4]
  |  Branch (675:16): [True: 0, False: 4]
  ------------------
  676|      4|	) {
  677|      0|		return php_fopen_and_set_opened_path(filename, mode, opened_path);
  678|      0|	}
  679|       |
  680|       |	/* check in provided path */
  681|       |	/* append the calling scripts' current working directory
  682|       |	 * as a fallback case
  683|       |	 */
  684|      4|	if (zend_is_executing() &&
  ------------------
  |  Branch (684:6): [True: 0, False: 4]
  ------------------
  685|      0|	    (exec_filename = zend_get_executed_filename_ex()) != NULL) {
  ------------------
  |  Branch (685:6): [True: 0, False: 0]
  ------------------
  686|      0|		const char *exec_fname = ZSTR_VAL(exec_filename);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  687|      0|		size_t exec_fname_length = ZSTR_LEN(exec_filename);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  688|       |
  689|      0|		while ((--exec_fname_length < SIZE_MAX) && !IS_SLASH(exec_fname[exec_fname_length]));
  ------------------
  |  |  113|      0|#define IS_SLASH(c)	((c) == '/')
  ------------------
  |  Branch (689:10): [True: 0, False: 0]
  |  Branch (689:46): [True: 0, False: 0]
  ------------------
  690|      0|		if ((exec_fname && exec_fname[0] == '[') || exec_fname_length <= 0) {
  ------------------
  |  Branch (690:8): [True: 0, False: 0]
  |  Branch (690:22): [True: 0, False: 0]
  |  Branch (690:47): [True: 0, False: 0]
  ------------------
  691|       |			/* [no active file] or no path */
  692|      0|			pathbuf = estrdup(path);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|      0|		} else {
  694|      0|			size_t path_length = strlen(path);
  695|       |
  696|      0|			pathbuf = (char *) emalloc(exec_fname_length + path_length + 1 + 1);
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  697|      0|			memcpy(pathbuf, path, path_length);
  698|      0|			pathbuf[path_length] = DEFAULT_DIR_SEPARATOR;
  ------------------
  |  |  110|      0|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
  699|      0|			memcpy(pathbuf + path_length + 1, exec_fname, exec_fname_length);
  700|      0|			pathbuf[path_length + exec_fname_length + 1] = '\0';
  701|      0|		}
  702|      4|	} else {
  703|      4|		pathbuf = estrdup(path);
  ------------------
  |  |  163|      4|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  704|      4|	}
  705|       |
  706|      4|	ptr = pathbuf;
  707|       |
  708|     12|	while (ptr && *ptr) {
  ------------------
  |  Branch (708:9): [True: 8, False: 4]
  |  Branch (708:16): [True: 8, False: 0]
  ------------------
  709|      8|		end = strchr(ptr, DEFAULT_DIR_SEPARATOR);
  ------------------
  |  |  110|      8|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
  710|      8|		if (end != NULL) {
  ------------------
  |  Branch (710:7): [True: 4, False: 4]
  ------------------
  711|      4|			*end = '\0';
  712|      4|			end++;
  713|      4|		}
  714|      8|		if (snprintf(trypath, MAXPATHLEN, "%s/%s", ptr, filename) >= MAXPATHLEN) {
  ------------------
  |  |   97|      8|#define snprintf ap_php_snprintf
  ------------------
  |  Branch (714:7): [True: 0, False: 8]
  ------------------
  715|      0|			php_error_docref(NULL, E_NOTICE, "%s/%s path was truncated to %d", ptr, filename, MAXPATHLEN);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
  716|      0|		}
  717|      8|		fp = php_fopen_and_set_opened_path(trypath, mode, opened_path);
  718|      8|		if (fp) {
  ------------------
  |  Branch (718:7): [True: 0, False: 8]
  ------------------
  719|      0|			efree(pathbuf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  720|      0|			return fp;
  721|      0|		}
  722|      8|		ptr = end;
  723|      8|	} /* end provided path */
  724|       |
  725|      4|	efree(pathbuf);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  726|       |	return NULL;
  727|      4|}
php_strip_url_passwd:
  732|  1.44k|{
  733|  1.44k|	char *p, *url_start;
  734|       |
  735|  1.44k|	if (url == NULL) {
  ------------------
  |  Branch (735:6): [True: 0, False: 1.44k]
  ------------------
  736|      0|		return "";
  737|      0|	}
  738|       |
  739|  1.44k|	p = url;
  740|       |
  741|  7.56k|	while (*p) {
  ------------------
  |  Branch (741:9): [True: 7.46k, False: 102]
  ------------------
  742|  7.46k|		if (*p == ':' && *(p + 1) == '/' && *(p + 2) == '/') {
  ------------------
  |  Branch (742:7): [True: 1.35k, False: 6.11k]
  |  Branch (742:20): [True: 1.34k, False: 8]
  |  Branch (742:39): [True: 1.33k, False: 5]
  ------------------
  743|       |			/* found protocol */
  744|  1.33k|			url_start = p = p + 3;
  745|       |
  746|  1.83k|			while (*p) {
  ------------------
  |  Branch (746:11): [True: 497, False: 1.33k]
  ------------------
  747|    497|				if (*p == '@') {
  ------------------
  |  Branch (747:9): [True: 5, False: 492]
  ------------------
  748|      5|					int i;
  749|       |
  750|     14|					for (i = 0; i < 3 && url_start < p; i++, url_start++) {
  ------------------
  |  Branch (750:18): [True: 11, False: 3]
  |  Branch (750:27): [True: 9, False: 2]
  ------------------
  751|      9|						*url_start = '.';
  752|      9|					}
  753|     59|					for (; *p; p++) {
  ------------------
  |  Branch (753:13): [True: 54, False: 5]
  ------------------
  754|     54|						*url_start++ = *p;
  755|     54|					}
  756|      5|					*url_start=0;
  757|      5|					break;
  758|      5|				}
  759|    492|				p++;
  760|    492|			}
  761|  1.33k|			return url;
  762|  1.33k|		}
  763|  6.12k|		p++;
  764|  6.12k|	}
  765|    102|	return url;
  766|  1.44k|}
expand_filepath:
  771|    150|{
  772|       |	return expand_filepath_ex(filepath, real_path, NULL, 0);
  773|    150|}
expand_filepath_ex:
  778|    150|{
  779|    150|	return expand_filepath_with_mode(filepath, real_path, relative_to, relative_to_len, CWD_FILEPATH);
  ------------------
  |  |  209|    150|#define CWD_FILEPATH 1 /* resolve symlinks if file is exist otherwise expand */
  ------------------
  780|    150|}
expand_filepath_with_mode:
  785|    150|{
  786|    150|	cwd_state new_state;
  787|    150|	char cwd[MAXPATHLEN];
  788|    150|	size_t copy_len;
  789|    150|	size_t path_len;
  790|       |
  791|    150|	if (!filepath[0]) {
  ------------------
  |  Branch (791:6): [True: 0, False: 150]
  ------------------
  792|      0|		return NULL;
  793|      0|	}
  794|       |
  795|    150|	path_len = strlen(filepath);
  796|       |
  797|    150|	if (IS_ABSOLUTE_PATH(filepath, path_len)) {
  ------------------
  |  |  127|    150|	(IS_SLASH(path[0]))
  |  |  ------------------
  |  |  |  |  113|    150|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (127:2): [True: 118, False: 32]
  |  |  ------------------
  ------------------
  798|    118|		cwd[0] = '\0';
  799|    118|	} else {
  800|     32|		const char *iam = SG(request_info).path_translated;
  ------------------
  |  |  158|     32|# define SG(v) (sapi_globals.v)
  ------------------
  801|     32|		const char *result;
  802|     32|		if (relative_to) {
  ------------------
  |  Branch (802:7): [True: 0, False: 32]
  ------------------
  803|      0|			if (relative_to_len > MAXPATHLEN-1U) {
  ------------------
  |  Branch (803:8): [True: 0, False: 0]
  ------------------
  804|      0|				return NULL;
  805|      0|			}
  806|      0|			result = relative_to;
  807|      0|			memcpy(cwd, relative_to, relative_to_len+1U);
  808|     32|		} else {
  809|     32|			result = VCWD_GETCWD(cwd, MAXPATHLEN);
  ------------------
  |  |  328|     32|#define VCWD_GETCWD(buff, size) getcwd(buff, size)
  ------------------
  810|     32|		}
  811|       |
  812|     32|		if (!result && (iam != filepath)) {
  ------------------
  |  Branch (812:7): [True: 0, False: 32]
  |  Branch (812:18): [True: 0, False: 0]
  ------------------
  813|      0|			int fdtest = -1;
  814|       |
  815|      0|			fdtest = VCWD_OPEN(filepath, O_RDONLY);
  ------------------
  |  |  320|      0|#define VCWD_OPEN(path, flags) open(path, flags)
  ------------------
  816|      0|			if (fdtest != -1) {
  ------------------
  |  Branch (816:8): [True: 0, False: 0]
  ------------------
  817|       |				/* return a relative file path if for any reason
  818|       |				 * we cannot getcwd() and the requested,
  819|       |				 * relatively referenced file is accessible */
  820|      0|				copy_len = path_len > MAXPATHLEN - 1 ? MAXPATHLEN - 1 : path_len;
  ------------------
  |  Branch (820:16): [True: 0, False: 0]
  ------------------
  821|      0|				if (real_path) {
  ------------------
  |  Branch (821:9): [True: 0, False: 0]
  ------------------
  822|      0|					memcpy(real_path, filepath, copy_len);
  823|      0|					real_path[copy_len] = '\0';
  824|      0|				} else {
  825|      0|					real_path = estrndup(filepath, copy_len);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  826|      0|				}
  827|      0|				close(fdtest);
  828|      0|				return real_path;
  829|      0|			} else {
  830|      0|				cwd[0] = '\0';
  831|      0|			}
  832|     32|		} else if (!result) {
  ------------------
  |  Branch (832:14): [True: 0, False: 32]
  ------------------
  833|      0|			cwd[0] = '\0';
  834|      0|		}
  835|     32|	}
  836|       |
  837|    150|	new_state.cwd = estrdup(cwd);
  ------------------
  |  |  163|    150|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    150|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    150|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    150|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    150|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  838|    150|	new_state.cwd_length = strlen(cwd);
  839|       |
  840|    150|	if (virtual_file_ex(&new_state, filepath, NULL, realpath_mode)) {
  ------------------
  |  Branch (840:6): [True: 0, False: 150]
  ------------------
  841|      0|		efree(new_state.cwd);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  842|      0|		return NULL;
  843|      0|	}
  844|       |
  845|    150|	if (real_path) {
  ------------------
  |  Branch (845:6): [True: 150, False: 0]
  ------------------
  846|    150|		copy_len = new_state.cwd_length > MAXPATHLEN - 1 ? MAXPATHLEN - 1 : new_state.cwd_length;
  ------------------
  |  Branch (846:14): [True: 0, False: 150]
  ------------------
  847|    150|		memcpy(real_path, new_state.cwd, copy_len);
  848|    150|		real_path[copy_len] = '\0';
  849|    150|	} else {
  850|      0|		real_path = estrndup(new_state.cwd, new_state.cwd_length);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  851|      0|	}
  852|    150|	efree(new_state.cwd);
  ------------------
  |  |  154|    150|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    150|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    150|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    150|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    150|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  853|       |
  854|    150|	return real_path;
  855|    150|}
fopen_wrappers.c:tsrm_realpath_str:
  484|    109|static zend_string *tsrm_realpath_str(const char *path) {
  485|    109|	char *realpath = tsrm_realpath(path, NULL);
  486|    109|	if (!realpath) {
  ------------------
  |  Branch (486:6): [True: 101, False: 8]
  ------------------
  487|    101|		return NULL;
  488|    101|	}
  489|      8|	zend_string *realpath_str = zend_string_init(realpath, strlen(realpath), 0);
  490|       |	efree(realpath);
  ------------------
  |  |  154|      8|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      8|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      8|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      8|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      8|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|      8|	return realpath_str;
  492|    109|}
fopen_wrappers.c:php_fopen_and_set_opened_path:
  337|      8|{
  338|      8|	FILE *fp;
  339|       |
  340|      8|	if (php_check_open_basedir((char *)path)) {
  ------------------
  |  Branch (340:6): [True: 0, False: 8]
  ------------------
  341|      0|		return NULL;
  342|      0|	}
  343|      8|	fp = VCWD_FOPEN(path, mode);
  ------------------
  |  |  319|      8|#define VCWD_FOPEN(path, mode)  fopen(path, mode)
  ------------------
  344|      8|	if (fp && opened_path) {
  ------------------
  |  Branch (344:6): [True: 0, False: 8]
  |  Branch (344:12): [True: 0, False: 0]
  ------------------
  345|       |		//TODO :avoid reallocation
  346|      0|		char *tmp = expand_filepath_with_mode(path, NULL, NULL, 0, CWD_EXPAND);
  ------------------
  |  |  208|      0|#define CWD_EXPAND   0 /* expand "." and ".." but don't resolve symlinks     */
  ------------------
  347|      0|		if (tmp) {
  ------------------
  |  Branch (347:7): [True: 0, False: 0]
  ------------------
  348|      0|			*opened_path = zend_string_init(tmp, strlen(tmp), 0);
  349|       |			efree(tmp);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  350|      0|		}
  351|      0|	}
  352|      8|	return fp;
  353|      8|}

php_register_internal_extensions:
   57|      2|{
   58|      2|	return php_register_extensions(php_builtin_extensions, EXTCOUNT);
  ------------------
  |  |   54|      2|#define EXTCOUNT (sizeof(php_builtin_extensions)/sizeof(zend_module_entry *))
  ------------------
   59|      2|}

php_build_provider:
  117|      1|{
  118|       |#ifdef PHP_BUILD_PROVIDER
  119|       |	return PHP_BUILD_PROVIDER;
  120|       |#else
  121|       |	return NULL;
  122|      1|#endif
  123|      1|}
php_during_module_startup:
  907|    961|{
  908|    961|	return module_startup;
  909|    961|}
php_during_module_shutdown:
  914|    961|{
  915|    961|	return module_shutdown;
  916|    961|}
php_log_err_with_severity:
  928|      2|{
  929|      2|	int fd = -1;
  930|      2|	time_t error_time;
  931|       |
  932|      2|	if (PG(in_error_log)) {
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  933|       |		/* prevent recursive invocation */
  934|      0|		return;
  935|      0|	}
  936|      2|	PG(in_error_log) = 1;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  937|       |
  938|       |	/* Try to use the specified logging location. */
  939|      2|	if (PG(error_log) != NULL) {
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (939:6): [True: 0, False: 2]
  ------------------
  940|      0|		int error_log_mode;
  941|       |
  942|      0|#ifdef HAVE_SYSLOG_H
  943|      0|		if (!strcmp(PG(error_log), "syslog")) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (943:7): [True: 0, False: 0]
  ------------------
  944|      0|			php_syslog(syslog_type_int, "%s", log_message);
  945|      0|			PG(in_error_log) = 0;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  946|      0|			return;
  947|      0|		}
  948|      0|#endif
  949|       |
  950|      0|		error_log_mode = 0644;
  951|       |
  952|      0|		if (PG(error_log_mode) > 0 && PG(error_log_mode) <= 0777) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		if (PG(error_log_mode) > 0 && PG(error_log_mode) <= 0777) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (952:7): [True: 0, False: 0]
  |  Branch (952:33): [True: 0, False: 0]
  ------------------
  953|      0|			error_log_mode = PG(error_log_mode);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  954|      0|		}
  955|       |
  956|      0|		fd = VCWD_OPEN_MODE(PG(error_log), O_CREAT | O_APPEND | O_WRONLY, error_log_mode);
  ------------------
  |  |  321|      0|#define VCWD_OPEN_MODE(path, flags, mode)	open(path, flags, mode)
  ------------------
  957|      0|		if (fd != -1) {
  ------------------
  |  Branch (957:7): [True: 0, False: 0]
  ------------------
  958|      0|			char *tmp;
  959|      0|			size_t len;
  960|      0|			zend_string *error_time_str;
  961|       |
  962|      0|			time(&error_time);
  963|       |#ifdef ZTS
  964|       |			if (!php_during_module_startup()) {
  965|       |				error_time_str = php_format_date("d-M-Y H:i:s e", 13, error_time, 1);
  966|       |			} else {
  967|       |				error_time_str = php_format_date("d-M-Y H:i:s e", 13, error_time, 0);
  968|       |			}
  969|       |#else
  970|      0|			error_time_str = php_format_date("d-M-Y H:i:s e", 13, error_time, 1);
  971|      0|#endif
  972|      0|			len = spprintf(&tmp, 0, "[%s] %s%s", ZSTR_VAL(error_time_str), log_message, PHP_EOL);
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
              			len = spprintf(&tmp, 0, "[%s] %s%s", ZSTR_VAL(error_time_str), log_message, PHP_EOL);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			len = spprintf(&tmp, 0, "[%s] %s%s", ZSTR_VAL(error_time_str), log_message, PHP_EOL);
  ------------------
  |  |   71|      0|#	define PHP_EOL "\n"
  ------------------
  973|       |#ifdef PHP_WIN32
  974|       |			php_flock(fd, LOCK_EX);
  975|       |			/* XXX should eventually write in a loop if len > UINT_MAX */
  976|       |			php_ignore_value(write(fd, tmp, (unsigned)len));
  977|       |			php_flock(fd, LOCK_UN);
  978|       |#else
  979|      0|			php_ignore_value(write(fd, tmp, len));
  ------------------
  |  |  257|      0|#define php_ignore_value(x) ZEND_IGNORE_VALUE(x)
  |  |  ------------------
  |  |  |  |  142|      0|# define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; }))
  |  |  ------------------
  ------------------
  980|      0|#endif
  981|      0|			efree(tmp);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  982|      0|			zend_string_free(error_time_str);
  983|      0|			close(fd);
  984|      0|			PG(in_error_log) = 0;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  985|      0|			return;
  986|      0|		}
  987|      0|	}
  988|       |
  989|       |	/* Otherwise fall back to the default logging location, if we have one */
  990|       |
  991|      2|	if (sapi_module.log_message) {
  ------------------
  |  Branch (991:6): [True: 2, False: 0]
  ------------------
  992|      2|		sapi_module.log_message(log_message, syslog_type_int);
  993|      2|	}
  994|      2|	PG(in_error_log) = 0;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  995|      2|}
php_printf:
 1008|  6.64M|{
 1009|  6.64M|	va_list args;
 1010|  6.64M|	size_t ret;
 1011|  6.64M|	char *buffer;
 1012|  6.64M|	size_t size;
 1013|       |
 1014|  6.64M|	va_start(args, format);
 1015|  6.64M|	size = vspprintf(&buffer, 0, format, args);
  ------------------
  |  |   29|  6.64M|#define vspprintf zend_vspprintf
  ------------------
 1016|  6.64M|	ret = PHPWRITE(buffer, size);
  ------------------
  |  |  156|  6.64M|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
 1017|  6.64M|	efree(buffer);
  ------------------
  |  |  154|  6.64M|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  6.64M|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  6.64M|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  6.64M|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  6.64M|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1018|  6.64M|	va_end(args);
 1019|       |
 1020|  6.64M|	return ret;
 1021|  6.64M|}
php_printf_unchecked:
 1026|     75|{
 1027|     75|	va_list args;
 1028|     75|	size_t ret;
 1029|     75|	char *buffer;
 1030|     75|	size_t size;
 1031|       |
 1032|     75|	va_start(args, format);
 1033|     75|	size = vspprintf(&buffer, 0, format, args);
  ------------------
  |  |   29|     75|#define vspprintf zend_vspprintf
  ------------------
 1034|     75|	ret = PHPWRITE(buffer, size);
  ------------------
  |  |  156|     75|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
 1035|     75|	efree(buffer);
  ------------------
  |  |  154|     75|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     75|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     75|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     75|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     75|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1036|     75|	va_end(args);
 1037|       |
 1038|     75|	return ret;
 1039|     75|}
php_verror:
 1062|    961|{
 1063|    961|	zend_string *replace_origin = NULL;
 1064|    961|	char *docref_buf = NULL, *target = NULL;
 1065|    961|	const char *docref_target = "", *docref_root = "";
 1066|    961|	char *p;
 1067|    961|	const char *space = "";
 1068|    961|	const char *class_name = "";
 1069|    961|	const char *function;
 1070|    961|	size_t origin_len;
 1071|    961|	char *origin;
 1072|    961|	zend_string *message;
 1073|    961|	int is_function = 0;
 1074|       |
 1075|       |	/* get error text into buffer and escape for html if necessary */
 1076|    961|	zend_string *buffer = vstrpprintf(0, format, args);
  ------------------
  |  |   30|    961|#define vstrpprintf zend_vstrpprintf
  ------------------
 1077|       |
 1078|    961|	if (PG(html_errors)) {
  ------------------
  |  |   29|    961|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 961]
  |  |  ------------------
  ------------------
 1079|      0|		zend_string *replace_buffer = escape_html(ZSTR_VAL(buffer), ZSTR_LEN(buffer));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_string *replace_buffer = escape_html(ZSTR_VAL(buffer), ZSTR_LEN(buffer));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1080|      0|		zend_string_free(buffer);
 1081|       |
 1082|      0|		if (replace_buffer) {
  ------------------
  |  Branch (1082:7): [True: 0, False: 0]
  ------------------
 1083|      0|			buffer = replace_buffer;
 1084|      0|		} else {
 1085|      0|			buffer = zend_empty_string;
 1086|      0|		}
 1087|      0|	}
 1088|       |
 1089|       |	/* which function caused the problem if any at all */
 1090|    961|	if (php_during_module_startup()) {
  ------------------
  |  Branch (1090:6): [True: 0, False: 961]
  ------------------
 1091|      0|		function = "PHP Startup";
 1092|    961|	} else if (php_during_module_shutdown()) {
  ------------------
  |  Branch (1092:13): [True: 0, False: 961]
  ------------------
 1093|      0|		function = "PHP Shutdown";
 1094|    961|	} else if (PG(during_request_startup)) {
  ------------------
  |  |   29|    961|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 961, False: 0]
  |  |  ------------------
  ------------------
 1095|    961|		function = "PHP Request Startup";
 1096|    961|	} else if (EG(current_execute_data) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1097|      0|				EG(current_execute_data)->func &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1097:5): [True: 0, False: 0]
  ------------------
 1098|      0|				ZEND_USER_CODE(EG(current_execute_data)->func->common.type) &&
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1099|      0|				EG(current_execute_data)->opline &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1099:5): [True: 0, False: 0]
  ------------------
 1100|      0|				EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              				EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL
  ------------------
  |  |  196|      0|#define ZEND_INCLUDE_OR_EVAL                 73
  ------------------
  |  Branch (1100:5): [True: 0, False: 0]
  ------------------
 1101|      0|	) {
 1102|      0|		switch (EG(current_execute_data)->opline->extended_value) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1103|      0|			case ZEND_EVAL:
  ------------------
  |  | 1083|      0|#define ZEND_EVAL				(1<<0)
  ------------------
  |  Branch (1103:4): [True: 0, False: 0]
  ------------------
 1104|      0|				function = "eval";
 1105|      0|				is_function = 1;
 1106|      0|				break;
 1107|      0|			case ZEND_INCLUDE:
  ------------------
  |  | 1084|      0|#define ZEND_INCLUDE			(1<<1)
  ------------------
  |  Branch (1107:4): [True: 0, False: 0]
  ------------------
 1108|      0|				function = "include";
 1109|      0|				is_function = 1;
 1110|      0|				break;
 1111|      0|			case ZEND_INCLUDE_ONCE:
  ------------------
  |  | 1085|      0|#define ZEND_INCLUDE_ONCE		(1<<2)
  ------------------
  |  Branch (1111:4): [True: 0, False: 0]
  ------------------
 1112|      0|				function = "include_once";
 1113|      0|				is_function = 1;
 1114|      0|				break;
 1115|      0|			case ZEND_REQUIRE:
  ------------------
  |  | 1086|      0|#define ZEND_REQUIRE			(1<<3)
  ------------------
  |  Branch (1115:4): [True: 0, False: 0]
  ------------------
 1116|      0|				function = "require";
 1117|      0|				is_function = 1;
 1118|      0|				break;
 1119|      0|			case ZEND_REQUIRE_ONCE:
  ------------------
  |  | 1087|      0|#define ZEND_REQUIRE_ONCE		(1<<4)
  ------------------
  |  Branch (1119:4): [True: 0, False: 0]
  ------------------
 1120|      0|				function = "require_once";
 1121|      0|				is_function = 1;
 1122|      0|				break;
 1123|      0|			default:
  ------------------
  |  Branch (1123:4): [True: 0, False: 0]
  ------------------
 1124|      0|				function = "Unknown";
 1125|      0|		}
 1126|      0|	} else if ((function = get_active_function_name()) && strlen(function)) {
  ------------------
  |  Branch (1126:13): [True: 0, False: 0]
  |  Branch (1126:56): [True: 0, False: 0]
  ------------------
 1127|      0|		is_function = 1;
 1128|      0|		class_name = get_active_class_name(&space);
 1129|      0|	} else if (EG(flags) & EG_FLAGS_IN_SHUTDOWN) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              	} else if (EG(flags) & EG_FLAGS_IN_SHUTDOWN) {
  ------------------
  |  |  333|      0|#define EG_FLAGS_IN_SHUTDOWN			(1<<0)
  ------------------
  |  Branch (1129:13): [True: 0, False: 0]
  ------------------
 1130|      0|		function = "PHP Request Shutdown";
 1131|      0|	} else {
 1132|      0|		function = "Unknown";
 1133|      0|	}
 1134|       |
 1135|       |	/* if we still have memory then format the origin */
 1136|    961|	if (is_function) {
  ------------------
  |  Branch (1136:6): [True: 0, False: 961]
  ------------------
 1137|      0|		zend_string *dynamic_params = NULL;
 1138|      0|		if (PG(error_include_args)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1139|      0|			dynamic_params = zend_trace_current_function_args_string();
 1140|      0|		}
 1141|      0|		origin_len = spprintf(&origin, 0, "%s%s%s(%s)", class_name, space, function, dynamic_params ? ZSTR_VAL(dynamic_params) : params);
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
              		origin_len = spprintf(&origin, 0, "%s%s%s(%s)", class_name, space, function, dynamic_params ? ZSTR_VAL(dynamic_params) : params);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1141:80): [True: 0, False: 0]
  ------------------
 1142|      0|		if (dynamic_params) {
  ------------------
  |  Branch (1142:7): [True: 0, False: 0]
  ------------------
 1143|      0|			zend_string_release(dynamic_params);
 1144|      0|		}
 1145|    961|	} else {
 1146|    961|		origin_len = strlen(function);
 1147|    961|		origin = estrndup(function, origin_len);
  ------------------
  |  |  164|    961|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    961|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    961|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    961|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    961|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1148|    961|	}
 1149|       |
 1150|    961|	if (PG(html_errors)) {
  ------------------
  |  |   29|    961|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 961]
  |  |  ------------------
  ------------------
 1151|      0|		replace_origin = escape_html(origin, origin_len);
 1152|      0|		efree(origin);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1153|      0|		origin = ZSTR_VAL(replace_origin);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1154|      0|	}
 1155|       |
 1156|       |	/* origin and buffer available, so let's come up with the error message */
 1157|    961|	if (docref && docref[0] == '#') {
  ------------------
  |  Branch (1157:6): [True: 23, False: 938]
  |  Branch (1157:16): [True: 0, False: 23]
  ------------------
 1158|      0|		docref_target = strchr(docref, '#');
 1159|      0|		docref = NULL;
 1160|      0|	}
 1161|       |
 1162|       |	/* no docref given but function is known (the default) */
 1163|    961|	if (!docref && is_function) {
  ------------------
  |  Branch (1163:6): [True: 938, False: 23]
  |  Branch (1163:17): [True: 0, False: 938]
  ------------------
 1164|      0|		size_t doclen;
 1165|      0|		while (*function == '_') {
  ------------------
  |  Branch (1165:10): [True: 0, False: 0]
  ------------------
 1166|      0|			function++;
 1167|      0|		}
 1168|      0|		if (space[0] == '\0') {
  ------------------
  |  Branch (1168:7): [True: 0, False: 0]
  ------------------
 1169|      0|			doclen = spprintf(&docref_buf, 0, "function.%s", function);
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
 1170|      0|		} else {
 1171|      0|			doclen = spprintf(&docref_buf, 0, "%s.%s", class_name, function);
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
 1172|      0|		}
 1173|      0|		while((p = strchr(docref_buf, '_')) != NULL) {
  ------------------
  |  Branch (1173:9): [True: 0, False: 0]
  ------------------
 1174|      0|			*p = '-';
 1175|      0|		}
 1176|      0|		zend_str_tolower(docref_buf, doclen);
 1177|      0|		docref = docref_buf;
 1178|      0|	}
 1179|       |
 1180|       |	/* we have a docref for a function AND
 1181|       |	 * - we show errors in html mode AND
 1182|       |	 * - the user wants to see the links
 1183|       |	 */
 1184|    961|	if (docref && is_function && PG(html_errors) && strlen(PG(docref_root))) {
  ------------------
  |  |   29|    961|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (docref && is_function && PG(html_errors) && strlen(PG(docref_root))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1184:6): [True: 23, False: 938]
  |  Branch (1184:16): [True: 0, False: 23]
  |  Branch (1184:50): [True: 0, False: 0]
  ------------------
 1185|      0|		if (strncmp(docref, "http://", 7)) {
  ------------------
  |  Branch (1185:7): [True: 0, False: 0]
  ------------------
 1186|       |			/* We don't have 'http://' so we use docref_root */
 1187|       |
 1188|      0|			char *ref;  /* temp copy for duplicated docref */
 1189|       |
 1190|      0|			docref_root = PG(docref_root);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
 1191|       |
 1192|      0|			ref = estrdup(docref);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1193|      0|			if (docref_buf) {
  ------------------
  |  Branch (1193:8): [True: 0, False: 0]
  ------------------
 1194|      0|				efree(docref_buf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1195|      0|			}
 1196|      0|			docref_buf = ref;
 1197|       |			/* strip of the target if any */
 1198|      0|			p = strrchr(ref, '#');
 1199|      0|			if (p) {
  ------------------
  |  Branch (1199:8): [True: 0, False: 0]
  ------------------
 1200|      0|				target = estrdup(p);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1201|      0|				if (target) {
  ------------------
  |  Branch (1201:9): [True: 0, False: 0]
  ------------------
 1202|      0|					docref_target = target;
 1203|      0|					*p = '\0';
 1204|      0|				}
 1205|      0|			}
 1206|       |			/* add the extension if it is set in ini */
 1207|      0|			if (PG(docref_ext) && strlen(PG(docref_ext))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			if (PG(docref_ext) && strlen(PG(docref_ext))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1207:26): [True: 0, False: 0]
  ------------------
 1208|      0|				spprintf(&docref_buf, 0, "%s%s", ref, PG(docref_ext));
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
              				spprintf(&docref_buf, 0, "%s%s", ref, PG(docref_ext));
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
 1209|      0|				efree(ref);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1210|      0|			}
 1211|      0|			docref = docref_buf;
 1212|      0|		}
 1213|       |		/* display html formatted or only show the additional links */
 1214|      0|		if (PG(html_errors)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1215|      0|			message = zend_strpprintf_unchecked(0, "%s [<a href='%s%s%s'>%s</a>]: %S", origin, docref_root, docref, docref_target, docref, buffer);
 1216|      0|		} else {
 1217|      0|			message = zend_strpprintf_unchecked(0, "%s [%s%s%s]: %S", origin, docref_root, docref, docref_target, buffer);
 1218|      0|		}
 1219|      0|		if (target) {
  ------------------
  |  Branch (1219:7): [True: 0, False: 0]
  ------------------
 1220|      0|			efree(target);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1221|      0|		}
 1222|    961|	} else {
 1223|    961|		message = zend_strpprintf_unchecked(0, "%s: %S", origin, buffer);
 1224|    961|	}
 1225|    961|	if (replace_origin) {
  ------------------
  |  Branch (1225:6): [True: 0, False: 961]
  ------------------
 1226|      0|		zend_string_free(replace_origin);
 1227|    961|	} else {
 1228|    961|		efree(origin);
  ------------------
  |  |  154|    961|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    961|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    961|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    961|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    961|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1229|    961|	}
 1230|    961|	if (docref_buf) {
  ------------------
  |  Branch (1230:6): [True: 0, False: 961]
  ------------------
 1231|      0|		efree(docref_buf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1232|      0|	}
 1233|       |
 1234|    961|	zend_string_free(buffer);
 1235|       |
 1236|    961|	zend_error_zstr(type, message);
 1237|    961|	zend_string_release(message);
 1238|    961|}
php_error_docref:
 1251|    239|{
 1252|       |	php_error_docref_impl(docref, type, format);
  ------------------
  |  | 1243|    239|#define php_error_docref_impl(docref, type, format) do {\
  |  | 1244|    239|		va_list args; \
  |  | 1245|    239|		va_start(args, format); \
  |  | 1246|    239|		php_verror(docref, "", type, format, args); \
  |  | 1247|    239|		va_end(args); \
  |  | 1248|    239|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1248:11): [Folded, False: 239]
  |  |  ------------------
  ------------------
 1253|    239|}
php_error_docref_unchecked:
 1256|      3|{
 1257|       |	php_error_docref_impl(docref, type, format);
  ------------------
  |  | 1243|      3|#define php_error_docref_impl(docref, type, format) do {\
  |  | 1244|      3|		va_list args; \
  |  | 1245|      3|		va_start(args, format); \
  |  | 1246|      3|		php_verror(docref, "", type, format, args); \
  |  | 1247|      3|		va_end(args); \
  |  | 1248|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1248:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1258|      3|}
php_error_docref1:
 1264|    719|{
 1265|    719|	va_list args;
 1266|       |
 1267|    719|	va_start(args, format);
 1268|    719|	php_verror(docref, param1, type, format, args);
 1269|       |	va_end(args);
 1270|    719|}
php_stream_open_for_zend_ex:
 1697|  3.37k|{
 1698|  3.37k|	zend_string *opened_path;
 1699|  3.37k|	zend_string *filename;
 1700|  3.37k|	php_stream *stream;
 1701|       |
 1702|  3.37k|	ZEND_ASSERT(handle->type == ZEND_HANDLE_FILENAME);
  ------------------
  |  |  112|  3.37k|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1702:2): [True: 0, False: 3.37k]
  |  Branch (1702:2): [True: 3.37k, False: 0]
  ------------------
 1703|  3.37k|	opened_path = filename = handle->filename;
 1704|  3.37k|	stream = php_stream_open_wrapper((char *)ZSTR_VAL(filename), "rb", mode | STREAM_OPEN_FOR_ZEND_STREAM, &opened_path);
  ------------------
  |  |  644|  3.37k|#define php_stream_open_wrapper(path, mode, options, opened)	_php_stream_open_wrapper_ex((path), (mode), (options), (opened), NULL STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|  3.37k|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|  3.37k|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|  3.37k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|  3.37k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|  3.37k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|  3.37k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1705|  3.37k|	if (stream) {
  ------------------
  |  Branch (1705:6): [True: 671, False: 2.70k]
  ------------------
 1706|    671|		memset(handle, 0, sizeof(zend_file_handle));
 1707|    671|		handle->type = ZEND_HANDLE_STREAM;
 1708|    671|		handle->filename = filename;
 1709|    671|		handle->opened_path = opened_path;
 1710|    671|		handle->handle.stream.handle  = stream;
 1711|    671|		handle->handle.stream.reader  = (zend_stream_reader_t)_php_stream_read;
 1712|    671|		handle->handle.stream.fsizer  = php_zend_stream_fsizer;
 1713|    671|		handle->handle.stream.isatty  = 0;
 1714|    671|		handle->handle.stream.closer = php_zend_stream_closer;
 1715|       |		/* suppress warning if this stream is not explicitly closed */
 1716|    671|		php_stream_auto_cleanup(stream);
  ------------------
  |  |  270|    671|#define php_stream_auto_cleanup(stream)	{ (stream)->__exposed = 1; }
  ------------------
 1717|       |		/* Disable buffering to avoid double buffering between PHP and Zend streams. */
 1718|    671|		php_stream_set_option(stream, PHP_STREAM_OPTION_READ_BUFFER, PHP_STREAM_BUFFER_NONE, NULL);
  ------------------
  |  |  437|    671|#define php_stream_set_option(stream, option, value, ptrvalue)	_php_stream_set_option((stream), (option), (value), (ptrvalue))
  ------------------
 1719|       |
 1720|    671|		return SUCCESS;
 1721|    671|	}
 1722|  2.70k|	return FAILURE;
 1723|  3.37k|}
php_request_startup:
 1884|  33.5k|{
 1885|  33.5k|	zend_result retval = SUCCESS;
 1886|       |
 1887|  33.5k|	zend_interned_strings_activate();
 1888|       |
 1889|       |#ifdef HAVE_DTRACE
 1890|       |	DTRACE_REQUEST_STARTUP(SAFE_FILENAME(SG(request_info).path_translated), SAFE_FILENAME(SG(request_info).request_uri), (char *)SAFE_FILENAME(SG(request_info).request_method));
 1891|       |#endif /* HAVE_DTRACE */
 1892|       |
 1893|       |#ifdef PHP_WIN32
 1894|       |# if defined(ZTS)
 1895|       |	_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
 1896|       |# endif
 1897|       |	PG(com_initialized) = 0;
 1898|       |#endif
 1899|       |
 1900|       |#if PHP_SIGCHILD
 1901|       |	signal(SIGCHLD, sigchld_handler);
 1902|       |#endif
 1903|       |
 1904|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1905|  33.5k|		PG(in_error_log) = 0;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1906|  33.5k|		PG(during_request_startup) = 1;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1907|       |
 1908|  33.5k|		php_output_activate();
 1909|       |
 1910|       |		/* initialize global variables */
 1911|  33.5k|		PG(modules_activated) = 0;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1912|  33.5k|		PG(header_is_being_sent) = 0;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1913|  33.5k|		PG(connection_status) = PHP_CONNECTION_NORMAL;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              		PG(connection_status) = PHP_CONNECTION_NORMAL;
  ------------------
  |  |  410|  33.5k|#define PHP_CONNECTION_NORMAL  0
  ------------------
 1914|  33.5k|		PG(in_user_include) = 0;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1915|       |
 1916|  33.5k|		zend_activate();
 1917|  33.5k|		sapi_activate();
 1918|       |
 1919|  33.5k|#ifdef ZEND_SIGNALS
 1920|  33.5k|		zend_signal_activate();
 1921|  33.5k|#endif
 1922|       |
 1923|  33.5k|		if (PG(max_input_time) == -1) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1923:7): [True: 33.5k, False: 0]
  ------------------
 1924|  33.5k|			zend_set_timeout(EG(timeout_seconds), 1);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1925|  33.5k|		} else {
 1926|      0|			zend_set_timeout(PG(max_input_time), 1);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
 1927|      0|		}
 1928|       |
 1929|       |		/* Disable realpath cache if an open_basedir is set */
 1930|  33.5k|		if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|  67.1k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
              		if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1930:27): [True: 33.5k, False: 0]
  ------------------
 1931|  33.5k|			CWDG(realpath_cache_size_limit) = 0;
  ------------------
  |  |  250|  33.5k|# define CWDG(v) (cwd_globals.v)
  ------------------
 1932|  33.5k|		}
 1933|       |
 1934|  33.5k|		if (PG(expose_php) && !SG(headers_sent)) {
  ------------------
  |  |   29|  67.1k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
              		if (PG(expose_php) && !SG(headers_sent)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (1934:25): [True: 33.5k, False: 0]
  ------------------
 1935|  33.5k|			sapi_add_header(SAPI_PHP_VERSION_HEADER, sizeof(SAPI_PHP_VERSION_HEADER)-1, 1);
  ------------------
  |  |  205|  33.5k|#define sapi_add_header(a, b, c) sapi_add_header_ex((a),(b),(c),1)
  ------------------
 1936|  33.5k|		}
 1937|       |
 1938|  33.5k|		if (PG(output_handler) && PG(output_handler)[0]) {
  ------------------
  |  |   29|  67.1k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
              		if (PG(output_handler) && PG(output_handler)[0]) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1938:29): [True: 0, False: 0]
  ------------------
 1939|      0|			zval oh;
 1940|       |
 1941|      0|			ZVAL_STRING(&oh, PG(output_handler));
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1942|      0|			php_output_start_user(&oh, 0, PHP_OUTPUT_HANDLER_STDFLAGS);
  ------------------
  |  |   37|      0|#define PHP_OUTPUT_HANDLER_STDFLAGS		0x0070
  ------------------
 1943|      0|			zval_ptr_dtor(&oh);
 1944|  33.5k|		} else if (PG(output_buffering)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 1945|      0|			php_output_start_user(NULL, PG(output_buffering) > 1 ? PG(output_buffering) : 0, PHP_OUTPUT_HANDLER_STDFLAGS);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              			php_output_start_user(NULL, PG(output_buffering) > 1 ? PG(output_buffering) : 0, PHP_OUTPUT_HANDLER_STDFLAGS);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              			php_output_start_user(NULL, PG(output_buffering) > 1 ? PG(output_buffering) : 0, PHP_OUTPUT_HANDLER_STDFLAGS);
  ------------------
  |  |   37|      0|#define PHP_OUTPUT_HANDLER_STDFLAGS		0x0070
  ------------------
  |  Branch (1945:32): [True: 0, False: 0]
  ------------------
 1946|  33.5k|		} else if (PG(implicit_flush)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1947|  33.5k|			php_output_set_implicit_flush(1);
 1948|  33.5k|		}
 1949|       |
 1950|       |		/* We turn this off in php_execute_script() */
 1951|       |		/* PG(during_request_startup) = 0; */
 1952|       |
 1953|  33.5k|		php_hash_environment();
 1954|  33.5k|		zend_activate_modules();
 1955|  33.5k|		PG(modules_activated)=1;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1956|  33.5k|	} zend_catch {
  ------------------
  |  |  283|  33.5k|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|  33.5k|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|  33.5k|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      0|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (1956:4): [True: 0, False: 33.5k]
  |  Branch (1956:4): [True: 33.5k, False: 0]
  |  Branch (1956:4): [True: 0, False: 0]
  |  Branch (1956:4): [True: 0, False: 0]
  ------------------
 1957|      0|		retval = FAILURE;
 1958|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1959|       |
 1960|  33.5k|	SG(sapi_started) = 1;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
 1961|       |
 1962|  33.5k|	return retval;
 1963|  33.5k|}
php_request_shutdown:
 1968|  33.5k|{
 1969|  33.5k|	bool report_memleaks;
 1970|       |
 1971|  33.5k|	EG(flags) |= EG_FLAGS_IN_SHUTDOWN;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	EG(flags) |= EG_FLAGS_IN_SHUTDOWN;
  ------------------
  |  |  333|  33.5k|#define EG_FLAGS_IN_SHUTDOWN			(1<<0)
  ------------------
 1972|       |
 1973|  33.5k|	report_memleaks = PG(report_memleaks);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 1974|       |
 1975|       |	/* EG(current_execute_data) points into nirvana and therefore cannot be safely accessed
 1976|       |	 * inside zend_executor callback functions.
 1977|       |	 */
 1978|  33.5k|	EG(current_execute_data) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1979|       |
 1980|       |	/* 0. Call any open observer end handlers that are still open after a zend_bailout */
 1981|  33.5k|	if (ZEND_OBSERVER_ENABLED) {
  ------------------
  |  |   46|  33.5k|#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
  |  |  ------------------
  |  |  |  Branch (46:31): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 1982|      0|		zend_observer_fcall_end_all();
 1983|      0|	}
 1984|       |
 1985|       |	/* 1. Call all possible shutdown functions registered with register_shutdown_function() */
 1986|  33.5k|	if (PG(modules_activated)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1987|  33.5k|		php_call_shutdown_functions();
 1988|  33.5k|	}
 1989|       |
 1990|       |	/* 2. Call all possible __destruct() functions */
 1991|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1992|  33.5k|		zend_call_destructors();
 1993|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1994|       |
 1995|       |	/* 3. Flush all output buffers */
 1996|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 1997|  33.5k|		php_output_end_all();
 1998|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 1999|       |
 2000|  33.5k|	php_deactivate_ticks();
 2001|       |
 2002|       |	/* 4. Reset max_execution_time (no longer executing php code after response sent) */
 2003|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2004|  33.5k|		zend_unset_timeout();
 2005|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2006|       |
 2007|       |	/* 5. Call all extensions RSHUTDOWN functions */
 2008|  33.5k|	if (PG(modules_activated)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2009|  33.5k|		zend_deactivate_modules();
 2010|  33.5k|	}
 2011|       |
 2012|       |	/* 6. Shutdown output layer (send the set HTTP headers, cleanup output handlers, etc.) */
 2013|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2014|  33.5k|		php_output_deactivate();
 2015|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2016|       |
 2017|       |	/* 7. Free shutdown functions */
 2018|  33.5k|	if (PG(modules_activated)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2019|  33.5k|		php_free_shutdown_functions();
 2020|  33.5k|	}
 2021|       |
 2022|       |	/* 8. Shutdown autoloader, freeing all held functions/closures */
 2023|  33.5k|	zend_autoload_shutdown();
 2024|       |
 2025|       |	/* 9. Destroy super-globals */
 2026|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2027|  33.5k|		int i;
 2028|       |
 2029|   235k|		for (i=0; i<NUM_TRACK_VARS; i++) {
  ------------------
  |  |   43|   235k|#define NUM_TRACK_VARS	6
  ------------------
  |  Branch (2029:13): [True: 201k, False: 33.5k]
  ------------------
 2030|   201k|			zval_ptr_dtor(&PG(http_globals)[i]);
  ------------------
  |  |   29|   201k|# define PG(v) (core_globals.v)
  ------------------
 2031|   201k|		}
 2032|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2033|       |
 2034|       |	/* 10. Shutdown scanner/executor/compiler and restore ini entries */
 2035|  33.5k|	zend_deactivate();
 2036|       |
 2037|       |	/* 11. free request-bound globals */
 2038|  33.5k|	php_free_request_globals();
 2039|       |
 2040|       |	/* 12. Call all extensions post-RSHUTDOWN functions */
 2041|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2042|  33.5k|		zend_post_deactivate_modules();
 2043|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2044|       |
 2045|       |	/* 13. SAPI related shutdown*/
 2046|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2047|  33.5k|		sapi_deactivate_module();
 2048|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2049|       |	/* free SAPI stuff */
 2050|  33.5k|	sapi_deactivate_destroy();
 2051|       |
 2052|       |	/* 14. free virtual CWD memory */
 2053|  33.5k|	virtual_cwd_deactivate();
 2054|       |
 2055|       |	/* 15. Destroy stream hashes */
 2056|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2057|  33.5k|		php_shutdown_stream_hashes();
 2058|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2059|       |
 2060|       |	/* 16. Free Willy (here be crashes) */
 2061|  33.5k|	zend_arena_destroy(CG(arena));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
 2062|  33.5k|	zend_interned_strings_deactivate();
 2063|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
 2064|  33.5k|		shutdown_memory_manager(CG(unclean_shutdown) || !report_memleaks, 0);
  ------------------
  |  |   35|  67.1k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 909, False: 32.6k]
  |  |  ------------------
  ------------------
  |  Branch (2064:51): [True: 0, False: 32.6k]
  ------------------
 2065|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
 2066|       |
 2067|       |	/* Reset memory limit, as the reset during INI_STAGE_DEACTIVATE may have failed.
 2068|       |	 * At this point, no memory beyond a single chunk should be in use. */
 2069|  33.5k|	zend_set_memory_limit(PG(memory_limit));
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
 2070|       |
 2071|       |	/* 17. Deactivate Zend signals */
 2072|  33.5k|#ifdef ZEND_SIGNALS
 2073|  33.5k|	zend_signal_deactivate();
 2074|  33.5k|#endif
 2075|       |
 2076|       |#ifdef PHP_WIN32
 2077|       |	if (PG(com_initialized)) {
 2078|       |		CoUninitialize();
 2079|       |		PG(com_initialized) = 0;
 2080|       |	}
 2081|       |#endif
 2082|       |
 2083|       |#ifdef HAVE_DTRACE
 2084|       |	DTRACE_REQUEST_SHUTDOWN(SAFE_FILENAME(SG(request_info).path_translated), SAFE_FILENAME(SG(request_info).request_uri), (char *)SAFE_FILENAME(SG(request_info).request_method));
 2085|       |#endif /* HAVE_DTRACE */
 2086|  33.5k|}
zm_info_php_core:
 2127|      1|PHP_MINFO_FUNCTION(php_core) { /* {{{ */
 2128|      1|	php_info_print_table_start();
 2129|      1|	php_info_print_table_row(2, "PHP Version", PHP_VERSION);
  ------------------
  |  |    7|      1|#define PHP_VERSION "8.6.0-dev"
  ------------------
 2130|      1|	php_info_print_table_end();
 2131|      1|	DISPLAY_INI_ENTRIES();
  ------------------
  |  |  201|      1|#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
  ------------------
 2132|      1|}
php_register_extensions:
 2137|      2|{
 2138|      2|	zend_module_entry * const * end = ptr + count;
 2139|       |
 2140|     26|	while (ptr < end) {
  ------------------
  |  Branch (2140:9): [True: 24, False: 2]
  ------------------
 2141|     24|		if (*ptr) {
  ------------------
  |  Branch (2141:7): [True: 24, False: 0]
  ------------------
 2142|     24|			if (zend_register_internal_module(*ptr)==NULL) {
  ------------------
  |  Branch (2142:8): [True: 0, False: 24]
  ------------------
 2143|      0|				return FAILURE;
 2144|      0|			}
 2145|     24|		}
 2146|     24|		ptr++;
 2147|     24|	}
 2148|      2|	return SUCCESS;
 2149|      2|}
php_module_startup:
 2186|      2|{
 2187|      2|	zend_utility_functions zuf;
 2188|      2|	zend_utility_values zuv;
 2189|      2|	zend_result retval = SUCCESS;
 2190|      2|	int module_number = 0;
 2191|      2|	zend_module_entry *module;
 2192|       |
 2193|       |#ifdef PHP_WIN32
 2194|       |	WORD wVersionRequested = MAKEWORD(2, 2);
 2195|       |	WSADATA wsaData;
 2196|       |
 2197|       |	old_invalid_parameter_handler =
 2198|       |		_set_invalid_parameter_handler(dummy_invalid_parameter_handler);
 2199|       |	if (old_invalid_parameter_handler != NULL) {
 2200|       |		_set_invalid_parameter_handler(old_invalid_parameter_handler);
 2201|       |	}
 2202|       |
 2203|       |	/* Disable the message box for assertions and errors.*/
 2204|       |	_CrtSetReportMode(_CRT_ASSERT, 0);
 2205|       |	_CrtSetReportMode(_CRT_ERROR, 0);
 2206|       |#endif
 2207|       |
 2208|       |#ifdef ZTS
 2209|       |	(void)ts_resource(0);
 2210|       |#endif
 2211|       |
 2212|       |#ifdef PHP_WIN32
 2213|       |	if (!php_win32_init_random_bytes()) {
 2214|       |		fprintf(stderr, "\ncrypt algorithm provider initialization failed\n");
 2215|       |		return FAILURE;
 2216|       |	}
 2217|       |#endif
 2218|       |
 2219|      2|	module_shutdown = false;
 2220|      2|	module_startup = true;
 2221|      2|	sapi_initialize_empty_request();
 2222|      2|	sapi_activate();
 2223|       |
 2224|      2|	if (module_initialized) {
  ------------------
  |  Branch (2224:6): [True: 0, False: 2]
  ------------------
 2225|      0|		return SUCCESS;
 2226|      0|	}
 2227|       |
 2228|      2|	sapi_module = *sf;
 2229|       |
 2230|      2|	php_output_startup();
 2231|       |
 2232|       |#ifdef ZTS
 2233|       |	ts_allocate_fast_id(&core_globals_id, &core_globals_offset, sizeof(php_core_globals), (ts_allocate_ctor) core_globals_ctor, (ts_allocate_dtor) core_globals_dtor);
 2234|       |#ifdef PHP_WIN32
 2235|       |	ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor) php_win32_core_globals_ctor, (ts_allocate_dtor) php_win32_core_globals_dtor);
 2236|       |#endif
 2237|       |#else
 2238|      2|	memset(&core_globals, 0, sizeof(core_globals));
 2239|      2|	php_startup_ticks();
 2240|      2|#endif
 2241|      2|	gc_globals_ctor();
 2242|       |
 2243|      2|	zend_observer_startup();
 2244|      2|#if ZEND_DEBUG
 2245|      2|	zend_observer_error_register(report_zend_debug_error_notify_cb);
 2246|      2|#endif
 2247|       |
 2248|      2|	zuf.error_function = php_error_cb;
 2249|      2|	zuf.printf_function = php_printf;
 2250|      2|	zuf.write_function = php_output_write;
 2251|      2|	zuf.fopen_function = php_fopen_wrapper_for_zend;
 2252|      2|	zuf.message_handler = php_message_handler_for_zend;
 2253|      2|	zuf.get_configuration_directive = php_get_configuration_directive_for_zend;
 2254|      2|	zuf.ticks_function = php_run_ticks;
 2255|      2|	zuf.on_timeout = php_on_timeout;
 2256|      2|	zuf.stream_open_function = php_stream_open_for_zend;
 2257|      2|	zuf.printf_to_smart_string_function = php_printf_to_smart_string;
 2258|      2|	zuf.printf_to_smart_str_function = php_printf_to_smart_str;
 2259|      2|	zuf.getenv_function = sapi_getenv;
 2260|      2|	zuf.resolve_path_function = php_resolve_path_for_zend;
 2261|      2|	zuf.random_bytes_function = php_random_bytes_ex;
 2262|      2|	zuf.random_bytes_insecure_function = php_random_bytes_insecure_for_zend;
 2263|      2|	zend_startup(&zuf);
 2264|      2|	zend_reset_lc_ctype_locale();
 2265|      2|	zend_update_current_locale();
 2266|       |
 2267|      2|#if HAVE_TZSET
 2268|      2|	tzset();
 2269|      2|#endif
 2270|       |
 2271|       |#ifdef PHP_WIN32
 2272|       |	char *img_err;
 2273|       |	if (!php_win32_crt_compatible(&img_err)) {
 2274|       |		php_error(E_CORE_WARNING, "%s", img_err);
 2275|       |		efree(img_err);
 2276|       |		return FAILURE;
 2277|       |	}
 2278|       |
 2279|       |	/* start up winsock services */
 2280|       |	if (WSAStartup(wVersionRequested, &wsaData) != 0) {
 2281|       |		fprintf(stderr, "\nwinsock.dll unusable. %d\n", WSAGetLastError());
 2282|       |		return FAILURE;
 2283|       |	}
 2284|       |
 2285|       |	if (UNEXPECTED(HIBYTE(wsaData.wVersion) != 2)) {
 2286|       |		fprintf(stderr, "\nversion not found in winsock.dll. %d\n", WSAGetLastError());
 2287|       |		WSACleanup();
 2288|       |		return FAILURE;
 2289|       |	}
 2290|       |	php_win32_signal_ctrl_handler_init();
 2291|       |#endif
 2292|       |
 2293|      2|	le_index_ptr = zend_register_list_destructors_ex(NULL, NULL, "index pointer", 0);
 2294|       |
 2295|      2|	php_binary_init();
 2296|      2|	register_main_symbols(module_number);
 2297|       |
 2298|       |	/* this will read in php.ini, set up the configuration parameters,
 2299|       |	   load zend extensions and register php function extensions
 2300|       |	   to be loaded later */
 2301|      2|	zend_stream_init();
 2302|      2|	php_init_config();
 2303|      2|	zend_stream_shutdown();
 2304|       |
 2305|       |	/* Register PHP core ini entries */
 2306|      2|	zend_register_ini_entries_ex(ini_entries, module_number, MODULE_PERSISTENT);
  ------------------
  |  |   63|      2|#define MODULE_PERSISTENT 1
  ------------------
 2307|       |
 2308|       |	/* Register Zend ini entries */
 2309|      2|	zend_register_standard_ini_entries();
 2310|       |
 2311|       |#ifdef ZEND_WIN32
 2312|       |	/* Until the current ini values was setup, the current cp is 65001.
 2313|       |		If the actual ini values are different, some stuff needs to be updated.
 2314|       |		It concerns at least main_cwd_state and there might be more. As we're
 2315|       |		still in the startup phase, lets use the chance and reinit the relevant
 2316|       |		item according to the current codepage. Still, if ini_set() is used
 2317|       |		later on, a more intelligent way to update such stuff is needed.
 2318|       |		Startup/shutdown routines could involve touching globals and thus
 2319|       |		can't always be used on demand. */
 2320|       |	if (!php_win32_cp_use_unicode()) {
 2321|       |		virtual_cwd_main_cwd_init(1);
 2322|       |	}
 2323|       |#endif
 2324|       |
 2325|       |	/* Disable realpath cache if an open_basedir is set */
 2326|      2|	if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              	if (PG(open_basedir) && *PG(open_basedir)) {
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (2326:26): [True: 2, False: 0]
  ------------------
 2327|      2|		CWDG(realpath_cache_size_limit) = 0;
  ------------------
  |  |  250|      2|# define CWDG(v) (cwd_globals.v)
  ------------------
 2328|      2|	}
 2329|       |
 2330|      2|	PG(have_called_openlog) = 0;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
 2331|       |
 2332|       |	/* initialize stream wrappers registry
 2333|       |	 * (this uses configuration parameters from php.ini)
 2334|       |	 */
 2335|      2|	if (php_init_stream_wrappers(module_number) == FAILURE)	{
  ------------------
  |  Branch (2335:6): [True: 0, False: 2]
  ------------------
 2336|      0|		fprintf(stderr, "PHP:  Unable to initialize stream url wrappers.\n");
 2337|      0|		return FAILURE;
 2338|      0|	}
 2339|       |
 2340|      2|	zuv.html_errors = 1;
 2341|      2|	php_startup_auto_globals();
 2342|      2|	zend_set_utility_values(&zuv);
 2343|      2|	php_startup_sapi_content_types();
 2344|       |
 2345|       |	/* Begin to fingerprint the process state */
 2346|      2|	zend_startup_system_id();
 2347|       |
 2348|       |	/* startup extensions statically compiled in */
 2349|      2|	if (php_register_internal_extensions_func() == FAILURE) {
  ------------------
  |  Branch (2349:6): [True: 0, False: 2]
  ------------------
 2350|      0|		fprintf(stderr, "Unable to start builtin modules\n");
 2351|      0|		return FAILURE;
 2352|      0|	}
 2353|       |
 2354|       |	/* start additional PHP extensions */
 2355|      2|	if (additional_module && (zend_register_internal_module(additional_module) == NULL)) {
  ------------------
  |  Branch (2355:6): [True: 0, False: 2]
  |  Branch (2355:27): [True: 0, False: 0]
  ------------------
 2356|      0|		return FAILURE;
 2357|      0|	}
 2358|       |
 2359|       |	/* load and startup extensions compiled as shared objects (aka DLLs)
 2360|       |	   as requested by php.ini entries
 2361|       |	   these are loaded after initialization of internal extensions
 2362|       |	   as extensions *might* rely on things from ext/standard
 2363|       |	   which is always an internal extension and to be initialized
 2364|       |	   ahead of all other internals
 2365|       |	 */
 2366|      2|	php_ini_register_extensions();
 2367|      2|	zend_startup_modules();
 2368|       |
 2369|       |	/* start Zend extensions */
 2370|      2|	zend_startup_extensions();
 2371|       |
 2372|      2|	zend_collect_module_handlers();
 2373|       |
 2374|       |	/* register additional functions */
 2375|      2|	if (sapi_module.additional_functions) {
  ------------------
  |  Branch (2375:6): [True: 0, False: 2]
  ------------------
 2376|      0|		if ((module = zend_hash_str_find_ptr(&module_registry, "standard", sizeof("standard")-1)) != NULL) {
  ------------------
  |  Branch (2376:7): [True: 0, False: 0]
  ------------------
 2377|      0|			EG(current_module) = module;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2378|      0|			zend_register_functions(NULL, sapi_module.additional_functions, NULL, MODULE_PERSISTENT);
  ------------------
  |  |   63|      0|#define MODULE_PERSISTENT 1
  ------------------
 2379|      0|			EG(current_module) = NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 2380|      0|		}
 2381|      0|	}
 2382|       |
 2383|       |	/* disable certain functions as requested by php.ini */
 2384|      2|	zend_disable_functions(zend_ini_string_literal("disable_functions"));
  ------------------
  |  |  101|      2|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 2385|       |
 2386|       |	/* make core report what it should */
 2387|      2|	if ((module = zend_hash_str_find_ptr(&module_registry, "core", sizeof("core")-1)) != NULL) {
  ------------------
  |  Branch (2387:6): [True: 2, False: 0]
  ------------------
 2388|      2|		module->version = PHP_VERSION;
  ------------------
  |  |    7|      2|#define PHP_VERSION "8.6.0-dev"
  ------------------
 2389|      2|		module->info_func = PHP_MINFO(php_core);
  ------------------
  |  |  380|      2|#define PHP_MINFO		ZEND_MODULE_INFO_N
  |  |  ------------------
  |  |  |  |  229|      2|#define ZEND_MODULE_INFO_N(module)			zm_info_##module
  |  |  ------------------
  ------------------
 2390|      2|	}
 2391|       |
 2392|       |	/* freeze the list of observer fcall_init handlers */
 2393|      2|	zend_observer_post_startup();
 2394|       |
 2395|       |	/* freeze the list of persistent internal functions */
 2396|      2|	zend_init_internal_run_time_cache();
 2397|       |
 2398|       |	/* Extensions that add engine hooks after this point do so at their own peril */
 2399|      2|	zend_finalize_system_id();
 2400|       |
 2401|      2|	module_initialized = true;
 2402|       |
 2403|      2|	if (zend_post_startup() != SUCCESS) {
  ------------------
  |  Branch (2403:6): [True: 0, False: 2]
  ------------------
 2404|      0|		return FAILURE;
 2405|      0|	}
 2406|       |
 2407|       |	/* Check for deprecated directives */
 2408|       |	/* NOTE: If you add anything here, remember to add it to build/Makefile.global! */
 2409|      2|	{
 2410|      2|		struct {
 2411|      2|			const long error_level;
 2412|      2|			const char *phrase;
 2413|      2|			const char *directives[19]; /* Remember to change this if the number of directives change */
 2414|      2|		} directives[2] = {
 2415|      2|			{
 2416|      2|				E_DEPRECATED,
  ------------------
  |  |   36|      2|#define E_DEPRECATED		(1<<13L)
  ------------------
 2417|      2|				"Directive '%s' is deprecated",
 2418|      2|				{
 2419|      2|					"allow_url_include",
 2420|      2|					NULL
 2421|      2|				}
 2422|      2|			},
 2423|      2|			{
 2424|      2|				E_CORE_ERROR,
  ------------------
  |  |   26|      2|#define E_CORE_ERROR		(1<<4L)
  ------------------
 2425|      2|				"Directive '%s' is no longer available in PHP",
 2426|      2|				{
 2427|      2|					"allow_call_time_pass_reference",
 2428|      2|					"asp_tags",
 2429|      2|					"define_syslog_variables",
 2430|      2|					"highlight.bg",
 2431|      2|					"magic_quotes_gpc",
 2432|      2|					"magic_quotes_runtime",
 2433|      2|					"magic_quotes_sybase",
 2434|      2|					"register_globals",
 2435|      2|					"register_long_arrays",
 2436|      2|					"safe_mode",
 2437|      2|					"safe_mode_gid",
 2438|      2|					"safe_mode_include_dir",
 2439|      2|					"safe_mode_exec_dir",
 2440|      2|					"safe_mode_allowed_env_vars",
 2441|      2|					"safe_mode_protected_env_vars",
 2442|      2|					"zend.ze1_compatibility_mode",
 2443|      2|					"track_errors",
 2444|      2|					"disable_classes",
 2445|      2|					NULL
 2446|      2|				}
 2447|      2|			}
 2448|      2|		};
 2449|       |
 2450|      2|		unsigned int i;
 2451|       |
 2452|      2|		zend_try {
  ------------------
  |  |  276|      2|	{															\
  |  |  277|      2|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      2|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      2|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      2|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      2|																\
  |  |  280|      2|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      2|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      2|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2453|       |			/* 2 = Count of deprecation structs */
 2454|      6|			for (i = 0; i < 2; i++) {
  ------------------
  |  Branch (2454:16): [True: 4, False: 2]
  ------------------
 2455|      4|				const char **p = directives[i].directives;
 2456|       |
 2457|     42|				while(*p) {
  ------------------
  |  Branch (2457:11): [True: 38, False: 4]
  ------------------
 2458|     38|					zend_long value;
 2459|       |
 2460|     38|					if (cfg_get_long((char*)*p, &value) == SUCCESS && value) {
  ------------------
  |  Branch (2460:10): [True: 2, False: 36]
  |  Branch (2460:56): [True: 0, False: 2]
  ------------------
 2461|      0|						zend_error(directives[i].error_level, directives[i].phrase, *p);
 2462|      0|					}
 2463|       |
 2464|     38|					++p;
 2465|     38|				}
 2466|      4|			}
 2467|      2|		} zend_catch {
  ------------------
  |  |  283|      2|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      2|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  284|      2|		} else {												\
  |  |  285|      0|			ZEND_ASSERT(EG(bailout) == &__bailout);				\
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  286|      0|			EG(bailout) = __orig_bailout;
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  ------------------
  |  Branch (2467:5): [True: 0, False: 2]
  |  Branch (2467:5): [True: 2, False: 0]
  |  Branch (2467:5): [True: 0, False: 0]
  |  Branch (2467:5): [True: 0, False: 0]
  ------------------
 2468|      0|			retval = FAILURE;
 2469|      2|		} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|      2|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      2|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      2|	}
  ------------------
 2470|      2|	}
 2471|       |
 2472|      2|	virtual_cwd_deactivate();
 2473|       |
 2474|      2|	sapi_deactivate();
 2475|      2|	module_startup = false;
 2476|       |
 2477|       |	/* Don't leak errors from startup into the per-request phase. */
 2478|      2|	clear_last_error();
 2479|      2|	shutdown_memory_manager(1, 0);
 2480|      2|	virtual_cwd_activate();
 2481|       |
 2482|      2|	zend_interned_strings_switch_storage(1);
 2483|       |
 2484|       |#if ZEND_RC_DEBUG
 2485|       |	if (retval == SUCCESS) {
 2486|       |		zend_rc_debug = 1;
 2487|       |	}
 2488|       |#endif
 2489|       |
 2490|       |	/* we're done */
 2491|      2|	return retval;
 2492|      2|}
main.c:php_zend_stream_fsizer:
 1673|      9|{
 1674|      9|	php_stream *stream = handle;
 1675|      9|	php_stream_statbuf ssb;
 1676|       |
 1677|       |	/* File size reported by stat() may be inaccurate if stream filters are used.
 1678|       |	 * TODO: Should stat() be generally disabled if filters are used? */
 1679|      9|	if (stream->readfilters.head) {
  ------------------
  |  Branch (1679:6): [True: 1, False: 8]
  ------------------
 1680|      1|		return 0;
 1681|      1|	}
 1682|       |
 1683|      8|	if (php_stream_stat(stream, &ssb) == 0) {
  ------------------
  |  |  410|      8|#define php_stream_stat(stream, ssb)	_php_stream_stat((stream), (ssb))
  ------------------
  |  Branch (1683:6): [True: 4, False: 4]
  ------------------
 1684|      4|		return ssb.sb.st_size;
 1685|      4|	}
 1686|      4|	return 0;
 1687|      8|}
main.c:php_zend_stream_closer:
 1667|      9|{
 1668|      9|	php_stream_close((php_stream*)handle);
  ------------------
  |  |  357|      9|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      9|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      9|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      9|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1669|      9|}
main.c:php_free_request_globals:
 1741|  33.5k|{
 1742|  33.5k|	clear_last_error();
 1743|  33.5k|	if (PG(php_sys_temp_dir)) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 33.5k]
  |  |  ------------------
  ------------------
 1744|      0|		efree(PG(php_sys_temp_dir));
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|      0|		PG(php_sys_temp_dir) = NULL;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
 1746|      0|	}
 1747|       |
 1748|  33.5k|	EG(filename_override) = NULL;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1749|  33.5k|	EG(lineno_override) = -1;
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
 1750|  33.5k|}
main.c:report_zend_debug_error_notify_cb:
 1332|  53.4k|{
 1333|  53.4k|	if (PG(report_zend_debug)) {
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 53.4k]
  |  |  ------------------
  ------------------
 1334|      0|		bool trigger_break;
 1335|       |
 1336|      0|		switch (type) {
 1337|      0|			case E_ERROR:
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (1337:4): [True: 0, False: 0]
  ------------------
 1338|      0|			case E_CORE_ERROR:
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
  |  Branch (1338:4): [True: 0, False: 0]
  ------------------
 1339|      0|			case E_COMPILE_ERROR:
  ------------------
  |  |   28|      0|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (1339:4): [True: 0, False: 0]
  ------------------
 1340|      0|			case E_USER_ERROR:
  ------------------
  |  |   30|      0|#define E_USER_ERROR		(1<<8L)
  ------------------
  |  Branch (1340:4): [True: 0, False: 0]
  ------------------
 1341|      0|				trigger_break=1;
 1342|      0|				break;
 1343|      0|			default:
  ------------------
  |  Branch (1343:4): [True: 0, False: 0]
  ------------------
 1344|      0|				trigger_break=0;
 1345|      0|				break;
 1346|      0|		}
 1347|       |
 1348|      0|		zend_output_debug_string(trigger_break, "%s(%" PRIu32 ") : %s", ZSTR_VAL(error_filename), error_lineno, ZSTR_VAL(message));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		zend_output_debug_string(trigger_break, "%s(%" PRIu32 ") : %s", ZSTR_VAL(error_filename), error_lineno, ZSTR_VAL(message));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1349|      0|	}
 1350|  53.4k|}
main.c:php_error_cb:
 1357|  53.4k|{
 1358|  53.4k|	bool display;
 1359|  53.4k|	int type = orig_type & E_ALL;
  ------------------
  |  |   42|  53.4k|#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   22|  53.4k|#define E_ERROR				(1<<0L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   23|  53.4k|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   24|  53.4k|#define E_PARSE				(1<<2L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   25|  53.4k|#define E_NOTICE			(1<<3L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   26|  53.4k|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   27|  53.4k|#define E_CORE_WARNING		(1<<5L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   28|  53.4k|#define E_COMPILE_ERROR		(1<<6L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   29|  53.4k|#define E_COMPILE_WARNING	(1<<7L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   30|  53.4k|#define E_USER_ERROR		(1<<8L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   31|  53.4k|#define E_USER_WARNING		(1<<9L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   32|  53.4k|#define E_USER_NOTICE		(1<<10L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   35|  53.4k|#define E_RECOVERABLE_ERROR	(1<<12L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   36|  53.4k|#define E_DEPRECATED		(1<<13L)
  |  |  ------------------
  |  |               #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED)
  |  |  ------------------
  |  |  |  |   37|  53.4k|#define E_USER_DEPRECATED	(1<<14L)
  |  |  ------------------
  ------------------
 1360|  53.4k|	zend_string *backtrace = ZSTR_EMPTY_ALLOC();
 1361|       |
 1362|       |	/* check for repeated errors to be ignored */
 1363|  53.4k|	if (PG(ignore_repeated_errors) && PG(last_error_message)) {
  ------------------
  |  |   29|   106k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 53.4k]
  |  |  ------------------
  ------------------
              	if (PG(ignore_repeated_errors) && PG(last_error_message)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1364|       |		/* no check for PG(last_error_file) is needed since it cannot
 1365|       |		 * be NULL if PG(last_error_message) is not NULL */
 1366|      0|		if (!zend_string_equals(PG(last_error_message), message)
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1366:7): [True: 0, False: 0]
  ------------------
 1367|      0|			|| (!PG(ignore_repeated_source)
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1367:8): [True: 0, False: 0]
  ------------------
 1368|      0|				&& ((PG(last_error_lineno) != (int)error_lineno)
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1368:9): [True: 0, False: 0]
  ------------------
 1369|      0|					|| !zend_string_equals(PG(last_error_file), error_filename)))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1369:9): [True: 0, False: 0]
  ------------------
 1370|      0|			display = 1;
 1371|      0|		} else {
 1372|      0|			display = 0;
 1373|      0|		}
 1374|  53.4k|	} else {
 1375|  53.4k|		display = 1;
 1376|  53.4k|	}
 1377|       |
 1378|       |	/* according to error handling mode, throw exception or show it */
 1379|  53.4k|	if (EG(error_handling) == EH_THROW) {
  ------------------
  |  |   45|  53.4k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1379:6): [True: 0, False: 53.4k]
  ------------------
 1380|      0|		switch (type) {
 1381|      0|			case E_WARNING:
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  |  Branch (1381:4): [True: 0, False: 0]
  ------------------
 1382|      0|			case E_CORE_WARNING:
  ------------------
  |  |   27|      0|#define E_CORE_WARNING		(1<<5L)
  ------------------
  |  Branch (1382:4): [True: 0, False: 0]
  ------------------
 1383|      0|			case E_COMPILE_WARNING:
  ------------------
  |  |   29|      0|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
  |  Branch (1383:4): [True: 0, False: 0]
  ------------------
 1384|      0|			case E_USER_WARNING:
  ------------------
  |  |   31|      0|#define E_USER_WARNING		(1<<9L)
  ------------------
  |  Branch (1384:4): [True: 0, False: 0]
  ------------------
 1385|       |				/* Throw an exception if we are in EH_THROW mode and the type is warning.
 1386|       |				 * Fatal errors are real errors and cannot be made exceptions.
 1387|       |				 * Exclude deprecated for the sake of BC to old damaged code.
 1388|       |				 * Notices are not errors and are not treated as such like E_WARNINGS.
 1389|       |				 * DO NOT overwrite a pending exception.
 1390|       |				 */
 1391|      0|				if (!EG(exception)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (1391:9): [True: 0, False: 0]
  ------------------
 1392|      0|					zend_throw_error_exception(EG(exception_class), message, 0, type);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
 1393|      0|				}
 1394|      0|				return;
 1395|      0|			default:
  ------------------
  |  Branch (1395:4): [True: 0, False: 0]
  ------------------
 1396|      0|				break;
 1397|      0|		}
 1398|      0|	}
 1399|       |
 1400|  53.4k|	if (!Z_ISUNDEF(EG(last_fatal_error_backtrace))) {
  ------------------
  |  |  966|  53.4k|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|  53.4k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|  53.4k|#define IS_UNDEF					0
  |  |  ------------------
  ------------------
  |  Branch (1400:6): [True: 684, False: 52.7k]
  ------------------
 1401|    684|		backtrace = zend_trace_to_string(Z_ARRVAL(EG(last_fatal_error_backtrace)), /* include_main */ true);
  ------------------
  |  |  996|    684|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|    684|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
 1402|    684|	}
 1403|       |
 1404|       |	/* store the error if it has changed */
 1405|  53.4k|	if (display) {
  ------------------
  |  Branch (1405:6): [True: 53.4k, False: 0]
  ------------------
 1406|  53.4k|		clear_last_error();
 1407|  53.4k|		if (!error_filename) {
  ------------------
  |  Branch (1407:7): [True: 0, False: 53.4k]
  ------------------
 1408|      0|			error_filename = ZSTR_KNOWN(ZEND_STR_UNKNOWN_CAPITALIZED);
 1409|      0|		}
 1410|  53.4k|		PG(last_error_type) = type;
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1411|  53.4k|		PG(last_error_message) = zend_string_copy(message);
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1412|  53.4k|		PG(last_error_file) = zend_string_copy(error_filename);
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1413|  53.4k|		PG(last_error_lineno) = error_lineno;
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1414|  53.4k|	}
 1415|       |
 1416|  53.4k|	if (zend_alloc_in_memory_limit_error_reporting()) {
  ------------------
  |  Branch (1416:6): [True: 19, False: 53.4k]
  ------------------
 1417|     19|		php_output_discard_all();
 1418|     19|	}
 1419|       |
 1420|       |	/* display/log the error if necessary */
 1421|  53.4k|	if (display && ((EG(error_reporting) & type) || (type & E_CORE))
  ------------------
  |  |   45|  53.4k|# define EG(v) (executor_globals.v)
  ------------------
              	if (display && ((EG(error_reporting) & type) || (type & E_CORE))
  ------------------
  |  |   43|  53.4k|#define E_CORE (E_CORE_ERROR | E_CORE_WARNING)
  |  |  ------------------
  |  |  |  |   26|  53.4k|#define E_CORE_ERROR		(1<<4L)
  |  |  ------------------
  |  |               #define E_CORE (E_CORE_ERROR | E_CORE_WARNING)
  |  |  ------------------
  |  |  |  |   27|  53.4k|#define E_CORE_WARNING		(1<<5L)
  |  |  ------------------
  ------------------
  |  Branch (1421:6): [True: 53.4k, False: 0]
  |  Branch (1421:18): [True: 10, False: 53.4k]
  |  Branch (1421:50): [True: 2, False: 53.4k]
  ------------------
 1422|     12|		&& (PG(log_errors) || PG(display_errors) || (!module_initialized))) {
  ------------------
  |  |   29|     24|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 12]
  |  |  ------------------
  ------------------
              		&& (PG(log_errors) || PG(display_errors) || (!module_initialized))) {
  ------------------
  |  |   29|     24|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1422:47): [True: 0, False: 0]
  ------------------
 1423|     12|		char *error_type_str;
 1424|     12|		int syslog_type_int = LOG_NOTICE;
 1425|       |
 1426|     12|		switch (type) {
 1427|      1|			case E_ERROR:
  ------------------
  |  |   22|      1|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (1427:4): [True: 1, False: 11]
  ------------------
 1428|      3|			case E_CORE_ERROR:
  ------------------
  |  |   26|      3|#define E_CORE_ERROR		(1<<4L)
  ------------------
  |  Branch (1428:4): [True: 2, False: 10]
  ------------------
 1429|      4|			case E_COMPILE_ERROR:
  ------------------
  |  |   28|      4|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (1429:4): [True: 1, False: 11]
  ------------------
 1430|      4|			case E_USER_ERROR:
  ------------------
  |  |   30|      4|#define E_USER_ERROR		(1<<8L)
  ------------------
  |  Branch (1430:4): [True: 0, False: 12]
  ------------------
 1431|      4|				error_type_str = "Fatal error";
 1432|      4|				syslog_type_int = LOG_ERR;
 1433|      4|				break;
 1434|      0|			case E_RECOVERABLE_ERROR:
  ------------------
  |  |   35|      0|#define E_RECOVERABLE_ERROR	(1<<12L)
  ------------------
  |  Branch (1434:4): [True: 0, False: 12]
  ------------------
 1435|      0|				error_type_str = "Recoverable fatal error";
 1436|      0|				syslog_type_int = LOG_ERR;
 1437|      0|				break;
 1438|      8|			case E_WARNING:
  ------------------
  |  |   23|      8|#define E_WARNING			(1<<1L)
  ------------------
  |  Branch (1438:4): [True: 8, False: 4]
  ------------------
 1439|      8|			case E_CORE_WARNING:
  ------------------
  |  |   27|      8|#define E_CORE_WARNING		(1<<5L)
  ------------------
  |  Branch (1439:4): [True: 0, False: 12]
  ------------------
 1440|      8|			case E_COMPILE_WARNING:
  ------------------
  |  |   29|      8|#define E_COMPILE_WARNING	(1<<7L)
  ------------------
  |  Branch (1440:4): [True: 0, False: 12]
  ------------------
 1441|      8|			case E_USER_WARNING:
  ------------------
  |  |   31|      8|#define E_USER_WARNING		(1<<9L)
  ------------------
  |  Branch (1441:4): [True: 0, False: 12]
  ------------------
 1442|      8|				error_type_str = "Warning";
 1443|      8|				syslog_type_int = LOG_WARNING;
 1444|      8|				break;
 1445|      0|			case E_PARSE:
  ------------------
  |  |   24|      0|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1445:4): [True: 0, False: 12]
  ------------------
 1446|      0|				error_type_str = "Parse error";
 1447|      0|				syslog_type_int = LOG_ERR;
 1448|      0|				break;
 1449|      0|			case E_NOTICE:
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
  |  Branch (1449:4): [True: 0, False: 12]
  ------------------
 1450|      0|			case E_USER_NOTICE:
  ------------------
  |  |   32|      0|#define E_USER_NOTICE		(1<<10L)
  ------------------
  |  Branch (1450:4): [True: 0, False: 12]
  ------------------
 1451|      0|				error_type_str = "Notice";
 1452|      0|				syslog_type_int = LOG_NOTICE;
 1453|      0|				break;
 1454|      0|			case E_DEPRECATED:
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  |  Branch (1454:4): [True: 0, False: 12]
  ------------------
 1455|      0|			case E_USER_DEPRECATED:
  ------------------
  |  |   37|      0|#define E_USER_DEPRECATED	(1<<14L)
  ------------------
  |  Branch (1455:4): [True: 0, False: 12]
  ------------------
 1456|      0|				error_type_str = "Deprecated";
 1457|      0|				syslog_type_int = LOG_INFO;
 1458|      0|				break;
 1459|      0|			default:
  ------------------
  |  Branch (1459:4): [True: 0, False: 12]
  ------------------
 1460|      0|				error_type_str = "Unknown error";
 1461|      0|				break;
 1462|     12|		}
 1463|       |
 1464|     12|		if (PG(log_errors)
  ------------------
  |  |   29|     24|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 1465|     12|				|| (!module_initialized && (!PG(display_startup_errors) || !PG(display_errors)))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              				|| (!module_initialized && (!PG(display_startup_errors) || !PG(display_errors)))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1465:9): [True: 0, False: 12]
  |  Branch (1465:33): [True: 0, False: 0]
  |  Branch (1465:64): [True: 0, False: 0]
  ------------------
 1466|      0|			char *log_buffer;
 1467|       |#ifdef PHP_WIN32
 1468|       |			if (type == E_CORE_ERROR || type == E_CORE_WARNING) {
 1469|       |				syslog(LOG_ALERT, "PHP %s: %s (%s)", error_type_str, ZSTR_VAL(message), GetCommandLine());
 1470|       |			}
 1471|       |#endif
 1472|      0|			spprintf(&log_buffer, 0, "PHP %s:  %s in %s on line %" PRIu32 "%s%s", error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
              			spprintf(&log_buffer, 0, "PHP %s:  %s in %s on line %" PRIu32 "%s%s", error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			spprintf(&log_buffer, 0, "PHP %s:  %s in %s on line %" PRIu32 "%s%s", error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			spprintf(&log_buffer, 0, "PHP %s:  %s in %s on line %" PRIu32 "%s%s", error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              			spprintf(&log_buffer, 0, "PHP %s:  %s in %s on line %" PRIu32 "%s%s", error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1473|      0|			php_log_err_with_severity(log_buffer, syslog_type_int);
 1474|      0|			efree(log_buffer);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1475|      0|		}
 1476|       |
 1477|     12|		if (PG(display_errors) && ((module_initialized && !PG(during_request_startup)) || (PG(display_startup_errors)))) {
  ------------------
  |  |   29|     24|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 12, False: 0]
  |  |  ------------------
  ------------------
              		if (PG(display_errors) && ((module_initialized && !PG(during_request_startup)) || (PG(display_startup_errors)))) {
  ------------------
  |  |   29|     12|# define PG(v) (core_globals.v)
  ------------------
              		if (PG(display_errors) && ((module_initialized && !PG(during_request_startup)) || (PG(display_startup_errors)))) {
  ------------------
  |  |   29|     12|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1477:31): [True: 12, False: 0]
  |  Branch (1477:53): [True: 0, False: 12]
  |  Branch (1477:85): [True: 12, False: 0]
  ------------------
 1478|     12|			if (PG(xmlrpc_errors)) {
  ------------------
  |  |   29|     12|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 1479|      0|				php_printf("<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>" ZEND_LONG_FMT "</int></value></member><member><name>faultString</name><value><string>%s:%s in %s on line %" PRIu32 "%s%s</string></value></member></struct></value></fault></methodResponse>", PG(xmlrpc_error_number), error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              				php_printf("<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>" ZEND_LONG_FMT "</int></value></member><member><name>faultString</name><value><string>%s:%s in %s on line %" PRIu32 "%s%s</string></value></member></struct></value></fault></methodResponse>", PG(xmlrpc_error_number), error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				php_printf("<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>" ZEND_LONG_FMT "</int></value></member><member><name>faultString</name><value><string>%s:%s in %s on line %" PRIu32 "%s%s</string></value></member></struct></value></fault></methodResponse>", PG(xmlrpc_error_number), error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              				php_printf("<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>" ZEND_LONG_FMT "</int></value></member><member><name>faultString</name><value><string>%s:%s in %s on line %" PRIu32 "%s%s</string></value></member></struct></value></fault></methodResponse>", PG(xmlrpc_error_number), error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              				php_printf("<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>" ZEND_LONG_FMT "</int></value></member><member><name>faultString</name><value><string>%s:%s in %s on line %" PRIu32 "%s%s</string></value></member></struct></value></fault></methodResponse>", PG(xmlrpc_error_number), error_type_str, ZSTR_VAL(message), ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1480|     12|			} else {
 1481|     12|				const char *prepend_string = zend_ini_string_literal("error_prepend_string");
  ------------------
  |  |  101|     12|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1482|     12|				const char *append_string = zend_ini_string_literal("error_append_string");
  ------------------
  |  |  101|     12|#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)
  ------------------
 1483|       |
 1484|     12|				if (PG(html_errors)) {
  ------------------
  |  |   29|     12|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 12]
  |  |  ------------------
  ------------------
 1485|      0|					if (type == E_ERROR || type == E_PARSE) {
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
              					if (type == E_ERROR || type == E_PARSE) {
  ------------------
  |  |   24|      0|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1485:10): [True: 0, False: 0]
  |  Branch (1485:29): [True: 0, False: 0]
  ------------------
 1486|      0|						zend_string *buf = escape_html(ZSTR_VAL(message), ZSTR_LEN(message));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						zend_string *buf = escape_html(ZSTR_VAL(message), ZSTR_LEN(message));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1487|      0|						php_printf("%s<br />\n<b>%s</b>:  %s in <b>%s</b> on line <b>%" PRIu32 "</b><br />\n%s", STR_PRINT(prepend_string), error_type_str, ZSTR_VAL(buf), ZSTR_VAL(error_filename), error_lineno, STR_PRINT(append_string));
  ------------------
  |  |  242|      0|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              						php_printf("%s<br />\n<b>%s</b>:  %s in <b>%s</b> on line <b>%" PRIu32 "</b><br />\n%s", STR_PRINT(prepend_string), error_type_str, ZSTR_VAL(buf), ZSTR_VAL(error_filename), error_lineno, STR_PRINT(append_string));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_printf("%s<br />\n<b>%s</b>:  %s in <b>%s</b> on line <b>%" PRIu32 "</b><br />\n%s", STR_PRINT(prepend_string), error_type_str, ZSTR_VAL(buf), ZSTR_VAL(error_filename), error_lineno, STR_PRINT(append_string));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_printf("%s<br />\n<b>%s</b>:  %s in <b>%s</b> on line <b>%" PRIu32 "</b><br />\n%s", STR_PRINT(prepend_string), error_type_str, ZSTR_VAL(buf), ZSTR_VAL(error_filename), error_lineno, STR_PRINT(append_string));
  ------------------
  |  |  242|      0|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1488|      0|						zend_string_free(buf);
 1489|      0|					} else {
 1490|      0|						php_printf_unchecked("%s<br />\n<b>%s</b>:  %S in <b>%s</b> on line <b>%" PRIu32 "</b><br />%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |  242|      0|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              						php_printf_unchecked("%s<br />\n<b>%s</b>:  %S in <b>%s</b> on line <b>%" PRIu32 "</b><br />%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_printf_unchecked("%s<br />\n<b>%s</b>:  %S in <b>%s</b> on line <b>%" PRIu32 "</b><br />%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              						php_printf_unchecked("%s<br />\n<b>%s</b>:  %S in <b>%s</b> on line <b>%" PRIu32 "</b><br />%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_printf_unchecked("%s<br />\n<b>%s</b>:  %S in <b>%s</b> on line <b>%" PRIu32 "</b><br />%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |  242|      0|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1491|      0|					}
 1492|     12|				} else {
 1493|       |					/* Write CLI/CGI errors to stderr if display_errors = "stderr" */
 1494|     12|					if ((!strcmp(sapi_module.name, "cli") || !strcmp(sapi_module.name, "cgi") || !strcmp(sapi_module.name, "phpdbg")) &&
  ------------------
  |  Branch (1494:11): [True: 0, False: 12]
  |  Branch (1494:47): [True: 0, False: 12]
  |  Branch (1494:83): [True: 0, False: 12]
  ------------------
 1495|      0|						PG(display_errors) == PHP_DISPLAY_ERRORS_STDERR
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              						PG(display_errors) == PHP_DISPLAY_ERRORS_STDERR
  ------------------
  |  |   35|      0|#define PHP_DISPLAY_ERRORS_STDERR	2
  ------------------
  |  Branch (1495:7): [True: 0, False: 0]
  ------------------
 1496|     12|					) {
 1497|      0|						fprintf(stderr, "%s: ", error_type_str);
 1498|      0|						fwrite(ZSTR_VAL(message), sizeof(char), ZSTR_LEN(message), stderr);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						fwrite(ZSTR_VAL(message), sizeof(char), ZSTR_LEN(message), stderr);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1499|      0|						fprintf(stderr, " in %s on line %" PRIu32 "%s%s\n", ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						fprintf(stderr, " in %s on line %" PRIu32 "%s%s\n", ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              						fprintf(stderr, " in %s on line %" PRIu32 "%s%s\n", ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1500|       |#ifdef PHP_WIN32
 1501|       |						fflush(stderr);
 1502|       |#endif
 1503|     12|					} else {
 1504|     12|						php_printf_unchecked("%s\n%s: %S in %s on line %" PRIu32 "%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |  242|     12|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 12, False: 0]
  |  |  ------------------
  ------------------
              						php_printf_unchecked("%s\n%s: %S in %s on line %" PRIu32 "%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_printf_unchecked("%s\n%s: %S in %s on line %" PRIu32 "%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |   68|     12|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (68:25): [True: 4, False: 8]
  |  |  ------------------
  ------------------
              						php_printf_unchecked("%s\n%s: %S in %s on line %" PRIu32 "%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |   67|     12|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              						php_printf_unchecked("%s\n%s: %S in %s on line %" PRIu32 "%s%s\n%s", STR_PRINT(prepend_string), error_type_str, message, ZSTR_VAL(error_filename), error_lineno, ZSTR_LEN(backtrace) ? "\nStack trace:\n" : "", ZSTR_VAL(backtrace), STR_PRINT(append_string));
  ------------------
  |  |  242|     12|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 12, False: 0]
  |  |  ------------------
  ------------------
 1505|     12|					}
 1506|     12|				}
 1507|     12|			}
 1508|     12|		}
 1509|     12|	}
 1510|       |
 1511|  53.4k|	zend_string_release(backtrace);
 1512|       |
 1513|       |	/* Bail out if we can't recover */
 1514|  53.4k|	switch (type) {
  ------------------
  |  Branch (1514:10): [True: 1.35k, False: 52.0k]
  ------------------
 1515|      2|		case E_CORE_ERROR:
  ------------------
  |  |   26|      2|#define E_CORE_ERROR		(1<<4L)
  ------------------
  |  Branch (1515:3): [True: 2, False: 53.4k]
  ------------------
 1516|      2|			if(!module_initialized) {
  ------------------
  |  Branch (1516:7): [True: 0, False: 2]
  ------------------
 1517|       |				/* bad error in module startup - no way we can live with this */
 1518|      0|				exit(-2);
 1519|      0|			}
 1520|      2|		ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      2|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1521|    725|		case E_ERROR:
  ------------------
  |  |   22|    725|#define E_ERROR				(1<<0L)
  ------------------
  |  Branch (1521:3): [True: 723, False: 52.7k]
  ------------------
 1522|    725|		case E_RECOVERABLE_ERROR:
  ------------------
  |  |   35|    725|#define E_RECOVERABLE_ERROR	(1<<12L)
  ------------------
  |  Branch (1522:3): [True: 0, False: 53.4k]
  ------------------
 1523|    725|		case E_PARSE:
  ------------------
  |  |   24|    725|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1523:3): [True: 0, False: 53.4k]
  ------------------
 1524|  1.35k|		case E_COMPILE_ERROR:
  ------------------
  |  |   28|  1.35k|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
  |  Branch (1524:3): [True: 628, False: 52.8k]
  ------------------
 1525|  1.35k|		case E_USER_ERROR:
  ------------------
  |  |   30|  1.35k|#define E_USER_ERROR		(1<<8L)
  ------------------
  |  Branch (1525:3): [True: 2, False: 53.4k]
  ------------------
 1526|  1.35k|			EG(exit_status) = 255;
  ------------------
  |  |   45|  1.35k|# define EG(v) (executor_globals.v)
  ------------------
 1527|  1.35k|			if (module_initialized) {
  ------------------
  |  Branch (1527:8): [True: 1.35k, False: 0]
  ------------------
 1528|  1.35k|				if (!PG(display_errors) &&
  ------------------
  |  |   29|  2.71k|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (1528:9): [True: 0, False: 1.35k]
  ------------------
 1529|      0|				    !SG(headers_sent) &&
  ------------------
  |  |  158|  1.35k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (1529:9): [True: 0, False: 0]
  ------------------
 1530|      0|					SG(sapi_headers).http_response_code == 200
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (1530:6): [True: 0, False: 0]
  ------------------
 1531|  1.35k|				) {
 1532|      0|					sapi_header_line ctr = {0};
 1533|       |
 1534|      0|					ctr.line = "HTTP/1.0 500 Internal Server Error";
 1535|      0|					ctr.line_len = sizeof("HTTP/1.0 500 Internal Server Error") - 1;
 1536|      0|					sapi_header_op(SAPI_HEADER_REPLACE, &ctr);
 1537|      0|				}
 1538|       |				/* the parser would return 1 (failure), we can bail out nicely */
 1539|  1.35k|				if (!(orig_type & E_DONT_BAIL)) {
  ------------------
  |  |   40|  1.35k|#define E_DONT_BAIL			(1<<15L)
  ------------------
  |  Branch (1539:9): [True: 685, False: 670]
  ------------------
 1540|       |					/* restore memory limit */
 1541|    685|					zend_set_memory_limit(PG(memory_limit));
  ------------------
  |  |   29|    685|# define PG(v) (core_globals.v)
  ------------------
 1542|    685|					zend_objects_store_mark_destructed(&EG(objects_store));
  ------------------
  |  |   45|    685|# define EG(v) (executor_globals.v)
  ------------------
 1543|    685|					if (CG(in_compilation) && (type == E_COMPILE_ERROR || type == E_PARSE)) {
  ------------------
  |  |   35|  1.37k|# define CG(v) (compiler_globals.v)
  |  |  ------------------
  |  |  |  Branch (35:16): [True: 515, False: 170]
  |  |  ------------------
  ------------------
              					if (CG(in_compilation) && (type == E_COMPILE_ERROR || type == E_PARSE)) {
  ------------------
  |  |   28|  1.03k|#define E_COMPILE_ERROR		(1<<6L)
  ------------------
              					if (CG(in_compilation) && (type == E_COMPILE_ERROR || type == E_PARSE)) {
  ------------------
  |  |   24|     13|#define E_PARSE				(1<<2L)
  ------------------
  |  Branch (1543:33): [True: 502, False: 13]
  |  Branch (1543:60): [True: 0, False: 13]
  ------------------
 1544|       |						/* We bailout during compilation which may for example leave stale entries in CG(loop_var_stack).
 1545|       |						 * If code is compiled during shutdown, we need to make sure the compiler is reset to a clean state,
 1546|       |						 * otherwise this will lead to incorrect compilation during shutdown.
 1547|       |						 * We don't do a full re-initialization via init_compiler() because that will also reset streams and resources. */
 1548|    502|						shutdown_compiler();
 1549|    502|						zend_init_compiler_data_structures();
 1550|    502|					}
 1551|    685|					zend_bailout();
  ------------------
  |  |  273|    685|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
 1552|      0|					return;
 1553|    685|				}
 1554|  1.35k|			}
 1555|    670|			break;
 1556|  53.4k|	}
 1557|  53.4k|}
main.c:php_message_handler_for_zend:
 1755|    722|{
 1756|    722|	switch (message) {
  ------------------
  |  Branch (1756:10): [True: 722, False: 0]
  ------------------
 1757|     22|		case ZMSG_FAILED_INCLUDE_FOPEN: {
  ------------------
  |  |  430|     22|#define ZMSG_FAILED_INCLUDE_FOPEN		1L
  ------------------
  |  Branch (1757:3): [True: 22, False: 700]
  ------------------
 1758|     22|			char *tmp = estrdup((char *) data);
  ------------------
  |  |  163|     22|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1759|     22|			php_error_docref("function.include", E_WARNING, "Failed opening '%s' for inclusion (include_path='%s')", php_strip_url_passwd(tmp), STR_PRINT(PG(include_path)));
  ------------------
  |  |   23|     22|#define E_WARNING			(1<<1L)
  ------------------
              			php_error_docref("function.include", E_WARNING, "Failed opening '%s' for inclusion (include_path='%s')", php_strip_url_passwd(tmp), STR_PRINT(PG(include_path)));
  ------------------
  |  |  242|     22|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 22, False: 0]
  |  |  ------------------
  ------------------
 1760|     22|			efree(tmp);
  ------------------
  |  |  154|     22|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1761|     22|			break;
 1762|      0|		}
 1763|    700|		case ZMSG_FAILED_REQUIRE_FOPEN: {
  ------------------
  |  |  431|    700|#define ZMSG_FAILED_REQUIRE_FOPEN		2L
  ------------------
  |  Branch (1763:3): [True: 700, False: 22]
  ------------------
 1764|    700|			char *tmp = estrdup((char *) data);
  ------------------
  |  |  163|    700|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    700|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    700|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    700|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    700|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1765|    700|			zend_throw_error(NULL, "Failed opening required '%s' (include_path='%s')", php_strip_url_passwd(tmp), STR_PRINT(PG(include_path)));
  ------------------
  |  |  242|    700|#define STR_PRINT(str)	((str)?(str):"")
  |  |  ------------------
  |  |  |  Branch (242:25): [True: 700, False: 0]
  |  |  ------------------
  ------------------
 1766|    700|			efree(tmp);
  ------------------
  |  |  154|    700|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    700|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    700|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    700|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    700|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1767|    700|			break;
 1768|      0|		}
 1769|      0|		case ZMSG_FAILED_HIGHLIGHT_FOPEN: {
  ------------------
  |  |  432|      0|#define ZMSG_FAILED_HIGHLIGHT_FOPEN		3L
  ------------------
  |  Branch (1769:3): [True: 0, False: 722]
  ------------------
 1770|      0|			char *tmp = estrdup((char *) data);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1771|      0|			php_error_docref(NULL, E_WARNING, "Failed opening '%s' for highlighting", php_strip_url_passwd(tmp));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1772|      0|			efree(tmp);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1773|      0|			break;
 1774|      0|		}
 1775|      0|		case ZMSG_MEMORY_LEAK_DETECTED:
  ------------------
  |  |  433|      0|#define ZMSG_MEMORY_LEAK_DETECTED		4L
  ------------------
  |  Branch (1775:3): [True: 0, False: 722]
  ------------------
 1776|      0|		case ZMSG_MEMORY_LEAK_REPEATED:
  ------------------
  |  |  434|      0|#define ZMSG_MEMORY_LEAK_REPEATED		5L
  ------------------
  |  Branch (1776:3): [True: 0, False: 722]
  ------------------
 1777|      0|#if ZEND_DEBUG
 1778|      0|			if (EG(error_reporting) & E_WARNING) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			if (EG(error_reporting) & E_WARNING) {
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  |  Branch (1778:8): [True: 0, False: 0]
  ------------------
 1779|      0|				char memory_leak_buf[1024];
 1780|       |
 1781|      0|				if (message==ZMSG_MEMORY_LEAK_DETECTED) {
  ------------------
  |  |  433|      0|#define ZMSG_MEMORY_LEAK_DETECTED		4L
  ------------------
  |  Branch (1781:9): [True: 0, False: 0]
  ------------------
 1782|      0|					zend_leak_info *t = (zend_leak_info *) data;
 1783|       |
 1784|      0|					snprintf(memory_leak_buf, 512, "%s(%" PRIu32 ") :  Freeing " ZEND_ADDR_FMT " (%zu bytes), script=%s\n", t->filename, t->lineno, (size_t)t->addr, t->size, SAFE_FILENAME(SG(request_info).path_translated));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
              					snprintf(memory_leak_buf, 512, "%s(%" PRIu32 ") :  Freeing " ZEND_ADDR_FMT " (%zu bytes), script=%s\n", t->filename, t->lineno, (size_t)t->addr, t->size, SAFE_FILENAME(SG(request_info).path_translated));
  ------------------
  |  |  102|      0|#define SAFE_FILENAME(f) ((f)?(f):"-")
  |  |  ------------------
  |  |  |  Branch (102:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1785|      0|					if (t->orig_filename) {
  ------------------
  |  Branch (1785:10): [True: 0, False: 0]
  ------------------
 1786|      0|						char relay_buf[512];
 1787|       |
 1788|      0|						snprintf(relay_buf, 512, "%s(%" PRIu32 ") : Actual location (location was relayed)\n", t->orig_filename, t->orig_lineno);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
 1789|      0|						strlcat(memory_leak_buf, relay_buf, sizeof(memory_leak_buf));
  ------------------
  |  |  159|      0|#define strlcat php_strlcat
  ------------------
 1790|      0|					}
 1791|      0|				} else {
 1792|      0|					unsigned long leak_count = (uintptr_t) data;
 1793|       |
 1794|      0|					snprintf(memory_leak_buf, 512, "Last leak repeated %lu time%s\n", leak_count, (leak_count>1?"s":""));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  |  Branch (1794:85): [True: 0, False: 0]
  ------------------
 1795|      0|				}
 1796|       |#	if defined(PHP_WIN32)
 1797|       |				if (IsDebuggerPresent()) {
 1798|       |					OutputDebugString(memory_leak_buf);
 1799|       |				} else {
 1800|       |					fprintf(stderr, "%s", memory_leak_buf);
 1801|       |				}
 1802|       |#	else
 1803|      0|				fprintf(stderr, "%s", memory_leak_buf);
 1804|      0|#	endif
 1805|      0|			}
 1806|      0|#endif
 1807|      0|			break;
 1808|      0|		case ZMSG_MEMORY_LEAKS_GRAND_TOTAL:
  ------------------
  |  |  436|      0|#define ZMSG_MEMORY_LEAKS_GRAND_TOTAL	7L
  ------------------
  |  Branch (1808:3): [True: 0, False: 722]
  ------------------
 1809|      0|#if ZEND_DEBUG
 1810|      0|			if (EG(error_reporting) & E_WARNING) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              			if (EG(error_reporting) & E_WARNING) {
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  |  Branch (1810:8): [True: 0, False: 0]
  ------------------
 1811|      0|				char memory_leak_buf[512];
 1812|       |
 1813|      0|				snprintf(memory_leak_buf, 512, "=== Total %d memory leaks detected ===\n", *((uint32_t *) data));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
 1814|       |#	if defined(PHP_WIN32)
 1815|       |				if (IsDebuggerPresent()) {
 1816|       |					OutputDebugString(memory_leak_buf);
 1817|       |				} else {
 1818|       |					fprintf(stderr, "%s", memory_leak_buf);
 1819|       |				}
 1820|       |#	else
 1821|      0|				fprintf(stderr, "%s", memory_leak_buf);
 1822|      0|#	endif
 1823|      0|			}
 1824|      0|#endif
 1825|      0|			break;
 1826|      0|		case ZMSG_LOG_SCRIPT_NAME: {
  ------------------
  |  |  435|      0|#define ZMSG_LOG_SCRIPT_NAME			6L
  ------------------
  |  Branch (1826:3): [True: 0, False: 722]
  ------------------
 1827|      0|				struct tm *ta, tmbuf;
 1828|      0|				time_t curtime;
 1829|      0|				char *datetime_str, asctimebuf[52];
 1830|      0|				char memory_leak_buf[4096];
 1831|       |
 1832|      0|				time(&curtime);
 1833|      0|				ta = php_localtime_r(&curtime, &tmbuf);
  ------------------
  |  |   52|      0|#define php_localtime_r localtime_r
  ------------------
 1834|      0|				datetime_str = php_asctime_r(ta, asctimebuf);
  ------------------
  |  |   74|      0|#define php_asctime_r asctime_r
  ------------------
 1835|      0|				if (datetime_str) {
  ------------------
  |  Branch (1835:9): [True: 0, False: 0]
  ------------------
 1836|      0|					datetime_str[strlen(datetime_str)-1]=0;	/* get rid of the trailing newline */
 1837|      0|					snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[%s]  Script:  '%s'\n", datetime_str, SAFE_FILENAME(SG(request_info).path_translated));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
              					snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[%s]  Script:  '%s'\n", datetime_str, SAFE_FILENAME(SG(request_info).path_translated));
  ------------------
  |  |  102|      0|#define SAFE_FILENAME(f) ((f)?(f):"-")
  |  |  ------------------
  |  |  |  Branch (102:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1838|      0|				} else {
 1839|      0|					snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[null]  Script:  '%s'\n", SAFE_FILENAME(SG(request_info).path_translated));
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
              					snprintf(memory_leak_buf, sizeof(memory_leak_buf), "[null]  Script:  '%s'\n", SAFE_FILENAME(SG(request_info).path_translated));
  ------------------
  |  |  102|      0|#define SAFE_FILENAME(f) ((f)?(f):"-")
  |  |  ------------------
  |  |  |  Branch (102:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1840|      0|				}
 1841|       |#	if defined(PHP_WIN32)
 1842|       |				if (IsDebuggerPresent()) {
 1843|       |					OutputDebugString(memory_leak_buf);
 1844|       |				} else {
 1845|       |					fprintf(stderr, "%s", memory_leak_buf);
 1846|       |				}
 1847|       |#	else
 1848|       |				fprintf(stderr, "%s", memory_leak_buf);
 1849|      0|#	endif
 1850|      0|			}
 1851|      0|			break;
 1852|    722|	}
 1853|    722|}
main.c:php_get_configuration_directive_for_zend:
 1734|    359|{
 1735|    359|	return cfg_get_entry_ex(name);
 1736|    359|}
main.c:php_stream_open_for_zend:
 1691|  3.37k|{
 1692|  3.37k|	return php_stream_open_for_zend_ex(handle, USE_PATH|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE);
  ------------------
  |  |  581|  3.37k|#define USE_PATH                        0x00000001
  ------------------
              	return php_stream_open_for_zend_ex(handle, USE_PATH|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE);
  ------------------
  |  |  583|  3.37k|#define REPORT_ERRORS                   0x00000008
  ------------------
              	return php_stream_open_for_zend_ex(handle, USE_PATH|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE);
  ------------------
  |  |  601|  3.37k|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
 1693|  3.37k|}
main.c:php_resolve_path_for_zend:
 1727|  5.36k|{
 1728|  5.36k|	return php_resolve_path(ZSTR_VAL(filename), ZSTR_LEN(filename), PG(include_path));
  ------------------
  |  |   67|  5.36k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	return php_resolve_path(ZSTR_VAL(filename), ZSTR_LEN(filename), PG(include_path));
  ------------------
  |  |   68|  5.36k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	return php_resolve_path(ZSTR_VAL(filename), ZSTR_LEN(filename), PG(include_path));
  ------------------
  |  |   29|  5.36k|# define PG(v) (core_globals.v)
  ------------------
 1729|  5.36k|}
main.c:php_binary_init:
  422|      2|{
  423|      2|	char *binary_location = NULL;
  424|       |#ifdef PHP_WIN32
  425|       |	binary_location = (char *)pemalloc(MAXPATHLEN, 1);
  426|       |	if (GetModuleFileName(0, binary_location, MAXPATHLEN) == 0) {
  427|       |		pefree(binary_location, 1);
  428|       |		binary_location = NULL;
  429|       |	}
  430|       |#else
  431|      2|	if (sapi_module.executable_location) {
  ------------------
  |  Branch (431:6): [True: 0, False: 2]
  ------------------
  432|      0|		binary_location = (char *)pemalloc(MAXPATHLEN, 1);
  ------------------
  |  |  188|      0|#define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):emalloc(size))
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (188:37): [True: 0, Folded]
  |  |  ------------------
  ------------------
  433|      0|		if (!strchr(sapi_module.executable_location, '/')) {
  ------------------
  |  Branch (433:7): [True: 0, False: 0]
  ------------------
  434|      0|			char *envpath, *path;
  435|      0|			bool found = false;
  436|       |
  437|      0|			if ((envpath = getenv("PATH")) != NULL) {
  ------------------
  |  Branch (437:8): [True: 0, False: 0]
  ------------------
  438|      0|				char *search_dir, search_path[MAXPATHLEN];
  439|      0|				char *last = NULL;
  440|      0|				zend_stat_t s = {0};
  441|       |
  442|      0|				path = estrdup(envpath);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  443|      0|				search_dir = php_strtok_r(path, ":", &last);
  ------------------
  |  |   94|      0|#define php_strtok_r strtok_r
  ------------------
  444|       |
  445|      0|				while (search_dir) {
  ------------------
  |  Branch (445:12): [True: 0, False: 0]
  ------------------
  446|      0|					snprintf(search_path, MAXPATHLEN, "%s/%s", search_dir, sapi_module.executable_location);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  447|      0|					if (VCWD_REALPATH(search_path, binary_location) && !VCWD_ACCESS(binary_location, X_OK) && VCWD_STAT(binary_location, &s) == 0 && S_ISREG(s.st_mode)) {
  ------------------
  |  |  339|      0|#define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path)
  |  |  ------------------
  |  |  |  Branch (339:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              					if (VCWD_REALPATH(search_path, binary_location) && !VCWD_ACCESS(binary_location, X_OK) && VCWD_STAT(binary_location, &s) == 0 && S_ISREG(s.st_mode)) {
  ------------------
  |  |  327|      0|#define VCWD_ACCESS(pathname, mode) access(pathname, mode)
  ------------------
              					if (VCWD_REALPATH(search_path, binary_location) && !VCWD_ACCESS(binary_location, X_OK) && VCWD_STAT(binary_location, &s) == 0 && S_ISREG(s.st_mode)) {
  ------------------
  |  |  334|      0|#define VCWD_STAT(path, buff) php_sys_stat(path, buff)
  |  |  ------------------
  |  |  |  |  155|      0|# define php_sys_stat stat
  |  |  ------------------
  ------------------
  |  Branch (447:57): [True: 0, False: 0]
  |  Branch (447:96): [True: 0, False: 0]
  |  Branch (447:135): [True: 0, False: 0]
  ------------------
  448|      0|						found = true;
  449|      0|						break;
  450|      0|					}
  451|      0|					search_dir = php_strtok_r(NULL, ":", &last);
  ------------------
  |  |   94|      0|#define php_strtok_r strtok_r
  ------------------
  452|      0|				}
  453|      0|				efree(path);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|      0|			}
  455|      0|			if (!found) {
  ------------------
  |  Branch (455:8): [True: 0, False: 0]
  ------------------
  456|      0|				pefree(binary_location, 1);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, Folded]
  |  |  ------------------
  ------------------
  457|      0|				binary_location = NULL;
  458|      0|			}
  459|      0|		} else if (!VCWD_REALPATH(sapi_module.executable_location, binary_location) || VCWD_ACCESS(binary_location, X_OK)) {
  ------------------
  |  |  339|      0|#define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path)
  ------------------
              		} else if (!VCWD_REALPATH(sapi_module.executable_location, binary_location) || VCWD_ACCESS(binary_location, X_OK)) {
  ------------------
  |  |  327|      0|#define VCWD_ACCESS(pathname, mode) access(pathname, mode)
  |  |  ------------------
  |  |  |  Branch (327:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (459:14): [True: 0, False: 0]
  ------------------
  460|      0|			pefree(binary_location, 1);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, Folded]
  |  |  ------------------
  ------------------
  461|      0|			binary_location = NULL;
  462|      0|		}
  463|      0|	}
  464|      2|#endif
  465|      2|	PG(php_binary) = binary_location;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  466|      2|}
main.c:OnUpdateDisplayErrors:
  527|      2|{
  528|      2|	PG(display_errors) = php_get_display_errors_mode(new_value);
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  529|       |
  530|      2|	return SUCCESS;
  531|      2|}
main.c:php_get_display_errors_mode:
  494|      4|{
  495|      4|	if (!value) {
  ------------------
  |  Branch (495:6): [True: 0, False: 4]
  ------------------
  496|      0|		return PHP_DISPLAY_ERRORS_STDOUT;
  ------------------
  |  |   34|      0|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  497|      0|	}
  498|       |
  499|      4|	if (zend_string_equals_literal_ci(value, "on")) {
  ------------------
  |  |  404|      4|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 4]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  500|      0|		return PHP_DISPLAY_ERRORS_STDOUT;
  ------------------
  |  |   34|      0|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  501|      0|	}
  502|      4|	if (zend_string_equals_literal_ci(value, "yes")) {
  ------------------
  |  |  404|      4|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 4]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  503|      0|		return PHP_DISPLAY_ERRORS_STDOUT;
  ------------------
  |  |   34|      0|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  504|      0|	}
  505|       |
  506|      4|	if (zend_string_equals_literal_ci(value, "true")) {
  ------------------
  |  |  404|      4|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 4]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  507|      0|		return PHP_DISPLAY_ERRORS_STDOUT;
  ------------------
  |  |   34|      0|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  508|      0|	}
  509|      4|	if (zend_string_equals_literal_ci(value, "stderr")) {
  ------------------
  |  |  404|      4|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 4]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  510|      0|		return PHP_DISPLAY_ERRORS_STDERR;
  ------------------
  |  |   35|      0|#define PHP_DISPLAY_ERRORS_STDERR	2
  ------------------
  511|      0|	}
  512|      4|	if (zend_string_equals_literal_ci(value, "stdout")) {
  ------------------
  |  |  404|      4|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 4]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  513|      0|		return PHP_DISPLAY_ERRORS_STDOUT;
  ------------------
  |  |   34|      0|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  514|      0|	}
  515|       |
  516|      4|	uint8_t mode = ZEND_ATOL(ZSTR_VAL(value));
  ------------------
  |  |   67|      4|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  517|      4|	if (mode && mode != PHP_DISPLAY_ERRORS_STDOUT && mode != PHP_DISPLAY_ERRORS_STDERR) {
  ------------------
  |  |   34|      8|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
              	if (mode && mode != PHP_DISPLAY_ERRORS_STDOUT && mode != PHP_DISPLAY_ERRORS_STDERR) {
  ------------------
  |  |   35|      0|#define PHP_DISPLAY_ERRORS_STDERR	2
  ------------------
  |  Branch (517:6): [True: 4, False: 0]
  |  Branch (517:14): [True: 0, False: 4]
  |  Branch (517:51): [True: 0, False: 0]
  ------------------
  518|      0|		return PHP_DISPLAY_ERRORS_STDOUT;
  ------------------
  |  |   34|      0|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  519|      0|	}
  520|       |
  521|      4|	return mode;
  522|      4|}
main.c:display_errors_mode:
  536|      2|{
  537|      2|	uint8_t mode;
  538|      2|	bool cgi_or_cli;
  539|      2|	zend_string *temporary_value;
  540|       |
  541|      2|	if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) {
  ------------------
  |  |  220|      4|#define ZEND_INI_DISPLAY_ORIG	1
  ------------------
  |  Branch (541:6): [True: 1, False: 1]
  |  Branch (541:39): [True: 0, False: 1]
  ------------------
  542|      0|		temporary_value = (ini_entry->orig_value ? ini_entry->orig_value : NULL );
  ------------------
  |  Branch (542:22): [True: 0, False: 0]
  ------------------
  543|      2|	} else if (ini_entry->value) {
  ------------------
  |  Branch (543:13): [True: 2, False: 0]
  ------------------
  544|      2|		temporary_value = ini_entry->value;
  545|      2|	} else {
  546|      0|		temporary_value = NULL;
  547|      0|	}
  548|       |
  549|      2|	mode = php_get_display_errors_mode(temporary_value);
  550|       |
  551|       |	/* Display 'On' for other SAPIs instead of STDOUT or STDERR */
  552|      2|	cgi_or_cli = (!strcmp(sapi_module.name, "cli") || !strcmp(sapi_module.name, "cgi") || !strcmp(sapi_module.name, "phpdbg"));
  ------------------
  |  Branch (552:16): [True: 0, False: 2]
  |  Branch (552:52): [True: 0, False: 2]
  |  Branch (552:88): [True: 0, False: 2]
  ------------------
  553|       |
  554|      2|	switch (mode) {
  555|      0|		case PHP_DISPLAY_ERRORS_STDERR:
  ------------------
  |  |   35|      0|#define PHP_DISPLAY_ERRORS_STDERR	2
  ------------------
  |  Branch (555:3): [True: 0, False: 2]
  ------------------
  556|      0|			if (cgi_or_cli ) {
  ------------------
  |  Branch (556:8): [True: 0, False: 0]
  ------------------
  557|      0|				PUTS("STDERR");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  558|      0|			} else {
  559|      0|				PUTS("On");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  560|      0|			}
  561|      0|			break;
  562|       |
  563|      2|		case PHP_DISPLAY_ERRORS_STDOUT:
  ------------------
  |  |   34|      2|#define PHP_DISPLAY_ERRORS_STDOUT	1
  ------------------
  |  Branch (563:3): [True: 2, False: 0]
  ------------------
  564|      2|			if (cgi_or_cli ) {
  ------------------
  |  Branch (564:8): [True: 0, False: 2]
  ------------------
  565|      0|				PUTS("STDOUT");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  566|      2|			} else {
  567|      2|				PUTS("On");
  ------------------
  |  |  162|      2|#define PUTS(str)					do {				\
  |  |  163|      2|	const char *__str = (str);							\
  |  |  164|      2|	php_output_write(__str, strlen(__str));	\
  |  |  165|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  568|      2|			}
  569|      2|			break;
  570|       |
  571|      0|		default:
  ------------------
  |  Branch (571:3): [True: 0, False: 2]
  ------------------
  572|      0|			PUTS("Off");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  573|      0|			break;
  574|      2|	}
  575|      2|}
main.c:OnUpdateReportMemleaks:
  671|      2|{
  672|      2|	bool *p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  673|      2|	bool new_bool_value = zend_ini_parse_bool(new_value);
  674|       |
  675|      2|	if (!new_bool_value) {
  ------------------
  |  Branch (675:6): [True: 0, False: 2]
  ------------------
  676|      0|		php_error_docref(NULL, E_DEPRECATED, "Directive 'report_memleaks' is deprecated");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  677|      0|	}
  678|       |
  679|      2|	*p = new_bool_value;
  680|      2|	return SUCCESS;
  681|      2|}
main.c:OnSetSerializePrecision:
  322|      2|{
  323|      2|	zend_long i = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      2|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  324|      2|	if (i >= -1) {
  ------------------
  |  Branch (324:6): [True: 2, False: 0]
  ------------------
  325|      2|		PG(serialize_precision) = i;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  326|      2|		return SUCCESS;
  327|      2|	} else {
  328|      0|		return FAILURE;
  329|      0|	}
  330|      2|}
main.c:OnUpdateDefaultCharset:
  609|      2|{
  610|      2|	if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value))
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value))
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (610:6): [True: 0, False: 2]
  ------------------
  611|      2|		|| strpbrk(ZSTR_VAL(new_value), "\r\n")) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (611:6): [True: 0, False: 2]
  ------------------
  612|      0|		return FAILURE;
  613|      0|	}
  614|      2|	OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  615|      2|	if (php_internal_encoding_changed) {
  ------------------
  |  Branch (615:6): [True: 0, False: 2]
  ------------------
  616|      0|		php_internal_encoding_changed();
  617|      0|	}
  618|      2|	if (new_value) {
  ------------------
  |  Branch (618:6): [True: 2, False: 0]
  ------------------
  619|       |#ifdef PHP_WIN32
  620|       |		php_win32_cp_do_update(ZSTR_VAL(new_value));
  621|       |#endif
  622|      2|	}
  623|      2|	return SUCCESS;
  624|      2|}
main.c:OnUpdateDefaultMimeTye:
  629|      2|{
  630|      2|	if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value))
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value))
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (630:6): [True: 0, False: 2]
  ------------------
  631|      2|		|| strpbrk(ZSTR_VAL(new_value), "\r\n")) {
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (631:6): [True: 0, False: 2]
  ------------------
  632|      0|		return FAILURE;
  633|      0|	}
  634|      2|	return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  635|      2|}
main.c:OnUpdateInternalEncoding:
  640|      2|{
  641|      2|	OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  642|      2|	if (php_internal_encoding_changed) {
  ------------------
  |  Branch (642:6): [True: 0, False: 2]
  ------------------
  643|      0|		php_internal_encoding_changed();
  644|      0|	}
  645|      2|	if (new_value) {
  ------------------
  |  Branch (645:6): [True: 0, False: 2]
  ------------------
  646|       |#ifdef PHP_WIN32
  647|       |		php_win32_cp_do_update(ZSTR_VAL(new_value));
  648|       |#endif
  649|      0|	}
  650|      2|	return SUCCESS;
  651|      2|}
main.c:OnUpdateInputEncoding:
  656|      2|{
  657|      2|	OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  658|      2|	if (php_internal_encoding_changed) {
  ------------------
  |  Branch (658:6): [True: 0, False: 2]
  ------------------
  659|      0|		php_internal_encoding_changed();
  660|      0|	}
  661|      2|	if (new_value) {
  ------------------
  |  Branch (661:6): [True: 0, False: 2]
  ------------------
  662|       |#ifdef PHP_WIN32
  663|       |		php_win32_cp_do_update(NULL);
  664|       |#endif
  665|      0|	}
  666|      2|	return SUCCESS;
  667|      2|}
main.c:OnUpdateOutputEncoding:
  685|      2|{
  686|      2|	OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  687|      2|	if (php_internal_encoding_changed) {
  ------------------
  |  Branch (687:6): [True: 0, False: 2]
  ------------------
  688|      0|		php_internal_encoding_changed();
  689|      0|	}
  690|      2|	if (new_value) {
  ------------------
  |  Branch (690:6): [True: 0, False: 2]
  ------------------
  691|       |#ifdef PHP_WIN32
  692|       |		php_win32_cp_do_update(NULL);
  693|       |#endif
  694|      0|	}
  695|      2|	return SUCCESS;
  696|      2|}
main.c:OnUpdateErrorLog:
  701|      2|{
  702|       |	/* Only do the open_basedir check at runtime */
  703|      2|	if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) &&
  ------------------
  |  |   73|      2|#define PHP_INI_STAGE_RUNTIME		ZEND_INI_STAGE_RUNTIME
  |  |  ------------------
  |  |  |  |  227|      4|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  |  |  ------------------
  ------------------
              	if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) &&
  ------------------
  |  |   74|      2|#define PHP_INI_STAGE_HTACCESS		ZEND_INI_STAGE_HTACCESS
  |  |  ------------------
  |  |  |  |  228|      2|#define ZEND_INI_STAGE_HTACCESS		(1<<5)
  |  |  ------------------
  ------------------
  |  Branch (703:7): [True: 0, False: 2]
  |  Branch (703:41): [True: 0, False: 2]
  ------------------
  704|      0|			new_value && !zend_string_equals_literal(new_value, "syslog") && ZSTR_LEN(new_value) > 0) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
              			new_value && !zend_string_equals_literal(new_value, "syslog") && ZSTR_LEN(new_value) > 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (704:4): [True: 0, False: 0]
  |  Branch (704:17): [True: 0, False: 0]
  |  Branch (704:69): [True: 0, False: 0]
  ------------------
  705|      0|		if (PG(open_basedir) && php_check_open_basedir(ZSTR_VAL(new_value))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (PG(open_basedir) && php_check_open_basedir(ZSTR_VAL(new_value))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (705:27): [True: 0, False: 0]
  ------------------
  706|      0|			return FAILURE;
  707|      0|		}
  708|      0|	}
  709|      2|	char **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  710|      2|	*p = new_value && ZSTR_LEN(new_value) > 0 ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	*p = new_value && ZSTR_LEN(new_value) > 0 ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (710:7): [True: 0, False: 2]
  |  Branch (710:20): [True: 0, False: 0]
  ------------------
  711|      2|	return SUCCESS;
  712|      2|}
main.c:OnUpdateTimeout:
  471|      2|{
  472|      2|	if (stage==PHP_INI_STAGE_STARTUP) {
  ------------------
  |  |   69|      2|#define PHP_INI_STAGE_STARTUP		ZEND_INI_STAGE_STARTUP
  |  |  ------------------
  |  |  |  |  223|      2|#define ZEND_INI_STAGE_STARTUP		(1<<0)
  |  |  ------------------
  ------------------
  |  Branch (472:6): [True: 2, False: 0]
  ------------------
  473|       |		/* Don't set a timeout on startup, only per-request */
  474|      2|		EG(timeout_seconds) = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   45|      2|# define EG(v) (executor_globals.v)
  ------------------
              		EG(timeout_seconds) = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      2|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  475|      2|		return SUCCESS;
  476|      2|	}
  477|      0|	zend_unset_timeout();
  478|      0|	EG(timeout_seconds) = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              	EG(timeout_seconds) = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      0|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  479|      0|	if (stage != PHP_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |   72|      0|#define PHP_INI_STAGE_DEACTIVATE	ZEND_INI_STAGE_DEACTIVATE
  |  |  ------------------
  |  |  |  |  226|      0|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  |  |  ------------------
  ------------------
  |  Branch (479:6): [True: 0, False: 0]
  ------------------
  480|       |		/*
  481|       |		 * If we're restoring INI values, we shouldn't reset the timer.
  482|       |		 * Otherwise, the timer is active when PHP is idle, such as the
  483|       |		 * CLI web server or CGI. Running a script will re-activate
  484|       |		 * the timeout, so it's not needed to do so at script end.
  485|       |		 */
  486|      0|		zend_set_timeout(EG(timeout_seconds), 0);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  487|      0|	}
  488|      0|	return SUCCESS;
  489|      2|}
main.c:OnUpdateMailCrLfMode:
  732|      2|{
  733|      2|	if (new_value) {
  ------------------
  |  Branch (733:6): [True: 2, False: 0]
  ------------------
  734|      2|		if (ZSTR_LEN(new_value) > 0 &&
  ------------------
  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (734:7): [True: 2, False: 0]
  ------------------
  735|      2|			!zend_string_equals_literal(new_value, "crlf") &&
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
  |  Branch (735:4): [True: 0, False: 2]
  ------------------
  736|      0|			!zend_string_equals_literal(new_value, "lf") &&
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
  |  Branch (736:4): [True: 0, False: 0]
  ------------------
  737|      0|			!zend_string_equals_literal(new_value, "mixed") &&
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
  |  Branch (737:4): [True: 0, False: 0]
  ------------------
  738|      0|			!zend_string_equals_literal(new_value, "os")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
  |  Branch (738:4): [True: 0, False: 0]
  ------------------
  739|      0|			int err_type;
  740|       |
  741|      0|			if (stage == ZEND_INI_STAGE_RUNTIME) {
  ------------------
  |  |  227|      0|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  ------------------
  |  Branch (741:8): [True: 0, False: 0]
  ------------------
  742|      0|				err_type = E_WARNING;
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  743|      0|			} else {
  744|      0|				err_type = E_ERROR;
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  745|      0|			}
  746|       |
  747|      0|			if (stage != ZEND_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |  226|      0|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  ------------------
  |  Branch (747:8): [True: 0, False: 0]
  ------------------
  748|      0|				php_error_docref(NULL, err_type, "Invalid value \"%s\" for mail.cr_lf_mode. Must be one of: \"crlf\", \"lf\", \"mixed\", \"os\"", ZSTR_VAL(new_value));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  749|      0|			}
  750|       |
  751|      0|			return FAILURE;
  752|      0|		}
  753|      2|	}
  754|      2|	OnUpdateStr(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
  755|      2|	return SUCCESS;
  756|      2|}
main.c:OnUpdateMailLog:
  717|      2|{
  718|       |	/* Only do the open_basedir check at runtime */
  719|      2|	if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) && new_value && ZSTR_LEN(new_value) > 0) {
  ------------------
  |  |   73|      2|#define PHP_INI_STAGE_RUNTIME		ZEND_INI_STAGE_RUNTIME
  |  |  ------------------
  |  |  |  |  227|      4|#define ZEND_INI_STAGE_RUNTIME		(1<<4)
  |  |  ------------------
  ------------------
              	if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) && new_value && ZSTR_LEN(new_value) > 0) {
  ------------------
  |  |   74|      2|#define PHP_INI_STAGE_HTACCESS		ZEND_INI_STAGE_HTACCESS
  |  |  ------------------
  |  |  |  |  228|      2|#define ZEND_INI_STAGE_HTACCESS		(1<<5)
  |  |  ------------------
  ------------------
              	if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) && new_value && ZSTR_LEN(new_value) > 0) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (719:7): [True: 0, False: 2]
  |  Branch (719:41): [True: 0, False: 2]
  |  Branch (719:77): [True: 0, False: 0]
  |  Branch (719:90): [True: 0, False: 0]
  ------------------
  720|      0|		if (PG(open_basedir) && php_check_open_basedir(ZSTR_VAL(new_value))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              		if (PG(open_basedir) && php_check_open_basedir(ZSTR_VAL(new_value))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (720:27): [True: 0, False: 0]
  ------------------
  721|      0|			return FAILURE;
  722|      0|		}
  723|      0|	}
  724|      2|	char **p = ZEND_INI_GET_ADDR();
  ------------------
  |  |  255|      2|#define ZEND_INI_GET_ADDR() ((void*)(ZEND_INI_GET_BASE() + (size_t) mh_arg1))
  |  |  ------------------
  |  |  |  |  250|      2|# define ZEND_INI_GET_BASE() ((char *) mh_arg2)
  |  |  ------------------
  ------------------
  725|      2|	*p = new_value && ZSTR_LEN(new_value) > 0 ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	*p = new_value && ZSTR_LEN(new_value) > 0 ? ZSTR_VAL(new_value) : NULL;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (725:7): [True: 0, False: 2]
  |  Branch (725:20): [True: 0, False: 0]
  ------------------
  726|      2|	return SUCCESS;
  727|      2|}
main.c:OnChangeMaxMemoryLimit:
  375|      2|{
  376|      2|	size_t value;
  377|      2|	if (new_value) {
  ------------------
  |  Branch (377:6): [True: 2, False: 0]
  ------------------
  378|      2|		value = zend_ini_parse_uquantity_warn(new_value, entry->name);
  379|      2|	} else {
  380|      0|		value = Z_L(1) << 30; /* effectively, no limit */
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  381|      0|	}
  382|       |
  383|      2|	if (zend_set_memory_limit(value) == FAILURE) {
  ------------------
  |  Branch (383:6): [True: 0, False: 2]
  ------------------
  384|      0|		zend_error(E_ERROR, "Failed to set memory limit to %zd bytes (Current memory usage is %zd bytes)", value, zend_memory_usage(true));
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  385|      0|		return FAILURE;
  386|      0|	}
  387|       |
  388|      2|	PG(memory_limit) = value;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  389|      2|	PG(max_memory_limit) = value;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  390|       |
  391|      2|	return SUCCESS;
  392|      2|}
main.c:OnChangeMemoryLimit:
  335|     66|{
  336|     66|	size_t value;
  337|     66|	if (new_value) {
  ------------------
  |  Branch (337:6): [True: 66, False: 0]
  ------------------
  338|     66|		value = zend_ini_parse_uquantity_warn(new_value, entry->name);
  339|     66|	} else {
  340|      0|		value = Z_L(1)<<30;		/* effectively, no limit */
  ------------------
  |  |   37|      0|# define Z_L(i) INT64_C(i)
  ------------------
  341|      0|	}
  342|       |
  343|       |	/* If memory_limit exceeds max_memory_limit, warn and set to max_memory_limit instead. */
  344|     66|	if (value > PG(max_memory_limit)) {
  ------------------
  |  |   29|     66|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (344:6): [True: 0, False: 66]
  ------------------
  345|      0|		if (value != -1) {
  ------------------
  |  Branch (345:7): [True: 0, False: 0]
  ------------------
  346|      0|			zend_error(E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  347|      0|				"Failed to set memory_limit to %zd bytes. Setting to max_memory_limit instead (currently: " ZEND_LONG_FMT " bytes)",
  348|      0|				value, PG(max_memory_limit));
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  349|      0|		}
  350|       |
  351|      0|		zend_ini_entry *max_mem_limit_ini = zend_hash_str_find_ptr(EG(ini_directives), ZEND_STRL("max_memory_limit"));
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
              		zend_ini_entry *max_mem_limit_ini = zend_hash_str_find_ptr(EG(ini_directives), ZEND_STRL("max_memory_limit"));
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  352|      0|		entry->value = zend_string_init(ZSTR_VAL(max_mem_limit_ini->value), ZSTR_LEN(max_mem_limit_ini->value), true);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		entry->value = zend_string_init(ZSTR_VAL(max_mem_limit_ini->value), ZSTR_LEN(max_mem_limit_ini->value), true);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  353|      0|		GC_MAKE_PERSISTENT_LOCAL(entry->value);
  ------------------
  |  | 1326|      0|	do { } while (0)
  |  |  ------------------
  |  |  |  Branch (1326:16): [Folded, False: 0]
  |  |  ------------------
  ------------------
  354|      0|		PG(memory_limit) = PG(max_memory_limit);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		PG(memory_limit) = PG(max_memory_limit);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  355|       |
  356|      0|		return SUCCESS;
  357|      0|	}
  358|       |
  359|     66|	if (zend_set_memory_limit(value) == FAILURE) {
  ------------------
  |  Branch (359:6): [True: 14, False: 52]
  ------------------
  360|       |		/* When the memory limit is reset to the original level during deactivation, we may be
  361|       |		 * using more memory than the original limit while shutdown is still in progress.
  362|       |		 * Ignore a failure for now, and set the memory limit when the memory manager has been
  363|       |		 * shut down and the minimal amount of memory is used. */
  364|     14|		if (stage != ZEND_INI_STAGE_DEACTIVATE) {
  ------------------
  |  |  226|     14|#define ZEND_INI_STAGE_DEACTIVATE	(1<<3)
  ------------------
  |  Branch (364:7): [True: 14, False: 0]
  ------------------
  365|     14|			zend_error(E_WARNING, "Failed to set memory limit to %zd bytes (Current memory usage is %zd bytes)", value, zend_memory_usage(true));
  ------------------
  |  |   23|     14|#define E_WARNING			(1<<1L)
  ------------------
  366|     14|			return FAILURE;
  367|     14|		}
  368|     14|	}
  369|     52|	PG(memory_limit) = value;
  ------------------
  |  |   29|     52|# define PG(v) (core_globals.v)
  ------------------
  370|     52|	return SUCCESS;
  371|     66|}
main.c:OnSetPrecision:
  309|      6|{
  310|      6|	zend_long i = ZEND_ATOL(ZSTR_VAL(new_value));
  ------------------
  |  |   67|      6|#  define ZEND_ATOL(s) atoll((s))
  ------------------
  311|      6|	if (i >= -1) {
  ------------------
  |  Branch (311:6): [True: 6, False: 0]
  ------------------
  312|      6|		EG(precision) = i;
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  ------------------
  313|      6|		return SUCCESS;
  314|      6|	} else {
  315|      0|		return FAILURE;
  316|      0|	}
  317|      6|}
main.c:OnChangeMailForceExtra:
  761|      2|{
  762|       |	/* Check that INI setting does not have any nul bytes */
  763|      2|	if (new_value && zend_str_has_nul_byte(new_value)) {
  ------------------
  |  Branch (763:6): [True: 0, False: 2]
  |  Branch (763:19): [True: 0, False: 0]
  ------------------
  764|       |		/* TODO Emit warning? */
  765|      0|		return FAILURE;
  766|      0|	}
  767|       |	/* Don't allow changing it in htaccess */
  768|      2|	if (stage == PHP_INI_STAGE_HTACCESS) {
  ------------------
  |  |   74|      2|#define PHP_INI_STAGE_HTACCESS		ZEND_INI_STAGE_HTACCESS
  |  |  ------------------
  |  |  |  |  228|      2|#define ZEND_INI_STAGE_HTACCESS		(1<<5)
  |  |  ------------------
  ------------------
  |  Branch (768:6): [True: 0, False: 2]
  ------------------
  769|      0|			return FAILURE;
  770|      0|	}
  771|      2|	return SUCCESS;
  772|      2|}
main.c:OnSetFacility:
  172|      2|{
  173|      2|	const zend_string *facility = new_value;
  174|       |
  175|      2|#ifdef LOG_AUTH
  176|      2|	if (zend_string_equals_literal(facility, "LOG_AUTH") || zend_string_equals_literal(facility, "auth")
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_AUTH") || zend_string_equals_literal(facility, "auth")
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  177|      2|			|| zend_string_equals_literal(facility, "security")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  178|      0|		PG(syslog_facility) = LOG_AUTH;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  179|      0|		return SUCCESS;
  180|      0|	}
  181|      2|#endif
  182|      2|#ifdef LOG_AUTHPRIV
  183|      2|	if (zend_string_equals_literal(facility, "LOG_AUTHPRIV") || zend_string_equals_literal(facility, "authpriv")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_AUTHPRIV") || zend_string_equals_literal(facility, "authpriv")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  184|      0|		PG(syslog_facility) = LOG_AUTHPRIV;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  185|      0|		return SUCCESS;
  186|      0|	}
  187|      2|#endif
  188|      2|#ifdef LOG_CRON
  189|      2|	if (zend_string_equals_literal(facility, "LOG_CRON") || zend_string_equals_literal(facility, "cron")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_CRON") || zend_string_equals_literal(facility, "cron")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  190|      0|		PG(syslog_facility) = LOG_CRON;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  191|      0|		return SUCCESS;
  192|      0|	}
  193|      2|#endif
  194|      2|#ifdef LOG_DAEMON
  195|      2|	if (zend_string_equals_literal(facility, "LOG_DAEMON") || zend_string_equals_literal(facility, "daemon")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_DAEMON") || zend_string_equals_literal(facility, "daemon")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  196|      0|		PG(syslog_facility) = LOG_DAEMON;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  197|      0|		return SUCCESS;
  198|      0|	}
  199|      2|#endif
  200|      2|#ifdef LOG_FTP
  201|      2|	if (zend_string_equals_literal(facility, "LOG_FTP") || zend_string_equals_literal(facility, "ftp")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_FTP") || zend_string_equals_literal(facility, "ftp")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  202|      0|		PG(syslog_facility) = LOG_FTP;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  203|      0|		return SUCCESS;
  204|      0|	}
  205|      2|#endif
  206|      2|#ifdef LOG_KERN
  207|      2|	if (zend_string_equals_literal(facility, "LOG_KERN") || zend_string_equals_literal(facility, "kern")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_KERN") || zend_string_equals_literal(facility, "kern")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  208|      0|		PG(syslog_facility) = LOG_KERN;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  209|      0|		return SUCCESS;
  210|      0|	}
  211|      2|#endif
  212|      2|#ifdef LOG_LPR
  213|      2|	if (zend_string_equals_literal(facility, "LOG_LPR") || zend_string_equals_literal(facility, "lpr")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LPR") || zend_string_equals_literal(facility, "lpr")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  214|      0|		PG(syslog_facility) = LOG_LPR;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  215|      0|		return SUCCESS;
  216|      0|	}
  217|      2|#endif
  218|      2|#ifdef LOG_MAIL
  219|      2|	if (zend_string_equals_literal(facility, "LOG_MAIL") || zend_string_equals_literal(facility, "mail")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_MAIL") || zend_string_equals_literal(facility, "mail")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  220|      0|		PG(syslog_facility) = LOG_MAIL;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  221|      0|		return SUCCESS;
  222|      0|	}
  223|      2|#endif
  224|       |#ifdef LOG_INTERNAL_MARK
  225|       |	if (zend_string_equals_literal(facility, "LOG_INTERNAL_MARK") || zend_string_equals_literal(facility, "mark")) {
  226|       |		PG(syslog_facility) = LOG_INTERNAL_MARK;
  227|       |		return SUCCESS;
  228|       |	}
  229|       |#endif
  230|      2|#ifdef LOG_NEWS
  231|      2|	if (zend_string_equals_literal(facility, "LOG_NEWS") || zend_string_equals_literal(facility, "news")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_NEWS") || zend_string_equals_literal(facility, "news")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  232|      0|		PG(syslog_facility) = LOG_NEWS;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  233|      0|		return SUCCESS;
  234|      0|	}
  235|      2|#endif
  236|      2|#ifdef LOG_SYSLOG
  237|      2|	if (zend_string_equals_literal(facility, "LOG_SYSLOG") || zend_string_equals_literal(facility, "syslog")) {
  ------------------
  |  |  407|      4|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_SYSLOG") || zend_string_equals_literal(facility, "syslog")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  238|      0|		PG(syslog_facility) = LOG_SYSLOG;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  239|      0|		return SUCCESS;
  240|      0|	}
  241|      2|#endif
  242|      2|#ifdef LOG_USER
  243|      2|	if (zend_string_equals(facility, ZSTR_KNOWN(ZEND_STR_USER)) || zend_string_equals_literal(facility, "LOG_USER")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (243:6): [True: 0, False: 2]
  ------------------
  244|      2|		PG(syslog_facility) = LOG_USER;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  245|      2|		return SUCCESS;
  246|      2|	}
  247|      0|#endif
  248|      0|#ifdef LOG_UUCP
  249|      0|	if (zend_string_equals_literal(facility, "LOG_UUCP") || zend_string_equals_literal(facility, "uucp")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_UUCP") || zend_string_equals_literal(facility, "uucp")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  250|      0|		PG(syslog_facility) = LOG_UUCP;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  251|      0|		return SUCCESS;
  252|      0|	}
  253|      0|#endif
  254|      0|#ifdef LOG_LOCAL0
  255|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL0") || zend_string_equals_literal(facility, "local0")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL0") || zend_string_equals_literal(facility, "local0")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  256|      0|		PG(syslog_facility) = LOG_LOCAL0;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  257|      0|		return SUCCESS;
  258|      0|	}
  259|      0|#endif
  260|      0|#ifdef LOG_LOCAL1
  261|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL1") || zend_string_equals_literal(facility, "local1")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL1") || zend_string_equals_literal(facility, "local1")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  262|      0|		PG(syslog_facility) = LOG_LOCAL1;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  263|      0|		return SUCCESS;
  264|      0|	}
  265|      0|#endif
  266|      0|#ifdef LOG_LOCAL2
  267|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL2") || zend_string_equals_literal(facility, "local2")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL2") || zend_string_equals_literal(facility, "local2")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  268|      0|		PG(syslog_facility) = LOG_LOCAL2;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  269|      0|		return SUCCESS;
  270|      0|	}
  271|      0|#endif
  272|      0|#ifdef LOG_LOCAL3
  273|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL3") || zend_string_equals_literal(facility, "local3")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL3") || zend_string_equals_literal(facility, "local3")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  274|      0|		PG(syslog_facility) = LOG_LOCAL3;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  275|      0|		return SUCCESS;
  276|      0|	}
  277|      0|#endif
  278|      0|#ifdef LOG_LOCAL4
  279|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL4") || zend_string_equals_literal(facility, "local4")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL4") || zend_string_equals_literal(facility, "local4")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  280|      0|		PG(syslog_facility) = LOG_LOCAL4;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  281|      0|		return SUCCESS;
  282|      0|	}
  283|      0|#endif
  284|      0|#ifdef LOG_LOCAL5
  285|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL5") || zend_string_equals_literal(facility, "local5")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL5") || zend_string_equals_literal(facility, "local5")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  286|      0|		PG(syslog_facility) = LOG_LOCAL5;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  287|      0|		return SUCCESS;
  288|      0|	}
  289|      0|#endif
  290|      0|#ifdef LOG_LOCAL6
  291|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL6") || zend_string_equals_literal(facility, "local6")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL6") || zend_string_equals_literal(facility, "local6")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  292|      0|		PG(syslog_facility) = LOG_LOCAL6;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  293|      0|		return SUCCESS;
  294|      0|	}
  295|      0|#endif
  296|      0|#ifdef LOG_LOCAL7
  297|      0|	if (zend_string_equals_literal(facility, "LOG_LOCAL7") || zend_string_equals_literal(facility, "local7")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	if (zend_string_equals_literal(facility, "LOG_LOCAL7") || zend_string_equals_literal(facility, "local7")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  298|      0|		PG(syslog_facility) = LOG_LOCAL7;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  299|      0|		return SUCCESS;
  300|      0|	}
  301|      0|#endif
  302|       |
  303|      0|	return FAILURE;
  304|      0|}
main.c:OnSetLogFilter:
  396|      2|{
  397|      2|	const zend_string *filter = new_value;
  398|       |
  399|      2|	if (zend_string_equals_literal(filter, "all")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  400|      0|		PG(syslog_filter) = PHP_SYSLOG_FILTER_ALL;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		PG(syslog_filter) = PHP_SYSLOG_FILTER_ALL;
  ------------------
  |  |   28|      0|#define PHP_SYSLOG_FILTER_ALL		0
  ------------------
  401|      0|		return SUCCESS;
  402|      0|	}
  403|      2|	if (zend_string_equals_literal(filter, "no-ctrl")) {
  ------------------
  |  |  407|      2|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  404|      2|		PG(syslog_filter) = PHP_SYSLOG_FILTER_NO_CTRL;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
              		PG(syslog_filter) = PHP_SYSLOG_FILTER_NO_CTRL;
  ------------------
  |  |   29|      2|#define PHP_SYSLOG_FILTER_NO_CTRL	1
  ------------------
  405|      2|		return SUCCESS;
  406|      2|	}
  407|      0|	if (zend_string_equals_literal(filter, "ascii")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  408|      0|		PG(syslog_filter) = PHP_SYSLOG_FILTER_ASCII;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		PG(syslog_filter) = PHP_SYSLOG_FILTER_ASCII;
  ------------------
  |  |   30|      0|#define PHP_SYSLOG_FILTER_ASCII		2
  ------------------
  409|      0|		return SUCCESS;
  410|      0|	}
  411|      0|	if (zend_string_equals_literal(filter, "raw")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  |  |  ------------------
  |  |  |  Branch (407:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  412|      0|		PG(syslog_filter) = PHP_SYSLOG_FILTER_RAW;
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		PG(syslog_filter) = PHP_SYSLOG_FILTER_RAW;
  ------------------
  |  |   31|      0|#define PHP_SYSLOG_FILTER_RAW		3
  ------------------
  413|      0|		return SUCCESS;
  414|      0|	}
  415|       |
  416|      0|	return FAILURE;
  417|      0|}
main.c:clear_last_error:
 1318|  87.0k|static void clear_last_error(void) {
 1319|  87.0k|	if (PG(last_error_message)) {
  ------------------
  |  |   29|  87.0k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 53.4k, False: 33.5k]
  |  |  ------------------
  ------------------
 1320|  53.4k|		zend_string_release(PG(last_error_message));
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1321|  53.4k|		PG(last_error_message) = NULL;
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1322|  53.4k|	}
 1323|  87.0k|	if (PG(last_error_file)) {
  ------------------
  |  |   29|  87.0k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 53.4k, False: 33.5k]
  |  |  ------------------
  ------------------
 1324|  53.4k|		zend_string_release(PG(last_error_file));
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1325|  53.4k|		PG(last_error_file) = NULL;
  ------------------
  |  |   29|  53.4k|# define PG(v) (core_globals.v)
  ------------------
 1326|  53.4k|	}
 1327|  87.0k|}

main.c:register_main_symbols:
    5|      2|{
    6|      2|	REGISTER_STRING_CONSTANT("PHP_VERSION", PHP_VERSION, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
    7|      2|	REGISTER_LONG_CONSTANT("PHP_MAJOR_VERSION", PHP_MAJOR_VERSION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    8|      2|	REGISTER_LONG_CONSTANT("PHP_MINOR_VERSION", PHP_MINOR_VERSION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    9|      2|	REGISTER_LONG_CONSTANT("PHP_RELEASE_VERSION", PHP_RELEASE_VERSION, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   10|      2|	REGISTER_STRING_CONSTANT("PHP_EXTRA_VERSION", PHP_EXTRA_VERSION, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   11|      2|	REGISTER_LONG_CONSTANT("PHP_VERSION_ID", PHP_VERSION_ID, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   12|      2|	REGISTER_STRING_CONSTANT("PHP_BUILD_DATE", php_build_date, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   13|       |#if defined(PHP_BUILD_PROVIDER)
   14|       |	REGISTER_STRING_CONSTANT("PHP_BUILD_PROVIDER", PHP_BUILD_PROVIDER, CONST_PERSISTENT);
   15|       |#endif
   16|      2|	REGISTER_BOOL_CONSTANT("PHP_ZTS", PHP_ZTS, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
   17|      2|	REGISTER_BOOL_CONSTANT("PHP_DEBUG", PHP_DEBUG, CONST_PERSISTENT);
  ------------------
  |  |   62|      2|#define REGISTER_BOOL_CONSTANT(name, bval, flags)  zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
  ------------------
   18|      2|	REGISTER_STRING_CONSTANT("PHP_OS", PHP_OS_STR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   19|      2|	REGISTER_STRING_CONSTANT("PHP_OS_FAMILY", PHP_OS_FAMILY, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   20|      2|	REGISTER_STRING_CONSTANT("DEFAULT_INCLUDE_PATH", PHP_INCLUDE_PATH, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   21|      2|	REGISTER_STRING_CONSTANT("PEAR_INSTALL_DIR", PEAR_INSTALLDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   22|      2|	REGISTER_STRING_CONSTANT("PEAR_EXTENSION_DIR", PHP_EXTENSION_DIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   23|      2|	REGISTER_STRING_CONSTANT("PHP_EXTENSION_DIR", PHP_EXTENSION_DIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   24|      2|	REGISTER_STRING_CONSTANT("PHP_PREFIX", PHP_PREFIX, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   25|      2|	REGISTER_STRING_CONSTANT("PHP_BINDIR", PHP_BINDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   26|      2|	REGISTER_STRING_CONSTANT("PHP_SBINDIR", PHP_SBINDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   27|      2|#if defined(PHP_MANDIR)
   28|      2|	REGISTER_STRING_CONSTANT("PHP_MANDIR", PHP_MANDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   29|      2|#endif
   30|      2|	REGISTER_STRING_CONSTANT("PHP_LIBDIR", PHP_LIBDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   31|      2|	REGISTER_STRING_CONSTANT("PHP_DATADIR", PHP_DATADIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   32|      2|	REGISTER_STRING_CONSTANT("PHP_SYSCONFDIR", PHP_SYSCONFDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   33|      2|	REGISTER_STRING_CONSTANT("PHP_LOCALSTATEDIR", PHP_LOCALSTATEDIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   34|      2|	REGISTER_STRING_CONSTANT("PHP_CONFIG_FILE_PATH", PHP_CONFIG_FILE_PATH, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   35|      2|	REGISTER_STRING_CONSTANT("PHP_CONFIG_FILE_SCAN_DIR", PHP_CONFIG_FILE_SCAN_DIR, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   36|      2|	REGISTER_STRING_CONSTANT("PHP_SHLIB_SUFFIX", PHP_SHLIB_SUFFIX, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   37|      2|	REGISTER_STRING_CONSTANT("PHP_EOL", PHP_EOL, CONST_PERSISTENT);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   38|      2|	REGISTER_LONG_CONSTANT("PHP_MAXPATHLEN", MAXPATHLEN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   39|      2|	REGISTER_LONG_CONSTANT("PHP_INT_MAX", ZEND_LONG_MAX, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   40|      2|	REGISTER_LONG_CONSTANT("PHP_INT_MIN", ZEND_LONG_MIN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   41|      2|	REGISTER_LONG_CONSTANT("PHP_INT_SIZE", SIZEOF_ZEND_LONG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   42|      2|	REGISTER_LONG_CONSTANT("PHP_FD_SETSIZE", FD_SETSIZE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   43|      2|	REGISTER_LONG_CONSTANT("PHP_FLOAT_DIG", DBL_DIG, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   44|      2|	REGISTER_DOUBLE_CONSTANT("PHP_FLOAT_EPSILON", DBL_EPSILON, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
   45|      2|	REGISTER_DOUBLE_CONSTANT("PHP_FLOAT_MAX", DBL_MAX, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
   46|      2|	REGISTER_DOUBLE_CONSTANT("PHP_FLOAT_MIN", DBL_MIN, CONST_PERSISTENT);
  ------------------
  |  |   64|      2|#define REGISTER_DOUBLE_CONSTANT(name, dval, flags)  zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
  ------------------
   47|       |#if defined(PHP_WIN32)
   48|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_MAJOR", EG(windows_version_info).dwMajorVersion, CONST_PERSISTENT);
   49|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_MINOR", EG(windows_version_info).dwMinorVersion, CONST_PERSISTENT);
   50|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_BUILD", EG(windows_version_info).dwBuildNumber, CONST_PERSISTENT);
   51|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_PLATFORM", EG(windows_version_info).dwPlatformId, CONST_PERSISTENT);
   52|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_SP_MAJOR", EG(windows_version_info).wServicePackMajor, CONST_PERSISTENT);
   53|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_SP_MINOR", EG(windows_version_info).wServicePackMinor, CONST_PERSISTENT);
   54|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_SUITEMASK", EG(windows_version_info).wSuiteMask, CONST_PERSISTENT);
   55|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_VERSION_PRODUCTTYPE", EG(windows_version_info).wProductType, CONST_PERSISTENT);
   56|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_NT_DOMAIN_CONTROLLER", VER_NT_DOMAIN_CONTROLLER, CONST_PERSISTENT);
   57|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_NT_SERVER", VER_NT_SERVER, CONST_PERSISTENT);
   58|       |	REGISTER_LONG_CONSTANT("PHP_WINDOWS_NT_WORKSTATION", VER_NT_WORKSTATION, CONST_PERSISTENT);
   59|       |#endif
   60|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_START", PHP_OUTPUT_HANDLER_START, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   61|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_WRITE", PHP_OUTPUT_HANDLER_WRITE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   62|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_FLUSH", PHP_OUTPUT_HANDLER_FLUSH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   63|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_CLEAN", PHP_OUTPUT_HANDLER_CLEAN, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   64|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_FINAL", PHP_OUTPUT_HANDLER_FINAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   65|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_CONT", PHP_OUTPUT_HANDLER_WRITE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   66|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_END", PHP_OUTPUT_HANDLER_FINAL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   67|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_CLEANABLE", PHP_OUTPUT_HANDLER_CLEANABLE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   68|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_FLUSHABLE", PHP_OUTPUT_HANDLER_FLUSHABLE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   69|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_REMOVABLE", PHP_OUTPUT_HANDLER_REMOVABLE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   70|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_STDFLAGS", PHP_OUTPUT_HANDLER_STDFLAGS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   71|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_STARTED", PHP_OUTPUT_HANDLER_STARTED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   72|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_DISABLED", PHP_OUTPUT_HANDLER_DISABLED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   73|      2|	REGISTER_LONG_CONSTANT("PHP_OUTPUT_HANDLER_PROCESSED", PHP_OUTPUT_HANDLER_PROCESSED, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   74|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_OK", PHP_UPLOAD_ERROR_OK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   75|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_INI_SIZE", PHP_UPLOAD_ERROR_A, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   76|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_FORM_SIZE", PHP_UPLOAD_ERROR_B, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   77|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_PARTIAL", PHP_UPLOAD_ERROR_C, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   78|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_NO_FILE", PHP_UPLOAD_ERROR_D, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   79|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_NO_TMP_DIR", PHP_UPLOAD_ERROR_E, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   80|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_CANT_WRITE", PHP_UPLOAD_ERROR_F, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   81|      2|	REGISTER_LONG_CONSTANT("UPLOAD_ERR_EXTENSION", PHP_UPLOAD_ERROR_X, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   82|       |#if defined(ZEND_VERIFY_TYPE_INFERENCE)
   83|       |	REGISTER_BOOL_CONSTANT("ZEND_VERIFY_TYPE_INFERENCE", ZEND_VERIFY_TYPE_INFERENCE, CONST_PERSISTENT);
   84|       |#endif
   85|      2|	REGISTER_STRING_CONSTANT("PHP_SAPI", sapi_module.name, CONST_PERSISTENT | CONST_NO_FILE_CACHE);
  ------------------
  |  |   65|      2|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  ------------------
   86|      2|	REGISTER_STRING_CONSTANT("PHP_BINARY", PG(php_binary) ? PG(php_binary) : "", CONST_PERSISTENT | CONST_NO_FILE_CACHE);
  ------------------
  |  |   65|      4|#define REGISTER_STRING_CONSTANT(name, str, flags)  zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
  |  |  ------------------
  |  |  |  Branch (65:108): [True: 0, False: 2]
  |  |  ------------------
  ------------------
   87|      2|}

php_socket_strerror:
 1184|     56|{
 1185|     56|#ifndef PHP_WIN32
 1186|     56|# ifdef HAVE_STRERROR_R
 1187|     56|	if (buf == NULL) {
  ------------------
  |  Branch (1187:6): [True: 0, False: 56]
  ------------------
 1188|      0|		char ebuf[1024];
 1189|      0|#  ifdef STRERROR_R_CHAR_P
 1190|      0|		char *errstr = strerror_r(err, ebuf, sizeof(ebuf));
 1191|      0|		buf = estrdup(errstr);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1192|       |#  else
 1193|       |		int res = (int) strerror_r(err, ebuf, sizeof(ebuf));
 1194|       |		if (res == 0) {
 1195|       |			buf = estrdup(ebuf);
 1196|       |		} else {
 1197|       |			buf = estrdup("Unknown error");
 1198|       |		}
 1199|       |#  endif
 1200|     56|	} else {
 1201|     56|#  ifdef STRERROR_R_CHAR_P
 1202|     56|		buf = strerror_r(err, buf, bufsize);
 1203|       |#  else
 1204|       |		int res = (int) strerror_r(err, buf, bufsize);
 1205|       |		if (res != 0) {
 1206|       |			strncpy(buf, "Unknown error", bufsize);
 1207|       |			buf[bufsize?(bufsize-1):0] = 0;
 1208|       |		}
 1209|       |#  endif
 1210|     56|	}
 1211|       |# else
 1212|       |	char *errstr = strerror(err);
 1213|       |	if (buf == NULL) {
 1214|       |		buf = estrdup(errstr);
 1215|       |	} else {
 1216|       |		strncpy(buf, errstr, bufsize);
 1217|       |		buf[bufsize?(bufsize-1):0] = 0;
 1218|       |	}
 1219|       |# endif
 1220|       |#else
 1221|       |	char *sysbuf = php_win32_error_to_msg(err);
 1222|       |	if (!sysbuf[0]) {
 1223|       |		sysbuf = "Unknown Error";
 1224|       |	}
 1225|       |
 1226|       |	if (buf == NULL) {
 1227|       |		buf = estrdup(sysbuf);
 1228|       |	} else {
 1229|       |		strncpy(buf, sysbuf, bufsize);
 1230|       |		buf[bufsize?(bufsize-1):0] = 0;
 1231|       |	}
 1232|       |
 1233|       |	php_win32_error_msg_free(sysbuf);
 1234|       |#endif
 1235|     56|	return buf;
 1236|     56|}

php_output_startup:
  135|      2|{
  136|      2|	ZEND_INIT_MODULE_GLOBALS(output, php_output_init_globals, NULL);
  ------------------
  |  |  275|      2|	globals_ctor(&module_name##_globals);
  ------------------
  137|      2|	zend_hash_init(&php_output_handler_aliases, 8, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  138|      2|	zend_hash_init(&php_output_handler_conflicts, 8, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  139|      2|	zend_hash_init(&php_output_handler_reverse_conflicts, 8, NULL, reverse_conflict_dtor, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  140|      2|	php_output_direct = php_output_stdout;
  141|      2|}
php_output_activate:
  158|  33.5k|{
  159|       |#ifdef ZTS
  160|       |	memset(TSRMG_BULK_STATIC(output_globals_id, zend_output_globals*), 0, sizeof(zend_output_globals));
  161|       |#else
  162|  33.5k|	memset(&output_globals, 0, sizeof(zend_output_globals));
  163|  33.5k|#endif
  164|       |
  165|  33.5k|	zend_stack_init(&OG(handlers), sizeof(php_output_handler *));
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
  166|  33.5k|	OG(flags) |= PHP_OUTPUT_ACTIVATED;
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
              	OG(flags) |= PHP_OUTPUT_ACTIVATED;
  ------------------
  |  |   69|  33.5k|#define PHP_OUTPUT_ACTIVATED		0x100000
  ------------------
  167|       |
  168|  33.5k|	return SUCCESS;
  169|  33.5k|}
php_output_deactivate:
  175|  33.5k|{
  176|  33.5k|	php_output_handler **handler = NULL;
  177|       |
  178|  33.5k|	if ((OG(flags) & PHP_OUTPUT_ACTIVATED)) {
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
              	if ((OG(flags) & PHP_OUTPUT_ACTIVATED)) {
  ------------------
  |  |   69|  33.5k|#define PHP_OUTPUT_ACTIVATED		0x100000
  ------------------
  |  Branch (178:6): [True: 33.5k, False: 0]
  ------------------
  179|  33.5k|		php_output_header();
  180|       |
  181|  33.5k|		OG(flags) ^= PHP_OUTPUT_ACTIVATED;
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
              		OG(flags) ^= PHP_OUTPUT_ACTIVATED;
  ------------------
  |  |   69|  33.5k|#define PHP_OUTPUT_ACTIVATED		0x100000
  ------------------
  182|  33.5k|		OG(active) = NULL;
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
  183|  33.5k|		OG(running) = NULL;
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
  184|       |
  185|       |		/* release all output handlers */
  186|  33.5k|		if (OG(handlers).elements) {
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (186:7): [True: 11, False: 33.5k]
  ------------------
  187|     12|			while ((handler = zend_stack_top(&OG(handlers)))) {
  ------------------
  |  |  152|     12|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (187:11): [True: 1, False: 11]
  ------------------
  188|      1|				zend_stack_del_top(&OG(handlers));
  ------------------
  |  |  152|      1|# define OG(v) (output_globals.v)
  ------------------
  189|       |				/* It's possible to start a new output handler and mark it as active,
  190|       |				 * however this loop will destroy all active handlers. */
  191|      1|				OG(active) = NULL;
  ------------------
  |  |  152|      1|# define OG(v) (output_globals.v)
  ------------------
  192|      1|				ZEND_ASSERT(OG(running) == NULL && "output is deactivated therefore running should stay NULL");
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (192:5): [True: 0, False: 1]
  |  Branch (192:5): [True: 0, False: 0]
  |  Branch (192:5): [True: 1, False: 0]
  |  Branch (192:5): [True: 1, False: 0]
  ------------------
  193|      1|				php_output_handler_free(handler);
  194|      1|			}
  195|     11|		}
  196|  33.5k|		zend_stack_destroy(&OG(handlers));
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
  197|  33.5k|	}
  198|       |
  199|  33.5k|	if (OG(output_start_filename)) {
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 2.18k, False: 31.4k]
  |  |  ------------------
  ------------------
  200|  2.18k|		zend_string_release(OG(output_start_filename));
  ------------------
  |  |  152|  2.18k|# define OG(v) (output_globals.v)
  ------------------
  201|  2.18k|		OG(output_start_filename) = NULL;
  ------------------
  |  |  152|  2.18k|# define OG(v) (output_globals.v)
  ------------------
  202|  2.18k|	}
  203|  33.5k|}
php_output_write:
  240|  7.90M|{
  241|  7.90M|	if (OG(flags) & PHP_OUTPUT_ACTIVATED) {
  ------------------
  |  |  152|  7.90M|# define OG(v) (output_globals.v)
  ------------------
              	if (OG(flags) & PHP_OUTPUT_ACTIVATED) {
  ------------------
  |  |   69|  7.90M|#define PHP_OUTPUT_ACTIVATED		0x100000
  ------------------
  |  Branch (241:6): [True: 7.90M, False: 0]
  ------------------
  242|  7.90M|		php_output_op(PHP_OUTPUT_HANDLER_WRITE, str, len);
  ------------------
  |  |   21|  7.90M|#define PHP_OUTPUT_HANDLER_WRITE	0x00	/* standard passthru */
  ------------------
  243|  7.90M|		return len;
  244|  7.90M|	}
  245|      0|	if (OG(flags) & PHP_OUTPUT_DISABLED) {
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
              	if (OG(flags) & PHP_OUTPUT_DISABLED) {
  ------------------
  |  |   62|      0|#define PHP_OUTPUT_DISABLED				0x02
  ------------------
  |  Branch (245:6): [True: 0, False: 0]
  ------------------
  246|      0|		return 0;
  247|      0|	}
  248|      0|	return php_output_direct(str, len);
  249|      0|}
php_output_end:
  314|      1|{
  315|      1|	if (php_output_stack_pop(PHP_OUTPUT_POP_TRY)) {
  ------------------
  |  |   55|      1|#define PHP_OUTPUT_POP_TRY			0x000
  ------------------
  |  Branch (315:6): [True: 1, False: 0]
  ------------------
  316|      1|		return SUCCESS;
  317|      1|	}
  318|      0|	return FAILURE;
  319|      1|}
php_output_end_all:
  325|  33.5k|{
  326|  33.5k|	while (OG(active) && php_output_stack_pop(PHP_OUTPUT_POP_FORCE));
  ------------------
  |  |  152|  67.1k|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 4, False: 33.5k]
  |  |  ------------------
  ------------------
              	while (OG(active) && php_output_stack_pop(PHP_OUTPUT_POP_FORCE));
  ------------------
  |  |   56|      4|#define PHP_OUTPUT_POP_FORCE		0x001
  ------------------
  |  Branch (326:23): [True: 3, False: 1]
  ------------------
  327|  33.5k|}
php_output_discard:
  333|      6|{
  334|      6|	if (php_output_stack_pop(PHP_OUTPUT_POP_DISCARD|PHP_OUTPUT_POP_TRY)) {
  ------------------
  |  |   57|      6|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
              	if (php_output_stack_pop(PHP_OUTPUT_POP_DISCARD|PHP_OUTPUT_POP_TRY)) {
  ------------------
  |  |   55|      6|#define PHP_OUTPUT_POP_TRY			0x000
  ------------------
  |  Branch (334:6): [True: 6, False: 0]
  ------------------
  335|      6|		return SUCCESS;
  336|      6|	}
  337|      0|	return FAILURE;
  338|      6|}
php_output_discard_all:
  344|     19|{
  345|     19|	while (OG(active)) {
  ------------------
  |  |  152|     19|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 0, False: 19]
  |  |  ------------------
  ------------------
  346|      0|		php_output_stack_pop(PHP_OUTPUT_POP_DISCARD|PHP_OUTPUT_POP_FORCE);
  ------------------
  |  |   57|      0|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
              		php_output_stack_pop(PHP_OUTPUT_POP_DISCARD|PHP_OUTPUT_POP_FORCE);
  ------------------
  |  |   56|      0|#define PHP_OUTPUT_POP_FORCE		0x001
  ------------------
  347|      0|	}
  348|     19|}
php_output_get_level:
  354|     10|{
  355|     10|	return OG(active) ? zend_stack_count(&OG(handlers)) : 0;
  ------------------
  |  |  152|     10|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 10, False: 0]
  |  |  ------------------
  ------------------
              	return OG(active) ? zend_stack_count(&OG(handlers)) : 0;
  ------------------
  |  |  152|     10|# define OG(v) (output_globals.v)
  ------------------
  356|     10|}
php_output_get_contents:
  362|      4|{
  363|      4|	if (OG(active)) {
  ------------------
  |  |  152|      4|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  364|      4|		if (OG(active)->buffer.used) {
  ------------------
  |  |  152|      4|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (364:7): [True: 4, False: 0]
  ------------------
  365|      4|			ZVAL_STRINGL(p, OG(active)->buffer.data, OG(active)->buffer.used);
  ------------------
  |  |  963|      4|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      4|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      4|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      4|		zval *__z = (z);						\
  |  |  |  | 1107|      4|		zend_string *__s = (s);					\
  |  |  |  | 1108|      4|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      4|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      4|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      4|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      4|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      4|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      4|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      4|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  366|      4|		} else {
  367|      0|			ZVAL_EMPTY_STRING(p);
  ------------------
  |  |  972|      0|#define ZVAL_EMPTY_STRING(z) do {				\
  |  |  973|      0|		ZVAL_INTERNED_STR(z, ZSTR_EMPTY_ALLOC());		\
  |  |  ------------------
  |  |  |  | 1098|      0|#define ZVAL_INTERNED_STR(z, s) do {				\
  |  |  |  | 1099|      0|		zval *__z = (z);							\
  |  |  |  | 1100|      0|		zend_string *__s = (s);						\
  |  |  |  | 1101|      0|		Z_STR_P(__z) = __s;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1102|      0|		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX;	\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1103|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1103:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  974|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (974:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  368|      0|		}
  369|      4|		return SUCCESS;
  370|      4|	} else {
  371|      0|		ZVAL_NULL(p);
  ------------------
  |  | 1059|      0|#define ZVAL_NULL(z) do {				\
  |  | 1060|      0|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|      0|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  372|      0|		return FAILURE;
  373|      0|	}
  374|      4|}
php_output_start_default:
  401|      4|{
  402|      4|	php_output_handler *handler;
  403|       |
  404|      4|	handler = php_output_handler_create_internal(ZEND_STRL(php_output_default_handler_name), php_output_handler_default_func, 0, PHP_OUTPUT_HANDLER_STDFLAGS);
  ------------------
  |  |  541|      4|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
              	handler = php_output_handler_create_internal(ZEND_STRL(php_output_default_handler_name), php_output_handler_default_func, 0, PHP_OUTPUT_HANDLER_STDFLAGS);
  ------------------
  |  |   37|      4|#define PHP_OUTPUT_HANDLER_STDFLAGS		0x0070
  ------------------
  405|      4|	if (SUCCESS == php_output_handler_start(handler)) {
  ------------------
  |  Branch (405:6): [True: 4, False: 0]
  ------------------
  406|      4|		return SUCCESS;
  407|      4|	}
  408|      0|	php_output_handler_free(&handler);
  409|      0|	return FAILURE;
  410|      4|}
php_output_start_user:
  431|      7|{
  432|      7|	php_output_handler *handler;
  433|       |
  434|      7|	if (output_handler) {
  ------------------
  |  Branch (434:6): [True: 6, False: 1]
  ------------------
  435|      6|		handler = php_output_handler_create_user(output_handler, chunk_size, flags);
  436|      6|	} else {
  437|      1|		handler = php_output_handler_create_internal(ZEND_STRL(php_output_default_handler_name), php_output_handler_default_func, chunk_size, flags);
  ------------------
  |  |  541|      1|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  438|      1|	}
  439|      7|	if (SUCCESS == php_output_handler_start(handler)) {
  ------------------
  |  Branch (439:6): [True: 7, False: 0]
  ------------------
  440|      7|		return SUCCESS;
  441|      7|	}
  442|      0|	php_output_handler_free(&handler);
  443|      0|	return FAILURE;
  444|      7|}
php_output_handler_create_user:
  466|      6|{
  467|      6|	zend_string *handler_name = NULL;
  468|      6|	char *error = NULL;
  469|      6|	php_output_handler *handler = NULL;
  470|      6|	php_output_handler_alias_ctor_t alias = NULL;
  471|      6|	php_output_handler_user_func_t *user = NULL;
  472|       |
  473|      6|	switch (Z_TYPE_P(output_handler)) {
  ------------------
  |  |  669|      6|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      6|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
  474|      0|		case IS_NULL:
  ------------------
  |  |  607|      0|#define IS_NULL						1
  ------------------
  |  Branch (474:3): [True: 0, False: 6]
  ------------------
  475|      0|			handler = php_output_handler_create_internal(ZEND_STRL(php_output_default_handler_name), php_output_handler_default_func, chunk_size, flags);
  ------------------
  |  |  541|      0|#define ZEND_STRL(str)		(str), (sizeof(str)-1)
  ------------------
  476|      0|			break;
  477|      0|		case IS_STRING:
  ------------------
  |  |  612|      0|#define IS_STRING					6
  ------------------
  |  Branch (477:3): [True: 0, False: 6]
  ------------------
  478|      0|			if (Z_STRLEN_P(output_handler) && (alias = php_output_handler_alias(Z_STRVAL_P(output_handler), Z_STRLEN_P(output_handler)))) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:25): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(output_handler) && (alias = php_output_handler_alias(Z_STRVAL_P(output_handler), Z_STRLEN_P(output_handler)))) {
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			if (Z_STRLEN_P(output_handler) && (alias = php_output_handler_alias(Z_STRVAL_P(output_handler), Z_STRLEN_P(output_handler)))) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (478:38): [True: 0, False: 0]
  ------------------
  479|      0|				handler = alias(Z_STRVAL_P(output_handler), Z_STRLEN_P(output_handler), chunk_size, flags);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              				handler = alias(Z_STRVAL_P(output_handler), Z_STRLEN_P(output_handler), chunk_size, flags);
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  480|      0|				break;
  481|      0|			}
  482|      0|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  483|      6|		default:
  ------------------
  |  Branch (483:3): [True: 6, False: 0]
  ------------------
  484|      6|			user = ecalloc(1, sizeof(php_output_handler_user_func_t));
  ------------------
  |  |  157|      6|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  485|      6|			if (SUCCESS == zend_fcall_info_init(output_handler, 0, &user->fci, &user->fcc, &handler_name, &error)) {
  ------------------
  |  Branch (485:8): [True: 6, False: 0]
  ------------------
  486|      6|				handler = php_output_handler_init(handler_name, chunk_size, PHP_OUTPUT_HANDLER_ABILITY_FLAGS(flags) | PHP_OUTPUT_HANDLER_USER);
  ------------------
  |  |   45|      6|#define PHP_OUTPUT_HANDLER_ABILITY_FLAGS(bitmask) ((bitmask) & ~0xf00f)
  ------------------
              				handler = php_output_handler_init(handler_name, chunk_size, PHP_OUTPUT_HANDLER_ABILITY_FLAGS(flags) | PHP_OUTPUT_HANDLER_USER);
  ------------------
  |  |   31|      6|#define PHP_OUTPUT_HANDLER_USER			0x0001
  ------------------
  487|      6|				ZVAL_COPY(&user->zoh, output_handler);
  ------------------
  |  | 1425|      6|	do {												\
  |  | 1426|      6|		zval *_z1 = (z);								\
  |  | 1427|      6|		const zval *_z2 = (v);							\
  |  | 1428|      6|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      6|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      6|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      6|	do {												\
  |  |  |  | 1408|      6|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      6|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      6|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      6|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      6|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      6|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      6|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      6|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      6|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      6|		}												\
  |  | 1434|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  488|      6|				handler->func.user = user;
  489|      6|			} else {
  490|      0|				efree(user);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|      0|			}
  492|      6|			if (error) {
  ------------------
  |  Branch (492:8): [True: 0, False: 6]
  ------------------
  493|      0|				php_error_docref("ref.outcontrol", E_WARNING, "%s", error);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  494|      0|				efree(error);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|      0|			}
  496|      6|			if (handler_name) {
  ------------------
  |  Branch (496:8): [True: 6, False: 0]
  ------------------
  497|      6|				zend_string_release_ex(handler_name, 0);
  498|      6|			}
  499|      6|	}
  500|       |
  501|      6|	return handler;
  502|      6|}
php_output_handler_create_internal:
  508|      5|{
  509|      5|	php_output_handler *handler;
  510|      5|	zend_string *str = zend_string_init(name, name_len, 0);
  511|       |
  512|      5|	handler = php_output_handler_init(str, chunk_size, PHP_OUTPUT_HANDLER_ABILITY_FLAGS(flags) | PHP_OUTPUT_HANDLER_INTERNAL);
  ------------------
  |  |   45|      5|#define PHP_OUTPUT_HANDLER_ABILITY_FLAGS(bitmask) ((bitmask) & ~0xf00f)
  ------------------
              	handler = php_output_handler_init(str, chunk_size, PHP_OUTPUT_HANDLER_ABILITY_FLAGS(flags) | PHP_OUTPUT_HANDLER_INTERNAL);
  ------------------
  |  |   30|      5|#define PHP_OUTPUT_HANDLER_INTERNAL		0x0000
  ------------------
  513|      5|	handler->func.internal = output_handler;
  514|      5|	zend_string_release_ex(str, 0);
  515|       |
  516|      5|	return handler;
  517|      5|}
php_output_handler_start:
  535|     11|{
  536|     11|	HashTable *rconflicts;
  537|     11|	php_output_handler_conflict_check_t conflict;
  538|       |
  539|     11|	if (!(OG(flags) & PHP_OUTPUT_ACTIVATED)) {
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
              	if (!(OG(flags) & PHP_OUTPUT_ACTIVATED)) {
  ------------------
  |  |   69|     11|#define PHP_OUTPUT_ACTIVATED		0x100000
  ------------------
  |  Branch (539:6): [True: 0, False: 11]
  ------------------
  540|      0|		return FAILURE;
  541|      0|	}
  542|       |
  543|     11|	if (php_output_lock_error(PHP_OUTPUT_HANDLER_START) || !handler) {
  ------------------
  |  |   22|     11|#define PHP_OUTPUT_HANDLER_START	0x01	/* start */
  ------------------
  |  Branch (543:6): [True: 0, False: 11]
  |  Branch (543:57): [True: 0, False: 11]
  ------------------
  544|      0|		return FAILURE;
  545|      0|	}
  546|     11|	if (NULL != (conflict = zend_hash_find_ptr(&php_output_handler_conflicts, handler->name))) {
  ------------------
  |  Branch (546:6): [True: 0, False: 11]
  ------------------
  547|      0|		if (SUCCESS != conflict(ZSTR_VAL(handler->name), ZSTR_LEN(handler->name))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		if (SUCCESS != conflict(ZSTR_VAL(handler->name), ZSTR_LEN(handler->name))) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (547:7): [True: 0, False: 0]
  ------------------
  548|      0|			return FAILURE;
  549|      0|		}
  550|      0|	}
  551|     11|	if (NULL != (rconflicts = zend_hash_find_ptr(&php_output_handler_reverse_conflicts, handler->name))) {
  ------------------
  |  Branch (551:6): [True: 0, False: 11]
  ------------------
  552|      0|		ZEND_HASH_PACKED_FOREACH_PTR(rconflicts, conflict) {
  ------------------
  |  | 1502|      0|	ZEND_HASH_PACKED_FOREACH(ht); \
  |  |  ------------------
  |  |  |  | 1480|      0|#define ZEND_HASH_PACKED_FOREACH(_ht) ZEND_HASH_PACKED_FOREACH_FROM(_ht, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1470|      0|#define ZEND_HASH_PACKED_FOREACH_FROM(_ht, _from) do { \
  |  |  |  |  |  | 1471|      0|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1472|      0|		zend_ulong _idx = (_from); \
  |  |  |  |  |  | 1473|      0|		zval *_z = __ht->arPacked + (_from); \
  |  |  |  |  |  | 1474|      0|		zval *_end = __ht->arPacked + __ht->nNumUsed; \
  |  |  |  |  |  | 1475|      0|		ZEND_ASSERT(HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1476|      0|		for (;_z != _end; _z++, _idx++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1476:9): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1477|      0|			(void) _idx; \
  |  |  |  |  |  | 1478|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1503|      0|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      0|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      0|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (552:3): [True: 0, False: 0]
  |  Branch (552:3): [True: 0, False: 0]
  ------------------
  553|      0|			if (SUCCESS != conflict(ZSTR_VAL(handler->name), ZSTR_LEN(handler->name))) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              			if (SUCCESS != conflict(ZSTR_VAL(handler->name), ZSTR_LEN(handler->name))) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (553:8): [True: 0, False: 0]
  ------------------
  554|      0|				return FAILURE;
  555|      0|			}
  556|      0|		} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  557|      0|	}
  558|       |	/* zend_stack_push returns stack level */
  559|     11|	handler->level = zend_stack_push(&OG(handlers), &handler);
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
  560|     11|	OG(active) = handler;
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
  561|     11|	return SUCCESS;
  562|     11|}
php_output_handler_dtor:
  702|     11|{
  703|     11|	if (handler->name) {
  ------------------
  |  Branch (703:6): [True: 11, False: 0]
  ------------------
  704|     11|		zend_string_release_ex(handler->name, 0);
  705|     11|	}
  706|     11|	if (handler->buffer.data) {
  ------------------
  |  Branch (706:6): [True: 10, False: 1]
  ------------------
  707|     10|		efree(handler->buffer.data);
  ------------------
  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  708|     10|	}
  709|     11|	if (handler->flags & PHP_OUTPUT_HANDLER_USER) {
  ------------------
  |  |   31|     11|#define PHP_OUTPUT_HANDLER_USER			0x0001
  ------------------
  |  Branch (709:6): [True: 6, False: 5]
  ------------------
  710|      6|		zval_ptr_dtor(&handler->func.user->zoh);
  711|      6|		efree(handler->func.user);
  ------------------
  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  712|      6|	}
  713|     11|	if (handler->dtor && handler->opaq) {
  ------------------
  |  Branch (713:6): [True: 0, False: 11]
  |  Branch (713:23): [True: 0, False: 0]
  ------------------
  714|      0|		handler->dtor(handler->opaq);
  715|      0|	}
  716|     11|	memset(handler, 0, sizeof(*handler));
  717|     11|}
php_output_handler_free:
  723|     11|{
  724|     11|	php_output_handler *handler = *h;
  725|     11|	if (handler) {
  ------------------
  |  Branch (725:6): [True: 11, False: 0]
  ------------------
  726|     11|		*h = NULL;
  727|     11|		php_output_handler_dtor(handler);
  728|       |		efree(handler);
  ------------------
  |  |  154|     11|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  729|     11|	}
  730|     11|}
php_output_set_implicit_flush:
  736|  33.5k|{
  737|  33.5k|	if (flush) {
  ------------------
  |  Branch (737:6): [True: 33.5k, False: 0]
  ------------------
  738|  33.5k|		OG(flags) |= PHP_OUTPUT_IMPLICITFLUSH;
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
              		OG(flags) |= PHP_OUTPUT_IMPLICITFLUSH;
  ------------------
  |  |   61|  33.5k|#define PHP_OUTPUT_IMPLICITFLUSH		0x01
  ------------------
  739|  33.5k|	} else {
  740|      0|		OG(flags) &= ~PHP_OUTPUT_IMPLICITFLUSH;
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
              		OG(flags) &= ~PHP_OUTPUT_IMPLICITFLUSH;
  ------------------
  |  |   61|      0|#define PHP_OUTPUT_IMPLICITFLUSH		0x01
  ------------------
  741|      0|	}
  742|  33.5k|}
php_output_get_start_filename:
  748|      1|{
  749|      1|	return OG(output_start_filename) ? ZSTR_VAL(OG(output_start_filename)) : NULL;
  ------------------
  |  |  152|      1|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	return OG(output_start_filename) ? ZSTR_VAL(OG(output_start_filename)) : NULL;
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  750|      1|}
php_output_get_start_lineno:
  756|      1|{
  757|      1|	return OG(output_start_lineno);
  ------------------
  |  |  152|      1|# define OG(v) (output_globals.v)
  ------------------
  758|      1|}
zif_ob_start:
 1371|      7|{
 1372|      7|	zval *output_handler = NULL;
 1373|      7|	zend_long chunk_size = 0;
 1374|      7|	zend_long flags = PHP_OUTPUT_HANDLER_STDFLAGS;
  ------------------
  |  |   37|      7|#define PHP_OUTPUT_HANDLER_STDFLAGS		0x0070
  ------------------
 1375|       |
 1376|      7|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "|zll", &output_handler, &chunk_size, &flags) == FAILURE) {
  ------------------
  |  |  529|      7|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|      7|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|      7|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1376:6): [True: 0, False: 7]
  ------------------
 1377|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1377:3): [True: 0, False: 0]
  |  Branch (1377:3): [True: 0, False: 0]
  ------------------
 1378|      0|	}
 1379|       |
 1380|      7|	if (chunk_size < 0) {
  ------------------
  |  Branch (1380:6): [True: 0, False: 7]
  ------------------
 1381|      0|		chunk_size = 0;
 1382|      0|	}
 1383|       |
 1384|      7|	if (php_output_start_user(output_handler, chunk_size, flags) == FAILURE) {
  ------------------
  |  Branch (1384:6): [True: 0, False: 7]
  ------------------
 1385|      0|		php_error_docref("ref.outcontrol", E_NOTICE, "Failed to create buffer");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1386|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1387|      0|	}
 1388|      7|	RETURN_TRUE;
  ------------------
  |  | 1070|      7|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|      7|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|      7|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|      7|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      7|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      7|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      7|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|      7|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1389|      7|}
zif_ob_end_clean:
 1444|      3|{
 1445|      3|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      3|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      3|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      3|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1446|       |
 1447|      3|	if (!OG(active)) {
  ------------------
  |  |  152|      3|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (1447:6): [True: 1, False: 2]
  ------------------
 1448|      1|		php_error_docref("ref.outcontrol", E_NOTICE, "Failed to delete buffer. No buffer to delete");
  ------------------
  |  |   25|      1|#define E_NOTICE			(1<<3L)
  ------------------
 1449|      1|		RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1450|      1|	}
 1451|       |
 1452|      2|	RETURN_BOOL(SUCCESS == php_output_discard());
  ------------------
  |  | 1046|      2|#define RETURN_BOOL(b)					do { RETVAL_BOOL(b); return; } while (0)
  |  |  ------------------
  |  |  |  | 1020|      2|#define RETVAL_BOOL(b)					ZVAL_BOOL(return_value, b)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1071|      2|#define ZVAL_BOOL(z, b) do {			\
  |  |  |  |  |  | 1072|      2|		Z_TYPE_INFO_P(z) =				\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1073|      2|			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|      2|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			(b) ? IS_TRUE : IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      2|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1073:4): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1074|      2|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1074:11): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1046:66): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1453|      2|}
zif_ob_get_clean:
 1474|      1|{
 1475|      1|	ZEND_PARSE_PARAMETERS_NONE();
  ------------------
  |  | 1631|      1|#define ZEND_PARSE_PARAMETERS_NONE() do { \
  |  | 1632|      1|		if (UNEXPECTED(ZEND_NUM_ARGS() != 0)) { \
  |  |  ------------------
  |  |  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1633|      0|			zend_wrong_parameters_none_error(); \
  |  | 1634|      0|			return; \
  |  | 1635|      0|		} \
  |  | 1636|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1636:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1476|       |
 1477|      1|	if(!OG(active)) {
  ------------------
  |  |  152|      1|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (1477:5): [True: 0, False: 1]
  ------------------
 1478|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1479|      0|	}
 1480|       |
 1481|      1|	if (php_output_get_contents(return_value) == FAILURE) {
  ------------------
  |  Branch (1481:6): [True: 0, False: 1]
  ------------------
 1482|      0|		php_error_docref("ref.outcontrol", E_NOTICE, "Failed to delete buffer. No buffer to delete");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
 1483|      0|		RETURN_FALSE;
  ------------------
  |  | 1069|      0|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      0|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      0|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      0|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      0|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1484|      0|	}
 1485|       |
 1486|      1|	if (SUCCESS != php_output_discard()) {
  ------------------
  |  Branch (1486:6): [True: 0, False: 1]
  ------------------
 1487|      0|		php_error_docref("ref.outcontrol", E_NOTICE, "Failed to delete buffer of %s (%d)", ZSTR_VAL(OG(active)->name), OG(active)->level);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              		php_error_docref("ref.outcontrol", E_NOTICE, "Failed to delete buffer of %s (%d)", ZSTR_VAL(OG(active)->name), OG(active)->level);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              		php_error_docref("ref.outcontrol", E_NOTICE, "Failed to delete buffer of %s (%d)", ZSTR_VAL(OG(active)->name), OG(active)->level);
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
 1488|      0|	}
 1489|      1|}
output.c:php_output_init_globals:
   76|      2|{
   77|      2|	memset(G, 0, sizeof(*G));
   78|      2|}
output.c:php_output_header:
  101|  7.93M|{
  102|  7.93M|	if (!SG(headers_sent)) {
  ------------------
  |  |  158|  7.93M|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (102:6): [True: 33.5k, False: 7.90M]
  ------------------
  103|  33.5k|		if (!OG(output_start_filename)) {
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (103:7): [True: 33.5k, False: 0]
  ------------------
  104|  33.5k|			if (zend_is_compiling()) {
  ------------------
  |  Branch (104:8): [True: 0, False: 33.5k]
  ------------------
  105|      0|				OG(output_start_filename) = zend_get_compiled_filename();
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
  106|      0|				OG(output_start_lineno) = zend_get_compiled_lineno();
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
  107|  33.5k|			} else if (zend_is_executing()) {
  ------------------
  |  Branch (107:15): [True: 2.18k, False: 31.4k]
  ------------------
  108|  2.18k|				OG(output_start_filename) = zend_get_executed_filename_ex();
  ------------------
  |  |  152|  2.18k|# define OG(v) (output_globals.v)
  ------------------
  109|  2.18k|				OG(output_start_lineno) = zend_get_executed_lineno();
  ------------------
  |  |  152|  2.18k|# define OG(v) (output_globals.v)
  ------------------
  110|  2.18k|			}
  111|  33.5k|			if (OG(output_start_filename)) {
  ------------------
  |  |  152|  33.5k|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 2.18k, False: 31.4k]
  |  |  ------------------
  ------------------
  112|  2.18k|				zend_string_addref(OG(output_start_filename));
  ------------------
  |  |  152|  2.18k|# define OG(v) (output_globals.v)
  ------------------
  113|  2.18k|			}
  114|       |#if PHP_OUTPUT_DEBUG
  115|       |			fprintf(stderr, "!!! output started at: %s (%d)\n",
  116|       |				ZSTR_VAL(OG(output_start_filename)), OG(output_start_lineno));
  117|       |#endif
  118|  33.5k|		}
  119|  33.5k|		if (!php_header()) {
  ------------------
  |  Branch (119:7): [True: 0, False: 33.5k]
  ------------------
  120|      0|			OG(flags) |= PHP_OUTPUT_DISABLED;
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
              			OG(flags) |= PHP_OUTPUT_DISABLED;
  ------------------
  |  |   62|      0|#define PHP_OUTPUT_DISABLED				0x02
  ------------------
  121|      0|		}
  122|  33.5k|	}
  123|  7.93M|}
output.c:php_output_lock_error:
  764|  7.90M|{
  765|       |	/* if there's no ob active, ob has been stopped */
  766|  7.90M|	if (op && OG(active) && OG(running)) {
  ------------------
  |  |  152|  7.90M|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 11, False: 11]
  |  |  ------------------
  ------------------
              	if (op && OG(active) && OG(running)) {
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  |  Branch (766:6): [True: 22, False: 7.90M]
  ------------------
  767|       |		/* fatal error */
  768|      0|		php_output_deactivate();
  769|      0|		php_error_docref("ref.outcontrol", E_ERROR, "Cannot use output buffering in output buffering display handlers");
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  770|      0|		return true;
  771|      0|	}
  772|  7.90M|	return false;
  773|  7.90M|}
output.c:php_output_context_init:
  779|  7.90M|{
  780|  7.90M|	memset(context, 0, sizeof(php_output_context));
  781|  7.90M|	context->op = op;
  782|  7.90M|}
output.c:php_output_context_dtor:
  846|  7.90M|{
  847|  7.90M|	if (context->in.free && context->in.data) {
  ------------------
  |  Branch (847:6): [True: 0, False: 7.90M]
  |  Branch (847:26): [True: 0, False: 0]
  ------------------
  848|      0|		efree(context->in.data);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  849|      0|		context->in.data = NULL;
  850|      0|	}
  851|  7.90M|	if (context->out.free && context->out.data) {
  ------------------
  |  Branch (851:6): [True: 1, False: 7.90M]
  |  Branch (851:27): [True: 1, False: 0]
  ------------------
  852|      1|		efree(context->out.data);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  853|       |		context->out.data = NULL;
  854|      1|	}
  855|  7.90M|}
output.c:php_output_handler_init:
  861|     11|{
  862|     11|	php_output_handler *handler;
  863|       |
  864|     11|	handler = ecalloc(1, sizeof(php_output_handler));
  ------------------
  |  |  157|     11|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  865|     11|	handler->name = zend_string_copy(name);
  866|     11|	handler->size = chunk_size;
  867|     11|	handler->flags = flags;
  868|     11|	handler->buffer.size = PHP_OUTPUT_HANDLER_INITBUF_SIZE(chunk_size);
  ------------------
  |  |   82|     11|#define PHP_OUTPUT_HANDLER_INITBUF_SIZE(s) \
  |  |   83|     11|( ((s) > 0) ? \
  |  |  ------------------
  |  |  |  Branch (83:3): [True: 2, False: 9]
  |  |  ------------------
  |  |   84|     11|	ZEND_MM_ALIGNED_SIZE_EX(s, PHP_OUTPUT_HANDLER_ALIGNTO_SIZE) : \
  |  |  ------------------
  |  |  |  |   37|      2|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  ------------------
  |  |   85|     11|	PHP_OUTPUT_HANDLER_DEFAULT_SIZE \
  |  |  ------------------
  |  |  |  |   88|      9|#define PHP_OUTPUT_HANDLER_DEFAULT_SIZE		0x4000
  |  |  ------------------
  |  |   86|     11|)
  ------------------
  869|     11|	handler->buffer.data = emalloc(handler->buffer.size);
  ------------------
  |  |  150|     11|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     11|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     11|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     11|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     11|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  870|       |
  871|     11|	return handler;
  872|     11|}
output.c:php_output_handler_op:
  906|  2.88k|{
  907|  2.88k|	php_output_handler_status_t status;
  908|  2.88k|	int original_op = context->op;
  909|       |
  910|       |#if PHP_OUTPUT_DEBUG
  911|       |	fprintf(stderr, ">>> op(%d, "
  912|       |					"handler=%p, "
  913|       |					"name=%s, "
  914|       |					"flags=%d, "
  915|       |					"buffer.data=%s, "
  916|       |					"buffer.used=%zu, "
  917|       |					"buffer.size=%zu, "
  918|       |					"in.data=%s, "
  919|       |					"in.used=%zu)\n",
  920|       |			context->op,
  921|       |			handler,
  922|       |			handler->name,
  923|       |			handler->flags,
  924|       |			handler->buffer.used?handler->buffer.data:"",
  925|       |			handler->buffer.used,
  926|       |			handler->buffer.size,
  927|       |			context->in.used?context->in.data:"",
  928|       |			context->in.used
  929|       |	);
  930|       |#endif
  931|       |
  932|  2.88k|	if (handler->flags & PHP_OUTPUT_HANDLER_DISABLED) {
  ------------------
  |  |   41|  2.88k|#define PHP_OUTPUT_HANDLER_DISABLED		0x2000
  ------------------
  |  Branch (932:6): [True: 0, False: 2.88k]
  ------------------
  933|      0|		return PHP_OUTPUT_HANDLER_FAILURE;
  934|      0|	}
  935|       |
  936|  2.88k|	if (php_output_lock_error(context->op)) {
  ------------------
  |  Branch (936:6): [True: 0, False: 2.88k]
  ------------------
  937|       |		/* fatal error */
  938|      0|		return PHP_OUTPUT_HANDLER_FAILURE;
  939|      0|	}
  940|       |
  941|       |	/* php_output_lock_error() doesn't fail for PHP_OUTPUT_HANDLER_WRITE but
  942|       |	 * anything that gets written will silently be discarded, remember that we
  943|       |	 * tried to write so a deprecation warning can be emitted at the end. */
  944|  2.88k|	if (context->op == PHP_OUTPUT_HANDLER_WRITE && OG(active) && OG(running)) {
  ------------------
  |  |   21|  5.77k|#define PHP_OUTPUT_HANDLER_WRITE	0x00	/* standard passthru */
  ------------------
              	if (context->op == PHP_OUTPUT_HANDLER_WRITE && OG(active) && OG(running)) {
  ------------------
  |  |  152|  5.76k|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 2.87k, False: 0]
  |  |  ------------------
  ------------------
              	if (context->op == PHP_OUTPUT_HANDLER_WRITE && OG(active) && OG(running)) {
  ------------------
  |  |  152|  2.87k|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 1, False: 2.87k]
  |  |  ------------------
  ------------------
  |  Branch (944:6): [True: 2.87k, False: 11]
  ------------------
  945|      1|		handler->flags |= PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT;
  ------------------
  |  |   43|      1|#define PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT 0x8000
  ------------------
  946|      1|	}
  947|       |
  948|  2.88k|	bool still_have_handler = true;
  949|       |	/* storable? */
  950|  2.88k|	if (php_output_handler_append(handler, &context->in) && !context->op) {
  ------------------
  |  Branch (950:6): [True: 2.88k, False: 0]
  |  Branch (950:58): [True: 2.87k, False: 11]
  ------------------
  951|  2.87k|		context->op = original_op;
  952|  2.87k|		return PHP_OUTPUT_HANDLER_NO_DATA;
  953|  2.87k|	} else {
  954|       |		/* need to start? */
  955|     11|		if (!(handler->flags & PHP_OUTPUT_HANDLER_STARTED)) {
  ------------------
  |  |   40|     11|#define PHP_OUTPUT_HANDLER_STARTED		0x1000
  ------------------
  |  Branch (955:7): [True: 11, False: 0]
  ------------------
  956|     11|			context->op |= PHP_OUTPUT_HANDLER_START;
  ------------------
  |  |   22|     11|#define PHP_OUTPUT_HANDLER_START	0x01	/* start */
  ------------------
  957|     11|		}
  958|       |
  959|     11|		OG(running) = handler;
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
  960|     11|		if (handler->flags & PHP_OUTPUT_HANDLER_USER) {
  ------------------
  |  |   31|     11|#define PHP_OUTPUT_HANDLER_USER			0x0001
  ------------------
  |  Branch (960:7): [True: 6, False: 5]
  ------------------
  961|      6|			zval ob_args[2];
  962|      6|			zval retval;
  963|       |
  964|       |			/* ob_data */
  965|      6|			ZVAL_STRINGL(&ob_args[0], handler->buffer.data, handler->buffer.used);
  ------------------
  |  |  963|      6|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      6|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      6|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      6|		zval *__z = (z);						\
  |  |  |  | 1107|      6|		zend_string *__s = (s);					\
  |  |  |  | 1108|      6|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      6|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      6|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      6|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      6|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      6|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      6|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      6|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      6|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  966|       |			/* ob_mode */
  967|      6|			ZVAL_LONG(&ob_args[1], (zend_long) context->op);
  ------------------
  |  | 1076|      6|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      6|		zval *__z = (z);				\
  |  | 1078|      6|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      6|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      6|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      6|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      6|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      6|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      6|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      6|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 6]
  |  |  ------------------
  ------------------
  968|       |
  969|       |			/* Set FCI info */
  970|      6|			handler->func.user->fci.param_count = 2;
  971|      6|			handler->func.user->fci.params = ob_args;
  972|      6|			handler->func.user->fci.retval = &retval;
  973|      6|			handler->func.user->fci.consumed_args = zend_fci_consumed_arg(0);
  974|       |
  975|      6|			if (SUCCESS == zend_call_function(&handler->func.user->fci, &handler->func.user->fcc) && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  668|      5|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (SUCCESS == zend_call_function(&handler->func.user->fci, &handler->func.user->fcc) && Z_TYPE(retval) != IS_UNDEF) {
  ------------------
  |  |  606|      5|#define IS_UNDEF					0
  ------------------
  |  Branch (975:8): [True: 5, False: 1]
  |  Branch (975:93): [True: 4, False: 1]
  ------------------
  976|      4|				if (handler->flags & PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT) {
  ------------------
  |  |   43|      4|#define PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT 0x8000
  ------------------
  |  Branch (976:9): [True: 0, False: 4]
  ------------------
  977|       |					// Make sure that we don't get lost in the current output buffer
  978|       |					// by disabling it
  979|      0|					handler->flags |= PHP_OUTPUT_HANDLER_DISABLED;
  ------------------
  |  |   41|      0|#define PHP_OUTPUT_HANDLER_DISABLED		0x2000
  ------------------
  980|      0|					if (handler->flags & PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT) {
  ------------------
  |  |   43|      0|#define PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT 0x8000
  ------------------
  |  Branch (980:10): [True: 0, False: 0]
  ------------------
  981|       |						// The handler might not always produce output
  982|      0|						handler->flags &= ~PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT;
  ------------------
  |  |   43|      0|#define PHP_OUTPUT_HANDLER_PRODUCED_OUTPUT 0x8000
  ------------------
  983|      0|						php_error_docref(
  984|      0|							NULL,
  985|      0|							E_DEPRECATED,
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  986|      0|							"Producing output from user output handler %s is deprecated",
  987|      0|							ZSTR_VAL(handler->name)
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  988|      0|						);
  989|      0|					}
  990|       |
  991|       |					// Check if the handler is still in the list of handlers to
  992|       |					// determine if the PHP_OUTPUT_HANDLER_DISABLED flag can
  993|       |					// be removed
  994|      0|					still_have_handler = false;
  995|      0|					int handler_count = php_output_get_level();
  996|      0|					if (handler_count) {
  ------------------
  |  Branch (996:10): [True: 0, False: 0]
  ------------------
  997|      0|						php_output_handler **handlers = (php_output_handler **) zend_stack_base(&OG(handlers));
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
  998|      0|						for (int handler_num = 0; handler_num < handler_count; ++handler_num) {
  ------------------
  |  Branch (998:33): [True: 0, False: 0]
  ------------------
  999|      0|							php_output_handler *curr_handler = handlers[handler_num];
 1000|      0|							if (curr_handler == handler) {
  ------------------
  |  Branch (1000:12): [True: 0, False: 0]
  ------------------
 1001|      0|								handler->flags &= (~PHP_OUTPUT_HANDLER_DISABLED);
  ------------------
  |  |   41|      0|#define PHP_OUTPUT_HANDLER_DISABLED		0x2000
  ------------------
 1002|      0|								still_have_handler = true;
 1003|      0|								break;
 1004|      0|							}
 1005|      0|						}
 1006|      0|					}
 1007|      0|				}
 1008|      4|				if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              				if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  608|      4|#define IS_FALSE					2
  ------------------
  |  Branch (1008:9): [True: 0, False: 4]
  ------------------
 1009|       |					/* call failed, pass internal buffer along */
 1010|      0|					status = PHP_OUTPUT_HANDLER_FAILURE;
 1011|      4|				} else {
 1012|       |					/* user handler may have returned TRUE */
 1013|      4|					status = PHP_OUTPUT_HANDLER_NO_DATA;
 1014|      4|					if (Z_TYPE(retval) != IS_FALSE && Z_TYPE(retval) != IS_TRUE) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					if (Z_TYPE(retval) != IS_FALSE && Z_TYPE(retval) != IS_TRUE) {
  ------------------
  |  |  608|      8|#define IS_FALSE					2
  ------------------
              					if (Z_TYPE(retval) != IS_FALSE && Z_TYPE(retval) != IS_TRUE) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              					if (Z_TYPE(retval) != IS_FALSE && Z_TYPE(retval) != IS_TRUE) {
  ------------------
  |  |  609|      4|#define IS_TRUE						3
  ------------------
  |  Branch (1014:10): [True: 4, False: 0]
  |  Branch (1014:40): [True: 4, False: 0]
  ------------------
 1015|      4|						convert_to_string(&retval);
  ------------------
  |  |  390|      4|#define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  669|      4|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define convert_to_string(op) if (Z_TYPE_P(op) != IS_STRING) { _convert_to_string((op)); }
  |  |  ------------------
  |  |  |  |  612|      4|#define IS_STRING					6
  |  |  ------------------
  |  |  |  Branch (390:35): [True: 2, False: 2]
  |  |  ------------------
  ------------------
 1016|      4|						if (Z_STRLEN(retval)) {
  ------------------
  |  |  987|      4|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      4|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:25): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1017|      0|							context->out.data = estrndup(Z_STRVAL(retval), Z_STRLEN(retval));
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1018|      0|							context->out.used = Z_STRLEN(retval);
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
 1019|      0|							context->out.free = 1;
 1020|      0|							status = PHP_OUTPUT_HANDLER_SUCCESS;
 1021|      0|						}
 1022|      4|					}
 1023|      4|				}
 1024|      4|			} else {
 1025|       |				/* call failed, pass internal buffer along */
 1026|      2|				status = PHP_OUTPUT_HANDLER_FAILURE;
 1027|      2|			}
 1028|       |
 1029|       |			/* Free arguments and return value */
 1030|      6|			zval_ptr_dtor(&ob_args[0]);
 1031|      6|			zval_ptr_dtor(&ob_args[1]);
 1032|      6|			zval_ptr_dtor(&retval);
 1033|       |
 1034|      6|		} else {
 1035|       |
 1036|      5|			php_output_context_feed(context, handler->buffer.data, handler->buffer.size, handler->buffer.used, 0);
 1037|       |
 1038|      5|			if (SUCCESS == handler->func.internal(&handler->opaq, context)) {
  ------------------
  |  Branch (1038:8): [True: 5, False: 0]
  ------------------
 1039|      5|				if (context->out.used) {
  ------------------
  |  Branch (1039:9): [True: 5, False: 0]
  ------------------
 1040|      5|					status = PHP_OUTPUT_HANDLER_SUCCESS;
 1041|      5|				} else {
 1042|      0|					status = PHP_OUTPUT_HANDLER_NO_DATA;
 1043|      0|				}
 1044|      5|			} else {
 1045|      0|				status = PHP_OUTPUT_HANDLER_FAILURE;
 1046|      0|			}
 1047|      5|		}
 1048|     11|		if (still_have_handler) {
  ------------------
  |  Branch (1048:7): [True: 10, False: 1]
  ------------------
 1049|     10|			handler->flags |= PHP_OUTPUT_HANDLER_STARTED;
  ------------------
  |  |   40|     10|#define PHP_OUTPUT_HANDLER_STARTED		0x1000
  ------------------
 1050|     10|		}
 1051|     11|		OG(running) = NULL;
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
 1052|     11|	}
 1053|       |
 1054|     11|	if (!still_have_handler) {
  ------------------
  |  Branch (1054:6): [True: 0, False: 11]
  ------------------
 1055|       |		// Handler and context will have both already been freed
 1056|      0|		return status;
 1057|      0|	}
 1058|       |
 1059|     11|	switch (status) {
  ------------------
  |  Branch (1059:10): [True: 10, False: 1]
  ------------------
 1060|      1|		case PHP_OUTPUT_HANDLER_FAILURE:
  ------------------
  |  Branch (1060:3): [True: 1, False: 10]
  ------------------
 1061|       |			/* disable this handler */
 1062|      1|			handler->flags |= PHP_OUTPUT_HANDLER_DISABLED;
  ------------------
  |  |   41|      1|#define PHP_OUTPUT_HANDLER_DISABLED		0x2000
  ------------------
 1063|       |			/* discard any output */
 1064|      1|			if (context->out.data && context->out.free) {
  ------------------
  |  Branch (1064:8): [True: 0, False: 1]
  |  Branch (1064:29): [True: 0, False: 0]
  ------------------
 1065|      0|				efree(context->out.data);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1066|      0|			}
 1067|       |			/* returns handlers buffer */
 1068|      1|			context->out.data = handler->buffer.data;
 1069|      1|			context->out.used = handler->buffer.used;
 1070|      1|			context->out.free = 1;
 1071|      1|			handler->buffer.data = NULL;
 1072|      1|			handler->buffer.used = 0;
 1073|      1|			handler->buffer.size = 0;
 1074|      1|			break;
 1075|      4|		case PHP_OUTPUT_HANDLER_NO_DATA:
  ------------------
  |  Branch (1075:3): [True: 4, False: 7]
  ------------------
 1076|       |			/* handler ate all */
 1077|      4|			php_output_context_reset(context);
 1078|      4|			ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      4|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1079|      9|		case PHP_OUTPUT_HANDLER_SUCCESS:
  ------------------
  |  Branch (1079:3): [True: 5, False: 6]
  ------------------
 1080|       |			/* no more buffered data */
 1081|      9|			handler->buffer.used = 0;
 1082|      9|			handler->flags |= PHP_OUTPUT_HANDLER_PROCESSED;
  ------------------
  |  |   42|      9|#define PHP_OUTPUT_HANDLER_PROCESSED	0x4000
  ------------------
 1083|      9|			break;
 1084|     11|	}
 1085|       |
 1086|     10|	context->op = original_op;
 1087|     10|	return status;
 1088|     11|}
output.c:php_output_handler_append:
  878|  2.88k|{
  879|  2.88k|	if (buf->used) {
  ------------------
  |  Branch (879:6): [True: 2.87k, False: 15]
  ------------------
  880|  2.87k|		OG(flags) |= PHP_OUTPUT_WRITTEN;
  ------------------
  |  |  152|  2.87k|# define OG(v) (output_globals.v)
  ------------------
              		OG(flags) |= PHP_OUTPUT_WRITTEN;
  ------------------
  |  |   63|  2.87k|#define PHP_OUTPUT_WRITTEN				0x04
  ------------------
  881|       |		/* store it away */
  882|  2.87k|		if ((handler->buffer.size - handler->buffer.used) <= buf->used) {
  ------------------
  |  Branch (882:7): [True: 1, False: 2.87k]
  ------------------
  883|      1|			size_t grow_int = PHP_OUTPUT_HANDLER_INITBUF_SIZE(handler->size);
  ------------------
  |  |   82|      1|#define PHP_OUTPUT_HANDLER_INITBUF_SIZE(s) \
  |  |   83|      1|( ((s) > 0) ? \
  |  |  ------------------
  |  |  |  Branch (83:3): [True: 0, False: 1]
  |  |  ------------------
  |  |   84|      1|	ZEND_MM_ALIGNED_SIZE_EX(s, PHP_OUTPUT_HANDLER_ALIGNTO_SIZE) : \
  |  |  ------------------
  |  |  |  |   37|      0|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  ------------------
  |  |   85|      1|	PHP_OUTPUT_HANDLER_DEFAULT_SIZE \
  |  |  ------------------
  |  |  |  |   88|      1|#define PHP_OUTPUT_HANDLER_DEFAULT_SIZE		0x4000
  |  |  ------------------
  |  |   86|      1|)
  ------------------
  884|      1|			size_t grow_buf = PHP_OUTPUT_HANDLER_INITBUF_SIZE(buf->used - (handler->buffer.size - handler->buffer.used));
  ------------------
  |  |   82|      1|#define PHP_OUTPUT_HANDLER_INITBUF_SIZE(s) \
  |  |   83|      1|( ((s) > 0) ? \
  |  |  ------------------
  |  |  |  Branch (83:3): [True: 1, False: 0]
  |  |  ------------------
  |  |   84|      1|	ZEND_MM_ALIGNED_SIZE_EX(s, PHP_OUTPUT_HANDLER_ALIGNTO_SIZE) : \
  |  |  ------------------
  |  |  |  |   37|      1|	(((size) + ((alignment) - 1)) & ~((alignment) - 1))
  |  |  ------------------
  |  |   85|      1|	PHP_OUTPUT_HANDLER_DEFAULT_SIZE \
  |  |  ------------------
  |  |  |  |   88|      0|#define PHP_OUTPUT_HANDLER_DEFAULT_SIZE		0x4000
  |  |  ------------------
  |  |   86|      1|)
  ------------------
  885|      1|			size_t grow_max = MAX(grow_int, grow_buf);
  ------------------
  |  Branch (885:22): [True: 1, False: 0]
  ------------------
  886|       |
  887|      1|			handler->buffer.data = safe_erealloc(handler->buffer.data, 1, handler->buffer.size, grow_max);
  ------------------
  |  |  160|      1|#define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_erealloc(ptr, nmemb, size, offset)	_safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  888|      1|			handler->buffer.size += grow_max;
  889|      1|		}
  890|  2.87k|		memcpy(handler->buffer.data + handler->buffer.used, buf->data, buf->used);
  891|  2.87k|		handler->buffer.used += buf->used;
  892|       |
  893|       |		/* chunked buffering */
  894|  2.87k|		if (handler->size && (handler->buffer.used >= handler->size)) {
  ------------------
  |  Branch (894:7): [True: 0, False: 2.87k]
  |  Branch (894:24): [True: 0, False: 0]
  ------------------
  895|       |			/* store away errors and/or any intermediate output */
  896|      0|			return OG(running) ? true : false;
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  897|      0|		}
  898|  2.87k|	}
  899|  2.88k|	return true;
  900|  2.88k|}
output.c:php_output_context_feed:
  799|      5|{
  800|      5|	if (context->in.free && context->in.data) {
  ------------------
  |  Branch (800:6): [True: 0, False: 5]
  |  Branch (800:26): [True: 0, False: 0]
  ------------------
  801|       |		efree(context->in.data);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  802|      0|	}
  803|      5|	context->in.data = data;
  804|      5|	context->in.used = used;
  805|      5|	context->in.free = free;
  806|      5|	context->in.size = size;
  807|      5|}
output.c:php_output_context_reset:
  788|      4|{
  789|      4|	int op = context->op;
  790|      4|	php_output_context_dtor(context);
  791|      4|	memset(context, 0, sizeof(php_output_context));
  792|      4|	context->op = op;
  793|      4|}
output.c:php_output_op:
 1095|  7.90M|{
 1096|  7.90M|	php_output_context context;
 1097|  7.90M|	php_output_handler **active;
 1098|  7.90M|	int obh_cnt;
 1099|       |
 1100|  7.90M|	if (php_output_lock_error(op)) {
  ------------------
  |  Branch (1100:6): [True: 0, False: 7.90M]
  ------------------
 1101|      0|		return;
 1102|      0|	}
 1103|       |
 1104|  7.90M|	php_output_context_init(&context, op);
 1105|       |
 1106|       |	/*
 1107|       |	 * broken up for better performance:
 1108|       |	 *  - apply op to the one active handler; note that OG(active) might be popped off the stack on a flush
 1109|       |	 *  - or apply op to the handler stack
 1110|       |	 */
 1111|  7.90M|	if (OG(active) && (obh_cnt = zend_stack_count(&OG(handlers)))) {
  ------------------
  |  |  152|  15.8M|# define OG(v) (output_globals.v)
  |  |  ------------------
  |  |  |  Branch (152:16): [True: 2.87k, False: 7.90M]
  |  |  ------------------
  ------------------
              	if (OG(active) && (obh_cnt = zend_stack_count(&OG(handlers)))) {
  ------------------
  |  |  152|  2.87k|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (1111:20): [True: 2.87k, False: 0]
  ------------------
 1112|  2.87k|		context.in.data = (char *) str;
 1113|  2.87k|		context.in.used = len;
 1114|       |
 1115|  2.87k|		if (obh_cnt > 1) {
  ------------------
  |  Branch (1115:7): [True: 0, False: 2.87k]
  ------------------
 1116|      0|			zend_stack_apply_with_argument(&OG(handlers), ZEND_STACK_APPLY_TOPDOWN, php_output_stack_apply_op, &context);
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
 1117|  2.87k|		} else if ((active = zend_stack_top(&OG(handlers))) && (!((*active)->flags & PHP_OUTPUT_HANDLER_DISABLED))) {
  ------------------
  |  |  152|  2.87k|# define OG(v) (output_globals.v)
  ------------------
              		} else if ((active = zend_stack_top(&OG(handlers))) && (!((*active)->flags & PHP_OUTPUT_HANDLER_DISABLED))) {
  ------------------
  |  |   41|  2.87k|#define PHP_OUTPUT_HANDLER_DISABLED		0x2000
  ------------------
  |  Branch (1117:14): [True: 2.87k, False: 0]
  |  Branch (1117:58): [True: 2.87k, False: 0]
  ------------------
 1118|  2.87k|			php_output_handler_op(*active, &context);
 1119|  2.87k|		} else {
 1120|      0|			php_output_context_pass(&context);
 1121|      0|		}
 1122|  7.90M|	} else {
 1123|  7.90M|		context.out.data = (char *) str;
 1124|  7.90M|		context.out.used = len;
 1125|  7.90M|	}
 1126|       |
 1127|  7.90M|	if (context.out.data && context.out.used) {
  ------------------
  |  Branch (1127:6): [True: 7.90M, False: 2.87k]
  |  Branch (1127:26): [True: 7.90M, False: 34]
  ------------------
 1128|  7.90M|		php_output_header();
 1129|       |
 1130|  7.90M|		if (!(OG(flags) & PHP_OUTPUT_DISABLED)) {
  ------------------
  |  |  152|  7.90M|# define OG(v) (output_globals.v)
  ------------------
              		if (!(OG(flags) & PHP_OUTPUT_DISABLED)) {
  ------------------
  |  |   62|  7.90M|#define PHP_OUTPUT_DISABLED				0x02
  ------------------
  |  Branch (1130:7): [True: 7.90M, False: 0]
  ------------------
 1131|       |#if PHP_OUTPUT_DEBUG
 1132|       |			fprintf(stderr, "::: sapi_write('%s', %zu)\n", context.out.data, context.out.used);
 1133|       |#endif
 1134|  7.90M|			sapi_module.ub_write(context.out.data, context.out.used);
 1135|       |
 1136|  7.90M|			if (OG(flags) & PHP_OUTPUT_IMPLICITFLUSH) {
  ------------------
  |  |  152|  7.90M|# define OG(v) (output_globals.v)
  ------------------
              			if (OG(flags) & PHP_OUTPUT_IMPLICITFLUSH) {
  ------------------
  |  |   61|  7.90M|#define PHP_OUTPUT_IMPLICITFLUSH		0x01
  ------------------
  |  Branch (1136:8): [True: 7.90M, False: 0]
  ------------------
 1137|  7.90M|				sapi_flush();
 1138|  7.90M|			}
 1139|       |
 1140|  7.90M|			OG(flags) |= PHP_OUTPUT_SENT;
  ------------------
  |  |  152|  7.90M|# define OG(v) (output_globals.v)
  ------------------
              			OG(flags) |= PHP_OUTPUT_SENT;
  ------------------
  |  |   64|  7.90M|#define PHP_OUTPUT_SENT					0x08
  ------------------
 1141|  7.90M|		}
 1142|  7.90M|	}
 1143|  7.90M|	php_output_context_dtor(&context);
 1144|  7.90M|}
output.c:php_output_context_pass:
  831|      5|{
  832|      5|	context->out.data = context->in.data;
  833|      5|	context->out.used = context->in.used;
  834|      5|	context->out.size = context->in.size;
  835|      5|	context->out.free = context->in.free;
  836|       |	context->in.data = NULL;
  837|      5|	context->in.used = 0;
  838|      5|	context->in.free = 0;
  839|      5|	context->in.size = 0;
  840|      5|}
output.c:php_output_stack_pop:
 1255|     11|{
 1256|     11|	php_output_context context;
 1257|     11|	php_output_handler **current, *orphan = OG(active);
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
 1258|       |
 1259|     11|	if (!orphan) {
  ------------------
  |  Branch (1259:6): [True: 0, False: 11]
  ------------------
 1260|      0|		if (!(flags & PHP_OUTPUT_POP_SILENT)) {
  ------------------
  |  |   58|      0|#define PHP_OUTPUT_POP_SILENT		0x100
  ------------------
  |  Branch (1260:7): [True: 0, False: 0]
  ------------------
 1261|      0|			php_error_docref("ref.outcontrol", E_NOTICE, "Failed to %s buffer. No buffer to %s", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send");
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              			php_error_docref("ref.outcontrol", E_NOTICE, "Failed to %s buffer. No buffer to %s", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send");
  ------------------
  |  |   57|      0|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
              			php_error_docref("ref.outcontrol", E_NOTICE, "Failed to %s buffer. No buffer to %s", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send");
  ------------------
  |  |   57|      0|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
  |  Branch (1261:89): [True: 0, False: 0]
  |  Branch (1261:138): [True: 0, False: 0]
  ------------------
 1262|      0|		}
 1263|      0|		return 0;
 1264|     11|	} else if (!(flags & PHP_OUTPUT_POP_FORCE) && !(orphan->flags & PHP_OUTPUT_HANDLER_REMOVABLE)) {
  ------------------
  |  |   56|     11|#define PHP_OUTPUT_POP_FORCE		0x001
  ------------------
              	} else if (!(flags & PHP_OUTPUT_POP_FORCE) && !(orphan->flags & PHP_OUTPUT_HANDLER_REMOVABLE)) {
  ------------------
  |  |   36|      7|#define PHP_OUTPUT_HANDLER_REMOVABLE	0x0040
  ------------------
  |  Branch (1264:13): [True: 7, False: 4]
  |  Branch (1264:48): [True: 0, False: 7]
  ------------------
 1265|      0|		if (!(flags & PHP_OUTPUT_POP_SILENT)) {
  ------------------
  |  |   58|      0|#define PHP_OUTPUT_POP_SILENT		0x100
  ------------------
  |  Branch (1265:7): [True: 0, False: 0]
  ------------------
 1266|      0|			php_error_docref("ref.outcontrol", E_NOTICE, "Failed to %s buffer of %s (%d)", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", ZSTR_VAL(orphan->name), orphan->level);
  ------------------
  |  |   25|      0|#define E_NOTICE			(1<<3L)
  ------------------
              			php_error_docref("ref.outcontrol", E_NOTICE, "Failed to %s buffer of %s (%d)", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", ZSTR_VAL(orphan->name), orphan->level);
  ------------------
  |  |   57|      0|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
              			php_error_docref("ref.outcontrol", E_NOTICE, "Failed to %s buffer of %s (%d)", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", ZSTR_VAL(orphan->name), orphan->level);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (1266:83): [True: 0, False: 0]
  ------------------
 1267|      0|		}
 1268|      0|		return 0;
 1269|     11|	} else {
 1270|     11|		php_output_context_init(&context, PHP_OUTPUT_HANDLER_FINAL);
  ------------------
  |  |   25|     11|#define PHP_OUTPUT_HANDLER_FINAL	0x08	/* finalize */
  ------------------
 1271|       |
 1272|       |		/* don't run the output handler if it's disabled */
 1273|     11|		if (!(orphan->flags & PHP_OUTPUT_HANDLER_DISABLED)) {
  ------------------
  |  |   41|     11|#define PHP_OUTPUT_HANDLER_DISABLED		0x2000
  ------------------
  |  Branch (1273:7): [True: 11, False: 0]
  ------------------
 1274|       |			/* didn't it start yet? */
 1275|     11|			if (!(orphan->flags & PHP_OUTPUT_HANDLER_STARTED)) {
  ------------------
  |  |   40|     11|#define PHP_OUTPUT_HANDLER_STARTED		0x1000
  ------------------
  |  Branch (1275:8): [True: 11, False: 0]
  ------------------
 1276|     11|				context.op |= PHP_OUTPUT_HANDLER_START;
  ------------------
  |  |   22|     11|#define PHP_OUTPUT_HANDLER_START	0x01	/* start */
  ------------------
 1277|     11|			}
 1278|       |			/* signal that we're cleaning up */
 1279|     11|			if (flags & PHP_OUTPUT_POP_DISCARD) {
  ------------------
  |  |   57|     11|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
  |  Branch (1279:8): [True: 6, False: 5]
  ------------------
 1280|      6|				context.op |= PHP_OUTPUT_HANDLER_CLEAN;
  ------------------
  |  |   23|      6|#define PHP_OUTPUT_HANDLER_CLEAN	0x02	/* restart */
  ------------------
 1281|      6|			}
 1282|     11|			php_output_handler_op(orphan, &context);
 1283|     11|		}
 1284|       |		// If it isn't still in the stack, cannot free it
 1285|     11|		bool still_have_handler = false;
 1286|     11|		int handler_count = php_output_get_level();
 1287|     11|		if (handler_count) {
  ------------------
  |  Branch (1287:7): [True: 10, False: 1]
  ------------------
 1288|     10|			php_output_handler **handlers = (php_output_handler **) zend_stack_base(&OG(handlers));
  ------------------
  |  |  152|     10|# define OG(v) (output_globals.v)
  ------------------
 1289|     10|			for (int handler_num = 0; handler_num < handler_count; ++handler_num) {
  ------------------
  |  Branch (1289:30): [True: 10, False: 0]
  ------------------
 1290|     10|				php_output_handler *curr_handler = handlers[handler_num];
 1291|     10|				if (curr_handler == orphan) {
  ------------------
  |  Branch (1291:9): [True: 10, False: 0]
  ------------------
 1292|     10|					still_have_handler = true;
 1293|     10|					break;
 1294|     10|				}
 1295|     10|			}
 1296|     10|		}
 1297|       |
 1298|       |		/* pop it off the stack */
 1299|     11|		zend_stack_del_top(&OG(handlers));
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
 1300|     11|		if ((current = zend_stack_top(&OG(handlers)))) {
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
  |  Branch (1300:7): [True: 0, False: 11]
  ------------------
 1301|      0|			OG(active) = *current;
  ------------------
  |  |  152|      0|# define OG(v) (output_globals.v)
  ------------------
 1302|     11|		} else {
 1303|     11|			OG(active) = NULL;
  ------------------
  |  |  152|     11|# define OG(v) (output_globals.v)
  ------------------
 1304|     11|		}
 1305|       |
 1306|       |		/* pass output along */
 1307|     11|		if (context.out.data && context.out.used && !(flags & PHP_OUTPUT_POP_DISCARD)) {
  ------------------
  |  |   57|      6|#define PHP_OUTPUT_POP_DISCARD		0x010
  ------------------
  |  Branch (1307:7): [True: 6, False: 5]
  |  Branch (1307:27): [True: 6, False: 0]
  |  Branch (1307:47): [True: 2, False: 4]
  ------------------
 1308|      2|			php_output_write(context.out.data, context.out.used);
 1309|      2|		}
 1310|       |
 1311|       |		/* destroy the handler (after write!) */
 1312|     11|		if (still_have_handler) {
  ------------------
  |  Branch (1312:7): [True: 10, False: 1]
  ------------------
 1313|     10|			php_output_handler_free(&orphan);
 1314|     10|		}
 1315|     11|		php_output_context_dtor(&context);
 1316|       |
 1317|     11|		return 1;
 1318|     11|	}
 1319|     11|}
output.c:php_output_handler_default_func:
 1351|      5|{
 1352|      5|	php_output_context_pass(output_context);
 1353|      5|	return SUCCESS;
 1354|      5|}

php_startup_sapi_content_types:
   41|      2|{
   42|      2|	sapi_register_default_post_reader(php_default_post_reader);
   43|      2|	sapi_register_treat_data(php_default_treat_data);
   44|       |	sapi_register_input_filter(php_default_input_filter, NULL);
   45|      2|	return SUCCESS;
   46|      2|}
php_setup_sapi_content_types:
   51|      2|{
   52|      2|	sapi_register_post_entries(php_post_entries);
   53|       |
   54|      2|	return SUCCESS;
   55|      2|}

php_glob:
  244|      2|{
  245|      2|	const uint8_t *patnext;
  246|      2|	int c;
  247|      2|	Char *bufnext, *bufend, patbuf[PATH_MAX];
  248|      2|	struct glob_lim limit = { 0, 0, 0 };
  249|       |
  250|       |#ifdef PHP_WIN32
  251|       |	/* Force skipping escape sequences on windows
  252|       |	 * due to the ambiguity with path backslashes
  253|       |	 */
  254|       |	flags |= PHP_GLOB_NOESCAPE;
  255|       |#endif
  256|       |
  257|      2|	patnext = (uint8_t *) pattern;
  258|      2|	if (!(flags & PHP_GLOB_APPEND)) {
  ------------------
  |  |  138|      2|#define	PHP_GLOB_APPEND	0x0001	/* Append to output from previous call. */
  ------------------
  |  Branch (258:6): [True: 2, False: 0]
  ------------------
  259|      2|		pglob->gl_pathc = 0;
  260|      2|		pglob->gl_pathv = NULL;
  261|      2|		pglob->gl_statv = NULL;
  262|      2|		if (!(flags & PHP_GLOB_DOOFFS))
  ------------------
  |  |  139|      2|#define	PHP_GLOB_DOOFFS	0x0002	/* Use gl_offs. */
  ------------------
  |  Branch (262:7): [True: 2, False: 0]
  ------------------
  263|      2|			pglob->gl_offs = 0;
  264|      2|	}
  265|      2|	pglob->gl_flags = flags & ~PHP_GLOB_MAGCHAR;
  ------------------
  |  |  153|      2|#define	PHP_GLOB_MAGCHAR	0x0100	/* Pattern had globbing characters. */
  ------------------
  266|      2|	pglob->gl_errfunc = errfunc;
  267|      2|	pglob->gl_matchc = 0;
  268|       |
  269|      2|	if (zend_strnlen(pattern, PATH_MAX) == PATH_MAX)
  ------------------
  |  Branch (269:6): [True: 0, False: 2]
  ------------------
  270|      0|		return(PHP_GLOB_NOMATCH);
  ------------------
  |  |  148|      0|#define	PHP_GLOB_NOMATCH	(-3)	/* No match and PHP_GLOB_NOCHECK not set. */
  ------------------
  271|       |
  272|      2|	if (pglob->gl_offs >= SSIZE_MAX || pglob->gl_pathc >= SSIZE_MAX ||
  ------------------
  |  Branch (272:6): [True: 0, False: 2]
  |  Branch (272:37): [True: 0, False: 2]
  ------------------
  273|      2|		pglob->gl_pathc >= SSIZE_MAX - pglob->gl_offs - 1)
  ------------------
  |  Branch (273:3): [True: 0, False: 2]
  ------------------
  274|      0|		return PHP_GLOB_NOSPACE;
  ------------------
  |  |  146|      0|#define	PHP_GLOB_NOSPACE	(-1)	/* Malloc call failed. */
  ------------------
  275|       |
  276|      2|	bufnext = patbuf;
  277|      2|	bufend = bufnext + PATH_MAX - 1;
  278|      2|	if (flags & PHP_GLOB_NOESCAPE)
  ------------------
  |  |  144|      2|#define	PHP_GLOB_NOESCAPE	0x1000	/* Disable backslash escaping. */
  ------------------
  |  Branch (278:6): [True: 0, False: 2]
  ------------------
  279|      0|		while (bufnext < bufend && (c = *patnext++) != EOS)
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  |  Branch (279:10): [True: 0, False: 0]
  |  Branch (279:30): [True: 0, False: 0]
  ------------------
  280|      0|			*bufnext++ = c;
  281|      2|	else {
  282|       |		/* Protect the quoted characters. */
  283|      4|		while (bufnext < bufend && (c = *patnext++) != EOS)
  ------------------
  |  |  112|      4|#define	EOS		'\0'
  ------------------
  |  Branch (283:10): [True: 4, False: 0]
  |  Branch (283:30): [True: 2, False: 2]
  ------------------
  284|      2|			if (c == QUOTE) {
  ------------------
  |  |  116|      2|#define	QUOTE		'\\'
  ------------------
  |  Branch (284:8): [True: 0, False: 2]
  ------------------
  285|      0|				if ((c = *patnext++) == EOS) {
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  |  Branch (285:9): [True: 0, False: 0]
  ------------------
  286|      0|					c = QUOTE;
  ------------------
  |  |  116|      0|#define	QUOTE		'\\'
  ------------------
  287|      0|					--patnext;
  288|      0|				}
  289|      0|				*bufnext++ = c | M_PROTECT;
  ------------------
  |  |  131|      0|#define	M_PROTECT	0x4000
  ------------------
  290|      0|			} else
  291|      2|				*bufnext++ = c;
  292|      2|	}
  293|      2|	*bufnext = EOS;
  ------------------
  |  |  112|      2|#define	EOS		'\0'
  ------------------
  294|       |
  295|      2|	if (flags & PHP_GLOB_BRACE)
  ------------------
  |  |  152|      2|#define	PHP_GLOB_BRACE	0x0080	/* Expand braces ala csh. */
  ------------------
  |  Branch (295:6): [True: 0, False: 2]
  ------------------
  296|      0|		return globexp1(patbuf, pglob, &limit);
  297|      2|	else
  298|      2|		return glob0(patbuf, pglob, &limit);
  299|      2|}
php_glob.c:glob0:
  554|      2|{
  555|      2|	const Char *qpatnext;
  556|      2|	int c, err;
  557|      2|	size_t oldpathc;
  558|      2|	Char *bufnext, patbuf[PATH_MAX];
  559|       |
  560|      2|	qpatnext = globtilde(pattern, patbuf, PATH_MAX, pglob);
  561|      2|	oldpathc = pglob->gl_pathc;
  562|      2|	bufnext = patbuf;
  563|       |
  564|       |	/* We don't need to check for buffer overflow any more. */
  565|      4|	while ((c = *qpatnext++) != EOS) {
  ------------------
  |  |  112|      4|#define	EOS		'\0'
  ------------------
  |  Branch (565:9): [True: 2, False: 2]
  ------------------
  566|      2|		switch (c) {
  567|      0|		case LBRACKET:
  ------------------
  |  |  113|      0|#define	LBRACKET	'['
  ------------------
  |  Branch (567:3): [True: 0, False: 2]
  ------------------
  568|      0|			c = *qpatnext;
  569|      0|			if (c == NOT)
  ------------------
  |  |  114|      0|#define	NOT		'!'
  ------------------
  |  Branch (569:8): [True: 0, False: 0]
  ------------------
  570|      0|				++qpatnext;
  571|      0|			if (*qpatnext == EOS ||
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  |  Branch (571:8): [True: 0, False: 0]
  ------------------
  572|      0|				g_strchr(qpatnext+1, RBRACKET) == NULL) {
  ------------------
  |  |  118|      0|#define	RBRACKET	']'
  ------------------
  |  Branch (572:5): [True: 0, False: 0]
  ------------------
  573|      0|				*bufnext++ = LBRACKET;
  ------------------
  |  |  113|      0|#define	LBRACKET	'['
  ------------------
  574|      0|				if (c == NOT)
  ------------------
  |  |  114|      0|#define	NOT		'!'
  ------------------
  |  Branch (574:9): [True: 0, False: 0]
  ------------------
  575|      0|					--qpatnext;
  576|      0|				break;
  577|      0|			}
  578|      0|			*bufnext++ = M_SET;
  ------------------
  |  |  156|      0|#define	M_SET		META('[')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|      0|			if (c == NOT)
  ------------------
  |  |  114|      0|#define	NOT		'!'
  ------------------
  |  Branch (579:8): [True: 0, False: 0]
  ------------------
  580|      0|				*bufnext++ = M_NOT;
  ------------------
  |  |  153|      0|#define	M_NOT		META('!')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  581|      0|			c = *qpatnext++;
  582|      0|			do {
  583|      0|				if (c == LBRACKET && *qpatnext == ':') {
  ------------------
  |  |  113|      0|#define	LBRACKET	'['
  ------------------
  |  Branch (583:9): [True: 0, False: 0]
  |  Branch (583:26): [True: 0, False: 0]
  ------------------
  584|      0|					do {
  585|      0|						err = g_charclass(&qpatnext,
  586|      0|							&bufnext);
  587|      0|						if (err)
  ------------------
  |  Branch (587:11): [True: 0, False: 0]
  ------------------
  588|      0|							break;
  589|      0|						c = *qpatnext++;
  590|      0|					} while (c == LBRACKET && *qpatnext == ':');
  ------------------
  |  |  113|      0|#define	LBRACKET	'['
  ------------------
  |  Branch (590:15): [True: 0, False: 0]
  |  Branch (590:32): [True: 0, False: 0]
  ------------------
  591|      0|					if (err == -1 &&
  ------------------
  |  Branch (591:10): [True: 0, False: 0]
  ------------------
  592|      0|						!(pglob->gl_flags & PHP_GLOB_NOCHECK))
  ------------------
  |  |  142|      0|#define	PHP_GLOB_NOCHECK	0x0010	/* Return pattern itself if nothing matches. */
  ------------------
  |  Branch (592:7): [True: 0, False: 0]
  ------------------
  593|      0|						return PHP_GLOB_NOMATCH;
  ------------------
  |  |  148|      0|#define	PHP_GLOB_NOMATCH	(-3)	/* No match and PHP_GLOB_NOCHECK not set. */
  ------------------
  594|      0|					if (c == RBRACKET)
  ------------------
  |  |  118|      0|#define	RBRACKET	']'
  ------------------
  |  Branch (594:10): [True: 0, False: 0]
  ------------------
  595|      0|						break;
  596|      0|				}
  597|      0|				*bufnext++ = CHAR(c);
  ------------------
  |  |  149|      0|#define	CHAR(c)		((Char)((c)&M_ASCII))
  |  |  ------------------
  |  |  |  |  133|      0|#define	M_ASCII		0x00ff
  |  |  ------------------
  ------------------
  598|      0|				if (*qpatnext == RANGE &&
  ------------------
  |  |  117|      0|#define	RANGE		'-'
  ------------------
  |  Branch (598:9): [True: 0, False: 0]
  ------------------
  599|      0|					(c = qpatnext[1]) != RBRACKET) {
  ------------------
  |  |  118|      0|#define	RBRACKET	']'
  ------------------
  |  Branch (599:6): [True: 0, False: 0]
  ------------------
  600|      0|					*bufnext++ = M_RNG;
  ------------------
  |  |  155|      0|#define	M_RNG		META('-')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  601|      0|					*bufnext++ = CHAR(c);
  ------------------
  |  |  149|      0|#define	CHAR(c)		((Char)((c)&M_ASCII))
  |  |  ------------------
  |  |  |  |  133|      0|#define	M_ASCII		0x00ff
  |  |  ------------------
  ------------------
  602|      0|					qpatnext += 2;
  603|      0|				}
  604|      0|			} while ((c = *qpatnext++) != RBRACKET);
  ------------------
  |  |  118|      0|#define	RBRACKET	']'
  ------------------
  |  Branch (604:13): [True: 0, False: 0]
  ------------------
  605|      0|			pglob->gl_flags |= PHP_GLOB_MAGCHAR;
  ------------------
  |  |  153|      0|#define	PHP_GLOB_MAGCHAR	0x0100	/* Pattern had globbing characters. */
  ------------------
  606|      0|			*bufnext++ = M_END;
  ------------------
  |  |  152|      0|#define	M_END		META(']')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|      0|			break;
  608|      0|		case QUESTION:
  ------------------
  |  |  115|      0|#define	QUESTION	'?'
  ------------------
  |  Branch (608:3): [True: 0, False: 2]
  ------------------
  609|      0|			pglob->gl_flags |= PHP_GLOB_MAGCHAR;
  ------------------
  |  |  153|      0|#define	PHP_GLOB_MAGCHAR	0x0100	/* Pattern had globbing characters. */
  ------------------
  610|      0|			*bufnext++ = M_ONE;
  ------------------
  |  |  154|      0|#define	M_ONE		META('?')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  611|      0|			break;
  612|      0|		case STAR:
  ------------------
  |  |  120|      0|#define	STAR		'*'
  ------------------
  |  Branch (612:3): [True: 0, False: 2]
  ------------------
  613|      0|			pglob->gl_flags |= PHP_GLOB_MAGCHAR;
  ------------------
  |  |  153|      0|#define	PHP_GLOB_MAGCHAR	0x0100	/* Pattern had globbing characters. */
  ------------------
  614|       |			/* collapse adjacent stars to one,
  615|       |			 * to avoid exponential behavior
  616|       |			 */
  617|      0|			if (bufnext == patbuf || bufnext[-1] != M_ALL)
  ------------------
  |  |  151|      0|#define	M_ALL		META('*')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (617:8): [True: 0, False: 0]
  |  Branch (617:29): [True: 0, False: 0]
  ------------------
  618|      0|				*bufnext++ = M_ALL;
  ------------------
  |  |  151|      0|#define	M_ALL		META('*')
  |  |  ------------------
  |  |  |  |  150|      0|#define	META(c)		((Char)((c)|M_QUOTE))
  |  |  |  |  ------------------
  |  |  |  |  |  |  130|      0|#define	M_QUOTE		0x8000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  619|      0|			break;
  620|      2|		default:
  ------------------
  |  Branch (620:3): [True: 2, False: 0]
  ------------------
  621|      2|			*bufnext++ = CHAR(c);
  ------------------
  |  |  149|      2|#define	CHAR(c)		((Char)((c)&M_ASCII))
  |  |  ------------------
  |  |  |  |  133|      2|#define	M_ASCII		0x00ff
  |  |  ------------------
  ------------------
  622|      2|			break;
  623|      2|		}
  624|      2|	}
  625|      2|	*bufnext = EOS;
  ------------------
  |  |  112|      2|#define	EOS		'\0'
  ------------------
  626|       |#ifdef DEBUG
  627|       |	qprintf("glob0:", patbuf);
  628|       |#endif
  629|       |
  630|      2|	if ((err = glob1(patbuf, patbuf+PATH_MAX-1, pglob, limitp)) != 0)
  ------------------
  |  Branch (630:6): [True: 0, False: 2]
  ------------------
  631|      0|		return(err);
  632|       |
  633|       |	/*
  634|       |	 * If there was no match we are going to append the pattern
  635|       |	 * if PHP_GLOB_NOCHECK was specified or if PHP_GLOB_NOMAGIC was specified
  636|       |	 * and the pattern did not contain any magic characters
  637|       |	 * PHP_GLOB_NOMAGIC is there just for compatibility with csh.
  638|       |	 */
  639|      2|	if (pglob->gl_pathc == oldpathc) {
  ------------------
  |  Branch (639:6): [True: 2, False: 0]
  ------------------
  640|      2|		if ((pglob->gl_flags & PHP_GLOB_NOCHECK) ||
  ------------------
  |  |  142|      2|#define	PHP_GLOB_NOCHECK	0x0010	/* Return pattern itself if nothing matches. */
  ------------------
  |  Branch (640:7): [True: 0, False: 2]
  ------------------
  641|      2|			((pglob->gl_flags & PHP_GLOB_NOMAGIC) &&
  ------------------
  |  |  154|      2|#define	PHP_GLOB_NOMAGIC	0x0200	/* PHP_GLOB_NOCHECK without magic chars (csh). */
  ------------------
  |  Branch (641:5): [True: 0, False: 2]
  ------------------
  642|      0|			!(pglob->gl_flags & PHP_GLOB_MAGCHAR)))
  ------------------
  |  |  153|      0|#define	PHP_GLOB_MAGCHAR	0x0100	/* Pattern had globbing characters. */
  ------------------
  |  Branch (642:4): [True: 0, False: 0]
  ------------------
  643|      0|			return(globextend(pattern, pglob, limitp, NULL));
  644|      2|		else
  645|      2|			return(PHP_GLOB_NOMATCH);
  ------------------
  |  |  148|      2|#define	PHP_GLOB_NOMATCH	(-3)	/* No match and PHP_GLOB_NOCHECK not set. */
  ------------------
  646|      2|	}
  647|      0|	if (!(pglob->gl_flags & PHP_GLOB_NOSORT)) {
  ------------------
  |  |  143|      0|#define	PHP_GLOB_NOSORT	0x0020	/* Don't sort. */
  ------------------
  |  Branch (647:6): [True: 0, False: 0]
  ------------------
  648|      0|		if ((pglob->gl_flags & PHP_GLOB_KEEPSTAT)) {
  ------------------
  |  |  158|      0|#define	PHP_GLOB_KEEPSTAT	0x4000	/* Retain stat data for paths in gl_statv. */
  ------------------
  |  Branch (648:7): [True: 0, False: 0]
  ------------------
  649|       |			/* Keep the paths and stat info synced during sort */
  650|      0|			struct glob_path_stat *path_stat;
  651|      0|			size_t i;
  652|      0|			size_t n = pglob->gl_pathc - oldpathc;
  653|      0|			size_t o = pglob->gl_offs + oldpathc;
  654|       |
  655|      0|			if ((path_stat = calloc(n, sizeof(*path_stat))) == NULL)
  ------------------
  |  Branch (655:8): [True: 0, False: 0]
  ------------------
  656|      0|				return PHP_GLOB_NOSPACE;
  ------------------
  |  |  146|      0|#define	PHP_GLOB_NOSPACE	(-1)	/* Malloc call failed. */
  ------------------
  657|      0|			for (i = 0; i < n; i++) {
  ------------------
  |  Branch (657:16): [True: 0, False: 0]
  ------------------
  658|      0|				path_stat[i].gps_path = pglob->gl_pathv[o + i];
  659|      0|				path_stat[i].gps_stat = pglob->gl_statv[o + i];
  660|      0|			}
  661|      0|			qsort(path_stat, n, sizeof(*path_stat), compare_gps);
  662|      0|			for (i = 0; i < n; i++) {
  ------------------
  |  Branch (662:16): [True: 0, False: 0]
  ------------------
  663|      0|				pglob->gl_pathv[o + i] = path_stat[i].gps_path;
  664|      0|				pglob->gl_statv[o + i] = path_stat[i].gps_stat;
  665|      0|			}
  666|      0|			free(path_stat);
  667|      0|		} else {
  668|      0|			qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc,
  669|      0|				pglob->gl_pathc - oldpathc, sizeof(char *),
  670|      0|				compare);
  671|      0|		}
  672|      0|	}
  673|      0|	return(0);
  674|      0|}
php_glob.c:globtilde:
  432|      2|{
  433|      2|#ifndef PHP_WIN32
  434|      2|	struct passwd pwstore, *pwd = NULL;
  435|      2|	char pwbuf[_PW_BUF_LEN];
  436|      2|#endif
  437|      2|	char *h;
  438|      2|	const Char *p;
  439|      2|	Char *b, *eb;
  440|       |
  441|      2|	if (*pattern != TILDE || !(pglob->gl_flags & PHP_GLOB_TILDE))
  ------------------
  |  |  121|      4|#define	TILDE		'~'
  ------------------
              	if (*pattern != TILDE || !(pglob->gl_flags & PHP_GLOB_TILDE))
  ------------------
  |  |  156|      0|#define	PHP_GLOB_TILDE	0x0800	/* Expand tilde names from the passwd file. */
  ------------------
  |  Branch (441:6): [True: 2, False: 0]
  |  Branch (441:27): [True: 0, False: 0]
  ------------------
  442|      2|		return pattern;
  443|       |
  444|       |	/* Copy up to the end of the string or / */
  445|      0|	eb = &patbuf[patbuf_len - 1];
  446|      0|	for (p = pattern + 1, h = (char *) patbuf;
  447|      0|		h < (char *)eb && *p && *p != SLASH; *h++ = *p++)
  ------------------
  |  |  125|      0|#define	SLASH		'/'
  ------------------
  |  Branch (447:3): [True: 0, False: 0]
  |  Branch (447:21): [True: 0, False: 0]
  |  Branch (447:27): [True: 0, False: 0]
  ------------------
  448|      0|		;
  449|       |
  450|      0|	*h = EOS;
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  451|       |
  452|       |#if 0
  453|       |	if (h == (char *)eb)
  454|       |		return what;
  455|       |#endif
  456|       |
  457|      0|	if (((char *) patbuf)[0] == EOS) {
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  |  Branch (457:6): [True: 0, False: 0]
  ------------------
  458|      0|#ifndef PHP_WIN32
  459|       |		/*
  460|       |		 * handle a plain ~ or ~/ by expanding $HOME
  461|       |		 * first and then trying the password file
  462|       |		 */
  463|       |#ifdef HAVE_ISSETUGID
  464|       |		if (issetugid() != 0 || (h = getenv("HOME")) == NULL) {
  465|       |#else
  466|      0|		if ((h = getenv("HOME")) == NULL) {
  ------------------
  |  Branch (466:7): [True: 0, False: 0]
  ------------------
  467|      0|#endif
  468|      0|			getpwuid_r(getuid(), &pwstore, pwbuf, sizeof(pwbuf),
  469|      0|				&pwd);
  470|      0|			if (pwd == NULL)
  ------------------
  |  Branch (470:8): [True: 0, False: 0]
  ------------------
  471|      0|				return pattern;
  472|      0|			else
  473|      0|				h = pwd->pw_dir;
  474|      0|		}
  475|       |#else
  476|       |		return pattern;
  477|       |#endif
  478|      0|	} else {
  479|       |		/*
  480|       |		 * Expand a ~user
  481|       |		 */
  482|      0|#ifndef PHP_WIN32
  483|      0|		getpwnam_r((char *)patbuf, &pwstore, pwbuf, sizeof(pwbuf),
  484|      0|			&pwd);
  485|      0|		if (pwd == NULL)
  ------------------
  |  Branch (485:7): [True: 0, False: 0]
  ------------------
  486|      0|			return pattern;
  487|      0|		else
  488|      0|			h = pwd->pw_dir;
  489|       |#else
  490|       |		return pattern;
  491|       |#endif
  492|      0|	}
  493|       |
  494|       |	/* Copy the home directory */
  495|      0|	for (b = patbuf; b < eb && *h; *b++ = *h++)
  ------------------
  |  Branch (495:19): [True: 0, False: 0]
  |  Branch (495:29): [True: 0, False: 0]
  ------------------
  496|      0|		;
  497|       |
  498|       |	/* Append the rest of the pattern */
  499|      0|	while (b < eb && (*b++ = *p++) != EOS)
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  |  Branch (499:9): [True: 0, False: 0]
  |  Branch (499:19): [True: 0, False: 0]
  ------------------
  500|      0|		;
  501|      0|	*b = EOS;
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  502|       |
  503|      0|	return patbuf;
  504|      0|}
php_glob.c:glob1:
  690|      2|{
  691|      2|	Char pathbuf[PATH_MAX];
  692|       |
  693|       |	/* A null pathname is invalid -- POSIX 1003.1 sect. 2.4. */
  694|      2|	if (*pattern == EOS)
  ------------------
  |  |  112|      2|#define	EOS		'\0'
  ------------------
  |  Branch (694:6): [True: 0, False: 2]
  ------------------
  695|      0|		return(0);
  696|      2|	return(glob2(pathbuf, pathbuf+PATH_MAX-1,
  697|       |		pathbuf, pathbuf+PATH_MAX-1,
  698|      2|		pattern, pattern_last, pglob, limitp));
  699|      2|}
php_glob.c:glob2:
  707|      2|{
  708|      2|	zend_stat_t sb;
  709|      2|	Char *p, *q;
  710|      2|	int anymeta;
  711|       |
  712|       |	/*
  713|       |	 * Loop over pattern segments until end of pattern or until
  714|       |	 * segment with meta character found.
  715|       |	 */
  716|      4|	for (anymeta = 0;;) {
  717|      4|		if (*pattern == EOS) {		/* End of pattern? */
  ------------------
  |  |  112|      4|#define	EOS		'\0'
  ------------------
  |  Branch (717:7): [True: 2, False: 2]
  ------------------
  718|      2|			*pathend = EOS;
  ------------------
  |  |  112|      2|#define	EOS		'\0'
  ------------------
  719|       |
  720|      2|			if ((pglob->gl_flags & PHP_GLOB_LIMIT) &&
  ------------------
  |  |  157|      2|#define PHP_GLOB_LIMIT	0x2000	/* Limit pattern match output to ARG_MAX */
  ------------------
  |  Branch (720:8): [True: 0, False: 2]
  ------------------
  721|      0|				limitp->glim_stat++ >= PHP_GLOB_LIMIT_STAT) {
  ------------------
  |  |  161|      0|#define	PHP_GLOB_LIMIT_STAT		2048
  ------------------
  |  Branch (721:5): [True: 0, False: 0]
  ------------------
  722|      0|				errno = 0;
  723|      0|				*pathend++ = SEP;
  ------------------
  |  |  119|      0|#define	SEP		DEFAULT_SLASH
  |  |  ------------------
  |  |  |  |  105|      0|#define DEFAULT_SLASH '/'
  |  |  ------------------
  ------------------
  724|      0|				*pathend = EOS;
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  725|      0|				return(PHP_GLOB_NOSPACE);
  ------------------
  |  |  146|      0|#define	PHP_GLOB_NOSPACE	(-1)	/* Malloc call failed. */
  ------------------
  726|      0|			}
  727|      2|			if (g_lstat(pathbuf, &sb, pglob))
  ------------------
  |  Branch (727:8): [True: 2, False: 0]
  ------------------
  728|      2|				return(0);
  729|       |
  730|      0|			if (((pglob->gl_flags & PHP_GLOB_MARK) &&
  ------------------
  |  |  141|      0|#define	PHP_GLOB_MARK	0x0008	/* Append / to matching directories. */
  ------------------
  |  Branch (730:9): [True: 0, False: 0]
  ------------------
  731|      0|				pathend[-1] != SEP) && (S_ISDIR(sb.st_mode) ||
  ------------------
  |  |  119|      0|#define	SEP		DEFAULT_SLASH
  |  |  ------------------
  |  |  |  |  105|      0|#define DEFAULT_SLASH '/'
  |  |  ------------------
  ------------------
  |  Branch (731:5): [True: 0, False: 0]
  |  Branch (731:29): [True: 0, False: 0]
  ------------------
  732|      0|				(S_ISLNK(sb.st_mode) &&
  ------------------
  |  Branch (732:6): [True: 0, False: 0]
  ------------------
  733|      0|				(g_stat(pathbuf, &sb, pglob) == 0) &&
  ------------------
  |  Branch (733:5): [True: 0, False: 0]
  ------------------
  734|      0|				S_ISDIR(sb.st_mode)))) {
  ------------------
  |  Branch (734:5): [True: 0, False: 0]
  ------------------
  735|      0|				if (pathend+1 > pathend_last)
  ------------------
  |  Branch (735:9): [True: 0, False: 0]
  ------------------
  736|      0|					return (1);
  737|      0|				*pathend++ = SEP;
  ------------------
  |  |  119|      0|#define	SEP		DEFAULT_SLASH
  |  |  ------------------
  |  |  |  |  105|      0|#define DEFAULT_SLASH '/'
  |  |  ------------------
  ------------------
  738|      0|				*pathend = EOS;
  ------------------
  |  |  112|      0|#define	EOS		'\0'
  ------------------
  739|      0|			}
  740|      0|			++pglob->gl_matchc;
  741|      0|			return(globextend(pathbuf, pglob, limitp, &sb));
  742|      0|		}
  743|       |
  744|       |		/* Find end of next segment, copy tentatively to pathend. */
  745|      2|		q = pathend;
  746|      2|		p = pattern;
  747|      4|		while (*p != EOS && !IS_SLASH(*p)) {
  ------------------
  |  |  112|      8|#define	EOS		'\0'
  ------------------
              		while (*p != EOS && !IS_SLASH(*p)) {
  ------------------
  |  |  113|      2|#define IS_SLASH(c)	((c) == '/')
  ------------------
  |  Branch (747:10): [True: 2, False: 2]
  |  Branch (747:23): [True: 2, False: 0]
  ------------------
  748|      2|			if (ismeta(*p))
  ------------------
  |  |  158|      2|#define	ismeta(c)	(((c)&M_QUOTE) != 0)
  |  |  ------------------
  |  |  |  |  130|      2|#define	M_QUOTE		0x8000
  |  |  ------------------
  |  |  |  Branch (158:19): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  749|      0|				anymeta = 1;
  750|      2|			if (q+1 > pathend_last)
  ------------------
  |  Branch (750:8): [True: 0, False: 2]
  ------------------
  751|      0|				return (1);
  752|      2|			*q++ = *p++;
  753|      2|		}
  754|       |
  755|      2|		if (!anymeta) {		/* No expansion, do next segment. */
  ------------------
  |  Branch (755:7): [True: 2, False: 0]
  ------------------
  756|      2|			pathend = q;
  757|      2|			pattern = p;
  758|      2|			while (IS_SLASH(*pattern)) {
  ------------------
  |  |  113|      2|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  759|      0|				if (pathend+1 > pathend_last)
  ------------------
  |  Branch (759:9): [True: 0, False: 0]
  ------------------
  760|      0|					return (1);
  761|      0|				*pathend++ = *pattern++;
  762|      0|			}
  763|      2|		} else
  764|       |			/* Need expansion, recurse. */
  765|      0|			return(glob3(pathbuf, pathbuf_last, pathend,
  766|      0|				pathend_last, pattern, p, pattern_last,
  767|      0|				pglob, limitp));
  768|      2|	}
  769|       |	/* NOTREACHED */
  770|      2|}
php_glob.c:g_lstat:
 1080|      2|{
 1081|      2|	char buf[PATH_MAX];
 1082|       |
 1083|      2|	if (g_Ctoc(fn, buf, sizeof(buf)))
  ------------------
  |  Branch (1083:6): [True: 0, False: 2]
  ------------------
 1084|      0|		return(-1);
 1085|      2|	if (pglob->gl_flags & PHP_GLOB_ALTDIRFUNC)
  ------------------
  |  |  151|      2|#define	PHP_GLOB_ALTDIRFUNC	0x0040	/* Use alternately specified directory funcs. */
  ------------------
  |  Branch (1085:6): [True: 0, False: 2]
  ------------------
 1086|      0|		return((*pglob->gl_lstat)(buf, sb));
 1087|      2|	return(php_sys_lstat(buf, sb));
  ------------------
  |  |  156|      2|# define php_sys_lstat lstat
  ------------------
 1088|      2|}
php_glob.c:g_Ctoc:
 1111|      2|{
 1112|       |
 1113|      4|	while (len--) {
  ------------------
  |  Branch (1113:9): [True: 4, False: 0]
  ------------------
 1114|      4|		if ((*buf++ = *str++) == EOS)
  ------------------
  |  |  112|      4|#define	EOS		'\0'
  ------------------
  |  Branch (1114:7): [True: 2, False: 2]
  ------------------
 1115|      2|			return (0);
 1116|      4|	}
 1117|      0|	return (1);
 1118|      2|}

display_ini_entries:
  114|      8|{
  115|      8|	int module_number;
  116|      8|	zend_ini_entry *ini_entry;
  117|      8|	bool first = 1;
  118|       |
  119|      8|	if (module) {
  ------------------
  |  Branch (119:6): [True: 8, False: 0]
  ------------------
  120|      8|		module_number = module->module_number;
  121|      8|	} else {
  122|      0|		module_number = 0;
  123|      0|	}
  124|       |
  125|  2.88k|	ZEND_HASH_MAP_FOREACH_PTR(EG(ini_directives), ini_entry) {
  ------------------
  |  | 1341|  1.43k|	ZEND_HASH_MAP_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1274|      8|#define ZEND_HASH_MAP_FOREACH(_ht, indirect) ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1262|      8|#define ZEND_HASH_MAP_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1263|      8|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1264|      8|		Bucket *_p = __ht->arData + (_from); \
  |  |  |  |  |  | 1265|      8|		const Bucket *_end = __ht->arData + __ht->nNumUsed; \
  |  |  |  |  |  | 1266|      8|		ZEND_ASSERT(!HT_IS_PACKED(__ht)); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      8|# define ZEND_ASSERT(c)	assert(c)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1267|  1.44k|		for (; _p != _end; _p++) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1267:10): [True: 1.43k, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1268|  1.43k|			zval *_z = &_p->val; \
  |  |  |  |  |  | 1269|  1.43k|			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               			if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|  1.43k|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1269:8): [Folded, False: 1.43k]
  |  |  |  |  |  |  |  Branch (1269:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1270|      0|				_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1271|      0|			} \
  |  |  |  |  |  | 1272|  1.43k|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|  1.43k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 1.43k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1342|  1.43k|	_ptr = Z_PTR_P(_z);
  |  |  ------------------
  |  |  |  | 1053|      8|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      8|#define Z_PTR(zval)					(zval).value.ptr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (125:2): [True: 0, False: 8]
  |  Branch (125:2): [True: 8, False: 0]
  ------------------
  126|  2.88k|		if (ini_entry->module_number != module_number) {
  ------------------
  |  Branch (126:7): [True: 1.24k, False: 184]
  ------------------
  127|  1.24k|			continue;
  128|  1.24k|		}
  129|    184|		if (first) {
  ------------------
  |  Branch (129:7): [True: 7, False: 177]
  ------------------
  130|      7|			php_info_print_table_start();
  131|      7|			php_info_print_table_header(3, "Directive", "Local Value", "Master Value");
  132|      7|			first = 0;
  133|      7|		}
  134|    184|		if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (134:7): [True: 0, False: 184]
  ------------------
  135|      0|			PUTS("<tr>");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  136|      0|			PUTS("<td class=\"e\">");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  137|      0|			PHPWRITE(ZSTR_VAL(ini_entry->name), ZSTR_LEN(ini_entry->name));
  ------------------
  |  |  156|      0|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  138|      0|			PUTS("</td><td class=\"v\">");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  139|      0|			php_ini_displayer_cb(ini_entry, ZEND_INI_DISPLAY_ACTIVE);
  ------------------
  |  |  221|      0|#define ZEND_INI_DISPLAY_ACTIVE	2
  ------------------
  140|      0|			PUTS("</td><td class=\"v\">");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  141|      0|			php_ini_displayer_cb(ini_entry, ZEND_INI_DISPLAY_ORIG);
  ------------------
  |  |  220|      0|#define ZEND_INI_DISPLAY_ORIG	1
  ------------------
  142|      0|			PUTS("</td></tr>\n");
  ------------------
  |  |  162|      0|#define PUTS(str)					do {				\
  |  |  163|      0|	const char *__str = (str);							\
  |  |  164|      0|	php_output_write(__str, strlen(__str));	\
  |  |  165|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  143|    184|		} else {
  144|    184|			PHPWRITE(ZSTR_VAL(ini_entry->name), ZSTR_LEN(ini_entry->name));
  ------------------
  |  |  156|    184|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  145|    184|			PUTS(" => ");
  ------------------
  |  |  162|    184|#define PUTS(str)					do {				\
  |  |  163|    184|	const char *__str = (str);							\
  |  |  164|    184|	php_output_write(__str, strlen(__str));	\
  |  |  165|    184|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 184]
  |  |  ------------------
  ------------------
  146|    184|			php_ini_displayer_cb(ini_entry, ZEND_INI_DISPLAY_ACTIVE);
  ------------------
  |  |  221|    184|#define ZEND_INI_DISPLAY_ACTIVE	2
  ------------------
  147|    184|			PUTS(" => ");
  ------------------
  |  |  162|    184|#define PUTS(str)					do {				\
  |  |  163|    184|	const char *__str = (str);							\
  |  |  164|    184|	php_output_write(__str, strlen(__str));	\
  |  |  165|    184|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 184]
  |  |  ------------------
  ------------------
  148|    184|			php_ini_displayer_cb(ini_entry, ZEND_INI_DISPLAY_ORIG);
  ------------------
  |  |  220|    184|#define ZEND_INI_DISPLAY_ORIG	1
  ------------------
  149|    184|			PUTS("\n");
  ------------------
  |  |  162|    184|#define PUTS(str)					do {				\
  |  |  163|    184|	const char *__str = (str);							\
  |  |  164|    184|	php_output_write(__str, strlen(__str));	\
  |  |  165|    184|} while (0)
  |  |  ------------------
  |  |  |  Branch (165:10): [Folded, False: 184]
  |  |  ------------------
  ------------------
  150|    184|		}
  151|    184|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|    184|		} \
  |  | 1102|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  152|      8|	if (!first) {
  ------------------
  |  Branch (152:6): [True: 7, False: 1]
  ------------------
  153|      7|		php_info_print_table_end();
  154|      7|	}
  155|      8|}
php_init_config:
  408|      2|{
  409|      2|	char *php_ini_file_name = NULL;
  410|      2|	char *php_ini_search_path = NULL;
  411|      2|	size_t php_ini_scanned_path_len;
  412|      2|	char *open_basedir;
  413|      2|	bool free_ini_search_path = false;
  414|      2|	zend_string *opened_path = NULL;
  415|       |
  416|      2|	zend_hash_init(&configuration_hash, 8, NULL, config_zval_dtor, true);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  417|       |
  418|      2|	if (sapi_module.ini_defaults) {
  ------------------
  |  Branch (418:6): [True: 0, False: 2]
  ------------------
  419|      0|		sapi_module.ini_defaults(&configuration_hash);
  420|      0|	}
  421|       |
  422|      2|	zend_llist_init(&extension_lists.engine, sizeof(char *), (llist_dtor_func_t) free_estring, true);
  423|      2|	zend_llist_init(&extension_lists.functions, sizeof(char *), (llist_dtor_func_t) free_estring, true);
  424|       |
  425|      2|	open_basedir = PG(open_basedir);
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  426|       |
  427|      2|	if (sapi_module.php_ini_path_override) {
  ------------------
  |  Branch (427:6): [True: 0, False: 2]
  ------------------
  428|      0|		php_ini_file_name = sapi_module.php_ini_path_override;
  429|      0|		php_ini_search_path = sapi_module.php_ini_path_override;
  430|      0|		free_ini_search_path = false;
  431|      2|	} else if (!sapi_module.php_ini_ignore) {
  ------------------
  |  Branch (431:13): [True: 2, False: 0]
  ------------------
  432|      2|		size_t search_path_size;
  433|      2|		char *default_location;
  434|      2|		char *env_location;
  435|       |#ifdef PHP_WIN32
  436|       |		char *reg_location;
  437|       |		char phprc_path[MAXPATHLEN];
  438|       |#endif
  439|       |
  440|      2|		env_location = getenv("PHPRC");
  441|       |
  442|       |#ifdef PHP_WIN32
  443|       |		if (!env_location) {
  444|       |			char dummybuf;
  445|       |			int size;
  446|       |
  447|       |			SetLastError(0);
  448|       |
  449|       |			/*If the given buffer is not large enough to hold the data, the return value is
  450|       |			the buffer size,  in characters, required to hold the string and its terminating
  451|       |			null character. We use this return value to alloc the final buffer. */
  452|       |			size = GetEnvironmentVariableA("PHPRC", &dummybuf, 0);
  453|       |			if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) {
  454|       |				/* The environment variable doesn't exist. */
  455|       |				env_location = "";
  456|       |			} else {
  457|       |				if (size == 0) {
  458|       |					env_location = "";
  459|       |				} else {
  460|       |					size = GetEnvironmentVariableA("PHPRC", phprc_path, size);
  461|       |					if (size == 0) {
  462|       |						env_location = "";
  463|       |					} else {
  464|       |						env_location = phprc_path;
  465|       |					}
  466|       |				}
  467|       |			}
  468|       |		}
  469|       |#else
  470|      2|		if (!env_location) {
  ------------------
  |  Branch (470:7): [True: 2, False: 0]
  ------------------
  471|      2|			env_location = "";
  472|      2|		}
  473|      2|#endif
  474|       |		/*
  475|       |		 * Prepare search path
  476|       |		 */
  477|       |
  478|      2|		search_path_size = MAXPATHLEN * 4 + strlen(env_location) + 3 + 1;
  479|      2|		php_ini_search_path = (char *) emalloc(search_path_size);
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  480|      2|		free_ini_search_path = true;
  481|      2|		php_ini_search_path[0] = 0;
  482|       |
  483|       |		/* Add environment location */
  484|      2|		if (env_location[0]) {
  ------------------
  |  Branch (484:7): [True: 0, False: 2]
  ------------------
  485|      0|			append_ini_path(php_ini_search_path, search_path_size, env_location);
  486|      0|			php_ini_file_name = env_location;
  487|      0|		}
  488|       |
  489|       |#ifdef PHP_WIN32
  490|       |		/* Add registry location */
  491|       |		reg_location = GetIniPathFromRegistry();
  492|       |		if (reg_location != NULL) {
  493|       |			append_ini_path(php_ini_search_path, search_path_size, reg_location);
  494|       |			efree(reg_location);
  495|       |		}
  496|       |#endif
  497|       |
  498|       |		/* Add cwd (not with CLI) */
  499|      2|		if (!sapi_module.php_ini_ignore_cwd) {
  ------------------
  |  Branch (499:7): [True: 2, False: 0]
  ------------------
  500|      2|			append_ini_path(php_ini_search_path, search_path_size, ".");
  501|      2|		}
  502|       |
  503|      2|		if (PG(php_binary)) {
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  504|      0|			char *separator_location, *binary_location;
  505|       |
  506|      0|			binary_location = estrdup(PG(php_binary));
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  507|      0|			separator_location = strrchr(binary_location, DEFAULT_SLASH);
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
  508|       |
  509|      0|			if (separator_location && separator_location != binary_location) {
  ------------------
  |  Branch (509:8): [True: 0, False: 0]
  |  Branch (509:30): [True: 0, False: 0]
  ------------------
  510|      0|				*(separator_location) = 0;
  511|      0|			}
  512|      0|			append_ini_path(php_ini_search_path, search_path_size, binary_location);
  513|       |
  514|      0|			efree(binary_location);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  515|      0|		}
  516|       |
  517|       |		/* Add default location */
  518|       |#ifdef PHP_WIN32
  519|       |		default_location = (char *) emalloc(MAXPATHLEN + 1);
  520|       |
  521|       |		if (0 < GetWindowsDirectory(default_location, MAXPATHLEN)) {
  522|       |			append_ini_path(php_ini_search_path, search_path_size, default_location);
  523|       |		}
  524|       |
  525|       |		/* For people running under terminal services, GetWindowsDirectory will
  526|       |		 * return their personal Windows directory, so lets add the system
  527|       |		 * windows directory too */
  528|       |		if (0 < GetSystemWindowsDirectory(default_location, MAXPATHLEN)) {
  529|       |			append_ini_path(php_ini_search_path, search_path_size, default_location);
  530|       |		}
  531|       |		efree(default_location);
  532|       |
  533|       |#else
  534|      2|		default_location = PHP_CONFIG_FILE_PATH;
  ------------------
  |  |   28|      2|#define PHP_CONFIG_FILE_PATH    "/usr/local/lib"
  ------------------
  535|      2|		append_ini_path(php_ini_search_path, search_path_size, default_location);
  536|      2|#endif
  537|      2|	}
  538|       |
  539|      2|	PG(open_basedir) = NULL;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  540|       |
  541|       |	/*
  542|       |	 * Find and open actual ini file
  543|       |	 */
  544|       |
  545|      2|	FILE *fp = NULL;
  546|      2|	char *filename = NULL;
  547|      2|	bool free_filename = false;
  548|       |
  549|       |	/* If SAPI does not want to ignore all ini files OR an overriding file/path is given.
  550|       |	 * This allows disabling scanning for ini files in the PHP_CONFIG_FILE_SCAN_DIR but still
  551|       |	 * load an optional ini file. */
  552|      2|	if (!sapi_module.php_ini_ignore || sapi_module.php_ini_path_override) {
  ------------------
  |  Branch (552:6): [True: 2, False: 0]
  |  Branch (552:37): [True: 0, False: 0]
  ------------------
  553|       |
  554|       |		/* Check if php_ini_file_name is a file and can be opened */
  555|      2|		if (php_ini_file_name && php_ini_file_name[0]) {
  ------------------
  |  Branch (555:7): [True: 0, False: 2]
  |  Branch (555:28): [True: 0, False: 0]
  ------------------
  556|      0|			zend_stat_t statbuf = {0};
  557|       |
  558|      0|			if (!VCWD_STAT(php_ini_file_name, &statbuf)) {
  ------------------
  |  |  334|      0|#define VCWD_STAT(path, buff) php_sys_stat(path, buff)
  |  |  ------------------
  |  |  |  |  155|      0|# define php_sys_stat stat
  |  |  ------------------
  ------------------
  |  Branch (558:8): [True: 0, False: 0]
  ------------------
  559|      0|				if (!((statbuf.st_mode & S_IFMT) == S_IFDIR)) {
  ------------------
  |  Branch (559:9): [True: 0, False: 0]
  ------------------
  560|      0|					fp = VCWD_FOPEN(php_ini_file_name, "r");
  ------------------
  |  |  319|      0|#define VCWD_FOPEN(path, mode)  fopen(path, mode)
  ------------------
  561|      0|					if (fp) {
  ------------------
  |  Branch (561:10): [True: 0, False: 0]
  ------------------
  562|      0|						filename = expand_filepath(php_ini_file_name, NULL);
  563|      0|						free_filename = true;
  564|      0|					}
  565|      0|				}
  566|      0|			}
  567|      0|		}
  568|       |
  569|       |		/* Otherwise search for php-%sapi-module-name%.ini file in search path */
  570|      2|		if (!fp) {
  ------------------
  |  Branch (570:7): [True: 2, False: 0]
  ------------------
  571|      2|			const char *fmt = "php-%s.ini";
  572|      2|			char *ini_fname;
  573|      2|			spprintf(&ini_fname, 0, fmt, sapi_module.name);
  ------------------
  |  |   27|      2|#define spprintf zend_spprintf
  ------------------
  574|      2|			fp = php_fopen_with_path(ini_fname, "r", php_ini_search_path, &opened_path);
  575|      2|			efree(ini_fname);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  576|      2|			if (fp) {
  ------------------
  |  Branch (576:8): [True: 0, False: 2]
  ------------------
  577|      0|				filename = ZSTR_VAL(opened_path);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  578|      0|			}
  579|      2|		}
  580|       |
  581|       |		/* If still no ini file found, search for php.ini file in search path */
  582|      2|		if (!fp) {
  ------------------
  |  Branch (582:7): [True: 2, False: 0]
  ------------------
  583|      2|			fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &opened_path);
  584|      2|			if (fp) {
  ------------------
  |  Branch (584:8): [True: 0, False: 2]
  ------------------
  585|      0|				filename = ZSTR_VAL(opened_path);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  586|      0|			}
  587|      2|		}
  588|      2|	}
  589|       |
  590|      2|	if (free_ini_search_path) {
  ------------------
  |  Branch (590:6): [True: 2, False: 0]
  ------------------
  591|      2|		efree(php_ini_search_path);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|      2|	}
  593|       |
  594|      2|	PG(open_basedir) = open_basedir;
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  595|       |
  596|      2|	if (fp) {
  ------------------
  |  Branch (596:6): [True: 0, False: 2]
  ------------------
  597|      0|		zend_file_handle fh;
  598|      0|		zend_stream_init_fp(&fh, fp, filename);
  599|      0|		RESET_ACTIVE_INI_HASH();
  ------------------
  |  |  173|      0|#define RESET_ACTIVE_INI_HASH() do { \
  |  |  174|      0|	active_ini_hash = NULL;          \
  |  |  175|      0|	is_special_section = false;      \
  |  |  176|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (176:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  600|       |
  601|      0|		zend_parse_ini_file(&fh, true, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash);
  ------------------
  |  |   27|      0|#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
  ------------------
  602|       |
  603|      0|		{
  604|      0|			zval tmp;
  605|       |
  606|      0|			ZVAL_NEW_STR(&tmp, zend_string_init(filename, strlen(filename), true));
  ------------------
  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  | 1106|      0|		zval *__z = (z);						\
  |  | 1107|      0|		zend_string *__s = (s);					\
  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  ------------------
  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  ------------------
  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1110|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  607|      0|			zend_hash_str_update(&configuration_hash, "cfg_file_path", sizeof("cfg_file_path")-1, &tmp);
  608|      0|			if (opened_path) {
  ------------------
  |  Branch (608:8): [True: 0, False: 0]
  ------------------
  609|      0|				zend_string_release_ex(opened_path, false);
  610|      0|			}
  611|      0|			php_ini_opened_path = zend_strndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
              			php_ini_opened_path = zend_strndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
  ------------------
  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  612|      0|		}
  613|      0|		zend_destroy_file_handle(&fh);
  614|       |
  615|      0|		if (free_filename) {
  ------------------
  |  Branch (615:7): [True: 0, False: 0]
  ------------------
  616|      0|			efree(filename);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|      0|		}
  618|      0|	}
  619|       |
  620|       |	/* Check for PHP_INI_SCAN_DIR environment variable to override/set config file scan directory */
  621|      2|	php_ini_scanned_path = getenv("PHP_INI_SCAN_DIR");
  622|      2|	if (!php_ini_scanned_path) {
  ------------------
  |  Branch (622:6): [True: 2, False: 0]
  ------------------
  623|       |		/* Or fall back using possible --with-config-file-scan-dir setting (defaults to empty string!) */
  624|      2|		php_ini_scanned_path = PHP_CONFIG_FILE_SCAN_DIR;
  ------------------
  |  |   29|      2|#define PHP_CONFIG_FILE_SCAN_DIR    ""
  ------------------
  625|      2|	}
  626|      2|	php_ini_scanned_path_len = strlen(php_ini_scanned_path);
  627|       |
  628|       |	/* Scan and parse any .ini files found in scan path if path not empty. */
  629|      2|	if (!sapi_module.php_ini_ignore && php_ini_scanned_path_len) {
  ------------------
  |  Branch (629:6): [True: 2, False: 0]
  |  Branch (629:37): [True: 0, False: 2]
  ------------------
  630|      0|		struct dirent **namelist;
  631|      0|		zend_stat_t sb = {0};
  632|      0|		char ini_file[MAXPATHLEN];
  633|      0|		char *p;
  634|      0|		zend_llist scanned_ini_list;
  635|      0|		size_t total_l = 0;
  636|      0|		char *bufpath, *debpath, *endpath;
  637|      0|		size_t lenpath;
  638|       |
  639|      0|		zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, true);
  640|       |
  641|      0|		bufpath = estrdup(php_ini_scanned_path);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  642|      0|		for (debpath = bufpath ; debpath ; debpath=endpath) {
  ------------------
  |  Branch (642:28): [True: 0, False: 0]
  ------------------
  643|      0|			endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR);
  ------------------
  |  |  110|      0|#define DEFAULT_DIR_SEPARATOR  ':'
  ------------------
  644|      0|			if (endpath) {
  ------------------
  |  Branch (644:8): [True: 0, False: 0]
  ------------------
  645|      0|				*(endpath++) = 0;
  646|      0|			}
  647|      0|			if (!debpath[0]) {
  ------------------
  |  Branch (647:8): [True: 0, False: 0]
  ------------------
  648|       |				/* empty string means default builtin value
  649|       |				   to allow "/foo/php.d:" or ":/foo/php.d" */
  650|      0|				debpath = PHP_CONFIG_FILE_SCAN_DIR;
  ------------------
  |  |   29|      0|#define PHP_CONFIG_FILE_SCAN_DIR    ""
  ------------------
  651|      0|			}
  652|      0|			lenpath = strlen(debpath);
  653|       |
  654|      0|			int ndir;
  655|      0|			if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, NULL, php_alphasort)) > 0) {
  ------------------
  |  |   33|      0|#define php_scandir		scandir
  ------------------
              			if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, NULL, php_alphasort)) > 0) {
  ------------------
  |  |   39|      0|#define php_alphasort	alphasort
  ------------------
  |  Branch (655:8): [True: 0, False: 0]
  |  Branch (655:23): [True: 0, False: 0]
  ------------------
  656|      0|				for (int i = 0; i < ndir; i++) {
  ------------------
  |  Branch (656:21): [True: 0, False: 0]
  ------------------
  657|       |
  658|       |					/* check for any file with .ini extension */
  659|      0|					if (!(p = strrchr(namelist[i]->d_name, '.')) || (p && strcmp(p, ".ini"))) {
  ------------------
  |  Branch (659:10): [True: 0, False: 0]
  |  Branch (659:55): [True: 0, False: 0]
  |  Branch (659:60): [True: 0, False: 0]
  ------------------
  660|      0|						free(namelist[i]);
  661|      0|						continue;
  662|      0|					}
  663|       |					/* Reset active ini section */
  664|      0|					RESET_ACTIVE_INI_HASH();
  ------------------
  |  |  173|      0|#define RESET_ACTIVE_INI_HASH() do { \
  |  |  174|      0|	active_ini_hash = NULL;          \
  |  |  175|      0|	is_special_section = false;      \
  |  |  176|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (176:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  665|       |
  666|      0|					if (IS_SLASH(debpath[lenpath - 1])) {
  ------------------
  |  |  113|      0|#define IS_SLASH(c)	((c) == '/')
  |  |  ------------------
  |  |  |  Branch (113:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  667|      0|						snprintf(ini_file, MAXPATHLEN, "%s%s", debpath, namelist[i]->d_name);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
  668|      0|					} else {
  669|      0|						snprintf(ini_file, MAXPATHLEN, "%s%c%s", debpath, DEFAULT_SLASH, namelist[i]->d_name);
  ------------------
  |  |   97|      0|#define snprintf ap_php_snprintf
  ------------------
              						snprintf(ini_file, MAXPATHLEN, "%s%c%s", debpath, DEFAULT_SLASH, namelist[i]->d_name);
  ------------------
  |  |  105|      0|#define DEFAULT_SLASH '/'
  ------------------
  670|      0|					}
  671|      0|					if (VCWD_STAT(ini_file, &sb) == 0) {
  ------------------
  |  |  334|      0|#define VCWD_STAT(path, buff) php_sys_stat(path, buff)
  |  |  ------------------
  |  |  |  |  155|      0|# define php_sys_stat stat
  |  |  ------------------
  ------------------
  |  Branch (671:10): [True: 0, False: 0]
  ------------------
  672|      0|						if (S_ISREG(sb.st_mode)) {
  ------------------
  |  Branch (672:11): [True: 0, False: 0]
  ------------------
  673|      0|							zend_file_handle fh;
  674|      0|							FILE *file = VCWD_FOPEN(ini_file, "r");
  ------------------
  |  |  319|      0|#define VCWD_FOPEN(path, mode)  fopen(path, mode)
  ------------------
  675|      0|							if (file) {
  ------------------
  |  Branch (675:12): [True: 0, False: 0]
  ------------------
  676|      0|								zend_stream_init_fp(&fh, file, ini_file);
  677|      0|								if (zend_parse_ini_file(&fh, true, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash) == SUCCESS) {
  ------------------
  |  |   27|      0|#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
  ------------------
  |  Branch (677:13): [True: 0, False: 0]
  ------------------
  678|       |									/* Here, add it to the list of ini files read */
  679|      0|									size_t l = strlen(ini_file);
  680|      0|									total_l += l + 2;
  681|      0|									p = estrndup(ini_file, l);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  682|      0|									zend_llist_add_element(&scanned_ini_list, &p);
  683|      0|								}
  684|      0|								zend_destroy_file_handle(&fh);
  685|      0|							}
  686|      0|						}
  687|      0|					}
  688|      0|					free(namelist[i]);
  689|      0|				}
  690|      0|				free(namelist);
  691|      0|			}
  692|      0|		}
  693|      0|		efree(bufpath);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  694|       |
  695|      0|		if (total_l) {
  ------------------
  |  Branch (695:7): [True: 0, False: 0]
  ------------------
  696|      0|			size_t php_ini_scanned_files_len = (php_ini_scanned_files) ? strlen(php_ini_scanned_files) + 1 : 0;
  ------------------
  |  Branch (696:39): [True: 0, False: 0]
  ------------------
  697|      0|			php_ini_scanned_files = (char *) perealloc(php_ini_scanned_files, php_ini_scanned_files_len + total_l + 1, true);
  ------------------
  |  |  200|      0|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, Folded]
  |  |  ------------------
  ------------------
  698|      0|			if (!php_ini_scanned_files_len) {
  ------------------
  |  Branch (698:8): [True: 0, False: 0]
  ------------------
  699|      0|				*php_ini_scanned_files = '\0';
  700|      0|			}
  701|      0|			total_l += php_ini_scanned_files_len;
  702|      0|			for (zend_llist_element *element = scanned_ini_list.head; element; element = element->next) {
  ------------------
  |  Branch (702:62): [True: 0, False: 0]
  ------------------
  703|      0|				if (php_ini_scanned_files_len) {
  ------------------
  |  Branch (703:9): [True: 0, False: 0]
  ------------------
  704|      0|					strlcat(php_ini_scanned_files, ",\n", total_l);
  ------------------
  |  |  159|      0|#define strlcat php_strlcat
  ------------------
  705|      0|				}
  706|      0|				strlcat(php_ini_scanned_files, *(char **)element->data, total_l);
  ------------------
  |  |  159|      0|#define strlcat php_strlcat
  ------------------
  707|      0|				strlcat(php_ini_scanned_files, element->next ? ",\n" : "\n", total_l);
  ------------------
  |  |  159|      0|#define strlcat php_strlcat
  ------------------
  |  Branch (707:36): [True: 0, False: 0]
  ------------------
  708|      0|			}
  709|      0|		}
  710|      0|		zend_llist_destroy(&scanned_ini_list);
  711|      2|	} else {
  712|       |		/* Make sure an empty php_ini_scanned_path ends up as NULL */
  713|      2|		php_ini_scanned_path = NULL;
  714|      2|	}
  715|       |
  716|      2|	if (sapi_module.ini_entries) {
  ------------------
  |  Branch (716:6): [True: 2, False: 0]
  ------------------
  717|       |		/* Reset active ini section */
  718|      2|		RESET_ACTIVE_INI_HASH();
  ------------------
  |  |  173|      2|#define RESET_ACTIVE_INI_HASH() do { \
  |  |  174|      2|	active_ini_hash = NULL;          \
  |  |  175|      2|	is_special_section = false;      \
  |  |  176|      2|} while (0)
  |  |  ------------------
  |  |  |  Branch (176:10): [Folded, False: 2]
  |  |  ------------------
  ------------------
  719|      2|		zend_parse_ini_string(sapi_module.ini_entries, true, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash);
  ------------------
  |  |   27|      2|#define ZEND_INI_SCANNER_NORMAL 0 /* Normal mode. [DEFAULT] */
  ------------------
  720|      2|	}
  721|      2|}
php_ini_register_extensions:
  741|      2|{
  742|      2|	zend_llist_apply(&extension_lists.engine, php_load_zend_extension_cb);
  743|      2|	zend_llist_apply(&extension_lists.functions, php_load_php_extension_cb);
  744|       |
  745|      2|	zend_llist_destroy(&extension_lists.engine);
  746|      2|	zend_llist_destroy(&extension_lists.functions);
  747|      2|}
cfg_get_entry_ex:
  878|    359|{
  879|    359|	return zend_hash_find(&configuration_hash, name);
  880|    359|}
cfg_get_long:
  892|     38|{
  893|     38|	zval *tmp;
  894|       |
  895|     38|	if ((tmp = zend_hash_str_find(&configuration_hash, varname, strlen(varname))) == NULL) {
  ------------------
  |  Branch (895:6): [True: 36, False: 2]
  ------------------
  896|     36|		*result = 0;
  897|     36|		return FAILURE;
  898|     36|	}
  899|      2|	*result = zval_get_long(tmp);
  900|      2|	return SUCCESS;
  901|     38|}
php_ini.c:php_ini_displayer_cb:
   67|    368|{
   68|    368|	if (ini_entry->displayer) {
  ------------------
  |  Branch (68:6): [True: 110, False: 258]
  ------------------
   69|    110|		ini_entry->displayer(ini_entry, type);
   70|    258|	} else {
   71|    258|		char *display_string;
   72|    258|		size_t display_string_length;
   73|    258|		int esc_html=0;
   74|       |
   75|    258|		if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) {
  ------------------
  |  |  220|    516|#define ZEND_INI_DISPLAY_ORIG	1
  ------------------
  |  Branch (75:7): [True: 129, False: 129]
  |  Branch (75:40): [True: 0, False: 129]
  ------------------
   76|      0|			if (ini_entry->orig_value && ZSTR_VAL(ini_entry->orig_value)[0]) {
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (76:8): [True: 0, False: 0]
  |  Branch (76:33): [True: 0, False: 0]
  ------------------
   77|      0|				display_string = ZSTR_VAL(ini_entry->orig_value);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   78|      0|				display_string_length = ZSTR_LEN(ini_entry->orig_value);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   79|      0|				esc_html = !sapi_module.phpinfo_as_text;
   80|      0|			} else {
   81|      0|				if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (81:9): [True: 0, False: 0]
  ------------------
   82|      0|					display_string = "<i>no value</i>";
   83|      0|					display_string_length = sizeof("<i>no value</i>") - 1;
   84|      0|				} else {
   85|      0|					display_string = "no value";
   86|      0|					display_string_length = sizeof("no value") - 1;
   87|      0|				}
   88|      0|			}
   89|    258|		} else if (ini_entry->value && ZSTR_VAL(ini_entry->value)[0]) {
  ------------------
  |  |   67|    208|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  |  Branch (89:14): [True: 208, False: 50]
  |  Branch (89:34): [True: 186, False: 22]
  ------------------
   90|    186|			display_string = ZSTR_VAL(ini_entry->value);
  ------------------
  |  |   67|    186|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   91|    186|			display_string_length = ZSTR_LEN(ini_entry->value);
  ------------------
  |  |   68|    186|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   92|    186|			esc_html = !sapi_module.phpinfo_as_text;
   93|    186|		} else {
   94|     72|			if (!sapi_module.phpinfo_as_text) {
  ------------------
  |  Branch (94:8): [True: 0, False: 72]
  ------------------
   95|      0|				display_string = "<i>no value</i>";
   96|      0|				display_string_length = sizeof("<i>no value</i>") - 1;
   97|     72|			} else {
   98|     72|				display_string = "no value";
   99|     72|				display_string_length = sizeof("no value") - 1;
  100|     72|			}
  101|     72|		}
  102|       |
  103|    258|		if (esc_html) {
  ------------------
  |  Branch (103:7): [True: 0, False: 258]
  ------------------
  104|      0|			php_html_puts(display_string, display_string_length);
  105|    258|		} else {
  106|    258|			PHPWRITE(display_string, display_string_length);
  ------------------
  |  |  156|    258|#define PHPWRITE(str, str_len)		php_output_write((str), (str_len))
  ------------------
  107|    258|		}
  108|    258|	}
  109|    368|}
php_ini.c:append_ini_path:
  396|      4|{
  397|      4|	static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 };
  ------------------
  |  |   43|      4|# define ZEND_PATHS_SEPARATOR		':'
  ------------------
  398|       |
  399|      4|	if (*php_ini_search_path) {
  ------------------
  |  Branch (399:6): [True: 2, False: 2]
  ------------------
  400|      2|		strlcat(php_ini_search_path, paths_separator, search_path_size);
  ------------------
  |  |  159|      2|#define strlcat php_strlcat
  ------------------
  401|      2|	}
  402|       |
  403|      4|	strlcat(php_ini_search_path, path, search_path_size);
  ------------------
  |  |  159|      4|#define strlcat php_strlcat
  ------------------
  404|      4|}
php_ini.c:php_ini_parser_cb:
  181|     22|{
  182|     22|	zval *entry;
  183|     22|	HashTable *active_hash;
  184|     22|	char *extension_name;
  185|       |
  186|     22|	if (active_ini_hash) {
  ------------------
  |  Branch (186:6): [True: 0, False: 22]
  ------------------
  187|      0|		active_hash = active_ini_hash;
  188|     22|	} else {
  189|     22|		active_hash = target_hash;
  190|     22|	}
  191|       |
  192|     22|	switch (callback_type) {
  ------------------
  |  Branch (192:10): [True: 22, False: 0]
  ------------------
  193|     22|		case ZEND_INI_PARSER_ENTRY: {
  ------------------
  |  |  240|     22|#define ZEND_INI_PARSER_ENTRY     1 /* Normal entry: foo = bar */
  ------------------
  |  Branch (193:3): [True: 22, False: 0]
  ------------------
  194|     22|				if (!arg2) {
  ------------------
  |  Branch (194:9): [True: 0, False: 22]
  ------------------
  195|       |					/* bare string - nothing to do */
  196|      0|					break;
  197|      0|				}
  198|       |
  199|       |				/* PHP and Zend extensions are not added into configuration hash! */
  200|     22|				if (!is_special_section && zend_string_equals_literal_ci(Z_STR_P(arg1), PHP_EXTENSION_TOKEN)) { /* load PHP extension */
  ------------------
  |  |  404|     22|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 0, False: 22]
  |  |  |  Branch (404:40): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (200:9): [True: 22, False: 0]
  ------------------
  201|      0|					extension_name = estrndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2));
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|      0|					zend_llist_add_element(&extension_lists.functions, &extension_name);
  203|     22|				} else if (!is_special_section && zend_string_equals_literal_ci(Z_STR_P(arg1), ZEND_EXTENSION_TOKEN)) { /* load Zend extension */
  ------------------
  |  |  404|     22|	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|     22|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               	(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))
  |  |  ------------------
  |  |  |  |   68|      2|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  |  Branch (404:3): [True: 2, False: 20]
  |  |  |  Branch (404:40): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (203:16): [True: 22, False: 0]
  ------------------
  204|      0|					extension_name = estrndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2));
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|      0|					zend_llist_add_element(&extension_lists.engine, &extension_name);
  206|       |
  207|       |				/* All other entries are added into either configuration_hash or active ini section array */
  208|     22|				} else {
  209|       |					/* Store in active hash */
  210|     22|					entry = zend_hash_update(active_hash, Z_STR_P(arg1), arg2);
  ------------------
  |  |  982|     22|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     22|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  211|     22|					Z_STR_P(entry) = zend_string_dup(Z_STR_P(entry), true);
  ------------------
  |  |  982|     22|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     22|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              					Z_STR_P(entry) = zend_string_dup(Z_STR_P(entry), true);
  ------------------
  |  |  982|     22|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|     22|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  212|     22|				}
  213|     22|			}
  214|      0|			break;
  215|       |
  216|      0|		case ZEND_INI_PARSER_POP_ENTRY: {
  ------------------
  |  |  242|      0|#define ZEND_INI_PARSER_POP_ENTRY 3 /* Offset entry: foo[] = bar */
  ------------------
  |  Branch (216:3): [True: 0, False: 22]
  ------------------
  217|      0|				zval option_arr;
  218|      0|				zval *find_arr;
  219|       |
  220|      0|				if (!arg2) {
  ------------------
  |  Branch (220:9): [True: 0, False: 0]
  ------------------
  221|       |					/* bare string - nothing to do */
  222|      0|					break;
  223|      0|				}
  224|       |
  225|       |/* fprintf(stdout, "ZEND_INI_PARSER_POP_ENTRY: %s[%s] = %s\n",Z_STRVAL_P(arg1), Z_STRVAL_P(arg3), Z_STRVAL_P(arg2)); */
  226|       |
  227|       |				/* If option not found in hash or is not an array -> create array, otherwise add to existing array */
  228|      0|				if ((find_arr = zend_hash_find(active_hash, Z_STR_P(arg1))) == NULL || Z_TYPE_P(find_arr) != IS_ARRAY) {
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				if ((find_arr = zend_hash_find(active_hash, Z_STR_P(arg1))) == NULL || Z_TYPE_P(find_arr) != IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              				if ((find_arr = zend_hash_find(active_hash, Z_STR_P(arg1))) == NULL || Z_TYPE_P(find_arr) != IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (228:9): [True: 0, False: 0]
  |  Branch (228:76): [True: 0, False: 0]
  ------------------
  229|      0|					ZVAL_NEW_PERSISTENT_ARR(&option_arr);
  ------------------
  |  | 1132|      0|#define ZVAL_NEW_PERSISTENT_ARR(z) do {							\
  |  | 1133|      0|		zval *__z = (z);										\
  |  | 1134|      0|		zend_array *_arr =										\
  |  | 1135|      0|		(zend_array *) malloc(sizeof(zend_array));				\
  |  | 1136|      0|		Z_ARR_P(__z) = _arr;									\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1137|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;						\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  230|      0|					zend_hash_init(Z_ARRVAL(option_arr), 8, NULL, config_zval_dtor, true);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  231|      0|					find_arr = zend_hash_update(active_hash, Z_STR_P(arg1), &option_arr);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  232|      0|				}
  233|       |
  234|       |				/* arg3 is possible option offset name */
  235|      0|				if (arg3 && Z_STRLEN_P(arg3) > 0) {
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (235:9): [True: 0, False: 0]
  |  Branch (235:17): [True: 0, False: 0]
  ------------------
  236|      0|					entry = zend_symtable_update(Z_ARRVAL_P(find_arr), Z_STR_P(arg3), arg2);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              					entry = zend_symtable_update(Z_ARRVAL_P(find_arr), Z_STR_P(arg3), arg2);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  237|      0|				} else {
  238|      0|					entry = zend_hash_next_index_insert(Z_ARRVAL_P(find_arr), arg2);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|      0|				}
  240|      0|				Z_STR_P(entry) = zend_string_dup(Z_STR_P(entry), true);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
              				Z_STR_P(entry) = zend_string_dup(Z_STR_P(entry), true);
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  241|      0|			}
  242|      0|			break;
  243|       |
  244|      0|		case ZEND_INI_PARSER_SECTION: { /* Create an array of entries of each section */
  ------------------
  |  |  241|      0|#define ZEND_INI_PARSER_SECTION	  2 /* Section: [foobar] */
  ------------------
  |  Branch (244:3): [True: 0, False: 22]
  ------------------
  245|       |
  246|       |/* fprintf(stdout, "ZEND_INI_PARSER_SECTION: %s\n",Z_STRVAL_P(arg1)); */
  247|       |
  248|      0|				char *key = NULL;
  249|      0|				size_t key_len;
  250|       |
  251|       |				/* PATH sections */
  252|      0|				if (zend_string_starts_with_literal_ci(Z_STR_P(arg1), "PATH")) {
  ------------------
  |  |  433|      0|	zend_string_starts_with_cstr_ci(str, "" prefix, sizeof(prefix) - 1)
  |  |  ------------------
  |  |  |  Branch (433:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  253|      0|					key = Z_STRVAL_P(arg1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  254|      0|					key = key + sizeof("PATH") - 1;
  255|      0|					key_len = Z_STRLEN_P(arg1) - sizeof("PATH") + 1;
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|      0|					is_special_section = true;
  257|      0|					has_per_dir_config = true;
  258|       |
  259|       |					/* make the path lowercase on Windows, for case insensitivity. Does nothing for other platforms */
  260|      0|					TRANSLATE_SLASHES_LOWER(key);
  261|       |
  262|       |				/* HOST sections */
  263|      0|				} else if (zend_string_starts_with_literal_ci(Z_STR_P(arg1), "HOST")) {
  ------------------
  |  |  433|      0|	zend_string_starts_with_cstr_ci(str, "" prefix, sizeof(prefix) - 1)
  |  |  ------------------
  |  |  |  Branch (433:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  264|      0|					key = Z_STRVAL_P(arg1);
  ------------------
  |  |  985|      0|#define Z_STRVAL_P(zval_p)			Z_STRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  265|      0|					key = key + sizeof("HOST") - 1;
  266|      0|					key_len = Z_STRLEN_P(arg1) - sizeof("HOST") + 1;
  ------------------
  |  |  988|      0|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|      0|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  267|      0|					is_special_section = true;
  268|      0|					has_per_host_config = true;
  269|      0|					zend_str_tolower(key, key_len); /* host names are case-insensitive. */
  270|       |
  271|      0|				} else {
  272|      0|					is_special_section = false;
  273|      0|				}
  274|       |
  275|      0|				if (key && key_len > 0) {
  ------------------
  |  Branch (275:9): [True: 0, False: 0]
  |  Branch (275:16): [True: 0, False: 0]
  ------------------
  276|       |					/* Strip any trailing slashes */
  277|      0|					while (key_len > 0 && (key[key_len - 1] == '/' || key[key_len - 1] == '\\')) {
  ------------------
  |  Branch (277:13): [True: 0, False: 0]
  |  Branch (277:29): [True: 0, False: 0]
  |  Branch (277:56): [True: 0, False: 0]
  ------------------
  278|      0|						key_len--;
  279|      0|						key[key_len] = 0;
  280|      0|					}
  281|       |
  282|       |					/* Strip any leading whitespace and '=' */
  283|      0|					while (*key && (
  ------------------
  |  Branch (283:13): [True: 0, False: 0]
  ------------------
  284|      0|						*key == '=' ||
  ------------------
  |  Branch (284:7): [True: 0, False: 0]
  ------------------
  285|      0|						*key == ' ' ||
  ------------------
  |  Branch (285:7): [True: 0, False: 0]
  ------------------
  286|      0|						*key == '\t'
  ------------------
  |  Branch (286:7): [True: 0, False: 0]
  ------------------
  287|      0|					)) {
  288|      0|						key++;
  289|      0|						key_len--;
  290|      0|					}
  291|       |
  292|       |					/* Search for existing entry and if it does not exist create one */
  293|      0|					if ((entry = zend_hash_str_find(target_hash, key, key_len)) == NULL) {
  ------------------
  |  Branch (293:10): [True: 0, False: 0]
  ------------------
  294|      0|						zval section_arr;
  295|       |
  296|      0|						ZVAL_NEW_PERSISTENT_ARR(&section_arr);
  ------------------
  |  | 1132|      0|#define ZVAL_NEW_PERSISTENT_ARR(z) do {							\
  |  | 1133|      0|		zval *__z = (z);										\
  |  | 1134|      0|		zend_array *_arr =										\
  |  | 1135|      0|		(zend_array *) malloc(sizeof(zend_array));				\
  |  | 1136|      0|		Z_ARR_P(__z) = _arr;									\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1137|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;						\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;						\
  |  |  ------------------
  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1138|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1138:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  297|      0|						zend_hash_init(Z_ARRVAL(section_arr), 8, NULL, (dtor_func_t) config_zval_dtor, true);
  ------------------
  |  |  111|      0|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  298|      0|						entry = zend_hash_str_update(target_hash, key, key_len, &section_arr);
  299|      0|					}
  300|      0|					if (Z_TYPE_P(entry) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(entry) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (300:10): [True: 0, False: 0]
  ------------------
  301|      0|						active_ini_hash = Z_ARRVAL_P(entry);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|      0|					}
  303|      0|				}
  304|      0|			}
  305|      0|			break;
  306|     22|	}
  307|     22|}

ZendAccelerator.c:php_is_stream_path:
  670|  5.33k|{
  671|  5.33k|	const char *p;
  672|       |
  673|  5.33k|	for (p = filename;
  674|  11.5k|	     (*p >= 'a' && *p <= 'z') ||
  ------------------
  |  Branch (674:8): [True: 4.22k, False: 7.36k]
  |  Branch (674:21): [True: 4.22k, False: 0]
  ------------------
  675|  7.36k|	     (*p >= 'A' && *p <= 'Z') ||
  ------------------
  |  Branch (675:8): [True: 9, False: 7.35k]
  |  Branch (675:21): [True: 5, False: 4]
  ------------------
  676|  7.36k|	     (*p >= '0' && *p <= '9') ||
  ------------------
  |  Branch (676:8): [True: 3.34k, False: 4.01k]
  |  Branch (676:21): [True: 2.00k, False: 1.34k]
  ------------------
  677|  5.35k|	     *p == '+' || *p == '-' || *p == '.';
  ------------------
  |  Branch (677:7): [True: 0, False: 5.35k]
  |  Branch (677:20): [True: 1, False: 5.35k]
  |  Branch (677:33): [True: 23, False: 5.33k]
  ------------------
  678|  6.25k|	     p++);
  679|  5.33k|	return ((p != filename) && (p[0] == ':') && (p[1] == '/') && (p[2] == '/'));
  ------------------
  |  Branch (679:10): [True: 3.34k, False: 1.99k]
  |  Branch (679:29): [True: 1.33k, False: 2.00k]
  |  Branch (679:46): [True: 1.33k, False: 2]
  |  Branch (679:63): [True: 1.33k, False: 0]
  ------------------
  680|  5.33k|}

php_closelog:
   79|  33.5k|{
   80|  33.5k|	closelog();
   81|  33.5k|	PG(have_called_openlog) = 0;
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
   82|  33.5k|}

php_startup_ticks:
   25|      2|{
   26|      2|	zend_llist_init(&PG(tick_functions), sizeof(struct st_tick_function), NULL, 1);
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
   27|      2|}
php_deactivate_ticks:
   30|  33.5k|{
   31|  33.5k|	zend_llist_clean(&PG(tick_functions));
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
   32|  33.5k|}
php_add_tick_function:
   47|      7|{
   48|      7|	struct st_tick_function tmp = {func, arg};
   49|      7|	zend_llist_add_element(&PG(tick_functions), (void *)&tmp);
  ------------------
  |  |   29|      7|# define PG(v) (core_globals.v)
  ------------------
   50|      7|}
php_run_ticks:
   65|     18|{
   66|     18|	zend_llist_apply_with_argument(&PG(tick_functions), (llist_apply_with_arg_func_t) php_tick_iterator, &count);
  ------------------
  |  |   29|     18|# define PG(v) (core_globals.v)
  ------------------
   67|     18|}
php_ticks.c:php_tick_iterator:
   59|      8|{
   60|      8|	struct st_tick_function *data = (struct st_tick_function *)d;
   61|      8|	data->func(*((int *)arg), data->arg);
   62|      8|}

php_register_variable:
   35|  33.5k|{
   36|  33.5k|	php_register_variable_safe(var, strval, strlen(strval), track_vars_array);
   37|  33.5k|}
php_register_variable_safe:
   41|  33.5k|{
   42|  33.5k|	zval new_entry;
   43|  33.5k|	assert(strval != NULL);
  ------------------
  |  Branch (43:2): [True: 0, False: 33.5k]
  |  Branch (43:2): [True: 33.5k, False: 0]
  ------------------
   44|       |
   45|  33.5k|	ZVAL_STRINGL_FAST(&new_entry, strval, str_len);
  ------------------
  |  |  994|  33.5k|#define ZVAL_STRINGL_FAST(z, s, l) do {			\
  |  |  995|  33.5k|		ZVAL_STR(z, zend_string_init_fast(s, l));	\
  |  |  ------------------
  |  |  |  | 1088|  33.5k|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|  33.5k|		zval *__z = (z);						\
  |  |  |  | 1090|  33.5k|		zend_string *__s = (s);					\
  |  |  |  | 1091|  33.5k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|  33.5k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|  33.5k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|  33.5k|		/* interned strings support */			\
  |  |  |  | 1093|  33.5k|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 0, False: 33.5k]
  |  |  |  |  ------------------
  |  |  |  | 1094|  33.5k|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|      0|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|  33.5k|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|  67.1k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  33.5k|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  33.5k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|  33.5k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|  33.5k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  996|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (996:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
   46|       |
   47|  33.5k|	php_register_variable_ex(var, &new_entry, track_vars_array);
   48|  33.5k|}
php_register_variable_ex:
  107|  33.5k|{
  108|  33.5k|	char *p = NULL;
  109|  33.5k|	char *ip = NULL;		/* index pointer */
  110|  33.5k|	char *index;
  111|  33.5k|	char *var, *var_orig;
  112|  33.5k|	size_t var_len, index_len;
  113|  33.5k|	zval gpc_element, *gpc_element_p;
  114|  33.5k|	bool is_array = 0;
  115|  33.5k|	HashTable *symtable1 = NULL;
  116|  33.5k|	ALLOCA_FLAG(use_heap)
  117|       |
  118|  33.5k|	assert(var_name != NULL);
  ------------------
  |  Branch (118:2): [True: 0, False: 33.5k]
  |  Branch (118:2): [True: 33.5k, False: 0]
  ------------------
  119|       |
  120|  33.5k|	if (track_vars_array && Z_TYPE_P(track_vars_array) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (track_vars_array && Z_TYPE_P(track_vars_array) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (120:6): [True: 0, False: 33.5k]
  |  Branch (120:26): [True: 0, False: 0]
  ------------------
  121|      0|		symtable1 = Z_ARRVAL_P(track_vars_array);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|      0|	}
  123|       |
  124|  33.5k|	if (!symtable1) {
  ------------------
  |  Branch (124:6): [True: 33.5k, False: 0]
  ------------------
  125|       |		/* Nothing to do */
  126|  33.5k|		zval_ptr_dtor_nogc(val);
  127|  33.5k|		return;
  128|  33.5k|	}
  129|       |
  130|       |
  131|       |	/* ignore leading spaces in the variable name */
  132|      0|	while (*var_name==' ') {
  ------------------
  |  Branch (132:9): [True: 0, False: 0]
  ------------------
  133|      0|		var_name++;
  134|      0|	}
  135|       |
  136|       |	/*
  137|       |	 * Prepare variable name
  138|       |	 */
  139|      0|	var_len = strlen(var_name);
  140|      0|	var = var_orig = do_alloca(var_len + 1, use_heap);
  ------------------
  |  |  247|      0|# define do_alloca(p, use_heap)		emalloc(p)
  |  |  ------------------
  |  |  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|      0|	memcpy(var_orig, var_name, var_len + 1);
  142|       |
  143|       |	/* ensure that we don't have spaces or dots in the variable name (not binary safe) */
  144|      0|	for (p = var; *p; p++) {
  ------------------
  |  Branch (144:16): [True: 0, False: 0]
  ------------------
  145|      0|		if (*p == ' ' || *p == '.') {
  ------------------
  |  Branch (145:7): [True: 0, False: 0]
  |  Branch (145:20): [True: 0, False: 0]
  ------------------
  146|      0|			*p='_';
  147|      0|		} else if (*p == '[') {
  ------------------
  |  Branch (147:14): [True: 0, False: 0]
  ------------------
  148|      0|			is_array = 1;
  149|      0|			ip = p;
  150|      0|			*p = 0;
  151|      0|			break;
  152|      0|		}
  153|      0|	}
  154|      0|	var_len = p - var;
  155|       |
  156|      0|	if (var_len==0) { /* empty variable name, or variable name with a space in it */
  ------------------
  |  Branch (156:6): [True: 0, False: 0]
  ------------------
  157|      0|		zval_ptr_dtor_nogc(val);
  158|      0|		free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|      0|		return;
  160|      0|	}
  161|       |
  162|      0|	if (var_len == sizeof("this")-1 && EG(current_execute_data)) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (162:6): [True: 0, False: 0]
  ------------------
  163|      0|		zend_execute_data *ex = EG(current_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  164|       |
  165|      0|		while (ex) {
  ------------------
  |  Branch (165:10): [True: 0, False: 0]
  ------------------
  166|      0|			if (ex->func && ZEND_USER_CODE(ex->func->common.type)) {
  ------------------
  |  | 1081|      0|#define ZEND_USER_CODE(type)		((type) != ZEND_INTERNAL_FUNCTION)
  |  |  ------------------
  |  |  |  Branch (1081:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (166:8): [True: 0, False: 0]
  ------------------
  167|      0|				if ((ZEND_CALL_INFO(ex) & ZEND_CALL_HAS_SYMBOL_TABLE)
  ------------------
  |  |  687|      0|	Z_TYPE_INFO((call)->This)
  |  |  ------------------
  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  ------------------
  ------------------
              				if ((ZEND_CALL_INFO(ex) & ZEND_CALL_HAS_SYMBOL_TABLE)
  ------------------
  |  |  666|      0|#define ZEND_CALL_HAS_SYMBOL_TABLE   (1 << 20)
  ------------------
  |  Branch (167:9): [True: 0, False: 0]
  ------------------
  168|      0|						&& ex->symbol_table == symtable1) {
  ------------------
  |  Branch (168:10): [True: 0, False: 0]
  ------------------
  169|      0|					if (memcmp(var, "this", sizeof("this")-1) == 0) {
  ------------------
  |  Branch (169:10): [True: 0, False: 0]
  ------------------
  170|      0|						zend_throw_error(NULL, "Cannot re-assign $this");
  171|      0|						zval_ptr_dtor_nogc(val);
  172|      0|						free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  173|      0|						return;
  174|      0|					}
  175|      0|				}
  176|      0|				break;
  177|      0|			}
  178|      0|			ex = ex->prev_execute_data;
  179|      0|		}
  180|      0|	}
  181|       |
  182|       |	/* GLOBALS hijack attempt, reject parameter */
  183|      0|	if (symtable1 == &EG(symbol_table) &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (183:6): [True: 0, False: 0]
  ------------------
  184|      0|		var_len == sizeof("GLOBALS")-1 &&
  ------------------
  |  Branch (184:3): [True: 0, False: 0]
  ------------------
  185|      0|		!memcmp(var, "GLOBALS", sizeof("GLOBALS")-1)) {
  ------------------
  |  Branch (185:3): [True: 0, False: 0]
  ------------------
  186|      0|		zval_ptr_dtor_nogc(val);
  187|      0|		free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|      0|		return;
  189|      0|	}
  190|       |
  191|      0|	index = var;
  192|      0|	index_len = var_len;
  193|       |
  194|      0|	if (is_array) {
  ------------------
  |  Branch (194:6): [True: 0, False: 0]
  ------------------
  195|      0|		int nest_level = 0;
  196|      0|		while (1) {
  ------------------
  |  Branch (196:10): [True: 0, Folded]
  ------------------
  197|      0|			char *index_s;
  198|      0|			size_t new_idx_len = 0;
  199|       |
  200|      0|			if(++nest_level > PG(max_input_nesting_level)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (200:7): [True: 0, False: 0]
  ------------------
  201|      0|				HashTable *ht;
  202|       |				/* too many levels of nesting */
  203|       |
  204|      0|				if (track_vars_array) {
  ------------------
  |  Branch (204:9): [True: 0, False: 0]
  ------------------
  205|      0|					ht = Z_ARRVAL_P(track_vars_array);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  206|      0|					zend_symtable_str_del(ht, var, var_len);
  207|      0|				}
  208|       |
  209|      0|				zval_ptr_dtor_nogc(val);
  210|       |
  211|       |				/* do not output the error message to the screen,
  212|       |				 this helps us to avoid "information disclosure" */
  213|      0|				if (!PG(display_errors)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (213:9): [True: 0, False: 0]
  ------------------
  214|      0|					php_error_docref(NULL, E_WARNING, "Input variable nesting level exceeded " ZEND_LONG_FMT ". To increase the limit change max_input_nesting_level in php.ini.", PG(max_input_nesting_level));
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
              					php_error_docref(NULL, E_WARNING, "Input variable nesting level exceeded " ZEND_LONG_FMT ". To increase the limit change max_input_nesting_level in php.ini.", PG(max_input_nesting_level));
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  215|      0|				}
  216|      0|				free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|      0|				return;
  218|      0|			}
  219|       |
  220|      0|			ip++;
  221|      0|			index_s = ip;
  222|      0|			if (isspace((unsigned char)*ip)) {
  ------------------
  |  Branch (222:8): [True: 0, False: 0]
  ------------------
  223|      0|				ip++;
  224|      0|			}
  225|      0|			if (*ip==']') {
  ------------------
  |  Branch (225:8): [True: 0, False: 0]
  ------------------
  226|      0|				index_s = NULL;
  227|      0|			} else {
  228|      0|				ip = strchr(ip, ']');
  229|      0|				if (!ip) {
  ------------------
  |  Branch (229:9): [True: 0, False: 0]
  ------------------
  230|       |					/* not an index; un-terminate the var name */
  231|      0|					*(index_s - 1) = '_';
  232|       |					/* PHP variables cannot contain ' ', '.', '[' in their names, so we replace the characters with a '_' */
  233|      0|					for (p = index_s; *p; p++) {
  ------------------
  |  Branch (233:24): [True: 0, False: 0]
  ------------------
  234|      0|						if (*p == ' ' || *p == '.' || *p == '[') {
  ------------------
  |  Branch (234:11): [True: 0, False: 0]
  |  Branch (234:24): [True: 0, False: 0]
  |  Branch (234:37): [True: 0, False: 0]
  ------------------
  235|      0|							*p = '_';
  236|      0|						}
  237|      0|					}
  238|       |
  239|      0|					index_len = 0;
  240|      0|					if (index) {
  ------------------
  |  Branch (240:10): [True: 0, False: 0]
  ------------------
  241|      0|						index_len = strlen(index);
  242|      0|					}
  243|      0|					goto plain_var;
  244|      0|					return;
  245|      0|				}
  246|      0|				*ip = 0;
  247|      0|				new_idx_len = strlen(index_s);
  248|      0|			}
  249|       |
  250|      0|			if (!index) {
  ------------------
  |  Branch (250:8): [True: 0, False: 0]
  ------------------
  251|      0|				array_init(&gpc_element);
  252|      0|				if ((gpc_element_p = zend_hash_next_index_insert(symtable1, &gpc_element)) == NULL) {
  ------------------
  |  Branch (252:9): [True: 0, False: 0]
  ------------------
  253|      0|					zend_array_destroy(Z_ARR(gpc_element));
  ------------------
  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  254|      0|					zval_ptr_dtor_nogc(val);
  255|      0|					free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|      0|					return;
  257|      0|				}
  258|      0|			} else {
  259|      0|				if (php_is_forbidden_variable_name(index, index_len, var_name)) {
  ------------------
  |  Branch (259:9): [True: 0, False: 0]
  ------------------
  260|      0|					zval_ptr_dtor_nogc(val);
  261|      0|					free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  262|      0|					return;
  263|      0|				}
  264|       |
  265|      0|				gpc_element_p = zend_symtable_str_find(symtable1, index, index_len);
  266|      0|				if (!gpc_element_p) {
  ------------------
  |  Branch (266:9): [True: 0, False: 0]
  ------------------
  267|      0|					zval tmp;
  268|      0|					array_init(&tmp);
  269|      0|					gpc_element_p = zend_symtable_str_update_ind(symtable1, index, index_len, &tmp);
  270|      0|				} else {
  271|      0|					if (Z_TYPE_P(gpc_element_p) == IS_INDIRECT) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(gpc_element_p) == IS_INDIRECT) {
  ------------------
  |  |  629|      0|#define IS_INDIRECT             	12
  ------------------
  |  Branch (271:10): [True: 0, False: 0]
  ------------------
  272|      0|						gpc_element_p = Z_INDIRECT_P(gpc_element_p);
  ------------------
  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  ------------------
  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  ------------------
  ------------------
  273|      0|					}
  274|      0|					if (Z_TYPE_P(gpc_element_p) != IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              					if (Z_TYPE_P(gpc_element_p) != IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (274:10): [True: 0, False: 0]
  ------------------
  275|      0|						zval_ptr_dtor_nogc(gpc_element_p);
  276|      0|						array_init(gpc_element_p);
  277|      0|					} else {
  278|      0|						SEPARATE_ARRAY(gpc_element_p);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  279|      0|					}
  280|      0|				}
  281|      0|			}
  282|      0|			symtable1 = Z_ARRVAL_P(gpc_element_p);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|       |			/* ip pointed to the '[' character, now obtain the key */
  284|      0|			index = index_s;
  285|      0|			index_len = new_idx_len;
  286|       |
  287|      0|			ip++;
  288|      0|			if (*ip == '[') {
  ------------------
  |  Branch (288:8): [True: 0, False: 0]
  ------------------
  289|      0|				is_array = 1;
  290|      0|				*ip = 0;
  291|      0|			} else {
  292|      0|				goto plain_var;
  293|      0|			}
  294|      0|		}
  295|      0|	} else {
  296|      0|plain_var:
  297|      0|		if (!index) {
  ------------------
  |  Branch (297:7): [True: 0, False: 0]
  ------------------
  298|      0|			if (zend_hash_next_index_insert(symtable1, val) == NULL) {
  ------------------
  |  Branch (298:8): [True: 0, False: 0]
  ------------------
  299|      0|				zval_ptr_dtor_nogc(val);
  300|      0|			}
  301|      0|		} else {
  302|      0|			if (php_is_forbidden_variable_name(index, index_len, var_name)) {
  ------------------
  |  Branch (302:8): [True: 0, False: 0]
  ------------------
  303|      0|				zval_ptr_dtor_nogc(val);
  304|      0|				free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  305|      0|				return;
  306|      0|			}
  307|       |
  308|      0|			zend_ulong idx;
  309|       |
  310|       |			/*
  311|       |			 * According to rfc2965, more specific paths are listed above the less specific ones.
  312|       |			 * If we encounter a duplicate cookie name, we should skip it, since it is not possible
  313|       |			 * to have the same (plain text) cookie name for the same path and we should not overwrite
  314|       |			 * more specific cookies with the less specific ones.
  315|       |			 */
  316|      0|			if (Z_TYPE(PG(http_globals)[TRACK_VARS_COOKIE]) != IS_UNDEF &&
  ------------------
  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              			if (Z_TYPE(PG(http_globals)[TRACK_VARS_COOKIE]) != IS_UNDEF &&
  ------------------
  |  |  606|      0|#define IS_UNDEF					0
  ------------------
  |  Branch (316:8): [True: 0, False: 0]
  ------------------
  317|      0|				symtable1 == Z_ARRVAL(PG(http_globals)[TRACK_VARS_COOKIE]) &&
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (317:5): [True: 0, False: 0]
  ------------------
  318|      0|				zend_symtable_str_exists(symtable1, index, index_len)) {
  ------------------
  |  Branch (318:5): [True: 0, False: 0]
  ------------------
  319|      0|				zval_ptr_dtor_nogc(val);
  320|      0|			} else if (ZEND_HANDLE_NUMERIC_STR(index, index_len, idx)) {
  ------------------
  |  |  421|      0|	_zend_handle_numeric_str(key, length, &idx)
  |  |  ------------------
  |  |  |  Branch (421:2): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  321|      0|				zend_hash_index_update(symtable1, idx, val);
  322|      0|			} else {
  323|      0|				php_register_variable_quick(index, index_len, val, symtable1);
  324|      0|			}
  325|      0|		}
  326|      0|	}
  327|      0|	free_alloca(var_orig, use_heap);
  ------------------
  |  |  248|      0|# define free_alloca(p, use_heap)	efree(p)
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  328|      0|}
php_default_treat_data:
  461|  67.1k|{
  462|  67.1k|	char *res = NULL, *var, *val, *separator = NULL;
  463|  67.1k|	const char *c_var;
  464|  67.1k|	zval array;
  465|  67.1k|	int free_buffer = 0;
  466|  67.1k|	char *strtok_buf = NULL;
  467|  67.1k|	zend_long count = 0;
  468|       |
  469|  67.1k|	ZVAL_UNDEF(&array);
  ------------------
  |  | 1055|  67.1k|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|  67.1k|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|  67.1k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  67.1k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|  67.1k|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|  67.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 67.1k]
  |  |  ------------------
  ------------------
  470|  67.1k|	switch (arg) {
  471|      0|		case PARSE_POST:
  ------------------
  |  |   22|      0|#define PARSE_POST 0
  ------------------
  |  Branch (471:3): [True: 0, False: 67.1k]
  ------------------
  472|  33.5k|		case PARSE_GET:
  ------------------
  |  |   23|  33.5k|#define PARSE_GET 1
  ------------------
  |  Branch (472:3): [True: 33.5k, False: 33.5k]
  ------------------
  473|  67.1k|		case PARSE_COOKIE:
  ------------------
  |  |   24|  67.1k|#define PARSE_COOKIE 2
  ------------------
  |  Branch (473:3): [True: 33.5k, False: 33.5k]
  ------------------
  474|  67.1k|			array_init(&array);
  475|  67.1k|			switch (arg) {
  ------------------
  |  Branch (475:12): [True: 67.1k, False: 0]
  ------------------
  476|      0|				case PARSE_POST:
  ------------------
  |  |   22|      0|#define PARSE_POST 0
  ------------------
  |  Branch (476:5): [True: 0, False: 67.1k]
  ------------------
  477|      0|					zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              					zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   38|      0|#define TRACK_VARS_POST		0
  ------------------
  478|      0|					ZVAL_COPY_VALUE(&PG(http_globals)[TRACK_VARS_POST], &array);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  479|      0|					break;
  480|  33.5k|				case PARSE_GET:
  ------------------
  |  |   23|  33.5k|#define PARSE_GET 1
  ------------------
  |  Branch (480:5): [True: 33.5k, False: 33.5k]
  ------------------
  481|  33.5k|					zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              					zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   39|  33.5k|#define TRACK_VARS_GET		1
  ------------------
  482|  33.5k|					ZVAL_COPY_VALUE(&PG(http_globals)[TRACK_VARS_GET], &array);
  ------------------
  |  | 1416|  33.5k|	do {												\
  |  | 1417|  33.5k|		zval *_z1 = (z);								\
  |  | 1418|  33.5k|		const zval *_z2 = (v);							\
  |  | 1419|  33.5k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  33.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  33.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  33.5k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  33.5k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  33.5k|	do {												\
  |  |  |  | 1408|  33.5k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  33.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  33.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  33.5k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  33.5k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  483|  33.5k|					break;
  484|  33.5k|				case PARSE_COOKIE:
  ------------------
  |  |   24|  33.5k|#define PARSE_COOKIE 2
  ------------------
  |  Branch (484:5): [True: 33.5k, False: 33.5k]
  ------------------
  485|  33.5k|					zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              					zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   40|  33.5k|#define TRACK_VARS_COOKIE	2
  ------------------
  486|  33.5k|					ZVAL_COPY_VALUE(&PG(http_globals)[TRACK_VARS_COOKIE], &array);
  ------------------
  |  | 1416|  33.5k|	do {												\
  |  | 1417|  33.5k|		zval *_z1 = (z);								\
  |  | 1418|  33.5k|		const zval *_z2 = (v);							\
  |  | 1419|  33.5k|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|  33.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|  33.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|  33.5k|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|  33.5k|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|  33.5k|	do {												\
  |  |  |  | 1408|  33.5k|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|  33.5k|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|  33.5k|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|  33.5k|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|  33.5k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|  33.5k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|  33.5k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 33.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
  487|  33.5k|					break;
  488|  67.1k|			}
  489|  67.1k|			break;
  490|  67.1k|		default:
  ------------------
  |  Branch (490:3): [True: 0, False: 67.1k]
  ------------------
  491|      0|			ZVAL_COPY_VALUE(&array, destArray);
  ------------------
  |  | 1416|      0|	do {												\
  |  | 1417|      0|		zval *_z1 = (z);								\
  |  | 1418|      0|		const zval *_z2 = (v);							\
  |  | 1419|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1420|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1421|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1422|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1422:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  492|      0|			break;
  493|  67.1k|	}
  494|       |
  495|  67.1k|	if (arg == PARSE_POST) {
  ------------------
  |  |   22|  67.1k|#define PARSE_POST 0
  ------------------
  |  Branch (495:6): [True: 0, False: 67.1k]
  ------------------
  496|      0|		sapi_handle_post(&array);
  497|      0|		return;
  498|      0|	}
  499|       |
  500|  67.1k|	if (arg == PARSE_GET) {		/* GET data */
  ------------------
  |  |   23|  67.1k|#define PARSE_GET 1
  ------------------
  |  Branch (500:6): [True: 33.5k, False: 33.5k]
  ------------------
  501|  33.5k|		c_var = SG(request_info).query_string;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  502|  33.5k|		if (c_var && *c_var) {
  ------------------
  |  Branch (502:7): [True: 0, False: 33.5k]
  |  Branch (502:16): [True: 0, False: 0]
  ------------------
  503|      0|			res = (char *) estrdup(c_var);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  504|      0|			free_buffer = 1;
  505|  33.5k|		} else {
  506|  33.5k|			free_buffer = 0;
  507|  33.5k|		}
  508|  33.5k|	} else if (arg == PARSE_COOKIE) {		/* Cookie data */
  ------------------
  |  |   24|  33.5k|#define PARSE_COOKIE 2
  ------------------
  |  Branch (508:13): [True: 33.5k, False: 0]
  ------------------
  509|  33.5k|		c_var = SG(request_info).cookie_data;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  510|  33.5k|		if (c_var && *c_var) {
  ------------------
  |  Branch (510:7): [True: 0, False: 33.5k]
  |  Branch (510:16): [True: 0, False: 0]
  ------------------
  511|      0|			res = (char *) estrdup(c_var);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|      0|			free_buffer = 1;
  513|  33.5k|		} else {
  514|  33.5k|			free_buffer = 0;
  515|  33.5k|		}
  516|  33.5k|	} else if (arg == PARSE_STRING) {		/* String data */
  ------------------
  |  |   25|      0|#define PARSE_STRING 3
  ------------------
  |  Branch (516:13): [True: 0, False: 0]
  ------------------
  517|      0|		res = str;
  518|      0|		free_buffer = 1;
  519|      0|	}
  520|       |
  521|  67.1k|	if (!res) {
  ------------------
  |  Branch (521:6): [True: 67.1k, False: 0]
  ------------------
  522|  67.1k|		return;
  523|  67.1k|	}
  524|       |
  525|      0|	switch (arg) {
  ------------------
  |  Branch (525:10): [True: 0, False: 0]
  ------------------
  526|      0|		case PARSE_GET:
  ------------------
  |  |   23|      0|#define PARSE_GET 1
  ------------------
  |  Branch (526:3): [True: 0, False: 0]
  ------------------
  527|      0|		case PARSE_STRING:
  ------------------
  |  |   25|      0|#define PARSE_STRING 3
  ------------------
  |  Branch (527:3): [True: 0, False: 0]
  ------------------
  528|      0|			separator = ZSTR_VAL(PG(arg_separator).input);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  529|      0|			break;
  530|      0|		case PARSE_COOKIE:
  ------------------
  |  |   24|      0|#define PARSE_COOKIE 2
  ------------------
  |  Branch (530:3): [True: 0, False: 0]
  ------------------
  531|      0|			separator = ";\0";
  532|      0|			break;
  533|      0|	}
  534|       |
  535|      0|	var = php_strtok_r(res, separator, &strtok_buf);
  ------------------
  |  |   94|      0|#define php_strtok_r strtok_r
  ------------------
  536|       |
  537|      0|	while (var) {
  ------------------
  |  Branch (537:9): [True: 0, False: 0]
  ------------------
  538|      0|		size_t val_len;
  539|      0|		size_t new_val_len;
  540|       |
  541|      0|		val = strchr(var, '=');
  542|       |
  543|      0|		if (arg == PARSE_COOKIE) {
  ------------------
  |  |   24|      0|#define PARSE_COOKIE 2
  ------------------
  |  Branch (543:7): [True: 0, False: 0]
  ------------------
  544|       |			/* Remove leading spaces from cookie names, needed for multi-cookie header where ; can be followed by a space */
  545|      0|			while (isspace((unsigned char)*var)) {
  ------------------
  |  Branch (545:11): [True: 0, False: 0]
  ------------------
  546|      0|				var++;
  547|      0|			}
  548|      0|			if (var == val || *var == '\0') {
  ------------------
  |  Branch (548:8): [True: 0, False: 0]
  |  Branch (548:22): [True: 0, False: 0]
  ------------------
  549|      0|				goto next_cookie;
  550|      0|			}
  551|      0|		}
  552|       |
  553|      0|		zend_long max_input_vars = REQUEST_PARSE_BODY_OPTION_GET(max_input_vars, PG(max_input_vars));
  ------------------
  |  |  126|      0|	(SG(request_parse_body_context).options_cache[REQUEST_PARSE_BODY_OPTION_ ## name].set \
  |  |  ------------------
  |  |  |  |  158|      0|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  |  Branch (126:3): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|		? SG(request_parse_body_context).options_cache[REQUEST_PARSE_BODY_OPTION_ ## name].value \
  |  |  ------------------
  |  |  |  |  158|      0|# define SG(v) (sapi_globals.v)
  |  |  ------------------
  |  |  128|      0|		: (fallback))
  ------------------
  554|      0|		if (++count > max_input_vars) {
  ------------------
  |  Branch (554:7): [True: 0, False: 0]
  ------------------
  555|      0|			php_error_docref(NULL, E_WARNING, "Input variables exceeded " ZEND_LONG_FMT ". To increase the limit change max_input_vars in php.ini.", max_input_vars);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  556|      0|			break;
  557|      0|		}
  558|       |
  559|      0|		if (val) { /* have a value */
  ------------------
  |  Branch (559:7): [True: 0, False: 0]
  ------------------
  560|       |
  561|      0|			*val++ = '\0';
  562|       |
  563|      0|			if (arg == PARSE_COOKIE) {
  ------------------
  |  |   24|      0|#define PARSE_COOKIE 2
  ------------------
  |  Branch (563:8): [True: 0, False: 0]
  ------------------
  564|      0|				val_len = php_raw_url_decode(val, strlen(val));
  565|      0|			} else {
  566|      0|				val_len = php_url_decode(val, strlen(val));
  567|      0|			}
  568|      0|		} else {
  569|      0|			val     = "";
  570|      0|			val_len =  0;
  571|      0|		}
  572|       |
  573|      0|		val = estrndup(val, val_len);
  ------------------
  |  |  164|      0|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  574|      0|		if (arg != PARSE_COOKIE) {
  ------------------
  |  |   24|      0|#define PARSE_COOKIE 2
  ------------------
  |  Branch (574:7): [True: 0, False: 0]
  ------------------
  575|      0|			php_url_decode(var, strlen(var));
  576|      0|		}
  577|      0|		if (sapi_module.input_filter(arg, var, &val, val_len, &new_val_len)) {
  ------------------
  |  Branch (577:7): [True: 0, False: 0]
  ------------------
  578|      0|			php_register_variable_safe(var, val, new_val_len, &array);
  579|      0|		}
  580|      0|		efree(val);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  581|      0|next_cookie:
  582|      0|		var = php_strtok_r(NULL, separator, &strtok_buf);
  ------------------
  |  |   94|      0|#define php_strtok_r strtok_r
  ------------------
  583|      0|	}
  584|       |
  585|      0|	if (free_buffer) {
  ------------------
  |  Branch (585:6): [True: 0, False: 0]
  ------------------
  586|       |		efree(res);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  587|      0|	}
  588|      0|}
php_build_argv:
  657|  33.5k|{
  658|  33.5k|	zval arr, argc, tmp;
  659|  33.5k|	int count = 0;
  660|       |
  661|  33.5k|	if (!(SG(request_info).argc || track_vars_array)) {
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (661:8): [True: 0, False: 33.5k]
  |  Branch (661:33): [True: 0, False: 33.5k]
  ------------------
  662|  33.5k|		return;
  663|  33.5k|	}
  664|       |
  665|      0|	array_init(&arr);
  666|       |
  667|       |	/* Prepare argv */
  668|      0|	if (SG(request_info).argc) { /* are we in cli sapi? */
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (668:6): [True: 0, False: 0]
  ------------------
  669|      0|		int i;
  670|      0|		for (i = 0; i < SG(request_info).argc; i++) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (670:15): [True: 0, False: 0]
  ------------------
  671|      0|			ZVAL_STRING(&tmp, SG(request_info).argv[i]);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  672|      0|			if (zend_hash_next_index_insert(Z_ARRVAL(arr), &tmp) == NULL) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (672:8): [True: 0, False: 0]
  ------------------
  673|      0|				zend_string_efree(Z_STR(tmp));
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  674|      0|			}
  675|      0|		}
  676|      0|	} else 	if (s && *s) {
  ------------------
  |  Branch (676:14): [True: 0, False: 0]
  |  Branch (676:19): [True: 0, False: 0]
  ------------------
  677|      0|		while (1) {
  ------------------
  |  Branch (677:10): [True: 0, Folded]
  ------------------
  678|      0|			const char *space = strchr(s, '+');
  679|       |			/* auto-type */
  680|      0|			ZVAL_STRINGL(&tmp, s, space ? space - s : strlen(s));
  ------------------
  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  ------------------
  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1107:23): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  965|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  681|      0|			count++;
  682|      0|			if (zend_hash_next_index_insert(Z_ARRVAL(arr), &tmp) == NULL) {
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (682:8): [True: 0, False: 0]
  ------------------
  683|      0|				zend_string_efree(Z_STR(tmp));
  ------------------
  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  ------------------
  684|      0|			}
  685|      0|			if (!space) {
  ------------------
  |  Branch (685:8): [True: 0, False: 0]
  ------------------
  686|      0|				break;
  687|      0|			}
  688|      0|			s = space + 1;
  689|      0|		}
  690|      0|	}
  691|       |
  692|       |	/* prepare argc */
  693|      0|	if (SG(request_info).argc) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (693:6): [True: 0, False: 0]
  ------------------
  694|      0|		ZVAL_LONG(&argc, SG(request_info).argc);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  695|      0|	} else {
  696|      0|		ZVAL_LONG(&argc, count);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  697|      0|	}
  698|       |
  699|      0|	if (SG(request_info).argc) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (699:6): [True: 0, False: 0]
  ------------------
  700|      0|		Z_ADDREF(arr);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  701|      0|		zend_hash_update(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV), &arr);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  702|      0|		zend_hash_update(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC), &argc);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  703|      0|	}
  704|      0|	if (track_vars_array && Z_TYPE_P(track_vars_array) == IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (track_vars_array && Z_TYPE_P(track_vars_array) == IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (704:6): [True: 0, False: 0]
  |  Branch (704:26): [True: 0, False: 0]
  ------------------
  705|      0|		Z_ADDREF(arr);
  ------------------
  |  | 1282|      0|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  706|      0|		zend_hash_update(Z_ARRVAL_P(track_vars_array), ZSTR_KNOWN(ZEND_STR_ARGV), &arr);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  707|      0|		zend_hash_update(Z_ARRVAL_P(track_vars_array), ZSTR_KNOWN(ZEND_STR_ARGC), &argc);
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  708|      0|	}
  709|      0|	zval_ptr_dtor_nogc(&arr);
  710|      0|}
php_hash_environment:
  784|  33.5k|{
  785|  33.5k|	memset(PG(http_globals), 0, sizeof(PG(http_globals)));
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	memset(PG(http_globals), 0, sizeof(PG(http_globals)));
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
  786|       |	/* Register $argc and $argv for CLI SAPIs. $_SERVER['argc'] and $_SERVER['argv']
  787|       |	 * will be registered in php_auto_globals_create_server() which clears
  788|       |	 * PG(http_globals)[TRACK_VARS_SERVER] anyways, making registration at this point
  789|       |	 * useless.
  790|       |	 */
  791|  33.5k|	php_build_argv(NULL, NULL);
  792|  33.5k|	zend_activate_auto_globals();
  793|  33.5k|	return SUCCESS;
  794|  33.5k|}
php_startup_auto_globals:
  972|      2|{
  973|      2|	zend_register_auto_global(zend_string_init_interned("_GET", sizeof("_GET")-1, 1), 0, php_auto_globals_create_get);
  974|      2|	zend_register_auto_global(zend_string_init_interned("_POST", sizeof("_POST")-1, 1), 0, php_auto_globals_create_post);
  975|      2|	zend_register_auto_global(zend_string_init_interned("_COOKIE", sizeof("_COOKIE")-1, 1), 0, php_auto_globals_create_cookie);
  976|      2|	zend_register_auto_global(ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_SERVER), PG(auto_globals_jit) && (SG(request_info).argc || !PG(register_argc_argv)), php_auto_globals_create_server);
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 2, False: 0]
  |  |  ------------------
  ------------------
              	zend_register_auto_global(ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_SERVER), PG(auto_globals_jit) && (SG(request_info).argc || !PG(register_argc_argv)), php_auto_globals_create_server);
  ------------------
  |  |  158|      2|# define SG(v) (sapi_globals.v)
  ------------------
              	zend_register_auto_global(ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_SERVER), PG(auto_globals_jit) && (SG(request_info).argc || !PG(register_argc_argv)), php_auto_globals_create_server);
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (976:93): [True: 0, False: 2]
  |  Branch (976:118): [True: 2, False: 0]
  ------------------
  977|      2|	zend_register_auto_global(ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_ENV), PG(auto_globals_jit), php_auto_globals_create_env);
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  978|      2|	zend_register_auto_global(ZSTR_KNOWN(ZEND_STR_AUTOGLOBAL_REQUEST), PG(auto_globals_jit), php_auto_globals_create_request);
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  ------------------
  979|      2|	zend_register_auto_global(zend_string_init_interned("_FILES", sizeof("_FILES")-1, 1), 0, php_auto_globals_create_files);
  980|      2|}
php_variables.c:php_register_variable_quick:
   51|    183|{
   52|    183|	zend_string *key = zend_string_init_interned(name, name_len, 0);
   53|       |
   54|    183|	zend_hash_update_ind(ht, key, val);
   55|    183|	zend_string_release_ex(key, 0);
   56|    183|}
php_variables.c:_php_import_environment_variables:
  628|      5|{
  629|      5|	tsrm_env_lock();
  630|       |
  631|      5|#ifndef PHP_WIN32
  632|    180|	for (char **env = environ; env != NULL && *env != NULL; env++) {
  ------------------
  |  Branch (632:29): [True: 180, False: 0]
  |  Branch (632:44): [True: 175, False: 5]
  ------------------
  633|    175|		import_environment_variable(Z_ARRVAL_P(array_ptr), *env);
  ------------------
  |  |  997|    175|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|    175|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|    175|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  634|    175|	}
  635|       |#else
  636|       |	wchar_t *environmentw = GetEnvironmentStringsW();
  637|       |	for (wchar_t *envw = environmentw; envw != NULL && *envw; envw += wcslen(envw) + 1) {
  638|       |		char *env = php_win32_cp_w_to_any(envw);
  639|       |		if (env != NULL) {
  640|       |			import_environment_variable(Z_ARRVAL_P(array_ptr), env);
  641|       |			free(env);
  642|       |		}
  643|       |	}
  644|       |	FreeEnvironmentStringsW(environmentw);
  645|       |#endif
  646|       |
  647|      5|	tsrm_env_unlock();
  648|      5|}
php_variables.c:import_environment_variable:
  603|    175|{
  604|    175|	char *p;
  605|    175|	size_t name_len, len;
  606|    175|	zval val;
  607|    175|	zend_ulong idx;
  608|       |
  609|    175|	p = strchr(env, '=');
  610|    175|	if (!p
  ------------------
  |  Branch (610:6): [True: 0, False: 175]
  ------------------
  611|    175|		|| p == env
  ------------------
  |  Branch (611:6): [True: 0, False: 175]
  ------------------
  612|    175|		|| !valid_environment_name(env, p)) {
  ------------------
  |  Branch (612:6): [True: 0, False: 175]
  ------------------
  613|       |		/* malformed entry? */
  614|      0|		return;
  615|      0|	}
  616|    175|	name_len = p - env;
  617|    175|	p++;
  618|    175|	len = strlen(p);
  619|    175|	ZVAL_STRINGL_FAST(&val, p, len);
  ------------------
  |  |  994|    175|#define ZVAL_STRINGL_FAST(z, s, l) do {			\
  |  |  995|    175|		ZVAL_STR(z, zend_string_init_fast(s, l));	\
  |  |  ------------------
  |  |  |  | 1088|    175|#define ZVAL_STR(z, s) do {						\
  |  |  |  | 1089|    175|		zval *__z = (z);						\
  |  |  |  | 1090|    175|		zend_string *__s = (s);					\
  |  |  |  | 1091|    175|		Z_STR_P(__z) = __s;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  982|    175|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  981|    175|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1092|    175|		/* interned strings support */			\
  |  |  |  | 1093|    175|		Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    175|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    175|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1093:24): [True: 25, False: 150]
  |  |  |  |  ------------------
  |  |  |  | 1094|    175|			IS_INTERNED_STRING_EX : 			\
  |  |  |  |  ------------------
  |  |  |  |  |  |  826|     25|#define IS_INTERNED_STRING_EX		IS_STRING
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|     25|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1095|    175|			IS_STRING_EX;						\
  |  |  |  |  ------------------
  |  |  |  |  |  |  828|    325|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|    150|#define IS_STRING					6
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|    150|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|    150|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1096|    175|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1096:11): [Folded, False: 175]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  996|    175|	} while (0)
  |  |  ------------------
  |  |  |  Branch (996:11): [Folded, False: 175]
  |  |  ------------------
  ------------------
  620|    175|	if (ZEND_HANDLE_NUMERIC_STR(env, name_len, idx)) {
  ------------------
  |  |  421|    175|	_zend_handle_numeric_str(key, length, &idx)
  |  |  ------------------
  |  |  |  Branch (421:2): [True: 0, False: 175]
  |  |  ------------------
  ------------------
  621|      0|		zend_hash_index_update(ht, idx, &val);
  622|    175|	} else {
  623|    175|		php_register_variable_quick(env, name_len, &val, ht);
  624|    175|	}
  625|    175|}
php_variables.c:valid_environment_name:
  591|    175|{
  592|    175|	const char *s;
  593|       |
  594|  2.07k|	for (s = name; s < end; s++) {
  ------------------
  |  Branch (594:17): [True: 1.90k, False: 175]
  ------------------
  595|  1.90k|		if (*s == ' ' || *s == '.' || *s == '[') {
  ------------------
  |  Branch (595:7): [True: 0, False: 1.90k]
  |  Branch (595:20): [True: 0, False: 1.90k]
  |  Branch (595:33): [True: 0, False: 1.90k]
  ------------------
  596|      0|			return 0;
  597|      0|		}
  598|  1.90k|	}
  599|    175|	return 1;
  600|    175|}
php_variables.c:php_auto_globals_create_get:
  798|  33.5k|{
  799|  33.5k|	if (PG(variables_order) && (strchr(PG(variables_order),'G') || strchr(PG(variables_order),'g'))) {
  ------------------
  |  |   29|  67.1k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'G') || strchr(PG(variables_order),'g'))) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'G') || strchr(PG(variables_order),'g'))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (799:30): [True: 33.5k, False: 0]
  |  Branch (799:65): [True: 0, False: 0]
  ------------------
  800|  33.5k|		sapi_module.treat_data(PARSE_GET, NULL, NULL);
  ------------------
  |  |   23|  33.5k|#define PARSE_GET 1
  ------------------
  801|  33.5k|	} else {
  802|      0|		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   39|      0|#define TRACK_VARS_GET		1
  ------------------
  803|      0|		array_init(&PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		array_init(&PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   39|      0|#define TRACK_VARS_GET		1
  ------------------
  804|      0|	}
  805|       |
  806|  33.5k|	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  |   39|  33.5k|#define TRACK_VARS_GET		1
  ------------------
  807|  33.5k|	Z_ADDREF(PG(http_globals)[TRACK_VARS_GET]);
  ------------------
  |  | 1282|  33.5k|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|  33.5k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  808|       |
  809|       |	return false; /* don't rearm */
  810|  33.5k|}
php_variables.c:php_auto_globals_create_post:
  813|  33.5k|{
  814|  33.5k|	if (PG(variables_order) &&
  ------------------
  |  |   29|  67.1k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  815|  33.5k|			(strchr(PG(variables_order),'P') || strchr(PG(variables_order),'p')) &&
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              			(strchr(PG(variables_order),'P') || strchr(PG(variables_order),'p')) &&
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (815:5): [True: 33.5k, False: 0]
  |  Branch (815:40): [True: 0, False: 0]
  ------------------
  816|  33.5k|		!SG(headers_sent) &&
  ------------------
  |  |  158|  67.1k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (816:3): [True: 33.5k, False: 0]
  ------------------
  817|  33.5k|		SG(request_info).request_method &&
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (817:3): [True: 0, False: 33.5k]
  ------------------
  818|      0|		!strcasecmp(SG(request_info).request_method, "POST")) {
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (818:3): [True: 0, False: 0]
  ------------------
  819|      0|		sapi_module.treat_data(PARSE_POST, NULL, NULL);
  ------------------
  |  |   22|      0|#define PARSE_POST 0
  ------------------
  820|  33.5k|	} else {
  821|  33.5k|		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   38|  33.5k|#define TRACK_VARS_POST		0
  ------------------
  822|  33.5k|		array_init(&PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              		array_init(&PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   38|  33.5k|#define TRACK_VARS_POST		0
  ------------------
  823|  33.5k|	}
  824|       |
  825|  33.5k|	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  |   38|  33.5k|#define TRACK_VARS_POST		0
  ------------------
  826|  33.5k|	Z_ADDREF(PG(http_globals)[TRACK_VARS_POST]);
  ------------------
  |  | 1282|  33.5k|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|  33.5k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  827|       |
  828|       |	return false; /* don't rearm */
  829|  33.5k|}
php_variables.c:php_auto_globals_create_cookie:
  832|  33.5k|{
  833|  33.5k|	if (PG(variables_order) && (strchr(PG(variables_order),'C') || strchr(PG(variables_order),'c'))) {
  ------------------
  |  |   29|  67.1k|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'C') || strchr(PG(variables_order),'c'))) {
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'C') || strchr(PG(variables_order),'c'))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (833:30): [True: 33.5k, False: 0]
  |  Branch (833:65): [True: 0, False: 0]
  ------------------
  834|  33.5k|		sapi_module.treat_data(PARSE_COOKIE, NULL, NULL);
  ------------------
  |  |   24|  33.5k|#define PARSE_COOKIE 2
  ------------------
  835|  33.5k|	} else {
  836|      0|		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   40|      0|#define TRACK_VARS_COOKIE	2
  ------------------
  837|      0|		array_init(&PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		array_init(&PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   40|      0|#define TRACK_VARS_COOKIE	2
  ------------------
  838|      0|	}
  839|       |
  840|  33.5k|	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  |   40|  33.5k|#define TRACK_VARS_COOKIE	2
  ------------------
  841|  33.5k|	Z_ADDREF(PG(http_globals)[TRACK_VARS_COOKIE]);
  ------------------
  |  | 1282|  33.5k|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|  33.5k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  842|       |
  843|       |	return false; /* don't rearm */
  844|  33.5k|}
php_variables.c:php_auto_globals_create_server:
  875|      4|{
  876|      4|	if (PG(variables_order) && (strchr(PG(variables_order),'S') || strchr(PG(variables_order),'s'))) {
  ------------------
  |  |   29|      8|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 4, False: 0]
  |  |  ------------------
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'S') || strchr(PG(variables_order),'s'))) {
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'S') || strchr(PG(variables_order),'s'))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (876:30): [True: 4, False: 0]
  |  Branch (876:65): [True: 0, False: 0]
  ------------------
  877|      4|		php_register_server_variables();
  878|       |
  879|      4|		if (SG(request_info).argc) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (879:7): [True: 0, False: 4]
  ------------------
  880|      0|			zval *argc, *argv;
  881|       |
  882|      0|			if ((argc = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC), 1)) != NULL &&
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (882:8): [True: 0, False: 0]
  ------------------
  883|      0|				(argv = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV), 1)) != NULL) {
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (883:5): [True: 0, False: 0]
  ------------------
  884|      0|				Z_ADDREF_P(argv);
  ------------------
  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  ------------------
  885|      0|				zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGV), argv);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  886|      0|				zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGC), argc);
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  887|      0|			}
  888|      4|		} else if (PG(register_argc_argv)) {
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  889|      0|			zend_error(E_DEPRECATED, "Deriving $_SERVER['argv'] from the query string is deprecated. Configure register_argc_argv=0 to turn this message off");
  ------------------
  |  |   36|      0|#define E_DEPRECATED		(1<<13L)
  ------------------
  890|      0|			php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |  158|      0|# define SG(v) (sapi_globals.v)
  ------------------
              			php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              			php_build_argv(SG(request_info).query_string, &PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   41|      0|#define TRACK_VARS_SERVER	3
  ------------------
  891|      0|		}
  892|       |
  893|      4|	} else {
  894|      0|		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   41|      0|#define TRACK_VARS_SERVER	3
  ------------------
  895|      0|		array_init(&PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
              		array_init(&PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   41|      0|#define TRACK_VARS_SERVER	3
  ------------------
  896|      0|		zend_hash_real_init_mixed(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]));
  ------------------
  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  897|      0|	}
  898|       |
  899|      4|	check_http_proxy(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]));
  ------------------
  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  900|      4|	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   45|      4|# define EG(v) (executor_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  |   41|      4|#define TRACK_VARS_SERVER	3
  ------------------
  901|      4|	Z_ADDREF(PG(http_globals)[TRACK_VARS_SERVER]);
  ------------------
  |  | 1282|      4|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      4|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  902|       |
  903|       |	/* TODO: TRACK_VARS_SERVER is modified in a number of places (e.g. phar) past this point,
  904|       |	 * where rc>1 due to the $_SERVER global. Ideally this shouldn't happen, but for now we
  905|       |	 * ignore this issue, as it would probably require larger changes. */
  906|      4|	HT_ALLOW_COW_VIOLATION(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]));
  ------------------
  |  |   71|      4|# define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   52|      4|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  ------------------
  |  |               # define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION
  |  |  ------------------
  |  |  |  |   47|      4|#define HASH_FLAG_ALLOW_COW_VIOLATION (1<<6)
  |  |  ------------------
  ------------------
  907|       |
  908|       |	return false; /* don't rearm */
  909|      4|}
php_variables.c:php_register_server_variables:
  715|      4|{
  716|      4|	zval tmp;
  717|      4|	zval *arr = &PG(http_globals)[TRACK_VARS_SERVER];
  ------------------
  |  |   29|      4|# define PG(v) (core_globals.v)
  ------------------
              	zval *arr = &PG(http_globals)[TRACK_VARS_SERVER];
  ------------------
  |  |   41|      4|#define TRACK_VARS_SERVER	3
  ------------------
  718|      4|	HashTable *ht;
  719|       |
  720|      4|	zval_ptr_dtor_nogc(arr);
  721|      4|	array_init(arr);
  722|       |
  723|       |	/* Server variables */
  724|      4|	if (sapi_module.register_server_variables) {
  ------------------
  |  Branch (724:6): [True: 4, False: 0]
  ------------------
  725|      4|		sapi_module.register_server_variables(arr);
  726|      4|	}
  727|      4|	ht = Z_ARRVAL_P(arr);
  ------------------
  |  |  997|      4|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      4|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      4|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  728|       |
  729|       |	/* PHP Authentication support */
  730|      4|	if (SG(request_info).auth_user) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (730:6): [True: 0, False: 4]
  ------------------
  731|      0|		ZVAL_STRING(&tmp, SG(request_info).auth_user);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  732|      0|		php_register_variable_quick("PHP_AUTH_USER", sizeof("PHP_AUTH_USER")-1, &tmp, ht);
  733|      0|	}
  734|      4|	if (SG(request_info).auth_password) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (734:6): [True: 0, False: 4]
  ------------------
  735|      0|		ZVAL_STRING(&tmp, SG(request_info).auth_password);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  736|      0|		php_register_variable_quick("PHP_AUTH_PW", sizeof("PHP_AUTH_PW")-1, &tmp, ht);
  737|      0|	}
  738|      4|	if (SG(request_info).auth_digest) {
  ------------------
  |  |  158|      4|# define SG(v) (sapi_globals.v)
  ------------------
  |  Branch (738:6): [True: 0, False: 4]
  ------------------
  739|      0|		ZVAL_STRING(&tmp, SG(request_info).auth_digest);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  740|      0|		php_register_variable_quick("PHP_AUTH_DIGEST", sizeof("PHP_AUTH_DIGEST")-1, &tmp, ht);
  741|      0|	}
  742|       |
  743|       |	/* store request init time */
  744|      4|	ZVAL_DOUBLE(&tmp, sapi_get_request_time());
  ------------------
  |  | 1082|      4|#define ZVAL_DOUBLE(z, d) do {			\
  |  | 1083|      4|		zval *__z = (z);				\
  |  | 1084|      4|		Z_DVAL_P(__z) = d;				\
  |  |  ------------------
  |  |  |  |  979|      4|#define Z_DVAL_P(zval_p)			Z_DVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  978|      4|#define Z_DVAL(zval)				(zval).value.dval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1085|      4|		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_DOUBLE;	\
  |  |  ------------------
  |  |  |  |  611|      4|#define IS_DOUBLE					5
  |  |  ------------------
  |  | 1086|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1086:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  745|      4|	php_register_variable_quick("REQUEST_TIME_FLOAT", sizeof("REQUEST_TIME_FLOAT")-1, &tmp, ht);
  746|      4|	ZVAL_LONG(&tmp, zend_dval_to_lval_silent(Z_DVAL(tmp)));
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  747|      4|	php_register_variable_quick("REQUEST_TIME", sizeof("REQUEST_TIME")-1, &tmp, ht);
  748|      4|}
php_variables.c:check_http_proxy:
  860|      5|{
  861|      5|	if (zend_hash_str_exists(var_table, "HTTP_PROXY", sizeof("HTTP_PROXY")-1)) {
  ------------------
  |  Branch (861:6): [True: 0, False: 5]
  ------------------
  862|      0|		char *local_proxy = getenv("HTTP_PROXY");
  863|       |
  864|      0|		if (!local_proxy) {
  ------------------
  |  Branch (864:7): [True: 0, False: 0]
  ------------------
  865|      0|			zend_hash_str_del(var_table, "HTTP_PROXY", sizeof("HTTP_PROXY")-1);
  866|      0|		} else {
  867|      0|			zval local_zval;
  868|      0|			ZVAL_STRING(&local_zval, local_proxy);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  869|      0|			zend_hash_str_update(var_table, "HTTP_PROXY", sizeof("HTTP_PROXY")-1, &local_zval);
  870|      0|		}
  871|      0|	}
  872|      5|}
php_variables.c:php_auto_globals_create_env:
  912|      1|{
  913|      1|	zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
              	zval_ptr_dtor_nogc(&PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   42|      1|#define TRACK_VARS_ENV		4
  ------------------
  914|      1|	array_init(&PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
              	array_init(&PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   42|      1|#define TRACK_VARS_ENV		4
  ------------------
  915|       |
  916|      1|	if (PG(variables_order) && (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e'))) {
  ------------------
  |  |   29|      2|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e'))) {
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
              	if (PG(variables_order) && (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e'))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (916:30): [True: 1, False: 0]
  |  Branch (916:65): [True: 0, False: 0]
  ------------------
  917|      1|		php_import_environment_variables(&PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
              		php_import_environment_variables(&PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   42|      1|#define TRACK_VARS_ENV		4
  ------------------
  918|      1|	}
  919|       |
  920|      1|	check_http_proxy(Z_ARRVAL(PG(http_globals)[TRACK_VARS_ENV]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  921|      1|	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  |   42|      1|#define TRACK_VARS_ENV		4
  ------------------
  922|      1|	Z_ADDREF(PG(http_globals)[TRACK_VARS_ENV]);
  ------------------
  |  | 1282|      1|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|      1|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  923|       |
  924|       |	return false; /* don't rearm */
  925|      1|}
php_variables.c:php_auto_globals_create_request:
  928|      1|{
  929|      1|	zval form_variables;
  930|      1|	unsigned char _gpc_flags[3] = {0, 0, 0};
  931|      1|	char *p;
  932|       |
  933|      1|	array_init(&form_variables);
  934|       |
  935|      1|	if (PG(request_order) != NULL) {
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (935:6): [True: 0, False: 1]
  ------------------
  936|      0|		p = PG(request_order);
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  937|      1|	} else {
  938|      1|		p = PG(variables_order);
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
  939|      1|	}
  940|       |
  941|      6|	for (; p && *p; p++) {
  ------------------
  |  Branch (941:9): [True: 6, False: 0]
  |  Branch (941:14): [True: 5, False: 1]
  ------------------
  942|      5|		switch (*p) {
  ------------------
  |  Branch (942:11): [True: 3, False: 2]
  ------------------
  943|      0|			case 'g':
  ------------------
  |  Branch (943:4): [True: 0, False: 5]
  ------------------
  944|      1|			case 'G':
  ------------------
  |  Branch (944:4): [True: 1, False: 4]
  ------------------
  945|      1|				if (!_gpc_flags[0]) {
  ------------------
  |  Branch (945:9): [True: 1, False: 0]
  ------------------
  946|      1|					php_autoglobal_merge(Z_ARRVAL(form_variables), Z_ARRVAL(PG(http_globals)[TRACK_VARS_GET]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
              					php_autoglobal_merge(Z_ARRVAL(form_variables), Z_ARRVAL(PG(http_globals)[TRACK_VARS_GET]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  947|      1|					_gpc_flags[0] = 1;
  948|      1|				}
  949|      1|				break;
  950|      0|			case 'p':
  ------------------
  |  Branch (950:4): [True: 0, False: 5]
  ------------------
  951|      1|			case 'P':
  ------------------
  |  Branch (951:4): [True: 1, False: 4]
  ------------------
  952|      1|				if (!_gpc_flags[1]) {
  ------------------
  |  Branch (952:9): [True: 1, False: 0]
  ------------------
  953|      1|					php_autoglobal_merge(Z_ARRVAL(form_variables), Z_ARRVAL(PG(http_globals)[TRACK_VARS_POST]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
              					php_autoglobal_merge(Z_ARRVAL(form_variables), Z_ARRVAL(PG(http_globals)[TRACK_VARS_POST]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  954|      1|					_gpc_flags[1] = 1;
  955|      1|				}
  956|      1|				break;
  957|      0|			case 'c':
  ------------------
  |  Branch (957:4): [True: 0, False: 5]
  ------------------
  958|      1|			case 'C':
  ------------------
  |  Branch (958:4): [True: 1, False: 4]
  ------------------
  959|      1|				if (!_gpc_flags[2]) {
  ------------------
  |  Branch (959:9): [True: 1, False: 0]
  ------------------
  960|      1|					php_autoglobal_merge(Z_ARRVAL(form_variables), Z_ARRVAL(PG(http_globals)[TRACK_VARS_COOKIE]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
              					php_autoglobal_merge(Z_ARRVAL(form_variables), Z_ARRVAL(PG(http_globals)[TRACK_VARS_COOKIE]));
  ------------------
  |  |  996|      1|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      1|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  961|      1|					_gpc_flags[2] = 1;
  962|      1|				}
  963|      1|				break;
  964|      5|		}
  965|      5|	}
  966|       |
  967|      1|	zend_hash_update(&EG(symbol_table), name, &form_variables);
  ------------------
  |  |   45|      1|# define EG(v) (executor_globals.v)
  ------------------
  968|       |	return false;
  969|      1|}
php_variables.c:php_autoglobal_merge:
  753|      3|{
  754|      3|	zval *src_entry, *dest_entry;
  755|      3|	zend_string *string_key;
  756|      3|	zend_ulong num_key;
  757|      3|	int globals_check = (dest == (&EG(symbol_table)));
  ------------------
  |  |   45|      3|# define EG(v) (executor_globals.v)
  ------------------
  758|       |
  759|      3|	ZEND_HASH_FOREACH_KEY_VAL(src, num_key, string_key, src_entry) {
  ------------------
  |  | 1196|      0|	ZEND_HASH_FOREACH(ht, 0); \
  |  |  ------------------
  |  |  |  | 1071|      3|#define ZEND_HASH_FOREACH(_ht, indirect) ZEND_HASH_FOREACH_FROM(_ht, indirect, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1045|      3|#define ZEND_HASH_FOREACH_FROM(_ht, indirect, _from) do { \
  |  |  |  |  |  | 1046|      3|		const HashTable *__ht = (_ht); \
  |  |  |  |  |  | 1047|      3|		zend_ulong __h; \
  |  |  |  |  |  | 1048|      3|		zend_string *__key = NULL; \
  |  |  |  |  |  | 1049|      3|		uint32_t _idx = (_from); \
  |  |  |  |  |  | 1050|      3|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1013|      3|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      3|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      3|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1051|      3|		zval *__z = ZEND_HASH_ELEMENT_EX(__ht, _idx, _size); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1017|      3|	((zval*)(((char*)(__ht)->arPacked) + ((_idx) * (_size))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1052|      3|		uint32_t _count = __ht->nNumUsed - _idx; \
  |  |  |  |  |  | 1053|      3|		for (;_count > 0; _count--) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1053:9): [True: 0, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1054|      0|			zval *_z = __z; \
  |  |  |  |  |  | 1055|      0|			if (HT_IS_PACKED(__ht)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   52|      0|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               	((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   43|      0|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (62:2): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1056|      0|				__z++; \
  |  |  |  |  |  | 1057|      0|				__h = _idx; \
  |  |  |  |  |  | 1058|      0|				_idx++; \
  |  |  |  |  |  | 1059|      0|			} else { \
  |  |  |  |  |  | 1060|      0|				Bucket *_p = (Bucket*)__z; \
  |  |  |  |  |  | 1061|      0|				__z = &(_p + 1)->val; \
  |  |  |  |  |  | 1062|      0|				__h = _p->h; \
  |  |  |  |  |  | 1063|      0|				__key = _p->key; \
  |  |  |  |  |  | 1064|      0|				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               				if (indirect && Z_TYPE_P(_z) == IS_INDIRECT) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  629|      0|#define IS_INDIRECT             	12
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1064:9): [Folded, False: 0]
  |  |  |  |  |  |  |  Branch (1064:21): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      0|					_z = Z_INDIRECT_P(_z); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1044|      0|#define Z_INDIRECT_P(zval_p)		Z_INDIRECT(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  | 1043|      0|#define Z_INDIRECT(zval)			(zval).value.zv
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1066|      0|				} \
  |  |  |  |  |  | 1067|      0|			} \
  |  |  |  |  |  | 1068|      0|			(void) __h; (void) __key; (void) _idx; \
  |  |  |  |  |  | 1069|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1197|      0|	_h = __h; \
  |  | 1198|      0|	_key = __key; \
  |  | 1199|      0|	_val = _z;
  ------------------
  760|      3|		if (Z_TYPE_P(src_entry) != IS_ARRAY
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(src_entry) != IS_ARRAY
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (760:7): [True: 0, False: 0]
  ------------------
  761|      0|			|| (string_key && (dest_entry = zend_hash_find(dest, string_key)) == NULL)
  ------------------
  |  Branch (761:8): [True: 0, False: 0]
  |  Branch (761:22): [True: 0, False: 0]
  ------------------
  762|      0|			|| (string_key == NULL && (dest_entry = zend_hash_index_find(dest, num_key)) == NULL)
  ------------------
  |  Branch (762:8): [True: 0, False: 0]
  |  Branch (762:30): [True: 0, False: 0]
  ------------------
  763|      0|			|| Z_TYPE_P(dest_entry) != IS_ARRAY) {
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              			|| Z_TYPE_P(dest_entry) != IS_ARRAY) {
  ------------------
  |  |  613|      0|#define IS_ARRAY					7
  ------------------
  |  Branch (763:7): [True: 0, False: 0]
  ------------------
  764|      0|			Z_TRY_ADDREF_P(src_entry);
  ------------------
  |  | 1285|      0|#define Z_TRY_ADDREF_P(pz) do {		\
  |  | 1286|      0|	zval *_pz = (pz);				\
  |  | 1287|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1288|      0|		Z_ADDREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1277|      0|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  |  | 1289|      0|	}								\
  |  | 1290|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1290:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  765|      0|			if (string_key) {
  ------------------
  |  Branch (765:8): [True: 0, False: 0]
  ------------------
  766|      0|				if (!globals_check || !zend_string_equals_literal(string_key, "GLOBALS")) {
  ------------------
  |  |  407|      0|	zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)
  ------------------
  |  Branch (766:9): [True: 0, False: 0]
  |  Branch (766:27): [True: 0, False: 0]
  ------------------
  767|      0|					zend_hash_update(dest, string_key, src_entry);
  768|      0|				} else {
  769|      0|					Z_TRY_DELREF_P(src_entry);
  ------------------
  |  | 1292|      0|#define Z_TRY_DELREF_P(pz) do {		\
  |  | 1293|      0|	zval *_pz = (pz);				\
  |  | 1294|      0|	if (Z_REFCOUNTED_P(_pz)) {		\
  |  |  ------------------
  |  |  |  |  942|      0|#define Z_REFCOUNTED_P(zval_p)		Z_REFCOUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  938|      0|#define Z_REFCOUNTED(zval)			(Z_TYPE_FLAGS(zval) != 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  671|      0|#define Z_TYPE_FLAGS(zval)			(zval).u1.v.type_flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (938:30): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1295|      0|		Z_DELREF_P(_pz);			\
  |  |  ------------------
  |  |  |  | 1278|      0|#define Z_DELREF_P(pz)				zval_delref_p(pz)
  |  |  ------------------
  |  | 1296|      0|	}								\
  |  | 1297|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1297:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  770|      0|				}
  771|      0|			} else {
  772|      0|				zend_hash_index_update(dest, num_key, src_entry);
  773|      0|			}
  774|      0|		} else {
  775|      0|			SEPARATE_ARRAY(dest_entry);
  ------------------
  |  | 1536|      0|#define SEPARATE_ARRAY(zv) do {							\
  |  | 1537|      0|		zval *__zv = (zv);								\
  |  | 1538|      0|		zend_array *_arr = Z_ARR_P(__zv);				\
  |  |  ------------------
  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1539|      0|		if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) {		\
  |  |  ------------------
  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1540|      0|			ZVAL_ARR(__zv, zend_array_dup(_arr));		\
  |  |  ------------------
  |  |  |  | 1125|      0|#define ZVAL_ARR(z, a) do {						\
  |  |  |  | 1126|      0|		zend_array *__arr = (a);				\
  |  |  |  | 1127|      0|		zval *__z = (z);						\
  |  |  |  | 1128|      0|		Z_ARR_P(__z) = __arr;					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  994|      0|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1129|      0|		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY_EX;		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  829|      0|#define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  613|      0|#define IS_ARRAY					7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  815|      0|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define IS_ARRAY_EX					(IS_ARRAY          | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1130|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1130:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1541|      0|			GC_TRY_DELREF(_arr);						\
  |  |  ------------------
  |  |  |  |  723|      0|#define GC_TRY_DELREF(p)			zend_gc_try_delref(&(p)->gc)
  |  |  ------------------
  |  | 1542|      0|		}												\
  |  | 1543|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1543:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  776|      0|			php_autoglobal_merge(Z_ARRVAL_P(dest_entry), Z_ARRVAL_P(src_entry));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              			php_autoglobal_merge(Z_ARRVAL_P(dest_entry), Z_ARRVAL_P(src_entry));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|      0|		}
  778|      3|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|      3|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 3]
  |  |  ------------------
  ------------------
  779|      3|}
php_variables.c:php_auto_globals_create_files:
  847|  33.5k|{
  848|  33.5k|	if (Z_TYPE(PG(http_globals)[TRACK_VARS_FILES]) == IS_UNDEF) {
  ------------------
  |  |  668|  33.5k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(PG(http_globals)[TRACK_VARS_FILES]) == IS_UNDEF) {
  ------------------
  |  |  606|  33.5k|#define IS_UNDEF					0
  ------------------
  |  Branch (848:6): [True: 33.5k, False: 0]
  ------------------
  849|  33.5k|		array_init(&PG(http_globals)[TRACK_VARS_FILES]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              		array_init(&PG(http_globals)[TRACK_VARS_FILES]);
  ------------------
  |  |   43|  33.5k|#define TRACK_VARS_FILES	5
  ------------------
  850|  33.5k|	}
  851|       |
  852|  33.5k|	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_FILES]);
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_FILES]);
  ------------------
  |  |   29|  33.5k|# define PG(v) (core_globals.v)
  ------------------
              	zend_hash_update(&EG(symbol_table), name, &PG(http_globals)[TRACK_VARS_FILES]);
  ------------------
  |  |   43|  33.5k|#define TRACK_VARS_FILES	5
  ------------------
  853|  33.5k|	Z_ADDREF(PG(http_globals)[TRACK_VARS_FILES]);
  ------------------
  |  | 1282|  33.5k|#define Z_ADDREF(z)					Z_ADDREF_P(&(z))
  |  |  ------------------
  |  |  |  | 1277|  33.5k|#define Z_ADDREF_P(pz)				zval_addref_p(pz)
  |  |  ------------------
  ------------------
  854|       |
  855|       |	return false; /* don't rearm */
  856|  33.5k|}

ap_php_conv_10:
  211|  2.14M|{
  212|  2.14M|	char *p = buf_end;
  213|  2.14M|	uint64_t magnitude;
  214|       |
  215|  2.14M|	if (is_unsigned) {
  ------------------
  |  Branch (215:6): [True: 2.26k, False: 2.14M]
  ------------------
  216|  2.26k|		magnitude = (uint64_t) num;
  217|  2.26k|		*is_negative = false;
  218|  2.14M|	} else {
  219|  2.14M|		*is_negative = (num < 0);
  220|       |
  221|       |		/*
  222|       |		 * On a 2's complement machine, negating the most negative integer
  223|       |		 * results in a number that cannot be represented as a signed integer.
  224|       |		 * Here is what we do to obtain the number's magnitude:
  225|       |		 *      a. add 1 to the number
  226|       |		 *      b. negate it (becomes positive)
  227|       |		 *      c. convert it to unsigned
  228|       |		 *      d. add 1
  229|       |		 */
  230|  2.14M|		if (*is_negative) {
  ------------------
  |  Branch (230:7): [True: 51, False: 2.14M]
  ------------------
  231|     51|			int64_t t = num + 1;
  232|     51|			magnitude = ((uint64_t) - t) + 1;
  233|  2.14M|		} else {
  234|  2.14M|			magnitude = (uint64_t) num;
  235|  2.14M|		}
  236|  2.14M|	}
  237|       |
  238|       |	/*
  239|       |	 * We use a do-while loop so that we write at least 1 digit
  240|       |	 */
  241|  13.6M|	do {
  242|  13.6M|		uint64_t new_magnitude = magnitude / 10;
  243|       |
  244|  13.6M|		*--p = (char)(magnitude - new_magnitude * 10 + '0');
  245|  13.6M|		magnitude = new_magnitude;
  246|  13.6M|	}
  247|  13.6M|	while (magnitude);
  ------------------
  |  Branch (247:9): [True: 11.4M, False: 2.14M]
  ------------------
  248|       |
  249|  2.14M|	*len = buf_end - p;
  250|  2.14M|	return (p);
  251|  2.14M|}
php_conv_fp:
  269|     17|{
  270|     17|	char *s = buf;
  271|     17|	char *p, *p_orig;
  272|     17|	int decimal_point;
  273|       |
  274|     17|	if (precision >= NDIG - 1) {
  ------------------
  |  |  257|     17|#define	NDIG	320
  ------------------
  |  Branch (274:6): [True: 0, False: 17]
  ------------------
  275|      0|		precision = NDIG - 2;
  ------------------
  |  |  257|      0|#define	NDIG	320
  ------------------
  276|      0|	}
  277|       |
  278|     17|	if (format == 'F') {
  ------------------
  |  Branch (278:6): [True: 17, False: 0]
  ------------------
  279|     17|		p_orig = p = php_fcvt(num, precision, &decimal_point, is_negative);
  280|     17|	} else {						/* either e or E format */
  281|      0|		p_orig = p = php_ecvt(num, precision + 1, &decimal_point, is_negative);
  282|      0|	}
  283|       |
  284|       |	/*
  285|       |	 * Check for Infinity and NaN
  286|       |	 */
  287|     17|	if (isalpha((unsigned char)*p)) {
  ------------------
  |  Branch (287:6): [True: 0, False: 17]
  ------------------
  288|      0|		*len = strlen(p);
  289|      0|		memcpy(buf, p, *len + 1);
  290|      0|		*is_negative = false;
  291|      0|		free(p_orig);
  292|      0|		return (buf);
  293|      0|	}
  294|     17|	if (format == 'F') {
  ------------------
  |  Branch (294:6): [True: 17, False: 0]
  ------------------
  295|     17|		if (decimal_point <= 0) {
  ------------------
  |  Branch (295:7): [True: 3, False: 14]
  ------------------
  296|      3|			if (num != 0 || precision > 0) {
  ------------------
  |  Branch (296:8): [True: 3, False: 0]
  |  Branch (296:20): [True: 0, False: 0]
  ------------------
  297|      3|				*s++ = '0';
  298|      3|				if (precision > 0) {
  ------------------
  |  Branch (298:9): [True: 3, False: 0]
  ------------------
  299|      3|					*s++ = dec_point;
  300|      8|					while (decimal_point++ < 0) {
  ------------------
  |  Branch (300:13): [True: 5, False: 3]
  ------------------
  301|      5|						*s++ = '0';
  302|      5|					}
  303|      3|				} else if (add_dp) {
  ------------------
  |  Branch (303:16): [True: 0, False: 0]
  ------------------
  304|      0|					*s++ = dec_point;
  305|      0|				}
  306|      3|			}
  307|     14|		} else {
  308|     14|			int addz = decimal_point >= NDIG ? decimal_point - NDIG + 1 : 0;
  ------------------
  |  |  257|     14|#define	NDIG	320
  ------------------
              			int addz = decimal_point >= NDIG ? decimal_point - NDIG + 1 : 0;
  ------------------
  |  |  257|      0|#define	NDIG	320
  ------------------
  |  Branch (308:15): [True: 0, False: 14]
  ------------------
  309|     14|			decimal_point -= addz;
  310|    233|			while (decimal_point-- > 0) {
  ------------------
  |  Branch (310:11): [True: 219, False: 14]
  ------------------
  311|    219|				*s++ = *p++;
  312|    219|			}
  313|     14|			while (addz-- > 0) {
  ------------------
  |  Branch (313:11): [True: 0, False: 14]
  ------------------
  314|      0|				*s++ = '0';
  315|      0|			}
  316|     14|			if (precision > 0 || add_dp) {
  ------------------
  |  Branch (316:8): [True: 11, False: 3]
  |  Branch (316:25): [True: 0, False: 3]
  ------------------
  317|     11|				*s++ = dec_point;
  318|     11|			}
  319|     14|		}
  320|     17|	} else {
  321|      0|		*s++ = *p++;
  322|      0|		if (precision > 0 || add_dp) {
  ------------------
  |  Branch (322:7): [True: 0, False: 0]
  |  Branch (322:24): [True: 0, False: 0]
  ------------------
  323|      0|			*s++ = '.';
  324|      0|		}
  325|      0|	}
  326|       |
  327|       |	/*
  328|       |	 * copy the rest of p, the NUL is NOT copied
  329|       |	 */
  330|     94|	while (*p) {
  ------------------
  |  Branch (330:9): [True: 77, False: 17]
  ------------------
  331|     77|		*s++ = *p++;
  332|     77|	}
  333|       |
  334|     17|	if (format != 'F') {
  ------------------
  |  Branch (334:6): [True: 0, False: 17]
  ------------------
  335|      0|		char temp[EXPONENT_LENGTH];		/* for exponent conversion */
  336|      0|		size_t t_len;
  337|      0|		bool exponent_is_negative;
  338|       |
  339|      0|		*s++ = format;			/* either e or E */
  340|      0|		decimal_point--;
  341|      0|		if (decimal_point != 0) {
  ------------------
  |  Branch (341:7): [True: 0, False: 0]
  ------------------
  342|      0|			p = ap_php_conv_10((int64_t) decimal_point, false, &exponent_is_negative, &temp[EXPONENT_LENGTH], &t_len);
  ------------------
  |  |  193|      0|#define EXPONENT_LENGTH		10
  ------------------
  343|      0|			*s++ = exponent_is_negative ? '-' : '+';
  ------------------
  |  Branch (343:11): [True: 0, False: 0]
  ------------------
  344|       |
  345|       |			/*
  346|       |			 * Make sure the exponent has at least 2 digits
  347|       |			 */
  348|      0|			while (t_len--) {
  ------------------
  |  Branch (348:11): [True: 0, False: 0]
  ------------------
  349|      0|				*s++ = *p++;
  350|      0|			}
  351|      0|		} else {
  352|      0|			*s++ = '+';
  353|      0|			*s++ = '0';
  354|      0|		}
  355|      0|	}
  356|     17|	*len = s - buf;
  357|     17|	free(p_orig);
  358|     17|	return (buf);
  359|     17|}
ap_php_conv_p2:
  373|    410|{
  374|    410|	int mask = (1 << nbits) - 1;
  375|    410|	char *p = buf_end;
  376|    410|	static const char low_digits[] = "0123456789abcdef";
  377|    410|	static const char upper_digits[] = "0123456789ABCDEF";
  378|    410|	const char *digits = (format == 'X') ? upper_digits : low_digits;
  ------------------
  |  Branch (378:23): [True: 0, False: 410]
  ------------------
  379|       |
  380|    958|	do {
  381|    958|		*--p = digits[num & mask];
  382|    958|		num >>= nbits;
  383|    958|	}
  384|    958|	while (num);
  ------------------
  |  Branch (384:9): [True: 548, False: 410]
  ------------------
  385|       |
  386|    410|	*len = buf_end - p;
  387|    410|	return (p);
  388|    410|}
ap_php_slprintf:
 1071|  34.2k|{
 1072|  34.2k|	size_t cc;
 1073|  34.2k|	va_list ap;
 1074|       |
 1075|  34.2k|	va_start(ap, format);
 1076|  34.2k|	cc = strx_printv(buf, len, format, ap);
 1077|  34.2k|	va_end(ap);
 1078|  34.2k|	if (cc >= len) {
  ------------------
  |  Branch (1078:6): [True: 0, False: 34.2k]
  ------------------
 1079|      0|		cc = len -1;
 1080|      0|		buf[cc] = '\0';
 1081|      0|	}
 1082|  34.2k|	return (int) cc;
 1083|  34.2k|}
ap_php_snprintf:
 1098|     33|{
 1099|     33|	size_t cc;
 1100|     33|	va_list ap;
 1101|       |
 1102|     33|	va_start(ap, format);
 1103|     33|	cc = strx_printv(buf, len, format, ap);
 1104|       |	va_end(ap);
 1105|     33|	return (int) cc;
 1106|     33|}
snprintf.c:php_fcvt:
  124|     17|{
  125|     17|	return(__cvt(value, ndigit, decpt, sign, 1, 1));
  126|     17|}
snprintf.c:__cvt:
   59|     17|{
   60|     17|	char *s = NULL;
   61|     17|	char *p, *rve, c;
   62|     17|	size_t siz;
   63|       |
   64|     17|	if (ndigit < 0) {
  ------------------
  |  Branch (64:6): [True: 0, False: 17]
  ------------------
   65|      0|		siz = -ndigit + 1;
   66|     17|	} else {
   67|     17|		siz = ndigit + 1;
   68|     17|	}
   69|       |
   70|       |	/* __dtoa() doesn't allocate space for 0 so we do it by hand */
   71|     17|	if (value == 0.0) {
  ------------------
  |  Branch (71:6): [True: 0, False: 17]
  ------------------
   72|      0|		*decpt = 1 - fmode; /* 1 for 'e', 0 for 'f' */
   73|      0|		*sign = 0;
   74|      0|		if ((rve = s = (char *)malloc(ndigit?siz:2)) == NULL) {
  ------------------
  |  Branch (74:7): [True: 0, False: 0]
  |  Branch (74:33): [True: 0, False: 0]
  ------------------
   75|      0|			return(NULL);
   76|      0|		}
   77|      0|		*rve++ = '0';
   78|      0|		*rve = '\0';
   79|      0|		if (!ndigit) {
  ------------------
  |  Branch (79:7): [True: 0, False: 0]
  ------------------
   80|      0|			return(s);
   81|      0|		}
   82|     17|	} else {
   83|     17|		p = zend_dtoa(value, fmode + 2, ndigit, decpt, sign, &rve);
   84|     17|		if (*decpt == 9999) {
  ------------------
  |  Branch (84:7): [True: 0, False: 17]
  ------------------
   85|       |			/* Infinity or Nan, convert to inf or nan like printf */
   86|      0|			*decpt = 0;
   87|      0|			c = *p;
   88|      0|			zend_freedtoa(p);
   89|      0|			return strdup((c == 'I' ? "INF" : "NAN"));
  ------------------
  |  Branch (89:19): [True: 0, False: 0]
  ------------------
   90|      0|		}
   91|       |		/* Make a local copy and adjust rve to be in terms of s */
   92|     17|		if (pad && fmode) {
  ------------------
  |  Branch (92:7): [True: 17, False: 0]
  |  Branch (92:14): [True: 17, False: 0]
  ------------------
   93|     17|			siz += *decpt;
   94|     17|		}
   95|     17|		if ((s = (char *)malloc(siz+1)) == NULL) {
  ------------------
  |  Branch (95:7): [True: 0, False: 17]
  ------------------
   96|      0|			zend_freedtoa(p);
   97|      0|			return(NULL);
   98|      0|		}
   99|     17|		(void) strlcpy(s, p, siz);
  ------------------
  |  |  149|     17|#define strlcpy php_strlcpy
  ------------------
  100|     17|		rve = s + (rve - p);
  101|     17|		zend_freedtoa(p);
  102|     17|	}
  103|       |
  104|       |	/* Add trailing zeros */
  105|     17|	if (pad) {
  ------------------
  |  Branch (105:6): [True: 17, False: 0]
  ------------------
  106|     17|		siz -= rve - s;
  107|     74|		while (--siz) {
  ------------------
  |  Branch (107:10): [True: 57, False: 17]
  ------------------
  108|     57|			*rve++ = '0';
  109|     57|		}
  110|     17|		*rve = '\0';
  111|     17|	}
  112|       |
  113|     17|	return(s);
  114|     17|}
snprintf.c:strx_printv:
 1042|  34.2k|{
 1043|  34.2k|	buffy od;
 1044|  34.2k|	size_t cc;
 1045|       |
 1046|       |	/*
 1047|       |	 * First initialize the descriptor
 1048|       |	 * Notice that if no length is given, we initialize buf_end to the
 1049|       |	 * highest possible address.
 1050|       |	 */
 1051|  34.2k|	if (len == 0) {
  ------------------
  |  Branch (1051:6): [True: 0, False: 34.2k]
  ------------------
 1052|      0|		od.buf_end = (char *) ~0;
 1053|      0|		od.nextb   = (char *) ~0;
 1054|  34.2k|	} else {
 1055|  34.2k|		od.buf_end = &buf[len-1];
 1056|  34.2k|		od.nextb   = buf;
 1057|  34.2k|	}
 1058|       |
 1059|       |	/*
 1060|       |	 * Do the conversion
 1061|       |	 */
 1062|  34.2k|	cc = format_converter(&od, format, ap);
 1063|  34.2k|	if (len != 0 && od.nextb <= od.buf_end) {
  ------------------
  |  Branch (1063:6): [True: 34.2k, False: 0]
  |  Branch (1063:18): [True: 34.2k, False: 0]
  ------------------
 1064|  34.2k|		*(od.nextb) = '\0';
 1065|  34.2k|	}
 1066|  34.2k|	return cc;
 1067|  34.2k|}
snprintf.c:format_converter:
  470|  34.2k|{
  471|  34.2k|	char *sp;
  472|  34.2k|	char *bep;
  473|  34.2k|	size_t cc = 0;
  474|  34.2k|	size_t i;
  475|       |
  476|  34.2k|	char *s = NULL;
  477|  34.2k|	size_t s_len;
  478|       |
  479|  34.2k|	int min_width = 0;
  480|  34.2k|	int precision = 0;
  481|  34.2k|	enum {
  482|  34.2k|		LEFT, RIGHT
  483|  34.2k|	} adjust;
  484|  34.2k|	char pad_char;
  485|  34.2k|	char prefix_char;
  486|       |
  487|  34.2k|	double fp_num;
  488|  34.2k|	int64_t i_num = (int64_t) 0;
  489|  34.2k|	uint64_t ui_num;
  490|       |
  491|  34.2k|	char num_buf[NUM_BUF_SIZE];
  492|  34.2k|	char char_buf[2];			/* for printing %% and %<unknown> */
  493|       |
  494|       |#ifdef ZTS
  495|       |	struct lconv lconv;
  496|       |#else
  497|  34.2k|	struct lconv *lconv = NULL;
  498|  34.2k|#endif
  499|       |
  500|       |	/*
  501|       |	 * Flag variables
  502|       |	 */
  503|  34.2k|	length_modifier_e modifier;
  504|  34.2k|	bool alternate_form;
  505|  34.2k|	bool print_sign;
  506|  34.2k|	bool print_blank;
  507|  34.2k|	bool adjust_precision;
  508|  34.2k|	bool adjust_width;
  509|  34.2k|	bool is_negative;
  510|       |
  511|  34.2k|	sp = odp->nextb;
  512|  34.2k|	bep = odp->buf_end;
  513|       |
  514|   439k|	while (*fmt) {
  ------------------
  |  Branch (514:9): [True: 404k, False: 34.2k]
  ------------------
  515|   404k|		if (*fmt != '%') {
  ------------------
  |  Branch (515:7): [True: 369k, False: 34.8k]
  ------------------
  516|   369k|			INS_CHAR(*fmt, sp, bep, cc);
  ------------------
  |  |  423|   369k|	{                            \
  |  |  424|   369k|		if (sp < bep)            \
  |  |  ------------------
  |  |  |  Branch (424:7): [True: 369k, False: 0]
  |  |  ------------------
  |  |  425|   369k|		{                        \
  |  |  426|   369k|			*sp++ = c;           \
  |  |  427|   369k|		}                        \
  |  |  428|   369k|		cc++;                    \
  |  |  429|   369k|	}
  ------------------
  517|   369k|		} else {
  518|       |			/*
  519|       |			 * Default variable settings
  520|       |			 */
  521|  34.8k|			zend_string *tmp_str = NULL;
  522|  34.8k|			adjust = RIGHT;
  523|  34.8k|			alternate_form = print_sign = print_blank = false;
  524|  34.8k|			pad_char = ' ';
  525|  34.8k|			prefix_char = NUL;
  ------------------
  |  |  186|  34.8k|#define NUL			'\0'
  ------------------
  526|       |
  527|  34.8k|			fmt++;
  528|       |
  529|       |			/*
  530|       |			 * Try to avoid checking for flags, width or precision
  531|       |			 */
  532|  34.8k|			if (isascii((unsigned char)*fmt) && !islower((unsigned char)*fmt)) {
  ------------------
  |  Branch (532:8): [True: 34.8k, False: 0]
  |  Branch (532:40): [True: 587, False: 34.2k]
  ------------------
  533|       |				/*
  534|       |				 * Recognize flags: -, #, BLANK, +
  535|       |				 */
  536|  1.14k|				for (;; fmt++) {
  537|  1.14k|					if (*fmt == '-')
  ------------------
  |  Branch (537:10): [True: 0, False: 1.14k]
  ------------------
  538|      0|						adjust = LEFT;
  539|  1.14k|					else if (*fmt == '+')
  ------------------
  |  Branch (539:15): [True: 0, False: 1.14k]
  ------------------
  540|      0|						print_sign = true;
  541|  1.14k|					else if (*fmt == '#')
  ------------------
  |  Branch (541:15): [True: 0, False: 1.14k]
  ------------------
  542|      0|						alternate_form = true;
  543|  1.14k|					else if (*fmt == ' ')
  ------------------
  |  Branch (543:15): [True: 0, False: 1.14k]
  ------------------
  544|      0|						print_blank = true;
  545|  1.14k|					else if (*fmt == '0')
  ------------------
  |  Branch (545:15): [True: 561, False: 587]
  ------------------
  546|    561|						pad_char = '0';
  547|    587|					else
  548|    587|						break;
  549|  1.14k|				}
  550|       |
  551|       |				/*
  552|       |				 * Check if a width was specified
  553|       |				 */
  554|    587|				if (isdigit((unsigned char)*fmt)) {
  ------------------
  |  Branch (554:9): [True: 587, False: 0]
  ------------------
  555|    587|					STR_TO_DEC(fmt, min_width);
  ------------------
  |  |  434|    587|    num = NUM( *(str)++ ) ;		\
  |  |  ------------------
  |  |  |  |  431|    587|#define NUM( c )			( c - '0' )
  |  |  ------------------
  |  |  435|    587|    while ( isdigit((unsigned char)*(str) ) )		\
  |  |  436|    587|    {					\
  |  |  437|      0|	num *= 10 ;			\
  |  |  438|      0|	num += NUM( *(str)++ ) ;		\
  |  |  ------------------
  |  |  |  |  431|      0|#define NUM( c )			( c - '0' )
  |  |  ------------------
  |  |  439|      0|    }
  ------------------
  |  Branch (555:6): [True: 0, False: 587]
  ------------------
  556|    587|					adjust_width = true;
  557|    587|				} else if (*fmt == '*') {
  ------------------
  |  Branch (557:16): [True: 0, False: 0]
  ------------------
  558|      0|					min_width = va_arg(ap, int);
  559|      0|					fmt++;
  560|      0|					adjust_width = true;
  561|      0|					if (min_width < 0) {
  ------------------
  |  Branch (561:10): [True: 0, False: 0]
  ------------------
  562|      0|						adjust = LEFT;
  563|      0|						min_width = -min_width;
  564|      0|					}
  565|      0|				} else
  566|      0|					adjust_width = false;
  567|       |
  568|       |				/*
  569|       |				 * Check if a precision was specified
  570|       |				 */
  571|    587|				if (*fmt == '.') {
  ------------------
  |  Branch (571:9): [True: 0, False: 587]
  ------------------
  572|      0|					adjust_precision = true;
  573|      0|					fmt++;
  574|      0|					if (isdigit((unsigned char)*fmt)) {
  ------------------
  |  Branch (574:10): [True: 0, False: 0]
  ------------------
  575|      0|						STR_TO_DEC(fmt, precision);
  ------------------
  |  |  434|      0|    num = NUM( *(str)++ ) ;		\
  |  |  ------------------
  |  |  |  |  431|      0|#define NUM( c )			( c - '0' )
  |  |  ------------------
  |  |  435|      0|    while ( isdigit((unsigned char)*(str) ) )		\
  |  |  436|      0|    {					\
  |  |  437|      0|	num *= 10 ;			\
  |  |  438|      0|	num += NUM( *(str)++ ) ;		\
  |  |  ------------------
  |  |  |  |  431|      0|#define NUM( c )			( c - '0' )
  |  |  ------------------
  |  |  439|      0|    }
  ------------------
  |  Branch (575:7): [True: 0, False: 0]
  ------------------
  576|      0|					} else if (*fmt == '*') {
  ------------------
  |  Branch (576:17): [True: 0, False: 0]
  ------------------
  577|      0|						precision = va_arg(ap, int);
  578|      0|						fmt++;
  579|      0|						if (precision < -1)
  ------------------
  |  Branch (579:11): [True: 0, False: 0]
  ------------------
  580|      0|							precision = -1;
  581|      0|					} else
  582|      0|						precision = 0;
  583|      0|				} else
  584|    587|					adjust_precision = false;
  585|    587|			} else
  586|  34.2k|				adjust_precision = adjust_width = false;
  587|       |
  588|       |			/*
  589|       |			 * Modifier check
  590|       |			 */
  591|  34.8k|			switch (*fmt) {
  592|      0|				case 'L':
  ------------------
  |  Branch (592:5): [True: 0, False: 34.8k]
  ------------------
  593|      0|					fmt++;
  594|      0|					modifier = LM_LONG_DOUBLE;
  595|      0|					break;
  596|    189|				case 'l':
  ------------------
  |  Branch (596:5): [True: 189, False: 34.6k]
  ------------------
  597|    189|					fmt++;
  598|    189|#if SIZEOF_LONG_LONG
  599|    189|					if (*fmt == 'l') {
  ------------------
  |  Branch (599:10): [True: 4, False: 185]
  ------------------
  600|      4|						fmt++;
  601|      4|						modifier = LM_LONG_LONG;
  602|      4|					} else
  603|    185|#endif
  604|    185|						modifier = LM_LONG;
  605|    189|					break;
  606|      4|				case 'z':
  ------------------
  |  Branch (606:5): [True: 4, False: 34.7k]
  ------------------
  607|      4|					fmt++;
  608|      4|					modifier = LM_SIZE_T;
  609|      4|					break;
  610|      0|				case 'j':
  ------------------
  |  Branch (610:5): [True: 0, False: 34.8k]
  ------------------
  611|      0|					fmt++;
  612|      0|					modifier = LM_INTMAX_T;
  613|      0|					break;
  614|      0|				case 't':
  ------------------
  |  Branch (614:5): [True: 0, False: 34.8k]
  ------------------
  615|      0|					fmt++;
  616|      0|					modifier = LM_PTRDIFF_T;
  617|      0|					break;
  618|      0|				case 'p':
  ------------------
  |  Branch (618:5): [True: 0, False: 34.8k]
  ------------------
  619|      0|				{
  620|      0|					char __next = *(fmt+1);
  621|      0|					if ('d' == __next || 'u' == __next || 'x' == __next || 'o' == __next) {
  ------------------
  |  Branch (621:10): [True: 0, False: 0]
  |  Branch (621:27): [True: 0, False: 0]
  |  Branch (621:44): [True: 0, False: 0]
  |  Branch (621:61): [True: 0, False: 0]
  ------------------
  622|      0|						zend_error_noreturn(E_CORE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
  623|      0|							"printf \"p\" modifier is no longer supported, use ZEND_LONG_FMT");
  624|      0|					}
  625|      0|					modifier = LM_STD;
  626|      0|					break;
  627|      0|				}
  628|      0|				case 'h':
  ------------------
  |  Branch (628:5): [True: 0, False: 34.8k]
  ------------------
  629|      0|					fmt++;
  630|      0|					if (*fmt == 'h') {
  ------------------
  |  Branch (630:10): [True: 0, False: 0]
  ------------------
  631|      0|						fmt++;
  632|      0|					}
  633|       |					/* these are promoted to int, so no break */
  634|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  635|  34.6k|				default:
  ------------------
  |  Branch (635:5): [True: 34.6k, False: 193]
  ------------------
  636|  34.6k|					modifier = LM_STD;
  637|  34.6k|					break;
  638|  34.8k|			}
  639|       |
  640|       |			/*
  641|       |			 * Argument extraction and printing.
  642|       |			 * First we determine the argument type.
  643|       |			 * Then, we convert the argument to a string.
  644|       |			 * On exit from the switch, s points to the string that
  645|       |			 * must be printed, s_len has the length of the string
  646|       |			 * The precision requirements, if any, are reflected in s_len.
  647|       |			 *
  648|       |			 * NOTE: pad_char may be set to '0' because of the 0 flag.
  649|       |			 *   It is reset to ' ' by non-numeric formats
  650|       |			 */
  651|  34.8k|			switch (*fmt) {
  652|      0|				case 'Z': {
  ------------------
  |  Branch (652:5): [True: 0, False: 34.8k]
  ------------------
  653|      0|					zval *zvp = va_arg(ap, zval*);
  654|      0|					zend_string *str = zval_get_tmp_string(zvp, &tmp_str);
  655|      0|					s_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  656|      0|					s = ZSTR_VAL(str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  657|      0|					if (adjust_precision && (size_t)precision < s_len) {
  ------------------
  |  Branch (657:10): [True: 0, False: 0]
  |  Branch (657:30): [True: 0, False: 0]
  ------------------
  658|      0|						s_len = precision;
  659|      0|					}
  660|      0|					break;
  661|      0|				}
  662|    134|				case 'u':
  ------------------
  |  Branch (662:5): [True: 134, False: 34.6k]
  ------------------
  663|    134|					switch(modifier) {
  664|      3|						default:
  ------------------
  |  Branch (664:7): [True: 3, False: 131]
  ------------------
  665|      3|							i_num = (int64_t) va_arg(ap, unsigned int);
  666|      3|							break;
  667|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (667:7): [True: 0, False: 134]
  ------------------
  668|      0|							goto fmt_error;
  669|    127|						case LM_LONG:
  ------------------
  |  Branch (669:7): [True: 127, False: 7]
  ------------------
  670|    127|							i_num = (int64_t) va_arg(ap, unsigned long int);
  671|    127|							break;
  672|      4|						case LM_SIZE_T:
  ------------------
  |  Branch (672:7): [True: 4, False: 130]
  ------------------
  673|      4|							i_num = (int64_t) va_arg(ap, size_t);
  674|      4|							break;
  675|      0|#if SIZEOF_LONG_LONG
  676|      0|						case LM_LONG_LONG:
  ------------------
  |  Branch (676:7): [True: 0, False: 134]
  ------------------
  677|      0|							i_num = (int64_t) va_arg(ap, unsigned long long int);
  678|      0|							break;
  679|      0|#endif
  680|      0|						case LM_INTMAX_T:
  ------------------
  |  Branch (680:7): [True: 0, False: 134]
  ------------------
  681|      0|							i_num = (int64_t) va_arg(ap, uintmax_t);
  682|      0|							break;
  683|      0|						case LM_PTRDIFF_T:
  ------------------
  |  Branch (683:7): [True: 0, False: 134]
  ------------------
  684|      0|							i_num = (int64_t) va_arg(ap, ptrdiff_t);
  685|      0|							break;
  686|    134|					}
  687|       |					/*
  688|       |					 * The rest also applies to other integer formats, so fall
  689|       |					 * into that case.
  690|       |					 */
  691|    134|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|    134|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  692|  34.3k|				case 'd':
  ------------------
  |  Branch (692:5): [True: 34.2k, False: 575]
  ------------------
  693|  34.3k|				case 'i':
  ------------------
  |  Branch (693:5): [True: 0, False: 34.8k]
  ------------------
  694|       |					/*
  695|       |					 * Get the arg if we haven't already.
  696|       |					 */
  697|  34.3k|					if ((*fmt) != 'u') {
  ------------------
  |  Branch (697:10): [True: 34.2k, False: 134]
  ------------------
  698|  34.2k|						switch(modifier) {
  699|  34.1k|							default:
  ------------------
  |  Branch (699:8): [True: 34.1k, False: 62]
  ------------------
  700|  34.1k|								i_num = (int64_t) va_arg(ap, int);
  701|  34.1k|								break;
  702|      0|							case LM_LONG_DOUBLE:
  ------------------
  |  Branch (702:8): [True: 0, False: 34.2k]
  ------------------
  703|      0|								goto fmt_error;
  704|     58|							case LM_LONG:
  ------------------
  |  Branch (704:8): [True: 58, False: 34.1k]
  ------------------
  705|     58|								i_num = (int64_t) va_arg(ap, long int);
  706|     58|								break;
  707|      0|							case LM_SIZE_T:
  ------------------
  |  Branch (707:8): [True: 0, False: 34.2k]
  ------------------
  708|      0|								i_num = (int64_t) va_arg(ap, ssize_t);
  709|      0|								break;
  710|      0|#if SIZEOF_LONG_LONG
  711|      4|							case LM_LONG_LONG:
  ------------------
  |  Branch (711:8): [True: 4, False: 34.2k]
  ------------------
  712|      4|								i_num = (int64_t) va_arg(ap, long long int);
  713|      4|								break;
  714|      0|#endif
  715|      0|							case LM_INTMAX_T:
  ------------------
  |  Branch (715:8): [True: 0, False: 34.2k]
  ------------------
  716|      0|								i_num = (int64_t) va_arg(ap, intmax_t);
  717|      0|								break;
  718|      0|							case LM_PTRDIFF_T:
  ------------------
  |  Branch (718:8): [True: 0, False: 34.2k]
  ------------------
  719|      0|								i_num = (int64_t) va_arg(ap, ptrdiff_t);
  720|      0|								break;
  721|  34.2k|						}
  722|  34.2k|					}
  723|  34.3k|					s = ap_php_conv_10(i_num, (*fmt) == 'u', &is_negative,
  724|  34.3k|								&num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  399|  34.3k|#define NUM_BUF_SIZE		2048
  ------------------
  725|  34.3k|					FIX_PRECISION(adjust_precision, precision, s, s_len);
  ------------------
  |  |  448|  34.3k|	if ( adjust )						\
  |  |  ------------------
  |  |  |  Branch (448:7): [True: 0, False: 34.3k]
  |  |  ------------------
  |  |  449|  34.3k|	while ( s_len < (size_t)precision )	\
  |  |  ------------------
  |  |  |  Branch (449:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  450|      0|	{									\
  |  |  451|      0|	    *--s = '0' ;					\
  |  |  452|      0|	    s_len++ ;						\
  |  |  453|      0|	}
  ------------------
  726|       |
  727|  34.3k|					if (*fmt != 'u') {
  ------------------
  |  Branch (727:10): [True: 34.2k, False: 134]
  ------------------
  728|  34.2k|						if (is_negative) {
  ------------------
  |  Branch (728:11): [True: 3, False: 34.2k]
  ------------------
  729|      3|							prefix_char = '-';
  730|  34.2k|						} else if (print_sign) {
  ------------------
  |  Branch (730:18): [True: 0, False: 34.2k]
  ------------------
  731|      0|							prefix_char = '+';
  732|  34.2k|						} else if (print_blank) {
  ------------------
  |  Branch (732:18): [True: 0, False: 34.2k]
  ------------------
  733|      0|							prefix_char = ' ';
  734|      0|						}
  735|  34.2k|					}
  736|  34.3k|					break;
  737|       |
  738|       |
  739|      0|				case 'o':
  ------------------
  |  Branch (739:5): [True: 0, False: 34.8k]
  ------------------
  740|      0|					switch(modifier) {
  741|      0|						default:
  ------------------
  |  Branch (741:7): [True: 0, False: 0]
  ------------------
  742|      0|							ui_num = (uint64_t) va_arg(ap, unsigned int);
  743|      0|							break;
  744|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (744:7): [True: 0, False: 0]
  ------------------
  745|      0|							goto fmt_error;
  746|      0|						case LM_LONG:
  ------------------
  |  Branch (746:7): [True: 0, False: 0]
  ------------------
  747|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long int);
  748|      0|							break;
  749|      0|						case LM_SIZE_T:
  ------------------
  |  Branch (749:7): [True: 0, False: 0]
  ------------------
  750|      0|							ui_num = (uint64_t) va_arg(ap, size_t);
  751|      0|							break;
  752|      0|#if SIZEOF_LONG_LONG
  753|      0|						case LM_LONG_LONG:
  ------------------
  |  Branch (753:7): [True: 0, False: 0]
  ------------------
  754|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long long int);
  755|      0|							break;
  756|      0|#endif
  757|      0|						case LM_INTMAX_T:
  ------------------
  |  Branch (757:7): [True: 0, False: 0]
  ------------------
  758|      0|							ui_num = (uint64_t) va_arg(ap, uintmax_t);
  759|      0|							break;
  760|      0|						case LM_PTRDIFF_T:
  ------------------
  |  Branch (760:7): [True: 0, False: 0]
  ------------------
  761|      0|							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
  762|      0|							break;
  763|      0|					}
  764|      0|					s = ap_php_conv_p2(ui_num, 3, *fmt, &num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  399|      0|#define NUM_BUF_SIZE		2048
  ------------------
  765|      0|					FIX_PRECISION(adjust_precision, precision, s, s_len);
  ------------------
  |  |  448|      0|	if ( adjust )						\
  |  |  ------------------
  |  |  |  Branch (448:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  449|      0|	while ( s_len < (size_t)precision )	\
  |  |  ------------------
  |  |  |  Branch (449:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  450|      0|	{									\
  |  |  451|      0|	    *--s = '0' ;					\
  |  |  452|      0|	    s_len++ ;						\
  |  |  453|      0|	}
  ------------------
  766|      0|					if (alternate_form && *s != '0') {
  ------------------
  |  Branch (766:10): [True: 0, False: 0]
  |  Branch (766:28): [True: 0, False: 0]
  ------------------
  767|      0|						*--s = '0';
  768|      0|						s_len++;
  769|      0|					}
  770|      0|					break;
  771|       |
  772|       |
  773|      0|				case 'x':
  ------------------
  |  Branch (773:5): [True: 0, False: 34.8k]
  ------------------
  774|      0|				case 'X':
  ------------------
  |  Branch (774:5): [True: 0, False: 34.8k]
  ------------------
  775|      0|					switch(modifier) {
  776|      0|						default:
  ------------------
  |  Branch (776:7): [True: 0, False: 0]
  ------------------
  777|      0|							ui_num = (uint64_t) va_arg(ap, unsigned int);
  778|      0|							break;
  779|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (779:7): [True: 0, False: 0]
  ------------------
  780|      0|							goto fmt_error;
  781|      0|						case LM_LONG:
  ------------------
  |  Branch (781:7): [True: 0, False: 0]
  ------------------
  782|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long int);
  783|      0|							break;
  784|      0|						case LM_SIZE_T:
  ------------------
  |  Branch (784:7): [True: 0, False: 0]
  ------------------
  785|      0|							ui_num = (uint64_t) va_arg(ap, size_t);
  786|      0|							break;
  787|      0|#if SIZEOF_LONG_LONG
  788|      0|						case LM_LONG_LONG:
  ------------------
  |  Branch (788:7): [True: 0, False: 0]
  ------------------
  789|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long long int);
  790|      0|							break;
  791|      0|#endif
  792|      0|						case LM_INTMAX_T:
  ------------------
  |  Branch (792:7): [True: 0, False: 0]
  ------------------
  793|      0|							ui_num = (uint64_t) va_arg(ap, uintmax_t);
  794|      0|							break;
  795|      0|						case LM_PTRDIFF_T:
  ------------------
  |  Branch (795:7): [True: 0, False: 0]
  ------------------
  796|      0|							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
  797|      0|							break;
  798|      0|					}
  799|      0|					s = ap_php_conv_p2(ui_num, 4, *fmt, &num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  399|      0|#define NUM_BUF_SIZE		2048
  ------------------
  800|      0|					FIX_PRECISION(adjust_precision, precision, s, s_len);
  ------------------
  |  |  448|      0|	if ( adjust )						\
  |  |  ------------------
  |  |  |  Branch (448:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  449|      0|	while ( s_len < (size_t)precision )	\
  |  |  ------------------
  |  |  |  Branch (449:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  450|      0|	{									\
  |  |  451|      0|	    *--s = '0' ;					\
  |  |  452|      0|	    s_len++ ;						\
  |  |  453|      0|	}
  ------------------
  801|      0|					if (alternate_form && i_num != 0) {
  ------------------
  |  Branch (801:10): [True: 0, False: 0]
  |  Branch (801:28): [True: 0, False: 0]
  ------------------
  802|      0|						*--s = *fmt;	/* 'x' or 'X' */
  803|      0|						*--s = '0';
  804|      0|						s_len += 2;
  805|      0|					}
  806|      0|					break;
  807|       |
  808|       |
  809|    388|				case 's':
  ------------------
  |  Branch (809:5): [True: 388, False: 34.4k]
  ------------------
  810|    388|					s = va_arg(ap, char *);
  811|    388|					if (s != NULL) {
  ------------------
  |  Branch (811:10): [True: 388, False: 0]
  ------------------
  812|    388|						s_len = strlen(s);
  813|    388|						if (adjust_precision && (size_t)precision < s_len) {
  ------------------
  |  Branch (813:11): [True: 0, False: 388]
  |  Branch (813:31): [True: 0, False: 0]
  ------------------
  814|      0|							s_len = precision;
  815|      0|						}
  816|    388|					} else {
  817|      0|						s = S_NULL;
  ------------------
  |  |  189|      0|#define S_NULL			"(null)"
  ------------------
  818|      0|						s_len = S_NULL_LEN;
  ------------------
  |  |  190|      0|#define S_NULL_LEN		6
  ------------------
  819|      0|					}
  820|    388|					pad_char = ' ';
  821|    388|					break;
  822|       |
  823|       |
  824|      0|				case 'f':
  ------------------
  |  Branch (824:5): [True: 0, False: 34.8k]
  ------------------
  825|      0|				case 'F':
  ------------------
  |  Branch (825:5): [True: 0, False: 34.8k]
  ------------------
  826|      0|				case 'e':
  ------------------
  |  Branch (826:5): [True: 0, False: 34.8k]
  ------------------
  827|      0|				case 'E':
  ------------------
  |  Branch (827:5): [True: 0, False: 34.8k]
  ------------------
  828|      0|					switch(modifier) {
  829|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (829:7): [True: 0, False: 0]
  ------------------
  830|      0|							fp_num = (double) va_arg(ap, long double);
  831|      0|							break;
  832|      0|						case LM_STD:
  ------------------
  |  Branch (832:7): [True: 0, False: 0]
  ------------------
  833|      0|							fp_num = va_arg(ap, double);
  834|      0|							break;
  835|      0|						default:
  ------------------
  |  Branch (835:7): [True: 0, False: 0]
  ------------------
  836|      0|							goto fmt_error;
  837|      0|					}
  838|       |
  839|      0|					if (zend_isnan(fp_num)) {
  ------------------
  |  |  536|      0|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (839:10): [True: 0, False: 0]
  ------------------
  840|      0|						s = "NAN";
  841|      0|						s_len = 3;
  842|      0|					} else if (zend_isinf(fp_num)) {
  ------------------
  |  |  537|      0|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (842:17): [True: 0, False: 0]
  ------------------
  843|      0|						s = "INF";
  844|      0|						s_len = 3;
  845|      0|					} else {
  846|       |#ifdef ZTS
  847|       |						localeconv_r(&lconv);
  848|       |#else
  849|      0|						if (!lconv) {
  ------------------
  |  Branch (849:11): [True: 0, False: 0]
  ------------------
  850|      0|							lconv = localeconv();
  851|      0|						}
  852|      0|#endif
  853|      0|						s = php_conv_fp((*fmt == 'f')?'F':*fmt, fp_num, alternate_form,
  ------------------
  |  Branch (853:23): [True: 0, False: 0]
  ------------------
  854|      0|						 (adjust_precision == false) ? FLOAT_DIGITS : precision,
  ------------------
  |  |  192|      0|#define FLOAT_DIGITS		6
  ------------------
  |  Branch (854:8): [True: 0, False: 0]
  ------------------
  855|      0|						 (*fmt == 'f')?LCONV_DECIMAL_POINT:'.',
  ------------------
  |  |   35|      0|#define LCONV_DECIMAL_POINT (*lconv->decimal_point)
  ------------------
  |  Branch (855:8): [True: 0, False: 0]
  ------------------
  856|      0|									&is_negative, &num_buf[1], &s_len);
  857|      0|						if (is_negative)
  ------------------
  |  Branch (857:11): [True: 0, False: 0]
  ------------------
  858|      0|							prefix_char = '-';
  859|      0|						else if (print_sign)
  ------------------
  |  Branch (859:16): [True: 0, False: 0]
  ------------------
  860|      0|							prefix_char = '+';
  861|      0|						else if (print_blank)
  ------------------
  |  Branch (861:16): [True: 0, False: 0]
  ------------------
  862|      0|							prefix_char = ' ';
  863|      0|					}
  864|      0|					break;
  865|       |
  866|       |
  867|      0|				case 'g':
  ------------------
  |  Branch (867:5): [True: 0, False: 34.8k]
  ------------------
  868|      0|				case 'k':
  ------------------
  |  Branch (868:5): [True: 0, False: 34.8k]
  ------------------
  869|      0|				case 'G':
  ------------------
  |  Branch (869:5): [True: 0, False: 34.8k]
  ------------------
  870|      0|				case 'H':
  ------------------
  |  Branch (870:5): [True: 0, False: 34.8k]
  ------------------
  871|      0|					switch(modifier) {
  872|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (872:7): [True: 0, False: 0]
  ------------------
  873|      0|							fp_num = (double) va_arg(ap, long double);
  874|      0|							break;
  875|      0|						case LM_STD:
  ------------------
  |  Branch (875:7): [True: 0, False: 0]
  ------------------
  876|      0|							fp_num = va_arg(ap, double);
  877|      0|							break;
  878|      0|						default:
  ------------------
  |  Branch (878:7): [True: 0, False: 0]
  ------------------
  879|      0|							goto fmt_error;
  880|      0|					}
  881|       |
  882|      0|					if (zend_isnan(fp_num)) {
  ------------------
  |  |  536|      0|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (882:10): [True: 0, False: 0]
  ------------------
  883|      0|						s = "NAN";
  884|      0|						s_len = 3;
  885|      0|						break;
  886|      0|					} else if (zend_isinf(fp_num)) {
  ------------------
  |  |  537|      0|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (886:17): [True: 0, False: 0]
  ------------------
  887|      0|						if (fp_num > 0) {
  ------------------
  |  Branch (887:11): [True: 0, False: 0]
  ------------------
  888|      0|							s = "INF";
  889|      0|							s_len = 3;
  890|      0|						} else {
  891|      0|							s = "-INF";
  892|      0|							s_len = 4;
  893|      0|						}
  894|      0|						break;
  895|      0|					}
  896|       |
  897|      0|					if (adjust_precision == false) {
  ------------------
  |  Branch (897:10): [True: 0, False: 0]
  ------------------
  898|      0|						precision = FLOAT_DIGITS;
  ------------------
  |  |  192|      0|#define FLOAT_DIGITS		6
  ------------------
  899|      0|					} else if (precision == 0) {
  ------------------
  |  Branch (899:17): [True: 0, False: 0]
  ------------------
  900|      0|						precision = 1;
  901|      0|					}
  902|       |					/*
  903|       |					 * * We use &num_buf[ 1 ], so that we have room for the sign
  904|       |					 */
  905|       |#ifdef ZTS
  906|       |					localeconv_r(&lconv);
  907|       |#else
  908|      0|					if (!lconv) {
  ------------------
  |  Branch (908:10): [True: 0, False: 0]
  ------------------
  909|      0|						lconv = localeconv();
  910|      0|					}
  911|      0|#endif
  912|      0|					s = zend_gcvt(fp_num, precision, (*fmt=='H' || *fmt == 'k') ? '.' : LCONV_DECIMAL_POINT, (*fmt == 'G' || *fmt == 'H')?'E':'e', &num_buf[1]);
  ------------------
  |  |   35|      0|#define LCONV_DECIMAL_POINT (*lconv->decimal_point)
  ------------------
  |  Branch (912:40): [True: 0, False: 0]
  |  Branch (912:53): [True: 0, False: 0]
  |  Branch (912:96): [True: 0, False: 0]
  |  Branch (912:111): [True: 0, False: 0]
  ------------------
  913|      0|					if (*s == '-') {
  ------------------
  |  Branch (913:10): [True: 0, False: 0]
  ------------------
  914|      0|						prefix_char = *s++;
  915|      0|					} else if (print_sign) {
  ------------------
  |  Branch (915:17): [True: 0, False: 0]
  ------------------
  916|      0|						prefix_char = '+';
  917|      0|					} else if (print_blank) {
  ------------------
  |  Branch (917:17): [True: 0, False: 0]
  ------------------
  918|      0|						prefix_char = ' ';
  919|      0|					}
  920|       |
  921|      0|					s_len = strlen(s);
  922|       |
  923|      0|					if (alternate_form && (strchr(s, '.')) == NULL) {
  ------------------
  |  Branch (923:10): [True: 0, False: 0]
  |  Branch (923:28): [True: 0, False: 0]
  ------------------
  924|      0|						s[s_len++] = '.';
  925|      0|					}
  926|      0|					break;
  927|       |
  928|       |
  929|     53|				case 'c':
  ------------------
  |  Branch (929:5): [True: 53, False: 34.7k]
  ------------------
  930|     53|					char_buf[0] = (char) (va_arg(ap, int));
  931|     53|					s = &char_buf[0];
  932|     53|					s_len = 1;
  933|     53|					pad_char = ' ';
  934|     53|					break;
  935|       |
  936|       |
  937|      0|				case '%':
  ------------------
  |  Branch (937:5): [True: 0, False: 34.8k]
  ------------------
  938|      0|					char_buf[0] = '%';
  939|      0|					s = &char_buf[0];
  940|      0|					s_len = 1;
  941|      0|					pad_char = ' ';
  942|      0|					break;
  943|       |
  944|       |
  945|      0|				case 'n':
  ------------------
  |  Branch (945:5): [True: 0, False: 34.8k]
  ------------------
  946|      0|					*(va_arg(ap, int *)) = cc;
  947|      0|					goto skip_output;
  948|       |
  949|       |					/*
  950|       |					 * Always extract the argument as a "char *" pointer. We
  951|       |					 * should be using "void *" but there are still machines
  952|       |					 * that don't understand it.
  953|       |					 * If the pointer size is equal to the size of an unsigned
  954|       |					 * integer we convert the pointer to a hex number, otherwise
  955|       |					 * we print "%p" to indicate that we don't handle "%p".
  956|       |					 */
  957|      0|				case 'p':
  ------------------
  |  Branch (957:5): [True: 0, False: 34.8k]
  ------------------
  958|      0|					if (sizeof(char *) <= sizeof(uint64_t)) {
  ------------------
  |  Branch (958:10): [True: 0, Folded]
  ------------------
  959|      0|						ui_num = (uint64_t)((size_t) va_arg(ap, char *));
  960|      0|						s = ap_php_conv_p2(ui_num, 4, 'x',
  961|      0|								&num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  399|      0|#define NUM_BUF_SIZE		2048
  ------------------
  962|      0|						if (ui_num != 0) {
  ------------------
  |  Branch (962:11): [True: 0, False: 0]
  ------------------
  963|      0|							*--s = 'x';
  964|      0|							*--s = '0';
  965|      0|							s_len += 2;
  966|      0|						}
  967|      0|					} else {
  968|      0|						s = "%p";
  969|      0|						s_len = 2;
  970|      0|					}
  971|      0|					pad_char = ' ';
  972|      0|					break;
  973|       |
  974|       |
  975|      0|				case NUL:
  ------------------
  |  |  186|      0|#define NUL			'\0'
  ------------------
  |  Branch (975:5): [True: 0, False: 34.8k]
  ------------------
  976|       |					/*
  977|       |					 * The last character of the format string was %.
  978|       |					 * We ignore it.
  979|       |					 */
  980|      0|					continue;
  981|       |
  982|       |
  983|      0|fmt_error:
  984|      0|				php_error(E_ERROR, "Illegal length modifier specified '%c' in s[np]printf call", *fmt);
  ------------------
  |  |  294|      0|#define php_error zend_error
  ------------------
              				php_error(E_ERROR, "Illegal length modifier specified '%c' in s[np]printf call", *fmt);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  985|       |					/*
  986|       |					 * The default case is for unrecognized %'s.
  987|       |					 * We print %<char> to help the user identify what
  988|       |					 * option is not understood.
  989|       |					 * This is also useful in case the user wants to pass
  990|       |					 * the output of format_converter to another function
  991|       |					 * that understands some other %<char> (like syslog).
  992|       |					 * Note that we can't point s inside fmt because the
  993|       |					 * unknown <char> could be preceded by width etc.
  994|       |					 */
  995|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  996|      0|				default:
  ------------------
  |  Branch (996:5): [True: 0, False: 34.8k]
  ------------------
  997|      0|					char_buf[0] = '%';
  998|      0|					char_buf[1] = *fmt;
  999|      0|					s = char_buf;
 1000|      0|					s_len = 2;
 1001|      0|					pad_char = ' ';
 1002|      0|					break;
 1003|  34.8k|			}
 1004|       |
 1005|  34.8k|			if (prefix_char != NUL) {
  ------------------
  |  |  186|  34.8k|#define NUL			'\0'
  ------------------
  |  Branch (1005:8): [True: 3, False: 34.7k]
  ------------------
 1006|      3|				*--s = prefix_char;
 1007|      3|				s_len++;
 1008|      3|			}
 1009|  34.8k|			if (adjust_width && adjust == RIGHT && (size_t)min_width > s_len) {
  ------------------
  |  Branch (1009:8): [True: 587, False: 34.2k]
  |  Branch (1009:24): [True: 587, False: 0]
  |  Branch (1009:43): [True: 281, False: 306]
  ------------------
 1010|    281|				if (pad_char == '0' && prefix_char != NUL) {
  ------------------
  |  |  186|    281|#define NUL			'\0'
  ------------------
  |  Branch (1010:9): [True: 281, False: 0]
  |  Branch (1010:28): [True: 0, False: 281]
  ------------------
 1011|      0|					INS_CHAR(*s, sp, bep, cc)
  ------------------
  |  |  423|      0|	{                            \
  |  |  424|      0|		if (sp < bep)            \
  |  |  ------------------
  |  |  |  Branch (424:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  425|      0|		{                        \
  |  |  426|      0|			*sp++ = c;           \
  |  |  427|      0|		}                        \
  |  |  428|      0|		cc++;                    \
  |  |  429|      0|	}
  ------------------
 1012|      0|						s++;
 1013|      0|					s_len--;
 1014|      0|					min_width--;
 1015|      0|				}
 1016|    281|				PAD(min_width, s_len, pad_char);
  ------------------
  |  |  459|    281|#define PAD( width, len, ch )	do		\
  |  |  460|    328|	{					\
  |  |  461|    328|	    INS_CHAR( ch, sp, bep, cc ) ;	\
  |  |  ------------------
  |  |  |  |  423|    328|	{                            \
  |  |  |  |  424|    328|		if (sp < bep)            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (424:7): [True: 328, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  425|    328|		{                        \
  |  |  |  |  426|    328|			*sp++ = c;           \
  |  |  |  |  427|    328|		}                        \
  |  |  |  |  428|    328|		cc++;                    \
  |  |  |  |  429|    328|	}
  |  |  ------------------
  |  |  462|    328|	    width-- ;				\
  |  |  463|    328|	}					\
  |  |  464|    328|	while ( (size_t)width > len )
  |  |  ------------------
  |  |  |  Branch (464:10): [True: 47, False: 281]
  |  |  ------------------
  ------------------
 1017|    281|			}
 1018|       |			/*
 1019|       |			 * Print the string s.
 1020|       |			 */
 1021|  71.2k|			for (i = s_len; i != 0; i--) {
  ------------------
  |  Branch (1021:20): [True: 36.4k, False: 34.8k]
  ------------------
 1022|  36.4k|				INS_CHAR(*s, sp, bep, cc);
  ------------------
  |  |  423|  36.4k|	{                            \
  |  |  424|  36.4k|		if (sp < bep)            \
  |  |  ------------------
  |  |  |  Branch (424:7): [True: 36.4k, False: 0]
  |  |  ------------------
  |  |  425|  36.4k|		{                        \
  |  |  426|  36.4k|			*sp++ = c;           \
  |  |  427|  36.4k|		}                        \
  |  |  428|  36.4k|		cc++;                    \
  |  |  429|  36.4k|	}
  ------------------
 1023|  36.4k|				s++;
 1024|  36.4k|			}
 1025|       |
 1026|  34.8k|			if (adjust_width && adjust == LEFT && (size_t)min_width > s_len)
  ------------------
  |  Branch (1026:8): [True: 587, False: 34.2k]
  |  Branch (1026:24): [True: 0, False: 587]
  |  Branch (1026:42): [True: 0, False: 0]
  ------------------
 1027|      0|				PAD(min_width, s_len, pad_char);
  ------------------
  |  |  459|      0|#define PAD( width, len, ch )	do		\
  |  |  460|      0|	{					\
  |  |  461|      0|	    INS_CHAR( ch, sp, bep, cc ) ;	\
  |  |  ------------------
  |  |  |  |  423|      0|	{                            \
  |  |  |  |  424|      0|		if (sp < bep)            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (424:7): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  425|      0|		{                        \
  |  |  |  |  426|      0|			*sp++ = c;           \
  |  |  |  |  427|      0|		}                        \
  |  |  |  |  428|      0|		cc++;                    \
  |  |  |  |  429|      0|	}
  |  |  ------------------
  |  |  462|      0|	    width-- ;				\
  |  |  463|      0|	}					\
  |  |  464|      0|	while ( (size_t)width > len )
  |  |  ------------------
  |  |  |  Branch (464:10): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1028|  34.8k|			zend_tmp_string_release(tmp_str);
 1029|  34.8k|		}
 1030|   404k|skip_output:
 1031|   404k|		fmt++;
 1032|   404k|	}
 1033|  34.2k|	odp->nextb = sp;
 1034|  34.2k|	return (cc);
 1035|  34.2k|}

php_printf_to_smart_string:
  747|  6.65M|{
  748|  6.65M|	xbuf_format_converter(buf, 1, format, ap);
  749|  6.65M|}
php_printf_to_smart_str:
  753|  62.3k|{
  754|  62.3k|	xbuf_format_converter(buf, 0, format, ap);
  755|  62.3k|}
spprintf.c:xbuf_format_converter:
  180|  6.71M|{
  181|  6.71M|	char *s = NULL;
  182|  6.71M|	size_t s_len;
  183|       |
  184|  6.71M|	int min_width = 0;
  185|  6.71M|	int precision = 0;
  186|  6.71M|	enum {
  187|  6.71M|		LEFT, RIGHT
  188|  6.71M|	} adjust;
  189|  6.71M|	char pad_char;
  190|  6.71M|	char prefix_char;
  191|       |
  192|  6.71M|	double fp_num;
  193|  6.71M|	int64_t i_num = (int64_t) 0;
  194|  6.71M|	uint64_t ui_num = (uint64_t) 0;
  195|       |
  196|  6.71M|	char num_buf[NUM_BUF_SIZE];
  197|  6.71M|	char char_buf[2];			/* for printing %% and %<unknown> */
  198|       |
  199|       |#ifdef ZTS
  200|       |	struct lconv lconv;
  201|       |#else
  202|  6.71M|	struct lconv *lconv = NULL;
  203|  6.71M|#endif
  204|       |
  205|       |	/*
  206|       |	 * Flag variables
  207|       |	 */
  208|  6.71M|	length_modifier_e modifier;
  209|  6.71M|	bool alternate_form;
  210|  6.71M|	bool print_sign;
  211|  6.71M|	bool print_blank;
  212|  6.71M|	bool adjust_precision;
  213|  6.71M|	bool adjust_width;
  214|  6.71M|	bool is_negative;
  215|       |
  216|  43.1M|	while (*fmt) {
  ------------------
  |  Branch (216:9): [True: 36.3M, False: 6.71M]
  ------------------
  217|  36.3M|		if (*fmt != '%') {
  ------------------
  |  Branch (217:7): [True: 27.7M, False: 8.67M]
  ------------------
  218|  27.7M|			INS_CHAR(xbuf, *fmt, is_char);
  ------------------
  |  |  112|  27.7M|#define INS_CHAR(xbuf, ch, is_char) do { \
  |  |  113|  27.7M|	if ((is_char)) { \
  |  |  ------------------
  |  |  |  Branch (113:6): [True: 26.2M, False: 1.48M]
  |  |  ------------------
  |  |  114|  26.2M|		smart_string_appendc((smart_string *)(xbuf), (ch)); \
  |  |  ------------------
  |  |  |  |   37|  26.2M|	smart_string_appendc_ex((str), (c), 0)
  |  |  ------------------
  |  |  115|  26.2M|	} else { \
  |  |  116|  1.48M|		smart_str_appendc((smart_str *)(xbuf), (ch)); \
  |  |  117|  1.48M|	} \
  |  |  118|  27.7M|} while (0);
  |  |  ------------------
  |  |  |  Branch (118:10): [Folded, False: 27.7M]
  |  |  ------------------
  ------------------
  219|  27.7M|		} else {
  220|       |			/*
  221|       |			 * Default variable settings
  222|       |			 */
  223|  8.67M|			zend_string *tmp_str = NULL;
  224|  8.67M|			adjust = RIGHT;
  225|  8.67M|			alternate_form = print_sign = print_blank = false;
  226|  8.67M|			pad_char = ' ';
  227|  8.67M|			prefix_char = NUL;
  ------------------
  |  |   98|  8.67M|#define NUL             '\0'
  ------------------
  228|       |
  229|  8.67M|			fmt++;
  230|       |
  231|       |			/*
  232|       |			 * Try to avoid checking for flags, width or precision
  233|       |			 */
  234|  8.67M|			if (isascii((unsigned char)*fmt) && !islower((unsigned char)*fmt)) {
  ------------------
  |  Branch (234:8): [True: 8.67M, False: 0]
  |  Branch (234:40): [True: 4.24M, False: 4.43M]
  ------------------
  235|       |				/*
  236|       |				 * Recognize flags: -, #, BLANK, +
  237|       |				 */
  238|  4.24M|				for (;; fmt++) {
  239|  4.24M|					if (*fmt == '-')
  ------------------
  |  Branch (239:10): [True: 0, False: 4.24M]
  ------------------
  240|      0|						adjust = LEFT;
  241|  4.24M|					else if (*fmt == '+')
  ------------------
  |  Branch (241:15): [True: 0, False: 4.24M]
  ------------------
  242|      0|						print_sign = true;
  243|  4.24M|					else if (*fmt == '#')
  ------------------
  |  Branch (243:15): [True: 0, False: 4.24M]
  ------------------
  244|      0|						alternate_form = true;
  245|  4.24M|					else if (*fmt == ' ')
  ------------------
  |  Branch (245:15): [True: 0, False: 4.24M]
  ------------------
  246|      0|						print_blank = true;
  247|  4.24M|					else if (*fmt == '0')
  ------------------
  |  Branch (247:15): [True: 0, False: 4.24M]
  ------------------
  248|      0|						pad_char = '0';
  249|  4.24M|					else
  250|  4.24M|						break;
  251|  4.24M|				}
  252|       |
  253|       |				/*
  254|       |				 * Check if a width was specified
  255|       |				 */
  256|  4.24M|				if (isdigit((unsigned char)*fmt)) {
  ------------------
  |  Branch (256:9): [True: 0, False: 4.24M]
  ------------------
  257|      0|					STR_TO_DEC(fmt, min_width);
  ------------------
  |  |  148|      0|#define STR_TO_DEC(str, num) do {			\
  |  |  149|      0|	num = NUM(*(str)++);                  	\
  |  |  ------------------
  |  |  |  |  146|      0|#define NUM(c) (c - '0')
  |  |  ------------------
  |  |  150|      0|	while (isdigit((unsigned char)*(str))) {\
  |  |  151|      0|		num *= 10;                      	\
  |  |  152|      0|		num += NUM(*(str)++);             	\
  |  |  ------------------
  |  |  |  |  146|      0|#define NUM(c) (c - '0')
  |  |  ------------------
  |  |  153|      0|		if (num >= INT_MAX / 10) {			\
  |  |  ------------------
  |  |  |  Branch (153:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  154|      0|			while (isdigit((unsigned char)*(str)++));	\
  |  |  155|      0|			break;							\
  |  |  156|      0|		}									\
  |  |  157|      0|    }										\
  |  |  158|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (158:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (257:6): [True: 0, False: 0]
  |  Branch (257:6): [True: 0, False: 0]
  ------------------
  258|      0|					adjust_width = true;
  259|  4.24M|				} else if (*fmt == '*') {
  ------------------
  |  Branch (259:16): [True: 4.19M, False: 42.9k]
  ------------------
  260|  4.19M|					min_width = va_arg(ap, int);
  261|  4.19M|					fmt++;
  262|  4.19M|					adjust_width = true;
  263|  4.19M|					if (min_width < 0) {
  ------------------
  |  Branch (263:10): [True: 0, False: 4.19M]
  ------------------
  264|      0|						adjust = LEFT;
  265|      0|						min_width = -min_width;
  266|      0|					}
  267|  4.19M|				} else
  268|  42.9k|					adjust_width = false;
  269|       |
  270|       |				/*
  271|       |				 * Check if a precision was specified
  272|       |				 */
  273|  4.24M|				if (*fmt == '.') {
  ------------------
  |  Branch (273:9): [True: 4.98k, False: 4.23M]
  ------------------
  274|  4.98k|					adjust_precision = true;
  275|  4.98k|					fmt++;
  276|  4.98k|					if (isdigit((unsigned char)*fmt)) {
  ------------------
  |  Branch (276:10): [True: 15, False: 4.96k]
  ------------------
  277|     15|						STR_TO_DEC(fmt, precision);
  ------------------
  |  |  148|     15|#define STR_TO_DEC(str, num) do {			\
  |  |  149|     15|	num = NUM(*(str)++);                  	\
  |  |  ------------------
  |  |  |  |  146|     15|#define NUM(c) (c - '0')
  |  |  ------------------
  |  |  150|     15|	while (isdigit((unsigned char)*(str))) {\
  |  |  151|      0|		num *= 10;                      	\
  |  |  152|      0|		num += NUM(*(str)++);             	\
  |  |  ------------------
  |  |  |  |  146|      0|#define NUM(c) (c - '0')
  |  |  ------------------
  |  |  153|      0|		if (num >= INT_MAX / 10) {			\
  |  |  ------------------
  |  |  |  Branch (153:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  154|      0|			while (isdigit((unsigned char)*(str)++));	\
  |  |  155|      0|			break;							\
  |  |  156|      0|		}									\
  |  |  157|      0|    }										\
  |  |  158|     15|} while (0)
  |  |  ------------------
  |  |  |  Branch (158:10): [Folded, False: 15]
  |  |  ------------------
  ------------------
  |  Branch (277:7): [True: 0, False: 0]
  |  Branch (277:7): [True: 0, False: 15]
  ------------------
  278|  4.96k|					} else if (*fmt == '*') {
  ------------------
  |  Branch (278:17): [True: 4.96k, False: 0]
  ------------------
  279|  4.96k|						precision = va_arg(ap, int);
  280|  4.96k|						fmt++;
  281|  4.96k|						if (precision < -1)
  ------------------
  |  Branch (281:11): [True: 0, False: 4.96k]
  ------------------
  282|      0|							precision = -1;
  283|  4.96k|					} else
  284|      0|						precision = 0;
  285|  4.98k|				} else
  286|  4.23M|					adjust_precision = false;
  287|  4.24M|			} else
  288|  4.43M|				adjust_precision = adjust_width = false;
  289|       |
  290|       |			/*
  291|       |			 * Modifier check
  292|       |			 */
  293|  8.67M|			switch (*fmt) {
  294|      0|				case 'L':
  ------------------
  |  Branch (294:5): [True: 0, False: 8.67M]
  ------------------
  295|      0|					fmt++;
  296|      0|					modifier = LM_LONG_DOUBLE;
  297|      0|					break;
  298|  2.09M|				case 'l':
  ------------------
  |  Branch (298:5): [True: 2.09M, False: 6.57M]
  ------------------
  299|  2.09M|					fmt++;
  300|  2.09M|#if SIZEOF_LONG_LONG
  301|  2.09M|					if (*fmt == 'l') {
  ------------------
  |  Branch (301:10): [True: 0, False: 2.09M]
  ------------------
  302|      0|						fmt++;
  303|      0|						modifier = LM_LONG_LONG;
  304|      0|					} else
  305|  2.09M|#endif
  306|  2.09M|						modifier = LM_LONG;
  307|  2.09M|					break;
  308|    953|				case 'z':
  ------------------
  |  Branch (308:5): [True: 953, False: 8.67M]
  ------------------
  309|    953|					fmt++;
  310|    953|					modifier = LM_SIZE_T;
  311|    953|					break;
  312|      0|				case 'j':
  ------------------
  |  Branch (312:5): [True: 0, False: 8.67M]
  ------------------
  313|      0|					fmt++;
  314|      0|					modifier = LM_INTMAX_T;
  315|      0|					break;
  316|      0|				case 't':
  ------------------
  |  Branch (316:5): [True: 0, False: 8.67M]
  ------------------
  317|      0|					fmt++;
  318|      0|					modifier = LM_PTRDIFF_T;
  319|      0|					break;
  320|      0|				case 'p':
  ------------------
  |  Branch (320:5): [True: 0, False: 8.67M]
  ------------------
  321|      0|				{
  322|      0|					char __next = *(fmt+1);
  323|      0|					if ('d' == __next || 'u' == __next || 'x' == __next || 'o' == __next) {
  ------------------
  |  Branch (323:10): [True: 0, False: 0]
  |  Branch (323:27): [True: 0, False: 0]
  |  Branch (323:44): [True: 0, False: 0]
  |  Branch (323:61): [True: 0, False: 0]
  ------------------
  324|      0|						zend_error_noreturn(E_CORE_ERROR,
  ------------------
  |  |   26|      0|#define E_CORE_ERROR		(1<<4L)
  ------------------
  325|      0|							"printf \"p\" modifier is no longer supported, use ZEND_LONG_FMT");
  326|      0|					}
  327|      0|					modifier = LM_STD;
  328|      0|					break;
  329|      0|				}
  330|      0|				case 'h':
  ------------------
  |  Branch (330:5): [True: 0, False: 8.67M]
  ------------------
  331|      0|					fmt++;
  332|      0|					if (*fmt == 'h') {
  ------------------
  |  Branch (332:10): [True: 0, False: 0]
  ------------------
  333|      0|						fmt++;
  334|      0|					}
  335|       |					/* these are promoted to int, so no break */
  336|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  337|  6.57M|				default:
  ------------------
  |  Branch (337:5): [True: 6.57M, False: 2.10M]
  ------------------
  338|  6.57M|					modifier = LM_STD;
  339|  6.57M|					break;
  340|  8.67M|			}
  341|       |
  342|       |			/*
  343|       |			 * Argument extraction and printing.
  344|       |			 * First we determine the argument type.
  345|       |			 * Then, we convert the argument to a string.
  346|       |			 * On exit from the switch, s points to the string that
  347|       |			 * must be printed, s_len has the length of the string
  348|       |			 * The precision requirements, if any, are reflected in s_len.
  349|       |			 *
  350|       |			 * NOTE: pad_char may be set to '0' because of the 0 flag.
  351|       |			 *   It is reset to ' ' by non-numeric formats
  352|       |			 */
  353|  8.67M|			switch (*fmt) {
  354|      0|				case 'Z': {
  ------------------
  |  Branch (354:5): [True: 0, False: 8.67M]
  ------------------
  355|      0|					zval *zvp = va_arg(ap, zval*);
  356|      0|					zend_string *str = zval_get_tmp_string(zvp, &tmp_str);
  357|      0|					s_len = ZSTR_LEN(str);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  358|      0|					s = ZSTR_VAL(str);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  359|      0|					if (adjust_precision && (size_t)precision < s_len) {
  ------------------
  |  Branch (359:10): [True: 0, False: 0]
  |  Branch (359:30): [True: 0, False: 0]
  ------------------
  360|      0|						s_len = precision;
  361|      0|					}
  362|      0|					break;
  363|      0|				}
  364|  37.9k|				case 'S': {
  ------------------
  |  Branch (364:5): [True: 37.9k, False: 8.63M]
  ------------------
  365|  37.9k|					zend_string *str = va_arg(ap, zend_string*);
  366|  37.9k|					s_len = ZSTR_LEN(str);
  ------------------
  |  |   68|  37.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  367|  37.9k|					s = ZSTR_VAL(str);
  ------------------
  |  |   67|  37.9k|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  368|  37.9k|					if (adjust_precision && (size_t)precision < s_len) {
  ------------------
  |  Branch (368:10): [True: 0, False: 37.9k]
  |  Branch (368:30): [True: 0, False: 0]
  ------------------
  369|      0|						s_len = precision;
  370|      0|					}
  371|  37.9k|					break;
  372|      0|				}
  373|  2.13k|				case 'u':
  ------------------
  |  Branch (373:5): [True: 2.13k, False: 8.67M]
  ------------------
  374|  2.13k|					switch(modifier) {
  375|  2.04k|						default:
  ------------------
  |  Branch (375:7): [True: 2.04k, False: 91]
  ------------------
  376|  2.04k|							i_num = (int64_t) va_arg(ap, unsigned int);
  377|  2.04k|							break;
  378|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (378:7): [True: 0, False: 2.13k]
  ------------------
  379|      0|							goto fmt_error;
  380|      6|						case LM_LONG:
  ------------------
  |  Branch (380:7): [True: 6, False: 2.12k]
  ------------------
  381|      6|							i_num = (int64_t) va_arg(ap, unsigned long int);
  382|      6|							break;
  383|     85|						case LM_SIZE_T:
  ------------------
  |  Branch (383:7): [True: 85, False: 2.04k]
  ------------------
  384|     85|							i_num = (int64_t) va_arg(ap, size_t);
  385|     85|							break;
  386|      0|#if SIZEOF_LONG_LONG
  387|      0|						case LM_LONG_LONG:
  ------------------
  |  Branch (387:7): [True: 0, False: 2.13k]
  ------------------
  388|      0|							i_num = (int64_t) va_arg(ap, unsigned long long int);
  389|      0|							break;
  390|      0|#endif
  391|      0|						case LM_INTMAX_T:
  ------------------
  |  Branch (391:7): [True: 0, False: 2.13k]
  ------------------
  392|      0|							i_num = (int64_t) va_arg(ap, uintmax_t);
  393|      0|							break;
  394|      0|						case LM_PTRDIFF_T:
  ------------------
  |  Branch (394:7): [True: 0, False: 2.13k]
  ------------------
  395|      0|							i_num = (int64_t) va_arg(ap, ptrdiff_t);
  396|      0|							break;
  397|  2.13k|					}
  398|       |					/*
  399|       |					 * The rest also applies to other integer formats, so fall
  400|       |					 * into that case.
  401|       |					 */
  402|  2.13k|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|  2.13k|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  403|  2.10M|				case 'd':
  ------------------
  |  Branch (403:5): [True: 2.10M, False: 6.56M]
  ------------------
  404|  2.10M|				case 'i':
  ------------------
  |  Branch (404:5): [True: 0, False: 8.67M]
  ------------------
  405|       |					/*
  406|       |					 * Get the arg if we haven't already.
  407|       |					 */
  408|  2.10M|					if ((*fmt) != 'u') {
  ------------------
  |  Branch (408:10): [True: 2.10M, False: 2.13k]
  ------------------
  409|  2.10M|						switch(modifier) {
  410|  5.60k|							default:
  ------------------
  |  Branch (410:8): [True: 5.60k, False: 2.10M]
  ------------------
  411|  5.60k|								i_num = (int64_t) va_arg(ap, int);
  412|  5.60k|								break;
  413|      0|							case LM_LONG_DOUBLE:
  ------------------
  |  Branch (413:8): [True: 0, False: 2.10M]
  ------------------
  414|      0|								goto fmt_error;
  415|  2.09M|							case LM_LONG:
  ------------------
  |  Branch (415:8): [True: 2.09M, False: 6.47k]
  ------------------
  416|  2.09M|								i_num = (int64_t) va_arg(ap, long int);
  417|  2.09M|								break;
  418|    868|							case LM_SIZE_T:
  ------------------
  |  Branch (418:8): [True: 868, False: 2.10M]
  ------------------
  419|    868|								i_num = (int64_t) va_arg(ap, ssize_t);
  420|    868|								break;
  421|      0|#if SIZEOF_LONG_LONG
  422|      0|							case LM_LONG_LONG:
  ------------------
  |  Branch (422:8): [True: 0, False: 2.10M]
  ------------------
  423|      0|								i_num = (int64_t) va_arg(ap, long long int);
  424|      0|								break;
  425|      0|#endif
  426|      0|							case LM_INTMAX_T:
  ------------------
  |  Branch (426:8): [True: 0, False: 2.10M]
  ------------------
  427|      0|								i_num = (int64_t) va_arg(ap, intmax_t);
  428|      0|								break;
  429|      0|							case LM_PTRDIFF_T:
  ------------------
  |  Branch (429:8): [True: 0, False: 2.10M]
  ------------------
  430|      0|								i_num = (int64_t) va_arg(ap, ptrdiff_t);
  431|      0|								break;
  432|  2.10M|						}
  433|  2.10M|					}
  434|  2.10M|					s = ap_php_conv_10(i_num, (*fmt) == 'u', &is_negative,
  435|  2.10M|								&num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  144|  2.10M|#define NUM_BUF_SIZE ZEND_DOUBLE_MAX_LENGTH
  |  |  ------------------
  |  |  |  |   45|  2.10M|#define ZEND_DOUBLE_MAX_LENGTH (3 + DBL_MANT_DIG - DBL_MIN_EXP)
  |  |  ------------------
  ------------------
  436|  2.10M|					FIX_PRECISION(adjust_precision, precision, s, s_len);
  ------------------
  |  |  166|  2.10M|#define FIX_PRECISION(adjust, precision, s, s_len) do {	\
  |  |  167|  2.10M|    if (adjust)					                    	\
  |  |  ------------------
  |  |  |  Branch (167:9): [True: 0, False: 2.10M]
  |  |  ------------------
  |  |  168|  2.10M|		while (s_len < (size_t)precision) {				\
  |  |  ------------------
  |  |  |  Branch (168:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  169|      0|			*--s = '0';                             	\
  |  |  170|      0|			s_len++;                                	\
  |  |  171|      0|		}												\
  |  |  172|  2.10M|} while (0)
  |  |  ------------------
  |  |  |  Branch (172:10): [Folded, False: 2.10M]
  |  |  ------------------
  ------------------
  437|       |
  438|  2.10M|					if (*fmt != 'u') {
  ------------------
  |  Branch (438:10): [True: 2.10M, False: 2.13k]
  ------------------
  439|  2.10M|						if (is_negative)
  ------------------
  |  Branch (439:11): [True: 48, False: 2.10M]
  ------------------
  440|     48|							prefix_char = '-';
  441|  2.10M|						else if (print_sign)
  ------------------
  |  Branch (441:16): [True: 0, False: 2.10M]
  ------------------
  442|      0|							prefix_char = '+';
  443|  2.10M|						else if (print_blank)
  ------------------
  |  Branch (443:16): [True: 0, False: 2.10M]
  ------------------
  444|      0|							prefix_char = ' ';
  445|  2.10M|					}
  446|  2.10M|					break;
  447|       |
  448|       |
  449|      0|				case 'o':
  ------------------
  |  Branch (449:5): [True: 0, False: 8.67M]
  ------------------
  450|      0|					switch(modifier) {
  451|      0|						default:
  ------------------
  |  Branch (451:7): [True: 0, False: 0]
  ------------------
  452|      0|							ui_num = (uint64_t) va_arg(ap, unsigned int);
  453|      0|							break;
  454|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (454:7): [True: 0, False: 0]
  ------------------
  455|      0|							goto fmt_error;
  456|      0|						case LM_LONG:
  ------------------
  |  Branch (456:7): [True: 0, False: 0]
  ------------------
  457|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long int);
  458|      0|							break;
  459|      0|						case LM_SIZE_T:
  ------------------
  |  Branch (459:7): [True: 0, False: 0]
  ------------------
  460|      0|							ui_num = (uint64_t) va_arg(ap, size_t);
  461|      0|							break;
  462|      0|#if SIZEOF_LONG_LONG
  463|      0|						case LM_LONG_LONG:
  ------------------
  |  Branch (463:7): [True: 0, False: 0]
  ------------------
  464|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long long int);
  465|      0|							break;
  466|      0|#endif
  467|      0|						case LM_INTMAX_T:
  ------------------
  |  Branch (467:7): [True: 0, False: 0]
  ------------------
  468|      0|							ui_num = (uint64_t) va_arg(ap, uintmax_t);
  469|      0|							break;
  470|      0|						case LM_PTRDIFF_T:
  ------------------
  |  Branch (470:7): [True: 0, False: 0]
  ------------------
  471|      0|							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
  472|      0|							break;
  473|      0|					}
  474|      0|					s = ap_php_conv_p2(ui_num, 3, *fmt,
  475|      0|								&num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  144|      0|#define NUM_BUF_SIZE ZEND_DOUBLE_MAX_LENGTH
  |  |  ------------------
  |  |  |  |   45|      0|#define ZEND_DOUBLE_MAX_LENGTH (3 + DBL_MANT_DIG - DBL_MIN_EXP)
  |  |  ------------------
  ------------------
  476|      0|					FIX_PRECISION(adjust_precision, precision, s, s_len);
  ------------------
  |  |  166|      0|#define FIX_PRECISION(adjust, precision, s, s_len) do {	\
  |  |  167|      0|    if (adjust)					                    	\
  |  |  ------------------
  |  |  |  Branch (167:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  168|      0|		while (s_len < (size_t)precision) {				\
  |  |  ------------------
  |  |  |  Branch (168:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  169|      0|			*--s = '0';                             	\
  |  |  170|      0|			s_len++;                                	\
  |  |  171|      0|		}												\
  |  |  172|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (172:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  477|      0|					if (alternate_form && *s != '0') {
  ------------------
  |  Branch (477:10): [True: 0, False: 0]
  |  Branch (477:28): [True: 0, False: 0]
  ------------------
  478|      0|						*--s = '0';
  479|      0|						s_len++;
  480|      0|					}
  481|      0|					break;
  482|       |
  483|       |
  484|    410|				case 'x':
  ------------------
  |  Branch (484:5): [True: 410, False: 8.67M]
  ------------------
  485|    410|				case 'X':
  ------------------
  |  Branch (485:5): [True: 0, False: 8.67M]
  ------------------
  486|    410|					switch(modifier) {
  487|    410|						default:
  ------------------
  |  Branch (487:7): [True: 410, False: 0]
  ------------------
  488|    410|							ui_num = (uint64_t) va_arg(ap, unsigned int);
  489|    410|							break;
  490|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (490:7): [True: 0, False: 410]
  ------------------
  491|      0|							goto fmt_error;
  492|      0|						case LM_LONG:
  ------------------
  |  Branch (492:7): [True: 0, False: 410]
  ------------------
  493|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long int);
  494|      0|							break;
  495|      0|						case LM_SIZE_T:
  ------------------
  |  Branch (495:7): [True: 0, False: 410]
  ------------------
  496|      0|							ui_num = (uint64_t) va_arg(ap, size_t);
  497|      0|							break;
  498|      0|#if SIZEOF_LONG_LONG
  499|      0|						case LM_LONG_LONG:
  ------------------
  |  Branch (499:7): [True: 0, False: 410]
  ------------------
  500|      0|							ui_num = (uint64_t) va_arg(ap, unsigned long long int);
  501|      0|							break;
  502|      0|#endif
  503|      0|						case LM_INTMAX_T:
  ------------------
  |  Branch (503:7): [True: 0, False: 410]
  ------------------
  504|      0|							ui_num = (uint64_t) va_arg(ap, uintmax_t);
  505|      0|							break;
  506|      0|						case LM_PTRDIFF_T:
  ------------------
  |  Branch (506:7): [True: 0, False: 410]
  ------------------
  507|      0|							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
  508|      0|							break;
  509|    410|					}
  510|    410|					s = ap_php_conv_p2(ui_num, 4, *fmt,
  511|    410|								&num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  144|    410|#define NUM_BUF_SIZE ZEND_DOUBLE_MAX_LENGTH
  |  |  ------------------
  |  |  |  |   45|    410|#define ZEND_DOUBLE_MAX_LENGTH (3 + DBL_MANT_DIG - DBL_MIN_EXP)
  |  |  ------------------
  ------------------
  512|    410|					FIX_PRECISION(adjust_precision, precision, s, s_len);
  ------------------
  |  |  166|    410|#define FIX_PRECISION(adjust, precision, s, s_len) do {	\
  |  |  167|    410|    if (adjust)					                    	\
  |  |  ------------------
  |  |  |  Branch (167:9): [True: 0, False: 410]
  |  |  ------------------
  |  |  168|    410|		while (s_len < (size_t)precision) {				\
  |  |  ------------------
  |  |  |  Branch (168:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  169|      0|			*--s = '0';                             	\
  |  |  170|      0|			s_len++;                                	\
  |  |  171|      0|		}												\
  |  |  172|    410|} while (0)
  |  |  ------------------
  |  |  |  Branch (172:10): [Folded, False: 410]
  |  |  ------------------
  ------------------
  513|    410|					if (alternate_form && ui_num != 0) {
  ------------------
  |  Branch (513:10): [True: 0, False: 410]
  |  Branch (513:28): [True: 0, False: 0]
  ------------------
  514|      0|						*--s = *fmt;	/* 'x' or 'X' */
  515|      0|						*--s = '0';
  516|      0|						s_len += 2;
  517|      0|					}
  518|    410|					break;
  519|       |
  520|       |
  521|  2.32M|				case 's':
  ------------------
  |  Branch (521:5): [True: 2.32M, False: 6.35M]
  ------------------
  522|  2.32M|					s = va_arg(ap, char *);
  523|  2.32M|					if (s != NULL) {
  ------------------
  |  Branch (523:10): [True: 2.32M, False: 0]
  ------------------
  524|  2.32M|						if (!adjust_precision) {
  ------------------
  |  Branch (524:11): [True: 2.32M, False: 4]
  ------------------
  525|  2.32M|							s_len = strlen(s);
  526|  2.32M|						} else {
  527|      4|							s_len = zend_strnlen(s, precision);
  528|      4|						}
  529|  2.32M|					} else {
  530|      0|						s = S_NULL;
  ------------------
  |  |  101|      0|#define S_NULL          "(null)"
  ------------------
  531|      0|						s_len = S_NULL_LEN;
  ------------------
  |  |  102|      0|#define S_NULL_LEN      6
  ------------------
  532|      0|					}
  533|  2.32M|					pad_char = ' ';
  534|  2.32M|					break;
  535|       |
  536|       |
  537|     15|				case 'f':
  ------------------
  |  Branch (537:5): [True: 15, False: 8.67M]
  ------------------
  538|     15|				case 'F':
  ------------------
  |  Branch (538:5): [True: 0, False: 8.67M]
  ------------------
  539|     15|				case 'e':
  ------------------
  |  Branch (539:5): [True: 0, False: 8.67M]
  ------------------
  540|     15|				case 'E':
  ------------------
  |  Branch (540:5): [True: 0, False: 8.67M]
  ------------------
  541|     15|					switch(modifier) {
  542|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (542:7): [True: 0, False: 15]
  ------------------
  543|      0|							fp_num = (double) va_arg(ap, long double);
  544|      0|							break;
  545|     15|						case LM_STD:
  ------------------
  |  Branch (545:7): [True: 15, False: 0]
  ------------------
  546|     15|							fp_num = va_arg(ap, double);
  547|     15|							break;
  548|      0|						default:
  ------------------
  |  Branch (548:7): [True: 0, False: 15]
  ------------------
  549|      0|							goto fmt_error;
  550|     15|					}
  551|       |
  552|     15|					if (zend_isnan(fp_num)) {
  ------------------
  |  |  536|     15|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (552:10): [True: 0, False: 15]
  ------------------
  553|      0|						s = "nan";
  554|      0|						s_len = 3;
  555|     15|					} else if (zend_isinf(fp_num)) {
  ------------------
  |  |  537|     15|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (555:17): [True: 0, False: 15]
  ------------------
  556|      0|						s = "inf";
  557|      0|						s_len = 3;
  558|     15|					} else {
  559|       |#ifdef ZTS
  560|       |						localeconv_r(&lconv);
  561|       |#else
  562|     15|						if (!lconv) {
  ------------------
  |  Branch (562:11): [True: 3, False: 12]
  ------------------
  563|      3|							lconv = localeconv();
  564|      3|						}
  565|     15|#endif
  566|     15|						s = php_conv_fp((*fmt == 'f')?'F':*fmt, fp_num, alternate_form,
  ------------------
  |  Branch (566:23): [True: 15, False: 0]
  ------------------
  567|     15|						 (adjust_precision == false) ? FLOAT_DIGITS : precision,
  ------------------
  |  |  104|      0|#define FLOAT_DIGITS    6
  ------------------
  |  Branch (567:8): [True: 0, False: 15]
  ------------------
  568|     15|						 (*fmt == 'f')?LCONV_DECIMAL_POINT:'.',
  ------------------
  |  |   93|     15|#define LCONV_DECIMAL_POINT (*lconv->decimal_point)
  ------------------
  |  Branch (568:8): [True: 15, False: 0]
  ------------------
  569|     15|									&is_negative, &num_buf[1], &s_len);
  570|     15|						if (is_negative)
  ------------------
  |  Branch (570:11): [True: 2, False: 13]
  ------------------
  571|      2|							prefix_char = '-';
  572|     13|						else if (print_sign)
  ------------------
  |  Branch (572:16): [True: 0, False: 13]
  ------------------
  573|      0|							prefix_char = '+';
  574|     13|						else if (print_blank)
  ------------------
  |  Branch (574:16): [True: 0, False: 13]
  ------------------
  575|      0|							prefix_char = ' ';
  576|     15|					}
  577|     15|					break;
  578|       |
  579|       |
  580|      0|				case 'g':
  ------------------
  |  Branch (580:5): [True: 0, False: 8.67M]
  ------------------
  581|      0|				case 'k':
  ------------------
  |  Branch (581:5): [True: 0, False: 8.67M]
  ------------------
  582|      0|				case 'G':
  ------------------
  |  Branch (582:5): [True: 0, False: 8.67M]
  ------------------
  583|  4.96k|				case 'H':
  ------------------
  |  Branch (583:5): [True: 4.96k, False: 8.66M]
  ------------------
  584|  4.96k|					switch(modifier) {
  585|      0|						case LM_LONG_DOUBLE:
  ------------------
  |  Branch (585:7): [True: 0, False: 4.96k]
  ------------------
  586|      0|							fp_num = (double) va_arg(ap, long double);
  587|      0|							break;
  588|  4.96k|						case LM_STD:
  ------------------
  |  Branch (588:7): [True: 4.96k, False: 0]
  ------------------
  589|  4.96k|							fp_num = va_arg(ap, double);
  590|  4.96k|							break;
  591|      0|						default:
  ------------------
  |  Branch (591:7): [True: 0, False: 4.96k]
  ------------------
  592|      0|							goto fmt_error;
  593|  4.96k|					}
  594|       |
  595|  4.96k|					if (zend_isnan(fp_num)) {
  ------------------
  |  |  536|  4.96k|# define zend_isnan(a) isnan(a)
  ------------------
  |  Branch (595:10): [True: 2, False: 4.96k]
  ------------------
  596|      2| 						s = "NAN";
  597|      2| 						s_len = 3;
  598|      2| 						break;
  599|  4.96k| 					} else if (zend_isinf(fp_num)) {
  ------------------
  |  |  537|  4.96k|# define zend_isinf(a) isinf(a)
  ------------------
  |  Branch (599:18): [True: 8, False: 4.95k]
  ------------------
  600|      8| 						if (fp_num > 0) {
  ------------------
  |  Branch (600:12): [True: 4, False: 4]
  ------------------
  601|      4| 							s = "INF";
  602|      4| 							s_len = 3;
  603|      4| 						} else {
  604|      4| 							s = "-INF";
  605|      4| 							s_len = 4;
  606|      4| 						}
  607|      8| 						break;
  608|      8| 					}
  609|       |
  610|  4.95k|					if (adjust_precision == false)
  ------------------
  |  Branch (610:10): [True: 0, False: 4.95k]
  ------------------
  611|      0|						precision = FLOAT_DIGITS;
  ------------------
  |  |  104|      0|#define FLOAT_DIGITS    6
  ------------------
  612|  4.95k|					else if (precision == 0)
  ------------------
  |  Branch (612:15): [True: 0, False: 4.95k]
  ------------------
  613|      0|						precision = 1;
  614|       |					/*
  615|       |					 * * We use &num_buf[ 1 ], so that we have room for the sign
  616|       |					 */
  617|       |#ifdef ZTS
  618|       |					localeconv_r(&lconv);
  619|       |#else
  620|  4.95k|					if (!lconv) {
  ------------------
  |  Branch (620:10): [True: 4.95k, False: 0]
  ------------------
  621|  4.95k|						lconv = localeconv();
  622|  4.95k|					}
  623|  4.95k|#endif
  624|  4.95k|					s = zend_gcvt(fp_num, precision, (*fmt=='H' || *fmt == 'k') ? '.' : LCONV_DECIMAL_POINT, (*fmt == 'G' || *fmt == 'H')?'E':'e', &num_buf[1]);
  ------------------
  |  |   93|  4.95k|#define LCONV_DECIMAL_POINT (*lconv->decimal_point)
  ------------------
  |  Branch (624:40): [True: 4.95k, False: 0]
  |  Branch (624:53): [True: 0, False: 0]
  |  Branch (624:96): [True: 0, False: 4.95k]
  |  Branch (624:111): [True: 4.95k, False: 0]
  ------------------
  625|  4.95k|					if (*s == '-')
  ------------------
  |  Branch (625:10): [True: 771, False: 4.18k]
  ------------------
  626|    771|						prefix_char = *s++;
  627|  4.18k|					else if (print_sign)
  ------------------
  |  Branch (627:15): [True: 0, False: 4.18k]
  ------------------
  628|      0|						prefix_char = '+';
  629|  4.18k|					else if (print_blank)
  ------------------
  |  Branch (629:15): [True: 0, False: 4.18k]
  ------------------
  630|      0|						prefix_char = ' ';
  631|       |
  632|  4.95k|					s_len = strlen(s);
  633|       |
  634|  4.95k|					if (alternate_form && (strchr(s, '.')) == NULL)
  ------------------
  |  Branch (634:10): [True: 0, False: 4.95k]
  |  Branch (634:28): [True: 0, False: 0]
  ------------------
  635|      0|						s[s_len++] = '.';
  636|  4.95k|					break;
  637|       |
  638|       |
  639|  4.20M|				case 'c':
  ------------------
  |  Branch (639:5): [True: 4.20M, False: 4.47M]
  ------------------
  640|  4.20M|					char_buf[0] = (char) (va_arg(ap, int));
  641|  4.20M|					s = &char_buf[0];
  642|  4.20M|					s_len = 1;
  643|  4.20M|					pad_char = ' ';
  644|  4.20M|					break;
  645|       |
  646|       |
  647|      0|				case '%':
  ------------------
  |  Branch (647:5): [True: 0, False: 8.67M]
  ------------------
  648|      0|					char_buf[0] = '%';
  649|      0|					s = &char_buf[0];
  650|      0|					s_len = 1;
  651|      0|					pad_char = ' ';
  652|      0|					break;
  653|       |
  654|       |
  655|      0|				case 'n':
  ------------------
  |  Branch (655:5): [True: 0, False: 8.67M]
  ------------------
  656|      0|					*(va_arg(ap, int *)) = is_char? (int)((smart_string *)xbuf)->len : (int)ZSTR_LEN(((smart_str *)xbuf)->s);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (656:29): [True: 0, False: 0]
  ------------------
  657|      0|					goto skip_output;
  658|       |
  659|       |					/*
  660|       |					 * Always extract the argument as a "char *" pointer. We
  661|       |					 * should be using "void *" but there are still machines
  662|       |					 * that don't understand it.
  663|       |					 * If the pointer size is equal to the size of an unsigned
  664|       |					 * integer we convert the pointer to a hex number, otherwise
  665|       |					 * we print "%p" to indicate that we don't handle "%p".
  666|       |					 */
  667|      0|				case 'p':
  ------------------
  |  Branch (667:5): [True: 0, False: 8.67M]
  ------------------
  668|      0|					if (sizeof(char *) <= sizeof(uint64_t)) {
  ------------------
  |  Branch (668:10): [True: 0, Folded]
  ------------------
  669|      0|						ui_num = (uint64_t)((size_t) va_arg(ap, char *));
  670|      0|						s = ap_php_conv_p2(ui_num, 4, 'x',
  671|      0|								&num_buf[NUM_BUF_SIZE], &s_len);
  ------------------
  |  |  144|      0|#define NUM_BUF_SIZE ZEND_DOUBLE_MAX_LENGTH
  |  |  ------------------
  |  |  |  |   45|      0|#define ZEND_DOUBLE_MAX_LENGTH (3 + DBL_MANT_DIG - DBL_MIN_EXP)
  |  |  ------------------
  ------------------
  672|      0|						if (ui_num != 0) {
  ------------------
  |  Branch (672:11): [True: 0, False: 0]
  ------------------
  673|      0|							*--s = 'x';
  674|      0|							*--s = '0';
  675|      0|							s_len += 2;
  676|      0|						}
  677|      0|					} else {
  678|      0|						s = "%p";
  679|      0|						s_len = 2;
  680|      0|					}
  681|      0|					pad_char = ' ';
  682|      0|					break;
  683|       |
  684|       |
  685|      0|				case NUL:
  ------------------
  |  |   98|      0|#define NUL             '\0'
  ------------------
  |  Branch (685:5): [True: 0, False: 8.67M]
  ------------------
  686|       |					/*
  687|       |					 * The last character of the format string was %.
  688|       |					 * We ignore it.
  689|       |					 */
  690|      0|					continue;
  691|       |
  692|       |
  693|      0|fmt_error:
  694|      0|				php_error(E_ERROR, "Illegal length modifier specified '%c' in s[np]printf call", *fmt);
  ------------------
  |  |  294|      0|#define php_error zend_error
  ------------------
              				php_error(E_ERROR, "Illegal length modifier specified '%c' in s[np]printf call", *fmt);
  ------------------
  |  |   22|      0|#define E_ERROR				(1<<0L)
  ------------------
  695|       |					/*
  696|       |					 * The default case is for unrecognized %'s.
  697|       |					 * We print %<char> to help the user identify what
  698|       |					 * option is not understood.
  699|       |					 * This is also useful in case the user wants to pass
  700|       |					 * the output of format_converter to another function
  701|       |					 * that understands some other %<char> (like syslog).
  702|       |					 * Note that we can't point s inside fmt because the
  703|       |					 * unknown <char> could be preceded by width etc.
  704|       |					 */
  705|      0|					ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
  706|      0|				default:
  ------------------
  |  Branch (706:5): [True: 0, False: 8.67M]
  ------------------
  707|      0|					char_buf[0] = '%';
  708|      0|					char_buf[1] = *fmt;
  709|      0|					s = char_buf;
  710|      0|					s_len = 2;
  711|      0|					pad_char = ' ';
  712|      0|					break;
  713|  8.67M|			}
  714|       |
  715|  8.67M|			if (prefix_char != NUL) {
  ------------------
  |  |   98|  8.67M|#define NUL             '\0'
  ------------------
  |  Branch (715:8): [True: 821, False: 8.67M]
  ------------------
  716|    821|				*--s = prefix_char;
  717|    821|				s_len++;
  718|    821|			}
  719|  8.67M|			if (adjust_width && adjust == RIGHT && (size_t)min_width > s_len) {
  ------------------
  |  Branch (719:8): [True: 4.19M, False: 4.47M]
  |  Branch (719:24): [True: 4.19M, False: 0]
  |  Branch (719:43): [True: 4.19M, False: 0]
  ------------------
  720|  4.19M|				if (pad_char == '0' && prefix_char != NUL) {
  ------------------
  |  |   98|      0|#define NUL             '\0'
  ------------------
  |  Branch (720:9): [True: 0, False: 4.19M]
  |  Branch (720:28): [True: 0, False: 0]
  ------------------
  721|      0|					INS_CHAR(xbuf, *s, is_char);
  ------------------
  |  |  112|      0|#define INS_CHAR(xbuf, ch, is_char) do { \
  |  |  113|      0|	if ((is_char)) { \
  |  |  ------------------
  |  |  |  Branch (113:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  114|      0|		smart_string_appendc((smart_string *)(xbuf), (ch)); \
  |  |  ------------------
  |  |  |  |   37|      0|	smart_string_appendc_ex((str), (c), 0)
  |  |  ------------------
  |  |  115|      0|	} else { \
  |  |  116|      0|		smart_str_appendc((smart_str *)(xbuf), (ch)); \
  |  |  117|      0|	} \
  |  |  118|      0|} while (0);
  |  |  ------------------
  |  |  |  Branch (118:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  722|      0|					s++;
  723|      0|					s_len--;
  724|      0|					min_width--;
  725|      0|				}
  726|  4.19M|				PAD_CHAR(xbuf, pad_char, min_width - s_len, is_char);
  ------------------
  |  |  128|  4.19M|#define PAD_CHAR(xbuf, ch, count, is_char) do { \
  |  |  129|  4.19M|	if ((is_char)) { \
  |  |  ------------------
  |  |  |  Branch (129:6): [True: 4.19M, False: 0]
  |  |  ------------------
  |  |  130|  4.19M|		smart_string_alloc(((smart_string *)(xbuf)), (count), 0); \
  |  |  131|  4.19M|		memset(((smart_string *)(xbuf))->c + ((smart_string *)(xbuf))->len, (ch), (count)); \
  |  |  132|  4.19M|		((smart_string *)(xbuf))->len += (count); \
  |  |  133|  4.19M|	} else { \
  |  |  134|      0|		smart_str_alloc(((smart_str *)(xbuf)), (count), 0); \
  |  |  135|      0|		memset(ZSTR_VAL(((smart_str *)(xbuf))->s) + ZSTR_LEN(((smart_str *)(xbuf))->s), (ch), (count)); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               		memset(ZSTR_VAL(((smart_str *)(xbuf))->s) + ZSTR_LEN(((smart_str *)(xbuf))->s), (ch), (count)); \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  136|      0|		ZSTR_LEN(((smart_str *)(xbuf))->s) += (count); \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  137|      0|	} \
  |  |  138|  4.19M|} while (0);
  |  |  ------------------
  |  |  |  Branch (138:10): [Folded, False: 4.19M]
  |  |  ------------------
  ------------------
  727|  4.19M|			}
  728|       |			/*
  729|       |			 * Print the string s.
  730|       |			 */
  731|  8.67M|			INS_STRING(xbuf, s, s_len, is_char);
  ------------------
  |  |  120|  8.67M|#define INS_STRING(xbuf, str, len, is_char) do { \
  |  |  121|  8.67M|	if ((is_char)) { \
  |  |  ------------------
  |  |  |  Branch (121:6): [True: 8.58M, False: 84.2k]
  |  |  ------------------
  |  |  122|  8.58M|		smart_string_appendl((smart_string *)(xbuf), (str), (len)); \
  |  |  ------------------
  |  |  |  |   41|  8.58M|	smart_string_appendl_ex((str), (src), (len), 0)
  |  |  ------------------
  |  |  123|  8.58M|	} else { \
  |  |  124|  84.2k|		smart_str_appendl((smart_str *)(xbuf), (str), (len)); \
  |  |  125|  84.2k|	} \
  |  |  126|  8.67M|} while (0);
  |  |  ------------------
  |  |  |  Branch (126:10): [Folded, False: 8.67M]
  |  |  ------------------
  ------------------
  732|       |
  733|  8.67M|			if (adjust_width && adjust == LEFT && (size_t)min_width > s_len) {
  ------------------
  |  Branch (733:8): [True: 4.19M, False: 4.47M]
  |  Branch (733:24): [True: 0, False: 4.19M]
  |  Branch (733:42): [True: 0, False: 0]
  ------------------
  734|      0|				PAD_CHAR(xbuf, pad_char, min_width - s_len, is_char);
  ------------------
  |  |  128|      0|#define PAD_CHAR(xbuf, ch, count, is_char) do { \
  |  |  129|      0|	if ((is_char)) { \
  |  |  ------------------
  |  |  |  Branch (129:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  130|      0|		smart_string_alloc(((smart_string *)(xbuf)), (count), 0); \
  |  |  131|      0|		memset(((smart_string *)(xbuf))->c + ((smart_string *)(xbuf))->len, (ch), (count)); \
  |  |  132|      0|		((smart_string *)(xbuf))->len += (count); \
  |  |  133|      0|	} else { \
  |  |  134|      0|		smart_str_alloc(((smart_str *)(xbuf)), (count), 0); \
  |  |  135|      0|		memset(ZSTR_VAL(((smart_str *)(xbuf))->s) + ZSTR_LEN(((smart_str *)(xbuf))->s), (ch), (count)); \
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  |  |               		memset(ZSTR_VAL(((smart_str *)(xbuf))->s) + ZSTR_LEN(((smart_str *)(xbuf))->s), (ch), (count)); \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  136|      0|		ZSTR_LEN(((smart_str *)(xbuf))->s) += (count); \
  |  |  ------------------
  |  |  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  |  |  137|      0|	} \
  |  |  138|      0|} while (0);
  |  |  ------------------
  |  |  |  Branch (138:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
  735|      0|			}
  736|       |
  737|  8.67M|			zend_tmp_string_release(tmp_str);
  738|  8.67M|		}
  739|  36.3M|skip_output:
  740|  36.3M|		fmt++;
  741|  36.3M|	}
  742|  6.71M|	return;
  743|  6.71M|}

php_get_stream_filters_hash_global:
   28|      4|{
   29|      4|	return &stream_filters_hash;
   30|      4|}
_php_get_stream_filters_hash:
   34|      1|{
   35|      1|	return (FG(stream_filters) ? FG(stream_filters) : &stream_filters_hash);
  ------------------
  |  |  116|      1|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 0, False: 1]
  |  |  ------------------
  ------------------
              	return (FG(stream_filters) ? FG(stream_filters) : &stream_filters_hash);
  ------------------
  |  |  116|      0|#define FG(v) (file_globals.v)
  ------------------
   36|      1|}
php_stream_filter_register_factory:
   40|     12|{
   41|     12|	zend_result ret;
   42|     12|	zend_string *str = zend_string_init_interned(filterpattern, strlen(filterpattern), true);
   43|     12|	ret = zend_hash_add_ptr(&stream_filters_hash, str, (void*)factory) ? SUCCESS : FAILURE;
  ------------------
  |  Branch (43:8): [True: 12, False: 0]
  ------------------
   44|       |	zend_string_release_ex(str, true);
   45|     12|	return ret;
   46|     12|}
php_stream_filter_register_factory_volatile:
   55|      3|{
   56|      3|	if (!FG(stream_filters)) {
  ------------------
  |  |  116|      3|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (56:6): [True: 3, False: 0]
  ------------------
   57|      3|		ALLOC_HASHTABLE(FG(stream_filters));
  ------------------
  |  |  232|      3|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      3|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|      3|		zend_hash_init(FG(stream_filters), zend_hash_num_elements(&stream_filters_hash) + 1, NULL, NULL, 0);
  ------------------
  |  |  111|      3|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
   59|      3|		zend_hash_copy(FG(stream_filters), &stream_filters_hash, NULL);
  ------------------
  |  |  116|      3|#define FG(v) (file_globals.v)
  ------------------
   60|      3|	}
   61|       |
   62|      3|	return zend_hash_add_ptr(FG(stream_filters), filterpattern, (void*)factory) ? SUCCESS : FAILURE;
  ------------------
  |  |  116|      3|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (62:9): [True: 3, False: 0]
  ------------------
   63|      3|}
php_stream_filter_create:
  218|      1|{
  219|      1|	HashTable *filter_hash = (FG(stream_filters) ? FG(stream_filters) : &stream_filters_hash);
  ------------------
  |  |  116|      1|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 1, False: 0]
  |  |  ------------------
  ------------------
              	HashTable *filter_hash = (FG(stream_filters) ? FG(stream_filters) : &stream_filters_hash);
  ------------------
  |  |  116|      1|#define FG(v) (file_globals.v)
  ------------------
  220|      1|	const php_stream_filter_factory *factory = NULL;
  221|      1|	php_stream_filter *filter = NULL;
  222|      1|	size_t n;
  223|      1|	const char *period;
  224|       |
  225|      1|	n = strlen(filtername);
  226|       |
  227|      1|	if (NULL != (factory = zend_hash_str_find_ptr(filter_hash, filtername, n))) {
  ------------------
  |  Branch (227:6): [True: 1, False: 0]
  ------------------
  228|      1|		filter = factory->create_filter(filtername, filterparams, persistent);
  229|      1|	} else if ((period = strrchr(filtername, '.'))) {
  ------------------
  |  Branch (229:13): [True: 0, False: 0]
  ------------------
  230|       |		/* try a wildcard */
  231|      0|		char *wildname;
  232|       |
  233|      0|		wildname = safe_emalloc(1, n, 3);
  ------------------
  |  |  153|      0|#define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define safe_emalloc(nmemb, size, offset)	_safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|      0|		memcpy(wildname, filtername, n+1);
  235|      0|		char *new_period = wildname + (period - filtername);
  236|      0|		while (new_period && !filter) {
  ------------------
  |  Branch (236:10): [True: 0, False: 0]
  |  Branch (236:24): [True: 0, False: 0]
  ------------------
  237|      0|			ZEND_ASSERT(new_period[0] == '.');
  ------------------
  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (237:4): [True: 0, False: 0]
  |  Branch (237:4): [True: 0, False: 0]
  ------------------
  238|      0|			new_period[1] = '*';
  239|      0|			new_period[2] = '\0';
  240|      0|			if (NULL != (factory = zend_hash_str_find_ptr(filter_hash, wildname, strlen(wildname)))) {
  ------------------
  |  Branch (240:8): [True: 0, False: 0]
  ------------------
  241|      0|				filter = factory->create_filter(filtername, filterparams, persistent);
  242|      0|			}
  243|       |
  244|      0|			*new_period = '\0';
  245|      0|			new_period = strrchr(wildname, '.');
  246|      0|		}
  247|      0|		efree(wildname);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|      0|	}
  249|       |
  250|      1|	if (filter == NULL) {
  ------------------
  |  Branch (250:6): [True: 0, False: 1]
  ------------------
  251|       |		/* TODO: these need correct docrefs */
  252|      0|		if (factory == NULL)
  ------------------
  |  Branch (252:7): [True: 0, False: 0]
  ------------------
  253|      0|			php_error_docref(NULL, E_WARNING, "Unable to locate filter \"%s\"", filtername);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  254|      0|		else
  255|      0|			php_error_docref(NULL, E_WARNING, "Unable to create or locate filter \"%s\"", filtername);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  256|      0|	}
  257|       |
  258|      1|	return filter;
  259|      1|}
_php_stream_filter_alloc:
  264|      1|{
  265|      1|	php_stream_filter *filter;
  266|       |
  267|      1|	filter = (php_stream_filter*) pemalloc_rel_orig(sizeof(php_stream_filter), persistent);
  ------------------
  |  |   29|      1|#define pemalloc_rel_orig(size, persistent)	((persistent) ? malloc((size)) : emalloc_rel_orig((size)))
  |  |  ------------------
  |  |  |  |   20|      1|		( __php_stream_call_depth == 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (20:5): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   21|      1|		? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  479|      1|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  478|      1|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|      1|		: _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) )
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		: _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) )
  |  |  |  |  ------------------
  |  |  |  |  |  |  485|      0|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  484|      0|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (29:46): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  268|      1|	memset(filter, 0, sizeof(php_stream_filter));
  269|       |
  270|      1|	filter->fops = fops;
  271|      1|	filter->read_seekable = read_seekable;
  272|      1|	filter->write_seekable = write_seekable;
  273|      1|	Z_PTR(filter->abstract) = abstract;
  ------------------
  |  | 1052|      1|#define Z_PTR(zval)					(zval).value.ptr
  ------------------
  274|      1|	filter->is_persistent = persistent;
  275|       |
  276|      1|	return filter;
  277|      1|}
php_stream_filter_free:
  326|      1|{
  327|      1|	if (filter->fops->dtor)
  ------------------
  |  Branch (327:6): [True: 1, False: 0]
  ------------------
  328|      1|		filter->fops->dtor(filter);
  329|       |	pefree(filter, filter->is_persistent);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  330|      1|}
php_stream_filter_append_ex:
  352|      1|{
  353|      1|	php_stream *stream = chain->stream;
  354|       |
  355|      1|	filter->prev = chain->tail;
  356|      1|	filter->next = NULL;
  357|      1|	if (chain->tail) {
  ------------------
  |  Branch (357:6): [True: 0, False: 1]
  ------------------
  358|      0|		chain->tail->next = filter;
  359|      1|	} else {
  360|      1|		chain->head = filter;
  361|      1|	}
  362|      1|	chain->tail = filter;
  363|      1|	filter->chain = chain;
  364|       |
  365|      1|	if (&(stream->readfilters) == chain && (stream->writepos - stream->readpos) > 0) {
  ------------------
  |  Branch (365:6): [True: 1, False: 0]
  |  Branch (365:41): [True: 0, False: 1]
  ------------------
  366|       |		/* Let's going ahead and wind anything in the buffer through this filter */
  367|      0|		php_stream_bucket_brigade brig_in = { NULL, NULL }, brig_out = { NULL, NULL };
  368|      0|		php_stream_bucket_brigade *brig_inp = &brig_in, *brig_outp = &brig_out;
  369|      0|		php_stream_filter_status_t status;
  370|      0|		php_stream_bucket *bucket;
  371|      0|		size_t consumed = 0;
  372|       |
  373|      0|		bucket = php_stream_bucket_new(stream, (char*) stream->readbuf + stream->readpos, stream->writepos - stream->readpos, 0, 0);
  374|      0|		php_stream_bucket_append(brig_inp, bucket);
  375|      0|		status = filter->fops->filter(stream, filter, brig_inp, brig_outp, &consumed, PSFS_FLAG_NORMAL);
  ------------------
  |  |   81|      0|#define PSFS_FLAG_NORMAL		0	/* regular read/write */
  ------------------
  376|       |
  377|      0|		if (stream->readpos + consumed > (uint32_t)stream->writepos) {
  ------------------
  |  Branch (377:7): [True: 0, False: 0]
  ------------------
  378|       |			/* No behaving filter should cause this. */
  379|      0|			status = PSFS_ERR_FATAL;
  380|      0|		}
  381|       |
  382|      0|		switch (status) {
  ------------------
  |  Branch (382:11): [True: 0, False: 0]
  ------------------
  383|      0|			case PSFS_ERR_FATAL:
  ------------------
  |  Branch (383:4): [True: 0, False: 0]
  ------------------
  384|      0|				while (brig_in.head) {
  ------------------
  |  Branch (384:12): [True: 0, False: 0]
  ------------------
  385|      0|					bucket = brig_in.head;
  386|      0|					php_stream_bucket_unlink(bucket);
  387|      0|					php_stream_bucket_delref(bucket);
  388|      0|				}
  389|      0|				while (brig_out.head) {
  ------------------
  |  Branch (389:12): [True: 0, False: 0]
  ------------------
  390|      0|					bucket = brig_out.head;
  391|      0|					php_stream_bucket_unlink(bucket);
  392|      0|					php_stream_bucket_delref(bucket);
  393|      0|				}
  394|      0|				php_stream_warn(stream, FilterFailed,
  ------------------
  |  |  210|      0|	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  395|      0|						"Filter failed to process pre-buffered data");
  396|      0|				return FAILURE;
  397|      0|			case PSFS_FEED_ME:
  ------------------
  |  Branch (397:4): [True: 0, False: 0]
  ------------------
  398|       |				/* We don't actually need data yet,
  399|       |				   leave this filter in a feed me state until data is needed.
  400|       |				   Reset stream's internal read buffer since the filter is "holding" it. */
  401|      0|				stream->readpos = 0;
  402|      0|				stream->writepos = 0;
  403|       |
  404|       |				/* Filter could have added buckets anyway, but signalled that it did not return any. Discard them. */
  405|      0|				while (brig_out.head) {
  ------------------
  |  Branch (405:12): [True: 0, False: 0]
  ------------------
  406|      0|					bucket = brig_out.head;
  407|      0|					php_stream_bucket_unlink(bucket);
  408|      0|					php_stream_bucket_delref(bucket);
  409|      0|				}
  410|      0|				break;
  411|      0|			case PSFS_PASS_ON:
  ------------------
  |  Branch (411:4): [True: 0, False: 0]
  ------------------
  412|       |				/* If any data is consumed, we cannot rely upon the existing read buffer,
  413|       |				   as the filtered data must replace the existing data, so invalidate the cache */
  414|      0|				stream->writepos = 0;
  415|      0|				stream->readpos = 0;
  416|       |
  417|      0|				while (brig_outp->head) {
  ------------------
  |  Branch (417:12): [True: 0, False: 0]
  ------------------
  418|      0|					bucket = brig_outp->head;
  419|       |					/* Grow buffer to hold this bucket if need be.
  420|       |					   TODO: See warning in main/stream/streams.c::php_stream_fill_read_buffer */
  421|      0|					if (stream->readbuflen - stream->writepos < bucket->buflen) {
  ------------------
  |  Branch (421:10): [True: 0, False: 0]
  ------------------
  422|      0|						stream->readbuflen += bucket->buflen;
  423|      0|						stream->readbuf = perealloc(stream->readbuf, stream->readbuflen, stream->is_persistent);
  ------------------
  |  |  200|      0|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  424|      0|					}
  425|      0|					memcpy(stream->readbuf + stream->writepos, bucket->buf, bucket->buflen);
  426|      0|					stream->writepos += bucket->buflen;
  427|       |
  428|      0|					php_stream_bucket_unlink(bucket);
  429|      0|					php_stream_bucket_delref(bucket);
  430|      0|				}
  431|      0|				break;
  432|      0|		}
  433|      0|	}
  434|       |
  435|      1|	return SUCCESS;
  436|      1|}
_php_stream_filter_append:
  439|      1|{
  440|      1|	if (php_stream_filter_append_ex(chain, filter) != SUCCESS) {
  ------------------
  |  Branch (440:6): [True: 0, False: 1]
  ------------------
  441|      0|		if (chain->head == filter) {
  ------------------
  |  Branch (441:7): [True: 0, False: 0]
  ------------------
  442|      0|			chain->head = NULL;
  443|      0|			chain->tail = NULL;
  444|      0|		} else {
  445|       |			filter->prev->next = NULL;
  446|      0|			chain->tail = filter->prev;
  447|      0|		}
  448|      0|	}
  449|      1|}
php_stream_filter_remove:
  537|      1|{
  538|      1|	if (filter->prev) {
  ------------------
  |  Branch (538:6): [True: 0, False: 1]
  ------------------
  539|      0|		filter->prev->next = filter->next;
  540|      1|	} else {
  541|      1|		filter->chain->head = filter->next;
  542|      1|	}
  543|      1|	if (filter->next) {
  ------------------
  |  Branch (543:6): [True: 0, False: 1]
  ------------------
  544|      0|		filter->next->prev = filter->prev;
  545|      1|	} else {
  546|      1|		filter->chain->tail = filter->prev;
  547|      1|	}
  548|       |
  549|      1|	if (filter->res) {
  ------------------
  |  Branch (549:6): [True: 0, False: 1]
  ------------------
  550|      0|		zend_list_delete(filter->res);
  551|      0|	}
  552|       |
  553|      1|	if (call_dtor) {
  ------------------
  |  Branch (553:6): [True: 1, False: 0]
  ------------------
  554|      1|		php_stream_filter_free(filter);
  555|      1|		return NULL;
  556|      1|	}
  557|      0|	return filter;
  558|      1|}

_php_stream_mode_to_str:
  284|     22|{
  285|     22|	if (mode == TEMP_STREAM_READONLY) {
  ------------------
  |  |   23|     22|#define TEMP_STREAM_READONLY    0x1
  ------------------
  |  Branch (285:6): [True: 22, False: 0]
  ------------------
  286|     22|		return "rb";
  287|     22|	} else if (mode == TEMP_STREAM_APPEND) {
  ------------------
  |  |   25|      0|#define TEMP_STREAM_APPEND      0x4
  ------------------
  |  Branch (287:13): [True: 0, False: 0]
  ------------------
  288|      0|		return "a+b";
  289|      0|	}
  290|      0|	return "w+b";
  291|     22|}
_php_stream_memory_create:
  296|     22|{
  297|     22|	php_stream_memory_data *self;
  298|     22|	php_stream *stream;
  299|       |
  300|     22|	self = emalloc(sizeof(*self));
  ------------------
  |  |  150|     22|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  301|     22|	self->data = ZSTR_EMPTY_ALLOC();
  302|     22|	self->fpos = 0;
  303|     22|	self->mode = mode;
  304|       |
  305|     22|	stream = php_stream_alloc_rel(&php_stream_memory_ops, self, 0, _php_stream_mode_to_str(mode));
  ------------------
  |  |   58|     22|#define php_stream_alloc_rel(ops, thisptr, persistent, mode) _php_stream_alloc((ops), (thisptr), (persistent), (mode) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|     22|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|     22|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|     22|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 22, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|     22|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 22, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  306|     22|	stream->flags |= PHP_STREAM_FLAG_NO_BUFFER;
  ------------------
  |  |  165|     22|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
  307|     22|	return stream;
  308|     22|}
_php_stream_memory_open:
  314|     22|{
  315|     22|	php_stream *stream;
  316|     22|	php_stream_memory_data *ms;
  317|       |
  318|     22|	if ((stream = php_stream_memory_create_rel(mode)) != NULL) {
  ------------------
  |  |   28|     22|#define php_stream_memory_create_rel(mode) _php_stream_memory_create((mode) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|     22|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|     22|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|     22|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|     22|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (318:6): [True: 22, False: 0]
  ------------------
  319|     22|		ms = (php_stream_memory_data*)stream->abstract;
  320|     22|		ms->data = zend_string_copy(buf);
  321|     22|	}
  322|     22|	return stream;
  323|     22|}
memory.c:php_stream_memory_read:
   77|    368|{
   78|    368|	php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract;
   79|    368|	assert(ms != NULL);
  ------------------
  |  Branch (79:2): [True: 0, False: 368]
  |  Branch (79:2): [True: 368, False: 0]
  ------------------
   80|       |
   81|    368|	if (ms->fpos >= ZSTR_LEN(ms->data)) {
  ------------------
  |  |   68|    368|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (81:6): [True: 21, False: 347]
  ------------------
   82|     21|		stream->eof = 1;
   83|     21|		count = 0;
   84|    347|	} else {
   85|    347|		if (ms->fpos + count > ZSTR_LEN(ms->data)) {
  ------------------
  |  |   68|    347|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (85:7): [True: 17, False: 330]
  ------------------
   86|     17|			count = ZSTR_LEN(ms->data) - ms->fpos;
  ------------------
  |  |   68|     17|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
   87|     17|		}
   88|    347|		if (count) {
  ------------------
  |  Branch (88:7): [True: 347, False: 0]
  ------------------
   89|    347|			ZEND_ASSERT(buf != NULL);
  ------------------
  |  |  112|    347|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (89:4): [True: 0, False: 347]
  |  Branch (89:4): [True: 347, False: 0]
  ------------------
   90|    347|			memcpy(buf, ZSTR_VAL(ms->data) + ms->fpos, count);
  ------------------
  |  |   67|    347|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
   91|    347|			ms->fpos += count;
   92|    347|		}
   93|    347|	}
   94|    368|	return count;
   95|    368|}
memory.c:php_stream_memory_close:
  101|     22|{
  102|     22|	php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract;
  103|     22|	ZEND_ASSERT(ms != NULL);
  ------------------
  |  |  112|     22|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (103:2): [True: 0, False: 22]
  |  Branch (103:2): [True: 22, False: 0]
  ------------------
  104|     22|	zend_string_release(ms->data);
  105|       |	efree(ms);
  ------------------
  |  |  154|     22|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     22|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     22|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     22|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     22|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|     22|	return 0;
  107|     22|}
memory.c:php_stream_memory_seek:
  122|     53|{
  123|     53|	php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract;
  124|     53|	assert(ms != NULL);
  ------------------
  |  Branch (124:2): [True: 0, False: 53]
  |  Branch (124:2): [True: 53, False: 0]
  ------------------
  125|       |
  126|     53|	switch(whence) {
  127|      0|		case SEEK_CUR:
  ------------------
  |  Branch (127:3): [True: 0, False: 53]
  ------------------
  128|      0|			if (offset < 0) {
  ------------------
  |  Branch (128:8): [True: 0, False: 0]
  ------------------
  129|      0|				if (ms->fpos < (size_t)(-offset)) {
  ------------------
  |  Branch (129:9): [True: 0, False: 0]
  ------------------
  130|      0|					ms->fpos = 0;
  131|      0|					*newoffs = -1;
  132|      0|					return -1;
  133|      0|				} else {
  134|      0|					ms->fpos = ms->fpos + offset;
  135|      0|					*newoffs = ms->fpos;
  136|      0|					stream->eof = 0;
  137|      0|					stream->fatal_error = 0;
  138|      0|					return 0;
  139|      0|				}
  140|      0|			} else {
  141|      0|				stream->eof = 0;
  142|      0|				stream->fatal_error = 0;
  143|      0|				ms->fpos = ms->fpos + offset;
  144|      0|				*newoffs = ms->fpos;
  145|      0|				return 0;
  146|      0|			}
  147|     53|		case SEEK_SET:
  ------------------
  |  Branch (147:3): [True: 53, False: 0]
  ------------------
  148|     53|			if (offset < 0) {
  ------------------
  |  Branch (148:8): [True: 0, False: 53]
  ------------------
  149|      0|				ms->fpos = 0;
  150|      0|				*newoffs = -1;
  151|      0|				return -1;
  152|     53|			} else {
  153|     53|				ms->fpos = offset;
  154|     53|				*newoffs = ms->fpos;
  155|     53|				stream->eof = 0;
  156|     53|				stream->fatal_error = 0;
  157|     53|				return 0;
  158|     53|			}
  159|      0|		case SEEK_END:
  ------------------
  |  Branch (159:3): [True: 0, False: 53]
  ------------------
  160|      0|			if (offset > 0) {
  ------------------
  |  Branch (160:8): [True: 0, False: 0]
  ------------------
  161|      0|				ms->fpos = ZSTR_LEN(ms->data) + offset;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  162|      0|				*newoffs = ms->fpos;
  163|      0|				stream->eof = 0;
  164|      0|				stream->fatal_error = 0;
  165|      0|				return 0;
  166|      0|			} else if (ZSTR_LEN(ms->data) < (size_t)(-offset)) {
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (166:15): [True: 0, False: 0]
  ------------------
  167|      0|				ms->fpos = 0;
  168|      0|				*newoffs = -1;
  169|      0|				return -1;
  170|      0|			} else {
  171|      0|				ms->fpos = ZSTR_LEN(ms->data) + offset;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  172|      0|				*newoffs = ms->fpos;
  173|      0|				stream->eof = 0;
  174|      0|				stream->fatal_error = 0;
  175|      0|				return 0;
  176|      0|			}
  177|      0|		default:
  ------------------
  |  Branch (177:3): [True: 0, False: 53]
  ------------------
  178|      0|			*newoffs = ms->fpos;
  179|      0|			return -1;
  180|     53|	}
  181|     53|}

php_stream_parse_fopen_modes:
   74|     28|{
   75|     28|	int flags;
   76|       |
   77|     28|	switch (mode[0]) {
   78|     28|		case 'r':
  ------------------
  |  Branch (78:3): [True: 28, False: 0]
  ------------------
   79|     28|			flags = 0;
   80|     28|			break;
   81|      0|		case 'w':
  ------------------
  |  Branch (81:3): [True: 0, False: 28]
  ------------------
   82|      0|			flags = O_TRUNC|O_CREAT;
   83|      0|			break;
   84|      0|		case 'a':
  ------------------
  |  Branch (84:3): [True: 0, False: 28]
  ------------------
   85|      0|			flags = O_CREAT|O_APPEND;
   86|      0|			break;
   87|      0|		case 'x':
  ------------------
  |  Branch (87:3): [True: 0, False: 28]
  ------------------
   88|      0|			flags = O_CREAT|O_EXCL;
   89|      0|			break;
   90|      0|		case 'c':
  ------------------
  |  Branch (90:3): [True: 0, False: 28]
  ------------------
   91|      0|			flags = O_CREAT;
   92|      0|			break;
   93|      0|		default:
  ------------------
  |  Branch (93:3): [True: 0, False: 28]
  ------------------
   94|       |			/* unknown mode */
   95|      0|			return FAILURE;
   96|     28|	}
   97|       |
   98|     28|	if (strchr(mode, '+')) {
  ------------------
  |  Branch (98:6): [True: 0, False: 28]
  ------------------
   99|      0|		flags |= O_RDWR;
  100|     28|	} else if (flags) {
  ------------------
  |  Branch (100:13): [True: 0, False: 28]
  ------------------
  101|      0|		flags |= O_WRONLY;
  102|     28|	} else {
  103|     28|		flags |= O_RDONLY;
  104|     28|	}
  105|       |
  106|     28|#if defined(O_CLOEXEC)
  107|     28|	if (strchr(mode, 'e')) {
  ------------------
  |  Branch (107:6): [True: 0, False: 28]
  ------------------
  108|      0|		flags |= O_CLOEXEC;
  109|      0|	}
  110|     28|#endif
  111|       |
  112|     28|#if defined(O_NONBLOCK)
  113|     28|	if (strchr(mode, 'n')) {
  ------------------
  |  Branch (113:6): [True: 0, False: 28]
  ------------------
  114|      0|		flags |= O_NONBLOCK;
  115|      0|	}
  116|     28|#endif
  117|       |
  118|       |#if defined(_O_TEXT) && defined(O_BINARY)
  119|       |	if (strchr(mode, 't')) {
  120|       |		flags |= _O_TEXT;
  121|       |	} else {
  122|       |		flags |= O_BINARY;
  123|       |	}
  124|       |#endif
  125|       |
  126|     28|	*open_flags = flags;
  127|     28|	return SUCCESS;
  128|     28|}
_php_stream_fopen_from_fd:
  302|      1|{
  303|      1|	php_stream *stream = php_stream_fopen_from_fd_int_rel(fd, mode, persistent_id);
  ------------------
  |  |   49|      1|#define php_stream_fopen_from_fd_int_rel(fd, mode, persistent_id)	 _php_stream_fopen_from_fd_int((fd), (mode), (persistent_id) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|      1|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      1|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      1|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      1|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|       |
  305|      1|	if (stream) {
  ------------------
  |  Branch (305:6): [True: 1, False: 0]
  ------------------
  306|      1|		php_stdio_stream_data *self = (php_stdio_stream_data*)stream->abstract;
  307|       |
  308|      1|		detect_is_seekable(self);
  309|      1|		if (!self->is_seekable) {
  ------------------
  |  Branch (309:7): [True: 0, False: 1]
  ------------------
  310|      0|			stream->flags |= PHP_STREAM_FLAG_NO_SEEK;
  ------------------
  |  |  164|      0|#define PHP_STREAM_FLAG_NO_SEEK						0x1
  ------------------
  311|      0|			stream->position = -1;
  312|      1|		} else if (zero_position) {
  ------------------
  |  Branch (312:14): [True: 1, False: 0]
  ------------------
  313|      1|			ZEND_ASSERT(zend_lseek(self->fd, 0, SEEK_CUR) == 0);
  ------------------
  |  |  112|      1|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (313:4): [True: 0, False: 1]
  |  Branch (313:4): [True: 1, False: 0]
  ------------------
  314|      1|			stream->position = 0;
  315|      1|		} else {
  316|      0|			stream->position = zend_lseek(self->fd, 0, SEEK_CUR);
  ------------------
  |  |   96|      0|# define zend_lseek lseek
  ------------------
  317|      0|#ifdef ESPIPE
  318|       |			/* FIXME: Is this code still needed? */
  319|      0|			if (stream->position == (zend_off_t)-1 && errno == ESPIPE) {
  ------------------
  |  Branch (319:8): [True: 0, False: 0]
  |  Branch (319:46): [True: 0, False: 0]
  ------------------
  320|      0|				stream->flags |= PHP_STREAM_FLAG_NO_SEEK;
  ------------------
  |  |  164|      0|#define PHP_STREAM_FLAG_NO_SEEK						0x1
  ------------------
  321|      0|				self->is_seekable = 0;
  322|      0|			}
  323|      0|#endif
  324|      0|		}
  325|      1|	}
  326|       |
  327|      1|	return stream;
  328|      1|}
_php_stream_fopen:
 1153|     28|{
 1154|     28|	char realpath[MAXPATHLEN];
 1155|     28|	int open_flags;
 1156|     28|	int fd;
 1157|     28|	php_stream *ret;
 1158|     28|	int persistent = options & STREAM_OPEN_PERSISTENT;
  ------------------
  |  |  613|     28|#define STREAM_OPEN_PERSISTENT          0x00000800
  ------------------
 1159|     28|	char *persistent_id = NULL;
 1160|       |
 1161|     28|	if (FAILURE == php_stream_parse_fopen_modes(mode, &open_flags)) {
  ------------------
  |  Branch (1161:6): [True: 0, False: 28]
  ------------------
 1162|      0|		php_stream_wrapper_log_warn(&php_plain_files_wrapper, NULL, options,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 1163|      0|				InvalidMode, "`%s' is not a valid mode for fopen", mode);
 1164|      0|		return NULL;
 1165|      0|	}
 1166|       |
 1167|     28|	if (options & STREAM_ASSUME_REALPATH) {
  ------------------
  |  |  622|     28|#define STREAM_ASSUME_REALPATH          0x00004000
  ------------------
  |  Branch (1167:6): [True: 5, False: 23]
  ------------------
 1168|      5|		strlcpy(realpath, filename, sizeof(realpath));
  ------------------
  |  |  149|      5|#define strlcpy php_strlcpy
  ------------------
 1169|     23|	} else {
 1170|     23|		if (expand_filepath(filename, realpath) == NULL) {
  ------------------
  |  Branch (1170:7): [True: 0, False: 23]
  ------------------
 1171|      0|			return NULL;
 1172|      0|		}
 1173|     23|	}
 1174|       |
 1175|     28|	if (persistent) {
  ------------------
  |  Branch (1175:6): [True: 0, False: 28]
  ------------------
 1176|      0|		spprintf(&persistent_id, 0, "streams_stdio_%d_%s", open_flags, realpath);
  ------------------
  |  |   27|      0|#define spprintf zend_spprintf
  ------------------
 1177|      0|		switch (php_stream_from_persistent_id(persistent_id, &ret)) {
  ------------------
  |  Branch (1177:11): [True: 0, False: 0]
  ------------------
 1178|      0|			case PHP_STREAM_PERSISTENT_SUCCESS:
  ------------------
  |  |  340|      0|#define PHP_STREAM_PERSISTENT_SUCCESS	0 /* id exists */
  ------------------
  |  Branch (1178:4): [True: 0, False: 0]
  ------------------
 1179|      0|				if (opened_path) {
  ------------------
  |  Branch (1179:9): [True: 0, False: 0]
  ------------------
 1180|       |					//TODO: avoid reallocation???
 1181|      0|					*opened_path = zend_string_init(realpath, strlen(realpath), 0);
 1182|      0|				}
 1183|      0|				ZEND_FALLTHROUGH;
  ------------------
  |  |  138|      0|# define ZEND_FALLTHROUGH ((void)0)
  ------------------
 1184|       |
 1185|      0|			case PHP_STREAM_PERSISTENT_FAILURE:
  ------------------
  |  |  341|      0|#define PHP_STREAM_PERSISTENT_FAILURE	1 /* id exists but is not a stream! */
  ------------------
  |  Branch (1185:4): [True: 0, False: 0]
  ------------------
 1186|      0|				efree(persistent_id);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1187|      0|				return ret;
 1188|      0|		}
 1189|      0|	}
 1190|       |#ifdef PHP_WIN32
 1191|       |	fd = php_win32_ioutil_open(realpath, open_flags, 0666);
 1192|       |#else
 1193|     28|	fd = open(realpath, open_flags, 0666);
 1194|     28|#endif
 1195|     28|	if (fd != -1)	{
  ------------------
  |  Branch (1195:6): [True: 6, False: 22]
  ------------------
 1196|       |
 1197|      6|		if (options & STREAM_OPEN_FOR_INCLUDE) {
  ------------------
  |  |  601|      6|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  |  Branch (1197:7): [True: 5, False: 1]
  ------------------
 1198|      5|			ret = php_stream_fopen_from_fd_int_rel(fd, mode, persistent_id);
  ------------------
  |  |   49|      5|#define php_stream_fopen_from_fd_int_rel(fd, mode, persistent_id)	 _php_stream_fopen_from_fd_int((fd), (mode), (persistent_id) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|      5|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      5|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      5|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      5|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      5|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      5|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1199|      5|		} else {
 1200|       |			/* skip the lseek(SEEK_CUR) system call to
 1201|       |			 * determine the current offset because we
 1202|       |			 * know newly opened files are at offset zero
 1203|       |			 * (unless the file has been opened in
 1204|       |			 * O_APPEND mode) */
 1205|      1|			ret = php_stream_fopen_from_fd_rel(fd, mode, persistent_id, (open_flags & O_APPEND) == 0);
  ------------------
  |  |   66|      1|#define php_stream_fopen_from_fd_rel(fd, mode, persistent_id, zero_position)	 _php_stream_fopen_from_fd((fd), (mode), (persistent_id), (zero_position) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|      1|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      1|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      1|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      1|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1206|      1|		}
 1207|       |
 1208|      6|		if (EG(active)) {
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 1209|       |			/* clear stat cache as mtime and ctime might got changed - phar can use stream before
 1210|       |			 * cache is initialized so we need to check if the execution is active. */
 1211|      6|			php_clear_stat_cache(0, NULL, 0);
 1212|      6|		}
 1213|       |
 1214|      6|		if (ret)	{
  ------------------
  |  Branch (1214:7): [True: 6, False: 0]
  ------------------
 1215|      6|			if (opened_path) {
  ------------------
  |  Branch (1215:8): [True: 5, False: 1]
  ------------------
 1216|      5|				*opened_path = zend_string_init(realpath, strlen(realpath), 0);
 1217|      5|			}
 1218|      6|			if (persistent_id) {
  ------------------
  |  Branch (1218:8): [True: 0, False: 6]
  ------------------
 1219|      0|				efree(persistent_id);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1220|      0|			}
 1221|       |
 1222|       |			/* WIN32 always set ISREG flag */
 1223|      6|#ifndef PHP_WIN32
 1224|       |			/* sanity checks for include/require.
 1225|       |			 * We check these after opening the stream, so that we save
 1226|       |			 * on fstat() syscalls */
 1227|      6|			if (options & STREAM_OPEN_FOR_INCLUDE) {
  ------------------
  |  |  601|      6|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  |  Branch (1227:8): [True: 5, False: 1]
  ------------------
 1228|      5|				php_stdio_stream_data *self = (php_stdio_stream_data*)ret->abstract;
 1229|      5|				int r;
 1230|       |
 1231|      5|				r = do_fstat(self, 0);
 1232|      5|				if ((r == 0 && !S_ISREG(self->sb.st_mode))) {
  ------------------
  |  Branch (1232:10): [True: 5, False: 0]
  |  Branch (1232:20): [True: 0, False: 5]
  ------------------
 1233|      0|					if (opened_path) {
  ------------------
  |  Branch (1233:10): [True: 0, False: 0]
  ------------------
 1234|      0|						zend_string_release_ex(*opened_path, 0);
 1235|      0|						*opened_path = NULL;
 1236|      0|					}
 1237|      0|					php_stream_close(ret);
  ------------------
  |  |  357|      0|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      0|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      0|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1238|      0|					return NULL;
 1239|      0|				}
 1240|       |
 1241|       |				/* Make sure the fstat result is reused when we later try to get the
 1242|       |				 * file size. */
 1243|      5|				self->no_forced_fstat = 1;
 1244|      5|			}
 1245|       |
 1246|      6|			if (options & STREAM_USE_BLOCKING_PIPE) {
  ------------------
  |  |  625|      6|#define STREAM_USE_BLOCKING_PIPE        0x00008000
  ------------------
  |  Branch (1246:8): [True: 0, False: 6]
  ------------------
 1247|      0|				php_stdio_stream_data *self = (php_stdio_stream_data*)ret->abstract;
 1248|      0|				self->is_pipe_blocking = 1;
 1249|      0|			}
 1250|      6|#endif
 1251|       |
 1252|      6|			return ret;
 1253|      6|		}
 1254|      0|		close(fd);
 1255|      0|	}
 1256|     22|	if (persistent_id) {
  ------------------
  |  Branch (1256:6): [True: 0, False: 22]
  ------------------
 1257|      0|		efree(persistent_id);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1258|      0|	}
 1259|       |	return NULL;
 1260|     28|}
plain_wrapper.c:_php_stream_fopen_from_fd_int:
  180|      6|{
  181|      6|	php_stdio_stream_data *self;
  182|       |
  183|      6|	self = pemalloc_rel_orig(sizeof(*self), persistent_id);
  ------------------
  |  |   29|      6|#define pemalloc_rel_orig(size, persistent)	((persistent) ? malloc((size)) : emalloc_rel_orig((size)))
  |  |  ------------------
  |  |  |  |   20|      6|		( __php_stream_call_depth == 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (20:5): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  |   21|      6|		? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  479|      0|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  478|      0|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|      6|		: _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) )
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		: _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) )
  |  |  |  |  ------------------
  |  |  |  |  |  |  485|      6|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  484|      6|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (29:46): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  184|      6|	memset(self, 0, sizeof(*self));
  185|      6|	self->file = NULL;
  186|      6|	self->is_seekable = 1;
  187|      6|	self->is_pipe = 0;
  188|      6|	self->lock_flag = LOCK_UN;
  189|      6|	self->is_process_pipe = 0;
  190|      6|	self->temp_name = NULL;
  191|      6|	self->fd = fd;
  192|       |#ifdef PHP_WIN32
  193|       |	self->is_pipe_blocking = 0;
  194|       |#endif
  195|       |
  196|      6|	return php_stream_alloc_rel(&php_stream_stdio_ops, self, persistent_id, mode);
  ------------------
  |  |   58|      6|#define php_stream_alloc_rel(ops, thisptr, persistent, mode) _php_stream_alloc((ops), (thisptr), (persistent), (mode) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|      6|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      6|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      6|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      6|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|      6|}
plain_wrapper.c:detect_is_seekable:
  257|      1|static void detect_is_seekable(php_stdio_stream_data *self) {
  258|      1|#if defined(S_ISFIFO) && defined(S_ISCHR)
  259|      1|	if (self->fd >= 0 && do_fstat(self, 0) == 0) {
  ------------------
  |  Branch (259:6): [True: 1, False: 0]
  |  Branch (259:23): [True: 1, False: 0]
  ------------------
  260|      1|#ifdef __linux__
  261|      1|		if (S_ISCHR(self->sb.st_mode)) {
  ------------------
  |  Branch (261:7): [True: 0, False: 1]
  ------------------
  262|       |			/* Some character devices are exceptions, check their major/minor ID
  263|       |			 * https://www.kernel.org/doc/Documentation/admin-guide/devices.txt */
  264|      0|			if (major(self->sb.st_rdev) == 1) {
  ------------------
  |  Branch (264:8): [True: 0, False: 0]
  ------------------
  265|      0|				unsigned m = minor(self->sb.st_rdev);
  266|      0|				self->is_seekable =
  267|      0|					m == 1 ||   /* /dev/mem   */
  ------------------
  |  Branch (267:6): [True: 0, False: 0]
  ------------------
  268|      0|					m == 2 ||   /* /dev/kmem  */
  ------------------
  |  Branch (268:6): [True: 0, False: 0]
  ------------------
  269|      0|					m == 3 ||   /* /dev/null  */
  ------------------
  |  Branch (269:6): [True: 0, False: 0]
  ------------------
  270|      0|					m == 4 ||   /* /dev/port  (seekable, offset = I/O port) */
  ------------------
  |  Branch (270:6): [True: 0, False: 0]
  ------------------
  271|      0|					m == 5 ||   /* /dev/zero  */
  ------------------
  |  Branch (271:6): [True: 0, False: 0]
  ------------------
  272|      0|					m == 7;     /* /dev/full  */
  ------------------
  |  Branch (272:6): [True: 0, False: 0]
  ------------------
  273|      0|			} else {
  274|      0|				self->is_seekable = false;
  275|      0|			}
  276|      1|		} else {
  277|      1|			self->is_seekable = !S_ISFIFO(self->sb.st_mode);
  278|      1|		}
  279|       |#else
  280|       |		self->is_seekable = !(S_ISFIFO(self->sb.st_mode) || S_ISCHR(self->sb.st_mode));
  281|       |#endif
  282|      1|		self->is_pipe = S_ISFIFO(self->sb.st_mode);
  283|      1|	}
  284|       |#elif defined(PHP_WIN32)
  285|       |	uintptr_t handle = _get_osfhandle(self->fd);
  286|       |
  287|       |	if (handle != (uintptr_t)INVALID_HANDLE_VALUE) {
  288|       |		DWORD file_type = GetFileType((HANDLE)handle);
  289|       |
  290|       |		self->is_seekable = !(file_type == FILE_TYPE_PIPE || file_type == FILE_TYPE_CHAR);
  291|       |		self->is_pipe = file_type == FILE_TYPE_PIPE;
  292|       |
  293|       |		/* Additional check needed to distinguish between pipes and sockets. */
  294|       |		if (self->is_pipe && !GetNamedPipeInfo((HANDLE) handle, NULL, NULL, NULL, NULL)) {
  295|       |			self->is_pipe = 0;
  296|       |		}
  297|       |	}
  298|       |#endif
  299|      1|}
plain_wrapper.c:php_stdiop_read:
  421|      6|{
  422|      6|	php_stdio_stream_data *data = (php_stdio_stream_data*)stream->abstract;
  423|      6|	ssize_t ret;
  424|       |
  425|      6|	assert(data != NULL);
  ------------------
  |  Branch (425:2): [True: 0, False: 6]
  |  Branch (425:2): [True: 6, False: 0]
  ------------------
  426|       |
  427|      6|	if (data->fd >= 0) {
  ------------------
  |  Branch (427:6): [True: 6, False: 0]
  ------------------
  428|       |#ifdef PHP_WIN32
  429|       |		php_stdio_stream_data *self = (php_stdio_stream_data*)stream->abstract;
  430|       |
  431|       |		if ((self->is_pipe || self->is_process_pipe) && !self->is_pipe_blocking) {
  432|       |			HANDLE ph = (HANDLE)_get_osfhandle(data->fd);
  433|       |			int retry = 0;
  434|       |			DWORD avail_read = 0;
  435|       |
  436|       |			do {
  437|       |				/* Look ahead to get the available data amount to read. Do the same
  438|       |					as read() does, however not blocking forever. In case it failed,
  439|       |					no data will be read (better than block). */
  440|       |				if (!PeekNamedPipe(ph, NULL, 0, NULL, &avail_read, NULL)) {
  441|       |					break;
  442|       |				}
  443|       |				/* If there's nothing to read, wait in 10us periods. */
  444|       |				if (0 == avail_read) {
  445|       |					usleep(10);
  446|       |				}
  447|       |			} while (0 == avail_read && retry++ < 3200000);
  448|       |
  449|       |			/* Reduce the required data amount to what is available, otherwise read()
  450|       |				will block.*/
  451|       |			if (avail_read < count) {
  452|       |				count = avail_read;
  453|       |			}
  454|       |		}
  455|       |#endif
  456|      6|		ret = read(data->fd, buf,  PLAIN_WRAP_BUF_SIZE(count));
  ------------------
  |  |   63|      6|# define PLAIN_WRAP_BUF_SIZE(st) (st)
  ------------------
  457|       |
  458|      6|		if (ret == (size_t)-1 && errno == EINTR) {
  ------------------
  |  Branch (458:7): [True: 0, False: 6]
  |  Branch (458:28): [True: 0, False: 0]
  ------------------
  459|       |			/* Read was interrupted, retry once,
  460|       |			   If read still fails, give up with feof==0
  461|       |			   so script can retry if desired */
  462|      0|			ret = read(data->fd, buf,  PLAIN_WRAP_BUF_SIZE(count));
  ------------------
  |  |   63|      0|# define PLAIN_WRAP_BUF_SIZE(st) (st)
  ------------------
  463|      0|		}
  464|       |
  465|      6|		if (ret < 0) {
  ------------------
  |  Branch (465:7): [True: 0, False: 6]
  ------------------
  466|      0|			if (PHP_IS_TRANSIENT_ERROR(errno)) {
  ------------------
  |  |   52|      0|# define PHP_IS_TRANSIENT_ERROR(err) (err == EAGAIN)
  |  |  ------------------
  |  |  |  Branch (52:38): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  467|       |				/* Not an error. */
  468|      0|				ret = 0;
  469|      0|			} else if (errno == EINTR) {
  ------------------
  |  Branch (469:15): [True: 0, False: 0]
  ------------------
  470|       |				/* TODO: Should this be treated as a proper error or not? */
  471|      0|			} else {
  472|      0|				if (!(stream->flags & PHP_STREAM_FLAG_SUPPRESS_ERRORS)) {
  ------------------
  |  |  185|      0|#define PHP_STREAM_FLAG_SUPPRESS_ERRORS				0x100
  ------------------
  |  Branch (472:9): [True: 0, False: 0]
  ------------------
  473|      0|					char errstr[256];
  474|      0|					php_stream_notice(stream, ReadFailed,
  ------------------
  |  |  219|      0|	php_stream_error(stream, NULL, E_NOTICE, false, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   25|      0|#define E_NOTICE			(1<<3L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_NOTICE, false, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  475|      0|							"Read of %zu bytes failed with errno=%d %s",
  476|      0|							count, errno, php_socket_strerror_s(errno, errstr, sizeof(errstr)));
  477|      0|				}
  478|       |
  479|       |				/* TODO: Remove this special-case? */
  480|      0|				if (errno != EBADF) {
  ------------------
  |  Branch (480:9): [True: 0, False: 0]
  ------------------
  481|      0|					stream->eof = 1;
  482|      0|				}
  483|      0|			}
  484|      6|		} else if (ret == 0) {
  ------------------
  |  Branch (484:14): [True: 6, False: 0]
  ------------------
  485|      6|			stream->eof = 1;
  486|      6|		}
  487|       |
  488|      6|	} else {
  489|       |#ifdef HAVE_FLUSHIO
  490|       |		if (data->is_seekable && data->last_op == 'w')
  491|       |			zend_fseek(data->file, 0, SEEK_CUR);
  492|       |		data->last_op = 'r';
  493|       |#endif
  494|       |
  495|      0|		ret = fread(buf, 1, count, data->file);
  496|       |
  497|      0|		stream->eof = feof(data->file);
  498|      0|	}
  499|       |
  500|      6|	if (EG(active)) {
  ------------------
  |  |   45|      6|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  501|       |		/* clear stat cache as atime got changed */
  502|      6|		php_clear_stat_cache(0, NULL, 0);
  503|      6|	}
  504|       |
  505|      6|	return ret;
  506|      6|}
plain_wrapper.c:php_stdiop_close:
  509|      6|{
  510|      6|	int ret;
  511|      6|	php_stdio_stream_data *data = (php_stdio_stream_data*)stream->abstract;
  512|       |
  513|      6|	assert(data != NULL);
  ------------------
  |  Branch (513:2): [True: 0, False: 6]
  |  Branch (513:2): [True: 6, False: 0]
  ------------------
  514|       |
  515|      6|#ifdef HAVE_MMAP
  516|      6|	if (data->last_mapped_addr) {
  ------------------
  |  Branch (516:6): [True: 0, False: 6]
  ------------------
  517|      0|		munmap(data->last_mapped_addr, data->last_mapped_len);
  518|      0|		data->last_mapped_addr = NULL;
  519|      0|	}
  520|       |#elif defined(PHP_WIN32)
  521|       |	if (data->last_mapped_addr) {
  522|       |		UnmapViewOfFile(data->last_mapped_addr);
  523|       |		data->last_mapped_addr = NULL;
  524|       |	}
  525|       |	if (data->file_mapping) {
  526|       |		CloseHandle(data->file_mapping);
  527|       |		data->file_mapping = NULL;
  528|       |	}
  529|       |#endif
  530|       |
  531|      6|	if (close_handle) {
  ------------------
  |  Branch (531:6): [True: 6, False: 0]
  ------------------
  532|      6|		if (data->file) {
  ------------------
  |  Branch (532:7): [True: 0, False: 6]
  ------------------
  533|      0|			if (data->is_process_pipe) {
  ------------------
  |  Branch (533:8): [True: 0, False: 0]
  ------------------
  534|      0|				errno = 0;
  535|      0|				ret = pclose(data->file);
  536|       |
  537|      0|#ifdef HAVE_SYS_WAIT_H
  538|      0|				if (WIFEXITED(ret)) {
  ------------------
  |  Branch (538:9): [True: 0, False: 0]
  ------------------
  539|      0|					ret = WEXITSTATUS(ret);
  540|      0|				}
  541|      0|#endif
  542|      0|			} else {
  543|      0|				ret = fclose(data->file);
  544|      0|				data->file = NULL;
  545|      0|			}
  546|      6|		} else if (data->fd != -1) {
  ------------------
  |  Branch (546:14): [True: 6, False: 0]
  ------------------
  547|      6|			ret = close(data->fd);
  548|      6|			data->fd = -1;
  549|      6|		} else {
  550|      0|			return 0; /* everything should be closed already -> success */
  551|      0|		}
  552|      6|		if (data->temp_name) {
  ------------------
  |  Branch (552:7): [True: 0, False: 6]
  ------------------
  553|       |#ifdef PHP_WIN32
  554|       |			php_win32_ioutil_unlink(ZSTR_VAL(data->temp_name));
  555|       |#else
  556|      0|			unlink(ZSTR_VAL(data->temp_name));
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  557|      0|#endif
  558|       |			/* temporary streams are never persistent */
  559|      0|			zend_string_release_ex(data->temp_name, 0);
  560|      0|			data->temp_name = NULL;
  561|      0|		}
  562|      6|	} else {
  563|      0|		ret = 0;
  564|      0|		data->file = NULL;
  565|      0|		data->fd = -1;
  566|      0|	}
  567|       |
  568|      6|	pefree(data, stream->is_persistent);
  ------------------
  |  |  190|      6|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      6|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      6|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      6|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      6|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      6|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  569|       |
  570|      6|	return ret;
  571|      6|}
plain_wrapper.c:php_stdiop_stat:
  705|      8|{
  706|      8|	int ret;
  707|      8|	php_stdio_stream_data *data = (php_stdio_stream_data*) stream->abstract;
  708|       |
  709|      8|	assert(data != NULL);
  ------------------
  |  Branch (709:2): [True: 0, False: 8]
  |  Branch (709:2): [True: 8, False: 0]
  ------------------
  710|      8|	if((ret = do_fstat(data, 1)) == 0) {
  ------------------
  |  Branch (710:5): [True: 8, False: 0]
  ------------------
  711|      8|		memcpy(&ssb->sb, &data->sb, sizeof(ssb->sb));
  712|      8|	}
  713|       |
  714|      8|	return ret;
  715|      8|}
plain_wrapper.c:php_stdiop_set_option:
  718|      5|{
  719|      5|	php_stdio_stream_data *data = (php_stdio_stream_data*) stream->abstract;
  720|      5|	size_t size;
  721|      5|	int fd;
  722|      5|#ifdef O_NONBLOCK
  723|       |	/* FIXME: make this work for win32 */
  724|      5|	int flags;
  725|      5|	int oldval;
  726|      5|#endif
  727|       |
  728|      5|	PHP_STDIOP_GET_FD(fd, data);
  ------------------
  |  |  162|      5|#define PHP_STDIOP_GET_FD(anfd, data)	anfd = (data)->file ? fileno((data)->file) : (data)->fd
  |  |  ------------------
  |  |  |  Branch (162:46): [True: 0, False: 5]
  |  |  ------------------
  ------------------
  729|       |
  730|      5|	switch(option) {
  731|      0|		case PHP_STREAM_OPTION_BLOCKING:
  ------------------
  |  |  457|      0|#define PHP_STREAM_OPTION_BLOCKING	1
  ------------------
  |  Branch (731:3): [True: 0, False: 5]
  ------------------
  732|      0|			if (fd == -1)
  ------------------
  |  Branch (732:8): [True: 0, False: 0]
  ------------------
  733|      0|				return -1;
  734|      0|#ifdef O_NONBLOCK
  735|      0|			flags = fcntl(fd, F_GETFL, 0);
  736|      0|			oldval = (flags & O_NONBLOCK) ? 0 : 1;
  ------------------
  |  Branch (736:13): [True: 0, False: 0]
  ------------------
  737|      0|			if (value)
  ------------------
  |  Branch (737:8): [True: 0, False: 0]
  ------------------
  738|      0|				flags &= ~O_NONBLOCK;
  739|      0|			else
  740|      0|				flags |= O_NONBLOCK;
  741|       |
  742|      0|			if (-1 == fcntl(fd, F_SETFL, flags))
  ------------------
  |  Branch (742:8): [True: 0, False: 0]
  ------------------
  743|      0|				return -1;
  744|      0|			return oldval;
  745|       |#else
  746|       |			return -1; /* not yet implemented */
  747|       |#endif
  748|       |
  749|      0|		case PHP_STREAM_OPTION_WRITE_BUFFER:
  ------------------
  |  |  462|      0|#define PHP_STREAM_OPTION_WRITE_BUFFER	3
  ------------------
  |  Branch (749:3): [True: 0, False: 5]
  ------------------
  750|       |
  751|      0|			if (data->file == NULL) {
  ------------------
  |  Branch (751:8): [True: 0, False: 0]
  ------------------
  752|      0|				return -1;
  753|      0|			}
  754|       |
  755|      0|			if (ptrparam)
  ------------------
  |  Branch (755:8): [True: 0, False: 0]
  ------------------
  756|      0|				size = *(size_t *)ptrparam;
  757|      0|			else
  758|      0|				size = BUFSIZ;
  759|       |
  760|      0|			switch(value) {
  761|      0|				case PHP_STREAM_BUFFER_NONE:
  ------------------
  |  |  464|      0|#define PHP_STREAM_BUFFER_NONE	0	/* unbuffered */
  ------------------
  |  Branch (761:5): [True: 0, False: 0]
  ------------------
  762|      0|					return setvbuf(data->file, NULL, _IONBF, 0);
  763|       |
  764|      0|				case PHP_STREAM_BUFFER_LINE:
  ------------------
  |  |  465|      0|#define PHP_STREAM_BUFFER_LINE	1	/* line buffered */
  ------------------
  |  Branch (764:5): [True: 0, False: 0]
  ------------------
  765|      0|					return setvbuf(data->file, NULL, _IOLBF, size);
  766|       |
  767|      0|				case PHP_STREAM_BUFFER_FULL:
  ------------------
  |  |  466|      0|#define PHP_STREAM_BUFFER_FULL	2	/* fully buffered */
  ------------------
  |  Branch (767:5): [True: 0, False: 0]
  ------------------
  768|      0|					return setvbuf(data->file, NULL, _IOFBF, size);
  769|       |
  770|      0|				default:
  ------------------
  |  Branch (770:5): [True: 0, False: 0]
  ------------------
  771|      0|					return -1;
  772|      0|			}
  773|      0|			break;
  774|       |
  775|      0|		case PHP_STREAM_OPTION_LOCKING:
  ------------------
  |  |  473|      0|#define PHP_STREAM_OPTION_LOCKING		6
  ------------------
  |  Branch (775:3): [True: 0, False: 5]
  ------------------
  776|      0|			if (fd == -1) {
  ------------------
  |  Branch (776:8): [True: 0, False: 0]
  ------------------
  777|      0|				return -1;
  778|      0|			}
  779|       |
  780|      0|			if ((uintptr_t) ptrparam == PHP_STREAM_LOCK_SUPPORTED) {
  ------------------
  |  |  476|      0|#define PHP_STREAM_LOCK_SUPPORTED		1
  ------------------
  |  Branch (780:8): [True: 0, False: 0]
  ------------------
  781|      0|				return 0;
  782|      0|			}
  783|       |
  784|      0|			if (!flock(fd, value)) {
  ------------------
  |  Branch (784:8): [True: 0, False: 0]
  ------------------
  785|      0|				data->lock_flag = value;
  786|      0|				return 0;
  787|      0|			} else {
  788|      0|				return -1;
  789|      0|			}
  790|      0|			break;
  791|       |
  792|      0|		case PHP_STREAM_OPTION_MMAP_API:
  ------------------
  |  |  484|      0|#define PHP_STREAM_OPTION_MMAP_API			9 /* see php_stream_mmap.h */
  ------------------
  |  Branch (792:3): [True: 0, False: 5]
  ------------------
  793|      0|#ifdef HAVE_MMAP
  794|      0|			{
  795|      0|				php_stream_mmap_range *range = (php_stream_mmap_range*)ptrparam;
  796|      0|				int prot, flags;
  797|       |
  798|      0|				switch (value) {
  ------------------
  |  Branch (798:13): [True: 0, False: 0]
  ------------------
  799|      0|					case PHP_STREAM_MMAP_SUPPORTED:
  ------------------
  |  Branch (799:6): [True: 0, False: 0]
  ------------------
  800|      0|						return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
              						return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
  |  Branch (800:14): [True: 0, False: 0]
  ------------------
  801|       |
  802|      0|					case PHP_STREAM_MMAP_MAP_RANGE:
  ------------------
  |  Branch (802:6): [True: 0, False: 0]
  ------------------
  803|      0|						if (do_fstat(data, 1) != 0) {
  ------------------
  |  Branch (803:11): [True: 0, False: 0]
  ------------------
  804|      0|							return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  805|      0|						}
  806|      0|						if (range->offset > data->sb.st_size) {
  ------------------
  |  Branch (806:11): [True: 0, False: 0]
  ------------------
  807|      0|							range->offset = data->sb.st_size;
  808|      0|						}
  809|      0|						if (range->length == 0 ||
  ------------------
  |  Branch (809:11): [True: 0, False: 0]
  ------------------
  810|      0|								range->length > data->sb.st_size - range->offset) {
  ------------------
  |  Branch (810:9): [True: 0, False: 0]
  ------------------
  811|      0|							range->length = data->sb.st_size - range->offset;
  812|      0|						}
  813|      0|						switch (range->mode) {
  814|      0|							case PHP_STREAM_MAP_MODE_READONLY:
  ------------------
  |  Branch (814:8): [True: 0, False: 0]
  ------------------
  815|      0|								prot = PROT_READ;
  816|      0|								flags = MAP_PRIVATE;
  817|      0|								break;
  818|      0|							case PHP_STREAM_MAP_MODE_READWRITE:
  ------------------
  |  Branch (818:8): [True: 0, False: 0]
  ------------------
  819|      0|								prot = PROT_READ | PROT_WRITE;
  820|      0|								flags = MAP_PRIVATE;
  821|      0|								break;
  822|      0|							case PHP_STREAM_MAP_MODE_SHARED_READONLY:
  ------------------
  |  Branch (822:8): [True: 0, False: 0]
  ------------------
  823|      0|								prot = PROT_READ;
  824|      0|								flags = MAP_SHARED;
  825|      0|								break;
  826|      0|							case PHP_STREAM_MAP_MODE_SHARED_READWRITE:
  ------------------
  |  Branch (826:8): [True: 0, False: 0]
  ------------------
  827|      0|								prot = PROT_READ | PROT_WRITE;
  828|      0|								flags = MAP_SHARED;
  829|      0|								break;
  830|      0|							default:
  ------------------
  |  Branch (830:8): [True: 0, False: 0]
  ------------------
  831|      0|								return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  832|      0|						}
  833|      0|						range->mapped = (char*)mmap(NULL, range->length, prot, flags, fd, range->offset);
  834|      0|						if (range->mapped == (char*)MAP_FAILED) {
  ------------------
  |  Branch (834:11): [True: 0, False: 0]
  ------------------
  835|      0|							range->mapped = NULL;
  836|      0|							return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  837|      0|						}
  838|       |						/* remember the mapping */
  839|      0|						data->last_mapped_addr = range->mapped;
  840|      0|						data->last_mapped_len = range->length;
  841|      0|						return PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
  842|       |
  843|      0|					case PHP_STREAM_MMAP_UNMAP:
  ------------------
  |  Branch (843:6): [True: 0, False: 0]
  ------------------
  844|      0|						if (data->last_mapped_addr) {
  ------------------
  |  Branch (844:11): [True: 0, False: 0]
  ------------------
  845|      0|							munmap(data->last_mapped_addr, data->last_mapped_len);
  846|      0|							data->last_mapped_addr = NULL;
  847|       |
  848|      0|							return PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
  849|      0|						}
  850|      0|						return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  851|      0|				}
  852|      0|			}
  853|       |#elif defined(PHP_WIN32)
  854|       |			{
  855|       |				php_stream_mmap_range *range = (php_stream_mmap_range*)ptrparam;
  856|       |				HANDLE hfile = (HANDLE)_get_osfhandle(fd);
  857|       |				DWORD prot, acc, loffs = 0, hoffs = 0, delta = 0;
  858|       |				LARGE_INTEGER file_size;
  859|       |
  860|       |				switch (value) {
  861|       |					case PHP_STREAM_MMAP_SUPPORTED:
  862|       |						return hfile == INVALID_HANDLE_VALUE ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  863|       |
  864|       |					case PHP_STREAM_MMAP_MAP_RANGE:
  865|       |						switch (range->mode) {
  866|       |							case PHP_STREAM_MAP_MODE_READONLY:
  867|       |								prot = PAGE_READONLY;
  868|       |								acc = FILE_MAP_READ;
  869|       |								break;
  870|       |							case PHP_STREAM_MAP_MODE_READWRITE:
  871|       |								prot = PAGE_READWRITE;
  872|       |								acc = FILE_MAP_READ | FILE_MAP_WRITE;
  873|       |								break;
  874|       |							case PHP_STREAM_MAP_MODE_SHARED_READONLY:
  875|       |								prot = PAGE_READONLY;
  876|       |								acc = FILE_MAP_READ;
  877|       |								/* TODO: we should assign a name for the mapping */
  878|       |								break;
  879|       |							case PHP_STREAM_MAP_MODE_SHARED_READWRITE:
  880|       |								prot = PAGE_READWRITE;
  881|       |								acc = FILE_MAP_READ | FILE_MAP_WRITE;
  882|       |								/* TODO: we should assign a name for the mapping */
  883|       |								break;
  884|       |							default:
  885|       |								return PHP_STREAM_OPTION_RETURN_ERR;
  886|       |						}
  887|       |
  888|       |						/* create a mapping capable of viewing the whole file (this costs no real resources) */
  889|       |						data->file_mapping = CreateFileMapping(hfile, NULL, prot, 0, 0, NULL);
  890|       |
  891|       |						if (data->file_mapping == NULL) {
  892|       |							return PHP_STREAM_OPTION_RETURN_ERR;
  893|       |						}
  894|       |
  895|       |						if (!GetFileSizeEx(hfile, &file_size)) {
  896|       |							CloseHandle(data->file_mapping);
  897|       |							data->file_mapping = NULL;
  898|       |							return PHP_STREAM_OPTION_RETURN_ERR;
  899|       |						}
  900|       |# if defined(_WIN64)
  901|       |						size = file_size.QuadPart;
  902|       |# else
  903|       |						if (file_size.HighPart) {
  904|       |							CloseHandle(data->file_mapping);
  905|       |							data->file_mapping = NULL;
  906|       |							return PHP_STREAM_OPTION_RETURN_ERR;
  907|       |						} else {
  908|       |							size = file_size.LowPart;
  909|       |						}
  910|       |# endif
  911|       |						if (range->offset > size) {
  912|       |							range->offset = size;
  913|       |						}
  914|       |						if (range->length == 0 || range->length > size - range->offset) {
  915|       |							range->length = size - range->offset;
  916|       |						}
  917|       |
  918|       |						/* figure out how big a chunk to map to be able to view the part that we need */
  919|       |						if (range->offset != 0) {
  920|       |							SYSTEM_INFO info;
  921|       |							DWORD gran;
  922|       |
  923|       |							GetSystemInfo(&info);
  924|       |							gran = info.dwAllocationGranularity;
  925|       |							ZEND_ASSERT(gran != 0 && (gran & (gran - 1)) == 0);
  926|       |							size_t rounded_offset = (range->offset / gran) * gran;
  927|       |							delta = range->offset - rounded_offset;
  928|       |							loffs = (DWORD)rounded_offset;
  929|       |#ifdef _WIN64
  930|       |							hoffs = (DWORD)(rounded_offset >> 32);
  931|       |#else
  932|       |							hoffs = 0;
  933|       |#endif
  934|       |						}
  935|       |
  936|       |						/* MapViewOfFile()ing zero bytes would map to the end of the file; match *nix behavior instead */
  937|       |						if (range->length + delta == 0) {
  938|       |							return PHP_STREAM_OPTION_RETURN_ERR;
  939|       |						}
  940|       |
  941|       |						data->last_mapped_addr = MapViewOfFile(data->file_mapping, acc, hoffs, loffs, range->length + delta);
  942|       |
  943|       |						if (data->last_mapped_addr) {
  944|       |							/* give them back the address of the start offset they requested */
  945|       |							range->mapped = data->last_mapped_addr + delta;
  946|       |							return PHP_STREAM_OPTION_RETURN_OK;
  947|       |						}
  948|       |
  949|       |						CloseHandle(data->file_mapping);
  950|       |						data->file_mapping = NULL;
  951|       |
  952|       |						return PHP_STREAM_OPTION_RETURN_ERR;
  953|       |
  954|       |					case PHP_STREAM_MMAP_UNMAP:
  955|       |						if (data->last_mapped_addr) {
  956|       |							UnmapViewOfFile(data->last_mapped_addr);
  957|       |							data->last_mapped_addr = NULL;
  958|       |							CloseHandle(data->file_mapping);
  959|       |							data->file_mapping = NULL;
  960|       |							return PHP_STREAM_OPTION_RETURN_OK;
  961|       |						}
  962|       |						return PHP_STREAM_OPTION_RETURN_ERR;
  963|       |
  964|       |					default:
  965|       |						return PHP_STREAM_OPTION_RETURN_ERR;
  966|       |				}
  967|       |			}
  968|       |
  969|       |#endif
  970|      0|			return PHP_STREAM_OPTION_RETURN_NOTIMPL;
  ------------------
  |  |  518|      0|#define PHP_STREAM_OPTION_RETURN_NOTIMPL	-2 /* underlying stream does not implement; streams can handle it instead */
  ------------------
  971|       |
  972|      0|		case PHP_STREAM_OPTION_SYNC_API:
  ------------------
  |  |  508|      0|#define PHP_STREAM_OPTION_SYNC_API		14
  ------------------
  |  Branch (972:3): [True: 0, False: 5]
  ------------------
  973|      0|			switch (value) {
  ------------------
  |  Branch (973:12): [True: 0, False: 0]
  ------------------
  974|      0|				case PHP_STREAM_SYNC_SUPPORTED:
  ------------------
  |  |  509|      0|#define PHP_STREAM_SYNC_SUPPORTED	0
  ------------------
  |  Branch (974:5): [True: 0, False: 0]
  ------------------
  975|      0|					return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
              					return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
  |  Branch (975:13): [True: 0, False: 0]
  ------------------
  976|      0|				case PHP_STREAM_SYNC_FSYNC:
  ------------------
  |  |  510|      0|#define PHP_STREAM_SYNC_FSYNC 1
  ------------------
  |  Branch (976:5): [True: 0, False: 0]
  ------------------
  977|      0|					return php_stdiop_sync(stream, 0) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
              					return php_stdiop_sync(stream, 0) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  |  Branch (977:13): [True: 0, False: 0]
  ------------------
  978|      0|				case PHP_STREAM_SYNC_FDSYNC:
  ------------------
  |  |  511|      0|#define PHP_STREAM_SYNC_FDSYNC 2
  ------------------
  |  Branch (978:5): [True: 0, False: 0]
  ------------------
  979|      0|					return php_stdiop_sync(stream, 1) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
              					return php_stdiop_sync(stream, 1) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  |  Branch (979:13): [True: 0, False: 0]
  ------------------
  980|      0|			}
  981|       |			/* Invalid option passed */
  982|      0|			return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  983|       |
  984|      0|		case PHP_STREAM_OPTION_TRUNCATE_API:
  ------------------
  |  |  485|      0|#define PHP_STREAM_OPTION_TRUNCATE_API		10
  ------------------
  |  Branch (984:3): [True: 0, False: 5]
  ------------------
  985|      0|			switch (value) {
  ------------------
  |  Branch (985:12): [True: 0, False: 0]
  ------------------
  986|      0|				case PHP_STREAM_TRUNCATE_SUPPORTED:
  ------------------
  |  |  487|      0|#define PHP_STREAM_TRUNCATE_SUPPORTED	0
  ------------------
  |  Branch (986:5): [True: 0, False: 0]
  ------------------
  987|      0|					return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
              					return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
  |  Branch (987:13): [True: 0, False: 0]
  ------------------
  988|       |
  989|      0|				case PHP_STREAM_TRUNCATE_SET_SIZE: {
  ------------------
  |  |  488|      0|#define PHP_STREAM_TRUNCATE_SET_SIZE	1	/* ptrparam is a pointer to a size_t */
  ------------------
  |  Branch (989:5): [True: 0, False: 0]
  ------------------
  990|      0|					ptrdiff_t new_size = *(ptrdiff_t*)ptrparam;
  991|      0|					if (new_size < 0) {
  ------------------
  |  Branch (991:10): [True: 0, False: 0]
  ------------------
  992|      0|						return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  993|      0|					}
  994|       |#ifdef PHP_WIN32
  995|       |					HANDLE h = (HANDLE) _get_osfhandle(fd);
  996|       |					if (INVALID_HANDLE_VALUE == h) {
  997|       |						return PHP_STREAM_OPTION_RETURN_ERR;
  998|       |					}
  999|       |
 1000|       |					LARGE_INTEGER sz, old_sz;
 1001|       |					sz.QuadPart = 0;
 1002|       |
 1003|       |					if (!SetFilePointerEx(h, sz, &old_sz, FILE_CURRENT)) {
 1004|       |						return PHP_STREAM_OPTION_RETURN_ERR;
 1005|       |					}
 1006|       |
 1007|       |#ifdef _WIN64
 1008|       |					sz.QuadPart = new_size;
 1009|       |#else
 1010|       |					sz.HighPart = 0;
 1011|       |					sz.LowPart = new_size;
 1012|       |#endif
 1013|       |					if (!SetFilePointerEx(h, sz, NULL, FILE_BEGIN)) {
 1014|       |						return PHP_STREAM_OPTION_RETURN_ERR;
 1015|       |					}
 1016|       |					if (0 == SetEndOfFile(h)) {
 1017|       |						return PHP_STREAM_OPTION_RETURN_ERR;
 1018|       |					}
 1019|       |					if (!SetFilePointerEx(h, old_sz, NULL, FILE_BEGIN)) {
 1020|       |						return PHP_STREAM_OPTION_RETURN_ERR;
 1021|       |					}
 1022|       |					return PHP_STREAM_OPTION_RETURN_OK;
 1023|       |#else
 1024|      0|					return ftruncate(fd, new_size) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
              					return ftruncate(fd, new_size) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
  |  Branch (1024:13): [True: 0, False: 0]
  ------------------
 1025|      0|#endif
 1026|      0|				}
 1027|      0|			}
 1028|      0|			return PHP_STREAM_OPTION_RETURN_NOTIMPL;
  ------------------
  |  |  518|      0|#define PHP_STREAM_OPTION_RETURN_NOTIMPL	-2 /* underlying stream does not implement; streams can handle it instead */
  ------------------
 1029|       |
 1030|       |#ifdef PHP_WIN32
 1031|       |		case PHP_STREAM_OPTION_PIPE_BLOCKING:
 1032|       |			data->is_pipe_blocking = value;
 1033|       |			return PHP_STREAM_OPTION_RETURN_OK;
 1034|       |#endif
 1035|      0|		case PHP_STREAM_OPTION_META_DATA_API:
  ------------------
  |  |  497|      0|#define PHP_STREAM_OPTION_META_DATA_API		11 /* ptrparam is a zval* to which to add metadata information */
  ------------------
  |  Branch (1035:3): [True: 0, False: 5]
  ------------------
 1036|      0|			if (fd == -1)
  ------------------
  |  Branch (1036:8): [True: 0, False: 0]
  ------------------
 1037|      0|				return -1;
 1038|      0|#ifdef O_NONBLOCK
 1039|      0|			flags = fcntl(fd, F_GETFL, 0);
 1040|       |
 1041|      0|			add_assoc_bool((zval*)ptrparam, "timed_out", 0);
 1042|      0|			add_assoc_bool((zval*)ptrparam, "blocked", (flags & O_NONBLOCK)? 0 : 1);
  ------------------
  |  Branch (1042:47): [True: 0, False: 0]
  ------------------
 1043|      0|			add_assoc_bool((zval*)ptrparam, "eof", stream->eof);
 1044|       |
 1045|      0|			return PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
 1046|      0|#endif
 1047|      0|			return -1;
 1048|      5|		default:
  ------------------
  |  Branch (1048:3): [True: 5, False: 0]
  ------------------
 1049|      5|			return PHP_STREAM_OPTION_RETURN_NOTIMPL;
  ------------------
  |  |  518|      5|#define PHP_STREAM_OPTION_RETURN_NOTIMPL	-2 /* underlying stream does not implement; streams can handle it instead */
  ------------------
 1050|      5|	}
 1051|      5|}
plain_wrapper.c:do_fstat:
  165|     14|{
  166|     14|	if (!d->cached_fstat || (force && !d->no_forced_fstat)) {
  ------------------
  |  Branch (166:6): [True: 6, False: 8]
  |  Branch (166:27): [True: 8, False: 0]
  |  Branch (166:36): [True: 1, False: 7]
  ------------------
  167|      7|		int fd;
  168|      7|		int r;
  169|       |
  170|      7|		PHP_STDIOP_GET_FD(fd, d);
  ------------------
  |  |  162|      7|#define PHP_STDIOP_GET_FD(anfd, data)	anfd = (data)->file ? fileno((data)->file) : (data)->fd
  |  |  ------------------
  |  |  |  Branch (162:46): [True: 0, False: 7]
  |  |  ------------------
  ------------------
  171|      7|		r = zend_fstat(fd, &d->sb);
  ------------------
  |  |   97|      7|# define zend_fstat fstat
  ------------------
  172|      7|		d->cached_fstat = r == 0;
  173|       |
  174|      7|		return r;
  175|      7|	}
  176|      7|	return 0;
  177|     14|}
plain_wrapper.c:php_plain_files_stream_opener:
 1266|     61|{
 1267|     61|	if (((options & STREAM_DISABLE_OPEN_BASEDIR) == 0) && php_check_open_basedir(path)) {
  ------------------
  |  |  610|     61|#define STREAM_DISABLE_OPEN_BASEDIR     0x00000400
  ------------------
  |  Branch (1267:6): [True: 61, False: 0]
  |  Branch (1267:56): [True: 33, False: 28]
  ------------------
 1268|     33|		return NULL;
 1269|     33|	}
 1270|       |
 1271|     28|	return php_stream_fopen_rel(path, mode, opened_path, options);
  ------------------
  |  |   62|     28|#define php_stream_fopen_rel(filename, mode, opened, options) _php_stream_fopen((filename), (mode), (opened), (options) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|     28|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|     28|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|     28|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|     28|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|     28|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 28, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|     28|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 28, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1272|     61|}
plain_wrapper.c:php_plain_files_dir_opener:
 1117|      1|{
 1118|      1|	DIR *dir = NULL;
 1119|      1|	php_stream *stream = NULL;
 1120|       |
 1121|      1|	if (options & STREAM_USE_GLOB_DIR_OPEN) {
  ------------------
  |  |  616|      1|#define STREAM_USE_GLOB_DIR_OPEN        0x00001000
  ------------------
  |  Branch (1121:6): [True: 0, False: 1]
  ------------------
 1122|      0|		return php_glob_stream_wrapper.wops->dir_opener((php_stream_wrapper*)&php_glob_stream_wrapper, path, mode, options, opened_path, context STREAMS_REL_CC);
  ------------------
  |  |   45|      0|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  ------------------
  |  |  |  |   39|      0|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   40|      0|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (41:2): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1123|      0|	}
 1124|       |
 1125|      1|	if (((options & STREAM_DISABLE_OPEN_BASEDIR) == 0) && php_check_open_basedir(path)) {
  ------------------
  |  |  610|      1|#define STREAM_DISABLE_OPEN_BASEDIR     0x00000400
  ------------------
  |  Branch (1125:6): [True: 1, False: 0]
  |  Branch (1125:56): [True: 1, False: 0]
  ------------------
 1126|      1|		return NULL;
 1127|      1|	}
 1128|       |
 1129|      0|	dir = VCWD_OPENDIR(path);
  ------------------
  |  |  336|      0|#define VCWD_OPENDIR(pathname) opendir(pathname)
  ------------------
 1130|       |
 1131|       |#ifdef PHP_WIN32
 1132|       |	if (!dir) {
 1133|       |		php_win32_docref1_from_error(GetLastError(), path);
 1134|       |	}
 1135|       |
 1136|       |	if (dir && dir->finished) {
 1137|       |		closedir(dir);
 1138|       |		dir = NULL;
 1139|       |	}
 1140|       |#endif
 1141|      0|	if (dir) {
  ------------------
  |  Branch (1141:6): [True: 0, False: 0]
  ------------------
 1142|      0|		stream = php_stream_alloc(&php_plain_files_dirstream_ops, dir, 0, mode);
  ------------------
  |  |  266|      0|#define php_stream_alloc(ops, thisptr, persistent_id, mode)	_php_stream_alloc((ops), (thisptr), (persistent_id), (mode) STREAMS_CC)
  |  |  ------------------
  |  |  |  |   44|      0|# define STREAMS_CC		, STREAMS_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|# define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               # define STREAMS_C			0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1143|      0|		if (stream == NULL)
  ------------------
  |  Branch (1143:7): [True: 0, False: 0]
  ------------------
 1144|      0|			closedir(dir);
 1145|      0|	}
 1146|       |
 1147|      0|	return stream;
 1148|      1|}

php_stream_error_state_cleanup:
  224|  33.5k|{
  225|  33.5k|	php_stream_error_state *state = &FG(stream_error_state);
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  ------------------
  226|       |
  227|  33.5k|	while (state->current_operation) {
  ------------------
  |  Branch (227:9): [True: 0, False: 33.5k]
  ------------------
  228|      0|		php_stream_error_operation *op = state->current_operation;
  229|      0|		state->operation_depth--;
  230|      0|		state->current_operation = php_stream_get_parent_operation();
  231|       |
  232|      0|		php_stream_error_entry_free(op->first_error);
  233|       |
  234|      0|		op->first_error = NULL;
  235|      0|		op->last_error = NULL;
  236|      0|		op->error_count = 0;
  237|      0|	}
  238|       |
  239|  33.5k|	php_stream_stored_error *stored = state->stored_errors;
  240|  33.5k|	while (stored) {
  ------------------
  |  Branch (240:9): [True: 0, False: 33.5k]
  ------------------
  241|      0|		php_stream_stored_error *next = stored->next;
  242|      0|		php_stream_error_entry_free(stored->first_error);
  243|      0|		efree(stored);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      0|		stored = next;
  245|      0|	}
  246|       |
  247|  33.5k|	state->stored_errors = NULL;
  248|  33.5k|	state->stored_count = 0;
  249|  33.5k|	state->operation_depth = 0;
  250|       |
  251|  33.5k|	if (state->overflow_operations) {
  ------------------
  |  Branch (251:6): [True: 0, False: 33.5k]
  ------------------
  252|      0|		efree(state->overflow_operations);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  253|       |		state->overflow_operations = NULL;
  254|      0|		state->overflow_capacity = 0;
  255|      0|	}
  256|  33.5k|}
php_stream_error_operation_begin:
  289|    722|{
  290|    722|	php_stream_error_state *state = &FG(stream_error_state);
  ------------------
  |  |  116|    722|#define FG(v) (file_globals.v)
  ------------------
  291|       |
  292|    722|	if (state->operation_depth >= PHP_STREAM_ERROR_MAX_DEPTH) {
  ------------------
  |  |   39|    722|#define PHP_STREAM_ERROR_MAX_DEPTH 1000
  ------------------
  |  Branch (292:6): [True: 0, False: 722]
  ------------------
  293|      0|		php_error_docref(NULL, E_WARNING,
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
  294|      0|				"Stream error operation depth exceeded (%u), possible infinite recursion",
  295|      0|				state->operation_depth);
  296|      0|		return NULL;
  297|      0|	}
  298|       |
  299|    722|	php_stream_error_operation *op;
  300|       |
  301|    722|	if (state->operation_depth < PHP_STREAM_ERROR_OPERATION_POOL_SIZE) {
  ------------------
  |  |   41|    722|#define PHP_STREAM_ERROR_OPERATION_POOL_SIZE 8
  ------------------
  |  Branch (301:6): [True: 722, False: 0]
  ------------------
  302|    722|		op = &state->operation_pool[state->operation_depth];
  303|    722|	} else {
  304|      0|		uint32_t overflow_index = state->operation_depth - PHP_STREAM_ERROR_OPERATION_POOL_SIZE;
  ------------------
  |  |   41|      0|#define PHP_STREAM_ERROR_OPERATION_POOL_SIZE 8
  ------------------
  305|       |
  306|      0|		if (overflow_index >= state->overflow_capacity) {
  ------------------
  |  Branch (306:7): [True: 0, False: 0]
  ------------------
  307|      0|			uint32_t new_capacity
  308|      0|					= state->overflow_capacity == 0 ? 8 : state->overflow_capacity * 2;
  ------------------
  |  Branch (308:8): [True: 0, False: 0]
  ------------------
  309|      0|			php_stream_error_operation *new_overflow = erealloc(
  ------------------
  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  310|      0|					state->overflow_operations, sizeof(php_stream_error_operation) * new_capacity);
  311|      0|			state->overflow_operations = new_overflow;
  312|      0|			state->overflow_capacity = new_capacity;
  313|      0|		}
  314|       |
  315|      0|		op = &state->overflow_operations[overflow_index];
  316|      0|	}
  317|       |
  318|    722|	op->first_error = NULL;
  319|    722|	op->last_error = NULL;
  320|    722|	op->error_count = 0;
  321|       |
  322|    722|	state->current_operation = op;
  323|    722|	state->operation_depth++;
  324|       |
  325|    722|	return op;
  326|    722|}
php_stream_error_operation_end:
  444|    722|{
  445|    722|	php_stream_error_state *state = &FG(stream_error_state);
  ------------------
  |  |  116|    722|#define FG(v) (file_globals.v)
  ------------------
  446|    722|	php_stream_error_operation *op = state->current_operation;
  447|       |
  448|    722|	if (!op) {
  ------------------
  |  Branch (448:6): [True: 0, False: 722]
  ------------------
  449|      0|		return;
  450|      0|	}
  451|       |
  452|    722|	state->operation_depth--;
  453|    722|	state->current_operation = php_stream_get_parent_operation();
  454|       |
  455|    722|	if (op->error_count > 0) {
  ------------------
  |  Branch (455:6): [True: 721, False: 1]
  ------------------
  456|    721|		if (context == NULL) {
  ------------------
  |  Branch (456:7): [True: 720, False: 1]
  ------------------
  457|    720|			context = FG(default_context);
  ------------------
  |  |  116|    720|#define FG(v) (file_globals.v)
  ------------------
  458|    720|		}
  459|       |
  460|    721|		int error_mode = php_stream_get_error_mode(context);
  461|    721|		int store_mode = php_stream_get_error_store_mode(context, error_mode);
  462|       |
  463|    721|		bool is_terminating = php_stream_has_terminating_error(op);
  464|       |
  465|    721|		php_stream_report_errors(context, op, error_mode, is_terminating);
  466|       |
  467|    721|		if (store_mode == PHP_STREAM_ERROR_STORE_NONE) {
  ------------------
  |  |   33|    721|#define PHP_STREAM_ERROR_STORE_NONE 1
  ------------------
  |  Branch (467:7): [True: 721, False: 0]
  ------------------
  468|    721|			php_stream_error_entry_free(op->first_error);
  469|    721|			op->first_error = NULL;
  470|    721|		} else {
  471|      0|			php_stream_error_entry *entry = op->first_error;
  472|      0|			php_stream_error_entry *prev = NULL;
  473|      0|			php_stream_error_entry *to_store_first = NULL;
  474|      0|			php_stream_error_entry *to_store_last = NULL;
  475|      0|			uint32_t to_store_count = 0;
  476|      0|			php_stream_error_entry *remaining_first = NULL;
  477|       |
  478|      0|			while (entry) {
  ------------------
  |  Branch (478:11): [True: 0, False: 0]
  ------------------
  479|      0|				php_stream_error_entry *next = entry->next;
  480|      0|				bool should_store = false;
  481|       |
  482|      0|				if (store_mode == PHP_STREAM_ERROR_STORE_ALL) {
  ------------------
  |  |   36|      0|#define PHP_STREAM_ERROR_STORE_ALL 4
  ------------------
  |  Branch (482:9): [True: 0, False: 0]
  ------------------
  483|      0|					should_store = true;
  484|      0|				} else if (store_mode == PHP_STREAM_ERROR_STORE_NON_TERM && !entry->terminating) {
  ------------------
  |  |   34|      0|#define PHP_STREAM_ERROR_STORE_NON_TERM 2
  ------------------
  |  Branch (484:16): [True: 0, False: 0]
  |  Branch (484:65): [True: 0, False: 0]
  ------------------
  485|      0|					should_store = true;
  486|      0|				} else if (store_mode == PHP_STREAM_ERROR_STORE_TERMINAL && entry->terminating) {
  ------------------
  |  |   35|      0|#define PHP_STREAM_ERROR_STORE_TERMINAL 3
  ------------------
  |  Branch (486:16): [True: 0, False: 0]
  |  Branch (486:65): [True: 0, False: 0]
  ------------------
  487|      0|					should_store = true;
  488|      0|				}
  489|       |
  490|      0|				if (should_store) {
  ------------------
  |  Branch (490:9): [True: 0, False: 0]
  ------------------
  491|      0|					entry->next = NULL;
  492|      0|					if (to_store_last) {
  ------------------
  |  Branch (492:10): [True: 0, False: 0]
  ------------------
  493|      0|						to_store_last->next = entry;
  494|      0|					} else {
  495|      0|						to_store_first = entry;
  496|      0|					}
  497|      0|					to_store_last = entry;
  498|      0|					to_store_count++;
  499|      0|				} else {
  500|      0|					entry->next = NULL;
  501|      0|					if (prev) {
  ------------------
  |  Branch (501:10): [True: 0, False: 0]
  ------------------
  502|      0|						prev->next = entry;
  503|      0|					} else {
  504|      0|						remaining_first = entry;
  505|      0|					}
  506|      0|					prev = entry;
  507|      0|				}
  508|       |
  509|      0|				entry = next;
  510|      0|			}
  511|       |
  512|      0|			if (to_store_first) {
  ------------------
  |  Branch (512:8): [True: 0, False: 0]
  ------------------
  513|      0|				php_stream_stored_error *stored = emalloc(sizeof(php_stream_stored_error));
  ------------------
  |  |  150|      0|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  514|      0|				stored->first_error = to_store_first;
  515|      0|				stored->error_count = to_store_count;
  516|      0|				stored->next = state->stored_errors;
  517|       |
  518|      0|				state->stored_errors = stored;
  519|      0|				state->stored_count++;
  520|      0|			}
  521|       |
  522|      0|			if (remaining_first) {
  ------------------
  |  Branch (522:8): [True: 0, False: 0]
  ------------------
  523|      0|				php_stream_error_entry_free(remaining_first);
  524|      0|			}
  525|       |
  526|      0|			op->first_error = NULL;
  527|      0|		}
  528|    721|	}
  529|       |
  530|    722|	op->first_error = NULL;
  531|       |	op->last_error = NULL;
  532|    722|	op->error_count = 0;
  533|    722|}
php_stream_wrapper_error:
  613|      3|{
  614|      3|	if (!(options & REPORT_ERRORS)) {
  ------------------
  |  |  583|      3|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (614:6): [True: 1, False: 2]
  ------------------
  615|      1|		return;
  616|      1|	}
  617|       |
  618|      2|	va_list args;
  619|      2|	va_start(args, fmt);
  620|      2|	zend_string *message = vstrpprintf(0, fmt, args);
  ------------------
  |  |   30|      2|#define vstrpprintf zend_vstrpprintf
  ------------------
  621|      2|	va_end(args);
  622|       |
  623|      2|	const char *wrapper_name = PHP_STREAM_ERROR_WRAPPER_NAME(wrapper);
  ------------------
  |  |   71|      2|	(_wrapper ? _wrapper->wops->label : PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME)
  |  |  ------------------
  |  |  |  |   69|      0|#define PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME ":na"
  |  |  ------------------
  |  |  |  Branch (71:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  624|       |
  625|      2|	php_stream_wrapper_error_internal(
  626|       |			wrapper_name, context, docref, options, severity, terminating, code, NULL, message);
  627|      2|}
php_stream_wrapper_log_error:
  761|    662|{
  762|    662|	va_list args;
  763|    662|	va_start(args, fmt);
  764|    662|	php_stream_wrapper_log_error_internal(
  765|    662|			wrapper, context, options, severity, terminating, code, NULL, fmt, args);
  766|       |	va_end(args);
  767|    662|}
php_stream_display_wrapper_name_errors:
  793|    721|{
  794|    721|	char *msg;
  795|    721|	char errstr[256];
  796|    721|	int free_msg = 0;
  797|       |
  798|    721|	if (EG(exception)) {
  ------------------
  |  |   45|    721|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 2, False: 719]
  |  |  ------------------
  ------------------
  799|      2|		return;
  800|      2|	}
  801|       |
  802|    719|	char *tmp = estrdup(path);
  ------------------
  |  |  163|    719|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    719|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    719|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    719|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    719|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  803|    719|	if (strcmp(wrapper_name, PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME)) {
  ------------------
  |  |   69|    719|#define PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME ":na"
  ------------------
  |  Branch (803:6): [True: 719, False: 0]
  ------------------
  804|    719|		zend_llist *err_list = php_stream_get_wrapper_errors_list(wrapper_name);
  805|    719|		if (err_list) {
  ------------------
  |  Branch (805:7): [True: 662, False: 57]
  ------------------
  806|    662|			size_t l = 0;
  807|    662|			int brlen;
  808|    662|			int i;
  809|    662|			int count = (int) zend_llist_count(err_list);
  810|    662|			const char *br;
  811|    662|			php_stream_error_entry **err_entry_p;
  812|    662|			zend_llist_position pos;
  813|       |
  814|    662|			if (PG(html_errors)) {
  ------------------
  |  |   29|    662|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 662]
  |  |  ------------------
  ------------------
  815|      0|				brlen = 7;
  816|      0|				br = "<br />\n";
  817|    662|			} else {
  818|    662|				brlen = 1;
  819|    662|				br = "\n";
  820|    662|			}
  821|       |
  822|  1.32k|			for (err_entry_p = zend_llist_get_first_ex(err_list, &pos), i = 0; err_entry_p;
  ------------------
  |  Branch (822:71): [True: 662, False: 662]
  ------------------
  823|    662|					err_entry_p = zend_llist_get_next_ex(err_list, &pos), i++) {
  824|    662|				l += ZSTR_LEN((*err_entry_p)->message);
  ------------------
  |  |   68|    662|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  825|    662|				if (i < count - 1) {
  ------------------
  |  Branch (825:9): [True: 0, False: 662]
  ------------------
  826|      0|					l += brlen;
  827|      0|				}
  828|    662|			}
  829|    662|			msg = emalloc(l + 1);
  ------------------
  |  |  150|    662|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  830|    662|			msg[0] = '\0';
  831|  1.32k|			for (err_entry_p = zend_llist_get_first_ex(err_list, &pos), i = 0; err_entry_p;
  ------------------
  |  Branch (831:71): [True: 662, False: 662]
  ------------------
  832|    662|					err_entry_p = zend_llist_get_next_ex(err_list, &pos), i++) {
  833|    662|				strcat(msg, ZSTR_VAL((*err_entry_p)->message));
  ------------------
  |  |   67|    662|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  834|    662|				if (i < count - 1) {
  ------------------
  |  Branch (834:9): [True: 0, False: 662]
  ------------------
  835|      0|					strcat(msg, br);
  836|      0|				}
  837|    662|			}
  838|       |
  839|    662|			free_msg = 1;
  840|    662|		} else {
  841|     57|			if (!strcmp(wrapper_name, php_plain_files_wrapper.wops->label)) {
  ------------------
  |  Branch (841:8): [True: 56, False: 1]
  ------------------
  842|     56|				msg = php_socket_strerror_s(errno, errstr, sizeof(errstr));
  ------------------
  |  |   68|     56|#define php_socket_strerror_s php_socket_strerror
  ------------------
  843|     56|			} else {
  844|      1|				msg = "operation failed";
  845|      1|			}
  846|     57|		}
  847|    719|	} else {
  848|      0|		msg = "no suitable wrapper could be found";
  849|      0|	}
  850|       |
  851|    719|	php_strip_url_passwd(tmp);
  852|       |
  853|    719|	zend_string *message = strpprintf(0, "%s: %s", caption, msg);
  ------------------
  |  |   28|    719|#define strpprintf zend_strpprintf
  ------------------
  854|       |
  855|    719|	php_stream_wrapper_error_internal(wrapper_name, context, NULL, REPORT_ERRORS, E_WARNING, true,
  ------------------
  |  |  583|    719|#define REPORT_ERRORS                   0x00000008
  ------------------
              	php_stream_wrapper_error_internal(wrapper_name, context, NULL, REPORT_ERRORS, E_WARNING, true,
  ------------------
  |  |   23|    719|#define E_WARNING			(1<<1L)
  ------------------
  856|    719|			code, tmp, message);
  857|       |
  858|    719|	if (free_msg) {
  ------------------
  |  Branch (858:6): [True: 662, False: 57]
  ------------------
  859|       |		efree(msg);
  ------------------
  |  |  154|    662|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|    662|	}
  861|    719|}
php_stream_display_wrapper_errors:
  866|      3|{
  867|      3|	if (wrapper) {
  ------------------
  |  Branch (867:6): [True: 3, False: 0]
  ------------------
  868|      3|		const char *wrapper_name = PHP_STREAM_ERROR_WRAPPER_NAME(wrapper);
  ------------------
  |  |   71|      3|	(_wrapper ? _wrapper->wops->label : PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME)
  |  |  ------------------
  |  |  |  |   69|      0|#define PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME ":na"
  |  |  ------------------
  |  |  |  Branch (71:3): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  869|      3|		php_stream_display_wrapper_name_errors(wrapper_name, context, code, path, caption);
  870|      3|	}
  871|      3|}
php_stream_tidy_wrapper_name_error_log:
  874|  1.39k|{
  875|  1.39k|	if (FG(wrapper_logged_errors)) {
  ------------------
  |  |  116|  1.39k|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 662, False: 732]
  |  |  ------------------
  ------------------
  876|    662|		zend_hash_str_del(FG(wrapper_logged_errors), wrapper_name, strlen(wrapper_name));
  ------------------
  |  |  116|    662|#define FG(v) (file_globals.v)
  ------------------
  877|    662|	}
  878|  1.39k|}
php_stream_tidy_wrapper_error_log:
  881|      3|{
  882|      3|	if (wrapper) {
  ------------------
  |  Branch (882:6): [True: 3, False: 0]
  ------------------
  883|      3|		const char *wrapper_name = PHP_STREAM_ERROR_WRAPPER_NAME(wrapper);
  ------------------
  |  |   71|      3|	(_wrapper ? _wrapper->wops->label : PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME)
  |  |  ------------------
  |  |  |  |   69|      0|#define PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME ":na"
  |  |  ------------------
  |  |  |  Branch (71:3): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  884|      3|		php_stream_tidy_wrapper_name_error_log(wrapper_name);
  885|      3|	}
  886|      3|}
zm_startup_stream_errors:
  903|      2|{
  904|      2|	php_ce_stream_error_code = register_class_StreamErrorCode();
  905|      2|	php_ce_stream_error_mode = register_class_StreamErrorMode();
  906|      2|	php_ce_stream_error_store = register_class_StreamErrorStore();
  907|       |
  908|      2|	php_ce_stream_error = register_class_StreamError();
  909|      2|	php_ce_stream_exception = register_class_StreamException(zend_ce_exception);
  910|       |
  911|      2|	return SUCCESS;
  912|      2|}
stream_errors.c:php_stream_get_parent_operation:
  199|    722|{
  200|    722|	php_stream_error_state *state = &FG(stream_error_state);
  ------------------
  |  |  116|    722|#define FG(v) (file_globals.v)
  ------------------
  201|       |
  202|    722|	if (state->operation_depth <= 1) {
  ------------------
  |  Branch (202:6): [True: 722, False: 0]
  ------------------
  203|    722|		return NULL;
  204|    722|	}
  205|       |
  206|      0|	return php_stream_get_operation_at_depth(state->operation_depth - 2);
  207|    722|}
stream_errors.c:php_stream_error_entry_free:
  212|    721|{
  213|  1.44k|	while (entry) {
  ------------------
  |  Branch (213:9): [True: 721, False: 721]
  ------------------
  214|    721|		php_stream_error_entry *next = entry->next;
  215|    721|		zend_string_release(entry->message);
  216|    721|		efree(entry->wrapper_name);
  ------------------
  |  |  154|    721|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    721|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    721|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    721|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    721|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|    721|		efree(entry->param);
  ------------------
  |  |  154|    721|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    721|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    721|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    721|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    721|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  218|       |		efree(entry);
  ------------------
  |  |  154|    721|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    721|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    721|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    721|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    721|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|    721|		entry = next;
  220|    721|	}
  221|    721|}
stream_errors.c:php_stream_get_error_mode:
  110|    721|{
  111|    721|	if (!context) {
  ------------------
  |  Branch (111:6): [True: 720, False: 1]
  ------------------
  112|    720|		return PHP_STREAM_ERROR_MODE_ERROR;
  ------------------
  |  |   27|    720|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  113|    720|	}
  114|       |
  115|      1|	zval *option = php_stream_context_get_option(context, "stream", "error_mode");
  116|      1|	if (!option) {
  ------------------
  |  Branch (116:6): [True: 1, False: 0]
  ------------------
  117|      1|		return PHP_STREAM_ERROR_MODE_ERROR;
  ------------------
  |  |   27|      1|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  118|      1|	}
  119|       |
  120|      0|	if (Z_TYPE_P(option) != IS_OBJECT
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(option) != IS_OBJECT
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (120:6): [True: 0, False: 0]
  ------------------
  121|      0|			|| !instanceof_function(Z_OBJCE_P(option), php_ce_stream_error_mode)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (121:7): [True: 0, False: 0]
  ------------------
  122|      0|		zend_type_error("stream context option 'error_mode' must be of type StreamErrorMode");
  123|      0|		return PHP_STREAM_ERROR_MODE_ERROR;
  ------------------
  |  |   27|      0|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  124|      0|	}
  125|       |
  126|      0|	switch ((zend_enum_StreamErrorMode) zend_enum_fetch_case_id(Z_OBJ_P(option))) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (126:10): [True: 0, False: 0]
  ------------------
  127|      0|		case ZEND_ENUM_StreamErrorMode_Error:
  ------------------
  |  Branch (127:3): [True: 0, False: 0]
  ------------------
  128|      0|			return PHP_STREAM_ERROR_MODE_ERROR;
  ------------------
  |  |   27|      0|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  129|      0|		case ZEND_ENUM_StreamErrorMode_Exception:
  ------------------
  |  Branch (129:3): [True: 0, False: 0]
  ------------------
  130|      0|			return PHP_STREAM_ERROR_MODE_EXCEPTION;
  ------------------
  |  |   28|      0|#define PHP_STREAM_ERROR_MODE_EXCEPTION 1
  ------------------
  131|      0|		case ZEND_ENUM_StreamErrorMode_Silent:
  ------------------
  |  Branch (131:3): [True: 0, False: 0]
  ------------------
  132|      0|			return PHP_STREAM_ERROR_MODE_SILENT;
  ------------------
  |  |   29|      0|#define PHP_STREAM_ERROR_MODE_SILENT 2
  ------------------
  133|      0|	}
  134|       |
  135|      0|	return PHP_STREAM_ERROR_MODE_ERROR;
  ------------------
  |  |   27|      0|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  136|      0|}
stream_errors.c:php_stream_get_error_store_mode:
  139|    721|{
  140|    721|	if (!context) {
  ------------------
  |  Branch (140:6): [True: 720, False: 1]
  ------------------
  141|    720|		return php_stream_auto_decide_error_store_mode(error_mode);
  142|    720|	}
  143|       |
  144|      1|	zval *option = php_stream_context_get_option(context, "stream", "error_store");
  145|      1|	if (!option) {
  ------------------
  |  Branch (145:6): [True: 1, False: 0]
  ------------------
  146|      1|		return php_stream_auto_decide_error_store_mode(error_mode);
  147|      1|	}
  148|       |
  149|      0|	if (Z_TYPE_P(option) != IS_OBJECT
  ------------------
  |  |  669|      0|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|      0|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              	if (Z_TYPE_P(option) != IS_OBJECT
  ------------------
  |  |  614|      0|#define IS_OBJECT					8
  ------------------
  |  Branch (149:6): [True: 0, False: 0]
  ------------------
  150|      0|			|| !instanceof_function(Z_OBJCE_P(option), php_ce_stream_error_store)) {
  ------------------
  |  | 1012|      0|#define Z_OBJCE_P(zval_p)			Z_OBJCE(*(zval_p))
  |  |  ------------------
  |  |  |  | 1011|      0|#define Z_OBJCE(zval)				(Z_OBJ(zval)->ce)
  |  |  |  |  ------------------
  |  |  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (150:7): [True: 0, False: 0]
  ------------------
  151|      0|		zend_type_error("stream context option 'error_store' must be of type StreamErrorStore");
  152|      0|		return php_stream_auto_decide_error_store_mode(error_mode);
  153|      0|	}
  154|       |
  155|      0|	switch ((zend_enum_StreamErrorStore) zend_enum_fetch_case_id(Z_OBJ_P(option))) {
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  |  Branch (155:10): [True: 0, False: 0]
  ------------------
  156|      0|		case ZEND_ENUM_StreamErrorStore_Auto:
  ------------------
  |  Branch (156:3): [True: 0, False: 0]
  ------------------
  157|      0|			return php_stream_auto_decide_error_store_mode(error_mode);
  158|      0|		case ZEND_ENUM_StreamErrorStore_None:
  ------------------
  |  Branch (158:3): [True: 0, False: 0]
  ------------------
  159|      0|			return PHP_STREAM_ERROR_STORE_NONE;
  ------------------
  |  |   33|      0|#define PHP_STREAM_ERROR_STORE_NONE 1
  ------------------
  160|      0|		case ZEND_ENUM_StreamErrorStore_NonTerminating:
  ------------------
  |  Branch (160:3): [True: 0, False: 0]
  ------------------
  161|      0|			return PHP_STREAM_ERROR_STORE_NON_TERM;
  ------------------
  |  |   34|      0|#define PHP_STREAM_ERROR_STORE_NON_TERM 2
  ------------------
  162|      0|		case ZEND_ENUM_StreamErrorStore_Terminating:
  ------------------
  |  Branch (162:3): [True: 0, False: 0]
  ------------------
  163|      0|			return PHP_STREAM_ERROR_STORE_TERMINAL;
  ------------------
  |  |   35|      0|#define PHP_STREAM_ERROR_STORE_TERMINAL 3
  ------------------
  164|      0|		case ZEND_ENUM_StreamErrorStore_All:
  ------------------
  |  Branch (164:3): [True: 0, False: 0]
  ------------------
  165|      0|			return PHP_STREAM_ERROR_STORE_ALL;
  ------------------
  |  |   36|      0|#define PHP_STREAM_ERROR_STORE_ALL 4
  ------------------
  166|      0|	}
  167|       |
  168|      0|	return php_stream_auto_decide_error_store_mode(error_mode);
  169|      0|}
stream_errors.c:php_stream_auto_decide_error_store_mode:
   96|    721|{
   97|    721|	switch (error_mode) {
   98|    721|		case PHP_STREAM_ERROR_MODE_ERROR:
  ------------------
  |  |   27|    721|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  |  Branch (98:3): [True: 721, False: 0]
  ------------------
   99|    721|			return PHP_STREAM_ERROR_STORE_NONE;
  ------------------
  |  |   33|    721|#define PHP_STREAM_ERROR_STORE_NONE 1
  ------------------
  100|      0|		case PHP_STREAM_ERROR_MODE_EXCEPTION:
  ------------------
  |  |   28|      0|#define PHP_STREAM_ERROR_MODE_EXCEPTION 1
  ------------------
  |  Branch (100:3): [True: 0, False: 721]
  ------------------
  101|      0|			return PHP_STREAM_ERROR_STORE_NON_TERM;
  ------------------
  |  |   34|      0|#define PHP_STREAM_ERROR_STORE_NON_TERM 2
  ------------------
  102|      0|		case PHP_STREAM_ERROR_MODE_SILENT:
  ------------------
  |  |   29|      0|#define PHP_STREAM_ERROR_MODE_SILENT 2
  ------------------
  |  Branch (102:3): [True: 0, False: 721]
  ------------------
  103|      0|			return PHP_STREAM_ERROR_STORE_ALL;
  ------------------
  |  |   36|      0|#define PHP_STREAM_ERROR_STORE_ALL 4
  ------------------
  104|      0|		default:
  ------------------
  |  Branch (104:3): [True: 0, False: 721]
  ------------------
  105|      0|			return PHP_STREAM_ERROR_STORE_NONE;
  ------------------
  |  |   33|      0|#define PHP_STREAM_ERROR_STORE_NONE 1
  ------------------
  106|    721|	}
  107|    721|}
stream_errors.c:php_stream_has_terminating_error:
  174|    721|{
  175|    721|	php_stream_error_entry *entry = op->first_error;
  176|    721|	while (entry) {
  ------------------
  |  Branch (176:9): [True: 721, False: 0]
  ------------------
  177|    721|		if (entry->terminating) {
  ------------------
  |  Branch (177:7): [True: 721, False: 0]
  ------------------
  178|    721|			return true;
  179|    721|		}
  180|      0|		entry = entry->next;
  181|      0|	}
  182|      0|	return false;
  183|    721|}
stream_errors.c:php_stream_report_errors:
  399|    721|{
  400|    721|	switch (error_mode) {
  ------------------
  |  Branch (400:10): [True: 721, False: 0]
  ------------------
  401|    721|		case PHP_STREAM_ERROR_MODE_ERROR: {
  ------------------
  |  |   27|    721|#define PHP_STREAM_ERROR_MODE_ERROR 0
  ------------------
  |  Branch (401:3): [True: 721, False: 0]
  ------------------
  402|    721|			php_stream_error_entry *entry = op->first_error;
  403|  1.44k|			while (entry) {
  ------------------
  |  Branch (403:11): [True: 721, False: 721]
  ------------------
  404|    721|				if (entry->param) {
  ------------------
  |  Branch (404:9): [True: 719, False: 2]
  ------------------
  405|    719|					php_error_docref1(entry->docref, entry->param, entry->severity, "%s",
  406|    719|							ZSTR_VAL(entry->message));
  ------------------
  |  |   67|    719|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  407|    719|				} else {
  408|      2|					php_error_docref(
  409|      2|							entry->docref, entry->severity, "%s", ZSTR_VAL(entry->message));
  ------------------
  |  |   67|      2|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  410|      2|				}
  411|    721|				entry = entry->next;
  412|    721|			}
  413|    721|			break;
  414|      0|		}
  415|       |
  416|      0|		case PHP_STREAM_ERROR_MODE_EXCEPTION: {
  ------------------
  |  |   28|      0|#define PHP_STREAM_ERROR_MODE_EXCEPTION 1
  ------------------
  |  Branch (416:3): [True: 0, False: 721]
  ------------------
  417|      0|			if (is_terminating) {
  ------------------
  |  Branch (417:8): [True: 0, False: 0]
  ------------------
  418|      0|				php_stream_throw_exception_with_errors(op);
  419|      0|			}
  420|      0|			break;
  421|      0|		}
  422|       |
  423|      0|		case PHP_STREAM_ERROR_MODE_SILENT:
  ------------------
  |  |   29|      0|#define PHP_STREAM_ERROR_MODE_SILENT 2
  ------------------
  |  Branch (423:3): [True: 0, False: 721]
  ------------------
  424|      0|			break;
  425|    721|	}
  426|       |
  427|       |	/* Call user error handler if set */
  428|    721|	zval *handler
  429|    721|			= context ? php_stream_context_get_option(context, "stream", "error_handler") : NULL;
  ------------------
  |  Branch (429:6): [True: 1, False: 720]
  ------------------
  430|       |
  431|    721|	if (handler) {
  ------------------
  |  Branch (431:6): [True: 0, False: 721]
  ------------------
  432|      0|		zval errors_array;
  433|      0|		php_stream_error_create_array(&errors_array, op->first_error);
  434|       |
  435|      0|		php_stream_call_error_handler(handler, &errors_array);
  436|       |
  437|      0|		zval_ptr_dtor(&errors_array);
  438|      0|	}
  439|    721|}
stream_errors.c:php_stream_wrapper_error_internal:
  580|    721|{
  581|    721|	bool implicit_operation = (FG(stream_error_state).current_operation == NULL);
  ------------------
  |  |  116|    721|#define FG(v) (file_globals.v)
  ------------------
  582|    721|	if (implicit_operation) {
  ------------------
  |  Branch (582:6): [True: 721, False: 0]
  ------------------
  583|    721|		php_stream_error_operation_begin();
  584|    721|	}
  585|       |
  586|    721|	php_stream_error_add(code, wrapper_name, message, docref, param, severity, terminating);
  587|       |
  588|    721|	if (implicit_operation) {
  ------------------
  |  Branch (588:6): [True: 721, False: 0]
  ------------------
  589|    721|		php_stream_error_operation_end(context);
  590|    721|	}
  591|    721|}
stream_errors.c:php_stream_error_add:
  330|    721|{
  331|    721|	php_stream_error_operation *op = FG(stream_error_state).current_operation;
  ------------------
  |  |  116|    721|#define FG(v) (file_globals.v)
  ------------------
  332|    721|	ZEND_ASSERT(op != NULL);
  ------------------
  |  |  112|    721|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (332:2): [True: 0, False: 721]
  |  Branch (332:2): [True: 721, False: 0]
  ------------------
  333|       |
  334|    721|	php_stream_error_entry *entry = emalloc(sizeof(php_stream_error_entry));
  ------------------
  |  |  150|    721|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    721|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    721|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    721|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    721|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  335|    721|	entry->message = message;
  336|    721|	entry->code = code;
  337|    721|	entry->wrapper_name = wrapper_name ? estrdup(wrapper_name) : NULL;
  ------------------
  |  |  163|    721|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    721|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    721|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    721|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    721|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (337:24): [True: 721, False: 0]
  ------------------
  338|    721|	entry->param = param;
  339|    721|	entry->docref = docref ? estrdup(docref) : NULL;
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (339:18): [True: 0, False: 721]
  ------------------
  340|    721|	entry->severity = severity;
  341|    721|	entry->terminating = terminating;
  342|    721|	entry->next = NULL;
  343|       |
  344|    721|	if (op->last_error) {
  ------------------
  |  Branch (344:6): [True: 0, False: 721]
  ------------------
  345|      0|		op->last_error->next = entry;
  346|    721|	} else {
  347|    721|		op->first_error = entry;
  348|    721|	}
  349|    721|	op->last_error = entry;
  350|    721|	op->error_count++;
  351|    721|}
stream_errors.c:php_stream_wrapper_log_error_internal:
  745|    662|{
  746|    662|	zend_string *message = vstrpprintf(0, fmt, args);
  ------------------
  |  |   30|    662|#define vstrpprintf zend_vstrpprintf
  ------------------
  747|    662|	const char *wrapper_name = PHP_STREAM_ERROR_WRAPPER_NAME(wrapper);
  ------------------
  |  |   71|    662|	(_wrapper ? _wrapper->wops->label : PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME)
  |  |  ------------------
  |  |  |  |   69|      0|#define PHP_STREAM_ERROR_WRAPPER_DEFAULT_NAME ":na"
  |  |  ------------------
  |  |  |  Branch (71:3): [True: 662, False: 0]
  |  |  ------------------
  ------------------
  748|       |
  749|    662|	if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|    662|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (749:6): [True: 0, False: 662]
  ------------------
  750|      0|		php_stream_wrapper_error_internal(
  751|      0|				wrapper_name, context, NULL, options, severity, terminating, code, param, message);
  752|    662|	} else {
  753|    662|		php_stream_wrapper_log_store_error(
  754|    662|				message, code, wrapper_name, param, severity, terminating);
  755|    662|	}
  756|    662|}
stream_errors.c:php_stream_wrapper_log_store_error:
  712|    662|{
  713|    662|	char *param_copy = param ? estrdup(param) : NULL;
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (713:21): [True: 0, False: 662]
  ------------------
  714|       |
  715|    662|	php_stream_error_entry *entry = ecalloc(1, sizeof(php_stream_error_entry));
  ------------------
  |  |  157|    662|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  716|    662|	entry->message = message;
  717|    662|	entry->code = code;
  718|    662|	entry->wrapper_name = wrapper_name ? estrdup(wrapper_name) : NULL;
  ------------------
  |  |  163|    662|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (718:24): [True: 662, False: 0]
  ------------------
  719|    662|	entry->param = param_copy;
  720|    662|	entry->severity = severity;
  721|    662|	entry->terminating = terminating;
  722|       |
  723|    662|	if (!FG(wrapper_logged_errors)) {
  ------------------
  |  |  116|    662|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (723:6): [True: 2, False: 660]
  ------------------
  724|      2|		ALLOC_HASHTABLE(FG(wrapper_logged_errors));
  ------------------
  |  |  232|      2|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  725|      2|		zend_hash_init(FG(wrapper_logged_errors), 8, NULL, php_stream_error_list_dtor, 0);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
  726|      2|	}
  727|       |
  728|    662|	zend_llist *list
  729|    662|			= zend_hash_str_find_ptr(FG(wrapper_logged_errors), wrapper_name, strlen(wrapper_name));
  ------------------
  |  |  116|    662|#define FG(v) (file_globals.v)
  ------------------
  730|       |
  731|    662|	if (!list) {
  ------------------
  |  Branch (731:6): [True: 662, False: 0]
  ------------------
  732|    662|		zend_llist new_list;
  733|    662|		zend_llist_init(
  734|    662|				&new_list, sizeof(php_stream_error_entry *), php_stream_error_entry_dtor_legacy, 0);
  735|    662|		list = zend_hash_str_update_mem(FG(wrapper_logged_errors), wrapper_name,
  ------------------
  |  |  116|    662|#define FG(v) (file_globals.v)
  ------------------
  736|    662|				strlen(wrapper_name), &new_list, sizeof(new_list));
  737|    662|	}
  738|       |
  739|    662|	zend_llist_add_element(list, &entry);
  740|    662|}
stream_errors.c:php_stream_error_list_dtor:
  704|    662|{
  705|    662|	zend_llist *list = (zend_llist *) Z_PTR_P(item);
  ------------------
  |  | 1053|    662|#define Z_PTR_P(zval_p)				Z_PTR(*(zval_p))
  |  |  ------------------
  |  |  |  | 1052|    662|#define Z_PTR(zval)					(zval).value.ptr
  |  |  ------------------
  ------------------
  706|    662|	zend_llist_destroy(list);
  707|       |	efree(list);
  ------------------
  |  |  154|    662|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  708|    662|}
stream_errors.c:php_stream_error_entry_dtor_legacy:
  694|    662|{
  695|    662|	php_stream_error_entry *entry = *(php_stream_error_entry **) error;
  696|    662|	zend_string_release(entry->message);
  697|    662|	efree(entry->wrapper_name);
  ------------------
  |  |  154|    662|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  698|    662|	efree(entry->param);
  ------------------
  |  |  154|    662|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  699|    662|	efree(entry->docref);
  ------------------
  |  |  154|    662|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  700|       |	efree(entry);
  ------------------
  |  |  154|    662|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    662|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    662|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    662|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    662|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  701|    662|}
stream_errors.c:php_stream_get_wrapper_errors_list:
  782|    719|{
  783|    719|	if (!FG(wrapper_logged_errors)) {
  ------------------
  |  |  116|    719|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (783:6): [True: 57, False: 662]
  ------------------
  784|     57|		return NULL;
  785|     57|	}
  786|    662|	return (zend_llist *) zend_hash_str_find_ptr(
  787|    662|			FG(wrapper_logged_errors), wrapper_name, strlen(wrapper_name));
  ------------------
  |  |  116|    662|#define FG(v) (file_globals.v)
  ------------------
  788|    719|}

stream_errors.c:register_class_StreamErrorCode:
   16|      2|{
   17|      2|	zend_class_entry *class_entry = zend_register_internal_enum("StreamErrorCode", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
   18|       |
   19|      2|	zend_enum_add_case_cstr(class_entry, "None", NULL);
   20|       |
   21|      2|	zend_enum_add_case_cstr(class_entry, "Generic", NULL);
   22|       |
   23|      2|	zend_enum_add_case_cstr(class_entry, "ReadFailed", NULL);
   24|       |
   25|      2|	zend_enum_add_case_cstr(class_entry, "WriteFailed", NULL);
   26|       |
   27|      2|	zend_enum_add_case_cstr(class_entry, "SeekFailed", NULL);
   28|       |
   29|      2|	zend_enum_add_case_cstr(class_entry, "SeekNotSupported", NULL);
   30|       |
   31|      2|	zend_enum_add_case_cstr(class_entry, "FlushFailed", NULL);
   32|       |
   33|      2|	zend_enum_add_case_cstr(class_entry, "TruncateFailed", NULL);
   34|       |
   35|      2|	zend_enum_add_case_cstr(class_entry, "ConnectFailed", NULL);
   36|       |
   37|      2|	zend_enum_add_case_cstr(class_entry, "BindFailed", NULL);
   38|       |
   39|      2|	zend_enum_add_case_cstr(class_entry, "ListenFailed", NULL);
   40|       |
   41|      2|	zend_enum_add_case_cstr(class_entry, "NotWritable", NULL);
   42|       |
   43|      2|	zend_enum_add_case_cstr(class_entry, "NotReadable", NULL);
   44|       |
   45|      2|	zend_enum_add_case_cstr(class_entry, "Disabled", NULL);
   46|       |
   47|      2|	zend_enum_add_case_cstr(class_entry, "NotFound", NULL);
   48|       |
   49|      2|	zend_enum_add_case_cstr(class_entry, "PermissionDenied", NULL);
   50|       |
   51|      2|	zend_enum_add_case_cstr(class_entry, "AlreadyExists", NULL);
   52|       |
   53|      2|	zend_enum_add_case_cstr(class_entry, "InvalidPath", NULL);
   54|       |
   55|      2|	zend_enum_add_case_cstr(class_entry, "PathTooLong", NULL);
   56|       |
   57|      2|	zend_enum_add_case_cstr(class_entry, "OpenFailed", NULL);
   58|       |
   59|      2|	zend_enum_add_case_cstr(class_entry, "CreateFailed", NULL);
   60|       |
   61|      2|	zend_enum_add_case_cstr(class_entry, "DupFailed", NULL);
   62|       |
   63|      2|	zend_enum_add_case_cstr(class_entry, "UnlinkFailed", NULL);
   64|       |
   65|      2|	zend_enum_add_case_cstr(class_entry, "RenameFailed", NULL);
   66|       |
   67|      2|	zend_enum_add_case_cstr(class_entry, "MkdirFailed", NULL);
   68|       |
   69|      2|	zend_enum_add_case_cstr(class_entry, "RmdirFailed", NULL);
   70|       |
   71|      2|	zend_enum_add_case_cstr(class_entry, "StatFailed", NULL);
   72|       |
   73|      2|	zend_enum_add_case_cstr(class_entry, "MetaFailed", NULL);
   74|       |
   75|      2|	zend_enum_add_case_cstr(class_entry, "ChmodFailed", NULL);
   76|       |
   77|      2|	zend_enum_add_case_cstr(class_entry, "ChownFailed", NULL);
   78|       |
   79|      2|	zend_enum_add_case_cstr(class_entry, "CopyFailed", NULL);
   80|       |
   81|      2|	zend_enum_add_case_cstr(class_entry, "TouchFailed", NULL);
   82|       |
   83|      2|	zend_enum_add_case_cstr(class_entry, "InvalidMode", NULL);
   84|       |
   85|      2|	zend_enum_add_case_cstr(class_entry, "InvalidMeta", NULL);
   86|       |
   87|      2|	zend_enum_add_case_cstr(class_entry, "ModeNotSupported", NULL);
   88|       |
   89|      2|	zend_enum_add_case_cstr(class_entry, "Readonly", NULL);
   90|       |
   91|      2|	zend_enum_add_case_cstr(class_entry, "RecursionDetected", NULL);
   92|       |
   93|      2|	zend_enum_add_case_cstr(class_entry, "NotImplemented", NULL);
   94|       |
   95|      2|	zend_enum_add_case_cstr(class_entry, "NoOpener", NULL);
   96|       |
   97|      2|	zend_enum_add_case_cstr(class_entry, "PersistentNotSupported", NULL);
   98|       |
   99|      2|	zend_enum_add_case_cstr(class_entry, "WrapperNotFound", NULL);
  100|       |
  101|      2|	zend_enum_add_case_cstr(class_entry, "WrapperDisabled", NULL);
  102|       |
  103|      2|	zend_enum_add_case_cstr(class_entry, "ProtocolUnsupported", NULL);
  104|       |
  105|      2|	zend_enum_add_case_cstr(class_entry, "WrapperRegistrationFailed", NULL);
  106|       |
  107|      2|	zend_enum_add_case_cstr(class_entry, "WrapperUnregistrationFailed", NULL);
  108|       |
  109|      2|	zend_enum_add_case_cstr(class_entry, "WrapperRestorationFailed", NULL);
  110|       |
  111|      2|	zend_enum_add_case_cstr(class_entry, "FilterNotFound", NULL);
  112|       |
  113|      2|	zend_enum_add_case_cstr(class_entry, "FilterFailed", NULL);
  114|       |
  115|      2|	zend_enum_add_case_cstr(class_entry, "CastFailed", NULL);
  116|       |
  117|      2|	zend_enum_add_case_cstr(class_entry, "CastNotSupported", NULL);
  118|       |
  119|      2|	zend_enum_add_case_cstr(class_entry, "MakeSeekableFailed", NULL);
  120|       |
  121|      2|	zend_enum_add_case_cstr(class_entry, "BufferedDataLost", NULL);
  122|       |
  123|      2|	zend_enum_add_case_cstr(class_entry, "NetworkSendFailed", NULL);
  124|       |
  125|      2|	zend_enum_add_case_cstr(class_entry, "NetworkRecvFailed", NULL);
  126|       |
  127|      2|	zend_enum_add_case_cstr(class_entry, "SslNotSupported", NULL);
  128|       |
  129|      2|	zend_enum_add_case_cstr(class_entry, "ResumptionFailed", NULL);
  130|       |
  131|      2|	zend_enum_add_case_cstr(class_entry, "SocketPathTooLong", NULL);
  132|       |
  133|      2|	zend_enum_add_case_cstr(class_entry, "OobNotSupported", NULL);
  134|       |
  135|      2|	zend_enum_add_case_cstr(class_entry, "ProtocolError", NULL);
  136|       |
  137|      2|	zend_enum_add_case_cstr(class_entry, "InvalidUrl", NULL);
  138|       |
  139|      2|	zend_enum_add_case_cstr(class_entry, "InvalidResponse", NULL);
  140|       |
  141|      2|	zend_enum_add_case_cstr(class_entry, "InvalidHeader", NULL);
  142|       |
  143|      2|	zend_enum_add_case_cstr(class_entry, "InvalidParam", NULL);
  144|       |
  145|      2|	zend_enum_add_case_cstr(class_entry, "RedirectLimit", NULL);
  146|       |
  147|      2|	zend_enum_add_case_cstr(class_entry, "AuthFailed", NULL);
  148|       |
  149|      2|	zend_enum_add_case_cstr(class_entry, "ArchivingFailed", NULL);
  150|       |
  151|      2|	zend_enum_add_case_cstr(class_entry, "EncodingFailed", NULL);
  152|       |
  153|      2|	zend_enum_add_case_cstr(class_entry, "DecodingFailed", NULL);
  154|       |
  155|      2|	zend_enum_add_case_cstr(class_entry, "InvalidFormat", NULL);
  156|       |
  157|      2|	zend_enum_add_case_cstr(class_entry, "AllocationFailed", NULL);
  158|       |
  159|      2|	zend_enum_add_case_cstr(class_entry, "TemporaryFileFailed", NULL);
  160|       |
  161|      2|	zend_enum_add_case_cstr(class_entry, "LockFailed", NULL);
  162|       |
  163|      2|	zend_enum_add_case_cstr(class_entry, "LockNotSupported", NULL);
  164|       |
  165|      2|	zend_enum_add_case_cstr(class_entry, "UserspaceNotImplemented", NULL);
  166|       |
  167|      2|	zend_enum_add_case_cstr(class_entry, "UserspaceInvalidReturn", NULL);
  168|       |
  169|      2|	zend_enum_add_case_cstr(class_entry, "UserspaceCallFailed", NULL);
  170|       |
  171|      2|	return class_entry;
  172|      2|}
stream_errors.c:register_class_StreamErrorMode:
  175|      2|{
  176|      2|	zend_class_entry *class_entry = zend_register_internal_enum("StreamErrorMode", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  177|       |
  178|      2|	zend_enum_add_case_cstr(class_entry, "Error", NULL);
  179|       |
  180|      2|	zend_enum_add_case_cstr(class_entry, "Exception", NULL);
  181|       |
  182|      2|	zend_enum_add_case_cstr(class_entry, "Silent", NULL);
  183|       |
  184|      2|	return class_entry;
  185|      2|}
stream_errors.c:register_class_StreamErrorStore:
  188|      2|{
  189|      2|	zend_class_entry *class_entry = zend_register_internal_enum("StreamErrorStore", IS_UNDEF, NULL);
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  190|       |
  191|      2|	zend_enum_add_case_cstr(class_entry, "Auto", NULL);
  192|       |
  193|      2|	zend_enum_add_case_cstr(class_entry, "None", NULL);
  194|       |
  195|      2|	zend_enum_add_case_cstr(class_entry, "NonTerminating", NULL);
  196|       |
  197|      2|	zend_enum_add_case_cstr(class_entry, "Terminating", NULL);
  198|       |
  199|      2|	zend_enum_add_case_cstr(class_entry, "All", NULL);
  200|       |
  201|      2|	return class_entry;
  202|      2|}
stream_errors.c:register_class_StreamError:
  205|      2|{
  206|      2|	zend_class_entry ce, *class_entry;
  207|       |
  208|      2|	INIT_CLASS_ENTRY(ce, "StreamError", NULL);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  209|      2|	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  230|      2|#define ZEND_ACC_FINAL                   (1 <<  5) /*  X  |  X  |  X  |  X  */
  ------------------
              	class_entry = zend_register_internal_class_with_flags(&ce, NULL, ZEND_ACC_FINAL|ZEND_ACC_READONLY_CLASS);
  ------------------
  |  |  311|      2|#define ZEND_ACC_READONLY_CLASS          (1 << 16) /*  X  |     |     |     */
  ------------------
  210|       |
  211|      2|	zval property_code_default_value;
  212|      2|	ZVAL_UNDEF(&property_code_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  213|      2|	zend_string *property_code_class_StreamErrorCode = zend_string_init("StreamErrorCode", sizeof("StreamErrorCode")-1, 1);
  214|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_code_class_StreamErrorCode, 0, 0));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_code_class_StreamErrorCode, 0, 0));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_CODE), &property_code_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_code_class_StreamErrorCode, 0, 0));
  ------------------
  |  |  310|      2|	ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
  |  |  ------------------
  |  |  |  |  297|      2|	_ZEND_TYPE_PREFIX { (void *) (ptr), \
  |  |  |  |  298|      2|		(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }
  |  |  |  |  ------------------
  |  |  |  |  |  |  149|      0|#define _ZEND_TYPE_NULLABLE_BIT 0x2u
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (298:18): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|       |
  216|      2|	zval property_message_default_value;
  217|      2|	ZVAL_UNDEF(&property_message_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  218|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_MESSAGE), &property_message_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  219|       |
  220|      2|	zval property_wrapperName_default_value;
  221|      2|	ZVAL_UNDEF(&property_wrapperName_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  222|      2|	zend_string *property_wrapperName_name = zend_string_init("wrapperName", sizeof("wrapperName") - 1, true);
  223|      2|	zend_declare_typed_property(class_entry, property_wrapperName_name, &property_wrapperName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_wrapperName_name, &property_wrapperName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_wrapperName_name, &property_wrapperName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  224|      2|	zend_string_release_ex(property_wrapperName_name, true);
  225|       |
  226|      2|	zval property_severity_default_value;
  227|      2|	ZVAL_UNDEF(&property_severity_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  228|      2|	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SEVERITY), &property_severity_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SEVERITY), &property_severity_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_SEVERITY), &property_severity_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  229|       |
  230|      2|	zval property_terminating_default_value;
  231|      2|	ZVAL_UNDEF(&property_terminating_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  232|      2|	zend_string *property_terminating_name = zend_string_init("terminating", sizeof("terminating") - 1, true);
  233|      2|	zend_declare_typed_property(class_entry, property_terminating_name, &property_terminating_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_terminating_name, &property_terminating_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_terminating_name, &property_terminating_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  234|      2|	zend_string_release_ex(property_terminating_name, true);
  235|       |
  236|      2|	zval property_param_default_value;
  237|      2|	ZVAL_UNDEF(&property_param_default_value);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  238|      2|	zend_string *property_param_name = zend_string_init("param", sizeof("param") - 1, true);
  239|      2|	zend_declare_typed_property(class_entry, property_param_name, &property_param_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  219|      2|#define ZEND_ACC_PUBLIC                  (1 <<  0) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_param_name, &property_param_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  237|      2|#define ZEND_ACC_READONLY                (1 <<  7) /*     |     |  X  |     */
  ------------------
              	zend_declare_typed_property(class_entry, property_param_name, &property_param_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  240|      2|	zend_string_release_ex(property_param_name, true);
  241|       |
  242|      2|	return class_entry;
  243|      2|}
stream_errors.c:register_class_StreamException:
  246|      2|{
  247|      2|	zend_class_entry ce, *class_entry;
  248|       |
  249|      2|	INIT_CLASS_ENTRY(ce, "StreamException", class_StreamException_methods);
  ------------------
  |  |  282|      2|	INIT_CLASS_ENTRY_EX(class_container, class_name, strlen(class_name), functions)
  |  |  ------------------
  |  |  |  |  285|      2|	{															\
  |  |  |  |  286|      2|		memset(&class_container, 0, sizeof(zend_class_entry)); \
  |  |  |  |  287|      2|		class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \
  |  |  |  |  288|      2|		class_container.default_object_handlers = &std_object_handlers;	\
  |  |  |  |  289|      2|		class_container.info.internal.builtin_functions = functions;	\
  |  |  |  |  290|      2|	}
  |  |  ------------------
  ------------------
  250|      2|	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_Exception, 0);
  251|       |
  252|      2|	zval property_errors_default_value;
  253|      2|	ZVAL_EMPTY_ARRAY(&property_errors_default_value);
  ------------------
  |  |   89|      2|#define ZVAL_EMPTY_ARRAY(z) do {						\
  |  |   90|      2|		zval *__z = (z);								\
  |  |   91|      2|		Z_ARR_P(__z) = (zend_array*)&zend_empty_array;	\
  |  |  ------------------
  |  |  |  |  994|      2|#define Z_ARR_P(zval_p)				Z_ARR(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      2|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      2|		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_ARRAY; \
  |  |  ------------------
  |  |  |  |  613|      2|#define IS_ARRAY					7
  |  |  ------------------
  |  |   93|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (93:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  254|      2|	zend_string *property_errors_name = zend_string_init("errors", sizeof("errors") - 1, true);
  255|      2|	zend_declare_typed_property(class_entry, property_errors_name, &property_errors_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  221|      2|#define ZEND_ACC_PRIVATE                 (1 <<  2) /*     |  X  |  X  |  X  */
  ------------------
              	zend_declare_typed_property(class_entry, property_errors_name, &property_errors_default_value, ZEND_ACC_PRIVATE, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ARRAY));
  ------------------
  |  |  290|      2|	_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
  ------------------
  256|      2|	zend_string_release_ex(property_errors_name, true);
  257|       |
  258|      2|	return class_entry;
  259|      2|}

_php_stream_get_url_stream_wrappers_hash:
   57|      2|{
   58|      2|	return (FG(stream_wrappers) ? FG(stream_wrappers) : &url_stream_wrappers_hash);
  ------------------
  |  |  116|      2|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 0, False: 2]
  |  |  ------------------
  ------------------
              	return (FG(stream_wrappers) ? FG(stream_wrappers) : &url_stream_wrappers_hash);
  ------------------
  |  |  116|      0|#define FG(v) (file_globals.v)
  ------------------
   59|      2|}
php_stream_get_url_stream_wrappers_hash_global:
   62|      2|{
   63|      2|	return &url_stream_wrappers_hash;
   64|      2|}
zm_deactivate_streams:
   92|  33.5k|{
   93|  33.5k|	zval *el;
   94|       |
   95|  33.5k|	ZEND_HASH_FOREACH_VAL(&EG(persistent_list), el) {
  ------------------
  |  | 1117|  33.5k|	_ZEND_HASH_FOREACH_VAL(ht); \
  |  |  ------------------
  |  |  |  | 1028|  33.5k|#define _ZEND_HASH_FOREACH_VAL(_ht) do { \
  |  |  |  | 1029|  33.5k|		const HashTable *__ht = (_ht); \
  |  |  |  | 1030|  33.5k|		uint32_t _count = __ht->nNumUsed; \
  |  |  |  | 1031|  33.5k|		size_t _size = ZEND_HASH_ELEMENT_SIZE(__ht); \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1013|  33.5k|	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   52|  33.5k|#define HT_FLAGS(ht) (ht)->u.flags
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|  33.5k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               	(sizeof(zval) + (~HT_FLAGS(__ht) & HASH_FLAG_PACKED) * ((sizeof(Bucket)-sizeof(zval))/HASH_FLAG_PACKED))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   43|  33.5k|#define HASH_FLAG_PACKED           (1<<2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1032|  33.5k|		zval *_z = __ht->arPacked; \
  |  |  |  | 1033|  33.5k|		for (; _count > 0; _z = ZEND_HASH_NEXT_ELEMENT(_z, _size), _count--) { \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1023|      0|	((zval*)(((char*)(_el)) + (_size)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1033:10): [True: 0, False: 33.5k]
  |  |  |  |  ------------------
  |  |  |  | 1034|      0|			if (UNEXPECTED(Z_TYPE_P(_z) == IS_UNDEF)) continue;
  |  |  |  |  ------------------
  |  |  |  |  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1118|      0|	_val = _z;
  ------------------
   96|  33.5k|		forget_persistent_resource_id_numbers(el);
   97|  33.5k|	} ZEND_HASH_FOREACH_END();
  ------------------
  |  | 1101|      0|		} \
  |  | 1102|  33.5k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1102:11): [Folded, False: 33.5k]
  |  |  ------------------
  ------------------
   98|  33.5k|	return SUCCESS;
   99|  33.5k|}
_php_stream_alloc:
  145|    694|{
  146|    694|	php_stream *ret;
  147|       |
  148|    694|	ret = (php_stream*) pemalloc_rel_orig(sizeof(php_stream), persistent_id ? 1 : 0);
  ------------------
  |  |   29|  1.38k|#define pemalloc_rel_orig(size, persistent)	((persistent) ? malloc((size)) : emalloc_rel_orig((size)))
  |  |  ------------------
  |  |  |  |   20|    694|		( __php_stream_call_depth == 0 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (20:5): [True: 0, False: 694]
  |  |  |  |  ------------------
  |  |  |  |   21|    694|		? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  479|      0|# define ZEND_FILE_LINE_RELAY_CC		, ZEND_FILE_LINE_RELAY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  478|      0|# define ZEND_FILE_LINE_RELAY_C			__zend_filename, __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|    694|		: _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) )
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    694|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    694|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               		: _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) )
  |  |  |  |  ------------------
  |  |  |  |  |  |  485|    694|# define ZEND_FILE_LINE_ORIG_RELAY_CC	, ZEND_FILE_LINE_ORIG_RELAY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  484|    694|# define ZEND_FILE_LINE_ORIG_RELAY_C	__zend_orig_filename, __zend_orig_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (29:46): [True: 0, False: 694]
  |  |  |  Branch (29:47): [True: 0, False: 694]
  |  |  ------------------
  ------------------
  149|       |
  150|    694|	memset(ret, 0, sizeof(php_stream));
  151|       |
  152|    694|	ret->readfilters.stream = ret;
  153|    694|	ret->writefilters.stream = ret;
  154|       |
  155|       |#if STREAM_DEBUG
  156|       |fprintf(stderr, "stream_alloc: %s:%p persistent=%s\n", ops->label, ret, persistent_id);
  157|       |#endif
  158|       |
  159|    694|	ret->ops = ops;
  160|    694|	ret->abstract = abstract;
  161|    694|	ret->is_persistent = persistent_id ? 1 : 0;
  ------------------
  |  Branch (161:23): [True: 0, False: 694]
  ------------------
  162|    694|	ret->chunk_size = FG(def_chunk_size);
  ------------------
  |  |  116|    694|#define FG(v) (file_globals.v)
  ------------------
  163|       |
  164|    694|#if ZEND_DEBUG
  165|    694|	ret->open_filename = __zend_orig_filename ? __zend_orig_filename : __zend_filename;
  ------------------
  |  Branch (165:23): [True: 694, False: 0]
  ------------------
  166|    694|	ret->open_lineno = __zend_orig_lineno ? __zend_orig_lineno : __zend_lineno;
  ------------------
  |  Branch (166:21): [True: 694, False: 0]
  ------------------
  167|    694|#endif
  168|       |
  169|    694|	if (FG(auto_detect_line_endings)) {
  ------------------
  |  |  116|    694|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 0, False: 694]
  |  |  ------------------
  ------------------
  170|      0|		ret->flags |= PHP_STREAM_FLAG_DETECT_EOL;
  ------------------
  |  |  168|      0|#define PHP_STREAM_FLAG_DETECT_EOL					0x4
  ------------------
  171|      0|	}
  172|       |
  173|    694|	if (persistent_id) {
  ------------------
  |  Branch (173:6): [True: 0, False: 694]
  ------------------
  174|      0|		if (NULL == zend_register_persistent_resource(persistent_id, strlen(persistent_id), ret, le_pstream)) {
  ------------------
  |  Branch (174:7): [True: 0, False: 0]
  ------------------
  175|      0|			pefree(ret, 1);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, Folded]
  |  |  ------------------
  ------------------
  176|      0|			return NULL;
  177|      0|		}
  178|      0|	}
  179|       |
  180|    694|	ret->res = zend_register_resource(ret, persistent_id ? le_pstream : le_stream);
  ------------------
  |  Branch (180:41): [True: 0, False: 694]
  ------------------
  181|    694|	strlcpy(ret->mode, mode, sizeof(ret->mode));
  ------------------
  |  |  149|    694|#define strlcpy php_strlcpy
  ------------------
  182|       |
  183|    694|	ret->wrapper          = NULL;
  184|    694|	ret->wrapperthis      = NULL;
  185|    694|	ZVAL_UNDEF(&ret->wrapperdata);
  ------------------
  |  | 1055|    694|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    694|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    694|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    694|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    694|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    694|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 694]
  |  |  ------------------
  ------------------
  186|    694|	ret->stdiocast        = NULL;
  187|    694|	ret->orig_path        = NULL;
  188|    694|	ret->ctx              = NULL;
  189|    694|	ret->readbuf          = NULL;
  190|    694|	ret->enclosing_stream = NULL;
  191|       |
  192|    694|	return ret;
  193|    694|}
_php_stream_free:
  232|    726|{
  233|    726|	int ret = 1;
  234|    726|	int preserve_handle = close_options & PHP_STREAM_FREE_PRESERVE_HANDLE ? 1 : 0;
  ------------------
  |  |  346|    726|#define PHP_STREAM_FREE_PRESERVE_HANDLE		4 /* tell ops->close to not close its underlying handle */
  ------------------
  |  Branch (234:24): [True: 0, False: 726]
  ------------------
  235|    726|	int release_cast = 1;
  236|    726|	php_stream_context *context;
  237|       |
  238|       |	/* During shutdown resources may be released before other resources still holding them.
  239|       |	 * When only resources are referenced this is not a problem, because they are refcounted
  240|       |	 * and will only be fully freed once the refcount drops to zero. However, if php_stream*
  241|       |	 * is held directly, we don't have this guarantee. To avoid use-after-free we ignore all
  242|       |	 * stream free operations in shutdown unless they come from the resource list destruction,
  243|       |	 * or by freeing an enclosed stream (in which case resource list destruction will not have
  244|       |	 * freed it). */
  245|    726|	if ((EG(flags) & EG_FLAGS_IN_RESOURCE_SHUTDOWN) &&
  ------------------
  |  |   45|    726|# define EG(v) (executor_globals.v)
  ------------------
              	if ((EG(flags) & EG_FLAGS_IN_RESOURCE_SHUTDOWN) &&
  ------------------
  |  |  335|    726|#define EG_FLAGS_IN_RESOURCE_SHUTDOWN	(1<<2)
  ------------------
  |  Branch (245:6): [True: 662, False: 64]
  ------------------
  246|    662|			!(close_options & (PHP_STREAM_FREE_RSRC_DTOR|PHP_STREAM_FREE_IGNORE_ENCLOSING))) {
  ------------------
  |  |  347|    662|#define PHP_STREAM_FREE_RSRC_DTOR			8 /* called from the resource list dtor */
  ------------------
              			!(close_options & (PHP_STREAM_FREE_RSRC_DTOR|PHP_STREAM_FREE_IGNORE_ENCLOSING))) {
  ------------------
  |  |  349|    662|#define PHP_STREAM_FREE_IGNORE_ENCLOSING	32 /* don't close the enclosing stream instead */
  ------------------
  |  Branch (246:4): [True: 0, False: 662]
  ------------------
  247|      0|		return 1;
  248|      0|	}
  249|       |
  250|    726|	context = PHP_STREAM_CONTEXT(stream);
  ------------------
  |  |  254|    726|	((php_stream_context*) ((stream)->ctx ? ((stream)->ctx->ptr) : NULL))
  |  |  ------------------
  |  |  |  Branch (254:26): [True: 2, False: 724]
  |  |  ------------------
  ------------------
  251|       |
  252|    726|	if ((stream->flags & PHP_STREAM_FLAG_NO_CLOSE) ||
  ------------------
  |  |  177|    726|#define PHP_STREAM_FLAG_NO_CLOSE					0x20
  ------------------
  |  Branch (252:6): [True: 0, False: 726]
  ------------------
  253|    726|			((stream->flags & PHP_STREAM_FLAG_NO_RSCR_DTOR_CLOSE) && (close_options & PHP_STREAM_FREE_RSRC_DTOR))) {
  ------------------
  |  |  188|    726|#define PHP_STREAM_FLAG_NO_RSCR_DTOR_CLOSE			0x200
  ------------------
              			((stream->flags & PHP_STREAM_FLAG_NO_RSCR_DTOR_CLOSE) && (close_options & PHP_STREAM_FREE_RSRC_DTOR))) {
  ------------------
  |  |  347|      0|#define PHP_STREAM_FREE_RSRC_DTOR			8 /* called from the resource list dtor */
  ------------------
  |  Branch (253:5): [True: 0, False: 726]
  |  Branch (253:61): [True: 0, False: 0]
  ------------------
  254|      0|		preserve_handle = 1;
  255|      0|	}
  256|       |
  257|       |#if STREAM_DEBUG
  258|       |	{
  259|       |		char out[200] = "";
  260|       |		fprintf(stderr, "stream_free: %s:%p[%s] in_free=%d opts=%s\n",
  261|       |			stream->ops->label, stream, stream->orig_path, stream->in_free, _php_stream_pretty_free_options(close_options, out));
  262|       |	}
  263|       |
  264|       |#endif
  265|       |
  266|    726|	if (stream->in_free) {
  ------------------
  |  Branch (266:6): [True: 32, False: 694]
  ------------------
  267|       |		/* hopefully called recursively from the enclosing stream; the pointer was NULLed below */
  268|     32|		if ((stream->in_free == 1) && (close_options & PHP_STREAM_FREE_IGNORE_ENCLOSING) && (stream->enclosing_stream == NULL)) {
  ------------------
  |  |  349|     32|#define PHP_STREAM_FREE_IGNORE_ENCLOSING	32 /* don't close the enclosing stream instead */
  ------------------
  |  Branch (268:7): [True: 32, False: 0]
  |  Branch (268:33): [True: 0, False: 32]
  |  Branch (268:87): [True: 0, False: 0]
  ------------------
  269|      0|			close_options |= PHP_STREAM_FREE_RSRC_DTOR; /* restore flag */
  ------------------
  |  |  347|      0|#define PHP_STREAM_FREE_RSRC_DTOR			8 /* called from the resource list dtor */
  ------------------
  270|     32|		} else {
  271|     32|			return 1; /* recursion protection */
  272|     32|		}
  273|     32|	}
  274|       |
  275|    694|	stream->in_free++;
  276|       |
  277|       |	/* force correct order on enclosing/enclosed stream destruction (only from resource
  278|       |	 * destructor as in when reverse destroying the resource list) */
  279|    694|	if ((close_options & PHP_STREAM_FREE_RSRC_DTOR) &&
  ------------------
  |  |  347|    694|#define PHP_STREAM_FREE_RSRC_DTOR			8 /* called from the resource list dtor */
  ------------------
  |  Branch (279:6): [True: 662, False: 32]
  ------------------
  280|    662|			!(close_options & PHP_STREAM_FREE_IGNORE_ENCLOSING) &&
  ------------------
  |  |  349|    662|#define PHP_STREAM_FREE_IGNORE_ENCLOSING	32 /* don't close the enclosing stream instead */
  ------------------
  |  Branch (280:4): [True: 662, False: 0]
  ------------------
  281|    662|			(close_options & (PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)) && /* always? */
  ------------------
  |  |  344|    662|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  ------------------
              			(close_options & (PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)) && /* always? */
  ------------------
  |  |  345|    662|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  ------------------
  |  Branch (281:4): [True: 662, False: 0]
  ------------------
  282|    662|			(stream->enclosing_stream != NULL)) {
  ------------------
  |  Branch (282:4): [True: 0, False: 662]
  ------------------
  283|      0|		php_stream *enclosing_stream = stream->enclosing_stream;
  284|      0|		stream->enclosing_stream = NULL;
  285|       |		/* we force PHP_STREAM_CALL_DTOR because that's from where the
  286|       |		 * enclosing stream can free this stream. */
  287|      0|		return php_stream_free(enclosing_stream,
  ------------------
  |  |  356|      0|#define php_stream_free(stream, close_options)	_php_stream_free((stream), (close_options))
  ------------------
  288|      0|			(close_options | PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_KEEP_RSRC) & ~PHP_STREAM_FREE_RSRC_DTOR);
  289|      0|	}
  290|       |
  291|       |	/* if we are releasing the stream only (and preserving the underlying handle),
  292|       |	 * we need to do things a little differently.
  293|       |	 * We are only ever called like this when the stream is cast to a FILE*
  294|       |	 * for include (or other similar) purposes.
  295|       |	 * */
  296|    694|	if (preserve_handle) {
  ------------------
  |  Branch (296:6): [True: 0, False: 694]
  ------------------
  297|      0|		if (stream->fclose_stdiocast == PHP_STREAM_FCLOSE_FOPENCOOKIE) {
  ------------------
  |  |  259|      0|#define PHP_STREAM_FCLOSE_FOPENCOOKIE 2
  ------------------
  |  Branch (297:7): [True: 0, False: 0]
  ------------------
  298|       |			/* If the stream was fopencookied, we must NOT touch anything
  299|       |			 * here, as the cookied stream relies on it all.
  300|       |			 * Instead, mark the stream as OK to auto-clean */
  301|      0|			php_stream_auto_cleanup(stream);
  ------------------
  |  |  270|      0|#define php_stream_auto_cleanup(stream)	{ (stream)->__exposed = 1; }
  ------------------
  302|      0|			stream->in_free--;
  303|      0|			return 0;
  304|      0|		}
  305|       |		/* otherwise, make sure that we don't close the FILE* from a cast */
  306|      0|		release_cast = 0;
  307|      0|	}
  308|       |
  309|       |#if STREAM_DEBUG
  310|       |fprintf(stderr, "stream_free: %s:%p[%s] preserve_handle=%d release_cast=%d remove_rsrc=%d\n",
  311|       |		stream->ops->label, stream, stream->orig_path, preserve_handle, release_cast,
  312|       |		(close_options & PHP_STREAM_FREE_RSRC_DTOR) == 0);
  313|       |#endif
  314|       |
  315|    694|	if (stream->flags & PHP_STREAM_FLAG_WAS_WRITTEN || stream->writefilters.head) {
  ------------------
  |  |  192|  1.38k|#define PHP_STREAM_FLAG_WAS_WRITTEN					0x80000000
  ------------------
  |  Branch (315:6): [True: 0, False: 694]
  |  Branch (315:53): [True: 0, False: 694]
  ------------------
  316|       |		/* make sure everything is saved */
  317|      0|		_php_stream_flush(stream, 1);
  318|      0|	}
  319|       |
  320|       |	/* If not called from the resource dtor, remove the stream from the resource list. */
  321|    694|	if ((close_options & PHP_STREAM_FREE_RSRC_DTOR) == 0 && stream->res) {
  ------------------
  |  |  347|    694|#define PHP_STREAM_FREE_RSRC_DTOR			8 /* called from the resource list dtor */
  ------------------
  |  Branch (321:6): [True: 32, False: 662]
  |  Branch (321:58): [True: 32, False: 0]
  ------------------
  322|       |		/* Close resource, but keep it in resource list */
  323|     32|		zend_list_close(stream->res);
  324|     32|		if ((close_options & PHP_STREAM_FREE_KEEP_RSRC) == 0) {
  ------------------
  |  |  350|     32|#define PHP_STREAM_FREE_KEEP_RSRC			64 /* keep associated zend_resource */
  ------------------
  |  Branch (324:7): [True: 32, False: 0]
  ------------------
  325|       |			/* Completely delete zend_resource, if not referenced */
  326|     32|			zend_list_delete(stream->res);
  327|     32|			stream->res = NULL;
  328|     32|		}
  329|     32|	}
  330|       |
  331|    694|	if (close_options & PHP_STREAM_FREE_CALL_DTOR) {
  ------------------
  |  |  344|    694|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  ------------------
  |  Branch (331:6): [True: 694, False: 0]
  ------------------
  332|    694|		if (release_cast && stream->fclose_stdiocast == PHP_STREAM_FCLOSE_FOPENCOOKIE) {
  ------------------
  |  |  259|    694|#define PHP_STREAM_FCLOSE_FOPENCOOKIE 2
  ------------------
  |  Branch (332:7): [True: 694, False: 0]
  |  Branch (332:23): [True: 0, False: 694]
  ------------------
  333|       |			/* calling fclose on an fopencookied stream will ultimately
  334|       |				call this very same function.  If we were called via fclose,
  335|       |				the cookie_closer unsets the fclose_stdiocast flags, so
  336|       |				we can be sure that we only reach here when PHP code calls
  337|       |				php_stream_free.
  338|       |				Let's let the cookie code clean it all up.
  339|       |			 */
  340|      0|			stream->in_free = 0;
  341|      0|			return fclose(stream->stdiocast);
  342|      0|		}
  343|       |
  344|    694|		ret = stream->ops->close(stream, preserve_handle ? 0 : 1);
  ------------------
  |  Branch (344:36): [True: 0, False: 694]
  ------------------
  345|    694|		stream->abstract = NULL;
  346|       |
  347|       |		/* tidy up any FILE* that might have been fdopened */
  348|    694|		if (release_cast && stream->fclose_stdiocast == PHP_STREAM_FCLOSE_FDOPEN && stream->stdiocast) {
  ------------------
  |  |  258|    726|#define PHP_STREAM_FCLOSE_FDOPEN	1
  ------------------
  |  Branch (348:7): [True: 32, False: 662]
  |  Branch (348:23): [True: 0, False: 32]
  |  Branch (348:79): [True: 0, False: 0]
  ------------------
  349|      0|			fclose(stream->stdiocast);
  350|      0|			stream->stdiocast = NULL;
  351|      0|			stream->fclose_stdiocast = PHP_STREAM_FCLOSE_NONE;
  ------------------
  |  |  257|      0|#define PHP_STREAM_FCLOSE_NONE 0
  ------------------
  352|      0|		}
  353|    694|	}
  354|       |
  355|    694|	if (close_options & PHP_STREAM_FREE_RELEASE_STREAM) {
  ------------------
  |  |  345|    694|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  ------------------
  |  Branch (355:6): [True: 32, False: 662]
  ------------------
  356|     33|		while (stream->readfilters.head) {
  ------------------
  |  Branch (356:10): [True: 1, False: 32]
  ------------------
  357|      1|			if (stream->readfilters.head->res != NULL) {
  ------------------
  |  Branch (357:8): [True: 0, False: 1]
  ------------------
  358|      0|				zend_list_close(stream->readfilters.head->res);
  359|      0|			}
  360|      1|			php_stream_filter_remove(stream->readfilters.head, 1);
  361|      1|		}
  362|     32|		while (stream->writefilters.head) {
  ------------------
  |  Branch (362:10): [True: 0, False: 32]
  ------------------
  363|      0|			if (stream->writefilters.head->res != NULL) {
  ------------------
  |  Branch (363:8): [True: 0, False: 0]
  ------------------
  364|      0|				zend_list_close(stream->writefilters.head->res);
  365|      0|			}
  366|      0|			php_stream_filter_remove(stream->writefilters.head, 1);
  367|      0|		}
  368|       |
  369|     32|		if (stream->wrapper && stream->wrapper->wops && stream->wrapper->wops->stream_closer) {
  ------------------
  |  Branch (369:7): [True: 10, False: 22]
  |  Branch (369:26): [True: 10, False: 0]
  |  Branch (369:51): [True: 4, False: 6]
  ------------------
  370|      4|			stream->wrapper->wops->stream_closer(stream->wrapper, stream);
  371|      4|			stream->wrapper = NULL;
  372|      4|		}
  373|       |
  374|     32|		if (Z_TYPE(stream->wrapperdata) != IS_UNDEF) {
  ------------------
  |  |  668|     32|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              		if (Z_TYPE(stream->wrapperdata) != IS_UNDEF) {
  ------------------
  |  |  606|     32|#define IS_UNDEF					0
  ------------------
  |  Branch (374:7): [True: 4, False: 28]
  ------------------
  375|      4|			zval_ptr_dtor(&stream->wrapperdata);
  376|      4|			ZVAL_UNDEF(&stream->wrapperdata);
  ------------------
  |  | 1055|      4|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      4|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      4|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  377|      4|		}
  378|       |
  379|     32|		if (stream->error_list) {
  ------------------
  |  Branch (379:7): [True: 0, False: 32]
  ------------------
  380|      0|			zend_llist_destroy(stream->error_list);
  381|      0|			pefree(stream->error_list, stream->is_persistent);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  382|      0|		}
  383|       |
  384|     32|		if (stream->readbuf) {
  ------------------
  |  Branch (384:7): [True: 17, False: 15]
  ------------------
  385|     17|			pefree(stream->readbuf, stream->is_persistent);
  ------------------
  |  |  190|     17|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     17|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  386|     17|			stream->readbuf = NULL;
  387|     17|		}
  388|       |
  389|     32|		if (stream->is_persistent && (close_options & PHP_STREAM_FREE_PERSISTENT)) {
  ------------------
  |  |  348|      0|#define PHP_STREAM_FREE_PERSISTENT			16 /* manually freeing a persistent connection */
  ------------------
  |  Branch (389:7): [True: 0, False: 32]
  |  Branch (389:32): [True: 0, False: 0]
  ------------------
  390|       |			/* we don't work with *stream but need its value for comparison */
  391|      0|			zend_hash_apply_with_argument(&EG(persistent_list), _php_stream_free_persistent, stream);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
  392|      0|		}
  393|       |
  394|     32|		if (stream->orig_path) {
  ------------------
  |  Branch (394:7): [True: 10, False: 22]
  ------------------
  395|     10|			pefree(stream->orig_path, stream->is_persistent);
  ------------------
  |  |  190|     10|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     10|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     10|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     10|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     10|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     10|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 10]
  |  |  ------------------
  ------------------
  396|     10|			stream->orig_path = NULL;
  397|     10|		}
  398|       |
  399|     32|		pefree(stream, stream->is_persistent);
  ------------------
  |  |  190|     32|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|     32|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     32|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     32|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     32|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     32|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 32]
  |  |  ------------------
  ------------------
  400|     32|	}
  401|       |
  402|    694|	if (context) {
  ------------------
  |  Branch (402:6): [True: 1, False: 693]
  ------------------
  403|      1|		zend_list_delete(context->res);
  404|      1|	}
  405|       |
  406|    694|	return ret;
  407|    694|}
_php_stream_fill_read_buffer:
  413|     30|{
  414|       |	/* allocate/fill the buffer */
  415|       |
  416|     30|	zend_result retval;
  417|     30|	bool old_eof = stream->eof;
  418|       |
  419|     30|	if (stream->readfilters.head) {
  ------------------
  |  Branch (419:6): [True: 1, False: 29]
  ------------------
  420|      1|		size_t to_read_now = MIN(size, stream->chunk_size);
  ------------------
  |  Branch (420:24): [True: 1, False: 0]
  ------------------
  421|      1|		char *chunk_buf;
  422|      1|		php_stream_bucket_brigade brig_in = { NULL, NULL }, brig_out = { NULL, NULL };
  423|      1|		php_stream_bucket_brigade *brig_inp = &brig_in, *brig_outp = &brig_out, *brig_swap;
  424|       |
  425|       |		/* allocate a buffer for reading chunks */
  426|      1|		chunk_buf = emalloc(stream->chunk_size);
  ------------------
  |  |  150|      1|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|       |
  428|      1|		while (!stream->eof && (stream->writepos - stream->readpos < (zend_off_t)to_read_now)) {
  ------------------
  |  Branch (428:10): [True: 1, False: 0]
  |  Branch (428:26): [True: 1, False: 0]
  ------------------
  429|      1|			ssize_t justread = 0;
  430|      1|			int flags;
  431|      1|			php_stream_bucket *bucket;
  432|      1|			php_stream_filter_status_t status = PSFS_ERR_FATAL;
  433|      1|			php_stream_filter *filter;
  434|       |
  435|       |			/* read a chunk into a bucket */
  436|      1|			justread = stream->ops->read(stream, chunk_buf, stream->chunk_size);
  437|      1|			if (justread < 0 && stream->writepos == stream->readpos) {
  ------------------
  |  Branch (437:8): [True: 0, False: 1]
  |  Branch (437:24): [True: 0, False: 0]
  ------------------
  438|      0|				efree(chunk_buf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  439|      0|				retval = FAILURE;
  440|      0|				goto out_check_eof;
  441|      1|			} else if (justread > 0) {
  ------------------
  |  Branch (441:15): [True: 0, False: 1]
  ------------------
  442|      0|				bucket = php_stream_bucket_new(stream, chunk_buf, justread, 0, 0);
  443|       |
  444|       |				/* after this call, bucket is owned by the brigade */
  445|      0|				php_stream_bucket_append(brig_inp, bucket);
  446|       |
  447|      0|				flags = stream->eof ? PSFS_FLAG_FLUSH_CLOSE : PSFS_FLAG_NORMAL;
  ------------------
  |  |   83|      0|#define PSFS_FLAG_FLUSH_CLOSE	2	/* final flush prior to closing */
  ------------------
              				flags = stream->eof ? PSFS_FLAG_FLUSH_CLOSE : PSFS_FLAG_NORMAL;
  ------------------
  |  |   81|      0|#define PSFS_FLAG_NORMAL		0	/* regular read/write */
  ------------------
  |  Branch (447:13): [True: 0, False: 0]
  ------------------
  448|      1|			} else {
  449|      1|				flags = stream->eof ? PSFS_FLAG_FLUSH_CLOSE : PSFS_FLAG_FLUSH_INC;
  ------------------
  |  |   83|      1|#define PSFS_FLAG_FLUSH_CLOSE	2	/* final flush prior to closing */
  ------------------
              				flags = stream->eof ? PSFS_FLAG_FLUSH_CLOSE : PSFS_FLAG_FLUSH_INC;
  ------------------
  |  |   82|      1|#define PSFS_FLAG_FLUSH_INC		1	/* an incremental flush */
  ------------------
  |  Branch (449:13): [True: 1, False: 0]
  ------------------
  450|      1|			}
  451|       |
  452|       |			/* wind the handle... */
  453|      1|			for (filter = stream->readfilters.head; filter; filter = filter->next) {
  ------------------
  |  Branch (453:44): [True: 1, False: 0]
  ------------------
  454|      1|				status = filter->fops->filter(stream, filter, brig_inp, brig_outp, NULL, flags);
  455|       |
  456|      1|				if (status != PSFS_PASS_ON) {
  ------------------
  |  Branch (456:9): [True: 1, False: 0]
  ------------------
  457|      1|					break;
  458|      1|				}
  459|       |
  460|       |				/* brig_out becomes brig_in.
  461|       |				 * brig_in will always be empty here, as the filter MUST attach any un-consumed buckets
  462|       |				 * to its own brigade */
  463|      0|				brig_swap = brig_inp;
  464|      0|				brig_inp = brig_outp;
  465|      0|				brig_outp = brig_swap;
  466|      0|				memset(brig_outp, 0, sizeof(*brig_outp));
  467|      0|			}
  468|       |
  469|      1|			switch (status) {
  ------------------
  |  Branch (469:12): [True: 1, False: 0]
  ------------------
  470|      0|				case PSFS_PASS_ON:
  ------------------
  |  Branch (470:5): [True: 0, False: 1]
  ------------------
  471|       |					/* we get here when the last filter in the chain has data to pass on.
  472|       |					 * in this situation, we are passing the brig_in brigade into the
  473|       |					 * stream read buffer */
  474|      0|					while (brig_inp->head) {
  ------------------
  |  Branch (474:13): [True: 0, False: 0]
  ------------------
  475|      0|						bucket = brig_inp->head;
  476|       |						/* reduce buffer memory consumption if possible, to avoid a realloc */
  477|      0|						if (stream->readbuf && stream->readbuflen - stream->writepos < bucket->buflen) {
  ------------------
  |  Branch (477:11): [True: 0, False: 0]
  |  Branch (477:30): [True: 0, False: 0]
  ------------------
  478|      0|							if (stream->writepos > stream->readpos) {
  ------------------
  |  Branch (478:12): [True: 0, False: 0]
  ------------------
  479|      0|								memmove(stream->readbuf, stream->readbuf + stream->readpos, stream->writepos - stream->readpos);
  480|      0|							}
  481|      0|							stream->writepos -= stream->readpos;
  482|      0|							stream->readpos = 0;
  483|      0|						}
  484|       |						/* grow buffer to hold this bucket */
  485|      0|						if (stream->readbuflen - stream->writepos < bucket->buflen) {
  ------------------
  |  Branch (485:11): [True: 0, False: 0]
  ------------------
  486|      0|							stream->readbuflen += bucket->buflen;
  487|      0|							stream->readbuf = perealloc(stream->readbuf, stream->readbuflen,
  ------------------
  |  |  200|      0|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|      0|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  488|      0|									stream->is_persistent);
  489|      0|						}
  490|      0|						if (bucket->buflen) {
  ------------------
  |  Branch (490:11): [True: 0, False: 0]
  ------------------
  491|      0|							memcpy(stream->readbuf + stream->writepos, bucket->buf, bucket->buflen);
  492|      0|						}
  493|      0|						stream->writepos += bucket->buflen;
  494|       |
  495|      0|						php_stream_bucket_unlink(bucket);
  496|      0|						php_stream_bucket_delref(bucket);
  497|      0|					}
  498|      0|					break;
  499|       |
  500|      0|				case PSFS_FEED_ME:
  ------------------
  |  Branch (500:5): [True: 0, False: 1]
  ------------------
  501|       |					/* when a filter needs feeding, there is no brig_out to deal with.
  502|       |					 * we simply continue the loop; if the caller needs more data,
  503|       |					 * we will read again, otherwise out job is done here */
  504|       |
  505|       |					/* Filter could have added buckets anyway, but signalled that it did not return any. Discard them. */
  506|      0|					while ((bucket = brig_outp->head)) {
  ------------------
  |  Branch (506:13): [True: 0, False: 0]
  ------------------
  507|      0|						php_stream_bucket_unlink(bucket);
  508|      0|						php_stream_bucket_delref(bucket);
  509|      0|					}
  510|      0|					break;
  511|       |
  512|      1|				case PSFS_ERR_FATAL:
  ------------------
  |  Branch (512:5): [True: 1, False: 0]
  ------------------
  513|       |					/* some fatal error. Theoretically, the stream is borked, so all
  514|       |					 * further reads should fail. */
  515|      1|					stream->eof = 1;
  516|      1|					stream->fatal_error = 1;
  517|       |					/* free all data left in brigades */
  518|      1|					while ((bucket = brig_inp->head)) {
  ------------------
  |  Branch (518:13): [True: 0, False: 1]
  ------------------
  519|       |						/* Remove unconsumed buckets from the input brigade */
  520|      0|						php_stream_bucket_unlink(bucket);
  521|      0|						php_stream_bucket_delref(bucket);
  522|      0|					}
  523|      1|					while ((bucket = brig_outp->head)) {
  ------------------
  |  Branch (523:13): [True: 0, False: 1]
  ------------------
  524|       |						/* Remove unconsumed buckets from the output brigade */
  525|      0|						php_stream_bucket_unlink(bucket);
  526|      0|						php_stream_bucket_delref(bucket);
  527|      0|					}
  528|      1|					efree(chunk_buf);
  ------------------
  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  529|      1|					retval = FAILURE;
  530|      1|					goto out_is_eof;
  531|      1|			}
  532|       |
  533|      0|			if (justread <= 0) {
  ------------------
  |  Branch (533:8): [True: 0, False: 0]
  ------------------
  534|      0|				break;
  535|      0|			}
  536|      0|		}
  537|       |
  538|      0|		efree(chunk_buf);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  539|      0|		return SUCCESS;
  540|     29|	} else {
  541|       |		/* is there enough data in the buffer ? */
  542|     29|		if (stream->writepos - stream->readpos < (zend_off_t)size) {
  ------------------
  |  Branch (542:7): [True: 29, False: 0]
  ------------------
  543|     29|			ssize_t justread = 0;
  544|       |
  545|       |			/* reduce buffer memory consumption if possible, to avoid a realloc */
  546|     29|			if (stream->readbuf && stream->readbuflen - stream->writepos < stream->chunk_size) {
  ------------------
  |  Branch (546:8): [True: 12, False: 17]
  |  Branch (546:27): [True: 12, False: 0]
  ------------------
  547|     12|				if (stream->writepos > stream->readpos) {
  ------------------
  |  Branch (547:9): [True: 0, False: 12]
  ------------------
  548|      0|					memmove(stream->readbuf, stream->readbuf + stream->readpos, stream->writepos - stream->readpos);
  549|      0|				}
  550|     12|				stream->writepos -= stream->readpos;
  551|     12|				stream->readpos = 0;
  552|     12|			}
  553|       |
  554|       |			/* grow the buffer if required
  555|       |			 * TODO: this can fail for persistent streams */
  556|     29|			if (stream->readbuflen - stream->writepos < stream->chunk_size) {
  ------------------
  |  Branch (556:8): [True: 17, False: 12]
  ------------------
  557|     17|				stream->readbuflen += stream->chunk_size;
  558|     17|				stream->readbuf = perealloc(stream->readbuf, stream->readbuflen,
  ------------------
  |  |  200|     17|#define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC):erealloc((ptr), (size)))
  |  |  ------------------
  |  |  |  |  158|     17|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     17|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     17|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     17|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     17|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (200:43): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  559|     17|						stream->is_persistent);
  560|     17|			}
  561|       |
  562|     29|			justread = stream->ops->read(stream, (char*)stream->readbuf + stream->writepos,
  563|     29|					stream->readbuflen - stream->writepos
  564|     29|					);
  565|     29|			if (justread < 0) {
  ------------------
  |  Branch (565:8): [True: 3, False: 26]
  ------------------
  566|      3|				retval = FAILURE;
  567|      3|				goto out_check_eof;
  568|      3|			}
  569|     26|			stream->writepos += justread;
  570|     26|			retval = SUCCESS;
  571|     26|			goto out_check_eof;
  572|     29|		}
  573|      0|		return SUCCESS;
  574|     29|	}
  575|       |
  576|     29|out_check_eof:
  577|     29|	if (old_eof != stream->eof) {
  ------------------
  |  Branch (577:6): [True: 13, False: 16]
  ------------------
  578|     14|out_is_eof:
  579|     14|		php_stream_notify_completed(PHP_STREAM_CONTEXT(stream));
  ------------------
  |  |  104|     28|#define php_stream_notify_completed(context) do { if ((context) && (context)->notifier) { \
  |  |  ------------------
  |  |  |  Branch (104:55): [True: 1, False: 13]
  |  |  |  Branch (104:56): [True: 1, False: 13]
  |  |  |  Branch (104:68): [True: 0, False: 1]
  |  |  |  Branch (104:69): [True: 1, False: 0]
  |  |  ------------------
  |  |  105|      0|	php_stream_notification_notify((context), PHP_STREAM_NOTIFY_COMPLETED, PHP_STREAM_NOTIFY_SEVERITY_INFO, \
  |  |  ------------------
  |  |  |  |   82|      0|#define PHP_STREAM_NOTIFY_COMPLETED		8
  |  |  ------------------
  |  |               	php_stream_notification_notify((context), PHP_STREAM_NOTIFY_COMPLETED, PHP_STREAM_NOTIFY_SEVERITY_INFO, \
  |  |  ------------------
  |  |  |  |   86|      0|#define PHP_STREAM_NOTIFY_SEVERITY_INFO	0
  |  |  ------------------
  |  |  |  Branch (105:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  106|     14|			NULL, 0, (context)->notifier->progress, (context)->notifier->progress_max, NULL); } } while(0)
  |  |  ------------------
  |  |  |  Branch (106:14): [True: 0, False: 0]
  |  |  |  Branch (106:45): [True: 0, False: 0]
  |  |  |  Branch (106:96): [Folded, False: 14]
  |  |  ------------------
  ------------------
  580|     14|	}
  581|     30|	return retval;
  582|     29|}
_php_stream_read:
  585|    349|{
  586|    349|	ssize_t toread = 0, didread = 0;
  587|       |
  588|    684|	while (size > 0) {
  ------------------
  |  Branch (588:9): [True: 354, False: 330]
  ------------------
  589|       |
  590|       |		/* take from the read buffer first.
  591|       |		 * It is possible that a buffered stream was switched to non-buffered, so we
  592|       |		 * drain the remainder of the buffer before using the "raw" read mode for
  593|       |		 * the excess */
  594|    354|		if (stream->writepos > stream->readpos) {
  ------------------
  |  Branch (594:7): [True: 0, False: 354]
  ------------------
  595|       |
  596|      0|			toread = stream->writepos - stream->readpos;
  597|      0|			if (toread > size) {
  ------------------
  |  Branch (597:8): [True: 0, False: 0]
  ------------------
  598|      0|				toread = size;
  599|      0|			}
  600|       |
  601|      0|			memcpy(buf, stream->readbuf + stream->readpos, toread);
  602|      0|			stream->readpos += toread;
  603|      0|			size -= toread;
  604|      0|			buf += toread;
  605|      0|			didread += toread;
  606|      0|			stream->has_buffered_data = 1;
  607|      0|		}
  608|       |
  609|       |		/* ignore eof here; the underlying state might have changed */
  610|    354|		if (size == 0) {
  ------------------
  |  Branch (610:7): [True: 0, False: 354]
  ------------------
  611|      0|			break;
  612|      0|		}
  613|       |
  614|    354|		if (!stream->readfilters.head && ((stream->flags & PHP_STREAM_FLAG_NO_BUFFER) || stream->chunk_size == 1)) {
  ------------------
  |  |  165|    353|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
  |  Branch (614:7): [True: 353, False: 1]
  |  Branch (614:37): [True: 348, False: 5]
  |  Branch (614:84): [True: 0, False: 5]
  ------------------
  615|    348|			toread = stream->ops->read(stream, buf, size);
  616|    348|			if (toread < 0) {
  ------------------
  |  Branch (616:8): [True: 0, False: 348]
  ------------------
  617|       |				/* Report an error if the read failed and we did not read any data
  618|       |				 * before that. Otherwise return the data we did read. */
  619|      0|				if (didread == 0) {
  ------------------
  |  Branch (619:9): [True: 0, False: 0]
  ------------------
  620|      0|					return toread;
  621|      0|				}
  622|      0|				break;
  623|      0|			}
  624|    348|		} else {
  625|      6|			if (php_stream_fill_read_buffer(stream, size) != SUCCESS) {
  ------------------
  |  |  377|      6|#define php_stream_fill_read_buffer(stream, size)	_php_stream_fill_read_buffer((stream), (size))
  ------------------
  |  Branch (625:8): [True: 4, False: 2]
  ------------------
  626|      4|				if (didread == 0) {
  ------------------
  |  Branch (626:9): [True: 4, False: 0]
  ------------------
  627|      4|					return -1;
  628|      4|				}
  629|      0|				break;
  630|      4|			}
  631|       |
  632|      2|			toread = stream->writepos - stream->readpos;
  633|      2|			if ((size_t) toread > size) {
  ------------------
  |  Branch (633:8): [True: 0, False: 2]
  ------------------
  634|      0|				toread = size;
  635|      0|			}
  636|       |
  637|      2|			if (toread > 0) {
  ------------------
  |  Branch (637:8): [True: 0, False: 2]
  ------------------
  638|      0|				memcpy(buf, stream->readbuf + stream->readpos, toread);
  639|      0|				stream->readpos += toread;
  640|      0|			}
  641|      2|		}
  642|    350|		if (toread > 0) {
  ------------------
  |  Branch (642:7): [True: 335, False: 15]
  ------------------
  643|    335|			didread += toread;
  644|    335|			buf += toread;
  645|    335|			size -= toread;
  646|    335|			stream->has_buffered_data = 1;
  647|    335|		} else {
  648|       |			/* EOF, or temporary end of data (for non-blocking mode). */
  649|     15|			break;
  650|     15|		}
  651|       |
  652|       |		/* just break anyway, to avoid greedy read for file://, php://memory, and php://temp */
  653|    335|		if ((stream->wrapper != &php_plain_files_wrapper) &&
  ------------------
  |  Branch (653:7): [True: 335, False: 0]
  ------------------
  654|    335|			(stream->ops != &php_stream_memory_ops) &&
  ------------------
  |  Branch (654:4): [True: 0, False: 335]
  ------------------
  655|      0|			(stream->ops != &php_stream_temp_ops)) {
  ------------------
  |  Branch (655:4): [True: 0, False: 0]
  ------------------
  656|      0|			break;
  657|      0|		}
  658|    335|	}
  659|       |
  660|    345|	if (didread > 0) {
  ------------------
  |  Branch (660:6): [True: 335, False: 10]
  ------------------
  661|    335|		stream->position += didread;
  662|    335|		stream->has_buffered_data = 0;
  663|    335|	}
  664|       |
  665|    345|	return didread;
  666|    349|}
_php_stream_getc:
  716|     61|{
  717|     61|	char buf;
  718|       |
  719|     61|	if (php_stream_read(stream, &buf, 1) > 0) {
  ------------------
  |  |  368|     61|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (719:6): [True: 61, False: 0]
  ------------------
  720|     61|		return buf & 0xff;
  721|     61|	}
  722|      0|	return EOF;
  723|     61|}
_php_stream_stat:
  738|      9|{
  739|      9|	memset(ssb, 0, sizeof(*ssb));
  740|       |
  741|       |	/* if the stream was wrapped, allow the wrapper to stat it */
  742|      9|	if (stream->wrapper && stream->wrapper->wops->stream_stat != NULL) {
  ------------------
  |  Branch (742:6): [True: 9, False: 0]
  |  Branch (742:25): [True: 0, False: 9]
  ------------------
  743|      0|		return stream->wrapper->wops->stream_stat(stream->wrapper, stream, ssb);
  744|      0|	}
  745|       |
  746|       |	/* if the stream doesn't directly support stat-ing, return with failure.
  747|       |	 * We could try and emulate this by casting to an FD and fstat-ing it,
  748|       |	 * but since the fd might not represent the actual underlying content
  749|       |	 * this would give bogus results. */
  750|      9|	if (stream->ops->stat == NULL) {
  ------------------
  |  Branch (750:6): [True: 0, False: 9]
  ------------------
  751|      0|		return -1;
  752|      0|	}
  753|       |
  754|      9|	return (stream->ops->stat)(stream, ssb);
  755|      9|}
php_stream_locate_eol:
  758|     36|{
  759|     36|	size_t avail;
  760|     36|	const char *eol = NULL;
  761|     36|	const char *readptr;
  762|       |
  763|     36|	if (!buf) {
  ------------------
  |  Branch (763:6): [True: 36, False: 0]
  ------------------
  764|     36|		readptr = (char*)stream->readbuf + stream->readpos;
  765|     36|		avail = stream->writepos - stream->readpos;
  766|     36|	} else {
  767|      0|		readptr = ZSTR_VAL(buf);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  768|      0|		avail = ZSTR_LEN(buf);
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  769|      0|	}
  770|       |
  771|       |	/* Look for EOL */
  772|     36|	if (stream->flags & PHP_STREAM_FLAG_DETECT_EOL) {
  ------------------
  |  |  168|     36|#define PHP_STREAM_FLAG_DETECT_EOL					0x4
  ------------------
  |  Branch (772:6): [True: 0, False: 36]
  ------------------
  773|      0|		const char *cr = memchr(readptr, '\r', avail);
  774|      0|		const char *lf = memchr(readptr, '\n', avail);
  775|       |
  776|      0|		if (cr && lf != cr + 1 && !(lf && lf < cr)) {
  ------------------
  |  Branch (776:7): [True: 0, False: 0]
  |  Branch (776:13): [True: 0, False: 0]
  |  Branch (776:31): [True: 0, False: 0]
  |  Branch (776:37): [True: 0, False: 0]
  ------------------
  777|       |			/* mac */
  778|      0|			stream->flags ^= PHP_STREAM_FLAG_DETECT_EOL;
  ------------------
  |  |  168|      0|#define PHP_STREAM_FLAG_DETECT_EOL					0x4
  ------------------
  779|      0|			stream->flags |= PHP_STREAM_FLAG_EOL_MAC;
  ------------------
  |  |  169|      0|#define PHP_STREAM_FLAG_EOL_MAC						0x8
  ------------------
  780|      0|			eol = cr;
  781|      0|		} else if ((cr && lf && cr == lf - 1) || (lf)) {
  ------------------
  |  Branch (781:15): [True: 0, False: 0]
  |  Branch (781:21): [True: 0, False: 0]
  |  Branch (781:27): [True: 0, False: 0]
  |  Branch (781:44): [True: 0, False: 0]
  ------------------
  782|       |			/* dos or unix endings */
  783|      0|			stream->flags ^= PHP_STREAM_FLAG_DETECT_EOL;
  ------------------
  |  |  168|      0|#define PHP_STREAM_FLAG_DETECT_EOL					0x4
  ------------------
  784|      0|			eol = lf;
  785|      0|		}
  786|     36|	} else if (stream->flags & PHP_STREAM_FLAG_EOL_MAC) {
  ------------------
  |  |  169|     36|#define PHP_STREAM_FLAG_EOL_MAC						0x8
  ------------------
  |  Branch (786:13): [True: 0, False: 36]
  ------------------
  787|      0|		eol = memchr(readptr, '\r', avail);
  788|     36|	} else {
  789|       |		/* unix (and dos) line endings */
  790|     36|		eol = memchr(readptr, '\n', avail);
  791|     36|	}
  792|       |
  793|     36|	return eol;
  794|     36|}
_php_stream_get_line:
  801|     48|{
  802|     48|	size_t avail = 0;
  803|     48|	size_t current_buf_size = 0;
  804|     48|	size_t total_copied = 0;
  805|     48|	int grow_mode = 0;
  806|     48|	char *bufstart = buf;
  807|       |
  808|     48|	if (buf == NULL) {
  ------------------
  |  Branch (808:6): [True: 48, False: 0]
  ------------------
  809|     48|		grow_mode = 1;
  810|     48|	} else if (maxlen == 0) {
  ------------------
  |  Branch (810:13): [True: 0, False: 0]
  ------------------
  811|      0|		return NULL;
  812|      0|	}
  813|       |
  814|       |	/*
  815|       |	 * If the underlying stream operations block when no new data is readable,
  816|       |	 * we need to take extra precautions.
  817|       |	 *
  818|       |	 * If there is buffered data available, we check for a EOL. If it exists,
  819|       |	 * we pass the data immediately back to the caller. This saves a call
  820|       |	 * to the read implementation and will not block where blocking
  821|       |	 * is not necessary at all.
  822|       |	 *
  823|       |	 * If the stream buffer contains more data than the caller requested,
  824|       |	 * we can also avoid that costly step and simply return that data.
  825|       |	 */
  826|       |
  827|     72|	for (;;) {
  828|     72|		avail = stream->writepos - stream->readpos;
  829|       |
  830|     72|		if (avail > 0) {
  ------------------
  |  Branch (830:7): [True: 36, False: 36]
  ------------------
  831|     36|			size_t cpysz = 0;
  832|     36|			char *readptr;
  833|     36|			const char *eol;
  834|     36|			int done = 0;
  835|       |
  836|     36|			readptr = (char*)stream->readbuf + stream->readpos;
  837|     36|			eol = php_stream_locate_eol(stream, NULL);
  838|       |
  839|     36|			if (eol) {
  ------------------
  |  Branch (839:8): [True: 24, False: 12]
  ------------------
  840|     24|				cpysz = eol - readptr + 1;
  841|     24|				done = 1;
  842|     24|			} else {
  843|     12|				cpysz = avail;
  844|     12|			}
  845|       |
  846|     36|			if (grow_mode) {
  ------------------
  |  Branch (846:8): [True: 36, False: 0]
  ------------------
  847|       |				/* allow room for a NUL. If this realloc is really a realloc
  848|       |				 * (ie: second time around), we get an extra byte. In most
  849|       |				 * cases, with the default chunk size of 8K, we will only
  850|       |				 * incur that overhead once.  When people have lines longer
  851|       |				 * than 8K, we waste 1 byte per additional 8K or so.
  852|       |				 * That seems acceptable to me, to avoid making this code
  853|       |				 * hard to follow */
  854|     36|				bufstart = erealloc(bufstart, current_buf_size + cpysz + 1);
  ------------------
  |  |  158|     36|#define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     36|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     36|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define erealloc(ptr, size)					_erealloc((ptr), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     36|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     36|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  855|     36|				current_buf_size += cpysz + 1;
  856|     36|				buf = bufstart + total_copied;
  857|     36|			} else {
  858|      0|				if (cpysz >= maxlen - 1) {
  ------------------
  |  Branch (858:9): [True: 0, False: 0]
  ------------------
  859|      0|					cpysz = maxlen - 1;
  860|      0|					done = 1;
  861|      0|				}
  862|      0|			}
  863|       |
  864|     36|			memcpy(buf, readptr, cpysz);
  865|       |
  866|     36|			stream->position += cpysz;
  867|     36|			stream->readpos += cpysz;
  868|     36|			buf += cpysz;
  869|     36|			maxlen -= cpysz;
  870|     36|			total_copied += cpysz;
  871|       |
  872|     36|			if (done) {
  ------------------
  |  Branch (872:8): [True: 24, False: 12]
  ------------------
  873|     24|				break;
  874|     24|			}
  875|     36|		} else if (stream->eof) {
  ------------------
  |  Branch (875:14): [True: 12, False: 24]
  ------------------
  876|     12|			break;
  877|     24|		} else {
  878|       |			/* XXX: Should be fine to always read chunk_size */
  879|     24|			size_t toread;
  880|       |
  881|     24|			if (grow_mode) {
  ------------------
  |  Branch (881:8): [True: 24, False: 0]
  ------------------
  882|     24|				toread = stream->chunk_size;
  883|     24|			} else {
  884|      0|				toread = maxlen - 1;
  885|      0|				if (toread > stream->chunk_size) {
  ------------------
  |  Branch (885:9): [True: 0, False: 0]
  ------------------
  886|      0|					toread = stream->chunk_size;
  887|      0|				}
  888|      0|			}
  889|       |
  890|     24|			if (php_stream_fill_read_buffer(stream, toread) == FAILURE && stream->fatal_error) {
  ------------------
  |  |  377|     24|#define php_stream_fill_read_buffer(stream, size)	_php_stream_fill_read_buffer((stream), (size))
  ------------------
  |  Branch (890:8): [True: 0, False: 24]
  |  Branch (890:66): [True: 0, False: 0]
  ------------------
  891|      0|				if (grow_mode) {
  ------------------
  |  Branch (891:9): [True: 0, False: 0]
  ------------------
  892|      0|					efree(bufstart);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  893|      0|				}
  894|      0|				return NULL;
  895|      0|			}
  896|       |
  897|     24|			if (stream->writepos - stream->readpos == 0) {
  ------------------
  |  Branch (897:8): [True: 12, False: 12]
  ------------------
  898|     12|				break;
  899|     12|			}
  900|     24|		}
  901|     72|	}
  902|       |
  903|     48|	if (total_copied == 0) {
  ------------------
  |  Branch (903:6): [True: 12, False: 36]
  ------------------
  904|     12|		if (grow_mode) {
  ------------------
  |  Branch (904:7): [True: 12, False: 0]
  ------------------
  905|     12|			assert(bufstart == NULL);
  ------------------
  |  Branch (905:4): [True: 0, False: 12]
  |  Branch (905:4): [True: 12, False: 0]
  ------------------
  906|     12|		}
  907|     12|		return NULL;
  908|     12|	}
  909|       |
  910|     36|	buf[0] = '\0';
  911|     36|	if (returned_len) {
  ------------------
  |  Branch (911:6): [True: 0, False: 36]
  ------------------
  912|      0|		*returned_len = total_copied;
  913|      0|	}
  914|       |
  915|     36|	return bufstart;
  916|     48|}
_php_stream_seek:
 1286|     53|{
 1287|     53|	if (stream->fclose_stdiocast == PHP_STREAM_FCLOSE_FOPENCOOKIE) {
  ------------------
  |  |  259|     53|#define PHP_STREAM_FCLOSE_FOPENCOOKIE 2
  ------------------
  |  Branch (1287:6): [True: 0, False: 53]
  ------------------
 1288|       |		/* flush can call seek internally so we need to prevent an infinite loop */
 1289|      0|		if (!stream->fclose_stdiocast_flush_in_progress) {
  ------------------
  |  Branch (1289:7): [True: 0, False: 0]
  ------------------
 1290|      0|			stream->fclose_stdiocast_flush_in_progress = 1;
 1291|       |			/* flush to commit data written to the fopencookie FILE* */
 1292|      0|			fflush(stream->stdiocast);
 1293|      0|			stream->fclose_stdiocast_flush_in_progress = 0;
 1294|      0|		}
 1295|      0|	}
 1296|       |
 1297|     53|	bool is_start_seeking = whence == SEEK_SET && offset == 0;
  ------------------
  |  Branch (1297:26): [True: 47, False: 6]
  |  Branch (1297:48): [True: 47, False: 0]
  ------------------
 1298|       |
 1299|     53|	if (stream->writefilters.head) {
  ------------------
  |  Branch (1299:6): [True: 0, False: 53]
  ------------------
 1300|      0|		_php_stream_flush(stream, 0);
 1301|      0|		if (!php_stream_are_filters_seekable(stream->writefilters.head, is_start_seeking,
  ------------------
  |  Branch (1301:7): [True: 0, False: 0]
  ------------------
 1302|      0|				PHP_STREAM_FILTER_WRITE)) {
  ------------------
  |  |   32|      0|#define PHP_STREAM_FILTER_WRITE	0x0002
  ------------------
 1303|      0|			return -1;
 1304|      0|		}
 1305|      0|	}
 1306|     53|	if (stream->readfilters.head && !php_stream_are_filters_seekable(
  ------------------
  |  Branch (1306:6): [True: 0, False: 53]
  |  Branch (1306:34): [True: 0, False: 0]
  ------------------
 1307|      0|			stream->readfilters.head, is_start_seeking, PHP_STREAM_FILTER_READ)) {
  ------------------
  |  |   31|      0|#define PHP_STREAM_FILTER_READ	0x0001
  ------------------
 1308|      0|		return -1;
 1309|      0|	}
 1310|       |
 1311|       |	/* handle the case where we are in the buffer */
 1312|     53|	if ((stream->flags & PHP_STREAM_FLAG_NO_BUFFER) == 0) {
  ------------------
  |  |  165|     53|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
  |  Branch (1312:6): [True: 0, False: 53]
  ------------------
 1313|      0|		switch(whence) {
  ------------------
  |  Branch (1313:10): [True: 0, False: 0]
  ------------------
 1314|      0|			case SEEK_CUR:
  ------------------
  |  Branch (1314:4): [True: 0, False: 0]
  ------------------
 1315|      0|				if (offset > 0 && offset <= stream->writepos - stream->readpos) {
  ------------------
  |  Branch (1315:9): [True: 0, False: 0]
  |  Branch (1315:23): [True: 0, False: 0]
  ------------------
 1316|      0|					stream->readpos += offset; /* if offset = ..., then readpos = writepos */
 1317|      0|					stream->position += offset;
 1318|      0|					stream->eof = 0;
 1319|      0|					stream->fatal_error = 0;
 1320|      0|					return php_stream_filters_seek_all(stream, is_start_seeking, offset, whence) == SUCCESS ? 0 : -1;
  ------------------
  |  Branch (1320:13): [True: 0, False: 0]
  ------------------
 1321|      0|				}
 1322|      0|				break;
 1323|      0|			case SEEK_SET:
  ------------------
  |  Branch (1323:4): [True: 0, False: 0]
  ------------------
 1324|      0|				if (offset > stream->position &&
  ------------------
  |  Branch (1324:9): [True: 0, False: 0]
  ------------------
 1325|      0|						offset <= stream->position + stream->writepos - stream->readpos) {
  ------------------
  |  Branch (1325:7): [True: 0, False: 0]
  ------------------
 1326|      0|					stream->readpos += offset - stream->position;
 1327|      0|					stream->position = offset;
 1328|      0|					stream->eof = 0;
 1329|      0|					stream->fatal_error = 0;
 1330|      0|					return php_stream_filters_seek_all(stream, is_start_seeking, offset, whence) == SUCCESS ? 0 : -1;
  ------------------
  |  Branch (1330:13): [True: 0, False: 0]
  ------------------
 1331|      0|				}
 1332|      0|				break;
 1333|      0|		}
 1334|      0|	}
 1335|       |
 1336|       |
 1337|     53|	if (stream->ops->seek && (stream->flags & PHP_STREAM_FLAG_NO_SEEK) == 0) {
  ------------------
  |  |  164|     53|#define PHP_STREAM_FLAG_NO_SEEK						0x1
  ------------------
  |  Branch (1337:6): [True: 53, False: 0]
  |  Branch (1337:27): [True: 53, False: 0]
  ------------------
 1338|     53|		int ret;
 1339|     53|		switch(whence) {
  ------------------
  |  Branch (1339:10): [True: 53, False: 0]
  ------------------
 1340|      6|			case SEEK_CUR:
  ------------------
  |  Branch (1340:4): [True: 6, False: 47]
  ------------------
 1341|      6|				ZEND_ASSERT(stream->position >= 0);
  ------------------
  |  |  112|      6|# define ZEND_ASSERT(c)	assert(c)
  ------------------
  |  Branch (1341:5): [True: 0, False: 6]
  |  Branch (1341:5): [True: 6, False: 0]
  ------------------
 1342|      6|				if (UNEXPECTED(offset > ZEND_LONG_MAX - stream->position)) {
  ------------------
  |  |  457|      6|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 1343|      0|					offset = ZEND_LONG_MAX;
  ------------------
  |  |   34|      0|# define ZEND_LONG_MAX INT64_MAX
  ------------------
 1344|      6|				} else {
 1345|      6|					offset = stream->position + offset;
 1346|      6|				}
 1347|      6| 				whence = SEEK_SET;
 1348|      6|				break;
 1349|     47|			case SEEK_SET:
  ------------------
  |  Branch (1349:4): [True: 47, False: 6]
  ------------------
 1350|     47|				if (offset < 0) {
  ------------------
  |  Branch (1350:9): [True: 0, False: 47]
  ------------------
 1351|      0|					return -1;
 1352|      0|				}
 1353|     53|		}
 1354|     53|		ret = stream->ops->seek(stream, offset, whence, &stream->position);
 1355|       |
 1356|     53|		if (((stream->flags & PHP_STREAM_FLAG_NO_SEEK) == 0) || ret == 0) {
  ------------------
  |  |  164|     53|#define PHP_STREAM_FLAG_NO_SEEK						0x1
  ------------------
  |  Branch (1356:7): [True: 53, False: 0]
  |  Branch (1356:59): [True: 0, False: 0]
  ------------------
 1357|     53|			if (ret == 0) {
  ------------------
  |  Branch (1357:8): [True: 53, False: 0]
  ------------------
 1358|     53|				stream->eof = 0;
 1359|     53|				stream->fatal_error = 0;
 1360|     53|			}
 1361|       |
 1362|       |			/* invalidate the buffer contents */
 1363|     53|			stream->readpos = stream->writepos = 0;
 1364|       |
 1365|     53|			return php_stream_filters_seek_all(stream, is_start_seeking, offset, whence) == SUCCESS ? ret : -1;
  ------------------
  |  Branch (1365:11): [True: 53, False: 0]
  ------------------
 1366|     53|		}
 1367|       |		/* else the stream has decided that it can't support seeking after all;
 1368|       |		 * fall through to attempt emulation */
 1369|     53|	}
 1370|       |
 1371|       |	/* emulate forward moving seeks with reads */
 1372|      0|	if (whence == SEEK_CUR && offset >= 0) {
  ------------------
  |  Branch (1372:6): [True: 0, False: 0]
  |  Branch (1372:28): [True: 0, False: 0]
  ------------------
 1373|      0|		char tmp[1024];
 1374|      0|		ssize_t didread;
 1375|      0|		while (offset > 0) {
  ------------------
  |  Branch (1375:10): [True: 0, False: 0]
  ------------------
 1376|      0|			if ((didread = php_stream_read(stream, tmp, MIN(offset, sizeof(tmp)))) <= 0) {
  ------------------
  |  |  368|      0|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  |  |  ------------------
  |  |  |  Branch (368:81): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1376:8): [True: 0, False: 0]
  ------------------
 1377|      0|				return -1;
 1378|      0|			}
 1379|      0|			offset -= didread;
 1380|      0|		}
 1381|      0|		stream->eof = 0;
 1382|      0|		stream->fatal_error = 0;
 1383|      0|		return 0;
 1384|      0|	}
 1385|       |
 1386|      0|	php_stream_warn(stream, SeekNotSupported,
  ------------------
  |  |  210|      0|	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 1387|      0|			"Stream does not support seeking");
 1388|       |
 1389|      0|	return -1;
 1390|      0|}
_php_stream_set_option:
 1393|    671|{
 1394|    671|	int ret = PHP_STREAM_OPTION_RETURN_NOTIMPL;
  ------------------
  |  |  518|    671|#define PHP_STREAM_OPTION_RETURN_NOTIMPL	-2 /* underlying stream does not implement; streams can handle it instead */
  ------------------
 1395|       |
 1396|    671|	if (stream->ops->set_option) {
  ------------------
  |  Branch (1396:6): [True: 671, False: 0]
  ------------------
 1397|    671|		ret = stream->ops->set_option(stream, option, value, ptrparam);
 1398|    671|	}
 1399|       |
 1400|    671|	if (ret == PHP_STREAM_OPTION_RETURN_NOTIMPL) {
  ------------------
  |  |  518|    671|#define PHP_STREAM_OPTION_RETURN_NOTIMPL	-2 /* underlying stream does not implement; streams can handle it instead */
  ------------------
  |  Branch (1400:6): [True: 5, False: 666]
  ------------------
 1401|      5|		switch(option) {
 1402|      0|			case PHP_STREAM_OPTION_SET_CHUNK_SIZE:
  ------------------
  |  |  470|      0|#define PHP_STREAM_OPTION_SET_CHUNK_SIZE	5
  ------------------
  |  Branch (1402:4): [True: 0, False: 5]
  ------------------
 1403|       |				/* XXX chunk size itself is of size_t, that might be ok or not for a particular case*/
 1404|      0|				ret = stream->chunk_size > INT_MAX ? INT_MAX : (int)stream->chunk_size;
  ------------------
  |  Branch (1404:11): [True: 0, False: 0]
  ------------------
 1405|      0|				stream->chunk_size = value;
 1406|      0|				return ret;
 1407|       |
 1408|      5|			case PHP_STREAM_OPTION_READ_BUFFER:
  ------------------
  |  |  461|      5|#define PHP_STREAM_OPTION_READ_BUFFER	2
  ------------------
  |  Branch (1408:4): [True: 5, False: 0]
  ------------------
 1409|       |				/* try to match the buffer mode as best we can */
 1410|      5|				if (value == PHP_STREAM_BUFFER_NONE) {
  ------------------
  |  |  464|      5|#define PHP_STREAM_BUFFER_NONE	0	/* unbuffered */
  ------------------
  |  Branch (1410:9): [True: 5, False: 0]
  ------------------
 1411|      5|					stream->flags |= PHP_STREAM_FLAG_NO_BUFFER;
  ------------------
  |  |  165|      5|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
 1412|      5|				} else if (stream->flags & PHP_STREAM_FLAG_NO_BUFFER) {
  ------------------
  |  |  165|      0|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
  |  Branch (1412:16): [True: 0, False: 0]
  ------------------
 1413|      0|					stream->flags ^= PHP_STREAM_FLAG_NO_BUFFER;
  ------------------
  |  |  165|      0|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
 1414|      0|				}
 1415|      5|				ret = PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      5|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
 1416|      5|				break;
 1417|       |
 1418|      0|			default:
  ------------------
  |  Branch (1418:4): [True: 0, False: 5]
  ------------------
 1419|      0|				;
 1420|      5|		}
 1421|      5|	}
 1422|       |
 1423|    671|	return ret;
 1424|    671|}
_php_stream_copy_to_mem:
 1480|      1|{
 1481|      1|	ssize_t ret = 0;
 1482|      1|	char *ptr;
 1483|      1|	size_t len = 0, buflen;
 1484|      1|	php_stream_statbuf ssbuf;
 1485|      1|	zend_string *result;
 1486|       |
 1487|      1|	if (maxlen == 0) {
  ------------------
  |  Branch (1487:6): [True: 0, False: 1]
  ------------------
 1488|      0|		return ZSTR_EMPTY_ALLOC();
 1489|      0|	}
 1490|       |
 1491|      1|	if (maxlen == PHP_STREAM_COPY_ALL) {
  ------------------
  |  |  522|      1|#define PHP_STREAM_COPY_ALL		((size_t)-1)
  ------------------
  |  Branch (1491:6): [True: 1, False: 0]
  ------------------
 1492|      1|		maxlen = 0;
 1493|      1|	}
 1494|       |
 1495|      1|	if (maxlen > 0 && maxlen < 4 * CHUNK_SIZE) {
  ------------------
  |  |   44|      0|#define CHUNK_SIZE	8192
  ------------------
  |  Branch (1495:6): [True: 0, False: 1]
  |  Branch (1495:20): [True: 0, False: 0]
  ------------------
 1496|      0|		result = zend_string_alloc(maxlen, persistent);
 1497|      0|		ptr = ZSTR_VAL(result);
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1498|      0|		while ((len < maxlen) && !php_stream_eof(src)) {
  ------------------
  |  |  385|      0|#define php_stream_eof(stream)	_php_stream_eof((stream))
  ------------------
  |  Branch (1498:10): [True: 0, False: 0]
  |  Branch (1498:28): [True: 0, False: 0]
  ------------------
 1499|      0|			ret = php_stream_read(src, ptr, maxlen - len);
  ------------------
  |  |  368|      0|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
 1500|      0|			if (ret <= 0) {
  ------------------
  |  Branch (1500:8): [True: 0, False: 0]
  ------------------
 1501|       |				// TODO: Propagate error?
 1502|      0|				break;
 1503|      0|			}
 1504|      0|			len += ret;
 1505|      0|			ptr += ret;
 1506|      0|		}
 1507|      0|		if (len) {
  ------------------
  |  Branch (1507:7): [True: 0, False: 0]
  ------------------
 1508|      0|			ZSTR_LEN(result) = len;
  ------------------
  |  |   68|      0|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
 1509|      0|			ZSTR_VAL(result)[len] = '\0';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1510|       |
 1511|       |			/* Only truncate if the savings are large enough */
 1512|      0|			if (len < maxlen / 2) {
  ------------------
  |  Branch (1512:8): [True: 0, False: 0]
  ------------------
 1513|      0|				result = zend_string_truncate(result, len, persistent);
 1514|      0|			}
 1515|      0|		} else {
 1516|      0|			zend_string_free(result);
 1517|      0|			result = NULL;
 1518|      0|		}
 1519|      0|		return result;
 1520|      0|	}
 1521|       |
 1522|       |	/* avoid many reallocs by allocating a good-sized chunk to begin with, if
 1523|       |	 * we can.  Note that the stream may be filtered, in which case the stat
 1524|       |	 * result may be inaccurate, as the filter may inflate or deflate the
 1525|       |	 * number of bytes that we can read.  In order to avoid an upsize followed
 1526|       |	 * by a downsize of the buffer, overestimate by the CHUNK_SIZE size (which is
 1527|       |	 * 8K).  */
 1528|      1|	if (php_stream_stat(src, &ssbuf) == 0 && ssbuf.sb.st_size > 0) {
  ------------------
  |  |  410|      1|#define php_stream_stat(stream, ssb)	_php_stream_stat((stream), (ssb))
  ------------------
  |  Branch (1528:6): [True: 1, False: 0]
  |  Branch (1528:43): [True: 0, False: 1]
  ------------------
 1529|      0|		buflen = MAX(ssbuf.sb.st_size - src->position, 0) + CHUNK_SIZE;
  ------------------
  |  |   44|      0|#define CHUNK_SIZE	8192
  ------------------
  |  Branch (1529:12): [True: 0, False: 0]
  ------------------
 1530|      0|		if (maxlen > 0 && buflen > maxlen) {
  ------------------
  |  Branch (1530:7): [True: 0, False: 0]
  |  Branch (1530:21): [True: 0, False: 0]
  ------------------
 1531|      0|			buflen = maxlen;
 1532|      0|		}
 1533|      1|	} else {
 1534|      1|		buflen = CHUNK_SIZE;
  ------------------
  |  |   44|      1|#define CHUNK_SIZE	8192
  ------------------
 1535|      1|	}
 1536|       |
 1537|      1|	result = zend_string_alloc(buflen, persistent);
 1538|      1|	ptr = ZSTR_VAL(result);
  ------------------
  |  |   67|      1|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1539|       |
 1540|      1|	const int min_room = CHUNK_SIZE / 4;
  ------------------
  |  |   44|      1|#define CHUNK_SIZE	8192
  ------------------
 1541|       |	// TODO: Propagate error?
 1542|      1|	while ((ret = php_stream_read(src, ptr, buflen - len)) > 0) {
  ------------------
  |  |  368|      1|#define php_stream_read(stream, buf, count)		_php_stream_read((stream), (buf), (count))
  ------------------
  |  Branch (1542:9): [True: 0, False: 1]
  ------------------
 1543|      0|		len += ret;
 1544|      0|		if (len + min_room >= buflen) {
  ------------------
  |  Branch (1544:7): [True: 0, False: 0]
  ------------------
 1545|      0|			if (maxlen == len) {
  ------------------
  |  Branch (1545:8): [True: 0, False: 0]
  ------------------
 1546|      0|				break;
 1547|      0|			}
 1548|      0|			if (maxlen > 0 && buflen + CHUNK_SIZE > maxlen) {
  ------------------
  |  |   44|      0|#define CHUNK_SIZE	8192
  ------------------
  |  Branch (1548:8): [True: 0, False: 0]
  |  Branch (1548:22): [True: 0, False: 0]
  ------------------
 1549|      0|				buflen = maxlen;
 1550|      0|			} else {
 1551|      0|				buflen += CHUNK_SIZE;
  ------------------
  |  |   44|      0|#define CHUNK_SIZE	8192
  ------------------
 1552|      0|			}
 1553|      0|			result = zend_string_extend(result, buflen, persistent);
 1554|      0|			ptr = ZSTR_VAL(result) + len;
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1555|      0|		} else {
 1556|      0|			ptr += ret;
 1557|      0|		}
 1558|      0|	}
 1559|      1|	if (len) {
  ------------------
  |  Branch (1559:6): [True: 0, False: 1]
  ------------------
 1560|      0|		result = zend_string_truncate(result, len, persistent);
 1561|      0|		ZSTR_VAL(result)[len] = '\0';
  ------------------
  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 1562|      1|	} else {
 1563|      1|		zend_string_free(result);
 1564|      1|		result = NULL;
 1565|      1|	}
 1566|       |
 1567|      1|	return result;
 1568|      1|}
php_shutdown_stream_hashes:
 1797|  33.5k|{
 1798|  33.5k|	FG(user_stream_current_filename) = NULL;
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  ------------------
 1799|  33.5k|	if (FG(stream_wrappers)) {
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 19, False: 33.5k]
  |  |  ------------------
  ------------------
 1800|     19|		zend_hash_destroy(FG(stream_wrappers));
  ------------------
  |  |  116|     19|#define FG(v) (file_globals.v)
  ------------------
 1801|     19|		efree(FG(stream_wrappers));
  ------------------
  |  |  154|     19|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     19|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     19|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     19|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     19|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1802|     19|		FG(stream_wrappers) = NULL;
  ------------------
  |  |  116|     19|#define FG(v) (file_globals.v)
  ------------------
 1803|     19|	}
 1804|       |
 1805|  33.5k|	if (FG(stream_filters)) {
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 3, False: 33.5k]
  |  |  ------------------
  ------------------
 1806|      3|		zend_hash_destroy(FG(stream_filters));
  ------------------
  |  |  116|      3|#define FG(v) (file_globals.v)
  ------------------
 1807|      3|		efree(FG(stream_filters));
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1808|      3|		FG(stream_filters) = NULL;
  ------------------
  |  |  116|      3|#define FG(v) (file_globals.v)
  ------------------
 1809|      3|	}
 1810|       |
 1811|  33.5k|	if (FG(wrapper_logged_errors)) {
  ------------------
  |  |  116|  33.5k|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 2, False: 33.5k]
  |  |  ------------------
  ------------------
 1812|      2|		zend_hash_destroy(FG(wrapper_logged_errors));
  ------------------
  |  |  116|      2|#define FG(v) (file_globals.v)
  ------------------
 1813|      2|		efree(FG(wrapper_logged_errors));
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1814|      2|		FG(wrapper_logged_errors) = NULL;
  ------------------
  |  |  116|      2|#define FG(v) (file_globals.v)
  ------------------
 1815|      2|	}
 1816|       |
 1817|  33.5k|	php_stream_error_state_cleanup();
 1818|  33.5k|}
php_init_stream_wrappers:
 1821|      2|{
 1822|      2|	le_stream = zend_register_list_destructors_ex(stream_resource_regular_dtor, NULL, "stream", module_number);
 1823|      2|	le_pstream = zend_register_list_destructors_ex(NULL, stream_resource_persistent_dtor, "persistent stream", module_number);
 1824|       |
 1825|       |	/* Filters are cleaned up by the streams they're attached to */
 1826|      2|	le_stream_filter = zend_register_list_destructors_ex(NULL, NULL, "stream filter", module_number);
 1827|       |
 1828|      2|	zend_hash_init(&url_stream_wrappers_hash, 8, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1829|      2|	zend_hash_init(php_get_stream_filters_hash_global(), 8, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1830|      2|	zend_hash_init(php_stream_xport_get_hash(), 8, NULL, NULL, 1);
  ------------------
  |  |  111|      2|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1831|       |
 1832|      2|	return (php_stream_xport_register("tcp", php_stream_generic_socket_factory) == SUCCESS
  ------------------
  |  Branch (1832:10): [True: 2, False: 0]
  ------------------
 1833|      2|			&&
 1834|      2|			php_stream_xport_register("udp", php_stream_generic_socket_factory) == SUCCESS
  ------------------
  |  Branch (1834:4): [True: 2, False: 0]
  ------------------
 1835|      2|#if defined(AF_UNIX) && !(defined(PHP_WIN32) || defined(__riscos__))
 1836|      2|			&&
 1837|      2|			php_stream_xport_register("unix", php_stream_generic_socket_factory) == SUCCESS
  ------------------
  |  Branch (1837:4): [True: 2, False: 0]
  ------------------
 1838|      2|			&&
 1839|      2|			php_stream_xport_register("udg", php_stream_generic_socket_factory) == SUCCESS
  ------------------
  |  Branch (1839:4): [True: 2, False: 0]
  ------------------
 1840|      2|#endif
 1841|      2|		) ? SUCCESS : FAILURE;
 1842|      2|}
php_register_url_stream_wrapper:
 1870|     12|{
 1871|     12|	size_t protocol_len = strlen(protocol);
 1872|     12|	zend_result ret;
 1873|     12|	zend_string *str;
 1874|       |
 1875|     12|	if (php_stream_wrapper_scheme_validate(protocol, protocol_len) == FAILURE) {
  ------------------
  |  Branch (1875:6): [True: 0, False: 12]
  ------------------
 1876|      0|		return FAILURE;
 1877|      0|	}
 1878|       |
 1879|     12|	str = zend_string_init_interned(protocol, protocol_len, 1);
 1880|     12|	ret = zend_hash_add_ptr(&url_stream_wrappers_hash, str, (void*)wrapper) ? SUCCESS : FAILURE;
  ------------------
  |  Branch (1880:8): [True: 12, False: 0]
  ------------------
 1881|     12|	zend_string_release_ex(str, 1);
 1882|     12|	return ret;
 1883|     12|}
php_register_url_stream_wrapper_volatile:
 1899|     20|{
 1900|     20|	if (php_stream_wrapper_scheme_validate(ZSTR_VAL(protocol), ZSTR_LEN(protocol)) == FAILURE) {
  ------------------
  |  |   67|     20|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
              	if (php_stream_wrapper_scheme_validate(ZSTR_VAL(protocol), ZSTR_LEN(protocol)) == FAILURE) {
  ------------------
  |  |   68|     20|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
  |  Branch (1900:6): [True: 1, False: 19]
  ------------------
 1901|      1|		return FAILURE;
 1902|      1|	}
 1903|       |
 1904|     19|	if (!FG(stream_wrappers)) {
  ------------------
  |  |  116|     19|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (1904:6): [True: 19, False: 0]
  ------------------
 1905|     19|		clone_wrapper_hash();
 1906|     19|	}
 1907|       |
 1908|     19|	return zend_hash_add_ptr(FG(stream_wrappers), protocol, wrapper) ? SUCCESS : FAILURE;
  ------------------
  |  |  116|     19|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (1908:9): [True: 19, False: 0]
  ------------------
 1909|     20|}
php_stream_locate_url_wrapper:
 1923|  6.69k|{
 1924|  6.69k|	const HashTable *wrapper_hash = (FG(stream_wrappers) ? FG(stream_wrappers) : &url_stream_wrappers_hash);
  ------------------
  |  |  116|  6.69k|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 6.63k, False: 60]
  |  |  ------------------
  ------------------
              	const HashTable *wrapper_hash = (FG(stream_wrappers) ? FG(stream_wrappers) : &url_stream_wrappers_hash);
  ------------------
  |  |  116|  6.63k|#define FG(v) (file_globals.v)
  ------------------
 1925|  6.69k|	php_stream_wrapper *wrapper = NULL;
 1926|  6.69k|	const char *p, *protocol = NULL;
 1927|  6.69k|	size_t n = 0;
 1928|       |
 1929|  6.69k|	if (path_for_open) {
  ------------------
  |  Branch (1929:6): [True: 6.69k, False: 0]
  ------------------
 1930|  6.69k|		*path_for_open = (char*)path;
 1931|  6.69k|	}
 1932|       |
 1933|  6.69k|	if (options & IGNORE_URL) {
  ------------------
  |  |  582|  6.69k|#define IGNORE_URL                      0x00000002
  ------------------
  |  Branch (1933:6): [True: 0, False: 6.69k]
  ------------------
 1934|      0|		return (php_stream_wrapper*)((options & STREAM_LOCATE_WRAPPERS_ONLY) ? NULL : &php_plain_files_wrapper);
  ------------------
  |  |  598|      0|#define STREAM_LOCATE_WRAPPERS_ONLY     0x00000040
  ------------------
  |  Branch (1934:32): [True: 0, False: 0]
  ------------------
 1935|      0|	}
 1936|       |
 1937|  30.7k|	for (p = path; isalnum((unsigned char)*p) || *p == '+' || *p == '-' || *p == '.'; p++) {
  ------------------
  |  Branch (1937:17): [True: 24.0k, False: 6.70k]
  |  Branch (1937:47): [True: 0, False: 6.70k]
  |  Branch (1937:60): [True: 1, False: 6.70k]
  |  Branch (1937:73): [True: 15, False: 6.69k]
  ------------------
 1938|  24.0k|		n++;
 1939|  24.0k|	}
 1940|       |
 1941|  6.69k|	if ((*p == ':') && (n > 1) && (!strncmp("//", p+1, 2) || (n == 4 && !memcmp("data:", path, 5)))) {
  ------------------
  |  Branch (1941:6): [True: 6.63k, False: 57]
  |  Branch (1941:21): [True: 6.63k, False: 1]
  |  Branch (1941:33): [True: 6.63k, False: 2]
  |  Branch (1941:60): [True: 0, False: 2]
  |  Branch (1941:70): [True: 0, False: 0]
  ------------------
 1942|  6.63k|		protocol = path;
 1943|  6.63k|	}
 1944|       |
 1945|  6.69k|	if (protocol) {
  ------------------
  |  Branch (1945:6): [True: 6.63k, False: 60]
  ------------------
 1946|  6.63k|		if (NULL == (wrapper = zend_hash_str_find_ptr(wrapper_hash, protocol, n))) {
  ------------------
  |  Branch (1946:7): [True: 3, False: 6.62k]
  ------------------
 1947|      3|			char *tmp = estrndup(protocol, n);
  ------------------
  |  |  164|      3|#define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrndup(s, length)					_estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1948|       |
 1949|      3|			zend_str_tolower(tmp, n);
 1950|      3|			if (NULL == (wrapper = zend_hash_str_find_ptr(wrapper_hash, tmp, n))) {
  ------------------
  |  Branch (1950:8): [True: 3, False: 0]
  ------------------
 1951|      3|				char wrapper_name[32];
 1952|       |
 1953|      3|				if (n >= sizeof(wrapper_name)) {
  ------------------
  |  Branch (1953:9): [True: 0, False: 3]
  ------------------
 1954|      0|					n = sizeof(wrapper_name) - 1;
 1955|      0|				}
 1956|      3|				PHP_STRLCPY(wrapper_name, protocol, sizeof(wrapper_name), n);
  ------------------
  |  |  133|      3|	{											\
  |  |  134|      3|		size_t php_str_len;						\
  |  |  135|      3|												\
  |  |  136|      3|		if (src_size >= size)					\
  |  |  ------------------
  |  |  |  Branch (136:7): [True: 0, False: 3]
  |  |  ------------------
  |  |  137|      3|			php_str_len = size - 1;				\
  |  |  138|      3|		else									\
  |  |  139|      3|			php_str_len = src_size;				\
  |  |  140|      3|		memcpy(dst, src, php_str_len);			\
  |  |  141|      3|		dst[php_str_len] = '\0';				\
  |  |  142|      3|	}
  ------------------
 1957|       |
 1958|      3|				php_error_docref(NULL, E_WARNING, "Unable to find the wrapper \"%s\" - did you forget to enable it when you configured PHP?", wrapper_name);
  ------------------
  |  |   23|      3|#define E_WARNING			(1<<1L)
  ------------------
 1959|       |
 1960|      3|				wrapper = NULL;
 1961|      3|				protocol = NULL;
 1962|      3|			}
 1963|      3|			efree(tmp);
  ------------------
  |  |  154|      3|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      3|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      3|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1964|      3|		}
 1965|  6.63k|	}
 1966|       |	/* TODO: curl based streams probably support file:// properly */
 1967|  6.69k|	if (!protocol || !strncasecmp(protocol, "file", n))	{
  ------------------
  |  Branch (1967:6): [True: 63, False: 6.62k]
  |  Branch (1967:19): [True: 0, False: 6.62k]
  ------------------
 1968|       |		/* fall back on regular file access */
 1969|     63|		php_stream_wrapper *plain_files_wrapper = (php_stream_wrapper*)&php_plain_files_wrapper;
 1970|       |
 1971|     63|		if (protocol) {
  ------------------
  |  Branch (1971:7): [True: 0, False: 63]
  ------------------
 1972|      0|			bool localhost = false;
 1973|       |
 1974|      0|			if (!strncasecmp(path, "file://localhost/", 17)) {
  ------------------
  |  Branch (1974:8): [True: 0, False: 0]
  ------------------
 1975|      0|				localhost = true;
 1976|      0|			}
 1977|       |
 1978|       |#ifdef PHP_WIN32
 1979|       |			if (!localhost && path[n+3] != '\0' && path[n+3] != '/' && path[n+4] != ':')	{
 1980|       |#else
 1981|      0|			if (!localhost && path[n+3] != '\0' && path[n+3] != '/') {
  ------------------
  |  Branch (1981:8): [True: 0, False: 0]
  |  Branch (1981:22): [True: 0, False: 0]
  |  Branch (1981:43): [True: 0, False: 0]
  ------------------
 1982|      0|#endif
 1983|      0|				if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (1983:9): [True: 0, False: 0]
  ------------------
 1984|      0|					php_stream_wrapper_warn(plain_files_wrapper, NULL, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 1985|      0|							ProtocolUnsupported,
 1986|      0|							"Remote host file access not supported, %s", path);
 1987|      0|				}
 1988|      0|				return NULL;
 1989|      0|			}
 1990|       |
 1991|      0|			if (path_for_open) {
  ------------------
  |  Branch (1991:8): [True: 0, False: 0]
  ------------------
 1992|       |				/* skip past protocol and :/, but handle windows correctly */
 1993|      0|				*path_for_open = (char*)path + n + 1;
 1994|      0|				if (localhost) {
  ------------------
  |  Branch (1994:9): [True: 0, False: 0]
  ------------------
 1995|      0|					(*path_for_open) += 11;
 1996|      0|				}
 1997|      0|				while (*(++*path_for_open)=='/') {
  ------------------
  |  Branch (1997:12): [True: 0, False: 0]
  ------------------
 1998|       |					/* intentionally empty */
 1999|      0|				}
 2000|       |#ifdef PHP_WIN32
 2001|       |				if (*(*path_for_open + 1) != ':')
 2002|       |#endif
 2003|      0|					(*path_for_open)--;
 2004|      0|			}
 2005|      0|		}
 2006|       |
 2007|     63|		if (options & STREAM_LOCATE_WRAPPERS_ONLY) {
  ------------------
  |  |  598|     63|#define STREAM_LOCATE_WRAPPERS_ONLY     0x00000040
  ------------------
  |  Branch (2007:7): [True: 0, False: 63]
  ------------------
 2008|      0|			return NULL;
 2009|      0|		}
 2010|       |
 2011|     63|		if (FG(stream_wrappers)) {
  ------------------
  |  |  116|     63|#define FG(v) (file_globals.v)
  |  |  ------------------
  |  |  |  Branch (116:15): [True: 7, False: 56]
  |  |  ------------------
  ------------------
 2012|       |		/* The file:// wrapper may have been disabled/overridden */
 2013|       |
 2014|      7|			if (wrapper) {
  ------------------
  |  Branch (2014:8): [True: 0, False: 7]
  ------------------
 2015|       |				/* It was found so go ahead and provide it */
 2016|      0|				return wrapper;
 2017|      0|			}
 2018|       |
 2019|       |			/* Check again, the original check might have not known the protocol name */
 2020|      7|			if ((wrapper = zend_hash_find_ex_ptr(wrapper_hash, ZSTR_KNOWN(ZEND_STR_FILE), 1)) != NULL) {
  ------------------
  |  Branch (2020:8): [True: 7, False: 0]
  ------------------
 2021|      7|				return wrapper;
 2022|      7|			}
 2023|       |
 2024|      0|			if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (2024:8): [True: 0, False: 0]
  ------------------
 2025|      0|				php_stream_wrapper_warn(plain_files_wrapper, NULL, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 2026|      0|					Disabled,
 2027|      0|					"file:// wrapper is disabled in the server configuration");
 2028|      0|			}
 2029|      0|			return NULL;
 2030|      7|		}
 2031|       |
 2032|     56|		return plain_files_wrapper;
 2033|     63|	}
 2034|       |
 2035|  6.62k|	if (wrapper && wrapper->is_url &&
  ------------------
  |  Branch (2035:6): [True: 6.62k, False: 0]
  |  Branch (2035:17): [True: 0, False: 6.62k]
  ------------------
 2036|      0|	    (options & STREAM_DISABLE_URL_PROTECTION) == 0 &&
  ------------------
  |  |  619|      0|#define STREAM_DISABLE_URL_PROTECTION   0x00002000
  ------------------
  |  Branch (2036:6): [True: 0, False: 0]
  ------------------
 2037|      0|	    (!PG(allow_url_fopen) ||
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (2037:7): [True: 0, False: 0]
  ------------------
 2038|      0|	     (((options & STREAM_OPEN_FOR_INCLUDE) ||
  ------------------
  |  |  601|      0|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  |  Branch (2038:9): [True: 0, False: 0]
  ------------------
 2039|      0|	       PG(in_user_include)) && !PG(allow_url_include)))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  |  |  ------------------
  |  |  |  Branch (29:16): [True: 0, False: 0]
  |  |  ------------------
  ------------------
              	       PG(in_user_include)) && !PG(allow_url_include)))) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (2039:33): [True: 0, False: 0]
  ------------------
 2040|      0|		if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (2040:7): [True: 0, False: 0]
  ------------------
 2041|       |			/* protocol[n] probably isn't '\0' */
 2042|      0|			if (!PG(allow_url_fopen)) {
  ------------------
  |  |   29|      0|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (2042:8): [True: 0, False: 0]
  ------------------
 2043|      0|				php_error_docref(NULL, E_WARNING, "%.*s:// wrapper is disabled in the server configuration by allow_url_fopen=0", (int)n, protocol);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 2044|      0|			} else {
 2045|      0|				php_error_docref(NULL, E_WARNING, "%.*s:// wrapper is disabled in the server configuration by allow_url_include=0", (int)n, protocol);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 2046|      0|			}
 2047|      0|		}
 2048|      0|		return NULL;
 2049|      0|	}
 2050|       |
 2051|  6.62k|	return wrapper;
 2052|  6.62k|}
_php_stream_opendir:
 2102|      3|{
 2103|      3|	php_stream *stream = NULL;
 2104|      3|	php_stream_wrapper *wrapper = NULL;
 2105|      3|	const char *path_to_open;
 2106|       |
 2107|      3|	if (!path || !*path) {
  ------------------
  |  Branch (2107:6): [True: 0, False: 3]
  |  Branch (2107:15): [True: 0, False: 3]
  ------------------
 2108|      0|		return NULL;
 2109|      0|	}
 2110|       |
 2111|      3|	path_to_open = path;
 2112|       |
 2113|      3|	wrapper = php_stream_locate_url_wrapper(path, &path_to_open, options);
 2114|       |
 2115|      3|	if (wrapper && wrapper->wops->dir_opener) {
  ------------------
  |  Branch (2115:6): [True: 3, False: 0]
  |  Branch (2115:17): [True: 3, False: 0]
  ------------------
 2116|      3|		stream = wrapper->wops->dir_opener(wrapper,
 2117|      3|				path_to_open, "r", options & ~REPORT_ERRORS, NULL,
  ------------------
  |  |  583|      3|#define REPORT_ERRORS                   0x00000008
  ------------------
 2118|      3|				context STREAMS_REL_CC);
  ------------------
  |  |   45|      3|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  ------------------
  |  |  |  |   39|      3|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      3|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      3|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   40|      3|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:2): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |   41|      3|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (41:2): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2119|       |
 2120|      3|		if (stream) {
  ------------------
  |  Branch (2120:7): [True: 0, False: 3]
  ------------------
 2121|      0|			stream->wrapper = wrapper;
 2122|      0|			stream->flags |= PHP_STREAM_FLAG_NO_BUFFER | PHP_STREAM_FLAG_IS_DIR;
  ------------------
  |  |  165|      0|#define PHP_STREAM_FLAG_NO_BUFFER					0x2
  ------------------
              			stream->flags |= PHP_STREAM_FLAG_NO_BUFFER | PHP_STREAM_FLAG_IS_DIR;
  ------------------
  |  |  179|      0|#define PHP_STREAM_FLAG_IS_DIR						0x40
  ------------------
 2123|      0|		}
 2124|      3|	} else if (wrapper) {
  ------------------
  |  Branch (2124:13): [True: 0, False: 0]
  ------------------
 2125|      0|		php_stream_wrapper_log_warn(wrapper, context, options & ~REPORT_ERRORS,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 2126|      0|				NoOpener, "not implemented");
 2127|      0|	}
 2128|      3|	if (stream == NULL && (options & REPORT_ERRORS)) {
  ------------------
  |  |  583|      3|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (2128:6): [True: 3, False: 0]
  |  Branch (2128:24): [True: 3, False: 0]
  ------------------
 2129|      3|		php_stream_display_wrapper_errors(wrapper, context, PHP_STREAM_EC(OpenFailed),
  ------------------
  |  |   44|      3|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  ------------------
 2130|      3|				path, "Failed to open directory");
 2131|      3|	}
 2132|      3|	php_stream_tidy_wrapper_error_log(wrapper);
 2133|       |
 2134|      3|	return stream;
 2135|      3|}
_php_stream_open_wrapper_ex:
 2153|  3.37k|{
 2154|  3.37k|	php_stream *stream = NULL;
 2155|  3.37k|	php_stream_wrapper *wrapper = NULL;
 2156|  3.37k|	const char *path_to_open;
 2157|  3.37k|	int persistent = options & STREAM_OPEN_PERSISTENT;
  ------------------
  |  |  613|  3.37k|#define STREAM_OPEN_PERSISTENT          0x00000800
  ------------------
 2158|  3.37k|	zend_string *path_str = NULL;
 2159|  3.37k|	zend_string *resolved_path = NULL;
 2160|       |
 2161|  3.37k|	if (opened_path) {
  ------------------
  |  Branch (2161:6): [True: 3.37k, False: 1]
  ------------------
 2162|  3.37k|		if (options & STREAM_OPEN_FOR_ZEND_STREAM) {
  ------------------
  |  |  628|  3.37k|#define STREAM_OPEN_FOR_ZEND_STREAM     0x00010000
  ------------------
  |  Branch (2162:7): [True: 3.37k, False: 0]
  ------------------
 2163|  3.37k|			path_str = *opened_path;
 2164|  3.37k|		}
 2165|  3.37k|		*opened_path = NULL;
 2166|  3.37k|	}
 2167|       |
 2168|  3.37k|	if (!path || !*path) {
  ------------------
  |  Branch (2168:6): [True: 0, False: 3.37k]
  |  Branch (2168:15): [True: 2, False: 3.37k]
  ------------------
 2169|      2|		zend_value_error("Path must not be empty");
 2170|      2|		return NULL;
 2171|      2|	}
 2172|       |
 2173|  3.37k|	if (options & USE_PATH) {
  ------------------
  |  |  581|  3.37k|#define USE_PATH                        0x00000001
  ------------------
  |  Branch (2173:6): [True: 3.37k, False: 1]
  ------------------
 2174|  3.37k|		if (path_str) {
  ------------------
  |  Branch (2174:7): [True: 3.37k, False: 1]
  ------------------
 2175|  3.37k|			resolved_path = zend_resolve_path(path_str);
 2176|  3.37k|		} else {
 2177|      1|			resolved_path = php_resolve_path(path, strlen(path), PG(include_path));
  ------------------
  |  |   29|      1|# define PG(v) (core_globals.v)
  ------------------
 2178|      1|		}
 2179|  3.37k|		if (resolved_path) {
  ------------------
  |  Branch (2179:7): [True: 6, False: 3.36k]
  ------------------
 2180|      6|			path = ZSTR_VAL(resolved_path);
  ------------------
  |  |   67|      6|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
 2181|       |			/* we've found this file, don't re-check include_path or run realpath */
 2182|      6|			options |= STREAM_ASSUME_REALPATH;
  ------------------
  |  |  622|      6|#define STREAM_ASSUME_REALPATH          0x00004000
  ------------------
 2183|      6|			options &= ~USE_PATH;
  ------------------
  |  |  581|      6|#define USE_PATH                        0x00000001
  ------------------
 2184|      6|		}
 2185|  3.37k|		if (EG(exception)) {
  ------------------
  |  |   45|  3.37k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 0, False: 3.37k]
  |  |  ------------------
  ------------------
 2186|      0|			if (resolved_path) {
  ------------------
  |  Branch (2186:8): [True: 0, False: 0]
  ------------------
 2187|      0|				zend_string_release_ex(resolved_path, false);
 2188|      0|			}
 2189|      0|			return NULL;
 2190|      0|		}
 2191|  3.37k|	}
 2192|       |
 2193|  3.37k|	path_to_open = path;
 2194|       |
 2195|  3.37k|	wrapper = php_stream_locate_url_wrapper(path, &path_to_open, options);
 2196|  3.37k|	if ((options & STREAM_USE_URL) && (!wrapper || !wrapper->is_url)) {
  ------------------
  |  |  604|  3.37k|#define STREAM_USE_URL                  0x00000100
  ------------------
  |  Branch (2196:6): [True: 0, False: 3.37k]
  |  Branch (2196:37): [True: 0, False: 0]
  |  Branch (2196:49): [True: 0, False: 0]
  ------------------
 2197|      0|		if (wrapper) {
  ------------------
  |  Branch (2197:7): [True: 0, False: 0]
  ------------------
 2198|      0|			php_stream_wrapper_warn(wrapper, context, options,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 2199|      0|					ProtocolUnsupported,
 2200|      0|					"This function may only be used against URLs");
 2201|      0|		} else {
 2202|      0|			php_error_docref(NULL, E_WARNING, "This function may only be used against URLs");
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 2203|      0|		}
 2204|      0|		if (resolved_path) {
  ------------------
  |  Branch (2204:7): [True: 0, False: 0]
  ------------------
 2205|      0|			zend_string_release_ex(resolved_path, 0);
 2206|      0|		}
 2207|      0|		return NULL;
 2208|      0|	}
 2209|       |
 2210|       |	/* wrapper name needs to be stored as wrapper can be removed in opener (user stream) */
 2211|  3.37k|	char *wrapper_name = pestrdup(PHP_STREAM_ERROR_WRAPPER_NAME(wrapper), persistent);
  ------------------
  |  |  205|  3.37k|#define pestrdup(s, persistent) ((persistent)?__zend_strdup(s):estrdup(s))
  |  |  ------------------
  |  |  |  |  163|  6.75k|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  3.37k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  3.37k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  3.37k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  3.37k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (163:36): [True: 1.39k, False: 1.98k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (205:34): [True: 0, False: 3.37k]
  |  |  |  Branch (205:61): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2212|  3.37k|	if (wrapper) {
  ------------------
  |  Branch (2212:6): [True: 1.39k, False: 1.98k]
  ------------------
 2213|  1.39k|		if (!wrapper->wops->stream_opener) {
  ------------------
  |  Branch (2213:7): [True: 0, False: 1.39k]
  ------------------
 2214|      0|			php_stream_wrapper_log_warn(wrapper, context, options & ~REPORT_ERRORS,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 2215|      0|					NoOpener,
 2216|      0|					"wrapper does not support stream open");
 2217|  1.39k|		} else {
 2218|  1.39k|			stream = wrapper->wops->stream_opener(wrapper,
 2219|  1.39k|				path_to_open, mode, options & ~REPORT_ERRORS,
  ------------------
  |  |  583|  1.39k|#define REPORT_ERRORS                   0x00000008
  ------------------
 2220|  1.39k|				opened_path, context STREAMS_REL_CC);
  ------------------
  |  |   45|  1.39k|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  ------------------
  |  |  |  |   39|  1.39k|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  1.39k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  1.39k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   40|  1.39k|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:2): [True: 0, False: 1.39k]
  |  |  |  |  ------------------
  |  |  |  |   41|  1.39k|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (41:2): [True: 0, False: 1.39k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2221|  1.39k|		}
 2222|       |
 2223|       |		/* if the caller asked for a persistent stream but the wrapper did not
 2224|       |		 * return one, force an error here */
 2225|  1.39k|		if (stream && persistent && !stream->is_persistent) {
  ------------------
  |  Branch (2225:7): [True: 673, False: 720]
  |  Branch (2225:17): [True: 0, False: 673]
  |  Branch (2225:31): [True: 0, False: 0]
  ------------------
 2226|      0|			php_stream_wrapper_log_warn(wrapper, context, options & ~REPORT_ERRORS,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 2227|      0|					PersistentNotSupported,
 2228|      0|					"wrapper does not support persistent streams");
 2229|      0|			php_stream_close(stream);
  ------------------
  |  |  357|      0|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      0|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      0|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2230|      0|			stream = NULL;
 2231|      0|		}
 2232|       |
 2233|  1.39k|		if (stream) {
  ------------------
  |  Branch (2233:7): [True: 673, False: 720]
  ------------------
 2234|    673|			stream->wrapper = wrapper;
 2235|    673|		}
 2236|  1.39k|	}
 2237|       |
 2238|  3.37k|	if (stream) {
  ------------------
  |  Branch (2238:6): [True: 673, False: 2.70k]
  ------------------
 2239|    673|		if (opened_path && !*opened_path && resolved_path) {
  ------------------
  |  Branch (2239:7): [True: 672, False: 1]
  |  Branch (2239:22): [True: 666, False: 6]
  |  Branch (2239:39): [True: 0, False: 666]
  ------------------
 2240|      0|			*opened_path = resolved_path;
 2241|      0|			resolved_path = NULL;
 2242|      0|		}
 2243|    673|		if (stream->orig_path) {
  ------------------
  |  Branch (2243:7): [True: 1, False: 672]
  ------------------
 2244|      1|			pefree(stream->orig_path, persistent);
  ------------------
  |  |  190|      1|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      1|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      1|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      1|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      1|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      1|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2245|      1|		}
 2246|    673|		stream->orig_path = pestrdup(path, persistent);
  ------------------
  |  |  205|    673|#define pestrdup(s, persistent) ((persistent)?__zend_strdup(s):estrdup(s))
  |  |  ------------------
  |  |  |  |  163|    673|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    673|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    673|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    673|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    673|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (205:34): [True: 0, False: 673]
  |  |  ------------------
  ------------------
 2247|    673|#if ZEND_DEBUG
 2248|    673|		stream->open_filename = __zend_orig_filename ? __zend_orig_filename : __zend_filename;
  ------------------
  |  Branch (2248:27): [True: 0, False: 673]
  ------------------
 2249|    673|		stream->open_lineno = __zend_orig_lineno ? __zend_orig_lineno : __zend_lineno;
  ------------------
  |  Branch (2249:25): [True: 0, False: 673]
  ------------------
 2250|    673|#endif
 2251|    673|		if (stream->ctx == NULL && context != NULL && !persistent) {
  ------------------
  |  Branch (2251:7): [True: 673, False: 0]
  |  Branch (2251:30): [True: 1, False: 672]
  |  Branch (2251:49): [True: 1, False: 0]
  ------------------
 2252|      1|			php_stream_context_set(stream, context);
 2253|      1|		}
 2254|    673|	}
 2255|       |
 2256|  3.37k|	if (stream != NULL && (options & STREAM_MUST_SEEK)) {
  ------------------
  |  |  587|    673|#define STREAM_MUST_SEEK                0x00000010
  ------------------
  |  Branch (2256:6): [True: 673, False: 2.70k]
  |  Branch (2256:24): [True: 0, False: 673]
  ------------------
 2257|      0|		php_stream *newstream;
 2258|       |
 2259|      0|		switch(php_stream_make_seekable_rel(stream, &newstream,
  ------------------
  |  |   78|      0|#define php_stream_make_seekable_rel(origstream, newstream, flags) _php_stream_make_seekable((origstream), (newstream), (flags) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|      0|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (78:122): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2260|      0|					(options & STREAM_WILL_CAST)
 2261|      0|						? PHP_STREAM_PREFER_STDIO : PHP_STREAM_NO_PREFERENCE)) {
 2262|      0|			case PHP_STREAM_UNCHANGED:
  ------------------
  |  Branch (2262:4): [True: 0, False: 0]
  ------------------
 2263|      0|				if (resolved_path) {
  ------------------
  |  Branch (2263:9): [True: 0, False: 0]
  ------------------
 2264|      0|					zend_string_release_ex(resolved_path, 0);
 2265|      0|				}
 2266|      0|				pefree(wrapper_name, persistent);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2267|      0|				return stream;
 2268|      0|			case PHP_STREAM_RELEASED:
  ------------------
  |  Branch (2268:4): [True: 0, False: 0]
  ------------------
 2269|      0|				if (newstream->orig_path) {
  ------------------
  |  Branch (2269:9): [True: 0, False: 0]
  ------------------
 2270|      0|					pefree(newstream->orig_path, persistent);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2271|      0|				}
 2272|      0|				newstream->orig_path = pestrdup(path, persistent);
  ------------------
  |  |  205|      0|#define pestrdup(s, persistent) ((persistent)?__zend_strdup(s):estrdup(s))
  |  |  ------------------
  |  |  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (205:34): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2273|      0|				if (resolved_path) {
  ------------------
  |  Branch (2273:9): [True: 0, False: 0]
  ------------------
 2274|      0|					zend_string_release_ex(resolved_path, 0);
 2275|      0|				}
 2276|      0|				pefree(wrapper_name, persistent);
  ------------------
  |  |  190|      0|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2277|      0|				return newstream;
 2278|      0|			default:
  ------------------
  |  Branch (2278:4): [True: 0, False: 0]
  ------------------
 2279|      0|				php_stream_close(stream);
  ------------------
  |  |  357|      0|#define php_stream_close(stream)	_php_stream_free((stream), PHP_STREAM_FREE_CLOSE)
  |  |  ------------------
  |  |  |  |  351|      0|#define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  344|      0|#define PHP_STREAM_FREE_CALL_DTOR			1 /* call ops->close */
  |  |  |  |  ------------------
  |  |  |  |               #define PHP_STREAM_FREE_CLOSE				(PHP_STREAM_FREE_CALL_DTOR | PHP_STREAM_FREE_RELEASE_STREAM)
  |  |  |  |  ------------------
  |  |  |  |  |  |  345|      0|#define PHP_STREAM_FREE_RELEASE_STREAM		2 /* pefree(stream) */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2280|      0|				stream = NULL;
 2281|      0|				if (options & REPORT_ERRORS) {
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (2281:9): [True: 0, False: 0]
  ------------------
 2282|      0|					char *tmp = estrdup(path);
  ------------------
  |  |  163|      0|#define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define estrdup(s)							_estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2283|      0|					php_strip_url_passwd(tmp);
 2284|      0|					php_stream_wrapper_warn_param(wrapper, context, options,
  ------------------
  |  |  190|      0|	php_stream_wrapper_error_param( \
  |  |  191|      0|			wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  192|      0|			PHP_STREAM_EC(code), param, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 2285|      0|							SeekNotSupported, tmp,
 2286|      0|							"could not make seekable - %s", tmp);
 2287|      0|					efree(tmp);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2288|       |
 2289|      0|					options &= ~REPORT_ERRORS;
  ------------------
  |  |  583|      0|#define REPORT_ERRORS                   0x00000008
  ------------------
 2290|      0|				}
 2291|      0|		}
 2292|      0|	}
 2293|       |
 2294|  3.37k|	if (stream && stream->ops->seek && (stream->flags & PHP_STREAM_FLAG_NO_SEEK) == 0 && strchr(mode, 'a') && stream->position == 0) {
  ------------------
  |  |  164|    673|#define PHP_STREAM_FLAG_NO_SEEK						0x1
  ------------------
  |  Branch (2294:6): [True: 673, False: 2.70k]
  |  Branch (2294:16): [True: 673, False: 0]
  |  Branch (2294:37): [True: 673, False: 0]
  |  Branch (2294:87): [True: 0, False: 673]
  |  Branch (2294:108): [True: 0, False: 0]
  ------------------
 2295|      0|		zend_off_t newpos = 0;
 2296|       |
 2297|       |		/* if opened for append, we need to revise our idea of the initial file position */
 2298|      0|		if (0 == stream->ops->seek(stream, 0, SEEK_CUR, &newpos)) {
  ------------------
  |  Branch (2298:7): [True: 0, False: 0]
  ------------------
 2299|      0|			stream->position = newpos;
 2300|      0|		}
 2301|      0|	}
 2302|       |
 2303|  3.37k|	if (stream == NULL && (options & REPORT_ERRORS)) {
  ------------------
  |  |  583|    718|#define REPORT_ERRORS                   0x00000008
  ------------------
  |  Branch (2303:6): [True: 718, False: 2.65k]
  |  Branch (2303:24): [True: 718, False: 0]
  ------------------
 2304|    718|		php_stream_display_wrapper_name_errors(wrapper_name, context, PHP_STREAM_EC(OpenFailed),
  ------------------
  |  |   44|    718|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  ------------------
 2305|    718|				path, "Failed to open stream");
 2306|    718|		if (opened_path && *opened_path) {
  ------------------
  |  Branch (2306:7): [True: 718, False: 0]
  |  Branch (2306:22): [True: 0, False: 718]
  ------------------
 2307|      0|			zend_string_release_ex(*opened_path, 0);
 2308|      0|			*opened_path = NULL;
 2309|      0|		}
 2310|    718|	}
 2311|  3.37k|	php_stream_tidy_wrapper_name_error_log(wrapper_name);
 2312|  3.37k|	pefree(wrapper_name, persistent);
  ------------------
  |  |  190|  3.37k|#define pefree(ptr, persistent)  ((persistent)?free(ptr):efree(ptr))
  |  |  ------------------
  |  |  |  |  154|  3.37k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|  3.37k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|  3.37k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|  3.37k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|  3.37k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (190:35): [True: 0, False: 3.37k]
  |  |  ------------------
  ------------------
 2313|  3.37k|	if (resolved_path) {
  ------------------
  |  Branch (2313:6): [True: 6, False: 3.36k]
  ------------------
 2314|      6|		zend_string_release_ex(resolved_path, 0);
 2315|      6|	}
 2316|  3.37k|	return stream;
 2317|  3.37k|}
php_stream_context_set:
 2322|      1|{
 2323|      1|	php_stream_context *oldcontext = PHP_STREAM_CONTEXT(stream);
  ------------------
  |  |  254|      1|	((php_stream_context*) ((stream)->ctx ? ((stream)->ctx->ptr) : NULL))
  |  |  ------------------
  |  |  |  Branch (254:26): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2324|       |
 2325|      1|	if (context) {
  ------------------
  |  Branch (2325:6): [True: 1, False: 0]
  ------------------
 2326|      1|		stream->ctx = context->res;
 2327|      1|		GC_ADDREF(context->res);
  ------------------
  |  |  718|      1|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
 2328|      1|	} else {
 2329|      0|		stream->ctx = NULL;
 2330|      0|	}
 2331|      1|	if (oldcontext) {
  ------------------
  |  Branch (2331:6): [True: 0, False: 1]
  ------------------
 2332|      0|		zend_list_delete(oldcontext->res);
 2333|      0|	}
 2334|       |
 2335|      1|	return oldcontext;
 2336|      1|}
php_stream_context_free:
 2346|      4|{
 2347|      4|	if (Z_TYPE(context->options) != IS_UNDEF) {
  ------------------
  |  |  668|      4|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(context->options) != IS_UNDEF) {
  ------------------
  |  |  606|      4|#define IS_UNDEF					0
  ------------------
  |  Branch (2347:6): [True: 0, False: 4]
  ------------------
 2348|      0|		zval_ptr_dtor(&context->options);
 2349|      0|		ZVAL_UNDEF(&context->options);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2350|      0|	}
 2351|      4|	if (context->notifier) {
  ------------------
  |  Branch (2351:6): [True: 0, False: 4]
  ------------------
 2352|      0|		php_stream_notification_free(context->notifier);
 2353|      0|		context->notifier = NULL;
 2354|      0|	}
 2355|       |	efree(context);
  ------------------
  |  |  154|      4|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2356|      4|}
php_stream_context_alloc:
 2359|      4|{
 2360|      4|	php_stream_context *context;
 2361|       |
 2362|      4|	context = ecalloc(1, sizeof(php_stream_context));
  ------------------
  |  |  157|      4|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      4|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      4|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      4|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      4|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2363|      4|	array_init(&context->options);
 2364|       |
 2365|      4|	context->res = zend_register_resource(context, php_le_stream_context());
 2366|      4|	return context;
 2367|      4|}
php_stream_context_get_option:
 2384|      3|{
 2385|      3|	zval *wrapperhash;
 2386|       |
 2387|      3|	if (NULL == (wrapperhash = zend_hash_str_find(Z_ARRVAL(context->options), wrappername, strlen(wrappername)))) {
  ------------------
  |  |  996|      3|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  ------------------
  |  |  |  |  993|      3|#define Z_ARR(zval)					(zval).value.arr
  |  |  ------------------
  ------------------
  |  Branch (2387:6): [True: 3, False: 0]
  ------------------
 2388|      3|		return NULL;
 2389|      3|	}
 2390|      0|	return zend_hash_str_find(Z_ARRVAL_P(wrapperhash), optionname, strlen(optionname));
  ------------------
  |  |  997|      0|#define Z_ARRVAL_P(zval_p)			Z_ARRVAL(*(zval_p))
  |  |  ------------------
  |  |  |  |  996|      0|#define Z_ARRVAL(zval)				Z_ARR(zval)
  |  |  |  |  ------------------
  |  |  |  |  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2391|      3|}
streams.c:php_stream_filters_seek_all:
 1270|     53|{
 1271|     53|	if (php_stream_filters_seek(stream, stream->writefilters.head, is_start_seeking,
  ------------------
  |  Branch (1271:6): [True: 0, False: 53]
  ------------------
 1272|     53|			offset, whence, PHP_STREAM_FILTER_WRITE) == FAILURE) {
  ------------------
  |  |   32|     53|#define PHP_STREAM_FILTER_WRITE	0x0002
  ------------------
 1273|      0|		return FAILURE;
 1274|      0|	}
 1275|     53|	if (php_stream_filters_seek(stream, stream->readfilters.head, is_start_seeking,
  ------------------
  |  Branch (1275:6): [True: 0, False: 53]
  ------------------
 1276|     53|			offset, whence, PHP_STREAM_FILTER_READ) == FAILURE) {
  ------------------
  |  |   31|     53|#define PHP_STREAM_FILTER_READ	0x0001
  ------------------
 1277|      0|		return FAILURE;
 1278|      0|	}
 1279|       |
 1280|     53|	return SUCCESS;
 1281|     53|}
streams.c:php_stream_filters_seek:
 1253|    106|{
 1254|    106|	while (filter) {
  ------------------
  |  Branch (1254:9): [True: 0, False: 106]
  ------------------
 1255|      0|		php_stream_filter_seekable_t seekable = (chain_type == PHP_STREAM_FILTER_READ) ?
  ------------------
  |  |   31|      0|#define PHP_STREAM_FILTER_READ	0x0001
  ------------------
  |  Branch (1255:43): [True: 0, False: 0]
  ------------------
 1256|      0|				filter->read_seekable : filter->write_seekable;
 1257|      0|		if (((seekable == PSFS_SEEKABLE_START && is_start_seeking) ||
  ------------------
  |  Branch (1257:9): [True: 0, False: 0]
  |  Branch (1257:44): [True: 0, False: 0]
  ------------------
 1258|      0|				seekable == PSFS_SEEKABLE_CHECK) &&
  ------------------
  |  Branch (1258:5): [True: 0, False: 0]
  ------------------
 1259|      0|				filter->fops->seek(stream, filter, offset, whence) == FAILURE) {
  ------------------
  |  Branch (1259:5): [True: 0, False: 0]
  ------------------
 1260|      0|			php_error_docref(NULL, E_WARNING, "Stream filter seeking for %s failed", filter->fops->label);
  ------------------
  |  |   23|      0|#define E_WARNING			(1<<1L)
  ------------------
 1261|      0|			return FAILURE;
 1262|      0|		}
 1263|      0|		filter = filter->next;
 1264|      0|	}
 1265|    106|	return SUCCESS;
 1266|    106|}
streams.c:stream_resource_regular_dtor:
 1784|    694|{
 1785|    694|	php_stream *stream = (php_stream*)rsrc->ptr;
 1786|       |	/* set the return value for pclose */
 1787|    694|	FG(pclose_ret) = php_stream_free(stream, PHP_STREAM_FREE_CLOSE | PHP_STREAM_FREE_RSRC_DTOR);
  ------------------
  |  |  116|    694|#define FG(v) (file_globals.v)
  ------------------
              	FG(pclose_ret) = php_stream_free(stream, PHP_STREAM_FREE_CLOSE | PHP_STREAM_FREE_RSRC_DTOR);
  ------------------
  |  |  356|    694|#define php_stream_free(stream, close_options)	_php_stream_free((stream), (close_options))
  ------------------
 1788|    694|}
streams.c:php_stream_wrapper_scheme_validate:
 1855|     32|{
 1856|    157|	for (size_t i = 0; i < protocol_len; i++) {
  ------------------
  |  Branch (1856:21): [True: 126, False: 31]
  ------------------
 1857|    126|		if (!isalnum((unsigned char)protocol[i]) &&
  ------------------
  |  Branch (1857:7): [True: 1, False: 125]
  ------------------
 1858|      1|			protocol[i] != '+' &&
  ------------------
  |  Branch (1858:4): [True: 1, False: 0]
  ------------------
 1859|      1|			protocol[i] != '-' &&
  ------------------
  |  Branch (1859:4): [True: 1, False: 0]
  ------------------
 1860|      1|			protocol[i] != '.') {
  ------------------
  |  Branch (1860:4): [True: 1, False: 0]
  ------------------
 1861|      1|			return FAILURE;
 1862|      1|		}
 1863|    126|	}
 1864|       |
 1865|     31|	return SUCCESS;
 1866|     32|}
streams.c:clone_wrapper_hash:
 1891|     19|{
 1892|     19|	ALLOC_HASHTABLE(FG(stream_wrappers));
  ------------------
  |  |  232|     19|	(ht) = (HashTable *) emalloc(sizeof(HashTable))
  |  |  ------------------
  |  |  |  |  150|     19|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|     19|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|     19|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|     19|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|     19|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1893|     19|	zend_hash_init(FG(stream_wrappers), zend_hash_num_elements(&url_stream_wrappers_hash), NULL, NULL, 0);
  ------------------
  |  |  111|     19|	_zend_hash_init((ht), (nSize), (pDestructor), (persistent))
  ------------------
 1894|     19|	zend_hash_copy(FG(stream_wrappers), &url_stream_wrappers_hash, NULL);
  ------------------
  |  |  116|     19|#define FG(v) (file_globals.v)
  ------------------
 1895|     19|}

php_stream_xport_get_hash:
   22|      5|{
   23|      5|	return &xport_hash;
   24|      5|}
php_stream_xport_register:
   27|      8|{
   28|      8|	zend_string *str = zend_string_init_interned(protocol, strlen(protocol), 1);
   29|       |
   30|      8|	zend_hash_update_ptr(&xport_hash, str, factory);
   31|      8|	zend_string_release_ex(str, 1);
   32|      8|	return SUCCESS;
   33|      8|}

zm_startup_user_streams:
   77|      2|{
   78|      2|	le_protocols = zend_register_list_destructors_ex(stream_wrapper_dtor, NULL, "stream factory", 0);
   79|      2|	if (le_protocols == FAILURE)
  ------------------
  |  Branch (79:6): [True: 0, False: 2]
  ------------------
   80|      0|		return FAILURE;
   81|       |
   82|      2|	register_userspace_symbols(module_number);
   83|       |
   84|      2|	return SUCCESS;
   85|      2|}
zif_stream_wrapper_register:
  459|     20|{
  460|     20|	zend_string *protocol;
  461|     20|	struct php_user_stream_wrapper *uwrap;
  462|     20|	zend_class_entry *ce = NULL;
  463|     20|	zend_resource *rsrc;
  464|     20|	zend_long flags = 0;
  465|       |
  466|     20|	if (zend_parse_parameters(ZEND_NUM_ARGS(), "SC|l", &protocol, &ce, &flags) == FAILURE) {
  ------------------
  |  |  529|     20|#define ZEND_NUM_ARGS()						EX_NUM_ARGS()
  |  |  ------------------
  |  |  |  |  734|     20|#define EX_NUM_ARGS()			ZEND_CALL_NUM_ARGS(execute_data)
  |  |  |  |  ------------------
  |  |  |  |  |  |  712|     20|	(call)->This.u2.num_args
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (466:6): [True: 0, False: 20]
  ------------------
  467|      0|		RETURN_THROWS();
  ------------------
  |  | 1071|      0|#define RETURN_THROWS()					do { ZEND_ASSERT(EG(exception)); (void) return_value; return; } while (0)
  |  |  ------------------
  |  |  |  |  112|      0|# define ZEND_ASSERT(c)	assert(c)
  |  |  ------------------
  |  |  |  Branch (1071:100): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (467:3): [True: 0, False: 0]
  |  Branch (467:3): [True: 0, False: 0]
  ------------------
  468|      0|	}
  469|       |
  470|     20|	uwrap = (struct php_user_stream_wrapper *)ecalloc(1, sizeof(*uwrap));
  ------------------
  |  |  157|     20|#define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ecalloc(nmemb, size)				_ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  471|     20|	uwrap->ce = ce;
  472|     20|	uwrap->wrapper.wops = &user_stream_wops;
  473|     20|	uwrap->wrapper.abstract = uwrap;
  474|     20|	uwrap->wrapper.is_url = ((flags & PHP_STREAM_IS_URL) != 0);
  ------------------
  |  |  686|     20|#define PHP_STREAM_IS_URL		1
  ------------------
  475|       |
  476|     20|	rsrc = zend_register_resource(uwrap, le_protocols);
  477|       |
  478|     20|	if (php_register_url_stream_wrapper_volatile(protocol, &uwrap->wrapper) == SUCCESS) {
  ------------------
  |  Branch (478:6): [True: 19, False: 1]
  ------------------
  479|     19|		uwrap->resource = rsrc;
  480|     19|		RETURN_TRUE;
  ------------------
  |  | 1070|     19|#define RETURN_TRUE						do { RETVAL_TRUE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1044|     19|#define RETVAL_TRUE						ZVAL_TRUE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1067|     19|#define ZVAL_TRUE(z) do {				\
  |  |  |  |  |  | 1068|     19|		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|     19|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|     19|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_TRUE;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  609|     19|#define IS_TRUE						3
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1069|     19|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1069:11): [Folded, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1070:61): [Folded, False: 0]
  |  |  ------------------
  ------------------
  481|     19|	}
  482|       |
  483|       |	/* We failed.  But why? */
  484|      1|	if (zend_hash_exists(php_stream_get_url_stream_wrappers_hash(), protocol)) {
  ------------------
  |  |  662|      1|#define php_stream_get_url_stream_wrappers_hash()	_php_stream_get_url_stream_wrappers_hash()
  ------------------
  |  Branch (484:6): [True: 0, False: 1]
  ------------------
  485|      0|		php_stream_wrapper_warn(&uwrap->wrapper, NULL, REPORT_ERRORS,
  ------------------
  |  |  173|      0|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  486|      0|				WrapperRegistrationFailed,
  487|      0|				"Protocol %s:// is already defined.", ZSTR_VAL(protocol));
  488|      1|	} else {
  489|       |		/* Hash doesn't exist so it must have been an invalid protocol scheme */
  490|      1|		php_stream_wrapper_warn(&uwrap->wrapper, NULL, REPORT_ERRORS,
  ------------------
  |  |  173|      1|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      1|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      1|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      1|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  491|      1|				WrapperRegistrationFailed,
  492|      1|				"Invalid protocol scheme specified. Unable to register wrapper class %s to %s://",
  493|      1|				ZSTR_VAL(uwrap->ce->name), ZSTR_VAL(protocol));
  494|      1|	}
  495|       |
  496|      1|	zend_list_delete(rsrc);
  497|      1|	RETURN_FALSE;
  ------------------
  |  | 1069|      1|#define RETURN_FALSE					do { RETVAL_FALSE; return; } while (0)
  |  |  ------------------
  |  |  |  | 1043|      1|#define RETVAL_FALSE					ZVAL_FALSE(return_value)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1063|      1|#define ZVAL_FALSE(z) do {				\
  |  |  |  |  |  | 1064|      1|		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(z) = IS_FALSE;	\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|      1|#define IS_FALSE					2
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1065|      1|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1065:11): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1069:62): [Folded, False: 0]
  |  |  ------------------
  ------------------
  498|      1|}
userspace.c:stream_wrapper_dtor:
   69|     20|{
   70|     20|	struct php_user_stream_wrapper * uwrap = (struct php_user_stream_wrapper*)rsrc->ptr;
   71|       |
   72|       |	efree(uwrap);
  ------------------
  |  |  154|     20|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|     20|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|     20|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|     20|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|     20|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|     20|}
userspace.c:user_wrapper_opener:
  284|  1.33k|{
  285|  1.33k|	struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
  286|  1.33k|	php_userstream_data_t *us;
  287|  1.33k|	zval zretval;
  288|  1.33k|	zval args[4];
  289|  1.33k|	php_stream *stream = NULL;
  290|  1.33k|	bool old_in_user_include;
  291|       |
  292|       |	/* Try to catch bad usage without preventing flexibility */
  293|  1.33k|	if (FG(user_stream_current_filename) != NULL && strcmp(filename, FG(user_stream_current_filename)) == 0) {
  ------------------
  |  |  116|  1.33k|#define FG(v) (file_globals.v)
  ------------------
              	if (FG(user_stream_current_filename) != NULL && strcmp(filename, FG(user_stream_current_filename)) == 0) {
  ------------------
  |  |  116|    662|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (293:6): [True: 662, False: 668]
  |  Branch (293:50): [True: 662, False: 0]
  ------------------
  294|    662|		php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|    662|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|    662|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|    662|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|    662|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  295|    662|				RecursionDetected, "infinite recursion prevented");
  296|    662|		return NULL;
  297|    662|	}
  298|    668|	FG(user_stream_current_filename) = filename;
  ------------------
  |  |  116|    668|#define FG(v) (file_globals.v)
  ------------------
  299|       |
  300|       |	/* if the user stream was registered as local and we are in include context,
  301|       |		we add allow_url_include restrictions to allow_url_fopen ones */
  302|       |	/* we need only is_url == 0 here since if is_url == 1 and remote wrappers
  303|       |		were restricted we wouldn't get here */
  304|    668|	old_in_user_include = PG(in_user_include);
  ------------------
  |  |   29|    668|# define PG(v) (core_globals.v)
  ------------------
  305|    668|	if(uwrap->wrapper.is_url == 0 &&
  ------------------
  |  Branch (305:5): [True: 668, False: 0]
  ------------------
  306|    668|		(options & STREAM_OPEN_FOR_INCLUDE) &&
  ------------------
  |  |  601|    668|#define STREAM_OPEN_FOR_INCLUDE         0x00000080
  ------------------
  |  Branch (306:3): [True: 668, False: 0]
  ------------------
  307|    668|		!PG(allow_url_include)) {
  ------------------
  |  |   29|    668|# define PG(v) (core_globals.v)
  ------------------
  |  Branch (307:3): [True: 668, False: 0]
  ------------------
  308|    668|		PG(in_user_include) = 1;
  ------------------
  |  |   29|    668|# define PG(v) (core_globals.v)
  ------------------
  309|    668|	}
  310|       |
  311|    668|	us = emalloc(sizeof(*us));
  ------------------
  |  |  150|    668|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    668|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    668|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    668|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    668|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|    668|	us->wrapper = uwrap;
  313|       |	/* zend_call_method_if_exists() may unregister the stream wrapper. Hold on to it. */
  314|    668|	GC_ADDREF(us->wrapper->resource);
  ------------------
  |  |  718|    668|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  315|       |
  316|    668|	user_stream_create_object(uwrap, context, &us->object);
  317|    668|	if (Z_ISUNDEF(us->object)) {
  ------------------
  |  |  966|    668|#define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  668|    668|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISUNDEF(zval)				(Z_TYPE(zval) == IS_UNDEF)
  |  |  ------------------
  |  |  |  |  606|    668|#define IS_UNDEF					0
  |  |  ------------------
  |  |  |  Branch (966:28): [True: 0, False: 668]
  |  |  ------------------
  ------------------
  318|      0|		goto end;
  319|      0|	}
  320|       |
  321|       |	/* call its stream_open method - set up params first */
  322|    668|	ZVAL_STRING(&args[0], filename);
  ------------------
  |  |  967|    668|#define ZVAL_STRING(z, s) do {					\
  |  |  968|    668|		const char *_s = (s);					\
  |  |  969|    668|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|    668|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|    668|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    668|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    668|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    668|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    668|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    668|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    668|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    668|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    668|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    668|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    668|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    668|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    668|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    668|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    668|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 668]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|    668|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 668]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|    668|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 668]
  |  |  ------------------
  ------------------
  323|    668|	ZVAL_STRING(&args[1], mode);
  ------------------
  |  |  967|    668|#define ZVAL_STRING(z, s) do {					\
  |  |  968|    668|		const char *_s = (s);					\
  |  |  969|    668|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|    668|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|    668|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|    668|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|    668|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|    668|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|    668|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|    668|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|    668|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|    668|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    668|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    668|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|    668|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|    668|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|    668|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|    668|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|    668|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 668]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|    668|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 668]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|    668|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 668]
  |  |  ------------------
  ------------------
  324|    668|	ZVAL_LONG(&args[2], options);
  ------------------
  |  | 1076|    668|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    668|		zval *__z = (z);				\
  |  | 1078|    668|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    668|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    668|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    668|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    668|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    668|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    668|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    668|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 668]
  |  |  ------------------
  ------------------
  325|    668|	ZVAL_NEW_REF(&args[3], &EG(uninitialized_zval));
  ------------------
  |  | 1205|    668|#define ZVAL_NEW_REF(z, r) do {									\
  |  | 1206|    668|		zend_reference *_ref =									\
  |  | 1207|    668|		(zend_reference *) emalloc(sizeof(zend_reference));		\
  |  |  ------------------
  |  |  |  |  150|    668|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  481|    668|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  480|    668|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  |  |  ------------------
  |  |  |  |  |  |  483|    668|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  482|    668|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1208|    668|		GC_SET_REFCOUNT(_ref, 1);								\
  |  |  ------------------
  |  |  |  |  717|    668|#define GC_SET_REFCOUNT(p, rc)		zend_gc_set_refcount(&(p)->gc, rc)
  |  |  ------------------
  |  | 1209|    668|		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  775|    668|#define GC_TYPE_INFO(p)				(p)->gc.u.type_info
  |  |  ------------------
  |  |               		GC_TYPE_INFO(_ref) = GC_REFERENCE;						\
  |  |  ------------------
  |  |  |  |  810|    668|#define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    668|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  799|    668|#define GC_NOT_COLLECTABLE			(1<<4)
  |  |  |  |  ------------------
  |  |  |  |               #define GC_REFERENCE				(IS_REFERENCE    | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    668|#define GC_FLAGS_SHIFT				0
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1210|    668|		ZVAL_COPY_VALUE(&_ref->val, r);							\
  |  |  ------------------
  |  |  |  | 1416|    668|	do {												\
  |  |  |  | 1417|    668|		zval *_z1 = (z);								\
  |  |  |  | 1418|    668|		const zval *_z2 = (v);							\
  |  |  |  | 1419|    668|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    668|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    668|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1420|    668|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    668|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    668|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1421|    668|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1407|    668|	do {												\
  |  |  |  |  |  | 1408|    668|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  708|    668|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  707|    668|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1409|    668|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|    668|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|    668|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1410|    668|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1410:11): [Folded, False: 668]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1422|    668|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1422:11): [Folded, False: 668]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1211|    668|		_ref->sources.ptr = NULL;									\
  |  | 1212|    668|		Z_REF_P(z) = _ref;										\
  |  |  ------------------
  |  |  |  | 1030|    668|#define Z_REF_P(zval_p)				Z_REF(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1029|    668|#define Z_REF(zval)					(zval).value.ref
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1213|    668|		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  678|    668|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    668|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_REFERENCE_EX;						\
  |  |  ------------------
  |  |  |  |  832|    668|#define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|    668|#define IS_REFERENCE				10
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    668|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    668|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  815|    668|#define IS_TYPE_COLLECTABLE			(1<<1)
  |  |  |  |  ------------------
  |  |  |  |               #define IS_REFERENCE_EX				(IS_REFERENCE      | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  713|    668|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1214|    668|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1214:11): [Folded, False: 668]
  |  |  ------------------
  ------------------
  326|       |
  327|    668|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_OPEN, false);
  ------------------
  |  |  141|    668|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  328|    668|	zend_result call_result = zend_call_method_if_exists(Z_OBJ(us->object), func_name, &zretval, 4, args);
  ------------------
  |  |  999|    668|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  329|    668|	zend_string_release_ex(func_name, false);
  330|       |
  331|       |	/* Keep arg3 alive if it has assigned the reference */
  332|    668|	zval_ptr_dtor(&args[1]);
  333|    668|	zval_ptr_dtor(&args[0]);
  334|       |
  335|    668|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|    668|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 668]
  |  |  ------------------
  ------------------
  336|      0|		php_stream_wrapper_log_warn(wrapper, context, options,NotImplemented,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  337|      0|				"\"%s::" USERSTREAM_OPEN "\" is not implemented", ZSTR_VAL(us->wrapper->ce->name));
  338|      0|		zval_ptr_dtor(&args[3]);
  339|      0|		goto end;
  340|      0|	}
  341|       |	/* Exception occurred */
  342|    668|	if (UNEXPECTED(Z_ISUNDEF(zretval))) {
  ------------------
  |  |  457|    668|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 668]
  |  |  ------------------
  ------------------
  343|      0|		zval_ptr_dtor(&args[3]);
  344|      0|		goto end;
  345|      0|	}
  346|    668|	if (zend_is_true(&zretval)) {
  ------------------
  |  Branch (346:6): [True: 666, False: 2]
  ------------------
  347|       |		/* the stream is now open! */
  348|    666|		stream = php_stream_alloc_rel(&php_stream_userspace_ops, us, 0, mode);
  ------------------
  |  |   58|    666|#define php_stream_alloc_rel(ops, thisptr, persistent, mode) _php_stream_alloc((ops), (thisptr), (persistent), (mode) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|    666|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|    666|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|    666|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|    666|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|    666|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 666, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|    666|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 666, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  349|       |
  350|       |		/* if the opened path is set, copy it out */
  351|    666|		if (Z_ISREF(args[3]) && Z_TYPE_P(Z_REFVAL(args[3])) == IS_STRING && opened_path) {
  ------------------
  |  |  963|  1.33k|#define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  668|    666|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  |  |               #define Z_ISREF(zval)				(Z_TYPE(zval) == IS_REFERENCE)
  |  |  ------------------
  |  |  |  |  616|    666|#define IS_REFERENCE				10
  |  |  ------------------
  |  |  |  Branch (963:26): [True: 666, False: 0]
  |  |  ------------------
  ------------------
              		if (Z_ISREF(args[3]) && Z_TYPE_P(Z_REFVAL(args[3])) == IS_STRING && opened_path) {
  ------------------
  |  |  669|    666|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|    666|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_ISREF(args[3]) && Z_TYPE_P(Z_REFVAL(args[3])) == IS_STRING && opened_path) {
  ------------------
  |  |  612|  1.33k|#define IS_STRING					6
  ------------------
  |  Branch (351:27): [True: 0, False: 666]
  |  Branch (351:71): [True: 0, False: 0]
  ------------------
  352|      0|			*opened_path = zend_string_copy(Z_STR_P(Z_REFVAL(args[3])));
  ------------------
  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  ------------------
  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  ------------------
  ------------------
  353|      0|		}
  354|       |		// TODO Warn when assigning a non string value to the reference?
  355|       |
  356|       |		/* set wrapper data to be a reference to our object */
  357|    666|		ZVAL_COPY(&stream->wrapperdata, &us->object);
  ------------------
  |  | 1425|    666|	do {												\
  |  | 1426|    666|		zval *_z1 = (z);								\
  |  | 1427|    666|		const zval *_z2 = (v);							\
  |  | 1428|    666|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|    666|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|    666|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|    666|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|    666|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|    666|	do {												\
  |  |  |  | 1408|    666|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|    666|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|    666|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|    666|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|    666|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 666]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|    666|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|    666|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|    666|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 666, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|    666|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|    666|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|    666|		}												\
  |  | 1434|    666|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 666]
  |  |  ------------------
  ------------------
  358|    666|	} else {
  359|      2|		php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|      2|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      2|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      2|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      2|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  360|      2|				UserspaceCallFailed,
  361|      2|				"\"%s::" USERSTREAM_OPEN "\" call failed", ZSTR_VAL(us->wrapper->ce->name));
  362|      2|	}
  363|       |
  364|    668|	zval_ptr_dtor(&zretval);
  365|    668|	zval_ptr_dtor(&args[3]);
  366|       |
  367|    668|end:
  368|    666|	FG(user_stream_current_filename) = NULL;
  ------------------
  |  |  116|    666|#define FG(v) (file_globals.v)
  ------------------
  369|    666|	PG(in_user_include) = old_in_user_include;
  ------------------
  |  |   29|    666|# define PG(v) (core_globals.v)
  ------------------
  370|    666|	if (stream == NULL) {
  ------------------
  |  Branch (370:6): [True: 0, False: 666]
  ------------------
  371|      0|		zval_ptr_dtor(&us->object);
  372|      0|		zend_list_delete(us->wrapper->resource);
  373|       |		efree(us);
  ------------------
  |  |  154|      0|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      0|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      0|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  374|      0|	}
  375|    666|	return stream;
  376|    668|}
userspace.c:user_stream_create_object:
  251|  4.63k|{
  252|  4.63k|	if (uwrap->ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  281|  4.63k|#define ZEND_ACC_INTERFACE               (1 <<  0) /*  X  |     |     |     */
  ------------------
              	if (uwrap->ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  282|  4.63k|#define ZEND_ACC_TRAIT                   (1 <<  1) /*  X  |     |     |     */
  ------------------
              	if (uwrap->ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  291|  4.63k|#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 <<  4) /*  X  |     |     |     */
  ------------------
              	if (uwrap->ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
  ------------------
  |  |  234|  4.63k|#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 <<  6) /*  X  |     |     |     */
  ------------------
  |  Branch (252:6): [True: 0, False: 4.63k]
  ------------------
  253|      0|		ZVAL_UNDEF(object);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|      0|		return;
  255|      0|	}
  256|       |
  257|       |	/* create an instance of our class */
  258|  4.63k|	if (object_init_ex(object, uwrap->ce) == FAILURE) {
  ------------------
  |  Branch (258:6): [True: 0, False: 4.63k]
  ------------------
  259|      0|		ZVAL_UNDEF(object);
  ------------------
  |  | 1055|      0|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      0|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      0|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  260|      0|		return;
  261|      0|	}
  262|       |
  263|  4.63k|	if (context) {
  ------------------
  |  Branch (263:6): [True: 2, False: 4.62k]
  ------------------
  264|      2|		GC_ADDREF(context->res);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  265|      2|		add_property_resource(object, "context", context->res);
  266|  4.62k|	} else {
  267|  4.62k|		add_property_null(object, "context");
  268|  4.62k|	}
  269|       |
  270|  4.63k|	if (EG(exception) != NULL) {
  ------------------
  |  |   45|  4.63k|# define EG(v) (executor_globals.v)
  ------------------
  |  Branch (270:6): [True: 2, False: 4.62k]
  ------------------
  271|      2|		zval_ptr_dtor(object);
  272|      2|		ZVAL_UNDEF(object);
  ------------------
  |  | 1055|      2|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      2|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      2|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      2|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      2|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  273|      2|		return;
  274|      2|	}
  275|       |
  276|  4.62k|	if (uwrap->ce->constructor) {
  ------------------
  |  Branch (276:6): [True: 0, False: 4.62k]
  ------------------
  277|      0|		zend_call_known_instance_method_with_0_params(
  278|      0|			uwrap->ce->constructor, Z_OBJ_P(object), NULL);
  ------------------
  |  | 1000|      0|#define Z_OBJ_P(zval_p)				Z_OBJ(*(zval_p))
  |  |  ------------------
  |  |  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  |  |  ------------------
  ------------------
  279|      0|	}
  280|  4.62k|}
userspace.c:user_wrapper_close:
  379|      4|{
  380|      4|	struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
  381|      4|	zend_list_delete(uwrap->resource);
  382|       |	// FIXME: Unused?
  383|      4|	return 0;
  384|      4|}
userspace.c:user_wrapper_stat_url:
 1305|  3.96k|{
 1306|  3.96k|	struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
 1307|  3.96k|	zval zretval;
 1308|  3.96k|	zval args[2];
 1309|  3.96k|	zval object;
 1310|  3.96k|	int ret = -1;
 1311|       |
 1312|       |	/* create an instance of our class */
 1313|  3.96k|	user_stream_create_object(uwrap, context, &object);
 1314|  3.96k|	if (Z_TYPE(object) == IS_UNDEF) {
  ------------------
  |  |  668|  3.96k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(object) == IS_UNDEF) {
  ------------------
  |  |  606|  3.96k|#define IS_UNDEF					0
  ------------------
  |  Branch (1314:6): [True: 0, False: 3.96k]
  ------------------
 1315|      0|		return -1;
 1316|      0|	}
 1317|       |
 1318|       |	/* call it's stat_url method - set up params first */
 1319|  3.96k|	ZVAL_STRING(&args[0], url);
  ------------------
  |  |  967|  3.96k|#define ZVAL_STRING(z, s) do {					\
  |  |  968|  3.96k|		const char *_s = (s);					\
  |  |  969|  3.96k|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|  3.96k|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|  3.96k|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|  3.96k|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|  3.96k|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|  3.96k|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|  3.96k|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|  3.96k|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|  3.96k|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|  3.96k|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|  3.96k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|  3.96k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|  3.96k|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|  3.96k|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.96k|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|  3.96k|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|  3.96k|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 3.96k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|  3.96k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 3.96k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|  3.96k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 3.96k]
  |  |  ------------------
  ------------------
 1320|  3.96k|	ZVAL_LONG(&args[1], flags);
  ------------------
  |  | 1076|  3.96k|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|  3.96k|		zval *__z = (z);				\
  |  | 1078|  3.96k|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|  3.96k|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|  3.96k|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|  3.96k|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|  3.96k|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|  3.96k|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|  3.96k|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|  3.96k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 3.96k]
  |  |  ------------------
  ------------------
 1321|       |
 1322|  3.96k|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_STATURL, false);
  ------------------
  |  |  141|  3.96k|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 1323|  3.96k|	zend_result call_result = zend_call_method_if_exists(Z_OBJ(object), func_name, &zretval, 2, args);
  ------------------
  |  |  999|  3.96k|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1324|  3.96k|	zend_string_release_ex(func_name, false);
 1325|  3.96k|	zval_ptr_dtor(&args[0]);
 1326|  3.96k|	zval_ptr_dtor(&object);
 1327|       |
 1328|  3.96k|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|  3.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3.96k]
  |  |  ------------------
  ------------------
 1329|      1|		php_stream_wrapper_warn(wrapper, context, REPORT_ERRORS, NotImplemented,
  ------------------
  |  |  173|      1|	php_stream_wrapper_error(wrapper, context, NULL, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      1|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  174|      1|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      1|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 1330|      1|			"%s::" USERSTREAM_STATURL " is not implemented!", ZSTR_VAL(uwrap->ce->name));
 1331|      1|		return -1;
 1332|      1|	}
 1333|  3.96k|	if (UNEXPECTED(Z_ISUNDEF(zretval))) {
  ------------------
  |  |  457|  3.96k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 3.96k]
  |  |  ------------------
  ------------------
 1334|      0|		return -1;
 1335|      0|	}
 1336|  3.96k|	if (EXPECTED(Z_TYPE(zretval) == IS_ARRAY)) {
  ------------------
  |  |  456|  3.96k|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3.96k]
  |  |  ------------------
  ------------------
 1337|      0|		statbuf_from_array(Z_ARR(zretval), ssb);
  ------------------
  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  ------------------
 1338|      0|		ret = 0;
 1339|      0|	}
 1340|       |	// TODO: Warning on incorrect return type?
 1341|       |
 1342|  3.96k|	zval_ptr_dtor(&zretval);
 1343|       |
 1344|  3.96k|	return ret;
 1345|       |
 1346|  3.96k|}
userspace.c:user_wrapper_opendir:
  388|      2|{
  389|      2|	struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
  390|      2|	php_userstream_data_t *us;
  391|      2|	zval zretval;
  392|      2|	zval args[2];
  393|      2|	php_stream *stream = NULL;
  394|       |
  395|       |	/* Try to catch bad usage without preventing flexibility */
  396|      2|	if (FG(user_stream_current_filename) != NULL && strcmp(filename, FG(user_stream_current_filename)) == 0) {
  ------------------
  |  |  116|      2|#define FG(v) (file_globals.v)
  ------------------
              	if (FG(user_stream_current_filename) != NULL && strcmp(filename, FG(user_stream_current_filename)) == 0) {
  ------------------
  |  |  116|      0|#define FG(v) (file_globals.v)
  ------------------
  |  Branch (396:6): [True: 0, False: 2]
  |  Branch (396:50): [True: 0, False: 0]
  ------------------
  397|      0|		php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  398|      0|				RecursionDetected, "infinite recursion prevented");
  399|      0|		return NULL;
  400|      0|	}
  401|      2|	FG(user_stream_current_filename) = filename;
  ------------------
  |  |  116|      2|#define FG(v) (file_globals.v)
  ------------------
  402|       |
  403|      2|	us = emalloc(sizeof(*us));
  ------------------
  |  |  150|      2|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|      2|	us->wrapper = uwrap;
  405|       |	/* zend_call_method_if_exists() may unregister the stream wrapper. Hold on to it. */
  406|      2|	GC_ADDREF(us->wrapper->resource);
  ------------------
  |  |  718|      2|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  ------------------
  407|       |
  408|      2|	user_stream_create_object(uwrap, context, &us->object);
  409|      2|	if (Z_TYPE(us->object) == IS_UNDEF) {
  ------------------
  |  |  668|      2|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(us->object) == IS_UNDEF) {
  ------------------
  |  |  606|      2|#define IS_UNDEF					0
  ------------------
  |  Branch (409:6): [True: 2, False: 0]
  ------------------
  410|      2|		goto end;
  411|      2|	}
  412|       |
  413|       |	/* call its dir_open method - set up params first */
  414|      0|	ZVAL_STRING(&args[0], filename);
  ------------------
  |  |  967|      0|#define ZVAL_STRING(z, s) do {					\
  |  |  968|      0|		const char *_s = (s);					\
  |  |  969|      0|		ZVAL_STRINGL(z, _s, strlen(_s));		\
  |  |  ------------------
  |  |  |  |  963|      0|#define ZVAL_STRINGL(z, s, l) do {				\
  |  |  |  |  964|      0|		ZVAL_NEW_STR(z, zend_string_init(s, l, 0));		\
  |  |  |  |  ------------------
  |  |  |  |  |  | 1105|      0|#define ZVAL_NEW_STR(z, s) do {					\
  |  |  |  |  |  | 1106|      0|		zval *__z = (z);						\
  |  |  |  |  |  | 1107|      0|		zend_string *__s = (s);					\
  |  |  |  |  |  | 1108|      0|		Z_STR_P(__z) = __s;						\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  982|      0|#define Z_STR_P(zval_p)				Z_STR(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  981|      0|#define Z_STR(zval)					(zval).value.str
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1109|      0|		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               		Z_TYPE_INFO_P(__z) = IS_STRING_EX;		\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  828|      0|#define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  612|      0|#define IS_STRING					6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define IS_TYPE_REFCOUNTED			(1<<0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define IS_STRING_EX				(IS_STRING         | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  713|      0|#define Z_TYPE_FLAGS_SHIFT			8
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1110|      0|	} while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1110:11): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  965|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (965:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  970|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (970:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  415|      0|	ZVAL_LONG(&args[1], options);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  416|       |
  417|      0|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_DIR_OPEN, false);
  ------------------
  |  |  141|      0|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  418|      0|	zend_result call_result = zend_call_method_if_exists(Z_OBJ(us->object), func_name, &zretval, 2, args);
  ------------------
  |  |  999|      0|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  419|      0|	zend_string_release_ex(func_name, false);
  420|      0|	zval_ptr_dtor(&args[0]);
  421|       |
  422|      0|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  423|      0|		php_stream_wrapper_log_warn(wrapper, context, options, NotImplemented,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  424|      0|				"\"%s::" USERSTREAM_DIR_OPEN "\" is not implemented",
  425|      0|				ZSTR_VAL(us->wrapper->ce->name));
  426|      0|		goto end;
  427|      0|	}
  428|       |	/* Exception occurred in call */
  429|      0|	if (UNEXPECTED(Z_ISUNDEF(zretval))) {
  ------------------
  |  |  457|      0|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  430|      0|		goto end;
  431|      0|	}
  432|       |
  433|      0|	if (zend_is_true(&zretval)) {
  ------------------
  |  Branch (433:6): [True: 0, False: 0]
  ------------------
  434|       |		/* the stream is now open! */
  435|      0|		stream = php_stream_alloc_rel(&php_stream_userspace_dir_ops, us, 0, mode);
  ------------------
  |  |   58|      0|#define php_stream_alloc_rel(ops, thisptr, persistent, mode) _php_stream_alloc((ops), (thisptr), (persistent), (mode) STREAMS_REL_CC)
  |  |  ------------------
  |  |  |  |   45|      0|# define STREAMS_REL_CC	, STREAMS_REL_C
  |  |  |  |  ------------------
  |  |  |  |  |  |   39|      0|# define STREAMS_REL_C		__php_stream_call_depth + 1 ZEND_FILE_LINE_CC, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  481|      0|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  480|      0|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   40|      0|	__php_stream_call_depth ? __zend_orig_filename : __zend_filename, \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (40:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   41|      0|	__php_stream_call_depth ? __zend_orig_lineno : __zend_lineno
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (41:2): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  436|       |
  437|       |		/* set wrapper data to be a reference to our object */
  438|      0|		ZVAL_COPY(&stream->wrapperdata, &us->object);
  ------------------
  |  | 1425|      0|	do {												\
  |  | 1426|      0|		zval *_z1 = (z);								\
  |  | 1427|      0|		const zval *_z2 = (v);							\
  |  | 1428|      0|		zend_refcounted *_gc = Z_COUNTED_P(_z2);		\
  |  |  ------------------
  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1429|      0|		uint32_t _t = Z_TYPE_INFO_P(_z2);				\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1430|      0|		ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t);			\
  |  |  ------------------
  |  |  |  | 1407|      0|	do {												\
  |  |  |  | 1408|      0|		Z_COUNTED_P(z) = gc;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  708|      0|#define Z_COUNTED_P(zval_p)			Z_COUNTED(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  707|      0|#define Z_COUNTED(zval)				(zval).value.counted
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1409|      0|		Z_TYPE_INFO_P(z) = t;							\
  |  |  |  |  ------------------
  |  |  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 1410|      0|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1410:11): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|		if (Z_TYPE_INFO_REFCOUNTED(_t)) {				\
  |  |  ------------------
  |  |  |  |  820|      0|# define Z_TYPE_INFO_REFCOUNTED(t)	(((t) & Z_TYPE_FLAGS_MASK) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |  711|      0|#define Z_TYPE_FLAGS_MASK			0xff00
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (820:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1432|      0|			GC_ADDREF(_gc);								\
  |  |  ------------------
  |  |  |  |  718|      0|#define GC_ADDREF(p)				zend_gc_addref(&(p)->gc)
  |  |  ------------------
  |  | 1433|      0|		}												\
  |  | 1434|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1434:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
  439|      0|	} else {
  440|      0|		php_stream_wrapper_log_warn(wrapper, context, options,
  ------------------
  |  |  226|      0|	php_stream_wrapper_log_error(wrapper, context, options, E_WARNING, true, \
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |  227|      0|			PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  441|      0|				UserspaceCallFailed,
  442|      0|				"\"%s::" USERSTREAM_DIR_OPEN "\" call failed", ZSTR_VAL(us->wrapper->ce->name));
  443|      0|	}
  444|      0|	zval_ptr_dtor(&zretval);
  445|       |
  446|      2|end:
  447|      2|	FG(user_stream_current_filename) = NULL;
  ------------------
  |  |  116|      2|#define FG(v) (file_globals.v)
  ------------------
  448|      2|	if (stream == NULL) {
  ------------------
  |  Branch (448:6): [True: 2, False: 0]
  ------------------
  449|      2|		zval_ptr_dtor(&us->object);
  450|      2|		zend_list_delete(us->wrapper->resource);
  451|       |		efree(us);
  ------------------
  |  |  154|      2|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|      2|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|      2|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|      2|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|      2|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|      2|	}
  453|      2|	return stream;
  454|      0|}
userspace.c:php_userstreamop_read:
  624|      4|{
  625|      4|	zval retval;
  626|      4|	zval args[1];
  627|      4|	size_t didread = 0;
  628|      4|	php_userstream_data_t *us = (php_userstream_data_t *)stream->abstract;
  629|       |
  630|      4|	assert(us != NULL);
  ------------------
  |  Branch (630:2): [True: 0, False: 4]
  |  Branch (630:2): [True: 4, False: 0]
  ------------------
  631|       |
  632|      4|	uint32_t orig_no_fclose = stream->flags & PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      4|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  633|      4|	stream->flags |= PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      4|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  634|       |
  635|      4|	ZVAL_LONG(&args[0], count);
  ------------------
  |  | 1076|      4|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      4|		zval *__z = (z);				\
  |  | 1078|      4|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      4|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      4|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      4|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      4|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      4|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      4|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      4|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 4]
  |  |  ------------------
  ------------------
  636|      4|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_READ, false);
  ------------------
  |  |  141|      4|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  637|      4|	zend_result call_result = zend_call_method_if_exists(Z_OBJ(us->object), func_name, &retval, 1, args);
  ------------------
  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  638|      4|	zend_string_release_ex(func_name, false);
  639|       |
  640|      4|	if (UNEXPECTED(Z_ISUNDEF(retval))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 3, False: 1]
  |  |  ------------------
  ------------------
  641|      3|		goto err;
  642|      3|	}
  643|       |
  644|      1|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  645|      0|		php_stream_warn(stream, NotImplemented,
  ------------------
  |  |  210|      0|	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  646|      0|				"%s::" USERSTREAM_READ " is not implemented!", ZSTR_VAL(us->wrapper->ce->name));
  647|      0|		goto err;
  648|      0|	}
  649|       |
  650|      1|	if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  668|      1|#define Z_TYPE(zval)				zval_get_type(&(zval))
  ------------------
              	if (Z_TYPE(retval) == IS_FALSE) {
  ------------------
  |  |  608|      1|#define IS_FALSE					2
  ------------------
  |  Branch (650:6): [True: 0, False: 1]
  ------------------
  651|      0|		goto err;
  652|      0|	}
  653|       |
  654|      1|	if (!try_convert_to_string(&retval)) {
  ------------------
  |  Branch (654:6): [True: 0, False: 1]
  ------------------
  655|      0|		zval_ptr_dtor(&retval);
  656|      0|		goto err;
  657|      0|	}
  658|       |
  659|      1|	didread = Z_STRLEN(retval);
  ------------------
  |  |  987|      1|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   68|      1|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  ------------------
  ------------------
  660|      1|	if (didread > 0) {
  ------------------
  |  Branch (660:6): [True: 0, False: 1]
  ------------------
  661|      0|		if (didread > count) {
  ------------------
  |  Branch (661:7): [True: 0, False: 0]
  ------------------
  662|      0|			php_stream_warn_nt(stream, UserspaceInvalidReturn,
  ------------------
  |  |  213|      0|	php_stream_error(stream, NULL, E_WARNING, false, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, false, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  663|      0|					"%s::" USERSTREAM_READ " - read " ZEND_LONG_FMT
  664|      0|							" bytes more data than requested (" ZEND_LONG_FMT " read, "
  665|      0|							ZEND_LONG_FMT " max) - excess data will be lost",
  666|      0|					ZSTR_VAL(us->wrapper->ce->name), (zend_long)(didread - count),
  667|      0|					(zend_long)didread, (zend_long)count);
  668|      0|			didread = count;
  669|      0|		}
  670|      0|		memcpy(buf, Z_STRVAL(retval), didread);
  ------------------
  |  |  984|      0|#define Z_STRVAL(zval)				ZSTR_VAL(Z_STR(zval))
  |  |  ------------------
  |  |  |  |   67|      0|#define ZSTR_VAL(zstr)  (zstr)->val
  |  |  ------------------
  ------------------
  671|      0|	}
  672|       |
  673|      1|	zval_ptr_dtor(&retval);
  674|      1|	ZVAL_UNDEF(&retval);
  ------------------
  |  | 1055|      1|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|      1|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|      1|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      1|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|      1|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|      1|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 1]
  |  |  ------------------
  ------------------
  675|       |
  676|       |	/* since the user stream has no way of setting the eof flag directly, we need to ask it if we hit eof */
  677|       |
  678|      1|	func_name = ZSTR_INIT_LITERAL(USERSTREAM_EOF, false);
  ------------------
  |  |  141|      1|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  679|      1|	call_result = zend_call_method_if_exists(Z_OBJ(us->object), func_name, &retval, 0, NULL);
  ------------------
  |  |  999|      1|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  680|      1|	zend_string_release_ex(func_name, false);
  681|       |
  682|      1|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  683|      0|		php_stream_warn(stream, NotImplemented,
  ------------------
  |  |  210|      0|	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  684|      0|				"%s::" USERSTREAM_EOF " is not implemented! Assuming EOF",
  685|      0|				ZSTR_VAL(us->wrapper->ce->name));
  686|      0|		stream->eof = 1;
  687|      0|		goto err;
  688|      0|	}
  689|      1|	if (UNEXPECTED(Z_ISUNDEF(retval))) {
  ------------------
  |  |  457|      1|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  690|      0|		stream->eof = 1;
  691|      0|		goto err;
  692|      0|	}
  693|       |
  694|      1|	if (zend_is_true(&retval)) {
  ------------------
  |  Branch (694:6): [True: 0, False: 1]
  ------------------
  695|      0|		stream->eof = 1;
  696|      0|	}
  697|      1|	zval_ptr_dtor(&retval);
  698|       |
  699|      1|	stream->flags &= ~PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      1|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  700|      1|	stream->flags |= orig_no_fclose;
  701|       |
  702|      1|	return didread;
  703|       |
  704|      3|err:
  705|      3|	stream->flags &= ~PHP_STREAM_FLAG_NO_FCLOSE;
  ------------------
  |  |  181|      3|#define PHP_STREAM_FLAG_NO_FCLOSE					0x80
  ------------------
  706|      3|	stream->flags |= orig_no_fclose;
  707|      3|	return -1;
  708|      1|}
userspace.c:php_userstreamop_close:
  711|    666|{
  712|    666|	zval retval;
  713|    666|	php_userstream_data_t *us = (php_userstream_data_t *)stream->abstract;
  714|       |
  715|    666|	assert(us != NULL);
  ------------------
  |  Branch (715:2): [True: 0, False: 666]
  |  Branch (715:2): [True: 666, False: 0]
  ------------------
  716|       |
  717|    666|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_CLOSE, false);
  ------------------
  |  |  141|    666|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  718|    666|	zend_call_method_if_exists(Z_OBJ(us->object), func_name, &retval, 0, NULL);
  ------------------
  |  |  999|    666|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  719|    666|	zend_string_release_ex(func_name, false);
  720|       |
  721|    666|	zval_ptr_dtor(&retval);
  722|       |
  723|    666|	zval_ptr_dtor(&us->object);
  724|    666|	ZVAL_UNDEF(&us->object);
  ------------------
  |  | 1055|    666|#define ZVAL_UNDEF(z) do {				\
  |  | 1056|    666|		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_UNDEF;	\
  |  |  ------------------
  |  |  |  |  606|    666|#define IS_UNDEF					0
  |  |  ------------------
  |  | 1057|    666|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1057:11): [Folded, False: 666]
  |  |  ------------------
  ------------------
  725|       |
  726|    666|	efree(us);
  ------------------
  |  |  154|    666|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|    666|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|    666|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|    666|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|    666|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  727|       |
  728|    666|	return 0;
  729|    666|}
userspace.c:php_userstreamop_stat:
  854|      4|{
  855|      4|	zval retval;
  856|      4|	php_userstream_data_t *us = (php_userstream_data_t *)stream->abstract;
  857|      4|	int ret = -1;
  858|       |
  859|      4|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_STAT, false);
  ------------------
  |  |  141|      4|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
  860|      4|	zend_result call_result = zend_call_method_if_exists(Z_OBJ(us->object), func_name, &retval, 0, NULL);
  ------------------
  |  |  999|      4|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
  861|      4|	zend_string_release_ex(func_name, false);
  862|       |
  863|      4|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  864|      0|		php_stream_warn(stream, NotImplemented,
  ------------------
  |  |  210|      0|	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
  865|      0|				"%s::" USERSTREAM_STAT " is not implemented!", ZSTR_VAL(us->wrapper->ce->name));
  866|      0|		return -1;
  867|      0|	}
  868|      4|	if (UNEXPECTED(Z_ISUNDEF(retval))) {
  ------------------
  |  |  457|      4|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 3]
  |  |  ------------------
  ------------------
  869|      1|		return -1;
  870|      1|	}
  871|       |
  872|      3|	if (EXPECTED(Z_TYPE(retval) == IS_ARRAY)) {
  ------------------
  |  |  456|      3|# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
  |  |  ------------------
  |  |  |  Branch (456:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  873|      0|		statbuf_from_array(Z_ARR(retval), ssb);
  ------------------
  |  |  993|      0|#define Z_ARR(zval)					(zval).value.arr
  ------------------
  874|      0|		ret = 0;
  875|      0|	}
  876|       |	// TODO: Warning on incorrect return type?
  877|       |
  878|      3|	zval_ptr_dtor(&retval);
  879|       |
  880|      3|	return ret;
  881|      4|}
userspace.c:php_userstreamop_set_option:
 1059|    666|static int php_userstreamop_set_option(php_stream *stream, int option, int value, void *ptrparam) {
 1060|    666|	php_userstream_data_t *us = (php_userstream_data_t *)stream->abstract;
 1061|       |
 1062|    666|	switch (option) {
 1063|      0|		case PHP_STREAM_OPTION_CHECK_LIVENESS:
  ------------------
  |  |  502|      0|#define PHP_STREAM_OPTION_CHECK_LIVENESS	12 /* no parameters */
  ------------------
  |  Branch (1063:3): [True: 0, False: 666]
  ------------------
 1064|      0|			return user_stream_set_check_liveliness(stream, us);
 1065|       |
 1066|      0|		case PHP_STREAM_OPTION_LOCKING:
  ------------------
  |  |  473|      0|#define PHP_STREAM_OPTION_LOCKING		6
  ------------------
  |  Branch (1066:3): [True: 0, False: 666]
  ------------------
 1067|      0|			return user_stream_set_locking(stream, us, value);
 1068|       |
 1069|      0|		case PHP_STREAM_OPTION_TRUNCATE_API:
  ------------------
  |  |  485|      0|#define PHP_STREAM_OPTION_TRUNCATE_API		10
  ------------------
  |  Branch (1069:3): [True: 0, False: 666]
  ------------------
 1070|      0|			return user_stream_set_truncation(stream, us, value, ptrparam);
 1071|       |
 1072|    666|		case PHP_STREAM_OPTION_READ_BUFFER:
  ------------------
  |  |  461|    666|#define PHP_STREAM_OPTION_READ_BUFFER	2
  ------------------
  |  Branch (1072:3): [True: 666, False: 0]
  ------------------
 1073|    666|		case PHP_STREAM_OPTION_WRITE_BUFFER:
  ------------------
  |  |  462|    666|#define PHP_STREAM_OPTION_WRITE_BUFFER	3
  ------------------
  |  Branch (1073:3): [True: 0, False: 666]
  ------------------
 1074|    666|		case PHP_STREAM_OPTION_READ_TIMEOUT:
  ------------------
  |  |  469|    666|#define PHP_STREAM_OPTION_READ_TIMEOUT	4
  ------------------
  |  Branch (1074:3): [True: 0, False: 666]
  ------------------
 1075|    666|		case PHP_STREAM_OPTION_BLOCKING:
  ------------------
  |  |  457|    666|#define PHP_STREAM_OPTION_BLOCKING	1
  ------------------
  |  Branch (1075:3): [True: 0, False: 666]
  ------------------
 1076|    666|			return user_stream_set_option(stream, us, option, value, ptrparam);
 1077|       |
 1078|      0|		default:
  ------------------
  |  Branch (1078:3): [True: 0, False: 666]
  ------------------
 1079|      0|			return PHP_STREAM_OPTION_RETURN_NOTIMPL;
  ------------------
  |  |  518|      0|#define PHP_STREAM_OPTION_RETURN_NOTIMPL	-2 /* underlying stream does not implement; streams can handle it instead */
  ------------------
 1080|    666|	}
 1081|    666|}
userspace.c:user_stream_set_option:
 1015|    666|{
 1016|    666|	zval args[3];
 1017|    666|	ZVAL_LONG(&args[0], option);
  ------------------
  |  | 1076|    666|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    666|		zval *__z = (z);				\
  |  | 1078|    666|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    666|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    666|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    666|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    666|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    666|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 666]
  |  |  ------------------
  ------------------
 1018|    666|	ZVAL_LONG(&args[1], value);
  ------------------
  |  | 1076|    666|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    666|		zval *__z = (z);				\
  |  | 1078|    666|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    666|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    666|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    666|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    666|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    666|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 666]
  |  |  ------------------
  ------------------
 1019|    666|	ZVAL_NULL(&args[2]);
  ------------------
  |  | 1059|    666|#define ZVAL_NULL(z) do {				\
  |  | 1060|    666|		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(z) = IS_NULL;		\
  |  |  ------------------
  |  |  |  |  607|    666|#define IS_NULL						1
  |  |  ------------------
  |  | 1061|    666|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1061:11): [Folded, False: 666]
  |  |  ------------------
  ------------------
 1020|       |
 1021|    666|	if (option == PHP_STREAM_OPTION_READ_TIMEOUT) {
  ------------------
  |  |  469|    666|#define PHP_STREAM_OPTION_READ_TIMEOUT	4
  ------------------
  |  Branch (1021:6): [True: 0, False: 666]
  ------------------
 1022|      0|		struct timeval tv = *(struct timeval*)ptrparam;
 1023|      0|		ZVAL_LONG(&args[1], tv.tv_sec);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1024|      0|		ZVAL_LONG(&args[2], tv.tv_usec);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1025|    666|	} else if (option == PHP_STREAM_OPTION_READ_BUFFER || option == PHP_STREAM_OPTION_WRITE_BUFFER) {
  ------------------
  |  |  461|  1.33k|#define PHP_STREAM_OPTION_READ_BUFFER	2
  ------------------
              	} else if (option == PHP_STREAM_OPTION_READ_BUFFER || option == PHP_STREAM_OPTION_WRITE_BUFFER) {
  ------------------
  |  |  462|      0|#define PHP_STREAM_OPTION_WRITE_BUFFER	3
  ------------------
  |  Branch (1025:13): [True: 666, False: 0]
  |  Branch (1025:56): [True: 0, False: 0]
  ------------------
 1026|    666|		if (ptrparam) {
  ------------------
  |  Branch (1026:7): [True: 0, False: 666]
  ------------------
 1027|      0|			ZVAL_LONG(&args[2], *(long *)ptrparam);
  ------------------
  |  | 1076|      0|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|      0|		zval *__z = (z);				\
  |  | 1078|      0|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|      0|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|      0|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|      0|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|      0|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|      0|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|      0|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1028|    666|		} else {
 1029|    666|			ZVAL_LONG(&args[2], BUFSIZ);
  ------------------
  |  | 1076|    666|#define ZVAL_LONG(z, l) do {			\
  |  | 1077|    666|		zval *__z = (z);				\
  |  | 1078|    666|		Z_LVAL_P(__z) = l;				\
  |  |  ------------------
  |  |  |  |  976|    666|#define Z_LVAL_P(zval_p)			Z_LVAL(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  975|    666|#define Z_LVAL(zval)				(zval).value.lval
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1079|    666|		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  678|    666|#define Z_TYPE_INFO_P(zval_p)		Z_TYPE_INFO(*(zval_p))
  |  |  |  |  ------------------
  |  |  |  |  |  |  677|    666|#define Z_TYPE_INFO(zval)			(zval).u1.type_info
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		Z_TYPE_INFO_P(__z) = IS_LONG;	\
  |  |  ------------------
  |  |  |  |  610|    666|#define IS_LONG						4
  |  |  ------------------
  |  | 1080|    666|	} while (0)
  |  |  ------------------
  |  |  |  Branch (1080:11): [Folded, False: 666]
  |  |  ------------------
  ------------------
 1030|    666|		}
 1031|    666|	}
 1032|       |
 1033|    666|	zval retval;
 1034|    666|	zend_string *func_name = ZSTR_INIT_LITERAL(USERSTREAM_SET_OPTION, false);
  ------------------
  |  |  141|    666|#define ZSTR_INIT_LITERAL(s, persistent) (zend_string_init(("" s), sizeof(s) - 1, (persistent)))
  ------------------
 1035|    666|	zend_result call_result = zend_call_method_if_exists(Z_OBJ(us->object), func_name, &retval, 3, args);
  ------------------
  |  |  999|    666|#define Z_OBJ(zval)					(zval).value.obj
  ------------------
 1036|    666|	zend_string_release_ex(func_name, false);
 1037|       |
 1038|    666|	if (UNEXPECTED(call_result == FAILURE)) {
  ------------------
  |  |  457|    666|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 666]
  |  |  ------------------
  ------------------
 1039|      0|		php_stream_warn(stream, NotImplemented,
  ------------------
  |  |  210|      0|	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   23|      0|#define E_WARNING			(1<<1L)
  |  |  ------------------
  |  |               	php_stream_error(stream, NULL, E_WARNING, true, PHP_STREAM_EC(code), __VA_ARGS__)
  |  |  ------------------
  |  |  |  |   44|      0|#define PHP_STREAM_EC(name) ZEND_ENUM_StreamErrorCode_##name
  |  |  ------------------
  ------------------
 1040|      0|				"%s::" USERSTREAM_SET_OPTION " is not implemented!",
 1041|      0|				ZSTR_VAL(us->wrapper->ce->name));
 1042|      0|		return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      0|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
 1043|      0|	}
 1044|    666|	if (UNEXPECTED(Z_ISUNDEF(retval))) {
  ------------------
  |  |  457|    666|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 1, False: 665]
  |  |  ------------------
  ------------------
 1045|      1|		return PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|      1|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
 1046|      1|	}
 1047|       |
 1048|    665|	int ret;
 1049|    665|	if (zend_is_true(&retval)) {
  ------------------
  |  Branch (1049:6): [True: 0, False: 665]
  ------------------
 1050|      0|		ret = PHP_STREAM_OPTION_RETURN_OK;
  ------------------
  |  |  516|      0|#define PHP_STREAM_OPTION_RETURN_OK			 0 /* option set OK */
  ------------------
 1051|    665|	} else {
 1052|    665|		ret = PHP_STREAM_OPTION_RETURN_ERR;
  ------------------
  |  |  517|    665|#define PHP_STREAM_OPTION_RETURN_ERR		-1 /* problem setting option */
  ------------------
 1053|    665|	}
 1054|       |
 1055|    665|	zval_ptr_dtor(&retval);
 1056|    665|	return ret;
 1057|    666|}

userspace.c:register_userspace_symbols:
    5|      2|{
    6|      2|	REGISTER_LONG_CONSTANT("STREAM_USE_PATH", USE_PATH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    7|      2|	REGISTER_LONG_CONSTANT("STREAM_IGNORE_URL", IGNORE_URL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    8|      2|	REGISTER_LONG_CONSTANT("STREAM_REPORT_ERRORS", REPORT_ERRORS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
    9|      2|	REGISTER_LONG_CONSTANT("STREAM_MUST_SEEK", STREAM_MUST_SEEK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   10|      2|	REGISTER_LONG_CONSTANT("STREAM_URL_STAT_LINK", PHP_STREAM_URL_STAT_LINK, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   11|      2|	REGISTER_LONG_CONSTANT("STREAM_URL_STAT_QUIET", PHP_STREAM_URL_STAT_QUIET, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   12|      2|	REGISTER_LONG_CONSTANT("STREAM_MKDIR_RECURSIVE", PHP_STREAM_MKDIR_RECURSIVE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   13|      2|	REGISTER_LONG_CONSTANT("STREAM_IS_URL", PHP_STREAM_IS_URL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   14|      2|	REGISTER_LONG_CONSTANT("STREAM_OPTION_BLOCKING", PHP_STREAM_OPTION_BLOCKING, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   15|      2|	REGISTER_LONG_CONSTANT("STREAM_OPTION_READ_TIMEOUT", PHP_STREAM_OPTION_READ_TIMEOUT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   16|      2|	REGISTER_LONG_CONSTANT("STREAM_OPTION_READ_BUFFER", PHP_STREAM_OPTION_READ_BUFFER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   17|      2|	REGISTER_LONG_CONSTANT("STREAM_OPTION_WRITE_BUFFER", PHP_STREAM_OPTION_WRITE_BUFFER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   18|      2|	REGISTER_LONG_CONSTANT("STREAM_BUFFER_NONE", PHP_STREAM_BUFFER_NONE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   19|      2|	REGISTER_LONG_CONSTANT("STREAM_BUFFER_LINE", PHP_STREAM_BUFFER_LINE, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   20|      2|	REGISTER_LONG_CONSTANT("STREAM_BUFFER_FULL", PHP_STREAM_BUFFER_FULL, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   21|      2|	REGISTER_LONG_CONSTANT("STREAM_CAST_AS_STREAM", PHP_STREAM_AS_STDIO, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   22|      2|	REGISTER_LONG_CONSTANT("STREAM_CAST_FOR_SELECT", PHP_STREAM_AS_FD_FOR_SELECT, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   23|      2|	REGISTER_LONG_CONSTANT("STREAM_META_TOUCH", PHP_STREAM_META_TOUCH, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   24|      2|	REGISTER_LONG_CONSTANT("STREAM_META_OWNER", PHP_STREAM_META_OWNER, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   25|      2|	REGISTER_LONG_CONSTANT("STREAM_META_OWNER_NAME", PHP_STREAM_META_OWNER_NAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   26|      2|	REGISTER_LONG_CONSTANT("STREAM_META_GROUP", PHP_STREAM_META_GROUP, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   27|      2|	REGISTER_LONG_CONSTANT("STREAM_META_GROUP_NAME", PHP_STREAM_META_GROUP_NAME, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   28|      2|	REGISTER_LONG_CONSTANT("STREAM_META_ACCESS", PHP_STREAM_META_ACCESS, CONST_PERSISTENT);
  ------------------
  |  |   63|      2|#define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
  ------------------
   29|      2|}

php_strlcat:
   61|      6|{
   62|      6|	const char *d = dst;
   63|      6|	const char *s = src;
   64|      6|	size_t n = siz;
   65|      6|	size_t dlen;
   66|       |
   67|       |	/* Find the end of dst and adjust bytes left but don't go past end */
   68|     12|	while (n-- != 0 && *dst != '\0')
  ------------------
  |  Branch (68:9): [True: 12, False: 0]
  |  Branch (68:21): [True: 6, False: 6]
  ------------------
   69|      6|		dst++;
   70|      6|	dlen = dst - d;
   71|      6|	n = siz - dlen;
   72|       |
   73|      6|	if (n-- == 0)
  ------------------
  |  Branch (73:6): [True: 0, False: 6]
  ------------------
   74|      0|		return(dlen + strlen(src));
   75|     38|	while (*src != '\0') {
  ------------------
  |  Branch (75:9): [True: 32, False: 6]
  ------------------
   76|     32|		if (n != 0) {
  ------------------
  |  Branch (76:7): [True: 32, False: 0]
  ------------------
   77|     32|			*dst++ = *src;
   78|     32|			n--;
   79|     32|		}
   80|     32|		src++;
   81|     32|	}
   82|      6|	*dst = '\0';
   83|       |
   84|      6|	return(dlen + (src - s));
   85|      6|}

php_strlcpy:
   59|    779|{
   60|    779|	const char *s = src;
   61|    779|	size_t n = siz;
   62|       |
   63|       |	/* Copy as many bytes as will fit */
   64|    779|	if (n != 0) {
  ------------------
  |  Branch (64:6): [True: 779, False: 0]
  ------------------
   65|  2.73k|		while (--n != 0) {
  ------------------
  |  Branch (65:10): [True: 2.72k, False: 5]
  ------------------
   66|  2.72k|			if ((*dst++ = *src++) == 0)
  ------------------
  |  Branch (66:8): [True: 774, False: 1.95k]
  ------------------
   67|    774|				break;
   68|  2.72k|		}
   69|    779|	}
   70|       |
   71|       |	/* Not enough room in dst, add NUL and traverse rest of src */
   72|    779|	if (n == 0) {
  ------------------
  |  Branch (72:6): [True: 5, False: 774]
  ------------------
   73|      5|		if (siz != 0)
  ------------------
  |  Branch (73:7): [True: 5, False: 0]
  ------------------
   74|      5|			*dst = '\0';		/* NUL-terminate dst */
   75|      5|		while (*src++)
  ------------------
  |  Branch (75:10): [True: 0, False: 5]
  ------------------
   76|      0|			;
   77|      5|	}
   78|       |
   79|    779|	return(src - s - 1);
   80|    779|}

fuzzer-execute.c:fuzzer_init_php_for_execute:
  108|      2|static void fuzzer_init_php_for_execute(const char *extra_ini) {
  109|       |	/* Compilation will often trigger fatal errors.
  110|       |	 * Use tracked allocation mode to avoid leaks in that case. */
  111|      2|	putenv("USE_TRACKED_ALLOC=1");
  112|       |
  113|       |	/* Just like other SAPIs, ignore SIGPIPEs. */
  114|      2|	signal(SIGPIPE, SIG_IGN);
  115|       |
  116|      2|	fuzzer_init_php(extra_ini);
  117|       |
  118|      2|	orig_execute_ex = zend_execute_ex;
  119|      2|	zend_execute_ex = fuzzer_execute_ex;
  120|      2|	orig_execute_internal = zend_execute_internal ? zend_execute_internal : execute_internal;
  ------------------
  |  Branch (120:26): [True: 0, False: 2]
  ------------------
  121|      2|	zend_execute_internal = fuzzer_execute_internal;
  122|      2|	orig_compile_string = zend_compile_string;
  123|      2|	zend_compile_string = fuzzer_compile_string;
  124|      2|}
fuzzer-execute.c:fuzzer_execute_ex:
   50|  41.8k|static void fuzzer_execute_ex(zend_execute_data *execute_data) {
   51|       |
   52|  41.8k|#ifdef ZEND_CHECK_STACK_LIMIT
   53|  41.8k|	if (UNEXPECTED(zend_call_stack_overflowed(EG(stack_limit)))) {
  ------------------
  |  |  457|  41.8k|# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
  |  |  ------------------
  |  |  |  Branch (457:32): [True: 0, False: 41.8k]
  |  |  ------------------
  ------------------
   54|      0|		zend_call_stack_size_error();
   55|       |		/* No opline was executed before exception */
   56|      0|		EG(opline_before_exception) = NULL;
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
   57|       |		/* Fall through to handle exception below. */
   58|      0|	}
   59|  41.8k|#endif /* ZEND_CHECK_STACK_LIMIT */
   60|       |
   61|  41.8k|	const zend_op *opline = EX(opline);
  ------------------
  |  |  730|  41.8k|#define EX(element) 			((execute_data)->element)
  ------------------
   62|       |
   63|   278k|	while (1) {
  ------------------
  |  Branch (63:9): [True: 271k, Folded]
  ------------------
   64|   271k|		fuzzer_step();
   65|   271k|		opline = ((zend_vm_opcode_handler_func_t) zend_get_opcode_handler_func(opline))(execute_data, opline);
   66|   271k|		if ((uintptr_t) opline & ZEND_VM_ENTER_BIT) {
  ------------------
  |  |   29|   271k|#define ZEND_VM_ENTER_BIT 1ULL
  ------------------
  |  Branch (66:7): [True: 34.3k, False: 236k]
  ------------------
   67|  34.3k|			opline = (const zend_op *) ((uintptr_t) opline & ~ZEND_VM_ENTER_BIT);
  ------------------
  |  |   29|  34.3k|#define ZEND_VM_ENTER_BIT 1ULL
  ------------------
   68|  34.3k|			if (opline) {
  ------------------
  |  Branch (68:8): [True: 0, False: 34.3k]
  ------------------
   69|      0|				execute_data = EG(current_execute_data);
  ------------------
  |  |   45|      0|# define EG(v) (executor_globals.v)
  ------------------
   70|  34.3k|			} else {
   71|  34.3k|				return;
   72|  34.3k|			}
   73|  34.3k|		}
   74|   271k|	}
   75|  41.8k|}
fuzzer-execute.c:fuzzer_step:
   39|   294k|static zend_always_inline void fuzzer_step(void) {
   40|   294k|	if (--steps_left == 0) {
  ------------------
  |  Branch (40:6): [True: 210, False: 294k]
  ------------------
   41|       |		/* Reset steps before bailing out, so code running after bailout (e.g. in
   42|       |		 * destructors) will get another MAX_STEPS, rather than UINT32_MAX steps. */
   43|    210|		steps_left = MAX_STEPS;
  ------------------
  |  |   27|    210|#define MAX_STEPS 1000
  ------------------
   44|    210|		fuzzer_bailout();
   45|    210|	}
   46|   294k|}
fuzzer-execute.c:fuzzer_bailout:
   34|    220|static zend_always_inline void fuzzer_bailout(void) {
   35|    220|	bailed_out = true;
   36|    220|	zend_bailout();
  ------------------
  |  |  273|    220|#define zend_bailout()		_zend_bailout(__FILE__, __LINE__)
  ------------------
   37|    220|}
fuzzer-execute.c:fuzzer_execute_internal:
   92|  23.5k|static void fuzzer_execute_internal(zend_execute_data *execute_data, zval *return_value) {
   93|  23.5k|	fuzzer_step();
   94|       |
   95|  23.5k|	uint32_t num_args = ZEND_CALL_NUM_ARGS(execute_data);
  ------------------
  |  |  712|  23.5k|	(call)->This.u2.num_args
  ------------------
   96|  45.3k|	for (uint32_t i = 0; i < num_args; i++) {
  ------------------
  |  Branch (96:23): [True: 21.8k, False: 23.5k]
  ------------------
   97|       |		/* Some internal functions like preg_replace() may be slow on large inputs.
   98|       |		 * Limit the maximum size of string inputs. */
   99|  21.8k|		zval *arg = ZEND_CALL_VAR_NUM(execute_data, i);
  ------------------
  |  |  725|  21.8k|	(((zval*)(call)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
  |  |  ------------------
  |  |  |  |  719|  21.8k|	((int)((sizeof(zend_execute_data) + sizeof(zval) - 1) / sizeof(zval)))
  |  |  ------------------
  ------------------
  100|  21.8k|		if (Z_TYPE_P(arg) == IS_STRING && Z_STRLEN_P(arg) > MAX_SIZE) {
  ------------------
  |  |  669|  21.8k|#define Z_TYPE_P(zval_p)			Z_TYPE(*(zval_p))
  |  |  ------------------
  |  |  |  |  668|  21.8k|#define Z_TYPE(zval)				zval_get_type(&(zval))
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(arg) == IS_STRING && Z_STRLEN_P(arg) > MAX_SIZE) {
  ------------------
  |  |  612|  43.6k|#define IS_STRING					6
  ------------------
              		if (Z_TYPE_P(arg) == IS_STRING && Z_STRLEN_P(arg) > MAX_SIZE) {
  ------------------
  |  |  988|  15.9k|#define Z_STRLEN_P(zval_p)			Z_STRLEN(*(zval_p))
  |  |  ------------------
  |  |  |  |  987|  15.9k|#define Z_STRLEN(zval)				ZSTR_LEN(Z_STR(zval))
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|  15.9k|#define ZSTR_LEN(zstr)  (zstr)->len
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (Z_TYPE_P(arg) == IS_STRING && Z_STRLEN_P(arg) > MAX_SIZE) {
  ------------------
  |  |   28|  15.9k|#define MAX_SIZE (8 * 1024)
  ------------------
  |  Branch (100:7): [True: 15.9k, False: 5.85k]
  |  Branch (100:37): [True: 10, False: 15.9k]
  ------------------
  101|     10|			fuzzer_bailout();
  102|     10|		}
  103|  21.8k|	}
  104|       |
  105|  23.5k|	orig_execute_internal(execute_data, return_value);
  106|  23.5k|}
fuzzer-execute.c:fuzzer_compile_string:
   81|     38|		zend_string *str, const char *filename, zend_compile_position position) {
   82|     38|	if (ZSTR_LEN(str) > MAX_SIZE) {
  ------------------
  |  |   68|     38|#define ZSTR_LEN(zstr)  (zstr)->len
  ------------------
              	if (ZSTR_LEN(str) > MAX_SIZE) {
  ------------------
  |  |   28|     38|#define MAX_SIZE (8 * 1024)
  ------------------
  |  Branch (82:6): [True: 0, False: 38]
  ------------------
   83|       |		/* Avoid compiling huge inputs via eval(). */
   84|      0|		fuzzer_bailout();
   85|      0|	}
   86|       |
   87|     38|	return orig_compile_string(str, filename, position);
   88|     38|}

LLVMFuzzerTestOneInput:
   17|  33.5k|int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
   18|  33.5k|	if (Size > MAX_SIZE) {
  ------------------
  |  |   28|  33.5k|#define MAX_SIZE (8 * 1024)
  ------------------
  |  Branch (18:6): [True: 1, False: 33.5k]
  ------------------
   19|       |		/* Large inputs have a large impact on fuzzer performance,
   20|       |		 * but are unlikely to be necessary to reach new codepaths. */
   21|      1|		return 0;
   22|      1|	}
   23|       |
   24|  33.5k|	steps_left = MAX_STEPS;
  ------------------
  |  |   27|  33.5k|#define MAX_STEPS 1000
  ------------------
   25|  33.5k|	fuzzer_do_request_from_buffer(
   26|  33.5k|		FILE_NAME, (const char *) Data, Size, /* execute */ 1, /* before_shutdown */ NULL);
  ------------------
  |  |   26|  33.5k|#define FILE_NAME "/tmp/fuzzer.php"
  ------------------
   27|       |
   28|  33.5k|	return 0;
   29|  33.5k|}
LLVMFuzzerInitialize:
   31|      2|int LLVMFuzzerInitialize(int *argc, char ***argv) {
   32|       |	fuzzer_init_php_for_execute(NULL);
   33|      2|	return 0;
   34|      2|}

fuzzer_init_php:
  147|      2|{
  148|       |#ifdef __SANITIZE_ADDRESS__
  149|       |	/* We're going to leak all the memory allocated during startup,
  150|       |	 * so disable lsan temporarily. */
  151|       |	__lsan_disable();
  152|       |#endif
  153|       |
  154|      2|	sapi_startup(&fuzzer_module);
  155|      2|	fuzzer_module.phpinfo_as_text = 1;
  156|       |
  157|      2|	size_t ini_len = sizeof(HARDCODED_INI);
  158|      2|	size_t extra_ini_len = extra_ini ? strlen(extra_ini) : 0;
  ------------------
  |  Branch (158:25): [True: 0, False: 2]
  ------------------
  159|      2|	if (extra_ini) {
  ------------------
  |  Branch (159:6): [True: 0, False: 2]
  ------------------
  160|      0|		ini_len += extra_ini_len + 1;
  161|      0|	}
  162|      2|	char *p = malloc(ini_len + 1);
  163|      2|	fuzzer_module.ini_entries = p;
  164|      2|	p = zend_mempcpy(p, HARDCODED_INI, sizeof(HARDCODED_INI) - 1);
  165|      2|	if (extra_ini) {
  ------------------
  |  Branch (165:6): [True: 0, False: 2]
  ------------------
  166|      0|		*p++ = '\n';
  167|      0|		p = zend_mempcpy(p, extra_ini, extra_ini_len);
  168|      0|	}
  169|      2|	*p = '\0';
  170|       |
  171|       |	/*
  172|       |	 * TODO: we might want to test both Zend and malloc MM, but testing with malloc
  173|       |	 * is more likely to find bugs, so use that for now.
  174|       |	 */
  175|      2|	putenv("USE_ZEND_ALLOC=0");
  176|       |
  177|      2|	if (fuzzer_module.startup(&fuzzer_module)==FAILURE) {
  ------------------
  |  Branch (177:6): [True: 0, False: 2]
  ------------------
  178|      0|		return FAILURE;
  179|      0|	}
  180|       |
  181|       |#ifdef __SANITIZE_ADDRESS__
  182|       |	__lsan_enable();
  183|       |#endif
  184|       |
  185|      2|	return SUCCESS;
  186|      2|}
fuzzer_request_startup:
  189|  33.5k|{
  190|  33.5k|	if (php_request_startup() == FAILURE) {
  ------------------
  |  Branch (190:6): [True: 0, False: 33.5k]
  ------------------
  191|      0|		php_module_shutdown();
  192|      0|		return FAILURE;
  193|      0|	}
  194|       |
  195|  33.5k|#ifdef ZEND_SIGNALS
  196|       |	/* Some signal handlers will be overridden,
  197|       |	 * don't complain about them during shutdown. */
  198|  33.5k|	SIGG(check) = 0;
  ------------------
  |  |   71|  33.5k|#  define SIGG(v) (zend_signal_globals.v)
  ------------------
  199|  33.5k|#endif
  200|       |
  201|  33.5k|	fuzzer_disable_classes();
  202|       |
  203|  33.5k|	return SUCCESS;
  204|  33.5k|}
fuzzer_request_shutdown:
  207|  33.5k|{
  208|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  209|       |		/* Destroy thrown exceptions. This does not happen as part of request shutdown. */
  210|  33.5k|		if (EG(exception)) {
  ------------------
  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  |  Branch (45:16): [True: 3.71k, False: 29.8k]
  |  |  ------------------
  ------------------
  211|  3.71k|			zend_object_release(EG(exception));
  ------------------
  |  |   45|  3.71k|# define EG(v) (executor_globals.v)
  ------------------
  212|  3.71k|			EG(exception) = NULL;
  ------------------
  |  |   45|  3.71k|# define EG(v) (executor_globals.v)
  ------------------
  213|  3.71k|		}
  214|       |
  215|       |		/* Some fuzzers (like unserialize) may create circular structures. Make sure we free them.
  216|       |		 * Two calls are performed to handle objects with destructors. */
  217|  33.5k|		zend_gc_collect_cycles();
  218|  33.5k|		zend_gc_collect_cycles();
  219|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  220|       |
  221|  33.5k|	zend_try {
  ------------------
  |  |  276|  33.5k|	{															\
  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|  33.5k|																\
  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  ------------------
  ------------------
  222|  33.5k|		php_request_shutdown(NULL);
  223|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  224|  33.5k|}
fuzzer_do_request_from_buffer:
  262|  33.5k|{
  263|  33.5k|	int retval = FAILURE; /* failure by default */
  264|       |
  265|  33.5k|	SG(options) |= SAPI_OPTION_NO_CHDIR;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
              	SG(options) |= SAPI_OPTION_NO_CHDIR;
  ------------------
  |  |   25|  33.5k|#define SAPI_OPTION_NO_CHDIR 1
  ------------------
  266|  33.5k|	SG(request_info).argc=0;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  267|  33.5k|	SG(request_info).argv=NULL;
  ------------------
  |  |  158|  33.5k|# define SG(v) (sapi_globals.v)
  ------------------
  268|       |
  269|  33.5k|	if (fuzzer_request_startup() == FAILURE) {
  ------------------
  |  Branch (269:6): [True: 0, False: 33.5k]
  ------------------
  270|      0|		return FAILURE;
  271|      0|	}
  272|       |
  273|       |	// Commented out to avoid leaking the header callback.
  274|       |	//SG(headers_sent) = 1;
  275|       |	//SG(request_info).no_headers = 1;
  276|  33.5k|	php_register_variable("PHP_SELF", filename, NULL);
  277|       |
  278|  33.5k|	zend_first_try {
  ------------------
  |  |  291|  33.5k|#define zend_first_try		EG(bailout)=NULL;	zend_try
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |               #define zend_first_try		EG(bailout)=NULL;	zend_try
  |  |  ------------------
  |  |  |  |  276|  33.5k|	{															\
  |  |  |  |  277|  33.5k|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  |  |  ------------------
  |  |  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  |  |  ------------------
  |  |  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  278|  33.5k|		JMP_BUF __bailout;										\
  |  |  |  |  ------------------
  |  |  |  |  |  |  466|  33.5k|# define JMP_BUF sigjmp_buf
  |  |  |  |  ------------------
  |  |  |  |  279|  33.5k|																\
  |  |  |  |  280|  33.5k|		EG(bailout) = &__bailout;								\
  |  |  |  |  ------------------
  |  |  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  |  |  ------------------
  |  |  |  |  281|  33.5k|		if (SETJMP(__bailout)==0) {
  |  |  |  |  ------------------
  |  |  |  |  |  |  464|  33.5k|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (281:7): [True: 33.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  279|  33.5k|		zend_file_handle file_handle;
  280|  33.5k|		zend_stream_init_filename(&file_handle, filename);
  281|  33.5k|		file_handle.primary_script = 1;
  282|  33.5k|		file_handle.buf = emalloc(data_len + ZEND_MMAP_AHEAD);
  ------------------
  |  |  150|  33.5k|#define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  33.5k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  33.5k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define emalloc(size)						_emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  33.5k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  33.5k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|  33.5k|		memcpy(file_handle.buf, data, data_len);
  284|  33.5k|		memset(file_handle.buf + data_len, 0, ZEND_MMAP_AHEAD);
  ------------------
  |  |   36|  33.5k|#define ZEND_MMAP_AHEAD 32
  ------------------
  285|  33.5k|		file_handle.len = data_len;
  286|       |		/* Avoid ZEND_HANDLE_FILENAME for opcache. */
  287|  33.5k|		file_handle.type = ZEND_HANDLE_STREAM;
  288|       |
  289|  33.5k|		zend_op_array *op_array = zend_compile_file(&file_handle, ZEND_REQUIRE);
  ------------------
  |  | 1086|  33.5k|#define ZEND_REQUIRE			(1<<3)
  ------------------
  290|  33.5k|		zend_destroy_file_handle(&file_handle);
  291|  33.5k|		if (op_array) {
  ------------------
  |  Branch (291:7): [True: 30.9k, False: 2.63k]
  ------------------
  292|  30.9k|			if (execute) {
  ------------------
  |  Branch (292:8): [True: 30.9k, False: 0]
  ------------------
  293|  30.9k|				zend_execute(op_array, NULL);
  294|  30.9k|			}
  295|  30.9k|			zend_destroy_static_vars(op_array);
  296|  30.9k|			destroy_op_array(op_array);
  297|  30.9k|			efree(op_array);
  ------------------
  |  |  154|  30.9k|#define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  481|  30.9k|# define ZEND_FILE_LINE_CC				, ZEND_FILE_LINE_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  480|  30.9k|# define ZEND_FILE_LINE_C				__FILE__, __LINE__
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define efree(ptr)							_efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  |  |  ------------------
  |  |  |  |  483|  30.9k|# define ZEND_FILE_LINE_EMPTY_CC		, ZEND_FILE_LINE_EMPTY_C
  |  |  |  |  ------------------
  |  |  |  |  |  |  482|  30.9k|# define ZEND_FILE_LINE_EMPTY_C			NULL, 0
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  298|  30.9k|		}
  299|  33.5k|	} zend_end_try();
  ------------------
  |  |  288|  33.5k|		}														\
  |  |  289|  33.5k|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|  33.5k|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|  33.5k|	}
  ------------------
  300|       |
  301|  33.5k|	CG(compiled_filename) = NULL; /* ??? */
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  302|  33.5k|	if (before_shutdown) {
  ------------------
  |  Branch (302:6): [True: 0, False: 33.5k]
  ------------------
  303|      0|		zend_try {
  ------------------
  |  |  276|      0|	{															\
  |  |  277|      0|		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |  466|      0|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |               		JMP_BUF *__orig_bailout = EG(bailout);					\
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  278|      0|		JMP_BUF __bailout;										\
  |  |  ------------------
  |  |  |  |  466|      0|# define JMP_BUF sigjmp_buf
  |  |  ------------------
  |  |  279|      0|																\
  |  |  280|      0|		EG(bailout) = &__bailout;								\
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  281|      0|		if (SETJMP(__bailout)==0) {
  |  |  ------------------
  |  |  |  |  464|      0|# define SETJMP(a) sigsetjmp(a, 0)
  |  |  ------------------
  |  |  |  Branch (281:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  304|      0|			before_shutdown();
  305|      0|		} zend_end_try();
  ------------------
  |  |  288|      0|		}														\
  |  |  289|      0|		EG(bailout) = __orig_bailout;							\
  |  |  ------------------
  |  |  |  |   45|      0|# define EG(v) (executor_globals.v)
  |  |  ------------------
  |  |  290|      0|	}
  ------------------
  306|      0|	}
  307|  33.5k|	fuzzer_request_shutdown();
  308|       |
  309|  33.5k|	return (retval == SUCCESS) ? SUCCESS : FAILURE;
  ------------------
  |  Branch (309:9): [True: 0, False: 33.5k]
  ------------------
  310|  33.5k|}
fuzzer-sapi.c:startup:
   60|      2|{
   61|       |	return php_module_startup(sapi_module, NULL);
   62|      2|}
fuzzer-sapi.c:ub_write:
   65|  7.90M|{
   66|       |	/* quiet */
   67|  7.90M|	return str_length;
   68|  7.90M|}
fuzzer-sapi.c:fuzzer_flush:
   71|  7.90M|{
   72|       |	/* quiet */
   73|  7.90M|}
fuzzer-sapi.c:send_header:
   76|   134k|{
   77|   134k|}
fuzzer-sapi.c:register_variables:
   86|      4|{
   87|      4|	php_import_environment_variables(track_vars_array);
   88|      4|}
fuzzer-sapi.c:log_message:
   91|      2|{
   92|      2|}
fuzzer-sapi.c:fuzzer_disable_classes:
  134|  33.5k|{
  135|       |	/* Overwrite built-in constructor for InfiniteIterator as it
  136|       |	 * can cause long loops that bypass the executor step limit. */
  137|       |	/* Lowercase as this is how the CE as stored */
  138|  33.5k|	zend_class_entry *InfiniteIterator_class = zend_hash_str_find_ptr(CG(class_table), "infiniteiterator", strlen("infiniteiterator"));
  ------------------
  |  |   35|  33.5k|# define CG(v) (compiler_globals.v)
  ------------------
  139|       |
  140|  33.5k|	static zend_object_handlers handlers;
  141|  33.5k|	memcpy(&handlers, InfiniteIterator_class->default_object_handlers, sizeof(handlers));
  142|  33.5k|	handlers.get_constructor = disable_class_get_constructor_handler;
  143|  33.5k|	InfiniteIterator_class->default_object_handlers = &handlers;
  144|  33.5k|}
fuzzer-sapi.c:disable_class_get_constructor_handler:
  128|      3|{
  129|      3|	zend_throw_error(NULL, "Cannot construct class %s, as it is disabled", ZSTR_VAL(obj->ce->name));
  ------------------
  |  |   67|      3|#define ZSTR_VAL(zstr)  (zstr)->val
  ------------------
  130|       |	return NULL;
  131|      3|}

